From 08d9cbb9306a032d706a6ded0bf576fd0c58ca8d Mon Sep 17 00:00:00 2001 From: vyacheslav-shubin Date: Sat, 4 Feb 2023 10:36:07 +0300 Subject: [PATCH 001/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Add?= =?UTF-8?q?=20SD=20Card=20'hide'=20method=20for=20dev=20usage=20(#22425)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/sd/SdBaseFile.cpp | 22 ++++++++++++++++++++++ Marlin/src/sd/SdBaseFile.h | 5 +++++ 2 files changed, 27 insertions(+) diff --git a/Marlin/src/sd/SdBaseFile.cpp b/Marlin/src/sd/SdBaseFile.cpp index 1c1e0c7d14..e3f95623ac 100644 --- a/Marlin/src/sd/SdBaseFile.cpp +++ b/Marlin/src/sd/SdBaseFile.cpp @@ -1668,6 +1668,28 @@ bool SdBaseFile::remove(SdBaseFile *dirFile, const char *path) { return file.open(dirFile, path, O_WRITE) ? file.remove() : false; } +bool SdBaseFile::hide(const bool hidden) { + if (ENABLED(SDCARD_READONLY)) return false; + // must be an open file or subdirectory + if (!(isFile() || isSubDir())) return false; + // sync() and cache directory entry + sync(); + dir_t *d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); + if (!d) return false; + uint8_t a = d->attributes; + if (hidden) + a |= DIR_ATT_HIDDEN; + else + a &= ~DIR_ATT_HIDDEN; + + if (a != d->attributes) { + d->attributes = a; + return vol_->cacheFlush(); + } + + return true; +} + /** * Rename a file or subdirectory. * diff --git a/Marlin/src/sd/SdBaseFile.h b/Marlin/src/sd/SdBaseFile.h index bda44c6bd5..dd8e2aff4b 100644 --- a/Marlin/src/sd/SdBaseFile.h +++ b/Marlin/src/sd/SdBaseFile.h @@ -310,6 +310,11 @@ class SdBaseFile { bool rmdir(); bool rmRfStar(); + /** + * Set or clear DIR_ATT_HIDDEN attribute for directory entry + */ + bool hide(const bool hidden); + /** * Set the files position to current position + \a pos. See seekSet(). * \param[in] offset The new position in bytes from the current position. From 218ca0530432d6b1194ccac5fc32a72bbc9a7c96 Mon Sep 17 00:00:00 2001 From: Victor Oliveira Date: Sat, 4 Feb 2023 05:10:26 -0300 Subject: [PATCH 002/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Gen?= =?UTF-8?q?eral=20'MediaFile'=20type=20alias=20(#24424)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/STM32/eeprom_sdcard.cpp | 4 +- Marlin/src/HAL/STM32F1/eeprom_sdcard.cpp | 4 +- Marlin/src/feature/powerloss.cpp | 2 +- Marlin/src/feature/powerloss.h | 2 +- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 2 +- Marlin/src/lcd/e3v2/proui/dwin.cpp | 2 +- .../archim2-flash/media_file_reader.h | 2 +- Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp | 2 +- Marlin/src/lcd/extui/mks_ui/draw_ui.cpp | 4 +- Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp | 2 +- Marlin/src/lcd/extui/mks_ui/pic_manager.cpp | 6 +- Marlin/src/lcd/extui/mks_ui/wifi_module.cpp | 10 +-- Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp | 2 +- Marlin/src/sd/SdFile.h | 2 + Marlin/src/sd/SdVolume.h | 2 + Marlin/src/sd/cardreader.cpp | 44 +++++------ Marlin/src/sd/cardreader.h | 23 +++--- Marlin/src/sd/disk_io_driver.h | 1 + Marlin/src/sd/storage.h | 74 +++++++++++++++++++ 19 files changed, 135 insertions(+), 55 deletions(-) create mode 100644 Marlin/src/sd/storage.h diff --git a/Marlin/src/HAL/STM32/eeprom_sdcard.cpp b/Marlin/src/HAL/STM32/eeprom_sdcard.cpp index 473b656f9a..1b5c0ae5b2 100644 --- a/Marlin/src/HAL/STM32/eeprom_sdcard.cpp +++ b/Marlin/src/HAL/STM32/eeprom_sdcard.cpp @@ -48,7 +48,7 @@ static char _ALIGN(4) HAL_eeprom_data[MARLIN_EEPROM_SIZE]; bool PersistentStore::access_start() { if (!card.isMounted()) return false; - SdFile file, root = card.getroot(); + MediaFile file, root = card.getroot(); if (!file.open(&root, EEPROM_FILENAME, O_RDONLY)) return true; @@ -63,7 +63,7 @@ bool PersistentStore::access_start() { bool PersistentStore::access_finish() { if (!card.isMounted()) return false; - SdFile file, root = card.getroot(); + MediaFile file, root = card.getroot(); int bytes_written = 0; if (file.open(&root, EEPROM_FILENAME, O_CREAT | O_WRITE | O_TRUNC)) { bytes_written = file.write(HAL_eeprom_data, MARLIN_EEPROM_SIZE); diff --git a/Marlin/src/HAL/STM32F1/eeprom_sdcard.cpp b/Marlin/src/HAL/STM32F1/eeprom_sdcard.cpp index d608ccee14..9cfa97c1ab 100644 --- a/Marlin/src/HAL/STM32F1/eeprom_sdcard.cpp +++ b/Marlin/src/HAL/STM32F1/eeprom_sdcard.cpp @@ -47,7 +47,7 @@ static char _ALIGN(4) HAL_eeprom_data[MARLIN_EEPROM_SIZE]; bool PersistentStore::access_start() { if (!card.isMounted()) return false; - SdFile file, root = card.getroot(); + MediaFile file, root = card.getroot(); if (!file.open(&root, EEPROM_FILENAME, O_RDONLY)) return true; // false aborts the save @@ -62,7 +62,7 @@ bool PersistentStore::access_start() { bool PersistentStore::access_finish() { if (!card.isMounted()) return false; - SdFile file, root = card.getroot(); + MediaFile file, root = card.getroot(); int bytes_written = 0; if (file.open(&root, EEPROM_FILENAME, O_CREAT | O_WRITE | O_TRUNC)) { bytes_written = file.write(HAL_eeprom_data, MARLIN_EEPROM_SIZE); diff --git a/Marlin/src/feature/powerloss.cpp b/Marlin/src/feature/powerloss.cpp index d4450adcd8..2825f4d4f2 100644 --- a/Marlin/src/feature/powerloss.cpp +++ b/Marlin/src/feature/powerloss.cpp @@ -33,7 +33,7 @@ bool PrintJobRecovery::enabled; // Initialized by settings.load() -SdFile PrintJobRecovery::file; +MediaFile PrintJobRecovery::file; job_recovery_info_t PrintJobRecovery::info; const char PrintJobRecovery::filename[5] = "/PLR"; uint8_t PrintJobRecovery::queue_index_r; diff --git a/Marlin/src/feature/powerloss.h b/Marlin/src/feature/powerloss.h index 4bf0c06e2d..d241fdb74c 100644 --- a/Marlin/src/feature/powerloss.h +++ b/Marlin/src/feature/powerloss.h @@ -138,7 +138,7 @@ class PrintJobRecovery { public: static const char filename[5]; - static SdFile file; + static MediaFile file; static job_recovery_info_t info; static uint8_t queue_index_r; //!< Queue index of the active command diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 0f78e58ef5..8894150c98 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -4663,7 +4663,7 @@ void CrealityDWINClass::Start_Print(bool sd) { if (sd) { #if ENABLED(POWER_LOSS_RECOVERY) if (recovery.valid()) { - SdFile *diveDir = nullptr; + MediaFile *diveDir = nullptr; const char * const fname = card.diveToFile(true, diveDir, recovery.info.sd_filename); card.selectFileByName(fname); } diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index e8430d591c..c45aae6044 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -1347,7 +1347,7 @@ void EachMomentUpdate() { DWINUI::Draw_Button(BTN_Cancel, 26, 280); DWINUI::Draw_Button(BTN_Continue, 146, 280); } - SdFile *dir = nullptr; + MediaFile *dir = nullptr; const char * const filename = card.diveToFile(true, dir, recovery.info.sd_filename); card.selectFileByName(filename); DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 207, card.longest_filename()); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/media_file_reader.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/media_file_reader.h index eb76bb9b2b..9a20c2a038 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/media_file_reader.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/media_file_reader.h @@ -32,7 +32,7 @@ class MediaFileReader { private: #if ENABLED(SDSUPPORT) - SdFile root, file; + MediaFile root, file; #endif public: diff --git a/Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp b/Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp index a69c54bcff..a214e7d1e0 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp @@ -90,7 +90,7 @@ static void btn_ok_event_cb(lv_obj_t *btn, lv_event_t event) { char *cur_name; cur_name = strrchr(list_file.file_name[sel_id], '/'); - SdFile file, *curDir; + MediaFile file, *curDir; card.abortFilePrintNow(); const char * const fname = card.diveToFile(false, curDir, cur_name); if (!fname) return; diff --git a/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp b/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp index 6a8333fd66..b510e3c0c6 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp @@ -647,8 +647,8 @@ char *creat_title_text() { char *cur_name = strrchr(list_file.file_name[sel_id], '/'); - SdFile file; - SdFile *curDir; + MediaFile file; + MediaFile *curDir; const char * const fname = card.diveToFile(false, curDir, cur_name); if (!fname) return; if (file.open(curDir, fname, O_READ)) { diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp index 00bb9833fc..0c6315d438 100644 --- a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp +++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp @@ -727,7 +727,7 @@ void disp_assets_update_progress(FSTR_P const fmsg) { uint8_t mks_test_flag = 0; const char *MKSTestPath = "MKS_TEST"; void mks_test_get() { - SdFile dir, root = card.getroot(); + MediaFile dir, root = card.getroot(); if (dir.open(&root, MKSTestPath, O_RDONLY)) mks_test_flag = 0x1E; } diff --git a/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp b/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp index c618127980..d642d81f6b 100644 --- a/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp +++ b/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp @@ -403,8 +403,8 @@ uint32_t Pic_Info_Write(uint8_t *P_name, uint32_t P_size) { #define ASSET_TYPE_TITLE_LOGO 2 #define ASSET_TYPE_G_PREVIEW 3 #define ASSET_TYPE_FONT 4 - static void loadAsset(SdFile &dir, dir_t& entry, FSTR_P const fn, int8_t assetType) { - SdFile file; + static void loadAsset(MediaFile &dir, dir_t& entry, FSTR_P const fn, int8_t assetType) { + MediaFile file; char dosFilename[FILENAME_LENGTH]; createFilename(dosFilename, entry); if (!file.open(&dir, dosFilename, O_READ)) { @@ -488,7 +488,7 @@ uint32_t Pic_Info_Write(uint8_t *P_name, uint32_t P_size) { void UpdateAssets() { if (!card.isMounted()) return; - SdFile dir, root = card.getroot(); + MediaFile dir, root = card.getroot(); if (dir.open(&root, assetsPath, O_RDONLY)) { disp_assets_update(); diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp index 23a39aabc4..a8d30b442a 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp @@ -736,7 +736,7 @@ int32_t lastFragment = 0; char saveFilePath[50]; -static SdFile upload_file, *upload_curDir; +static MediaFile upload_file, *upload_curDir; static filepos_t pos; int write_to_file(char *buf, int len) { @@ -974,8 +974,8 @@ static void wifi_gcode_exec(uint8_t *cmd_line) { if (!gcode_preview_over) { char *cur_name = strrchr(list_file.file_name[sel_id], '/'); - SdFile file; - SdFile *curDir; + MediaFile file; + MediaFile *curDir; card.abortFilePrintNow(); const char * const fname = card.diveToFile(false, curDir, cur_name); if (!fname) return; @@ -1595,7 +1595,7 @@ static void file_fragment_msg_handle(uint8_t * msg, uint16_t msgLen) { } } upload_file.close(); - SdFile file, *curDir; + MediaFile file, *curDir; const char * const fname = card.diveToFile(false, curDir, saveFilePath); if (file.open(curDir, fname, O_RDWR)) { gCfgItems.curFilesize = file.fileSize(); @@ -1969,7 +1969,7 @@ void mks_wifi_firmware_update() { if (wifi_upload(0) >= 0) { card.removeFile((char *)ESP_FIRMWARE_FILE_RENAME); - SdFile file, *curDir; + MediaFile file, *curDir; const char * const fname = card.diveToFile(false, curDir, ESP_FIRMWARE_FILE); if (file.open(curDir, fname, O_READ)) { file.rename(curDir, (char *)ESP_FIRMWARE_FILE_RENAME); diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp index c07cc47a36..18a311303c 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp @@ -86,7 +86,7 @@ static const uint32_t defaultTimeout = 500; static const uint32_t eraseTimeout = 15000; static const uint32_t blockWriteTimeout = 200; static const uint32_t blockWriteInterval = 15; // 15ms is long enough, 10ms is mostly too short -static SdFile update_file, *update_curDir; +static MediaFile update_file, *update_curDir; // Messages corresponding to result codes, should make sense when followed by " error" const char *resultMessages[] = { diff --git a/Marlin/src/sd/SdFile.h b/Marlin/src/sd/SdFile.h index 1ff05828d2..81eeadf5b5 100644 --- a/Marlin/src/sd/SdFile.h +++ b/Marlin/src/sd/SdFile.h @@ -53,3 +53,5 @@ class SdFile : public SdBaseFile { void write_P(PGM_P str); void writeln_P(PGM_P str); }; + +using MediaFile = SdFile; diff --git a/Marlin/src/sd/SdVolume.h b/Marlin/src/sd/SdVolume.h index b8e70ca9d7..3097773030 100644 --- a/Marlin/src/sd/SdVolume.h +++ b/Marlin/src/sd/SdVolume.h @@ -199,3 +199,5 @@ class SdVolume { bool readBlock(uint32_t block, uint8_t *dst) { return sdCard_->readBlock(block, dst); } bool writeBlock(uint32_t block, const uint8_t *dst) { return sdCard_->writeBlock(block, dst); } }; + +using MarlinVolume = SdVolume; diff --git a/Marlin/src/sd/cardreader.cpp b/Marlin/src/sd/cardreader.cpp index 3ec1183083..fb2721a2b2 100644 --- a/Marlin/src/sd/cardreader.cpp +++ b/Marlin/src/sd/cardreader.cpp @@ -79,7 +79,7 @@ IF_DISABLED(NO_SD_AUTOSTART, uint8_t CardReader::autofile_index); // = 0 // private: -SdFile CardReader::root, CardReader::workDir, CardReader::workDirParents[MAX_DIR_DEPTH]; +MediaFile CardReader::root, CardReader::workDir, CardReader::workDirParents[MAX_DIR_DEPTH]; uint8_t CardReader::workDirDepth; #if ENABLED(SDCARD_SORT_ALPHA) @@ -133,8 +133,8 @@ uint8_t CardReader::workDirDepth; #endif DiskIODriver* CardReader::driver = nullptr; -SdVolume CardReader::volume; -SdFile CardReader::file; +MarlinVolume CardReader::volume; +MediaFile CardReader::file; #if HAS_MEDIA_SUBCALLS uint8_t CardReader::file_subcall_ctr; @@ -228,7 +228,7 @@ bool CardReader::is_visible_entity(const dir_t &p OPTARG(CUSTOM_FIRMWARE_UPLOAD, // // Get the number of (compliant) items in the folder // -int CardReader::countItems(SdFile dir) { +int CardReader::countItems(MediaFile dir) { dir_t p; int c = 0; while (dir.readDir(&p, longFilename) > 0) @@ -244,7 +244,7 @@ int CardReader::countItems(SdFile dir) { // // Get file/folder info for an item by index // -void CardReader::selectByIndex(SdFile dir, const uint8_t index) { +void CardReader::selectByIndex(MediaFile dir, const uint8_t index) { dir_t p; for (uint8_t cnt = 0; dir.readDir(&p, longFilename) > 0;) { if (is_visible_entity(p)) { @@ -260,7 +260,7 @@ void CardReader::selectByIndex(SdFile dir, const uint8_t index) { // // Get file/folder info for an item by name // -void CardReader::selectByName(SdFile dir, const char * const match) { +void CardReader::selectByName(MediaFile dir, const char * const match) { dir_t p; for (uint8_t cnt = 0; dir.readDir(&p, longFilename) > 0; cnt++) { if (is_visible_entity(p)) { @@ -280,7 +280,7 @@ void CardReader::selectByName(SdFile dir, const char * const match) { * this can blow up the stack, so a 'depth' parameter would be a * good addition. */ -void CardReader::printListing(SdFile parent, const char * const prepend, const uint8_t lsflags +void CardReader::printListing(MediaFile parent, const char * const prepend, const uint8_t lsflags OPTARG(LONG_FILENAME_HOST_SUPPORT, const char * const prependLong/*=nullptr*/) ) { const bool includeTime = TERN0(M20_TIMESTAMP_SUPPORT, TEST(lsflags, LS_TIMESTAMP)); @@ -304,7 +304,7 @@ void CardReader::printListing(SdFile parent, const char * const prepend, const // Get a new directory object using the full path // and dive recursively into it. - SdFile child; // child.close() in destructor + MediaFile child; // child.close() in destructor if (child.open(&parent, dosFilename, O_READ)) { #if ENABLED(LONG_FILENAME_HOST_SUPPORT) if (includeLong) { @@ -375,7 +375,7 @@ void CardReader::ls(const uint8_t lsflags) { // Zero out slashes to make segments for (i = 0; i < pathLen; i++) if (path[i] == '/') path[i] = '\0'; - SdFile diveDir = root; // start from the root for segment 1 + MediaFile diveDir = root; // start from the root for segment 1 for (i = 0; i < pathLen;) { if (path[i] == '\0') i++; // move past a single nul @@ -404,7 +404,7 @@ void CardReader::ls(const uint8_t lsflags) { // SERIAL_ECHOPGM("Opening dir: "); SERIAL_ECHOLN(segment); // Open the sub-item as the new dive parent - SdFile dir; + MediaFile dir; if (!dir.open(&diveDir, segment, O_READ)) { SERIAL_EOL(); SERIAL_ECHO_START(); @@ -604,7 +604,7 @@ void CardReader::getAbsFilenameInCWD(char *dst) { *dst++ = '/'; uint8_t cnt = 1; - auto appendAtom = [&](SdFile &file) { + auto appendAtom = [&](MediaFile &file) { file.getDosName(dst); while (*dst && cnt < MAXPATHNAMELENGTH) { dst++; cnt++; } if (cnt < MAXPATHNAMELENGTH) { *dst = '/'; dst++; cnt++; } @@ -683,7 +683,7 @@ void CardReader::openFileRead(const char * const path, const uint8_t subcall_typ abortFilePrintNow(); - SdFile *diveDir; + MediaFile *diveDir; const char * const fname = diveToFile(true, diveDir, path); if (!fname) return openFailed(path); @@ -719,7 +719,7 @@ void CardReader::openFileWrite(const char * const path) { abortFilePrintNow(); - SdFile *diveDir; + MediaFile *diveDir; const char * const fname = diveToFile(false, diveDir, path); if (!fname) return openFailed(path); @@ -747,7 +747,7 @@ bool CardReader::fileExists(const char * const path) { DEBUG_ECHOLNPGM("fileExists: ", path); // Dive to the file's directory and get the base name - SdFile *diveDir = nullptr; + MediaFile *diveDir = nullptr; const char * const fname = diveToFile(false, diveDir, path); if (!fname) return false; @@ -757,7 +757,7 @@ bool CardReader::fileExists(const char * const path) { //diveDir->close(); // Try to open the file and return the result - SdFile tmpFile; + MediaFile tmpFile; const bool success = tmpFile.open(diveDir, fname, O_READ); if (success) tmpFile.close(); return success; @@ -771,7 +771,7 @@ void CardReader::removeFile(const char * const name) { //abortFilePrintNow(); - SdFile *itsDirPtr; + MediaFile *itsDirPtr; const char * const fname = diveToFile(false, itsDirPtr, name); if (!fname) return; @@ -919,23 +919,23 @@ uint16_t CardReader::countFilesInWorkDir() { * - The workDir points to the last-set navigation target by cd, cdup, cdroot, or diveToFile(true, ...) * * On exit: - * - Your curDir pointer contains an SdFile reference to the file's directory. + * - Your curDir pointer contains an MediaFile reference to the file's directory. * - If update_cwd was 'true' the workDir now points to the file's directory. * * Returns a pointer to the last segment (filename) of the given DOS 8.3 path. - * On exit, inDirPtr contains an SdFile reference to the file's directory. + * On exit, inDirPtr contains an MediaFile reference to the file's directory. * * A nullptr result indicates an unrecoverable error. * * NOTE: End the path with a slash to dive to a folder. In this case the * returned filename will be blank (points to the end of the path). */ -const char* CardReader::diveToFile(const bool update_cwd, SdFile* &inDirPtr, const char * const path, const bool echo/*=false*/) { +const char* CardReader::diveToFile(const bool update_cwd, MediaFile* &inDirPtr, const char * const path, const bool echo/*=false*/) { DEBUG_SECTION(est, "diveToFile", true); // Track both parent and subfolder - static SdFile newDir1, newDir2; - SdFile *sub = &newDir1, *startDirPtr; + static MediaFile newDir1, newDir2; + MediaFile *sub = &newDir1, *startDirPtr; // Parsing the path string const char *atom_ptr = path; @@ -1017,7 +1017,7 @@ const char* CardReader::diveToFile(const bool update_cwd, SdFile* &inDirPtr, con } void CardReader::cd(const char * relpath) { - SdFile newDir, *parent = &getWorkDir(); + MediaFile newDir, *parent = &getWorkDir(); if (newDir.open(parent, relpath, O_READ)) { workDir = newDir; diff --git a/Marlin/src/sd/cardreader.h b/Marlin/src/sd/cardreader.h index 6fe75f760e..86acb1b862 100644 --- a/Marlin/src/sd/cardreader.h +++ b/Marlin/src/sd/cardreader.h @@ -116,7 +116,7 @@ public: static void changeMedia(DiskIODriver *_driver) { driver = _driver; } - static SdFile getroot() { return root; } + static MediaFile getroot() { return root; } static void mount(); static void release(); @@ -190,12 +190,12 @@ public: * Relative paths apply to the workDir. * * update_cwd: Pass 'true' to update the workDir on success. - * inDirPtr: On exit your pointer points to the target SdFile. + * inDirPtr: On exit your pointer points to the target MediaFile. * A nullptr indicates failure. * path: Start with '/' for abs path. End with '/' to get a folder ref. * echo: Set 'true' to print the path throughout the loop. */ - static const char* diveToFile(const bool update_cwd, SdFile* &inDirPtr, const char * const path, const bool echo=false); + static const char* diveToFile(const bool update_cwd, MediaFile* &inDirPtr, const char * const path, const bool echo=false); #if ENABLED(SDCARD_SORT_ALPHA) static void presort(); @@ -223,7 +223,7 @@ public: // Current Working Dir - Set by cd, cdup, cdroot, and diveToFile(true, ...) static char* getWorkDirName() { workDir.getDosName(filename); return filename; } - static SdFile& getWorkDir() { return workDir.isOpen() ? workDir : root; } + static MediaFile& getWorkDir() { return workDir.isOpen() ? workDir : root; } // Print File stats static uint32_t getFileSize() { return filesize; } @@ -262,7 +262,7 @@ private: // // Working directory and parents // - static SdFile root, workDir, workDirParents[MAX_DIR_DEPTH]; + static MediaFile root, workDir, workDirParents[MAX_DIR_DEPTH]; static uint8_t workDirDepth; // @@ -322,8 +322,8 @@ private: #endif // SDCARD_SORT_ALPHA static DiskIODriver *driver; - static SdVolume volume; - static SdFile file; + static MarlinVolume volume; + static MediaFile file; static uint32_t filesize, // Total size of the current file, in bytes sdpos; // Index most recently read (one behind file.getPos) @@ -341,10 +341,11 @@ private: // Directory items // static bool is_visible_entity(const dir_t &p OPTARG(CUSTOM_FIRMWARE_UPLOAD, const bool onlyBin=false)); - static int countItems(SdFile dir); - static void selectByIndex(SdFile dir, const uint8_t index); - static void selectByName(SdFile dir, const char * const match); - static void printListing(SdFile parent, const char * const prepend, const uint8_t lsflags + static int countItems(MediaFile dir); + static void selectByIndex(MediaFile dir, const uint8_t index); + static void selectByName(MediaFile dir, const char * const match); + static void printListing( + MediaFile parent, const char * const prepend, const uint8_t lsflags OPTARG(LONG_FILENAME_HOST_SUPPORT, const char * const prependLong=nullptr) ); diff --git a/Marlin/src/sd/disk_io_driver.h b/Marlin/src/sd/disk_io_driver.h index 02e2b3c739..3e2d688aea 100644 --- a/Marlin/src/sd/disk_io_driver.h +++ b/Marlin/src/sd/disk_io_driver.h @@ -22,6 +22,7 @@ #pragma once #include +#include "SdInfo.h" /** * DiskIO Interface diff --git a/Marlin/src/sd/storage.h b/Marlin/src/sd/storage.h new file mode 100644 index 0000000000..3510e04bbe --- /dev/null +++ b/Marlin/src/sd/storage.h @@ -0,0 +1,74 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * Marlin Storage Architecture: + * + * DiskIODriver: + * Do all low level IO with the underline hardware or block device: SPI, SDIO, OTG + * + * FilesystemDriver: + * Handle the filesystem format / implementation. Uses the io driver to read and write data. + * Sd2Card is the very first and current filesystem implementation on Marlin, supporting FAT. + * FatFS - Work in progress. + * + * + * Marlin Abstractions: + * + * Using this names allow us to isolate filesystem driver code, keeping all Marlin code agnostic. + * + * MediaFilesystem: + * Abstraction of systemwide filesystem operation. + * + * MarlinVolume: + * Abstraction of a filesystem volume. + * + * MediaFile: + * Abstraction of a generic file. Using this name allow us to isolate filesystem driver code, + * keeping all Marlin code agnostic. + * + * PrintFromStorage: + * Class to handle printing from any attached storage. + * + */ + +/* + +Interface definition. Doesn't need to be compiled, as we use duck typing, +allowing drivers to just use type alias. + +Class MarlinVolume { +public: +}; + +Class MediaFile { +public: +}; + +Class MediaFilesystem { +public: + static void init(); + static MarlinVolume* openVolume(const char *); +}; + +*/ From 444259da079f07490de016566bc66950aab473f3 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 4 Feb 2023 12:06:25 +0000 Subject: [PATCH 003/659] [cron] Bump distribution date (2023-02-04) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 3aca533cea..be1a6956bf 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-03" +//#define STRING_DISTRIBUTION_DATE "2023-02-04" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 83b0517534..518bbdd1d4 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-03" + #define STRING_DISTRIBUTION_DATE "2023-02-04" #endif /** From 2bc711ce58cfc5594b19593935d1c62f8261fa24 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Tue, 7 Feb 2023 22:39:09 -0800 Subject: [PATCH 004/659] =?UTF-8?q?=E2=9C=A8=20BigTreeTech=20Manta=20M4P,?= =?UTF-8?q?=20M5P,=20M8P=20V1.0=20/=201.1,=20E3=20EZ=20(#25001)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/boards.h | 302 +++++------ Marlin/src/pins/pins.h | 10 + Marlin/src/pins/stm32g0/env_validate.h | 26 + Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h | 2 + .../pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h | 340 +++++++++++++ .../pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h | 313 ++++++++++++ .../pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h | 341 +++++++++++++ .../pins/stm32g0/pins_BTT_MANTA_M8P_V1_0.h | 79 +++ .../pins/stm32g0/pins_BTT_MANTA_M8P_V1_1.h | 78 +++ .../pins/stm32g0/pins_BTT_MANTA_M8P_common.h | 397 +++++++++++++++ .../pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h | 2 + .../PlatformIO/boards/marlin_STM32G0B1VE.json | 47 ++ .../variants/MARLIN_G0B1RE/PeripheralPins.c | 2 + .../variant_MARLIN_STM32G0B1RE.cpp | 9 +- .../variant_MARLIN_STM32G0B1RE.h | 12 + .../variants/MARLIN_G0B1VE/PeripheralPins.c | 480 ++++++++++++++++++ .../variants/MARLIN_G0B1VE/PinNamesVar.h | 91 ++++ .../variants/MARLIN_G0B1VE/ldscript.ld | 177 +++++++ .../variant_MARLIN_STM32G0B1VE.cpp | 213 ++++++++ .../variant_MARLIN_STM32G0B1VE.h | 258 ++++++++++ ini/stm32g0.ini | 33 +- 21 files changed, 3057 insertions(+), 155 deletions(-) create mode 100644 Marlin/src/pins/stm32g0/env_validate.h create mode 100644 Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h create mode 100644 Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h create mode 100644 Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h create mode 100644 Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_0.h create mode 100644 Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_1.h create mode 100644 Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h create mode 100644 buildroot/share/PlatformIO/boards/marlin_STM32G0B1VE.json create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/PeripheralPins.c create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/PinNamesVar.h create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/ldscript.ld create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/variant_MARLIN_STM32G0B1VE.cpp create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/variant_MARLIN_STM32G0B1VE.h diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index fe904846e3..bdf86392c9 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -221,7 +221,7 @@ #define BOARD_5DPRINT 1707 // 5DPrint D8 Driver Board // -// LPC1768 ARM Cortex M3 +// LPC1768 ARM Cortex-M3 // #define BOARD_RAMPS_14_RE_ARM_EFB 2000 // Re-ARM with RAMPS 1.4 (Power outputs: Hotend, Fan, Bed) @@ -242,7 +242,7 @@ #define BOARD_EMOTRONIC 2015 // eMotion-Tech eMotronic // -// LPC1769 ARM Cortex M3 +// LPC1769 ARM Cortex-M3 // #define BOARD_MKS_SGEN 2500 // MKS-SGen @@ -259,7 +259,7 @@ #define BOARD_FLY_CDY 2511 // FLYmaker FLY CDY // -// SAM3X8E ARM Cortex M3 +// SAM3X8E ARM Cortex-M3 // #define BOARD_DUE3DOM 3000 // DUE3DOM for Arduino DUE @@ -292,185 +292,195 @@ #define BOARD_KRATOS32 3027 // K.3D Kratos32 (Arduino Due Shield) // -// SAM3X8C ARM Cortex M3 +// SAM3X8C ARM Cortex-M3 // #define BOARD_PRINTRBOARD_G2 3100 // Printrboard G2 #define BOARD_ADSK 3101 // Arduino DUE Shield Kit (ADSK) +// +// STM32 ARM Cortex-M0+ +// + +#define BOARD_BTT_EBB42_V1_1 4000 // BigTreeTech EBB42 V1.1 (STM32G0B1CB) +#define BOARD_BTT_SKR_MINI_E3_V3_0 4001 // BigTreeTech SKR Mini E3 V3.0 (STM32G0B1RE) +#define BOARD_BTT_MANTA_E3_EZ_V1_0 4002 // BigTreeTech Manta E3 EZ V1.0 (STM32G0B1RE) +#define BOARD_BTT_MANTA_M4P_V1_0 4003 // BigTreeTech Manta M4P V1.0 (STM32G0B1RE) +#define BOARD_BTT_MANTA_M5P_V1_0 4004 // BigTreeTech Manta M5P V1.0 (STM32G0B1RE) +#define BOARD_BTT_MANTA_M8P_V1_0 4005 // BigTreeTech Manta M8P V1.0 (STM32G0B1VE) +#define BOARD_BTT_MANTA_M8P_V1_1 4006 // BigTreeTech Manta M8P V1.1 (STM32G0B1VE) + // // STM32 ARM Cortex-M3 // -#define BOARD_MALYAN_M200_V2 4000 // STM32F070CB controller -#define BOARD_MALYAN_M300 4001 // STM32F070-based delta -#define BOARD_STM32F103RE 4002 // STM32F103RE Libmaple-based STM32F1 controller -#define BOARD_MALYAN_M200 4003 // STM32C8 Libmaple-based STM32F1 controller -#define BOARD_STM3R_MINI 4004 // STM32F103RE Libmaple-based STM32F1 controller -#define BOARD_GTM32_PRO_VB 4005 // STM32F103VE controller -#define BOARD_GTM32_MINI 4006 // STM32F103VE controller -#define BOARD_GTM32_MINI_A30 4007 // STM32F103VE controller -#define BOARD_GTM32_REV_B 4008 // STM32F103VE controller -#define BOARD_MORPHEUS 4009 // STM32F103C8 / STM32F103CB Libmaple-based STM32F1 controller -#define BOARD_CHITU3D 4010 // Chitu3D (STM32F103RE) -#define BOARD_MKS_ROBIN 4011 // MKS Robin (STM32F103ZE) -#define BOARD_MKS_ROBIN_MINI 4012 // MKS Robin Mini (STM32F103VE) -#define BOARD_MKS_ROBIN_NANO 4013 // MKS Robin Nano (STM32F103VE) -#define BOARD_MKS_ROBIN_NANO_V2 4014 // MKS Robin Nano V2 (STM32F103VE) -#define BOARD_MKS_ROBIN_LITE 4015 // MKS Robin Lite/Lite2 (STM32F103RC) -#define BOARD_MKS_ROBIN_LITE3 4016 // MKS Robin Lite3 (STM32F103RC) -#define BOARD_MKS_ROBIN_PRO 4017 // MKS Robin Pro (STM32F103ZE) -#define BOARD_MKS_ROBIN_E3 4018 // MKS Robin E3 (STM32F103RC) -#define BOARD_MKS_ROBIN_E3_V1_1 4019 // MKS Robin E3 V1.1 (STM32F103RC) -#define BOARD_MKS_ROBIN_E3D 4020 // MKS Robin E3D (STM32F103RC) -#define BOARD_MKS_ROBIN_E3D_V1_1 4021 // MKS Robin E3D V1.1 (STM32F103RC) -#define BOARD_MKS_ROBIN_E3P 4022 // MKS Robin E3p (STM32F103VE) -#define BOARD_BTT_EBB42_V1_1 4023 // BigTreeTech EBB42 V1.1 (STM32G0B1CB) -#define BOARD_BTT_SKR_MINI_V1_1 4024 // BigTreeTech SKR Mini v1.1 (STM32F103RC) -#define BOARD_BTT_SKR_MINI_E3_V1_0 4025 // BigTreeTech SKR Mini E3 (STM32F103RC) -#define BOARD_BTT_SKR_MINI_E3_V1_2 4026 // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC) -#define BOARD_BTT_SKR_MINI_E3_V2_0 4027 // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC / STM32F103RE) -#define BOARD_BTT_SKR_MINI_E3_V3_0 4028 // BigTreeTech SKR Mini E3 V3.0 (STM32G0B1RE) -#define BOARD_BTT_SKR_MINI_E3_V3_0_1 4029 // BigTreeTech SKR Mini E3 V3.0.1 (STM32F401RC) -#define BOARD_BTT_SKR_MINI_MZ_V1_0 4030 // BigTreeTech SKR Mini MZ V1.0 (STM32F103RC) -#define BOARD_BTT_SKR_E3_DIP 4031 // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE) -#define BOARD_BTT_SKR_CR6 4032 // BigTreeTech SKR CR6 v1.0 (STM32F103RE) -#define BOARD_JGAURORA_A5S_A1 4033 // JGAurora A5S A1 (STM32F103ZE) -#define BOARD_FYSETC_AIO_II 4034 // FYSETC AIO_II (STM32F103RC) -#define BOARD_FYSETC_CHEETAH 4035 // FYSETC Cheetah (STM32F103RC) -#define BOARD_FYSETC_CHEETAH_V12 4036 // FYSETC Cheetah V1.2 (STM32F103RC) -#define BOARD_LONGER3D_LK 4037 // Longer3D LK1/2 - Alfawise U20/U20+/U30 (STM32F103VE) -#define BOARD_CCROBOT_MEEB_3DP 4038 // ccrobot-online.com MEEB_3DP (STM32F103RC) -#define BOARD_CHITU3D_V5 4039 // Chitu3D TronXY X5SA V5 Board (STM32F103ZE) -#define BOARD_CHITU3D_V6 4040 // Chitu3D TronXY X5SA V6 Board (STM32F103ZE) -#define BOARD_CHITU3D_V9 4041 // Chitu3D TronXY X5SA V9 Board (STM32F103ZE) -#define BOARD_CREALITY_V4 4042 // Creality v4.x (STM32F103RC / STM32F103RE) -#define BOARD_CREALITY_V422 4043 // Creality v4.2.2 (STM32F103RC / STM32F103RE) -#define BOARD_CREALITY_V423 4044 // Creality v4.2.3 (STM32F103RC / STM32F103RE) -#define BOARD_CREALITY_V425 4045 // Creality v4.2.5 (STM32F103RC / STM32F103RE) -#define BOARD_CREALITY_V427 4046 // Creality v4.2.7 (STM32F103RC / STM32F103RE) -#define BOARD_CREALITY_V4210 4047 // Creality v4.2.10 (STM32F103RC / STM32F103RE) as found in the CR-30 -#define BOARD_CREALITY_V431 4048 // Creality v4.3.1 (STM32F103RC / STM32F103RE) -#define BOARD_CREALITY_V431_A 4049 // Creality v4.3.1a (STM32F103RC / STM32F103RE) -#define BOARD_CREALITY_V431_B 4050 // Creality v4.3.1b (STM32F103RC / STM32F103RE) -#define BOARD_CREALITY_V431_C 4051 // Creality v4.3.1c (STM32F103RC / STM32F103RE) -#define BOARD_CREALITY_V431_D 4052 // Creality v4.3.1d (STM32F103RC / STM32F103RE) -#define BOARD_CREALITY_V452 4053 // Creality v4.5.2 (STM32F103RC / STM32F103RE) -#define BOARD_CREALITY_V453 4054 // Creality v4.5.3 (STM32F103RC / STM32F103RE) -#define BOARD_CREALITY_V521 4055 // Creality v5.2.1 (STM32F103VE) as found in the SV04 -#define BOARD_CREALITY_V24S1 4056 // Creality v2.4.S1 (STM32F103RC / STM32F103RE) v101 as found in the Ender-7 -#define BOARD_CREALITY_V24S1_301 4057 // Creality v2.4.S1_301 (STM32F103RC / STM32F103RE) v301 as found in the Ender-3 S1 -#define BOARD_CREALITY_V25S1 4058 // Creality v2.5.S1 (STM32F103RE) as found in the CR-10 Smart Pro -#define BOARD_TRIGORILLA_PRO 4059 // Trigorilla Pro (STM32F103ZE) -#define BOARD_FLY_MINI 4060 // FLYmaker FLY MINI (STM32F103RC) -#define BOARD_FLSUN_HISPEED 4061 // FLSUN HiSpeedV1 (STM32F103VE) -#define BOARD_BEAST 4062 // STM32F103RE Libmaple-based controller -#define BOARD_MINGDA_MPX_ARM_MINI 4063 // STM32F103ZE Mingda MD-16 -#define BOARD_GTM32_PRO_VD 4064 // STM32F103VE controller -#define BOARD_ZONESTAR_ZM3E2 4065 // Zonestar ZM3E2 (STM32F103RC) -#define BOARD_ZONESTAR_ZM3E4 4066 // Zonestar ZM3E4 V1 (STM32F103VC) -#define BOARD_ZONESTAR_ZM3E4V2 4067 // Zonestar ZM3E4 V2 (STM32F103VC) -#define BOARD_ERYONE_ERY32_MINI 4068 // Eryone Ery32 mini (STM32F103VE) -#define BOARD_PANDA_PI_V29 4069 // Panda Pi V2.9 - Standalone (STM32F103RC) +#define BOARD_MALYAN_M200_V2 5000 // STM32F070CB controller +#define BOARD_MALYAN_M300 5001 // STM32F070-based delta +#define BOARD_STM32F103RE 5002 // STM32F103RE Libmaple-based STM32F1 controller +#define BOARD_MALYAN_M200 5003 // STM32C8 Libmaple-based STM32F1 controller +#define BOARD_STM3R_MINI 5004 // STM32F103RE Libmaple-based STM32F1 controller +#define BOARD_GTM32_PRO_VB 5005 // STM32F103VE controller +#define BOARD_GTM32_MINI 5006 // STM32F103VE controller +#define BOARD_GTM32_MINI_A30 5007 // STM32F103VE controller +#define BOARD_GTM32_REV_B 5008 // STM32F103VE controller +#define BOARD_MORPHEUS 5009 // STM32F103C8 / STM32F103CB Libmaple-based STM32F1 controller +#define BOARD_CHITU3D 5010 // Chitu3D (STM32F103RE) +#define BOARD_MKS_ROBIN 5011 // MKS Robin (STM32F103ZE) +#define BOARD_MKS_ROBIN_MINI 5012 // MKS Robin Mini (STM32F103VE) +#define BOARD_MKS_ROBIN_NANO 5013 // MKS Robin Nano (STM32F103VE) +#define BOARD_MKS_ROBIN_NANO_V2 5014 // MKS Robin Nano V2 (STM32F103VE) +#define BOARD_MKS_ROBIN_LITE 5015 // MKS Robin Lite/Lite2 (STM32F103RC) +#define BOARD_MKS_ROBIN_LITE3 5016 // MKS Robin Lite3 (STM32F103RC) +#define BOARD_MKS_ROBIN_PRO 5017 // MKS Robin Pro (STM32F103ZE) +#define BOARD_MKS_ROBIN_E3 5018 // MKS Robin E3 (STM32F103RC) +#define BOARD_MKS_ROBIN_E3_V1_1 5019 // MKS Robin E3 V1.1 (STM32F103RC) +#define BOARD_MKS_ROBIN_E3D 5020 // MKS Robin E3D (STM32F103RC) +#define BOARD_MKS_ROBIN_E3D_V1_1 5021 // MKS Robin E3D V1.1 (STM32F103RC) +#define BOARD_MKS_ROBIN_E3P 5022 // MKS Robin E3P (STM32F103VE) +#define BOARD_BTT_SKR_MINI_V1_1 5023 // BigTreeTech SKR Mini v1.1 (STM32F103RC) +#define BOARD_BTT_SKR_MINI_E3_V1_0 5024 // BigTreeTech SKR Mini E3 (STM32F103RC) +#define BOARD_BTT_SKR_MINI_E3_V1_2 5025 // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC) +#define BOARD_BTT_SKR_MINI_E3_V2_0 5026 // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC / STM32F103RE) +#define BOARD_BTT_SKR_MINI_MZ_V1_0 5027 // BigTreeTech SKR Mini MZ V1.0 (STM32F103RC) +#define BOARD_BTT_SKR_E3_DIP 5028 // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE) +#define BOARD_BTT_SKR_CR6 5029 // BigTreeTech SKR CR6 v1.0 (STM32F103RE) +#define BOARD_JGAURORA_A5S_A1 5030 // JGAurora A5S A1 (STM32F103ZE) +#define BOARD_FYSETC_AIO_II 5031 // FYSETC AIO_II (STM32F103RC) +#define BOARD_FYSETC_CHEETAH 5032 // FYSETC Cheetah (STM32F103RC) +#define BOARD_FYSETC_CHEETAH_V12 5033 // FYSETC Cheetah V1.2 (STM32F103RC) +#define BOARD_LONGER3D_LK 5034 // Longer3D LK1/2 - Alfawise U20/U20+/U30 (STM32F103VE) +#define BOARD_CCROBOT_MEEB_3DP 5035 // ccrobot-online.com MEEB_3DP (STM32F103RC) +#define BOARD_CHITU3D_V5 5036 // Chitu3D TronXY X5SA V5 Board (STM32F103ZE) +#define BOARD_CHITU3D_V6 5037 // Chitu3D TronXY X5SA V6 Board (STM32F103ZE) +#define BOARD_CHITU3D_V9 5038 // Chitu3D TronXY X5SA V9 Board (STM32F103ZE) +#define BOARD_CREALITY_V4 5039 // Creality v4.x (STM32F103RC / STM32F103RE) +#define BOARD_CREALITY_V422 5040 // Creality v4.2.2 (STM32F103RC / STM32F103RE) +#define BOARD_CREALITY_V423 5041 // Creality v4.2.3 (STM32F103RC / STM32F103RE) +#define BOARD_CREALITY_V425 5042 // Creality v4.2.5 (STM32F103RC / STM32F103RE) +#define BOARD_CREALITY_V427 5043 // Creality v4.2.7 (STM32F103RC / STM32F103RE) +#define BOARD_CREALITY_V4210 5044 // Creality v4.2.10 (STM32F103RC / STM32F103RE) as found in the CR-30 +#define BOARD_CREALITY_V431 5045 // Creality v4.3.1 (STM32F103RC / STM32F103RE) +#define BOARD_CREALITY_V431_A 5046 // Creality v4.3.1a (STM32F103RC / STM32F103RE) +#define BOARD_CREALITY_V431_B 5047 // Creality v4.3.1b (STM32F103RC / STM32F103RE) +#define BOARD_CREALITY_V431_C 5048 // Creality v4.3.1c (STM32F103RC / STM32F103RE) +#define BOARD_CREALITY_V431_D 5049 // Creality v4.3.1d (STM32F103RC / STM32F103RE) +#define BOARD_CREALITY_V452 5050 // Creality v4.5.2 (STM32F103RC / STM32F103RE) +#define BOARD_CREALITY_V453 5051 // Creality v4.5.3 (STM32F103RC / STM32F103RE) +#define BOARD_CREALITY_V521 5052 // Creality v5.2.1 (STM32F103VE) as found in the SV04 +#define BOARD_CREALITY_V24S1 5053 // Creality v2.4.S1 (STM32F103RC / STM32F103RE) v101 as found in the Ender-7 +#define BOARD_CREALITY_V24S1_301 5054 // Creality v2.4.S1_301 (STM32F103RC / STM32F103RE) v301 as found in the Ender-3 S1 +#define BOARD_CREALITY_V25S1 5055 // Creality v2.5.S1 (STM32F103RE) as found in the CR-10 Smart Pro +#define BOARD_TRIGORILLA_PRO 5056 // Trigorilla Pro (STM32F103ZE) +#define BOARD_FLY_MINI 5057 // FLYmaker FLY MINI (STM32F103RC) +#define BOARD_FLSUN_HISPEED 5058 // FLSUN HiSpeedV1 (STM32F103VE) +#define BOARD_BEAST 5059 // STM32F103RE Libmaple-based controller +#define BOARD_MINGDA_MPX_ARM_MINI 5060 // STM32F103ZE Mingda MD-16 +#define BOARD_GTM32_PRO_VD 5061 // STM32F103VE controller +#define BOARD_ZONESTAR_ZM3E2 5062 // Zonestar ZM3E2 (STM32F103RC) +#define BOARD_ZONESTAR_ZM3E4 5063 // Zonestar ZM3E4 V1 (STM32F103VC) +#define BOARD_ZONESTAR_ZM3E4V2 5064 // Zonestar ZM3E4 V2 (STM32F103VC) +#define BOARD_ERYONE_ERY32_MINI 5065 // Eryone Ery32 mini (STM32F103VE) +#define BOARD_PANDA_PI_V29 5066 // Panda Pi V2.9 - Standalone (STM32F103RC) // // ARM Cortex-M4F // -#define BOARD_TEENSY31_32 4100 // Teensy3.1 and Teensy3.2 -#define BOARD_TEENSY35_36 4101 // Teensy3.5 and Teensy3.6 +#define BOARD_TEENSY31_32 5100 // Teensy3.1 and Teensy3.2 +#define BOARD_TEENSY35_36 5101 // Teensy3.5 and Teensy3.6 // // STM32 ARM Cortex-M4F // -#define BOARD_ARMED 4200 // Arm'ed STM32F4-based controller -#define BOARD_RUMBA32_V1_0 4201 // RUMBA32 STM32F446VE based controller from Aus3D -#define BOARD_RUMBA32_V1_1 4202 // RUMBA32 STM32F446VE based controller from Aus3D -#define BOARD_RUMBA32_MKS 4203 // RUMBA32 STM32F446VE based controller from Makerbase -#define BOARD_RUMBA32_BTT 4204 // RUMBA32 STM32F446VE based controller from BIGTREETECH -#define BOARD_BLACK_STM32F407VE 4205 // BLACK_STM32F407VE -#define BOARD_BLACK_STM32F407ZE 4206 // BLACK_STM32F407ZE -#define BOARD_BTT_SKR_PRO_V1_1 4207 // BigTreeTech SKR Pro v1.1 (STM32F407ZG) -#define BOARD_BTT_SKR_PRO_V1_2 4208 // BigTreeTech SKR Pro v1.2 (STM32F407ZG) -#define BOARD_BTT_BTT002_V1_0 4209 // BigTreeTech BTT002 v1.0 (STM32F407VG) -#define BOARD_BTT_E3_RRF 4210 // BigTreeTech E3 RRF (STM32F407VG) -#define BOARD_BTT_SKR_V2_0_REV_A 4211 // BigTreeTech SKR v2.0 Rev A (STM32F407VG) -#define BOARD_BTT_SKR_V2_0_REV_B 4212 // BigTreeTech SKR v2.0 Rev B (STM32F407VG/STM32F429VG) -#define BOARD_BTT_GTR_V1_0 4213 // BigTreeTech GTR v1.0 (STM32F407IGT) -#define BOARD_BTT_OCTOPUS_V1_0 4214 // BigTreeTech Octopus v1.0 (STM32F446ZE) -#define BOARD_BTT_OCTOPUS_V1_1 4215 // BigTreeTech Octopus v1.1 (STM32F446ZE) -#define BOARD_BTT_OCTOPUS_PRO_V1_0 4216 // BigTreeTech Octopus Pro v1.0 (STM32F446ZE / STM32F429ZG) -#define BOARD_LERDGE_K 4217 // Lerdge K (STM32F407ZG) -#define BOARD_LERDGE_S 4218 // Lerdge S (STM32F407VE) -#define BOARD_LERDGE_X 4219 // Lerdge X (STM32F407VE) -#define BOARD_VAKE403D 4220 // VAkE 403D (STM32F446VE) -#define BOARD_FYSETC_S6 4221 // FYSETC S6 (STM32F446VE) -#define BOARD_FYSETC_S6_V2_0 4222 // FYSETC S6 v2.0 (STM32F446VE) -#define BOARD_FYSETC_SPIDER 4223 // FYSETC Spider (STM32F446VE) -#define BOARD_FLYF407ZG 4224 // FLYmaker FLYF407ZG (STM32F407ZG) -#define BOARD_MKS_ROBIN2 4225 // MKS_ROBIN2 (STM32F407ZE) -#define BOARD_MKS_ROBIN_PRO_V2 4226 // MKS Robin Pro V2 (STM32F407VE) -#define BOARD_MKS_ROBIN_NANO_V3 4227 // MKS Robin Nano V3 (STM32F407VG) -#define BOARD_MKS_ROBIN_NANO_V3_1 4228 // MKS Robin Nano V3.1 (STM32F407VE) -#define BOARD_MKS_MONSTER8_V1 4229 // MKS Monster8 V1 (STM32F407VE) -#define BOARD_MKS_MONSTER8_V2 4230 // MKS Monster8 V2 (STM32F407VE) -#define BOARD_ANET_ET4 4231 // ANET ET4 V1.x (STM32F407VG) -#define BOARD_ANET_ET4P 4232 // ANET ET4P V1.x (STM32F407VG) -#define BOARD_FYSETC_CHEETAH_V20 4233 // FYSETC Cheetah V2.0 (STM32F401RC) -#define BOARD_TH3D_EZBOARD_V2 4234 // TH3D EZBoard v2.0 (STM32F405RG) -#define BOARD_OPULO_LUMEN_REV3 4235 // Opulo Lumen PnP Controller REV3 (STM32F407VE / STM32F407VG) -#define BOARD_MKS_ROBIN_NANO_V1_3_F4 4236 // MKS Robin Nano V1.3 and MKS Robin Nano-S V1.3 (STM32F407VE) -#define BOARD_MKS_EAGLE 4237 // MKS Eagle (STM32F407VE) -#define BOARD_ARTILLERY_RUBY 4238 // Artillery Ruby (STM32F401RC) -#define BOARD_FYSETC_SPIDER_V2_2 4239 // FYSETC Spider V2.2 (STM32F446VE) -#define BOARD_CREALITY_V24S1_301F4 4240 // Creality v2.4.S1_301F4 (STM32F401RC) as found in the Ender-3 S1 F4 -#define BOARD_OPULO_LUMEN_REV4 4241 // Opulo Lumen PnP Controller REV4 (STM32F407VE / STM32F407VG) -#define BOARD_FYSETC_SPIDER_KING407 4242 // FYSETC Spider King407 (STM32F407ZG) -#define BOARD_MKS_SKIPR_V1 4243 // MKS SKIPR v1.0 all-in-one board (STM32F407VE) -#define BOARD_TRONXY_V10 4244 // TRONXY V10 (STM32F446ZE) +#define BOARD_ARMED 5200 // Arm'ed STM32F4-based controller +#define BOARD_RUMBA32_V1_0 5201 // RUMBA32 STM32F446VE based controller from Aus3D +#define BOARD_RUMBA32_V1_1 5202 // RUMBA32 STM32F446VE based controller from Aus3D +#define BOARD_RUMBA32_MKS 5203 // RUMBA32 STM32F446VE based controller from Makerbase +#define BOARD_RUMBA32_BTT 5204 // RUMBA32 STM32F446VE based controller from BIGTREETECH +#define BOARD_BLACK_STM32F407VE 5205 // BLACK_STM32F407VE +#define BOARD_BLACK_STM32F407ZE 5206 // BLACK_STM32F407ZE +#define BOARD_BTT_SKR_MINI_E3_V3_0_1 5207 // BigTreeTech SKR Mini E3 V3.0.1 (STM32F401RC) +#define BOARD_BTT_SKR_PRO_V1_1 5208 // BigTreeTech SKR Pro v1.1 (STM32F407ZG) +#define BOARD_BTT_SKR_PRO_V1_2 5209 // BigTreeTech SKR Pro v1.2 (STM32F407ZG) +#define BOARD_BTT_BTT002_V1_0 5210 // BigTreeTech BTT002 v1.0 (STM32F407VG) +#define BOARD_BTT_E3_RRF 5211 // BigTreeTech E3 RRF (STM32F407VG) +#define BOARD_BTT_SKR_V2_0_REV_A 5212 // BigTreeTech SKR v2.0 Rev A (STM32F407VG) +#define BOARD_BTT_SKR_V2_0_REV_B 5213 // BigTreeTech SKR v2.0 Rev B (STM32F407VG/STM32F429VG) +#define BOARD_BTT_GTR_V1_0 5214 // BigTreeTech GTR v1.0 (STM32F407IGT) +#define BOARD_BTT_OCTOPUS_V1_0 5215 // BigTreeTech Octopus v1.0 (STM32F446ZE) +#define BOARD_BTT_OCTOPUS_V1_1 5216 // BigTreeTech Octopus v1.1 (STM32F446ZE) +#define BOARD_BTT_OCTOPUS_PRO_V1_0 5217 // BigTreeTech Octopus Pro v1.0 (STM32F446ZE / STM32F429ZG) +#define BOARD_LERDGE_K 5218 // Lerdge K (STM32F407ZG) +#define BOARD_LERDGE_S 5219 // Lerdge S (STM32F407VE) +#define BOARD_LERDGE_X 5220 // Lerdge X (STM32F407VE) +#define BOARD_VAKE403D 5221 // VAkE 403D (STM32F446VE) +#define BOARD_FYSETC_S6 5222 // FYSETC S6 (STM32F446VE) +#define BOARD_FYSETC_S6_V2_0 5223 // FYSETC S6 v2.0 (STM32F446VE) +#define BOARD_FYSETC_SPIDER 5224 // FYSETC Spider (STM32F446VE) +#define BOARD_FLYF407ZG 5225 // FLYmaker FLYF407ZG (STM32F407ZG) +#define BOARD_MKS_ROBIN2 5226 // MKS_ROBIN2 (STM32F407ZE) +#define BOARD_MKS_ROBIN_PRO_V2 5227 // MKS Robin Pro V2 (STM32F407VE) +#define BOARD_MKS_ROBIN_NANO_V3 5228 // MKS Robin Nano V3 (STM32F407VG) +#define BOARD_MKS_ROBIN_NANO_V3_1 5229 // MKS Robin Nano V3.1 (STM32F407VE) +#define BOARD_MKS_MONSTER8_V1 5230 // MKS Monster8 V1 (STM32F407VE) +#define BOARD_MKS_MONSTER8_V2 5231 // MKS Monster8 V2 (STM32F407VE) +#define BOARD_ANET_ET4 5232 // ANET ET4 V1.x (STM32F407VG) +#define BOARD_ANET_ET4P 5233 // ANET ET4P V1.x (STM32F407VG) +#define BOARD_FYSETC_CHEETAH_V20 5234 // FYSETC Cheetah V2.0 (STM32F401RC) +#define BOARD_TH3D_EZBOARD_V2 5235 // TH3D EZBoard v2.0 (STM32F405RG) +#define BOARD_OPULO_LUMEN_REV3 5236 // Opulo Lumen PnP Controller REV3 (STM32F407VE / STM32F407VG) +#define BOARD_MKS_ROBIN_NANO_V1_3_F4 5237 // MKS Robin Nano V1.3 and MKS Robin Nano-S V1.3 (STM32F407VE) +#define BOARD_MKS_EAGLE 5238 // MKS Eagle (STM32F407VE) +#define BOARD_ARTILLERY_RUBY 5239 // Artillery Ruby (STM32F401RC) +#define BOARD_FYSETC_SPIDER_V2_2 5240 // FYSETC Spider V2.2 (STM32F446VE) +#define BOARD_CREALITY_V24S1_301F4 5241 // Creality v2.4.S1_301F4 (STM32F401RC) as found in the Ender-3 S1 F4 +#define BOARD_OPULO_LUMEN_REV4 5242 // Opulo Lumen PnP Controller REV4 (STM32F407VE / STM32F407VG) +#define BOARD_FYSETC_SPIDER_KING407 5243 // FYSETC Spider King407 (STM32F407ZG) +#define BOARD_MKS_SKIPR_V1 5244 // MKS SKIPR v1.0 all-in-one board (STM32F407VE) +#define BOARD_TRONXY_V10 5245 // TRONXY V10 (STM32F446ZE) // -// ARM Cortex M7 +// ARM Cortex-M7 // -#define BOARD_REMRAM_V1 5000 // RemRam v1 -#define BOARD_TEENSY41 5001 // Teensy 4.1 -#define BOARD_T41U5XBB 5002 // T41U5XBB Teensy 4.1 breakout board -#define BOARD_NUCLEO_F767ZI 5003 // ST NUCLEO-F767ZI Dev Board -#define BOARD_BTT_SKR_SE_BX_V2 5004 // BigTreeTech SKR SE BX V2.0 (STM32H743II) -#define BOARD_BTT_SKR_SE_BX_V3 5005 // BigTreeTech SKR SE BX V3.0 (STM32H743II) -#define BOARD_BTT_SKR_V3_0 5006 // BigTreeTech SKR V3.0 (STM32H743VG) -#define BOARD_BTT_SKR_V3_0_EZ 5007 // BigTreeTech SKR V3.0 EZ (STM32H743VG) +#define BOARD_REMRAM_V1 6000 // RemRam v1 +#define BOARD_TEENSY41 6001 // Teensy 4.1 +#define BOARD_T41U5XBB 6002 // T41U5XBB Teensy 4.1 breakout board +#define BOARD_NUCLEO_F767ZI 6003 // ST NUCLEO-F767ZI Dev Board +#define BOARD_BTT_SKR_SE_BX_V2 6004 // BigTreeTech SKR SE BX V2.0 (STM32H743II) +#define BOARD_BTT_SKR_SE_BX_V3 6005 // BigTreeTech SKR SE BX V3.0 (STM32H743II) +#define BOARD_BTT_SKR_V3_0 6006 // BigTreeTech SKR V3.0 (STM32H743VG) +#define BOARD_BTT_SKR_V3_0_EZ 6007 // BigTreeTech SKR V3.0 EZ (STM32H743VG) // // Espressif ESP32 WiFi // -#define BOARD_ESPRESSIF_ESP32 6000 // Generic ESP32 -#define BOARD_MRR_ESPA 6001 // MRR ESPA based on ESP32 (native pins only) -#define BOARD_MRR_ESPE 6002 // MRR ESPE based on ESP32 (with I2S stepper stream) -#define BOARD_E4D_BOX 6003 // E4d@BOX -#define BOARD_RESP32_CUSTOM 6004 // Rutilea ESP32 custom board -#define BOARD_FYSETC_E4 6005 // FYSETC E4 -#define BOARD_PANDA_ZHU 6006 // Panda_ZHU -#define BOARD_PANDA_M4 6007 // Panda_M4 -#define BOARD_MKS_TINYBEE 6008 // MKS TinyBee based on ESP32 (with I2S stepper stream) -#define BOARD_ENWI_ESPNP 6009 // enwi ESPNP based on ESP32 (with I2S stepper stream) +#define BOARD_ESPRESSIF_ESP32 7000 // Generic ESP32 +#define BOARD_MRR_ESPA 7001 // MRR ESPA based on ESP32 (native pins only) +#define BOARD_MRR_ESPE 7002 // MRR ESPE based on ESP32 (with I2S stepper stream) +#define BOARD_E4D_BOX 7003 // E4d@BOX +#define BOARD_RESP32_CUSTOM 7004 // Rutilea ESP32 custom board +#define BOARD_FYSETC_E4 7005 // FYSETC E4 +#define BOARD_PANDA_ZHU 7006 // Panda_ZHU +#define BOARD_PANDA_M4 7007 // Panda_M4 +#define BOARD_MKS_TINYBEE 7008 // MKS TinyBee based on ESP32 (with I2S stepper stream) +#define BOARD_ENWI_ESPNP 7009 // enwi ESPNP based on ESP32 (with I2S stepper stream) // -// SAMD51 ARM Cortex M4 +// SAMD51 ARM Cortex-M4 // -#define BOARD_AGCM4_RAMPS_144 6100 // RAMPS 1.4.4 -#define BOARD_BRICOLEMON_V1_0 6101 // Bricolemon -#define BOARD_BRICOLEMON_LITE_V1_0 6102 // Bricolemon Lite +#define BOARD_AGCM4_RAMPS_144 7100 // RAMPS 1.4.4 +#define BOARD_BRICOLEMON_V1_0 7101 // Bricolemon +#define BOARD_BRICOLEMON_LITE_V1_0 7102 // Bricolemon Lite // -// SAMD21 ARM Cortex M4 +// SAMD21 ARM Cortex-M4 // -#define BOARD_MINITRONICS20 6103 // Minitronics v2.0 +#define BOARD_MINITRONICS20 7103 // Minitronics v2.0 // // Custom board diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index e0ec241faf..18bb7dba58 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -545,6 +545,16 @@ #include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple #elif MB(BTT_SKR_MINI_E3_V3_0) #include "stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h" // STM32G0 env:STM32G0B1RE_btt env:STM32G0B1RE_btt_xfer +#elif MB(BTT_MANTA_M4P_V1_0) + #include "stm32g0/pins_BTT_MANTA_M4P_V1_0.h" // STM32G0 env:STM32G0B1RE_btt env:STM32G0B1RE_btt_xfer +#elif MB(BTT_MANTA_M5P_V1_0) + #include "stm32g0/pins_BTT_MANTA_M5P_V1_0.h" // STM32G0 env:STM32G0B1RE_btt env:STM32G0B1RE_btt_xfer +#elif MB(BTT_MANTA_E3_EZ_V1_0) + #include "stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h" // STM32G0 env:STM32G0B1RE_btt env:STM32G0B1RE_btt_xfer +#elif MB(BTT_MANTA_M8P_V1_0) + #include "stm32g0/pins_BTT_MANTA_M8P_V1_0.h" // STM32G0 env:STM32G0B1VE_btt env:STM32G0B1VE_btt_xfer +#elif MB(BTT_MANTA_M8P_V1_1) + #include "stm32g0/pins_BTT_MANTA_M8P_V1_1.h" // STM32G0 env:STM32G0B1VE_btt env:STM32G0B1VE_btt_xfer #elif MB(BTT_SKR_MINI_E3_V3_0_1) #include "stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h"// STM32F4 env:STM32F401RC_btt #elif MB(BTT_SKR_MINI_MZ_V1_0) diff --git a/Marlin/src/pins/stm32g0/env_validate.h b/Marlin/src/pins/stm32g0/env_validate.h new file mode 100644 index 0000000000..a7be76bd8b --- /dev/null +++ b/Marlin/src/pins/stm32g0/env_validate.h @@ -0,0 +1,26 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#if NOT_TARGET(STM32G0xx) || NOT_TARGET(STM32G0B1xx) + #error "Oops! Select an STM32G0 board in 'Tools > Board.'" +#endif diff --git a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h index fc2be5401e..cdd85a6d75 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h @@ -21,6 +21,8 @@ */ #pragma once +#include "env_validate.h" + /** CAUTION ** * This board definition is to facilitate support for a Filament Extrusion * devices, used to convert waste plastic into 3D printable filament. diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h new file mode 100644 index 0000000000..54c2c4c77b --- /dev/null +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h @@ -0,0 +1,340 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "env_validate.h" + +#ifndef BOARD_INFO_NAME + #define BOARD_INFO_NAME "BTT Manta E3 EZ V1.0" +#endif + +#define USES_DIAG_JUMPERS + +// Ignore temp readings during development. +//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 + +// +// EEPROM +// +#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) + #undef NO_EEPROM_SELECTED + #ifndef FLASH_EEPROM_EMULATION + #define FLASH_EEPROM_EMULATION + #endif + #define EEPROM_PAGE_SIZE (0x800UL) // 2K + #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) + #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE +#endif + +// +// Servos +// +#define SERVO0_PIN PA7 // BLTouch + +// +// Probe enable +// +#if ENABLED(PROBE_ENABLE_DISABLE) + #ifndef PROBE_ENABLE_PIN + #define PROBE_ENABLE_PIN SERVO0_PIN + #endif +#endif + +// +// Trinamic StallGuard pins +// +#define X_DIAG_PIN PC4 // X-STOP +#define Y_DIAG_PIN PB0 // Y-STOP +#define Z_DIAG_PIN PC6 // Z-STOP +#define E0_DIAG_PIN PC5 // E0-DET +#define E1_DIAG_PIN PB1 // E1-DET + +// +// Limit Switches +// +#define X_STOP_PIN X_DIAG_PIN // X-STOP +#define Y_STOP_PIN Y_DIAG_PIN // Y-STOP +#define Z_STOP_PIN Z_DIAG_PIN // Z-STOP + +// +// Z Probe (when not Z_STOP_PIN) +// +#define Z_MIN_PROBE_PIN PA6 // BLTouch + +// +// Filament Runout Sensor +// +#ifndef FIL_RUNOUT_PIN + #define FIL_RUNOUT_PIN E0_DIAG_PIN // E0-DET +#endif +#ifndef FIL_RUNOUT2_PIN + #define FIL_RUNOUT2_PIN E1_DIAG_PIN // E1-DET +#endif + +// +// Power Supply Control +// +#ifndef PS_ON_PIN + #define PS_ON_PIN PA9 // PS-ON +#endif + +// +// Power Loss Detection +// +#ifndef POWER_LOSS_PIN + #define POWER_LOSS_PIN PB9 // PWRDET +#endif + +// +// Steppers +// +#define X_STEP_PIN PA14 +#define X_DIR_PIN PA10 +#define X_ENABLE_PIN PA13 +#ifndef X_CS_PIN + #define X_CS_PIN PB8 +#endif + +#define Y_STEP_PIN PC8 +#define Y_DIR_PIN PA15 +#define Y_ENABLE_PIN PC14 +#ifndef Y_CS_PIN + #define Y_CS_PIN PC9 +#endif + +#define Z_STEP_PIN PD2 +#define Z_DIR_PIN PD4 +#define Z_ENABLE_PIN PD3 +#ifndef Z_CS_PIN + #define Z_CS_PIN PD0 +#endif + +#define E0_STEP_PIN PD5 +#define E0_DIR_PIN PD6 +#define E0_ENABLE_PIN PB3 +#ifndef E0_CS_PIN + #define E0_CS_PIN PD1 +#endif + +#define E1_STEP_PIN PB7 +#define E1_DIR_PIN PB6 +#define E1_ENABLE_PIN PB4 +#ifndef E1_CS_PIN + #define E1_CS_PIN PB5 +#endif + +// +// Software SPI pins for TMC2130 stepper drivers +// +#if ENABLED(TMC_USE_SW_SPI) + #ifndef TMC_SW_MOSI + #define TMC_SW_MOSI PC12 // Shared with SPI header, Pin 5 (SPI3) + #endif + #ifndef TMC_SW_MISO + #define TMC_SW_MISO PC11 // Shared with SPI header, Pin 6 (SPI3) + #endif + #ifndef TMC_SW_SCK + #define TMC_SW_SCK PC10 // Shared with SPI header, Pin 4 (SPI3) + #endif +#endif + +#if HAS_TMC_UART + #define X_SERIAL_TX_PIN PB8 // X_CS_PIN + #define X_SERIAL_RX_PIN X_SERIAL_TX_PIN + + #define Y_SERIAL_TX_PIN PC9 // Y_CS_PIN + #define Y_SERIAL_RX_PIN Y_SERIAL_TX_PIN + + #define Z_SERIAL_TX_PIN PD0 // Z_CS_PIN + #define Z_SERIAL_RX_PIN Z_SERIAL_TX_PIN + + #define E0_SERIAL_TX_PIN PD1 // E0_CS_PIN + #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN + + #define E1_SERIAL_TX_PIN PB5 // E1_CS_PIN + #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN + + // Reduce baud rate to improve software serial reliability + #define TMC_BAUD_RATE 19200 +#endif + +// +// Temperature Sensors +// +#define TEMP_0_PIN PA4 // Analog Input "TH0" +#define TEMP_1_PIN PA5 // Analog Input "TH1" +#define TEMP_BED_PIN PA3 // Analog Input "TB" + +// +// Heaters / Fans +// +#define HEATER_0_PIN PB11 // "HE0" +#define HEATER_1_PIN PB10 // "HE1" +#define HEATER_BED_PIN PB2 // "HB" + +#define FAN_PIN PA8 // "FAN0" +#define FAN1_PIN PB15 // "FAN1" +#define FAN2_PIN PB14 // "FAN2" + +// +// Auto fans +// +#if HOTENDS == 2 + #ifndef E0_AUTO_FAN_PIN + #define E0_AUTO_FAN_PIN FAN1_PIN + #endif + #ifndef E1_AUTO_FAN_PIN + #define E1_AUTO_FAN_PIN FAN2_PIN + #endif +#else + #ifndef E0_AUTO_FAN_PIN + #define E0_AUTO_FAN_PIN FAN1_PIN + #endif + #ifndef CONTROLLER_FAN_PIN + #define CONTROLLER_FAN_PIN FAN2_PIN + #endif +#endif + +/** + * Manta E3 EZ V1.0 + * ------ + * (BEEPER) PC1 | 1 2 | PC2 (BTN_ENC) + * (BTN_EN1) PC3 | 3 4 | RESET + * (BTN_EN2) PC0 5 6 | PA0 (LCD_D4) + * (LCD_RS) PA2 | 7 8 | PA1 (LCD_EN) + * GND | 9 10 | 5V + * ------ + * EXP1 + */ +#define EXP1_01_PIN PC1 +#define EXP1_02_PIN PC2 +#define EXP1_03_PIN PC3 +#define EXP1_04_PIN -1 +#define EXP1_05_PIN PC0 +#define EXP1_06_PIN PA0 +#define EXP1_07_PIN PA2 +#define EXP1_08_PIN PA1 +#define EXP1_09_PIN -1 +#define EXP1_10_PIN -1 + +#if HAS_DWIN_E3V2 || IS_DWIN_MARLINUI + #ifndef NO_CONTROLLER_CUSTOM_WIRING_WARNING + #error "CAUTION! Ender-3 V2 display requires a custom cable with TX = PA0, RX = PC2. See 'pins_BTT_MANTA_E3_EZ_V1_0.h' for details. (Define NO_CONTROLLER_CUSTOM_WIRING_WARNING to suppress this warning.)" + #endif + + /** + * Ender-3 V2 display Manta E3 EZ V1.0 Ender-3 V2 display --> Manta E3 EZ V1.0 + * ------ ------ RX 3 --> 5 P0_15 + * -- | 1 2 | -- (BEEPER) PC1 | 1 2 | PC2 (BTN_ENC) TX 4 --> 9 P0_16 + * (MANTA TX1) RX | 3 4 | TX (MANTA RX1) (BTN_EN1) PC3 | 3 4 | RESET BEEPER 6 --> 10 P2_08 + * (BTN_ENC) ENT 5 6 | BEEPER (BTN_EN2) PC0 5 6 | PA0 (LCD_D4) + * (BTN_E2) B | 7 8 | A (BTN_E1) (LCD_RS) PA2 | 7 8 | PA1 (LCD_EN) + * GND | 9 10 | 5V GND | 9 10 | 5V + * ------ ------ + */ + + #define BEEPER_PIN EXP1_01_PIN + #define BTN_EN1 EXP1_08_PIN + #define BTN_EN2 EXP1_07_PIN + #define BTN_ENC EXP1_05_PIN + +#elif HAS_WIRED_LCD + + #if ENABLED(CR10_STOCKDISPLAY) + + #define BEEPER_PIN EXP1_01_PIN + + #define BTN_EN1 EXP1_03_PIN + #define BTN_EN2 EXP1_05_PIN + #define BTN_ENC EXP1_02_PIN + + #define LCD_PINS_RS EXP1_07_PIN + #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_D4 EXP1_06_PIN + + #elif ENABLED(ZONESTAR_LCD) // ANET A8 LCD Controller - Must convert to 3.3V - CONNECTING TO 5V WILL DAMAGE THE BOARD! + + #ifndef NO_CONTROLLER_CUSTOM_WIRING_WARNING + #error "CAUTION! ZONESTAR_LCD requires wiring modifications. See 'pins_BTT_MANTA_E3_EZ_V1_0.h' for details. (Define NO_CONTROLLER_CUSTOM_WIRING_WARNING to suppress this warning.)" + #endif + + #define LCD_PINS_RS EXP1_06_PIN + #define LCD_PINS_ENABLE EXP1_02_PIN + #define LCD_PINS_D4 EXP1_07_PIN + #define LCD_PINS_D5 EXP1_05_PIN + #define LCD_PINS_D6 EXP1_03_PIN + #define LCD_PINS_D7 EXP1_01_PIN + #define ADC_KEYPAD_PIN PA7 // Repurpose default SERVO0_PIN for ADC - CONNECTING TO 5V WILL DAMAGE THE BOARD! + + #elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) + + #define BTN_EN1 EXP1_03_PIN + #define BTN_EN2 EXP1_05_PIN + #define BTN_ENC EXP1_02_PIN + + #define DOGLCD_CS EXP1_07_PIN + #define DOGLCD_A0 EXP1_06_PIN + #define DOGLCD_SCK EXP1_01_PIN + #define DOGLCD_MOSI EXP1_08_PIN + #define FORCE_SOFT_SPI + #define LCD_BACKLIGHT_PIN -1 + + #else + + #error "Only ZONESTAR_LCD, MKS_MINI_12864, ENDER2_STOCKDISPLAY, and CR10_STOCKDISPLAY are currently supported on the BTT_MANTA_E3_EZ_V1_0." + + #endif + +#endif // HAS_WIRED_LCD + +// +// SD Support +// + +#ifndef SDCARD_CONNECTION + #define SDCARD_CONNECTION ONBOARD +#endif + +#define SD_DETECT_PIN -1 + +#if SD_CONNECTION_IS(LCD) && (BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) || IS_TFTGLCD_PANEL) + #define SD_SS_PIN EXP1_05_PIN +#elif SD_CONNECTION_IS(CUSTOM_CABLE) + #error "SD CUSTOM_CABLE is not compatible with Manta E3 EZ." +#endif + +#define ONBOARD_SPI_DEVICE 3 // SPI3 -> used only by HAL/STM32F1... +#define ONBOARD_SD_CS_PIN PC13 // Chip select for "System" SD card + +#define ENABLE_SPI3 +#define SDSS ONBOARD_SD_CS_PIN +#define SD_SS_PIN ONBOARD_SD_CS_PIN +#define SD_SCK_PIN PC10 +#define SD_MISO_PIN PC11 +#define SD_MOSI_PIN PC12 + +// +// NeoPixel LED +// +#ifndef NEOPIXEL_PIN + #define NEOPIXEL_PIN PC7 // RGB +#endif diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h new file mode 100644 index 0000000000..876475f883 --- /dev/null +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h @@ -0,0 +1,313 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "env_validate.h" + +//#define BOARD_CUSTOM_BUILD_FLAGS -DTONE_CHANNEL=4 -DTONE_TIMER=4 -DTIMER_TONE=4 + +#ifndef BOARD_INFO_NAME + #define BOARD_INFO_NAME "BTT Manta M4P V1.0" +#endif + +#define USES_DIAG_JUMPERS + +// Ignore temp readings during development. +//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 + +// +// EEPROM +// +#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) + #undef NO_EEPROM_SELECTED + #ifndef FLASH_EEPROM_EMULATION + #define FLASH_EEPROM_EMULATION + #endif + #define EEPROM_PAGE_SIZE (0x800UL) // 2K + #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) + #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE +#endif + +// +// Servos +// +#define SERVO0_PIN PA1 // SERVOS + +// +// Probe enable +// +#if ENABLED(PROBE_ENABLE_DISABLE) + #ifndef PROBE_ENABLE_PIN + #define PROBE_ENABLE_PIN SERVO0_PIN + #endif +#endif + +// +// Limit Switches +// +#define X_STOP_PIN PC0 // X-STOP +#define Y_STOP_PIN PC1 // Y-STOP +#define Z_STOP_PIN PC2 // Z-STOP + +// +// Z Probe must be this pin +// +#define Z_MIN_PROBE_PIN PC14 // PROBE + +// +// Filament Runout Sensor +// +#ifndef FIL_RUNOUT_PIN + #define FIL_RUNOUT_PIN PC15 // E0-STOP +#endif + +// +// Steppers +// +#define X_STEP_PIN PC6 +#define X_DIR_PIN PA14 +#define X_ENABLE_PIN PC7 +#ifndef X_CS_PIN + #define X_CS_PIN PB12 +#endif + +#define Y_STEP_PIN PB10 +#define Y_DIR_PIN PB2 +#define Y_ENABLE_PIN PB11 +#ifndef Y_CS_PIN + #define Y_CS_PIN PC10 +#endif + +#define Z_STEP_PIN PB0 +#define Z_DIR_PIN PC5 +#define Z_ENABLE_PIN PB1 +#ifndef Z_CS_PIN + #define Z_CS_PIN PC9 +#endif + +#define E0_STEP_PIN PB3 +#define E0_DIR_PIN PB4 +#define E0_ENABLE_PIN PD5 +#ifndef E0_CS_PIN + #define E0_CS_PIN PA13 +#endif + +// +// Software SPI pins for TMC2130 stepper drivers +// +#if ENABLED(TMC_USE_SW_SPI) + #ifndef TMC_SW_MOSI + #define TMC_SW_MOSI PB15 + #endif + #ifndef TMC_SW_MISO + #define TMC_SW_MISO PB14 + #endif + #ifndef TMC_SW_SCK + #define TMC_SW_SCK PB13 + #endif +#endif + +#if HAS_TMC_UART + #define X_SERIAL_TX_PIN PB12 + #define X_SERIAL_RX_PIN X_SERIAL_TX_PIN + + #define Y_SERIAL_TX_PIN PC10 + #define Y_SERIAL_RX_PIN Y_SERIAL_TX_PIN + + #define Z_SERIAL_TX_PIN PC9 + #define Z_SERIAL_RX_PIN Z_SERIAL_TX_PIN + + #define E0_SERIAL_TX_PIN PA13 + #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN + + // Reduce baud rate to improve software serial reliability + #define TMC_BAUD_RATE 19200 +#endif + +// +// Temperature Sensors +// +#define TEMP_0_PIN PA0 // Analog Input "TH0" +#define TEMP_BED_PIN PC4 // Analog Input "TB0" + +// +// Heaters / Fans +// +#define HEATER_0_PIN PC8 // "HE" +#define HEATER_BED_PIN PD8 // "HB" + +#define FAN_PIN PD2 // "FAN0" +#define FAN1_PIN PD3 // "FAN1" +#define FAN2_PIN PD4 // "FAN2" + +/** + * ------ ------ + * (BEEPER) PD6 | 1 2 | PB8 (BTN_ENC) (MISO) PB14 | 1 2 | PB13 (SCK) + * (LCD_EN) PB9 | 3 4 | PC3 (LCD_RS) (BTN_EN1) PC11 | 3 4 | PA8 (SD_SS) + * (LCD_D4) PA15 | 5 6 PA10 (LCD_D5) (BTN_EN2) PC12 | 5 6 PB15 (MOSI) + * (LCD_D6) PA9 | 7 8 | PB5 (LCD_D7) (SD_DETECT) PC13 | 7 8 | RESET + * GND | 9 10 | 5V GND | 9 10 | -- + * ------ ------ + * EXP1 EXP2 + */ +#define EXP1_01_PIN PD6 +#define EXP1_02_PIN PB8 +#define EXP1_03_PIN PB9 +#define EXP1_04_PIN PC3 +#define EXP1_05_PIN PA15 +#define EXP1_06_PIN PA10 +#define EXP1_07_PIN PA9 +#define EXP1_08_PIN PB5 + +#define EXP2_01_PIN PB14 +#define EXP2_02_PIN PB13 +#define EXP2_03_PIN PC11 +#define EXP2_04_PIN PA8 +#define EXP2_05_PIN PC12 +#define EXP2_06_PIN PB15 +#define EXP2_07_PIN PC13 +#define EXP2_08_PIN -1 + +// +// Onboard SD card +// Must use soft SPI because Marlin's default hardware SPI is tied to LCD's EXP2 +// +#if SD_CONNECTION_IS(LCD) + #define SDSS EXP2_04_PIN + #define SD_SS_PIN SDSS + #define SD_SCK_PIN EXP2_02_PIN + #define SD_MISO_PIN EXP2_01_PIN + #define SD_MOSI_PIN EXP2_06_PIN + #define SD_DETECT_PIN EXP2_07_PIN +#elif SD_CONNECTION_IS(ONBOARD) + #define SD_SCK_PIN PA5 + #define SD_MISO_PIN PA6 + #define SD_MOSI_PIN PA7 + #define ONBOARD_SD_CS_PIN PA4 // Chip select for "System" SD card + #define SD_SS_PIN ONBOARD_SD_CS_PIN +#elif SD_CONNECTION_IS(CUSTOM_CABLE) + #error "No custom SD drive cable defined for this board." +#endif + +// +// LCDs and Controllers +// +#if IS_TFTGLCD_PANEL + + #if ENABLED(TFTGLCD_PANEL_SPI) + #define TFTGLCD_CS EXP2_03_PIN + #endif + +#elif HAS_WIRED_LCD + + #define BEEPER_PIN EXP1_01_PIN + #define BTN_ENC EXP1_02_PIN + + #if ENABLED(CR10_STOCKDISPLAY) + + #define LCD_PINS_RS EXP1_07_PIN + + #define BTN_EN1 EXP1_03_PIN + #define BTN_EN2 EXP1_05_PIN + + #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_D4 EXP1_06_PIN + + #elif ENABLED(MKS_MINI_12864) + + #define DOGLCD_A0 EXP1_07_PIN + #define DOGLCD_CS EXP1_06_PIN + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #else + + #define LCD_PINS_RS EXP1_04_PIN + + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_D4 EXP1_05_PIN + + #if ENABLED(FYSETC_MINI_12864) + #define DOGLCD_CS EXP1_03_PIN + #define DOGLCD_A0 EXP1_04_PIN + //#define LCD_BACKLIGHT_PIN -1 + + #define FORCE_SOFT_SPI // Use this if default of hardware SPI causes display problems + // results in LCD soft SPI mode 3, SD soft SPI mode 0 + + #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. + #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #ifndef RGB_LED_R_PIN + #define RGB_LED_R_PIN EXP1_06_PIN + #endif + #ifndef RGB_LED_G_PIN + #define RGB_LED_G_PIN EXP1_07_PIN + #endif + #ifndef RGB_LED_B_PIN + #define RGB_LED_B_PIN EXP1_08_PIN + #endif + #elif ENABLED(FYSETC_MINI_12864_2_1) + #define NEOPIXEL_PIN EXP1_06_PIN + #endif + #endif // !FYSETC_MINI_12864 + + #if IS_ULTIPANEL + #define LCD_PINS_D5 EXP1_06_PIN + #define LCD_PINS_D6 EXP1_07_PIN + #define LCD_PINS_D7 EXP1_08_PIN + + #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define BTN_ENC_EN LCD_PINS_D7 // Detect the presence of the encoder + #endif + + #endif + + #endif + +#endif // HAS_WIRED_LCD + +// Alter timing for graphical display +#if IS_U8GLIB_ST7920 + #ifndef BOARD_ST7920_DELAY_1 + #define BOARD_ST7920_DELAY_1 120 + #endif + #ifndef BOARD_ST7920_DELAY_2 + #define BOARD_ST7920_DELAY_2 80 + #endif + #ifndef BOARD_ST7920_DELAY_3 + #define BOARD_ST7920_DELAY_3 580 + #endif +#endif + +// +// NeoPixel LED +// +#ifndef NEOPIXEL_PIN + #define NEOPIXEL_PIN PD0 +#endif + +#ifndef NEOPIXEL2_PIN + #define NEOPIXEL2_PIN PD1 +#endif diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h new file mode 100644 index 0000000000..f4ce5a16d3 --- /dev/null +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h @@ -0,0 +1,341 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "env_validate.h" + +#ifndef BOARD_INFO_NAME + #define BOARD_INFO_NAME "BTT Manta M5P V1.0" +#endif + +#define USES_DIAG_JUMPERS + +// Ignore temp readings during development. +//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 + +// +// EEPROM +// +#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) + #undef NO_EEPROM_SELECTED + #ifndef FLASH_EEPROM_EMULATION + #define FLASH_EEPROM_EMULATION + #endif + #define EEPROM_PAGE_SIZE (0x800UL) // 2K + #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) + #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE +#endif + +// +// Servos +// +#define SERVO0_PIN PC15 // PROBE + +// +// Probe enable +// +#if ENABLED(PROBE_ENABLE_DISABLE) + #ifndef PROBE_ENABLE_PIN + #define PROBE_ENABLE_PIN SERVO0_PIN + #endif +#endif + +// +// Trinamic StallGuard pins +// +#define X_DIAG_PIN PD3 // MIN1 +#define Y_DIAG_PIN PD2 // MIN2 +#define Z_DIAG_PIN PC3 // MIN3 +#define E0_DIAG_PIN PC2 // MIN4 +#define E1_DIAG_PIN -1 + +// +// Limit Switches +// +#define X_STOP_PIN X_DIAG_PIN // MIN1 +#define Y_STOP_PIN Y_DIAG_PIN // MIN1 +#define Z_STOP_PIN Z_DIAG_PIN // MIN3 + +// +// Z Probe (when not Z_STOP_PIN) +// +#ifndef Z_MIN_PROBE_PIN + #define Z_MIN_PROBE_PIN PC13 // PROBE + //#define Z_MIN_PROBE_PIN PC15 // IND-DET (with adjustable pullup set via jumper) +#endif + +// +// Filament Runout Sensor +// +#ifndef FIL_RUNOUT_PIN + #define FIL_RUNOUT_PIN E0_DIAG_PIN // MIN4 +#endif + +// +// Steppers +// +#define X_STEP_PIN PC8 +#define X_DIR_PIN PC9 +#define X_ENABLE_PIN PA15 +#ifndef X_CS_PIN + #define X_CS_PIN PD9 +#endif + +#define Y_STEP_PIN PA10 +#define Y_DIR_PIN PA14 +#define Y_ENABLE_PIN PA13 +#ifndef Y_CS_PIN + #define Y_CS_PIN PD8 +#endif + +#define Z_STEP_PIN PC6 +#define Z_DIR_PIN PC7 +#define Z_ENABLE_PIN PA9 +#ifndef Z_CS_PIN + #define Z_CS_PIN PB10 +#endif + +#define E0_STEP_PIN PB12 +#define E0_DIR_PIN PB11 +#define E0_ENABLE_PIN PA8 +#ifndef E0_CS_PIN + #define E0_CS_PIN PB2 +#endif + +#define E1_STEP_PIN PB0 +#define E1_DIR_PIN PB1 +#define E1_ENABLE_PIN PC4 +#ifndef E1_CS_PIN + #define E1_CS_PIN PA6 +#endif + +// +// Software SPI pins for TMC2130 stepper drivers +// +#if ENABLED(TMC_USE_SW_SPI) + #ifndef TMC_SW_MOSI + #define TMC_SW_MOSI PB15 // Shared with SPI header, Pin 5 (SPI2) + #endif + #ifndef TMC_SW_MISO + #define TMC_SW_MISO PB14 // Shared with SPI header, Pin 6 (SPI2) + #endif + #ifndef TMC_SW_SCK + #define TMC_SW_SCK PB13 // Shared with SPI header, Pin 4 (SPI2) + #endif +#endif + +#if HAS_TMC_UART + #define X_SERIAL_TX_PIN PD9 // X_CS_PIN + #define X_SERIAL_RX_PIN X_SERIAL_TX_PIN + + #define Y_SERIAL_TX_PIN PD8 // Y_CS_PIN + #define Y_SERIAL_RX_PIN Y_SERIAL_TX_PIN + + #define Z_SERIAL_TX_PIN PB10 // Z_CS_PIN + #define Z_SERIAL_RX_PIN Z_SERIAL_TX_PIN + + #define E0_SERIAL_TX_PIN PB2 // E0_CS_PIN + #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN + + #define E1_SERIAL_TX_PIN PA6 // E1_CS_PIN + #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN + + // Reduce baud rate to improve software serial reliability + #define TMC_BAUD_RATE 19200 +#endif + +// +// Temperature Sensors +// +#define TEMP_0_PIN PA1 // Analog Input "TH0" +#define TEMP_1_PIN PA2 // Analog Input "TH1" +#define TEMP_BED_PIN PA0 // Analog Input "TB" + +// +// Heaters / Fans +// +#define HEATER_0_PIN PC5 // "HE0" +#define HEATER_1_PIN PA7 // "HE1" +#define HEATER_BED_PIN PA5 // "HB" + +#define FAN_PIN PA4 // "FAN0" +#define FAN1_PIN PA3 // "FAN1" + +// +// Auto fans +// +#ifndef E0_AUTO_FAN_PIN + #define E0_AUTO_FAN_PIN FAN1_PIN +#endif + +/** + * ------ ------ + * (BEEPER) PD5 | 1 2 | PD4 (BTN_ENC) (MISO) PB14 | 1 2 | PB13 (SCK) + * (LCD_EN) PB3 | 3 4 | PD6 (LCD_RS) (BTN_EN1) PB8 | 3 4 | PB9 (SD_SS) + * (LCD_D4) PB5 | 5 6 PB4 (LCD_D5) (BTN_EN2) PC10 | 5 6 PB15 (MOSI) + * (LCD_D6) PB7 | 7 8 | PB6 (LCD_D7) (SD_DETECT) PC12 | 7 8 | PF2 + * GND | 9 10 | 5V GND | 9 10 | -- + * ------ ------ + * EXP1 EXP2 + */ +#define EXP1_01_PIN PD5 +#define EXP1_02_PIN PD4 +#define EXP1_03_PIN PB3 +#define EXP1_04_PIN PD6 +#define EXP1_05_PIN PB5 +#define EXP1_06_PIN PB4 +#define EXP1_07_PIN PB7 +#define EXP1_08_PIN PB6 + +#define EXP2_01_PIN PB14 +#define EXP2_02_PIN PB13 +#define EXP2_03_PIN PB8 +#define EXP2_04_PIN PB9 +#define EXP2_05_PIN PC10 +#define EXP2_06_PIN PB15 +#define EXP2_07_PIN PC12 +#define EXP2_08_PIN -1 + +// +// Onboard SD card +// Must use soft SPI because Marlin's default hardware SPI is tied to LCD's EXP2 +// +#if SD_CONNECTION_IS(LCD) + #define SDSS EXP2_04_PIN + #define SD_SS_PIN SDSS + #define SD_SCK_PIN EXP2_02_PIN + #define SD_MISO_PIN EXP2_01_PIN + #define SD_MOSI_PIN EXP2_06_PIN + #define SD_DETECT_PIN EXP2_07_PIN +#elif SD_CONNECTION_IS(ONBOARD) + #define SD_SCK_PIN PB13 + #define SD_MISO_PIN PB14 + #define SD_MOSI_PIN PB15 + #define ONBOARD_SD_CS_PIN PC1 // Chip select for "System" SD card + #define SD_SS_PIN ONBOARD_SD_CS_PIN +#elif SD_CONNECTION_IS(CUSTOM_CABLE) + #error "No custom SD drive cable defined for this board." +#endif + +// +// LCDs and Controllers +// +#if IS_TFTGLCD_PANEL + + #if ENABLED(TFTGLCD_PANEL_SPI) + #define TFTGLCD_CS EXP2_03_PIN + #endif + +#elif HAS_WIRED_LCD + + #define BEEPER_PIN EXP1_01_PIN + #define BTN_ENC EXP1_02_PIN + + #if ENABLED(CR10_STOCKDISPLAY) + + #define LCD_PINS_RS EXP1_07_PIN + + #define BTN_EN1 EXP1_03_PIN + #define BTN_EN2 EXP1_05_PIN + + #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_D4 EXP1_06_PIN + + #elif ENABLED(MKS_MINI_12864) + + #define DOGLCD_A0 EXP1_07_PIN + #define DOGLCD_CS EXP1_06_PIN + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #else + + #define LCD_PINS_RS EXP1_04_PIN + + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_D4 EXP1_05_PIN + + #if ENABLED(FYSETC_MINI_12864) + #define DOGLCD_CS EXP1_03_PIN + #define DOGLCD_A0 EXP1_04_PIN + //#define LCD_BACKLIGHT_PIN -1 + + #define FORCE_SOFT_SPI // Use this if default of hardware SPI causes display problems + // results in LCD soft SPI mode 3, SD soft SPI mode 0 + + #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. + #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #ifndef RGB_LED_R_PIN + #define RGB_LED_R_PIN EXP1_06_PIN + #endif + #ifndef RGB_LED_G_PIN + #define RGB_LED_G_PIN EXP1_07_PIN + #endif + #ifndef RGB_LED_B_PIN + #define RGB_LED_B_PIN EXP1_08_PIN + #endif + #elif ENABLED(FYSETC_MINI_12864_2_1) + #define NEOPIXEL_PIN EXP1_06_PIN + #endif + #endif // !FYSETC_MINI_12864 + + #if IS_ULTIPANEL + #define LCD_PINS_D5 EXP1_06_PIN + #define LCD_PINS_D6 EXP1_07_PIN + #define LCD_PINS_D7 EXP1_08_PIN + + #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define BTN_ENC_EN LCD_PINS_D7 // Detect the presence of the encoder + #endif + + #endif + + #endif + +#endif // HAS_WIRED_LCD + +// Alter timing for graphical display +#if IS_U8GLIB_ST7920 + #ifndef BOARD_ST7920_DELAY_1 + #define BOARD_ST7920_DELAY_1 120 + #endif + #ifndef BOARD_ST7920_DELAY_2 + #define BOARD_ST7920_DELAY_2 80 + #endif + #ifndef BOARD_ST7920_DELAY_3 + #define BOARD_ST7920_DELAY_3 580 + #endif +#endif + +// +// NeoPixel LED +// +#ifndef NEOPIXEL_PIN + #define NEOPIXEL_PIN PC11 // RGB1 +#endif + +#ifndef NEOPIXEL2_PIN + #define NEOPIXEL2_PIN PC14 // RGB2 +#endif diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_0.h new file mode 100644 index 0000000000..4f8d30b6b7 --- /dev/null +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_0.h @@ -0,0 +1,79 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +// Include common Manta M8P pins +#include "pins_BTT_MANTA_M8P_common.h" + +#ifndef BOARD_INFO_NAME + #define BOARD_INFO_NAME "BTT Manta M8P V1.0" +#endif + +// +// Steppers +// + +#define E1_STEP_PIN PA10 // M6 +#define E1_DIR_PIN PD15 +#define E1_ENABLE_PIN PA15 +#ifndef E1_CS_PIN + #define E1_CS_PIN PF8 +#endif + +#define E2_STEP_PIN PD12 // M7 +#define E2_DIR_PIN PD11 +#define E2_ENABLE_PIN PD14 +#ifndef E2_CS_PIN + #define E2_CS_PIN PD13 +#endif + +#define E3_STEP_PIN PD10 // M8 +#define E3_DIR_PIN PD8 +#define E3_ENABLE_PIN PD9 +#ifndef E3_CS_PIN + #define E3_CS_PIN PC7 +#endif + +#if HAS_TMC_UART + #define E1_SERIAL_TX_PIN PF8 + #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN + + #define E2_SERIAL_TX_PIN PD13 + #define E2_SERIAL_RX_PIN E2_SERIAL_TX_PIN + + #define E3_SERIAL_TX_PIN PC7 + #define E3_SERIAL_RX_PIN E3_SERIAL_TX_PIN + + // Reduce baud rate to improve software serial reliability + #define TMC_BAUD_RATE 19200 +#endif + +// +// NeoPixel LED +// +#ifndef NEOPIXEL_PIN + #define NEOPIXEL_PIN PC6 +#endif + +#ifndef NEOPIXEL2_PIN + #define NEOPIXEL2_PIN PA9 +#endif diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_1.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_1.h new file mode 100644 index 0000000000..a21bb59e69 --- /dev/null +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_1.h @@ -0,0 +1,78 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +// Include common Manta M8P pins +#include "pins_BTT_MANTA_M8P_common.h" + +#ifndef BOARD_INFO_NAME + #define BOARD_INFO_NAME "BTT Manta M8P V1.1" +#endif + +// +// Steppers +// +#define E1_STEP_PIN PA10 // M6 +#define E1_DIR_PIN PA14 +#define E1_ENABLE_PIN PA15 +#ifndef E1_CS_PIN + #define E1_CS_PIN PF8 +#endif + +#define E2_STEP_PIN PD11 // M7 +#define E2_DIR_PIN PD9 +#define E2_ENABLE_PIN PD15 +#ifndef E2_CS_PIN + #define E2_CS_PIN PD14 +#endif + +#define E3_STEP_PIN PD8 // M8 +#define E3_DIR_PIN PC6 +#define E3_ENABLE_PIN PC7 +#ifndef E3_CS_PIN + #define E3_CS_PIN PD10 +#endif + +#if HAS_TMC_UART + #define E1_SERIAL_TX_PIN PF8 + #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN + + #define E2_SERIAL_TX_PIN PD14 + #define E2_SERIAL_RX_PIN E2_SERIAL_TX_PIN + + #define E3_SERIAL_TX_PIN PD10 + #define E3_SERIAL_RX_PIN E3_SERIAL_TX_PIN + + // Reduce baud rate to improve software serial reliability + #define TMC_BAUD_RATE 19200 +#endif + +// +// NeoPixel LED +// +#ifndef NEOPIXEL_PIN + #define NEOPIXEL_PIN PA9 +#endif + +#ifndef NEOPIXEL2_PIN + #define NEOPIXEL2_PIN PB15 +#endif diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h new file mode 100644 index 0000000000..0d4a74b6f9 --- /dev/null +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h @@ -0,0 +1,397 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "env_validate.h" + +//#define BOARD_CUSTOM_BUILD_FLAGS -DTONE_CHANNEL=4 -DTONE_TIMER=4 -DTIMER_TONE=4 + +#define USES_DIAG_JUMPERS + +// Ignore temp readings during development. +//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 + +// +// EEPROM +// +#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) + #undef NO_EEPROM_SELECTED + #ifndef FLASH_EEPROM_EMULATION + #define FLASH_EEPROM_EMULATION + #endif + #define EEPROM_PAGE_SIZE (0x800UL) // 2K + #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) + #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE +#endif + +// +// Servos +// +#define SERVO0_PIN PB1 // PROBE + +// +// Probe enable +// +#if ENABLED(PROBE_ENABLE_DISABLE) + #ifndef PROBE_ENABLE_PIN + #define PROBE_ENABLE_PIN SERVO0_PIN + #endif +#endif + +// +// Trinamic Stallguard pins +// +#define X_DIAG_PIN PF3 // MIN1 +#define Y_DIAG_PIN PF4 // MIN2 +#define Z_DIAG_PIN PF5 // MIN3 +#define Z2_DIAG_PIN PC0 // MIN4 +#define E0_DIAG_PIN PC1 // MIN5 +#define E1_DIAG_PIN PC2 // MIN6 + +// +// Z Probe (when not Z_MIN_PIN) +// +#ifndef Z_MIN_PROBE_PIN + #define Z_MIN_PROBE_PIN PB2 // PROBE + //#define Z_MIN_PROBE_PIN PF6 // IND-PROBE (with adjustable voltage & pullup set via jumpers) +#endif + +// +// Check for additional used endstop pins +// +#if HAS_EXTRA_ENDSTOPS + #define _ENDSTOP_IS_ANY(ES) X2_USE_ENDSTOP == ES || Y2_USE_ENDSTOP == ES || Z2_USE_ENDSTOP == ES || Z3_USE_ENDSTOP == ES || Z4_USE_ENDSTOP == ES + #if _ENDSTOP_IS_ANY(_XMIN_) || _ENDSTOP_IS_ANY(_XMAX_) + #define NEEDS_X_MINMAX 1 + #endif + #if _ENDSTOP_IS_ANY(_YMIN_) || _ENDSTOP_IS_ANY(_YMAX_) + #define NEEDS_Y_MINMAX 1 + #endif + #undef _ENDSTOP_IS_ANY +#endif + +// +// Limit Switches +// +#ifdef X_STALL_SENSITIVITY + #define X_STOP_PIN X_DIAG_PIN + #if X_HOME_TO_MIN + #define X_MAX_PIN E0_DIAG_PIN // MIN5 + #else + #define X_MIN_PIN E0_DIAG_PIN // MIN5 + #endif +#elif EITHER(DUAL_X_CARRIAGE, NEEDS_X_MINMAX) + #ifndef X_MIN_PIN + #define X_MIN_PIN X_DIAG_PIN // MIN1 + #endif + #ifndef X_MAX_PIN + #define X_MAX_PIN E0_DIAG_PIN // MIN5 + #endif +#else + #define X_STOP_PIN X_DIAG_PIN // MIN1 +#endif + +#ifdef Y_STALL_SENSITIVITY + #define Y_STOP_PIN Y_DIAG_PIN + #if Y_HOME_TO_MIN + #define Y_MAX_PIN E1_DIAG_PIN // MIN6 + #else + #define Y_MIN_PIN E1_DIAG_PIN // MIN6 + #endif +#elif NEEDS_Y_MINMAX + #ifndef Y_MIN_PIN + #define Y_MIN_PIN Y_DIAG_PIN // MIN2 + #endif + #ifndef Y_MAX_PIN + #define Y_MAX_PIN E1_DIAG_PIN // MIN6 + #endif +#else + #define Y_STOP_PIN Y_DIAG_PIN // MIN2 +#endif + +#define Z_STOP_PIN Z_DIAG_PIN // MIN3 + +#undef NEEDS_X_MINMAX +#undef NEEDS_Y_MINMAX + +// +// Filament Runout Sensors +// +#define FIL_RUNOUT_PIN PC1 // MIN5 +#define FIL_RUNOUT2_PIN PC2 // MIN6 + +#ifndef PS_ON_PIN + #define PS_ON_PIN PC3 // PS-ON +#endif + +// +// Steppers +// +#define X_STEP_PIN PE2 // M1 +#define X_DIR_PIN PB4 +#define X_ENABLE_PIN PC11 +#ifndef X_CS_PIN + #define X_CS_PIN PC10 +#endif + +#define Y_STEP_PIN PF12 // M2 +#define Y_DIR_PIN PF11 +#define Y_ENABLE_PIN PB3 +#ifndef Y_CS_PIN + #define Y_CS_PIN PF13 +#endif + +#define Z_STEP_PIN PD7 // M3 +#define Z_DIR_PIN PD6 +#define Z_ENABLE_PIN PF10 +#ifndef Z_CS_PIN + #define Z_CS_PIN PF9 +#endif + +#define Z2_STEP_PIN PD3 // M4 +#define Z2_DIR_PIN PD2 +#define Z2_ENABLE_PIN PD5 +#ifndef Z2_CS_PIN + #define Z2_CS_PIN PD4 +#endif + +#define E0_STEP_PIN PC9 // M5 +#define E0_DIR_PIN PC8 +#define E0_ENABLE_PIN PD1 +#ifndef E0_CS_PIN + #define E0_CS_PIN PD0 +#endif + +// +// Software SPI pins for TMC2130 stepper drivers +// +#if ENABLED(TMC_USE_SW_SPI) + #ifndef TMC_SW_MOSI + #define TMC_SW_MOSI PA7 + #endif + #ifndef TMC_SW_MISO + #define TMC_SW_MISO PA6 + #endif + #ifndef TMC_SW_SCK + #define TMC_SW_SCK PA5 + #endif +#endif + +#if HAS_TMC_UART + #define X_SERIAL_TX_PIN PC10 + #define X_SERIAL_RX_PIN X_SERIAL_TX_PIN + + #define Y_SERIAL_TX_PIN PF13 + #define Y_SERIAL_RX_PIN Y_SERIAL_TX_PIN + + #define Z_SERIAL_TX_PIN PF9 + #define Z_SERIAL_RX_PIN Z_SERIAL_TX_PIN + + #define Z2_SERIAL_TX_PIN PD4 + #define Z2_SERIAL_RX_PIN Z2_SERIAL_TX_PIN + + #define E0_SERIAL_TX_PIN PD0 + #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN + + // Reduce baud rate to improve software serial reliability + #define TMC_BAUD_RATE 19200 +#endif + +// +// Temperature Sensors +// +#define TEMP_BED_PIN PA0 // TB +#define TEMP_0_PIN PA1 // TH0 +#define TEMP_1_PIN PA2 // TH1 +#define TEMP_2_PIN PA3 // TH2 +#define TEMP_3_PIN PA4 // TH3 + +// +// Heaters / Fans +// +#define HEATER_BED_PIN PB7 // BED-OUT +#define HEATER_0_PIN PE3 // HE0 +#define HEATER_1_PIN PB5 // HE1 +#define HEATER_2_PIN PB6 // HE2 +#define HEATER_3_PIN PE1 // HE3 + +#define FAN_PIN PE6 // FAN0 +#define FAN1_PIN PE0 // FAN1 +#define FAN2_PIN PC12 // FAN2 +#define FAN3_PIN PE5 // FAN3 +#define FAN4_PIN PE4 // FAN4 +#define FAN5_PIN PB8 // FAN5 +#define FAN6_PIN PB9 // FAN6 + +// +// SD Support +// +#ifndef SDCARD_CONNECTION + #if HAS_WIRED_LCD + #define SDCARD_CONNECTION LCD + #else + #define SDCARD_CONNECTION ONBOARD + #endif +#endif + +/** + * ------ ------ + * (BEEPER) PE9 | 1 2 | PE10 (BTN_ENC) (MISO) PB14 | 1 2 | PB13 (SCK) + * (LCD_EN) PE11 | 3 4 | PE12 (LCD_RS) (BTN_EN1) PF7 | 3 4 | PB12 (SD_SS) + * (LCD_D4) PE13 | 5 6 PE14 (LCD_D5) (BTN_EN2) PE7 | 5 6 PB11 (MOSI) + * (LCD_D6) PE15 | 7 8 | PB10 (LCD_D7) (SD_DETECT) PE8 | 7 8 | RESET + * GND | 9 10 | 5V GND | 9 10 | -- + * ------ ------ + * EXP1 EXP2 + */ +#define EXP1_01_PIN PE9 +#define EXP1_02_PIN PE10 +#define EXP1_03_PIN PE11 +#define EXP1_04_PIN PE12 +#define EXP1_05_PIN PE13 +#define EXP1_06_PIN PE14 +#define EXP1_07_PIN PE15 +#define EXP1_08_PIN PB10 + +#define EXP2_01_PIN PB14 +#define EXP2_02_PIN PB13 +#define EXP2_03_PIN PF7 +#define EXP2_04_PIN PB12 +#define EXP2_05_PIN PE7 +#define EXP2_06_PIN PB11 +#define EXP2_07_PIN PE8 +#define EXP2_08_PIN -1 + +// +// Onboard SD card +// Must use soft SPI because Marlin's default hardware SPI is tied to LCD's EXP2 +// +#if SD_CONNECTION_IS(LCD) + #define SDSS EXP2_04_PIN + #define SD_SS_PIN SDSS + #define SD_SCK_PIN EXP2_02_PIN + #define SD_MISO_PIN EXP2_01_PIN + #define SD_MOSI_PIN EXP2_06_PIN + #define SD_DETECT_PIN EXP2_07_PIN +#elif SD_CONNECTION_IS(ONBOARD) + #define SD_DETECT_PIN PE8 + #define SD_SCK_PIN PB13 + #define SD_MISO_PIN PB14 + #define SD_MOSI_PIN PB11 + #define ONBOARD_SD_CS_PIN PB14 // Chip select for "System" SD card + #define SD_SS_PIN ONBOARD_SD_CS_PIN +#elif SD_CONNECTION_IS(CUSTOM_CABLE) + #error "No custom SD drive cable defined for this board." +#endif + +// +// LCDs and Controllers +// +#if IS_TFTGLCD_PANEL + + #if ENABLED(TFTGLCD_PANEL_SPI) + #define TFTGLCD_CS EXP2_03_PIN + #endif + +#elif HAS_WIRED_LCD + + #define BEEPER_PIN EXP1_01_PIN + #define BTN_ENC EXP1_02_PIN + + #if ENABLED(CR10_STOCKDISPLAY) + + #define LCD_PINS_RS EXP1_07_PIN + + #define BTN_EN1 EXP1_03_PIN + #define BTN_EN2 EXP1_05_PIN + + #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_D4 EXP1_06_PIN + + #elif ENABLED(MKS_MINI_12864) + + #define DOGLCD_A0 EXP1_07_PIN + #define DOGLCD_CS EXP1_06_PIN + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #else + + #define LCD_PINS_RS EXP1_04_PIN + + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_D4 EXP1_05_PIN + + #if ENABLED(FYSETC_MINI_12864) + #define DOGLCD_CS EXP1_03_PIN + #define DOGLCD_A0 EXP1_04_PIN + //#define LCD_BACKLIGHT_PIN -1 + + #define FORCE_SOFT_SPI // Use this if default of hardware SPI causes display problems + // results in LCD soft SPI mode 3, SD soft SPI mode 0 + + #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. + #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #ifndef RGB_LED_R_PIN + #define RGB_LED_R_PIN EXP1_06_PIN + #endif + #ifndef RGB_LED_G_PIN + #define RGB_LED_G_PIN EXP1_07_PIN + #endif + #ifndef RGB_LED_B_PIN + #define RGB_LED_B_PIN EXP1_08_PIN + #endif + #elif ENABLED(FYSETC_MINI_12864_2_1) + #define NEOPIXEL_PIN EXP1_06_PIN + #endif + #endif // !FYSETC_MINI_12864 + + #if IS_ULTIPANEL + #define LCD_PINS_D5 EXP1_06_PIN + #define LCD_PINS_D6 EXP1_07_PIN + #define LCD_PINS_D7 EXP1_08_PIN + + #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define BTN_ENC_EN LCD_PINS_D7 // Detect the presence of the encoder + #endif + + #endif + + #endif + +#endif // HAS_WIRED_LCD + +// Alter timing for graphical display +#if IS_U8GLIB_ST7920 + #ifndef BOARD_ST7920_DELAY_1 + #define BOARD_ST7920_DELAY_1 120 + #endif + #ifndef BOARD_ST7920_DELAY_2 + #define BOARD_ST7920_DELAY_2 80 + #endif + #ifndef BOARD_ST7920_DELAY_3 + #define BOARD_ST7920_DELAY_3 580 + #endif +#endif diff --git a/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h b/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h index f931d9924a..f71b7b40eb 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h @@ -21,6 +21,8 @@ */ #pragma once +#include "env_validate.h" + //#define BOARD_CUSTOM_BUILD_FLAGS -DTONE_CHANNEL=4 -DTONE_TIMER=4 -DTIMER_TONE=4 #ifndef BOARD_INFO_NAME diff --git a/buildroot/share/PlatformIO/boards/marlin_STM32G0B1VE.json b/buildroot/share/PlatformIO/boards/marlin_STM32G0B1VE.json new file mode 100644 index 0000000000..a3ac6ea679 --- /dev/null +++ b/buildroot/share/PlatformIO/boards/marlin_STM32G0B1VE.json @@ -0,0 +1,47 @@ +{ + "build": { + "core": "stm32", + "cpu": "cortex-m0plus", + "extra_flags": "-DSTM32G0xx -DSTM32G0B1xx", + "f_cpu": "64000000L", + "framework_extra_flags": { + "arduino": "-D__CORTEX_SC=0" + }, + "mcu": "stm32g0b1vet6", + "product_line": "STM32G0B1xx", + "variant": "MARLIN_G0B1VE" + }, + "debug": { + "default_tools": [ + "stlink" + ], + "jlink_device": "STM32G0B1VE", + "onboard_tools": [ + "stlink" + ], + "openocd_target": "stm32g0x", + "svd_path": "STM32G0B1.svd" + }, + "frameworks": [ + "arduino", + "cmsis", + "libopencm3", + "stm32cube", + "zephyr" + ], + "name": "STM32G0B1VE", + "upload": { + "maximum_ram_size": 147456, + "maximum_size": 524288, + "protocol": "stlink", + "protocols": [ + "stlink", + "jlink", + "cmsis-dap", + "blackmagic", + "mbed" + ] + }, + "url": "https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32g0-series/stm32g0x1.html", + "vendor": "ST" +} diff --git a/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/PeripheralPins.c index eb95de1495..3187367a2d 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/PeripheralPins.c +++ b/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/PeripheralPins.c @@ -218,6 +218,7 @@ WEAK const PinMap PinMap_UART_TX[] = { {PC_12, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, {PD_3, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, {PD_5, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART2)}, + {PD_8, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, {PF_2, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART2)}, {NC, NP, 0} }; @@ -252,6 +253,7 @@ WEAK const PinMap PinMap_UART_RX[] = { {PC_11_ALT1, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART4)}, {PD_2, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, {PD_6, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART2)}, + {PD_9, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, {NC, NP, 0} }; #endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/variant_MARLIN_STM32G0B1RE.cpp b/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/variant_MARLIN_STM32G0B1RE.cpp index d18509f35f..fa4ebfa713 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/variant_MARLIN_STM32G0B1RE.cpp +++ b/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/variant_MARLIN_STM32G0B1RE.cpp @@ -130,14 +130,7 @@ WEAK void SystemClock_Config(void) RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; // Reset clock registers (in case bootloader has changed them) - RCC->CR |= RCC_CR_HSION; - while (!(RCC->CR & RCC_CR_HSIRDY)) - ; - RCC->CFGR = 0x00000000; - RCC->CR = RCC_CR_HSION; - while (RCC->CR & RCC_CR_PLLRDY) - ; - RCC->PLLCFGR = 0x00001000; + SystemInit(); /** Configure the main internal regulator output voltage */ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/variant_MARLIN_STM32G0B1RE.h b/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/variant_MARLIN_STM32G0B1RE.h index 6a26baff45..23cecd371a 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/variant_MARLIN_STM32G0B1RE.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/variant_MARLIN_STM32G0B1RE.h @@ -158,6 +158,9 @@ #endif // UART Definitions +//#define ENABLE_HWSERIAL1 done automatically by the #define SERIAL_UART_INSTANCE below +#define ENABLE_HWSERIAL3 + #ifndef SERIAL_UART_INSTANCE #define SERIAL_UART_INSTANCE 2 #endif @@ -171,6 +174,15 @@ #define PIN_SERIAL_TX PA2 #endif +// Optional PIN_SERIALn_RX and PIN_SERIALn_TX where 'n' is the U(S)ART number +// Used when user instantiate a hardware Serial using its peripheral name. +// Example: HardwareSerial mySerial(USART3); +// will use PIN_SERIAL3_RX and PIN_SERIAL3_TX if defined. +#define PIN_SERIAL1_RX PA3 +#define PIN_SERIAL1_TX PA2 +#define PIN_SERIAL3_RX PD9 +#define PIN_SERIAL3_TX PD8 + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/PeripheralPins.c new file mode 100644 index 0000000000..a6b1e44237 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/PeripheralPins.c @@ -0,0 +1,480 @@ +/* + ******************************************************************************* + * Copyright (c) 2020-2021, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ +/* + * Automatically generated from STM32G0B1V(B-C-E)Ix.xml, STM32G0B1V(B-C-E)Tx.xml + * STM32G0B1V(C-E)Ix.xml, STM32G0B1V(C-E)Tx.xml + * STM32G0C1V(C-E)Ix.xml, STM32G0C1V(C-E)Tx.xml + * CubeMX DB release 6.0.30 + */ +#if !defined(CUSTOM_PERIPHERAL_PINS) +#include "Arduino.h" +#include "PeripheralPins.h" + +/* ===== + * Notes: + * - The pins mentioned Px_y_ALTz are alternative possibilities which use other + * HW peripheral instances. You can use them the same way as any other "normal" + * pin (i.e. analogWrite(PA7_ALT1, 128);). + * + * - Commented lines are alternative possibilities which are not used per default. + * If you change them, you will have to know what you do + * ===== + */ + +//*** ADC *** + +#ifdef HAL_ADC_MODULE_ENABLED +WEAK const PinMap PinMap_ADC[] = { + {PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC1_IN0 + {PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1 + {PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2 + {PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3 + {PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4 + {PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5 + {PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6 + {PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7 + {PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8 + {PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9 + {PB_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10 + {PB_10, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11 + {PB_11, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15 + {PB_12, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16 + {PC_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17 + {PC_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 + {NC, NP, 0} +}; +#endif + +//*** DAC *** + +#ifdef HAL_DAC_MODULE_ENABLED +WEAK const PinMap PinMap_DAC[] = { + {PA_4, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC1_OUT1 + {PA_5, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC1_OUT2 + {NC, NP, 0} +}; +#endif + +//*** I2C *** + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SDA[] = { + {PA_6, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, + {PA_6_ALT1, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF9_I2C3)}, + {PA_10, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, + {PA_10_ALT1, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, + {PA_10_R, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, + {PA_10_R_ALT1, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, + {PA_12, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C2)}, + {PB_4, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, + {PB_4_ALT1, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C3)}, + {PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, + {PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, + {PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C2)}, + {PB_14, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C2)}, + {PC_1, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C3)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SCL[] = { + {PA_7, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, + {PA_7_ALT1, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF9_I2C3)}, + {PA_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, + {PA_9_ALT1, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, + {PA_9_R, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, + {PA_9_R_ALT1, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, + {PA_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C2)}, + {PB_3, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C2)}, + {PB_3_ALT1, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C3)}, + {PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, + {PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)}, + {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C2)}, + {PB_13, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C2)}, + {PC_0, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C3)}, + {NC, NP, 0} +}; +#endif + +//*** TIM *** + +#ifdef HAL_TIM_MODULE_ENABLED +WEAK const PinMap PinMap_TIM[] = { + {PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 1, 0)}, // TIM2_CH1 + {PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)}, // TIM2_CH2 + {PA_1_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM15, 1, 1)}, // TIM15_CH1N + {PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)}, // TIM2_CH3 + {PA_2_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM15, 1, 0)}, // TIM15_CH1 + {PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)}, // TIM2_CH4 + {PA_3_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM15, 2, 0)}, // TIM15_CH2 + {PA_4, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM14, 1, 0)}, // TIM14_CH1 + {PA_5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 1, 0)}, // TIM2_CH1 + {PA_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 1, 0)}, // TIM3_CH1 + {PA_6_ALT1, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM16, 1, 0)}, // TIM16_CH1 + {PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 1)}, // TIM1_CH1N + {PA_7_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 2, 0)}, // TIM3_CH2 + {PA_7_ALT2, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM14, 1, 0)}, // TIM14_CH1 + {PA_7_ALT3, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM17, 1, 0)}, // TIM17_CH1 + {PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 0)}, // TIM1_CH1 + {PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 0)}, // TIM1_CH2 + {PA_9_R, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 0)}, // TIM1_CH2 + {PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 0)}, // TIM1_CH3 + {PA_10_R, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 0)}, // TIM1_CH3 + {PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 4, 0)}, // TIM1_CH4 + {PA_15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 1, 0)}, // TIM2_CH1 + {PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 1)}, // TIM1_CH2N + {PB_0_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 3, 0)}, // TIM3_CH3 + {PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 1)}, // TIM1_CH3N + {PB_1_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 4, 0)}, // TIM3_CH4 + {PB_1_ALT2, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM14, 1, 0)}, // TIM14_CH1 + {PB_3, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + {PB_3_ALT1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)}, // TIM2_CH2 + {PB_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 1, 0)}, // TIM3_CH1 + {PB_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 2, 0)}, // TIM3_CH2 + {PB_6, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + {PB_6_ALT1, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM4, 1, 0)}, // TIM4_CH1 + {PB_6_ALT2, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM16, 1, 1)}, // TIM16_CH1N + {PB_7, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM4, 2, 0)}, // TIM4_CH2 + {PB_7_ALT1, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM17, 1, 1)}, // TIM17_CH1N + {PB_8, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM4, 3, 0)}, // TIM4_CH3 + {PB_8_ALT1, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM16, 1, 0)}, // TIM16_CH1 + {PB_9, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM4, 4, 0)}, // TIM4_CH4 + {PB_9_ALT1, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM17, 1, 0)}, // TIM17_CH1 + {PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)}, // TIM2_CH3 + {PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)}, // TIM2_CH4 + {PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 1)}, // TIM1_CH1N + {PB_13_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM15, 1, 1)}, // TIM15_CH1N + {PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 1)}, // TIM1_CH2N + {PB_14_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM15, 1, 0)}, // TIM15_CH1 + {PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 1)}, // TIM1_CH3N + {PB_15_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 1)}, // TIM15_CH1N + {PB_15_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM15, 2, 0)}, // TIM15_CH2 + {PC_1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM15, 1, 0)}, // TIM15_CH1 + {PC_2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM15, 2, 0)}, // TIM15_CH2 + {PC_4, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 1, 0)}, // TIM2_CH1 + {PC_5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)}, // TIM2_CH2 + {PC_6, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)}, // TIM2_CH3 + {PC_6_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 1, 0)}, // TIM3_CH1 + {PC_7, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)}, // TIM2_CH4 + {PC_7_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 2, 0)}, // TIM3_CH2 + {PC_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 0)}, // TIM1_CH1 + {PC_8_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 3, 0)}, // TIM3_CH3 + {PC_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 0)}, // TIM1_CH2 + {PC_9_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 4, 0)}, // TIM3_CH4 + {PC_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 0)}, // TIM1_CH3 + {PC_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 4, 0)}, // TIM1_CH4 + {PC_12, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM14, 1, 0)}, // TIM14_CH1 + {PD_0, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM16, 1, 0)}, // TIM16_CH1 + {PD_1, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM17, 1, 0)}, // TIM17_CH1 + {PD_2, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 1)}, // TIM1_CH1N + {PD_3, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 1)}, // TIM1_CH2N + {PD_4, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 1)}, // TIM1_CH3N + {PD_12, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 + {PD_13, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 + {PD_14, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 + {PD_15, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 + {PE_0, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM16, 1, 0)}, // TIM16_CH1 + {PE_1, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM17, 1, 0)}, // TIM17_CH1 + {PE_3, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 1, 0)}, // TIM3_CH1 + {PE_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 2, 0)}, // TIM3_CH2 + {PE_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 3, 0)}, // TIM3_CH3 + {PE_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 4, 0)}, // TIM3_CH4 + {PE_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PE_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 + {PE_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PE_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + {PE_12, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PE_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + {PE_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + {PF_0, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM14, 1, 0)}, // TIM14_CH1 + {PF_1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM15, 1, 1)}, // TIM15_CH1N + {PF_12, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM15, 1, 0)}, // TIM15_CH1 + {PF_13, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM15, 2, 0)}, // TIM15_CH2 + {NC, NP, 0} +}; +#endif + +//*** UART *** + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_TX[] = { + {PA_0, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART4)}, + {PA_2, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)}, + {PA_2_ALT1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)}, + {PA_4, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART6)}, + {PA_5, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, + {PA_9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, + {PA_9_R, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, + {PA_14, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_LPUART2)}, + {PA_14_ALT1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)}, + {PB_0, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART5)}, + {PB_2, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, + {PB_3, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, + {PB_6, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_LPUART2)}, + {PB_6_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)}, + {PB_8, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, + {PB_8_ALT1, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {PB_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, + {PB_11, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, + {PC_0, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART2)}, + {PC_0_ALT1, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART6)}, + {PC_1, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, + {PC_4, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, + {PC_4_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART3)}, + {PC_6, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART2)}, + {PC_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART3)}, + {PC_10_ALT1, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART4)}, + {PC_12, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, + {PD_3, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, + {PD_5, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART2)}, + {PD_8, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART3)}, + {PE_8, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART4)}, + {PE_10, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, + {PF_2, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART2)}, + {PF_4, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, + {PF_9, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART6)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_RX[] = { + {PA_1, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART4)}, + {PA_3, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)}, + {PA_3_ALT1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)}, + {PA_5, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART6)}, + {PA_10, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, + {PA_10_R, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, + {PA_13, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_LPUART2)}, + {PA_15, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)}, + {PB_0, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, + {PB_1, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART5)}, + {PB_4, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, + {PB_7, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_LPUART2)}, + {PB_7_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)}, + {PB_9, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, + {PB_9_ALT1, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {PB_10, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, + {PB_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, + {PC_0, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, + {PC_1, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART2)}, + {PC_1_ALT1, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART6)}, + {PC_5, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, + {PC_5_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART3)}, + {PC_7, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART2)}, + {PC_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART3)}, + {PC_11_ALT1, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART4)}, + {PD_2, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, + {PD_6, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART2)}, + {PD_9, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART3)}, + {PE_9, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART4)}, + {PE_11, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, + {PF_3, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART2)}, + {PF_5, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, + {PF_10, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART6)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_RTS[] = { + {PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)}, + {PA_7, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART6)}, + {PA_12, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, + {PA_15, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_USART3)}, + {PA_15_ALT1, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART4)}, + {PB_1, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)}, + {PB_1_ALT1, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_LPUART2)}, + {PB_1_ALT2, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, + {PB_3, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)}, + {PB_5, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART5)}, + {PB_12, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, + {PB_14, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, + {PB_14_ALT1, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {PC_9, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART2)}, + {PD_2, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART3)}, + {PD_4, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART2)}, + {PD_4_ALT1, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, + {PD_12, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART3)}, + {PD_15, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART2)}, + {PE_7, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, + {PF_2, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART2)}, + {PF_3, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART6)}, + {PF_6, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, + {PF_11, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART6)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_CTS[] = { + {PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)}, + {PA_6, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)}, + {PA_6_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, + {PA_6_ALT2, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART6)}, + {PA_11, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)}, + {PB_0, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_LPUART2)}, + {PB_4, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)}, + {PB_6, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART5)}, + {PB_7, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART4)}, + {PB_13, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, + {PB_13_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)}, + {PB_15, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {PC_8, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART2)}, + {PD_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART2)}, + {PD_5, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, + {PD_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART3)}, + {PD_14, LPUART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART2)}, + {PF_7, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_LPUART1)}, + {PF_7_ALT1, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART5)}, + {PF_12, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART6)}, + {NC, NP, 0} +}; +#endif + +//*** SPI *** + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MOSI[] = { + {PA_2, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {PA_4, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, + {PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {PA_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, + {PA_10_R, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, + {PA_12, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {PB_5_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SPI3)}, + {PB_7, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, + {PB_11, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, + {PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, + {PC_3, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, + {PC_12, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI3)}, + {PD_4, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, + {PD_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI1)}, + {PE_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MISO[] = { + {PA_3, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, + {PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {PA_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI2)}, + {PA_9_R, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI2)}, + {PA_11, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {PB_2, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, + {PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {PB_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SPI3)}, + {PB_6, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI2)}, + {PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, + {PC_2, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, + {PC_11, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI3)}, + {PD_3, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, + {PD_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI1)}, + {PE_14, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_SCLK[] = { + {PA_0, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, + {PA_1, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {PB_3_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SPI3)}, + {PB_8, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, + {PB_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, + {PC_10, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI3)}, + {PD_1, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, + {PD_8, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI1)}, + {PE_13, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_SSEL[] = { + {PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {PA_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SPI3)}, + {PA_8, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, + {PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {PA_15_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SPI3)}, + {PB_0, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {PB_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)}, + {PD_0, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)}, + {PD_9, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI1)}, + {PE_12, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)}, + {NC, NP, 0} +}; +#endif + +//*** FDCAN *** + +#ifdef HAL_FDCAN_MODULE_ENABLED +WEAK const PinMap PinMap_CAN_RD[] = { + {PA_11, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, + {PB_0, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, + {PB_5, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, + {PB_8, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, + {PB_12, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, + {PC_2, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, + {PC_4, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, + {PD_0, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, + {PD_12, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, + {PD_14, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_FDCAN_MODULE_ENABLED +WEAK const PinMap PinMap_CAN_TD[] = { + {PA_12, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, + {PB_1, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, + {PB_6, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, + {PB_9, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, + {PB_13, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, + {PC_3, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, + {PC_5, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, + {PD_1, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, + {PD_13, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN1)}, + {PD_15, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_FDCAN2)}, + {NC, NP, 0} +}; +#endif + +//*** No ETHERNET *** + +//*** No QUADSPI *** + +//*** USB *** + +#if defined(HAL_PCD_MODULE_ENABLED) || defined(HAL_HCD_MODULE_ENABLED) +WEAK const PinMap PinMap_USB_DRD_FS[] = { + {PA_4, USB_DRD_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_USB)}, // USB_NOE + {PA_11, USB_DRD_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_DM + {PA_12, USB_DRD_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_DP + {PA_13, USB_DRD_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_USB)}, // USB_NOE + {PA_15, USB_DRD_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USB)}, // USB_NOE + {PC_9, USB_DRD_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USB)}, // USB_NOE + {NC, NP, 0} +}; +#endif + +//*** No SD *** + +#endif /* !CUSTOM_PERIPHERAL_PINS */ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/PinNamesVar.h b/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/PinNamesVar.h new file mode 100644 index 0000000000..7d35869fe7 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/PinNamesVar.h @@ -0,0 +1,91 @@ +/* Remap pin name */ +PA_9_R = PA_9 | PREMAP, +PA_10_R = PA_10 | PREMAP, + +/* Alternate pin name */ +PA_1_ALT1 = PA_1 | ALT1, +PA_2_ALT1 = PA_2 | ALT1, +PA_3_ALT1 = PA_3 | ALT1, +PA_4_ALT1 = PA_4 | ALT1, +PA_6_ALT1 = PA_6 | ALT1, +PA_6_ALT2 = PA_6 | ALT2, +PA_7_ALT1 = PA_7 | ALT1, +PA_7_ALT2 = PA_7 | ALT2, +PA_7_ALT3 = PA_7 | ALT3, +PA_9_ALT1 = PA_9 | ALT1, +PA_9_R_ALT1 = PA_9_R | ALT1, +PA_10_ALT1 = PA_10 | ALT1, +PA_10_R_ALT1 = PA_10_R | ALT1, +PA_14_ALT1 = PA_14 | ALT1, +PA_15_ALT1 = PA_15 | ALT1, +PB_0_ALT1 = PB_0 | ALT1, +PB_1_ALT1 = PB_1 | ALT1, +PB_1_ALT2 = PB_1 | ALT2, +PB_3_ALT1 = PB_3 | ALT1, +PB_4_ALT1 = PB_4 | ALT1, +PB_5_ALT1 = PB_5 | ALT1, +PB_6_ALT1 = PB_6 | ALT1, +PB_6_ALT2 = PB_6 | ALT2, +PB_7_ALT1 = PB_7 | ALT1, +PB_8_ALT1 = PB_8 | ALT1, +PB_9_ALT1 = PB_9 | ALT1, +PB_13_ALT1 = PB_13 | ALT1, +PB_14_ALT1 = PB_14 | ALT1, +PB_15_ALT1 = PB_15 | ALT1, +PB_15_ALT2 = PB_15 | ALT2, +PC_0_ALT1 = PC_0 | ALT1, +PC_1_ALT1 = PC_1 | ALT1, +PC_4_ALT1 = PC_4 | ALT1, +PC_5_ALT1 = PC_5 | ALT1, +PC_6_ALT1 = PC_6 | ALT1, +PC_7_ALT1 = PC_7 | ALT1, +PC_8_ALT1 = PC_8 | ALT1, +PC_9_ALT1 = PC_9 | ALT1, +PC_10_ALT1 = PC_10 | ALT1, +PC_11_ALT1 = PC_11 | ALT1, +PD_4_ALT1 = PD_4 | ALT1, +PF_7_ALT1 = PF_7 | ALT1, + +/* SYS_WKUP */ +#ifdef PWR_WAKEUP_PIN1 + SYS_WKUP1 = PA_0, +#endif +#ifdef PWR_WAKEUP_PIN2 + SYS_WKUP2 = PC_13, +#endif +#ifdef PWR_WAKEUP_PIN3 + SYS_WKUP3 = PE_6, +#endif +#ifdef PWR_WAKEUP_PIN4 + SYS_WKUP4 = PA_2, +#endif +#ifdef PWR_WAKEUP_PIN5 + SYS_WKUP5 = PC_5, +#endif +#ifdef PWR_WAKEUP_PIN6 + SYS_WKUP6 = PB_5, +#endif +#ifdef PWR_WAKEUP_PIN7 + SYS_WKUP7 = NC, +#endif +#ifdef PWR_WAKEUP_PIN8 + SYS_WKUP8 = NC, +#endif + +/* USB */ +#ifdef USBCON + USB_DM = PA_11, + USB_DP = PA_12, + #ifdef USB_NOE_PA_4 + USB_NOE = PA_4, + #endif + #ifdef USB_NOE_PA_13 + USB_NOE = PA_13, + #endif + #ifdef USB_NOE_PA_15 + USB_NOE = PA_15, + #endif + #ifdef USB_NOE_PC_9 + USB_NOE = PC_9, + #endif +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/ldscript.ld b/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/ldscript.ld new file mode 100644 index 0000000000..db07355fb7 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/ldscript.ld @@ -0,0 +1,177 @@ +/** + ****************************************************************************** + * @file LinkerScript.ld + * @author Auto-generated by STM32CubeIDE + * @brief Linker script for STM32G0B1VETx Device from STM32G0 series + * 512Kbytes FLASH + * 144Kbytes RAM + * + * Set heap size, stack size and stack location according + * to application requirements. + * + * Set memory bank area and size if external memory is used + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ + +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Memories definition */ +MEMORY +{ + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = LD_MAX_DATA_SIZE + FLASH (rx) : ORIGIN = 0x8000000 + LD_FLASH_OFFSET, LENGTH = LD_MAX_SIZE - LD_FLASH_OFFSET +} + +/* Sections */ +SECTIONS +{ + /* The startup code into "FLASH" Rom type memory */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data into "FLASH" Rom type memory */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data into "FLASH" Rom type memory */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { + . = ALIGN(4); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(4); + } >FLASH + + .ARM : { + . = ALIGN(4); + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + . = ALIGN(4); + } >FLASH + + .preinit_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(4); + } >FLASH + + .init_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(4); + } >FLASH + + .fini_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + . = ALIGN(4); + } >FLASH + + /* Used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections into "RAM" Ram type memory */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + *(.RamFunc) /* .RamFunc sections */ + *(.RamFunc*) /* .RamFunc* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + + } >RAM AT> FLASH + + /* Uninitialized data section into "RAM" Ram type memory */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss section */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + /* Remove information from the compiler libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/variant_MARLIN_STM32G0B1VE.cpp b/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/variant_MARLIN_STM32G0B1VE.cpp new file mode 100644 index 0000000000..8bf88aed49 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/variant_MARLIN_STM32G0B1VE.cpp @@ -0,0 +1,213 @@ +/* + ******************************************************************************* + * Copyright (c) 2020-2021, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ + +#if defined(STM32G0B1xx) +#include "pins_arduino.h" + +// Digital PinName array +const PinName digitalPin[] = { + PA_0, // D0/A0 + PA_1, // D1/A1 + PA_2, // D2/A2 + PA_3, // D3/A3 + PA_4, // D4/A4 + PA_5, // D5/A5 + PA_6, // D6/A6 + PA_7, // D7/A7 + PA_8, // D8 + PA_9, // D9 + PA_10, // D10 + PA_11, // D11 + PA_12, // D12 + PA_13, // D13 + PA_14, // D14 + PA_15, // D15 + PB_0, // D16/A8 + PB_1, // D17/A9 + PB_2, // D18/A10 + PB_3, // D19 + PB_4, // D20 + PB_5, // D21 + PB_6, // D22 + PB_7, // D23 + PB_8, // D24 + PB_9, // D25 + PB_10, // D26/A11 + PB_11, // D27/A12 + PB_12, // D28/A13 + PB_13, // D29 + PB_14, // D30 + PB_15, // D31 + PC_0, // D32 + PC_1, // D33 + PC_2, // D34 + PC_3, // D35 + PC_4, // D36/A14 + PC_5, // D37/A15 + PC_6, // D38 + PC_7, // D39 + PC_8, // D40 + PC_9, // D41 + PC_10, // D42 + PC_11, // D43 + PC_12, // D44 + PC_13, // D45 + PC_14, // D46 + PC_15, // D47 + PD_0, // D48 + PD_1, // D49 + PD_2, // D50 + PD_3, // D51 + PD_4, // D52 + PD_5, // D53 + PD_6, // D54 + PD_7, // D55 + PD_8, // D56 + PD_9, // D57 + PD_10, // D58 + PD_11, // D59 + PD_12, // D60 + PD_13, // D61 + PD_14, // D62 + PD_15, // D63 + PE_0, // D64 + PE_1, // D65 + PE_2, // D66 + PE_3, // D67 + PE_4, // D68 + PE_5, // D69 + PE_6, // D70 + PE_7, // D71 + PE_8, // D72 + PE_9, // D73 + PE_10, // D74 + PE_11, // D75 + PE_12, // D76 + PE_13, // D77 + PE_14, // D78 + PE_15, // D79 + PF_0, // D80 + PF_1, // D81 + PF_2, // D82 + PF_3, // D83 + PF_4, // D84 + PF_5, // D85 + PF_6, // D86 + PF_7, // D87 + PF_8, // D88 + PF_9, // D89 + PF_10, // D90 + PF_11, // D91 + PF_12, // D92 + PF_13, // D93 + PA_9_R, // D94 + PA_10_R // D95 +}; + +// Analog (Ax) pin number array +const uint32_t analogInputPin[] = { + 0, // A0, PA0 + 1, // A1, PA1 + 2, // A2, PA2 + 3, // A3, PA3 + 4, // A4, PA4 + 5, // A5, PA5 + 6, // A6, PA6 + 7, // A7, PA7 + 16, // A8, PB0 + 17, // A9, PB1 + 18, // A10, PB2 + 26, // A11, PB10 + 27, // A12, PB11 + 28, // A13, PB12 + 36, // A14, PC4 + 37 // A15, PC5 +}; + +// ---------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief System Clock Configuration + * The system Clock is configured as follows : + * System Clock source = PLL (HSE) + * SYSCLK(Hz) = 64000000 + * HCLK(Hz) = 64000000 + * AHB Prescaler = 1 + * APB1 Prescaler = 1 + * PLL_M = 1 + * PLL_N = 24 + * PLL_R = 3 + * PLL_P = 2 + * PLL_Q = 4 + * USB(Hz) = 48000000 (PLLQ) + * @param None + * @retval None + */ +WEAK void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + + // Reset clock registers (in case bootloader has changed them) + SystemInit(); + + /** Configure the main internal regulator output voltage + */ + HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1); + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1; + RCC_OscInitStruct.PLL.PLLN = 24; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV4; + RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } + /** Initializes the peripherals clocks + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; + PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } +} + +#ifdef __cplusplus +} +#endif +#endif /* STM32G0B1xx */ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/variant_MARLIN_STM32G0B1VE.h b/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/variant_MARLIN_STM32G0B1VE.h new file mode 100644 index 0000000000..e6f2251db0 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/variant_MARLIN_STM32G0B1VE.h @@ -0,0 +1,258 @@ +/* + ******************************************************************************* + * Copyright (c) 2020-2021, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ +#pragma once + +/*---------------------------------------------------------------------------- + * STM32 pins number + *----------------------------------------------------------------------------*/ +#define PA0 PIN_A0 +#define PA1 PIN_A1 +#define PA2 PIN_A2 +#define PA3 PIN_A3 +#define PA4 PIN_A4 +#define PA5 PIN_A5 +#define PA6 PIN_A6 +#define PA7 PIN_A7 +#define PA8 8 +#define PA9 9 +#define PA10 10 +#define PA11 11 +#define PA12 12 +#define PA13 13 +#define PA14 14 +#define PA15 15 +#define PB0 PIN_A8 +#define PB1 PIN_A9 +#define PB2 PIN_A10 +#define PB3 19 +#define PB4 20 +#define PB5 21 +#define PB6 22 +#define PB7 23 +#define PB8 24 +#define PB9 25 +#define PB10 PIN_A11 +#define PB11 PIN_A12 +#define PB12 PIN_A13 +#define PB13 29 +#define PB14 30 +#define PB15 31 +#define PC0 32 +#define PC1 33 +#define PC2 34 +#define PC3 35 +#define PC4 PIN_A14 +#define PC5 PIN_A15 +#define PC6 38 +#define PC7 39 +#define PC8 40 +#define PC9 41 +#define PC10 42 +#define PC11 43 +#define PC12 44 +#define PC13 45 +#define PC14 46 +#define PC15 47 +#define PD0 48 +#define PD1 49 +#define PD2 50 +#define PD3 51 +#define PD4 52 +#define PD5 53 +#define PD6 54 +#define PD7 55 +#define PD8 56 +#define PD9 57 +#define PD10 58 +#define PD11 59 +#define PD12 60 +#define PD13 61 +#define PD14 62 +#define PD15 63 +#define PE0 64 +#define PE1 65 +#define PE2 66 +#define PE3 67 +#define PE4 68 +#define PE5 69 +#define PE6 70 +#define PE7 71 +#define PE8 72 +#define PE9 73 +#define PE10 74 +#define PE11 75 +#define PE12 76 +#define PE13 77 +#define PE14 78 +#define PE15 79 +#define PF0 80 +#define PF1 81 +#define PF2 82 +#define PF3 83 +#define PF4 84 +#define PF5 85 +#define PF6 86 +#define PF7 87 +#define PF8 88 +#define PF9 89 +#define PF10 90 +#define PF11 91 +#define PF12 92 +#define PF13 93 +#define PA9_R 94 +#define PA10_R 95 + +// Alternate pins number +#define PA1_ALT1 (PA1 | ALT1) +#define PA2_ALT1 (PA2 | ALT1) +#define PA3_ALT1 (PA3 | ALT1) +#define PA4_ALT1 (PA4 | ALT1) +#define PA6_ALT1 (PA6 | ALT1) +#define PA6_ALT2 (PA6 | ALT2) +#define PA7_ALT1 (PA7 | ALT1) +#define PA7_ALT2 (PA7 | ALT2) +#define PA7_ALT3 (PA7 | ALT3) +#define PA9_ALT1 (PA9 | ALT1) +#define PA9_R_ALT1 (PA9_R | ALT1) +#define PA10_ALT1 (PA10 | ALT1) +#define PA10_R_ALT1 (PA10_R | ALT1) +#define PA14_ALT1 (PA14 | ALT1) +#define PA15_ALT1 (PA15 | ALT1) +#define PB0_ALT1 (PB0 | ALT1) +#define PB1_ALT1 (PB1 | ALT1) +#define PB1_ALT2 (PB1 | ALT2) +#define PB3_ALT1 (PB3 | ALT1) +#define PB4_ALT1 (PB4 | ALT1) +#define PB5_ALT1 (PB5 | ALT1) +#define PB6_ALT1 (PB6 | ALT1) +#define PB6_ALT2 (PB6 | ALT2) +#define PB7_ALT1 (PB7 | ALT1) +#define PB8_ALT1 (PB8 | ALT1) +#define PB9_ALT1 (PB9 | ALT1) +#define PB13_ALT1 (PB13 | ALT1) +#define PB14_ALT1 (PB14 | ALT1) +#define PB15_ALT1 (PB15 | ALT1) +#define PB15_ALT2 (PB15 | ALT2) +#define PC0_ALT1 (PC0 | ALT1) +#define PC1_ALT1 (PC1 | ALT1) +#define PC4_ALT1 (PC4 | ALT1) +#define PC5_ALT1 (PC5 | ALT1) +#define PC6_ALT1 (PC6 | ALT1) +#define PC7_ALT1 (PC7 | ALT1) +#define PC8_ALT1 (PC8 | ALT1) +#define PC9_ALT1 (PC9 | ALT1) +#define PC10_ALT1 (PC10 | ALT1) +#define PC11_ALT1 (PC11 | ALT1) +#define PD4_ALT1 (PD4 | ALT1) +#define PF7_ALT1 (PF7 | ALT1) + +#define NUM_DIGITAL_PINS 96 +#define NUM_REMAP_PINS 2 +#define NUM_ANALOG_INPUTS 16 + +// On-board LED pin number +#ifndef LED_BUILTIN + #define LED_BUILTIN PNUM_NOT_DEFINED +#endif + +// On-board user button +#ifndef USER_BTN + #define USER_BTN PNUM_NOT_DEFINED +#endif + +// SPI definitions +#ifndef PIN_SPI_SS + #define PIN_SPI_SS PA4 +#endif +#ifndef PIN_SPI_SS1 + #define PIN_SPI_SS1 PA15 +#endif +#ifndef PIN_SPI_SS2 + #define PIN_SPI_SS2 PB0 +#endif +#ifndef PIN_SPI_SS3 + #define PIN_SPI_SS3 PD9 +#endif +#ifndef PIN_SPI_MOSI + #define PIN_SPI_MOSI PA2 +#endif +#ifndef PIN_SPI_MISO + #define PIN_SPI_MISO PA6 +#endif +#ifndef PIN_SPI_SCK + #define PIN_SPI_SCK PA1 +#endif + +// I2C definitions +#ifndef PIN_WIRE_SDA + #define PIN_WIRE_SDA PA6 +#endif +#ifndef PIN_WIRE_SCL + #define PIN_WIRE_SCL PA7 +#endif + +// Timer Definitions +// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin +#ifndef TIMER_TONE + #define TIMER_TONE TIM6 +#endif +#ifndef TIMER_SERVO + #define TIMER_SERVO TIM7 +#endif + +// UART Definitions +#ifndef SERIAL_UART_INSTANCE + #define SERIAL_UART_INSTANCE 4 +#endif + +// Default pin used for generic 'Serial' instance +// Mandatory for Firmata +#ifndef PIN_SERIAL_RX + #define PIN_SERIAL_RX PA1 +#endif +#ifndef PIN_SERIAL_TX + #define PIN_SERIAL_TX PA0 +#endif + +// Extra HAL modules +#if !defined(HAL_DAC_MODULE_DISABLED) + #define HAL_DAC_MODULE_ENABLED +#endif + +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus + // These serial port names are intended to allow libraries and architecture-neutral + // sketches to automatically default to the correct port name for a particular type + // of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, + // the first hardware serial port whose RX/TX pins are not dedicated to another use. + // + // SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor + // + // SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial + // + // SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library + // + // SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. + // + // SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX + // pins are NOT connected to anything by default. + #ifndef SERIAL_PORT_MONITOR + #define SERIAL_PORT_MONITOR Serial + #endif + #ifndef SERIAL_PORT_HARDWARE + #define SERIAL_PORT_HARDWARE Serial + #endif +#endif diff --git a/ini/stm32g0.ini b/ini/stm32g0.ini index 568d9c8e9f..c8554741bc 100644 --- a/ini/stm32g0.ini +++ b/ini/stm32g0.ini @@ -41,7 +41,7 @@ upload_protocol = stlink debug_tool = stlink # -# BigTreeTech SKR mini E3 V3.0 (STM32G0B1RET6 ARM Cortex-M0+) +# BigTreeTech SKR Mini E3 V3.0 / Manta E3 EZ V1.0 / Manta M4P V1.0 / Manta M5P V1.0 (STM32G0B1RET6 ARM Cortex-M0+) # [env:STM32G0B1RE_btt] extends = stm32_variant @@ -59,6 +59,7 @@ upload_protocol = stlink debug_tool = stlink # +# BigTreeTech SKR Mini E3 V3.0 / Manta E3 EZ V1.0 / Manta M4P V1.0 / Manta M5P V1.0 (STM32G0B1RET6 ARM Cortex-M0+) # Custom upload to SD via Marlin with Binary Protocol # [env:STM32G0B1RE_btt_xfer] @@ -67,3 +68,33 @@ build_flags = ${env:STM32G0B1RE_btt.build_flags} -DXFER_BUILD extra_scripts = ${env:STM32G0B1RE_btt.extra_scripts} pre:buildroot/share/scripts/upload.py upload_protocol = custom + +# +# BigTreeTech Manta M8P V1.x (STM32G0B1VET6 ARM Cortex-M0+) +# +[env:STM32G0B1VE_btt] +extends = stm32_variant +platform = ststm32@~14.1.0 +platform_packages = framework-arduinoststm32@https://github.com/stm32duino/Arduino_Core_STM32/archive/main.zip +board = marlin_STM32G0B1VE +board_build.offset = 0x2000 +board_upload.offset_address = 0x08002000 +build_flags = ${stm32_variant.build_flags} + -DPIN_SERIAL4_RX=PE_9 -DPIN_SERIAL4_TX=PE_8 + -DPIN_SERIAL5_RX=PE_11 -DPIN_SERIAL5_TX=PE_10 + -DSERIAL_RX_BUFFER_SIZE=1024 -DSERIAL_TX_BUFFER_SIZE=1024 + -DTIMER_SERVO=TIM3 -DTIMER_TONE=TIM4 + -DSTEP_TIMER_IRQ_PRIO=0 +upload_protocol = stlink +debug_tool = stlink + +# +# BigTreeTech Manta M8P V1.x (STM32G0B1VET6 ARM Cortex-M0+) +# Custom upload to SD via Marlin with Binary Protocol +# +[env:STM32G0B1VE_btt_xfer] +extends = env:STM32G0B1VE_btt +build_flags = ${env:STM32G0B1VE_btt.build_flags} -DXFER_BUILD +extra_scripts = ${env:STM32G0B1VE_btt.extra_scripts} + pre:buildroot/share/scripts/upload.py +upload_protocol = custom From 7659f522d6927e8c4beb86fae1b01891b705fa38 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 8 Feb 2023 12:36:53 +0000 Subject: [PATCH 005/659] [cron] Bump distribution date (2023-02-08) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index be1a6956bf..209bc401af 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-04" +//#define STRING_DISTRIBUTION_DATE "2023-02-08" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 518bbdd1d4..83e546be60 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-04" + #define STRING_DISTRIBUTION_DATE "2023-02-08" #endif /** From 88dea487c2557cbea9999c0d80edc937eff27be3 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 8 Feb 2023 19:37:10 -0600 Subject: [PATCH 006/659] =?UTF-8?q?=F0=9F=94=A7=20Add=20a=20test=20for=20e?= =?UTF-8?q?xtra=20axes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/tests/LPC1769 | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/buildroot/tests/LPC1769 b/buildroot/tests/LPC1769 index ec5c824450..b3348c6d65 100755 --- a/buildroot/tests/LPC1769 +++ b/buildroot/tests/LPC1769 @@ -20,7 +20,7 @@ opt_set MOTHERBOARD BOARD_SMOOTHIEBOARD \ NOZZLE_CLEAN_END_POINT "{ { 10, 20, 3 }, { 10, 20, 3 } }" opt_enable TFTGLCD_PANEL_SPI SDSUPPORT ADAPTIVE_FAN_SLOWING TEMP_TUNING_MAINTAIN_FAN \ MAX31865_SENSOR_OHMS_0 MAX31865_CALIBRATION_OHMS_0 \ - FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR G29_RETRY_AND_RECOVER Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \ + MAG_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR G29_RETRY_AND_RECOVER Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \ BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET BED_TRAMMING_USE_PROBE BED_TRAMMING_VERIFY_RAISED \ PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE SLOW_PWM_HEATERS PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT \ Z_SAFE_HOMING ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE \ @@ -43,13 +43,23 @@ exec_test $1 $2 "Smoothieboard with TFTGLCD_PANEL_SPI and many features" "$3" restore_configs use_example_configs delta/generic opt_set MOTHERBOARD BOARD_COHESION3D_REMIX \ - X_DRIVER_TYPE TMC2130 Y_DRIVER_TYPE TMC2130 Z_DRIVER_TYPE TMC2130 + X_DRIVER_TYPE TMC2130 Y_DRIVER_TYPE TMC2130 Z_DRIVER_TYPE TMC2130 I_DRIVER_TYPE TB6560 \ + DEFAULT_AXIS_STEPS_PER_UNIT '{ 80, 80, 400, 500, 80 }' \ + DEFAULT_MAX_FEEDRATE '{ 300, 300, 5, 25, 300 }' \ + DEFAULT_MAX_ACCELERATION '{ 3000, 3000, 100, 10000, 3000 }' \ + MANUAL_FEEDRATE '{ 50*60, 50*60, 4*60, 2*60, 50*60 }' \ + AXIS_RELATIVE_MODES '{ false, false, false, false, false }' \ + HOMING_FEEDRATE_MM_M '{ (50*60), (50*60), (4*60), (50*60) }' \ + HOMING_BUMP_MM '{ 0, 0, 0, 0 }' HOMING_BUMP_DIVISOR '{ 1, 1, 1, 1 }' \ + NOZZLE_TO_PROBE_OFFSET '{ 0, 0, 0, 0 }' \ + I_MIN_PIN P1_25 opt_enable AUTO_BED_LEVELING_BILINEAR EEPROM_SETTINGS EEPROM_CHITCHAT MECHANICAL_GANTRY_CALIBRATION \ TMC_USE_SW_SPI MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z HYBRID_THRESHOLD \ SENSORLESS_PROBING Z_SAFE_HOMING X_STALL_SENSITIVITY Y_STALL_SENSITIVITY Z_STALL_SENSITIVITY TMC_DEBUG \ + AXIS4_ROTATES I_MIN_POS I_MAX_POS I_HOME_DIR I_ENABLE_ON USE_IMIN_PLUG INVERT_I_DIR \ EXPERIMENTAL_I2CBUS opt_disable PSU_CONTROL Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN -exec_test $1 $2 "Cohesion3D Remix DELTA + ABL Bilinear + EEPROM + SENSORLESS_PROBING" "$3" +exec_test $1 $2 "Cohesion3D Remix DELTA + ABL Bilinear + EEPROM + SENSORLESS_PROBING + I Axis" "$3" # clean up restore_configs From 842489a5dc2d4e0c7f80c4bde031355383848360 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 8 Feb 2023 19:36:22 -0600 Subject: [PATCH 007/659] =?UTF-8?q?=F0=9F=90=9B=20Don't=20skip=20G2/G3=20E?= =?UTF-8?q?-only=20moves?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/gcode.h | 3 + Marlin/src/gcode/motion/G0_G1.cpp | 132 ++++++++++++-------------- Marlin/src/gcode/motion/G2_G3.cpp | 150 +++++++++++++++--------------- 3 files changed, 138 insertions(+), 147 deletions(-) diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 9d5621f0c3..9bb45d9a43 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -476,6 +476,9 @@ public: private: friend class MarlinSettings; + #if ENABLED(ARC_SUPPORT) + friend void plan_arc(const xyze_pos_t&, const ab_float_t&, const bool, const uint8_t); + #endif #if ENABLED(MARLIN_DEV_MODE) static void D(const int16_t dcode); diff --git a/Marlin/src/gcode/motion/G0_G1.cpp b/Marlin/src/gcode/motion/G0_G1.cpp index b10f1ac920..88551f5eb6 100644 --- a/Marlin/src/gcode/motion/G0_G1.cpp +++ b/Marlin/src/gcode/motion/G0_G1.cpp @@ -45,91 +45,75 @@ extern xyze_pos_t destination; * G0, G1: Coordinated movement of X Y Z E axes */ void GcodeSuite::G0_G1(TERN_(HAS_FAST_MOVES, const bool fast_move/*=false*/)) { + if (!MOTION_CONDITIONS) return; - if (IsRunning() - #if ENABLED(NO_MOTION_BEFORE_HOMING) - && !homing_needed_error( - NUM_AXIS_GANG( - (parser.seen_test('X') ? _BV(X_AXIS) : 0), - | (parser.seen_test('Y') ? _BV(Y_AXIS) : 0), - | (parser.seen_test('Z') ? _BV(Z_AXIS) : 0), - | (parser.seen_test(AXIS4_NAME) ? _BV(I_AXIS) : 0), - | (parser.seen_test(AXIS5_NAME) ? _BV(J_AXIS) : 0), - | (parser.seen_test(AXIS6_NAME) ? _BV(K_AXIS) : 0), - | (parser.seen_test(AXIS7_NAME) ? _BV(U_AXIS) : 0), - | (parser.seen_test(AXIS8_NAME) ? _BV(V_AXIS) : 0), - | (parser.seen_test(AXIS9_NAME) ? _BV(W_AXIS) : 0)) - ) - #endif - ) { - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_RUNNING)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_RUNNING)); - #ifdef G0_FEEDRATE - feedRate_t old_feedrate; - #if ENABLED(VARIABLE_G0_FEEDRATE) - if (fast_move) { - old_feedrate = feedrate_mm_s; // Back up the (old) motion mode feedrate - feedrate_mm_s = fast_move_feedrate; // Get G0 feedrate from last usage - } - #endif - #endif - - get_destination_from_command(); // Get X Y [Z[I[J[K]]]] [E] F (and set cutter power) - - #ifdef G0_FEEDRATE + #ifdef G0_FEEDRATE + feedRate_t old_feedrate; + #if ENABLED(VARIABLE_G0_FEEDRATE) if (fast_move) { - #if ENABLED(VARIABLE_G0_FEEDRATE) - fast_move_feedrate = feedrate_mm_s; // Save feedrate for the next G0 - #else - old_feedrate = feedrate_mm_s; // Back up the (new) motion mode feedrate - feedrate_mm_s = MMM_TO_MMS(G0_FEEDRATE); // Get the fixed G0 feedrate - #endif + old_feedrate = feedrate_mm_s; // Back up the (old) motion mode feedrate + feedrate_mm_s = fast_move_feedrate; // Get G0 feedrate from last usage } #endif + #endif - #if BOTH(FWRETRACT, FWRETRACT_AUTORETRACT) + get_destination_from_command(); // Get X Y [Z[I[J[K]]]] [E] F (and set cutter power) - if (MIN_AUTORETRACT <= MAX_AUTORETRACT) { - // When M209 Autoretract is enabled, convert E-only moves to firmware retract/recover moves - if (fwretract.autoretract_enabled && parser.seen_test('E') - && !parser.seen(STR_AXES_MAIN) - ) { - const float echange = destination.e - current_position.e; - // Is this a retract or recover move? - if (WITHIN(ABS(echange), MIN_AUTORETRACT, MAX_AUTORETRACT) && fwretract.retracted[active_extruder] == (echange > 0.0)) { - current_position.e = destination.e; // Hide a G1-based retract/recover from calculations - sync_plan_position_e(); // AND from the planner - return fwretract.retract(echange < 0.0); // Firmware-based retract/recover (double-retract ignored) - } + #ifdef G0_FEEDRATE + if (fast_move) { + #if ENABLED(VARIABLE_G0_FEEDRATE) + fast_move_feedrate = feedrate_mm_s; // Save feedrate for the next G0 + #else + old_feedrate = feedrate_mm_s; // Back up the (new) motion mode feedrate + feedrate_mm_s = MMM_TO_MMS(G0_FEEDRATE); // Get the fixed G0 feedrate + #endif + } + #endif + + #if BOTH(FWRETRACT, FWRETRACT_AUTORETRACT) + + if (MIN_AUTORETRACT <= MAX_AUTORETRACT) { + // When M209 Autoretract is enabled, convert E-only moves to firmware retract/recover moves + if (fwretract.autoretract_enabled && parser.seen_test('E') + && !parser.seen(STR_AXES_MAIN) + ) { + const float echange = destination.e - current_position.e; + // Is this a retract or recover move? + if (WITHIN(ABS(echange), MIN_AUTORETRACT, MAX_AUTORETRACT) && fwretract.retracted[active_extruder] == (echange > 0.0)) { + current_position.e = destination.e; // Hide a G1-based retract/recover from calculations + sync_plan_position_e(); // AND from the planner + return fwretract.retract(echange < 0.0); // Firmware-based retract/recover (double-retract ignored) } } + } - #endif // FWRETRACT + #endif // FWRETRACT - #if EITHER(IS_SCARA, POLAR) - fast_move ? prepare_fast_move_to_destination() : prepare_line_to_destination(); + #if EITHER(IS_SCARA, POLAR) + fast_move ? prepare_fast_move_to_destination() : prepare_line_to_destination(); + #else + prepare_line_to_destination(); + #endif + + #ifdef G0_FEEDRATE + // Restore the motion mode feedrate + if (fast_move) feedrate_mm_s = old_feedrate; + #endif + + #if ENABLED(NANODLP_Z_SYNC) + #if ENABLED(NANODLP_ALL_AXIS) + #define _MOVE_SYNC parser.seenval('X') || parser.seenval('Y') || parser.seenval('Z') // For any move wait and output sync message #else - prepare_line_to_destination(); + #define _MOVE_SYNC parser.seenval('Z') // Only for Z move #endif - - #ifdef G0_FEEDRATE - // Restore the motion mode feedrate - if (fast_move) feedrate_mm_s = old_feedrate; - #endif - - #if ENABLED(NANODLP_Z_SYNC) - #if ENABLED(NANODLP_ALL_AXIS) - #define _MOVE_SYNC parser.seenval('X') || parser.seenval('Y') || parser.seenval('Z') // For any move wait and output sync message - #else - #define _MOVE_SYNC parser.seenval('Z') // Only for Z move - #endif - if (_MOVE_SYNC) { - planner.synchronize(); - SERIAL_ECHOLNPGM(STR_Z_MOVE_COMP); - } - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_IDLE)); - #else - TERN_(FULL_REPORT_TO_HOST_FEATURE, report_current_grblstate_moving()); - #endif - } + if (_MOVE_SYNC) { + planner.synchronize(); + SERIAL_ECHOLNPGM(STR_Z_MOVE_COMP); + } + TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_IDLE)); + #else + TERN_(FULL_REPORT_TO_HOST_FEATURE, report_current_grblstate_moving()); + #endif } diff --git a/Marlin/src/gcode/motion/G2_G3.cpp b/Marlin/src/gcode/motion/G2_G3.cpp index 2634117cd9..1cae82f71c 100644 --- a/Marlin/src/gcode/motion/G2_G3.cpp +++ b/Marlin/src/gcode/motion/G2_G3.cpp @@ -142,8 +142,8 @@ void plan_arc( part_per_circle = RADIANS(360) / total_angular; // Each circle's part of the total ARC_LIJKUVWE_CODE( - const float per_circle_L = travel_L * part_per_circle, // L movement per circle - const float per_circle_I = travel_I * part_per_circle, + const float per_circle_L = travel_L * part_per_circle, // X, Y, or Z movement per circle + const float per_circle_I = travel_I * part_per_circle, // The rest are also non-arc const float per_circle_J = travel_J * part_per_circle, const float per_circle_K = travel_K * part_per_circle, const float per_circle_U = travel_U * part_per_circle, @@ -154,9 +154,9 @@ void plan_arc( xyze_pos_t temp_position = current_position; for (uint16_t n = circles; n--;) { - ARC_LIJKUVWE_CODE( // Destination Linear Axes - temp_position[axis_l] += per_circle_L, - temp_position.i += per_circle_I, + ARC_LIJKUVWE_CODE( // Destination Linear Axes + temp_position[axis_l] += per_circle_L, // Linear X, Y, or Z + temp_position.i += per_circle_I, // The rest are also non-circular temp_position.j += per_circle_J, temp_position.k += per_circle_K, temp_position.u += per_circle_U, @@ -167,8 +167,8 @@ void plan_arc( plan_arc(temp_position, offset, clockwise, 0); // Plan a single whole circle } ARC_LIJKUVWE_CODE( - travel_L = cart[axis_l] - current_position[axis_l], - travel_I = cart.i - current_position.i, + travel_L = cart[axis_l] - current_position[axis_l], // Linear X, Y, or Z + travel_I = cart.i - current_position.i, // The rest are also non-arc travel_J = cart.j - current_position.j, travel_K = cart.k - current_position.k, travel_U = cart.u - current_position.u, @@ -183,16 +183,21 @@ void plan_arc( // Return if the move is near zero if (flat_mm < 0.0001f - GANG_N(SUB2(NUM_AXES), - && travel_L < 0.0001f, - && travel_I < 0.0001f, - && travel_J < 0.0001f, - && travel_K < 0.0001f, - && travel_U < 0.0001f, - && travel_V < 0.0001f, - && travel_W < 0.0001f + GANG_N(SUB2(NUM_AXES), // Two axes for the arc + && NEAR_ZERO(travel_L), // Linear X, Y, or Z + && NEAR_ZERO(travel_I), + && NEAR_ZERO(travel_J), + && NEAR_ZERO(travel_K), + && NEAR_ZERO(travel_U), + && NEAR_ZERO(travel_V), + && NEAR_ZERO(travel_W) ) - ) return; + ) { + #if HAS_EXTRUDERS + if (!NEAR_ZERO(travel_E)) gcode.G0_G1(); // Handle retract/recover as G1 + return; + #endif + } // Feedrate for the move, scaled by the feedrate multiplier const feedRate_t scaled_fr_mm_s = MMS_SCALED(feedrate_mm_s); @@ -426,71 +431,70 @@ void plan_arc( * G3 X20 Y12 R14 ; CCW circle with r=14 ending at X20 Y12 */ void GcodeSuite::G2_G3(const bool clockwise) { - if (MOTION_CONDITIONS) { + if (!MOTION_CONDITIONS) return; - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_RUNNING)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_RUNNING)); - #if ENABLED(SF_ARC_FIX) - const bool relative_mode_backup = relative_mode; - relative_mode = true; - #endif + #if ENABLED(SF_ARC_FIX) + const bool relative_mode_backup = relative_mode; + relative_mode = true; + #endif - get_destination_from_command(); // Get X Y [Z[I[J[K...]]]] [E] F (and set cutter power) + get_destination_from_command(); // Get X Y [Z[I[J[K...]]]] [E] F (and set cutter power) - TERN_(SF_ARC_FIX, relative_mode = relative_mode_backup); + TERN_(SF_ARC_FIX, relative_mode = relative_mode_backup); - ab_float_t arc_offset = { 0, 0 }; - if (parser.seenval('R')) { - const float r = parser.value_linear_units(); - if (r) { - const xy_pos_t p1 = current_position, p2 = destination; - if (p1 != p2) { - const xy_pos_t d2 = (p2 - p1) * 0.5f; // XY vector to midpoint of move from current - const float e = clockwise ^ (r < 0) ? -1 : 1, // clockwise -1/1, counterclockwise 1/-1 - len = d2.magnitude(), // Distance to mid-point of move from current - h2 = (r - len) * (r + len), // factored to reduce rounding error - h = (h2 >= 0) ? SQRT(h2) : 0.0f; // Distance to the arc pivot-point from midpoint - const xy_pos_t s = { -d2.y, d2.x }; // Perpendicular bisector. (Divide by len for unit vector.) - arc_offset = d2 + s / len * e * h; // The calculated offset (mid-point if |r| <= len) - } + ab_float_t arc_offset = { 0, 0 }; + if (parser.seenval('R')) { + const float r = parser.value_linear_units(); + if (r) { + const xy_pos_t p1 = current_position, p2 = destination; + if (p1 != p2) { + const xy_pos_t d2 = (p2 - p1) * 0.5f; // XY vector to midpoint of move from current + const float e = clockwise ^ (r < 0) ? -1 : 1, // clockwise -1/1, counterclockwise 1/-1 + len = d2.magnitude(), // Distance to mid-point of move from current + h2 = (r - len) * (r + len), // factored to reduce rounding error + h = (h2 >= 0) ? SQRT(h2) : 0.0f; // Distance to the arc pivot-point from midpoint + const xy_pos_t s = { -d2.y, d2.x }; // Perpendicular bisector. (Divide by len for unit vector.) + arc_offset = d2 + s / len * e * h; // The calculated offset (mid-point if |r| <= len) } } - else { - #if ENABLED(CNC_WORKSPACE_PLANES) - char achar, bchar; - switch (workspace_plane) { - default: - case GcodeSuite::PLANE_XY: achar = 'I'; bchar = 'J'; break; - case GcodeSuite::PLANE_YZ: achar = 'J'; bchar = 'K'; break; - case GcodeSuite::PLANE_ZX: achar = 'K'; bchar = 'I'; break; - } - #else - constexpr char achar = 'I', bchar = 'J'; - #endif - if (parser.seenval(achar)) arc_offset.a = parser.value_linear_units(); - if (parser.seenval(bchar)) arc_offset.b = parser.value_linear_units(); - } - - if (arc_offset) { - - #if ENABLED(ARC_P_CIRCLES) - // P indicates number of circles to do - const int8_t circles_to_do = parser.byteval('P'); - if (!WITHIN(circles_to_do, 0, 100)) - SERIAL_ERROR_MSG(STR_ERR_ARC_ARGS); - #else - constexpr uint8_t circles_to_do = 0; - #endif - - // Send the arc to the planner - plan_arc(destination, arc_offset, clockwise, circles_to_do); - reset_stepper_timeout(); - } - else - SERIAL_ERROR_MSG(STR_ERR_ARC_ARGS); - - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_IDLE)); } + else { + #if ENABLED(CNC_WORKSPACE_PLANES) + char achar, bchar; + switch (workspace_plane) { + default: + case GcodeSuite::PLANE_XY: achar = 'I'; bchar = 'J'; break; + case GcodeSuite::PLANE_YZ: achar = 'J'; bchar = 'K'; break; + case GcodeSuite::PLANE_ZX: achar = 'K'; bchar = 'I'; break; + } + #else + constexpr char achar = 'I', bchar = 'J'; + #endif + if (parser.seenval(achar)) arc_offset.a = parser.value_linear_units(); + if (parser.seenval(bchar)) arc_offset.b = parser.value_linear_units(); + } + + if (arc_offset) { + + #if ENABLED(ARC_P_CIRCLES) + // P indicates number of circles to do + const int8_t circles_to_do = parser.byteval('P'); + if (!WITHIN(circles_to_do, 0, 100)) + SERIAL_ERROR_MSG(STR_ERR_ARC_ARGS); + #else + constexpr uint8_t circles_to_do = 0; + #endif + + // Send the arc to the planner + plan_arc(destination, arc_offset, clockwise, circles_to_do); + reset_stepper_timeout(); + } + else + SERIAL_ERROR_MSG(STR_ERR_ARC_ARGS); + + TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_IDLE)); } #endif // ARC_SUPPORT From 88de52210ff878838005a5f1213cdb1aa7355ae9 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 8 Feb 2023 19:39:21 -0600 Subject: [PATCH 008/659] =?UTF-8?q?=F0=9F=A9=B9=20Use=20'M205=20D'=20when?= =?UTF-8?q?=20'B'=20is=20an=20axis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/config/M200-M205.cpp | 45 +++++++++++++++++---------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/Marlin/src/gcode/config/M200-M205.cpp b/Marlin/src/gcode/config/M200-M205.cpp index 87c1f2ce30..cda3177d93 100644 --- a/Marlin/src/gcode/config/M200-M205.cpp +++ b/Marlin/src/gcode/config/M200-M205.cpp @@ -221,9 +221,9 @@ void GcodeSuite::M203_report(const bool forReplay/*=true*/) { /** * M204: Set Accelerations in units/sec^2 (M204 P1200 R3000 T3000) * - * P = Printing moves - * R = Retract only (no X, Y, Z) moves - * T = Travel (non printing) moves + * P Printing moves + * R Retract only (no X, Y, Z) moves + * T Travel (non printing) moves */ void GcodeSuite::M204() { if (!parser.seen("PRST")) @@ -247,24 +247,37 @@ void GcodeSuite::M204_report(const bool forReplay/*=true*/) { ); } +#if AXIS_COLLISION('B') + #define M205_MIN_SEG_TIME_PARAM 'D' + #define M205_MIN_SEG_TIME_STR "D" + #warning "Use 'M205 D' for Minimum Segment Time." +#else + #define M205_MIN_SEG_TIME_PARAM 'B' + #define M205_MIN_SEG_TIME_STR "B" +#endif + /** * M205: Set Advanced Settings * - * B = Min Segment Time (µs) - * S = Min Feed Rate (units/s) - * T = Min Travel Feed Rate (units/s) - * X = Max X Jerk (units/sec^2) - * Y = Max Y Jerk (units/sec^2) - * Z = Max Z Jerk (units/sec^2) - * E = Max E Jerk (units/sec^2) - * J = Junction Deviation (mm) (If not using CLASSIC_JERK) + * B<µs> : Min Segment Time + * S : Min Feed Rate + * T : Min Travel Feed Rate + * + * With CLASSIC_JERK: + * X : Max X Jerk + * Y : Max Y Jerk + * Z : Max Z Jerk + * ... : etc + * E : Max E Jerk + * + * Without CLASSIC_JERK: + * J(mm) : Junction Deviation */ void GcodeSuite::M205() { - if (!parser.seen("BST" TERN_(HAS_JUNCTION_DEVIATION, "J") TERN_(HAS_CLASSIC_JERK, "XYZE"))) - return M205_report(); + if (!parser.seen_any()) return M205_report(); //planner.synchronize(); - if (parser.seenval('B')) planner.settings.min_segment_time_us = parser.value_ulong(); + if (parser.seenval(M205_MIN_SEG_TIME_PARAM)) planner.settings.min_segment_time_us = parser.value_ulong(); if (parser.seenval('S')) planner.settings.min_feedrate_mm_s = parser.value_linear_units(); if (parser.seenval('T')) planner.settings.min_travel_feedrate_mm_s = parser.value_linear_units(); #if HAS_JUNCTION_DEVIATION @@ -304,7 +317,7 @@ void GcodeSuite::M205() { void GcodeSuite::M205_report(const bool forReplay/*=true*/) { report_heading_etc(forReplay, F( - "Advanced (B S T" + "Advanced (" M205_MIN_SEG_TIME_STR " S T" TERN_(HAS_JUNCTION_DEVIATION, " J") #if HAS_CLASSIC_JERK NUM_AXIS_GANG( @@ -317,7 +330,7 @@ void GcodeSuite::M205_report(const bool forReplay/*=true*/) { ")" )); SERIAL_ECHOLNPGM_P( - PSTR(" M205 B"), LINEAR_UNIT(planner.settings.min_segment_time_us) + PSTR(" M205 " M205_MIN_SEG_TIME_STR), LINEAR_UNIT(planner.settings.min_segment_time_us) , PSTR(" S"), LINEAR_UNIT(planner.settings.min_feedrate_mm_s) , SP_T_STR, LINEAR_UNIT(planner.settings.min_travel_feedrate_mm_s) #if HAS_JUNCTION_DEVIATION From 23e2cb0c53abc0727b0105beb777fefbb645280b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 8 Feb 2023 20:19:12 -0600 Subject: [PATCH 009/659] =?UTF-8?q?=F0=9F=A9=B9=20Misc.=20extra=20axis=20u?= =?UTF-8?q?pdates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_post.h | 12 +++--- Marlin/src/inc/SanityCheck.h | 60 ++++++++++++++++++------------ 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index cf6c560b5c..5c149cee89 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -190,22 +190,22 @@ #define XY_CENTER { X_CENTER, Y_CENTER } #endif #if HAS_I_AXIS - #define I_CENTER TERN(BED_CENTER_AT_0_0, 0, _I_HALF_BED) + #define I_CENTER _I_HALF_BED #endif #if HAS_J_AXIS - #define J_CENTER TERN(BED_CENTER_AT_0_0, 0, _J_HALF_BED) + #define J_CENTER _J_HALF_BED #endif #if HAS_K_AXIS - #define K_CENTER TERN(BED_CENTER_AT_0_0, 0, _K_HALF_BED) + #define K_CENTER _K_HALF_BED #endif #if HAS_U_AXIS - #define U_CENTER TERN(BED_CENTER_AT_0_0, 0, _U_HALF_BED) + #define U_CENTER _U_HALF_BED #endif #if HAS_V_AXIS - #define V_CENTER TERN(BED_CENTER_AT_0_0, 0, _V_HALF_BED) + #define V_CENTER _V_HALF_BED #endif #if HAS_W_AXIS - #define W_CENTER TERN(BED_CENTER_AT_0_0, 0, _W_HALF_BED) + #define W_CENTER _W_HALF_BED #endif // Get the linear boundaries of the bed diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index dc8c8a22cc..ec1c1a6475 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1580,18 +1580,18 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #endif /** - * Features that require a min/max/specific NUM_AXES + * Features that require a min/max/specific steppers / axes to be enabled. */ #if HAS_LEVELING && !HAS_Z_AXIS #error "Leveling in Marlin requires three or more axes, with Z as the vertical axis." #elif ENABLED(CNC_WORKSPACE_PLANES) && !HAS_Z_AXIS - #error "CNC_WORKSPACE_PLANES currently requires NUM_AXES >= 3" + #error "CNC_WORKSPACE_PLANES currently requires a Z axis" #elif ENABLED(DIRECT_STEPPING) && NUM_AXES > XYZ - #error "DIRECT_STEPPING currently requires NUM_AXES 3" -#elif ENABLED(FOAMCUTTER_XYUV) && NUM_AXES < 5 - #error "FOAMCUTTER_XYUV requires NUM_AXES >= 5." + #error "DIRECT_STEPPING does not currently support more than 3 axes (i.e., XYZ)." +#elif ENABLED(FOAMCUTTER_XYUV) && !(HAS_I_AXIS && HAS_J_AXIS) + #error "FOAMCUTTER_XYUV requires I and J steppers to be enabled." #elif ENABLED(LINEAR_ADVANCE) && HAS_I_AXIS - #error "LINEAR_ADVANCE currently requires NUM_AXES <= 3." + #error "LINEAR_ADVANCE does not currently support the inclusion of an I axis." #endif /** @@ -1599,11 +1599,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS */ #if HAS_I_AXIS #if !defined(I_MIN_POS) || !defined(I_MAX_POS) - #error "I_MIN_POS and I_MAX_POS are required with NUM_AXES >= 4." + #error "I_MIN_POS and I_MAX_POS are required for the I axis." #elif !defined(I_HOME_DIR) - #error "I_HOME_DIR is required with NUM_AXES >= 4." + #error "I_HOME_DIR is required for the I axis." #elif HAS_I_ENABLE && !defined(I_ENABLE_ON) - #error "I_ENABLE_ON is required for your I driver with NUM_AXES >= 4." + #error "I_ENABLE_ON is required for the I stepper." + #elif !defined(INVERT_I_DIR) + #error "INVERT_I_DIR is required for the I stepper." #endif #endif #if HAS_J_AXIS @@ -1612,11 +1614,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #elif ENABLED(AXIS5_ROTATES) && DISABLED(AXIS4_ROTATES) #error "AXIS5_ROTATES requires AXIS4_ROTATES." #elif !defined(J_MIN_POS) || !defined(J_MAX_POS) - #error "J_MIN_POS and J_MAX_POS are required with NUM_AXES >= 5." + #error "J_MIN_POS and J_MAX_POS are required for the J axis." #elif !defined(J_HOME_DIR) - #error "J_HOME_DIR is required with NUM_AXES >= 5." + #error "J_HOME_DIR is required for the J axis." #elif HAS_J_ENABLE && !defined(J_ENABLE_ON) - #error "J_ENABLE_ON is required for your J driver with NUM_AXES >= 5." + #error "J_ENABLE_ON is required for the J stepper." + #elif !defined(INVERT_J_DIR) + #error "INVERT_J_DIR is required for the J stepper." #endif #endif #if HAS_K_AXIS @@ -1625,11 +1629,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #elif ENABLED(AXIS6_ROTATES) && DISABLED(AXIS5_ROTATES) #error "AXIS6_ROTATES requires AXIS5_ROTATES." #elif !defined(K_MIN_POS) || !defined(K_MAX_POS) - #error "K_MIN_POS and K_MAX_POS are required with NUM_AXES >= 6." + #error "K_MIN_POS and K_MAX_POS are required for the K axis." #elif !defined(K_HOME_DIR) - #error "K_HOME_DIR is required with NUM_AXES >= 6." + #error "K_HOME_DIR is required for the K axis." #elif HAS_K_ENABLE && !defined(K_ENABLE_ON) - #error "K_ENABLE_ON is required for your K driver with NUM_AXES >= 6." + #error "K_ENABLE_ON is required for the K stepper." + #elif !defined(INVERT_K_DIR) + #error "INVERT_K_DIR is required for the K stepper." #endif #endif #if HAS_U_AXIS @@ -1638,11 +1644,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #elif ENABLED(AXIS7_ROTATES) && DISABLED(AXIS6_ROTATES) #error "AXIS7_ROTATES requires AXIS6_ROTATES." #elif !defined(U_MIN_POS) || !defined(U_MAX_POS) - #error "U_MIN_POS and U_MAX_POS are required with NUM_AXES >= 7." + #error "U_MIN_POS and U_MAX_POS are required for the U axis." #elif !defined(U_HOME_DIR) - #error "U_HOME_DIR is required with NUM_AXES >= 7." + #error "U_HOME_DIR is required for the U axis." #elif HAS_U_ENABLE && !defined(U_ENABLE_ON) - #error "U_ENABLE_ON is required for your U driver with NUM_AXES >= 7." + #error "U_ENABLE_ON is required for the U stepper." + #elif !defined(INVERT_U_DIR) + #error "INVERT_U_DIR is required for the U stepper." #endif #endif #if HAS_V_AXIS @@ -1651,11 +1659,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #elif ENABLED(AXIS8_ROTATES) && DISABLED(AXIS7_ROTATES) #error "AXIS8_ROTATES requires AXIS7_ROTATES." #elif !defined(V_MIN_POS) || !defined(V_MAX_POS) - #error "V_MIN_POS and V_MAX_POS are required with NUM_AXES >= 8." + #error "V_MIN_POS and V_MAX_POS are required for the V axis." #elif !defined(V_HOME_DIR) - #error "V_HOME_DIR is required with NUM_AXES >= 8." + #error "V_HOME_DIR is required for the V axis." #elif HAS_V_ENABLE && !defined(V_ENABLE_ON) - #error "V_ENABLE_ON is required for your V driver with NUM_AXES >= 8." + #error "V_ENABLE_ON is required for the V stepper." + #elif !defined(INVERT_V_DIR) + #error "INVERT_V_DIR is required for the V stepper." #endif #endif #if HAS_W_AXIS @@ -1664,11 +1674,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #elif ENABLED(AXIS9_ROTATES) && DISABLED(AXIS8_ROTATES) #error "AXIS9_ROTATES requires AXIS8_ROTATES." #elif !defined(W_MIN_POS) || !defined(W_MAX_POS) - #error "W_MIN_POS and W_MAX_POS are required with NUM_AXES >= 9." + #error "W_MIN_POS and W_MAX_POS are required for the W axis." #elif !defined(W_HOME_DIR) - #error "W_HOME_DIR is required with NUM_AXES >= 9." + #error "W_HOME_DIR is required for the W axis." #elif HAS_W_ENABLE && !defined(W_ENABLE_ON) - #error "W_ENABLE_ON is required for your W driver with NUM_AXES >= 9." + #error "W_ENABLE_ON is required for the W stepper." + #elif !defined(INVERT_W_DIR) + #error "INVERT_W_DIR is required for the W stepper." #endif #endif From 7e79fc5b8e04e0614d8ae09f908a73728f3e596e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 8 Feb 2023 20:26:59 -0600 Subject: [PATCH 010/659] =?UTF-8?q?=F0=9F=A9=B9=20Safe=20Bed=20Leveling=20?= =?UTF-8?q?updates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 34 +++++++++++++++++---- Marlin/src/gcode/bedlevel/abl/G29.cpp | 6 ++-- Marlin/src/gcode/bedlevel/mbl/G29.cpp | 6 ++-- Marlin/src/inc/Conditionals_adv.h | 6 ++++ Marlin/src/inc/SanityCheck.h | 21 +++++++++++++ 5 files changed, 59 insertions(+), 14 deletions(-) diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index d6cb0b762f..f5c370aa68 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -318,9 +318,7 @@ void unified_bed_leveling::G29() { TERN_(HAS_MULTI_HOTEND, if (active_extruder != 0) tool_change(0, true)); // Position bed horizontally and Z probe vertically. - #if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \ - || defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \ - || defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W) + #if HAS_SAFE_BED_LEVELING xyze_pos_t safe_position = current_position; #ifdef SAFE_BED_LEVELING_START_X safe_position.x = SAFE_BED_LEVELING_START_X; @@ -351,7 +349,7 @@ void unified_bed_leveling::G29() { #endif do_blocking_move_to(safe_position); - #endif + #endif // HAS_SAFE_BED_LEVELING } // Invalidate one or more nearby mesh points, possibly all. @@ -887,8 +885,32 @@ void set_message_with_feedback(FSTR_P const fstr) { ui.capture(); save_ubl_active_state_and_disable(); // Disable bed level correction for probing - do_blocking_move_to(0.5f * (MESH_MAX_X - (MESH_MIN_X)), 0.5f * (MESH_MAX_Y - (MESH_MIN_Y)), MANUAL_PROBE_START_Z); - //, _MIN(planner.settings.max_feedrate_mm_s[X_AXIS], planner.settings.max_feedrate_mm_s[Y_AXIS]) * 0.5f); + do_blocking_move_to( + NUM_AXIS_LIST( + 0.5f * ((MESH_MAX_X) - (MESH_MIN_X)), + 0.5f * ((MESH_MAX_Y) - (MESH_MIN_Y)), + MANUAL_PROBE_START_Z + #ifdef SAFE_BED_LEVELING_START_I + , SAFE_BED_LEVELING_START_I + #endif + #ifdef SAFE_BED_LEVELING_START_J + , SAFE_BED_LEVELING_START_J + #endif + #ifdef SAFE_BED_LEVELING_START_K + , SAFE_BED_LEVELING_START_K + #endif + #ifdef SAFE_BED_LEVELING_START_U + , SAFE_BED_LEVELING_START_U + #endif + #ifdef SAFE_BED_LEVELING_START_V + , SAFE_BED_LEVELING_START_V + #endif + #ifdef SAFE_BED_LEVELING_START_W + , SAFE_BED_LEVELING_START_W + #endif + ) + //, _MIN(planner.settings.max_feedrate_mm_s[X_AXIS], planner.settings.max_feedrate_mm_s[Y_AXIS]) * 0.5f + ); planner.synchronize(); SERIAL_ECHOPGM("Place shim under nozzle"); diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index 0fef5ad683..4769bd79c0 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -453,9 +453,7 @@ G29_TYPE GcodeSuite::G29() { } // Position bed horizontally and Z probe vertically. - #if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \ - || defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \ - || defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W) + #if HAS_SAFE_BED_LEVELING xyze_pos_t safe_position = current_position; #ifdef SAFE_BED_LEVELING_START_X safe_position.x = SAFE_BED_LEVELING_START_X; @@ -486,7 +484,7 @@ G29_TYPE GcodeSuite::G29() { #endif do_blocking_move_to(safe_position); - #endif + #endif // HAS_SAFE_BED_LEVELING // Disable auto bed leveling during G29. // Be formal so G29 can be done successively without G28. diff --git a/Marlin/src/gcode/bedlevel/mbl/G29.cpp b/Marlin/src/gcode/bedlevel/mbl/G29.cpp index e98f3d5ee3..e3e96a7960 100644 --- a/Marlin/src/gcode/bedlevel/mbl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/mbl/G29.cpp @@ -108,9 +108,7 @@ void GcodeSuite::G29() { TERN_(DWIN_LCD_PROUI, DWIN_LevelingStart()); // Position bed horizontally and Z probe vertically. - #if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \ - || defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \ - || defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W) + #if HAS_SAFE_BED_LEVELING xyze_pos_t safe_position = current_position; #ifdef SAFE_BED_LEVELING_START_X safe_position.x = SAFE_BED_LEVELING_START_X; @@ -141,7 +139,7 @@ void GcodeSuite::G29() { #endif do_blocking_move_to(safe_position); - #endif + #endif // HAS_SAFE_BED_LEVELING return; } diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index bfd8caf3dd..ad89824347 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -1038,6 +1038,12 @@ #endif #endif +#if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \ + || defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \ + || defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W) + #define HAS_SAFE_BED_LEVELING 1 +#endif + // // SD Card connection methods // Defined here so pins and sanity checks can use them diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index ec1c1a6475..85bdba8a8e 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2197,6 +2197,27 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS static_assert(WITHIN(Z_SAFE_HOMING_Y_POINT, Y_MIN_POS, Y_MAX_POS), "Z_SAFE_HOMING_Y_POINT can't be reached by the nozzle."); #endif +// Check Safe Bed Leveling settings +#if HAS_SAFE_BED_LEVELING + #if defined(SAFE_BED_LEVELING_START_Y) && !defined(SAFE_BED_LEVELING_START_X) + #error "If SAFE_BED_LEVELING_START_Y is defined, SAFE_BED_LEVELING_START_X must also be defined." + #elif defined(SAFE_BED_LEVELING_START_Z) && !defined(SAFE_BED_LEVELING_START_Y) + #error "If SAFE_BED_LEVELING_START_Z is defined, SAFE_BED_LEVELING_START_Y must also be defined." + #elif defined(SAFE_BED_LEVELING_START_I) && !defined(SAFE_BED_LEVELING_START_Z) + #error "If SAFE_BED_LEVELING_START_I is defined, SAFE_BED_LEVELING_START_Z must also be defined." + #elif defined(SAFE_BED_LEVELING_START_J) && !defined(SAFE_BED_LEVELING_START_I) + #error "If SAFE_BED_LEVELING_START_J is defined, SAFE_BED_LEVELING_START_I must also be defined." + #elif defined(SAFE_BED_LEVELING_START_K) && !defined(SAFE_BED_LEVELING_START_J) + #error "If SAFE_BED_LEVELING_START_K is defined, SAFE_BED_LEVELING_START_J must also be defined." + #elif defined(SAFE_BED_LEVELING_START_U) && !defined(SAFE_BED_LEVELING_START_K) + #error "If SAFE_BED_LEVELING_START_U is defined, SAFE_BED_LEVELING_START_K must also be defined." + #elif defined(SAFE_BED_LEVELING_START_V) && !defined(SAFE_BED_LEVELING_START_U) + #error "If SAFE_BED_LEVELING_START_V is defined, SAFE_BED_LEVELING_START_U must also be defined." + #elif defined(SAFE_BED_LEVELING_START_W) && !defined(SAFE_BED_LEVELING_START_V) + #error "If SAFE_BED_LEVELING_START_W is defined, SAFE_BED_LEVELING_START_V must also be defined." + #endif +#endif + /** * Make sure DISABLE_[XYZ] compatible with selected homing options */ From f595878b5b12ba87c88e43160b3434e76c782998 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 8 Feb 2023 20:28:56 -0600 Subject: [PATCH 011/659] =?UTF-8?q?=F0=9F=A9=B9=20Various=20simple=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/bedlevel/mbl/mesh_bed_leveling.h | 4 ++-- Marlin/src/feature/bedlevel/ubl/ubl.h | 4 ++-- Marlin/src/gcode/calibrate/G34.cpp | 2 +- Marlin/src/gcode/control/M350_M351.cpp | 3 --- Marlin/src/gcode/feature/camera/M240.cpp | 10 ++++++---- Marlin/src/gcode/probe/G38.cpp | 8 +------- Marlin/src/lcd/extui/ui_api.cpp | 8 +++++--- Marlin/src/lcd/language/language_fr.h | 4 ++-- Marlin/src/lcd/language/language_ru.h | 14 +++++++------- Marlin/src/lcd/language/language_uk.h | 14 +++++++------- Marlin/src/lcd/marlinui.cpp | 2 +- Marlin/src/module/motion.cpp | 17 +++++------------ Marlin/src/module/motion.h | 4 ++-- Marlin/src/module/planner.cpp | 2 +- Marlin/src/module/probe.cpp | 19 ++++++++++--------- .../share/PlatformIO/scripts/configuration.py | 2 +- 16 files changed, 53 insertions(+), 64 deletions(-) diff --git a/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.h b/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.h index aa97cb57ba..0193b4f43e 100644 --- a/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.h +++ b/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.h @@ -32,8 +32,8 @@ enum MeshLevelingState : char { MeshReset // G29 S5 }; -#define MESH_X_DIST (float(MESH_MAX_X - (MESH_MIN_X)) / (GRID_MAX_CELLS_X)) -#define MESH_Y_DIST (float(MESH_MAX_Y - (MESH_MIN_Y)) / (GRID_MAX_CELLS_Y)) +#define MESH_X_DIST (float((MESH_MAX_X) - (MESH_MIN_X)) / (GRID_MAX_CELLS_X)) +#define MESH_Y_DIST (float((MESH_MAX_Y) - (MESH_MIN_Y)) / (GRID_MAX_CELLS_Y)) class mesh_bed_leveling { public: diff --git a/Marlin/src/feature/bedlevel/ubl/ubl.h b/Marlin/src/feature/bedlevel/ubl/ubl.h index a7103d6e18..ae69e3cd92 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl.h +++ b/Marlin/src/feature/bedlevel/ubl/ubl.h @@ -38,8 +38,8 @@ enum MeshPointType : char { INVALID, REAL, SET_IN_BITMAP, CLOSEST }; struct mesh_index_pair; -#define MESH_X_DIST (float(MESH_MAX_X - (MESH_MIN_X)) / (GRID_MAX_CELLS_X)) -#define MESH_Y_DIST (float(MESH_MAX_Y - (MESH_MIN_Y)) / (GRID_MAX_CELLS_Y)) +#define MESH_X_DIST (float((MESH_MAX_X) - (MESH_MIN_X)) / (GRID_MAX_CELLS_X)) +#define MESH_Y_DIST (float((MESH_MAX_Y) - (MESH_MIN_Y)) / (GRID_MAX_CELLS_Y)) #if ENABLED(OPTIMIZED_MESH_STORAGE) typedef int16_t mesh_store_t[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y]; diff --git a/Marlin/src/gcode/calibrate/G34.cpp b/Marlin/src/gcode/calibrate/G34.cpp index 1be3952ffe..7ae1e7765c 100644 --- a/Marlin/src/gcode/calibrate/G34.cpp +++ b/Marlin/src/gcode/calibrate/G34.cpp @@ -58,7 +58,7 @@ void GcodeSuite::G34() { // Move XY to safe position if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Parking XY"); const xy_pos_t safe_pos = GANTRY_CALIBRATION_SAFE_POSITION; - do_blocking_move_to(safe_pos, MMM_TO_MMS(GANTRY_CALIBRATION_XY_PARK_FEEDRATE)); + do_blocking_move_to_xy(safe_pos, MMM_TO_MMS(GANTRY_CALIBRATION_XY_PARK_FEEDRATE)); #endif const float move_distance = parser.intval('Z', GANTRY_CALIBRATION_EXTRA_HEIGHT), diff --git a/Marlin/src/gcode/control/M350_M351.cpp b/Marlin/src/gcode/control/M350_M351.cpp index ac6b5a329b..425abad529 100644 --- a/Marlin/src/gcode/control/M350_M351.cpp +++ b/Marlin/src/gcode/control/M350_M351.cpp @@ -29,9 +29,6 @@ #if NUM_AXES == XYZ && EXTRUDERS >= 1 #define HAS_M350_B_PARAM 1 // "5th axis" (after E0) for an original XYZEB setup. - #if AXIS_COLLISION('B') - #error "M350 parameter 'B' collision with axis name." - #endif #endif /** diff --git a/Marlin/src/gcode/feature/camera/M240.cpp b/Marlin/src/gcode/feature/camera/M240.cpp index 19051ffd42..cf2e47ef6d 100644 --- a/Marlin/src/gcode/feature/camera/M240.cpp +++ b/Marlin/src/gcode/feature/camera/M240.cpp @@ -128,11 +128,13 @@ void GcodeSuite::M240() { if (homing_needed_error()) return; - const xyz_pos_t old_pos = { + const xyz_pos_t old_pos = NUM_AXIS_ARRAY( current_position.x + parser.linearval('A'), current_position.y + parser.linearval('B'), - current_position.z - }; + current_position.z, + current_position.i, current_position.j, current_position.k, + current_position.u, current_position.v, current_position.w + ); #ifdef PHOTO_RETRACT_MM const float rval = parser.linearval('R', _PHOTO_RETRACT_MM); @@ -140,7 +142,7 @@ void GcodeSuite::M240() { e_move_m240(-rval, sval); #endif - feedRate_t fr_mm_s = MMM_TO_MMS(parser.linearval('F')); + feedRate_t fr_mm_s = parser.feedrateval('F'); if (fr_mm_s) NOLESS(fr_mm_s, 10.0f); constexpr xyz_pos_t photo_position = PHOTO_POSITION; diff --git a/Marlin/src/gcode/probe/G38.cpp b/Marlin/src/gcode/probe/G38.cpp index 1b2da756b1..5b138fdaf6 100644 --- a/Marlin/src/gcode/probe/G38.cpp +++ b/Marlin/src/gcode/probe/G38.cpp @@ -110,13 +110,7 @@ void GcodeSuite::G38(const int8_t subcode) { remember_feedrate_scaling_off(); - const bool error_on_fail = - #if ENABLED(G38_PROBE_AWAY) - !TEST(subcode, 0) - #else - (subcode == 2) - #endif - ; + const bool error_on_fail = TERN(G38_PROBE_AWAY, !TEST(subcode, 0), subcode == 2); // If any axis has enough movement, do the move LOOP_NUM_AXES(i) diff --git a/Marlin/src/lcd/extui/ui_api.cpp b/Marlin/src/lcd/extui/ui_api.cpp index da04c9bc8b..1075816c43 100644 --- a/Marlin/src/lcd/extui/ui_api.cpp +++ b/Marlin/src/lcd/extui/ui_api.cpp @@ -843,11 +843,13 @@ namespace ExtUI { #endif // BABYSTEPPING float getZOffset_mm() { - return (0.0f + return ( #if HAS_BED_PROBE - + probe.offset.z + probe.offset.z #elif ENABLED(BABYSTEP_DISPLAY_TOTAL) - + planner.mm_per_step[Z_AXIS] * babystep.axis_total[BS_AXIS_IND(Z_AXIS)] + planner.mm_per_step[Z_AXIS] * babystep.axis_total[BS_AXIS_IND(Z_AXIS)] + #else + 0.0f #endif ); } diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h index d9d43427c2..fdb556abe8 100644 --- a/Marlin/src/lcd/language/language_fr.h +++ b/Marlin/src/lcd/language/language_fr.h @@ -367,7 +367,7 @@ namespace Language_fr { LSTR MSG_STOPPED = _UxGT("STOPPÉ"); LSTR MSG_CONTROL_RETRACT = _UxGT("Rétractation mm"); LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Ech. rétr. mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Vit. rétract°"); + LSTR MSG_CONTROL_RETRACTF = _UxGT("Vit. rétract") LCD_STR_DEGREE; LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Saut Z mm"); LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Rét.reprise mm"); LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Ech.reprise mm"); @@ -378,7 +378,7 @@ namespace Language_fr { LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Augmenter Z"); LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Vitesse primaire"); LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Purge Retract"); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Vitesse rétract°"); + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Vitesse rétract") LCD_STR_DEGREE; LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Garer Extrudeur"); LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Vitesse reprise"); LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Vit. ventil."); diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index b8a08afc22..b9cb0c5ebf 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -218,10 +218,10 @@ namespace Language_ru { LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Построить свою сетку"); LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Правка сетки завершена"); #else - LSTR MSG_UBL_SET_TEMP_BED = LCD_STR_THERMOMETER _UxGT(" стола, ") LCD_STR_DEGREE "C"; - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" стола,") LCD_STR_DEGREE "C"; - LSTR MSG_UBL_SET_TEMP_HOTEND = LCD_STR_THERMOMETER _UxGT(" сопла, ") LCD_STR_DEGREE "C"; - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" сопла,") LCD_STR_DEGREE "C"; + LSTR MSG_UBL_SET_TEMP_BED = LCD_STR_THERMOMETER _UxGT(" стола, ") LCD_STR_DEGREE _UxGT("C"); + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" стола,") LCD_STR_DEGREE _UxGT("C"); + LSTR MSG_UBL_SET_TEMP_HOTEND = LCD_STR_THERMOMETER _UxGT(" сопла, ") LCD_STR_DEGREE _UxGT("C"); + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" сопла,") LCD_STR_DEGREE _UxGT("C"); LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Построить свою"); LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Правка завершена"); #endif @@ -343,12 +343,12 @@ namespace Language_ru { LSTR MSG_MOVE_100MM = _UxGT("Движение 100mm"); LSTR MSG_SPEED = _UxGT("Скорость"); LSTR MSG_BED_Z = _UxGT("Z стола"); - LSTR MSG_NOZZLE = _UxGT("Сопло, ") LCD_STR_DEGREE "C"; + LSTR MSG_NOZZLE = _UxGT("Сопло, ") LCD_STR_DEGREE _UxGT("C"); LSTR MSG_NOZZLE_N = _UxGT("Сопло ~"); LSTR MSG_NOZZLE_PARKED = _UxGT("Сопло запарковано"); LSTR MSG_NOZZLE_STANDBY = _UxGT("Сопло ожидает"); - LSTR MSG_BED = _UxGT("Стол, ") LCD_STR_DEGREE "C"; - LSTR MSG_CHAMBER = _UxGT("Камера,") LCD_STR_DEGREE "C"; + LSTR MSG_BED = _UxGT("Стол, ") LCD_STR_DEGREE _UxGT("C"); + LSTR MSG_CHAMBER = _UxGT("Камера,") LCD_STR_DEGREE _UxGT("C"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 LSTR MSG_COOLER = _UxGT("Охлаждение лазера"); LSTR MSG_COOLER_TOGGLE = _UxGT("Переключ. охлажд."); diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h index 16f3c95278..f4e7741f93 100644 --- a/Marlin/src/lcd/language/language_uk.h +++ b/Marlin/src/lcd/language/language_uk.h @@ -213,10 +213,10 @@ namespace Language_uk { LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Рух до наступної"); LSTR MSG_UBL_ACTIVATE_MESH = _UxGT("Активувати UBL"); LSTR MSG_UBL_DEACTIVATE_MESH = _UxGT("Деактивувати UBL"); - LSTR MSG_UBL_SET_TEMP_BED = LCD_STR_THERMOMETER _UxGT(" столу, ") LCD_STR_DEGREE "C"; - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" столу,") LCD_STR_DEGREE "C"; - LSTR MSG_UBL_SET_TEMP_HOTEND = LCD_STR_THERMOMETER _UxGT(" сопла, ") LCD_STR_DEGREE "C"; - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" сопла,") LCD_STR_DEGREE "C"; + LSTR MSG_UBL_SET_TEMP_BED = LCD_STR_THERMOMETER _UxGT(" столу, ") LCD_STR_DEGREE _UxGT("C"); + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" столу,") LCD_STR_DEGREE _UxGT("C"); + LSTR MSG_UBL_SET_TEMP_HOTEND = LCD_STR_THERMOMETER _UxGT(" сопла, ") LCD_STR_DEGREE _UxGT("C"); + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" сопла,") LCD_STR_DEGREE _UxGT("C"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Редагувати свою сітку"); LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Точне редагування сітки"); @@ -344,12 +344,12 @@ namespace Language_uk { LSTR MSG_MOVE_100MM = _UxGT("Рух 100mm"); LSTR MSG_SPEED = _UxGT("Швидкість"); LSTR MSG_BED_Z = _UxGT("Z Столу"); - LSTR MSG_NOZZLE = _UxGT("Сопло, ") LCD_STR_DEGREE "C"; + LSTR MSG_NOZZLE = _UxGT("Сопло, ") LCD_STR_DEGREE _UxGT("C"); LSTR MSG_NOZZLE_N = _UxGT("Сопло ~"); LSTR MSG_NOZZLE_PARKED = _UxGT("Сопло запарковане"); LSTR MSG_NOZZLE_STANDBY = _UxGT("Сопло очікує"); - LSTR MSG_BED = _UxGT("Стіл, ") LCD_STR_DEGREE "C"; - LSTR MSG_CHAMBER = _UxGT("Камера,") LCD_STR_DEGREE "C"; + LSTR MSG_BED = _UxGT("Стіл, ") LCD_STR_DEGREE _UxGT("C"); + LSTR MSG_CHAMBER = _UxGT("Камера,") LCD_STR_DEGREE _UxGT("C"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 LSTR MSG_COOLER = _UxGT("Охолодження лазеру"); LSTR MSG_COOLER_TOGGLE = _UxGT("Перемк. охолодж."); diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 91982b5480..5d264198a3 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -833,7 +833,7 @@ void MarlinUI::init() { // Apply a linear offset to a single axis if (axis == ALL_AXES_ENUM) destination = all_axes_destination; - else if (axis <= XYZE) { + else if (axis <= LOGICAL_AXES) { destination = current_position; destination[axis] += offset; } diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 7c90ae7159..b32368ca92 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -555,7 +555,7 @@ void _internal_move_to_destination(const_feedRate_t fr_mm_s/*=0.0f*/ * - Delta may lower Z first to get into the free motion zone. * - Before returning, wait for the planner buffer to empty. */ -void do_blocking_move_to(NUM_AXIS_ARGS(const float), const_feedRate_t fr_mm_s/*=0.0f*/) { +void do_blocking_move_to(NUM_AXIS_ARGS(const_float_t), const_feedRate_t fr_mm_s/*=0.0f*/) { DEBUG_SECTION(log_move, "do_blocking_move_to", DEBUGGING(LEVELING)); if (DEBUGGING(LEVELING)) DEBUG_XYZ("> ", NUM_AXIS_ARGS()); @@ -2281,25 +2281,18 @@ void prepare_line_to_destination() { #endif // Put away the Z probe - #if HOMING_Z_WITH_PROBE - if (axis == Z_AXIS && probe.stow()) return; - #endif + if (TERN0(HOMING_Z_WITH_PROBE, axis == Z_AXIS && probe.stow())) return; #if DISABLED(DELTA) && defined(HOMING_BACKOFF_POST_MM) const xyz_float_t endstop_backoff = HOMING_BACKOFF_POST_MM; if (endstop_backoff[axis]) { current_position[axis] -= ABS(endstop_backoff[axis]) * axis_home_dir; - line_to_current_position( - #if HOMING_Z_WITH_PROBE - (axis == Z_AXIS) ? z_probe_fast_mm_s : - #endif - homing_feedrate(axis) - ); + line_to_current_position(TERN_(HOMING_Z_WITH_PROBE, (axis == Z_AXIS) ? z_probe_fast_mm_s :) homing_feedrate(axis)); #if ENABLED(SENSORLESS_HOMING) planner.synchronize(); if (false - #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) + #ifdef NORMAL_AXIS || axis != NORMAL_AXIS #endif ) safe_delay(200); // Short delay to allow belts to spring back @@ -2406,7 +2399,7 @@ void set_axis_is_at_home(const AxisEnum axis) { * Change the home offset for an axis. * Also refreshes the workspace offset. */ - void set_home_offset(const AxisEnum axis, const float v) { + void set_home_offset(const AxisEnum axis, const_float_t v) { home_offset[axis] = v; update_workspace_offset(axis); } diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index 8950cf6f22..f0e4094f0f 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -346,7 +346,7 @@ inline void prepare_internal_move_to_destination(const_feedRate_t fr_mm_s=0.0f) /** * Blocking movement and shorthand functions */ -void do_blocking_move_to(NUM_AXIS_ARGS(const float), const_feedRate_t fr_mm_s=0.0f); +void do_blocking_move_to(NUM_AXIS_ARGS(const_float_t), const_feedRate_t fr_mm_s=0.0f); void do_blocking_move_to(const xy_pos_t &raw, const_feedRate_t fr_mm_s=0.0f); void do_blocking_move_to(const xyz_pos_t &raw, const_feedRate_t fr_mm_s=0.0f); void do_blocking_move_to(const xyze_pos_t &raw, const_feedRate_t fr_mm_s=0.0f); @@ -618,7 +618,7 @@ void home_if_needed(const bool keeplev=false); #endif #if HAS_M206_COMMAND - void set_home_offset(const AxisEnum axis, const float v); + void set_home_offset(const AxisEnum axis, const_float_t v); #endif #if USE_SENSORLESS diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index aceaf8a253..46aff32481 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -2192,7 +2192,7 @@ bool Planner::_populate_block( #endif ); - #if SECONDARY_LINEAR_AXES >= 1 && NONE(FOAMCUTTER_XYUV, ARTICULATED_ROBOT_ARM) + #if SECONDARY_LINEAR_AXES && NONE(FOAMCUTTER_XYUV, ARTICULATED_ROBOT_ARM) if (UNEAR_ZERO(distance_sqr)) { // Move does not involve any primary linear axes (xyz) but might involve secondary linear axes distance_sqr = (0.0f diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index fa92ae1fb5..f0a3c8584b 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -152,7 +152,7 @@ xyz_pos_t Probe::offset; // Initialized by settings.load() #elif ENABLED(TOUCH_MI_PROBE) // Move to the magnet to unlock the probe - inline void run_deploy_moves_script() { + inline void run_deploy_moves() { #ifndef TOUCH_MI_DEPLOY_XPOS #define TOUCH_MI_DEPLOY_XPOS X_MIN_POS #elif TOUCH_MI_DEPLOY_XPOS > X_MAX_BED @@ -183,16 +183,17 @@ xyz_pos_t Probe::offset; // Initialized by settings.load() } // Move down to the bed to stow the probe - inline void run_stow_moves_script() { - const xyz_pos_t oldpos = current_position; + // TODO: Handle cases where it would be a bad idea to move down. + inline void run_stow_moves() { + const float oldz = current_position.z; endstops.enable_z_probe(false); do_blocking_move_to_z(TOUCH_MI_RETRACT_Z, homing_feedrate(Z_AXIS)); - do_blocking_move_to(oldpos, homing_feedrate(Z_AXIS)); + do_blocking_move_to_z(oldz, homing_feedrate(Z_AXIS)); } #elif ENABLED(Z_PROBE_ALLEN_KEY) - inline void run_deploy_moves_script() { + inline void run_deploy_moves() { #ifdef Z_PROBE_ALLEN_KEY_DEPLOY_1 #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE 0.0 @@ -230,7 +231,7 @@ xyz_pos_t Probe::offset; // Initialized by settings.load() #endif } - inline void run_stow_moves_script() { + inline void run_stow_moves() { #ifdef Z_PROBE_ALLEN_KEY_STOW_1 #ifndef Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE 0.0 @@ -272,7 +273,7 @@ xyz_pos_t Probe::offset; // Initialized by settings.load() typedef struct { float fr_mm_min; xyz_pos_t where; } mag_probe_move_t; - inline void run_deploy_moves_script() { + inline void run_deploy_moves() { #ifdef MAG_MOUNTED_DEPLOY_1 constexpr mag_probe_move_t deploy_1 = MAG_MOUNTED_DEPLOY_1; do_blocking_move_to(deploy_1.where, MMM_TO_MMS(deploy_1.fr_mm_min)); @@ -295,7 +296,7 @@ xyz_pos_t Probe::offset; // Initialized by settings.load() #endif } - inline void run_stow_moves_script() { + inline void run_stow_moves() { #ifdef MAG_MOUNTED_STOW_1 constexpr mag_probe_move_t stow_1 = MAG_MOUNTED_STOW_1; do_blocking_move_to(stow_1.where, MMM_TO_MMS(stow_1.fr_mm_min)); @@ -406,7 +407,7 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { #elif ANY(TOUCH_MI_PROBE, Z_PROBE_ALLEN_KEY, MAG_MOUNTED_PROBE) - deploy ? run_deploy_moves_script() : run_stow_moves_script(); + deploy ? run_deploy_moves() : run_stow_moves(); #elif ENABLED(RACK_AND_PINION_PROBE) diff --git a/buildroot/share/PlatformIO/scripts/configuration.py b/buildroot/share/PlatformIO/scripts/configuration.py index 42fc91038e..7a07f02d46 100644 --- a/buildroot/share/PlatformIO/scripts/configuration.py +++ b/buildroot/share/PlatformIO/scripts/configuration.py @@ -90,7 +90,7 @@ def fetch_example(url): if '@' in url: url, brch = map(str.strip, url.split('@')) url = f"https://raw.githubusercontent.com/MarlinFirmware/Configurations/{brch}/config/{url}" url = url.replace("%", "%25").replace(" ", "%20") - + # Find a suitable fetch command if shutil.which("curl") is not None: fetch = "curl -L -s -S -f -o" From a6b677f0ac5f8a29bb5226eb0e43756969629319 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 8 Feb 2023 20:29:37 -0600 Subject: [PATCH 012/659] =?UTF-8?q?=F0=9F=A9=B9=20Extra=20axes=20for=20Too?= =?UTF-8?q?l=20Change?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/tool_change.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index 74e99ac093..16b562e482 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -1350,6 +1350,14 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { #else do_blocking_move_to_xy(destination, planner.settings.max_feedrate_mm_s[X_AXIS]); do_blocking_move_to_z(destination.z, planner.settings.max_feedrate_mm_s[Z_AXIS]); + SECONDARY_AXIS_CODE( + do_blocking_move_to_i(destination.i, planner.settings.max_feedrate_mm_s[I_AXIS]), + do_blocking_move_to_j(destination.j, planner.settings.max_feedrate_mm_s[J_AXIS]), + do_blocking_move_to_k(destination.k, planner.settings.max_feedrate_mm_s[K_AXIS]), + do_blocking_move_to_u(destination.u, planner.settings.max_feedrate_mm_s[U_AXIS]), + do_blocking_move_to_v(destination.v, planner.settings.max_feedrate_mm_s[V_AXIS]), + do_blocking_move_to_w(destination.w, planner.settings.max_feedrate_mm_s[W_AXIS]) + ); #endif #endif From 339773dcb5e8912e3bad2d916ff8c8ebb617694a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 8 Feb 2023 20:31:02 -0600 Subject: [PATCH 013/659] =?UTF-8?q?=F0=9F=A9=B9=20Extra=20axis=20min=20hom?= =?UTF-8?q?e=20with=20Delta=20Sensorless=20Probe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/endstops.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index f4fbda747b..cabb0fbf19 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -691,15 +691,9 @@ void __O2 Endstops::report_states() { } // Endstops::report_states -#if HAS_DELTA_SENSORLESS_PROBING - #define __ENDSTOP(AXIS, ...) AXIS ##_MAX - #define _ENDSTOP_PIN(AXIS, ...) AXIS ##_MAX_PIN - #define _ENDSTOP_INVERTING(AXIS, ...) AXIS ##_MAX_ENDSTOP_INVERTING -#else - #define __ENDSTOP(AXIS, MINMAX) AXIS ##_## MINMAX - #define _ENDSTOP_PIN(AXIS, MINMAX) AXIS ##_## MINMAX ##_PIN - #define _ENDSTOP_INVERTING(AXIS, MINMAX) AXIS ##_## MINMAX ##_ENDSTOP_INVERTING -#endif +#define __ENDSTOP(AXIS, MINMAX) AXIS ##_## MINMAX +#define _ENDSTOP_PIN(AXIS, MINMAX) AXIS ##_## MINMAX ##_PIN +#define _ENDSTOP_INVERTING(AXIS, MINMAX) AXIS ##_## MINMAX ##_ENDSTOP_INVERTING #define _ENDSTOP(AXIS, MINMAX) __ENDSTOP(AXIS, MINMAX) /** From 3cd9599155aa46e4abcdfab8971e0afc27514a2b Mon Sep 17 00:00:00 2001 From: Alexander Gavrilenko Date: Thu, 9 Feb 2023 06:12:26 +0300 Subject: [PATCH 014/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=208-bit=20FSMC=20AA?= =?UTF-8?q?=20font=20colors=20(#25285)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/tft/canvas.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Marlin/src/lcd/tft/canvas.cpp b/Marlin/src/lcd/tft/canvas.cpp index 64cb29ade6..3fb500e8e2 100644 --- a/Marlin/src/lcd/tft/canvas.cpp +++ b/Marlin/src/lcd/tft/canvas.cpp @@ -74,6 +74,12 @@ void CANVAS::AddText(uint16_t x, uint16_t y, uint16_t color, uint16_t *string, u uint16_t colors[16]; uint16_t stringWidth = 0; + if (GetFontType() == FONT_MARLIN_GLYPHS_2BPP) { + for (uint8_t i = 0; i < 3; i++) { + colors[i] = gradient(ENDIAN_COLOR(color), ENDIAN_COLOR(background_color), ((i+1) << 8) / 3); + colors[i] = ENDIAN_COLOR(colors[i]); + } + } for (uint16_t i = 0 ; *(string + i) ; i++) { glyph_t *glyph = Glyph(string + i); if (stringWidth + glyph->BBXWidth > maxWidth) break; @@ -82,8 +88,6 @@ void CANVAS::AddText(uint16_t x, uint16_t y, uint16_t color, uint16_t *string, u AddImage(x + stringWidth + glyph->BBXOffsetX, y + GetFontAscent() - glyph->BBXHeight - glyph->BBXOffsetY, glyph->BBXWidth, glyph->BBXHeight, GREYSCALE1, ((uint8_t *)glyph) + sizeof(glyph_t), &color); break; case FONT_MARLIN_GLYPHS_2BPP: - for (uint8_t i = 0; i < 3; i++) - colors[i] = gradient(color, background_color, ((i+1) << 8) / 3); AddImage(x + stringWidth + glyph->BBXOffsetX, y + GetFontAscent() - glyph->BBXHeight - glyph->BBXOffsetY, glyph->BBXWidth, glyph->BBXHeight, GREYSCALE2, ((uint8_t *)glyph) + sizeof(glyph_t), colors); break; } From 8a9de407a1105a1b21274bfd018d9aabd6ab9df5 Mon Sep 17 00:00:00 2001 From: EvilGremlin <22657714+EvilGremlin@users.noreply.github.com> Date: Thu, 9 Feb 2023 06:46:02 +0300 Subject: [PATCH 015/659] =?UTF-8?q?=F0=9F=94=A8=20Adjust=20INI=20comments?= =?UTF-8?q?=20(#25183)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ini/renamed.ini | 33 +++++++++++---------------------- ini/stm32f1-maple.ini | 2 +- ini/stm32f1.ini | 15 ++++++++++++++- ini/stm32g0.ini | 3 +++ 4 files changed, 29 insertions(+), 24 deletions(-) diff --git a/ini/renamed.ini b/ini/renamed.ini index fa154f3a0f..cd890b593c 100644 --- a/ini/renamed.ini +++ b/ini/renamed.ini @@ -21,46 +21,35 @@ board = genericSTM32F103RE # List of environment names that are no longer used # -[env:STM32F103RET6_creality_maple] -# Renamed to STM32F103RE_creality_maple +[env:STM32F103RET6_creality_maple] ;=> STM32F103RE_creality_maple extends = renamed -[env:STM32F103RET6_creality] -# Renamed to STM32F103RE_creality +[env:STM32F103RET6_creality] ;=> STM32F103RE_creality extends = renamed -[env:STM32F103RET6_creality_xfer] -# Renamed to STM32F103RE_creality_xfer +[env:STM32F103RET6_creality_xfer] ;=> STM32F103RE_creality_xfer extends = renamed -[env:STM32F103RC_btt_512K] -# Renamed to STM32F103RE_btt +[env:STM32F103RC_btt_512K] ;=> STM32F103RE_btt extends = renamed -[env:STM32F103RC_btt_512K_USB] -# Renamed to STM32F103RE_btt_USB +[env:STM32F103RC_btt_512K_USB] ;=> STM32F103RE_btt_USB extends = renamed -[env:STM32F103RC_btt_512K_maple] -# Renamed to STM32F103RE_btt_maple +[env:STM32F103RC_btt_512K_maple] ;=> STM32F103RE_btt_maple extends = renamed -[env:STM32F103RC_btt_512K_USB_maple] -# Renamed to STM32F103RE_btt_USB_maple +[env:STM32F103RC_btt_512K_USB_maple] ;=> STM32F103RE_btt_USB_maple extends = renamed -[env:STM32F103RC_meeb] -# Renamed to STM32F103RC_meeb_maple +[env:STM32F103RC_meeb] ;=> STM32F103RC_meeb_maple extends = renamed -[env:STM32F103VE_GTM32] -# Renamed to STM32F103VE_GTM32_maple +[env:STM32F103VE_GTM32] ;=> STM32F103VE_GTM32_maple extends = renamed -[env:mks_robin_nano35] -# Renamed to mks_robin_nano_v1v2 +[env:mks_robin_nano35] ;=> mks_robin_nano_v1v2 extends = renamed -[env:mks_robin_nano35_maple] -# Renamed to mks_robin_nano_v1v2_maple +[env:mks_robin_nano35_maple] ;=> mks_robin_nano_v1v2_maple extends = renamed diff --git a/ini/stm32f1-maple.ini b/ini/stm32f1-maple.ini index 2e3cd0a37a..dc75774754 100644 --- a/ini/stm32f1-maple.ini +++ b/ini/stm32f1-maple.ini @@ -137,7 +137,7 @@ debug_tool = jlink upload_protocol = jlink # -# Creality (STM32F103RET6) +# Creality 512K (STM32F103RE) for new 64KiB bootloader (CR-10 Smart Pro printer) # [env:STM32F103RE_creality_smartPro_maple] extends = env:STM32F103RE_creality_maple diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini index d8db3628c3..1adc83a8f9 100644 --- a/ini/stm32f1.ini +++ b/ini/stm32f1.ini @@ -135,7 +135,11 @@ debug_tool = jlink upload_protocol = jlink # -# Custom upload to SD via Marlin with Binary Protocol +# Creality (STM32F103Rx) +# With custom upload to SD via Marlin with binary protocol. +# Requires Marlin with BINARY_FILE_TRANSFER already installed on the target board. +# If CUSTOM_FIRMWARE_UPLOAD is also installed, Marlin will reboot the board to install the firmware. +# Currently CUSTOM_FIRMWARE_UPLOAD must also be enabled to use 'xfer' build envs. # [STM32F103Rx_creality_xfer] extends = STM32F103Rx_creality @@ -151,10 +155,16 @@ upload_protocol = custom extends = STM32F103Rx_creality board = genericSTM32F103RE +# +# Creality 512K (STM32F103RE) with custom binary upload to SD (see above). +# [env:STM32F103RE_creality_xfer] extends = STM32F103Rx_creality_xfer board = genericSTM32F103RE +# +# Creality 512K (STM32F103RE) for new 64KiB bootloader (CR-10 Smart Pro printer) +# [env:STM32F103RE_creality_smartPro] extends = STM32F103Rx_creality board_build.offset = 0x10000 @@ -167,6 +177,9 @@ board_upload.offset_address = 0x08010000 extends = STM32F103Rx_creality board = genericSTM32F103RC +# +# Creality 256K (STM32F103RC) with custom binary upload to SD (see above). +# [env:STM32F103RC_creality_xfer] extends = STM32F103Rx_creality_xfer board = genericSTM32F103RC diff --git a/ini/stm32g0.ini b/ini/stm32g0.ini index c8554741bc..5891395642 100644 --- a/ini/stm32g0.ini +++ b/ini/stm32g0.ini @@ -61,6 +61,9 @@ debug_tool = stlink # # BigTreeTech SKR Mini E3 V3.0 / Manta E3 EZ V1.0 / Manta M4P V1.0 / Manta M5P V1.0 (STM32G0B1RET6 ARM Cortex-M0+) # Custom upload to SD via Marlin with Binary Protocol +# Requires Marlin with BINARY_FILE_TRANSFER already installed on the target board. +# If CUSTOM_FIRMWARE_UPLOAD is also installed, Marlin will reboot the board to install the firmware. +# Currently CUSTOM_FIRMWARE_UPLOAD must also be enabled to use 'xfer' build envs. # [env:STM32G0B1RE_btt_xfer] extends = env:STM32G0B1RE_btt From ef3f484d3ca620272f849b913851541b54b51c09 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 9 Feb 2023 06:33:20 +0000 Subject: [PATCH 016/659] [cron] Bump distribution date (2023-02-09) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 209bc401af..532ab7cd9c 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-08" +//#define STRING_DISTRIBUTION_DATE "2023-02-09" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 83e546be60..82c353feff 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-08" + #define STRING_DISTRIBUTION_DATE "2023-02-09" #endif /** From 58d6b5db0a91ec5b8f949df138a9912c059cfdcd Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 11 Feb 2023 21:29:32 -0600 Subject: [PATCH 017/659] =?UTF-8?q?=F0=9F=94=A8=20Suppress=20native=20buil?= =?UTF-8?q?d=20warnings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ini/native.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ini/native.ini b/ini/native.ini index 7ed705a782..6a0cce38e8 100644 --- a/ini/native.ini +++ b/ini/native.ini @@ -37,7 +37,7 @@ build_src_filter = ${common.default_src_filter} + platform = native framework = build_flags = ${common.build_flags} -std=gnu++17 -D__PLAT_NATIVE_SIM__ -DU8G_HAL_LINKS -I/usr/include/SDL2 -IMarlin -IMarlin/src/HAL/NATIVE_SIM/u8g -build_src_flags = -Wall -Wno-expansion-to-defined -Wcast-align +build_src_flags = -Wall -Wno-expansion-to-defined -Wno-deprecated-declarations -Wcast-align release_flags = -g0 -O3 -flto debug_build_flags = -fstack-protector-strong -g -g3 -ggdb lib_compat_mode = off From db01960a0e8a7d37173914c601a9bf413f911a86 Mon Sep 17 00:00:00 2001 From: Trivalik <3148279+trivalik@users.noreply.github.com> Date: Sun, 12 Feb 2023 05:14:53 +0100 Subject: [PATCH 018/659] =?UTF-8?q?=F0=9F=9A=B8=20Negative=20temperature?= =?UTF-8?q?=20display=20option=20(#25036)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration_adv.h | 3 +++ Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 14 +++++++++-- Marlin/src/lcd/dogm/status_screen_DOGM.cpp | 26 +++++++++++++++------ 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 31cbd678bf..a9e6d4928f 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1455,6 +1455,9 @@ // Show the E position (filament used) during printing //#define LCD_SHOW_E_TOTAL + // Display a negative temperature instead of "err" + //#define SHOW_TEMPERATURE_BELOW_ZERO + /** * LED Control Menu * Add LED Control to the LCD menu diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index 9445198a22..9093fa3eab 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -537,7 +537,7 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const */ FORCE_INLINE void _draw_heater_status(const heater_id_t heater_id, const char prefix, const bool blink) { #if HAS_HEATED_BED - const bool isBed = TERN(HAS_HEATED_CHAMBER, heater_id == H_BED, heater_id < 0); + const bool isBed = heater_id == H_BED; const celsius_t t1 = (isBed ? thermalManager.wholeDegBed() : thermalManager.wholeDegHotend(heater_id)), t2 = (isBed ? thermalManager.degTargetBed() : thermalManager.degTargetHotend(heater_id)); #else @@ -546,7 +546,17 @@ FORCE_INLINE void _draw_heater_status(const heater_id_t heater_id, const char pr if (prefix >= 0) lcd_put_lchar(prefix); - lcd_put_u8str(t1 < 0 ? "err" : i16tostr3rj(t1)); + if (t1 >= 0) + lcd_put_u8str(ui16tostr3rj(t1)); + else { + #if ENABLED(SHOW_TEMPERATURE_BELOW_ZERO) + char * const str = i16tostr3rj(t1); + lcd_put_u8str(&str[1]); + #else + lcd_put_u8str(F("err")); + #endif + } + lcd_put_u8str(F("/")); #if !HEATER_IDLE_HANDLER diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp index 8bdba42342..721dcb63ff 100644 --- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp +++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp @@ -192,14 +192,26 @@ #define PROGRESS_BAR_WIDTH (LCD_PIXEL_WIDTH - PROGRESS_BAR_X) FORCE_INLINE void _draw_centered_temp(const celsius_t temp, const uint8_t tx, const uint8_t ty) { - if (temp < 0) - lcd_put_u8str(tx - 3 * (INFO_FONT_WIDTH) / 2 + 1, ty, F("err")); - else { - const char *str = i16tostr3rj(temp); - const uint8_t len = str[0] != ' ' ? 3 : str[1] != ' ' ? 2 : 1; - lcd_put_u8str(tx - len * (INFO_FONT_WIDTH) / 2 + 1, ty, &str[3-len]); - lcd_put_lchar(LCD_STR_DEGREE[0]); + const char *str; + uint8_t len; + if (temp >= 0) { + str = i16tostr3left(temp); + len = strlen(str); + lcd_moveto(tx + 1 - len * (INFO_FONT_WIDTH) / 2, ty); } + else { + #if ENABLED(SHOW_TEMPERATURE_BELOW_ZERO) + str = i16tostr3left((-temp) % 100); + len = strlen(str) + 1; + lcd_moveto(tx + 1 - len * (INFO_FONT_WIDTH) / 2, ty); + lcd_put_lchar('-'); + #else + lcd_put_u8str(tx + 1 - 3 * (INFO_FONT_WIDTH) / 2, ty, F("err")); + return; + #endif + } + lcd_put_u8str(str); + lcd_put_lchar(LCD_STR_DEGREE[0]); } #if DO_DRAW_FLOWMETER From 0ddce13ebee0e8262c902c5d782b324451a8b544 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 12 Feb 2023 06:05:48 +0000 Subject: [PATCH 019/659] [cron] Bump distribution date (2023-02-12) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 532ab7cd9c..963999d392 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-09" +//#define STRING_DISTRIBUTION_DATE "2023-02-12" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 82c353feff..1899d61a03 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-09" + #define STRING_DISTRIBUTION_DATE "2023-02-12" #endif /** From c421a2f5dd8e32e48afadee304301befaf40fd49 Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Sun, 12 Feb 2023 07:35:19 +0100 Subject: [PATCH 020/659] =?UTF-8?q?=E2=9C=A8=20M306=20E=20for=20MPC=20extr?= =?UTF-8?q?uder=20index=20(#25326)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Scott Lahteine --- Marlin/src/gcode/temp/M306.cpp | 17 ++++++++---- Marlin/src/lcd/e3v2/proui/dwin.cpp | 2 +- Marlin/src/module/temperature.cpp | 44 +++++++++++++++++------------- Marlin/src/module/temperature.h | 2 +- 4 files changed, 39 insertions(+), 26 deletions(-) diff --git a/Marlin/src/gcode/temp/M306.cpp b/Marlin/src/gcode/temp/M306.cpp index 582eb13f81..928f375c38 100644 --- a/Marlin/src/gcode/temp/M306.cpp +++ b/Marlin/src/gcode/temp/M306.cpp @@ -31,11 +31,13 @@ /** * M306: MPC settings and autotune * - * T Autotune the active extruder. + * E Extruder index. (Default: Active Extruder) * + * T Autotune the specified or active extruder. + * + * Set MPC values manually for the specified or active extruder: * A Ambient heat transfer coefficient (no fan). * C Block heat capacity. - * E Extruder number to set. (Default: E0) * F Ambient heat transfer coefficient (fan on full). * H Filament heat capacity per mm. * P Heater power. @@ -43,16 +45,21 @@ */ void GcodeSuite::M306() { + const uint8_t e = TERN(HAS_MULTI_EXTRUDER, parser.intval('E', active_extruder), 0); + if (e >= (EXTRUDERS)) { + SERIAL_ECHOLNPGM("?(E)xtruder index out of range (0-", (EXTRUDERS) - 1, ")."); + return; + } + if (parser.seen_test('T')) { LCD_MESSAGE(MSG_MPC_AUTOTUNE); - thermalManager.MPC_autotune(); + thermalManager.MPC_autotune(e); ui.reset_status(); return; } if (parser.seen("ACFPRH")) { - const heater_id_t hid = (heater_id_t)parser.intval('E', 0); - MPC_t &mpc = thermalManager.temp_hotend[hid].mpc; + MPC_t &mpc = thermalManager.temp_hotend[e].mpc; if (parser.seenval('P')) mpc.heater_power = parser.value_float(); if (parser.seenval('C')) mpc.block_heat_capacity = parser.value_float(); if (parser.seenval('R')) mpc.sensor_responsiveness = parser.value_float(); diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index c45aae6044..ae10f0e84e 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -3542,7 +3542,7 @@ void Draw_Steps_Menu() { #if ENABLED(MPCTEMP) - void HotendMPC() { thermalManager.MPC_autotune(); } + void HotendMPC() { thermalManager.MPC_autotune(active_extruder); } void SetHeaterPower() { SetPFloatOnClick(1, 200, 1); } void SetBlkHeatCapacity() { SetPFloatOnClick(0, 40, 2); } void SetSensorRespons() { SetPFloatOnClick(0, 1, 4); } diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 4b0ee355d4..f3a1dc7afe 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -884,19 +884,23 @@ volatile bool Temperature::raw_temps_ready = false; #if ENABLED(MPCTEMP) - void Temperature::MPC_autotune() { - auto housekeeping = [] (millis_t &ms, celsius_float_t ¤t_temp, millis_t &next_report_ms) { + #if EITHER(MPC_FAN_0_ALL_HOTENDS, MPC_FAN_0_ACTIVE_HOTEND) + #define SINGLEFAN 1 + #endif + + void Temperature::MPC_autotune(const uint8_t e) { + auto housekeeping = [] (millis_t &ms, const uint8_t e, celsius_float_t ¤t_temp, millis_t &next_report_ms) { ms = millis(); if (updateTemperaturesIfReady()) { // temp sample ready - current_temp = degHotend(active_extruder); + current_temp = degHotend(e); TERN_(HAS_FAN_LOGIC, manage_extruder_fans(ms)); } if (ELAPSED(ms, next_report_ms)) { next_report_ms += 1000UL; - print_heater_states(active_extruder); + print_heater_states(e); SERIAL_EOL(); } @@ -914,15 +918,17 @@ volatile bool Temperature::raw_temps_ready = false; }; struct OnExit { + uint8_t e; + OnExit(const uint8_t _e) { this->e = _e; } ~OnExit() { wait_for_heatup = false; ui.reset_status(); - temp_hotend[active_extruder].target = 0.0f; - temp_hotend[active_extruder].soft_pwm_amount = 0; + temp_hotend[e].target = 0.0f; + temp_hotend[e].soft_pwm_amount = 0; #if HAS_FAN - set_fan_speed(EITHER(MPC_FAN_0_ALL_HOTENDS, MPC_FAN_0_ACTIVE_HOTEND) ? 0 : active_extruder, 0); + set_fan_speed(TERN(SINGLEFAN, 0, e), 0); planner.sync_fan_speeds(fan_speed); #endif @@ -930,11 +936,11 @@ volatile bool Temperature::raw_temps_ready = false; TERN_(TEMP_TUNING_MAINTAIN_FAN, adaptive_fan_slowing = true); } - } on_exit; + } on_exit(e); SERIAL_ECHOPGM(STR_MPC_AUTOTUNE); - SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_START, active_extruder); - MPCHeaterInfo &hotend = temp_hotend[active_extruder]; + SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_START, e); + MPCHeaterInfo &hotend = temp_hotend[e]; MPC_t &mpc = hotend.mpc; TERN_(TEMP_TUNING_MAINTAIN_FAN, adaptive_fan_slowing = false); @@ -944,7 +950,7 @@ volatile bool Temperature::raw_temps_ready = false; disable_all_heaters(); #if HAS_FAN zero_fan_speeds(); - set_fan_speed(EITHER(MPC_FAN_0_ALL_HOTENDS, MPC_FAN_0_ACTIVE_HOTEND) ? 0 : active_extruder, 255); + set_fan_speed(TERN(SINGLEFAN, 0, e), 255); planner.sync_fan_speeds(fan_speed); #endif do_blocking_move_to(xyz_pos_t(MPC_TUNING_POS)); @@ -958,12 +964,12 @@ volatile bool Temperature::raw_temps_ready = false; #endif millis_t ms = millis(), next_report_ms = ms, next_test_ms = ms + 10000UL; - celsius_float_t current_temp = degHotend(active_extruder), + celsius_float_t current_temp = degHotend(e), ambient_temp = current_temp; wait_for_heatup = true; for (;;) { // Can be interrupted with M108 - if (housekeeping(ms, current_temp, next_report_ms)) return; + if (housekeeping(ms, e, current_temp, next_report_ms)) return; if (ELAPSED(ms, next_test_ms)) { if (current_temp >= ambient_temp) { @@ -977,7 +983,7 @@ volatile bool Temperature::raw_temps_ready = false; wait_for_heatup = false; #if HAS_FAN - set_fan_speed(EITHER(MPC_FAN_0_ALL_HOTENDS, MPC_FAN_0_ACTIVE_HOTEND) ? 0 : active_extruder, 0); + set_fan_speed(TERN(SINGLEFAN, 0, e), 0); planner.sync_fan_speeds(fan_speed); #endif @@ -995,7 +1001,7 @@ volatile bool Temperature::raw_temps_ready = false; wait_for_heatup = true; for (;;) { // Can be interrupted with M108 - if (housekeeping(ms, current_temp, next_report_ms)) return; + if (housekeeping(ms, e, current_temp, next_report_ms)) return; if (ELAPSED(ms, next_test_ms)) { // Record samples between 100C and 200C @@ -1054,16 +1060,16 @@ volatile bool Temperature::raw_temps_ready = false; wait_for_heatup = true; for (;;) { // Can be interrupted with M108 - if (housekeeping(ms, current_temp, next_report_ms)) return; + if (housekeeping(ms, e, current_temp, next_report_ms)) return; if (ELAPSED(ms, next_test_ms)) { - hotend.soft_pwm_amount = (int)get_pid_output_hotend(active_extruder) >> 1; + hotend.soft_pwm_amount = (int)get_pid_output_hotend(e) >> 1; if (ELAPSED(ms, settle_end_ms) && !ELAPSED(ms, test_end_ms) && TERN1(HAS_FAN, !fan0_done)) total_energy_fan0 += mpc.heater_power * hotend.soft_pwm_amount / 127 * MPC_dT + (last_temp - current_temp) * mpc.block_heat_capacity; #if HAS_FAN else if (ELAPSED(ms, test_end_ms) && !fan0_done) { - set_fan_speed(EITHER(MPC_FAN_0_ALL_HOTENDS, MPC_FAN_0_ACTIVE_HOTEND) ? 0 : active_extruder, 255); + set_fan_speed(TERN(SINGLEFAN, 0, e), 255); planner.sync_fan_speeds(fan_speed); settle_end_ms = ms + settle_time; test_end_ms = settle_end_ms + test_duration; @@ -1451,7 +1457,7 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { float ambient_xfer_coeff = mpc.ambient_xfer_coeff_fan0; #if ENABLED(MPC_INCLUDE_FAN) - const uint8_t fan_index = EITHER(MPC_FAN_0_ACTIVE_HOTEND, MPC_FAN_0_ALL_HOTENDS) ? 0 : ee; + const uint8_t fan_index = TERN(SINGLEFAN, 0, ee); const float fan_fraction = TERN_(MPC_FAN_0_ACTIVE_HOTEND, !this_hotend ? 0.0f : ) fan_speed[fan_index] * RECIPROCAL(255); ambient_xfer_coeff += fan_fraction * mpc.fan255_adjustment; #endif diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index afbf656a7a..136ed982dd 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -1195,7 +1195,7 @@ class Temperature { #endif #if ENABLED(MPCTEMP) - void MPC_autotune(); + void MPC_autotune(const uint8_t e); #endif #if ENABLED(PROBING_HEATERS_OFF) From 4c136c3dad1284d7c1ece2238c8413f8f97f8392 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 13 Feb 2023 00:44:22 +0000 Subject: [PATCH 021/659] [cron] Bump distribution date (2023-02-13) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 963999d392..61c4caa879 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-12" +//#define STRING_DISTRIBUTION_DATE "2023-02-13" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 1899d61a03..7541c0760a 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-12" + #define STRING_DISTRIBUTION_DATE "2023-02-13" #endif /** From fb480dffe4aefc82ed7c2d9643de7411dfe3e728 Mon Sep 17 00:00:00 2001 From: Radek <46979052+radek8@users.noreply.github.com> Date: Wed, 15 Feb 2023 04:57:39 +0100 Subject: [PATCH 022/659] =?UTF-8?q?=F0=9F=93=9D=20Fix=20BTT=5FMINI=5F12864?= =?UTF-8?q?=5FV1=20comment=20(#25366)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h index 9448d4f0c5..5770f4a5ba 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h @@ -315,8 +315,8 @@ * EXP1-2 ----------- EXP1-9 ENC * EXP1-1 ----------- EXP1-7 LCD_A0 * - * TFT-2 ----------- EXP2-5 SCK - * TFT-3 ----------- EXP2-9 MOSI + * TFT-2 ----------- EXP2-5 MOSI + * TFT-3 ----------- EXP2-9 SCK * * for backlight configuration see steps 2 (V2.1) and 3 in https://wiki.fysetc.com/Mini12864_Panel/ */ From 028b11f2caccef5363a6695798632fdce58348f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davide=20Rombol=C3=A0?= Date: Wed, 15 Feb 2023 05:10:18 +0100 Subject: [PATCH 023/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20DGUS=5FLCD=5FUI=20?= =?UTF-8?q?input=20(#25374)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/extui/ia_creality/creality_extui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp index d9e3cb5877..6742c2c010 100644 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp +++ b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp @@ -689,7 +689,7 @@ namespace ExtUI { case RunoutToggle: case PowerLossToggle: case FanKeyIcon: - case LedToggle: break; + case LedToggle: case e2Preheat: Checkkey = ManualSetTemp; break; case ProbeOffset_Z: Checkkey = Zoffset_Value; break; case VolumeDisplay: Checkkey = VolumeDisplay; break; From aa8afe90b023b0ef1c4bc766566e81b894f66885 Mon Sep 17 00:00:00 2001 From: Frederik Kemner Date: Wed, 15 Feb 2023 05:25:47 +0100 Subject: [PATCH 024/659] =?UTF-8?q?=F0=9F=9A=B8=20SPI=20endstops=20for=20X?= =?UTF-8?q?/Y=20Dual=20and=20Core=20(#25371)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/endstops.cpp | 69 +++++++++++++--------------------- Marlin/src/module/endstops.h | 6 +++ 2 files changed, 33 insertions(+), 42 deletions(-) diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index cabb0fbf19..ef5f5d06e1 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -1330,75 +1330,54 @@ void Endstops::update() { bool hit = false; #if X_SPI_SENSORLESS if (tmc_spi_homing.x && (stepperX.test_stall_status() - #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) && Y_SPI_SENSORLESS + #if Y_SPI_SENSORLESS && ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) || stepperY.test_stall_status() - #elif CORE_IS_XZ && Z_SPI_SENSORLESS + #elif Z_SPI_SENSORLESS && CORE_IS_XZ || stepperZ.test_stall_status() #endif - )) { - SBI(live_state, X_ENDSTOP); - hit = true; - } + )) { SBI(live_state, X_ENDSTOP); hit = true; } + #if ENABLED(X_DUAL_ENDSTOPS) + if (tmc_spi_homing.x && stepperX2.test_stall_status()) { SBI(live_state, X2_ENDSTOP); hit = true; } + #endif #endif #if Y_SPI_SENSORLESS if (tmc_spi_homing.y && (stepperY.test_stall_status() - #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) && X_SPI_SENSORLESS + #if X_SPI_SENSORLESS && ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) || stepperX.test_stall_status() - #elif CORE_IS_YZ && Z_SPI_SENSORLESS + #elif Z_SPI_SENSORLESS && CORE_IS_YZ || stepperZ.test_stall_status() #endif - )) { - SBI(live_state, Y_ENDSTOP); - hit = true; - } + )) { SBI(live_state, Y_ENDSTOP); hit = true; } + #if ENABLED(Y_DUAL_ENDSTOPS) + if (tmc_spi_homing.y && stepperY2.test_stall_status()) { SBI(live_state, Y2_ENDSTOP); hit = true; } + #endif #endif #if Z_SPI_SENSORLESS if (tmc_spi_homing.z && (stepperZ.test_stall_status() - #if CORE_IS_XZ && X_SPI_SENSORLESS + #if X_SPI_SENSORLESS && CORE_IS_XZ || stepperX.test_stall_status() - #elif CORE_IS_YZ && Y_SPI_SENSORLESS + #elif Y_SPI_SENSORLESS && CORE_IS_YZ || stepperY.test_stall_status() #endif - )) { - SBI(live_state, Z_ENDSTOP); - hit = true; - } + )) { SBI(live_state, Z_ENDSTOP); hit = true; } #endif #if I_SPI_SENSORLESS - if (tmc_spi_homing.i && stepperI.test_stall_status()) { - SBI(live_state, I_ENDSTOP); - hit = true; - } + if (tmc_spi_homing.i && stepperI.test_stall_status()) { SBI(live_state, I_ENDSTOP); hit = true; } #endif #if J_SPI_SENSORLESS - if (tmc_spi_homing.j && stepperJ.test_stall_status()) { - SBI(live_state, J_ENDSTOP); - hit = true; - } + if (tmc_spi_homing.j && stepperJ.test_stall_status()) { SBI(live_state, J_ENDSTOP); hit = true; } #endif #if K_SPI_SENSORLESS - if (tmc_spi_homing.k && stepperK.test_stall_status()) { - SBI(live_state, K_ENDSTOP); - hit = true; - } + if (tmc_spi_homing.k && stepperK.test_stall_status()) { SBI(live_state, K_ENDSTOP); hit = true; } #endif #if U_SPI_SENSORLESS - if (tmc_spi_homing.u && stepperU.test_stall_status()) { - SBI(live_state, U_ENDSTOP); - hit = true; - } + if (tmc_spi_homing.u && stepperU.test_stall_status()) { SBI(live_state, U_ENDSTOP); hit = true; } #endif #if V_SPI_SENSORLESS - if (tmc_spi_homing.v && stepperV.test_stall_status()) { - SBI(live_state, V_ENDSTOP); - hit = true; - } + if (tmc_spi_homing.v && stepperV.test_stall_status()) { SBI(live_state, V_ENDSTOP); hit = true; } #endif #if W_SPI_SENSORLESS - if (tmc_spi_homing.w && stepperW.test_stall_status()) { - SBI(live_state, W_ENDSTOP); - hit = true; - } + if (tmc_spi_homing.w && stepperW.test_stall_status()) { SBI(live_state, W_ENDSTOP); hit = true; } #endif if (TERN0(ENDSTOP_INTERRUPTS_FEATURE, hit)) update(); @@ -1408,7 +1387,13 @@ void Endstops::update() { void Endstops::clear_endstop_state() { TERN_(X_SPI_SENSORLESS, CBI(live_state, X_ENDSTOP)); + #if BOTH(X_SPI_SENSORLESS, X_DUAL_ENDSTOPS) + CBI(live_state, X2_ENDSTOP); + #endif TERN_(Y_SPI_SENSORLESS, CBI(live_state, Y_ENDSTOP)); + #if BOTH(Y_SPI_SENSORLESS, Y_DUAL_ENDSTOPS) + CBI(live_state, Y2_ENDSTOP); + #endif TERN_(Z_SPI_SENSORLESS, CBI(live_state, Z_ENDSTOP)); TERN_(I_SPI_SENSORLESS, CBI(live_state, I_ENDSTOP)); TERN_(J_SPI_SENSORLESS, CBI(live_state, J_ENDSTOP)); diff --git a/Marlin/src/module/endstops.h b/Marlin/src/module/endstops.h index bffa7fdc39..4d64455b21 100644 --- a/Marlin/src/module/endstops.h +++ b/Marlin/src/module/endstops.h @@ -85,9 +85,15 @@ enum EndstopEnum : char { // Endstops can be either MIN or MAX but not both #if HAS_X_MIN || HAS_X_MAX , X_ENDSTOP = TERN(X_HOME_TO_MAX, X_MAX, X_MIN) + #if ENABLED(X_DUAL_ENDSTOPS) + , X2_ENDSTOP = TERN(X_HOME_TO_MAX, X2_MAX, X2_MIN) + #endif #endif #if HAS_Y_MIN || HAS_Y_MAX , Y_ENDSTOP = TERN(Y_HOME_TO_MAX, Y_MAX, Y_MIN) + #if ENABLED(Y_DUAL_ENDSTOPS) + , Y2_ENDSTOP = TERN(Y_HOME_TO_MAX, Y2_MAX, Y2_MIN) + #endif #endif #if HAS_Z_MIN || HAS_Z_MAX || HOMING_Z_WITH_PROBE , Z_ENDSTOP = TERN(Z_HOME_TO_MAX, Z_MAX, TERN(HOMING_Z_WITH_PROBE, Z_MIN_PROBE, Z_MIN)) From 2b86daa30bb4705f8369ca27dd5fe723c90ef634 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 14 Feb 2023 22:29:47 -0600 Subject: [PATCH 025/659] =?UTF-8?q?=F0=9F=8E=A8=20Tweak=20VALIDATE=5FMESH?= =?UTF-8?q?=5FTILT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index f5c370aa68..354597b601 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -1489,7 +1489,7 @@ void unified_bed_leveling::smart_fill_mesh() { float measured_z; bool abort_flag = false; - #ifdef VALIDATE_MESH_TILT + #if ENABLED(VALIDATE_MESH_TILT) float z1, z2, z3; // Needed for algorithm validation below #endif @@ -1505,9 +1505,7 @@ void unified_bed_leveling::smart_fill_mesh() { abort_flag = true; else { measured_z -= get_z_correction(points[0]); - #ifdef VALIDATE_MESH_TILT - z1 = measured_z; - #endif + TERN_(VALIDATE_MESH_TILT, z1 = measured_z); if (param.V_verbosity > 3) { serial_spaces(16); SERIAL_ECHOLNPGM("Corrected_Z=", measured_z); @@ -1520,9 +1518,7 @@ void unified_bed_leveling::smart_fill_mesh() { TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " 2/3"), GET_TEXT(MSG_LCD_TILTING_MESH))); measured_z = probe.probe_at_point(points[1], PROBE_PT_RAISE, param.V_verbosity); - #ifdef VALIDATE_MESH_TILT - z2 = measured_z; - #endif + TERN_(VALIDATE_MESH_TILT, z2 = measured_z); if (isnan(measured_z)) abort_flag = true; else { @@ -1540,9 +1536,7 @@ void unified_bed_leveling::smart_fill_mesh() { TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " 3/3"), GET_TEXT(MSG_LCD_TILTING_MESH))); measured_z = probe.probe_at_point(points[2], PROBE_PT_LAST_STOW, param.V_verbosity); - #ifdef VALIDATE_MESH_TILT - z3 = measured_z; - #endif + TERN_(VALIDATE_MESH_TILT, z3 = measured_z); if (isnan(measured_z)) abort_flag = true; else { @@ -1689,7 +1683,7 @@ void unified_bed_leveling::smart_fill_mesh() { * The Z error between the probed point locations and the get_z_correction() * numbers for those locations should be 0. */ - #ifdef VALIDATE_MESH_TILT + #if ENABLED(VALIDATE_MESH_TILT) auto d_from = []{ DEBUG_ECHOPGM("D from "); }; auto normed = [&](const xy_pos_t &pos, const_float_t zadd) { return normal.x * pos.x + normal.y * pos.y + zadd; From aacb81ea60c07d840036b59249af69c518398289 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 15 Feb 2023 06:13:44 +0000 Subject: [PATCH 026/659] [cron] Bump distribution date (2023-02-15) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 61c4caa879..2cd99e23f7 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-13" +//#define STRING_DISTRIBUTION_DATE "2023-02-15" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 7541c0760a..efbde9bc0b 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-13" + #define STRING_DISTRIBUTION_DATE "2023-02-15" #endif /** From fc20533583e6a1f9bd2840208a72fbbf362e4bb4 Mon Sep 17 00:00:00 2001 From: apulver Date: Wed, 15 Feb 2023 01:38:54 -0500 Subject: [PATCH 027/659] =?UTF-8?q?=E2=9C=A8=20AVOID=5FOBSTACLES=20for=20U?= =?UTF-8?q?BL=20(#25256)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 19 +++++++++++ Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 14 ++++++-- Marlin/src/module/probe.h | 38 ++++++++++++++++++--- buildroot/tests/mega2560 | 2 +- 4 files changed, 64 insertions(+), 9 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index c66ca4e9e8..6363b79360 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2053,6 +2053,25 @@ //#define UBL_MESH_WIZARD // Run several commands in a row to get a complete mesh + /** + * Probing not allowed within the position of an obstacle. + */ + //#define AVOID_OBSTACLES + #if ENABLED(AVOID_OBSTACLES) + #define CLIP_W 23 // Bed clip width, should be padded a few mm over its physical size + #define CLIP_H 14 // Bed clip height, should be padded a few mm over its physical size + + // Obstacle Rectangles defined as { X1, Y1, X2, Y2 } + #define OBSTACLE1 { (X_BED_SIZE) / 4 - (CLIP_W) / 2, 0, (X_BED_SIZE) / 4 + (CLIP_W) / 2, CLIP_H } + #define OBSTACLE2 { (X_BED_SIZE) * 3 / 4 - (CLIP_W) / 2, 0, (X_BED_SIZE) * 3 / 4 + (CLIP_W) / 2, CLIP_H } + #define OBSTACLE3 { (X_BED_SIZE) / 4 - (CLIP_W) / 2, (Y_BED_SIZE) - (CLIP_H), (X_BED_SIZE) / 4 + (CLIP_W) / 2, Y_BED_SIZE } + #define OBSTACLE4 { (X_BED_SIZE) * 3 / 4 - (CLIP_W) / 2, (Y_BED_SIZE) - (CLIP_H), (X_BED_SIZE) * 3 / 4 + (CLIP_W) / 2, Y_BED_SIZE } + + // The probed grid must be inset for G29 J. This is okay, since it is + // only used to compute a linear transformation for the mesh itself. + #define G29J_MESH_TILT_MARGIN ((CLIP_H) + 1) + #endif + #elif ENABLED(MESH_BED_LEVELING) //=========================================================================== diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index 354597b601..02efb3e065 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -1478,9 +1478,17 @@ void unified_bed_leveling::smart_fill_mesh() { #include "../../../libs/vector_3.h" void unified_bed_leveling::tilt_mesh_based_on_probed_grid(const bool do_3_pt_leveling) { - const float x_min = probe.min_x(), x_max = probe.max_x(), - y_min = probe.min_y(), y_max = probe.max_y(), - dx = (x_max - x_min) / (param.J_grid_size - 1), + + #ifdef G29J_MESH_TILT_MARGIN + const float x_min = _MAX(probe.min_x() + (G29J_MESH_TILT_MARGIN), X_MIN_POS), + x_max = _MIN(probe.max_x() - (G29J_MESH_TILT_MARGIN), X_MAX_POS), + y_min = _MAX(probe.min_y() + (G29J_MESH_TILT_MARGIN), Y_MIN_POS), + y_max = _MIN(probe.max_y() - (G29J_MESH_TILT_MARGIN), Y_MAX_POS); + #else + const float x_min = probe.min_x(), x_max = probe.max_x(), + y_min = probe.min_y(), y_max = probe.max_y(); + #endif + const float dx = (x_max - x_min) / (param.J_grid_size - 1), dy = (y_max - y_min) / (param.J_grid_size - 1); xy_float_t points[3]; diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 961ba41144..a179eb21d8 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -76,9 +76,7 @@ class Probe { public: #if ENABLED(SENSORLESS_PROBING) - typedef struct { - bool x:1, y:1, z:1; - } sense_bool_t; + typedef struct { bool x:1, y:1, z:1; } sense_bool_t; static sense_bool_t test_sensitivity; #endif @@ -118,6 +116,32 @@ public: #else + static bool obstacle_check(const_float_t rx, const_float_t ry) { + #if ENABLED(AVOID_OBSTACLES) + #ifdef OBSTACLE1 + constexpr float obst1[] = OBSTACLE1; + static_assert(COUNT(obst1) == 4, "OBSTACLE1 must define a rectangle in the form { X1, Y1, X2, Y2 }."); + if (WITHIN(rx, obst1[0], obst1[2]) && WITHIN(ry, obst1[1], obst1[3])) return false; + #endif + #ifdef OBSTACLE2 + constexpr float obst2[] = OBSTACLE2; + static_assert(COUNT(obst2) == 4, "OBSTACLE2 must define a rectangle in the form { X1, Y1, X2, Y2 }."); + if (WITHIN(rx, obst2[0], obst2[2]) && WITHIN(ry, obst2[1], obst2[3])) return false; + #endif + #ifdef OBSTACLE3 + constexpr float obst3[] = OBSTACLE3; + static_assert(COUNT(obst3) == 4, "OBSTACLE3 must define a rectangle in the form { X1, Y1, X2, Y2 }."); + if (WITHIN(rx, obst3[0], obst3[2]) && WITHIN(ry, obst3[1], obst3[3])) return false; + #endif + #ifdef OBSTACLE4 + constexpr float obst4[] = OBSTACLE4; + static_assert(COUNT(obst4) == 4, "OBSTACLE4 must define a rectangle in the form { X1, Y1, X2, Y2 }."); + if (WITHIN(rx, obst4[0], obst4[2]) && WITHIN(ry, obst4[1], obst4[3])) return false; + #endif + #endif + return true; + } + /** * Return whether the given position is within the bed, and whether the nozzle * can reach the position required to put the probe at the given position. @@ -129,12 +153,16 @@ public: if (probe_relative) { return position_is_reachable(rx - offset_xy.x, ry - offset_xy.y) && COORDINATE_OKAY(rx, min_x() - fslop, max_x() + fslop) - && COORDINATE_OKAY(ry, min_y() - fslop, max_y() + fslop); + && COORDINATE_OKAY(ry, min_y() - fslop, max_y() + fslop) + && obstacle_check(rx, ry) + && obstacle_check(rx - offset_xy.x, ry - offset_xy.y); } else { return position_is_reachable(rx, ry) && COORDINATE_OKAY(rx + offset_xy.x, min_x() - fslop, max_x() + fslop) - && COORDINATE_OKAY(ry + offset_xy.y, min_y() - fslop, max_y() + fslop); + && COORDINATE_OKAY(ry + offset_xy.y, min_y() - fslop, max_y() + fslop) + && obstacle_check(rx, ry) + && obstacle_check(rx + offset_xy.x, ry + offset_xy.y); } } diff --git a/buildroot/tests/mega2560 b/buildroot/tests/mega2560 index de305082ec..7cac8b13b0 100755 --- a/buildroot/tests/mega2560 +++ b/buildroot/tests/mega2560 @@ -26,7 +26,7 @@ ci_src_filter -y use_example_configs AnimationExample opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO LCD_LANGUAGE fr SAVED_POSITIONS 4 DEFAULT_EJERK 10 \ EXTRUDERS 5 TEMP_SENSOR_1 1 TEMP_SENSOR_2 5 TEMP_SENSOR_3 20 TEMP_SENSOR_4 1000 TEMP_SENSOR_BED 1 -opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 DEBUG_LEVELING_FEATURE G26_MESH_VALIDATION ENABLE_LEVELING_FADE_HEIGHT SKEW_CORRECTION \ +opt_enable AUTO_BED_LEVELING_UBL AVOID_OBSTACLES RESTORE_LEVELING_AFTER_G28 DEBUG_LEVELING_FEATURE G26_MESH_VALIDATION ENABLE_LEVELING_FADE_HEIGHT SKEW_CORRECTION \ REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER LIGHTWEIGHT_UI STATUS_MESSAGE_SCROLLING SHOW_CUSTOM_BOOTSCREEN BOOT_MARLIN_LOGO_SMALL \ SDSUPPORT SDCARD_SORT_ALPHA USB_FLASH_DRIVE_SUPPORT AUTO_REPORT_SD_STATUS SCROLL_LONG_FILENAMES MEDIA_MENU_AT_TOP \ EEPROM_SETTINGS EEPROM_CHITCHAT GCODE_MACROS CUSTOM_MENU_MAIN FREEZE_FEATURE CANCEL_OBJECTS SOUND_MENU_ITEM \ From 196f403dd6be59e1bcfd24f31895a1ebc551caac Mon Sep 17 00:00:00 2001 From: alexgrach Date: Wed, 15 Feb 2023 09:40:26 +0300 Subject: [PATCH 028/659] =?UTF-8?q?=F0=9F=9A=B8=20Stop=20button=20for=20To?= =?UTF-8?q?uch=20UI=20(#25379)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/tft/touch.cpp | 7 +++++++ Marlin/src/lcd/tft/touch.h | 1 + Marlin/src/lcd/tft/ui_1024x600.cpp | 5 ++++- Marlin/src/lcd/tft/ui_320x240.cpp | 11 +++++++---- Marlin/src/lcd/tft/ui_480x320.cpp | 5 ++++- 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/Marlin/src/lcd/tft/touch.cpp b/Marlin/src/lcd/tft/touch.cpp index 6c81ebefcd..77082db0d7 100644 --- a/Marlin/src/lcd/tft/touch.cpp +++ b/Marlin/src/lcd/tft/touch.cpp @@ -233,6 +233,13 @@ void Touch::touch(touch_control_t *control) { MenuItem_int3::action(GET_TEXT_F(MSG_FLOW_N), &planner.flow_percentage[MenuItemBase::itemIndex], 10, 999, []{ planner.refresh_e_factor(MenuItemBase::itemIndex); }); #endif break; + case STOP: + ui.goto_screen([]{ + MenuItem_confirm::select_screen(GET_TEXT_F(MSG_BUTTON_STOP), + GET_TEXT_F(MSG_BACK), ui.abort_print, ui.goto_previous_screen, + GET_TEXT_F(MSG_STOP_PRINT), FSTR_P(nullptr), FPSTR("?")); + }); + break; #if ENABLED(AUTO_BED_LEVELING_UBL) case UBL: hold(control, UBL_REPEAT_DELAY); ui.encoderPosition += control->data; break; diff --git a/Marlin/src/lcd/tft/touch.h b/Marlin/src/lcd/tft/touch.h index fd5d9fd737..bebd9d01e3 100644 --- a/Marlin/src/lcd/tft/touch.h +++ b/Marlin/src/lcd/tft/touch.h @@ -65,6 +65,7 @@ enum TouchControlType : uint16_t { FLOWRATE, UBL, MOVE_AXIS, + STOP, BUTTON, }; diff --git a/Marlin/src/lcd/tft/ui_1024x600.cpp b/Marlin/src/lcd/tft/ui_1024x600.cpp index 771f12d898..6b628bc4cf 100644 --- a/Marlin/src/lcd/tft/ui_1024x600.cpp +++ b/Marlin/src/lcd/tft/ui_1024x600.cpp @@ -328,7 +328,10 @@ void MarlinUI::draw_status_screen() { add_control(900, y, menu_main, imgSettings); #if ENABLED(SDSUPPORT) const bool cm = card.isMounted(), pa = printingIsActive(); - add_control(12, y, menu_media, imgSD, cm && !pa, COLOR_CONTROL_ENABLED, cm && pa ? COLOR_BUSY : COLOR_CONTROL_DISABLED); + if (cm && pa) + add_control(12, y, STOP, imgCancel, true, COLOR_CONTROL_CANCEL); + else + add_control(12, y, menu_media, imgSD, cm && !pa, COLOR_CONTROL_ENABLED, COLOR_CONTROL_DISABLED); #endif #endif diff --git a/Marlin/src/lcd/tft/ui_320x240.cpp b/Marlin/src/lcd/tft/ui_320x240.cpp index 76cce4dad1..e8bec7e1a7 100644 --- a/Marlin/src/lcd/tft/ui_320x240.cpp +++ b/Marlin/src/lcd/tft/ui_320x240.cpp @@ -450,9 +450,12 @@ void MarlinUI::draw_status_screen() { ); #if ENABLED(SDSUPPORT) const bool cm = card.isMounted(), pa = printingIsActive(); - add_control(0, TERN(TFT_COLOR_UI_PORTRAIT, 210, 130), menu_media, imgSD, cm && !pa, COLOR_CONTROL_ENABLED, cm && pa ? COLOR_BUSY : COLOR_CONTROL_DISABLED); + if (cm && pa) + add_control(0, TERN(TFT_COLOR_UI_PORTRAIT, 210, 130), STOP, imgCancel, true, COLOR_CONTROL_CANCEL); + else + add_control(0, TERN(TFT_COLOR_UI_PORTRAIT, 210, 130), menu_media, imgSD, cm && !pa, COLOR_CONTROL_ENABLED, COLOR_CONTROL_DISABLED); #endif - } // (sublime) + } #endif // TOUCH_SCREEN } @@ -549,8 +552,8 @@ void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, con tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); } #if ENABLED(TOUCH_SCREEN) - if (no) add_control(TERN(TFT_COLOR_UI_PORTRAIT, 32, 48), TFT_HEIGHT - 64, CANCEL, imgCancel, true, yesno ? HALF(COLOR_CONTROL_CANCEL) : COLOR_CONTROL_CANCEL); - if (yes) add_control(TERN(TFT_COLOR_UI_PORTRAIT, 172, 208), TFT_HEIGHT - 64, CONFIRM, imgConfirm, true, yesno ? COLOR_CONTROL_CONFIRM : HALF(COLOR_CONTROL_CONFIRM)); + if (no) add_control(TERN(TFT_COLOR_UI_PORTRAIT, 16, 48), TFT_HEIGHT - 64, CANCEL, imgCancel, true, yesno ? HALF(COLOR_CONTROL_CANCEL) : COLOR_CONTROL_CANCEL); + if (yes) add_control(TERN(TFT_COLOR_UI_PORTRAIT, 160, 208), TFT_HEIGHT - 64, CONFIRM, imgConfirm, true, yesno ? COLOR_CONTROL_CONFIRM : HALF(COLOR_CONTROL_CONFIRM)); #endif } diff --git a/Marlin/src/lcd/tft/ui_480x320.cpp b/Marlin/src/lcd/tft/ui_480x320.cpp index c4395460d5..54762da671 100644 --- a/Marlin/src/lcd/tft/ui_480x320.cpp +++ b/Marlin/src/lcd/tft/ui_480x320.cpp @@ -322,7 +322,10 @@ void MarlinUI::draw_status_screen() { add_control(404, y, menu_main, imgSettings); #if ENABLED(SDSUPPORT) const bool cm = card.isMounted(), pa = printingIsActive(); - add_control(12, y, menu_media, imgSD, cm && !pa, COLOR_CONTROL_ENABLED, cm && pa ? COLOR_BUSY : COLOR_CONTROL_DISABLED); + if (cm && pa) + add_control(12, y, STOP, imgCancel, true, COLOR_CONTROL_CANCEL); + else + add_control(12, y, menu_media, imgSD, cm && !pa, COLOR_CONTROL_ENABLED, COLOR_CONTROL_DISABLED); #endif #endif From d925305b9eaead8aa90f4cfa7970576239704986 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Thu, 16 Feb 2023 12:58:51 +1300 Subject: [PATCH 029/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20FastPWM=20calculat?= =?UTF-8?q?ions=20(#25343)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/HAL/AVR/fast_pwm.cpp | 27 ++++++++++++++++++----- Marlin/src/HAL/ESP32/HAL.cpp | 34 ++++++++++++++--------------- Marlin/src/HAL/STM32F1/fast_pwm.cpp | 4 ++-- 3 files changed, 40 insertions(+), 25 deletions(-) diff --git a/Marlin/src/HAL/AVR/fast_pwm.cpp b/Marlin/src/HAL/AVR/fast_pwm.cpp index d361aaab38..0b2b8fd0b3 100644 --- a/Marlin/src/HAL/AVR/fast_pwm.cpp +++ b/Marlin/src/HAL/AVR/fast_pwm.cpp @@ -23,6 +23,10 @@ #include "../../inc/MarlinConfig.h" +//#define DEBUG_AVR_FAST_PWM +#define DEBUG_OUT ENABLED(DEBUG_AVR_FAST_PWM) +#include "../../core/debug_out.h" + struct Timer { volatile uint8_t* TCCRnQ[3]; // max 3 TCCR registers per timer volatile uint16_t* OCRnQ[3]; // max 3 OCR registers per timer @@ -108,12 +112,15 @@ const Timer get_pwm_timer(const pin_t pin) { } void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) { + DEBUG_ECHOLNPGM("set_pwm_frequency(pin=", pin, ", freq=", f_desired, ")"); const Timer timer = get_pwm_timer(pin); if (timer.isProtected || !timer.isPWM) return; // Don't proceed if protected timer or not recognized const bool is_timer2 = timer.n == 2; const uint16_t maxtop = is_timer2 ? 0xFF : 0xFFFF; + DEBUG_ECHOLNPGM("maxtop=", maxtop); + uint16_t res = 0xFF; // resolution (TOP value) uint8_t j = CS_NONE; // prescaler index uint8_t wgm = WGM_PWM_PC_8; // waveform generation mode @@ -121,23 +128,29 @@ void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) { // Calculating the prescaler and resolution to use to achieve closest frequency if (f_desired != 0) { constexpr uint16_t prescaler[] = { 1, 8, (32), 64, (128), 256, 1024 }; // (*) are Timer 2 only - uint16_t f = (F_CPU) / (2 * 1024 * maxtop) + 1; // Start with the lowest non-zero frequency achievable (1 or 31) + uint16_t f = (F_CPU) / (uint32_t(maxtop) << 11) + 1; // Start with the lowest non-zero frequency achievable (for 16MHz, 1 or 31) + DEBUG_ECHOLNPGM("f=", f); + DEBUG_ECHOLNPGM("(prescaler loop)"); LOOP_L_N(i, COUNT(prescaler)) { // Loop through all prescaler values - const uint16_t p = prescaler[i]; + const uint32_t p = prescaler[i]; // Extend to 32 bits for calculations + DEBUG_ECHOLNPGM("prescaler[", i, "]=", p); uint16_t res_fast_temp, res_pc_temp; if (is_timer2) { #if ENABLED(USE_OCR2A_AS_TOP) // No resolution calculation for TIMER2 unless enabled USE_OCR2A_AS_TOP const uint16_t rft = (F_CPU) / (p * f_desired); res_fast_temp = rft - 1; res_pc_temp = rft / 2; + DEBUG_ECHOLNPGM("(Timer2) res_fast_temp=", res_fast_temp, " res_pc_temp=", res_pc_temp); #else res_fast_temp = res_pc_temp = maxtop; + DEBUG_ECHOLNPGM("(Timer2) res_fast_temp=", maxtop, " res_pc_temp=", maxtop); #endif } else { if (p == 32 || p == 128) continue; // Skip TIMER2 specific prescalers when not TIMER2 const uint16_t rft = (F_CPU) / (p * f_desired); + DEBUG_ECHOLNPGM("(Not Timer 2) F_CPU=" STRINGIFY(F_CPU), " prescaler=", p, " f_desired=", f_desired); res_fast_temp = rft - 1; res_pc_temp = rft / 2; } @@ -147,23 +160,27 @@ void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) { // Calculate frequencies of test prescaler and resolution values const uint16_t f_fast_temp = (F_CPU) / (p * (1 + res_fast_temp)), - f_pc_temp = (F_CPU) / (2 * p * res_pc_temp); - const int f_diff = _MAX(f, f_desired) - _MIN(f, f_desired), + f_pc_temp = (F_CPU) / ((p * res_pc_temp) << 1), + f_diff = _MAX(f, f_desired) - _MIN(f, f_desired), f_fast_diff = _MAX(f_fast_temp, f_desired) - _MIN(f_fast_temp, f_desired), f_pc_diff = _MAX(f_pc_temp, f_desired) - _MIN(f_pc_temp, f_desired); + DEBUG_ECHOLNPGM("f_fast_temp=", f_fast_temp, " f_pc_temp=", f_pc_temp, " f_diff=", f_diff, " f_fast_diff=", f_fast_diff, " f_pc_diff=", f_pc_diff); + if (f_fast_diff < f_diff && f_fast_diff <= f_pc_diff) { // FAST values are closest to desired f // Set the Wave Generation Mode to FAST PWM wgm = is_timer2 ? uint8_t(TERN(USE_OCR2A_AS_TOP, WGM2_FAST_PWM_OCR2A, WGM2_FAST_PWM)) : uint8_t(WGM_FAST_PWM_ICRn); // Remember this combination f = f_fast_temp; res = res_fast_temp; j = i + 1; + DEBUG_ECHOLNPGM("(FAST) updated f=", f); } else if (f_pc_diff < f_diff) { // PHASE CORRECT values are closes to desired f // Set the Wave Generation Mode to PWM PHASE CORRECT wgm = is_timer2 ? uint8_t(TERN(USE_OCR2A_AS_TOP, WGM2_PWM_PC_OCR2A, WGM2_PWM_PC)) : uint8_t(WGM_PWM_PC_ICRn); f = f_pc_temp; res = res_pc_temp; j = i + 1; + DEBUG_ECHOLNPGM("(PHASE) updated f=", f); } - } + } // prescaler loop } _SET_WGMnQ(timer, wgm); diff --git a/Marlin/src/HAL/ESP32/HAL.cpp b/Marlin/src/HAL/ESP32/HAL.cpp index 29f3be3c02..46dd4e761b 100644 --- a/Marlin/src/HAL/ESP32/HAL.cpp +++ b/Marlin/src/HAL/ESP32/HAL.cpp @@ -342,16 +342,16 @@ void MarlinHAL::set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v } else pindata.pwm_duty_ticks = duty; // PWM duty count = # of 4µs ticks per full PWM cycle + + return; } - else #endif - { - const int8_t cid = get_pwm_channel(pin, PWM_FREQUENCY, PWM_RESOLUTION); - if (cid >= 0) { - const uint32_t duty = map(invert ? v_size - v : v, 0, v_size, 0, _BV(PWM_RESOLUTION)-1); - ledcWrite(cid, duty); - } - } + + const int8_t cid = get_pwm_channel(pin, PWM_FREQUENCY, PWM_RESOLUTION); + if (cid >= 0) { + const uint32_t duty = map(invert ? v_size - v : v, 0, v_size, 0, _BV(PWM_RESOLUTION)-1); + ledcWrite(cid, duty); + } } int8_t MarlinHAL::set_pwm_frequency(const pin_t pin, const uint32_t f_desired) { @@ -360,17 +360,15 @@ int8_t MarlinHAL::set_pwm_frequency(const pin_t pin, const uint32_t f_desired) { pwm_pin_data[pin & 0x7F].pwm_cycle_ticks = 1000000UL / f_desired / 4; // # of 4µs ticks per full PWM cycle return 0; } - else #endif - { - const int8_t cid = channel_for_pin(pin); - if (cid >= 0) { - if (f_desired == ledcReadFreq(cid)) return cid; // no freq change - ledcDetachPin(chan_pin[cid]); - chan_pin[cid] = 0; // remove old freq channel - } - return get_pwm_channel(pin, f_desired, PWM_RESOLUTION); // try for new one - } + + const int8_t cid = channel_for_pin(pin); + if (cid >= 0) { + if (f_desired == ledcReadFreq(cid)) return cid; // no freq change + ledcDetachPin(chan_pin[cid]); + chan_pin[cid] = 0; // remove old freq channel + } + return get_pwm_channel(pin, f_desired, PWM_RESOLUTION); // try for new one } // use hardware PWM if avail, if not then ISR diff --git a/Marlin/src/HAL/STM32F1/fast_pwm.cpp b/Marlin/src/HAL/STM32F1/fast_pwm.cpp index 297804a3ac..c3f96f0f92 100644 --- a/Marlin/src/HAL/STM32F1/fast_pwm.cpp +++ b/Marlin/src/HAL/STM32F1/fast_pwm.cpp @@ -39,7 +39,7 @@ inline uint8_t timer_and_index_for_pin(const pin_t pin, timer_dev **timer_ptr) { void MarlinHAL::set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=255*/, const bool invert/*=false*/) { const uint16_t duty = invert ? v_size - v : v; if (PWM_PIN(pin)) { - timer_dev *timer; UNUSED(timer); + timer_dev *timer; if (timer_freq[timer_and_index_for_pin(pin, &timer)] == 0) set_pwm_frequency(pin, PWM_FREQUENCY); const uint8_t channel = PIN_MAP[pin].timer_channel; @@ -55,7 +55,7 @@ void MarlinHAL::set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) { if (!PWM_PIN(pin)) return; // Don't proceed if no hardware timer - timer_dev *timer; UNUSED(timer); + timer_dev *timer; timer_freq[timer_and_index_for_pin(pin, &timer)] = f_desired; // Protect used timers From 90066e71608994ed7ed2e2351cbe5831dcab748b Mon Sep 17 00:00:00 2001 From: Trevin Small Date: Wed, 15 Feb 2023 19:00:10 -0500 Subject: [PATCH 030/659] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Fix=20README=20typ?= =?UTF-8?q?o=20(#25388)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c3d92d6b3a..05afe9ec27 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ Marlin is optimized to build with the **PlatformIO IDE** extension for **Visual Marlin includes an abstraction layer to provide a common API for all the platforms it targets. This allows Marlin code to address the details of motion and user interface tasks at the lowest and highest levels with no system overhead, tying all events directly to the hardware clock. -Every new HAL opens up a world of hardware. At this time we need HALs for RP2040 and the Duet3D family of boards. A HAL that wraps an RTOS is an interesting concept we would can explore. Did you know that Marlin includes a Simulator that can run on Windows, macOS, and Linux? Join the Discord to help move these sub-projects forward! +Every new HAL opens up a world of hardware. At this time we need HALs for RP2040 and the Duet3D family of boards. A HAL that wraps an RTOS is an interesting concept that could be explored. Did you know that Marlin includes a Simulator that can run on Windows, macOS, and Linux? Join the Discord to help move these sub-projects forward! ## 8-Bit AVR Boards From 38e633023603559032f2daa80b1ee99d9bd4df72 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 16 Feb 2023 00:27:36 +0000 Subject: [PATCH 031/659] [cron] Bump distribution date (2023-02-16) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 2cd99e23f7..07fa3e8730 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-15" +//#define STRING_DISTRIBUTION_DATE "2023-02-16" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index efbde9bc0b..e09a7d50fc 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-15" + #define STRING_DISTRIBUTION_DATE "2023-02-16" #endif /** From aa9df38b053c2ba7f7fadb9700637d1ae9cc0948 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 17 Feb 2023 22:12:11 -0600 Subject: [PATCH 032/659] =?UTF-8?q?=F0=9F=9A=B8=20Interruptible=20PLR=20(#?= =?UTF-8?q?25395)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/powerloss.cpp | 87 ++++++++++++++++++-------------- 1 file changed, 49 insertions(+), 38 deletions(-) diff --git a/Marlin/src/feature/powerloss.cpp b/Marlin/src/feature/powerloss.cpp index 2825f4d4f2..1037f823f6 100644 --- a/Marlin/src/feature/powerloss.cpp +++ b/Marlin/src/feature/powerloss.cpp @@ -78,6 +78,14 @@ PrintJobRecovery recovery; #define POWER_LOSS_RETRACT_LEN 0 #endif +// Allow power-loss recovery to be aborted +#define PLR_CAN_ABORT +#if ENABLED(PLR_CAN_ABORT) + #define PROCESS_SUBCOMMANDS_NOW(cmd) do { if (card.flag.abort_sd_printing) return; gcode.process_subcommands_now(cmd); }while(0) +#else + #define PROCESS_SUBCOMMANDS_NOW(cmd) gcode.process_subcommands_now(cmd) +#endif + /** * Clear the recovery info */ @@ -352,12 +360,23 @@ void PrintJobRecovery::resume() { // Apply the dry-run flag if enabled if (info.flag.dryrun) marlin_debug_flags |= MARLIN_DEBUG_DRYRUN; + #if ENABLED(DEBUG_POWER_LOSS_RECOVERY) + struct OnExit { + uint8_t old_flags; + OnExit() { + old_flags = marlin_debug_flags; + marlin_debug_flags |= MARLIN_DEBUG_ECHO; + } + ~OnExit() { marlin_debug_flags = old_flags; } + } on_exit; + #endif + // Restore cold extrusion permission TERN_(PREVENT_COLD_EXTRUSION, thermalManager.allow_cold_extrude = info.flag.allow_cold_extrusion); #if HAS_LEVELING // Make sure leveling is off before any G92 and G28 - gcode.process_subcommands_now(F("M420 S0 Z0")); + PROCESS_SUBCOMMANDS_NOW(F("M420S0")); #endif #if HAS_HEATED_BED @@ -365,7 +384,7 @@ void PrintJobRecovery::resume() { if (bt) { // Restore the bed temperature sprintf_P(cmd, PSTR("M190S%i"), bt); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); } #endif @@ -376,10 +395,10 @@ void PrintJobRecovery::resume() { if (et) { #if HAS_MULTI_HOTEND sprintf_P(cmd, PSTR("T%iS"), e); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); #endif sprintf_P(cmd, PSTR("M109S%i"), et); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); } } #endif @@ -393,7 +412,7 @@ void PrintJobRecovery::resume() { // establish the current position as best we can. // - gcode.process_subcommands_now(F("G92.9E0")); // Reset E to 0 + PROCESS_SUBCOMMANDS_NOW(F("G92.9E0")); // Reset E to 0 #if Z_HOME_TO_MAX @@ -404,7 +423,7 @@ void PrintJobRecovery::resume() { "G28R0\n" // Home all axes (no raise) "G1Z%sF1200" // Move Z down to (raised) height ), dtostrf(z_now, 1, 3, str_1)); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); #elif DISABLED(BELTPRINTER) @@ -417,18 +436,18 @@ void PrintJobRecovery::resume() { #if !HOMING_Z_DOWN // Set Z to the real position sprintf_P(cmd, PSTR("G92.9Z%s"), dtostrf(z_now, 1, 3, str_1)); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); #endif // Does Z need to be raised now? It should be raised before homing XY. if (z_raised > z_now) { z_now = z_raised; sprintf_P(cmd, PSTR("G1Z%sF600"), dtostrf(z_now, 1, 3, str_1)); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); } // Home XY with no Z raise - gcode.process_subcommands_now(F("G28R0XY")); // No raise during G28 + PROCESS_SUBCOMMANDS_NOW(F("G28R0XY")); // No raise during G28 #endif @@ -436,7 +455,7 @@ void PrintJobRecovery::resume() { // Move to a safe XY position and home Z while avoiding the print. const xy_pos_t p = xy_pos_t(POWER_LOSS_ZHOME_POS) TERN_(HOMING_Z_WITH_PROBE, - probe.offset_xy); sprintf_P(cmd, PSTR("G1X%sY%sF1000\nG28HZ"), dtostrf(p.x, 1, 3, str_1), dtostrf(p.y, 1, 3, str_2)); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); #endif // Mark all axes as having been homed (no effect on current_position) @@ -447,12 +466,12 @@ void PrintJobRecovery::resume() { // Leveling may already be enabled due to the ENABLE_LEVELING_AFTER_G28 option. // TODO: Add a G28 parameter to leave leveling disabled. sprintf_P(cmd, PSTR("M420S%cZ%s"), '0' + (char)info.flag.leveling, dtostrf(info.fade, 1, 1, str_1)); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); #if !HOMING_Z_DOWN // The physical Z was adjusted at power-off so undo the M420S1 correction to Z with G92.9. sprintf_P(cmd, PSTR("G92.9Z%s"), dtostrf(z_now, 1, 1, str_1)); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); #endif #endif @@ -460,7 +479,7 @@ void PrintJobRecovery::resume() { // Z was homed down to the bed, so move up to the raised height. z_now = z_raised; sprintf_P(cmd, PSTR("G1Z%sF600"), dtostrf(z_now, 1, 3, str_1)); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); #endif // Recover volumetric extrusion state @@ -468,16 +487,16 @@ void PrintJobRecovery::resume() { #if HAS_MULTI_EXTRUDER EXTRUDER_LOOP() { sprintf_P(cmd, PSTR("M200T%iD%s"), e, dtostrf(info.filament_size[e], 1, 3, str_1)); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); } if (!info.flag.volumetric_enabled) { sprintf_P(cmd, PSTR("M200T%iD0"), info.active_extruder); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); } #else if (info.flag.volumetric_enabled) { sprintf_P(cmd, PSTR("M200D%s"), dtostrf(info.filament_size[0], 1, 3, str_1)); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); } #endif #endif @@ -489,10 +508,10 @@ void PrintJobRecovery::resume() { if (et) { #if HAS_MULTI_HOTEND sprintf_P(cmd, PSTR("T%iS"), e); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); #endif sprintf_P(cmd, PSTR("M109S%i"), et); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); } } #endif @@ -500,7 +519,7 @@ void PrintJobRecovery::resume() { // Restore the previously active tool (with no_move) #if HAS_MULTI_EXTRUDER || HAS_MULTI_HOTEND sprintf_P(cmd, PSTR("T%i S"), info.active_extruder); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); #endif // Restore print cooling fan speeds @@ -509,7 +528,7 @@ void PrintJobRecovery::resume() { const int f = info.fan_speed[i]; if (f) { sprintf_P(cmd, PSTR("M106P%iS%i"), i, f); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); } } #endif @@ -531,17 +550,17 @@ void PrintJobRecovery::resume() { // Un-retract if there was a retract at outage #if ENABLED(BACKUP_POWER_SUPPLY) && POWER_LOSS_RETRACT_LEN > 0 - gcode.process_subcommands_now(F("G1F3000E" STRINGIFY(POWER_LOSS_RETRACT_LEN))); + PROCESS_SUBCOMMANDS_NOW(F("G1F3000E" STRINGIFY(POWER_LOSS_RETRACT_LEN))); #endif // Additional purge on resume if configured #if POWER_LOSS_PURGE_LEN sprintf_P(cmd, PSTR("G1F3000E%d"), (POWER_LOSS_PURGE_LEN) + (POWER_LOSS_RETRACT_LEN)); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); #endif #if ENABLED(NOZZLE_CLEAN_FEATURE) - gcode.process_subcommands_now(F("G12")); + PROCESS_SUBCOMMANDS_NOW(F("G12")); #endif // Move back over to the saved XY @@ -549,19 +568,19 @@ void PrintJobRecovery::resume() { dtostrf(info.current_position.x, 1, 3, str_1), dtostrf(info.current_position.y, 1, 3, str_2) ); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); // Move back down to the saved Z for printing sprintf_P(cmd, PSTR("G1Z%sF600"), dtostrf(z_print, 1, 3, str_1)); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); // Restore the feedrate sprintf_P(cmd, PSTR("G1F%d"), info.feedrate); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); // Restore E position with G92.9 sprintf_P(cmd, PSTR("G92.9E%s"), dtostrf(info.current_position.e, 1, 3, str_1)); - gcode.process_subcommands_now(cmd); + PROCESS_SUBCOMMANDS_NOW(cmd); TERN_(GCODE_REPEAT_MARKERS, repeat = info.stored_repeat); TERN_(HAS_HOME_OFFSET, home_offset = info.home_offset); @@ -573,22 +592,14 @@ void PrintJobRecovery::resume() { // Relative axis modes gcode.axis_relative = info.axis_relative; - #if ENABLED(DEBUG_POWER_LOSS_RECOVERY) - const uint8_t old_flags = marlin_debug_flags; - marlin_debug_flags |= MARLIN_DEBUG_ECHO; - #endif - // Continue to apply PLR when a file is resumed! enable(true); // Resume the SD file from the last position - char *fn = info.sd_filename; - sprintf_P(cmd, M23_STR, fn); - gcode.process_subcommands_now(cmd); + sprintf_P(cmd, M23_STR, &info.sd_filename[0]); + PROCESS_SUBCOMMANDS_NOW(cmd); sprintf_P(cmd, PSTR("M24S%ldT%ld"), resume_sdpos, info.print_job_elapsed); - gcode.process_subcommands_now(cmd); - - TERN_(DEBUG_POWER_LOSS_RECOVERY, marlin_debug_flags = old_flags); + PROCESS_SUBCOMMANDS_NOW(cmd); } #if ENABLED(DEBUG_POWER_LOSS_RECOVERY) From c68a4c085d2e9051819e7dd1889f3d7f06ad10a1 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 18 Feb 2023 06:05:56 +0000 Subject: [PATCH 033/659] [cron] Bump distribution date (2023-02-18) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 07fa3e8730..745788f05a 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-16" +//#define STRING_DISTRIBUTION_DATE "2023-02-18" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index e09a7d50fc..c0e9542b44 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-16" + #define STRING_DISTRIBUTION_DATE "2023-02-18" #endif /** From 96bc084f3d791bc93265f217181986863e8e5fc7 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 18 Feb 2023 02:15:16 -0600 Subject: [PATCH 034/659] =?UTF-8?q?=F0=9F=8E=A8=20Misc.=20LCD=20cleanup=20?= =?UTF-8?q?(#25400)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 2 +- Marlin/src/feature/bedlevel/abl/bbl.cpp | 2 +- Marlin/src/feature/bedlevel/abl/bbl.h | 2 +- Marlin/src/inc/SanityCheck.h | 10 +- Marlin/src/lcd/dogm/marlinui_DOGM.cpp | 4 +- Marlin/src/lcd/e3v2/marlinui/ui_common.cpp | 4 +- Marlin/src/lcd/e3v2/proui/dwin.cpp | 16 - Marlin/src/lcd/e3v2/proui/gcode_preview.cpp | 2 +- .../extui/anycubic_chiron/FileNavigator.cpp | 16 +- .../anycubic_i3mega/anycubic_i3mega_lcd.cpp | 6 +- Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp | 9 - .../src/lcd/extui/dgus/DGUSScreenHandler.cpp | 51 -- .../lcd/extui/dgus/DGUSScreenHandlerBase.h | 4 +- .../lcd/extui/dgus/fysetc/DGUSDisplayDef.h | 6 +- .../extui/dgus/fysetc/DGUSScreenHandler.cpp | 63 +-- .../lcd/extui/dgus/hiprecy/DGUSDisplayDef.h | 4 +- .../extui/dgus/hiprecy/DGUSScreenHandler.cpp | 65 +-- .../src/lcd/extui/dgus/mks/DGUSDisplayDef.h | 10 +- .../lcd/extui/dgus/mks/DGUSScreenHandler.cpp | 162 ++---- .../lcd/extui/dgus/origin/DGUSDisplayDef.h | 4 +- .../extui/dgus/origin/DGUSScreenHandler.cpp | 65 +-- .../lcd/extui/dgus_reloaded/DGUSDisplay.cpp | 27 - .../extui/dgus_reloaded/DGUSScreenHandler.cpp | 9 +- .../lcd/extui/dgus_reloaded/DGUSTxHandler.cpp | 18 +- .../lcd/extui/dgus_reloaded/DGUSTxHandler.h | 22 +- .../extui/dgus_reloaded/config/DGUS_Addr.h | 252 +++++----- .../dgus_reloaded/config/DGUS_Constants.h | 4 +- .../dgus_reloaded/definition/DGUS_VPList.cpp | 2 +- .../lcd/extui/ia_creality/FileNavigator.cpp | 4 - .../lcd/extui/ia_creality/creality_extui.cpp | 471 +++++++----------- .../lcd/extui/ia_creality/creality_extui.h | 74 +-- Marlin/src/lcd/extui/mks_ui/draw_wifi_tips.h | 2 +- .../extui/mks_ui/tft_lvgl_configuration.cpp | 2 +- .../src/lcd/extui/mks_ui/wifiSerial_STM32.cpp | 6 +- Marlin/src/lcd/extui/mks_ui/wifi_module.cpp | 2 +- Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp | 10 +- Marlin/src/lcd/language/language_an.h | 2 +- Marlin/src/lcd/language/language_bg.h | 2 +- Marlin/src/lcd/language/language_ca.h | 2 +- Marlin/src/lcd/language/language_cz.h | 2 +- Marlin/src/lcd/language/language_da.h | 2 +- Marlin/src/lcd/language/language_de.h | 2 +- Marlin/src/lcd/language/language_el.h | 2 +- Marlin/src/lcd/language/language_el_gr.h | 2 +- Marlin/src/lcd/language/language_en.h | 2 +- Marlin/src/lcd/language/language_es.h | 2 +- Marlin/src/lcd/language/language_eu.h | 2 +- Marlin/src/lcd/language/language_fr.h | 2 +- Marlin/src/lcd/language/language_gl.h | 2 +- Marlin/src/lcd/language/language_hr.h | 2 +- Marlin/src/lcd/language/language_hu.h | 2 +- Marlin/src/lcd/language/language_it.h | 2 +- Marlin/src/lcd/language/language_jp_kana.h | 2 +- Marlin/src/lcd/language/language_nl.h | 2 +- Marlin/src/lcd/language/language_pl.h | 2 +- Marlin/src/lcd/language/language_pt.h | 2 +- Marlin/src/lcd/language/language_pt_br.h | 2 +- Marlin/src/lcd/language/language_ro.h | 2 +- Marlin/src/lcd/language/language_ru.h | 2 +- Marlin/src/lcd/language/language_sk.h | 2 +- Marlin/src/lcd/language/language_sv.h | 2 +- Marlin/src/lcd/language/language_tr.h | 2 +- Marlin/src/lcd/language/language_uk.h | 2 +- Marlin/src/lcd/language/language_vi.h | 2 +- Marlin/src/lcd/language/language_zh_CN.h | 2 +- Marlin/src/lcd/language/language_zh_TW.h | 2 +- Marlin/src/lcd/marlinui.cpp | 2 +- Marlin/src/lcd/marlinui.h | 2 +- Marlin/src/lcd/menu/menu.cpp | 2 +- Marlin/src/lcd/menu/menu_bed_leveling.cpp | 2 +- Marlin/src/lcd/menu/menu_tune.cpp | 2 +- buildroot/tests/FYSETC_F6 | 2 +- buildroot/tests/LPC1768 | 2 +- buildroot/tests/SAMD21_minitronics20 | 2 +- buildroot/tests/SAMD51_grandcentral_m4 | 2 +- buildroot/tests/teensy35 | 2 +- 76 files changed, 541 insertions(+), 951 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index a9e6d4928f..7e224ae61c 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2092,7 +2092,7 @@ //#define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping #if ENABLED(BABYSTEP_ZPROBE_OFFSET) //#define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets - //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor + //#define BABYSTEP_GFX_OVERLAY // Enable graphical overlay on Z-offset editor #endif #endif diff --git a/Marlin/src/feature/bedlevel/abl/bbl.cpp b/Marlin/src/feature/bedlevel/abl/bbl.cpp index be0e862cc1..d0044303c7 100644 --- a/Marlin/src/feature/bedlevel/abl/bbl.cpp +++ b/Marlin/src/feature/bedlevel/abl/bbl.cpp @@ -153,7 +153,7 @@ void LevelingBilinear::extrapolate_unprobed_bed_level() { } } -void LevelingBilinear::print_leveling_grid(const bed_mesh_t* _z_values /*= NULL*/) { +void LevelingBilinear::print_leveling_grid(const bed_mesh_t* _z_values/*=nullptr*/) { // print internal grid(s) or just the one passed as a parameter SERIAL_ECHOLNPGM("Bilinear Leveling Grid:"); print_2d_array(GRID_MAX_POINTS_X, GRID_MAX_POINTS_Y, 3, _z_values ? *_z_values[0] : z_values[0]); diff --git a/Marlin/src/feature/bedlevel/abl/bbl.h b/Marlin/src/feature/bedlevel/abl/bbl.h index c2be4fee82..60dde9060f 100644 --- a/Marlin/src/feature/bedlevel/abl/bbl.h +++ b/Marlin/src/feature/bedlevel/abl/bbl.h @@ -53,7 +53,7 @@ public: static void reset(); static void set_grid(const xy_pos_t& _grid_spacing, const xy_pos_t& _grid_start); static void extrapolate_unprobed_bed_level(); - static void print_leveling_grid(const bed_mesh_t* _z_values = NULL); + static void print_leveling_grid(const bed_mesh_t *_z_values=nullptr); static void refresh_bed_level(); static bool has_mesh() { return !!grid_spacing.x; } static bool mesh_is_valid() { return has_mesh(); } diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 85bdba8a8e..12d281b704 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -670,6 +670,8 @@ #error "MILLISECONDS_PREHEAT_TIME is now PREHEAT_TIME_HOTEND_MS." #elif defined(EXPERIMENTAL_SCURVE) #error "EXPERIMENTAL_SCURVE is no longer needed and should be removed." +#elif defined(BABYSTEP_ZPROBE_GFX_OVERLAY) + #error "BABYSTEP_ZPROBE_GFX_OVERLAY is now BABYSTEP_GFX_OVERLAY." #endif // L64xx stepper drivers have been removed @@ -1042,10 +1044,10 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "MESH_BED_LEVELING and BABYSTEP_ZPROBE_OFFSET is not a valid combination" #elif ENABLED(BABYSTEP_ZPROBE_OFFSET) && !HAS_BED_PROBE #error "BABYSTEP_ZPROBE_OFFSET requires a probe." - #elif ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY) && NONE(HAS_MARLINUI_U8GLIB, IS_DWIN_MARLINUI) - #error "BABYSTEP_ZPROBE_GFX_OVERLAY requires a Graphical LCD." - #elif ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY) && DISABLED(BABYSTEP_ZPROBE_OFFSET) - #error "BABYSTEP_ZPROBE_GFX_OVERLAY requires a BABYSTEP_ZPROBE_OFFSET." + #elif ENABLED(BABYSTEP_GFX_OVERLAY) && NONE(HAS_MARLINUI_U8GLIB, IS_DWIN_MARLINUI) + #error "BABYSTEP_GFX_OVERLAY requires a Graphical LCD." + #elif ENABLED(BABYSTEP_GFX_OVERLAY) && DISABLED(BABYSTEP_ZPROBE_OFFSET) + #error "BABYSTEP_GFX_OVERLAY requires a BABYSTEP_ZPROBE_OFFSET." #elif ENABLED(BABYSTEP_HOTEND_Z_OFFSET) && !HAS_HOTEND_OFFSET #error "BABYSTEP_HOTEND_Z_OFFSET requires 2 or more HOTENDS." #elif BOTH(BABYSTEP_ALWAYS_AVAILABLE, MOVE_Z_WHEN_IDLE) diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp index 1a86058b94..aa32fd403f 100644 --- a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp +++ b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp @@ -628,7 +628,7 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop #endif // AUTO_BED_LEVELING_UBL - #if EITHER(BABYSTEP_ZPROBE_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) + #if EITHER(BABYSTEP_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) // // Draw knob rotation => Z motion key for: @@ -746,7 +746,7 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop } } - #endif // BABYSTEP_ZPROBE_GFX_OVERLAY || MESH_EDIT_GFX_OVERLAY + #endif // BABYSTEP_GFX_OVERLAY || MESH_EDIT_GFX_OVERLAY #endif // HAS_MARLINUI_MENU diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp index 560b30be0a..12d16887d1 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp @@ -565,7 +565,7 @@ void MarlinUI::draw_status_message(const bool blink) { #endif // AUTO_BED_LEVELING_UBL - #if EITHER(BABYSTEP_ZPROBE_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) + #if EITHER(BABYSTEP_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) void MarlinUI::zoffset_overlay(const int8_t dir) { const int rot_up = TERN(OVERLAY_GFX_REVERSE, ICON_RotateCCW, ICON_RotateCW), @@ -587,7 +587,7 @@ void MarlinUI::draw_status_message(const bool blink) { DWIN_ICON_Show(ICON, rot_up, LCD_PIXEL_WIDTH - 10 - 48, arrow_y); } - #endif // BABYSTEP_ZPROBE_GFX_OVERLAY || MESH_EDIT_GFX_OVERLAY + #endif // BABYSTEP_GFX_OVERLAY || MESH_EDIT_GFX_OVERLAY #endif // HAS_MARLINUI_MENU diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index ae10f0e84e..6be56b0ded 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -1271,7 +1271,6 @@ void EachMomentUpdate() { if ((Printing() != HMI_flag.printing_flag) && !HMI_flag.home_flag) { HMI_flag.printing_flag = Printing(); - DEBUG_ECHOLNPGM("printing_flag: ", HMI_flag.printing_flag); if (HMI_flag.printing_flag) DWIN_Print_Started(); else if (HMI_flag.abort_flag) @@ -1282,7 +1281,6 @@ void EachMomentUpdate() { if ((printingIsPaused() != HMI_flag.pause_flag) && !HMI_flag.home_flag) { HMI_flag.pause_flag = printingIsPaused(); - DEBUG_ECHOLNPGM("pause_flag: ", HMI_flag.pause_flag); if (HMI_flag.pause_flag) DWIN_Print_Pause(); else if (HMI_flag.abort_flag) @@ -1628,7 +1626,6 @@ void DWIN_LevelingDone() { // Started a Print Job void DWIN_Print_Started() { - DEBUG_ECHOLNPGM("DWIN_Print_Started: ", SD_Printing()); TERN_(HAS_GCODE_PREVIEW, if (Host_Printing()) Preview_Invalidate()); _percent_done = 0; _remain_time = 0; @@ -1642,20 +1639,17 @@ void DWIN_Print_Started() { // Pause a print job void DWIN_Print_Pause() { - DEBUG_ECHOLNPGM("DWIN_Print_Pause"); ICON_ResumeOrPause(); } // Resume print job void DWIN_Print_Resume() { - DEBUG_ECHOLNPGM("DWIN_Print_Resume"); ICON_ResumeOrPause(); LCD_MESSAGE(MSG_RESUME_PRINT); } // Ended print job void DWIN_Print_Finished() { - DEBUG_ECHOLNPGM("DWIN_Print_Finished"); TERN_(POWER_LOSS_RECOVERY, if (card.isPrinting()) recovery.cancel()); HMI_flag.pause_flag = false; wait_for_heatup = false; @@ -1666,7 +1660,6 @@ void DWIN_Print_Finished() { // Print was aborted void DWIN_Print_Aborted() { - DEBUG_ECHOLNPGM("DWIN_Print_Aborted"); DWIN_Print_Finished(); } @@ -1714,7 +1707,6 @@ void DWIN_SetColorDefaults() { } void DWIN_SetDataDefaults() { - DEBUG_ECHOLNPGM("DWIN_SetDataDefaults"); DWIN_SetColorDefaults(); DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); TERN_(PIDTEMP, HMI_data.HotendPidT = DEF_HOTENDPIDT); @@ -1738,13 +1730,10 @@ void DWIN_SetDataDefaults() { } void DWIN_CopySettingsTo(char * const buff) { - DEBUG_ECHOLNPGM("DWIN_CopySettingsTo"); - DEBUG_ECHOLNPGM("HMI_data: ", sizeof(HMI_data_t)); memcpy(buff, &HMI_data, eeprom_data_size); } void DWIN_CopySettingsFrom(const char * const buff) { - DEBUG_ECHOLNPGM("DWIN_CopySettingsFrom"); memcpy(&HMI_data, buff, sizeof(HMI_data_t)); if (HMI_data.Text_Color == HMI_data.Background_Color) DWIN_SetColorDefaults(); DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); @@ -1764,18 +1753,14 @@ void DWIN_CopySettingsFrom(const char * const buff) { // Initialize or re-initialize the LCD void MarlinUI::init_lcd() { - DEBUG_ECHOLNPGM("MarlinUI::init_lcd"); delay(750); // wait to wakeup screen const bool hs = DWIN_Handshake(); UNUSED(hs); - DEBUG_ECHOPGM("DWIN_Handshake "); - DEBUG_ECHOLNF(hs ? F("ok.") : F("error.")); DWIN_Frame_SetDir(1); DWIN_JPG_CacheTo1(Language_English); Encoder_Configuration(); } void DWIN_InitScreen() { - DEBUG_ECHOLNPGM("DWIN_InitScreen"); DWIN_SetColorDefaults(); HMI_Init(); // draws boot screen DWINUI::init(); @@ -2034,7 +2019,6 @@ void AutoHome() { queue.inject_P(G28_STR); } #if EITHER(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) const_float_t step_zoffset = round((MenuData.Value / 100.0f) * planner.settings.axis_steps_per_mm[Z_AXIS]) - babystep.accum; if (BABYSTEP_ALLOWED()) babystep.add_steps(Z_AXIS, step_zoffset); - //DEBUG_ECHOLNF(F("BB Steps: "), step_zoffset); #endif } void SetZOffset() { diff --git a/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp b/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp index bc489dd1fa..f8bcda8353 100644 --- a/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp +++ b/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp @@ -135,7 +135,7 @@ bool Has_Preview() { Get_Value(buf, ";MAXZ:", fileprop.height); fileprop.height -= tmp; posptr = strstr(buf, tbstart); - if (posptr != NULL) { + if (posptr != nullptr) { fileprop.thumbstart = indx + (posptr - &buf[0]); } else { diff --git a/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp b/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp index 0ef8186668..90e3321252 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp +++ b/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp @@ -70,7 +70,6 @@ char FileNavigator::currentfoldername[MAX_PATH_LEN + 1]; // Current folde FileNavigator::FileNavigator() { reset(); } void FileNavigator::reset() { - DEBUG_ECHOLNPGM("reset()"); currentfoldername[0] = '\0'; currentfolderdepth = 0; currentindex = 0; @@ -86,7 +85,6 @@ void FileNavigator::refresh() { filelist.refresh(); } void FileNavigator::changeDIR(const char *folder) { if (currentfolderdepth >= MAX_FOLDER_DEPTH) return; // limit the folder depth - DEBUG_ECHOLNPGM("FD:" , folderdepth, " FP:",currentindex, " currentfolder:", currentfoldername, " enter:", folder); currentfolderindex[currentfolderdepth] = currentindex; strcat(currentfoldername, folder); strcat(currentfoldername, "/"); @@ -96,7 +94,6 @@ void FileNavigator::changeDIR(const char *folder) { } void FileNavigator::upDIR() { - DEBUG_ECHOLNPGM("upDIR() from D:", currentfolderdepth, " N:", currentfoldername); if (!filelist.isAtRootDir()) { filelist.upDir(); currentfolderdepth--; @@ -117,7 +114,6 @@ void FileNavigator::skiptofileindex(uint16_t skip) { if (skip == 0) return; while (skip > 0) { if (filelist.seek(currentindex)) { - DEBUG_ECHOLNPGM("CI:", currentindex, " FD:", currentfolderdepth, " N:", skip, " ", filelist.longFilename()); if (!filelist.isDir()) { skip--; currentindex++; @@ -151,8 +147,6 @@ void FileNavigator::skiptofileindex(uint16_t skip) { } lastpanelindex = index; - DEBUG_ECHOLNPGM("index=", index, " currentindex=", currentindex); - if (currentindex == 0 && currentfolderdepth > 0) { // Add a link to go up a folder // The new panel ignores entries that don't end in .GCO or .gcode so add and pad them. if (paneltype <= AC_panel_new) { @@ -166,12 +160,8 @@ void FileNavigator::skiptofileindex(uint16_t skip) { filesneeded--; } - for (uint16_t seek = currentindex; seek < currentindex + filesneeded; seek++) { - if (filelist.seek(seek)) { - sendFile(paneltype); - DEBUG_ECHOLNPGM("-", seek, " '", filelist.longFilename(), "' '", currentfoldername, "", filelist.shortFilename(), "'"); - } - } + for (uint16_t seek = currentindex; seek < currentindex + filesneeded; seek++) + if (filelist.seek(seek)) sendFile(paneltype); } void FileNavigator::sendFile(panel_type_t paneltype) { @@ -212,7 +202,6 @@ void FileNavigator::skiptofileindex(uint16_t skip) { #else // Flat file list void FileNavigator::getFiles(uint16_t index, panel_type_t paneltype, uint8_t filesneeded) { - DEBUG_ECHOLNPGM("getFiles() I:", index," L:", lastpanelindex); // if we're searching backwards, jump back to start and search forward if (index < lastpanelindex) { reset(); @@ -248,7 +237,6 @@ void FileNavigator::skiptofileindex(uint16_t skip) { TFTSer.println(filelist.shortFilename()); if (currentfolderdepth > 0) TFTSer.print(currentfoldername); TFTSer.println(filelist.longFilename()); - DEBUG_ECHOLNPGM("/", currentfoldername, "", filelist.shortFilename(), " ", filelist.longFilename()); } #endif // Flat file list diff --git a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp index 03997fa95b..774ba55e43 100644 --- a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp +++ b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp @@ -704,7 +704,7 @@ void AnycubicTFTClass::GetCommandFromTFT() { break; case 16: { // A16 set hotend temp - unsigned int tempvalue; + uint16_t tempvalue; if (CodeSeen('S')) { tempvalue = constrain(CodeValue(), 0, 275); setTargetTemp_celsius(tempvalue, (extruder_t)E0); @@ -719,7 +719,7 @@ void AnycubicTFTClass::GetCommandFromTFT() { break; case 17: { // A17 set heated bed temp - unsigned int tempbed; + uint16_t tempbed; if (CodeSeen('S')) { tempbed = constrain(CodeValue(), 0, 100); setTargetTemp_celsius(tempbed, (heater_t)BED); @@ -777,7 +777,7 @@ void AnycubicTFTClass::GetCommandFromTFT() { case 22: // A22 move X/Y/Z or extrude if (!isPrinting()) { float coorvalue; - unsigned int movespeed = 0; + uint16_t movespeed = 0; char commandStr[30]; char fullCommandStr[38]; diff --git a/Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp b/Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp index 0eb95bb041..2a7d635c6d 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp +++ b/Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp @@ -141,7 +141,6 @@ void DGUSDisplay::ProcessRx() { if (!LCD_SERIAL.available() && LCD_SERIAL.buffer_overruns()) { // Overrun, but reset the flag only when the buffer is empty // We want to extract as many as valid datagrams possible... - DEBUG_ECHOPGM("OVFL"); rx_datagram_state = DGUS_IDLE; //LCD_SERIAL.reset_rx_overun(); LCD_SERIAL.flush(); @@ -205,17 +204,11 @@ void DGUSDisplay::ProcessRx() { | Command DataLen (in Words) */ if (command == DGUS_CMD_READVAR) { const uint16_t vp = tmp[0] << 8 | tmp[1]; - //const uint8_t dlen = tmp[2] << 1; // Convert to Bytes. (Display works with words) - //DEBUG_ECHOPGM(" vp=", vp, " dlen=", dlen); DGUS_VP_Variable ramcopy; if (populate_VPVar(vp, &ramcopy)) { if (ramcopy.set_by_display_handler) ramcopy.set_by_display_handler(ramcopy, &tmp[3]); - else - DEBUG_ECHOLNPGM(" VPVar found, no handler."); } - else - DEBUG_ECHOLNPGM(" VPVar not found:", vp); rx_datagram_state = DGUS_IDLE; break; @@ -260,9 +253,7 @@ bool DGUSDisplay::Initialized = false, #define sw_barrier() asm volatile("": : :"memory"); bool populate_VPVar(const uint16_t VP, DGUS_VP_Variable * const ramcopy) { - //DEBUG_ECHOPGM("populate_VPVar ", VP); const DGUS_VP_Variable *pvp = DGUSLCD_FindVPVar(VP); - //DEBUG_ECHOLNPGM(" pvp ", (uint16_t )pvp); if (!pvp) return false; memcpy_P(ramcopy, pvp, sizeof(DGUS_VP_Variable)); return true; diff --git a/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp index 82dbeee411..b2363c4ee9 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp @@ -112,8 +112,6 @@ void DGUSScreenHandler::setstatusmessagePGM(PGM_P const msg) { // Send an 8 bit or 16 bit value to the display. void DGUSScreenHandler::DGUSLCD_SendWordValueToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { - //DEBUG_ECHOPGM(" DGUS_LCD_SendWordValueToDisplay ", var.VP); - //DEBUG_ECHOLNPGM(" data ", *(uint16_t *)var.memadr); if (var.size > 1) dgusdisplay.WriteVariable(var.VP, *(int16_t*)var.memadr); else @@ -124,8 +122,6 @@ void DGUSScreenHandler::DGUSLCD_SendWordValueToDisplay(DGUS_VP_Variable &var) { // Send an uint8_t between 0 and 255 to the display, but scale to a percentage (0..100) void DGUSScreenHandler::DGUSLCD_SendPercentageToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { - //DEBUG_ECHOPGM(" DGUS_LCD_SendWordValueToDisplay ", var.VP); - //DEBUG_ECHOLNPGM(" data ", *(uint16_t *)var.memadr); uint16_t tmp = *(uint8_t *) var.memadr + 1; // +1 -> avoid rounding issues for the display. tmp = map(tmp, 0, 255, 0, 100); dgusdisplay.WriteVariable(var.VP, tmp); @@ -134,9 +130,7 @@ void DGUSScreenHandler::DGUSLCD_SendPercentageToDisplay(DGUS_VP_Variable &var) { // Send the current print progress to the display. void DGUSScreenHandler::DGUSLCD_SendPrintProgressToDisplay(DGUS_VP_Variable &var) { - //DEBUG_ECHOPGM(" DGUSLCD_SendPrintProgressToDisplay ", var.VP); uint16_t tmp = ExtUI::getProgress_percent(); - //DEBUG_ECHOLNPGM(" data ", tmp); dgusdisplay.WriteVariable(var.VP, tmp); } @@ -153,9 +147,7 @@ void DGUSScreenHandler::DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var) { void DGUSScreenHandler::DGUSLCD_PercentageToUint8(DGUS_VP_Variable &var, void *val_ptr) { if (var.memadr) { const uint16_t value = BE16_P(val_ptr); - DEBUG_ECHOLNPGM("Got percent:", value); *(uint8_t*)var.memadr = map(constrain(value, 0, 100), 0, 100, 0, 255); - DEBUG_ECHOLNPGM("Set uint8:", *(uint8_t*)var.memadr); } } @@ -236,8 +228,6 @@ void DGUSScreenHandler::DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var) { void DGUSScreenHandler::DGUSLCD_SendFanStatusToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { - DEBUG_ECHOPGM(" DGUSLCD_SendFanStatusToDisplay ", var.VP); - DEBUG_ECHOLNPGM(" data ", *(uint8_t *)var.memadr); uint16_t data_to_send = 0; if (*(uint8_t *) var.memadr) data_to_send = 1; dgusdisplay.WriteVariable(var.VP, data_to_send); @@ -249,8 +239,6 @@ void DGUSScreenHandler::DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var) { // Send heater status value to the display. void DGUSScreenHandler::DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { - DEBUG_ECHOPGM(" DGUSLCD_SendHeaterStatusToDisplay ", var.VP); - DEBUG_ECHOLNPGM(" data ", *(int16_t *)var.memadr); uint16_t data_to_send = 0; if (*(int16_t *) var.memadr) data_to_send = 1; dgusdisplay.WriteVariable(var.VP, data_to_send); @@ -263,11 +251,8 @@ void DGUSScreenHandler::DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var) // In FYSETC UI design there are 10 statuses to loop static uint16_t period = 0; static uint16_t index = 0; - //DEBUG_ECHOPGM(" DGUSLCD_SendWaitingStatusToDisplay ", var.VP); - //DEBUG_ECHOLNPGM(" data ", BE16_P(&index)); if (period++ > DGUS_UI_WAITING_STATUS_PERIOD) { dgusdisplay.WriteVariable(var.VP, index); - //DEBUG_ECHOLNPGM(" data ", BE16_P(&index)); if (++index >= DGUS_UI_WAITING_STATUS) index = 0; period = 0; } @@ -309,17 +294,14 @@ void DGUSScreenHandler::DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var) const int16_t scroll = (int16_t)BE16_P(val_ptr); if (scroll) { top_file += scroll; - DEBUG_ECHOPGM("new topfile calculated:", top_file); if (top_file < 0) { top_file = 0; - DEBUG_ECHOLNPGM("Top of filelist reached"); } else { int16_t max_top = filelist.count() - DGUS_SD_FILESPERSCREEN; NOLESS(max_top, 0); NOMORE(top_file, max_top); } - DEBUG_ECHOPGM("new topfile adjusted:", top_file); } else if (!filelist.isAtRootDir()) { IF_DISABLED(DGUS_LCD_UI_MKS, filelist.upDir()); @@ -374,7 +356,6 @@ const DGUS_VP_Variable* DGUSLCD_FindVPVar(const uint16_t vp) { ++ret; } while (1); - DEBUG_ECHOLNPGM("FindVPVar NOT FOUND ", vp); return nullptr; } @@ -444,8 +425,6 @@ void DGUSScreenHandler::HandleFlowRateChanged(DGUS_VP_Variable &var, void *val_p } void DGUSScreenHandler::HandleManualExtrude(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleManualExtrude"); - const int16_t movevalue = BE16_P(val_ptr); float target = movevalue * 0.01f; ExtUI::extruder_t target_extruder; @@ -467,19 +446,16 @@ void DGUSScreenHandler::HandleManualExtrude(DGUS_VP_Variable &var, void *val_ptr #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) void DGUSScreenHandler::HandleManualMoveOption(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleManualMoveOption"); *(uint16_t*)var.memadr = BE16_P(val_ptr); } #endif void DGUSScreenHandler::HandleMotorLockUnlock(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleMotorLockUnlock"); const int16_t lock = BE16_P(val_ptr); queue.enqueue_one_now(lock ? F("M18") : F("M17")); } void DGUSScreenHandler::HandleSettings(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleSettings"); const uint16_t value = BE16_P(val_ptr); switch (value) { default: break; @@ -495,7 +471,6 @@ void DGUSScreenHandler::HandleSettings(DGUS_VP_Variable &var, void *val_ptr) { void DGUSScreenHandler::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t value_raw = BE16_P(val_ptr); - DEBUG_ECHOLNPGM("HandleStepPerMMChanged:", value_raw); const float value = (float)value_raw / 10; ExtUI::axis_t axis; switch (var.VP) { @@ -504,15 +479,12 @@ void DGUSScreenHandler::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ case VP_Z_STEP_PER_MM: axis = ExtUI::axis_t::Z; break; default: return; } - DEBUG_ECHOLNPGM("value:", value); ExtUI::setAxisSteps_per_mm(value, axis); - DEBUG_ECHOLNPGM("value_set:", ExtUI::getAxisSteps_per_mm(axis)); skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } void DGUSScreenHandler::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t value_raw = BE16_P(val_ptr); - DEBUG_ECHOLNPGM("HandleStepPerMMExtruderChanged:", value_raw); const float value = (float)value_raw / 10; ExtUI::extruder_t extruder; switch (var.VP) { @@ -524,16 +496,12 @@ void DGUSScreenHandler::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, vo #endif #endif } - DEBUG_ECHOLNPGM("value:", value); ExtUI::setAxisSteps_per_mm(value, extruder); - DEBUG_ECHOLNPGM("value_set:", ExtUI::getAxisSteps_per_mm(extruder)); skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } #if HAS_PID_HEATING void DGUSScreenHandler::HandlePIDAutotune(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandlePIDAutotune"); - char buf[32] = {0}; switch (var.VP) { @@ -568,8 +536,6 @@ void DGUSScreenHandler::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, vo #if HAS_BED_PROBE void DGUSScreenHandler::HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleProbeOffsetZChanged"); - const float offset = float(int16_t(BE16_P(val_ptr))) / 100.0f; ExtUI::setZOffset_mm(offset); skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel @@ -579,14 +545,11 @@ void DGUSScreenHandler::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, vo #if HAS_FAN void DGUSScreenHandler::HandleFanControl(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleFanControl"); *(uint8_t*)var.memadr = *(uint8_t*)var.memadr > 0 ? 0 : 255; } #endif void DGUSScreenHandler::HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleHeaterControl"); - uint8_t preheat_temp = 0; switch (var.VP) { #if HAS_HOTEND @@ -614,8 +577,6 @@ void DGUSScreenHandler::HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr #if ENABLED(DGUS_PREHEAT_UI) void DGUSScreenHandler::HandlePreheat(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandlePreheat"); - const uint16_t preheat_option = BE16_P(val_ptr); switch (preheat_option) { default: @@ -654,7 +615,6 @@ void DGUSScreenHandler::HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr #endif void DGUSScreenHandler::UpdateNewScreen(DGUSLCD_Screens newscreen, bool popup) { - DEBUG_ECHOLNPGM("SetNewScreen: ", newscreen); if (!popup) { memmove(&past_screens[1], &past_screens[0], sizeof(past_screens) - 1); past_screens[0] = current_screen; @@ -665,18 +625,14 @@ void DGUSScreenHandler::UpdateNewScreen(DGUSLCD_Screens newscreen, bool popup) { } void DGUSScreenHandler::PopToOldScreen() { - DEBUG_ECHOLNPGM("PopToOldScreen s=", past_screens[0]); GotoScreen(past_screens[0], true); memmove(&past_screens[0], &past_screens[1], sizeof(past_screens) - 1); past_screens[sizeof(past_screens) - 1] = DGUSLCD_SCREEN_MAIN; } void DGUSScreenHandler::UpdateScreenVPData() { - DEBUG_ECHOPGM(" UpdateScreenVPData Screen: ", current_screen); - const uint16_t *VPList = DGUSLCD_FindScreenVPMapList(current_screen); if (!VPList) { - DEBUG_ECHOLNPGM(" NO SCREEN FOR: ", current_screen); ScreenComplete = true; return; // nothing to do, likely a bug or boring screen. } @@ -687,10 +643,8 @@ void DGUSScreenHandler::UpdateScreenVPData() { bool sent_one = false; do { uint16_t VP = pgm_read_word(VPList); - DEBUG_ECHOPGM(" VP: ", VP); if (!VP) { update_ptr = 0; - DEBUG_ECHOLNPGM(" UpdateScreenVPData done"); ScreenComplete = true; return; // Screen completed. } @@ -703,14 +657,10 @@ void DGUSScreenHandler::UpdateScreenVPData() { // Send the VP to the display, but try to avoid overrunning the Tx Buffer. // But send at least one VP, to avoid getting stalled. if (rcpy.send_to_display_handler && (!sent_one || expected_tx <= dgusdisplay.GetFreeTxBuffer())) { - //DEBUG_ECHOPGM(" calling handler for ", rcpy.VP); sent_one = true; rcpy.send_to_display_handler(rcpy); } else { - // auto x=dgusdisplay.GetFreeTxBuffer(); - //DEBUG_ECHOLNPGM(" tx almost full: ", x); - //DEBUG_ECHOPGM(" update_ptr ", update_ptr); ScreenComplete = false; return; // please call again! } @@ -725,7 +675,6 @@ void DGUSScreenHandler::GotoScreen(DGUSLCD_Screens screen, bool ispopup) { } void DGUSDisplay::RequestScreen(DGUSLCD_Screens screen) { - DEBUG_ECHOLNPGM("GotoScreen ", screen); const unsigned char gotoscreen[] = { 0x5A, 0x01, (unsigned char) (screen >> 8U), (unsigned char) (screen & 0xFFU) }; WriteVariable(0x84, gotoscreen, sizeof(gotoscreen)); } diff --git a/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h b/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h index 340938c979..7ff9ac673f 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h +++ b/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h @@ -191,7 +191,7 @@ public: // Send a float value to the display. // Display will get a 4-byte integer scaled to the number of digits: // Tell the display the number of digits and it cheats by displaying a dot between... - template + template static void DGUSLCD_SendFloatAsLongValueToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { float f = *(float *)var.memadr; @@ -203,7 +203,7 @@ public: // Send a float value to the display. // Display will get a 2-byte integer scaled to the number of digits: // Tell the display the number of digits and it cheats by displaying a dot between... - template + template static void DGUSLCD_SendFloatAsIntValueToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { float f = *(float *)var.memadr; diff --git a/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.h b/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.h index 2543d20b76..5deedc0450 100644 --- a/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.h +++ b/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.h @@ -258,7 +258,7 @@ constexpr uint16_t VP_BED_STATUS = 0x331C; constexpr uint16_t VP_MOVE_OPTION = 0x3400; // Step per mm -constexpr uint16_t VP_X_STEP_PER_MM = 0x3600; // at the moment , 2 byte unsigned int , 0~1638.4 +constexpr uint16_t VP_X_STEP_PER_MM = 0x3600; // at the moment , uint16_t , 0~1638.4 //constexpr uint16_t VP_X2_STEP_PER_MM = 0x3602; constexpr uint16_t VP_Y_STEP_PER_MM = 0x3604; //constexpr uint16_t VP_Y2_STEP_PER_MM = 0x3606; @@ -272,10 +272,10 @@ constexpr uint16_t VP_E1_STEP_PER_MM = 0x3612; //constexpr uint16_t VP_E5_STEP_PER_MM = 0x361A; // PIDs -constexpr uint16_t VP_E0_PID_P = 0x3700; // at the moment , 2 byte unsigned int , 0~1638.4 +constexpr uint16_t VP_E0_PID_P = 0x3700; // at the moment , uint16_t , 0~1638.4 constexpr uint16_t VP_E0_PID_I = 0x3702; constexpr uint16_t VP_E0_PID_D = 0x3704; -constexpr uint16_t VP_E1_PID_P = 0x3706; // at the moment , 2 byte unsigned int , 0~1638.4 +constexpr uint16_t VP_E1_PID_P = 0x3706; // at the moment , uint16_t , 0~1638.4 constexpr uint16_t VP_E1_PID_I = 0x3708; constexpr uint16_t VP_E1_PID_D = 0x370A; constexpr uint16_t VP_BED_PID_P = 0x3710; diff --git a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp index b68f72a1fb..c6e000eeca 100644 --- a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp @@ -134,8 +134,6 @@ void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { // meaning "return to previous screen" DGUSLCD_Screens target = (DGUSLCD_Screens)tmp[1]; - DEBUG_ECHOLNPGM("\n DEBUG target", target); - if (target == DGUSLCD_SCREEN_POPUP) { // Special handling for popup is to return to previous menu if (current_screen == DGUSLCD_SCREEN_POPUP && confirm_action_cb) confirm_action_cb(); @@ -151,8 +149,6 @@ void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { } void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleManualMove"); - int16_t movevalue = swap16(*(uint16_t*)val_ptr); #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) if (movevalue) { @@ -161,7 +157,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } #endif char axiscode; - unsigned int speed = 1500; // FIXME: get default feedrate for manual moves, don't hardcode. + uint16_t speed = _mf[X_AXIS]; // Default feedrate for manual moves switch (var.VP) { default: return; @@ -171,16 +167,21 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { if (!ExtUI::canMove(ExtUI::axis_t::X)) goto cannotmove; break; - case VP_MOVE_Y: - axiscode = 'Y'; - if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; - break; + #if HAS_Y_AXIS + case VP_MOVE_Y: + axiscode = 'Y'; + speed = _mf[Y_AXIS]; + if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; + break; + #endif - case VP_MOVE_Z: - axiscode = 'Z'; - speed = 300; // default to 5mm/s - if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; - break; + #if HAS_Z_AXIS + case VP_MOVE_Z: + axiscode = 'Z'; + speed = _mf[Z_AXIS]; + if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; + break; + #endif case VP_HOME_ALL: // only used for homing axiscode = '\0'; @@ -190,63 +191,42 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { if (!movevalue) { // homing - DEBUG_ECHOPGM(" homing ", AS_CHAR(axiscode)); char buf[6] = "G28 X"; buf[4] = axiscode; - //DEBUG_ECHOPGM(" ", buf); queue.enqueue_one_now(buf); - //DEBUG_ECHOLNPGM(" ✓"); ForceCompleteUpdate(); return; } else { // movement - DEBUG_ECHOPGM(" move ", AS_CHAR(axiscode)); bool old_relative_mode = relative_mode; - if (!relative_mode) { - //DEBUG_ECHOPGM(" G91"); - queue.enqueue_now(F("G91")); - //DEBUG_ECHOPGM(" ✓ "); - } + if (!relative_mode) queue.enqueue_now(F("G91")); char buf[32]; // G1 X9999.99 F12345 - unsigned int backup_speed = MMS_TO_MMM(feedrate_mm_s); + const uint16_t backup_speed = MMS_TO_MMM(feedrate_mm_s); char sign[] = "\0"; int16_t value = movevalue / 100; if (movevalue < 0) { value = -value; sign[0] = '-'; } int16_t fraction = ABS(movevalue) % 100; snprintf_P(buf, 32, PSTR("G0 %c%s%d.%02d F%d"), axiscode, sign, value, fraction, speed); - //DEBUG_ECHOPGM(" ", buf); queue.enqueue_one_now(buf); - //DEBUG_ECHOLNPGM(" ✓ "); if (backup_speed != speed) { snprintf_P(buf, 32, PSTR("G0 F%d"), backup_speed); queue.enqueue_one_now(buf); - //DEBUG_ECHOPGM(" ", buf); - } - // while (!enqueue_and_echo_command(buf)) idle(); - //DEBUG_ECHOLNPGM(" ✓ "); - if (!old_relative_mode) { - //DEBUG_ECHOPGM("G90"); - queue.enqueue_now(F("G90")); - //DEBUG_ECHOPGM(" ✓ "); } + //while (!enqueue_and_echo_command(buf)) idle(); + if (!old_relative_mode) queue.enqueue_now(F("G90")); } ForceCompleteUpdate(); - DEBUG_ECHOLNPGM("manmv done."); - return; cannotmove: - DEBUG_ECHOLNPGM(" cannot move ", AS_CHAR(axiscode)); return; } #if HAS_PID_HEATING void DGUSScreenHandler::HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr) { uint16_t rawvalue = swap16(*(uint16_t*)val_ptr); - DEBUG_ECHOLNPGM("V1:", rawvalue); float value = (float)rawvalue / 10; - DEBUG_ECHOLNPGM("V2:", value); float newvalue = 0; switch (var.VP) { @@ -268,7 +248,6 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #endif } - DEBUG_ECHOLNPGM("V3:", newvalue); *(float *)var.memadr = newvalue; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel @@ -277,7 +256,6 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if ENABLED(BABYSTEPPING) void DGUSScreenHandler::HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleLiveAdjustZ"); int16_t flag = swap16(*(uint16_t*)val_ptr), steps = flag ? -20 : 20; ExtUI::smartAdjustAxis_steps(steps, ExtUI::axis_t::Z, true); @@ -288,8 +266,6 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) void DGUSScreenHandler::HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleFilamentOption"); - uint8_t e_temp = 0; filament_data.heated = false; uint16_t preheat_option = swap16(*(uint16_t*)val_ptr); @@ -360,7 +336,6 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } void DGUSScreenHandler::HandleFilamentLoadUnload(DGUS_VP_Variable &var) { - DEBUG_ECHOLNPGM("HandleFilamentLoadUnload"); if (filament_data.action <= 0) return; // If we close to the target temperature, we can start load or unload the filament diff --git a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.h b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.h index e958155381..3b7199f07e 100644 --- a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.h +++ b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.h @@ -257,7 +257,7 @@ constexpr uint16_t VP_BED_STATUS = 0x331C; constexpr uint16_t VP_MOVE_OPTION = 0x3400; // Step per mm -constexpr uint16_t VP_X_STEP_PER_MM = 0x3600; // at the moment , 2 byte unsigned int , 0~1638.4 +constexpr uint16_t VP_X_STEP_PER_MM = 0x3600; // at the moment , uint16_t , 0~1638.4 //constexpr uint16_t VP_X2_STEP_PER_MM = 0x3602; constexpr uint16_t VP_Y_STEP_PER_MM = 0x3604; //constexpr uint16_t VP_Y2_STEP_PER_MM = 0x3606; @@ -271,7 +271,7 @@ constexpr uint16_t VP_E0_STEP_PER_MM = 0x3610; //constexpr uint16_t VP_E5_STEP_PER_MM = 0x361A; // PIDs -constexpr uint16_t VP_E0_PID_P = 0x3700; // at the moment , 2 byte unsigned int , 0~1638.4 +constexpr uint16_t VP_E0_PID_P = 0x3700; // at the moment , uint16_t , 0~1638.4 constexpr uint16_t VP_E0_PID_I = 0x3702; constexpr uint16_t VP_E0_PID_D = 0x3704; constexpr uint16_t VP_BED_PID_P = 0x3710; diff --git a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp index 475a03307e..ca1a64123a 100644 --- a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp @@ -134,8 +134,6 @@ void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { // meaning "return to previous screen" DGUSLCD_Screens target = (DGUSLCD_Screens)tmp[1]; - DEBUG_ECHOLNPGM("\n DEBUG target", target); - if (target == DGUSLCD_SCREEN_POPUP) { // Special handling for popup is to return to previous menu if (current_screen == DGUSLCD_SCREEN_POPUP && confirm_action_cb) confirm_action_cb(); @@ -151,8 +149,6 @@ void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { } void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleManualMove"); - int16_t movevalue = swap16(*(uint16_t*)val_ptr); #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) if (movevalue) { @@ -161,7 +157,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } #endif char axiscode; - unsigned int speed = 1500; // FIXME: get default feedrate for manual moves, don't hardcode. + uint16_t speed = _mf[X_AXIS]; // Default feedrate for manual moves switch (var.VP) { default: return; @@ -171,16 +167,21 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { if (!ExtUI::canMove(ExtUI::axis_t::X)) goto cannotmove; break; - case VP_MOVE_Y: - axiscode = 'Y'; - if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; - break; + #if HAS_Y_AXIS + case VP_MOVE_Y: + axiscode = 'Y'; + speed = _mf[Y_AXIS]; + if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; + break; + #endif - case VP_MOVE_Z: - axiscode = 'Z'; - speed = 300; // default to 5mm/s - if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; - break; + #if HAS_Z_AXIS + case VP_MOVE_Z: + axiscode = 'Z'; + speed = _mf[Z_AXIS]; + if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; + break; + #endif case VP_HOME_ALL: // only used for homing axiscode = '\0'; @@ -190,63 +191,42 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { if (!movevalue) { // homing - DEBUG_ECHOPGM(" homing ", AS_CHAR(axiscode)); char buf[6] = "G28 X"; buf[4] = axiscode; - //DEBUG_ECHOPGM(" ", buf); queue.enqueue_one_now(buf); - //DEBUG_ECHOLNPGM(" ✓"); ForceCompleteUpdate(); return; } else { // movement - DEBUG_ECHOPGM(" move ", AS_CHAR(axiscode)); - bool old_relative_mode = relative_mode; - if (!relative_mode) { - //DEBUG_ECHOPGM(" G91"); - queue.enqueue_now(F("G91")); - //DEBUG_ECHOPGM(" ✓ "); - } + const bool old_relative_mode = relative_mode; + if (!relative_mode) queue.enqueue_now(F("G91")); char buf[32]; // G1 X9999.99 F12345 - unsigned int backup_speed = MMS_TO_MMM(feedrate_mm_s); + const uint16_t backup_speed = MMS_TO_MMM(feedrate_mm_s); char sign[] = "\0"; int16_t value = movevalue / 100; if (movevalue < 0) { value = -value; sign[0] = '-'; } int16_t fraction = ABS(movevalue) % 100; snprintf_P(buf, 32, PSTR("G0 %c%s%d.%02d F%d"), axiscode, sign, value, fraction, speed); - //DEBUG_ECHOPGM(" ", buf); queue.enqueue_one_now(buf); - //DEBUG_ECHOLNPGM(" ✓ "); if (backup_speed != speed) { snprintf_P(buf, 32, PSTR("G0 F%d"), backup_speed); queue.enqueue_one_now(buf); - //DEBUG_ECHOPGM(" ", buf); - } - // while (!enqueue_and_echo_command(buf)) idle(); - //DEBUG_ECHOLNPGM(" ✓ "); - if (!old_relative_mode) { - //DEBUG_ECHOPGM("G90"); - queue.enqueue_now(F("G90")); - //DEBUG_ECHOPGM(" ✓ "); } + //while (!enqueue_and_echo_command(buf)) idle(); + if (!old_relative_mode) queue.enqueue_now(F("G90")); } ForceCompleteUpdate(); - DEBUG_ECHOLNPGM("manmv done."); - return; cannotmove: - DEBUG_ECHOLNPGM(" cannot move ", AS_CHAR(axiscode)); return; } #if HAS_PID_HEATING void DGUSScreenHandler::HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr) { uint16_t rawvalue = swap16(*(uint16_t*)val_ptr); - DEBUG_ECHOLNPGM("V1:", rawvalue); float value = (float)rawvalue / 10; - DEBUG_ECHOLNPGM("V2:", value); float newvalue = 0; switch (var.VP) { @@ -268,7 +248,6 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #endif } - DEBUG_ECHOLNPGM("V3:", newvalue); *(float *)var.memadr = newvalue; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel @@ -277,7 +256,6 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if ENABLED(BABYSTEPPING) void DGUSScreenHandler::HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleLiveAdjustZ"); int16_t flag = swap16(*(uint16_t*)val_ptr), steps = flag ? -20 : 20; ExtUI::smartAdjustAxis_steps(steps, ExtUI::axis_t::Z, true); @@ -288,8 +266,6 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) void DGUSScreenHandler::HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleFilamentOption"); - uint8_t e_temp = 0; filament_data.heated = false; uint16_t preheat_option = swap16(*(uint16_t*)val_ptr); @@ -360,7 +336,6 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } void DGUSScreenHandler::HandleFilamentLoadUnload(DGUS_VP_Variable &var) { - DEBUG_ECHOLNPGM("HandleFilamentLoadUnload"); if (filament_data.action <= 0) return; // If we close to the target temperature, we can start load or unload the filament diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.h b/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.h index bdcd248dd6..63586e7fe5 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.h +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.h @@ -256,10 +256,10 @@ constexpr uint16_t VP_E1_STATUS = 0x3412; constexpr uint16_t VP_MOVE_OPTION = 0x3500; // // PIDs -// constexpr uint16_t VP_E0_PID_P = 0x3700; // at the moment , 2 byte unsigned int , 0~1638.4 +// constexpr uint16_t VP_E0_PID_P = 0x3700; // at the moment , uint16_t , 0~1638.4 // constexpr uint16_t VP_E0_PID_I = 0x3702; // constexpr uint16_t VP_E0_PID_D = 0x3704; -// constexpr uint16_t VP_E1_PID_P = 0x3706; // at the moment , 2 byte unsigned int , 0~1638.4 +// constexpr uint16_t VP_E1_PID_P = 0x3706; // at the moment , uint16_t , 0~1638.4 // constexpr uint16_t VP_E1_PID_I = 0x3708; // constexpr uint16_t VP_E1_PID_D = 0x370A; // constexpr uint16_t VP_BED_PID_P = 0x3710; @@ -414,7 +414,7 @@ constexpr uint16_t SP_T_Bed_Set = 0x5040; constexpr uint16_t VP_FAN3_STATUS = 0x2716; // Step per mm - constexpr uint16_t VP_X_STEP_PER_MM = 0x2900; // at the moment , 2 byte unsigned int , 0~1638.4 + constexpr uint16_t VP_X_STEP_PER_MM = 0x2900; // at the moment , uint16_t , 0~1638.4 constexpr uint16_t VP_Y_STEP_PER_MM = 0x2904; constexpr uint16_t VP_Z_STEP_PER_MM = 0x2908; constexpr uint16_t VP_E0_STEP_PER_MM = 0x2910; @@ -521,10 +521,10 @@ constexpr uint16_t SP_T_Bed_Set = 0x5040; constexpr uint16_t VP_PrintTime_S = 0x3504; // PIDs - constexpr uint16_t VP_E0_PID_P = 0x3700; // at the moment , 2 byte unsigned int , 0~1638.4 + constexpr uint16_t VP_E0_PID_P = 0x3700; // at the moment , uint16_t , 0~1638.4 constexpr uint16_t VP_E0_PID_I = 0x3702; constexpr uint16_t VP_E0_PID_D = 0x3704; - constexpr uint16_t VP_E1_PID_P = 0x3706; // at the moment , 2 byte unsigned int , 0~1638.4 + constexpr uint16_t VP_E1_PID_P = 0x3706; // at the moment , uint16_t , 0~1638.4 constexpr uint16_t VP_E1_PID_I = 0x3708; constexpr uint16_t VP_E1_PID_D = 0x370A; constexpr uint16_t VP_BED_PID_P = 0x3710; diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp index 882cfadcd2..3cf0c32648 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp @@ -80,8 +80,6 @@ void DGUSScreenHandlerMKS::sendinfoscreen(const void *line1, const void *line2, void DGUSScreenHandlerMKS::DGUSLCD_SendFanToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { - //DEBUG_ECHOPGM(" DGUS_LCD_SendWordValueToDisplay ", var.VP); - //DEBUG_ECHOLNPGM(" data ", *(uint16_t *)var.memadr); uint16_t tmp = *(uint8_t *) var.memadr; // +1 -> avoid rounding issues for the display. // tmp = map(tmp, 0, 255, 0, 100); dgusdisplay.WriteVariable(var.VP, tmp); @@ -90,7 +88,6 @@ void DGUSScreenHandlerMKS::DGUSLCD_SendFanToDisplay(DGUS_VP_Variable &var) { void DGUSScreenHandlerMKS::DGUSLCD_SendBabyStepToDisplay(DGUS_VP_Variable &var) { float value = current_position.z; - DEBUG_ECHOLNPAIR_F(" >> ", value, 6); value *= cpow(10, 2); dgusdisplay.WriteVariable(VP_SD_Print_Baby, (uint16_t)value); } @@ -106,14 +103,11 @@ void DGUSScreenHandlerMKS::DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var) void DGUSScreenHandlerMKS::DGUSLCD_SetUint8(DGUS_VP_Variable &var, void *val_ptr) { if (var.memadr) { const uint16_t value = BE16_P(val_ptr); - DEBUG_ECHOLNPGM("Got uint8:", value); *(uint8_t*)var.memadr = map(constrain(value, 0, 255), 0, 255, 0, 255); - DEBUG_ECHOLNPGM("Set uint8:", *(uint8_t*)var.memadr); } } void DGUSScreenHandlerMKS::DGUSLCD_SendGbkToDisplay(DGUS_VP_Variable &var) { - DEBUG_ECHOLNPGM(" data ", *(uint16_t *)var.memadr); uint16_t *tmp = (uint16_t*) var.memadr; dgusdisplay.WriteVariable(var.VP, tmp, var.size, true); } @@ -278,8 +272,6 @@ void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { // meaning "return to previous screen" DGUSLCD_Screens target = (DGUSLCD_Screens)tmp[1]; - DEBUG_ECHOLNPGM("\n DEBUG target", target); - // when the dgus had reboot, it will enter the DGUSLCD_SCREEN_MAIN page, // so user can change any page to use this function, an it will check // if robin nano is printing. when it is, dgus will enter the printing @@ -313,7 +305,6 @@ void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { void DGUSScreenHandlerMKS::ScreenBackChange(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t target = BE16_P(val_ptr); - DEBUG_ECHOLNPGM(" back = 0x%x", target); switch (target) { } } @@ -327,7 +318,6 @@ void DGUSScreenHandlerMKS::ZoffsetConfirm(DGUS_VP_Variable &var, void *val_ptr) } void DGUSScreenHandlerMKS::GetTurnOffCtrl(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("GetTurnOffCtrl\n"); const uint16_t value = BE16_P(val_ptr); switch (value) { case 0 ... 1: DGUSAutoTurnOff = (bool)value; break; @@ -336,7 +326,6 @@ void DGUSScreenHandlerMKS::GetTurnOffCtrl(DGUS_VP_Variable &var, void *val_ptr) } void DGUSScreenHandlerMKS::GetMinExtrudeTemp(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("GetMinExtrudeTemp"); const uint16_t value = BE16_P(val_ptr); TERN_(PREVENT_COLD_EXTRUSION, thermalManager.extrude_min_temp = value); mks_min_extrusion_temp = value; @@ -344,7 +333,6 @@ void DGUSScreenHandlerMKS::GetMinExtrudeTemp(DGUS_VP_Variable &var, void *val_pt } void DGUSScreenHandlerMKS::GetZoffsetDistance(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("GetZoffsetDistance"); const uint16_t value = BE16_P(val_ptr); float val_distance = 0; switch (value) { @@ -358,7 +346,6 @@ void DGUSScreenHandlerMKS::GetZoffsetDistance(DGUS_VP_Variable &var, void *val_p } void DGUSScreenHandlerMKS::GetManualMovestep(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("\nGetManualMovestep"); *(uint16_t *)var.memadr = BE16_P(val_ptr); } @@ -395,7 +382,6 @@ void DGUSScreenHandlerMKS::GetOffsetValue(DGUS_VP_Variable &var, void *val_ptr) #if HAS_BED_PROBE const int32_t value = BE32_P(val_ptr); const float Offset = value / 100.0f; - DEBUG_ECHOLNPGM("\nget int6 offset >> ", value, 6); switch (var.VP) { default: break; @@ -743,8 +729,6 @@ void DGUSScreenHandlerMKS::TMC_ChangeConfig(DGUS_VP_Variable &var, void *val_ptr } void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleManualMove"); - int16_t movevalue = BE16_P(val_ptr); // Choose Move distance @@ -752,69 +736,64 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { else if (manualMoveStep == 0x02) manualMoveStep = 100; else if (manualMoveStep == 0x03) manualMoveStep = 1000; - DEBUG_ECHOLNPGM("QUEUE LEN:", queue.ring_buffer.length); - if (!print_job_timer.isPaused() && !queue.ring_buffer.empty()) return; char axiscode; - unsigned int speed = 1500; // FIXME: get default feedrate for manual moves, don't hardcode. + uint16_t speed = _mf[X_AXIS]; // Default feedrate for manual moves switch (var.VP) { // switch X Y Z or Home default: return; case VP_MOVE_X: - DEBUG_ECHOLNPGM("X Move"); axiscode = 'X'; if (!ExtUI::canMove(ExtUI::axis_t::X)) goto cannotmove; break; - case VP_MOVE_Y: - DEBUG_ECHOLNPGM("Y Move"); - axiscode = 'Y'; - if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; - break; + #if HAS_Y_AXIS + case VP_MOVE_Y: + axiscode = 'Y'; + speed = _mf[Y_AXIS]; + if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; + break; + #endif - case VP_MOVE_Z: - DEBUG_ECHOLNPGM("Z Move"); - axiscode = 'Z'; - speed = 300; // default to 5mm/s - if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; - break; + #if HAS_Z_AXIS + case VP_MOVE_Z: + axiscode = 'Z'; + speed = _mf[Z_AXIS]; + if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; + break; + #endif case VP_MOTOR_LOCK_UNLOK: - DEBUG_ECHOLNPGM("Motor Unlock"); movevalue = 5; - axiscode = '\0'; - // return ; break; case VP_HOME_ALL: // only used for homing - DEBUG_ECHOLNPGM("Home all"); - axiscode = '\0'; + axiscode = '\0'; movevalue = 0; // ignore value sent from display, this VP is _ONLY_ for homing. - //return; break; case VP_X_HOME: - DEBUG_ECHOLNPGM("X Home"); - axiscode = 'X'; + axiscode = 'X'; movevalue = 0; break; - case VP_Y_HOME: - DEBUG_ECHOLNPGM("Y Home"); - axiscode = 'Y'; - movevalue = 0; - break; + #if HAS_Y_AXIS + case VP_Y_HOME: + axiscode = 'Y'; + movevalue = 0; + break; + #endif - case VP_Z_HOME: - DEBUG_ECHOLNPGM("Z Home"); - axiscode = 'Z'; - movevalue = 0; - break; + #if HAS_Z_AXIS + case VP_Z_HOME: + axiscode = 'Z'; + movevalue = 0; + break; + #endif } - DEBUG_ECHOPGM("movevalue = ", movevalue); if (movevalue != 0 && movevalue != 5) { // get move distance switch (movevalue) { case 0x0001: movevalue = manualMoveStep; break; @@ -824,21 +803,16 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } if (!movevalue) { - // homing - DEBUG_ECHOPGM(" homing ", AS_CHAR(axiscode)); // char buf[6] = "G28 X"; // buf[4] = axiscode; char buf[6]; sprintf(buf, "G28 %c", axiscode); - //DEBUG_ECHOPGM(" ", buf); queue.enqueue_one_now(buf); - //DEBUG_ECHOLNPGM(" ✓"); ForceCompleteUpdate(); return; } else if (movevalue == 5) { - DEBUG_ECHOPGM("send M84"); char buf[6]; snprintf_P(buf,6,PSTR("M84 %c"), axiscode); queue.enqueue_one_now(buf); @@ -847,45 +821,30 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } else { // movement - DEBUG_ECHOPGM(" move ", AS_CHAR(axiscode)); - bool old_relative_mode = relative_mode; - - if (!relative_mode) { - //DEBUG_ECHOPGM(" G91"); - queue.enqueue_now(F("G91")); - //DEBUG_ECHOPGM(" ✓ "); - } + const bool old_relative_mode = relative_mode; + if (!relative_mode) queue.enqueue_now(F("G91")); char buf[32]; // G1 X9999.99 F12345 - // unsigned int backup_speed = MMS_TO_MMM(feedrate_mm_s); + //const uint16_t backup_speed = MMS_TO_MMM(feedrate_mm_s); char sign[] = "\0"; int16_t value = movevalue / 100; if (movevalue < 0) { value = -value; sign[0] = '-'; } - int16_t fraction = ABS(movevalue) % 100; + const int16_t fraction = ABS(movevalue) % 100; snprintf_P(buf, 32, PSTR("G0 %c%s%d.%02d F%d"), axiscode, sign, value, fraction, speed); queue.enqueue_one_now(buf); //if (backup_speed != speed) { // snprintf_P(buf, 32, PSTR("G0 F%d"), backup_speed); // queue.enqueue_one_now(buf); - // //DEBUG_ECHOPGM(" ", buf); //} //while (!enqueue_and_echo_command(buf)) idle(); - //DEBUG_ECHOLNPGM(" ✓ "); - if (!old_relative_mode) { - //DEBUG_ECHOPGM("G90"); - //queue.enqueue_now(F("G90")); - queue.enqueue_now(F("G90")); - //DEBUG_ECHOPGM(" ✓ "); - } + + if (!old_relative_mode) queue.enqueue_now(F("G90")); } ForceCompleteUpdate(); - DEBUG_ECHOLNPGM("manmv done."); - return; cannotmove: - DEBUG_ECHOLNPGM(" cannot move ", AS_CHAR(axiscode)); return; } @@ -902,10 +861,7 @@ void DGUSScreenHandlerMKS::GetParkPos(DGUS_VP_Variable &var, void *val_ptr) { } void DGUSScreenHandlerMKS::HandleChangeLevelPoint(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleChangeLevelPoint"); - const int16_t value_raw = BE16_P(val_ptr); - DEBUG_ECHOLNPGM("value_raw:", value_raw); *(int16_t*)var.memadr = value_raw; @@ -914,14 +870,9 @@ void DGUSScreenHandlerMKS::HandleChangeLevelPoint(DGUS_VP_Variable &var, void *v } void DGUSScreenHandlerMKS::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleStepPerMMChanged"); - const uint16_t value_raw = BE16_P(val_ptr); const float value = (float)value_raw; - DEBUG_ECHOLNPGM("value_raw:", value_raw); - DEBUG_ECHOLNPGM("value:", value); - ExtUI::axis_t axis; switch (var.VP) { default: return; @@ -930,20 +881,14 @@ void DGUSScreenHandlerMKS::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *v case VP_Z_STEP_PER_MM: axis = ExtUI::axis_t::Z; break; } ExtUI::setAxisSteps_per_mm(value, axis); - DEBUG_ECHOLNPGM("value_set:", ExtUI::getAxisSteps_per_mm(axis)); settings.save(); skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } void DGUSScreenHandlerMKS::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleStepPerMMExtruderChanged"); - const uint16_t value_raw = BE16_P(val_ptr); const float value = (float)value_raw; - DEBUG_ECHOLNPGM("value_raw:", value_raw); - DEBUG_ECHOLNPGM("value:", value); - ExtUI::extruder_t extruder; switch (var.VP) { default: return; @@ -955,20 +900,14 @@ void DGUSScreenHandlerMKS::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, #endif } ExtUI::setAxisSteps_per_mm(value, extruder); - DEBUG_ECHOLNPGM("value_set:", ExtUI::getAxisSteps_per_mm(extruder)); settings.save(); skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } void DGUSScreenHandlerMKS::HandleMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleMaxSpeedChange"); - const uint16_t value_raw = BE16_P(val_ptr); const float value = (float)value_raw; - DEBUG_ECHOLNPGM("value_raw:", value_raw); - DEBUG_ECHOLNPGM("value:", value); - ExtUI::axis_t axis; switch (var.VP) { case VP_X_MAX_SPEED: axis = ExtUI::axis_t::X; break; @@ -977,20 +916,14 @@ void DGUSScreenHandlerMKS::HandleMaxSpeedChange(DGUS_VP_Variable &var, void *val default: return; } ExtUI::setAxisMaxFeedrate_mm_s(value, axis); - DEBUG_ECHOLNPGM("value_set:", ExtUI::getAxisMaxFeedrate_mm_s(axis)); settings.save(); skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } void DGUSScreenHandlerMKS::HandleExtruderMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleExtruderMaxSpeedChange"); - const uint16_t value_raw = BE16_P(val_ptr); const float value = (float)value_raw; - DEBUG_ECHOLNPGM("value_raw:", value_raw); - DEBUG_ECHOLNPGM("value:", value); - ExtUI::extruder_t extruder; switch (var.VP) { default: return; @@ -1002,20 +935,14 @@ void DGUSScreenHandlerMKS::HandleExtruderMaxSpeedChange(DGUS_VP_Variable &var, v case VP_E1_MAX_SPEED: extruder = ExtUI::extruder_t::E1; break; } ExtUI::setAxisMaxFeedrate_mm_s(value, extruder); - DEBUG_ECHOLNPGM("value_set:", ExtUI::getAxisMaxFeedrate_mm_s(extruder)); settings.save(); skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } void DGUSScreenHandlerMKS::HandleMaxAccChange(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleMaxAccChange"); - const uint16_t value_raw = BE16_P(val_ptr); const float value = (float)value_raw; - DEBUG_ECHOLNPGM("value_raw:", value_raw); - DEBUG_ECHOLNPGM("value:", value); - ExtUI::axis_t axis; switch (var.VP) { default: return; @@ -1024,16 +951,12 @@ void DGUSScreenHandlerMKS::HandleMaxAccChange(DGUS_VP_Variable &var, void *val_p case VP_Z_ACC_MAX_SPEED: axis = ExtUI::axis_t::Z; break; } ExtUI::setAxisMaxAcceleration_mm_s2(value, axis); - DEBUG_ECHOLNPGM("value_set:", ExtUI::getAxisMaxAcceleration_mm_s2(axis)); settings.save(); skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } void DGUSScreenHandlerMKS::HandleExtruderAccChange(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleExtruderAccChange"); - uint16_t value_raw = BE16_P(val_ptr); - DEBUG_ECHOLNPGM("value_raw:", value_raw); float value = (float)value_raw; ExtUI::extruder_t extruder; switch (var.VP) { @@ -1045,9 +968,7 @@ void DGUSScreenHandlerMKS::HandleExtruderAccChange(DGUS_VP_Variable &var, void * case VP_E1_ACC_MAX_SPEED: extruder = ExtUI::extruder_t::E1; settings.load(); break; #endif } - DEBUG_ECHOLNPGM("value:", value); ExtUI::setAxisMaxAcceleration_mm_s2(value, extruder); - DEBUG_ECHOLNPGM("value_set:", ExtUI::getAxisMaxAcceleration_mm_s2(extruder)); settings.save(); skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } @@ -1087,9 +1008,7 @@ void DGUSScreenHandlerMKS::HandleAccChange(DGUS_VP_Variable &var, void *val_ptr) #if HAS_PID_HEATING void DGUSScreenHandler::HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t rawvalue = BE16_P(val_ptr); - DEBUG_ECHOLNPGM("V1:", rawvalue); - const float value = 1.0f * rawvalue; - DEBUG_ECHOLNPGM("V2:", value); + const float value = float(rawvalue); float newvalue = 0; switch (var.VP) { @@ -1111,7 +1030,6 @@ void DGUSScreenHandlerMKS::HandleAccChange(DGUS_VP_Variable &var, void *val_ptr) #endif } - DEBUG_ECHOLNPGM("V3:", newvalue); *(float *)var.memadr = newvalue; settings.save(); @@ -1121,7 +1039,6 @@ void DGUSScreenHandlerMKS::HandleAccChange(DGUS_VP_Variable &var, void *val_ptr) #if ENABLED(BABYSTEPPING) void DGUSScreenHandler::HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleLiveAdjustZ"); const float step = ZOffset_distance; const uint16_t flag = BE16_P(val_ptr); @@ -1166,7 +1083,6 @@ void DGUSScreenHandlerMKS::GetManualFilament(DGUS_VP_Variable &var, void *val_pt const uint16_t value_len = BE16_P(val_ptr); const float value = (float)value_len; - DEBUG_ECHOLNPGM("GetManualFilament:", value); distanceFilament = value; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel @@ -1175,7 +1091,6 @@ void DGUSScreenHandlerMKS::GetManualFilament(DGUS_VP_Variable &var, void *val_pt void DGUSScreenHandlerMKS::GetManualFilamentSpeed(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t value_len = BE16_P(val_ptr); filamentSpeed_mm_s = value_len; - DEBUG_ECHOLNPGM("GetManualFilamentSpeed:", value_len); skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } @@ -1264,20 +1179,16 @@ void GcodeSuite::M1002() { } void DGUSScreenHandlerMKS::FilamentLoad(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("FilamentLoad"); FilamentLoadUnload(var, val_ptr, 1); } void DGUSScreenHandlerMKS::FilamentUnLoad(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("FilamentUnLoad"); FilamentLoadUnload(var, val_ptr, -1); } #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) void DGUSScreenHandler::HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleFilamentOption"); - uint8_t e_temp = 0; filament_data.heated = false; uint16_t preheat_option = BE16_P(val_ptr); @@ -1345,7 +1256,6 @@ void DGUSScreenHandlerMKS::FilamentUnLoad(DGUS_VP_Variable &var, void *val_ptr) } void DGUSScreenHandler::HandleFilamentLoadUnload(DGUS_VP_Variable &var) { - DEBUG_ECHOLNPGM("HandleFilamentLoadUnload"); if (filament_data.action <= 0) return; // If we close to the target temperature, we can start load or unload the filament diff --git a/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.h b/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.h index f5fb986bde..d529b0adfe 100644 --- a/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.h +++ b/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.h @@ -247,7 +247,7 @@ constexpr uint16_t VP_BED_STATUS = 0x331C; constexpr uint16_t VP_MOVE_OPTION = 0x3400; // Step per mm -constexpr uint16_t VP_X_STEP_PER_MM = 0x3600; // at the moment , 2 byte unsigned int , 0~1638.4 +constexpr uint16_t VP_X_STEP_PER_MM = 0x3600; // at the moment , uint16_t , 0~1638.4 //constexpr uint16_t VP_X2_STEP_PER_MM = 0x3602; constexpr uint16_t VP_Y_STEP_PER_MM = 0x3604; //constexpr uint16_t VP_Y2_STEP_PER_MM = 0x3606; @@ -261,7 +261,7 @@ constexpr uint16_t VP_E0_STEP_PER_MM = 0x3610; //constexpr uint16_t VP_E5_STEP_PER_MM = 0x361A; // PIDs -constexpr uint16_t VP_E0_PID_P = 0x3700; // at the moment , 2 byte unsigned int , 0~1638.4 +constexpr uint16_t VP_E0_PID_P = 0x3700; // at the moment , uint16_t , 0~1638.4 constexpr uint16_t VP_E0_PID_I = 0x3702; constexpr uint16_t VP_E0_PID_D = 0x3704; constexpr uint16_t VP_BED_PID_P = 0x3710; diff --git a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp index 55be3777e1..22fdd80fc9 100644 --- a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp @@ -134,8 +134,6 @@ void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { // meaning "return to previous screen" DGUSLCD_Screens target = (DGUSLCD_Screens)tmp[1]; - DEBUG_ECHOLNPGM("\n DEBUG target", target); - if (target == DGUSLCD_SCREEN_POPUP) { // Special handling for popup is to return to previous menu if (current_screen == DGUSLCD_SCREEN_POPUP && confirm_action_cb) confirm_action_cb(); @@ -151,8 +149,6 @@ void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { } void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleManualMove"); - int16_t movevalue = swap16(*(uint16_t*)val_ptr); #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) if (movevalue) { @@ -161,7 +157,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } #endif char axiscode; - unsigned int speed = 1500; // FIXME: get default feedrate for manual moves, don't hardcode. + uint16_t speed = _mf[X_AXIS]; // Default feedrate for manual moves switch (var.VP) { default: return; @@ -171,16 +167,21 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { if (!ExtUI::canMove(ExtUI::axis_t::X)) goto cannotmove; break; - case VP_MOVE_Y: - axiscode = 'Y'; - if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; - break; + #if HAS_Y_AXIS + case VP_MOVE_Y: + axiscode = 'Y'; + speed = _mf[Y_AXIS]; + if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; + break; + #endif - case VP_MOVE_Z: - axiscode = 'Z'; - speed = 300; // default to 5mm/s - if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; - break; + #if HAS_Z_AXIS + case VP_MOVE_Z: + axiscode = 'Z'; + speed = _mf[Z_AXIS]; + if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; + break; + #endif case VP_HOME_ALL: // only used for homing axiscode = '\0'; @@ -190,63 +191,42 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { if (!movevalue) { // homing - DEBUG_ECHOPGM(" homing ", AS_CHAR(axiscode)); char buf[6] = "G28 X"; buf[4] = axiscode; - //DEBUG_ECHOPGM(" ", buf); queue.enqueue_one_now(buf); - //DEBUG_ECHOLNPGM(" ✓"); ForceCompleteUpdate(); return; } else { // movement - DEBUG_ECHOPGM(" move ", AS_CHAR(axiscode)); - bool old_relative_mode = relative_mode; - if (!relative_mode) { - //DEBUG_ECHOPGM(" G91"); - queue.enqueue_now(F("G91")); - //DEBUG_ECHOPGM(" ✓ "); - } + const bool old_relative_mode = relative_mode; + if (!relative_mode) queue.enqueue_now(F("G91")); char buf[32]; // G1 X9999.99 F12345 - unsigned int backup_speed = MMS_TO_MMM(feedrate_mm_s); + const uint16_t backup_speed = MMS_TO_MMM(feedrate_mm_s); char sign[] = "\0"; int16_t value = movevalue / 100; if (movevalue < 0) { value = -value; sign[0] = '-'; } int16_t fraction = ABS(movevalue) % 100; snprintf_P(buf, 32, PSTR("G0 %c%s%d.%02d F%d"), axiscode, sign, value, fraction, speed); - //DEBUG_ECHOPGM(" ", buf); queue.enqueue_one_now(buf); - //DEBUG_ECHOLNPGM(" ✓ "); if (backup_speed != speed) { snprintf_P(buf, 32, PSTR("G0 F%d"), backup_speed); queue.enqueue_one_now(buf); - //DEBUG_ECHOPGM(" ", buf); - } - // while (!enqueue_and_echo_command(buf)) idle(); - //DEBUG_ECHOLNPGM(" ✓ "); - if (!old_relative_mode) { - //DEBUG_ECHOPGM("G90"); - queue.enqueue_now(F("G90")); - //DEBUG_ECHOPGM(" ✓ "); } + //while (!enqueue_and_echo_command(buf)) idle(); + if (!old_relative_mode) queue.enqueue_now(F("G90")); } ForceCompleteUpdate(); - DEBUG_ECHOLNPGM("manmv done."); - return; cannotmove: - DEBUG_ECHOLNPGM(" cannot move ", AS_CHAR(axiscode)); return; } #if HAS_PID_HEATING void DGUSScreenHandler::HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr) { uint16_t rawvalue = swap16(*(uint16_t*)val_ptr); - DEBUG_ECHOLNPGM("V1:", rawvalue); float value = (float)rawvalue / 10; - DEBUG_ECHOLNPGM("V2:", value); float newvalue = 0; switch (var.VP) { @@ -268,7 +248,6 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #endif } - DEBUG_ECHOLNPGM("V3:", newvalue); *(float *)var.memadr = newvalue; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel @@ -277,7 +256,6 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if ENABLED(BABYSTEPPING) void DGUSScreenHandler::HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleLiveAdjustZ"); int16_t flag = swap16(*(uint16_t*)val_ptr), steps = flag ? -20 : 20; ExtUI::smartAdjustAxis_steps(steps, ExtUI::axis_t::Z, true); @@ -288,8 +266,6 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) void DGUSScreenHandler::HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr) { - DEBUG_ECHOLNPGM("HandleFilamentOption"); - uint8_t e_temp = 0; filament_data.heated = false; uint16_t preheat_option = swap16(*(uint16_t*)val_ptr); @@ -360,7 +336,6 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } void DGUSScreenHandler::HandleFilamentLoadUnload(DGUS_VP_Variable &var) { - DEBUG_ECHOLNPGM("HandleFilamentLoadUnload"); if (filament_data.action <= 0) return; // If we close to the target temperature, we can start load or unload the filament diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.cpp index df22407c0f..5bbeb0d7cc 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.cpp @@ -164,7 +164,6 @@ void DGUSDisplay::ReadVersions() { } void DGUSDisplay::SwitchScreen(DGUS_Screen screen) { - DEBUG_ECHOLNPGM("SwitchScreen ", (uint8_t)screen); const uint8_t command[] = { 0x5A, 0x01, 0x00, (uint8_t)screen }; Write(0x84, command, sizeof(command)); } @@ -172,14 +171,11 @@ void DGUSDisplay::SwitchScreen(DGUS_Screen screen) { void DGUSDisplay::PlaySound(uint8_t start, uint8_t len, uint8_t volume) { if (volume == 0) volume = DGUSDisplay::volume; if (volume == 0) return; - DEBUG_ECHOLNPGM("PlaySound ", start, ":", len, "\nVolume ", volume); const uint8_t command[] = { start, len, volume, 0x00 }; Write(0xA0, command, sizeof(command)); } void DGUSDisplay::EnableControl(DGUS_Screen screen, DGUS_ControlType type, DGUS_Control control) { - DEBUG_ECHOLNPGM("EnableControl ", (uint8_t)control, "\nScreen ", (uint8_t)screen, "\nType ", (uint8_t)type); - const uint8_t command[] = { 0x5A, 0xA5, 0x00, (uint8_t)screen, (uint8_t)control, type, 0x00, 0x01 }; Write(0xB0, command, sizeof(command)); @@ -188,8 +184,6 @@ void DGUSDisplay::EnableControl(DGUS_Screen screen, DGUS_ControlType type, DGUS_ } void DGUSDisplay::DisableControl(DGUS_Screen screen, DGUS_ControlType type, DGUS_Control control) { - DEBUG_ECHOLNPGM("DisableControl ", (uint8_t)control, "\nScreen ", (uint8_t)screen, "\nType ", (uint8_t)type); - const uint8_t command[] = { 0x5A, 0xA5, 0x00, (uint8_t)screen, (uint8_t)control, type, 0x00, 0x00 }; Write(0xB0, command, sizeof(command)); @@ -208,14 +202,12 @@ uint8_t DGUSDisplay::GetVolume() { void DGUSDisplay::SetBrightness(uint8_t new_brightness) { brightness = constrain(new_brightness, 0, 100); new_brightness = map_precise(brightness, 0, 100, 5, 100); - DEBUG_ECHOLNPGM("SetBrightness ", new_brightness); const uint8_t command[] = { new_brightness, new_brightness }; Write(0x82, command, sizeof(command)); } void DGUSDisplay::SetVolume(uint8_t new_volume) { volume = map_precise(constrain(new_volume, 0, 100), 0, 100, 0, 255); - DEBUG_ECHOLNPGM("SetVolume ", volume); const uint8_t command[] = { volume, 0x00 }; Write(0xA1, command, sizeof(command)); } @@ -226,7 +218,6 @@ void DGUSDisplay::ProcessRx() { if (!LCD_SERIAL.available() && LCD_SERIAL.buffer_overruns()) { // Overrun, but reset the flag only when the buffer is empty // We want to extract as many as valid datagrams possible... - DEBUG_ECHOPGM("OVFL"); rx_datagram_state = DGUS_IDLE; //LCD_SERIAL.reset_rx_overun(); LCD_SERIAL.flush(); @@ -239,20 +230,16 @@ void DGUSDisplay::ProcessRx() { case DGUS_IDLE: // Waiting for the first header byte receivedbyte = LCD_SERIAL.read(); - DEBUG_ECHOPGM("< ", receivedbyte); if (DGUS_HEADER1 == receivedbyte) rx_datagram_state = DGUS_HEADER1_SEEN; break; case DGUS_HEADER1_SEEN: // Waiting for the second header byte receivedbyte = LCD_SERIAL.read(); - DEBUG_ECHOPGM(" ", receivedbyte); rx_datagram_state = (DGUS_HEADER2 == receivedbyte) ? DGUS_HEADER2_SEEN : DGUS_IDLE; break; case DGUS_HEADER2_SEEN: // Waiting for the length byte rx_datagram_len = LCD_SERIAL.read(); - DEBUG_ECHOPGM(" (", rx_datagram_len, ") "); - // Telegram min len is 3 (command and one word of payload) rx_datagram_state = WITHIN(rx_datagram_len, 3, DGUS_RX_BUFFER_SIZE) ? DGUS_WAIT_TELEGRAM : DGUS_IDLE; break; @@ -262,22 +249,16 @@ void DGUSDisplay::ProcessRx() { initialized = true; // We've talked to it, so we defined it as initialized. uint8_t command = LCD_SERIAL.read(); - - DEBUG_ECHOPGM("# ", command); - uint8_t readlen = rx_datagram_len - 1; // command is part of len. unsigned char tmp[rx_datagram_len - 1]; unsigned char *ptmp = tmp; while (readlen--) { receivedbyte = LCD_SERIAL.read(); - DEBUG_ECHOPGM(" ", receivedbyte); *ptmp++ = receivedbyte; } - DEBUG_ECHOPGM(" # "); // mostly we'll get this: 5A A5 03 82 4F 4B -- ACK on 0x82, so discard it. if (command == DGUS_WRITEVAR && 'O' == tmp[0] && 'K' == tmp[1]) { - DEBUG_ECHOLNPGM(">"); rx_datagram_state = DGUS_IDLE; break; } @@ -292,10 +273,7 @@ void DGUSDisplay::ProcessRx() { if (command == DGUS_READVAR) { const uint16_t addr = tmp[0] << 8 | tmp[1]; const uint8_t dlen = tmp[2] << 1; // Convert to Bytes. (Display works with words) - DEBUG_ECHOPGM("addr=", addr, " dlen=", dlen, "> "); - if (addr == DGUS_VERSION && dlen == 2) { - DEBUG_ECHOLNPGM("VERSIONS"); gui_version = tmp[3]; os_version = tmp[4]; rx_datagram_state = DGUS_IDLE; @@ -304,13 +282,11 @@ void DGUSDisplay::ProcessRx() { DGUS_VP vp; if (!DGUS_PopulateVP((DGUS_Addr)addr, &vp)) { - DEBUG_ECHOLNPGM("VP not found"); rx_datagram_state = DGUS_IDLE; break; } if (!vp.rx_handler) { - DEBUG_ECHOLNPGM("VP found, no handler."); rx_datagram_state = DGUS_IDLE; break; } @@ -346,7 +322,6 @@ void DGUSDisplay::ProcessRx() { } if (dlen != vp.size) { - DEBUG_ECHOLNPGM("VP found, size mismatch."); rx_datagram_state = DGUS_IDLE; break; } @@ -358,7 +333,6 @@ void DGUSDisplay::ProcessRx() { break; } - DEBUG_ECHOLNPGM(">"); rx_datagram_state = DGUS_IDLE; break; } @@ -402,7 +376,6 @@ bool DGUS_PopulateVP(const DGUS_Addr addr, DGUS_VP * const buffer) { return true; } } while (++ret); - DEBUG_ECHOLNPGM("VP not found: ", (uint16_t)addr); return false; } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp index 3d0896a67c..a7295f90fe 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp @@ -473,19 +473,14 @@ void DGUSScreenHandler::MoveToScreen(DGUS_Screen screen, bool abort_wait) { if (!CallScreenSetup(screen)) return; - if (!SendScreenVPData(screen, true)) { - DEBUG_ECHOLNPGM("SendScreenVPData failed"); - return; - } + if (!SendScreenVPData(screen, true)) return; current_screen = screen; dgus_display.SwitchScreen(current_screen); } bool DGUSScreenHandler::SendScreenVPData(DGUS_Screen screen, bool complete_update) { - if (complete_update) { - full_update = false; - } + if (complete_update) full_update = false; const DGUS_Addr *list = FindScreenAddrList(screen); diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp index 47603052e9..39b3f57e96 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp @@ -37,7 +37,7 @@ #endif #if ENABLED(SDSUPPORT) - void DGUSTxHandler::SetFileControlState(int file, bool state) { + void DGUSTxHandler::SetFileControlState(int16_t file, bool state) { DGUS_Control control; switch (file) { @@ -75,17 +75,17 @@ // Batch send uint16_t data[DGUS_FILE_COUNT]; - for (int i = 0; i < DGUS_FILE_COUNT; i++) { + for (int16_t i = 0; i < DGUS_FILE_COUNT; i++) { if (!dgus_screen_handler.filelist.seek(dgus_screen_handler.filelist_offset + i)) { - data[i] = Swap16((uint16_t)DGUS_Data::SDType::NONE); + data[i] = Swap16(DGUS_Data::SDType::NONE); SetFileControlState(i, false); continue; } data[i] = dgus_screen_handler.filelist.isDir() ? - Swap16((uint16_t)DGUS_Data::SDType::DIRECTORY) - : Swap16((uint16_t)DGUS_Data::SDType::FILE); + Swap16(DGUS_Data::SDType::DIRECTORY) + : Swap16(DGUS_Data::SDType::FILE); SetFileControlState(i, true); } @@ -287,7 +287,7 @@ void DGUSTxHandler::TempMax(DGUS_VP &vp) { void DGUSTxHandler::StepperStatus(DGUS_VP &vp) { const bool motor_on = stepper.axis_enabled.bits & (_BV(NUM_AXES) - 1); - dgus_display.Write((uint16_t)vp.addr, Swap16(uint16_t(motor_on ? DGUS_Data::Status::ENABLED : DGUS_Data::Status::DISABLED))); + dgus_display.Write((uint16_t)vp.addr, Swap16(motor_on ? DGUS_Data::Status::ENABLED : DGUS_Data::Status::DISABLED)); } void DGUSTxHandler::StepIcons(DGUS_VP &vp) { @@ -340,7 +340,7 @@ void DGUSTxHandler::ABLGrid(DGUS_VP &vp) { xy_uint8_t point; int16_t fixed; - for (int i = 0; i < DGUS_LEVEL_GRID_SIZE; i++) { + for (int16_t i = 0; i < DGUS_LEVEL_GRID_SIZE; i++) { point.x = i % (GRID_MAX_POINTS_X); point.y = i / (GRID_MAX_POINTS_X); fixed = dgus_display.ToFixedPoint(ExtUI::getMeshPoint(point)); @@ -385,13 +385,13 @@ void DGUSTxHandler::BLTouch(DGUS_VP &vp) { DGUSDisplay::RETURN_KEY_CODE, DGUS_Control::EXTRA2); - dgus_display.Write((uint16_t)vp.addr, Swap16((uint16_t)DGUS_Data::Status::ENABLED)); + dgus_display.Write((uint16_t)vp.addr, Swap16(DGUS_Data::Status::ENABLED)); #else dgus_display.DisableControl(DGUS_Screen::SETTINGS_MENU2, DGUSDisplay::RETURN_KEY_CODE, DGUS_Control::EXTRA2); - dgus_display.Write((uint16_t)vp.addr, Swap16((uint16_t)DGUS_Data::Status::DISABLED)); + dgus_display.Write((uint16_t)vp.addr, Swap16(DGUS_Data::Status::DISABLED)); #endif } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h index 7d1b46773b..aad73dd5d6 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h @@ -24,12 +24,12 @@ #include "DGUSDisplay.h" #include "definition/DGUS_VP.h" -#define Swap16(val) ((uint16_t)(((uint16_t)(val) >> 8) | ((uint16_t)(val) << 8))) +#define Swap16(val) (uint16_t((uint16_t(val) >> 8) | (uint16_t(val) << 8))) namespace DGUSTxHandler { #if ENABLED(SDSUPPORT) - void SetFileControlState(int, bool); + void SetFileControlState(int16_t, bool); void FileType(DGUS_VP &); void FileName(DGUS_VP &); void ScrollIcons(DGUS_VP &); @@ -85,18 +85,18 @@ namespace DGUSTxHandler { switch (vp.size) { default: return; case 1: { - const uint8_t data = (uint8_t)(*(T*)vp.extra); - dgus_display.Write((uint16_t)vp.addr, data); + const uint8_t data = uint8_t(*(T*)vp.extra); + dgus_display.Write(uint16_t(vp.addr), data); break; } case 2: { - const uint16_t data = (uint16_t)(*(T*)vp.extra); - dgus_display.Write((uint16_t)vp.addr, Swap16(data)); + const uint16_t data = uint16_t(*(T*)vp.extra); + dgus_display.Write(uint16_t(vp.addr), Swap16(data)); break; } case 4: { - const uint32_t data = (uint32_t)(*(T*)vp.extra); - dgus_display.Write((uint16_t)vp.addr, dgus_display.SwapBytes(data)); + const uint32_t data = uint32_t(*(T*)vp.extra); + dgus_display.Write(uint16_t(vp.addr), dgus_display.SwapBytes(data)); break; } } @@ -109,17 +109,17 @@ namespace DGUSTxHandler { default: return; case 1: { const uint8_t data = dgus_display.ToFixedPoint(*(T*)vp.extra); - dgus_display.Write((uint16_t)vp.addr, data); + dgus_display.Write(uint16_t(vp.addr), data); break; } case 2: { const uint16_t data = dgus_display.ToFixedPoint(*(T*)vp.extra); - dgus_display.Write((uint16_t)vp.addr, Swap16(data)); + dgus_display.Write(uint16_t(vp.addr), Swap16(data)); break; } case 4: { const uint32_t data = dgus_display.ToFixedPoint(*(T*)vp.extra); - dgus_display.Write((uint16_t)vp.addr, dgus_display.SwapBytes(data)); + dgus_display.Write(uint16_t(vp.addr), dgus_display.SwapBytes(data)); break; } } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h b/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h index 39e97156d0..3fd6d16f5b 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h @@ -21,153 +21,153 @@ */ #pragma once -constexpr uint8_t DGUS_LINE_LEN = 32; -constexpr uint8_t DGUS_STATUS_LEN = 32; -constexpr uint8_t DGUS_FILE_COUNT = 5; -constexpr uint8_t DGUS_FILENAME_LEN = 32; -constexpr uint8_t DGUS_ELLAPSED_LEN = 15; -constexpr uint8_t DGUS_LEVEL_GRID_SIZE = 25; -constexpr uint8_t DGUS_MACHINE_LEN = 24; -constexpr uint8_t DGUS_BUILDVOLUME_LEN = 24; -constexpr uint8_t DGUS_VERSION_LEN = 16; -constexpr uint8_t DGUS_PRINTTIME_LEN = 24; -constexpr uint8_t DGUS_LONGESTPRINT_LEN = 24; -constexpr uint8_t DGUS_FILAMENTUSED_LEN = 24; -constexpr uint8_t DGUS_GCODE_LEN = 32; +#define DGUS_LINE_LEN 32 +#define DGUS_STATUS_LEN 32 +#define DGUS_FILE_COUNT 5 +#define DGUS_FILENAME_LEN 32 +#define DGUS_ELAPSED_LEN 15 +#define DGUS_LEVEL_GRID_SIZE 25 +#define DGUS_MACHINE_LEN 24 +#define DGUS_BUILDVOLUME_LEN 24 +#define DGUS_VERSION_LEN 16 +#define DGUS_PRINTTIME_LEN 24 +#define DGUS_LONGESTPRINT_LEN 24 +#define DGUS_FILAMENTUSED_LEN 24 +#define DGUS_GCODE_LEN 32 enum class DGUS_Addr : uint16_t { - MESSAGE_Line1 = 0x1100, // 0x1100 - 0x111F - MESSAGE_Line2 = 0x1120, // 0x1120 - 0x113F - MESSAGE_Line3 = 0x1140, // 0x1140 - 0x115F - MESSAGE_Line4 = 0x1160, // 0x1160 - 0x117F + MESSAGE_Line1 = 0x1100, // 0x1100 - 0x111F + MESSAGE_Line2 = 0x1120, // 0x1120 - 0x113F + MESSAGE_Line3 = 0x1140, // 0x1140 - 0x115F + MESSAGE_Line4 = 0x1160, // 0x1160 - 0x117F // READ-ONLY VARIABLES - SCREENCHANGE = 0x2000, // Screen change request. Data contains target screen in low byte. - SCREENCHANGE_SD = 0x2001, // Only change if SD card present. - SCREENCHANGE_Idle = 0x2002, // Only change if not printing. - SCREENCHANGE_Printing = 0x2003, // Only change if printing. - SD_SelectFile = 0x2004, // Data: file index (0-4) - SD_Scroll = 0x2005, // Data: DGUS_Data::Scroll - SD_Print = 0x2006, - STATUS_Abort = 0x2007, // Popup / Data: DGUS_Data::Popup - STATUS_Pause = 0x2008, // Popup / Data: DGUS_Data::Popup - STATUS_Resume = 0x2009, // Popup / Data: DGUS_Data::Popup - ADJUST_SetFeedrate = 0x200A, // Type: Integer (16 bits signed) - ADJUST_SetFlowrate_CUR = 0x200B, // Type: Integer (16 bits signed) + SCREENCHANGE = 0x2000, // Screen change request. Data contains target screen in low byte. + SCREENCHANGE_SD = 0x2001, // Only change if SD card present. + SCREENCHANGE_Idle = 0x2002, // Only change if not printing. + SCREENCHANGE_Printing = 0x2003, // Only change if printing. + SD_SelectFile = 0x2004, // Data: file index (0-4) + SD_Scroll = 0x2005, // Data: DGUS_Data::Scroll + SD_Print = 0x2006, + STATUS_Abort = 0x2007, // Popup / Data: DGUS_Data::Popup + STATUS_Pause = 0x2008, // Popup / Data: DGUS_Data::Popup + STATUS_Resume = 0x2009, // Popup / Data: DGUS_Data::Popup + ADJUST_SetFeedrate = 0x200A, // Type: Integer (16 bits signed) + ADJUST_SetFlowrate_CUR = 0x200B, // Type: Integer (16 bits signed) #if HAS_MULTI_EXTRUDER - ADJUST_SetFlowrate_E0 = 0x200C, // Type: Integer (16 bits signed) - ADJUST_SetFlowrate_E1 = 0x200D, // Type: Integer (16 bits signed) + ADJUST_SetFlowrate_E0 = 0x200C, // Type: Integer (16 bits signed) + ADJUST_SetFlowrate_E1 = 0x200D, // Type: Integer (16 bits signed) #endif - ADJUST_SetBabystep = 0x200E, // Type: Fixed point, 2 decimals (16 bits signed) - ADJUST_Babystep = 0x200F, // Data: DGUS_Data::Adjust - TEMP_Preset = 0x2010, // Popup / Data: DGUS_Data::TempPreset - TEMP_SetTarget_Bed = 0x2011, // Type: Integer (16 bits signed) - TEMP_SetTarget_H0 = 0x2012, // Type: Integer (16 bits signed) + ADJUST_SetBabystep = 0x200E, // Type: Fixed point, 2 decimals (16 bits signed) + ADJUST_Babystep = 0x200F, // Data: DGUS_Data::Adjust + TEMP_Preset = 0x2010, // Popup / Data: DGUS_Data::TempPreset + TEMP_SetTarget_Bed = 0x2011, // Type: Integer (16 bits signed) + TEMP_SetTarget_H0 = 0x2012, // Type: Integer (16 bits signed) #if HAS_MULTI_HOTEND - TEMP_SetTarget_H1 = 0x2013, // Type: Integer (16 bits signed) + TEMP_SetTarget_H1 = 0x2013, // Type: Integer (16 bits signed) #endif - TEMP_Cool = 0x2014, // Data: DGUS_Data::Heater - STEPPER_Control = 0x2015, // Popup / Data: DGUS_Data::Control - LEVEL_OFFSET_Set = 0x2016, // Type: Fixed point, 2 decimals (16 bits signed) - LEVEL_OFFSET_Step = 0x2017, // Data: DGUS_Data::Adjust - LEVEL_OFFSET_SetStep = 0x2018, // Data: DGUS_Data::StepSize - LEVEL_MANUAL_Point = 0x2019, // Data: point index (1-5) - LEVEL_AUTO_Probe = 0x201A, - LEVEL_AUTO_Disable = 0x201B, - FILAMENT_Select = 0x201C, // Data: DGUS_Data::Extruder - FILAMENT_SetLength = 0x201D, // Type: Integer (16 bits unsigned) - FILAMENT_Move = 0x201E, // Data: DGUS_Data::FilamentMove - MOVE_Home = 0x201F, // Data: DGUS_Data::Axis - MOVE_SetX = 0x2020, // Type: Fixed point, 1 decimal (16 bits signed) - MOVE_SetY = 0x2021, // Type: Fixed point, 1 decimal (16 bits signed) - MOVE_SetZ = 0x2022, // Type: Fixed point, 1 decimal (16 bits signed) - MOVE_Step = 0x2023, // Data: DGUS_Data::MoveDirection - MOVE_SetStep = 0x2024, // Data: DGUS_Data::StepSize - GCODE_Clear = 0x2025, - GCODE_Execute = 0x2026, - EEPROM_Reset = 0x2027, // Popup / Data: DGUS_Data::Popup - SETTINGS2_Extra = 0x2028, // Data: DGUS_Data::Extra - PID_Select = 0x2029, // Data: DGUS_Data::Heater - PID_SetTemp = 0x202A, // Type: Integer (16 bits unsigned) - PID_Run = 0x202B, - POWERLOSS_Abort = 0x202C, // Popup / Data: DGUS_Data::Popup - POWERLOSS_Resume = 0x202D, // Popup / Data: DGUS_Data::Popup - WAIT_Abort = 0x202E, // Popup / Data: DGUS_Data::Popup - WAIT_Continue = 0x202F, + TEMP_Cool = 0x2014, // Data: DGUS_Data::Heater + STEPPER_Control = 0x2015, // Popup / Data: DGUS_Data::Control + LEVEL_OFFSET_Set = 0x2016, // Type: Fixed point, 2 decimals (16 bits signed) + LEVEL_OFFSET_Step = 0x2017, // Data: DGUS_Data::Adjust + LEVEL_OFFSET_SetStep = 0x2018, // Data: DGUS_Data::StepSize + LEVEL_MANUAL_Point = 0x2019, // Data: point index (1-5) + LEVEL_AUTO_Probe = 0x201A, + LEVEL_AUTO_Disable = 0x201B, + FILAMENT_Select = 0x201C, // Data: DGUS_Data::Extruder + FILAMENT_SetLength = 0x201D, // Type: Integer (16 bits unsigned) + FILAMENT_Move = 0x201E, // Data: DGUS_Data::FilamentMove + MOVE_Home = 0x201F, // Data: DGUS_Data::Axis + MOVE_SetX = 0x2020, // Type: Fixed point, 1 decimal (16 bits signed) + MOVE_SetY = 0x2021, // Type: Fixed point, 1 decimal (16 bits signed) + MOVE_SetZ = 0x2022, // Type: Fixed point, 1 decimal (16 bits signed) + MOVE_Step = 0x2023, // Data: DGUS_Data::MoveDirection + MOVE_SetStep = 0x2024, // Data: DGUS_Data::StepSize + GCODE_Clear = 0x2025, + GCODE_Execute = 0x2026, + EEPROM_Reset = 0x2027, // Popup / Data: DGUS_Data::Popup + SETTINGS2_Extra = 0x2028, // Data: DGUS_Data::Extra + PID_Select = 0x2029, // Data: DGUS_Data::Heater + PID_SetTemp = 0x202A, // Type: Integer (16 bits unsigned) + PID_Run = 0x202B, + POWERLOSS_Abort = 0x202C, // Popup / Data: DGUS_Data::Popup + POWERLOSS_Resume = 0x202D, // Popup / Data: DGUS_Data::Popup + WAIT_Abort = 0x202E, // Popup / Data: DGUS_Data::Popup + WAIT_Continue = 0x202F, // WRITE-ONLY VARIABLES - MESSAGE_Status = 0x3000, // 0x3000 - 0x301F - SD_Type = 0x3020, // 0x3020 - 0x3024 / Data: DGUS_Data::SDType - SD_FileName0 = 0x3025, // 0x3025 - 0x3044 - SD_FileName1 = 0x3045, // 0x3045 - 0x3064 - SD_FileName2 = 0x3065, // 0x3065 - 0x3084 - SD_FileName3 = 0x3085, // 0x3085 - 0x30A4 - SD_FileName4 = 0x30A5, // 0x30A5 - 0x30C4 - SD_ScrollIcons = 0x30C5, // Bits: DGUS_Data::ScrollIcon - SD_SelectedFileName = 0x30C6, // 0x30C6 - 0x30E5 - STATUS_PositionZ = 0x30E6, // Type: Fixed point, 1 decimal (16 bits signed) - STATUS_Ellapsed = 0x30E7, // 0x30E7 - 0x30F5 - STATUS_Percent = 0x30F6, // Type: Integer (16 bits unsigned) - STATUS_Icons = 0x30F7, // Bits: DGUS_Data::StatusIcon - ADJUST_Feedrate = 0x30F8, // Type: Integer (16 bits signed) - ADJUST_Flowrate_CUR = 0x30F9, // Type: Integer (16 bits signed) + MESSAGE_Status = 0x3000, // 0x3000 - 0x301F + SD_Type = 0x3020, // 0x3020 - 0x3024 / Data: DGUS_Data::SDType + SD_FileName0 = 0x3025, // 0x3025 - 0x3044 + SD_FileName1 = 0x3045, // 0x3045 - 0x3064 + SD_FileName2 = 0x3065, // 0x3065 - 0x3084 + SD_FileName3 = 0x3085, // 0x3085 - 0x30A4 + SD_FileName4 = 0x30A5, // 0x30A5 - 0x30C4 + SD_ScrollIcons = 0x30C5, // Bits: DGUS_Data::ScrollIcon + SD_SelectedFileName = 0x30C6, // 0x30C6 - 0x30E5 + STATUS_PositionZ = 0x30E6, // Type: Fixed point, 1 decimal (16 bits signed) + STATUS_Ellapsed = 0x30E7, // 0x30E7 - 0x30F5 + STATUS_Percent = 0x30F6, // Type: Integer (16 bits unsigned) + STATUS_Icons = 0x30F7, // Bits: DGUS_Data::StatusIcon + ADJUST_Feedrate = 0x30F8, // Type: Integer (16 bits signed) + ADJUST_Flowrate_CUR = 0x30F9, // Type: Integer (16 bits signed) #if HAS_MULTI_EXTRUDER - ADJUST_Flowrate_E0 = 0x30FA, // Type: Integer (16 bits signed) - ADJUST_Flowrate_E1 = 0x30FB, // Type: Integer (16 bits signed) + ADJUST_Flowrate_E0 = 0x30FA, // Type: Integer (16 bits signed) + ADJUST_Flowrate_E1 = 0x30FB, // Type: Integer (16 bits signed) #endif - TEMP_Current_Bed = 0x30FC, // Type: Integer (16 bits signed) - TEMP_Target_Bed = 0x30FD, // Type: Integer (16 bits signed) - TEMP_Max_Bed = 0x30FE, // Type: Integer (16 bits unsigned) - TEMP_Current_H0 = 0x30FF, // Type: Integer (16 bits signed) - TEMP_Target_H0 = 0x3100, // Type: Integer (16 bits signed) - TEMP_Max_H0 = 0x3101, // Type: Integer (16 bits unsigned) + TEMP_Current_Bed = 0x30FC, // Type: Integer (16 bits signed) + TEMP_Target_Bed = 0x30FD, // Type: Integer (16 bits signed) + TEMP_Max_Bed = 0x30FE, // Type: Integer (16 bits unsigned) + TEMP_Current_H0 = 0x30FF, // Type: Integer (16 bits signed) + TEMP_Target_H0 = 0x3100, // Type: Integer (16 bits signed) + TEMP_Max_H0 = 0x3101, // Type: Integer (16 bits unsigned) #if HAS_MULTI_HOTEND - TEMP_Current_H1 = 0x3102, // Type: Integer (16 bits signed) - TEMP_Target_H1 = 0x3103, // Type: Integer (16 bits signed) - TEMP_Max_H1 = 0x3104, // Type: Integer (16 bits unsigned) + TEMP_Current_H1 = 0x3102, // Type: Integer (16 bits signed) + TEMP_Target_H1 = 0x3103, // Type: Integer (16 bits signed) + TEMP_Max_H1 = 0x3104, // Type: Integer (16 bits unsigned) #endif - STEPPER_Status = 0x3105, // Data: DGUS_Data::Status - LEVEL_OFFSET_Current = 0x3106, // Type: Fixed point, 2 decimals (16 bits signed) - LEVEL_OFFSET_StepIcons = 0x3107, // Bits: DGUS_Data::StepIcon - LEVEL_AUTO_DisableIcon = 0x3108, // Data: DGUS_Data::Status - LEVEL_AUTO_Grid = 0x3109, // 0x3109 - 0x3121 / Type: Fixed point, 3 decimals (16 bits signed) - LEVEL_PROBING_Icons1 = 0x3122, // Type: Integer (16 bits unsigned) / Each bit represents a grid point - LEVEL_PROBING_Icons2 = 0x3123, // Type: Integer (16 bits unsigned) / Each bit represents a grid point - FILAMENT_ExtruderIcons = 0x3124, // Data: DGUS_Data::ExtruderIcon - FILAMENT_Length = 0x3125, // Type: Integer (16 bits unsigned) - MOVE_CurrentX = 0x3126, // Type: Fixed point, 1 decimal (16 bits signed) - MOVE_CurrentY = 0x3127, // Type: Fixed point, 1 decimal (16 bits signed) - MOVE_CurrentZ = 0x3128, // Type: Fixed point, 1 decimal (16 bits signed) - MOVE_StepIcons = 0x3129, // Bits: DGUS_Data::StepIcon - SETTINGS2_BLTouch = 0x312A, // Data: DGUS_Data::Status - PID_HeaterIcons = 0x312B, // Data: DGUS_Data::HeaterIcon - PID_Temp = 0x312C, // Type: Integer (16 bits unsigned) - PID_Kp = 0x312D, // Type: Fixed point, 2 decimals (32 bits signed) - PID_Ki = 0x312F, // Type: Fixed point, 2 decimals (32 bits signed) - PID_Kd = 0x3131, // Type: Fixed point, 2 decimals (32 bits signed) - INFOS_Machine = 0x3133, // 0x3133 - 0x314A - INFOS_BuildVolume = 0x314B, // 0x314B - 0x3162 - INFOS_Version = 0x3163, // 0x3163 - 0x3172 - INFOS_TotalPrints = 0x3173, // Type: Integer (16 bits unsigned) - INFOS_FinishedPrints = 0x3174, // Type: Integer (16 bits unsigned) - INFOS_PrintTime = 0x3175, // 0x3175 - 0x318C - INFOS_LongestPrint = 0x318D, // 0x318D - 0x31A4 - INFOS_FilamentUsed = 0x31A5, // 0x31A5 - 0x31BC - WAIT_Icons = 0x31BD, // Bits: DGUS_Data::WaitIcon + STEPPER_Status = 0x3105, // Data: DGUS_Data::Status + LEVEL_OFFSET_Current = 0x3106, // Type: Fixed point, 2 decimals (16 bits signed) + LEVEL_OFFSET_StepIcons = 0x3107, // Bits: DGUS_Data::StepIcon + LEVEL_AUTO_DisableIcon = 0x3108, // Data: DGUS_Data::Status + LEVEL_AUTO_Grid = 0x3109, // 0x3109 - 0x3121 / Type: Fixed point, 3 decimals (16 bits signed) + LEVEL_PROBING_Icons1 = 0x3122, // Type: Integer (16 bits unsigned) / Each bit represents a grid point + LEVEL_PROBING_Icons2 = 0x3123, // Type: Integer (16 bits unsigned) / Each bit represents a grid point + FILAMENT_ExtruderIcons = 0x3124, // Data: DGUS_Data::ExtruderIcon + FILAMENT_Length = 0x3125, // Type: Integer (16 bits unsigned) + MOVE_CurrentX = 0x3126, // Type: Fixed point, 1 decimal (16 bits signed) + MOVE_CurrentY = 0x3127, // Type: Fixed point, 1 decimal (16 bits signed) + MOVE_CurrentZ = 0x3128, // Type: Fixed point, 1 decimal (16 bits signed) + MOVE_StepIcons = 0x3129, // Bits: DGUS_Data::StepIcon + SETTINGS2_BLTouch = 0x312A, // Data: DGUS_Data::Status + PID_HeaterIcons = 0x312B, // Data: DGUS_Data::HeaterIcon + PID_Temp = 0x312C, // Type: Integer (16 bits unsigned) + PID_Kp = 0x312D, // Type: Fixed point, 2 decimals (32 bits signed) + PID_Ki = 0x312F, // Type: Fixed point, 2 decimals (32 bits signed) + PID_Kd = 0x3131, // Type: Fixed point, 2 decimals (32 bits signed) + INFOS_Machine = 0x3133, // 0x3133 - 0x314A + INFOS_BuildVolume = 0x314B, // 0x314B - 0x3162 + INFOS_Version = 0x3163, // 0x3163 - 0x3172 + INFOS_TotalPrints = 0x3173, // Type: Integer (16 bits unsigned) + INFOS_FinishedPrints = 0x3174, // Type: Integer (16 bits unsigned) + INFOS_PrintTime = 0x3175, // 0x3175 - 0x318C + INFOS_LongestPrint = 0x318D, // 0x318D - 0x31A4 + INFOS_FilamentUsed = 0x31A5, // 0x31A5 - 0x31BC + WAIT_Icons = 0x31BD, // Bits: DGUS_Data::WaitIcon // READ-WRITE VARIABLES - FAN0_Speed = 0x4000, // Type: Integer (16 bits unsigned) / Data: fan speed as percent (0-100) - GCODE_Data = 0x4001, // 0x4001 - 0x4020 - PID_Cycles = 0x4021, // Type: Integer (16 bits unsigned) - VOLUME_Level = 0x4022, // Type: Integer (16 bits unsigned) / Data: volume as percent (0-100) - BRIGHTNESS_Level = 0x4023, // Type: Integer (16 bits unsigned) / Data: brightness as percent (0-100) + FAN0_Speed = 0x4000, // Type: Integer (16 bits unsigned) / Data: fan speed as percent (0-100) + GCODE_Data = 0x4001, // 0x4001 - 0x4020 + PID_Cycles = 0x4021, // Type: Integer (16 bits unsigned) + VOLUME_Level = 0x4022, // Type: Integer (16 bits unsigned) / Data: volume as percent (0-100) + BRIGHTNESS_Level = 0x4023, // Type: Integer (16 bits unsigned) / Data: brightness as percent (0-100) // SPECIAL CASES - STATUS_Percent_Complete = 0x5000, // Same as STATUS_Percent, but always 100% - INFOS_Debug = 0x5001, + STATUS_Percent_Complete = 0x5000, // Same as STATUS_Percent, but always 100% + INFOS_Debug = 0x5001, }; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Constants.h b/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Constants.h index 846fd15942..dda3c888fe 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Constants.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Constants.h @@ -25,7 +25,9 @@ #include "DGUS_Addr.h" -static_assert((DGUS_LEVEL_GRID_SIZE == GRID_MAX_POINTS_X * GRID_MAX_POINTS_Y), "DGUS_LEVEL_GRID_SIZE incompatible with current mesh."); +#if DGUS_LEVEL_GRID_SIZE != GRID_MAX_POINTS + #error "DGUS_LEVEL_GRID_SIZE is incompatible with current mesh." +#endif #ifndef DGUS_DEFAULT_VOLUME #define DGUS_DEFAULT_VOLUME 50 diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp index faa6a0d235..4370a06d04 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp @@ -178,7 +178,7 @@ const struct DGUS_VP vp_list[] PROGMEM = { nullptr, &DGUSTxHandler::PositionZ), VP_HELPER(DGUS_Addr::STATUS_Ellapsed, - DGUS_ELLAPSED_LEN, + DGUS_ELAPSED_LEN, VPFLAG_AUTOUPLOAD, nullptr, nullptr, diff --git a/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp b/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp index cdde3c4f6b..448d078cc4 100644 --- a/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp +++ b/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp @@ -111,8 +111,6 @@ void FileNavigator::getFiles(uint16_t index) { rtscheck.RTS_SndData(10, FilenameIcon1 + j); } - DEBUG_ECHOLNPGM("index=", index, " currentindex=", currentindex, "folderdepth=", folderdepth); - if (currentindex == 0 && folderdepth > 0) { // Add a link to go up a folder files--; rtscheck.RTS_SndData("Up Directory", SDFILE_ADDR); @@ -149,7 +147,6 @@ void FileNavigator::getFiles(uint16_t index) { } void FileNavigator::changeDIR(char *folder) { - DEBUG_ECHOLNPGM("currentfolder: ", currentfoldername, " New: ", folder); if (folderdepth >= MAX_FOLDER_DEPTH) return; // limit the folder depth strcat(currentfoldername, folder); strcat(currentfoldername, "/"); @@ -175,7 +172,6 @@ void FileNavigator::upDIR() { pos = strchr(currentfoldername, '/'); pos[1] = '\0'; } - DEBUG_ECHOLNPGM("depth: ", folderdepth, " currentfoldername: ", currentfoldername); } char* FileNavigator::getCurrentFolderName() { return currentfoldername; } diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp index 6742c2c010..0275902557 100644 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp +++ b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp @@ -53,8 +53,7 @@ namespace ExtUI { uint8_t startprogress = 0; char waitway = 0; - int recnum = 0; - unsigned char Percentrecord = 0; + int16_t recnum = 0; float ChangeMaterialbuf[2] = {0}; char NozzleTempStatus[3] = {0}; @@ -62,11 +61,11 @@ namespace ExtUI { char PrinterStatusKey[2] = {0}; // PrinterStatusKey[1] value: 0 represents to keep temperature, 1 represents to heating , 2 stands for cooling , 3 stands for printing // PrinterStatusKey[0] value: 0 reprensents 3D printer ready - unsigned char AxisPagenum = 0; // 0 for 10mm, 1 for 1mm, 2 for 0.1mm + uint8_t AxisPagenum = 0; // 0 for 10mm, 1 for 1mm, 2 for 0.1mm bool InforShowStatus = true; bool TPShowStatus = false; // true for only opening time and percentage, false for closing time and percentage. bool AutohomeKey = false; - unsigned char AutoHomeIconNum; + uint8_t AutoHomeIconNum; int16_t userConfValidation = 0; uint8_t lastPauseMsgState = 0; @@ -117,7 +116,7 @@ namespace ExtUI { rtscheck.RTS_SndData(getActualFan_percent((fan_t)getActiveTool()), FanKeyIcon); /***************transmit Printer information to screen*****************/ - for (int j = 0; j < 20; j++) // clean filename + for (int16_t j = 0; j < 20; j++) // clean filename rtscheck.RTS_SndData(0, MacVersion + j); char sizebuf[20] = {0}; sprintf(sizebuf, "%d X %d X %d", Y_BED_SIZE, X_BED_SIZE, Z_MAX_POS); @@ -131,20 +130,18 @@ namespace ExtUI { rtscheck.RTS_SndData(0, PrintscheduleIcon + 1); /************************clean screen*******************************/ - for (int i = 0; i < MaxFileNumber; i++) - for (int j = 0; j < 10; j++) rtscheck.RTS_SndData(0, SDFILE_ADDR + i * 10 + j); + for (int16_t i = 0; i < MaxFileNumber; i++) + for (int16_t j = 0; j < 10; j++) rtscheck.RTS_SndData(0, SDFILE_ADDR + i * 10 + j); - for (int j = 0; j < 10; j++) { + for (int16_t j = 0; j < 10; j++) { rtscheck.RTS_SndData(0, Printfilename + j); // clean screen. rtscheck.RTS_SndData(0, Choosefilename + j); // clean filename } - for (int j = 0; j < 8; j++) rtscheck.RTS_SndData(0, FilenameCount + j); - for (int j = 1; j <= MaxFileNumber; j++) { + for (int16_t j = 0; j < 8; j++) rtscheck.RTS_SndData(0, FilenameCount + j); + for (int16_t j = 1; j <= MaxFileNumber; j++) { rtscheck.RTS_SndData(10, FilenameIcon + j); rtscheck.RTS_SndData(10, FilenameIcon1 + j); } - - DEBUG_ECHOLNPGM("==Dwin Init Complete=="); } void onIdle() { @@ -181,7 +178,7 @@ namespace ExtUI { case PAUSE_MESSAGE_HEAT: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEAT)); break; case PAUSE_MESSAGE_HEATING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEATING)); break; case PAUSE_MESSAGE_OPTION: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_OPTION_HEADER)); break; - case PAUSE_MESSAGE_STATUS: DEBUG_ECHOLNPGM("PauseStatus"); break; + case PAUSE_MESSAGE_STATUS: break; default: onUserConfirmRequired(PSTR("Confirm Continue")); break; } userConfValidation = 0; @@ -216,7 +213,6 @@ namespace ExtUI { case 1: if (isPositionKnown()) { InforShowStatus = true; - DEBUG_ECHOLNPGM("==waitway 1=="); rtscheck.RTS_SndData(ExchangePageBase + 54, ExchangepageAddr); waitway = 0; } @@ -227,7 +223,6 @@ namespace ExtUI { break; case 3: - DEBUG_ECHOLNPGM("==waitway 3=="); //if(isPositionKnown() && (getActualTemp_celsius(BED) >= (getTargetTemp_celsius(BED)-1))) { rtscheck.RTS_SndData(ExchangePageBase + 64, ExchangepageAddr); waitway = 7; @@ -237,8 +232,7 @@ namespace ExtUI { case 4: if (AutohomeKey && isPositionKnown() && !commandsInQueue()) { // Manual Move Home Done - DEBUG_ECHOLNPGM("==waitway 4=="); - // rtscheck.RTS_SndData(ExchangePageBase + 71 + AxisPagenum, ExchangepageAddr); + //rtscheck.RTS_SndData(ExchangePageBase + 71 + AxisPagenum, ExchangepageAddr); AutohomeKey = false; waitway = 0; } @@ -247,7 +241,6 @@ namespace ExtUI { if (isPositionKnown() && !commandsInQueue()) { InforShowStatus = true; waitway = 0; - DEBUG_ECHOLNPGM("==waitway 5=="); rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); // exchange to 78 page } break; @@ -277,7 +270,6 @@ namespace ExtUI { else injectCommands(F("M22\nM21")); startprogress = 254; - DEBUG_ECHOLNPGM(" startprogress "); InforShowStatus = true; TPShowStatus = false; rtscheck.RTS_SndData(ExchangePageBase + 45, ExchangepageAddr); @@ -289,28 +281,28 @@ namespace ExtUI { else rtscheck.RTS_SndData(startprogress - 100, StartIcon + 1); - // rtscheck.RTS_SndData((startprogress++) % 5, ExchFlmntIcon); + //rtscheck.RTS_SndData((startprogress++) % 5, ExchFlmntIcon); if (isPrinting()) { rtscheck.RTS_SndData(getActualFan_percent((fan_t)getActiveTool()), FanKeyIcon); rtscheck.RTS_SndData(getProgress_seconds_elapsed() / 3600, Timehour); rtscheck.RTS_SndData((getProgress_seconds_elapsed() % 3600) / 60, Timemin); if (getProgress_percent() > 0) { - Percentrecord = getProgress_percent() + 1; - if (Percentrecord <= 50) { - rtscheck.RTS_SndData((unsigned int)Percentrecord * 2, PrintscheduleIcon); + const uint16_t perc = getProgress_percent() + 1; + if (perc <= 50) { + rtscheck.RTS_SndData(uint16_t(perc) * 2, PrintscheduleIcon); rtscheck.RTS_SndData(0, PrintscheduleIcon + 1); } else { rtscheck.RTS_SndData(100, PrintscheduleIcon); - rtscheck.RTS_SndData((unsigned int)Percentrecord * 2 - 100, PrintscheduleIcon + 1); + rtscheck.RTS_SndData(uint16_t(perc) * 2 - 100, PrintscheduleIcon + 1); } } else { rtscheck.RTS_SndData(0, PrintscheduleIcon); rtscheck.RTS_SndData(0, PrintscheduleIcon + 1); } - rtscheck.RTS_SndData((unsigned int)getProgress_percent(), Percentage); + rtscheck.RTS_SndData(uint16_t(getProgress_percent()), Percentage); } else { // Not printing settings rtscheck.RTS_SndData(map(constrain(Settings.display_volume, 0, 255), 0, 255, 0, 100), VolumeDisplay); @@ -322,31 +314,31 @@ namespace ExtUI { else rtscheck.RTS_SndData(2, DisplayStandbyEnableIndicator); - rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(X) * 10), StepMM_X); - rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(Y) * 10), StepMM_Y); - rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(Z) * 10), StepMM_Z); - rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(E0) * 10), StepMM_E); + rtscheck.RTS_SndData(uint16_t(getAxisSteps_per_mm(X)) * 10, StepMM_X); + rtscheck.RTS_SndData(uint16_t(getAxisSteps_per_mm(Y)) * 10, StepMM_Y); + rtscheck.RTS_SndData(uint16_t(getAxisSteps_per_mm(Z)) * 10, StepMM_Z); + rtscheck.RTS_SndData(uint16_t(getAxisSteps_per_mm(E0)) * 10, StepMM_E); - rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(X) / 100), Accel_X); - rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(Y) / 100), Accel_Y); - rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(Z) / 10), Accel_Z); - rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(E0)), Accel_E); + rtscheck.RTS_SndData(uint16_t(getAxisMaxAcceleration_mm_s2(X)) / 100, Accel_X); + rtscheck.RTS_SndData(uint16_t(getAxisMaxAcceleration_mm_s2(Y)) / 100, Accel_Y); + rtscheck.RTS_SndData(uint16_t(getAxisMaxAcceleration_mm_s2(Z)) / 10, Accel_Z); + rtscheck.RTS_SndData(uint16_t(getAxisMaxAcceleration_mm_s2(E0)), Accel_E); - rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(X)), Feed_X); - rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(Y)), Feed_Y); - rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(Z)), Feed_Z); - rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(E0)), Feed_E); + rtscheck.RTS_SndData(uint16_t(getAxisMaxFeedrate_mm_s(X)), Feed_X); + rtscheck.RTS_SndData(uint16_t(getAxisMaxFeedrate_mm_s(Y)), Feed_Y); + rtscheck.RTS_SndData(uint16_t(getAxisMaxFeedrate_mm_s(Z)), Feed_Z); + rtscheck.RTS_SndData(uint16_t(getAxisMaxFeedrate_mm_s(E0)), Feed_E); - rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(X) * 100), Jerk_X); - rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(Y) * 100), Jerk_Y); - rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(Z) * 100), Jerk_Z); - rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(E0) * 100), Jerk_E); + rtscheck.RTS_SndData(uint16_t(getAxisMaxJerk_mm_s(X)) * 100, Jerk_X); + rtscheck.RTS_SndData(uint16_t(getAxisMaxJerk_mm_s(Y)) * 100, Jerk_Y); + rtscheck.RTS_SndData(uint16_t(getAxisMaxJerk_mm_s(Z)) * 100, Jerk_Z); + rtscheck.RTS_SndData(uint16_t(getAxisMaxJerk_mm_s(E0)) * 100, Jerk_E); #if HAS_HOTEND_OFFSET - rtscheck.RTS_SndData(((unsigned int)getNozzleOffset_mm(X, E1) * 10), T2Offset_X); - rtscheck.RTS_SndData(((unsigned int)getNozzleOffset_mm(Y, E1) * 10), T2Offset_Y); - rtscheck.RTS_SndData(((unsigned int)getNozzleOffset_mm(Z, E1) * 10), T2Offset_Z); - rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(E1) * 10), T2StepMM_E); + rtscheck.RTS_SndData(uint16_t(getNozzleOffset_mm(X, E1)) * 10, T2Offset_X); + rtscheck.RTS_SndData(uint16_t(getNozzleOffset_mm(Y, E1)) * 10, T2Offset_Y); + rtscheck.RTS_SndData(uint16_t(getNozzleOffset_mm(Z, E1)) * 10, T2Offset_Z); + rtscheck.RTS_SndData(uint16_t(getAxisSteps_per_mm(E1)) * 10, T2StepMM_E); #endif #if HAS_BED_PROBE @@ -357,42 +349,38 @@ namespace ExtUI { #if HAS_PID_HEATING rtscheck.RTS_SndData(pid_hotendAutoTemp, HotendPID_AutoTmp); rtscheck.RTS_SndData(pid_bedAutoTemp, BedPID_AutoTmp); - rtscheck.RTS_SndData((unsigned int)(getPID_Kp(E0) * 10), HotendPID_P); - rtscheck.RTS_SndData((unsigned int)(getPID_Ki(E0) * 10), HotendPID_I); - rtscheck.RTS_SndData((unsigned int)(getPID_Kd(E0) * 10), HotendPID_D); + rtscheck.RTS_SndData(uint16_t(getPID_Kp(E0)) * 10, HotendPID_P); + rtscheck.RTS_SndData(uint16_t(getPID_Ki(E0)) * 10, HotendPID_I); + rtscheck.RTS_SndData(uint16_t(getPID_Kd(E0)) * 10, HotendPID_D); #if ENABLED(PIDTEMPBED) - rtscheck.RTS_SndData((unsigned int)(getBedPID_Kp() * 10), BedPID_P); - rtscheck.RTS_SndData((unsigned int)(getBedPID_Ki() * 10), BedPID_I); - rtscheck.RTS_SndData((unsigned int)(getBedPID_Kd() * 10), BedPID_D); + rtscheck.RTS_SndData(uint16_t(getBedPID_Kp()) * 10, BedPID_P); + rtscheck.RTS_SndData(uint16_t(getBedPID_Ki()) * 10, BedPID_I); + rtscheck.RTS_SndData(uint16_t(getBedPID_Kd()) * 10, BedPID_D); #endif #endif } rtscheck.RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); - rtscheck.RTS_SndData((unsigned int)(getFlow_percent(E0)), Flowrate); + rtscheck.RTS_SndData(uint16_t(getFlow_percent(E0)), Flowrate); - if (NozzleTempStatus[0] || NozzleTempStatus[2]) { // statuse of loadfilement and unloadfinement when temperature is less than - unsigned int IconTemp; - - IconTemp = getActualTemp_celsius(getActiveTool()) * 100 / getTargetTemp_celsius(getActiveTool()); - NOMORE(IconTemp, 100); + if (NozzleTempStatus[0] || NozzleTempStatus[2]) { // statuse of loadfilament and unloadfinement when temperature is less than + uint16_t IconTemp = getActualTemp_celsius(getActiveTool()) * 100 / getTargetTemp_celsius(getActiveTool()); + NOMORE(IconTemp, 100U); rtscheck.RTS_SndData(IconTemp, HeatPercentIcon); if (getActualTemp_celsius(getActiveTool()) > EXTRUDE_MINTEMP && NozzleTempStatus[0] != 0) { NozzleTempStatus[0] = 0; rtscheck.RTS_SndData(10 * ChangeMaterialbuf[0], FilamentUnit1); rtscheck.RTS_SndData(10 * ChangeMaterialbuf[1], FilamentUnit2); - DEBUG_ECHOLNPGM("==Heating Done Change Filament=="); rtscheck.RTS_SndData(ExchangePageBase + 65, ExchangepageAddr); } else if (getActualTemp_celsius(getActiveTool()) >= getTargetTemp_celsius(getActiveTool()) && NozzleTempStatus[2]) { - DEBUG_ECHOLNPGM("***NozzleTempStatus[2] =", (int)NozzleTempStatus[2]); NozzleTempStatus[2] = 0; - TPShowStatus = true; + TPShowStatus = true; rtscheck.RTS_SndData(4, ExchFlmntIcon); rtscheck.RTS_SndData(ExchangePageBase + 83, ExchangepageAddr); } else if (NozzleTempStatus[2]) { - // rtscheck.RTS_SndData((startprogress++) % 5, ExchFlmntIcon); + //rtscheck.RTS_SndData((startprogress++) % 5, ExchFlmntIcon); } } @@ -431,20 +419,18 @@ namespace ExtUI { memset(databuf, 0, sizeof(databuf)); } - int RTSSHOW::RTS_RecData() { + int16_t RTSSHOW::RTS_RecData() { uint8_t receivedbyte; while (DWIN_SERIAL.available()) switch (rx_datagram_state) { case DGUS_IDLE: // Waiting for the first header byte receivedbyte = DWIN_SERIAL.read(); - //DEBUG_ECHOLNPGM("< ",receivedbyte); if (FHONE == receivedbyte) rx_datagram_state = DGUS_HEADER1_SEEN; break; case DGUS_HEADER1_SEEN: // Waiting for the second header byte receivedbyte = DWIN_SERIAL.read(); - //DEBUG_ECHOLNPGM(" ", receivedbyte); rx_datagram_state = (FHTWO == receivedbyte) ? DGUS_HEADER2_SEEN : DGUS_IDLE; break; @@ -462,20 +448,19 @@ namespace ExtUI { Initialized = true; // We've talked to it, so we defined it as initialized. uint8_t command = DWIN_SERIAL.read(); - // DEBUGLCDCOMM_ECHOPAIR("# ", command); + //DEBUGLCDCOMM_ECHOPAIR("# ", command); uint8_t readlen = rx_datagram_len - 1; // command is part of len. - unsigned char tmp[rx_datagram_len - 1]; - unsigned char *ptmp = tmp; + uint8_t tmp[rx_datagram_len - 1]; + uint8_t *ptmp = tmp; while (readlen--) { receivedbyte = DWIN_SERIAL.read(); - // DEBUGLCDCOMM_ECHOPAIR(" ", receivedbyte); + //DEBUGLCDCOMM_ECHOPAIR(" ", receivedbyte); *ptmp++ = receivedbyte; } - // DEBUGLCDCOMM_ECHOPGM(" # "); + //DEBUGLCDCOMM_ECHOPGM(" # "); // mostly we'll get this: 5A A5 03 82 4F 4B -- ACK on 0x82, so discard it. if (command == VarAddr_W && 'O' == tmp[0] && 'K' == tmp[1]) { - // DEBUG_ECHOLNPGM(">"); rx_datagram_state = DGUS_IDLE; break; } @@ -491,19 +476,13 @@ namespace ExtUI { const uint16_t vp = tmp[0] << 8 | tmp[1]; const uint8_t dlen = tmp[2] << 1; // Convert to Bytes. (Display works with words) - //DEBUG_ECHOLNPGM(" vp=", vp, " dlen=", dlen); recdat.addr = vp; recdat.len = tmp[2]; - for (unsigned int i = 0; i < dlen; i += 2) { + for (uint16_t i = 0; i < dlen; i += 2) { recdat.data[i / 2] = tmp[3 + i]; recdat.data[i / 2] = (recdat.data[i / 2] << 8 ) | tmp[4 + i]; } - DEBUG_ECHOLNPGM("VP received: ", vp, " - len ", tmp[2]); - - DEBUG_ECHOLNPGM("d1: ", tmp[3], " - d2 ", tmp[4]); - DEBUG_ECHOLNPGM("d3: ", tmp[5], " - d4 ", tmp[6]); - rx_datagram_state = DGUS_IDLE; return 2; break; @@ -523,7 +502,7 @@ namespace ExtUI { databuf[3] = snddat.command; if (snddat.command == 0x80) { // to write data to the register databuf[4] = snddat.addr; - for (int i = 0; i < (snddat.len - 2); i++) databuf[5 + i] = snddat.data[i]; + for (int16_t i = 0; i < (snddat.len - 2); i++) databuf[5 + i] = snddat.data[i]; } else if (snddat.len == 3 && (snddat.command == 0x81)) { // to read data from the register databuf[4] = snddat.addr; @@ -532,7 +511,7 @@ namespace ExtUI { else if (snddat.command == 0x82) { // to write data to the variate databuf[4] = snddat.addr >> 8; databuf[5] = snddat.addr & 0xFF; - for (int i = 0; i < (snddat.len - 3); i += 2) { + for (int16_t i = 0; i < (snddat.len - 3); i += 2) { databuf[6 + i] = snddat.data[i / 2] >> 8; databuf[7 + i] = snddat.data[i / 2] & 0xFF; } @@ -542,7 +521,7 @@ namespace ExtUI { databuf[5] = snddat.addr & 0xFF; databuf[6] = snddat.bytelen; } - for (int i = 0; i < (snddat.len + 3); i++) { + for (int16_t i = 0; i < (snddat.len + 3); i++) { DWIN_SERIAL.write(databuf[i]); delay_us(1); } @@ -554,15 +533,15 @@ namespace ExtUI { } } - void RTSSHOW::RTS_SndData(const String &s, unsigned long addr, unsigned char cmd /*= VarAddr_W*/) { + void RTSSHOW::RTS_SndData(const String &s, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { if (s.length() < 1) return; RTS_SndData(s.c_str(), addr, cmd); } - void RTSSHOW::RTS_SndData(const char *str, unsigned long addr, unsigned char cmd /*= VarAddr_W*/) { + void RTSSHOW::RTS_SndData(const char *str, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { - int len = strlen(str); - constexpr int maxlen = SizeofDatabuf - 6; + int16_t len = strlen(str); + constexpr int16_t maxlen = SizeofDatabuf - 6; if (len > 0) { if (len > maxlen) len = maxlen; databuf[0] = FHONE; @@ -571,9 +550,9 @@ namespace ExtUI { databuf[3] = cmd; databuf[4] = addr >> 8; databuf[5] = addr & 0x00FF; - for (int i = 0; i < len; i++) databuf[6 + i] = str[i]; + for (int16_t i = 0; i < len; i++) databuf[6 + i] = str[i]; - for (int i = 0; i < (len + 6); i++) { + for (int16_t i = 0; i < (len + 6); i++) { DWIN_SERIAL.write(databuf[i]); delay_us(1); } @@ -581,58 +560,50 @@ namespace ExtUI { } } - void RTSSHOW::RTS_SndData(char c, unsigned long addr, unsigned char cmd /*= VarAddr_W*/) { + void RTSSHOW::RTS_SndData(char c, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { snddat.command = cmd; snddat.addr = addr; - snddat.data[0] = (unsigned long)c; + snddat.data[0] = uint32_t(c); snddat.data[0] = snddat.data[0] << 8; snddat.len = 5; RTS_SndData(); } - void RTSSHOW::RTS_SndData(unsigned char *str, unsigned long addr, unsigned char cmd) { RTS_SndData((char *)str, addr, cmd); } + void RTSSHOW::RTS_SndData(uint8_t *str, uint32_t addr, uint8_t cmd) { RTS_SndData((char *)str, addr, cmd); } - void RTSSHOW::RTS_SndData(int n, unsigned long addr, unsigned char cmd /*= VarAddr_W*/) { + void RTSSHOW::RTS_SndData(int16_t n, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { if (cmd == VarAddr_W) { - if ((uint8_t)n > 0xFFFF) { - snddat.data[0] = n >> 16; - snddat.data[1] = n & 0xFFFF; - snddat.len = 7; - } - else { - snddat.data[0] = n; - snddat.len = 5; - } + snddat.data[0] = n; + snddat.len = 5; } else if (cmd == RegAddr_W) { snddat.data[0] = n; - snddat.len = 3; + snddat.len = 3; } else if (cmd == VarAddr_R) { snddat.bytelen = n; - snddat.len = 4; + snddat.len = 4; } snddat.command = cmd; - snddat.addr = addr; + snddat.addr = addr; RTS_SndData(); } - void RTSSHOW::RTS_SndData(unsigned int n, unsigned long addr, unsigned char cmd) { RTS_SndData((int)n, addr, cmd); } + void RTSSHOW::RTS_SndData(uint16_t n, uint32_t addr, uint8_t cmd) { RTS_SndData(int16_t(n), addr, cmd); } - void RTSSHOW::RTS_SndData(float n, unsigned long addr, unsigned char cmd) { RTS_SndData((int)n, addr, cmd); } + void RTSSHOW::RTS_SndData(float n, uint32_t addr, uint8_t cmd) { RTS_SndData(int16_t(n), addr, cmd); } - void RTSSHOW::RTS_SndData(long n, unsigned long addr, unsigned char cmd) { RTS_SndData((unsigned long)n, addr, cmd); } + void RTSSHOW::RTS_SndData(int32_t n, uint32_t addr, uint8_t cmd) { RTS_SndData(uint32_t(n), addr, cmd); } - void RTSSHOW::RTS_SndData(unsigned long n, unsigned long addr, unsigned char cmd /*= VarAddr_W*/) { + void RTSSHOW::RTS_SndData(uint32_t n, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { if (cmd == VarAddr_W) { if (n > 0xFFFF) { snddat.data[0] = n >> 16; snddat.data[1] = n & 0xFFFF; - - // snddat.data[0] = n >> 24; - // snddat.data[1] = n >> 16; - // snddat.data[2] = n >> 8; - // snddat.data[3] = n; + //snddat.data[0] = n >> 24; + //snddat.data[1] = n >> 16; + //snddat.data[2] = n >> 8; + //snddat.data[3] = n; snddat.len = 7; } else { @@ -650,17 +621,14 @@ namespace ExtUI { } void RTSSHOW::RTS_HandleData() { - int Checkkey = -1; - DEBUG_ECHOLNPGM(" *******RTS_HandleData******** "); + int16_t Checkkey = -1; if (waitway > 0) { // for waiting - DEBUG_ECHOLNPGM("waitway ==", (int)waitway); memset(&recdat, 0, sizeof(recdat)); recdat.head[0] = FHONE; recdat.head[1] = FHTWO; return; } - DEBUG_ECHOLNPGM("recdat.data[0] ==", recdat.data[0], " recdat.addr ==", recdat.addr); - for (int i = 0; Addrbuf[i] != 0; i++) + for (int16_t i = 0; Addrbuf[i] != 0; i++) if (recdat.addr == Addrbuf[i]) { if (Addrbuf[i] == NzBdSet || Addrbuf[i] == NozzlePreheat || Addrbuf[i] == BedPreheat || Addrbuf[i] == Flowrate) Checkkey = ManualSetTemp; @@ -697,16 +665,13 @@ namespace ExtUI { case DisplayStandbyBrightness: Checkkey = DisplayStandbyBrightness; break; case DisplayStandbySeconds: Checkkey = DisplayStandbySeconds; break; default: - if (WITHIN(recdat.addr, AutolevelVal, 4400)) // ((int)AutolevelVal+(GRID_MAX_POINTS_X*GRID_MAX_POINTS_Y*2)) = 4400 with 5x5 mesh + if (WITHIN(recdat.addr, AutolevelVal, 4400)) // (int16_t(AutolevelVal) + GRID_MAX_POINTS * 2) = 4400 with 5x5 mesh Checkkey = AutolevelVal; else if (WITHIN(recdat.addr, SDFILE_ADDR, SDFILE_ADDR + 10 * (FileNum + 1))) Checkkey = Filename; break; } - DEBUG_ECHOLNPGM("== Checkkey=="); - DEBUG_ECHOLN(Checkkey); - if (Checkkey < 0) { memset(&recdat, 0, sizeof(recdat)); recdat.head[0] = FHONE; @@ -715,17 +680,14 @@ namespace ExtUI { } constexpr float lfrb[4] = BED_TRAMMING_INSET_LFRB; - DEBUG_ECHOLNPGM("BeginSwitch"); switch (Checkkey) { case Printfile: if (recdat.data[0] == 1) { // card InforShowStatus = false; - DEBUG_ECHOLNPGM("Handle Data PrintFile Pre"); filenavigator.getFiles(0); fileIndex = 0; recordcount = 0; - DEBUG_ECHOLNPGM("Handle Data PrintFile Post"); RTS_SndData(ExchangePageBase + 46, ExchangepageAddr); } else if (recdat.data[0] == 2) { // return after printing result. @@ -741,13 +703,11 @@ namespace ExtUI { RTS_SndData(0, Timehour); RTS_SndData(0, Timemin); - DEBUG_ECHOLNPGM("Handle Data PrintFile 2 Setting Screen "); RTS_SndData(ExchangePageBase + 45, ExchangepageAddr); // exchange to 45 page } else if (recdat.data[0] == 3) { // Temperature control InforShowStatus = true; TPShowStatus = false; - DEBUG_ECHOLNPGM("Handle Data PrintFile 3 Setting Screen "); if (getTargetFan_percent((fan_t)getActiveTool()) == 0) RTS_SndData(ExchangePageBase + 58, ExchangepageAddr); // exchange to 58 page, the fans off else @@ -763,7 +723,6 @@ namespace ExtUI { InforShowStatus = false; } else if (recdat.data[0] == 2) { - DEBUG_ECHOLNPGM("Handle Data Adjust 2 Setting Screen "); InforShowStatus = true; if (PrinterStatusKey[1] == 3) // during heating RTS_SndData(ExchangePageBase + 53, ExchangepageAddr); @@ -783,16 +742,13 @@ namespace ExtUI { case PrintChoice: if (recdat.addr == Stopprint) { - DEBUG_ECHOLNPGM("StopPrint"); if (recdat.data[0] == 240) { // no RTS_SndData(ExchangePageBase + 53, ExchangepageAddr); - DEBUG_ECHOLNPGM("Stop No", recdat.data[0] ); } else { RTS_SndData(ExchangePageBase + 45, ExchangepageAddr); RTS_SndData(0, Timehour); RTS_SndData(0, Timemin); - DEBUG_ECHOLNPGM("Stop Triggered", recdat.data[0] ); stopPrint(); } } @@ -823,17 +779,13 @@ namespace ExtUI { case Zoffset: float tmp_zprobe_offset; if (recdat.data[0] >= 32768) - tmp_zprobe_offset = ((float)recdat.data[0] - 65536) / 100; + tmp_zprobe_offset = (float(recdat.data[0]) - 65536) / 100; else - tmp_zprobe_offset = ((float)recdat.data[0]) / 100; - DEBUG_ECHOLNPGM("Requested Offset ", tmp_zprobe_offset); + tmp_zprobe_offset = float(recdat.data[0]) / 100; if (WITHIN((tmp_zprobe_offset), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { int16_t tmpSteps = mmToWholeSteps(getZOffset_mm() - tmp_zprobe_offset, axis_t(Z)); - if (tmpSteps == 0) { - DEBUG_ECHOLNPGM("Rounding to step"); - tmpSteps = getZOffset_mm() < tmp_zprobe_offset ? 1 : -1; - } - smartAdjustAxis_steps(tmpSteps * -1, axis_t(Z), false); + if (tmpSteps == 0) tmpSteps = getZOffset_mm() < tmp_zprobe_offset ? 1 : -1; + smartAdjustAxis_steps(-tmpSteps, axis_t(Z), false); char zOffs[20], tmp1[11]; sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); onStatusChanged(zOffs); @@ -883,7 +835,7 @@ namespace ExtUI { RTS_SndData(PREHEAT_2_TEMP_BED, BedPreheat); } else if (recdat.data[0] == 0xF1) { - // InforShowStatus = true; + //InforShowStatus = true; #if FAN_COUNT > 0 for (uint8_t i = 0; i < FAN_COUNT; i++) setTargetFan_percent(0, (fan_t)i); #endif @@ -898,7 +850,6 @@ namespace ExtUI { break; case ManualSetTemp: - DEBUG_ECHOLNPGM("ManualSetTemp"); if (recdat.addr == NzBdSet) { if (recdat.data[0] == 0) { if (getTargetFan_percent((fan_t)getActiveTool()) == 0) @@ -916,65 +867,65 @@ namespace ExtUI { } } else if (recdat.addr == NozzlePreheat) { - setTargetTemp_celsius((float)recdat.data[0], H0); + setTargetTemp_celsius(float(recdat.data[0]), H0); } #if HAS_MULTI_HOTEND else if (recdat.addr == e2Preheat) { - setTargetTemp_celsius((float)recdat.data[0], H1); + setTargetTemp_celsius(float(recdat.data[0]), H1); } #endif else if (recdat.addr == BedPreheat) { - setTargetTemp_celsius((float)recdat.data[0], BED); + setTargetTemp_celsius(float(recdat.data[0]), BED); } else if (recdat.addr == Flowrate) { - setFlow_percent((int16_t)recdat.data[0], getActiveTool()); + setFlow_percent(int16_t(recdat.data[0]), getActiveTool()); } #if HAS_PID_HEATING else if (recdat.addr == HotendPID_AutoTmp) { - pid_hotendAutoTemp = (uint16_t)recdat.data[0]; + pid_hotendAutoTemp = uint16_t(recdat.data[0]); } else if (recdat.addr == BedPID_AutoTmp) { - pid_bedAutoTemp = (uint16_t)recdat.data[0]; + pid_bedAutoTemp = uint16_t(recdat.data[0]); } #endif else if (recdat.addr == Accel_X) { - setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0] * 100, X); + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 100, X); } else if (recdat.addr == Accel_Y) { - setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0] * 100, Y); + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 100, Y); } else if (recdat.addr == Accel_Z) { - setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0] * 10, Z); + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 10, Z); } else if (recdat.addr == Accel_E) { - setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0], E0); - setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0], E1); + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]), E0); + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]), E1); } else if (recdat.addr == Feed_X) { - setAxisMaxFeedrate_mm_s((uint16_t)recdat.data[0], X); + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), X); } else if (recdat.addr == Feed_Y) { - setAxisMaxFeedrate_mm_s((uint16_t)recdat.data[0], Y); + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), Y); } else if (recdat.addr == Feed_Z) { - setAxisMaxFeedrate_mm_s((uint16_t)recdat.data[0], Z); + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), Z); } else if (recdat.addr == Feed_E) { - setAxisMaxFeedrate_mm_s((uint16_t)recdat.data[0], E0); - setAxisMaxFeedrate_mm_s((uint16_t)recdat.data[0], E1); + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), E0); + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), E1); } else if (recdat.addr == FanKeyIcon) { - setTargetFan_percent((uint16_t)recdat.data[0], (fan_t)getActiveTool()); + setTargetFan_percent(uint16_t(recdat.data[0]), (fan_t)getActiveTool()); } else { float tmp_float_handling; if (recdat.data[0] >= 32768) - tmp_float_handling = ((float)recdat.data[0] - 65536) / 100; + tmp_float_handling = (float(recdat.data[0]) - 65536) / 100; else - tmp_float_handling = ((float)recdat.data[0]) / 100; + tmp_float_handling = float(recdat.data[0]) / 100; if (recdat.addr == StepMM_X) { setAxisSteps_per_mm(tmp_float_handling * 10, X); } @@ -1089,7 +1040,7 @@ namespace ExtUI { for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { const bool zig = outer & 1; - const xy_uint8_t point = { zig ? (GRID_MAX_POINTS_X - 1) - inner : inner, outer }; + const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; rtscheck.RTS_SndData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + abl_probe_index * 2); ++abl_probe_index; } @@ -1100,7 +1051,7 @@ namespace ExtUI { waitway = 2; RTS_SndData(ExchangePageBase + 64, ExchangepageAddr); } - else if (recdat.data[0] == 2) { // Exchange filement + else if (recdat.data[0] == 2) { // Exchange filament InforShowStatus = true; TPShowStatus = false; memset(ChangeMaterialbuf, 0, sizeof(ChangeMaterialbuf)); @@ -1131,7 +1082,6 @@ namespace ExtUI { break; case ReturnBack: - DEBUG_ECHOPGM("Return : ", recdat.data[0]); if (recdat.data[0] == 1) { // return to the tool page InforShowStatus = false; RTS_SndData(ExchangePageBase + 63, ExchangepageAddr); @@ -1141,7 +1091,6 @@ namespace ExtUI { break; case Bedlevel: - DEBUG_ECHOLNPGM("Bed Level Option ", recdat.data[0]); switch (recdat.data[0]) { case 1: { // Z-axis to home // Disallow Z homing if X or Y are unknown @@ -1152,7 +1101,6 @@ namespace ExtUI { case 2: { // Z-axis to Up if (WITHIN((getZOffset_mm() + 0.1), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { smartAdjustAxis_steps(getAxisSteps_per_mm(Z) / 10, axis_t(Z), false); - //DEBUG_ECHOLNPGM("Babystep Pos Steps : ", (int)(getAxisSteps_per_mm(Z) / 10)); //setZOffset_mm(getZOffset_mm() + 0.1); RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); char zOffs[20], tmp1[11]; @@ -1163,10 +1111,9 @@ namespace ExtUI { } case 3: { // Z-axis to Down if (WITHIN((getZOffset_mm() - 0.1), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { - smartAdjustAxis_steps(((getAxisSteps_per_mm(Z) / 10) * -1), axis_t(Z), false); - // DEBUG_ECHOLNPGM("Babystep Neg Steps : ", (int)((getAxisSteps_per_mm(Z) / 10) * -1)); - // babystepAxis_steps((((int)getAxisSteps_per_mm(Z) / 10) * -1), axis_t(Z)); - // setZOffset_mm(getZOffset_mm() - 0.1); + smartAdjustAxis_steps(-getAxisSteps_per_mm(Z) / 10, axis_t(Z), false); + //babystepAxis_steps(int16_t(-getAxisSteps_per_mm(Z)) / 10, axis_t(Z)); + //setZOffset_mm(getZOffset_mm() - 0.1); RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); char zOffs[20], tmp1[11]; sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); @@ -1319,10 +1266,7 @@ namespace ExtUI { setActiveTool(getActiveTool() == E0 ? E1 : E0, !isAxisPositionKnown(X)); break; } - default: { - DEBUG_ECHOLNPGM("Unsupported Option Selected", recdat.data[0]); - break; - } + default: break; } RTS_SndData(10, FilenameIcon); @@ -1362,7 +1306,7 @@ namespace ExtUI { break; } - float targetPos = ((float)recdat.data[0]) / 10; + float targetPos = float(recdat.data[0]) / 10; LIMIT(targetPos, min, max); setAxisPosition_mm(targetPos, axis); waitway = 0; @@ -1372,39 +1316,38 @@ namespace ExtUI { case Filament: - unsigned int IconTemp; - if (recdat.addr == Exchfilement) { + uint16_t IconTemp; + if (recdat.addr == Exchfilament) { if (getActualTemp_celsius(getActiveTool()) < EXTRUDE_MINTEMP && recdat.data[0] < 5) { - RTS_SndData((int)EXTRUDE_MINTEMP, 0x1020); + RTS_SndData(int16_t(EXTRUDE_MINTEMP), 0x1020); delay_ms(5); RTS_SndData(ExchangePageBase + 66, ExchangepageAddr); break; } switch (recdat.data[0]) { - case 1: { // Unload filement1 - setAxisPosition_mm((getAxisPosition_mm(E0) - ChangeMaterialbuf[0]), E0); + case 1: { // Unload filament1 + setAxisPosition_mm(getAxisPosition_mm(E0) - ChangeMaterialbuf[0], E0); break; } - case 2: { // Load filement1 - setAxisPosition_mm((getAxisPosition_mm(E0) + ChangeMaterialbuf[0]), E0); + case 2: { // Load filament1 + setAxisPosition_mm(getAxisPosition_mm(E0) + ChangeMaterialbuf[0], E0); break; } - case 3: { // Unload filement2 - setAxisPosition_mm((getAxisPosition_mm(E1) - ChangeMaterialbuf[1]), E1); + case 3: { // Unload filament2 + setAxisPosition_mm(getAxisPosition_mm(E1) - ChangeMaterialbuf[1], E1); break; } - case 4: { // Load filement2 - setAxisPosition_mm((getAxisPosition_mm(E1) + ChangeMaterialbuf[1]), E1); + case 4: { // Load filament2 + setAxisPosition_mm(getAxisPosition_mm(E1) + ChangeMaterialbuf[1], E1); break; } case 5: { // sure to heat NozzleTempStatus[0] = 1; - // InforShowoStatus = true; setTargetTemp_celsius((PREHEAT_1_TEMP_HOTEND + 10), getActiveTool()); IconTemp = getActualTemp_celsius(getActiveTool()) * 100 / getTargetTemp_celsius(getActiveTool()); - NOMORE(IconTemp, 100); + NOMORE(IconTemp, 100U); RTS_SndData(IconTemp, HeatPercentIcon); RTS_SndData(getActualTemp_celsius(H0), NozzleTemp); @@ -1420,7 +1363,6 @@ namespace ExtUI { break; } case 0xF1: { // Sure to cancel heating - // InforShowoStatus = true; NozzleTempStatus[0] = 0; delay_ms(1); RTS_SndData(ExchangePageBase + 65, ExchangepageAddr); @@ -1433,27 +1375,20 @@ namespace ExtUI { RTS_SndData(10 * ChangeMaterialbuf[1], FilamentUnit2); } else if (recdat.addr == FilamentUnit1) { - ChangeMaterialbuf[0] = ((float)recdat.data[0]) / 10; + ChangeMaterialbuf[0] = float(recdat.data[0]) / 10; } else if (recdat.addr == FilamentUnit2) { - ChangeMaterialbuf[1] = ((float)recdat.data[0]) / 10; + ChangeMaterialbuf[1] = float(recdat.data[0]) / 10; } break; case LanguageChoice: - DEBUG_ECHOLNPGM("\n ***recdat.data[0] =", recdat.data[0]); - /*if(recdat.data[0]==1) { - settings.save(); - } - else { - injectCommands(F("M300")); - }*/ + //if (recdat.data[0] == 1) settings.save(); else injectCommands(F("M300")); + // may at some point use language change screens to save eeprom explicitly - DEBUG_ECHOLNPGM("InLangChoice"); switch (recdat.data[0]) { case 0: { - DEBUG_ECHOLNPGM("Store Settings"); injectCommands(F("M500")); break; } @@ -1471,12 +1406,10 @@ namespace ExtUI { #endif case 3: { - DEBUG_ECHOLNPGM("Init EEPROM"); injectCommands(F("M502\nM500")); break; } case 4: { - DEBUG_ECHOLNPGM("BLTouch Reset"); injectCommands(F("M999\nM280P0S160")); break; } @@ -1485,27 +1418,19 @@ namespace ExtUI { #if ENABLED(PIDTEMPBED) onStatusChanged(F("Bed PID Started")); startBedPIDTune(static_cast(pid_bedAutoTemp)); - #else - DEBUG_ECHOLNPGM("Bed PID Disabled"); #endif break; } case 6: { - DEBUG_ECHOLNPGM("Store Settings"); injectCommands(F("M500")); break; } - default: { - DEBUG_ECHOLNPGM("Invalid Option"); - break; - } + default: break; } break; - case No_Filament: - DEBUG_ECHOLNPGM("\n No Filament"); + case No_Filament: if (recdat.data[0] == 1) { // Filament is out, resume / resume selected on screen - DEBUG_ECHOLNPGM("Resume Yes during print"); if (ExtUI::pauseModeStatus != PAUSE_MESSAGE_PURGE && ExtUI::pauseModeStatus != PAUSE_MESSAGE_OPTION) { // setPauseMenuResponse(PAUSE_RESPONSE_RESUME_PRINT); setUserConfirmed(); @@ -1536,7 +1461,6 @@ namespace ExtUI { } } else if (recdat.data[0] == 0) { // Filamet is out, Cancel Selected - DEBUG_ECHOLNPGM(" Filament Response No"); if (ExtUI::pauseModeStatus == PAUSE_MESSAGE_PURGE || ExtUI::pauseModeStatus == PAUSE_MESSAGE_OPTION) { setPauseMenuResponse(PAUSE_RESPONSE_EXTRUDE_MORE); setUserConfirmed(); @@ -1573,14 +1497,11 @@ namespace ExtUI { break; case Filename: - DEBUG_ECHOLNPGM("Filename Selected"); if (isMediaInserted() && recdat.addr == FilenameChs) { - DEBUG_ECHOLNPGM("Has Media"); recordcount = recdat.data[0] - 1; if (filenavigator.currentindex == 0 && filenavigator.folderdepth > 0 && (fileIndex + recordcount) == 0) { filenavigator.upDIR(); - DEBUG_ECHOLNPGM("GoUpDir"); filenavigator.getFiles(0); fileIndex = 0; return; @@ -1589,24 +1510,22 @@ namespace ExtUI { if (filenavigator.currentindex == 0 && filenavigator.folderdepth > 0) recordcount = recordcount - 1; // account for return dir link in file index - for (int j = 1; j <= 4; j++) { // Clear filename BG Color and Frame - RTS_SndData((unsigned long)0xFFFF, FilenameNature + j * 16); // white + for (int16_t j = 1; j <= 4; j++) { // Clear filename BG Color and Frame + RTS_SndData(0xFFFFUL, FilenameNature + j * 16); // white RTS_SndData(10, FilenameIcon1 + j); // clean } - for (int j = 0; j < 10; j++) // clear current filename + for (int16_t j = 0; j < 10; j++) // clear current filename RTS_SndData(0, Choosefilename + j); if (filenavigator.getIndexisDir(fileIndex + recordcount)) { - DEBUG_ECHOLNPGM("Is Dir ", (fileIndex + recordcount)); filenavigator.changeDIR((char *)filenavigator.getIndexName(fileIndex + recordcount)); filenavigator.getFiles(0); fileIndex = 0; return; } else { - DEBUG_ECHOLNPGM("Is File ", (fileIndex + recordcount)); RTS_SndData(filenavigator.getIndexName(fileIndex + recordcount), Choosefilename); - RTS_SndData((unsigned long)0x87F0, FilenameNature + recdat.data[0] * 16); // Change BG of selected line to Light Green + RTS_SndData(0x87F0UL, FilenameNature + recdat.data[0] * 16); // Change BG of selected line to Light Green RTS_SndData(6, FilenameIcon1 + recdat.data[0]); // show frame } } @@ -1614,13 +1533,13 @@ namespace ExtUI { if (recdat.data[0] == 1 && isMediaInserted()) { // for sure printFile(filenavigator.getIndexName(fileIndex + recordcount)); - for (int j = 0; j < 10; j++) // clean screen. + for (int16_t j = 0; j < 10; j++) // clean screen. RTS_SndData(0, Printfilename + j); RTS_SndData(filenavigator.getIndexName(fileIndex + recordcount), Printfilename); - delay_ms(2); - delay_ms(2); + delay_ms(4); + RTS_SndData(ExchangePageBase + 53, ExchangepageAddr); TPShowStatus = InforShowStatus = true; @@ -1630,7 +1549,6 @@ namespace ExtUI { recordcount = 0; } else if (recdat.data[0] == 2) { // Page Down - DEBUG_ECHOLNPGM("PgDown"); if ((fileIndex + DISPLAY_FILES) < (filenavigator.maxFiles() + (filenavigator.folderdepth != 0))) { fileIndex = fileIndex + DISPLAY_FILES; // if(filenavigator.folderdepth!=0 && fileIndex!=0) //Shift to acknowledge Return DIR button on first page @@ -1641,7 +1559,6 @@ namespace ExtUI { } } else if (recdat.data[0] == 3) { // Page Up - DEBUG_ECHOLNPGM("PgUp"); if (fileIndex >= DISPLAY_FILES) { fileIndex = fileIndex - DISPLAY_FILES; // if(filenavigator.folderdepth!=0 && fileIndex!=0) //Shift to acknowledge Return DIR button on first page @@ -1651,7 +1568,6 @@ namespace ExtUI { } } else if (recdat.data[0] == 4) { // Page Up - DEBUG_ECHOLNPGM("Refresh"); injectCommands(F("M22\nM21")); } else if (recdat.data[0] == 0) { // return to main page @@ -1662,7 +1578,6 @@ namespace ExtUI { break; case VolumeDisplay: { - DEBUG_ECHOLNPGM("VolumeDisplay"); if (recdat.data[0] == 0) { Settings.display_volume = 0; Settings.display_sound = false; @@ -1680,20 +1595,17 @@ namespace ExtUI { } case DisplayBrightness: { - DEBUG_ECHOLNPGM("DisplayBrightness LCD: ", recdat.data[0]); if (recdat.data[0] < 10) Settings.screen_brightness = 10; else if (recdat.data[0] > 100) Settings.screen_brightness = 100; else Settings.screen_brightness = (uint8_t)recdat.data[0]; - DEBUG_ECHOLNPGM("DisplayBrightness Set: ", Settings.screen_brightness); SetTouchScreenConfiguration(); break; } case DisplayStandbyBrightness: { - DEBUG_ECHOLNPGM("DisplayStandbyBrightness"); if (recdat.data[0] < 10) Settings.standby_screen_brightness = 10; else if (recdat.data[0] > 100) @@ -1705,7 +1617,6 @@ namespace ExtUI { } case DisplayStandbySeconds: { - DEBUG_ECHOLNPGM("DisplayStandbySeconds"); if (recdat.data[0] < 5) Settings.standby_time_seconds = 5; else if (recdat.data[0] > 100) @@ -1722,22 +1633,16 @@ namespace ExtUI { xPnt = meshPoint - (yPnt * GRID_MAX_POINTS_X); if (yPnt % 2 != 0) xPnt = (GRID_MAX_POINTS_X - 1) - xPnt; // zag row - DEBUG_ECHOLNPGM("meshPoint ", meshPoint, " xPnt ", xPnt, " yPnt ", yPnt); - float meshVal = float(recdat.data[0] - (recdat.data[0] >= 32768 ? 65536 : 0)) / 1000; - DEBUG_ECHOLNPGM("meshVal ", meshVal); LIMIT(meshVal, Z_PROBE_LOW_POINT, Z_CLEARANCE_BETWEEN_PROBES); - DEBUG_ECHOLNPGM("Constrain meshVal ", meshVal); xy_uint8_t point = { xPnt, yPnt }; setMeshPoint(point, meshVal); rtscheck.RTS_SndData(meshVal * 1000, recdat.addr); break; } - default: - DEBUG_ECHOLNPGM("No Match :"); - break; + default: break; } memset(&recdat, 0, sizeof(recdat)); @@ -1770,7 +1675,7 @@ namespace ExtUI { LIMIT(Settings.screen_brightness, 10, 100); // Prevent a possible all-dark screen LIMIT(Settings.standby_time_seconds, 10, 655); // Prevent a possible all-dark screen for standby, yet also don't go higher than the DWIN limitation - unsigned char cfg_bits = 0x0 + uint8_t cfg_bits = 0x0 | _BV(7) // 7: Enable Control ... TERN0(DWINOS_4, _BV(7)) | _BV(5) // 5: load 22 touch file | _BV(4) // 4: auto-upload should always be enabled @@ -1782,12 +1687,12 @@ namespace ExtUI { #endif ; - const unsigned char config_set[] = { 0x5A, 0x00, TERN(DWINOS_4, 0x00, 0xFF), cfg_bits }; + const uint8_t config_set[] = { 0x5A, 0x00, TERN(DWINOS_4, 0x00, 0xFF), cfg_bits }; WriteVariable(0x80 /*System_Config*/, config_set, sizeof(config_set)); // Standby brightness (LED_Config) uint16_t dwinStandbyTimeSeconds = 100 * Settings.standby_time_seconds; /* milliseconds, but divided by 10 (not 5 like the docs say) */ - const unsigned char brightness_set[] = { + const uint8_t brightness_set[] = { Settings.screen_brightness /*% active*/, Settings.standby_screen_brightness /*% standby*/, static_cast(dwinStandbyTimeSeconds >> 8), @@ -1816,9 +1721,8 @@ namespace ExtUI { } void onPrinterKilled(FSTR_P const error, FSTR_P const component) { - DEBUG_ECHOLNPGM("***kill***"); rtscheck.RTS_SndData(ExchangePageBase + 88, ExchangepageAddr); - int j = 0; + int16_t j = 0; char outmsg[40]; char killMsg[strlen_P(FTOP(error)) + strlen_P(FTOP(component)) + 3]; sprintf_P(killMsg, PSTR(S_FMT ": " S_FMT), FTOP(error), FTOP(component)); @@ -1839,7 +1743,6 @@ namespace ExtUI { } void onMediaInserted() { - DEBUG_ECHOLNPGM("***Initing card is OK***"); filenavigator.reset(); filenavigator.getFiles(0); fileIndex = 0; @@ -1848,61 +1751,53 @@ namespace ExtUI { void onMediaError() { filenavigator.reset(); - for (int i = 0; i < MaxFileNumber; i++) - for (int j = 0; j < 10; j++) rtscheck.RTS_SndData(0, SDFILE_ADDR + i * 10 + j); + for (int16_t i = 0; i < MaxFileNumber; i++) + for (int16_t j = 0; j < 10; j++) rtscheck.RTS_SndData(0, SDFILE_ADDR + i * 10 + j); - for (int j = 0; j < 10; j++) { + for (int16_t j = 0; j < 10; j++) { rtscheck.RTS_SndData(0, Printfilename + j); // clean screen. rtscheck.RTS_SndData(0, Choosefilename + j); // clean filename } - for (int j = 0; j < 8; j++) rtscheck.RTS_SndData(0, FilenameCount + j); - for (int j = 1; j <= MaxFileNumber; j++) { + for (int16_t j = 0; j < 8; j++) rtscheck.RTS_SndData(0, FilenameCount + j); + for (int16_t j = 1; j <= MaxFileNumber; j++) { rtscheck.RTS_SndData(10, FilenameIcon + j); rtscheck.RTS_SndData(10, FilenameIcon1 + j); } - return; - DEBUG_ECHOLNPGM("***Initing card fails***"); } void onMediaRemoved() { filenavigator.reset(); - for (int i = 0; i < MaxFileNumber; i++) - for (int j = 0; j < 10; j++) rtscheck.RTS_SndData(0, SDFILE_ADDR + i * 10 + j); + for (int16_t i = 0; i < MaxFileNumber; i++) + for (int16_t j = 0; j < 10; j++) rtscheck.RTS_SndData(0, SDFILE_ADDR + i * 10 + j); - for (int j = 0; j < 10; j++) { + for (int16_t j = 0; j < 10; j++) { rtscheck.RTS_SndData(0, Printfilename + j); // clean screen. rtscheck.RTS_SndData(0, Choosefilename + j); // clean filename } - for (int j = 0; j < 8; j++) rtscheck.RTS_SndData(0, FilenameCount + j); - for (int j = 1; j <= MaxFileNumber; j++) { + for (int16_t j = 0; j < 8; j++) rtscheck.RTS_SndData(0, FilenameCount + j); + for (int16_t j = 1; j <= MaxFileNumber; j++) { rtscheck.RTS_SndData(10, FilenameIcon + j); rtscheck.RTS_SndData(10, FilenameIcon1 + j); } - return; - DEBUG_ECHOLNPGM("***Card Removed***"); } void onPlayTone(const uint16_t frequency, const uint16_t duration) { - DEBUG_ECHOLNPGM("***CPlay Tone***"); rtscheck.RTS_SndData(StartSoundSet, SoundAddr); } void onPrintTimerStarted() { - DEBUG_ECHOLNPGM("==onPrintTimerStarted=="); if (waitway == 7) return; PrinterStatusKey[1] = 3; - InforShowStatus = true; + InforShowStatus = true; delay_ms(1); rtscheck.RTS_SndData(ExchangePageBase + 53, ExchangepageAddr); } void onPrintTimerPaused() { - DEBUG_ECHOLNPGM("==onPrintTimerPaused=="); rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); // Display Pause Screen onStatusChanged(F("Pausing...")); } void onPrintTimerStopped() { - DEBUG_ECHOLNPGM("==onPrintTimerStopped=="); if (waitway == 3) return; #if FAN_COUNT > 0 @@ -1910,26 +1805,24 @@ namespace ExtUI { #endif PrinterStatusKey[0] = 0; - InforShowStatus = true; - TPShowStatus = false; + InforShowStatus = true; + TPShowStatus = false; rtscheck.RTS_SndData(ExchangePageBase + 51, ExchangepageAddr); } void onFilamentRunout() { - DEBUG_ECHOLNPGM("==onFilamentRunout=="); PrinterStatusKey[1] = 4; - TPShowStatus = false; + TPShowStatus = false; rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); } void onFilamentRunout(extruder_t extruder) { - DEBUG_ECHOLNPGM("==onFilamentRunout=="); PrinterStatusKey[1] = 4; - TPShowStatus = false; + TPShowStatus = false; rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); } void onUserConfirmRequired(const char *const msg) { PrinterStatusKey[1] = 4; - TPShowStatus = false; + TPShowStatus = false; if (lastPauseMsgState == ExtUI::pauseModeStatus && msg == (const char*)GET_TEXT_F(MSG_FILAMENT_CHANGE_LOAD)) return; @@ -2009,16 +1902,14 @@ namespace ExtUI { default: { setPauseMenuResponse(PAUSE_RESPONSE_RESUME_PRINT); setUserConfirmed(); - DEBUG_ECHOLNPGM("Pause Mode Status"); break; } } lastPauseMsgState = ExtUI::pauseModeStatus; - DEBUG_ECHOLNPGM("==onUserConfirmRequired==", pauseModeStatus); } void onStatusChanged(const char *const statMsg) { - for (int j = 0; j < 20; j++) // Clear old message + for (int16_t j = 0; j < 20; j++) // Clear old message rtscheck.RTS_SndData(' ', StatusMessageString + j); rtscheck.RTS_SndData(statMsg, StatusMessageString); } @@ -2035,7 +1926,6 @@ namespace ExtUI { onStartup(); startprogress = 0; InforShowStatus = true; - DEBUG_ECHOLNPGM("==onFactoryReset=="); } void onMeshUpdate(const int8_t xpos, const int8_t ypos, probe_state_t state) {} @@ -2049,7 +1939,7 @@ namespace ExtUI { for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { const bool zig = outer & 1; // != ((PR_OUTER_END) & 1); - const xy_uint8_t point = { zig ? (GRID_MAX_POINTS_X - 1) - inner : inner, outer }; + const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; if (point.x == xpos && outer == ypos) rtscheck.RTS_SndData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + (abl_probe_index * 2)); ++abl_probe_index; @@ -2064,7 +1954,6 @@ namespace ExtUI { ); // Write to buffer - DEBUG_ECHOLNPGM("Saving DWIN LCD setting from EEPROM"); memcpy(buff, &Settings, sizeof(creality_dwin_settings_t)); } @@ -2079,48 +1968,34 @@ namespace ExtUI { // If size is not the same, discard settings if (eepromSettings.settings_size != sizeof(creality_dwin_settings_t)) { - DEBUG_ECHOLNPGM("Discarding DWIN LCD setting from EEPROM - size incorrect"); onFactoryReset(); return; } if (eepromSettings.settings_version != dwin_settings_version) { - DEBUG_ECHOLNPGM("Discarding DWIN LCD setting from EEPROM - settings version incorrect"); onFactoryReset(); return; } // Copy into final location - DEBUG_ECHOLNPGM("Loading DWIN LCD setting from EEPROM"); memcpy(&Settings, &eepromSettings, sizeof(creality_dwin_settings_t)); - DEBUG_ECHOLNPGM("Setting Brightness : ", Settings.screen_brightness); - DEBUG_ECHOLNPGM("Setting Standby : ", Settings.standby_screen_brightness); - DEBUG_ECHOLNPGM("Setting Standby Time : ", Settings.standby_time_seconds); - DEBUG_ECHOLNPGM("Setting Rotation : ", Settings.screen_rotation); - DEBUG_ECHOLNPGM("Setting Volume : ", Settings.display_volume); - - DEBUG_ECHOLNPGM("Setting Standby On : ", Settings.display_standby); - DEBUG_ECHOLNPGM("Setting Volume On : ", Settings.display_sound); - SetTouchScreenConfiguration(); } void onSettingsStored(bool success) { - DEBUG_ECHOLNPGM("==onSettingsStored=="); // This is called after the entire EEPROM has been written, // whether successful or not. } void onSettingsLoaded(bool success) { - DEBUG_ECHOLNPGM("==onConfigurationStoreRead=="); #if HAS_MESH if (ExtUI::getMeshValid()) { uint8_t abl_probe_index = 0; for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { const bool zig = outer & 1; - const xy_uint8_t point = { zig ? (GRID_MAX_POINTS_X - 1) - inner : inner, outer }; + const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; rtscheck.RTS_SndData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + (abl_probe_index * 2)); ++abl_probe_index; } @@ -2134,14 +2009,12 @@ namespace ExtUI { } #endif - DEBUG_ECHOLNPGM("\n init zprobe_zoffset = ", getZOffset_mm()); rtscheck.RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); SetTouchScreenConfiguration(); } #if ENABLED(POWER_LOSS_RECOVERY) void onPowerLossResume() { - DEBUG_ECHOLNPGM("==OnPowerLossResume=="); startprogress = 254; InforShowStatus = true; TPShowStatus = false; @@ -2155,13 +2028,13 @@ namespace ExtUI { // Called for temperature PID tuning result rtscheck.RTS_SndData(pid_hotendAutoTemp, HotendPID_AutoTmp); rtscheck.RTS_SndData(pid_bedAutoTemp, BedPID_AutoTmp); - rtscheck.RTS_SndData((unsigned int)(getPID_Kp(E0) * 10), HotendPID_P); - rtscheck.RTS_SndData((unsigned int)(getPID_Ki(E0) * 10), HotendPID_I); - rtscheck.RTS_SndData((unsigned int)(getPID_Kd(E0) * 10), HotendPID_D); + rtscheck.RTS_SndData(uint16_t(getPID_Kp(E0)) * 10, HotendPID_P); + rtscheck.RTS_SndData(uint16_t(getPID_Ki(E0)) * 10, HotendPID_I); + rtscheck.RTS_SndData(uint16_t(getPID_Kd(E0)) * 10, HotendPID_D); #if ENABLED(PIDTEMPBED) - rtscheck.RTS_SndData((unsigned int)(getBedPID_Kp() * 10), BedPID_P); - rtscheck.RTS_SndData((unsigned int)(getBedPID_Ki() * 10), BedPID_I); - rtscheck.RTS_SndData((unsigned int)(getBedPID_Kd() * 10), BedPID_D); + rtscheck.RTS_SndData(uint16_t(getBedPID_Kp()) * 10, BedPID_P); + rtscheck.RTS_SndData(uint16_t(getBedPID_Ki()) * 10, BedPID_I); + rtscheck.RTS_SndData(uint16_t(getBedPID_Kd()) * 10, BedPID_D); #endif onStatusChanged(F("PID Tune Finished")); } @@ -2176,7 +2049,7 @@ namespace ExtUI { for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { const bool zig = outer & 1; - const xy_uint8_t point = { zig ? (GRID_MAX_POINTS_X - 1) - inner : inner, outer }; + const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; rtscheck.RTS_SndData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + abl_probe_index * 2); ++abl_probe_index; } diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.h b/Marlin/src/lcd/extui/ia_creality/creality_extui.h index a051ea92c2..874a51b6f6 100644 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.h +++ b/Marlin/src/lcd/extui/ia_creality/creality_extui.h @@ -49,19 +49,21 @@ #define SizeofDatabuf 46 -/*************Register and Variable addr*****************/ +//#define FONT_EEPROM 90 +//#define AutoLeve_EEPROM 100 +//#define FanOn 255 +#define FanOff 0 + +#define ExchangePageBase 0x5A010000UL // the first page ID. other page = first page ID + relevant num; +#define StartSoundSet 0x060480A0UL // 06,start-music; 04, 4 musics; 80, the volume value; 04, return value about music number. + +// Register addresses #define RegAddr_W 0x80 #define RegAddr_R 0x81 #define VarAddr_W 0x82 #define VarAddr_R 0x83 -#define ExchangePageBase (unsigned long)0x5A010000 // the first page ID. other page = first page ID + relevant num; -#define StartSoundSet ((unsigned long)0x060480A0) // 06,start-music; 04, 4 musics; 80, the volume value; 04, return value about music number. -//#define FONT_EEPROM 90 -//#define AutoLeve_EEPROM 100 -//#define FanOn 255 -#define FanOff 0 -/*variable addr*/ +// Variable addresses #define ExchangepageAddr 0x0084 #define SoundAddr 0x00A0 #define StartIcon 0x1000 @@ -142,7 +144,7 @@ #define DisplayZaxis 0x104C #define FilamentUnit1 0x1054 -#define Exchfilement 0x1056 +#define Exchfilament 0x1056 #define FilamentUnit2 0x1058 #define MacVersion 0x1060 @@ -193,13 +195,13 @@ namespace ExtUI { } rx_datagram_state_t; typedef struct DataBuf { - unsigned char len; - unsigned char head[2]; - unsigned char command; - unsigned long addr; - unsigned long bytelen; - unsigned short data[32]; - unsigned char reserv[4]; + uint8_t len; + uint8_t head[2]; + uint8_t command; + uint32_t addr; + uint32_t bytelen; + uint16_t data[32]; + uint8_t reserv[4]; } DB; struct creality_dwin_settings_t { @@ -220,27 +222,27 @@ namespace ExtUI { class RTSSHOW { public: RTSSHOW(); - int RTS_RecData(); + int16_t RTS_RecData(); void RTS_SDCardInit(void); void RTS_SDCardUpate(bool, bool); - int RTS_CheckFilament(int); + int16_t RTS_CheckFilament(int16_t); void RTS_SndData(void); - void RTS_SndData(const String &, unsigned long, unsigned char = VarAddr_W); - void RTS_SndData(const char[], unsigned long, unsigned char = VarAddr_W); - void RTS_SndData(char, unsigned long, unsigned char = VarAddr_W); - void RTS_SndData(unsigned char*, unsigned long, unsigned char = VarAddr_W); - void RTS_SndData(int, unsigned long, unsigned char = VarAddr_W); - void RTS_SndData(float, unsigned long, unsigned char = VarAddr_W); - void RTS_SndData(unsigned int,unsigned long, unsigned char = VarAddr_W); - void RTS_SndData(long,unsigned long, unsigned char = VarAddr_W); - void RTS_SndData(unsigned long,unsigned long, unsigned char = VarAddr_W); + void RTS_SndData(const String &, uint32_t, uint8_t=VarAddr_W); + void RTS_SndData(const char[], uint32_t, uint8_t=VarAddr_W); + void RTS_SndData(char, uint32_t, uint8_t=VarAddr_W); + void RTS_SndData(uint8_t*, uint32_t, uint8_t=VarAddr_W); + void RTS_SndData(int16_t, uint32_t, uint8_t=VarAddr_W); + void RTS_SndData(float, uint32_t, uint8_t=VarAddr_W); + void RTS_SndData(uint16_t, uint32_t, uint8_t=VarAddr_W); + void RTS_SndData(int32_t, uint32_t, uint8_t=VarAddr_W); + void RTS_SndData(uint32_t, uint32_t, uint8_t=VarAddr_W); void RTS_SDcard_Stop(); void RTS_HandleData(); void RTS_Init(); DB recdat; DB snddat; - unsigned char databuf[SizeofDatabuf]; + uint8_t databuf[SizeofDatabuf]; static rx_datagram_state_t rx_datagram_state; static uint8_t rx_datagram_len; @@ -250,13 +252,13 @@ namespace ExtUI { static RTSSHOW rtscheck; #define Addvalue 3 - #define PrintChoice_Value (0+Addvalue) - #define Zoffset_Value (3+Addvalue) - #define Setting_Value (8+Addvalue) - #define XYZEaxis_Value (12+Addvalue) - #define Filament_Value (15+Addvalue) - #define Language_Value (18+Addvalue) - #define Filename_Value (22+Addvalue) + #define PrintChoice_Value (0 + Addvalue) + #define Zoffset_Value (3 + Addvalue) + #define Setting_Value (8 + Addvalue) + #define XYZEaxis_Value (12 + Addvalue) + #define Filament_Value (15 + Addvalue) + #define Language_Value (18 + Addvalue) + #define Filename_Value (22 + Addvalue) enum PROC_COM { Printfile = 0, @@ -279,7 +281,7 @@ namespace ExtUI { Filename = Filename_Value }; - const unsigned long Addrbuf[] = { + const uint32_t Addrbuf[] = { 0x1002, 0x1004, 0x1006, 0x1008, 0x100A, 0x100C, 0x1026, 0x1030, 0x1032, 0x1034, 0x103A, 0x103E, 0x1040, 0x1044, 0x1046, 0x1048, 0x104A, 0x104C, 0x1054, 0x1056, 0x1058, 0x105C, 0x105E, 0x105F, 0x1088, 0 diff --git a/Marlin/src/lcd/extui/mks_ui/draw_wifi_tips.h b/Marlin/src/lcd/extui/mks_ui/draw_wifi_tips.h index ad15238932..a289a80dc7 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_wifi_tips.h +++ b/Marlin/src/lcd/extui/mks_ui/draw_wifi_tips.h @@ -38,7 +38,7 @@ extern TIPS_TYPE wifi_tips_type; typedef struct { unsigned char timer; - unsigned int timer_count; + uint16_t timer_count; } TIPS_DISP; extern TIPS_DISP tips_disp; diff --git a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp index b31977e7ca..a5a8f7cbe4 100644 --- a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp @@ -300,7 +300,7 @@ void lv_fill_rect(lv_coord_t x1, lv_coord_t y1, lv_coord_t x2, lv_coord_t y2, lv #define TICK_CYCLE 1 -unsigned int getTickDiff(unsigned int curTick, unsigned int lastTick) { +uint16_t getTickDiff(uint16_t curTick, uint16_t lastTick) { return TICK_CYCLE * (lastTick <= curTick ? (curTick - lastTick) : (0xFFFFFFFF - lastTick + curTick)); } diff --git a/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32.cpp b/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32.cpp index 0e55b3448b..cac3d2a17d 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32.cpp @@ -230,7 +230,7 @@ void WifiSerial::_rx_complete_irq(serial_t *obj) { WRITE(WIFI_IO1_PIN, HIGH); - rx_buffer_index_t i = (unsigned int)(obj->rx_head + 1) % WIFI_RX_BUF_SIZE; + rx_buffer_index_t i = uint16_t(obj->rx_head + 1) % WIFI_RX_BUF_SIZE; // if we should be storing the received character into the location // just before the tail (meaning that the head would advance to the @@ -292,7 +292,7 @@ void WifiSerial::begin(unsigned long baud, byte config) { case 0: Error_Handler(); break; } - uart_init(&_serial, (uint32_t)baud, databits, parity, stopbits); + uart_init(&_serial, uint32_t(baud), databits, parity, stopbits); enableHalfDuplexRx(); if (baud == WIFI_BAUDRATE) uart_attach_rx_callback(&_serial, _rx_complete_irq); @@ -311,7 +311,7 @@ void WifiSerial::end() { } int WifiSerial::available() { - return ((unsigned int)(WIFI_RX_BUF_SIZE + _serial.rx_head - _serial.rx_tail)) % WIFI_RX_BUF_SIZE; + return uint16_t(WIFI_RX_BUF_SIZE + _serial.rx_head - _serial.rx_tail) % WIFI_RX_BUF_SIZE; } // diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp index a8d30b442a..215281d450 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp @@ -59,7 +59,7 @@ extern uint8_t Explore_Disk(char *path, uint8_t recu_level); extern uint8_t commands_in_queue; extern uint8_t sel_id; -extern unsigned int getTickDiff(unsigned int curTick, unsigned int lastTick); +extern uint16_t getTickDiff(uint16_t curTick, uint16_t lastTick); volatile SZ_USART_FIFO WifiRxFifo; diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp index 18a311303c..44869d4770 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp @@ -79,9 +79,9 @@ const uint32_t ESP_FLASH_ADDR = 0x40200000; // address of start of Flash UPLOAD_STRUCT esp_upload; -static const unsigned int retriesPerReset = 3; +static const uint16_t retriesPerReset = 3; static const uint32_t connectAttemptInterval = 50; -static const unsigned int percentToReportIncrement = 5; // how often we report % complete +static const uint16_t percentToReportIncrement = 5; // how often we report % complete static const uint32_t defaultTimeout = 500; static const uint32_t eraseTimeout = 15000; static const uint32_t blockWriteTimeout = 200; @@ -151,7 +151,7 @@ void flushInput() { uint32_t getData(unsigned byteCnt, const uint8_t *buf, int ofst) { uint32_t val = 0; if (buf && byteCnt) { - unsigned int shiftCnt = 0; + uint16_t shiftCnt = 0; NOMORE(byteCnt, 4U); do { val |= (uint32_t)buf[ofst++] << shiftCnt; @@ -348,7 +348,7 @@ EspUploadResult readPacket(uint8_t op, uint32_t *valp, size_t *bodyLen, uint32_t // Send a block of data performing SLIP encoding of the content. void _writePacket(const uint8_t *data, size_t len) { unsigned char outBuf[2048] = {0}; - unsigned int outIndex = 0; + uint16_t outIndex = 0; while (len != 0) { if (*data == 0xC0) { outBuf[outIndex++] = 0xDB; @@ -597,7 +597,7 @@ void upload_spin() { case uploading: // The ESP needs several milliseconds to recover from one packet before it will accept another if (getWifiTickDiff(esp_upload.lastAttemptTime, getWifiTick()) >= 15) { - unsigned int percentComplete; + uint16_t percentComplete; const uint32_t blkCnt = (esp_upload.fileSize + EspFlashBlockSize - 1) / EspFlashBlockSize; if (esp_upload.uploadBlockNumber < blkCnt) { esp_upload.uploadResult = flashWriteBlock(0, 0); diff --git a/Marlin/src/lcd/language/language_an.h b/Marlin/src/lcd/language/language_an.h index 1d4801278c..a7da7c6e96 100644 --- a/Marlin/src/lcd/language/language_an.h +++ b/Marlin/src/lcd/language/language_an.h @@ -93,7 +93,7 @@ namespace Language_an { LSTR MSG_MOVE_50MM = _UxGT("Mover 50mm"); LSTR MSG_MOVE_100MM = _UxGT("Mover 100mm"); LSTR MSG_SPEED = _UxGT("Velocidat"); - LSTR MSG_BED_Z = _UxGT("Base Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Base Z"); LSTR MSG_NOZZLE = _UxGT("Boquilla"); LSTR MSG_NOZZLE_N = _UxGT("Boquilla ~"); LSTR MSG_BED = _UxGT("Base"); diff --git a/Marlin/src/lcd/language/language_bg.h b/Marlin/src/lcd/language/language_bg.h index 312ada7b10..87199ffbc9 100644 --- a/Marlin/src/lcd/language/language_bg.h +++ b/Marlin/src/lcd/language/language_bg.h @@ -82,7 +82,7 @@ namespace Language_bg { LSTR MSG_MOVE_50MM = _UxGT("Премести с 50mm"); LSTR MSG_MOVE_100MM = _UxGT("Премести с 100mm"); LSTR MSG_SPEED = _UxGT("Скорост"); - LSTR MSG_BED_Z = _UxGT("Bed Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); LSTR MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" Дюза"); LSTR MSG_NOZZLE_N = " " LCD_STR_THERMOMETER _UxGT(" Дюза ~"); LSTR MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" Легло"); diff --git a/Marlin/src/lcd/language/language_ca.h b/Marlin/src/lcd/language/language_ca.h index 13b5d70837..fec9c44741 100644 --- a/Marlin/src/lcd/language/language_ca.h +++ b/Marlin/src/lcd/language/language_ca.h @@ -93,7 +93,7 @@ namespace Language_ca { LSTR MSG_MOVE_50MM = _UxGT("Mou 50mm"); LSTR MSG_MOVE_100MM = _UxGT("Mou 100mm"); LSTR MSG_SPEED = _UxGT("Velocitat"); - LSTR MSG_BED_Z = _UxGT("Llit Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Llit Z"); LSTR MSG_NOZZLE = _UxGT("Nozzle"); LSTR MSG_NOZZLE_N = _UxGT("Nozzle ~"); LSTR MSG_BED = _UxGT("Llit"); diff --git a/Marlin/src/lcd/language/language_cz.h b/Marlin/src/lcd/language/language_cz.h index bb930eb784..f0da141069 100644 --- a/Marlin/src/lcd/language/language_cz.h +++ b/Marlin/src/lcd/language/language_cz.h @@ -243,7 +243,7 @@ namespace Language_cz { LSTR MSG_MOVE_50MM = _UxGT("Posunout o 50mm"); LSTR MSG_MOVE_100MM = _UxGT("Posunout o 100mm"); LSTR MSG_SPEED = _UxGT("Rychlost"); - LSTR MSG_BED_Z = _UxGT("Výška podl."); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Výška podl."); LSTR MSG_NOZZLE = _UxGT("Tryska"); LSTR MSG_NOZZLE_N = _UxGT("Tryska ~"); LSTR MSG_BED = _UxGT("Podložka"); diff --git a/Marlin/src/lcd/language/language_da.h b/Marlin/src/lcd/language/language_da.h index 56c53b84fd..ec1a769783 100644 --- a/Marlin/src/lcd/language/language_da.h +++ b/Marlin/src/lcd/language/language_da.h @@ -84,7 +84,7 @@ namespace Language_da { LSTR MSG_MOVE_50MM = _UxGT("Flyt 50mm"); LSTR MSG_MOVE_100MM = _UxGT("Flyt 100mm"); LSTR MSG_SPEED = _UxGT("Hastighed"); - LSTR MSG_BED_Z = _UxGT("Plade Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Plade Z"); LSTR MSG_NOZZLE = _UxGT("Dyse"); LSTR MSG_NOZZLE_N = _UxGT("Dyse ~"); diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h index 1cbddf860e..32da975e04 100644 --- a/Marlin/src/lcd/language/language_de.h +++ b/Marlin/src/lcd/language/language_de.h @@ -308,7 +308,7 @@ namespace Language_de { LSTR MSG_MOVE_01IN = _UxGT("0.100 in"); LSTR MSG_MOVE_1IN = _UxGT("1.000 in"); LSTR MSG_SPEED = _UxGT("Geschw."); - LSTR MSG_BED_Z = _UxGT("Bett Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Bett Z"); LSTR MSG_NOZZLE = _UxGT("Düse"); LSTR MSG_NOZZLE_N = _UxGT("Düse ~"); LSTR MSG_NOZZLE_PARKED = _UxGT("Düse geparkt"); diff --git a/Marlin/src/lcd/language/language_el.h b/Marlin/src/lcd/language/language_el.h index 57af804147..a411f33155 100644 --- a/Marlin/src/lcd/language/language_el.h +++ b/Marlin/src/lcd/language/language_el.h @@ -102,7 +102,7 @@ namespace Language_el { LSTR MSG_MOVE_50MM = _UxGT("Μετακίνηση 50 μμ"); LSTR MSG_MOVE_100MM = _UxGT("Μετακίνηση 100 μμ"); LSTR MSG_SPEED = _UxGT("Ταχύτητα"); - LSTR MSG_BED_Z = _UxGT("Επ. Εκτύπωσης Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Επ. Εκτύπωσης Z"); LSTR MSG_NOZZLE = _UxGT("Ακροφύσιο"); LSTR MSG_NOZZLE_N = _UxGT("Ακροφύσιο ~"); LSTR MSG_BED = _UxGT("Επ. Εκτύπωσης"); diff --git a/Marlin/src/lcd/language/language_el_gr.h b/Marlin/src/lcd/language/language_el_gr.h index 08f647f705..463d6d4c7b 100644 --- a/Marlin/src/lcd/language/language_el_gr.h +++ b/Marlin/src/lcd/language/language_el_gr.h @@ -91,7 +91,7 @@ namespace Language_el_gr { LSTR MSG_MOVE_50MM = _UxGT("Μετακίνηση 50 μμ"); LSTR MSG_MOVE_100MM = _UxGT("Μετακίνηση 100 μμ"); LSTR MSG_SPEED = _UxGT("Ταχύτητα"); - LSTR MSG_BED_Z = _UxGT("Κλίνη Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Κλίνη Z"); LSTR MSG_NOZZLE = _UxGT("Ακροφύσιο"); LSTR MSG_NOZZLE_N = _UxGT("Ακροφύσιο ~"); LSTR MSG_BED = _UxGT("Κλίνη"); diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 5adc5275fc..0a695bfe06 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -329,7 +329,7 @@ namespace Language_en { LSTR MSG_MOVE_1IN = _UxGT("Move 1.0in"); LSTR MSG_LIVE_MOVE = _UxGT("Live Move"); LSTR MSG_SPEED = _UxGT("Speed"); - LSTR MSG_BED_Z = _UxGT("Bed Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); LSTR MSG_NOZZLE = _UxGT("Nozzle"); LSTR MSG_NOZZLE_N = _UxGT("Nozzle ~"); LSTR MSG_NOZZLE_PARKED = _UxGT("Nozzle Parked"); diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h index d95275c317..13d9a9b655 100644 --- a/Marlin/src/lcd/language/language_es.h +++ b/Marlin/src/lcd/language/language_es.h @@ -237,7 +237,7 @@ namespace Language_es { LSTR MSG_MOVE_50MM = _UxGT("Mover 50mm"); LSTR MSG_MOVE_100MM = _UxGT("Mover 100mm"); LSTR MSG_SPEED = _UxGT("Velocidad"); - LSTR MSG_BED_Z = _UxGT("Cama Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Cama Z"); LSTR MSG_NOZZLE = _UxGT("Boquilla"); LSTR MSG_NOZZLE_N = _UxGT("Boquilla ~"); LSTR MSG_NOZZLE_PARKED = _UxGT("Boquilla Aparcada"); diff --git a/Marlin/src/lcd/language/language_eu.h b/Marlin/src/lcd/language/language_eu.h index 0c29cdd2aa..f000b5fcfb 100644 --- a/Marlin/src/lcd/language/language_eu.h +++ b/Marlin/src/lcd/language/language_eu.h @@ -146,7 +146,7 @@ namespace Language_eu { LSTR MSG_MOVE_50MM = _UxGT("Mugitu 50mm"); LSTR MSG_MOVE_100MM = _UxGT("Mugitu 100mm"); LSTR MSG_SPEED = _UxGT("Abiadura"); - LSTR MSG_BED_Z = _UxGT("Z Ohea"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Ohea"); LSTR MSG_NOZZLE = _UxGT("Pita"); LSTR MSG_NOZZLE_N = _UxGT("Pita ~"); LSTR MSG_BED = _UxGT("Ohea"); diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h index fdb556abe8..e274de8db6 100644 --- a/Marlin/src/lcd/language/language_fr.h +++ b/Marlin/src/lcd/language/language_fr.h @@ -246,7 +246,7 @@ namespace Language_fr { LSTR MSG_MOVE_05IN = _UxGT("Déplacer 0.5\""); LSTR MSG_MOVE_1IN = _UxGT("Déplacer 1\""); LSTR MSG_SPEED = _UxGT("Vitesse"); - LSTR MSG_BED_Z = _UxGT("Lit Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Lit Z"); LSTR MSG_NOZZLE = _UxGT("Buse"); LSTR MSG_NOZZLE_N = _UxGT("Buse ~"); LSTR MSG_BED = _UxGT("Lit"); diff --git a/Marlin/src/lcd/language/language_gl.h b/Marlin/src/lcd/language/language_gl.h index 28917bad35..7d6b285834 100644 --- a/Marlin/src/lcd/language/language_gl.h +++ b/Marlin/src/lcd/language/language_gl.h @@ -234,7 +234,7 @@ namespace Language_gl { LSTR MSG_MOVE_50MM = _UxGT("Mover 50mm"); LSTR MSG_MOVE_100MM = _UxGT("Mover 100mm"); LSTR MSG_SPEED = _UxGT("Velocidade"); - LSTR MSG_BED_Z = _UxGT("Cama Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Cama Z"); LSTR MSG_NOZZLE = _UxGT("Bico"); LSTR MSG_NOZZLE_N = _UxGT("Bico ~"); LSTR MSG_NOZZLE_PARKED = _UxGT("Bico Estacionado"); diff --git a/Marlin/src/lcd/language/language_hr.h b/Marlin/src/lcd/language/language_hr.h index 36eaf78acb..697341fc44 100644 --- a/Marlin/src/lcd/language/language_hr.h +++ b/Marlin/src/lcd/language/language_hr.h @@ -89,7 +89,7 @@ namespace Language_hr { LSTR MSG_MOVE_50MM = _UxGT("Miči 50mm"); LSTR MSG_MOVE_100MM = _UxGT("Miči 100mm"); LSTR MSG_SPEED = _UxGT("Brzina"); - LSTR MSG_BED_Z = _UxGT("Bed Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); LSTR MSG_NOZZLE = _UxGT("Dizna"); LSTR MSG_NOZZLE_N = _UxGT("Dizna ~"); LSTR MSG_BED = _UxGT("Bed"); diff --git a/Marlin/src/lcd/language/language_hu.h b/Marlin/src/lcd/language/language_hu.h index 61c7d9f9c4..e17de38747 100644 --- a/Marlin/src/lcd/language/language_hu.h +++ b/Marlin/src/lcd/language/language_hu.h @@ -272,7 +272,7 @@ namespace Language_hu { LSTR MSG_MOVE_05IN = _UxGT("Mozgás 12.7mm"); LSTR MSG_MOVE_1IN = _UxGT("Mozgáá 25.4mm"); LSTR MSG_SPEED = _UxGT("Sebesség"); - LSTR MSG_BED_Z = _UxGT("Z ágy"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Z ágy"); LSTR MSG_NOZZLE = _UxGT("Fej"); LSTR MSG_NOZZLE_N = _UxGT("Fej ~"); LSTR MSG_NOZZLE_PARKED = _UxGT("Fej parkolva"); diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index ee8d51203c..0caf950aa5 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -326,7 +326,7 @@ namespace Language_it { LSTR MSG_MOVE_1IN = _UxGT("Muovi di 1\""); LSTR MSG_LIVE_MOVE = _UxGT("Modalità Live"); LSTR MSG_SPEED = _UxGT("Velocità"); - LSTR MSG_BED_Z = _UxGT("Piatto Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Piatto Z"); LSTR MSG_NOZZLE = _UxGT("Ugello"); LSTR MSG_NOZZLE_N = _UxGT("Ugello ~"); LSTR MSG_NOZZLE_PARKED = _UxGT("Ugello parcheggiato"); diff --git a/Marlin/src/lcd/language/language_jp_kana.h b/Marlin/src/lcd/language/language_jp_kana.h index 335d4533da..8ed1a7865e 100644 --- a/Marlin/src/lcd/language/language_jp_kana.h +++ b/Marlin/src/lcd/language/language_jp_kana.h @@ -102,7 +102,7 @@ namespace Language_jp_kana { LSTR MSG_MOVE_50MM = _UxGT(" 50mm イドウ"); // "Move 50mm" LSTR MSG_MOVE_100MM = _UxGT(" 100mm イドウ"); // "Move 100mm" LSTR MSG_SPEED = _UxGT("ソクド"); // "Speed" - LSTR MSG_BED_Z = _UxGT("Zオフセット"); // "Bed Z" + LSTR MSG_MESH_Z_OFFSET = _UxGT("Zオフセット"); // "Bed Z" LSTR MSG_NOZZLE = _UxGT("ノズル"); // "Nozzle" LSTR MSG_BED = _UxGT("ベッド"); // "Bed" LSTR MSG_FAN_SPEED = _UxGT("ファンソクド"); // "Fan speed" diff --git a/Marlin/src/lcd/language/language_nl.h b/Marlin/src/lcd/language/language_nl.h index 9ad16bcd8c..6397a95a7e 100644 --- a/Marlin/src/lcd/language/language_nl.h +++ b/Marlin/src/lcd/language/language_nl.h @@ -93,7 +93,7 @@ namespace Language_nl { LSTR MSG_MOVE_10MM = _UxGT("Verplaats 10mm"); LSTR MSG_MOVE_100MM = _UxGT("Verplaats 100mm"); LSTR MSG_SPEED = _UxGT("Snelheid"); - LSTR MSG_BED_Z = _UxGT("Bed Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); LSTR MSG_NOZZLE = _UxGT("Nozzle"); LSTR MSG_NOZZLE_N = _UxGT("Nozzle ~"); LSTR MSG_BED = _UxGT("Bed"); diff --git a/Marlin/src/lcd/language/language_pl.h b/Marlin/src/lcd/language/language_pl.h index b39c084ec8..15d6a29053 100644 --- a/Marlin/src/lcd/language/language_pl.h +++ b/Marlin/src/lcd/language/language_pl.h @@ -248,7 +248,7 @@ namespace Language_pl { LSTR MSG_MOVE_001IN = _UxGT("Przesuń co 0.01 cala"); LSTR MSG_MOVE_01IN = _UxGT("Przesuń co 0.1 cala"); LSTR MSG_SPEED = _UxGT("Predkość"); - LSTR MSG_BED_Z = _UxGT("Stół Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Stół Z"); LSTR MSG_NOZZLE = _UxGT("Dysza"); LSTR MSG_NOZZLE_N = _UxGT("Dysza ~"); LSTR MSG_NOZZLE_STANDBY = _UxGT("Dysza w oczekiwaniu"); diff --git a/Marlin/src/lcd/language/language_pt.h b/Marlin/src/lcd/language/language_pt.h index 55d9c1d7c5..4d9a8ae6da 100644 --- a/Marlin/src/lcd/language/language_pt.h +++ b/Marlin/src/lcd/language/language_pt.h @@ -87,7 +87,7 @@ namespace Language_pt { LSTR MSG_MOVE_10MM = _UxGT("Mover 10mm"); LSTR MSG_MOVE_100MM = _UxGT("Mover 100mm"); LSTR MSG_SPEED = _UxGT("Velocidade"); - LSTR MSG_BED_Z = _UxGT("Base Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Base Z"); LSTR MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" Bico"); LSTR MSG_NOZZLE_N = " " LCD_STR_THERMOMETER _UxGT(" Bico ~"); LSTR MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" Base"); diff --git a/Marlin/src/lcd/language/language_pt_br.h b/Marlin/src/lcd/language/language_pt_br.h index d52728d107..1bd3f61682 100644 --- a/Marlin/src/lcd/language/language_pt_br.h +++ b/Marlin/src/lcd/language/language_pt_br.h @@ -219,7 +219,7 @@ namespace Language_pt_br { LSTR MSG_MOVE_10MM = _UxGT("Mover 10mm"); LSTR MSG_MOVE_100MM = _UxGT("Mover 100mm"); LSTR MSG_SPEED = _UxGT("Velocidade"); - LSTR MSG_BED_Z = _UxGT("Base Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Base Z"); LSTR MSG_NOZZLE = _UxGT("Bocal"); LSTR MSG_NOZZLE_N = _UxGT("Bocal ~"); LSTR MSG_BED = _UxGT("Mesa"); diff --git a/Marlin/src/lcd/language/language_ro.h b/Marlin/src/lcd/language/language_ro.h index c5fdcc786f..162f3a3616 100644 --- a/Marlin/src/lcd/language/language_ro.h +++ b/Marlin/src/lcd/language/language_ro.h @@ -232,7 +232,7 @@ namespace Language_ro { LSTR MSG_MOVE_10MM = _UxGT("Move 10mm"); LSTR MSG_MOVE_100MM = _UxGT("Move 100mm"); LSTR MSG_SPEED = _UxGT("Speed"); - LSTR MSG_BED_Z = _UxGT("Bed Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); LSTR MSG_NOZZLE = _UxGT("Nozzle"); LSTR MSG_NOZZLE_N = _UxGT("Nozzle ~"); LSTR MSG_NOZZLE_PARKED = _UxGT("Nozzle Parked"); diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index b9cb0c5ebf..75579972a2 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -342,7 +342,7 @@ namespace Language_ru { LSTR MSG_MOVE_10MM = _UxGT("Движение 10мм"); LSTR MSG_MOVE_100MM = _UxGT("Движение 100mm"); LSTR MSG_SPEED = _UxGT("Скорость"); - LSTR MSG_BED_Z = _UxGT("Z стола"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Z стола"); LSTR MSG_NOZZLE = _UxGT("Сопло, ") LCD_STR_DEGREE _UxGT("C"); LSTR MSG_NOZZLE_N = _UxGT("Сопло ~"); LSTR MSG_NOZZLE_PARKED = _UxGT("Сопло запарковано"); diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h index 4167fc802a..0e00ce4b12 100644 --- a/Marlin/src/lcd/language/language_sk.h +++ b/Marlin/src/lcd/language/language_sk.h @@ -327,7 +327,7 @@ namespace Language_sk { LSTR MSG_MOVE_1IN = _UxGT("Posunúť o 1,0in"); LSTR MSG_LIVE_MOVE = _UxGT("Živý pohyb"); LSTR MSG_SPEED = _UxGT("Rýchlosť"); - LSTR MSG_BED_Z = _UxGT("Výška podl."); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Výška podl."); LSTR MSG_NOZZLE = _UxGT("Tryska"); LSTR MSG_NOZZLE_N = _UxGT("Tryska ~"); LSTR MSG_NOZZLE_PARKED = _UxGT("Tryska zaparkovaná"); diff --git a/Marlin/src/lcd/language/language_sv.h b/Marlin/src/lcd/language/language_sv.h index e550e877a1..c7e6c19bd7 100644 --- a/Marlin/src/lcd/language/language_sv.h +++ b/Marlin/src/lcd/language/language_sv.h @@ -262,7 +262,7 @@ namespace Language_sv { LSTR MSG_MOVE_001IN = _UxGT("Flytta 0.01tum"); LSTR MSG_MOVE_01IN = _UxGT("Flytta 0.1tum"); LSTR MSG_SPEED = _UxGT("Hastighet"); - LSTR MSG_BED_Z = _UxGT("Bädd Z"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Bädd Z"); LSTR MSG_NOZZLE = _UxGT("Munstycke"); LSTR MSG_NOZZLE_N = _UxGT("Munstycke ~"); LSTR MSG_NOZZLE_PARKED = _UxGT("Munstycke Parkerad"); diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h index 5ff8ab7b48..cb3c6a03ae 100644 --- a/Marlin/src/lcd/language/language_tr.h +++ b/Marlin/src/lcd/language/language_tr.h @@ -235,7 +235,7 @@ namespace Language_tr { LSTR MSG_MOVE_10MM = _UxGT("10mm"); LSTR MSG_MOVE_100MM = _UxGT("100mm"); LSTR MSG_SPEED = _UxGT("Hız"); - LSTR MSG_BED_Z = _UxGT("Z Mesafesi"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Mesafesi"); LSTR MSG_NOZZLE = _UxGT("Nozul"); LSTR MSG_NOZZLE_N = _UxGT("Nozul ~"); LSTR MSG_BED = _UxGT("Tabla"); diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h index f4e7741f93..dc03265524 100644 --- a/Marlin/src/lcd/language/language_uk.h +++ b/Marlin/src/lcd/language/language_uk.h @@ -343,7 +343,7 @@ namespace Language_uk { LSTR MSG_MOVE_10MM = _UxGT("Рух 10мм"); LSTR MSG_MOVE_100MM = _UxGT("Рух 100mm"); LSTR MSG_SPEED = _UxGT("Швидкість"); - LSTR MSG_BED_Z = _UxGT("Z Столу"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Столу"); LSTR MSG_NOZZLE = _UxGT("Сопло, ") LCD_STR_DEGREE _UxGT("C"); LSTR MSG_NOZZLE_N = _UxGT("Сопло ~"); LSTR MSG_NOZZLE_PARKED = _UxGT("Сопло запарковане"); diff --git a/Marlin/src/lcd/language/language_vi.h b/Marlin/src/lcd/language/language_vi.h index 575191f50b..c01b2f44fa 100644 --- a/Marlin/src/lcd/language/language_vi.h +++ b/Marlin/src/lcd/language/language_vi.h @@ -207,7 +207,7 @@ namespace Language_vi { LSTR MSG_MOVE_10MM = _UxGT("Di chuyển 10mm"); // Move 10mm LSTR MSG_MOVE_100MM = _UxGT("Di chuyển 100mm"); // Move 100mm LSTR MSG_SPEED = _UxGT("Tốc độ"); // Speed - LSTR MSG_BED_Z = _UxGT("Z Bàn"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Bàn"); LSTR MSG_NOZZLE = _UxGT("Đầu phun"); // Nozzle LSTR MSG_NOZZLE_N = _UxGT("Đầu phun ~"); LSTR MSG_BED = _UxGT("Bàn"); // bed diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h index 6e2864ce6f..4dccbc4f09 100644 --- a/Marlin/src/lcd/language/language_zh_CN.h +++ b/Marlin/src/lcd/language/language_zh_CN.h @@ -232,7 +232,7 @@ namespace Language_zh_CN { LSTR MSG_MOVE_10MM = _UxGT("移动 10 mm"); // "Move 10mm" LSTR MSG_MOVE_100MM = _UxGT("移动 100 mm"); // "Move 100mm" LSTR MSG_SPEED = _UxGT("速率"); // "Speed" - LSTR MSG_BED_Z = _UxGT("热床Z"); // "Bed Z" + LSTR MSG_MESH_Z_OFFSET = _UxGT("热床Z"); // "Bed Z" LSTR MSG_NOZZLE = _UxGT("喷嘴"); // "Nozzle" 噴嘴 LSTR MSG_NOZZLE_N = _UxGT("喷嘴 ~"); // "Nozzle" 噴嘴 LSTR MSG_NOZZLE_PARKED = _UxGT("喷嘴已停靠"); diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h index 79d4ba75a7..4ba94f3014 100644 --- a/Marlin/src/lcd/language/language_zh_TW.h +++ b/Marlin/src/lcd/language/language_zh_TW.h @@ -229,7 +229,7 @@ namespace Language_zh_TW { LSTR MSG_MOVE_50MM = _UxGT("移動 50 mm"); // "Move 50mm" LSTR MSG_MOVE_100MM = _UxGT("移動 100 mm"); // "Move 100mm" LSTR MSG_SPEED = _UxGT("速率"); // "Speed" - LSTR MSG_BED_Z = _UxGT("熱床Z"); // "Bed Z" + LSTR MSG_MESH_Z_OFFSET = _UxGT("熱床Z"); // "Bed Z" LSTR MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴"); // "Nozzle" 噴嘴 LSTR MSG_NOZZLE_N = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ~"); LSTR MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" 熱床"); // "Bed" diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 5d264198a3..d10ae7c5cc 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -1831,7 +1831,7 @@ void MarlinUI::init() { #endif } - #if EITHER(BABYSTEP_ZPROBE_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) + #if EITHER(BABYSTEP_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) void MarlinUI::zoffset_overlay(const_float_t zvalue) { // Determine whether the user is raising or lowering the nozzle. static int8_t dir; diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index 827a71a29d..fa18878c1b 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -506,7 +506,7 @@ public: static bool old_is_printing; #endif - #if EITHER(BABYSTEP_ZPROBE_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) + #if EITHER(BABYSTEP_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) static void zoffset_overlay(const int8_t dir); static void zoffset_overlay(const_float_t zvalue); #endif diff --git a/Marlin/src/lcd/menu/menu.cpp b/Marlin/src/lcd/menu/menu.cpp index 6389383d28..7f55f79f03 100644 --- a/Marlin/src/lcd/menu/menu.cpp +++ b/Marlin/src/lcd/menu/menu.cpp @@ -321,7 +321,7 @@ void scroll_screen(const uint8_t limit, const bool is_menu) { if (ui.should_draw()) { if (do_probe) { MenuEditItemBase::draw_edit_screen(GET_TEXT_F(MSG_ZPROBE_ZOFFSET), BABYSTEP_TO_STR(probe.offset.z)); - TERN_(BABYSTEP_ZPROBE_GFX_OVERLAY, ui.zoffset_overlay(probe.offset.z)); + TERN_(BABYSTEP_GFX_OVERLAY, ui.zoffset_overlay(probe.offset.z)); } else { #if ENABLED(BABYSTEP_HOTEND_Z_OFFSET) diff --git a/Marlin/src/lcd/menu/menu_bed_leveling.cpp b/Marlin/src/lcd/menu/menu_bed_leveling.cpp index 9505a82dd7..d25d35011e 100644 --- a/Marlin/src/lcd/menu/menu_bed_leveling.cpp +++ b/Marlin/src/lcd/menu/menu_bed_leveling.cpp @@ -283,7 +283,7 @@ void menu_bed_leveling() { #else #define LCD_Z_OFFSET_TYPE float42_52 // Values from -99.99 to 99.99 #endif - EDIT_ITEM(LCD_Z_OFFSET_TYPE, MSG_BED_Z, &bedlevel.z_offset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX); + EDIT_ITEM(LCD_Z_OFFSET_TYPE, MSG_MESH_Z_OFFSET, &bedlevel.z_offset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX); #endif #if ENABLED(BABYSTEP_ZPROBE_OFFSET) diff --git a/Marlin/src/lcd/menu/menu_tune.cpp b/Marlin/src/lcd/menu/menu_tune.cpp index 423af4e5a1..8c4b2b1cfc 100644 --- a/Marlin/src/lcd/menu/menu_tune.cpp +++ b/Marlin/src/lcd/menu/menu_tune.cpp @@ -120,7 +120,7 @@ void menu_tune() { // Manual bed leveling, Bed Z: // #if BOTH(MESH_BED_LEVELING, LCD_BED_LEVELING) - EDIT_ITEM(float43, MSG_BED_Z, &bedlevel.z_offset, -1, 1); + EDIT_ITEM(float43, MSG_MESH_Z_OFFSET, &bedlevel.z_offset, -1, 1); #endif // diff --git a/buildroot/tests/FYSETC_F6 b/buildroot/tests/FYSETC_F6 index 24fe550157..5129ff9807 100755 --- a/buildroot/tests/FYSETC_F6 +++ b/buildroot/tests/FYSETC_F6 @@ -11,7 +11,7 @@ set -e # restore_configs opt_set MOTHERBOARD BOARD_FYSETC_F6_13 LCD_SERIAL_PORT 1 DGUS_LCD_UI FYSETC -exec_test $1 $2 "FYSETC F6 1.3 with DGUS" "$3" +exec_test $1 $2 "FYSETC F6 1.3 with DGUS (FYSETC)" "$3" # # Delta Config (generic) + UBL + ALLEN_KEY + EEPROM_SETTINGS + OLED_PANEL_TINYBOY2 diff --git a/buildroot/tests/LPC1768 b/buildroot/tests/LPC1768 index 2e680b60d7..37cc705c0c 100755 --- a/buildroot/tests/LPC1768 +++ b/buildroot/tests/LPC1768 @@ -44,7 +44,7 @@ opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER ADAPTIVE_FAN_SLOWING TE FILAMENT_WIDTH_SENSOR FILAMENT_LCD_DISPLAY PID_EXTRUSION_SCALING SOUND_MENU_ITEM \ NOZZLE_AS_PROBE AUTO_BED_LEVELING_BILINEAR PREHEAT_BEFORE_LEVELING G29_RETRY_AND_RECOVER Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \ ASSISTED_TRAMMING ASSISTED_TRAMMING_WIZARD REPORT_TRAMMING_MM ASSISTED_TRAMMING_WAIT_POSITION \ - BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET BABYSTEP_ZPROBE_GFX_OVERLAY \ + BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET BABYSTEP_GFX_OVERLAY \ PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE SLOW_PWM_HEATERS PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT \ Z_SAFE_HOMING ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE \ HOST_KEEPALIVE_FEATURE HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT \ diff --git a/buildroot/tests/SAMD21_minitronics20 b/buildroot/tests/SAMD21_minitronics20 index 420495bb76..b46fb9f08a 100755 --- a/buildroot/tests/SAMD21_minitronics20 +++ b/buildroot/tests/SAMD21_minitronics20 @@ -24,7 +24,7 @@ opt_enable ENDSTOP_INTERRUPTS_FEATURE BLTOUCH Z_MIN_PROBE_REPEATABILITY_TEST \ STATUS_MESSAGE_SCROLLING SET_PROGRESS_MANUALLY SHOW_REMAINING_TIME SET_REMAINING_TIME \ LONG_FILENAME_HOST_SUPPORT CUSTOM_FIRMWARE_UPLOAD M20_TIMESTAMP_SUPPORT \ SCROLL_LONG_FILENAMES BABYSTEPPING DOUBLECLICK_FOR_Z_BABYSTEPPING \ - MOVE_Z_WHEN_IDLE BABYSTEP_ZPROBE_OFFSET BABYSTEP_ZPROBE_GFX_OVERLAY \ + MOVE_Z_WHEN_IDLE BABYSTEP_ZPROBE_OFFSET BABYSTEP_GFX_OVERLAY \ LIN_ADVANCE ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE MONITOR_DRIVER_STATUS SENSORLESS_HOMING \ SQUARE_WAVE_STEPPING exec_test $1 $2 "Minitronics 2.0 with assorted features" "$3" diff --git a/buildroot/tests/SAMD51_grandcentral_m4 b/buildroot/tests/SAMD51_grandcentral_m4 index ef67e061fe..042733072d 100755 --- a/buildroot/tests/SAMD51_grandcentral_m4 +++ b/buildroot/tests/SAMD51_grandcentral_m4 @@ -24,7 +24,7 @@ opt_enable ENDSTOP_INTERRUPTS_FEATURE S_CURVE_ACCELERATION BLTOUCH Z_MIN_PROBE_R STATUS_MESSAGE_SCROLLING SET_PROGRESS_MANUALLY SHOW_REMAINING_TIME SET_REMAINING_TIME \ LONG_FILENAME_HOST_SUPPORT CUSTOM_FIRMWARE_UPLOAD M20_TIMESTAMP_SUPPORT \ SCROLL_LONG_FILENAMES BABYSTEPPING DOUBLECLICK_FOR_Z_BABYSTEPPING \ - MOVE_Z_WHEN_IDLE BABYSTEP_ZPROBE_OFFSET BABYSTEP_ZPROBE_GFX_OVERLAY \ + MOVE_Z_WHEN_IDLE BABYSTEP_ZPROBE_OFFSET BABYSTEP_GFX_OVERLAY \ LIN_ADVANCE ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE MONITOR_DRIVER_STATUS SENSORLESS_HOMING \ SQUARE_WAVE_STEPPING TMC_DEBUG exec_test $1 $2 "Grand Central M4 with assorted features" "$3" diff --git a/buildroot/tests/teensy35 b/buildroot/tests/teensy35 index bcb8e944a1..ec12082909 100755 --- a/buildroot/tests/teensy35 +++ b/buildroot/tests/teensy35 @@ -24,7 +24,7 @@ opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT SDCARD_SORT_A LCD_INFO_MENU LCD_PRINTER_INFO_IS_BOOTSCREEN LARGE_MOVE_ITEMS TURBO_BACK_MENU_ITEM PREHEAT_SHORTCUT_MENU_ITEM \ FILAMENT_WIDTH_SENSOR FILAMENT_LCD_DISPLAY CALIBRATION_GCODE BAUD_RATE_GCODE SOUND_MENU_ITEM \ FIX_MOUNTED_PROBE Z_SAFE_HOMING AUTO_BED_LEVELING_BILINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \ - BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET BABYSTEP_ZPROBE_GFX_OVERLAY \ + BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET BABYSTEP_GFX_OVERLAY \ PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE SLOW_PWM_HEATERS PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT M100_FREE_MEMORY_WATCHER \ ADVANCED_PAUSE_FEATURE ARC_SUPPORT BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES PARK_HEAD_ON_PAUSE \ PHOTO_GCODE PHOTO_POSITION PHOTO_SWITCH_POSITION PHOTO_SWITCH_MS PHOTO_DELAY_MS PHOTO_RETRACT_MM \ From 9db5bd000b6a07b8dcb6d6568df8411efe57a133 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davide=20Rombol=C3=A0?= Date: Sat, 18 Feb 2023 10:49:57 +0100 Subject: [PATCH 035/659] =?UTF-8?q?=E2=9C=A8=20IA=5FCREALITY=20screen=20ro?= =?UTF-8?q?tation=20(#25397)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration.h | 2 ++ Marlin/src/lcd/extui/ia_creality/creality_extui.cpp | 4 +++- buildroot/tests/FYSETC_F6 | 8 ++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 6363b79360..480520e28e 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -3048,6 +3048,8 @@ //#define DGUS_LCD_UI ORIGIN #if DGUS_UI_IS(MKS) #define USE_MKS_GREEN_UI +#elif DGUS_UI_IS(IA_CREALITY) + //#define LCD_SCREEN_ROTATE 90 // Portrait Mode or 800x480 displays #endif // diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp index 0275902557..fed5fc7165 100644 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp +++ b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp @@ -1682,8 +1682,10 @@ namespace ExtUI { | (Settings.display_sound ? _BV(3) : 0) // 3: audio | (Settings.display_standby ? _BV(2) : 0) // 2: backlight on standby | (Settings.screen_rotation == 10 ? _BV(1) : 0) // 1 & 0: Inversion - #if EITHER(MachineCR10Smart, MachineCR10SmartPro) + #if LCD_SCREEN_ROTATE == 90 | _BV(0) // Portrait Mode or 800x480 display has 0 point rotated 90deg from 480x272 display + #elif LCD_SCREEN_ROTATE + #error "Only 90° rotation is supported for the selected LCD." #endif ; diff --git a/buildroot/tests/FYSETC_F6 b/buildroot/tests/FYSETC_F6 index 5129ff9807..d970a23590 100755 --- a/buildroot/tests/FYSETC_F6 +++ b/buildroot/tests/FYSETC_F6 @@ -13,6 +13,14 @@ restore_configs opt_set MOTHERBOARD BOARD_FYSETC_F6_13 LCD_SERIAL_PORT 1 DGUS_LCD_UI FYSETC exec_test $1 $2 "FYSETC F6 1.3 with DGUS (FYSETC)" "$3" +# +# Test IA_CREALITY +# +restore_configs +opt_set MOTHERBOARD BOARD_FYSETC_F6_13 LCD_SERIAL_PORT 1 DGUS_LCD_UI IA_CREALITY LCD_SCREEN_ROTATE 90 +opt_enable ADVANCED_PAUSE_FEATURE LCD_BED_TRAMMING CLASSIC_JERK BABYSTEPPING AUTO_BED_LEVELING_BILINEAR NOZZLE_PARK_FEATURE PROBE_MANUALLY +exec_test $1 $2 "FYSETC F6 1.3 with DGUS (IA_CREALITY)" "$3" + # # Delta Config (generic) + UBL + ALLEN_KEY + EEPROM_SETTINGS + OLED_PANEL_TINYBOY2 # From 786c666151dede1f972c189f2151fe266f9bc7ec Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 19 Feb 2023 00:23:11 +0000 Subject: [PATCH 036/659] [cron] Bump distribution date (2023-02-19) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 745788f05a..23e0c15cd9 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-18" +//#define STRING_DISTRIBUTION_DATE "2023-02-19" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index c0e9542b44..c2d07f32c8 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-18" + #define STRING_DISTRIBUTION_DATE "2023-02-19" #endif /** From c950f0f5d1e6804365506d1718e0a4029fb232cf Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 19 Feb 2023 11:41:50 -0600 Subject: [PATCH 037/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Ext?= =?UTF-8?q?UI::onPowerLoss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/powerloss.cpp | 7 +++++++ Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp | 3 +++ Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp | 3 +++ Marlin/src/lcd/extui/dgus/dgus_extui.cpp | 3 +++ .../src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp | 3 +++ Marlin/src/lcd/extui/example/example.cpp | 3 +++ .../src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp | 7 ++++++- Marlin/src/lcd/extui/ia_creality/creality_extui.cpp | 9 ++++++--- Marlin/src/lcd/extui/malyan/malyan_extui.cpp | 7 ++++++- Marlin/src/lcd/extui/nextion/nextion_extui.cpp | 3 +++ Marlin/src/lcd/extui/ui_api.h | 1 + Marlin/src/libs/numtostr.h | 2 +- 12 files changed, 45 insertions(+), 6 deletions(-) diff --git a/Marlin/src/feature/powerloss.cpp b/Marlin/src/feature/powerloss.cpp index 1037f823f6..faec893928 100644 --- a/Marlin/src/feature/powerloss.cpp +++ b/Marlin/src/feature/powerloss.cpp @@ -31,6 +31,10 @@ #include "powerloss.h" #include "../core/macros.h" +#if ENABLED(EXTENSIBLE_UI) + #include "../lcd/extui/ui_api.h" +#endif + bool PrintJobRecovery::enabled; // Initialized by settings.load() MediaFile PrintJobRecovery::file; @@ -313,6 +317,9 @@ void PrintJobRecovery::save(const bool force/*=false*/, const float zraise/*=POW // and a flag whether the raise was already done here. if (IS_SD_PRINTING()) save(true, zraise, ENABLED(BACKUP_POWER_SUPPLY)); + // Tell the LCD about the outage, even though it is about to die + TERN_(EXTENSIBLE_UI, ExtUI::onPowerLoss()); + // Disable all heaters to reduce power loss thermalManager.disable_all_heaters(); diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp b/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp index 75061c162a..39b328d808 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp @@ -120,6 +120,9 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) + void onPowerLoss() { + // Called when power-loss state is detected + } // Called on resume from power-loss void onPowerLossResume() { Chiron.PowerLossRecovery(); } #endif diff --git a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp index 40a670b5b0..afe88bf583 100644 --- a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp @@ -106,6 +106,9 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) + void onPowerLoss() { + // Called when power-loss state is detected + } void onPowerLossResume() { // Called on resume from power-loss } diff --git a/Marlin/src/lcd/extui/dgus/dgus_extui.cpp b/Marlin/src/lcd/extui/dgus/dgus_extui.cpp index 382c5eb1be..2f3bbd64cc 100644 --- a/Marlin/src/lcd/extui/dgus/dgus_extui.cpp +++ b/Marlin/src/lcd/extui/dgus/dgus_extui.cpp @@ -126,6 +126,9 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) + void onPowerLoss() { + // Called when power-loss state is detected + } void onPowerLossResume() { // Called on resume from power-loss IF_DISABLED(DGUS_LCD_UI_MKS, ScreenHandler.GotoScreen(DGUSLCD_SCREEN_POWER_LOSS)); diff --git a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp index 1ff22da268..9aecf65f98 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp @@ -123,6 +123,9 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) + void onPowerLoss() { + // Called when power-loss state is detected + } void onPowerLossResume() { // Called on resume from power-loss dgus_screen_handler.PowerLossResume(); diff --git a/Marlin/src/lcd/extui/example/example.cpp b/Marlin/src/lcd/extui/example/example.cpp index 27269a9bee..a5e816efd8 100644 --- a/Marlin/src/lcd/extui/example/example.cpp +++ b/Marlin/src/lcd/extui/example/example.cpp @@ -112,6 +112,9 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) + void onPowerLoss() { + // Called when power-loss state is detected + } void onPowerLossResume() { // Called on resume from power-loss } diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp index 84de2c5871..159847bde1 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp @@ -125,7 +125,12 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) - void onPowerLossResume() {} // Called on resume from power-loss + void onPowerLoss() { + // Called when power-loss state is detected + } + void onPowerLossResume() { + // Called on resume from power-loss + } #endif #if HAS_PID_HEATING diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp index fed5fc7165..d27d68aad4 100644 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp +++ b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp @@ -436,7 +436,7 @@ namespace ExtUI { case DGUS_HEADER2_SEEN: // Waiting for the length byte rx_datagram_len = DWIN_SERIAL.read(); - //DEBUGLCDCOMM_ECHOPAIR(" (", rx_datagram_len, ") "); + //DEBUGLCDCOMM_ECHOPGM(" (", rx_datagram_len, ") "); // Telegram min len is 3 (command and one word of payload) rx_datagram_state = WITHIN(rx_datagram_len, 3, DGUS_RX_BUFFER_SIZE) ? DGUS_WAIT_TELEGRAM : DGUS_IDLE; @@ -448,14 +448,14 @@ namespace ExtUI { Initialized = true; // We've talked to it, so we defined it as initialized. uint8_t command = DWIN_SERIAL.read(); - //DEBUGLCDCOMM_ECHOPAIR("# ", command); + //DEBUGLCDCOMM_ECHOPGM("# ", command); uint8_t readlen = rx_datagram_len - 1; // command is part of len. uint8_t tmp[rx_datagram_len - 1]; uint8_t *ptmp = tmp; while (readlen--) { receivedbyte = DWIN_SERIAL.read(); - //DEBUGLCDCOMM_ECHOPAIR(" ", receivedbyte); + //DEBUGLCDCOMM_ECHOPGM(" ", receivedbyte); *ptmp++ = receivedbyte; } //DEBUGLCDCOMM_ECHOPGM(" # "); @@ -2016,6 +2016,9 @@ namespace ExtUI { } #if ENABLED(POWER_LOSS_RECOVERY) + void onPowerLoss() { + // Called when power-loss state is detected + } void onPowerLossResume() { startprogress = 254; InforShowStatus = true; diff --git a/Marlin/src/lcd/extui/malyan/malyan_extui.cpp b/Marlin/src/lcd/extui/malyan/malyan_extui.cpp index 8ed319e35c..b978937def 100644 --- a/Marlin/src/lcd/extui/malyan/malyan_extui.cpp +++ b/Marlin/src/lcd/extui/malyan/malyan_extui.cpp @@ -158,7 +158,12 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) - void onPowerLossResume() {} + void onPowerLoss() { + // Called when power-loss state is detected + } + void onPowerLossResume() { + // Called on resume from power-loss + } #endif void onSteppersDisabled() {} diff --git a/Marlin/src/lcd/extui/nextion/nextion_extui.cpp b/Marlin/src/lcd/extui/nextion/nextion_extui.cpp index 0e84fd33cf..433bbfbe8b 100644 --- a/Marlin/src/lcd/extui/nextion/nextion_extui.cpp +++ b/Marlin/src/lcd/extui/nextion/nextion_extui.cpp @@ -103,6 +103,9 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) + void onPowerLoss() { + // Called when power-loss state is detected + } void onPowerLossResume() { // Called on resume from power-loss } diff --git a/Marlin/src/lcd/extui/ui_api.h b/Marlin/src/lcd/extui/ui_api.h index b48dc94f8f..46f0891bb7 100644 --- a/Marlin/src/lcd/extui/ui_api.h +++ b/Marlin/src/lcd/extui/ui_api.h @@ -426,6 +426,7 @@ namespace ExtUI { void onSettingsStored(bool success); void onSettingsLoaded(bool success); #if ENABLED(POWER_LOSS_RECOVERY) + void onPowerLoss(); void onPowerLossResume(); #endif #if HAS_PID_HEATING diff --git a/Marlin/src/libs/numtostr.h b/Marlin/src/libs/numtostr.h index 047b22cd17..0c8ce0f79a 100644 --- a/Marlin/src/libs/numtostr.h +++ b/Marlin/src/libs/numtostr.h @@ -56,7 +56,7 @@ const char* ui16tostr3rj(const uint16_t x); // Convert int16_t to string with 123 format const char* i16tostr3rj(const int16_t x); -// Convert unsigned int to lj string with 123 format +// Convert signed int to lj string with 123 format const char* i16tostr3left(const int16_t xx); // Convert signed int to rj string with _123, -123, _-12, or __-1 format From d67e701b757b49fb2f9a5a54f276658f84fdb231 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 20 Feb 2023 00:25:06 +0000 Subject: [PATCH 038/659] [cron] Bump distribution date (2023-02-20) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 23e0c15cd9..4fff768a0e 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-19" +//#define STRING_DISTRIBUTION_DATE "2023-02-20" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index c2d07f32c8..8c147a501e 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-19" + #define STRING_DISTRIBUTION_DATE "2023-02-20" #endif /** From 4f212e50b6ad402ae34e7c9ed35ec9168bae6221 Mon Sep 17 00:00:00 2001 From: Anson Liu Date: Mon, 20 Feb 2023 19:49:15 -0500 Subject: [PATCH 039/659] =?UTF-8?q?=E2=9C=A8=20TC=5FGCODE=5FUSE=5FGLOBAL?= =?UTF-8?q?=5F*=20(#25399)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration_adv.h | 14 +++++-- Marlin/src/inc/Conditionals_adv.h | 7 ++++ Marlin/src/inc/SanityCheck.h | 6 +++ Marlin/src/module/tool_change.cpp | 69 ++++++++++++++++++++++++------- buildroot/tests/BIGTREE_GTR_V1_0 | 2 +- 5 files changed, 80 insertions(+), 18 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 7e224ae61c..cdf32e490a 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2556,9 +2556,17 @@ * Extra G-code to run while executing tool-change commands. Can be used to use an additional * stepper motor (e.g., I axis in Configuration.h) to drive the tool-changer. */ - //#define EVENT_GCODE_TOOLCHANGE_T0 "G28 A\nG1 A0" // Extra G-code to run while executing tool-change command T0 - //#define EVENT_GCODE_TOOLCHANGE_T1 "G1 A10" // Extra G-code to run while executing tool-change command T1 - //#define EVENT_GCODE_TOOLCHANGE_ALWAYS_RUN // Always execute above G-code sequences. Use with caution! + //#define EVENT_GCODE_TOOLCHANGE_T0 "G28 A\nG1 A0" // Extra G-code to run while executing tool-change command T0 + //#define EVENT_GCODE_TOOLCHANGE_T1 "G1 A10" // Extra G-code to run while executing tool-change command T1 + //#define EVENT_GCODE_TOOLCHANGE_ALWAYS_RUN // Always execute above G-code sequences. Use with caution! + + /** + * Consider coordinates for EVENT_GCODE_TOOLCHANGE_Tx as relative to T0 + * so that moves in the specified axes are the same for all tools. + */ + //#define TC_GCODE_USE_GLOBAL_X // Use X position relative to Tool 0 + //#define TC_GCODE_USE_GLOBAL_Y // Use Y position relative to Tool 0 + //#define TC_GCODE_USE_GLOBAL_Z // Use Z position relative to Tool 0 /** * Tool Sensors detect when tools have been picked up or dropped. diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index ad89824347..6c6f1f585a 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -1152,3 +1152,10 @@ #if EITHER(INPUT_SHAPING_X, INPUT_SHAPING_Y) #define HAS_SHAPING 1 #endif + +// Toolchange Event G-code +#if !HAS_MULTI_EXTRUDER || !(defined(EVENT_GCODE_TOOLCHANGE_T0) || defined(EVENT_GCODE_TOOLCHANGE_T1) || defined(EVENT_GCODE_TOOLCHANGE_T2) || defined(EVENT_GCODE_TOOLCHANGE_T3) || defined(EVENT_GCODE_TOOLCHANGE_T4) || defined(EVENT_GCODE_TOOLCHANGE_T5) || defined(EVENT_GCODE_TOOLCHANGE_T6) || defined(EVENT_GCODE_TOOLCHANGE_T7)) + #undef TC_GCODE_USE_GLOBAL_X + #undef TC_GCODE_USE_GLOBAL_Y + #undef TC_GCODE_USE_GLOBAL_Z +#endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 12d281b704..d011fb18f0 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1015,9 +1015,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #endif #endif +/** + * Custom Event G-code + */ #if defined(EVENT_GCODE_SD_ABORT) && DISABLED(NOZZLE_PARK_FEATURE) static_assert(nullptr == strstr(EVENT_GCODE_SD_ABORT, "G27"), "NOZZLE_PARK_FEATURE is required to use G27 in EVENT_GCODE_SD_ABORT."); #endif +#if ANY(TC_GCODE_USE_GLOBAL_X, TC_GCODE_USE_GLOBAL_Y, TC_GCODE_USE_GLOBAL_Z) && ENABLED(NO_WORKSPACE_OFFSETS) + #error "TC_GCODE_USE_GLOBAL_* options are incompatible with NO_WORKSPACE_OFFSETS." +#endif /** * I2C Position Encoders diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index 16b562e482..0defced87e 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -30,6 +30,7 @@ #include "temperature.h" #include "../MarlinCore.h" +#include "../gcode/gcode.h" //#define DEBUG_TOOL_CHANGE //#define DEBUG_TOOLCHANGE_FILAMENT_SWAP @@ -49,12 +50,6 @@ Flags toolchange_extruder_ready; #endif -#if EITHER(MAGNETIC_PARKING_EXTRUDER, TOOL_SENSOR) \ - || defined(EVENT_GCODE_TOOLCHANGE_T0) || defined(EVENT_GCODE_TOOLCHANGE_T1) || defined(EVENT_GCODE_AFTER_TOOLCHANGE) \ - || (ENABLED(PARKING_EXTRUDER) && PARKING_EXTRUDER_SOLENOIDS_DELAY > 0) - #include "../gcode/gcode.h" -#endif - #if ENABLED(TOOL_SENSOR) #include "../lcd/marlinui.h" #endif @@ -98,7 +93,6 @@ #endif #if ENABLED(TOOLCHANGE_FILAMENT_SWAP) - #include "../gcode/gcode.h" #if TOOLCHANGE_FS_WIPE_RETRACT <= 0 #undef TOOLCHANGE_FS_WIPE_RETRACT #define TOOLCHANGE_FS_WIPE_RETRACT 0 @@ -986,7 +980,7 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. } #endif - //Calculate and perform the priming distance + // Calculate and perform the priming distance if (toolchange_settings.extra_prime >= 0) { // Positive extra_prime value // - Return filament at speed (fr) then extra_prime at prime speed @@ -1409,14 +1403,61 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { TERN_(HAS_FANMUX, fanmux_switch(active_extruder)); if (ENABLED(EVENT_GCODE_TOOLCHANGE_ALWAYS_RUN) || !no_move) { - #ifdef EVENT_GCODE_TOOLCHANGE_T0 - if (new_tool == 0) - gcode.process_subcommands_now(F(EVENT_GCODE_TOOLCHANGE_T0)); + + #if ANY(TC_GCODE_USE_GLOBAL_X, TC_GCODE_USE_GLOBAL_Y, TC_GCODE_USE_GLOBAL_Z) + // G0/G1/G2/G3/G5 moves are relative to the active tool. + // Shift the workspace to make custom moves relative to T0. + xyz_pos_t old_position_shift; + if (new_tool > 0) { + old_position_shift = position_shift; + const xyz_pos_t &he = hotend_offset[new_tool]; + #if ENABLED(TC_GCODE_USE_GLOBAL_X) + position_shift.x -= he.x; update_workspace_offset(X_AXIS); + #endif + #if ENABLED(TC_GCODE_USE_GLOBAL_Y) + position_shift.y -= he.y; update_workspace_offset(Y_AXIS); + #endif + #if ENABLED(TC_GCODE_USE_GLOBAL_Z) + position_shift.z -= he.z; update_workspace_offset(Z_AXIS); + #endif + } #endif - #ifdef EVENT_GCODE_TOOLCHANGE_T1 - if (new_tool == 1) - gcode.process_subcommands_now(F(EVENT_GCODE_TOOLCHANGE_T1)); + switch (new_tool) { + default: break; + #ifdef EVENT_GCODE_TOOLCHANGE_T0 + case 0: gcode.process_subcommands_now(F(EVENT_GCODE_TOOLCHANGE_T0)); break; + #endif + #ifdef EVENT_GCODE_TOOLCHANGE_T1 + case 1: gcode.process_subcommands_now(F(EVENT_GCODE_TOOLCHANGE_T1)); break; + #endif + #ifdef EVENT_GCODE_TOOLCHANGE_T2 + case 2: gcode.process_subcommands_now(F(EVENT_GCODE_TOOLCHANGE_T2)); break; + #endif + #ifdef EVENT_GCODE_TOOLCHANGE_T3 + case 3: gcode.process_subcommands_now(F(EVENT_GCODE_TOOLCHANGE_T3)); break; + #endif + #ifdef EVENT_GCODE_TOOLCHANGE_T4 + case 4: gcode.process_subcommands_now(F(EVENT_GCODE_TOOLCHANGE_T4)); break; + #endif + #ifdef EVENT_GCODE_TOOLCHANGE_T5 + case 5: gcode.process_subcommands_now(F(EVENT_GCODE_TOOLCHANGE_T5)); break; + #endif + #ifdef EVENT_GCODE_TOOLCHANGE_T6 + case 6: gcode.process_subcommands_now(F(EVENT_GCODE_TOOLCHANGE_T6)); break; + #endif + #ifdef EVENT_GCODE_TOOLCHANGE_T7 + case 7: gcode.process_subcommands_now(F(EVENT_GCODE_TOOLCHANGE_T7)); break; + #endif + } + + #if ANY(TC_GCODE_USE_GLOBAL_X, TC_GCODE_USE_GLOBAL_Y, TC_GCODE_USE_GLOBAL_Z) + if (new_tool > 0) { + position_shift = old_position_shift; + TERN_(TC_GCODE_USE_GLOBAL_X, update_workspace_offset(X_AXIS)); + TERN_(TC_GCODE_USE_GLOBAL_Y, update_workspace_offset(Y_AXIS)); + TERN_(TC_GCODE_USE_GLOBAL_Z, update_workspace_offset(Z_AXIS)); + } #endif #ifdef EVENT_GCODE_AFTER_TOOLCHANGE diff --git a/buildroot/tests/BIGTREE_GTR_V1_0 b/buildroot/tests/BIGTREE_GTR_V1_0 index d6eccaff07..09e36d6475 100755 --- a/buildroot/tests/BIGTREE_GTR_V1_0 +++ b/buildroot/tests/BIGTREE_GTR_V1_0 @@ -25,7 +25,7 @@ opt_set MOTHERBOARD BOARD_BTT_GTR_V1_0 SERIAL_PORT -1 \ Z_DRIVER_TYPE A4988 Z2_DRIVER_TYPE A4988 Z3_DRIVER_TYPE A4988 Z4_DRIVER_TYPE A4988 \ DEFAULT_Kp_LIST '{ 22.2, 20.0, 21.0, 19.0, 18.0 }' DEFAULT_Ki_LIST '{ 1.08 }' DEFAULT_Kd_LIST '{ 114.0, 112.0, 110.0, 108.0 }' opt_enable TOOLCHANGE_FILAMENT_SWAP TOOLCHANGE_MIGRATION_FEATURE TOOLCHANGE_FS_SLOW_FIRST_PRIME TOOLCHANGE_FS_PRIME_FIRST_USED \ - PID_PARAMS_PER_HOTEND Z_MULTI_ENDSTOPS + PID_PARAMS_PER_HOTEND Z_MULTI_ENDSTOPS TC_GCODE_USE_GLOBAL_X TC_GCODE_USE_GLOBAL_Y exec_test $1 $2 "BigTreeTech GTR | 6 Extruders | Quad Z + Endstops" "$3" restore_configs From 0f745468a17c3e6130e3830fcb3210703ebaacee Mon Sep 17 00:00:00 2001 From: lukasradek Date: Tue, 21 Feb 2023 01:57:15 +0100 Subject: [PATCH 040/659] =?UTF-8?q?=F0=9F=94=A7=20Up=20to=209=20tramming?= =?UTF-8?q?=20points=20(#25293)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration_adv.h | 2 +- Marlin/src/core/macros.h | 13 ++++++++ Marlin/src/feature/tramming.cpp | 28 +++------------- Marlin/src/feature/tramming.h | 57 ++++++++++++++------------------- buildroot/tests/DUE | 3 +- 5 files changed, 44 insertions(+), 59 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index cdf32e490a..b607588568 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1034,7 +1034,7 @@ //#define ASSISTED_TRAMMING #if ENABLED(ASSISTED_TRAMMING) - // Define positions for probe points. + // Define from 3 to 9 points to probe. #define TRAMMING_POINT_XY { { 20, 20 }, { 180, 20 }, { 180, 180 }, { 20, 180 } } // Define position names for probe points. diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h index c20cd17a7e..9a014d5d92 100644 --- a/Marlin/src/core/macros.h +++ b/Marlin/src/core/macros.h @@ -717,6 +717,19 @@ #define RREPEAT2_S(S,N,OP,V...) EVAL1024(_RREPEAT2(S,SUB##S(N),OP,V)) #define RREPEAT2(N,OP,V...) RREPEAT2_S(0,N,OP,V) +// Emit a list of N OP(I) items with ascending counter. +#define _REPLIST(_RPT_I,_RPT_N,_RPT_OP) \ + _RPT_OP(_RPT_I) \ + IF_ELSE(SUB1(_RPT_N)) \ + ( , DEFER2(__REPLIST)()(ADD1(_RPT_I),SUB1(_RPT_N),_RPT_OP) ) \ + ( /* Do nothing */ ) +#define __REPLIST() _REPLIST + +// Repeat a macro, comma-separated, passing S...N-1. +#define REPLIST_S(S,N,OP) EVAL(_REPLIST(S,SUB##S(N),OP)) +#define REPLIST(N,OP) REPLIST_S(0,N,OP) +#define REPLIST_1(N,OP) REPLIST_S(1,INCREMENT(N),OP) + // Call OP(A) with each item as an argument #define _MAP(_MAP_OP,A,V...) \ _MAP_OP(A) \ diff --git a/Marlin/src/feature/tramming.cpp b/Marlin/src/feature/tramming.cpp index d03f0cf53b..3721c5eb81 100644 --- a/Marlin/src/feature/tramming.cpp +++ b/Marlin/src/feature/tramming.cpp @@ -29,31 +29,11 @@ #define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE) #include "../core/debug_out.h" -PGMSTR(point_name_1, TRAMMING_POINT_NAME_1); -PGMSTR(point_name_2, TRAMMING_POINT_NAME_2); -PGMSTR(point_name_3, TRAMMING_POINT_NAME_3); -#ifdef TRAMMING_POINT_NAME_4 - PGMSTR(point_name_4, TRAMMING_POINT_NAME_4); - #ifdef TRAMMING_POINT_NAME_5 - PGMSTR(point_name_5, TRAMMING_POINT_NAME_5); - #ifdef TRAMMING_POINT_NAME_6 - PGMSTR(point_name_6, TRAMMING_POINT_NAME_6); - #endif - #endif -#endif +#define _TRAM_NAME_DEF(N) PGMSTR(point_name_##N, TRAMMING_POINT_NAME_##N); +#define _TRAM_NAME_ITEM(N) point_name_##N +REPEAT_1(_NR_TRAM_NAMES, _TRAM_NAME_DEF) -PGM_P const tramming_point_name[] PROGMEM = { - point_name_1, point_name_2, point_name_3 - #ifdef TRAMMING_POINT_NAME_4 - , point_name_4 - #ifdef TRAMMING_POINT_NAME_5 - , point_name_5 - #ifdef TRAMMING_POINT_NAME_6 - , point_name_6 - #endif - #endif - #endif -}; +PGM_P const tramming_point_name[] PROGMEM = { REPLIST_1(_NR_TRAM_NAMES, _TRAM_NAME_ITEM) }; #ifdef ASSISTED_TRAMMING_WAIT_POSITION diff --git a/Marlin/src/feature/tramming.h b/Marlin/src/feature/tramming.h index 925659e29d..c8f20f0010 100644 --- a/Marlin/src/feature/tramming.h +++ b/Marlin/src/feature/tramming.h @@ -31,43 +31,34 @@ constexpr xy_pos_t tramming_points[] = TRAMMING_POINT_XY; #define G35_PROBE_COUNT COUNT(tramming_points) -static_assert(WITHIN(G35_PROBE_COUNT, 3, 6), "TRAMMING_POINT_XY requires between 3 and 6 XY positions."); +static_assert(WITHIN(G35_PROBE_COUNT, 3, 9), "TRAMMING_POINT_XY requires between 3 and 9 XY positions."); -#define VALIDATE_TRAMMING_POINT(N) static_assert(N >= G35_PROBE_COUNT || Probe::build_time::can_reach(tramming_points[N]), \ - "TRAMMING_POINT_XY point " STRINGIFY(N) " is not reachable with the default NOZZLE_TO_PROBE offset and PROBING_MARGIN.") -VALIDATE_TRAMMING_POINT(0); VALIDATE_TRAMMING_POINT(1); VALIDATE_TRAMMING_POINT(2); VALIDATE_TRAMMING_POINT(3); VALIDATE_TRAMMING_POINT(4); VALIDATE_TRAMMING_POINT(5); - -extern const char point_name_1[], point_name_2[], point_name_3[] - #ifdef TRAMMING_POINT_NAME_4 - , point_name_4[] - #ifdef TRAMMING_POINT_NAME_5 - , point_name_5[] - #ifdef TRAMMING_POINT_NAME_6 - , point_name_6[] - #endif - #endif - #endif -; - -#define _NR_TRAM_NAMES 2 -#ifdef TRAMMING_POINT_NAME_3 - #undef _NR_TRAM_NAMES +#ifdef TRAMMING_POINT_NAME_9 + #define _NR_TRAM_NAMES 9 +#elif defined(TRAMMING_POINT_NAME_8) + #define _NR_TRAM_NAMES 8 +#elif defined(TRAMMING_POINT_NAME_7) + #define _NR_TRAM_NAMES 7 +#elif defined(TRAMMING_POINT_NAME_6) + #define _NR_TRAM_NAMES 6 +#elif defined(TRAMMING_POINT_NAME_5) + #define _NR_TRAM_NAMES 5 +#elif defined(TRAMMING_POINT_NAME_4) + #define _NR_TRAM_NAMES 4 +#elif defined(TRAMMING_POINT_NAME_3) #define _NR_TRAM_NAMES 3 - #ifdef TRAMMING_POINT_NAME_4 - #undef _NR_TRAM_NAMES - #define _NR_TRAM_NAMES 4 - #ifdef TRAMMING_POINT_NAME_5 - #undef _NR_TRAM_NAMES - #define _NR_TRAM_NAMES 5 - #ifdef TRAMMING_POINT_NAME_6 - #undef _NR_TRAM_NAMES - #define _NR_TRAM_NAMES 6 - #endif - #endif - #endif +#else + #define _NR_TRAM_NAMES 0 #endif + static_assert(_NR_TRAM_NAMES >= G35_PROBE_COUNT, "Define enough TRAMMING_POINT_NAME_s for all TRAMMING_POINT_XY entries."); -#undef _NR_TRAM_NAMES + +#define _TRAM_NAME_PTR(N) point_name_##N[] +extern const char REPLIST_1(_NR_TRAM_NAMES, _TRAM_NAME_PTR); + +#define _CHECK_TRAM_POINT(N) static_assert(Probe::build_time::can_reach(tramming_points[N]), "TRAMMING_POINT_XY point " STRINGIFY(N) " is not reachable with the default NOZZLE_TO_PROBE offset and PROBING_MARGIN."); +REPEAT(_NR_TRAM_NAMES, _CHECK_TRAM_POINT) +#undef _CHECK_TRAM_POINT extern PGM_P const tramming_point_name[]; diff --git a/buildroot/tests/DUE b/buildroot/tests/DUE index a2f3fda7a7..4ed234ab3a 100755 --- a/buildroot/tests/DUE +++ b/buildroot/tests/DUE @@ -12,7 +12,8 @@ opt_set MOTHERBOARD BOARD_RAMPS4DUE_EFB \ TEMP_SENSOR_0 -2 TEMP_SENSOR_BED 2 \ GRID_MAX_POINTS_X 16 \ E0_AUTO_FAN_PIN 8 FANMUX0_PIN 53 EXTRUDER_AUTO_FAN_SPEED 100 \ - TEMP_SENSOR_CHAMBER 3 TEMP_CHAMBER_PIN 6 HEATER_CHAMBER_PIN 45 + TEMP_SENSOR_CHAMBER 3 TEMP_CHAMBER_PIN 6 HEATER_CHAMBER_PIN 45 \ + TRAMMING_POINT_XY '{{20,20},{20,20},{20,20},{20,20},{20,20}}' TRAMMING_POINT_NAME_5 '"Point 5"' opt_enable S_CURVE_ACCELERATION EEPROM_SETTINGS GCODE_MACROS \ FIX_MOUNTED_PROBE Z_SAFE_HOMING CODEPENDENT_XY_HOMING \ ASSISTED_TRAMMING REPORT_TRAMMING_MM ASSISTED_TRAMMING_WAIT_POSITION \ From e002f4fd38fc8557a3e6d029f03396607ace9e50 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Tue, 21 Feb 2023 13:58:40 +1300 Subject: [PATCH 041/659] =?UTF-8?q?=F0=9F=93=BA=20Update=20Re-ARM=20VIKI2?= =?UTF-8?q?=20SPI=20pins=20(#25411)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h index fe424c800a..9a210e1607 100644 --- a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h +++ b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h @@ -354,8 +354,8 @@ #if EITHER(VIKI2, miniVIKI) #define DOGLCD_CS P0_16 // (16) #define DOGLCD_A0 P2_06 // (59) J3-8 & AUX-2 - #define DOGLCD_SCK SD_SCK_PIN - #define DOGLCD_MOSI SD_MOSI_PIN + #define DOGLCD_SCK P0_15 // (52) (SCK) J3-9 & AUX-3 + #define DOGLCD_MOSI P0_18 // (51) (MOSI) J3-10 & AUX-3 #define STAT_LED_BLUE_PIN P0_26 // (63) may change if cable changes #define STAT_LED_RED_PIN P1_21 // ( 6) may change if cable changes From 03a43786703d84f1b8c6374755b2764aeb9e04eb Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Tue, 21 Feb 2023 15:25:22 +1300 Subject: [PATCH 042/659] =?UTF-8?q?=F0=9F=94=A7=20Sanity-check=20hotend=20?= =?UTF-8?q?max=20/=20preheat=20temps=20(#25407)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/core/macros.h | 9 +- Marlin/src/inc/Conditionals_adv.h | 82 +++++++++++++++---- Marlin/src/lcd/marlinui.cpp | 2 +- Marlin/src/module/temperature.cpp | 16 +++- .../src/module/thermistor/thermistor_2000.h | 12 +-- 5 files changed, 94 insertions(+), 27 deletions(-) diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h index 9a014d5d92..65fba21094 100644 --- a/Marlin/src/core/macros.h +++ b/Marlin/src/core/macros.h @@ -712,10 +712,11 @@ ( DEFER2(__RREPEAT2)()(ADD1(_RPT_I),SUB1(_RPT_N),_RPT_OP,V) ) \ ( /* Do nothing */ ) #define __RREPEAT2() _RREPEAT2 -#define RREPEAT_S(S,N,OP) EVAL1024(_RREPEAT(S,SUB##S(N),OP)) -#define RREPEAT(N,OP) RREPEAT_S(0,N,OP) -#define RREPEAT2_S(S,N,OP,V...) EVAL1024(_RREPEAT2(S,SUB##S(N),OP,V)) -#define RREPEAT2(N,OP,V...) RREPEAT2_S(0,N,OP,V) +#define RREPEAT_S(S,N,OP) EVAL1024(_RREPEAT(S,SUB##S(N),OP)) +#define RREPEAT(N,OP) RREPEAT_S(0,N,OP) +#define RREPEAT_1(N,OP) RREPEAT_S(1,INCREMENT(N),OP) +#define RREPEAT2_S(S,N,OP,V...) EVAL1024(_RREPEAT2(S,SUB##S(N),OP,V)) +#define RREPEAT2(N,OP,V...) RREPEAT2_S(0,N,OP,V) // Emit a list of N OP(I) items with ascending counter. #define _REPLIST(_RPT_I,_RPT_N,_RPT_OP) \ diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 6c6f1f585a..436b6194da 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -223,13 +223,12 @@ #define TEMP_SENSOR_0_IS_AD8495 1 #elif TEMP_SENSOR_0 == -1 #define TEMP_SENSOR_0_IS_AD595 1 +#elif TEMP_SENSOR_0 == 1000 + #define TEMP_SENSOR_0_IS_CUSTOM 1 +#elif TEMP_SENSOR_0 == 998 || TEMP_SENSOR_0 == 999 + #define TEMP_SENSOR_0_IS_DUMMY 1 #elif TEMP_SENSOR_0 > 0 #define TEMP_SENSOR_0_IS_THERMISTOR 1 - #if TEMP_SENSOR_0 == 1000 - #define TEMP_SENSOR_0_IS_CUSTOM 1 - #elif TEMP_SENSOR_0 == 998 || TEMP_SENSOR_0 == 999 - #define TEMP_SENSOR_0_IS_DUMMY 1 - #endif #else #undef HEATER_0_MINTEMP #undef HEATER_0_MAXTEMP @@ -269,13 +268,12 @@ #define TEMP_SENSOR_1_IS_AD8495 1 #elif TEMP_SENSOR_1 == -1 #define TEMP_SENSOR_1_IS_AD595 1 +#elif TEMP_SENSOR_1 == 1000 + #define TEMP_SENSOR_1_IS_CUSTOM 1 +#elif TEMP_SENSOR_1 == 998 || TEMP_SENSOR_1 == 999 + #define TEMP_SENSOR_1_IS_DUMMY 1 #elif TEMP_SENSOR_1 > 0 #define TEMP_SENSOR_1_IS_THERMISTOR 1 - #if TEMP_SENSOR_1 == 1000 - #define TEMP_SENSOR_1_IS_CUSTOM 1 - #elif TEMP_SENSOR_1 == 998 || TEMP_SENSOR_1 == 999 - #define TEMP_SENSOR_1_IS_DUMMY 1 - #endif #else #undef HEATER_1_MINTEMP #undef HEATER_1_MAXTEMP @@ -315,18 +313,72 @@ #define TEMP_SENSOR_2_IS_AD8495 1 #elif TEMP_SENSOR_2 == -1 #define TEMP_SENSOR_2_IS_AD595 1 +#elif TEMP_SENSOR_2 == 1000 + #define TEMP_SENSOR_2_IS_CUSTOM 1 +#elif TEMP_SENSOR_2 == 998 || TEMP_SENSOR_2 == 999 + #define TEMP_SENSOR_2_IS_DUMMY 1 #elif TEMP_SENSOR_2 > 0 #define TEMP_SENSOR_2_IS_THERMISTOR 1 - #if TEMP_SENSOR_2 == 1000 - #define TEMP_SENSOR_2_IS_CUSTOM 1 - #elif TEMP_SENSOR_2 == 998 || TEMP_SENSOR_2 == 999 - #define TEMP_SENSOR_2_IS_DUMMY 1 - #endif #else #undef HEATER_2_MINTEMP #undef HEATER_2_MAXTEMP #endif +#if TEMP_SENSOR_3 == 1000 + #define TEMP_SENSOR_3_IS_CUSTOM 1 +#elif TEMP_SENSOR_3 == 998 || TEMP_SENSOR_3 == 999 + #define TEMP_SENSOR_3_IS_DUMMY 1 +#elif TEMP_SENSOR_3 > 0 + #define TEMP_SENSOR_3_IS_THERMISTOR 1 +#elif !TEMP_SENSOR_3 + #undef HEATER_3_MINTEMP + #undef HEATER_3_MAXTEMP +#endif + +#if TEMP_SENSOR_4 == 1000 + #define TEMP_SENSOR_4_IS_CUSTOM 1 +#elif TEMP_SENSOR_4 == 998 || TEMP_SENSOR_4 == 999 + #define TEMP_SENSOR_4_IS_DUMMY 1 +#elif TEMP_SENSOR_4 > 0 + #define TEMP_SENSOR_4_IS_THERMISTOR 1 +#elif !TEMP_SENSOR_4 + #undef HEATER_4_MINTEMP + #undef HEATER_4_MAXTEMP +#endif + +#if TEMP_SENSOR_5 == 1000 + #define TEMP_SENSOR_5_IS_CUSTOM 1 +#elif TEMP_SENSOR_5 == 998 || TEMP_SENSOR_5 == 999 + #define TEMP_SENSOR_5_IS_DUMMY 1 +#elif TEMP_SENSOR_5 > 0 + #define TEMP_SENSOR_5_IS_THERMISTOR 1 +#elif !TEMP_SENSOR_5 + #undef HEATER_5_MINTEMP + #undef HEATER_5_MAXTEMP +#endif + +#if TEMP_SENSOR_6 == 1000 + #define TEMP_SENSOR_6_IS_CUSTOM 1 +#elif TEMP_SENSOR_6 == 998 || TEMP_SENSOR_6 == 999 + #define TEMP_SENSOR_6_IS_DUMMY 1 +#elif TEMP_SENSOR_6 > 0 + #define TEMP_SENSOR_6_IS_THERMISTOR 1 +#elif !TEMP_SENSOR_6 + #undef HEATER_6_MINTEMP + #undef HEATER_6_MAXTEMP +#endif + +#if TEMP_SENSOR_7 == 1000 + #define TEMP_SENSOR_7_IS_CUSTOM 1 +#elif TEMP_SENSOR_7 == 998 || TEMP_SENSOR_7 == 999 + #define TEMP_SENSOR_7_IS_DUMMY 1 +#elif TEMP_SENSOR_7 > 0 + #define TEMP_SENSOR_7_IS_THERMISTOR 1 +#elif !TEMP_SENSOR_7 + #undef HEATER_7_MINTEMP + #undef HEATER_7_MAXTEMP +#endif + #if TEMP_SENSOR_IS_MAX_TC(REDUNDANT) #if TEMP_SENSOR_REDUNDANT == -5 #if !REDUNDANT_TEMP_MATCH(SOURCE, E0) && !REDUNDANT_TEMP_MATCH(SOURCE, E1) && !REDUNDANT_TEMP_MATCH(SOURCE, E2) diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index d10ae7c5cc..aa1ccb17c2 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -149,7 +149,7 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; const preheat_t &pre = material_preset[m]; TERN_(HAS_HOTEND, if (TEST(pmask, PT_HOTEND)) thermalManager.setTargetHotend(pre.hotend_temp, e)); TERN_(HAS_HEATED_BED, if (TEST(pmask, PT_BED)) thermalManager.setTargetBed(pre.bed_temp)); - //TERN_(HAS_HEATED_CHAMBER, if (TEST(pmask, PT_CHAMBER)) thermalManager.setTargetBed(pre.chamber_temp)); + //TERN_(HAS_HEATED_CHAMBER, if (TEST(pmask, PT_CHAMBER)) thermalManager.setTargetChamber(pre.chamber_temp)); TERN_(HAS_FAN, if (TEST(pmask, PT_FAN)) thermalManager.set_fan_speed(0, pre.fan_speed)); } #endif diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index f3a1dc7afe..fc3149d4f0 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -317,8 +317,22 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); #if HAS_HOTEND hotend_info_t Temperature::temp_hotend[HOTENDS]; - #define _HMT(N) HEATER_##N##_MAXTEMP, const celsius_t Temperature::hotend_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP, HEATER_5_MAXTEMP, HEATER_6_MAXTEMP, HEATER_7_MAXTEMP); + + // Sanity-check max readable temperatures + #define CHECK_MAXTEMP_(N,M,S) static_assert( \ + S >= 998 || M <= _MAX(TT_NAME(S)[0].celsius, TT_NAME(S)[COUNT(TT_NAME(S)) - 1].celsius) - HOTEND_OVERSHOOT, \ + "HEATER_" STRINGIFY(N) "_MAXTEMP (" STRINGIFY(M) ") is too high for thermistor_" STRINGIFY(S) ".h with HOTEND_OVERSHOOT=" STRINGIFY(HOTEND_OVERSHOOT) "."); + #define CHECK_MAXTEMP(N) TERN(TEMP_SENSOR_##N##_IS_THERMISTOR, CHECK_MAXTEMP_, CODE_0)(N, HEATER_##N##_MAXTEMP, TEMP_SENSOR_##N) + REPEAT(HOTENDS, CHECK_MAXTEMP) + + #if HAS_PREHEAT + #define CHECK_PREHEAT__(N,P,T,M) static_assert(T <= M - HOTEND_OVERSHOOT, "PREHEAT_" STRINGIFY(P) "_TEMP_HOTEND (" STRINGIFY(T) ") must be less than HEATER_" STRINGIFY(N) "_MAXTEMP (" STRINGIFY(M) ") - " STRINGIFY(HOTEND_OVERSHOOT) "."); + #define CHECK_PREHEAT_(N,P) CHECK_PREHEAT__(N, P, PREHEAT_##P##_TEMP_HOTEND, HEATER_##N##_MAXTEMP); + #define CHECK_PREHEAT(P) REPEAT2(HOTENDS, CHECK_PREHEAT_, P); + RREPEAT_1(PREHEAT_COUNT, CHECK_PREHEAT) + #endif + #endif #if HAS_TEMP_REDUNDANT diff --git a/Marlin/src/module/thermistor/thermistor_2000.h b/Marlin/src/module/thermistor/thermistor_2000.h index 3815a6f256..6393c980ea 100644 --- a/Marlin/src/module/thermistor/thermistor_2000.h +++ b/Marlin/src/module/thermistor/thermistor_2000.h @@ -23,12 +23,12 @@ // R25 = 100 KOhm, beta25 = 4550 K, 4.7 kOhm pull-up, TDK NTCG104LH104KT1 https://product.tdk.com/en/search/sensor/ntc/chip-ntc-thermistor/info?part_no=NTCG104LH104KT1 constexpr temp_entry_t temptable_2000[] PROGMEM = { -{ OV(313), 125 }, -{ OV(347), 120 }, -{ OV(383), 115 }, -{ OV(422), 110 }, -{ OV(463), 105 }, -{ OV(506), 100 }, +{ OV(313), 125 }, +{ OV(347), 120 }, +{ OV(383), 115 }, +{ OV(422), 110 }, +{ OV(463), 105 }, +{ OV(506), 100 }, { OV(549), 95 }, { OV(594), 90 }, { OV(638), 85 }, From 122d4a89f6f151db0e8cb3396b49b743b6211d8f Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 21 Feb 2023 06:06:25 +0000 Subject: [PATCH 043/659] [cron] Bump distribution date (2023-02-21) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 4fff768a0e..1e19985a35 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-20" +//#define STRING_DISTRIBUTION_DATE "2023-02-21" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 8c147a501e..1a54011d8c 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-20" + #define STRING_DISTRIBUTION_DATE "2023-02-21" #endif /** From babd3b0037d660f52cccbb295b8839b8dd744036 Mon Sep 17 00:00:00 2001 From: DerAndere <26200979+DerAndere1@users.noreply.github.com> Date: Tue, 21 Feb 2023 19:26:10 +0100 Subject: [PATCH 044/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Add?= =?UTF-8?q?=20get=5Fmove=5Fdistance=20for=20rotation/kinematics=20(#25370)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/motion.cpp | 103 +++++++++++++++++++++++++++++++++- Marlin/src/module/motion.h | 2 + Marlin/src/module/planner.cpp | 102 +++++++++++---------------------- Marlin/src/module/planner.h | 5 ++ 4 files changed, 139 insertions(+), 73 deletions(-) diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index b32368ca92..9d43db48c7 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -1059,6 +1059,88 @@ FORCE_INLINE void segment_idle(millis_t &next_idle_ms) { thermalManager.task(); // Returns immediately on most calls } +/** + * Get distance from displacements along axes and, if required, update move type. + */ +float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool &is_cartesian_move)) { + if (!(NUM_AXIS_GANG(diff.x, || diff.y, /* skip z */, || diff.i, || diff.j, || diff.k, || diff.u, || diff.v, || diff.w))) + return TERN0(HAS_Z_AXIS, ABS(diff.z)); + + #if ENABLED(ARTICULATED_ROBOT_ARM) + + // For articulated robots, interpreting feedrate like LinuxCNC would require inverse kinematics. As a workaround, pretend that motors sit on n mutually orthogonal + // axes and assume that we could think of distance as magnitude of an n-vector in an n-dimensional Euclidian space. + const float distance_sqr = NUM_AXIS_GANG( + sq(diff.x), + sq(diff.y), + sq(diff.z), + + sq(diff.i), + sq(diff.j), + sq(diff.k), + + sq(diff.u), + sq(diff.v), + sq(diff.w) + ); + + #elif ENABLED(FOAMCUTTER_XYUV) + + const float distance_sqr = ( + #if HAS_J_AXIS + _MAX(sq(diff.x) + sq(diff.y), sq(diff.i) + sq(diff.j)) // Special 5 axis kinematics. Return the larger of plane X/Y or I/J + #else + sq(diff.x) + sq(diff.y) // Foamcutter with only two axes (XY) + #endif + ); + + #else + + /** + * Calculate distance for feedrate interpretation in accordance with NIST RS274NGC interpreter - version 3) and its default CANON_XYZ feed reference mode. + * Assume: + * - X, Y, Z are the primary linear axes; + * - U, V, W are secondary linear axes; + * - A, B, C are rotational axes. + * + * Then: + * - dX, dY, dZ are the displacements of the primary linear axes; + * - dU, dV, dW are the displacements of linear axes; + * - dA, dB, dC are the displacements of rotational axes. + * + * The time it takes to execute a move command with feedrate F is t = D/F, + * plus any time for acceleration and deceleration. + * Here, D is the total distance, calculated as follows: + * + * D^2 = dX^2 + dY^2 + dZ^2 + * if D^2 == 0 (none of XYZ move but any secondary linear axes move, whether other axes are moved or not): + * D^2 = dU^2 + dV^2 + dW^2 + * if D^2 == 0 (only rotational axes are moved): + * D^2 = dA^2 + dB^2 + dC^2 + */ + float distance_sqr = XYZ_GANG(sq(diff.x), + sq(diff.y), + sq(diff.z)); + + #if SECONDARY_LINEAR_AXES + if (UNEAR_ZERO(distance_sqr)) { + // Move does not involve any primary linear axes (xyz) but might involve secondary linear axes + distance_sqr = ( + SECONDARY_AXIS_GANG( + IF_DISABLED(AXIS4_ROTATES, + sq(diff.i)), + IF_DISABLED(AXIS5_ROTATES, + sq(diff.j)), + IF_DISABLED(AXIS6_ROTATES, + sq(diff.k)), + IF_DISABLED(AXIS7_ROTATES, + sq(diff.u)), + IF_DISABLED(AXIS8_ROTATES, + sq(diff.v)), + IF_DISABLED(AXIS9_ROTATES, + sq(diff.w)) + ) + ); + } + #endif + + #if HAS_ROTATIONAL_AXES + if (UNEAR_ZERO(distance_sqr)) { + // Move involves only rotational axes. Calculate angular distance in accordance with LinuxCNC + is_cartesian_move = false; + distance_sqr = ROTATIONAL_AXIS_GANG(sq(diff.i), + sq(diff.j), + sq(diff.k), + sq(diff.u), + sq(diff.v), + sq(diff.w)); + } + #endif + + #endif + + return SQRT(distance_sqr); +} + #if IS_KINEMATIC #if IS_SCARA @@ -1109,7 +1191,10 @@ FORCE_INLINE void segment_idle(millis_t &next_idle_ms) { if (!position_is_reachable(destination)) return true; // Get the linear distance in XYZ - float cartesian_mm = xyz_float_t(diff).magnitude(); + #if HAS_ROTATIONAL_AXES + bool cartes_move = true; + #endif + float cartesian_mm = get_move_distance(diff OPTARG(HAS_ROTATIONAL_AXES, cartes_move)); // If the move is very short, check the E move distance TERN_(HAS_EXTRUDERS, if (UNEAR_ZERO(cartesian_mm)) cartesian_mm = ABS(diff.e)); @@ -1118,7 +1203,13 @@ FORCE_INLINE void segment_idle(millis_t &next_idle_ms) { if (UNEAR_ZERO(cartesian_mm)) return true; // Minimum number of seconds to move the given distance - const float seconds = cartesian_mm / scaled_fr_mm_s; + const float seconds = cartesian_mm / ( + #if BOTH(HAS_ROTATIONAL_AXES, INCH_MODE_SUPPORT) + cartes_move ? scaled_fr_mm_s : LINEAR_UNIT(scaled_fr_mm_s) + #else + scaled_fr_mm_s + #endif + ); // The number of segments-per-second times the duration // gives the number of segments @@ -1140,6 +1231,7 @@ FORCE_INLINE void segment_idle(millis_t &next_idle_ms) { // Add hints to help optimize the move PlannerHints hints(cartesian_mm * inv_segments); + TERN_(HAS_ROTATIONAL_AXES, hints.cartesian_move = cartes_move); TERN_(FEEDRATE_SCALING, hints.inv_duration = scaled_fr_mm_s / hints.millimeters); /* @@ -1190,9 +1282,13 @@ FORCE_INLINE void segment_idle(millis_t &next_idle_ms) { } // Get the linear distance in XYZ + #if HAS_ROTATIONAL_AXES + bool cartes_move = true; + #endif + float cartesian_mm = get_move_distance(diff OPTARG(HAS_ROTATIONAL_AXES, cartes_move)); + // If the move is very short, check the E move distance // No E move either? Game over. - float cartesian_mm = diff.magnitude(); TERN_(HAS_EXTRUDERS, if (UNEAR_ZERO(cartesian_mm)) cartesian_mm = ABS(diff.e)); if (UNEAR_ZERO(cartesian_mm)) return; @@ -1207,6 +1303,7 @@ FORCE_INLINE void segment_idle(millis_t &next_idle_ms) { // Add hints to help optimize the move PlannerHints hints(cartesian_mm * inv_segments); + TERN_(HAS_ROTATIONAL_AXES, hints.cartesian_move = cartes_move); TERN_(FEEDRATE_SCALING, hints.inv_duration = scaled_fr_mm_s / hints.millimeters); //SERIAL_ECHOPGM("mm=", cartesian_mm); diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index f0e4094f0f..2acc54ebc2 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -302,6 +302,8 @@ void report_current_position_projected(); #endif #endif +float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool &is_cartesian_move)); + void get_cartesian_from_steppers(); void set_current_from_steppers_for_axis(const AxisEnum axis); diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 46aff32481..ff5449d230 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -2130,8 +2130,8 @@ bool Planner::_populate_block( TERN_(LCD_SHOW_E_TOTAL, e_move_accumulator += steps_dist_mm.e); - #if BOTH(HAS_ROTATIONAL_AXES, INCH_MODE_SUPPORT) - bool cartesian_move = true; + #if HAS_ROTATIONAL_AXES + bool cartesian_move = hints.cartesian_move; #endif if (true NUM_AXIS_GANG( @@ -2152,71 +2152,34 @@ bool Planner::_populate_block( if (hints.millimeters) block->millimeters = hints.millimeters; else { - /** - * Distance for interpretation of feedrate in accordance with LinuxCNC (the successor of NIST - * RS274NGC interpreter - version 3) and its default CANON_XYZ feed reference mode. - * Assume that X, Y, Z are the primary linear axes and U, V, W are secondary linear axes and A, B, C are - * rotational axes. Then dX, dY, dZ are the displacements of the primary linear axes and dU, dV, dW are the displacements of linear axes and - * dA, dB, dC are the displacements of rotational axes. - * The time it takes to execute move command with feedrate F is t = D/F, where D is the total distance, calculated as follows: - * D^2 = dX^2 + dY^2 + dZ^2 - * if D^2 == 0 (none of XYZ move but any secondary linear axes move, whether other axes are moved or not): - * D^2 = dU^2 + dV^2 + dW^2 - * if D^2 == 0 (only rotational axes are moved): - * D^2 = dA^2 + dB^2 + dC^2 - */ - float distance_sqr = ( - #if ENABLED(ARTICULATED_ROBOT_ARM) - // For articulated robots, interpreting feedrate like LinuxCNC would require inverse kinematics. As a workaround, pretend that motors sit on n mutually orthogonal - // axes and assume that we could think of distance as magnitude of an n-vector in an n-dimensional Euclidian space. - NUM_AXIS_GANG( - sq(steps_dist_mm.x), + sq(steps_dist_mm.y), + sq(steps_dist_mm.z), - + sq(steps_dist_mm.i), + sq(steps_dist_mm.j), + sq(steps_dist_mm.k), - + sq(steps_dist_mm.u), + sq(steps_dist_mm.v), + sq(steps_dist_mm.w) - ) - #elif ENABLED(FOAMCUTTER_XYUV) - #if HAS_J_AXIS - // Special 5 axis kinematics. Return the largest distance move from either X/Y or I/J plane - _MAX(sq(steps_dist_mm.x) + sq(steps_dist_mm.y), sq(steps_dist_mm.i) + sq(steps_dist_mm.j)) - #else // Foamcutter with only two axes (XY) - sq(steps_dist_mm.x) + sq(steps_dist_mm.y) - #endif - #elif ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) - XYZ_GANG(sq(steps_dist_mm.head.x), + sq(steps_dist_mm.head.y), + sq(steps_dist_mm.z)) + const xyze_pos_t displacement = LOGICAL_AXIS_ARRAY( + steps_dist_mm.e, + #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) + steps_dist_mm.head.x, + steps_dist_mm.head.y, + steps_dist_mm.z, #elif CORE_IS_XZ - XYZ_GANG(sq(steps_dist_mm.head.x), + sq(steps_dist_mm.y), + sq(steps_dist_mm.head.z)) + steps_dist_mm.head.x, + steps_dist_mm.y, + steps_dist_mm.head.z, #elif CORE_IS_YZ - XYZ_GANG(sq(steps_dist_mm.x), + sq(steps_dist_mm.head.y), + sq(steps_dist_mm.head.z)) + steps_dist_mm.x, + steps_dist_mm.head.y, + steps_dist_mm.head.z, #else - XYZ_GANG(sq(steps_dist_mm.x), + sq(steps_dist_mm.y), + sq(steps_dist_mm.z)) + steps_dist_mm.x, + steps_dist_mm.y, + steps_dist_mm.z, #endif + steps_dist_mm.i, + steps_dist_mm.j, + steps_dist_mm.k, + steps_dist_mm.u, + steps_dist_mm.v, + steps_dist_mm.w ); - #if SECONDARY_LINEAR_AXES && NONE(FOAMCUTTER_XYUV, ARTICULATED_ROBOT_ARM) - if (UNEAR_ZERO(distance_sqr)) { - // Move does not involve any primary linear axes (xyz) but might involve secondary linear axes - distance_sqr = (0.0f - SECONDARY_AXIS_GANG( - IF_DISABLED(AXIS4_ROTATES, + sq(steps_dist_mm.i)), - IF_DISABLED(AXIS5_ROTATES, + sq(steps_dist_mm.j)), - IF_DISABLED(AXIS6_ROTATES, + sq(steps_dist_mm.k)), - IF_DISABLED(AXIS7_ROTATES, + sq(steps_dist_mm.u)), - IF_DISABLED(AXIS8_ROTATES, + sq(steps_dist_mm.v)), - IF_DISABLED(AXIS9_ROTATES, + sq(steps_dist_mm.w)) - ) - ); - } - #endif - - #if HAS_ROTATIONAL_AXES && NONE(FOAMCUTTER_XYUV, ARTICULATED_ROBOT_ARM) - if (UNEAR_ZERO(distance_sqr)) { - // Move involves only rotational axes. Calculate angular distance in accordance with LinuxCNC - TERN_(INCH_MODE_SUPPORT, cartesian_move = false); - distance_sqr = ROTATIONAL_AXIS_GANG(sq(steps_dist_mm.i), + sq(steps_dist_mm.j), + sq(steps_dist_mm.k), + sq(steps_dist_mm.u), + sq(steps_dist_mm.v), + sq(steps_dist_mm.w)); - } - #endif - - block->millimeters = SQRT(distance_sqr); + block->millimeters = get_move_distance(displacement OPTARG(HAS_ROTATIONAL_AXES, cartesian_move)); } /** @@ -2354,12 +2317,13 @@ bool Planner::_populate_block( // Calculate inverse time for this move. No divide by zero due to previous checks. // Example: At 120mm/s a 60mm move involving XYZ axes takes 0.5s. So this will give 2.0. // Example 2: At 120°/s a 60° move involving only rotational axes takes 0.5s. So this will give 2.0. - float inverse_secs; - #if BOTH(HAS_ROTATIONAL_AXES, INCH_MODE_SUPPORT) - inverse_secs = inverse_millimeters * (cartesian_move ? fr_mm_s : LINEAR_UNIT(fr_mm_s)); - #else - inverse_secs = fr_mm_s * inverse_millimeters; - #endif + float inverse_secs = inverse_millimeters * ( + #if BOTH(HAS_ROTATIONAL_AXES, INCH_MODE_SUPPORT) + cartesian_move ? fr_mm_s : LINEAR_UNIT(fr_mm_s) + #else + fr_mm_s + #endif + ); // Get the number of non busy movements in queue (non busy means that they can be altered) const uint8_t moves_queued = nonbusy_movesplanned(); @@ -3157,9 +3121,7 @@ bool Planner::buffer_line(const xyze_pos_t &cart, const_feedRate_t fr_mm_s PlannerHints ph = hints; if (!hints.millimeters) - ph.millimeters = (cart_dist_mm.x || cart_dist_mm.y) - ? xyz_pos_t(cart_dist_mm).magnitude() - : TERN0(HAS_Z_AXIS, ABS(cart_dist_mm.z)); + ph.millimeters = get_move_distance(xyze_pos_t(cart_dist_mm) OPTARG(HAS_ROTATIONAL_AXES, ph.cartesian_move)); #if DISABLED(FEEDRATE_SCALING) diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index 7cc8bc08e4..b63fabb84d 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -377,6 +377,11 @@ struct PlannerHints { // would calculate if it knew the as-yet-unbuffered path #endif + #if HAS_ROTATIONAL_AXES + bool cartesian_move = true; // True if linear motion of the tool centerpoint relative to the workpiece occurs. + // False if no movement of the tool center point relative to the work piece occurs + // (i.e. the tool rotates around the tool centerpoint) + #endif PlannerHints(const_float_t mm=0.0f) : millimeters(mm) {} }; From df44424388ee5b2105270ad7086c37f84263dc5a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 21 Feb 2023 15:08:25 -0600 Subject: [PATCH 045/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Fix?= =?UTF-8?q?=20preheat=20tests=20(nested=20macro=20limit=20~256)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25407 --- Marlin/src/core/macros.h | 4 ++- Marlin/src/module/temperature.cpp | 41 ++++++++++++++++++++++++++----- Marlin/src/module/temperature.h | 2 +- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h index 65fba21094..fec390b64b 100644 --- a/Marlin/src/core/macros.h +++ b/Marlin/src/core/macros.h @@ -634,7 +634,9 @@ #define DEFER4(M) M EMPTY EMPTY EMPTY EMPTY()()()() // Force define expansion -#define EVAL(V...) EVAL16(V) +#define EVAL EVAL16 +#define EVAL4096(V...) EVAL2048(EVAL2048(V)) +#define EVAL2048(V...) EVAL1024(EVAL1024(V)) #define EVAL1024(V...) EVAL512(EVAL512(V)) #define EVAL512(V...) EVAL256(EVAL256(V)) #define EVAL256(V...) EVAL128(EVAL128(V)) diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index fc3149d4f0..b572690256 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -317,7 +317,7 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); #if HAS_HOTEND hotend_info_t Temperature::temp_hotend[HOTENDS]; - const celsius_t Temperature::hotend_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP, HEATER_5_MAXTEMP, HEATER_6_MAXTEMP, HEATER_7_MAXTEMP); + constexpr celsius_t Temperature::hotend_maxtemp[HOTENDS]; // Sanity-check max readable temperatures #define CHECK_MAXTEMP_(N,M,S) static_assert( \ @@ -328,12 +328,41 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); #if HAS_PREHEAT #define CHECK_PREHEAT__(N,P,T,M) static_assert(T <= M - HOTEND_OVERSHOOT, "PREHEAT_" STRINGIFY(P) "_TEMP_HOTEND (" STRINGIFY(T) ") must be less than HEATER_" STRINGIFY(N) "_MAXTEMP (" STRINGIFY(M) ") - " STRINGIFY(HOTEND_OVERSHOOT) "."); - #define CHECK_PREHEAT_(N,P) CHECK_PREHEAT__(N, P, PREHEAT_##P##_TEMP_HOTEND, HEATER_##N##_MAXTEMP); - #define CHECK_PREHEAT(P) REPEAT2(HOTENDS, CHECK_PREHEAT_, P); - RREPEAT_1(PREHEAT_COUNT, CHECK_PREHEAT) - #endif + #define CHECK_PREHEAT_(N,P) CHECK_PREHEAT__(N, P, PREHEAT_##P##_TEMP_HOTEND, HEATER_##N##_MAXTEMP) + #define CHECK_PREHEAT(P) REPEAT2(HOTENDS, CHECK_PREHEAT_, P) + #if PREHEAT_COUNT >= 1 + CHECK_PREHEAT(1) + #endif + #if PREHEAT_COUNT >= 2 + CHECK_PREHEAT(2) + #endif + #if PREHEAT_COUNT >= 3 + CHECK_PREHEAT(3) + #endif + #if PREHEAT_COUNT >= 4 + CHECK_PREHEAT(4) + #endif + #if PREHEAT_COUNT >= 5 + CHECK_PREHEAT(5) + #endif + #if PREHEAT_COUNT >= 6 + CHECK_PREHEAT(6) + #endif + #if PREHEAT_COUNT >= 7 + CHECK_PREHEAT(7) + #endif + #if PREHEAT_COUNT >= 8 + CHECK_PREHEAT(8) + #endif + #if PREHEAT_COUNT >= 9 + CHECK_PREHEAT(9) + #endif + #if PREHEAT_COUNT >= 10 + CHECK_PREHEAT(10) + #endif + #endif // HAS_PREHEAT -#endif +#endif // HAS_HOTEND #if HAS_TEMP_REDUNDANT redundant_info_t Temperature::temp_redundant; diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index 136ed982dd..f86ec90d19 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -586,7 +586,7 @@ class Temperature { #if HAS_HOTEND static hotend_info_t temp_hotend[HOTENDS]; - static const celsius_t hotend_maxtemp[HOTENDS]; + static constexpr celsius_t hotend_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP, HEATER_5_MAXTEMP, HEATER_6_MAXTEMP, HEATER_7_MAXTEMP); static celsius_t hotend_max_target(const uint8_t e) { return hotend_maxtemp[e] - (HOTEND_OVERSHOOT); } #endif From bc450b45824140d9c0e73e6b04c427ca81de5b57 Mon Sep 17 00:00:00 2001 From: EvilGremlin <22657714+EvilGremlin@users.noreply.github.com> Date: Wed, 22 Feb 2023 00:19:29 +0300 Subject: [PATCH 046/659] =?UTF-8?q?=F0=9F=8C=90=20Update=20Russian=20langu?= =?UTF-8?q?age=20(#25360)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/language/language_ru.h | 204 +++++++++++++------------- 1 file changed, 99 insertions(+), 105 deletions(-) diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index 75579972a2..c8077582b6 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -45,21 +45,19 @@ namespace Language_ru { LSTR MSG_MEDIA_WAITING = _UxGT("Вставьте SD карту"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Сбой инициализации SD"); - #else - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Сбой инициализ. SD"); - #endif - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Ошибка считывания"); - LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB диск удалён"); - LSTR MSG_MEDIA_USB_FAILED = _UxGT("Ошибка USB диска"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Расширенные настройки"); LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переполнение вызова"); #else + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Сбой инициализ. SD"); + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Расшир. настройки"); LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переполн. вызова"); #endif - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Прогр. эндстопы"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("Эндстопы"); // Max length 8 characters - LSTR MSG_MAIN = _UxGT("Основное меню"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Другие настройки"); + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Ошибка чтения"); + LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB диск удалён"); + LSTR MSG_MEDIA_USB_FAILED = _UxGT("Ошибка USB диска"); + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Прогр. концевики"); + LSTR MSG_LCD_ENDSTOPS = _UxGT("Концевик"); // Max length 8 characters + LSTR MSG_MAIN = _UxGT("Главное меню"); LSTR MSG_CONFIGURATION = _UxGT("Конфигурация"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Автостарт"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Выключить двигатели"); @@ -70,7 +68,7 @@ namespace Language_ru { LSTR MSG_AUTO_HOME_X = _UxGT("Парковка X"); LSTR MSG_AUTO_HOME_Y = _UxGT("Парковка Y"); LSTR MSG_AUTO_HOME_Z = _UxGT("Парковка Z"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Авто Z-выравнивание"); + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Авто-выравнивание Z"); LSTR MSG_ITERATION = _UxGT("G34 Итерация: %i"); LSTR MSG_DECREASING_ACCURACY = _UxGT("Уменьшение точности!"); LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Точность достигнута"); @@ -78,7 +76,7 @@ namespace Language_ru { LSTR MSG_LEVEL_BED_WAITING = _UxGT("Нажмите чтобы начать"); LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Следующая точка"); LSTR MSG_LEVEL_BED_DONE = _UxGT("Выравнивание готово!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Высота спада"); + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Лимит выранивания"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 LSTR MSG_SET_HOME_OFFSETS = _UxGT("Установ. смещения дома"); LSTR MSG_HOME_OFFSET_X = _UxGT("Смещение дома X"); @@ -99,20 +97,20 @@ namespace Language_ru { #endif #if HAS_PREHEAT LSTR MSG_PREHEAT_1 = _UxGT("Преднагрев ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Нагрев ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" сопло"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" сопло ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" всё"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" стол"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" правка"); + LSTR MSG_PREHEAT_1_H = _UxGT("Нагреть ~ ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_END = _UxGT("Нагреть сопло ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_END_E = _UxGT("Нагреть сопло ~") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_ALL = _UxGT("Нагреть всё ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Нагреть стол ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Правка предн. ") PREHEAT_1_LABEL; LSTR MSG_PREHEAT_M = _UxGT("Преднагрев $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Нагрев $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Нагрев $ сопло"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Нагрев $ сопло ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Нагрев $ всё"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Нагрев $ стол"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Нагрев $ правка"); + LSTR MSG_PREHEAT_M_H = _UxGT("Нагреть ~ $"); + LSTR MSG_PREHEAT_M_END = _UxGT("Нагреть сопло $"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Нагреть сопло ~ $"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Нагреть всё $"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Нагреть стол $"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Правка преднаг. $"); #endif LSTR MSG_PREHEAT_CUSTOM = _UxGT("Нагрев Свой"); LSTR MSG_COOLDOWN = _UxGT("Охлаждение"); @@ -145,8 +143,8 @@ namespace Language_ru { LSTR MSG_SWITCH_PS_ON = _UxGT("Включить питание"); LSTR MSG_SWITCH_PS_OFF = _UxGT("Выключить питание"); - LSTR MSG_EXTRUDE = _UxGT("Экструзия"); - LSTR MSG_RETRACT = _UxGT("Втягивание"); + LSTR MSG_EXTRUDE = _UxGT("Выдавить"); + LSTR MSG_RETRACT = _UxGT("Втянуть"); LSTR MSG_MOVE_AXIS = _UxGT("Движение по осям"); LSTR MSG_BED_LEVELING = _UxGT("Выравнивание стола"); LSTR MSG_LEVEL_BED = _UxGT("Выровнять стол"); @@ -245,9 +243,9 @@ namespace Language_ru { #endif LSTR MSG_G26_HEATING_BED = _UxGT("G26 нагрев стола"); LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 нагрев сопла"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Ручная грунтовка"); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Грунт фикс. длины"); - LSTR MSG_G26_PRIME_DONE = _UxGT("Грунтовка сделана"); + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Ручная прочистка"); + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Прочистка фикс.длины"); + LSTR MSG_G26_PRIME_DONE = _UxGT("Прочистка окончена"); LSTR MSG_G26_CANCELED = _UxGT("G26 завершена"); LSTR MSG_G26_LEAVING = _UxGT("Выйти из G26"); LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Продолжить сетку"); @@ -257,7 +255,7 @@ namespace Language_ru { #else LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-точечное выравн."); #endif - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Калибровка растера"); + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Выравнивание сеткой"); LSTR MSG_UBL_MESH_LEVEL = _UxGT("Выровнять сетку"); LSTR MSG_UBL_SIDE_POINTS = _UxGT("Крайние точки"); LSTR MSG_UBL_MAP_TYPE = _UxGT("Тип карты"); @@ -291,7 +289,7 @@ namespace Language_ru { LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Ошибка: Восстан.UBL"); LSTR MSG_UBL_Z_OFFSET = _UxGT("Смещение Z: "); LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Смещение Z останов."); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL пошагово"); + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Пошаговая настр. UBL"); LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Строить холодную"); LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Умное заполнение"); LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Проверить сетку"); @@ -364,7 +362,7 @@ namespace Language_ru { LSTR MSG_STORED_FAN_N = _UxGT("Сохранённый кулер ~"); LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Дополн. кулер"); LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Дополн. кулер ~"); - LSTR MSG_CONTROLLER_FAN = _UxGT("Контроллер кулера"); + LSTR MSG_CONTROLLER_FAN = _UxGT("Кулер контроллера"); LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Холостые обороты"); LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Автовключение"); LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Рабочие обороты"); @@ -375,16 +373,16 @@ namespace Language_ru { LSTR MSG_MIN = " " LCD_STR_THERMOMETER ", " LCD_STR_DEGREE _UxGT("С мин"); LSTR MSG_MAX = " " LCD_STR_THERMOMETER ", " LCD_STR_DEGREE _UxGT("С макс"); LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Фактор"); - LSTR MSG_AUTOTEMP = _UxGT("Автотемпер."); + LSTR MSG_AUTOTEMP = _UxGT("Автотемпература"); LSTR MSG_LCD_ON = _UxGT("Вкл"); LSTR MSG_LCD_OFF = _UxGT("Выкл"); - LSTR MSG_PID_AUTOTUNE = _UxGT("Автоподбор PID"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("Автоподбор PID *"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Подбор PID выполнен"); - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Сбой автоподбора! Плохой экструдер."); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Сбой автоподбора! Температура повышена."); - LSTR MSG_PID_TIMEOUT = _UxGT("Сбой автоподбора! Завершение времени."); + LSTR MSG_PID_AUTOTUNE = _UxGT("Автокалибровка PID"); + LSTR MSG_PID_AUTOTUNE_E = _UxGT("Автокалибр. PID *"); + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Калибр.PID выполнена"); + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Сбой калибровки! Неверный экструдер."); + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Сбой калибровки! Температура завышена."); + LSTR MSG_PID_TIMEOUT = _UxGT("Сбой калибровки! Таймаут."); LSTR MSG_SELECT_E = _UxGT("Выбор *"); LSTR MSG_ACC = _UxGT("Ускорение"); @@ -395,9 +393,9 @@ namespace Language_ru { LSTR MSG_VN_JERK = _UxGT("V@-рывок"); LSTR MSG_VE_JERK = _UxGT("Ve-рывок"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Отклонение узла"); + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Отклонение угла"); #else - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Отклон. узла"); + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Отклон.угла"); #endif LSTR MSG_MAX_SPEED = _UxGT("Скорость, мм/с"); LSTR MSG_VMAX_A = _UxGT("Скор.макс ") STR_A; @@ -441,8 +439,8 @@ namespace Language_ru { #endif LSTR MSG_FILAMENT_UNLOAD = _UxGT("Загрузка, мм"); LSTR MSG_FILAMENT_LOAD = _UxGT("Выгрузка, мм"); - LSTR MSG_ADVANCE_K = _UxGT("Kоэф. продвиж."); - LSTR MSG_ADVANCE_K_E = _UxGT("Kоэф. продвиж. *"); + LSTR MSG_ADVANCE_K = _UxGT("К-фактор LA"); + LSTR MSG_ADVANCE_K_E = _UxGT("К-фактор LA *"); LSTR MSG_CONTRAST = _UxGT("Контраст экрана"); LSTR MSG_STORE_EEPROM = _UxGT("Сохранить настройки"); LSTR MSG_LOAD_EEPROM = _UxGT("Загрузить настройки"); @@ -467,7 +465,7 @@ namespace Language_ru { LSTR MSG_CURRENT = _UxGT("Ток"); LSTR MSG_VOLTAGE = _UxGT("Напряжение"); LSTR MSG_POWER = _UxGT("Мощность"); - LSTR MSG_START_PRINT = _UxGT("Начало печати"); + LSTR MSG_START_PRINT = _UxGT("Запустить печать"); LSTR MSG_BUTTON_NEXT = _UxGT("Дальше"); //short text for buttons LSTR MSG_BUTTON_INIT = _UxGT("Иниц-я"); @@ -501,48 +499,48 @@ namespace Language_ru { LSTR MSG_KILLED = _UxGT("УБИТО. "); LSTR MSG_STOPPED = _UxGT("ОСТАНОВЛЕНО. "); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_CONTROL_RETRACT = _UxGT("Втягивание, мм"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Смена втягив., мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Возврат смены, мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Возврат смены, V"); - LSTR MSG_AUTORETRACT = _UxGT("Автовтягивание"); + LSTR MSG_CONTROL_RETRACT = _UxGT("Откат, мм"); + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Откат при смене, мм"); + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Возврат при смене, мм"); + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Возврат при смене, V"); + LSTR MSG_AUTORETRACT = _UxGT("Автооткат"); #else - LSTR MSG_CONTROL_RETRACT = _UxGT("Втягив., мм"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Смена втяг.,мм"); + LSTR MSG_CONTROL_RETRACT = _UxGT("Откат, мм"); + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Откат смены,мм"); LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Возвр.смены,мм"); LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Возвр.смены V"); - LSTR MSG_AUTORETRACT = _UxGT("Автовтягив."); + LSTR MSG_AUTORETRACT = _UxGT("Автооткат"); #endif - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Подскок, мм"); + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Подскок Z, мм"); LSTR MSG_CONTROL_RETRACTF = _UxGT("Втягивание V"); LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Возврат, мм"); LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Возврат V"); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Поменять длины"); + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Длина замены"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Поменять дополнительно"); + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Дополнительная длина"); #else - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Поменять дополнит."); + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Доп. длина"); #endif - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Очистить длину"); + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Длина прочистки"); LSTR MSG_TOOL_CHANGE = _UxGT("Смена сопел"); LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Поднятие по Z"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Начальная скор."); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Скорость втягив."); + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Скорость отката"); #else LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Началь.скор."); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Скор.втягив."); + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Скор.отката"); #endif LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Парковать голову"); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Вернуть скорость"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Обороти кулера"); + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Скорость возврата"); + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Скорость кулера"); LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Время кулера"); LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Авто Вкл."); LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Авто Выкл."); - LSTR MSG_TOOL_MIGRATION = _UxGT("Замена инструмента"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Авто замена"); + LSTR MSG_TOOL_MIGRATION = _UxGT("Смена инструмента"); + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Авто смена"); LSTR MSG_TOOL_MIGRATION_END = _UxGT("Последний экструдер"); LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Замена на *"); LSTR MSG_FILAMENTCHANGE = _UxGT("Смена филамента"); @@ -560,29 +558,29 @@ namespace Language_ru { LSTR MSG_CHANGE_MEDIA = _UxGT("Сменить SD карту"); LSTR MSG_RELEASE_MEDIA = _UxGT("Освободить SD карту"); LSTR MSG_ZPROBE_OUT = _UxGT("Z-зонд вне стола"); - LSTR MSG_SKEW_FACTOR = _UxGT("Фактор наклона"); + LSTR MSG_SKEW_FACTOR = _UxGT("Фактор перекоса"); LSTR MSG_BLTOUCH = _UxGT("Z-зонд BLTouch"); LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Тестирование BLTouch"); LSTR MSG_BLTOUCH_RESET = _UxGT("Сброс BLTouch"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Поднять BLTouch"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Опустить BLTouch"); + LSTR MSG_BLTOUCH_STOW = _UxGT("Втянуть BLTouch"); + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Выдвинуть BLTouch"); LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Режим SW"); LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Режим 5V"); LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Режим OD"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Режим сохранения"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Установить на 5V"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Установить на OD"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Слив отчёта"); + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Сохранить режим"); + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Установить в 5V"); + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Установить в OD"); + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Текущий режим"); LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("ОПАСНОСТЬ: Неправильные параметры приводят к повреждениям! Продолжить?"); LSTR MSG_TOUCHMI_PROBE = _UxGT("Z-Зонд TouchMI"); LSTR MSG_TOUCHMI_INIT = _UxGT("Инициализация"); LSTR MSG_TOUCHMI_ZTEST = _UxGT("Тест Z-смещения"); LSTR MSG_TOUCHMI_SAVE = _UxGT("Сохранить"); LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Установить TouchMI"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Установить зонд"); - LSTR MSG_MANUAL_STOW = _UxGT("Загрузить зонд"); + LSTR MSG_MANUAL_DEPLOY = _UxGT("Выдвинуть зонд"); + LSTR MSG_MANUAL_STOW = _UxGT("Втянуть зонд"); LSTR MSG_HOME_FIRST = _UxGT("Сначала паркуй %s"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Смещения Z-зонда"); + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Смещение Z-зонда"); LSTR MSG_ZPROBE_XOFFSET = _UxGT("Смещение X"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Смещение Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Смещение Z"); @@ -595,17 +593,17 @@ namespace Language_ru { LSTR MSG_BABYSTEP_Y = _UxGT("Микрошаг Y"); LSTR MSG_BABYSTEP_Z = _UxGT("Микрошаг Z"); LSTR MSG_BABYSTEP_N = _UxGT("Микрошаг @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Сумарно"); + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Суммарно"); LSTR MSG_ENDSTOP_ABORT = _UxGT("Сработал концевик"); LSTR MSG_HEATING_FAILED_LCD = _UxGT("Разогрев не удался"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Ошибка:Избыточная Т"); - LSTR MSG_THERMAL_RUNAWAY = _UxGT("УТЕЧКА ТЕПЛА"); - LSTR MSG_THERMAL_RUNAWAY_BED = _UxGT("УТЕЧКА ТЕПЛА СТОЛА"); - LSTR MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("УТЕЧКА ТЕПЛА КАМЕРЫ"); - LSTR MSG_THERMAL_RUNAWAY_COOLER = _UxGT("УТЕЧКА ОХЛАЖДЕНИЯ"); - LSTR MSG_COOLING_FAILED = _UxGT("ОХЛАДИТЬ НЕ УДАЛОСЬ"); + LSTR MSG_THERMAL_RUNAWAY = _UxGT("УТЕЧКА ТЕМПЕРАТУРЫ"); + LSTR MSG_THERMAL_RUNAWAY_BED = _UxGT("УТЕЧКА ТЕМП. СТОЛА"); + LSTR MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("УТЕЧКА ТЕМП. КАМЕРЫ"); + LSTR MSG_THERMAL_RUNAWAY_COOLER = _UxGT("УТЕЧКА ТЕМП. КУЛЕРА"); + LSTR MSG_COOLING_FAILED = _UxGT("НЕ УДАЛОСЬ ОХЛАДИТЬ"); LSTR MSG_ERR_MAXTEMP = _UxGT("Ошибка: Т макс."); LSTR MSG_ERR_MINTEMP = _UxGT("Ошибка: Т мин."); + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Ошибка: Т контр."); LSTR MSG_HALTED = _UxGT("ПРИНТЕР ОСТАНОВЛЕН"); LSTR MSG_PLEASE_RESET = _UxGT("Сделайте сброс"); LSTR MSG_SHORT_DAY = _UxGT("д"); // One character only @@ -620,13 +618,13 @@ namespace Language_ru { LSTR MSG_CHAMBER_HEATING = _UxGT("Нагрев камеры..."); LSTR MSG_CHAMBER_COOLING = _UxGT("Охладжение камеры..."); LSTR MSG_LASER_COOLING = _UxGT("Охлаждение лазера..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Калибровка Delta"); + LSTR MSG_DELTA_CALIBRATE = _UxGT("Калибровка дельты"); LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Калибровать X"); LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Калибровать Y"); LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Калибровать Z"); LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Калибровать центр"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Настройки Delta"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Авто калибровка"); + LSTR MSG_DELTA_SETTINGS = _UxGT("Настройки дельты"); + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Автокалибр. дельты"); LSTR MSG_DELTA_DIAG_ROD = _UxGT("Стержень диаг."); LSTR MSG_DELTA_HEIGHT = _UxGT("Высота"); LSTR MSG_DELTA_RADIUS = _UxGT("Радиус"); @@ -641,8 +639,8 @@ namespace Language_ru { LSTR MSG_LINEAR_LEVELING = _UxGT("Линейное выравн."); LSTR MSG_BILINEAR_LEVELING = _UxGT("Билин. выравнив."); #endif - LSTR MSG_UBL_LEVELING = _UxGT("Управление UBL"); - LSTR MSG_MESH_LEVELING = _UxGT("Выравнивание сетки"); + LSTR MSG_UBL_LEVELING = _UxGT("Выравнивание UBL"); + LSTR MSG_MESH_LEVELING = _UxGT("Выравнивание сеткой"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 LSTR MSG_MESH_DONE = _UxGT("Зондирование выполнено"); #else @@ -666,7 +664,7 @@ namespace Language_ru { #endif LSTR MSG_CASE_LIGHT = _UxGT("Подсветка корпуса"); LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Яркость подсветки"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Неверный принтер"); + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("НЕВЕРНЫЙ ПРИНТЕР"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 LSTR MSG_INFO_PRINT_COUNT = _UxGT("Счётчик печати"); @@ -769,10 +767,10 @@ namespace Language_ru { LSTR MSG_END_Z = _UxGT(" Конец Z"); LSTR MSG_GAMES = _UxGT("Игры"); - LSTR MSG_BRICKOUT = _UxGT("Кирпичи"); - LSTR MSG_INVADERS = _UxGT("Вторжение"); - LSTR MSG_SNAKE = _UxGT("Змейка"); - LSTR MSG_MAZE = _UxGT("Лабиринт"); + LSTR MSG_BRICKOUT = _UxGT("Brickout"); + LSTR MSG_INVADERS = _UxGT("Invaders"); + LSTR MSG_SNAKE = _UxGT("Sn4k3"); + LSTR MSG_MAZE = _UxGT("Maze"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 LSTR MSG_BAD_PAGE = _UxGT("Плохой индекс страницы"); @@ -791,9 +789,9 @@ namespace Language_ru { LSTR MSG_PASSWORD_SET = _UxGT("Пароль это "); LSTR MSG_START_OVER = _UxGT("Старт через"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Запомни для сохранения!"); + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь сохранить!"); #else - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Запомни, сохрани!"); + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь сохранить"); #endif LSTR MSG_PASSWORD_REMOVED = _UxGT("Пароль удалён"); @@ -811,7 +809,7 @@ namespace Language_ru { LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Ожидайте", "выгрузки", "филамента")); LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Ожидайте", "загрузки", "филамента")); LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Ожидайте", "экструзии", "филамента")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Нажмите кнопку", "для завершения", "очистки филамента")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Нажмите кнопку", "для завершения", "прочистки филамента")); LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Ожидайте", "возобновления", "печати")); #else LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Продолжить печать")); @@ -821,15 +819,15 @@ namespace Language_ru { LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Нагрев...")); LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Выгрузка...")); LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Загрузка...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Выдавливание...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Завершить очистку")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Прочистка...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Завершить прочистку")); LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Возобновление...")); #endif LSTR MSG_TMC_DRIVERS = _UxGT("Драйвера TMC"); LSTR MSG_TMC_CURRENT = _UxGT("Ток двигателей"); LSTR MSG_TMC_HYBRID_THRS = _UxGT("Гибридный режим"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Режим без эндстопов"); + LSTR MSG_TMC_HOMING_THRS = _UxGT("Чувствительность"); LSTR MSG_TMC_STEPPING_MODE = _UxGT("Режим драйвера"); LSTR MSG_TMC_STEALTH_ENABLED = _UxGT("Тихий режим вкл"); @@ -839,13 +837,9 @@ namespace Language_ru { LSTR MSG_BACKLASH_CORRECTION = _UxGT("Исправление"); LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Сглаживание"); - LSTR MSG_LEVEL_X_AXIS = _UxGT("Уровень оси X"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Авто калибровка"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_HEATER_TIMEOUT = _UxGT("Время нагревателя вышло"); - #else - LSTR MSG_HEATER_TIMEOUT = _UxGT("Время нагрев. вышло"); - #endif + LSTR MSG_LEVEL_X_AXIS = _UxGT("Выровнять ось X"); + LSTR MSG_AUTO_CALIBRATE = _UxGT("Автокалибровка"); + LSTR MSG_HEATER_TIMEOUT = _UxGT("Таймаут нагрева"); LSTR MSG_REHEAT = _UxGT("Возобновить нагрев"); LSTR MSG_REHEATING = _UxGT("Нагрев..."); @@ -867,7 +861,7 @@ namespace Language_ru { LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Калибровка успешна"); LSTR MSG_CALIBRATION_FAILED = _UxGT("Ошибка калибровки"); - LSTR MSG_DRIVER_BACKWARD = _UxGT(" драйвер назад"); + LSTR MSG_DRIVER_BACKWARD = _UxGT(" драйвер наоборот"); LSTR MSG_SD_CARD = _UxGT("SD Карта"); LSTR MSG_USB_DISK = _UxGT("USB Диск"); From 464bb1f149324ff51d17699df4e55a305faf0d1c Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Wed, 22 Feb 2023 11:27:47 +1300 Subject: [PATCH 047/659] =?UTF-8?q?=F0=9F=94=A8=20Encrypt=20some=20MKS=20R?= =?UTF-8?q?obin=20(#25349)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ini/stm32f1-maple.ini | 72 +++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/ini/stm32f1-maple.ini b/ini/stm32f1-maple.ini index dc75774754..d06e95750a 100644 --- a/ini/stm32f1-maple.ini +++ b/ini/stm32f1-maple.ini @@ -195,23 +195,23 @@ build_unflags = ${STM32F1_maple.build_unflags} # MKS Robin Mini (STM32F103VET6) # [env:mks_robin_mini_maple] -extends = STM32F1_maple -board = genericSTM32F103VE -board_build.address = 0x08007000 -board_build.rename = Robin_mini.bin -board_build.ldscript = mks_robin_mini.ld -build_flags = ${STM32F1_maple.build_flags} -DMCU_STM32F103VE +extends = STM32F1_maple +board = genericSTM32F103VE +board_build.address = 0x08007000 +board_build.encrypt_mks = Robin_mini.bin +board_build.ldscript = mks_robin_mini.ld +build_flags = ${STM32F1_maple.build_flags} -DMCU_STM32F103VE # # MKS Robin Nano v1.x and v2 (STM32F103VET6) # [env:mks_robin_nano_v1v2_maple] -extends = STM32F1_maple -board = genericSTM32F103VE -board_build.address = 0x08007000 -board_build.rename = Robin_nano35.bin -board_build.ldscript = mks_robin_nano.ld -build_flags = ${STM32F1_maple.build_flags} -DMCU_STM32F103VE -DSS_TIMER=4 +extends = STM32F1_maple +board = genericSTM32F103VE +board_build.address = 0x08007000 +board_build.encrypt_mks = Robin_nano35.bin +board_build.ldscript = mks_robin_nano.ld +build_flags = ${STM32F1_maple.build_flags} -DMCU_STM32F103VE -DSS_TIMER=4 # # MKS Robin (STM32F103ZET6) @@ -245,46 +245,46 @@ extra_scripts = ${STM32F1_maple.extra_scripts} # MKS Robin E3 with TMC2209 # [env:mks_robin_e3_maple] -extends = STM32F1_maple -board = genericSTM32F103RC -board_build.address = 0x08005000 -board_build.rename = Robin_e3.bin -board_build.ldscript = mks_robin_e3.ld -build_flags = ${STM32F1_maple.build_flags} -DDEBUG_LEVEL=0 -DSS_TIMER=4 +extends = STM32F1_maple +board = genericSTM32F103RC +board_build.address = 0x08005000 +board_build.encrypt_mks = Robin_e3.bin +board_build.ldscript = mks_robin_e3.ld +build_flags = ${STM32F1_maple.build_flags} -DDEBUG_LEVEL=0 -DSS_TIMER=4 # # MKS Robin E3p (STM32F103VET6) # - LVGL UI # [env:mks_robin_e3p_maple] -extends = STM32F1_maple -board = genericSTM32F103VE -board_build.address = 0x08007000 -board_build.rename = Robin_e3p.bin -board_build.ldscript = mks_robin_e3p.ld -build_flags = ${STM32F1_maple.build_flags} -DMCU_STM32F103VE -DSS_TIMER=4 -debug_tool = jlink -upload_protocol = jlink +extends = STM32F1_maple +board = genericSTM32F103VE +board_build.address = 0x08007000 +board_build.encrypt_mks = Robin_e3p.bin +board_build.ldscript = mks_robin_e3p.ld +build_flags = ${STM32F1_maple.build_flags} -DMCU_STM32F103VE -DSS_TIMER=4 +debug_tool = jlink +upload_protocol = jlink # # MKS Robin Lite/Lite2 (STM32F103RCT6) # [env:mks_robin_lite_maple] -extends = STM32F1_maple -board = genericSTM32F103RC -board_build.address = 0x08005000 -board_build.rename = mksLite.bin -board_build.ldscript = mks_robin_lite.ld +extends = STM32F1_maple +board = genericSTM32F103RC +board_build.address = 0x08005000 +board_build.encrypt_mks = mksLite.bin +board_build.ldscript = mks_robin_lite.ld # # MKS ROBIN LITE3 (STM32F103RCT6) # [env:mks_robin_lite3_maple] -extends = STM32F1_maple -board = genericSTM32F103RC -board_build.address = 0x08005000 -board_build.rename = mksLite3.bin -board_build.ldscript = mks_robin_lite.ld +extends = STM32F1_maple +board = genericSTM32F103RC +board_build.address = 0x08005000 +board_build.encrypt_mks = mksLite3.bin +board_build.ldscript = mks_robin_lite.ld # # JGAurora A5S A1 (STM32F103ZET6) From 5a8883b44f6a6fc7be43e0f50c5d7708d0e28c97 Mon Sep 17 00:00:00 2001 From: tombrazier <68918209+tombrazier@users.noreply.github.com> Date: Tue, 21 Feb 2023 22:37:11 +0000 Subject: [PATCH 048/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20AVR=20maths=20used?= =?UTF-8?q?=20by=20Stepper=20(#25338)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/AVR/math.h | 40 ++++++++++++++++++----------------- Marlin/src/module/stepper.cpp | 2 +- Marlin/src/module/stepper.h | 4 ++-- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/Marlin/src/HAL/AVR/math.h b/Marlin/src/HAL/AVR/math.h index 7dd1018ff1..34f859fbbb 100644 --- a/Marlin/src/HAL/AVR/math.h +++ b/Marlin/src/HAL/AVR/math.h @@ -27,13 +27,14 @@ // intRes = longIn1 * longIn2 >> 24 // uses: -// A[tmp] to store 0 -// B[tmp] to store bits 16-23 of the 48bit result. The top bit is used to round the two byte result. -// note that the lower two bytes and the upper byte of the 48bit result are not calculated. -// this can cause the result to be out by one as the lower bytes may cause carries into the upper ones. -// B A are bits 24-39 and are the returned value -// C B A is longIn1 -// D C B A is longIn2 +// r1, r0 for the result of mul. +// [tmp1] to store 0. +// [tmp2] to store bits 16-23 of the 56 bit result. The top bit of [tmp2] is used for rounding. +// Note that the lower two bytes and the upper two bytes of the 56 bit result are not calculated. +// This can cause the result to be out by one as the lower bytes may cause carries into the upper ones. +// [intRes] (A B) is bits 24-39 and is the returned value. +// [longIn1] (C B A) is a 24 bit parameter. +// [longIn2] (D C B A) is a 32 bit parameter. // FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2) { uint8_t tmp1; @@ -66,11 +67,9 @@ FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2 A("add %[tmp2], r1") A("adc %A[intRes], %[tmp1]") A("adc %B[intRes], %[tmp1]") - A("lsr %[tmp2]") - A("adc %A[intRes], %[tmp1]") - A("adc %B[intRes], %[tmp1]") A("mul %D[longIn2], %A[longIn1]") - A("add %A[intRes], r0") + A("lsl %[tmp2]") + A("adc %A[intRes], r0") A("adc %B[intRes], r1") A("mul %D[longIn2], %B[longIn1]") A("add %B[intRes], r0") @@ -85,11 +84,16 @@ FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2 return intRes; } -// intRes = intIn1 * intIn2 >> 16 +// intRes = intIn1 * intIn2 >> 8 // uses: -// r26 to store 0 -// r27 to store the byte 1 of the 24 bit result -FORCE_INLINE static uint16_t MultiU16X8toH16(uint8_t charIn1, uint16_t intIn2) { +// r1, r0 for the result of mul. After the second mul, r0 holds bits 0-7 of the 24 bit result and +// the top bit of r0 is used for rounding. +// [tmp] to store 0. +// [intRes] (A B) is bits 8-15 and is the returned value. +// [charIn1] is an 8 bit parameter. +// [intIn2] (B A) is a 16 bit parameter. +// +FORCE_INLINE static uint16_t MultiU8X16toH16(uint8_t charIn1, uint16_t intIn2) { uint8_t tmp; uint16_t intRes; __asm__ __volatile__ ( @@ -97,10 +101,8 @@ FORCE_INLINE static uint16_t MultiU16X8toH16(uint8_t charIn1, uint16_t intIn2) { A("mul %[charIn1], %B[intIn2]") A("movw %A[intRes], r0") A("mul %[charIn1], %A[intIn2]") - A("add %A[intRes], r1") - A("adc %B[intRes], %[tmp]") - A("lsr r0") - A("adc %A[intRes], %[tmp]") + A("lsl r0") + A("adc %A[intRes], r1") A("adc %B[intRes], %[tmp]") A("clr r1") : [intRes] "=&r" (intRes), diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 54b52cd16e..f9de7498d7 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -2062,7 +2062,7 @@ uint32_t Stepper::calc_timer_interval(uint32_t step_rate) { const uint8_t rate_mod_256 = (step_rate & 0x00FF); const uintptr_t table_address = uintptr_t(&speed_lookuptable_fast[uint8_t(step_rate >> 8)][0]), gain = uint16_t(pgm_read_word(table_address + 2)); - return uint16_t(pgm_read_word(table_address)) - MultiU16X8toH16(rate_mod_256, gain); + return uint16_t(pgm_read_word(table_address)) - MultiU8X16toH16(rate_mod_256, gain); } else { // lower step rates uintptr_t table_address = uintptr_t(&speed_lookuptable_slow[0][0]); diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 3bbfeac9ca..0706451e90 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -114,11 +114,11 @@ #define TIMER_READ_ADD_AND_STORE_CYCLES 13UL // The base ISR - #define ISR_BASE_CYCLES 1000UL + #define ISR_BASE_CYCLES 996UL // Linear advance base time is 32 cycles #if ENABLED(LIN_ADVANCE) - #define ISR_LA_BASE_CYCLES 32UL + #define ISR_LA_BASE_CYCLES 30UL #else #define ISR_LA_BASE_CYCLES 0UL #endif From e46a50236fa35531d66ec501a30804dfa9343f34 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 22 Feb 2023 00:20:53 +0000 Subject: [PATCH 049/659] [cron] Bump distribution date (2023-02-22) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 1e19985a35..5fadc32c52 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-21" +//#define STRING_DISTRIBUTION_DATE "2023-02-22" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 1a54011d8c..32bd32d0d4 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-21" + #define STRING_DISTRIBUTION_DATE "2023-02-22" #endif /** From 9e42480855b54d64415f3810d4aa911f7f439097 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 21 Feb 2023 18:22:16 -0600 Subject: [PATCH 050/659] =?UTF-8?q?=F0=9F=94=A8=20Fix=20marlin=5Fcustom.*?= =?UTF-8?q?=20without=20lib=5Fdeps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/share/PlatformIO/scripts/common-dependencies.py | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.py b/buildroot/share/PlatformIO/scripts/common-dependencies.py index 91331d8f7a..6b5a9aea57 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.py +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.py @@ -67,6 +67,7 @@ if pioutil.is_pio_build(): for dep in re.split(r',\s*', line): lib_name = re.sub(r'@([~^]|[<>]=?)?[\d.]+', '', dep.strip()).split('=').pop(0) lib_re = re.compile('(?!^' + lib_name + '\\b)') + if not 'lib_deps' in feat: feat['lib_deps'] = {} feat['lib_deps'] = list(filter(lib_re.match, feat['lib_deps'])) + [dep] blab("[%s] lib_deps = %s" % (feature, dep), 3) From 44faf5cbab869a6b28287bd52172ced84badffe9 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 22 Feb 2023 14:30:02 -0600 Subject: [PATCH 051/659] =?UTF-8?q?=F0=9F=94=A7=20Fix=20Einsy=20Rambo=20TM?= =?UTF-8?q?C=20driver=20check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/rambo/pins_EINSY_RAMBO.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h index c5d5fcef78..de9ecc5b45 100644 --- a/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h +++ b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h @@ -35,8 +35,8 @@ // // TMC2130 Configuration_adv defaults for EinsyRambo // -#if !AXIS_DRIVER_TYPE_X(TMC2130) || !AXIS_DRIVER_TYPE_Y(TMC2130) || !AXIS_DRIVER_TYPE_Z(TMC2130) || !AXIS_DRIVER_TYPE_E0(TMC2130) - #error "You must set ([XYZ]|E0)_DRIVER_TYPE to TMC2130 in Configuration.h for EinsyRambo." +#if (HAS_X_AXIS && !AXIS_DRIVER_TYPE_X(TMC2130)) || (HAS_Y_AXIS && !AXIS_DRIVER_TYPE_Y(TMC2130)) || (HAS_Z_AXIS && !AXIS_DRIVER_TYPE_Z(TMC2130)) || (HAS_EXTRUDERS && !AXIS_DRIVER_TYPE_E0(TMC2130)) + #error "For EinsyRambo you must set all *_DRIVER_TYPE to TMC2130 in Configuration.h." #endif // TMC2130 Diag Pins (currently just for reference) From d3527f5de42f087bfe313aa475b0bf5d07559fed Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 23 Feb 2023 00:22:15 +0000 Subject: [PATCH 052/659] [cron] Bump distribution date (2023-02-23) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 5fadc32c52..e36c2b5f78 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-22" +//#define STRING_DISTRIBUTION_DATE "2023-02-23" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 32bd32d0d4..656060be9f 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-22" + #define STRING_DISTRIBUTION_DATE "2023-02-23" #endif /** From f9f6662a8c4692cc67006fb302068c96a0e86ac1 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 23 Feb 2023 21:08:31 -0600 Subject: [PATCH 053/659] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Stepper=20options?= =?UTF-8?q?=20refactor=20(#25422)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 18 +-- Marlin/Configuration_adv.h | 41 +++--- Marlin/src/MarlinCore.cpp | 2 +- Marlin/src/core/types.h | 42 +++--- Marlin/src/gcode/calibrate/G28.cpp | 2 +- Marlin/src/gcode/geometry/M206_M428.cpp | 4 +- Marlin/src/inc/Conditionals_LCD.h | 65 ++++----- Marlin/src/inc/Conditionals_adv.h | 132 ++++++++++--------- Marlin/src/inc/Conditionals_post.h | 85 ++++++------ Marlin/src/inc/SanityCheck.h | 4 + Marlin/src/lcd/dogm/status_screen_DOGM.cpp | 4 +- Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp | 2 +- Marlin/src/module/planner.cpp | 6 +- Marlin/src/module/stepper.cpp | 96 +++++++------- buildroot/tests/mega2560 | 27 ++-- 15 files changed, 265 insertions(+), 265 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 480520e28e..c163c58704 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1673,15 +1673,15 @@ // Disable axis steppers immediately when they're not being stepped. // WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -//#define DISABLE_I false -//#define DISABLE_J false -//#define DISABLE_K false -//#define DISABLE_U false -//#define DISABLE_V false -//#define DISABLE_W false +//#define DISABLE_X +//#define DISABLE_Y +//#define DISABLE_Z +//#define DISABLE_I +//#define DISABLE_J +//#define DISABLE_K +//#define DISABLE_U +//#define DISABLE_V +//#define DISABLE_W // Turn off the display blinking that warns about possible accuracy reduction //#define DISABLE_REDUCED_ACCURACY_WARNING diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index b607588568..6d74a130c7 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1104,17 +1104,17 @@ // Add a Duplicate option for well-separated conjoined nozzles //#define MULTI_NOZZLE_DUPLICATION -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_I_STEP_PIN false -#define INVERT_J_STEP_PIN false -#define INVERT_K_STEP_PIN false -#define INVERT_U_STEP_PIN false -#define INVERT_V_STEP_PIN false -#define INVERT_W_STEP_PIN false -#define INVERT_E_STEP_PIN false +// By default stepper drivers require an active-HIGH signal but some high-power drivers require an active-LOW signal to step. +#define STEP_STATE_X HIGH +#define STEP_STATE_Y HIGH +#define STEP_STATE_Z HIGH +#define STEP_STATE_I HIGH +#define STEP_STATE_J HIGH +#define STEP_STATE_K HIGH +#define STEP_STATE_U HIGH +#define STEP_STATE_V HIGH +#define STEP_STATE_W HIGH +#define STEP_STATE_E HIGH /** * Idle Stepper Shutdown @@ -1122,16 +1122,15 @@ * The Deactive Time can be overridden with M18 and M84. Set to 0 for No Timeout. */ #define DEFAULT_STEPPER_DEACTIVE_TIME 120 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // Set 'false' if the nozzle could fall onto your printed part! -#define DISABLE_INACTIVE_I true -#define DISABLE_INACTIVE_J true -#define DISABLE_INACTIVE_K true -#define DISABLE_INACTIVE_U true -#define DISABLE_INACTIVE_V true -#define DISABLE_INACTIVE_W true -#define DISABLE_INACTIVE_E true +#define DISABLE_INACTIVE_X +#define DISABLE_INACTIVE_Y +#define DISABLE_INACTIVE_Z // Disable if the nozzle could fall onto your printed part! +//#define DISABLE_INACTIVE_I +//#define DISABLE_INACTIVE_J +//#define DISABLE_INACTIVE_K +//#define DISABLE_INACTIVE_U +//#define DISABLE_INACTIVE_V +//#define DISABLE_INACTIVE_W // Default Minimum Feedrates for printing and travel moves #define DEFAULT_MINIMUMFEEDRATE 0.0 // (mm/s. °/s for rotational-only moves) Minimum feedrate. Set with M205 S. diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index ed892ac813..3b704e4f65 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -448,7 +448,7 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) { TERN_(DISABLE_INACTIVE_U, stepper.disable_axis(U_AXIS)); TERN_(DISABLE_INACTIVE_V, stepper.disable_axis(V_AXIS)); TERN_(DISABLE_INACTIVE_W, stepper.disable_axis(W_AXIS)); - TERN_(DISABLE_INACTIVE_E, stepper.disable_e_steppers()); + TERN_(DISABLE_INACTIVE_EXTRUDER, stepper.disable_e_steppers()); TERN_(AUTO_BED_LEVELING_UBL, bedlevel.steppers_were_disabled()); } diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index f1fae85b5c..bae345b496 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -44,7 +44,7 @@ struct IF { typedef L type; }; #define NUM_AXIS_LIST_1(V) LIST_N_1(NUM_AXES, V) #define NUM_AXIS_ARRAY(V...) { NUM_AXIS_LIST(V) } #define NUM_AXIS_ARRAY_1(V) { NUM_AXIS_LIST_1(V) } -#define NUM_AXIS_ARGS(T...) NUM_AXIS_LIST(T x, T y, T z, T i, T j, T k, T u, T v, T w) +#define NUM_AXIS_ARGS(T) NUM_AXIS_LIST(T x, T y, T z, T i, T j, T k, T u, T v, T w) #define NUM_AXIS_ELEM(O) NUM_AXIS_LIST(O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w) #define NUM_AXIS_DEFS(T,V) NUM_AXIS_LIST(T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V) #define MAIN_AXIS_NAMES NUM_AXIS_LIST(X, Y, Z, I, J, K, U, V, W) @@ -57,7 +57,7 @@ struct IF { typedef L type; }; #define LOGICAL_AXIS_LIST_1(V) NUM_AXIS_LIST_1(V) LIST_ITEM_E(V) #define LOGICAL_AXIS_ARRAY(E,V...) { LOGICAL_AXIS_LIST(E,V) } #define LOGICAL_AXIS_ARRAY_1(V) { LOGICAL_AXIS_LIST_1(V) } -#define LOGICAL_AXIS_ARGS(T...) LOGICAL_AXIS_LIST(T e, T x, T y, T z, T i, T j, T k, T u, T v, T w) +#define LOGICAL_AXIS_ARGS(T) LOGICAL_AXIS_LIST(T e, T x, T y, T z, T i, T j, T k, T u, T v, T w) #define LOGICAL_AXIS_ELEM(O) LOGICAL_AXIS_LIST(O.e, O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w) #define LOGICAL_AXIS_DECL(T,V) LOGICAL_AXIS_LIST(T e=V, T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V) #define LOGICAL_AXIS_NAMES LOGICAL_AXIS_LIST(E, X, Y, Z, I, J, K, U, V, W) @@ -96,14 +96,14 @@ struct Flags { bits_t b; typename IF<(N>8), N16, N8>::type flag; }; - void reset() { b = 0; } - void set(const int n, const bool onoff) { onoff ? set(n) : clear(n); } - void set(const int n) { b |= (bits_t)_BV(n); } - void clear(const int n) { b &= ~(bits_t)_BV(n); } - bool test(const int n) const { return TEST(b, n); } - bool operator[](const int n) { return test(n); } - bool operator[](const int n) const { return test(n); } - int size() const { return sizeof(b); } + void reset() { b = 0; } + void set(const int n, const bool onoff) { onoff ? set(n) : clear(n); } + void set(const int n) { b |= (bits_t)_BV(n); } + void clear(const int n) { b &= ~(bits_t)_BV(n); } + bool test(const int n) const { return TEST(b, n); } + bool operator[](const int n) { return test(n); } + bool operator[](const int n) const { return test(n); } + int size() const { return sizeof(b); } }; // Specialization for a single bool flag @@ -129,14 +129,14 @@ typedef struct AxisFlags { struct Flags flags; struct { bool LOGICAL_AXIS_LIST(e:1, x:1, y:1, z:1, i:1, j:1, k:1, u:1, v:1, w:1); }; }; - void reset() { flags.reset(); } - void set(const int n) { flags.set(n); } - void set(const int n, const bool onoff) { flags.set(n, onoff); } - void clear(const int n) { flags.clear(n); } - bool test(const int n) const { return flags.test(n); } - bool operator[](const int n) { return flags[n]; } - bool operator[](const int n) const { return flags[n]; } - int size() const { return sizeof(flags); } + void reset() { flags.reset(); } + void set(const int n) { flags.set(n); } + void set(const int n, const bool onoff) { flags.set(n, onoff); } + void clear(const int n) { flags.clear(n); } + bool test(const int n) const { return flags.test(n); } + bool operator[](const int n) { return flags[n]; } + bool operator[](const int n) const { return flags[n]; } + int size() const { return sizeof(flags); } } axis_flags_t; // @@ -188,9 +188,9 @@ typedef IF<(NUM_AXIS_ENUMS > 8), uint16_t, uint8_t>::type axis_bits_t; // Loop over axes // #define LOOP_ABC(VAR) LOOP_S_LE_N(VAR, A_AXIS, C_AXIS) -#define LOOP_NUM_AXES(VAR) LOOP_S_L_N(VAR, X_AXIS, NUM_AXES) -#define LOOP_LOGICAL_AXES(VAR) LOOP_S_L_N(VAR, X_AXIS, LOGICAL_AXES) -#define LOOP_DISTINCT_AXES(VAR) LOOP_S_L_N(VAR, X_AXIS, DISTINCT_AXES) +#define LOOP_NUM_AXES(VAR) LOOP_S_L_N(VAR, 0, NUM_AXES) +#define LOOP_LOGICAL_AXES(VAR) LOOP_S_L_N(VAR, 0, LOGICAL_AXES) +#define LOOP_DISTINCT_AXES(VAR) LOOP_S_L_N(VAR, 0, DISTINCT_AXES) #define LOOP_DISTINCT_E(VAR) LOOP_L_N(VAR, DISTINCT_E) // diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 0b6548a3e3..6f0f27cb9d 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -86,7 +86,7 @@ NUM_AXIS_LIST( TERN0(X_SENSORLESS, tmc_enable_stallguard(stepperX)), TERN0(Y_SENSORLESS, tmc_enable_stallguard(stepperY)), - false, false, false, false + false, false, false, false, false, false, false ) , TERN0(X2_SENSORLESS, tmc_enable_stallguard(stepperX2)) , TERN0(Y2_SENSORLESS, tmc_enable_stallguard(stepperY2)) diff --git a/Marlin/src/gcode/geometry/M206_M428.cpp b/Marlin/src/gcode/geometry/M206_M428.cpp index b12e680605..b055f0e207 100644 --- a/Marlin/src/gcode/geometry/M206_M428.cpp +++ b/Marlin/src/gcode/geometry/M206_M428.cpp @@ -33,9 +33,7 @@ /** * M206: Set Additional Homing Offset (X Y Z). SCARA aliases T=X, P=Y * - * *** @thinkyhead: I recommend deprecating M206 for SCARA in favor of M665. - * *** M206 for SCARA will remain enabled in 1.1.x for compatibility. - * *** In the 2.0 release, it will simply be disabled by default. + * *** TODO: Deprecate M206 for SCARA in favor of M665. */ void GcodeSuite::M206() { if (!parser.seen_any()) return M206_report(); diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 920ad15c6c..bddc0554f5 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -758,39 +758,31 @@ #define HAS_X_AXIS 1 #if NUM_AXES >= XY #define HAS_Y_AXIS 1 - #if NUM_AXES >= XYZ - #define HAS_Z_AXIS 1 - #ifdef Z4_DRIVER_TYPE - #define NUM_Z_STEPPERS 4 - #elif defined(Z3_DRIVER_TYPE) - #define NUM_Z_STEPPERS 3 - #elif defined(Z2_DRIVER_TYPE) - #define NUM_Z_STEPPERS 2 - #else - #define NUM_Z_STEPPERS 1 - #endif - #if NUM_AXES >= 4 - #define HAS_I_AXIS 1 - #if NUM_AXES >= 5 - #define HAS_J_AXIS 1 - #if NUM_AXES >= 6 - #define HAS_K_AXIS 1 - #if NUM_AXES >= 7 - #define HAS_U_AXIS 1 - #if NUM_AXES >= 8 - #define HAS_V_AXIS 1 - #if NUM_AXES >= 9 - #define HAS_W_AXIS 1 - #endif - #endif - #endif - #endif - #endif - #endif - #endif +#endif +#if NUM_AXES >= XYZ + #define HAS_Z_AXIS 1 +#endif +#if NUM_AXES >= 4 + #define HAS_I_AXIS 1 +#endif +#if NUM_AXES >= 5 + #define HAS_J_AXIS 1 +#endif +#if NUM_AXES >= 6 + #define HAS_K_AXIS 1 +#endif +#if NUM_AXES >= 7 + #define HAS_U_AXIS 1 +#endif +#if NUM_AXES >= 8 + #define HAS_V_AXIS 1 +#endif +#if NUM_AXES >= 9 + #define HAS_W_AXIS 1 #endif #if !HAS_Y_AXIS + #undef AVOID_OBSTACLES #undef ENDSTOPPULLUP_YMIN #undef ENDSTOPPULLUP_YMAX #undef Y_MIN_ENDSTOP_INVERTING @@ -807,7 +799,17 @@ #undef MAX_SOFTWARE_ENDSTOP_Y #endif -#if !HAS_Z_AXIS +#if HAS_Z_AXIS + #ifdef Z4_DRIVER_TYPE + #define NUM_Z_STEPPERS 4 + #elif defined(Z3_DRIVER_TYPE) + #define NUM_Z_STEPPERS 3 + #elif defined(Z2_DRIVER_TYPE) + #define NUM_Z_STEPPERS 2 + #else + #define NUM_Z_STEPPERS 1 + #endif +#else #undef ENDSTOPPULLUP_ZMIN #undef ENDSTOPPULLUP_ZMAX #undef Z_MIN_ENDSTOP_INVERTING @@ -822,6 +824,7 @@ #undef Z_MIN_POS #undef Z_MAX_POS #undef MANUAL_Z_HOME_POS + #undef Z_SAFE_HOMING #undef MIN_SOFTWARE_ENDSTOP_Z #undef MAX_SOFTWARE_ENDSTOP_Z #endif diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 436b6194da..ff2e54e393 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -88,51 +88,108 @@ // Some options are disallowed without required axes #if !HAS_Y_AXIS - #undef SAFE_BED_LEVELING_START_Y #undef ARC_SUPPORT + #undef CALIBRATION_MEASURE_YMAX + #undef CALIBRATION_MEASURE_YMIN + #undef DISABLE_INACTIVE_Y + #undef HOME_Y_BEFORE_X #undef INPUT_SHAPING_Y - #undef SHAPING_FREQ_Y + #undef QUICK_HOME + #undef SAFE_BED_LEVELING_START_Y #undef SHAPING_BUFFER_Y + #undef SHAPING_FREQ_Y + #undef STEALTHCHOP_Y + #undef STEP_STATE_Y #endif + #if !HAS_Z_AXIS + #undef CALIBRATION_MEASURE_ZMAX + #undef CALIBRATION_MEASURE_ZMIN + #undef CNC_WORKSPACE_PLANES + #undef DISABLE_INACTIVE_Z + #undef ENABLE_LEVELING_FADE_HEIGHT + #undef HOME_Z_FIRST + #undef HOMING_Z_WITH_PROBE + #undef NUM_Z_STEPPERS #undef SAFE_BED_LEVELING_START_Z + #undef STEALTHCHOP_Z + #undef STEP_STATE_Z + #undef Z_IDLE_HEIGHT + #undef Z_PROBE_SLED + #undef Z_SAFE_HOMING #endif + #if !HAS_I_AXIS + #undef CALIBRATION_MEASURE_IMAX + #undef CALIBRATION_MEASURE_IMIN + #undef DISABLE_INACTIVE_I #undef SAFE_BED_LEVELING_START_I + #undef STEALTHCHOP_I + #undef STEP_STATE_I #endif + #if !HAS_J_AXIS + #undef CALIBRATION_MEASURE_JMAX + #undef CALIBRATION_MEASURE_JMIN + #undef DISABLE_INACTIVE_J #undef SAFE_BED_LEVELING_START_J + #undef STEALTHCHOP_J + #undef STEP_STATE_J #endif + #if !HAS_K_AXIS + #undef CALIBRATION_MEASURE_KMAX + #undef CALIBRATION_MEASURE_KMIN + #undef DISABLE_INACTIVE_K #undef SAFE_BED_LEVELING_START_K + #undef STEALTHCHOP_K + #undef STEP_STATE_K #endif + #if !HAS_U_AXIS + #undef CALIBRATION_MEASURE_UMAX + #undef CALIBRATION_MEASURE_UMIN + #undef DISABLE_INACTIVE_U #undef SAFE_BED_LEVELING_START_U + #undef STEALTHCHOP_U + #undef STEP_STATE_U #endif + #if !HAS_V_AXIS + #undef CALIBRATION_MEASURE_VMAX + #undef CALIBRATION_MEASURE_VMIN + #undef DISABLE_INACTIVE_V #undef SAFE_BED_LEVELING_START_V + #undef STEALTHCHOP_V + #undef STEP_STATE_V #endif + #if !HAS_W_AXIS + #undef CALIBRATION_MEASURE_WMAX + #undef CALIBRATION_MEASURE_WMIN + #undef DISABLE_INACTIVE_W #undef SAFE_BED_LEVELING_START_W + #undef STEALTHCHOP_W + #undef STEP_STATE_W #endif // Disallowed with no extruders #if !HAS_EXTRUDERS #define NO_VOLUMETRICS - #undef FWRETRACT - #undef PIDTEMP - #undef AUTOTEMP - #undef PID_EXTRUSION_SCALING - #undef LIN_ADVANCE #undef ADVANCED_PAUSE_FEATURE - #undef FILAMENT_LOAD_UNLOAD_GCODES + #undef AUTOTEMP #undef EXTRUDER_RUNOUT_PREVENT + #undef FILAMENT_LOAD_UNLOAD_GCODES + #undef FWRETRACT + #undef LCD_SHOW_E_TOTAL + #undef LIN_ADVANCE + #undef MANUAL_E_MOVES_RELATIVE + #undef PID_EXTRUSION_SCALING + #undef PIDTEMP + #undef SHOW_TEMP_ADC_VALUES + #undef STEALTHCHOP_E #undef THERMAL_PROTECTION_PERIOD #undef WATCH_TEMP_PERIOD - #undef SHOW_TEMP_ADC_VALUES - #undef LCD_SHOW_E_TOTAL - #undef MANUAL_E_MOVES_RELATIVE - #undef STEALTHCHOP_E #endif #if HOTENDS <= 7 @@ -1043,53 +1100,6 @@ #endif #endif -// Remove unused STEALTHCHOP flags -#if NUM_AXES < 9 - #undef STEALTHCHOP_W - #undef CALIBRATION_MEASURE_WMIN - #undef CALIBRATION_MEASURE_WMAX - #if NUM_AXES < 8 - #undef STEALTHCHOP_V - #undef CALIBRATION_MEASURE_VMIN - #undef CALIBRATION_MEASURE_VMAX - #if NUM_AXES < 7 - #undef STEALTHCHOP_U - #undef CALIBRATION_MEASURE_UMIN - #undef CALIBRATION_MEASURE_UMAX - #if NUM_AXES < 6 - #undef STEALTHCHOP_K - #undef CALIBRATION_MEASURE_KMIN - #undef CALIBRATION_MEASURE_KMAX - #if NUM_AXES < 5 - #undef STEALTHCHOP_J - #undef CALIBRATION_MEASURE_JMIN - #undef CALIBRATION_MEASURE_JMAX - #if NUM_AXES < 4 - #undef STEALTHCHOP_I - #undef CALIBRATION_MEASURE_IMIN - #undef CALIBRATION_MEASURE_IMAX - #if NUM_AXES < 3 - #undef STEALTHCHOP_Z - #undef Z_IDLE_HEIGHT - #undef Z_PROBE_SLED - #undef Z_SAFE_HOMING - #undef HOME_Z_FIRST - #undef HOMING_Z_WITH_PROBE - #undef ENABLE_LEVELING_FADE_HEIGHT - #undef NUM_Z_STEPPERS - #undef CNC_WORKSPACE_PLANES - #if NUM_AXES < 2 - #undef STEALTHCHOP_Y - #undef QUICK_HOME - #endif - #endif - #endif - #endif - #endif - #endif - #endif -#endif - #if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \ || defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \ || defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W) @@ -1185,10 +1195,6 @@ #define CANNOT_EMBED_CONFIGURATION defined(__AVR__) #endif -#if ANY(DISABLE_INACTIVE_X, DISABLE_INACTIVE_Y, DISABLE_INACTIVE_Z, DISABLE_INACTIVE_I, DISABLE_INACTIVE_J, DISABLE_INACTIVE_K, DISABLE_INACTIVE_U, DISABLE_INACTIVE_V, DISABLE_INACTIVE_W, DISABLE_INACTIVE_E) - #define HAS_DISABLE_INACTIVE_AXIS 1 -#endif - // Fan Kickstart #if FAN_KICKSTART_TIME && !defined(FAN_KICKSTART_POWER) #define FAN_KICKSTART_POWER 180 diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 5c149cee89..249aa5c30e 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -1308,9 +1308,6 @@ /** * Set defaults for missing (newer) options */ -#if !defined(DISABLE_INACTIVE_X) && ENABLED(DISABLE_X) - #define DISABLE_INACTIVE_X 1 -#endif #if HAS_Y_AXIS #if PIN_EXISTS(Y_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Y)) @@ -1338,11 +1335,6 @@ #if PIN_EXISTS(Y2_MS1) #define HAS_Y2_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_Y) && ENABLED(DISABLE_Y) - #define DISABLE_INACTIVE_Y 1 - #endif -#else - #undef DISABLE_INACTIVE_Y #endif #if HAS_Z_AXIS @@ -1358,11 +1350,6 @@ #if PIN_EXISTS(Z_MS1) #define HAS_Z_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_Z) && ENABLED(DISABLE_Z) - #define DISABLE_INACTIVE_Z 1 - #endif -#else - #undef DISABLE_INACTIVE_Z #endif #if NUM_Z_STEPPERS >= 2 @@ -1423,11 +1410,6 @@ #if PIN_EXISTS(I_MS1) #define HAS_I_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_I) && ENABLED(DISABLE_I) - #define DISABLE_INACTIVE_I 1 - #endif -#else - #undef DISABLE_INACTIVE_I #endif #if HAS_J_AXIS @@ -1443,11 +1425,6 @@ #if PIN_EXISTS(J_MS1) #define HAS_J_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_J) && ENABLED(DISABLE_J) - #define DISABLE_INACTIVE_J 1 - #endif -#else - #undef DISABLE_INACTIVE_J #endif #if HAS_K_AXIS @@ -1463,11 +1440,6 @@ #if PIN_EXISTS(K_MS1) #define HAS_K_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_K) && ENABLED(DISABLE_K) - #define DISABLE_INACTIVE_K 1 - #endif -#else - #undef DISABLE_INACTIVE_K #endif #if HAS_U_AXIS @@ -1483,11 +1455,6 @@ #if PIN_EXISTS(U_MS1) #define HAS_U_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_U) && ENABLED(DISABLE_U) - #define DISABLE_INACTIVE_U 1 - #endif -#else - #undef DISABLE_INACTIVE_U #endif #if HAS_V_AXIS @@ -1503,11 +1470,6 @@ #if PIN_EXISTS(V_MS1) #define HAS_V_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_V) && ENABLED(DISABLE_V) - #define DISABLE_INACTIVE_V 1 - #endif -#else - #undef DISABLE_INACTIVE_V #endif #if HAS_W_AXIS @@ -1523,11 +1485,43 @@ #if PIN_EXISTS(W_MS1) #define HAS_W_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_W) && ENABLED(DISABLE_W) - #define DISABLE_INACTIVE_W 1 - #endif -#else - #undef DISABLE_INACTIVE_W +#endif + +#if !defined(DISABLE_INACTIVE_X) && ENABLED(DISABLE_X) + #define DISABLE_INACTIVE_X +#endif +#if !defined(DISABLE_INACTIVE_Y) && ENABLED(DISABLE_Y) + #define DISABLE_INACTIVE_Y +#endif +#if !defined(DISABLE_INACTIVE_Z) && ENABLED(DISABLE_Z) + #define DISABLE_INACTIVE_Z +#endif +#if !defined(DISABLE_INACTIVE_I) && ENABLED(DISABLE_I) + #define DISABLE_INACTIVE_I +#endif +#if !defined(DISABLE_INACTIVE_J) && ENABLED(DISABLE_J) + #define DISABLE_INACTIVE_J +#endif +#if !defined(DISABLE_INACTIVE_K) && ENABLED(DISABLE_K) + #define DISABLE_INACTIVE_K +#endif +#if !defined(DISABLE_INACTIVE_U) && ENABLED(DISABLE_U) + #define DISABLE_INACTIVE_U +#endif +#if !defined(DISABLE_INACTIVE_V) && ENABLED(DISABLE_V) + #define DISABLE_INACTIVE_V +#endif +#if !defined(DISABLE_INACTIVE_W) && ENABLED(DISABLE_W) + #define DISABLE_INACTIVE_W +#endif +#if !defined(DISABLE_INACTIVE_EXTRUDER) && ENABLED(DISABLE_E) + #define DISABLE_INACTIVE_EXTRUDER +#endif +#if ANY(DISABLE_INACTIVE_X, DISABLE_INACTIVE_Y, DISABLE_INACTIVE_Z, DISABLE_INACTIVE_I, DISABLE_INACTIVE_J, DISABLE_INACTIVE_K, DISABLE_INACTIVE_U, DISABLE_INACTIVE_V, DISABLE_INACTIVE_W, DISABLE_INACTIVE_EXTRUDER) + #define HAS_DISABLE_INACTIVE_AXIS 1 +#endif +#if ANY(DISABLE_X, DISABLE_Y, DISABLE_Z, DISABLE_I, DISABLE_J, DISABLE_K, DISABLE_U, DISABLE_V, DISABLE_W, DISABLE_E) + #define HAS_DISABLE_AXIS 1 #endif // Extruder steppers and solenoids @@ -1651,11 +1645,6 @@ #endif #endif - #if !defined(DISABLE_INACTIVE_E) && ENABLED(DISABLE_E) - #define DISABLE_INACTIVE_E 1 - #endif -#else - #undef DISABLE_INACTIVE_E #endif // HAS_EXTRUDERS /** diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index d011fb18f0..11d27d6eaf 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -672,6 +672,10 @@ #error "EXPERIMENTAL_SCURVE is no longer needed and should be removed." #elif defined(BABYSTEP_ZPROBE_GFX_OVERLAY) #error "BABYSTEP_ZPROBE_GFX_OVERLAY is now BABYSTEP_GFX_OVERLAY." +#elif defined(DISABLE_INACTIVE_E) + #error "DISABLE_INACTIVE_E is now set with DISABLE_INACTIVE_EXTRUDER." +#elif defined(INVERT_X_STEP_PIN) || defined(INVERT_Y_STEP_PIN) || defined(INVERT_Z_STEP_PIN) || defined(INVERT_I_STEP_PIN) || defined(INVERT_J_STEP_PIN) || defined(INVERT_K_STEP_PIN) || defined(INVERT_U_STEP_PIN) || defined(INVERT_V_STEP_PIN) || defined(INVERT_W_STEP_PIN) || defined(INVERT_E_STEP_PIN) + #error "INVERT_*_STEP_PIN true is now STEP_STATE_* LOW, and INVERT_*_STEP_PIN false is now STEP_STATE_* HIGH." #endif // L64xx stepper drivers have been removed diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp index 721dcb63ff..091c531abb 100644 --- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp +++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp @@ -524,7 +524,9 @@ void MarlinUI::draw_status_screen() { const bool show_e_total = TERN0(LCD_SHOW_E_TOTAL, printingIsActive()); - static u8g_uint_t progress_bar_solid_width = 0; + #if HAS_PRINT_PROGRESS + static u8g_uint_t progress_bar_solid_width = 0; + #endif // At the first page, generate new display values if (first_page) { diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp index 0c6315d438..86b5e6eb4c 100644 --- a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp +++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp @@ -269,7 +269,7 @@ #if HAS_Y_AXIS WRITE(Y_DIR_PIN, HIGH); #endif - #if HAS_Y_AXIS + #if HAS_Z_AXIS WRITE(Z_DIR_PIN, HIGH); #endif #if HAS_EXTRUDERS diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index ff5449d230..25db52437f 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -1320,7 +1320,7 @@ void Planner::recalculate(TERN_(HINTS_SAFE_EXIT_SPEED, const_float_t safe_exit_s */ void Planner::check_axes_activity() { - #if ANY(DISABLE_X, DISABLE_Y, DISABLE_Z, DISABLE_I, DISABLE_J, DISABLE_K, DISABLE_U, DISABLE_V, DISABLE_W, DISABLE_E) + #if HAS_DISABLE_AXIS xyze_bool_t axis_active = { false }; #endif @@ -1360,7 +1360,7 @@ void Planner::check_axes_activity() { TERN_(HAS_HEATER_2, tail_e_to_p_pressure = block->e_to_p_pressure); #endif - #if ANY(DISABLE_X, DISABLE_Y, DISABLE_Z, DISABLE_I, DISABLE_J, DISABLE_K, DISABLE_E) + #if HAS_DISABLE_AXIS for (uint8_t b = block_buffer_tail; b != block_buffer_head; b = next_block_index(b)) { block_t * const bnext = &block_buffer[b]; LOGICAL_AXIS_CODE( @@ -1492,7 +1492,7 @@ void Planner::check_axes_activity() { thermalManager.setTargetHotend(t, active_extruder); } -#endif +#endif // AUTOTEMP #if DISABLED(NO_VOLUMETRICS) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index f9de7498d7..0750fd82aa 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -1664,7 +1664,7 @@ void Stepper::pulse_phase_isr() { do { #define _APPLY_STEP(AXIS, INV, ALWAYS) AXIS ##_APPLY_STEP(INV, ALWAYS) - #define _INVERT_STEP_PIN(AXIS) INVERT_## AXIS ##_STEP_PIN + #define _STEP_STATE(AXIS) STEP_STATE_## AXIS // Determine if a pulse is needed using Bresenham #define PULSE_PREP(AXIS) do{ \ @@ -1714,14 +1714,14 @@ void Stepper::pulse_phase_isr() { #define PULSE_START(AXIS) do{ \ if (step_needed[_AXIS(AXIS)]) { \ count_position[_AXIS(AXIS)] += count_direction[_AXIS(AXIS)]; \ - _APPLY_STEP(AXIS, !_INVERT_STEP_PIN(AXIS), 0); \ + _APPLY_STEP(AXIS, _STEP_STATE(AXIS), 0); \ } \ }while(0) // Stop an active pulse if needed #define PULSE_STOP(AXIS) do { \ if (step_needed[_AXIS(AXIS)]) { \ - _APPLY_STEP(AXIS, _INVERT_STEP_PIN(AXIS), 0); \ + _APPLY_STEP(AXIS, !_STEP_STATE(AXIS), 0); \ } \ }while(0) @@ -1933,7 +1933,7 @@ void Stepper::pulse_phase_isr() { #if ENABLED(MIXING_EXTRUDER) if (step_needed.e) { count_position[E_AXIS] += count_direction[E_AXIS]; - E_STEP_WRITE(mixer.get_next_stepper(), !INVERT_E_STEP_PIN); + E_STEP_WRITE(mixer.get_next_stepper(), STEP_STATE_E); } #elif HAS_E0_STEP PULSE_START(E); @@ -1977,7 +1977,7 @@ void Stepper::pulse_phase_isr() { #endif #if ENABLED(MIXING_EXTRUDER) - if (step_needed.e) E_STEP_WRITE(mixer.get_stepper(), INVERT_E_STEP_PIN); + if (step_needed.e) E_STEP_WRITE(mixer.get_stepper(), !STEP_STATE_E); #elif HAS_E0_STEP PULSE_STOP(E); #endif @@ -2638,7 +2638,7 @@ uint32_t Stepper::block_phase_isr() { la_delta_error -= advance_divisor; // Set the STEP pulse ON - E_STEP_WRITE(TERN(MIXING_EXTRUDER, mixer.get_next_stepper(), stepper_extruder), !INVERT_E_STEP_PIN); + E_STEP_WRITE(TERN(MIXING_EXTRUDER, mixer.get_next_stepper(), stepper_extruder), STEP_STATE_E); } TERN_(I2S_STEPPER_STREAM, i2s_push_sample()); @@ -2652,7 +2652,7 @@ uint32_t Stepper::block_phase_isr() { #endif // Set the STEP pulse OFF - E_STEP_WRITE(TERN(MIXING_EXTRUDER, mixer.get_stepper(), stepper_extruder), INVERT_E_STEP_PIN); + E_STEP_WRITE(TERN(MIXING_EXTRUDER, mixer.get_stepper(), stepper_extruder), !STEP_STATE_E); } } @@ -2906,7 +2906,7 @@ void Stepper::init() { #define AXIS_INIT(AXIS, PIN) \ _STEP_INIT(AXIS); \ - _WRITE_STEP(AXIS, _INVERT_STEP_PIN(PIN)); \ + _WRITE_STEP(AXIS, !_STEP_STATE(PIN)); \ _DISABLE_AXIS(AXIS) #define E_AXIS_INIT(NUM) AXIS_INIT(E## NUM, E) @@ -2915,7 +2915,7 @@ void Stepper::init() { #if HAS_X_STEP #if HAS_X2_STEPPER X2_STEP_INIT(); - X2_STEP_WRITE(INVERT_X_STEP_PIN); + X2_STEP_WRITE(!STEP_STATE_X); #endif AXIS_INIT(X, X); #endif @@ -2923,7 +2923,7 @@ void Stepper::init() { #if HAS_Y_STEP #if HAS_DUAL_Y_STEPPERS Y2_STEP_INIT(); - Y2_STEP_WRITE(INVERT_Y_STEP_PIN); + Y2_STEP_WRITE(!STEP_STATE_Y); #endif AXIS_INIT(Y, Y); #endif @@ -2931,15 +2931,15 @@ void Stepper::init() { #if HAS_Z_STEP #if NUM_Z_STEPPERS >= 2 Z2_STEP_INIT(); - Z2_STEP_WRITE(INVERT_Z_STEP_PIN); + Z2_STEP_WRITE(!STEP_STATE_Z); #endif #if NUM_Z_STEPPERS >= 3 Z3_STEP_INIT(); - Z3_STEP_WRITE(INVERT_Z_STEP_PIN); + Z3_STEP_WRITE(!STEP_STATE_Z); #endif #if NUM_Z_STEPPERS >= 4 Z4_STEP_INIT(); - Z4_STEP_WRITE(INVERT_Z_STEP_PIN); + Z4_STEP_WRITE(!STEP_STATE_Z); #endif AXIS_INIT(Z, Z); #endif @@ -3338,19 +3338,19 @@ void Stepper::report_positions() { #if DISABLED(DELTA) - #define BABYSTEP_AXIS(AXIS, INV, DIR) do{ \ - const uint8_t old_dir = _READ_DIR(AXIS); \ - _ENABLE_AXIS(AXIS); \ - DIR_WAIT_BEFORE(); \ - _APPLY_DIR(AXIS, _INVERT_DIR(AXIS)^DIR^INV); \ - DIR_WAIT_AFTER(); \ - _SAVE_START(); \ - _APPLY_STEP(AXIS, !_INVERT_STEP_PIN(AXIS), true); \ - _PULSE_WAIT(); \ - _APPLY_STEP(AXIS, _INVERT_STEP_PIN(AXIS), true); \ - EXTRA_DIR_WAIT_BEFORE(); \ - _APPLY_DIR(AXIS, old_dir); \ - EXTRA_DIR_WAIT_AFTER(); \ + #define BABYSTEP_AXIS(AXIS, INV, DIR) do{ \ + const uint8_t old_dir = _READ_DIR(AXIS); \ + _ENABLE_AXIS(AXIS); \ + DIR_WAIT_BEFORE(); \ + _APPLY_DIR(AXIS, _INVERT_DIR(AXIS)^DIR^INV); \ + DIR_WAIT_AFTER(); \ + _SAVE_START(); \ + _APPLY_STEP(AXIS, _STEP_STATE(AXIS), true); \ + _PULSE_WAIT(); \ + _APPLY_STEP(AXIS, !_STEP_STATE(AXIS), true); \ + EXTRA_DIR_WAIT_BEFORE(); \ + _APPLY_DIR(AXIS, old_dir); \ + EXTRA_DIR_WAIT_AFTER(); \ }while(0) #endif @@ -3365,11 +3365,11 @@ void Stepper::report_positions() { _APPLY_DIR(B, _INVERT_DIR(B)^DIR^INV^ALT); \ DIR_WAIT_AFTER(); \ _SAVE_START(); \ - _APPLY_STEP(A, !_INVERT_STEP_PIN(A), true); \ - _APPLY_STEP(B, !_INVERT_STEP_PIN(B), true); \ + _APPLY_STEP(A, _STEP_STATE(A), true); \ + _APPLY_STEP(B, _STEP_STATE(B), true); \ _PULSE_WAIT(); \ - _APPLY_STEP(A, _INVERT_STEP_PIN(A), true); \ - _APPLY_STEP(B, _INVERT_STEP_PIN(B), true); \ + _APPLY_STEP(A, !_STEP_STATE(A), true); \ + _APPLY_STEP(B, !_STEP_STATE(B), true); \ EXTRA_DIR_WAIT_BEFORE(); \ _APPLY_DIR(A, old_dir.a); _APPLY_DIR(B, old_dir.b); \ EXTRA_DIR_WAIT_AFTER(); \ @@ -3466,58 +3466,58 @@ void Stepper::report_positions() { _SAVE_START(); - X_STEP_WRITE(!INVERT_X_STEP_PIN); + X_STEP_WRITE(STEP_STATE_X); #ifdef Y_STEP_WRITE - Y_STEP_WRITE(!INVERT_Y_STEP_PIN); + Y_STEP_WRITE(STEP_STATE_Y); #endif #ifdef Z_STEP_WRITE - Z_STEP_WRITE(!INVERT_Z_STEP_PIN); + Z_STEP_WRITE(STEP_STATE_Z); #endif #ifdef I_STEP_WRITE - I_STEP_WRITE(!INVERT_I_STEP_PIN); + I_STEP_WRITE(STEP_STATE_I); #endif #ifdef J_STEP_WRITE - J_STEP_WRITE(!INVERT_J_STEP_PIN); + J_STEP_WRITE(STEP_STATE_J); #endif #ifdef K_STEP_WRITE - K_STEP_WRITE(!INVERT_K_STEP_PIN); + K_STEP_WRITE(STEP_STATE_K); #endif #ifdef U_STEP_WRITE - U_STEP_WRITE(!INVERT_U_STEP_PIN); + U_STEP_WRITE(STEP_STATE_U); #endif #ifdef V_STEP_WRITE - V_STEP_WRITE(!INVERT_V_STEP_PIN); + V_STEP_WRITE(STEP_STATE_V); #endif #ifdef W_STEP_WRITE - W_STEP_WRITE(!INVERT_W_STEP_PIN); + W_STEP_WRITE(STEP_STATE_W); #endif _PULSE_WAIT(); - X_STEP_WRITE(INVERT_X_STEP_PIN); + X_STEP_WRITE(!STEP_STATE_X); #ifdef Y_STEP_WRITE - Y_STEP_WRITE(INVERT_Y_STEP_PIN); + Y_STEP_WRITE(!STEP_STATE_Y); #endif #ifdef Z_STEP_WRITE - Z_STEP_WRITE(INVERT_Z_STEP_PIN); + Z_STEP_WRITE(!STEP_STATE_Z); #endif #ifdef I_STEP_WRITE - I_STEP_WRITE(INVERT_I_STEP_PIN); + I_STEP_WRITE(!STEP_STATE_I); #endif #ifdef J_STEP_WRITE - J_STEP_WRITE(INVERT_J_STEP_PIN); + J_STEP_WRITE(!STEP_STATE_J); #endif #ifdef K_STEP_WRITE - K_STEP_WRITE(INVERT_K_STEP_PIN); + K_STEP_WRITE(!STEP_STATE_K); #endif #ifdef U_STEP_WRITE - U_STEP_WRITE(INVERT_U_STEP_PIN); + U_STEP_WRITE(!STEP_STATE_U); #endif #ifdef V_STEP_WRITE - V_STEP_WRITE(INVERT_V_STEP_PIN); + V_STEP_WRITE(!STEP_STATE_V); #endif #ifdef W_STEP_WRITE - W_STEP_WRITE(INVERT_W_STEP_PIN); + W_STEP_WRITE(!STEP_STATE_W); #endif // Restore direction bits diff --git a/buildroot/tests/mega2560 b/buildroot/tests/mega2560 index 7cac8b13b0..bd855f1df1 100755 --- a/buildroot/tests/mega2560 +++ b/buildroot/tests/mega2560 @@ -53,7 +53,6 @@ opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER LIGHTWEIGHT_UI SHOW_CUS opt_disable SEGMENT_LEVELED_MOVES exec_test $1 $2 "Azteeg X3 Pro | EXTRUDERS 5 | RRDFGSC | UBL | LIN_ADVANCE | Sled Probe | Skew | JP-Kana | Babystep offsets ..." "$3" - # # 5 runout sensors with distinct states # @@ -126,7 +125,7 @@ exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Input Shaping #opt_set MOTHERBOARD BOARD_RIGIDBOARD_V2 #opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT BABYSTEPPING DAC_MOTOR_CURRENT_DEFAULT #exec_test $1 $2 "Stuff" "$3" -# # +# # G3D_PANEL with SDCARD_SORT_ALPHA and STATUS_MESSAGE_SCROLLING # #restore_configs @@ -177,9 +176,9 @@ exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Input Shaping #opt_enable LCM1602 #exec_test $1 $2 "Stuff" "$3" -# # -# # Test Laser features with 12864 LCD -# # +# +# Test Laser features with 12864 LCD +# # restore_configs # opt_set MOTHERBOARD BOARD_RAMPS_14_EFB EXTRUDERS 0 LCD_LANGUAGE en TEMP_SENSOR_COOLER 1 TEMP_SENSOR_1 0 SERIAL_PORT_2 2 \ # DEFAULT_AXIS_STEPS_PER_UNIT '{ 80, 80, 400 }' \ @@ -191,9 +190,9 @@ exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Input Shaping # LASER_FEATURE LASER_SAFETY_TIMEOUT_MS LASER_COOLANT_FLOW_METER AIR_EVACUATION AIR_EVACUATION_PIN AIR_ASSIST AIR_ASSIST_PIN LASER_SYNCHRONOUS_M106_M107 # exec_test $1 $2 "MEGA2560 RAMPS | Laser Options | 12864 | Meatpack | Fan Sync | SERIAL_PORT_2 " "$3" -# # -# # Test Laser features with 44780 LCD -# # +# +# Test Laser features with 44780 LCD +# # restore_configs # opt_set MOTHERBOARD BOARD_RAMPS_14_EFB EXTRUDERS 0 LCD_LANGUAGE en TEMP_SENSOR_COOLER 1 TEMP_SENSOR_1 0 \ # DEFAULT_AXIS_STEPS_PER_UNIT '{ 80, 80, 400 }' \ @@ -205,9 +204,9 @@ exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Input Shaping # LASER_FEATURE LASER_SAFETY_TIMEOUT_MS LASER_COOLANT_FLOW_METER AIR_EVACUATION AIR_EVACUATION_PIN AIR_ASSIST AIR_ASSIST_PIN # exec_test $1 $2 "MEGA2560 RAMPS | Laser Feature | Air Evacuation | Air Assist | Cooler | Laser Safety Timeout | Flowmeter | 44780 LCD " "$3" -# # -# # Test redundant temperature sensors + MAX TC + Backlight Timeout -# # +# +# Test redundant temperature sensors + MAX TC + Backlight Timeout +# # restore_configs # opt_set MOTHERBOARD BOARD_RAMPS_14_EFB EXTRUDERS 1 \ # TEMP_SENSOR_0 -2 TEMP_SENSOR_REDUNDANT -2 \ @@ -218,9 +217,9 @@ exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Input Shaping # opt_disable PIDTEMP # exec_test $1 $2 "MEGA2560 RAMPS | Redundant temperature sensor | 2x MAX6675 | BL Timeout" "$3" -# # -# # Polargraph Config -# # +# +# Polargraph Config +# # use_example_configs Polargraph # exec_test $1 $2 "RUMBA | POLARGRAPH | RRD LCD" "$3" From c5d5c375fdee7c4912b22e717caa82465ce6ccf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Fri, 24 Feb 2023 03:29:47 +0000 Subject: [PATCH 054/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Reduce=20edit=5Fsc?= =?UTF-8?q?reen=20code=20size=20(#25420)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/menu/menu.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Marlin/src/lcd/menu/menu.cpp b/Marlin/src/lcd/menu/menu.cpp index 7f55f79f03..c529ae757a 100644 --- a/Marlin/src/lcd/menu/menu.cpp +++ b/Marlin/src/lcd/menu/menu.cpp @@ -117,8 +117,7 @@ void MenuEditItemBase::edit_screen(strfunc_t strfunc, loadfunc_t loadfunc) { // Reset repeat_delay for Touch Buttons TERN_(HAS_TOUCH_BUTTONS, ui.repeat_delay = BUTTON_DELAY_EDIT); // Constrain ui.encoderPosition to 0 ... maxEditValue (calculated in encoder steps) - if (int32_t(ui.encoderPosition) < 0) ui.encoderPosition = 0; - if (int32_t(ui.encoderPosition) > maxEditValue) ui.encoderPosition = maxEditValue; + ui.encoderPosition = constrain(int32_t(ui.encoderPosition), 0, maxEditValue); // If drawing is flagged then redraw the (whole) edit screen if (ui.should_draw()) draw_edit_screen(strfunc(ui.encoderPosition + minEditValue)); From acfde4e7e5e1fc4ad46a26700f25a6e60e325967 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 23 Feb 2023 21:38:11 -0600 Subject: [PATCH 055/659] =?UTF-8?q?=F0=9F=8E=A8=20Use=20LIMIT=20macro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 6 ++---- Marlin/src/lcd/menu/game/brickout.cpp | 6 ++---- Marlin/src/lcd/menu/menu_mixer.cpp | 3 +-- Marlin/src/lcd/tft/touch.cpp | 6 ++---- Marlin/src/module/planner.cpp | 3 +-- 5 files changed, 8 insertions(+), 16 deletions(-) diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 8894150c98..3f13fe8b3b 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -4229,8 +4229,7 @@ void CrealityDWINClass::Value_Control() { if (funcpointer) funcpointer(); return; } - NOLESS(tempvalue, (valuemin * valueunit)); - NOMORE(tempvalue, (valuemax * valueunit)); + LIMIT(tempvalue, valuemin * valueunit, valuemax * valueunit); Draw_Float(tempvalue / valueunit, selection - scrollpos, true, valueunit); DWIN_UpdateLCD(); if (active_menu == Move && livemove) { @@ -4272,8 +4271,7 @@ void CrealityDWINClass::Option_Control() { DWIN_UpdateLCD(); return; } - NOLESS(tempvalue, valuemin); - NOMORE(tempvalue, valuemax); + LIMIT(tempvalue, valuemin, valuemax); Draw_Option(tempvalue, static_cast(valuepointer), selection - scrollpos, true); DWIN_UpdateLCD(); } diff --git a/Marlin/src/lcd/menu/game/brickout.cpp b/Marlin/src/lcd/menu/game/brickout.cpp index d738250b60..fc4d19b1d9 100644 --- a/Marlin/src/lcd/menu/game/brickout.cpp +++ b/Marlin/src/lcd/menu/game/brickout.cpp @@ -117,13 +117,11 @@ void BrickoutGame::game_screen() { } else if (diff <= 3) { bdat.ballh += fixed_t(random(-64, 0)); - NOLESS(bdat.ballh, BTOF(-2)); - NOMORE(bdat.ballh, BTOF(2)); + LIMIT(bdat.ballh, BTOF(-2), BTOF(2)); } else if (diff >= PADDLE_W-1 - 3) { bdat.ballh += fixed_t(random( 0, 64)); - NOLESS(bdat.ballh, BTOF(-2)); - NOMORE(bdat.ballh, BTOF(2)); + LIMIT(bdat.ballh, BTOF(-2), BTOF(2)); } // Paddle hit after clearing the board? Reset the board. diff --git a/Marlin/src/lcd/menu/menu_mixer.cpp b/Marlin/src/lcd/menu/menu_mixer.cpp index feb4c59f18..f18c5bbfeb 100644 --- a/Marlin/src/lcd/menu/menu_mixer.cpp +++ b/Marlin/src/lcd/menu/menu_mixer.cpp @@ -50,8 +50,7 @@ if (ui.encoderPosition) { zvar += float(int32_t(ui.encoderPosition)) * 0.1; ui.encoderPosition = 0; - NOLESS(zvar, 0); - NOMORE(zvar, Z_MAX_POS); + LIMIT(zvar, 0, Z_MAX_POS); } if (ui.should_draw()) { diff --git a/Marlin/src/lcd/tft/touch.cpp b/Marlin/src/lcd/tft/touch.cpp index 77082db0d7..cc800cddc3 100644 --- a/Marlin/src/lcd/tft/touch.cpp +++ b/Marlin/src/lcd/tft/touch.cpp @@ -113,10 +113,8 @@ void Touch::idle() { if (x != 0 && y != 0) { if (current_control) { if (WITHIN(x, current_control->x - FREE_MOVE_RANGE, current_control->x + current_control->width + FREE_MOVE_RANGE) && WITHIN(y, current_control->y - FREE_MOVE_RANGE, current_control->y + current_control->height + FREE_MOVE_RANGE)) { - NOLESS(x, current_control->x); - NOMORE(x, current_control->x + current_control->width); - NOLESS(y, current_control->y); - NOMORE(y, current_control->y + current_control->height); + LIMIT(x, current_control->x, current_control->x + current_control->width); + LIMIT(y, current_control->y, current_control->y + current_control->height); touch(current_control); } else diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 25db52437f..583e3686a0 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -3453,8 +3453,7 @@ void Planner::set_max_feedrate(const AxisEnum axis, float inMaxFeedrateMMS) { // Doesn't matter because block_buffer_runtime_us is already too small an estimation. bbru >>= 10; // limit to about a minute. - NOMORE(bbru, 0x0000FFFFUL); - return bbru; + return _MIN(bbru, 0x0000FFFFUL); } void Planner::clear_block_buffer_runtime() { From 7552fc8f8d96a01bfe12756374307b793bc729ec Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 23 Feb 2023 22:01:44 -0600 Subject: [PATCH 056/659] =?UTF-8?q?=F0=9F=93=9D=20Update=20DISABLE=5FINACT?= =?UTF-8?q?IVE=5F*=20comment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25422 --- Marlin/Configuration_adv.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 6d74a130c7..abb238e33e 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1118,7 +1118,7 @@ /** * Idle Stepper Shutdown - * Set DISABLE_INACTIVE_? 'true' to shut down axis steppers after an idle period. + * Enable DISABLE_INACTIVE_* to shut down axis steppers after an idle period. * The Deactive Time can be overridden with M18 and M84. Set to 0 for No Timeout. */ #define DEFAULT_STEPPER_DEACTIVE_TIME 120 From b1f45b384b2e472219ca055050ebd2182eea045d Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 24 Feb 2023 06:06:31 +0000 Subject: [PATCH 057/659] [cron] Bump distribution date (2023-02-24) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index e36c2b5f78..3719a0aafe 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-23" +//#define STRING_DISTRIBUTION_DATE "2023-02-24" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 656060be9f..30f7951878 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-23" + #define STRING_DISTRIBUTION_DATE "2023-02-24" #endif /** From 03eb9b058252bdaf099558ed8dfaa837aaf1411c Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Mon, 27 Feb 2023 15:23:39 +1300 Subject: [PATCH 058/659] =?UTF-8?q?=F0=9F=93=9D=20New=20URL=20for=20IA=5FC?= =?UTF-8?q?REALITY=20DWIN=20files=20=20(#25423)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index c163c58704..e9c175a006 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -3036,7 +3036,7 @@ * - Copy the downloaded DWIN_SET folder to the SD card. * * IA_CREALITY (T5UID1) - * - Download https://github.com/InsanityAutomation/Marlin/raw/CrealityDwin2.0_Bleeding/TM3D_Combined480272_Landscape_V7.7z + * - Download https://github.com/InsanityAutomation/Marlin/raw/CrealityDwin_2.0/TM3D_Combined480272_Landscape_V7.7z * - Copy the downloaded DWIN_SET folder to the SD card. * * Flash display with DGUS Displays for Marlin: From db904f1895d27c0e97dc066074367566406ee3e7 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Mon, 27 Feb 2023 15:27:58 +1300 Subject: [PATCH 059/659] =?UTF-8?q?=F0=9F=93=9D=20Link=20to=20archived=20R?= =?UTF-8?q?A=20Control=20Panel=20page=20(#25424)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index e9c175a006..f780bdd243 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2725,7 +2725,7 @@ // // Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 +// https://web.archive.org/web/20140823033947/http://www.elefu.com/index.php?route=product/product&product_id=53 // //#define RA_CONTROL_PANEL From 445181fc421891726973fa086c1de0601912d45e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 26 Feb 2023 20:54:10 -0600 Subject: [PATCH 060/659] =?UTF-8?q?=F0=9F=A9=B9=20Native=20types=20for=20R?= =?UTF-8?q?TS=20overloads=20(#25440)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25400 --- .../lcd/extui/ia_creality/creality_extui.cpp | 51 +++++++++---------- .../lcd/extui/ia_creality/creality_extui.h | 26 +++++----- .../src/lcd/extui/mks_ui/wifiSerial_STM32.cpp | 2 +- 3 files changed, 39 insertions(+), 40 deletions(-) diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp index d27d68aad4..547b500106 100644 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp +++ b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp @@ -92,7 +92,7 @@ namespace ExtUI { DWIN_SERIAL.begin(115200); rtscheck.recdat.head[0] = rtscheck.snddat.head[0] = FHONE; rtscheck.recdat.head[1] = rtscheck.snddat.head[1] = FHTWO; - memset(rtscheck.databuf, 0, sizeof(rtscheck.databuf)); + ZERO(rtscheck.databuf); delay_ms(TERN(DWINOS_4, 1500, 500)); // Delay to allow screen startup SetTouchScreenConfiguration(); @@ -206,7 +206,7 @@ namespace ExtUI { if (waitway_lock > 100) { waitway_lock = 0; - waitway = 0; // clear waitway if nothing is going on + waitway = 0; // clear waitway if nothing is going on } switch (waitway) { @@ -416,7 +416,7 @@ namespace ExtUI { RTSSHOW::RTSSHOW() { recdat.head[0] = snddat.head[0] = FHONE; recdat.head[1] = snddat.head[1] = FHTWO; - memset(databuf, 0, sizeof(databuf)); + ZERO(databuf); } int16_t RTSSHOW::RTS_RecData() { @@ -494,8 +494,8 @@ namespace ExtUI { return -1; } - void RTSSHOW::RTS_SndData(void) { - if ((snddat.head[0] == FHONE) && (snddat.head[1] == FHTWO) && snddat.len >= 3) { + void RTSSHOW::RTS_SndData() { + if (snddat.head[0] == FHONE && snddat.head[1] == FHTWO && snddat.len >= 3) { databuf[0] = snddat.head[0]; databuf[1] = snddat.head[1]; databuf[2] = snddat.len; @@ -527,7 +527,7 @@ namespace ExtUI { } memset(&snddat, 0, sizeof(snddat)); - memset(databuf, 0, sizeof(databuf)); + ZERO(databuf); snddat.head[0] = FHONE; snddat.head[1] = FHTWO; } @@ -539,7 +539,6 @@ namespace ExtUI { } void RTSSHOW::RTS_SndData(const char *str, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { - int16_t len = strlen(str); constexpr int16_t maxlen = SizeofDatabuf - 6; if (len > 0) { @@ -556,25 +555,29 @@ namespace ExtUI { DWIN_SERIAL.write(databuf[i]); delay_us(1); } - memset(databuf, 0, sizeof(databuf)); + ZERO(databuf); } } - void RTSSHOW::RTS_SndData(char c, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { + void RTSSHOW::RTS_SndData(const char c, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { snddat.command = cmd; snddat.addr = addr; - snddat.data[0] = uint32_t(c); - snddat.data[0] = snddat.data[0] << 8; + snddat.data[0] = uint32_t(uint16_t(c) << 8); snddat.len = 5; RTS_SndData(); } - void RTSSHOW::RTS_SndData(uint8_t *str, uint32_t addr, uint8_t cmd) { RTS_SndData((char *)str, addr, cmd); } - - void RTSSHOW::RTS_SndData(int16_t n, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { + void RTSSHOW::RTS_SndData(const int n, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { if (cmd == VarAddr_W) { - snddat.data[0] = n; - snddat.len = 5; + if ((unsigned int)n > 0xFFFF) { + snddat.data[0] = n >> 16; + snddat.data[1] = n & 0xFFFF; + snddat.len = 7; + } + else { + snddat.data[0] = n; + snddat.len = 5; + } } else if (cmd == RegAddr_W) { snddat.data[0] = n; @@ -589,13 +592,7 @@ namespace ExtUI { RTS_SndData(); } - void RTSSHOW::RTS_SndData(uint16_t n, uint32_t addr, uint8_t cmd) { RTS_SndData(int16_t(n), addr, cmd); } - - void RTSSHOW::RTS_SndData(float n, uint32_t addr, uint8_t cmd) { RTS_SndData(int16_t(n), addr, cmd); } - - void RTSSHOW::RTS_SndData(int32_t n, uint32_t addr, uint8_t cmd) { RTS_SndData(uint32_t(n), addr, cmd); } - - void RTSSHOW::RTS_SndData(uint32_t n, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { + void RTSSHOW::RTS_SndData(const unsigned long n, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { if (cmd == VarAddr_W) { if (n > 0xFFFF) { snddat.data[0] = n >> 16; @@ -632,11 +629,11 @@ namespace ExtUI { if (recdat.addr == Addrbuf[i]) { if (Addrbuf[i] == NzBdSet || Addrbuf[i] == NozzlePreheat || Addrbuf[i] == BedPreheat || Addrbuf[i] == Flowrate) Checkkey = ManualSetTemp; - else if (Addrbuf[i] >= Stopprint && Addrbuf[i] <= Resumeprint) + else if (WITHIN(Addrbuf[i], Stopprint, Resumeprint)) Checkkey = PrintChoice; - else if (Addrbuf[i] >= AutoZero && Addrbuf[i] <= DisplayZaxis) + else if (WITHIN(Addrbuf[i], AutoZero, DisplayZaxis)) Checkkey = XYZEaxis; - else if (Addrbuf[i] >= FilamentUnit1 && Addrbuf[i] <= FilamentUnit2) + else if (WITHIN(Addrbuf[i], FilamentUnit1, FilamentUnit2)) Checkkey = Filament; else Checkkey = i; @@ -1054,7 +1051,7 @@ namespace ExtUI { else if (recdat.data[0] == 2) { // Exchange filament InforShowStatus = true; TPShowStatus = false; - memset(ChangeMaterialbuf, 0, sizeof(ChangeMaterialbuf)); + ZERO(ChangeMaterialbuf); ChangeMaterialbuf[1] = ChangeMaterialbuf[0] = 10; RTS_SndData(10 * ChangeMaterialbuf[0], FilamentUnit1); // It's ChangeMaterialbuf for show,instead of current_position[E_AXIS] in them. RTS_SndData(10 * ChangeMaterialbuf[1], FilamentUnit2); diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.h b/Marlin/src/lcd/extui/ia_creality/creality_extui.h index 874a51b6f6..35162eebee 100644 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.h +++ b/Marlin/src/lcd/extui/ia_creality/creality_extui.h @@ -223,19 +223,21 @@ namespace ExtUI { public: RTSSHOW(); int16_t RTS_RecData(); - void RTS_SDCardInit(void); + void RTS_SDCardInit(); void RTS_SDCardUpate(bool, bool); int16_t RTS_CheckFilament(int16_t); - void RTS_SndData(void); - void RTS_SndData(const String &, uint32_t, uint8_t=VarAddr_W); - void RTS_SndData(const char[], uint32_t, uint8_t=VarAddr_W); - void RTS_SndData(char, uint32_t, uint8_t=VarAddr_W); - void RTS_SndData(uint8_t*, uint32_t, uint8_t=VarAddr_W); - void RTS_SndData(int16_t, uint32_t, uint8_t=VarAddr_W); - void RTS_SndData(float, uint32_t, uint8_t=VarAddr_W); - void RTS_SndData(uint16_t, uint32_t, uint8_t=VarAddr_W); - void RTS_SndData(int32_t, uint32_t, uint8_t=VarAddr_W); - void RTS_SndData(uint32_t, uint32_t, uint8_t=VarAddr_W); + void RTS_SndData(); + void RTS_SndData(const String&, const uint32_t, const uint8_t=VarAddr_W); + void RTS_SndData(const char[], const uint32_t, const uint8_t=VarAddr_W); + void RTS_SndData(char, const uint32_t, const uint8_t=VarAddr_W); + void RTS_SndData(int, const uint32_t, const uint8_t=VarAddr_W); + void RTS_SndData(unsigned long, const uint32_t, const uint8_t=VarAddr_W); + + void RTS_SndData(uint8_t * const str, const uint32_t addr, const uint8_t cmd=VarAddr_W) { RTS_SndData((char *)str, addr, cmd); } + void RTS_SndData(const unsigned int n, uint32_t addr, const uint8_t cmd=VarAddr_W) { RTS_SndData(int(n), addr, cmd); } + void RTS_SndData(const_float_t n, const uint32_t addr, const uint8_t cmd=VarAddr_W) { RTS_SndData(int(n), addr, cmd); } + void RTS_SndData(const long n, const uint32_t addr, const uint8_t cmd=VarAddr_W) { RTS_SndData((unsigned long)n, addr, cmd); } + void RTS_SDcard_Stop(); void RTS_HandleData(); void RTS_Init(); @@ -281,7 +283,7 @@ namespace ExtUI { Filename = Filename_Value }; - const uint32_t Addrbuf[] = { + const uint16_t Addrbuf[] = { 0x1002, 0x1004, 0x1006, 0x1008, 0x100A, 0x100C, 0x1026, 0x1030, 0x1032, 0x1034, 0x103A, 0x103E, 0x1040, 0x1044, 0x1046, 0x1048, 0x104A, 0x104C, 0x1054, 0x1056, 0x1058, 0x105C, 0x105E, 0x105F, 0x1088, 0 diff --git a/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32.cpp b/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32.cpp index cac3d2a17d..9d7f5e2032 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32.cpp @@ -322,7 +322,7 @@ int WifiSerial::read() { // if the head isn't ahead of the tail, we don't have any characters if (_serial.rx_head == _serial.rx_tail) return -1; - unsigned char c = _serial.rx_buff[_serial.rx_tail]; + uint8_t c = _serial.rx_buff[_serial.rx_tail]; _serial.rx_tail = (rx_buffer_index_t)(_serial.rx_tail + 1) % WIFI_RX_BUF_SIZE; return c; } From 106896309245b946276d83fa3ea4ebc4e9aa33ea Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Sun, 26 Feb 2023 19:03:28 -0800 Subject: [PATCH 061/659] =?UTF-8?q?=F0=9F=94=A8=20Fix=20env=20STM32G0B1RE?= =?UTF-8?q?=5Fbtt,=20add=20=E2=80=A6=5Fmanta=5Fbtt=20(#25431)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/pins.h | 6 ++--- .../variants/MARLIN_BIGTREE_GTR_V1/variant.h | 2 +- .../MARLIN_BIGTREE_SKR_PRO_11/variant.h | 2 +- .../MARLIN_CREALITY_STM32F401RC/variant.h | 4 +-- .../MARLIN_FYSETC_CHEETAH_V20/variant.h | 2 +- .../MARLIN_FYSETC_SPIDER_KING407/variant.h | 2 +- .../variant_MARLIN_STM32G0B1RE.h | 12 --------- ini/stm32g0.ini | 26 +++++++++++++++++-- 8 files changed, 33 insertions(+), 23 deletions(-) diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 18bb7dba58..1c45b0b155 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -546,11 +546,11 @@ #elif MB(BTT_SKR_MINI_E3_V3_0) #include "stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h" // STM32G0 env:STM32G0B1RE_btt env:STM32G0B1RE_btt_xfer #elif MB(BTT_MANTA_M4P_V1_0) - #include "stm32g0/pins_BTT_MANTA_M4P_V1_0.h" // STM32G0 env:STM32G0B1RE_btt env:STM32G0B1RE_btt_xfer + #include "stm32g0/pins_BTT_MANTA_M4P_V1_0.h" // STM32G0 env:STM32G0B1RE_manta_btt env:STM32G0B1RE_manta_btt_xfer #elif MB(BTT_MANTA_M5P_V1_0) - #include "stm32g0/pins_BTT_MANTA_M5P_V1_0.h" // STM32G0 env:STM32G0B1RE_btt env:STM32G0B1RE_btt_xfer + #include "stm32g0/pins_BTT_MANTA_M5P_V1_0.h" // STM32G0 env:STM32G0B1RE_manta_btt env:STM32G0B1RE_manta_btt_xfer #elif MB(BTT_MANTA_E3_EZ_V1_0) - #include "stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h" // STM32G0 env:STM32G0B1RE_btt env:STM32G0B1RE_btt_xfer + #include "stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h" // STM32G0 env:STM32G0B1RE_manta_btt env:STM32G0B1RE_manta_btt_xfer #elif MB(BTT_MANTA_M8P_V1_0) #include "stm32g0/pins_BTT_MANTA_M8P_V1_0.h" // STM32G0 env:STM32G0B1VE_btt env:STM32G0B1VE_btt_xfer #elif MB(BTT_MANTA_M8P_V1_1) diff --git a/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_GTR_V1/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_GTR_V1/variant.h index 2c70693991..d39e665d53 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_GTR_V1/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_GTR_V1/variant.h @@ -280,7 +280,7 @@ extern "C" { #define PIN_SERIAL_TX PA9 // Optional PIN_SERIALn_RX and PIN_SERIALn_TX where 'n' is the U(S)ART number -// Used when user instantiate a hardware Serial using its peripheral name. +// Used when the user instantiates a hardware Serial using its peripheral name. // Example: HardwareSerial mySerial(USART3); // will use PIN_SERIAL3_RX and PIN_SERIAL3_TX if defined. #define PIN_SERIAL1_RX PA10 diff --git a/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_SKR_PRO_11/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_SKR_PRO_11/variant.h index b5cf0bad9d..c30d7ecc77 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_SKR_PRO_11/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_SKR_PRO_11/variant.h @@ -280,7 +280,7 @@ extern "C" { #define PIN_SERIAL_TX PA9 // Optional PIN_SERIALn_RX and PIN_SERIALn_TX where 'n' is the U(S)ART number -// Used when user instantiate a hardware Serial using its peripheral name. +// Used when the user instantiates a hardware Serial using its peripheral name. // Example: HardwareSerial mySerial(USART3); // will use PIN_SERIAL3_RX and PIN_SERIAL3_TX if defined. #define PIN_SERIAL1_RX PA10 diff --git a/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RC/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RC/variant.h index b5a4e5ef80..595601aae0 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RC/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RC/variant.h @@ -112,7 +112,7 @@ extern "C" { #define PIN_SERIAL_RX PA10 #define PIN_SERIAL_TX PA9 -// Used when user instanciate a hardware Serial using its peripheral name. +// Used when the user instantiates a hardware Serial using its peripheral name. // Example: HardwareSerial mySerial(USART3); // will use PIN_SERIAL3_RX and PIN_SERIAL3_TX if defined. #define PIN_SERIAL1_RX PA10 @@ -148,4 +148,4 @@ extern "C" { #define SERIAL_PORT_HARDWARE_OPEN Serial2 #endif -#endif /* _VARIANT_ARDUINO_STM32_ */ \ No newline at end of file +#endif /* _VARIANT_ARDUINO_STM32_ */ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_CHEETAH_V20/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_CHEETAH_V20/variant.h index d4982113a0..a090113fa3 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_CHEETAH_V20/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_CHEETAH_V20/variant.h @@ -110,7 +110,7 @@ extern "C" { #define PIN_SERIAL_RX PA10 #define PIN_SERIAL_TX PA9 -// Used when user instantiate a hardware Serial using its peripheral name. +// Used when the user instantiates a hardware Serial using its peripheral name. // Example: HardwareSerial mySerial(USART3); // will use PIN_SERIAL3_RX and PIN_SERIAL3_TX if defined. #define PIN_SERIAL1_RX PA10 diff --git a/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/variant.h index 727c0d07d8..c3a0c16811 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/variant.h @@ -196,7 +196,7 @@ extern "C" { #define PIN_SERIAL_TX PA9 // Optional PIN_SERIALn_RX and PIN_SERIALn_TX where 'n' is the U(S)ART number -// Used when user instantiate a hardware Serial using its peripheral name. +// Used when the user instantiates a hardware Serial using its peripheral name. // Example: HardwareSerial mySerial(USART3); // will use PIN_SERIAL3_RX and PIN_SERIAL3_TX if defined. #define PIN_SERIAL1_RX PA10 diff --git a/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/variant_MARLIN_STM32G0B1RE.h b/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/variant_MARLIN_STM32G0B1RE.h index 23cecd371a..6a26baff45 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/variant_MARLIN_STM32G0B1RE.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_G0B1RE/variant_MARLIN_STM32G0B1RE.h @@ -158,9 +158,6 @@ #endif // UART Definitions -//#define ENABLE_HWSERIAL1 done automatically by the #define SERIAL_UART_INSTANCE below -#define ENABLE_HWSERIAL3 - #ifndef SERIAL_UART_INSTANCE #define SERIAL_UART_INSTANCE 2 #endif @@ -174,15 +171,6 @@ #define PIN_SERIAL_TX PA2 #endif -// Optional PIN_SERIALn_RX and PIN_SERIALn_TX where 'n' is the U(S)ART number -// Used when user instantiate a hardware Serial using its peripheral name. -// Example: HardwareSerial mySerial(USART3); -// will use PIN_SERIAL3_RX and PIN_SERIAL3_TX if defined. -#define PIN_SERIAL1_RX PA3 -#define PIN_SERIAL1_TX PA2 -#define PIN_SERIAL3_RX PD9 -#define PIN_SERIAL3_TX PD8 - /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/ini/stm32g0.ini b/ini/stm32g0.ini index 5891395642..2ffee09790 100644 --- a/ini/stm32g0.ini +++ b/ini/stm32g0.ini @@ -41,7 +41,7 @@ upload_protocol = stlink debug_tool = stlink # -# BigTreeTech SKR Mini E3 V3.0 / Manta E3 EZ V1.0 / Manta M4P V1.0 / Manta M5P V1.0 (STM32G0B1RET6 ARM Cortex-M0+) +# BigTreeTech SKR Mini E3 V3.0 (STM32G0B1RET6 ARM Cortex-M0+) # [env:STM32G0B1RE_btt] extends = stm32_variant @@ -59,7 +59,7 @@ upload_protocol = stlink debug_tool = stlink # -# BigTreeTech SKR Mini E3 V3.0 / Manta E3 EZ V1.0 / Manta M4P V1.0 / Manta M5P V1.0 (STM32G0B1RET6 ARM Cortex-M0+) +# BigTreeTech SKR Mini E3 V3.0 (STM32G0B1RET6 ARM Cortex-M0+) # Custom upload to SD via Marlin with Binary Protocol # Requires Marlin with BINARY_FILE_TRANSFER already installed on the target board. # If CUSTOM_FIRMWARE_UPLOAD is also installed, Marlin will reboot the board to install the firmware. @@ -72,6 +72,28 @@ extra_scripts = ${env:STM32G0B1RE_btt.extra_scripts} pre:buildroot/share/scripts/upload.py upload_protocol = custom +# +# BigTreeTech Manta E3 EZ V1.0 / Manta M4P V1.0 / Manta M5P V1.0 (STM32G0B1RET6 ARM Cortex-M0+) +# +[env:STM32G0B1RE_manta_btt] +extends = env:STM32G0B1RE_btt +build_flags = ${env:STM32G0B1RE_btt.build_flags} + -DPIN_SERIAL3_RX=PD_9 -DPIN_SERIAL3_TX=PD_8 -DENABLE_HWSERIAL3 + +# +# BigTreeTech Manta E3 EZ V1.0 / Manta M4P V1.0 / Manta M5P V1.0 (STM32G0B1RET6 ARM Cortex-M0+) +# Custom upload to SD via Marlin with Binary Protocol +# Requires Marlin with BINARY_FILE_TRANSFER already installed on the target board. +# If CUSTOM_FIRMWARE_UPLOAD is also installed, Marlin will reboot the board to install the firmware. +# Currently CUSTOM_FIRMWARE_UPLOAD must also be enabled to use 'xfer' build envs. +# +[env:STM32G0B1RE_manta_btt_xfer] +extends = env:STM32G0B1RE_manta_btt +build_flags = ${env:STM32G0B1RE_manta_btt.build_flags} -DXFER_BUILD +extra_scripts = ${env:STM32G0B1RE_manta_btt.extra_scripts} + pre:buildroot/share/scripts/upload.py +upload_protocol = custom + # # BigTreeTech Manta M8P V1.x (STM32G0B1VET6 ARM Cortex-M0+) # From 866e7d3128a7c526a76b8826df70b3769177385d Mon Sep 17 00:00:00 2001 From: Daranbalt4 <119883952+Daranbalt4@users.noreply.github.com> Date: Mon, 27 Feb 2023 04:23:52 +0100 Subject: [PATCH 062/659] =?UTF-8?q?=E2=9C=A8=20LCD=5FBACKLIGHT=5FTIMEOUT?= =?UTF-8?q?=20for=20Neopixel=20LCD=20(#25438)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 3 ++- Marlin/src/feature/leds/neopixel.cpp | 10 +++++++++- Marlin/src/feature/leds/neopixel.h | 1 + Marlin/src/inc/SanityCheck.h | 8 +++++++- Marlin/src/lcd/marlinui.cpp | 19 +++++++++++++++---- buildroot/tests/LPC1768 | 2 +- 6 files changed, 35 insertions(+), 8 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index f780bdd243..7503fd82da 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -3403,7 +3403,8 @@ // Use some of the NeoPixel LEDs for static (background) lighting //#define NEOPIXEL_BKGD_INDEX_FIRST 0 // Index of the first background LED //#define NEOPIXEL_BKGD_INDEX_LAST 5 // Index of the last background LED - //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W + //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W + //#define NEOPIXEL_BKGD_TIMEOUT_COLOR { 25, 25, 25, 0 } // R, G, B, W //#define NEOPIXEL_BKGD_ALWAYS_ON // Keep the backlight on when other NeoPixels are off #endif diff --git a/Marlin/src/feature/leds/neopixel.cpp b/Marlin/src/feature/leds/neopixel.cpp index ab7ffe2177..2193217df0 100644 --- a/Marlin/src/feature/leds/neopixel.cpp +++ b/Marlin/src/feature/leds/neopixel.cpp @@ -54,7 +54,15 @@ Adafruit_NeoPixel Marlin_NeoPixel::adaneo1(NEOPIXEL_PIXELS, NEOPIXEL_PIN, NEOPIX set_background_color(background_color); } -#endif + void Marlin_NeoPixel::set_background_off() { + #ifndef NEOPIXEL_BKGD_TIMEOUT_COLOR + #define NEOPIXEL_BKGD_TIMEOUT_COLOR { 0, 0, 0, 0 } + #endif + constexpr uint8_t background_color_off[4] = NEOPIXEL_BKGD_TIMEOUT_COLOR; + set_background_color(background_color_off); + } + +#endif // NEOPIXEL_BKGD_INDEX_FIRST void Marlin_NeoPixel::set_color(const uint32_t color) { if (neoindex >= 0) { diff --git a/Marlin/src/feature/leds/neopixel.h b/Marlin/src/feature/leds/neopixel.h index 2048e2c2ee..7c8d018013 100644 --- a/Marlin/src/feature/leds/neopixel.h +++ b/Marlin/src/feature/leds/neopixel.h @@ -91,6 +91,7 @@ public: static void set_background_color(const uint8_t r, const uint8_t g, const uint8_t b, const uint8_t w); static void set_background_color(const uint8_t (&rgbw)[4]) { set_background_color(rgbw[0], rgbw[1], rgbw[2], rgbw[3]); } static void reset_background_color(); + static void set_background_off(); #endif static void begin() { diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 11d27d6eaf..02e7dba54b 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -3241,8 +3241,14 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #if LCD_BACKLIGHT_TIMEOUT_MINS #if !HAS_ENCODER_ACTION #error "LCD_BACKLIGHT_TIMEOUT_MINS requires an LCD with encoder or keypad." + #elif ENABLED(NEOPIXEL_BKGD_INDEX_FIRST) + #if PIN_EXISTS(LCD_BACKLIGHT) + #error "LCD_BACKLIGHT_PIN and NEOPIXEL_BKGD_INDEX_FIRST are not supported at the same time." + #elif ENABLED(NEOPIXEL_BKGD_ALWAYS_ON) + #error "LCD_BACKLIGHT_TIMEOUT is not compatible with NEOPIXEL_BKGD_ALWAYS_ON." + #endif #elif !PIN_EXISTS(LCD_BACKLIGHT) - #error "LCD_BACKLIGHT_TIMEOUT_MINS requires LCD_BACKLIGHT_PIN." + #error "LCD_BACKLIGHT_TIMEOUT_MINS requires either LCD_BACKLIGHT_PIN or NEOPIXEL_BKGD_INDEX_FIRST." #endif #endif diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index aa1ccb17c2..d3f01e6d23 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -24,7 +24,7 @@ #include "../MarlinCore.h" // for printingIsPaused -#if LED_POWEROFF_TIMEOUT > 0 || BOTH(HAS_WIRED_LCD, PRINTER_EVENT_LEDS) +#if LED_POWEROFF_TIMEOUT > 0 || BOTH(HAS_WIRED_LCD, PRINTER_EVENT_LEDS) || (defined(LCD_BACKLIGHT_TIMEOUT_MINS) && defined(NEOPIXEL_BKGD_INDEX_FIRST)) #include "../feature/leds/leds.h" #endif @@ -186,12 +186,17 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; #if LCD_BACKLIGHT_TIMEOUT_MINS constexpr uint8_t MarlinUI::backlight_timeout_min, MarlinUI::backlight_timeout_max; - uint8_t MarlinUI::backlight_timeout_minutes; // Initialized by settings.load() millis_t MarlinUI::backlight_off_ms = 0; + void MarlinUI::refresh_backlight_timeout() { backlight_off_ms = backlight_timeout_minutes ? millis() + backlight_timeout_minutes * 60UL * 1000UL : 0; - WRITE(LCD_BACKLIGHT_PIN, HIGH); + #ifdef NEOPIXEL_BKGD_INDEX_FIRST + neo.reset_background_color(); + neo.show(); + #elif PIN_EXISTS(LCD_BACKLIGHT) + WRITE(LCD_BACKLIGHT_PIN, HIGH); + #endif } #elif HAS_DISPLAY_SLEEP @@ -1196,8 +1201,14 @@ void MarlinUI::init() { #endif #if LCD_BACKLIGHT_TIMEOUT_MINS + if (backlight_off_ms && ELAPSED(ms, backlight_off_ms)) { - WRITE(LCD_BACKLIGHT_PIN, LOW); // Backlight off + #ifdef NEOPIXEL_BKGD_INDEX_FIRST + neo.set_background_off(); + neo.show(); + #elif PIN_EXIST(LCD_BACKLIGHT) + WRITE(LCD_BACKLIGHT_PIN, LOW); // Backlight off + #endif backlight_off_ms = 0; } #elif HAS_DISPLAY_SLEEP diff --git a/buildroot/tests/LPC1768 b/buildroot/tests/LPC1768 index 37cc705c0c..ee01bb621f 100755 --- a/buildroot/tests/LPC1768 +++ b/buildroot/tests/LPC1768 @@ -17,7 +17,7 @@ restore_configs opt_set MOTHERBOARD BOARD_RAMPS_14_RE_ARM_EFB SERIAL_PORT_3 3 \ NEOPIXEL_TYPE NEO_RGB RGB_LED_R_PIN P2_12 RGB_LED_G_PIN P1_23 RGB_LED_B_PIN P1_22 RGB_LED_W_PIN P1_24 opt_enable FYSETC_MINI_12864_2_1 SDSUPPORT SDCARD_READONLY SERIAL_PORT_2 RGBW_LED E_DUAL_STEPPER_DRIVERS \ - NEOPIXEL_LED NEOPIXEL_IS_SEQUENTIAL NEOPIXEL_STARTUP_TEST NEOPIXEL_BKGD_INDEX_FIRST NEOPIXEL_BKGD_INDEX_LAST NEOPIXEL_BKGD_COLOR NEOPIXEL_BKGD_ALWAYS_ON + NEOPIXEL_LED NEOPIXEL_IS_SEQUENTIAL NEOPIXEL_STARTUP_TEST NEOPIXEL_BKGD_INDEX_FIRST NEOPIXEL_BKGD_INDEX_LAST NEOPIXEL_BKGD_COLOR NEOPIXEL_BKGD_TIMEOUT_COLOR NEOPIXEL_BKGD_ALWAYS_ON exec_test $1 $2 "ReARM EFB VIKI2, SDSUPPORT, 2 Serial ports (USB CDC + UART0), NeoPixel" "$3" #restore_configs From 80f0d4ed7c7e6487ffcc9a2f4b8ea32f78192446 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 27 Feb 2023 06:07:00 +0000 Subject: [PATCH 063/659] [cron] Bump distribution date (2023-02-27) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 3719a0aafe..f29856bb9e 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-24" +//#define STRING_DISTRIBUTION_DATE "2023-02-27" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 30f7951878..0b60d59261 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-24" + #define STRING_DISTRIBUTION_DATE "2023-02-27" #endif /** From 18601f458fa13efe7b1f431f3f005db0dfe43431 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Tue, 28 Feb 2023 06:11:53 +1300 Subject: [PATCH 064/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Add?= =?UTF-8?q?=20IA=5FCREALITY=20CI=20test=20(#25434)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/tests/STM32F103RE_creality | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/buildroot/tests/STM32F103RE_creality b/buildroot/tests/STM32F103RE_creality index 8c0a40d8ae..8910db0017 100755 --- a/buildroot/tests/STM32F103RE_creality +++ b/buildroot/tests/STM32F103RE_creality @@ -38,5 +38,12 @@ opt_enable NOZZLE_AS_PROBE Z_SAFE_HOMING Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN FAN_ PROBE_ACTIVATION_SWITCH PROBE_TARE PROBE_TARE_ONLY_WHILE_INACTIVE exec_test $1 $2 "Creality V4.5.2 PROBE_ACTIVATION_SWITCH, Probe Tare" "$3" +restore_configs +opt_set MOTHERBOARD BOARD_CREALITY_V422 SERIAL_PORT 1 DGUS_LCD_UI IA_CREALITY +opt_enable NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE LCD_BED_TRAMMING CLASSIC_JERK BABYSTEPPING \ + AUTO_BED_LEVELING_BILINEAR PROBE_MANUALLY FAN_SOFT_PWM +opt_add NO_CREALITY_422_DRIVER_WARNING NO_AUTO_ASSIGN_WARNING +exec_test $1 $2 "Creality V4.2.2 with IA_CREALITY" "$3" + # clean up restore_configs From 6084502f8067c001ba3c4ab42e246931a6c6c8d8 Mon Sep 17 00:00:00 2001 From: tombrazier <68918209+tombrazier@users.noreply.github.com> Date: Mon, 27 Feb 2023 23:00:13 +0000 Subject: [PATCH 065/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Linear=20Advance?= =?UTF-8?q?=20E=20position=20tracking=20(#25442)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix regression from #24951 --- Marlin/src/module/stepper.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 0750fd82aa..d47565f409 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -1869,7 +1869,6 @@ void Stepper::pulse_phase_isr() { // don't actually step here, but do subtract movements steps // from the linear advance step count step_needed.e = false; - count_position.e -= count_direction.e; la_advance_steps--; } #endif From 20d4b995f7fbbc1505fda363b69596a75bda03df Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 28 Feb 2023 00:23:17 +0000 Subject: [PATCH 066/659] [cron] Bump distribution date (2023-02-28) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index f29856bb9e..a2f12b8c0a 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-27" +//#define STRING_DISTRIBUTION_DATE "2023-02-28" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 0b60d59261..7860200016 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-27" + #define STRING_DISTRIBUTION_DATE "2023-02-28" #endif /** From 579833e2a3d8ab8716fcab85dd26904a718fcec8 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Tue, 28 Feb 2023 16:16:11 +1300 Subject: [PATCH 067/659] =?UTF-8?q?=F0=9F=94=A7=20Fix=20Sensorless=20Probe?= =?UTF-8?q?=20sanity-check=20err=20(#25417)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/SanityCheck.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 02e7dba54b..d5e91932da 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1919,9 +1919,9 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS */ #if ENABLED(SENSORLESS_PROBING) #if ENABLED(DELTA) && !(X_SENSORLESS && Y_SENSORLESS && Z_SENSORLESS) - #error "SENSORLESS_PROBING requires TMC2130/2160/2209/5130/5160 drivers on X, Y, and Z." + #error "SENSORLESS_PROBING requires TMC2130/2160/2209/5130/5160 drivers on X, Y, and Z and {X|Y|Z}_STALL_SENSITIVITY." #elif !Z_SENSORLESS - #error "SENSORLESS_PROBING requires a TMC2130/2160/2209/5130/5160 driver on Z." + #error "SENSORLESS_PROBING requires a TMC2130/2160/2209/5130/5160 driver on Z and Z_STALL_SENSITIVITY." #endif #elif ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) #if DISABLED(USE_ZMIN_PLUG) From 894e3787028575015bb6f978ab28219bda66f58d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 28 Feb 2023 17:50:06 -0600 Subject: [PATCH 068/659] =?UTF-8?q?=F0=9F=94=A8=20Improve=20config.ini=20e?= =?UTF-8?q?xample=20fetch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/share/PlatformIO/scripts/configuration.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/buildroot/share/PlatformIO/scripts/configuration.py b/buildroot/share/PlatformIO/scripts/configuration.py index 7a07f02d46..3fc43ed6d8 100644 --- a/buildroot/share/PlatformIO/scripts/configuration.py +++ b/buildroot/share/PlatformIO/scripts/configuration.py @@ -88,6 +88,7 @@ def fetch_example(url): if not url.startswith('http'): brch = "bugfix-2.1.x" if '@' in url: url, brch = map(str.strip, url.split('@')) + if url == 'examples/default': url = 'default' url = f"https://raw.githubusercontent.com/MarlinFirmware/Configurations/{brch}/config/{url}" url = url.replace("%", "%25").replace(" ", "%20") @@ -103,7 +104,7 @@ def fetch_example(url): import os # Reset configurations to default - os.system("git reset --hard HEAD") + os.system("git checkout HEAD Marlin/*.h") # Try to fetch the remote files gotfile = False @@ -191,7 +192,7 @@ def apply_config_ini(cp): # For 'examples/' fetch an example set from GitHub. # For https?:// do a direct fetch of the URL. - if ckey.startswith('examples/') or ckey.startswith('http:'): + if ckey.startswith('examples/') or ckey.startswith('http'): fetch_example(ckey) ckey = 'base' From 42cd314d96b764831f6406102530d570aff8a06c Mon Sep 17 00:00:00 2001 From: tombrazier <68918209+tombrazier@users.noreply.github.com> Date: Wed, 1 Mar 2023 00:16:27 +0000 Subject: [PATCH 069/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20LA=20retract/feedr?= =?UTF-8?q?ate=20edge=20case=20(#25445)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25442 --- Marlin/src/module/stepper.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index d47565f409..d0398b404c 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -2261,6 +2261,8 @@ uint32_t Stepper::block_phase_isr() { DIR_WAIT_AFTER(); } } + else + la_interval = LA_ADV_NEVER; } #endif // LIN_ADVANCE From 030559bf7f0287150549dc1a9876ca2bc7de1617 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 1 Mar 2023 00:26:50 +0000 Subject: [PATCH 070/659] [cron] Bump distribution date (2023-03-01) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index a2f12b8c0a..0a78854bd8 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-02-28" +//#define STRING_DISTRIBUTION_DATE "2023-03-01" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 7860200016..047acad5cf 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-02-28" + #define STRING_DISTRIBUTION_DATE "2023-03-01" #endif /** From 6a8ebddaf66fbe12d6d6b266d99080d66e618876 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 1 Mar 2023 19:07:47 -0600 Subject: [PATCH 071/659] =?UTF-8?q?=F0=9F=94=A8=20Update=20font=20scripts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- buildroot/share/fonts/bdf2u8g/Makefile | 15 + buildroot/share/fonts/bdf2u8g/bdf2u8g.c | 1214 +++++++++++++++++ buildroot/share/fonts/genallfont.sh | 37 +- .../share/fonts/{ => genpages}/genpages.c | 2 +- .../share/fonts/{ => genpages}/getline.c | 0 .../share/fonts/{ => genpages}/getline.h | 0 buildroot/share/fonts/get-bdf2u8g.sh | 35 - buildroot/share/fonts/u8glib-bdf2u8g.patch | 32 - buildroot/share/fonts/uxggenpages.sh | 29 +- 10 files changed, 1263 insertions(+), 104 deletions(-) create mode 100644 buildroot/share/fonts/bdf2u8g/Makefile create mode 100644 buildroot/share/fonts/bdf2u8g/bdf2u8g.c rename buildroot/share/fonts/{ => genpages}/genpages.c (99%) rename buildroot/share/fonts/{ => genpages}/getline.c (100%) rename buildroot/share/fonts/{ => genpages}/getline.h (100%) delete mode 100755 buildroot/share/fonts/get-bdf2u8g.sh delete mode 100644 buildroot/share/fonts/u8glib-bdf2u8g.patch diff --git a/.gitignore b/.gitignore index 09db344257..555bde8622 100755 --- a/.gitignore +++ b/.gitignore @@ -21,7 +21,8 @@ # Generated files _Version.h -bdf2u8g +bdf2u8g.exe +genpages.exe marlin_config.json mczip.h *.gen diff --git a/buildroot/share/fonts/bdf2u8g/Makefile b/buildroot/share/fonts/bdf2u8g/Makefile new file mode 100644 index 0000000000..cb00c7bb74 --- /dev/null +++ b/buildroot/share/fonts/bdf2u8g/Makefile @@ -0,0 +1,15 @@ +CFLAGS = -g -Wall +#CFLAGS = -O4 -Wall + +SRC = bdf2u8g.c + +OBJ = $(SRC:.c=.o) + +bdf2u8g: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) $(OBJ) -o bdf2u8g.exe + +clean: + -rm $(OBJ) bdf2u8g.exe + +test: + ./bdf2u8g.exe -f 2 ../bdf/9x18.bdf u8g_aafont_9x18 u8g_aafont_9x18.c diff --git a/buildroot/share/fonts/bdf2u8g/bdf2u8g.c b/buildroot/share/fonts/bdf2u8g/bdf2u8g.c new file mode 100644 index 0000000000..0421bbd87f --- /dev/null +++ b/buildroot/share/fonts/bdf2u8g/bdf2u8g.c @@ -0,0 +1,1214 @@ +/* + general font collections + http://www.smashingmagazine.com/2007/11/08/40-excellent-freefonts-for-professional-design/ + http://techmagazine.ws/most-popular-free-quality-fonts/ + http://openfontlibrary.org/ + bitmap font collections + http://www.orgdot.com/aliasfonts/ (includes links) + http://www.04.jp.org/ + http://www.miniml.com + http://www.fontspace.com/010bus + + http://en.wikipedia.org/wiki/Unicode_typeface + da könnten auch ein paar fonts dabei sein, die die m2tklib sonderzeichen beinhalten: + Caslon Roman http://en.wikipedia.org/wiki/Caslon_Roman + Charis Sil http://en.wikipedia.org/wiki/Charis_SIL + DejaVu Sans http://en.wikipedia.org/wiki/DejaVu_fonts + Doulos http://en.wikipedia.org/wiki/Doulos_SIL + Free Serif http://en.wikipedia.org/wiki/FreeSerif http://ftp.gnu.org/gnu/freefont/ + --> keine box, aber es gibt pfeile/invertierte pfeile und kreise für m2tklib + Gentium Plus ???? http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=Gentium_download#02b091ae + --> keine graphic + GNU Unifont http://en.wikipedia.org/wiki/GNU_Unifont, http://unifoundry.com/unifont.html + + Titus cyberbit Basic http://en.wikipedia.org/wiki/TITUS_Cyberbit_Basic + + fonts + Gentium + http://openfontlibrary.org/font/gentium + license: OFL + Old-Standard + http://openfontlibrary.org/font/old-standard + license: OFL + Hanuman + http://openfontlibrary.org/font/hanumanb + license: OFL + FreeUniversal + http://openfontlibrary.org/font/freeuniversal + license: OFL + FriendShip-Code <--- nicht so sicher... + http://openfontlibrary.org/font/friendship-code + license: CC-BY-SA + LinuxLibertine + http://de.wikipedia.org/wiki/Linux_Libertine + http://sourceforge.net/projects/linuxlibertine/files/linuxlibertine/5.1.3-2/ + license: OFL + DidactGothic + source: http://openfontlibrary.org/ + judson + source: http://openfontlibrary.org/ + unicons + source: http://openfontlibrary.org/ + license: OFL + suggested pt: 26, 30 + org_V01, fixed_V0 + source: http://www.orgdot.com/aliasfonts/ + license: open source, individual, cite required + suggested pt: 8 + 04b_03b.zip 04b_03.zip 04b_09.zip 04b_11.zip 04b_19.zip 04b_21.zip 04b_25.zip 04b_30.zip + source: http://www.04.jp.org/ + license: "Freeware: You may use them as you like" + 7px4bus + source: http://www.fontspace.com/010bus + license: Licensed as: Freeware, Commercial use allowed! + suggested 7pt + 8pxbus + source: http://www.fontspace.com/010bus + license: Licensed as: Freeware, Commercial use allowed! + suggested 8pt + +*/ + +/* + only supports metric set "0" + assume DWIDTH second arg to be 0 for all glyphs + assumes that (0,0) of the BBX is placed on the base line + assumes ISO10646 encoding of the BDF file + + font information + offset + 0 font format + 1 FONTBOUNDINGBOX width unsigned + 2 FONTBOUNDINGBOX height unsigned + 3 FONTBOUNDINGBOX x-offset signed + 4 FONTBOUNDINGBOX y-offset signed + 5 capital A height unsigned + 6 start 'A' + 8 start 'a' + 10 encoding start + 11 encoding end + 12 descent 'g' negative: below baseline + 13 font max ascent + 14 font min decent negative: below baseline + 15 xascent (ascent of "(") + 16 xdescent (descent of ")") + +format 0 + glyph information + offset + 0 BBX width unsigned + 1 BBX height unsigned + 2 data size unsigned (BBX width + 7)/8 * BBX height + 3 DWIDTH signed + 4 BBX xoffset signed + 5 BBX yoffset signed + +format 1 + 0 BBX xoffset signed --> upper 4 Bit + 0 BBX yoffset signed --> lower 4 Bit + 1 BBX width unsigned --> upper 4 Bit + 1 BBX height unsigned --> lower 4 Bit + 2 data size unsigned -(BBX width + 7)/8 * BBX height --> lower 4 Bit + 2 DWIDTH signed --> upper 4 Bit + byte 0 == 255 indicates empty glyph + +format 2 + like format 0, but 4 gray levels for the glyph (4 pixel per byte in the glyph data) + + The glyph bitmap size is defined by BBX width and BBX height + number of bytes in the bitmap data (BBX width + 7)/8 * BBX height (format 0 and 1) + + draw_text(x,y,str) + get_text_frame(x,y,str, &x1, &y1, &width, &height) + frame( x1, y1, width, height) + underline( x1, y-1, width ) + + size of the surrounding bbox + + width = - xoffset(c1) + DWIDTH(c1) + DWIDTH(c2) + ... + DWIDTH(cn-1) + width(cn) + xoffset(cn) + height = FONTBOUNDINGBOX height + x1 = x + xoffset(c1) + y1 = y + yoffset(c1) + +ISO-8859-1 was incorporated as the first 256 code points of ISO/IEC 10646 and Unicode. + +*/ + +#include +#include +#include +#include + +#define BDF2U8G_COMPACT_OUTPUT +#define BDF2U8G_VERSION "1.01" +//#define VERBOSE + +/*=== forward declaration ===*/ +void bdf_aa_ClearDoShow(void); +void bdf_aa_Do(void); + +/*=== result data ===*/ +#define DATA_BUF_SIZE (1024 * 64) +unsigned char data_buf[DATA_BUF_SIZE]; +int data_pos = 0; + +void data_Init(void) { + data_pos = 0; +} + +void data_Put(unsigned char c) { + data_buf[data_pos] = c; + data_pos++; +} + +void data_Write(FILE *out_fp, const char *indent) { + int i; + int bytes_per_line = 16; + for (i = 0; i < data_pos; i++) { + fprintf(out_fp, "0x%02X", data_buf[i]); + if (i + 1 != data_pos) + fprintf(out_fp, ","); + if ((i + 1) % bytes_per_line == 0) + fprintf(out_fp, "\n%s", indent); + } +} + +/*=== low level parser ===*/ +#define P_BUF_SIZE (1024 * 4) +int p_current_char; +const char *p_line; +char p_buf[P_BUF_SIZE]; + +/* put next char into p_current_char */ +static int p_next_char(void) { + p_current_char = *p_line; + if (p_current_char == '\0') + return 0; + p_line++; + return 1; +} + +int p_first_char(const char *line) { + p_line = line; + return p_next_char(); +} + +void p_err(const char *msg) { +} + +int p_skip_space(void) { + for (;;) { + if (p_current_char == 0 || p_current_char > 32) + break; + if (p_next_char() == 0) + return 0; + } + return 1; +} + +/* put identifier into p_buf */ +int p_get_identifier(void) { + int i = 0; + if (p_current_char == '\0') + return p_err("unexpected EOF (expected identifier)"), 0; + for (;;) { + if (p_current_char <= 32) + break; + p_buf[i++] = p_current_char; + if (p_next_char() == 0) + break; + } + p_buf[i++] = '\0'; + p_skip_space(); + return 1; +} + +/* put identifier into p_buf */ +int p_get_identifier_with_blank(void) { + int i = 0; + for (;;) { + if (p_current_char < 32) + break; + p_buf[i++] = p_current_char; + if (p_next_char() == 0) + break; + } + p_buf[i++] = '\0'; + p_skip_space(); + return 1; +} + +int p_get_string(void) { + int i = 0; + if (p_current_char == '\0') + return 0; + if (p_current_char != '\"') + return p_err("\" expected"), 0; + if (p_next_char() == 0) + return p_err("unexpected EOF (\")"), 0; + for (;;) { + if (p_current_char == '\\') { + if (p_next_char() == 0) + return p_err("unexpected EOF (\\)"), 0; + } + else if (p_current_char == '\"') { + p_next_char(); + break; + } + p_buf[i++] = p_current_char; + if (p_next_char() == 0) + return p_err("unexpected EOF (\")"), 0; + } + p_buf[i] = '\0'; + return 1; +} + +int p_get_any(void) { + if (p_current_char == '\"') + return p_get_string(); + return p_get_identifier(); +} + +int p_get_val(void) { + p_get_any(); + return atoi(p_buf); +} + +int p_get_hex(void) { + int value = 0; + if (p_current_char >= '0' && p_current_char <= '9') + value = p_current_char - '0'; + else if (p_current_char >= 'a' && p_current_char <= 'f') + value = p_current_char - 'a' + 10; + else if (p_current_char >= 'A' && p_current_char <= 'F') + value = p_current_char - 'A' + 10; + p_next_char(); + return value; +} + +int p_get_hex_byte(void) { + int v; + v = p_get_hex(); + v *= 16; + v += p_get_hex(); + return v; +} + +/*=== encoding mapping ===*/ +/* the internal u8g index number (0..255) is mapped to the unicode number */ +/* for the conversion we need the reverse search */ +/* 0 is special and means not found */ +int map_u8g_to_unicode[256]; + +int map_UnicodeToU8G(int unicode) { + int i; + for (i = 0; i < 256; i++) + if (map_u8g_to_unicode[i] == unicode) + return i; + return 0; +} + +void map_Init(void) { + int i; + map_u8g_to_unicode[0] = 0; + for (i = 0; i < 256; i++) map_u8g_to_unicode[i] = i; +} + +void map_UpperLowerPage(int lower_page, int upper_page, int shift, int upper_shift) { + int i; + int encoding; + int tmp[256]; + // map_u8g_to_unicode[0] = 0; + for (i = 0; i < 128; i++) { + encoding = i + lower_page * 128; + map_u8g_to_unicode[i] = encoding; + } + + for (i = 128; i < 256; i++) { + encoding = i - 128 + upper_page * 128; + if (i + upper_shift < 256) + map_u8g_to_unicode[i + upper_shift] = encoding; + } + + for (i = 0; i < 256; i++) tmp[i] = map_u8g_to_unicode[i]; + + for (i = 0; i < shift; i++) map_u8g_to_unicode[i] = -1; + + for (i = shift; i < 256; i++) map_u8g_to_unicode[i] = tmp[(i + 256 - shift) % 256]; + /* + printf("map_u8g_to_unicode[ 32 ] = %d\n", map_u8g_to_unicode[ 32 ]); + printf("map_u8g_to_unicode[ 33 ] = %d\n", map_u8g_to_unicode[ 33 ]); + */ +} + +/*=== store bdf file positions ===*/ + +long bdf_last_line_start_pos; +long bdf_encoding_pos[256]; + +void bdf_InitFilePos(void) { + int i; + for (i = 0; i < 256; i++) bdf_encoding_pos[i] = 0; +} + +void bdf_SetFilePos(FILE *fp, int encoding) { + if (encoding < 0) + return; + if (bdf_encoding_pos[encoding] == 0L) + return; + fseek(fp, bdf_encoding_pos[encoding], SEEK_SET); + // fprintf(stderr, "setting file for encoding %d to pos %ld\n", encoding, bdf_encoding_pos[encoding]); +} + +int bdf_IsEncodingAvailable(int encoding) { + if (bdf_encoding_pos[encoding] == 0L) + // printf("encoding %d not availabe\n", encoding); + return 0; + return 1; +} + +void bdf_StoreFilePos(int encoding, long pos) { + // if ( encoding == 33 ) + // printf("encoding %d at pos %ld\n", encoding, pos); + if (bdf_encoding_pos[encoding] != 0L) + return; + bdf_encoding_pos[encoding] = pos; +} + +/*=== bdf file read ===*/ + +int bdf_font_format = 0; + +#define BDF_STATE_FONT_DATA 0 +#define BDF_STATE_ENCODING 1 + +int bdf_state = BDF_STATE_FONT_DATA; +int bdf_requested_encoding = 0; + +#define BDF_LINE_MAX (1024 * 4) +#define BDF_LINE_STATE_KEYWORDS 0 +#define BDF_LINE_STATE_BITMAP 1 +#define BDF_MAX_HEIGHT 200 +#define BDF_AA_OFFSET 1 + +char bdf_copyright[BDF_LINE_MAX]; +char bdf_font[BDF_LINE_MAX]; +unsigned char bdf_bitmap_line[BDF_MAX_HEIGHT][20]; +unsigned char bdf_aa_bitmap_line[BDF_MAX_HEIGHT + 2 * BDF_AA_OFFSET][(20 + 2 * BDF_AA_OFFSET) * 8]; + +int bdf_line_state = BDF_LINE_STATE_KEYWORDS; +int bdf_line_bm_line = 0; + +int bdf_font_size; /* point font size */ + +int bdf_font_width; /* FONTBOUNDINGBOX arg 1 */ +int bdf_font_height; /* FONTBOUNDINGBOX arg 2 */ +int bdf_font_x; /* FONTBOUNDINGBOX arg 3 */ +int bdf_font_y; /* FONTBOUNDINGBOX arg 4 */ + +int bdf_capital_A_height; +int bdf_capital_1_height; +int bdf_lower_g_descent; + +int bdf_char_width; /* BBX arg 1 */ +int bdf_char_max_width; +int bdf_char_height; /* BBX arg 2 */ +int bdf_char_ascent; /* defined as BBX arg 2 + BBX arg 4 */ +int bdf_char_xascent; +int bdf_char_xdescent; +int bdf_char_max_ascent; +int bdf_char_max_height; +int bdf_char_x; /* BBX arg 3 */ +int bdf_char_max_x; +int bdf_char_min_x; +int bdf_char_y; /* BBX arg 4 */ +int bdf_char_max_y; +int bdf_char_min_y; + +int bdf_delta_x_default = -1; +int bdf_delta_x = -1; /* DWIDTH arg 1 */ +int bdf_delta_max_x; +int bdf_delta_min_x; +int bdf_delta_y; /* DWIDTH arg 2 */ +int bdf_delta_max_y; +int bdf_delta_min_y; + +int bdf_glyph_data_len; +int bdf_glyph_data_max_len; + +int bdf_encoding; + +int bdf_encoding_65_pos; +int bdf_encoding_97_pos; +int bdf_is_encoding_successfully_done; + +char bdf_info[32000 * 2]; + +int bdf_is_put_glyph_completed = 0; /* indicator, when the glyph has been processed */ + +void bdf_ResetMax(void) { + bdf_char_max_width = 0; + bdf_char_max_height = 0; + bdf_char_max_x = 0; + bdf_char_max_y = 0; + bdf_delta_max_x = 0; + bdf_delta_max_y = 0; + bdf_char_min_x = 0; + bdf_char_min_y = 0; + bdf_delta_min_x = 0; + bdf_delta_min_y = 0; + bdf_glyph_data_max_len = 0; + bdf_char_max_ascent = 0; + bdf_char_xascent = 0; + bdf_char_xdescent = 0; +} + +void bdf_UpdateMax(void) { + if (bdf_char_max_width < bdf_char_width) + bdf_char_max_width = bdf_char_width; + if (bdf_char_max_height < bdf_char_height) + bdf_char_max_height = bdf_char_height; + + if (bdf_char_max_x < bdf_char_x) + bdf_char_max_x = bdf_char_x; + + if (bdf_char_max_y < bdf_char_y) + bdf_char_max_y = bdf_char_y; + + if (bdf_delta_max_x < bdf_delta_x) + bdf_delta_max_x = bdf_delta_x; + if (bdf_delta_max_y < bdf_delta_y) + bdf_delta_max_y = bdf_delta_y; + + if (bdf_char_min_x > bdf_char_x) + bdf_char_min_x = bdf_char_x; + + if (bdf_char_min_y > bdf_char_y) + bdf_char_min_y = bdf_char_y; + + if (bdf_delta_min_x > bdf_delta_x) + bdf_delta_min_x = bdf_delta_x; + if (bdf_delta_min_y > bdf_delta_y) + bdf_delta_min_y = bdf_delta_y; + + if (bdf_glyph_data_max_len < bdf_glyph_data_len) + bdf_glyph_data_max_len = bdf_glyph_data_len; + + if (bdf_char_max_ascent < bdf_char_ascent) + bdf_char_max_ascent = bdf_char_ascent; +} + +void bdf_ShowGlyph(void) { + #ifdef VERBOSE + int x, y, byte, bit; + int gx, gy; + char *p; + gy = bdf_char_height - 1 + bdf_char_y; + printf("bbx %d %d %d %d encoding %d\n", bdf_char_width, bdf_char_height, bdf_char_x, bdf_char_y, bdf_encoding); + for (y = 0; y < bdf_line_bm_line; y++) { + printf("%02d ", gy); + gx = bdf_char_x; + for (x = 0; x < bdf_char_width; x++) { + byte = x >> 3; + bit = 7 - (x & 7); + if ((bdf_bitmap_line[y][byte] & (1 << bit)) == 0) + p = " ."; + else + p = " *"; + if (gy == 0 && gx == 0) + p = " o"; + printf("%s", p); + gx++; + } + printf(" "); + for (x = 0; x < ((bdf_char_width + 7) / 8); x++) printf( "%02X", bdf_bitmap_line[y][x]); + gy--; + printf("\n"); + } + #else + printf("bbx %d %d %d %d encoding %d\n", bdf_char_width, bdf_char_height, bdf_char_x, bdf_char_y, bdf_encoding); + fflush(stdout); + #endif +} + +void bdf_ClearGlyphBuffer(void) { + int x, y; + for (y = 0; y < BDF_MAX_HEIGHT; y++) + for (x = 0; x < 20; x++) bdf_bitmap_line[y][x] = 0; +} + +void bdf_PutGlyph(void) { + int len; + int y, x; + + if (bdf_state == BDF_STATE_ENCODING) { + //if (bdf_char_width == 0 && bdf_char_height == 0) bdf_char_y = 0; + + bdf_char_ascent = bdf_char_height + bdf_char_y; + //printf("h:%d w:%d ascent: %d\n", bdf_char_height, bdf_char_width, bdf_char_ascent); + + if (bdf_encoding == 'A') + bdf_capital_A_height = bdf_char_height; + if (bdf_encoding == '1') + bdf_capital_1_height = bdf_char_height; + + if (bdf_encoding == 'g') + bdf_lower_g_descent = bdf_char_y; + + if (bdf_char_xascent < bdf_capital_A_height) + bdf_char_xascent = bdf_capital_A_height; + if (bdf_char_xascent < bdf_capital_1_height) + bdf_char_xascent = bdf_capital_1_height; + if (bdf_encoding == '(') + if (bdf_char_xascent < bdf_char_ascent) + bdf_char_xascent = bdf_char_ascent; + if (bdf_encoding == '[') + if (bdf_char_xascent < bdf_char_ascent) + bdf_char_xascent = bdf_char_ascent; + + if (bdf_char_xdescent > bdf_lower_g_descent) + bdf_char_xdescent = bdf_lower_g_descent; + if (bdf_encoding == '(') + if (bdf_char_xdescent > bdf_char_y) + bdf_char_xdescent = bdf_char_y; + if (bdf_encoding == '[') + if (bdf_char_xdescent > bdf_char_y) + bdf_char_xdescent = bdf_char_y; + + if (bdf_requested_encoding != bdf_encoding) + return; + + assert( bdf_line_bm_line == bdf_char_height); + + bdf_ShowGlyph(); + #ifdef VERBOSE + bdf_aa_ClearDoShow(); + #endif + + bdf_UpdateMax(); + + if (bdf_font_format <= 1) + len = (bdf_char_width + 7) / 8 * bdf_char_height; + else + len = (bdf_char_width + 2 * BDF_AA_OFFSET + 3) / 4 * (bdf_char_height + 2 * BDF_AA_OFFSET); + if (len > 255) { + fprintf(stderr, "Glyph with encoding %d is too large (%d > 255)\n", bdf_encoding, len); + exit(1); + } + + bdf_glyph_data_len = len; + + /* + format 0 and format 2 + glyph information + offset + 0 BBX width unsigned + 1 BBX height unsigned + 2 data size unsigned (BBX width + 7)/8 * BBX height + 3 DWIDTH signed + 4 BBX xoffset signed + 5 BBX yoffset signed + */ + + if (bdf_font_format == 0) { + data_Put(bdf_char_width); + data_Put(bdf_char_height); + data_Put(bdf_glyph_data_len); + data_Put(bdf_delta_x); + data_Put(bdf_char_x); + data_Put(bdf_char_y); + // data_Put(bdf_encoding); + bdf_is_encoding_successfully_done = 1; + } + else if (bdf_font_format == 2) { + data_Put(bdf_char_width + 2 * BDF_AA_OFFSET); + data_Put(bdf_char_height + 2 * BDF_AA_OFFSET); + data_Put(bdf_glyph_data_len); + data_Put(bdf_delta_x); + data_Put(bdf_char_x - BDF_AA_OFFSET); + data_Put(bdf_char_y - BDF_AA_OFFSET); + // data_Put(bdf_encoding); + bdf_is_encoding_successfully_done = 1; + } + else { + /** + * format 1 + * 0 BBX xoffset signed --> upper 4 Bit + * 0 BBX yoffset signed --> lower 4 Bit + * 1 BBX width unsigned --> upper 4 Bit + * 1 BBX height unsigned --> lower 4 Bit + * 2 data size unsigned -(BBX width + 7)/8 * BBX height --> lower 4 Bit + * 2 DWIDTH signed --> upper 4 Bit + * byte 0 == 255 indicates empty glyph + */ + if (bdf_glyph_data_len < 0 || bdf_glyph_data_len > 15) { + fprintf(stderr, "Glyph with encoding %d does not fit for format 1 (data len = %d)\n", bdf_encoding, bdf_glyph_data_len); + exit(1); + } + if (bdf_delta_x < 0 || bdf_delta_x > 15) { + fprintf(stderr, "Glyph with encoding %d does not fit for format 1 (DWIDTH = %d)\n", bdf_encoding, bdf_delta_x); + exit(1); + } + if (bdf_char_x < 0 || bdf_char_x > 15) { + fprintf(stderr, "Glyph with encoding %d does not fit for format 1 (x-off = %d)\n", bdf_encoding, bdf_char_x); + exit(1); + } + if (bdf_char_y < -2 || bdf_char_y > 13) { + fprintf(stderr, "Glyph with encoding %d does not fit for format 1 (y-off = %d [%d..%d])\n", bdf_encoding, bdf_char_y, bdf_char_min_y, bdf_char_max_y); + exit(1); + } + if (bdf_char_width < 0 || bdf_char_width > 15) { + fprintf(stderr, "Glyph with encoding %d does not fit for format 1 (width = %d)\n", bdf_encoding, bdf_char_width); + exit(1); + } + if (bdf_char_height < 0 || bdf_char_height > 15) { + fprintf(stderr, "Glyph with encoding %d does not fit for format 1 (height = %d)\n", bdf_encoding, bdf_char_height); + exit(1); + } + // data_Put(bdf_encoding); + if (((bdf_char_x << 4) | (bdf_char_y + 2)) == 255) { + fprintf(stderr, "Glyph with encoding %d does not fit for format 1 (skip mark generated)\n", bdf_encoding); + exit(1); + } + data_Put((bdf_char_x << 4) | (bdf_char_y + 2)); + data_Put((bdf_char_width << 4) | bdf_char_height ); + data_Put((bdf_delta_x << 4) | bdf_glyph_data_len ); + bdf_is_encoding_successfully_done = 1; + } + + sprintf(bdf_info + strlen(bdf_info), "/* encoding %d %c, bbx %d %d %d %d asc %d dx %d*/\n", + bdf_encoding, + bdf_encoding > 32 && bdf_encoding <= 'z' ? bdf_encoding : ' ', + bdf_char_width, + bdf_char_height, + bdf_char_x, + bdf_char_y, + bdf_char_ascent, + bdf_delta_x); + + if (bdf_font_format <= 1) { + for (y = 0; y < bdf_char_height; y++) + for (x = 0; x < ((bdf_char_width + 7) / 8); x++) { + data_Put(bdf_bitmap_line[y][x]); + len--; + } + assert( len == 0 ); + bdf_is_put_glyph_completed = 1; + } + else { /* format == 2 */ + int b, cnt; + bdf_aa_Do(); + for (y = 0; y < bdf_char_height + 2 * BDF_AA_OFFSET; y++) { + b = 0; + cnt = 0; + for (x = 0; x < bdf_char_width + 2 * BDF_AA_OFFSET; x++) { + b <<= 2; + b |= bdf_aa_bitmap_line[y][x] & 3; + cnt++; + if (cnt == 4) { + data_Put(b); + b = 0; + cnt = 0; + len--; + } + } + + if (cnt != 0) { + b <<= 2 * (4 - cnt); + data_Put(b); + b = 0; + cnt = 0; + len--; + } + } + assert( len == 0 ); + } + } +} + +/*=========================================================================*/ +/* Glyph Clipping */ + +int bdf_IsColZero(int x) { + int y, byte, bit; + for (y = 0; y < bdf_char_height; y++) { + byte = x >> 3; + bit = 7 - (x & 7); + if ((bdf_bitmap_line[y][byte] & (1 << bit)) != 0) + return 0; + } + return 1; +} + +int bdf_IsRowZero(int y) { + int x, byte, bit; + for (x = 0; x < bdf_char_width; x++) { + byte = x >> 3; + bit = 7 - (x & 7); + if ((bdf_bitmap_line[y][byte] & (1 << bit)) != 0) + return 0; + } + return 1; +} + +void bdf_DeleteFirstCol(void) { + int m = (bdf_char_width + 7) / 8; + int x, y; + for (y = 0; y < bdf_char_height; y++) + for (x = 0; x < m; x++) { + bdf_bitmap_line[y][x] <<= 1; + bdf_bitmap_line[y][x] |= bdf_bitmap_line[y][x + 1] >> 7; + } +} + +void bdf_DeleteFirstRow(void) { + int m = (bdf_char_width + 7) / 8; + int x, y; + for (y = 0; y + 1 < bdf_char_height; y++) + for (x = 0; x < m; x++) + bdf_bitmap_line[y][x] = bdf_bitmap_line[y + 1][x]; +} + +void bdf_ReduceGlyph(void) { + while (bdf_char_width > 0) { + if (bdf_IsColZero(bdf_char_width - 1) == 0) + break; + bdf_char_width--; + } + + while (bdf_char_height > 0) { + if (bdf_IsRowZero(bdf_char_height - 1) == 0) + break; + bdf_line_bm_line--; + bdf_char_height--; + bdf_char_y++; + } + + while (bdf_IsColZero(0) != 0 && bdf_char_width > 0) { + bdf_DeleteFirstCol(); + bdf_char_x++; + bdf_char_width--; + } + + while (bdf_char_height > 0) { + if (bdf_IsRowZero(0) == 0) + break; + bdf_DeleteFirstRow(); + bdf_line_bm_line--; + bdf_char_height--; + } +} + +/*=========================================================================*/ +/* Anti Aliasing / Graylevel Glyph */ + +int bdf_GetXYVal(int x, int y) { + int byte, bit; + + if (x < 0) return 0; + if (y < 0) return 0; + if (x >= bdf_char_width) return 0; + if (y >= bdf_char_height) return 0; + + byte = x >> 3; + bit = 7 - (x & 7); + if ((bdf_bitmap_line[y][byte] & (1 << bit)) != 0) return 1; + return 0; +} + +void bdf_aa_Clear(void) { + int x, y; + for (y = 0; y < BDF_MAX_HEIGHT + 2 * BDF_AA_OFFSET; y++) + for (x = 0; x < (20 + 2 * BDF_AA_OFFSET) * 8; x++) + bdf_aa_bitmap_line[y][x] = 0; +} + +void bdf_aa_SetXYVal(int x, int y, int val) { + bdf_aa_bitmap_line[y][x] = val; +} + +int bdf_aa_matrix[9] = { + 1, 3, 1, + 3, 4, 3, + 1, 3, 1 +}; +int bdf_aa_sum = 20; +int bdf_aa_gray_levels = 4; + +void bdf_aa_Do(void) { + int x, y, val, sx, sy, sum, gray; + bdf_aa_Clear(); + for (y = 0; y < bdf_char_height + 2 * BDF_AA_OFFSET; y++) + for (x = 0; x < bdf_char_width + 2 * BDF_AA_OFFSET; x++) { + if (bdf_GetXYVal(x - BDF_AA_OFFSET, y - BDF_AA_OFFSET) == 0) { + sum = 0; + for (sy = -BDF_AA_OFFSET; sy <= BDF_AA_OFFSET; sy++) + for (sx = -BDF_AA_OFFSET; sx <= BDF_AA_OFFSET; sx++) { + val = bdf_GetXYVal(x + sx - BDF_AA_OFFSET, y + sy - BDF_AA_OFFSET); + val *= bdf_aa_matrix[(sy + BDF_AA_OFFSET) * (2 * BDF_AA_OFFSET + 1) + sx + BDF_AA_OFFSET]; + sum += val; + } + if (sum <= 5) + gray = 0; + else + gray = (sum * (bdf_aa_gray_levels - 1) + (bdf_aa_sum / 2)) / bdf_aa_sum; + if (gray >= bdf_aa_gray_levels) + gray = bdf_aa_gray_levels - 1; + } + else { + gray = bdf_aa_gray_levels - 1; + } + bdf_aa_SetXYVal(x, y, gray); + } +} + +void bdf_aa_Show(void) { + int x, y; + if (bdf_font_format == 2) { + for (y = 0; y < bdf_char_height + 2 * BDF_AA_OFFSET; y++) { + for (x = 0; x < bdf_char_width + 2 * BDF_AA_OFFSET; x++) + switch (bdf_aa_bitmap_line[y][x]) { + case 0: printf("."); break; + case 1: printf("-"); break; + case 2: printf("+"); break; + case 3: printf("#"); break; + } + printf("\n"); + } + } +} + +void bdf_aa_ClearDoShow(void) { + bdf_aa_Do(); + bdf_aa_Show(); +} + +/*=========================================================================*/ +/* Parser */ + +void bdf_ReadLine(const char *s) { + /* + if ( bdf_line_state == BDF_LINE_STATE_BITMAP && bdf_requested_encoding != bdf_encoding && *s != 'E' ) + return; + */ + + if (p_first_char(s) == 0) return; + if (p_skip_space() == 0) return; + + if (bdf_line_state == BDF_LINE_STATE_KEYWORDS) { + p_get_identifier(); + if (strcmp(p_buf, "COPYRIGHT") == 0) { + p_get_any(); + strcpy(bdf_copyright, p_buf); + } + else if (strcmp(p_buf, "FONT") == 0) { + /* p_get_any(); */ + p_get_identifier_with_blank(); + strcpy(bdf_font, p_buf); + } + else if (strcmp(p_buf, "SIZE") == 0) { + bdf_font_size = p_get_val(); + } + else if (strcmp(p_buf, "ENCODING") == 0) { + bdf_encoding = map_UnicodeToU8G(p_get_val()); + bdf_StoreFilePos(bdf_encoding, bdf_last_line_start_pos); + } + else if (strcmp(p_buf, "DWIDTH") == 0) { + bdf_delta_x = p_get_val(); + bdf_delta_y = p_get_val(); + } + else if (strcmp(p_buf, "FONTBOUNDINGBOX") == 0) { + bdf_font_width = p_get_val(); + bdf_font_height = p_get_val(); + bdf_font_x = p_get_val(); + bdf_font_y = p_get_val(); + } + else if (strcmp(p_buf, "BBX") == 0) { + bdf_char_width = p_get_val(); + bdf_char_height = p_get_val(); + bdf_char_x = p_get_val(); + bdf_char_y = p_get_val(); + bdf_char_ascent = bdf_char_height + bdf_char_y; + // printf("h:%d w:%d ascent: %d\n", bdf_char_height, bdf_char_width, bdf_char_ascent); + } + else if (strcmp(p_buf, "CHARS") == 0) { + if (bdf_delta_x < 0) + bdf_delta_x = 0; + if (bdf_delta_x_default < 0) + bdf_delta_x_default = bdf_delta_x; + } + else if (strcmp(p_buf, "STARTCHAR") == 0) { + if (bdf_delta_x_default < 0) + bdf_delta_x_default = 0; + bdf_delta_x = bdf_delta_x_default; + } + else if (strcmp(p_buf, "BITMAP") == 0) { + bdf_line_state = BDF_LINE_STATE_BITMAP; + bdf_line_bm_line = 0; + } + } + else if (bdf_line_state == BDF_LINE_STATE_BITMAP) { + if (strncmp(s, "ENDCHAR", 7) == 0) { + bdf_ReduceGlyph(); + bdf_PutGlyph(); + bdf_line_state = BDF_LINE_STATE_KEYWORDS; + bdf_line_bm_line = 0; + } + else if (bdf_requested_encoding == bdf_encoding) { + int i = 0; + for (;;) { + if (p_current_char < '0') break; + bdf_bitmap_line[bdf_line_bm_line][i] = p_get_hex_byte(); + i++; + } + bdf_line_bm_line++; + assert(bdf_line_bm_line < BDF_MAX_HEIGHT); + } + } +} + +int bdf_ReadFP(FILE *fp) { + static char bdf_line[BDF_LINE_MAX]; + bdf_is_put_glyph_completed = 0; + for (;;) { + bdf_last_line_start_pos = ftell(fp); + if (fgets(bdf_line, BDF_LINE_MAX - 1, fp) == NULL) + break; + bdf_ReadLine(bdf_line); + if (bdf_is_put_glyph_completed != 0) + break; + } + return 1; +} + +int bdf_ReadFile(const char *filename, int encoding) { + int r; + FILE *fp; + fp = fopen(filename, "rb"); + if (fp != NULL) { + bdf_SetFilePos(fp, encoding); + r = bdf_ReadFP(fp); + fclose(fp); + return r; + } + return 0; /* open error */ +} + +void bdf_GenerateFontData(const char *filename, int begin, int end) { + bdf_state = BDF_STATE_FONT_DATA; + bdf_ReadFile(filename, -1); + /** + * font information + * + * offset + * 0 font format + * 1 FONTBOUNDINGBOX width unsigned + * 2 FONTBOUNDINGBOX height unsigned + * 3 FONTBOUNDINGBOX x-offset signed + * 4 FONTBOUNDINGBOX y-offset signed + * 5 Capital A Height unsigned + * 6 position of encoding 65 'A' high byte first + * 8 position of encoding 97 'a' high byte first + */ + data_Put(bdf_font_format); + data_Put(bdf_font_width); + data_Put(bdf_font_height); + data_Put(bdf_font_x); + data_Put(bdf_font_y); + data_Put(bdf_capital_A_height > 0 ? bdf_capital_A_height : bdf_capital_1_height); + data_Put(0); + data_Put(0); + data_Put(0); + data_Put(0); + data_Put(begin); + data_Put(end); /* will be overwritten later */ + data_Put(0); /* lower g descent */ + data_Put(0); /* max ascent */ + data_Put(0); /* min y = descent */ + data_Put(0); /* x ascent */ + data_Put(0); /* x descent */ +} + +void bdf_GenerateGlyph(const char *filename, int encoding) { + bdf_ClearGlyphBuffer(); + bdf_requested_encoding = encoding; + bdf_state = BDF_STATE_ENCODING; + bdf_ReadFile(filename, encoding); +} + +void bdf_Generate(const char *filename, int begin, int end) { + int i; + int last_valid_encoding; + + bdf_encoding_65_pos = 0; + bdf_encoding_97_pos = 0; + + bdf_InitFilePos(); + bdf_ResetMax(); + bdf_info[0] = '\0'; + bdf_font[0] = '\0'; + bdf_copyright[0] = '\0'; + + bdf_GenerateFontData(filename, begin, end); + for (i = begin; i <= end; i++) { + + if (i == 65) bdf_encoding_65_pos = data_pos; + if (i == 97) bdf_encoding_97_pos = data_pos; + + bdf_is_encoding_successfully_done = 0; + if (bdf_IsEncodingAvailable(i)) + bdf_GenerateGlyph(filename, i); + if (bdf_is_encoding_successfully_done == 0) + data_Put(255); /* no char encoding */ + if (bdf_is_encoding_successfully_done != 0) + last_valid_encoding = i; + } + /* data_Put(255); obsolete, not required any more for format 0 */ /* encoding 255, end of font data (format 0) */ + + data_buf[5] = bdf_capital_A_height > 0 ? bdf_capital_A_height : bdf_capital_1_height; + + data_buf[6] = (bdf_encoding_65_pos >> 8); + data_buf[7] = (bdf_encoding_65_pos & 255); + data_buf[8] = (bdf_encoding_97_pos >> 8); + data_buf[9] = (bdf_encoding_97_pos & 255); + + data_buf[12] = bdf_lower_g_descent; + data_buf[13] = bdf_char_max_ascent; + data_buf[14] = bdf_char_min_y; + data_buf[15] = bdf_char_xascent; + data_buf[16] = bdf_char_xdescent; + + if (0) data_buf[11] = last_valid_encoding; + +} + +void bdf_WriteC(const char *outname, const char *fontname) { + int capital_ascent; + FILE *out_fp; + out_fp = fopen(outname, "wb"); + assert( out_fp != NULL ); + + capital_ascent = bdf_capital_A_height > 0 ? bdf_capital_A_height : bdf_capital_1_height; + + fprintf(out_fp, "/*\n"); + fprintf(out_fp, " Fontname: %s\n", bdf_font); + fprintf(out_fp, " Copyright: %s\n", bdf_copyright); + fprintf(out_fp, " Capital A Height: %d, '1' Height: %d\n", bdf_capital_A_height, bdf_capital_1_height); + fprintf(out_fp, " Calculated Max Values w=%2d h=%2d x=%2d y=%2d dx=%2d dy=%2d ascent=%2d len=%2d\n", + bdf_char_max_width, bdf_char_max_height, bdf_char_max_x, bdf_char_max_y, bdf_delta_max_x, bdf_delta_max_y, + bdf_char_max_ascent, bdf_glyph_data_max_len); + fprintf(out_fp, " Font Bounding box w=%2d h=%2d x=%2d y=%2d\n", + bdf_font_width, bdf_font_height, bdf_font_x, bdf_font_y); + fprintf(out_fp, " Calculated Min Values x=%2d y=%2d dx=%2d dy=%2d\n", + bdf_char_min_x, bdf_char_min_y, bdf_delta_min_x, bdf_delta_min_y); + + fprintf(out_fp, " Pure Font ascent =%2d descent=%2d\n", capital_ascent, bdf_lower_g_descent); + fprintf(out_fp, " X Font ascent =%2d descent=%2d\n", bdf_char_xascent, bdf_char_xdescent); + fprintf(out_fp, " Max Font ascent =%2d descent=%2d\n", bdf_char_max_ascent, bdf_char_min_y); + + fprintf(out_fp, "*/\n"); + fprintf(out_fp, "const u8g_fntpgm_uint8_t %s[%d] U8G_FONT_SECTION(\"%s\") = {\n", fontname, data_pos, fontname); + fprintf(out_fp, " "); + data_Write(out_fp, " "); + fprintf(out_fp, "};\n"); + #ifndef BDF2U8G_COMPACT_OUTPUT + fprintf(out_fp, "%s\n", bdf_info); + #endif + + fclose(out_fp); +} + +int ga_argc; +char **ga_argv; + +void ga_remove_arg(void) { + if (ga_argc == 0) return; + ga_argc--; + ga_argv++; +} + +int ga_is_arg(char opt) { + if (ga_argc == 0) return 0; + if (ga_argv[0] == NULL) return 0; + if (ga_argv[0][0] != '-') return 0; + if (ga_argv[0][1] != opt) return 0; + ga_remove_arg(); + return 1; +} + +int main(int argc, char **argv) { + int lower_page = 0; + int upper_page = 1; + int mapping_shift = 0; + int upper_mapping_shift = 0; + int begin = 32; + int end = 255; + + if (argc < 4) { + printf("bdf to u8glib font format converter v" BDF2U8G_VERSION "\n"); + printf("%s [-l page] [-u page] [-s shift] [-S upper-shift] [-b begin] [-e end] [-f format] fontfile fontname outputfile\n", argv[0]); + return 1; + } + + ga_argc = argc; + ga_argv = argv; + ga_remove_arg(); /* remove program name */ + + for (;;) { + if (ga_is_arg('l')) { + lower_page = atoi(ga_argv[0]); + ga_remove_arg(); + } + else if (ga_is_arg('u')) { + upper_page = atoi(ga_argv[0]); + ga_remove_arg(); + } + else if (ga_is_arg('s')) { + mapping_shift = atoi(ga_argv[0]); + ga_remove_arg(); + } + else if (ga_is_arg('S')) { + upper_mapping_shift = atoi(ga_argv[0]); + ga_remove_arg(); + } + else if (ga_is_arg('b')) { + begin = atoi(ga_argv[0]); + ga_remove_arg(); + } + else if (ga_is_arg('e')) { + end = atoi(ga_argv[0]); + ga_remove_arg(); + } + else if (ga_is_arg('f')) { + bdf_font_format = atoi(ga_argv[0]); + ga_remove_arg(); + } + else { + break; + } + } + + printf("encoding range %d..%d\n", begin, end); + + data_Init(); + map_Init(); + map_UpperLowerPage(lower_page, upper_page, mapping_shift, upper_mapping_shift); + + /* + puts(bdf_font); + puts(bdf_copyright); + if (ga_argc < 3) { + printf("from page %d to page %d\n", lower_page, upper_page); + return 1; + } + */ + + bdf_Generate(ga_argv[0], begin, end); + bdf_WriteC(ga_argv[2], ga_argv[1]); + + printf("input file '%s'\n", ga_argv[0]); + printf("u8g font name '%s'\n", ga_argv[1]); + printf("output file '%s'\n", ga_argv[2]); + + return 0; +} diff --git a/buildroot/share/fonts/genallfont.sh b/buildroot/share/fonts/genallfont.sh index ebb99b273f..e04b11a799 100755 --- a/buildroot/share/fonts/genallfont.sh +++ b/buildroot/share/fonts/genallfont.sh @@ -24,19 +24,9 @@ my_getpath() { echo -n "${DN}" [[ -z "$FN" ]] || echo -n "/${FN}" } -#DN_EXEC=`echo "$0" | ${EXEC_AWK} -F/ '{b=$1; for (i=2; i < NF; i ++) {b=b "/" $(i)}; print b}'` + DN_EXEC=$(dirname $(my_getpath "$0") ) -EXEC_WXGGEN="${DN_EXEC}/uxggenpages.sh" - -# -# Locate the bdf2u8g command -# -EXEC_BDF2U8G=`which bdf2u8g` -[ -x "${EXEC_BDF2U8G}" ] || EXEC_BDF2U8G="${DN_EXEC}/bdf2u8g" -[ -x "${EXEC_BDF2U8G}" ] || EXEC_BDF2U8G="${PWD}/bdf2u8g" -[ -x "${EXEC_BDF2U8G}" ] || { EOL=$'\n' ; echo "ERR: Can't find bdf2u8g!${EOL}See uxggenpages.md for bdf2u8g build instructions." >&2 ; exit 1; } - # # Get language arguments # @@ -55,9 +45,19 @@ OLDWD=`pwd` [[ -f "Configuration.h" ]] || { echo -n "cd to the 'Marlin' folder to run " ; basename $0 ; exit 1; } # -# Compile the 'genpages' command in-place +# Compile the 'genpages.exe' and 'bdf2u8g.exe' commands in-place # -(cd ${DN_EXEC}; cc -o genpages genpages.c getline.c) +if [[ ! -x "${DN_EXEC}/genpages/genpages.exe" ]]; then + echo "Building genpages.exe..." + ( cd ${DN_EXEC}/genpages ; cc -o genpages.exe genpages.c getline.c ) + [[ -x "${DN_EXEC}/genpages/genpages.exe" ]] || { echo "Build of genpages.exe failed" ; exit 1 ; } +fi + +if [[ ! -x "${DN_EXEC}/bdf2u8g/bdf2u8g.exe" ]]; then + echo "Building bdf2u8g.exe..." + ( cd ${DN_EXEC}/bdf2u8g ; make ) + [[ -x "${DN_EXEC}/bdf2u8g/bdf2u8g.exe" ]] || { echo "Build of bdf2u8g.exe failed" ; exit 1 ; } +fi # # By default loop through all languages @@ -74,11 +74,11 @@ for LANG in ${LANG_ARG:=$LANGS_DEFAULT} ; do ko_* ) FONTFILE="${DN_EXEC}/NanumGothic.bdf" ;; * ) FONTFILE="${DN_EXEC}/marlin-6x12-3.bdf" ;; esac - DN_WORK=`mktemp -d` + DN_WORK=$(mktemp -d) cp Configuration.h ${DN_WORK}/ cp src/lcd/language/language_${LANG}.h ${DN_WORK}/ cd "${DN_WORK}" - ${EXEC_WXGGEN} "${FONTFILE}" + ${DN_EXEC}/uxggenpages.sh "${FONTFILE}" $LANG sed -i fontutf8-data.h -e 's|fonts//|fonts/|g' -e 's|fonts//|fonts/|g' -e 's|[/0-9a-zA-Z_\-]*buildroot/share/fonts|buildroot/share/fonts|' 2>/dev/null cd - >/dev/null mv ${DN_WORK}/fontutf8-data.h src/lcd/dogm/fontdata/langdata_${LANG}.h @@ -89,9 +89,10 @@ done # Generate default ASCII font (char range 0-255): # Marlin/src/lcd/dogm/fontdata/fontdata_ISO10646_1.h # +EXEC_BDF2U8G="${DN_EXEC}/bdf2u8g/bdf2u8g.exe" #if [ "${MARLIN_LANGS}" == "${LANGS_DEFAULT}" ]; then if [ 1 = 1 ]; then - DN_WORK=`mktemp -d` + DN_WORK=$(mktemp -d) cd ${DN_WORK} ${EXEC_BDF2U8G} -b 1 -e 127 ${FN_FONT} ISO10646_1_5x7 tmp1.h >/dev/null ${EXEC_BDF2U8G} -b 1 -e 255 ${FN_FONT} ISO10646_1_5x7 tmp2.h >/dev/null @@ -103,7 +104,7 @@ if [ 1 = 1 ]; then cat <src/lcd/dogm/fontdata/fontdata_ISO10646_1.h /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -139,6 +140,4 @@ EOF fi -(cd ${DN_EXEC}; rm genpages) - cd "$OLDWD" diff --git a/buildroot/share/fonts/genpages.c b/buildroot/share/fonts/genpages/genpages.c similarity index 99% rename from buildroot/share/fonts/genpages.c rename to buildroot/share/fonts/genpages/genpages.c index 8009e553fa..dea5b05c5c 100644 --- a/buildroot/share/fonts/genpages.c +++ b/buildroot/share/fonts/genpages/genpages.c @@ -66,7 +66,7 @@ wchar_t get_val_utf82uni(uint8_t *pstart) { */ uint8_t* get_utf8_value(uint8_t *pstart, wchar_t *pval) { uint32_t val = 0; - const uint8_t *p = pstart; + uint8_t *p = pstart; /*size_t maxlen = strlen(pstart);*/ assert(NULL != pstart); diff --git a/buildroot/share/fonts/getline.c b/buildroot/share/fonts/genpages/getline.c similarity index 100% rename from buildroot/share/fonts/getline.c rename to buildroot/share/fonts/genpages/getline.c diff --git a/buildroot/share/fonts/getline.h b/buildroot/share/fonts/genpages/getline.h similarity index 100% rename from buildroot/share/fonts/getline.h rename to buildroot/share/fonts/genpages/getline.h diff --git a/buildroot/share/fonts/get-bdf2u8g.sh b/buildroot/share/fonts/get-bdf2u8g.sh deleted file mode 100755 index 5851bf93e3..0000000000 --- a/buildroot/share/fonts/get-bdf2u8g.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env bash - -##################################################################### -# get-bdf2u8g.sh for Marlin -# -# This script downloads, patches, and builds bdf2u8g -# License: CC-SA -# -# Execute from within buildroot/share/fonts -# -##################################################################### - -HERE=$(pwd) - -for CMD in curl unzip patch make; do - which $CMD >/dev/null || { echo "'$CMD' is required for this script." ; exit 1 ; } -done - -[[ $HERE =~ 'buildroot/share/fonts'$ ]] || { echo "Change to buildroot/share/fonts to run $(basename $0)" ; exit 1; } - -# Download u8glib -curl -LJO https://github.com/olikraus/u8glib/archive/master.zip -unzip u8glib-master.zip >/dev/null 2>&1 - -# Patch and build bdf2u8g -cd u8glib-master/tools/font/bdf2u8g -patch -p0 <../../../../u8glib-bdf2u8g.patch bdf2u8g.c >/dev/null 2>&1 -make >/dev/null 2>&1 -mv bdf2u8g ../../../../ - -# Clean up -cd - -rm -rf u8glib-master* - -cd "$HERE" diff --git a/buildroot/share/fonts/u8glib-bdf2u8g.patch b/buildroot/share/fonts/u8glib-bdf2u8g.patch deleted file mode 100644 index 1201e99800..0000000000 --- a/buildroot/share/fonts/u8glib-bdf2u8g.patch +++ /dev/null @@ -1,32 +0,0 @@ -178c178 -< fprintf(out_fp, "%d", data_buf[i]); ---- -> fprintf(out_fp, "0x%02x", data_buf[i]); -180c180 -< fprintf(out_fp, "%3d", data_buf[i]); ---- -> fprintf(out_fp, "0x%02x", data_buf[i]); -487c487,488 -< int bdf_delta_x; /* DWIDTH arg 1 */ ---- -> int bdf_delta_x_default = -1; -> int bdf_delta_x = -1; /* DWIDTH arg 1 */ -1097a1099,1114 -> else if ( strcmp(p_buf, "CHARS") == 0 ) -> { -> if (bdf_delta_x < 0) { -> bdf_delta_x = 0; -> } -> if (bdf_delta_x_default < 0) { -> bdf_delta_x_default = bdf_delta_x; -> } -> } -> else if ( strcmp(p_buf, "STARTCHAR") == 0 ) -> { -> if (bdf_delta_x_default < 0) { -> bdf_delta_x_default = 0; -> } -> bdf_delta_x = bdf_delta_x_default; -> } -1293d1309 -< fprintf(out_fp, "#include \"u8g.h\"\n"); diff --git a/buildroot/share/fonts/uxggenpages.sh b/buildroot/share/fonts/uxggenpages.sh index 047d3ae661..2d39297b8f 100755 --- a/buildroot/share/fonts/uxggenpages.sh +++ b/buildroot/share/fonts/uxggenpages.sh @@ -1,12 +1,12 @@ #!/usr/bin/env bash ##################################################################### -# genpages.sh for u8g +# uxggenpages.sh for u8g # # This script will generate u8g c files for specified fonts # # Copyright 2015-2018 Yunhui Fu -# License: GPL/BSD +# License: BSD ##################################################################### my_getpath() { @@ -31,16 +31,11 @@ DN_EXEC=$(dirname $(my_getpath "$0") ) ##################################################################### -EXEC_GENPAGES=${DN_EXEC}/genpages -[ -x "${EXEC_GENPAGES}" ] || EXEC_GENPAGES="$(my_getpath ${DN_EXEC}/../../../genpages)" -[ -x "${EXEC_GENPAGES}" ] || EXEC_GENPAGES=$(which genpages) +EXEC_GENPAGES=${DN_EXEC}/genpages/genpages.exe [ -x "${EXEC_GENPAGES}" ] || { echo "Error: genpages not found!" ; exit 1; } -#echo "EXEC_GENPAGES=${EXEC_GENPAGES}" -EXEC_BDF2U8G=${DN_EXEC}/bdf2u8g -[ -x "${EXEC_BDF2U8G}" ] || EXEC_BDF2U8G="${DN_EXEC}/../../../bdf2u8g" -[ -x "${EXEC_BDF2U8G}" ] || EXEC_BDF2U8G=$(which bdf2u8g) -[ -x "${EXEC_BDF2U8G}" ] || { echo "Error: bdf2u8g not found!" ; echo "Please compile u8glib/tools/font/bdf2u8g/bdf2u8g and link to it from here!"; exit 1; } +EXEC_BDF2U8G=${DN_EXEC}/bdf2u8g/bdf2u8g.exe +[ -x "${EXEC_BDF2U8G}" ] || { echo "Error: bdf2u8g not found!" ; exit 1; } DN_CUR=$(pwd) DN_DATA=$(pwd)/datatmp @@ -56,6 +51,7 @@ FN_FONT_BASE="marlin-6x12-3" #FN_FONT_BASE=wenquanyi_9pt FN_FONT="${1:-}" +LANG="$2" DN_FONT0=`dirname ${FN_FONT}` DN_FONT="$(my_getpath ${DN_FONT0})" FN_FONT="$(my_getpath "${DN_FONT}")/"`basename ${FN_FONT}` @@ -151,14 +147,14 @@ grep -Hrn _UxGT . | grep '"' \ ${EXEC_BDF2U8G} -u ${PAGE} -b ${BEGIN} -e ${END} ${FN_FONT} fontpage_${PAGE}_${BEGIN}_${END} ${DN_DATA}/fontpage_${PAGE}_${BEGIN}_${END}.h > /dev/null 2>&1 ; fi ; \ grep -A 10000000000 u8g_fntpgm_uint8_t ${DN_DATA}/fontpage_${PAGE}_${BEGIN}_${END}.h >> tmpa ; \ - echo " FONTDATA_ITEM(${PAGE}, ${BEGIN}, ${END}, fontpage_${PAGE}_${BEGIN}_${END}), // '${UTF8BEGIN}' -- '${UTF8END}'" >> tmpb ;\ + echo " FONTDATA_ITEM(${PAGE}, ${BEGIN}, ${END}, fontpage_${PAGE}_${BEGIN}_${END}), // '${UTF8BEGIN}' -- '${UTF8END}'" >> tmpb ;\ done TMPA=$(cat tmpa) TMPB=$(cat tmpb) EOL=$'\n' -[[ ! "$TMPA" == "" ]] && TMPA="$EOL$TMPA$EOL" +[[ ! "$TMPA" == "" ]] && TMPA="$TMPA$EOL$EOL" [[ ! "$TMPB" == "" ]] && TMPB="$EOL$TMPB$EOL" rm -f tmpa tmpb "proc.awk" @@ -169,8 +165,9 @@ cat <fontutf8-data.h * Contents will be REPLACED by future processing! * Use genallfont.sh to generate font data for updated languages. */ -#include -$TMPA -#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data } -static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {$TMPB}; +#pragma once + +#include "langdata.h" + +${TMPA}static const uxg_fontinfo_t g_fontinfo_${LANG}[] PROGMEM = {${TMPB}}; EOF From 31f1a0207fbbb693d22d17076c2e6e755b49fdde Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 1 Mar 2023 20:06:47 -0600 Subject: [PATCH 072/659] =?UTF-8?q?=F0=9F=8C=90=20Regenerate=20language=20?= =?UTF-8?q?data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/dogm/fontdata/langdata_hu.h | 8 +------- Marlin/src/lcd/dogm/fontdata/langdata_pl.h | 4 ++++ Marlin/src/lcd/dogm/fontdata/langdata_sv.h | 10 ++++++++++ Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h | 19 ------------------- Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h | 10 ++++------ 5 files changed, 19 insertions(+), 32 deletions(-) create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_sv.h diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_hu.h b/Marlin/src/lcd/dogm/fontdata/langdata_hu.h index 450662a8c9..c0175be874 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_hu.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_hu.h @@ -7,10 +7,4 @@ #include "langdata.h" -const u8g_fntpgm_uint8_t fontpage_2_241_241[31] U8G_FONT_SECTION("fontpage_2_241_241") = { - 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF1,0xF1,0x00,0x08,0x00,0x00, - 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x48,0x90,0x00,0x88,0x88,0x88,0x88,0x70}; - -static const uxg_fontinfo_t g_fontinfo_hu[] PROGMEM = { - FONTDATA_ITEM(2, 241, 241, fontpage_2_241_241), // 'ű' -- 'ű' -}; +static const uxg_fontinfo_t g_fontinfo_hu[] PROGMEM = {}; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_pl.h b/Marlin/src/lcd/dogm/fontdata/langdata_pl.h index e89a6c159a..e9365a69c2 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_pl.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_pl.h @@ -27,6 +27,9 @@ const u8g_fntpgm_uint8_t fontpage_2_218_219[47] U8G_FONT_SECTION("fontpage_2_218 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDA,0xDB,0x00,0x0A,0x00,0x00, 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x80,0x70,0x08,0x88, 0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x78,0x80,0x70,0x08,0xF0}; +const u8g_fntpgm_uint8_t fontpage_2_250_250[31] U8G_FONT_SECTION("fontpage_2_250_250") = { + 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFA,0xFA,0x00,0x08,0x00,0x00, + 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8}; const u8g_fntpgm_uint8_t fontpage_2_252_252[30] U8G_FONT_SECTION("fontpage_2_252_252") = { 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x07,0x00,0x00, 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8}; @@ -37,5 +40,6 @@ static const uxg_fontinfo_t g_fontinfo_pl[] PROGMEM = { FONTDATA_ITEM(2, 153, 153, fontpage_2_153_153), // 'ę' -- 'ę' FONTDATA_ITEM(2, 193, 196, fontpage_2_193_196), // 'Ł' -- 'ń' FONTDATA_ITEM(2, 218, 219, fontpage_2_218_219), // 'Ś' -- 'ś' + FONTDATA_ITEM(2, 250, 250, fontpage_2_250_250), // 'ź' -- 'ź' FONTDATA_ITEM(2, 252, 252, fontpage_2_252_252), // 'ż' -- 'ż' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_sv.h b/Marlin/src/lcd/dogm/fontdata/langdata_sv.h new file mode 100644 index 0000000000..cf6328766e --- /dev/null +++ b/Marlin/src/lcd/dogm/fontdata/langdata_sv.h @@ -0,0 +1,10 @@ +/** + * Generated automatically by buildroot/share/fonts/uxggenpages.sh + * Contents will be REPLACED by future processing! + * Use genallfont.sh to generate font data for updated languages. + */ +#pragma once + +#include "langdata.h" + +static const uxg_fontinfo_t g_fontinfo_sv[] PROGMEM = {}; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h b/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h index 664fa5f4bf..60316a1479 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h @@ -7,9 +7,6 @@ #include "langdata.h" -const u8g_fntpgm_uint8_t fontpage_64_157_157[26] U8G_FONT_SECTION("fontpage_64_157_157") = { - 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9D,0x9D,0x00,0x07,0x00,0x00, - 0x00,0x05,0x03,0x03,0x06,0x00,0x04,0xD8,0x48,0x90}; const u8g_fntpgm_uint8_t fontpage_69_191_191[28] U8G_FONT_SECTION("fontpage_69_191_191") = { 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBF,0xBF,0x00,0x05,0x00,0x00, 0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x08,0x18,0x28,0x48,0xF8}; @@ -382,10 +379,6 @@ const u8g_fntpgm_uint8_t fontpage_172_232_232[45] U8G_FONT_SECTION("fontpage_172 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x0A,0xFF,0x00, 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7B,0xC0,0x4A,0x40,0x4A,0x40,0x7B,0xC0,0x04, 0x80,0xFF,0xE0,0x11,0x00,0xFB,0xE0,0x4A,0x40,0x4A,0x40,0x7B,0xC0}; -const u8g_fntpgm_uint8_t fontpage_172_244_244[45] U8G_FONT_SECTION("fontpage_172_244_244") = { - 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x0A,0xFF,0x00, - 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x01,0x00,0xEF,0xE0,0xA5,0x40,0xAF,0xE0,0xA4, - 0x40,0xA7,0xC0,0xE4,0x40,0x07,0xC0,0x04,0x40,0x07,0xC0,0x0C,0x60}; const u8g_fntpgm_uint8_t fontpage_173_222_222[45] U8G_FONT_SECTION("fontpage_173_222_222") = { 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDE,0xDE,0x00,0x0A,0xFF,0x00, 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0xFF,0xC0,0x80,0x40,0x80,0x40,0x9E,0x40,0x92, @@ -744,10 +737,6 @@ const u8g_fntpgm_uint8_t fontpage_202_244_244[45] U8G_FONT_SECTION("fontpage_202 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x0A,0xFF,0x00, 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0xFF,0xE0,0x55,0x40,0x7C,0x80,0x39, 0x40,0x56,0x20,0x7F,0xC0,0x04,0x00,0x27,0x80,0x24,0x00,0xFF,0xE0}; -const u8g_fntpgm_uint8_t fontpage_203_135_135[45] U8G_FONT_SECTION("fontpage_203_135_135") = { - 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x87,0x87,0x00,0x0A,0xFF,0x00, - 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x11, - 0x00,0x11,0x00,0x0A,0x00,0x0A,0x00,0x04,0x00,0x1B,0x00,0xE0,0xE0}; const u8g_fntpgm_uint8_t fontpage_203_153_153[45] U8G_FONT_SECTION("fontpage_203_153_153") = { 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x99,0x99,0x00,0x0A,0xFF,0x00, 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x80,0xAC,0x80,0x72,0x80,0x20,0x80,0xFC, @@ -1050,10 +1039,6 @@ const u8g_fntpgm_uint8_t fontpage_246_201_201[45] U8G_FONT_SECTION("fontpage_246 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC9,0xC9,0x00,0x0A,0xFF,0x00, 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x00,0x7B,0xE0,0x94,0x80,0x7F,0xC0,0x04, 0x00,0xFF,0xE0,0x01,0x00,0x7F,0xC0,0x11,0x00,0x09,0x00,0x03,0x00}; -const u8g_fntpgm_uint8_t fontpage_247_128_128[45] U8G_FONT_SECTION("fontpage_247_128_128") = { - 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x0A,0xFF,0x00, - 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x00,0x7B,0xE0,0x94,0x80,0x27,0xC0,0x50, - 0x40,0x4F,0x40,0x49,0x40,0x4F,0x40,0x49,0x40,0x4F,0x40,0x40,0xC0}; const u8g_fntpgm_uint8_t fontpage_247_177_177[45] U8G_FONT_SECTION("fontpage_247_177_177") = { 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB1,0x00,0x0A,0xFF,0x00, 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x3D,0xE0,0x4A,0x80,0x94,0x40,0x7F, @@ -1465,7 +1450,6 @@ const u8g_fntpgm_uint8_t fontpage_510_154_154[30] U8G_FONT_SECTION("fontpage_510 0x00,0x02,0x07,0x07,0x0C,0x06,0x01,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0}; static const uxg_fontinfo_t g_fontinfo_zh_CN[] PROGMEM = { - FONTDATA_ITEM(64, 157, 157, fontpage_64_157_157), // '”' -- '”' FONTDATA_ITEM(69, 191, 191, fontpage_69_191_191), // '⊿' -- '⊿' FONTDATA_ITEM(156, 128, 128, fontpage_156_128_128), // '一' -- '一' FONTDATA_ITEM(156, 137, 139, fontpage_156_137_139), // '三' -- '下' @@ -1553,7 +1537,6 @@ static const uxg_fontinfo_t g_fontinfo_zh_CN[] PROGMEM = { FONTDATA_ITEM(171, 183, 183, fontpage_171_183_183), // '喷' -- '喷' FONTDATA_ITEM(172, 180, 180, fontpage_172_180_180), // '嘴' -- '嘴' FONTDATA_ITEM(172, 232, 232, fontpage_172_232_232), // '器' -- '器' - FONTDATA_ITEM(172, 244, 244, fontpage_172_244_244), // '噴' -- '噴' FONTDATA_ITEM(173, 222, 222, fontpage_173_222_222), // '回' -- '回' FONTDATA_ITEM(173, 224, 224, fontpage_173_224_224), // '因' -- '因' FONTDATA_ITEM(173, 250, 250, fontpage_173_250_250), // '固' -- '固' @@ -1642,7 +1625,6 @@ static const uxg_fontinfo_t g_fontinfo_zh_CN[] PROGMEM = { FONTDATA_ITEM(202, 240, 240, fontpage_202_240_240), // '数' -- '数' FONTDATA_ITEM(202, 242, 242, fontpage_202_242_242), // '敲' -- '敲' FONTDATA_ITEM(202, 244, 244, fontpage_202_244_244), // '整' -- '整' - FONTDATA_ITEM(203, 135, 135, fontpage_203_135_135), // '文' -- '文' FONTDATA_ITEM(203, 153, 153, fontpage_203_153_153), // '料' -- '料' FONTDATA_ITEM(203, 156, 156, fontpage_203_156_156), // '斜' -- '斜' FONTDATA_ITEM(203, 173, 173, fontpage_203_173_173), // '断' -- '断' @@ -1718,7 +1700,6 @@ static const uxg_fontinfo_t g_fontinfo_zh_CN[] PROGMEM = { FONTDATA_ITEM(245, 239, 239, fontpage_245_239_239), // '端' -- '端' FONTDATA_ITEM(246, 172, 172, fontpage_246_172_172), // '第' -- '第' FONTDATA_ITEM(246, 201, 201, fontpage_246_201_201), // '等' -- '等' - FONTDATA_ITEM(247, 128, 128, fontpage_247_128_128), // '简' -- '简' FONTDATA_ITEM(247, 177, 177, fontpage_247_177_177), // '箱' -- '箱' FONTDATA_ITEM(248, 251, 251, fontpage_248_251_251), // '类' -- '类' FONTDATA_ITEM(250, 162, 162, fontpage_250_162_162), // '索' -- '索' diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h b/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h index 093629cd16..c132a0de70 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h @@ -343,12 +343,10 @@ const u8g_fntpgm_uint8_t fontpage_178_167_167[45] U8G_FONT_SECTION("fontpage_178 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA7,0xA7,0x00,0x0A,0xFF,0x00, 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04, 0x00,0x04,0x00,0x0A,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60}; -const u8g_fntpgm_uint8_t fontpage_178_169_170[73] U8G_FONT_SECTION("fontpage_178_169_170") = { - 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA9,0xAA,0x00,0x0A,0xFF,0x00, +const u8g_fntpgm_uint8_t fontpage_178_169_169[45] U8G_FONT_SECTION("fontpage_178_169_169") = { + 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA9,0xA9,0x00,0x0A,0xFF,0x00, 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0xFF, - 0xE0,0x04,0x00,0x0A,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x0B,0x0B,0x16, - 0x0C,0x00,0xFF,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0A,0x00,0x0A, - 0x00,0x11,0x00,0x19,0x00,0x24,0x80,0xC4,0x60}; + 0xE0,0x04,0x00,0x0A,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60}; const u8g_fntpgm_uint8_t fontpage_178_177_177[45] U8G_FONT_SECTION("fontpage_178_177_177") = { 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB1,0x00,0x0A,0xFF,0x00, 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x24,0x00,0x24,0x00,0x3F,0xC0,0x44,0x00,0x04, @@ -1302,7 +1300,7 @@ static const uxg_fontinfo_t g_fontinfo_zh_TW[] PROGMEM = { FONTDATA_ITEM(178, 154, 154, fontpage_178_154_154), // '多' -- '多' FONTDATA_ITEM(178, 160, 160, fontpage_178_160_160), // '夠' -- '夠' FONTDATA_ITEM(178, 167, 167, fontpage_178_167_167), // '大' -- '大' - FONTDATA_ITEM(178, 169, 170, fontpage_178_169_170), // '天' -- '太' + FONTDATA_ITEM(178, 169, 169, fontpage_178_169_169), // '天' -- '天' FONTDATA_ITEM(178, 177, 177, fontpage_178_177_177), // '失' -- '失' FONTDATA_ITEM(179, 203, 203, fontpage_179_203_203), // '始' -- '始' FONTDATA_ITEM(181, 146, 146, fontpage_181_146_146), // '媒' -- '媒' From 41115e0590e7adfc40a5a19cb4b0676b24e46075 Mon Sep 17 00:00:00 2001 From: Marcio T Date: Wed, 1 Mar 2023 21:07:23 -0700 Subject: [PATCH 073/659] =?UTF-8?q?=F0=9F=9A=B8=20Improve=20CocoaPress=20T?= =?UTF-8?q?ouch=20UI=20(#25446)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cocoa_press/advanced_settings_menu.cpp | 4 +- .../cocoa_press/cocoa_press_ui.h | 54 ++-- .../confirm_start_print_dialog_box.cpp | 55 ++++ .../confirm_start_print_dialog_box.h | 32 ++ .../cocoa_press/files_screen.cpp | 289 ++++++++++++++++++ .../cocoa_press/files_screen.h | 68 +++++ .../cocoa_press/leveling_menu.cpp | 6 + .../cocoa_press/load_chocolate.cpp | 95 ++---- .../cocoa_press/load_chocolate.h | 2 +- .../cocoa_press/preheat_menu.cpp | 2 +- .../ftdi_eve_touch_ui/cocoa_press/screens.h | 4 +- .../cocoa_press/status_screen.cpp | 268 ++++++++++------ .../cocoa_press/status_screen.h | 10 +- .../generic/max_velocity_screen.cpp | 2 +- .../ftdi_eve_touch_ui/language/language_en.h | 6 +- .../lcd/extui/ftdi_eve_touch_ui/screen_data.h | 1 + .../lcd/extui/ftdi_eve_touch_ui/screens.cpp | 2 + .../theme/marlin_bootscreen_landscape.h | 1 - .../theme/marlin_bootscreen_portrait.h | 1 - 19 files changed, 695 insertions(+), 207 deletions(-) create mode 100644 Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/confirm_start_print_dialog_box.cpp create mode 100644 Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/confirm_start_print_dialog_box.h create mode 100644 Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/files_screen.cpp create mode 100644 Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/files_screen.h diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp index 00cdf76331..f607dc102d 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp @@ -58,8 +58,8 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) { .enabled(ENABLED(HAS_TRINAMIC_CONFIG)) .tag(3) .button(TMC_CURRENT_POS, GET_TEXT_F(MSG_TMC_CURRENT)) .enabled(ENABLED(LIN_ADVANCE)) - .tag(4) .button(LIN_ADVANCE_POS, GET_TEXT_F(MSG_LINEAR_ADVANCE)) - .tag(5) .button(VELOCITY_POS, GET_TEXT_F(MSG_MAX_SPEED)) + .tag(4) .button(LIN_ADVANCE_POS, GET_TEXT_F(MSG_LINEAR_ADVANCE)) + .tag(5) .button(VELOCITY_POS, GET_TEXT_F(MSG_MAX_SPEED_NO_UNITS)) .tag(6) .button(ACCELERATION_POS, GET_TEXT_F(MSG_ACCELERATION)) .tag(7) .button(JERK_POS, GET_TEXT_F(TERN(HAS_JUNCTION_DEVIATION, MSG_JUNCTION_DEVIATION, MSG_JERK))) .tag(8) .button(ENDSTOPS_POS, GET_TEXT_F(MSG_LCD_ENDSTOPS)) diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/cocoa_press_ui.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/cocoa_press_ui.h index 6a02228925..5704371131 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/cocoa_press_ui.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/cocoa_press_ui.h @@ -1,4 +1,3 @@ - /**************************************************************************** * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -28,33 +27,26 @@ constexpr float x_max = 480.000000; constexpr float y_min = 0.000000; constexpr float y_max = 272.000000; -const PROGMEM uint16_t syringe_outline[] = {0xED96, 0x14F0, 0xE65D, 0x10E9, 0xDED2, 0x0F9C, 0xD74B, 0x110E, 0xD01B, 0x1543, 0xCE80, 0x1836, 0xCE0A, 0x1C3A, 0xCE0F, 0x27AD, 0xCF0A, 0x2BD3, 0xD127, 0x2E5B, 0xD2A1, 0x2FF0, 0xD2A2, 0x9FC9, 0xD407, 0xA97A, 0xD7B9, 0xB10C, 0xD7BF, 0xBB58, 0xD978, 0xC2BE, 0xDD55, 0xC6EB, 0xDD58, 0xD159, 0xDE3B, 0xD3A8, 0xDFCF, 0xD3AF, 0xE0B8, 0xD04C, 0xE0B8, 0xC6EB, 0xE4A7, 0xC299, 0xE652, 0xBAF6, 0xE652, 0xB10C, 0xEA2E, 0xA8EA, 0xEB6C, 0x9E86, 0xEB6C, 0x2F58, 0xEF3C, 0x2B4E, 0xF003, 0x2583, 0xEFFD, 0x1AC2, 0xED96, 0x14F0, 0xED96, 0x14F0}; -const PROGMEM uint16_t syringe_fluid[] = {0xDE73, 0x2512, 0xDA0C, 0x261D, 0xD5B8, 0x29A0, 0xD4AE, 0x2D87, 0xD4AE, 0x9F60, 0xD585, 0xA63B, 0xDE44, 0xA9DE, 0xE32A, 0xA942, 0xE7E3, 0xA6A5, 0xE930, 0xA342, 0xE95D, 0x9C1D, 0xE95B, 0x31B8, 0xE955, 0x2B63, 0xE867, 0x2A67, 0xE790, 0x28DE, 0xE342, 0x25CB, 0xDE73, 0x2512}; -const PROGMEM uint16_t syringe[] = {0xED91, 0x1502, 0xE658, 0x10FB, 0xDECE, 0x0FAE, 0xD746, 0x1120, 0xD016, 0x1555, 0xCE7B, 0x1848, 0xCE05, 0x1C4D, 0xCE0A, 0x27BF, 0xCF05, 0x2BE5, 0xD122, 0x2E6E, 0xD29C, 0x3002, 0xD29D, 0x9FDB, 0xD402, 0xA98C, 0xD7B4, 0xB11F, 0xD7BA, 0xBB6A, 0xD973, 0xC2D1, 0xDD50, 0xC6FD, 0xDD53, 0xD16C, 0xDE36, 0xD3BA, 0xDFCA, 0xD3C2, 0xE0B3, 0xD05E, 0xE0B3, 0xC6FD, 0xE4A2, 0xC2AB, 0xE64D, 0xBB09, 0xE64D, 0xB11F, 0xEA29, 0xA8FC, 0xEB67, 0x9E98, 0xEB67, 0x2F6B, 0xEF37, 0x2B60, 0xEFFE, 0x2595, 0xEFF8, 0x1AD5, 0xED91, 0x1502, 0xED91, 0x1502, 0xFFFF, 0xD1CF, 0x1A7E, 0xD84F, 0x16DB, 0xDF19, 0x15A9, 0xE5E0, 0x16EA, 0xEC5B, 0x1AA4, 0xEC9D, 0x1D34, 0xEC9D, 0x20CC, 0xE5F1, 0x1D41, 0xDF02, 0x1C12, 0xD812, 0x1D41, 0xD166, 0x20CC, 0xD16C, 0x1B45, 0xD1CF, 0x1A7E, 0xFFFF, 0xE3BD, 0xACFD, 0xDE8E, 0xAF4F, 0xD988, 0xAC0F, 0xD7CC, 0xA8CD, 0xDD1C, 0xAAA9, 0xE287, 0xAA5B, 0xE655, 0xA8BE, 0xE3BD, 0xACFD, 0xFFFF, 0xE802, 0x2DC5, 0xE809, 0x343C, 0xE808, 0x9FC8, 0xE7E3, 0xA296, 0xE70D, 0xA4B1, 0xE2C9, 0xA70E, 0xDE4E, 0xA790, 0xD6A1, 0xA457, 0xD5FF, 0x9F2B, 0xD5FF, 0x2DFD, 0xD6B2, 0x2B72, 0xDA78, 0x2861, 0xDE9D, 0x276F, 0xE300, 0x2824, 0xE70D, 0x2B13, 0xE7FF, 0x2DB6, 0xE800, 0x2DC5, 0xE802, 0x2DC5, 0xFFFF, 0xE2ED, 0xBA8B, 0xE1CC, 0xBF52, 0xDF1C, 0xC165, 0xDC64, 0xBF99, 0xDB1B, 0xBAFF, 0xDB19, 0xB433, 0xDF04, 0xB552, 0xE2EF, 0xB438, 0xE2ED, 0xBA8B, 0xFFFF, 0xEC09, 0x2893, 0xE925, 0x2A08, 0xE57D, 0x261D, 0xE149, 0x246F, 0xDBDE, 0x24A0, 0xD6BC, 0x2795, 0xD484, 0x2A46, 0xD1C0, 0x2853, 0xD166, 0x251E, 0xD80D, 0x2151, 0xDF02, 0x200C, 0xE5F6, 0x2151, 0xEC9D, 0x251E, 0xEC09, 0x2893}; -const PROGMEM uint16_t park_btn[] = {0x0AAA, 0x0E1E, 0x57FF, 0x0E1E, 0x57FF, 0x33C3, 0x0AAA, 0x33C3, 0x0AAA, 0x0E1E}; -const PROGMEM uint16_t pause_btn[] = {0x47FF, 0xCA58, 0x7FFF, 0xCA58, 0x7FFF, 0xEFFE, 0x47FF, 0xEFFE, 0x47FF, 0xCA58}; -const PROGMEM uint16_t load_chocolate_btn[] = {0x0AAA, 0x3D2C, 0x57FF, 0x3D2C, 0x57FF, 0x62D2, 0x0AAA, 0x62D2, 0x0AAA, 0x3D2C}; -const PROGMEM uint16_t preheat_chocolate_btn[] = {0x0AAA, 0x6C3B, 0x57FF, 0x6C3B, 0x57FF, 0x91E0, 0x0AAA, 0x91E0, 0x0AAA, 0x6C3B}; -const PROGMEM uint16_t menu_btn[] = {0x0AAA, 0x9B4A, 0x57FF, 0x9B4A, 0x57FF, 0xC0EF, 0x0AAA, 0xC0EF, 0x0AAA, 0x9B4A}; -const PROGMEM uint16_t print_btn[] = {0x0AAA, 0xCA58, 0x42AA, 0xCA58, 0x42AA, 0xEFFE, 0x0AAA, 0xEFFE, 0x0AAA, 0xCA58}; -const PROGMEM uint16_t stop_btn[] = {0x8554, 0xCA58, 0xBD53, 0xCA58, 0xBD53, 0xEFFE, 0x8554, 0xEFFE, 0x8554, 0xCA58}; -const PROGMEM uint16_t print_time_hms[] = {0x62A9, 0xA968, 0x8FFE, 0xA968, 0x8FFE, 0xC0EF, 0x62A9, 0xC0EF, 0x62A9, 0xA968}; -const PROGMEM uint16_t print_time_percent[] = {0x8FFE, 0xA968, 0xBD53, 0xA968, 0xBD53, 0xC0EF, 0x8FFE, 0xC0EF, 0x8FFE, 0xA968}; -const PROGMEM uint16_t print_time_label[] = {0x62A9, 0x91E0, 0xBD53, 0x91E0, 0xBD53, 0xA986, 0x62A9, 0xA986, 0x62A9, 0x91E0}; -const PROGMEM uint16_t h3_temp[] = {0x62A9, 0x75A4, 0x8FFE, 0x75A4, 0x8FFE, 0x8D2C, 0x62A9, 0x8D2C, 0x62A9, 0x75A4}; -const PROGMEM uint16_t h3_label[] = {0x62A9, 0x5E1D, 0x8FFE, 0x5E1D, 0x8FFE, 0x75A4, 0x62A9, 0x75A4, 0x62A9, 0x5E1D}; -const PROGMEM uint16_t chocolate_label[] = {0x62A9, 0x12D2, 0xBD53, 0x12D2, 0xBD53, 0x2A5A, 0x62A9, 0x2A5A, 0x62A9, 0x12D2}; -const PROGMEM uint16_t h0_label[] = {0x62A9, 0x2A5A, 0x8FFE, 0x2A5A, 0x8FFE, 0x41E1, 0x62A9, 0x41E1, 0x62A9, 0x2A5A}; -const PROGMEM uint16_t h0_temp[] = {0x62A9, 0x41E1, 0x8FFE, 0x41E1, 0x8FFE, 0x5968, 0x62A9, 0x5968, 0x62A9, 0x41E1}; -const PROGMEM uint16_t h1_label[] = {0x8FFE, 0x2A5A, 0xBD53, 0x2A5A, 0xBD53, 0x41E1, 0x8FFE, 0x41E1, 0x8FFE, 0x2A5A}; -const PROGMEM uint16_t h1_temp[] = {0x8FFE, 0x41E1, 0xBD53, 0x41E1, 0xBD53, 0x5968, 0x8FFE, 0x5968, 0x8FFE, 0x41E1}; -const PROGMEM uint16_t h2_label[] = {0x8FFE, 0x5E1D, 0xBD53, 0x5E1D, 0xBD53, 0x75A4, 0x8FFE, 0x75A4, 0x8FFE, 0x5E1D}; -const PROGMEM uint16_t h2_temp[] = {0x8FFE, 0x75A4, 0xBD53, 0x75A4, 0xBD53, 0x8D2C, 0x8FFE, 0x8D2C, 0x8FFE, 0x75A4}; -const PROGMEM uint16_t extrude_btn[] = {0xC859, 0xDD2B, 0xF5AE, 0xDD2B, 0xF5AE, 0xEFFE, 0xC859, 0xEFFE, 0xC859, 0xDD2B}; -const PROGMEM uint16_t load_screen_extrude[] = {0x25FB, 0x89AE, 0x2F58, 0x89AE, 0x2F58, 0xAAF6, 0x3406, 0xAAF6, 0x2AAA, 0xBB9A, 0x214D, 0xAAF6, 0x25FB, 0xAAF6, 0x25FB, 0x89AE}; -const PROGMEM uint16_t load_screen_retract[] = {0x25FC, 0x790A, 0x2F58, 0x790A, 0x2F58, 0x57C2, 0x3406, 0x57C2, 0x2AAA, 0x471D, 0x214D, 0x57C2, 0x25FC, 0x57C2, 0x25FC, 0x790A}; -const PROGMEM uint16_t load_screen_back_btn[] = {0x1555, 0xCA58, 0xC553, 0xCA58, 0xC553, 0xEFFE, 0x1555, 0xEFFE, 0x1555, 0xCA58}; -const PROGMEM uint16_t load_screen_unload_btn[] = {0x4AAA, 0x8EBD, 0xC553, 0x8EBD, 0xC553, 0xB463, 0x4AAA, 0xB463, 0x4AAA, 0x8EBD}; -const PROGMEM uint16_t load_screen_load_btn[] = {0x4AAA, 0x5322, 0xC553, 0x5322, 0xC553, 0x78C7, 0x4AAA, 0x78C7, 0x4AAA, 0x5322}; -const PROGMEM uint16_t load_sreen_title[] = {0x4AAA, 0x1787, 0xC553, 0x1787, 0xC553, 0x3D2C, 0x4AAA, 0x3D2C, 0x4AAA, 0x1787}; -const PROGMEM uint16_t load_screen_increment[] = {0x1555, 0x2E1D, 0x3FFF, 0x2E1D, 0x3FFF, 0x3D2C, 0x1555, 0x3D2C, 0x1555, 0x2E1D}; +const PROGMEM uint16_t menu_btn[] = {0x0AAA, 0x0E1E, 0x6D54, 0x0E1E, 0x6D54, 0x2F0E, 0x0AAA, 0x2F0E, 0x0AAA, 0x0E1E}; +const PROGMEM uint16_t print_btn[] = {0x47FF, 0xCF0D, 0x7FFF, 0xCF0D, 0x7FFF, 0xEFFE, 0x47FF, 0xEFFE, 0x47FF, 0xCF0D}; +const PROGMEM uint16_t load_chocolate_btn[] = {0x0AAA, 0x3878, 0x6D54, 0x3878, 0x6D54, 0x5968, 0x0AAA, 0x5968, 0x0AAA, 0x3878}; +const PROGMEM uint16_t extrude_btn[] = {0x0AAA, 0x5E1D, 0x6D54, 0x5E1D, 0x6D54, 0x7F0E, 0x0AAA, 0x7F0E, 0x0AAA, 0x5E1D}; +const PROGMEM uint16_t preheat_chocolate_btn[] = {0x0AAA, 0x83C2, 0x6D54, 0x83C2, 0x6D54, 0xA4B3, 0x0AAA, 0xA4B3, 0x0AAA, 0x83C2}; +const PROGMEM uint16_t media_btn[] = {0x0AAA, 0xCF0D, 0x42AA, 0xCF0D, 0x42AA, 0xEFFE, 0x0AAA, 0xEFFE, 0x0AAA, 0xCF0D}; +const PROGMEM uint16_t pause_btn[] = {0x8554, 0xCF0D, 0xBD53, 0xCF0D, 0xBD53, 0xEFFE, 0x8554, 0xEFFE, 0x8554, 0xCF0D}; +const PROGMEM uint16_t print_time_hms[] = {0xC59E, 0xAEA0, 0xF510, 0xAEA0, 0xF510, 0xC52D, 0xC59E, 0xC52D, 0xC59E, 0xAEA0}; +const PROGMEM uint16_t file_name[] = {0x0B0E, 0xAECD, 0xBCEF, 0xAECD, 0xBCEF, 0xC4AB, 0x0B0E, 0xC4AB, 0x0B0E, 0xAECD}; +const PROGMEM uint16_t chocolate_label[] = {0x75C1, 0x1369, 0xF4FE, 0x1369, 0xF4FE, 0x2AB1, 0x75C1, 0x2AB1, 0x75C1, 0x1369}; +const PROGMEM uint16_t h0_label[] = {0x8304, 0x4BEB, 0xB271, 0x4BEB, 0xB271, 0x63B0, 0x8304, 0x63B0, 0x8304, 0x4BEB}; +const PROGMEM uint16_t h0_temp[] = {0x8304, 0x7190, 0xB271, 0x7190, 0xB271, 0x8955, 0x8304, 0x8955, 0x8304, 0x7190}; +const PROGMEM uint16_t h1_label[] = {0xBB04, 0x4BEB, 0xEA71, 0x4BEB, 0xEA71, 0x63B0, 0xBB04, 0x63B0, 0xBB04, 0x4BEB}; +const PROGMEM uint16_t h1_temp[] = {0xBB04, 0x7190, 0xEA71, 0x7190, 0xEA71, 0x8956, 0xBB04, 0x8956, 0xBB04, 0x7190}; +const PROGMEM uint16_t stop_btn[] = {0xC2A9, 0xCF0D, 0xF553, 0xCF0D, 0xF553, 0xEFFE, 0xC2A9, 0xEFFE, 0xC2A9, 0xCF0D}; +const PROGMEM uint16_t load_screen_extrude[] = {0x382C, 0x8B02, 0x4188, 0x8B02, 0x4188, 0xAC4A, 0x4637, 0xAC4A, 0x3CDA, 0xBCEE, 0x337D, 0xAC4A, 0x382C, 0xAC4A, 0x382C, 0x8B02}; +const PROGMEM uint16_t load_screen_retract[] = {0x382C, 0x7A5D, 0x4188, 0x7A5D, 0x4188, 0x5915, 0x4637, 0x5915, 0x3CDA, 0x4871, 0x337E, 0x5915, 0x382C, 0x5915, 0x382C, 0x7A5D}; +const PROGMEM uint16_t load_screen_back_btn[] = {0x1555, 0xCA58, 0xEAA8, 0xCA58, 0xEAA8, 0xEFFE, 0x1555, 0xEFFE, 0x1555, 0xCA58}; +const PROGMEM uint16_t load_screen_unload_btn[] = {0x67FF, 0x70F0, 0xEAA8, 0x70F0, 0xEAA8, 0x9695, 0x67FF, 0x9695, 0x67FF, 0x70F0}; +const PROGMEM uint16_t load_screen_start_stop_btn[] = {0x67FF, 0x9B4A, 0xEAA8, 0x9B4A, 0xEAA8, 0xC0EF, 0x67FF, 0xC0EF, 0x67FF, 0x9B4A}; +const PROGMEM uint16_t load_screen_load_btn[] = {0x67FF, 0x4696, 0xEAA8, 0x4696, 0xEAA8, 0x6C3B, 0x67FF, 0x6C3B, 0x67FF, 0x4696}; +const PROGMEM uint16_t load_screen_continuous[] = {0x67FF, 0x1787, 0xEAA8, 0x1787, 0xEAA8, 0x3D2C, 0x67FF, 0x3D2C, 0x67FF, 0x1787}; +const PROGMEM uint16_t load_screen_increment[] = {0x1555, 0x1787, 0x62A9, 0x1787, 0x62A9, 0x3D2C, 0x1555, 0x3D2C, 0x1555, 0x1787}; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/confirm_start_print_dialog_box.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/confirm_start_print_dialog_box.cpp new file mode 100644 index 0000000000..ca98e7c9b6 --- /dev/null +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/confirm_start_print_dialog_box.cpp @@ -0,0 +1,55 @@ +/************************************** + * confirm_start_print_dialog_box.cpp * + **************************************/ + +/**************************************************************************** + * Written By Mark Pelletier 2017 - Aleph Objects, Inc. * + * Written By Marcio Teixeira 2018 - Aleph Objects, Inc. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * To view a copy of the GNU General Public License, go to the following * + * location: . * + ****************************************************************************/ + +#include "../config.h" +#include "../screens.h" + +#ifdef COCOA_CONFIRM_START_PRINT + +using namespace FTDI; +using namespace Theme; +using namespace ExtUI; + +void ConfirmStartPrintDialogBox::onRedraw(draw_mode_t) { + FileList files; + const char *filename = files.filename(); + char buffer[strlen_P(GET_TEXT(MSG_START_PRINT_CONFIRMATION)) + strlen(filename) + 1]; + sprintf_P(buffer, GET_TEXT(MSG_START_PRINT_CONFIRMATION), filename); + drawMessage((const char *)buffer); + drawYesNoButtons(); +} + +bool ConfirmStartPrintDialogBox::onTouchEnd(uint8_t tag) { + switch (tag) { + case 1: { + FileList files; + printFile(files.shortFilename()); + StatusScreen::setStatusMessage(GET_TEXT_F(MSG_PRINT_STARTING)); + GOTO_SCREEN(StatusScreen); + return true; + } + case 2: GOTO_PREVIOUS(); return true; + default: return false; + } +} + +#endif // COCOA_CONFIRM_START_PRINT diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/confirm_start_print_dialog_box.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/confirm_start_print_dialog_box.h new file mode 100644 index 0000000000..38cb5c2774 --- /dev/null +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/confirm_start_print_dialog_box.h @@ -0,0 +1,32 @@ +/************************************ + * confirm_start_print_dialog_box.h * + ************************************/ + +/**************************************************************************** + * Written By Mark Pelletier 2017 - Aleph Objects, Inc. * + * Written By Marcio Teixeira 2018 - Aleph Objects, Inc. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * To view a copy of the GNU General Public License, go to the following * + * location: . * + ****************************************************************************/ + +#pragma once + +#define COCOA_CONFIRM_START_PRINT +#define COCOA_CONFIRM_START_PRINT_CLASS ConfirmStartPrintDialogBox + +class ConfirmStartPrintDialogBox : public DialogBoxBaseClass, public UncachedScreen { + public: + static void onRedraw(draw_mode_t); + static bool onTouchEnd(uint8_t); +}; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/files_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/files_screen.cpp new file mode 100644 index 0000000000..581c337428 --- /dev/null +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/files_screen.cpp @@ -0,0 +1,289 @@ +/******************** + * files_screen.cpp * + ********************/ + +/**************************************************************************** + * Written By Mark Pelletier 2017 - Aleph Objects, Inc. * + * Written By Marcio Teixeira 2018 - Aleph Objects, Inc. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * To view a copy of the GNU General Public License, go to the following * + * location: . * + ****************************************************************************/ + +#include "../config.h" +#include "../screens.h" +#include "../screen_data.h" + +#ifdef COCOA_FILES_SCREEN + +#if ENABLED(TOUCH_UI_PORTRAIT) + #define GRID_COLS 6 + #define GRID_ROWS 15 + #define FILES_PER_PAGE 11 + #define PREV_DIR LEFT + #define NEXT_DIR RIGHT + + #define PREV_POS BTN_POS(1,1), BTN_SIZE(1,2) + #define HEAD_POS BTN_POS(2,1), BTN_SIZE(4,2) + #define NEXT_POS BTN_POS(6,1), BTN_SIZE(1,2) + #define LIST_POS BTN_POS(1,3), BTN_SIZE(6,FILES_PER_PAGE) + #define BTN1_POS BTN_POS(1,14), BTN_SIZE(3,2) + #define BTN2_POS BTN_POS(4,14), BTN_SIZE(3,2) +#else + #define GRID_COLS 12 + #define GRID_ROWS 8 + #define FILES_PER_PAGE 6 + #define PREV_DIR UP + #define NEXT_DIR DOWN + + #define PREV_POS BTN_POS(12,2), BTN_SIZE(1,3) + #define HEAD_POS BTN_POS( 1,1), BTN_SIZE(12,1) + #define NEXT_POS BTN_POS(12,5), BTN_SIZE(1,4) + #define LIST_POS BTN_POS( 1,2), BTN_SIZE(11,FILES_PER_PAGE) + #define BTN1_POS BTN_POS( 1,8), BTN_SIZE(6,1) + #define BTN2_POS BTN_POS( 7,8), BTN_SIZE(5,1) +#endif + +using namespace FTDI; +using namespace ExtUI; +using namespace Theme; + +constexpr static FilesScreenData &mydata = screen_data.FilesScreen; + +void FilesScreen::onEntry() { + mydata.cur_page = 0; + mydata.selected_tag = 0xFF; + #if ENABLED(SCROLL_LONG_FILENAMES) && (FTDI_API_LEVEL >= 810) + CLCD::mem_write_32(CLCD::REG::MACRO_0,DL::NOP); + #endif + gotoPage(0); + BaseScreen::onEntry(); +} + +const char *FilesScreen::getSelectedFilename(bool shortName) { + FileList files; + files.seek(getSelectedFileIndex(), true); + return shortName ? files.shortFilename() : files.filename(); +} + +void FilesScreen::drawSelectedFile() { + if(mydata.selected_tag == 0xFF) return; + FileList files; + files.seek(getSelectedFileIndex(), true); + mydata.flags.is_dir = files.isDir(); + drawFileButton( + files.filename(), + mydata.selected_tag, + mydata.flags.is_dir, + true + ); +} + +uint16_t FilesScreen::getSelectedFileIndex() { + return getFileForTag(mydata.selected_tag); +} + +uint16_t FilesScreen::getFileForTag(uint8_t tag) { + return mydata.cur_page * FILES_PER_PAGE + tag - 2; +} + +void FilesScreen::drawFileButton(int x, int y, int w, int h, const char *filename, uint8_t tag, bool is_dir, bool is_highlighted) { + #define SUB_COLS 6 + #define SUB_ROWS FILES_PER_PAGE + + const int bx = SUB_X(1); + const int by = SUB_Y(getLineForTag(tag)+1); + const int bw = SUB_W(6); + const int bh = SUB_H(1); + + CommandProcessor cmd; + cmd.tag(tag); + cmd.cmd(COLOR_RGB(is_highlighted ? fg_action : bg_color)); + cmd.font(font_medium).rectangle(bx, by, bw, bh); + cmd.cmd(COLOR_RGB(is_highlighted ? normal_btn.rgb : bg_text_enabled)); + #if ENABLED(SCROLL_LONG_FILENAMES) + if (is_highlighted) { + cmd.cmd(SAVE_CONTEXT()); + cmd.cmd(SCISSOR_XY(x,y)); + cmd.cmd(SCISSOR_SIZE(w,h)); + cmd.cmd(MACRO(0)); + cmd.text(bx, by, bw, bh, filename, OPT_CENTERY | OPT_NOFIT); + } else + #endif + draw_text_with_ellipsis(cmd, bx,by, bw - (is_dir ? 20 : 0), bh, filename, OPT_CENTERY, font_medium); + if (is_dir && !is_highlighted) cmd.text(bx, by, bw, bh, F("> "), OPT_CENTERY | OPT_RIGHTX); + #if ENABLED(SCROLL_LONG_FILENAMES) + if (is_highlighted) cmd.cmd(RESTORE_CONTEXT()); + #endif +} + +void FilesScreen::drawFileList() { + FileList files; + mydata.num_page = max(1,ceil(float(files.count()) / FILES_PER_PAGE)); + mydata.cur_page = min(mydata.cur_page, mydata.num_page-1); + mydata.flags.is_root = files.isAtRootDir(); + mydata.flags.is_empty = true; + + uint16_t fileIndex = mydata.cur_page * FILES_PER_PAGE; + for (uint8_t i = 0; i < FILES_PER_PAGE; i++, fileIndex++) { + if (files.seek(fileIndex)) { + drawFileButton(files.filename(), getTagForLine(i), files.isDir(), false); + mydata.flags.is_empty = false; + } else + break; + } +} + +void FilesScreen::drawHeader() { + char str[16]; + sprintf_P(str, PSTR("Page %d of %d"), mydata.cur_page + 1, mydata.num_page); + + CommandProcessor cmd; + cmd.colors(normal_btn) + .font(font_small) + .tag(0).button(HEAD_POS, str, OPT_CENTER | OPT_FLAT); +} + +void FilesScreen::drawArrows() { + const bool prev_enabled = mydata.cur_page > 0; + const bool next_enabled = mydata.cur_page < (mydata.num_page - 1); + + CommandProcessor cmd; + cmd.colors(normal_btn); + cmd.tag(242).enabled(prev_enabled).button(PREV_POS, F("")); if (prev_enabled) drawArrow(PREV_POS, PREV_DIR); + cmd.tag(243).enabled(next_enabled).button(NEXT_POS, F("")); if (next_enabled) drawArrow(NEXT_POS, NEXT_DIR); +} + +void FilesScreen::drawFooter() { + const bool has_selection = mydata.selected_tag != 0xFF; + + CommandProcessor cmd; + cmd.colors(normal_btn) + .font(font_medium) + .colors(normal_btn) + .enabled(!mydata.flags.is_root) + .tag(245).button(BTN2_POS, F("Up Dir")) + .colors(action_btn); + + if (mydata.flags.is_empty) + cmd.tag(240).button(BTN1_POS, GET_TEXT_F(MSG_BUTTON_DONE)); + else if (has_selection && mydata.flags.is_dir) + cmd.tag(244).button(BTN1_POS, GET_TEXT_F(MSG_BUTTON_OPEN)); + else + cmd.tag(241).enabled(has_selection).button(BTN1_POS, F("Select")); +} + +void FilesScreen::drawFileButton(const char *filename, uint8_t tag, bool is_dir, bool is_highlighted) { + #undef MARGIN_L + #undef MARGIN_R + #define MARGIN_L 0 + #define MARGIN_R 0 + drawFileButton(LIST_POS, filename, tag, is_dir, is_highlighted); +} + +void FilesScreen::onRedraw(draw_mode_t what) { + if (what & FOREGROUND) { + drawHeader(); + drawArrows(); + drawSelectedFile(); + drawFooter(); + } +} + +void FilesScreen::gotoPage(uint8_t page) { + mydata.selected_tag = 0xFF; + mydata.cur_page = page; + CommandProcessor cmd; + cmd.cmd(CMD_DLSTART) + .cmd(CLEAR_COLOR_RGB(bg_color)) + .cmd(CLEAR(true,true,true)) + .colors(normal_btn); + drawFileList(); + storeBackground(); +} + +bool FilesScreen::onTouchEnd(uint8_t tag) { + switch (tag) { + case 240: // Done button, always select first file + { + FileList files; + files.seek(0); + GOTO_PREVIOUS(); + } + return true; + case 241: // Select highlighted file + GOTO_PREVIOUS(); + return true; + case 242: // Previous page + if (mydata.cur_page > 0) { + gotoPage(mydata.cur_page-1); + } + break; + case 243: // Next page + if (mydata.cur_page < (mydata.num_page-1)) { + gotoPage(mydata.cur_page+1); + } + break; + case 244: // Select directory + { + FileList files; + files.changeDir(getSelectedShortFilename()); + gotoPage(0); + } + break; + case 245: // Up directory + { + FileList files; + files.upDir(); + gotoPage(0); + } + break; + default: // File selected + if (tag < 240) { + mydata.selected_tag = tag; + #if ENABLED(SCROLL_LONG_FILENAMES) && (FTDI_API_LEVEL >= 810) + mydata.scroll_pos = 0; + mydata.scroll_max = 0; + if (FTDI::ftdi_chip >= 810) { + const char *filename = getSelectedFilename(); + if (filename[0]) { + CommandProcessor cmd; + constexpr int dim[4] = {LIST_POS}; + const uint16_t text_width = cmd.font(font_medium).text_width(filename); + if (text_width > dim[2]) + mydata.scroll_max = text_width - dim[2] + MARGIN_L + MARGIN_R + 10; + } + } + #endif + } + break; + } + return true; +} + +void FilesScreen::onIdle() { + #if ENABLED(SCROLL_LONG_FILENAMES) && (FTDI_API_LEVEL >= 810) + if (FTDI::ftdi_chip >= 810) { + CLCD::mem_write_32(CLCD::REG::MACRO_0, + VERTEX_TRANSLATE_X(-int32_t(mydata.scroll_pos))); + if (mydata.scroll_pos < mydata.scroll_max * 16) + mydata.scroll_pos++; + } + #endif +} + +void FilesScreen::onMediaRemoved() { + if (AT_SCREEN(FilesScreen)) GOTO_SCREEN(StatusScreen); +} + +#endif // COCOA_FILES_SCREEN diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/files_screen.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/files_screen.h new file mode 100644 index 0000000000..99ea52ff81 --- /dev/null +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/files_screen.h @@ -0,0 +1,68 @@ +/****************** + * files_screen.h * + ******************/ + +/**************************************************************************** + * Written By Mark Pelletier 2017 - Aleph Objects, Inc. * + * Written By Marcio Teixeira 2018 - Aleph Objects, Inc. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * To view a copy of the GNU General Public License, go to the following * + * location: . * + ****************************************************************************/ + +#pragma once + +#define COCOA_FILES_SCREEN +#define COCOA_FILES_SCREEN_CLASS FilesScreen + +struct FilesScreenData { + struct { + uint8_t is_dir : 1; + uint8_t is_root : 1; + uint8_t is_empty : 1; + } flags; + uint8_t selected_tag; + uint8_t num_page; + uint8_t cur_page; + #if ENABLED(SCROLL_LONG_FILENAMES) && (FTDI_API_LEVEL >= 810) + uint16_t scroll_pos; + uint16_t scroll_max; + #endif +}; + +class FilesScreen : public BaseScreen, public CachedScreen { + private: + static uint8_t getTagForLine(uint8_t line) {return line + 2;} + static uint8_t getLineForTag(uint8_t tag) {return tag - 2;} + static uint16_t getFileForTag(uint8_t tag); + static uint16_t getSelectedFileIndex(); + + inline static const char *getSelectedShortFilename() {return getSelectedFilename(true);} + static const char *getSelectedFilename(bool shortName = false); + + static void drawFileButton(int x, int y, int w, int h, const char *filename, uint8_t tag, bool is_dir, bool is_highlighted); + static void drawFileButton(const char *filename, uint8_t tag, bool is_dir, bool is_highlighted); + static void drawFileList(); + static void drawHeader(); + static void drawArrows(); + static void drawFooter(); + static void drawSelectedFile(); + + static void gotoPage(uint8_t); + public: + static void onEntry(); + static void onRedraw(draw_mode_t); + static bool onTouchEnd(uint8_t tag); + static void onIdle(); + static void onMediaRemoved(); +}; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp index 5e61bdb12f..be18c03483 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp @@ -57,7 +57,9 @@ void LevelingMenu::onRedraw(draw_mode_t what) { cmd.font(font_large) .cmd(COLOR_RGB(bg_text_enabled)) .text(BED_MESH_TITLE_POS, GET_TEXT_F(MSG_BED_LEVELING)) + #if ENABLED(BLTOUCH) .text(BLTOUCH_TITLE_POS, GET_TEXT_F(MSG_BLTOUCH)) + #endif .font(font_medium).colors(normal_btn) .tag(2).button(PROBE_BED_POS, GET_TEXT_F(MSG_PROBE_BED)) .enabled(ENABLED(HAS_MESH)) @@ -66,8 +68,10 @@ void LevelingMenu::onRedraw(draw_mode_t what) { .tag(4).button(EDIT_MESH_POS, GET_TEXT_F(MSG_EDIT_MESH)) #undef GRID_COLS #define GRID_COLS 2 + #if ENABLED(BLTOUCH) .tag(5).button(BLTOUCH_RESET_POS, GET_TEXT_F(MSG_BLTOUCH_RESET)) .tag(6).button(BLTOUCH_TEST_POS, GET_TEXT_F(MSG_BLTOUCH_SELFTEST)) + #endif #undef GRID_COLS #define GRID_COLS 3 .colors(action_btn) @@ -81,8 +85,10 @@ bool LevelingMenu::onTouchEnd(uint8_t tag) { case 2: BedMeshViewScreen::doProbe(); break; case 3: BedMeshViewScreen::show(); break; case 4: BedMeshEditScreen::show(); break; + #if ENABLED(BLTOUCH) case 5: injectCommands(F("M280 P0 S60")); break; case 6: SpinnerDialogBox::enqueueAndWait(F("M280 P0 S90\nG4 P100\nM280 P0 S120")); break; + #endif default: return false; } return true; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp index d40b3be354..95ddf7d387 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp @@ -39,42 +39,6 @@ using namespace Theme; constexpr static LoadChocolateScreenData &mydata = screen_data.LoadChocolateScreen; -void LoadChocolateScreen::draw_syringe(draw_mode_t what) { - #if ENABLED(COCOA_PRESS_CHOCOLATE_LEVEL_SENSOR) - const float fill_level = get_chocolate_fill_level(); - #else - constexpr float fill_level = 1.0f; - #endif - - CommandProcessor cmd; - PolyUI ui(cmd, what); - - if (what & BACKGROUND) { - // Paint the shadow for the syringe - ui.color(shadow_rgb); - ui.shadow(POLY(syringe_outline), shadow_depth); - } - - if (what & FOREGROUND) { - int16_t x, y, h, v; - - // Paint the syringe icon - ui.color(syringe_rgb); - ui.fill(POLY(syringe_outline)); - - ui.color(fluid_rgb); - ui.bounds(POLY(syringe_fluid), x, y, h, v); - cmd.cmd(SAVE_CONTEXT()); - cmd.cmd(SCISSOR_XY(x,y + v * (1.0 - fill_level))); - cmd.cmd(SCISSOR_SIZE(h, v * fill_level)); - ui.fill(POLY(syringe_fluid), false); - cmd.cmd(RESTORE_CONTEXT()); - - ui.color(stroke_rgb); - ui.fill(POLY(syringe)); - } -} - void LoadChocolateScreen::draw_buttons(draw_mode_t what) { int16_t x, y, h, v; @@ -84,10 +48,18 @@ void LoadChocolateScreen::draw_buttons(draw_mode_t what) { cmd.font(font_medium).colors(normal_btn); ui.bounds(POLY(load_screen_unload_btn), x, y, h, v); - cmd.tag(2).button(x, y, h, v, GET_TEXT_F(MSG_FULL_UNLOAD)); + cmd.tag(2).colors(mydata.repeat_tag == 5 ? action_btn : normal_btn).button(x, y, h, v, GET_TEXT_F(MSG_UNLOAD)); ui.bounds(POLY(load_screen_load_btn), x, y, h, v); - cmd.tag(3).button(x, y, h, v, GET_TEXT_F(MSG_FULL_LOAD)); + cmd.tag(3).colors(mydata.repeat_tag == 6 ? action_btn : normal_btn).button(x, y, h, v, GET_TEXT_F(MSG_LOAD)); + + ui.bounds(POLY(load_screen_start_stop_btn), x, y, h, v); + if(mydata.repeat_tag == 0) { + cmd.colors(normal_btn).enabled(false); + } else { + cmd.colors(mydata.repeating ? action_btn : normal_btn).enabled(true); + } + cmd.tag(4).button(x, y, h, v, GET_TEXT_F(MSG_START_STOP)); ui.bounds(POLY(load_screen_back_btn), x, y, h, v); cmd.tag(1).colors(action_btn).button(x, y, h, v, GET_TEXT_F(MSG_BUTTON_DONE)); @@ -102,8 +74,8 @@ void LoadChocolateScreen::draw_text(draw_mode_t what) { cmd.font(font_medium).cmd(COLOR_RGB(bg_text_enabled)); - ui.bounds(POLY(load_sreen_title), x, y, h, v); - cmd.tag(2).text(x, y, h, v, GET_TEXT_F(MSG_LOAD_UNLOAD)); + ui.bounds(POLY(load_screen_continuous), x, y, h, v); + cmd.tag(2).text(x, y, h, v, GET_TEXT_F(MSG_CONTINUOUS)); ui.bounds(POLY(load_screen_increment), x, y, h, v); cmd.tag(3).text(x, y, h, v, GET_TEXT_F(MSG_INCREMENT)); @@ -120,11 +92,12 @@ void LoadChocolateScreen::draw_arrows(draw_mode_t what) { constexpr uint8_t style = PolyUI::REGULAR; - ui.button(4, POLY(load_screen_extrude), style); - ui.button(5, POLY(load_screen_retract), style); + ui.button(5, POLY(load_screen_extrude), style); + ui.button(6, POLY(load_screen_retract), style); } void LoadChocolateScreen::onEntry() { + mydata.repeating = false; mydata.repeat_tag = 0; } @@ -136,14 +109,15 @@ void LoadChocolateScreen::onRedraw(draw_mode_t what) { .tag(0); } - draw_syringe(what); draw_arrows(what); draw_buttons(what); draw_text(what); } -bool LoadChocolateScreen::onTouchStart(uint8_t) { - mydata.repeat_tag = 0; +bool LoadChocolateScreen::onTouchStart(uint8_t tag) { + if(tag != 4) { + mydata.repeating = false; + } return true; } @@ -151,10 +125,13 @@ bool LoadChocolateScreen::onTouchEnd(uint8_t tag) { using namespace ExtUI; switch (tag) { case 2: - mydata.repeat_tag = (mydata.repeat_tag == 2) ? 0 : 2; + mydata.repeat_tag = 5; break; case 3: - mydata.repeat_tag = (mydata.repeat_tag == 3) ? 0 : 3; + mydata.repeat_tag = 6; + break; + case 4: + mydata.repeating = !mydata.repeating; break; case 1: GOTO_PREVIOUS(); break; } @@ -176,26 +153,10 @@ bool LoadChocolateScreen::onTouchHeld(uint8_t tag) { #define UI_INCREMENT_AXIS(axis) UI_INCREMENT(AxisPosition_mm, axis); #define UI_DECREMENT_AXIS(axis) UI_DECREMENT(AxisPosition_mm, axis); switch (tag) { - case 2: { - if (get_chocolate_fill_level() < 0.1) { - mydata.repeat_tag = 0; - return false; - } - UI_INCREMENT_AXIS(E0); - break; - } - case 3: { - if (get_chocolate_fill_level() > 0.75) { - mydata.repeat_tag = 0; - return false; - } - UI_DECREMENT_AXIS(E0); - break; - } - case 4: - UI_INCREMENT_AXIS(E0); - break; case 5: + UI_INCREMENT_AXIS(E0); + break; + case 6: UI_DECREMENT_AXIS(E0); break; default: return false; @@ -207,7 +168,7 @@ bool LoadChocolateScreen::onTouchHeld(uint8_t tag) { void LoadChocolateScreen::onIdle() { reset_menu_timeout(); - if (mydata.repeat_tag) onTouchHeld(mydata.repeat_tag); + if (mydata.repeating) onTouchHeld(mydata.repeat_tag); if (refresh_timer.elapsed(STATUS_UPDATE_INTERVAL)) { if (!EventLoop::is_touch_held()) onRefresh(); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.h index 4a582f0212..426669775d 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.h @@ -28,11 +28,11 @@ struct LoadChocolateScreenData { uint8_t repeat_tag; + bool repeating; }; class LoadChocolateScreen : public BaseScreen, public CachedScreen { private: - static void draw_syringe(draw_mode_t what); static void draw_arrows(draw_mode_t what); static void draw_buttons(draw_mode_t what); static void draw_text(draw_mode_t what); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_menu.cpp index b01aa81dd4..2fabb81ee4 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_menu.cpp @@ -32,7 +32,7 @@ using namespace Theme; #define GRID_ROWS 5 void PreheatMenu::onRedraw(draw_mode_t what) { - const int16_t w = TERN0(COCOA_PRESS_EXTRA_HEATER, has_extra_heater() ? BTN_W(1) : BTN_W(2)); + const int16_t w = TERN0(COCOA_PRESS_EXTRA_HEATER, has_extra_heater()) ? BTN_W(1) : BTN_W(2); const int16_t h = BTN_H(1); if (what & BACKGROUND) { diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/screens.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/screens.h index 8481e446c4..5276f64f44 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/screens.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/screens.h @@ -90,7 +90,6 @@ enum { #include "../generic/spinner_dialog_box.h" #include "../generic/restore_failsafe_dialog_box.h" #include "../generic/save_settings_dialog_box.h" -#include "../generic/confirm_start_print_dialog_box.h" #include "../generic/confirm_abort_print_dialog_box.h" #include "../generic/confirm_user_request_alert_box.h" #include "../generic/touch_calibration_screen.h" @@ -114,7 +113,6 @@ enum { #include "../generic/bed_mesh_edit_screen.h" #include "../generic/case_light_screen.h" #include "../generic/linear_advance_screen.h" -#include "../generic/files_screen.h" #include "../generic/move_axis_screen.h" #include "../generic/flow_percent_screen.h" #if HAS_JUNCTION_DEVIATION @@ -132,3 +130,5 @@ enum { #include "leveling_menu.h" #include "move_xyz_screen.h" #include "move_e_screen.h" +#include "files_screen.h" +#include "confirm_start_print_dialog_box.h" diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/status_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/status_screen.cpp index 00b2d6a094..eddf367239 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/status_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/status_screen.cpp @@ -29,6 +29,8 @@ #include "cocoa_press_ui.h" #define POLY(A) PolyUI::poly_reader_t(A, sizeof(A)/sizeof(A[0])) +#define ICON_POS(x,y,w,h) x, y, h, h +#define TEXT_POS(x,y,w,h) x + h, y, w - h, h const uint8_t shadow_depth = 5; @@ -38,8 +40,28 @@ using namespace ExtUI; float StatusScreen::increment; +void StatusScreen::_format_time(char *outstr, uint32_t time) { + const uint8_t hrs = time / 3600, + min = (time / 60) % 60, + sec = time % 60; + if (hrs) + sprintf_P(outstr, PSTR("%02d:%02d"), hrs, min); + else + sprintf_P(outstr, PSTR("%02d:%02ds"), min, sec); +} + void StatusScreen::loadBitmaps() { + // Load the bitmaps for the status screen + using namespace Theme; constexpr uint32_t base = ftdi_memory_map::RAM_G; + CLCD::mem_write_xbm(base + Light_Bulb_Info.RAMG_offset, Light_Bulb, sizeof(Light_Bulb)); + CLCD::mem_write_xbm(base + Chamber_Icon_Info.RAMG_offset, Chamber_Icon, sizeof(Chamber_Icon)); + CLCD::mem_write_xbm(base + Clock_Icon_Info.RAMG_offset, Clock_Icon, sizeof(Clock_Icon)); + CLCD::mem_write_xbm(base + File_Icon_Info.RAMG_offset, File_Icon, sizeof(File_Icon)); + CLCD::mem_write_xbm(base + TD_Icon_Info.RAMG_offset, TD_Icon, sizeof(TD_Icon)); + CLCD::mem_write_xbm(base + Extruder_Icon_Info.RAMG_offset, Extruder_Icon, sizeof(Extruder_Icon)); + CLCD::mem_write_xbm(base + Bed_Heat_Icon_Info.RAMG_offset, Bed_Heat_Icon, sizeof(Bed_Heat_Icon)); + CLCD::mem_write_xbm(base + Fan_Icon_Info.RAMG_offset, Fan_Icon, sizeof(Fan_Icon)); // Load fonts for internationalization #if ENABLED(TOUCH_UI_USE_UTF8) @@ -47,33 +69,50 @@ void StatusScreen::loadBitmaps() { #endif } -void StatusScreen::draw_progress(draw_mode_t what) { +void StatusScreen::draw_time(draw_mode_t what) { CommandProcessor cmd; PolyUI ui(cmd, what); - int16_t x, y, h, v; - - cmd.cmd(COLOR_RGB(accent_color_1)); - cmd.font(font_medium); + int16_t x, y, w, h; + ui.bounds(POLY(print_time_hms), x, y, w, h); if (what & BACKGROUND) { - ui.bounds(POLY(print_time_label), x, y, h, v); - cmd.text(x, y, h, v, GET_TEXT_F(MSG_ELAPSED_PRINT)); + cmd.cmd(COLOR_RGB(bg_text_enabled)) + .cmd (BITMAP_SOURCE(Clock_Icon_Info)) + .cmd (BITMAP_LAYOUT(Clock_Icon_Info)) + .cmd (BITMAP_SIZE (Clock_Icon_Info)) + .icon(ICON_POS(x, y, w, h), Clock_Icon_Info, icon_scale) + .cmd(COLOR_RGB(bg_text_enabled)); } if (what & FOREGROUND) { const uint32_t elapsed = getProgress_seconds_elapsed(); - const uint8_t hrs = elapsed/3600; - const uint8_t min = (elapsed/60)%60; + char elapsed_str[10]; + _format_time(elapsed_str, elapsed); - char str[10]; - sprintf_P(str, PSTR(" %02d : %02d"), hrs, min); - ui.bounds(POLY(print_time_hms), x, y, h, v); - cmd.text(x, y, h, v, str); + cmd.font(font_medium) + .cmd(COLOR_RGB(bg_text_enabled)) + .text(TEXT_POS(x, y, w, h), elapsed_str); + } +} - sprintf_P(str, PSTR("%-3d%%"), getProgress_percent() ); - ui.bounds(POLY(print_time_percent), x, y, h, v); - cmd.text(x, y, h, v, str); + +void StatusScreen::draw_progress(draw_mode_t what) { + CommandProcessor cmd; + PolyUI ui(cmd, what); + + int16_t x, y, w, h; + + cmd.cmd(COLOR_RGB(accent_color_1)); + cmd.font(font_medium); + + if (what & FOREGROUND) { + // Draw progress bar + ui.bounds(POLY(file_name), x, y, w, h); + const uint16_t bar_width = w * getProgress_percent() / 100; + cmd.tag(8) + .cmd(COLOR_RGB(accent_color_5)) + .rectangle(x, y, bar_width, h); } } @@ -81,30 +120,38 @@ void StatusScreen::draw_temperature(draw_mode_t what) { CommandProcessor cmd; PolyUI ui(cmd, what); - int16_t x, y, h, v; + int16_t x, y, w, h; if (what & BACKGROUND) { cmd.cmd(COLOR_RGB(fluid_rgb)); cmd.font(font_medium).tag(10); - ui.bounds(POLY(chocolate_label), x, y, h, v); - cmd.text(x, y, h, v, GET_TEXT_F(MSG_CHOCOLATE)); + /*ui.bounds(POLY(temp_lbl), x, y, w, h); + cmd.text(x, y, w, h, F("Temp")); - ui.bounds(POLY(h0_label), x, y, h, v); - cmd.text(x, y, h, v, GET_TEXT_F(MSG_NOZZLE)); + ui.bounds(POLY(set_lbl), x, y, w, h); + cmd.text(x, y, w, h, F("Set"));*/ - ui.bounds(POLY(h1_label), x, y, h, v); - cmd.text(x, y, h, v, GET_TEXT_F(MSG_BODY)); + ui.bounds(POLY(chocolate_label), x, y, w, h); + cmd.text(x, y, w, h, F("Cocoa Press")); + + ui.bounds(POLY(h0_label), x, y, w, h); + cmd.text(x, y, w, h, GET_TEXT_F(MSG_NOZZLE)); + + ui.bounds(POLY(h1_label), x, y, w, h); + cmd.text(x, y, w, h, GET_TEXT_F(MSG_BODY)); #if ENABLED(COCOA_PRESS_EXTRA_HEATER) if (has_extra_heater()) { - ui.bounds(POLY(h2_label), x, y, h, v); - cmd.text(x, y, h, v, GET_TEXT_F(MSG_EXTERNAL)); + ui.bounds(POLY(h2_label), x, y, w, h); + cmd.text(x, y, w, h, GET_TEXT_F(MSG_EXTERNAL)); } #endif - ui.bounds(POLY(h3_label), x, y, h, v); - cmd.text(x, y, h, v, GET_TEXT_F(MSG_CHAMBER)); + #if ENABLED(COCOA_PRESS_CHAMBER_COOLER) + ui.bounds(POLY(h3_label), x, y, w, h); + cmd.text(x, y, w, h, GET_TEXT_F(MSG_CHAMBER)); + #endif #if ENABLED(TOUCH_UI_USE_UTF8) load_utf8_bitmaps(cmd); // Restore font bitmap handles @@ -117,68 +164,60 @@ void StatusScreen::draw_temperature(draw_mode_t what) { cmd.font(font_large).tag(10); + // Show the actual temperatures + format_temp(str, getActualTemp_celsius(E0)); - ui.bounds(POLY(h0_temp), x, y, h, v); - cmd.text(x, y, h, v, str); + ui.bounds(POLY(h0_temp), x, y, w, h); + cmd.text(x, y, w, h, str); format_temp(str, getActualTemp_celsius(E1)); - ui.bounds(POLY(h1_temp), x, y, h, v); - cmd.text(x, y, h, v, str); + ui.bounds(POLY(h1_temp), x, y, w, h); + cmd.text(x, y, w, h, str); #if ENABLED(COCOA_PRESS_EXTRA_HEATER) if (has_extra_heater()) { format_temp(str, getActualTemp_celsius(E2)); - ui.bounds(POLY(h2_temp), x, y, h, v); - cmd.text(x, y, h, v, str); + ui.bounds(POLY(h2_temp), x, y, w, h); + cmd.text(x, y, w, h, str); } #endif - format_temp(str, getActualTemp_celsius(CHAMBER)); - ui.bounds(POLY(h3_temp), x, y, h, v); - cmd.text(x, y, h, v, str); - } -} + #if ENABLED(COCOA_PRESS_CHAMBER_COOLER) + format_temp(str, getActualTemp_celsius(CHAMBER)); + ui.bounds(POLY(h3_temp), x, y, w, h); + cmd.text(x, y, w, h, str); + #endif -void StatusScreen::draw_syringe(draw_mode_t what) { - #if ENABLED(COCOA_PRESS_CHOCOLATE_LEVEL_SENSOR) - const float fill_level = get_chocolate_fill_level(); - #else - constexpr float fill_level = 1.0f; - #endif + /*// Show the set temperatures + format_temp(str, getTargetTemp_celsius(E0)); + ui.bounds(POLY(h0_set), x, y, w, h); + cmd.text(x, y, w, h, str); - CommandProcessor cmd; - PolyUI ui(cmd, what); + format_temp(str, getTargetTemp_celsius(E1)); + ui.bounds(POLY(h1_set), x, y, w, h); + cmd.text(x, y, w, h, str); - if (what & BACKGROUND) { - // Paint the shadow for the syringe - ui.color(shadow_rgb); - ui.shadow(POLY(syringe_outline), shadow_depth); - } + #if ENABLED(COCOA_PRESS_EXTRA_HEATER) + if (has_extra_heater()) { + format_temp(str, getTargetTemp_celsius(E2)); + ui.bounds(POLY(h2_set), x, y, w, h); + cmd.text(x, y, w, h, str); + } + #endif - if (what & FOREGROUND) { - int16_t x, y, h, v; - - // Paint the syringe icon - ui.color(syringe_rgb); - ui.fill(POLY(syringe_outline)); - - ui.color(fluid_rgb); - ui.bounds(POLY(syringe_fluid), x, y, h, v); - cmd.cmd(SAVE_CONTEXT()); - cmd.cmd(SCISSOR_XY(x,y + v * (1.0 - fill_level))); - cmd.cmd(SCISSOR_SIZE(h, v * fill_level)); - ui.fill(POLY(syringe_fluid), false); - cmd.cmd(RESTORE_CONTEXT()); - - ui.color(stroke_rgb); - ui.fill(POLY(syringe)); + #if ENABLED(COCOA_PRESS_CHAMBER_COOLER) + format_temp(str, getTargetTemp_celsius(CHAMBER)); + ui.bounds(POLY(h3_set), x, y, w, h); + cmd.text(x, y, w, h, str); + #endif*/ } } void StatusScreen::draw_buttons(draw_mode_t what) { - int16_t x, y, h, v; + int16_t x, y, w, h; - const bool can_print = isMediaInserted() && !isPrintingFromMedia(); + const bool can_print = !isPrinting() && isMediaInserted() && isFileSelected(); + const bool can_select = !isPrinting() && isMediaInserted(); const bool sdOrHostPrinting = ExtUI::isPrinting(); const bool sdOrHostPaused = ExtUI::isPrintingPaused(); @@ -187,29 +226,68 @@ void StatusScreen::draw_buttons(draw_mode_t what) { cmd.font(font_medium).colors(normal_btn); - ui.bounds(POLY(park_btn), x, y, h, v); - cmd.tag(1).button(x, y, h, v, GET_TEXT_F(MSG_FILAMENT_PARK_ENABLED)); + ui.bounds(POLY(load_chocolate_btn), x, y, w, h); + cmd.tag(1).button(x, y, w, h, GET_TEXT_F(MSG_LOAD_UNLOAD)); - ui.bounds(POLY(load_chocolate_btn), x, y, h, v); - cmd.tag(2).button(x, y, h, v, GET_TEXT_F(MSG_LOAD_UNLOAD)); + ui.bounds(POLY(extrude_btn), x, y, w, h); + cmd.tag(2).button(x, y, w, h, GET_TEXT_F(MSG_EXTRUDE)); - ui.bounds(POLY(preheat_chocolate_btn), x, y, h, v); - cmd.tag(3).button(x, y, h, v, GET_TEXT_F(MSG_PREHEAT_CHOCOLATE)); + ui.bounds(POLY(preheat_chocolate_btn), x, y, w, h); + cmd.tag(3).button(x, y, w, h, GET_TEXT_F(MSG_PREHEAT_CHOCOLATE)); - ui.bounds(POLY(menu_btn), x, y, h, v); - cmd.tag(4).button(x, y, h, v, GET_TEXT_F(MSG_BUTTON_MENU)); + ui.bounds(POLY(menu_btn), x, y, w, h); + cmd.tag(4).button(x, y, w, h, GET_TEXT_F(MSG_BUTTON_MENU)); - ui.bounds(POLY(pause_btn), x, y, h, v); - cmd.tag(sdOrHostPaused ? 6 : 5).enabled(sdOrHostPrinting).button(x, y, h, v, sdOrHostPaused ? GET_TEXT_F(MSG_BUTTON_RESUME) : GET_TEXT_F(MSG_BUTTON_PAUSE)); + ui.bounds(POLY(media_btn), x, y, w, h); + cmd.tag(5).enabled(can_select).button(x, y, w, h, GET_TEXT_F(MSG_BUTTON_MEDIA)); - ui.bounds(POLY(stop_btn), x, y, h, v); - cmd.tag(7).enabled(sdOrHostPrinting).button(x, y, h, v, GET_TEXT_F(MSG_BUTTON_STOP)); + ui.bounds(POLY(print_btn), x, y, w, h); + cmd.tag(6).colors(action_btn).enabled(can_print).button(x, y, w, h, GET_TEXT_F(MSG_BUTTON_PRINT)); - ui.bounds(POLY(extrude_btn), x, y, h, v); - cmd.tag(8).button(x, y, h, v, GET_TEXT_F(MSG_EXTRUDE)); + ui.bounds(POLY(pause_btn), x, y, w, h); + cmd.tag(sdOrHostPaused ? 8 : 7).enabled(sdOrHostPrinting).button(x, y, w, h, sdOrHostPaused ? GET_TEXT_F(MSG_BUTTON_RESUME) : GET_TEXT_F(MSG_BUTTON_PAUSE)); - ui.bounds(POLY(print_btn), x, y, h, v); - cmd.tag(9).colors(action_btn).enabled(can_print).button(x, y, h, v, GET_TEXT_F(MSG_BUTTON_PRINT)); + ui.bounds(POLY(stop_btn), x, y, w, h); + cmd.tag(9).enabled(sdOrHostPrinting).button(x, y, w, h, GET_TEXT_F(MSG_BUTTON_STOP)); +} + +void StatusScreen::draw_file(draw_mode_t what) { + int16_t x, y, w, h; + + CommandProcessor cmd; + PolyUI ui(cmd, what); + + ui.bounds(POLY(file_name), x, y, w, h); + + if (what & BACKGROUND) { + cmd.tag(5) + .cmd(COLOR_RGB(bg_text_enabled)) + .cmd (BITMAP_SOURCE(File_Icon_Info)) + .cmd (BITMAP_LAYOUT(File_Icon_Info)) + .cmd (BITMAP_SIZE (File_Icon_Info)) + .icon(ICON_POS(x, y, w, h), File_Icon_Info, icon_scale); + } + + if (what & FOREGROUND) { + cmd.cmd(COLOR_RGB(bg_text_enabled)); + + if(!isMediaInserted()) + draw_text_with_ellipsis(cmd, TEXT_POS(x, y, w, h), F("No media present"), OPT_CENTERY, font_small); + else if(isFileSelected()) { + FileList list; + draw_text_with_ellipsis(cmd, TEXT_POS(x, y, w, h), list.filename(), OPT_CENTERY, font_small); + } else + draw_text_with_ellipsis(cmd, TEXT_POS(x, y, w, h), F("No file selected"), OPT_CENTERY, font_small); + } +} + +bool StatusScreen::isFileSelected() { + if(!isMediaInserted()) return false; + FileList list; + if(list.isDir()) return false; + const char *filename = list.filename(); + if(filename[0] == '\0') return false; + return true; } void StatusScreen::onRedraw(draw_mode_t what) { @@ -220,8 +298,9 @@ void StatusScreen::onRedraw(draw_mode_t what) { .tag(0); } + draw_file(what); + draw_time(what); draw_progress(what); - draw_syringe(what); draw_temperature(what); draw_buttons(what); } @@ -233,11 +312,12 @@ bool StatusScreen::onTouchStart(uint8_t) { bool StatusScreen::onTouchEnd(uint8_t tag) { switch (tag) { - case 1: SpinnerDialogBox::enqueueAndWait(F("G28 O\nG27")); break; - case 2: GOTO_SCREEN(LoadChocolateScreen); break; + case 1: GOTO_SCREEN(LoadChocolateScreen); break; case 3: GOTO_SCREEN(PreheatMenu); break; case 4: GOTO_SCREEN(MainMenu); break; - case 5: + case 5: GOTO_SCREEN(FilesScreen); break; + case 6: GOTO_SCREEN(ConfirmStartPrintDialogBox); break; + case 7: sound.play(twinkle, PLAY_ASYNCHRONOUS); if (ExtUI::isPrintingFromMedia()) ExtUI::pausePrint(); @@ -246,7 +326,7 @@ bool StatusScreen::onTouchEnd(uint8_t tag) { #endif GOTO_SCREEN(StatusScreen); break; - case 6: + case 8: sound.play(twinkle, PLAY_ASYNCHRONOUS); if (ExtUI::isPrintingFromMedia()) ExtUI::resumePrint(); @@ -255,12 +335,12 @@ bool StatusScreen::onTouchEnd(uint8_t tag) { #endif GOTO_SCREEN(StatusScreen); break; - case 7: + case 9: GOTO_SCREEN(ConfirmAbortPrintDialogBox); current_screen.forget(); PUSH_SCREEN(StatusScreen); break; - case 9: GOTO_SCREEN(FilesScreen); break; + case 10: GOTO_SCREEN(TemperatureScreen); break; default: return false; } @@ -271,7 +351,7 @@ bool StatusScreen::onTouchEnd(uint8_t tag) { } bool StatusScreen::onTouchHeld(uint8_t tag) { - if (tag == 8 && !ExtUI::isMoving()) { + if (tag == 2 && !ExtUI::isMoving()) { LoadChocolateScreen::setManualFeedrateAndIncrement(1, increment); UI_INCREMENT(AxisPosition_mm, E0); current_screen.onRefresh(); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/status_screen.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/status_screen.h index 08fb6f26d4..05f99e953d 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/status_screen.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/status_screen.h @@ -28,17 +28,19 @@ class StatusScreen : public BaseScreen, public CachedScreen { private: + static void _format_time(char *outstr, uint32_t time); + static float increment; static bool jog_xy; static bool fine_motion; + static void draw_time(draw_mode_t what); static void draw_progress(draw_mode_t what); static void draw_temperature(draw_mode_t what); - static void draw_syringe(draw_mode_t what); - static void draw_arrows(draw_mode_t what); - static void draw_overlay_icons(draw_mode_t what); - static void draw_fine_motion(draw_mode_t what); static void draw_buttons(draw_mode_t what); + static void draw_file(draw_mode_t what); + + static bool isFileSelected(); public: static void loadBitmaps(); static void unlockMotors(); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/max_velocity_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/max_velocity_screen.cpp index e7fc23ab48..666a7542cc 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/max_velocity_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/max_velocity_screen.cpp @@ -34,7 +34,7 @@ void MaxVelocityScreen::onRedraw(draw_mode_t what) { widgets_t w(what); w.precision(0); w.units(GET_TEXT_F(MSG_UNITS_MM_S)); - w.heading( GET_TEXT_F(MSG_MAX_SPEED)); + w.heading( GET_TEXT_F(MSG_MAX_SPEED_NO_UNITS)); w.color(x_axis) .adjuster( 2, GET_TEXT_F(MSG_VMAX_X), getAxisMaxFeedrate_mm_s(X) ); w.color(y_axis) .adjuster( 4, GET_TEXT_F(MSG_VMAX_Y), getAxisMaxFeedrate_mm_s(Y) ); w.color(z_axis) .adjuster( 6, GET_TEXT_F(MSG_VMAX_Z), getAxisMaxFeedrate_mm_s(Z) ); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h index 5dbde8a5c3..05e625842a 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h @@ -146,6 +146,7 @@ namespace Language_en { LSTR MSG_PROBE_BED = u8"Probe Mesh"; LSTR MSG_PRINT_TEST = u8"Print Test (PLA)"; LSTR MSG_MOVE_Z_TO_TOP = u8"Raise Z to Top"; + LSTR MSG_MAX_SPEED_NO_UNITS = u8"Max Speed"; #if ENABLED(TOUCH_UI_LULZBOT_BIO) LSTR MSG_MOVE_TO_HOME = u8"Move to Home"; @@ -163,8 +164,9 @@ namespace Language_en { LSTR MSG_CHOCOLATE = u8"Chocolate"; LSTR MSG_UNLOAD_CARTRIDGE = u8"Unload Cartridge"; LSTR MSG_LOAD_UNLOAD = u8"Load/Unload"; - LSTR MSG_FULL_LOAD = u8"Full Load"; - LSTR MSG_FULL_UNLOAD = u8"Full Unload"; + LSTR MSG_START_STOP = u8"Start/Stop"; + LSTR MSG_LOAD = u8"Load"; + LSTR MSG_UNLOAD = u8"Unload"; LSTR MSG_PREHEAT_CHOCOLATE = u8"Preheat Chocolate"; LSTR MSG_PREHEAT_FINISHED = u8"Preheat finished"; LSTR MSG_PREHEAT = u8"Preheat"; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/screen_data.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/screen_data.h index 5d715572fa..48a0c1a964 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/screen_data.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/screen_data.h @@ -64,6 +64,7 @@ union screen_data_t { DECL_DATA_IF_INCLUDED(FTDI_ALERT_DIALOG_BOX) DECL_DATA_IF_INCLUDED(COCOA_PREHEAT_SCREEN) DECL_DATA_IF_INCLUDED(COCOA_LOAD_CHOCOLATE_SCREEN) + DECL_DATA_IF_INCLUDED(COCOA_FILES_SCREEN) }; extern screen_data_t screen_data; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/screens.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/screens.cpp index ec627e313b..ed210369c4 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/screens.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/screens.cpp @@ -116,6 +116,8 @@ SCREEN_TABLE { DECL_SCREEN_IF_INCLUDED(COCOA_LEVELING_MENU) DECL_SCREEN_IF_INCLUDED(COCOA_MOVE_XYZ_SCREEN) DECL_SCREEN_IF_INCLUDED(COCOA_MOVE_E_SCREEN) + DECL_SCREEN_IF_INCLUDED(COCOA_CONFIRM_START_PRINT) + DECL_SCREEN_IF_INCLUDED(COCOA_FILES_SCREEN) }; SCREEN_TABLE_POST diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/marlin_bootscreen_landscape.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/marlin_bootscreen_landscape.h index 1231d31dc3..4e706a645a 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/marlin_bootscreen_landscape.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/marlin_bootscreen_landscape.h @@ -1,4 +1,3 @@ - /**************************************************************************** * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/marlin_bootscreen_portrait.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/marlin_bootscreen_portrait.h index c6065af7f7..ce04239213 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/marlin_bootscreen_portrait.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/marlin_bootscreen_portrait.h @@ -1,4 +1,3 @@ - /**************************************************************************** * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * From 49911c8f5d7740071e53d5a38f102ca1b1474dfa Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 2 Mar 2023 06:06:30 +0000 Subject: [PATCH 074/659] [cron] Bump distribution date (2023-03-02) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 0a78854bd8..23eacec0a0 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-01" +//#define STRING_DISTRIBUTION_DATE "2023-03-02" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 047acad5cf..f99e206846 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-01" + #define STRING_DISTRIBUTION_DATE "2023-03-02" #endif /** From 593567b4404a73ad1d933a47811ab7a7faae6025 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 3 Mar 2023 13:42:46 -0600 Subject: [PATCH 075/659] =?UTF-8?q?=F0=9F=93=9D=20Fix=20a=20comment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_LCD.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index bddc0554f5..4e9285e6c1 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -936,7 +936,7 @@ /** * Number of Primary Linear Axes (e.g., XYZ) - * X, XY, or XYZ axes. Excluding duplicate axes (X2, Y2. Z2. Z3, Z4) + * X, XY, or XYZ axes. Excluding duplicate axes (X2, Y2, Z2, Z3, Z4) */ #if NUM_AXES >= 3 #define PRIMARY_LINEAR_AXES 3 From 13eab74fb8097f9604e5089f9cd2f30183d11f26 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 3 Mar 2023 14:22:21 -0600 Subject: [PATCH 076/659] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Stepper=20options?= =?UTF-8?q?=20followup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25422 --- Marlin/Configuration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 7503fd82da..a83c5822ef 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1688,7 +1688,7 @@ // @section extruder -#define DISABLE_E false // Disable the extruder when not stepping +//#define DISABLE_E // Disable the extruder when not stepping #define DISABLE_INACTIVE_EXTRUDER // Keep only the active extruder enabled // @section motion From 59f30d384cf94202a3bd28ff1b5c1379841f8695 Mon Sep 17 00:00:00 2001 From: jamespearson04 Date: Fri, 3 Mar 2023 20:26:38 +0000 Subject: [PATCH 077/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20UBL=20'G29=20J'=20?= =?UTF-8?q?mesh=20tilt=20(#25453)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix regression from #24214 --- Marlin/src/feature/bedlevel/ubl/ubl.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/feature/bedlevel/ubl/ubl.h b/Marlin/src/feature/bedlevel/ubl/ubl.h index ae69e3cd92..05a937c985 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl.h +++ b/Marlin/src/feature/bedlevel/ubl/ubl.h @@ -264,9 +264,9 @@ public: return UBL_Z_RAISE_WHEN_OFF_MESH; #endif - const uint8_t mx = _MIN(cx, (GRID_MAX_POINTS_X) - 2) + 1, my = _MIN(cy, (GRID_MAX_POINTS_Y) - 2) + 1, - x0 = get_mesh_x(cx), x1 = get_mesh_x(cx + 1); - const float z1 = calc_z0(rx0, x0, z_values[cx][cy], x1, z_values[mx][cy]), + const uint8_t mx = _MIN(cx, (GRID_MAX_POINTS_X) - 2) + 1, my = _MIN(cy, (GRID_MAX_POINTS_Y) - 2) + 1; + const float x0 = get_mesh_x(cx), x1 = get_mesh_x(cx + 1), + z1 = calc_z0(rx0, x0, z_values[cx][cy], x1, z_values[mx][cy]), z2 = calc_z0(rx0, x0, z_values[cx][my], x1, z_values[mx][my]); float z0 = calc_z0(ry0, get_mesh_y(cy), z1, get_mesh_y(cy + 1), z2); From 3c492793e00c000cf8e56b7853ea45931e0351c4 Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Fri, 3 Mar 2023 21:27:15 +0100 Subject: [PATCH 078/659] =?UTF-8?q?=F0=9F=8C=90=20Update=20Italian=20langu?= =?UTF-8?q?age=20(#25454)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/language/language_it.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index 0caf950aa5..ad6668112f 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -577,6 +577,8 @@ namespace Language_it { LSTR MSG_TOUCHMI_SAVE = _UxGT("Memorizzare"); LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Estendi TouchMI"); LSTR MSG_MANUAL_DEPLOY = _UxGT("Estendi Sonda-Z"); + LSTR MSG_MANUAL_PENUP = _UxGT("Penna su"); + LSTR MSG_MANUAL_PENDOWN = _UxGT("Penna giù"); LSTR MSG_BLTOUCH_STOW = _UxGT("Ritrai BLTouch"); LSTR MSG_MANUAL_STOW = _UxGT("Ritrai Sonda-Z"); LSTR MSG_HOME_FIRST = _UxGT("Home %s prima"); From 8b74df00958062022c7cd8155be3d854876baf24 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sat, 4 Mar 2023 09:32:04 +1300 Subject: [PATCH 079/659] =?UTF-8?q?=F0=9F=94=A8=20Fix=20'step'=20type=20in?= =?UTF-8?q?=20createTemperatureLookupMarlin.py=20(#25455)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scripts/createTemperatureLookupMarlin.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/buildroot/share/scripts/createTemperatureLookupMarlin.py b/buildroot/share/scripts/createTemperatureLookupMarlin.py index 02981f1015..5902e91a87 100755 --- a/buildroot/share/scripts/createTemperatureLookupMarlin.py +++ b/buildroot/share/scripts/createTemperatureLookupMarlin.py @@ -50,7 +50,7 @@ class Thermistor: if c < 0: print("//////////////////////////////////////////////////////////////////////////////////////") - print("// WARNING: negative coefficient 'c'! Something may be wrong with the measurements! //") + print("// WARNING: Negative coefficient 'c'! Something may be wrong with the measurements! //") print("//////////////////////////////////////////////////////////////////////////////////////") c = -c self.c1 = a # Steinhart-Hart coefficients @@ -93,8 +93,8 @@ def main(argv): r2 = 1641.9 # resistance at middle temperature (1.6 KOhm) t3 = 250 # high temperature in Kelvin (250 degC) r3 = 226.15 # resistance at high temperature (226.15 Ohm) - rp = 4700; # pull-up resistor (4.7 kOhm) - num_temps = 36; # number of entries for look-up table + rp = 4700 # pull-up resistor (4.7 kOhm) + num_temps = 36 # number of entries for look-up table try: opts, args = getopt.getopt(argv, "h", ["help", "rp=", "t1=", "t2=", "t3=", "num-temps="]) @@ -125,13 +125,13 @@ def main(argv): num_temps = int(arg) t = Thermistor(rp, t1, r1, t2, r2, t3, r3) - increment = int((ARES-1)/(num_temps-1)); - step = (TMIN-TMAX) / (num_temps-1) - low_bound = t.temp(ARES-1); - up_bound = t.temp(1); + increment = int((ARES - 1) / (num_temps - 1)) + step = int((TMIN - TMAX) / (num_temps - 1)) + low_bound = t.temp(ARES - 1) + up_bound = t.temp(1) min_temp = int(TMIN if TMIN > low_bound else low_bound) max_temp = int(TMAX if TMAX < up_bound else up_bound) - temps = list(range(max_temp, TMIN+step, step)); + temps = list(range(max_temp, TMIN + step, step)) print("// Thermistor lookup table for Marlin") print("// ./createTemperatureLookupMarlin.py --rp=%s --t1=%s:%s --t2=%s:%s --t3=%s:%s --num-temps=%s" % (rp, t1, r1, t2, r2, t3, r3, num_temps)) From c1ced60db0f095b943010a3f3354a43a023bec04 Mon Sep 17 00:00:00 2001 From: tombrazier <68918209+tombrazier@users.noreply.github.com> Date: Fri, 3 Mar 2023 20:37:10 +0000 Subject: [PATCH 080/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20ISR=5FSHAPING=5FLO?= =?UTF-8?q?OP=5FCYCLES=20(#25335)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 0706451e90..dcb9babde7 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -220,7 +220,7 @@ #define ISR_LOOP_CYCLES(R) ((ISR_LOOP_BASE_CYCLES + MIN_ISR_LOOP_CYCLES + MIN_STEPPER_PULSE_CYCLES) * (R - 1) + _MAX(MIN_ISR_LOOP_CYCLES, MIN_STEPPER_PULSE_CYCLES)) // Model input shaping as an extra loop call -#define ISR_SHAPING_LOOP_CYCLES(R) ((TERN0(HAS_SHAPING, ISR_LOOP_BASE_CYCLES) + TERN0(INPUT_SHAPING_X, ISR_X_STEPPER_CYCLES) + TERN0(INPUT_SHAPING_Y, ISR_Y_STEPPER_CYCLES)) * (R) + (MIN_ISR_LOOP_CYCLES) * (R - 1)) +#define ISR_SHAPING_LOOP_CYCLES(R) TERN0(HAS_SHAPING, (R) * ((ISR_LOOP_BASE_CYCLES) + TERN0(INPUT_SHAPING_X, ISR_X_STEPPER_CYCLES) + TERN0(INPUT_SHAPING_Y, ISR_Y_STEPPER_CYCLES))) // If linear advance is enabled, then it is handled separately #if ENABLED(LIN_ADVANCE) From f359f8818a4b7009d904d687349b63b84350a896 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 4 Mar 2023 00:28:15 +0000 Subject: [PATCH 081/659] [cron] Bump distribution date (2023-03-04) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 23eacec0a0..462d7595be 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-02" +//#define STRING_DISTRIBUTION_DATE "2023-03-04" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index f99e206846..dc0ea11f2d 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-02" + #define STRING_DISTRIBUTION_DATE "2023-03-04" #endif /** From e977232735abd759678e8665759dbc214df88202 Mon Sep 17 00:00:00 2001 From: EvilGremlin <22657714+EvilGremlin@users.noreply.github.com> Date: Sat, 4 Mar 2023 05:43:20 +0300 Subject: [PATCH 082/659] =?UTF-8?q?=E2=9C=A8=20Switching=20extruder/nozzle?= =?UTF-8?q?=20without=20servo=20(e.g.,=20Dondolo)=20(#24553)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Anson Liu --- Marlin/Configuration.h | 11 ++++- Marlin/src/MarlinCore.cpp | 10 ++-- Marlin/src/inc/Conditionals_LCD.h | 17 +++++-- Marlin/src/inc/Conditionals_adv.h | 40 ++++++++-------- Marlin/src/inc/SanityCheck.h | 61 ++++++++++++++++++------- Marlin/src/lcd/menu/menu_motion.cpp | 4 +- Marlin/src/module/planner.cpp | 2 +- Marlin/src/module/stepper/indirection.h | 2 +- Marlin/src/module/temperature.h | 2 +- Marlin/src/module/tool_change.cpp | 58 +++++++++++++++++------ Marlin/src/pins/sensitive_pins.h | 4 +- 11 files changed, 145 insertions(+), 66 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index a83c5822ef..54a895712d 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -270,7 +270,13 @@ #endif #endif -// A dual-nozzle that uses a servomotor to raise/lower one (or both) of the nozzles +// Switch extruders by bumping the toolhead. Requires EVENT_GCODE_TOOLCHANGE_#. +//#define MECHANICAL_SWITCHING_EXTRUDER + +/** + * A dual-nozzle that uses a servomotor to raise/lower one (or both) of the nozzles. + * Can be combined with SWITCHING_EXTRUDER. + */ //#define SWITCHING_NOZZLE #if ENABLED(SWITCHING_NOZZLE) #define SWITCHING_NOZZLE_SERVO_NR 0 @@ -279,6 +285,9 @@ #define SWITCHING_NOZZLE_SERVO_DWELL 2500 // Dwell time to wait for servo to make physical move #endif +// Switch nozzles by bumping the toolhead. Requires EVENT_GCODE_TOOLCHANGE_#. +//#define MECHANICAL_SWITCHING_NOZZLE + /** * Two separate X-carriages with extruders that connect to a moving part * via a solenoid docking mechanism. Requires SOL1_PIN and SOL2_PIN. diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 3b704e4f65..ef6bf6aad5 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -669,7 +669,7 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) { && ELAPSED(ms, gcode.previous_move_ms + SEC_TO_MS(EXTRUDER_RUNOUT_SECONDS)) && !planner.has_blocks_queued() ) { - #if ENABLED(SWITCHING_EXTRUDER) + #if HAS_SWITCHING_EXTRUDER bool oldstatus; switch (active_extruder) { default: oldstatus = stepper.AXIS_IS_ENABLED(E_AXIS, 0); stepper.ENABLE_EXTRUDER(0); break; @@ -683,7 +683,7 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) { #endif // E_STEPPERS > 2 #endif // E_STEPPERS > 1 } - #else // !SWITCHING_EXTRUDER + #else // !HAS_SWITCHING_EXTRUDER bool oldstatus; switch (active_extruder) { default: @@ -699,7 +699,7 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) { planner.set_e_position_mm(olde); planner.synchronize(); - #if ENABLED(SWITCHING_EXTRUDER) + #if HAS_SWITCHING_EXTRUDER switch (active_extruder) { default: if (oldstatus) stepper.ENABLE_EXTRUDER(0); else stepper.DISABLE_EXTRUDER(0); break; #if E_STEPPERS > 1 @@ -709,12 +709,12 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) { #endif // E_STEPPERS > 2 #endif // E_STEPPERS > 1 } - #else // !SWITCHING_EXTRUDER + #else // !HAS_SWITCHING_EXTRUDER switch (active_extruder) { #define _CASE_RESTORE(N) case N: if (oldstatus) stepper.ENABLE_EXTRUDER(N); else stepper.DISABLE_EXTRUDER(N); break; REPEAT(E_STEPPERS, _CASE_RESTORE); } - #endif // !SWITCHING_EXTRUDER + #endif // !HAS_SWITCHING_EXTRUDER gcode.reset_stepper_timeout(ms); } diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 4e9285e6c1..0031e17eea 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -613,7 +613,9 @@ #undef TEMP_SENSOR_7 #undef SINGLENOZZLE #undef SWITCHING_EXTRUDER + #undef MECHANICAL_SWITCHING_EXTRUDER #undef SWITCHING_NOZZLE + #undef MECHANICAL_SWITCHING_NOZZLE #undef MIXING_EXTRUDER #undef HOTEND_IDLE_TIMEOUT #undef DISABLE_E @@ -629,12 +631,19 @@ #define E_TERN_(N) TERN_(HAS_MULTI_EXTRUDER, N) #define E_TERN0(N) TERN0(HAS_MULTI_EXTRUDER, N) +#if EITHER(SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_EXTRUDER) + #define HAS_SWITCHING_EXTRUDER 1 +#endif +#if EITHER(SWITCHING_NOZZLE, MECHANICAL_SWITCHING_NOZZLE) + #define HAS_SWITCHING_NOZZLE 1 +#endif + #if ENABLED(E_DUAL_STEPPER_DRIVERS) // E0/E1 steppers act in tandem as E0 #define E_STEPPERS 2 #define E_MANUAL 1 -#elif ENABLED(SWITCHING_EXTRUDER) // One stepper for every two EXTRUDERS +#elif HAS_SWITCHING_EXTRUDER // One stepper for every two EXTRUDERS #if EXTRUDERS > 4 #define E_STEPPERS 3 @@ -643,7 +652,7 @@ #else #define E_STEPPERS 1 #endif - #if DISABLED(SWITCHING_NOZZLE) + #if !HAS_SWITCHING_NOZZLE #define HOTENDS E_STEPPERS #endif @@ -668,7 +677,7 @@ #endif // No inactive extruders with SWITCHING_NOZZLE or Průša MMU1 -#if ENABLED(SWITCHING_NOZZLE) || HAS_PRUSA_MMU1 +#if HAS_SWITCHING_NOZZLE || HAS_PRUSA_MMU1 #undef DISABLE_INACTIVE_EXTRUDER #endif @@ -1064,7 +1073,7 @@ #endif // Switching extruder has its own servo? -#if ENABLED(SWITCHING_EXTRUDER) && (DISABLED(SWITCHING_NOZZLE) || SWITCHING_EXTRUDER_SERVO_NR != SWITCHING_NOZZLE_SERVO_NR) +#if ENABLED(SWITCHING_EXTRUDER) && (!HAS_SWITCHING_NOZZLE || SWITCHING_EXTRUDER_SERVO_NR != SWITCHING_NOZZLE_SERVO_NR) #define DO_SWITCH_EXTRUDER 1 #endif diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index ff2e54e393..5b303e919f 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -30,26 +30,26 @@ #define AXIS_RELATIVE_MODES {} #endif -#ifdef SWITCHING_NOZZLE_E1_SERVO_NR +#if defined(SWITCHING_NOZZLE_E1_SERVO_NR) && DISABLED(MECHANICAL_SWITCHING_NOZZLE) #define SWITCHING_NOZZLE_TWO_SERVOS 1 #endif // Determine NUM_SERVOS if none was supplied #ifndef NUM_SERVOS #define NUM_SERVOS 0 - #if ANY(HAS_Z_SERVO_PROBE, CHAMBER_VENT, SWITCHING_TOOLHEAD, SWITCHING_EXTRUDER, SWITCHING_NOZZLE, SPINDLE_SERVO) - #if NUM_SERVOS <= Z_PROBE_SERVO_NR - #undef NUM_SERVOS - #define NUM_SERVOS (Z_PROBE_SERVO_NR + 1) - #endif - #if NUM_SERVOS <= CHAMBER_VENT_SERVO_NR - #undef NUM_SERVOS - #define NUM_SERVOS (CHAMBER_VENT_SERVO_NR + 1) - #endif - #if NUM_SERVOS <= SWITCHING_TOOLHEAD_SERVO_NR - #undef NUM_SERVOS - #define NUM_SERVOS (SWITCHING_TOOLHEAD_SERVO_NR + 1) - #endif + #if HAS_Z_SERVO_PROBE && NUM_SERVOS <= Z_PROBE_SERVO_NR + #undef NUM_SERVOS + #define NUM_SERVOS (Z_PROBE_SERVO_NR + 1) + #endif + #if ENABLED(CHAMBER_VENT) && NUM_SERVOS <= CHAMBER_VENT_SERVO_NR + #undef NUM_SERVOS + #define NUM_SERVOS (CHAMBER_VENT_SERVO_NR + 1) + #endif + #if ENABLED(SWITCHING_TOOLHEAD) && NUM_SERVOS <= SWITCHING_TOOLHEAD_SERVO_NR + #undef NUM_SERVOS + #define NUM_SERVOS (SWITCHING_TOOLHEAD_SERVO_NR + 1) + #endif + #if ENABLED(SWITCHING_NOZZLE) #if NUM_SERVOS <= SWITCHING_NOZZLE_SERVO_NR #undef NUM_SERVOS #define NUM_SERVOS (SWITCHING_NOZZLE_SERVO_NR + 1) @@ -58,6 +58,8 @@ #undef NUM_SERVOS #define NUM_SERVOS (SWITCHING_NOZZLE_E1_SERVO_NR + 1) #endif + #endif + #if ENABLED(SWITCHING_EXTRUDER) #if NUM_SERVOS <= SWITCHING_EXTRUDER_SERVO_NR #undef NUM_SERVOS #define NUM_SERVOS (SWITCHING_EXTRUDER_SERVO_NR + 1) @@ -66,12 +68,12 @@ #undef NUM_SERVOS #define NUM_SERVOS (SWITCHING_EXTRUDER_E23_SERVO_NR + 1) #endif - #if NUM_SERVOS <= SPINDLE_SERVO_NR - #undef NUM_SERVOS - #define NUM_SERVOS (SPINDLE_SERVO_NR + 1) - #endif #endif -#endif + #if ENABLED(SPINDLE_SERVO) && NUM_SERVOS <= SPINDLE_SERVO_NR + #undef NUM_SERVOS + #define NUM_SERVOS (SPINDLE_SERVO_NR + 1) + #endif +#endif // !defined(NUM_SERVOS) // Convenience override for a BLTouch alone #if ENABLED(BLTOUCH) && NUM_SERVOS == 1 diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index d5e91932da..54ffcaf0ca 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1269,20 +1269,34 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS /** * A Dual Nozzle carriage with switching servo */ -#if ENABLED(SWITCHING_NOZZLE) - #if ENABLED(DUAL_X_CARRIAGE) +#if BOTH(SWITCHING_NOZZLE, MECHANICAL_SWITCHING_NOZZLE) + #error "Enable only one of SWITCHING_NOZZLE or MECHANICAL_SWITCHING_NOZZLE." +#elif ENABLED(MECHANICAL_SWITCHING_NOZZLE) + #if EXTRUDERS != 2 + #error "MECHANICAL_SWITCHING_NOZZLE requires exactly 2 EXTRUDERS." + #elif ENABLED(DUAL_X_CARRIAGE) + #error "MECHANICAL_SWITCHING_NOZZLE and DUAL_X_CARRIAGE are incompatible." + #elif ENABLED(SINGLENOZZLE) + #error "MECHANICAL_SWITCHING_NOZZLE and SINGLENOZZLE are incompatible." + #elif HAS_PRUSA_MMU2 + #error "MECHANICAL_SWITCHING_NOZZLE and PRUSA_MMU2(S) are incompatible." + #elif !defined(EVENT_GCODE_TOOLCHANGE_T0) + #error "MECHANICAL_SWITCHING_NOZZLE requires EVENT_GCODE_TOOLCHANGE_T0." + #elif !defined(EVENT_GCODE_TOOLCHANGE_T1) + #error "MECHANICAL_SWITCHING_NOZZLE requires EVENT_GCODE_TOOLCHANGE_T1." + #endif +#elif ENABLED(SWITCHING_NOZZLE) + #if EXTRUDERS != 2 + #error "SWITCHING_NOZZLE requires exactly 2 EXTRUDERS." + #elif ENABLED(DUAL_X_CARRIAGE) #error "SWITCHING_NOZZLE and DUAL_X_CARRIAGE are incompatible." #elif ENABLED(SINGLENOZZLE) #error "SWITCHING_NOZZLE and SINGLENOZZLE are incompatible." #elif HAS_PRUSA_MMU2 #error "SWITCHING_NOZZLE and PRUSA_MMU2(S) are incompatible." - #elif EXTRUDERS != 2 - #error "SWITCHING_NOZZLE requires exactly 2 EXTRUDERS." #elif NUM_SERVOS < 1 #error "SWITCHING_NOZZLE requires NUM_SERVOS >= 1." - #endif - - #ifndef SWITCHING_NOZZLE_SERVO_NR + #elif !defined(SWITCHING_NOZZLE_SERVO_NR) #error "SWITCHING_NOZZLE requires SWITCHING_NOZZLE_SERVO_NR." #elif SWITCHING_NOZZLE_SERVO_NR == 0 && !PIN_EXISTS(SERVO0) #error "SERVO0_PIN must be defined for your SWITCHING_NOZZLE." @@ -1293,7 +1307,6 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #elif SWITCHING_NOZZLE_SERVO_NR == 3 && !PIN_EXISTS(SERVO3) #error "SERVO3_PIN must be defined for your SWITCHING_NOZZLE." #endif - #ifdef SWITCHING_NOZZLE_E1_SERVO_NR #if SWITCHING_NOZZLE_E1_SERVO_NR == SWITCHING_NOZZLE_SERVO_NR #error "SWITCHING_NOZZLE_E1_SERVO_NR must be different from SWITCHING_NOZZLE_SERVO_NR." @@ -1307,14 +1320,26 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "SERVO3_PIN must be defined for your SWITCHING_NOZZLE." #endif #endif -#endif +#endif // SWITCHING_NOZZLE /** * Single Stepper Dual Extruder with switching servo */ -#if ENABLED(SWITCHING_EXTRUDER) +#if BOTH(SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_EXTRUDER) + #error "Enable only one of SWITCHING_EXTRUDER or MECHANICAL_SWITCHING_EXTRUDER." +#elif ENABLED(MECHANICAL_SWITCHING_EXTRUDER) + #if EXTRUDERS < 2 + #error "MECHANICAL_SWITCHING_EXTRUDER requires EXTRUDERS >= 2." + #elif !defined(EVENT_GCODE_TOOLCHANGE_T0) + #error "MECHANICAL_SWITCHING_EXTRUDER requires EVENT_GCODE_TOOLCHANGE_T0." + #elif !defined(EVENT_GCODE_TOOLCHANGE_T1) + #error "MECHANICAL_SWITCHING_EXTRUDER requires EVENT_GCODE_TOOLCHANGE_T1." + #endif +#elif ENABLED(SWITCHING_EXTRUDER) #if NUM_SERVOS < 1 #error "SWITCHING_EXTRUDER requires NUM_SERVOS >= 1." + #elif !defined(SWITCHING_EXTRUDER_SERVO_NR) + #error "SWITCHING_EXTRUDER requires SWITCHING_EXTRUDER_SERVO_NR." #elif SWITCHING_EXTRUDER_SERVO_NR == 0 && !PIN_EXISTS(SERVO0) #error "SERVO0_PIN must be defined for your SWITCHING_EXTRUDER." #elif SWITCHING_EXTRUDER_SERVO_NR == 1 && !PIN_EXISTS(SERVO1) @@ -1338,8 +1363,10 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #elif SWITCHING_EXTRUDER_E23_SERVO_NR == SWITCHING_EXTRUDER_SERVO_NR #error "SWITCHING_EXTRUDER_E23_SERVO_NR should be a different extruder from SWITCHING_EXTRUDER_SERVO_NR." #endif + #elif EXTRUDERS < 2 + #error "SWITCHING_EXTRUDER requires EXTRUDERS >= 2." #endif -#endif +#endif // SWITCHING_EXTRUDER /** * Mixing Extruder requirements @@ -1351,8 +1378,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "You must set MIXING_STEPPERS >= 2 for a mixing extruder." #elif ENABLED(FILAMENT_WIDTH_SENSOR) #error "MIXING_EXTRUDER is incompatible with FILAMENT_WIDTH_SENSOR. Comment out this line to use it anyway." - #elif ENABLED(SWITCHING_EXTRUDER) - #error "Please select either MIXING_EXTRUDER or SWITCHING_EXTRUDER, not both." + #elif HAS_SWITCHING_EXTRUDER + #error "MIXING_EXTRUDER is incompatible with (MECHANICAL_)SWITCHING_EXTRUDER." #elif ENABLED(SINGLENOZZLE) #error "MIXING_EXTRUDER is incompatible with SINGLENOZZLE." #elif ENABLED(DISABLE_INACTIVE_EXTRUDER) @@ -1370,8 +1397,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "E_DUAL_STEPPER_DRIVERS can only be used with EXTRUDERS set to 1." #elif ENABLED(MIXING_EXTRUDER) #error "E_DUAL_STEPPER_DRIVERS is incompatible with MIXING_EXTRUDER." - #elif ENABLED(SWITCHING_EXTRUDER) - #error "E_DUAL_STEPPER_DRIVERS is incompatible with SWITCHING_EXTRUDER." + #elif HAS_SWITCHING_EXTRUDER + #error "E_DUAL_STEPPER_DRIVERS is incompatible with (MECHANICAL_)SWITCHING_EXTRUDER." #endif #endif @@ -2733,8 +2760,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "MULTI_NOZZLE_DUPLICATION is incompatible with DUAL_X_CARRIAGE." #elif ENABLED(MIXING_EXTRUDER) #error "MULTI_NOZZLE_DUPLICATION is incompatible with MIXING_EXTRUDER." - #elif ENABLED(SWITCHING_EXTRUDER) - #error "MULTI_NOZZLE_DUPLICATION is incompatible with SWITCHING_EXTRUDER." + #elif HAS_SWITCHING_EXTRUDER + #error "MULTI_NOZZLE_DUPLICATION is incompatible with (MECHANICAL_)SWITCHING_EXTRUDER." #elif HOTENDS < 2 #error "MULTI_NOZZLE_DUPLICATION requires 2 or more hotends." #endif diff --git a/Marlin/src/lcd/menu/menu_motion.cpp b/Marlin/src/lcd/menu/menu_motion.cpp index 6ce75d59ae..215497c4c9 100644 --- a/Marlin/src/lcd/menu/menu_motion.cpp +++ b/Marlin/src/lcd/menu/menu_motion.cpp @@ -232,7 +232,7 @@ void menu_move() { else GCODES_ITEM(MSG_AUTO_HOME, FPSTR(G28_STR)); - #if ANY(SWITCHING_EXTRUDER, SWITCHING_NOZZLE, MAGNETIC_SWITCHING_TOOLHEAD) + #if ANY(HAS_SWITCHING_EXTRUDER, HAS_SWITCHING_NOZZLE, MAGNETIC_SWITCHING_TOOLHEAD) #if EXTRUDERS >= 4 switch (active_extruder) { @@ -265,7 +265,7 @@ void menu_move() { #define SUBMENU_MOVE_E(N) SUBMENU_N(N, MSG_MOVE_EN, []{ _menu_move_distance(E_AXIS, []{ lcd_move_e(N); }, N); }); - #if EITHER(SWITCHING_EXTRUDER, SWITCHING_NOZZLE) + #if HAS_SWITCHING_EXTRUDER || HAS_SWITCHING_NOZZLE // ...and the non-switching #if E_MANUAL == 7 || E_MANUAL == 5 || E_MANUAL == 3 diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 583e3686a0..9fb775e03f 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -2283,7 +2283,7 @@ bool Planner::_populate_block( if (g_uc_extruder_last_move[i]) g_uc_extruder_last_move[i]--; // Switching Extruder uses one E stepper motor per two nozzles - #define E_STEPPER_INDEX(E) TERN(SWITCHING_EXTRUDER, (E) / 2, E) + #define E_STEPPER_INDEX(E) TERN(HAS_SWITCHING_EXTRUDER, (E) / 2, E) // Enable all (i.e., both) E steppers for IDEX-style duplication, but only active E steppers for multi-nozzle (i.e., single wide X carriage) duplication #define _IS_DUPE(N) TERN0(HAS_DUPLICATION_MODE, (extruder_duplication_enabled && TERN1(MULTI_NOZZLE_DUPLICATION, TEST(duplication_e_mask, N)))) diff --git a/Marlin/src/module/stepper/indirection.h b/Marlin/src/module/stepper/indirection.h index e9a9aa7de9..81a1377cef 100644 --- a/Marlin/src/module/stepper/indirection.h +++ b/Marlin/src/module/stepper/indirection.h @@ -454,7 +454,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset /** * Extruder indirection for the single E axis */ -#if ENABLED(SWITCHING_EXTRUDER) // One stepper driver per two extruders, reversed on odd index +#if HAS_SWITCHING_EXTRUDER // One stepper driver per two extruders, reversed on odd index #if EXTRUDERS > 7 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else if (E < 6) { E2_STEP_WRITE(V); } else { E3_STEP_WRITE(V); } }while(0) #define NORM_E_DIR(E) do{ switch (E) { \ diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index f86ec90d19..b7f388cbb6 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -748,7 +748,7 @@ class Temperature { static raw_adc_t mintemp_raw_COOLER, maxtemp_raw_COOLER; #endif - #if HAS_TEMP_BOARD && ENABLED(THERMAL_PROTECTION_BOARD) + #if BOTH(HAS_TEMP_BOARD, THERMAL_PROTECTION_BOARD) static raw_adc_t mintemp_raw_BOARD, maxtemp_raw_BOARD; #endif diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index 0defced87e..9955a0f1b0 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -1173,7 +1173,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { #endif // Z raise before retraction - #if ENABLED(TOOLCHANGE_ZRAISE_BEFORE_RETRACT) && DISABLED(SWITCHING_NOZZLE) + #if ENABLED(TOOLCHANGE_ZRAISE_BEFORE_RETRACT) && !HAS_SWITCHING_NOZZLE if (can_move_away && TERN1(TOOLCHANGE_PARK, toolchange_settings.enable_park)) { // Do a small lift to avoid the workpiece in the move back (below) current_position.z += toolchange_settings.z_raise; @@ -1217,7 +1217,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { #endif #endif - #if DISABLED(TOOLCHANGE_ZRAISE_BEFORE_RETRACT) && DISABLED(SWITCHING_NOZZLE) + #if NONE(TOOLCHANGE_ZRAISE_BEFORE_RETRACT, HAS_SWITCHING_NOZZLE) if (can_move_away && TERN1(TOOLCHANGE_PARK, toolchange_settings.enable_park)) { // Do a small lift to avoid the workpiece in the move back (below) current_position.z += toolchange_settings.z_raise; @@ -1227,7 +1227,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { #endif // Toolchange park - #if ENABLED(TOOLCHANGE_PARK) && DISABLED(SWITCHING_NOZZLE) + #if ENABLED(TOOLCHANGE_PARK) && !HAS_SWITCHING_NOZZLE if (can_move_away && toolchange_settings.enable_park) { IF_DISABLED(TOOLCHANGE_PARK_Y_ONLY, current_position.x = toolchange_settings.change_point.x); IF_DISABLED(TOOLCHANGE_PARK_X_ONLY, current_position.y = toolchange_settings.change_point.y); @@ -1279,6 +1279,11 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { fast_line_to_current(Z_AXIS); } move_nozzle_servo(new_tool); + #elif EITHER(MECHANICAL_SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_NOZZLE) + if (!no_move) { + current_position.z = _MIN(current_position.z + toolchange_settings.z_raise, _MIN(TERN(HAS_SOFTWARE_ENDSTOPS, soft_endstop.max.z, Z_MAX_POS), Z_MAX_POS)); + fast_line_to_current(Z_AXIS); + } #endif IF_DISABLED(DUAL_X_CARRIAGE, active_extruder = new_tool); // Set the new active extruder @@ -1343,15 +1348,19 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { if (toolchange_settings.enable_park) do_blocking_move_to_xy_z(destination, destination.z, MMM_TO_MMS(TOOLCHANGE_PARK_XY_FEEDRATE)); #else do_blocking_move_to_xy(destination, planner.settings.max_feedrate_mm_s[X_AXIS]); - do_blocking_move_to_z(destination.z, planner.settings.max_feedrate_mm_s[Z_AXIS]); - SECONDARY_AXIS_CODE( - do_blocking_move_to_i(destination.i, planner.settings.max_feedrate_mm_s[I_AXIS]), - do_blocking_move_to_j(destination.j, planner.settings.max_feedrate_mm_s[J_AXIS]), - do_blocking_move_to_k(destination.k, planner.settings.max_feedrate_mm_s[K_AXIS]), - do_blocking_move_to_u(destination.u, planner.settings.max_feedrate_mm_s[U_AXIS]), - do_blocking_move_to_v(destination.v, planner.settings.max_feedrate_mm_s[V_AXIS]), - do_blocking_move_to_w(destination.w, planner.settings.max_feedrate_mm_s[W_AXIS]) - ); + + // If using MECHANICAL_SWITCHING extruder/nozzle, set HOTEND_OFFSET in Z axis after running EVENT_GCODE_TOOLCHANGE below. + #if NONE(MECHANICAL_SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_NOZZLE) + do_blocking_move_to_z(destination.z, planner.settings.max_feedrate_mm_s[Z_AXIS]); + SECONDARY_AXIS_CODE( + do_blocking_move_to_i(destination.i, planner.settings.max_feedrate_mm_s[I_AXIS]), + do_blocking_move_to_j(destination.j, planner.settings.max_feedrate_mm_s[J_AXIS]), + do_blocking_move_to_k(destination.k, planner.settings.max_feedrate_mm_s[K_AXIS]), + do_blocking_move_to_u(destination.u, planner.settings.max_feedrate_mm_s[U_AXIS]), + do_blocking_move_to_v(destination.v, planner.settings.max_feedrate_mm_s[V_AXIS]), + do_blocking_move_to_w(destination.w, planner.settings.max_feedrate_mm_s[W_AXIS]) + ); + #endif #endif #endif @@ -1373,7 +1382,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { TERN_(DUAL_X_CARRIAGE, idex_set_parked(false)); } - #if ENABLED(SWITCHING_NOZZLE) + #if HAS_SWITCHING_NOZZLE // Move back down. (Including when the new tool is higher.) if (!should_move) do_blocking_move_to_z(destination.z, planner.settings.max_feedrate_mm_s[Z_AXIS]); @@ -1460,6 +1469,29 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { } #endif + // If using MECHANICAL_SWITCHING extruder/nozzle, set HOTEND_OFFSET in Z axis after running EVENT_GCODE_TOOLCHANGE + // so that nozzle does not lower below print surface if new hotend Z offset is higher than old hotend Z offset. + #if EITHER(MECHANICAL_SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_NOZZLE) + #if HAS_HOTEND_OFFSET + xyz_pos_t diff = hotend_offset[new_tool] - hotend_offset[old_tool]; + TERN_(DUAL_X_CARRIAGE, diff.x = 0); + #else + constexpr xyz_pos_t diff{0}; + #endif + + if (!no_move) { + // Move to new hotend Z offset and reverse Z_RAISE + do_blocking_move_to_z( + _MIN( + _MAX((destination.z - diff.z) - toolchange_settings.z_raise, + _MAX(TERN(HAS_SOFTWARE_ENDSTOPS, soft_endstop.min.z, Z_MIN_POS), Z_MIN_POS) + ), + _MIN(TERN(HAS_SOFTWARE_ENDSTOPS, soft_endstop.max.z, Z_MAX_POS), Z_MAX_POS)), + planner.settings.max_feedrate_mm_s[Z_AXIS] + ); + } + #endif + #ifdef EVENT_GCODE_AFTER_TOOLCHANGE if (TERN1(DUAL_X_CARRIAGE, dual_x_carriage_mode == DXC_AUTO_PARK_MODE)) gcode.process_subcommands_now(F(EVENT_GCODE_AFTER_TOOLCHANGE)); diff --git a/Marlin/src/pins/sensitive_pins.h b/Marlin/src/pins/sensitive_pins.h index 061e27faf4..288bcc904e 100644 --- a/Marlin/src/pins/sensitive_pins.h +++ b/Marlin/src/pins/sensitive_pins.h @@ -419,7 +419,7 @@ // Mixing stepper, Switching stepper, or regular stepper #define E_NEEDED(N) (ENABLED(MIXING_EXTRUDER) && MIXING_STEPPERS > N) \ - || (ENABLED(SWITCHING_EXTRUDER) && E_STEPPERS > N) \ + || (HAS_SWITCHING_EXTRUDER && E_STEPPERS > N) \ || (NONE(SWITCHING_EXTRUDER, MIXING_EXTRUDER) && EXTRUDERS > N) #define _E0_CS @@ -632,7 +632,7 @@ #define _E0_PINS E0_STEP_PIN, E0_DIR_PIN, E0_ENABLE_PIN, _E0_CS _E0_MS1 _E0_MS2 _E0_MS3 #endif -#if ENABLED(SWITCHING_EXTRUDER) +#if HAS_SWITCHING_EXTRUDER // Tools 0 and 1 use E0 #if EXTRUDERS > 2 // Tools 2 and 3 use E1 #undef _E1_PINS From f0c8c9182090f8929ec4766683ec2d6902d4bc00 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 3 Mar 2023 20:44:24 -0600 Subject: [PATCH 083/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Wid?= =?UTF-8?q?th/Magnitude-based=20types=20(#25458)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/AVR/MarlinSerial.h | 7 +- Marlin/src/HAL/DUE/MarlinSerial.h | 7 +- Marlin/src/core/types.h | 25 ++-- Marlin/src/core/utility.h | 12 +- Marlin/src/feature/direct_stepping.h | 7 +- Marlin/src/feature/leds/neopixel.h | 2 +- Marlin/src/feature/max7219.cpp | 2 +- Marlin/src/feature/spindle_laser_types.h | 2 +- Marlin/src/lcd/dogm/status_screen_DOGM.cpp | 5 +- .../lcd/extui/dgus/mks/DGUSScreenHandler.cpp | 111 +++++++++--------- Marlin/src/module/endstops.h | 2 +- Marlin/src/module/motion.h | 4 +- Marlin/src/module/planner.cpp | 14 +-- Marlin/src/module/planner.h | 4 +- Marlin/src/module/stepper.h | 8 +- 15 files changed, 102 insertions(+), 110 deletions(-) diff --git a/Marlin/src/HAL/AVR/MarlinSerial.h b/Marlin/src/HAL/AVR/MarlinSerial.h index 7eb76000d6..7dd208e54e 100644 --- a/Marlin/src/HAL/AVR/MarlinSerial.h +++ b/Marlin/src/HAL/AVR/MarlinSerial.h @@ -34,6 +34,7 @@ #include #include "../../inc/MarlinConfigPre.h" +#include "../../core/types.h" #include "../../core/serial_hook.h" #ifndef SERIAL_PORT @@ -138,10 +139,6 @@ #define BYTE 0 - // Templated type selector - template struct TypeSelector { typedef T type;} ; - template struct TypeSelector { typedef F type; }; - template class MarlinSerial { protected: @@ -164,7 +161,7 @@ static constexpr B_U2Xx B_U2X = 0; // Base size of type on buffer size - typedef typename TypeSelector<(Cfg::RX_SIZE>256), uint16_t, uint8_t>::type ring_buffer_pos_t; + typedef uvalue_t(Cfg::RX_SIZE - 1) ring_buffer_pos_t; struct ring_buffer_r { volatile ring_buffer_pos_t head, tail; diff --git a/Marlin/src/HAL/DUE/MarlinSerial.h b/Marlin/src/HAL/DUE/MarlinSerial.h index 5a61bffee0..b80ae21823 100644 --- a/Marlin/src/HAL/DUE/MarlinSerial.h +++ b/Marlin/src/HAL/DUE/MarlinSerial.h @@ -30,6 +30,7 @@ #include #include "../../inc/MarlinConfigPre.h" +#include "../../core/types.h" #include "../../core/serial_hook.h" // Define constants and variables for buffering incoming serial data. We're @@ -52,10 +53,6 @@ // #error "TX_BUFFER_SIZE must be 0, a power of 2 greater than 1, and no greater than 256." //#endif -// Templated type selector -template struct TypeSelector { typedef T type;} ; -template struct TypeSelector { typedef F type; }; - // Templated structure wrapper template struct StructWrapper { constexpr StructWrapper(int) {} @@ -76,7 +73,7 @@ protected: static constexpr int HWUART_IRQ_ID = IRQ_IDS[Cfg::PORT]; // Base size of type on buffer size - typedef typename TypeSelector<(Cfg::RX_SIZE>256), uint16_t, uint8_t>::type ring_buffer_pos_t; + typedef uvalue_t(Cfg::RX_SIZE - 1) ring_buffer_pos_t; struct ring_buffer_r { volatile ring_buffer_pos_t head, tail; diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index bae345b496..4e3d7f0782 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -31,10 +31,8 @@ // // typename IF<(MYOPT==12), int, float>::type myvar; // -template -struct IF { typedef R type; }; -template -struct IF { typedef L type; }; +template struct IF { typedef R type; }; +template struct IF { typedef L type; }; #define ALL_AXIS_NAMES X, X2, Y, Y2, Z, Z2, Z3, Z4, I, J, K, U, V, W, E0, E1, E2, E3, E4, E5, E6, E7 @@ -86,20 +84,27 @@ struct IF { typedef L type; }; #define AXIS_COLLISION(L) (AXIS4_NAME == L || AXIS5_NAME == L || AXIS6_NAME == L || AXIS7_NAME == L || AXIS8_NAME == L || AXIS9_NAME == L) +// Define types based on largest bit width stored value required +#define bits_t(W) typename IF<((W)> 16), uint32_t, typename IF<((W)> 8), uint16_t, uint8_t>::type>::type +#define uvalue_t(V) typename IF<((V)>65535), uint32_t, typename IF<((V)>255), uint16_t, uint8_t>::type>::type +#define value_t(V) typename IF<((V)>32767), int32_t, typename IF<((V)>127), int16_t, int8_t>::type>::type + // General Flags for some number of states template struct Flags { - typedef typename IF<(N>8), uint16_t, uint8_t>::type bits_t; + typedef value_t(N) flagbits_t; typedef struct { bool b0:1, b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b7:1; } N8; typedef struct { bool b0:1, b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b7:1, b8:1, b9:1, b10:1, b11:1, b12:1, b13:1, b14:1, b15:1; } N16; + typedef struct { bool b0:1, b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b7:1, b8:1, b9:1, b10:1, b11:1, b12:1, b13:1, b14:1, b15:1, + b16:1, b17:1, b18:1, b19:1, b20:1, b21:1, b22:1, b23:1, b24:1, b25:1, b26:1, b27:1, b28:1, b29:1, b30:1, b31:1; } N32; union { - bits_t b; - typename IF<(N>8), N16, N8>::type flag; + flagbits_t b; + typename IF<(N>16), N32, typename IF<(N>8), N16, N8>::type>::type flag; }; void reset() { b = 0; } void set(const int n, const bool onoff) { onoff ? set(n) : clear(n); } - void set(const int n) { b |= (bits_t)_BV(n); } - void clear(const int n) { b &= ~(bits_t)_BV(n); } + void set(const int n) { b |= (flagbits_t)_BV(n); } + void clear(const int n) { b &= ~(flagbits_t)_BV(n); } bool test(const int n) const { return TEST(b, n); } bool operator[](const int n) { return test(n); } bool operator[](const int n) const { return test(n); } @@ -182,7 +187,7 @@ enum AxisEnum : uint8_t { , ALL_AXES_ENUM = 0xFE, NO_AXIS_ENUM = 0xFF }; -typedef IF<(NUM_AXIS_ENUMS > 8), uint16_t, uint8_t>::type axis_bits_t; +typedef bits_t(NUM_AXIS_ENUMS) axis_bits_t; // // Loop over axes diff --git a/Marlin/src/core/utility.h b/Marlin/src/core/utility.h index 2731e62b67..c4bb3c2a8a 100644 --- a/Marlin/src/core/utility.h +++ b/Marlin/src/core/utility.h @@ -38,12 +38,12 @@ void safe_delay(millis_t ms); // Delay ensuring that temperatures are // 16x16 bit arrays template struct FlagBits { - typename IF<(W>8), uint16_t, uint8_t>::type bits[H]; - void fill() { memset(bits, 0xFF, sizeof(bits)); } - void reset() { memset(bits, 0x00, sizeof(bits)); } - void unmark(const uint8_t x, const uint8_t y) { CBI(bits[y], x); } - void mark(const uint8_t x, const uint8_t y) { SBI(bits[y], x); } - bool marked(const uint8_t x, const uint8_t y) { return TEST(bits[y], x); } + bits_t(W) flags[H]; + void fill() { memset(flags, 0xFF, sizeof(flags)); } + void reset() { memset(flags, 0x00, sizeof(flags)); } + void unmark(const uint8_t x, const uint8_t y) { CBI(flags[y], x); } + void mark(const uint8_t x, const uint8_t y) { SBI(flags[y], x); } + bool marked(const uint8_t x, const uint8_t y) { return TEST(flags[y], x); } inline void unmark(const xy_int8_t &xy) { unmark(xy.x, xy.y); } inline void mark(const xy_int8_t &xy) { mark(xy.x, xy.y); } inline bool marked(const xy_int8_t &xy) { return marked(xy.x, xy.y); } diff --git a/Marlin/src/feature/direct_stepping.h b/Marlin/src/feature/direct_stepping.h index 962310281e..b8a803f811 100644 --- a/Marlin/src/feature/direct_stepping.h +++ b/Marlin/src/feature/direct_stepping.h @@ -80,9 +80,6 @@ namespace DirectStepping { static void set_page_state(const page_idx_t page_idx, const PageState page_state); }; - template struct TypeSelector { typedef T type;} ; - template struct TypeSelector { typedef F type; }; - template struct config_t { static constexpr char CONTROL_CHAR = '!'; @@ -98,8 +95,8 @@ namespace DirectStepping { static constexpr int TOTAL_STEPS = SEGMENT_STEPS * SEGMENTS; static constexpr int PAGE_SIZE = (AXIS_COUNT * BITS_SEGMENT * SEGMENTS) / 8; - typedef typename TypeSelector<(PAGE_SIZE>256), uint16_t, uint8_t>::type write_byte_idx_t; - typedef typename TypeSelector<(PAGE_COUNT>256), uint16_t, uint8_t>::type page_idx_t; + typedef uvalue_t(PAGE_SIZE - 1) write_byte_idx_t; + typedef uvalue_t(PAGE_COUNT - 1) page_idx_t; }; template diff --git a/Marlin/src/feature/leds/neopixel.h b/Marlin/src/feature/leds/neopixel.h index 7c8d018013..3801ded6aa 100644 --- a/Marlin/src/feature/leds/neopixel.h +++ b/Marlin/src/feature/leds/neopixel.h @@ -66,7 +66,7 @@ // Types // ------------------------ -typedef IF<(TERN0(NEOPIXEL_LED, NEOPIXEL_PIXELS > 127)), int16_t, int8_t>::type pixel_index_t; +typedef value_t(TERN0(NEOPIXEL_LED, NEOPIXEL_PIXELS)) pixel_index_t; // ------------------------ // Classes diff --git a/Marlin/src/feature/max7219.cpp b/Marlin/src/feature/max7219.cpp index 2fdfcba32d..83d161d1fe 100644 --- a/Marlin/src/feature/max7219.cpp +++ b/Marlin/src/feature/max7219.cpp @@ -471,7 +471,7 @@ void Max7219::register_setup() { constexpr millis_t pattern_delay = 4; int8_t spiralx, spiraly, spiral_dir; - IF<(MAX7219_LEDS > 255), uint16_t, uint8_t>::type spiral_count; + uvalue_t(MAX7219_LEDS) spiral_count; void Max7219::test_pattern() { constexpr int8_t way[][2] = { { 1, 0 }, { 0, 1 }, { -1, 0 }, { 0, -1 } }; diff --git a/Marlin/src/feature/spindle_laser_types.h b/Marlin/src/feature/spindle_laser_types.h index 2f36a68a1a..4e5e4d06f6 100644 --- a/Marlin/src/feature/spindle_laser_types.h +++ b/Marlin/src/feature/spindle_laser_types.h @@ -57,7 +57,7 @@ #endif #endif -typedef IF<(SPEED_POWER_MAX > 255), uint16_t, uint8_t>::type cutter_cpower_t; +typedef uvalue_t(SPEED_POWER_MAX) cutter_cpower_t; #if CUTTER_UNIT_IS(RPM) && SPEED_POWER_MAX > 255 typedef uint16_t cutter_power_t; diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp index 091c531abb..22e71251ff 100644 --- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp +++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp @@ -96,9 +96,10 @@ DRAWBIT_HOTEND, DRAWBIT_BED = HOTENDS, DRAWBIT_CHAMBER, - DRAWBIT_CUTTER + DRAWBIT_CUTTER, + DRAWBIT_COUNT }; - IF<(DRAWBIT_CUTTER > 7), uint16_t, uint8_t>::type draw_bits; + bits_t(DRAWBIT_COUNT) draw_bits; #endif #if ANIM_HOTEND diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp index 3cf0c32648..2dd4d0d19e 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp @@ -368,8 +368,8 @@ void DGUSScreenHandlerMKS::EEPROM_CTRL(DGUS_VP_Variable &var, void *val_ptr) { } void DGUSScreenHandlerMKS::Z_offset_select(DGUS_VP_Variable &var, void *val_ptr) { - const uint16_t z_value = BE16_P(val_ptr); - switch (z_value) { + const uint16_t z = BE16_P(val_ptr); + switch (z) { case 0: Z_distance = 0.01; break; case 1: Z_distance = 0.1; break; case 2: Z_distance = 0.5; break; @@ -477,7 +477,7 @@ void DGUSScreenHandlerMKS::MeshLevelDistanceConfig(DGUS_VP_Variable &var, void * void DGUSScreenHandlerMKS::MeshLevel(DGUS_VP_Variable &var, void *val_ptr) { #if ENABLED(MESH_BED_LEVELING) - const uint16_t mesh_value = BE16_P(val_ptr); + const uint16_t mesh_val = BE16_P(val_ptr); // static uint8_t a_first_level = 1; char cmd_buf[30]; float offset = mesh_adj_distance; @@ -485,7 +485,7 @@ void DGUSScreenHandlerMKS::MeshLevel(DGUS_VP_Variable &var, void *val_ptr) { if (!queue.ring_buffer.empty()) return; - switch (mesh_value) { + switch (mesh_val) { case 0: offset = mesh_adj_distance; integer = offset; // get int @@ -575,20 +575,19 @@ void DGUSScreenHandlerMKS::SD_FileBack(DGUS_VP_Variable&, void*) { } void DGUSScreenHandlerMKS::LCD_BLK_Adjust(DGUS_VP_Variable &var, void *val_ptr) { - - const uint16_t lcd_value = BE16_P(val_ptr); - lcd_default_light = constrain(lcd_value, 10, 100); + const uint16_t lcd_val = BE16_P(val_ptr); + lcd_default_light = constrain(lcd_val, 10, 100); const uint16_t lcd_data[2] = { lcd_default_light, lcd_default_light }; dgusdisplay.WriteVariable(0x0082, &lcd_data, 5, true); } void DGUSScreenHandlerMKS::ManualAssistLeveling(DGUS_VP_Variable &var, void *val_ptr) { - const int16_t point_value = BE16_P(val_ptr); + const int16_t point_val = BE16_P(val_ptr); // Insist on leveling first time at this screen static bool first_level_flag = false; - if (!first_level_flag || point_value == 0x0001) { + if (!first_level_flag || point_val == 0x0001) { queue.enqueue_now_P(G28_STR); first_level_flag = true; } @@ -601,10 +600,10 @@ void DGUSScreenHandlerMKS::ManualAssistLeveling(DGUS_VP_Variable &var, void *val queue.enqueue_one_now(buf_level); }; - if (WITHIN(point_value, 0x0001, 0x0005)) + if (WITHIN(point_val, 0x0001, 0x0005)) queue.enqueue_now(F("G1Z10")); - switch (point_value) { + switch (point_val) { case 0x0001: enqueue_corner_move(X_MIN_POS + ABS(mks_corner_offsets[0].x), Y_MIN_POS + ABS(mks_corner_offsets[0].y), level_speed); @@ -628,7 +627,7 @@ void DGUSScreenHandlerMKS::ManualAssistLeveling(DGUS_VP_Variable &var, void *val break; } - if (WITHIN(point_value, 0x0002, 0x0005)) { + if (WITHIN(point_val, 0x0002, 0x0005)) { //queue.enqueue_now(F("G28Z")); queue.enqueue_now(F("G1Z-10")); } @@ -638,14 +637,14 @@ void DGUSScreenHandlerMKS::ManualAssistLeveling(DGUS_VP_Variable &var, void *val #define mks_max(a, b) ((a) > (b)) ? (a) : (b) void DGUSScreenHandlerMKS::TMC_ChangeConfig(DGUS_VP_Variable &var, void *val_ptr) { #if EITHER(HAS_TRINAMIC_CONFIG, HAS_STEALTHCHOP) - const uint16_t tmc_value = BE16_P(val_ptr); + const uint16_t tmc_val = BE16_P(val_ptr); #endif switch (var.VP) { case VP_TMC_X_STEP: #if USE_SENSORLESS #if X_HAS_STEALTHCHOP - stepperX.homing_threshold(mks_min(tmc_value, 255)); + stepperX.homing_threshold(mks_min(tmc_val, 255)); settings.save(); //tmc_step.x = stepperX.homing_threshold(); #endif @@ -654,7 +653,7 @@ void DGUSScreenHandlerMKS::TMC_ChangeConfig(DGUS_VP_Variable &var, void *val_ptr case VP_TMC_Y_STEP: #if USE_SENSORLESS #if Y_HAS_STEALTHCHOP - stepperY.homing_threshold(mks_min(tmc_value, 255)); + stepperY.homing_threshold(mks_min(tmc_val, 255)); settings.save(); //tmc_step.y = stepperY.homing_threshold(); #endif @@ -663,7 +662,7 @@ void DGUSScreenHandlerMKS::TMC_ChangeConfig(DGUS_VP_Variable &var, void *val_ptr case VP_TMC_Z_STEP: #if USE_SENSORLESS #if Z_HAS_STEALTHCHOP - stepperZ.homing_threshold(mks_min(tmc_value, 255)); + stepperZ.homing_threshold(mks_min(tmc_val, 255)); settings.save(); //tmc_step.z = stepperZ.homing_threshold(); #endif @@ -671,49 +670,49 @@ void DGUSScreenHandlerMKS::TMC_ChangeConfig(DGUS_VP_Variable &var, void *val_ptr break; case VP_TMC_X_Current: #if AXIS_IS_TMC(X) - stepperX.rms_current(tmc_value); + stepperX.rms_current(tmc_val); settings.save(); #endif break; case VP_TMC_X1_Current: #if AXIS_IS_TMC(X2) - stepperX2.rms_current(tmc_value); + stepperX2.rms_current(tmc_val); settings.save(); #endif break; case VP_TMC_Y_Current: #if AXIS_IS_TMC(Y) - stepperY.rms_current(tmc_value); + stepperY.rms_current(tmc_val); settings.save(); #endif break; case VP_TMC_Y1_Current: #if AXIS_IS_TMC(X2) - stepperY2.rms_current(tmc_value); + stepperY2.rms_current(tmc_val); settings.save(); #endif break; case VP_TMC_Z_Current: #if AXIS_IS_TMC(Z) - stepperZ.rms_current(tmc_value); + stepperZ.rms_current(tmc_val); settings.save(); #endif break; case VP_TMC_Z1_Current: #if AXIS_IS_TMC(Z2) - stepperZ2.rms_current(tmc_value); + stepperZ2.rms_current(tmc_val); settings.save(); #endif break; case VP_TMC_E0_Current: #if AXIS_IS_TMC(E0) - stepperE0.rms_current(tmc_value); + stepperE0.rms_current(tmc_val); settings.save(); #endif break; case VP_TMC_E1_Current: #if AXIS_IS_TMC(E1) - stepperE1.rms_current(tmc_value); + stepperE1.rms_current(tmc_val); settings.save(); #endif break; @@ -849,29 +848,29 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } void DGUSScreenHandlerMKS::GetParkPos(DGUS_VP_Variable &var, void *val_ptr) { - const int16_t value_pos = BE16_P(val_ptr); + const int16_t pos = BE16_P(val_ptr); switch (var.VP) { - case VP_X_PARK_POS: mks_park_pos.x = value_pos; break; - case VP_Y_PARK_POS: mks_park_pos.y = value_pos; break; - case VP_Z_PARK_POS: mks_park_pos.z = value_pos; break; + case VP_X_PARK_POS: mks_park_pos.x = pos; break; + case VP_Y_PARK_POS: mks_park_pos.y = pos; break; + case VP_Z_PARK_POS: mks_park_pos.z = pos; break; default: break; } skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } void DGUSScreenHandlerMKS::HandleChangeLevelPoint(DGUS_VP_Variable &var, void *val_ptr) { - const int16_t value_raw = BE16_P(val_ptr); + const int16_t raw = BE16_P(val_ptr); - *(int16_t*)var.memadr = value_raw; + *(int16_t*)var.memadr = raw; settings.save(); skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } void DGUSScreenHandlerMKS::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr) { - const uint16_t value_raw = BE16_P(val_ptr); - const float value = (float)value_raw; + const uint16_t raw = BE16_P(val_ptr); + const float value = (float)raw; ExtUI::axis_t axis; switch (var.VP) { @@ -886,8 +885,8 @@ void DGUSScreenHandlerMKS::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *v } void DGUSScreenHandlerMKS::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr) { - const uint16_t value_raw = BE16_P(val_ptr); - const float value = (float)value_raw; + const uint16_t raw = BE16_P(val_ptr); + const float value = (float)raw; ExtUI::extruder_t extruder; switch (var.VP) { @@ -905,8 +904,8 @@ void DGUSScreenHandlerMKS::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, } void DGUSScreenHandlerMKS::HandleMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr) { - const uint16_t value_raw = BE16_P(val_ptr); - const float value = (float)value_raw; + const uint16_t raw = BE16_P(val_ptr); + const float value = (float)raw; ExtUI::axis_t axis; switch (var.VP) { @@ -921,8 +920,8 @@ void DGUSScreenHandlerMKS::HandleMaxSpeedChange(DGUS_VP_Variable &var, void *val } void DGUSScreenHandlerMKS::HandleExtruderMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr) { - const uint16_t value_raw = BE16_P(val_ptr); - const float value = (float)value_raw; + const uint16_t raw = BE16_P(val_ptr); + const float value = (float)raw; ExtUI::extruder_t extruder; switch (var.VP) { @@ -940,8 +939,8 @@ void DGUSScreenHandlerMKS::HandleExtruderMaxSpeedChange(DGUS_VP_Variable &var, v } void DGUSScreenHandlerMKS::HandleMaxAccChange(DGUS_VP_Variable &var, void *val_ptr) { - const uint16_t value_raw = BE16_P(val_ptr); - const float value = (float)value_raw; + const uint16_t raw = BE16_P(val_ptr); + const float value = (float)raw; ExtUI::axis_t axis; switch (var.VP) { @@ -956,8 +955,8 @@ void DGUSScreenHandlerMKS::HandleMaxAccChange(DGUS_VP_Variable &var, void *val_p } void DGUSScreenHandlerMKS::HandleExtruderAccChange(DGUS_VP_Variable &var, void *val_ptr) { - uint16_t value_raw = BE16_P(val_ptr); - float value = (float)value_raw; + uint16_t raw = BE16_P(val_ptr); + float value = (float)raw; ExtUI::extruder_t extruder; switch (var.VP) { default: return; @@ -974,33 +973,33 @@ void DGUSScreenHandlerMKS::HandleExtruderAccChange(DGUS_VP_Variable &var, void * } void DGUSScreenHandlerMKS::HandleTravelAccChange(DGUS_VP_Variable &var, void *val_ptr) { - uint16_t value_travel = BE16_P(val_ptr); - planner.settings.travel_acceleration = (float)value_travel; + uint16_t travel = BE16_P(val_ptr); + planner.settings.travel_acceleration = (float)travel; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } void DGUSScreenHandlerMKS::HandleFeedRateMinChange(DGUS_VP_Variable &var, void *val_ptr) { - uint16_t value_t = BE16_P(val_ptr); - planner.settings.min_feedrate_mm_s = (float)value_t; + uint16_t t = BE16_P(val_ptr); + planner.settings.min_feedrate_mm_s = (float)t; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } void DGUSScreenHandlerMKS::HandleMin_T_F(DGUS_VP_Variable &var, void *val_ptr) { - uint16_t value_t_f = BE16_P(val_ptr); - planner.settings.min_travel_feedrate_mm_s = (float)value_t_f; + uint16_t t_f = BE16_P(val_ptr); + planner.settings.min_travel_feedrate_mm_s = (float)t_f; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } void DGUSScreenHandlerMKS::HandleAccChange(DGUS_VP_Variable &var, void *val_ptr) { - uint16_t value_acc = BE16_P(val_ptr); - planner.settings.acceleration = (float)value_acc; + uint16_t acc = BE16_P(val_ptr); + planner.settings.acceleration = (float)acc; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } #if ENABLED(PREVENT_COLD_EXTRUSION) void DGUSScreenHandlerMKS::HandleGetExMinTemp(DGUS_VP_Variable &var, void *val_ptr) { - const uint16_t value_ex_min_temp = BE16_P(val_ptr); - thermalManager.extrude_min_temp = value_ex_min_temp; + const uint16_t ex_min_temp = BE16_P(val_ptr); + thermalManager.extrude_min_temp = ex_min_temp; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } #endif @@ -1080,8 +1079,8 @@ void DGUSScreenHandlerMKS::HandleAccChange(DGUS_VP_Variable &var, void *val_ptr) #endif // BABYSTEPPING void DGUSScreenHandlerMKS::GetManualFilament(DGUS_VP_Variable &var, void *val_ptr) { - const uint16_t value_len = BE16_P(val_ptr); - const float value = (float)value_len; + const uint16_t len = BE16_P(val_ptr); + const float value = (float)len; distanceFilament = value; @@ -1089,8 +1088,8 @@ void DGUSScreenHandlerMKS::GetManualFilament(DGUS_VP_Variable &var, void *val_pt } void DGUSScreenHandlerMKS::GetManualFilamentSpeed(DGUS_VP_Variable &var, void *val_ptr) { - const uint16_t value_len = BE16_P(val_ptr); - filamentSpeed_mm_s = value_len; + const uint16_t len = BE16_P(val_ptr); + filamentSpeed_mm_s = len; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } diff --git a/Marlin/src/module/endstops.h b/Marlin/src/module/endstops.h index 4d64455b21..36cd002c8f 100644 --- a/Marlin/src/module/endstops.h +++ b/Marlin/src/module/endstops.h @@ -115,7 +115,7 @@ enum EndstopEnum : char { class Endstops { public: - typedef IF<(NUM_ENDSTOP_STATES > 8), uint16_t, uint8_t>::type endstop_mask_t; + typedef bits_t(NUM_ENDSTOP_STATES) endstop_mask_t; #if ENABLED(X_DUAL_ENDSTOPS) static float x2_endstop_adj; diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index 2acc54ebc2..611d3a17bd 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -411,10 +411,10 @@ void restore_feedrate_and_scaling(); /** * Homing and Trusted Axes */ -typedef IF<(NUM_AXES > 8), uint16_t, uint8_t>::type main_axes_bits_t; +typedef bits_t(NUM_AXES) main_axes_bits_t; constexpr main_axes_bits_t main_axes_mask = _BV(NUM_AXES) - 1; -typedef IF<(NUM_AXES + EXTRUDERS > 8), uint16_t, uint8_t>::type e_axis_bits_t; +typedef bits_t(NUM_AXES + EXTRUDERS) e_axis_bits_t; constexpr e_axis_bits_t e_axis_mask = (_BV(EXTRUDERS) - 1) << NUM_AXES; void set_axis_is_at_home(const AxisEnum axis); diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 9fb775e03f..12e879af96 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -216,7 +216,7 @@ xyze_float_t Planner::previous_speed; float Planner::previous_nominal_speed; #if ENABLED(DISABLE_INACTIVE_EXTRUDER) - last_move_t Planner::g_uc_extruder_last_move[E_STEPPERS] = { 0 }; + last_move_t Planner::extruder_last_move[E_STEPPERS] = { 0 }; #endif #ifdef XY_FREQUENCY_LIMIT @@ -2280,7 +2280,7 @@ bool Planner::_populate_block( // Count down all steppers that were recently moved LOOP_L_N(i, E_STEPPERS) - if (g_uc_extruder_last_move[i]) g_uc_extruder_last_move[i]--; + if (extruder_last_move[i]) extruder_last_move[i]--; // Switching Extruder uses one E stepper motor per two nozzles #define E_STEPPER_INDEX(E) TERN(HAS_SWITCHING_EXTRUDER, (E) / 2, E) @@ -2289,12 +2289,12 @@ bool Planner::_populate_block( #define _IS_DUPE(N) TERN0(HAS_DUPLICATION_MODE, (extruder_duplication_enabled && TERN1(MULTI_NOZZLE_DUPLICATION, TEST(duplication_e_mask, N)))) #define ENABLE_ONE_E(N) do{ \ - if (N == E_STEPPER_INDEX(extruder) || _IS_DUPE(N)) { /* N is 'extruder', or N is duplicating */ \ - stepper.ENABLE_EXTRUDER(N); /* Enable the relevant E stepper... */ \ - g_uc_extruder_last_move[N] = (BLOCK_BUFFER_SIZE) * 2; /* ...and reset its counter */ \ + if (N == E_STEPPER_INDEX(extruder) || _IS_DUPE(N)) { /* N is 'extruder', or N is duplicating */ \ + stepper.ENABLE_EXTRUDER(N); /* Enable the relevant E stepper... */ \ + extruder_last_move[N] = (BLOCK_BUFFER_SIZE) * 2; /* ...and reset its counter */ \ } \ - else if (!g_uc_extruder_last_move[N]) /* Counter expired since last E stepper enable */ \ - stepper.DISABLE_EXTRUDER(N); /* Disable the E stepper */ \ + else if (!extruder_last_move[N]) /* Counter expired since last E stepper enable */ \ + stepper.DISABLE_EXTRUDER(N); /* Disable the E stepper */ \ }while(0); #else diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index b63fabb84d..9497912d2f 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -353,7 +353,7 @@ typedef struct { #endif #if ENABLED(DISABLE_INACTIVE_EXTRUDER) - typedef IF<(BLOCK_BUFFER_SIZE > 64), uint16_t, uint8_t>::type last_move_t; + typedef uvalue_t(BLOCK_BUFFER_SIZE * 2) last_move_t; #endif #if ENABLED(ARC_SUPPORT) @@ -535,7 +535,7 @@ class Planner { #if ENABLED(DISABLE_INACTIVE_EXTRUDER) // Counters to manage disabling inactive extruder steppers - static last_move_t g_uc_extruder_last_move[E_STEPPERS]; + static last_move_t extruder_last_move[E_STEPPERS]; #endif #if HAS_WIRED_LCD diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index dcb9babde7..05f609c9f3 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -263,11 +263,7 @@ #define MIN_STEP_ISR_FREQUENCY (MAX_STEP_ISR_FREQUENCY_1X / 2) #define ENABLE_COUNT (NUM_AXES + E_STEPPERS) -#if ENABLE_COUNT > 16 - typedef uint32_t ena_mask_t; -#else - typedef IF<(ENABLE_COUNT > 8), uint16_t, uint8_t>::type ena_mask_t; -#endif +typedef bits_t(ENABLE_COUNT) ena_mask_t; // Axis flags type, for enabled state or other simple state typedef struct { @@ -358,7 +354,7 @@ constexpr ena_mask_t enable_overlap[] = { constexpr uint16_t shaping_min_freq = SHAPING_MIN_FREQ, shaping_echoes = max_step_rate / shaping_min_freq / 2 + 3; - typedef IF::type shaping_time_t; + typedef hal_timer_t shaping_time_t; enum shaping_echo_t { ECHO_NONE = 0, ECHO_FWD = 1, ECHO_BWD = 2 }; struct shaping_echo_axis_t { TERN_(INPUT_SHAPING_X, shaping_echo_t x:2); From f3f7b1e7e337f9590b7805651969ae88b58a903f Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 5 Mar 2023 00:26:20 +0000 Subject: [PATCH 084/659] [cron] Bump distribution date (2023-03-05) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 462d7595be..09916dd851 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-04" +//#define STRING_DISTRIBUTION_DATE "2023-03-05" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index dc0ea11f2d..9d1c614d6f 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-04" + #define STRING_DISTRIBUTION_DATE "2023-03-05" #endif /** From dee4ef09f8763f320bba0e1c2f664f9764fd631d Mon Sep 17 00:00:00 2001 From: Hans-Christian Ebke Date: Sun, 5 Mar 2023 23:25:11 +0100 Subject: [PATCH 085/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20apply=5Fpower=20fo?= =?UTF-8?q?r=20SPINDLE=5FSERVO=20(#25465)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/spindle_laser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/feature/spindle_laser.cpp b/Marlin/src/feature/spindle_laser.cpp index e7898268e8..c0635c7220 100644 --- a/Marlin/src/feature/spindle_laser.cpp +++ b/Marlin/src/feature/spindle_laser.cpp @@ -141,7 +141,7 @@ void SpindleLaser::apply_power(const uint8_t opwr) { else ocr_off(); #elif ENABLED(SPINDLE_SERVO) - MOVE_SERVO(SPINDLE_SERVO_NR, power); + servo[SPINDLE_SERVO_NR].move(opwr); #else WRITE(SPINDLE_LASER_ENA_PIN, enabled() ? SPINDLE_LASER_ACTIVE_STATE : !SPINDLE_LASER_ACTIVE_STATE); isReadyForUI = true; From 33ed748004ccd3a538c3761839dc3634516baea3 Mon Sep 17 00:00:00 2001 From: alextrical <35117191+alextrical@users.noreply.github.com> Date: Sun, 5 Mar 2023 22:28:50 +0000 Subject: [PATCH 086/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Flash=20EEPROM=20f?= =?UTF-8?q?or=20STM32G0B1CB=20(#25469)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h | 2 +- .../MARLIN_BTT_EBB42_V1_1/variant_MARLIN_BTT_EBB42_V1_1.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h index cdd85a6d75..3de67ea8d5 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h @@ -44,7 +44,7 @@ #define FLASH_EEPROM_EMULATION #endif #define EEPROM_PAGE_SIZE (0x800UL) // 2K - #define EEPROM_START_ADDRESS (0x0801F800UL) + #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 1UL) #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE #endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_BTT_EBB42_V1_1/variant_MARLIN_BTT_EBB42_V1_1.h b/buildroot/share/PlatformIO/variants/MARLIN_BTT_EBB42_V1_1/variant_MARLIN_BTT_EBB42_V1_1.h index ff75bc1e48..9373e2fa3b 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_BTT_EBB42_V1_1/variant_MARLIN_BTT_EBB42_V1_1.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_BTT_EBB42_V1_1/variant_MARLIN_BTT_EBB42_V1_1.h @@ -155,6 +155,8 @@ #define SERIAL_UART_INSTANCE 4 #endif +#define FLASH_BANK_NUMBER FLASH_BANK_1 + // Default pin used for generic 'Serial' instance // Mandatory for Firmata #ifndef PIN_SERIAL_RX From c63577fd1dacaa232cfcd44a1e9ea1426cd8c0bc Mon Sep 17 00:00:00 2001 From: Abdullah YILMAZ Date: Mon, 6 Mar 2023 01:29:43 +0300 Subject: [PATCH 087/659] =?UTF-8?q?=F0=9F=8C=90=20Update=20Turkish=20langu?= =?UTF-8?q?age=20(#25447)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../language => kaynak/lcd/dil}/language_tr.h | 461 ++++++++++++++---- Marlin/src/lcd/language/language_en.h | 5 +- Marlin/src/lcd/language/language_fr.h | 7 +- Marlin/src/lcd/language/language_hu.h | 15 +- Marlin/src/lcd/language/language_pl.h | 8 - Marlin/src/lcd/language/language_ro.h | 8 - Marlin/src/lcd/language/language_ru.h | 15 +- Marlin/src/lcd/language/language_uk.h | 15 +- Marlin/src/lcd/language/language_vi.h | 7 +- Marlin/src/lcd/language/language_zh_CN.h | 15 +- Marlin/src/lcd/language/language_zh_TW.h | 15 +- 11 files changed, 393 insertions(+), 178 deletions(-) rename Marlin/{src/lcd/language => kaynak/lcd/dil}/language_tr.h (57%) diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/kaynak/lcd/dil/language_tr.h similarity index 57% rename from Marlin/src/lcd/language/language_tr.h rename to Marlin/kaynak/lcd/dil/language_tr.h index cb3c6a03ae..569b32b93d 100644 --- a/Marlin/src/lcd/language/language_tr.h +++ b/Marlin/kaynak/lcd/dil/language_tr.h @@ -26,10 +26,6 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html - * - * Bu çeviri dosyasındaki sorunlar ve düzeltmeler için iletişim; - * Contact for issues and corrections in this translation file; - * Yücel Temel - (info@elektromanyetix.com) - https://elektromanyetix.com/ */ #define DISPLAY_CHARSET_ISO10646_TR @@ -40,38 +36,67 @@ namespace Language_tr { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Turkish"); + // These strings should be translated LSTR WELCOME_MSG = MACHINE_NAME _UxGT(" hazır."); LSTR MSG_YES = _UxGT("EVET"); LSTR MSG_NO = _UxGT("HAYIR"); + LSTR MSG_HIGH = _UxGT("YÜKSEK"); + LSTR MSG_LOW = _UxGT("DÜŞÜK"); LSTR MSG_BACK = _UxGT("Geri"); + LSTR MSG_ERROR = _UxGT("Hata"); LSTR MSG_MEDIA_ABORTING = _UxGT("Durduruluyor..."); LSTR MSG_MEDIA_INSERTED = _UxGT("SD K. Yerleştirildi."); LSTR MSG_MEDIA_REMOVED = _UxGT("SD Kart Çıkarıldı."); LSTR MSG_MEDIA_WAITING = _UxGT("SD Kart Bekleniyor"); + LSTR MSG_MEDIA_INIT_FAIL = MEDIA_TYPE_EN _UxGT(" Başlatma Başarısız"); LSTR MSG_MEDIA_READ_ERROR = _UxGT("Kart Okuma Hatası"); LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB Çıkarıldı"); LSTR MSG_MEDIA_USB_FAILED = _UxGT("USB Başlat. Hatası"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("Enstops"); // Max length 8 characters + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Subcall Overflow"); + LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Yazılımsal Endstops"); LSTR MSG_MAIN = _UxGT("Ana"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Gelişmiş Ayarlar"); + LSTR MSG_TOOLBAR_SETUP = _UxGT("Araç Çubuğu Kurulumu"); + LSTR MSG_OPTION_DISABLED = _UxGT("Seçenek Devre Dışı"); LSTR MSG_CONFIGURATION = _UxGT("Yapılandırma"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Oto. Başlat"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Motorları Durdur"); LSTR MSG_DEBUG_MENU = _UxGT("Hata Ayıklama"); LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Durum Çubuğu Testi"); + LSTR MSG_HOMING = _UxGT("Sıfırlanıyor"); LSTR MSG_AUTO_HOME = _UxGT("Eksenleri Sıfırla"); + LSTR MSG_AUTO_HOME_A = _UxGT("@ Sıfırla"); LSTR MSG_AUTO_HOME_X = _UxGT("X Sıfırla"); LSTR MSG_AUTO_HOME_Y = _UxGT("Y Sıfırla"); LSTR MSG_AUTO_HOME_Z = _UxGT("Z Sıfırla"); + LSTR MSG_FILAMENT_SET = _UxGT("Filament Ayarları"); + LSTR MSG_FILAMENT_MAN = _UxGT("Filament Yönetimi"); + LSTR MSG_MANUAL_LEVELING = _UxGT("Manuel Seviyeleme"); + LSTR MSG_LEVBED_FL = _UxGT("Sol Ön"); + LSTR MSG_LEVBED_FR = _UxGT("Ön Sağ"); + LSTR MSG_LEVBED_C = _UxGT("Orta"); + LSTR MSG_LEVBED_BL = _UxGT("Arka Sol"); + LSTR MSG_LEVBED_BR = _UxGT("Arka Sağ"); + LSTR MSG_MANUAL_MESH = _UxGT("Manuel Mesh"); + LSTR MSG_AUTO_MESH = _UxGT("Oto Mesh Oluştur"); LSTR MSG_AUTO_Z_ALIGN = _UxGT("Oto. Z-Hizalama"); + LSTR MSG_ITERATION = _UxGT("G34 Yinelemesi: %i"); + LSTR MSG_DECREASING_ACCURACY = _UxGT("Doğruluk Düşüyor!"); + LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Doğruluk Sağlandı"); LSTR MSG_LEVEL_BED_HOMING = _UxGT("XYZ Sıfırlanıyor"); LSTR MSG_LEVEL_BED_WAITING = _UxGT("Başlatmak için tıkla"); LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Sonraki Nokta"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Hizalama Tamam!"); + LSTR MSG_LEVEL_BED_DONE = _UxGT("Seviyeleme Tamam!"); LSTR MSG_Z_FADE_HEIGHT = _UxGT("Kaçınma Yüksekliği"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ofset Ayarla"); + LSTR MSG_HOME_OFFSET_X = _UxGT("X Ofset Sıfırla"); + LSTR MSG_HOME_OFFSET_Y = _UxGT("Y Ofset Sıfırla"); + LSTR MSG_HOME_OFFSET_Z = _UxGT("Z Ofset Sıfırla"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Ofset Tamam"); + LSTR MSG_TRAMMING_WIZARD = _UxGT("Hizalama Sihirbazı"); + LSTR MSG_SELECT_ORIGIN = _UxGT("Başlangıç Seç"); + LSTR MSG_LAST_VALUE_SP = _UxGT("Son değer "); #if HAS_PREHEAT LSTR MSG_PREHEAT_1 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL; LSTR MSG_PREHEAT_1_H = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " ~"; @@ -80,7 +105,14 @@ namespace Language_tr { LSTR MSG_PREHEAT_1_ALL = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tüm"); LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tabla"); LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Ayarlar"); - + #ifdef PREHEAT_2_LABEL + LSTR MSG_PREHEAT_2 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL; + LSTR MSG_PREHEAT_2_SETTINGS = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Conf"); + #endif + #ifdef PREHEAT_3_LABEL + LSTR MSG_PREHEAT_3 = _UxGT("Ön Isınma ") PREHEAT_3_LABEL; + LSTR MSG_PREHEAT_3_SETTINGS = _UxGT("Ön Isınma ") PREHEAT_3_LABEL _UxGT(" Conf"); + #endif LSTR MSG_PREHEAT_M = _UxGT("Ön Isınma $"); LSTR MSG_PREHEAT_M_H = _UxGT("Ön Isınma $ ~"); LSTR MSG_PREHEAT_M_END = _UxGT("Ön Isınma $ Nozul"); @@ -91,30 +123,59 @@ namespace Language_tr { #endif LSTR MSG_PREHEAT_CUSTOM = _UxGT("Özel Ön Isınma"); LSTR MSG_COOLDOWN = _UxGT("Soğut/(Durdur)"); + + LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frekans"); LSTR MSG_LASER_MENU = _UxGT("Lazer Kontrolü"); - LSTR MSG_LASER_POWER = _UxGT("Lazer Gücü"); LSTR MSG_SPINDLE_MENU = _UxGT("Spindle Kontrolü"); + LSTR MSG_LASER_POWER = _UxGT("Lazer Gücü"); LSTR MSG_SPINDLE_POWER = _UxGT("Spindle Gücü"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Spindle Ters Yön"); + LSTR MSG_LASER_TOGGLE = _UxGT("Lazer Değiştir"); + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Üfleyici Değiştir"); + LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Hava Desteği"); + LSTR MSG_LASER_PULSE_MS = _UxGT("Test Pulse ms"); + LSTR MSG_LASER_FIRE_PULSE = _UxGT("Fire Pulse"); + LSTR MSG_FLOWMETER_FAULT = _UxGT("Soğutucu Akış Hatası"); + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Spindle Değiştir"); + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Vakum Değiştir"); + LSTR MSG_SPINDLE_FORWARD = _UxGT("Spindle İleri Yön"); + LSTR MSG_SPINDLE_REVERSE = _UxGT("Spindle Geri Yön"); LSTR MSG_SWITCH_PS_ON = _UxGT("Gücü Aç"); LSTR MSG_SWITCH_PS_OFF = _UxGT("Gücü Kapat"); LSTR MSG_EXTRUDE = _UxGT("Ekstrüzyon"); LSTR MSG_RETRACT = _UxGT("Geri Çek"); LSTR MSG_MOVE_AXIS = _UxGT("Eksen Hareketleri"); - LSTR MSG_BED_LEVELING = _UxGT("Tabla Hizalama"); - LSTR MSG_LEVEL_BED = _UxGT("Tabla Hizası"); - LSTR MSG_BED_TRAMMING = _UxGT("Hizalama Köşeleri"); + LSTR MSG_BED_LEVELING = _UxGT("Tabla Seviyeleme"); + LSTR MSG_LEVEL_BED = _UxGT("Tabla Seviyesi"); + LSTR MSG_BED_TRAMMING = _UxGT("Tabla Hizalama"); + LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Manuel Hizalama"); + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Prob tetiklenene kadar tablayı ayarlayın."); + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Köşeler tolerans dahilinde. Tabla hizalandı."); + LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("İyi Noktalar: "); + LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Son Z: "); LSTR MSG_NEXT_CORNER = _UxGT("Sonraki Köşe"); LSTR MSG_MESH_EDITOR = _UxGT("Mesh Editörü"); + LSTR MSG_MESH_VIEWER = _UxGT("Mesh görüntüleyici"); LSTR MSG_EDIT_MESH = _UxGT("Mesh Düzenle"); + LSTR MSG_MESH_VIEW = _UxGT("Mesh Göster"); LSTR MSG_EDITING_STOPPED = _UxGT("Mesh Düzenleme Durdu"); + LSTR MSG_NO_VALID_MESH = _UxGT("Geçerli Mesh yok"); + LSTR MSG_ACTIVATE_MESH = _UxGT("Seviyeleme Aç"); LSTR MSG_PROBING_POINT = _UxGT("Prop Noktası"); LSTR MSG_MESH_X = _UxGT("İndeks X"); LSTR MSG_MESH_Y = _UxGT("İndeks Y"); + LSTR MSG_MESH_INSET = _UxGT("Mesh Inset"); + LSTR MSG_MESH_MIN_X = _UxGT("Mesh X Minimum"); + LSTR MSG_MESH_MAX_X = _UxGT("Mesh X Maximum"); + LSTR MSG_MESH_MIN_Y = _UxGT("Mesh Y Minimum"); + LSTR MSG_MESH_MAX_Y = _UxGT("Mesh Y Maximum"); + LSTR MSG_MESH_AMAX = _UxGT("Alanı Büyüt"); + LSTR MSG_MESH_CENTER = _UxGT("Merkez Alan"); LSTR MSG_MESH_EDIT_Z = _UxGT("Z Değeri"); + LSTR MSG_MESH_CANCEL = _UxGT("Mesh iptal edildi"); LSTR MSG_CUSTOM_COMMANDS = _UxGT("Özel Komutlar"); LSTR MSG_M48_TEST = _UxGT("M48 Prob Testi"); LSTR MSG_M48_POINT = _UxGT("M48 Nokta"); + LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Sınır dışı araştırma"); LSTR MSG_M48_DEVIATION = _UxGT("Sapma"); LSTR MSG_IDEX_MENU = _UxGT("IDEX Modu"); LSTR MSG_OFFSETS_MENU = _UxGT("Takım Ofsetleri"); @@ -122,21 +183,26 @@ namespace Language_tr { LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Kopyala"); LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Yansıtılmış kopya"); LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Tam Kontrol"); + LSTR MSG_IDEX_DUPE_GAP = _UxGT("Yinelenen X-Boşluğu"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. nozul Z"); LSTR MSG_HOTEND_OFFSET_A = _UxGT("2. nozul @"); LSTR MSG_UBL_DOING_G29 = _UxGT("G29 Çalışıyor"); LSTR MSG_UBL_TOOLS = _UxGT("UBL Araçları"); - LSTR MSG_UBL_LEVEL_BED = _UxGT("UBL Yatak Hizalama"); + LSTR MSG_UBL_LEVEL_BED = _UxGT("UBL Tabla Seviyeleme"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Eğim Noktası"); + LSTR MSG_UBL_TILT_MESH = _UxGT("Eğimli Mesh"); + LSTR MSG_UBL_TILTING_GRID = _UxGT("Eğimli Izgara Boyutu"); + LSTR MSG_UBL_MESH_TILTED = _UxGT("Mesh Eğildi"); LSTR MSG_UBL_MANUAL_MESH = _UxGT("Elle Mesh Oluştur"); + LSTR MSG_UBL_MESH_WIZARD = _UxGT("UBL Mesh Sihirbazı"); LSTR MSG_UBL_BC_INSERT = _UxGT("Altlık & Ölçü Ver"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Ölçü"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Yataktan Ölçü Kaldır"); + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Ölçüm"); + LSTR MSG_UBL_BC_REMOVE = _UxGT("Tablayı Kaldır & Ölç"); LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Sonrakine Git"); LSTR MSG_UBL_ACTIVATE_MESH = _UxGT("UBL'yi Etkinleştir"); LSTR MSG_UBL_DEACTIVATE_MESH = _UxGT("UBL'yi Etkisizleştir"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Yatak Sıcaklığı"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Yatak Sıcaklığı"); + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Tabla Sıcaklığı"); + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Tabla Sıcaklığı"); LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Nozul Sıcaklığı"); LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Nozul Sıcaklığı"); LSTR MSG_UBL_MESH_EDIT = _UxGT("Mesh Düzenleme"); @@ -145,14 +211,12 @@ namespace Language_tr { LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Mesh Düzenleme Tamam"); LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Özel Mesh Oluştur"); LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Mesh Oluştur"); - #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Mesh Oluştur ($)"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Doğrulama Mesh ($)"); - #endif + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Mesh Oluştur ($)"); LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Soğuk Mesh Oluştur"); LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Mesh Yükseklik Ayarı"); LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Yükseklik miktarı"); LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Doğrulama Mesh"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Doğrulama Mesh ($)"); LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Özel Mesh Doğrulama"); LSTR MSG_G26_HEATING_BED = _UxGT("G26 Isıtma Tablası"); LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Isıtma Memesi"); @@ -162,29 +226,32 @@ namespace Language_tr { LSTR MSG_G26_CANCELED = _UxGT("G26 İptal edildi"); LSTR MSG_G26_LEAVING = _UxGT("Çıkış G26"); LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Tabla Mesh Devam et"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Mesh Hizalama"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-Nokta Hizalama"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Kafes Mesh Hizalama"); + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Mesh Seviyeleme"); + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-Nokta Seviyeleme"); + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Kafes Mesh Seviyeleme"); LSTR MSG_UBL_MESH_LEVEL = _UxGT("Mesh Seviyesi"); LSTR MSG_UBL_SIDE_POINTS = _UxGT("Yan Noktalar"); LSTR MSG_UBL_MAP_TYPE = _UxGT("Haritalama Türü"); LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Mesh Çıkış Haritası"); LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Host için Çıktı"); LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("CSV için Çıktı"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Yazıcıda Yedek Kpalı"); + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Yedekleme Kapalı"); LSTR MSG_UBL_INFO_UBL = _UxGT("UBL Çıkış Bilgisi"); LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Dolgu Miktarı"); LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Manuel Dolgu"); LSTR MSG_UBL_SMART_FILLIN = _UxGT("Akıllı Dogu"); LSTR MSG_UBL_FILLIN_MESH = _UxGT("Mesh Dolgu"); + LSTR MSG_UBL_MESH_FILLED = _UxGT("Eksikler Dolduruldu"); + LSTR MSG_UBL_MESH_INVALID = _UxGT("Geçersiz Mesh"); LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Tümünü Geçersiz Kıl"); LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Yakını Geçersiz Kıl"); LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Tümünü İnce Ayarla"); LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Yakını İnce Ayarla"); LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Mesh Depolama"); LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Bellek Yuvası"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Yatak Mesh Yükle"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Yatak Mesh Kayıt Et"); + LSTR MSG_UBL_LOAD_MESH = _UxGT("Tabla Mesh Yükle"); + LSTR MSG_UBL_SAVE_MESH = _UxGT("Tabla Mesh Kayıt Et"); + LSTR MSG_UBL_INVALID_SLOT = _UxGT("Önce Mesh Yuvası Seç"); LSTR MSG_MESH_LOADED = _UxGT("Mesh %i yüklendi"); LSTR MSG_MESH_SAVED = _UxGT("Mesh %i kayıtlandı"); LSTR MSG_UBL_NO_STORAGE = _UxGT("Depolama Yok"); @@ -199,7 +266,7 @@ namespace Language_tr { LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Tümünü İnce Ayarla"); LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Doğrulama Mesh"); LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Tümünü İnce Ayarla"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Yatak Mesh Kayıt Et"); + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Tabla Mesh Kaydet"); LSTR MSG_LED_CONTROL = _UxGT("LED Kontrolü"); LSTR MSG_LEDS = _UxGT("LEDler"); @@ -213,6 +280,10 @@ namespace Language_tr { LSTR MSG_SET_LEDS_VIOLET = _UxGT("Menekşe"); LSTR MSG_SET_LEDS_WHITE = _UxGT("Beyaz"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Varsayılan"); + LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal ="); + LSTR MSG_LEDS2 = _UxGT("Işıklar #2"); + LSTR MSG_NEO2_PRESETS = _UxGT("Işık #2 Ön Ayarları"); + LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Parlaklık"); LSTR MSG_CUSTOM_LEDS = _UxGT("Özel Işıklar"); LSTR MSG_INTENSITY_R = _UxGT("Kırmızı Şiddeti"); LSTR MSG_INTENSITY_G = _UxGT("Yeşil Şiddeti"); @@ -222,7 +293,7 @@ namespace Language_tr { LSTR MSG_MOVING = _UxGT("Hareket Ediyor.."); LSTR MSG_FREE_XY = _UxGT("Durdur XY"); - LSTR MSG_MOVE_X = _UxGT("X Hareketi"); + LSTR MSG_MOVE_X = _UxGT("X Hareketi"); // Used by draw_edit_screen LSTR MSG_MOVE_Y = _UxGT("Y Hareketi"); LSTR MSG_MOVE_Z = _UxGT("Z Hareketi"); LSTR MSG_MOVE_N = _UxGT("@ Hareketi"); @@ -233,18 +304,36 @@ namespace Language_tr { LSTR MSG_MOVE_01MM = _UxGT("0.1mm"); LSTR MSG_MOVE_1MM = _UxGT("1mm"); LSTR MSG_MOVE_10MM = _UxGT("10mm"); + LSTR MSG_MOVE_50MM = _UxGT("50mm"); LSTR MSG_MOVE_100MM = _UxGT("100mm"); + LSTR MSG_MOVE_0001IN = _UxGT("0.001in"); + LSTR MSG_MOVE_001IN = _UxGT("0.01in"); + LSTR MSG_MOVE_01IN = _UxGT("0.1in"); + LSTR MSG_MOVE_05IN = _UxGT("0.5in"); + LSTR MSG_MOVE_1IN = _UxGT("1.0in"); LSTR MSG_SPEED = _UxGT("Hız"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Mesafesi"); + LSTR MSG_BED_Z = _UxGT("Z Mesafesi"); LSTR MSG_NOZZLE = _UxGT("Nozul"); LSTR MSG_NOZZLE_N = _UxGT("Nozul ~"); + LSTR MSG_NOZZLE_PARKED = _UxGT("Nozul Park Edildi"); + LSTR MSG_NOZZLE_STANDBY = _UxGT("Nozul Beklemede"); LSTR MSG_BED = _UxGT("Tabla"); - LSTR MSG_CHAMBER = _UxGT("Çevirme"); + LSTR MSG_CHAMBER = _UxGT("Kabin"); + LSTR MSG_COOLER = _UxGT("Lazer Soğutucu"); + LSTR MSG_COOLER_TOGGLE = _UxGT("Soğutucuyu Değiştir"); + LSTR MSG_FLOWMETER_SAFETY = _UxGT("Akış Güvenliği"); + LSTR MSG_CUTTER = _UxGT("Kesici"); + LSTR MSG_LASER = _UxGT("Lazer"); LSTR MSG_FAN_SPEED = _UxGT("Fan Hızı"); LSTR MSG_FAN_SPEED_N = _UxGT("Fan Hızı ~"); LSTR MSG_STORED_FAN_N = _UxGT("Depolanan Fan ~"); LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Ekstra Fan Hızı"); LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Ekstra Fan Hızı ~"); + LSTR MSG_CONTROLLER_FAN = _UxGT("Kontrolör Fanı"); + LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Rölanti Hızı"); + LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Otomatik Mod"); + LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Aktif Hız"); + LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Rölanti Periyodu"); LSTR MSG_FLOW = _UxGT("Akış"); LSTR MSG_FLOW_N = _UxGT("Akış ~"); LSTR MSG_CONTROL = _UxGT("Kontrol"); @@ -256,34 +345,58 @@ namespace Language_tr { LSTR MSG_LCD_OFF = _UxGT("Kapalı"); LSTR MSG_PID_AUTOTUNE = _UxGT("PID Kalibrasyon"); LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Kalibrasyon *"); + LSTR MSG_PID_CYCLE = _UxGT("PID Döngüleri"); + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID ayarı yapıldı"); + LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("PID Autotune başarısız!"); + LSTR MSG_BAD_EXTRUDER_NUM = _UxGT("Kötü ekstruder."); + LSTR MSG_TEMP_TOO_HIGH = _UxGT("Sıcaklık çok yüksek."); + LSTR MSG_TIMEOUT = _UxGT("Zaman aşımı."); + LSTR MSG_PID_BAD_EXTRUDER_NUM = _UxGT("Otomatik ayar başarısız! Kötü ekstruder."); + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Otomatik ayar başarısız! Sıcaklık çok yüksek."); + LSTR MSG_PID_TIMEOUT = _UxGT("Otomatik ayar başarısız! Zaman aşımı."); + LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Isı kaybı test ediliyor"); + LSTR MSG_MPC_AUTOTUNE = _UxGT("MPC Otomatik Ayarı"); + LSTR MSG_MPC_EDIT = _UxGT("Düzenle * MPC"); + LSTR MSG_MPC_POWER_E = _UxGT("Güç *"); + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Blok C *"); + LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Sensör çözünürlüğü *"); + LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Ortam h *"); + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Amb. h fan *"); + LSTR MSG_SELECT = _UxGT("Seç"); LSTR MSG_SELECT_E = _UxGT("Seç *"); LSTR MSG_ACC = _UxGT("İvme"); - - LSTR MSG_JERK = _UxGT("Sarsım"); - LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT("-Sarsım"); - LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT("-Sarsım"); - LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-Sarsım"); - LSTR MSG_VN_JERK = _UxGT("V@-Sarsım"); - LSTR MSG_VE_JERK = _UxGT("Ve-Sarsım"); + LSTR MSG_JERK = _UxGT("Sarsma"); + LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT(" Sarsma"); + LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT(" Sarsma"); + LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT(" Sarsma"); + LSTR MSG_VN_JERK = _UxGT("Max @ Sarsma"); + LSTR MSG_VE_JERK = _UxGT("Max E Sarsma"); LSTR MSG_JUNCTION_DEVIATION = _UxGT("Jonksiyon Sapması"); LSTR MSG_MAX_SPEED = _UxGT("Hız Vektörü"); - LSTR MSG_VMAX_A = _UxGT("HızVektör.max ") STR_A; - LSTR MSG_VMAX_B = _UxGT("HızVektör.max ") STR_B; - LSTR MSG_VMAX_C = _UxGT("HızVektör.max ") STR_C; - LSTR MSG_VMAX_N = _UxGT("HızVektör.max @"); - LSTR MSG_VMAX_E = _UxGT("HızVektör.max E"); - LSTR MSG_VMAX_EN = _UxGT("HızVektör.max *"); - LSTR MSG_VMIN = _UxGT("HızVektör.min"); - LSTR MSG_VTRAV_MIN = _UxGT("HV.gezinme min"); + LSTR MSG_VMAX_A = _UxGT("Max ") STR_A _UxGT(" Hız"); + LSTR MSG_VMAX_B = _UxGT("Max ") STR_B _UxGT(" Hız"); + LSTR MSG_VMAX_C = _UxGT("Max ") STR_C _UxGT(" Hız"); + LSTR MSG_VMAX_N = _UxGT("Max @ Hız"); + LSTR MSG_VMAX_E = _UxGT("Max E Hız"); + LSTR MSG_VMAX_EN = _UxGT("Max * Hız"); + LSTR MSG_VMIN = _UxGT("Min Hız"); + LSTR MSG_VTRAV_MIN = _UxGT("Min Gezme Hızı"); LSTR MSG_ACCELERATION = _UxGT("Ivme"); - LSTR MSG_AMAX_A = _UxGT("Max. ivme ") STR_A; - LSTR MSG_AMAX_B = _UxGT("Max. ivme ") STR_B; - LSTR MSG_AMAX_C = _UxGT("Max. ivme ") STR_C; - LSTR MSG_AMAX_N = _UxGT("Max. ivme @"); - LSTR MSG_AMAX_E = _UxGT("Max. ivme E"); - LSTR MSG_AMAX_EN = _UxGT("Max. ivme *"); - LSTR MSG_A_RETRACT = _UxGT("Ivme-geri çekme"); - LSTR MSG_A_TRAVEL = _UxGT("Ivme-gezinme"); + LSTR MSG_AMAX_A = _UxGT("Max ") STR_A _UxGT(" İvme"); + LSTR MSG_AMAX_B = _UxGT("Max ") STR_B _UxGT(" İvme"); + LSTR MSG_AMAX_C = _UxGT("Max ") STR_C _UxGT(" İvme"); + LSTR MSG_AMAX_N = _UxGT("Max @ İvme"); + LSTR MSG_AMAX_E = _UxGT("Max E İvme"); + LSTR MSG_AMAX_EN = _UxGT("Max * İvme"); + LSTR MSG_A_RETRACT = _UxGT("G.Çekme Hızı"); + LSTR MSG_A_TRAVEL = _UxGT("Gezinme Hızı"); + LSTR MSG_INPUT_SHAPING = _UxGT("Girdi Şekillendirme"); + LSTR MSG_SHAPING_ENABLE = _UxGT("Biçimleme @ aktif"); + LSTR MSG_SHAPING_DISABLE = _UxGT("Biçimleme @ pasif"); + LSTR MSG_SHAPING_FREQ = _UxGT("@ frekans"); + LSTR MSG_SHAPING_ZETA = _UxGT("@ sönümleme"); + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("XY Frek. Sınırı"); + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Min FR Factor"); LSTR MSG_STEPS_PER_MM = _UxGT("Adım/mm"); LSTR MSG_A_STEPS = STR_A _UxGT(" adım/mm"); LSTR MSG_B_STEPS = STR_B _UxGT(" adım/mm"); @@ -295,69 +408,133 @@ namespace Language_tr { LSTR MSG_MOTION = _UxGT("Hareket"); LSTR MSG_FILAMENT = _UxGT("Filaman"); LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("Ekstrüzyon/mm") SUPERSCRIPT_THREE; + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit in mm") SUPERSCRIPT_THREE; + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *"); LSTR MSG_FILAMENT_DIAM = _UxGT("Filaman Çapı"); LSTR MSG_FILAMENT_DIAM_E = _UxGT("Filaman Çapı *"); LSTR MSG_FILAMENT_UNLOAD = _UxGT("Çıkart mm"); LSTR MSG_FILAMENT_LOAD = _UxGT("Yükle mm"); + LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Segment/Sn"); + LSTR MSG_DRAW_MIN_X = _UxGT("Draw Min X"); + LSTR MSG_DRAW_MAX_X = _UxGT("Draw Max X"); + LSTR MSG_DRAW_MIN_Y = _UxGT("Draw Min Y"); + LSTR MSG_DRAW_MAX_Y = _UxGT("Draw Max Y"); + LSTR MSG_MAX_BELT_LEN = _UxGT("Max Kayış Boyu"); LSTR MSG_ADVANCE_K = _UxGT("K İlerlet"); LSTR MSG_ADVANCE_K_E = _UxGT("K İlerlet *"); LSTR MSG_CONTRAST = _UxGT("LCD Kontrast"); + LSTR MSG_BRIGHTNESS = _UxGT("LCD Parlaklığı"); + LSTR MSG_SCREEN_TIMEOUT = _UxGT("LCD Zaman Aşımı (m)"); + LSTR MSG_BRIGHTNESS_OFF = _UxGT("Arka Işık Kapalı"); LSTR MSG_STORE_EEPROM = _UxGT("Hafızaya Al"); LSTR MSG_LOAD_EEPROM = _UxGT("Hafızadan Yükle"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("Fabrika Ayarları"); LSTR MSG_INIT_EEPROM = _UxGT("EEPROM'u başlat"); LSTR MSG_ERR_EEPROM_CRC = _UxGT("Hata: EEPROM CRC"); LSTR MSG_ERR_EEPROM_INDEX = _UxGT("Hata: EEPROM Indeks"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Hata: EEPROM Versiyonu"); + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Hata: EEPROM Sürümü"); + LSTR MSG_SETTINGS_STORED = _UxGT("Ayarlar Kaydedildi"); LSTR MSG_MEDIA_UPDATE = _UxGT("SD Güncellemesi"); LSTR MSG_RESET_PRINTER = _UxGT("Yazıcıyı Resetle"); LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Yenile"); LSTR MSG_INFO_SCREEN = _UxGT("Bilgi Ekranı"); + LSTR MSG_INFO_MACHINENAME = _UxGT("Makine Adı"); + LSTR MSG_INFO_SIZE = _UxGT("Boyut"); + LSTR MSG_INFO_FWVERSION = _UxGT("Yazılım Sürümü"); + LSTR MSG_INFO_BUILD = _UxGT("Tarih & Saat Oluştur"); LSTR MSG_PREPARE = _UxGT("Hazırlık"); LSTR MSG_TUNE = _UxGT("Ayar"); + LSTR MSG_POWER_MONITOR = _UxGT("Güç monitörü"); + LSTR MSG_CURRENT = _UxGT("Akım"); + LSTR MSG_VOLTAGE = _UxGT("Voltaj"); + LSTR MSG_POWER = _UxGT("Güç"); LSTR MSG_START_PRINT = _UxGT("Yaz. Başlat"); LSTR MSG_BUTTON_NEXT = _UxGT("İleri"); - LSTR MSG_BUTTON_INIT = _UxGT("İçinde"); + LSTR MSG_BUTTON_INIT = _UxGT("Başlat"); LSTR MSG_BUTTON_STOP = _UxGT("Durdur"); LSTR MSG_BUTTON_PRINT = _UxGT("Yazdır"); LSTR MSG_BUTTON_RESET = _UxGT("Resetle"); + LSTR MSG_BUTTON_IGNORE = _UxGT("Yoksay"); LSTR MSG_BUTTON_CANCEL = _UxGT("İptal"); + LSTR MSG_BUTTON_CONFIRM = _UxGT("Onayla"); + LSTR MSG_BUTTON_CONTINUE = _UxGT("Sürdür"); LSTR MSG_BUTTON_DONE = _UxGT("Tamamlandı"); LSTR MSG_BUTTON_BACK = _UxGT("Geri"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Devam ediyor"); + LSTR MSG_BUTTON_PROCEED = _UxGT("Devam Et"); + LSTR MSG_BUTTON_SKIP = _UxGT("Atla"); + LSTR MSG_BUTTON_INFO = _UxGT("Bilgi"); + LSTR MSG_BUTTON_LEVEL = _UxGT("Seviye"); + LSTR MSG_BUTTON_PAUSE = _UxGT("Duraklat"); + LSTR MSG_BUTTON_RESUME = _UxGT("Devam Et"); + LSTR MSG_BUTTON_ADVANCED = _UxGT("Gelişmiş"); + LSTR MSG_BUTTON_SAVE = _UxGT("Kaydet"); + LSTR MSG_BUTTON_PURGE = _UxGT("Temizle"); + LSTR MSG_PAUSING = _UxGT("Duraklatılıyor..."); LSTR MSG_PAUSE_PRINT = _UxGT("Duraklat"); - LSTR MSG_RESUME_PRINT = _UxGT("Sürdür"); - LSTR MSG_STOP_PRINT = _UxGT("Durdur"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Yazdırma Nesnesi"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Nesneyi İptal Et"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et ="); + LSTR MSG_ADVANCED_PAUSE = _UxGT("Gelişmiş Duraklatma"); + LSTR MSG_RESUME_PRINT = _UxGT("Baskıyı Sürdür"); + LSTR MSG_STOP_PRINT = _UxGT("Baskıyı Durdur"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Kesinti Kurtarma"); - LSTR MSG_MEDIA_MENU = _UxGT("SD Karttan Yazdır"); + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_HOST_START_PRINT = _UxGT("Host Baskıyı başlat"); + LSTR MSG_PRINTING_OBJECT = _UxGT("Yazdırma Nesnesi"); + LSTR MSG_CANCEL_OBJECT = _UxGT("Nesneyi İptal Et"); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et ="); + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Yazdırmaya Devam Et"); + LSTR MSG_MEDIA_MENU = _UxGT("SD Karttan Yazdır"); + LSTR MSG_TURN_OFF = _UxGT("Yazıcıyı kapat"); + LSTR MSG_END_LOOPS = _UxGT("Tekrr Döngüler Bitir"); + #else + LSTR MSG_HOST_START_PRINT = _UxGT("Host Başlatma"); + LSTR MSG_PRINTING_OBJECT = _UxGT("Nesneyi Yazdır"); + LSTR MSG_CANCEL_OBJECT = _UxGT("Nesneyi İptal Et"); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et ="); + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("İşe Devam Et"); + LSTR MSG_MEDIA_MENU = MEDIA_TYPE_EN _UxGT(" Yazdır"); + LSTR MSG_TURN_OFF = _UxGT("Şimdi kapat"); + LSTR MSG_END_LOOPS = _UxGT("Son Döngüler"); + #endif LSTR MSG_NO_MEDIA = _UxGT("SD Kart Yok!"); LSTR MSG_DWELL = _UxGT("Uyku..."); - LSTR MSG_USERWAIT = _UxGT("Operatör bekleniyor."); + LSTR MSG_USERWAIT = _UxGT("Devam için tıkla..."); LSTR MSG_PRINT_PAUSED = _UxGT("Baskı Duraklatıldı"); LSTR MSG_PRINTING = _UxGT("Baskı Yapılıyor..."); + LSTR MSG_STOPPING = _UxGT("Durduruluyor..."); + LSTR MSG_REMAINING_TIME = _UxGT("Kalan"); LSTR MSG_PRINT_ABORTED = _UxGT("Baskı Durduruldu!"); + LSTR MSG_PRINT_DONE = _UxGT("Yazdırma Bitti"); + LSTR MSG_PRINTER_KILLED = _UxGT("Yazıcı çöktü!"); LSTR MSG_NO_MOVE = _UxGT("İşlem yok."); - LSTR MSG_KILLED = _UxGT("Kilitlendi. "); - LSTR MSG_STOPPED = _UxGT("Durdu. "); + LSTR MSG_KILLED = _UxGT("ÇÖKTÜ. "); + LSTR MSG_STOPPED = _UxGT("DURDURULDU. "); + LSTR MSG_FWRETRACT = _UxGT("Yazılım Geri Çekme"); LSTR MSG_CONTROL_RETRACT = _UxGT("Geri Çek mm"); LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Re.mm"); LSTR MSG_CONTROL_RETRACTF = _UxGT("Geri Çekme V"); LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Atlama mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Geri Çek. mm"); LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); LSTR MSG_AUTORETRACT = _UxGT("Oto. Geri Çekme"); LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("G.Çekme Boyu"); + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Ekstra Değiştir"); LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Tasfiye uzunluğu"); LSTR MSG_TOOL_CHANGE = _UxGT("Takım Değişimi"); LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z Yükselt"); LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Birincil Hız"); + LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Geri Çekme Sil"); LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Geri Çekme Hızı"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Nozul Beklemede"); + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Kafa Park"); + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Kurtarma Hızı"); + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Fan Hızı"); + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Fan Süresi"); + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Otomatik AÇIK"); + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Otomatik KAPALI"); + LSTR MSG_TOOL_MIGRATION = _UxGT("Takım Taşıma"); + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Otomatik-taşıma"); + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Son Ekstruder"); + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("* konumuna taşı"); LSTR MSG_FILAMENTCHANGE = _UxGT("Filaman Değiştir"); LSTR MSG_FILAMENTCHANGE_E = _UxGT("Filaman Değiştir *"); LSTR MSG_FILAMENTLOAD = _UxGT("Filaman Yükle"); @@ -365,36 +542,42 @@ namespace Language_tr { LSTR MSG_FILAMENTUNLOAD = _UxGT("Filaman Çıkart"); LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Filaman Çıkart *"); LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Tümünü Çıkart"); - LSTR MSG_ATTACH_MEDIA = _UxGT("SD Kart Başlatılıyor"); - LSTR MSG_CHANGE_MEDIA = _UxGT("SD Kart Değiştir"); - LSTR MSG_RELEASE_MEDIA = _UxGT("SD Kart Çıkart"); - LSTR MSG_ZPROBE_OUT = _UxGT("Z Prob Açık. Tabla"); + LSTR MSG_ATTACH_MEDIA = _UxGT("Ekle ") MEDIA_TYPE_EN; + LSTR MSG_CHANGE_MEDIA = _UxGT("Değiştir ") MEDIA_TYPE_EN; + LSTR MSG_RELEASE_MEDIA = _UxGT("Çıkart ") MEDIA_TYPE_EN; + LSTR MSG_ZPROBE_OUT = _UxGT("Z Prob Tablayı Geçti"); LSTR MSG_SKEW_FACTOR = _UxGT("Çarpıklık Faktörü"); LSTR MSG_BLTOUCH = _UxGT("BLTouch"); LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch K. Test"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Reset"); + LSTR MSG_BLTOUCH_RESET = _UxGT("Sıfırla"); LSTR MSG_BLTOUCH_STOW = _UxGT("Kapat"); LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Aç"); LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW-Modu"); + LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("Yüksek Hız"); LSTR MSG_BLTOUCH_5V_MODE = _UxGT("5V-Modu"); LSTR MSG_BLTOUCH_OD_MODE = _UxGT("OD-Modu"); LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Mode-Store"); LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("BLTouch 5V Ayarla"); LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("BLTouch OD Ayarla"); LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Drenaj Raporu"); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("TEHLIKE: Kötü ayarlar hasara neden olabilir! Yine de devam edilsin mi?"); + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("TEHLIKE: Kötü ayarlar zarar verebilir! Yine de devam edilsin mi?"); LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("Init TouchMI"); + LSTR MSG_TOUCHMI_INIT = _UxGT("TouchMI'yi Başlat"); LSTR MSG_TOUCHMI_ZTEST = _UxGT("Z Ofset Testi"); LSTR MSG_TOUCHMI_SAVE = _UxGT("Kaydet"); LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("TouchMI Aç"); LSTR MSG_MANUAL_DEPLOY = _UxGT("Z-Probe Aç"); LSTR MSG_MANUAL_STOW = _UxGT("Z-Probe Kapat"); - LSTR MSG_HOME_FIRST = _UxGT("Önce %s Sıfırla"); + LSTR MSG_HOME_FIRST = _UxGT("Önce %s%s%s Sıfırla"); + LSTR MSG_ZPROBE_SETTINGS = _UxGT("Prob Ayarları"); LSTR MSG_ZPROBE_OFFSETS = _UxGT("Prob Ofsetleri"); LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Prob Ofset"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Prob Ofset"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Prob Ofset"); + LSTR MSG_ZPROBE_MARGIN = _UxGT("Prob Payı"); + LSTR MSG_Z_FEED_RATE = _UxGT("Z İlerleme Hızı"); + LSTR MSG_ENABLE_HS_MODE = _UxGT("HS modunu aç"); + LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Nozülü Tablaya Taşı"); LSTR MSG_BABYSTEP_X = _UxGT("Miniadım X"); LSTR MSG_BABYSTEP_Y = _UxGT("Miniadım Y"); LSTR MSG_BABYSTEP_Z = _UxGT("Miniadım Z"); @@ -402,23 +585,28 @@ namespace Language_tr { LSTR MSG_BABYSTEP_TOTAL = _UxGT("Toplam"); LSTR MSG_ENDSTOP_ABORT = _UxGT("Endstop iptal"); LSTR MSG_HEATING_FAILED_LCD = _UxGT("Isınma başarısız"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Hata: Sıcaklık Aşımı"); - LSTR MSG_THERMAL_RUNAWAY = _UxGT("TERMAL PROBLEM"); - LSTR MSG_THERMAL_RUNAWAY_BED = _UxGT("TABLA TERMAL PROBLEM"); - LSTR MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("ODA TERMAL PROBLEM"); + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Hata: ISI AŞIMI"); + LSTR MSG_THERMAL_RUNAWAY = _UxGT("ISI SORUNU"); + LSTR MSG_TEMP_MALFUNCTION = _UxGT("SICAKLIK ARIZASI"); + LSTR MSG_THERMAL_RUNAWAY_BED = _UxGT("TABLA ISI SORUNU"); + LSTR MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("KABİN ISI SORUNU"); + LSTR MSG_THERMAL_RUNAWAY_COOLER = _UxGT("Soğutucu Isı Sorunu"); + LSTR MSG_COOLING_FAILED = _UxGT("Soğutma Başarısız"); LSTR MSG_ERR_MAXTEMP = _UxGT("Hata: MAX.SICAKLIK"); LSTR MSG_ERR_MINTEMP = _UxGT("Hata: MIN.SICAKLIK"); LSTR MSG_HALTED = _UxGT("YAZICI DURDURULDU"); + LSTR MSG_PLEASE_WAIT = _UxGT("Lütfen bekleyin..."); LSTR MSG_PLEASE_RESET = _UxGT("Lütfen Resetleyin"); - LSTR MSG_SHORT_DAY = _UxGT("G"); // One character only - LSTR MSG_SHORT_HOUR = _UxGT("S"); // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("D"); // One character only + LSTR MSG_PREHEATING = _UxGT("ön ısıtma..."); LSTR MSG_HEATING = _UxGT("Isınıyor..."); LSTR MSG_COOLING = _UxGT("Soğuyor..."); LSTR MSG_BED_HEATING = _UxGT("Tabla Isınıyor..."); LSTR MSG_BED_COOLING = _UxGT("Tabla Soğuyor..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Oda Isınıyor..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Oda Soğuyor..."); + LSTR MSG_PROBE_HEATING = _UxGT("Prob ısınıyor..."); + LSTR MSG_PROBE_COOLING = _UxGT("Prob Soğuyor..."); + LSTR MSG_CHAMBER_HEATING = _UxGT("Kabin Isınıyor..."); + LSTR MSG_CHAMBER_COOLING = _UxGT("Kabin Soğuyor..."); + LSTR MSG_LASER_COOLING = _UxGT("Lazer Soğuyor..."); LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibrasyonu"); LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Ayarla X"); LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Ayarla Y"); @@ -431,35 +619,59 @@ namespace Language_tr { LSTR MSG_DELTA_RADIUS = _UxGT("Yarıçap"); LSTR MSG_INFO_MENU = _UxGT("Yazıcı Hakkında"); LSTR MSG_INFO_PRINTER_MENU = _UxGT("Yazıcı Bilgisi"); - LSTR MSG_3POINT_LEVELING = _UxGT("3-Nokta Hizalama"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Doğrusal Hizalama"); + LSTR MSG_3POINT_LEVELING = _UxGT("3-Nokta Seviyeleme"); + LSTR MSG_LINEAR_LEVELING = _UxGT("Doğrusal Seviyeleme"); LSTR MSG_BILINEAR_LEVELING = _UxGT("İki Yönlü Doğ. Hiza."); LSTR MSG_UBL_LEVELING = _UxGT("Birleşik Tabla Hiza."); - LSTR MSG_MESH_LEVELING = _UxGT("Mesh Hizalama"); + LSTR MSG_MESH_LEVELING = _UxGT("Mesh Seviyeleme"); + LSTR MSG_MESH_DONE = _UxGT("Mesh sondalama tamam"); LSTR MSG_INFO_STATS_MENU = _UxGT("İstatistikler"); LSTR MSG_INFO_BOARD_MENU = _UxGT("Kontrolcü Bilgisi"); LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistörler"); LSTR MSG_INFO_EXTRUDERS = _UxGT("Ekstruderler"); LSTR MSG_INFO_BAUDRATE = _UxGT("İletişim Hızı"); LSTR MSG_INFO_PROTOCOL = _UxGT("Protokol"); + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Kaçak İzleme: KAPALI"); + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Kaçak İzleme: AÇIK"); + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Boşta Zamn Aş"); + LSTR MSG_FAN_SPEED_FAULT = _UxGT("Fan hızı hatası"); + LSTR MSG_CASE_LIGHT = _UxGT("Aydınlatmayı Aç"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Aydınlatma Parlaklğı"); + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Işık Parlaklğı"); LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Yanlış Yazıcı"); + LSTR MSG_COLORS_GET = _UxGT("Renk Al"); + LSTR MSG_COLORS_SELECT = _UxGT("Renkleri Seç"); + LSTR MSG_COLORS_APPLIED = _UxGT("Uygulanan renkler"); + LSTR MSG_COLORS_RED = _UxGT("Kırmızı"); + LSTR MSG_COLORS_GREEN = _UxGT("Yeşil"); + LSTR MSG_COLORS_BLUE = _UxGT("Mavi"); + LSTR MSG_COLORS_WHITE = _UxGT("Beyaz"); + LSTR MSG_UI_LANGUAGE = _UxGT("UI Dili"); + LSTR MSG_SOUND_ENABLE = _UxGT("Sesi etkinleştir"); + LSTR MSG_LOCKSCREEN = _UxGT("Kilit Ekranı"); + LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Yazıcı Kilitlendi,"); + LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Açmak için kaydırın."); + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Y.Başlatma bekleyin."); + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Ortam yerleştirilmedi."); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Lütfen önce hotend'i ısıtın."); + LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Baskı Sayısını Sıfırla"); LSTR MSG_INFO_PRINT_COUNT = _UxGT("Baskı Sayısı"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Tamamlanan"); LSTR MSG_INFO_PRINT_TIME = _UxGT("Toplam Baskı Süresi"); LSTR MSG_INFO_PRINT_LONGEST = _UxGT("En Uzun Baskı Süresi"); LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Toplam Filaman"); #else + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Medya Yok"); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Ön Isıtma Lütfen"); LSTR MSG_INFO_PRINT_COUNT = _UxGT("Baskı"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Tamamlanan"); LSTR MSG_INFO_PRINT_TIME = _UxGT("Süre"); LSTR MSG_INFO_PRINT_LONGEST = _UxGT("En Uzun"); LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Filaman"); #endif + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Tamamlanan"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Sıc."); LSTR MSG_INFO_MAX_TEMP = _UxGT("Max Sıc."); LSTR MSG_INFO_PSU = _UxGT("Güç Kaynağı"); @@ -474,9 +686,15 @@ namespace Language_tr { LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("Seçenekler:"); LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Daha Fazla Tasviye"); LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Baskıyı sürdür"); + LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Temizle veya Devam?"); LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Nozul: "); LSTR MSG_RUNOUT_SENSOR = _UxGT("Runout Sensörü"); LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Aşınma Farkı mm"); + LSTR MSG_RUNOUT_ENABLE = _UxGT("Fil. Sens. Aç"); + LSTR MSG_RUNOUT_ACTIVE = _UxGT("Fil. Sens. Aktif"); + LSTR MSG_INVERT_EXTRUDER = _UxGT("Ekstruder Ters Çevir"); + LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Ekstruder Min Isı"); + LSTR MSG_FANCHECK = _UxGT("Fan Takosu Kontrolü"); LSTR MSG_KILL_HOMING_FAILED = _UxGT("Sıfırlama Başarısız"); LSTR MSG_LCD_PROBING_FAILED = _UxGT("Probing Başarısız"); @@ -526,6 +744,20 @@ namespace Language_tr { LSTR MSG_SNAKE = _UxGT("Sn4k3"); LSTR MSG_MAZE = _UxGT("Maze"); + LSTR MSG_BAD_PAGE = _UxGT("Hatalı sayfa dizini"); + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Kötü sayfa hızı"); + + LSTR MSG_EDIT_PASSWORD = _UxGT("Şifreyi Düzenle"); + LSTR MSG_LOGIN_REQUIRED = _UxGT("Giriş Gerekli"); + LSTR MSG_PASSWORD_SETTINGS = _UxGT("Şifre Ayarları"); + LSTR MSG_ENTER_DIGIT = _UxGT("Rakam girin"); + LSTR MSG_CHANGE_PASSWORD = _UxGT("Şifre Belirle/Düzenle"); + LSTR MSG_REMOVE_PASSWORD = _UxGT("Şifre Kaldır"); + LSTR MSG_PASSWORD_SET = _UxGT("Şifre "); + LSTR MSG_START_OVER = _UxGT("Yeniden Başla"); + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Kaydetmeyi Unutma!"); + LSTR MSG_PASSWORD_REMOVED = _UxGT("Şifre Kaldırıldı"); + // // Filament Değişim ekranları 4 satırlı ekranda 3 satıra kadar gösterilir // ...veya 3 satırlı ekranda 2 satıra kadar @@ -567,12 +799,43 @@ namespace Language_tr { LSTR MSG_BACKLASH = _UxGT("Ters Tepki"); LSTR MSG_BACKLASH_CORRECTION = _UxGT("Düzeltme"); LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Yumuşatma"); -} -#if FAN_COUNT == 1 - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED -#else - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED_N - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED_N -#endif + LSTR MSG_LEVEL_X_AXIS = _UxGT("Seviye X Ekseni"); + LSTR MSG_AUTO_CALIBRATE = _UxGT("Otomatik Kalibre Et"); + #if ENABLED(TOUCH_UI_FTDI_EVE) + LSTR MSG_HEATER_TIMEOUT = _UxGT("Boşta kalma zaman aşımı, sıcaklık düştü. Yeniden ısıtmak ve tekrar devam etmek için için Tamam'a basın."); + #else + LSTR MSG_HEATER_TIMEOUT = _UxGT("Isıtıcı Zaman Aşımı"); + #endif + LSTR MSG_REHEAT = _UxGT("Yeniden ısıt"); + LSTR MSG_REHEATING = _UxGT("Yeniden ısıtılıyor..."); + LSTR MSG_REHEATDONE = _UxGT("Y. Isıtma Tamam"); + + LSTR MSG_PROBE_WIZARD = _UxGT("Z Prob Sihirbazı"); + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Z Referansını Tarama"); + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Prob Konumuna Geçme"); + + LSTR MSG_XATC = _UxGT("X-Twist Sihirbazı"); + LSTR MSG_XATC_DONE = _UxGT("X-Twist Sihirbazı Bitti!"); + LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Prob Z-Offset güncelle "); + + LSTR MSG_SOUND = _UxGT("Ses"); + + LSTR MSG_TOP_LEFT = _UxGT("Üst Sol"); + LSTR MSG_BOTTOM_LEFT = _UxGT("Alt Sol"); + LSTR MSG_TOP_RIGHT = _UxGT("Üst Sağ"); + LSTR MSG_BOTTOM_RIGHT = _UxGT("Alt Sağ"); + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Kalibrasyon Tamamlandı"); + LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibrasyon Başarısız"); + + LSTR MSG_DRIVER_BACKWARD = _UxGT(" driver backward"); + + LSTR MSG_SD_CARD = _UxGT("SD Kart"); + LSTR MSG_USB_DISK = _UxGT("USB Disk"); + + LSTR MSG_HOST_SHUTDOWN = _UxGT("Host'u Kapat"); + + LSTR MSG_SHORT_DAY = _UxGT("g"); // One character only + LSTR MSG_SHORT_HOUR = _UxGT("s"); // One character only + LSTR MSG_SHORT_MINUTE = _UxGT("d"); // One character only +} diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 0a695bfe06..106d73d35f 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -866,11 +866,12 @@ namespace Language_en { LSTR MSG_HOST_SHUTDOWN = _UxGT("Host Shutdown"); - // These strings can be the same in all languages - LSTR MSG_MARLIN = _UxGT("Marlin"); LSTR MSG_SHORT_DAY = _UxGT("d"); // One character only LSTR MSG_SHORT_HOUR = _UxGT("h"); // One character only LSTR MSG_SHORT_MINUTE = _UxGT("m"); // One character only + + // These strings can be the same in all languages + LSTR MSG_MARLIN = _UxGT("Marlin"); LSTR MSG_PID_P = _UxGT("PID-P"); LSTR MSG_PID_P_E = _UxGT("PID-P *"); LSTR MSG_PID_I = _UxGT("PID-I"); diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h index e274de8db6..cfd6c81d59 100644 --- a/Marlin/src/lcd/language/language_fr.h +++ b/Marlin/src/lcd/language/language_fr.h @@ -443,9 +443,6 @@ namespace Language_fr { LSTR MSG_HALTED = _UxGT("IMPR. STOPPÉE"); LSTR MSG_PLEASE_RESET = _UxGT("Redémarrer SVP"); - LSTR MSG_SHORT_DAY = _UxGT("j"); // One character only - LSTR MSG_SHORT_HOUR = _UxGT("h"); // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("m"); // One character only LSTR MSG_HEATING = _UxGT("en chauffe..."); LSTR MSG_COOLING = _UxGT("Refroidissement"); @@ -631,4 +628,8 @@ namespace Language_fr { LSTR MSG_SD_CARD = _UxGT("Carte SD"); LSTR MSG_USB_DISK = _UxGT("Clé USB"); + + LSTR MSG_SHORT_DAY = _UxGT("j"); // One character only + LSTR MSG_SHORT_HOUR = _UxGT("h"); // One character only + LSTR MSG_SHORT_MINUTE = _UxGT("m"); // One character only } diff --git a/Marlin/src/lcd/language/language_hu.h b/Marlin/src/lcd/language/language_hu.h index e17de38747..caa8fc62df 100644 --- a/Marlin/src/lcd/language/language_hu.h +++ b/Marlin/src/lcd/language/language_hu.h @@ -490,9 +490,6 @@ namespace Language_hu { LSTR MSG_ERR_MINTEMP = _UxGT("Hiba: MIN höfok"); LSTR MSG_HALTED = _UxGT("A NYOMTATÓ LEÁLLT"); LSTR MSG_PLEASE_RESET = _UxGT("Indítsd újra!"); - LSTR MSG_SHORT_DAY = _UxGT("n"); // Csak egy karakter - LSTR MSG_SHORT_HOUR = _UxGT("ó"); // Csak egy karakter - LSTR MSG_SHORT_MINUTE = _UxGT("p"); // Csak egy karakter LSTR MSG_HEATING = _UxGT("Fütés..."); LSTR MSG_COOLING = _UxGT("Hütés..."); LSTR MSG_BED_HEATING = _UxGT("Ágy fütés..."); @@ -696,12 +693,8 @@ namespace Language_hu { LSTR MSG_SD_CARD = _UxGT("SD Kártya"); LSTR MSG_USB_DISK = _UxGT("USB Lemez"); -} -#if FAN_COUNT == 1 - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED -#else - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED_N - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED_N -#endif + LSTR MSG_SHORT_DAY = _UxGT("n"); // Csak egy karakter + LSTR MSG_SHORT_HOUR = _UxGT("ó"); // Csak egy karakter + LSTR MSG_SHORT_MINUTE = _UxGT("p"); // Csak egy karakter +} diff --git a/Marlin/src/lcd/language/language_pl.h b/Marlin/src/lcd/language/language_pl.h index 15d6a29053..1b5715aedd 100644 --- a/Marlin/src/lcd/language/language_pl.h +++ b/Marlin/src/lcd/language/language_pl.h @@ -538,11 +538,3 @@ namespace Language_pl { LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibracja nie powiodła się"); } - -#if FAN_COUNT == 1 - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED -#else - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED_N - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED_N -#endif diff --git a/Marlin/src/lcd/language/language_ro.h b/Marlin/src/lcd/language/language_ro.h index 162f3a3616..938aa71c57 100644 --- a/Marlin/src/lcd/language/language_ro.h +++ b/Marlin/src/lcd/language/language_ro.h @@ -606,11 +606,3 @@ namespace Language_ro { LSTR MSG_REHEAT = _UxGT("Reincalzire"); LSTR MSG_REHEATING = _UxGT("Reincalzire..."); } - -#if FAN_COUNT == 1 - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED -#else - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED_N - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED_N -#endif diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index c8077582b6..ab5d7fca98 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -606,9 +606,6 @@ namespace Language_ru { LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Ошибка: Т контр."); LSTR MSG_HALTED = _UxGT("ПРИНТЕР ОСТАНОВЛЕН"); LSTR MSG_PLEASE_RESET = _UxGT("Сделайте сброс"); - LSTR MSG_SHORT_DAY = _UxGT("д"); // One character only - LSTR MSG_SHORT_HOUR = _UxGT("ч"); // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("м"); // One character only LSTR MSG_HEATING = _UxGT("Нагрев..."); LSTR MSG_COOLING = _UxGT("Охлаждение..."); LSTR MSG_BED_HEATING = _UxGT("Нагрев стола..."); @@ -865,12 +862,8 @@ namespace Language_ru { LSTR MSG_SD_CARD = _UxGT("SD Карта"); LSTR MSG_USB_DISK = _UxGT("USB Диск"); -} -#if FAN_COUNT == 1 - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED -#else - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED_N - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED_N -#endif + LSTR MSG_SHORT_DAY = _UxGT("д"); // One character only + LSTR MSG_SHORT_HOUR = _UxGT("ч"); // One character only + LSTR MSG_SHORT_MINUTE = _UxGT("м"); // One character only +} diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h index dc03265524..7e7ef5eb37 100644 --- a/Marlin/src/lcd/language/language_uk.h +++ b/Marlin/src/lcd/language/language_uk.h @@ -625,9 +625,6 @@ namespace Language_uk { LSTR MSG_ERR_MINTEMP = _UxGT("МІНІМАЛЬНА Т") LCD_STR_DEGREE; LSTR MSG_HALTED = _UxGT("ПРИНТЕР ЗУПИНЕНО"); LSTR MSG_PLEASE_RESET = _UxGT("Перезавантажте"); - LSTR MSG_SHORT_DAY = _UxGT("д"); // One character only - LSTR MSG_SHORT_HOUR = _UxGT("г"); // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("х"); // One character only LSTR MSG_HEATING = _UxGT("Нагрівання..."); LSTR MSG_COOLING = _UxGT("Охолодження..."); LSTR MSG_BED_HEATING = _UxGT("Нагрів столу..."); @@ -913,12 +910,8 @@ namespace Language_uk { LSTR MSG_SD_CARD = _UxGT("SD Картка"); LSTR MSG_USB_DISK = _UxGT("USB Диск"); -} -#if FAN_COUNT == 1 - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED -#else - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED_N - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED_N -#endif + LSTR MSG_SHORT_DAY = _UxGT("д"); // One character only + LSTR MSG_SHORT_HOUR = _UxGT("г"); // One character only + LSTR MSG_SHORT_MINUTE = _UxGT("х"); // One character only +} diff --git a/Marlin/src/lcd/language/language_vi.h b/Marlin/src/lcd/language/language_vi.h index c01b2f44fa..3925eb8b83 100644 --- a/Marlin/src/lcd/language/language_vi.h +++ b/Marlin/src/lcd/language/language_vi.h @@ -341,9 +341,6 @@ namespace Language_vi { LSTR MSG_ERR_MINTEMP = _UxGT("Điều sai: nhiệt độ tối thiểu"); // Err: MINTEMP LSTR MSG_HALTED = _UxGT("MÁY IN Đà DỪNG LẠI"); // PRINTER HALTED LSTR MSG_PLEASE_RESET = _UxGT("Xin bặt lại"); // Please reset - LSTR MSG_SHORT_DAY = _UxGT("n"); // d - ngày - One character only - LSTR MSG_SHORT_HOUR = _UxGT("g"); // h - giờ - One character only - LSTR MSG_SHORT_MINUTE = _UxGT("p"); // m - phút - One character only LSTR MSG_HEATING = _UxGT("Đang sưởi nóng..."); // heating LSTR MSG_COOLING = _UxGT("Đang làm nguội..."); // cooling LSTR MSG_BED_HEATING = _UxGT("Đang sưởi nong bàn..."); // bed heating @@ -437,4 +434,8 @@ namespace Language_vi { LSTR MSG_TMC_HOMING_THRS = _UxGT("Vô cảm biến"); // Sensorless homing LSTR MSG_TMC_STEPPING_MODE = _UxGT("Chế độ từng bước"); // Stepping mode LSTR MSG_TMC_STEALTH_ENABLED = _UxGT("CắtTàngHình được kích hoạt"); // StealthChop enabled + + LSTR MSG_SHORT_DAY = _UxGT("n"); // d - ngày - One character only + LSTR MSG_SHORT_HOUR = _UxGT("g"); // h - giờ - One character only + LSTR MSG_SHORT_MINUTE = _UxGT("p"); // m - phút - One character only } diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h index 4dccbc4f09..0fd72b410c 100644 --- a/Marlin/src/lcd/language/language_zh_CN.h +++ b/Marlin/src/lcd/language/language_zh_CN.h @@ -438,9 +438,6 @@ namespace Language_zh_CN { LSTR MSG_ERR_MINTEMP = _UxGT("错误:最低温度"); // "Err: MINTEMP" LSTR MSG_HALTED = _UxGT("打印停机"); // "PRINTER HALTED" LSTR MSG_PLEASE_RESET = _UxGT("请重置"); // "Please reset" - LSTR MSG_SHORT_DAY = _UxGT("天"); // "d" // One character only - LSTR MSG_SHORT_HOUR = _UxGT("时"); // "h" // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("分"); // "m" // One character only LSTR MSG_HEATING = _UxGT("加热中 ..."); // "Heating..." LSTR MSG_COOLING = _UxGT("冷却中 ..."); LSTR MSG_BED_HEATING = _UxGT("加热热床中 ..."); // "Bed Heating..." @@ -608,12 +605,8 @@ namespace Language_zh_CN { LSTR MSG_HEATER_TIMEOUT = _UxGT("加热器超时"); LSTR MSG_REHEAT = _UxGT("重新加热"); LSTR MSG_REHEATING = _UxGT("重新加热中..."); -} -#if FAN_COUNT == 1 - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED -#else - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED_N - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED_N -#endif + LSTR MSG_SHORT_DAY = _UxGT("天"); // "d" // One character only + LSTR MSG_SHORT_HOUR = _UxGT("时"); // "h" // One character only + LSTR MSG_SHORT_MINUTE = _UxGT("分"); // "m" // One character only +} diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h index 4ba94f3014..a00303864a 100644 --- a/Marlin/src/lcd/language/language_zh_TW.h +++ b/Marlin/src/lcd/language/language_zh_TW.h @@ -388,9 +388,6 @@ namespace Language_zh_TW { LSTR MSG_ERR_MINTEMP = _UxGT("錯誤:最低溫度"); // "Err: MINTEMP" LSTR MSG_HALTED = _UxGT("印表機停機"); // "PRINTER HALTED" LSTR MSG_PLEASE_RESET = _UxGT("請重置"); // "Please reset" - LSTR MSG_SHORT_DAY = _UxGT("天"); // "d" // One character only - LSTR MSG_SHORT_HOUR = _UxGT("時"); // "h" // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("分"); // "m" // One character only LSTR MSG_HEATING = _UxGT("加熱中 ..."); // "Heating..." LSTR MSG_COOLING = _UxGT("冷卻中 ..."); // "Cooling..." LSTR MSG_BED_HEATING = _UxGT("加熱熱床中 ..."); // "Bed Heating..." @@ -490,12 +487,8 @@ namespace Language_zh_TW { LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("按下完成..")); // "Click to finish" LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢復中 ...")); // "Resuming..." #endif // LCD_HEIGHT < 4 -} -#if FAN_COUNT == 1 - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED -#else - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED_N - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED_N -#endif + LSTR MSG_SHORT_DAY = _UxGT("天"); // "d" // One character only + LSTR MSG_SHORT_HOUR = _UxGT("時"); // "h" // One character only + LSTR MSG_SHORT_MINUTE = _UxGT("分"); // "m" // One character only +} From c2572de9f48c8518ebae7866a45882cf6cad64aa Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 6 Mar 2023 00:23:51 +0000 Subject: [PATCH 088/659] [cron] Bump distribution date (2023-03-06) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 09916dd851..1458b8e10e 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-05" +//#define STRING_DISTRIBUTION_DATE "2023-03-06" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 9d1c614d6f..7c61f7c5bd 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-05" + #define STRING_DISTRIBUTION_DATE "2023-03-06" #endif /** From 22f370a3fa3a9c9f95965eeb3e7bcdac577d3905 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 5 Mar 2023 19:15:22 -0600 Subject: [PATCH 089/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Scr?= =?UTF-8?q?ipt=20to=20make=20non-accented=20languages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/language/language_pt.h | 2 +- buildroot/share/fonts/genallfont.sh | 12 ++++----- buildroot/share/fonts/make_lang_na.sh | 39 +++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 7 deletions(-) create mode 100755 buildroot/share/fonts/make_lang_na.sh diff --git a/Marlin/src/lcd/language/language_pt.h b/Marlin/src/lcd/language/language_pt.h index 4d9a8ae6da..7f09d71e48 100644 --- a/Marlin/src/lcd/language/language_pt.h +++ b/Marlin/src/lcd/language/language_pt.h @@ -29,7 +29,7 @@ * See also https://marlinfw.org/docs/development/lcd_language.html */ - #define DISPLAY_CHARSET_ISO10646_1 +#define DISPLAY_CHARSET_ISO10646_1 namespace Language_pt { using namespace Language_en; // Inherit undefined strings from English diff --git a/buildroot/share/fonts/genallfont.sh b/buildroot/share/fonts/genallfont.sh index e04b11a799..cc92d17d2c 100755 --- a/buildroot/share/fonts/genallfont.sh +++ b/buildroot/share/fonts/genallfont.sh @@ -67,21 +67,21 @@ LANGS_DEFAULT="an bg ca cz da de el el_CY en es eu fi fr gl hr hu it jp_kana ko_ # # Generate data for language list MARLIN_LANGS or all if not provided # -for LANG in ${LANG_ARG:=$LANGS_DEFAULT} ; do - echo "Generating Marlin language data for '${LANG}'" >&2 - case "$LANG" in +for ALANG in ${LANG_ARG:=$LANGS_DEFAULT} ; do + echo "Generating Marlin language data for '${ALANG}'" >&2 + case "$ALANG" in zh_* ) FONTFILE="wenquanyi_12pt" ;; ko_* ) FONTFILE="${DN_EXEC}/NanumGothic.bdf" ;; * ) FONTFILE="${DN_EXEC}/marlin-6x12-3.bdf" ;; esac DN_WORK=$(mktemp -d) cp Configuration.h ${DN_WORK}/ - cp src/lcd/language/language_${LANG}.h ${DN_WORK}/ + cp src/lcd/language/language_${ALANG}.h ${DN_WORK}/ cd "${DN_WORK}" - ${DN_EXEC}/uxggenpages.sh "${FONTFILE}" $LANG + ${DN_EXEC}/uxggenpages.sh "${FONTFILE}" $ALANG sed -i fontutf8-data.h -e 's|fonts//|fonts/|g' -e 's|fonts//|fonts/|g' -e 's|[/0-9a-zA-Z_\-]*buildroot/share/fonts|buildroot/share/fonts|' 2>/dev/null cd - >/dev/null - mv ${DN_WORK}/fontutf8-data.h src/lcd/dogm/fontdata/langdata_${LANG}.h + mv ${DN_WORK}/fontutf8-data.h src/lcd/dogm/fontdata/langdata_${ALANG}.h rm -rf ${DN_WORK} done diff --git a/buildroot/share/fonts/make_lang_na.sh b/buildroot/share/fonts/make_lang_na.sh new file mode 100755 index 0000000000..d7453e2820 --- /dev/null +++ b/buildroot/share/fonts/make_lang_na.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +# +# make_lang_na.sh +# +# Create non-accented language files given a list of accented language files. +# + +which gsed >/dev/null || { echo "gsed is required for this script." ; exit 1 ; } +which perl >/dev/null || { echo "perl is required for this script." ; exit 1 ; } + +# +# Get language arguments +# +[ $# ] || { echo "One or more language codes (such as 'fr') must be supplied." ; exit 1 ; } + +LANG_ARG="$@" + +# +# Change to working directory 'Marlin' +# +OLDWD=`pwd` +[[ $(basename "$OLDWD") != 'Marlin' && -d "Marlin" ]] && cd Marlin +[[ -f "Configuration.h" ]] || { echo -n "cd to the 'Marlin' folder to run " ; basename $0 ; exit 1; } + +# +# Generate a non-accented language file +# +for ALANG in $LANG_ARG ; do + echo "Generating a non-accented language for '${ALANG}'" >&2 + OUTFILE=src/lcd/language/language_${ALANG}_na.h + cp src/lcd/language/language_${ALANG}.h $OUTFILE + perl -pi -e 's/\s*#define DISPLAY_CHARSET_.+\n*//g' $OUTFILE + perl -pi -e 's/\s*constexpr .+ CHARSIZE.+\n*//g' $OUTFILE + perl -pi -e "s/namespace Language_${ALANG}/#define DISPLAY_CHARSET_ISO10646_1\n#define NOT_EXTENDED_ISO10646_1_5X7\n\nnamespace Language_${ALANG}_na/" $OUTFILE + gsed -i 'y/āáǎàâäēéěèêīíǐìïîōóǒòöôūúǔùǖǘǚǜüûĀÁǍÀĒÉĚÈÊĪÍǏÌÎŌÓǑÒÔŪÚǓÙǕǗǙǛÜÛÇçÑñ/aaaaaaeeeeeiiiiiioooooouuuuuuuuuuAAAAEEEEEIIIIIOOOOOUUUUUUUUUUCcNn/' $OUTFILE + perl -pi -e 's/ß/ss/g' $OUTFILE +done + +cd "$OLDWD" From e0538278313a9249c79c80dc6a0653ac5e44071a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 6 Mar 2023 13:55:38 -0600 Subject: [PATCH 090/659] =?UTF-8?q?=F0=9F=8C=90=20Update=20Turkish=20langu?= =?UTF-8?q?age?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25447 --- Marlin/{kaynak/lcd/dil => src/lcd/language}/language_tr.h | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Marlin/{kaynak/lcd/dil => src/lcd/language}/language_tr.h (100%) diff --git a/Marlin/kaynak/lcd/dil/language_tr.h b/Marlin/src/lcd/language/language_tr.h similarity index 100% rename from Marlin/kaynak/lcd/dil/language_tr.h rename to Marlin/src/lcd/language/language_tr.h From 0e2837e3e771635b65b7293fc11857d333ef0c16 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 7 Mar 2023 00:40:18 +0000 Subject: [PATCH 091/659] [cron] Bump distribution date (2023-03-07) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 1458b8e10e..3eae6ed9d8 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-06" +//#define STRING_DISTRIBUTION_DATE "2023-03-07" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 7c61f7c5bd..0eac8c737c 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-06" + #define STRING_DISTRIBUTION_DATE "2023-03-07" #endif /** From cc31537ae3ca3be37ffb171540e7445f30827930 Mon Sep 17 00:00:00 2001 From: albatorsssx Date: Tue, 7 Mar 2023 03:04:47 +0100 Subject: [PATCH 092/659] =?UTF-8?q?=F0=9F=8C=90=20DGUS=20Reloaded=20non-ac?= =?UTF-8?q?cented=20French=20(#25443)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/core/language.h | 1 + Marlin/src/lcd/dogm/fontdata/langdata_fr_na.h | 10 + .../lcd/extui/dgus_reloaded/DGUSRxHandler.cpp | 80 +-- .../extui/dgus_reloaded/DGUSScreenHandler.cpp | 48 +- .../extui/dgus_reloaded/DGUSScreenHandler.h | 15 +- .../extui/dgus_reloaded/DGUSSetupHandler.cpp | 28 +- .../lcd/extui/dgus_reloaded/DGUSTxHandler.cpp | 2 +- .../lcd/extui/dgus_reloaded/DGUSTxHandler.h | 2 +- .../extui/dgus_reloaded/config/DGUS_Addr.h | 2 +- .../definition/DGUS_ScreenAddrList.cpp | 4 +- .../dgus_reloaded/definition/DGUS_VPList.cpp | 4 +- Marlin/src/lcd/language/language_en.h | 24 + Marlin/src/lcd/language/language_fr.h | 23 + Marlin/src/lcd/language/language_fr_na.h | 658 ++++++++++++++++++ buildroot/share/fonts/genallfont.sh | 2 +- buildroot/tests/FYSETC_F6 | 11 +- 16 files changed, 804 insertions(+), 110 deletions(-) create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_fr_na.h create mode 100644 Marlin/src/lcd/language/language_fr_na.h diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h index 2d0b23a529..d231a7d3e9 100644 --- a/Marlin/src/core/language.h +++ b/Marlin/src/core/language.h @@ -55,6 +55,7 @@ // eu Basque-Euskera // fi Finnish // fr French +// fr_na French without accents (DWIN T5UID1 touchscreen) // gl Galician // hr Croatian // hu Hungarian diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_fr_na.h b/Marlin/src/lcd/dogm/fontdata/langdata_fr_na.h new file mode 100644 index 0000000000..218f042a20 --- /dev/null +++ b/Marlin/src/lcd/dogm/fontdata/langdata_fr_na.h @@ -0,0 +1,10 @@ +/** + * Generated automatically by buildroot/share/fonts/uxggenpages.sh + * Contents will be REPLACED by future processing! + * Use genallfont.sh to generate font data for updated languages. + */ +#pragma once + +#include "langdata.h" + +static const uxg_fontinfo_t g_fontinfo_fr_na[] PROGMEM = {}; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp index 2b750df9c9..f149d3c419 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp @@ -63,13 +63,13 @@ void DGUSRxHandler::ScreenChange(DGUS_VP &vp, void *data_ptr) { if (vp.addr == DGUS_Addr::SCREENCHANGE_Idle && (ExtUI::isPrinting() || ExtUI::isPrintingPaused())) { - dgus_screen_handler.SetStatusMessage(F("Impossible while printing")); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_NOT_WHILE_PRINTING)); return; } if (vp.addr == DGUS_Addr::SCREENCHANGE_Printing && (!ExtUI::isPrinting() && !ExtUI::isPrintingPaused())) { - dgus_screen_handler.SetStatusMessage(F("Impossible while idle")); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_NOT_WHILE_IDLE)); return; } @@ -137,7 +137,7 @@ void DGUSRxHandler::ScreenChange(DGUS_VP &vp, void *data_ptr) { UNUSED(data_ptr); if (dgus_screen_handler.filelist_selected < 0) { - dgus_screen_handler.SetStatusMessage(F("No file selected")); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_NO_FILE_SELECTED)); return; } @@ -147,7 +147,7 @@ void DGUSRxHandler::ScreenChange(DGUS_VP &vp, void *data_ptr) { } if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -205,7 +205,7 @@ void DGUSRxHandler::PrintResume(DGUS_VP &vp, void *data_ptr) { } if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -362,7 +362,7 @@ void DGUSRxHandler::TempCool(DGUS_VP &vp, void *data_ptr) { #endif } - dgus_screen_handler.SetStatusMessage(F("Cooling...")); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(MSG_COOLING)); dgus_screen_handler.TriggerFullUpdate(); } @@ -388,12 +388,12 @@ void DGUSRxHandler::ZOffset(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); if (!ExtUI::isAxisPositionKnown(ExtUI::Z)) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -412,12 +412,12 @@ void DGUSRxHandler::ZOffsetStep(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); if (!ExtUI::isAxisPositionKnown(ExtUI::Z)) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -454,12 +454,12 @@ void DGUSRxHandler::MoveToPoint(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); if (!ExtUI::isPositionKnown()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -509,12 +509,12 @@ void DGUSRxHandler::Probe(DGUS_VP &vp, void *data_ptr) { #endif if (!ExtUI::isPositionKnown()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -533,7 +533,7 @@ void DGUSRxHandler::DisableABL(DGUS_VP &vp, void *data_ptr) { UNUSED(data_ptr); if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -574,7 +574,7 @@ void DGUSRxHandler::FilamentMove(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -598,7 +598,7 @@ void DGUSRxHandler::FilamentMove(DGUS_VP &vp, void *data_ptr) { } if (ExtUI::getActualTemp_celsius(extruder) < (float)EXTRUDE_MINTEMP) { - dgus_screen_handler.SetStatusMessage(F("Temperature too low")); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_TEMP_TOO_LOW)); return; } @@ -618,17 +618,13 @@ void DGUSRxHandler::Home(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } DGUS_Data::Axis axis = (DGUS_Data::Axis)((uint8_t*)data_ptr)[1]; - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 1); - dgus_screen_handler.SetMessageLinePGM(DGUS_MSG_HOMING, 2); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 3); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 4); - dgus_screen_handler.ShowWaitScreen(dgus_screen_handler.GetCurrentScreen()); + dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), dgus_screen_handler.GetCurrentScreen()); switch (axis) { case DGUS_Data::Axis::X_Y_Z: @@ -662,7 +658,7 @@ void DGUSRxHandler::Move(DGUS_VP &vp, void *data_ptr) { } if (!ExtUI::isAxisPositionKnown(axis)) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } @@ -718,7 +714,7 @@ void DGUSRxHandler::MoveStep(DGUS_VP &vp, void *data_ptr) { } if (!ExtUI::isAxisPositionKnown(axis)) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } @@ -755,15 +751,11 @@ void DGUSRxHandler::GcodeExecute(DGUS_VP &vp, void *data_ptr) { } if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 1); - dgus_screen_handler.SetMessageLinePGM(PSTR("Executing command..."), 2); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 3); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 4); - dgus_screen_handler.ShowWaitScreen(DGUS_Screen::GCODE); + dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_EXECUTING_COMMAND), DGUS_Screen::GCODE); queue.enqueue_one_now(dgus_screen_handler.gcode); } @@ -778,7 +770,7 @@ void DGUSRxHandler::ResetEEPROM(DGUS_VP &vp, void *data_ptr) { } if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -796,7 +788,7 @@ void DGUSRxHandler::SettingsExtra(DGUS_VP &vp, void *data_ptr) { case DGUS_Data::Extra::BUTTON1: #if ENABLED(BLTOUCH) if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -842,7 +834,7 @@ void DGUSRxHandler::PIDSetTemp(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -873,7 +865,7 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) { UNUSED(data_ptr); if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -887,7 +879,7 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) { heater = H_BED; break; #else - dgus_screen_handler.SetStatusMessage(F("Bed PID disabled")); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BED_PID_DISABLED)); return; #endif case DGUS_Data::Heater::H0: @@ -895,7 +887,7 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) { heater = H_E0; break; #else - dgus_screen_handler.SetStatusMessage(F("PID disabled")); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_PID_DISABLED)); return; #endif #if HAS_MULTI_HOTEND @@ -904,7 +896,7 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) { heater = H_E1; break; #else - dgus_screen_handler.SetStatusMessage(F("PID disabled")); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_PID_DISABLED)); return; #endif #endif @@ -913,11 +905,7 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) { char buffer[24]; snprintf_P(buffer, sizeof(buffer), PSTR("M303C%dE%dS%dU1"), cycles, heater, dgus_screen_handler.pid_temp); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 1); - dgus_screen_handler.SetMessageLinePGM(PSTR("PID autotuning..."), 2); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 3); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 4); - dgus_screen_handler.ShowWaitScreen(DGUS_Screen::PID); + dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_PID_AUTOTUNING), DGUS_Screen::PID); queue.enqueue_one_now(buffer); queue.enqueue_now_P(DGUS_CMD_EEPROM_SAVE); @@ -934,7 +922,7 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) { } if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -953,12 +941,12 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) { } if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } if (!recovery.valid()) { - dgus_screen_handler.SetStatusMessage(F("Invalid recovery data")); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_INVALID_RECOVERY_DATA)); return; } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp index a7295f90fe..cc98126c9b 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp @@ -69,12 +69,7 @@ bool DGUSScreenHandler::leveling_active = false; millis_t DGUSScreenHandler::status_expire = 0; millis_t DGUSScreenHandler::eeprom_save = 0; -const char DGUS_MSG_HOMING_REQUIRED[] PROGMEM = "Homing required", - DGUS_MSG_BUSY[] PROGMEM = "Busy", - DGUS_MSG_UNDEF[] PROGMEM = "-", - DGUS_MSG_HOMING[] PROGMEM = "Homing...", - DGUS_MSG_FW_OUTDATED[] PROGMEM = "DWIN GUI/OS update required", - DGUS_MSG_ABL_REQUIRED[] PROGMEM = "Auto bed leveling required"; +const char DGUS_MSG_UNDEF[] PROGMEM = "-"; const char DGUS_CMD_HOME[] PROGMEM = "G28", DGUS_CMD_EEPROM_SAVE[] PROGMEM = "M500"; @@ -138,7 +133,7 @@ void DGUSScreenHandler::Loop() { if (current_screen == DGUS_Screen::LEVELING_PROBING && IsPrinterIdle()) { dgus_display.PlaySound(3); - SetStatusMessage(ExtUI::getMeshValid() ? F("Probing successful") : F("Probing failed")); + SetStatusMessage(ExtUI::getMeshValid() ? GET_TEXT_F(DGUS_MSG_PROBING_SUCCESS) : GET_TEXT_F(DGUS_MSG_PROBING_FAILED)); MoveToScreen(DGUS_Screen::LEVELING_AUTOMATIC); return; @@ -159,10 +154,10 @@ void DGUSScreenHandler::Loop() { } void DGUSScreenHandler::PrinterKilled(FSTR_P const error, FSTR_P const component) { - SetMessageLinePGM(FTOP(error), 1); - SetMessageLinePGM(FTOP(component), 2); + SetMessageLine(error, 1); + SetMessageLine(component, 2); SetMessageLinePGM(NUL_STR, 3); - SetMessageLinePGM(GET_TEXT(MSG_PLEASE_RESET), 4); + SetMessageLine(GET_TEXT_F(MSG_PLEASE_RESET), 4); dgus_display.PlaySound(3, 1, 200); @@ -170,14 +165,14 @@ void DGUSScreenHandler::PrinterKilled(FSTR_P const error, FSTR_P const component } void DGUSScreenHandler::UserConfirmRequired(const char * const msg) { - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 1); - dgus_screen_handler.SetMessageLine(msg, 2); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 3); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 4); + SetMessageLinePGM(NUL_STR, 1); + SetMessageLine(msg, 2); + SetMessageLinePGM(NUL_STR, 3); + SetMessageLinePGM(NUL_STR, 4); dgus_display.PlaySound(3); - dgus_screen_handler.ShowWaitScreen(current_screen, true); + ShowWaitScreen(current_screen, true); } void DGUSScreenHandler::SettingsReset() { @@ -189,7 +184,7 @@ void DGUSScreenHandler::SettingsReset() { Ready(); } - SetStatusMessage(F("EEPROM reset")); + SetStatusMessage(GET_TEXT_F(DGUS_MSG_RESET_EEPROM)); } void DGUSScreenHandler::StoreSettings(char *buff) { @@ -223,12 +218,12 @@ void DGUSScreenHandler::LoadSettings(const char *buff) { void DGUSScreenHandler::ConfigurationStoreWritten(bool success) { if (!success) - SetStatusMessage(F("EEPROM write failed")); + SetStatusMessage(GET_TEXT_F(DGUS_MSG_WRITE_EEPROM_FAILED)); } void DGUSScreenHandler::ConfigurationStoreRead(bool success) { if (!success) { - SetStatusMessage(F("EEPROM read failed")); + SetStatusMessage(GET_TEXT_F(DGUS_MSG_READ_EEPROM_FAILED)); } else if (!settings_ready) { settings_ready = true; @@ -283,7 +278,8 @@ void DGUSScreenHandler::PrintTimerStopped() { void DGUSScreenHandler::FilamentRunout(const ExtUI::extruder_t extruder) { char buffer[21]; - snprintf_P(buffer, sizeof(buffer), PSTR("Filament runout E%d"), extruder); + + snprintf_P(buffer, sizeof(buffer), GET_TEXT(DGUS_MSG_FILAMENT_RUNOUT), extruder); SetStatusMessage(buffer); @@ -346,7 +342,7 @@ void DGUSScreenHandler::FilamentRunout(const ExtUI::extruder_t extruder) { #endif // HAS_PID_HEATING -void DGUSScreenHandler::SetMessageLine(const char* msg, uint8_t line) { +void DGUSScreenHandler::SetMessageLine(const char * const msg, const uint8_t line) { switch (line) { default: return; case 1: @@ -364,7 +360,7 @@ void DGUSScreenHandler::SetMessageLine(const char* msg, uint8_t line) { } } -void DGUSScreenHandler::SetMessageLinePGM(PGM_P msg, uint8_t line) { +void DGUSScreenHandler::SetMessageLinePGM(PGM_P const msg, const uint8_t line) { switch (line) { default: return; case 1: @@ -394,7 +390,7 @@ void DGUSScreenHandler::SetStatusMessage(FSTR_P const fmsg, const millis_t durat status_expire = (duration > 0 ? ExtUI::safe_millis() + duration : 0); } -void DGUSScreenHandler::ShowWaitScreen(DGUS_Screen return_screen, bool has_continue) { +void DGUSScreenHandler::ShowWaitScreen(const DGUS_Screen return_screen, const bool has_continue/*=false*/) { if (return_screen != DGUS_Screen::WAIT) { wait_return_screen = return_screen; } @@ -403,6 +399,14 @@ void DGUSScreenHandler::ShowWaitScreen(DGUS_Screen return_screen, bool has_conti TriggerScreenChange(DGUS_Screen::WAIT); } +void DGUSScreenHandler::ShowWaitScreen(FSTR_P const msg, const DGUS_Screen return_screen, const bool has_continue/*=false*/) { + SetMessageLinePGM(NUL_STR, 1); + SetMessageLine(msg, 2); + SetMessageLinePGM(NUL_STR, 3); + SetMessageLinePGM(NUL_STR, 4); + ShowWaitScreen(return_screen, has_continue); +} + DGUS_Screen DGUSScreenHandler::GetCurrentScreen() { return current_screen; } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h index 6a00a4f72a..e872e8a823 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h @@ -69,13 +69,15 @@ public: static void PidTuning(const ExtUI::result_t rst); #endif - static void SetMessageLine(const char* msg, uint8_t line); - static void SetMessageLinePGM(PGM_P msg, uint8_t line); + static void SetMessageLine(const char * const msg, const uint8_t line); + static void SetMessageLinePGM(PGM_P const msg, const uint8_t line); + static void SetMessageLine(FSTR_P const msg, const uint8_t line) { SetMessageLinePGM(FTOP(msg), line); } static void SetStatusMessage(const char* msg, const millis_t duration=DGUS_STATUS_EXPIRATION_MS); static void SetStatusMessage(FSTR_P const msg, const millis_t duration=DGUS_STATUS_EXPIRATION_MS); - static void ShowWaitScreen(DGUS_Screen return_screen, bool has_continue=false); + static void ShowWaitScreen(const DGUS_Screen return_screen, const bool has_continue=false); + static void ShowWaitScreen(FSTR_P const msg, const DGUS_Screen return_screen, const bool has_continue=false); static DGUS_Screen GetCurrentScreen(); static void TriggerScreenChange(DGUS_Screen screen); @@ -140,12 +142,7 @@ private: extern DGUSScreenHandler dgus_screen_handler; -extern const char DGUS_MSG_HOMING_REQUIRED[], - DGUS_MSG_BUSY[], - DGUS_MSG_UNDEF[], - DGUS_MSG_HOMING[], - DGUS_MSG_FW_OUTDATED[], - DGUS_MSG_ABL_REQUIRED[]; +extern const char DGUS_MSG_UNDEF[]; extern const char DGUS_CMD_HOME[], DGUS_CMD_EEPROM_SAVE[]; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp index 4caccc0717..3b243e4711 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp @@ -68,7 +68,7 @@ bool DGUSSetupHandler::LevelingMenu() { ExtUI::setLevelingActive(dgus_screen_handler.leveling_active); if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return false; } @@ -80,11 +80,7 @@ bool DGUSSetupHandler::LevelingMenu() { return true; } - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 1); - dgus_screen_handler.SetMessageLinePGM(DGUS_MSG_HOMING, 2); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 3); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 4); - dgus_screen_handler.ShowWaitScreen(DGUS_Screen::LEVELING_MENU); + dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_MENU); queue.enqueue_now_P(DGUS_CMD_HOME); @@ -99,15 +95,11 @@ bool DGUSSetupHandler::LevelingManual() { } if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return false; } - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 1); - dgus_screen_handler.SetMessageLinePGM(DGUS_MSG_HOMING, 2); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 3); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 4); - dgus_screen_handler.ShowWaitScreen(DGUS_Screen::LEVELING_MANUAL); + dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_MANUAL); queue.enqueue_now_P(DGUS_CMD_HOME); @@ -118,7 +110,7 @@ bool DGUSSetupHandler::LevelingOffset() { dgus_screen_handler.offset_steps = DGUS_Data::StepSize::MMP1; if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return false; } @@ -136,11 +128,7 @@ bool DGUSSetupHandler::LevelingOffset() { return true; } - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 1); - dgus_screen_handler.SetMessageLinePGM(DGUS_MSG_HOMING, 2); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 3); - dgus_screen_handler.SetMessageLinePGM(NUL_STR, 4); - dgus_screen_handler.ShowWaitScreen(DGUS_Screen::LEVELING_OFFSET); + dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_OFFSET); queue.enqueue_now_P(DGUS_CMD_HOME); @@ -175,7 +163,7 @@ bool DGUSSetupHandler::Move() { dgus_screen_handler.move_steps = DGUS_Data::StepSize::MM10; if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return false; } @@ -186,7 +174,7 @@ bool DGUSSetupHandler::Gcode() { ZERO(dgus_screen_handler.gcode); if (dgus_display.gui_version < 0x30 || dgus_display.os_version < 0x21) { - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_FW_OUTDATED)); + dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_FW_OUTDATED)); return false; } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp index 39b3f57e96..eb1b3aa510 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp @@ -188,7 +188,7 @@ void DGUSTxHandler::PositionZ(DGUS_VP &vp) { dgus_display.Write((uint16_t)vp.addr, Swap16(data)); } -void DGUSTxHandler::Ellapsed(DGUS_VP &vp) { +void DGUSTxHandler::Elapsed(DGUS_VP &vp) { char buffer[21]; duration_t(print_job_timer.duration()).toString(buffer); diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h index aad73dd5d6..161d73f813 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h @@ -37,7 +37,7 @@ namespace DGUSTxHandler { #endif void PositionZ(DGUS_VP &); - void Ellapsed(DGUS_VP &); + void Elapsed(DGUS_VP &); void Percent(DGUS_VP &); void StatusIcons(DGUS_VP &); diff --git a/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h b/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h index 3fd6d16f5b..39cc040f19 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h @@ -108,7 +108,7 @@ enum class DGUS_Addr : uint16_t { SD_ScrollIcons = 0x30C5, // Bits: DGUS_Data::ScrollIcon SD_SelectedFileName = 0x30C6, // 0x30C6 - 0x30E5 STATUS_PositionZ = 0x30E6, // Type: Fixed point, 1 decimal (16 bits signed) - STATUS_Ellapsed = 0x30E7, // 0x30E7 - 0x30F5 + STATUS_Elapsed = 0x30E7, // 0x30E7 - 0x30F5 STATUS_Percent = 0x30F6, // Type: Integer (16 bits unsigned) STATUS_Icons = 0x30F7, // Bits: DGUS_Data::StatusIcon ADJUST_Feedrate = 0x30F8, // Type: Integer (16 bits signed) diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp index 855c0bccfa..706038f0ed 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp @@ -56,7 +56,7 @@ constexpr DGUS_Addr LIST_PRINT_STATUS[] PROGMEM = { DGUS_Addr::TEMP_Current_Bed, DGUS_Addr::TEMP_Target_Bed, DGUS_Addr::STATUS_PositionZ, - DGUS_Addr::STATUS_Ellapsed, + DGUS_Addr::STATUS_Elapsed, DGUS_Addr::STATUS_Percent, DGUS_Addr::STATUS_Icons, (DGUS_Addr)0 @@ -78,7 +78,7 @@ constexpr DGUS_Addr LIST_PRINT_FINISHED[] PROGMEM = { DGUS_Addr::TEMP_Current_Bed, DGUS_Addr::TEMP_Target_Bed, DGUS_Addr::STATUS_PositionZ, - DGUS_Addr::STATUS_Ellapsed, + DGUS_Addr::STATUS_Elapsed, DGUS_Addr::STATUS_Percent_Complete, (DGUS_Addr)0 }; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp index 4370a06d04..4def1c48f8 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp @@ -177,12 +177,12 @@ const struct DGUS_VP vp_list[] PROGMEM = { VP_HELPER_TX_AUTO(DGUS_Addr::STATUS_PositionZ, nullptr, &DGUSTxHandler::PositionZ), - VP_HELPER(DGUS_Addr::STATUS_Ellapsed, + VP_HELPER(DGUS_Addr::STATUS_Elapsed, DGUS_ELAPSED_LEN, VPFLAG_AUTOUPLOAD, nullptr, nullptr, - &DGUSTxHandler::Ellapsed), + &DGUSTxHandler::Elapsed), VP_HELPER_TX_AUTO(DGUS_Addr::STATUS_Percent, nullptr, &DGUSTxHandler::Percent), diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 106d73d35f..5012f8c496 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -883,6 +883,30 @@ namespace Language_en { LSTR MSG_PID_F = _UxGT("PID-F"); LSTR MSG_PID_F_E = _UxGT("PID-F *"); LSTR MSG_BACKLASH_N = _UxGT("@"); + + // DGUS-Specific message strings, not used elsewhere + LSTR DGUS_MSG_NOT_WHILE_PRINTING = _UxGT("Not allowed during print"); + LSTR DGUS_MSG_NOT_WHILE_IDLE = _UxGT("Not allowed while idle"); + LSTR DGUS_MSG_NO_FILE_SELECTED = _UxGT("No file selected"); + LSTR DGUS_MSG_TEMP_TOO_LOW = _UxGT("Temperature too low"); + LSTR DGUS_MSG_EXECUTING_COMMAND = _UxGT("Executing command..."); + LSTR DGUS_MSG_BED_PID_DISABLED = _UxGT("Bed PID disabled"); + LSTR DGUS_MSG_PID_DISABLED = _UxGT("PID disabled"); + LSTR DGUS_MSG_PID_AUTOTUNING = _UxGT("PID autotuning..."); + LSTR DGUS_MSG_INVALID_RECOVERY_DATA = _UxGT("Invalid recovery data"); + + LSTR DGUS_MSG_HOMING_REQUIRED = _UxGT("Homing required"); + LSTR DGUS_MSG_BUSY = _UxGT("Busy"); + LSTR DGUS_MSG_HOMING = _UxGT("Homing..."); + LSTR DGUS_MSG_FW_OUTDATED = _UxGT("DWIN GUI/OS update required"); + LSTR DGUS_MSG_ABL_REQUIRED = _UxGT("Auto bed leveling required"); + LSTR DGUS_MSG_PROBING_FAILED = _UxGT("Probing failed"); + LSTR DGUS_MSG_PROBING_SUCCESS = _UxGT("Probing successful"); + LSTR DGUS_MSG_RESET_EEPROM = _UxGT("EEPROM reset"); + LSTR DGUS_MSG_WRITE_EEPROM_FAILED = _UxGT("EEPROM write failed"); + LSTR DGUS_MSG_READ_EEPROM_FAILED = _UxGT("EEPROM read failed"); + LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Filament runout E%d"); + } #if FAN_COUNT == 1 diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h index cfd6c81d59..1128328391 100644 --- a/Marlin/src/lcd/language/language_fr.h +++ b/Marlin/src/lcd/language/language_fr.h @@ -629,6 +629,29 @@ namespace Language_fr { LSTR MSG_SD_CARD = _UxGT("Carte SD"); LSTR MSG_USB_DISK = _UxGT("Clé USB"); + // DGUS-Specific message strings, not used elsewhere + LSTR DGUS_MSG_NOT_WHILE_PRINTING = _UxGT("Impossible pendant une impression"); + LSTR DGUS_MSG_NOT_WHILE_IDLE = _UxGT("Impossible tant que l'imprimante est en attente"); + LSTR DGUS_MSG_NO_FILE_SELECTED = _UxGT("Aucun fichier selectionne"); + LSTR DGUS_MSG_TEMP_TOO_LOW = _UxGT("Temperature trop basse"); + LSTR DGUS_MSG_EXECUTING_COMMAND = _UxGT("Execution de la commande..."); + LSTR DGUS_MSG_BED_PID_DISABLED = _UxGT("Bed PID desactive"); + LSTR DGUS_MSG_PID_DISABLED = _UxGT("PID desactive"); + LSTR DGUS_MSG_PID_AUTOTUNING = _UxGT("Autocalibrage du PID..."); + LSTR DGUS_MSG_INVALID_RECOVERY_DATA = _UxGT("Donnees de recuperation non valides"); + + LSTR DGUS_MSG_HOMING_REQUIRED = _UxGT("Retour a l'origine necessaire..."); + LSTR DGUS_MSG_BUSY = _UxGT("Occupe"); + LSTR DGUS_MSG_HOMING = _UxGT("Retour a l'origine..."); + LSTR DGUS_MSG_FW_OUTDATED = _UxGT("Mise a jour DWIN GUI/OS necessaire"); + LSTR DGUS_MSG_ABL_REQUIRED = _UxGT("Nivellement du bed necessaire"); + LSTR DGUS_MSG_PROBING_FAILED = _UxGT("Echec du nivellement..."); + LSTR DGUS_MSG_PROBING_SUCCESS = _UxGT("Nivellement realise avec succes"); + LSTR DGUS_MSG_RESET_EEPROM = _UxGT("Reinitialisation de l'EEPROM"); + LSTR DGUS_MSG_WRITE_EEPROM_FAILED = _UxGT("Echec ecriture de l'EEPROM"); + LSTR DGUS_MSG_READ_EEPROM_FAILED = _UxGT("Echec lecture de l'EEPROM"); + LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Sortie de filament E%d"); + LSTR MSG_SHORT_DAY = _UxGT("j"); // One character only LSTR MSG_SHORT_HOUR = _UxGT("h"); // One character only LSTR MSG_SHORT_MINUTE = _UxGT("m"); // One character only diff --git a/Marlin/src/lcd/language/language_fr_na.h b/Marlin/src/lcd/language/language_fr_na.h new file mode 100644 index 0000000000..48030dd031 --- /dev/null +++ b/Marlin/src/lcd/language/language_fr_na.h @@ -0,0 +1,658 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * French (without accent for DWIN T5UID1) + * + * LCD Menu Messages + * See also https://marlinfw.org/docs/development/lcd_language.html + */ + +#define DISPLAY_CHARSET_ISO10646_1 +#define NOT_EXTENDED_ISO10646_1_5X7 + +namespace Language_fr_na { + using namespace Language_en; // Inherit undefined strings from English + + LSTR LANGUAGE = _UxGT("Francais"); + + LSTR WELCOME_MSG = MACHINE_NAME _UxGT(" prete."); + LSTR MSG_YES = _UxGT("Oui"); + LSTR MSG_NO = _UxGT("Non"); + LSTR MSG_BACK = _UxGT("Retour"); + LSTR MSG_MEDIA_ABORTING = _UxGT("Annulation..."); + LSTR MSG_MEDIA_INSERTED = _UxGT("Media insere"); + LSTR MSG_MEDIA_REMOVED = _UxGT("Media retire"); + LSTR MSG_MEDIA_WAITING = _UxGT("Attente media"); + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Err lecture media"); + LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB debranche"); + LSTR MSG_MEDIA_USB_FAILED = _UxGT("Erreur media USB"); + LSTR MSG_LCD_ENDSTOPS = _UxGT("Butees"); + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Butees SW"); + LSTR MSG_MAIN = _UxGT("Menu principal"); + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Config. avancee"); + LSTR MSG_CONFIGURATION = _UxGT("Configuration"); + LSTR MSG_RUN_AUTO_FILES = _UxGT("Exec. auto.gcode"); + LSTR MSG_DISABLE_STEPPERS = _UxGT("Arreter moteurs"); + LSTR MSG_DEBUG_MENU = _UxGT("Menu debug"); + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test barre progress."); + LSTR MSG_HOMING = _UxGT("Origine"); + LSTR MSG_AUTO_HOME = _UxGT("Origine auto"); + LSTR MSG_AUTO_HOME_A = _UxGT("Origine @ auto"); + LSTR MSG_AUTO_HOME_X = _UxGT("Origine X auto"); + LSTR MSG_AUTO_HOME_Y = _UxGT("Origine Y auto"); + LSTR MSG_AUTO_HOME_Z = _UxGT("Origine Z auto"); + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Align. Z auto"); + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Origine XYZ..."); + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Clic pour commencer"); + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Point suivant"); + LSTR MSG_LEVEL_BED_DONE = _UxGT("Mise a niveau OK!"); + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Hauteur lissee"); + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Regl. decal origine"); + LSTR MSG_HOME_OFFSET_X = _UxGT("Decal. origine X"); + LSTR MSG_HOME_OFFSET_Y = _UxGT("Decal. origine Y"); + LSTR MSG_HOME_OFFSET_Z = _UxGT("Decal. origine Z"); + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Decalages appliques"); + LSTR MSG_TRAMMING_WIZARD = _UxGT("Assistant Molettes"); + LSTR MSG_SELECT_ORIGIN = _UxGT("Molette du lit"); // Not a selection of the origin + LSTR MSG_LAST_VALUE_SP = _UxGT("Ecart origine "); + #if HAS_PREHEAT + LSTR MSG_PREHEAT_1 = _UxGT("Prechauffage ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Prechauffage ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" buse"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" buse ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" Tout"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" lit"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Regler prech. ") PREHEAT_1_LABEL; + + LSTR MSG_PREHEAT_M = _UxGT("Prechauffage $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Prechauffage $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Prech. $ buse"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Prech. $ buse ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Prech. $ Tout"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Prech. $ lit"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Regler prech. $"); + #endif + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Prechauf. perso"); + LSTR MSG_COOLDOWN = _UxGT("Refroidir"); + LSTR MSG_LASER_MENU = _UxGT("Controle Laser"); + LSTR MSG_LASER_POWER = _UxGT("Puissance"); + LSTR MSG_SPINDLE_REVERSE = _UxGT("Inverser broches"); + LSTR MSG_SWITCH_PS_ON = _UxGT("Allumer alim."); + LSTR MSG_SWITCH_PS_OFF = _UxGT("Eteindre alim."); + LSTR MSG_EXTRUDE = _UxGT("Extrusion"); + LSTR MSG_RETRACT = _UxGT("Retractation"); + LSTR MSG_MOVE_AXIS = _UxGT("Deplacer un axe"); + LSTR MSG_BED_LEVELING = _UxGT("Regler Niv. lit"); + LSTR MSG_LEVEL_BED = _UxGT("Niveau du lit"); + LSTR MSG_BED_TRAMMING = _UxGT("Niveau des coins"); + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Relever le coin jusqu'a la sonde"); + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Coins dans la tolerance. Niveau lit."); + LSTR MSG_NEXT_CORNER = _UxGT("Coin suivant"); + LSTR MSG_MESH_EDITOR = _UxGT("Modif. maille"); // 13 car. max + LSTR MSG_EDIT_MESH = _UxGT("Modifier grille"); + LSTR MSG_EDITING_STOPPED = _UxGT("Modification arretee"); + LSTR MSG_PROBING_POINT = _UxGT("Mesure point"); + LSTR MSG_MESH_X = _UxGT("Index X"); + LSTR MSG_MESH_Y = _UxGT("Index Y"); + LSTR MSG_MESH_EDIT_Z = _UxGT("Valeur Z"); + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Commandes perso"); + + LSTR MSG_LCD_TILTING_MESH = _UxGT("Mesure point"); + LSTR MSG_M48_TEST = _UxGT("Ecart sonde Z M48"); + LSTR MSG_M48_DEVIATION = _UxGT("Ecart"); + LSTR MSG_M48_POINT = _UxGT("Point M48"); + LSTR MSG_IDEX_MENU = _UxGT("Mode IDEX"); + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplication"); + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copie miroir"); + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Controle complet"); + LSTR MSG_OFFSETS_MENU = _UxGT("Offsets Outil"); + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("Buse 2 Z"); + LSTR MSG_HOTEND_OFFSET_A = _UxGT("Buse 2 @"); + LSTR MSG_G26_HEATING_BED = _UxGT("G26: Chauffage du lit"); + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("Buse en chauffe..."); + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Amorce manuelle..."); + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Amorce longueur fixe"); + LSTR MSG_G26_PRIME_DONE = _UxGT("Amorce terminee"); + LSTR MSG_G26_CANCELED = _UxGT("G26 annule"); + LSTR MSG_G26_LEAVING = _UxGT("Sortie G26"); + LSTR MSG_UBL_DOING_G29 = _UxGT("G29 en cours"); + LSTR MSG_UBL_TOOLS = _UxGT("Outils UBL"); + LSTR MSG_UBL_LEVEL_BED = _UxGT("Niveau lit unifie"); + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Maillage manuel"); + LSTR MSG_UBL_BC_INSERT = _UxGT("Poser cale & mesurer"); + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Mesure"); + LSTR MSG_UBL_BC_REMOVE = _UxGT("oter et mesurer lit"); + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Aller au suivant"); + LSTR MSG_UBL_ACTIVATE_MESH = _UxGT("Activer l'UBL"); + LSTR MSG_UBL_DEACTIVATE_MESH = _UxGT("Desactiver l'UBL"); + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Temperature lit"); + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Temperature lit"); + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temperature buse"); + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temperature buse"); + LSTR MSG_UBL_MESH_EDIT = _UxGT("Modifier grille"); + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Modif. grille perso"); + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Reglage fin"); + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Terminer"); + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Creer la grille"); + #if HAS_PREHEAT + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Creer grille $"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Impr. grille $"); + #endif + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Creer grille ..."); + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Mesure a froid"); + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajuster haut. couche"); + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Hauteur (x0.1mm)"); + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Verifier grille"); + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Impr. grille ..."); + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Continuer grille"); + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Niveau par mailles"); + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Niveau a 3 points"); + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Niveau par grille"); + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Effectuer mesures"); + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Points lateraux"); + LSTR MSG_UBL_MAP_TYPE = _UxGT("Type de carte"); + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Exporter grille"); + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Export pour hote"); + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Export en CSV"); + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Export sauvegarde"); + LSTR MSG_UBL_INFO_UBL = _UxGT("Infos debug UBL"); + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Nombre de points"); + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Remplissage manuel"); + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Remplissage auto"); + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Remplissage grille"); + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Tout effacer"); + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Effacer le + pres"); + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Reglage fin (tous)"); + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Reglage fin + pres"); + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Stockage grille"); + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Slot memoire"); + LSTR MSG_UBL_LOAD_MESH = _UxGT("Charger la grille"); + LSTR MSG_UBL_SAVE_MESH = _UxGT("Stocker la grille"); + LSTR MSG_MESH_LOADED = _UxGT("Grille %i chargee"); + LSTR MSG_MESH_SAVED = _UxGT("Grille %i enreg."); + LSTR MSG_UBL_NO_STORAGE = _UxGT("Pas de memoire"); + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Err: Enreg. UBL"); + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Err: Ouvrir UBL"); + LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Offset: "); + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Decal. Z arrete"); + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Assistant UBL"); + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Mesure a froid"); + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Completer auto."); + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Verifier grille"); + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Reglage fin"); + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Verifier grille"); + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Reglage fin"); + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Stocker grille"); + + LSTR MSG_LED_CONTROL = _UxGT("Controle LED"); + LSTR MSG_LEDS = _UxGT("Lumiere"); + LSTR MSG_LED_PRESETS = _UxGT("Preregl. LED"); + LSTR MSG_SET_LEDS_RED = _UxGT("Rouge"); + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Jaune"); + LSTR MSG_SET_LEDS_GREEN = _UxGT("Vert"); + LSTR MSG_SET_LEDS_BLUE = _UxGT("Bleu"); + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violet"); + LSTR MSG_SET_LEDS_WHITE = _UxGT("Blanc"); + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Defaut"); + LSTR MSG_CUSTOM_LEDS = _UxGT("LEDs perso."); + LSTR MSG_INTENSITY_R = _UxGT("Intensite rouge"); + LSTR MSG_INTENSITY_G = _UxGT("Intensite vert"); + LSTR MSG_INTENSITY_B = _UxGT("Intensite bleu"); + LSTR MSG_INTENSITY_W = _UxGT("Intensite blanc"); + LSTR MSG_LED_BRIGHTNESS = _UxGT("Luminosite"); + + LSTR MSG_MOVING = _UxGT("Deplacement..."); + LSTR MSG_FREE_XY = _UxGT("Debloquer XY"); + LSTR MSG_MOVE_X = _UxGT("Deplacer X"); + LSTR MSG_MOVE_Y = _UxGT("Deplacer Y"); + LSTR MSG_MOVE_Z = _UxGT("Deplacer Z"); + LSTR MSG_MOVE_N = _UxGT("Deplacer @"); + LSTR MSG_MOVE_E = _UxGT("Extruder"); + LSTR MSG_MOVE_EN = _UxGT("Extruder *"); + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Buse trop froide"); + LSTR MSG_MOVE_N_MM = _UxGT("Deplacer $mm"); + LSTR MSG_MOVE_01MM = _UxGT("Deplacer 0.1mm"); + LSTR MSG_MOVE_1MM = _UxGT("Deplacer 1mm"); + LSTR MSG_MOVE_10MM = _UxGT("Deplacer 10mm"); + LSTR MSG_MOVE_50MM = _UxGT("Deplacer 50mm"); + LSTR MSG_MOVE_100MM = _UxGT("Deplacer 100mm"); + LSTR MSG_MOVE_0001IN = _UxGT("Deplacer 0.001\""); + LSTR MSG_MOVE_001IN = _UxGT("Deplacer 0.01\""); + LSTR MSG_MOVE_01IN = _UxGT("Deplacer 0.1\""); + LSTR MSG_MOVE_05IN = _UxGT("Deplacer 0.5\""); + LSTR MSG_MOVE_1IN = _UxGT("Deplacer 1\""); + LSTR MSG_SPEED = _UxGT("Vitesse"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Lit Z"); + LSTR MSG_NOZZLE = _UxGT("Buse"); + LSTR MSG_NOZZLE_N = _UxGT("Buse ~"); + LSTR MSG_BED = _UxGT("Lit"); + LSTR MSG_CHAMBER = _UxGT("Caisson"); + LSTR MSG_FAN_SPEED = _UxGT("Vit. ventil. "); // 15 car. max + LSTR MSG_FAN_SPEED_N = _UxGT("Vit. ventil. ~"); + LSTR MSG_STORED_FAN_N = _UxGT("Vit. enreg. ~"); + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra ventil. "); + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra ventil. ~"); + + LSTR MSG_FLOW = _UxGT("Flux"); + LSTR MSG_FLOW_N = _UxGT("Flux ~"); + LSTR MSG_CONTROL = _UxGT("Controler"); + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Facteur"); + LSTR MSG_AUTOTEMP = _UxGT("Temp. Auto."); + LSTR MSG_LCD_ON = _UxGT("Marche"); + LSTR MSG_LCD_OFF = _UxGT("Arret"); + LSTR MSG_PID_AUTOTUNE = _UxGT("PID Autotune"); + LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Autotune *"); + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Tuning PID termine"); + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Echec Autotune! E incorrect"); + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Echec Autotune! Temp. trop haute"); + LSTR MSG_PID_TIMEOUT = _UxGT("Echec Autotune! Oper. expiree"); + LSTR MSG_SELECT_E = _UxGT("Selectionner *"); + LSTR MSG_ACC = _UxGT("Acceleration"); + LSTR MSG_JERK = _UxGT("Jerk"); + LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT(" jerk"); + LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT(" jerk"); + LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT(" jerk"); + LSTR MSG_VN_JERK = _UxGT("V@ jerk"); + LSTR MSG_VE_JERK = _UxGT("Ve jerk"); + LSTR MSG_MAX_SPEED = _UxGT("Max Velocite"); + LSTR MSG_VMAX_A = _UxGT("Vit. Max ") STR_A; + LSTR MSG_VMAX_B = _UxGT("Vit. Max ") STR_B; + LSTR MSG_VMAX_C = _UxGT("Vit. Max ") STR_C; + LSTR MSG_VMAX_N = _UxGT("Vit. Max @"); + LSTR MSG_VMAX_E = _UxGT("Vit. Max E"); + LSTR MSG_VMAX_EN = _UxGT("Vit. Max *"); + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Deviat. jonct."); + LSTR MSG_VMIN = _UxGT("Vit. Min"); + LSTR MSG_VTRAV_MIN = _UxGT("Vmin course"); + LSTR MSG_ACCELERATION = _UxGT("Acceleration"); + LSTR MSG_AMAX_A = _UxGT("Max Accel. ") STR_A; + LSTR MSG_AMAX_B = _UxGT("Max Accel. ") STR_B; + LSTR MSG_AMAX_C = _UxGT("Max Accel. ") STR_C; + LSTR MSG_AMAX_N = _UxGT("Max Accel. @"); + LSTR MSG_AMAX_E = _UxGT("Max Accel. E"); + LSTR MSG_AMAX_EN = _UxGT("Max Accel. *"); + LSTR MSG_A_RETRACT = _UxGT("Acc.retraction"); + LSTR MSG_A_TRAVEL = _UxGT("Acc.course"); + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Frequence max"); + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Vitesse min"); + LSTR MSG_STEPS_PER_MM = _UxGT("Pas/mm"); + LSTR MSG_A_STEPS = STR_A _UxGT(" pas/mm"); + LSTR MSG_B_STEPS = STR_B _UxGT(" pas/mm"); + LSTR MSG_C_STEPS = STR_C _UxGT(" pas/mm"); + LSTR MSG_N_STEPS = _UxGT("@ pas/mm"); + LSTR MSG_E_STEPS = _UxGT("E pas/mm"); + LSTR MSG_EN_STEPS = _UxGT("* pas/mm"); + LSTR MSG_TEMPERATURE = _UxGT("Temperature"); + LSTR MSG_MOTION = _UxGT("Mouvement"); + LSTR MSG_FILAMENT = _UxGT("Filament"); + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm") SUPERSCRIPT_THREE; + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("Limite en mm") SUPERSCRIPT_THREE; + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("Limite *"); + LSTR MSG_FILAMENT_DIAM = _UxGT("Diametre fil."); + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diametre fil. *"); + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Retrait mm"); + LSTR MSG_FILAMENT_LOAD = _UxGT("Charger mm"); + LSTR MSG_ADVANCE_K = _UxGT("Avance K"); + LSTR MSG_ADVANCE_K_E = _UxGT("Avance K *"); + LSTR MSG_BRIGHTNESS = _UxGT("Luminosite LCD"); + LSTR MSG_CONTRAST = _UxGT("Contraste LCD"); + LSTR MSG_SCREEN_TIMEOUT = _UxGT("Veille LCD (m)"); + LSTR MSG_BRIGHTNESS_OFF = _UxGT("Eteindre l'ecran LCD"); + LSTR MSG_STORE_EEPROM = _UxGT("Enregistrer config."); + LSTR MSG_LOAD_EEPROM = _UxGT("Charger config."); + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restaurer defauts"); + LSTR MSG_INIT_EEPROM = _UxGT("Initialiser EEPROM"); + LSTR MSG_SETTINGS_STORED = _UxGT("Config. enregistree"); + LSTR MSG_MEDIA_UPDATE = _UxGT("MaJ Firmware SD"); + LSTR MSG_RESET_PRINTER = _UxGT("RaZ imprimante"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualiser"); + LSTR MSG_INFO_SCREEN = _UxGT("Surveiller"); + LSTR MSG_PREPARE = _UxGT("Preparer"); + LSTR MSG_TUNE = _UxGT("Regler"); + LSTR MSG_START_PRINT = _UxGT("Demarrer impression"); + LSTR MSG_BUTTON_NEXT = _UxGT("Suivant"); + LSTR MSG_BUTTON_INIT = _UxGT("Init."); + LSTR MSG_BUTTON_STOP = _UxGT("Stop"); + LSTR MSG_BUTTON_PRINT = _UxGT("Imprimer"); + LSTR MSG_BUTTON_RESET = _UxGT("Reset"); + LSTR MSG_BUTTON_IGNORE = _UxGT("Ignorer"); + LSTR MSG_BUTTON_CANCEL = _UxGT("Annuler"); + LSTR MSG_BUTTON_DONE = _UxGT("Termine"); + LSTR MSG_BUTTON_BACK = _UxGT("Retour"); + LSTR MSG_BUTTON_PROCEED = _UxGT("Proceder"); + LSTR MSG_BUTTON_SKIP = _UxGT("Passer"); + LSTR MSG_PAUSING = _UxGT("Mise en pause..."); + LSTR MSG_PAUSE_PRINT = _UxGT("Pause impression"); + LSTR MSG_RESUME_PRINT = _UxGT("Reprendre impr."); + LSTR MSG_STOP_PRINT = _UxGT("Arreter impr."); + LSTR MSG_PRINTING_OBJECT = _UxGT("Impression objet"); + LSTR MSG_CANCEL_OBJECT = _UxGT("Annuler objet"); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Annuler objet ="); + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Recup. coup."); + LSTR MSG_MEDIA_MENU = _UxGT("Impression SD"); + LSTR MSG_NO_MEDIA = _UxGT("Pas de media"); + LSTR MSG_DWELL = _UxGT("Repos..."); + LSTR MSG_USERWAIT = _UxGT("Attente utilis."); + LSTR MSG_PRINT_PAUSED = _UxGT("Impr. en pause"); + LSTR MSG_PRINTING = _UxGT("Impression"); + LSTR MSG_PRINT_ABORTED = _UxGT("Impr. annulee"); + LSTR MSG_NO_MOVE = _UxGT("Moteurs bloques"); + LSTR MSG_KILLED = _UxGT("KILLED"); + LSTR MSG_STOPPED = _UxGT("STOPPE"); + LSTR MSG_CONTROL_RETRACT = _UxGT("Retractation mm"); + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Ech. retr. mm"); + LSTR MSG_CONTROL_RETRACTF = _UxGT("Vit. retract") LCD_STR_DEGREE; + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Saut Z mm"); + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Ret.reprise mm"); + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Ech.reprise mm"); + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("V.ret. reprise"); + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("V.ech. reprise"); + LSTR MSG_AUTORETRACT = _UxGT("Retraction auto"); + LSTR MSG_TOOL_CHANGE = _UxGT("Changement outil"); + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Augmenter Z"); + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Vitesse primaire"); + LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Purge Retract"); + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Vitesse retract") LCD_STR_DEGREE; + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Garer Extrudeur"); + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Vitesse reprise"); + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Vit. ventil."); + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Temps ventil."); + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto ON"); + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto OFF"); + LSTR MSG_TOOL_MIGRATION = _UxGT("Migration d'outil"); + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Migration auto"); + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Extrudeur Final"); + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migrer vers *"); + LSTR MSG_NOZZLE_STANDBY = _UxGT("Attente buse"); + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Longueur retrait"); + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Longueur Extra"); + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Longueur de purge"); + LSTR MSG_FILAMENTCHANGE = _UxGT("Changer filament"); + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Changer filament *"); + LSTR MSG_FILAMENTLOAD = _UxGT("Charger filament"); + LSTR MSG_FILAMENTLOAD_E = _UxGT("Charger filament *"); + LSTR MSG_FILAMENTUNLOAD = _UxGT("Retrait filament"); + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Retrait filament *"); + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Retirer tout"); + LSTR MSG_ATTACH_MEDIA = _UxGT("Charger le media"); + LSTR MSG_CHANGE_MEDIA = _UxGT("Actualiser media"); + LSTR MSG_RELEASE_MEDIA = _UxGT("Retirer le media"); + LSTR MSG_ZPROBE_OUT = _UxGT("Sonde Z hors lit"); + LSTR MSG_SKEW_FACTOR = _UxGT("Facteur ecart"); + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Self-Test"); + LSTR MSG_BLTOUCH_RESET = _UxGT("Reset"); + LSTR MSG_BLTOUCH_STOW = _UxGT("Ranger"); + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Deployer"); + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Mode SW"); + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Mode 5V"); + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Mode OD"); + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Appliquer Mode"); + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Mise en 5V"); + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Mise en OD"); + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Afficher Mode"); + LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); + LSTR MSG_TOUCHMI_INIT = _UxGT("Init. TouchMI"); + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test decalage Z"); + LSTR MSG_TOUCHMI_SAVE = _UxGT("Sauvegarde"); + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Deployer TouchMI"); + LSTR MSG_MANUAL_DEPLOY = _UxGT("Deployer Sonde Z"); + LSTR MSG_MANUAL_STOW = _UxGT("Ranger Sonde Z"); + LSTR MSG_HOME_FIRST = _UxGT("Origine %s Premier"); + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Position sonde Z"); + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Decalage X"); + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Decalage Y"); + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Decalage Z"); + LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); + LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); + LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); + LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); + LSTR MSG_ENDSTOP_ABORT = _UxGT("Butee abandon"); + LSTR MSG_HEATING_FAILED_LCD = _UxGT("Err de chauffe"); + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err TEMP. REDONDANTE"); + LSTR MSG_THERMAL_RUNAWAY = _UxGT("Err THERMIQUE"); + LSTR MSG_ERR_MAXTEMP = _UxGT("Err TEMP. MAX"); + LSTR MSG_ERR_MINTEMP = _UxGT("Err TEMP. MIN"); + + LSTR MSG_HALTED = _UxGT("IMPR. STOPPEE"); + LSTR MSG_PLEASE_RESET = _UxGT("Redemarrer SVP"); + LSTR MSG_SHORT_DAY = _UxGT("j"); // One character only + LSTR MSG_SHORT_HOUR = _UxGT("h"); // One character only + LSTR MSG_SHORT_MINUTE = _UxGT("m"); // One character only + + LSTR MSG_HEATING = _UxGT("en chauffe..."); + LSTR MSG_COOLING = _UxGT("Refroidissement"); + LSTR MSG_BED_HEATING = _UxGT("Lit en chauffe..."); + LSTR MSG_BED_COOLING = _UxGT("Refroid. du lit..."); + LSTR MSG_PROBE_HEATING = _UxGT("Probe en chauffe..."); + LSTR MSG_PROBE_COOLING = _UxGT("Refroid. Probe..."); + LSTR MSG_CHAMBER_HEATING = _UxGT("Chauffe caisson..."); + LSTR MSG_CHAMBER_COOLING = _UxGT("Refroid. caisson..."); + LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibration Delta"); + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrer X"); + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrer Y"); + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrer Z"); + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrer centre"); + LSTR MSG_DELTA_SETTINGS = _UxGT("Reglages Delta"); + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Calibration Auto"); + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diagonale"); + LSTR MSG_DELTA_HEIGHT = _UxGT("Hauteur"); + LSTR MSG_DELTA_RADIUS = _UxGT("Rayon"); + + LSTR MSG_INFO_MENU = _UxGT("Infos imprimante"); + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Infos imprimante"); + LSTR MSG_3POINT_LEVELING = _UxGT("Niveau a 3 points"); + LSTR MSG_LINEAR_LEVELING = _UxGT("Niveau lineaire"); + LSTR MSG_BILINEAR_LEVELING = _UxGT("Niveau bilineaire"); + LSTR MSG_UBL_LEVELING = _UxGT("Niveau lit unifie"); + LSTR MSG_MESH_LEVELING = _UxGT("Niveau par grille"); + LSTR MSG_MESH_DONE = _UxGT("Niveau termine"); + LSTR MSG_INFO_STATS_MENU = _UxGT("Stats. imprimante"); + LSTR MSG_INFO_BOARD_MENU = _UxGT("Infos carte"); + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistances"); + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrudeurs"); + LSTR MSG_INFO_BAUDRATE = _UxGT("Bauds"); + LSTR MSG_INFO_PROTOCOL = _UxGT("Protocole"); + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Protection inactive"); + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Protection active"); + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Idle Timeout"); + + LSTR MSG_CASE_LIGHT = _UxGT("Lumiere caisson"); + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Luminosite"); + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Imprimante incorrecte"); + + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nbre impressions"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminees"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tps impr. total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impr. la + longue"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total filament"); + #else + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impressions"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminees"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("+ long"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Filament"); + #endif + + LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp Min"); + LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp Max"); + LSTR MSG_INFO_PSU = _UxGT("Alim."); + LSTR MSG_DRIVE_STRENGTH = _UxGT("Puiss. moteur "); + LSTR MSG_DAC_PERCENT_N = _UxGT("Driver @ %"); + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM sauv."); + LSTR MSG_ERROR_TMC = _UxGT("ERREUR CONNEXION TMC"); + + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("CHANGER FILAMENT"); + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("IMPR. PAUSE"); + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CHARGER FIL"); + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("DECHARGER FIL"); + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPTIONS REPRISE:"); + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purger encore"); + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Reprendre impr."); + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Buse: "); + LSTR MSG_RUNOUT_SENSOR = _UxGT("Capteur fil."); + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Echec origine"); + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Echec sonde"); + + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("MAJ firmware MMU!!"); + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("CHOISIR FILAMENT"); + LSTR MSG_MMU2_MENU = _UxGT("MMU"); + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU ne repond plus"); + LSTR MSG_MMU2_RESUME = _UxGT("Continuer Imp. MMU"); + LSTR MSG_MMU2_RESUMING = _UxGT("Reprise MMU..."); + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Charge dans MMU"); + LSTR MSG_MMU2_LOAD_ALL = _UxGT("Charger tous dans MMU"); + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Charger dans buse"); + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Ejecter fil. du MMU"); + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Ejecter fil. ~"); + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Retrait filament"); + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Chargem. fil. %i..."); + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Ejection fil..."); + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Retrait fil...."); + LSTR MSG_MMU2_ALL = _UxGT("Tous"); + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); + LSTR MSG_MMU2_RESET = _UxGT("Reinit. MMU"); + LSTR MSG_MMU2_RESETTING = _UxGT("Reinit. MMU..."); + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Retrait, click"); + + LSTR MSG_MIX_COMPONENT_N = _UxGT("Composante ="); + LSTR MSG_MIXER = _UxGT("Mixeur"); + LSTR MSG_GRADIENT = _UxGT("Degrade"); + LSTR MSG_FULL_GRADIENT = _UxGT("Degrade complet"); + LSTR MSG_TOGGLE_MIX = _UxGT("Toggle mix"); + LSTR MSG_CYCLE_MIX = _UxGT("Cycle mix"); + LSTR MSG_GRADIENT_MIX = _UxGT("Mix degrade"); + LSTR MSG_REVERSE_GRADIENT = _UxGT("Inverser degrade"); + LSTR MSG_ACTIVE_VTOOL = _UxGT("Active V-tool"); + LSTR MSG_START_VTOOL = _UxGT("Debut V-tool"); + LSTR MSG_END_VTOOL = _UxGT(" Fin V-tool"); + LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool"); + LSTR MSG_RESET_VTOOLS = _UxGT("Reinit. V-tools"); + LSTR MSG_COMMIT_VTOOL = _UxGT("Valider Mix V-tool"); + LSTR MSG_VTOOLS_RESET = _UxGT("V-tools reinit. ok"); + LSTR MSG_START_Z = _UxGT("Debut Z:"); + LSTR MSG_END_Z = _UxGT(" Fin Z:"); + LSTR MSG_GAMES = _UxGT("Jeux"); + LSTR MSG_BRICKOUT = _UxGT("Casse-briques"); + LSTR MSG_INVADERS = _UxGT("Invaders"); + LSTR MSG_SNAKE = _UxGT("Sn4k3"); + LSTR MSG_MAZE = _UxGT("Labyrinthe"); + + LSTR MSG_BAD_PAGE = _UxGT("Erreur index page"); + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Erreur vitesse page"); + + #if LCD_HEIGHT >= 4 + // Up to 3 lines allowed + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Presser bouton", "pour reprendre")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Attente filament", "pour demarrer")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserer filament", "et app. bouton", "pour continuer...")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Presser le bouton", "pour chauffer...")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Buse en chauffe", "Patienter SVP...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Attente", "retrait du filament")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Attente", "chargement filament")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Attente", "Purge filament")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Presser pour finir", "la purge du filament")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Attente reprise", "impression")); + #else // LCD_HEIGHT < 4 + // Up to 2 lines allowed + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clic pour continuer")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Patience...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserer fil.")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Chauffer ?")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Chauffage...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Retrait fil...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Chargement...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purge...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Terminer ?")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprise...")); + #endif // LCD_HEIGHT < 4 + + LSTR MSG_TMC_CURRENT = _UxGT("Courant driver"); + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Seuil hybride"); + LSTR MSG_TMC_HOMING_THRS = _UxGT("Home sans capteur"); + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Mode pas a pas"); + LSTR MSG_TMC_STEALTH_ENABLED = _UxGT("StealthChop active"); + LSTR MSG_SERVICE_RESET = _UxGT("Reinit."); + LSTR MSG_SERVICE_IN = _UxGT(" dans:"); + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Correction"); + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Lissage"); + + LSTR MSG_LEVEL_X_AXIS = _UxGT("Niveau axe X"); + LSTR MSG_AUTO_CALIBRATE = _UxGT("Etalon. auto."); + #if ENABLED(TOUCH_UI_FTDI_EVE) + LSTR MSG_HEATER_TIMEOUT = _UxGT("En protection, temp. reduite. Ok pour rechauffer et continuer."); + #else + LSTR MSG_HEATER_TIMEOUT = _UxGT("En protection"); + #endif + LSTR MSG_REHEAT = _UxGT("Chauffer"); + LSTR MSG_REHEATING = _UxGT("Rechauffe..."); + + LSTR MSG_PROBE_WIZARD = _UxGT("Assistant Sonde Z"); + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Mesure reference"); + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Depl. vers pos"); + + LSTR MSG_SOUND = _UxGT("Sons"); + + LSTR MSG_TOP_LEFT = _UxGT("Coin haut gauche"); + LSTR MSG_BOTTOM_LEFT = _UxGT("Coin bas gauche"); + LSTR MSG_TOP_RIGHT = _UxGT("Coin haut droit"); + LSTR MSG_BOTTOM_RIGHT = _UxGT("Coin bas droit"); + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibration terminee"); + LSTR MSG_CALIBRATION_FAILED = _UxGT("Echec de l'etalonnage"); + + LSTR MSG_SD_CARD = _UxGT("Carte SD"); + LSTR MSG_USB_DISK = _UxGT("Cle USB"); + + // DGUS-Specific message strings, not used elsewhere + LSTR DGUS_MSG_NOT_WHILE_PRINTING = _UxGT("Impossible pendant une impression"); + LSTR DGUS_MSG_NOT_WHILE_IDLE = _UxGT("Impossible tant que l'imprimante est en attente"); + LSTR DGUS_MSG_NO_FILE_SELECTED = _UxGT("Aucun fichier selectionne"); + LSTR DGUS_MSG_TEMP_TOO_LOW = _UxGT("Temperature trop basse"); + LSTR DGUS_MSG_EXECUTING_COMMAND = _UxGT("Execution de la commande..."); + LSTR DGUS_MSG_BED_PID_DISABLED = _UxGT("Bed PID desactive"); + LSTR DGUS_MSG_PID_DISABLED = _UxGT("PID desactive"); + LSTR DGUS_MSG_PID_AUTOTUNING = _UxGT("Autocalibrage du PID..."); + LSTR DGUS_MSG_INVALID_RECOVERY_DATA = _UxGT("Donnees de recuperation non valides"); + + LSTR DGUS_MSG_HOMING_REQUIRED = _UxGT("Retour a l'origine necessaire..."); + LSTR DGUS_MSG_BUSY = _UxGT("Occupe"); + LSTR DGUS_MSG_HOMING = _UxGT("Retour a l'origine..."); + LSTR DGUS_MSG_FW_OUTDATED = _UxGT("Mise a jour DWIN GUI/OS necessaire"); + LSTR DGUS_MSG_ABL_REQUIRED = _UxGT("Nivellement du bed necessaire"); + LSTR DGUS_MSG_PROBING_FAILED = _UxGT("Echec du nivellement..."); + LSTR DGUS_MSG_PROBING_SUCCESS = _UxGT("Nivellement realise avec succes"); + LSTR DGUS_MSG_RESET_EEPROM = _UxGT("Reinitialisation de l'EEPROM"); + LSTR DGUS_MSG_WRITE_EEPROM_FAILED = _UxGT("Echec ecriture de l'EEPROM"); + LSTR DGUS_MSG_READ_EEPROM_FAILED = _UxGT("Echec lecture de l'EEPROM"); + LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Sortie de filament E%d"); + +} diff --git a/buildroot/share/fonts/genallfont.sh b/buildroot/share/fonts/genallfont.sh index cc92d17d2c..5d85c88a18 100755 --- a/buildroot/share/fonts/genallfont.sh +++ b/buildroot/share/fonts/genallfont.sh @@ -62,7 +62,7 @@ fi # # By default loop through all languages # -LANGS_DEFAULT="an bg ca cz da de el el_CY en es eu fi fr gl hr hu it jp_kana ko_KR nl pl pt pt_br ro ru sk sv tr uk vi zh_CN zh_TW test" +LANGS_DEFAULT="an bg ca cz da de el el_CY en es eu fi fr fr_na gl hr hu it jp_kana ko_KR nl pl pt pt_br ro ru sk sv tr uk vi zh_CN zh_TW test" # # Generate data for language list MARLIN_LANGS or all if not provided diff --git a/buildroot/tests/FYSETC_F6 b/buildroot/tests/FYSETC_F6 index d970a23590..f8fce4b5b8 100755 --- a/buildroot/tests/FYSETC_F6 +++ b/buildroot/tests/FYSETC_F6 @@ -7,19 +7,20 @@ set -e # -# Build with the default configurations +# Build with the default config plus DGUS_LCD_UI FYSETC # restore_configs opt_set MOTHERBOARD BOARD_FYSETC_F6_13 LCD_SERIAL_PORT 1 DGUS_LCD_UI FYSETC exec_test $1 $2 "FYSETC F6 1.3 with DGUS (FYSETC)" "$3" # -# Test IA_CREALITY +# Test DGUS_LCD_UI RELOADED # restore_configs -opt_set MOTHERBOARD BOARD_FYSETC_F6_13 LCD_SERIAL_PORT 1 DGUS_LCD_UI IA_CREALITY LCD_SCREEN_ROTATE 90 -opt_enable ADVANCED_PAUSE_FEATURE LCD_BED_TRAMMING CLASSIC_JERK BABYSTEPPING AUTO_BED_LEVELING_BILINEAR NOZZLE_PARK_FEATURE PROBE_MANUALLY -exec_test $1 $2 "FYSETC F6 1.3 with DGUS (IA_CREALITY)" "$3" +opt_set MOTHERBOARD BOARD_FYSETC_F6_13 TEMP_SENSOR_BED 2 LCD_SERIAL_PORT 1 DGUS_LCD_UI RELOADED GRID_MAX_POINTS_X 5 +opt_enable ADVANCED_PAUSE_FEATURE LCD_BED_TRAMMING CLASSIC_JERK BABYSTEPPING BABYSTEP_ALWAYS_AVAILABLE BABYSTEP_ZPROBE_OFFSET \ + BLTOUCH Z_SAFE_HOMING AUTO_BED_LEVELING_BILINEAR NOZZLE_PARK_FEATURE +exec_test $1 $2 "FYSETC F6 1.3 with DGUS (RELOADED)" "$3" # # Delta Config (generic) + UBL + ALLEN_KEY + EEPROM_SETTINGS + OLED_PANEL_TINYBOY2 From 4b9bb85b1266e8febbcb1931c8427d410a05bf84 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 6 Mar 2023 22:55:55 -0600 Subject: [PATCH 093/659] =?UTF-8?q?=F0=9F=94=A7=20Add=20DGUS=5FLCD=5FUI=20?= =?UTF-8?q?RELOADED=20conditions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/SanityCheck.h | 2 + .../lcd/extui/dgus_reloaded/DGUSDisplay.cpp | 27 +++---- .../src/lcd/extui/dgus_reloaded/DGUSDisplay.h | 25 ++++--- .../lcd/extui/dgus_reloaded/DGUSRxHandler.cpp | 75 ++++++------------- .../extui/dgus_reloaded/DGUSScreenHandler.cpp | 9 +-- .../extui/dgus_reloaded/DGUSScreenHandler.h | 5 -- .../extui/dgus_reloaded/DGUSSetupHandler.cpp | 6 +- .../lcd/extui/dgus_reloaded/DGUSTxHandler.cpp | 6 +- 8 files changed, 56 insertions(+), 99 deletions(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 54ffcaf0ca..7d8f404591 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -4409,6 +4409,8 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); #error "DGUS_LCD_UI RELOADED requires BABYSTEP_ALWAYS_AVAILABLE." #elif DISABLED(BABYSTEP_ZPROBE_OFFSET) #error "DGUS_LCD_UI RELOADED requires BABYSTEP_ZPROBE_OFFSET." + #elif ENABLED(HOME_AFTER_DEACTIVATE) + #error "DGUS_LCD_UI RELOADED requires HOME_AFTER_DEACTIVATE to be disabled." #elif ENABLED(AUTO_BED_LEVELING_UBL) && DISABLED(UBL_SAVE_ACTIVE_ON_M500) #warning "Without UBL_SAVE_ACTIVE_ON_M500, your mesh will not be saved when using the touchscreen." #endif diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.cpp index 5bbeb0d7cc..7e215f887c 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.cpp @@ -125,8 +125,7 @@ void DGUSDisplay::WriteStringPGM(uint16_t addr, const void* data_ptr, uint8_t si const char* data = static_cast(data_ptr); size_t len = strlen_P(data); - uint8_t left_spaces = 0; - uint8_t right_spaces = 0; + uint8_t left_spaces = 0, right_spaces = 0; if (len < size) { if (!len) { @@ -147,15 +146,9 @@ void DGUSDisplay::WriteStringPGM(uint16_t addr, const void* data_ptr, uint8_t si len = size; } - while (left_spaces--) { - LCD_SERIAL.write(' '); - } - while (len--) { - LCD_SERIAL.write(pgm_read_byte(data++)); - } - while (right_spaces--) { - LCD_SERIAL.write(use_space ? ' ' : '\0'); - } + while (left_spaces--) LCD_SERIAL.write(' '); + while (len--) LCD_SERIAL.write(pgm_read_byte(data++)); + while (right_spaces--) LCD_SERIAL.write(use_space ? ' ' : '\0'); } void DGUSDisplay::ReadVersions() { @@ -340,11 +333,13 @@ void DGUSDisplay::ProcessRx() { } size_t DGUSDisplay::GetFreeTxBuffer() { - #ifdef LCD_SERIAL_GET_TX_BUFFER_FREE - return LCD_SERIAL_GET_TX_BUFFER_FREE(); - #else - return SIZE_MAX; - #endif + return ( + #ifdef LCD_SERIAL_GET_TX_BUFFER_FREE + LCD_SERIAL_GET_TX_BUFFER_FREE() + #else + SIZE_MAX + #endif + ); } void DGUSDisplay::FlushTx() { diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.h index c4e3645f28..bfea5780a1 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.h @@ -47,13 +47,13 @@ public: enum DGUS_ControlType : uint8_t { VARIABLE_DATA_INPUT = 0x00, - POPUP_WINDOW = 0x01, - INCREMENTAL_ADJUST = 0x02, - SLIDER_ADJUST = 0x03, - RTC_SETTINGS = 0x04, - RETURN_KEY_CODE = 0x05, - TEXT_INPUT = 0x06, - FIRMWARE_SETTINGS = 0x07 + POPUP_WINDOW = 0x01, + INCREMENTAL_ADJUST = 0x02, + SLIDER_ADJUST = 0x03, + RTC_SETTINGS = 0x04, + RETURN_KEY_CODE = 0x05, + TEXT_INPUT = 0x06, + FIRMWARE_SETTINGS = 0x07 }; DGUSDisplay() = default; @@ -63,8 +63,11 @@ public: static void Read(uint16_t addr, uint8_t size); static void Write(uint16_t addr, const void* data_ptr, uint8_t size); - static void WriteString(uint16_t addr, const void* data_ptr, uint8_t size, bool left = true, bool right = false, bool use_space = true); - static void WriteStringPGM(uint16_t addr, const void* data_ptr, uint8_t size, bool left = true, bool right = false, bool use_space = true); + static void WriteString(uint16_t addr, const void* data_ptr, uint8_t size, bool left=true, bool right=false, bool use_space=true); + static void WriteStringPGM(uint16_t addr, const void* data_ptr, uint8_t size, bool left=true, bool right=false, bool use_space=true); + static void WriteString(uint16_t addr, FSTR_P const fstr, uint8_t size, bool left=true, bool right=false, bool use_space=true) { + WriteStringPGM(addr, FTOP(fstr), size, left, right, use_space); + } template static void Write(uint16_t addr, T data) { @@ -83,7 +86,7 @@ public: // start: position at which the sound was stored on the display. // len: how many sounds to play. Sounds will play consecutively from start to start+len-1. // volume: playback volume. 0 keeps the current volume. - static void PlaySound(uint8_t start, uint8_t len = 1, uint8_t volume = 0); + static void PlaySound(uint8_t start, uint8_t len=1, uint8_t volume=0); // Enable/disable a specific touch control. // type: control type. // control: index of the control on the page (set during screen development). @@ -154,7 +157,7 @@ private: }; enum dgus_system_addr : uint16_t { - DGUS_VERSION = 0x000f // OS/GUI version + DGUS_VERSION = 0x000F // OS/GUI version }; static void WriteHeader(uint16_t addr, uint8_t command, uint8_t len); diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp index f149d3c419..7a0318a555 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp @@ -387,7 +387,7 @@ void DGUSRxHandler::Steppers(DGUS_VP &vp, void *data_ptr) { void DGUSRxHandler::ZOffset(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); - if (!ExtUI::isAxisPositionKnown(ExtUI::Z)) { + if (TERN0(NO_MOTION_BEFORE_HOMING, !ExtUI::isAxisPositionKnown(ExtUI::Z))) { dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } @@ -411,7 +411,7 @@ void DGUSRxHandler::ZOffset(DGUS_VP &vp, void *data_ptr) { void DGUSRxHandler::ZOffsetStep(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); - if (!ExtUI::isAxisPositionKnown(ExtUI::Z)) { + if (TERN0(NO_MOTION_BEFORE_HOMING, !ExtUI::isAxisPositionKnown(ExtUI::Z))) { dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } @@ -525,7 +525,7 @@ void DGUSRxHandler::Probe(DGUS_VP &vp, void *data_ptr) { #else queue.enqueue_now(F("G29")); #endif - queue.enqueue_now_P(DGUS_CMD_EEPROM_SAVE); + queue.enqueue_now(F("M500")); } void DGUSRxHandler::DisableABL(DGUS_VP &vp, void *data_ptr) { @@ -646,18 +646,12 @@ void DGUSRxHandler::Move(DGUS_VP &vp, void *data_ptr) { switch (vp.addr) { default: return; - case DGUS_Addr::MOVE_SetX: - axis = ExtUI::X; - break; - case DGUS_Addr::MOVE_SetY: - axis = ExtUI::Y; - break; - case DGUS_Addr::MOVE_SetZ: - axis = ExtUI::Z; - break; + case DGUS_Addr::MOVE_SetX: axis = ExtUI::X; break; + case DGUS_Addr::MOVE_SetY: axis = ExtUI::Y; break; + case DGUS_Addr::MOVE_SetZ: axis = ExtUI::Z; break; } - if (!ExtUI::isAxisPositionKnown(axis)) { + if (TERN0(NO_MOTION_BEFORE_HOMING, !ExtUI::isAxisPositionKnown(axis))) { dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } @@ -671,18 +665,11 @@ void DGUSRxHandler::MoveStep(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); float offset; - switch (dgus_screen_handler.move_steps) { default: return; - case DGUS_Data::StepSize::MM10: - offset = 10.0f; - break; - case DGUS_Data::StepSize::MM1: - offset = 1.0f; - break; - case DGUS_Data::StepSize::MMP1: - offset = 0.1f; - break; + case DGUS_Data::StepSize::MM10: offset = 10.0f; break; + case DGUS_Data::StepSize::MM1: offset = 1.0f; break; + case DGUS_Data::StepSize::MMP1: offset = 0.1f; break; } const DGUS_Data::MoveDirection direction = (DGUS_Data::MoveDirection)((uint8_t*)data_ptr)[1]; @@ -690,30 +677,15 @@ void DGUSRxHandler::MoveStep(DGUS_VP &vp, void *data_ptr) { switch (direction) { default: return; - case DGUS_Data::MoveDirection::XP: - axis = ExtUI::X; - break; - case DGUS_Data::MoveDirection::XM: - axis = ExtUI::X; - offset = -offset; - break; - case DGUS_Data::MoveDirection::YP: - axis = ExtUI::Y; - break; - case DGUS_Data::MoveDirection::YM: - axis = ExtUI::Y; - offset = -offset; - break; - case DGUS_Data::MoveDirection::ZP: - axis = ExtUI::Z; - break; - case DGUS_Data::MoveDirection::ZM: - axis = ExtUI::Z; - offset = -offset; - break; + case DGUS_Data::MoveDirection::XM: offset = -offset; + case DGUS_Data::MoveDirection::XP: axis = ExtUI::X; break; + case DGUS_Data::MoveDirection::YM: offset = -offset; + case DGUS_Data::MoveDirection::YP: axis = ExtUI::Y; break; + case DGUS_Data::MoveDirection::ZM: offset = -offset; + case DGUS_Data::MoveDirection::ZP: axis = ExtUI::Z; break; } - if (!ExtUI::isAxisPositionKnown(axis)) { + if (TERN0(NO_MOTION_BEFORE_HOMING, !ExtUI::isAxisPositionKnown(axis))) { dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } @@ -727,7 +699,6 @@ void DGUSRxHandler::MoveSetStep(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::StepSize size = (DGUS_Data::StepSize)((uint8_t*)data_ptr)[1]; - dgus_screen_handler.move_steps = size; dgus_screen_handler.TriggerFullUpdate(); @@ -746,9 +717,7 @@ void DGUSRxHandler::GcodeExecute(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); UNUSED(data_ptr); - if (!strlen(dgus_screen_handler.gcode)) { - return; - } + if (!strlen(dgus_screen_handler.gcode)) return; if (!dgus_screen_handler.IsPrinterIdle()) { dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); @@ -765,9 +734,7 @@ void DGUSRxHandler::ResetEEPROM(DGUS_VP &vp, void *data_ptr) { const DGUS_Data::Popup result = (DGUS_Data::Popup)((uint8_t*)data_ptr)[1]; - if (result != DGUS_Data::Popup::CONFIRMED) { - return; - } + if (result != DGUS_Data::Popup::CONFIRMED) return; if (!dgus_screen_handler.IsPrinterIdle()) { dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); @@ -775,7 +742,7 @@ void DGUSRxHandler::ResetEEPROM(DGUS_VP &vp, void *data_ptr) { } queue.enqueue_now(F("M502")); - queue.enqueue_now_P(DGUS_CMD_EEPROM_SAVE); + queue.enqueue_now(F("M500")); } void DGUSRxHandler::SettingsExtra(DGUS_VP &vp, void *data_ptr) { @@ -908,7 +875,7 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) { dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_PID_AUTOTUNING), DGUS_Screen::PID); queue.enqueue_one_now(buffer); - queue.enqueue_now_P(DGUS_CMD_EEPROM_SAVE); + queue.enqueue_now(F("M500")); } #if ENABLED(POWER_LOSS_RECOVERY) diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp index cc98126c9b..e1d8778567 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp @@ -69,11 +69,6 @@ bool DGUSScreenHandler::leveling_active = false; millis_t DGUSScreenHandler::status_expire = 0; millis_t DGUSScreenHandler::eeprom_save = 0; -const char DGUS_MSG_UNDEF[] PROGMEM = "-"; - -const char DGUS_CMD_HOME[] PROGMEM = "G28", - DGUS_CMD_EEPROM_SAVE[] PROGMEM = "M500"; - void DGUSScreenHandler::Init() { dgus_display.Init(); @@ -146,7 +141,7 @@ void DGUSScreenHandler::Loop() { if (eeprom_save > 0 && ELAPSED(ms, eeprom_save) && IsPrinterIdle()) { eeprom_save = 0; - queue.enqueue_now_P(DGUS_CMD_EEPROM_SAVE); + queue.enqueue_now(F("M500")); return; } @@ -385,7 +380,7 @@ void DGUSScreenHandler::SetStatusMessage(const char* msg, const millis_t duratio } void DGUSScreenHandler::SetStatusMessage(FSTR_P const fmsg, const millis_t duration) { - dgus_display.WriteStringPGM((uint16_t)DGUS_Addr::MESSAGE_Status, FTOP(fmsg), DGUS_STATUS_LEN, false, true); + dgus_display.WriteString((uint16_t)DGUS_Addr::MESSAGE_Status, fmsg, DGUS_STATUS_LEN, false, true); status_expire = (duration > 0 ? ExtUI::safe_millis() + duration : 0); } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h index e872e8a823..295df311df 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h @@ -141,8 +141,3 @@ private: }; extern DGUSScreenHandler dgus_screen_handler; - -extern const char DGUS_MSG_UNDEF[]; - -extern const char DGUS_CMD_HOME[], - DGUS_CMD_EEPROM_SAVE[]; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp index 3b243e4711..c95d7d0453 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp @@ -82,7 +82,7 @@ bool DGUSSetupHandler::LevelingMenu() { dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_MENU); - queue.enqueue_now_P(DGUS_CMD_HOME); + queue.enqueue_now(F("G28")); return false; } @@ -101,7 +101,7 @@ bool DGUSSetupHandler::LevelingManual() { dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_MANUAL); - queue.enqueue_now_P(DGUS_CMD_HOME); + queue.enqueue_now(F("G28")); return false; } @@ -130,7 +130,7 @@ bool DGUSSetupHandler::LevelingOffset() { dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_OFFSET); - queue.enqueue_now_P(DGUS_CMD_HOME); + queue.enqueue_now(F("G28")); return false; } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp index eb1b3aa510..dc2aea8bef 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp @@ -522,7 +522,7 @@ void DGUSTxHandler::PrintTime(DGUS_VP &vp) { dgus_display.WriteString((uint16_t)vp.addr, buffer, vp.size); #else - dgus_display.WriteStringPGM((uint16_t)vp.addr, DGUS_MSG_UNDEF, vp.size); + dgus_display.WriteString((uint16_t)vp.addr, F("-"), vp.size); #endif } @@ -533,7 +533,7 @@ void DGUSTxHandler::LongestPrint(DGUS_VP &vp) { dgus_display.WriteString((uint16_t)vp.addr, buffer, vp.size); #else - dgus_display.WriteStringPGM((uint16_t)vp.addr, DGUS_MSG_UNDEF, vp.size); + dgus_display.WriteString((uint16_t)vp.addr, F("-"), vp.size); #endif } @@ -544,7 +544,7 @@ void DGUSTxHandler::FilamentUsed(DGUS_VP &vp) { dgus_display.WriteString((uint16_t)vp.addr, buffer, vp.size); #else - dgus_display.WriteStringPGM((uint16_t)vp.addr, DGUS_MSG_UNDEF, vp.size); + dgus_display.WriteString((uint16_t)vp.addr, F("-"), vp.size); #endif } From 0b473eecbccb50e1f59f91abae1ff28701df4a46 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 8 Mar 2023 00:23:50 +0000 Subject: [PATCH 094/659] [cron] Bump distribution date (2023-03-08) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 3eae6ed9d8..504127e34f 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-07" +//#define STRING_DISTRIBUTION_DATE "2023-03-08" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 0eac8c737c..da24836a33 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-07" + #define STRING_DISTRIBUTION_DATE "2023-03-08" #endif /** From db5ff20b72c8769865f1f7a23d3ce5074b0c997e Mon Sep 17 00:00:00 2001 From: Kurt Haenen Date: Thu, 9 Mar 2023 07:20:30 +0100 Subject: [PATCH 095/659] =?UTF-8?q?=E2=9C=A8=20Extra=20Z=20Servo=20Probe?= =?UTF-8?q?=20options=20(#21427)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration.h | 6 ++++-- Marlin/src/gcode/bedlevel/abl/G29.cpp | 2 +- Marlin/src/module/probe.cpp | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 54a895712d..77f1908901 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1388,8 +1388,10 @@ /** * Z Servo Probe, such as an endstop switch on a rotating arm. */ -//#define Z_PROBE_SERVO_NR 0 // Defaults to SERVO 0 connector. -//#define Z_SERVO_ANGLES { 70, 0 } // Z Servo Deploy and Stow angles +//#define Z_PROBE_SERVO_NR 0 // Defaults to SERVO 0 connector. +//#define Z_SERVO_ANGLES { 70, 0 } // Z Servo Deploy and Stow angles +//#define Z_SERVO_MEASURE_ANGLE 45 // Use if the servo must move to a "free" position for measuring after deploy. +//#define Z_SERVO_INTERMEDIATE_STOW // Stow the probe between points. /** * The BLTouch probe uses a Hall effect sensor and emulates a servo. diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index 4769bd79c0..114fa55520 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -491,7 +491,7 @@ G29_TYPE GcodeSuite::G29() { if (!no_action) set_bed_leveling_enabled(false); // Deploy certain probes before starting probing - #if ENABLED(BLTOUCH) + #if ENABLED(BLTOUCH) || BOTH(HAS_Z_SERVO_PROBE, Z_SERVO_INTERMEDIATE_STOW) do_z_clearance(Z_CLEARANCE_DEPLOY_PROBE); #elif HAS_BED_PROBE if (probe.deploy()) { // (returns true on deploy failure) diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index f0a3c8584b..7daafd1139 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -405,6 +405,11 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { servo[Z_PROBE_SERVO_NR].move(servo_angles[Z_PROBE_SERVO_NR][deploy ? 0 : 1]); + #ifdef Z_SERVO_MEASURE_ANGLE + // After deploy move back to the measure angle... + if (deploy) MOVE_SERVO(Z_PROBE_SERVO_NR, Z_SERVO_MEASURE_ANGLE); + #endif + #elif ANY(TOUCH_MI_PROBE, Z_PROBE_ALLEN_KEY, MAG_MOUNTED_PROBE) deploy ? run_deploy_moves() : run_stow_moves(); @@ -582,11 +587,16 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { #if BOTH(HAS_TEMP_HOTEND, WAIT_FOR_HOTEND) thermalManager.wait_for_hotend_heating(active_extruder); #endif + #if ENABLED(BLTOUCH) if (!bltouch.high_speed_mode && bltouch.deploy()) return true; // Deploy in LOW SPEED MODE on every probe action #endif + #if HAS_Z_SERVO_PROBE && (ENABLED(Z_SERVO_INTERMEDIATE_STOW) || defined(Z_SERVO_MEASURE_ANGLE)) + probe_specific_action(true); // Always re-deploy in this case + #endif + // Disable stealthChop if used. Enable diag1 pin on driver. #if ENABLED(SENSORLESS_PROBING) sensorless_t stealth_states { false }; @@ -636,6 +646,10 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { return true; // Stow in LOW SPEED MODE on every trigger #endif + #if BOTH(HAS_Z_SERVO_PROBE, Z_SERVO_INTERMEDIATE_STOW) + probe_specific_action(false); // Always stow + #endif + // Clear endstop flags endstops.hit_on_purpose(); From 1d06fe8e267a369dbe3a547d8c08264714331783 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 9 Mar 2023 01:37:09 -0600 Subject: [PATCH 096/659] =?UTF-8?q?=F0=9F=94=A7=20Update=20some=20config.i?= =?UTF-8?q?ni=20options?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/config.ini | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Marlin/config.ini b/Marlin/config.ini index 0fb9fb0c93..65058a500d 100644 --- a/Marlin/config.ini +++ b/Marlin/config.ini @@ -95,10 +95,10 @@ invert_y_dir = true invert_z_dir = false invert_e0_dir = false -invert_e_step_pin = false -invert_x_step_pin = false -invert_y_step_pin = false -invert_z_step_pin = false +step_state_e = HIGH +step_state_x = HIGH +step_state_y = HIGH +step_state_z = HIGH disable_x = false disable_y = false @@ -178,7 +178,7 @@ autotemp_oldweight = 0.98 bed_check_interval = 5000 default_stepper_deactive_time = 120 default_volumetric_extruder_limit = 0.00 -disable_inactive_e = true +disable_inactive_extruder = true disable_inactive_x = true disable_inactive_y = true disable_inactive_z = true From 32dcd7f1187b3e2fc30f69cc936c0250c40a60cd Mon Sep 17 00:00:00 2001 From: Sion Williams Date: Thu, 9 Mar 2023 08:45:01 +0000 Subject: [PATCH 097/659] =?UTF-8?q?=F0=9F=94=A8=20VSCode=20+=20Devcontaine?= =?UTF-8?q?r=20support=20(#22420)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .devcontainer/Dockerfile | 29 +++++++++++++++++++ .devcontainer/devcontainer.json | 51 +++++++++++++++++++++++++++++++++ README.md | 1 + 3 files changed, 81 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000000..4f29a10053 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,29 @@ +# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.187.0/containers/python-3/.devcontainer/base.Dockerfile + +# [Choice] Python version: 3, 3.9, 3.8, 3.7, 3.6 +ARG VARIANT="3.9.0-buster" +FROM python:${VARIANT} + +# [Option] Install Node.js +ARG INSTALL_NODE="true" +ARG NODE_VERSION="lts/*" +RUN if [ "${INSTALL_NODE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi + +# [Optional] If your pip requirements rarely change, uncomment this section to add them to the image. +# COPY requirements.txt /tmp/pip-tmp/ +# RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \ +# && rm -rf /tmp/pip-tmp + +# [Optional] Uncomment this section to install additional OS packages. +# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ +# && apt-get -y install --no-install-recommends + +# [Optional] Uncomment this line to install global node packages. +# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g " 2>&1 + + +RUN pip install -U https://github.com/platformio/platformio-core/archive/develop.zip +RUN platformio update +# To get the test platforms +RUN pip install PyYaml +#ENV PATH /code/buildroot/bin/:/code/buildroot/tests/:${PATH} diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..54627d462b --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,51 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.187.0/containers/python-3 +{ + "name": "Python 3", + "build": { + "dockerfile": "Dockerfile", + "context": "..", + "args": { + // Update 'VARIANT' to pick a Python version: 3, 3.6, 3.7, 3.8, 3.9 + "VARIANT": "3.9.0-buster", + // Options + "INSTALL_NODE": "false", + "NODE_VERSION": "lts/*" + } + }, + + // Set *default* container specific settings.json values on container create. + "settings": { + "python.pythonPath": "/usr/local/bin/python", + "python.languageServer": "Pylance", + "python.linting.enabled": true, + "python.linting.pylintEnabled": true, + "python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8", + "python.formatting.blackPath": "/usr/local/py-utils/bin/black", + "python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf", + "python.linting.banditPath": "/usr/local/py-utils/bin/bandit", + "python.linting.flake8Path": "/usr/local/py-utils/bin/flake8", + "python.linting.mypyPath": "/usr/local/py-utils/bin/mypy", + "python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle", + "python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle", + "python.linting.pylintPath": "/usr/local/py-utils/bin/pylint" + }, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "ms-python.python", + "ms-python.vscode-pylance", + "platformio.platformio-ide", + "marlinfirmware.auto-build", + "editorconfig.editorconfig" + ], + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "pip3 install --user -r requirements.txt", + + // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. + // "remoteUser": "vscode" +} diff --git a/README.md b/README.md index 05afe9ec27..ac496aac21 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ To build and upload Marlin you will use one of these tools: - The free [Visual Studio Code](https://code.visualstudio.com/download) using the [Auto Build Marlin](https://marlinfw.org/docs/basics/auto_build_marlin.html) extension. - The free [Arduino IDE](https://www.arduino.cc/en/main/software) : See [Building Marlin with Arduino](https://marlinfw.org/docs/basics/install_arduino.html) +- You can also use VSCode with devcontainer : See [Installing Marlin (VSCode devcontainer)](http://marlinfw.org/docs/basics/install_devcontainer_vscode.html). Marlin is optimized to build with the **PlatformIO IDE** extension for **Visual Studio Code**. You can still build Marlin with **Arduino IDE**, and we hope to improve the Arduino build experience, but at this time PlatformIO is the better choice. From 26f96dc7a66bac9503bff6ae64f8addaf1a3a537 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 9 Mar 2023 12:08:13 +0000 Subject: [PATCH 098/659] [cron] Bump distribution date (2023-03-09) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 504127e34f..3453f39de0 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-08" +//#define STRING_DISTRIBUTION_DATE "2023-03-09" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index da24836a33..a03bf0bb76 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-08" + #define STRING_DISTRIBUTION_DATE "2023-03-09" #endif /** From 904ddf8551149e7de1af25456fc41d069f2f2ac4 Mon Sep 17 00:00:00 2001 From: Evgeniy Zhabotinskiy Date: Fri, 10 Mar 2023 03:56:19 +0300 Subject: [PATCH 099/659] =?UTF-8?q?=E2=9C=A8=20Z=5FSAFE=5FHOMING=5FPOINT?= =?UTF-8?q?=5FABSOLUTE=20(#23069)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 1 + Marlin/src/gcode/calibrate/G28.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 77f1908901..3b90555cec 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2179,6 +2179,7 @@ #if ENABLED(Z_SAFE_HOMING) #define Z_SAFE_HOMING_X_POINT X_CENTER // X point for Z homing #define Z_SAFE_HOMING_Y_POINT Y_CENTER // Y point for Z homing + //#define Z_SAFE_HOMING_POINT_ABSOLUTE // Ignore home offsets (M206) for Z homing position #endif // Homing speeds (linear=mm/min, rotational=°/min) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 6f0f27cb9d..e279b90e33 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -124,7 +124,7 @@ * (Z is already at the right height) */ constexpr xy_float_t safe_homing_xy = { Z_SAFE_HOMING_X_POINT, Z_SAFE_HOMING_Y_POINT }; - #if HAS_HOME_OFFSET + #if HAS_HOME_OFFSET && DISABLED(Z_SAFE_HOMING_POINT_ABSOLUTE) xy_float_t okay_homing_xy = safe_homing_xy; okay_homing_xy -= home_offset; #else From cff395236cacc55845b517ef649cd510fd786a86 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 10 Mar 2023 06:06:44 +0000 Subject: [PATCH 100/659] [cron] Bump distribution date (2023-03-10) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 3453f39de0..154e1f9c4e 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-09" +//#define STRING_DISTRIBUTION_DATE "2023-03-10" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index a03bf0bb76..f1b0861dad 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-09" + #define STRING_DISTRIBUTION_DATE "2023-03-10" #endif /** From 28b101cceff79eaf1401b583a05e0251b1e6e55c Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Fri, 10 Mar 2023 15:56:33 -0800 Subject: [PATCH 101/659] =?UTF-8?q?=E2=9C=A8=20BTT=20Octopus=20Max=20EZ=20?= =?UTF-8?q?1.0,=20SKR=203.0=20/=203.0=20EZ=20(#25387)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BTT Octopus Max EZ V1.0 (STM32H723VE/ZE), SKR V3.0 / V3.0 EZ (STM32H723VG) --- Marlin/src/HAL/STM32/HAL.h | 2 +- Marlin/src/HAL/STM32/HAL_SPI.cpp | 1 - Marlin/src/core/boards.h | 1 + Marlin/src/pins/pins.h | 12 +- Marlin/src/pins/pins_postprocess.h | 5 + .../pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h | 28 +- Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h | 14 +- .../pins/stm32g0/pins_BTT_MANTA_M8P_common.h | 9 +- Marlin/src/pins/stm32h7/env_validate.h | 26 + .../pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h | 545 ++++++++++++++ .../pins/stm32h7/pins_BTT_SKR_SE_BX_common.h | 4 +- .../pins/stm32h7/pins_BTT_SKR_V3_0_common.h | 4 +- .../boards/marlin_BTT_SKR_SE_BX.json | 2 +- .../PlatformIO/boards/marlin_STM32H723Vx.json | 61 ++ .../PlatformIO/boards/marlin_STM32H723Zx.json | 61 ++ .../variants/MARLIN_H723Vx/PeripheralPins.c | 590 +++++++++++++++ .../variants/MARLIN_H723Vx/PinNamesVar.h | 108 +++ .../variants/MARLIN_H723Vx/ldscript.ld | 174 +++++ .../variant_MARLIN_STM32H723VX.cpp | 273 +++++++ .../variant_MARLIN_STM32H723VX.h | 269 +++++++ .../variants/MARLIN_H723Zx/PeripheralPins.c | 688 ++++++++++++++++++ .../variants/MARLIN_H723Zx/PinNamesVar.h | 117 +++ .../variants/MARLIN_H723Zx/ldscript.ld | 174 +++++ .../variant_MARLIN_STM32H723Zx.cpp | 317 ++++++++ .../variant_MARLIN_STM32H723Zx.h | 308 ++++++++ ini/renamed.ini | 18 + ini/stm32f1-maple.ini | 1 - ini/stm32f4.ini | 22 +- ini/stm32h7.ini | 57 +- 29 files changed, 3834 insertions(+), 57 deletions(-) create mode 100644 Marlin/src/pins/stm32h7/env_validate.h create mode 100644 Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h create mode 100644 buildroot/share/PlatformIO/boards/marlin_STM32H723Vx.json create mode 100644 buildroot/share/PlatformIO/boards/marlin_STM32H723Zx.json create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723Vx/PeripheralPins.c create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723Vx/PinNamesVar.h create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723Vx/ldscript.ld create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723Vx/variant_MARLIN_STM32H723VX.cpp create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723Vx/variant_MARLIN_STM32H723VX.h create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723Zx/PeripheralPins.c create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723Zx/PinNamesVar.h create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723Zx/ldscript.ld create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723Zx.cpp create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723Zx.h diff --git a/Marlin/src/HAL/STM32/HAL.h b/Marlin/src/HAL/STM32/HAL.h index 3e85aca293..61569c7937 100644 --- a/Marlin/src/HAL/STM32/HAL.h +++ b/Marlin/src/HAL/STM32/HAL.h @@ -138,7 +138,7 @@ typedef double isr_float_t; // FPU ops are used for single-precision, so use double for ISRs. -#ifdef STM32G0B1xx +#if defined(STM32G0B1xx) || defined(STM32H7xx) typedef int32_t pin_t; #else typedef int16_t pin_t; diff --git a/Marlin/src/HAL/STM32/HAL_SPI.cpp b/Marlin/src/HAL/STM32/HAL_SPI.cpp index 40d320d5e8..278d209c47 100644 --- a/Marlin/src/HAL/STM32/HAL_SPI.cpp +++ b/Marlin/src/HAL/STM32/HAL_SPI.cpp @@ -78,7 +78,6 @@ static SPISettings spiConfig; case SPI_SPEED_6: delaySPIFunc = &delaySPI_2000; break; // desired: 250,000 actual: ~210K default: delaySPIFunc = &delaySPI_4000; break; // desired: 125,000 actual: ~123K } - SPI.begin(); } // Begin SPI transaction, set clock, bit order, data mode diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index bdf86392c9..f861e8864f 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -452,6 +452,7 @@ #define BOARD_BTT_SKR_SE_BX_V3 6005 // BigTreeTech SKR SE BX V3.0 (STM32H743II) #define BOARD_BTT_SKR_V3_0 6006 // BigTreeTech SKR V3.0 (STM32H743VG) #define BOARD_BTT_SKR_V3_0_EZ 6007 // BigTreeTech SKR V3.0 EZ (STM32H743VG) +#define BOARD_BTT_OCTOPUS_MAX_EZ_V1_0 6008 // BigTreeTech Octopus Max EZ V1.0 (STM32H723VE / STM32H723ZE) // // Espressif ESP32 WiFi diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 1c45b0b155..721e037b8c 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -666,11 +666,11 @@ #elif MB(BTT_SKR_V2_0_REV_B) #include "stm32f4/pins_BTT_SKR_V2_0_REV_B.h" // STM32F4 env:BIGTREE_SKR_2 env:BIGTREE_SKR_2_USB env:BIGTREE_SKR_2_USB_debug env:BIGTREE_SKR_2_F429 env:BIGTREE_SKR_2_F429_USB env:BIGTREE_SKR_2_F429_USB_debug #elif MB(BTT_OCTOPUS_V1_0) - #include "stm32f4/pins_BTT_OCTOPUS_V1_0.h" // STM32F4 env:BIGTREE_OCTOPUS_V1 env:BIGTREE_OCTOPUS_V1_USB + #include "stm32f4/pins_BTT_OCTOPUS_V1_0.h" // STM32F4 env:STM32F446ZE_btt env:STM32F446ZE_btt_USB #elif MB(BTT_OCTOPUS_V1_1) - #include "stm32f4/pins_BTT_OCTOPUS_V1_1.h" // STM32F4 env:BIGTREE_OCTOPUS_V1 env:BIGTREE_OCTOPUS_V1_USB env:BIGTREE_OCTOPUS_V1_F407 env:BIGTREE_OCTOPUS_V1_F407_USB + #include "stm32f4/pins_BTT_OCTOPUS_V1_1.h" // STM32F4 env:STM32F446ZE_btt env:STM32F446ZE_btt_USB env:STM32F429ZG_btt env:STM32F429ZG_btt_USB env:STM32F407ZE_btt env:STM32F407ZE_btt_USB #elif MB(BTT_OCTOPUS_PRO_V1_0) - #include "stm32f4/pins_BTT_OCTOPUS_PRO_V1_0.h" // STM32F4 env:BIGTREE_OCTOPUS_V1 env:BIGTREE_OCTOPUS_V1_USB env:BIGTREE_OCTOPUS_PRO_V1_F429 env:BIGTREE_OCTOPUS_PRO_V1_F429_USB + #include "stm32f4/pins_BTT_OCTOPUS_PRO_V1_0.h" // STM32F4 env:STM32F446ZE_btt env:STM32F446ZE_btt_USB env:STM32F429ZG_btt env:STM32F429ZG_btt_USB env:STM32H723Zx_btt #elif MB(LERDGE_K) #include "stm32f4/pins_LERDGE_K.h" // STM32F4 env:LERDGEK env:LERDGEK_usb_flash_drive #elif MB(LERDGE_S) @@ -741,9 +741,11 @@ #elif MB(BTT_SKR_SE_BX_V3) #include "stm32h7/pins_BTT_SKR_SE_BX_V3.h" // STM32H7 env:BTT_SKR_SE_BX #elif MB(BTT_SKR_V3_0) - #include "stm32h7/pins_BTT_SKR_V3_0.h" // STM32H7 env:STM32H743Vx_btt + #include "stm32h7/pins_BTT_SKR_V3_0.h" // STM32H7 env:STM32H723Vx_btt env:STM32H743Vx_btt #elif MB(BTT_SKR_V3_0_EZ) - #include "stm32h7/pins_BTT_SKR_V3_0_EZ.h" // STM32H7 env:STM32H743Vx_btt + #include "stm32h7/pins_BTT_SKR_V3_0_EZ.h" // STM32H7 env:STM32H723Vx_btt env:STM32H743Vx_btt +#elif MB(BTT_OCTOPUS_MAX_EZ_V1_0) + #include "stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h" // STM32H7 env:STM32H723Vx_btt env:STM32H723Zx_btt #elif MB(TEENSY41) #include "teensy4/pins_TEENSY41.h" // Teensy-4.x env:teensy41 #elif MB(T41U5XBB) diff --git a/Marlin/src/pins/pins_postprocess.h b/Marlin/src/pins/pins_postprocess.h index 5b5cbcd214..8906c3cafb 100644 --- a/Marlin/src/pins/pins_postprocess.h +++ b/Marlin/src/pins/pins_postprocess.h @@ -487,6 +487,11 @@ #define NUM_SERVO_PLUGS 4 #endif +// Only used within pins files +#undef NEEDS_X_MINMAX +#undef NEEDS_Y_MINMAX +#undef NEEDS_Z_MINMAX + // // Assign endstop pins for boards with only 3 connectors // diff --git a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h index b3d97ae059..a25c2339f2 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h @@ -27,13 +27,17 @@ #define USES_DIAG_JUMPERS // Onboard I2C EEPROM -#define I2C_EEPROM -#define MARLIN_EEPROM_SIZE 0x1000 // 4K (AT24C32) -#define I2C_SCL_PIN PB8 -#define I2C_SDA_PIN PB9 +#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM) + #undef NO_EEPROM_SELECTED + #define I2C_EEPROM + #define MARLIN_EEPROM_SIZE 0x1000 // 4K (AT24C32) + #define SOFT_I2C_EEPROM // Force the use of Software I2C + #define I2C_SCL_PIN PB8 + #define I2C_SDA_PIN PB9 +#endif // Avoid conflict with TIMER_TONE -#define STEP_TIMER 10 +#define STEP_TIMER 8 // // Servos @@ -70,13 +74,13 @@ #if HAS_EXTRA_ENDSTOPS #define _ENDSTOP_IS_ANY(ES) X2_USE_ENDSTOP == ES || Y2_USE_ENDSTOP == ES || Z2_USE_ENDSTOP == ES || Z3_USE_ENDSTOP == ES || Z4_USE_ENDSTOP == ES #if _ENDSTOP_IS_ANY(_XMIN_) || _ENDSTOP_IS_ANY(_XMAX_) - #define NEEDS_X_MINMAX 1 + #define NEEDS_X_MINMAX #endif #if _ENDSTOP_IS_ANY(_YMIN_) || _ENDSTOP_IS_ANY(_YMAX_) - #define NEEDS_Y_MINMAX 1 + #define NEEDS_Y_MINMAX #endif #if _ENDSTOP_IS_ANY(_ZMIN_) || _ENDSTOP_IS_ANY(_ZMAX_) - #define NEEDS_Z_MINMAX 1 + #define NEEDS_Z_MINMAX #endif #undef _ENDSTOP_IS_ANY #endif @@ -109,7 +113,7 @@ #else #define Y_MIN_PIN E1_DIAG_PIN // E1DET #endif -#elif NEEDS_Y_MINMAX +#elif ENABLED(NEEDS_Y_MINMAX) #ifndef Y_MIN_PIN #define Y_MIN_PIN Y_DIAG_PIN // Y-STOP #endif @@ -127,7 +131,7 @@ #else #define Z_MIN_PIN E2_DIAG_PIN // PWRDET #endif -#elif NEEDS_Z_MINMAX +#elif ENABLED(NEEDS_Z_MINMAX) #ifndef Z_MIN_PIN #define Z_MIN_PIN Z_DIAG_PIN // Z-STOP #endif @@ -138,10 +142,6 @@ #define Z_STOP_PIN Z_DIAG_PIN // Z-STOP #endif -#undef NEEDS_X_MINMAX -#undef NEEDS_Y_MINMAX -#undef NEEDS_Z_MINMAX - // // Filament Runout Sensor // diff --git a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h index d00b21c30b..3f0d4e5ee9 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h @@ -59,13 +59,13 @@ #if HAS_EXTRA_ENDSTOPS #define _ENDSTOP_IS_ANY(ES) X2_USE_ENDSTOP == ES || Y2_USE_ENDSTOP == ES || Z2_USE_ENDSTOP == ES || Z3_USE_ENDSTOP == ES || Z4_USE_ENDSTOP == ES #if _ENDSTOP_IS_ANY(_XMIN_) || _ENDSTOP_IS_ANY(_XMAX_) - #define NEEDS_X_MINMAX 1 + #define NEEDS_X_MINMAX #endif #if _ENDSTOP_IS_ANY(_YMIN_) || _ENDSTOP_IS_ANY(_YMAX_) - #define NEEDS_Y_MINMAX 1 + #define NEEDS_Y_MINMAX #endif #if _ENDSTOP_IS_ANY(_ZMIN_) || _ENDSTOP_IS_ANY(_ZMAX_) - #define NEEDS_Z_MINMAX 1 + #define NEEDS_Z_MINMAX #endif #undef _ENDSTOP_IS_ANY #endif @@ -88,7 +88,7 @@ #ifdef Y_STALL_SENSITIVITY #define Y_STOP_PIN Y_DIAG_PIN // Y- -#elif NEEDS_Y_MINMAX +#elif ENABLED(NEEDS_Y_MINMAX) #ifndef Y_MIN_PIN #define Y_MIN_PIN Y_DIAG_PIN // Y- #endif @@ -101,7 +101,7 @@ #ifdef Z_STALL_SENSITIVITY #define Z_STOP_PIN Z_DIAG_PIN // Z- -#elif NEEDS_Z_MINMAX +#elif ENABLED(NEEDS_Z_MINMAX) #ifndef Z_MIN_PIN #define Z_MIN_PIN Z_DIAG_PIN // Z- #endif @@ -118,10 +118,6 @@ #endif #endif -#undef NEEDS_X_MINMAX -#undef NEEDS_Y_MINMAX -#undef NEEDS_Z_MINMAX - // // Steppers // diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h index 0d4a74b6f9..6516538c44 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h @@ -81,10 +81,10 @@ #if HAS_EXTRA_ENDSTOPS #define _ENDSTOP_IS_ANY(ES) X2_USE_ENDSTOP == ES || Y2_USE_ENDSTOP == ES || Z2_USE_ENDSTOP == ES || Z3_USE_ENDSTOP == ES || Z4_USE_ENDSTOP == ES #if _ENDSTOP_IS_ANY(_XMIN_) || _ENDSTOP_IS_ANY(_XMAX_) - #define NEEDS_X_MINMAX 1 + #define NEEDS_X_MINMAX #endif #if _ENDSTOP_IS_ANY(_YMIN_) || _ENDSTOP_IS_ANY(_YMAX_) - #define NEEDS_Y_MINMAX 1 + #define NEEDS_Y_MINMAX #endif #undef _ENDSTOP_IS_ANY #endif @@ -117,7 +117,7 @@ #else #define Y_MIN_PIN E1_DIAG_PIN // MIN6 #endif -#elif NEEDS_Y_MINMAX +#elif ENABLED(NEEDS_Y_MINMAX) #ifndef Y_MIN_PIN #define Y_MIN_PIN Y_DIAG_PIN // MIN2 #endif @@ -130,9 +130,6 @@ #define Z_STOP_PIN Z_DIAG_PIN // MIN3 -#undef NEEDS_X_MINMAX -#undef NEEDS_Y_MINMAX - // // Filament Runout Sensors // diff --git a/Marlin/src/pins/stm32h7/env_validate.h b/Marlin/src/pins/stm32h7/env_validate.h new file mode 100644 index 0000000000..0c515e5df6 --- /dev/null +++ b/Marlin/src/pins/stm32h7/env_validate.h @@ -0,0 +1,26 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#if NOT_TARGET(STM32H7) + #error "Oops! Select an STM32H7 board in 'Tools > Board.'" +#endif diff --git a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h new file mode 100644 index 0000000000..80ea354982 --- /dev/null +++ b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h @@ -0,0 +1,545 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "env_validate.h" + +#define BOARD_INFO_NAME "OCTOPUS MAX EZ V1.0" + +#define USES_DIAG_JUMPERS + +// Onboard I2C EEPROM +#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM) + #undef NO_EEPROM_SELECTED + #define I2C_EEPROM + #define SOFT_I2C_EEPROM // Force the use of Software I2C + #define I2C_SCL_PIN PB10 + #define I2C_SDA_PIN PB11 + #define MARLIN_EEPROM_SIZE 0x1000 // 4KB +#endif + +// Avoid conflict with TIMER_TONE +#define STEP_TIMER 8 + +// +// Servos +// +#define SERVO0_PIN PB14 + +// +// Misc. Functions +// +#define LED_PIN PA14 + +// +// Trinamic Stallguard pins +// +#define X_DIAG_PIN PF0 // M1-STOP +#define Y_DIAG_PIN PF2 // M2-STOP +#define Z_DIAG_PIN PF4 // M3-STOP +#define Z2_DIAG_PIN PF3 // M4-STOP +#define E0_DIAG_PIN PF1 // M5-STOP +#define E1_DIAG_PIN PC15 // M6-STOP +#define E2_DIAG_PIN PF12 // PWRDET + +// +// Z Probe (when not Z_MIN_PIN) +// +#ifndef Z_MIN_PROBE_PIN + #define Z_MIN_PROBE_PIN PB15 +#endif + +// +// Check for additional used endstop pins +// +#if HAS_EXTRA_ENDSTOPS + #define _ENDSTOP_IS_ANY(ES) X2_USE_ENDSTOP == ES || Y2_USE_ENDSTOP == ES || Z2_USE_ENDSTOP == ES || Z3_USE_ENDSTOP == ES || Z4_USE_ENDSTOP == ES + #if _ENDSTOP_IS_ANY(_XMIN_) || _ENDSTOP_IS_ANY(_XMAX_) + #define NEEDS_X_MINMAX + #endif + #if _ENDSTOP_IS_ANY(_YMIN_) || _ENDSTOP_IS_ANY(_YMAX_) + #define NEEDS_Y_MINMAX + #endif + #if _ENDSTOP_IS_ANY(_ZMIN_) || _ENDSTOP_IS_ANY(_ZMAX_) + #define NEEDS_Z_MINMAX + #endif + #undef _ENDSTOP_IS_ANY +#endif + +// +// Limit Switches +// +#ifdef X_STALL_SENSITIVITY + #define X_STOP_PIN X_DIAG_PIN + #if X_HOME_TO_MIN + #define X_MAX_PIN E0_DIAG_PIN // E0DET + #else + #define X_MIN_PIN E0_DIAG_PIN // E0DET + #endif +#elif EITHER(DUAL_X_CARRIAGE, NEEDS_X_MINMAX) + #ifndef X_MIN_PIN + #define X_MIN_PIN X_DIAG_PIN // X-STOP + #endif + #ifndef X_MAX_PIN + #define X_MAX_PIN E0_DIAG_PIN // E0DET + #endif +#else + #define X_STOP_PIN X_DIAG_PIN // X-STOP +#endif + +#ifdef Y_STALL_SENSITIVITY + #define Y_STOP_PIN Y_DIAG_PIN + #if Y_HOME_TO_MIN + #define Y_MAX_PIN E1_DIAG_PIN // E1DET + #else + #define Y_MIN_PIN E1_DIAG_PIN // E1DET + #endif +#elif ENABLED(NEEDS_Y_MINMAX) + #ifndef Y_MIN_PIN + #define Y_MIN_PIN Y_DIAG_PIN // Y-STOP + #endif + #ifndef Y_MAX_PIN + #define Y_MAX_PIN E1_DIAG_PIN // E1DET + #endif +#else + #define Y_STOP_PIN Y_DIAG_PIN // Y-STOP +#endif + +#ifdef Z_STALL_SENSITIVITY + #define Z_STOP_PIN Z_DIAG_PIN + #if Z_HOME_TO_MIN + #define Z_MAX_PIN E2_DIAG_PIN // PWRDET + #else + #define Z_MIN_PIN E2_DIAG_PIN // PWRDET + #endif +#elif ENABLED(NEEDS_Z_MINMAX) + #ifndef Z_MIN_PIN + #define Z_MIN_PIN Z_DIAG_PIN // Z-STOP + #endif + #ifndef Z_MAX_PIN + #define Z_MAX_PIN E2_DIAG_PIN // PWRDET + #endif +#else + #define Z_STOP_PIN Z_DIAG_PIN // Z-STOP +#endif + +// +// Filament Runout Sensor +// +#define FIL_RUNOUT_PIN PF1 // E0DET +#define FIL_RUNOUT2_PIN PF15 // E1DET + +// +// Power Supply Control +// +#ifndef PS_ON_PIN + #define PS_ON_PIN PF13 // PS-ON +#endif + +// +// Power Loss Detection +// +#ifndef POWER_LOSS_PIN + #define POWER_LOSS_PIN PF12 // PWRDET +#endif + +// +// Steppers +// +#define X_STEP_PIN PC13 // MOTOR 1 +#define X_DIR_PIN PC14 +#define X_ENABLE_PIN PE6 +#ifndef X_CS_PIN + #define X_CS_PIN PG14 +#endif + +#define Y_STEP_PIN PE4 // MOTOR 2 +#define Y_DIR_PIN PE5 +#define Y_ENABLE_PIN PE3 +#ifndef Y_CS_PIN + #define Y_CS_PIN PG13 +#endif + +#define Z_STEP_PIN PE1 // MOTOR 3 +#define Z_DIR_PIN PE0 +#define Z_ENABLE_PIN PE2 +#ifndef Z_CS_PIN + #define Z_CS_PIN PG12 +#endif + +#define Z2_STEP_PIN PB8 // MOTOR 4 +#define Z2_DIR_PIN PB9 +#define Z2_ENABLE_PIN PB7 +#ifndef Z2_CS_PIN + #define Z2_CS_PIN PG11 +#endif + +#define E0_STEP_PIN PB5 // MOTOR 5 +#define E0_DIR_PIN PB4 +#define E0_ENABLE_PIN PB6 +#ifndef E0_CS_PIN + #define E0_CS_PIN PG10 +#endif + +#define E1_STEP_PIN PG15 // MOTOR 6 +#define E1_DIR_PIN PB3 +#define E1_ENABLE_PIN PD5 +#ifndef E1_CS_PIN + #define E1_CS_PIN PG9 +#endif + +#define E2_STEP_PIN PD3 // MOTOR 7 +#define E2_DIR_PIN PD2 +#define E2_ENABLE_PIN PD4 +#ifndef E2_CS_PIN + #define E2_CS_PIN PD7 +#endif + +#define E3_STEP_PIN PA10 // MOTOR 8 +#define E3_DIR_PIN PA9 +#define E3_ENABLE_PIN PA15 +#ifndef E3_CS_PIN + #define E3_CS_PIN PD6 +#endif + +#define E4_STEP_PIN PA8 // MOTOR 9 +#define E4_DIR_PIN PC7 +#define E4_ENABLE_PIN PC9 +#ifndef E4_CS_PIN + #define E4_CS_PIN PG8 +#endif + +#define E5_STEP_PIN PG6 // MOTOR 10 +#define E5_DIR_PIN PC6 +#define E5_ENABLE_PIN PC8 +#ifndef E5_CS_PIN + #define E5_CS_PIN PG7 +#endif + +// +// Temperature Sensors +// +#define TEMP_BED_PIN PB1 // TB +#define TEMP_0_PIN PB0 // TH0 +#define TEMP_1_PIN PC5 // TH1 +#define TEMP_2_PIN PC4 // TH2 +#define TEMP_3_PIN PA7 // TH3 + +// +// Heaters / Fans +// +#define HEATER_BED_PIN PF5 // Hotbed +#define HEATER_0_PIN PF6 // Heater0 +#define HEATER_1_PIN PA0 // Heater1 +#define HEATER_2_PIN PF9 // Heater2 +#define HEATER_3_PIN PF7 // Heater3 + +#define FAN_PIN PA6 // Fan0 +#define FAN1_PIN PA5 // Fan1 +#define FAN2_PIN PA4 // Fan2 +#define FAN3_PIN PA3 // Fan3 +#define FAN4_PIN PA1 // 4 wire Fan4 +#define FAN5_PIN PF8 // 4 wire Fan5 +#define FAN6_PIN PA2 // 4 wire Fan6 + +// +// SD Support +// +#ifndef SDCARD_CONNECTION + #if HAS_WIRED_LCD + #define SDCARD_CONNECTION LCD + #else + #define SDCARD_CONNECTION ONBOARD + #endif +#endif + +// +// Software SPI pins for TMC2130 stepper drivers +// +#if ENABLED(TMC_USE_SW_SPI) + #ifndef TMC_SW_MOSI + #define TMC_SW_MOSI PE14 + #endif + #ifndef TMC_SW_MISO + #define TMC_SW_MISO PE13 + #endif + #ifndef TMC_SW_SCK + #define TMC_SW_SCK PE12 + #endif +#endif + +#if HAS_TMC_UART + /** + * TMC2208/TMC2209 stepper drivers + * + * Hardware serial communication ports. + * If undefined software serial is used according to the pins below + */ + //#define X_HARDWARE_SERIAL Serial1 + //#define X2_HARDWARE_SERIAL Serial1 + //#define Y_HARDWARE_SERIAL Serial1 + //#define Y2_HARDWARE_SERIAL Serial1 + //#define Z_HARDWARE_SERIAL Serial1 + //#define Z2_HARDWARE_SERIAL Serial1 + //#define E0_HARDWARE_SERIAL Serial1 + //#define E1_HARDWARE_SERIAL Serial1 + //#define E2_HARDWARE_SERIAL Serial1 + //#define E3_HARDWARE_SERIAL Serial1 + //#define E4_HARDWARE_SERIAL Serial1 + + #define X_SERIAL_TX_PIN PG14 + #define X_SERIAL_RX_PIN X_SERIAL_TX_PIN + + #define Y_SERIAL_TX_PIN PG13 + #define Y_SERIAL_RX_PIN Y_SERIAL_TX_PIN + + #define Z_SERIAL_TX_PIN PG12 + #define Z_SERIAL_RX_PIN Z_SERIAL_TX_PIN + + #define Z2_SERIAL_TX_PIN PG11 + #define Z2_SERIAL_RX_PIN Z2_SERIAL_TX_PIN + + #define E0_SERIAL_TX_PIN PG10 + #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN + + #define E1_SERIAL_TX_PIN PG9 + #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN + + #define E2_SERIAL_TX_PIN PD7 + #define E2_SERIAL_RX_PIN E2_SERIAL_TX_PIN + + #define E3_SERIAL_TX_PIN PD6 + #define E3_SERIAL_RX_PIN E3_SERIAL_TX_PIN + + #define E4_SERIAL_TX_PIN PG8 + #define E4_SERIAL_RX_PIN E3_SERIAL_TX_PIN + + #define E5_SERIAL_TX_PIN PG7 + #define E5_SERIAL_RX_PIN E3_SERIAL_TX_PIN + + // Reduce baud rate to improve software serial reliability + #define TMC_BAUD_RATE 19200 +#endif + +/** + * ---- + * (MISO) PE13 | 1 | + * (SCK) PE12 | 2 | + * (BTN_EN1) PG5 | 3 | + * (SD_SS) PE11 | 4 | + * (BTN_EN2) PG4 | 5 | + * (MOSI) PE14 | 6 | + * (SD_DETECT) PG3 | 7 | + * RESET | 8 | + * (BEEPER) PG2 | 9 | + * (BTN_ENC) PD15 | 10 | + * (LCD_EN) PD14 | 11 | + * (LCD_RS) PD13 | 12 | + * (LCD_D4) PD12 | 13 | + * (LCD_D5) PD11 | 14 | + * (LCD_D6) PD10 | 15 | + * (LCD_D7) PE15 | 16 | + * GND | 17 | + * 5V | 18 | + * ---- + * LCD + */ + +#define EXP1_01_PIN PG2 +#define EXP1_02_PIN PD15 +#define EXP1_03_PIN PD14 +#define EXP1_04_PIN PD13 +#define EXP1_05_PIN PD12 +#define EXP1_06_PIN PD11 +#define EXP1_07_PIN PD10 +#define EXP1_08_PIN PE15 + +#define EXP2_01_PIN PE13 +#define EXP2_02_PIN PE12 +#define EXP2_03_PIN PG5 +#define EXP2_04_PIN PE11 +#define EXP2_05_PIN PG4 +#define EXP2_06_PIN PE14 +#define EXP2_07_PIN PG3 +#define EXP2_08_PIN -1 + +// +// Onboard SD card +// Must use soft SPI because Marlin's default hardware SPI is tied to LCD's EXP2 +// +#if SD_CONNECTION_IS(ONBOARD) + #ifndef SD_DETECT_STATE + #define SD_DETECT_STATE HIGH + #elif SD_DETECT_STATE == LOW + #error "BOARD_BTT_OCTOPUS_MAX_EZ onboard SD requires SD_DETECT_STATE set to HIGH." + #endif + #define SDSS PB12 + #define SD_SS_PIN SDSS + #define SD_SCK_PIN PE12 + #define SD_MISO_PIN PE13 + #define SD_MOSI_PIN PE14 + #define SD_DETECT_PIN PB13 + #define SOFTWARE_SPI +#elif SD_CONNECTION_IS(LCD) + #define SDSS EXP2_04_PIN + #define SD_SS_PIN SDSS + #define SD_SCK_PIN EXP2_02_PIN + #define SD_MISO_PIN EXP2_01_PIN + #define SD_MOSI_PIN EXP2_06_PIN + #define SD_DETECT_PIN EXP2_07_PIN + #define SOFTWARE_SPI +#elif SD_CONNECTION_IS(CUSTOM_CABLE) + #error "CUSTOM_CABLE is not a supported SDCARD_CONNECTION for this board" +#endif + +// +// LCDs and Controllers +// +#if IS_TFTGLCD_PANEL + + #if ENABLED(TFTGLCD_PANEL_SPI) + #define TFTGLCD_CS EXP2_03_PIN + #endif + +#elif HAS_WIRED_LCD + + #define BEEPER_PIN EXP1_01_PIN + #define BTN_ENC EXP1_02_PIN + + #if ENABLED(CR10_STOCKDISPLAY) + + #define LCD_PINS_RS EXP1_07_PIN + + #define BTN_EN1 EXP1_03_PIN + #define BTN_EN2 EXP1_05_PIN + + #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_D4 EXP1_06_PIN + + #else + + #define LCD_PINS_RS EXP1_04_PIN + + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_D4 EXP1_05_PIN + + #if ENABLED(FYSETC_MINI_12864) + #define DOGLCD_CS EXP1_03_PIN + #define DOGLCD_A0 EXP1_04_PIN + #define DOGLCD_SCK EXP2_02_PIN + #define DOGLCD_MOSI EXP2_06_PIN + + #define SOFTWARE_SPI + #define FORCE_SOFT_SPI // Use this if default of hardware SPI causes display problems + // results in LCD soft SPI mode 3, SD soft SPI mode 0 + //#define LCD_BACKLIGHT_PIN -1 + #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. + #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #ifndef RGB_LED_R_PIN + #define RGB_LED_R_PIN EXP1_06_PIN + #endif + #ifndef RGB_LED_G_PIN + #define RGB_LED_G_PIN EXP1_07_PIN + #endif + #ifndef RGB_LED_B_PIN + #define RGB_LED_B_PIN EXP1_08_PIN + #endif + #elif ENABLED(FYSETC_MINI_12864_2_1) + #define NEOPIXEL_PIN EXP1_06_PIN + #endif + #endif // !FYSETC_MINI_12864 + + #if IS_ULTIPANEL + #define LCD_PINS_D5 EXP1_06_PIN + #define LCD_PINS_D6 EXP1_07_PIN + #define LCD_PINS_D7 EXP1_08_PIN + + #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define BTN_ENC_EN LCD_PINS_D7 // Detect the presence of the encoder + #endif + + #endif + + #endif +#endif // HAS_WIRED_LCD + +// Alter timing for graphical display +#if IS_U8GLIB_ST7920 + #define BOARD_ST7920_DELAY_1 120 + #define BOARD_ST7920_DELAY_2 80 + #define BOARD_ST7920_DELAY_3 580 +#endif + +#if HAS_SPI_TFT + #define TFT_CS_PIN EXP2_04_PIN + #define TFT_A0_PIN EXP2_07_PIN + #define TFT_SCK_PIN EXP2_02_PIN + #define TFT_MISO_PIN EXP2_01_PIN + #define TFT_MOSI_PIN EXP2_06_PIN + + #define TOUCH_INT_PIN EXP1_07_PIN + #define TOUCH_MISO_PIN EXP1_06_PIN + #define TOUCH_MOSI_PIN EXP1_03_PIN + #define TOUCH_SCK_PIN EXP1_05_PIN + #define TOUCH_CS_PIN EXP1_04_PIN + + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + #define BTN_ENC EXP1_02_PIN +#endif + +// +// NeoPixel LED +// +#ifndef NEOPIXEL_PIN + #define NEOPIXEL_PIN PE10 +#endif + +#ifndef NEOPIXEL2_PIN + #define NEOPIXEL2_PIN PE9 +#endif + +// +// WIFI +// + +/** + * ------- + * GND | 9 | | 8 | 3.3V + * (ESP-CS) PG1 | 10 | | 7 | PB15 (ESP-MOSI) + * 3.3V | 11 | | 6 | PB14 (ESP-MISO) + * (ESP-IO0) PG0 | 12 | | 5 | PB13 (ESP-CLK) + * (ESP-IO4) PF15 | 13 | | 4 | -- + * -- | 14 | | 3 | 3.3V (ESP-EN) + * (ESP-RX) PE7 | 15 | | 2 | -- + * (ESP-TX) PE8 | 16 | | 1 | PB2 (ESP-RST) + * ------- + * WIFI + */ +#define ESP_WIFI_MODULE_COM 7 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this +#define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 +#define ESP_WIFI_MODULE_RESET_PIN PB2 +#define ESP_WIFI_MODULE_GPIO0_PIN PG0 +#define ESP_WIFI_MODULE_GPIO4_PIN PF15 diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h index 1ee7846c93..d06e27d9c0 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h @@ -21,9 +21,7 @@ */ #pragma once -#if NOT_TARGET(STM32H7) - #error "Oops! Select an STM32H7 board in 'Tools > Board.'" -#endif +#include "env_validate.h" #define DEFAULT_MACHINE_NAME "Biqu BX" diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h index eaceafe29e..809a1f3f8c 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h @@ -21,9 +21,7 @@ */ #pragma once -#if NOT_TARGET(STM32H7) - #error "Oops! Select an STM32H7 board in 'Tools > Board.'" -#endif +#include "env_validate.h" // If you have the BigTreeTech driver expansion module, enable BTT_MOTOR_EXPANSION // https://github.com/bigtreetech/BTT-Expansion-module/tree/master/BTT%20EXP-MOT diff --git a/buildroot/share/PlatformIO/boards/marlin_BTT_SKR_SE_BX.json b/buildroot/share/PlatformIO/boards/marlin_BTT_SKR_SE_BX.json index 65735d433b..3ed21e393b 100644 --- a/buildroot/share/PlatformIO/boards/marlin_BTT_SKR_SE_BX.json +++ b/buildroot/share/PlatformIO/boards/marlin_BTT_SKR_SE_BX.json @@ -3,7 +3,7 @@ "core": "stm32", "cpu": "cortex-m7", "extra_flags": "-DSTM32H743xx", - "f_cpu": "400000000L", + "f_cpu": "480000000L", "mcu": "stm32h743iit6", "variant": "MARLIN_BTT_SKR_SE_BX" }, diff --git a/buildroot/share/PlatformIO/boards/marlin_STM32H723Vx.json b/buildroot/share/PlatformIO/boards/marlin_STM32H723Vx.json new file mode 100644 index 0000000000..73620c162d --- /dev/null +++ b/buildroot/share/PlatformIO/boards/marlin_STM32H723Vx.json @@ -0,0 +1,61 @@ +{ + "build": { + "core": "stm32", + "cpu": "cortex-m7", + "extra_flags": "-DSTM32H7xx -DSTM32H723xx", + "f_cpu": "550000000L", + "mcu": "stm32h723vet6", + "product_line": "STM32H723xx", + "variant": "MARLIN_H723vx" + }, + "connectivity": [ + "can", + "ethernet" + ], + "debug": { + "jlink_device": "STM32H723VE", + "openocd_target": "stm32h7x", + "svd_path": "STM32H7x3.svd", + "tools": { + "stlink": { + "server": { + "arguments": [ + "-f", + "scripts/interface/stlink.cfg", + "-c", + "transport select hla_swd", + "-f", + "scripts/target/stm32h7x.cfg", + "-c", + "reset_config none" + ], + "executable": "bin/openocd", + "package": "tool-openocd" + } + } + } + }, + "frameworks": [ + "arduino", + "stm32cube" + ], + "name": "STM32H723VE (564k RAM. 512k Flash)", + "upload": { + "disable_flushing": false, + "maximum_ram_size": 577536, + "maximum_size": 524288, + "protocol": "stlink", + "protocols": [ + "stlink", + "dfu", + "jlink", + "cmsis-dap" + ], + "offset_address": "0x8020000", + "require_upload_port": true, + "use_1200bps_touch": false, + "wait_for_upload_port": false + }, + "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32h723ze.html", + "vendor": "ST" +} diff --git a/buildroot/share/PlatformIO/boards/marlin_STM32H723Zx.json b/buildroot/share/PlatformIO/boards/marlin_STM32H723Zx.json new file mode 100644 index 0000000000..8525793c4e --- /dev/null +++ b/buildroot/share/PlatformIO/boards/marlin_STM32H723Zx.json @@ -0,0 +1,61 @@ +{ + "build": { + "core": "stm32", + "cpu": "cortex-m7", + "extra_flags": "-DSTM32H7xx -DSTM32H723xx", + "f_cpu": "550000000L", + "mcu": "stm32h723zet6", + "product_line": "STM32H723xx", + "variant": "MARLIN_H723Zx" + }, + "connectivity": [ + "can", + "ethernet" + ], + "debug": { + "jlink_device": "STM32H723ZE", + "openocd_target": "stm32h7x", + "svd_path": "STM32H7x3.svd", + "tools": { + "stlink": { + "server": { + "arguments": [ + "-f", + "scripts/interface/stlink.cfg", + "-c", + "transport select hla_swd", + "-f", + "scripts/target/stm32h7x.cfg", + "-c", + "reset_config none" + ], + "executable": "bin/openocd", + "package": "tool-openocd" + } + } + } + }, + "frameworks": [ + "arduino", + "stm32cube" + ], + "name": "STM32H723ZE (564k RAM. 512k Flash)", + "upload": { + "disable_flushing": false, + "maximum_ram_size": 577536, + "maximum_size": 524288, + "protocol": "stlink", + "protocols": [ + "stlink", + "dfu", + "jlink", + "cmsis-dap" + ], + "offset_address": "0x8020000", + "require_upload_port": true, + "use_1200bps_touch": false, + "wait_for_upload_port": false + }, + "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32h723ze.html", + "vendor": "ST" +} diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/PeripheralPins.c new file mode 100644 index 0000000000..e484edd1ad --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/PeripheralPins.c @@ -0,0 +1,590 @@ +/* + ******************************************************************************* + * Copyright (c) 2020, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ +/* + * Automatically generated from STM32H723VEHx.xml, STM32H723VETx.xml + * STM32H723VGHx.xml, STM32H723VGTx.xml + * STM32H730VBHx.xml, STM32H730VBTx.xml + * STM32H733VGHx.xml, STM32H733VGTx.xml + * CubeMX DB release 6.0.60 + */ +#if !defined(CUSTOM_PERIPHERAL_PINS) +#include "Arduino.h" +#include "PeripheralPins.h" + +/* ===== + * Notes: + * - The pins mentioned Px_y_ALTz are alternative possibilities which use other + * HW peripheral instances. You can use them the same way as any other "normal" + * pin (i.e. analogWrite(PA7_ALT1, 128);). + * + * - Commented lines are alternative possibilities which are not used per default. + * If you change them, you will have to know what you do + * ===== + */ + +//*** ADC *** + +#ifdef HAL_ADC_MODULE_ENABLED +WEAK const PinMap PinMap_ADC[] = { + {PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_INP16 + {PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_INP17 + {PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_INP14 + {PA_2_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC2_INP14 + {PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_INP15 + {PA_3_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC2_INP15 + {PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_INP18 + {PA_4_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC2_INP18 + {PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 19, 0)}, // ADC1_INP19 + {PA_5_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 19, 0)}, // ADC2_INP19 + {PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_INP3 + {PA_6_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC2_INP3 + {PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_INP7 + {PA_7_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC2_INP7 + {PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_INP9 + {PB_0_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC2_INP9 + {PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_INP5 + {PB_1_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC2_INP5 + {PC_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_INP10 + {PC_0_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC2_INP10 + {PC_0_ALT2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC3_INP10 + {PC_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_INP11 + {PC_1_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_INP11 + {PC_1_ALT2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC3_INP11 + {PC_2_C, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC3_INP0 + {PC_3_C, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_INP1 + {PC_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_INP4 + {PC_4_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC2_INP4 + {PC_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_INP8 + {PC_5_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC2_INP8 + {NC, NP, 0} +}; +#endif + +//*** DAC *** + +#ifdef HAL_DAC_MODULE_ENABLED +WEAK const PinMap PinMap_DAC[] = { + {PA_4, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC1_OUT1 + {PA_5, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC1_OUT2 + {NC, NP, 0} +}; +#endif + +//*** I2C *** + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SDA[] = { + {PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_7_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, + {PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_9_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, + {PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PC_9, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + {PC_9_ALT1, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C5)}, + {PC_10, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C5)}, + {PD_13, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SCL[] = { + {PA_8, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + {PA_8_ALT1, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C5)}, + {PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_6_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, + {PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_8_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, + {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PC_11, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C5)}, + {PD_12, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, + {NC, NP, 0} +}; +#endif + +//*** TIM *** + +#ifdef HAL_TIM_MODULE_ENABLED +WEAK const PinMap PinMap_TIM[] = { + {PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + {PA_0_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1 + {PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 + {PA_1_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2 + {PA_1_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 1)}, // TIM15_CH1N + {PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 + {PA_2_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3 + {PA_2_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 0)}, // TIM15_CH1 + {PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 + {PA_3_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 4, 0)}, // TIM5_CH4 + {PA_3_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 2, 0)}, // TIM15_CH2 + {PA_5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + {PA_5_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N + {PA_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PA_6_ALT1, TIM13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1 + {PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PA_7_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PA_7_ALT2, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N + {PA_7_ALT3, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1 + {PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 + {PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + {PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + {PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + {PA_15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + {PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PB_0_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 + {PB_0_ALT2, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N + {PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PB_1_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 + {PB_1_ALT2, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N + {PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 + {PB_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PB_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PB_6, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 + {PB_6_ALT1, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 1)}, // TIM16_CH1N + {PB_7, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 + {PB_7_ALT1, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17, 1, 1)}, // TIM17_CH1N + {PB_8, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 + {PB_8_ALT1, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 0)}, // TIM16_CH1 + {PB_9, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 + {PB_9_ALT1, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17, 1, 0)}, // TIM17_CH1 + {PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 + {PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 + {PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PB_14_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N + {PB_14_ALT2, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM12, 1, 0)}, // TIM12_CH1 + {PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PB_15_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N + {PB_15_ALT2, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM12, 2, 0)}, // TIM12_CH2 + {PC_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PC_6_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1 + {PC_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PC_7_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2 + {PC_8, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 + {PC_8_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 0)}, // TIM8_CH3 + {PC_9, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 + {PC_9_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 4, 0)}, // TIM8_CH4 + {PC_12, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM15, 1, 0)}, // TIM15_CH1 + {PD_12, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 + {PD_13, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 + {PD_14, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 + {PD_15, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 + {PE_4, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 1)}, // TIM15_CH1N + {PE_5, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 0)}, // TIM15_CH1 + {PE_6, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 2, 0)}, // TIM15_CH2 + {PE_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PE_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 + {PE_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PE_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + {PE_12, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PE_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + {PE_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + {NC, NP, 0} +}; +#endif + +//*** UART *** + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_TX[] = { + {PA_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PA_2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_9, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, + {PA_9_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PA_12, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_UART4)}, + {PA_15, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, + {PB_4, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, + {PB_6, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART)}, + {PB_6_ALT1, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, + {PB_6_ALT2, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_9, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PB_13, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, + {PB_14, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)}, + {PC_6, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, + {PC_10, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PC_10_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PC_12, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_1, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PD_5, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_8, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_15, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, + {PE_1, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, + {PE_3, USART10, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_USART10)}, + {PE_8, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_RX[] = { + {PA_1, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PA_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_8, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, + {PA_10, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, + {PA_10_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PA_11, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_UART4)}, + {PB_3, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, + {PB_5, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, + {PB_7, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART)}, + {PB_7_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_8, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PB_12, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, + {PB_15, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)}, + {PC_7, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, + {PC_11, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PC_11_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PD_2, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_6, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_9, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_14, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, + {PE_0, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, + {PE_2, USART10, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART10)}, + {PE_7, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_RTS[] = { + {PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_12, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, + {PA_12_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PA_15, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_14, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_14_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PC_8, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_4, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_12, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_13, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, + {PD_15, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, + {PE_9, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_CTS[] = { + {PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_11, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, + {PA_11_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_13, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PB_15, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PC_9, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_0, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, + {PD_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_14, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, + {PE_10, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {NC, NP, 0} +}; +#endif + +//*** SPI *** + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MOSI[] = { + {PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_7_ALT1, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_2, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI3)}, + {PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_5_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI3)}, + {PB_5_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_1, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_3_C, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_12, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PD_6, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI3)}, + {PD_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PE_6, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PE_14, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MISO[] = { + {PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_6_ALT1, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_4_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_2_C, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_11, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PE_5, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PE_13, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_SCLK[] = { + {PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_5_ALT1, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PA_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PA_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_3_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_3_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_10, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PC_12, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI6)}, + {PD_3, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PE_2, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PE_12, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_SSEL[] = { + {PA_0, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI6)}, + {PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PA_4_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PA_11, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_15_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PA_15_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI6)}, + {PB_4, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI2)}, + {PB_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PE_4, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PE_11, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {NC, NP, 0} +}; +#endif + +//*** FDCAN *** + +#ifdef HAL_FDCAN_MODULE_ENABLED +WEAK const PinMap PinMap_CAN_RD[] = { + {PA_11, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PB_5, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, + {PB_8, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PB_12, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, + {PD_0, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PD_12, FDCAN3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_FDCAN3)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_FDCAN_MODULE_ENABLED +WEAK const PinMap PinMap_CAN_TD[] = { + {PA_12, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PB_6, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, + {PB_9, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PB_13, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, + {PD_1, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PD_13, FDCAN3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_FDCAN3)}, + {NC, NP, 0} +}; +#endif + +//*** ETHERNET *** + +#if defined(HAL_ETH_MODULE_ENABLED) || defined(HAL_ETH_LEGACY_MODULE_ENABLED) +WEAK const PinMap PinMap_Ethernet[] = { + {PA_0, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_CRS + {PA_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_REF_CLK + {PA_1_ALT1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RX_CLK + {PA_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_MDIO + {PA_3, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_COL + {PA_7, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_CRS_DV + {PA_7_ALT1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RX_DV + {PA_9, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_ER + {PB_0, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD2 + {PB_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD3 + {PB_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_ER + {PB_5, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_PPS_OUT + {PB_8, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD3 + {PB_10, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RX_ER + {PB_11, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_EN + {PB_12, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD0 + {PB_13, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD1 + {PC_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_MDC + {PC_2_C, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD2 + {PC_3_C, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_CLK + {PC_4, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD0 + {PC_5, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD1 + {PE_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD3 + {NC, NP, 0} +}; +#endif + +//*** OCTOSPI *** + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA0[] = { + {PA_2, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PB_1, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PB_12, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PC_3_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PC_9, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PD_11, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA1[] = { + {PB_0, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1 + {PC_10, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1 + {PD_12, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA2[] = { + {PA_3, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {PA_7, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {PB_13, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {PC_2_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {PE_2, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA3[] = { + {PA_1, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3 + {PA_6, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3 + {PD_13, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA4[] = { + {PC_1, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4 + {PD_4, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4 + {PE_7, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA5[] = { + {PC_2_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO5 + {PD_5, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO5 + {PE_8, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO5 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA6[] = { + {PC_3_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6 + {PD_6, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6 + {PE_9, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA7[] = { + {PD_7, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO7 + {PE_10, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO7 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_SCLK[] = { + {PA_3, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OCTOSPIM_P1)}, // OCTOSPIM_P1_CLK + {PB_2, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_CLK + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_SSEL[] = { + {PB_6, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS + {PB_10, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS + {PC_11, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS + {PE_11, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS + {NC, NP, 0} +}; +#endif + +//*** USB *** + +#if defined(HAL_PCD_MODULE_ENABLED) || defined(HAL_HCD_MODULE_ENABLED) +WEAK const PinMap PinMap_USB_OTG_HS[] = { +#ifdef USE_USB_HS_IN_FS + {PA_8, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_SOF + {PA_9, USB_OTG_HS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_HS_VBUS + {PA_10, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ID + {PA_11, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF_NONE)}, // USB_OTG_HS_DM + {PA_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF_NONE)}, // USB_OTG_HS_DP +#else + {PA_3, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D0 + {PA_5, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_CK + {PB_0, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D1 + {PB_1, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D2 + {PB_5, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D7 + {PB_10, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D3 + {PB_11, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D4 + {PB_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D5 + {PB_13, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D6 + {PC_0, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_STP + {PC_2_C, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_DIR + {PC_3_C, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_NXT +#endif /* USE_USB_HS_IN_FS */ + {NC, NP, 0} +}; +#endif + +//*** SD *** + +#ifdef HAL_SD_MODULE_ENABLED +WEAK const PinMap PinMap_SD[] = { + {PA_0, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_SDMMC2)}, // SDMMC2_CMD + {PB_3, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D2 + {PB_4, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D3 + {PB_8, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF7_SDMMC1)}, // SDMMC1_CKIN + {PB_8_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D4 + {PB_8_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D4 + {PB_9, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF7_SDMMC1)}, // SDMMC1_CDIR + {PB_9_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D5 + {PB_9_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D5 + {PB_13, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D0 + {PB_14, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D0 + {PB_15, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D1 + {PC_1, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_SDMMC2)}, // SDMMC2_CK + {PC_4, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_SDMMC2)}, // SDMMC2_CKIN + {PC_6, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SDMMC1)}, // SDMMC1_D0DIR + {PC_6_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D6 + {PC_6_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D6 + {PC_7, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SDMMC1)}, // SDMMC1_D123DIR + {PC_7_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D7 + {PC_7_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D7 + {PC_8, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D0 + {PC_9, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D1 + {PC_10, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D2 + {PC_11, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D3 + {PC_12, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_SDMMC1)}, // SDMMC1_CK + {PD_2, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_SDMMC1)}, // SDMMC1_CMD + {PD_6, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF11_SDMMC2)}, // SDMMC2_CK + {PD_7, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF11_SDMMC2)}, // SDMMC2_CMD + {NC, NP, 0} +}; +#endif + +#endif /* !CUSTOM_PERIPHERAL_PINS */ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/PinNamesVar.h b/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/PinNamesVar.h new file mode 100644 index 0000000000..3bd0ed8fcd --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/PinNamesVar.h @@ -0,0 +1,108 @@ +/* Dual pad pin name */ +PC_2_C = PC_2 | PDUAL, +PC_3_C = PC_3 | PDUAL, + +/* Alternate pin name */ +PA_0_ALT1 = PA_0 | ALT1, +PA_1_ALT1 = PA_1 | ALT1, +PA_1_ALT2 = PA_1 | ALT2, +PA_2_ALT1 = PA_2 | ALT1, +PA_2_ALT2 = PA_2 | ALT2, +PA_3_ALT1 = PA_3 | ALT1, +PA_3_ALT2 = PA_3 | ALT2, +PA_4_ALT1 = PA_4 | ALT1, +PA_4_ALT2 = PA_4 | ALT2, +PA_5_ALT1 = PA_5 | ALT1, +PA_6_ALT1 = PA_6 | ALT1, +PA_7_ALT1 = PA_7 | ALT1, +PA_7_ALT2 = PA_7 | ALT2, +PA_7_ALT3 = PA_7 | ALT3, +PA_8_ALT1 = PA_8 | ALT1, +PA_9_ALT1 = PA_9 | ALT1, +PA_10_ALT1 = PA_10 | ALT1, +PA_11_ALT1 = PA_11 | ALT1, +PA_12_ALT1 = PA_12 | ALT1, +PA_15_ALT1 = PA_15 | ALT1, +PA_15_ALT2 = PA_15 | ALT2, +PB_0_ALT1 = PB_0 | ALT1, +PB_0_ALT2 = PB_0 | ALT2, +PB_1_ALT1 = PB_1 | ALT1, +PB_1_ALT2 = PB_1 | ALT2, +PB_3_ALT1 = PB_3 | ALT1, +PB_3_ALT2 = PB_3 | ALT2, +PB_4_ALT1 = PB_4 | ALT1, +PB_4_ALT2 = PB_4 | ALT2, +PB_5_ALT1 = PB_5 | ALT1, +PB_5_ALT2 = PB_5 | ALT2, +PB_6_ALT1 = PB_6 | ALT1, +PB_6_ALT2 = PB_6 | ALT2, +PB_7_ALT1 = PB_7 | ALT1, +PB_8_ALT1 = PB_8 | ALT1, +PB_8_ALT2 = PB_8 | ALT2, +PB_9_ALT1 = PB_9 | ALT1, +PB_9_ALT2 = PB_9 | ALT2, +PB_14_ALT1 = PB_14 | ALT1, +PB_14_ALT2 = PB_14 | ALT2, +PB_15_ALT1 = PB_15 | ALT1, +PB_15_ALT2 = PB_15 | ALT2, +PC_0_ALT1 = PC_0 | ALT1, +PC_0_ALT2 = PC_0 | ALT2, +PC_1_ALT1 = PC_1 | ALT1, +PC_1_ALT2 = PC_1 | ALT2, +PC_4_ALT1 = PC_4 | ALT1, +PC_5_ALT1 = PC_5 | ALT1, +PC_6_ALT1 = PC_6 | ALT1, +PC_6_ALT2 = PC_6 | ALT2, +PC_7_ALT1 = PC_7 | ALT1, +PC_7_ALT2 = PC_7 | ALT2, +PC_8_ALT1 = PC_8 | ALT1, +PC_9_ALT1 = PC_9 | ALT1, +PC_10_ALT1 = PC_10 | ALT1, +PC_11_ALT1 = PC_11 | ALT1, + +/* SYS_WKUP */ +#ifdef PWR_WAKEUP_PIN1 + SYS_WKUP1 = PA_0, +#endif +#ifdef PWR_WAKEUP_PIN2 + SYS_WKUP2 = PA_2, +#endif +#ifdef PWR_WAKEUP_PIN3 + SYS_WKUP3 = NC, +#endif +#ifdef PWR_WAKEUP_PIN4 + SYS_WKUP4 = PC_13, +#endif +#ifdef PWR_WAKEUP_PIN5 + SYS_WKUP5 = NC, +#endif +#ifdef PWR_WAKEUP_PIN6 + SYS_WKUP6 = PC_1, +#endif +#ifdef PWR_WAKEUP_PIN7 + SYS_WKUP7 = NC, +#endif +#ifdef PWR_WAKEUP_PIN8 + SYS_WKUP8 = NC, +#endif + +/* USB */ +#ifdef USBCON + USB_OTG_HS_DM = PA_11, + USB_OTG_HS_DP = PA_12, + USB_OTG_HS_ID = PA_10, + USB_OTG_HS_SOF = PA_8, + USB_OTG_HS_ULPI_CK = PA_5, + USB_OTG_HS_ULPI_D0 = PA_3, + USB_OTG_HS_ULPI_D1 = PB_0, + USB_OTG_HS_ULPI_D2 = PB_1, + USB_OTG_HS_ULPI_D3 = PB_10, + USB_OTG_HS_ULPI_D4 = PB_11, + USB_OTG_HS_ULPI_D5 = PB_12, + USB_OTG_HS_ULPI_D6 = PB_13, + USB_OTG_HS_ULPI_D7 = PB_5, + USB_OTG_HS_ULPI_DIR = PC_2_C, + USB_OTG_HS_ULPI_NXT = PC_3_C, + USB_OTG_HS_ULPI_STP = PC_0, + USB_OTG_HS_VBUS = PA_9, +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/ldscript.ld b/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/ldscript.ld new file mode 100644 index 0000000000..6322861033 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/ldscript.ld @@ -0,0 +1,174 @@ +/* +****************************************************************************** +** +** File : LinkerScript.ld +** +** Author : STM32CubeIDE +** +** Abstract : Linker script for STM32H7 series +** 512Kbytes FLASH and 560Kbytes RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +***************************************************************************** +** @attention +** +** Copyright (c) 2022 STMicroelectronics. +** All rights reserved. +** +** This software is licensed under terms that can be found in the LICENSE file +** in the root directory of this software component. +** If no LICENSE file comes with this software, it is provided AS-IS. +** +**************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = ORIGIN(RAM_D1) + LENGTH(RAM_D1); /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200 ; /* required amount of heap */ +_Min_Stack_Size = 0x400 ; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ + ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K + DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K + FLASH (rx) : ORIGIN = 0x8000000 + LD_FLASH_OFFSET, LENGTH = LD_MAX_SIZE - LD_FLASH_OFFSET + RAM_D1 (xrw) : ORIGIN = 0x24000000, LENGTH = 320K + RAM_D2 (xrw) : ORIGIN = 0x30000000, LENGTH = 32K + RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 16K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + *(.RamFunc) /* .RamFunc sections */ + *(.RamFunc*) /* .RamFunc* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM_D1 AT> FLASH + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss section */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM_D1 + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM_D1 + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/variant_MARLIN_STM32H723VX.cpp b/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/variant_MARLIN_STM32H723VX.cpp new file mode 100644 index 0000000000..bfeb0f9abc --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/variant_MARLIN_STM32H723VX.cpp @@ -0,0 +1,273 @@ +/* + ******************************************************************************* + * Copyright (c) 2020-2021, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ +#ifdef STM32H723xx +#include "pins_arduino.h" + +// Digital PinName array +const PinName digitalPin[] = { + PA_0, // D0/A0 + PA_1, // D1/A1 + PA_2, // D2/A2 + PA_3, // D3/A3 + PA_4, // D4/A4 + PA_5, // D5/A5 + PA_6, // D6/A6 + PA_7, // D7/A7 + PA_8, // D8 + PA_9, // D9 + PA_10, // D10 + PA_11, // D11 + PA_12, // D12 + PA_13, // D13 + PA_14, // D14 + PA_15, // D15 + PB_0, // D16/A8 + PB_1, // D17/A9 + PB_2, // D18 + PB_3, // D19 + PB_4, // D20 + PB_5, // D21 + PB_6, // D22 + PB_7, // D23 + PB_8, // D24 + PB_9, // D25 + PB_10, // D26 + PB_11, // D27 + PB_12, // D28 + PB_13, // D29 + PB_14, // D30 + PB_15, // D31 + PC_0, // D32/A10 + PC_1, // D33/A11 + PC_4, // D34/A12 + PC_5, // D35/A13 + PC_6, // D36 + PC_7, // D37 + PC_8, // D38 + PC_9, // D39 + PC_10, // D40 + PC_11, // D41 + PC_12, // D42 + PC_13, // D43 + PC_14, // D44 + PC_15, // D45 + PD_0, // D46 + PD_1, // D47 + PD_2, // D48 + PD_3, // D49 + PD_4, // D50 + PD_5, // D51 + PD_6, // D52 + PD_7, // D53 + PD_8, // D54 + PD_9, // D55 + PD_10, // D56 + PD_11, // D57 + PD_12, // D58 + PD_13, // D59 + PD_14, // D60 + PD_15, // D61 + PE_0, // D62 + PE_1, // D63 + PE_2, // D64 + PE_3, // D65 + PE_4, // D66 + PE_5, // D67 + PE_6, // D68 + PE_7, // D69 + PE_8, // D70 + PE_9, // D71 + PE_10, // D72 + PE_11, // D73 + PE_12, // D74 + PE_13, // D75 + PE_14, // D76 + PE_15, // D77 + PH_0, // D78 + PH_1, // D79 + PC_2_C, // D80/A14 + PC_3_C // D81/A15 +}; + +// Analog (Ax) pin number array +const uint32_t analogInputPin[] = { + 0, // A0, PA0 + 1, // A1, PA1 + 2, // A2, PA2 + 3, // A3, PA3 + 4, // A4, PA4 + 5, // A5, PA5 + 6, // A6, PA6 + 7, // A7, PA7 + 16, // A8, PB0 + 17, // A9, PB1 + 32, // A10, PC0 + 33, // A11, PC1 + 34, // A12, PC4 + 35, // A13, PC5 + 80, // A14, PC2_C + 81 // A15, PC3_C +}; + +void MPU_Config(void) +{ + MPU_Region_InitTypeDef MPU_InitStruct = {0}; + + /* Disables the MPU */ + HAL_MPU_Disable(); + + /** Initializes and configures the Region and the memory to be protected + */ + MPU_InitStruct.Enable = MPU_REGION_ENABLE; + MPU_InitStruct.Number = MPU_REGION_NUMBER0; + MPU_InitStruct.BaseAddress = 0x0; + MPU_InitStruct.Size = MPU_REGION_SIZE_4GB; + MPU_InitStruct.SubRegionDisable = 0x87; + MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; + MPU_InitStruct.AccessPermission = MPU_REGION_NO_ACCESS; + MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE; + MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE; + MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE; + MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; + + HAL_MPU_ConfigRegion(&MPU_InitStruct); + /* Enables the MPU */ + HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT); + +} + +/* + * @brief System Clock Configuration + * @param None + * @retval None + */ +WEAK void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {}; + + MPU_Config(); + + /** Supply configuration update enable + */ + HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY); + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0); + + while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {} + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48 | RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.HSI48State = RCC_HSI48_ON; // 48Mhz for USB + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 5; // 25Mhz / 5 = 5Mhz + RCC_OscInitStruct.PLL.PLLN = 110; // 25Mhz / 5 * 110 = 550Mhz + RCC_OscInitStruct.PLL.PLLP = 1; // 550Mhz / 1 = 550Mhz + RCC_OscInitStruct.PLL.PLLQ = 10; // 550Mhz / 10 = 55Mhz + RCC_OscInitStruct.PLL.PLLR = 10; // unused + RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2; + RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE; + RCC_OscInitStruct.PLL.PLLFRACN = 0; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2 + |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2; + RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2; + RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) + { + Error_Handler(); + } + + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB + | RCC_PERIPHCLK_SDMMC | RCC_PERIPHCLK_ADC + | RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_USART16 + | RCC_PERIPHCLK_USART234578 | RCC_PERIPHCLK_I2C123 + | RCC_PERIPHCLK_I2C4 | RCC_PERIPHCLK_SPI123 + | RCC_PERIPHCLK_SPI45 | RCC_PERIPHCLK_SPI6; + + /* HSI48 used for USB 48 Mhz */ + /* PLL1 qclk also used for FMC, SDMMC, RNG, SAI */ + /* PLL2 pclk is needed for adc max 80 Mhz (p,q,r same) */ + /* PLL2 pclk also used for LP timers 2,3,4,5, SPI 1,2,3 */ + /* PLL2 qclk is needed for uart, can, spi4,5,6 80 Mhz */ + /* PLL3 r clk is needed for i2c 80 Mhz (p,q,r same) */ + PeriphClkInitStruct.PLL2.PLL2M = 15; // M DIV 15 vco 25 / 15 ~ 1.667 Mhz + PeriphClkInitStruct.PLL2.PLL2N = 96; // N MUL 96 + PeriphClkInitStruct.PLL2.PLL2P = 2; // P div 2 + PeriphClkInitStruct.PLL2.PLL2Q = 2; // Q div 2 + PeriphClkInitStruct.PLL2.PLL2R = 2; // R div 2 + // RCC_PLL1VCIRANGE_0 Clock range frequency between 1 and 2 MHz + PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_0; + PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOMEDIUM; + PeriphClkInitStruct.PLL2.PLL2FRACN = 0; + PeriphClkInitStruct.PLL3.PLL3M = 15; // M DIV 15 vco 25 / 15 ~ 1.667 Mhz + PeriphClkInitStruct.PLL3.PLL3N = 96; // N MUL 96 + PeriphClkInitStruct.PLL3.PLL3P = 2; // P div 2 + PeriphClkInitStruct.PLL3.PLL3Q = 2; // Q div 2 + PeriphClkInitStruct.PLL3.PLL3R = 2; // R div 2 + // RCC_PLL1VCIRANGE_0 Clock range frequency between 1 and 2 MHz + PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3VCIRANGE_0; + PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3VCOMEDIUM; + PeriphClkInitStruct.PLL3.PLL3FRACN = 0; + // ADC from PLL2 pclk + PeriphClkInitStruct.AdcClockSelection = RCC_ADCCLKSOURCE_PLL2; + // USB from HSI48 + PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48; + // SDMMC from PLL1 qclk + PeriphClkInitStruct.SdmmcClockSelection = 0; + //PeriphClkInitStruct.SdmmcClockSelection = RCC_SDMMCCLKSOURCE_PLL; + // LPUART from PLL2 qclk + PeriphClkInitStruct.Lpuart1ClockSelection = 0; + //PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PLL2; + // USART from PLL2 qclk + PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_PLL2; + // USART from PLL2 qclk + PeriphClkInitStruct.Usart234578ClockSelection = 0; + //PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_PLL2; + // I2C123 from PLL3 rclk + PeriphClkInitStruct.I2c123ClockSelection = RCC_I2C123CLKSOURCE_PLL3; + // I2C4 from PLL3 rclk + PeriphClkInitStruct.I2c4ClockSelection = 0; + //PeriphClkInitStruct.I2c4ClockSelection = RCC_I2C4CLKSOURCE_PLL3; + // SPI123 from PLL2 pclk + PeriphClkInitStruct.Spi123ClockSelection = RCC_SPI123CLKSOURCE_PLL2; + // SPI45 from PLL2 qclk + PeriphClkInitStruct.Spi45ClockSelection = 0; + //PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_PLL2; + // SPI6 from PLL2 qclk + PeriphClkInitStruct.Spi6ClockSelection = 0; + //PeriphClkInitStruct.Spi6ClockSelection = RCC_SPI6CLKSOURCE_PLL2; + + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { + Error_Handler(); + } +} + +#endif /* ARDUINO_GENERIC_* */ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/variant_MARLIN_STM32H723VX.h b/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/variant_MARLIN_STM32H723VX.h new file mode 100644 index 0000000000..8b67905680 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/variant_MARLIN_STM32H723VX.h @@ -0,0 +1,269 @@ +/* + ******************************************************************************* + * Copyright (c) 2020, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ +#pragma once + +/*---------------------------------------------------------------------------- + * STM32 pins number + *----------------------------------------------------------------------------*/ +#define PA0 PIN_A0 +#define PA1 PIN_A1 +#define PA2 PIN_A2 +#define PA3 PIN_A3 +#define PA4 PIN_A4 +#define PA5 PIN_A5 +#define PA6 PIN_A6 +#define PA7 PIN_A7 +#define PA8 8 +#define PA9 9 +#define PA10 10 +#define PA11 11 +#define PA12 12 +#define PA13 13 +#define PA14 14 +#define PA15 15 +#define PB0 PIN_A8 +#define PB1 PIN_A9 +#define PB2 18 +#define PB3 19 +#define PB4 20 +#define PB5 21 +#define PB6 22 +#define PB7 23 +#define PB8 24 +#define PB9 25 +#define PB10 26 +#define PB11 27 +#define PB12 28 +#define PB13 29 +#define PB14 30 +#define PB15 31 +#define PC0 PIN_A10 +#define PC1 PIN_A11 +#define PC4 PIN_A12 +#define PC5 PIN_A13 +#define PC6 36 +#define PC7 37 +#define PC8 38 +#define PC9 39 +#define PC10 40 +#define PC11 41 +#define PC12 42 +#define PC13 43 +#define PC14 44 +#define PC15 45 +#define PD0 46 +#define PD1 47 +#define PD2 48 +#define PD3 49 +#define PD4 50 +#define PD5 51 +#define PD6 52 +#define PD7 53 +#define PD8 54 +#define PD9 55 +#define PD10 56 +#define PD11 57 +#define PD12 58 +#define PD13 59 +#define PD14 60 +#define PD15 61 +#define PE0 62 +#define PE1 63 +#define PE2 64 +#define PE3 65 +#define PE4 66 +#define PE5 67 +#define PE6 68 +#define PE7 69 +#define PE8 70 +#define PE9 71 +#define PE10 72 +#define PE11 73 +#define PE12 74 +#define PE13 75 +#define PE14 76 +#define PE15 77 +#define PH0 78 +#define PH1 79 +#define PC2_C PIN_A14 +#define PC3_C PIN_A15 +#define PC2 PC2_C +#define PC3 PC3_C + +// Alternate pins number +#define PA0_ALT1 (PA0 | ALT1) +#define PA1_ALT1 (PA1 | ALT1) +#define PA1_ALT2 (PA1 | ALT2) +#define PA2_ALT1 (PA2 | ALT1) +#define PA2_ALT2 (PA2 | ALT2) +#define PA3_ALT1 (PA3 | ALT1) +#define PA3_ALT2 (PA3 | ALT2) +#define PA4_ALT1 (PA4 | ALT1) +#define PA4_ALT2 (PA4 | ALT2) +#define PA5_ALT1 (PA5 | ALT1) +#define PA6_ALT1 (PA6 | ALT1) +#define PA7_ALT1 (PA7 | ALT1) +#define PA7_ALT2 (PA7 | ALT2) +#define PA7_ALT3 (PA7 | ALT3) +#define PA8_ALT1 (PA8 | ALT1) +#define PA9_ALT1 (PA9 | ALT1) +#define PA10_ALT1 (PA10 | ALT1) +#define PA11_ALT1 (PA11 | ALT1) +#define PA12_ALT1 (PA12 | ALT1) +#define PA15_ALT1 (PA15 | ALT1) +#define PA15_ALT2 (PA15 | ALT2) +#define PB0_ALT1 (PB0 | ALT1) +#define PB0_ALT2 (PB0 | ALT2) +#define PB1_ALT1 (PB1 | ALT1) +#define PB1_ALT2 (PB1 | ALT2) +#define PB3_ALT1 (PB3 | ALT1) +#define PB3_ALT2 (PB3 | ALT2) +#define PB4_ALT1 (PB4 | ALT1) +#define PB4_ALT2 (PB4 | ALT2) +#define PB5_ALT1 (PB5 | ALT1) +#define PB5_ALT2 (PB5 | ALT2) +#define PB6_ALT1 (PB6 | ALT1) +#define PB6_ALT2 (PB6 | ALT2) +#define PB7_ALT1 (PB7 | ALT1) +#define PB8_ALT1 (PB8 | ALT1) +#define PB8_ALT2 (PB8 | ALT2) +#define PB9_ALT1 (PB9 | ALT1) +#define PB9_ALT2 (PB9 | ALT2) +#define PB14_ALT1 (PB14 | ALT1) +#define PB14_ALT2 (PB14 | ALT2) +#define PB15_ALT1 (PB15 | ALT1) +#define PB15_ALT2 (PB15 | ALT2) +#define PC0_ALT1 (PC0 | ALT1) +#define PC0_ALT2 (PC0 | ALT2) +#define PC1_ALT1 (PC1 | ALT1) +#define PC1_ALT2 (PC1 | ALT2) +#define PC4_ALT1 (PC4 | ALT1) +#define PC5_ALT1 (PC5 | ALT1) +#define PC6_ALT1 (PC6 | ALT1) +#define PC6_ALT2 (PC6 | ALT2) +#define PC7_ALT1 (PC7 | ALT1) +#define PC7_ALT2 (PC7 | ALT2) +#define PC8_ALT1 (PC8 | ALT1) +#define PC9_ALT1 (PC9 | ALT1) +#define PC10_ALT1 (PC10 | ALT1) +#define PC11_ALT1 (PC11 | ALT1) + +#define NUM_DIGITAL_PINS 82 +#define NUM_DUALPAD_PINS 2 +#define NUM_ANALOG_INPUTS 16 + +// On-board LED pin number +#ifndef LED_BUILTIN + #define LED_BUILTIN PNUM_NOT_DEFINED +#endif + +// On-board user button +#ifndef USER_BTN + #define USER_BTN PNUM_NOT_DEFINED +#endif + +// SPI definitions +#ifndef PIN_SPI_SS + #define PIN_SPI_SS PA4 +#endif +#ifndef PIN_SPI_SS1 + #define PIN_SPI_SS1 PA15 +#endif +#ifndef PIN_SPI_SS2 + #define PIN_SPI_SS2 PNUM_NOT_DEFINED +#endif +#ifndef PIN_SPI_SS3 + #define PIN_SPI_SS3 PNUM_NOT_DEFINED +#endif +#ifndef PIN_SPI_MOSI + #define PIN_SPI_MOSI PA7 +#endif +#ifndef PIN_SPI_MISO + #define PIN_SPI_MISO PA6 +#endif +#ifndef PIN_SPI_SCK + #define PIN_SPI_SCK PA5 +#endif + +// I2C definitions +#ifndef PIN_WIRE_SDA + #define PIN_WIRE_SDA PB7 +#endif +#ifndef PIN_WIRE_SCL + #define PIN_WIRE_SCL PB6 +#endif + +// Timer Definitions +// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin +#ifndef TIMER_TONE + #define TIMER_TONE TIM6 +#endif +#ifndef TIMER_SERVO + #define TIMER_SERVO TIM7 +#endif + +// UART Definitions +#ifndef SERIAL_UART_INSTANCE + #define SERIAL_UART_INSTANCE 4 +#endif + +// Default pin used for generic 'Serial' instance +// Mandatory for Firmata +#ifndef PIN_SERIAL_RX + #define PIN_SERIAL_RX PA1 +#endif +#ifndef PIN_SERIAL_TX + #define PIN_SERIAL_TX PA0 +#endif + +// Extra HAL modules +#if !defined(HAL_DAC_MODULE_DISABLED) + #define HAL_DAC_MODULE_ENABLED +#endif +#if !defined(HAL_ETH_MODULE_DISABLED) + #define HAL_ETH_MODULE_ENABLED +#endif +#if !defined(HAL_OSPI_MODULE_DISABLED) + #define HAL_OSPI_MODULE_ENABLED +#endif +#if !defined(HAL_SD_MODULE_DISABLED) + #define HAL_SD_MODULE_ENABLED +#endif + +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus + // These serial port names are intended to allow libraries and architecture-neutral + // sketches to automatically default to the correct port name for a particular type + // of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, + // the first hardware serial port whose RX/TX pins are not dedicated to another use. + // + // SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor + // + // SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial + // + // SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library + // + // SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. + // + // SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX + // pins are NOT connected to anything by default. + #ifndef SERIAL_PORT_MONITOR + #define SERIAL_PORT_MONITOR Serial + #endif + #ifndef SERIAL_PORT_HARDWARE + #define SERIAL_PORT_HARDWARE Serial + #endif +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/PeripheralPins.c new file mode 100644 index 0000000000..70048173e7 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/PeripheralPins.c @@ -0,0 +1,688 @@ +/* + ******************************************************************************* + * Copyright (c) 2020-2021, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ +/* + * Automatically generated from STM32H723ZETx.xml, STM32H723ZGTx.xml + * STM32H733ZGTx.xml + * CubeMX DB release 6.0.30 + */ +#if !defined(CUSTOM_PERIPHERAL_PINS) +#include "Arduino.h" +#include "PeripheralPins.h" + +/* ===== + * Notes: + * - The pins mentioned Px_y_ALTz are alternative possibilities which use other + * HW peripheral instances. You can use them the same way as any other "normal" + * pin (i.e. analogWrite(PA7_ALT1, 128);). + * + * - Commented lines are alternative possibilities which are not used per default. + * If you change them, you will have to know what you do + * ===== + */ + +//*** ADC *** + +#ifdef HAL_ADC_MODULE_ENABLED +WEAK const PinMap PinMap_ADC[] = { + {PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_INP16 + {PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_INP17 + {PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_INP14 + {PA_2_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC2_INP14 + {PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_INP15 + {PA_3_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC2_INP15 + {PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_INP18 + {PA_4_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC2_INP18 + {PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 19, 0)}, // ADC1_INP19 + {PA_5_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 19, 0)}, // ADC2_INP19 + {PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_INP3 + {PA_6_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC2_INP3 + {PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_INP7 + {PA_7_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC2_INP7 + {PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_INP9 + {PB_0_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC2_INP9 + {PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_INP5 + {PB_1_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC2_INP5 + {PC_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_INP10 + {PC_0_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC2_INP10 + {PC_0_ALT2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC3_INP10 + {PC_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_INP11 + {PC_1_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_INP11 + {PC_1_ALT2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC3_INP11 + {PC_2_C, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC3_INP0 + {PC_3_C, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_INP1 + {PC_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_INP4 + {PC_4_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC2_INP4 + {PC_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_INP8 + {PC_5_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC2_INP8 + {PF_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC3_INP5 + {PF_4, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC3_INP9 + {PF_5, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC3_INP4 + {PF_6, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC3_INP8 + {PF_7, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC3_INP3 + {PF_8, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC3_INP7 + {PF_9, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC3_INP2 + {PF_10, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC3_INP6 + {PF_11, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_INP2 + {PF_12, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_INP6 + {PF_13, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC2_INP2 + {PF_14, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC2_INP6 + {NC, NP, 0} +}; +#endif + +//*** DAC *** + +#ifdef HAL_DAC_MODULE_ENABLED +WEAK const PinMap PinMap_DAC[] = { + {PA_4, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC1_OUT1 + {PA_5, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC1_OUT2 + {NC, NP, 0} +}; +#endif + +//*** I2C *** + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SDA[] = { + {PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_7_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, + {PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_9_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, + {PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PC_9, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + {PC_9_ALT1, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C5)}, + {PC_10, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C5)}, + {PD_13, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, + {PF_0, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PF_0_ALT1, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C5)}, + {PF_15, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SCL[] = { + {PA_8, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + {PA_8_ALT1, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C5)}, + {PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_6_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, + {PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_8_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, + {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PC_11, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C5)}, + {PD_12, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, + {PF_1, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PF_1_ALT1, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C5)}, + {PF_14, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, + {NC, NP, 0} +}; +#endif + +//*** TIM *** + +#ifdef HAL_TIM_MODULE_ENABLED +WEAK const PinMap PinMap_TIM[] = { + {PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + {PA_0_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1 + {PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 + {PA_1_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2 + {PA_1_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 1)}, // TIM15_CH1N + {PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 + {PA_2_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3 + {PA_2_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 0)}, // TIM15_CH1 + {PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 + {PA_3_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 4, 0)}, // TIM5_CH4 + {PA_3_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 2, 0)}, // TIM15_CH2 + {PA_5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + {PA_5_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N + {PA_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PA_6_ALT1, TIM13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1 + {PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PA_7_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PA_7_ALT2, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N + {PA_7_ALT3, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1 + {PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 + {PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + {PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + {PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + {PA_15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + {PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PB_0_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 + {PB_0_ALT2, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N + {PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PB_1_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 + {PB_1_ALT2, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N + {PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 + {PB_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PB_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PB_6, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 + {PB_6_ALT1, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 1)}, // TIM16_CH1N + {PB_7, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 + {PB_7_ALT1, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17, 1, 1)}, // TIM17_CH1N + {PB_8, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 + {PB_8_ALT1, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 0)}, // TIM16_CH1 + {PB_9, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 + {PB_9_ALT1, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17, 1, 0)}, // TIM17_CH1 + {PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 + {PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 + {PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PB_14_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N + {PB_14_ALT2, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM12, 1, 0)}, // TIM12_CH1 + {PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PB_15_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N + {PB_15_ALT2, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM12, 2, 0)}, // TIM12_CH2 + {PC_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PC_6_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1 + {PC_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PC_7_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2 + {PC_8, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 + {PC_8_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 0)}, // TIM8_CH3 + {PC_9, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 + {PC_9_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 4, 0)}, // TIM8_CH4 + {PC_12, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM15, 1, 0)}, // TIM15_CH1 + {PD_12, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 + {PD_13, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 + {PD_14, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 + {PD_15, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 + {PE_4, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 1)}, // TIM15_CH1N + {PE_5, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 0)}, // TIM15_CH1 + {PE_6, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 2, 0)}, // TIM15_CH2 + {PE_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PE_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 + {PE_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PE_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + {PE_12, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PE_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + {PE_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + {PF_0, TIM23, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF13_TIM23, 1, 0)}, // TIM23_CH1 + {PF_1, TIM23, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF13_TIM23, 2, 0)}, // TIM23_CH2 + {PF_2, TIM23, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF13_TIM23, 3, 0)}, // TIM23_CH3 + {PF_3, TIM23, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF13_TIM23, 4, 0)}, // TIM23_CH4 + {PF_6, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 0)}, // TIM16_CH1 + {PF_6_ALT1, TIM23, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF13_TIM23, 1, 0)}, // TIM23_CH1 + {PF_7, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17, 1, 0)}, // TIM17_CH1 + {PF_7_ALT1, TIM23, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF13_TIM23, 2, 0)}, // TIM23_CH2 + {PF_8, TIM13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1 + {PF_8_ALT1, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 1)}, // TIM16_CH1N + {PF_8_ALT2, TIM23, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF13_TIM23, 3, 0)}, // TIM23_CH3 + {PF_9, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1 + {PF_9_ALT1, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17, 1, 1)}, // TIM17_CH1N + {PF_9_ALT2, TIM23, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF13_TIM23, 4, 0)}, // TIM23_CH4 + {PF_11, TIM24, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM24, 1, 0)}, // TIM24_CH1 + {PF_12, TIM24, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM24, 2, 0)}, // TIM24_CH2 + {PF_13, TIM24, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM24, 3, 0)}, // TIM24_CH3 + {PF_14, TIM24, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM24, 4, 0)}, // TIM24_CH4 + {PG_12, TIM23, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF13_TIM23, 1, 0)}, // TIM23_CH1 + {PG_13, TIM23, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF13_TIM23, 2, 0)}, // TIM23_CH2 + {PG_14, TIM23, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF13_TIM23, 3, 0)}, // TIM23_CH3 + {NC, NP, 0} +}; +#endif + +//*** UART *** + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_TX[] = { + {PA_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PA_2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_9, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, + {PA_9_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PA_12, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_UART4)}, + {PA_15, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, + {PB_4, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, + {PB_6, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART)}, + {PB_6_ALT1, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, + {PB_6_ALT2, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_9, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PB_13, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, + {PB_14, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)}, + {PC_6, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, + {PC_10, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PC_10_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PC_12, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_1, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PD_5, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_8, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_15, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, + {PE_1, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, + {PE_3, USART10, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_USART10)}, + {PE_8, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {PF_7, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {PG_1, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, + {PG_12, USART10, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART10)}, + {PG_14, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_RX[] = { + {PA_1, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PA_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_8, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, + {PA_10, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, + {PA_10_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PA_11, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_UART4)}, + {PB_3, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, + {PB_5, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, + {PB_7, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART)}, + {PB_7_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_8, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PB_12, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, + {PB_15, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)}, + {PC_7, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, + {PC_11, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PC_11_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PD_2, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_6, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_9, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_14, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, + {PE_0, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, + {PE_2, USART10, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART10)}, + {PE_7, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {PF_6, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {PG_0, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, + {PG_9, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, + {PG_11, USART10, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART10)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_RTS[] = { + {PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_12, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, + {PA_12_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PA_15, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_14, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_14_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PC_8, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_4, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_12, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_13, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, + {PD_15, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, + {PE_9, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {PF_8, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {PG_8, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, + {PG_12, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, + {PG_14, USART10, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART10)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_CTS[] = { + {PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_11, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, + {PA_11_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_13, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PB_15, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PC_9, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_0, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, + {PD_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_14, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, + {PE_10, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {PF_9, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {PG_13, USART10, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART10)}, + {PG_13_ALT1, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, + {PG_15, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, + {NC, NP, 0} +}; +#endif + +//*** SPI *** + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MOSI[] = { + {PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_7_ALT1, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_2, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI3)}, + {PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_5_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI3)}, + {PB_5_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_1, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_3_C, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_12, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PD_6, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI3)}, + {PD_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PE_6, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PE_14, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PF_9, SPI5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI5)}, + {PF_11, SPI5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI5)}, + {PG_14, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI6)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MISO[] = { + {PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_6_ALT1, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_4_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_2_C, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_11, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PE_5, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PE_13, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PF_8, SPI5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI5)}, + {PG_9, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PG_12, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI6)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_SCLK[] = { + {PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_5_ALT1, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PA_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PA_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_3_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_3_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_10, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PC_12, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI6)}, + {PD_3, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PE_2, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PE_12, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PF_7, SPI5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI5)}, + {PG_11, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PG_13, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI6)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_SSEL[] = { + {PA_0, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI6)}, + {PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PA_4_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PA_11, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_15_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PA_15_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI6)}, + {PB_4, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI2)}, + {PB_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PE_4, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PE_11, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PF_6, SPI5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI5)}, + {PG_8, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI6)}, + {PG_10, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {NC, NP, 0} +}; +#endif + +//*** FDCAN *** + +#ifdef HAL_FDCAN_MODULE_ENABLED +WEAK const PinMap PinMap_CAN_RD[] = { + {PA_11, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PB_5, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, + {PB_8, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PB_12, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, + {PD_0, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PD_12, FDCAN3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_FDCAN3)}, + {PF_6, FDCAN3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_FDCAN3)}, + {PG_10, FDCAN3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_FDCAN3)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_FDCAN_MODULE_ENABLED +WEAK const PinMap PinMap_CAN_TD[] = { + {PA_12, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PB_6, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, + {PB_9, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PB_13, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, + {PD_1, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PD_13, FDCAN3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_FDCAN3)}, + {PF_7, FDCAN3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_FDCAN3)}, + {PG_9, FDCAN3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_FDCAN3)}, + {NC, NP, 0} +}; +#endif + +//*** ETHERNET *** + +#ifdef HAL_ETH_MODULE_ENABLED +WEAK const PinMap PinMap_Ethernet[] = { + {PA_0, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_CRS + {PA_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_REF_CLK + {PA_1_ALT1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RX_CLK + {PA_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_MDIO + {PA_3, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_COL + {PA_7, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_CRS_DV + {PA_7_ALT1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RX_DV + {PA_9, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_ER + {PB_0, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD2 + {PB_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD3 + {PB_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_ER + {PB_5, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_PPS_OUT + {PB_8, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD3 + {PB_10, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RX_ER + {PB_11, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_EN + {PB_12, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD0 + {PB_13, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD1 + {PC_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_MDC + {PC_2_C, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD2 + {PC_3_C, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_CLK + {PC_4, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD0 + {PC_5, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD1 + {PE_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD3 + {PG_8, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_PPS_OUT + {PG_11, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_EN + {PG_12, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD1 + {PG_13, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD0 + {PG_14, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD1 + {NC, NP, 0} +}; +#endif + +//*** OCTOSPI *** + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA0[] = { + {PA_2, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PB_1, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PB_12, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PC_3_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PC_9, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PD_11, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PF_0, OCTOSPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P2)}, // OCTOSPIM_P2_IO0 + {PF_8, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA1[] = { + {PB_0, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1 + {PC_10, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1 + {PD_12, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1 + {PF_1, OCTOSPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P2)}, // OCTOSPIM_P2_IO1 + {PF_9, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA2[] = { + {PA_3, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {PA_7, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {PB_13, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {PC_2_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {PE_2, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {PF_2, OCTOSPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P2)}, // OCTOSPIM_P2_IO2 + {PF_7, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA3[] = { + {PA_1, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3 + {PA_6, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3 + {PD_13, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3 + {PF_3, OCTOSPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P2)}, // OCTOSPIM_P2_IO3 + {PF_6, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA4[] = { + {PC_1, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4 + {PD_4, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4 + {PE_7, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4 + {PG_0, OCTOSPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P2)}, // OCTOSPIM_P2_IO4 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA5[] = { + {PC_2_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO5 + {PD_5, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO5 + {PE_8, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO5 + {PG_1, OCTOSPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P2)}, // OCTOSPIM_P2_IO5 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA6[] = { + {PC_3_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6 + {PD_6, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6 + {PE_9, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6 + {PG_9, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6 + {PG_10, OCTOSPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_OCTOSPIM_P2)}, // OCTOSPIM_P2_IO6 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA7[] = { + {PD_7, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO7 + {PE_10, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO7 + {PG_11, OCTOSPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P2)}, // OCTOSPIM_P2_IO7 + {PG_14, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO7 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_SCLK[] = { + {PA_3, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OCTOSPIM_P1)}, // OCTOSPIM_P1_CLK + {PB_2, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_CLK + {PF_4, OCTOSPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P2)}, // OCTOSPIM_P2_CLK + {PF_10, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_CLK + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_SSEL[] = { + {PB_6, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS + {PB_10, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS + {PC_11, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS + {PE_11, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS + {PG_6, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS + {PG_12, OCTOSPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_OCTOSPIM_P2)}, // OCTOSPIM_P2_NCS + {NC, NP, 0} +}; +#endif + +//*** USB *** + +#if defined(HAL_PCD_MODULE_ENABLED) || defined(HAL_HCD_MODULE_ENABLED) +WEAK const PinMap PinMap_USB_OTG_HS[] = { +#ifdef USE_USB_HS_IN_FS + {PA_8, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_SOF + {PA_9, USB_OTG_HS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_HS_VBUS + {PA_10, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ID + {PA_11, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF_NONE)}, // USB_OTG_HS_DM + {PA_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF_NONE)}, // USB_OTG_HS_DP +#else + {PA_3, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D0 + {PA_5, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_CK + {PB_0, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D1 + {PB_1, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D2 + {PB_5, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D7 + {PB_10, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D3 + {PB_11, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D4 + {PB_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D5 + {PB_13, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D6 + {PC_0, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_STP + {PC_2_C, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_DIR + {PC_3_C, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_NXT +#endif /* USE_USB_HS_IN_FS */ + {NC, NP, 0} +}; +#endif + +//*** SD *** + +#ifdef HAL_SD_MODULE_ENABLED +WEAK const PinMap PinMap_SD[] = { + {PA_0, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_SDMMC2)}, // SDMMC2_CMD + {PB_3, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D2 + {PB_4, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D3 + {PB_8, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF7_SDMMC1)}, // SDMMC1_CKIN + {PB_8_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D4 + {PB_8_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D4 + {PB_9, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF7_SDMMC1)}, // SDMMC1_CDIR + {PB_9_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D5 + {PB_9_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D5 + {PB_13, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D0 + {PB_14, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D0 + {PB_15, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D1 + {PC_1, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_SDMMC2)}, // SDMMC2_CK + {PC_4, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_SDMMC2)}, // SDMMC2_CKIN + {PC_6, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SDMMC1)}, // SDMMC1_D0DIR + {PC_6_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D6 + {PC_6_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D6 + {PC_7, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SDMMC1)}, // SDMMC1_D123DIR + {PC_7_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D7 + {PC_7_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D7 + {PC_8, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D0 + {PC_9, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D1 + {PC_10, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D2 + {PC_11, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D3 + {PC_12, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_SDMMC1)}, // SDMMC1_CK + {PD_2, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_SDMMC1)}, // SDMMC1_CMD + {PD_6, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF11_SDMMC2)}, // SDMMC2_CK + {PD_7, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF11_SDMMC2)}, // SDMMC2_CMD + {PG_9, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_SDMMC2)}, // SDMMC2_D0 + {PG_10, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_SDMMC2)}, // SDMMC2_D1 + {PG_11, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D2 + {PG_12, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D3 + {PG_13, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D6 + {PG_14, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D7 + {NC, NP, 0} +}; +#endif + +#endif /* !CUSTOM_PERIPHERAL_PINS */ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/PinNamesVar.h b/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/PinNamesVar.h new file mode 100644 index 0000000000..ad9d80a625 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/PinNamesVar.h @@ -0,0 +1,117 @@ +/* Dual pad pin name */ +PC_2_C = PC_2 | PDUAL, +PC_3_C = PC_3 | PDUAL, + +/* Alternate pin name */ +PA_0_ALT1 = PA_0 | ALT1, +PA_1_ALT1 = PA_1 | ALT1, +PA_1_ALT2 = PA_1 | ALT2, +PA_2_ALT1 = PA_2 | ALT1, +PA_2_ALT2 = PA_2 | ALT2, +PA_3_ALT1 = PA_3 | ALT1, +PA_3_ALT2 = PA_3 | ALT2, +PA_4_ALT1 = PA_4 | ALT1, +PA_4_ALT2 = PA_4 | ALT2, +PA_5_ALT1 = PA_5 | ALT1, +PA_6_ALT1 = PA_6 | ALT1, +PA_7_ALT1 = PA_7 | ALT1, +PA_7_ALT2 = PA_7 | ALT2, +PA_7_ALT3 = PA_7 | ALT3, +PA_8_ALT1 = PA_8 | ALT1, +PA_9_ALT1 = PA_9 | ALT1, +PA_10_ALT1 = PA_10 | ALT1, +PA_11_ALT1 = PA_11 | ALT1, +PA_12_ALT1 = PA_12 | ALT1, +PA_15_ALT1 = PA_15 | ALT1, +PA_15_ALT2 = PA_15 | ALT2, +PB_0_ALT1 = PB_0 | ALT1, +PB_0_ALT2 = PB_0 | ALT2, +PB_1_ALT1 = PB_1 | ALT1, +PB_1_ALT2 = PB_1 | ALT2, +PB_3_ALT1 = PB_3 | ALT1, +PB_3_ALT2 = PB_3 | ALT2, +PB_4_ALT1 = PB_4 | ALT1, +PB_4_ALT2 = PB_4 | ALT2, +PB_5_ALT1 = PB_5 | ALT1, +PB_5_ALT2 = PB_5 | ALT2, +PB_6_ALT1 = PB_6 | ALT1, +PB_6_ALT2 = PB_6 | ALT2, +PB_7_ALT1 = PB_7 | ALT1, +PB_8_ALT1 = PB_8 | ALT1, +PB_8_ALT2 = PB_8 | ALT2, +PB_9_ALT1 = PB_9 | ALT1, +PB_9_ALT2 = PB_9 | ALT2, +PB_14_ALT1 = PB_14 | ALT1, +PB_14_ALT2 = PB_14 | ALT2, +PB_15_ALT1 = PB_15 | ALT1, +PB_15_ALT2 = PB_15 | ALT2, +PC_0_ALT1 = PC_0 | ALT1, +PC_0_ALT2 = PC_0 | ALT2, +PC_1_ALT1 = PC_1 | ALT1, +PC_1_ALT2 = PC_1 | ALT2, +PC_4_ALT1 = PC_4 | ALT1, +PC_5_ALT1 = PC_5 | ALT1, +PC_6_ALT1 = PC_6 | ALT1, +PC_6_ALT2 = PC_6 | ALT2, +PC_7_ALT1 = PC_7 | ALT1, +PC_7_ALT2 = PC_7 | ALT2, +PC_8_ALT1 = PC_8 | ALT1, +PC_9_ALT1 = PC_9 | ALT1, +PC_10_ALT1 = PC_10 | ALT1, +PC_11_ALT1 = PC_11 | ALT1, +PF_0_ALT1 = PF_0 | ALT1, +PF_1_ALT1 = PF_1 | ALT1, +PF_6_ALT1 = PF_6 | ALT1, +PF_7_ALT1 = PF_7 | ALT1, +PF_8_ALT1 = PF_8 | ALT1, +PF_8_ALT2 = PF_8 | ALT2, +PF_9_ALT1 = PF_9 | ALT1, +PF_9_ALT2 = PF_9 | ALT2, +PG_13_ALT1 = PG_13 | ALT1, + +/* SYS_WKUP */ +#ifdef PWR_WAKEUP_PIN1 + SYS_WKUP1 = PA_0, +#endif +#ifdef PWR_WAKEUP_PIN2 + SYS_WKUP2 = PA_2, +#endif +#ifdef PWR_WAKEUP_PIN3 + SYS_WKUP3 = NC, +#endif +#ifdef PWR_WAKEUP_PIN4 + SYS_WKUP4 = PC_13, +#endif +#ifdef PWR_WAKEUP_PIN5 + SYS_WKUP5 = NC, +#endif +#ifdef PWR_WAKEUP_PIN6 + SYS_WKUP6 = PC_1, +#endif +#ifdef PWR_WAKEUP_PIN7 + SYS_WKUP7 = NC, +#endif +#ifdef PWR_WAKEUP_PIN8 + SYS_WKUP8 = NC, +#endif + +/* USB */ +#ifdef USBCON + USB_OTG_HS_DM = PA_11, + USB_OTG_HS_DP = PA_12, + USB_OTG_HS_ID = PA_10, + USB_OTG_HS_SOF = PA_8, + USB_OTG_HS_ULPI_CK = PA_5, + USB_OTG_HS_ULPI_D0 = PA_3, + USB_OTG_HS_ULPI_D1 = PB_0, + USB_OTG_HS_ULPI_D2 = PB_1, + USB_OTG_HS_ULPI_D3 = PB_10, + USB_OTG_HS_ULPI_D4 = PB_11, + USB_OTG_HS_ULPI_D5 = PB_12, + USB_OTG_HS_ULPI_D6 = PB_13, + USB_OTG_HS_ULPI_D7 = PB_5, + USB_OTG_HS_ULPI_DIR = PC_2_C, + USB_OTG_HS_ULPI_NXT = PC_3_C, + USB_OTG_HS_ULPI_STP = PC_0, + USB_OTG_HS_VBUS = PA_9, +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/ldscript.ld b/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/ldscript.ld new file mode 100644 index 0000000000..6322861033 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/ldscript.ld @@ -0,0 +1,174 @@ +/* +****************************************************************************** +** +** File : LinkerScript.ld +** +** Author : STM32CubeIDE +** +** Abstract : Linker script for STM32H7 series +** 512Kbytes FLASH and 560Kbytes RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +***************************************************************************** +** @attention +** +** Copyright (c) 2022 STMicroelectronics. +** All rights reserved. +** +** This software is licensed under terms that can be found in the LICENSE file +** in the root directory of this software component. +** If no LICENSE file comes with this software, it is provided AS-IS. +** +**************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = ORIGIN(RAM_D1) + LENGTH(RAM_D1); /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200 ; /* required amount of heap */ +_Min_Stack_Size = 0x400 ; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ + ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K + DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K + FLASH (rx) : ORIGIN = 0x8000000 + LD_FLASH_OFFSET, LENGTH = LD_MAX_SIZE - LD_FLASH_OFFSET + RAM_D1 (xrw) : ORIGIN = 0x24000000, LENGTH = 320K + RAM_D2 (xrw) : ORIGIN = 0x30000000, LENGTH = 32K + RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 16K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + *(.RamFunc) /* .RamFunc sections */ + *(.RamFunc*) /* .RamFunc* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM_D1 AT> FLASH + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss section */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM_D1 + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM_D1 + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723Zx.cpp b/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723Zx.cpp new file mode 100644 index 0000000000..4506cf5ce6 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723Zx.cpp @@ -0,0 +1,317 @@ +/* + ******************************************************************************* + * Copyright (c) 2020-2021, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ +#if defined(STM32H723xx) +#include "pins_arduino.h" + +// Digital PinName array +const PinName digitalPin[] = { + PA_0, // D0/A0 + PA_1, // D1/A1 + PA_2, // D2/A2 + PA_3, // D3/A3 + PA_4, // D4/A4 + PA_5, // D5/A5 + PA_6, // D6/A6 + PA_7, // D7/A7 + PA_8, // D8 + PA_9, // D9 + PA_10, // D10 + PA_11, // D11 + PA_12, // D12 + PA_13, // D13 + PA_14, // D14 + PA_15, // D15 + PB_0, // D16/A8 + PB_1, // D17/A9 + PB_2, // D18 + PB_3, // D19 + PB_4, // D20 + PB_5, // D21 + PB_6, // D22 + PB_7, // D23 + PB_8, // D24 + PB_9, // D25 + PB_10, // D26 + PB_11, // D27 + PB_12, // D28 + PB_13, // D29 + PB_14, // D30 + PB_15, // D31 + PC_0, // D32/A10 + PC_1, // D33/A11 + PC_4, // D34/A12 + PC_5, // D35/A13 + PC_6, // D36 + PC_7, // D37 + PC_8, // D38 + PC_9, // D39 + PC_10, // D40 + PC_11, // D41 + PC_12, // D42 + PC_13, // D43 + PC_14, // D44 + PC_15, // D45 + PD_0, // D46 + PD_1, // D47 + PD_2, // D48 + PD_3, // D49 + PD_4, // D50 + PD_5, // D51 + PD_6, // D52 + PD_7, // D53 + PD_8, // D54 + PD_9, // D55 + PD_10, // D56 + PD_11, // D57 + PD_12, // D58 + PD_13, // D59 + PD_14, // D60 + PD_15, // D61 + PE_0, // D62 + PE_1, // D63 + PE_2, // D64 + PE_3, // D65 + PE_4, // D66 + PE_5, // D67 + PE_6, // D68 + PE_7, // D69 + PE_8, // D70 + PE_9, // D71 + PE_10, // D72 + PE_11, // D73 + PE_12, // D74 + PE_13, // D75 + PE_14, // D76 + PE_15, // D77 + PF_0, // D78 + PF_1, // D79 + PF_2, // D80 + PF_3, // D81/A14 + PF_4, // D82/A15 + PF_5, // D83/A16 + PF_6, // D84/A17 + PF_7, // D85/A18 + PF_8, // D86/A19 + PF_9, // D87/A20 + PF_10, // D88/A21 + PF_11, // D89/A22 + PF_12, // D90/A23 + PF_13, // D91/A24 + PF_14, // D92/A25 + PF_15, // D93 + PG_0, // D94 + PG_1, // D95 + PG_2, // D96 + PG_3, // D97 + PG_4, // D98 + PG_5, // D99 + PG_6, // D100 + PG_7, // D101 + PG_8, // D102 + PG_9, // D103 + PG_10, // D104 + PG_11, // D105 + PG_12, // D106 + PG_13, // D107 + PG_14, // D108 + PG_15, // D109 + PH_0, // D110 + PH_1, // D111 + PC_2_C, // D112/A26 + PC_3_C // D113/A27 +}; + +// Analog (Ax) pin number array +const uint32_t analogInputPin[] = { + 0, // A0, PA0 + 1, // A1, PA1 + 2, // A2, PA2 + 3, // A3, PA3 + 4, // A4, PA4 + 5, // A5, PA5 + 6, // A6, PA6 + 7, // A7, PA7 + 16, // A8, PB0 + 17, // A9, PB1 + 32, // A10, PC0 + 33, // A11, PC1 + 34, // A12, PC4 + 35, // A13, PC5 + 81, // A14, PF3 + 82, // A15, PF4 + 83, // A16, PF5 + 84, // A17, PF6 + 85, // A18, PF7 + 86, // A19, PF8 + 87, // A20, PF9 + 88, // A21, PF10 + 89, // A22, PF11 + 90, // A23, PF12 + 91, // A24, PF13 + 92, // A25, PF14 + 112, // A26, PC2_C + 113 // A27, PC3_C +}; + +void MPU_Config(void) +{ + MPU_Region_InitTypeDef MPU_InitStruct = {0}; + + /* Disables the MPU */ + HAL_MPU_Disable(); + + /** Initializes and configures the Region and the memory to be protected + */ + MPU_InitStruct.Enable = MPU_REGION_ENABLE; + MPU_InitStruct.Number = MPU_REGION_NUMBER0; + MPU_InitStruct.BaseAddress = 0x0; + MPU_InitStruct.Size = MPU_REGION_SIZE_4GB; + MPU_InitStruct.SubRegionDisable = 0x87; + MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; + MPU_InitStruct.AccessPermission = MPU_REGION_NO_ACCESS; + MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE; + MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE; + MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE; + MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; + + HAL_MPU_ConfigRegion(&MPU_InitStruct); + /* Enables the MPU */ + HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT); + +} + +/* + * @brief System Clock Configuration + * @param None + * @retval None + */ +WEAK void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {}; + + MPU_Config(); + + /** Supply configuration update enable + */ + HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY); + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0); + + while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {} + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48 | RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.HSI48State = RCC_HSI48_ON; // 48Mhz for USB + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 5; // 25Mhz / 5 = 5Mhz + RCC_OscInitStruct.PLL.PLLN = 110; // 25Mhz / 5 * 110 = 550Mhz + RCC_OscInitStruct.PLL.PLLP = 1; // 550Mhz / 1 = 550Mhz + RCC_OscInitStruct.PLL.PLLQ = 10; // 550Mhz / 10 = 55Mhz + RCC_OscInitStruct.PLL.PLLR = 10; // unused + RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2; + RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE; + RCC_OscInitStruct.PLL.PLLFRACN = 0; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2 + |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2; + RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2; + RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) + { + Error_Handler(); + } + + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB + | RCC_PERIPHCLK_SDMMC | RCC_PERIPHCLK_ADC + | RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_USART16 + | RCC_PERIPHCLK_USART234578 | RCC_PERIPHCLK_I2C123 + | RCC_PERIPHCLK_I2C4 | RCC_PERIPHCLK_SPI123 + | RCC_PERIPHCLK_SPI45 | RCC_PERIPHCLK_SPI6; + + /* HSI48 used for USB 48 Mhz */ + /* PLL1 qclk also used for FMC, SDMMC, RNG, SAI */ + /* PLL2 pclk is needed for adc max 80 Mhz (p,q,r same) */ + /* PLL2 pclk also used for LP timers 2,3,4,5, SPI 1,2,3 */ + /* PLL2 qclk is needed for uart, can, spi4,5,6 80 Mhz */ + /* PLL3 r clk is needed for i2c 80 Mhz (p,q,r same) */ + PeriphClkInitStruct.PLL2.PLL2M = 15; // M DIV 15 vco 25 / 15 ~ 1.667 Mhz + PeriphClkInitStruct.PLL2.PLL2N = 96; // N MUL 96 + PeriphClkInitStruct.PLL2.PLL2P = 2; // P div 2 + PeriphClkInitStruct.PLL2.PLL2Q = 2; // Q div 2 + PeriphClkInitStruct.PLL2.PLL2R = 2; // R div 2 + // RCC_PLL1VCIRANGE_0 Clock range frequency between 1 and 2 MHz + PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_0; + PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOMEDIUM; + PeriphClkInitStruct.PLL2.PLL2FRACN = 0; + PeriphClkInitStruct.PLL3.PLL3M = 15; // M DIV 15 vco 25 / 15 ~ 1.667 Mhz + PeriphClkInitStruct.PLL3.PLL3N = 96; // N MUL 96 + PeriphClkInitStruct.PLL3.PLL3P = 2; // P div 2 + PeriphClkInitStruct.PLL3.PLL3Q = 2; // Q div 2 + PeriphClkInitStruct.PLL3.PLL3R = 2; // R div 2 + // RCC_PLL1VCIRANGE_0 Clock range frequency between 1 and 2 MHz + PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3VCIRANGE_0; + PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3VCOMEDIUM; + PeriphClkInitStruct.PLL3.PLL3FRACN = 0; + // ADC from PLL2 pclk + PeriphClkInitStruct.AdcClockSelection = RCC_ADCCLKSOURCE_PLL2; + // USB from HSI48 + PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48; + // SDMMC from PLL1 qclk + PeriphClkInitStruct.SdmmcClockSelection = 0; + //PeriphClkInitStruct.SdmmcClockSelection = RCC_SDMMCCLKSOURCE_PLL; + // LPUART from PLL2 qclk + PeriphClkInitStruct.Lpuart1ClockSelection = 0; + //PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PLL2; + // USART from PLL2 qclk + PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_PLL2; + // USART from PLL2 qclk + PeriphClkInitStruct.Usart234578ClockSelection = 0; + //PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_PLL2; + // I2C123 from PLL3 rclk + PeriphClkInitStruct.I2c123ClockSelection = RCC_I2C123CLKSOURCE_PLL3; + // I2C4 from PLL3 rclk + PeriphClkInitStruct.I2c4ClockSelection = 0; + //PeriphClkInitStruct.I2c4ClockSelection = RCC_I2C4CLKSOURCE_PLL3; + // SPI123 from PLL2 pclk + PeriphClkInitStruct.Spi123ClockSelection = RCC_SPI123CLKSOURCE_PLL2; + // SPI45 from PLL2 qclk + PeriphClkInitStruct.Spi45ClockSelection = 0; + //PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_PLL2; + // SPI6 from PLL2 qclk + PeriphClkInitStruct.Spi6ClockSelection = 0; + //PeriphClkInitStruct.Spi6ClockSelection = RCC_SPI6CLKSOURCE_PLL2; + + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { + Error_Handler(); + } +} + +#endif /* ARDUINO_GENERIC_* */ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723Zx.h b/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723Zx.h new file mode 100644 index 0000000000..d443f5c1fd --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723Zx.h @@ -0,0 +1,308 @@ +/* + ******************************************************************************* + * Copyright (c) 2020-2021, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ +#pragma once + +/*---------------------------------------------------------------------------- + * STM32 pins number + *----------------------------------------------------------------------------*/ +#define PA0 PIN_A0 +#define PA1 PIN_A1 +#define PA2 PIN_A2 +#define PA3 PIN_A3 +#define PA4 PIN_A4 +#define PA5 PIN_A5 +#define PA6 PIN_A6 +#define PA7 PIN_A7 +#define PA8 8 +#define PA9 9 +#define PA10 10 +#define PA11 11 +#define PA12 12 +#define PA13 13 +#define PA14 14 +#define PA15 15 +#define PB0 PIN_A8 +#define PB1 PIN_A9 +#define PB2 18 +#define PB3 19 +#define PB4 20 +#define PB5 21 +#define PB6 22 +#define PB7 23 +#define PB8 24 +#define PB9 25 +#define PB10 26 +#define PB11 27 +#define PB12 28 +#define PB13 29 +#define PB14 30 +#define PB15 31 +#define PC0 PIN_A10 +#define PC1 PIN_A11 +#define PC4 PIN_A12 +#define PC5 PIN_A13 +#define PC6 36 +#define PC7 37 +#define PC8 38 +#define PC9 39 +#define PC10 40 +#define PC11 41 +#define PC12 42 +#define PC13 43 +#define PC14 44 +#define PC15 45 +#define PD0 46 +#define PD1 47 +#define PD2 48 +#define PD3 49 +#define PD4 50 +#define PD5 51 +#define PD6 52 +#define PD7 53 +#define PD8 54 +#define PD9 55 +#define PD10 56 +#define PD11 57 +#define PD12 58 +#define PD13 59 +#define PD14 60 +#define PD15 61 +#define PE0 62 +#define PE1 63 +#define PE2 64 +#define PE3 65 +#define PE4 66 +#define PE5 67 +#define PE6 68 +#define PE7 69 +#define PE8 70 +#define PE9 71 +#define PE10 72 +#define PE11 73 +#define PE12 74 +#define PE13 75 +#define PE14 76 +#define PE15 77 +#define PF0 78 +#define PF1 79 +#define PF2 80 +#define PF3 PIN_A14 +#define PF4 PIN_A15 +#define PF5 PIN_A16 +#define PF6 PIN_A17 +#define PF7 PIN_A18 +#define PF8 PIN_A19 +#define PF9 PIN_A20 +#define PF10 PIN_A21 +#define PF11 PIN_A22 +#define PF12 PIN_A23 +#define PF13 PIN_A24 +#define PF14 PIN_A25 +#define PF15 93 +#define PG0 94 +#define PG1 95 +#define PG2 96 +#define PG3 97 +#define PG4 98 +#define PG5 99 +#define PG6 100 +#define PG7 101 +#define PG8 102 +#define PG9 103 +#define PG10 104 +#define PG11 105 +#define PG12 106 +#define PG13 107 +#define PG14 108 +#define PG15 109 +#define PH0 110 +#define PH1 111 +#define PC2_C PIN_A26 +#define PC3_C PIN_A27 + +// Alternate pins number +#define PA0_ALT1 (PA0 | ALT1) +#define PA1_ALT1 (PA1 | ALT1) +#define PA1_ALT2 (PA1 | ALT2) +#define PA2_ALT1 (PA2 | ALT1) +#define PA2_ALT2 (PA2 | ALT2) +#define PA3_ALT1 (PA3 | ALT1) +#define PA3_ALT2 (PA3 | ALT2) +#define PA4_ALT1 (PA4 | ALT1) +#define PA4_ALT2 (PA4 | ALT2) +#define PA5_ALT1 (PA5 | ALT1) +#define PA6_ALT1 (PA6 | ALT1) +#define PA7_ALT1 (PA7 | ALT1) +#define PA7_ALT2 (PA7 | ALT2) +#define PA7_ALT3 (PA7 | ALT3) +#define PA8_ALT1 (PA8 | ALT1) +#define PA9_ALT1 (PA9 | ALT1) +#define PA10_ALT1 (PA10 | ALT1) +#define PA11_ALT1 (PA11 | ALT1) +#define PA12_ALT1 (PA12 | ALT1) +#define PA15_ALT1 (PA15 | ALT1) +#define PA15_ALT2 (PA15 | ALT2) +#define PB0_ALT1 (PB0 | ALT1) +#define PB0_ALT2 (PB0 | ALT2) +#define PB1_ALT1 (PB1 | ALT1) +#define PB1_ALT2 (PB1 | ALT2) +#define PB3_ALT1 (PB3 | ALT1) +#define PB3_ALT2 (PB3 | ALT2) +#define PB4_ALT1 (PB4 | ALT1) +#define PB4_ALT2 (PB4 | ALT2) +#define PB5_ALT1 (PB5 | ALT1) +#define PB5_ALT2 (PB5 | ALT2) +#define PB6_ALT1 (PB6 | ALT1) +#define PB6_ALT2 (PB6 | ALT2) +#define PB7_ALT1 (PB7 | ALT1) +#define PB8_ALT1 (PB8 | ALT1) +#define PB8_ALT2 (PB8 | ALT2) +#define PB9_ALT1 (PB9 | ALT1) +#define PB9_ALT2 (PB9 | ALT2) +#define PB14_ALT1 (PB14 | ALT1) +#define PB14_ALT2 (PB14 | ALT2) +#define PB15_ALT1 (PB15 | ALT1) +#define PB15_ALT2 (PB15 | ALT2) +#define PC0_ALT1 (PC0 | ALT1) +#define PC0_ALT2 (PC0 | ALT2) +#define PC1_ALT1 (PC1 | ALT1) +#define PC1_ALT2 (PC1 | ALT2) +#define PC4_ALT1 (PC4 | ALT1) +#define PC5_ALT1 (PC5 | ALT1) +#define PC6_ALT1 (PC6 | ALT1) +#define PC6_ALT2 (PC6 | ALT2) +#define PC7_ALT1 (PC7 | ALT1) +#define PC7_ALT2 (PC7 | ALT2) +#define PC8_ALT1 (PC8 | ALT1) +#define PC9_ALT1 (PC9 | ALT1) +#define PC10_ALT1 (PC10 | ALT1) +#define PC11_ALT1 (PC11 | ALT1) +#define PF0_ALT1 (PF0 | ALT1) +#define PF1_ALT1 (PF1 | ALT1) +#define PF6_ALT1 (PF6 | ALT1) +#define PF7_ALT1 (PF7 | ALT1) +#define PF8_ALT1 (PF8 | ALT1) +#define PF8_ALT2 (PF8 | ALT2) +#define PF9_ALT1 (PF9 | ALT1) +#define PF9_ALT2 (PF9 | ALT2) +#define PG13_ALT1 (PG13 | ALT1) + +#define NUM_DIGITAL_PINS 114 +#define NUM_DUALPAD_PINS 2 +#define NUM_ANALOG_INPUTS 28 + +// On-board LED pin number +#ifndef LED_BUILTIN + #define LED_BUILTIN PNUM_NOT_DEFINED +#endif + +// On-board user button +#ifndef USER_BTN + #define USER_BTN PNUM_NOT_DEFINED +#endif + +// SPI definitions +#ifndef PIN_SPI_SS + #define PIN_SPI_SS PA4 +#endif +#ifndef PIN_SPI_SS1 + #define PIN_SPI_SS1 PA15 +#endif +#ifndef PIN_SPI_SS2 + #define PIN_SPI_SS2 PG10 +#endif +#ifndef PIN_SPI_SS3 + #define PIN_SPI_SS3 PNUM_NOT_DEFINED +#endif +#ifndef PIN_SPI_MOSI + #define PIN_SPI_MOSI PA7 +#endif +#ifndef PIN_SPI_MISO + #define PIN_SPI_MISO PA6 +#endif +#ifndef PIN_SPI_SCK + #define PIN_SPI_SCK PA5 +#endif + +// I2C definitions +#ifndef PIN_WIRE_SDA + #define PIN_WIRE_SDA PB7 +#endif +#ifndef PIN_WIRE_SCL + #define PIN_WIRE_SCL PB6 +#endif + +// Timer Definitions +// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin +#ifndef TIMER_TONE + #define TIMER_TONE TIM6 +#endif +#ifndef TIMER_SERVO + #define TIMER_SERVO TIM7 +#endif + +// UART Definitions +#ifndef SERIAL_UART_INSTANCE + #define SERIAL_UART_INSTANCE 4 +#endif + +// Default pin used for generic 'Serial' instance +// Mandatory for Firmata +#ifndef PIN_SERIAL_RX + #define PIN_SERIAL_RX PA1 +#endif +#ifndef PIN_SERIAL_TX + #define PIN_SERIAL_TX PA0 +#endif + +// Extra HAL modules +#if !defined(HAL_DAC_MODULE_DISABLED) + #define HAL_DAC_MODULE_ENABLED +#endif +#if !defined(HAL_ETH_MODULE_DISABLED) + #define HAL_ETH_MODULE_ENABLED +#endif +#if !defined(HAL_OSPI_MODULE_DISABLED) + #define HAL_OSPI_MODULE_ENABLED +#endif +#if !defined(HAL_SD_MODULE_DISABLED) + #define HAL_SD_MODULE_ENABLED +#endif + +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus + // These serial port names are intended to allow libraries and architecture-neutral + // sketches to automatically default to the correct port name for a particular type + // of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, + // the first hardware serial port whose RX/TX pins are not dedicated to another use. + // + // SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor + // + // SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial + // + // SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library + // + // SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. + // + // SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX + // pins are NOT connected to anything by default. + #ifndef SERIAL_PORT_MONITOR + #define SERIAL_PORT_MONITOR Serial + #endif + #ifndef SERIAL_PORT_HARDWARE + #define SERIAL_PORT_HARDWARE Serial + #endif +#endif diff --git a/ini/renamed.ini b/ini/renamed.ini index cd890b593c..ae1b5742b5 100644 --- a/ini/renamed.ini +++ b/ini/renamed.ini @@ -53,3 +53,21 @@ extends = renamed [env:mks_robin_nano35_maple] ;=> mks_robin_nano_v1v2_maple extends = renamed + +[env:BIGTREE_OCTOPUS_V1] ;=> STM32F446ZE_btt +extends = renamed + +[env:BIGTREE_OCTOPUS_V1_USB] ;=> STM32F446ZE_btt_USB +extends = renamed + +[env:BIGTREE_OCTOPUS_PRO_V1_F429] ;=> STM32F429ZG_btt +extends = renamed + +[env:BIGTREE_OCTOPUS_PRO_V1_F429_USB] ;=> STM32F429ZG_btt_USB +extends = renamed + +[env:BIGTREE_OCTOPUS_V1_F407] ;=> STM32F407ZE_btt +extends = renamed + +[env:BIGTREE_OCTOPUS_V1_F407_USB] ;=> STM32F407ZE_btt_USB +extends = renamed diff --git a/ini/stm32f1-maple.ini b/ini/stm32f1-maple.ini index d06e95750a..be7966be9d 100644 --- a/ini/stm32f1-maple.ini +++ b/ini/stm32f1-maple.ini @@ -352,7 +352,6 @@ build_flags = ${STM32F1_maple.build_flags} -DDEBUG_LEVEL=0 -DSS_TIMER=4 extends = STM32F1_maple platform_packages = tool-stm32duino board_build.address = 0x08005000 -board_build.offset = 0x5000 board_upload.maximum_size = 237568 build_flags = ${STM32F1_maple.build_flags} -D__STM32F1__=1 -DDEBUG_LEVEL=0 -DSS_TIMER=4 -DSERIAL_USB diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini index 05a549bec7..aa3b1dfc7c 100644 --- a/ini/stm32f4.ini +++ b/ini/stm32f4.ini @@ -269,7 +269,7 @@ build_unflags = ${env:BIGTREE_SKR_2_F429_USB.build_unflags} -Os -NDEBUG # # BigTreeTech Octopus V1.0/1.1 / Octopus Pro V1.0 (STM32F446ZET6 ARM Cortex-M4) # -[env:BIGTREE_OCTOPUS_V1] +[env:STM32F446ZE_btt] extends = stm32_variant board = marlin_BigTree_Octopus_v1 board_build.offset = 0x8000 @@ -282,8 +282,8 @@ build_flags = ${stm32_variant.build_flags} # # BigTreeTech Octopus V1.0/1.1 / Octopus Pro V1.0 (STM32F446ZET6 ARM Cortex-M4) with USB Flash Drive Support # -[env:BIGTREE_OCTOPUS_V1_USB] -extends = env:BIGTREE_OCTOPUS_V1 +[env:STM32F446ZE_btt_USB] +extends = env:STM32F446ZE_btt platform_packages = ${stm_flash_drive.platform_packages} build_unflags = -DUSBD_USE_CDC build_flags = ${stm_flash_drive.build_flags} @@ -293,9 +293,9 @@ build_flags = ${stm_flash_drive.build_flags} -DUSBD_USE_CDC_MSC # -# BigTreeTech Octopus Pro V1.0 (STM32F429ZGT6 ARM Cortex-M4) +# BigTreeTech Octopus V1.1 / Octopus Pro V1.0 (STM32F429ZGT6 ARM Cortex-M4) # -[env:BIGTREE_OCTOPUS_PRO_V1_F429] +[env:STM32F429ZG_btt] extends = stm32_variant board = marlin_BigTree_Octopus_Pro_v1_F429 board_build.offset = 0x8000 @@ -306,10 +306,10 @@ build_flags = ${stm32_variant.build_flags} -DUSE_USB_HS_IN_FS # -# BigTreeTech Octopus Pro V1.0 (STM32F429ZGT6 ARM Cortex-M4) with USB Flash Drive Support +# BigTreeTech Octopus V1.1 / Octopus Pro V1.0 (STM32F429ZGT6 ARM Cortex-M4) with USB Flash Drive Support # -[env:BIGTREE_OCTOPUS_PRO_V1_F429_USB] -extends = env:BIGTREE_OCTOPUS_PRO_V1_F429 +[env:STM32F429ZG_btt_USB] +extends = env:STM32F429ZG_btt platform_packages = ${stm_flash_drive.platform_packages} build_unflags = -DUSBD_USE_CDC build_flags = ${stm_flash_drive.build_flags} @@ -320,7 +320,7 @@ build_flags = ${stm_flash_drive.build_flags} # # BigTreeTech Octopus / Octopus Pro (STM32F407ZET6 ARM Cortex-M4) # -[env:BIGTREE_OCTOPUS_V1_F407] +[env:STM32F407ZE_btt] extends = stm32_variant board = marlin_STM32F407ZE board_build.offset = 0x8000 @@ -330,8 +330,8 @@ build_flags = ${stm32_variant.build_flags} # # BigTreeTech Octopus / Octopus Pro (STM32F407ZET6 ARM Cortex-M4) with USB Flash Drive Support # -[env:BIGTREE_OCTOPUS_V1_F407_USB] -extends = env:BIGTREE_OCTOPUS_V1_F407 +[env:STM32F407ZE_btt_USB] +extends = env:STM32F407ZE_btt platform_packages = ${stm_flash_drive.platform_packages} build_unflags = -DUSBD_USE_CDC build_flags = ${stm_flash_drive.build_flags} diff --git a/ini/stm32h7.ini b/ini/stm32h7.ini index d00d374c61..ff4a5b4c0b 100644 --- a/ini/stm32h7.ini +++ b/ini/stm32h7.ini @@ -44,8 +44,8 @@ debug_tool = cmsis-dap # [env:STM32H743Vx_btt] extends = stm32_variant -platform = ststm32@~15.4.1 -platform_packages = framework-arduinoststm32@~4.20200.220530 +platform = ststm32@15.4.1 +platform_packages = framework-arduinoststm32@4.20200.220530 board = marlin_STM32H743Vx board_build.offset = 0x20000 board_upload.offset_address = 0x08020000 @@ -59,3 +59,56 @@ build_flags = ${stm32_variant.build_flags} -DD_CACHE_DISABLED upload_protocol = cmsis-dap debug_tool = cmsis-dap + +# +# BigTreeTech SKR V3.0 / SKR V3.0 EZ (STM32H723VGT6 ARM Cortex-M7) +# BigTreeTech Octopus Max EZ V1.0 (STM32H723VET6 ARM Cortex-M7) +# +[env:STM32H723Vx_btt] +extends = stm32_variant +platform = ststm32@15.4.1 +platform_packages = framework-arduinoststm32@4.20200.220530 +board = marlin_STM32H723Vx +board_build.offset = 0x20000 +board_upload.offset_address = 0x08020000 +build_flags = ${stm32_variant.build_flags} + -DPIN_SERIAL1_RX=PA_10 -DPIN_SERIAL1_TX=PA_9 + -DPIN_SERIAL2_RX=PD_6 -DPIN_SERIAL2_TX=PD_5 + -DPIN_SERIAL3_RX=PD_9 -DPIN_SERIAL3_TX=PD_8 + -DPIN_SERIAL4_RX=PA_1 -DPIN_SERIAL4_TX=PA_0 + -DPIN_SERIAL7_RX=PE_7 -DPIN_SERIAL7_TX=PE_8 + -DSERIAL_RX_BUFFER_SIZE=1024 -DSERIAL_TX_BUFFER_SIZE=1024 + -DTIMER_SERVO=TIM5 -DTIMER_TONE=TIM2 + -DSTEP_TIMER_IRQ_PRIO=0 + -DRCC_PERIPHCLK_I2C35=RCC_PERIPHCLK_I2C5 + -DUSE_USB_HS -DUSE_USB_HS_IN_FS + -DD_CACHE_DISABLED + -UI2C5_BASE +upload_protocol = cmsis-dap +debug_tool = cmsis-dap + +# +# BigTreeTech Octopus Pro V1.0 / Octopus Max EZ V1.0 (STM32H723ZET6 ARM Cortex-M7) +# +[env:STM32H723Zx_btt] +extends = stm32_variant +platform = ststm32@15.4.1 +platform_packages = framework-arduinoststm32@4.20200.220530 +board = marlin_STM32H723Zx +board_build.offset = 0x20000 +board_upload.offset_address = 0x08020000 +build_flags = ${stm32_variant.build_flags} + -DPIN_SERIAL1_RX=PA_10 -DPIN_SERIAL1_TX=PA_9 + -DPIN_SERIAL2_RX=PD_6 -DPIN_SERIAL2_TX=PD_5 + -DPIN_SERIAL3_RX=PD_9 -DPIN_SERIAL3_TX=PD_8 + -DPIN_SERIAL4_RX=PA_1 -DPIN_SERIAL4_TX=PA_0 + -DPIN_SERIAL7_RX=PE_7 -DPIN_SERIAL7_TX=PE_8 + -DSERIAL_RX_BUFFER_SIZE=1024 -DSERIAL_TX_BUFFER_SIZE=1024 + -DTIMER_SERVO=TIM5 -DTIMER_TONE=TIM2 + -DSTEP_TIMER_IRQ_PRIO=0 + -DRCC_PERIPHCLK_I2C35=RCC_PERIPHCLK_I2C5 + -DUSE_USB_HS -DUSE_USB_HS_IN_FS + -DD_CACHE_DISABLED + -UI2C5_BASE +upload_protocol = cmsis-dap +debug_tool = cmsis-dap From 987923ecb4bddb0a5813cc7c5563eb69722b33d5 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 11 Mar 2023 00:20:20 +0000 Subject: [PATCH 102/659] [cron] Bump distribution date (2023-03-11) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 154e1f9c4e..96b70234ed 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-10" +//#define STRING_DISTRIBUTION_DATE "2023-03-11" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index f1b0861dad..735f89a1fb 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-10" + #define STRING_DISTRIBUTION_DATE "2023-03-11" #endif /** From 3e12934ea0878c311b55c00766493f1b7cda0044 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Sat, 11 Mar 2023 00:08:07 -0800 Subject: [PATCH 103/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Anet=20ET4=20SD=5F?= =?UTF-8?q?SS=5FPIN=20(#25492)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/stm32f4/pins_ANET_ET4.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Marlin/src/pins/stm32f4/pins_ANET_ET4.h b/Marlin/src/pins/stm32f4/pins_ANET_ET4.h index 01ca4560fe..7c6eaca812 100644 --- a/Marlin/src/pins/stm32f4/pins_ANET_ET4.h +++ b/Marlin/src/pins/stm32f4/pins_ANET_ET4.h @@ -206,6 +206,7 @@ #if DISABLED(SDIO_SUPPORT) #define SOFTWARE_SPI #define SDSS PC11 + #define SD_SS_PIN SDSS #define SD_SCK_PIN PC12 #define SD_MISO_PIN PC8 #define SD_MOSI_PIN PD2 From fe32582262a22d5e4111d14e47e087902fe3e9fd Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 12 Mar 2023 00:24:43 +0000 Subject: [PATCH 104/659] [cron] Bump distribution date (2023-03-12) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 96b70234ed..614ee400b7 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-11" +//#define STRING_DISTRIBUTION_DATE "2023-03-12" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 735f89a1fb..ca975adb4e 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-11" + #define STRING_DISTRIBUTION_DATE "2023-03-12" #endif /** From 4527908c11be0f7a5f512f7235c0123b1e3f3e2a Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Sat, 11 Mar 2023 17:44:56 -0800 Subject: [PATCH 105/659] =?UTF-8?q?BTT=20Octopus=20=E2=80=A6=20followup=20?= =?UTF-8?q?(#25495)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25387 --- ...ARLIN_STM32H723Zx.cpp => variant_MARLIN_STM32H723ZX.cpp} | 0 ...nt_MARLIN_STM32H723Zx.h => variant_MARLIN_STM32H723ZX.h} | 0 ini/stm32h7.ini | 6 +++--- 3 files changed, 3 insertions(+), 3 deletions(-) rename buildroot/share/PlatformIO/variants/MARLIN_H723Zx/{variant_MARLIN_STM32H723Zx.cpp => variant_MARLIN_STM32H723ZX.cpp} (100%) rename buildroot/share/PlatformIO/variants/MARLIN_H723Zx/{variant_MARLIN_STM32H723Zx.h => variant_MARLIN_STM32H723ZX.h} (100%) diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723Zx.cpp b/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723ZX.cpp similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723Zx.cpp rename to buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723ZX.cpp diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723Zx.h b/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723ZX.h similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723Zx.h rename to buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723ZX.h diff --git a/ini/stm32h7.ini b/ini/stm32h7.ini index ff4a5b4c0b..5733d35bf0 100644 --- a/ini/stm32h7.ini +++ b/ini/stm32h7.ini @@ -45,7 +45,7 @@ debug_tool = cmsis-dap [env:STM32H743Vx_btt] extends = stm32_variant platform = ststm32@15.4.1 -platform_packages = framework-arduinoststm32@4.20200.220530 +platform_packages = framework-arduinoststm32@~4.20200.220530 board = marlin_STM32H743Vx board_build.offset = 0x20000 board_upload.offset_address = 0x08020000 @@ -67,7 +67,7 @@ debug_tool = cmsis-dap [env:STM32H723Vx_btt] extends = stm32_variant platform = ststm32@15.4.1 -platform_packages = framework-arduinoststm32@4.20200.220530 +platform_packages = framework-arduinoststm32@~4.20200.220530 board = marlin_STM32H723Vx board_build.offset = 0x20000 board_upload.offset_address = 0x08020000 @@ -93,7 +93,7 @@ debug_tool = cmsis-dap [env:STM32H723Zx_btt] extends = stm32_variant platform = ststm32@15.4.1 -platform_packages = framework-arduinoststm32@4.20200.220530 +platform_packages = framework-arduinoststm32@~4.20200.220530 board = marlin_STM32H723Zx board_build.offset = 0x20000 board_upload.offset_address = 0x08020000 From cb66bff9246534c11acea192deae4ab6281b64c6 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 11 Mar 2023 19:17:25 -0600 Subject: [PATCH 106/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Exit=20from=20ISR?= =?UTF-8?q?=20on=20AVR=20already=20does=20sei?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> --- Marlin/src/module/stepper.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index d0398b404c..b54b9668ea 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -1600,8 +1600,11 @@ void Stepper::isr() { // Set the next ISR to fire at the proper time HAL_timer_set_compare(MF_TIMER_STEP, hal_timer_t(next_isr_ticks)); - // Don't forget to finally reenable interrupts - hal.isr_on(); + // Don't forget to finally reenable interrupts on non-AVR. + // AVR automatically calls sei() for us on Return-from-Interrupt. + #ifndef __AVR__ + hal.isr_on(); + #endif } #if MINIMUM_STEPPER_PULSE || MAXIMUM_STEPPER_RATE From f9d3939d2331b785c59924538f1d248d5ad23a58 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 11 Mar 2023 18:51:37 -0600 Subject: [PATCH 107/659] =?UTF-8?q?=F0=9F=8E=A8=20Cosmetic=20stepper=20upd?= =?UTF-8?q?ates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> --- Marlin/Configuration_adv.h | 18 +- Marlin/src/core/types.h | 65 ++--- Marlin/src/module/stepper.cpp | 60 ++-- Marlin/src/module/stepper.h | 28 +- Marlin/src/module/stepper/speed_lookuptable.h | 256 +++++++++--------- 5 files changed, 218 insertions(+), 209 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index abb238e33e..f3f7a4c255 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -4042,16 +4042,16 @@ * Sample debug features * If you add more debug displays, be careful to avoid conflicts! */ - #define MAX7219_DEBUG_PRINTER_ALIVE // Blink corner LED of 8x8 matrix to show that the firmware is functioning - #define MAX7219_DEBUG_PLANNER_HEAD 2 // Show the planner queue head position on this and the next LED matrix row - #define MAX7219_DEBUG_PLANNER_TAIL 4 // Show the planner queue tail position on this and the next LED matrix row + #define MAX7219_DEBUG_PRINTER_ALIVE // Blink corner LED of 8x8 matrix to show that the firmware is functioning + #define MAX7219_DEBUG_PLANNER_HEAD 2 // Show the planner queue head position on this and the next LED matrix row + #define MAX7219_DEBUG_PLANNER_TAIL 4 // Show the planner queue tail position on this and the next LED matrix row - #define MAX7219_DEBUG_PLANNER_QUEUE 0 // Show the current planner queue depth on this and the next LED matrix row - // If you experience stuttering, reboots, etc. this option can reveal how - // tweaks made to the configuration are affecting the printer in real-time. - #define MAX7219_DEBUG_PROFILE 6 // Display the fraction of CPU time spent in profiled code on this LED matrix - // row. By default idle() is profiled so this shows how "idle" the processor is. - // See class CodeProfiler. + #define MAX7219_DEBUG_PLANNER_QUEUE 0 // Show the current planner queue depth on this and the next LED matrix row + // If you experience stuttering, reboots, etc. this option can reveal how + // tweaks made to the configuration are affecting the printer in real-time. + #define MAX7219_DEBUG_PROFILE 6 // Display the fraction of CPU time spent in profiled code on this LED matrix + // row. By default idle() is profiled so this shows how "idle" the processor is. + // See class CodeProfiler. #endif /** diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 4e3d7f0782..15d572af60 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -84,6 +84,13 @@ template struct IF { typedef L type; }; #define AXIS_COLLISION(L) (AXIS4_NAME == L || AXIS5_NAME == L || AXIS6_NAME == L || AXIS7_NAME == L || AXIS8_NAME == L || AXIS9_NAME == L) +// Helpers +#define _RECIP(N) ((N) ? 1.0f / static_cast(N) : 0.0f) +#define _ABS(N) ((N) < 0 ? -(N) : (N)) +#define _LS(N) (N = (T)(uint32_t(N) << p)) +#define _RS(N) (N = (T)(uint32_t(N) >> p)) +#define FI FORCE_INLINE + // Define types based on largest bit width stored value required #define bits_t(W) typename IF<((W)> 16), uint32_t, typename IF<((W)> 8), uint16_t, uint8_t>::type>::type #define uvalue_t(V) typename IF<((V)>65535), uint32_t, typename IF<((V)>255), uint16_t, uint8_t>::type>::type @@ -101,28 +108,30 @@ struct Flags { flagbits_t b; typename IF<(N>16), N32, typename IF<(N>8), N16, N8>::type>::type flag; }; - void reset() { b = 0; } - void set(const int n, const bool onoff) { onoff ? set(n) : clear(n); } - void set(const int n) { b |= (flagbits_t)_BV(n); } - void clear(const int n) { b &= ~(flagbits_t)_BV(n); } - bool test(const int n) const { return TEST(b, n); } - bool operator[](const int n) { return test(n); } - bool operator[](const int n) const { return test(n); } - int size() const { return sizeof(b); } + FI void reset() { b = 0; } + FI void set(const int n, const bool onoff) { onoff ? set(n) : clear(n); } + FI void set(const int n) { b |= (flagbits_t)_BV(n); } + FI void clear(const int n) { b &= ~(flagbits_t)_BV(n); } + FI bool test(const int n) const { return TEST(b, n); } + FI bool operator[](const int n) { return test(n); } + FI bool operator[](const int n) const { return test(n); } + FI int size() const { return sizeof(b); } + FI operator bool() const { return b; } }; // Specialization for a single bool flag template<> struct Flags<1> { bool b; - void reset() { b = false; } - void set(const int n, const bool onoff) { onoff ? set(n) : clear(n); } - void set(const int) { b = true; } - void clear(const int) { b = false; } - bool test(const int) const { return b; } - bool& operator[](const int) { return b; } - bool operator[](const int) const { return b; } - int size() const { return sizeof(b); } + FI void reset() { b = false; } + FI void set(const int n, const bool onoff) { onoff ? set(n) : clear(n); } + FI void set(const int) { b = true; } + FI void clear(const int) { b = false; } + FI bool test(const int) const { return b; } + FI bool& operator[](const int) { return b; } + FI bool operator[](const int) const { return b; } + FI int size() const { return sizeof(b); } + FI operator bool() const { return b; } }; typedef Flags<8> flags_8_t; @@ -134,14 +143,15 @@ typedef struct AxisFlags { struct Flags flags; struct { bool LOGICAL_AXIS_LIST(e:1, x:1, y:1, z:1, i:1, j:1, k:1, u:1, v:1, w:1); }; }; - void reset() { flags.reset(); } - void set(const int n) { flags.set(n); } - void set(const int n, const bool onoff) { flags.set(n, onoff); } - void clear(const int n) { flags.clear(n); } - bool test(const int n) const { return flags.test(n); } - bool operator[](const int n) { return flags[n]; } - bool operator[](const int n) const { return flags[n]; } - int size() const { return sizeof(flags); } + FI void reset() { flags.reset(); } + FI void set(const int n) { flags.set(n); } + FI void set(const int n, const bool onoff) { flags.set(n, onoff); } + FI void clear(const int n) { flags.clear(n); } + FI bool test(const int n) const { return flags.test(n); } + FI bool operator[](const int n) { return flags[n]; } + FI bool operator[](const int n) const { return flags[n]; } + FI int size() const { return sizeof(flags); } + FI operator bool() const { return flags; } } axis_flags_t; // @@ -230,13 +240,6 @@ typedef const_float_t const_celsius_float_t; // Coordinates structures for XY, XYZ, XYZE... // -// Helpers -#define _RECIP(N) ((N) ? 1.0f / static_cast(N) : 0.0f) -#define _ABS(N) ((N) < 0 ? -(N) : (N)) -#define _LS(N) (N = (T)(uint32_t(N) << p)) -#define _RS(N) (N = (T)(uint32_t(N) >> p)) -#define FI FORCE_INLINE - // Forward declarations template struct XYval; template struct XYZval; diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index b54b9668ea..700cdd377b 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -189,7 +189,7 @@ bool Stepper::abort_current_block; #endif uint32_t Stepper::acceleration_time, Stepper::deceleration_time; -uint8_t Stepper::steps_per_isr; +uint8_t Stepper::steps_per_isr; // Count of steps to perform per Stepper ISR call #if ENABLED(FREEZE_FEATURE) bool Stepper::frozen; // = false @@ -1996,7 +1996,7 @@ void Stepper::pulse_phase_isr() { void Stepper::shaping_isr() { xy_bool_t step_needed{0}; - // Clear the echoes that are ready to process. If the buffers are too full and risk overflo, also apply echoes early. + // Clear the echoes that are ready to process. If the buffers are too full and risk overflow, also apply echoes early. TERN_(INPUT_SHAPING_X, step_needed[X_AXIS] = !ShapingQueue::peek_x() || ShapingQueue::free_count_x() < steps_per_isr); TERN_(INPUT_SHAPING_Y, step_needed[Y_AXIS] = !ShapingQueue::peek_y() || ShapingQueue::free_count_y() < steps_per_isr); @@ -2047,39 +2047,45 @@ void Stepper::pulse_phase_isr() { // Calculate timer interval, with all limits applied. uint32_t Stepper::calc_timer_interval(uint32_t step_rate) { + #ifdef CPU_32_BIT - // In case of high-performance processor, it is able to calculate in real-time - return uint32_t(STEPPER_TIMER_RATE) / step_rate; + + return uint32_t(STEPPER_TIMER_RATE) / step_rate; // A fast processor can just do integer division + #else + // AVR is able to keep up at 30khz Stepping ISR rate. - constexpr uint32_t min_step_rate = (F_CPU) / 500000U; - if (step_rate <= min_step_rate) { + constexpr uint32_t min_step_rate = (F_CPU) / 500000U; // i.e., 32 or 40 + if (step_rate <= min_step_rate) { // lower step rates step_rate = 0; - uintptr_t table_address = (uintptr_t)&speed_lookuptable_slow[0][0]; - return uint16_t(pgm_read_word(table_address)); + return uint16_t(pgm_read_word(uintptr_t(speed_lookuptable_slow))); } else { step_rate -= min_step_rate; // Correct for minimal speed if (step_rate >= 0x0800) { // higher step rate - const uint8_t rate_mod_256 = (step_rate & 0x00FF); - const uintptr_t table_address = uintptr_t(&speed_lookuptable_fast[uint8_t(step_rate >> 8)][0]), - gain = uint16_t(pgm_read_word(table_address + 2)); - return uint16_t(pgm_read_word(table_address)) - MultiU8X16toH16(rate_mod_256, gain); + const uintptr_t table_address = uintptr_t(&speed_lookuptable_fast[uint8_t(step_rate >> 8)]); + const uint16_t gain = uint16_t(pgm_read_word(table_address + 2)); + return uint16_t(pgm_read_word(table_address)) - MultiU8X16toH16(uint8_t(step_rate & 0x00FF), gain); } else { // lower step rates - uintptr_t table_address = uintptr_t(&speed_lookuptable_slow[0][0]); - table_address += (step_rate >> 1) & 0xFFFC; + const uintptr_t table_address = uintptr_t(&speed_lookuptable_slow[uint8_t(step_rate >> 3)]); return uint16_t(pgm_read_word(table_address)) - ((uint16_t(pgm_read_word(table_address + 2)) * uint8_t(step_rate & 0x0007)) >> 3); } } - #endif + + #endif // !CPU_32_BIT } // Get the timer interval and the number of loops to perform per tick uint32_t Stepper::calc_timer_interval(uint32_t step_rate, uint8_t &loops) { uint8_t multistep = 1; - #if DISABLED(DISABLE_MULTI_STEPPING) + #if ENABLED(DISABLE_MULTI_STEPPING) + + // Just make sure the step rate is doable + NOMORE(step_rate, uint32_t(MAX_STEP_ISR_FREQUENCY_1X)); + + #else // The stepping frequency limits for each multistepping rate static const uint32_t limit[] PROGMEM = { @@ -2100,18 +2106,18 @@ uint32_t Stepper::calc_timer_interval(uint32_t step_rate, uint8_t &loops) { multistep <<= 1; ++idx; }; - #else - NOMORE(step_rate, uint32_t(MAX_STEP_ISR_FREQUENCY_1X)); + #endif loops = multistep; return calc_timer_interval(step_rate); } -// This is the last half of the stepper interrupt: This one processes and -// properly schedules blocks from the planner. This is executed after creating -// the step pulses, so it is not time critical, as pulses are already done. - +/** + * This last phase of the stepper interrupt processes and properly + * schedules planner blocks. This is executed after the step pulses + * have been done, so it is less time critical. + */ uint32_t Stepper::block_phase_isr() { // If no queued movements, just wait 1ms for the next block @@ -2555,7 +2561,7 @@ uint32_t Stepper::block_phase_isr() { if (stepper_extruder != last_moved_extruder) la_advance_steps = 0; #endif if (current_block->la_advance_rate) { - // apply LA scaling and discount the effect of frequency scaling + // Apply LA scaling and discount the effect of frequency scaling la_dividend = (advance_dividend.e << current_block->la_scaling) << oversampling_factor; } #endif @@ -2597,7 +2603,7 @@ uint32_t Stepper::block_phase_isr() { if (current_block->steps.z) enable_axis(Z_AXIS); #endif - // Mark the time_nominal as not calculated yet + // Mark ticks_nominal as not-yet-calculated ticks_nominal = -1; #if ENABLED(S_CURVE_ACCELERATION) @@ -2635,8 +2641,8 @@ uint32_t Stepper::block_phase_isr() { // the acceleration and speed values calculated in block_phase_isr(). // This helps keep LA in sync with, for example, S_CURVE_ACCELERATION. la_delta_error += la_dividend; - const bool step_needed = la_delta_error >= 0; - if (step_needed) { + const bool e_step_needed = la_delta_error >= 0; + if (e_step_needed) { count_position.e += count_direction.e; la_advance_steps += count_direction.e; la_delta_error -= advance_divisor; @@ -2647,7 +2653,7 @@ uint32_t Stepper::block_phase_isr() { TERN_(I2S_STEPPER_STREAM, i2s_push_sample()); - if (step_needed) { + if (e_step_needed) { // Enforce a minimum duration for STEP pulse ON #if ISR_PULSE_CONTROL USING_TIMED_PULSE(); diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 05f609c9f3..3a3e45dccc 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -217,10 +217,10 @@ // The loop takes the base time plus the time for all the bresenham logic for R pulses plus the time // between pulses for (R-1) pulses. But the user could be enforcing a minimum time so the loop time is: -#define ISR_LOOP_CYCLES(R) ((ISR_LOOP_BASE_CYCLES + MIN_ISR_LOOP_CYCLES + MIN_STEPPER_PULSE_CYCLES) * (R - 1) + _MAX(MIN_ISR_LOOP_CYCLES, MIN_STEPPER_PULSE_CYCLES)) +#define ISR_LOOP_CYCLES(R) ((ISR_LOOP_BASE_CYCLES + MIN_ISR_LOOP_CYCLES + MIN_STEPPER_PULSE_CYCLES) * ((1UL << R) - 1) + _MAX(MIN_ISR_LOOP_CYCLES, MIN_STEPPER_PULSE_CYCLES)) // Model input shaping as an extra loop call -#define ISR_SHAPING_LOOP_CYCLES(R) TERN0(HAS_SHAPING, (R) * ((ISR_LOOP_BASE_CYCLES) + TERN0(INPUT_SHAPING_X, ISR_X_STEPPER_CYCLES) + TERN0(INPUT_SHAPING_Y, ISR_Y_STEPPER_CYCLES))) +#define ISR_SHAPING_LOOP_CYCLES(R) (TERN0(HAS_SHAPING, ((ISR_LOOP_BASE_CYCLES) + TERN0(INPUT_SHAPING_X, ISR_X_STEPPER_CYCLES) + TERN0(INPUT_SHAPING_Y, ISR_Y_STEPPER_CYCLES)) << R)) // If linear advance is enabled, then it is handled separately #if ENABLED(LIN_ADVANCE) @@ -245,17 +245,17 @@ #endif // Now estimate the total ISR execution time in cycles given a step per ISR multiplier -#define ISR_EXECUTION_CYCLES(R) (((ISR_BASE_CYCLES + ISR_S_CURVE_CYCLES + ISR_SHAPING_BASE_CYCLES + ISR_LOOP_CYCLES(R) + ISR_SHAPING_LOOP_CYCLES(R) + ISR_LA_BASE_CYCLES + ISR_LA_LOOP_CYCLES)) / (R)) +#define ISR_EXECUTION_CYCLES(R) (((ISR_BASE_CYCLES + ISR_S_CURVE_CYCLES + ISR_SHAPING_BASE_CYCLES + ISR_LOOP_CYCLES(R) + ISR_SHAPING_LOOP_CYCLES(R) + ISR_LA_BASE_CYCLES + ISR_LA_LOOP_CYCLES)) >> R) // The maximum allowable stepping frequency when doing x128-x1 stepping (in Hz) -#define MAX_STEP_ISR_FREQUENCY_128X ((F_CPU) / ISR_EXECUTION_CYCLES(128)) -#define MAX_STEP_ISR_FREQUENCY_64X ((F_CPU) / ISR_EXECUTION_CYCLES(64)) -#define MAX_STEP_ISR_FREQUENCY_32X ((F_CPU) / ISR_EXECUTION_CYCLES(32)) -#define MAX_STEP_ISR_FREQUENCY_16X ((F_CPU) / ISR_EXECUTION_CYCLES(16)) -#define MAX_STEP_ISR_FREQUENCY_8X ((F_CPU) / ISR_EXECUTION_CYCLES(8)) -#define MAX_STEP_ISR_FREQUENCY_4X ((F_CPU) / ISR_EXECUTION_CYCLES(4)) -#define MAX_STEP_ISR_FREQUENCY_2X ((F_CPU) / ISR_EXECUTION_CYCLES(2)) -#define MAX_STEP_ISR_FREQUENCY_1X ((F_CPU) / ISR_EXECUTION_CYCLES(1)) +#define MAX_STEP_ISR_FREQUENCY_128X ((F_CPU) / ISR_EXECUTION_CYCLES(7)) +#define MAX_STEP_ISR_FREQUENCY_64X ((F_CPU) / ISR_EXECUTION_CYCLES(6)) +#define MAX_STEP_ISR_FREQUENCY_32X ((F_CPU) / ISR_EXECUTION_CYCLES(5)) +#define MAX_STEP_ISR_FREQUENCY_16X ((F_CPU) / ISR_EXECUTION_CYCLES(4)) +#define MAX_STEP_ISR_FREQUENCY_8X ((F_CPU) / ISR_EXECUTION_CYCLES(3)) +#define MAX_STEP_ISR_FREQUENCY_4X ((F_CPU) / ISR_EXECUTION_CYCLES(2)) +#define MAX_STEP_ISR_FREQUENCY_2X ((F_CPU) / ISR_EXECUTION_CYCLES(1)) +#define MAX_STEP_ISR_FREQUENCY_1X ((F_CPU) / ISR_EXECUTION_CYCLES(0)) // The minimum step ISR rate used by ADAPTIVE_STEP_SMOOTHING to target 50% CPU usage // This does not account for the possibility of multi-stepping. @@ -459,8 +459,6 @@ constexpr ena_mask_t enable_overlap[] = { // Stepper class definition // class Stepper { - friend class KinematicSystem; - friend class DeltaKinematicSystem; friend void stepperTask(void *); public: @@ -810,8 +808,10 @@ class Stepper { // Set the current position in steps static void _set_position(const abce_long_t &spos); - // Calculate timing interval for the given step rate + // Calculate the timing interval for the given step rate static uint32_t calc_timer_interval(uint32_t step_rate); + + // Calculate timing interval and steps-per-ISR for the given step rate static uint32_t calc_timer_interval(uint32_t step_rate, uint8_t &loops); #if ENABLED(S_CURVE_ACCELERATION) diff --git a/Marlin/src/module/stepper/speed_lookuptable.h b/Marlin/src/module/stepper/speed_lookuptable.h index b173ebec08..0b4205ea57 100644 --- a/Marlin/src/module/stepper/speed_lookuptable.h +++ b/Marlin/src/module/stepper/speed_lookuptable.h @@ -24,145 +24,145 @@ #if F_CPU == 16000000 const uint16_t speed_lookuptable_fast[256][2] PROGMEM = { - { 62500, 55556}, { 6944, 3268}, { 3676, 1176}, { 2500, 607}, { 1893, 369}, { 1524, 249}, { 1275, 179}, { 1096, 135}, - { 961, 105}, { 856, 85}, { 771, 69}, { 702, 58}, { 644, 49}, { 595, 42}, { 553, 37}, { 516, 32}, - { 484, 28}, { 456, 25}, { 431, 23}, { 408, 20}, { 388, 19}, { 369, 16}, { 353, 16}, { 337, 14}, - { 323, 13}, { 310, 11}, { 299, 11}, { 288, 11}, { 277, 9}, { 268, 9}, { 259, 8}, { 251, 8}, - { 243, 8}, { 235, 7}, { 228, 6}, { 222, 6}, { 216, 6}, { 210, 6}, { 204, 5}, { 199, 5}, - { 194, 5}, { 189, 4}, { 185, 4}, { 181, 4}, { 177, 4}, { 173, 4}, { 169, 4}, { 165, 3}, - { 162, 3}, { 159, 4}, { 155, 3}, { 152, 3}, { 149, 2}, { 147, 3}, { 144, 3}, { 141, 2}, - { 139, 3}, { 136, 2}, { 134, 2}, { 132, 3}, { 129, 2}, { 127, 2}, { 125, 2}, { 123, 2}, - { 121, 2}, { 119, 1}, { 118, 2}, { 116, 2}, { 114, 1}, { 113, 2}, { 111, 2}, { 109, 1}, - { 108, 2}, { 106, 1}, { 105, 2}, { 103, 1}, { 102, 1}, { 101, 1}, { 100, 2}, { 98, 1}, - { 97, 1}, { 96, 1}, { 95, 2}, { 93, 1}, { 92, 1}, { 91, 1}, { 90, 1}, { 89, 1}, - { 88, 1}, { 87, 1}, { 86, 1}, { 85, 1}, { 84, 1}, { 83, 0}, { 83, 1}, { 82, 1}, - { 81, 1}, { 80, 1}, { 79, 1}, { 78, 0}, { 78, 1}, { 77, 1}, { 76, 1}, { 75, 0}, - { 75, 1}, { 74, 1}, { 73, 1}, { 72, 0}, { 72, 1}, { 71, 1}, { 70, 0}, { 70, 1}, - { 69, 0}, { 69, 1}, { 68, 1}, { 67, 0}, { 67, 1}, { 66, 0}, { 66, 1}, { 65, 0}, - { 65, 1}, { 64, 1}, { 63, 0}, { 63, 1}, { 62, 0}, { 62, 1}, { 61, 0}, { 61, 1}, - { 60, 0}, { 60, 0}, { 60, 1}, { 59, 0}, { 59, 1}, { 58, 0}, { 58, 1}, { 57, 0}, - { 57, 1}, { 56, 0}, { 56, 0}, { 56, 1}, { 55, 0}, { 55, 1}, { 54, 0}, { 54, 0}, - { 54, 1}, { 53, 0}, { 53, 0}, { 53, 1}, { 52, 0}, { 52, 0}, { 52, 1}, { 51, 0}, - { 51, 0}, { 51, 1}, { 50, 0}, { 50, 0}, { 50, 1}, { 49, 0}, { 49, 0}, { 49, 1}, - { 48, 0}, { 48, 0}, { 48, 1}, { 47, 0}, { 47, 0}, { 47, 0}, { 47, 1}, { 46, 0}, - { 46, 0}, { 46, 1}, { 45, 0}, { 45, 0}, { 45, 0}, { 45, 1}, { 44, 0}, { 44, 0}, - { 44, 0}, { 44, 1}, { 43, 0}, { 43, 0}, { 43, 0}, { 43, 1}, { 42, 0}, { 42, 0}, - { 42, 0}, { 42, 1}, { 41, 0}, { 41, 0}, { 41, 0}, { 41, 0}, { 41, 1}, { 40, 0}, - { 40, 0}, { 40, 0}, { 40, 0}, { 40, 1}, { 39, 0}, { 39, 0}, { 39, 0}, { 39, 0}, - { 39, 1}, { 38, 0}, { 38, 0}, { 38, 0}, { 38, 0}, { 38, 1}, { 37, 0}, { 37, 0}, - { 37, 0}, { 37, 0}, { 37, 0}, { 37, 1}, { 36, 0}, { 36, 0}, { 36, 0}, { 36, 0}, - { 36, 1}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 1}, - { 34, 0}, { 34, 0}, { 34, 0}, { 34, 0}, { 34, 0}, { 34, 1}, { 33, 0}, { 33, 0}, - { 33, 0}, { 33, 0}, { 33, 0}, { 33, 0}, { 33, 1}, { 32, 0}, { 32, 0}, { 32, 0}, - { 32, 0}, { 32, 0}, { 32, 0}, { 32, 0}, { 32, 1}, { 31, 0}, { 31, 0}, { 31, 0}, - { 31, 0}, { 31, 0}, { 31, 0}, { 31, 1}, { 30, 0}, { 30, 0}, { 30, 0}, { 30, 0} + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, // dummy first row + { 961, 105 }, { 856, 85 }, { 771, 69 }, { 702, 58 }, { 644, 49 }, { 595, 42 }, { 553, 37 }, { 516, 32 }, + { 484, 28 }, { 456, 25 }, { 431, 23 }, { 408, 20 }, { 388, 19 }, { 369, 16 }, { 353, 16 }, { 337, 14 }, + { 323, 13 }, { 310, 11 }, { 299, 11 }, { 288, 11 }, { 277, 9 }, { 268, 9 }, { 259, 8 }, { 251, 8 }, + { 243, 8 }, { 235, 7 }, { 228, 6 }, { 222, 6 }, { 216, 6 }, { 210, 6 }, { 204, 5 }, { 199, 5 }, + { 194, 5 }, { 189, 4 }, { 185, 4 }, { 181, 4 }, { 177, 4 }, { 173, 4 }, { 169, 4 }, { 165, 3 }, + { 162, 3 }, { 159, 4 }, { 155, 3 }, { 152, 3 }, { 149, 2 }, { 147, 3 }, { 144, 3 }, { 141, 2 }, + { 139, 3 }, { 136, 2 }, { 134, 2 }, { 132, 3 }, { 129, 2 }, { 127, 2 }, { 125, 2 }, { 123, 2 }, + { 121, 2 }, { 119, 1 }, { 118, 2 }, { 116, 2 }, { 114, 1 }, { 113, 2 }, { 111, 2 }, { 109, 1 }, + { 108, 2 }, { 106, 1 }, { 105, 2 }, { 103, 1 }, { 102, 1 }, { 101, 1 }, { 100, 2 }, { 98, 1 }, + { 97, 1 }, { 96, 1 }, { 95, 2 }, { 93, 1 }, { 92, 1 }, { 91, 1 }, { 90, 1 }, { 89, 1 }, + { 88, 1 }, { 87, 1 }, { 86, 1 }, { 85, 1 }, { 84, 1 }, { 83, 0 }, { 83, 1 }, { 82, 1 }, + { 81, 1 }, { 80, 1 }, { 79, 1 }, { 78, 0 }, { 78, 1 }, { 77, 1 }, { 76, 1 }, { 75, 0 }, + { 75, 1 }, { 74, 1 }, { 73, 1 }, { 72, 0 }, { 72, 1 }, { 71, 1 }, { 70, 0 }, { 70, 1 }, + { 69, 0 }, { 69, 1 }, { 68, 1 }, { 67, 0 }, { 67, 1 }, { 66, 0 }, { 66, 1 }, { 65, 0 }, + { 65, 1 }, { 64, 1 }, { 63, 0 }, { 63, 1 }, { 62, 0 }, { 62, 1 }, { 61, 0 }, { 61, 1 }, + { 60, 0 }, { 60, 0 }, { 60, 1 }, { 59, 0 }, { 59, 1 }, { 58, 0 }, { 58, 1 }, { 57, 0 }, + { 57, 1 }, { 56, 0 }, { 56, 0 }, { 56, 1 }, { 55, 0 }, { 55, 1 }, { 54, 0 }, { 54, 0 }, + { 54, 1 }, { 53, 0 }, { 53, 0 }, { 53, 1 }, { 52, 0 }, { 52, 0 }, { 52, 1 }, { 51, 0 }, + { 51, 0 }, { 51, 1 }, { 50, 0 }, { 50, 0 }, { 50, 1 }, { 49, 0 }, { 49, 0 }, { 49, 1 }, + { 48, 0 }, { 48, 0 }, { 48, 1 }, { 47, 0 }, { 47, 0 }, { 47, 0 }, { 47, 1 }, { 46, 0 }, + { 46, 0 }, { 46, 1 }, { 45, 0 }, { 45, 0 }, { 45, 0 }, { 45, 1 }, { 44, 0 }, { 44, 0 }, + { 44, 0 }, { 44, 1 }, { 43, 0 }, { 43, 0 }, { 43, 0 }, { 43, 1 }, { 42, 0 }, { 42, 0 }, + { 42, 0 }, { 42, 1 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 1 }, { 40, 0 }, + { 40, 0 }, { 40, 0 }, { 40, 0 }, { 40, 1 }, { 39, 0 }, { 39, 0 }, { 39, 0 }, { 39, 0 }, + { 39, 1 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, { 38, 1 }, { 37, 0 }, { 37, 0 }, + { 37, 0 }, { 37, 0 }, { 37, 0 }, { 37, 1 }, { 36, 0 }, { 36, 0 }, { 36, 0 }, { 36, 0 }, + { 36, 1 }, { 35, 0 }, { 35, 0 }, { 35, 0 }, { 35, 0 }, { 35, 0 }, { 35, 0 }, { 35, 1 }, + { 34, 0 }, { 34, 0 }, { 34, 0 }, { 34, 0 }, { 34, 0 }, { 34, 1 }, { 33, 0 }, { 33, 0 }, + { 33, 0 }, { 33, 0 }, { 33, 0 }, { 33, 0 }, { 33, 1 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, + { 32, 0 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, { 32, 1 }, { 31, 0 }, { 31, 0 }, { 31, 0 }, + { 31, 0 }, { 31, 0 }, { 31, 0 }, { 31, 1 }, { 30, 0 }, { 30, 0 }, { 30, 0 }, { 30, 0 } }; const uint16_t speed_lookuptable_slow[256][2] PROGMEM = { - { 62500, 12500}, { 50000, 8334}, { 41666, 5952}, { 35714, 4464}, { 31250, 3473}, { 27777, 2777}, { 25000, 2273}, { 22727, 1894}, - { 20833, 1603}, { 19230, 1373}, { 17857, 1191}, { 16666, 1041}, { 15625, 920}, { 14705, 817}, { 13888, 731}, { 13157, 657}, - { 12500, 596}, { 11904, 541}, { 11363, 494}, { 10869, 453}, { 10416, 416}, { 10000, 385}, { 9615, 356}, { 9259, 331}, - { 8928, 308}, { 8620, 287}, { 8333, 269}, { 8064, 252}, { 7812, 237}, { 7575, 223}, { 7352, 210}, { 7142, 198}, - { 6944, 188}, { 6756, 178}, { 6578, 168}, { 6410, 160}, { 6250, 153}, { 6097, 145}, { 5952, 139}, { 5813, 132}, - { 5681, 126}, { 5555, 121}, { 5434, 115}, { 5319, 111}, { 5208, 106}, { 5102, 102}, { 5000, 99}, { 4901, 94}, - { 4807, 91}, { 4716, 87}, { 4629, 84}, { 4545, 81}, { 4464, 79}, { 4385, 75}, { 4310, 73}, { 4237, 71}, - { 4166, 68}, { 4098, 66}, { 4032, 64}, { 3968, 62}, { 3906, 60}, { 3846, 59}, { 3787, 56}, { 3731, 55}, - { 3676, 53}, { 3623, 52}, { 3571, 50}, { 3521, 49}, { 3472, 48}, { 3424, 46}, { 3378, 45}, { 3333, 44}, - { 3289, 43}, { 3246, 41}, { 3205, 41}, { 3164, 39}, { 3125, 39}, { 3086, 38}, { 3048, 36}, { 3012, 36}, - { 2976, 35}, { 2941, 35}, { 2906, 33}, { 2873, 33}, { 2840, 32}, { 2808, 31}, { 2777, 30}, { 2747, 30}, - { 2717, 29}, { 2688, 29}, { 2659, 28}, { 2631, 27}, { 2604, 27}, { 2577, 26}, { 2551, 26}, { 2525, 25}, - { 2500, 25}, { 2475, 25}, { 2450, 23}, { 2427, 24}, { 2403, 23}, { 2380, 22}, { 2358, 22}, { 2336, 22}, - { 2314, 21}, { 2293, 21}, { 2272, 20}, { 2252, 20}, { 2232, 20}, { 2212, 20}, { 2192, 19}, { 2173, 18}, - { 2155, 19}, { 2136, 18}, { 2118, 18}, { 2100, 17}, { 2083, 17}, { 2066, 17}, { 2049, 17}, { 2032, 16}, - { 2016, 16}, { 2000, 16}, { 1984, 16}, { 1968, 15}, { 1953, 16}, { 1937, 14}, { 1923, 15}, { 1908, 15}, - { 1893, 14}, { 1879, 14}, { 1865, 14}, { 1851, 13}, { 1838, 14}, { 1824, 13}, { 1811, 13}, { 1798, 13}, - { 1785, 12}, { 1773, 13}, { 1760, 12}, { 1748, 12}, { 1736, 12}, { 1724, 12}, { 1712, 12}, { 1700, 11}, - { 1689, 12}, { 1677, 11}, { 1666, 11}, { 1655, 11}, { 1644, 11}, { 1633, 10}, { 1623, 11}, { 1612, 10}, - { 1602, 10}, { 1592, 10}, { 1582, 10}, { 1572, 10}, { 1562, 10}, { 1552, 9}, { 1543, 10}, { 1533, 9}, - { 1524, 9}, { 1515, 9}, { 1506, 9}, { 1497, 9}, { 1488, 9}, { 1479, 9}, { 1470, 9}, { 1461, 8}, - { 1453, 8}, { 1445, 9}, { 1436, 8}, { 1428, 8}, { 1420, 8}, { 1412, 8}, { 1404, 8}, { 1396, 8}, - { 1388, 7}, { 1381, 8}, { 1373, 7}, { 1366, 8}, { 1358, 7}, { 1351, 7}, { 1344, 8}, { 1336, 7}, - { 1329, 7}, { 1322, 7}, { 1315, 7}, { 1308, 6}, { 1302, 7}, { 1295, 7}, { 1288, 6}, { 1282, 7}, - { 1275, 6}, { 1269, 7}, { 1262, 6}, { 1256, 6}, { 1250, 7}, { 1243, 6}, { 1237, 6}, { 1231, 6}, - { 1225, 6}, { 1219, 6}, { 1213, 6}, { 1207, 6}, { 1201, 5}, { 1196, 6}, { 1190, 6}, { 1184, 5}, - { 1179, 6}, { 1173, 5}, { 1168, 6}, { 1162, 5}, { 1157, 5}, { 1152, 6}, { 1146, 5}, { 1141, 5}, - { 1136, 5}, { 1131, 5}, { 1126, 5}, { 1121, 5}, { 1116, 5}, { 1111, 5}, { 1106, 5}, { 1101, 5}, - { 1096, 5}, { 1091, 5}, { 1086, 4}, { 1082, 5}, { 1077, 5}, { 1072, 4}, { 1068, 5}, { 1063, 4}, - { 1059, 5}, { 1054, 4}, { 1050, 4}, { 1046, 5}, { 1041, 4}, { 1037, 4}, { 1033, 5}, { 1028, 4}, - { 1024, 4}, { 1020, 4}, { 1016, 4}, { 1012, 4}, { 1008, 4}, { 1004, 4}, { 1000, 4}, { 996, 4}, - { 992, 4}, { 988, 4}, { 984, 4}, { 980, 4}, { 976, 4}, { 972, 4}, { 968, 3}, { 965, 3} + { 62500, 12500 }, { 50000, 8334 }, { 41666, 5952 }, { 35714, 4464 }, { 31250, 3473 }, { 27777, 2777 }, { 25000, 2273 }, { 22727, 1894 }, + { 20833, 1603 }, { 19230, 1373 }, { 17857, 1191 }, { 16666, 1041 }, { 15625, 920 }, { 14705, 817 }, { 13888, 731 }, { 13157, 657 }, + { 12500, 596 }, { 11904, 541 }, { 11363, 494 }, { 10869, 453 }, { 10416, 416 }, { 10000, 385 }, { 9615, 356 }, { 9259, 331 }, + { 8928, 308 }, { 8620, 287 }, { 8333, 269 }, { 8064, 252 }, { 7812, 237 }, { 7575, 223 }, { 7352, 210 }, { 7142, 198 }, + { 6944, 188 }, { 6756, 178 }, { 6578, 168 }, { 6410, 160 }, { 6250, 153 }, { 6097, 145 }, { 5952, 139 }, { 5813, 132 }, + { 5681, 126 }, { 5555, 121 }, { 5434, 115 }, { 5319, 111 }, { 5208, 106 }, { 5102, 102 }, { 5000, 99 }, { 4901, 94 }, + { 4807, 91 }, { 4716, 87 }, { 4629, 84 }, { 4545, 81 }, { 4464, 79 }, { 4385, 75 }, { 4310, 73 }, { 4237, 71 }, + { 4166, 68 }, { 4098, 66 }, { 4032, 64 }, { 3968, 62 }, { 3906, 60 }, { 3846, 59 }, { 3787, 56 }, { 3731, 55 }, + { 3676, 53 }, { 3623, 52 }, { 3571, 50 }, { 3521, 49 }, { 3472, 48 }, { 3424, 46 }, { 3378, 45 }, { 3333, 44 }, + { 3289, 43 }, { 3246, 41 }, { 3205, 41 }, { 3164, 39 }, { 3125, 39 }, { 3086, 38 }, { 3048, 36 }, { 3012, 36 }, + { 2976, 35 }, { 2941, 35 }, { 2906, 33 }, { 2873, 33 }, { 2840, 32 }, { 2808, 31 }, { 2777, 30 }, { 2747, 30 }, + { 2717, 29 }, { 2688, 29 }, { 2659, 28 }, { 2631, 27 }, { 2604, 27 }, { 2577, 26 }, { 2551, 26 }, { 2525, 25 }, + { 2500, 25 }, { 2475, 25 }, { 2450, 23 }, { 2427, 24 }, { 2403, 23 }, { 2380, 22 }, { 2358, 22 }, { 2336, 22 }, + { 2314, 21 }, { 2293, 21 }, { 2272, 20 }, { 2252, 20 }, { 2232, 20 }, { 2212, 20 }, { 2192, 19 }, { 2173, 18 }, + { 2155, 19 }, { 2136, 18 }, { 2118, 18 }, { 2100, 17 }, { 2083, 17 }, { 2066, 17 }, { 2049, 17 }, { 2032, 16 }, + { 2016, 16 }, { 2000, 16 }, { 1984, 16 }, { 1968, 15 }, { 1953, 16 }, { 1937, 14 }, { 1923, 15 }, { 1908, 15 }, + { 1893, 14 }, { 1879, 14 }, { 1865, 14 }, { 1851, 13 }, { 1838, 14 }, { 1824, 13 }, { 1811, 13 }, { 1798, 13 }, + { 1785, 12 }, { 1773, 13 }, { 1760, 12 }, { 1748, 12 }, { 1736, 12 }, { 1724, 12 }, { 1712, 12 }, { 1700, 11 }, + { 1689, 12 }, { 1677, 11 }, { 1666, 11 }, { 1655, 11 }, { 1644, 11 }, { 1633, 10 }, { 1623, 11 }, { 1612, 10 }, + { 1602, 10 }, { 1592, 10 }, { 1582, 10 }, { 1572, 10 }, { 1562, 10 }, { 1552, 9 }, { 1543, 10 }, { 1533, 9 }, + { 1524, 9 }, { 1515, 9 }, { 1506, 9 }, { 1497, 9 }, { 1488, 9 }, { 1479, 9 }, { 1470, 9 }, { 1461, 8 }, + { 1453, 8 }, { 1445, 9 }, { 1436, 8 }, { 1428, 8 }, { 1420, 8 }, { 1412, 8 }, { 1404, 8 }, { 1396, 8 }, + { 1388, 7 }, { 1381, 8 }, { 1373, 7 }, { 1366, 8 }, { 1358, 7 }, { 1351, 7 }, { 1344, 8 }, { 1336, 7 }, + { 1329, 7 }, { 1322, 7 }, { 1315, 7 }, { 1308, 6 }, { 1302, 7 }, { 1295, 7 }, { 1288, 6 }, { 1282, 7 }, + { 1275, 6 }, { 1269, 7 }, { 1262, 6 }, { 1256, 6 }, { 1250, 7 }, { 1243, 6 }, { 1237, 6 }, { 1231, 6 }, + { 1225, 6 }, { 1219, 6 }, { 1213, 6 }, { 1207, 6 }, { 1201, 5 }, { 1196, 6 }, { 1190, 6 }, { 1184, 5 }, + { 1179, 6 }, { 1173, 5 }, { 1168, 6 }, { 1162, 5 }, { 1157, 5 }, { 1152, 6 }, { 1146, 5 }, { 1141, 5 }, + { 1136, 5 }, { 1131, 5 }, { 1126, 5 }, { 1121, 5 }, { 1116, 5 }, { 1111, 5 }, { 1106, 5 }, { 1101, 5 }, + { 1096, 5 }, { 1091, 5 }, { 1086, 4 }, { 1082, 5 }, { 1077, 5 }, { 1072, 4 }, { 1068, 5 }, { 1063, 4 }, + { 1059, 5 }, { 1054, 4 }, { 1050, 4 }, { 1046, 5 }, { 1041, 4 }, { 1037, 4 }, { 1033, 5 }, { 1028, 4 }, + { 1024, 4 }, { 1020, 4 }, { 1016, 4 }, { 1012, 4 }, { 1008, 4 }, { 1004, 4 }, { 1000, 4 }, { 996, 4 }, + { 992, 4 }, { 988, 4 }, { 984, 4 }, { 980, 4 }, { 976, 4 }, { 972, 4 }, { 968, 3 }, { 965, 3 } }; #elif F_CPU == 20000000 const uint16_t speed_lookuptable_fast[256][2] PROGMEM = { - {62500, 54055}, {8445, 3917}, {4528, 1434}, {3094, 745}, {2349, 456}, {1893, 307}, {1586, 222}, {1364, 167}, - {1197, 131}, {1066, 105}, {961, 86}, {875, 72}, {803, 61}, {742, 53}, {689, 45}, {644, 40}, - {604, 35}, {569, 32}, {537, 28}, {509, 25}, {484, 23}, {461, 21}, {440, 19}, {421, 17}, - {404, 16}, {388, 15}, {373, 14}, {359, 13}, {346, 12}, {334, 11}, {323, 10}, {313, 10}, - {303, 9}, {294, 9}, {285, 8}, {277, 7}, {270, 8}, {262, 7}, {255, 6}, {249, 6}, - {243, 6}, {237, 6}, {231, 5}, {226, 5}, {221, 5}, {216, 5}, {211, 4}, {207, 5}, - {202, 4}, {198, 4}, {194, 4}, {190, 3}, {187, 4}, {183, 3}, {180, 3}, {177, 4}, - {173, 3}, {170, 3}, {167, 2}, {165, 3}, {162, 3}, {159, 2}, {157, 3}, {154, 2}, - {152, 3}, {149, 2}, {147, 2}, {145, 2}, {143, 2}, {141, 2}, {139, 2}, {137, 2}, - {135, 2}, {133, 2}, {131, 2}, {129, 1}, {128, 2}, {126, 2}, {124, 1}, {123, 2}, - {121, 1}, {120, 2}, {118, 1}, {117, 1}, {116, 2}, {114, 1}, {113, 1}, {112, 2}, - {110, 1}, {109, 1}, {108, 1}, {107, 2}, {105, 1}, {104, 1}, {103, 1}, {102, 1}, - {101, 1}, {100, 1}, {99, 1}, {98, 1}, {97, 1}, {96, 1}, {95, 1}, {94, 1}, - {93, 1}, {92, 1}, {91, 0}, {91, 1}, {90, 1}, {89, 1}, {88, 1}, {87, 0}, - {87, 1}, {86, 1}, {85, 1}, {84, 0}, {84, 1}, {83, 1}, {82, 1}, {81, 0}, - {81, 1}, {80, 1}, {79, 0}, {79, 1}, {78, 0}, {78, 1}, {77, 1}, {76, 0}, - {76, 1}, {75, 0}, {75, 1}, {74, 1}, {73, 0}, {73, 1}, {72, 0}, {72, 1}, - {71, 0}, {71, 1}, {70, 0}, {70, 1}, {69, 0}, {69, 1}, {68, 0}, {68, 1}, - {67, 0}, {67, 1}, {66, 0}, {66, 1}, {65, 0}, {65, 0}, {65, 1}, {64, 0}, - {64, 1}, {63, 0}, {63, 1}, {62, 0}, {62, 0}, {62, 1}, {61, 0}, {61, 1}, - {60, 0}, {60, 0}, {60, 1}, {59, 0}, {59, 0}, {59, 1}, {58, 0}, {58, 0}, - {58, 1}, {57, 0}, {57, 0}, {57, 1}, {56, 0}, {56, 0}, {56, 1}, {55, 0}, - {55, 0}, {55, 1}, {54, 0}, {54, 0}, {54, 1}, {53, 0}, {53, 0}, {53, 0}, - {53, 1}, {52, 0}, {52, 0}, {52, 1}, {51, 0}, {51, 0}, {51, 0}, {51, 1}, - {50, 0}, {50, 0}, {50, 0}, {50, 1}, {49, 0}, {49, 0}, {49, 0}, {49, 1}, - {48, 0}, {48, 0}, {48, 0}, {48, 1}, {47, 0}, {47, 0}, {47, 0}, {47, 1}, - {46, 0}, {46, 0}, {46, 0}, {46, 0}, {46, 1}, {45, 0}, {45, 0}, {45, 0}, - {45, 1}, {44, 0}, {44, 0}, {44, 0}, {44, 0}, {44, 1}, {43, 0}, {43, 0}, - {43, 0}, {43, 0}, {43, 1}, {42, 0}, {42, 0}, {42, 0}, {42, 0}, {42, 0}, - {42, 1}, {41, 0}, {41, 0}, {41, 0}, {41, 0}, {41, 0}, {41, 1}, {40, 0}, - {40, 0}, {40, 0}, {40, 0}, {40, 1}, {39, 0}, {39, 0}, {39, 0}, {39, 0}, - {39, 0}, {39, 0}, {39, 1}, {38, 0}, {38, 0}, {38, 0}, {38, 0}, {38, 0}, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, // dummy first row + { 1197, 131 }, { 1066, 105 }, { 961, 86 }, { 875, 72 }, { 803, 61 }, { 742, 53 }, { 689, 45 }, { 644, 40 }, + { 604, 35 }, { 569, 32 }, { 537, 28 }, { 509, 25 }, { 484, 23 }, { 461, 21 }, { 440, 19 }, { 421, 17 }, + { 404, 16 }, { 388, 15 }, { 373, 14 }, { 359, 13 }, { 346, 12 }, { 334, 11 }, { 323, 10 }, { 313, 10 }, + { 303, 9 }, { 294, 9 }, { 285, 8 }, { 277, 7 }, { 270, 8 }, { 262, 7 }, { 255, 6 }, { 249, 6 }, + { 243, 6 }, { 237, 6 }, { 231, 5 }, { 226, 5 }, { 221, 5 }, { 216, 5 }, { 211, 4 }, { 207, 5 }, + { 202, 4 }, { 198, 4 }, { 194, 4 }, { 190, 3 }, { 187, 4 }, { 183, 3 }, { 180, 3 }, { 177, 4 }, + { 173, 3 }, { 170, 3 }, { 167, 2 }, { 165, 3 }, { 162, 3 }, { 159, 2 }, { 157, 3 }, { 154, 2 }, + { 152, 3 }, { 149, 2 }, { 147, 2 }, { 145, 2 }, { 143, 2 }, { 141, 2 }, { 139, 2 }, { 137, 2 }, + { 135, 2 }, { 133, 2 }, { 131, 2 }, { 129, 1 }, { 128, 2 }, { 126, 2 }, { 124, 1 }, { 123, 2 }, + { 121, 1 }, { 120, 2 }, { 118, 1 }, { 117, 1 }, { 116, 2 }, { 114, 1 }, { 113, 1 }, { 112, 2 }, + { 110, 1 }, { 109, 1 }, { 108, 1 }, { 107, 2 }, { 105, 1 }, { 104, 1 }, { 103, 1 }, { 102, 1 }, + { 101, 1 }, { 100, 1 }, { 99, 1 }, { 98, 1 }, { 97, 1 }, { 96, 1 }, { 95, 1 }, { 94, 1 }, + { 93, 1 }, { 92, 1 }, { 91, 0 }, { 91, 1 }, { 90, 1 }, { 89, 1 }, { 88, 1 }, { 87, 0 }, + { 87, 1 }, { 86, 1 }, { 85, 1 }, { 84, 0 }, { 84, 1 }, { 83, 1 }, { 82, 1 }, { 81, 0 }, + { 81, 1 }, { 80, 1 }, { 79, 0 }, { 79, 1 }, { 78, 0 }, { 78, 1 }, { 77, 1 }, { 76, 0 }, + { 76, 1 }, { 75, 0 }, { 75, 1 }, { 74, 1 }, { 73, 0 }, { 73, 1 }, { 72, 0 }, { 72, 1 }, + { 71, 0 }, { 71, 1 }, { 70, 0 }, { 70, 1 }, { 69, 0 }, { 69, 1 }, { 68, 0 }, { 68, 1 }, + { 67, 0 }, { 67, 1 }, { 66, 0 }, { 66, 1 }, { 65, 0 }, { 65, 0 }, { 65, 1 }, { 64, 0 }, + { 64, 1 }, { 63, 0 }, { 63, 1 }, { 62, 0 }, { 62, 0 }, { 62, 1 }, { 61, 0 }, { 61, 1 }, + { 60, 0 }, { 60, 0 }, { 60, 1 }, { 59, 0 }, { 59, 0 }, { 59, 1 }, { 58, 0 }, { 58, 0 }, + { 58, 1 }, { 57, 0 }, { 57, 0 }, { 57, 1 }, { 56, 0 }, { 56, 0 }, { 56, 1 }, { 55, 0 }, + { 55, 0 }, { 55, 1 }, { 54, 0 }, { 54, 0 }, { 54, 1 }, { 53, 0 }, { 53, 0 }, { 53, 0 }, + { 53, 1 }, { 52, 0 }, { 52, 0 }, { 52, 1 }, { 51, 0 }, { 51, 0 }, { 51, 0 }, { 51, 1 }, + { 50, 0 }, { 50, 0 }, { 50, 0 }, { 50, 1 }, { 49, 0 }, { 49, 0 }, { 49, 0 }, { 49, 1 }, + { 48, 0 }, { 48, 0 }, { 48, 0 }, { 48, 1 }, { 47, 0 }, { 47, 0 }, { 47, 0 }, { 47, 1 }, + { 46, 0 }, { 46, 0 }, { 46, 0 }, { 46, 0 }, { 46, 1 }, { 45, 0 }, { 45, 0 }, { 45, 0 }, + { 45, 1 }, { 44, 0 }, { 44, 0 }, { 44, 0 }, { 44, 0 }, { 44, 1 }, { 43, 0 }, { 43, 0 }, + { 43, 0 }, { 43, 0 }, { 43, 1 }, { 42, 0 }, { 42, 0 }, { 42, 0 }, { 42, 0 }, { 42, 0 }, + { 42, 1 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 1 }, { 40, 0 }, + { 40, 0 }, { 40, 0 }, { 40, 0 }, { 40, 1 }, { 39, 0 }, { 39, 0 }, { 39, 0 }, { 39, 0 }, + { 39, 0 }, { 39, 0 }, { 39, 1 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, }; const uint16_t speed_lookuptable_slow[256][2] PROGMEM = { - {62500, 10417}, {52083, 7441}, {44642, 5580}, {39062, 4340}, {34722, 3472}, {31250, 2841}, {28409, 2368}, {26041, 2003}, - {24038, 1717}, {22321, 1488}, {20833, 1302}, {19531, 1149}, {18382, 1021}, {17361, 914}, {16447, 822}, {15625, 745}, - {14880, 676}, {14204, 618}, {13586, 566}, {13020, 520}, {12500, 481}, {12019, 445}, {11574, 414}, {11160, 385}, - {10775, 359}, {10416, 336}, {10080, 315}, {9765, 296}, {9469, 278}, {9191, 263}, {8928, 248}, {8680, 235}, - {8445, 222}, {8223, 211}, {8012, 200}, {7812, 191}, {7621, 181}, {7440, 173}, {7267, 165}, {7102, 158}, - {6944, 151}, {6793, 145}, {6648, 138}, {6510, 133}, {6377, 127}, {6250, 123}, {6127, 118}, {6009, 113}, - {5896, 109}, {5787, 106}, {5681, 101}, {5580, 98}, {5482, 95}, {5387, 91}, {5296, 88}, {5208, 86}, - {5122, 82}, {5040, 80}, {4960, 78}, {4882, 75}, {4807, 73}, {4734, 70}, {4664, 69}, {4595, 67}, - {4528, 64}, {4464, 63}, {4401, 61}, {4340, 60}, {4280, 58}, {4222, 56}, {4166, 55}, {4111, 53}, - {4058, 52}, {4006, 51}, {3955, 49}, {3906, 48}, {3858, 48}, {3810, 45}, {3765, 45}, {3720, 44}, - {3676, 43}, {3633, 42}, {3591, 40}, {3551, 40}, {3511, 39}, {3472, 38}, {3434, 38}, {3396, 36}, - {3360, 36}, {3324, 35}, {3289, 34}, {3255, 34}, {3221, 33}, {3188, 32}, {3156, 31}, {3125, 31}, - {3094, 31}, {3063, 30}, {3033, 29}, {3004, 28}, {2976, 28}, {2948, 28}, {2920, 27}, {2893, 27}, - {2866, 26}, {2840, 25}, {2815, 25}, {2790, 25}, {2765, 24}, {2741, 24}, {2717, 24}, {2693, 23}, - {2670, 22}, {2648, 22}, {2626, 22}, {2604, 22}, {2582, 21}, {2561, 21}, {2540, 20}, {2520, 20}, - {2500, 20}, {2480, 20}, {2460, 19}, {2441, 19}, {2422, 19}, {2403, 18}, {2385, 18}, {2367, 18}, - {2349, 17}, {2332, 18}, {2314, 17}, {2297, 16}, {2281, 17}, {2264, 16}, {2248, 16}, {2232, 16}, - {2216, 16}, {2200, 15}, {2185, 15}, {2170, 15}, {2155, 15}, {2140, 15}, {2125, 14}, {2111, 14}, - {2097, 14}, {2083, 14}, {2069, 14}, {2055, 13}, {2042, 13}, {2029, 13}, {2016, 13}, {2003, 13}, - {1990, 13}, {1977, 12}, {1965, 12}, {1953, 13}, {1940, 11}, {1929, 12}, {1917, 12}, {1905, 12}, - {1893, 11}, {1882, 11}, {1871, 11}, {1860, 11}, {1849, 11}, {1838, 11}, {1827, 11}, {1816, 10}, - {1806, 11}, {1795, 10}, {1785, 10}, {1775, 10}, {1765, 10}, {1755, 10}, {1745, 9}, {1736, 10}, - {1726, 9}, {1717, 10}, {1707, 9}, {1698, 9}, {1689, 9}, {1680, 9}, {1671, 9}, {1662, 9}, - {1653, 9}, {1644, 8}, {1636, 9}, {1627, 8}, {1619, 9}, {1610, 8}, {1602, 8}, {1594, 8}, - {1586, 8}, {1578, 8}, {1570, 8}, {1562, 8}, {1554, 7}, {1547, 8}, {1539, 8}, {1531, 7}, - {1524, 8}, {1516, 7}, {1509, 7}, {1502, 7}, {1495, 7}, {1488, 7}, {1481, 7}, {1474, 7}, - {1467, 7}, {1460, 7}, {1453, 7}, {1446, 6}, {1440, 7}, {1433, 7}, {1426, 6}, {1420, 6}, - {1414, 7}, {1407, 6}, {1401, 6}, {1395, 7}, {1388, 6}, {1382, 6}, {1376, 6}, {1370, 6}, - {1364, 6}, {1358, 6}, {1352, 6}, {1346, 5}, {1341, 6}, {1335, 6}, {1329, 5}, {1324, 6}, - {1318, 5}, {1313, 6}, {1307, 5}, {1302, 6}, {1296, 5}, {1291, 5}, {1286, 6}, {1280, 5}, - {1275, 5}, {1270, 5}, {1265, 5}, {1260, 5}, {1255, 5}, {1250, 5}, {1245, 5}, {1240, 5}, - {1235, 5}, {1230, 5}, {1225, 5}, {1220, 5}, {1215, 4}, {1211, 5}, {1206, 5}, {1201, 5}, + { 62500, 10417 }, { 52083, 7441 }, { 44642, 5580 }, { 39062, 4340 }, { 34722, 3472 }, { 31250, 2841 }, { 28409, 2368 }, { 26041, 2003 }, + { 24038, 1717 }, { 22321, 1488 }, { 20833, 1302 }, { 19531, 1149 }, { 18382, 1021 }, { 17361, 914 }, { 16447, 822 }, { 15625, 745 }, + { 14880, 676 }, { 14204, 618 }, { 13586, 566 }, { 13020, 520 }, { 12500, 481 }, { 12019, 445 }, { 11574, 414 }, { 11160, 385 }, + { 10775, 359 }, { 10416, 336 }, { 10080, 315 }, { 9765, 296 }, { 9469, 278 }, { 9191, 263 }, { 8928, 248 }, { 8680, 235 }, + { 8445, 222 }, { 8223, 211 }, { 8012, 200 }, { 7812, 191 }, { 7621, 181 }, { 7440, 173 }, { 7267, 165 }, { 7102, 158 }, + { 6944, 151 }, { 6793, 145 }, { 6648, 138 }, { 6510, 133 }, { 6377, 127 }, { 6250, 123 }, { 6127, 118 }, { 6009, 113 }, + { 5896, 109 }, { 5787, 106 }, { 5681, 101 }, { 5580, 98 }, { 5482, 95 }, { 5387, 91 }, { 5296, 88 }, { 5208, 86 }, + { 5122, 82 }, { 5040, 80 }, { 4960, 78 }, { 4882, 75 }, { 4807, 73 }, { 4734, 70 }, { 4664, 69 }, { 4595, 67 }, + { 4528, 64 }, { 4464, 63 }, { 4401, 61 }, { 4340, 60 }, { 4280, 58 }, { 4222, 56 }, { 4166, 55 }, { 4111, 53 }, + { 4058, 52 }, { 4006, 51 }, { 3955, 49 }, { 3906, 48 }, { 3858, 48 }, { 3810, 45 }, { 3765, 45 }, { 3720, 44 }, + { 3676, 43 }, { 3633, 42 }, { 3591, 40 }, { 3551, 40 }, { 3511, 39 }, { 3472, 38 }, { 3434, 38 }, { 3396, 36 }, + { 3360, 36 }, { 3324, 35 }, { 3289, 34 }, { 3255, 34 }, { 3221, 33 }, { 3188, 32 }, { 3156, 31 }, { 3125, 31 }, + { 3094, 31 }, { 3063, 30 }, { 3033, 29 }, { 3004, 28 }, { 2976, 28 }, { 2948, 28 }, { 2920, 27 }, { 2893, 27 }, + { 2866, 26 }, { 2840, 25 }, { 2815, 25 }, { 2790, 25 }, { 2765, 24 }, { 2741, 24 }, { 2717, 24 }, { 2693, 23 }, + { 2670, 22 }, { 2648, 22 }, { 2626, 22 }, { 2604, 22 }, { 2582, 21 }, { 2561, 21 }, { 2540, 20 }, { 2520, 20 }, + { 2500, 20 }, { 2480, 20 }, { 2460, 19 }, { 2441, 19 }, { 2422, 19 }, { 2403, 18 }, { 2385, 18 }, { 2367, 18 }, + { 2349, 17 }, { 2332, 18 }, { 2314, 17 }, { 2297, 16 }, { 2281, 17 }, { 2264, 16 }, { 2248, 16 }, { 2232, 16 }, + { 2216, 16 }, { 2200, 15 }, { 2185, 15 }, { 2170, 15 }, { 2155, 15 }, { 2140, 15 }, { 2125, 14 }, { 2111, 14 }, + { 2097, 14 }, { 2083, 14 }, { 2069, 14 }, { 2055, 13 }, { 2042, 13 }, { 2029, 13 }, { 2016, 13 }, { 2003, 13 }, + { 1990, 13 }, { 1977, 12 }, { 1965, 12 }, { 1953, 13 }, { 1940, 11 }, { 1929, 12 }, { 1917, 12 }, { 1905, 12 }, + { 1893, 11 }, { 1882, 11 }, { 1871, 11 }, { 1860, 11 }, { 1849, 11 }, { 1838, 11 }, { 1827, 11 }, { 1816, 10 }, + { 1806, 11 }, { 1795, 10 }, { 1785, 10 }, { 1775, 10 }, { 1765, 10 }, { 1755, 10 }, { 1745, 9 }, { 1736, 10 }, + { 1726, 9 }, { 1717, 10 }, { 1707, 9 }, { 1698, 9 }, { 1689, 9 }, { 1680, 9 }, { 1671, 9 }, { 1662, 9 }, + { 1653, 9 }, { 1644, 8 }, { 1636, 9 }, { 1627, 8 }, { 1619, 9 }, { 1610, 8 }, { 1602, 8 }, { 1594, 8 }, + { 1586, 8 }, { 1578, 8 }, { 1570, 8 }, { 1562, 8 }, { 1554, 7 }, { 1547, 8 }, { 1539, 8 }, { 1531, 7 }, + { 1524, 8 }, { 1516, 7 }, { 1509, 7 }, { 1502, 7 }, { 1495, 7 }, { 1488, 7 }, { 1481, 7 }, { 1474, 7 }, + { 1467, 7 }, { 1460, 7 }, { 1453, 7 }, { 1446, 6 }, { 1440, 7 }, { 1433, 7 }, { 1426, 6 }, { 1420, 6 }, + { 1414, 7 }, { 1407, 6 }, { 1401, 6 }, { 1395, 7 }, { 1388, 6 }, { 1382, 6 }, { 1376, 6 }, { 1370, 6 }, + { 1364, 6 }, { 1358, 6 }, { 1352, 6 }, { 1346, 5 }, { 1341, 6 }, { 1335, 6 }, { 1329, 5 }, { 1324, 6 }, + { 1318, 5 }, { 1313, 6 }, { 1307, 5 }, { 1302, 6 }, { 1296, 5 }, { 1291, 5 }, { 1286, 6 }, { 1280, 5 }, + { 1275, 5 }, { 1270, 5 }, { 1265, 5 }, { 1260, 5 }, { 1255, 5 }, { 1250, 5 }, { 1245, 5 }, { 1240, 5 }, + { 1235, 5 }, { 1230, 5 }, { 1225, 5 }, { 1220, 5 }, { 1215, 4 }, { 1211, 5 }, { 1206, 5 }, { 1201, 5 }, }; #endif From 4fdb0fbe8e8e8187d05bf56e8ee8e2a138120a4c Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 11 Mar 2023 19:53:32 -0600 Subject: [PATCH 108/659] =?UTF-8?q?=E2=9C=A8=20MAX7219=5FDEBUG=5FMULTISTEP?= =?UTF-8?q?PING?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> --- Marlin/Configuration_adv.h | 1 + Marlin/src/feature/max7219.cpp | 14 ++++++++++++++ Marlin/src/module/stepper.h | 1 + 3 files changed, 16 insertions(+) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index f3f7a4c255..35e7363423 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -4052,6 +4052,7 @@ #define MAX7219_DEBUG_PROFILE 6 // Display the fraction of CPU time spent in profiled code on this LED matrix // row. By default idle() is profiled so this shows how "idle" the processor is. // See class CodeProfiler. + //#define MAX7219_DEBUG_MULTISTEPPING 6 // Show multistepping 1 to 128 on this LED matrix row. #endif /** diff --git a/Marlin/src/feature/max7219.cpp b/Marlin/src/feature/max7219.cpp index 83d161d1fe..efc992f80f 100644 --- a/Marlin/src/feature/max7219.cpp +++ b/Marlin/src/feature/max7219.cpp @@ -44,6 +44,7 @@ #include "max7219.h" #include "../module/planner.h" +#include "../module/stepper.h" #include "../MarlinCore.h" #include "../HAL/shared/Delay.h" @@ -723,6 +724,19 @@ void Max7219::idle_tasks() { } #endif + #ifdef MAX7219_DEBUG_MULTISTEPPING + static uint8_t last_multistepping = 0; + const uint8_t multistepping = Stepper::steps_per_isr; + if (multistepping != last_multistepping) { + static uint8_t log2_old = 0; + uint8_t log2_new = 0; + for (uint8_t val = multistepping; val > 1; val >>= 1) log2_new++; + mark16(MAX7219_DEBUG_MULTISTEPPING, log2_old, log2_new, &row_change_mask); + last_multistepping = multistepping; + log2_old = log2_new; + } + #endif + // batch line updates suspended--; if (!suspended) diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 3a3e45dccc..33f45b9ae1 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -459,6 +459,7 @@ constexpr ena_mask_t enable_overlap[] = { // Stepper class definition // class Stepper { + friend class Max7219; friend void stepperTask(void *); public: From 194f58740a34c8aa8daebf21baf614c6f1eec518 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 11 Mar 2023 19:08:13 -0600 Subject: [PATCH 109/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Use=20hal=5Ftimer?= =?UTF-8?q?=5Ft=20for=20timing=20vars?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> --- Marlin/src/module/stepper.cpp | 36 +++++++++++++++++------------------ Marlin/src/module/stepper.h | 26 ++++++++++++------------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 700cdd377b..a3183c1b12 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -225,11 +225,11 @@ uint32_t Stepper::advance_divisor = 0, #endif #if ENABLED(LIN_ADVANCE) - uint32_t Stepper::nextAdvanceISR = LA_ADV_NEVER, - Stepper::la_interval = LA_ADV_NEVER; - int32_t Stepper::la_delta_error = 0, - Stepper::la_dividend = 0, - Stepper::la_advance_steps = 0; + hal_timer_t Stepper::nextAdvanceISR = LA_ADV_NEVER, + Stepper::la_interval = LA_ADV_NEVER; + int32_t Stepper::la_delta_error = 0, + Stepper::la_dividend = 0, + Stepper::la_advance_steps = 0; #endif #if HAS_SHAPING @@ -255,14 +255,14 @@ uint32_t Stepper::advance_divisor = 0, #endif #if ENABLED(INTEGRATED_BABYSTEPPING) - uint32_t Stepper::nextBabystepISR = BABYSTEP_NEVER; + hal_timer_t Stepper::nextBabystepISR = BABYSTEP_NEVER; #endif #if ENABLED(DIRECT_STEPPING) page_step_state_t Stepper::page_step_state; #endif -int32_t Stepper::ticks_nominal = -1; +hal_timer_t Stepper::ticks_nominal = 0; #if DISABLED(S_CURVE_ACCELERATION) uint32_t Stepper::acc_step_rate; // needed for deceleration start point #endif @@ -1462,7 +1462,7 @@ HAL_STEP_TIMER_ISR() { void Stepper::isr() { - static uint32_t nextMainISR = 0; // Interval until the next main Stepper Pulse phase (0 = Now) + static hal_timer_t nextMainISR = 0; // Interval until the next main Stepper Pulse phase (0 = Now) #ifndef __AVR__ // Disable interrupts, to avoid ISR preemption while we reprogram the period @@ -1518,8 +1518,8 @@ void Stepper::isr() { #endif // Get the interval to the next ISR call - const uint32_t interval = _MIN( - uint32_t(HAL_TIMER_TYPE_MAX), // Come back in a very long time + const hal_timer_t interval = _MIN( + hal_timer_t(HAL_TIMER_TYPE_MAX), // Come back in a very long time nextMainISR // Time until the next Pulse / Block phase OPTARG(INPUT_SHAPING_X, ShapingQueue::peek_x()) // Time until next input shaping echo for X OPTARG(INPUT_SHAPING_Y, ShapingQueue::peek_y()) // Time until next input shaping echo for Y @@ -1598,7 +1598,7 @@ void Stepper::isr() { // sure that the time has not arrived yet - Warrantied by the scheduler // Set the next ISR to fire at the proper time - HAL_timer_set_compare(MF_TIMER_STEP, hal_timer_t(next_isr_ticks)); + HAL_timer_set_compare(MF_TIMER_STEP, next_isr_ticks); // Don't forget to finally reenable interrupts on non-AVR. // AVR automatically calls sei() for us on Return-from-Interrupt. @@ -2046,7 +2046,7 @@ void Stepper::pulse_phase_isr() { #endif // HAS_SHAPING // Calculate timer interval, with all limits applied. -uint32_t Stepper::calc_timer_interval(uint32_t step_rate) { +hal_timer_t Stepper::calc_timer_interval(uint32_t step_rate) { #ifdef CPU_32_BIT @@ -2078,7 +2078,7 @@ uint32_t Stepper::calc_timer_interval(uint32_t step_rate) { } // Get the timer interval and the number of loops to perform per tick -uint32_t Stepper::calc_timer_interval(uint32_t step_rate, uint8_t &loops) { +hal_timer_t Stepper::calc_timer_interval(uint32_t step_rate, uint8_t &loops) { uint8_t multistep = 1; #if ENABLED(DISABLE_MULTI_STEPPING) @@ -2118,10 +2118,10 @@ uint32_t Stepper::calc_timer_interval(uint32_t step_rate, uint8_t &loops) { * schedules planner blocks. This is executed after the step pulses * have been done, so it is less time critical. */ -uint32_t Stepper::block_phase_isr() { +hal_timer_t Stepper::block_phase_isr() { // If no queued movements, just wait 1ms for the next block - uint32_t interval = (STEPPER_TIMER_RATE) / 1000UL; + hal_timer_t interval = (STEPPER_TIMER_RATE) / 1000UL; // If there is a current block if (current_block) { @@ -2296,7 +2296,7 @@ uint32_t Stepper::block_phase_isr() { else { // Must be in cruise phase otherwise // Calculate the ticks_nominal for this nominal speed, if not done yet - if (ticks_nominal < 0) { + if (ticks_nominal == 0) { // step_rate to timer interval and loops for the nominal speed ticks_nominal = calc_timer_interval(current_block->nominal_rate << oversampling_factor, steps_per_isr); @@ -2604,7 +2604,7 @@ uint32_t Stepper::block_phase_isr() { #endif // Mark ticks_nominal as not-yet-calculated - ticks_nominal = -1; + ticks_nominal = 0; #if ENABLED(S_CURVE_ACCELERATION) // Initialize the Bézier speed curve @@ -2671,7 +2671,7 @@ uint32_t Stepper::block_phase_isr() { #if ENABLED(INTEGRATED_BABYSTEPPING) // Timer interrupt for baby-stepping - uint32_t Stepper::babystepping_isr() { + hal_timer_t Stepper::babystepping_isr() { babystep.task(); return babystep.has_steps() ? BABYSTEP_TICKS : BABYSTEP_NEVER; } diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 33f45b9ae1..2336bfb405 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -568,24 +568,24 @@ class Stepper { #endif #if ENABLED(LIN_ADVANCE) - static constexpr uint32_t LA_ADV_NEVER = 0xFFFFFFFF; - static uint32_t nextAdvanceISR, - la_interval; // Interval between ISR calls for LA - static int32_t la_delta_error, // Analogue of delta_error.e for E steps in LA ISR - la_dividend, // Analogue of advance_dividend.e for E steps in LA ISR - la_advance_steps; // Count of steps added to increase nozzle pressure + static constexpr hal_timer_t LA_ADV_NEVER = HAL_TIMER_TYPE_MAX; + static hal_timer_t nextAdvanceISR, + la_interval; // Interval between ISR calls for LA + static int32_t la_delta_error, // Analogue of delta_error.e for E steps in LA ISR + la_dividend, // Analogue of advance_dividend.e for E steps in LA ISR + la_advance_steps; // Count of steps added to increase nozzle pressure #endif #if ENABLED(INTEGRATED_BABYSTEPPING) - static constexpr uint32_t BABYSTEP_NEVER = 0xFFFFFFFF; - static uint32_t nextBabystepISR; + static constexpr hal_timer_t BABYSTEP_NEVER = HAL_TIMER_TYPE_MAX; + static hal_timer_t nextBabystepISR; #endif #if ENABLED(DIRECT_STEPPING) static page_step_state_t page_step_state; #endif - static int32_t ticks_nominal; + static hal_timer_t ticks_nominal; #if DISABLED(S_CURVE_ACCELERATION) static uint32_t acc_step_rate; // needed for deceleration start point #endif @@ -624,7 +624,7 @@ class Stepper { static void pulse_phase_isr(); // The stepper block processing ISR phase - static uint32_t block_phase_isr(); + static hal_timer_t block_phase_isr(); #if HAS_SHAPING static void shaping_isr(); @@ -637,7 +637,7 @@ class Stepper { #if ENABLED(INTEGRATED_BABYSTEPPING) // The Babystepping ISR phase - static uint32_t babystepping_isr(); + static hal_timer_t babystepping_isr(); FORCE_INLINE static void initiateBabystepping() { if (nextBabystepISR == BABYSTEP_NEVER) { nextBabystepISR = 0; @@ -810,10 +810,10 @@ class Stepper { static void _set_position(const abce_long_t &spos); // Calculate the timing interval for the given step rate - static uint32_t calc_timer_interval(uint32_t step_rate); + static hal_timer_t calc_timer_interval(uint32_t step_rate); // Calculate timing interval and steps-per-ISR for the given step rate - static uint32_t calc_timer_interval(uint32_t step_rate, uint8_t &loops); + static hal_timer_t calc_timer_interval(uint32_t step_rate, uint8_t &loops); #if ENABLED(S_CURVE_ACCELERATION) static void _calc_bezier_curve_coeffs(const int32_t v0, const int32_t v1, const uint32_t av); From d554844a51691c4e88d0fab8e7893b62e090f235 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 11 Mar 2023 19:19:36 -0600 Subject: [PATCH 110/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Use=20cached=20la?= =?UTF-8?q?=5Factive=20state?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> --- Marlin/src/module/stepper.cpp | 14 ++++++++------ Marlin/src/module/stepper.h | 1 + 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index a3183c1b12..acb394f281 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -230,6 +230,7 @@ uint32_t Stepper::advance_divisor = 0, int32_t Stepper::la_delta_error = 0, Stepper::la_dividend = 0, Stepper::la_advance_steps = 0; + bool Stepper::la_active = false; #endif #if HAS_SHAPING @@ -1868,7 +1869,7 @@ void Stepper::pulse_phase_isr() { PULSE_PREP(E); #if ENABLED(LIN_ADVANCE) - if (step_needed.e && current_block->la_advance_rate) { + if (la_active && step_needed.e) { // don't actually step here, but do subtract movements steps // from the linear advance step count step_needed.e = false; @@ -2170,7 +2171,7 @@ hal_timer_t Stepper::block_phase_isr() { acceleration_time += interval; #if ENABLED(LIN_ADVANCE) - if (current_block->la_advance_rate) { + if (la_active) { const uint32_t la_step_rate = la_advance_steps < current_block->max_adv_steps ? current_block->la_advance_rate : 0; la_interval = calc_timer_interval(acc_step_rate + la_step_rate) << current_block->la_scaling; } @@ -2240,7 +2241,7 @@ hal_timer_t Stepper::block_phase_isr() { deceleration_time += interval; #if ENABLED(LIN_ADVANCE) - if (current_block->la_advance_rate) { + if (la_active) { const uint32_t la_step_rate = la_advance_steps > current_block->final_adv_steps ? current_block->la_advance_rate : 0; if (la_step_rate != step_rate) { bool reverse_e = la_step_rate > step_rate; @@ -2301,7 +2302,7 @@ hal_timer_t Stepper::block_phase_isr() { ticks_nominal = calc_timer_interval(current_block->nominal_rate << oversampling_factor, steps_per_isr); #if ENABLED(LIN_ADVANCE) - if (current_block->la_advance_rate) + if (la_active) la_interval = calc_timer_interval(current_block->nominal_rate) << current_block->la_scaling; #endif } @@ -2556,11 +2557,12 @@ hal_timer_t Stepper::block_phase_isr() { // Initialize the trapezoid generator from the current block. #if ENABLED(LIN_ADVANCE) + la_active = (current_block->la_advance_rate != 0); #if DISABLED(MIXING_EXTRUDER) && E_STEPPERS > 1 // If the now active extruder wasn't in use during the last move, its pressure is most likely gone. if (stepper_extruder != last_moved_extruder) la_advance_steps = 0; #endif - if (current_block->la_advance_rate) { + if (la_active) { // Apply LA scaling and discount the effect of frequency scaling la_dividend = (advance_dividend.e << current_block->la_scaling) << oversampling_factor; } @@ -2621,7 +2623,7 @@ hal_timer_t Stepper::block_phase_isr() { acceleration_time += interval; #if ENABLED(LIN_ADVANCE) - if (current_block->la_advance_rate) { + if (la_active) { const uint32_t la_step_rate = la_advance_steps < current_block->max_adv_steps ? current_block->la_advance_rate : 0; la_interval = calc_timer_interval(current_block->initial_rate + la_step_rate) << current_block->la_scaling; } diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 2336bfb405..61dcb3804c 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -574,6 +574,7 @@ class Stepper { static int32_t la_delta_error, // Analogue of delta_error.e for E steps in LA ISR la_dividend, // Analogue of advance_dividend.e for E steps in LA ISR la_advance_steps; // Count of steps added to increase nozzle pressure + static bool la_active; // Whether linear advance is used on the present segment. #endif #if ENABLED(INTEGRATED_BABYSTEPPING) From 4a0cb4fb4ac27ab20b1f97a016b85bac6ad15470 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 11 Mar 2023 19:21:31 -0600 Subject: [PATCH 111/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Use=20AxisFlags=20?= =?UTF-8?q?for=20step=5Fneeded?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> --- Marlin/src/module/stepper.cpp | 57 ++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index acb394f281..400dab5893 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -1661,21 +1661,24 @@ void Stepper::pulse_phase_isr() { bool firstStep = true; USING_TIMED_PULSE(); #endif - xyze_bool_t step_needed{0}; // Direct Stepping page? const bool is_page = current_block->is_page(); do { + AxisFlags step_needed{0}; + #define _APPLY_STEP(AXIS, INV, ALWAYS) AXIS ##_APPLY_STEP(INV, ALWAYS) #define _STEP_STATE(AXIS) STEP_STATE_## AXIS // Determine if a pulse is needed using Bresenham #define PULSE_PREP(AXIS) do{ \ - delta_error[_AXIS(AXIS)] += advance_dividend[_AXIS(AXIS)]; \ - step_needed[_AXIS(AXIS)] = (delta_error[_AXIS(AXIS)] >= 0); \ - if (step_needed[_AXIS(AXIS)]) \ - delta_error[_AXIS(AXIS)] -= advance_divisor; \ + int32_t de = delta_error[_AXIS(AXIS)] + advance_dividend[_AXIS(AXIS)]; \ + if (de >= 0) { \ + step_needed.set(_AXIS(AXIS)); \ + de -= advance_divisor; \ + } \ + delta_error[_AXIS(AXIS)] = de; \ }while(0) // With input shaping, direction changes can happen with almost only @@ -1699,7 +1702,7 @@ void Stepper::pulse_phase_isr() { #define HYSTERESIS(AXIS) _HYSTERESIS(AXIS) #define PULSE_PREP_SHAPING(AXIS, DELTA_ERROR, DIVIDEND) do{ \ - if (step_needed[_AXIS(AXIS)]) { \ + if (step_needed.test(_AXIS(AXIS))) { \ DELTA_ERROR += (DIVIDEND); \ if ((MAXDIR(AXIS) && DELTA_ERROR <= -(64 + HYSTERESIS(AXIS))) || (MINDIR(AXIS) && DELTA_ERROR >= (64 + HYSTERESIS(AXIS)))) { \ { USING_TIMED_PULSE(); START_TIMED_PULSE(); AWAIT_LOW_PULSE(); } \ @@ -1708,15 +1711,15 @@ void Stepper::pulse_phase_isr() { SET_STEP_DIR(AXIS); \ DIR_WAIT_AFTER(); \ } \ - step_needed[_AXIS(AXIS)] = DELTA_ERROR <= -(64 + HYSTERESIS(AXIS)) || DELTA_ERROR >= (64 + HYSTERESIS(AXIS)); \ - if (step_needed[_AXIS(AXIS)]) \ + step_needed.set(_AXIS(AXIS), DELTA_ERROR <= -(64 + HYSTERESIS(AXIS)) || DELTA_ERROR >= (64 + HYSTERESIS(AXIS))); \ + if (step_needed.test(_AXIS(AXIS))) \ DELTA_ERROR += MAXDIR(AXIS) ? -128 : 128; \ } \ }while(0) // Start an active pulse if needed #define PULSE_START(AXIS) do{ \ - if (step_needed[_AXIS(AXIS)]) { \ + if (step_needed.test(_AXIS(AXIS))) { \ count_position[_AXIS(AXIS)] += count_direction[_AXIS(AXIS)]; \ _APPLY_STEP(AXIS, _STEP_STATE(AXIS), 0); \ } \ @@ -1724,7 +1727,7 @@ void Stepper::pulse_phase_isr() { // Stop an active pulse if needed #define PULSE_STOP(AXIS) do { \ - if (step_needed[_AXIS(AXIS)]) { \ + if (step_needed.test(_AXIS(AXIS))) { \ _APPLY_STEP(AXIS, !_STEP_STATE(AXIS), 0); \ } \ }while(0) @@ -1743,8 +1746,8 @@ void Stepper::pulse_phase_isr() { }while(0) #define PAGE_PULSE_PREP(AXIS) do{ \ - step_needed[_AXIS(AXIS)] = \ - pgm_read_byte(&segment_table[page_step_state.sd[_AXIS(AXIS)]][page_step_state.segment_steps & 0x7]); \ + step_needed.set(_AXIS(AXIS), \ + pgm_read_byte(&segment_table[page_step_state.sd[_AXIS(AXIS)]][page_step_state.segment_steps & 0x7])); \ }while(0) switch (page_step_state.segment_steps) { @@ -1784,8 +1787,8 @@ void Stepper::pulse_phase_isr() { page_step_state.bd[_AXIS(AXIS)] += VALUE; #define PAGE_PULSE_PREP(AXIS) do{ \ - step_needed[_AXIS(AXIS)] = \ - pgm_read_byte(&segment_table[page_step_state.sd[_AXIS(AXIS)]][page_step_state.segment_steps & 0x3]); \ + step_needed.set(_AXIS(AXIS), \ + pgm_read_byte(&segment_table[page_step_state.sd[_AXIS(AXIS)]][page_step_state.segment_steps & 0x3])); \ }while(0) switch (page_step_state.segment_steps) { @@ -1812,10 +1815,10 @@ void Stepper::pulse_phase_isr() { #elif STEPPER_PAGE_FORMAT == SP_4x1_512 - #define PAGE_PULSE_PREP(AXIS, BITS) do{ \ - step_needed[_AXIS(AXIS)] = (steps >> BITS) & 0x1; \ - if (step_needed[_AXIS(AXIS)]) \ - page_step_state.bd[_AXIS(AXIS)]++; \ + #define PAGE_PULSE_PREP(AXIS, NBIT) do{ \ + step_needed.set(_AXIS(AXIS), TEST(steps, NBIT)); \ + if (step_needed.test(_AXIS(AXIS))) \ + page_step_state.bd[_AXIS(AXIS)]++; \ }while(0) uint8_t steps = page_step_state.page[page_step_state.segment_idx >> 1]; @@ -1880,8 +1883,8 @@ void Stepper::pulse_phase_isr() { #if HAS_SHAPING // record an echo if a step is needed in the primary bresenham - const bool x_step = TERN0(INPUT_SHAPING_X, shaping_x.enabled && step_needed[X_AXIS]), - y_step = TERN0(INPUT_SHAPING_Y, shaping_y.enabled && step_needed[Y_AXIS]); + const bool x_step = TERN0(INPUT_SHAPING_X, shaping_x.enabled && step_needed.x), + y_step = TERN0(INPUT_SHAPING_Y, shaping_y.enabled && step_needed.y); if (x_step || y_step) ShapingQueue::enqueue(x_step, TERN0(INPUT_SHAPING_X, shaping_x.forward), y_step, TERN0(INPUT_SHAPING_Y, shaping_y.forward)); @@ -1995,15 +1998,15 @@ void Stepper::pulse_phase_isr() { #if HAS_SHAPING void Stepper::shaping_isr() { - xy_bool_t step_needed{0}; + AxisFlags step_needed{0}; // Clear the echoes that are ready to process. If the buffers are too full and risk overflow, also apply echoes early. - TERN_(INPUT_SHAPING_X, step_needed[X_AXIS] = !ShapingQueue::peek_x() || ShapingQueue::free_count_x() < steps_per_isr); - TERN_(INPUT_SHAPING_Y, step_needed[Y_AXIS] = !ShapingQueue::peek_y() || ShapingQueue::free_count_y() < steps_per_isr); + TERN_(INPUT_SHAPING_X, step_needed.x = !ShapingQueue::peek_x() || ShapingQueue::free_count_x() < steps_per_isr); + TERN_(INPUT_SHAPING_Y, step_needed.y = !ShapingQueue::peek_y() || ShapingQueue::free_count_y() < steps_per_isr); if (bool(step_needed)) while (true) { #if ENABLED(INPUT_SHAPING_X) - if (step_needed[X_AXIS]) { + if (step_needed.x) { const bool forward = ShapingQueue::dequeue_x(); PULSE_PREP_SHAPING(X, shaping_x.delta_error, shaping_x.factor2 * (forward ? 1 : -1)); PULSE_START(X); @@ -2011,7 +2014,7 @@ void Stepper::pulse_phase_isr() { #endif #if ENABLED(INPUT_SHAPING_Y) - if (step_needed[Y_AXIS]) { + if (step_needed.y) { const bool forward = ShapingQueue::dequeue_y(); PULSE_PREP_SHAPING(Y, shaping_y.delta_error, shaping_y.factor2 * (forward ? 1 : -1)); PULSE_START(Y); @@ -2034,8 +2037,8 @@ void Stepper::pulse_phase_isr() { #endif } - TERN_(INPUT_SHAPING_X, step_needed[X_AXIS] = !ShapingQueue::peek_x() || ShapingQueue::free_count_x() < steps_per_isr); - TERN_(INPUT_SHAPING_Y, step_needed[Y_AXIS] = !ShapingQueue::peek_y() || ShapingQueue::free_count_y() < steps_per_isr); + TERN_(INPUT_SHAPING_X, step_needed.x = !ShapingQueue::peek_x() || ShapingQueue::free_count_x() < steps_per_isr); + TERN_(INPUT_SHAPING_Y, step_needed.y = !ShapingQueue::peek_y() || ShapingQueue::free_count_y() < steps_per_isr); if (!bool(step_needed)) break; From e1a209d0ce5cacf60a13b75f06ffb7ae67ee3bee Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 13 Mar 2023 00:22:40 +0000 Subject: [PATCH 112/659] [cron] Bump distribution date (2023-03-13) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 614ee400b7..c76ff2632a 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-12" +//#define STRING_DISTRIBUTION_DATE "2023-03-13" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index ca975adb4e..3b57bf0d03 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-12" + #define STRING_DISTRIBUTION_DATE "2023-03-13" #endif /** From e4b83ad5f58772f73d9b2dcc9dcccbbc2a3e893d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 11 Mar 2023 19:22:18 -0600 Subject: [PATCH 113/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Major=20shaper=20o?= =?UTF-8?q?ptimization?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> --- Marlin/src/module/stepper.cpp | 36 ++++++++++++++++++------------- Marlin/src/module/stepper.h | 40 ++++++++++++++++++++++++++--------- 2 files changed, 51 insertions(+), 25 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 400dab5893..0ae2a52f9d 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -1676,7 +1676,7 @@ void Stepper::pulse_phase_isr() { int32_t de = delta_error[_AXIS(AXIS)] + advance_dividend[_AXIS(AXIS)]; \ if (de >= 0) { \ step_needed.set(_AXIS(AXIS)); \ - de -= advance_divisor; \ + de -= advance_divisor_cached; \ } \ delta_error[_AXIS(AXIS)] = de; \ }while(0) @@ -1702,19 +1702,22 @@ void Stepper::pulse_phase_isr() { #define HYSTERESIS(AXIS) _HYSTERESIS(AXIS) #define PULSE_PREP_SHAPING(AXIS, DELTA_ERROR, DIVIDEND) do{ \ - if (step_needed.test(_AXIS(AXIS))) { \ - DELTA_ERROR += (DIVIDEND); \ - if ((MAXDIR(AXIS) && DELTA_ERROR <= -(64 + HYSTERESIS(AXIS))) || (MINDIR(AXIS) && DELTA_ERROR >= (64 + HYSTERESIS(AXIS)))) { \ + int16_t de = DELTA_ERROR + (DIVIDEND); \ + const bool step_fwd = de >= (64 + HYSTERESIS(AXIS)), \ + step_bak = de <= -(64 + HYSTERESIS(AXIS)); \ + if (step_fwd || step_bak) { \ + de += step_fwd ? -128 : 128; \ + if ((MAXDIR(AXIS) && step_bak) || (MINDIR(AXIS) && step_fwd)) { \ { USING_TIMED_PULSE(); START_TIMED_PULSE(); AWAIT_LOW_PULSE(); } \ TBI(last_direction_bits, _AXIS(AXIS)); \ DIR_WAIT_BEFORE(); \ SET_STEP_DIR(AXIS); \ DIR_WAIT_AFTER(); \ } \ - step_needed.set(_AXIS(AXIS), DELTA_ERROR <= -(64 + HYSTERESIS(AXIS)) || DELTA_ERROR >= (64 + HYSTERESIS(AXIS))); \ - if (step_needed.test(_AXIS(AXIS))) \ - DELTA_ERROR += MAXDIR(AXIS) ? -128 : 128; \ } \ + else \ + step_needed.clear(_AXIS(AXIS)); \ + DELTA_ERROR = de; \ }while(0) // Start an active pulse if needed @@ -1839,6 +1842,9 @@ void Stepper::pulse_phase_isr() { #endif // DIRECT_STEPPING if (!is_page) { + // Give the compiler a clue to store advance_divisor in registers for what follows + const uint32_t advance_divisor_cached = advance_divisor; + // Determine if pulses are needed #if HAS_X_STEP PULSE_PREP(X); @@ -1883,19 +1889,19 @@ void Stepper::pulse_phase_isr() { #if HAS_SHAPING // record an echo if a step is needed in the primary bresenham - const bool x_step = TERN0(INPUT_SHAPING_X, shaping_x.enabled && step_needed.x), - y_step = TERN0(INPUT_SHAPING_Y, shaping_y.enabled && step_needed.y); + const bool x_step = TERN0(INPUT_SHAPING_X, step_needed.x && shaping_x.enabled), + y_step = TERN0(INPUT_SHAPING_Y, step_needed.y && shaping_y.enabled); if (x_step || y_step) ShapingQueue::enqueue(x_step, TERN0(INPUT_SHAPING_X, shaping_x.forward), y_step, TERN0(INPUT_SHAPING_Y, shaping_y.forward)); // do the first part of the secondary bresenham #if ENABLED(INPUT_SHAPING_X) - if (shaping_x.enabled) - PULSE_PREP_SHAPING(X, shaping_x.delta_error, shaping_x.factor1 * (shaping_x.forward ? 1 : -1)); + if (x_step) + PULSE_PREP_SHAPING(X, shaping_x.delta_error, shaping_x.forward ? shaping_x.factor1 : -shaping_x.factor1); #endif #if ENABLED(INPUT_SHAPING_Y) - if (shaping_y.enabled) - PULSE_PREP_SHAPING(Y, shaping_y.delta_error, shaping_y.factor1 * (shaping_y.forward ? 1 : -1)); + if (y_step) + PULSE_PREP_SHAPING(Y, shaping_y.delta_error, shaping_y.forward ? shaping_y.factor1 : -shaping_y.factor1); #endif #endif } @@ -2008,7 +2014,7 @@ void Stepper::pulse_phase_isr() { #if ENABLED(INPUT_SHAPING_X) if (step_needed.x) { const bool forward = ShapingQueue::dequeue_x(); - PULSE_PREP_SHAPING(X, shaping_x.delta_error, shaping_x.factor2 * (forward ? 1 : -1)); + PULSE_PREP_SHAPING(X, shaping_x.delta_error, (forward ? shaping_x.factor2 : -shaping_x.factor2)); PULSE_START(X); } #endif @@ -2016,7 +2022,7 @@ void Stepper::pulse_phase_isr() { #if ENABLED(INPUT_SHAPING_Y) if (step_needed.y) { const bool forward = ShapingQueue::dequeue_y(); - PULSE_PREP_SHAPING(Y, shaping_y.delta_error, shaping_y.factor2 * (forward ? 1 : -1)); + PULSE_PREP_SHAPING(Y, shaping_y.delta_error, (forward ? shaping_y.factor2 : -shaping_y.factor2)); PULSE_START(Y); } #endif diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 61dcb3804c..731d7e6ee8 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -392,16 +392,36 @@ constexpr ena_mask_t enable_overlap[] = { TERN_(INPUT_SHAPING_Y, if (axis == Y_AXIS) delay_y = delay); } static void enqueue(const bool x_step, const bool x_forward, const bool y_step, const bool y_forward) { - TERN_(INPUT_SHAPING_X, if (head_x == tail && x_step) peek_x_val = delay_x); - TERN_(INPUT_SHAPING_Y, if (head_y == tail && y_step) peek_y_val = delay_y); + #if ENABLED(INPUT_SHAPING_X) + if (x_step) { + if (head_x == tail) peek_x_val = delay_x; + echo_axes[tail].x = x_forward ? ECHO_FWD : ECHO_BWD; + _free_count_x--; + } + else { + echo_axes[tail].x = ECHO_NONE; + if (head_x != tail) + _free_count_x--; + else if (++head_x == shaping_echoes) + head_x = 0; + } + #endif + #if ENABLED(INPUT_SHAPING_Y) + if (y_step) { + if (head_y == tail) peek_y_val = delay_y; + echo_axes[tail].y = y_forward ? ECHO_FWD : ECHO_BWD; + _free_count_y--; + } + else { + echo_axes[tail].y = ECHO_NONE; + if (head_y != tail) + _free_count_y--; + else if (++head_y == shaping_echoes) + head_y = 0; + } + #endif times[tail] = now; - TERN_(INPUT_SHAPING_X, echo_axes[tail].x = x_step ? (x_forward ? ECHO_FWD : ECHO_BWD) : ECHO_NONE); - TERN_(INPUT_SHAPING_Y, echo_axes[tail].y = y_step ? (y_forward ? ECHO_FWD : ECHO_BWD) : ECHO_NONE); if (++tail == shaping_echoes) tail = 0; - TERN_(INPUT_SHAPING_X, _free_count_x--); - TERN_(INPUT_SHAPING_Y, _free_count_y--); - TERN_(INPUT_SHAPING_X, if (echo_axes[head_x].x == ECHO_NONE) dequeue_x()); - TERN_(INPUT_SHAPING_Y, if (echo_axes[head_y].y == ECHO_NONE) dequeue_y()); } #if ENABLED(INPUT_SHAPING_X) static shaping_time_t peek_x() { return peek_x_val; } @@ -445,11 +465,11 @@ constexpr ena_mask_t enable_overlap[] = { struct ShapeParams { float frequency; float zeta; - bool enabled; + bool enabled : 1; + bool forward : 1; int16_t delta_error = 0; // delta_error for seconday bresenham mod 128 uint8_t factor1; uint8_t factor2; - bool forward; int32_t last_block_end_pos = 0; }; From 549419e08482873422675173cd9d241362b88f00 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 11 Mar 2023 19:25:42 -0600 Subject: [PATCH 114/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Set=20steps=5Fper?= =?UTF-8?q?=5Fisr=20in=20calc=5Fmultistep=5Ftimer=5Finterval?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> --- Marlin/src/module/stepper.cpp | 24 +++++++++++------------- Marlin/src/module/stepper.h | 2 +- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 0ae2a52f9d..738862666f 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -189,7 +189,7 @@ bool Stepper::abort_current_block; #endif uint32_t Stepper::acceleration_time, Stepper::deceleration_time; -uint8_t Stepper::steps_per_isr; // Count of steps to perform per Stepper ISR call +uint8_t Stepper::steps_per_isr = 1; // Count of steps to perform per Stepper ISR call #if ENABLED(FREEZE_FEATURE) bool Stepper::frozen; // = false @@ -2088,8 +2088,7 @@ hal_timer_t Stepper::calc_timer_interval(uint32_t step_rate) { } // Get the timer interval and the number of loops to perform per tick -hal_timer_t Stepper::calc_timer_interval(uint32_t step_rate, uint8_t &loops) { - uint8_t multistep = 1; +hal_timer_t Stepper::calc_multistep_timer_interval(uint32_t step_rate) { #if ENABLED(DISABLE_MULTI_STEPPING) // Just make sure the step rate is doable @@ -2109,16 +2108,15 @@ hal_timer_t Stepper::calc_timer_interval(uint32_t step_rate, uint8_t &loops) { (MAX_STEP_ISR_FREQUENCY_128X >> 7) }; - // Select the proper multistepping - uint8_t idx = 0; - while (idx < 7 && step_rate > (uint32_t)pgm_read_dword(&limit[idx])) { + // Find a doable step rate using multistepping + uint8_t multistep = 1; + for (uint8_t i = 0; i < 7 && step_rate > uint32_t(pgm_read_dword(&limit[i])); ++i) { step_rate >>= 1; multistep <<= 1; - ++idx; - }; + } + steps_per_isr = multistep; #endif - loops = multistep; return calc_timer_interval(step_rate); } @@ -2176,7 +2174,7 @@ hal_timer_t Stepper::block_phase_isr() { // acc_step_rate is in steps/second // step_rate to timer interval and steps per stepper isr - interval = calc_timer_interval(acc_step_rate << oversampling_factor, steps_per_isr); + interval = calc_multistep_timer_interval(acc_step_rate << oversampling_factor); acceleration_time += interval; #if ENABLED(LIN_ADVANCE) @@ -2246,7 +2244,7 @@ hal_timer_t Stepper::block_phase_isr() { #endif // step_rate to timer interval and steps per stepper isr - interval = calc_timer_interval(step_rate << oversampling_factor, steps_per_isr); + interval = calc_multistep_timer_interval(step_rate << oversampling_factor); deceleration_time += interval; #if ENABLED(LIN_ADVANCE) @@ -2308,7 +2306,7 @@ hal_timer_t Stepper::block_phase_isr() { // Calculate the ticks_nominal for this nominal speed, if not done yet if (ticks_nominal == 0) { // step_rate to timer interval and loops for the nominal speed - ticks_nominal = calc_timer_interval(current_block->nominal_rate << oversampling_factor, steps_per_isr); + ticks_nominal = calc_multistep_timer_interval(current_block->nominal_rate << oversampling_factor); #if ENABLED(LIN_ADVANCE) if (la_active) @@ -2628,7 +2626,7 @@ hal_timer_t Stepper::block_phase_isr() { #endif // Calculate the initial timer interval - interval = calc_timer_interval(current_block->initial_rate << oversampling_factor, steps_per_isr); + interval = calc_multistep_timer_interval(current_block->initial_rate << oversampling_factor); acceleration_time += interval; #if ENABLED(LIN_ADVANCE) diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 731d7e6ee8..ebd7e98aeb 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -834,7 +834,7 @@ class Stepper { static hal_timer_t calc_timer_interval(uint32_t step_rate); // Calculate timing interval and steps-per-ISR for the given step rate - static hal_timer_t calc_timer_interval(uint32_t step_rate, uint8_t &loops); + static hal_timer_t calc_multistep_timer_interval(uint32_t step_rate); #if ENABLED(S_CURVE_ACCELERATION) static void _calc_bezier_curve_coeffs(const int32_t v0, const int32_t v1, const uint32_t av); From 3365172e7c7b577d12912a7d942d3a2fa5c75f74 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 11 Mar 2023 19:54:48 -0600 Subject: [PATCH 115/659] =?UTF-8?q?=F0=9F=94=A7=20Expose=20MULTISTEPPING?= =?UTF-8?q?=5FLIMIT=20option?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> --- Marlin/Configuration_adv.h | 6 +++++ Marlin/src/inc/Conditionals_adv.h | 6 +++++ Marlin/src/inc/SanityCheck.h | 3 +++ Marlin/src/inc/Warnings.cpp | 4 ++++ Marlin/src/module/stepper.cpp | 37 ++++++++++++++++++++++--------- Marlin/src/module/stepper.h | 12 +++++----- 6 files changed, 52 insertions(+), 16 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 35e7363423..6ef72d9f04 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1267,6 +1267,12 @@ #endif #endif +/** + * Multi-stepping sends steps in bursts to reduce MCU usage for high step-rates. + * This allows higher feedrates than the MCU could otherwise support. + */ +#define MULTISTEPPING_LIMIT 16 //: [1, 2, 4, 8, 16, 32, 64, 128] + /** * Adaptive Step Smoothing increases the resolution of multi-axis moves, particularly at step frequencies * below 1kHz (for AVR) or 10kHz (for ARM), where aliasing between axes in multi-axis moves causes audible diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 5b303e919f..5079a93c1d 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -1219,3 +1219,9 @@ #undef TC_GCODE_USE_GLOBAL_Y #undef TC_GCODE_USE_GLOBAL_Z #endif + +// Multi-Stepping Limit +#ifndef MULTISTEPPING_LIMIT + #define MULTISTEPPING_LIMIT 128 + #define MULTISTEPPING_LIMIT_WARNING 1 +#endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 7d8f404591..5f20b205a0 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -4500,6 +4500,9 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); #endif #endif +// Multi-Stepping Limit +static_assert(WITHIN(MULTISTEPPING_LIMIT, 1, 128) && IS_POWER_OF_2(MULTISTEPPING_LIMIT), "MULTISTEPPING_LIMIT must be 1, 2, 4, 8, 16, 32, 64, or 128."); + // Misc. Cleanup #undef _TEST_PWM #undef _NUM_AXES_STR diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 1d1426936f..184d1a08da 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -797,3 +797,7 @@ #if HAS_SHAPING && ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) #warning "Input Shaping for CORE / MARKFORGED kinematic axes is still experimental." #endif + +#if MULTISTEPPING_LIMIT_WARNING + #warning "MULTISTEPPING_LIMIT has been automatically set to 128. Use a lower value if the machine is slow to respond." +#endif diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 738862666f..b4c66d1fba 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -189,7 +189,10 @@ bool Stepper::abort_current_block; #endif uint32_t Stepper::acceleration_time, Stepper::deceleration_time; -uint8_t Stepper::steps_per_isr = 1; // Count of steps to perform per Stepper ISR call + +#if MULTISTEPPING_LIMIT > 1 + uint8_t Stepper::steps_per_isr = 1; // Count of steps to perform per Stepper ISR call +#endif #if ENABLED(FREEZE_FEATURE) bool Stepper::frozen; // = false @@ -2089,7 +2092,7 @@ hal_timer_t Stepper::calc_timer_interval(uint32_t step_rate) { // Get the timer interval and the number of loops to perform per tick hal_timer_t Stepper::calc_multistep_timer_interval(uint32_t step_rate) { - #if ENABLED(DISABLE_MULTI_STEPPING) + #if MULTISTEPPING_LIMIT == 1 // Just make sure the step rate is doable NOMORE(step_rate, uint32_t(MAX_STEP_ISR_FREQUENCY_1X)); @@ -2098,19 +2101,31 @@ hal_timer_t Stepper::calc_multistep_timer_interval(uint32_t step_rate) { // The stepping frequency limits for each multistepping rate static const uint32_t limit[] PROGMEM = { - ( MAX_STEP_ISR_FREQUENCY_1X ), - ( MAX_STEP_ISR_FREQUENCY_2X >> 1), - ( MAX_STEP_ISR_FREQUENCY_4X >> 2), - ( MAX_STEP_ISR_FREQUENCY_8X >> 3), - ( MAX_STEP_ISR_FREQUENCY_16X >> 4), - ( MAX_STEP_ISR_FREQUENCY_32X >> 5), - ( MAX_STEP_ISR_FREQUENCY_64X >> 6), - (MAX_STEP_ISR_FREQUENCY_128X >> 7) + ( MAX_STEP_ISR_FREQUENCY_1X ) + , ( MAX_STEP_ISR_FREQUENCY_2X >> 1) + #if MULTISTEPPING_LIMIT >= 4 + , ( MAX_STEP_ISR_FREQUENCY_4X >> 2) + #endif + #if MULTISTEPPING_LIMIT >= 8 + , ( MAX_STEP_ISR_FREQUENCY_8X >> 3) + #endif + #if MULTISTEPPING_LIMIT >= 16 + , ( MAX_STEP_ISR_FREQUENCY_16X >> 4) + #endif + #if MULTISTEPPING_LIMIT >= 32 + , ( MAX_STEP_ISR_FREQUENCY_32X >> 5) + #endif + #if MULTISTEPPING_LIMIT >= 64 + , ( MAX_STEP_ISR_FREQUENCY_64X >> 6) + #endif + #if MULTISTEPPING_LIMIT >= 128 + , (MAX_STEP_ISR_FREQUENCY_128X >> 7) + #endif }; // Find a doable step rate using multistepping uint8_t multistep = 1; - for (uint8_t i = 0; i < 7 && step_rate > uint32_t(pgm_read_dword(&limit[i])); ++i) { + for (uint8_t i = 0; i < COUNT(limit) && step_rate > uint32_t(pgm_read_dword(&limit[i])); ++i) { step_rate >>= 1; multistep <<= 1; } diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index ebd7e98aeb..820d1d9a73 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -49,9 +49,6 @@ #include "stepper/speed_lookuptable.h" #endif -// Disable multiple steps per ISR -//#define DISABLE_MULTI_STEPPING - // // Estimate the amount of time the Stepper ISR will take to execute // @@ -259,7 +256,7 @@ // The minimum step ISR rate used by ADAPTIVE_STEP_SMOOTHING to target 50% CPU usage // This does not account for the possibility of multi-stepping. -// Perhaps DISABLE_MULTI_STEPPING should be required with ADAPTIVE_STEP_SMOOTHING. +// Should a MULTISTEPPING_LIMIT of 1 should be required with ADAPTIVE_STEP_SMOOTHING? #define MIN_STEP_ISR_FREQUENCY (MAX_STEP_ISR_FREQUENCY_1X / 2) #define ENABLE_COUNT (NUM_AXES + E_STEPPERS) @@ -543,7 +540,12 @@ class Stepper { #endif static uint32_t acceleration_time, deceleration_time; // time measured in Stepper Timer ticks - static uint8_t steps_per_isr; // Count of steps to perform per Stepper ISR call + + #if MULTISTEPPING_LIMIT == 1 + static constexpr uint8_t steps_per_isr = 1; // Count of steps to perform per Stepper ISR call + #else + static uint8_t steps_per_isr; + #endif #if ENABLED(ADAPTIVE_STEP_SMOOTHING) static uint8_t oversampling_factor; // Oversampling factor (log2(multiplier)) to increase temporal resolution of axis From 143a8701d5b11925440d643b47e5c5812a69352f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 12 Mar 2023 16:29:21 -0500 Subject: [PATCH 116/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Optimize=20speed?= =?UTF-8?q?=20lookup=20for=20AVR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> --- Marlin/src/HAL/AVR/math.h | 34 +-- Marlin/src/module/stepper.cpp | 27 +- Marlin/src/module/stepper/speed_lookuptable.h | 254 +++++++++--------- .../share/scripts/createSpeedLookupTable.py | 42 +-- 4 files changed, 176 insertions(+), 181 deletions(-) diff --git a/Marlin/src/HAL/AVR/math.h b/Marlin/src/HAL/AVR/math.h index 34f859fbbb..16848524fa 100644 --- a/Marlin/src/HAL/AVR/math.h +++ b/Marlin/src/HAL/AVR/math.h @@ -84,32 +84,26 @@ FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2 return intRes; } -// intRes = intIn1 * intIn2 >> 8 +// charRes = charIn1 * charIn2 >> 8 // uses: -// r1, r0 for the result of mul. After the second mul, r0 holds bits 0-7 of the 24 bit result and -// the top bit of r0 is used for rounding. -// [tmp] to store 0. -// [intRes] (A B) is bits 8-15 and is the returned value. +// r1, r0 for the result of mul. After the mul, r0 holds bits 0-7 of the 16 bit result, +// and the top bit of r0 is used for rounding. +// [charRes] is bits 8-15 and is the returned value. // [charIn1] is an 8 bit parameter. -// [intIn2] (B A) is a 16 bit parameter. +// [charIn2] is an 8 bit parameter. // -FORCE_INLINE static uint16_t MultiU8X16toH16(uint8_t charIn1, uint16_t intIn2) { - uint8_t tmp; - uint16_t intRes; +FORCE_INLINE static uint8_t MultiU8X8toH8(uint8_t charIn1, uint8_t charIn2) { + uint8_t charRes; __asm__ __volatile__ ( - A("clr %[tmp]") - A("mul %[charIn1], %B[intIn2]") - A("movw %A[intRes], r0") - A("mul %[charIn1], %A[intIn2]") - A("lsl r0") - A("adc %A[intRes], r1") - A("adc %B[intRes], %[tmp]") + A("mul %[charIn1], %[charIn2]") + A("mov %[charRes], r1") A("clr r1") - : [intRes] "=&r" (intRes), - [tmp] "=&r" (tmp) + A("lsl r0") + A("adc %[charRes], r1") + : [charRes] "=&r" (charRes) : [charIn1] "d" (charIn1), - [intIn2] "d" (intIn2) + [charIn2] "d" (charIn2) : "cc" ); - return intRes; + return charRes; } diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index b4c66d1fba..ae12f0b7f4 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -2069,22 +2069,21 @@ hal_timer_t Stepper::calc_timer_interval(uint32_t step_rate) { // AVR is able to keep up at 30khz Stepping ISR rate. constexpr uint32_t min_step_rate = (F_CPU) / 500000U; // i.e., 32 or 40 - if (step_rate <= min_step_rate) { // lower step rates - step_rate = 0; - return uint16_t(pgm_read_word(uintptr_t(speed_lookuptable_slow))); + if (step_rate >= 0x0800) { // higher step rate + const uintptr_t table_address = uintptr_t(&speed_lookuptable_fast[uint8_t(step_rate >> 8)]); + const uint16_t base = uint16_t(pgm_read_word(table_address)); + const uint8_t gain = uint8_t(pgm_read_byte(table_address + 2)); + return base - MultiU8X8toH8(uint8_t(step_rate & 0x00FF), gain); + } + else if (step_rate > min_step_rate) { // lower step rates + step_rate -= min_step_rate; // Correct for minimal speed + const uintptr_t table_address = uintptr_t(&speed_lookuptable_slow[uint8_t(step_rate >> 3)]); + return uint16_t(pgm_read_word(table_address)) + - ((uint16_t(pgm_read_word(table_address + 2)) * uint8_t(step_rate & 0x0007)) >> 3); } else { - step_rate -= min_step_rate; // Correct for minimal speed - if (step_rate >= 0x0800) { // higher step rate - const uintptr_t table_address = uintptr_t(&speed_lookuptable_fast[uint8_t(step_rate >> 8)]); - const uint16_t gain = uint16_t(pgm_read_word(table_address + 2)); - return uint16_t(pgm_read_word(table_address)) - MultiU8X16toH16(uint8_t(step_rate & 0x00FF), gain); - } - else { // lower step rates - const uintptr_t table_address = uintptr_t(&speed_lookuptable_slow[uint8_t(step_rate >> 3)]); - return uint16_t(pgm_read_word(table_address)) - - ((uint16_t(pgm_read_word(table_address + 2)) * uint8_t(step_rate & 0x0007)) >> 3); - } + step_rate = 0; + return uint16_t(pgm_read_word(uintptr_t(speed_lookuptable_slow))); } #endif // !CPU_32_BIT diff --git a/Marlin/src/module/stepper/speed_lookuptable.h b/Marlin/src/module/stepper/speed_lookuptable.h index 0b4205ea57..ae30bdbf3b 100644 --- a/Marlin/src/module/stepper/speed_lookuptable.h +++ b/Marlin/src/module/stepper/speed_lookuptable.h @@ -23,146 +23,146 @@ #if F_CPU == 16000000 - const uint16_t speed_lookuptable_fast[256][2] PROGMEM = { + const struct { uint16_t base; uint8_t gain; } speed_lookuptable_fast[256] PROGMEM = { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, // dummy first row - { 961, 105 }, { 856, 85 }, { 771, 69 }, { 702, 58 }, { 644, 49 }, { 595, 42 }, { 553, 37 }, { 516, 32 }, - { 484, 28 }, { 456, 25 }, { 431, 23 }, { 408, 20 }, { 388, 19 }, { 369, 16 }, { 353, 16 }, { 337, 14 }, - { 323, 13 }, { 310, 11 }, { 299, 11 }, { 288, 11 }, { 277, 9 }, { 268, 9 }, { 259, 8 }, { 251, 8 }, - { 243, 8 }, { 235, 7 }, { 228, 6 }, { 222, 6 }, { 216, 6 }, { 210, 6 }, { 204, 5 }, { 199, 5 }, - { 194, 5 }, { 189, 4 }, { 185, 4 }, { 181, 4 }, { 177, 4 }, { 173, 4 }, { 169, 4 }, { 165, 3 }, - { 162, 3 }, { 159, 4 }, { 155, 3 }, { 152, 3 }, { 149, 2 }, { 147, 3 }, { 144, 3 }, { 141, 2 }, - { 139, 3 }, { 136, 2 }, { 134, 2 }, { 132, 3 }, { 129, 2 }, { 127, 2 }, { 125, 2 }, { 123, 2 }, - { 121, 2 }, { 119, 1 }, { 118, 2 }, { 116, 2 }, { 114, 1 }, { 113, 2 }, { 111, 2 }, { 109, 1 }, - { 108, 2 }, { 106, 1 }, { 105, 2 }, { 103, 1 }, { 102, 1 }, { 101, 1 }, { 100, 2 }, { 98, 1 }, - { 97, 1 }, { 96, 1 }, { 95, 2 }, { 93, 1 }, { 92, 1 }, { 91, 1 }, { 90, 1 }, { 89, 1 }, - { 88, 1 }, { 87, 1 }, { 86, 1 }, { 85, 1 }, { 84, 1 }, { 83, 0 }, { 83, 1 }, { 82, 1 }, - { 81, 1 }, { 80, 1 }, { 79, 1 }, { 78, 0 }, { 78, 1 }, { 77, 1 }, { 76, 1 }, { 75, 0 }, - { 75, 1 }, { 74, 1 }, { 73, 1 }, { 72, 0 }, { 72, 1 }, { 71, 1 }, { 70, 0 }, { 70, 1 }, - { 69, 0 }, { 69, 1 }, { 68, 1 }, { 67, 0 }, { 67, 1 }, { 66, 0 }, { 66, 1 }, { 65, 0 }, - { 65, 1 }, { 64, 1 }, { 63, 0 }, { 63, 1 }, { 62, 0 }, { 62, 1 }, { 61, 0 }, { 61, 1 }, - { 60, 0 }, { 60, 0 }, { 60, 1 }, { 59, 0 }, { 59, 1 }, { 58, 0 }, { 58, 1 }, { 57, 0 }, - { 57, 1 }, { 56, 0 }, { 56, 0 }, { 56, 1 }, { 55, 0 }, { 55, 1 }, { 54, 0 }, { 54, 0 }, - { 54, 1 }, { 53, 0 }, { 53, 0 }, { 53, 1 }, { 52, 0 }, { 52, 0 }, { 52, 1 }, { 51, 0 }, - { 51, 0 }, { 51, 1 }, { 50, 0 }, { 50, 0 }, { 50, 1 }, { 49, 0 }, { 49, 0 }, { 49, 1 }, - { 48, 0 }, { 48, 0 }, { 48, 1 }, { 47, 0 }, { 47, 0 }, { 47, 0 }, { 47, 1 }, { 46, 0 }, - { 46, 0 }, { 46, 1 }, { 45, 0 }, { 45, 0 }, { 45, 0 }, { 45, 1 }, { 44, 0 }, { 44, 0 }, - { 44, 0 }, { 44, 1 }, { 43, 0 }, { 43, 0 }, { 43, 0 }, { 43, 1 }, { 42, 0 }, { 42, 0 }, - { 42, 0 }, { 42, 1 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 1 }, { 40, 0 }, - { 40, 0 }, { 40, 0 }, { 40, 0 }, { 40, 1 }, { 39, 0 }, { 39, 0 }, { 39, 0 }, { 39, 0 }, - { 39, 1 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, { 38, 1 }, { 37, 0 }, { 37, 0 }, - { 37, 0 }, { 37, 0 }, { 37, 0 }, { 37, 1 }, { 36, 0 }, { 36, 0 }, { 36, 0 }, { 36, 0 }, - { 36, 1 }, { 35, 0 }, { 35, 0 }, { 35, 0 }, { 35, 0 }, { 35, 0 }, { 35, 0 }, { 35, 1 }, - { 34, 0 }, { 34, 0 }, { 34, 0 }, { 34, 0 }, { 34, 0 }, { 34, 1 }, { 33, 0 }, { 33, 0 }, - { 33, 0 }, { 33, 0 }, { 33, 0 }, { 33, 0 }, { 33, 1 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, - { 32, 0 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, { 32, 1 }, { 31, 0 }, { 31, 0 }, { 31, 0 }, - { 31, 0 }, { 31, 0 }, { 31, 0 }, { 31, 1 }, { 30, 0 }, { 30, 0 }, { 30, 0 }, { 30, 0 } + { 977, 109 }, { 868, 87 }, { 781, 71 }, { 710, 59 }, { 651, 50 }, { 601, 43 }, { 558, 37 }, { 521, 33 }, + { 488, 28 }, { 460, 26 }, { 434, 23 }, { 411, 20 }, { 391, 19 }, { 372, 17 }, { 355, 15 }, { 340, 14 }, + { 326, 13 }, { 313, 13 }, { 300, 11 }, { 289, 10 }, { 279, 10 }, { 269, 9 }, { 260, 8 }, { 252, 8 }, + { 244, 7 }, { 237, 7 }, { 230, 7 }, { 223, 6 }, { 217, 6 }, { 211, 5 }, { 206, 6 }, { 200, 5 }, + { 195, 4 }, { 191, 5 }, { 186, 4 }, { 182, 4 }, { 178, 4 }, { 174, 4 }, { 170, 4 }, { 166, 3 }, + { 163, 4 }, { 159, 3 }, { 156, 3 }, { 153, 3 }, { 150, 3 }, { 147, 2 }, { 145, 3 }, { 142, 2 }, + { 140, 3 }, { 137, 2 }, { 135, 3 }, { 132, 2 }, { 130, 2 }, { 128, 2 }, { 126, 2 }, { 124, 2 }, + { 122, 2 }, { 120, 2 }, { 118, 1 }, { 117, 2 }, { 115, 2 }, { 113, 1 }, { 112, 2 }, { 110, 1 }, + { 109, 2 }, { 107, 1 }, { 106, 2 }, { 104, 1 }, { 103, 2 }, { 101, 1 }, { 100, 1 }, { 99, 1 }, + { 98, 2 }, { 96, 1 }, { 95, 1 }, { 94, 1 }, { 93, 1 }, { 92, 1 }, { 91, 1 }, { 90, 1 }, + { 89, 1 }, { 88, 1 }, { 87, 1 }, { 86, 1 }, { 85, 1 }, { 84, 1 }, { 83, 1 }, { 82, 1 }, + { 81, 0 }, { 81, 1 }, { 80, 1 }, { 79, 1 }, { 78, 1 }, { 77, 0 }, { 77, 1 }, { 76, 1 }, + { 75, 1 }, { 74, 0 }, { 74, 1 }, { 73, 1 }, { 72, 0 }, { 72, 1 }, { 71, 1 }, { 70, 0 }, + { 70, 1 }, { 69, 0 }, { 69, 1 }, { 68, 1 }, { 67, 0 }, { 67, 1 }, { 66, 0 }, { 66, 1 }, + { 65, 0 }, { 65, 1 }, { 64, 0 }, { 64, 1 }, { 63, 0 }, { 63, 1 }, { 62, 0 }, { 62, 1 }, + { 61, 0 }, { 61, 1 }, { 60, 0 }, { 60, 1 }, { 59, 0 }, { 59, 1 }, { 58, 0 }, { 58, 1 }, + { 57, 0 }, { 57, 0 }, { 57, 1 }, { 56, 0 }, { 56, 1 }, { 55, 0 }, { 55, 0 }, { 55, 1 }, + { 54, 0 }, { 54, 0 }, { 54, 1 }, { 53, 0 }, { 53, 1 }, { 52, 0 }, { 52, 0 }, { 52, 1 }, + { 51, 0 }, { 51, 0 }, { 51, 1 }, { 50, 0 }, { 50, 0 }, { 50, 1 }, { 49, 0 }, { 49, 0 }, + { 49, 0 }, { 49, 1 }, { 48, 0 }, { 48, 0 }, { 48, 1 }, { 47, 0 }, { 47, 0 }, { 47, 0 }, + { 47, 1 }, { 46, 0 }, { 46, 0 }, { 46, 1 }, { 45, 0 }, { 45, 0 }, { 45, 0 }, { 45, 1 }, + { 44, 0 }, { 44, 0 }, { 44, 0 }, { 44, 1 }, { 43, 0 }, { 43, 0 }, { 43, 0 }, { 43, 1 }, + { 42, 0 }, { 42, 0 }, { 42, 0 }, { 42, 0 }, { 42, 1 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, + { 41, 1 }, { 40, 0 }, { 40, 0 }, { 40, 0 }, { 40, 0 }, { 40, 1 }, { 39, 0 }, { 39, 0 }, + { 39, 0 }, { 39, 0 }, { 39, 1 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, + { 38, 1 }, { 37, 0 }, { 37, 0 }, { 37, 0 }, { 37, 0 }, { 37, 0 }, { 37, 1 }, { 36, 0 }, + { 36, 0 }, { 36, 0 }, { 36, 0 }, { 36, 0 }, { 36, 1 }, { 35, 0 }, { 35, 0 }, { 35, 0 }, + { 35, 0 }, { 35, 0 }, { 35, 1 }, { 34, 0 }, { 34, 0 }, { 34, 0 }, { 34, 0 }, { 34, 0 }, + { 34, 0 }, { 34, 1 }, { 33, 0 }, { 33, 0 }, { 33, 0 }, { 33, 0 }, { 33, 0 }, { 33, 0 }, + { 33, 1 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, + { 32, 1 }, { 31, 0 }, { 31, 0 }, { 31, 0 }, { 31, 0 }, { 31, 0 }, { 31, 0 }, { 31, 0 }, }; const uint16_t speed_lookuptable_slow[256][2] PROGMEM = { - { 62500, 12500 }, { 50000, 8334 }, { 41666, 5952 }, { 35714, 4464 }, { 31250, 3473 }, { 27777, 2777 }, { 25000, 2273 }, { 22727, 1894 }, - { 20833, 1603 }, { 19230, 1373 }, { 17857, 1191 }, { 16666, 1041 }, { 15625, 920 }, { 14705, 817 }, { 13888, 731 }, { 13157, 657 }, - { 12500, 596 }, { 11904, 541 }, { 11363, 494 }, { 10869, 453 }, { 10416, 416 }, { 10000, 385 }, { 9615, 356 }, { 9259, 331 }, - { 8928, 308 }, { 8620, 287 }, { 8333, 269 }, { 8064, 252 }, { 7812, 237 }, { 7575, 223 }, { 7352, 210 }, { 7142, 198 }, - { 6944, 188 }, { 6756, 178 }, { 6578, 168 }, { 6410, 160 }, { 6250, 153 }, { 6097, 145 }, { 5952, 139 }, { 5813, 132 }, - { 5681, 126 }, { 5555, 121 }, { 5434, 115 }, { 5319, 111 }, { 5208, 106 }, { 5102, 102 }, { 5000, 99 }, { 4901, 94 }, - { 4807, 91 }, { 4716, 87 }, { 4629, 84 }, { 4545, 81 }, { 4464, 79 }, { 4385, 75 }, { 4310, 73 }, { 4237, 71 }, - { 4166, 68 }, { 4098, 66 }, { 4032, 64 }, { 3968, 62 }, { 3906, 60 }, { 3846, 59 }, { 3787, 56 }, { 3731, 55 }, - { 3676, 53 }, { 3623, 52 }, { 3571, 50 }, { 3521, 49 }, { 3472, 48 }, { 3424, 46 }, { 3378, 45 }, { 3333, 44 }, - { 3289, 43 }, { 3246, 41 }, { 3205, 41 }, { 3164, 39 }, { 3125, 39 }, { 3086, 38 }, { 3048, 36 }, { 3012, 36 }, - { 2976, 35 }, { 2941, 35 }, { 2906, 33 }, { 2873, 33 }, { 2840, 32 }, { 2808, 31 }, { 2777, 30 }, { 2747, 30 }, - { 2717, 29 }, { 2688, 29 }, { 2659, 28 }, { 2631, 27 }, { 2604, 27 }, { 2577, 26 }, { 2551, 26 }, { 2525, 25 }, - { 2500, 25 }, { 2475, 25 }, { 2450, 23 }, { 2427, 24 }, { 2403, 23 }, { 2380, 22 }, { 2358, 22 }, { 2336, 22 }, - { 2314, 21 }, { 2293, 21 }, { 2272, 20 }, { 2252, 20 }, { 2232, 20 }, { 2212, 20 }, { 2192, 19 }, { 2173, 18 }, - { 2155, 19 }, { 2136, 18 }, { 2118, 18 }, { 2100, 17 }, { 2083, 17 }, { 2066, 17 }, { 2049, 17 }, { 2032, 16 }, - { 2016, 16 }, { 2000, 16 }, { 1984, 16 }, { 1968, 15 }, { 1953, 16 }, { 1937, 14 }, { 1923, 15 }, { 1908, 15 }, - { 1893, 14 }, { 1879, 14 }, { 1865, 14 }, { 1851, 13 }, { 1838, 14 }, { 1824, 13 }, { 1811, 13 }, { 1798, 13 }, - { 1785, 12 }, { 1773, 13 }, { 1760, 12 }, { 1748, 12 }, { 1736, 12 }, { 1724, 12 }, { 1712, 12 }, { 1700, 11 }, - { 1689, 12 }, { 1677, 11 }, { 1666, 11 }, { 1655, 11 }, { 1644, 11 }, { 1633, 10 }, { 1623, 11 }, { 1612, 10 }, - { 1602, 10 }, { 1592, 10 }, { 1582, 10 }, { 1572, 10 }, { 1562, 10 }, { 1552, 9 }, { 1543, 10 }, { 1533, 9 }, - { 1524, 9 }, { 1515, 9 }, { 1506, 9 }, { 1497, 9 }, { 1488, 9 }, { 1479, 9 }, { 1470, 9 }, { 1461, 8 }, - { 1453, 8 }, { 1445, 9 }, { 1436, 8 }, { 1428, 8 }, { 1420, 8 }, { 1412, 8 }, { 1404, 8 }, { 1396, 8 }, - { 1388, 7 }, { 1381, 8 }, { 1373, 7 }, { 1366, 8 }, { 1358, 7 }, { 1351, 7 }, { 1344, 8 }, { 1336, 7 }, - { 1329, 7 }, { 1322, 7 }, { 1315, 7 }, { 1308, 6 }, { 1302, 7 }, { 1295, 7 }, { 1288, 6 }, { 1282, 7 }, - { 1275, 6 }, { 1269, 7 }, { 1262, 6 }, { 1256, 6 }, { 1250, 7 }, { 1243, 6 }, { 1237, 6 }, { 1231, 6 }, - { 1225, 6 }, { 1219, 6 }, { 1213, 6 }, { 1207, 6 }, { 1201, 5 }, { 1196, 6 }, { 1190, 6 }, { 1184, 5 }, - { 1179, 6 }, { 1173, 5 }, { 1168, 6 }, { 1162, 5 }, { 1157, 5 }, { 1152, 6 }, { 1146, 5 }, { 1141, 5 }, + { 62500, 12500 }, { 50000, 8333 }, { 41667, 5953 }, { 35714, 4464 }, { 31250, 3472 }, { 27778, 2778 }, { 25000, 2273 }, { 22727, 1894 }, + { 20833, 1602 }, { 19231, 1374 }, { 17857, 1190 }, { 16667, 1042 }, { 15625, 919 }, { 14706, 817 }, { 13889, 731 }, { 13158, 658 }, + { 12500, 595 }, { 11905, 541 }, { 11364, 494 }, { 10870, 453 }, { 10417, 417 }, { 10000, 385 }, { 9615, 356 }, { 9259, 330 }, + { 8929, 308 }, { 8621, 288 }, { 8333, 268 }, { 8065, 252 }, { 7813, 237 }, { 7576, 223 }, { 7353, 210 }, { 7143, 199 }, + { 6944, 187 }, { 6757, 178 }, { 6579, 169 }, { 6410, 160 }, { 6250, 152 }, { 6098, 146 }, { 5952, 138 }, { 5814, 132 }, + { 5682, 126 }, { 5556, 121 }, { 5435, 116 }, { 5319, 111 }, { 5208, 106 }, { 5102, 102 }, { 5000, 98 }, { 4902, 94 }, + { 4808, 91 }, { 4717, 87 }, { 4630, 85 }, { 4545, 81 }, { 4464, 78 }, { 4386, 76 }, { 4310, 73 }, { 4237, 70 }, + { 4167, 69 }, { 4098, 66 }, { 4032, 64 }, { 3968, 62 }, { 3906, 60 }, { 3846, 58 }, { 3788, 57 }, { 3731, 55 }, + { 3676, 53 }, { 3623, 52 }, { 3571, 50 }, { 3521, 49 }, { 3472, 47 }, { 3425, 47 }, { 3378, 45 }, { 3333, 44 }, + { 3289, 42 }, { 3247, 42 }, { 3205, 40 }, { 3165, 40 }, { 3125, 39 }, { 3086, 37 }, { 3049, 37 }, { 3012, 36 }, + { 2976, 35 }, { 2941, 34 }, { 2907, 33 }, { 2874, 33 }, { 2841, 32 }, { 2809, 31 }, { 2778, 31 }, { 2747, 30 }, + { 2717, 29 }, { 2688, 28 }, { 2660, 28 }, { 2632, 28 }, { 2604, 27 }, { 2577, 26 }, { 2551, 26 }, { 2525, 25 }, + { 2500, 25 }, { 2475, 24 }, { 2451, 24 }, { 2427, 23 }, { 2404, 23 }, { 2381, 23 }, { 2358, 22 }, { 2336, 21 }, + { 2315, 21 }, { 2294, 21 }, { 2273, 21 }, { 2252, 20 }, { 2232, 20 }, { 2212, 19 }, { 2193, 19 }, { 2174, 19 }, + { 2155, 18 }, { 2137, 18 }, { 2119, 18 }, { 2101, 18 }, { 2083, 17 }, { 2066, 17 }, { 2049, 16 }, { 2033, 17 }, + { 2016, 16 }, { 2000, 16 }, { 1984, 15 }, { 1969, 16 }, { 1953, 15 }, { 1938, 15 }, { 1923, 15 }, { 1908, 14 }, + { 1894, 14 }, { 1880, 14 }, { 1866, 14 }, { 1852, 14 }, { 1838, 13 }, { 1825, 13 }, { 1812, 13 }, { 1799, 13 }, + { 1786, 13 }, { 1773, 12 }, { 1761, 13 }, { 1748, 12 }, { 1736, 12 }, { 1724, 12 }, { 1712, 11 }, { 1701, 12 }, + { 1689, 11 }, { 1678, 11 }, { 1667, 11 }, { 1656, 11 }, { 1645, 11 }, { 1634, 11 }, { 1623, 10 }, { 1613, 10 }, + { 1603, 11 }, { 1592, 10 }, { 1582, 10 }, { 1572, 9 }, { 1563, 10 }, { 1553, 10 }, { 1543, 9 }, { 1534, 10 }, + { 1524, 9 }, { 1515, 9 }, { 1506, 9 }, { 1497, 9 }, { 1488, 9 }, { 1479, 8 }, { 1471, 9 }, { 1462, 9 }, + { 1453, 8 }, { 1445, 8 }, { 1437, 8 }, { 1429, 9 }, { 1420, 8 }, { 1412, 8 }, { 1404, 7 }, { 1397, 8 }, + { 1389, 8 }, { 1381, 7 }, { 1374, 8 }, { 1366, 7 }, { 1359, 8 }, { 1351, 7 }, { 1344, 7 }, { 1337, 7 }, + { 1330, 7 }, { 1323, 7 }, { 1316, 7 }, { 1309, 7 }, { 1302, 7 }, { 1295, 6 }, { 1289, 7 }, { 1282, 6 }, + { 1276, 7 }, { 1269, 6 }, { 1263, 7 }, { 1256, 6 }, { 1250, 6 }, { 1244, 6 }, { 1238, 6 }, { 1232, 7 }, + { 1225, 5 }, { 1220, 6 }, { 1214, 6 }, { 1208, 6 }, { 1202, 6 }, { 1196, 6 }, { 1190, 5 }, { 1185, 6 }, + { 1179, 5 }, { 1174, 6 }, { 1168, 5 }, { 1163, 6 }, { 1157, 5 }, { 1152, 5 }, { 1147, 5 }, { 1142, 6 }, { 1136, 5 }, { 1131, 5 }, { 1126, 5 }, { 1121, 5 }, { 1116, 5 }, { 1111, 5 }, { 1106, 5 }, { 1101, 5 }, - { 1096, 5 }, { 1091, 5 }, { 1086, 4 }, { 1082, 5 }, { 1077, 5 }, { 1072, 4 }, { 1068, 5 }, { 1063, 4 }, - { 1059, 5 }, { 1054, 4 }, { 1050, 4 }, { 1046, 5 }, { 1041, 4 }, { 1037, 4 }, { 1033, 5 }, { 1028, 4 }, - { 1024, 4 }, { 1020, 4 }, { 1016, 4 }, { 1012, 4 }, { 1008, 4 }, { 1004, 4 }, { 1000, 4 }, { 996, 4 }, - { 992, 4 }, { 988, 4 }, { 984, 4 }, { 980, 4 }, { 976, 4 }, { 972, 4 }, { 968, 3 }, { 965, 3 } + { 1096, 4 }, { 1092, 5 }, { 1087, 5 }, { 1082, 4 }, { 1078, 5 }, { 1073, 5 }, { 1068, 4 }, { 1064, 5 }, + { 1059, 4 }, { 1055, 5 }, { 1050, 4 }, { 1046, 4 }, { 1042, 5 }, { 1037, 4 }, { 1033, 4 }, { 1029, 4 }, + { 1025, 5 }, { 1020, 4 }, { 1016, 4 }, { 1012, 4 }, { 1008, 4 }, { 1004, 4 }, { 1000, 4 }, { 996, 4 }, + { 992, 4 }, { 988, 4 }, { 984, 4 }, { 980, 3 }, { 977, 4 }, { 973, 4 }, { 969, 4 }, { 965, 4 }, }; #elif F_CPU == 20000000 - const uint16_t speed_lookuptable_fast[256][2] PROGMEM = { + const struct { uint16_t base; uint8_t gain; } speed_lookuptable_fast[256] PROGMEM = { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, // dummy first row - { 1197, 131 }, { 1066, 105 }, { 961, 86 }, { 875, 72 }, { 803, 61 }, { 742, 53 }, { 689, 45 }, { 644, 40 }, - { 604, 35 }, { 569, 32 }, { 537, 28 }, { 509, 25 }, { 484, 23 }, { 461, 21 }, { 440, 19 }, { 421, 17 }, - { 404, 16 }, { 388, 15 }, { 373, 14 }, { 359, 13 }, { 346, 12 }, { 334, 11 }, { 323, 10 }, { 313, 10 }, - { 303, 9 }, { 294, 9 }, { 285, 8 }, { 277, 7 }, { 270, 8 }, { 262, 7 }, { 255, 6 }, { 249, 6 }, - { 243, 6 }, { 237, 6 }, { 231, 5 }, { 226, 5 }, { 221, 5 }, { 216, 5 }, { 211, 4 }, { 207, 5 }, - { 202, 4 }, { 198, 4 }, { 194, 4 }, { 190, 3 }, { 187, 4 }, { 183, 3 }, { 180, 3 }, { 177, 4 }, - { 173, 3 }, { 170, 3 }, { 167, 2 }, { 165, 3 }, { 162, 3 }, { 159, 2 }, { 157, 3 }, { 154, 2 }, - { 152, 3 }, { 149, 2 }, { 147, 2 }, { 145, 2 }, { 143, 2 }, { 141, 2 }, { 139, 2 }, { 137, 2 }, - { 135, 2 }, { 133, 2 }, { 131, 2 }, { 129, 1 }, { 128, 2 }, { 126, 2 }, { 124, 1 }, { 123, 2 }, - { 121, 1 }, { 120, 2 }, { 118, 1 }, { 117, 1 }, { 116, 2 }, { 114, 1 }, { 113, 1 }, { 112, 2 }, - { 110, 1 }, { 109, 1 }, { 108, 1 }, { 107, 2 }, { 105, 1 }, { 104, 1 }, { 103, 1 }, { 102, 1 }, - { 101, 1 }, { 100, 1 }, { 99, 1 }, { 98, 1 }, { 97, 1 }, { 96, 1 }, { 95, 1 }, { 94, 1 }, - { 93, 1 }, { 92, 1 }, { 91, 0 }, { 91, 1 }, { 90, 1 }, { 89, 1 }, { 88, 1 }, { 87, 0 }, - { 87, 1 }, { 86, 1 }, { 85, 1 }, { 84, 0 }, { 84, 1 }, { 83, 1 }, { 82, 1 }, { 81, 0 }, - { 81, 1 }, { 80, 1 }, { 79, 0 }, { 79, 1 }, { 78, 0 }, { 78, 1 }, { 77, 1 }, { 76, 0 }, - { 76, 1 }, { 75, 0 }, { 75, 1 }, { 74, 1 }, { 73, 0 }, { 73, 1 }, { 72, 0 }, { 72, 1 }, - { 71, 0 }, { 71, 1 }, { 70, 0 }, { 70, 1 }, { 69, 0 }, { 69, 1 }, { 68, 0 }, { 68, 1 }, - { 67, 0 }, { 67, 1 }, { 66, 0 }, { 66, 1 }, { 65, 0 }, { 65, 0 }, { 65, 1 }, { 64, 0 }, - { 64, 1 }, { 63, 0 }, { 63, 1 }, { 62, 0 }, { 62, 0 }, { 62, 1 }, { 61, 0 }, { 61, 1 }, - { 60, 0 }, { 60, 0 }, { 60, 1 }, { 59, 0 }, { 59, 0 }, { 59, 1 }, { 58, 0 }, { 58, 0 }, - { 58, 1 }, { 57, 0 }, { 57, 0 }, { 57, 1 }, { 56, 0 }, { 56, 0 }, { 56, 1 }, { 55, 0 }, - { 55, 0 }, { 55, 1 }, { 54, 0 }, { 54, 0 }, { 54, 1 }, { 53, 0 }, { 53, 0 }, { 53, 0 }, - { 53, 1 }, { 52, 0 }, { 52, 0 }, { 52, 1 }, { 51, 0 }, { 51, 0 }, { 51, 0 }, { 51, 1 }, - { 50, 0 }, { 50, 0 }, { 50, 0 }, { 50, 1 }, { 49, 0 }, { 49, 0 }, { 49, 0 }, { 49, 1 }, - { 48, 0 }, { 48, 0 }, { 48, 0 }, { 48, 1 }, { 47, 0 }, { 47, 0 }, { 47, 0 }, { 47, 1 }, - { 46, 0 }, { 46, 0 }, { 46, 0 }, { 46, 0 }, { 46, 1 }, { 45, 0 }, { 45, 0 }, { 45, 0 }, - { 45, 1 }, { 44, 0 }, { 44, 0 }, { 44, 0 }, { 44, 0 }, { 44, 1 }, { 43, 0 }, { 43, 0 }, - { 43, 0 }, { 43, 0 }, { 43, 1 }, { 42, 0 }, { 42, 0 }, { 42, 0 }, { 42, 0 }, { 42, 0 }, - { 42, 1 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 1 }, { 40, 0 }, - { 40, 0 }, { 40, 0 }, { 40, 0 }, { 40, 1 }, { 39, 0 }, { 39, 0 }, { 39, 0 }, { 39, 0 }, - { 39, 0 }, { 39, 0 }, { 39, 1 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, + { 1221, 136 }, { 1085, 108 }, { 977, 89 }, { 888, 74 }, { 814, 63 }, { 751, 53 }, { 698, 47 }, { 651, 41 }, + { 610, 36 }, { 574, 31 }, { 543, 29 }, { 514, 26 }, { 488, 23 }, { 465, 21 }, { 444, 19 }, { 425, 18 }, + { 407, 16 }, { 391, 15 }, { 376, 14 }, { 362, 13 }, { 349, 12 }, { 337, 11 }, { 326, 11 }, { 315, 10 }, + { 305, 9 }, { 296, 9 }, { 287, 8 }, { 279, 8 }, { 271, 7 }, { 264, 7 }, { 257, 7 }, { 250, 6 }, + { 244, 6 }, { 238, 5 }, { 233, 6 }, { 227, 5 }, { 222, 5 }, { 217, 5 }, { 212, 4 }, { 208, 5 }, + { 203, 4 }, { 199, 4 }, { 195, 4 }, { 191, 3 }, { 188, 4 }, { 184, 3 }, { 181, 3 }, { 178, 4 }, + { 174, 3 }, { 171, 3 }, { 168, 2 }, { 166, 3 }, { 163, 3 }, { 160, 2 }, { 158, 3 }, { 155, 2 }, + { 153, 3 }, { 150, 2 }, { 148, 2 }, { 146, 2 }, { 144, 2 }, { 142, 2 }, { 140, 2 }, { 138, 2 }, + { 136, 2 }, { 134, 2 }, { 132, 2 }, { 130, 2 }, { 128, 1 }, { 127, 2 }, { 125, 1 }, { 124, 2 }, + { 122, 1 }, { 121, 2 }, { 119, 1 }, { 118, 2 }, { 116, 1 }, { 115, 1 }, { 114, 2 }, { 112, 1 }, + { 111, 1 }, { 110, 1 }, { 109, 2 }, { 107, 1 }, { 106, 1 }, { 105, 1 }, { 104, 1 }, { 103, 1 }, + { 102, 1 }, { 101, 1 }, { 100, 1 }, { 99, 1 }, { 98, 1 }, { 97, 1 }, { 96, 1 }, { 95, 1 }, + { 94, 1 }, { 93, 1 }, { 92, 1 }, { 91, 1 }, { 90, 0 }, { 90, 1 }, { 89, 1 }, { 88, 1 }, + { 87, 1 }, { 86, 0 }, { 86, 1 }, { 85, 1 }, { 84, 1 }, { 83, 0 }, { 83, 1 }, { 82, 1 }, + { 81, 0 }, { 81, 1 }, { 80, 1 }, { 79, 0 }, { 79, 1 }, { 78, 0 }, { 78, 1 }, { 77, 1 }, + { 76, 0 }, { 76, 1 }, { 75, 0 }, { 75, 1 }, { 74, 1 }, { 73, 0 }, { 73, 1 }, { 72, 0 }, + { 72, 1 }, { 71, 0 }, { 71, 1 }, { 70, 0 }, { 70, 1 }, { 69, 0 }, { 69, 1 }, { 68, 0 }, + { 68, 1 }, { 67, 0 }, { 67, 1 }, { 66, 0 }, { 66, 0 }, { 66, 1 }, { 65, 0 }, { 65, 1 }, + { 64, 0 }, { 64, 1 }, { 63, 0 }, { 63, 0 }, { 63, 1 }, { 62, 0 }, { 62, 1 }, { 61, 0 }, + { 61, 0 }, { 61, 1 }, { 60, 0 }, { 60, 0 }, { 60, 1 }, { 59, 0 }, { 59, 1 }, { 58, 0 }, + { 58, 0 }, { 58, 1 }, { 57, 0 }, { 57, 0 }, { 57, 1 }, { 56, 0 }, { 56, 0 }, { 56, 1 }, + { 55, 0 }, { 55, 0 }, { 55, 0 }, { 55, 1 }, { 54, 0 }, { 54, 0 }, { 54, 1 }, { 53, 0 }, + { 53, 0 }, { 53, 0 }, { 53, 1 }, { 52, 0 }, { 52, 0 }, { 52, 1 }, { 51, 0 }, { 51, 0 }, + { 51, 0 }, { 51, 1 }, { 50, 0 }, { 50, 0 }, { 50, 0 }, { 50, 1 }, { 49, 0 }, { 49, 0 }, + { 49, 0 }, { 49, 1 }, { 48, 0 }, { 48, 0 }, { 48, 0 }, { 48, 1 }, { 47, 0 }, { 47, 0 }, + { 47, 0 }, { 47, 0 }, { 47, 1 }, { 46, 0 }, { 46, 0 }, { 46, 0 }, { 46, 1 }, { 45, 0 }, + { 45, 0 }, { 45, 0 }, { 45, 0 }, { 45, 1 }, { 44, 0 }, { 44, 0 }, { 44, 0 }, { 44, 0 }, + { 44, 1 }, { 43, 0 }, { 43, 0 }, { 43, 0 }, { 43, 0 }, { 43, 1 }, { 42, 0 }, { 42, 0 }, + { 42, 0 }, { 42, 0 }, { 42, 0 }, { 42, 1 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, + { 41, 0 }, { 41, 1 }, { 40, 0 }, { 40, 0 }, { 40, 0 }, { 40, 0 }, { 40, 0 }, { 40, 1 }, + { 39, 0 }, { 39, 0 }, { 39, 0 }, { 39, 0 }, { 39, 0 }, { 39, 1 }, { 38, 0 }, { 38, 0 }, }; const uint16_t speed_lookuptable_slow[256][2] PROGMEM = { - { 62500, 10417 }, { 52083, 7441 }, { 44642, 5580 }, { 39062, 4340 }, { 34722, 3472 }, { 31250, 2841 }, { 28409, 2368 }, { 26041, 2003 }, - { 24038, 1717 }, { 22321, 1488 }, { 20833, 1302 }, { 19531, 1149 }, { 18382, 1021 }, { 17361, 914 }, { 16447, 822 }, { 15625, 745 }, - { 14880, 676 }, { 14204, 618 }, { 13586, 566 }, { 13020, 520 }, { 12500, 481 }, { 12019, 445 }, { 11574, 414 }, { 11160, 385 }, - { 10775, 359 }, { 10416, 336 }, { 10080, 315 }, { 9765, 296 }, { 9469, 278 }, { 9191, 263 }, { 8928, 248 }, { 8680, 235 }, - { 8445, 222 }, { 8223, 211 }, { 8012, 200 }, { 7812, 191 }, { 7621, 181 }, { 7440, 173 }, { 7267, 165 }, { 7102, 158 }, - { 6944, 151 }, { 6793, 145 }, { 6648, 138 }, { 6510, 133 }, { 6377, 127 }, { 6250, 123 }, { 6127, 118 }, { 6009, 113 }, - { 5896, 109 }, { 5787, 106 }, { 5681, 101 }, { 5580, 98 }, { 5482, 95 }, { 5387, 91 }, { 5296, 88 }, { 5208, 86 }, - { 5122, 82 }, { 5040, 80 }, { 4960, 78 }, { 4882, 75 }, { 4807, 73 }, { 4734, 70 }, { 4664, 69 }, { 4595, 67 }, - { 4528, 64 }, { 4464, 63 }, { 4401, 61 }, { 4340, 60 }, { 4280, 58 }, { 4222, 56 }, { 4166, 55 }, { 4111, 53 }, - { 4058, 52 }, { 4006, 51 }, { 3955, 49 }, { 3906, 48 }, { 3858, 48 }, { 3810, 45 }, { 3765, 45 }, { 3720, 44 }, - { 3676, 43 }, { 3633, 42 }, { 3591, 40 }, { 3551, 40 }, { 3511, 39 }, { 3472, 38 }, { 3434, 38 }, { 3396, 36 }, - { 3360, 36 }, { 3324, 35 }, { 3289, 34 }, { 3255, 34 }, { 3221, 33 }, { 3188, 32 }, { 3156, 31 }, { 3125, 31 }, - { 3094, 31 }, { 3063, 30 }, { 3033, 29 }, { 3004, 28 }, { 2976, 28 }, { 2948, 28 }, { 2920, 27 }, { 2893, 27 }, - { 2866, 26 }, { 2840, 25 }, { 2815, 25 }, { 2790, 25 }, { 2765, 24 }, { 2741, 24 }, { 2717, 24 }, { 2693, 23 }, - { 2670, 22 }, { 2648, 22 }, { 2626, 22 }, { 2604, 22 }, { 2582, 21 }, { 2561, 21 }, { 2540, 20 }, { 2520, 20 }, - { 2500, 20 }, { 2480, 20 }, { 2460, 19 }, { 2441, 19 }, { 2422, 19 }, { 2403, 18 }, { 2385, 18 }, { 2367, 18 }, - { 2349, 17 }, { 2332, 18 }, { 2314, 17 }, { 2297, 16 }, { 2281, 17 }, { 2264, 16 }, { 2248, 16 }, { 2232, 16 }, - { 2216, 16 }, { 2200, 15 }, { 2185, 15 }, { 2170, 15 }, { 2155, 15 }, { 2140, 15 }, { 2125, 14 }, { 2111, 14 }, - { 2097, 14 }, { 2083, 14 }, { 2069, 14 }, { 2055, 13 }, { 2042, 13 }, { 2029, 13 }, { 2016, 13 }, { 2003, 13 }, - { 1990, 13 }, { 1977, 12 }, { 1965, 12 }, { 1953, 13 }, { 1940, 11 }, { 1929, 12 }, { 1917, 12 }, { 1905, 12 }, - { 1893, 11 }, { 1882, 11 }, { 1871, 11 }, { 1860, 11 }, { 1849, 11 }, { 1838, 11 }, { 1827, 11 }, { 1816, 10 }, - { 1806, 11 }, { 1795, 10 }, { 1785, 10 }, { 1775, 10 }, { 1765, 10 }, { 1755, 10 }, { 1745, 9 }, { 1736, 10 }, - { 1726, 9 }, { 1717, 10 }, { 1707, 9 }, { 1698, 9 }, { 1689, 9 }, { 1680, 9 }, { 1671, 9 }, { 1662, 9 }, - { 1653, 9 }, { 1644, 8 }, { 1636, 9 }, { 1627, 8 }, { 1619, 9 }, { 1610, 8 }, { 1602, 8 }, { 1594, 8 }, - { 1586, 8 }, { 1578, 8 }, { 1570, 8 }, { 1562, 8 }, { 1554, 7 }, { 1547, 8 }, { 1539, 8 }, { 1531, 7 }, - { 1524, 8 }, { 1516, 7 }, { 1509, 7 }, { 1502, 7 }, { 1495, 7 }, { 1488, 7 }, { 1481, 7 }, { 1474, 7 }, - { 1467, 7 }, { 1460, 7 }, { 1453, 7 }, { 1446, 6 }, { 1440, 7 }, { 1433, 7 }, { 1426, 6 }, { 1420, 6 }, - { 1414, 7 }, { 1407, 6 }, { 1401, 6 }, { 1395, 7 }, { 1388, 6 }, { 1382, 6 }, { 1376, 6 }, { 1370, 6 }, - { 1364, 6 }, { 1358, 6 }, { 1352, 6 }, { 1346, 5 }, { 1341, 6 }, { 1335, 6 }, { 1329, 5 }, { 1324, 6 }, - { 1318, 5 }, { 1313, 6 }, { 1307, 5 }, { 1302, 6 }, { 1296, 5 }, { 1291, 5 }, { 1286, 6 }, { 1280, 5 }, - { 1275, 5 }, { 1270, 5 }, { 1265, 5 }, { 1260, 5 }, { 1255, 5 }, { 1250, 5 }, { 1245, 5 }, { 1240, 5 }, - { 1235, 5 }, { 1230, 5 }, { 1225, 5 }, { 1220, 5 }, { 1215, 4 }, { 1211, 5 }, { 1206, 5 }, { 1201, 5 }, + { 62500, 10417 }, { 52083, 7440 }, { 44643, 5580 }, { 39063, 4341 }, { 34722, 3472 }, { 31250, 2841 }, { 28409, 2367 }, { 26042, 2004 }, + { 24038, 1717 }, { 22321, 1488 }, { 20833, 1302 }, { 19531, 1149 }, { 18382, 1021 }, { 17361, 914 }, { 16447, 822 }, { 15625, 744 }, + { 14881, 676 }, { 14205, 618 }, { 13587, 566 }, { 13021, 521 }, { 12500, 481 }, { 12019, 445 }, { 11574, 413 }, { 11161, 385 }, + { 10776, 359 }, { 10417, 336 }, { 10081, 315 }, { 9766, 296 }, { 9470, 279 }, { 9191, 262 }, { 8929, 248 }, { 8681, 235 }, + { 8446, 222 }, { 8224, 211 }, { 8013, 200 }, { 7813, 191 }, { 7622, 182 }, { 7440, 173 }, { 7267, 165 }, { 7102, 158 }, + { 6944, 151 }, { 6793, 144 }, { 6649, 139 }, { 6510, 132 }, { 6378, 128 }, { 6250, 123 }, { 6127, 117 }, { 6010, 114 }, + { 5896, 109 }, { 5787, 105 }, { 5682, 102 }, { 5580, 98 }, { 5482, 94 }, { 5388, 91 }, { 5297, 89 }, { 5208, 85 }, + { 5123, 83 }, { 5040, 80 }, { 4960, 77 }, { 4883, 75 }, { 4808, 73 }, { 4735, 71 }, { 4664, 68 }, { 4596, 67 }, + { 4529, 65 }, { 4464, 63 }, { 4401, 61 }, { 4340, 59 }, { 4281, 58 }, { 4223, 56 }, { 4167, 55 }, { 4112, 54 }, + { 4058, 52 }, { 4006, 50 }, { 3956, 50 }, { 3906, 48 }, { 3858, 47 }, { 3811, 46 }, { 3765, 45 }, { 3720, 44 }, + { 3676, 42 }, { 3634, 42 }, { 3592, 41 }, { 3551, 40 }, { 3511, 39 }, { 3472, 38 }, { 3434, 37 }, { 3397, 37 }, + { 3360, 36 }, { 3324, 35 }, { 3289, 34 }, { 3255, 33 }, { 3222, 33 }, { 3189, 32 }, { 3157, 32 }, { 3125, 31 }, + { 3094, 30 }, { 3064, 30 }, { 3034, 29 }, { 3005, 29 }, { 2976, 28 }, { 2948, 27 }, { 2921, 27 }, { 2894, 27 }, + { 2867, 26 }, { 2841, 26 }, { 2815, 25 }, { 2790, 25 }, { 2765, 24 }, { 2741, 24 }, { 2717, 23 }, { 2694, 23 }, + { 2671, 23 }, { 2648, 22 }, { 2626, 22 }, { 2604, 21 }, { 2583, 22 }, { 2561, 20 }, { 2541, 21 }, { 2520, 20 }, + { 2500, 20 }, { 2480, 19 }, { 2461, 20 }, { 2441, 19 }, { 2422, 18 }, { 2404, 19 }, { 2385, 18 }, { 2367, 17 }, + { 2350, 18 }, { 2332, 17 }, { 2315, 17 }, { 2298, 17 }, { 2281, 17 }, { 2264, 16 }, { 2248, 16 }, { 2232, 16 }, + { 2216, 15 }, { 2201, 16 }, { 2185, 15 }, { 2170, 15 }, { 2155, 15 }, { 2140, 14 }, { 2126, 15 }, { 2111, 14 }, + { 2097, 14 }, { 2083, 13 }, { 2070, 14 }, { 2056, 14 }, { 2042, 13 }, { 2029, 13 }, { 2016, 13 }, { 2003, 13 }, + { 1990, 12 }, { 1978, 13 }, { 1965, 12 }, { 1953, 12 }, { 1941, 12 }, { 1929, 12 }, { 1917, 12 }, { 1905, 11 }, + { 1894, 11 }, { 1883, 12 }, { 1871, 11 }, { 1860, 11 }, { 1849, 11 }, { 1838, 11 }, { 1827, 10 }, { 1817, 11 }, + { 1806, 10 }, { 1796, 10 }, { 1786, 10 }, { 1776, 10 }, { 1766, 10 }, { 1756, 10 }, { 1746, 10 }, { 1736, 9 }, + { 1727, 10 }, { 1717, 9 }, { 1708, 10 }, { 1698, 9 }, { 1689, 9 }, { 1680, 9 }, { 1671, 9 }, { 1662, 9 }, + { 1653, 8 }, { 1645, 9 }, { 1636, 8 }, { 1628, 9 }, { 1619, 8 }, { 1611, 8 }, { 1603, 9 }, { 1594, 8 }, + { 1586, 8 }, { 1578, 8 }, { 1570, 7 }, { 1563, 8 }, { 1555, 8 }, { 1547, 8 }, { 1539, 7 }, { 1532, 8 }, + { 1524, 7 }, { 1517, 7 }, { 1510, 8 }, { 1502, 7 }, { 1495, 7 }, { 1488, 7 }, { 1481, 7 }, { 1474, 7 }, + { 1467, 7 }, { 1460, 7 }, { 1453, 6 }, { 1447, 7 }, { 1440, 7 }, { 1433, 6 }, { 1427, 7 }, { 1420, 6 }, + { 1414, 6 }, { 1408, 7 }, { 1401, 6 }, { 1395, 6 }, { 1389, 6 }, { 1383, 6 }, { 1377, 6 }, { 1371, 6 }, + { 1365, 6 }, { 1359, 6 }, { 1353, 6 }, { 1347, 6 }, { 1341, 6 }, { 1335, 5 }, { 1330, 6 }, { 1324, 5 }, + { 1319, 6 }, { 1313, 5 }, { 1308, 6 }, { 1302, 5 }, { 1297, 6 }, { 1291, 5 }, { 1286, 5 }, { 1281, 5 }, + { 1276, 6 }, { 1270, 5 }, { 1265, 5 }, { 1260, 5 }, { 1255, 5 }, { 1250, 5 }, { 1245, 5 }, { 1240, 5 }, + { 1235, 5 }, { 1230, 5 }, { 1225, 4 }, { 1221, 5 }, { 1216, 5 }, { 1211, 4 }, { 1207, 5 }, { 1202, 5 }, }; #endif diff --git a/buildroot/share/scripts/createSpeedLookupTable.py b/buildroot/share/scripts/createSpeedLookupTable.py index da24c7c811..70ed953e54 100755 --- a/buildroot/share/scripts/createSpeedLookupTable.py +++ b/buildroot/share/scripts/createSpeedLookupTable.py @@ -19,34 +19,36 @@ args = parser.parse_args() cpu_freq = args.cpu_freq * 1000000 timer_freq = cpu_freq / args.divider -print("#ifndef SPEED_LOOKUPTABLE_H") -print("#define SPEED_LOOKUPTABLE_H") +print("#pragma once") print() -print('#include "MarlinCore.h"') +print("#if F_CPU == %d" % cpu_freq) print() -print("const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {") -a = [ timer_freq / ((i*256)+(args.cpu_freq*2)) for i in range(256) ] +print(" const struct { uint16_t base; uint8_t gain; } speed_lookuptable_fast[256] PROGMEM = {") +a = [0 for i in range(8)] + [ int(0.5 + float(timer_freq) / (i*256)) for i in range(8, 256) ] +b = [0 for i in range(8)] + [ a[i] - a[i+1] for i in range(8, 255) ] +b.append(b[-1]) +for i in range(32): + print(" ", end='') + for j in range(8): + print("{ %5d, %5d }," % (a[8*i+j], b[8*i+j]), end='') + if j < 7: print(" ", end='') + if i == 0: print(" // dummy first row") + else: print() +print(" };") +print() + +print(" const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {") +a = [ int(0.5 + float(timer_freq) / ((i*8)+(args.cpu_freq*2))) for i in range(256) ] b = [ a[i] - a[i+1] for i in range(255) ] b.append(b[-1]) for i in range(32): - print(" ", end=' ') + print(" ", end='') for j in range(8): - print("{%d, %d}," % (a[8*i+j], b[8*i+j]), end=' ') + print("{ %5d, %5d }," % (a[8*i+j], b[8*i+j]), end='') + if j < 7: print(" ", end='') print() -print("};") -print() - -print("const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {") -a = [ timer_freq / ((i*8)+(args.cpu_freq*2)) for i in range(256) ] -b = [ a[i] - a[i+1] for i in range(255) ] -b.append(b[-1]) -for i in range(32): - print(" ", end=' ') - for j in range(8): - print("{%d, %d}," % (a[8*i+j], b[8*i+j]), end=' ') - print() -print("};") +print(" };") print() print("#endif") From db2b8a695d2c1db99af009c3b72a60f566823484 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 12 Mar 2023 16:30:10 -0500 Subject: [PATCH 117/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Update=20ISR=20cyc?= =?UTF-8?q?le=20counts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> --- Marlin/src/module/stepper.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 820d1d9a73..797a72791c 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -111,7 +111,7 @@ #define TIMER_READ_ADD_AND_STORE_CYCLES 13UL // The base ISR - #define ISR_BASE_CYCLES 996UL + #define ISR_BASE_CYCLES 882UL // Linear advance base time is 32 cycles #if ENABLED(LIN_ADVANCE) @@ -138,7 +138,7 @@ #define ISR_LOOP_BASE_CYCLES 32UL // And each stepper (start + stop pulse) takes in worst case - #define ISR_STEPPER_CYCLES 88UL + #define ISR_STEPPER_CYCLES 60UL #endif From 9039e99df1b95f6a352fb1b2ae27f893b091cfe7 Mon Sep 17 00:00:00 2001 From: Neo2003 Date: Mon, 13 Mar 2023 22:55:03 +0100 Subject: [PATCH 118/659] =?UTF-8?q?=F0=9F=93=BA=20DGUS=5FRELOADED=201.03?= =?UTF-8?q?=20(#25490)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 2 +- Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp | 9 +++------ .../src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h | 12 ++++++------ .../extui/dgus_reloaded/definition/DGUS_VPList.cpp | 9 ++++----- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 3b90555cec..111aa18d5d 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -3044,7 +3044,7 @@ * - Product: https://www.aliexpress.com/item/1005002008179262.html * * RELOADED (T5UID1) - * - Download https://github.com/Desuuuu/DGUS-reloaded/releases + * - Download https://github.com/Neo2003/DGUS-reloaded/releases * - Copy the downloaded DWIN_SET folder to the SD card. * * IA_CREALITY (T5UID1) diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp index dc2aea8bef..b27988a89f 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp @@ -180,12 +180,9 @@ #endif // SDSUPPORT void DGUSTxHandler::PositionZ(DGUS_VP &vp) { - float position = ExtUI::isAxisPositionKnown(ExtUI::Z) ? - planner.get_axis_position_mm(Z_AXIS) - : 0; - - const int16_t data = dgus_display.ToFixedPoint(position); - dgus_display.Write((uint16_t)vp.addr, Swap16(data)); + const float position = ExtUI::isAxisPositionKnown(ExtUI::Z) ? planner.get_axis_position_mm(Z_AXIS) : 0; + const int32_t data = dgus_display.ToFixedPoint(int32_t(position * 50.0f) / 50.0f); // Round to 0.02 + dgus_display.Write((uint16_t)vp.addr, dgus_display.SwapBytes(data)); } void DGUSTxHandler::Elapsed(DGUS_VP &vp) { diff --git a/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h b/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h index 39cc040f19..8cec8e59c9 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h @@ -107,10 +107,9 @@ enum class DGUS_Addr : uint16_t { SD_FileName4 = 0x30A5, // 0x30A5 - 0x30C4 SD_ScrollIcons = 0x30C5, // Bits: DGUS_Data::ScrollIcon SD_SelectedFileName = 0x30C6, // 0x30C6 - 0x30E5 - STATUS_PositionZ = 0x30E6, // Type: Fixed point, 1 decimal (16 bits signed) - STATUS_Elapsed = 0x30E7, // 0x30E7 - 0x30F5 - STATUS_Percent = 0x30F6, // Type: Integer (16 bits unsigned) - STATUS_Icons = 0x30F7, // Bits: DGUS_Data::StatusIcon + STATUS_PositionZ = 0x30E6, // Type: Fixed point, 2 decimal (32 bits signed) + STATUS_Elapsed = 0x30E8, // 0x30E8 - 0x30F6 + STATUS_Percent = 0x30F7, // Type: Integer (16 bits unsigned) ADJUST_Feedrate = 0x30F8, // Type: Integer (16 bits signed) ADJUST_Flowrate_CUR = 0x30F9, // Type: Integer (16 bits signed) #if HAS_MULTI_EXTRUDER @@ -120,11 +119,11 @@ enum class DGUS_Addr : uint16_t { TEMP_Current_Bed = 0x30FC, // Type: Integer (16 bits signed) TEMP_Target_Bed = 0x30FD, // Type: Integer (16 bits signed) TEMP_Max_Bed = 0x30FE, // Type: Integer (16 bits unsigned) - TEMP_Current_H0 = 0x30FF, // Type: Integer (16 bits signed) + TEMP_Current_H0 = 0x30FF, // Type: Fixed point, 1 decimal (16 bits signed) TEMP_Target_H0 = 0x3100, // Type: Integer (16 bits signed) TEMP_Max_H0 = 0x3101, // Type: Integer (16 bits unsigned) #if HAS_MULTI_HOTEND - TEMP_Current_H1 = 0x3102, // Type: Integer (16 bits signed) + TEMP_Current_H1 = 0x3102, // Type: Fixed point, 1 decimal (16 bits signed) TEMP_Target_H1 = 0x3103, // Type: Integer (16 bits signed) TEMP_Max_H1 = 0x3104, // Type: Integer (16 bits unsigned) #endif @@ -156,6 +155,7 @@ enum class DGUS_Addr : uint16_t { INFOS_LongestPrint = 0x318D, // 0x318D - 0x31A4 INFOS_FilamentUsed = 0x31A5, // 0x31A5 - 0x31BC WAIT_Icons = 0x31BD, // Bits: DGUS_Data::WaitIcon + STATUS_Icons = 0x31BE, // Bits: DGUS_Data::StatusIcon // READ-WRITE VARIABLES diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp index 4def1c48f8..3f00dbb037 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp @@ -116,8 +116,7 @@ const struct DGUS_VP vp_list[] PROGMEM = { VP_HELPER_RX(DGUS_Addr::LEVEL_MANUAL_Point, &DGUSRxHandler::MoveToPoint), VP_HELPER_RX_NODATA(DGUS_Addr::LEVEL_AUTO_Probe, &DGUSRxHandler::Probe), - VP_HELPER_RX_NODATA(DGUS_Addr::LEVEL_AUTO_Disable, - &DGUSRxHandler::DisableABL), + VP_HELPER_RX_NODATA(DGUS_Addr::LEVEL_AUTO_Disable, &DGUSRxHandler::DisableABL), VP_HELPER_RX(DGUS_Addr::FILAMENT_Select, &DGUSRxHandler::FilamentSelect), VP_HELPER_RX(DGUS_Addr::FILAMENT_SetLength, &DGUSRxHandler::FilamentLength), @@ -205,14 +204,14 @@ const struct DGUS_VP vp_list[] PROGMEM = { VP_HELPER_TX_AUTO(DGUS_Addr::TEMP_Current_Bed, &thermalManager.temp_bed.celsius, - &DGUSTxHandler::ExtraToInteger), + (&DGUSTxHandler::ExtraToFixedPoint)), VP_HELPER_TX_AUTO(DGUS_Addr::TEMP_Target_Bed, &thermalManager.temp_bed.target, &DGUSTxHandler::ExtraToInteger), VP_HELPER_TX(DGUS_Addr::TEMP_Max_Bed, &DGUSTxHandler::TempMax), VP_HELPER_TX_AUTO(DGUS_Addr::TEMP_Current_H0, &thermalManager.temp_hotend[ExtUI::heater_t::H0].celsius, - &DGUSTxHandler::ExtraToInteger), + (&DGUSTxHandler::ExtraToFixedPoint)), VP_HELPER_TX_AUTO(DGUS_Addr::TEMP_Target_H0, &thermalManager.temp_hotend[ExtUI::heater_t::H0].target, &DGUSTxHandler::ExtraToInteger), @@ -220,7 +219,7 @@ const struct DGUS_VP vp_list[] PROGMEM = { #if HAS_MULTI_HOTEND VP_HELPER_TX_AUTO(DGUS_Addr::TEMP_Current_H1, &thermalManager.temp_hotend[ExtUI::heater_t::H1].celsius, - &DGUSTxHandler::ExtraToInteger), + (&DGUSTxHandler::ExtraToFixedPoint)), VP_HELPER_TX_AUTO(DGUS_Addr::TEMP_Target_H1, &thermalManager.temp_hotend[ExtUI::heater_t::H1].target, &DGUSTxHandler::ExtraToInteger), From 6f5d33ce5567310af8988c3db35c728455ff425f Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 14 Mar 2023 00:20:33 +0000 Subject: [PATCH 119/659] [cron] Bump distribution date (2023-03-14) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index c76ff2632a..a98cc9d316 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-13" +//#define STRING_DISTRIBUTION_DATE "2023-03-14" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 3b57bf0d03..d973188f38 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-13" + #define STRING_DISTRIBUTION_DATE "2023-03-14" #endif /** From 3156595078c4d6ecdae5a5976ef0dbba060fa603 Mon Sep 17 00:00:00 2001 From: jbubik Date: Tue, 14 Mar 2023 02:19:24 +0100 Subject: [PATCH 120/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Polargraph=20witho?= =?UTF-8?q?ut=20Z=20(#25514)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/mmu/mmu2.cpp | 3 +- Marlin/src/inc/SanityCheck.h | 6 +-- Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 13 +++--- Marlin/src/lcd/menu/menu_advanced.cpp | 2 +- Marlin/src/libs/nozzle.cpp | 51 +++++++++++---------- Marlin/src/module/polargraph.cpp | 2 +- 6 files changed, 41 insertions(+), 36 deletions(-) diff --git a/Marlin/src/feature/mmu/mmu2.cpp b/Marlin/src/feature/mmu/mmu2.cpp index 4f86578a60..7b6a48954b 100644 --- a/Marlin/src/feature/mmu/mmu2.cpp +++ b/Marlin/src/feature/mmu/mmu2.cpp @@ -815,8 +815,7 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { resume_hotend_temp = thermalManager.degTargetHotend(active_extruder); resume_position = current_position; - if (move_axes && all_axes_homed()) - nozzle.park(0, park_point /*= NOZZLE_PARK_POINT*/); + if (move_axes && all_axes_homed()) nozzle.park(0, park_point); if (turn_off_nozzle) thermalManager.setTargetHotend(0, active_extruder); diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 5f20b205a0..a03a489a01 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1148,11 +1148,11 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #if ENABLED(NOZZLE_PARK_FEATURE) constexpr float npp[] = NOZZLE_PARK_POINT; - static_assert(COUNT(npp) == XYZ, "NOZZLE_PARK_POINT requires X, Y, and Z values."); + static_assert(COUNT(npp) == _MIN(NUM_AXES, XYZ), "NOZZLE_PARK_POINT requires coordinates for enabled axes, but only up to X,Y,Z."); constexpr xyz_pos_t npp_xyz = NOZZLE_PARK_POINT; static_assert(WITHIN(npp_xyz.x, X_MIN_POS, X_MAX_POS), "NOZZLE_PARK_POINT.X is out of bounds (X_MIN_POS, X_MAX_POS)."); - static_assert(WITHIN(npp_xyz.y, Y_MIN_POS, Y_MAX_POS), "NOZZLE_PARK_POINT.Y is out of bounds (Y_MIN_POS, Y_MAX_POS)."); - static_assert(WITHIN(npp_xyz.z, Z_MIN_POS, Z_MAX_POS), "NOZZLE_PARK_POINT.Z is out of bounds (Z_MIN_POS, Z_MAX_POS)."); + static_assert(TERN1(HAS_Y_AXIS, WITHIN(npp_xyz.y, Y_MIN_POS, Y_MAX_POS)), "NOZZLE_PARK_POINT.Y is out of bounds (Y_MIN_POS, Y_MAX_POS)."); + static_assert(TERN1(HAS_Z_AXIS, WITHIN(npp_xyz.z, Z_MIN_POS, Z_MAX_POS)), "NOZZLE_PARK_POINT.Z is out of bounds (Z_MIN_POS, Z_MAX_POS)."); #endif /** diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index 9093fa3eab..416c07c8f7 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -521,7 +521,7 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const else if (axis_should_home(axis)) while (const char c = *value++) lcd_put_lchar(c <= '.' ? c : '?'); else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !axis_is_trusted(axis)) - lcd_put_u8str(axis == Z_AXIS ? F(" ") : F(" ")); + lcd_put_u8str(TERN0(HAS_Z_AXIS, axis == Z_AXIS) ? F(" ") : F(" ")); else lcd_put_u8str(value); } @@ -998,11 +998,12 @@ void MarlinUI::draw_status_screen() { #endif // LCD_WIDTH >= 20 - lcd_moveto(LCD_WIDTH - 8, 1); - _draw_axis_value(Z_AXIS, ftostr52sp(LOGICAL_Z_POSITION(current_position.z)), blink); - - #if HAS_LEVELING && !HAS_HEATED_BED - lcd_put_lchar(planner.leveling_active || blink ? '_' : ' '); + #if HAS_Z_AXIS + lcd_moveto(LCD_WIDTH - 8, 1); + _draw_axis_value(Z_AXIS, ftostr52sp(LOGICAL_Z_POSITION(current_position.z)), blink); + #if HAS_LEVELING && !HAS_HEATED_BED + lcd_put_lchar(planner.leveling_active || blink ? '_' : ' '); + #endif #endif #endif // LCD_HEIGHT > 2 diff --git a/Marlin/src/lcd/menu/menu_advanced.cpp b/Marlin/src/lcd/menu/menu_advanced.cpp index 0e24d0ed80..71188a8688 100644 --- a/Marlin/src/lcd/menu/menu_advanced.cpp +++ b/Marlin/src/lcd/menu/menu_advanced.cpp @@ -597,7 +597,7 @@ void menu_backlash(); ; LOOP_LOGICAL_AXES(a) { - if (a == C_AXIS || TERN0(HAS_EXTRUDERS, a == E_AXIS)) + if (TERN0(HAS_C_AXIS, a == C_AXIS) || TERN0(HAS_EXTRUDERS, a == E_AXIS)) EDIT_ITEM_FAST_N(float52sign, a, MSG_VN_JERK, &planner.max_jerk[a], 0.1f, max_jerk_edit[a]); else EDIT_ITEM_FAST_N(float3, a, MSG_VN_JERK, &planner.max_jerk[a], 1.0f, max_jerk_edit[a]); diff --git a/Marlin/src/libs/nozzle.cpp b/Marlin/src/libs/nozzle.cpp index 575e74a814..74f61c33d0 100644 --- a/Marlin/src/libs/nozzle.cpp +++ b/Marlin/src/libs/nozzle.cpp @@ -225,38 +225,43 @@ Nozzle nozzle; #if ENABLED(NOZZLE_PARK_FEATURE) - float Nozzle::park_mode_0_height(const_float_t park_z) { - // Apply a minimum raise, if specified. Use park.z as a minimum height instead. - return _MAX(park_z, // Minimum height over 0 based on input - _MIN(Z_MAX_POS, // Maximum height is fixed - #ifdef NOZZLE_PARK_Z_RAISE_MIN - NOZZLE_PARK_Z_RAISE_MIN + // Minimum raise... - #endif - current_position.z // ...over current position - ) - ); - } + #if HAS_Z_AXIS + float Nozzle::park_mode_0_height(const_float_t park_z) { + // Apply a minimum raise, if specified. Use park.z as a minimum height instead. + return _MAX(park_z, // Minimum height over 0 based on input + _MIN(Z_MAX_POS, // Maximum height is fixed + #ifdef NOZZLE_PARK_Z_RAISE_MIN + NOZZLE_PARK_Z_RAISE_MIN + // Minimum raise... + #endif + current_position.z // ...over current position + ) + ); + } + #endif // HAS_Z_AXIS void Nozzle::park(const uint8_t z_action, const xyz_pos_t &park/*=NOZZLE_PARK_POINT*/) { - constexpr feedRate_t fr_xy = NOZZLE_PARK_XY_FEEDRATE, fr_z = NOZZLE_PARK_Z_FEEDRATE; + #if HAS_Z_AXIS + constexpr feedRate_t fr_z = NOZZLE_PARK_Z_FEEDRATE; - switch (z_action) { - case 1: // Go to Z-park height - do_blocking_move_to_z(park.z, fr_z); - break; + switch (z_action) { + case 1: // Go to Z-park height + do_blocking_move_to_z(park.z, fr_z); + break; - case 2: // Raise by Z-park height - do_blocking_move_to_z(_MIN(current_position.z + park.z, Z_MAX_POS), fr_z); - break; + case 2: // Raise by Z-park height + do_blocking_move_to_z(_MIN(current_position.z + park.z, Z_MAX_POS), fr_z); + break; - default: // Raise by NOZZLE_PARK_Z_RAISE_MIN, use park.z as a minimum height - do_blocking_move_to_z(park_mode_0_height(park.z), fr_z); - break; - } + default: // Raise by NOZZLE_PARK_Z_RAISE_MIN, use park.z as a minimum height + do_blocking_move_to_z(park_mode_0_height(park.z), fr_z); + break; + } + #endif // HAS_Z_AXIS #ifndef NOZZLE_PARK_MOVE #define NOZZLE_PARK_MOVE 0 #endif + constexpr feedRate_t fr_xy = NOZZLE_PARK_XY_FEEDRATE; switch (NOZZLE_PARK_MOVE) { case 0: do_blocking_move_to_xy(park, fr_xy); break; case 1: do_blocking_move_to_x(park.x, fr_xy); break; diff --git a/Marlin/src/module/polargraph.cpp b/Marlin/src/module/polargraph.cpp index d55d36a6d6..ef6a4c0db4 100644 --- a/Marlin/src/module/polargraph.cpp +++ b/Marlin/src/module/polargraph.cpp @@ -43,7 +43,7 @@ xy_pos_t draw_area_min, draw_area_max; void inverse_kinematics(const xyz_pos_t &raw) { const float x1 = raw.x - draw_area_min.x, x2 = draw_area_max.x - raw.x, y = raw.y - draw_area_max.y; - delta.set(HYPOT(x1, y), HYPOT(x2, y), raw.z); + delta.set(HYPOT(x1, y), HYPOT(x2, y) OPTARG(HAS_Z_AXIS, raw.z)); } #endif // POLARGRAPH From f90c49910defc4124f7ef0a75dc8a292b9ee85c7 Mon Sep 17 00:00:00 2001 From: Eduard Sukharev Date: Wed, 15 Mar 2023 00:49:49 +0300 Subject: [PATCH 121/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20long=20filename=20?= =?UTF-8?q?read/report=20(#25509)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/sd/SdBaseFile.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/Marlin/src/sd/SdBaseFile.cpp b/Marlin/src/sd/SdBaseFile.cpp index e3f95623ac..b8b49b7ba0 100644 --- a/Marlin/src/sd/SdBaseFile.cpp +++ b/Marlin/src/sd/SdBaseFile.cpp @@ -1013,8 +1013,7 @@ bool SdBaseFile::openNext(SdBaseFile *dirFile, uint8_t oflag) { * \return false if the dirname is a short file name 8.3 (SFN) */ bool SdBaseFile::isDirNameLFN(const char *dirname) { - uint8_t length = strlen(dirname); - uint8_t idx = length; + uint8_t length = strlen(dirname), idx = length; bool dotFound = false; if (idx > 12) return true; // LFN due to filename length > 12 ("filename.ext") // Check dot(s) position @@ -1508,8 +1507,8 @@ int8_t SdBaseFile::readDir(dir_t *dir, char *longFilename) { if (DIR_IS_FILE_OR_SUBDIR(dir)) { #if ENABLED(UTF_FILENAME_SUPPORT) #if LONG_FILENAME_CHARSIZE > 2 - // Add warning for developers for currently not supported 3-byte cases (Conversion series of 2-byte - // codepoints to 3-byte in-place will break the rest of filename) + // Add warning for developers for unsupported 3-byte cases. + // (Converting 2-byte codepoints to 3-byte in-place would break the rest of filename.) #error "Currently filename re-encoding is done in-place. It may break the remaining chars to use 3-byte codepoints." #endif @@ -1517,22 +1516,22 @@ int8_t SdBaseFile::readDir(dir_t *dir, char *longFilename) { if (longFilename) { // Reset n to the start of the long name n = 0; - for (uint16_t idx = 0; idx < (LONG_FILENAME_LENGTH) / 2; idx += 2) { // idx is fixed since FAT LFN always contains UTF-16LE encoding + for (uint16_t idx = 0; idx < (LONG_FILENAME_LENGTH); idx += 2) { // idx is fixed since FAT LFN always contains UTF-16LE encoding const uint16_t utf16_ch = longFilename[idx] | (longFilename[idx + 1] << 8); - if (0xD800 == (utf16_ch & 0xF800)) // Surrogate pair - encode as '_' + if (0xD800 == (utf16_ch & 0xF800)) // Surrogate pair - encode as '_' longFilename[n++] = '_'; - else if (0 == (utf16_ch & 0xFF80)) // Encode as 1-byte UTF-8 char + else if (0 == (utf16_ch & 0xFF80)) // Encode as 1-byte UTF-8 char longFilename[n++] = utf16_ch & 0x007F; - else if (0 == (utf16_ch & 0xF800)) { // Encode as 2-byte UTF-8 char + else if (0 == (utf16_ch & 0xF800)) { // Encode as 2-byte UTF-8 char longFilename[n++] = 0xC0 | ((utf16_ch >> 6) & 0x1F); longFilename[n++] = 0x80 | ( utf16_ch & 0x3F); } else { - #if LONG_FILENAME_CHARSIZE > 2 // Encode as 3-byte UTF-8 char + #if LONG_FILENAME_CHARSIZE > 2 // Encode as 3-byte UTF-8 char longFilename[n++] = 0xE0 | ((utf16_ch >> 12) & 0x0F); longFilename[n++] = 0xC0 | ((utf16_ch >> 6) & 0x3F); longFilename[n++] = 0xC0 | ( utf16_ch & 0x3F); - #else // Encode as '_' + #else // Encode as '_' longFilename[n++] = '_'; #endif } From 1cf85196b660795d00160ea6d83dbbdaffb290b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davide=20Rombol=C3=A0?= Date: Wed, 15 Mar 2023 00:54:24 +0100 Subject: [PATCH 122/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20IA=5FCREALITY=20fl?= =?UTF-8?q?oat,=20startup=20(#25493)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25440 --- Marlin/Configuration.h | 3 +- .../lcd/extui/ia_creality/creality_extui.cpp | 77 ++++++++++++------- .../lcd/extui/ia_creality/creality_extui.h | 2 +- 3 files changed, 52 insertions(+), 30 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 111aa18d5d..d66870949f 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -3061,7 +3061,8 @@ #if DGUS_UI_IS(MKS) #define USE_MKS_GREEN_UI #elif DGUS_UI_IS(IA_CREALITY) - //#define LCD_SCREEN_ROTATE 90 // Portrait Mode or 800x480 displays + //#define LCD_SCREEN_ROTATE 90 // Portrait Mode or 800x480 displays + //#define IA_CREALITY_BOOT_DELAY 1500 // (ms) #endif // diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp index 547b500106..15dcd84bb9 100644 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp +++ b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp @@ -87,6 +87,9 @@ namespace ExtUI { #ifndef CUSTOM_MACHINE_NAME #define CUSTOM_MACHINE_NAME MACHINE_NAME #endif + #ifndef IA_CREALITY_BOOT_DELAY + #define IA_CREALITY_BOOT_DELAY 500 + #endif void onStartup() { DWIN_SERIAL.begin(115200); @@ -94,7 +97,7 @@ namespace ExtUI { rtscheck.recdat.head[1] = rtscheck.snddat.head[1] = FHTWO; ZERO(rtscheck.databuf); - delay_ms(TERN(DWINOS_4, 1500, 500)); // Delay to allow screen startup + delay_ms(IA_CREALITY_BOOT_DELAY); // Delay to allow screen startup SetTouchScreenConfiguration(); rtscheck.RTS_SndData(StartSoundSet, SoundAddr); delay_ms(400); // Delay to allow screen to configure @@ -314,31 +317,31 @@ namespace ExtUI { else rtscheck.RTS_SndData(2, DisplayStandbyEnableIndicator); - rtscheck.RTS_SndData(uint16_t(getAxisSteps_per_mm(X)) * 10, StepMM_X); - rtscheck.RTS_SndData(uint16_t(getAxisSteps_per_mm(Y)) * 10, StepMM_Y); - rtscheck.RTS_SndData(uint16_t(getAxisSteps_per_mm(Z)) * 10, StepMM_Z); - rtscheck.RTS_SndData(uint16_t(getAxisSteps_per_mm(E0)) * 10, StepMM_E); + rtscheck.RTS_SndData(getAxisSteps_per_mm(X) * 10, StepMM_X); + rtscheck.RTS_SndData(getAxisSteps_per_mm(Y) * 10, StepMM_Y); + rtscheck.RTS_SndData(getAxisSteps_per_mm(Z) * 10, StepMM_Z); + rtscheck.RTS_SndData(getAxisSteps_per_mm(E0) * 10, StepMM_E); - rtscheck.RTS_SndData(uint16_t(getAxisMaxAcceleration_mm_s2(X)) / 100, Accel_X); - rtscheck.RTS_SndData(uint16_t(getAxisMaxAcceleration_mm_s2(Y)) / 100, Accel_Y); - rtscheck.RTS_SndData(uint16_t(getAxisMaxAcceleration_mm_s2(Z)) / 10, Accel_Z); - rtscheck.RTS_SndData(uint16_t(getAxisMaxAcceleration_mm_s2(E0)), Accel_E); + rtscheck.RTS_SndData(getAxisMaxAcceleration_mm_s2(X) / 100, Accel_X); + rtscheck.RTS_SndData(getAxisMaxAcceleration_mm_s2(Y) / 100, Accel_Y); + rtscheck.RTS_SndData(getAxisMaxAcceleration_mm_s2(Z) / 10, Accel_Z); + rtscheck.RTS_SndData(getAxisMaxAcceleration_mm_s2(E0), Accel_E); - rtscheck.RTS_SndData(uint16_t(getAxisMaxFeedrate_mm_s(X)), Feed_X); - rtscheck.RTS_SndData(uint16_t(getAxisMaxFeedrate_mm_s(Y)), Feed_Y); - rtscheck.RTS_SndData(uint16_t(getAxisMaxFeedrate_mm_s(Z)), Feed_Z); - rtscheck.RTS_SndData(uint16_t(getAxisMaxFeedrate_mm_s(E0)), Feed_E); + rtscheck.RTS_SndData(getAxisMaxFeedrate_mm_s(X), Feed_X); + rtscheck.RTS_SndData(getAxisMaxFeedrate_mm_s(Y), Feed_Y); + rtscheck.RTS_SndData(getAxisMaxFeedrate_mm_s(Z), Feed_Z); + rtscheck.RTS_SndData(getAxisMaxFeedrate_mm_s(E0), Feed_E); - rtscheck.RTS_SndData(uint16_t(getAxisMaxJerk_mm_s(X)) * 100, Jerk_X); - rtscheck.RTS_SndData(uint16_t(getAxisMaxJerk_mm_s(Y)) * 100, Jerk_Y); - rtscheck.RTS_SndData(uint16_t(getAxisMaxJerk_mm_s(Z)) * 100, Jerk_Z); - rtscheck.RTS_SndData(uint16_t(getAxisMaxJerk_mm_s(E0)) * 100, Jerk_E); + rtscheck.RTS_SndData(getAxisMaxJerk_mm_s(X) * 100, Jerk_X); + rtscheck.RTS_SndData(getAxisMaxJerk_mm_s(Y) * 100, Jerk_Y); + rtscheck.RTS_SndData(getAxisMaxJerk_mm_s(Z) * 100, Jerk_Z); + rtscheck.RTS_SndData(getAxisMaxJerk_mm_s(E0) * 100, Jerk_E); #if HAS_HOTEND_OFFSET - rtscheck.RTS_SndData(uint16_t(getNozzleOffset_mm(X, E1)) * 10, T2Offset_X); - rtscheck.RTS_SndData(uint16_t(getNozzleOffset_mm(Y, E1)) * 10, T2Offset_Y); - rtscheck.RTS_SndData(uint16_t(getNozzleOffset_mm(Z, E1)) * 10, T2Offset_Z); - rtscheck.RTS_SndData(uint16_t(getAxisSteps_per_mm(E1)) * 10, T2StepMM_E); + rtscheck.RTS_SndData(getNozzleOffset_mm(X, E1) * 10, T2Offset_X); + rtscheck.RTS_SndData(getNozzleOffset_mm(Y, E1) * 10, T2Offset_Y); + rtscheck.RTS_SndData(getNozzleOffset_mm(Z, E1) * 10, T2Offset_Z); + rtscheck.RTS_SndData(getAxisSteps_per_mm(E1) * 10, T2StepMM_E); #endif #if HAS_BED_PROBE @@ -349,13 +352,13 @@ namespace ExtUI { #if HAS_PID_HEATING rtscheck.RTS_SndData(pid_hotendAutoTemp, HotendPID_AutoTmp); rtscheck.RTS_SndData(pid_bedAutoTemp, BedPID_AutoTmp); - rtscheck.RTS_SndData(uint16_t(getPID_Kp(E0)) * 10, HotendPID_P); - rtscheck.RTS_SndData(uint16_t(getPID_Ki(E0)) * 10, HotendPID_I); - rtscheck.RTS_SndData(uint16_t(getPID_Kd(E0)) * 10, HotendPID_D); + rtscheck.RTS_SndData(getPID_Kp(E0) * 10, HotendPID_P); + rtscheck.RTS_SndData(getPID_Ki(E0) * 10, HotendPID_I); + rtscheck.RTS_SndData(getPID_Kd(E0) * 10, HotendPID_D); #if ENABLED(PIDTEMPBED) - rtscheck.RTS_SndData(uint16_t(getBedPID_Kp()) * 10, BedPID_P); - rtscheck.RTS_SndData(uint16_t(getBedPID_Ki()) * 10, BedPID_I); - rtscheck.RTS_SndData(uint16_t(getBedPID_Kd()) * 10, BedPID_D); + rtscheck.RTS_SndData(getBedPID_Kp() * 10, BedPID_P); + rtscheck.RTS_SndData(getBedPID_Ki() * 10, BedPID_I); + rtscheck.RTS_SndData(getBedPID_Kd() * 10, BedPID_D); #endif #endif } @@ -567,6 +570,25 @@ namespace ExtUI { RTS_SndData(); } + void RTSSHOW::RTS_SndData(const_float_t f, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { + int16_t n = f; + if (cmd == VarAddr_W) { + snddat.data[0] = n; + snddat.len = 5; + } + else if (cmd == RegAddr_W) { + snddat.data[0] = n; + snddat.len = 3; + } + else if (cmd == VarAddr_R) { + snddat.bytelen = n; + snddat.len = 4; + } + snddat.command = cmd; + snddat.addr = addr; + RTS_SndData(); + } + void RTSSHOW::RTS_SndData(const int n, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { if (cmd == VarAddr_W) { if ((unsigned int)n > 0xFFFF) { @@ -789,7 +811,6 @@ namespace ExtUI { } else { onStatusChanged(F("Requested Offset Beyond Limits")); - RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); } rtscheck.RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.h b/Marlin/src/lcd/extui/ia_creality/creality_extui.h index 35162eebee..099f8c238a 100644 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.h +++ b/Marlin/src/lcd/extui/ia_creality/creality_extui.h @@ -232,10 +232,10 @@ namespace ExtUI { void RTS_SndData(char, const uint32_t, const uint8_t=VarAddr_W); void RTS_SndData(int, const uint32_t, const uint8_t=VarAddr_W); void RTS_SndData(unsigned long, const uint32_t, const uint8_t=VarAddr_W); + void RTS_SndData(const_float_t, const uint32_t, const uint8_t=VarAddr_W); void RTS_SndData(uint8_t * const str, const uint32_t addr, const uint8_t cmd=VarAddr_W) { RTS_SndData((char *)str, addr, cmd); } void RTS_SndData(const unsigned int n, uint32_t addr, const uint8_t cmd=VarAddr_W) { RTS_SndData(int(n), addr, cmd); } - void RTS_SndData(const_float_t n, const uint32_t addr, const uint8_t cmd=VarAddr_W) { RTS_SndData(int(n), addr, cmd); } void RTS_SndData(const long n, const uint32_t addr, const uint8_t cmd=VarAddr_W) { RTS_SndData((unsigned long)n, addr, cmd); } void RTS_SDcard_Stop(); From 50893c414d43e2d9a351eac983ed8ebeed126ab0 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 15 Mar 2023 00:30:47 +0000 Subject: [PATCH 123/659] [cron] Bump distribution date (2023-03-15) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index a98cc9d316..c993bd48b9 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-14" +//#define STRING_DISTRIBUTION_DATE "2023-03-15" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index d973188f38..5f78729bd4 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-14" + #define STRING_DISTRIBUTION_DATE "2023-03-15" #endif /** From 66d94ece33c5f7499b1901ee7510b1017cc0fb6f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 14 Mar 2023 16:48:17 -0500 Subject: [PATCH 124/659] =?UTF-8?q?=F0=9F=8E=A8=20Misc.=20formatting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/bedlevel/abl/G29.cpp | 4 ++-- buildroot/share/git/mfadd | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index 114fa55520..e1fd0124c4 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -409,7 +409,7 @@ G29_TYPE GcodeSuite::G29() { if (!probe.good_bounds(abl.probe_position_lf, abl.probe_position_rb)) { if (DEBUGGING(LEVELING)) { DEBUG_ECHOLNPGM("G29 L", abl.probe_position_lf.x, " R", abl.probe_position_rb.x, - " F", abl.probe_position_lf.y, " B", abl.probe_position_rb.y); + " F", abl.probe_position_lf.y, " B", abl.probe_position_rb.y); } SERIAL_ECHOLNPGM("? (L,R,F,B) out of bounds."); G29_RETURN(false, false); @@ -417,7 +417,7 @@ G29_TYPE GcodeSuite::G29() { // Probe at the points of a lattice grid abl.gridSpacing.set((abl.probe_position_rb.x - abl.probe_position_lf.x) / (abl.grid_points.x - 1), - (abl.probe_position_rb.y - abl.probe_position_lf.y) / (abl.grid_points.y - 1)); + (abl.probe_position_rb.y - abl.probe_position_lf.y) / (abl.grid_points.y - 1)); #endif // ABL_USES_GRID diff --git a/buildroot/share/git/mfadd b/buildroot/share/git/mfadd index 30be1ec0f7..d6fc07bde0 100755 --- a/buildroot/share/git/mfadd +++ b/buildroot/share/git/mfadd @@ -29,7 +29,7 @@ REPO=${INFO[2]} set -e -echo "Adding and fetching $USER..." +echo "Adding and fetching $USER/$REPO..." git remote add "$USER" "git@github.com:$USER/$REPO.git" >/dev/null 2>&1 || echo "Remote exists." git fetch "$USER" From 10983d0cfe3e353ba465cfcadf8aeb51327f1197 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 15 Mar 2023 00:29:37 -0500 Subject: [PATCH 125/659] =?UTF-8?q?=F0=9F=8E=A8=20Misc.=20tramming=20menu?= =?UTF-8?q?=20cleanup=20(#25519)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 4 +- .../lcd/extui/mks_ui/draw_z_offset_wizard.cpp | 8 +- Marlin/src/lcd/menu/menu.cpp | 2 +- Marlin/src/lcd/menu/menu.h | 2 +- Marlin/src/lcd/menu/menu_bed_leveling.cpp | 2 +- ..._bed_corners.cpp => menu_bed_tramming.cpp} | 94 ++++++++++--------- Marlin/src/lcd/menu/menu_item.h | 2 +- Marlin/src/lcd/menu/menu_motion.cpp | 2 +- Marlin/src/lcd/menu/menu_probe_offset.cpp | 4 +- ..._tramming.cpp => menu_tramming_wizard.cpp} | 0 Marlin/src/lcd/menu/menu_x_twist.cpp | 4 +- Marlin/src/module/probe.cpp | 4 +- Marlin/src/module/probe.h | 8 +- .../PlatformIO/scripts/common-dependencies.h | 4 +- buildroot/tests/BIGTREE_GTR_V1_0 | 3 +- ini/features.ini | 4 +- platformio.ini | 4 +- 17 files changed, 80 insertions(+), 71 deletions(-) rename Marlin/src/lcd/menu/{menu_bed_corners.cpp => menu_bed_tramming.cpp} (83%) rename Marlin/src/lcd/menu/{menu_tramming.cpp => menu_tramming_wizard.cpp} (100%) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index d66870949f..b57c66a9a8 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2114,8 +2114,8 @@ #if ENABLED(LCD_BED_TRAMMING) #define BED_TRAMMING_INSET_LFRB { 30, 30, 30, 30 } // (mm) Left, Front, Right, Back insets - #define BED_TRAMMING_HEIGHT 0.0 // (mm) Z height of nozzle at leveling points - #define BED_TRAMMING_Z_HOP 4.0 // (mm) Z height of nozzle between leveling points + #define BED_TRAMMING_HEIGHT 0.0 // (mm) Z height of nozzle at tramming points + #define BED_TRAMMING_Z_HOP 4.0 // (mm) Z height of nozzle between tramming points //#define BED_TRAMMING_INCLUDE_CENTER // Move to the center after the last corner //#define BED_TRAMMING_USE_PROBE #if ENABLED(BED_TRAMMING_USE_PROBE) diff --git a/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp b/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp index d143234fd5..dbe8577dc9 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp @@ -36,7 +36,7 @@ #if HAS_LEVELING #include "../../../feature/bedlevel/bedlevel.h" - bool leveling_was_active; + bool mks_leveling_was_active; #endif extern lv_group_t *g; @@ -110,7 +110,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { case ID_M_RETURN: probe.offset.z = z_offset_backup; SET_SOFT_ENDSTOP_LOOSE(false); - TERN_(HAS_LEVELING, set_bed_leveling_enabled(leveling_was_active)); + TERN_(HAS_LEVELING, set_bed_leveling_enabled(mks_leveling_was_active)); #if HOMING_Z_WITH_PROBE && defined(PROBE_OFFSET_WIZARD_START_Z) set_axis_never_homed(Z_AXIS); // On cancel the Z position needs correction queue.inject_P(PSTR("G28Z")); @@ -149,8 +149,8 @@ void lv_draw_z_offset_wizard() { // Store Bed-Leveling-State and disable #if HAS_LEVELING - leveling_was_active = planner.leveling_active; - set_bed_leveling_enabled(leveling_was_active); + mks_leveling_was_active = planner.leveling_active; + set_bed_leveling_enabled(mks_leveling_was_active); #endif queue.inject_P(PSTR("G28")); diff --git a/Marlin/src/lcd/menu/menu.cpp b/Marlin/src/lcd/menu/menu.cpp index c529ae757a..85b773bebc 100644 --- a/Marlin/src/lcd/menu/menu.cpp +++ b/Marlin/src/lcd/menu/menu.cpp @@ -48,7 +48,7 @@ //////////////////////////////////////////// #if HAS_LEVELING && ANY(LCD_BED_TRAMMING, PROBE_OFFSET_WIZARD, X_AXIS_TWIST_COMPENSATION) - bool leveling_was_active; // = false + bool menu_leveling_was_active; // = false #endif #if ANY(PROBE_MANUALLY, MESH_BED_LEVELING, X_AXIS_TWIST_COMPENSATION) uint8_t manual_probe_index; // = 0 diff --git a/Marlin/src/lcd/menu/menu.h b/Marlin/src/lcd/menu/menu.h index befffe5f72..9b9c678868 100644 --- a/Marlin/src/lcd/menu/menu.h +++ b/Marlin/src/lcd/menu/menu.h @@ -264,7 +264,7 @@ inline void clear_menu_history() { screen_history_depth = 0; } #define STICKY_SCREEN(S) []{ ui.defer_status_screen(); ui.goto_screen(S); } #if HAS_LEVELING && ANY(LCD_BED_TRAMMING, PROBE_OFFSET_WIZARD, X_AXIS_TWIST_COMPENSATION) - extern bool leveling_was_active; + extern bool menu_leveling_was_active; #endif #if ANY(PROBE_MANUALLY, MESH_BED_LEVELING, X_AXIS_TWIST_COMPENSATION) diff --git a/Marlin/src/lcd/menu/menu_bed_leveling.cpp b/Marlin/src/lcd/menu/menu_bed_leveling.cpp index d25d35011e..a7fb54f68d 100644 --- a/Marlin/src/lcd/menu/menu_bed_leveling.cpp +++ b/Marlin/src/lcd/menu/menu_bed_leveling.cpp @@ -293,7 +293,7 @@ void menu_bed_leveling() { #endif #if ENABLED(LCD_BED_TRAMMING) - SUBMENU(MSG_BED_TRAMMING, _lcd_level_bed_corners); + SUBMENU(MSG_BED_TRAMMING, _lcd_bed_tramming); #endif #if ENABLED(EEPROM_SETTINGS) diff --git a/Marlin/src/lcd/menu/menu_bed_corners.cpp b/Marlin/src/lcd/menu/menu_bed_tramming.cpp similarity index 83% rename from Marlin/src/lcd/menu/menu_bed_corners.cpp rename to Marlin/src/lcd/menu/menu_bed_tramming.cpp index 0e0051e65d..5f1b547871 100644 --- a/Marlin/src/lcd/menu/menu_bed_corners.cpp +++ b/Marlin/src/lcd/menu/menu_bed_tramming.cpp @@ -21,7 +21,7 @@ */ // -// Level Bed Corners menu +// Bed Tramming menu // #include "../../inc/MarlinConfigPre.h" @@ -54,7 +54,7 @@ #endif float last_z; int good_points; - bool corner_probing_done, wait_for_probe; + bool tramming_done, wait_for_probe; #if HAS_MARLINUI_U8GLIB #include "../dogm/marlinui_DOGM.h" @@ -66,6 +66,11 @@ static_assert(BED_TRAMMING_Z_HOP >= 0, "BED_TRAMMING_Z_HOP must be >= 0. Please update your configuration."); +#define LF 1 +#define RF 2 +#define RB 3 +#define LB 4 + #ifndef BED_TRAMMING_LEVELING_ORDER #define BED_TRAMMING_LEVELING_ORDER { LF, RF, LB, RB } // Default //#define BED_TRAMMING_LEVELING_ORDER { LF, LB, RF } // 3 hard-coded points @@ -75,18 +80,14 @@ static_assert(BED_TRAMMING_Z_HOP >= 0, "BED_TRAMMING_Z_HOP must be >= 0. Please //#define BED_TRAMMING_LEVELING_ORDER { LB, RB } // 3-Point tramming - Front #endif -#define LF 1 -#define RF 2 -#define RB 3 -#define LB 4 constexpr int lco[] = BED_TRAMMING_LEVELING_ORDER; -constexpr bool level_corners_3_points = COUNT(lco) == 2; -static_assert(level_corners_3_points || COUNT(lco) == 4, "BED_TRAMMING_LEVELING_ORDER must have exactly 2 or 4 corners."); +constexpr bool tramming_3_points = COUNT(lco) == 2; +static_assert(tramming_3_points || COUNT(lco) == 4, "BED_TRAMMING_LEVELING_ORDER must have exactly 2 or 4 corners."); constexpr int lcodiff = ABS(lco[0] - lco[1]); static_assert(COUNT(lco) == 4 || lcodiff == 1 || lcodiff == 3, "The first two BED_TRAMMING_LEVELING_ORDER corners must be on the same edge."); -constexpr int nr_edge_points = level_corners_3_points ? 3 : 4; +constexpr int nr_edge_points = tramming_3_points ? 3 : 4; constexpr int available_points = nr_edge_points + ENABLED(BED_TRAMMING_INCLUDE_CENTER); constexpr int center_index = TERN(BED_TRAMMING_INCLUDE_CENTER, available_points - 1, -1); constexpr float inset_lfrb[4] = BED_TRAMMING_INSET_LFRB; @@ -98,9 +99,9 @@ static int8_t bed_corner; /** * Select next corner coordinates */ -static void _lcd_level_bed_corners_get_next_position() { +static void _lcd_bed_tramming_get_next_position() { - if (level_corners_3_points) { + if (tramming_3_points) { if (bed_corner >= available_points) bed_corner = 0; // Above max position -> move back to first corner switch (bed_corner) { case 0 ... 1: @@ -141,9 +142,9 @@ static void _lcd_level_bed_corners_get_next_position() { else { current_position = lf; // Left front switch (lco[bed_corner]) { - case RF: current_position.x = rb.x; break; // Right front - case RB: current_position = rb; break; // Right rear - case LB: current_position.y = rb.y; break; // Left rear + case RF: current_position.x = rb.x; break; // Right Front + case RB: current_position = rb; break; // Right Back + case LB: current_position.y = rb.y; break; // Left Back } } } @@ -198,7 +199,7 @@ static void _lcd_level_bed_corners_get_next_position() { if (!ui.should_draw()) return; MenuItem_confirm::select_screen( GET_TEXT_F(MSG_BUTTON_DONE), GET_TEXT_F(MSG_BUTTON_SKIP) - , []{ corner_probing_done = true; wait_for_probe = false; } + , []{ tramming_done = true; wait_for_probe = false; } , []{ wait_for_probe = false; } , GET_TEXT_F(MSG_BED_TRAMMING_RAISE) ); @@ -207,23 +208,25 @@ static void _lcd_level_bed_corners_get_next_position() { void _lcd_draw_level_prompt() { if (!ui.should_draw()) return; MenuItem_confirm::select_screen( - GET_TEXT_F(TERN(HAS_LEVELING, MSG_BUTTON_LEVEL, MSG_BUTTON_DONE)), - TERN(HAS_LEVELING, GET_TEXT_F(MSG_BUTTON_BACK), nullptr) + GET_TEXT_F(TERN(HAS_LEVELING, MSG_BUTTON_LEVEL, MSG_BUTTON_DONE)) + , TERN(HAS_LEVELING, GET_TEXT_F(MSG_BUTTON_BACK), nullptr) , []{ queue.inject(TERN(HAS_LEVELING, F("G29N"), FPSTR(G28_STR))); ui.return_to_status(); } , TERN(HAS_LEVELING, ui.goto_previous_screen_no_defer, []{}) , GET_TEXT_F(MSG_BED_TRAMMING_IN_RANGE) ); } - bool _lcd_level_bed_corners_probe(bool verify=false) { - if (verify) do_blocking_move_to_z(current_position.z + BED_TRAMMING_Z_HOP); // do clearance if needed + bool _lcd_bed_tramming_probe(bool verify=false) { + if (verify) line_to_z(BED_TRAMMING_Z_HOP); // do clearance if needed TERN_(BLTOUCH, if (!bltouch.high_speed_mode) bltouch.deploy()); // Deploy in LOW SPEED MODE on every probe action do_blocking_move_to_z(last_z - BED_TRAMMING_PROBE_TOLERANCE, MMM_TO_MMS(Z_PROBE_FEEDRATE_SLOW)); // Move down to lower tolerance if (TEST(endstops.trigger_state(), Z_MIN_PROBE)) { // check if probe triggered endstops.hit_on_purpose(); set_current_from_steppers_for_axis(Z_AXIS); sync_plan_position(); + TERN_(BLTOUCH, if (!bltouch.high_speed_mode) bltouch.stow()); // Stow in LOW SPEED MODE on every trigger + // Triggered outside tolerance range? if (ABS(current_position.z - last_z) > BED_TRAMMING_PROBE_TOLERANCE) { last_z = current_position.z; // Above tolerance. Set a new Z for subsequent corners. @@ -231,13 +234,13 @@ static void _lcd_level_bed_corners_get_next_position() { } return true; // probe triggered } - do_blocking_move_to_z(last_z); // go back to tolerance middle point before raise + line_to_z(last_z); // go back to tolerance middle point before raise return false; // probe not triggered } - bool _lcd_level_bed_corners_raise() { + bool _lcd_bed_tramming_raise() { bool probe_triggered = false; - corner_probing_done = false; + tramming_done = false; wait_for_probe = true; ui.goto_screen(_lcd_draw_raise); // show raise screen ui.set_selection(true); @@ -264,25 +267,25 @@ static void _lcd_level_bed_corners_get_next_position() { ui.refresh(LCDVIEW_REDRAW_NOW); _lcd_draw_probing(); // update screen with # of good points - do_blocking_move_to_z(current_position.z + BED_TRAMMING_Z_HOP + TERN0(BLTOUCH, bltouch.z_extra_clearance())); // clearance + line_to_z(current_position.z + BED_TRAMMING_Z_HOP + TERN0(BLTOUCH, bltouch.z_extra_clearance())); // clearance - _lcd_level_bed_corners_get_next_position(); // Select next corner coordinates + _lcd_bed_tramming_get_next_position(); // Select next corner coordinates current_position -= probe.offset_xy; // Account for probe offsets do_blocking_move_to_xy(current_position); // Goto corner TERN_(BLTOUCH, if (bltouch.high_speed_mode) bltouch.deploy()); // Deploy in HIGH SPEED MODE - if (!_lcd_level_bed_corners_probe()) { // Probe down to tolerance - if (_lcd_level_bed_corners_raise()) { // Prompt user to raise bed if needed - #if ENABLED(BED_TRAMMING_VERIFY_RAISED) // Verify - while (!_lcd_level_bed_corners_probe(true)) { // Loop while corner verified - if (!_lcd_level_bed_corners_raise()) { // Prompt user to raise bed if needed - if (corner_probing_done) return; // Done was selected + if (!_lcd_bed_tramming_probe()) { // Probe down to tolerance + if (_lcd_bed_tramming_raise()) { // Prompt user to raise bed if needed + #if ENABLED(BED_TRAMMING_VERIFY_RAISED) // Verify + while (!_lcd_bed_tramming_probe(true)) { // Loop while corner verified + if (!_lcd_bed_tramming_raise()) { // Prompt user to raise bed if needed + if (tramming_done) return; // Done was selected break; // Skip was selected } } #endif } - else if (corner_probing_done) // Done was selected + else if (tramming_done) // Done was selected return; } @@ -293,9 +296,9 @@ static void _lcd_level_bed_corners_get_next_position() { #if ENABLED(BLTOUCH) if (bltouch.high_speed_mode) { - // In HIGH SPEED MODE do clearance and stow at the very end - do_blocking_move_to_z(current_position.z + BED_TRAMMING_Z_HOP); + // In HIGH SPEED MODE do stow and clearance at the very end bltouch.stow(); + do_z_clearance(BED_TRAMMING_Z_HOP); } #endif @@ -309,7 +312,7 @@ static void _lcd_level_bed_corners_get_next_position() { line_to_z(BED_TRAMMING_Z_HOP); // Select next corner coordinates - _lcd_level_bed_corners_get_next_position(); + _lcd_bed_tramming_get_next_position(); line_to_current_position(manual_feedrate_mm_s.x); line_to_z(BED_TRAMMING_HEIGHT); @@ -318,15 +321,19 @@ static void _lcd_level_bed_corners_get_next_position() { #endif // !BED_TRAMMING_USE_PROBE -static void _lcd_level_bed_corners_homing() { +void _lcd_bed_tramming_homing() { _lcd_draw_homing(); if (!all_axes_homed()) return; + #if ENABLED(BED_TRAMMING_USE_PROBE) + _lcd_test_corners(); - if (corner_probing_done) ui.goto_previous_screen_no_defer(); - TERN_(HAS_LEVELING, set_bed_leveling_enabled(leveling_was_active)); + if (tramming_done) ui.goto_previous_screen_no_defer(); + TERN_(HAS_LEVELING, set_bed_leveling_enabled(menu_leveling_was_active)); endstops.enable_z_probe(false); - #else + + #else // !BED_TRAMMING_USE_PROBE + bed_corner = 0; ui.goto_screen([]{ MenuItem_confirm::select_screen( @@ -334,7 +341,7 @@ static void _lcd_level_bed_corners_homing() { , _lcd_goto_next_corner , []{ line_to_z(BED_TRAMMING_Z_HOP); // Raise Z off the bed when done - TERN_(HAS_LEVELING, set_bed_leveling_enabled(leveling_was_active)); + TERN_(HAS_LEVELING, set_bed_leveling_enabled(menu_leveling_was_active)); ui.goto_previous_screen_no_defer(); } , GET_TEXT_F(TERN(BED_TRAMMING_INCLUDE_CENTER, MSG_LEVEL_BED_NEXT_POINT, MSG_NEXT_CORNER)) @@ -343,10 +350,11 @@ static void _lcd_level_bed_corners_homing() { }); ui.set_selection(true); _lcd_goto_next_corner(); - #endif + + #endif // !BED_TRAMMING_USE_PROBE } -void _lcd_level_bed_corners() { +void _lcd_bed_tramming() { ui.defer_status_screen(); if (!all_axes_trusted()) { set_all_unhomed(); @@ -355,11 +363,11 @@ void _lcd_level_bed_corners() { // Disable leveling so the planner won't mess with us #if HAS_LEVELING - leveling_was_active = planner.leveling_active; + menu_leveling_was_active = planner.leveling_active; set_bed_leveling_enabled(false); #endif - ui.goto_screen(_lcd_level_bed_corners_homing); + ui.goto_screen(_lcd_bed_tramming_homing); } #endif // HAS_MARLINUI_MENU && LCD_BED_TRAMMING diff --git a/Marlin/src/lcd/menu/menu_item.h b/Marlin/src/lcd/menu/menu_item.h index 5cc5f11142..fcf7a9ea30 100644 --- a/Marlin/src/lcd/menu/menu_item.h +++ b/Marlin/src/lcd/menu/menu_item.h @@ -537,7 +537,7 @@ class MenuItem_bool : public MenuEditItemBase { #define YESNO_ITEM_N(N,LABEL, V...) YESNO_ITEM_N_F(N, GET_TEXT_F(LABEL), ##V) #if ENABLED(LCD_BED_TRAMMING) - void _lcd_level_bed_corners(); + void _lcd_bed_tramming(); #endif #if HAS_FAN diff --git a/Marlin/src/lcd/menu/menu_motion.cpp b/Marlin/src/lcd/menu/menu_motion.cpp index 215497c4c9..d5c1a8a38a 100644 --- a/Marlin/src/lcd/menu/menu_motion.cpp +++ b/Marlin/src/lcd/menu/menu_motion.cpp @@ -411,7 +411,7 @@ void menu_motion() { #endif #if ENABLED(LCD_BED_TRAMMING) && DISABLED(LCD_BED_LEVELING) - SUBMENU(MSG_BED_TRAMMING, _lcd_level_bed_corners); + SUBMENU(MSG_BED_TRAMMING, _lcd_bed_tramming); #endif #if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) diff --git a/Marlin/src/lcd/menu/menu_probe_offset.cpp b/Marlin/src/lcd/menu/menu_probe_offset.cpp index c7cbebaade..428052bf2a 100644 --- a/Marlin/src/lcd/menu/menu_probe_offset.cpp +++ b/Marlin/src/lcd/menu/menu_probe_offset.cpp @@ -51,7 +51,7 @@ inline void z_clearance_move() { void set_offset_and_go_back(const_float_t z) { probe.offset.z = z; SET_SOFT_ENDSTOP_LOOSE(false); - TERN_(HAS_LEVELING, set_bed_leveling_enabled(leveling_was_active)); + TERN_(HAS_LEVELING, set_bed_leveling_enabled(menu_leveling_was_active)); ui.goto_previous_screen_no_defer(); } @@ -143,7 +143,7 @@ void goto_probe_offset_wizard() { // Store Bed-Leveling-State and disable #if HAS_LEVELING - leveling_was_active = planner.leveling_active; + menu_leveling_was_active = planner.leveling_active; set_bed_leveling_enabled(false); #endif diff --git a/Marlin/src/lcd/menu/menu_tramming.cpp b/Marlin/src/lcd/menu/menu_tramming_wizard.cpp similarity index 100% rename from Marlin/src/lcd/menu/menu_tramming.cpp rename to Marlin/src/lcd/menu/menu_tramming_wizard.cpp diff --git a/Marlin/src/lcd/menu/menu_x_twist.cpp b/Marlin/src/lcd/menu/menu_x_twist.cpp index a069b427c6..d1850a1eb2 100644 --- a/Marlin/src/lcd/menu/menu_x_twist.cpp +++ b/Marlin/src/lcd/menu/menu_x_twist.cpp @@ -46,7 +46,7 @@ float measured_z, z_offset; void xatc_wizard_done() { if (!ui.wait_for_move) { xatc.print_points(); - set_bed_leveling_enabled(leveling_was_active); + set_bed_leveling_enabled(menu_leveling_was_active); SET_SOFT_ENDSTOP_LOOSE(false); ui.goto_screen(menu_advanced_settings); } @@ -199,7 +199,7 @@ void xatc_wizard_homing() { void xatc_wizard_continue() { // Store Bed-Leveling-State and disable #if HAS_LEVELING - leveling_was_active = planner.leveling_active; + menu_leveling_was_active = planner.leveling_active; set_bed_leveling_enabled(false); #endif diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 7daafd1139..faa3aec03d 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -528,7 +528,7 @@ bool Probe::set_deployed(const bool deploy) { } #endif - const xy_pos_t old_xy = current_position; + const xy_pos_t old_xy = current_position; // Remember location before probe deployment #if ENABLED(PROBE_TRIGGERED_WHEN_STOWED_TEST) @@ -625,7 +625,7 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { // Offset sensorless probing #if HAS_DELTA_SENSORLESS_PROBING - if (probe_triggered) probe.refresh_largest_sensorless_adj(); + if (probe_triggered) refresh_largest_sensorless_adj(); #endif TERN_(HAS_QUIET_PROBING, set_probing_paused(false)); diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index a179eb21d8..9fdbfdf9ce 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -114,7 +114,7 @@ public: } #endif - #else + #else // !IS_KINEMATIC static bool obstacle_check(const_float_t rx, const_float_t ry) { #if ENABLED(AVOID_OBSTACLES) @@ -166,7 +166,7 @@ public: } } - #endif + #endif // !IS_KINEMATIC static void move_z_after_probing() { #ifdef Z_AFTER_PROBING @@ -178,7 +178,7 @@ public: return probe_at_point(pos.x, pos.y, raise_after, verbose_level, probe_relative, sanity_check); } - #else + #else // !HAS_BED_PROBE static constexpr xyz_pos_t offset = xyz_pos_t(NUM_AXIS_ARRAY_1(0)); // See #16767 @@ -186,7 +186,7 @@ public: static bool can_reach(const_float_t rx, const_float_t ry, const bool=true) { return position_is_reachable(rx, ry); } - #endif + #endif // !HAS_BED_PROBE static void move_z_after_homing() { #if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) || defined(Z_AFTER_HOMING) diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.h b/buildroot/share/PlatformIO/scripts/common-dependencies.h index da2d380a82..344669c49b 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.h +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.h @@ -54,7 +54,7 @@ #define HAS_MENU_BACKLASH #endif #if ENABLED(LCD_BED_TRAMMING) - #define HAS_MENU_BED_CORNERS + #define HAS_MENU_BED_TRAMMING #endif #if ENABLED(CANCEL_OBJECTS) #define HAS_MENU_CANCELOBJECT @@ -99,7 +99,7 @@ #define HAS_MENU_TOUCH_SCREEN #endif #if ENABLED(ASSISTED_TRAMMING_WIZARD) - #define HAS_MENU_TRAMMING + #define HAS_MENU_TRAMMING_WIZARD #endif #if ENABLED(AUTO_BED_LEVELING_UBL) #define HAS_MENU_UBL diff --git a/buildroot/tests/BIGTREE_GTR_V1_0 b/buildroot/tests/BIGTREE_GTR_V1_0 index 09e36d6475..e0769b6a10 100755 --- a/buildroot/tests/BIGTREE_GTR_V1_0 +++ b/buildroot/tests/BIGTREE_GTR_V1_0 @@ -16,7 +16,8 @@ opt_set E0_AUTO_FAN_PIN PC10 E1_AUTO_FAN_PIN PC11 E2_AUTO_FAN_PIN PC12 NEOPIXEL_ FIL_RUNOUT6_PIN 8 FIL_RUNOUT7_PIN 9 FIL_RUNOUT8_PIN 10 FIL_RUNOUT4_STATE HIGH FIL_RUNOUT8_STATE HIGH \ FILAMENT_RUNOUT_SCRIPT '"M600 T%c"' opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER BLTOUCH NEOPIXEL_LED Z_SAFE_HOMING NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE \ - FILAMENT_RUNOUT_SENSOR FIL_RUNOUT4_PULLUP FIL_RUNOUT8_PULLUP FILAMENT_CHANGE_RESUME_ON_INSERT PAUSE_REHEAT_FAST_RESUME + FILAMENT_RUNOUT_SENSOR FIL_RUNOUT4_PULLUP FIL_RUNOUT8_PULLUP FILAMENT_CHANGE_RESUME_ON_INSERT PAUSE_REHEAT_FAST_RESUME \ + LCD_BED_TRAMMING BED_TRAMMING_USE_PROBE exec_test $1 $2 "BigTreeTech GTR | 8 Extruders | Auto-Fan | Mixed TMC Drivers | Runout Sensors w/ distinct states" "$3" restore_configs diff --git a/ini/features.ini b/ini/features.ini index c9c7528658..bfaca56ab3 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -60,8 +60,8 @@ MARLIN_INVADERS = src_filter=+ MARLIN_SNAKE = src_filter=+ HAS_MENU_BACKLASH = src_filter=+ -HAS_MENU_BED_CORNERS = src_filter=+ LCD_BED_LEVELING = src_filter=+ +HAS_MENU_BED_TRAMMING = src_filter=+ HAS_MENU_CANCELOBJECT = src_filter=+ HAS_MENU_DELTA_CALIBRATE = src_filter=+ HAS_MENU_FILAMENT = src_filter=+ @@ -78,7 +78,7 @@ HAS_MENU_CUTTER = src_filter=+ HAS_MENU_TMC = src_filter=+ HAS_MENU_TOUCH_SCREEN = src_filter=+ -HAS_MENU_TRAMMING = src_filter=+ +HAS_MENU_TRAMMING_WIZARD = src_filter=+ HAS_MENU_UBL = src_filter=+ ANYCUBIC_LCD_CHIRON = src_filter=+ ANYCUBIC_LCD_I3MEGA = src_filter=+ diff --git a/platformio.ini b/platformio.ini index 991c17b2ff..d31f23abec 100644 --- a/platformio.ini +++ b/platformio.ini @@ -60,8 +60,8 @@ default_src_filter = + - - + - - - - - - - - - + - - - - @@ -77,7 +77,7 @@ default_src_filter = + - - + - - - - - + - - - - From 65b97438fa92743ac5b2659ae55013a4c413da39 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 15 Mar 2023 19:13:09 -0500 Subject: [PATCH 126/659] =?UTF-8?q?=F0=9F=A9=B9=20Fan=20Menu=20/=20Status?= =?UTF-8?q?=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #21888 --- Marlin/src/lcd/e3v2/marlinui/ui_common.cpp | 2 +- .../lcd/e3v2/marlinui/ui_status_480x272.cpp | 160 +++++++----------- Marlin/src/lcd/language/language_en.h | 8 - Marlin/src/lcd/marlinui.cpp | 1 - Marlin/src/lcd/marlinui.h | 1 - Marlin/src/lcd/menu/menu_item.h | 8 + Marlin/src/lcd/menu/menu_tune.cpp | 14 +- Marlin/src/lcd/tft/touch.cpp | 2 +- 8 files changed, 80 insertions(+), 116 deletions(-) diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp index 12d16887d1..778bed6335 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp @@ -195,7 +195,7 @@ void MarlinUI::draw_status_message(const bool blink) { } const bool hash_changed = hash != old_hash; old_hash = hash; - return hash_changed || !ui.did_first_redraw; + return hash_changed || !did_first_redraw; }; #if ENABLED(STATUS_MESSAGE_SCROLLING) diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp index 205913ca69..7ac0e3fcb4 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp @@ -61,72 +61,54 @@ #define STATUS_CHR_WIDTH 14 #define STATUS_CHR_HEIGHT 28 +bool old_is_printing; + // // Before homing, blink '123' <-> '???'. // Homed but unknown... '123' <-> ' '. // Homed and known, display constantly. // -FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, const uint16_t x, const uint16_t y) { +void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, const uint16_t x, const uint16_t y) { + const bool x_redraw = !ui.did_first_redraw || old_is_printing != print_job_timer.isRunning(); + if (x_redraw) { + dwin_string.set('X' + axis); + DWIN_Draw_String(true, font16x32, Color_IconBlue, Color_Bg_Black, + #if ENABLED(DWIN_MARLINUI_PORTRAIT) + x + (utf8_strlen(value) * 14 - 14) / 2, y + 2 + #else + x, y + #endif + , S(dwin_string.string()) + ); + } - #if ENABLED(DWIN_MARLINUI_PORTRAIT) + dwin_string.set(); + if (blink) + dwin_string.add(value); + else if (!TEST(axes_homed, axis)) + while (const char c = *value++) dwin_string.add(c <= '.' ? c : '?'); + else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !TEST(axes_trusted, axis)) + dwin_string.add(TERN1(DWIN_MARLINUI_PORTRAIT, axis == Z_AXIS) ? PSTR(" ") : PSTR(" ")); + else + dwin_string.add(value); - uint8_t vallen = utf8_strlen(value); - if (!ui.did_first_redraw) { - dwin_string.set('X' + axis); - DWIN_Draw_String(true, font16x32, Color_IconBlue, Color_Bg_Black, x + (vallen * 14 - 14) / 2, y + 2, S(dwin_string.string())); - } + // For E_TOTAL there may be some characters to cover up + if (TERN0(LCD_SHOW_E_TOTAL, x_redraw && axis == X_AXIS)) + dwin_string.add(F(" ")); - dwin_string.set(); - if (blink) - dwin_string.add(value); - else if (!TEST(axes_homed, axis)) - while (const char c = *value++) dwin_string.add(c <= '.' ? c : '?'); - else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !TEST(axes_trusted, axis)) - dwin_string.add(TERN1(DWIN_MARLINUI_PORTRAIT, axis == Z_AXIS) ? PSTR(" ") : PSTR(" ")); - else - dwin_string.add(value); - - // For E_TOTAL there may be some characters to cover up - if (BOTH(DWIN_MARLINUI_PORTRAIT, LCD_SHOW_E_TOTAL) && axis == X_AXIS) - dwin_string.add(F(" ")); - - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x, y + 32, S(dwin_string.string())); - - #else // !DWIN_MARLINUI_PORTRAIT - - if (!ui.did_first_redraw || ui.old_is_printing != print_job_timer.isRunning()) { - dwin_string.set('X' + axis); - DWIN_Draw_String(true, font16x32, Color_IconBlue, Color_Bg_Black, x, y, S(dwin_string.string())); - } - - dwin_string.set(); - if (blink) - dwin_string.add(value); - else { - if (!TEST(axes_homed, axis)) - while (const char c = *value++) dwin_string.add(c <= '.' ? c : '?'); - else { - #if NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) - if (!TEST(axes_trusted, axis)) - dwin_string.add(TERN1(DWIN_MARLINUI_PORTRAIT, axis == Z_AXIS) ? PSTR(" ") : PSTR(" ")); - else - #endif - dwin_string.add(value); - } - } - - // For E_TOTAL there may be some characters to cover up - if (ENABLED(LCD_SHOW_E_TOTAL) && (!ui.did_first_redraw || ui.old_is_printing != print_job_timer.isRunning()) && axis == X_AXIS) - dwin_string.add(F(" ")); - - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x + 32, y + 4, S(dwin_string.string())); - - #endif // !DWIN_MARLINUI_PORTRAIT + DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, + #if ENABLED(DWIN_MARLINUI_PORTRAIT) + x, y + 32 + #else + x + 32, y + 4 + #endif + , S(dwin_string.string()) + ); } #if ENABLED(LCD_SHOW_E_TOTAL) - FORCE_INLINE void _draw_e_value(const_float_t value, const uint16_t x, const uint16_t y) { + void _draw_e_value(const_float_t value, const uint16_t x, const uint16_t y) { const uint8_t scale = value >= 100000.0f ? 10 : 1; // show cm after 99,999mm #if ENABLED(DWIN_MARLINUI_PORTRAIT) @@ -207,72 +189,56 @@ FORCE_INLINE void _draw_heater_status(const heater_id_t heater, const uint16_t x #endif #endif - #if HAS_HOTEND && HAS_HEATED_BED - float tc, tt; - bool c_draw, t_draw, i_draw, ta; - const bool isBed = heater < 0; - if (isBed) { + celsius_float_t tc = 0, tt = 0; + bool isBed = (DISABLED(HAS_HOTEND) && ENABLED(HAS_HEATED_BED)) || (BOTH(HAS_HOTEND, HAS_HEATED_BED) && heater < 0), + ta = false, c_draw, t_draw, i_draw; + c_draw = t_draw = i_draw = !ui.did_first_redraw; + if (isBed) { + #if HAS_HEATED_BED tc = thermalManager.degBed(); tt = thermalManager.degTargetBed(); ta = thermalManager.isHeatingBed(); - c_draw = tc != old_bed_temp; - t_draw = tt != old_bed_target; - i_draw = ta != old_bed_on; + c_draw |= tc != old_bed_temp; + t_draw |= tt != old_bed_target; + i_draw |= ta != old_bed_on; old_bed_temp = tc; old_bed_target = tt; old_bed_on = ta; - } - else { + #if HAS_LEVELING + i_draw |= planner.leveling_active != old_leveling_on; + old_leveling_on = planner.leveling_active; + #endif + #endif + } + else { + #if HAS_HOTEND tc = thermalManager.degHotend(heater); tt = thermalManager.degTargetHotend(heater); ta = thermalManager.isHeatingHotend(heater); - c_draw = tc != old_temp[heater]; - t_draw = tt != old_target[heater]; - i_draw = ta != old_on[heater]; + c_draw |= tc != old_temp[heater]; + t_draw |= tt != old_target[heater]; + i_draw |= ta != old_on[heater]; old_temp[heater] = tc; old_target[heater] = tt; old_on[heater] = ta; - } - #elif HAS_HOTEND - constexpr bool isBed = false; - const float tc = thermalManager.degHotend(heater), tt = thermalManager.degTargetHotend(heater); - const uint8_t ta = thermalManager.isHeatingHotend(heater); - bool c_draw = tc != old_temp[heater], t_draw = tt != old_target[heater], i_draw = ta != old_on[heater]; - old_temp[heater] = tc; old_target[heater] = tt; old_on[heater] = ta; - #elif HAS_HEATED_BED - constexpr bool isBed = true; - const float tc = thermalManager.degBed(), tt = thermalManager.degTargetBed(); - const uint8_t ta = thermalManager.isHeatingBed(); - bool c_draw = tc != old_bed_temp, t_draw = tt != old_bed_target, i_draw = ta != old_bed_on; - old_bed_temp = tc; old_bed_target = tt; old_bed_on = ta; - #else - bool c_draw = false, t_draw = false, i_draw = false; - constexpr float tc = 0, tt = 0; - constexpr uint8_t ta = 0; - #endif - - #if HAS_HEATED_BED && HAS_LEVELING - if (isBed) { - i_draw |= (planner.leveling_active != old_leveling_on); - old_leveling_on = planner.leveling_active; - } - #endif + #endif + } // Draw target temperature, if needed - if (!ui.did_first_redraw || t_draw) { + if (t_draw) { dwin_string.set(i16tostr3rj(tt + 0.5)); dwin_string.add(LCD_STR_DEGREE); DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x, y, S(dwin_string.string())); } // Draw heater icon with on / off / leveled states - if (!ui.did_first_redraw || i_draw) { + if (i_draw) { const uint8_t ico = isBed ? (TERN0(HAS_LEVELING, planner.leveling_active) ? ICON_BedLevelOff : ICON_BedOff) : ICON_HotendOff; DWIN_ICON_Show(ICON, ico + ta, x, y + STATUS_CHR_HEIGHT + 2); } // Draw current temperature, if needed - if (!ui.did_first_redraw || c_draw) { + if (c_draw) { dwin_string.set(i16tostr3rj(tc + 0.5)); dwin_string.add(LCD_STR_DEGREE); DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x, y + 70, S(dwin_string.string())); @@ -414,7 +380,7 @@ void MarlinUI::draw_status_screen() { } DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, 378, 170, S(dwin_string.string())); } - else if (!ui.did_first_redraw || ui.old_is_printing != print_job_timer.isRunning()) { + else if (!ui.did_first_redraw || old_is_printing != print_job_timer.isRunning()) { dwin_string.set(F(" ")); DWIN_Draw_String(true, font14x28, Color_IconBlue, Color_Bg_Black, 336, 170, S(dwin_string.string())); } @@ -470,7 +436,7 @@ void MarlinUI::draw_status_screen() { draw_status_message(blink); ui.did_first_redraw = true; - ui.old_is_printing = print_job_timer.isRunning(); + old_is_printing = print_job_timer.isRunning(); } #endif // IS_DWIN_MARLINUI diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 5012f8c496..55f426017c 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -908,11 +908,3 @@ namespace Language_en { LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Filament runout E%d"); } - -#if FAN_COUNT == 1 - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED -#else - #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED_N - #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED_N -#endif diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index d3f01e6d23..88cdb99076 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -351,7 +351,6 @@ void MarlinUI::init() { #if IS_DWIN_MARLINUI bool MarlinUI::did_first_redraw; - bool MarlinUI::old_is_printing; #endif #if ENABLED(SDSUPPORT) diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index fa18878c1b..9d6d235e96 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -503,7 +503,6 @@ public: #if IS_DWIN_MARLINUI static bool did_first_redraw; - static bool old_is_printing; #endif #if EITHER(BABYSTEP_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) diff --git a/Marlin/src/lcd/menu/menu_item.h b/Marlin/src/lcd/menu/menu_item.h index fcf7a9ea30..3186852002 100644 --- a/Marlin/src/lcd/menu/menu_item.h +++ b/Marlin/src/lcd/menu/menu_item.h @@ -555,6 +555,14 @@ class MenuItem_bool : public MenuEditItemBase { #define EDIT_EXTRA_FAN_SPEED(...) #endif + #if FAN_COUNT == 1 + #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED + #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED + #else + #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED_N + #define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED_N + #endif + #define _FAN_EDIT_ITEMS(F,L) do{ \ editable.uint8 = thermalManager.fan_speed[F]; \ EDIT_ITEM_FAST_N(percent, F, MSG_##L, &editable.uint8, 0, 255, on_fan_update); \ diff --git a/Marlin/src/lcd/menu/menu_tune.cpp b/Marlin/src/lcd/menu/menu_tune.cpp index 8c4b2b1cfc..9247607269 100644 --- a/Marlin/src/lcd/menu/menu_tune.cpp +++ b/Marlin/src/lcd/menu/menu_tune.cpp @@ -156,37 +156,37 @@ void menu_tune() { #if HAS_FAN0 _FAN_EDIT_ITEMS(0,FIRST_FAN_SPEED); #endif - #if HAS_FAN1 + #if HAS_FAN1 && REDUNDANT_PART_COOLING_FAN != 1 FAN_EDIT_ITEMS(1); #elif SNFAN(1) singlenozzle_item(1); #endif - #if HAS_FAN2 + #if HAS_FAN2 && REDUNDANT_PART_COOLING_FAN != 2 FAN_EDIT_ITEMS(2); #elif SNFAN(2) singlenozzle_item(2); #endif - #if HAS_FAN3 + #if HAS_FAN3 && REDUNDANT_PART_COOLING_FAN != 3 FAN_EDIT_ITEMS(3); #elif SNFAN(3) singlenozzle_item(3); #endif - #if HAS_FAN4 + #if HAS_FAN4 && REDUNDANT_PART_COOLING_FAN != 4 FAN_EDIT_ITEMS(4); #elif SNFAN(4) singlenozzle_item(4); #endif - #if HAS_FAN5 + #if HAS_FAN5 && REDUNDANT_PART_COOLING_FAN != 5 FAN_EDIT_ITEMS(5); #elif SNFAN(5) singlenozzle_item(5); #endif - #if HAS_FAN6 + #if HAS_FAN6 && REDUNDANT_PART_COOLING_FAN != 6 FAN_EDIT_ITEMS(6); #elif SNFAN(6) singlenozzle_item(6); #endif - #if HAS_FAN7 + #if HAS_FAN7 && REDUNDANT_PART_COOLING_FAN != 7 FAN_EDIT_ITEMS(7); #elif SNFAN(7) singlenozzle_item(7); diff --git a/Marlin/src/lcd/tft/touch.cpp b/Marlin/src/lcd/tft/touch.cpp index cc800cddc3..b73f67e744 100644 --- a/Marlin/src/lcd/tft/touch.cpp +++ b/Marlin/src/lcd/tft/touch.cpp @@ -27,7 +27,7 @@ #include "touch.h" #include "../marlinui.h" // for ui methods -#include "../menu/menu_item.h" // for touch_screen_calibration +#include "../menu/menu_item.h" // for MSG_FIRST_FAN_SPEED #include "../../module/temperature.h" #include "../../module/planner.h" From 0a00662b54dbfbe913feb676ac35ad1aea472759 Mon Sep 17 00:00:00 2001 From: dwzg <50058606+dwzg@users.noreply.github.com> Date: Thu, 16 Mar 2023 01:15:54 +0100 Subject: [PATCH 127/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20DWIN=20MarlinUI=20?= =?UTF-8?q?Fan/E/XY=20(#25502)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp index 7ac0e3fcb4..d0a04a3c4b 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp @@ -110,10 +110,11 @@ void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, void _draw_e_value(const_float_t value, const uint16_t x, const uint16_t y) { const uint8_t scale = value >= 100000.0f ? 10 : 1; // show cm after 99,999mm + const bool e_redraw = !ui.did_first_redraw || old_is_printing != print_job_timer.isRunning(); #if ENABLED(DWIN_MARLINUI_PORTRAIT) - if (!ui.did_first_redraw) { + if (e_redraw) { // Extra spaces to erase previous value dwin_string.set(F("E ")); DWIN_Draw_String(true, font16x32, Color_IconBlue, Color_Bg_Black, x + (4 * 14 / 2) - 7, y + 2, S(dwin_string.string())); @@ -127,7 +128,7 @@ void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, #else // !DWIN_MARLINUI_PORTRAIT - if (!ui.did_first_redraw || ui.old_is_printing != print_job_timer.isRunning()) { + if (e_redraw) { dwin_string.set(F("E ")); DWIN_Draw_String(true, font16x32, Color_IconBlue, Color_Bg_Black, x, y, S(dwin_string.string())); } @@ -147,11 +148,10 @@ void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, // FORCE_INLINE void _draw_fan_status(const uint16_t x, const uint16_t y) { const uint16_t fanx = (4 * STATUS_CHR_WIDTH - STATUS_FAN_WIDTH) / 2; - const uint8_t fan_pct = thermalManager.scaledFanSpeedPercent(0); - const bool fan_on = !!fan_pct; + const bool fan_on = !!thermalManager.scaledFanSpeed(0); if (fan_on) { DWIN_ICON_Animation(0, fan_on, ICON, ICON_Fan0, ICON_Fan3, x + fanx, y, 25); - dwin_string.set(i8tostr3rj(fan_pct)); + dwin_string.set(i8tostr3rj(thermalManager.scaledFanSpeedPercent(0))); dwin_string.add('%'); DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x, y + STATUS_FAN_HEIGHT, S(dwin_string.string())); } From 32c7e24b4bce9fb42b4523cf35df3c51444ace71 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 16 Mar 2023 00:52:51 +0000 Subject: [PATCH 128/659] [cron] Bump distribution date (2023-03-16) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index c993bd48b9..922cdfeeb4 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-15" +//#define STRING_DISTRIBUTION_DATE "2023-03-16" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 5f78729bd4..a2c451f900 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-15" + #define STRING_DISTRIBUTION_DATE "2023-03-16" #endif /** From 41b3409ba86d5f6e0826cdf577253a801b9be1c1 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Thu, 16 Mar 2023 18:42:52 +1300 Subject: [PATCH 129/659] =?UTF-8?q?=F0=9F=94=A7=20Safer=20default=20for=20?= =?UTF-8?q?Z=5FMIN=5FPROBE=5FPIN=20override=20(#25524)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration.h | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index b57c66a9a8..40f4fe4cbd 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1345,19 +1345,17 @@ /** * Z_MIN_PROBE_PIN * - * Define this pin if the probe is not connected to Z_MIN_PIN. - * If not defined the default pin for the selected MOTHERBOARD - * will be used. Most of the time the default is what you want. + * Override this pin only if the probe cannot be connected to + * the default Z_MIN_PROBE_PIN for the selected MOTHERBOARD. * * - The simplest option is to use a free endstop connector. * - Use 5V for powered (usually inductive) sensors. * - * - RAMPS 1.3/1.4 boards may use the 5V, GND, and Aux4->D32 pin: - * - For simple switches connect... - * - normally-closed switches to GND and D32. - * - normally-open switches to 5V and D32. + * - For simple switches... + * - Normally-closed (NC) also connect to GND. + * - Normally-open (NO) also connect to 5V. */ -//#define Z_MIN_PROBE_PIN 32 // Pin 32 is the RAMPS default +//#define Z_MIN_PROBE_PIN -1 /** * Probe Type From 51d3eabf463f28411670a543a7bd7418aad46fe4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 15 Mar 2023 22:16:53 -0500 Subject: [PATCH 130/659] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Refactor=20PROBE?= =?UTF-8?q?=5FPT=5F[123]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 11 ++++------- Marlin/src/inc/Conditionals_post.h | 8 ++------ Marlin/src/inc/SanityCheck.h | 8 ++++++++ Marlin/src/module/probe.h | 10 +++++----- buildroot/tests/mega2560 | 3 ++- 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 6ef72d9f04..35c43c7f2c 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2152,13 +2152,10 @@ * Points to probe for all 3-point Leveling procedures. * Override if the automatically selected points are inadequate. */ -#if EITHER(AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_UBL) - //#define PROBE_PT_1_X 15 - //#define PROBE_PT_1_Y 180 - //#define PROBE_PT_2_X 15 - //#define PROBE_PT_2_Y 20 - //#define PROBE_PT_3_X 170 - //#define PROBE_PT_3_Y 20 +#if NEEDS_THREE_PROBE_POINTS + //#define PROBE_PT_1 { 15, 180 } // (mm) { x, y } + //#define PROBE_PT_2 { 15, 20 } + //#define PROBE_PT_3 { 170, 20 } #endif /** diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 249aa5c30e..9305e86594 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -3188,13 +3188,9 @@ #undef MESH_MAX_Y #endif -#define _POINT_COUNT (defined(PROBE_PT_1_X) + defined(PROBE_PT_2_X) + defined(PROBE_PT_3_X) + defined(PROBE_PT_1_Y) + defined(PROBE_PT_2_Y) + defined(PROBE_PT_3_Y)) -#if _POINT_COUNT == 6 - #define HAS_FIXED_3POINT 1 -#elif _POINT_COUNT > 0 - #error "For 3-Point Leveling all XY points must be defined (or none for the defaults)." +#if NEEDS_THREE_PROBE_POINTS && defined(PROBE_PT_1) + #define HAS_FIXED_3POINT 1 // Points are defined for ABL/UBL. Else calculated in probe.get_three_points. #endif -#undef _POINT_COUNT /** * Buzzer/Speaker diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index a03a489a01..a795bfb93f 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -676,6 +676,8 @@ #error "DISABLE_INACTIVE_E is now set with DISABLE_INACTIVE_EXTRUDER." #elif defined(INVERT_X_STEP_PIN) || defined(INVERT_Y_STEP_PIN) || defined(INVERT_Z_STEP_PIN) || defined(INVERT_I_STEP_PIN) || defined(INVERT_J_STEP_PIN) || defined(INVERT_K_STEP_PIN) || defined(INVERT_U_STEP_PIN) || defined(INVERT_V_STEP_PIN) || defined(INVERT_W_STEP_PIN) || defined(INVERT_E_STEP_PIN) #error "INVERT_*_STEP_PIN true is now STEP_STATE_* LOW, and INVERT_*_STEP_PIN false is now STEP_STATE_* HIGH." +#elif defined(PROBE_PT_1_X) || defined(PROBE_PT_1_Y) || defined(PROBE_PT_2_X) || defined(PROBE_PT_2_Y) || defined(PROBE_PT_3_X) || defined(PROBE_PT_3_Y) + #error "PROBE_PT_[123]_[XY] is now defined using PROBE_PT_[123] with an array { x, y }." #endif // L64xx stepper drivers have been removed @@ -2102,6 +2104,12 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #endif +#define _POINT_COUNT (defined(PROBE_PT_1) + defined(PROBE_PT_2) + defined(PROBE_PT_3)) +#if _POINT_COUNT != 0 && _POINT_COUNT != 3 + #error "For 3-Point Procedures all XY points must be defined (or none for the defaults)." +#endif +#undef _POINT_COUNT + #if ALL(HAS_LEVELING, RESTORE_LEVELING_AFTER_G28, ENABLE_LEVELING_AFTER_G28) #error "Only enable RESTORE_LEVELING_AFTER_G28 or ENABLE_LEVELING_AFTER_G28, but not both." #endif diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 9fdbfdf9ce..42b6c4fe41 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -294,12 +294,12 @@ public: template static void get_three_points(T points[3]) { #if HAS_FIXED_3POINT - #define VALIDATE_PROBE_PT(N) static_assert(Probe::build_time::can_reach(xy_pos_t{PROBE_PT_##N##_X, PROBE_PT_##N##_Y}), \ - "PROBE_PT_" STRINGIFY(N) "_(X|Y) is unreachable using default NOZZLE_TO_PROBE_OFFSET and PROBING_MARGIN"); + #define VALIDATE_PROBE_PT(N) static_assert(Probe::build_time::can_reach(xy_pos_t(PROBE_PT_##N)), \ + "PROBE_PT_" STRINGIFY(N) " is unreachable using default NOZZLE_TO_PROBE_OFFSET and PROBING_MARGIN."); VALIDATE_PROBE_PT(1); VALIDATE_PROBE_PT(2); VALIDATE_PROBE_PT(3); - points[0] = xy_float_t({ PROBE_PT_1_X, PROBE_PT_1_Y }); - points[1] = xy_float_t({ PROBE_PT_2_X, PROBE_PT_2_Y }); - points[2] = xy_float_t({ PROBE_PT_3_X, PROBE_PT_3_Y }); + points[0] = xy_float_t(PROBE_PT_1); + points[1] = xy_float_t(PROBE_PT_2); + points[2] = xy_float_t(PROBE_PT_3); #else #if IS_KINEMATIC constexpr float SIN0 = 0.0, SIN120 = 0.866025, SIN240 = -0.866025, diff --git a/buildroot/tests/mega2560 b/buildroot/tests/mega2560 index bd855f1df1..363c386a4e 100755 --- a/buildroot/tests/mega2560 +++ b/buildroot/tests/mega2560 @@ -62,7 +62,8 @@ opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO NUM_SERVOS 1 \ NUM_RUNOUT_SENSORS 5 FIL_RUNOUT2_PIN 44 FIL_RUNOUT3_PIN 45 FIL_RUNOUT4_PIN 46 FIL_RUNOUT5_PIN 47 \ FIL_RUNOUT3_STATE HIGH FILAMENT_RUNOUT_SCRIPT '"M600 T%c"' opt_enable VIKI2 BOOT_MARLIN_LOGO_ANIMATED SDSUPPORT AUTO_REPORT_SD_STATUS \ - Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE \ + Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE \ + AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE PROBE_PT_1 PROBE_PT_2 PROBE_PT_3 \ EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL AUTO_REPORT_POSITION \ NO_VOLUMETRICS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES AUTOTEMP G38_PROBE_TARGET JOYSTICK \ DIRECT_STEPPING DETECT_BROKEN_ENDSTOP \ From 507c122fcff686bc83d6c8b06bc05f3bf01bcc73 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 15 Mar 2023 22:21:03 -0500 Subject: [PATCH 131/659] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Refactor=20UBL=20'?= =?UTF-8?q?G29=20J'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 168 ++++++++------------ 1 file changed, 65 insertions(+), 103 deletions(-) diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index 02efb3e065..e504379848 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -1479,82 +1479,33 @@ void unified_bed_leveling::smart_fill_mesh() { void unified_bed_leveling::tilt_mesh_based_on_probed_grid(const bool do_3_pt_leveling) { - #ifdef G29J_MESH_TILT_MARGIN - const float x_min = _MAX(probe.min_x() + (G29J_MESH_TILT_MARGIN), X_MIN_POS), - x_max = _MIN(probe.max_x() - (G29J_MESH_TILT_MARGIN), X_MAX_POS), - y_min = _MAX(probe.min_y() + (G29J_MESH_TILT_MARGIN), Y_MIN_POS), - y_max = _MIN(probe.max_y() - (G29J_MESH_TILT_MARGIN), Y_MAX_POS); - #else - const float x_min = probe.min_x(), x_max = probe.max_x(), - y_min = probe.min_y(), y_max = probe.max_y(); - #endif - const float dx = (x_max - x_min) / (param.J_grid_size - 1), - dy = (y_max - y_min) / (param.J_grid_size - 1); - - xy_float_t points[3]; - probe.get_three_points(points); - float measured_z; bool abort_flag = false; - #if ENABLED(VALIDATE_MESH_TILT) - float z1, z2, z3; // Needed for algorithm validation below - #endif - struct linear_fit_data lsf_results; incremental_LSF_reset(&lsf_results); if (do_3_pt_leveling) { - SERIAL_ECHOLNPGM("Tilting mesh (1/3)"); - TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " 1/3"), GET_TEXT(MSG_LCD_TILTING_MESH))); + xy_float_t points[3]; + probe.get_three_points(points); - measured_z = probe.probe_at_point(points[0], PROBE_PT_RAISE, param.V_verbosity); - if (isnan(measured_z)) - abort_flag = true; - else { - measured_z -= get_z_correction(points[0]); - TERN_(VALIDATE_MESH_TILT, z1 = measured_z); - if (param.V_verbosity > 3) { - serial_spaces(16); - SERIAL_ECHOLNPGM("Corrected_Z=", measured_z); - } - incremental_LSF(&lsf_results, points[0], measured_z); - } + #if ENABLED(VALIDATE_MESH_TILT) + float gotz[3]; // Used for algorithm validation below + #endif - if (!abort_flag) { - SERIAL_ECHOLNPGM("Tilting mesh (2/3)"); - TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " 2/3"), GET_TEXT(MSG_LCD_TILTING_MESH))); + LOOP_L_N(i, 3) { + SERIAL_ECHOLNPGM("Tilting mesh (", i + 1, "/3)"); + TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " %i/3"), i + 1, GET_TEXT(MSG_LCD_TILTING_MESH))); - measured_z = probe.probe_at_point(points[1], PROBE_PT_RAISE, param.V_verbosity); - TERN_(VALIDATE_MESH_TILT, z2 = measured_z); - if (isnan(measured_z)) - abort_flag = true; - else { - measured_z -= get_z_correction(points[1]); - if (param.V_verbosity > 3) { - serial_spaces(16); - SERIAL_ECHOLNPGM("Corrected_Z=", measured_z); - } - incremental_LSF(&lsf_results, points[1], measured_z); - } - } + measured_z = probe.probe_at_point(points[i], i < 2 ? PROBE_PT_RAISE : PROBE_PT_LAST_STOW, param.V_verbosity); + if ((abort_flag = isnan(measured_z))) break; - if (!abort_flag) { - SERIAL_ECHOLNPGM("Tilting mesh (3/3)"); - TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " 3/3"), GET_TEXT(MSG_LCD_TILTING_MESH))); + measured_z -= get_z_correction(points[i]); + TERN_(VALIDATE_MESH_TILT, gotz[i] = measured_z); - measured_z = probe.probe_at_point(points[2], PROBE_PT_LAST_STOW, param.V_verbosity); - TERN_(VALIDATE_MESH_TILT, z3 = measured_z); - if (isnan(measured_z)) - abort_flag = true; - else { - measured_z -= get_z_correction(points[2]); - if (param.V_verbosity > 3) { - serial_spaces(16); - SERIAL_ECHOLNPGM("Corrected_Z=", measured_z); - } - incremental_LSF(&lsf_results, points[2], measured_z); - } + if (param.V_verbosity > 3) { serial_spaces(16); SERIAL_ECHOLNPGM("Corrected_Z=", measured_z); } + + incremental_LSF(&lsf_results, points[i], measured_z); } probe.stow(); @@ -1567,54 +1518,62 @@ void unified_bed_leveling::smart_fill_mesh() { } else { // !do_3_pt_leveling + #ifdef G29J_MESH_TILT_MARGIN + const float x_min = _MAX(probe.min_x() + (G29J_MESH_TILT_MARGIN), X_MIN_POS), + x_max = _MIN(probe.max_x() - (G29J_MESH_TILT_MARGIN), X_MAX_POS), + y_min = _MAX(probe.min_y() + (G29J_MESH_TILT_MARGIN), Y_MIN_POS), + y_max = _MIN(probe.max_y() - (G29J_MESH_TILT_MARGIN), Y_MAX_POS); + #else + const float x_min = probe.min_x(), x_max = probe.max_x(), + y_min = probe.min_y(), y_max = probe.max_y(); + #endif + const float dx = (x_max - x_min) / (param.J_grid_size - 1), + dy = (y_max - y_min) / (param.J_grid_size - 1); + bool zig_zag = false; const uint16_t total_points = sq(param.J_grid_size); uint16_t point_num = 1; - xy_pos_t rpos; LOOP_L_N(ix, param.J_grid_size) { + xy_pos_t rpos; rpos.x = x_min + ix * dx; LOOP_L_N(iy, param.J_grid_size) { rpos.y = y_min + dy * (zig_zag ? param.J_grid_size - 1 - iy : iy); - if (!abort_flag) { - SERIAL_ECHOLNPGM("Tilting mesh point ", point_num, "/", total_points, "\n"); - TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " %i/%i"), GET_TEXT(MSG_LCD_TILTING_MESH), point_num, total_points)); + SERIAL_ECHOLNPGM("Tilting mesh point ", point_num, "/", total_points, "\n"); + TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " %i/%i"), GET_TEXT(MSG_LCD_TILTING_MESH), point_num, total_points)); - measured_z = probe.probe_at_point(rpos, parser.seen_test('E') ? PROBE_PT_STOW : PROBE_PT_RAISE, param.V_verbosity); // TODO: Needs error handling + measured_z = probe.probe_at_point(rpos, parser.seen_test('E') ? PROBE_PT_STOW : PROBE_PT_RAISE, param.V_verbosity); // TODO: Needs error handling - abort_flag = isnan(measured_z); + if ((abort_flag = isnan(measured_z))) break; - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - const xy_pos_t lpos = rpos.asLogical(); - DEBUG_CHAR('('); - DEBUG_ECHO_F(rpos.x, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(rpos.y, 7); - DEBUG_ECHOPAIR_F(") logical: (", lpos.x, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(lpos.y, 7); - DEBUG_ECHOPAIR_F(") measured: ", measured_z, 7); - DEBUG_ECHOPAIR_F(" correction: ", get_z_correction(rpos), 7); - } - #endif + const float zcorr = get_z_correction(rpos); - measured_z -= get_z_correction(rpos) /* + probe.offset.z */ ; - - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR_F(" final >>>---> ", measured_z, 7); - - if (param.V_verbosity > 3) { - serial_spaces(16); - SERIAL_ECHOLNPGM("Corrected_Z=", measured_z); + #if ENABLED(DEBUG_LEVELING_FEATURE) + if (DEBUGGING(LEVELING)) { + const xy_pos_t lpos = rpos.asLogical(); + DEBUG_CHAR('('); DEBUG_ECHO_F(rpos.x, 7); DEBUG_CHAR(','); DEBUG_ECHO_F(rpos.y, 7); + DEBUG_ECHOPAIR_F(") logical: (", lpos.x, 7); DEBUG_CHAR(','); DEBUG_ECHO_F(lpos.y, 7); + DEBUG_ECHOPAIR_F(") measured: ", measured_z, 7); + DEBUG_ECHOPAIR_F(" correction: ", zcorr, 7); } - incremental_LSF(&lsf_results, rpos, measured_z); + #endif + + measured_z -= zcorr; + + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR_F(" final >>>---> ", measured_z, 7); + + if (param.V_verbosity > 3) { + serial_spaces(16); + SERIAL_ECHOLNPGM("Corrected_Z=", measured_z); } + incremental_LSF(&lsf_results, rpos, measured_z); point_num++; } + if (abort_flag) break; zig_zag ^= true; } } @@ -1696,20 +1655,23 @@ void unified_bed_leveling::smart_fill_mesh() { auto normed = [&](const xy_pos_t &pos, const_float_t zadd) { return normal.x * pos.x + normal.y * pos.y + zadd; }; - auto debug_pt = [](FSTR_P const pre, const xy_pos_t &pos, const_float_t zadd) { - d_from(); SERIAL_ECHOF(pre); + auto debug_pt = [](const int num, const xy_pos_t &pos, const_float_t zadd) { + d_from(); DEBUG_ECHOPGM("Point ", num, ":"); DEBUG_ECHO_F(normed(pos, zadd), 6); DEBUG_ECHOLNPAIR_F(" Z error = ", zadd - get_z_correction(pos), 6); }; - debug_pt(F("1st point: "), probe_pt[0], normal.z * z1); - debug_pt(F("2nd point: "), probe_pt[1], normal.z * z2); - debug_pt(F("3rd point: "), probe_pt[2], normal.z * z3); - d_from(); DEBUG_ECHOPGM("safe home with Z="); - DEBUG_ECHOLNPAIR_F("0 : ", normed(safe_homing_xy, 0), 6); - d_from(); DEBUG_ECHOPGM("safe home with Z="); - DEBUG_ECHOLNPAIR_F("mesh value ", normed(safe_homing_xy, get_z_correction(safe_homing_xy)), 6); - DEBUG_ECHOPGM(" Z error = (", Z_SAFE_HOMING_X_POINT, ",", Z_SAFE_HOMING_Y_POINT); - DEBUG_ECHOLNPAIR_F(") = ", get_z_correction(safe_homing_xy), 6); + debug_pt(1, probe_pt[0], normal.z * gotz[0]); + debug_pt(2, probe_pt[1], normal.z * gotz[1]); + debug_pt(3, probe_pt[2], normal.z * gotz[2]); + #if ENABLED(Z_SAFE_HOMING) + constexpr xy_float_t safe_xy = { Z_SAFE_HOMING_X_POINT, Z_SAFE_HOMING_Y_POINT }; + d_from(); DEBUG_ECHOPGM("safe home with Z="); + DEBUG_ECHOLNPAIR_F("0 : ", normed(safe_xy, 0), 6); + d_from(); DEBUG_ECHOPGM("safe home with Z="); + DEBUG_ECHOLNPAIR_F("mesh value ", normed(safe_xy, get_z_correction(safe_xy)), 6); + DEBUG_ECHOPGM(" Z error = (", Z_SAFE_HOMING_X_POINT, ",", Z_SAFE_HOMING_Y_POINT); + DEBUG_ECHOLNPAIR_F(") = ", get_z_correction(safe_xy), 6); + #endif #endif } // DEBUGGING(LEVELING) From ae4fa0ab685f80124a9d183e28c7beae4234edaf Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 17 Mar 2023 00:22:26 +0000 Subject: [PATCH 132/659] [cron] Bump distribution date (2023-03-17) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 922cdfeeb4..eb0bc31d9f 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-16" +//#define STRING_DISTRIBUTION_DATE "2023-03-17" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index a2c451f900..62d7817606 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-16" + #define STRING_DISTRIBUTION_DATE "2023-03-17" #endif /** From 89e8257008507821543af8811ab78ef0365b2741 Mon Sep 17 00:00:00 2001 From: jamespearson04 Date: Fri, 17 Mar 2023 01:06:55 +0000 Subject: [PATCH 133/659] =?UTF-8?q?=F0=9F=9A=B8=20Refinements=20for=20UBL?= =?UTF-8?q?=20G29=20J=20(tilt=20mesh)=20(#25486)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 3 ++ Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 45 ++++++++++++++++----- Marlin/src/inc/Conditionals_post.h | 8 ++-- Marlin/src/module/probe.h | 4 ++ buildroot/tests/mega2560 | 3 +- 5 files changed, 47 insertions(+), 16 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 40f4fe4cbd..4d6f64e874 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2054,6 +2054,9 @@ //#define UBL_HILBERT_CURVE // Use Hilbert distribution for less travel when probing multiple points + //#define UBL_TILT_ON_MESH_POINTS // Use nearest mesh points with G29 J for better Z reference + //#define UBL_TILT_ON_MESH_POINTS_3POINT // Use nearest mesh points with G29 J0 (3-point) + #define UBL_MESH_EDIT_MOVES_Z // Sophisticated users prefer no movement of nozzle #define UBL_SAVE_ACTIVE_ON_M500 // Save the currently active mesh in the current slot on M500 diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index e504379848..7b9783bfac 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -1489,6 +1489,14 @@ void unified_bed_leveling::smart_fill_mesh() { xy_float_t points[3]; probe.get_three_points(points); + #if ENABLED(UBL_TILT_ON_MESH_POINTS_3POINT) + mesh_index_pair cpos[3]; + LOOP_L_N(ix, 3) { // Convert points to coordinates of mesh points + cpos[ix] = find_closest_mesh_point_of_type(REAL, points[ix], true); + points[ix] = cpos[ix].meshpos(); + } + #endif + #if ENABLED(VALIDATE_MESH_TILT) float gotz[3]; // Used for algorithm validation below #endif @@ -1500,7 +1508,7 @@ void unified_bed_leveling::smart_fill_mesh() { measured_z = probe.probe_at_point(points[i], i < 2 ? PROBE_PT_RAISE : PROBE_PT_LAST_STOW, param.V_verbosity); if ((abort_flag = isnan(measured_z))) break; - measured_z -= get_z_correction(points[i]); + measured_z -= TERN(UBL_TILT_ON_MESH_POINTS_3POINT, z_values[cpos[i].pos.x][cpos[i].pos.y], get_z_correction(points[i])); TERN_(VALIDATE_MESH_TILT, gotz[i] = measured_z); if (param.V_verbosity > 3) { serial_spaces(16); SERIAL_ECHOLNPGM("Corrected_Z=", measured_z); } @@ -1518,16 +1526,14 @@ void unified_bed_leveling::smart_fill_mesh() { } else { // !do_3_pt_leveling - #ifdef G29J_MESH_TILT_MARGIN - const float x_min = _MAX(probe.min_x() + (G29J_MESH_TILT_MARGIN), X_MIN_POS), - x_max = _MIN(probe.max_x() - (G29J_MESH_TILT_MARGIN), X_MAX_POS), - y_min = _MAX(probe.min_y() + (G29J_MESH_TILT_MARGIN), Y_MIN_POS), - y_max = _MIN(probe.max_y() - (G29J_MESH_TILT_MARGIN), Y_MAX_POS); - #else - const float x_min = probe.min_x(), x_max = probe.max_x(), - y_min = probe.min_y(), y_max = probe.max_y(); + #ifndef G29J_MESH_TILT_MARGIN + #define G29J_MESH_TILT_MARGIN 0 #endif - const float dx = (x_max - x_min) / (param.J_grid_size - 1), + const float x_min = _MAX((X_MIN_POS) + (G29J_MESH_TILT_MARGIN), MESH_MIN_X, probe.min_x()), + x_max = _MIN((X_MAX_POS) - (G29J_MESH_TILT_MARGIN), MESH_MAX_X, probe.max_x()), + y_min = _MAX((Y_MIN_POS) + (G29J_MESH_TILT_MARGIN), MESH_MIN_Y, probe.min_y()), + y_max = _MIN((Y_MAX_POS) - (G29J_MESH_TILT_MARGIN), MESH_MAX_Y, probe.max_y()), + dx = (x_max - x_min) / (param.J_grid_size - 1), dy = (y_max - y_min) / (param.J_grid_size - 1); bool zig_zag = false; @@ -1541,6 +1547,17 @@ void unified_bed_leveling::smart_fill_mesh() { LOOP_L_N(iy, param.J_grid_size) { rpos.y = y_min + dy * (zig_zag ? param.J_grid_size - 1 - iy : iy); + #if ENABLED(UBL_TILT_ON_MESH_POINTS) + #if ENABLED(DEBUG_LEVELING_FEATURE) + xy_pos_t oldRpos; + if (DEBUGGING(LEVELING)) oldRpos = rpos; + #endif + mesh_index_pair cpos; + rpos -= probe.offset; + cpos = find_closest_mesh_point_of_type(REAL, rpos, true); + rpos = cpos.meshpos(); + #endif + SERIAL_ECHOLNPGM("Tilting mesh point ", point_num, "/", total_points, "\n"); TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " %i/%i"), GET_TEXT(MSG_LCD_TILTING_MESH), point_num, total_points)); @@ -1548,11 +1565,17 @@ void unified_bed_leveling::smart_fill_mesh() { if ((abort_flag = isnan(measured_z))) break; - const float zcorr = get_z_correction(rpos); + const float zcorr = TERN(UBL_TILT_ON_MESH_POINTS, z_values[cpos.pos.x][cpos.pos.y], get_z_correction(rpos)); #if ENABLED(DEBUG_LEVELING_FEATURE) if (DEBUGGING(LEVELING)) { const xy_pos_t lpos = rpos.asLogical(); + #if ENABLED(UBL_TILT_ON_MESH_POINTS) + const xy_pos_t oldLpos = oldRpos.asLogical(); + DEBUG_ECHOPGM("Calculated point: ("); DEBUG_ECHO_F(oldRpos.x, 7); DEBUG_CHAR(','); DEBUG_ECHO_F(oldRpos.y, 7); + DEBUG_ECHOPAIR_F(") logical: (", oldLpos.x, 7); DEBUG_CHAR(','); DEBUG_ECHO_F(oldLpos.y, 7); + DEBUG_ECHOPGM(")\nSelected mesh point: "); + #endif DEBUG_CHAR('('); DEBUG_ECHO_F(rpos.x, 7); DEBUG_CHAR(','); DEBUG_ECHO_F(rpos.y, 7); DEBUG_ECHOPAIR_F(") logical: (", lpos.x, 7); DEBUG_CHAR(','); DEBUG_ECHO_F(lpos.y, 7); DEBUG_ECHOPAIR_F(") measured: ", measured_z, 7); diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 9305e86594..c41f87c859 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -3156,14 +3156,14 @@ // Probing points may be verified at compile time within the radius // using static_assert(HYPOT2(X2-X1,Y2-Y1)<=sq(PRINTABLE_RADIUS),"bad probe point!") // so that may be added to SanityCheck.h in the future. - #define _MESH_MIN_X (X_MIN_BED + MESH_INSET) - #define _MESH_MIN_Y (Y_MIN_BED + MESH_INSET) + #define _MESH_MIN_X (X_MIN_BED + (MESH_INSET)) + #define _MESH_MIN_Y (Y_MIN_BED + (MESH_INSET)) #define _MESH_MAX_X (X_MAX_BED - (MESH_INSET)) #define _MESH_MAX_Y (Y_MAX_BED - (MESH_INSET)) #else // Boundaries for Cartesian probing based on set limits - #define _MESH_MIN_X (_MAX(X_MIN_BED + MESH_INSET, X_MIN_POS)) // UBL is careful not to probe off the bed. It does not - #define _MESH_MIN_Y (_MAX(Y_MIN_BED + MESH_INSET, Y_MIN_POS)) // need NOZZLE_TO_PROBE_OFFSET in the mesh dimensions + #define _MESH_MIN_X (_MAX(X_MIN_BED + (MESH_INSET), X_MIN_POS)) // UBL is careful not to probe off the bed. It doesn't + #define _MESH_MIN_Y (_MAX(Y_MIN_BED + (MESH_INSET), Y_MIN_POS)) // need NOZZLE_TO_PROBE_OFFSET in the mesh dimensions. #define _MESH_MAX_X (_MIN(X_MAX_BED - (MESH_INSET), X_MAX_POS)) #define _MESH_MAX_Y (_MIN(Y_MAX_BED - (MESH_INSET), Y_MAX_POS)) #endif diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 42b6c4fe41..b50f79ed5d 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -307,6 +307,10 @@ public: points[0] = xy_float_t({ (X_CENTER) + probe_radius() * COS0, (Y_CENTER) + probe_radius() * SIN0 }); points[1] = xy_float_t({ (X_CENTER) + probe_radius() * COS120, (Y_CENTER) + probe_radius() * SIN120 }); points[2] = xy_float_t({ (X_CENTER) + probe_radius() * COS240, (Y_CENTER) + probe_radius() * SIN240 }); + #elif ENABLED(AUTO_BED_LEVELING_UBL) + points[0] = xy_float_t({ _MAX(MESH_MIN_X, min_x()), _MAX(MESH_MIN_Y, min_y()) }); + points[1] = xy_float_t({ _MIN(MESH_MAX_X, max_x()), _MAX(MESH_MIN_Y, min_y()) }); + points[2] = xy_float_t({ (_MAX(MESH_MIN_X, min_x()) + _MIN(MESH_MAX_X, max_x())) / 2, _MIN(MESH_MAX_Y, max_y()) }); #else points[0] = xy_float_t({ min_x(), min_y() }); points[1] = xy_float_t({ max_x(), min_y() }); diff --git a/buildroot/tests/mega2560 b/buildroot/tests/mega2560 index 363c386a4e..daa9cc2fad 100755 --- a/buildroot/tests/mega2560 +++ b/buildroot/tests/mega2560 @@ -44,7 +44,8 @@ opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO LCD_LANGUAGE jp_kana DEFAULT_EJERK 10 \ opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER LIGHTWEIGHT_UI SHOW_CUSTOM_BOOTSCREEN BOOT_MARLIN_LOGO_SMALL \ SET_PROGRESS_MANUALLY SET_PROGRESS_PERCENT PRINT_PROGRESS_SHOW_DECIMALS SHOW_REMAINING_TIME STATUS_MESSAGE_SCROLLING SCROLL_LONG_FILENAMES \ SDSUPPORT LONG_FILENAME_WRITE_SUPPORT SDCARD_SORT_ALPHA NO_SD_AUTOSTART USB_FLASH_DRIVE_SUPPORT CANCEL_OBJECTS \ - Z_PROBE_SLED AUTO_BED_LEVELING_UBL UBL_HILBERT_CURVE RESTORE_LEVELING_AFTER_G28 DEBUG_LEVELING_FEATURE G26_MESH_VALIDATION ENABLE_LEVELING_FADE_HEIGHT \ + Z_PROBE_SLED AUTO_BED_LEVELING_UBL UBL_HILBERT_CURVE UBL_TILT_ON_MESH_POINTS UBL_TILT_ON_MESH_POINTS_3POINT \ + RESTORE_LEVELING_AFTER_G28 DEBUG_LEVELING_FEATURE G26_MESH_VALIDATION ENABLE_LEVELING_FADE_HEIGHT \ EEPROM_SETTINGS EEPROM_CHITCHAT GCODE_MACROS CUSTOM_MENU_MAIN \ MULTI_NOZZLE_DUPLICATION CLASSIC_JERK LIN_ADVANCE QUICK_HOME \ NANODLP_Z_SYNC I2C_POSITION_ENCODERS M114_DETAIL \ From 6f5b7a8b265066249782cea6485fb9fd3839e424 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 18 Mar 2023 00:21:56 +0000 Subject: [PATCH 134/659] [cron] Bump distribution date (2023-03-18) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index eb0bc31d9f..2938b98713 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-17" +//#define STRING_DISTRIBUTION_DATE "2023-03-18" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 62d7817606..df04b198ac 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-17" + #define STRING_DISTRIBUTION_DATE "2023-03-18" #endif /** From b5836b243ac9321841daa9380d55b298375aaa2e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 17 Mar 2023 20:12:36 -0500 Subject: [PATCH 135/659] =?UTF-8?q?=F0=9F=94=A7=20Optional=20MPC=5FAUTOTUN?= =?UTF-8?q?E=20to=20save=205.5=20-=205.8KB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 1 + Marlin/src/core/language.h | 7 +- Marlin/src/gcode/temp/M306.cpp | 19 ++-- Marlin/src/inc/Conditionals_LCD.h | 4 + Marlin/src/inc/Conditionals_post.h | 2 +- Marlin/src/inc/SanityCheck.h | 4 + Marlin/src/lcd/e3v2/proui/dwin.cpp | 125 ++++++++++++++++----------- Marlin/src/lcd/e3v2/proui/dwin.h | 10 ++- Marlin/src/module/temperature.cpp | 10 +-- Marlin/src/module/temperature.h | 2 +- buildroot/tests/BIGTREE_GTR_V1_0 | 2 +- buildroot/tests/STM32F103RE_creality | 2 +- 12 files changed, 109 insertions(+), 79 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 4d6f64e874..82b107ae44 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -691,6 +691,7 @@ * @section mpctemp */ #if ENABLED(MPCTEMP) + //#define MPC_AUTOTUNE // Include a method to do MPC auto-tuning (~5664-5882 bytes of flash) //#define MPC_EDIT_MENU // Add MPC editing to the "Advanced Settings" menu. (~1300 bytes of flash) //#define MPC_AUTOTUNE_MENU // Add MPC auto-tuning to the "Advanced Settings" menu. (~350 bytes of flash) diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h index d231a7d3e9..bf309293ac 100644 --- a/Marlin/src/core/language.h +++ b/Marlin/src/core/language.h @@ -230,10 +230,9 @@ #define STR_PID_DEBUG_INPUT ": Input " #define STR_PID_DEBUG_OUTPUT " Output " #define STR_INVALID_EXTRUDER_NUM " - Invalid extruder number !" -#define STR_MPC_AUTOTUNE "MPC Autotune" -#define STR_MPC_AUTOTUNE_START " start for " STR_E -#define STR_MPC_AUTOTUNE_INTERRUPTED " interrupted!" -#define STR_MPC_AUTOTUNE_FINISHED " finished! Put the constants below into Configuration.h" +#define STR_MPC_AUTOTUNE_START "MPC Autotune start for " STR_E +#define STR_MPC_AUTOTUNE_INTERRUPTED "MPC Autotune interrupted!" +#define STR_MPC_AUTOTUNE_FINISHED "MPC Autotune finished! Put the constants below into Configuration.h" #define STR_MPC_COOLING_TO_AMBIENT "Cooling to ambient" #define STR_MPC_HEATING_PAST_200 "Heating to over 200C" #define STR_MPC_MEASURING_AMBIENT "Measuring ambient heatloss at " diff --git a/Marlin/src/gcode/temp/M306.cpp b/Marlin/src/gcode/temp/M306.cpp index 928f375c38..d0c005ea4e 100644 --- a/Marlin/src/gcode/temp/M306.cpp +++ b/Marlin/src/gcode/temp/M306.cpp @@ -33,8 +33,6 @@ * * E Extruder index. (Default: Active Extruder) * - * T Autotune the specified or active extruder. - * * Set MPC values manually for the specified or active extruder: * A Ambient heat transfer coefficient (no fan). * C Block heat capacity. @@ -42,6 +40,9 @@ * H Filament heat capacity per mm. * P Heater power. * R Sensor responsiveness (= transfer coefficient / heat capcity). + * + * With MPC_AUTOTUNE: + * T Autotune the specified or active extruder. */ void GcodeSuite::M306() { @@ -51,12 +52,14 @@ void GcodeSuite::M306() { return; } - if (parser.seen_test('T')) { - LCD_MESSAGE(MSG_MPC_AUTOTUNE); - thermalManager.MPC_autotune(e); - ui.reset_status(); - return; - } + #if ENABLED(MPC_AUTOTUNE) + if (parser.seen_test('T')) { + LCD_MESSAGE(MSG_MPC_AUTOTUNE); + thermalManager.MPC_autotune(e); + ui.reset_status(); + return; + } + #endif if (parser.seen("ACFPRH")) { MPC_t &mpc = thermalManager.temp_hotend[e].mpc; diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 0031e17eea..dc9849399c 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -1471,6 +1471,10 @@ #define HAS_PID_DEBUG 1 #endif +#if DISABLED(MPC_AUTOTUNE) + #undef MPC_AUTOTUNE_MENU +#endif + /** * TFT Displays * diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index c41f87c859..a054f90840 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -2499,7 +2499,7 @@ #if EITHER(PIDTEMP, PIDTEMPBED) #define DWIN_PID_TUNE 1 #endif - #if EITHER(DWIN_PID_TUNE, MPCTEMP) && DISABLED(DISABLE_TUNING_GRAPH) + #if EITHER(DWIN_PID_TUNE, MPC_AUTOTUNE) && DISABLED(DISABLE_TUNING_GRAPH) #define SHOW_TUNING_GRAPH 1 #endif #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index a795bfb93f..cd4c4efee2 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1560,6 +1560,10 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS */ #if BOTH(PIDTEMP, MPCTEMP) #error "Only enable PIDTEMP or MPCTEMP, but not both." + #undef MPCTEMP + #undef MPC_AUTOTUNE + #undef MPC_EDIT_MENU + #undef MPC_AUTOTUNE_MENU #endif #if ENABLED(MPC_INCLUDE_FAN) diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index 6be56b0ded..b0d1fb3ff6 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -266,7 +266,7 @@ MenuClass *MaxAccelMenu = nullptr; MenuClass *MaxJerkMenu = nullptr; #endif MenuClass *StepsMenu = nullptr; -#if ENABLED(MPCTEMP) +#if EITHER(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) MenuClass *HotendMPCMenu = nullptr; #endif #if ENABLED(PIDTEMP) @@ -1480,46 +1480,59 @@ void DWIN_LevelingDone() { DWINUI::ClearMainArea(); Draw_Popup_Bkgd(); - #if ENABLED(MPCTEMP) + switch (HMI_value.pidresult) { + default: return; + #if ENABLED(MPC_AUTOTUNE) + case MPCTEMP_START: + DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 100, GET_TEXT_F(MSG_MPC_AUTOTUNE)); + DWINUI::Draw_String(HMI_data.PopupTxt_Color, gfrm.x, gfrm.y - DWINUI::fontHeight() - 4, F("MPC target: Celsius")); + break; + #endif + #if EITHER(PIDTEMP, PIDTEMPBED) + TERN_(PIDTEMP, case PIDTEMP_START:) + TERN_(PIDTEMPBED, case PIDTEMPBED_START:) + DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 100, GET_TEXT_F(MSG_PID_AUTOTUNE)); + DWINUI::Draw_String(HMI_data.PopupTxt_Color, gfrm.x, gfrm.y - DWINUI::fontHeight() - 4, F("PID target: Celsius")); + break; + #endif + } - switch (HMI_value.pidresult) { + switch (HMI_value.pidresult) { + default: break; + #if EITHER(PIDTEMP, MPC_AUTOTUNE) + TERN_(PIDTEMP, case PIDTEMP_START:) + TERN_(MPC_AUTOTUNE, case MPCTEMP_START:) + DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for Nozzle is running.")); + break; + #endif + #if ENABLED(PIDTEMPBED) + case PIDTEMPBED_START: + DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for BED is running.")); + break; + #endif + } + + switch (HMI_value.pidresult) { + default: break; + #if ENABLED(MPC_AUTOTUNE) case MPCTEMP_START: _maxtemp = thermalManager.hotend_maxtemp[0]; _target = 200; - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 100, GET_TEXT_F(MSG_MPC_AUTOTUNE)); - DWINUI::Draw_String(HMI_data.PopupTxt_Color, gfrm.x, gfrm.y - DWINUI::fontHeight() - 4, F("MPC target: Celsius")); - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for Nozzle is running.")); break; - case PIDTEMPBED_START: - _maxtemp = BED_MAXTEMP; - _target = HMI_data.BedPidT; - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 100, GET_TEXT_F(MSG_PID_AUTOTUNE)); - DWINUI::Draw_String(HMI_data.PopupTxt_Color, gfrm.x, gfrm.y - DWINUI::fontHeight() - 4, F("PID target: Celsius")); - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for BED is running.")); - break; - default: return; - } - - #else // PID - - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 100, GET_TEXT_F(MSG_PID_AUTOTUNE)); - DWINUI::Draw_String(HMI_data.PopupTxt_Color, gfrm.x, gfrm.y - DWINUI::fontHeight() - 4, F("PID target: Celsius")); - - switch (HMI_value.pidresult) { + #endif + #if ENABLED(PIDTEMP) case PIDTEMP_START: _maxtemp = thermalManager.hotend_maxtemp[0]; _target = HMI_data.HotendPidT; - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for Nozzle is running.")); break; + #endif + #if ENABLED(PIDTEMPBED) case PIDTEMPBED_START: _maxtemp = BED_MAXTEMP; _target = HMI_data.BedPidT; - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for BED is running.")); break; - default: return; - } - - #endif // PID + #endif + } plot.Draw(gfrm, _maxtemp, _target); DWINUI::Draw_Int(HMI_data.PopupTxt_Color, 3, gfrm.x + 90, gfrm.y - DWINUI::fontHeight() - 4, _target); @@ -1587,7 +1600,7 @@ void DWIN_LevelingDone() { #endif // DWIN_PID_TUNE -#if ENABLED(MPCTEMP) +#if ENABLED(MPC_AUTOTUNE) void DWIN_MPCTuning(tempcontrol_t result) { HMI_value.pidresult = result; @@ -1607,7 +1620,7 @@ void DWIN_LevelingDone() { break; case MPC_INTERRUPTED: checkkey = last_checkkey; - DWIN_Popup_Confirm(ICON_TempTooHigh, GET_TEXT_F(MSG_ERROR), F(STR_MPC_AUTOTUNE STR_MPC_AUTOTUNE_INTERRUPTED)); + DWIN_Popup_Confirm(ICON_TempTooHigh, GET_TEXT_F(MSG_ERROR), F(STR_MPC_AUTOTUNE_INTERRUPTED)); ui.reset_alert_level(); break; case MPC_DONE: @@ -1622,7 +1635,7 @@ void DWIN_LevelingDone() { } } -#endif // MPCTEMP +#endif // MPC_AUTOTUNE // Started a Print Job void DWIN_Print_Started() { @@ -3090,8 +3103,8 @@ void Draw_AdvancedSettings_Menu() { #if ENABLED(PIDTEMP) MENU_ITEM_F(ICON_PIDNozzle, STR_HOTEND_PID " Settings", onDrawSubMenu, Draw_HotendPID_Menu); #endif - #if ENABLED(MPCTEMP) - MENU_ITEM_F(ICON_MPCNozzle, STR_MPC_AUTOTUNE " Settings", onDrawSubMenu, Draw_HotendMPC_Menu); + #if EITHER(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) + MENU_ITEM_F(ICON_MPCNozzle, "MPC Settings", onDrawSubMenu, Draw_HotendMPC_Menu); #endif #if ENABLED(PIDTEMPBED) MENU_ITEM_F(ICON_PIDBed, STR_BED_PID " Settings", onDrawSubMenu, Draw_BedPID_Menu); @@ -3524,37 +3537,45 @@ void Draw_Steps_Menu() { #endif -#if ENABLED(MPCTEMP) +#if EITHER(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) - void HotendMPC() { thermalManager.MPC_autotune(active_extruder); } - void SetHeaterPower() { SetPFloatOnClick(1, 200, 1); } - void SetBlkHeatCapacity() { SetPFloatOnClick(0, 40, 2); } - void SetSensorRespons() { SetPFloatOnClick(0, 1, 4); } - void SetAmbientXfer() { SetPFloatOnClick(0, 1, 4); } - #if ENABLED(MPC_INCLUDE_FAN) - void onDrawFanAdj(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 4, thermalManager.temp_hotend[0].fanCoefficient()); } - void ApplyFanAdj() { thermalManager.temp_hotend[0].applyFanAdjustment(MenuData.Value / POW(10, 4)); } - void SetFanAdj() { SetFloatOnClick(0, 1, 4, thermalManager.temp_hotend[0].fanCoefficient(), ApplyFanAdj); } + #if ENABLED(MPC_AUTOTUNE_MENU) + void HotendMPC() { thermalManager.MPC_autotune(active_extruder); } + #endif + #if ENABLED(MPC_EDIT_MENU) + void SetHeaterPower() { SetPFloatOnClick(1, 200, 1); } + void SetBlkHeatCapacity() { SetPFloatOnClick(0, 40, 2); } + void SetSensorResponse() { SetPFloatOnClick(0, 1, 4); } + void SetAmbientXfer() { SetPFloatOnClick(0, 1, 4); } + #if ENABLED(MPC_INCLUDE_FAN) + void onDrawFanAdj(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 4, thermalManager.temp_hotend[0].fanCoefficient()); } + void ApplyFanAdj() { thermalManager.temp_hotend[0].applyFanAdjustment(MenuData.Value / POW(10, 4)); } + void SetFanAdj() { SetFloatOnClick(0, 1, 4, thermalManager.temp_hotend[0].fanCoefficient(), ApplyFanAdj); } + #endif #endif void Draw_HotendMPC_Menu() { checkkey = Menu; - if (SET_MENU_F(HotendMPCMenu, STR_MPC_AUTOTUNE " Settings", 7)) { + if (SET_MENU_F(HotendMPCMenu, "MPC Settings", 7)) { MPC_t &mpc = thermalManager.temp_hotend[0].mpc; BACK_ITEM(Draw_AdvancedSettings_Menu); - MENU_ITEM(ICON_MPCNozzle, MSG_MPC_AUTOTUNE, onDrawMenuItem, HotendMPC); - EDIT_ITEM(ICON_MPCHeater, MSG_MPC_POWER, onDrawPFloatMenu, SetHeaterPower, &mpc.heater_power); - EDIT_ITEM(ICON_MPCHeatCap, MSG_MPC_BLOCK_HEAT_CAPACITY, onDrawPFloat2Menu, SetBlkHeatCapacity, &mpc.block_heat_capacity); - EDIT_ITEM(ICON_MPCValue, MSG_SENSOR_RESPONSIVENESS, onDrawPFloat4Menu, SetSensorRespons, &mpc.sensor_responsiveness); - EDIT_ITEM(ICON_MPCValue, MSG_MPC_AMBIENT_XFER_COEFF, onDrawPFloat4Menu, SetAmbientXfer, &mpc.ambient_xfer_coeff_fan0); - #if ENABLED(MPC_INCLUDE_FAN) - EDIT_ITEM(ICON_MPCFan, MSG_MPC_AMBIENT_XFER_COEFF_FAN, onDrawFanAdj, SetFanAdj, &mpc.fan255_adjustment); + #if ENABLED(MPC_AUTOTUNE_MENU) + MENU_ITEM(ICON_MPCNozzle, MSG_MPC_AUTOTUNE, onDrawMenuItem, HotendMPC); + #endif + #if ENABLED(MPC_EDIT_MENU) + EDIT_ITEM(ICON_MPCHeater, MSG_MPC_POWER, onDrawPFloatMenu, SetHeaterPower, &mpc.heater_power); + EDIT_ITEM(ICON_MPCHeatCap, MSG_MPC_BLOCK_HEAT_CAPACITY, onDrawPFloat2Menu, SetBlkHeatCapacity, &mpc.block_heat_capacity); + EDIT_ITEM(ICON_MPCValue, MSG_SENSOR_RESPONSIVENESS, onDrawPFloat4Menu, SetSensorResponse, &mpc.sensor_responsiveness); + EDIT_ITEM(ICON_MPCValue, MSG_MPC_AMBIENT_XFER_COEFF, onDrawPFloat4Menu, SetAmbientXfer, &mpc.ambient_xfer_coeff_fan0); + #if ENABLED(MPC_INCLUDE_FAN) + EDIT_ITEM(ICON_MPCFan, MSG_MPC_AMBIENT_XFER_COEFF_FAN, onDrawFanAdj, SetFanAdj, &mpc.fan255_adjustment); + #endif #endif } UpdateMenu(HotendMPCMenu); } -#endif // MPCTEMP +#endif // MPC_EDIT_MENU || MPC_AUTOTUNE_MENU #if ENABLED(PIDTEMPBED) diff --git a/Marlin/src/lcd/e3v2/proui/dwin.h b/Marlin/src/lcd/e3v2/proui/dwin.h index 112df5cae1..4197da4390 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.h +++ b/Marlin/src/lcd/e3v2/proui/dwin.h @@ -74,7 +74,7 @@ enum processID : uint8_t { NothingToDo }; -#if EITHER(DWIN_PID_TUNE, MPCTEMP) +#if EITHER(DWIN_PID_TUNE, MPC_AUTOTUNE) enum tempcontrol_t : uint8_t { #if DWIN_PID_TUNE @@ -85,7 +85,7 @@ enum processID : uint8_t { PID_TEMP_TOO_HIGH, PID_TUNING_TIMEOUT, #endif - #if ENABLED(MPCTEMP) + #if ENABLED(MPC_AUTOTUNE) MPC_DONE, MPCTEMP_START, MPC_TEMP_ERROR, @@ -384,7 +384,9 @@ void Draw_Steps_Menu(); #endif // MPC -#if ENABLED(MPCTEMP) - void DWIN_MPCTuning(tempcontrol_t result); +#if EITHER(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) void Draw_HotendMPC_Menu(); #endif +#if ENABLED(MPC_AUTOTUNE) + void DWIN_MPCTuning(tempcontrol_t result); +#endif diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index b572690256..bc978077f0 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -580,7 +580,6 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); volatile bool Temperature::raw_temps_ready = false; - #if ENABLED(MPCTEMP) int32_t Temperature::mpc_e_position; // = 0 #endif @@ -925,7 +924,7 @@ volatile bool Temperature::raw_temps_ready = false; #endif // HAS_PID_HEATING -#if ENABLED(MPCTEMP) +#if ENABLED(MPC_AUTOTUNE) #if EITHER(MPC_FAN_0_ALL_HOTENDS, MPC_FAN_0_ACTIVE_HOTEND) #define SINGLEFAN 1 @@ -951,7 +950,6 @@ volatile bool Temperature::raw_temps_ready = false; TERN(DWIN_CREALITY_LCD, DWIN_Update(), ui.update()); if (!wait_for_heatup) { - SERIAL_ECHOPGM(STR_MPC_AUTOTUNE); SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_INTERRUPTED); TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(MPC_INTERRUPTED)); return true; @@ -981,7 +979,6 @@ volatile bool Temperature::raw_temps_ready = false; } } on_exit(e); - SERIAL_ECHOPGM(STR_MPC_AUTOTUNE); SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_START, e); MPCHeaterInfo &hotend = temp_hotend[e]; MPC_t &mpc = hotend.mpc; @@ -1150,7 +1147,6 @@ volatile bool Temperature::raw_temps_ready = false; mpc.block_heat_capacity = mpc.ambient_xfer_coeff_fan0 / block_responsiveness; mpc.sensor_responsiveness = block_responsiveness / (1.0f - (ambient_temp - asymp_temp) * exp(-block_responsiveness * t1_time) / (t1 - asymp_temp)); - SERIAL_ECHOPGM(STR_MPC_AUTOTUNE); SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_FINISHED); TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(MPC_DONE)); @@ -1171,7 +1167,7 @@ volatile bool Temperature::raw_temps_ready = false; TERN_(HAS_FAN, SERIAL_ECHOLNPAIR_F("MPC_AMBIENT_XFER_COEFF_FAN255 ", ambient_xfer_coeff_fan255, 4)); } -#endif // MPCTEMP +#endif // MPC_AUTOTUNE int16_t Temperature::getHeaterPower(const heater_id_t heater_id) { switch (heater_id) { @@ -1509,7 +1505,7 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { const int32_t e_position = stepper.position(E_AXIS); const float e_speed = (e_position - mpc_e_position) * planner.mm_per_step[E_AXIS] / MPC_dT; - // The position can appear to make big jumps when, e.g. homing + // The position can appear to make big jumps when, e.g., homing if (fabs(e_speed) > planner.settings.max_feedrate_mm_s[E_AXIS]) mpc_e_position = e_position; else if (e_speed > 0.0f) { // Ignore retract/recover moves diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index b7f388cbb6..4178973a9d 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -1194,7 +1194,7 @@ class Temperature { #endif - #if ENABLED(MPCTEMP) + #if ENABLED(MPC_AUTOTUNE) void MPC_autotune(const uint8_t e); #endif diff --git a/buildroot/tests/BIGTREE_GTR_V1_0 b/buildroot/tests/BIGTREE_GTR_V1_0 index e0769b6a10..8f69f5b069 100755 --- a/buildroot/tests/BIGTREE_GTR_V1_0 +++ b/buildroot/tests/BIGTREE_GTR_V1_0 @@ -40,7 +40,7 @@ opt_set MOTHERBOARD BOARD_BTT_GTR_V1_0 SERIAL_PORT -1 \ MPC_AMBIENT_XFER_COEFF '{ 0.068f, 0.068f, 0.068f }' \ MPC_AMBIENT_XFER_COEFF_FAN255 '{ 0.097f, 0.097f, 0.097f }' \ FILAMENT_HEAT_CAPACITY_PERMM '{ 5.6e-3f, 3.6e-3f, 5.6e-3f }' -opt_enable SWITCHING_TOOLHEAD TOOL_SENSOR MPCTEMP MPC_EDIT_MENU MPC_AUTOTUNE_MENU +opt_enable SWITCHING_TOOLHEAD TOOL_SENSOR MPCTEMP MPC_EDIT_MENU MPC_AUTOTUNE MPC_AUTOTUNE_MENU opt_disable PIDTEMP exec_test $1 $2 "BigTreeTech GTR | MPC | Switching Toolhead | Tool Sensors" "$3" diff --git a/buildroot/tests/STM32F103RE_creality b/buildroot/tests/STM32F103RE_creality index 8910db0017..a05f1d96be 100755 --- a/buildroot/tests/STM32F103RE_creality +++ b/buildroot/tests/STM32F103RE_creality @@ -28,7 +28,7 @@ opt_set PREHEAT_3_LABEL '"CUSTOM"' PREHEAT_3_TEMP_HOTEND 240 PREHEAT_3_TEMP_BED exec_test $1 $2 "Ender-3 S1 with ProUI (PIDTEMP)" "$3" opt_disable PIDTEMP -opt_enable MPCTEMP +opt_enable MPCTEMP MPC_AUTOTUNE exec_test $1 $2 "Ender-3 S1 with ProUI (MPCTEMP)" "$3" restore_configs From c914761327077cb0e715171bd0fd5db741eafeb9 Mon Sep 17 00:00:00 2001 From: Michael Hill Date: Sat, 18 Mar 2023 01:56:07 -0400 Subject: [PATCH 136/659] =?UTF-8?q?=E2=9C=A8=20Sovol=20v1.3.1=20(Sovol=20S?= =?UTF-8?q?V06)=20(#25267)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/boards.h | 1 + Marlin/src/inc/Warnings.cpp | 7 + Marlin/src/pins/pins.h | 2 + Marlin/src/pins/stm32f1/pins_CREALITY_V4.h | 1 + Marlin/src/pins/stm32f1/pins_SOVOL_V131.h | 236 ++++++++++++++++++ buildroot/share/PlatformIO/ldscripts/sovol.ld | 14 ++ ini/stm32f1-maple.ini | 14 ++ 7 files changed, 275 insertions(+) create mode 100644 Marlin/src/pins/stm32f1/pins_SOVOL_V131.h create mode 100644 buildroot/share/PlatformIO/ldscripts/sovol.ld diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index f861e8864f..8a1cec714e 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -381,6 +381,7 @@ #define BOARD_ZONESTAR_ZM3E4V2 5064 // Zonestar ZM3E4 V2 (STM32F103VC) #define BOARD_ERYONE_ERY32_MINI 5065 // Eryone Ery32 mini (STM32F103VE) #define BOARD_PANDA_PI_V29 5066 // Panda Pi V2.9 - Standalone (STM32F103RC) +#define BOARD_SOVOL_V131 5067 // Sovol V1.3.1 (GD32F103RET6) // // ARM Cortex-M4F diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 184d1a08da..55b9a18e77 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -777,6 +777,13 @@ #warning "Define MK3_FAN_PINS to swap hotend and part cooling fan pins. (Define NO_MK3_FAN_PINS_WARNING to suppress this warning.)" #endif +/** + * GD32 is not exactly like STM32 + */ +#if MB(SOVOL_V131) + #warning "GD32 based controllers may not be fully compatible with Maple Generic STM32F103RE. Please report any issues." +#endif + /** * BD Sensor should always include BABYSTEPPING */ diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 721e037b8c..6269eecb0b 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -627,6 +627,8 @@ #include "stm32f1/pins_ERYONE_ERY32_MINI.h" // STM32F103VET6 env:ERYONE_ERY32_MINI_maple #elif MB(PANDA_PI_V29) #include "stm32f1/pins_PANDA_PI_V29.h" // STM32F103RCT6 env:PANDA_PI_V29 +#elif MB(SOVOL_V131) + #include "stm32f1/pins_SOVOL_V131.h" // GD32F1 env:GD32F103RET6_sovol_maple // // ARM Cortex-M4F diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h index f633ee0983..7c4df3520c 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h @@ -53,6 +53,7 @@ #if NO_EEPROM_SELECTED #define IIC_BL24CXX_EEPROM // EEPROM on I2C-0 //#define SDCARD_EEPROM_EMULATION + #undef NO_EEPROM_SELECTED #endif #if ENABLED(IIC_BL24CXX_EEPROM) diff --git a/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h b/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h new file mode 100644 index 0000000000..67b2944f45 --- /dev/null +++ b/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h @@ -0,0 +1,236 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * Sovol 1.3.1 (GD32F103RET6) board pin assignments + */ + +#include "env_validate.h" + +#if HOTENDS > 1 || E_STEPPERS > 1 + #error "SOVOL V131 only supports 1 hotend / E-stepper." +#endif + +#ifndef BOARD_INFO_NAME + #define BOARD_INFO_NAME "Sovol V131" +#endif +#ifndef DEFAULT_MACHINE_NAME + #define DEFAULT_MACHINE_NAME "Sovol SV06" +#endif + +//#define BOARD_NO_NATIVE_USB + +// +// Release PB4 (Y_ENABLE_PIN) from JTAG NRST role +// +#ifndef DISABLE_DEBUG + #define DISABLE_DEBUG +#endif + +// +// EEPROM +// +#if NO_EEPROM_SELECTED + #define IIC_BL24CXX_EEPROM // EEPROM on I2C-0 + //#define SDCARD_EEPROM_EMULATION + #undef NO_EEPROM_SELECTED +#endif + +#if ENABLED(IIC_BL24CXX_EEPROM) + #define IIC_EEPROM_SDA PA11 + #define IIC_EEPROM_SCL PA12 + #define MARLIN_EEPROM_SIZE 0x800 // 2K (24C16) +#elif ENABLED(SDCARD_EEPROM_EMULATION) + #define MARLIN_EEPROM_SIZE 0x800 // 2K +#endif + +// +// Servos +// +#ifndef SERVO0_PIN + #ifndef HAS_PIN_27_BOARD + #define SERVO0_PIN PB0 // BLTouch OUT + #else + #define SERVO0_PIN PC6 + #endif +#endif + +// +// Limit Switches +// +#ifndef X_STOP_PIN + #define X_STOP_PIN PA5 +#endif +#ifndef Y_STOP_PIN + #define Y_STOP_PIN PA6 +#endif +#ifndef Z_STOP_PIN + #define Z_STOP_PIN PA7 +#endif + +#ifndef Z_MIN_PROBE_PIN + #define Z_MIN_PROBE_PIN PB1 // BLTouch IN +#endif + +// +// Filament Runout Sensor +// +#ifndef FIL_RUNOUT_PIN + #define FIL_RUNOUT_PIN PA4 // "Pulled-high" +#endif + +// +// Steppers +// +#ifndef X_STEP_PIN + #define X_STEP_PIN PC2 +#endif +#ifndef X_DIR_PIN + #define X_DIR_PIN PB9 +#endif +#define X_ENABLE_PIN PC3 // Shared + +#ifndef Y_STEP_PIN + #define Y_STEP_PIN PB8 +#endif +#ifndef Y_DIR_PIN + #define Y_DIR_PIN PB7 +#endif +#define Y_ENABLE_PIN X_ENABLE_PIN + +#ifndef Z_STEP_PIN + #define Z_STEP_PIN PB6 +#endif +#ifndef Z_DIR_PIN + #define Z_DIR_PIN PB5 +#endif +#define Z_ENABLE_PIN X_ENABLE_PIN + +#ifndef E0_STEP_PIN + #define E0_STEP_PIN PB4 +#endif +#ifndef E0_DIR_PIN + #define E0_DIR_PIN PB3 +#endif +#define E0_ENABLE_PIN X_ENABLE_PIN + +#if HAS_TMC_UART + + /** + * TMC2208/TMC2209 stepper drivers + * + * Hardware serial communication ports. + * If undefined software serial is used according to the pins below + */ + + #define X_SERIAL_TX_PIN PC1 + #define X_SERIAL_RX_PIN PC1 + + #define Y_SERIAL_TX_PIN PC0 + #define Y_SERIAL_RX_PIN PC0 + + #define Z_SERIAL_TX_PIN PA15 + #define Z_SERIAL_RX_PIN PA15 + + #define E0_SERIAL_TX_PIN PC14 + #define E0_SERIAL_RX_PIN PC14 + + // Reduce baud rate to improve software serial reliability + #define TMC_BAUD_RATE 19200 + +#endif // HAS_TMC_UART + +// +// Temperature Sensors +// +#define TEMP_0_PIN PC5 // TH1 +#define TEMP_BED_PIN PC4 // TB1 + +// +// Heaters / Fans +// +#ifndef HEATER_0_PIN + #define HEATER_0_PIN PA1 // HEATER1 +#endif +#ifndef HEATER_BED_PIN + #define HEATER_BED_PIN PA2 // HOT BED +#endif +#ifndef FAN_PIN + #define FAN_PIN PA0 // FAN +#endif +#define FAN_SOFT_PWM_REQUIRED + +// +// SD Card +// +#define SD_DETECT_PIN PC7 +#define SDCARD_CONNECTION ONBOARD +#define ONBOARD_SPI_DEVICE 1 +#define ONBOARD_SD_CS_PIN PA4 // SDSS +#define SDIO_SUPPORT +#define NO_SD_HOST_DRIVE // This board's SD is only seen by the printer + +#if ANY(RET6_12864_LCD, HAS_DWIN_E3V2, IS_DWIN_MARLINUI) + /** + * RET6 12864 LCD + * ------ + * PC6 | 1 2 | PB2 + * PB10 | 3 4 | PB11 + * PB14 5 6 | PB13 + * PB12 | 7 8 | PB15 + * GND | 9 10 | 5V + * ------ + */ + #define EXP3_01_PIN PC6 + #define EXP3_02_PIN PB2 + #define EXP3_03_PIN PB10 + #define EXP3_04_PIN PB11 + #define EXP3_05_PIN PB14 + #define EXP3_06_PIN PB13 + #define EXP3_07_PIN PB12 + #define EXP3_08_PIN PB15 +#endif + +#if ENABLED(CR10_STOCKDISPLAY) + + #if ENABLED(RET6_12864_LCD) + + #define LCD_PINS_RS EXP3_07_PIN + #define LCD_PINS_ENABLE EXP3_08_PIN + #define LCD_PINS_D4 EXP3_06_PIN + + #define BTN_ENC EXP3_02_PIN + #define BTN_EN1 EXP3_03_PIN + #define BTN_EN2 EXP3_05_PIN + + #ifndef HAS_PIN_27_BOARD + #define BEEPER_PIN EXP3_01_PIN + #endif + + #else + + #error "Only the RET6_12864_LCD variant of CR10_STOCKDISPLAY is supported." + + #endif + +#endif diff --git a/buildroot/share/PlatformIO/ldscripts/sovol.ld b/buildroot/share/PlatformIO/ldscripts/sovol.ld new file mode 100644 index 0000000000..785345543c --- /dev/null +++ b/buildroot/share/PlatformIO/ldscripts/sovol.ld @@ -0,0 +1,14 @@ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K - 40 + rom (rx) : ORIGIN = 0x08007000, LENGTH = 512K - 28K +} + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/ini/stm32f1-maple.ini b/ini/stm32f1-maple.ini index be7966be9d..e223bdb4eb 100644 --- a/ini/stm32f1-maple.ini +++ b/ini/stm32f1-maple.ini @@ -392,3 +392,17 @@ board_build.variant = MARLIN_F103Vx board_build.ldscript = eryone_ery32_mini.ld board_build.address = 0x08004000 build_unflags = ${STM32F1_maple.build_unflags} + +# +# Sovol (GD32F103RET6) +# +[env:GD32F103RET6_sovol_maple] +extends = env:STM32F103RE_maple +build_flags = ${STM32F1_maple.build_flags} -DTEMP_TIMER_CHAN=4 +board_build.address = 0x08007000 +board_build.ldscript = sovol.ld +extra_scripts = ${STM32F1_maple.extra_scripts} + pre:buildroot/share/PlatformIO/scripts/random-bin.py + buildroot/share/PlatformIO/scripts/custom_board.py +debug_tool = jlink +upload_protocol = jlink From f50603ff1d380f759addffd2e54ac008ebec5985 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 18 Mar 2023 01:22:50 -0500 Subject: [PATCH 137/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Mor?= =?UTF-8?q?e=20IntelliSense-friendly=20declares?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/temperature.cpp | 16 ++++++++++++---- Marlin/src/module/temperature.h | 14 +++++++++----- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index bc978077f0..bafade45dd 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -508,8 +508,12 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); // Init min and max temp with extreme values to prevent false errors during startup raw_adc_t Temperature::mintemp_raw_BED = TEMP_SENSOR_BED_RAW_LO_TEMP, Temperature::maxtemp_raw_BED = TEMP_SENSOR_BED_RAW_HI_TEMP; - TERN_(WATCH_BED, bed_watch_t Temperature::watch_bed); // = { 0 } - IF_DISABLED(PIDTEMPBED, millis_t Temperature::next_bed_check_ms); + #if WATCH_BED + bed_watch_t Temperature::watch_bed; // = { 0 } + #endif + #if DISABLED(PIDTEMPBED) + millis_t Temperature::next_bed_check_ms; + #endif #endif #if HAS_TEMP_CHAMBER @@ -519,8 +523,12 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); celsius_float_t old_temp = 9999; raw_adc_t Temperature::mintemp_raw_CHAMBER = TEMP_SENSOR_CHAMBER_RAW_LO_TEMP, Temperature::maxtemp_raw_CHAMBER = TEMP_SENSOR_CHAMBER_RAW_HI_TEMP; - TERN_(WATCH_CHAMBER, chamber_watch_t Temperature::watch_chamber{0}); - IF_DISABLED(PIDTEMPCHAMBER, millis_t Temperature::next_chamber_check_ms); + #if WATCH_CHAMBER + chamber_watch_t Temperature::watch_chamber; // = { 0 } + #endif + #if DISABLED(PIDTEMPCHAMBER) + millis_t Temperature::next_chamber_check_ms; + #endif #endif #endif diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index 4178973a9d..b8bf03bf31 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -725,23 +725,27 @@ class Temperature { #endif #if HAS_HEATED_BED - #if ENABLED(WATCH_BED) + #if WATCH_BED static bed_watch_t watch_bed; #endif - IF_DISABLED(PIDTEMPBED, static millis_t next_bed_check_ms); + #if DISABLED(PIDTEMPBED) + static millis_t next_bed_check_ms; + #endif static raw_adc_t mintemp_raw_BED, maxtemp_raw_BED; #endif #if HAS_HEATED_CHAMBER - #if ENABLED(WATCH_CHAMBER) + #if WATCH_CHAMBER static chamber_watch_t watch_chamber; #endif - TERN(PIDTEMPCHAMBER,,static millis_t next_chamber_check_ms); + #if DISABLED(PIDTEMPCHAMBER) + static millis_t next_chamber_check_ms; + #endif static raw_adc_t mintemp_raw_CHAMBER, maxtemp_raw_CHAMBER; #endif #if HAS_COOLER - #if ENABLED(WATCH_COOLER) + #if WATCH_COOLER static cooler_watch_t watch_cooler; #endif static millis_t next_cooler_check_ms, cooler_fan_flush_ms; From ce97e42aa0a385f52fc5814595274241f73184a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davide=20Rombol=C3=A0?= Date: Sat, 18 Mar 2023 07:33:57 +0100 Subject: [PATCH 138/659] =?UTF-8?q?=F0=9F=8E=A8=20Clean=20up=20IA=5FCREALI?= =?UTF-8?q?TY=20includes=20(#25530)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp | 6 +----- Marlin/src/lcd/extui/ia_creality/FileNavigator.h | 3 --- Marlin/src/lcd/extui/ia_creality/creality_extui.cpp | 10 +--------- .../{creality_extui.h => ia_creality_extui.h} | 3 +-- 4 files changed, 3 insertions(+), 19 deletions(-) rename Marlin/src/lcd/extui/ia_creality/{creality_extui.h => ia_creality_extui.h} (99%) diff --git a/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp b/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp index 448d078cc4..4e2d294a9b 100644 --- a/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp +++ b/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp @@ -33,13 +33,11 @@ #if DGUS_LCD_UI_IA_CREALITY +#include "ia_creality_extui.h" #include "FileNavigator.h" using namespace ExtUI; -#define DEBUG_OUT ENABLED(DEBUG_DWIN) -#include "../../../core/debug_out.h" - FileList FileNavigator::filelist; // Instance of the Marlin file API char FileNavigator::currentfoldername[MAX_PATH_LEN]; // Current folder path uint16_t FileNavigator::lastindex; @@ -124,8 +122,6 @@ void FileNavigator::getFiles(uint16_t index) { const int filelen = strlen(filelist.filename()); if (filelen > 20) { char *buf = (char *)filelist.filename(); - //char buf[filelen]; - //strcpy(&buf[filelen], filelist.filename()); buf[18] = '\0'; // cutoff at screen edge rtscheck.RTS_SndData(buf, (SDFILE_ADDR + (fcnt * 20))); } diff --git a/Marlin/src/lcd/extui/ia_creality/FileNavigator.h b/Marlin/src/lcd/extui/ia_creality/FileNavigator.h index 29f5628455..28d97c6746 100644 --- a/Marlin/src/lcd/extui/ia_creality/FileNavigator.h +++ b/Marlin/src/lcd/extui/ia_creality/FileNavigator.h @@ -30,9 +30,6 @@ * Written by Insanity Automation * ***************************************/ -#include "creality_extui.h" -#include "../ui_api.h" - #define MAX_FOLDER_DEPTH 4 // Limit folder depth TFT has a limit for the file path #define MAX_CMND_LEN 16 * MAX_FOLDER_DEPTH // Maximum Length for a Panel command #define MAX_PATH_LEN 16 * MAX_FOLDER_DEPTH // Maximum number of characters in a SD file path diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp index 15dcd84bb9..c9c064fdc8 100644 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp +++ b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp @@ -34,16 +34,8 @@ #if DGUS_LCD_UI_IA_CREALITY -#include "creality_extui.h" +#include "ia_creality_extui.h" #include "FileNavigator.h" -#include "../ui_api.h" - -#include -#include -#include - -#define DEBUG_OUT ENABLED(DEBUG_DWIN) -#include "../../../core/debug_out.h" namespace ExtUI { static uint16_t fileIndex = 0; diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.h b/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.h similarity index 99% rename from Marlin/src/lcd/extui/ia_creality/creality_extui.h rename to Marlin/src/lcd/extui/ia_creality/ia_creality_extui.h index 099f8c238a..0d93255663 100644 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.h +++ b/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.h @@ -22,7 +22,7 @@ #pragma once /* **************************************** - * lcd/extui/ia_creality/creality_extui.h + * lcd/extui/ia_creality/ia_creality_extui.h * **************************************** * Extensible_UI implementation for Creality DWIN * 10SPro, Max, CRX, and others @@ -32,7 +32,6 @@ * ***************************************/ #include "string.h" -#include #include "../ui_api.h" /*********************************/ From ac1e2d0fbcb96c27da6225233be1a28ef3b5ee01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davide=20Rombol=C3=A0?= Date: Sat, 18 Mar 2023 07:35:54 +0100 Subject: [PATCH 139/659] =?UTF-8?q?=F0=9F=8E=A8=20Suppress=20warning=20(#2?= =?UTF-8?q?5529)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/feature/trinamic/M569.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Marlin/src/gcode/feature/trinamic/M569.cpp b/Marlin/src/gcode/feature/trinamic/M569.cpp index db31fe3d8e..e0aa182bf2 100644 --- a/Marlin/src/gcode/feature/trinamic/M569.cpp +++ b/Marlin/src/gcode/feature/trinamic/M569.cpp @@ -53,6 +53,8 @@ static void set_stealth_status(const bool enable, const int8_t eindex) { constexpr int8_t index = -1; #endif + UNUSED(index); + LOOP_LOGICAL_AXES(i) if (parser.seen(AXIS_CHAR(i))) { switch (i) { case X_AXIS: From 98c0cc044d1be2c098335d9656f2d0eadf524129 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Sat, 18 Mar 2023 00:22:17 -0700 Subject: [PATCH 140/659] =?UTF-8?q?=F0=9F=94=A7=20SQUARE=5FWAVE=5FSTEPPING?= =?UTF-8?q?=20=3D>=20EDGE=5FSTEPPING=20(#25526)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Scott Lahteine --- Marlin/Configuration_adv.h | 9 +++-- Marlin/src/inc/SanityCheck.h | 2 ++ Marlin/src/module/stepper/trinamic.cpp | 14 ++++---- Marlin/src/module/stepper/trinamic.h | 46 +++++++++++++------------- buildroot/tests/FYSETC_F6 | 2 +- buildroot/tests/SAMD21_minitronics20 | 2 +- buildroot/tests/SAMD51_grandcentral_m4 | 2 +- 7 files changed, 39 insertions(+), 38 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 35c43c7f2c..284ecb6b1c 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -3160,7 +3160,7 @@ * * It is recommended to set HOMING_BUMP_MM to { 0, 0, 0 }. * - * SPI_ENDSTOPS *** Beta feature! *** TMC2130/TMC5160 Only *** + * SPI_ENDSTOPS *** TMC2130/TMC5160 Only *** * Poll the driver through SPI to determine load when homing. * Removes the need for a wire from DIAG1 to an endstop pin. * @@ -3188,7 +3188,7 @@ //#define U_STALL_SENSITIVITY 8 //#define V_STALL_SENSITIVITY 8 //#define W_STALL_SENSITIVITY 8 - //#define SPI_ENDSTOPS // TMC2130 only + //#define SPI_ENDSTOPS // TMC2130/TMC5160 only //#define IMPROVE_HOMING_RELIABILITY #endif @@ -3207,10 +3207,9 @@ //#define TMC_HOME_PHASE { 896, 896, 896 } /** - * Beta feature! - * Create a 50/50 square wave step pulse optimal for stepper drivers. + * Step on both rising and falling edge signals (as with a square wave). */ - //#define SQUARE_WAVE_STEPPING + //#define EDGE_STEPPING /** * Enable M122 debugging command for TMC stepper drivers. diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index cd4c4efee2..c1e9b29444 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -678,6 +678,8 @@ #error "INVERT_*_STEP_PIN true is now STEP_STATE_* LOW, and INVERT_*_STEP_PIN false is now STEP_STATE_* HIGH." #elif defined(PROBE_PT_1_X) || defined(PROBE_PT_1_Y) || defined(PROBE_PT_2_X) || defined(PROBE_PT_2_Y) || defined(PROBE_PT_3_X) || defined(PROBE_PT_3_Y) #error "PROBE_PT_[123]_[XY] is now defined using PROBE_PT_[123] with an array { x, y }." +#elif defined(SQUARE_WAVE_STEPPING) + #error "SQUARE_WAVE_STEPPING is now EDGE_STEPPING." #endif // L64xx stepper drivers have been removed diff --git a/Marlin/src/module/stepper/trinamic.cpp b/Marlin/src/module/stepper/trinamic.cpp index 48ce020d3d..7d87e5953f 100644 --- a/Marlin/src/module/stepper/trinamic.cpp +++ b/Marlin/src/module/stepper/trinamic.cpp @@ -227,7 +227,7 @@ enum StealthIndex : uint8_t { chopconf.intpol = interpolate; chopconf.hend = chop_init.hend + 3; chopconf.hstrt = chop_init.hstrt - 1; - TERN_(SQUARE_WAVE_STEPPING, chopconf.dedge = true); + TERN_(EDGE_STEPPING, chopconf.dedge = true); st.CHOPCONF(chopconf.sr); st.rms_current(mA, hold_multiplier); @@ -262,7 +262,7 @@ enum StealthIndex : uint8_t { chopconf.intpol = interpolate; chopconf.hend = chop_init.hend + 3; chopconf.hstrt = chop_init.hstrt - 1; - TERN_(SQUARE_WAVE_STEPPING, chopconf.dedge = true); + TERN_(EDGE_STEPPING, chopconf.dedge = true); st.CHOPCONF(chopconf.sr); st.rms_current(mA, hold_multiplier); @@ -684,7 +684,7 @@ enum StealthIndex : uint8_t { chopconf.intpol = interpolate; chopconf.hend = chop_init.hend + 3; chopconf.hstrt = chop_init.hstrt - 1; - TERN_(SQUARE_WAVE_STEPPING, chopconf.dedge = true); + TERN_(EDGE_STEPPING, chopconf.dedge = true); st.CHOPCONF(chopconf.sr); st.rms_current(mA, hold_multiplier); @@ -726,7 +726,7 @@ enum StealthIndex : uint8_t { chopconf.intpol = interpolate; chopconf.hend = chop_init.hend + 3; chopconf.hstrt = chop_init.hstrt - 1; - TERN_(SQUARE_WAVE_STEPPING, chopconf.dedge = true); + TERN_(EDGE_STEPPING, chopconf.dedge = true); st.CHOPCONF(chopconf.sr); st.rms_current(mA, hold_multiplier); @@ -766,7 +766,7 @@ enum StealthIndex : uint8_t { st.sdoff(0); st.rms_current(mA); st.microsteps(microsteps); - TERN_(SQUARE_WAVE_STEPPING, st.dedge(true)); + TERN_(EDGE_STEPPING, st.dedge(true)); st.intpol(interpolate); st.diss2g(true); // Disable short to ground protection. Too many false readings? TERN_(TMC_DEBUG, st.rdsel(0b01)); @@ -784,7 +784,7 @@ enum StealthIndex : uint8_t { chopconf.intpol = interpolate; chopconf.hend = chop_init.hend + 3; chopconf.hstrt = chop_init.hstrt - 1; - TERN_(SQUARE_WAVE_STEPPING, chopconf.dedge = true); + TERN_(EDGE_STEPPING, chopconf.dedge = true); st.CHOPCONF(chopconf.sr); st.rms_current(mA, hold_multiplier); @@ -819,7 +819,7 @@ enum StealthIndex : uint8_t { chopconf.intpol = interpolate; chopconf.hend = chop_init.hend + 3; chopconf.hstrt = chop_init.hstrt - 1; - TERN_(SQUARE_WAVE_STEPPING, chopconf.dedge = true); + TERN_(EDGE_STEPPING, chopconf.dedge = true); st.CHOPCONF(chopconf.sr); st.rms_current(mA, hold_multiplier); diff --git a/Marlin/src/module/stepper/trinamic.h b/Marlin/src/module/stepper/trinamic.h index 95bab7652c..3705543c99 100644 --- a/Marlin/src/module/stepper/trinamic.h +++ b/Marlin/src/module/stepper/trinamic.h @@ -115,7 +115,7 @@ void restore_trinamic_drivers(); void reset_trinamic_drivers(); -#define AXIS_HAS_SQUARE_WAVE(A) (AXIS_IS_TMC(A) && ENABLED(SQUARE_WAVE_STEPPING)) +#define AXIS_HAS_DEDGE(A) (AXIS_IS_TMC(A) && ENABLED(EDGE_STEPPING)) // X Stepper #if AXIS_IS_TMC(X) @@ -126,7 +126,7 @@ void reset_trinamic_drivers(); #define X_ENABLE_WRITE(STATE) stepperX.toff((STATE)==X_ENABLE_ON ? chopper_timing_X.toff : 0) #define X_ENABLE_READ() stepperX.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(X) + #if AXIS_HAS_DEDGE(X) #define X_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(X_STEP_PIN); }while(0) #endif #endif @@ -140,7 +140,7 @@ void reset_trinamic_drivers(); #define Y_ENABLE_WRITE(STATE) stepperY.toff((STATE)==Y_ENABLE_ON ? chopper_timing_Y.toff : 0) #define Y_ENABLE_READ() stepperY.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(Y) + #if AXIS_HAS_DEDGE(Y) #define Y_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(Y_STEP_PIN); }while(0) #endif #endif @@ -154,7 +154,7 @@ void reset_trinamic_drivers(); #define Z_ENABLE_WRITE(STATE) stepperZ.toff((STATE)==Z_ENABLE_ON ? chopper_timing_Z.toff : 0) #define Z_ENABLE_READ() stepperZ.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(Z) + #if AXIS_HAS_DEDGE(Z) #define Z_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(Z_STEP_PIN); }while(0) #endif #endif @@ -171,7 +171,7 @@ void reset_trinamic_drivers(); #define X2_ENABLE_WRITE(STATE) stepperX2.toff((STATE)==X_ENABLE_ON ? chopper_timing_X2.toff : 0) #define X2_ENABLE_READ() stepperX2.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(X2) + #if AXIS_HAS_DEDGE(X2) #define X2_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(X2_STEP_PIN); }while(0) #endif #endif @@ -188,7 +188,7 @@ void reset_trinamic_drivers(); #define Y2_ENABLE_WRITE(STATE) stepperY2.toff((STATE)==Y_ENABLE_ON ? chopper_timing_Y2.toff : 0) #define Y2_ENABLE_READ() stepperY2.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(Y2) + #if AXIS_HAS_DEDGE(Y2) #define Y2_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(Y2_STEP_PIN); }while(0) #endif #endif @@ -205,7 +205,7 @@ void reset_trinamic_drivers(); #define Z2_ENABLE_WRITE(STATE) stepperZ2.toff((STATE)==Z_ENABLE_ON ? chopper_timing_Z2.toff : 0) #define Z2_ENABLE_READ() stepperZ2.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(Z2) + #if AXIS_HAS_DEDGE(Z2) #define Z2_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(Z2_STEP_PIN); }while(0) #endif #endif @@ -222,7 +222,7 @@ void reset_trinamic_drivers(); #define Z3_ENABLE_WRITE(STATE) stepperZ3.toff((STATE)==Z_ENABLE_ON ? chopper_timing_Z3.toff : 0) #define Z3_ENABLE_READ() stepperZ3.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(Z3) + #if AXIS_HAS_DEDGE(Z3) #define Z3_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(Z3_STEP_PIN); }while(0) #endif #endif @@ -239,7 +239,7 @@ void reset_trinamic_drivers(); #define Z4_ENABLE_WRITE(STATE) stepperZ4.toff((STATE)==Z_ENABLE_ON ? chopper_timing_Z4.toff : 0) #define Z4_ENABLE_READ() stepperZ4.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(Z4) + #if AXIS_HAS_DEDGE(Z4) #define Z4_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(Z4_STEP_PIN); }while(0) #endif #endif @@ -253,7 +253,7 @@ void reset_trinamic_drivers(); #define I_ENABLE_WRITE(STATE) stepperI.toff((STATE)==I_ENABLE_ON ? chopper_timing.toff : 0) #define I_ENABLE_READ() stepperI.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(I) + #if AXIS_HAS_DEDGE(I) #define I_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(I_STEP_PIN); }while(0) #endif #endif @@ -267,7 +267,7 @@ void reset_trinamic_drivers(); #define J_ENABLE_WRITE(STATE) stepperJ.toff((STATE)==J_ENABLE_ON ? chopper_timing.toff : 0) #define J_ENABLE_READ() stepperJ.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(J) + #if AXIS_HAS_DEDGE(J) #define J_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(J_STEP_PIN); }while(0) #endif #endif @@ -281,7 +281,7 @@ void reset_trinamic_drivers(); #define K_ENABLE_WRITE(STATE) stepperK.toff((STATE)==K_ENABLE_ON ? chopper_timing.toff : 0) #define K_ENABLE_READ() stepperK.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(K) + #if AXIS_HAS_DEDGE(K) #define K_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(K_STEP_PIN); }while(0) #endif #endif @@ -295,7 +295,7 @@ void reset_trinamic_drivers(); #define U_ENABLE_WRITE(STATE) stepperU.toff((STATE)==U_ENABLE_ON ? chopper_timing_U.toff : 0) #define U_ENABLE_READ() stepperU.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(U) + #if AXIS_HAS_DEDGE(U) #define U_STEP_WRITE(STATE) do{ if(STATE) TOGGLE(U_STEP_PIN); }while(0) #endif #endif @@ -309,7 +309,7 @@ void reset_trinamic_drivers(); #define V_ENABLE_WRITE(STATE) stepperV.toff((STATE)==V_ENABLE_ON ? chopper_timing_V.toff : 0) #define V_ENABLE_READ() stepperV.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(V) + #if AXIS_HAS_DEDGE(V) #define V_STEP_WRITE(STATE) do{ if(STATE) TOGGLE(V_STEP_PIN); }while(0) #endif #endif @@ -323,7 +323,7 @@ void reset_trinamic_drivers(); #define W_ENABLE_WRITE(STATE) stepperW.toff((STATE)==W_ENABLE_ON ? chopper_timing_W.toff : 0) #define W_ENABLE_READ() stepperW.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(W) + #if AXIS_HAS_DEDGE(W) #define W_STEP_WRITE(STATE) do{ if(STATE) TOGGLE(W_STEP_PIN); }while(0) #endif #endif @@ -340,7 +340,7 @@ void reset_trinamic_drivers(); #define E0_ENABLE_WRITE(STATE) stepperE0.toff((STATE)==E_ENABLE_ON ? chopper_timing_E0.toff : 0) #define E0_ENABLE_READ() stepperE0.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(E0) + #if AXIS_HAS_DEDGE(E0) #define E0_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(E0_STEP_PIN); }while(0) #endif #endif @@ -357,7 +357,7 @@ void reset_trinamic_drivers(); #define E1_ENABLE_WRITE(STATE) stepperE1.toff((STATE)==E_ENABLE_ON ? chopper_timing_E1.toff : 0) #define E1_ENABLE_READ() stepperE1.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(E1) + #if AXIS_HAS_DEDGE(E1) #define E1_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(E1_STEP_PIN); }while(0) #endif #endif @@ -374,7 +374,7 @@ void reset_trinamic_drivers(); #define E2_ENABLE_WRITE(STATE) stepperE2.toff((STATE)==E_ENABLE_ON ? chopper_timing_E2.toff : 0) #define E2_ENABLE_READ() stepperE2.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(E2) + #if AXIS_HAS_DEDGE(E2) #define E2_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(E2_STEP_PIN); }while(0) #endif #endif @@ -391,7 +391,7 @@ void reset_trinamic_drivers(); #define E3_ENABLE_WRITE(STATE) stepperE3.toff((STATE)==E_ENABLE_ON ? chopper_timing_E3.toff : 0) #define E3_ENABLE_READ() stepperE3.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(E3) + #if AXIS_HAS_DEDGE(E3) #define E3_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(E3_STEP_PIN); }while(0) #endif #endif @@ -408,7 +408,7 @@ void reset_trinamic_drivers(); #define E4_ENABLE_WRITE(STATE) stepperE4.toff((STATE)==E_ENABLE_ON ? chopper_timing_E4.toff : 0) #define E4_ENABLE_READ() stepperE4.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(E4) + #if AXIS_HAS_DEDGE(E4) #define E4_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(E4_STEP_PIN); }while(0) #endif #endif @@ -425,7 +425,7 @@ void reset_trinamic_drivers(); #define E5_ENABLE_WRITE(STATE) stepperE5.toff((STATE)==E_ENABLE_ON ? chopper_timing_E5.toff : 0) #define E5_ENABLE_READ() stepperE5.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(E5) + #if AXIS_HAS_DEDGE(E5) #define E5_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(E5_STEP_PIN); }while(0) #endif #endif @@ -442,7 +442,7 @@ void reset_trinamic_drivers(); #define E6_ENABLE_WRITE(STATE) stepperE6.toff((STATE)==E_ENABLE_ON ? chopper_timing_E6.toff : 0) #define E6_ENABLE_READ() stepperE6.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(E6) + #if AXIS_HAS_DEDGE(E6) #define E6_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(E6_STEP_PIN); }while(0) #endif #endif @@ -459,7 +459,7 @@ void reset_trinamic_drivers(); #define E7_ENABLE_WRITE(STATE) stepperE7.toff((STATE)==E_ENABLE_ON ? chopper_timing_E7.toff : 0) #define E7_ENABLE_READ() stepperE7.isEnabled() #endif - #if AXIS_HAS_SQUARE_WAVE(E7) + #if AXIS_HAS_DEDGE(E7) #define E7_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(E7_STEP_PIN); }while(0) #endif #endif diff --git a/buildroot/tests/FYSETC_F6 b/buildroot/tests/FYSETC_F6 index f8fce4b5b8..f4f05ceea7 100755 --- a/buildroot/tests/FYSETC_F6 +++ b/buildroot/tests/FYSETC_F6 @@ -64,7 +64,7 @@ opt_set MOTHERBOARD BOARD_FYSETC_F6_13 \ X_HARDWARE_SERIAL Serial2 opt_enable USE_ZMIN_PLUG FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \ FYSETC_242_OLED_12864 EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL Z_SAFE_HOMING \ - STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD SENSORLESS_HOMING SQUARE_WAVE_STEPPING + STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD SENSORLESS_HOMING EDGE_STEPPING exec_test $1 $2 "FYSETC_F6 | SCARA | Mixed TMC | EEPROM" "$3" # clean up diff --git a/buildroot/tests/SAMD21_minitronics20 b/buildroot/tests/SAMD21_minitronics20 index b46fb9f08a..f4a75afafe 100755 --- a/buildroot/tests/SAMD21_minitronics20 +++ b/buildroot/tests/SAMD21_minitronics20 @@ -26,7 +26,7 @@ opt_enable ENDSTOP_INTERRUPTS_FEATURE BLTOUCH Z_MIN_PROBE_REPEATABILITY_TEST \ SCROLL_LONG_FILENAMES BABYSTEPPING DOUBLECLICK_FOR_Z_BABYSTEPPING \ MOVE_Z_WHEN_IDLE BABYSTEP_ZPROBE_OFFSET BABYSTEP_GFX_OVERLAY \ LIN_ADVANCE ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE MONITOR_DRIVER_STATUS SENSORLESS_HOMING \ - SQUARE_WAVE_STEPPING + EDGE_STEPPING exec_test $1 $2 "Minitronics 2.0 with assorted features" "$3" # clean up diff --git a/buildroot/tests/SAMD51_grandcentral_m4 b/buildroot/tests/SAMD51_grandcentral_m4 index 042733072d..72996e7b7f 100755 --- a/buildroot/tests/SAMD51_grandcentral_m4 +++ b/buildroot/tests/SAMD51_grandcentral_m4 @@ -26,7 +26,7 @@ opt_enable ENDSTOP_INTERRUPTS_FEATURE S_CURVE_ACCELERATION BLTOUCH Z_MIN_PROBE_R SCROLL_LONG_FILENAMES BABYSTEPPING DOUBLECLICK_FOR_Z_BABYSTEPPING \ MOVE_Z_WHEN_IDLE BABYSTEP_ZPROBE_OFFSET BABYSTEP_GFX_OVERLAY \ LIN_ADVANCE ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE MONITOR_DRIVER_STATUS SENSORLESS_HOMING \ - SQUARE_WAVE_STEPPING TMC_DEBUG + EDGE_STEPPING TMC_DEBUG exec_test $1 $2 "Grand Central M4 with assorted features" "$3" # clean up From 88da531e5d873c342a4a6625d9cb57adb2644cce Mon Sep 17 00:00:00 2001 From: James Gilliland Date: Sat, 18 Mar 2023 03:30:30 -0500 Subject: [PATCH 141/659] =?UTF-8?q?=F0=9F=9A=B8=20Improve=20Z-Probe=20rais?= =?UTF-8?q?e=20for=20deploy=20(#25498)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/gcode/bedlevel/G35.cpp | 1 - Marlin/src/gcode/calibrate/G76_M871.cpp | 1 - Marlin/src/lcd/menu/menu_tramming_wizard.cpp | 4 +-- Marlin/src/module/probe.cpp | 30 +++++++++++++------- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/Marlin/src/gcode/bedlevel/G35.cpp b/Marlin/src/gcode/bedlevel/G35.cpp index dd828bf0c8..ff0321e4aa 100644 --- a/Marlin/src/gcode/bedlevel/G35.cpp +++ b/Marlin/src/gcode/bedlevel/G35.cpp @@ -108,7 +108,6 @@ void GcodeSuite::G35() { // length of the deployed pin (BLTOUCH stroke < 7mm) // Unsure if this is even required. The probe seems to lift correctly after probe done. - do_blocking_move_to_z(SUM_TERN(BLTOUCH, Z_CLEARANCE_BETWEEN_PROBES, bltouch.z_extra_clearance())); const float z_probed_height = probe.probe_at_point(tramming_points[i], PROBE_PT_RAISE, 0, true); if (isnan(z_probed_height)) { diff --git a/Marlin/src/gcode/calibrate/G76_M871.cpp b/Marlin/src/gcode/calibrate/G76_M871.cpp index c484d4f1b7..9bea0a0b86 100644 --- a/Marlin/src/gcode/calibrate/G76_M871.cpp +++ b/Marlin/src/gcode/calibrate/G76_M871.cpp @@ -108,7 +108,6 @@ }; auto g76_probe = [](const TempSensorID sid, celsius_t &targ, const xy_pos_t &nozpos) { - do_z_clearance(5.0); // Raise nozzle before probing ptc.set_enabled(false); const float measured_z = probe.probe_at_point(nozpos, PROBE_PT_STOW, 0, false); // verbose=0, probe_relative=false ptc.set_enabled(true); diff --git a/Marlin/src/lcd/menu/menu_tramming_wizard.cpp b/Marlin/src/lcd/menu/menu_tramming_wizard.cpp index 1dd8a1cab6..4ce2cd6460 100644 --- a/Marlin/src/lcd/menu/menu_tramming_wizard.cpp +++ b/Marlin/src/lcd/menu/menu_tramming_wizard.cpp @@ -53,9 +53,7 @@ static int8_t reference_index; // = 0 #endif static bool probe_single_point() { - do_blocking_move_to_z(TERN(BLTOUCH, Z_CLEARANCE_DEPLOY_PROBE, Z_CLEARANCE_BETWEEN_PROBES)); - // Stow after each point with BLTouch "HIGH SPEED" mode for push-pin safety - const float z_probed_height = probe.probe_at_point(tramming_points[tram_index], TERN0(BLTOUCH, bltouch.high_speed_mode) ? PROBE_PT_STOW : PROBE_PT_RAISE, 0, true); + const float z_probed_height = probe.probe_at_point(tramming_points[tram_index], PROBE_PT_RAISE, 0, true); z_measured[tram_index] = z_probed_height; if (reference_index < 0) reference_index = tram_index; move_to_tramming_wait_pos(); diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index faa3aec03d..da69b725b9 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -147,7 +147,7 @@ xyz_pos_t Probe::offset; // Initialized by settings.load() WRITE(MAGLEV_TRIGGER_PIN, LOW); } - inline void maglev_idle() { do_blocking_move_to_z(10); } + inline void maglev_idle() { do_z_clearance(10); } #elif ENABLED(TOUCH_MI_PROBE) @@ -749,7 +749,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("1st Probe Z:", first_probe_z); // Raise to give the probe clearance - do_blocking_move_to_z(current_position.z + Z_CLEARANCE_MULTI_PROBE, z_probe_fast_mm_s); + do_z_clearance(current_position.z + Z_CLEARANCE_MULTI_PROBE); #elif Z_PROBE_FEEDRATE_FAST != Z_PROBE_FEEDRATE_SLOW @@ -759,7 +759,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { if (current_position.z > z) { // Probe down fast. If the probe never triggered, raise for probe clearance if (!probe_down_to_z(z, z_probe_fast_mm_s)) - do_blocking_move_to_z(current_position.z + Z_CLEARANCE_BETWEEN_PROBES, z_probe_fast_mm_s); + do_z_clearance(current_position.z + Z_CLEARANCE_BETWEEN_PROBES); } #endif @@ -810,7 +810,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { #if EXTRA_PROBING > 0 < TOTAL_PROBING - 1 #endif - ) do_blocking_move_to_z(z + Z_CLEARANCE_MULTI_PROBE, z_probe_fast_mm_s); + ) do_z_clearance(z + Z_CLEARANCE_MULTI_PROBE); #endif } @@ -878,13 +878,16 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai } #if ENABLED(BLTOUCH) - if (bltouch.high_speed_mode && bltouch.triggered()) - bltouch._reset(); + // Reset a BLTouch in HS mode if already triggered + if (bltouch.high_speed_mode && bltouch.triggered()) bltouch._reset(); #endif + // Use a safe Z height for the XY move + const float safe_z = _MAX(current_position.z, SUM_TERN(BLTOUCH, Z_CLEARANCE_BETWEEN_PROBES, bltouch.z_extra_clearance())); + // On delta keep Z below clip height or do_blocking_move_to will abort xyz_pos_t npos = NUM_AXIS_ARRAY( - rx, ry, TERN(DELTA, _MIN(delta_clip_start_height, current_position.z), current_position.z), + rx, ry, TERN(DELTA, _MIN(delta_clip_start_height, safe_z), safe_z), current_position.i, current_position.j, current_position.k, current_position.u, current_position.v, current_position.w ); @@ -907,17 +910,22 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai TERN_(HAS_PTC, ptc.apply_compensation(measured_z)); TERN_(X_AXIS_TWIST_COMPENSATION, measured_z += xatc.compensation(npos + offset_xy)); } + + // Deploy succeeded and a successful measurement was done. + // Raise and/or stow the probe depending on 'raise_after' and settings. if (!isnan(measured_z)) { - const bool big_raise = raise_after == PROBE_PT_BIG_RAISE; - if (big_raise || raise_after == PROBE_PT_RAISE) - do_blocking_move_to_z(current_position.z + (big_raise ? 25 : Z_CLEARANCE_BETWEEN_PROBES), z_probe_fast_mm_s); - else if (raise_after == PROBE_PT_STOW || raise_after == PROBE_PT_LAST_STOW) + const ProbePtRaise raise_type = (TERN0(BLTOUCH, !bltouch.high_speed_mode) && raise_after == PROBE_PT_RAISE) ? PROBE_PT_STOW : raise_after; + const bool big_raise = raise_type == PROBE_PT_BIG_RAISE; + if (big_raise || raise_type == PROBE_PT_RAISE) + do_z_clearance(current_position.z + (big_raise ? 25 : Z_CLEARANCE_BETWEEN_PROBES)); + else if (raise_type == PROBE_PT_STOW || raise_type == PROBE_PT_LAST_STOW) if (stow()) measured_z = NAN; // Error on stow? if (verbose_level > 2) SERIAL_ECHOLNPGM("Bed X: ", LOGICAL_X_POSITION(rx), " Y: ", LOGICAL_Y_POSITION(ry), " Z: ", measured_z); } + // If any error occurred stow the probe and set an alert if (isnan(measured_z)) { stow(); LCD_MESSAGE(MSG_LCD_PROBING_FAILED); From d0669527c43ce69d5d2313367a8752b6cac8119b Mon Sep 17 00:00:00 2001 From: Eduard Sukharev Date: Sat, 18 Mar 2023 11:33:38 +0300 Subject: [PATCH 142/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20LVGL=20/=20MKS=20W?= =?UTF-8?q?iFi=20long=20filename=20(#25483)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- .../extui/mks_ui/tft_lvgl_configuration.cpp | 6 +- Marlin/src/lcd/extui/mks_ui/wifi_module.cpp | 893 +++++++++--------- Marlin/src/lcd/extui/mks_ui/wifi_module.h | 12 +- Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp | 6 +- Marlin/src/lcd/extui/mks_ui/wifi_upload.h | 4 +- 5 files changed, 472 insertions(+), 449 deletions(-) diff --git a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp index a5a8f7cbe4..2248ef334f 100644 --- a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp @@ -298,10 +298,8 @@ void lv_fill_rect(lv_coord_t x1, lv_coord_t y1, lv_coord_t x2, lv_coord_t y2, lv W25QXX.init(SPI_QUARTER_SPEED); } -#define TICK_CYCLE 1 - -uint16_t getTickDiff(uint16_t curTick, uint16_t lastTick) { - return TICK_CYCLE * (lastTick <= curTick ? (curTick - lastTick) : (0xFFFFFFFF - lastTick + curTick)); +uint16_t getTickDiff(const uint16_t curTick, const uint16_t lastTick) { + return (TICK_CYCLE) * (lastTick <= curTick ? (curTick - lastTick) : (0xFFFFFFFF - lastTick + curTick)); } static bool get_point(int16_t *x, int16_t *y) { diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp index 215281d450..b389109975 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp @@ -55,11 +55,11 @@ #define WIFI_IO1_SET() WRITE(WIFI_IO1_PIN, HIGH); #define WIFI_IO1_RESET() WRITE(WIFI_IO1_PIN, LOW); -extern uint8_t Explore_Disk(char *path, uint8_t recu_level); +uint8_t Explore_Disk(const char * const path, const uint8_t recu_level, const bool with_longnames); extern uint8_t commands_in_queue; extern uint8_t sel_id; -extern uint16_t getTickDiff(uint16_t curTick, uint16_t lastTick); +uint16_t getTickDiff(const uint16_t curTick, const uint16_t lastTick); volatile SZ_USART_FIFO WifiRxFifo; @@ -114,33 +114,34 @@ extern CLOUD_PARA cloud_para; extern bool once_flag, flash_preview_begin, default_preview_flg, gcode_preview_over; extern bool flash_dma_mode; -uint32_t getWifiTick() { return millis(); } +millis_t getWifiTick() { return millis(); } -uint32_t getWifiTickDiff(int32_t lastTick, int32_t curTick) { - return (lastTick <= curTick ? curTick - lastTick : 0xFFFFFFFF - lastTick + curTick) * TICK_CYCLE; +millis_t getWifiTickDiff(const millis_t lastTick, const millis_t curTick) { + return (TICK_CYCLE) * (lastTick <= curTick ? curTick - lastTick : 0xFFFFFFFFUL - lastTick + curTick); } -void wifi_delay(int n) { - const uint32_t start = getWifiTick(); - while (getWifiTickDiff(start, getWifiTick()) < (uint32_t)n) +void wifi_delay(const uint16_t n) { + const millis_t start = getWifiTick(); + while (getWifiTickDiff(start, getWifiTick()) < millis_t(n)) hal.watchdog_refresh(); } void wifi_reset() { - uint32_t start = getWifiTick(); + const millis_t start = getWifiTick(); WIFI_RESET(); while (getWifiTickDiff(start, getWifiTick()) < 500) { /* nada */ } WIFI_SET(); } -void mount_file_sys(uint8_t disk_type) { - if (disk_type == FILE_SYS_SD) { - TERN_(SDSUPPORT, card.mount()); - } - else if (disk_type == FILE_SYS_USB) { +void mount_file_sys(const uint8_t disk_type) { + switch (disk_type) { + case FILE_SYS_SD: TERN_(SDSUPPORT, card.mount()); break; + case FILE_SYS_USB: break; } } +#define ILLEGAL_CHAR_REPLACE 0x5F // '_' + static bool longName2DosName(const char *longName, char *dosName) { uint8_t i = FILENAME_LENGTH; while (i) dosName[--i] = '\0'; @@ -152,18 +153,24 @@ static bool longName2DosName(const char *longName, char *dosName) { strcat_P(dosName, PSTR(".GCO")); return dosName[0] != '\0'; } + + // Fail for illegal characters + if (c < 0x21 || c == 0x7F) // Check size, non-printable characters + c = ILLEGAL_CHAR_REPLACE; // replace non-printable chars with underscore '_' else { - // Fail for illegal characters PGM_P p = PSTR("|<>^+=?/[];,*\"\\"); - while (uint8_t b = pgm_read_byte(p++)) if (b == c) return false; - if (c < 0x21 || c == 0x7F) return false; // Check size, non-printable characters - dosName[i++] = (c < 'a' || c > 'z') ? (c) : (c + ('A' - 'a')); // Uppercase required for 8.3 name + while (const uint8_t b = pgm_read_byte(p++)) + if (b == c) c = ILLEGAL_CHAR_REPLACE; // replace illegal chars with underscore '_' } + + dosName[i++] = (c < 'a' || c > 'z') ? (c) : (c + ('A' - 'a')); // Uppercase required for 8.3 name + if (i >= 5) { strcat_P(dosName, PSTR("~1.GCO")); return dosName[0] != '\0'; } } + return dosName[0] != '\0'; // Return true if any name was set } @@ -562,8 +569,8 @@ static bool longName2DosName(const char *longName, char *dosName) { #if ENABLED(MKS_WIFI_MODULE) - int raw_send_to_wifi(uint8_t *buf, int len) { - if (buf == 0 || len <= 0) return 0; + int raw_send_to_wifi(uint8_t * const buf, const int len) { + if (buf == nullptr || len <= 0) return 0; for (int i = 0; i < len; i++) WIFISERIAL.write(*(buf + i)); return len; } @@ -701,13 +708,13 @@ int package_to_wifi(WIFI_RET_TYPE type, uint8_t *buf, int len) { return 1; } +int send_to_wifi(uint8_t * const buf, const int len) { return package_to_wifi(WIFI_TRANS_INF, buf, len); } -#define SEND_OK_TO_WIFI send_to_wifi((uint8_t *)"ok\r\n", strlen("ok\r\n")) -int send_to_wifi(uint8_t *buf, int len) { return package_to_wifi(WIFI_TRANS_INF, buf, len); } +inline void send_ok_to_wifi() { send_to_wifi((uint8_t *)"ok\r\n", strlen("ok\r\n")); } void set_cur_file_sys(int fileType) { gCfgItems.fileSysType = fileType; } -void get_file_list(char *path) { +void get_file_list(const char * const path, const bool with_longnames) { if (!path) return; if (gCfgItems.fileSysType == FILE_SYS_SD) { @@ -716,7 +723,7 @@ void get_file_list(char *path) { else if (gCfgItems.fileSysType == FILE_SYS_USB) { // udisk } - Explore_Disk(path, 0); + Explore_Disk(path, 0, with_longnames); } char wait_ip_back_flag = 0; @@ -795,7 +802,7 @@ typedef struct { uint8_t tail; } ESP_PROTOC_FRAME; -static int cut_msg_head(uint8_t *msg, uint16_t msgLen, uint16_t cutLen) { +static int cut_msg_head(uint8_t * const msg, const uint16_t msgLen, uint16_t cutLen) { if (msgLen < cutLen) return 0; else if (msgLen == cutLen) { @@ -811,25 +818,31 @@ static int cut_msg_head(uint8_t *msg, uint16_t msgLen, uint16_t cutLen) { return msgLen - cutLen; } -uint8_t Explore_Disk(char *path , uint8_t recu_level) { - char tmp[200]; +uint8_t Explore_Disk(const char * const path, const uint8_t recu_level, const bool with_longnames) { char Fstream[200]; if (!path) return 0; const uint8_t fileCnt = card.get_num_Files(); + MediaFile file; + MediaFile *diveDir; for (uint8_t i = 0; i < fileCnt; i++) { card.getfilename_sorted(SD_ORDER(i, fileCnt)); - ZERO(tmp); - strcpy(tmp, card.filename); ZERO(Fstream); - strcpy(Fstream, tmp); + strcpy(Fstream, card.filename); if (card.flag.filenameIsDir && recu_level <= 10) strcat_P(Fstream, PSTR(".DIR")); + strcat_P(Fstream, PSTR(" 0")); // report 0 file size + + if (with_longnames) { + strcat_P(Fstream, PSTR(" ")); + strcat_P(Fstream, card.longest_filename()); + } + strcat_P(Fstream, PSTR("\r\n")); send_to_wifi((uint8_t*)Fstream, strlen(Fstream)); } @@ -837,434 +850,449 @@ uint8_t Explore_Disk(char *path , uint8_t recu_level) { return fileCnt; } -static void wifi_gcode_exec(uint8_t *cmd_line) { +static void wifi_gcode_exec(uint8_t * const cmd_line) { int8_t tempBuf[100] = { 0 }; - uint8_t *tmpStr = 0; int cmd_value; volatile int print_rate; - if (strchr((char *)cmd_line, '\n') && (strchr((char *)cmd_line, 'G') || strchr((char *)cmd_line, 'M') || strchr((char *)cmd_line, 'T'))) { - tmpStr = (uint8_t *)strchr((char *)cmd_line, '\n'); - if (tmpStr) *tmpStr = '\0'; - tmpStr = (uint8_t *)strchr((char *)cmd_line, '\r'); - if (tmpStr) *tmpStr = '\0'; + // Only accept commands with a linefeed + char * const lfStr = strchr((char *)cmd_line, '\n'); + if (!lfStr) return; - tmpStr = (uint8_t *)strchr((char *)cmd_line, '*'); - if (tmpStr) *tmpStr = '\0'; + // Only accept commands with G, M, or T somewhere + const char * const gStr = strchr((char *)cmd_line, 'G'); + const char * const mStr = strchr((char *)cmd_line, 'M'); + const char * const tStr = strchr((char *)cmd_line, 'T'); + if (!(gStr || mStr || tStr)) return; - tmpStr = (uint8_t *)strchr((char *)cmd_line, 'M'); - if (tmpStr) { - cmd_value = atoi((char *)(tmpStr + 1)); - tmpStr = (uint8_t *)strchr((char *)tmpStr, ' '); + // Replace the linefeed with nul terminator + *lfStr = '\0'; - switch (cmd_value) { + // Terminate on the first cr, if any + char * const crStr = strchr((char *)cmd_line, '\r'); + if (crStr) *crStr = '\0'; - case 20: // M20: Print SD / µdisk file - file_writer.fileTransfer = 0; - if (uiCfg.print_state == IDLE) { - int index = 0; + // Terminate on the checksum marker, if any + char * const aStr = strchr((char *)cmd_line, '*'); + if (aStr) *aStr = '\0'; - if (tmpStr == 0) { - gCfgItems.fileSysType = FILE_SYS_SD; + // Handle some M commands here + if (mStr) { + cmd_value = atoi(mStr + 1); + char * const spStr = strchr(mStr, ' '); + + switch (cmd_value) { + + case 20: // M20: Print SD / µdisk file + file_writer.fileTransfer = 0; + if (uiCfg.print_state == IDLE) { + int index = 0; + if (spStr == nullptr) { + gCfgItems.fileSysType = FILE_SYS_SD; + send_to_wifi((uint8_t *)(STR_BEGIN_FILE_LIST "\r\n"), strlen(STR_BEGIN_FILE_LIST "\r\n")); + get_file_list("0:/", false); + send_to_wifi((uint8_t *)(STR_END_FILE_LIST "\r\n"), strlen(STR_END_FILE_LIST "\r\n")); + send_ok_to_wifi(); + break; + } + + while (mStr[index] == ' ') index++; + + if (gCfgItems.wifi_type == ESP_WIFI) { + char * const path = (char *)tempBuf; + if (strlen(&mStr[index]) < 80) { send_to_wifi((uint8_t *)(STR_BEGIN_FILE_LIST "\r\n"), strlen(STR_BEGIN_FILE_LIST "\r\n")); - get_file_list((char *)"0:/"); + + if (strncmp(&mStr[index], "1:", 2) == 0) + gCfgItems.fileSysType = FILE_SYS_SD; + else if (strncmp(&mStr[index], "0:", 2) == 0) + gCfgItems.fileSysType = FILE_SYS_USB; + + strcpy(path, &mStr[index]); + const bool with_longnames = strchr(mStr, 'L') != nullptr; + get_file_list(path, with_longnames); send_to_wifi((uint8_t *)(STR_END_FILE_LIST "\r\n"), strlen(STR_END_FILE_LIST "\r\n")); - SEND_OK_TO_WIFI; - break; } + send_ok_to_wifi(); + } + } + break; - while (tmpStr[index] == ' ') index++; + case 21: send_ok_to_wifi(); break; // Init SD card - if (gCfgItems.wifi_type == ESP_WIFI) { - char *path = (char *)tempBuf; + case 23: + // Select the file + if (uiCfg.print_state == IDLE) { + int index = 0; + while (mStr[index] == ' ') index++; - if (strlen((char *)&tmpStr[index]) < 80) { - send_to_wifi((uint8_t *)(STR_BEGIN_FILE_LIST "\r\n"), strlen(STR_BEGIN_FILE_LIST "\r\n")); + if (strstr_P(&mStr[index], PSTR(".g")) || strstr_P(&mStr[index], PSTR(".G"))) { + if (strlen(&mStr[index]) < 80) { + ZERO(list_file.file_name[sel_id]); + ZERO(list_file.long_name[sel_id]); + uint8_t has_path_selected = 0; - if (strncmp((char *)&tmpStr[index], "1:", 2) == 0) + if (gCfgItems.wifi_type == ESP_WIFI) { + if (strncmp_P(&mStr[index], PSTR("1:"), 2) == 0) { gCfgItems.fileSysType = FILE_SYS_SD; - else if (strncmp((char *)&tmpStr[index], "0:", 2) == 0) + has_path_selected = 1; + } + else if (strncmp_P(&mStr[index], PSTR("0:"), 2) == 0) { gCfgItems.fileSysType = FILE_SYS_USB; + has_path_selected = 1; + } + else if (mStr[index] != '/') + strcat_P((char *)list_file.file_name[sel_id], PSTR("/")); - strcpy((char *)path, (char *)&tmpStr[index]); - get_file_list(path); - send_to_wifi((uint8_t *)(STR_END_FILE_LIST "\r\n"), strlen(STR_END_FILE_LIST "\r\n")); - } - SEND_OK_TO_WIFI; - } - } - break; - - case 21: SEND_OK_TO_WIFI; break; // Init SD card - - case 23: - // Select the file - if (uiCfg.print_state == IDLE) { - int index = 0; - while (tmpStr[index] == ' ') index++; - - if (strstr_P((char *)&tmpStr[index], PSTR(".g")) || strstr_P((char *)&tmpStr[index], PSTR(".G"))) { - if (strlen((char *)&tmpStr[index]) < 80) { - ZERO(list_file.file_name[sel_id]); - ZERO(list_file.long_name[sel_id]); - uint8_t has_path_selected = 0; - - if (gCfgItems.wifi_type == ESP_WIFI) { - if (strncmp_P((char *)&tmpStr[index], PSTR("1:"), 2) == 0) { - gCfgItems.fileSysType = FILE_SYS_SD; - has_path_selected = 1; - } - else if (strncmp_P((char *)&tmpStr[index], PSTR("0:"), 2) == 0) { - gCfgItems.fileSysType = FILE_SYS_USB; - has_path_selected = 1; - } - else if (tmpStr[index] != '/') + if (file_writer.fileTransfer == 1) { + char dosName[FILENAME_LENGTH]; + uint8_t fileName[sizeof(list_file.file_name[sel_id])]; + fileName[0] = '\0'; + if (has_path_selected == 1) { + strcat((char *)fileName, &mStr[index + 3]); strcat_P((char *)list_file.file_name[sel_id], PSTR("/")); - - if (file_writer.fileTransfer == 1) { - char dosName[FILENAME_LENGTH]; - uint8_t fileName[sizeof(list_file.file_name[sel_id])]; - fileName[0] = '\0'; - if (has_path_selected == 1) { - strcat((char *)fileName, (char *)&tmpStr[index + 3]); - strcat_P((char *)list_file.file_name[sel_id], PSTR("/")); - } - else strcat((char *)fileName, (char *)&tmpStr[index]); - if (!longName2DosName((const char *)fileName, dosName)) - strcpy_P(list_file.file_name[sel_id], PSTR("notValid")); - strcat((char *)list_file.file_name[sel_id], dosName); - strcat((char *)list_file.long_name[sel_id], dosName); } - else { - strcat((char *)list_file.file_name[sel_id], (char *)&tmpStr[index]); - strcat((char *)list_file.long_name[sel_id], (char *)&tmpStr[index]); - } - + else strcat((char *)fileName, &mStr[index]); + if (!longName2DosName((const char *)fileName, dosName)) + strcpy_P(list_file.file_name[sel_id], PSTR("notValid")); + strcat((char *)list_file.file_name[sel_id], dosName); + strcat((char *)list_file.long_name[sel_id], (const char *)fileName); } - else - strcpy(list_file.file_name[sel_id], (char *)&tmpStr[index]); - - char *cur_name=strrchr(list_file.file_name[sel_id],'/'); - - card.openFileRead(cur_name); - - if (card.isFileOpen()) - send_to_wifi((uint8_t *)"File selected\r\n", strlen("File selected\r\n")); else { - send_to_wifi((uint8_t *)"file.open failed\r\n", strlen("file.open failed\r\n")); - strcpy_P(list_file.file_name[sel_id], PSTR("notValid")); + strcat((char *)list_file.file_name[sel_id], &mStr[index]); + strcat((char *)list_file.long_name[sel_id], &mStr[index]); } - SEND_OK_TO_WIFI; + } + else + strcpy(list_file.file_name[sel_id], &mStr[index]); + + char *cur_name = strrchr(list_file.file_name[sel_id],'/'); + + card.openFileRead(cur_name); + + if (card.isFileOpen()) + send_to_wifi((uint8_t *)"File selected\r\n", strlen("File selected\r\n")); + else { + send_to_wifi((uint8_t *)"file.open failed\r\n", strlen("file.open failed\r\n")); + strcpy_P(list_file.file_name[sel_id], PSTR("notValid")); + } + send_ok_to_wifi(); } } - break; - - case 24: - if (strcmp_P(list_file.file_name[sel_id], PSTR("notValid")) != 0) { - if (uiCfg.print_state == IDLE) { - clear_cur_ui(); - reset_print_time(); - start_print_time(); - preview_gcode_prehandle(list_file.file_name[sel_id]); - uiCfg.print_state = WORKING; - lv_draw_printing(); - - #if ENABLED(SDSUPPORT) - if (!gcode_preview_over) { - char *cur_name = strrchr(list_file.file_name[sel_id], '/'); - - MediaFile file; - MediaFile *curDir; - card.abortFilePrintNow(); - const char * const fname = card.diveToFile(false, curDir, cur_name); - if (!fname) return; - if (file.open(curDir, fname, O_READ)) { - gCfgItems.curFilesize = file.fileSize(); - file.close(); - update_spi_flash(); - } - card.openFileRead(cur_name); - if (card.isFileOpen()) { - //saved_feedrate_percentage = feedrate_percentage; - feedrate_percentage = 100; - #if HAS_EXTRUDERS - planner.flow_percentage[0] = 100; - planner.e_factor[0] = planner.flow_percentage[0] * 0.01f; - #endif - #if HAS_MULTI_EXTRUDER - planner.flow_percentage[1] = 100; - planner.e_factor[1] = planner.flow_percentage[1] * 0.01f; - #endif - card.startOrResumeFilePrinting(); - TERN_(POWER_LOSS_RECOVERY, recovery.prepare()); - once_flag = false; - } - } - #endif - } - else if (uiCfg.print_state == PAUSED) { - uiCfg.print_state = RESUMING; - clear_cur_ui(); - start_print_time(); - - if (gCfgItems.from_flash_pic) - flash_preview_begin = true; - else - default_preview_flg = true; - lv_draw_printing(); - } - else if (uiCfg.print_state == REPRINTING) { - uiCfg.print_state = REPRINTED; - clear_cur_ui(); - start_print_time(); - if (gCfgItems.from_flash_pic) - flash_preview_begin = true; - else - default_preview_flg = true; - lv_draw_printing(); - } - } - SEND_OK_TO_WIFI; - break; - - case 25: - // Pause print file - if (uiCfg.print_state == WORKING) { - stop_print_time(); + } + break; + case 24: + if (strcmp_P(list_file.file_name[sel_id], PSTR("notValid")) != 0) { + if (uiCfg.print_state == IDLE) { clear_cur_ui(); + reset_print_time(); + start_print_time(); + preview_gcode_prehandle(list_file.file_name[sel_id]); + uiCfg.print_state = WORKING; + lv_draw_printing(); #if ENABLED(SDSUPPORT) - card.pauseSDPrint(); - uiCfg.print_state = PAUSING; + if (!gcode_preview_over) { + char *cur_name = strrchr(list_file.file_name[sel_id], '/'); + + MediaFile file; + MediaFile *curDir; + card.abortFilePrintNow(); + const char * const fname = card.diveToFile(false, curDir, cur_name); + if (!fname) return; + if (file.open(curDir, fname, O_READ)) { + gCfgItems.curFilesize = file.fileSize(); + file.close(); + update_spi_flash(); + } + card.openFileRead(cur_name); + if (card.isFileOpen()) { + //saved_feedrate_percentage = feedrate_percentage; + feedrate_percentage = 100; + #if HAS_EXTRUDERS + planner.flow_percentage[0] = 100; + planner.e_factor[0] = planner.flow_percentage[0] * 0.01f; + #endif + #if HAS_MULTI_EXTRUDER + planner.flow_percentage[1] = 100; + planner.e_factor[1] = planner.flow_percentage[1] * 0.01f; + #endif + card.startOrResumeFilePrinting(); + TERN_(POWER_LOSS_RECOVERY, recovery.prepare()); + once_flag = false; + } + } #endif + } + else if (uiCfg.print_state == PAUSED) { + uiCfg.print_state = RESUMING; + clear_cur_ui(); + start_print_time(); + if (gCfgItems.from_flash_pic) flash_preview_begin = true; else default_preview_flg = true; lv_draw_printing(); - SEND_OK_TO_WIFI; - } - break; - - case 26: - // Stop print file - if ((uiCfg.print_state == WORKING) || (uiCfg.print_state == PAUSED) || (uiCfg.print_state == REPRINTING)) { - stop_print_time(); - - clear_cur_ui(); - #if ENABLED(SDSUPPORT) - uiCfg.print_state = IDLE; - card.abortFilePrintSoon(); - #endif - - lv_draw_ready_print(); - - SEND_OK_TO_WIFI; - } - break; - - case 27: - // Report print rate - if ((uiCfg.print_state == WORKING) || (uiCfg.print_state == PAUSED)|| (uiCfg.print_state == REPRINTING)) { - print_rate = uiCfg.totalSend; - ZERO(tempBuf); - sprintf_P((char *)tempBuf, PSTR("M27 %d\r\n"), print_rate); - send_to_wifi((uint8_t *)tempBuf, strlen((char *)tempBuf)); - } - break; - - case 28: - // Begin to transfer file to filesys - if (uiCfg.print_state == IDLE) { - - int index = 0; - while (tmpStr[index] == ' ') index++; - - if (strstr_P((char *)&tmpStr[index], PSTR(".g")) || strstr_P((char *)&tmpStr[index], PSTR(".G"))) { - strcpy((char *)file_writer.saveFileName, (char *)&tmpStr[index]); - - if (gCfgItems.fileSysType == FILE_SYS_SD) { - ZERO(tempBuf); - sprintf_P((char *)tempBuf, PSTR("%s"), file_writer.saveFileName); - } - else if (gCfgItems.fileSysType == FILE_SYS_USB) { - ZERO(tempBuf); - sprintf_P((char *)tempBuf, PSTR("%s"), (char *)file_writer.saveFileName); - } - mount_file_sys(gCfgItems.fileSysType); - - #if ENABLED(SDSUPPORT) - char *cur_name = strrchr(list_file.file_name[sel_id], '/'); - card.openFileWrite(cur_name); - if (card.isFileOpen()) { - ZERO(file_writer.saveFileName); - strcpy((char *)file_writer.saveFileName, (char *)&tmpStr[index]); - ZERO(tempBuf); - sprintf_P((char *)tempBuf, PSTR("Writing to file: %s\r\n"), (char *)file_writer.saveFileName); - wifi_ret_ack(); - send_to_wifi((uint8_t *)tempBuf, strlen((char *)tempBuf)); - wifi_link_state = WIFI_WAIT_TRANS_START; - } - else { - wifi_link_state = WIFI_CONNECTED; - clear_cur_ui(); - lv_draw_dialog(DIALOG_TRANSFER_NO_DEVICE); - } - #endif - } - } - break; - - case 105: - case 991: - ZERO(tempBuf); - if (cmd_value == 105) { - - SEND_OK_TO_WIFI; - - char *outBuf = (char *)tempBuf; - char tbuf[34]; - - sprintf_P(tbuf, PSTR("%d /%d"), thermalManager.wholeDegHotend(0), thermalManager.degTargetHotend(0)); - - const int tlen = strlen(tbuf); - sprintf_P(outBuf, PSTR("T:%s"), tbuf); - outBuf += 2 + tlen; - - strcpy_P(outBuf, PSTR(" B:")); - outBuf += 3; - #if HAS_HEATED_BED - sprintf_P(outBuf, PSTR("%d /%d"), thermalManager.wholeDegBed(), thermalManager.degTargetBed()); - #else - strcpy_P(outBuf, PSTR("0 /0")); - #endif - outBuf += 4; - - strcat_P(outBuf, PSTR(" T0:")); - strcat(outBuf, tbuf); - outBuf += 4 + tlen; - - strcat_P(outBuf, PSTR(" T1:")); - outBuf += 4; - #if HAS_MULTI_HOTEND - sprintf_P(outBuf, PSTR("%d /%d"), thermalManager.wholeDegHotend(1), thermalManager.degTargetHotend(1)); - #else - strcpy_P(outBuf, PSTR("0 /0")); - #endif - outBuf += 4; - - strcat_P(outBuf, PSTR(" @:0 B@:0\r\n")); - } - else { - sprintf_P((char *)tempBuf, PSTR("T:%d /%d B:%d /%d T0:%d /%d T1:%d /%d @:0 B@:0\r\n"), - thermalManager.wholeDegHotend(0), thermalManager.degTargetHotend(0), - TERN0(HAS_HEATED_BED, thermalManager.wholeDegBed()), - TERN0(HAS_HEATED_BED, thermalManager.degTargetBed()), - thermalManager.wholeDegHotend(0), thermalManager.degTargetHotend(0), - TERN0(HAS_MULTI_HOTEND, thermalManager.wholeDegHotend(1)), - TERN0(HAS_MULTI_HOTEND, thermalManager.degTargetHotend(1)) - ); - } - - send_to_wifi((uint8_t *)tempBuf, strlen((char *)tempBuf)); - queue.enqueue_one(F("M105")); - break; - - case 992: - if ((uiCfg.print_state == WORKING) || (uiCfg.print_state == PAUSED)) { - ZERO(tempBuf); - sprintf_P((char *)tempBuf, PSTR("M992 %d%d:%d%d:%d%d\r\n"), print_time.hours/10, print_time.hours%10, print_time.minutes/10, print_time.minutes%10, print_time.seconds/10, print_time.seconds%10); - wifi_ret_ack(); - send_to_wifi((uint8_t *)tempBuf, strlen((char *)tempBuf)); - } - break; - - case 994: - if ((uiCfg.print_state == WORKING) || (uiCfg.print_state == PAUSED)) { - ZERO(tempBuf); - if (strlen((char *)list_file.file_name[sel_id]) > (100 - 1)) return; - sprintf_P((char *)tempBuf, PSTR("M994 %s;%d\n"), list_file.file_name[sel_id], (int)gCfgItems.curFilesize); - wifi_ret_ack(); - send_to_wifi((uint8_t *)tempBuf, strlen((char *)tempBuf)); - } - break; - - case 997: - if (uiCfg.print_state == IDLE) { - wifi_ret_ack(); - send_to_wifi((uint8_t *)"M997 IDLE\r\n", strlen("M997 IDLE\r\n")); - } - else if (uiCfg.print_state == WORKING) { - wifi_ret_ack(); - send_to_wifi((uint8_t *)"M997 PRINTING\r\n", strlen("M997 PRINTING\r\n")); - } - else if (uiCfg.print_state == PAUSED) { - wifi_ret_ack(); - send_to_wifi((uint8_t *)"M997 PAUSE\r\n", strlen("M997 PAUSE\r\n")); } else if (uiCfg.print_state == REPRINTING) { - wifi_ret_ack(); - send_to_wifi((uint8_t *)"M997 PAUSE\r\n", strlen("M997 PAUSE\r\n")); + uiCfg.print_state = REPRINTED; + clear_cur_ui(); + start_print_time(); + if (gCfgItems.from_flash_pic) + flash_preview_begin = true; + else + default_preview_flg = true; + lv_draw_printing(); } - if (!uiCfg.command_send) get_wifi_list_command_send(); - break; - - case 998: - if (uiCfg.print_state == IDLE) { - const int v = atoi((char *)tmpStr); - if (v == 0 || v == 1) set_cur_file_sys(v); - wifi_ret_ack(); - } - break; - - case 115: - ZERO(tempBuf); - SEND_OK_TO_WIFI; - send_to_wifi((uint8_t *)"FIRMWARE_NAME:Robin_nano\r\n", strlen("FIRMWARE_NAME:Robin_nano\r\n")); - break; - - default: - strcat_P((char *)cmd_line, PSTR("\n")); - - if (espGcodeFifo.wait_tick > 5) { - const uint32_t left = espGcodeFifo.r > espGcodeFifo.w - ? espGcodeFifo.r - espGcodeFifo.w - 1 - : WIFI_GCODE_BUFFER_SIZE + espGcodeFifo.r - espGcodeFifo.w - 1; - - if (left >= strlen((const char *)cmd_line)) { - for (uint32_t index = 0; index < strlen((const char *)cmd_line); index++) { - espGcodeFifo.Buffer[espGcodeFifo.w] = cmd_line[index] ; - espGcodeFifo.w = (espGcodeFifo.w + 1) % WIFI_GCODE_BUFFER_SIZE; - } - if (left - WIFI_GCODE_BUFFER_LEAST_SIZE >= strlen((const char *)cmd_line)) - SEND_OK_TO_WIFI; - else - need_ok_later = true; - } - } - break; - } - } - else { - strcat_P((char *)cmd_line, PSTR("\n")); - - if (espGcodeFifo.wait_tick > 5) { - const uint32_t left_g = espGcodeFifo.r > espGcodeFifo.w - ? espGcodeFifo.r - espGcodeFifo.w - 1 - : WIFI_GCODE_BUFFER_SIZE + espGcodeFifo.r - espGcodeFifo.w - 1; - - if (left_g >= strlen((const char *)cmd_line)) { - for (uint32_t index = 0; index < strlen((const char *)cmd_line); index++) { - espGcodeFifo.Buffer[espGcodeFifo.w] = cmd_line[index] ; - espGcodeFifo.w = (espGcodeFifo.w + 1) % WIFI_GCODE_BUFFER_SIZE; - } - if (left_g - WIFI_GCODE_BUFFER_LEAST_SIZE >= strlen((const char *)cmd_line)) - SEND_OK_TO_WIFI; - else - need_ok_later = true; } + send_ok_to_wifi(); + break; + + case 25: + // Pause print file + if (uiCfg.print_state == WORKING) { + stop_print_time(); + + clear_cur_ui(); + + #if ENABLED(SDSUPPORT) + card.pauseSDPrint(); + uiCfg.print_state = PAUSING; + #endif + if (gCfgItems.from_flash_pic) + flash_preview_begin = true; + else + default_preview_flg = true; + lv_draw_printing(); + send_ok_to_wifi(); + } + break; + + case 26: + // Stop print file + if (uiCfg.print_state == WORKING || uiCfg.print_state == PAUSED || uiCfg.print_state == REPRINTING) { + stop_print_time(); + + clear_cur_ui(); + #if ENABLED(SDSUPPORT) + uiCfg.print_state = IDLE; + card.abortFilePrintSoon(); + #endif + + lv_draw_ready_print(); + + send_ok_to_wifi(); + } + break; + + case 27: + // Report print rate + if (uiCfg.print_state == WORKING || uiCfg.print_state == PAUSED|| uiCfg.print_state == REPRINTING) { + print_rate = uiCfg.totalSend; + ZERO(tempBuf); + sprintf_P((char *)tempBuf, PSTR("M27 %d\r\n"), print_rate); + send_to_wifi((uint8_t *)tempBuf, strlen((char *)tempBuf)); + } + break; + + case 28: + // Begin to transfer file to filesys + if (uiCfg.print_state == IDLE) { + + int index = 0; + while (mStr[index] == ' ') index++; + + if (strstr_P(&mStr[index], PSTR(".g")) || strstr_P(&mStr[index], PSTR(".G"))) { + strcpy((char *)file_writer.saveFileName, &mStr[index]); + + if (gCfgItems.fileSysType == FILE_SYS_SD) { + ZERO(tempBuf); + sprintf_P((char *)tempBuf, PSTR("%s"), file_writer.saveFileName); + } + else if (gCfgItems.fileSysType == FILE_SYS_USB) { + ZERO(tempBuf); + sprintf_P((char *)tempBuf, PSTR("%s"), (char *)file_writer.saveFileName); + } + mount_file_sys(gCfgItems.fileSysType); + + #if ENABLED(SDSUPPORT) + char *cur_name = strrchr(list_file.file_name[sel_id], '/'); + card.openFileWrite(cur_name); + if (card.isFileOpen()) { + ZERO(file_writer.saveFileName); + strcpy((char *)file_writer.saveFileName, &mStr[index]); + ZERO(tempBuf); + sprintf_P((char *)tempBuf, PSTR("Writing to file: %s\r\n"), (char *)file_writer.saveFileName); + wifi_ret_ack(); + send_to_wifi((uint8_t *)tempBuf, strlen((char *)tempBuf)); + wifi_link_state = WIFI_WAIT_TRANS_START; + } + else { + wifi_link_state = WIFI_CONNECTED; + clear_cur_ui(); + lv_draw_dialog(DIALOG_TRANSFER_NO_DEVICE); + } + #endif + } + } + break; + + case 105: + case 991: + ZERO(tempBuf); + if (cmd_value == 105) { + + send_ok_to_wifi(); + + char *outBuf = (char *)tempBuf; + char tbuf[34]; + + sprintf_P(tbuf, PSTR("%d /%d"), thermalManager.wholeDegHotend(0), thermalManager.degTargetHotend(0)); + + const int tlen = strlen(tbuf); + sprintf_P(outBuf, PSTR("T:%s"), tbuf); + outBuf += 2 + tlen; + + strcpy_P(outBuf, PSTR(" B:")); + outBuf += 3; + #if HAS_HEATED_BED + sprintf_P(outBuf, PSTR("%d /%d"), thermalManager.wholeDegBed(), thermalManager.degTargetBed()); + #else + strcpy_P(outBuf, PSTR("0 /0")); + #endif + outBuf += 4; + + strcat_P(outBuf, PSTR(" T0:")); + strcat(outBuf, tbuf); + outBuf += 4 + tlen; + + strcat_P(outBuf, PSTR(" T1:")); + outBuf += 4; + #if HAS_MULTI_HOTEND + sprintf_P(outBuf, PSTR("%d /%d"), thermalManager.wholeDegHotend(1), thermalManager.degTargetHotend(1)); + #else + strcpy_P(outBuf, PSTR("0 /0")); + #endif + outBuf += 4; + + strcat_P(outBuf, PSTR(" @:0 B@:0\r\n")); + } + else { + sprintf_P((char *)tempBuf, PSTR("T:%d /%d B:%d /%d T0:%d /%d T1:%d /%d @:0 B@:0\r\n"), + thermalManager.wholeDegHotend(0), thermalManager.degTargetHotend(0), + TERN0(HAS_HEATED_BED, thermalManager.wholeDegBed()), + TERN0(HAS_HEATED_BED, thermalManager.degTargetBed()), + thermalManager.wholeDegHotend(0), thermalManager.degTargetHotend(0), + TERN0(HAS_MULTI_HOTEND, thermalManager.wholeDegHotend(1)), + TERN0(HAS_MULTI_HOTEND, thermalManager.degTargetHotend(1)) + ); + } + + send_to_wifi((uint8_t *)tempBuf, strlen((char *)tempBuf)); + queue.enqueue_one(F("M105")); + break; + + case 992: + if (uiCfg.print_state == WORKING || uiCfg.print_state == PAUSED) { + ZERO(tempBuf); + sprintf_P((char *)tempBuf, PSTR("M992 %d%d:%d%d:%d%d\r\n"), print_time.hours/10, print_time.hours%10, print_time.minutes/10, print_time.minutes%10, print_time.seconds/10, print_time.seconds%10); + wifi_ret_ack(); + send_to_wifi((uint8_t *)tempBuf, strlen((char *)tempBuf)); + } + break; + + case 994: + if (uiCfg.print_state == WORKING || uiCfg.print_state == PAUSED) { + ZERO(tempBuf); + if (strlen((char *)list_file.file_name[sel_id]) > (100 - 1)) return; + sprintf_P((char *)tempBuf, PSTR("M994 %s;%d\n"), list_file.file_name[sel_id], (int)gCfgItems.curFilesize); + wifi_ret_ack(); + send_to_wifi((uint8_t *)tempBuf, strlen((char *)tempBuf)); + } + break; + + case 997: + #define SENDIDLE "M997 IDLE\r\n" + #define SENDPRINTING "M997 PRINTING\r\n" + #define SENDPAUSE "M997 PAUSE\r\n" + switch (uiCfg.print_state) { + default: break; + case IDLE: + wifi_ret_ack(); + send_to_wifi((uint8_t *)SENDIDLE, strlen(SENDIDLE)); + break; + case WORKING: + wifi_ret_ack(); + send_to_wifi((uint8_t *)SENDPRINTING, strlen(SENDPRINTING)); + break; + case PAUSED: + wifi_ret_ack(); + send_to_wifi((uint8_t *)SENDPAUSE, strlen(SENDPAUSE)); + break; + case REPRINTING: + wifi_ret_ack(); + send_to_wifi((uint8_t *)SENDPAUSE, strlen(SENDPAUSE)); + break; + } + if (!uiCfg.command_send) get_wifi_list_command_send(); + break; + + case 998: + if (uiCfg.print_state == IDLE) { + const int v = atoi(mStr); + if (v == 0 || v == 1) set_cur_file_sys(v); + wifi_ret_ack(); + } + break; + + case 115: + ZERO(tempBuf); + send_ok_to_wifi(); + #define SENDFW "FIRMWARE_NAME:Robin_nano\r\n" + send_to_wifi((uint8_t *)SENDFW, strlen(SENDFW)); + break; + + default: + strcat_P((char *)cmd_line, PSTR("\n")); + + if (espGcodeFifo.wait_tick > 5) { + uint32_t left = espGcodeFifo.r - espGcodeFifo.w - 1; + if (espGcodeFifo.r > espGcodeFifo.w) left += WIFI_GCODE_BUFFER_SIZE; + + if (left >= strlen((const char *)cmd_line)) { + for (uint32_t index = 0; index < strlen((const char *)cmd_line); index++) { + espGcodeFifo.Buffer[espGcodeFifo.w] = cmd_line[index]; + espGcodeFifo.w = (espGcodeFifo.w + 1) % (WIFI_GCODE_BUFFER_SIZE); + } + if (left - (WIFI_GCODE_BUFFER_LEAST_SIZE) >= strlen((const char *)cmd_line)) + send_ok_to_wifi(); + else + need_ok_later = true; + } + } + break; + } + } + else { + // Add another linefeed to the command, terminate with null + strcat_P((char *)cmd_line, PSTR("\n")); + + if (espGcodeFifo.wait_tick > 5) { + uint32_t left_g = espGcodeFifo.r - espGcodeFifo.w - 1; + if (espGcodeFifo.r > espGcodeFifo.w) left_g += WIFI_GCODE_BUFFER_SIZE; + + if (left_g >= strlen((char * const)cmd_line)) { + for (uint32_t index = 0; index < strlen((char * const)cmd_line); index++) { + espGcodeFifo.Buffer[espGcodeFifo.w] = cmd_line[index]; + espGcodeFifo.w = (espGcodeFifo.w + 1) % (WIFI_GCODE_BUFFER_SIZE); + } + if (left_g - (WIFI_GCODE_BUFFER_LEAST_SIZE) >= strlen((char * const)cmd_line)) + send_ok_to_wifi(); + else + need_ok_later = true; } } } @@ -1281,7 +1309,7 @@ void get_wifi_list_command_send() { raw_send_to_wifi(cmd_wifi_list, COUNT(cmd_wifi_list)); } -static void net_msg_handle(uint8_t * msg, uint16_t msgLen) { +static void net_msg_handle(const uint8_t * const msg, const uint16_t msgLen) { int wifiNameLen, wifiKeyLen, hostLen, id_len, ver_len; if (msgLen <= 0) return; @@ -1316,7 +1344,7 @@ static void net_msg_handle(uint8_t * msg, uint16_t msgLen) { } } - cloud_para.state =msg[10 + wifiNameLen + wifiKeyLen]; + cloud_para.state = msg[10 + wifiNameLen + wifiKeyLen]; hostLen = msg[11 + wifiNameLen + wifiKeyLen]; if (cloud_para.state) { if (hostLen < 96) { @@ -1356,7 +1384,7 @@ static void net_msg_handle(uint8_t * msg, uint16_t msgLen) { } } -static void wifi_list_msg_handle(uint8_t * msg, uint16_t msgLen) { +static void wifi_list_msg_handle(const uint8_t * const msg, const uint16_t msgLen) { int wifiNameLen,wifiMsgIdex = 1; int8_t wifi_name_is_same = 0; int8_t i, j; @@ -1415,16 +1443,15 @@ static void wifi_list_msg_handle(uint8_t * msg, uint16_t msgLen) { } } -static void gcode_msg_handle(uint8_t * msg, uint16_t msgLen) { +static void gcode_msg_handle(const uint8_t * const msg, const uint16_t msgLen) { uint8_t gcodeBuf[100] = { 0 }; - char *index_s, *index_e; if (msgLen <= 0) return; - index_s = (char *)msg; - index_e = (char *)strchr((char *)msg, '\n'); + char *index_s = (char *)msg, + *index_e = strchr((char *)msg, '\n'); if (*msg == 'N') { - index_s = (char *)strchr((char *)msg, ' '); + index_s = strchr((char *)msg, ' '); while (*index_s == ' ') index_s++; } while ((index_e != 0) && ((int)index_s < (int)index_e)) { @@ -1435,7 +1462,7 @@ static void gcode_msg_handle(uint8_t * msg, uint16_t msgLen) { } while ((*index_e == '\r') || (*index_e == '\n')) index_e++; index_s = index_e; - index_e = (char *)strchr(index_s, '\n'); + index_e = strchr(index_s, '\n'); } } @@ -1482,8 +1509,8 @@ void utf8_2_unicode(uint8_t *source, uint8_t Len) { COPY(source, FileName_unicode); } -static void file_first_msg_handle(uint8_t * msg, uint16_t msgLen) { - uint8_t fileNameLen = *msg; +static void file_first_msg_handle(const uint8_t * const msg, const uint16_t msgLen) { + const uint8_t fileNameLen = *msg; if (msgLen != fileNameLen + 5) return; @@ -1565,8 +1592,8 @@ static void file_first_msg_handle(uint8_t * msg, uint16_t msgLen) { #define FRAG_MASK ~_BV32(31) -static void file_fragment_msg_handle(uint8_t * msg, uint16_t msgLen) { - uint32_t frag = *((uint32_t *)msg); +static void file_fragment_msg_handle(const uint8_t * const msg, const uint16_t msgLen) { + const uint32_t frag = *((uint32_t *)msg); if ((frag & FRAG_MASK) != (uint32_t)(lastFragment + 1)) { ZERO(public_buf); file_writer.write_index = 0; @@ -1842,7 +1869,7 @@ void wifi_rcv_handle() { } if (need_ok_later && !queue.ring_buffer.full()) { need_ok_later = false; - send_to_wifi((uint8_t *)"ok\r\n", strlen("ok\r\n")); + send_ok_to_wifi(); } } @@ -1872,7 +1899,7 @@ void wifi_rcv_handle() { if (wifiTransError.flag == 0x1) { wifiTransError.now_tick = getWifiTick(); - if (getWifiTickDiff(wifiTransError.start_tick, wifiTransError.now_tick) > WAIT_ESP_TRANS_TIMEOUT_TICK) { + if (getWifiTickDiff(wifiTransError.start_tick, wifiTransError.now_tick) > (WAIT_ESP_TRANS_TIMEOUT_TICK)) { wifiTransError.flag = 0; WIFI_IO1_RESET(); } @@ -1992,7 +2019,7 @@ void get_wifi_commands() { char wifi_char = espGcodeFifo.Buffer[espGcodeFifo.r]; - espGcodeFifo.r = (espGcodeFifo.r + 1) % WIFI_GCODE_BUFFER_SIZE; + espGcodeFifo.r = (espGcodeFifo.r + 1) % (WIFI_GCODE_BUFFER_SIZE); /** * If the character ends the line diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_module.h b/Marlin/src/lcd/extui/mks_ui/wifi_module.h index 36998899b4..851e85c512 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_module.h +++ b/Marlin/src/lcd/extui/mks_ui/wifi_module.h @@ -163,8 +163,8 @@ typedef struct { //uint8_t uartTxBuffer[UART_FIFO_BUFFER_SIZE]; } SZ_USART_FIFO; -#define WIFI_GCODE_BUFFER_LEAST_SIZE 96 -#define WIFI_GCODE_BUFFER_SIZE (WIFI_GCODE_BUFFER_LEAST_SIZE * 3) +#define WIFI_GCODE_BUFFER_LEAST_SIZE 96 +#define WIFI_GCODE_BUFFER_SIZE (WIFI_GCODE_BUFFER_LEAST_SIZE * 3) typedef struct { uint8_t wait_tick; uint8_t Buffer[WIFI_GCODE_BUFFER_SIZE]; @@ -179,14 +179,14 @@ extern CLOUD_PARA cloud_para; extern WIFI_GCODE_BUFFER espGcodeFifo; -uint32_t getWifiTick(); -uint32_t getWifiTickDiff(int32_t lastTick, int32_t curTick); +millis_t getWifiTick(); +millis_t getWifiTickDiff(const millis_t lastTick, const millis_t curTick); void mks_esp_wifi_init(); extern int cfg_cloud_flag; -int send_to_wifi(uint8_t *buf, int len); +int send_to_wifi(uint8_t * const buf, const int len); void wifi_looping(); -int raw_send_to_wifi(uint8_t *buf, int len); +int raw_send_to_wifi(uint8_t * const buf, const int len); int package_to_wifi(WIFI_RET_TYPE type, uint8_t *buf, int len); void get_wifi_list_command_send(); void get_wifi_commands(); diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp index 44869d4770..398d35fdc3 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp @@ -38,10 +38,8 @@ extern SZ_USART_FIFO WifiRxFifo; -extern int readUsartFifo(SZ_USART_FIFO *fifo, int8_t *buf, int32_t len); -extern int writeUsartFifo(SZ_USART_FIFO * fifo, int8_t * buf, int32_t len); void esp_port_begin(uint8_t interrupt); -void wifi_delay(int n); +void wifi_delay(const uint16_t n); #define ARRAY_SIZE(a) sizeof(a) / sizeof((a)[0]) @@ -246,7 +244,7 @@ EspUploadResult readPacket(uint8_t op, uint32_t *valp, size_t *bodyLen, uint32_t const size_t headerLength = 8; - uint32_t startTime = getWifiTick(); + const millis_t startTime = getWifiTick(); uint8_t hdr[headerLength]; uint16_t hdrIdx = 0; diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_upload.h b/Marlin/src/lcd/extui/mks_ui/wifi_upload.h index 2daa505d90..524fb28f85 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_upload.h +++ b/Marlin/src/lcd/extui/mks_ui/wifi_upload.h @@ -59,8 +59,8 @@ typedef struct { UploadState state; uint32_t retriesPerBaudRate; uint32_t connectAttemptNumber; - uint32_t lastAttemptTime; - uint32_t lastResetTime; + millis_t lastAttemptTime; + millis_t lastResetTime; uint32_t uploadBlockNumber; uint32_t uploadNextPercentToReport; EspUploadResult uploadResult; From 8c64fdd091f825d7fdcb0eb903c5d1af49c76129 Mon Sep 17 00:00:00 2001 From: Liam Powell Date: Sat, 18 Mar 2023 17:41:20 +0800 Subject: [PATCH 143/659] =?UTF-8?q?=F0=9F=94=A8=20Fix=20STM32H723Vx=5Fbtt?= =?UTF-8?q?=20for=20case-sensitive=20(#25535)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/share/PlatformIO/boards/marlin_STM32H723Vx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot/share/PlatformIO/boards/marlin_STM32H723Vx.json b/buildroot/share/PlatformIO/boards/marlin_STM32H723Vx.json index 73620c162d..a2154d448a 100644 --- a/buildroot/share/PlatformIO/boards/marlin_STM32H723Vx.json +++ b/buildroot/share/PlatformIO/boards/marlin_STM32H723Vx.json @@ -6,7 +6,7 @@ "f_cpu": "550000000L", "mcu": "stm32h723vet6", "product_line": "STM32H723xx", - "variant": "MARLIN_H723vx" + "variant": "MARLIN_H723Vx" }, "connectivity": [ "can", From 927915a4e68772c348d3c67689363fc512559d14 Mon Sep 17 00:00:00 2001 From: George Fu Date: Sat, 18 Mar 2023 17:47:54 +0800 Subject: [PATCH 144/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20FYSETC=20Cheetah?= =?UTF-8?q?=20v2.0=20Servo/Probe=20pins=20(#24635)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- .../pins/stm32f4/pins_FYSETC_CHEETAH_V20.h | 26 ++++++++++--------- .../MARLIN_FYSETC_CHEETAH_V20/variant.h | 2 +- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h b/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h index 32ec518bf8..031caa1ce1 100644 --- a/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h +++ b/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h @@ -43,22 +43,24 @@ #define FLASH_ADDRESS_START 0x8004000 #endif -// -// Z Probe -// -#if ENABLED(BLTOUCH) - #error "You need to set jumper to 5v for Bltouch, then comment out this line to proceed." - #define SERVO0_PIN PA0 -#elif !defined(Z_MIN_PROBE_PIN) - #define Z_MIN_PROBE_PIN PA0 -#endif +#define SERVO0_PIN PB1 // BL-TOUCH/PWM // // Limit Switches // -#define X_STOP_PIN PB4 -#define Y_STOP_PIN PC8 -#define Z_STOP_PIN PB1 +#define X_STOP_PIN PB4 // X-MIN +#define Y_STOP_PIN PC8 // Y-MIN +#define Z_STOP_PIN PA0 // Z-MIN + +// +// Z Probe +// +#if ENABLED(BLTOUCH) + #error "You need to set jumper to 5V for BLTouch, then comment out this line to proceed." +#endif +#ifndef Z_MIN_PROBE_PIN + #define Z_MIN_PROBE_PIN PB1 // BL-TOUCH/PWM repurposed +#endif // // Filament runout diff --git a/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_CHEETAH_V20/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_CHEETAH_V20/variant.h index a090113fa3..041c43b55f 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_CHEETAH_V20/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_CHEETAH_V20/variant.h @@ -95,7 +95,7 @@ extern "C" { // Timer Definitions #define TIMER_TONE TIM2 // TIMER_TONE must be defined in this file -#define TIMER_SERVO TIM5 // TIMER_SERVO must be defined in this file +#define TIMER_SERVO TIM3 // TIMER_SERVO must be defined in this file #define TIMER_SERIAL TIM11 // TIMER_SERIAL must be defined in this file // UART Definitions From fbb1c82bc2acbbe3339e2283a797126b3c3ea515 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Paczy=C5=84ski?= Date: Sat, 18 Mar 2023 11:01:10 +0100 Subject: [PATCH 145/659] =?UTF-8?q?=F0=9F=90=9B=20Prevent=20MPC=20E-permm?= =?UTF-8?q?=20overrun=20in=20Load=20Filament=20(#25531)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/feature/pause.cpp | 5 +++++ Marlin/src/module/temperature.cpp | 17 +++++++++-------- Marlin/src/module/temperature.h | 8 +++----- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp index 83d149fa09..488f5920c2 100644 --- a/Marlin/src/feature/pause.cpp +++ b/Marlin/src/feature/pause.cpp @@ -234,6 +234,8 @@ bool load_filament(const_float_t slow_load_length/*=0*/, const_float_t fast_load TERN_(BELTPRINTER, do_blocking_move_to_xy(0.00, 50.00)); + TERN_(MPCTEMP, MPC::e_paused = true); + // Slow Load filament if (slow_load_length) unscaled_e_move(slow_load_length, FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE); @@ -297,6 +299,9 @@ bool load_filament(const_float_t slow_load_length/*=0*/, const_float_t fast_load } while (TERN0(M600_PURGE_MORE_RESUMABLE, pause_menu_response == PAUSE_RESPONSE_EXTRUDE_MORE)); #endif + + TERN_(MPCTEMP, MPC::e_paused = false); + TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_end()); return true; diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index bafade45dd..578fd112d2 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -319,6 +319,11 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); hotend_info_t Temperature::temp_hotend[HOTENDS]; constexpr celsius_t Temperature::hotend_maxtemp[HOTENDS]; + #if ENABLED(MPCTEMP) + bool MPC::e_paused; // = false + int32_t MPC::e_position; // = 0 + #endif + // Sanity-check max readable temperatures #define CHECK_MAXTEMP_(N,M,S) static_assert( \ S >= 998 || M <= _MAX(TT_NAME(S)[0].celsius, TT_NAME(S)[COUNT(TT_NAME(S)) - 1].celsius) - HOTEND_OVERSHOOT, \ @@ -588,10 +593,6 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); volatile bool Temperature::raw_temps_ready = false; -#if ENABLED(MPCTEMP) - int32_t Temperature::mpc_e_position; // = 0 -#endif - #define TEMPDIR(N) ((TEMP_SENSOR_##N##_RAW_LO_TEMP) < (TEMP_SENSOR_##N##_RAW_HI_TEMP) ? 1 : -1) #define TP_CMP(S,A,B) (TEMPDIR(S) < 0 ? ((A)<(B)) : ((A)>(B))) @@ -1511,14 +1512,14 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { if (this_hotend) { const int32_t e_position = stepper.position(E_AXIS); - const float e_speed = (e_position - mpc_e_position) * planner.mm_per_step[E_AXIS] / MPC_dT; + const float e_speed = (e_position - MPC::e_position) * planner.mm_per_step[E_AXIS] / MPC_dT; // The position can appear to make big jumps when, e.g., homing if (fabs(e_speed) > planner.settings.max_feedrate_mm_s[E_AXIS]) - mpc_e_position = e_position; + MPC::e_position = e_position; else if (e_speed > 0.0f) { // Ignore retract/recover moves - ambient_xfer_coeff += e_speed * mpc.filament_heat_capacity_permm; - mpc_e_position = e_position; + if (!MPC::e_paused) ambient_xfer_coeff += e_speed * mpc.filament_heat_capacity_permm; + MPC::e_position = e_position; } } diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index b8bf03bf31..0ab00ef768 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -377,7 +377,9 @@ typedef struct { float p, i, d, c, f; } raw_pidcf_t; #elif ENABLED(MPCTEMP) - typedef struct { + typedef struct MPC { + static bool e_paused; // Pause E filament permm tracking + static int32_t e_position; // For E tracking float heater_power; // M306 P float block_heat_capacity; // M306 C float sensor_responsiveness; // M306 R @@ -716,10 +718,6 @@ class Temperature { static hotend_watch_t watch_hotend[HOTENDS]; #endif - #if ENABLED(MPCTEMP) - static int32_t mpc_e_position; - #endif - #if HAS_HOTEND static temp_range_t temp_range[HOTENDS]; #endif From 5abfc6160f57f5e37c7e88bead4b5eef88832a9e Mon Sep 17 00:00:00 2001 From: Farva42 <100859196+Farva42@users.noreply.github.com> Date: Sat, 18 Mar 2023 04:14:51 -0600 Subject: [PATCH 146/659] =?UTF-8?q?=F0=9F=9A=B8=20Fix=20/=20improve=20LCD?= =?UTF-8?q?=5FBED=5FTRAMMING=20(#25425)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/gcode/probe/M401_M402.cpp | 27 ++-- Marlin/src/lcd/menu/menu_bed_tramming.cpp | 142 +++++++++++++--------- Marlin/src/module/probe.cpp | 7 +- Marlin/src/module/probe.h | 8 +- 4 files changed, 105 insertions(+), 79 deletions(-) diff --git a/Marlin/src/gcode/probe/M401_M402.cpp b/Marlin/src/gcode/probe/M401_M402.cpp index 3389574919..7114cad9e8 100644 --- a/Marlin/src/gcode/probe/M401_M402.cpp +++ b/Marlin/src/gcode/probe/M401_M402.cpp @@ -38,30 +38,33 @@ * With BLTOUCH_HS_MODE: * H Report the current BLTouch HS mode state and exit * S Set High Speed (HS) Mode and exit without deploy + * + * R Remain in place after deploying (and before activating) the probe */ void GcodeSuite::M401() { - const bool seenH = parser.seen_test('H'), - seenS = parser.seen('S'); - if (seenH || seenS) { - #ifdef BLTOUCH_HS_MODE + #ifdef BLTOUCH_HS_MODE + const bool seenH = parser.seen_test('H'), + seenS = parser.seen('S'); + if (seenH || seenS) { if (seenS) bltouch.high_speed_mode = parser.value_bool(); SERIAL_ECHO_START(); SERIAL_ECHOPGM("BLTouch HS mode "); serialprintln_onoff(bltouch.high_speed_mode); - #endif - } - else { - probe.deploy(); - TERN_(PROBE_TARE, probe.tare()); - report_current_position(); - } + return; + } + #endif + + probe.deploy(parser.boolval('R')); + TERN_(PROBE_TARE, probe.tare()); + report_current_position(); } /** * M402: Deactivate and stow the Z probe + * R Remain in place after stowing (and before deactivating) the probe */ void GcodeSuite::M402() { - probe.stow(); + probe.stow(parser.boolval('R')); probe.move_z_after_probing(); report_current_position(); } diff --git a/Marlin/src/lcd/menu/menu_bed_tramming.cpp b/Marlin/src/lcd/menu/menu_bed_tramming.cpp index 5f1b547871..8129a347c3 100644 --- a/Marlin/src/lcd/menu/menu_bed_tramming.cpp +++ b/Marlin/src/lcd/menu/menu_bed_tramming.cpp @@ -43,6 +43,10 @@ #define BED_TRAMMING_HEIGHT 0.0 #endif +#if BOTH(HAS_STOWABLE_PROBE, BED_TRAMMING_USE_PROBE) && DISABLED(BLTOUCH) + #define NEEDS_PROBE_DEPLOY 1 +#endif + #if ENABLED(BED_TRAMMING_USE_PROBE) #include "../../module/probe.h" #include "../../module/endstops.h" @@ -97,38 +101,38 @@ constexpr xy_pos_t lf { (X_MIN_BED) + inset_lfrb[0], (Y_MIN_BED) + inset_lfrb[1] static int8_t bed_corner; /** - * Select next corner coordinates + * Move to the next corner coordinates */ -static void _lcd_bed_tramming_get_next_position() { +static void _lcd_goto_next_corner() { + xy_pos_t corner_point = lf; // Left front if (tramming_3_points) { if (bed_corner >= available_points) bed_corner = 0; // Above max position -> move back to first corner switch (bed_corner) { case 0 ... 1: // First two corners set explicitly by the configuration - current_position = lf; // Left front switch (lco[bed_corner]) { - case RF: current_position.x = rb.x; break; // Right Front - case RB: current_position = rb; break; // Right Back - case LB: current_position.y = rb.y; break; // Left Back + case RF: corner_point.x = rb.x; break; // Right Front + case RB: corner_point = rb; break; // Right Back + case LB: corner_point.y = rb.y; break; // Left Back } break; case 2: // Determine which edge to probe for 3rd point - current_position.set(lf.x + (rb.x - lf.x) / 2, lf.y + (rb.y - lf.y) / 2); - if ((lco[0] == LB && lco[1] == RB) || (lco[0] == RB && lco[1] == LB)) current_position.y = lf.y; // Front Center - if ((lco[0] == LF && lco[1] == LB) || (lco[0] == LB && lco[1] == LF)) current_position.x = rb.x; // Center Right - if ((lco[0] == RF && lco[1] == RB) || (lco[0] == RB && lco[1] == RF)) current_position.x = lf.x; // Left Center - if ((lco[0] == LF && lco[1] == RF) || (lco[0] == RF && lco[1] == LF)) current_position.y = rb.y; // Center Back - #if DISABLED(BED_TRAMMING_INCLUDE_CENTER) && ENABLED(BED_TRAMMING_USE_PROBE) + corner_point.set(lf.x + (rb.x - lf.x) / 2, lf.y + (rb.y - lf.y) / 2); + if ((lco[0] == LB && lco[1] == RB) || (lco[0] == RB && lco[1] == LB)) corner_point.y = lf.y; // Front Center + if ((lco[0] == LF && lco[1] == LB) || (lco[0] == LB && lco[1] == LF)) corner_point.x = rb.x; // Center Right + if ((lco[0] == RF && lco[1] == RB) || (lco[0] == RB && lco[1] == RF)) corner_point.x = lf.x; // Left Center + if ((lco[0] == LF && lco[1] == RF) || (lco[0] == RF && lco[1] == LF)) corner_point.y = rb.y; // Center Back + #if ENABLED(BED_TRAMMING_USE_PROBE) && DISABLED(BED_TRAMMING_INCLUDE_CENTER) bed_corner++; // Must increment the count to ensure it resets the loop if the 3rd point is out of tolerance #endif break; #if ENABLED(BED_TRAMMING_INCLUDE_CENTER) case 3: - current_position.set(X_CENTER, Y_CENTER); + corner_point.set(X_CENTER, Y_CENTER); break; #endif } @@ -136,23 +140,29 @@ static void _lcd_bed_tramming_get_next_position() { else { // Four-Corner Bed Tramming with optional center if (TERN0(BED_TRAMMING_INCLUDE_CENTER, bed_corner == center_index)) { - current_position.set(X_CENTER, Y_CENTER); - TERN_(BED_TRAMMING_USE_PROBE, good_points--); // Decrement to allow one additional probe point + corner_point.set(X_CENTER, Y_CENTER); } else { - current_position = lf; // Left front switch (lco[bed_corner]) { - case RF: current_position.x = rb.x; break; // Right Front - case RB: current_position = rb; break; // Right Back - case LB: current_position.y = rb.y; break; // Left Back + case RF: corner_point.x = rb.x; break; // Right Front + case RB: corner_point = rb; break; // Right Back + case LB: corner_point.y = rb.y; break; // Left Back } } } + + float z = BED_TRAMMING_Z_HOP; + #if BOTH(BED_TRAMMING_USE_PROBE, BLTOUCH) + z += bltouch.z_extra_clearance(); + #endif + line_to_z(z); + do_blocking_move_to_xy(DIFF_TERN(BED_TRAMMING_USE_PROBE, corner_point, probe.offset_xy), manual_feedrate_mm_s.x); + #if DISABLED(BED_TRAMMING_USE_PROBE) + line_to_z(BED_TRAMMING_HEIGHT); + if (++bed_corner >= available_points) bed_corner = 0; + #endif } -/** - * Level corners, starting in the front-left corner. - */ #if ENABLED(BED_TRAMMING_USE_PROBE) #define VALIDATE_POINT(X, Y, STR) static_assert(Probe::build_time::can_reach((X), (Y)), \ @@ -210,13 +220,21 @@ static void _lcd_bed_tramming_get_next_position() { MenuItem_confirm::select_screen( GET_TEXT_F(TERN(HAS_LEVELING, MSG_BUTTON_LEVEL, MSG_BUTTON_DONE)) , TERN(HAS_LEVELING, GET_TEXT_F(MSG_BUTTON_BACK), nullptr) - , []{ queue.inject(TERN(HAS_LEVELING, F("G29N"), FPSTR(G28_STR))); ui.return_to_status(); } - , TERN(HAS_LEVELING, ui.goto_previous_screen_no_defer, []{}) + , []{ + tramming_done = true; + queue.inject(TERN(HAS_LEVELING, F("G29N"), FPSTR(G28_STR))); + ui.goto_previous_screen_no_defer(); + } + , []{ + tramming_done = true; + TERN_(HAS_LEVELING, ui.goto_previous_screen_no_defer()); + TERN_(NEEDS_PROBE_DEPLOY, probe.stow(true)); + } , GET_TEXT_F(MSG_BED_TRAMMING_IN_RANGE) ); } - bool _lcd_bed_tramming_probe(bool verify=false) { + bool _lcd_bed_tramming_probe(const bool verify=false) { if (verify) line_to_z(BED_TRAMMING_Z_HOP); // do clearance if needed TERN_(BLTOUCH, if (!bltouch.high_speed_mode) bltouch.deploy()); // Deploy in LOW SPEED MODE on every probe action do_blocking_move_to_z(last_z - BED_TRAMMING_PROBE_TOLERANCE, MMM_TO_MMS(Z_PROBE_FEEDRATE_SLOW)); // Move down to lower tolerance @@ -232,6 +250,11 @@ static void _lcd_bed_tramming_get_next_position() { last_z = current_position.z; // Above tolerance. Set a new Z for subsequent corners. good_points = 0; // ...and start over } + + // Raise the probe after the last point to give clearance for stow + if (TERN0(NEEDS_PROBE_DEPLOY, good_points == nr_edge_points - 1)) + line_to_z(BED_TRAMMING_Z_HOP); + return true; // probe triggered } line_to_z(last_z); // go back to tolerance middle point before raise @@ -267,11 +290,7 @@ static void _lcd_bed_tramming_get_next_position() { ui.refresh(LCDVIEW_REDRAW_NOW); _lcd_draw_probing(); // update screen with # of good points - line_to_z(current_position.z + BED_TRAMMING_Z_HOP + TERN0(BLTOUCH, bltouch.z_extra_clearance())); // clearance - - _lcd_bed_tramming_get_next_position(); // Select next corner coordinates - current_position -= probe.offset_xy; // Account for probe offsets - do_blocking_move_to_xy(current_position); // Goto corner + _lcd_goto_next_corner(); // Goto corner TERN_(BLTOUCH, if (bltouch.high_speed_mode) bltouch.deploy()); // Deploy in HIGH SPEED MODE if (!_lcd_bed_tramming_probe()) { // Probe down to tolerance @@ -306,31 +325,26 @@ static void _lcd_bed_tramming_get_next_position() { ui.set_selection(true); } -#else // !BED_TRAMMING_USE_PROBE - - static void _lcd_goto_next_corner() { - line_to_z(BED_TRAMMING_Z_HOP); - - // Select next corner coordinates - _lcd_bed_tramming_get_next_position(); - - line_to_current_position(manual_feedrate_mm_s.x); - line_to_z(BED_TRAMMING_HEIGHT); - if (++bed_corner >= available_points) bed_corner = 0; - } - -#endif // !BED_TRAMMING_USE_PROBE +#endif // BED_TRAMMING_USE_PROBE void _lcd_bed_tramming_homing() { - _lcd_draw_homing(); - if (!all_axes_homed()) return; + if (!all_axes_homed() && TERN1(NEEDS_PROBE_DEPLOY, probe.deploy())) return; + + #if HAS_LEVELING // Disable leveling so the planner won't mess with us + menu_leveling_was_active = planner.leveling_active; + set_bed_leveling_enabled(false); + #endif #if ENABLED(BED_TRAMMING_USE_PROBE) - _lcd_test_corners(); - if (tramming_done) ui.goto_previous_screen_no_defer(); + if (!tramming_done) _lcd_test_corners(); // May set tramming_done + if (tramming_done) { + ui.goto_previous_screen_no_defer(); + TERN_(NEEDS_PROBE_DEPLOY, probe.stow(true)); + } + tramming_done = true; TERN_(HAS_LEVELING, set_bed_leveling_enabled(menu_leveling_was_active)); - endstops.enable_z_probe(false); + TERN_(BLTOUCH, endstops.enable_z_probe(false)); #else // !BED_TRAMMING_USE_PROBE @@ -354,20 +368,28 @@ void _lcd_bed_tramming_homing() { #endif // !BED_TRAMMING_USE_PROBE } -void _lcd_bed_tramming() { - ui.defer_status_screen(); - if (!all_axes_trusted()) { - set_all_unhomed(); - queue.inject_P(G28_STR); +#if NEEDS_PROBE_DEPLOY + + void deploy_probe() { + if (!tramming_done) probe.deploy(true); + ui.goto_screen([]{ + if (ui.should_draw()) MenuItem_static::draw((LCD_HEIGHT - 1) / 2, GET_TEXT_F(MSG_MANUAL_DEPLOY)); + if (!probe.deploy() && !tramming_done) _lcd_bed_tramming_homing(); + }); } - // Disable leveling so the planner won't mess with us - #if HAS_LEVELING - menu_leveling_was_active = planner.leveling_active; - set_bed_leveling_enabled(false); - #endif +#endif // NEEDS_PROBE_DEPLOY - ui.goto_screen(_lcd_bed_tramming_homing); +void _lcd_bed_tramming() { + TERN_(BED_TRAMMING_USE_PROBE, tramming_done = false); + ui.defer_status_screen(); + set_all_unhomed(); + queue.inject(TERN(CAN_SET_LEVELING_AFTER_G28, F("G28L0"), FPSTR(G28_STR))); + ui.goto_screen([]{ + _lcd_draw_homing(); + if (!all_axes_homed()) return; + TERN(NEEDS_PROBE_DEPLOY, deploy_probe(), ui.goto_screen(_lcd_bed_tramming_homing)); + }); } #endif // HAS_MARLINUI_MENU && LCD_BED_TRAMMING diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index da69b725b9..ea17eee6ee 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -500,11 +500,11 @@ void Probe::probe_error_stop() { * * Return TRUE if the probe could not be deployed/stowed */ -bool Probe::set_deployed(const bool deploy) { +bool Probe::set_deployed(const bool deploy, const bool no_return/*=false*/) { if (DEBUGGING(LEVELING)) { DEBUG_POS("Probe::set_deployed", current_position); - DEBUG_ECHOLNPGM("deploy: ", deploy); + DEBUG_ECHOLNPGM("deploy=", deploy, " no_return=", no_return); } if (endstops.z_probe_enabled == deploy) return false; @@ -557,7 +557,8 @@ bool Probe::set_deployed(const bool deploy) { // If preheating is required before any probing... TERN_(PREHEAT_BEFORE_PROBING, if (deploy) preheat_for_probing(PROBING_NOZZLE_TEMP, PROBING_BED_TEMP)); - do_blocking_move_to(old_xy); + if (!no_return) do_blocking_move_to(old_xy); // Return to the original location unless handled externally + endstops.enable_z_probe(deploy); return false; } diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index b50f79ed5d..9aff9cff06 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -90,7 +90,7 @@ public: static void probe_error_stop(); - static bool set_deployed(const bool deploy); + static bool set_deployed(const bool deploy, const bool no_return=false); #if IS_KINEMATIC @@ -182,7 +182,7 @@ public: static constexpr xyz_pos_t offset = xyz_pos_t(NUM_AXIS_ARRAY_1(0)); // See #16767 - static bool set_deployed(const bool) { return false; } + static bool set_deployed(const bool, const bool=false) { return false; } static bool can_reach(const_float_t rx, const_float_t ry, const bool=true) { return position_is_reachable(rx, ry); } @@ -216,8 +216,8 @@ public: static constexpr xy_pos_t offset_xy = xy_pos_t({ 0, 0 }); // See #16767 #endif - static bool deploy() { return set_deployed(true); } - static bool stow() { return set_deployed(false); } + static bool deploy(const bool no_return=false) { return set_deployed(true, no_return); } + static bool stow(const bool no_return=false) { return set_deployed(false, no_return); } #if HAS_BED_PROBE || HAS_LEVELING #if IS_KINEMATIC From 6f2d8a3872cd98bafd44e563cfbca35596111ee7 Mon Sep 17 00:00:00 2001 From: John Robertson Date: Sat, 18 Mar 2023 10:33:15 +0000 Subject: [PATCH 147/659] =?UTF-8?q?=F0=9F=94=A7=20Sanity-check=20PRINTCOUN?= =?UTF-8?q?TER=5FSAVE=5FINTERVAL=20+=20ESP32=20I2S=20Exp=20(#25527)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/HAL/ESP32/inc/SanityCheck.h | 4 ++++ Marlin/src/HAL/LPC1768/inc/Conditionals_post.h | 2 +- Marlin/src/HAL/STM32/inc/Conditionals_post.h | 2 +- Marlin/src/inc/Warnings.cpp | 2 +- Marlin/src/module/printcounter.cpp | 2 +- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Marlin/src/HAL/ESP32/inc/SanityCheck.h b/Marlin/src/HAL/ESP32/inc/SanityCheck.h index 8c5621f10c..2d1b850330 100644 --- a/Marlin/src/HAL/ESP32/inc/SanityCheck.h +++ b/Marlin/src/HAL/ESP32/inc/SanityCheck.h @@ -56,3 +56,7 @@ #if BOTH(I2S_STEPPER_STREAM, LIN_ADVANCE) && DISABLED(EXPERIMENTAL_I2S_LA) #error "I2S stream is currently incompatible with LIN_ADVANCE." #endif + +#if BOTH(I2S_STEPPER_STREAM, PRINTCOUNTER) && PRINTCOUNTER_SAVE_INTERVAL > 0 && DISABLED(PRINTCOUNTER_SYNC) + #error "PRINTCOUNTER_SAVE_INTERVAL may cause issues on ESP32 with an I2S expander. Define PRINTCOUNTER_SYNC in Configuration.h for an imperfect solution." +#endif diff --git a/Marlin/src/HAL/LPC1768/inc/Conditionals_post.h b/Marlin/src/HAL/LPC1768/inc/Conditionals_post.h index 3549950008..a0bf421538 100644 --- a/Marlin/src/HAL/LPC1768/inc/Conditionals_post.h +++ b/Marlin/src/HAL/LPC1768/inc/Conditionals_post.h @@ -30,5 +30,5 @@ // LPC1768 boards seem to lose steps when saving to EEPROM during print (issue #20785) // TODO: Which other boards are incompatible? #if defined(MCU_LPC1768) && ENABLED(FLASH_EEPROM_EMULATION) && PRINTCOUNTER_SAVE_INTERVAL > 0 - #define PRINTCOUNTER_SYNC 1 + #define PRINTCOUNTER_SYNC #endif diff --git a/Marlin/src/HAL/STM32/inc/Conditionals_post.h b/Marlin/src/HAL/STM32/inc/Conditionals_post.h index c5ce66a26f..83ce077c75 100644 --- a/Marlin/src/HAL/STM32/inc/Conditionals_post.h +++ b/Marlin/src/HAL/STM32/inc/Conditionals_post.h @@ -30,5 +30,5 @@ // Some STM32F4 boards may lose steps when saving to EEPROM during print (PR #17946) #if defined(STM32F4xx) && ENABLED(FLASH_EEPROM_EMULATION) && PRINTCOUNTER_SAVE_INTERVAL > 0 - #define PRINTCOUNTER_SYNC 1 + #define PRINTCOUNTER_SYNC #endif diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 55b9a18e77..405e7a351e 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -715,7 +715,7 @@ #warning "Creality 4.2.2 boards come with a variety of stepper drivers. Check the board label (typically on SD Card module) and set the correct *_DRIVER_TYPE! (C=HR4988, E=A4988, A=TMC2208, B=TMC2209, H=TMC2225, H8=HR4988). (Define NO_CREALITY_422_DRIVER_WARNING to suppress this warning.)" #endif -#if PRINTCOUNTER_SYNC +#if ENABLED(PRINTCOUNTER_SYNC) #warning "To prevent step loss, motion will pause for PRINTCOUNTER auto-save." #endif diff --git a/Marlin/src/module/printcounter.cpp b/Marlin/src/module/printcounter.cpp index 3b6239c667..f3d9ec8a9d 100644 --- a/Marlin/src/module/printcounter.cpp +++ b/Marlin/src/module/printcounter.cpp @@ -41,7 +41,7 @@ Stopwatch print_job_timer; // Global Print Job Timer instance #include "../libs/buzzer.h" #endif -#if PRINTCOUNTER_SYNC +#if ENABLED(PRINTCOUNTER_SYNC) #include "../module/planner.h" #endif From 3c882703619bde0d7cf292bb7dd7918f12edd23c Mon Sep 17 00:00:00 2001 From: tombrazier <68918209+tombrazier@users.noreply.github.com> Date: Sat, 18 Mar 2023 10:34:53 +0000 Subject: [PATCH 148/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Smart=20Adaptive?= =?UTF-8?q?=20Multi-Stepping=20(#25474)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.cpp | 166 +++++++++++++++++++++++----------- Marlin/src/module/stepper.h | 29 +++--- 2 files changed, 124 insertions(+), 71 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index ae12f0b7f4..4872e98aa9 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -194,6 +194,10 @@ uint32_t Stepper::acceleration_time, Stepper::deceleration_time; uint8_t Stepper::steps_per_isr = 1; // Count of steps to perform per Stepper ISR call #endif +#if DISABLED(OLD_ADAPTIVE_MULTISTEPPING) + hal_timer_t Stepper::time_spent_in_isr = 0, Stepper::time_spent_out_isr = 0; +#endif + #if ENABLED(FREEZE_FEATURE) bool Stepper::frozen; // = false #endif @@ -614,27 +618,26 @@ void Stepper::set_directions() { TERN_(HAS_V_DIR, SET_STEP_DIR(V)); TERN_(HAS_W_DIR, SET_STEP_DIR(W)); - #if ENABLED(MIXING_EXTRUDER) + #if HAS_EXTRUDERS // Because this is valid for the whole block we don't know // what E steppers will step. Likely all. Set all. if (motor_direction(E_AXIS)) { - MIXER_STEPPER_LOOP(j) REV_E_DIR(j); + #if ENABLED(MIXING_EXTRUDER) + MIXER_STEPPER_LOOP(j) REV_E_DIR(j); + #else + REV_E_DIR(stepper_extruder); + #endif count_direction.e = -1; } else { - MIXER_STEPPER_LOOP(j) NORM_E_DIR(j); + #if ENABLED(MIXING_EXTRUDER) + MIXER_STEPPER_LOOP(j) NORM_E_DIR(j); + #else + NORM_E_DIR(stepper_extruder); + #endif count_direction.e = 1; } - #elif HAS_EXTRUDERS - if (motor_direction(E_AXIS)) { - REV_E_DIR(stepper_extruder); - count_direction.e = -1; - } - else { - NORM_E_DIR(stepper_extruder); - count_direction.e = 1; - } - #endif + #endif // HAS_EXTRUDERS DIR_WAIT_AFTER(); } @@ -1587,16 +1590,44 @@ void Stepper::isr() { */ min_ticks = HAL_timer_get_count(MF_TIMER_STEP) + hal_timer_t(TERN(__AVR__, 8, 1) * (STEPPER_TIMER_TICKS_PER_US)); - /** - * NB: If for some reason the stepper monopolizes the MPU, eventually the - * timer will wrap around (and so will 'next_isr_ticks'). So, limit the - * loop to 10 iterations. Beyond that, there's no way to ensure correct pulse - * timing, since the MCU isn't fast enough. - */ - if (!--max_loops) next_isr_ticks = min_ticks; + #if ENABLED(OLD_ADAPTIVE_MULTISTEPPING) + /** + * NB: If for some reason the stepper monopolizes the MPU, eventually the + * timer will wrap around (and so will 'next_isr_ticks'). So, limit the + * loop to 10 iterations. Beyond that, there's no way to ensure correct pulse + * timing, since the MCU isn't fast enough. + */ + if (!--max_loops) next_isr_ticks = min_ticks; + #endif // Advance pulses if not enough time to wait for the next ISR - } while (next_isr_ticks < min_ticks); + } while (TERN(OLD_ADAPTIVE_MULTISTEPPING, true, --max_loops) && next_isr_ticks < min_ticks); + + #if DISABLED(OLD_ADAPTIVE_MULTISTEPPING) + + // Track the time spent in the ISR + const hal_timer_t time_spent = HAL_timer_get_count(MF_TIMER_STEP); + time_spent_in_isr += time_spent; + + if (next_isr_ticks < min_ticks) { + next_isr_ticks = min_ticks; + + // When forced out of the ISR, increase multi-stepping + #if MULTISTEPPING_LIMIT > 1 + if (steps_per_isr < MULTISTEPPING_LIMIT) { + steps_per_isr <<= 1; + // ticks_nominal will need to be recalculated if we are in cruise phase + ticks_nominal = 0; + } + #endif + } + else { + // Track the time spent voluntarily outside the ISR + time_spent_out_isr += next_isr_ticks; + time_spent_out_isr -= time_spent; + } + + #endif // !OLD_ADAPTIVE_MULTISTEPPING // Now 'next_isr_ticks' contains the period to the next Stepper ISR - And we are // sure that the time has not arrived yet - Warrantied by the scheduler @@ -2091,44 +2122,56 @@ hal_timer_t Stepper::calc_timer_interval(uint32_t step_rate) { // Get the timer interval and the number of loops to perform per tick hal_timer_t Stepper::calc_multistep_timer_interval(uint32_t step_rate) { - #if MULTISTEPPING_LIMIT == 1 - // Just make sure the step rate is doable - NOMORE(step_rate, uint32_t(MAX_STEP_ISR_FREQUENCY_1X)); + #if ENABLED(OLD_ADAPTIVE_MULTISTEPPING) - #else + #if MULTISTEPPING_LIMIT == 1 - // The stepping frequency limits for each multistepping rate - static const uint32_t limit[] PROGMEM = { - ( MAX_STEP_ISR_FREQUENCY_1X ) - , ( MAX_STEP_ISR_FREQUENCY_2X >> 1) - #if MULTISTEPPING_LIMIT >= 4 - , ( MAX_STEP_ISR_FREQUENCY_4X >> 2) - #endif - #if MULTISTEPPING_LIMIT >= 8 - , ( MAX_STEP_ISR_FREQUENCY_8X >> 3) - #endif - #if MULTISTEPPING_LIMIT >= 16 - , ( MAX_STEP_ISR_FREQUENCY_16X >> 4) - #endif - #if MULTISTEPPING_LIMIT >= 32 - , ( MAX_STEP_ISR_FREQUENCY_32X >> 5) - #endif - #if MULTISTEPPING_LIMIT >= 64 - , ( MAX_STEP_ISR_FREQUENCY_64X >> 6) - #endif - #if MULTISTEPPING_LIMIT >= 128 - , (MAX_STEP_ISR_FREQUENCY_128X >> 7) - #endif - }; + // Just make sure the step rate is doable + NOMORE(step_rate, uint32_t(MAX_STEP_ISR_FREQUENCY_1X)); - // Find a doable step rate using multistepping - uint8_t multistep = 1; - for (uint8_t i = 0; i < COUNT(limit) && step_rate > uint32_t(pgm_read_dword(&limit[i])); ++i) { - step_rate >>= 1; - multistep <<= 1; - } - steps_per_isr = multistep; + #else + + // The stepping frequency limits for each multistepping rate + static const uint32_t limit[] PROGMEM = { + ( MAX_STEP_ISR_FREQUENCY_1X ) + , (((F_CPU) / ISR_EXECUTION_CYCLES(1)) >> 1) + #if MULTISTEPPING_LIMIT >= 4 + , (((F_CPU) / ISR_EXECUTION_CYCLES(2)) >> 2) + #endif + #if MULTISTEPPING_LIMIT >= 8 + , (((F_CPU) / ISR_EXECUTION_CYCLES(3)) >> 3) + #endif + #if MULTISTEPPING_LIMIT >= 16 + , (((F_CPU) / ISR_EXECUTION_CYCLES(4)) >> 4) + #endif + #if MULTISTEPPING_LIMIT >= 32 + , (((F_CPU) / ISR_EXECUTION_CYCLES(5)) >> 5) + #endif + #if MULTISTEPPING_LIMIT >= 64 + , (((F_CPU) / ISR_EXECUTION_CYCLES(6)) >> 6) + #endif + #if MULTISTEPPING_LIMIT >= 128 + , (((F_CPU) / ISR_EXECUTION_CYCLES(7)) >> 7) + #endif + }; + + // Find a doable step rate using multistepping + uint8_t multistep = 1; + for (uint8_t i = 0; i < COUNT(limit) && step_rate > uint32_t(pgm_read_dword(&limit[i])); ++i) { + step_rate >>= 1; + multistep <<= 1; + } + steps_per_isr = multistep; + + #endif + + #elif MULTISTEPPING_LIMIT > 1 + + uint8_t loops = steps_per_isr; + if (MULTISTEPPING_LIMIT >= 16 && loops >= 16) { step_rate >>= 4; loops >>= 4; } + if (MULTISTEPPING_LIMIT >= 4 && loops >= 4) { step_rate >>= 2; loops >>= 2; } + if (MULTISTEPPING_LIMIT >= 2 && loops >= 2) { step_rate >>= 1; } #endif @@ -2141,6 +2184,19 @@ hal_timer_t Stepper::calc_multistep_timer_interval(uint32_t step_rate) { * have been done, so it is less time critical. */ hal_timer_t Stepper::block_phase_isr() { + #if DISABLED(OLD_ADAPTIVE_MULTISTEPPING) + // If the ISR uses < 50% of MPU time, halve multi-stepping + const hal_timer_t time_spent = HAL_timer_get_count(MF_TIMER_STEP); + #if MULTISTEPPING_LIMIT > 1 + if (steps_per_isr > 1 && time_spent_out_isr >= time_spent_in_isr + time_spent) { + steps_per_isr >>= 1; + // ticks_nominal will need to be recalculated if we are in cruise phase + ticks_nominal = 0; + } + #endif + time_spent_in_isr = -time_spent; // unsigned but guaranteed to be +ve when needed + time_spent_out_isr = 0; + #endif // If no queued movements, just wait 1ms for the next block hal_timer_t interval = (STEPPER_TIMER_RATE) / 1000UL; diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 797a72791c..704805464c 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -212,12 +212,12 @@ #error "Expected at least one of MINIMUM_STEPPER_PULSE or MAXIMUM_STEPPER_RATE to be defined" #endif -// The loop takes the base time plus the time for all the bresenham logic for R pulses plus the time -// between pulses for (R-1) pulses. But the user could be enforcing a minimum time so the loop time is: +// The loop takes the base time plus the time for all the bresenham logic for 1 << R pulses plus the time +// between pulses for ((1 << R) - 1) pulses. But the user could be enforcing a minimum time so the loop time is: #define ISR_LOOP_CYCLES(R) ((ISR_LOOP_BASE_CYCLES + MIN_ISR_LOOP_CYCLES + MIN_STEPPER_PULSE_CYCLES) * ((1UL << R) - 1) + _MAX(MIN_ISR_LOOP_CYCLES, MIN_STEPPER_PULSE_CYCLES)) // Model input shaping as an extra loop call -#define ISR_SHAPING_LOOP_CYCLES(R) (TERN0(HAS_SHAPING, ((ISR_LOOP_BASE_CYCLES) + TERN0(INPUT_SHAPING_X, ISR_X_STEPPER_CYCLES) + TERN0(INPUT_SHAPING_Y, ISR_Y_STEPPER_CYCLES)) << R)) +#define ISR_SHAPING_LOOP_CYCLES(R) (TERN0(HAS_SHAPING, (ISR_LOOP_BASE_CYCLES + TERN0(INPUT_SHAPING_X, ISR_X_STEPPER_CYCLES) + TERN0(INPUT_SHAPING_Y, ISR_Y_STEPPER_CYCLES)) << R)) // If linear advance is enabled, then it is handled separately #if ENABLED(LIN_ADVANCE) @@ -241,24 +241,17 @@ #define ISR_LA_LOOP_CYCLES 0UL #endif -// Now estimate the total ISR execution time in cycles given a step per ISR multiplier -#define ISR_EXECUTION_CYCLES(R) (((ISR_BASE_CYCLES + ISR_S_CURVE_CYCLES + ISR_SHAPING_BASE_CYCLES + ISR_LOOP_CYCLES(R) + ISR_SHAPING_LOOP_CYCLES(R) + ISR_LA_BASE_CYCLES + ISR_LA_LOOP_CYCLES)) >> R) +// Estimate the total ISR execution time in cycles given a step-per-ISR shift multiplier +#define ISR_EXECUTION_CYCLES(R) ((ISR_BASE_CYCLES + ISR_S_CURVE_CYCLES + ISR_SHAPING_BASE_CYCLES + ISR_LOOP_CYCLES(R) + ISR_SHAPING_LOOP_CYCLES(R) + ISR_LA_BASE_CYCLES + ISR_LA_LOOP_CYCLES) >> R) -// The maximum allowable stepping frequency when doing x128-x1 stepping (in Hz) -#define MAX_STEP_ISR_FREQUENCY_128X ((F_CPU) / ISR_EXECUTION_CYCLES(7)) -#define MAX_STEP_ISR_FREQUENCY_64X ((F_CPU) / ISR_EXECUTION_CYCLES(6)) -#define MAX_STEP_ISR_FREQUENCY_32X ((F_CPU) / ISR_EXECUTION_CYCLES(5)) -#define MAX_STEP_ISR_FREQUENCY_16X ((F_CPU) / ISR_EXECUTION_CYCLES(4)) -#define MAX_STEP_ISR_FREQUENCY_8X ((F_CPU) / ISR_EXECUTION_CYCLES(3)) -#define MAX_STEP_ISR_FREQUENCY_4X ((F_CPU) / ISR_EXECUTION_CYCLES(2)) -#define MAX_STEP_ISR_FREQUENCY_2X ((F_CPU) / ISR_EXECUTION_CYCLES(1)) -#define MAX_STEP_ISR_FREQUENCY_1X ((F_CPU) / ISR_EXECUTION_CYCLES(0)) +// The maximum allowable stepping frequency when doing 1x stepping (in Hz) +#define MAX_STEP_ISR_FREQUENCY_1X ((F_CPU) / ISR_EXECUTION_CYCLES(0)) // The minimum step ISR rate used by ADAPTIVE_STEP_SMOOTHING to target 50% CPU usage // This does not account for the possibility of multi-stepping. -// Should a MULTISTEPPING_LIMIT of 1 should be required with ADAPTIVE_STEP_SMOOTHING? -#define MIN_STEP_ISR_FREQUENCY (MAX_STEP_ISR_FREQUENCY_1X / 2) +#define MIN_STEP_ISR_FREQUENCY (MAX_STEP_ISR_FREQUENCY_1X >> 1) +// Number of axes that could be enabled/disabled. Dual/multiple steppers are combined. #define ENABLE_COUNT (NUM_AXES + E_STEPPERS) typedef bits_t(ENABLE_COUNT) ena_mask_t; @@ -547,6 +540,10 @@ class Stepper { static uint8_t steps_per_isr; #endif + #if DISABLED(OLD_ADAPTIVE_MULTISTEPPING) + static hal_timer_t time_spent_in_isr, time_spent_out_isr; + #endif + #if ENABLED(ADAPTIVE_STEP_SMOOTHING) static uint8_t oversampling_factor; // Oversampling factor (log2(multiplier)) to increase temporal resolution of axis #else From 5be895d906d43a64c5e429683d136388d20341e0 Mon Sep 17 00:00:00 2001 From: John Lagonikas <39417467+zeleps@users.noreply.github.com> Date: Sat, 18 Mar 2023 13:43:15 +0200 Subject: [PATCH 149/659] =?UTF-8?q?=F0=9F=9A=B8=20Temperature=20Variance?= =?UTF-8?q?=20Monitor=20tweaks=20(#23571)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration_adv.h | 31 ++++++++++++++++++++++++++++--- Marlin/src/HAL/LPC1768/HAL.cpp | 1 + Marlin/src/HAL/LPC1768/HAL.h | 13 ++++++++----- Marlin/src/inc/Warnings.cpp | 5 +++++ Marlin/src/module/temperature.cpp | 11 +++++++++-- 5 files changed, 51 insertions(+), 10 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 284ecb6b1c..70bbf0a0e6 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -368,10 +368,35 @@ #if ANY(THERMAL_PROTECTION_HOTENDS, THERMAL_PROTECTION_BED, THERMAL_PROTECTION_CHAMBER, THERMAL_PROTECTION_COOLER) /** - * Thermal Protection Variance Monitor - EXPERIMENTAL. - * Kill the machine on a stuck temperature sensor. Disable if you get false positives. + * Thermal Protection Variance Monitor - EXPERIMENTAL + * Kill the machine on a stuck temperature sensor. + * + * This feature may cause some thermally-stable systems to halt. Be sure to test it throughly under + * a variety of conditions. Disable if you get false positives. + * + * This feature ensures that temperature sensors are updating regularly. If sensors die or get "stuck", + * or if Marlin stops reading them, temperatures will remain constant while heaters may still be powered! + * This feature only monitors temperature changes so it should catch any issue, hardware or software. + * + * By default it uses the THERMAL_PROTECTION_*_PERIOD constants (above) for the time window, within which + * at least one temperature change must occur, to indicate that sensor polling is working. If any monitored + * heater's temperature remains totally constant (without even a fractional change) during this period, a + * thermal malfunction error occurs and the printer is halted. + * + * A very stable heater might produce a false positive and halt the printer. In this case, try increasing + * the corresponding THERMAL_PROTECTION_*_PERIOD constant a bit. Keep in mind that uncontrolled heating + * shouldn't be allowed to persist for more than a minite or two. + * + * Be careful to distinguish false positives from real sensor issues before disabling this feature. If the + * heater's temperature appears even slightly higher than expected after restarting, you may have a real + * thermal malfunction. Check the temperature graph in your host for any unusual bumps. */ - //#define THERMAL_PROTECTION_VARIANCE_MONITOR // Detect a sensor malfunction preventing temperature updates + //#define THERMAL_PROTECTION_VARIANCE_MONITOR + #if ENABLED(THERMAL_PROTECTION_VARIANCE_MONITOR) + // Variance detection window to override the THERMAL_PROTECTION...PERIOD settings above. + // Keep in mind that some heaters heat up faster than others. + //#define THERMAL_PROTECTION_VARIANCE_MONITOR_PERIOD 30 // (s) Override all watch periods + #endif #endif #if ENABLED(PIDTEMP) diff --git a/Marlin/src/HAL/LPC1768/HAL.cpp b/Marlin/src/HAL/LPC1768/HAL.cpp index 9ff3a6ba59..746f43a2a4 100644 --- a/Marlin/src/HAL/LPC1768/HAL.cpp +++ b/Marlin/src/HAL/LPC1768/HAL.cpp @@ -28,6 +28,7 @@ DefaultSerial1 USBSerial(false, UsbSerial); uint32_t MarlinHAL::adc_result = 0; +pin_t MarlinHAL::adc_pin = 0; // U8glib required functions extern "C" { diff --git a/Marlin/src/HAL/LPC1768/HAL.h b/Marlin/src/HAL/LPC1768/HAL.h index b0eeb983b4..63bec2b720 100644 --- a/Marlin/src/HAL/LPC1768/HAL.h +++ b/Marlin/src/HAL/LPC1768/HAL.h @@ -241,15 +241,18 @@ public: // Begin ADC sampling on the given pin. Called from Temperature::isr! static uint32_t adc_result; - static void adc_start(const pin_t pin) { - adc_result = FilteredADC::read(pin) >> (16 - HAL_ADC_RESOLUTION); // returns 16bit value, reduce to required bits - } + static pin_t adc_pin; + + static void adc_start(const pin_t pin) { adc_pin = pin; } // Is the ADC ready for reading? - static bool adc_ready() { return true; } + static bool adc_ready() { return LPC176x::adc_hardware.done(LPC176x::pin_get_adc_channel(adc_pin)); } // The current value of the ADC register - static uint16_t adc_value() { return uint16_t(adc_result); } + static uint16_t adc_value() { + adc_result = FilteredADC::read(adc_pin) >> (16 - HAL_ADC_RESOLUTION); // returns 16bit value, reduce to required bits + return uint16_t(adc_result); + } /** * Set the PWM duty cycle for the pin to the given value. diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 405e7a351e..01246596c3 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -63,6 +63,11 @@ #warning "Warning! Don't use dummy thermistors (998/999) for final build!" #endif +#if ANY(THERMAL_PROTECTION_HOTENDS, THERMAL_PROTECTION_BED, THERMAL_PROTECTION_CHAMBER, THERMAL_PROTECTION_COOLER) \ + && NONE(THERMAL_PROTECTION_VARIANCE_MONITOR, NO_VARIANCE_MONITOR_WARNING) + #warning "THERMAL_PROTECTION_VARIANCE_MONITOR is recommended. See Configuration_adv.h for details. (Define NO_VARIANCE_MONITOR_WARNING to suppress this.)" +#endif + #if NONE(HAS_RESUME_CONTINUE, HOST_PROMPT_SUPPORT) #warning "Your Configuration provides no method to acquire user feedback!" #endif diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 578fd112d2..2bb88320b5 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2915,11 +2915,18 @@ void Temperature::init() { */ #if ENABLED(THERMAL_PROTECTION_VARIANCE_MONITOR) + + #ifdef THERMAL_PROTECTION_VARIANCE_MONITOR_PERIOD + #define VARIANCE_WINDOW THERMAL_PROTECTION_VARIANCE_MONITOR_PERIOD + #else + #define VARIANCE_WINDOW period_seconds + #endif + if (state == TRMalfunction) { // temperature invariance may continue, regardless of heater state variance += ABS(current - last_temp); // no need for detection window now, a single change in variance is enough last_temp = current; if (!NEAR_ZERO(variance)) { - variance_timer = millis() + SEC_TO_MS(period_seconds); + variance_timer = millis() + SEC_TO_MS(VARIANCE_WINDOW); variance = 0.0; state = TRStable; // resume from where we detected the problem } @@ -2980,7 +2987,7 @@ void Temperature::init() { state = TRMalfunction; break; } - variance_timer = now + SEC_TO_MS(period_seconds); + variance_timer = now + SEC_TO_MS(VARIANCE_WINDOW); variance = 0.0; last_temp = current; } From 283d093a4c4601ffa41e2754e790b6ed55c05e11 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sun, 19 Mar 2023 13:17:21 +1300 Subject: [PATCH 150/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20Ender=202=20stock?= =?UTF-8?q?=20LCD=20(#25538)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test-builds.yml | 1 + Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h | 5 +++-- buildroot/tests/melzi_optiboot | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100755 buildroot/tests/melzi_optiboot diff --git a/.github/workflows/test-builds.yml b/.github/workflows/test-builds.yml index 9debb82bc9..173631e5e5 100644 --- a/.github/workflows/test-builds.yml +++ b/.github/workflows/test-builds.yml @@ -55,6 +55,7 @@ jobs: - rambo - sanguino1284p - sanguino644p + - melzi_optiboot # STM32F1 (Maple) Environments diff --git a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h index 437ba35eea..acaf06ed9d 100644 --- a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h +++ b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h @@ -46,11 +46,12 @@ // LCD / Controller // #if ANY(MKS_MINI_12864, CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) - #if ENABLED(CR10_STOCKDISPLAY) + #if EITHER(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) #define LCD_PINS_RS 28 // ST9720 CS #define LCD_PINS_ENABLE 17 // ST9720 DAT #define LCD_PINS_D4 30 // ST9720 CLK - #elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) + #endif + #if EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) #define DOGLCD_CS 28 #define DOGLCD_A0 30 #endif diff --git a/buildroot/tests/melzi_optiboot b/buildroot/tests/melzi_optiboot new file mode 100755 index 0000000000..f31c69cdcb --- /dev/null +++ b/buildroot/tests/melzi_optiboot @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +# +# Build tests for melzi_optiboot +# + +# exit on first failure +set -e + +# +# Ender 2 +# +use_example_configs Creality/Ender-2 +exec_test $1 $2 "Ender 2" "$3" + +# clean up +restore_configs From e6ac9ff204b09c0a852f71b77417f99ce4f5473a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 18 Mar 2023 17:13:06 -0500 Subject: [PATCH 151/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Misc.=20optimizati?= =?UTF-8?q?ons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/MarlinCore.cpp | 4 ++-- Marlin/src/core/serial.cpp | 5 ---- Marlin/src/core/serial.h | 7 +++++- Marlin/src/feature/bedlevel/ubl/ubl.cpp | 2 +- Marlin/src/module/temperature.cpp | 31 ++++++++++++++----------- Marlin/src/module/temperature.h | 6 ++--- 6 files changed, 30 insertions(+), 25 deletions(-) diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index ef6bf6aad5..342f8812d8 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -520,8 +520,8 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) { if (ELAPSED(ms, next_cub_ms_##N)) { \ next_cub_ms_##N = ms + CUB_DEBOUNCE_DELAY_##N; \ CODE; \ - queue.inject(F(BUTTON##N##_GCODE)); \ - TERN_(HAS_MARLINUI_MENU, ui.quick_feedback()); \ + queue.inject(F(BUTTON##N##_GCODE)); \ + TERN_(HAS_MARLINUI_MENU, ui.quick_feedback()); \ } \ } \ }while(0) diff --git a/Marlin/src/core/serial.cpp b/Marlin/src/core/serial.cpp index 727b191d04..64704c1e6c 100644 --- a/Marlin/src/core/serial.cpp +++ b/Marlin/src/core/serial.cpp @@ -85,11 +85,6 @@ void serial_offset(const_float_t v, const uint8_t sp/*=0*/) { SERIAL_DECIMAL(v); } -void serial_ternary(const bool onoff, FSTR_P const pre, FSTR_P const on, FSTR_P const off, FSTR_P const post/*=nullptr*/) { - if (pre) serial_print(pre); - serial_print(onoff ? on : off); - if (post) serial_print(post); -} void serialprint_onoff(const bool onoff) { serial_print(onoff ? F(STR_ON) : F(STR_OFF)); } void serialprintln_onoff(const bool onoff) { serialprint_onoff(onoff); SERIAL_EOL(); } void serialprint_truefalse(const bool tf) { serial_print(tf ? F("true") : F("false")); } diff --git a/Marlin/src/core/serial.h b/Marlin/src/core/serial.h index a1126d7461..a741d4b1e4 100644 --- a/Marlin/src/core/serial.h +++ b/Marlin/src/core/serial.h @@ -327,7 +327,12 @@ inline void serial_echolnpair(FSTR_P const fstr, T v) { serial_echolnpair_P(FTOP void serial_echo_start(); void serial_error_start(); -void serial_ternary(const bool onoff, FSTR_P const pre, FSTR_P const on, FSTR_P const off, FSTR_P const post=nullptr); +inline void serial_ternary(const bool onoff, FSTR_P const pre, FSTR_P const on, FSTR_P const off, FSTR_P const post=nullptr) { + if (pre) serial_print(pre); + if (onoff && on) serial_print(on); + if (!onoff && off) serial_print(off); + if (post) serial_print(post); +} void serialprint_onoff(const bool onoff); void serialprintln_onoff(const bool onoff); void serialprint_truefalse(const bool tf); diff --git a/Marlin/src/feature/bedlevel/ubl/ubl.cpp b/Marlin/src/feature/bedlevel/ubl/ubl.cpp index f2af1445b1..6d60e7a2ef 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl.cpp @@ -59,7 +59,7 @@ void unified_bed_leveling::report_current_mesh() { void unified_bed_leveling::report_state() { echo_name(); - SERIAL_ECHO_TERNARY(planner.leveling_active, " System v" UBL_VERSION " ", "", "in", "active\n"); + serial_ternary(planner.leveling_active, " System v" UBL_VERSION " ", nullptr, "in", "active\n"); serial_delay(50); } diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 2bb88320b5..cc89d71e50 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2890,7 +2890,7 @@ void Temperature::init() { * * TODO: Embed the last 3 parameters during init, if not less optimal */ - void Temperature::tr_state_machine_t::run(const_celsius_float_t current, const_celsius_float_t target, const heater_id_t heater_id, const uint16_t period_seconds, const celsius_t hysteresis_degc) { + void Temperature::tr_state_machine_t::run(const_celsius_float_t current, const_celsius_float_t target, const heater_id_t heater_id, const uint16_t period_seconds, const celsius_float_t hysteresis_degc) { #if HEATER_IDLE_HANDLER // Convert the given heater_id_t to an idle array index @@ -2959,21 +2959,26 @@ void Temperature::init() { // While the temperature is stable watch for a bad temperature case TRStable: { + const celsius_float_t rdiff = running_temp - current; + #if ENABLED(ADAPTIVE_FAN_SLOWING) if (adaptive_fan_slowing && heater_id >= 0) { - const int fan_index = _MIN(heater_id, FAN_COUNT - 1); - if (fan_speed[fan_index] == 0 || current >= running_temp - (hysteresis_degc * 0.25f)) - fan_speed_scaler[fan_index] = 128; - else if (current >= running_temp - (hysteresis_degc * 0.3335f)) - fan_speed_scaler[fan_index] = 96; - else if (current >= running_temp - (hysteresis_degc * 0.5f)) - fan_speed_scaler[fan_index] = 64; - else if (current >= running_temp - (hysteresis_degc * 0.8f)) - fan_speed_scaler[fan_index] = 32; + const int_fast8_t fan_index = _MIN(heater_id, FAN_COUNT - 1); + uint8_t scale; + if (fan_speed[fan_index] == 0 || rdiff <= hysteresis_degc * 0.25f) + scale = 128; + else if (rdiff <= hysteresis_degc * 0.3335f) + scale = 96; + else if (rdiff <= hysteresis_degc * 0.5f) + scale = 64; + else if (rdiff <= hysteresis_degc * 0.8f) + scale = 32; else - fan_speed_scaler[fan_index] = 0; + scale = 0; + + fan_speed_scaler[fan_index] = scale; } - #endif + #endif // ADAPTIVE_FAN_SLOWING const millis_t now = millis(); @@ -2993,7 +2998,7 @@ void Temperature::init() { } #endif - if (current >= running_temp - hysteresis_degc) { + if (rdiff <= hysteresis_degc) { timer = now + SEC_TO_MS(period_seconds); break; } diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index 0ab00ef768..4bf76e5d48 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -49,7 +49,7 @@ #define E_NAME TERN_(HAS_MULTI_HOTEND, e) // Element identifiers. Positive values are hotends. Negative values are other heaters or coolers. -typedef enum : int8_t { +typedef enum : int_fast8_t { H_REDUNDANT = HID_REDUNDANT, H_COOLER = HID_COOLER, H_PROBE = HID_PROBE, @@ -1319,12 +1319,12 @@ class Temperature { typedef struct { millis_t timer = 0; TRState state = TRInactive; - float running_temp; + celsius_float_t running_temp; #if ENABLED(THERMAL_PROTECTION_VARIANCE_MONITOR) millis_t variance_timer = 0; celsius_float_t last_temp = 0.0, variance = 0.0; #endif - void run(const_celsius_float_t current, const_celsius_float_t target, const heater_id_t heater_id, const uint16_t period_seconds, const celsius_t hysteresis_degc); + void run(const_celsius_float_t current, const_celsius_float_t target, const heater_id_t heater_id, const uint16_t period_seconds, const celsius_float_t hysteresis_degc); } tr_state_machine_t; static tr_state_machine_t tr_state_machine[NR_HEATER_RUNAWAY]; From 432aeeefe30082843e0e3cbb4a0f0673681fcfdb Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 19 Mar 2023 00:55:20 +0000 Subject: [PATCH 152/659] [cron] Bump distribution date (2023-03-19) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 2938b98713..a70e6910d3 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-18" +//#define STRING_DISTRIBUTION_DATE "2023-03-19" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index df04b198ac..3e3244a207 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-18" + #define STRING_DISTRIBUTION_DATE "2023-03-19" #endif /** From 7e25e87807c7c3dd213ffa558cf6e6d0383b7650 Mon Sep 17 00:00:00 2001 From: StevilKnevil Date: Sun, 19 Mar 2023 00:57:34 +0000 Subject: [PATCH 153/659] =?UTF-8?q?=E2=9C=A8=20REPORT=5FADAPTIVE=5FFAN=5FS?= =?UTF-8?q?LOWING=20(#25537)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 9 ++++++--- Marlin/src/module/temperature.cpp | 6 ++++++ buildroot/tests/LPC1769 | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 70bbf0a0e6..3e23bb8944 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -303,9 +303,12 @@ #define THERMAL_PROTECTION_PERIOD 40 // Seconds #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - //#define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops - #if ENABLED(ADAPTIVE_FAN_SLOWING) && EITHER(MPCTEMP, PIDTEMP) - //#define TEMP_TUNING_MAINTAIN_FAN // Don't slow fan speed during M303 or M306 T + //#define ADAPTIVE_FAN_SLOWING // Slow down the part-cooling fan if the temperature drops + #if ENABLED(ADAPTIVE_FAN_SLOWING) + //#define REPORT_ADAPTIVE_FAN_SLOWING // Report fan slowing activity to the console + #if EITHER(MPCTEMP, PIDTEMP) + //#define TEMP_TUNING_MAINTAIN_FAN // Don't slow down the fan speed during M303 or M306 T + #endif #endif /** diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index cc89d71e50..ba2563ccdc 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2976,6 +2976,12 @@ void Temperature::init() { else scale = 0; + if (TERN0(REPORT_ADAPTIVE_FAN_SLOWING, DEBUGGING(INFO))) { + const uint8_t fss7 = fan_speed_scaler[fan_index] & 0x80; + if (fss7 ^ (scale & 0x80)) + serial_ternary(fss7, F("Adaptive Fan Slowing "), nullptr, F("de"), F("activated.\n")); + } + fan_speed_scaler[fan_index] = scale; } #endif // ADAPTIVE_FAN_SLOWING diff --git a/buildroot/tests/LPC1769 b/buildroot/tests/LPC1769 index b3348c6d65..cf2838bdd5 100755 --- a/buildroot/tests/LPC1769 +++ b/buildroot/tests/LPC1769 @@ -18,7 +18,7 @@ opt_set MOTHERBOARD BOARD_SMOOTHIEBOARD \ GRID_MAX_POINTS_X 16 \ NOZZLE_CLEAN_START_POINT "{ { 10, 10, 3 }, { 10, 10, 3 } }" \ NOZZLE_CLEAN_END_POINT "{ { 10, 20, 3 }, { 10, 20, 3 } }" -opt_enable TFTGLCD_PANEL_SPI SDSUPPORT ADAPTIVE_FAN_SLOWING TEMP_TUNING_MAINTAIN_FAN \ +opt_enable TFTGLCD_PANEL_SPI SDSUPPORT ADAPTIVE_FAN_SLOWING REPORT_ADAPTIVE_FAN_SLOWING TEMP_TUNING_MAINTAIN_FAN \ MAX31865_SENSOR_OHMS_0 MAX31865_CALIBRATION_OHMS_0 \ MAG_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR G29_RETRY_AND_RECOVER Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \ BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET BED_TRAMMING_USE_PROBE BED_TRAMMING_VERIFY_RAISED \ From 9249f61a80ea48db8b437f17374c25ed5da1a65b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 18 Mar 2023 21:57:06 -0500 Subject: [PATCH 154/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20a=20serial=5Fterna?= =?UTF-8?q?ry?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bedlevel/ubl/ubl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/feature/bedlevel/ubl/ubl.cpp b/Marlin/src/feature/bedlevel/ubl/ubl.cpp index 6d60e7a2ef..b7ee6aeef8 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl.cpp @@ -59,7 +59,7 @@ void unified_bed_leveling::report_current_mesh() { void unified_bed_leveling::report_state() { echo_name(); - serial_ternary(planner.leveling_active, " System v" UBL_VERSION " ", nullptr, "in", "active\n"); + serial_ternary(planner.leveling_active, F(" System v" UBL_VERSION " "), nullptr, F("in"), F("active\n")); serial_delay(50); } From fd36e69bd23b60ef8edb0848f219a5ca65dae181 Mon Sep 17 00:00:00 2001 From: FilippoR Date: Sun, 19 Mar 2023 09:55:34 +0100 Subject: [PATCH 155/659] =?UTF-8?q?=E2=9C=A8=20Z=5FSERVO=5FDEACTIVATE=5FAF?= =?UTF-8?q?TER=5FSTOW=20(#24215)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 11 +++++++---- Marlin/src/module/probe.cpp | 7 ++++++- buildroot/tests/mega2560 | 4 ++-- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 82b107ae44..b96837d50c 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1387,10 +1387,13 @@ /** * Z Servo Probe, such as an endstop switch on a rotating arm. */ -//#define Z_PROBE_SERVO_NR 0 // Defaults to SERVO 0 connector. -//#define Z_SERVO_ANGLES { 70, 0 } // Z Servo Deploy and Stow angles -//#define Z_SERVO_MEASURE_ANGLE 45 // Use if the servo must move to a "free" position for measuring after deploy. -//#define Z_SERVO_INTERMEDIATE_STOW // Stow the probe between points. +//#define Z_PROBE_SERVO_NR 0 +#ifdef Z_PROBE_SERVO_NR + //#define Z_SERVO_ANGLES { 70, 0 } // Z Servo Deploy and Stow angles + //#define Z_SERVO_MEASURE_ANGLE 45 // Use if the servo must move to a "free" position for measuring after deploy + //#define Z_SERVO_INTERMEDIATE_STOW // Stow the probe between points + //#define Z_SERVO_DEACTIVATE_AFTER_STOW // Deactivate the servo when probe is stowed +#endif /** * The BLTouch probe uses a Hall effect sensor and emulates a servo. diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index ea17eee6ee..d48dc1eb1c 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -403,13 +403,16 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { #elif HAS_Z_SERVO_PROBE + // i.e., deploy ? DEPLOY_Z_SERVO() : STOW_Z_SERVO(); servo[Z_PROBE_SERVO_NR].move(servo_angles[Z_PROBE_SERVO_NR][deploy ? 0 : 1]); #ifdef Z_SERVO_MEASURE_ANGLE // After deploy move back to the measure angle... - if (deploy) MOVE_SERVO(Z_PROBE_SERVO_NR, Z_SERVO_MEASURE_ANGLE); + if (deploy) servo[Z_PROBE_SERVO_NR].move(Z_SERVO_MEASURE_ANGLE); #endif + if (TERN0(Z_SERVO_DEACTIVATE_AFTER_STOW, !deploy)) servo[Z_PROBE_SERVO_NR].detach(); + #elif ANY(TOUCH_MI_PROBE, Z_PROBE_ALLEN_KEY, MAG_MOUNTED_PROBE) deploy ? run_deploy_moves() : run_stow_moves(); @@ -950,6 +953,8 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai * homing has been done - no homing with z-probe without init! */ STOW_Z_SERVO(); + + TERN_(Z_SERVO_DEACTIVATE_AFTER_STOW, servo[Z_PROBE_SERVO_NR].detach()); } #endif // HAS_Z_SERVO_PROBE diff --git a/buildroot/tests/mega2560 b/buildroot/tests/mega2560 index daa9cc2fad..ae3d1c45f8 100755 --- a/buildroot/tests/mega2560 +++ b/buildroot/tests/mega2560 @@ -63,13 +63,13 @@ opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO NUM_SERVOS 1 \ NUM_RUNOUT_SENSORS 5 FIL_RUNOUT2_PIN 44 FIL_RUNOUT3_PIN 45 FIL_RUNOUT4_PIN 46 FIL_RUNOUT5_PIN 47 \ FIL_RUNOUT3_STATE HIGH FILAMENT_RUNOUT_SCRIPT '"M600 T%c"' opt_enable VIKI2 BOOT_MARLIN_LOGO_ANIMATED SDSUPPORT AUTO_REPORT_SD_STATUS \ - Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE \ + Z_PROBE_SERVO_NR Z_SERVO_ANGLES Z_SERVO_MEASURE_ANGLE DEACTIVATE_SERVOS_AFTER_MOVE Z_SERVO_DEACTIVATE_AFTER_STOW \ AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE PROBE_PT_1 PROBE_PT_2 PROBE_PT_3 \ EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL AUTO_REPORT_POSITION \ NO_VOLUMETRICS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES AUTOTEMP G38_PROBE_TARGET JOYSTICK \ DIRECT_STEPPING DETECT_BROKEN_ENDSTOP \ FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE Z_SAFE_HOMING FIL_RUNOUT3_PULLUP -exec_test $1 $2 "Multiple runout sensors (x5) | Distinct runout states" "$3" +exec_test $1 $2 "Z Servo Probe | Multiple runout sensors (x5)" "$3" # From ca77850cbb8ed57d4cdcf29a12a278d6bfa5c0d5 Mon Sep 17 00:00:00 2001 From: tombrazier <68918209+tombrazier@users.noreply.github.com> Date: Sun, 19 Mar 2023 21:25:14 +0000 Subject: [PATCH 156/659] =?UTF-8?q?=F0=9F=90=9B=20Avoid=20step=20rate=20ov?= =?UTF-8?q?erflow=20(#25541)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 4872e98aa9..5c0034a5f9 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -2098,9 +2098,15 @@ hal_timer_t Stepper::calc_timer_interval(uint32_t step_rate) { #else - // AVR is able to keep up at 30khz Stepping ISR rate. constexpr uint32_t min_step_rate = (F_CPU) / 500000U; // i.e., 32 or 40 if (step_rate >= 0x0800) { // higher step rate + // AVR is able to keep up at around 65kHz Stepping ISR rate at most. + // So values for step_rate > 65535 might as well be truncated. + // Handle it as quickly as possible. i.e., assume highest byte is zero + // because non-zero would represent a step rate far beyond AVR capabilities. + if (uint8_t(step_rate >> 16)) + return uint32_t(STEPPER_TIMER_RATE) / 0x10000; + const uintptr_t table_address = uintptr_t(&speed_lookuptable_fast[uint8_t(step_rate >> 8)]); const uint16_t base = uint16_t(pgm_read_word(table_address)); const uint8_t gain = uint8_t(pgm_read_byte(table_address + 2)); @@ -2112,10 +2118,8 @@ hal_timer_t Stepper::calc_timer_interval(uint32_t step_rate) { return uint16_t(pgm_read_word(table_address)) - ((uint16_t(pgm_read_word(table_address + 2)) * uint8_t(step_rate & 0x0007)) >> 3); } - else { - step_rate = 0; - return uint16_t(pgm_read_word(uintptr_t(speed_lookuptable_slow))); - } + + return uint16_t(pgm_read_word(uintptr_t(speed_lookuptable_slow))); #endif // !CPU_32_BIT } @@ -2250,7 +2254,7 @@ hal_timer_t Stepper::block_phase_isr() { #if ENABLED(LIN_ADVANCE) if (la_active) { const uint32_t la_step_rate = la_advance_steps < current_block->max_adv_steps ? current_block->la_advance_rate : 0; - la_interval = calc_timer_interval(acc_step_rate + la_step_rate) << current_block->la_scaling; + la_interval = calc_timer_interval((acc_step_rate + la_step_rate) >> current_block->la_scaling); } #endif @@ -2322,7 +2326,7 @@ hal_timer_t Stepper::block_phase_isr() { const uint32_t la_step_rate = la_advance_steps > current_block->final_adv_steps ? current_block->la_advance_rate : 0; if (la_step_rate != step_rate) { bool reverse_e = la_step_rate > step_rate; - la_interval = calc_timer_interval(reverse_e ? la_step_rate - step_rate : step_rate - la_step_rate) << current_block->la_scaling; + la_interval = calc_timer_interval((reverse_e ? la_step_rate - step_rate : step_rate - la_step_rate) >> current_block->la_scaling); if (reverse_e != motor_direction(E_AXIS)) { TBI(last_direction_bits, E_AXIS); @@ -2380,7 +2384,7 @@ hal_timer_t Stepper::block_phase_isr() { #if ENABLED(LIN_ADVANCE) if (la_active) - la_interval = calc_timer_interval(current_block->nominal_rate) << current_block->la_scaling; + la_interval = calc_timer_interval(current_block->nominal_rate >> current_block->la_scaling); #endif } @@ -2702,7 +2706,7 @@ hal_timer_t Stepper::block_phase_isr() { #if ENABLED(LIN_ADVANCE) if (la_active) { const uint32_t la_step_rate = la_advance_steps < current_block->max_adv_steps ? current_block->la_advance_rate : 0; - la_interval = calc_timer_interval(current_block->initial_rate + la_step_rate) << current_block->la_scaling; + la_interval = calc_timer_interval((current_block->initial_rate + la_step_rate) >> current_block->la_scaling); } #endif } From d450f67caa0d14386760f472fc3165988db95d37 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 20 Mar 2023 00:23:12 +0000 Subject: [PATCH 157/659] [cron] Bump distribution date (2023-03-20) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index a70e6910d3..d052c3bff9 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-19" +//#define STRING_DISTRIBUTION_DATE "2023-03-20" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 3e3244a207..99eb9bd3d7 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-19" + #define STRING_DISTRIBUTION_DATE "2023-03-20" #endif /** From 06cfd9c54af1537adf458a719b840cd501395278 Mon Sep 17 00:00:00 2001 From: John Lagonikas <39417467+zeleps@users.noreply.github.com> Date: Wed, 22 Mar 2023 02:15:51 +0200 Subject: [PATCH 158/659] =?UTF-8?q?=E2=9C=A8=20PROBING=5FTOOL=20(#24411)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 6 ++ Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 7 +- Marlin/src/gcode/bedlevel/G35.cpp | 10 +-- Marlin/src/gcode/bedlevel/abl/G29.cpp | 11 +--- Marlin/src/gcode/bedlevel/mbl/G29.cpp | 10 ++- Marlin/src/gcode/calibrate/G33.cpp | 8 +-- Marlin/src/gcode/calibrate/G34_M422.cpp | 13 ++-- Marlin/src/gcode/probe/G30.cpp | 8 +-- Marlin/src/inc/Conditionals_LCD.h | 8 +++ Marlin/src/inc/SanityCheck.h | 4 ++ Marlin/src/module/probe.cpp | 71 +++++++++++++++------ Marlin/src/module/probe.h | 2 + 12 files changed, 96 insertions(+), 62 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index b96837d50c..2603999bd5 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1552,6 +1552,12 @@ */ #define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 } +// Enable and set to use a specific tool for probing. Disable to allow any tool. +#define PROBING_TOOL 0 +#ifdef PROBING_TOOL + //#define PROBE_TOOLCHANGE_NO_MOVE // Suppress motion on probe tool-change +#endif + // Most probes should stay away from the edges of the bed, but // with NOZZLE_AS_PROBE this can be negative for a wider probing area. #define PROBING_MARGIN 10 diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index 7b9783bfac..d9205b7577 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -306,16 +306,13 @@ void unified_bed_leveling::G29() { const uint8_t p_val = parser.byteval('P'); const bool may_move = p_val == 1 || p_val == 2 || p_val == 4 || parser.seen_test('J'); - #if HAS_MULTI_HOTEND - const uint8_t old_tool_index = active_extruder; - #endif // Check for commands that require the printer to be homed if (may_move) { planner.synchronize(); // Send 'N' to force homing before G29 (internal only) if (axes_should_home() || parser.seen_test('N')) gcode.home_all_axes(); - TERN_(HAS_MULTI_HOTEND, if (active_extruder != 0) tool_change(0, true)); + probe.use_probing_tool(); // Position bed horizontally and Z probe vertically. #if HAS_SAFE_BED_LEVELING @@ -696,7 +693,7 @@ void unified_bed_leveling::G29() { UNUSED(probe_deployed); #endif - TERN_(HAS_MULTI_HOTEND, if (old_tool_index != 0) tool_change(old_tool_index)); + probe.use_probing_tool(false); return; } diff --git a/Marlin/src/gcode/bedlevel/G35.cpp b/Marlin/src/gcode/bedlevel/G35.cpp index ff0321e4aa..c1cef2b987 100644 --- a/Marlin/src/gcode/bedlevel/G35.cpp +++ b/Marlin/src/gcode/bedlevel/G35.cpp @@ -86,11 +86,7 @@ void GcodeSuite::G35() { workspace_plane = PLANE_XY; #endif - // Always home with tool 0 active - #if HAS_MULTI_HOTEND - const uint8_t old_tool_index = active_extruder; - tool_change(0, true); - #endif + probe.use_probing_tool(); // Disable duplication mode on homing TERN_(HAS_DUPLICATION_MODE, set_duplication_enabled(false)); @@ -153,9 +149,7 @@ void GcodeSuite::G35() { SERIAL_ECHOLNPGM("G35 aborted."); // Restore the active tool after homing - #if HAS_MULTI_HOTEND - if (old_tool_index != 0) tool_change(old_tool_index, DISABLED(PARKING_EXTRUDER)); // Fetch previous toolhead if not PARKING_EXTRUDER - #endif + probe.use_probing_tool(false); #if BOTH(HAS_LEVELING, RESTORE_LEVELING_AFTER_G35) set_bed_leveling_enabled(leveling_was_active); diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index e1fd0124c4..e334412054 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -97,10 +97,6 @@ public: bool dryrun, reenable; - #if HAS_MULTI_HOTEND - uint8_t tool_index; - #endif - #if EITHER(PROBE_MANUALLY, AUTO_BED_LEVELING_LINEAR) int abl_probe_index; #endif @@ -281,10 +277,7 @@ G29_TYPE GcodeSuite::G29() { */ if (!g29_in_progress) { - #if HAS_MULTI_HOTEND - abl.tool_index = active_extruder; - if (active_extruder != 0) tool_change(0, true); - #endif + probe.use_probing_tool(); #if EITHER(PROBE_MANUALLY, AUTO_BED_LEVELING_LINEAR) abl.abl_probe_index = -1; @@ -947,7 +940,7 @@ G29_TYPE GcodeSuite::G29() { process_subcommands_now(F(Z_PROBE_END_SCRIPT)); #endif - TERN_(HAS_MULTI_HOTEND, if (abl.tool_index != 0) tool_change(abl.tool_index)); + probe.use_probing_tool(false); report_current_position(); diff --git a/Marlin/src/gcode/bedlevel/mbl/G29.cpp b/Marlin/src/gcode/bedlevel/mbl/G29.cpp index e3e96a7960..9f902141fb 100644 --- a/Marlin/src/gcode/bedlevel/mbl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/mbl/G29.cpp @@ -103,9 +103,8 @@ void GcodeSuite::G29() { bedlevel.reset(); mbl_probe_index = 0; if (!ui.wait_for_move) { - queue.inject(parser.seen_test('N') ? F("G28" TERN(CAN_SET_LEVELING_AFTER_G28, "L0", "") "\nG29S2") : F("G29S2")); - TERN_(EXTENSIBLE_UI, ExtUI::onLevelingStart()); - TERN_(DWIN_LCD_PROUI, DWIN_LevelingStart()); + if (parser.seen_test('N')) + queue.inject(F("G28" TERN_(CAN_SET_LEVELING_AFTER_G28, "L0"))); // Position bed horizontally and Z probe vertically. #if HAS_SAFE_BED_LEVELING @@ -141,6 +140,11 @@ void GcodeSuite::G29() { do_blocking_move_to(safe_position); #endif // HAS_SAFE_BED_LEVELING + queue.inject(F("G29S2")); + + TERN_(EXTENSIBLE_UI, ExtUI::onLevelingStart()); + TERN_(DWIN_LCD_PROUI, DWIN_LevelingStart()); + return; } state = MeshNext; diff --git a/Marlin/src/gcode/calibrate/G33.cpp b/Marlin/src/gcode/calibrate/G33.cpp index 836d5c867b..61320c0576 100644 --- a/Marlin/src/gcode/calibrate/G33.cpp +++ b/Marlin/src/gcode/calibrate/G33.cpp @@ -63,10 +63,6 @@ enum CalEnum : char { // the 7 main calibration points - #define LOOP_CAL_RAD(VAR) LOOP_CAL_PT(VAR, __A, _7P_STEP) #define LOOP_CAL_ACT(VAR, _4P, _OP) LOOP_CAL_PT(VAR, _OP ? _AB : __A, _4P ? _4P_STEP : _7P_STEP) -#if HAS_MULTI_HOTEND - const uint8_t old_tool_index = active_extruder; -#endif - float lcd_probe_pt(const xy_pos_t &xy); void ac_home() { @@ -78,7 +74,7 @@ void ac_home() { } void ac_setup(const bool reset_bed) { - TERN_(HAS_MULTI_HOTEND, tool_change(0, true)); + TERN_(HAS_BED_PROBE, probe.use_probing_tool()); planner.synchronize(); remember_feedrate_scaling_off(); @@ -92,7 +88,7 @@ void ac_cleanup(TERN_(HAS_MULTI_HOTEND, const uint8_t old_tool_index)) { TERN_(DELTA_HOME_TO_SAFE_ZONE, do_blocking_move_to_z(delta_clip_start_height)); TERN_(HAS_BED_PROBE, probe.stow()); restore_feedrate_and_scaling(); - TERN_(HAS_MULTI_HOTEND, tool_change(old_tool_index, true)); + TERN_(HAS_BED_PROBE, probe.use_probing_tool(false)); } void print_signed_float(FSTR_P const prefix, const_float_t f) { diff --git a/Marlin/src/gcode/calibrate/G34_M422.cpp b/Marlin/src/gcode/calibrate/G34_M422.cpp index 8cf652cd84..6d5ca8bf19 100644 --- a/Marlin/src/gcode/calibrate/G34_M422.cpp +++ b/Marlin/src/gcode/calibrate/G34_M422.cpp @@ -108,6 +108,7 @@ void GcodeSuite::G34() { } #if ENABLED(Z_STEPPER_AUTO_ALIGN) + do { // break out on error const int8_t z_auto_align_iterations = parser.intval('I', Z_STEPPER_ALIGN_ITERATIONS); @@ -142,11 +143,7 @@ void GcodeSuite::G34() { TERN_(CNC_WORKSPACE_PLANES, workspace_plane = PLANE_XY); - // Always home with tool 0 active - #if HAS_MULTI_HOTEND - const uint8_t old_tool_index = active_extruder; - tool_change(0, true); - #endif + probe.use_probing_tool(); TERN_(HAS_DUPLICATION_MODE, set_duplication_enabled(false)); @@ -448,14 +445,16 @@ void GcodeSuite::G34() { sync_plan_position(); #endif - // Restore the active tool after homing - TERN_(HAS_MULTI_HOTEND, tool_change(old_tool_index, DISABLED(PARKING_EXTRUDER))); // Fetch previous tool for parking extruder + probe.use_probing_tool(false); #if BOTH(HAS_LEVELING, RESTORE_LEVELING_AFTER_G34) set_bed_leveling_enabled(leveling_was_active); #endif }while(0); + + probe.use_probing_tool(false); + #endif // Z_STEPPER_AUTO_ALIGN } diff --git a/Marlin/src/gcode/probe/G30.cpp b/Marlin/src/gcode/probe/G30.cpp index 6893d4bec2..0a23e0981c 100644 --- a/Marlin/src/gcode/probe/G30.cpp +++ b/Marlin/src/gcode/probe/G30.cpp @@ -53,10 +53,7 @@ */ void GcodeSuite::G30() { - #if HAS_MULTI_HOTEND - const uint8_t old_tool_index = active_extruder; - tool_change(0); - #endif + probe.use_probing_tool(); // Convert the given logical position to native position const xy_pos_t pos = { @@ -106,8 +103,7 @@ void GcodeSuite::G30() { #endif } - // Restore the active tool - TERN_(HAS_MULTI_HOTEND, tool_change(old_tool_index)); + probe.use_probing_tool(false); } #endif // HAS_BED_PROBE diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index dc9849399c..32712a86d6 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -1110,6 +1110,14 @@ #define HAS_BED_PROBE 1 #endif +// Probing tool change +#if !HAS_MULTI_EXTRUDER + #undef PROBING_TOOL +#endif +#if HAS_BED_PROBE && defined(PROBING_TOOL) + #define DO_TOOLCHANGE_FOR_PROBING 1 +#endif + /** * Fill in undefined Filament Sensor options */ diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index c1e9b29444..5218cf792b 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2664,6 +2664,10 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #endif // HOTENDS > 2 #endif // HAS_MULTI_HOTEND +#if DO_TOOLCHANGE_FOR_PROBING && PROBING_TOOL >= EXTRUDERS + #error "PROBING_TOOL must be a valid tool index." +#endif + /** * Pins must be set for temp sensors, with some other feature requirements. */ diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index d48dc1eb1c..25581922f6 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -196,35 +196,35 @@ xyz_pos_t Probe::offset; // Initialized by settings.load() inline void run_deploy_moves() { #ifdef Z_PROBE_ALLEN_KEY_DEPLOY_1 #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE 0.0 + #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE 0.0f #endif constexpr xyz_pos_t deploy_1 = Z_PROBE_ALLEN_KEY_DEPLOY_1; do_blocking_move_to(deploy_1, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_DEPLOY_2 #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE 0.0 + #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE 0.0f #endif constexpr xyz_pos_t deploy_2 = Z_PROBE_ALLEN_KEY_DEPLOY_2; do_blocking_move_to(deploy_2, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_DEPLOY_3 #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE 0.0 + #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE 0.0f #endif constexpr xyz_pos_t deploy_3 = Z_PROBE_ALLEN_KEY_DEPLOY_3; do_blocking_move_to(deploy_3, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_DEPLOY_4 #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_4_FEEDRATE - #define Z_PROBE_ALLEN_KEY_DEPLOY_4_FEEDRATE 0.0 + #define Z_PROBE_ALLEN_KEY_DEPLOY_4_FEEDRATE 0.0f #endif constexpr xyz_pos_t deploy_4 = Z_PROBE_ALLEN_KEY_DEPLOY_4; do_blocking_move_to(deploy_4, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_4_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_DEPLOY_5 #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_5_FEEDRATE - #define Z_PROBE_ALLEN_KEY_DEPLOY_5_FEEDRATE 0.0 + #define Z_PROBE_ALLEN_KEY_DEPLOY_5_FEEDRATE 0.0f #endif constexpr xyz_pos_t deploy_5 = Z_PROBE_ALLEN_KEY_DEPLOY_5; do_blocking_move_to(deploy_5, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_5_FEEDRATE)); @@ -234,35 +234,35 @@ xyz_pos_t Probe::offset; // Initialized by settings.load() inline void run_stow_moves() { #ifdef Z_PROBE_ALLEN_KEY_STOW_1 #ifndef Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE - #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE 0.0 + #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE 0.0f #endif constexpr xyz_pos_t stow_1 = Z_PROBE_ALLEN_KEY_STOW_1; do_blocking_move_to(stow_1, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_STOW_2 #ifndef Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE - #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE 0.0 + #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE 0.0f #endif constexpr xyz_pos_t stow_2 = Z_PROBE_ALLEN_KEY_STOW_2; do_blocking_move_to(stow_2, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_STOW_3 #ifndef Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE - #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE 0.0 + #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE 0.0f #endif constexpr xyz_pos_t stow_3 = Z_PROBE_ALLEN_KEY_STOW_3; do_blocking_move_to(stow_3, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_STOW_4 #ifndef Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE - #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE 0.0 + #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE 0.0f #endif constexpr xyz_pos_t stow_4 = Z_PROBE_ALLEN_KEY_STOW_4; do_blocking_move_to(stow_4, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_STOW_5 #ifndef Z_PROBE_ALLEN_KEY_STOW_5_FEEDRATE - #define Z_PROBE_ALLEN_KEY_STOW_5_FEEDRATE 0.0 + #define Z_PROBE_ALLEN_KEY_STOW_5_FEEDRATE 0.0f #endif constexpr xyz_pos_t stow_5 = Z_PROBE_ALLEN_KEY_STOW_5; do_blocking_move_to(stow_5, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_5_FEEDRATE)); @@ -355,7 +355,8 @@ xyz_pos_t Probe::offset; // Initialized by settings.load() void Probe::do_z_raise(const float z_raise) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Probe::do_z_raise(", z_raise, ")"); float z_dest = z_raise; - if (offset.z < 0) z_dest -= offset.z; + const float zoffs = DIFF_TERN(HAS_HOTEND_OFFSET, offset.z, hotend_offset[active_extruder].z); + if (zoffs < 0) z_dest -= zoffs; do_z_clearance(z_dest); } @@ -714,13 +715,15 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { float Probe::run_z_probe(const bool sanity_check/*=true*/) { DEBUG_SECTION(log_probe, "Probe::run_z_probe", DEBUGGING(LEVELING)); + const float zoffs = SUM_TERN(HAS_HOTEND_OFFSET, -offset.z, hotend_offset[active_extruder].z); + auto try_to_probe = [&](PGM_P const plbl, const_float_t z_probe_low_point, const feedRate_t fr_mm_s, const bool scheck, const float clearance) -> bool { // Tare the probe, if supported if (TERN0(PROBE_TARE, tare())) return true; // Do a first probe at the fast speed - const bool probe_fail = probe_down_to_z(z_probe_low_point, fr_mm_s), // No probe trigger? - early_fail = (scheck && current_position.z > -offset.z + clearance); // Probe triggered too high? + const bool probe_fail = probe_down_to_z(z_probe_low_point, fr_mm_s), // No probe trigger? + early_fail = (scheck && current_position.z > zoffs + clearance); // Probe triggered too high? #if ENABLED(DEBUG_LEVELING_FEATURE) if (DEBUGGING(LEVELING) && (probe_fail || early_fail)) { DEBUG_ECHOPGM_P(plbl); @@ -737,7 +740,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { // Stop the probe before it goes too low to prevent damage. // If Z isn't known then probe to -10mm. - const float z_probe_low_point = axis_is_trusted(Z_AXIS) ? -offset.z + Z_PROBE_LOW_POINT : -10.0; + const float z_probe_low_point = axis_is_trusted(Z_AXIS) ? zoffs + Z_PROBE_LOW_POINT : -10.0f; // Double-probing does a fast probe followed by a slow probe #if TOTAL_PROBING == 2 @@ -759,7 +762,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { // If the nozzle is well over the travel height then // move down quickly before doing the slow probe - const float z = Z_CLEARANCE_DEPLOY_PROBE + 5.0 + (offset.z < 0 ? -offset.z : 0); + const float z = Z_CLEARANCE_DEPLOY_PROBE + 5.0f + (zoffs > 0 ? zoffs : 0); if (current_position.z > z) { // Probe down fast. If the probe never triggered, raise for probe clearance if (!probe_down_to_z(z, z_probe_fast_mm_s)) @@ -847,7 +850,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("2nd Probe Z:", z2, " Discrepancy:", first_probe_z - z2); // Return a weighted average of the fast and slow probes - const float measured_z = (z2 * 3.0 + first_probe_z * 2.0) * 0.2; + const float measured_z = (z2 * 3.0f + first_probe_z * 2.0f) * 0.2f; #else @@ -856,10 +859,33 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { #endif - return measured_z; + return DIFF_TERN(HAS_HOTEND_OFFSET, measured_z, hotend_offset[active_extruder].z); } +#if DO_TOOLCHANGE_FOR_PROBING + + #include "tool_change.h" + + /** + * Switches to the appropriate tool (PROBING_TOOL) for probing (probing = true), and switches + * back to the old tool when probing = false. Uses statics to avoid unnecessary checks and to + * cache the previous tool, so always call with false after calling with true. + */ + void Probe::use_probing_tool(const bool probing/*=true*/) { + static uint8_t old_tool; + static bool old_state = false; + if (probing == old_state) return; + old_state = probing; + if (probing) old_tool = active_extruder; + const uint8_t tool = probing ? PROBING_TOOL : old_tool; + if (tool != active_extruder) + tool_change(tool, ENABLED(PROBE_TOOLCHANGE_NO_MOVE)); + } + +#endif + /** + * - Switch to PROBING_TOOL if necessary * - Move to the given XY * - Deploy the probe, if not already deployed * - Probe the bed, get the Z position @@ -867,6 +893,12 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { * - Stow the probe, or * - Raise to the BETWEEN height * - Return the probed Z position + * - Revert to previous tool + * + * A batch of multiple probing operations should always be preceded by use_probing_tool() invocation + * and succeeded by use_probing_tool(false), in order to avoid multiple tool changes and to end up + * with the previously active tool. + * */ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRaise raise_after/*=PROBE_PT_NONE*/, const uint8_t verbose_level/*=0*/, const bool probe_relative/*=true*/, const bool sanity_check/*=true*/) { DEBUG_SECTION(log_probe, "Probe::probe_at_point", DEBUGGING(LEVELING)); @@ -899,7 +931,9 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Position Not Reachable"); return NAN; } - if (probe_relative) npos -= offset_xy; // Get the nozzle position + + if (probe_relative) // Get the nozzle position, adjust for active hotend if not 0 + npos -= DIFF_TERN(HAS_HOTEND_OFFSET, offset_xy, xy_pos_t(hotend_offset[active_extruder])); // Move the probe to the starting XYZ do_blocking_move_to(npos, feedRate_t(XY_PROBE_FEEDRATE_MM_S)); @@ -938,6 +972,7 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai #endif } DEBUG_ECHOLNPGM("measured_z: ", measured_z); + return measured_z; } diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 9aff9cff06..770ca81ef4 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -188,6 +188,8 @@ public: #endif // !HAS_BED_PROBE + static void use_probing_tool(const bool=true) IF_DISABLED(DO_TOOLCHANGE_FOR_PROBING, {}); + static void move_z_after_homing() { #if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) || defined(Z_AFTER_HOMING) do_z_clearance(Z_POST_CLEARANCE, true); From 8b1830c487b29560732b079dd5defaba68560652 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 22 Mar 2023 00:23:38 +0000 Subject: [PATCH 159/659] [cron] Bump distribution date (2023-03-22) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index d052c3bff9..341cdbb482 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-20" +//#define STRING_DISTRIBUTION_DATE "2023-03-22" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 99eb9bd3d7..809ba498c1 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-20" + #define STRING_DISTRIBUTION_DATE "2023-03-22" #endif /** From 2ecd4cca1b694223802a53d5a7febaac4c4573b6 Mon Sep 17 00:00:00 2001 From: BIGTREETECH <38851044+bigtreetech@users.noreply.github.com> Date: Wed, 22 Mar 2023 15:46:03 +0800 Subject: [PATCH 160/659] =?UTF-8?q?=E2=9C=A8=20FILAMENT=5FSWITCH=5FAND=5FM?= =?UTF-8?q?OTION=20(#25548)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration.h | 41 +++++++ Marlin/src/feature/runout.cpp | 2 +- Marlin/src/feature/runout.h | 172 ++++++++++++++++++----------- Marlin/src/inc/Conditionals_LCD.h | 91 +++++++++++++++ Marlin/src/inc/Conditionals_post.h | 2 +- buildroot/tests/rambo | 4 +- 6 files changed, 243 insertions(+), 69 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 2603999bd5..9544ac5566 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1903,6 +1903,47 @@ // as the filament moves. (Be sure to set FILAMENT_RUNOUT_DISTANCE_MM // large enough to avoid false positives.) //#define FILAMENT_MOTION_SENSOR + + #if ENABLED(FILAMENT_MOTION_SENSOR) + //#define FILAMENT_SWITCH_AND_MOTION + #if ENABLED(FILAMENT_SWITCH_AND_MOTION) + #define NUM_MOTION_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_MOTION#_PIN for each. + //#define FIL_MOTION1_PIN -1 + + // Override individually if the motion sensors vary + //#define FIL_MOTION1_STATE LOW + //#define FIL_MOTION1_PULLUP + //#define FIL_MOTION1_PULLDOWN + + //#define FIL_MOTION2_STATE LOW + //#define FIL_MOTION2_PULLUP + //#define FIL_MOTION2_PULLDOWN + + //#define FIL_MOTION3_STATE LOW + //#define FIL_MOTION3_PULLUP + //#define FIL_MOTION3_PULLDOWN + + //#define FIL_MOTION4_STATE LOW + //#define FIL_MOTION4_PULLUP + //#define FIL_MOTION4_PULLDOWN + + //#define FIL_MOTION5_STATE LOW + //#define FIL_MOTION5_PULLUP + //#define FIL_MOTION5_PULLDOWN + + //#define FIL_MOTION6_STATE LOW + //#define FIL_MOTION6_PULLUP + //#define FIL_MOTION6_PULLDOWN + + //#define FIL_MOTION7_STATE LOW + //#define FIL_MOTION7_PULLUP + //#define FIL_MOTION7_PULLDOWN + + //#define FIL_MOTION8_STATE LOW + //#define FIL_MOTION8_PULLUP + //#define FIL_MOTION8_PULLDOWN + #endif + #endif #endif #endif diff --git a/Marlin/src/feature/runout.cpp b/Marlin/src/feature/runout.cpp index 98b6bd0510..44ebd85b32 100644 --- a/Marlin/src/feature/runout.cpp +++ b/Marlin/src/feature/runout.cpp @@ -47,7 +47,7 @@ bool FilamentMonitorBase::enabled = true, #if HAS_FILAMENT_RUNOUT_DISTANCE float RunoutResponseDelayed::runout_distance_mm = FILAMENT_RUNOUT_DISTANCE_MM; - volatile float RunoutResponseDelayed::runout_mm_countdown[NUM_RUNOUT_SENSORS]; + volatile countdown_t RunoutResponseDelayed::mm_countdown; #if ENABLED(FILAMENT_MOTION_SENSOR) uint8_t FilamentSensorEncoder::motion_detected; #endif diff --git a/Marlin/src/feature/runout.h b/Marlin/src/feature/runout.h index e74d857a79..e839db3f5e 100644 --- a/Marlin/src/feature/runout.h +++ b/Marlin/src/feature/runout.h @@ -43,12 +43,18 @@ #define FILAMENT_RUNOUT_THRESHOLD 5 #endif +#if ENABLED(FILAMENT_MOTION_SENSOR) + #define HAS_FILAMENT_MOTION 1 +#endif +#if DISABLED(FILAMENT_MOTION_SENSOR) || ENABLED(FILAMENT_SWITCH_AND_MOTION) + #define HAS_FILAMENT_SWITCH 1 +#endif + void event_filament_runout(const uint8_t extruder); template class TFilamentMonitor; -class FilamentSensorEncoder; -class FilamentSensorSwitch; +class FilamentSensor; class RunoutResponseDelayed; class RunoutResponseDebounced; @@ -56,7 +62,7 @@ class RunoutResponseDebounced; typedef TFilamentMonitor< TERN(HAS_FILAMENT_RUNOUT_DISTANCE, RunoutResponseDelayed, RunoutResponseDebounced), - TERN(FILAMENT_MOTION_SENSOR, FilamentSensorEncoder, FilamentSensorSwitch) + FilamentSensor > FilamentMonitor; extern FilamentMonitor runout; @@ -98,6 +104,11 @@ class TFilamentMonitor : public FilamentMonitorBase { static void filament_present(const uint8_t extruder) { response.filament_present(extruder); } + #if ENABLED(FILAMENT_SWITCH_AND_MOTION) + static void filament_motion_present(const uint8_t extruder) { + response.filament_motion_present(extruder); + } + #endif #if HAS_FILAMENT_RUNOUT_DISTANCE static float& runout_distance() { return response.runout_distance_mm; } @@ -171,37 +182,25 @@ class FilamentSensorBase { static void filament_present(const uint8_t extruder) { runout.filament_present(extruder); // ...which calls response.filament_present(extruder) } + #if ENABLED(FILAMENT_SWITCH_AND_MOTION) + static void filament_motion_present(const uint8_t extruder) { + runout.filament_motion_present(extruder); // ...which calls response.filament_motion_present(extruder) + } + #endif public: static void setup() { - #define _INIT_RUNOUT_PIN(P,S,U,D) do{ if (ENABLED(U)) SET_INPUT_PULLUP(P); else if (ENABLED(D)) SET_INPUT_PULLDOWN(P); else SET_INPUT(P); }while(0) + #define _INIT_RUNOUT_PIN(P,S,U,D) do{ if (ENABLED(U)) SET_INPUT_PULLUP(P); else if (ENABLED(D)) SET_INPUT_PULLDOWN(P); else SET_INPUT(P); }while(0); #define INIT_RUNOUT_PIN(N) _INIT_RUNOUT_PIN(FIL_RUNOUT##N##_PIN, FIL_RUNOUT##N##_STATE, FIL_RUNOUT##N##_PULLUP, FIL_RUNOUT##N##_PULLDOWN) - #if NUM_RUNOUT_SENSORS >= 1 - INIT_RUNOUT_PIN(1); - #endif - #if NUM_RUNOUT_SENSORS >= 2 - INIT_RUNOUT_PIN(2); - #endif - #if NUM_RUNOUT_SENSORS >= 3 - INIT_RUNOUT_PIN(3); - #endif - #if NUM_RUNOUT_SENSORS >= 4 - INIT_RUNOUT_PIN(4); - #endif - #if NUM_RUNOUT_SENSORS >= 5 - INIT_RUNOUT_PIN(5); - #endif - #if NUM_RUNOUT_SENSORS >= 6 - INIT_RUNOUT_PIN(6); - #endif - #if NUM_RUNOUT_SENSORS >= 7 - INIT_RUNOUT_PIN(7); - #endif - #if NUM_RUNOUT_SENSORS >= 8 - INIT_RUNOUT_PIN(8); + REPEAT_1(NUM_RUNOUT_SENSORS, INIT_RUNOUT_PIN); + #undef INIT_RUNOUT_PIN + + #if ENABLED(FILAMENT_SWITCH_AND_MOTION) + #define INIT_MOTION_PIN(N) _INIT_RUNOUT_PIN(FIL_MOTION##N##_PIN, FIL_MOTION##N##_STATE, FIL_MOTION##N##_PULLUP, FIL_MOTION##N##_PULLDOWN) + REPEAT_1(NUM_MOTION_SENSORS, INIT_MOTION_PIN); + #undef INIT_MOTION_PIN #endif #undef _INIT_RUNOUT_PIN - #undef INIT_RUNOUT_PIN } // Return a bitmask of runout pin states @@ -213,36 +212,29 @@ class FilamentSensorBase { // Return a bitmask of runout flag states (1 bits always indicates runout) static uint8_t poll_runout_states() { - return poll_runout_pins() ^ uint8_t(0 - #if NUM_RUNOUT_SENSORS >= 1 - | (FIL_RUNOUT1_STATE ? 0 : _BV(1 - 1)) - #endif - #if NUM_RUNOUT_SENSORS >= 2 - | (FIL_RUNOUT2_STATE ? 0 : _BV(2 - 1)) - #endif - #if NUM_RUNOUT_SENSORS >= 3 - | (FIL_RUNOUT3_STATE ? 0 : _BV(3 - 1)) - #endif - #if NUM_RUNOUT_SENSORS >= 4 - | (FIL_RUNOUT4_STATE ? 0 : _BV(4 - 1)) - #endif - #if NUM_RUNOUT_SENSORS >= 5 - | (FIL_RUNOUT5_STATE ? 0 : _BV(5 - 1)) - #endif - #if NUM_RUNOUT_SENSORS >= 6 - | (FIL_RUNOUT6_STATE ? 0 : _BV(6 - 1)) - #endif - #if NUM_RUNOUT_SENSORS >= 7 - | (FIL_RUNOUT7_STATE ? 0 : _BV(7 - 1)) - #endif - #if NUM_RUNOUT_SENSORS >= 8 - | (FIL_RUNOUT8_STATE ? 0 : _BV(8 - 1)) - #endif - ); + #define _OR_RUNOUT(N) | (FIL_RUNOUT##N##_STATE ? 0 : _BV(N - 1)) + return poll_runout_pins() ^ uint8_t(0 REPEAT_1(NUM_RUNOUT_SENSORS, _OR_RUNOUT)); + #undef _OR_RUNOUT } + + #if ENABLED(FILAMENT_SWITCH_AND_MOTION) + // Return a bitmask of motion pin states + static uint8_t poll_motion_pins() { + #define _OR_MOTION(N) | (READ(FIL_MOTION##N##_PIN) ? _BV((N) - 1) : 0) + return (0 REPEAT_1(NUM_MOTION_SENSORS, _OR_MOTION)); + #undef _OR_MOTION + } + + // Return a bitmask of motion flag states (1 bits always indicates runout) + static uint8_t poll_motion_states() { + #define _OR_MOTION(N) | (FIL_MOTION##N##_STATE ? 0 : _BV(N - 1)) + return poll_motion_pins() ^ uint8_t(0 REPEAT_1(NUM_MOTION_SENSORS, _OR_MOTION)); + #undef _OR_MOTION + } + #endif }; -#if ENABLED(FILAMENT_MOTION_SENSOR) +#if HAS_FILAMENT_MOTION /** * This sensor uses a magnetic encoder disc and a Hall effect @@ -256,14 +248,14 @@ class FilamentSensorBase { static void poll_motion_sensor() { static uint8_t old_state; - const uint8_t new_state = poll_runout_pins(), + const uint8_t new_state = TERN(FILAMENT_SWITCH_AND_MOTION, poll_motion_pins, poll_runout_pins)(), change = old_state ^ new_state; old_state = new_state; #if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG) if (change) { SERIAL_ECHOPGM("Motion detected:"); - LOOP_L_N(e, NUM_RUNOUT_SENSORS) + LOOP_L_N(e, TERN(FILAMENT_SWITCH_AND_MOTION, NUM_MOTION_SENSORS, NUM_RUNOUT_SENSORS)) if (TEST(change, e)) SERIAL_CHAR(' ', '0' + e); SERIAL_EOL(); } @@ -277,7 +269,7 @@ class FilamentSensorBase { // If the sensor wheel has moved since the last call to // this method reset the runout counter for the extruder. if (TEST(motion_detected, b->extruder)) - filament_present(b->extruder); + TERN(FILAMENT_SWITCH_AND_MOTION, filament_motion_present, filament_present)(b->extruder); // Clear motion triggers for next block motion_detected = 0; @@ -286,7 +278,9 @@ class FilamentSensorBase { static void run() { poll_motion_sensor(); } }; -#else +#endif // HAS_FILAMENT_MOTION + +#if HAS_FILAMENT_SWITCH /** * This is a simple endstop switch in the path of the filament. @@ -324,25 +318,56 @@ class FilamentSensorBase { } }; + #endif // HAS_FILAMENT_SWITCH + + /** + * This is a simple endstop switch in the path of the filament. + * It can detect filament runout, but not stripouts or jams. + */ + class FilamentSensor : public FilamentSensorBase { + private: + TERN_(HAS_FILAMENT_MOTION, static FilamentSensorEncoder encoder_sensor); + TERN_(HAS_FILAMENT_SWITCH, static FilamentSensorSwitch switch_sensor); + + public: + static void block_completed(const block_t * const b) { + TERN_(HAS_FILAMENT_MOTION, encoder_sensor.block_completed(b)); + TERN_(HAS_FILAMENT_SWITCH, switch_sensor.block_completed(b)); + } + + static void run() { + TERN_(HAS_FILAMENT_MOTION, encoder_sensor.run()); + TERN_(HAS_FILAMENT_SWITCH, switch_sensor.run()); + } + }; -#endif // !FILAMENT_MOTION_SENSOR /********************************* RESPONSE TYPE *********************************/ #if HAS_FILAMENT_RUNOUT_DISTANCE + typedef struct { + float runout[NUM_RUNOUT_SENSORS]; + #if ENABLED(FILAMENT_SWITCH_AND_MOTION) + float motion[NUM_MOTION_SENSORS]; + #endif + } countdown_t; + // RunoutResponseDelayed triggers a runout event only if the length // of filament specified by FILAMENT_RUNOUT_DISTANCE_MM has been fed // during a runout condition. class RunoutResponseDelayed { private: - static volatile float runout_mm_countdown[NUM_RUNOUT_SENSORS]; + static volatile countdown_t mm_countdown; public: static float runout_distance_mm; static void reset() { LOOP_L_N(i, NUM_RUNOUT_SENSORS) filament_present(i); + #if ENABLED(FILAMENT_SWITCH_AND_MOTION) + LOOP_L_N(i, NUM_MOTION_SENSORS) filament_motion_present(i); + #endif } static void run() { @@ -352,7 +377,11 @@ class FilamentSensorBase { if (ELAPSED(ms, t)) { t = millis() + 1000UL; LOOP_L_N(i, NUM_RUNOUT_SENSORS) - SERIAL_ECHOF(i ? F(", ") : F("Remaining mm: "), runout_mm_countdown[i]); + SERIAL_ECHOF(i ? F(", ") : F("Runout remaining mm: "), mm_countdown.runout[i]); + #if ENABLED(FILAMENT_SWITCH_AND_MOTION) + LOOP_L_N(i, NUM_MOTION_SENSORS) + SERIAL_ECHOF(i ? F(", ") : F("Motion remaining mm: "), mm_countdown.motion[i]); + #endif SERIAL_EOL(); } #endif @@ -360,20 +389,33 @@ class FilamentSensorBase { static uint8_t has_run_out() { uint8_t runout_flags = 0; - LOOP_L_N(i, NUM_RUNOUT_SENSORS) if (runout_mm_countdown[i] < 0) SBI(runout_flags, i); + LOOP_L_N(i, NUM_RUNOUT_SENSORS) if (mm_countdown.runout[i] < 0) SBI(runout_flags, i); + #if ENABLED(FILAMENT_SWITCH_AND_MOTION) + LOOP_L_N(i, NUM_MOTION_SENSORS) if (mm_countdown.motion[i] < 0) SBI(runout_flags, i); + #endif return runout_flags; } static void filament_present(const uint8_t extruder) { - runout_mm_countdown[extruder] = runout_distance_mm; + mm_countdown.runout[extruder] = runout_distance_mm; } + #if ENABLED(FILAMENT_SWITCH_AND_MOTION) + static void filament_motion_present(const uint8_t extruder) { + mm_countdown.motion[extruder] = runout_distance_mm; + } + #endif + static void block_completed(const block_t * const b) { if (b->steps.x || b->steps.y || b->steps.z || did_pause_print) { // Allow pause purge move to re-trigger runout state // Only trigger on extrusion with XYZ movement to allow filament change and retract/recover. const uint8_t e = b->extruder; const int32_t steps = b->steps.e; - runout_mm_countdown[e] -= (TEST(b->direction_bits, E_AXIS) ? -steps : steps) * planner.mm_per_step[E_AXIS_N(e)]; + const float mm = (TEST(b->direction_bits, E_AXIS) ? -steps : steps) * planner.mm_per_step[E_AXIS_N(e)]; + if (e < NUM_RUNOUT_SENSORS) mm_countdown.runout[e] -= mm; + #if ENABLED(FILAMENT_SWITCH_AND_MOTION) + if (e < NUM_MOTION_SENSORS) mm_countdown.motion[e] -= mm; + #endif } } }; diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 32712a86d6..ecaeee86e7 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -1212,6 +1212,97 @@ #endif #endif // FILAMENT_RUNOUT_SENSOR +#if ENABLED(FILAMENT_SWITCH_AND_MOTION) + #if NUM_MOTION_SENSORS >= 1 + #ifndef FIL_MOTION1_STATE + #define FIL_MOTION1_STATE FIL_RUNOUT_STATE + #endif + #ifndef FIL_MOTION1_PULLUP + #define FIL_MOTION1_PULLUP FIL_RUNOUT_PULLUP + #endif + #ifndef FIL_MOTION1_PULLDOWN + #define FIL_MOTION1_PULLDOWN FIL_RUNOUT_PULLDOWN + #endif + #endif + #if NUM_MOTION_SENSORS >= 2 + #ifndef FIL_MOTION2_STATE + #define FIL_MOTION2_STATE FIL_RUNOUT_STATE + #endif + #ifndef FIL_MOTION2_PULLUP + #define FIL_MOTION2_PULLUP FIL_RUNOUT_PULLUP + #endif + #ifndef FIL_MOTION2_PULLDOWN + #define FIL_MOTION2_PULLDOWN FIL_RUNOUT_PULLDOWN + #endif + #endif + #if NUM_MOTION_SENSORS >= 3 + #ifndef FIL_MOTION3_STATE + #define FIL_MOTION3_STATE FIL_RUNOUT_STATE + #endif + #ifndef FIL_MOTION3_PULLUP + #define FIL_MOTION3_PULLUP FIL_RUNOUT_PULLUP + #endif + #ifndef FIL_MOTION3_PULLDOWN + #define FIL_MOTION3_PULLDOWN FIL_RUNOUT_PULLDOWN + #endif + #endif + #if NUM_MOTION_SENSORS >= 4 + #ifndef FIL_MOTION4_STATE + #define FIL_MOTION4_STATE FIL_RUNOUT_STATE + #endif + #ifndef FIL_MOTION4_PULLUP + #define FIL_MOTION4_PULLUP FIL_RUNOUT_PULLUP + #endif + #ifndef FIL_MOTION4_PULLDOWN + #define FIL_MOTION4_PULLDOWN FIL_RUNOUT_PULLDOWN + #endif + #endif + #if NUM_MOTION_SENSORS >= 5 + #ifndef FIL_MOTION5_STATE + #define FIL_MOTION5_STATE FIL_RUNOUT_STATE + #endif + #ifndef FIL_MOTION5_PULLUP + #define FIL_MOTION5_PULLUP FIL_RUNOUT_PULLUP + #endif + #ifndef FIL_MOTION5_PULLDOWN + #define FIL_MOTION5_PULLDOWN FIL_RUNOUT_PULLDOWN + #endif + #endif + #if NUM_MOTION_SENSORS >= 6 + #ifndef FIL_MOTION6_STATE + #define FIL_MOTION6_STATE FIL_RUNOUT_STATE + #endif + #ifndef FIL_MOTION6_PULLUP + #define FIL_MOTION6_PULLUP FIL_RUNOUT_PULLUP + #endif + #ifndef FIL_MOTION6_PULLDOWN + #define FIL_MOTION6_PULLDOWN FIL_RUNOUT_PULLDOWN + #endif + #endif + #if NUM_MOTION_SENSORS >= 7 + #ifndef FIL_MOTION7_STATE + #define FIL_MOTION7_STATE FIL_RUNOUT_STATE + #endif + #ifndef FIL_MOTION7_PULLUP + #define FIL_MOTION7_PULLUP FIL_RUNOUT_PULLUP + #endif + #ifndef FIL_MOTION7_PULLDOWN + #define FIL_MOTION7_PULLDOWN FIL_RUNOUT_PULLDOWN + #endif + #endif + #if NUM_MOTION_SENSORS >= 8 + #ifndef FIL_MOTION8_STATE + #define FIL_MOTION8_STATE FIL_RUNOUT_STATE + #endif + #ifndef FIL_MOTION8_PULLUP + #define FIL_MOTION8_PULLUP FIL_RUNOUT_PULLUP + #endif + #ifndef FIL_MOTION8_PULLDOWN + #define FILMOTION8_PULLDOWN FIL_RUNOUT_PULLDOWN + #endif + #endif +#endif // FILAMENT_SWITCH_AND_MOTION + // Homing to Min or Max #if X_HOME_DIR > 0 #define X_HOME_TO_MAX 1 diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index a054f90840..58f04a39b6 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -2664,7 +2664,7 @@ #endif /** - * Up to 3 PWM fans + * Up to 8 PWM fans */ #ifndef FAN_INVERTING #define FAN_INVERTING false diff --git a/buildroot/tests/rambo b/buildroot/tests/rambo index 9a017c971f..7e6f71364c 100755 --- a/buildroot/tests/rambo +++ b/buildroot/tests/rambo @@ -15,7 +15,7 @@ opt_set MOTHERBOARD BOARD_RAMBO \ TEMP_SENSOR_PROBE 1 TEMP_PROBE_PIN 12 \ TEMP_SENSOR_CHAMBER 3 TEMP_CHAMBER_PIN 3 HEATER_CHAMBER_PIN 45 \ GRID_MAX_POINTS_X 16 AUTO_POWER_E_TEMP 80 \ - FANMUX0_PIN 53 + FANMUX0_PIN 53 FIL_MOTION1_PIN 45 opt_disable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN USE_WATCHDOG opt_enable USE_ZMAX_PLUG REPRAP_DISCOUNT_SMART_CONTROLLER LCD_PROGRESS_BAR LCD_PROGRESS_BAR_TEST \ FIX_MOUNTED_PROBE CODEPENDENT_XY_HOMING PIDTEMPBED PTC_PROBE PTC_BED \ @@ -25,7 +25,7 @@ opt_enable USE_ZMAX_PLUG REPRAP_DISCOUNT_SMART_CONTROLLER LCD_PROGRESS_BAR LCD_P NEOPIXEL_LED NEOPIXEL_PIN CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CASE_LIGHT_MENU \ PID_PARAMS_PER_HOTEND PID_AUTOTUNE_MENU PID_EDIT_MENU PID_EXTRUSION_SCALING LCD_SHOW_E_TOTAL \ PRINTCOUNTER SERVICE_NAME_1 SERVICE_INTERVAL_1 LCD_BED_TRAMMING BED_TRAMMING_INCLUDE_CENTER \ - NOZZLE_PARK_FEATURE FILAMENT_RUNOUT_SENSOR FILAMENT_RUNOUT_DISTANCE_MM \ + NOZZLE_PARK_FEATURE FILAMENT_RUNOUT_SENSOR FILAMENT_RUNOUT_DISTANCE_MM FILAMENT_MOTION_SENSOR FILAMENT_SWITCH_AND_MOTION \ ADVANCED_PAUSE_FEATURE FILAMENT_LOAD_UNLOAD_GCODES FILAMENT_UNLOAD_ALL_EXTRUDERS \ PASSWORD_FEATURE PASSWORD_ON_STARTUP PASSWORD_ON_SD_PRINT_MENU PASSWORD_AFTER_SD_PRINT_END PASSWORD_AFTER_SD_PRINT_ABORT \ AUTO_BED_LEVELING_BILINEAR Z_MIN_PROBE_REPEATABILITY_TEST DISTINCT_E_FACTORS \ From 91b5015a8b3ec5efd1052fdf7208124ff8b4120b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 22 Mar 2023 03:22:29 -0500 Subject: [PATCH 161/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Ext?= =?UTF-8?q?UI::onSetPowerLoss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/powerloss.cpp | 1 + Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp | 7 +++++-- Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp | 7 +++++-- Marlin/src/lcd/extui/dgus/dgus_extui.cpp | 7 +++++-- Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp | 7 +++++-- Marlin/src/lcd/extui/example/example.cpp | 7 +++++-- Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp | 7 +++++-- Marlin/src/lcd/extui/ia_creality/creality_extui.cpp | 7 +++++-- Marlin/src/lcd/extui/malyan/malyan_extui.cpp | 7 +++++-- Marlin/src/lcd/extui/nextion/nextion_extui.cpp | 7 +++++-- Marlin/src/lcd/extui/ui_api.h | 5 +++-- 11 files changed, 49 insertions(+), 20 deletions(-) diff --git a/Marlin/src/feature/powerloss.cpp b/Marlin/src/feature/powerloss.cpp index faec893928..dd20d04278 100644 --- a/Marlin/src/feature/powerloss.cpp +++ b/Marlin/src/feature/powerloss.cpp @@ -113,6 +113,7 @@ void PrintJobRecovery::changed() { purge(); else if (IS_SD_PRINTING()) save(true); + TERN_(EXTENSIBLE_UI, ExtUI::onSetPowerLoss(onoff)); } /** diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp b/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp index 39b328d808..520ca587e3 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp @@ -94,12 +94,12 @@ namespace ExtUI { // Called after loading or resetting stored settings } - void onSettingsStored(bool success) { + void onSettingsStored(const bool success) { // Called after the entire EEPROM has been written, // whether successful or not. } - void onSettingsLoaded(bool success) { + void onSettingsLoaded(const bool success) { // Called after the entire EEPROM has been read, // whether successful or not. } @@ -120,6 +120,9 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) + void onSetPowerLoss(const bool onoff) { + // Called when power-loss is enabled/disabled + } void onPowerLoss() { // Called when power-loss state is detected } diff --git a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp index afe88bf583..a2ad678ac6 100644 --- a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp @@ -81,12 +81,12 @@ namespace ExtUI { // Called after loading or resetting stored settings } - void onSettingsStored(bool success) { + void onSettingsStored(const bool success) { // Called after the entire EEPROM has been written, // whether successful or not. } - void onSettingsLoaded(bool success) { + void onSettingsLoaded(const bool success) { // Called after the entire EEPROM has been read, // whether successful or not. } @@ -106,6 +106,9 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) + void onSetPowerLoss(const bool onoff) { + // Called when power-loss is enabled/disabled + } void onPowerLoss() { // Called when power-loss state is detected } diff --git a/Marlin/src/lcd/extui/dgus/dgus_extui.cpp b/Marlin/src/lcd/extui/dgus/dgus_extui.cpp index 2f3bbd64cc..2fe4e03016 100644 --- a/Marlin/src/lcd/extui/dgus/dgus_extui.cpp +++ b/Marlin/src/lcd/extui/dgus/dgus_extui.cpp @@ -102,12 +102,12 @@ namespace ExtUI { // Called after loading or resetting stored settings } - void onSettingsStored(bool success) { + void onSettingsStored(const bool success) { // Called after the entire EEPROM has been written, // whether successful or not. } - void onSettingsLoaded(bool success) { + void onSettingsLoaded(const bool success) { // Called after the entire EEPROM has been read, // whether successful or not. } @@ -126,6 +126,9 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) + void onSetPowerLoss(const bool onoff) { + // Called when power-loss is enabled/disabled + } void onPowerLoss() { // Called when power-loss state is detected } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp index 9aecf65f98..fb8ef8cc84 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp @@ -100,11 +100,11 @@ namespace ExtUI { void onPostprocessSettings() {} - void onSettingsStored(bool success) { + void onSettingsStored(const bool success) { dgus_screen_handler.ConfigurationStoreWritten(success); } - void onSettingsLoaded(bool success) { + void onSettingsLoaded(const bool success) { dgus_screen_handler.ConfigurationStoreRead(success); } @@ -123,6 +123,9 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) + void onSetPowerLoss(const bool onoff) { + // Called when power-loss is enabled/disabled + } void onPowerLoss() { // Called when power-loss state is detected } diff --git a/Marlin/src/lcd/extui/example/example.cpp b/Marlin/src/lcd/extui/example/example.cpp index a5e816efd8..83b7a0a3ca 100644 --- a/Marlin/src/lcd/extui/example/example.cpp +++ b/Marlin/src/lcd/extui/example/example.cpp @@ -88,12 +88,12 @@ namespace ExtUI { // Called after loading or resetting stored settings } - void onSettingsStored(bool success) { + void onSettingsStored(const bool success) { // Called after the entire EEPROM has been written, // whether successful or not. } - void onSettingsLoaded(bool success) { + void onSettingsLoaded(const bool success) { // Called after the entire EEPROM has been read, // whether successful or not. } @@ -112,6 +112,9 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) + void onSetPowerLoss(const bool onoff) { + // Called when power-loss is enabled/disabled + } void onPowerLoss() { // Called when power-loss state is detected } diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp index 159847bde1..b82b4a07bd 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp @@ -97,7 +97,7 @@ namespace ExtUI { void onLoadSettings(const char *buff) { InterfaceSettingsScreen::loadSettings(buff); } void onPostprocessSettings() {} // Called after loading or resetting stored settings - void onSettingsStored(bool success) { + void onSettingsStored(const bool success) { #ifdef ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE if (success && InterfaceSettingsScreen::backupEEPROM()) { SERIAL_ECHOLNPGM("EEPROM backed up to SPI Flash"); @@ -106,7 +106,7 @@ namespace ExtUI { UNUSED(success); #endif } - void onSettingsLoaded(bool) {} + void onSettingsLoaded(const bool) {} void onPlayTone(const uint16_t frequency, const uint16_t duration) { sound.play_tone(frequency, duration); } @@ -125,6 +125,9 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) + void onSetPowerLoss(const bool onoff) { + // Called when power-loss is enabled/disabled + } void onPowerLoss() { // Called when power-loss state is detected } diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp index c9c064fdc8..d92517578f 100644 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp +++ b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp @@ -1995,12 +1995,12 @@ namespace ExtUI { SetTouchScreenConfiguration(); } - void onSettingsStored(bool success) { + void onSettingsStored(const bool success) { // This is called after the entire EEPROM has been written, // whether successful or not. } - void onSettingsLoaded(bool success) { + void onSettingsLoaded(const bool success) { #if HAS_MESH if (ExtUI::getMeshValid()) { uint8_t abl_probe_index = 0; @@ -2026,6 +2026,9 @@ namespace ExtUI { } #if ENABLED(POWER_LOSS_RECOVERY) + void onSetPowerLoss(const bool onoff) { + // Called when power-loss is enabled/disabled + } void onPowerLoss() { // Called when power-loss state is detected } diff --git a/Marlin/src/lcd/extui/malyan/malyan_extui.cpp b/Marlin/src/lcd/extui/malyan/malyan_extui.cpp index b978937def..8bffa442b6 100644 --- a/Marlin/src/lcd/extui/malyan/malyan_extui.cpp +++ b/Marlin/src/lcd/extui/malyan/malyan_extui.cpp @@ -147,8 +147,8 @@ namespace ExtUI { void onStoreSettings(char*) {} void onLoadSettings(const char*) {} void onPostprocessSettings() {} - void onSettingsStored(bool) {} - void onSettingsLoaded(bool) {} + void onSettingsStored(const bool) {} + void onSettingsLoaded(const bool) {} #if HAS_MESH void onLevelingStart() {} @@ -158,6 +158,9 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) + void onSetPowerLoss(const bool onoff) { + // Called when power-loss is enabled/disabled + } void onPowerLoss() { // Called when power-loss state is detected } diff --git a/Marlin/src/lcd/extui/nextion/nextion_extui.cpp b/Marlin/src/lcd/extui/nextion/nextion_extui.cpp index 433bbfbe8b..bf40fe97ac 100644 --- a/Marlin/src/lcd/extui/nextion/nextion_extui.cpp +++ b/Marlin/src/lcd/extui/nextion/nextion_extui.cpp @@ -79,12 +79,12 @@ namespace ExtUI { // Called after loading or resetting stored settings } - void onSettingsStored(bool success) { + void onSettingsStored(const bool success) { // Called after the entire EEPROM has been written, // whether successful or not. } - void onSettingsLoaded(bool success) { + void onSettingsLoaded(const bool success) { // Called after the entire EEPROM has been read, // whether successful or not. } @@ -103,6 +103,9 @@ namespace ExtUI { #endif #if ENABLED(POWER_LOSS_RECOVERY) + void onSetPowerLoss(const bool onoff) { + // Called when power-loss is enabled/disabled + } void onPowerLoss() { // Called when power-loss state is detected } diff --git a/Marlin/src/lcd/extui/ui_api.h b/Marlin/src/lcd/extui/ui_api.h index 46f0891bb7..98441ccdd9 100644 --- a/Marlin/src/lcd/extui/ui_api.h +++ b/Marlin/src/lcd/extui/ui_api.h @@ -423,9 +423,10 @@ namespace ExtUI { void onStoreSettings(char *); void onLoadSettings(const char *); void onPostprocessSettings(); - void onSettingsStored(bool success); - void onSettingsLoaded(bool success); + void onSettingsStored(const bool success); + void onSettingsLoaded(const bool success); #if ENABLED(POWER_LOSS_RECOVERY) + void onSetPowerLoss(const bool onoff); void onPowerLoss(); void onPowerLossResume(); #endif From 724ba4b4e607364c6c5f68d716648b90cd850fa8 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 23 Mar 2023 00:22:05 +0000 Subject: [PATCH 162/659] [cron] Bump distribution date (2023-03-23) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 341cdbb482..21baa79660 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-22" +//#define STRING_DISTRIBUTION_DATE "2023-03-23" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 809ba498c1..50445874e9 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-22" + #define STRING_DISTRIBUTION_DATE "2023-03-23" #endif /** From 17b43d6b3d10a816ba534547d37346888f3897b4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 23 Mar 2023 17:19:20 -0500 Subject: [PATCH 163/659] =?UTF-8?q?=F0=9F=8E=A8=20calibration=5Fstage=20?= =?UTF-8?q?=3D>=20stage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dogm/u8g_dev_tft_upscale_from_128x64.cpp | 22 +++++++++---------- .../extui/mks_ui/draw_touch_calibration.cpp | 20 ++++++++--------- Marlin/src/lcd/tft/ui_common.cpp | 20 ++++++++--------- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp index f1bf9d032e..efc010ca89 100644 --- a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp +++ b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp @@ -501,26 +501,26 @@ U8G_PB_DEV(u8g_dev_tft_320x240_upscale_from_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, void MarlinUI::touch_calibration_screen() { uint16_t x, y; - calibrationState calibration_stage = touch_calibration.get_calibration_state(); + calibrationState stage = touch_calibration.get_calibration_state(); - if (calibration_stage == CALIBRATION_NONE) { + if (stage == CALIBRATION_NONE) { // start and clear screen defer_status_screen(true); - calibration_stage = touch_calibration.calibration_start(); + stage = touch_calibration.calibration_start(); tftio.set_window(0, 0, (TFT_WIDTH) - 1, (TFT_HEIGHT) - 1); tftio.WriteMultiple(TFT_MARLINBG_COLOR, uint32_t(TFT_WIDTH) * (TFT_HEIGHT)); } else { // clear last cross - x = touch_calibration.calibration_points[_MIN(calibration_stage - 1, CALIBRATION_BOTTOM_RIGHT)].x; - y = touch_calibration.calibration_points[_MIN(calibration_stage - 1, CALIBRATION_BOTTOM_RIGHT)].y; + x = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_RIGHT)].x; + y = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_RIGHT)].y; drawCross(x, y, TFT_MARLINBG_COLOR); } FSTR_P str = nullptr; - if (calibration_stage < CALIBRATION_SUCCESS) { + if (stage < CALIBRATION_SUCCESS) { // handle current state - switch (calibration_stage) { + switch (stage) { case CALIBRATION_TOP_LEFT: str = GET_TEXT_F(MSG_TOP_LEFT); break; case CALIBRATION_BOTTOM_LEFT: str = GET_TEXT_F(MSG_BOTTOM_LEFT); break; case CALIBRATION_TOP_RIGHT: str = GET_TEXT_F(MSG_TOP_RIGHT); break; @@ -528,13 +528,13 @@ U8G_PB_DEV(u8g_dev_tft_320x240_upscale_from_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, default: break; } - x = touch_calibration.calibration_points[calibration_stage].x; - y = touch_calibration.calibration_points[calibration_stage].y; + x = touch_calibration.calibration_points[stage].x; + y = touch_calibration.calibration_points[stage].y; drawCross(x, y, TFT_MARLINUI_COLOR); } else { // end calibration - str = calibration_stage == CALIBRATION_SUCCESS ? GET_TEXT_F(MSG_CALIBRATION_COMPLETED) : GET_TEXT_F(MSG_CALIBRATION_FAILED); + str = stage == CALIBRATION_SUCCESS ? GET_TEXT_F(MSG_CALIBRATION_COMPLETED) : GET_TEXT_F(MSG_CALIBRATION_FAILED); defer_status_screen(false); touch_calibration.calibration_end(); TERN_(HAS_TOUCH_BUTTONS, redrawTouchButtons = true); @@ -548,7 +548,7 @@ U8G_PB_DEV(u8g_dev_tft_320x240_upscale_from_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, } while (u8g.nextPage()); drawing_screen = false; safe_delay(250); - if (calibration_stage == CALIBRATION_SUCCESS) { + if (stage == CALIBRATION_SUCCESS) { safe_delay(500); ui.goto_previous_screen(); } diff --git a/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp b/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp index e0c663e282..a9a25db118 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp @@ -55,22 +55,22 @@ static void drawCross(uint16_t x, uint16_t y, uint16_t color) { void lv_update_touch_calibration_screen() { uint16_t x, y; - calibrationState calibration_stage = touch_calibration.get_calibration_state(); - if (calibration_stage == CALIBRATION_NONE) { + calibrationState stage = touch_calibration.get_calibration_state(); + if (stage == CALIBRATION_NONE) { // start and clear screen - calibration_stage = touch_calibration.calibration_start(); + stage = touch_calibration.calibration_start(); } else { // clear last cross - x = touch_calibration.calibration_points[_MIN(calibration_stage - 1, CALIBRATION_BOTTOM_RIGHT)].x; - y = touch_calibration.calibration_points[_MIN(calibration_stage - 1, CALIBRATION_BOTTOM_RIGHT)].y; + x = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_RIGHT)].x; + y = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_RIGHT)].y; drawCross(x, y, LV_COLOR_BACKGROUND.full); } const char *str = nullptr; - if (calibration_stage < CALIBRATION_SUCCESS) { + if (stage < CALIBRATION_SUCCESS) { // handle current state - switch (calibration_stage) { + switch (stage) { case CALIBRATION_TOP_LEFT: str = GET_TEXT(MSG_TOP_LEFT); break; case CALIBRATION_BOTTOM_LEFT: str = GET_TEXT(MSG_BOTTOM_LEFT); break; case CALIBRATION_TOP_RIGHT: str = GET_TEXT(MSG_TOP_RIGHT); break; @@ -78,13 +78,13 @@ void lv_update_touch_calibration_screen() { default: break; } - x = touch_calibration.calibration_points[calibration_stage].x; - y = touch_calibration.calibration_points[calibration_stage].y; + x = touch_calibration.calibration_points[stage].x; + y = touch_calibration.calibration_points[stage].y; drawCross(x, y, LV_COLOR_WHITE.full); } else { // end calibration - str = calibration_stage == CALIBRATION_SUCCESS ? GET_TEXT(MSG_CALIBRATION_COMPLETED) : GET_TEXT(MSG_CALIBRATION_FAILED); + str = stage == CALIBRATION_SUCCESS ? GET_TEXT(MSG_CALIBRATION_COMPLETED) : GET_TEXT(MSG_CALIBRATION_FAILED); touch_calibration.calibration_end(); lv_big_button_create(scr, "F:/bmp_return.bin", common_menu.text_back, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight, event_handler, ID_TC_RETURN); } diff --git a/Marlin/src/lcd/tft/ui_common.cpp b/Marlin/src/lcd/tft/ui_common.cpp index 705438e95b..6fbde79154 100644 --- a/Marlin/src/lcd/tft/ui_common.cpp +++ b/Marlin/src/lcd/tft/ui_common.cpp @@ -228,24 +228,24 @@ void MarlinUI::clear_lcd() { void MarlinUI::touch_calibration_screen() { uint16_t x, y; - calibrationState calibration_stage = touch_calibration.get_calibration_state(); + calibrationState stage = touch_calibration.get_calibration_state(); - if (calibration_stage == CALIBRATION_NONE) { + if (stage == CALIBRATION_NONE) { defer_status_screen(true); clear_lcd(); - calibration_stage = touch_calibration.calibration_start(); + stage = touch_calibration.calibration_start(); } else { - x = touch_calibration.calibration_points[_MIN(calibration_stage - 1, CALIBRATION_BOTTOM_RIGHT)].x; - y = touch_calibration.calibration_points[_MIN(calibration_stage - 1, CALIBRATION_BOTTOM_RIGHT)].y; + x = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_RIGHT)].x; + y = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_RIGHT)].y; tft.canvas(x - 15, y - 15, 31, 31); tft.set_background(COLOR_BACKGROUND); } touch.clear(); - if (calibration_stage < CALIBRATION_SUCCESS) { - switch (calibration_stage) { + if (stage < CALIBRATION_SUCCESS) { + switch (stage) { case CALIBRATION_TOP_LEFT: tft_string.set(GET_TEXT(MSG_TOP_LEFT)); break; case CALIBRATION_BOTTOM_LEFT: tft_string.set(GET_TEXT(MSG_BOTTOM_LEFT)); break; case CALIBRATION_TOP_RIGHT: tft_string.set(GET_TEXT(MSG_TOP_RIGHT)); break; @@ -253,8 +253,8 @@ void MarlinUI::clear_lcd() { default: break; } - x = touch_calibration.calibration_points[calibration_stage].x; - y = touch_calibration.calibration_points[calibration_stage].y; + x = touch_calibration.calibration_points[stage].x; + y = touch_calibration.calibration_points[stage].y; tft.canvas(x - 15, y - 15, 31, 31); tft.set_background(COLOR_BACKGROUND); @@ -264,7 +264,7 @@ void MarlinUI::clear_lcd() { touch.add_control(CALIBRATE, 0, 0, TFT_WIDTH, TFT_HEIGHT, uint32_t(x) << 16 | uint32_t(y)); } else { - tft_string.set(calibration_stage == CALIBRATION_SUCCESS ? GET_TEXT(MSG_CALIBRATION_COMPLETED) : GET_TEXT(MSG_CALIBRATION_FAILED)); + tft_string.set(stage == CALIBRATION_SUCCESS ? GET_TEXT(MSG_CALIBRATION_COMPLETED) : GET_TEXT(MSG_CALIBRATION_FAILED)); defer_status_screen(false); touch_calibration.calibration_end(); touch.add_control(BACK, 0, 0, TFT_WIDTH, TFT_HEIGHT); From c641208ceb39455985f3665dc9ead2d0ae263012 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 24 Mar 2023 00:21:09 +0000 Subject: [PATCH 164/659] [cron] Bump distribution date (2023-03-24) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 21baa79660..62330c57c7 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-23" +//#define STRING_DISTRIBUTION_DATE "2023-03-24" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 50445874e9..d8245208b4 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-23" + #define STRING_DISTRIBUTION_DATE "2023-03-24" #endif /** From 28666f2fb28e8b68f641e507359a72dbf4bc117a Mon Sep 17 00:00:00 2001 From: Martin Turski Date: Fri, 24 Mar 2023 05:08:28 +0100 Subject: [PATCH 165/659] =?UTF-8?q?=F0=9F=A9=B9=20Reset=20touch=20screen?= =?UTF-8?q?=20calibration=20on=20failure=20(#25334)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/lcd/tft_io/touch_calibration.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/lcd/tft_io/touch_calibration.cpp b/Marlin/src/lcd/tft_io/touch_calibration.cpp index 44ebc73d71..b1ef17df17 100644 --- a/Marlin/src/lcd/tft_io/touch_calibration.cpp +++ b/Marlin/src/lcd/tft_io/touch_calibration.cpp @@ -74,7 +74,7 @@ void TouchCalibration::validate_calibration() { else { calibration_state = CALIBRATION_FAIL; calibration_reset(); - if (need_calibration() && failed_count++ < TOUCH_CALIBRATION_MAX_RETRIES) calibration_state = CALIBRATION_TOP_LEFT; + if (need_calibration() && failed_count++ < TOUCH_CALIBRATION_MAX_RETRIES) calibration_state = CALIBRATION_NONE; } #undef CAL_PTS From 769ad2764512b38e987ebbed1fe026d68a424bb1 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Mar 2023 00:33:39 -0500 Subject: [PATCH 166/659] =?UTF-8?q?=F0=9F=8E=A8=20TMC=20SPI=20Pins?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Martin Turski --- Marlin/Configuration_adv.h | 50 +++++++++--------- Marlin/src/HAL/DUE/inc/SanityCheck.h | 2 +- Marlin/src/HAL/LPC1768/inc/SanityCheck.h | 4 +- Marlin/src/inc/Conditionals_post.h | 8 +++ Marlin/src/inc/SanityCheck.h | 2 + Marlin/src/module/stepper/trinamic.cpp | 2 +- Marlin/src/pins/linux/pins_RAMPS_LINUX.h | 20 ++++--- Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h | 20 ++++--- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h | 9 ++-- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h | 22 ++++---- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h | 20 ++++--- Marlin/src/pins/lpc1768/pins_MKS_SBASE.h | 18 +++---- Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h | 20 ++++--- Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h | 21 ++++---- .../src/pins/lpc1769/pins_COHESION3D_MINI.h | 18 +++---- .../src/pins/lpc1769/pins_COHESION3D_REMIX.h | 18 +++---- Marlin/src/pins/lpc1769/pins_FLY_CDY.h | 20 ++++--- Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h | 22 ++++---- Marlin/src/pins/mega/pins_GT2560_V3_A20.h | 2 +- Marlin/src/pins/mega/pins_GT2560_V4_A20.h | 2 +- Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h | 6 +-- .../pins/mega/pins_PROTONEER_CNC_SHIELD_V3.h | 6 +-- Marlin/src/pins/mega/pins_SILVER_GATE.h | 2 +- Marlin/src/pins/pins.h | 2 +- Marlin/src/pins/pinsDebug_list.h | 21 +++++--- Marlin/src/pins/ramps/pins_3DRAG.h | 2 +- Marlin/src/pins/ramps/pins_MKS_GEN_L.h | 10 ++-- Marlin/src/pins/ramps/pins_RAMPS.h | 20 ++++--- Marlin/src/pins/ramps/pins_RAMPS_S_12.h | 18 +++---- Marlin/src/pins/ramps/pins_TRIGORILLA_13.h | 14 ++--- Marlin/src/pins/ramps/pins_TT_OSCAR.h | 18 +++---- Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h | 18 +++---- Marlin/src/pins/sam/pins_ARCHIM2.h | 20 ++++--- .../src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h | 1 - Marlin/src/pins/samd/pins_MINITRONICS20.h | 10 ++-- Marlin/src/pins/samd/pins_RAMPS_144.h | 20 ++++--- .../src/pins/sanguino/pins_SANGUINOLOLU_11.h | 2 +- Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h | 20 ++++--- .../src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h | 37 +++++++------ .../src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h | 4 +- Marlin/src/pins/stm32f1/pins_FLY_MINI.h | 50 +++++++++--------- .../pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h | 4 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3D.h | 20 ++++--- .../pins/stm32f1/pins_MKS_ROBIN_E3D_V1_1.h | 21 ++++---- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h | 20 ++++--- .../pins/stm32f1/pins_MKS_ROBIN_E3_common.h | 4 +- .../src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h | 20 ++++--- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h | 20 ++++--- Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h | 20 ++++--- .../src/pins/stm32f4/pins_BTT_BTT002_V1_0.h | 20 ++++--- Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h | 26 +++++----- .../pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h | 20 ++++--- .../pins/stm32f4/pins_BTT_SKR_PRO_common.h | 22 ++++---- .../pins/stm32f4/pins_BTT_SKR_V2_0_common.h | 20 ++++--- Marlin/src/pins/stm32f4/pins_FLYF407ZG.h | 20 ++++--- .../pins/stm32f4/pins_FYSETC_CHEETAH_V20.h | 10 ++-- Marlin/src/pins/stm32f4/pins_FYSETC_S6_V2_0.h | 20 ++++--- Marlin/src/pins/stm32f4/pins_FYSETC_SPIDER.h | 20 ++++--- Marlin/src/pins/stm32f4/pins_LERDGE_K.h | 8 +-- .../src/pins/stm32f4/pins_MKS_MONSTER8_V1.h | 2 +- .../pins/stm32f4/pins_MKS_MONSTER8_common.h | 23 ++++---- .../src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h | 23 ++++---- .../src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h | 52 +++++++++---------- Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h | 10 ++-- .../src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h | 6 +-- .../src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h | 6 +-- Marlin/src/pins/stm32f4/pins_RUMBA32_common.h | 18 +++---- Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h | 6 +-- .../pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h | 20 ++++--- .../pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h | 22 ++++---- .../pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h | 24 ++++----- .../pins/stm32g0/pins_BTT_MANTA_M8P_common.h | 20 ++++--- .../pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h | 20 ++++--- .../pins/stm32h7/pins_BTT_SKR_SE_BX_common.h | 20 ++++--- .../pins/stm32h7/pins_BTT_SKR_V3_0_common.h | 20 ++++--- 76 files changed, 572 insertions(+), 638 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 3e23bb8944..9b4c58be6f 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2979,28 +2979,28 @@ * Override default SPI pins for TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160 drivers here. * The default pins can be found in your board's pins file. */ - //#define X_CS_PIN -1 - //#define Y_CS_PIN -1 - //#define Z_CS_PIN -1 - //#define X2_CS_PIN -1 - //#define Y2_CS_PIN -1 - //#define Z2_CS_PIN -1 - //#define Z3_CS_PIN -1 - //#define Z4_CS_PIN -1 - //#define I_CS_PIN -1 - //#define J_CS_PIN -1 - //#define K_CS_PIN -1 - //#define U_CS_PIN -1 - //#define V_CS_PIN -1 - //#define W_CS_PIN -1 - //#define E0_CS_PIN -1 - //#define E1_CS_PIN -1 - //#define E2_CS_PIN -1 - //#define E3_CS_PIN -1 - //#define E4_CS_PIN -1 - //#define E5_CS_PIN -1 - //#define E6_CS_PIN -1 - //#define E7_CS_PIN -1 + //#define X_CS_PIN -1 + //#define Y_CS_PIN -1 + //#define Z_CS_PIN -1 + //#define X2_CS_PIN -1 + //#define Y2_CS_PIN -1 + //#define Z2_CS_PIN -1 + //#define Z3_CS_PIN -1 + //#define Z4_CS_PIN -1 + //#define I_CS_PIN -1 + //#define J_CS_PIN -1 + //#define K_CS_PIN -1 + //#define U_CS_PIN -1 + //#define V_CS_PIN -1 + //#define W_CS_PIN -1 + //#define E0_CS_PIN -1 + //#define E1_CS_PIN -1 + //#define E2_CS_PIN -1 + //#define E3_CS_PIN -1 + //#define E4_CS_PIN -1 + //#define E5_CS_PIN -1 + //#define E6_CS_PIN -1 + //#define E7_CS_PIN -1 /** * Software option for SPI driven drivers (TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160). @@ -3008,9 +3008,9 @@ * but you can override or define them here. */ //#define TMC_USE_SW_SPI - //#define TMC_SW_MOSI -1 - //#define TMC_SW_MISO -1 - //#define TMC_SW_SCK -1 + //#define TMC_SPI_MOSI -1 + //#define TMC_SPI_MISO -1 + //#define TMC_SPI_SCK -1 // @section tmc/serial diff --git a/Marlin/src/HAL/DUE/inc/SanityCheck.h b/Marlin/src/HAL/DUE/inc/SanityCheck.h index 1f5acc360c..996404a7d0 100644 --- a/Marlin/src/HAL/DUE/inc/SanityCheck.h +++ b/Marlin/src/HAL/DUE/inc/SanityCheck.h @@ -64,7 +64,7 @@ * Usually the hardware SPI pins are only available to the LCD. This makes the DUE hard SPI used at the same time * as the TMC2130 soft SPI the most common setup. */ -#define _IS_HW_SPI(P) (defined(TMC_SW_##P) && (TMC_SW_##P == SD_MOSI_PIN || TMC_SW_##P == SD_MISO_PIN || TMC_SW_##P == SD_SCK_PIN)) +#define _IS_HW_SPI(P) (defined(TMC_SPI_##P) && (TMC_SPI_##P == SD_MOSI_PIN || TMC_SPI_##P == SD_MISO_PIN || TMC_SPI_##P == SD_SCK_PIN)) #if ENABLED(SDSUPPORT) && HAS_DRIVER(TMC2130) #if ENABLED(TMC_USE_SW_SPI) diff --git a/Marlin/src/HAL/LPC1768/inc/SanityCheck.h b/Marlin/src/HAL/LPC1768/inc/SanityCheck.h index 8265d58a6e..b9a3360668 100644 --- a/Marlin/src/HAL/LPC1768/inc/SanityCheck.h +++ b/Marlin/src/HAL/LPC1768/inc/SanityCheck.h @@ -95,7 +95,7 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o #if USING_HW_SERIAL0 #define IS_TX0(P) (P == P0_02) #define IS_RX0(P) (P == P0_03) - #if IS_TX0(TMC_SW_MISO) || IS_RX0(TMC_SW_MOSI) + #if IS_TX0(TMC_SPI_MISO) || IS_RX0(TMC_SPI_MOSI) #error "Serial port pins (0) conflict with Trinamic SPI pins!" #elif HAS_PRUSA_MMU1 && (IS_TX0(E_MUX1_PIN) || IS_RX0(E_MUX0_PIN)) #error "Serial port pins (0) conflict with Multi-Material-Unit multiplexer pins!" @@ -111,7 +111,7 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o #define IS_RX1(P) (P == P0_16) #define _IS_TX1_1 IS_TX1 #define _IS_RX1_1 IS_RX1 - #if IS_TX1(TMC_SW_SCK) + #if IS_TX1(TMC_SPI_SCK) #error "Serial port pins (1) conflict with other pins!" #elif HAS_ROTARY_ENCODER #if IS_TX1(BTN_EN2) || IS_RX1(BTN_EN1) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 58f04a39b6..1377c8e73f 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -2212,6 +2212,14 @@ #undef TMC_UART_IS #undef ANY_SERIAL_IS +#if defined(__AVR_ARCH__) && defined(TMC_SPI_MISO) && defined(TMC_SPI_MOSI) && defined(TMC_SPI_SCK) + // Check that the pins are the solitary supported SPI hardware pins of the (AVR) platform. + // Otherwise we are forced to enable software SPI. + #if TMC_SPI_MISO != MISO || TMC_SPI_MOSI != MOSI || TMC_SPI_SCK != SCK + #define TMC_USE_SW_SPI + #endif +#endif + // Clean up unused ESP_WIFI pins #ifdef ESP_WIFI_MODULE_COM #if !SERIAL_IN_USE(ESP_WIFI_MODULE_COM) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 5218cf792b..feb01e533a 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -658,6 +658,8 @@ #error "EXTRA_LIN_ADVANCE_K is now ADVANCE_K_EXTRA." #elif defined(POLAR_SEGMENTS_PER_SECOND) || defined(DELTA_SEGMENTS_PER_SECOND) || defined(SCARA_SEGMENTS_PER_SECOND) || defined(TPARA_SEGMENTS_PER_SECOND) #error "(POLAR|DELTA|SCARA|TPARA)_SEGMENTS_PER_SECOND is now DEFAULT_SEGMENTS_PER_SECOND." +#elif defined(TMC_SW_MOSI) || defined(TMC_SW_MISO) || defined(TMC_SW_SCK) + #error "TMC_SW_(MOSI|MISO|SCK) is now TMC_SPI_(MOSI|MISO|SCK)." #elif ANY(DGUS_LCD_UI_ORIGIN, DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY, DGUS_LCD_UI_MKS, DGUS_LCD_UI_RELOADED) && !defined(DGUS_LCD_UI) #error "DGUS_LCD_UI_[TYPE] is now set using DGUS_LCD_UI TYPE." #elif defined(DELTA_PRINTABLE_RADIUS) diff --git a/Marlin/src/module/stepper/trinamic.cpp b/Marlin/src/module/stepper/trinamic.cpp index 7d87e5953f..02ae9cb1e4 100644 --- a/Marlin/src/module/stepper/trinamic.cpp +++ b/Marlin/src/module/stepper/trinamic.cpp @@ -46,7 +46,7 @@ enum StealthIndex : uint8_t { // AI = Axis Enum Index // SWHW = SW/SH UART selection #if ENABLED(TMC_USE_SW_SPI) - #define __TMC_SPI_DEFINE(IC, ST, L, AI) TMCMarlin stepper##ST(ST##_CS_PIN, float(ST##_RSENSE), TMC_SW_MOSI, TMC_SW_MISO, TMC_SW_SCK, ST##_CHAIN_POS) + #define __TMC_SPI_DEFINE(IC, ST, L, AI) TMCMarlin stepper##ST(ST##_CS_PIN, float(ST##_RSENSE), TMC_SPI_MOSI, TMC_SPI_MISO, TMC_SPI_SCK, ST##_CHAIN_POS) #else #define __TMC_SPI_DEFINE(IC, ST, L, AI) TMCMarlin stepper##ST(ST##_CS_PIN, float(ST##_RSENSE), ST##_CHAIN_POS) #endif diff --git a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h index 3616b7a27c..3e8814c3ee 100644 --- a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h +++ b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h @@ -247,18 +247,16 @@ #endif /** - * Default pins for TMC software SPI + * Default pins for TMC SPI */ -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI 66 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO 44 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK 64 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI 66 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO 44 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK 64 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h b/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h index 10a610ff95..0c96cb42b5 100644 --- a/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h +++ b/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h @@ -77,18 +77,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// Default pins for TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI P0_18 // ETH - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO P0_17 // ETH - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK P0_15 // ETH - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI P0_18 // ETH +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO P0_17 // ETH +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK P0_15 // ETH #endif // diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h index d11224315b..1a8c44771a 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h @@ -56,7 +56,6 @@ #define E0_DIR_PIN P2_13 #define E0_ENABLE_PIN P2_12 - /** ------ ------ * 1.30 | 1 2 | 2.11 0.17 | 1 2 | 0.15 * 0.18 | 3 4 | 0.16 3.26 | 3 4 | 1.23 @@ -165,12 +164,12 @@ // When using any TMC SPI-based drivers, software SPI is used // because pins may be shared with the display or SD card. #define TMC_USE_SW_SPI - #define TMC_SW_MOSI EXP2_06_PIN - #define TMC_SW_MISO EXP2_01_PIN + #define TMC_SPI_MOSI EXP2_06_PIN + #define TMC_SPI_MISO EXP2_01_PIN // To minimize pin usage use the same clock pin as the display/SD card reader. (May generate LCD noise.) - #define TMC_SW_SCK EXP2_02_PIN + #define TMC_SPI_SCK EXP2_02_PIN // If pin 2_06 is unused, it can be used for the clock to avoid the LCD noise. - //#define TMC_SW_SCK P2_06 + //#define TMC_SPI_SCK P2_06 #if ENABLED(SOFTWARE_DRIVER_ENABLE) diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h index 03994187c8..6372623a30 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h @@ -137,18 +137,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// Default pins for TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI P4_28 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO P0_05 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK P0_04 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI P4_28 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO P0_05 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK P0_04 #endif #if HAS_TMC_UART @@ -289,7 +287,7 @@ #define DOGLCD_A0 EXP1_06_PIN #define DOGLCD_SCK EXP1_04_PIN #define DOGLCD_MOSI EXP1_01_PIN - #define LCD_BACKLIGHT_PIN -1 + #define LCD_BACKLIGHT_PIN -1 #elif ENABLED(CR10_STOCKDISPLAY) diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h index a574a9fe8d..e632d8afa6 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h @@ -194,18 +194,16 @@ #define TEMP_BED_PIN P0_25_A2 // A2 (T2) - (69) - TEMP_BED_PIN // -// Software SPI pins for TMC2130 stepper drivers +// Default pins for TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI P1_17 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO P0_05 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK P0_04 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI P1_17 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO P0_05 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK P0_04 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h index cf12a98aef..c5c5bd3e23 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h @@ -300,16 +300,14 @@ // Hardware SPI is on EXP2. See if you can make it work: // https://github.com/makerbase-mks/MKS-SBASE/issues/25 #define TMC_USE_SW_SPI - #if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI P0_03 // AUX1 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO P0_02 // AUX1 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK P0_26 // TH4 - #endif + #ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI P0_03 // AUX1 + #endif + #ifndef TMC_SPI_MISO + #define TMC_SPI_MISO P0_02 // AUX1 + #endif + #ifndef TMC_SPI_SCK + #define TMC_SPI_SCK P0_26 // TH4 #endif #endif diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h index 4e9f98c852..1f038b4aa0 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h @@ -132,18 +132,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// Default pins for TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI P4_28 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO P0_05 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK P0_04 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI P4_28 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO P0_05 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK P0_04 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h index 9a210e1607..b6ce9c5c05 100644 --- a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h +++ b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h @@ -97,18 +97,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// Default pins for TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI P1_00 // ETH - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO P1_08 // ETH - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK P1_09 // ETH - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI P1_00 // ETH +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO P1_08 // ETH +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK P1_09 // ETH #endif #if HAS_TMC_UART @@ -119,7 +117,6 @@ * If undefined software serial is used according to the pins below */ - // P2_08 E1-Step // P2_13 E1-Dir diff --git a/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h b/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h index 237dfaec36..e0a3b03109 100644 --- a/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h +++ b/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h @@ -70,16 +70,14 @@ // // Default pins for TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI P1_16 // Ethernet Expansion - Pin 5 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO P1_17 // Ethernet Expansion - Pin 6 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK P1_08 // Ethernet Expansion - Pin 7 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI P1_16 // Ethernet Expansion - Pin 5 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO P1_17 // Ethernet Expansion - Pin 6 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK P1_08 // Ethernet Expansion - Pin 7 #endif // diff --git a/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h b/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h index ea2e0b7082..122c7462d2 100644 --- a/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h +++ b/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h @@ -87,16 +87,14 @@ // // Default pins for TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI P1_16 // Ethernet Expansion - Pin 5 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO P1_17 // Ethernet Expansion - Pin 6 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK P1_08 // Ethernet Expansion - Pin 7 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI P1_16 // Ethernet Expansion - Pin 5 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO P1_17 // Ethernet Expansion - Pin 6 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK P1_08 // Ethernet Expansion - Pin 7 #endif // diff --git a/Marlin/src/pins/lpc1769/pins_FLY_CDY.h b/Marlin/src/pins/lpc1769/pins_FLY_CDY.h index ec0b14af90..1c0c21466e 100644 --- a/Marlin/src/pins/lpc1769/pins_FLY_CDY.h +++ b/Marlin/src/pins/lpc1769/pins_FLY_CDY.h @@ -92,18 +92,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// Default pins for TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI P0_20 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO P0_19 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK P0_21 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI P0_20 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO P0_19 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK P0_21 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h index 2f25d8b5fd..5c1b1f5638 100644 --- a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h +++ b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h @@ -146,18 +146,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// Default pins for TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI P1_16 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO P0_05 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK P0_04 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI P1_16 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO P0_05 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK P0_04 #endif #if HAS_TMC_UART @@ -342,7 +340,7 @@ #define TFT_CS_PIN EXP1_07_PIN #define TFT_DC_PIN EXP1_08_PIN - #define TFT_A0_PIN TFT_DC_PIN + #define TFT_A0_PIN TFT_DC_PIN #define TFT_MISO_PIN EXP2_01_PIN #define TFT_BACKLIGHT_PIN EXP1_03_PIN #define TFT_RESET_PIN EXP1_04_PIN diff --git a/Marlin/src/pins/mega/pins_GT2560_V3_A20.h b/Marlin/src/pins/mega/pins_GT2560_V3_A20.h index 986dd1cb04..c96431141c 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V3_A20.h +++ b/Marlin/src/pins/mega/pins_GT2560_V3_A20.h @@ -30,7 +30,7 @@ #define LCD_PINS_D4 21 #define LCD_PINS_D7 6 -#define SPEAKER // The speaker can produce tones +#define SPEAKER // The speaker can produce tones #if IS_NEWPANEL #define BTN_EN1 16 diff --git a/Marlin/src/pins/mega/pins_GT2560_V4_A20.h b/Marlin/src/pins/mega/pins_GT2560_V4_A20.h index 83a612e67c..c87c11e175 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V4_A20.h +++ b/Marlin/src/pins/mega/pins_GT2560_V4_A20.h @@ -32,7 +32,7 @@ #define LCD_PINS_D4 21 #define LCD_PINS_D7 6 -#define SPEAKER // The speaker can produce tones +#define SPEAKER // The speaker can produce tones #if IS_NEWPANEL #define BTN_EN1 16 diff --git a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h index cff3a11af1..0ef1c1d8ae 100644 --- a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h +++ b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h @@ -158,9 +158,9 @@ // Heaters / Fans (24V) // -#define HEATER_0_PIN MOSFET_1_PIN // EX1 -#define HEATER_1_PIN MOSFET_3_PIN // EX2 -#define HEATER_BED_PIN MOSFET_5_PIN // HBP +#define HEATER_0_PIN MOSFET_1_PIN // EX1 +#define HEATER_1_PIN MOSFET_3_PIN // EX2 +#define HEATER_BED_PIN MOSFET_5_PIN // HBP // EX1 FAN (Automatic Fans are disabled by default in Configuration_adv.h - comment that out for auto fans) #ifndef E0_AUTO_FAN_PIN diff --git a/Marlin/src/pins/mega/pins_PROTONEER_CNC_SHIELD_V3.h b/Marlin/src/pins/mega/pins_PROTONEER_CNC_SHIELD_V3.h index f2e4d3da02..88d549c8cb 100644 --- a/Marlin/src/pins/mega/pins_PROTONEER_CNC_SHIELD_V3.h +++ b/Marlin/src/pins/mega/pins_PROTONEER_CNC_SHIELD_V3.h @@ -51,16 +51,16 @@ #define Y_STEP_PIN 3 #define Y_DIR_PIN 6 -#define Y_ENABLE_PIN X_ENABLE_PIN +#define Y_ENABLE_PIN X_ENABLE_PIN #define Z_STEP_PIN 4 #define Z_DIR_PIN 7 -#define Z_ENABLE_PIN X_ENABLE_PIN +#define Z_ENABLE_PIN X_ENABLE_PIN // Designated with letter "A" on BOARD #define E0_STEP_PIN 12 #define E0_DIR_PIN 13 -#define E0_ENABLE_PIN X_ENABLE_PIN +#define E0_ENABLE_PIN X_ENABLE_PIN // // Temperature sensors - These could be any analog output not hidden by board diff --git a/Marlin/src/pins/mega/pins_SILVER_GATE.h b/Marlin/src/pins/mega/pins_SILVER_GATE.h index c2ca5b3103..4568ed04e2 100644 --- a/Marlin/src/pins/mega/pins_SILVER_GATE.h +++ b/Marlin/src/pins/mega/pins_SILVER_GATE.h @@ -73,7 +73,7 @@ #define TEMP_BED_PIN 6 #if HAS_WIRED_LCD - #if IS_U8GLIB_ST7920 // SPI GLCD 12864 ST7920 + #if IS_U8GLIB_ST7920 // SPI GLCD 12864 ST7920 #define LCD_PINS_RS 30 #define LCD_PINS_ENABLE 20 #define LCD_PINS_D4 25 diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 6269eecb0b..62ddba06f5 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -530,7 +530,7 @@ #elif MB(MKS_ROBIN_E3D) #include "stm32f1/pins_MKS_ROBIN_E3D.h" // STM32F1 env:mks_robin_e3 #elif MB(MKS_ROBIN_E3D_V1_1) - #include "stm32f1/pins_MKS_ROBIN_E3D_V1_1.h" // STM32F1 env:mks_robin_e3 + #include "stm32f1/pins_MKS_ROBIN_E3D_V1_1.h" // STM32F1 env:mks_robin_e3 env:mks_robin_e3_maple #elif MB(MKS_ROBIN_E3P) #include "stm32f1/pins_MKS_ROBIN_E3P.h" // STM32F1 env:mks_robin_e3p env:mks_robin_e3p_maple #elif MB(BTT_EBB42_V1_1) diff --git a/Marlin/src/pins/pinsDebug_list.h b/Marlin/src/pins/pinsDebug_list.h index 39e07c739a..27f20b92f7 100644 --- a/Marlin/src/pins/pinsDebug_list.h +++ b/Marlin/src/pins/pinsDebug_list.h @@ -489,18 +489,27 @@ REPORT_NAME_DIGITAL(__LINE__, EXP3_10_PIN) #endif -#if _EXISTS(TMC_SW_MISO) - REPORT_NAME_DIGITAL(__LINE__, TMC_SW_MISO) +#if _EXISTS(TMC_SPI_MISO) + REPORT_NAME_DIGITAL(__LINE__, TMC_SPI_MISO) #endif -#if _EXISTS(TMC_SW_MOSI) - REPORT_NAME_DIGITAL(__LINE__, TMC_SW_MOSI) +#if _EXISTS(TMC_SPI_MOSI) + REPORT_NAME_DIGITAL(__LINE__, TMC_SPI_MOSI) #endif -#if _EXISTS(TMC_SW_SCK) - REPORT_NAME_DIGITAL(__LINE__, TMC_SW_SCK) +#if _EXISTS(TMC_SPI_SCK) + REPORT_NAME_DIGITAL(__LINE__, TMC_SPI_SCK) #endif #if _EXISTS(TFTGLCD_CS) REPORT_NAME_DIGITAL(__LINE__, TFTGLCD_CS) #endif +#if _EXISTS(TFTGLCD_SCK) + REPORT_NAME_DIGITAL(__LINE__, TFTGLCD_SCK) +#endif +#if _EXISTS(TFTGLCD_MISO) + REPORT_NAME_DIGITAL(__LINE__, TFTGLCD_MISO) +#endif +#if _EXISTS(TFTGLCD_MOSI) + REPORT_NAME_DIGITAL(__LINE__, TFTGLCD_MOSI) +#endif // // E Multiplexing diff --git a/Marlin/src/pins/ramps/pins_3DRAG.h b/Marlin/src/pins/ramps/pins_3DRAG.h index 1e9d53a6cb..0f90dd5a34 100644 --- a/Marlin/src/pins/ramps/pins_3DRAG.h +++ b/Marlin/src/pins/ramps/pins_3DRAG.h @@ -113,7 +113,7 @@ #define SPINDLE_LASER_PWM_PIN 46 // Hardware PWM #define SPINDLE_LASER_ENA_PIN 62 // Pullup! #define SPINDLE_DIR_PIN 48 - #elif !BOTH(HAS_WIRED_LCD, IS_NEWPANEL) // Use expansion header if no LCD in use + #elif !BOTH(HAS_WIRED_LCD, IS_NEWPANEL) // Use expansion header if no LCD in use #define SPINDLE_LASER_ENA_PIN 16 // Pullup or pulldown! #define SPINDLE_DIR_PIN 17 #if !NUM_SERVOS // Use servo connector if possible diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_L.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L.h index ca1f133816..dd7f8e5f86 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_L.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_L.h @@ -35,12 +35,12 @@ // Heaters / Fans // // Power outputs EFBF or EFBE -#define MOSFET_D_PIN 7 +#define MOSFET_D_PIN 7 // Hotend, Hotend, Bed + Fan on D9 #if FET_ORDER_EEB - #define MOSFET_B_PIN 7 - #define FAN_PIN 9 + #define MOSFET_B_PIN 7 + #define FAN_PIN 9 #endif // @@ -49,11 +49,11 @@ // #ifndef X_CS_PIN - #define X_CS_PIN 59 + #define X_CS_PIN 59 #endif #ifndef Y_CS_PIN - #define Y_CS_PIN 63 + #define Y_CS_PIN 63 #endif #include "pins_RAMPS.h" diff --git a/Marlin/src/pins/ramps/pins_RAMPS.h b/Marlin/src/pins/ramps/pins_RAMPS.h index 4e4ca60583..43780d8d27 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS.h +++ b/Marlin/src/pins/ramps/pins_RAMPS.h @@ -319,16 +319,14 @@ // // TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI 66 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO 44 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK 64 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI 66 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO 44 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK 64 #endif #if HAS_TMC_UART @@ -877,7 +875,7 @@ #define BEEPER_PIN EXP2_05_PIN - #if ENABLED(PANEL_ONE) // Buttons connect directly to AUX-2 + #if ENABLED(PANEL_ONE) // Buttons connect directly to AUX-2 #define BTN_EN1 AUX2_03_PIN #define BTN_EN2 AUX2_04_PIN #define BTN_ENC AUX3_02_PIN diff --git a/Marlin/src/pins/ramps/pins_RAMPS_S_12.h b/Marlin/src/pins/ramps/pins_RAMPS_S_12.h index f41573b527..8d6a1d337e 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_S_12.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_S_12.h @@ -218,16 +218,14 @@ // // TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI 51 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO 50 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK 53 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI 51 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO 50 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK 53 #endif // diff --git a/Marlin/src/pins/ramps/pins_TRIGORILLA_13.h b/Marlin/src/pins/ramps/pins_TRIGORILLA_13.h index 71dfb8c704..6e51a8e974 100644 --- a/Marlin/src/pins/ramps/pins_TRIGORILLA_13.h +++ b/Marlin/src/pins/ramps/pins_TRIGORILLA_13.h @@ -27,17 +27,17 @@ #define BOARD_INFO_NAME "Anycubic RAMPS 1.3" -#define MOSFET_B_PIN 44 +#define MOSFET_B_PIN 44 -#define E1_STEP_PIN -1 -#define E1_DIR_PIN -1 -#define E1_ENABLE_PIN -1 -#define E1_CS_PIN -1 +#define E1_STEP_PIN -1 +#define E1_DIR_PIN -1 +#define E1_ENABLE_PIN -1 +#define E1_CS_PIN -1 -#define FAN2_PIN 9 +#define FAN2_PIN 9 #ifndef E0_AUTO_FAN_PIN - #define E0_AUTO_FAN_PIN 9 + #define E0_AUTO_FAN_PIN 9 #endif #include "pins_RAMPS_13.h" // ... RAMPS diff --git a/Marlin/src/pins/ramps/pins_TT_OSCAR.h b/Marlin/src/pins/ramps/pins_TT_OSCAR.h index f81cc6039a..ecc708b395 100644 --- a/Marlin/src/pins/ramps/pins_TT_OSCAR.h +++ b/Marlin/src/pins/ramps/pins_TT_OSCAR.h @@ -150,16 +150,14 @@ // // Default pins for TMC software SPI // -//#if ENABLED(TMC_USE_SW_SPI) -// #ifndef TMC_SW_MOSI -// #define TMC_SW_MOSI 66 -// #endif -// #ifndef TMC_SW_MISO -// #define TMC_SW_MISO 44 -// #endif -// #ifndef TMC_SW_SCK -// #define TMC_SW_SCK 64 -// #endif +//#ifndef TMC_SPI_MOSI +// #define TMC_SPI_MOSI 66 +//#endif +//#ifndef TMC_SPI_MISO +// #define TMC_SPI_MISO 44 +//#endif +//#ifndef TMC_SPI_SCK +// #define TMC_SPI_SCK 64 //#endif // diff --git a/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h b/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h index b68e3edb45..ad7b859a0c 100644 --- a/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h +++ b/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h @@ -182,16 +182,14 @@ // // TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI 66 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO 44 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK 64 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI 66 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO 44 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK 64 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/sam/pins_ARCHIM2.h b/Marlin/src/pins/sam/pins_ARCHIM2.h index 310dd8e2ac..503b29f15b 100644 --- a/Marlin/src/pins/sam/pins_ARCHIM2.h +++ b/Marlin/src/pins/sam/pins_ARCHIM2.h @@ -145,19 +145,17 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers. +// SPI pins for TMC2130 stepper drivers. // Required for the Archim2 board. // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI 28 // PD3 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO 26 // PD1 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK 27 // PD2 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI 28 // PD3 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO 26 // PD1 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK 27 // PD2 #endif // diff --git a/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h b/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h index a3f98e388a..2a84d964ea 100644 --- a/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h +++ b/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h @@ -284,7 +284,6 @@ //#define DOGLCD_SCK 23 //#define DOGLCD_A0 LCD_PINS_DC - #else // Definitions for any standard Display #define LCD_PINS_RS EXP1_04_PIN diff --git a/Marlin/src/pins/samd/pins_MINITRONICS20.h b/Marlin/src/pins/samd/pins_MINITRONICS20.h index 02d806b3ec..da1919cd2b 100644 --- a/Marlin/src/pins/samd/pins_MINITRONICS20.h +++ b/Marlin/src/pins/samd/pins_MINITRONICS20.h @@ -212,9 +212,9 @@ #if ENABLED(CR10_STOCKDISPLAY) // TO TEST - //#define LCD_PINS_RS EXP3_04_PIN - //#define LCD_PINS_ENABLE EXP3_03_PIN - //#define LCD_PINS_D4 EXP3_05_PIN + //#define LCD_PINS_RS EXP3_04_PIN + //#define LCD_PINS_ENABLE EXP3_03_PIN + //#define LCD_PINS_D4 EXP3_05_PIN #if !IS_NEWPANEL // TO TEST @@ -278,7 +278,7 @@ #if IS_RRD_SC - //#define BEEPER_PIN EXP1_01_PIN + //#define BEEPER_PIN EXP1_01_PIN #if ENABLED(CR10_STOCKDISPLAY) // TO TEST @@ -297,7 +297,7 @@ #ifndef SD_DETECT_PIN #define SD_DETECT_PIN EXP2_07_PIN #endif - //#define KILL_PIN EXP2_10_PIN + //#define KILL_PIN EXP2_10_PIN #if ENABLED(BQ_LCD_SMART_CONTROLLER) //#define LCD_BACKLIGHT_PIN EXP1_08_PIN // TO TEST diff --git a/Marlin/src/pins/samd/pins_RAMPS_144.h b/Marlin/src/pins/samd/pins_RAMPS_144.h index 7adb2404c1..e5091e5cdc 100644 --- a/Marlin/src/pins/samd/pins_RAMPS_144.h +++ b/Marlin/src/pins/samd/pins_RAMPS_144.h @@ -164,18 +164,16 @@ #endif // -// TMC software SPI +// TMC SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI 58 // Mega/Due:66 - AGCM4:58 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO 44 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK 56 // Mega/Due:64 - AGCM4:56 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI 58 // Mega/Due:66 - AGCM4:58 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO 44 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK 56 // Mega/Due:64 - AGCM4:56 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h index 3b6297ba4d..6444e2e040 100644 --- a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h +++ b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h @@ -153,7 +153,7 @@ #define KILL_PIN 10 #define BEEPER_PIN 27 - #elif IS_U8GLIB_ST7920 // SPI GLCD 12864 ST7920 ( like [www.digole.com] ) For Melzi V2.0 + #elif IS_U8GLIB_ST7920 // SPI GLCD 12864 ST7920 ( like [www.digole.com] ) For Melzi V2.0 #if IS_MELZI #define LCD_PINS_RS 30 // CS chip select /SS chip slave select diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h index 075258991d..5007de25da 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h @@ -94,18 +94,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PB5 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PB4 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PB3 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PB5 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PB4 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PB3 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h index c544e1353c..0df70d7292 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h @@ -68,30 +68,29 @@ #define E0_DIR_PIN PB0 #define E0_ENABLE_PIN PC4 -#if ENABLED(TMC_USE_SW_SPI) // Shared with EXP2 - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PB3 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PB4 - #endif - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PB5 - #endif +// Shared with EXP2 +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PB3 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PB4 +#endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PB5 #endif #if HAS_TMC_UART // Shared with EXP1 - #define X_SERIAL_TX_PIN PC10 - #define X_SERIAL_RX_PIN X_SERIAL_TX_PIN + #define X_SERIAL_TX_PIN PC10 + #define X_SERIAL_RX_PIN X_SERIAL_TX_PIN - #define Y_SERIAL_TX_PIN PC11 - #define Y_SERIAL_RX_PIN Y_SERIAL_TX_PIN + #define Y_SERIAL_TX_PIN PC11 + #define Y_SERIAL_RX_PIN Y_SERIAL_TX_PIN - #define Z_SERIAL_TX_PIN PC12 - #define Z_SERIAL_RX_PIN Z_SERIAL_TX_PIN + #define Z_SERIAL_TX_PIN PC12 + #define Z_SERIAL_RX_PIN Z_SERIAL_TX_PIN - #define E0_SERIAL_TX_PIN PC14 - #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN + #define E0_SERIAL_TX_PIN PC14 + #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability #define TMC_BAUD_RATE 19200 @@ -287,4 +286,4 @@ #define ONBOARD_SPI_DEVICE 1 // SPI1 #define ONBOARD_SD_CS_PIN PA4 // Chip select for "System" SD card -#define SDSS SD_SS_PIN +#define SDSS SD_SS_PIN diff --git a/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h b/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h index c73544bf43..ec4535982e 100644 --- a/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h +++ b/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h @@ -134,7 +134,7 @@ #define EXP1_01_PIN PB5 #define EXP1_02_PIN PB6 #define EXP1_03_PIN PA2 -#define EXP1_04_PIN -1 // RESET +#define EXP1_04_PIN -1 // RESET #define EXP1_05_PIN PA3 #define EXP1_06_PIN PB8 #define EXP1_07_PIN PB7 diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h index a0152a5221..b6316c01c6 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h @@ -49,8 +49,8 @@ #endif #if ENABLED(IIC_BL24CXX_EEPROM) - #define IIC_EEPROM_SDA PA11 - #define IIC_EEPROM_SCL PA12 + #define IIC_EEPROM_SDA PA11 + #define IIC_EEPROM_SCL PA12 #define MARLIN_EEPROM_SIZE 0x800 // 2K (24C16) #elif EITHER(SDCARD_EEPROM_EMULATION, FLASH_EEPROM_EMULATION) #define MARLIN_EEPROM_SIZE 0x800 // 2K diff --git a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h index f39850f755..c139b4943c 100644 --- a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h @@ -83,16 +83,14 @@ #define E0_CS_PIN PC2 #endif -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI EXP2_06_PIN - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO EXP2_01_PIN - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK EXP2_02_PIN - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI EXP2_06_PIN +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO EXP2_01_PIN +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK EXP2_02_PIN #endif #if HAS_TMC_UART @@ -131,23 +129,23 @@ * ------ ------ * EXP1 EXP2 */ -#define EXP1_01_PIN PC14 -#define EXP1_02_PIN PC13 -#define EXP1_03_PIN PB9 -#define EXP1_04_PIN PB8 -#define EXP1_05_PIN PB7 -#define EXP1_06_PIN PB6 -#define EXP1_07_PIN PB5 -#define EXP1_08_PIN PB4 +#define EXP1_01_PIN PC14 +#define EXP1_02_PIN PC13 +#define EXP1_03_PIN PB9 +#define EXP1_04_PIN PB8 +#define EXP1_05_PIN PB7 +#define EXP1_06_PIN PB6 +#define EXP1_07_PIN PB5 +#define EXP1_08_PIN PB4 -#define EXP2_01_PIN PB14 -#define EXP2_02_PIN PB13 -#define EXP2_03_PIN PB3 -#define EXP2_04_PIN PB12 -#define EXP2_05_PIN PD2 -#define EXP2_06_PIN PB15 -#define EXP2_07_PIN PB11 -#define EXP2_08_PIN -1 // RESET +#define EXP2_01_PIN PB14 +#define EXP2_02_PIN PB13 +#define EXP2_03_PIN PB3 +#define EXP2_04_PIN PB12 +#define EXP2_05_PIN PD2 +#define EXP2_06_PIN PB15 +#define EXP2_07_PIN PB11 +#define EXP2_08_PIN -1 // RESET // // LCD / Controller diff --git a/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h b/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h index f157c8e455..9ed3c11560 100644 --- a/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h @@ -64,9 +64,9 @@ // Limit Switches // #define X_MIN_PIN PD6 -#define X_MAX_PIN PG15 // To double check +#define X_MAX_PIN PG15 // To double check #define Y_MIN_PIN PG9 -#define Y_MAX_PIN PG14 // To double check +#define Y_MAX_PIN PG14 // To double check #define Z_MIN_PIN PG10 #define Z_MAX_PIN PG13 diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3D.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3D.h index 77c2b79215..6d88897332 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3D.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3D.h @@ -50,18 +50,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PB15 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PB14 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PB13 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PB15 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PB14 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PB13 #endif #include "pins_MKS_ROBIN_E3_common.h" diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3D_V1_1.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3D_V1_1.h index 2ad68a0140..89fda7ab67 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3D_V1_1.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3D_V1_1.h @@ -50,18 +50,17 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers +// Software and hardware actually, they are connected to SPI2 bus. // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PB15 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PB14 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PB13 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PB15 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PB14 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PB13 #endif #include "pins_MKS_ROBIN_E3_V1_1_common.h" // ... MKS_ROBIN_E3_common diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h index 89525d93ef..7994089619 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h @@ -112,18 +112,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PD14 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PD1 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PD0 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PD14 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PD1 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PD0 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h index 642c97bb11..74780562b6 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h @@ -165,13 +165,13 @@ #define EXP2_05_PIN PB0 #define EXP2_06_PIN PB15 #define EXP2_07_PIN PC10 -#define EXP2_08_PIN -1 // RESET +#define EXP2_08_PIN -1 // RESET // "Ender-3 EXP1" #define EXP3_01_PIN PC1 #define EXP3_02_PIN PC3 #define EXP3_03_PIN PB11 -#define EXP3_04_PIN -1 // RESET +#define EXP3_04_PIN -1 // RESET #define EXP3_05_PIN PB0 #define EXP3_06_PIN PA6 #define EXP3_07_PIN PA5 diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h index 8dba943136..bfa6f45120 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h @@ -122,18 +122,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PD14 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PD1 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PD0 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PD14 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PD1 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PD0 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h index 048570102b..7373d0d7b5 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h @@ -105,18 +105,16 @@ #define E2_CS_PIN PG9 #endif // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PB15 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PB14 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PB13 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PB15 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PB14 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PB13 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h b/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h index ed602d8d01..56200d5096 100644 --- a/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h +++ b/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h @@ -88,18 +88,16 @@ #define E0_DIR_PIN PB14 // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PB5 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PB4 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PB3 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PB5 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PB4 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PB3 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h index 2147dd9b4f..d31885e73d 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h @@ -108,18 +108,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PB15 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PB14 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PB13 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PB15 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PB14 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PB13 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h index fe03ec8983..fe0e1e52f3 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h @@ -202,18 +202,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PG15 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PB6 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PB3 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PG15 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PB6 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PB3 #endif #if HAS_TMC_UART @@ -304,9 +302,9 @@ //#define TEMP_0_MOSI_PIN ... // For MAX31865 #define TEMP_1_CS_PIN PH2 // M5 K-TEMP -#define TEMP_1_SCK_PIN TEMP_0_SCK_PIN -#define TEMP_1_MISO_PIN TEMP_0_MISO_PIN -//#define TEMP_1_MOSI_PIN TEMP_0_MOSI_PIN +#define TEMP_1_SCK_PIN TEMP_0_SCK_PIN +#define TEMP_1_MISO_PIN TEMP_0_MISO_PIN +//#define TEMP_1_MOSI_PIN TEMP_0_MOSI_PIN // // Heaters / Fans diff --git a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h index a25c2339f2..a3bffbce01 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h @@ -260,18 +260,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PA7 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PA6 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PA5 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PA7 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PA6 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PA5 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h index 78a137b35d..c535edfc1e 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h @@ -172,18 +172,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PC12 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PC11 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PC10 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PC12 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PC11 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PC10 #endif #if HAS_TMC_UART @@ -487,7 +485,7 @@ #define DOGLCD_A0 EXP1_06_PIN #define DOGLCD_SCK EXP1_04_PIN #define DOGLCD_MOSI EXP1_02_PIN - #define LCD_BACKLIGHT_PIN -1 + #define LCD_BACKLIGHT_PIN -1 #else diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h index 7ac9156f40..76d06380b4 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h @@ -272,18 +272,16 @@ #endif // SPINDLE_FEATURE || LASER_FEATURE // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PE14 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PA14 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PE15 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PE14 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PA14 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PE15 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h b/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h index 8d5e094122..8d31130d89 100644 --- a/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h +++ b/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h @@ -235,18 +235,16 @@ #endif // -// Trinamic Software SPI +// Trinamic SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_SCK - #define TMC_SW_SCK EXP2_02_PIN - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO EXP2_01_PIN - #endif - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI EXP2_06_PIN - #endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK EXP2_02_PIN +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO EXP2_01_PIN +#endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI EXP2_06_PIN #endif // diff --git a/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h b/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h index 031caa1ce1..e650f2840e 100644 --- a/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h +++ b/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h @@ -43,14 +43,14 @@ #define FLASH_ADDRESS_START 0x8004000 #endif -#define SERVO0_PIN PB1 // BL-TOUCH/PWM +#define SERVO0_PIN PB1 // BL-TOUCH/PWM // // Limit Switches // -#define X_STOP_PIN PB4 // X-MIN -#define Y_STOP_PIN PC8 // Y-MIN -#define Z_STOP_PIN PA0 // Z-MIN +#define X_STOP_PIN PB4 // X-MIN +#define Y_STOP_PIN PC8 // Y-MIN +#define Z_STOP_PIN PA0 // Z-MIN // // Z Probe @@ -59,7 +59,7 @@ #error "You need to set jumper to 5V for BLTouch, then comment out this line to proceed." #endif #ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN PB1 // BL-TOUCH/PWM repurposed + #define Z_MIN_PROBE_PIN PB1 // BL-TOUCH/PWM repurposed #endif // diff --git a/Marlin/src/pins/stm32f4/pins_FYSETC_S6_V2_0.h b/Marlin/src/pins/stm32f4/pins_FYSETC_S6_V2_0.h index a9ce1383d8..a6035c2c6f 100644 --- a/Marlin/src/pins/stm32f4/pins_FYSETC_S6_V2_0.h +++ b/Marlin/src/pins/stm32f4/pins_FYSETC_S6_V2_0.h @@ -53,19 +53,17 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // #define TMC_USE_SW_SPI -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PE14 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PE13 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PE12 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PE14 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PE13 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PE12 #endif #include "pins_FYSETC_S6.h" diff --git a/Marlin/src/pins/stm32f4/pins_FYSETC_SPIDER.h b/Marlin/src/pins/stm32f4/pins_FYSETC_SPIDER.h index 009bfb248d..368f464f86 100644 --- a/Marlin/src/pins/stm32f4/pins_FYSETC_SPIDER.h +++ b/Marlin/src/pins/stm32f4/pins_FYSETC_SPIDER.h @@ -101,19 +101,17 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // #define TMC_USE_SW_SPI -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PE14 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PE13 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PE12 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PE14 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PE13 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PE12 #endif #if HOTENDS > 3 || E_STEPPERS > 3 diff --git a/Marlin/src/pins/stm32f4/pins_LERDGE_K.h b/Marlin/src/pins/stm32f4/pins_LERDGE_K.h index 6c6f8d25ea..0ea7255c17 100644 --- a/Marlin/src/pins/stm32f4/pins_LERDGE_K.h +++ b/Marlin/src/pins/stm32f4/pins_LERDGE_K.h @@ -154,10 +154,10 @@ #ifndef EX_SERIAL_RX_PIN #define EX_SERIAL_RX_PIN EX_SERIAL_TX_PIN #endif - //#define Z2_SERIAL_RX_PIN EX_SERIAL_RX_PIN - //#define Z2_SERIAL_TX_PIN EX_SERIAL_TX_PIN - //#define E2_SERIAL_RX_PIN EX_SERIAL_RX_PIN - //#define E2_SERIAL_TX_PIN EX_SERIAL_TX_PIN + //#define Z2_SERIAL_RX_PIN EX_SERIAL_RX_PIN + //#define Z2_SERIAL_TX_PIN EX_SERIAL_TX_PIN + //#define E2_SERIAL_RX_PIN EX_SERIAL_RX_PIN + //#define E2_SERIAL_TX_PIN EX_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability #define TMC_BAUD_RATE 19200 #endif diff --git a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_V1.h b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_V1.h index 50fe790dc3..7d6ea8e039 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_V1.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_V1.h @@ -39,7 +39,7 @@ // // Misc. Functions // -#define PW_DET PC5 // Y+ +#define PW_DET PC5 // Y+ #define PW_OFF PB12 // Z+ #define MT_DET_1_PIN PW_DET #define MT_DET_2_PIN PW_OFF diff --git a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h index 1896cd5441..c8a5b428dc 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h @@ -126,22 +126,23 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// Default pins for TMC software SPI // This board only supports SW SPI for stepper drivers // #if HAS_TMC_SPI #define TMC_USE_SW_SPI #endif -#if ENABLED(TMC_USE_SW_SPI) - #if !defined(TMC_SW_MOSI) || TMC_SW_MOSI == -1 - #define TMC_SW_MOSI PE14 - #endif - #if !defined(TMC_SW_MISO) || TMC_SW_MISO == -1 - #define TMC_SW_MISO PE13 - #endif - #if !defined(TMC_SW_SCK) || TMC_SW_SCK == -1 - #define TMC_SW_SCK PE12 - #endif +#if !defined(TMC_SPI_MOSI) || TMC_SPI_MOSI == -1 + #undef TMC_SPI_MOSI + #define TMC_SPI_MOSI PE14 +#endif +#if !defined(TMC_SPI_MISO) || TMC_SPI_MISO == -1 + #undef TMC_SPI_MISO + #define TMC_SPI_MISO PE13 +#endif +#if !defined(TMC_SPI_SCK) || TMC_SPI_SCK == -1 + #undef TMC_SPI_SCK + #define TMC_SPI_SCK PE12 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h index 32d8a47488..96e19c987f 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h @@ -51,22 +51,23 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // This board only supports SW SPI for stepper drivers // #if HAS_TMC_SPI #define TMC_USE_SW_SPI #endif -#if ENABLED(TMC_USE_SW_SPI) - #if !defined(TMC_SW_MOSI) || TMC_SW_MOSI == -1 - #define TMC_SW_MOSI PD14 - #endif - #if !defined(TMC_SW_MISO) || TMC_SW_MISO == -1 - #define TMC_SW_MISO PD1 - #endif - #if !defined(TMC_SW_SCK) || TMC_SW_SCK == -1 - #define TMC_SW_SCK PD0 - #endif +#if !defined(TMC_SPI_MOSI) || TMC_SPI_MOSI == -1 + #undef TMC_SPI_MOSI + #define TMC_SPI_MOSI PD14 +#endif +#if !defined(TMC_SPI_MISO) || TMC_SPI_MISO == -1 + #undef TMC_SPI_MISO + #define TMC_SPI_MISO PD1 +#endif +#if !defined(TMC_SPI_SCK) || TMC_SPI_SCK == -1 + #undef TMC_SPI_SCK + #define TMC_SPI_SCK PD0 #endif #include "pins_MKS_ROBIN_NANO_V3_common.h" diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h index 14b3d66168..daafe8dee4 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h @@ -113,18 +113,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PD14 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PD1 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PD0 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PD14 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PD1 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PD0 #endif #if HAS_TMC_UART @@ -238,23 +236,23 @@ * ------ ------ * EXP1 EXP2 */ -#define EXP1_01_PIN PC5 -#define EXP1_02_PIN PE13 -#define EXP1_03_PIN PD13 -#define EXP1_04_PIN PC6 -#define EXP1_05_PIN PE14 -#define EXP1_06_PIN PE15 -#define EXP1_07_PIN PD11 -#define EXP1_08_PIN PD10 +#define EXP1_01_PIN PC5 +#define EXP1_02_PIN PE13 +#define EXP1_03_PIN PD13 +#define EXP1_04_PIN PC6 +#define EXP1_05_PIN PE14 +#define EXP1_06_PIN PE15 +#define EXP1_07_PIN PD11 +#define EXP1_08_PIN PD10 -#define EXP2_01_PIN PA6 -#define EXP2_02_PIN PA5 -#define EXP2_03_PIN PE8 -#define EXP2_04_PIN PE10 -#define EXP2_05_PIN PE11 -#define EXP2_06_PIN PA7 -#define EXP2_07_PIN PE12 -#define EXP2_08_PIN -1 // RESET +#define EXP2_01_PIN PA6 +#define EXP2_02_PIN PA5 +#define EXP2_03_PIN PE8 +#define EXP2_04_PIN PE10 +#define EXP2_05_PIN PE11 +#define EXP2_06_PIN PA7 +#define EXP2_07_PIN PE12 +#define EXP2_08_PIN -1 // RESET // // LCD SD diff --git a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h index 3f0d4e5ee9..ac0b7679c3 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h @@ -191,14 +191,14 @@ #define FAN2_PIN PA0 // Fan2 // -// Software SPI pins for TMC2130 stepper drivers -// This board doesn't support hardware SPI there +// Default pins for TMC software SPI +// This board only supports SW SPI for stepper drivers // #if HAS_TMC_SPI #define TMC_USE_SW_SPI - #define TMC_SW_MOSI PE14 - #define TMC_SW_MISO PE13 - #define TMC_SW_SCK PE12 + #define TMC_SPI_MOSI PE14 + #define TMC_SPI_MISO PE13 + #define TMC_SPI_SCK PE12 #endif // diff --git a/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h b/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h index 06bf09402c..cf4720a20c 100644 --- a/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h +++ b/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h @@ -171,9 +171,9 @@ #define MOSI_PIN PB5 #define SCK_PIN PB3 -#define TMC_SW_MISO MISO_PIN -#define TMC_SW_MOSI MOSI_PIN -#define TMC_SW_SCK SCK_PIN +#define TMC_SPI_MISO MISO_PIN +#define TMC_SPI_MOSI MOSI_PIN +#define TMC_SPI_SCK SCK_PIN // // I2C diff --git a/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h b/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h index d16d7b200b..c8da0af894 100644 --- a/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h +++ b/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h @@ -168,9 +168,9 @@ #define MOSI_PIN PB5 #define SCK_PIN PB3 -#define TMC_SW_MISO MISO_PIN -#define TMC_SW_MOSI MOSI_PIN -#define TMC_SW_SCK SCK_PIN +#define TMC_SPI_MISO MISO_PIN +#define TMC_SPI_MOSI MOSI_PIN +#define TMC_SPI_SCK SCK_PIN // // I2C diff --git a/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h b/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h index 12871becbb..264bb91af4 100644 --- a/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h +++ b/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h @@ -91,16 +91,14 @@ #define E2_ENABLE_PIN PD0 #define E2_CS_PIN PD1 -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PA7 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PA6 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PA5 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PA7 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PA6 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PA5 #endif // diff --git a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h index 3de67ea8d5..138397fa11 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h @@ -81,15 +81,15 @@ // Steppers // #define X_ENABLE_PIN -1 -#define X_STEP_PIN PA10 // Unused. Assigned so Marlin will compile +#define X_STEP_PIN PA10 // Unused. Assigned so Marlin will compile #define X_DIR_PIN -1 #define Y_ENABLE_PIN -1 -#define Y_STEP_PIN PA10 // Unused. Assigned so Marlin will compile +#define Y_STEP_PIN PA10 // Unused. Assigned so Marlin will compile #define Y_DIR_PIN -1 #define Z_ENABLE_PIN -1 -#define Z_STEP_PIN PA10 // Unused. Assigned so Marlin will compile +#define Z_STEP_PIN PA10 // Unused. Assigned so Marlin will compile #define Z_DIR_PIN -1 #define E0_ENABLE_PIN PD2 diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h index 54c2c4c77b..84bf758777 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h @@ -143,18 +143,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// Default pins for TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PC12 // Shared with SPI header, Pin 5 (SPI3) - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PC11 // Shared with SPI header, Pin 6 (SPI3) - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PC10 // Shared with SPI header, Pin 4 (SPI3) - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PC12 // Shared with SPI header, Pin 5 (SPI3) +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PC11 // Shared with SPI header, Pin 6 (SPI3) +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PC10 // Shared with SPI header, Pin 4 (SPI3) #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h index 876475f883..7096cfbfbd 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h @@ -57,7 +57,7 @@ // #if ENABLED(PROBE_ENABLE_DISABLE) #ifndef PROBE_ENABLE_PIN - #define PROBE_ENABLE_PIN SERVO0_PIN + #define PROBE_ENABLE_PIN SERVO0_PIN #endif #endif @@ -112,18 +112,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// Default pins for TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PB15 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PB14 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PB13 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PB15 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PB14 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PB13 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h index f4ce5a16d3..59c2b0f97c 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h @@ -79,8 +79,8 @@ // Z Probe (when not Z_STOP_PIN) // #ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN PC13 // PROBE - //#define Z_MIN_PROBE_PIN PC15 // IND-DET (with adjustable pullup set via jumper) + #define Z_MIN_PROBE_PIN PC13 // PROBE + //#define Z_MIN_PROBE_PIN PC15 // IND-DET (with adjustable pullup set via jumper) #endif // @@ -129,18 +129,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// Default pins for TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PB15 // Shared with SPI header, Pin 5 (SPI2) - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PB14 // Shared with SPI header, Pin 6 (SPI2) - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PB13 // Shared with SPI header, Pin 4 (SPI2) - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PB15 // Shared with SPI header, Pin 5 (SPI2) +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PB14 // Shared with SPI header, Pin 6 (SPI2) +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PB13 // Shared with SPI header, Pin 4 (SPI2) #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h index 6516538c44..631b50d0f2 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h @@ -179,18 +179,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// Default pins for TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PA7 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PA6 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PA5 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PA7 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PA6 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PA5 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h index 80ea354982..9ddd46d6cd 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h @@ -273,18 +273,16 @@ #endif // -// Software SPI pins for TMC2130 stepper drivers +// Default pins for TMC software SPI // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PE14 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PE13 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PE12 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PE14 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PE13 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PE12 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h index d06e27d9c0..245567c27c 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h @@ -91,18 +91,16 @@ #define E1_CS_PIN PC8 // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PC6 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PG3 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PC7 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PC6 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PG3 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PC7 #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h index 809a1f3f8c..c05ae971cf 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h @@ -260,18 +260,16 @@ #endif // SPINDLE_FEATURE || LASER_FEATURE // -// Software SPI pins for TMC2130 stepper drivers +// SPI pins for TMC2130 stepper drivers // -#if ENABLED(TMC_USE_SW_SPI) - #ifndef TMC_SW_MOSI - #define TMC_SW_MOSI PE13 - #endif - #ifndef TMC_SW_MISO - #define TMC_SW_MISO PE15 - #endif - #ifndef TMC_SW_SCK - #define TMC_SW_SCK PE14 - #endif +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PE13 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PE15 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PE14 #endif #if HAS_TMC_UART From 0914f9e0e1738e118176bc9fe2df03215f1c4456 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Mar 2023 02:40:29 -0500 Subject: [PATCH 167/659] =?UTF-8?q?=F0=9F=8E=A8=20Pins=20header=20comments?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Martin Turski --- Marlin/src/HAL/AVR/fastio/fastio_1280.h | 3 +++ Marlin/src/HAL/AVR/fastio/fastio_1281.h | 3 +++ Marlin/src/HAL/AVR/fastio/fastio_168.h | 3 +++ Marlin/src/HAL/AVR/fastio/fastio_644.h | 3 +++ Marlin/src/HAL/AVR/fastio/fastio_AT90USB.h | 3 +++ .../src/HAL/NATIVE_SIM/u8g/LCD_I2C_routines.h | 1 - Marlin/src/HAL/NATIVE_SIM/u8g/LCD_defines.h | 2 -- Marlin/src/HAL/SAMD21/HAL_SPI.cpp | 2 +- Marlin/src/HAL/SAMD21/fastio.h | 1 - Marlin/src/pins/lpc1768/pins_AZSMZ_MINI.h | 2 ++ Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h | 6 +----- Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h | 4 ++++ Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h | 2 ++ Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h | 2 ++ Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h | 2 ++ Marlin/src/pins/lpc1768/pins_EMOTRONIC.h | 2 ++ Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h | 2 ++ Marlin/src/pins/lpc1768/pins_MKS_SBASE.h | 2 ++ Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h | 2 ++ Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h | 2 ++ Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h | 2 ++ Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h | 2 ++ Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h | 4 ++++ .../pins/lpc1769/pins_AZTEEG_X5_MINI_WIFI.h | 2 ++ .../src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h | 2 ++ .../pins/lpc1769/pins_BTT_SKR_V1_4_TURBO.h | 2 ++ .../src/pins/lpc1769/pins_COHESION3D_MINI.h | 2 ++ .../src/pins/lpc1769/pins_COHESION3D_REMIX.h | 2 ++ Marlin/src/pins/lpc1769/pins_FLY_CDY.h | 2 ++ Marlin/src/pins/lpc1769/pins_MKS_SGEN.h | 2 ++ Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h | 2 ++ Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h | 2 ++ Marlin/src/pins/mega/pins_CHEAPTRONIC.h | 1 + Marlin/src/pins/mega/pins_CHEAPTRONICv2.h | 4 +++- Marlin/src/pins/mega/pins_CNCONTROLS_11.h | 3 +++ Marlin/src/pins/mega/pins_CNCONTROLS_12.h | 3 +++ Marlin/src/pins/mega/pins_CNCONTROLS_15.h | 1 + Marlin/src/pins/mega/pins_EINSTART-S.h | 1 + Marlin/src/pins/mega/pins_ELEFU_3.h | 3 +++ Marlin/src/pins/mega/pins_GT2560_REV_A.h | 3 +++ Marlin/src/pins/mega/pins_GT2560_REV_A_PLUS.h | 3 +++ Marlin/src/pins/mega/pins_GT2560_REV_B.h | 3 +++ Marlin/src/pins/mega/pins_GT2560_V3.h | 3 +++ Marlin/src/pins/mega/pins_GT2560_V3_A20.h | 1 + Marlin/src/pins/mega/pins_GT2560_V3_MC2.h | 1 + Marlin/src/pins/mega/pins_GT2560_V4.h | 3 +++ Marlin/src/pins/mega/pins_GT2560_V4_A20.h | 1 + Marlin/src/pins/mega/pins_HJC2560C_REV2.h | 1 + Marlin/src/pins/mega/pins_INTAMSYS40.h | 1 + Marlin/src/pins/mega/pins_LEAPFROG.h | 1 + Marlin/src/pins/mega/pins_LEAPFROG_XEED2015.h | 1 + Marlin/src/pins/mega/pins_MALYAN_M180.h | 2 ++ Marlin/src/pins/mega/pins_MEGACONTROLLER.h | 3 +++ Marlin/src/pins/mega/pins_MEGATRONICS.h | 3 +++ Marlin/src/pins/mega/pins_MEGATRONICS_2.h | 3 +++ Marlin/src/pins/mega/pins_MEGATRONICS_3.h | 2 ++ Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h | 2 ++ Marlin/src/pins/mega/pins_MINITRONICS.h | 5 +++++ Marlin/src/pins/mega/pins_OVERLORD.h | 3 +++ Marlin/src/pins/mega/pins_PICA.h | 3 +++ Marlin/src/pins/mega/pins_PICAOLD.h | 4 ++++ .../pins/mega/pins_PROTONEER_CNC_SHIELD_V3.h | 3 +++ Marlin/src/pins/mega/pins_SILVER_GATE.h | 2 ++ Marlin/src/pins/mega/pins_WANHAO_ONEPLUS.h | 1 + Marlin/src/pins/mega/pins_WEEDO_62A.h | 1 + Marlin/src/pins/rambo/pins_EINSY_RAMBO.h | 2 ++ Marlin/src/pins/rambo/pins_EINSY_RETRO.h | 4 ++++ Marlin/src/pins/rambo/pins_MINIRAMBO.h | 4 ++++ Marlin/src/pins/rambo/pins_RAMBO.h | 2 ++ Marlin/src/pins/rambo/pins_SCOOVO_X9H.h | 2 +- Marlin/src/pins/ramps/pins_3DRAG.h | 4 ++++ Marlin/src/pins/ramps/pins_AZTEEG_X3.h | 3 +++ Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h | 3 +++ Marlin/src/pins/ramps/pins_BAM_DICE_DUE.h | 3 +++ Marlin/src/pins/ramps/pins_BIQU_KFB_2.h | 1 + Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h | 3 +++ Marlin/src/pins/ramps/pins_COPYMASTER_3D.h | 2 ++ Marlin/src/pins/ramps/pins_DAGOMA_F5.h | 2 ++ .../src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h | 1 + Marlin/src/pins/ramps/pins_FELIX2.h | 1 + Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h | 1 + Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h | 1 + .../src/pins/ramps/pins_FORMBOT_TREX2PLUS.h | 3 ++- Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h | 3 ++- Marlin/src/pins/ramps/pins_FYSETC_F6_13.h | 3 +++ Marlin/src/pins/ramps/pins_FYSETC_F6_14.h | 3 +++ Marlin/src/pins/ramps/pins_K8200.h | 3 +++ Marlin/src/pins/ramps/pins_K8400.h | 3 +++ Marlin/src/pins/ramps/pins_K8600.h | 1 + Marlin/src/pins/ramps/pins_K8800.h | 3 +++ Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h | 1 + Marlin/src/pins/ramps/pins_MAKEBOARD_MINI.h | 2 ++ Marlin/src/pins/ramps/pins_MKS_BASE_10.h | 6 ++++++ Marlin/src/pins/ramps/pins_MKS_BASE_14.h | 1 + Marlin/src/pins/ramps/pins_MKS_BASE_15.h | 1 + Marlin/src/pins/ramps/pins_MKS_BASE_16.h | 3 +++ Marlin/src/pins/ramps/pins_MKS_BASE_HEROIC.h | 1 + Marlin/src/pins/ramps/pins_MKS_BASE_common.h | 1 + Marlin/src/pins/ramps/pins_MKS_GEN_13.h | 3 +++ Marlin/src/pins/ramps/pins_MKS_GEN_L.h | 3 +++ Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h | 3 +++ Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h | 3 +++ Marlin/src/pins/ramps/pins_ORTUR_4.h | 1 + Marlin/src/pins/ramps/pins_PXMALION_CORE_I3.h | 1 + Marlin/src/pins/ramps/pins_RAMPS.h | 1 + Marlin/src/pins/ramps/pins_RAMPS_13.h | 1 + Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h | 2 ++ Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h | 2 ++ Marlin/src/pins/ramps/pins_RAMPS_OLD.h | 1 + Marlin/src/pins/ramps/pins_RAMPS_PLUS.h | 1 + Marlin/src/pins/ramps/pins_RAMPS_S_12.h | 1 + Marlin/src/pins/ramps/pins_RIGIDBOARD.h | 1 + Marlin/src/pins/ramps/pins_RIGIDBOARD_V2.h | 1 + Marlin/src/pins/ramps/pins_RL200.h | 1 + Marlin/src/pins/ramps/pins_RUMBA.h | 3 +++ Marlin/src/pins/ramps/pins_RUMBA_RAISE3D.h | 2 ++ Marlin/src/pins/ramps/pins_SAINSMART_2IN1.h | 3 ++- Marlin/src/pins/ramps/pins_TANGO.h | 3 +++ Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h | 3 ++- Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h | 3 ++- Marlin/src/pins/ramps/pins_TRIGORILLA_13.h | 1 + Marlin/src/pins/ramps/pins_TRIGORILLA_14.h | 1 + Marlin/src/pins/ramps/pins_TRONXY_V3_1_0.h | 1 + Marlin/src/pins/ramps/pins_TT_OSCAR.h | 4 +++- Marlin/src/pins/ramps/pins_ULTIMAIN_2.h | 19 +++++++++++++++++++ Marlin/src/pins/ramps/pins_ULTIMAKER.h | 1 + Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h | 3 +++ Marlin/src/pins/ramps/pins_VORON.h | 1 + Marlin/src/pins/ramps/pins_ZRIB_V20.h | 7 ++++++- Marlin/src/pins/ramps/pins_ZRIB_V52.h | 5 ++++- Marlin/src/pins/ramps/pins_ZRIB_V53.h | 3 ++- Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h | 1 + Marlin/src/pins/sanguino/pins_ANET_10.h | 2 ++ Marlin/src/pins/sanguino/pins_AZTEEG_X1.h | 2 ++ .../src/pins/sanguino/pins_GEN3_MONOLITHIC.h | 1 + Marlin/src/pins/sanguino/pins_GEN6.h | 2 ++ Marlin/src/pins/sanguino/pins_GEN7_12.h | 10 +++++++++- Marlin/src/pins/sanguino/pins_GEN7_14.h | 4 ++++ Marlin/src/pins/sanguino/pins_MELZI.h | 2 ++ .../src/pins/sanguino/pins_MELZI_CREALITY.h | 3 +++ Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h | 1 + Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h | 1 + Marlin/src/pins/sanguino/pins_MELZI_V2.h | 2 ++ .../src/pins/sanguino/pins_SANGUINOLOLU_11.h | 10 ++++++++++ .../src/pins/sanguino/pins_SANGUINOLOLU_12.h | 6 ++++++ Marlin/src/pins/sanguino/pins_STB_11.h | 3 ++- Marlin/src/pins/sanguino/pins_ZMIB_V2.h | 2 ++ Marlin/src/pins/teensy2/pins_5DPRINT.h | 2 ++ Marlin/src/pins/teensy2/pins_BRAINWAVE.h | 4 ++++ Marlin/src/pins/teensy2/pins_BRAINWAVE_PRO.h | 2 ++ Marlin/src/pins/teensy2/pins_PRINTRBOARD.h | 9 +++++++++ .../src/pins/teensy2/pins_PRINTRBOARD_REVF.h | 13 +++++++++++++ Marlin/src/pins/teensy2/pins_SAV_MKI.h | 3 +++ Marlin/src/pins/teensy2/pins_TEENSY2.h | 1 + Marlin/src/pins/teensy2/pins_TEENSYLU.h | 4 ++++ 155 files changed, 383 insertions(+), 23 deletions(-) diff --git a/Marlin/src/HAL/AVR/fastio/fastio_1280.h b/Marlin/src/HAL/AVR/fastio/fastio_1280.h index f482f823e8..e6ecbabb80 100644 --- a/Marlin/src/HAL/AVR/fastio/fastio_1280.h +++ b/Marlin/src/HAL/AVR/fastio/fastio_1280.h @@ -27,6 +27,9 @@ * Hardware Pin : 02 03 06 07 01 05 15 16 17 18 23 24 25 26 64 63 13 12 46 45 44 43 78 77 76 75 74 73 72 71 60 59 58 57 56 55 54 53 50 70 52 51 42 41 40 39 38 37 36 35 22 21 20 19 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 | 04 08 09 10 11 14 27 28 29 30 31 32 33 34 47 48 49 61 62 65 66 67 68 69 79 80 81 98 99 100 * Port : E0 E1 E4 E5 G5 E3 H3 H4 H5 H6 B4 B5 B6 B7 J1 J0 H1 H0 D3 D2 D1 D0 A0 A1 A2 A3 A4 A5 A6 A7 C7 C6 C5 C4 C3 C2 C1 C0 D7 G2 G1 G0 L7 L6 L5 L4 L3 L2 L1 L0 B3 B2 B1 B0 F0 F1 F2 F3 F4 F5 F6 F7 K0 K1 K2 K3 K4 K5 K6 K7 | E2 E6 E7 xx xx H2 H7 G3 G4 xx xx xx xx xx D4 D5 D6 xx xx J2 J3 J4 J5 J6 J7 xx xx xx xx xx * Logical Pin : 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | 78 79 80 xx xx 84 85 71 70 xx xx xx xx xx 81 82 83 xx xx 72 73 75 76 77 74 xx xx xx xx xx + * + * Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA + * AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg */ #include "../fastio.h" diff --git a/Marlin/src/HAL/AVR/fastio/fastio_1281.h b/Marlin/src/HAL/AVR/fastio/fastio_1281.h index e0bc5e2995..812586225d 100644 --- a/Marlin/src/HAL/AVR/fastio/fastio_1281.h +++ b/Marlin/src/HAL/AVR/fastio/fastio_1281.h @@ -26,6 +26,9 @@ * * Logical Pin: 38 39 40 41 42 43 44 45 16 10 11 12 06 07 08 09 30 31 32 33 34 35 36 37 17 18 19 20 21 22 23 24 00 01 13 05 02 03 14 15 46 47 48 49 50 51 52 53 25 26 27 28 29 04 * Port: A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 E3 E4 E5 E6 E7 F0 F1 F2 F3 F4 F5 F6 F7 G0 G1 G2 G3 G4 G5 + * + * Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA + * AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg */ #include "../fastio.h" diff --git a/Marlin/src/HAL/AVR/fastio/fastio_168.h b/Marlin/src/HAL/AVR/fastio/fastio_168.h index 8cfdd1e8f8..4f591b37b9 100644 --- a/Marlin/src/HAL/AVR/fastio/fastio_168.h +++ b/Marlin/src/HAL/AVR/fastio/fastio_168.h @@ -26,6 +26,9 @@ * * Logical Pin: 08 09 10 11 12 13 14 15 16 17 18 19 20 21 00 01 02 03 04 05 06 07 * Port: B0 B1 B2 B3 B4 B5 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 + * + * Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA + * AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg */ #include "../fastio.h" diff --git a/Marlin/src/HAL/AVR/fastio/fastio_644.h b/Marlin/src/HAL/AVR/fastio/fastio_644.h index f4a9427e0a..16bdc6a23d 100644 --- a/Marlin/src/HAL/AVR/fastio/fastio_644.h +++ b/Marlin/src/HAL/AVR/fastio/fastio_644.h @@ -26,6 +26,9 @@ * * Logical Pin: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 * Port: B0 B1 B2 B3 B4 B5 B6 B7 D0 D1 D2 D3 D4 D5 D6 D7 C0 C1 C2 C3 C4 C5 C6 C7 A7 A6 A5 A4 A3 A2 A1 A0 + * + * Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA + * AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg */ /** ATMega644 diff --git a/Marlin/src/HAL/AVR/fastio/fastio_AT90USB.h b/Marlin/src/HAL/AVR/fastio/fastio_AT90USB.h index 51d400b705..d2a8aca6f3 100644 --- a/Marlin/src/HAL/AVR/fastio/fastio_AT90USB.h +++ b/Marlin/src/HAL/AVR/fastio/fastio_AT90USB.h @@ -27,6 +27,9 @@ * Logical Pin: 28 29 30 31 32 33 34 35 20 21 22 23 24 25 26 27 10 11 12 13 14 15 16 17 00 01 02 03 04 05 06 07 08 09(46*47)36 37 18 19 38 39 40 41 42 43 44 45 * Port: A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 E3 E4 E5 E6 E7 F0 F1 F2 F3 F4 F5 F6 F7 * The logical pins 46 and 47 are not supported by Teensyduino, but are supported below as E2 and E3 + * + * Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA + * AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg */ #include "../fastio.h" diff --git a/Marlin/src/HAL/NATIVE_SIM/u8g/LCD_I2C_routines.h b/Marlin/src/HAL/NATIVE_SIM/u8g/LCD_I2C_routines.h index 6d5f91d3ba..ec263b6dd3 100644 --- a/Marlin/src/HAL/NATIVE_SIM/u8g/LCD_I2C_routines.h +++ b/Marlin/src/HAL/NATIVE_SIM/u8g/LCD_I2C_routines.h @@ -34,4 +34,3 @@ void u8g_i2c_stop(); #ifdef __cplusplus } #endif - diff --git a/Marlin/src/HAL/NATIVE_SIM/u8g/LCD_defines.h b/Marlin/src/HAL/NATIVE_SIM/u8g/LCD_defines.h index 44ffbfeb90..2a50eddcd4 100644 --- a/Marlin/src/HAL/NATIVE_SIM/u8g/LCD_defines.h +++ b/Marlin/src/HAL/NATIVE_SIM/u8g/LCD_defines.h @@ -40,5 +40,3 @@ uint8_t u8g_com_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void #define U8G_COM_T6963 u8g_com_null_fn #define U8G_COM_FAST_PARALLEL u8g_com_null_fn #define U8G_COM_UC_I2C u8g_com_null_fn - - diff --git a/Marlin/src/HAL/SAMD21/HAL_SPI.cpp b/Marlin/src/HAL/SAMD21/HAL_SPI.cpp index 0fc530cdb2..69c6a43af8 100644 --- a/Marlin/src/HAL/SAMD21/HAL_SPI.cpp +++ b/Marlin/src/HAL/SAMD21/HAL_SPI.cpp @@ -64,7 +64,7 @@ } void spiInit(uint8_t spiRate) { - // Use datarates Marlin uses + // Use Marlin datarates uint32_t clock; switch (spiRate) { case SPI_FULL_SPEED: clock = 8000000; break; diff --git a/Marlin/src/HAL/SAMD21/fastio.h b/Marlin/src/HAL/SAMD21/fastio.h index db64f2166f..df907ff7ec 100644 --- a/Marlin/src/HAL/SAMD21/fastio.h +++ b/Marlin/src/HAL/SAMD21/fastio.h @@ -213,4 +213,3 @@ #define DIO53_PIN PIN_PA21 #define DIO54_PIN PIN_PA06 #define DIO55_PIN PIN_PA07 - diff --git a/Marlin/src/pins/lpc1768/pins_AZSMZ_MINI.h b/Marlin/src/pins/lpc1768/pins_AZSMZ_MINI.h index 4d1dbecf2e..657eb8a046 100644 --- a/Marlin/src/pins/lpc1768/pins_AZSMZ_MINI.h +++ b/Marlin/src/pins/lpc1768/pins_AZSMZ_MINI.h @@ -23,6 +23,8 @@ /** * AZSMZ MINI pin assignments + * Schematic: http://green-candy.osdn.jp/external/MarlinFW/board_schematics/AZSMZ%20MINI/AZSMZ.svg + * Source: https://raw.githubusercontent.com/Rose-Fish/AZSMZ-mini/master/AZSMZ.sch */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h b/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h index 0c96cb42b5..7215150d0b 100644 --- a/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h +++ b/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h @@ -22,11 +22,7 @@ #pragma once /** - * BIQU BQ111-A4 - * - * Applies to the following boards: - * - * BOARD_BIQU_BQ111_A4 (Hotend, Fan, Bed) + * BIQU Thunder B300 V1.0 */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h b/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h index 92152170a0..2c0d52ef9a 100644 --- a/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h +++ b/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h @@ -23,6 +23,10 @@ /** * BIQU BQ111-A4 pin assignments + * + * Applies to the following boards: + * + * BOARD_BIQU_BQ111_A4 (Hotend, Fan, Bed) */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h index 1a8c44771a..d1ea2c0197 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h @@ -23,6 +23,8 @@ /** * BigTreeTech SKR 1.1 pin assignments + * Schematic: http://green-candy.osdn.jp/external/MarlinFW/board_schematics/BTT%20SKR%20V1.1/SKR-V1.1SchDoc.pdf + * Origin: https://github.com/bigtreetech/BIGTREETECH-SKR-V1.1/blob/master/hardware/SKR-V1.1SchDoc.pdf */ #define BOARD_INFO_NAME "BTT SKR V1.1" diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h index 6372623a30..aafc8d3f9f 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h @@ -23,6 +23,8 @@ /** * BigTreeTech SKR 1.3 pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/BTT%20SKR%20V1.3/SKR-V1.3-SCH.pdf + * Origin: https://github.com/bigtreetech/BIGTREETECH-SKR-V1.3/blob/master/BTT%20SKR%20V1.3/hardware/SKR-V1.3-SCH.pdf */ #define BOARD_INFO_NAME "BTT SKR V1.3" diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h index e632d8afa6..b4fafbf7a4 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h @@ -23,6 +23,8 @@ /** * BigTreeTech SKR 1.4 pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/BTT%20SKR%20V1.4%20+%20Turbo/BTT%20SKR%20V1.4-SCH.pdf + * Origin: https://github.com/bigtreetech/BIGTREETECH-SKR-V1.3/blob/master/BTT%20SKR%20V1.4/Hardware/BTT%20SKR%20V1.4-SCH.pdf */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1768/pins_EMOTRONIC.h b/Marlin/src/pins/lpc1768/pins_EMOTRONIC.h index 6e1ea403b1..9e62be8edb 100644 --- a/Marlin/src/pins/lpc1768/pins_EMOTRONIC.h +++ b/Marlin/src/pins/lpc1768/pins_EMOTRONIC.h @@ -23,6 +23,8 @@ /** * eMotion-Tech eMotronic pin assignments + * Schematic: http://green-candy.osdn.jp/external/MarlinFW/board_schematics/eMotion-Tech%20eMotronic/eMotronic_brd_sources_1.0.4/eMotronic_sch.pdf + * Origin: https://data.emotion-tech.com/ftp/Datasheets_et_sources/Sources/eMotronic_brd_sources_1.0.4.zip * * Board pins<->features assignments are based on the * Micro-Delta Rework printer default connections. diff --git a/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h b/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h index 39ab0bbd89..aedbd7be60 100644 --- a/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h +++ b/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h @@ -23,6 +23,8 @@ /** * GMARSH X6 Rev.1 pin assignments + * Schematic: http://green-candy.osdn.jp/external/MarlinFW/board_schematics/GMARSH%20X6%20Rev.1/armprinter_2208_1heater.pdf + * Origin: https://github.com/gmarsh/gmarsh_x6/blob/master/armprinter_2208_1heater.pdf */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h index c5c5bd3e23..14759901ac 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h @@ -23,6 +23,8 @@ /** * Makerbase MKS SBASE pin assignments + * Schematic (V1.3): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/MKS%20SBASE%20V1.3/MKS%20SBASE%20V1.3_002%20SCH.pdf + * Origin (V1.3): http://green-candy.osdn.jp/external/MarlinFW/board_schematics/MKS%20SBASE%20V1.3/MKS%20SBASE%20V1.3_002%20SCH.pdf */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h index 1f038b4aa0..1235e44ec9 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h @@ -23,6 +23,8 @@ /** * Makerbase MKS SGEN-L pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/MKS_GEN_L_V1_0/MKS%20Gen_L%20V1.0_008%20SCH.pdf + * Origin: https://github.com/makerbase-mks/SGEN_L/blob/master/Hardware/MKS%20SGEN_L%20V1.0_001/MKS%20SGEN_L%20V1.0_001%20SCH.pdf */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h index b6ce9c5c05..893a8a755b 100644 --- a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h +++ b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h @@ -23,6 +23,8 @@ /** * Re-ARM with RAMPS v1.4 pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Re-ARM%20RAMPS%201.4/Re_ARM_Schematic.pdf + * Origin: https://reprap.org/mediawiki/images/f/fa/Re_ARM_Schematic.pdf * * Applies to the following boards: * diff --git a/Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h b/Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h index 2972ac7560..30cd76b9a2 100644 --- a/Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h +++ b/Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h @@ -23,6 +23,8 @@ /** * Selena Compact pin assignments + * Pinout: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Selena%20Compact/Compact%20Pinout.pdf + * Origin: https://github.com/f61/Selena/blob/master/Compact%20Pinout.pdf */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h index bc7cada8da..a9c61cb8c9 100644 --- a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h +++ b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h @@ -23,6 +23,8 @@ /** * Azteeg X5 GT pin assignments + * Wiring diagram: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Azteeg%20X5%20GT/X5%20GT%20Wiring%20Diagram.pdf + * Origin: https://panucattdevices.freshdesk.com/support/solutions/articles/1000244740-support-files */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h index c33fe6e28f..eabb338504 100644 --- a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h +++ b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h @@ -23,6 +23,10 @@ /** * Azteeg X5 MINI pin assignments + * Schematic (V1): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Azteeg%20X5%20MINI/x5mini_design_files/X5mini_design_files/V1/X5%20Mini%20PUB%20v1.0.pdf + * Schematic (V2): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Azteeg%20X5%20MINI/x5mini_design_files/X5mini_design_files/V2/X5%20Mini%20V2%20SCH%20Pub.pdf + * Schematic (V3): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Azteeg%20X5%20MINI/x5mini_design_files/X5mini_design_files/V3/X5%20Mini%20V3%20SCH%20Pub.pdf + * Origin: http://files.panucatt.com/datasheets/x5mini_design_files.zip */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI_WIFI.h b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI_WIFI.h index 086bacbac0..74439e4f3d 100644 --- a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI_WIFI.h +++ b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI_WIFI.h @@ -23,6 +23,8 @@ /** * Azteeg X5 MINI WIFI pin assignments + * Wiring diagram: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Azteeg%20X5%20MINI%20WIFI/x5mini_wifi_wiring.pdf + * Origin: http://files.panucatt.com/datasheets/x5mini_wifi_wiring.pdf */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h b/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h index dbaafb89cc..f62818dd9f 100644 --- a/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h +++ b/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h @@ -23,6 +23,8 @@ /** * BigTreeTech SKR E3 Turbo pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/BTT%20SKR%20E3%20Turbo/BTT%20SKR%20E3%20Turbo-SCH.pdf + * Origin: https://github.com/bigtreetech/BIGTREETECH-SKR-E3-Turbo/blob/master/Hardware/BTT%20SKR%20E3%20Turbo-SCH.pdf */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1769/pins_BTT_SKR_V1_4_TURBO.h b/Marlin/src/pins/lpc1769/pins_BTT_SKR_V1_4_TURBO.h index 7f428fc918..1bd70d8fb5 100644 --- a/Marlin/src/pins/lpc1769/pins_BTT_SKR_V1_4_TURBO.h +++ b/Marlin/src/pins/lpc1769/pins_BTT_SKR_V1_4_TURBO.h @@ -23,6 +23,8 @@ /** * BigTreeTech SKR 1.4 Turbo pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/BTT%20SKR%20V1.4%20+%20Turbo/BTT%20SKR%20V1.4-SCH.pdf + * Origin: https://github.com/bigtreetech/BIGTREETECH-SKR-V1.3/blob/master/BTT%20SKR%20V1.4/Hardware/BTT%20SKR%20V1.4-SCH.pdf */ #define BOARD_INFO_NAME "BTT SKR V1.4 TURBO" diff --git a/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h b/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h index e0a3b03109..5c9355de29 100644 --- a/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h +++ b/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h @@ -23,6 +23,8 @@ /** * Cohesion3D Mini pin assignments + * Pinout: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Cohesion3D%20Mini/c3d-pinout.jpg + * Origin: https://lasergods.com/cohesion3d-mini-pinout-diagram/ */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h b/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h index 122c7462d2..5083a0ed48 100644 --- a/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h +++ b/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h @@ -23,6 +23,8 @@ /** * Cohesion3D ReMix pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Cohesion3D%20ReMix/C3D%20ReMix%20rev2.svg + * Origin: https://github.com/Cohesion3D/Cohesion3D-ReMix/blob/master/C3D%20ReMix%20rev2.sch */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1769/pins_FLY_CDY.h b/Marlin/src/pins/lpc1769/pins_FLY_CDY.h index 1c0c21466e..ed0ce30eb3 100644 --- a/Marlin/src/pins/lpc1769/pins_FLY_CDY.h +++ b/Marlin/src/pins/lpc1769/pins_FLY_CDY.h @@ -23,6 +23,8 @@ /** * FLYmaker FLY-CDY pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/FLYmaker%20FLY-CDY%20V1/FLY_CDY%20SCH.pdf + * Origin: https://github.com/Mellow-3D/FLY-CDY/blob/master/Motherboard%20information/FLY_CDY%20SCH.pdf */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1769/pins_MKS_SGEN.h b/Marlin/src/pins/lpc1769/pins_MKS_SGEN.h index 23bcecc78d..1e71fccfe5 100644 --- a/Marlin/src/pins/lpc1769/pins_MKS_SGEN.h +++ b/Marlin/src/pins/lpc1769/pins_MKS_SGEN.h @@ -23,6 +23,8 @@ /** * MKS SGen pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/MKS%20SGEN/MKS%20SGEN%20V1.0_001%20SCH.pdf + * Origin: https://github.com/makerbase-mks/MKS-SGen/blob/master/Hardware/MKS%20SGEN%20V1.0_001/MKS%20SGEN%20V1.0_001%20SCH.pdf * * Pins diagram: * https://github.com/makerbase-mks/MKS-SGen/blob/master/Hardware/MKS%20SGEN%20V1.0_001/MKS%20SGEN%20V1.0_001%20PIN.pdf diff --git a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h index 5c1b1f5638..54b771d318 100644 --- a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h +++ b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h @@ -23,6 +23,8 @@ /** * MKS SGen-L V2 pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/MKS%20SGEN_L%20V2/MKS%20SGEN_L%20V2.0_003%20SCH.pdf + * Origin: https://github.com/makerbase-mks/MKS-SGEN_L-V2/blob/master/Hardware/MKS%20SGEN_L%20V2.0_003/MKS%20SGEN_L%20V2.0_003%20SCH.pdf */ #include "env_validate.h" diff --git a/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h b/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h index cfaca164f8..124c8f63c2 100644 --- a/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h +++ b/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h @@ -23,6 +23,8 @@ /** * Smoothieware Smoothieboard pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Smoothieware%20Smoothieboard%20V1/http.i.imgur.com.oj4zqs3.png + * Origin: http://smoothieware.org/_media///external/http.i.imgur.com.oj4zqs3.png */ #include "env_validate.h" diff --git a/Marlin/src/pins/mega/pins_CHEAPTRONIC.h b/Marlin/src/pins/mega/pins_CHEAPTRONIC.h index 8bcb263bc1..e95f6c4ade 100644 --- a/Marlin/src/pins/mega/pins_CHEAPTRONIC.h +++ b/Marlin/src/pins/mega/pins_CHEAPTRONIC.h @@ -23,6 +23,7 @@ /** * Cheaptronic v1.0 pin assignments + * ATmega2560 */ #include "env_validate.h" diff --git a/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h b/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h index 01438975b9..e81295a653 100644 --- a/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h +++ b/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h @@ -24,7 +24,9 @@ /** * Cheaptronic v2.0 pin assignments * Built and sold by Michal Dyntar - RRO - * www.reprapobchod.cz + * www.reprapobchod.cz (DOES NOT EXIST ANYMORE) + * https://web.archive.org/web/20190306201523/http://reprapobchod.cz/ + * ATmega2560 */ #include "env_validate.h" diff --git a/Marlin/src/pins/mega/pins_CNCONTROLS_11.h b/Marlin/src/pins/mega/pins_CNCONTROLS_11.h index 5f7a534d11..d996635c8c 100644 --- a/Marlin/src/pins/mega/pins_CNCONTROLS_11.h +++ b/Marlin/src/pins/mega/pins_CNCONTROLS_11.h @@ -23,6 +23,9 @@ /** * CartesioV11 pin assignments + * Comes with an Arduino Mega, see + * https://web.archive.org/web/20171024190029/http://mauk.cc/mediawiki/index.php/Electronical_assembly + * ATmega2560, ATmega1280 */ #define ALLOW_MEGA1280 diff --git a/Marlin/src/pins/mega/pins_CNCONTROLS_12.h b/Marlin/src/pins/mega/pins_CNCONTROLS_12.h index 0aa0b59ca9..ea82fe429c 100644 --- a/Marlin/src/pins/mega/pins_CNCONTROLS_12.h +++ b/Marlin/src/pins/mega/pins_CNCONTROLS_12.h @@ -23,6 +23,9 @@ /** * CartesioV12 pin assignments + * Comes with an Arduino Mega, see + * https://web.archive.org/web/20171024190029/http://mauk.cc/mediawiki/index.php/Electronical_assembly + * ATmega2560, ATmega1280 */ #define ALLOW_MEGA1280 diff --git a/Marlin/src/pins/mega/pins_CNCONTROLS_15.h b/Marlin/src/pins/mega/pins_CNCONTROLS_15.h index 6de3b7172e..c77e711f9c 100644 --- a/Marlin/src/pins/mega/pins_CNCONTROLS_15.h +++ b/Marlin/src/pins/mega/pins_CNCONTROLS_15.h @@ -23,6 +23,7 @@ /** * CNControls V15 for HMS434 pin assignments + * ATmega2560, ATmega1280 */ #define ALLOW_MEGA1280 diff --git a/Marlin/src/pins/mega/pins_EINSTART-S.h b/Marlin/src/pins/mega/pins_EINSTART-S.h index c8cbee6740..274684f337 100644 --- a/Marlin/src/pins/mega/pins_EINSTART-S.h +++ b/Marlin/src/pins/mega/pins_EINSTART-S.h @@ -23,6 +23,7 @@ /** * Einstart-S pin assignments + * ATmega2560, ATmega1280 * PCB Silkscreen: 3DPrinterCon_v3.5 */ diff --git a/Marlin/src/pins/mega/pins_ELEFU_3.h b/Marlin/src/pins/mega/pins_ELEFU_3.h index f5e146cff9..6cf9e1b4e1 100644 --- a/Marlin/src/pins/mega/pins_ELEFU_3.h +++ b/Marlin/src/pins/mega/pins_ELEFU_3.h @@ -23,6 +23,9 @@ /** * Elefu RA Board Pin Assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Elefu%20Ra%20v3/schematic.pdf + * Origin: https://github.com/kiyoshigawa/Elefu-RAv3/blob/master/RA_Circuits.zip + * ATmega2560 */ #include "env_validate.h" diff --git a/Marlin/src/pins/mega/pins_GT2560_REV_A.h b/Marlin/src/pins/mega/pins_GT2560_REV_A.h index 99e8704ea5..bb251dfb4e 100644 --- a/Marlin/src/pins/mega/pins_GT2560_REV_A.h +++ b/Marlin/src/pins/mega/pins_GT2560_REV_A.h @@ -25,6 +25,9 @@ * Geeetech GT2560 Revision A board pin assignments, based on the work of * George Robles (https://georges3dprinters.com) and * Richard Smith + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Geeetech%20GT2560%20Revision%20A/GT2560_sch.pdf + * Origin: https://www.geeetech.com/wiki/images/9/90/GT2560_sch.pdf + * ATmega2560 */ #define ALLOW_MEGA1280 diff --git a/Marlin/src/pins/mega/pins_GT2560_REV_A_PLUS.h b/Marlin/src/pins/mega/pins_GT2560_REV_A_PLUS.h index 7e2ce20c67..a982a0e00e 100644 --- a/Marlin/src/pins/mega/pins_GT2560_REV_A_PLUS.h +++ b/Marlin/src/pins/mega/pins_GT2560_REV_A_PLUS.h @@ -23,6 +23,9 @@ /** * Geeetech GT2560 Revision A+ board pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Geeetech%20GT2560%20Revision%20A+/Hardware_GT2560_RevA+.pdf + * Origin: https://www.geeetech.com/wiki/images/d/d3/Hardware_GT2560_RevA%2B.pdf + * ATmega2560 */ #define BOARD_INFO_NAME "GT2560 Rev.A+" diff --git a/Marlin/src/pins/mega/pins_GT2560_REV_B.h b/Marlin/src/pins/mega/pins_GT2560_REV_B.h index be71ec4902..0702d14eb8 100644 --- a/Marlin/src/pins/mega/pins_GT2560_REV_B.h +++ b/Marlin/src/pins/mega/pins_GT2560_REV_B.h @@ -23,6 +23,9 @@ /** * Geeetech GT2560 Rev B Pins + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Geeetech%20GT2560%20Rev%20B/GT2560_REVB.pdf + * Origin: https://www.geeetech.com/wiki/images/7/72/GT2560_REVB.pdf + * ATmega2560 */ #define BOARD_INFO_NAME "GT2560 Rev B" diff --git a/Marlin/src/pins/mega/pins_GT2560_V3.h b/Marlin/src/pins/mega/pins_GT2560_V3.h index 46b4ebf428..5d2436b684 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V3.h +++ b/Marlin/src/pins/mega/pins_GT2560_V3.h @@ -23,6 +23,9 @@ /** * Geeetech GT2560 3.0/3.1 pin assignments + * Schematic (3.0): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Geeetech%20GT2560%203.0/GT2560_V3.0_SCH.pdf + * Origin (3.0): https://github.com/Geeetech3D/Diagram/blob/master/GT2560_V3.0_SCH.pdf + * ATmega2560 * * Also GT2560 RevB and GT2560 4.0/4.1 */ diff --git a/Marlin/src/pins/mega/pins_GT2560_V3_A20.h b/Marlin/src/pins/mega/pins_GT2560_V3_A20.h index c96431141c..628f897b0c 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V3_A20.h +++ b/Marlin/src/pins/mega/pins_GT2560_V3_A20.h @@ -23,6 +23,7 @@ /** * Geeetech A20M board pin assignments + * ATmega2560 */ #define LCD_PINS_RS 5 diff --git a/Marlin/src/pins/mega/pins_GT2560_V3_MC2.h b/Marlin/src/pins/mega/pins_GT2560_V3_MC2.h index e683d4dfda..70854c5716 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V3_MC2.h +++ b/Marlin/src/pins/mega/pins_GT2560_V3_MC2.h @@ -23,6 +23,7 @@ /** * Geeetech GT2560 V 3.0 board pin assignments (for Mecreator 2) + * ATmega2560 */ #define BOARD_INFO_NAME "GT2560 V3.0 (MC2)" diff --git a/Marlin/src/pins/mega/pins_GT2560_V4.h b/Marlin/src/pins/mega/pins_GT2560_V4.h index 6ac07b70bf..98f503886f 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V4.h +++ b/Marlin/src/pins/mega/pins_GT2560_V4.h @@ -23,6 +23,9 @@ /** * Geeetech GT2560 V4.X Pins + * Schematic (4.0): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Geeetech%20GT2560%20V4.x%20+%20A20/GT2560V4.0SCHA20T.pdf + * Schematic (4.1B): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Geeetech%20GT2560%20V4.x%20+%20A20/GT2560V4.1BSCHA20T.pdf + * Origin: https://www.geeetech.com/download.html?spm=a2g0s.imconversation.0.0.22d23e5fXlQBWv&download_id=45 */ #define BOARD_INFO_NAME "GT2560 4.x" diff --git a/Marlin/src/pins/mega/pins_GT2560_V4_A20.h b/Marlin/src/pins/mega/pins_GT2560_V4_A20.h index c87c11e175..8ca2d44db9 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V4_A20.h +++ b/Marlin/src/pins/mega/pins_GT2560_V4_A20.h @@ -23,6 +23,7 @@ /** * Geeetech A20 GT2560 V4.x board pin assignments + * ATmega2560 */ #define BOARD_INFO_NAME "GT2560 4.x" diff --git a/Marlin/src/pins/mega/pins_HJC2560C_REV2.h b/Marlin/src/pins/mega/pins_HJC2560C_REV2.h index 5c3b1dc9f6..1b3b7b29af 100644 --- a/Marlin/src/pins/mega/pins_HJC2560C_REV2.h +++ b/Marlin/src/pins/mega/pins_HJC2560C_REV2.h @@ -23,6 +23,7 @@ /** * Geeetech HJC2560-C Rev 2.x board pin assignments + * ATmega2560 */ #include "env_validate.h" diff --git a/Marlin/src/pins/mega/pins_INTAMSYS40.h b/Marlin/src/pins/mega/pins_INTAMSYS40.h index 2e2a9b85db..ec466fb09f 100644 --- a/Marlin/src/pins/mega/pins_INTAMSYS40.h +++ b/Marlin/src/pins/mega/pins_INTAMSYS40.h @@ -23,6 +23,7 @@ /** * Intamsys Funmat HT V4.0 Mainboard + * ATmega2560 * 4988 Drivers Tested * 2208 version exists and may or may not work */ diff --git a/Marlin/src/pins/mega/pins_LEAPFROG.h b/Marlin/src/pins/mega/pins_LEAPFROG.h index 4700fd6729..3762ea98f0 100644 --- a/Marlin/src/pins/mega/pins_LEAPFROG.h +++ b/Marlin/src/pins/mega/pins_LEAPFROG.h @@ -23,6 +23,7 @@ /** * Leapfrog Driver board pin assignments + * ATmega2560, ATmega1280 */ #define ALLOW_MEGA1280 diff --git a/Marlin/src/pins/mega/pins_LEAPFROG_XEED2015.h b/Marlin/src/pins/mega/pins_LEAPFROG_XEED2015.h index 4a32472949..7be96c5def 100644 --- a/Marlin/src/pins/mega/pins_LEAPFROG_XEED2015.h +++ b/Marlin/src/pins/mega/pins_LEAPFROG_XEED2015.h @@ -23,6 +23,7 @@ /** * Leapfrog Xeed Driver board pin assignments + * ATmega2560 * * This board is used by other Leapfrog printers in addition to the Xeed, * such as the Creatr HS and Bolt. The pin assignments vary wildly between diff --git a/Marlin/src/pins/mega/pins_MALYAN_M180.h b/Marlin/src/pins/mega/pins_MALYAN_M180.h index 19095a5379..3ef606de77 100644 --- a/Marlin/src/pins/mega/pins_MALYAN_M180.h +++ b/Marlin/src/pins/mega/pins_MALYAN_M180.h @@ -24,6 +24,8 @@ /** * Malyan M180 pin assignments * Contributed by Timo Birnschein (timo.birnschein@microforge.de) + * @Timo: sind diese Pin Definitionen immernoch korrekt? (Antwort an turningtides@outlook.de bitte) + * ATmega2560 */ #include "env_validate.h" diff --git a/Marlin/src/pins/mega/pins_MEGACONTROLLER.h b/Marlin/src/pins/mega/pins_MEGACONTROLLER.h index 7ebef6e281..f45da25f62 100644 --- a/Marlin/src/pins/mega/pins_MEGACONTROLLER.h +++ b/Marlin/src/pins/mega/pins_MEGACONTROLLER.h @@ -23,6 +23,9 @@ /** * Mega controller pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Mega%20Controller/Mega_controller.pdf + * Origin: https://reprap.org/mediawiki/images/b/ba/Mega_controller.pdf + * ATmega2560 */ #if HOTENDS > 2 || E_STEPPERS > 2 diff --git a/Marlin/src/pins/mega/pins_MEGATRONICS.h b/Marlin/src/pins/mega/pins_MEGATRONICS.h index ac0ba4eea6..a51615e3d9 100644 --- a/Marlin/src/pins/mega/pins_MEGATRONICS.h +++ b/Marlin/src/pins/mega/pins_MEGATRONICS.h @@ -23,6 +23,9 @@ /** * MegaTronics pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/MegaTronics/Megatronics_1_0_sch.pdf + * Origin: https://reprap.org/mediawiki/images/a/a3/Megatronics_1_0_sch.pdf + * ATmega2560 */ #include "env_validate.h" diff --git a/Marlin/src/pins/mega/pins_MEGATRONICS_2.h b/Marlin/src/pins/mega/pins_MEGATRONICS_2.h index e527035910..3f7afe562b 100644 --- a/Marlin/src/pins/mega/pins_MEGATRONICS_2.h +++ b/Marlin/src/pins/mega/pins_MEGATRONICS_2.h @@ -23,6 +23,9 @@ /** * MegaTronics v2.0 pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Megatronics%20v2.0/megatronics%20-%20Project.pdf + * Origin: https://reprap.org/wiki/File:Megatronicsv2PDF.zip + * ATmega2560 */ #include "env_validate.h" diff --git a/Marlin/src/pins/mega/pins_MEGATRONICS_3.h b/Marlin/src/pins/mega/pins_MEGATRONICS_3.h index 86aff16f92..b194c31b5d 100644 --- a/Marlin/src/pins/mega/pins_MEGATRONICS_3.h +++ b/Marlin/src/pins/mega/pins_MEGATRONICS_3.h @@ -23,6 +23,8 @@ /** * MegaTronics v3.0 / v3.1 / v3.2 pin assignments + * Schematic Origin: https://github.com/brupje/Megatronics_3/blob/master/Design%20Files/megatronics.sch + * ATmega2560 */ #include "env_validate.h" diff --git a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h index 0ef1c1d8ae..56f92f8b25 100644 --- a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h +++ b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h @@ -23,6 +23,8 @@ /** * Mightyboard Rev.E pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Mightyboard%20Rev.E/MakerBot%20MightyBoard%20REVE%20Schematic.pdf + * Origin: https://github.com/sciguy14/HelioWatcher/blob/master/HelioWatcher%20Circuit/MakerBot%20MightyBoard%20REVE%20Schematic.pdf * also works for Rev D boards. It's all rev E despite what the silk screen says */ diff --git a/Marlin/src/pins/mega/pins_MINITRONICS.h b/Marlin/src/pins/mega/pins_MINITRONICS.h index ec712a3b90..ddf6d2047d 100644 --- a/Marlin/src/pins/mega/pins_MINITRONICS.h +++ b/Marlin/src/pins/mega/pins_MINITRONICS.h @@ -23,6 +23,11 @@ /** * Minitronics v1.0/1.1 pin assignments + * Schematic (1.0): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Minitronics%20v1.0/minitronics%20-%20Project.pdf + * Origin (1.0): https://reprap.org/wiki/File:MinitronicsPDF.zip + * Datasheet (1.1): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Minitronics%20v1.1/datasheet%20minitronics%20v1.1.pdf + * Origin (1.1): https://reprapworld.nl/documentation/datasheet%20minitronics%20v1.1.pdf + * ATmega1281 */ /** diff --git a/Marlin/src/pins/mega/pins_OVERLORD.h b/Marlin/src/pins/mega/pins_OVERLORD.h index 49accf9f7c..01c02dafe2 100644 --- a/Marlin/src/pins/mega/pins_OVERLORD.h +++ b/Marlin/src/pins/mega/pins_OVERLORD.h @@ -23,6 +23,9 @@ /** * Dreammaker Overlord v1.1 pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Dreammaker%20Overlord%20v1.1/Schematic.pdf + * Origin: https://github.com/jdpiercy/Overlord-Pro/blob/master/Motherboard/Schematic.pdf + * ATmega2560 */ #if HOTENDS > 2 || E_STEPPERS > 2 diff --git a/Marlin/src/pins/mega/pins_PICA.h b/Marlin/src/pins/mega/pins_PICA.h index 0e29d8dffe..109859388c 100644 --- a/Marlin/src/pins/mega/pins_PICA.h +++ b/Marlin/src/pins/mega/pins_PICA.h @@ -23,6 +23,9 @@ /** * Arduino Mega with PICA pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/PICA/pica_schematic.pdf + * Origin: https://github.com/mjrice/PICA/blob/master/pica_schematic.pdf + * ATmega2560 * * PICA is Power, Interface, and Control Adapter and is open source hardware. * See https://github.com/mjrice/PICA for schematics etc. diff --git a/Marlin/src/pins/mega/pins_PICAOLD.h b/Marlin/src/pins/mega/pins_PICAOLD.h index e19ea744e5..961462fc52 100644 --- a/Marlin/src/pins/mega/pins_PICAOLD.h +++ b/Marlin/src/pins/mega/pins_PICAOLD.h @@ -21,6 +21,10 @@ */ #pragma once +// Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/PICAOLD/pica_schematic.pdf +// Origin: https://github.com/mjrice/PICA/blob/97ab9e7771a8e5eef97788f3adcc17a9fa9de9b9/pica_schematic.pdf +// ATmega2560 + #define HEATER_0_PIN 9 // E0 #define HEATER_1_PIN 10 // E1 #define FAN_PIN 11 diff --git a/Marlin/src/pins/mega/pins_PROTONEER_CNC_SHIELD_V3.h b/Marlin/src/pins/mega/pins_PROTONEER_CNC_SHIELD_V3.h index 88d549c8cb..962fddc192 100644 --- a/Marlin/src/pins/mega/pins_PROTONEER_CNC_SHIELD_V3.h +++ b/Marlin/src/pins/mega/pins_PROTONEER_CNC_SHIELD_V3.h @@ -23,6 +23,9 @@ /** * Protoneer v3.00 pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Protoneer%20CNC%20Shield%20v3.00/Arduino-CNC-Shield-Scematics-V3.XX_.webp + * Origin: https://i0.wp.com/blog.protoneer.co.nz/wp-content/uploads/2013/07/Arduino-CNC-Shield-Scematics-V3.XX_.jpg + * ATmega2560 * * This CNC shield has an UNO pinout and fits all Arduino-compatibles. * diff --git a/Marlin/src/pins/mega/pins_SILVER_GATE.h b/Marlin/src/pins/mega/pins_SILVER_GATE.h index 4568ed04e2..6dc0c3963f 100644 --- a/Marlin/src/pins/mega/pins_SILVER_GATE.h +++ b/Marlin/src/pins/mega/pins_SILVER_GATE.h @@ -21,6 +21,8 @@ */ #pragma once +// ATmega2561 + #if NOT_TARGET(__AVR_ATmega1281__, __AVR_ATmega2561__) #error "Oops! Select 'Silvergate' in 'Tools > Board.'" #endif diff --git a/Marlin/src/pins/mega/pins_WANHAO_ONEPLUS.h b/Marlin/src/pins/mega/pins_WANHAO_ONEPLUS.h index 503dd9ec81..6ab6c4ceb9 100644 --- a/Marlin/src/pins/mega/pins_WANHAO_ONEPLUS.h +++ b/Marlin/src/pins/mega/pins_WANHAO_ONEPLUS.h @@ -23,6 +23,7 @@ /** * Wanhao 0ne+ pin assignments + * ATmega2560 */ #include "env_validate.h" diff --git a/Marlin/src/pins/mega/pins_WEEDO_62A.h b/Marlin/src/pins/mega/pins_WEEDO_62A.h index 4b3bf6a43b..4165d9e234 100644 --- a/Marlin/src/pins/mega/pins_WEEDO_62A.h +++ b/Marlin/src/pins/mega/pins_WEEDO_62A.h @@ -23,6 +23,7 @@ /** * Based on WEEDO 62A pin configuration * Copyright (c) 2019 WEEDO3D Perron + * ATmega2560 */ #pragma once diff --git a/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h index de9ecc5b45..c28fbd059c 100644 --- a/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h +++ b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h @@ -23,6 +23,8 @@ /** * Einsy-Rambo pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Einsy-Rambo/Schematic%20Prints_Einsy%20Rambo_1.1a.PDF + * Origin: https://github.com/ultimachine/Einsy-Rambo/blob/1.1a/board/Project%20Outputs/Schematic%20Prints_Einsy%20Rambo_1.1a.PDF */ #include "env_validate.h" diff --git a/Marlin/src/pins/rambo/pins_EINSY_RETRO.h b/Marlin/src/pins/rambo/pins_EINSY_RETRO.h index 413eb8c98c..dc91c47e9a 100644 --- a/Marlin/src/pins/rambo/pins_EINSY_RETRO.h +++ b/Marlin/src/pins/rambo/pins_EINSY_RETRO.h @@ -23,6 +23,10 @@ /** * Einsy-Retro pin assignments + * Schematic (1.0b): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Einsy-Retro/Schematic%20Prints_EinsyRetro_1.0b.PDF + * Origin (1.0b): https://github.com/ultimachine/EinsyRetro/blob/master/board/Project%20Outputs/Schematic%20Prints_EinsyRetro_1.0b.PDF + * Schematic (1.0c): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Einsy-Retro/Schematic%20Prints_EinsyRetro_1.0c.PDF + * Origin (1.0c): https://github.com/ultimachine/EinsyRetro/blob/master/board/Project%20Outputs/Schematic%20Prints_EinsyRetro_1.0c.PDF */ #include "env_validate.h" diff --git a/Marlin/src/pins/rambo/pins_MINIRAMBO.h b/Marlin/src/pins/rambo/pins_MINIRAMBO.h index 31d44f2b34..353fbd6641 100644 --- a/Marlin/src/pins/rambo/pins_MINIRAMBO.h +++ b/Marlin/src/pins/rambo/pins_MINIRAMBO.h @@ -23,6 +23,10 @@ /** * Mini-RAMBo pin assignments + * Schematic (1.3a): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Mini%20RAMBo/Mini-Rambo.PDF + * Origin (1.3a): https://github.com/ultimachine/Mini-Rambo/blob/1.3a/board/Project%20Outputs%20for%20Mini-Rambo/Mini-Rambo.PDF + * Schematic (1.0a): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Mini%20RAMBo%201.0a/Mini-Rambo.PDF + * Origin (1.0a): https://github.com/ultimachine/Mini-Rambo/blob/v1.1b/board/Project%20Outputs%20for%20Mini-Rambo/Mini-Rambo.PDF */ #include "env_validate.h" diff --git a/Marlin/src/pins/rambo/pins_RAMBO.h b/Marlin/src/pins/rambo/pins_RAMBO.h index cb7a059134..3a26811538 100644 --- a/Marlin/src/pins/rambo/pins_RAMBO.h +++ b/Marlin/src/pins/rambo/pins_RAMBO.h @@ -39,6 +39,8 @@ /** * Rambo pin assignments + * Schematic (1.1b): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMBo/Rambo1-1-schematic.png + * Origin (1.1b): https://www.reprap.org/wiki/File:Rambo1-1-schematic.png */ #include "env_validate.h" diff --git a/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h b/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h index 533284a4bf..ca073f5ab9 100644 --- a/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h +++ b/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h @@ -25,7 +25,7 @@ * Rambo pin assignments MODIFIED FOR Scoovo X9H ************************************************/ -#include "env_target.h" +#include "env_validate.h" #define BOARD_INFO_NAME "Scoovo X9H" diff --git a/Marlin/src/pins/ramps/pins_3DRAG.h b/Marlin/src/pins/ramps/pins_3DRAG.h index 0f90dd5a34..c14284865b 100644 --- a/Marlin/src/pins/ramps/pins_3DRAG.h +++ b/Marlin/src/pins/ramps/pins_3DRAG.h @@ -23,6 +23,10 @@ /** * 3DRAG (and K8200 / K8400) Arduino Mega with RAMPS v1.4 pin assignments + * This may be compatible with the standalone Controller variant. + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/3DRAG%20+%20Controller/Schema_base.jpg + * Origin: https://reprap.org/wiki/File:Schema_base.jpg + * ATmega2560, ATmega1280 */ #ifndef BOARD_INFO_NAME diff --git a/Marlin/src/pins/ramps/pins_AZTEEG_X3.h b/Marlin/src/pins/ramps/pins_AZTEEG_X3.h index 31adea4270..4d3722655d 100644 --- a/Marlin/src/pins/ramps/pins_AZTEEG_X3.h +++ b/Marlin/src/pins/ramps/pins_AZTEEG_X3.h @@ -23,6 +23,9 @@ /** * AZTEEG_X3 Arduino Mega with RAMPS v1.4 pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/AZTEEG_X3/AZTEEG%20X3%20PUB%20v1.12.pdf + * Origin: http://files.panucatt.com/datasheets/azteegx3_designfiles.zip + * ATmega2560 */ #define REQUIRE_MEGA2560 diff --git a/Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h b/Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h index 24266bb9d2..2c666a6f16 100644 --- a/Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h +++ b/Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h @@ -23,6 +23,9 @@ /** * AZTEEG_X3_PRO (Arduino Mega) pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/AZTEEG_X3_PRO/AZTEEG%20X3%20PRO%201.0%20PUB.pdf + * Origin: http://files.panucatt.com/datasheets/x3pro_sch_v1.0.zip + * ATmega2560 */ #define REQUIRE_MEGA2560 diff --git a/Marlin/src/pins/ramps/pins_BAM_DICE_DUE.h b/Marlin/src/pins/ramps/pins_BAM_DICE_DUE.h index fa622ffb15..f3439aa6bb 100644 --- a/Marlin/src/pins/ramps/pins_BAM_DICE_DUE.h +++ b/Marlin/src/pins/ramps/pins_BAM_DICE_DUE.h @@ -23,6 +23,9 @@ /** * BAM&DICE Due (Arduino Mega) pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/BAM&DICE%20Due/2PRINTBETA-BAM&DICE-DUE-V1.1-sch.pdf + * Origin: http://www.2printbeta.de/download/2PRINTBETA-BAM&DICE-DUE-V1.1-sch.pdf + * ATmega2560, ATmega1280 */ #if HOTENDS > 2 || E_STEPPERS > 2 diff --git a/Marlin/src/pins/ramps/pins_BIQU_KFB_2.h b/Marlin/src/pins/ramps/pins_BIQU_KFB_2.h index 58a62fb8bc..6155e9842a 100644 --- a/Marlin/src/pins/ramps/pins_BIQU_KFB_2.h +++ b/Marlin/src/pins/ramps/pins_BIQU_KFB_2.h @@ -23,6 +23,7 @@ /** * KFB 2.0 – Arduino Mega2560 with RAMPS v1.4 pin assignments + * ATmega2560 */ #if HOTENDS > 2 || E_STEPPERS > 2 diff --git a/Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h b/Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h index 4a54b85ae0..cd3ada25bf 100644 --- a/Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h +++ b/Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h @@ -23,6 +23,9 @@ /** * bq ZUM Mega 3D board definition + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/bq%20ZUM%20Mega%203D/Zum%20Mega%203D.PDF + * Origin: https://github.com/bq/zum/blob/master/zum-mega3d/Zum%20Mega%203D.PDF + * ATmega2560 */ #define REQUIRE_MEGA2560 diff --git a/Marlin/src/pins/ramps/pins_COPYMASTER_3D.h b/Marlin/src/pins/ramps/pins_COPYMASTER_3D.h index 020941027a..1285d0244c 100644 --- a/Marlin/src/pins/ramps/pins_COPYMASTER_3D.h +++ b/Marlin/src/pins/ramps/pins_COPYMASTER_3D.h @@ -21,6 +21,8 @@ */ #pragma once +// ATmega2560 + #define BOARD_INFO_NAME "Copymaster 3D RAMPS" #define Z_STEP_PIN 47 diff --git a/Marlin/src/pins/ramps/pins_DAGOMA_F5.h b/Marlin/src/pins/ramps/pins_DAGOMA_F5.h index e1bd2ec4ed..9760ccbef5 100644 --- a/Marlin/src/pins/ramps/pins_DAGOMA_F5.h +++ b/Marlin/src/pins/ramps/pins_DAGOMA_F5.h @@ -21,6 +21,8 @@ */ #pragma once +// ATmega2560 + #if HOTENDS > 2 || E_STEPPERS > 2 #error "Dagoma3D F5 supports up to 2 hotends / E steppers." #endif diff --git a/Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h b/Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h index 1a4b83f02d..7e370a398b 100644 --- a/Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h +++ b/Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h @@ -23,6 +23,7 @@ /** * Wanhao Duplicator i3 Plus pin assignments + * ATmega2560 */ #define REQUIRE_MEGA2560 diff --git a/Marlin/src/pins/ramps/pins_FELIX2.h b/Marlin/src/pins/ramps/pins_FELIX2.h index 3e7849d71f..48ef896e96 100644 --- a/Marlin/src/pins/ramps/pins_FELIX2.h +++ b/Marlin/src/pins/ramps/pins_FELIX2.h @@ -23,6 +23,7 @@ /** * FELIXprinters v2.0/3.0 (RAMPS v1.4) pin assignments + * ATmega2560, ATmega1280 */ #if HOTENDS > 2 || E_STEPPERS > 2 diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h index a6791ff7c8..7bed4c0884 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h @@ -23,6 +23,7 @@ /** * Formbot Raptor pin assignments + * ATmega2560 */ #define REQUIRE_MEGA2560 diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h index 4fb10bfd35..f0e86ac4a7 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h @@ -23,6 +23,7 @@ /** * Formbot Raptor 2 pin assignments + * ATmega2560 */ #define BOARD_INFO_NAME "Formbot Raptor2" diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h b/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h index 17d3abc71f..a5ca7e8607 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h @@ -22,7 +22,8 @@ #pragma once /** - * Formbot pin assignments + * Formbot T-Rex 2+ pin assignments + * ATmega2560 */ #define REQUIRE_MEGA2560 diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h b/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h index e23a63994f..2fa3d60f67 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h @@ -22,7 +22,8 @@ #pragma once /** - * Formbot pin assignments + * Formbot T-Rex 3 pin assignments + * ATmega2560 */ #define REQUIRE_MEGA2560 diff --git a/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h b/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h index b8de260909..9f23647c42 100644 --- a/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h +++ b/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h @@ -23,6 +23,9 @@ // // FYSETC F6 1.3 (and 1.4) pin assignments +// Schematic (1.3): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/FYSETC%20F6%201.3/F6_V13.pdf +// Origin: https://github.com/FYSETC/FYSETC-F6/blob/master/Hardware/V1.3/F6_V13.pdf +// ATmega2560 // #if NOT_TARGET(__AVR_ATmega2560__) diff --git a/Marlin/src/pins/ramps/pins_FYSETC_F6_14.h b/Marlin/src/pins/ramps/pins_FYSETC_F6_14.h index 1fc24154b7..9604d0ecbf 100644 --- a/Marlin/src/pins/ramps/pins_FYSETC_F6_14.h +++ b/Marlin/src/pins/ramps/pins_FYSETC_F6_14.h @@ -23,6 +23,9 @@ // // FYSETC F6 v1.4 pin assignments +// Schematic (1.4): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/FYSETC%20F6%20v1.4/F6%20V1.4%20Sch.pdf +// Origin (1.4): https://github.com/FYSETC/FYSETC-F6/blob/master/Hardware/V1.4/F6%20V1.4%20Sch.pdf +// ATmega2560 // #define BOARD_INFO_NAME "FYSETC F6 1.4" diff --git a/Marlin/src/pins/ramps/pins_K8200.h b/Marlin/src/pins/ramps/pins_K8200.h index 395e1ccca5..d2557b26c3 100644 --- a/Marlin/src/pins/ramps/pins_K8200.h +++ b/Marlin/src/pins/ramps/pins_K8200.h @@ -24,6 +24,9 @@ /** * K8200 Arduino Mega with RAMPS v1.3 pin assignments * Identical to 3DRAG + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/Velleman%20K8200/K8200diagram.jpg + * Origin: https://www.velleman.eu/images/tmp/K8200diagram.jpg + * ATmega2560 */ #define BOARD_INFO_NAME "Velleman K8200" diff --git a/Marlin/src/pins/ramps/pins_K8400.h b/Marlin/src/pins/ramps/pins_K8400.h index 22ac1be8ab..56ec66191b 100644 --- a/Marlin/src/pins/ramps/pins_K8400.h +++ b/Marlin/src/pins/ramps/pins_K8400.h @@ -24,6 +24,9 @@ /** * Velleman K8400 (Vertex) * 3DRAG clone + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/Velleman%20K8400/k8400-schema-electronique.jpg + * Origin: https://filimprimante3d.fr/documents/k8400-schema-electronique.jpg + * ATmega2560, ATmega1280 * * K8400 has some minor differences over a normal 3Drag: * - No X/Y max endstops diff --git a/Marlin/src/pins/ramps/pins_K8600.h b/Marlin/src/pins/ramps/pins_K8600.h index e4468a6098..3081b04361 100644 --- a/Marlin/src/pins/ramps/pins_K8600.h +++ b/Marlin/src/pins/ramps/pins_K8600.h @@ -23,6 +23,7 @@ /** * VERTEX NANO Arduino Mega with RAMPS EFB v1.4 pin assignments. + * ATmega2560, ATmega1280 */ #if HAS_MULTI_HOTEND diff --git a/Marlin/src/pins/ramps/pins_K8800.h b/Marlin/src/pins/ramps/pins_K8800.h index 17bb59fdc9..a9669764ce 100644 --- a/Marlin/src/pins/ramps/pins_K8800.h +++ b/Marlin/src/pins/ramps/pins_K8800.h @@ -23,6 +23,9 @@ /** * Velleman K8800 (Vertex) + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/Velleman%20K8800/K8800-schematic-V1.4.pdf + * Origin: https://www.velleman.eu/downloads/files/vertex-delta/schematics/K8800-schematic-V1.4.pdf + * ATmega2560, ATmega1280 */ #include "env_validate.h" diff --git a/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h b/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h index 51f9cd8038..d9759153c3 100644 --- a/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h +++ b/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h @@ -23,6 +23,7 @@ /** * Longer3D LK1/LK4/LK5 Pro board pin assignments + * ATmega2560 */ #define REQUIRE_MEGA2560 diff --git a/Marlin/src/pins/ramps/pins_MAKEBOARD_MINI.h b/Marlin/src/pins/ramps/pins_MAKEBOARD_MINI.h index a42dba874f..2ab463d681 100644 --- a/Marlin/src/pins/ramps/pins_MAKEBOARD_MINI.h +++ b/Marlin/src/pins/ramps/pins_MAKEBOARD_MINI.h @@ -21,6 +21,8 @@ */ #pragma once +// ATmega2560 + #define BOARD_INFO_NAME "MAKEboard Mini" // diff --git a/Marlin/src/pins/ramps/pins_MKS_BASE_10.h b/Marlin/src/pins/ramps/pins_MKS_BASE_10.h index 64efa46c05..8d46ac36fa 100644 --- a/Marlin/src/pins/ramps/pins_MKS_BASE_10.h +++ b/Marlin/src/pins/ramps/pins_MKS_BASE_10.h @@ -23,6 +23,12 @@ /** * MKS BASE 1.0 – Arduino Mega2560 with RAMPS v1.4 pin assignments + * Schematics: + * - https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/MKS%20BASE%201.0/PAGE1.pdf + * - https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/MKS%20BASE%201.0/PAGE2.pdf + * - https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/MKS%20BASE%201.0/PAGE3.pdf + * Origin: https://reprap.org/wiki/File:MKS_Base_V1.0_source.zip + * ATmega2560 * * Rev B - Override pin definitions for CASE_LIGHT and M3/M4/M5 spindle control */ diff --git a/Marlin/src/pins/ramps/pins_MKS_BASE_14.h b/Marlin/src/pins/ramps/pins_MKS_BASE_14.h index 7e2a722cf2..d302def795 100644 --- a/Marlin/src/pins/ramps/pins_MKS_BASE_14.h +++ b/Marlin/src/pins/ramps/pins_MKS_BASE_14.h @@ -23,6 +23,7 @@ /** * MKS BASE v1.4 with A4982 stepper drivers and digital micro-stepping + * ATmega2560 */ #if HOTENDS > 2 || E_STEPPERS > 2 diff --git a/Marlin/src/pins/ramps/pins_MKS_BASE_15.h b/Marlin/src/pins/ramps/pins_MKS_BASE_15.h index 5fedd3f97c..1d93ec5cf9 100644 --- a/Marlin/src/pins/ramps/pins_MKS_BASE_15.h +++ b/Marlin/src/pins/ramps/pins_MKS_BASE_15.h @@ -23,6 +23,7 @@ /** * MKS BASE v1.5 with A4982 stepper drivers and digital micro-stepping + * ATmega2560 */ #if HOTENDS > 2 || E_STEPPERS > 2 diff --git a/Marlin/src/pins/ramps/pins_MKS_BASE_16.h b/Marlin/src/pins/ramps/pins_MKS_BASE_16.h index 63e0b51d3c..765a601fd0 100644 --- a/Marlin/src/pins/ramps/pins_MKS_BASE_16.h +++ b/Marlin/src/pins/ramps/pins_MKS_BASE_16.h @@ -23,6 +23,9 @@ /** * MKS BASE v1.6 with A4982 stepper drivers and digital micro-stepping + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/MKS%20BASE%201.6/MKS%20Base%20V1.6_004%20SCH.pdf + * Origin: https://github.com/makerbase-mks/MKS-BASE/blob/master/hardware/MKS%20Base%20V1.6_004/MKS%20Base%20V1.6_004%20SCH.pdf + * ATmega2560 */ #if HOTENDS > 2 || E_STEPPERS > 2 diff --git a/Marlin/src/pins/ramps/pins_MKS_BASE_HEROIC.h b/Marlin/src/pins/ramps/pins_MKS_BASE_HEROIC.h index 973f924e7c..c50f28a407 100644 --- a/Marlin/src/pins/ramps/pins_MKS_BASE_HEROIC.h +++ b/Marlin/src/pins/ramps/pins_MKS_BASE_HEROIC.h @@ -23,6 +23,7 @@ /** * MKS BASE with Heroic HR4982 stepper drivers + * ATmega2560 */ #include "pins_MKS_BASE_15.h" // ... MKS_BASE_common ... RAMPS diff --git a/Marlin/src/pins/ramps/pins_MKS_BASE_common.h b/Marlin/src/pins/ramps/pins_MKS_BASE_common.h index 9047a4bcf0..7608745a4b 100644 --- a/Marlin/src/pins/ramps/pins_MKS_BASE_common.h +++ b/Marlin/src/pins/ramps/pins_MKS_BASE_common.h @@ -23,6 +23,7 @@ /** * MKS BASE – Arduino Mega2560 with RAMPS pin assignments + * ATmega2560 */ #ifndef BOARD_INFO_NAME diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_13.h b/Marlin/src/pins/ramps/pins_MKS_GEN_13.h index 1e354a10dc..5c13288f85 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_13.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_13.h @@ -23,6 +23,9 @@ /** * Arduino Mega with RAMPS v1.4 adjusted pin assignments + * Schematic (1.4): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/MKS%20GEN%20v1.4/MKS%20GEN%20V1.4_004%20SCH.pdf + * Origin (1.4): https://github.com/makerbase-mks/MKS-GEN/blob/master/hardware/MKS%20GEN%20V1.4_004/MKS%20GEN%20V1.4_004%20SCH.pdf + * ATmega2560, ATmega1280 * * MKS GEN v1.3 (Extruder, Fan, Bed) * MKS GEN v1.3 (Extruder, Extruder, Fan, Bed) diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_L.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L.h index dd7f8e5f86..c610fc6206 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_L.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_L.h @@ -23,6 +23,9 @@ /** * MKS GEN L – Arduino Mega2560 with RAMPS v1.4 pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/MKS%20GEN%20L%20v1.0/MKS%20Gen_L%20V1.0_008%20SCH.pdf + * Origin: https://github.com/makerbase-mks/MKS-GEN_L/blob/master/hardware/MKS%20Gen_L%20V1.0_008/MKS%20Gen_L%20V1.0_008%20SCH.pdf + * ATmega2560, ATmega1280 */ #if HOTENDS > 2 || E_STEPPERS > 2 diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h index 0378b166a2..d82c4353fd 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h @@ -23,6 +23,9 @@ /** * MKS GEN L V2 – Arduino Mega2560 with RAMPS v1.4 pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/MKS%20GEN%20L%20V2.0/MKS%20Gen_L%20V2.0_001%20SCH.pdf + * Origin: https://github.com/makerbase-mks/MKS-GEN_L/blob/master/hardware/MKS%20Gen_L%20V2.0_001/MKS%20Gen_L%20V2.0_001%20SCH.pdf + * ATmega2560 */ #if HOTENDS > 2 || E_STEPPERS > 2 diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h index d508cb453f..c2ab34c825 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h @@ -23,6 +23,9 @@ /** * MKS GEN L V2 – Arduino Mega2560 with RAMPS v1.4 pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/MKS%20GEN%20L%20V2.1/MKS%20GEN_L%20V2.1_001%20SCH.pdf + * Origin: https://github.com/makerbase-mks/MKS-GEN_L/blob/master/hardware/MKS%20Gen_L%20V2.1_001/MKS%20GEN_L%20V2.1_001%20SCH.pdf + * ATmega2560 */ #if HOTENDS > 2 || E_STEPPERS > 2 diff --git a/Marlin/src/pins/ramps/pins_ORTUR_4.h b/Marlin/src/pins/ramps/pins_ORTUR_4.h index e47bae1915..7f0fe93084 100644 --- a/Marlin/src/pins/ramps/pins_ORTUR_4.h +++ b/Marlin/src/pins/ramps/pins_ORTUR_4.h @@ -23,6 +23,7 @@ /** * Ortur 4 Arduino Mega based on RAMPS v1.4 pin assignments + * ATmega2560 */ #define BOARD_INFO_NAME "Ortur 4.3" diff --git a/Marlin/src/pins/ramps/pins_PXMALION_CORE_I3.h b/Marlin/src/pins/ramps/pins_PXMALION_CORE_I3.h index 12c40c7dca..ee0633992e 100644 --- a/Marlin/src/pins/ramps/pins_PXMALION_CORE_I3.h +++ b/Marlin/src/pins/ramps/pins_PXMALION_CORE_I3.h @@ -22,6 +22,7 @@ /** * Pxmalion Core i3 - https://github.com/Pxmalion + * ATmega2560 */ #include "env_validate.h" diff --git a/Marlin/src/pins/ramps/pins_RAMPS.h b/Marlin/src/pins/ramps/pins_RAMPS.h index 43780d8d27..08d6475c5e 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS.h +++ b/Marlin/src/pins/ramps/pins_RAMPS.h @@ -23,6 +23,7 @@ /** * Arduino Mega with RAMPS v1.4 (or v1.3) pin assignments + * ATmega2560, ATmega1280 * * Applies to the following boards: * diff --git a/Marlin/src/pins/ramps/pins_RAMPS_13.h b/Marlin/src/pins/ramps/pins_RAMPS_13.h index 6e7c8cbab5..026492e4a8 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_13.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_13.h @@ -23,6 +23,7 @@ /** * Arduino Mega with RAMPS v1.3 pin assignments + * ATmega2560, ATmega1280 * * Applies to the following boards: * diff --git a/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h b/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h index 3d5f5d6f91..5e4366e259 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h @@ -21,6 +21,8 @@ */ #pragma once +// ATmega2560 + #if HOTENDS > 2 || E_STEPPERS > 2 #error "Creality RAMPS supports up to 2 hotends / E steppers." #endif diff --git a/Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h b/Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h index 8f9148b732..3ffa940c48 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h @@ -21,6 +21,8 @@ */ #pragma once +// ATmega2560 + #if HAS_MULTI_HOTEND || E_STEPPERS > 1 #error "Ender-4 only supports 1 hotend / E stepper." #endif diff --git a/Marlin/src/pins/ramps/pins_RAMPS_OLD.h b/Marlin/src/pins/ramps/pins_RAMPS_OLD.h index 9747666235..526045c155 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_OLD.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_OLD.h @@ -23,6 +23,7 @@ /** * Arduino Mega with RAMPS v1.0, v1.1, v1.2 pin assignments + * ATmega2560, ATmega1280 */ #include "env_validate.h" diff --git a/Marlin/src/pins/ramps/pins_RAMPS_PLUS.h b/Marlin/src/pins/ramps/pins_RAMPS_PLUS.h index 8ccb14c866..f93c6919d9 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_PLUS.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_PLUS.h @@ -23,6 +23,7 @@ /** * Arduino Mega with RAMPS v1.4Plus, also known as 3DYMY version, pin assignments + * ATmega2560, ATmega1280 * * Applies to the following boards: * diff --git a/Marlin/src/pins/ramps/pins_RAMPS_S_12.h b/Marlin/src/pins/ramps/pins_RAMPS_S_12.h index 8d6a1d337e..e74480a0d4 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_S_12.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_S_12.h @@ -24,6 +24,7 @@ /** * Arduino Mega with RAMPS-S v1.2 by Sakul.cz pin assignments * Written by Michal Rábek + * ATmega2560 * * Applies to the following boards: * diff --git a/Marlin/src/pins/ramps/pins_RIGIDBOARD.h b/Marlin/src/pins/ramps/pins_RIGIDBOARD.h index 273e0274a8..d1824d3813 100644 --- a/Marlin/src/pins/ramps/pins_RIGIDBOARD.h +++ b/Marlin/src/pins/ramps/pins_RIGIDBOARD.h @@ -23,6 +23,7 @@ /** * RIGIDBOARD Arduino Mega with RAMPS v1.4 pin assignments + * ATmega2560, ATmega1280 */ #ifndef BOARD_INFO_NAME diff --git a/Marlin/src/pins/ramps/pins_RIGIDBOARD_V2.h b/Marlin/src/pins/ramps/pins_RIGIDBOARD_V2.h index 8242f1a772..dc27378a15 100644 --- a/Marlin/src/pins/ramps/pins_RIGIDBOARD_V2.h +++ b/Marlin/src/pins/ramps/pins_RIGIDBOARD_V2.h @@ -23,6 +23,7 @@ /** * RIGIDBOARD V2 Arduino Mega with RAMPS v1.4 pin assignments + * ATmega2560, ATmega1280 */ #define BOARD_INFO_NAME "RigidBoard V2" diff --git a/Marlin/src/pins/ramps/pins_RL200.h b/Marlin/src/pins/ramps/pins_RL200.h index 00fb39a439..219a3a525d 100644 --- a/Marlin/src/pins/ramps/pins_RL200.h +++ b/Marlin/src/pins/ramps/pins_RL200.h @@ -24,6 +24,7 @@ /** * Rapide Lite 200 v1 (RUMBA clone) pin assignments. Has slightly different assignment for * extruder motors due to dual Z motors. Pinout therefore based on pins_RUMBA.h. + * ATmega2560 */ #define BOARD_INFO_NAME "RL200" diff --git a/Marlin/src/pins/ramps/pins_RUMBA.h b/Marlin/src/pins/ramps/pins_RUMBA.h index eb049c48dd..6b1f4c5691 100644 --- a/Marlin/src/pins/ramps/pins_RUMBA.h +++ b/Marlin/src/pins/ramps/pins_RUMBA.h @@ -23,6 +23,9 @@ /** * RUMBA pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/RUMBA/RRD-RUMBA_SCHEMATICS.png + * Origin: https://reprap.org/wiki/File:RRD-RUMBA_SCHEMATICS.png + * ATmega2560 */ #define REQUIRE_MEGA2560 diff --git a/Marlin/src/pins/ramps/pins_RUMBA_RAISE3D.h b/Marlin/src/pins/ramps/pins_RUMBA_RAISE3D.h index 39942613ff..57ee32ab29 100644 --- a/Marlin/src/pins/ramps/pins_RUMBA_RAISE3D.h +++ b/Marlin/src/pins/ramps/pins_RUMBA_RAISE3D.h @@ -21,6 +21,8 @@ */ #pragma once +// ATmega2560 + #define BOARD_INFO_NAME "Raise3D Rumba" #define DEFAULT_MACHINE_NAME "Raise3D N Series" diff --git a/Marlin/src/pins/ramps/pins_SAINSMART_2IN1.h b/Marlin/src/pins/ramps/pins_SAINSMART_2IN1.h index d25029a7a3..6354cc7618 100644 --- a/Marlin/src/pins/ramps/pins_SAINSMART_2IN1.h +++ b/Marlin/src/pins/ramps/pins_SAINSMART_2IN1.h @@ -23,13 +23,14 @@ /** * Sainsmart 2-in-1 pin assignments + * ATmega2560, ATmega1280 */ #if HOTENDS > 2 || E_STEPPERS > 2 #error "Sainsmart 2-in-1 supports up to 2 hotends / E steppers." #endif -#define BOARD_INFO_NAME "Sainsmart" +#define BOARD_INFO_NAME "Sainsmart 2-in-1" // // Heaters / Fans diff --git a/Marlin/src/pins/ramps/pins_TANGO.h b/Marlin/src/pins/ramps/pins_TANGO.h index 451d2f874d..936751e9eb 100644 --- a/Marlin/src/pins/ramps/pins_TANGO.h +++ b/Marlin/src/pins/ramps/pins_TANGO.h @@ -23,6 +23,9 @@ /** * BIQU Tango pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/BIQU%20Tango/schematic.png + * Origin: https://github.com/bigtreetech/Tango-3D-Printer-Motherboard/blob/master/Schematic/Tango%20V1.0.SchDoc + * ATmega2560 */ #define BOARD_INFO_NAME "Tango" diff --git a/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h b/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h index b11487b21d..dd6fb2fa70 100644 --- a/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h +++ b/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h @@ -22,7 +22,8 @@ #pragma once /** - * Tenlog pin assignments + * Tenlog D3 Hero pin assignments + * ATmega2560 */ #define REQUIRE_MEGA2560 diff --git a/Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h b/Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h index b3f7d5f216..780ab8daa4 100644 --- a/Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h +++ b/Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h @@ -22,7 +22,8 @@ #pragma once /** - * Tenlog pin assignments + * Tenlog MB1 V2.3 pin assignments + * ATmega2560 */ #define REQUIRE_MEGA2560 diff --git a/Marlin/src/pins/ramps/pins_TRIGORILLA_13.h b/Marlin/src/pins/ramps/pins_TRIGORILLA_13.h index 6e51a8e974..83dac111cb 100644 --- a/Marlin/src/pins/ramps/pins_TRIGORILLA_13.h +++ b/Marlin/src/pins/ramps/pins_TRIGORILLA_13.h @@ -23,6 +23,7 @@ /** * Arduino Mega with RAMPS v1.3 for Anycubic + * ATmega2560 */ #define BOARD_INFO_NAME "Anycubic RAMPS 1.3" diff --git a/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h index 96c3fced4c..f9856e04f5 100644 --- a/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h +++ b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h @@ -23,6 +23,7 @@ /** * Arduino Mega with RAMPS v1.4 for Anycubic + * ATmega2560 */ #define BOARD_INFO_NAME "Anycubic RAMPS 1.4" diff --git a/Marlin/src/pins/ramps/pins_TRONXY_V3_1_0.h b/Marlin/src/pins/ramps/pins_TRONXY_V3_1_0.h index 04c6af67b0..0104dadf7f 100644 --- a/Marlin/src/pins/ramps/pins_TRONXY_V3_1_0.h +++ b/Marlin/src/pins/ramps/pins_TRONXY_V3_1_0.h @@ -23,6 +23,7 @@ /** * Arduino Mega for Tronxy X5S-2E, etc. + * ATmega2560 */ #define REQUIRE_MEGA2560 diff --git a/Marlin/src/pins/ramps/pins_TT_OSCAR.h b/Marlin/src/pins/ramps/pins_TT_OSCAR.h index ecc708b395..c0247c7b47 100644 --- a/Marlin/src/pins/ramps/pins_TT_OSCAR.h +++ b/Marlin/src/pins/ramps/pins_TT_OSCAR.h @@ -21,10 +21,12 @@ */ #pragma once +// ATmega2560 + #include "env_validate.h" #if HOTENDS > 5 || E_STEPPERS > 5 - #error "TTOSCAR supports up to 5 hotends / E steppers." + #error "TT OSCAR supports up to 5 hotends / E steppers." #endif #define BOARD_INFO_NAME "TT OSCAR" diff --git a/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h b/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h index 0b15cd35ad..4ee0a6950d 100644 --- a/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h +++ b/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h @@ -23,6 +23,25 @@ /** * Ultiboard v2.0 pin assignments + * Schematics (2.1.4): + * - https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/Ultimaker%202.1.4/schema1.png + * - https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/Ultimaker%202.1.4/schema2.png + * - https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/Ultimaker%202.1.4/schema3.png + * - https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/Ultimaker%202.1.4/schema4.png + * - https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/Ultimaker%202.1.4/schema5.png + * Origins (2.1.4): + * - https://github.com/Ultimaker/Ultimaker2/blob/master/1546%20ultimainboard%20V2.1.4/schema1.SchDoc + * - https://github.com/Ultimaker/Ultimaker2/blob/master/1546%20ultimainboard%20V2.1.4/schema2.SchDoc + * - https://github.com/Ultimaker/Ultimaker2/blob/master/1546%20ultimainboard%20V2.1.4/schema3.SchDoc + * - https://github.com/Ultimaker/Ultimaker2/blob/master/1546%20ultimainboard%20V2.1.4/schema4.SchDoc + * - https://github.com/Ultimaker/Ultimaker2/blob/master/1546%20ultimainboard%20V2.1.4/schema5.SchDoc + * Schematics (Original+): + * - https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/Ultimaker%20Original+/Ultimainboard%20rev.%202.1.1%20altium/schema1.png + * - https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/Ultimaker%20Original+/Ultimainboard%20rev.%202.1.1%20altium/schema2.png + * - https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/Ultimaker%20Original+/Ultimainboard%20rev.%202.1.1%20altium/schema3.png + * - https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/Ultimaker%20Original+/Ultimainboard%20rev.%202.1.1%20altium/schema4.png + * Origin (Original+): https://github.com/Ultimaker/Ultimaker-Original-Plus/blob/master/1091_Main_board_v2.1.1_(x1)/Ultimainboard%20rev.%202.1.1%20altium.zip + * ATmega2560 */ /** diff --git a/Marlin/src/pins/ramps/pins_ULTIMAKER.h b/Marlin/src/pins/ramps/pins_ULTIMAKER.h index 0bc04d962a..e3e91428df 100644 --- a/Marlin/src/pins/ramps/pins_ULTIMAKER.h +++ b/Marlin/src/pins/ramps/pins_ULTIMAKER.h @@ -23,6 +23,7 @@ /** * Ultimaker pin assignments + * ATmega2560, ATmega1280 */ /** diff --git a/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h b/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h index 146c519ff9..25cc278ada 100644 --- a/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h +++ b/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h @@ -23,6 +23,9 @@ /** * Ultimaker pin assignments (Old electronics) + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/Ultimaker%201.0/ultipanel%20rev1.1.sch.pdf + * Origin: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/Ultimaker%201.0/ultipanel%20rev1.1.sch.pdf + * ATmega2560, ATmega1280 */ /** diff --git a/Marlin/src/pins/ramps/pins_VORON.h b/Marlin/src/pins/ramps/pins_VORON.h index 9390381010..f56b0cb8fc 100644 --- a/Marlin/src/pins/ramps/pins_VORON.h +++ b/Marlin/src/pins/ramps/pins_VORON.h @@ -24,6 +24,7 @@ /** * VORON Design v2 pin assignments * See https://github.com/mzbotreprap/VORON/blob/master/Firmware/Marlin/pins_RAMPS_VORON.h + * ATmega2560 */ #define BOARD_INFO_NAME "VORON Design v2" diff --git a/Marlin/src/pins/ramps/pins_ZRIB_V20.h b/Marlin/src/pins/ramps/pins_ZRIB_V20.h index 3e236e36ba..127fffa794 100644 --- a/Marlin/src/pins/ramps/pins_ZRIB_V20.h +++ b/Marlin/src/pins/ramps/pins_ZRIB_V20.h @@ -22,8 +22,13 @@ #pragma once /** - * ZRIB V2.0 & V3.0 pin assignments + * ZONESTAR ZRIB V2.0 & V3.0 pin assignments * V2 and V3 Boards only differ in USB controller, nothing affecting the pins. + * Schematic (2.0): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/ZONESTAR%20ZRIB%20V2.0/ZRIB_V2_Schematic.pdf + * Origin (2.0): https://github.com/ZONESTAR3D/Control-Board/blob/main/8bit/ZRIB/ZRIB_V2/ZRIB_V2_Schematic.pdf + * Schematic (3.0): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/ZONESTAR%20ZRIB%20V3.0/ZRIB_V3_Schematic.pdf + * Origin (3.0): https://github.com/ZONESTAR3D/Control-Board/blob/main/8bit/ZRIB/ZRIB_V3/ZRIB_V3_Schematic.pdf + * ATmega2560, ATmega1280 */ #ifndef FILWIDTH_PIN diff --git a/Marlin/src/pins/ramps/pins_ZRIB_V52.h b/Marlin/src/pins/ramps/pins_ZRIB_V52.h index 44e0beaa9f..34eee07c95 100644 --- a/Marlin/src/pins/ramps/pins_ZRIB_V52.h +++ b/Marlin/src/pins/ramps/pins_ZRIB_V52.h @@ -22,7 +22,10 @@ #pragma once /** - * ZRIB V5.2 Based on MKS BASE v1.4 with A4982 stepper drivers and digital micro-stepping + * ZONESTAR ZRIB V5.2 Based on MKS BASE v1.4 with A4982 stepper drivers and digital micro-stepping + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/RAMPS/ZONESTAR%20ZRIB%20V5.2/ZRIB_V52_Schematic.pdf + * Origin: https://github.com/ZONESTAR3D/Control-Board/blob/main/8bit/ZRIB/ZRIB_V5/ZRIB_V52_Schematic.pdf + * ATmega2560, ATmega1280 */ #if HOTENDS > 2 || E_STEPPERS > 2 diff --git a/Marlin/src/pins/ramps/pins_ZRIB_V53.h b/Marlin/src/pins/ramps/pins_ZRIB_V53.h index 7a5cf14791..050516791e 100644 --- a/Marlin/src/pins/ramps/pins_ZRIB_V53.h +++ b/Marlin/src/pins/ramps/pins_ZRIB_V53.h @@ -22,7 +22,8 @@ #pragma once /** - * ZRIB V5.3 Based on MKS BASE v1.4 with A4982 stepper drivers and digital micro-stepping + * ZONESTAR ZRIB V5.3 Based on MKS BASE v1.4 with A4982 stepper drivers and digital micro-stepping + * ATmega2560, ATmega1280 */ #include "env_validate.h" diff --git a/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h b/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h index ad7b859a0c..1c67903a21 100644 --- a/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h +++ b/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h @@ -23,6 +23,7 @@ /** * Z-Bolt X Series board – based on Arduino Mega2560 + * ATmega2560 */ #define REQUIRE_MEGA2560 diff --git a/Marlin/src/pins/sanguino/pins_ANET_10.h b/Marlin/src/pins/sanguino/pins_ANET_10.h index bd69e167dc..f6816bfb95 100644 --- a/Marlin/src/pins/sanguino/pins_ANET_10.h +++ b/Marlin/src/pins/sanguino/pins_ANET_10.h @@ -23,6 +23,8 @@ /** * Anet V1.0 board pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Anet%20V1.0/ANET3D_Board_Schematic.pdf + * Origin: https://github.com/ralf-e/ANET-3D-Board-V1.0/blob/master/ANET3D_Board_Schematic.pdf */ /** diff --git a/Marlin/src/pins/sanguino/pins_AZTEEG_X1.h b/Marlin/src/pins/sanguino/pins_AZTEEG_X1.h index 4c721da000..76d53c6021 100644 --- a/Marlin/src/pins/sanguino/pins_AZTEEG_X1.h +++ b/Marlin/src/pins/sanguino/pins_AZTEEG_X1.h @@ -23,6 +23,8 @@ /** * Azteeg X1 pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Azteeg%20X1/Azteeg_X1_schematics.pdf + * Origin: https://reprap.org/mediawiki/images/0/07/Azteeg_X1_schematics.pdf */ #define BOARD_INFO_NAME "Azteeg X1" diff --git a/Marlin/src/pins/sanguino/pins_GEN3_MONOLITHIC.h b/Marlin/src/pins/sanguino/pins_GEN3_MONOLITHIC.h index 1343739a11..a5afc30187 100644 --- a/Marlin/src/pins/sanguino/pins_GEN3_MONOLITHIC.h +++ b/Marlin/src/pins/sanguino/pins_GEN3_MONOLITHIC.h @@ -23,6 +23,7 @@ /** * Gen3 Monolithic Electronics pin assignments + * https://reprap.org/wiki/Generation_3_Electronics */ /** diff --git a/Marlin/src/pins/sanguino/pins_GEN6.h b/Marlin/src/pins/sanguino/pins_GEN6.h index 51e8200b95..75138845f4 100644 --- a/Marlin/src/pins/sanguino/pins_GEN6.h +++ b/Marlin/src/pins/sanguino/pins_GEN6.h @@ -23,6 +23,8 @@ /** * Gen6 pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Gen6/GEN6_Mendel_Circuit.pdf + * Origin: https://reprap.org/mediawiki/images/0/0f/GEN6_Mendel_Circuit.pdf */ /** diff --git a/Marlin/src/pins/sanguino/pins_GEN7_12.h b/Marlin/src/pins/sanguino/pins_GEN7_12.h index 0834da78c4..ade59fd807 100644 --- a/Marlin/src/pins/sanguino/pins_GEN7_12.h +++ b/Marlin/src/pins/sanguino/pins_GEN7_12.h @@ -23,6 +23,14 @@ /** * Gen7 v1.1, v1.2, v1.3 pin assignments + * Schematic (1.1): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Gen7%20v1.1/Gen7Board%20Schematic.pdf + * Origin (1.1): https://github.com/Traumflug/Generation_7_Electronics/blob/release-1.1/release%20documents/Gen7Board%20Schematic.pdf + * Schematic (1.2): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Gen7%20v1.2/Gen7Board%20Schematic.pdf + * Origin (1.2): https://github.com/Traumflug/Generation_7_Electronics/blob/release-1.2/release%20documents/Gen7Board%20Schematic.pdf + * Schematic (1.3): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Gen7%20v1.3/Gen7Board%20Schematic.pdf + * Origin (1.3): https://github.com/Traumflug/Generation_7_Electronics/blob/release-1.3/release%20documents/Gen7Board%20Schematic.pdf + * Schematic (1.3.1): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Gen7%20v1.3.1/Gen7Board%20Schematic.pdf + * Origin (1.3.1): https://github.com/Traumflug/Generation_7_Electronics/blob/release-1.3.1/release%20documents/Gen7Board%20Schematic.pdf */ /** @@ -54,7 +62,7 @@ #include "env_validate.h" #ifndef BOARD_INFO_NAME - #define BOARD_INFO_NAME "Gen7 v1.1 / 1.2" + #define BOARD_INFO_NAME "Gen7 v1.1 - v1.3" #endif #ifndef GEN7_VERSION diff --git a/Marlin/src/pins/sanguino/pins_GEN7_14.h b/Marlin/src/pins/sanguino/pins_GEN7_14.h index 97bfdd28a7..698bd06606 100644 --- a/Marlin/src/pins/sanguino/pins_GEN7_14.h +++ b/Marlin/src/pins/sanguino/pins_GEN7_14.h @@ -23,6 +23,10 @@ /** * Gen7 v1.4 pin assignments + * Schematic (1.4): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Gen7%20v1.4/Gen7Board%201.4%20Schematic.pdf + * Origin (1.4): https://github.com/Traumflug/Generation_7_Electronics/blob/Gen7Board-1.4/release%20documents/Gen7Board%201.4%20Schematic.pdf + * Schematic (1.4.1): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Gen7%20v1.4.1/Gen7Board%201.4.1%20Schematic.pdf + * Origin (1.4.1): https://github.com/Traumflug/Generation_7_Electronics/blob/Gen7Board-1.4.1/release%20documents/Gen7Board%201.4.1%20Schematic.pdf */ /** diff --git a/Marlin/src/pins/sanguino/pins_MELZI.h b/Marlin/src/pins/sanguino/pins_MELZI.h index d6f9288e8c..be1b7934c8 100644 --- a/Marlin/src/pins/sanguino/pins_MELZI.h +++ b/Marlin/src/pins/sanguino/pins_MELZI.h @@ -23,6 +23,8 @@ /** * Melzi pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Melzi/schematic.pdf + * Origin: https://github.com/mosfet/melzi/blob/master/melzi.sch */ #ifndef BOARD_INFO_NAME diff --git a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h index acaf06ed9d..a61692c9f1 100644 --- a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h +++ b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h @@ -23,6 +23,9 @@ /** * Melzi (Creality) pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Melzi%20(Creality)/CR-10%20Schematic.pdf + * Origin: https://github.com/Creality3DPrinting/CR10-Melzi-1.1.2/blob/master/Circuit%20diagram/Motherboard/CR-10%20Schematic.pdf + * ATmega1284P * * The Creality board needs a bootloader installed before Marlin can be uploaded. * If you don't have a chip programmer you can use a spare Arduino plus a few diff --git a/Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h b/Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h index d6f36cc6f5..00c9db6f81 100644 --- a/Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h +++ b/Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h @@ -23,6 +23,7 @@ /** * Melzi (Malyan M150) pin assignments + * ATmega644P, ATmega1284P */ #define BOARD_INFO_NAME "Melzi (Malyan)" diff --git a/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h b/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h index aecad10dab..da010ab1a6 100644 --- a/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h +++ b/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h @@ -23,6 +23,7 @@ /** * Melzi pin assignments + * ATmega644P, ATmega1284P */ #define BOARD_INFO_NAME "Melzi (Tronxy)" diff --git a/Marlin/src/pins/sanguino/pins_MELZI_V2.h b/Marlin/src/pins/sanguino/pins_MELZI_V2.h index e49eb57b11..2cd949e095 100644 --- a/Marlin/src/pins/sanguino/pins_MELZI_V2.h +++ b/Marlin/src/pins/sanguino/pins_MELZI_V2.h @@ -23,6 +23,8 @@ /** * Melzi V2.0 as found at https://www.reprap.org/wiki/Melzi + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Melzi%20V2/Melzi-circuit.png + * Origin: https://www.reprap.org/mediawiki/images/7/7d/Melzi-circuit.png */ #define BOARD_INFO_NAME "Melzi V2" diff --git a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h index 6444e2e040..a8475fb326 100644 --- a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h +++ b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h @@ -23,6 +23,16 @@ /** * Sanguinololu board pin assignments + * Schematic (0.1): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Sanguinololu%20v0.1/schematic.png + * Origin (0.1): https://github.com/mosfet/Sanguinololu/blob/master/rev0.1/sanguinololu.sch + * Schematic (0.6): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Sanguinololu%20v0.6/schematic.jpg + * Origin (0.6): https://github.com/mosfet/Sanguinololu/blob/master/rev0.6/images/schematic.jpg + * Schematic (0.7): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Sanguinololu%20v0.7/schematic.jpg + * Origin (0.7): https://github.com/mosfet/Sanguinololu/blob/master/rev0.7/images/schematic.jpg + * Schematic (1.0): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Sanguinololu%20v1.0/Sanguinololu-schematic.jpg + * Origin (1.0): https://reprap.org/wiki/File:Sanguinololu-schematic.jpg + * Schematic (1.1): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Sanguinololu%20v1.1/schematic.png + * Origin (1.1): https://github.com/mosfet/Sanguinololu/blob/master/rev1.1/sanguinololu.sch */ /** diff --git a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_12.h b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_12.h index ec7621e28f..2209569261 100644 --- a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_12.h +++ b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_12.h @@ -23,6 +23,12 @@ /** * Sanguinololu V1.2 pin assignments + * Schematic (1.2): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Sanguinololu%20v1.2/schematic.png + * Origin (1.2): https://github.com/mosfet/Sanguinololu/blob/master/rev1.2/sanguinololu.sch + * Schematic (1.3): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Sanguinololu%20v1.3/schematic.png + * Origin (1.3): https://github.com/mosfet/Sanguinololu/blob/master/rev1.3/sanguinololu.sch + * Schematic (1.3a): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Sanguinololu%20v1.3a/schematic.png + * Origin (1.3a): https://github.com/mosfet/Sanguinololu/blob/master/rev1.3a/sanguinololu.sch * * Applies to the following boards: * diff --git a/Marlin/src/pins/sanguino/pins_STB_11.h b/Marlin/src/pins/sanguino/pins_STB_11.h index ad0919e99e..1bda25b3d4 100644 --- a/Marlin/src/pins/sanguino/pins_STB_11.h +++ b/Marlin/src/pins/sanguino/pins_STB_11.h @@ -22,7 +22,8 @@ #pragma once /** - * STB V1.1 pin assignments + * STB Electronics V1.1 pin assignments + * https://www.reprap.org/wiki/STB_Electronics */ #define BOARD_INFO_NAME "STB V1.1" diff --git a/Marlin/src/pins/sanguino/pins_ZMIB_V2.h b/Marlin/src/pins/sanguino/pins_ZMIB_V2.h index aa3ce556d1..bd9230c32a 100644 --- a/Marlin/src/pins/sanguino/pins_ZMIB_V2.h +++ b/Marlin/src/pins/sanguino/pins_ZMIB_V2.h @@ -31,6 +31,8 @@ /** * ZMIB pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/ZONESTAR%20ZMIB%20V2/ZMIB_V2_Schmatic.pdf + * Origin: https://github.com/ZONESTAR3D/Control-Board/blob/main/8bit/ZMIB/ZMIB%20V2/ZMIB_V2_Schmatic.pdf * * The ZMIB board needs a bootloader installed before Marlin can be uploaded. * If you don't have a chip programmer you can use a spare Arduino plus a few diff --git a/Marlin/src/pins/teensy2/pins_5DPRINT.h b/Marlin/src/pins/teensy2/pins_5DPRINT.h index 6e1f9c0217..9eb1da36f4 100644 --- a/Marlin/src/pins/teensy2/pins_5DPRINT.h +++ b/Marlin/src/pins/teensy2/pins_5DPRINT.h @@ -64,6 +64,8 @@ /** * 5DPrint D8 Driver board pin assignments + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/5DPrint%20D8/5DPD8_v1.0_OS_schematics.PDF + * Origin: https://bitbucket.org/makible/5dprint-d8-controller-board/src/master/5DPD8_v1.0_OS_schematics.PDF * * https://bitbucket.org/makible/5dprint-d8-controller-board */ diff --git a/Marlin/src/pins/teensy2/pins_BRAINWAVE.h b/Marlin/src/pins/teensy2/pins_BRAINWAVE.h index cdcc249c00..bbda3730ee 100644 --- a/Marlin/src/pins/teensy2/pins_BRAINWAVE.h +++ b/Marlin/src/pins/teensy2/pins_BRAINWAVE.h @@ -23,9 +23,13 @@ /** * Brainwave 1.0 pin assignments (AT90USB646) + * https://www.reprap.org/wiki/Brainwave * * Requires hardware bundle for Arduino: * https://github.com/unrepentantgeek/brainwave-arduino + * + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Brainwave/schematic.pdf + * Origin: https://github.com/unrepentantgeek/Brainwave/blob/master/brainwave/brainwave.sch */ /** diff --git a/Marlin/src/pins/teensy2/pins_BRAINWAVE_PRO.h b/Marlin/src/pins/teensy2/pins_BRAINWAVE_PRO.h index 319130ef96..969ec84558 100644 --- a/Marlin/src/pins/teensy2/pins_BRAINWAVE_PRO.h +++ b/Marlin/src/pins/teensy2/pins_BRAINWAVE_PRO.h @@ -26,6 +26,8 @@ * * Requires hardware bundle for Arduino: * https://github.com/unrepentantgeek/brainwave-arduino + * + * Not to be confused with the regular Brainwave controller (https://www.reprap.org/wiki/Brainwave) */ /** diff --git a/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h b/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h index ddf0d53ea6..1fb7387d16 100644 --- a/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h +++ b/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h @@ -25,6 +25,15 @@ * Rev B 2 JUN 2017 * * Converted to Arduino pin numbering + * + * Schematic (RevA): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Printrboard%20Rev.A/schematic.png + * Origin (RevA): https://raw.githubusercontent.com/lwalkera/printrboard/revA/Printrboard.sch + * Schematic (RevB): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Printrboard%20Rev.B/schematic.png + * Origin (RevB): https://raw.githubusercontent.com/lwalkera/printrboard/revB/Printrboard.sch + * Schematic (RevC): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Printrboard%20Rev.C/schematic.png + * Origin (RevC): https://raw.githubusercontent.com/lwalkera/printrboard/revC/Printrboard.sch + * Schematic (RevD): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Printrboard%20Rev.D/schematic.png + * Origin (RevD): https://raw.githubusercontent.com/lwalkera/printrboard/RevD/Printrboard.sch */ /** diff --git a/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h b/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h index 1867398087..5ce106b485 100644 --- a/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h +++ b/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h @@ -25,6 +25,19 @@ * Rev B 2 JUN 2017 * * Converted to Arduino pin numbering + * + * Schematic (RevF): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Printrboard%20Rev.F/schematic.png + * Origin (RevF): https://github.com/lwalkera/printrboard/raw/revF/Printrboard.sch + * Schematic (RevF2): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Printrboard%20Rev.F2/schematic.png + * Origin (RevF2): https://raw.githubusercontent.com/lwalkera/printrboard/revF2/Printrboard.sch + * Schematic (RevF3): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Printrboard%20Rev.F3/schematic.png + * Origin (RevF3): https://raw.githubusercontent.com/lwalkera/printrboard/revF3/Printrboard.sch + * Schematic (RevF4): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Printrboard%20Rev.F4/schematic.png + * Origin (RevF4): https://raw.githubusercontent.com/lwalkera/printrboard/revF4/Printrboard.sch + * Schematic (RevF5): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Printrboard%20Rev.F5/schematic.png + * Origin (RevF5): https://raw.githubusercontent.com/lwalkera/printrboard/revF5/Printrboard.sch + * Schematic (RevF6): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Printrboard%20Rev.F6/schematic.png + * Origin (RevF6): https://raw.githubusercontent.com/lwalkera/printrboard/revF6/Printrboard.sch */ /** diff --git a/Marlin/src/pins/teensy2/pins_SAV_MKI.h b/Marlin/src/pins/teensy2/pins_SAV_MKI.h index cdba535090..a469bba59b 100644 --- a/Marlin/src/pins/teensy2/pins_SAV_MKI.h +++ b/Marlin/src/pins/teensy2/pins_SAV_MKI.h @@ -25,6 +25,9 @@ * Rev B 2 JUN 2017 * * Converted to Arduino pin numbering + * + * Schematic: https://green-candy.osdn.jp/external/MarlinFW/board_schematics/SAV%20MkI/SAV_MK-I.pdf + * Origin: https://reprap.org/mediawiki/images/3/3c/SAV_MK-I.pdf */ /** diff --git a/Marlin/src/pins/teensy2/pins_TEENSY2.h b/Marlin/src/pins/teensy2/pins_TEENSY2.h index efb409bf32..b95e9cae48 100644 --- a/Marlin/src/pins/teensy2/pins_TEENSY2.h +++ b/Marlin/src/pins/teensy2/pins_TEENSY2.h @@ -109,6 +109,7 @@ #include "env_validate.h" +// https://reprap.org/wiki/Teensy_Breadboard #define BOARD_INFO_NAME "Teensy++2.0" // diff --git a/Marlin/src/pins/teensy2/pins_TEENSYLU.h b/Marlin/src/pins/teensy2/pins_TEENSYLU.h index ab722478fd..294a289cdb 100644 --- a/Marlin/src/pins/teensy2/pins_TEENSYLU.h +++ b/Marlin/src/pins/teensy2/pins_TEENSYLU.h @@ -24,6 +24,10 @@ * Rev C 2 JUN 2017 * * Converted to Arduino pin numbering + * + * Schematic (1.0): https://green-candy.osdn.jp/external/MarlinFW/board_schematics/Teensylu%20v1.0/schematic.png + * Origin (1.0): https://raw.githubusercontent.com/StephS/Teensylu/master/working/Teensylu-1.0.sch + * (*) Other versions are discouraged by creator. */ /** From 50b62975231fe08001c79953c796f9b371da88ad Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Mar 2023 02:42:10 -0500 Subject: [PATCH 168/659] =?UTF-8?q?=F0=9F=8E=A8=20Wrap=20font=20includes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Martin Turski --- Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_19.cpp | 3 ++- Marlin/src/lcd/tft/fontdata/Helvetica/helvetica_14.cpp | 3 ++- .../tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_14.cpp | 3 ++- .../fontdata/NotoSans/Medium_14px/NotoSans_Medium_ASCII_14.cpp | 3 ++- .../NotoSans/Medium_14px/NotoSans_Medium_Cyrillic_14.cpp | 3 ++- .../fontdata/NotoSans/Medium_14px/NotoSans_Medium_Greek_14.cpp | 3 ++- .../NotoSans/Medium_14px/NotoSans_Medium_Katakana_14.cpp | 3 ++- .../NotoSans/Medium_14px/NotoSans_Medium_Korean_14.cpp | 3 ++- .../Medium_14px/NotoSans_Medium_Latin_Extended_A_14.cpp | 3 ++- .../Medium_14px/NotoSans_Medium_Simplified_Chinese_14.cpp | 3 ++- .../NotoSans/Medium_14px/NotoSans_Medium_Symbols_14.cpp | 3 ++- .../Medium_14px/NotoSans_Medium_Traditional_Chinese_14.cpp | 3 ++- .../NotoSans/Medium_14px/NotoSans_Medium_Vietnamese_14.cpp | 3 ++- .../tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_16.cpp | 3 ++- .../fontdata/NotoSans/Medium_16px/NotoSans_Medium_ASCII_16.cpp | 3 ++- .../NotoSans/Medium_16px/NotoSans_Medium_Cyrillic_16.cpp | 3 ++- .../fontdata/NotoSans/Medium_16px/NotoSans_Medium_Greek_16.cpp | 3 ++- .../NotoSans/Medium_16px/NotoSans_Medium_Katakana_16.cpp | 3 ++- .../NotoSans/Medium_16px/NotoSans_Medium_Korean_16.cpp | 3 ++- .../Medium_16px/NotoSans_Medium_Latin_Extended_A_16.cpp | 3 ++- .../Medium_16px/NotoSans_Medium_Simplified_Chinese_16.cpp | 3 ++- .../NotoSans/Medium_16px/NotoSans_Medium_Symbols_16.cpp | 3 ++- .../Medium_16px/NotoSans_Medium_Traditional_Chinese_16.cpp | 3 ++- .../NotoSans/Medium_16px/NotoSans_Medium_Vietnamese_16.cpp | 3 ++- .../tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_19.cpp | 3 ++- .../fontdata/NotoSans/Medium_19px/NotoSans_Medium_ASCII_19.cpp | 3 ++- .../NotoSans/Medium_19px/NotoSans_Medium_Cyrillic_19.cpp | 3 ++- .../fontdata/NotoSans/Medium_19px/NotoSans_Medium_Greek_19.cpp | 3 ++- .../NotoSans/Medium_19px/NotoSans_Medium_Katakana_19.cpp | 3 ++- .../NotoSans/Medium_19px/NotoSans_Medium_Korean_19.cpp | 3 ++- .../Medium_19px/NotoSans_Medium_Latin_Extended_A_19.cpp | 3 ++- .../Medium_19px/NotoSans_Medium_Simplified_Chinese_19.cpp | 3 ++- .../NotoSans/Medium_19px/NotoSans_Medium_Symbols_19.cpp | 3 ++- .../Medium_19px/NotoSans_Medium_Traditional_Chinese_19.cpp | 3 ++- .../NotoSans/Medium_19px/NotoSans_Medium_Vietnamese_19.cpp | 3 ++- Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_10.cpp | 3 ++- Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_ASCII_10.cpp | 3 ++- .../src/lcd/tft/fontdata/Unifont/10px/Unifont_Cyrillic_10.cpp | 3 ++- Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Greek_10.cpp | 3 ++- .../src/lcd/tft/fontdata/Unifont/10px/Unifont_Katakana_10.cpp | 3 ++- Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Korean_10.cpp | 3 ++- .../tft/fontdata/Unifont/10px/Unifont_Latin_Extended_A_10.cpp | 3 ++- .../fontdata/Unifont/10px/Unifont_Simplified_Chinese_10.cpp | 3 ++- .../src/lcd/tft/fontdata/Unifont/10px/Unifont_Symbols_10.cpp | 3 ++- .../fontdata/Unifont/10px/Unifont_Traditional_Chinese_10.cpp | 3 ++- .../lcd/tft/fontdata/Unifont/10px/Unifont_Vietnamese_10.cpp | 3 ++- Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_20.cpp | 3 ++- Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_ASCII_20.cpp | 3 ++- .../src/lcd/tft/fontdata/Unifont/20px/Unifont_Cyrillic_20.cpp | 3 ++- Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Greek_20.cpp | 3 ++- .../src/lcd/tft/fontdata/Unifont/20px/Unifont_Katakana_20.cpp | 3 ++- Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Korean_20.cpp | 3 ++- .../tft/fontdata/Unifont/20px/Unifont_Latin_Extended_A_20.cpp | 3 ++- .../fontdata/Unifont/20px/Unifont_Simplified_Chinese_20.cpp | 3 ++- .../src/lcd/tft/fontdata/Unifont/20px/Unifont_Symbols_20.cpp | 3 ++- .../fontdata/Unifont/20px/Unifont_Traditional_Chinese_20.cpp | 3 ++- .../lcd/tft/fontdata/Unifont/20px/Unifont_Vietnamese_20.cpp | 3 ++- 57 files changed, 114 insertions(+), 57 deletions(-) diff --git a/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_19.cpp b/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_19.cpp index 5b4570d010..ab2f91577a 100644 --- a/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_19.cpp @@ -34,7 +34,8 @@ #include "../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define HELVETICA 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == HELVETICA #include diff --git a/Marlin/src/lcd/tft/fontdata/Helvetica/helvetica_14.cpp b/Marlin/src/lcd/tft/fontdata/Helvetica/helvetica_14.cpp index 44e7d40a27..2fbf812369 100644 --- a/Marlin/src/lcd/tft/fontdata/Helvetica/helvetica_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/Helvetica/helvetica_14.cpp @@ -34,7 +34,8 @@ #include "../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define HELVETICA 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == HELVETICA #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_14.cpp index 9a54351762..d9bdde8b2d 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_14.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_ASCII_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_ASCII_14.cpp index 3db57d8ebe..0d452c9441 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_ASCII_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_ASCII_14.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Cyrillic_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Cyrillic_14.cpp index f02086646c..7c1fc2ac4e 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Cyrillic_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Cyrillic_14.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Greek_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Greek_14.cpp index cbb789870d..bb0cec7aca 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Greek_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Greek_14.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Katakana_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Katakana_14.cpp index ae167c2c08..eda142fef1 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Katakana_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Katakana_14.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Korean_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Korean_14.cpp index 7d69f85f4a..258ccf8799 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Korean_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Korean_14.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Latin_Extended_A_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Latin_Extended_A_14.cpp index 4ff175700f..d736d12c17 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Latin_Extended_A_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Latin_Extended_A_14.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Simplified_Chinese_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Simplified_Chinese_14.cpp index 01c7638e37..04825f3659 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Simplified_Chinese_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Simplified_Chinese_14.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Symbols_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Symbols_14.cpp index 07f3359dc4..a806753a97 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Symbols_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Symbols_14.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Traditional_Chinese_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Traditional_Chinese_14.cpp index 63ea2fc74b..863d0c2805 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Traditional_Chinese_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Traditional_Chinese_14.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Vietnamese_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Vietnamese_14.cpp index dd6603f682..6a363582e1 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Vietnamese_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Vietnamese_14.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_16.cpp index 1369901338..08ec0bf9d0 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_16.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_ASCII_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_ASCII_16.cpp index 0da231be38..cac0216a75 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_ASCII_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_ASCII_16.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Cyrillic_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Cyrillic_16.cpp index 36ca1df547..58ecea399f 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Cyrillic_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Cyrillic_16.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Greek_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Greek_16.cpp index ff3ef3f843..f20b747cc4 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Greek_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Greek_16.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Katakana_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Katakana_16.cpp index a159a26947..18c9345ca3 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Katakana_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Katakana_16.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Korean_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Korean_16.cpp index 26e6799a89..3839ed419e 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Korean_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Korean_16.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Latin_Extended_A_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Latin_Extended_A_16.cpp index 0617ee2758..afce518424 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Latin_Extended_A_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Latin_Extended_A_16.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Simplified_Chinese_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Simplified_Chinese_16.cpp index cd9c617c75..aa76df275a 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Simplified_Chinese_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Simplified_Chinese_16.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Symbols_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Symbols_16.cpp index ef20a4bcc6..63a2a7d071 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Symbols_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Symbols_16.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Traditional_Chinese_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Traditional_Chinese_16.cpp index 177e741825..606625646b 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Traditional_Chinese_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Traditional_Chinese_16.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Vietnamese_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Vietnamese_16.cpp index 16cee9a7a2..3905fba3e9 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Vietnamese_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Vietnamese_16.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_19.cpp index c04f1c6d2d..925254e7f8 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_19.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_ASCII_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_ASCII_19.cpp index 417db3946f..97ef16cf44 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_ASCII_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_ASCII_19.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Cyrillic_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Cyrillic_19.cpp index 413141c3b1..dba08111ce 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Cyrillic_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Cyrillic_19.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Greek_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Greek_19.cpp index f4dcd225c8..497e7fa8e8 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Greek_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Greek_19.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Katakana_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Katakana_19.cpp index 3f8d4f761a..f5d92c5fd5 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Katakana_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Katakana_19.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Korean_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Korean_19.cpp index 7f030d656d..14a0073211 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Korean_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Korean_19.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Latin_Extended_A_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Latin_Extended_A_19.cpp index 00d90611fd..ccc23097fe 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Latin_Extended_A_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Latin_Extended_A_19.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Simplified_Chinese_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Simplified_Chinese_19.cpp index b5999beb72..86621477e1 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Simplified_Chinese_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Simplified_Chinese_19.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Symbols_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Symbols_19.cpp index 5d27793082..d28f2800d6 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Symbols_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Symbols_19.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Traditional_Chinese_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Traditional_Chinese_19.cpp index e5fd6077cc..c34f5bb7f1 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Traditional_Chinese_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Traditional_Chinese_19.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Vietnamese_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Vietnamese_19.cpp index 1f77fbe874..5ff24ab3b0 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Vietnamese_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Vietnamese_19.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define NOTOSANS 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_10.cpp index d22ee15a5f..2572cc60c4 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_10.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_ASCII_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_ASCII_10.cpp index d4965cc061..27f3dcf325 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_ASCII_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_ASCII_10.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Cyrillic_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Cyrillic_10.cpp index 013a015cca..1e112a1de1 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Cyrillic_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Cyrillic_10.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Greek_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Greek_10.cpp index 1febf8b5b3..71375485d2 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Greek_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Greek_10.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Katakana_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Katakana_10.cpp index ae2819dba1..1e0d15629d 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Katakana_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Katakana_10.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Korean_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Korean_10.cpp index e4516acac2..d1bf3ba514 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Korean_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Korean_10.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Latin_Extended_A_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Latin_Extended_A_10.cpp index 6059c6ccdd..8d381d276a 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Latin_Extended_A_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Latin_Extended_A_10.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Simplified_Chinese_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Simplified_Chinese_10.cpp index b971dc92a0..3ce396d098 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Simplified_Chinese_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Simplified_Chinese_10.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Symbols_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Symbols_10.cpp index 9f804f7d69..8776bfba6c 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Symbols_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Symbols_10.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Traditional_Chinese_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Traditional_Chinese_10.cpp index 5f820cf8fc..a9b1406441 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Traditional_Chinese_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Traditional_Chinese_10.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Vietnamese_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Vietnamese_10.cpp index 66ee7f01f6..d61d1be71b 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Vietnamese_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Vietnamese_10.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_20.cpp index 9d6847722f..023cc4f978 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_20.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_ASCII_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_ASCII_20.cpp index 1e5d228053..e28b806b9f 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_ASCII_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_ASCII_20.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Cyrillic_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Cyrillic_20.cpp index 751b60c43c..8e82a228f1 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Cyrillic_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Cyrillic_20.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Greek_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Greek_20.cpp index fee79c3fae..d5c175977a 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Greek_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Greek_20.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Katakana_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Katakana_20.cpp index f809a20259..3b21375016 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Katakana_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Katakana_20.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Korean_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Korean_20.cpp index 7f750e7fa2..ac8dee91ef 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Korean_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Korean_20.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Latin_Extended_A_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Latin_Extended_A_20.cpp index 49b8001826..9a22047c9a 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Latin_Extended_A_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Latin_Extended_A_20.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Simplified_Chinese_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Simplified_Chinese_20.cpp index 970d30bec7..85e0d205d7 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Simplified_Chinese_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Simplified_Chinese_20.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Symbols_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Symbols_20.cpp index 5f663efc56..a0d269e02f 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Symbols_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Symbols_20.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Traditional_Chinese_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Traditional_Chinese_20.cpp index 70359bbc71..c541e1401d 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Traditional_Chinese_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Traditional_Chinese_20.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Vietnamese_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Vietnamese_20.cpp index 21fbc29d81..8c9b29153c 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Vietnamese_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Vietnamese_20.cpp @@ -22,7 +22,8 @@ #include "../../../../../inc/MarlinConfigPre.h" -#if HAS_GRAPHICAL_TFT +#define UNIFONT 123 +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT #include From 39d08d90cd1aba3fde54dc070531c28bf2dffe53 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Mar 2023 02:43:20 -0500 Subject: [PATCH 169/659] =?UTF-8?q?=F0=9F=8E=A8=20LPC=5FSOFTWARE=5FSPI=20?= =?UTF-8?q?=3D>=20SOFTWARE=5FSPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Martin Turski --- Marlin/src/HAL/LINUX/spi_pins.h | 8 ++++---- Marlin/src/HAL/LPC1768/HAL_SPI.cpp | 4 ++-- Marlin/src/HAL/LPC1768/spi_pins.h | 8 ++++---- Marlin/src/HAL/NATIVE_SIM/spi_pins.h | 2 +- Marlin/src/pins/lpc1768/pins_MKS_SBASE.h | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Marlin/src/HAL/LINUX/spi_pins.h b/Marlin/src/HAL/LINUX/spi_pins.h index 33136ac9dd..9b40651873 100644 --- a/Marlin/src/HAL/LINUX/spi_pins.h +++ b/Marlin/src/HAL/LINUX/spi_pins.h @@ -25,10 +25,10 @@ #include "../../inc/MarlinConfigPre.h" #if BOTH(HAS_MARLINUI_U8GLIB, SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_ENABLE == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) - #define LPC_SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently - // needed due to the speed and mode required for communicating with each device being different. - // This requirement can be removed if the SPI access to these devices is updated to use - // spiBeginTransaction. + #define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently + // needed due to the speed and mode required for communicating with each device being different. + // This requirement can be removed if the SPI access to these devices is updated to use + // spiBeginTransaction. #endif // Onboard SD diff --git a/Marlin/src/HAL/LPC1768/HAL_SPI.cpp b/Marlin/src/HAL/LPC1768/HAL_SPI.cpp index 257d8579e2..4d6cb55cff 100644 --- a/Marlin/src/HAL/LPC1768/HAL_SPI.cpp +++ b/Marlin/src/HAL/LPC1768/HAL_SPI.cpp @@ -60,7 +60,7 @@ // ------------------------ // Public functions // ------------------------ -#if ENABLED(LPC_SOFTWARE_SPI) +#if ENABLED(SOFTWARE_SPI) // Software SPI @@ -161,7 +161,7 @@ // TODO: Implement this method } -#endif // LPC_SOFTWARE_SPI +#endif // SOFTWARE_SPI /** * @brief Wait until TXE (tx empty) flag is set and BSY (busy) flag unset. diff --git a/Marlin/src/HAL/LPC1768/spi_pins.h b/Marlin/src/HAL/LPC1768/spi_pins.h index e7d774742f..a82b21dda9 100644 --- a/Marlin/src/HAL/LPC1768/spi_pins.h +++ b/Marlin/src/HAL/LPC1768/spi_pins.h @@ -24,10 +24,10 @@ #include "../../core/macros.h" #if BOTH(SDSUPPORT, HAS_MARLINUI_U8GLIB) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_ENABLE == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) - #define LPC_SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently - // needed due to the speed and mode required for communicating with each device being different. - // This requirement can be removed if the SPI access to these devices is updated to use - // spiBeginTransaction. + #define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently + // needed due to the speed and mode required for communicating with each device being different. + // This requirement can be removed if the SPI access to these devices is updated to use + // spiBeginTransaction. #endif /** onboard SD card */ diff --git a/Marlin/src/HAL/NATIVE_SIM/spi_pins.h b/Marlin/src/HAL/NATIVE_SIM/spi_pins.h index a5138e0ccb..fd3378b337 100644 --- a/Marlin/src/HAL/NATIVE_SIM/spi_pins.h +++ b/Marlin/src/HAL/NATIVE_SIM/spi_pins.h @@ -25,7 +25,7 @@ #include "../../inc/MarlinConfigPre.h" #if BOTH(HAS_MARLINUI_U8GLIB, SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_ENABLE == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) - #define LPC_SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently + #define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently // needed due to the speed and mode required for communicating with each device being different. // This requirement can be removed if the SPI access to these devices is updated to use // spiBeginTransaction. diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h index 14759901ac..9f67a01c4e 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h @@ -186,7 +186,7 @@ #define SD_MISO_PIN P1_23 // J8-3 (moved from EXP2 P0.8) #define SD_MOSI_PIN P2_12 // J8-4 (moved from EXP2 P0.9) #define SD_SS_PIN P0_28 - #define LPC_SOFTWARE_SPI // With a custom cable we need software SPI because the + #define SOFTWARE_SPI // With a custom cable we need software SPI because the // selected pins are not on a hardware SPI controller #elif SD_CONNECTION_IS(LCD) || SD_CONNECTION_IS(ONBOARD) #define SD_SCK_PIN P0_07 From 8b6155deeebd5aa12d0a335dd9087fd7db280d5b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Mar 2023 03:01:09 -0500 Subject: [PATCH 170/659] =?UTF-8?q?=F0=9F=94=A8=20INI=20Updates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Martin Turski --- ini/avr.ini | 7 ++++--- ini/features.ini | 1 + ini/stm32f1-maple.ini | 25 ++++++++++++------------- ini/stm32f4.ini | 2 -- platformio.ini | 2 +- 5 files changed, 18 insertions(+), 19 deletions(-) diff --git a/ini/avr.ini b/ini/avr.ini index 5944f81583..7c5f369dc6 100644 --- a/ini/avr.ini +++ b/ini/avr.ini @@ -13,8 +13,9 @@ # AVR (8-bit) Common Environment values # [common_avr8] -platform = atmelavr@~3.4 +platform = atmelavr@~4.0.1 build_flags = ${common.build_flags} -Wl,--relax +build_src_flags = -std=gnu++1z board_build.f_cpu = 16000000L build_src_filter = ${common.default_src_filter} + @@ -53,7 +54,7 @@ extends = common_avr8 board_build.variant = MARLIN_MEGA_EXTENDED extra_scripts = ${env:mega2560ext.extra_scripts} upload_speed = 57600 -build_flags = ${common.build_flags} -fno-tree-scev-cprop -fno-split-wide-types -Wl,--relax -mcall-prologues +build_flags = ${common_avr8.build_flags} -fno-tree-scev-cprop -fno-split-wide-types -mcall-prologues # # MightyBoard ATmega1280 @@ -103,7 +104,7 @@ board_upload.maximum_size = 126976 # [tuned_1284p] -build_flags = ${common.build_flags} -fno-tree-scev-cprop -fno-split-wide-types -Wl,--relax -mcall-prologues +build_flags = ${common_avr8.build_flags} -fno-tree-scev-cprop -fno-split-wide-types -mcall-prologues [env:sanguino1284p_optimized] extends = env:sanguino1284p diff --git a/ini/features.ini b/ini/features.ini index bfaca56ab3..35b6959fd9 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -205,6 +205,7 @@ HAS_GCODE_M876 = src_filter=+ HAS_RESUME_CONTINUE = src_filter=+ SET_PROGRESS_MANUALLY = src_filter=+ HAS_STATUS_MESSAGE = src_filter=+ +HAS_PREHEAT = src_filter=+ HAS_LCD_CONTRAST = src_filter=+ HAS_GCODE_M255 = src_filter=+ HAS_LCD_BRIGHTNESS = src_filter=+ diff --git a/ini/stm32f1-maple.ini b/ini/stm32f1-maple.ini index e223bdb4eb..d361a0d40a 100644 --- a/ini/stm32f1-maple.ini +++ b/ini/stm32f1-maple.ini @@ -61,7 +61,7 @@ monitor_speed = 115200 [env:STM32F103RC_meeb_maple] extends = env:STM32F103RC_maple board = marlin_maple_MEEB_3DP -build_flags = ${STM32F1_maple.build_flags} +build_flags = ${env:STM32F103RC_maple.build_flags} -DDEBUG_LEVEL=0 -DSS_TIMER=4 -DSTM32_FLASH_SIZE=512 @@ -70,10 +70,10 @@ build_flags = ${STM32F1_maple.build_flags} -DVECT_TAB_OFFSET=0x2000 -DGENERIC_BOOTLOADER board_build.ldscript = STM32F103RC_MEEB_3DP.ld -extra_scripts = ${STM32F1_maple.extra_scripts} +extra_scripts = ${env:STM32F103RC_maple.extra_scripts} pre:buildroot/share/PlatformIO/scripts/STM32F1_create_variant.py buildroot/share/PlatformIO/scripts/STM32F103RC_MEEB_3DP.py -lib_deps = ${STM32F1_maple.lib_deps} +lib_deps = ${env:STM32F103RC_maple.lib_deps} USBComposite for STM32F1@0.91 custom_marlin.NEOPIXEL_LED = Adafruit NeoPixel=https://github.com/ccccmagicboy/Adafruit_NeoPixel#meeb_3dp_use debug_tool = stlink @@ -84,9 +84,9 @@ upload_protocol = dfu # [env:STM32F103RC_fysetc_maple] extends = env:STM32F103RC_maple -extra_scripts = ${STM32F1_maple.extra_scripts} +extra_scripts = ${env:STM32F103RC_maple.extra_scripts} buildroot/share/PlatformIO/scripts/STM32F103RC_fysetc.py -build_flags = ${STM32F1_maple.build_flags} -DDEBUG_LEVEL=0 +build_flags = ${env:STM32F103RC_maple.build_flags} -DDEBUG_LEVEL=0 lib_ldf_mode = chain debug_tool = stlink upload_protocol = serial @@ -101,7 +101,7 @@ upload_protocol = serial extends = env:STM32F103RC_maple board_build.address = 0x08007000 board_build.ldscript = STM32F103RC_SKR_MINI_256K.ld -build_flags = ${STM32F1_maple.build_flags} -DDEBUG_LEVEL=0 -DSS_TIMER=4 +build_flags = ${env:STM32F103RC_maple.build_flags} -DDEBUG_LEVEL=0 -DSS_TIMER=4 monitor_speed = 115200 [env:STM32F103RC_btt_USB_maple] @@ -115,10 +115,10 @@ lib_deps = ${env:STM32F103RC_btt_maple.lib_deps} # [env:STM32F103RE_creality_maple] extends = env:STM32F103RE_maple -build_flags = ${STM32F1_maple.build_flags} -DTEMP_TIMER_CHAN=4 +build_flags = ${env:STM32F103RE_maple.build_flags} -DTEMP_TIMER_CHAN=4 board_build.address = 0x08007000 board_build.ldscript = creality.ld -extra_scripts = ${STM32F1_maple.extra_scripts} +extra_scripts = ${env:STM32F103RE_maple.extra_scripts} pre:buildroot/share/PlatformIO/scripts/random-bin.py debug_tool = jlink upload_protocol = jlink @@ -128,10 +128,10 @@ upload_protocol = jlink # [env:STM32F103RC_creality_maple] extends = env:STM32F103RC_maple -build_flags = ${STM32F1_maple.build_flags} -DTEMP_TIMER_CHAN=4 +build_flags = ${env:STM32F103RC_maple.build_flags} -DTEMP_TIMER_CHAN=4 board_build.address = 0x08007000 board_build.ldscript = creality.ld -extra_scripts = ${STM32F1_maple.extra_scripts} +extra_scripts = ${env:STM32F103RC_maple.extra_scripts} pre:buildroot/share/PlatformIO/scripts/random-bin.py debug_tool = jlink upload_protocol = jlink @@ -154,14 +154,14 @@ board_build.ldscript = crealityPro.ld extends = env:STM32F103RE_maple board_build.address = 0x08007000 board_build.ldscript = STM32F103RE_SKR_MINI_512K.ld -build_flags = ${STM32F1_maple.build_flags} -DDEBUG_LEVEL=0 -DSS_TIMER=4 +build_flags = ${env:STM32F103RE_maple.build_flags} -DDEBUG_LEVEL=0 -DSS_TIMER=4 debug_tool = stlink upload_protocol = stlink [env:STM32F103RE_btt_USB_maple] extends = env:STM32F103RE_btt_maple build_flags = ${env:STM32F103RE_btt_maple.build_flags} -DUSE_USB_COMPOSITE -lib_deps = ${STM32F1_maple.lib_deps} +lib_deps = ${env:STM32F103RE_btt_maple.lib_deps} USBComposite for STM32F1@0.91 # @@ -238,7 +238,6 @@ board_build.ldscript = mks_robin_pro.ld # [env:trigorilla_pro_maple] extends = env:mks_robin_maple -extra_scripts = ${STM32F1_maple.extra_scripts} # # MKS Robin E3D (STM32F103RCT6) and diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini index aa3b1dfc7c..e9b9a956de 100644 --- a/ini/stm32f4.ini +++ b/ini/stm32f4.ini @@ -726,12 +726,10 @@ upload_command = dfu-util -a 0 -s 0x08000000:leave -D "$SOURCE" # STM32F446ZET6 ARM Cortex-M4 # [env:STM32F446_tronxy] -platform = ${common_stm32.platform} extends = stm32_variant board = marlin_STM32F446ZET_tronxy board_build.offset = 0x10000 board_build.rename = fmw_tronxy.bin -build_src_filter = ${common_stm32.build_src_filter} build_flags = ${stm32_variant.build_flags} -DSTM32F4xx build_unflags = ${stm32_variant.build_unflags} -fno-rtti diff --git a/platformio.ini b/platformio.ini index d31f23abec..f8a8988ef8 100644 --- a/platformio.ini +++ b/platformio.ini @@ -224,6 +224,7 @@ default_src_filter = + - - + - - - + - - - - - - @@ -251,7 +252,6 @@ default_src_filter = + - - + - - - - - - - - - - - From ec91d5a1efb56377ed784a48377521332c0a7e3e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Mar 2023 03:01:15 -0500 Subject: [PATCH 171/659] =?UTF-8?q?=F0=9F=8E=A8=20Misc.=20fixes,=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Martin Turski --- Marlin/Marlin.ino | 2 +- Marlin/src/HAL/ESP32/ota.cpp | 2 +- Marlin/src/core/serial_base.h | 2 ++ Marlin/src/lcd/tft_io/tft_orientation.h | 7 +++---- Marlin/src/libs/numtostr.cpp | 2 +- Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h | 4 ++-- 6 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Marlin/Marlin.ino b/Marlin/Marlin.ino index 57c825445f..744e98c2e3 100644 --- a/Marlin/Marlin.ino +++ b/Marlin/Marlin.ino @@ -27,7 +27,7 @@ Configuration - https://github.com/MarlinFirmware/Configurations Example configurations for several printer models. - - https://www.youtube.com/watch?v=3gwWVFtdg-4 + - https://youtu.be/3gwWVFtdg-4 A good 20-minute overview of Marlin configuration by Tom Sanladerer. (Applies to Marlin 1.0.x, so Jerk and Acceleration should be halved.) Also... https://www.google.com/search?tbs=vid%3A1&q=configure+marlin diff --git a/Marlin/src/HAL/ESP32/ota.cpp b/Marlin/src/HAL/ESP32/ota.cpp index 69a3e25e56..f31a78c2c5 100644 --- a/Marlin/src/HAL/ESP32/ota.cpp +++ b/Marlin/src/HAL/ESP32/ota.cpp @@ -50,7 +50,7 @@ void OTA_init() { }) .onError([](ota_error_t error) { Serial.printf("Error[%u]: ", error); - char *str; + const char *str = "unknown"; switch (error) { case OTA_AUTH_ERROR: str = "Auth Failed"; break; case OTA_BEGIN_ERROR: str = "Begin Failed"; break; diff --git a/Marlin/src/core/serial_base.h b/Marlin/src/core/serial_base.h index a5abd67d87..059b424284 100644 --- a/Marlin/src/core/serial_base.h +++ b/Marlin/src/core/serial_base.h @@ -23,6 +23,8 @@ #include "../inc/MarlinConfigPre.h" +#include // for size_t + #if ENABLED(EMERGENCY_PARSER) #include "../feature/e_parser.h" #endif diff --git a/Marlin/src/lcd/tft_io/tft_orientation.h b/Marlin/src/lcd/tft_io/tft_orientation.h index 7822fc6b04..c2c86435b2 100644 --- a/Marlin/src/lcd/tft_io/tft_orientation.h +++ b/Marlin/src/lcd/tft_io/tft_orientation.h @@ -59,9 +59,9 @@ #define TFT_COLOR_BGR _BV32(4) // Each TFT Driver is responsible for its default color mode. -// #ifndef TFT_COLOR -// #define TFT_COLOR TFT_COLOR_RGB -// #endif +//#ifndef TFT_COLOR +// #define TFT_COLOR TFT_COLOR_RGB +//#endif #define TOUCH_ORIENTATION_NONE 0 #define TOUCH_LANDSCAPE 1 @@ -82,4 +82,3 @@ #ifndef TOUCH_ORIENTATION #define TOUCH_ORIENTATION TOUCH_LANDSCAPE #endif - diff --git a/Marlin/src/libs/numtostr.cpp b/Marlin/src/libs/numtostr.cpp index c28d1246d6..4cc40a96d1 100644 --- a/Marlin/src/libs/numtostr.cpp +++ b/Marlin/src/libs/numtostr.cpp @@ -28,7 +28,7 @@ char conv[9] = { 0 }; #define DIGIT(n) ('0' + (n)) -#define DIGIMOD(n, f) DIGIT((n)/(f) % 10) +#define DIGIMOD(n, f) DIGIT(((n)/(f)) % 10) #define RJDIGIT(n, f) ((n) >= (f) ? DIGIMOD(n, f) : ' ') #define MINUSOR(n, alt) (n >= 0 ? (alt) : (n = -n, '-')) #define INTFLOAT(V,N) (((V) * 10 * pow(10, N) + ((V) < 0 ? -5: 5)) / 10) // pow10? diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h index 0df70d7292..9c5836dc74 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h @@ -93,7 +93,7 @@ #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 + #define TMC_BAUD_RATE 19200 #endif // @@ -214,7 +214,7 @@ #define FORCE_SOFT_SPI // SPI MODE3 - #define LED_PIN EXP1_06_PIN // red pwm + #define LED_PIN EXP1_06_PIN // red pwm //#define LED_PIN EXP1_07_PIN // green //#define LED_PIN EXP1_08_PIN // blue From d74e65362f738baa746c54053c2e8fe9454beb0b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Mar 2023 18:43:53 -0500 Subject: [PATCH 172/659] =?UTF-8?q?=F0=9F=A9=B9=20Update=20TRONXY=5FV10=20?= =?UTF-8?q?SPI=5FFLASH=20pins?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/stm32f4/pins_TRONXY_V10.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h index e3b9f7ef6e..475dc42266 100644 --- a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h +++ b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h @@ -72,10 +72,10 @@ //#define SPI_FLASH #if ENABLED(SPI_FLASH) #define SPI_FLASH_SIZE 0x200000 // 2MB - #define W25QXX_CS_PIN PG15 // SPI2 - #define W25QXX_MOSI_PIN PB5 - #define W25QXX_MISO_PIN PB4 - #define W25QXX_SCK_PIN PB3 + #define SPI_FLASH_CS_PIN PG15 // SPI2 + #define SPI_FLASH_MOSI_PIN PB5 + #define SPI_FLASH_MISO_PIN PB4 + #define SPI_FLASH_SCK_PIN PB3 #endif // From aba42052c3c85ffbe02718a49cdec9e6053b9c03 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 25 Mar 2023 00:20:40 +0000 Subject: [PATCH 173/659] [cron] Bump distribution date (2023-03-25) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 62330c57c7..bb46cc9519 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-24" +//#define STRING_DISTRIBUTION_DATE "2023-03-25" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index d8245208b4..d2b1ff06e9 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-24" + #define STRING_DISTRIBUTION_DATE "2023-03-25" #endif /** From 1b72729698085afa85e427c0578f5ba811fd05e9 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sat, 25 Mar 2023 17:14:21 +1300 Subject: [PATCH 174/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20Chitu3D=20V6=20def?= =?UTF-8?q?ault=20probe=20pin=20(#25552)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h | 51 +++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h index 89e07d6a21..02daab3e63 100644 --- a/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h +++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h @@ -33,4 +33,55 @@ #define FIL_RUNOUT2_PIN PF13 #endif +#ifndef Z_MIN_PROBE_PIN + #define Z_MIN_PROBE_PIN PG9 +#endif + #include "pins_CHITU3D_common.h" + +/* + * Circuit diagram https://github.com/MarlinFirmware/Marlin/files/3401484/x5sa-main_board-2.pdf + * + * Details on the 30 pin ribbon pins. From: https://3dtoday.ru/blogs/artem-sr/tronxy-x5sa-pro-ustanovka-bfp-touch-na-board-chitu3d-v6-cxy-v6-191017 + * + * JP2 Ribbon 30 on CXY-V6-191017 + * ---------------------------------------------- + * | 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30| + * | 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29| + * ---------------------- ---------------------- + * + * -------------------------------------------------------------------------------------- + * | Pin | Label | Function & Notes | + * -------------------------------------------------------------------------------------- + * | 1 | Hotend | Hotend driver Q6 HY1403 via MCU Pin127 PG12 | + * | 2 | Hotend | Hotend driver Q6 HY1403 via MCU Pin127 PG12 | + * | 3 | Hotend | Hotend driver Q6 HY1403 via MCU Pin127 PG12 | + * | 4 | Hotend | Hotend driver Q6 HY1403 via MCU Pin127 PG12 | + * | 5 | +24v | Hotend +24v | + * | 6 | +24v | Hotend +24v | + * | 7 | +24v | Hotend +24v | + * | 8 | +24v | Hotend +24v | + * | 9 | F_2 | Extruder Fan2 driver Q8 AO3400A X07S via MCU Pin129 PG14 | + * | 10 | +24v | Extruder cooling Fan2 +24v | + * | 11 | F_1 | Part Fan1 driver Q7 AO3400A X07S via MCU Pin128 PG13 | + * | 12 | +24v | Part cooling Fanl +24v | + * | 13 | 1B | X-MOTOR Winding Drive | + * | 14 | 1A | X-MOTOR Winding Drive | + * | 15 | 2B | X-MOTOR Winding Drive | + * | 16 | 2A | X-MOTOR Winding Drive | + * | 17 | lA | El-Motor Winding Drive | + * | 18 | 1B | El-Motor Winding Drive | + * | 19 | 2B | El-Motor Winding Drive | + * | 20 | 2A | El-Motor Winding Drive | + * | 21 | PROXIMITY | 10kΩ Pullup to +5V and 100nF to GND, then 20kΩ to MCU Pin124 PG9 | + * | 22 | +24v | Proximity sensor +24v | + * | 23 | +5V | Filament sensor +5V XSTOP sensor +5V | + * | 24 | GND | Proximity sensor GND | + * | 25 | FILAMENT1 | 10kΩ Pullup to +5V and 100nF to GND, then 47kΩ to MCU Pin110 PA15| + * | 26 | GND | Filament Sensor GND | + * | 27 | XSTOP | 10kΩ Pullup to +5V and 100nF to GND, then 47kΩ to MCU Pin125 PG10| + * | 28 | GND | XSTOP sensor GND | + * | 29 | GND | Extruder temperature NTC sensor return GND | + * | 30 | ETEMP | 4k7Ω Pullup to +3V3 and 100nF to GND, then 4k7Ω to MCU Pin35 PA1 | + * -------------------------------------------------------------------------------------- + */ From de4452fda6b3f1a0d74865bc364fb362ccc38ff4 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Fri, 24 Mar 2023 21:15:33 -0700 Subject: [PATCH 175/659] =?UTF-8?q?=F0=9F=94=A7=20Remove=20TVPM=20warning?= =?UTF-8?q?=20(#25551)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Warnings.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 01246596c3..405e7a351e 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -63,11 +63,6 @@ #warning "Warning! Don't use dummy thermistors (998/999) for final build!" #endif -#if ANY(THERMAL_PROTECTION_HOTENDS, THERMAL_PROTECTION_BED, THERMAL_PROTECTION_CHAMBER, THERMAL_PROTECTION_COOLER) \ - && NONE(THERMAL_PROTECTION_VARIANCE_MONITOR, NO_VARIANCE_MONITOR_WARNING) - #warning "THERMAL_PROTECTION_VARIANCE_MONITOR is recommended. See Configuration_adv.h for details. (Define NO_VARIANCE_MONITOR_WARNING to suppress this.)" -#endif - #if NONE(HAS_RESUME_CONTINUE, HOST_PROMPT_SUPPORT) #warning "Your Configuration provides no method to acquire user feedback!" #endif From 8d3142911c017b542f1b55e9d2c09b68beacadd9 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sat, 25 Mar 2023 17:17:47 +1300 Subject: [PATCH 176/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20MKS=20Gen=20L=202.?= =?UTF-8?q?1=20MOSFET=20pins=20(#25542)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h index c2ab34c825..d2c3c37f07 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h @@ -38,7 +38,8 @@ // Heaters / Fans // // Power outputs EFBF or EFBE -#define MOSFET_D_PIN 7 +#define MOSFET_B_PIN 7 +#define FAN_PIN 9 // // CS Pins wired to avoid conflict with the LCD From 01296788dcde14b29ebdf2c7b2e4895be66d75f3 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Mar 2023 17:35:32 -0500 Subject: [PATCH 177/659] =?UTF-8?q?=F0=9F=A9=B9=20Refine=20MKS=20boards=20?= =?UTF-8?q?with=20a=20dedicated=20FAN=20port=20(#25567)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h | 39 +++++++++----------- Marlin/src/pins/ramps/pins_BIQU_KFB_2.h | 3 +- Marlin/src/pins/ramps/pins_FELIX2.h | 1 - Marlin/src/pins/ramps/pins_MKS_BASE_14.h | 5 --- Marlin/src/pins/ramps/pins_MKS_BASE_common.h | 13 +++---- Marlin/src/pins/ramps/pins_MKS_GEN_13.h | 2 - Marlin/src/pins/ramps/pins_MKS_GEN_L.h | 11 ++---- Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h | 4 +- Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h | 1 - Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h | 2 +- Marlin/src/pins/ramps/pins_ZRIB_V52.h | 2 - 11 files changed, 30 insertions(+), 53 deletions(-) diff --git a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h index 56f92f8b25..221f5124ae 100644 --- a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h +++ b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h @@ -146,39 +146,34 @@ //#define TEMP_1_MOSI_PIN TEMP_0_MOSI_PIN // -// FET Pin Mapping - FET 1 is closest to the input power connector +// FET Pin Mapping - FET A is closest to the input power connector // -#define MOSFET_1_PIN 6 // Plug EX1 Pin 1-2 -> PH3 #15 -> Logical 06 -#define MOSFET_2_PIN 7 // Plug EX1 Pin 3-4 -> PH4 #16 -> Logical 07 -#define MOSFET_3_PIN 11 // Plug EX2 1-2 -> PB5 #24 -> Logical 11 -#define MOSFET_4_PIN 12 // Plug EX2 3-4 -> PB6 #25 -> Logical 12 -#define MOSFET_5_PIN 45 // Plug HBD 1-2 -> PL4 #39 -> Logical 45 -#define MOSFET_6_PIN 44 // Plug Extra 1-2 -> PL5 #40 -> Logical 44 (FET not soldered in all boards) +#define MOSFET_A_PIN 6 // Plug EX1 Pin 1-2 -> PH3 #15 -> Logical 06 +#define MOSFET_B_PIN 11 // Plug EX2 1-2 -> PB5 #24 -> Logical 11 +#define MOSFET_C_PIN 45 // Plug HBD 1-2 -> PL4 #39 -> Logical 45 +#define MOSFET_D_PIN 7 // Plug EX1 Pin 3-4 -> PH4 #16 -> Logical 07 +#define MOSFET_E_PIN 12 // Plug EX2 3-4 -> PB6 #25 -> Logical 12 +#define MOSFET_F_PIN 44 // Plug Extra 1-2 -> PL5 #40 -> Logical 44 (FET not soldered in all boards) // // Heaters / Fans (24V) // -#define HEATER_0_PIN MOSFET_1_PIN // EX1 -#define HEATER_1_PIN MOSFET_3_PIN // EX2 -#define HEATER_BED_PIN MOSFET_5_PIN // HBP +#define HEATER_0_PIN MOSFET_A_PIN // EX1 +#define HEATER_1_PIN MOSFET_B_PIN // EX2 +#define HEATER_BED_PIN MOSFET_C_PIN // HBP -// EX1 FAN (Automatic Fans are disabled by default in Configuration_adv.h - comment that out for auto fans) #ifndef E0_AUTO_FAN_PIN - #define E0_AUTO_FAN_PIN MOSFET_2_PIN -#else - #ifndef FAN_PIN - #define FAN_PIN MOSFET_2_PIN - #endif + #define E0_AUTO_FAN_PIN MOSFET_D_PIN +#elif !defined(FAN_PIN) + #define FAN_PIN MOSFET_D_PIN #endif -// EX2 FAN (Automatic Fans are disabled by default in Configuration_adv.h - comment that out for auto fans) + #ifndef E1_AUTO_FAN_PIN - #define E1_AUTO_FAN_PIN MOSFET_4_PIN -#else - #ifndef FAN1_PIN - #define FAN1_PIN MOSFET_4_PIN - #endif + #define E1_AUTO_FAN_PIN MOSFET_E_PIN +#elif !defined(FAN1_PIN) + #define FAN1_PIN MOSFET_E_PIN #endif // diff --git a/Marlin/src/pins/ramps/pins_BIQU_KFB_2.h b/Marlin/src/pins/ramps/pins_BIQU_KFB_2.h index 6155e9842a..aab66f0fea 100644 --- a/Marlin/src/pins/ramps/pins_BIQU_KFB_2.h +++ b/Marlin/src/pins/ramps/pins_BIQU_KFB_2.h @@ -35,7 +35,6 @@ // // Heaters / Fans // -// Power outputs BEEF or BEFF -#define MOSFET_D_PIN 7 +#define MOSFET_D_PIN 7 #include "pins_RAMPS.h" diff --git a/Marlin/src/pins/ramps/pins_FELIX2.h b/Marlin/src/pins/ramps/pins_FELIX2.h index 48ef896e96..f88923e0c9 100644 --- a/Marlin/src/pins/ramps/pins_FELIX2.h +++ b/Marlin/src/pins/ramps/pins_FELIX2.h @@ -35,7 +35,6 @@ // // Heaters / Fans // -// Power outputs EFBF or EFBE #define MOSFET_D_PIN 7 #include "pins_RAMPS.h" diff --git a/Marlin/src/pins/ramps/pins_MKS_BASE_14.h b/Marlin/src/pins/ramps/pins_MKS_BASE_14.h index d302def795..9877877ffd 100644 --- a/Marlin/src/pins/ramps/pins_MKS_BASE_14.h +++ b/Marlin/src/pins/ramps/pins_MKS_BASE_14.h @@ -33,11 +33,6 @@ #define BOARD_INFO_NAME "MKS BASE 1.4" #define MKS_BASE_VERSION 14 -// -// Heaters / Fans -// -#define FAN_PIN 9 // PH6 ** Pin18 ** PWM9 - // Other Mods #define SERVO3_PIN 12 // PB6 ** Pin25 ** D12 diff --git a/Marlin/src/pins/ramps/pins_MKS_BASE_common.h b/Marlin/src/pins/ramps/pins_MKS_BASE_common.h index 7608745a4b..4d3b9844c8 100644 --- a/Marlin/src/pins/ramps/pins_MKS_BASE_common.h +++ b/Marlin/src/pins/ramps/pins_MKS_BASE_common.h @@ -34,8 +34,8 @@ // // Heaters / Fans // - // Power outputs EFBF or EFBE - #define MOSFET_D_PIN 7 + #define MOSFET_B_PIN 7 + #define FAN_PIN 9 // // M3/M4/M5 - Spindle/Laser Control @@ -50,12 +50,9 @@ #define CASE_LIGHT_PIN 2 #endif -#endif - -// -// Microstepping pins -// -#if MKS_BASE_VERSION >= 14 // |===== 1.4 =====|===== 1.5+ =====| + // + // Microstepping pins + // |===== 1.4 =====|===== 1.5+ =====| #define X_MS1_PIN 5 // PE3 | Pin 5 | PWM5 | | D3 | SERVO2_PIN #define X_MS2_PIN 6 // PH3 | Pin 15 | PWM6 | Pin 14 | D6 | SERVO1_PIN #define Y_MS1_PIN 59 // PF5 | Pin 92 | A5 | | | diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_13.h b/Marlin/src/pins/ramps/pins_MKS_GEN_13.h index 5c13288f85..3020dc8c31 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_13.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_13.h @@ -42,8 +42,6 @@ // // Heaters / Fans // -// Power outputs EFBF or EFBE -// #define MOSFET_B_PIN 7 #define FAN_PIN 9 diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_L.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L.h index c610fc6206..9c84c18300 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_L.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_L.h @@ -37,14 +37,11 @@ // // Heaters / Fans // -// Power outputs EFBF or EFBE -#define MOSFET_D_PIN 7 -// Hotend, Hotend, Bed + Fan on D9 -#if FET_ORDER_EEB - #define MOSFET_B_PIN 7 - #define FAN_PIN 9 -#endif +#define MOSFET_A_PIN 9 // HE0 +#define MOSFET_B_PIN 8 // HE1 +#define MOSFET_C_PIN 10 // HBED +#define FAN_PIN 7 // // CS Pins wired to avoid conflict with the LCD diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h index d82c4353fd..543210b117 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h @@ -37,8 +37,8 @@ // // Heaters / Fans // -// Power outputs EFBF or EFBE -#define MOSFET_D_PIN 7 +#define MOSFET_B_PIN 7 +#define FAN_PIN 9 // // CS Pins wired to avoid conflict with the LCD diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h index d2c3c37f07..d1a1b30995 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h @@ -37,7 +37,6 @@ // // Heaters / Fans // -// Power outputs EFBF or EFBE #define MOSFET_B_PIN 7 #define FAN_PIN 9 diff --git a/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h b/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h index 5e4366e259..4d150946c2 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h @@ -32,7 +32,7 @@ // // Heaters / Fans // -#define MOSFET_B_PIN 7 // For HEATER_1_PIN ("EEF" or "EEB") +#define MOSFET_B_PIN 7 #define FAN_PIN 9 #define FIL_RUNOUT_PIN 2 diff --git a/Marlin/src/pins/ramps/pins_ZRIB_V52.h b/Marlin/src/pins/ramps/pins_ZRIB_V52.h index 34eee07c95..5eada31c9c 100644 --- a/Marlin/src/pins/ramps/pins_ZRIB_V52.h +++ b/Marlin/src/pins/ramps/pins_ZRIB_V52.h @@ -39,8 +39,6 @@ // // Heaters / Fans // -#define HEATER_1_PIN 7 -#define FAN_PIN 9 // PH6 ** Pin18 ** PWM9 #define FAN1_PIN 6 // From 2e4bf0ab9b2b4db545665bf976d2e0738c237b80 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Mar 2023 18:20:14 -0500 Subject: [PATCH 178/659] =?UTF-8?q?=F0=9F=8E=A8=20Rename=20FAN=5FPIN=20to?= =?UTF-8?q?=20FAN0=5FPIN=20(#25568)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/AVR/fastio.h | 78 ------------------- Marlin/src/HAL/AVR/inc/SanityCheck.h | 4 +- Marlin/src/HAL/STM32/inc/SanityCheck.h | 2 +- Marlin/src/HAL/STM32F1/timers.h | 2 +- Marlin/src/inc/Conditionals_post.h | 14 ++-- Marlin/src/inc/SanityCheck.h | 34 ++++---- Marlin/src/module/temperature.cpp | 2 +- Marlin/src/pins/esp32/pins_E4D.h | 2 +- Marlin/src/pins/esp32/pins_ENWI_ESPNP.h | 2 +- Marlin/src/pins/esp32/pins_ESP32.h | 2 +- Marlin/src/pins/esp32/pins_ESPA_common.h | 2 +- Marlin/src/pins/esp32/pins_MKS_TINYBEE.h | 2 +- Marlin/src/pins/esp32/pins_MRR_ESPE.h | 2 +- Marlin/src/pins/esp32/pins_PANDA_common.h | 2 +- Marlin/src/pins/linux/pins_RAMPS_LINUX.h | 14 ++-- Marlin/src/pins/lpc1768/pins_AZSMZ_MINI.h | 4 +- Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h | 6 +- Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h | 6 +- Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h | 4 +- Marlin/src/pins/lpc1768/pins_EMOTRONIC.h | 2 +- Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h | 2 +- Marlin/src/pins/lpc1768/pins_MKS_SBASE.h | 4 +- Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h | 4 +- Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h | 10 +-- Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h | 4 +- Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h | 4 +- Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h | 4 +- .../src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h | 2 +- .../src/pins/lpc1769/pins_COHESION3D_MINI.h | 6 +- .../src/pins/lpc1769/pins_COHESION3D_REMIX.h | 6 +- Marlin/src/pins/lpc1769/pins_FLY_CDY.h | 4 +- Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h | 4 +- Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h | 4 +- Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h | 4 +- Marlin/src/pins/mega/pins_CHEAPTRONICv2.h | 4 +- Marlin/src/pins/mega/pins_CNCONTROLS_11.h | 4 +- Marlin/src/pins/mega/pins_CNCONTROLS_12.h | 4 +- Marlin/src/pins/mega/pins_CNCONTROLS_15.h | 2 +- Marlin/src/pins/mega/pins_EINSTART-S.h | 2 +- Marlin/src/pins/mega/pins_ELEFU_3.h | 4 +- Marlin/src/pins/mega/pins_GT2560_REV_A.h | 4 +- Marlin/src/pins/mega/pins_GT2560_V3.h | 2 +- Marlin/src/pins/mega/pins_HJC2560C_REV2.h | 4 +- Marlin/src/pins/mega/pins_INTAMSYS40.h | 2 +- Marlin/src/pins/mega/pins_LEAPFROG.h | 2 +- Marlin/src/pins/mega/pins_LEAPFROG_XEED2015.h | 2 +- Marlin/src/pins/mega/pins_MALYAN_M180.h | 4 +- Marlin/src/pins/mega/pins_MEGACONTROLLER.h | 4 +- Marlin/src/pins/mega/pins_MEGATRONICS.h | 4 +- Marlin/src/pins/mega/pins_MEGATRONICS_2.h | 4 +- Marlin/src/pins/mega/pins_MEGATRONICS_3.h | 4 +- Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h | 4 +- Marlin/src/pins/mega/pins_MINITRONICS.h | 4 +- Marlin/src/pins/mega/pins_OVERLORD.h | 2 +- Marlin/src/pins/mega/pins_PICA.h | 4 +- Marlin/src/pins/mega/pins_PICAOLD.h | 2 +- Marlin/src/pins/mega/pins_SILVER_GATE.h | 4 +- Marlin/src/pins/mega/pins_WANHAO_ONEPLUS.h | 2 +- Marlin/src/pins/mega/pins_WEEDO_62A.h | 2 +- Marlin/src/pins/pinsDebug_list.h | 4 +- Marlin/src/pins/pins_postprocess.h | 5 +- Marlin/src/pins/rambo/pins_EINSY_RAMBO.h | 6 +- Marlin/src/pins/rambo/pins_EINSY_RETRO.h | 4 +- Marlin/src/pins/rambo/pins_MINIRAMBO.h | 4 +- Marlin/src/pins/rambo/pins_RAMBO.h | 4 +- Marlin/src/pins/rambo/pins_SCOOVO_X9H.h | 4 +- Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h | 4 +- .../src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h | 2 +- Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h | 4 +- Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h | 2 +- .../src/pins/ramps/pins_FORMBOT_TREX2PLUS.h | 2 +- Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h | 2 +- Marlin/src/pins/ramps/pins_FYSETC_F6_13.h | 2 +- Marlin/src/pins/ramps/pins_K8600.h | 2 +- Marlin/src/pins/ramps/pins_K8800.h | 2 +- Marlin/src/pins/ramps/pins_MKS_BASE_common.h | 2 +- Marlin/src/pins/ramps/pins_MKS_GEN_13.h | 2 +- Marlin/src/pins/ramps/pins_MKS_GEN_L.h | 2 +- Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h | 2 +- Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h | 2 +- Marlin/src/pins/ramps/pins_RAMPS.h | 10 +-- Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h | 2 +- Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h | 2 +- Marlin/src/pins/ramps/pins_RAMPS_OLD.h | 8 +- Marlin/src/pins/ramps/pins_RAMPS_S_12.h | 4 +- Marlin/src/pins/ramps/pins_RIGIDBOARD.h | 4 +- Marlin/src/pins/ramps/pins_RUMBA.h | 4 +- Marlin/src/pins/ramps/pins_TANGO.h | 2 +- Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h | 2 +- Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h | 2 +- Marlin/src/pins/ramps/pins_TRIGORILLA_14.h | 2 +- Marlin/src/pins/ramps/pins_TT_OSCAR.h | 2 +- Marlin/src/pins/ramps/pins_ULTIMAIN_2.h | 4 +- Marlin/src/pins/ramps/pins_ULTIMAKER.h | 4 +- Marlin/src/pins/ramps/pins_VORON.h | 4 +- Marlin/src/pins/ramps/pins_ZRIB_V53.h | 2 +- Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h | 2 +- Marlin/src/pins/sam/pins_ADSK.h | 2 +- Marlin/src/pins/sam/pins_ALLIGATOR_R2.h | 4 +- Marlin/src/pins/sam/pins_ARCHIM1.h | 4 +- Marlin/src/pins/sam/pins_ARCHIM2.h | 4 +- Marlin/src/pins/sam/pins_CNCONTROLS_15D.h | 2 +- Marlin/src/pins/sam/pins_DUE3DOM.h | 4 +- Marlin/src/pins/sam/pins_DUE3DOM_MINI.h | 4 +- Marlin/src/pins/sam/pins_KRATOS32.h | 4 +- Marlin/src/pins/sam/pins_PRINTRBOARD_G2.h | 4 +- Marlin/src/pins/sam/pins_RADDS.h | 4 +- Marlin/src/pins/sam/pins_RAMPS_FD_V1.h | 4 +- Marlin/src/pins/sam/pins_RURAMPS4D_11.h | 4 +- Marlin/src/pins/sam/pins_RURAMPS4D_13.h | 2 +- Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h | 4 +- .../src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h | 2 +- Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h | 2 +- Marlin/src/pins/samd/pins_MINITRONICS20.h | 2 +- Marlin/src/pins/samd/pins_RAMPS_144.h | 2 +- Marlin/src/pins/sanguino/pins_ANET_10.h | 4 +- Marlin/src/pins/sanguino/pins_AZTEEG_X1.h | 2 +- Marlin/src/pins/sanguino/pins_GEN7_12.h | 4 +- Marlin/src/pins/sanguino/pins_MELZI.h | 4 +- .../src/pins/sanguino/pins_MELZI_CREALITY.h | 2 +- Marlin/src/pins/sanguino/pins_OMCA.h | 4 +- Marlin/src/pins/sanguino/pins_OMCA_A.h | 4 +- .../src/pins/sanguino/pins_SANGUINOLOLU_11.h | 4 +- .../src/pins/sanguino/pins_SANGUINOLOLU_12.h | 4 +- Marlin/src/pins/sanguino/pins_SETHI.h | 9 +-- Marlin/src/pins/sanguino/pins_STB_11.h | 4 +- Marlin/src/pins/sanguino/pins_ZMIB_V2.h | 4 +- Marlin/src/pins/sensitive_pins.h | 4 +- Marlin/src/pins/stm32f1/pins_BEAST.h | 4 +- Marlin/src/pins/stm32f1/pins_BTT_SKR_CR6.h | 2 +- Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h | 2 +- .../pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h | 2 +- .../stm32f1/pins_BTT_SKR_MINI_E3_common.h | 4 +- .../src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h | 2 +- .../src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h | 2 +- Marlin/src/pins/stm32f1/pins_CHITU3D.h | 4 +- Marlin/src/pins/stm32f1/pins_CHITU3D_common.h | 2 +- .../pins/stm32f1/pins_CREALITY_V24S1_301.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V4.h | 4 +- Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V425.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V452.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V453.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V521.h | 2 +- .../src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h | 10 +-- Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h | 2 +- Marlin/src/pins/stm32f1/pins_FLY_MINI.h | 4 +- Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h | 4 +- Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h | 4 +- Marlin/src/pins/stm32f1/pins_GTM32_MINI.h | 2 +- Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h | 2 +- Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h | 2 +- Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h | 2 +- .../src/pins/stm32f1/pins_JGAURORA_A5S_A1.h | 2 +- Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h | 4 +- .../pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h | 2 +- .../pins/stm32f1/pins_MKS_ROBIN_E3_common.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h | 2 +- .../src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h | 2 +- .../src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h | 2 +- .../pins/stm32f1/pins_MKS_ROBIN_NANO_common.h | 4 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h | 2 +- Marlin/src/pins/stm32f1/pins_MORPHEUS.h | 2 +- Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h | 2 +- Marlin/src/pins/stm32f1/pins_SOVOL_V131.h | 4 +- Marlin/src/pins/stm32f1/pins_STM3R_MINI.h | 4 +- Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h | 2 +- Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h | 4 +- Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h | 2 +- Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h | 2 +- Marlin/src/pins/stm32f4/pins_ANET_ET4.h | 2 +- Marlin/src/pins/stm32f4/pins_ARMED.h | 2 +- Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h | 4 +- .../src/pins/stm32f4/pins_BLACK_STM32F407VE.h | 2 +- .../src/pins/stm32f4/pins_BTT_BTT002_V1_0.h | 6 +- Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h | 2 +- Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h | 2 +- .../pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h | 2 +- .../stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h | 2 +- .../pins/stm32f4/pins_BTT_SKR_PRO_common.h | 2 +- .../pins/stm32f4/pins_BTT_SKR_V2_0_common.h | 4 +- Marlin/src/pins/stm32f4/pins_FLYF407ZG.h | 4 +- .../pins/stm32f4/pins_FYSETC_CHEETAH_V20.h | 4 +- Marlin/src/pins/stm32f4/pins_FYSETC_S6.h | 4 +- .../pins/stm32f4/pins_FYSETC_SPIDER_V2_2.h | 2 +- Marlin/src/pins/stm32f4/pins_LERDGE_K.h | 4 +- Marlin/src/pins/stm32f4/pins_LERDGE_S.h | 2 +- Marlin/src/pins/stm32f4/pins_LERDGE_X.h | 4 +- .../pins/stm32f4/pins_MKS_MONSTER8_common.h | 2 +- Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h | 2 +- .../stm32f4/pins_MKS_ROBIN_NANO_V3_common.h | 2 +- .../src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h | 2 +- Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h | 2 +- .../src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h | 2 +- .../src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h | 2 +- Marlin/src/pins/stm32f4/pins_RUMBA32_common.h | 2 +- .../src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h | 4 +- Marlin/src/pins/stm32f4/pins_TRONXY_V10.h | 2 +- Marlin/src/pins/stm32f4/pins_VAKE403D.h | 4 +- Marlin/src/pins/stm32f7/pins_NUCLEO_F767ZI.h | 4 +- Marlin/src/pins/stm32f7/pins_REMRAM_V1.h | 4 +- Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h | 2 +- .../pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h | 2 +- .../pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h | 2 +- .../pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h | 2 +- .../pins/stm32g0/pins_BTT_MANTA_M8P_common.h | 2 +- .../pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h | 2 +- .../pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h | 2 +- .../pins/stm32h7/pins_BTT_SKR_SE_BX_common.h | 2 +- .../pins/stm32h7/pins_BTT_SKR_V3_0_common.h | 4 +- Marlin/src/pins/teensy2/pins_5DPRINT.h | 4 +- Marlin/src/pins/teensy2/pins_BRAINWAVE.h | 4 +- Marlin/src/pins/teensy2/pins_BRAINWAVE_PRO.h | 4 +- Marlin/src/pins/teensy2/pins_PRINTRBOARD.h | 4 +- .../src/pins/teensy2/pins_PRINTRBOARD_REVF.h | 4 +- Marlin/src/pins/teensy2/pins_SAV_MKI.h | 4 +- Marlin/src/pins/teensy2/pins_TEENSY2.h | 4 +- Marlin/src/pins/teensy2/pins_TEENSYLU.h | 4 +- Marlin/src/pins/teensy3/pins_TEENSY31_32.h | 4 +- Marlin/src/pins/teensy3/pins_TEENSY35_36.h | 6 +- Marlin/src/pins/teensy4/pins_TEENSY41.h | 8 +- .../PeripheralPins.c | 2 +- 226 files changed, 380 insertions(+), 466 deletions(-) diff --git a/Marlin/src/HAL/AVR/fastio.h b/Marlin/src/HAL/AVR/fastio.h index 8a5e4650f4..4516d9cd54 100644 --- a/Marlin/src/HAL/AVR/fastio.h +++ b/Marlin/src/HAL/AVR/fastio.h @@ -255,84 +255,6 @@ enum ClockSource2 : uint8_t { #define SET_FOCB(T,V) SET_FOC(T,B,V) #define SET_FOCC(T,V) SET_FOC(T,C,V) -#if 0 - -/** - * PWM availability macros - */ - -// Determine which hardware PWMs are already in use -#define _PWM_CHK_FAN_B(P) (P == E0_AUTO_FAN_PIN || P == E1_AUTO_FAN_PIN || P == E2_AUTO_FAN_PIN || P == E3_AUTO_FAN_PIN || P == E4_AUTO_FAN_PIN || P == E5_AUTO_FAN_PIN || P == E6_AUTO_FAN_PIN || P == E7_AUTO_FAN_PIN || P == CHAMBER_AUTO_FAN_PIN || P == COOLER_AUTO_FAN_PIN) -#if PIN_EXISTS(CONTROLLER_FAN) - #define PWM_CHK_FAN_B(P) (_PWM_CHK_FAN_B(P) || P == CONTROLLER_FAN_PIN) -#else - #define PWM_CHK_FAN_B(P) _PWM_CHK_FAN_B(P) -#endif - -#if ANY_PIN(FAN, FAN1, FAN2, FAN3, FAN4, FAN5, FAN6, FAN7) - #if PIN_EXISTS(FAN7) - #define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN || P == FAN5_PIN || P == FAN6_PIN || P == FAN7_PIN) - #elif PIN_EXISTS(FAN6) - #define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN || P == FAN5_PIN || P == FAN6_PIN) - #elif PIN_EXISTS(FAN5) - #define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN || P == FAN5_PIN) - #elif PIN_EXISTS(FAN4) - #define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN) - #elif PIN_EXISTS(FAN3) - #define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN) - #elif PIN_EXISTS(FAN2) - #define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN) - #elif PIN_EXISTS(FAN1) - #define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN) - #else - #define PWM_CHK_FAN_A(P) (P == FAN0_PIN) - #endif -#else - #define PWM_CHK_FAN_A(P) false -#endif - -#if HAS_MOTOR_CURRENT_PWM - #if PIN_EXISTS(MOTOR_CURRENT_PWM_XY) - #define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E_PIN || P == MOTOR_CURRENT_PWM_E0_PIN || P == MOTOR_CURRENT_PWM_E1_PIN || P == MOTOR_CURRENT_PWM_Z_PIN || P == MOTOR_CURRENT_PWM_XY_PIN) - #elif PIN_EXISTS(MOTOR_CURRENT_PWM_Z) - #define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E_PIN || P == MOTOR_CURRENT_PWM_E0_PIN || P == MOTOR_CURRENT_PWM_E1_PIN || P == MOTOR_CURRENT_PWM_Z_PIN) - #else - #define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E_PIN || P == MOTOR_CURRENT_PWM_E0_PIN || P == MOTOR_CURRENT_PWM_E1_PIN) - #endif -#else - #define PWM_CHK_MOTOR_CURRENT(P) false -#endif - -#ifdef NUM_SERVOS - #if AVR_ATmega2560_FAMILY - #define PWM_CHK_SERVO(P) (P == 5 || (NUM_SERVOS > 12 && P == 6) || (NUM_SERVOS > 24 && P == 46)) // PWMS 3A, 4A & 5A - #elif AVR_ATmega2561_FAMILY - #define PWM_CHK_SERVO(P) (P == 5) // PWM3A - #elif AVR_ATmega1284_FAMILY - #define PWM_CHK_SERVO(P) false - #elif AVR_AT90USB1286_FAMILY - #define PWM_CHK_SERVO(P) (P == 16) // PWM3A - #elif AVR_ATmega328_FAMILY - #define PWM_CHK_SERVO(P) false - #endif -#else - #define PWM_CHK_SERVO(P) false -#endif - -#if ENABLED(BARICUDA) - #if HAS_HEATER_1 && HAS_HEATER_2 - #define PWM_CHK_HEATER(P) (P == HEATER_1_PIN || P == HEATER_2_PIN) - #elif HAS_HEATER_1 - #define PWM_CHK_HEATER(P) (P == HEATER_1_PIN) - #endif -#else - #define PWM_CHK_HEATER(P) false -#endif - -#define PWM_CHK(P) (PWM_CHK_HEATER(P) || PWM_CHK_SERVO(P) || PWM_CHK_MOTOR_CURRENT(P) || PWM_CHK_FAN_A(P) || PWM_CHK_FAN_B(P)) - -#endif // PWM_CHK is not used in Marlin - // define which hardware PWMs are available for the current CPU // all timer 1 PWMS deleted from this list because they are never available #if AVR_ATmega2560_FAMILY diff --git a/Marlin/src/HAL/AVR/inc/SanityCheck.h b/Marlin/src/HAL/AVR/inc/SanityCheck.h index ff1610f741..45aa3a50b9 100644 --- a/Marlin/src/HAL/AVR/inc/SanityCheck.h +++ b/Marlin/src/HAL/AVR/inc/SanityCheck.h @@ -69,8 +69,8 @@ /** * Checks for SOFT PWM */ -#if HAS_FAN0 && FAN_PIN == 9 && DISABLED(FAN_SOFT_PWM) && ENABLED(SPEAKER) - #error "FAN_PIN 9 Hardware PWM uses Timer 2 which conflicts with Arduino AVR Tone Timer (for SPEAKER)." +#if HAS_FAN0 && FAN0_PIN == 9 && DISABLED(FAN_SOFT_PWM) && ENABLED(SPEAKER) + #error "FAN0_PIN 9 Hardware PWM uses Timer 2 which conflicts with Arduino AVR Tone Timer (for SPEAKER)." #error "Disable SPEAKER or enable FAN_SOFT_PWM." #endif diff --git a/Marlin/src/HAL/STM32/inc/SanityCheck.h b/Marlin/src/HAL/STM32/inc/SanityCheck.h index e8ddfa1720..eaad8db4d3 100644 --- a/Marlin/src/HAL/STM32/inc/SanityCheck.h +++ b/Marlin/src/HAL/STM32/inc/SanityCheck.h @@ -55,7 +55,7 @@ * Check for common serial pin conflicts */ #define _CHECK_SERIAL_PIN(N) (( \ - BTN_EN1 == N || DOGLCD_CS == N || HEATER_BED_PIN == N || FAN_PIN == N || \ + BTN_EN1 == N || DOGLCD_CS == N || HEATER_BED_PIN == N || FAN0_PIN == N || \ SDIO_D2_PIN == N || SDIO_D3_PIN == N || SDIO_CK_PIN == N || SDIO_CMD_PIN == N \ )) #define CHECK_SERIAL_PIN(T,N) defined(UART##N##_##T##_PIN) && _CHECK_SERIAL_PIN(UART##N##_##T##_PIN) diff --git a/Marlin/src/HAL/STM32F1/timers.h b/Marlin/src/HAL/STM32F1/timers.h index 0cd807fc84..557522f336 100644 --- a/Marlin/src/HAL/STM32F1/timers.h +++ b/Marlin/src/HAL/STM32F1/timers.h @@ -81,7 +81,7 @@ typedef uint16_t hal_timer_t; #endif #if MB(BTT_SKR_MINI_E3_V1_0, BTT_SKR_E3_DIP, BTT_SKR_MINI_E3_V1_2, MKS_ROBIN_LITE, MKS_ROBIN_E3D, MKS_ROBIN_E3) - // SKR Mini E3 boards use PA8 as FAN_PIN, so TIMER 1 is used for Fan PWM. + // SKR Mini E3 boards use PA8 as FAN0_PIN, so TIMER 1 is used for Fan PWM. #ifdef STM32_HIGH_DENSITY #define MF_TIMER_SERVO0 8 // tone.cpp uses Timer 4 #else diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 1377c8e73f..f137d48859 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -2631,16 +2631,12 @@ #define _NOT_E_AUTO(N,F) (E##N##_AUTO_FAN_PIN != FAN##F##_PIN) #define _HAS_FAN(F) (PIN_EXISTS(FAN##F) \ && CONTROLLER_FAN_PIN != FAN##F##_PIN \ - && _NOT_E_AUTO(0,F) \ - && _NOT_E_AUTO(1,F) \ - && _NOT_E_AUTO(2,F) \ - && _NOT_E_AUTO(3,F) \ - && _NOT_E_AUTO(4,F) \ - && _NOT_E_AUTO(5,F) \ - && _NOT_E_AUTO(6,F) \ - && _NOT_E_AUTO(7,F) \ + && _NOT_E_AUTO(0,F) && _NOT_E_AUTO(1,F) \ + && _NOT_E_AUTO(2,F) && _NOT_E_AUTO(3,F) \ + && _NOT_E_AUTO(4,F) && _NOT_E_AUTO(5,F) \ + && _NOT_E_AUTO(6,F) && _NOT_E_AUTO(7,F) \ && F < MAX_FANS) -#if PIN_EXISTS(FAN) +#if _HAS_FAN(0) #define HAS_FAN0 1 #endif #if _HAS_FAN(1) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index feb01e533a..6052fcb70c 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -682,6 +682,8 @@ #error "PROBE_PT_[123]_[XY] is now defined using PROBE_PT_[123] with an array { x, y }." #elif defined(SQUARE_WAVE_STEPPING) #error "SQUARE_WAVE_STEPPING is now EDGE_STEPPING." +#elif defined(FAN_PIN) + #error "FAN_PIN is now FAN0_PIN." #endif // L64xx stepper drivers have been removed @@ -2371,21 +2373,21 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS */ #if HAS_AUTO_FAN #if HAS_FAN0 - #if PIN_EXISTS(E0_AUTO_FAN) && E0_AUTO_FAN_PIN == FAN_PIN - #error "You cannot set E0_AUTO_FAN_PIN equal to FAN_PIN." - #elif PIN_EXISTS(E1_AUTO_FAN) && E1_AUTO_FAN_PIN == FAN_PIN - #error "You cannot set E1_AUTO_FAN_PIN equal to FAN_PIN." - #elif PIN_EXISTS(E2_AUTO_FAN) && E2_AUTO_FAN_PIN == FAN_PIN - #error "You cannot set E2_AUTO_FAN_PIN equal to FAN_PIN." - #elif PIN_EXISTS(E3_AUTO_FAN) && E3_AUTO_FAN_PIN == FAN_PIN - #error "You cannot set E3_AUTO_FAN_PIN equal to FAN_PIN." + #if PIN_EXISTS(E0_AUTO_FAN) && E0_AUTO_FAN_PIN == FAN0_PIN + #error "You cannot set E0_AUTO_FAN_PIN equal to FAN0_PIN." + #elif PIN_EXISTS(E1_AUTO_FAN) && E1_AUTO_FAN_PIN == FAN0_PIN + #error "You cannot set E1_AUTO_FAN_PIN equal to FAN0_PIN." + #elif PIN_EXISTS(E2_AUTO_FAN) && E2_AUTO_FAN_PIN == FAN0_PIN + #error "You cannot set E2_AUTO_FAN_PIN equal to FAN0_PIN." + #elif PIN_EXISTS(E3_AUTO_FAN) && E3_AUTO_FAN_PIN == FAN0_PIN + #error "You cannot set E3_AUTO_FAN_PIN equal to FAN0_PIN." #endif #endif #endif #if HAS_FAN0 - #if CONTROLLER_FAN_PIN == FAN_PIN - #error "You cannot set CONTROLLER_FAN_PIN equal to FAN_PIN." + #if CONTROLLER_FAN_PIN == FAN0_PIN + #error "You cannot set CONTROLLER_FAN_PIN equal to FAN0_PIN." #elif ENABLED(FAN_SOFT_PWM_REQUIRED) && DISABLED(FAN_SOFT_PWM) #error "FAN_SOFT_PWM is required for your board. Enable it to continue." #endif @@ -2427,8 +2429,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #if NEED_CASE_LIGHT_PIN #if !PIN_EXISTS(CASE_LIGHT) #error "CASE_LIGHT_ENABLE requires CASE_LIGHT_PIN, CASE_LIGHT_USE_NEOPIXEL, or CASE_LIGHT_USE_RGB_LED." - #elif CASE_LIGHT_PIN == FAN_PIN - #error "CASE_LIGHT_PIN conflicts with FAN_PIN. Resolve before continuing." + #elif CASE_LIGHT_PIN == FAN0_PIN + #error "CASE_LIGHT_PIN conflicts with FAN0_PIN. Resolve before continuing." #endif #endif @@ -4191,11 +4193,11 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); #elif !(defined(SPEED_POWER_MIN) && defined(SPEED_POWER_MAX) && defined(SPEED_POWER_STARTUP)) #error "SPINDLE_LASER_USE_PWM equation constant(s) missing." #elif _PIN_CONFLICT(X_MIN) - #error "SPINDLE_LASER_USE_PWM pin conflicts with X_MIN_PIN." + #error "SPINDLE_LASER_PWM_PIN conflicts with X_MIN_PIN." #elif _PIN_CONFLICT(X_MAX) - #error "SPINDLE_LASER_USE_PWM pin conflicts with X_MAX_PIN." + #error "SPINDLE_LASER_PWM_PIN conflicts with X_MAX_PIN." #elif _PIN_CONFLICT(Z_STEP) - #error "SPINDLE_LASER_USE_PWM pin conflicts with Z_STEP_PIN." + #error "SPINDLE_LASER_PWM_PIN conflicts with Z_STEP_PIN." #elif _PIN_CONFLICT(CASE_LIGHT) #error "SPINDLE_LASER_PWM_PIN conflicts with CASE_LIGHT_PIN." #elif _PIN_CONFLICT(E0_AUTO_FAN) @@ -4215,7 +4217,7 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); #elif _PIN_CONFLICT(E7_AUTO_FAN) #error "SPINDLE_LASER_PWM_PIN conflicts with E7_AUTO_FAN_PIN." #elif _PIN_CONFLICT(FAN) - #error "SPINDLE_LASER_PWM_PIN conflicts with FAN_PIN." + #error "SPINDLE_LASER_PWM_PIN conflicts with FAN0_PIN." #elif _PIN_CONFLICT(FAN1) #error "SPINDLE_LASER_PWM_PIN conflicts with FAN1_PIN." #elif _PIN_CONFLICT(FAN2) diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index ba2563ccdc..ad467070d1 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2677,7 +2677,7 @@ void Temperature::init() { #endif #if HAS_FAN0 - INIT_FAN_PIN(FAN_PIN); + INIT_FAN_PIN(FAN0_PIN); #endif #if HAS_FAN1 INIT_FAN_PIN(FAN1_PIN); diff --git a/Marlin/src/pins/esp32/pins_E4D.h b/Marlin/src/pins/esp32/pins_E4D.h index d12b5276b7..15b697a85b 100644 --- a/Marlin/src/pins/esp32/pins_E4D.h +++ b/Marlin/src/pins/esp32/pins_E4D.h @@ -90,7 +90,7 @@ // Heaters / Fans // #define HEATER_0_PIN 2 -#define FAN_PIN 0 +#define FAN0_PIN 0 #define HEATER_BED_PIN 15 // diff --git a/Marlin/src/pins/esp32/pins_ENWI_ESPNP.h b/Marlin/src/pins/esp32/pins_ENWI_ESPNP.h index 80923d972d..e911900b1d 100644 --- a/Marlin/src/pins/esp32/pins_ENWI_ESPNP.h +++ b/Marlin/src/pins/esp32/pins_ENWI_ESPNP.h @@ -101,7 +101,7 @@ // General use mosfets, useful for things like pumps and solenoids // Shift register pins 128, 129, 130 and 131 are broken out and can be used -#define FAN_PIN 132 +#define FAN0_PIN 132 #define FAN1_PIN 134 #define FAN2_PIN 135 #define FAN3_PIN 136 diff --git a/Marlin/src/pins/esp32/pins_ESP32.h b/Marlin/src/pins/esp32/pins_ESP32.h index 266de7e9f6..1c01be8a88 100644 --- a/Marlin/src/pins/esp32/pins_ESP32.h +++ b/Marlin/src/pins/esp32/pins_ESP32.h @@ -79,7 +79,7 @@ // Heaters / Fans // #define HEATER_0_PIN 2 -#define FAN_PIN 13 +#define FAN0_PIN 13 #define HEATER_BED_PIN 4 // SPI diff --git a/Marlin/src/pins/esp32/pins_ESPA_common.h b/Marlin/src/pins/esp32/pins_ESPA_common.h index ca949cdf97..36068150f7 100644 --- a/Marlin/src/pins/esp32/pins_ESPA_common.h +++ b/Marlin/src/pins/esp32/pins_ESPA_common.h @@ -68,7 +68,7 @@ // Heaters / Fans // #define HEATER_0_PIN 2 -#define FAN_PIN 13 +#define FAN0_PIN 13 #define HEATER_BED_PIN 4 // diff --git a/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h b/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h index 37ce4ee94e..791ddcab41 100644 --- a/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h +++ b/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h @@ -104,7 +104,7 @@ // #define HEATER_0_PIN 145 #define HEATER_1_PIN 146 -#define FAN_PIN 147 +#define FAN0_PIN 147 #define FAN1_PIN 148 #define HEATER_BED_PIN 144 diff --git a/Marlin/src/pins/esp32/pins_MRR_ESPE.h b/Marlin/src/pins/esp32/pins_MRR_ESPE.h index f372de9e01..b95e54841e 100644 --- a/Marlin/src/pins/esp32/pins_MRR_ESPE.h +++ b/Marlin/src/pins/esp32/pins_MRR_ESPE.h @@ -102,7 +102,7 @@ // Heaters / Fans // #define HEATER_0_PIN 145 // 2 -#define FAN_PIN 146 // 15 +#define FAN0_PIN 146 // 15 #define HEATER_BED_PIN 144 // 4 #define CONTROLLER_FAN_PIN 147 diff --git a/Marlin/src/pins/esp32/pins_PANDA_common.h b/Marlin/src/pins/esp32/pins_PANDA_common.h index afc9a78aec..2325805676 100644 --- a/Marlin/src/pins/esp32/pins_PANDA_common.h +++ b/Marlin/src/pins/esp32/pins_PANDA_common.h @@ -74,7 +74,7 @@ // #define HEATER_0_PIN 108 #define HEATER_BED_PIN 109 -#define FAN_PIN 118 // FAN0 +#define FAN0_PIN 118 // FAN0 #define FAN1_PIN 119 // FAN1 #ifndef E0_AUTO_FAN_PIN diff --git a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h index 3e8814c3ee..bfef46c945 100644 --- a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h +++ b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h @@ -161,21 +161,21 @@ #define HEATER_0_PIN MOSFET_A_PIN #if FET_ORDER_EFB // Hotend, Fan, Bed - #define FAN_PIN MOSFET_B_PIN + #define FAN0_PIN MOSFET_B_PIN #define HEATER_BED_PIN MOSFET_C_PIN #elif FET_ORDER_EEF // Hotend, Hotend, Fan #define HEATER_1_PIN MOSFET_B_PIN - #define FAN_PIN MOSFET_C_PIN + #define FAN0_PIN MOSFET_C_PIN #elif FET_ORDER_EEB // Hotend, Hotend, Bed #define HEATER_1_PIN MOSFET_B_PIN #define HEATER_BED_PIN MOSFET_C_PIN #elif FET_ORDER_EFF // Hotend, Fan, Fan - #define FAN_PIN MOSFET_B_PIN + #define FAN0_PIN MOSFET_B_PIN #define FAN1_PIN MOSFET_C_PIN #elif FET_ORDER_SF // Spindle, Fan - #define FAN_PIN MOSFET_C_PIN + #define FAN0_PIN MOSFET_C_PIN #else // Non-specific are "EFB" (i.e., "EFBF" or "EFBE") - #define FAN_PIN MOSFET_B_PIN + #define FAN0_PIN MOSFET_B_PIN #define HEATER_BED_PIN MOSFET_C_PIN #if HOTENDS == 1 && DISABLED(HEATERS_PARALLEL) #define FAN1_PIN MOSFET_D_PIN @@ -184,8 +184,8 @@ #endif #endif -#ifndef FAN_PIN - #define FAN_PIN 4 // IO pin. Buffer needed +#ifndef FAN0_PIN + #define FAN0_PIN 4 // IO pin. Buffer needed #endif // diff --git a/Marlin/src/pins/lpc1768/pins_AZSMZ_MINI.h b/Marlin/src/pins/lpc1768/pins_AZSMZ_MINI.h index 657eb8a046..ca8010493b 100644 --- a/Marlin/src/pins/lpc1768/pins_AZSMZ_MINI.h +++ b/Marlin/src/pins/lpc1768/pins_AZSMZ_MINI.h @@ -82,8 +82,8 @@ // EFB #define HEATER_0_PIN P2_04 #define HEATER_BED_PIN P2_05 -#ifndef FAN_PIN - #define FAN_PIN P2_07 +#ifndef FAN0_PIN + #define FAN0_PIN P2_07 #endif #define FAN1_PIN P0_26 diff --git a/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h b/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h index 7215150d0b..7115cea0bd 100644 --- a/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h +++ b/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h @@ -97,8 +97,8 @@ // #define HEATER_0_PIN P2_07 #define HEATER_BED_PIN P2_05 -#ifndef FAN_PIN - #define FAN_PIN P2_04 +#ifndef FAN0_PIN + #define FAN0_PIN P2_04 #endif // @@ -168,7 +168,7 @@ * PWM1.4 P1_23 * PWM1.4 P2_3 E0_STEP_PIN * PWM1.5 P1_24 X_MIN_PIN - * PWM1.5 P2_4 FAN_PIN + * PWM1.5 P2_4 FAN0_PIN * PWM1.6 P1_26 Y_MIN_PIN * PWM1.6 P2_5 HEATER_BED_PIN */ diff --git a/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h b/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h index 2c0d52ef9a..d5f1d0a296 100644 --- a/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h +++ b/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h @@ -74,8 +74,8 @@ // #define HEATER_0_PIN P2_07 #define HEATER_BED_PIN P2_05 -#ifndef FAN_PIN - #define FAN_PIN P2_04 +#ifndef FAN0_PIN + #define FAN0_PIN P2_04 #endif // @@ -147,7 +147,7 @@ * PWM1.4 P1_23 * PWM1.4 P2_3 E0_STEP_PIN * PWM1.5 P1_24 X_MIN_PIN - * PWM1.5 P2_4 FAN_PIN + * PWM1.5 P2_4 FAN0_PIN * PWM1.6 P1_26 Y_MIN_PIN * PWM1.6 P2_5 HEATER_BED_PIN */ diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h index ec74cc640e..2b01b4ce6f 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h @@ -101,8 +101,8 @@ #define HEATER_1_PIN P2_04 #endif #endif -#ifndef FAN_PIN - #define FAN_PIN P2_03 +#ifndef FAN0_PIN + #define FAN0_PIN P2_03 #endif #ifndef HEATER_BED_PIN #define HEATER_BED_PIN P2_05 diff --git a/Marlin/src/pins/lpc1768/pins_EMOTRONIC.h b/Marlin/src/pins/lpc1768/pins_EMOTRONIC.h index 9e62be8edb..43a9b786eb 100644 --- a/Marlin/src/pins/lpc1768/pins_EMOTRONIC.h +++ b/Marlin/src/pins/lpc1768/pins_EMOTRONIC.h @@ -87,7 +87,7 @@ #define HEATER_0_PIN P2_06 // (H2: 10A shared) #define HEATER_1_PIN P2_07 // (H3: 10A shared) -#define FAN_PIN P2_11 // (FAN0: 1A) +#define FAN0_PIN P2_11 // (FAN0: 1A) #define FAN1_PIN P2_13 // (FAN1: 1A) // diff --git a/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h b/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h index aedbd7be60..63760d962b 100644 --- a/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h +++ b/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h @@ -123,7 +123,7 @@ // #define HEATER_BED_PIN P1_19 // Not a PWM pin, software PWM required #define HEATER_0_PIN P3_26 // PWM1[3] -#define FAN_PIN P3_25 // Part cooling fan - connected to PWM1[2] +#define FAN0_PIN P3_25 // Part cooling fan - connected to PWM1[2] #define E0_AUTO_FAN_PIN P0_27 // Extruder cooling fan // diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h index 9f67a01c4e..9218bb168d 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h @@ -101,8 +101,8 @@ #define HEATER_BED_PIN P2_05 #define HEATER_0_PIN P2_07 #define HEATER_1_PIN P2_06 -#ifndef FAN_PIN - #define FAN_PIN P2_04 +#ifndef FAN0_PIN + #define FAN0_PIN P2_04 #endif // diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h index 1235e44ec9..155d53c780 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h @@ -209,8 +209,8 @@ #define HEATER_1_PIN P2_06 #endif #endif -#ifndef FAN_PIN - #define FAN_PIN P2_04 +#ifndef FAN0_PIN + #define FAN0_PIN P2_04 #endif // diff --git a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h index 893a8a755b..b9edef8678 100644 --- a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h +++ b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h @@ -203,15 +203,15 @@ #endif #endif -#ifndef FAN_PIN +#ifndef FAN0_PIN #if EITHER(FET_ORDER_EFB, FET_ORDER_EFF) // Hotend, Fan, Bed or Hotend, Fan, Fan - #define FAN_PIN MOSFET_B_PIN + #define FAN0_PIN MOSFET_B_PIN #elif EITHER(FET_ORDER_EEF, FET_ORDER_SF) // Hotend, Hotend, Fan or Spindle, Fan - #define FAN_PIN MOSFET_C_PIN + #define FAN0_PIN MOSFET_C_PIN #elif FET_ORDER_EEB // Hotend, Hotend, Bed - #define FAN_PIN P1_18 // (4) IO pin. Buffer needed + #define FAN0_PIN P1_18 // (4) IO pin. Buffer needed #else // Non-specific are "EFB" (i.e., "EFBF" or "EFBE") - #define FAN_PIN MOSFET_B_PIN + #define FAN0_PIN MOSFET_B_PIN #endif #endif diff --git a/Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h b/Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h index 30cd76b9a2..996cb52c6c 100644 --- a/Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h +++ b/Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h @@ -87,8 +87,8 @@ #define HEATER_BED2_PIN P2_04 #define HEATER_0_PIN P2_07 #define HEATER_1_PIN P2_06 -#ifndef FAN_PIN - #define FAN_PIN P1_24 +#ifndef FAN0_PIN + #define FAN0_PIN P1_24 #endif #define FAN1_PIN P1_26 diff --git a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h index a9c61cb8c9..9dfb80772f 100644 --- a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h +++ b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h @@ -100,8 +100,8 @@ #define HEATER_BED_PIN P2_07 #define HEATER_0_PIN P2_04 #define HEATER_1_PIN P2_05 -#ifndef FAN_PIN - #define FAN_PIN P0_26 +#ifndef FAN0_PIN + #define FAN0_PIN P0_26 #endif #define FAN1_PIN P1_22 diff --git a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h index eabb338504..2d96194db5 100644 --- a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h +++ b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h @@ -104,8 +104,8 @@ // #define HEATER_BED_PIN P2_07 #define HEATER_0_PIN P2_05 -#ifndef FAN_PIN - #define FAN_PIN P0_26 +#ifndef FAN0_PIN + #define FAN0_PIN P0_26 #endif #define FAN1_PIN P1_25 diff --git a/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h b/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h index f62818dd9f..70f7f748c0 100644 --- a/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h +++ b/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h @@ -179,7 +179,7 @@ #define HEATER_0_PIN P2_03 // EXTRUDER 0 #define HEATER_1_PIN P2_04 // EXTRUDER 1 #define HEATER_BED_PIN P2_05 // BED -#define FAN_PIN P2_01 +#define FAN0_PIN P2_01 #define FAN1_PIN P2_02 #ifndef CONTROLLER_FAN_PIN diff --git a/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h b/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h index 5c9355de29..fa389f4924 100644 --- a/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h +++ b/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h @@ -94,8 +94,8 @@ // #define HEATER_BED_PIN P2_05 #define HEATER_0_PIN P2_07 // FET 1 -#ifndef FAN_PIN - #define FAN_PIN P2_06 // FET 3 +#ifndef FAN0_PIN + #define FAN0_PIN P2_06 // FET 3 #endif // @@ -125,7 +125,7 @@ #define SPINDLE_LASER_ENA_PIN P2_07 // FET 1 #undef HEATER_BED_PIN #define SPINDLE_LASER_PWM_PIN P2_05 // Bed FET - #undef FAN_PIN + #undef FAN0_PIN #define SPINDLE_DIR_PIN P2_06 // FET 3 #endif diff --git a/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h b/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h index 5083a0ed48..2d44a3859b 100644 --- a/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h +++ b/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h @@ -119,8 +119,8 @@ #define HEATER_0_PIN P2_07 // FET 1 #define HEATER_1_PIN P1_23 // FET 2 #define HEATER_2_PIN P1_22 // FET 3 -#ifndef FAN_PIN - #define FAN_PIN P2_06 // FET 4 +#ifndef FAN0_PIN + #define FAN0_PIN P2_06 // FET 4 #endif // @@ -152,7 +152,7 @@ #if HAS_CUTTER #undef HEATER_0_PIN #undef HEATER_BED_PIN - #undef FAN_PIN + #undef FAN0_PIN #define SPINDLE_LASER_ENA_PIN P2_07 // FET 1 #define SPINDLE_LASER_PWM_PIN P2_05 // Bed FET #define SPINDLE_DIR_PIN P2_06 // FET 4 diff --git a/Marlin/src/pins/lpc1769/pins_FLY_CDY.h b/Marlin/src/pins/lpc1769/pins_FLY_CDY.h index ed0ce30eb3..796df12e75 100644 --- a/Marlin/src/pins/lpc1769/pins_FLY_CDY.h +++ b/Marlin/src/pins/lpc1769/pins_FLY_CDY.h @@ -144,8 +144,8 @@ #define HEATER_0_PIN P3_25 #define HEATER_1_PIN P1_20 #define HEATER_2_PIN P1_23 -#ifndef FAN_PIN - #define FAN_PIN P1_18 +#ifndef FAN0_PIN + #define FAN0_PIN P1_18 #endif #define FAN1_PIN P1_21 #define FAN2_PIN P1_24 diff --git a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h index 54b771d318..f49aae0c45 100644 --- a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h +++ b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h @@ -229,8 +229,8 @@ #define FAN2_PIN P2_06 // HE1 for FAN3 #endif #endif -#ifndef FAN_PIN - #define FAN_PIN P2_04 // FAN1 +#ifndef FAN0_PIN + #define FAN0_PIN P2_04 // FAN1 #endif #ifndef FAN1_PIN #define FAN1_PIN P1_04 // FAN2 diff --git a/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h b/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h index 124c8f63c2..c8526611d0 100644 --- a/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h +++ b/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h @@ -85,8 +85,8 @@ #define HEATER_BED_PIN P2_05 #define HEATER_0_PIN P2_07 #define HEATER_1_PIN P1_23 -#ifndef FAN_PIN - #define FAN_PIN P2_06 +#ifndef FAN0_PIN + #define FAN0_PIN P2_06 #endif #define FAN1_PIN P2_04 diff --git a/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h b/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h index 12a7934a3e..8ad3cd2821 100644 --- a/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h +++ b/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h @@ -119,8 +119,8 @@ // #define HEATER_BED_PIN P2_05 #define HEATER_0_PIN P2_07 -#ifndef FAN_PIN - #define FAN_PIN P2_06 +#ifndef FAN0_PIN + #define FAN0_PIN P2_06 #endif #define FAN1_PIN P1_22 diff --git a/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h b/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h index e81295a653..92c5a6f123 100644 --- a/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h +++ b/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h @@ -86,8 +86,8 @@ #define HEATER_1_PIN 7 #define HEATER_2_PIN 8 #define HEATER_BED_PIN 9 -#ifndef FAN_PIN - #define FAN_PIN 3 +#ifndef FAN0_PIN + #define FAN0_PIN 3 #endif #define FAN2_PIN 58 // additional fan or light control output diff --git a/Marlin/src/pins/mega/pins_CNCONTROLS_11.h b/Marlin/src/pins/mega/pins_CNCONTROLS_11.h index d996635c8c..60d68a8607 100644 --- a/Marlin/src/pins/mega/pins_CNCONTROLS_11.h +++ b/Marlin/src/pins/mega/pins_CNCONTROLS_11.h @@ -93,8 +93,8 @@ #define HEATER_3_PIN 46 #define HEATER_BED_PIN 2 -#ifndef FAN_PIN - //#define FAN_PIN 7 // common PWM pin for all tools +#ifndef FAN0_PIN + //#define FAN0_PIN 7 // common PWM pin for all tools #endif // diff --git a/Marlin/src/pins/mega/pins_CNCONTROLS_12.h b/Marlin/src/pins/mega/pins_CNCONTROLS_12.h index ea82fe429c..5c92f92e29 100644 --- a/Marlin/src/pins/mega/pins_CNCONTROLS_12.h +++ b/Marlin/src/pins/mega/pins_CNCONTROLS_12.h @@ -93,8 +93,8 @@ #define HEATER_3_PIN 3 #define HEATER_BED_PIN 24 -#ifndef FAN_PIN - #define FAN_PIN 5 // 5 is PWMtool3 -> 7 is common PWM pin for all tools +#ifndef FAN0_PIN + #define FAN0_PIN 5 // 5 is PWMtool3 -> 7 is common PWM pin for all tools #endif // diff --git a/Marlin/src/pins/mega/pins_CNCONTROLS_15.h b/Marlin/src/pins/mega/pins_CNCONTROLS_15.h index c77e711f9c..bbb0385844 100644 --- a/Marlin/src/pins/mega/pins_CNCONTROLS_15.h +++ b/Marlin/src/pins/mega/pins_CNCONTROLS_15.h @@ -87,7 +87,7 @@ // // Fans // -#define FAN_PIN 8 +#define FAN0_PIN 8 // // Auto fans diff --git a/Marlin/src/pins/mega/pins_EINSTART-S.h b/Marlin/src/pins/mega/pins_EINSTART-S.h index 274684f337..813cbf7dc4 100644 --- a/Marlin/src/pins/mega/pins_EINSTART-S.h +++ b/Marlin/src/pins/mega/pins_EINSTART-S.h @@ -70,7 +70,7 @@ #define HEATER_0_PIN 83 #define HEATER_BED_PIN 38 -#define FAN_PIN 82 +#define FAN0_PIN 82 // // Misc. Functions diff --git a/Marlin/src/pins/mega/pins_ELEFU_3.h b/Marlin/src/pins/mega/pins_ELEFU_3.h index 6cf9e1b4e1..71797a30ff 100644 --- a/Marlin/src/pins/mega/pins_ELEFU_3.h +++ b/Marlin/src/pins/mega/pins_ELEFU_3.h @@ -92,8 +92,8 @@ #define HEATER_2_PIN 17 // 12V PWM3 #define HEATER_BED_PIN 44 // DOUBLE 12V PWM -#ifndef FAN_PIN - #define FAN_PIN 16 // 5V PWM +#ifndef FAN0_PIN + #define FAN0_PIN 16 // 5V PWM #endif // diff --git a/Marlin/src/pins/mega/pins_GT2560_REV_A.h b/Marlin/src/pins/mega/pins_GT2560_REV_A.h index bb251dfb4e..99e2031706 100644 --- a/Marlin/src/pins/mega/pins_GT2560_REV_A.h +++ b/Marlin/src/pins/mega/pins_GT2560_REV_A.h @@ -95,8 +95,8 @@ #define HEATER_0_PIN 2 #define HEATER_1_PIN 3 #define HEATER_BED_PIN 4 -#ifndef FAN_PIN - #define FAN_PIN 7 +#ifndef FAN0_PIN + #define FAN0_PIN 7 #endif // diff --git a/Marlin/src/pins/mega/pins_GT2560_V3.h b/Marlin/src/pins/mega/pins_GT2560_V3.h index 5d2436b684..e4e51c30b3 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V3.h +++ b/Marlin/src/pins/mega/pins_GT2560_V3.h @@ -138,7 +138,7 @@ #define HEATER_1_PIN 3 #define HEATER_2_PIN 2 #define HEATER_BED_PIN 4 -#define FAN_PIN 9 +#define FAN0_PIN 9 #define FAN1_PIN 8 #define FAN2_PIN 7 diff --git a/Marlin/src/pins/mega/pins_HJC2560C_REV2.h b/Marlin/src/pins/mega/pins_HJC2560C_REV2.h index 1b3b7b29af..ea197e50db 100644 --- a/Marlin/src/pins/mega/pins_HJC2560C_REV2.h +++ b/Marlin/src/pins/mega/pins_HJC2560C_REV2.h @@ -92,8 +92,8 @@ #define HEATER_1_PIN 3 #define HEATER_BED_PIN 4 -#ifndef FAN_PIN - #define FAN_PIN 7 //默认不使用PWM_FAN冷却喷嘴,如果需要,则取消注释 +#ifndef FAN0_PIN + #define FAN0_PIN 7 //默认不使用PWM_FAN冷却喷嘴,如果需要,则取消注释 #endif // diff --git a/Marlin/src/pins/mega/pins_INTAMSYS40.h b/Marlin/src/pins/mega/pins_INTAMSYS40.h index ec466fb09f..903849a140 100644 --- a/Marlin/src/pins/mega/pins_INTAMSYS40.h +++ b/Marlin/src/pins/mega/pins_INTAMSYS40.h @@ -99,7 +99,7 @@ #define HEATER_0_PIN 2 // PWM #define HEATER_BED_PIN 4 // PWM #define HEATER_CHAMBER_PIN 3 // PWM -#define FAN_PIN 7 // PWM +#define FAN0_PIN 7 // PWM // // Misc. Functions diff --git a/Marlin/src/pins/mega/pins_LEAPFROG.h b/Marlin/src/pins/mega/pins_LEAPFROG.h index 3762ea98f0..d986728e72 100644 --- a/Marlin/src/pins/mega/pins_LEAPFROG.h +++ b/Marlin/src/pins/mega/pins_LEAPFROG.h @@ -79,7 +79,7 @@ #define HEATER_2_PIN 11 // 13 #define HEATER_BED_PIN 10 // 14/15 -#define FAN_PIN 7 +#define FAN0_PIN 7 // // Misc. Functions diff --git a/Marlin/src/pins/mega/pins_LEAPFROG_XEED2015.h b/Marlin/src/pins/mega/pins_LEAPFROG_XEED2015.h index 7be96c5def..7b3cb2b723 100644 --- a/Marlin/src/pins/mega/pins_LEAPFROG_XEED2015.h +++ b/Marlin/src/pins/mega/pins_LEAPFROG_XEED2015.h @@ -104,7 +104,7 @@ #define HEATER_1_PIN 9 // Misc Connector, pins 5 and 6 (Out3) #define HEATER_BED_PIN 6 // Misc Connector, pins 9(-) and 10(+) (OutA) -#define FAN_PIN 10 // Misc Connector, pins 7(-) and 8 (+) (Out4) +#define FAN0_PIN 10 // Misc Connector, pins 7(-) and 8 (+) (Out4) #define LED_PIN 13 diff --git a/Marlin/src/pins/mega/pins_MALYAN_M180.h b/Marlin/src/pins/mega/pins_MALYAN_M180.h index 3ef606de77..4eb7928825 100644 --- a/Marlin/src/pins/mega/pins_MALYAN_M180.h +++ b/Marlin/src/pins/mega/pins_MALYAN_M180.h @@ -93,8 +93,8 @@ #define HEATER_1_PIN 11 #define HEATER_BED_PIN 45 -#ifndef FAN_PIN - #define FAN_PIN 7 // M106 Sxxx command supported and tested. M107 as well. +#ifndef FAN0_PIN + #define FAN0_PIN 7 // M106 Sxxx command supported and tested. M107 as well. #endif #ifndef FAN_PIN1 diff --git a/Marlin/src/pins/mega/pins_MEGACONTROLLER.h b/Marlin/src/pins/mega/pins_MEGACONTROLLER.h index f45da25f62..19808817c9 100644 --- a/Marlin/src/pins/mega/pins_MEGACONTROLLER.h +++ b/Marlin/src/pins/mega/pins_MEGACONTROLLER.h @@ -114,8 +114,8 @@ #define HEATER_1_PIN 34 #define HEATER_BED_PIN 28 -#ifndef FAN_PIN - #define FAN_PIN 39 +#ifndef FAN0_PIN + #define FAN0_PIN 39 #endif #define FAN1_PIN 35 #define FAN2_PIN 36 diff --git a/Marlin/src/pins/mega/pins_MEGATRONICS.h b/Marlin/src/pins/mega/pins_MEGATRONICS.h index a51615e3d9..b038c9935c 100644 --- a/Marlin/src/pins/mega/pins_MEGATRONICS.h +++ b/Marlin/src/pins/mega/pins_MEGATRONICS.h @@ -89,8 +89,8 @@ #define HEATER_1_PIN 8 #define HEATER_BED_PIN 10 -#ifndef FAN_PIN - #define FAN_PIN 7 // IO pin. Buffer needed +#ifndef FAN0_PIN + #define FAN0_PIN 7 // IO pin. Buffer needed #endif // diff --git a/Marlin/src/pins/mega/pins_MEGATRONICS_2.h b/Marlin/src/pins/mega/pins_MEGATRONICS_2.h index 3f7afe562b..5ebcbefe08 100644 --- a/Marlin/src/pins/mega/pins_MEGATRONICS_2.h +++ b/Marlin/src/pins/mega/pins_MEGATRONICS_2.h @@ -103,8 +103,8 @@ #define HEATER_1_PIN 8 #define HEATER_BED_PIN 10 -#ifndef FAN_PIN - #define FAN_PIN 7 +#ifndef FAN0_PIN + #define FAN0_PIN 7 #endif #define FAN1_PIN 6 diff --git a/Marlin/src/pins/mega/pins_MEGATRONICS_3.h b/Marlin/src/pins/mega/pins_MEGATRONICS_3.h index b194c31b5d..b3edfc5e17 100644 --- a/Marlin/src/pins/mega/pins_MEGATRONICS_3.h +++ b/Marlin/src/pins/mega/pins_MEGATRONICS_3.h @@ -127,8 +127,8 @@ #define HEATER_2_PIN 8 #define HEATER_BED_PIN 10 -#ifndef FAN_PIN - #define FAN_PIN 6 +#ifndef FAN0_PIN + #define FAN0_PIN 6 #endif #define FAN1_PIN 7 diff --git a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h index 221f5124ae..0a1553c64e 100644 --- a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h +++ b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h @@ -166,8 +166,8 @@ #ifndef E0_AUTO_FAN_PIN #define E0_AUTO_FAN_PIN MOSFET_D_PIN -#elif !defined(FAN_PIN) - #define FAN_PIN MOSFET_D_PIN +#elif !defined(FAN0_PIN) + #define FAN0_PIN MOSFET_D_PIN #endif #ifndef E1_AUTO_FAN_PIN diff --git a/Marlin/src/pins/mega/pins_MINITRONICS.h b/Marlin/src/pins/mega/pins_MINITRONICS.h index ddf6d2047d..5145cb496d 100644 --- a/Marlin/src/pins/mega/pins_MINITRONICS.h +++ b/Marlin/src/pins/mega/pins_MINITRONICS.h @@ -90,8 +90,8 @@ #define HEATER_1_PIN 8 // EXTRUDER 2 #define HEATER_BED_PIN 3 // BED -#ifndef FAN_PIN - #define FAN_PIN 9 +#ifndef FAN0_PIN + #define FAN0_PIN 9 #endif // diff --git a/Marlin/src/pins/mega/pins_OVERLORD.h b/Marlin/src/pins/mega/pins_OVERLORD.h index 01c02dafe2..3bccbbc741 100644 --- a/Marlin/src/pins/mega/pins_OVERLORD.h +++ b/Marlin/src/pins/mega/pins_OVERLORD.h @@ -95,7 +95,7 @@ #define HEATER_1_PIN 3 #define HEATER_BED_PIN 4 -#define FAN_PIN 7 // material cooling fan +#define FAN0_PIN 7 // material cooling fan // // SD Card diff --git a/Marlin/src/pins/mega/pins_PICA.h b/Marlin/src/pins/mega/pins_PICA.h index 109859388c..3926978e6d 100644 --- a/Marlin/src/pins/mega/pins_PICA.h +++ b/Marlin/src/pins/mega/pins_PICA.h @@ -108,8 +108,8 @@ #endif #define HEATER_BED_PIN 8 // HEAT-BED -#ifndef FAN_PIN - #define FAN_PIN 9 +#ifndef FAN0_PIN + #define FAN0_PIN 9 #endif #ifndef FAN_2_PIN #define FAN_2_PIN 7 diff --git a/Marlin/src/pins/mega/pins_PICAOLD.h b/Marlin/src/pins/mega/pins_PICAOLD.h index 961462fc52..e15b4637b7 100644 --- a/Marlin/src/pins/mega/pins_PICAOLD.h +++ b/Marlin/src/pins/mega/pins_PICAOLD.h @@ -27,7 +27,7 @@ #define HEATER_0_PIN 9 // E0 #define HEATER_1_PIN 10 // E1 -#define FAN_PIN 11 +#define FAN0_PIN 11 #define FAN2_PIN 12 #include "pins_PICA.h" diff --git a/Marlin/src/pins/mega/pins_SILVER_GATE.h b/Marlin/src/pins/mega/pins_SILVER_GATE.h index 6dc0c3963f..dd26a2714c 100644 --- a/Marlin/src/pins/mega/pins_SILVER_GATE.h +++ b/Marlin/src/pins/mega/pins_SILVER_GATE.h @@ -57,8 +57,8 @@ #define FIL_RUNOUT_PIN 34 // X_MAX unless overridden #endif -#ifndef FAN_PIN - #define FAN_PIN 5 +#ifndef FAN0_PIN + #define FAN0_PIN 5 #endif #define HEATER_0_PIN 7 diff --git a/Marlin/src/pins/mega/pins_WANHAO_ONEPLUS.h b/Marlin/src/pins/mega/pins_WANHAO_ONEPLUS.h index 6ab6c4ceb9..e224e06178 100644 --- a/Marlin/src/pins/mega/pins_WANHAO_ONEPLUS.h +++ b/Marlin/src/pins/mega/pins_WANHAO_ONEPLUS.h @@ -76,7 +76,7 @@ // #define HEATER_0_PIN 4 #define HEATER_BED_PIN 44 -#define FAN_PIN 12 // IO pin. Buffer needed +#define FAN0_PIN 12 // IO pin. Buffer needed // // SD Card diff --git a/Marlin/src/pins/mega/pins_WEEDO_62A.h b/Marlin/src/pins/mega/pins_WEEDO_62A.h index 4165d9e234..7b417c19a1 100644 --- a/Marlin/src/pins/mega/pins_WEEDO_62A.h +++ b/Marlin/src/pins/mega/pins_WEEDO_62A.h @@ -74,7 +74,7 @@ // #define HEATER_0_PIN 10 // EXTRUDER 1 #define HEATER_BED_PIN 8 // BED -#define FAN_PIN 4 // IO pin. Buffer needed +#define FAN0_PIN 4 // IO pin. Buffer needed // // Misc. Functions diff --git a/Marlin/src/pins/pinsDebug_list.h b/Marlin/src/pins/pinsDebug_list.h index 27f20b92f7..16dd2a0c45 100644 --- a/Marlin/src/pins/pinsDebug_list.h +++ b/Marlin/src/pins/pinsDebug_list.h @@ -739,8 +739,8 @@ // // Fans // -#if PIN_EXISTS(FAN) - REPORT_NAME_DIGITAL(__LINE__, FAN_PIN) +#if PIN_EXISTS(FAN0) + REPORT_NAME_DIGITAL(__LINE__, FAN0_PIN) #endif #if PIN_EXISTS(FAN1) REPORT_NAME_DIGITAL(__LINE__, FAN1_PIN) diff --git a/Marlin/src/pins/pins_postprocess.h b/Marlin/src/pins/pins_postprocess.h index 8906c3cafb..708eb7f8e6 100644 --- a/Marlin/src/pins/pins_postprocess.h +++ b/Marlin/src/pins/pins_postprocess.h @@ -377,10 +377,9 @@ #undef W_SERIAL_RX_PIN #endif -#ifndef FAN_PIN - #define FAN_PIN -1 +#ifndef FAN0_PIN + #define FAN0_PIN -1 #endif -#define FAN0_PIN FAN_PIN #ifndef FAN1_PIN #define FAN1_PIN -1 #endif diff --git a/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h index c28fbd059c..be1af14bb1 100644 --- a/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h +++ b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h @@ -128,11 +128,11 @@ #define HEATER_0_PIN 3 #define HEATER_BED_PIN 4 -#ifndef FAN_PIN +#ifndef FAN0_PIN #ifdef MK3_FAN_PINS - #define FAN_PIN 6 + #define FAN0_PIN 6 #else - #define FAN_PIN 8 + #define FAN0_PIN 8 #endif #endif diff --git a/Marlin/src/pins/rambo/pins_EINSY_RETRO.h b/Marlin/src/pins/rambo/pins_EINSY_RETRO.h index dc91c47e9a..315a17ee03 100644 --- a/Marlin/src/pins/rambo/pins_EINSY_RETRO.h +++ b/Marlin/src/pins/rambo/pins_EINSY_RETRO.h @@ -135,8 +135,8 @@ #define HEATER_0_PIN 3 #define HEATER_BED_PIN 4 -#ifndef FAN_PIN - #define FAN_PIN 8 +#ifndef FAN0_PIN + #define FAN0_PIN 8 #endif #define FAN1_PIN 6 diff --git a/Marlin/src/pins/rambo/pins_MINIRAMBO.h b/Marlin/src/pins/rambo/pins_MINIRAMBO.h index 353fbd6641..da55c1ec07 100644 --- a/Marlin/src/pins/rambo/pins_MINIRAMBO.h +++ b/Marlin/src/pins/rambo/pins_MINIRAMBO.h @@ -109,8 +109,8 @@ #endif #define HEATER_BED_PIN 4 -#ifndef FAN_PIN - #define FAN_PIN 8 +#ifndef FAN0_PIN + #define FAN0_PIN 8 #endif #define FAN1_PIN 6 diff --git a/Marlin/src/pins/rambo/pins_RAMBO.h b/Marlin/src/pins/rambo/pins_RAMBO.h index 3a26811538..7c70c7c753 100644 --- a/Marlin/src/pins/rambo/pins_RAMBO.h +++ b/Marlin/src/pins/rambo/pins_RAMBO.h @@ -140,8 +140,8 @@ #define HEATER_2_PIN 6 #define HEATER_BED_PIN 3 -#ifndef FAN_PIN - #define FAN_PIN 8 +#ifndef FAN0_PIN + #define FAN0_PIN 8 #endif #ifndef FAN1_PIN #define FAN1_PIN 6 diff --git a/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h b/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h index ca073f5ab9..2230eaa35b 100644 --- a/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h +++ b/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h @@ -105,8 +105,8 @@ #define HEATER_1_PIN 7 #define HEATER_BED_PIN 3 -#ifndef FAN_PIN - #define FAN_PIN 8 +#ifndef FAN0_PIN + #define FAN0_PIN 8 #endif #define FAN1_PIN 6 #define FAN2_PIN 2 diff --git a/Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h b/Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h index 2c666a6f16..b0eee92c72 100644 --- a/Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h +++ b/Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h @@ -56,8 +56,8 @@ #define Y_STOP_PIN 14 #define Z_STOP_PIN 18 -#ifndef FAN_PIN - #define FAN_PIN 6 +#ifndef FAN0_PIN + #define FAN0_PIN 6 #endif #if ENABLED(CASE_LIGHT_ENABLE) && !PIN_EXISTS(CASE_LIGHT) diff --git a/Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h b/Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h index 7e370a398b..a147eba9fd 100644 --- a/Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h +++ b/Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h @@ -72,7 +72,7 @@ #define HEATER_0_PIN 4 // PG5 / PWM4 #define HEATER_BED_PIN 3 // PE5 / PWM3 -#define FAN_PIN 5 // PE3 / PWM5 +#define FAN0_PIN 5 // PE3 / PWM5 // // Misc. Functions diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h index 7bed4c0884..f9e4517a11 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h @@ -129,8 +129,8 @@ #define HEATER_1_PIN 7 #define HEATER_BED_PIN 8 -#ifndef FAN_PIN - #define FAN_PIN 9 +#ifndef FAN0_PIN + #define FAN0_PIN 9 #endif #ifndef FIL_RUNOUT_PIN diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h index f0e86ac4a7..d79eb8041c 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h @@ -29,7 +29,7 @@ #define BOARD_INFO_NAME "Formbot Raptor2" #define DEFAULT_MACHINE_NAME BOARD_INFO_NAME -#define FAN_PIN 6 +#define FAN0_PIN 6 #ifndef FIL_RUNOUT_PIN #define FIL_RUNOUT_PIN 22 diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h b/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h index a5ca7e8607..e671184a53 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h @@ -126,7 +126,7 @@ #define HEATER_1_PIN 7 #define HEATER_BED_PIN 58 -#define FAN_PIN 9 +#define FAN0_PIN 9 #if HAS_FILAMENT_SENSOR #define FIL_RUNOUT_PIN 4 diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h b/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h index 2fa3d60f67..3babc257b4 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h @@ -132,7 +132,7 @@ #define HEATER_1_PIN 7 #define HEATER_BED_PIN 8 -#define FAN_PIN 9 +#define FAN0_PIN 9 #define FAN1_PIN 12 #define FIL_RUNOUT_PIN 22 diff --git a/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h b/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h index 9f23647c42..9cae3797c3 100644 --- a/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h +++ b/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h @@ -185,7 +185,7 @@ #define HEATER_2_PIN 7 #define HEATER_BED_PIN 8 -#define FAN_PIN 44 +#define FAN0_PIN 44 #define FAN1_PIN 45 #define FAN2_PIN 46 diff --git a/Marlin/src/pins/ramps/pins_K8600.h b/Marlin/src/pins/ramps/pins_K8600.h index 3081b04361..2ffa8c6b10 100644 --- a/Marlin/src/pins/ramps/pins_K8600.h +++ b/Marlin/src/pins/ramps/pins_K8600.h @@ -49,7 +49,7 @@ // Heaters / Fans // #define HEATER_BED_PIN -1 -#define FAN_PIN 8 +#define FAN0_PIN 8 // // Misc. Functions diff --git a/Marlin/src/pins/ramps/pins_K8800.h b/Marlin/src/pins/ramps/pins_K8800.h index a9669764ce..6c4fa1cc7c 100644 --- a/Marlin/src/pins/ramps/pins_K8800.h +++ b/Marlin/src/pins/ramps/pins_K8800.h @@ -74,7 +74,7 @@ // Heaters / Fans // #define HEATER_0_PIN 10 -#define FAN_PIN 8 +#define FAN0_PIN 8 #define CONTROLLER_FAN_PIN 9 // diff --git a/Marlin/src/pins/ramps/pins_MKS_BASE_common.h b/Marlin/src/pins/ramps/pins_MKS_BASE_common.h index 4d3b9844c8..b0f0866bc6 100644 --- a/Marlin/src/pins/ramps/pins_MKS_BASE_common.h +++ b/Marlin/src/pins/ramps/pins_MKS_BASE_common.h @@ -35,7 +35,7 @@ // Heaters / Fans // #define MOSFET_B_PIN 7 - #define FAN_PIN 9 + #define FAN0_PIN 9 // // M3/M4/M5 - Spindle/Laser Control diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_13.h b/Marlin/src/pins/ramps/pins_MKS_GEN_13.h index 3020dc8c31..4cf66ed2cd 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_13.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_13.h @@ -43,7 +43,7 @@ // Heaters / Fans // #define MOSFET_B_PIN 7 -#define FAN_PIN 9 +#define FAN0_PIN 9 // // PSU / SERVO diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_L.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L.h index 9c84c18300..5d1136e4ef 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_L.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_L.h @@ -41,7 +41,7 @@ #define MOSFET_A_PIN 9 // HE0 #define MOSFET_B_PIN 8 // HE1 #define MOSFET_C_PIN 10 // HBED -#define FAN_PIN 7 +#define FAN0_PIN 7 // // CS Pins wired to avoid conflict with the LCD diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h index 543210b117..931843de7c 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V2.h @@ -38,7 +38,7 @@ // Heaters / Fans // #define MOSFET_B_PIN 7 -#define FAN_PIN 9 +#define FAN0_PIN 9 // // CS Pins wired to avoid conflict with the LCD diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h index d1a1b30995..6cea92c15b 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h @@ -38,7 +38,7 @@ // Heaters / Fans // #define MOSFET_B_PIN 7 -#define FAN_PIN 9 +#define FAN0_PIN 9 // // CS Pins wired to avoid conflict with the LCD diff --git a/Marlin/src/pins/ramps/pins_RAMPS.h b/Marlin/src/pins/ramps/pins_RAMPS.h index 08d6475c5e..58b9b78648 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS.h +++ b/Marlin/src/pins/ramps/pins_RAMPS.h @@ -257,15 +257,15 @@ #endif #endif -#ifndef FAN_PIN +#ifndef FAN0_PIN #if EITHER(FET_ORDER_EFB, FET_ORDER_EFF) // Hotend, Fan, Bed or Hotend, Fan, Fan - #define FAN_PIN MOSFET_B_PIN + #define FAN0_PIN MOSFET_B_PIN #elif EITHER(FET_ORDER_EEF, FET_ORDER_SF) // Hotend, Hotend, Fan or Spindle, Fan - #define FAN_PIN MOSFET_C_PIN + #define FAN0_PIN MOSFET_C_PIN #elif FET_ORDER_EEB // Hotend, Hotend, Bed - #define FAN_PIN 4 // IO pin. Buffer needed + #define FAN0_PIN 4 // IO pin. Buffer needed #else // Non-specific are "EFB" (i.e., "EFBF" or "EFBE") - #define FAN_PIN MOSFET_B_PIN + #define FAN0_PIN MOSFET_B_PIN #endif #endif diff --git a/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h b/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h index 4d150946c2..8c65b2e0b4 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h @@ -33,7 +33,7 @@ // Heaters / Fans // #define MOSFET_B_PIN 7 -#define FAN_PIN 9 +#define FAN0_PIN 9 #define FIL_RUNOUT_PIN 2 #if NUM_RUNOUT_SENSORS >= 2 diff --git a/Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h b/Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h index 3ffa940c48..ece072b509 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h @@ -36,7 +36,7 @@ // band (case light). Thus the hotend and controller fans are always-on. #if ENABLED(CASE_LIGHT_ENABLE) - #undef FAN_PIN + #undef FAN0_PIN #ifndef CASE_LIGHT_PIN #define CASE_LIGHT_PIN MOSFET_B_PIN #endif diff --git a/Marlin/src/pins/ramps/pins_RAMPS_OLD.h b/Marlin/src/pins/ramps/pins_RAMPS_OLD.h index 526045c155..663c6e4792 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_OLD.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_OLD.h @@ -88,14 +88,14 @@ #if ENABLED(RAMPS_V_1_0) #define HEATER_0_PIN 12 #define HEATER_BED_PIN -1 - #ifndef FAN_PIN - #define FAN_PIN 11 + #ifndef FAN0_PIN + #define FAN0_PIN 11 #endif #else // RAMPS_V_1_1 or RAMPS_V_1_2 #define HEATER_0_PIN 10 #define HEATER_BED_PIN 8 - #ifndef FAN_PIN - #define FAN_PIN 9 + #ifndef FAN0_PIN + #define FAN0_PIN 9 #endif #endif diff --git a/Marlin/src/pins/ramps/pins_RAMPS_S_12.h b/Marlin/src/pins/ramps/pins_RAMPS_S_12.h index e74480a0d4..bb1e276416 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_S_12.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_S_12.h @@ -172,12 +172,12 @@ #if MB(RAMPS_S_12_EEFB) // Hotend0, Hotend1, Fan, Bed #define HEATER_1_PIN RAMPS_S_HE_1 - #define FAN_PIN RAMPS_S_HE_2 + #define FAN0_PIN RAMPS_S_HE_2 #elif MB(RAMPS_S_12_EEEB) // Hotend0, Hotend1, Hotend2, Bed #define HEATER_1_PIN RAMPS_S_HE_1 #define HEATER_2_PIN RAMPS_S_HE_2 #elif MB(RAMPS_S_12_EFFB) // Hotend, Fan0, Fan1, Bed - #define FAN_PIN RAMPS_S_HE_1 + #define FAN0_PIN RAMPS_S_HE_1 #define FAN1_PIN RAMPS_S_HE_2 #endif diff --git a/Marlin/src/pins/ramps/pins_RIGIDBOARD.h b/Marlin/src/pins/ramps/pins_RIGIDBOARD.h index d1824d3813..8eab6c7d9b 100644 --- a/Marlin/src/pins/ramps/pins_RIGIDBOARD.h +++ b/Marlin/src/pins/ramps/pins_RIGIDBOARD.h @@ -84,8 +84,8 @@ #undef HEATER_BED_PIN #define HEATER_BED_PIN 10 -#ifndef FAN_PIN - #define FAN_PIN 8 // Same as RAMPS_13_EEF +#ifndef FAN0_PIN + #define FAN0_PIN 8 // Same as RAMPS_13_EEF #endif // diff --git a/Marlin/src/pins/ramps/pins_RUMBA.h b/Marlin/src/pins/ramps/pins_RUMBA.h index 6b1f4c5691..3c6873e765 100644 --- a/Marlin/src/pins/ramps/pins_RUMBA.h +++ b/Marlin/src/pins/ramps/pins_RUMBA.h @@ -159,8 +159,8 @@ #define HEATER_3_PIN 8 #define HEATER_BED_PIN 9 -#ifndef FAN_PIN - #define FAN_PIN 7 +#ifndef FAN0_PIN + #define FAN0_PIN 7 #endif #ifndef FAN1_PIN #define FAN1_PIN 8 diff --git a/Marlin/src/pins/ramps/pins_TANGO.h b/Marlin/src/pins/ramps/pins_TANGO.h index 936751e9eb..54dd443399 100644 --- a/Marlin/src/pins/ramps/pins_TANGO.h +++ b/Marlin/src/pins/ramps/pins_TANGO.h @@ -30,7 +30,7 @@ #define BOARD_INFO_NAME "Tango" -#define FAN_PIN 8 +#define FAN0_PIN 8 #define FAN1_PIN -1 #ifndef E0_AUTO_FAN_PIN diff --git a/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h b/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h index dd6fb2fa70..a00720b576 100644 --- a/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h +++ b/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h @@ -138,7 +138,7 @@ #define HEATER_1_PIN 11 #define HEATER_BED_PIN 8 -#define FAN_PIN 9 +#define FAN0_PIN 9 #define FAN1_PIN 5 // Normally this would be a servo pin // XXX Runout support unknown? diff --git a/Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h b/Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h index 780ab8daa4..0cf6e3b18b 100644 --- a/Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h +++ b/Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h @@ -95,7 +95,7 @@ #define HEATER_1_PIN 10 #define HEATER_BED_PIN 8 -#define FAN_PIN 9 +#define FAN0_PIN 9 #define FAN2_PIN 5 // Normally this would be a servo pin //#define NUM_RUNOUT_SENSORS 0 diff --git a/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h index f9856e04f5..0e6e8ee41d 100644 --- a/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h +++ b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h @@ -46,7 +46,7 @@ // // Heaters / Fans // -#define FAN_PIN 9 // FAN0 +#define FAN0_PIN 9 // FAN0 #define FAN1_PIN 7 // FAN1 #define FAN2_PIN 44 // FAN2 #ifndef E0_AUTO_FAN_PIN diff --git a/Marlin/src/pins/ramps/pins_TT_OSCAR.h b/Marlin/src/pins/ramps/pins_TT_OSCAR.h index c0247c7b47..5150ad55b6 100644 --- a/Marlin/src/pins/ramps/pins_TT_OSCAR.h +++ b/Marlin/src/pins/ramps/pins_TT_OSCAR.h @@ -192,7 +192,7 @@ #define HEATER_2_PIN 44 #define HEATER_BED_PIN 8 -#define FAN_PIN 9 +#define FAN0_PIN 9 #if EXTRUDERS >= 5 #define HEATER_4_PIN 6 diff --git a/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h b/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h index 4ee0a6950d..16400be059 100644 --- a/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h +++ b/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h @@ -112,8 +112,8 @@ #define HEATER_1_PIN 3 #define HEATER_BED_PIN 4 -#ifndef FAN_PIN - #define FAN_PIN 7 +#ifndef FAN0_PIN + #define FAN0_PIN 7 #endif #ifndef E0_AUTO_FAN_PIN diff --git a/Marlin/src/pins/ramps/pins_ULTIMAKER.h b/Marlin/src/pins/ramps/pins_ULTIMAKER.h index e3e91428df..c29318c372 100644 --- a/Marlin/src/pins/ramps/pins_ULTIMAKER.h +++ b/Marlin/src/pins/ramps/pins_ULTIMAKER.h @@ -99,8 +99,8 @@ #define HEATER_1_PIN 3 #define HEATER_BED_PIN 4 -#ifndef FAN_PIN - #define FAN_PIN 7 +#ifndef FAN0_PIN + #define FAN0_PIN 7 #endif // diff --git a/Marlin/src/pins/ramps/pins_VORON.h b/Marlin/src/pins/ramps/pins_VORON.h index f56b0cb8fc..c928a1fb65 100644 --- a/Marlin/src/pins/ramps/pins_VORON.h +++ b/Marlin/src/pins/ramps/pins_VORON.h @@ -36,8 +36,8 @@ // // Heaters / Fans // -#undef FAN_PIN -#define FAN_PIN 5 // Using the pin for the controller fan since controller fan is always on. +#undef FAN0_PIN +#define FAN0_PIN 5 // Using the pin for the controller fan since controller fan is always on. #define CONTROLLER_FAN_PIN 8 // diff --git a/Marlin/src/pins/ramps/pins_ZRIB_V53.h b/Marlin/src/pins/ramps/pins_ZRIB_V53.h index 050516791e..74188190fe 100644 --- a/Marlin/src/pins/ramps/pins_ZRIB_V53.h +++ b/Marlin/src/pins/ramps/pins_ZRIB_V53.h @@ -164,7 +164,7 @@ #define HEATER_0_PIN 10 #define HEATER_1_PIN 7 -#define FAN_PIN 9 +#define FAN0_PIN 9 #define HEATER_BED_PIN 8 #define FAN1_PIN 6 diff --git a/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h b/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h index 1c67903a21..e4603591d1 100644 --- a/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h +++ b/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h @@ -136,7 +136,7 @@ #define HEATER_3_PIN 5 #define HEATER_BED_PIN 8 -#define FAN_PIN 9 +#define FAN0_PIN 9 // // Misc. Functions diff --git a/Marlin/src/pins/sam/pins_ADSK.h b/Marlin/src/pins/sam/pins_ADSK.h index 425d6d45af..7e47f122f6 100644 --- a/Marlin/src/pins/sam/pins_ADSK.h +++ b/Marlin/src/pins/sam/pins_ADSK.h @@ -116,7 +116,7 @@ A stepper for E0 extruder // #define HEATER_0_PIN 55 // "Hold": Analog pin 1, Digital pin 55 #define HEATER_BED_PIN 57 // "CoolEn": Analog pin 3, Digital pin 57 -#define FAN_PIN 54 // "Abort": Analog pin 0, Digital pin 54 +#define FAN0_PIN 54 // "Abort": Analog pin 0, Digital pin 54 #undef E0_AUTO_FAN_PIN #define E0_AUTO_FAN_PIN 56 // "Resume": Analog pin 2, Digital pin 56 diff --git a/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h b/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h index 76431937a7..bdbea60150 100644 --- a/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h +++ b/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h @@ -113,8 +113,8 @@ #define HEATER_3_PIN 97 // PC20 on piggy #define HEATER_BED_PIN 69 // PA0 -#ifndef FAN_PIN - #define FAN_PIN 92 // PA5 +#ifndef FAN0_PIN + #define FAN0_PIN 92 // PA5 #endif #define FAN1_PIN 31 // PA7 diff --git a/Marlin/src/pins/sam/pins_ARCHIM1.h b/Marlin/src/pins/sam/pins_ARCHIM1.h index d9f1dcbf94..e01b93a018 100644 --- a/Marlin/src/pins/sam/pins_ARCHIM1.h +++ b/Marlin/src/pins/sam/pins_ARCHIM1.h @@ -153,8 +153,8 @@ #define HEATER_2_PIN 8 // D8 PC22 FET_PWM5 #define HEATER_BED_PIN 9 // D9 PC21 BED_PWM -#ifndef FAN_PIN - #define FAN_PIN 4 // D4 PC26 FET_PWM1 +#ifndef FAN0_PIN + #define FAN0_PIN 4 // D4 PC26 FET_PWM1 #endif #define FAN1_PIN 5 // D5 PC25 FET_PWM2 diff --git a/Marlin/src/pins/sam/pins_ARCHIM2.h b/Marlin/src/pins/sam/pins_ARCHIM2.h index 503b29f15b..de06a72809 100644 --- a/Marlin/src/pins/sam/pins_ARCHIM2.h +++ b/Marlin/src/pins/sam/pins_ARCHIM2.h @@ -174,8 +174,8 @@ #define HEATER_2_PIN 8 // D8 PC22 FET_PWM5 #define HEATER_BED_PIN 9 // D9 PC21 BED_PWM -#ifndef FAN_PIN - #define FAN_PIN 4 // D4 PC26 FET_PWM1 +#ifndef FAN0_PIN + #define FAN0_PIN 4 // D4 PC26 FET_PWM1 #endif #define FAN1_PIN 5 // D5 PC25 FET_PWM2 diff --git a/Marlin/src/pins/sam/pins_CNCONTROLS_15D.h b/Marlin/src/pins/sam/pins_CNCONTROLS_15D.h index d44f6490da..3d15f37e47 100644 --- a/Marlin/src/pins/sam/pins_CNCONTROLS_15D.h +++ b/Marlin/src/pins/sam/pins_CNCONTROLS_15D.h @@ -91,7 +91,7 @@ // // Fans // -//#define FAN_PIN 8 +//#define FAN0_PIN 8 // // Auto fans diff --git a/Marlin/src/pins/sam/pins_DUE3DOM.h b/Marlin/src/pins/sam/pins_DUE3DOM.h index 81eca3e4b1..5d47f28aba 100644 --- a/Marlin/src/pins/sam/pins_DUE3DOM.h +++ b/Marlin/src/pins/sam/pins_DUE3DOM.h @@ -96,8 +96,8 @@ #define HEATER_1_PIN 8 // HOTEND1 MOSFET #define HEATER_BED_PIN 39 // BED MOSFET -#ifndef FAN_PIN - #define FAN_PIN 11 // FAN1 header on board - PRINT FAN +#ifndef FAN0_PIN + #define FAN0_PIN 11 // FAN1 header on board - PRINT FAN #endif #define FAN1_PIN 9 // FAN2 header on board - CONTROLLER FAN #define FAN2_PIN 12 // FAN3 header on board - EXTRUDER0 FAN diff --git a/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h b/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h index 7754fa9329..9d56d36264 100644 --- a/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h +++ b/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h @@ -84,8 +84,8 @@ #define HEATER_0_PIN 13 // HOTEND0 MOSFET #define HEATER_BED_PIN 7 // BED MOSFET -#ifndef FAN_PIN - #define FAN_PIN 11 // FAN1 header on board - PRINT FAN +#ifndef FAN0_PIN + #define FAN0_PIN 11 // FAN1 header on board - PRINT FAN #endif #define FAN1_PIN 12 // FAN2 header on board - CONTROLLER FAN #define FAN2_PIN 9 // FAN3 header on board - EXTRUDER0 FAN diff --git a/Marlin/src/pins/sam/pins_KRATOS32.h b/Marlin/src/pins/sam/pins_KRATOS32.h index f7867f9b26..97449c2d83 100644 --- a/Marlin/src/pins/sam/pins_KRATOS32.h +++ b/Marlin/src/pins/sam/pins_KRATOS32.h @@ -126,8 +126,8 @@ #define HEATER_3_PIN 10 #define HEATER_BED_PIN 7 // BED -#ifndef FAN_PIN - #define FAN_PIN 9 +#ifndef FAN0_PIN + #define FAN0_PIN 9 #endif #define FAN1_PIN 8 diff --git a/Marlin/src/pins/sam/pins_PRINTRBOARD_G2.h b/Marlin/src/pins/sam/pins_PRINTRBOARD_G2.h index aa01a9227f..8fd1843ab5 100644 --- a/Marlin/src/pins/sam/pins_PRINTRBOARD_G2.h +++ b/Marlin/src/pins/sam/pins_PRINTRBOARD_G2.h @@ -138,8 +138,8 @@ #define HEATER_0_PIN 40 // PA5 #define HEATER_BED_PIN 41 // PB24 -#ifndef FAN_PIN - #define FAN_PIN 13 // PB27 Fan1A +#ifndef FAN0_PIN + #define FAN0_PIN 13 // PB27 Fan1A #endif #define FAN1_PIN 58 // PA6 Fan1B diff --git a/Marlin/src/pins/sam/pins_RADDS.h b/Marlin/src/pins/sam/pins_RADDS.h index af24014614..e3de444278 100644 --- a/Marlin/src/pins/sam/pins_RADDS.h +++ b/Marlin/src/pins/sam/pins_RADDS.h @@ -196,8 +196,8 @@ #define HEATER_BED_PIN 7 // BED #endif -#ifndef FAN_PIN - #define FAN_PIN 9 +#ifndef FAN0_PIN + #define FAN0_PIN 9 #endif #define FAN1_PIN 8 diff --git a/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h b/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h index 00eba994a8..75d758439c 100644 --- a/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h +++ b/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h @@ -124,8 +124,8 @@ #define HEATER_2_PIN 11 #define HEATER_BED_PIN 8 -#ifndef FAN_PIN - #define FAN_PIN 12 +#ifndef FAN0_PIN + #define FAN0_PIN 12 #endif // diff --git a/Marlin/src/pins/sam/pins_RURAMPS4D_11.h b/Marlin/src/pins/sam/pins_RURAMPS4D_11.h index f8ea65a369..fb14c5a81f 100644 --- a/Marlin/src/pins/sam/pins_RURAMPS4D_11.h +++ b/Marlin/src/pins/sam/pins_RURAMPS4D_11.h @@ -122,8 +122,8 @@ #define HEATER_2_PIN 11 #define HEATER_BED_PIN 7 // BED H1 -#ifndef FAN_PIN - #define FAN_PIN 9 +#ifndef FAN0_PIN + #define FAN0_PIN 9 #endif #define FAN1_PIN 8 #define CONTROLLER_FAN_PIN -1 diff --git a/Marlin/src/pins/sam/pins_RURAMPS4D_13.h b/Marlin/src/pins/sam/pins_RURAMPS4D_13.h index 58cb3f7a75..c65e6e24cb 100644 --- a/Marlin/src/pins/sam/pins_RURAMPS4D_13.h +++ b/Marlin/src/pins/sam/pins_RURAMPS4D_13.h @@ -114,7 +114,7 @@ #define HEATER_2_PIN 11 #define HEATER_BED_PIN 7 // BED H1 -#define FAN_PIN 9 +#define FAN0_PIN 9 #define FAN1_PIN 8 #define CONTROLLER_FAN_PIN -1 diff --git a/Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h b/Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h index fd30c2b69a..4445cf24e8 100644 --- a/Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h +++ b/Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h @@ -120,8 +120,8 @@ #define HEATER_3_PIN 9 #define HEATER_BED_PIN 2 -#ifndef FAN_PIN - #define FAN_PIN 6 +#ifndef FAN0_PIN + #define FAN0_PIN 6 #endif #define FAN2_PIN 5 diff --git a/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h b/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h index 2a84d964ea..5cd2584104 100644 --- a/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h +++ b/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h @@ -102,7 +102,7 @@ // #define HEATER_0_PIN 6 #define HEATER_BED_PIN 7 -#define FAN_PIN 8 +#define FAN0_PIN 8 #define FAN1_PIN 9 // diff --git a/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h b/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h index 2343dbcf82..13434fffeb 100644 --- a/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h +++ b/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h @@ -152,7 +152,7 @@ #define HEATER_BED_PIN 7 // The board has 4 PWM fans, use and configure as desired -#define FAN_PIN 8 +#define FAN0_PIN 8 #define FAN1_PIN 9 #define FAN2_PIN 30 #define FAN3_PIN 31 diff --git a/Marlin/src/pins/samd/pins_MINITRONICS20.h b/Marlin/src/pins/samd/pins_MINITRONICS20.h index da1919cd2b..12438fe57e 100644 --- a/Marlin/src/pins/samd/pins_MINITRONICS20.h +++ b/Marlin/src/pins/samd/pins_MINITRONICS20.h @@ -149,7 +149,7 @@ #define SPINDLE_LASER_PWM_PIN 6 // The board has 4 PWM fans, use and configure as desired -#define FAN_PIN 24 +#define FAN0_PIN 24 // // LCD / Controller diff --git a/Marlin/src/pins/samd/pins_RAMPS_144.h b/Marlin/src/pins/samd/pins_RAMPS_144.h index e5091e5cdc..ed10c4d284 100644 --- a/Marlin/src/pins/samd/pins_RAMPS_144.h +++ b/Marlin/src/pins/samd/pins_RAMPS_144.h @@ -123,7 +123,7 @@ #else #define HEATER_1_PIN 8 #endif -#define FAN_PIN 9 +#define FAN0_PIN 9 #define FAN1_PIN 7 #define FAN2_PIN 12 diff --git a/Marlin/src/pins/sanguino/pins_ANET_10.h b/Marlin/src/pins/sanguino/pins_ANET_10.h index f6816bfb95..176bb2be12 100644 --- a/Marlin/src/pins/sanguino/pins_ANET_10.h +++ b/Marlin/src/pins/sanguino/pins_ANET_10.h @@ -148,8 +148,8 @@ #define HEATER_0_PIN 13 // (extruder) #define HEATER_BED_PIN 12 // (bed) -#ifndef FAN_PIN - #define FAN_PIN 4 +#ifndef FAN0_PIN + #define FAN0_PIN 4 #endif // diff --git a/Marlin/src/pins/sanguino/pins_AZTEEG_X1.h b/Marlin/src/pins/sanguino/pins_AZTEEG_X1.h index 76d53c6021..5767bc993b 100644 --- a/Marlin/src/pins/sanguino/pins_AZTEEG_X1.h +++ b/Marlin/src/pins/sanguino/pins_AZTEEG_X1.h @@ -29,6 +29,6 @@ #define BOARD_INFO_NAME "Azteeg X1" -#define FAN_PIN 4 +#define FAN0_PIN 4 #include "pins_SANGUINOLOLU_12.h" // ... SANGUINOLOLU_11 diff --git a/Marlin/src/pins/sanguino/pins_GEN7_12.h b/Marlin/src/pins/sanguino/pins_GEN7_12.h index ade59fd807..0bf65c37cd 100644 --- a/Marlin/src/pins/sanguino/pins_GEN7_12.h +++ b/Marlin/src/pins/sanguino/pins_GEN7_12.h @@ -117,8 +117,8 @@ #define HEATER_0_PIN 4 #define HEATER_BED_PIN 3 -#if !defined(FAN_PIN) && GEN7_VERSION < 13 // Gen7 v1.3 removed the fan pin - #define FAN_PIN 31 +#if !defined(FAN0_PIN) && GEN7_VERSION < 13 // Gen7 v1.3 removed the fan pin + #define FAN0_PIN 31 #endif // diff --git a/Marlin/src/pins/sanguino/pins_MELZI.h b/Marlin/src/pins/sanguino/pins_MELZI.h index be1b7934c8..a0c7050a91 100644 --- a/Marlin/src/pins/sanguino/pins_MELZI.h +++ b/Marlin/src/pins/sanguino/pins_MELZI.h @@ -33,8 +33,8 @@ #define IS_MELZI 1 -#ifndef FAN_PIN - #define FAN_PIN 4 +#ifndef FAN0_PIN + #define FAN0_PIN 4 #endif // Alter timing for graphical display diff --git a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h index a61692c9f1..7984e64b5f 100644 --- a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h +++ b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h @@ -99,7 +99,7 @@ PIN: 2 Port: B2 Z_DIR_PIN protected PIN: 3 Port: B3 Z_STEP_PIN protected PIN: 4 Port: B4 AVR_SS_PIN protected - . FAN_PIN protected + . FAN0_PIN protected . SD_SS_PIN protected PIN: 5 Port: B5 AVR_MOSI_PIN Output = 1 . SD_MOSI_PIN Output = 1 diff --git a/Marlin/src/pins/sanguino/pins_OMCA.h b/Marlin/src/pins/sanguino/pins_OMCA.h index 7f18283d1c..65f9006adb 100644 --- a/Marlin/src/pins/sanguino/pins_OMCA.h +++ b/Marlin/src/pins/sanguino/pins_OMCA.h @@ -128,8 +128,8 @@ #define HEATER_0_PIN 3 // DONE PWM on RIGHT connector #define HEATER_BED_PIN 4 -#ifndef FAN_PIN - #define FAN_PIN 14 // PWM on MIDDLE connector +#ifndef FAN0_PIN + #define FAN0_PIN 14 // PWM on MIDDLE connector #endif // diff --git a/Marlin/src/pins/sanguino/pins_OMCA_A.h b/Marlin/src/pins/sanguino/pins_OMCA_A.h index a3ceb76a0d..aa7f79d602 100644 --- a/Marlin/src/pins/sanguino/pins_OMCA_A.h +++ b/Marlin/src/pins/sanguino/pins_OMCA_A.h @@ -123,8 +123,8 @@ // #define HEATER_0_PIN 4 -#ifndef FAN_PIN - #define FAN_PIN 3 +#ifndef FAN0_PIN + #define FAN0_PIN 3 #endif // diff --git a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h index a8475fb326..1459eab646 100644 --- a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h +++ b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h @@ -100,8 +100,8 @@ // #define HEATER_0_PIN 13 // (extruder) -#ifndef FAN_PIN - #define FAN_PIN 4 // Works for Panelolu2 too +#ifndef FAN0_PIN + #define FAN0_PIN 4 // Works for Panelolu2 too #endif #if DISABLED(SANGUINOLOLU_V_1_2) diff --git a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_12.h b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_12.h index 2209569261..37d1e7030b 100644 --- a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_12.h +++ b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_12.h @@ -52,8 +52,8 @@ #endif #define E0_ENABLE_PIN 14 -#if !defined(FAN_PIN) && ENABLED(LCD_I2C_PANELOLU2) - #define FAN_PIN 4 // Uses Transistor1 (PWM) on Panelolu2's Sanguino Adapter Board to drive the fan +#if !defined(FAN0_PIN) && ENABLED(LCD_I2C_PANELOLU2) + #define FAN0_PIN 4 // Uses Transistor1 (PWM) on Panelolu2's Sanguino Adapter Board to drive the fan #endif #define SANGUINOLOLU_V_1_2 diff --git a/Marlin/src/pins/sanguino/pins_SETHI.h b/Marlin/src/pins/sanguino/pins_SETHI.h index a2240b385b..31d5585cc8 100644 --- a/Marlin/src/pins/sanguino/pins_SETHI.h +++ b/Marlin/src/pins/sanguino/pins_SETHI.h @@ -97,13 +97,8 @@ #define HEATER_0_PIN 4 #define HEATER_BED_PIN 3 -#ifndef FAN_PIN - #if GEN7_VERSION >= 13 - // Gen7 v1.3 removed the fan pin - #define FAN_PIN -1 - #else - #define FAN_PIN 31 - #endif +#if !defined(FAN0_PIN) && GEN7_VERSION < 13 // Gen7 v1.3 removed the fan pin + #define FAN0_PIN 31 #endif // diff --git a/Marlin/src/pins/sanguino/pins_STB_11.h b/Marlin/src/pins/sanguino/pins_STB_11.h index 1bda25b3d4..5c6c5d4f82 100644 --- a/Marlin/src/pins/sanguino/pins_STB_11.h +++ b/Marlin/src/pins/sanguino/pins_STB_11.h @@ -28,8 +28,8 @@ #define BOARD_INFO_NAME "STB V1.1" -#ifndef FAN_PIN - #define FAN_PIN 4 // Works for Panelolu2 too +#ifndef FAN0_PIN + #define FAN0_PIN 4 // Works for Panelolu2 too #endif #include "pins_SANGUINOLOLU_12.h" // ... SANGUINOLOLU_11 diff --git a/Marlin/src/pins/sanguino/pins_ZMIB_V2.h b/Marlin/src/pins/sanguino/pins_ZMIB_V2.h index bd9230c32a..5b0b996d18 100644 --- a/Marlin/src/pins/sanguino/pins_ZMIB_V2.h +++ b/Marlin/src/pins/sanguino/pins_ZMIB_V2.h @@ -79,7 +79,7 @@ * PIN: 25 Port: A6 FIL_RUNOUT_PIN * PIN: 26 Port: A5 E0_DIR_PIN * PIN: 27 Port: A4 E0_STEP_PIN - * PIN: 28 Port: A3 FAN_PIN + * PIN: 28 Port: A3 FAN0_PIN * PIN: 29 Port: A2 EXP1_3(BTN_ENC) * ADC_KEY_PIN * PIN: 30 Port: A1 TEMP_0_PIN @@ -144,7 +144,7 @@ // #define HEATER_0_PIN 0 #define HEATER_BED_PIN 1 -#define FAN_PIN 28 +#define FAN0_PIN 28 #define FAN1_PIN -1 // diff --git a/Marlin/src/pins/sensitive_pins.h b/Marlin/src/pins/sensitive_pins.h index 288bcc904e..abccac9dad 100644 --- a/Marlin/src/pins/sensitive_pins.h +++ b/Marlin/src/pins/sensitive_pins.h @@ -899,8 +899,8 @@ #define _Z_PROBE #endif -#if PIN_EXISTS(FAN) - #define _FAN0 FAN_PIN, +#if PIN_EXISTS(FAN0) + #define _FAN0 FAN0_PIN, #else #define _FAN0 #endif diff --git a/Marlin/src/pins/stm32f1/pins_BEAST.h b/Marlin/src/pins/stm32f1/pins_BEAST.h index 4dafe2f273..80967bad07 100644 --- a/Marlin/src/pins/stm32f1/pins_BEAST.h +++ b/Marlin/src/pins/stm32f1/pins_BEAST.h @@ -89,8 +89,8 @@ #define HEATER_BED_PIN PB9 // BED -#ifndef FAN_PIN - #define FAN_PIN PB10 +#ifndef FAN0_PIN + #define FAN0_PIN PB10 #endif #define FAN_SOFT_PWM_REQUIRED diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_CR6.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_CR6.h index e3e91ff35a..00dc0613f2 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_CR6.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_CR6.h @@ -112,7 +112,7 @@ #define HEATER_0_PIN PC8 // HEATER1 #define HEATER_BED_PIN PC9 // HOT BED -#define FAN_PIN PC6 // FAN +#define FAN0_PIN PC6 // FAN #define FAN_SOFT_PWM_REQUIRED #define CONTROLLER_FAN_PIN PC7 diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h index 5007de25da..8fb194c27f 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h @@ -145,7 +145,7 @@ // #define HEATER_0_PIN PC8 // "HE" #define HEATER_BED_PIN PC9 // "HB" -#define FAN_PIN PA8 // "FAN0" +#define FAN0_PIN PA8 // "FAN0" // // USB connect control diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h index c0428279f0..7e6798deaf 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h @@ -37,7 +37,7 @@ #undef NO_EEPROM_SELECTED #endif -#define FAN_PIN PC6 +#define FAN0_PIN PC6 // // USB connect control diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h index 5770f4a5ba..9d85e211f7 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h @@ -100,8 +100,8 @@ #define HEATER_0_PIN PC8 // "HE" #define HEATER_BED_PIN PC9 // "HB" -#ifndef FAN_PIN - #define FAN_PIN PA8 // "FAN0" +#ifndef FAN0_PIN + #define FAN0_PIN PA8 // "FAN0" #endif // diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h index 9c5836dc74..c45e7fb282 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h @@ -100,7 +100,7 @@ // Heaters / Fans // #define HEATER_0_PIN PA8 -#define FAN_PIN PC8 +#define FAN0_PIN PC8 #define HEATER_BED_PIN PC9 // diff --git a/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h b/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h index ec4535982e..a75825658c 100644 --- a/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h +++ b/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h @@ -114,7 +114,7 @@ #define HEATER_0_PIN PC8 // HEATER0 #define HEATER_BED_PIN PC9 // HOT BED -#define FAN_PIN PA7 // FAN (fan2 on board) model cool fan +#define FAN0_PIN PA7 // FAN (fan2 on board) model cool fan #define FAN1_PIN PA8 // FAN (fan0 on board) e0 cool fan #define FAN2_PIN PB9 // FAN (fan1 on board) controller cool fan diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D.h b/Marlin/src/pins/stm32f1/pins_CHITU3D.h index 3b66096a27..32894bb72c 100644 --- a/Marlin/src/pins/stm32f1/pins_CHITU3D.h +++ b/Marlin/src/pins/stm32f1/pins_CHITU3D.h @@ -83,8 +83,8 @@ #define HEATER_0_PIN PD12 // HOT-END #define HEATER_BED_PIN PG11 // HOT-BED -#ifndef FAN_PIN - #define FAN_PIN PG14 // MAIN BOARD FAN +#ifndef FAN0_PIN + #define FAN0_PIN PG14 // MAIN BOARD FAN #endif #define FAN_SOFT_PWM_REQUIRED diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h index f5dd4a42b0..9f8de25ff1 100644 --- a/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h +++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h @@ -99,7 +99,7 @@ // Fans // #define CONTROLLER_FAN_PIN PD6 // BOARD FAN -#define FAN_PIN PG13 // FAN +#define FAN0_PIN PG13 // FAN #define FAN2_PIN PG14 // diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h index 53953f9ebc..7a8f3189aa 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h @@ -84,7 +84,7 @@ #if HAS_CUTTER //#define HEATER_0_PIN -1 //#define HEATER_BED_PIN -1 - #define FAN_PIN -1 + #define FAN0_PIN -1 #define SPINDLE_LASER_ENA_PIN PC0 // FET 1 #define SPINDLE_LASER_PWM_PIN PC0 // Bed FET #define SPINDLE_DIR_PIN PC0 // FET 4 diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h index b6316c01c6..9e422e62b0 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h @@ -114,7 +114,7 @@ #define HEATER_0_PIN PB14 // HEATER1 #define HEATER_BED_PIN PB13 // HOT BED -#define FAN_PIN PB15 // FAN +#define FAN0_PIN PB15 // FAN #ifndef E0_AUTO_FAN_PIN #define E0_AUTO_FAN_PIN PC13 // FAN #endif diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h index 7c4df3520c..e71fec0181 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h @@ -149,8 +149,8 @@ #ifndef HEATER_BED_PIN #define HEATER_BED_PIN PA2 // HOT BED #endif -#ifndef FAN_PIN - #define FAN_PIN PA0 // FAN +#ifndef FAN0_PIN + #define FAN0_PIN PA0 // FAN #endif #define FAN_SOFT_PWM_REQUIRED diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h index f3b7e4f308..d85758981f 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h @@ -130,7 +130,7 @@ #define HEATER_0_PIN PA0 // HEATER1 #define HEATER_BED_PIN PA1 // HOT BED -#define FAN_PIN PA2 // FAN +#define FAN0_PIN PA2 // FAN #define FAN_SOFT_PWM_REQUIRED // diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V425.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V425.h index 1c62d19a99..2d9b9f38f5 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V425.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V425.h @@ -72,6 +72,6 @@ // #define HEATER_0_PIN PA0 // HEATER1 #define HEATER_BED_PIN PA1 // HOT BED -#define FAN_PIN PA2 // FAN +#define FAN0_PIN PA2 // FAN #include "pins_CREALITY_V4.h" diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V452.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V452.h index 4f57f8a805..2f89402607 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V452.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V452.h @@ -33,7 +33,7 @@ #define HEATER_0_PIN PA1 // HEATER1 #define HEATER_BED_PIN PA2 // HOT BED -#define FAN_PIN PA0 // FAN +#define FAN0_PIN PA0 // FAN #if ENABLED(PROBE_ACTIVATION_SWITCH) #ifndef PROBE_ACTIVATION_SWITCH_PIN diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V453.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V453.h index 6a0fa4f418..25b5d6c0ac 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V453.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V453.h @@ -33,7 +33,7 @@ #define HEATER_0_PIN PB14 // HEATER1 #define HEATER_BED_PIN PB13 // HOT BED -#define FAN_PIN PB15 // FAN +#define FAN0_PIN PB15 // FAN #if ENABLED(PROBE_ACTIVATION_SWITCH) #ifndef PROBE_ACTIVATION_SWITCH_PIN diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h index d3d3685531..c90d76d17d 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h @@ -133,7 +133,7 @@ #define HEATER_1_PIN PA0 // HEATER1 #define HEATER_BED_PIN PA2 // HOT BED -#define FAN_PIN PB14 // FAN +#define FAN0_PIN PB14 // FAN #define FAN1_PIN PB12 // FAN #define FAN_SOFT_PWM diff --git a/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h b/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h index 08c9500fc5..f5a285170e 100644 --- a/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h @@ -105,15 +105,15 @@ #endif #endif -#ifndef FAN_PIN +#ifndef FAN0_PIN #if EITHER(FET_ORDER_EFB, FET_ORDER_EFF) // Hotend, Fan, Bed or Hotend, Fan, Fan - #define FAN_PIN PB5 + #define FAN0_PIN PB5 #elif EITHER(FET_ORDER_EEF, FET_ORDER_SF) // Hotend, Hotend, Fan or Spindle, Fan - #define FAN_PIN PD12 + #define FAN0_PIN PD12 #elif ENABLED(FET_ORDER_EEB) // Hotend, Hotend, Bed - #define FAN_PIN -1 // IO pin. Buffer needed + #define FAN0_PIN -1 // IO pin. Buffer needed #else // Non-specific are "EFB" (i.e., "EFBF" or "EFBE") - #define FAN_PIN PB5 + #define FAN0_PIN PB5 #endif #endif diff --git a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h index ff588f9488..f784c07c21 100644 --- a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h +++ b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h @@ -189,7 +189,7 @@ #define HEATER_0_PIN PC3 // HEATER_E0 #define HEATER_BED_PIN PA0 // HEATER_BED-WKUP -#define FAN_PIN PB1 // E_FAN +#define FAN0_PIN PB1 // E_FAN // // Misc. Functions diff --git a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h index c139b4943c..c7a6a7639d 100644 --- a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h @@ -109,8 +109,8 @@ // #define HEATER_0_PIN PC6 #define HEATER_BED_PIN PC7 -#ifndef FAN_PIN - #define FAN_PIN PC8 +#ifndef FAN0_PIN + #define FAN0_PIN PC8 #endif #define FAN1_PIN PC9 diff --git a/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h b/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h index 9250ee1127..1c62c461f9 100644 --- a/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h +++ b/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h @@ -134,8 +134,8 @@ // #define HEATER_0_PIN PC7 #define HEATER_BED_PIN PC6 -#ifndef FAN_PIN - #define FAN_PIN PC8 +#ifndef FAN0_PIN + #define FAN0_PIN PC8 #endif // diff --git a/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h b/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h index e59e8aef59..9bc10a26bc 100644 --- a/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h +++ b/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h @@ -104,8 +104,8 @@ // #define HEATER_0_PIN PC6 #define HEATER_BED_PIN PC7 -#ifndef FAN_PIN - #define FAN_PIN PC8 +#ifndef FAN0_PIN + #define FAN0_PIN PC8 #endif // diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h b/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h index 5515132c78..4030edbeb2 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h @@ -110,7 +110,7 @@ // // These are FAN PWM pins on EXT0..EXT2 connectors. // -//#define FAN_PIN PB9 // EXT0 port +//#define FAN0_PIN PB9 // EXT0 port #define FAN1_PIN PB8 // EXT1 port #define FAN2_PIN PB7 // EXT2 port diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h b/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h index dc23680b8c..040f44e0cf 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h @@ -110,7 +110,7 @@ // // These are FAN PWM pins on EXT0..EXT2 connectors. // -//#define FAN_PIN PB9 // EXT0 port +//#define FAN0_PIN PB9 // EXT0 port #define FAN1_PIN PB8 // EXT1 port #define FAN2_PIN PB7 // EXT2 port diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h b/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h index 646638dae2..313b693ec5 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h @@ -115,7 +115,7 @@ // // These are FAN PWM pins on EXT0..EXT2 connectors. // -//#define FAN_PIN PB9 // EXT0 port +//#define FAN0_PIN PB9 // EXT0 port #define FAN1_PIN PB8 // EXT1 port #define FAN2_PIN PB7 // EXT2 port diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h b/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h index 968d9cb6bd..35b952f79b 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h @@ -110,7 +110,7 @@ // // These are FAN PWM pins on EXT0..EXT2 connectors. // -//#define FAN_PIN PB9 // EXT0 port +//#define FAN0_PIN PB9 // EXT0 port #define FAN1_PIN PB8 // EXT1 port #define FAN2_PIN PB7 // EXT2 port diff --git a/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h b/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h index d3cf3e5cf5..c4638cd9a9 100644 --- a/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h +++ b/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h @@ -104,7 +104,7 @@ #define HEATER_0_PIN PA2 #define HEATER_BED_PIN PA3 -#define FAN_PIN PA1 +#define FAN0_PIN PA1 #define FIL_RUNOUT_PIN PC7 diff --git a/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h b/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h index ad6b84b057..bd39632cc5 100644 --- a/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h +++ b/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h @@ -88,7 +88,7 @@ #define HEATER_0_PIN PD3 // pin 84 (Nozzle Heat Mosfet) #define HEATER_BED_PIN PA8 // pin 67 (Hot Bed Mosfet) -#define FAN_PIN PA15 // pin 77 (4cm Fan) +#define FAN0_PIN PA15 // pin 77 (4cm Fan) #if TERN(MAPLE_STM32F1, ENABLED(FAN_SOFT_PWM), ENABLED(FAST_PWM_FAN)) && FAN_MIN_PWM < 5 // Required to avoid issues with heating or STLink #error "FAN_MIN_PWM must be 5 or higher." // Fan will not start in 1-30 range @@ -116,7 +116,7 @@ #define BOARD_PREINIT() { \ OUT_WRITE_OD(HEATER_0_PIN, 0); \ OUT_WRITE_OD(HEATER_BED_PIN, 0); \ - OUT_WRITE_OD(FAN_PIN, 0); \ + OUT_WRITE_OD(FAN0_PIN, 0); \ } // diff --git a/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h b/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h index 9ed3c11560..c4d0276578 100644 --- a/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h @@ -111,7 +111,7 @@ #define HEATER_0_PIN PB0 #define HEATER_BED_PIN PB1 -#define FAN_PIN PA0 // FAN +#define FAN0_PIN PA0 // FAN // // SD Card diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h index be5f6c7404..25b372a889 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h @@ -116,7 +116,7 @@ // // Fan // -#define FAN_PIN PA7 // FAN +#define FAN0_PIN PA7 // FAN // // Thermocouples diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h index 7994089619..b14b17d0b9 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h @@ -171,7 +171,7 @@ #define HEATER_0_PIN PC3 // HEATER1 #define HEATER_BED_PIN PA0 // HOT BED -#define FAN_PIN PB1 // FAN +#define FAN0_PIN PB1 // FAN // // Misc. Functions diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h index 74780562b6..c7aacc4bab 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h @@ -119,7 +119,7 @@ // Heaters 0,1 / Fans / Bed // #define HEATER_0_PIN PC9 -#define FAN_PIN PA8 +#define FAN0_PIN PA8 #define HEATER_BED_PIN PC8 // diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h index 7ead6aa288..e2d4cf5646 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h @@ -68,7 +68,7 @@ // Heaters / Fans // #define HEATER_0_PIN PC9 -#define FAN_PIN PA8 +#define FAN0_PIN PA8 #define HEATER_BED_PIN PC8 // diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h index b1aaa53c94..161ff658a6 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h @@ -82,7 +82,7 @@ // #define HEATER_0_PIN PC9 #define HEATER_1_PIN PC7 -#define FAN_PIN PA8 +#define FAN0_PIN PA8 #define HEATER_BED_PIN PC8 // diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h index cd4989d73d..11597109c8 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h @@ -111,7 +111,7 @@ #define HEATER_0_PIN PC3 #define HEATER_BED_PIN PA0 -#define FAN_PIN PB1 // FAN +#define FAN0_PIN PB1 // FAN // // Misc. Functions diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h index bfa6f45120..9176ec0ae1 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h @@ -180,7 +180,7 @@ #define HEATER_1_PIN PB0 // HEATER2 #define HEATER_BED_PIN PA0 // HOT BED -#define FAN_PIN PB1 // FAN +#define FAN0_PIN PB1 // FAN // // Thermocouples diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h index 858dabb8b9..616d1f1d3f 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h @@ -105,8 +105,8 @@ #ifndef HEATER_0_PIN #define HEATER_0_PIN PC3 #endif -#ifndef FAN_PIN - #define FAN_PIN PB1 // FAN +#ifndef FAN0_PIN + #define FAN0_PIN PB1 // FAN #endif #ifndef HEATER_BED_PIN #define HEATER_BED_PIN PA0 diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h index 7373d0d7b5..63b7b9e286 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h @@ -165,7 +165,7 @@ #define HEATER_1_PIN PB0 // +HE1- #define HEATER_2_PIN PF9 // +HE2- #define HEATER_BED_PIN PA0 // +HOT-BED- -#define FAN_PIN PB1 // +FAN- +#define FAN0_PIN PB1 // +FAN- /** * Note: MKS Robin Pro board is using SPI2 interface. Make sure your stm32duino library is configured accordingly diff --git a/Marlin/src/pins/stm32f1/pins_MORPHEUS.h b/Marlin/src/pins/stm32f1/pins_MORPHEUS.h index 87919c12f4..08e5455b30 100644 --- a/Marlin/src/pins/stm32f1/pins_MORPHEUS.h +++ b/Marlin/src/pins/stm32f1/pins_MORPHEUS.h @@ -82,7 +82,7 @@ #define HEATER_0_PIN PA2 // HOTEND MOSFET #define HEATER_BED_PIN PA0 // BED MOSFET -#define FAN_PIN PA1 // FAN1 header on board - PRINT FAN +#define FAN0_PIN PA1 // FAN1 header on board - PRINT FAN // // Misc. diff --git a/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h b/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h index 56200d5096..7c8906e599 100644 --- a/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h +++ b/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h @@ -140,7 +140,7 @@ // #define HEATER_0_PIN PB12 // "HE" #define HEATER_BED_PIN PB13 // "HB" -#define FAN_PIN PA8 // "FAN0" +#define FAN0_PIN PA8 // "FAN0" #define HEATER_1_PIN PA12 // diff --git a/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h b/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h index 67b2944f45..ba8a563f39 100644 --- a/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h +++ b/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h @@ -175,8 +175,8 @@ #ifndef HEATER_BED_PIN #define HEATER_BED_PIN PA2 // HOT BED #endif -#ifndef FAN_PIN - #define FAN_PIN PA0 // FAN +#ifndef FAN0_PIN + #define FAN0_PIN PA0 // FAN #endif #define FAN_SOFT_PWM_REQUIRED diff --git a/Marlin/src/pins/stm32f1/pins_STM3R_MINI.h b/Marlin/src/pins/stm32f1/pins_STM3R_MINI.h index eee7dbf316..61cb563575 100644 --- a/Marlin/src/pins/stm32f1/pins_STM3R_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_STM3R_MINI.h @@ -86,8 +86,8 @@ //#define HEATER_BED2_PIN -1 // BED2 //#define HEATER_BED3_PIN -1 // BED3 -#ifndef FAN_PIN - #define FAN_PIN PD14 +#ifndef FAN0_PIN + #define FAN0_PIN PD14 #endif #define FAN1_PIN PD13 diff --git a/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h b/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h index 73f61c1aca..410e39bccf 100644 --- a/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h +++ b/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h @@ -117,7 +117,7 @@ // Fans // #define CONTROLLER_FAN_PIN PD6 // FAN -#define FAN_PIN PG13 // FAN +#define FAN0_PIN PG13 // FAN #define FAN1_PIN PG14 // FAN // diff --git a/Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h b/Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h index 1347a14678..fe4fa49f8f 100644 --- a/Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h +++ b/Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h @@ -39,7 +39,7 @@ // Zonestar ZM3E2 V1.0 (STM32F103RCT6) board pin assignments //============================================================================= // PA0 PWR_HOLD | PB0 BEEP | PC0 HEATER_0 -// PA1 FAN_PIN | PB1 KILL | PC1 HEATER_BED +// PA1 FAN0_PIN | PB1 KILL | PC1 HEATER_BED // PA2 TX2 | PB2 LCD_SDA | PC2 TEMP_BED // PA3 RX2 | PB3 E1_EN | PC3 TEMP_E0 // PA4 SD_CS | PB4 Z_STOP | PC4 SD_DETECT @@ -149,7 +149,7 @@ #define HEATER_BED_PIN PC1 // BED #define FAN1_PIN PC6 -#define FAN_PIN PA1 +#define FAN0_PIN PA1 // // Temperature Sensors diff --git a/Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h b/Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h index 9618b3ad1a..c6192191e1 100644 --- a/Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h +++ b/Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h @@ -249,7 +249,7 @@ #define HEATER_1_PIN PB0 // HEATER1 #endif -#define FAN_PIN PB1 // FAN1 +#define FAN0_PIN PB1 // FAN1 #define FAN1_PIN PB8 // FAN2 // diff --git a/Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h b/Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h index d1d8a4c68f..b8d72061df 100644 --- a/Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h +++ b/Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h @@ -249,7 +249,7 @@ // // Fans // -#define FAN_PIN PB1 // FAN1 +#define FAN0_PIN PB1 // FAN1 #define FAN1_PIN PB8 // FAN2 // diff --git a/Marlin/src/pins/stm32f4/pins_ANET_ET4.h b/Marlin/src/pins/stm32f4/pins_ANET_ET4.h index 7c6eaca812..347ef8451d 100644 --- a/Marlin/src/pins/stm32f4/pins_ANET_ET4.h +++ b/Marlin/src/pins/stm32f4/pins_ANET_ET4.h @@ -123,7 +123,7 @@ // // Fans // -#define FAN_PIN PE3 // Layer fan +#define FAN0_PIN PE3 // Layer fan #define FAN1_PIN PE1 // Hotend fan #ifndef E0_AUTO_FAN_PIN diff --git a/Marlin/src/pins/stm32f4/pins_ARMED.h b/Marlin/src/pins/stm32f4/pins_ARMED.h index 2abcc21da5..6ae2674488 100644 --- a/Marlin/src/pins/stm32f4/pins_ARMED.h +++ b/Marlin/src/pins/stm32f4/pins_ARMED.h @@ -128,7 +128,7 @@ #define HEATER_1_PIN PA2 // Hardware PWM #define HEATER_BED_PIN PA0 // Hardware PWM -#define FAN_PIN PC6 // Hardware PWM, Part cooling fan +#define FAN0_PIN PC6 // Hardware PWM, Part cooling fan #define FAN1_PIN PC7 // Hardware PWM, Extruder fan #define FAN2_PIN PC8 // Hardware PWM, Controller fan diff --git a/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h b/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h index 7413b9b064..4c0b7d54b7 100644 --- a/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h +++ b/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h @@ -100,8 +100,8 @@ #ifndef HEATER_BED_PIN #define HEATER_BED_PIN PA8 // Hotbed #endif -#ifndef FAN_PIN - #define FAN_PIN PC8 // Fan0 +#ifndef FAN0_PIN + #define FAN0_PIN PC8 // Fan0 #endif #ifndef FAN1_PIN #define FAN1_PIN PC7 // Fan1 diff --git a/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h b/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h index c49abca9ef..b42bcf5de3 100644 --- a/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h +++ b/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h @@ -101,7 +101,7 @@ #define HEATER_1_PIN PA3 // Heater1 #define HEATER_BED_PIN PA1 // Hotbed -#define FAN_PIN PE9 // Fan0 +#define FAN0_PIN PE9 // Fan0 #define FAN1_PIN PE11 // Fan1 #define FAN2_PIN PE13 // Fan2 #define FAN3_PIN PE14 // Fan3 diff --git a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h index d31885e73d..fdd56b5c9e 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h @@ -170,11 +170,11 @@ #define HEATER_0_PIN PE6 // Heater0 #define HEATER_BED_PIN PE5 // Hotbed -#ifndef FAN_PIN +#ifndef FAN0_PIN #ifdef MK3_FAN_PINS - #define FAN_PIN PB8 // Fan1 + #define FAN0_PIN PB8 // Fan1 #else - #define FAN_PIN PB9 // Fan0 + #define FAN0_PIN PB9 // Fan0 #endif #endif diff --git a/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h b/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h index c29949e814..383f15f2a3 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h @@ -159,7 +159,7 @@ #define HEATER_1_PIN FPC16_PIN // "HE1" #endif -#define FAN_PIN PB5 // "FAN0" +#define FAN0_PIN PB5 // "FAN0" #ifndef CONTROLLER_FAN_PIN #define CONTROLLER_FAN_PIN PB6 // "FAN1" diff --git a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h index fe0e1e52f3..a21eaefee8 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h @@ -323,7 +323,7 @@ #define HEATER_BED_PIN PA2 // Hotbed -#define FAN_PIN PE5 // Fan0 +#define FAN0_PIN PE5 // Fan0 #define FAN1_PIN PE6 // Fan1 #define FAN2_PIN PC8 // Fan2 diff --git a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h index a3bffbce01..4bc75089d1 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h @@ -241,7 +241,7 @@ #define HEATER_2_PIN PB10 // Heater2 #define HEATER_3_PIN PB11 // Heater3 -#define FAN_PIN PA8 // Fan0 +#define FAN0_PIN PA8 // Fan0 #define FAN1_PIN PE5 // Fan1 #define FAN2_PIN PD12 // Fan2 #define FAN3_PIN PD13 // Fan3 diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h index 31551f6ff6..d3a04b9d07 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h @@ -146,7 +146,7 @@ // #define HEATER_0_PIN PA15 // "HE" #define HEATER_BED_PIN PB3 // "HB" -#define FAN_PIN PC9 // "FAN0" +#define FAN0_PIN PC9 // "FAN0" #define FAN1_PIN PA8 // "FAN1" #define FAN2_PIN PC8 // "FAN2" diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h index c535edfc1e..2121b078db 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h @@ -289,7 +289,7 @@ // // Fans // -#define FAN_PIN PC8 // Fan0 +#define FAN0_PIN PC8 // Fan0 #define FAN1_PIN PE5 // Fan1 #ifndef E0_AUTO_FAN_PIN diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h index 76d06380b4..ef85caa170 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h @@ -251,8 +251,8 @@ #ifndef HEATER_BED_PIN #define HEATER_BED_PIN PD7 // Hotbed #endif -#ifndef FAN_PIN - #define FAN_PIN PB7 // Fan0 +#ifndef FAN0_PIN + #define FAN0_PIN PB7 // Fan0 #endif #if HAS_CUTTER diff --git a/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h b/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h index 8d31130d89..24419cfd1b 100644 --- a/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h +++ b/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h @@ -166,8 +166,8 @@ #define HEATER_5_PIN PE3 #define HEATER_BED_PIN PE2 -#ifndef FAN_PIN - #define FAN_PIN PF8 +#ifndef FAN0_PIN + #define FAN0_PIN PF8 #endif #define FAN1_PIN PF9 #define FAN2_PIN PA2 diff --git a/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h b/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h index e650f2840e..a7b7c079c3 100644 --- a/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h +++ b/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h @@ -112,8 +112,8 @@ // #define HEATER_0_PIN PC6 #define HEATER_BED_PIN PC7 -#ifndef FAN_PIN - #define FAN_PIN PA14 +#ifndef FAN0_PIN + #define FAN0_PIN PA14 #endif #define FAN1_PIN PA13 #define FAN2_PIN PA1 diff --git a/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h b/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h index fca181c1f4..49aab671c5 100644 --- a/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h +++ b/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h @@ -182,8 +182,8 @@ #define HEATER_BED_PIN PC8 #endif -#ifndef FAN_PIN - #define FAN_PIN PB0 +#ifndef FAN0_PIN + #define FAN0_PIN PB0 #endif #ifndef FAN1_PIN #define FAN1_PIN PB1 diff --git a/Marlin/src/pins/stm32f4/pins_FYSETC_SPIDER_V2_2.h b/Marlin/src/pins/stm32f4/pins_FYSETC_SPIDER_V2_2.h index 50a19fa3d3..6ef86117e7 100644 --- a/Marlin/src/pins/stm32f4/pins_FYSETC_SPIDER_V2_2.h +++ b/Marlin/src/pins/stm32f4/pins_FYSETC_SPIDER_V2_2.h @@ -28,7 +28,7 @@ #define TEMP_4_PIN PB1 #define TEMP_BED_PIN PB0 -#define FAN_PIN PA13 +#define FAN0_PIN PA13 #define FAN1_PIN PA14 #include "pins_FYSETC_SPIDER.h" diff --git a/Marlin/src/pins/stm32f4/pins_LERDGE_K.h b/Marlin/src/pins/stm32f4/pins_LERDGE_K.h index 0ea7255c17..5471613679 100644 --- a/Marlin/src/pins/stm32f4/pins_LERDGE_K.h +++ b/Marlin/src/pins/stm32f4/pins_LERDGE_K.h @@ -182,8 +182,8 @@ #define HEATER_1_PIN PA0 #define HEATER_BED_PIN PA2 -#ifndef FAN_PIN - #define FAN_PIN PF7 +#ifndef FAN0_PIN + #define FAN0_PIN PF7 #endif #define FAN1_PIN PF6 diff --git a/Marlin/src/pins/stm32f4/pins_LERDGE_S.h b/Marlin/src/pins/stm32f4/pins_LERDGE_S.h index 376c2f3f27..180235019a 100644 --- a/Marlin/src/pins/stm32f4/pins_LERDGE_S.h +++ b/Marlin/src/pins/stm32f4/pins_LERDGE_S.h @@ -122,7 +122,7 @@ #define HEATER_1_PIN PA1 #define HEATER_BED_PIN PA3 -#define FAN_PIN PA15 // heater 0 fan 1 +#define FAN0_PIN PA15 // heater 0 fan 1 #define FAN1_PIN PB10 // heater 1 fan 2 #define FAN2_PIN PF5 // heater 0 fan 2 and heater 1 fan 1 (two sockets, switched together) diff --git a/Marlin/src/pins/stm32f4/pins_LERDGE_X.h b/Marlin/src/pins/stm32f4/pins_LERDGE_X.h index 6325697655..20985f263c 100644 --- a/Marlin/src/pins/stm32f4/pins_LERDGE_X.h +++ b/Marlin/src/pins/stm32f4/pins_LERDGE_X.h @@ -98,8 +98,8 @@ #define HEATER_1_PIN -1 #define HEATER_BED_PIN PA2 -//#ifndef FAN_PIN -// #define FAN_PIN PC15 +//#ifndef FAN0_PIN +// #define FAN0_PIN PC15 //#endif #define FAN1_PIN PC15 #define FAN2_PIN PA0 diff --git a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h index c8a5b428dc..1a72722221 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h @@ -194,7 +194,7 @@ #define HEATER_2_PIN PA3 // HE2 #define HEATER_BED_PIN PB10 // H-BED -#define FAN_PIN PA2 // FAN0 +#define FAN0_PIN PA2 // FAN0 #define FAN1_PIN PA1 // FAN1 #define FAN2_PIN PA0 // FAN2 diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h index 2274d0c0df..15314c9ca6 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h @@ -90,7 +90,7 @@ #define HEATER_0_PIN PF3 // Heater0 #define HEATER_1_PIN PF2 // Heater1 #define HEATER_BED_PIN PF4 // Hotbed -#define FAN_PIN PA7 // Fan0 +#define FAN0_PIN PA7 // Fan0 // // Misc. Functions diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h index 42b252d320..a687cb9c9d 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h @@ -133,7 +133,7 @@ #define HEATER_1_PIN PB0 // HEATER2 #define HEATER_BED_PIN PA0 // HOT BED -#define FAN_PIN PC14 // FAN +#define FAN0_PIN PC14 // FAN #define FAN1_PIN PB1 // FAN1 // diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h index daafe8dee4..8fdb417805 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h @@ -177,7 +177,7 @@ #define HEATER_1_PIN PB0 // HEATER2 #define HEATER_BED_PIN PA0 // HOT BED -#define FAN_PIN PB1 // FAN +#define FAN0_PIN PB1 // FAN // // Thermocouples diff --git a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h index ac0b7679c3..b03fc5419e 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h @@ -186,7 +186,7 @@ #define HEATER_1_PIN PB0 // Heater1 #define HEATER_2_PIN PA3 // Heater2 -#define FAN_PIN PA2 // Fan0 +#define FAN0_PIN PA2 // Fan0 #define FAN1_PIN PA1 // Fan1 #define FAN2_PIN PA0 // Fan2 diff --git a/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h b/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h index cf4720a20c..eb6edb765e 100644 --- a/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h +++ b/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h @@ -151,7 +151,7 @@ // // Heaters / Fans // -#define FAN_PIN PE2 +#define FAN0_PIN PE2 #define FAN1_PIN PE3 #define FAN2_PIN PE4 #define FAN3_PIN PE5 diff --git a/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h b/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h index c8da0af894..b44061a491 100644 --- a/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h +++ b/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h @@ -148,7 +148,7 @@ // // Heaters / Fans // -#define FAN_PIN PE2 +#define FAN0_PIN PE2 #define FAN1_PIN PE3 #define FAN2_PIN PE4 #define FAN3_PIN PE5 diff --git a/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h b/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h index 264bb91af4..ed4ba34266 100644 --- a/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h +++ b/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h @@ -118,7 +118,7 @@ #define HEATER_2_PIN PC8 #define HEATER_BED_PIN PA1 -#define FAN_PIN PC9 +#define FAN0_PIN PC9 #define FAN1_PIN PA8 // diff --git a/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h b/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h index 4fb57985b9..b2fec3b834 100644 --- a/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h +++ b/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h @@ -162,8 +162,8 @@ // #define HEATER_BED_PIN PC9 #define HEATER_0_PIN PC8 -#ifndef FAN_PIN - #define FAN_PIN PC6 +#ifndef FAN0_PIN + #define FAN0_PIN PC6 #endif #define FAN1_PIN PC7 diff --git a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h index 475dc42266..21158f7af9 100644 --- a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h +++ b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h @@ -152,7 +152,7 @@ #define HEATER_BED_PIN PE2 // HOT BED //#define HEATER_BED_INVERTING true -#define FAN_PIN PG0 // FAN0 +#define FAN0_PIN PG0 // FAN0 #define FAN1_PIN PB6 // FAN1 #define FAN2_PIN PG9 // FAN2 #define FAN3_PIN PF10 // FAN3 diff --git a/Marlin/src/pins/stm32f4/pins_VAKE403D.h b/Marlin/src/pins/stm32f4/pins_VAKE403D.h index 21ab9d0e70..eba63c5a5b 100644 --- a/Marlin/src/pins/stm32f4/pins_VAKE403D.h +++ b/Marlin/src/pins/stm32f4/pins_VAKE403D.h @@ -129,8 +129,8 @@ #define HEATER_1_PIN PD14 #define HEATER_BED_PIN PD12 -#ifndef FAN_PIN - #define FAN_PIN PD13 +#ifndef FAN0_PIN + #define FAN0_PIN PD13 #endif #define FAN1_PIN PB5 // PA0 #define FAN2_PIN PB4 // PA1 diff --git a/Marlin/src/pins/stm32f7/pins_NUCLEO_F767ZI.h b/Marlin/src/pins/stm32f7/pins_NUCLEO_F767ZI.h index 48f986e2ca..6f5c179d1c 100644 --- a/Marlin/src/pins/stm32f7/pins_NUCLEO_F767ZI.h +++ b/Marlin/src/pins/stm32f7/pins_NUCLEO_F767ZI.h @@ -154,8 +154,8 @@ #define HEATER_0_PIN PA15 // PWM Capable, TIM2_CH1 #define HEATER_BED_PIN PB3 // PWM Capable, TIM2_CH2 -#ifndef FAN_PIN - #define FAN_PIN PB10 // PWM Capable, TIM2_CH3 +#ifndef FAN0_PIN + #define FAN0_PIN PB10 // PWM Capable, TIM2_CH3 #endif #define FAN1_PIN PB11 // PWM Capable, TIM2_CH4 diff --git a/Marlin/src/pins/stm32f7/pins_REMRAM_V1.h b/Marlin/src/pins/stm32f7/pins_REMRAM_V1.h index c4feba692f..f13eba8ef3 100644 --- a/Marlin/src/pins/stm32f7/pins_REMRAM_V1.h +++ b/Marlin/src/pins/stm32f7/pins_REMRAM_V1.h @@ -95,8 +95,8 @@ #define HEATER_0_PIN 33 #define HEATER_BED_PIN 31 -#ifndef FAN_PIN - #define FAN_PIN 30 // "FAN1" +#ifndef FAN0_PIN + #define FAN0_PIN 30 // "FAN1" #endif #define FAN1_PIN 32 // "FAN2" diff --git a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h index 138397fa11..c79f8ab084 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h @@ -135,7 +135,7 @@ // Heaters / Fans // #define HEATER_0_PIN PA2 // "HE" -#define FAN_PIN PA0 // "FAN0" +#define FAN0_PIN PA0 // "FAN0" #define FAN1_PIN PA1 // "FAN1" // diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h index 84bf758777..57e257a7ba 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h @@ -189,7 +189,7 @@ #define HEATER_1_PIN PB10 // "HE1" #define HEATER_BED_PIN PB2 // "HB" -#define FAN_PIN PA8 // "FAN0" +#define FAN0_PIN PA8 // "FAN0" #define FAN1_PIN PB15 // "FAN1" #define FAN2_PIN PB14 // "FAN2" diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h index 7096cfbfbd..276c951143 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h @@ -153,7 +153,7 @@ #define HEATER_0_PIN PC8 // "HE" #define HEATER_BED_PIN PD8 // "HB" -#define FAN_PIN PD2 // "FAN0" +#define FAN0_PIN PD2 // "FAN0" #define FAN1_PIN PD3 // "FAN1" #define FAN2_PIN PD4 // "FAN2" diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h index 59c2b0f97c..737330d351 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h @@ -175,7 +175,7 @@ #define HEATER_1_PIN PA7 // "HE1" #define HEATER_BED_PIN PA5 // "HB" -#define FAN_PIN PA4 // "FAN0" +#define FAN0_PIN PA4 // "FAN0" #define FAN1_PIN PA3 // "FAN1" // diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h index 631b50d0f2..2c778f8732 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h @@ -229,7 +229,7 @@ #define HEATER_2_PIN PB6 // HE2 #define HEATER_3_PIN PE1 // HE3 -#define FAN_PIN PE6 // FAN0 +#define FAN0_PIN PE6 // FAN0 #define FAN1_PIN PE0 // FAN1 #define FAN2_PIN PC12 // FAN2 #define FAN3_PIN PE5 // FAN3 diff --git a/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h b/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h index f71b7b40eb..9be2357043 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h @@ -136,7 +136,7 @@ // #define HEATER_0_PIN PC8 // "HE" #define HEATER_BED_PIN PC9 // "HB" -#define FAN_PIN PC6 // "FAN0" +#define FAN0_PIN PC6 // "FAN0" #define FAN1_PIN PC7 // "FAN1" #define FAN2_PIN PB15 // "FAN2" diff --git a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h index 9ddd46d6cd..c414ac619b 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h @@ -253,7 +253,7 @@ #define HEATER_2_PIN PF9 // Heater2 #define HEATER_3_PIN PF7 // Heater3 -#define FAN_PIN PA6 // Fan0 +#define FAN0_PIN PA6 // Fan0 #define FAN1_PIN PA5 // Fan1 #define FAN2_PIN PA4 // Fan2 #define FAN3_PIN PA3 // Fan3 diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h index 245567c27c..7f5f5269d1 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h @@ -158,7 +158,7 @@ #define HEATER_1_PIN PC5 #define HEATER_BED_PIN PA4 -#define FAN_PIN PA5 // "FAN0" +#define FAN0_PIN PA5 // "FAN0" #define FAN1_PIN PA6 // "FAN1" #define FAN2_PIN PA7 // "FAN2" diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h index c05ae971cf..cafd30bf63 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h @@ -239,8 +239,8 @@ #ifndef HEATER_BED_PIN #define HEATER_BED_PIN PD7 // Hotbed #endif -#ifndef FAN_PIN - #define FAN_PIN PB7 // Fan0 +#ifndef FAN0_PIN + #define FAN0_PIN PB7 // Fan0 #endif #if HAS_CUTTER diff --git a/Marlin/src/pins/teensy2/pins_5DPRINT.h b/Marlin/src/pins/teensy2/pins_5DPRINT.h index 9eb1da36f4..798f98dae5 100644 --- a/Marlin/src/pins/teensy2/pins_5DPRINT.h +++ b/Marlin/src/pins/teensy2/pins_5DPRINT.h @@ -133,8 +133,8 @@ #define HEATER_0_PIN 15 // C5 #define HEATER_BED_PIN 14 // C4 -#ifndef FAN_PIN - #define FAN_PIN 16 // C6 PWM3A +#ifndef FAN0_PIN + #define FAN0_PIN 16 // C6 PWM3A #endif // diff --git a/Marlin/src/pins/teensy2/pins_BRAINWAVE.h b/Marlin/src/pins/teensy2/pins_BRAINWAVE.h index bbda3730ee..900eae6dd4 100644 --- a/Marlin/src/pins/teensy2/pins_BRAINWAVE.h +++ b/Marlin/src/pins/teensy2/pins_BRAINWAVE.h @@ -120,8 +120,8 @@ #define HEATER_0_PIN 32 // A4 Extruder #define HEATER_BED_PIN 18 // E6 Bed -#ifndef FAN_PIN - #define FAN_PIN 31 // A3 Fan +#ifndef FAN0_PIN + #define FAN0_PIN 31 // A3 Fan #endif // diff --git a/Marlin/src/pins/teensy2/pins_BRAINWAVE_PRO.h b/Marlin/src/pins/teensy2/pins_BRAINWAVE_PRO.h index 969ec84558..a1ef48e524 100644 --- a/Marlin/src/pins/teensy2/pins_BRAINWAVE_PRO.h +++ b/Marlin/src/pins/teensy2/pins_BRAINWAVE_PRO.h @@ -126,8 +126,8 @@ // #define HEATER_0_PIN 27 // B7 #define HEATER_BED_PIN 26 // B6 Bed -#ifndef FAN_PIN - #define FAN_PIN 16 // C6 Fan, PWM3A +#ifndef FAN0_PIN + #define FAN0_PIN 16 // C6 Fan, PWM3A #endif // diff --git a/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h b/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h index 1fb7387d16..f80576b509 100644 --- a/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h +++ b/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h @@ -118,8 +118,8 @@ #define HEATER_2_PIN 45 // F7 #define HEATER_BED_PIN 14 // C4 PWM3C -#ifndef FAN_PIN - #define FAN_PIN 16 // C6 PWM3A +#ifndef FAN0_PIN + #define FAN0_PIN 16 // C6 PWM3A #endif // diff --git a/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h b/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h index 5ce106b485..06496abdcd 100644 --- a/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h +++ b/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h @@ -203,8 +203,8 @@ #endif #endif -#ifndef FAN_PIN - #define FAN_PIN 16 // C6 PWM3A +#ifndef FAN0_PIN + #define FAN0_PIN 16 // C6 PWM3A #endif // diff --git a/Marlin/src/pins/teensy2/pins_SAV_MKI.h b/Marlin/src/pins/teensy2/pins_SAV_MKI.h index a469bba59b..5044af75d3 100644 --- a/Marlin/src/pins/teensy2/pins_SAV_MKI.h +++ b/Marlin/src/pins/teensy2/pins_SAV_MKI.h @@ -116,8 +116,8 @@ #define HEATER_0_PIN 15 // C5 PWM3B - Extruder #define HEATER_BED_PIN 14 // C4 PWM3C - Bed -#ifndef FAN_PIN - #define FAN_PIN 16 // C6 PWM3A +#ifndef FAN0_PIN + #define FAN0_PIN 16 // C6 PWM3A #endif // diff --git a/Marlin/src/pins/teensy2/pins_TEENSY2.h b/Marlin/src/pins/teensy2/pins_TEENSY2.h index b95e9cae48..b31c173869 100644 --- a/Marlin/src/pins/teensy2/pins_TEENSY2.h +++ b/Marlin/src/pins/teensy2/pins_TEENSY2.h @@ -149,8 +149,8 @@ // #define HEATER_0_PIN 15 // C5 PWM3B Extruder #define HEATER_BED_PIN 14 // C4 PWM3C -#ifndef FAN_PIN - #define FAN_PIN 16 // C6 PWM3A Fan +#ifndef FAN0_PIN + #define FAN0_PIN 16 // C6 PWM3A Fan #endif // diff --git a/Marlin/src/pins/teensy2/pins_TEENSYLU.h b/Marlin/src/pins/teensy2/pins_TEENSYLU.h index 294a289cdb..81bb56349f 100644 --- a/Marlin/src/pins/teensy2/pins_TEENSYLU.h +++ b/Marlin/src/pins/teensy2/pins_TEENSYLU.h @@ -133,8 +133,8 @@ #define HEATER_0_PIN 15 // C5 PWM3B - Extruder #define HEATER_BED_PIN 14 // C4 PWM3C -#ifndef FAN_PIN - #define FAN_PIN 16 // C6 PWM3A +#ifndef FAN0_PIN + #define FAN0_PIN 16 // C6 PWM3A #endif // diff --git a/Marlin/src/pins/teensy3/pins_TEENSY31_32.h b/Marlin/src/pins/teensy3/pins_TEENSY31_32.h index 0edb5cb19d..ee5466b54d 100644 --- a/Marlin/src/pins/teensy3/pins_TEENSY31_32.h +++ b/Marlin/src/pins/teensy3/pins_TEENSY31_32.h @@ -71,8 +71,8 @@ #define HEATER_0_PIN 20 //#define HEATER_1_PIN 36 #define HEATER_BED_PIN 21 -#ifndef FAN_PIN - #define FAN_PIN 22 +#ifndef FAN0_PIN + #define FAN0_PIN 22 #endif // diff --git a/Marlin/src/pins/teensy3/pins_TEENSY35_36.h b/Marlin/src/pins/teensy3/pins_TEENSY35_36.h index 71c348536a..289a8acb1c 100644 --- a/Marlin/src/pins/teensy3/pins_TEENSY35_36.h +++ b/Marlin/src/pins/teensy3/pins_TEENSY35_36.h @@ -57,7 +57,7 @@ * 3.3V | | GND * Z_STOP_PIN 24 | 40 * * 53 | A22 DAC1 * AUX2 25 | 41 * * 52 | A21 DAC0 - * AUX2 FAN_PIN SCL2 TX1 26 | 42 * * 51 | 39 A20 MISO0 SDSS + * AUX2 FAN0_PIN SCL2 TX1 26 | 42 * * 51 | 39 A20 MISO0 SDSS * AUX2 Z-PROBE PWR SCK0 RX1 27 | * * * * * | 38 A19 PWM SDA1 * AUX2 SOL1_PIN MOSI0 28 | 43 * * 50 | 37 A18 PWM SCL1 * D10 CONTROLLER_FAN_PIN CAN0TX PWM 29 | 44 * * 49 | 36 A17 PWM @@ -109,8 +109,8 @@ #define HEATER_0_PIN 30 #define HEATER_1_PIN 36 #define HEATER_BED_PIN 31 -#ifndef FAN_PIN - #define FAN_PIN 2 +#ifndef FAN0_PIN + #define FAN0_PIN 2 #endif #define TEMP_0_PIN 2 // Extruder / Analog pin numbering: 2 => A2 diff --git a/Marlin/src/pins/teensy4/pins_TEENSY41.h b/Marlin/src/pins/teensy4/pins_TEENSY41.h index 21a1ff675f..263d9e8f8b 100644 --- a/Marlin/src/pins/teensy4/pins_TEENSY41.h +++ b/Marlin/src/pins/teensy4/pins_TEENSY41.h @@ -53,10 +53,10 @@ * 3.3V | | GND * Z_STOP_PIN PWM 24 | | 41 A17 * E0_ENABLE_PIN PWM 25 | | 40 A16 - * FAN_PIN MOSI1 26 | | 39 A15 MISO1 X_STOP_PIN + * FAN0_PIN MOSI1 26 | | 39 A15 MISO1 X_STOP_PIN * Z-PROBE PWR SCK1 27 | * * * * * | 38 A14 Y_STOP_PIN * SOL1_PIN RX7 PWM 28 | | 37 PWM HEATER_0_PIN - * FAN_PIN TX7 PWM 29 | | 36 PWM HEATER_BED_PIN + * FAN0_PIN TX7 PWM 29 | | 36 PWM HEATER_BED_PIN * X_CS_PIN 30 | | 35 TX8 E1_ENABLE_PIN * y_CS_PIN 31 | SDCARD | 34 RX8 E1_DIR_PIN * Z_CS_PIN 32 |_______________| 33 PWM E1_STEP_PIN @@ -107,8 +107,8 @@ #define HEATER_0_PIN 37 #define HEATER_1_PIN 18 #define HEATER_BED_PIN 36 -#ifndef FAN_PIN - #define FAN_PIN 29 +#ifndef FAN0_PIN + #define FAN0_PIN 29 #endif // diff --git a/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/PeripheralPins.c index 5c7c301f82..4c0a7e4fa1 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/PeripheralPins.c +++ b/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/PeripheralPins.c @@ -191,7 +191,7 @@ WEAK const PinMap PinMap_PWM[] = { {PD_15, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 FAN2_PIN //{PE_5, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 1, 0)}, // TIM9_CH1 //{PE_6, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 2, 0)}, // TIM9_CH2 - {PE_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N FAN_PIN + {PE_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N FAN0_PIN {PE_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 FAN1_PIN {PE_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N HEATER_BED_PIN //{PE_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 From aeb8eabfccd8f3bc8449d23d675f02ffeb1561fb Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Sun, 26 Mar 2023 00:34:56 +0100 Subject: [PATCH 179/659] =?UTF-8?q?=F0=9F=93=9D=20Fix=20spelling=20(#25563?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 9b4c58be6f..eb04f473b7 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -388,7 +388,7 @@ * * A very stable heater might produce a false positive and halt the printer. In this case, try increasing * the corresponding THERMAL_PROTECTION_*_PERIOD constant a bit. Keep in mind that uncontrolled heating - * shouldn't be allowed to persist for more than a minite or two. + * shouldn't be allowed to persist for more than a minute or two. * * Be careful to distinguish false positives from real sensor issues before disabling this feature. If the * heater's temperature appears even slightly higher than expected after restarting, you may have a real From b4b2b3e61c6b0d1f2d43591460430e1ac8fc817d Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 26 Mar 2023 00:24:07 +0000 Subject: [PATCH 180/659] [cron] Bump distribution date (2023-03-26) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index bb46cc9519..baa481f8f0 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-25" +//#define STRING_DISTRIBUTION_DATE "2023-03-26" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index d2b1ff06e9..e5489d990f 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-25" + #define STRING_DISTRIBUTION_DATE "2023-03-26" #endif /** From cb0a8f2fe2414cc4ab5180c3bc86cd7c320862d5 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Mar 2023 20:17:54 -0500 Subject: [PATCH 181/659] =?UTF-8?q?=F0=9F=8E=A8=20Timer=20tweaks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/AVR/timers.h | 8 ++++---- Marlin/src/HAL/ESP32/timers.cpp | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Marlin/src/HAL/AVR/timers.h b/Marlin/src/HAL/AVR/timers.h index 33c3880b6b..d9cdfc4f01 100644 --- a/Marlin/src/HAL/AVR/timers.h +++ b/Marlin/src/HAL/AVR/timers.h @@ -44,14 +44,14 @@ typedef uint16_t hal_timer_t; #define MF_TIMER_TEMP 0 #endif -#define TEMP_TIMER_FREQUENCY ((F_CPU) / 64.0 / 256.0) +#define TEMP_TIMER_FREQUENCY (((F_CPU) + 0x2000) / 0x4000) #define STEPPER_TIMER_RATE HAL_TIMER_RATE #define STEPPER_TIMER_PRESCALE 8 -#define STEPPER_TIMER_TICKS_PER_US ((STEPPER_TIMER_RATE) / 1000000) // Cannot be of type double +#define STEPPER_TIMER_TICKS_PER_US ((STEPPER_TIMER_RATE) / 1000000) -#define PULSE_TIMER_RATE STEPPER_TIMER_RATE // frequency of pulse timer -#define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE +#define PULSE_TIMER_RATE STEPPER_TIMER_RATE +#define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE #define PULSE_TIMER_TICKS_PER_US STEPPER_TIMER_TICKS_PER_US #define ENABLE_STEPPER_DRIVER_INTERRUPT() SBI(TIMSK1, OCIE1A) diff --git a/Marlin/src/HAL/ESP32/timers.cpp b/Marlin/src/HAL/ESP32/timers.cpp index c37ad2430c..a6893150b6 100644 --- a/Marlin/src/HAL/ESP32/timers.cpp +++ b/Marlin/src/HAL/ESP32/timers.cpp @@ -111,12 +111,12 @@ void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) { /** * Set the upper value of the timer, when the timer reaches this upper value the * interrupt should be triggered and the counter reset - * @param timer_num timer number to set the count to - * @param count threshold at which the interrupt is triggered + * @param timer_num timer number to set the compare value to + * @param compare threshold at which the interrupt is triggered */ -void HAL_timer_set_compare(const uint8_t timer_num, hal_timer_t count) { +void HAL_timer_set_compare(const uint8_t timer_num, const hal_timer_t compare) { const tTimerConfig timer = timer_config[timer_num]; - timer_set_alarm_value(timer.group, timer.idx, count); + timer_set_alarm_value(timer.group, timer.idx, compare); } /** From ea5d7e2eee641122ddf56705f6c9060d84a20df3 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 26 Mar 2023 04:00:12 -0500 Subject: [PATCH 182/659] =?UTF-8?q?=F0=9F=94=A7=20Refactor=20endstop=20sta?= =?UTF-8?q?te=20config=20(#25574)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 43 +- Marlin/src/gcode/config/M43.cpp | 42 +- Marlin/src/inc/Conditionals_LCD.h | 38 +- Marlin/src/inc/Conditionals_post.h | 180 ++++---- Marlin/src/inc/SanityCheck.h | 426 +++++++++--------- Marlin/src/lcd/e3v2/proui/endstop_diag.cpp | 2 +- .../generic/endstop_state_screen.cpp | 16 +- Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp | 2 +- Marlin/src/lcd/extui/nextion/nextion_tft.cpp | 18 +- Marlin/src/module/endstops.cpp | 286 ++---------- Marlin/src/module/probe.h | 4 +- buildroot/tests/FYSETC_F6 | 4 +- buildroot/tests/mega1280 | 4 +- buildroot/tests/teensy35 | 2 +- buildroot/tests/teensy41 | 2 +- 15 files changed, 445 insertions(+), 624 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 9544ac5566..becad3f2f0 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1165,26 +1165,29 @@ //#define ENDSTOPPULLDOWN_ZMIN_PROBE #endif -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define I_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define J_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define K_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define U_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define V_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define W_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define I_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define J_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define K_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define U_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define V_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define W_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe. +/** + * Endstop "Hit" State + * Set to the state (HIGH or LOW) that applies to each endstop. + */ +#define X_MIN_ENDSTOP_HIT_STATE HIGH +#define X_MAX_ENDSTOP_HIT_STATE HIGH +#define Y_MIN_ENDSTOP_HIT_STATE HIGH +#define Y_MAX_ENDSTOP_HIT_STATE HIGH +#define Z_MIN_ENDSTOP_HIT_STATE HIGH +#define Z_MAX_ENDSTOP_HIT_STATE HIGH +#define I_MIN_ENDSTOP_HIT_STATE HIGH +#define I_MAX_ENDSTOP_HIT_STATE HIGH +#define J_MIN_ENDSTOP_HIT_STATE HIGH +#define J_MAX_ENDSTOP_HIT_STATE HIGH +#define K_MIN_ENDSTOP_HIT_STATE HIGH +#define K_MAX_ENDSTOP_HIT_STATE HIGH +#define U_MIN_ENDSTOP_HIT_STATE HIGH +#define U_MAX_ENDSTOP_HIT_STATE HIGH +#define V_MIN_ENDSTOP_HIT_STATE HIGH +#define V_MAX_ENDSTOP_HIT_STATE HIGH +#define W_MIN_ENDSTOP_HIT_STATE HIGH +#define W_MAX_ENDSTOP_HIT_STATE HIGH +#define Z_MIN_PROBE_ENDSTOP_HIT_STATE HIGH // Enable this feature if all enabled endstop pins are interrupt-capable. // This will remove the need to poll the interrupt pins, saving many CPU cycles. diff --git a/Marlin/src/gcode/config/M43.cpp b/Marlin/src/gcode/config/M43.cpp index 5807844012..d408ded3ac 100644 --- a/Marlin/src/gcode/config/M43.cpp +++ b/Marlin/src/gcode/config/M43.cpp @@ -139,24 +139,17 @@ inline void servo_probe_test() { bool deploy_state = false, stow_state; #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - + constexpr bool probe_hit_state = Z_MIN_ENDSTOP_HIT_STATE; #define PROBE_TEST_PIN Z_MIN_PIN - constexpr bool probe_inverting = Z_MIN_ENDSTOP_INVERTING; - - SERIAL_ECHOLNPGM(". Probe Z_MIN_PIN: ", PROBE_TEST_PIN); - SERIAL_ECHOPGM(". Z_MIN_ENDSTOP_INVERTING: "); - + #define _PROBE_PREF "Z_MIN" #else - + constexpr bool probe_hit_state = Z_MIN_PROBE_ENDSTOP_HIT_STATE; #define PROBE_TEST_PIN Z_MIN_PROBE_PIN - constexpr bool probe_inverting = Z_MIN_PROBE_ENDSTOP_INVERTING; - - SERIAL_ECHOLNPGM(". Probe Z_MIN_PROBE_PIN: ", PROBE_TEST_PIN); - SERIAL_ECHOPGM( ". Z_MIN_PROBE_ENDSTOP_INVERTING: "); - + #define _PROBE_PREF "Z_MIN_PROBE" #endif - serialprint_truefalse(probe_inverting); + SERIAL_ECHOLNPGM(". Probe " _PROBE_PREF "_PIN: ", PROBE_TEST_PIN); + serial_ternary(probe_hit_state, F(". " _PROBE_PREF "_ENDSTOP_HIT_STATE: "), F("HIGH"), F("LOW")); SERIAL_EOL(); SET_INPUT_PULLUP(PROBE_TEST_PIN); @@ -173,11 +166,11 @@ inline void servo_probe_test() { SERIAL_ECHOLNPGM(". Check for BLTOUCH"); bltouch._reset(); bltouch._stow(); - if (probe_inverting == READ(PROBE_TEST_PIN)) { + if (READ(PROBE_TEST_PIN) != probe_hit_state) { bltouch._set_SW_mode(); - if (probe_inverting != READ(PROBE_TEST_PIN)) { + if (READ(PROBE_TEST_PIN) == probe_hit_state) { bltouch._deploy(); - if (probe_inverting == READ(PROBE_TEST_PIN)) { + if (READ(PROBE_TEST_PIN) != probe_hit_state) { bltouch._stow(); SERIAL_ECHOLNPGM("= BLTouch Classic 1.2, 1.3, Smart 1.0, 2.0, 2.2, 3.0, 3.1 detected."); // Check for a 3.1 by letting the user trigger it, later @@ -195,31 +188,30 @@ inline void servo_probe_test() { if (!blt) { // DEPLOY and STOW 4 times and see if the signal follows // Then it is a mechanical switch - uint8_t i = 0; SERIAL_ECHOLNPGM(". Deploy & stow 4 times"); - do { + LOOP_L_N(i, 4) { servo[probe_index].move(servo_angles[Z_PROBE_SERVO_NR][0]); // Deploy safe_delay(500); deploy_state = READ(PROBE_TEST_PIN); servo[probe_index].move(servo_angles[Z_PROBE_SERVO_NR][1]); // Stow safe_delay(500); stow_state = READ(PROBE_TEST_PIN); - } while (++i < 4); + } - if (probe_inverting != deploy_state) SERIAL_ECHOLNPGM("WARNING: INVERTING setting probably backwards."); + if (probe_hit_state == deploy_state) SERIAL_ECHOLNPGM("WARNING: " _PROBE_PREF "_ENDSTOP_HIT_STATE is probably wrong."); if (deploy_state != stow_state) { SERIAL_ECHOLNPGM("= Mechanical Switch detected"); if (deploy_state) { - SERIAL_ECHOLNPGM(" DEPLOYED state: HIGH (logic 1)", - " STOWED (triggered) state: LOW (logic 0)"); + SERIAL_ECHOLNPGM(". DEPLOYED state: HIGH (logic 1)\n" + ". STOWED (triggered) state: LOW (logic 0)"); } else { - SERIAL_ECHOLNPGM(" DEPLOYED state: LOW (logic 0)", - " STOWED (triggered) state: HIGH (logic 1)"); + SERIAL_ECHOLNPGM(". DEPLOYED state: LOW (logic 0)\n" + ". STOWED (triggered) state: HIGH (logic 1)"); } #if ENABLED(BLTOUCH) - SERIAL_ECHOLNPGM("FAIL: BLTOUCH enabled - Set up this device as a Servo Probe with INVERTING set to 'true'."); + SERIAL_ECHOLNPGM("FAIL: Can't enable BLTOUCH. Check your settings."); #endif return; } diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index ecaeee86e7..3c821e5306 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -794,8 +794,8 @@ #undef AVOID_OBSTACLES #undef ENDSTOPPULLUP_YMIN #undef ENDSTOPPULLUP_YMAX - #undef Y_MIN_ENDSTOP_INVERTING - #undef Y_MAX_ENDSTOP_INVERTING + #undef Y_MIN_ENDSTOP_HIT_STATE + #undef Y_MAX_ENDSTOP_HIT_STATE #undef Y2_DRIVER_TYPE #undef Y_ENABLE_ON #undef DISABLE_Y @@ -821,8 +821,8 @@ #else #undef ENDSTOPPULLUP_ZMIN #undef ENDSTOPPULLUP_ZMAX - #undef Z_MIN_ENDSTOP_INVERTING - #undef Z_MAX_ENDSTOP_INVERTING + #undef Z_MIN_ENDSTOP_HIT_STATE + #undef Z_MAX_ENDSTOP_HIT_STATE #undef Z2_DRIVER_TYPE #undef Z3_DRIVER_TYPE #undef Z4_DRIVER_TYPE @@ -841,8 +841,8 @@ #if !HAS_I_AXIS #undef ENDSTOPPULLUP_IMIN #undef ENDSTOPPULLUP_IMAX - #undef I_MIN_ENDSTOP_INVERTING - #undef I_MAX_ENDSTOP_INVERTING + #undef I_MIN_ENDSTOP_HIT_STATE + #undef I_MAX_ENDSTOP_HIT_STATE #undef I_ENABLE_ON #undef DISABLE_I #undef INVERT_I_DIR @@ -857,8 +857,8 @@ #if !HAS_J_AXIS #undef ENDSTOPPULLUP_JMIN #undef ENDSTOPPULLUP_JMAX - #undef J_MIN_ENDSTOP_INVERTING - #undef J_MAX_ENDSTOP_INVERTING + #undef J_MIN_ENDSTOP_HIT_STATE + #undef J_MAX_ENDSTOP_HIT_STATE #undef J_ENABLE_ON #undef DISABLE_J #undef INVERT_J_DIR @@ -873,8 +873,8 @@ #if !HAS_K_AXIS #undef ENDSTOPPULLUP_KMIN #undef ENDSTOPPULLUP_KMAX - #undef K_MIN_ENDSTOP_INVERTING - #undef K_MAX_ENDSTOP_INVERTING + #undef K_MIN_ENDSTOP_HIT_STATE + #undef K_MAX_ENDSTOP_HIT_STATE #undef K_ENABLE_ON #undef DISABLE_K #undef INVERT_K_DIR @@ -889,8 +889,8 @@ #if !HAS_U_AXIS #undef ENDSTOPPULLUP_UMIN #undef ENDSTOPPULLUP_UMAX - #undef U_MIN_ENDSTOP_INVERTING - #undef U_MAX_ENDSTOP_INVERTING + #undef U_MIN_ENDSTOP_HIT_STATE + #undef U_MAX_ENDSTOP_HIT_STATE #undef U_ENABLE_ON #undef DISABLE_U #undef INVERT_U_DIR @@ -905,8 +905,8 @@ #if !HAS_V_AXIS #undef ENDSTOPPULLUP_VMIN #undef ENDSTOPPULLUP_VMAX - #undef V_MIN_ENDSTOP_INVERTING - #undef V_MAX_ENDSTOP_INVERTING + #undef V_MIN_ENDSTOP_HIT_STATE + #undef V_MAX_ENDSTOP_HIT_STATE #undef V_ENABLE_ON #undef DISABLE_V #undef INVERT_V_DIR @@ -921,8 +921,8 @@ #if !HAS_W_AXIS #undef ENDSTOPPULLUP_WMIN #undef ENDSTOPPULLUP_WMAX - #undef W_MIN_ENDSTOP_INVERTING - #undef W_MAX_ENDSTOP_INVERTING + #undef W_MIN_ENDSTOP_HIT_STATE + #undef W_MAX_ENDSTOP_HIT_STATE #undef W_ENABLE_ON #undef DISABLE_W #undef INVERT_W_DIR @@ -1081,10 +1081,8 @@ * The BLTouch Probe emulates a servo probe * and uses "special" angles for its state. */ -#if ENABLED(BLTOUCH) - #ifndef Z_PROBE_SERVO_NR - #define Z_PROBE_SERVO_NR 0 - #endif +#if ENABLED(BLTOUCH) && !defined(Z_PROBE_SERVO_NR) + #define Z_PROBE_SERVO_NR 0 #endif /** diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index f137d48859..6e0c6c95a8 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -914,19 +914,19 @@ */ #if ENABLED(X_DUAL_ENDSTOPS) #if X_HOME_TO_MAX - #ifndef X2_MAX_ENDSTOP_INVERTING + #ifndef X2_MAX_ENDSTOP_HIT_STATE #if X2_USE_ENDSTOP == _XMIN_ - #define X2_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING + #define X2_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE #elif X2_USE_ENDSTOP == _XMAX_ - #define X2_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING + #define X2_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE #elif X2_USE_ENDSTOP == _YMIN_ - #define X2_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING + #define X2_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE #elif X2_USE_ENDSTOP == _YMAX_ - #define X2_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING + #define X2_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE #elif X2_USE_ENDSTOP == _ZMIN_ - #define X2_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING + #define X2_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE #elif X2_USE_ENDSTOP == _ZMAX_ - #define X2_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING + #define X2_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif #if !PIN_EXISTS(X2_MAX) @@ -936,19 +936,19 @@ #endif #endif #else - #ifndef X2_MIN_ENDSTOP_INVERTING + #ifndef X2_MIN_ENDSTOP_HIT_STATE #if X2_USE_ENDSTOP == _XMIN_ - #define X2_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING + #define X2_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE #elif X2_USE_ENDSTOP == _XMAX_ - #define X2_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING + #define X2_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE #elif X2_USE_ENDSTOP == _YMIN_ - #define X2_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING + #define X2_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE #elif X2_USE_ENDSTOP == _YMAX_ - #define X2_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING + #define X2_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE #elif X2_USE_ENDSTOP == _ZMIN_ - #define X2_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING + #define X2_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE #elif X2_USE_ENDSTOP == _ZMAX_ - #define X2_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING + #define X2_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif #if !PIN_EXISTS(X2_MIN) @@ -958,11 +958,11 @@ #endif #endif #endif - #ifndef X2_MAX_ENDSTOP_INVERTING - #define X2_MAX_ENDSTOP_INVERTING false + #ifndef X2_MAX_ENDSTOP_HIT_STATE + #define X2_MAX_ENDSTOP_HIT_STATE HIGH #endif - #ifndef X2_MIN_ENDSTOP_INVERTING - #define X2_MIN_ENDSTOP_INVERTING false + #ifndef X2_MIN_ENDSTOP_HIT_STATE + #define X2_MIN_ENDSTOP_HIT_STATE HIGH #endif #endif @@ -971,19 +971,19 @@ */ #if ENABLED(Y_DUAL_ENDSTOPS) #if Y_HOME_TO_MAX - #ifndef Y2_MAX_ENDSTOP_INVERTING + #ifndef Y2_MAX_ENDSTOP_HIT_STATE #if Y2_USE_ENDSTOP == _XMIN_ - #define Y2_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING + #define Y2_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE #elif Y2_USE_ENDSTOP == _XMAX_ - #define Y2_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING + #define Y2_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE #elif Y2_USE_ENDSTOP == _YMIN_ - #define Y2_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING + #define Y2_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE #elif Y2_USE_ENDSTOP == _YMAX_ - #define Y2_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING + #define Y2_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE #elif Y2_USE_ENDSTOP == _ZMIN_ - #define Y2_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING + #define Y2_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE #elif Y2_USE_ENDSTOP == _ZMAX_ - #define Y2_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING + #define Y2_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif #if !PIN_EXISTS(Y2_MAX) @@ -993,19 +993,19 @@ #endif #endif #else - #ifndef Y2_MIN_ENDSTOP_INVERTING + #ifndef Y2_MIN_ENDSTOP_HIT_STATE #if Y2_USE_ENDSTOP == _XMIN_ - #define Y2_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING + #define Y2_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE #elif Y2_USE_ENDSTOP == _XMAX_ - #define Y2_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING + #define Y2_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE #elif Y2_USE_ENDSTOP == _YMIN_ - #define Y2_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING + #define Y2_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE #elif Y2_USE_ENDSTOP == _YMAX_ - #define Y2_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING + #define Y2_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE #elif Y2_USE_ENDSTOP == _ZMIN_ - #define Y2_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING + #define Y2_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE #elif Y2_USE_ENDSTOP == _ZMAX_ - #define Y2_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING + #define Y2_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif #if !PIN_EXISTS(Y2_MIN) @@ -1015,11 +1015,11 @@ #endif #endif #endif - #ifndef Y2_MAX_ENDSTOP_INVERTING - #define Y2_MAX_ENDSTOP_INVERTING false + #ifndef Y2_MAX_ENDSTOP_HIT_STATE + #define Y2_MAX_ENDSTOP_HIT_STATE HIGH #endif - #ifndef Y2_MIN_ENDSTOP_INVERTING - #define Y2_MIN_ENDSTOP_INVERTING false + #ifndef Y2_MIN_ENDSTOP_HIT_STATE + #define Y2_MIN_ENDSTOP_HIT_STATE HIGH #endif #endif @@ -1029,19 +1029,19 @@ #if ENABLED(Z_MULTI_ENDSTOPS) #if Z_HOME_TO_MAX - #ifndef Z2_MAX_ENDSTOP_INVERTING + #ifndef Z2_MAX_ENDSTOP_HIT_STATE #if Z2_USE_ENDSTOP == _XMIN_ - #define Z2_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING + #define Z2_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE #elif Z2_USE_ENDSTOP == _XMAX_ - #define Z2_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING + #define Z2_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE #elif Z2_USE_ENDSTOP == _YMIN_ - #define Z2_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING + #define Z2_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE #elif Z2_USE_ENDSTOP == _YMAX_ - #define Z2_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING + #define Z2_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE #elif Z2_USE_ENDSTOP == _ZMIN_ - #define Z2_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING + #define Z2_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE #elif Z2_USE_ENDSTOP == _ZMAX_ - #define Z2_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING + #define Z2_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif #if !PIN_EXISTS(Z2_MAX) @@ -1051,19 +1051,19 @@ #endif #endif #else - #ifndef Z2_MIN_ENDSTOP_INVERTING + #ifndef Z2_MIN_ENDSTOP_HIT_STATE #if Z2_USE_ENDSTOP == _XMIN_ - #define Z2_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING + #define Z2_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE #elif Z2_USE_ENDSTOP == _XMAX_ - #define Z2_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING + #define Z2_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE #elif Z2_USE_ENDSTOP == _YMIN_ - #define Z2_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING + #define Z2_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE #elif Z2_USE_ENDSTOP == _YMAX_ - #define Z2_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING + #define Z2_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE #elif Z2_USE_ENDSTOP == _ZMIN_ - #define Z2_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING + #define Z2_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE #elif Z2_USE_ENDSTOP == _ZMAX_ - #define Z2_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING + #define Z2_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif #if !PIN_EXISTS(Z2_MIN) @@ -1073,28 +1073,28 @@ #endif #endif #endif - #ifndef Z2_MAX_ENDSTOP_INVERTING - #define Z2_MAX_ENDSTOP_INVERTING false + #ifndef Z2_MAX_ENDSTOP_HIT_STATE + #define Z2_MAX_ENDSTOP_HIT_STATE HIGH #endif - #ifndef Z2_MIN_ENDSTOP_INVERTING - #define Z2_MIN_ENDSTOP_INVERTING false + #ifndef Z2_MIN_ENDSTOP_HIT_STATE + #define Z2_MIN_ENDSTOP_HIT_STATE HIGH #endif #if NUM_Z_STEPPERS >= 3 #if Z_HOME_TO_MAX - #ifndef Z3_MAX_ENDSTOP_INVERTING + #ifndef Z3_MAX_ENDSTOP_HIT_STATE #if Z3_USE_ENDSTOP == _XMIN_ - #define Z3_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING + #define Z3_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE #elif Z3_USE_ENDSTOP == _XMAX_ - #define Z3_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING + #define Z3_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE #elif Z3_USE_ENDSTOP == _YMIN_ - #define Z3_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING + #define Z3_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE #elif Z3_USE_ENDSTOP == _YMAX_ - #define Z3_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING + #define Z3_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE #elif Z3_USE_ENDSTOP == _ZMIN_ - #define Z3_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING + #define Z3_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE #elif Z3_USE_ENDSTOP == _ZMAX_ - #define Z3_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING + #define Z3_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif #if !PIN_EXISTS(Z3_MAX) @@ -1104,19 +1104,19 @@ #endif #endif #else - #ifndef Z3_MIN_ENDSTOP_INVERTING + #ifndef Z3_MIN_ENDSTOP_HIT_STATE #if Z3_USE_ENDSTOP == _XMIN_ - #define Z3_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING + #define Z3_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE #elif Z3_USE_ENDSTOP == _XMAX_ - #define Z3_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING + #define Z3_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE #elif Z3_USE_ENDSTOP == _YMIN_ - #define Z3_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING + #define Z3_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE #elif Z3_USE_ENDSTOP == _YMAX_ - #define Z3_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING + #define Z3_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE #elif Z3_USE_ENDSTOP == _ZMIN_ - #define Z3_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING + #define Z3_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE #elif Z3_USE_ENDSTOP == _ZMAX_ - #define Z3_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING + #define Z3_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif #if !PIN_EXISTS(Z3_MIN) @@ -1126,29 +1126,29 @@ #endif #endif #endif - #ifndef Z3_MAX_ENDSTOP_INVERTING - #define Z3_MAX_ENDSTOP_INVERTING false + #ifndef Z3_MAX_ENDSTOP_HIT_STATE + #define Z3_MAX_ENDSTOP_HIT_STATE HIGH #endif - #ifndef Z3_MIN_ENDSTOP_INVERTING - #define Z3_MIN_ENDSTOP_INVERTING false + #ifndef Z3_MIN_ENDSTOP_HIT_STATE + #define Z3_MIN_ENDSTOP_HIT_STATE HIGH #endif #endif #if NUM_Z_STEPPERS >= 4 #if Z_HOME_TO_MAX - #ifndef Z4_MAX_ENDSTOP_INVERTING + #ifndef Z4_MAX_ENDSTOP_HIT_STATE #if Z4_USE_ENDSTOP == _XMIN_ - #define Z4_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING + #define Z4_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE #elif Z4_USE_ENDSTOP == _XMAX_ - #define Z4_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING + #define Z4_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE #elif Z4_USE_ENDSTOP == _YMIN_ - #define Z4_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING + #define Z4_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE #elif Z4_USE_ENDSTOP == _YMAX_ - #define Z4_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING + #define Z4_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE #elif Z4_USE_ENDSTOP == _ZMIN_ - #define Z4_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING + #define Z4_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE #elif Z4_USE_ENDSTOP == _ZMAX_ - #define Z4_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING + #define Z4_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif #if !PIN_EXISTS(Z4_MAX) @@ -1158,19 +1158,19 @@ #endif #endif #else - #ifndef Z4_MIN_ENDSTOP_INVERTING + #ifndef Z4_MIN_ENDSTOP_HIT_STATE #if Z4_USE_ENDSTOP == _XMIN_ - #define Z4_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING + #define Z4_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE #elif Z4_USE_ENDSTOP == _XMAX_ - #define Z4_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING + #define Z4_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE #elif Z4_USE_ENDSTOP == _YMIN_ - #define Z4_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING + #define Z4_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE #elif Z4_USE_ENDSTOP == _YMAX_ - #define Z4_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING + #define Z4_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE #elif Z4_USE_ENDSTOP == _ZMIN_ - #define Z4_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING + #define Z4_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE #elif Z4_USE_ENDSTOP == _ZMAX_ - #define Z4_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING + #define Z4_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif #if !PIN_EXISTS(Z4_MIN) @@ -1180,11 +1180,11 @@ #endif #endif #endif - #ifndef Z4_MAX_ENDSTOP_INVERTING - #define Z4_MAX_ENDSTOP_INVERTING false + #ifndef Z4_MAX_ENDSTOP_HIT_STATE + #define Z4_MAX_ENDSTOP_HIT_STATE HIGH #endif - #ifndef Z4_MIN_ENDSTOP_INVERTING - #define Z4_MIN_ENDSTOP_INVERTING false + #ifndef Z4_MIN_ENDSTOP_HIT_STATE + #define Z4_MIN_ENDSTOP_HIT_STATE HIGH #endif #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 6052fcb70c..1f43d01bb8 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1876,19 +1876,19 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #endif #if ENABLED(INVERTED_PROBE_STATE) - #if !Z_MIN_PROBE_ENDSTOP_INVERTING - #error "BLTOUCH requires Z_MIN_PROBE_ENDSTOP_INVERTING set to true." + #if Z_MIN_PROBE_ENDSTOP_HIT_STATE != LOW + #error "BLTOUCH requires Z_MIN_PROBE_ENDSTOP_HIT_STATE LOW." #endif - #elif Z_MIN_PROBE_ENDSTOP_INVERTING - #error "BLTOUCH requires Z_MIN_PROBE_ENDSTOP_INVERTING set to false." + #elif Z_MIN_PROBE_ENDSTOP_HIT_STATE != HIGH + #error "BLTOUCH requires Z_MIN_PROBE_ENDSTOP_HIT_STATE HIGH." #endif #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) #if ENABLED(INVERTED_PROBE_STATE) - #if !Z_MIN_ENDSTOP_INVERTING - #error "BLTOUCH requires Z_MIN_ENDSTOP_INVERTING set to true." + #if Z_MIN_ENDSTOP_HIT_STATE != LOW + #error "BLTOUCH requires Z_MIN_ENDSTOP_HIT_STATE LOW." #endif - #elif Z_MIN_ENDSTOP_INVERTING - #error "BLTOUCH requires Z_MIN_ENDSTOP_INVERTING set to false." + #elif Z_MIN_ENDSTOP_HIT_STATE != HIGH + #error "BLTOUCH requires Z_MIN_ENDSTOP_HIT_STATE HIGH." #endif #endif @@ -1916,19 +1916,19 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "TOUCH_MI_PROBE currently requires an LCD controller or EMERGENCY_PARSER." #endif #if ENABLED(INVERTED_PROBE_STATE) - #if !Z_MIN_PROBE_ENDSTOP_INVERTING - #error "TOUCH_MI_PROBE requires Z_MIN_PROBE_ENDSTOP_INVERTING set to true." + #if Z_MIN_PROBE_ENDSTOP_HIT_STATE != LOW + #error "TOUCH_MI_PROBE requires Z_MIN_PROBE_ENDSTOP_HIT_STATE LOW." #endif - #elif Z_MIN_PROBE_ENDSTOP_INVERTING - #error "TOUCH_MI_PROBE requires Z_MIN_PROBE_ENDSTOP_INVERTING set to false." + #elif Z_MIN_PROBE_ENDSTOP_HIT_STATE != HIGH + #error "TOUCH_MI_PROBE requires Z_MIN_PROBE_ENDSTOP_HIT_STATE HIGH." #endif #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) #if ENABLED(INVERTED_PROBE_STATE) - #if !Z_MIN_ENDSTOP_INVERTING - #error "TOUCH_MI_PROBE requires Z_MIN_ENDSTOP_INVERTING set to true." + #if Z_MIN_ENDSTOP_HIT_STATE != LOW + #error "TOUCH_MI_PROBE requires Z_MIN_ENDSTOP_HIT_STATE LOW." #endif - #elif Z_MIN_ENDSTOP_INVERTING - #error "TOUCH_MI_PROBE requires Z_MIN_ENDSTOP_INVERTING set to false." + #elif Z_MIN_ENDSTOP_HIT_STATE != HIGH + #error "TOUCH_MI_PROBE requires Z_MIN_ENDSTOP_HIT_STATE HIGH." #endif #endif #endif // TOUCH_MI_PROBE @@ -1967,8 +1967,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires USE_ZMIN_PLUG to be enabled." #elif !HAS_Z_MIN #error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires the Z_MIN_PIN to be defined." - #elif Z_MIN_PROBE_ENDSTOP_INVERTING != Z_MIN_ENDSTOP_INVERTING - #error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires Z_MIN_ENDSTOP_INVERTING to match Z_MIN_PROBE_ENDSTOP_INVERTING." + #elif Z_MIN_PROBE_ENDSTOP_HIT_STATE != Z_MIN_ENDSTOP_HIT_STATE + #error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires Z_MIN_ENDSTOP_HIT_STATE to match Z_MIN_PROBE_ENDSTOP_HIT_STATE." #endif #elif !HAS_Z_MIN_PROBE_PIN #error "Z_MIN_PROBE_PIN must be defined if Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN is not enabled." @@ -3449,17 +3449,17 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "TMC2208 or TMC2209 on E6 requires E6_HARDWARE_SERIAL or E6_SERIAL_(RX|TX)_PIN." #elif INVALID_TMC_UART(E7) #error "TMC2208 or TMC2209 on E7 requires E7_HARDWARE_SERIAL or E7_SERIAL_(RX|TX)_PIN." -#elif HAS_I_AXIS && INVALID_TMC_UART(I) +#elif INVALID_TMC_UART(I) #error "TMC2208 or TMC2209 on I requires I_HARDWARE_SERIAL or I_SERIAL_(RX|TX)_PIN." -#elif HAS_J_AXIS && INVALID_TMC_UART(J) +#elif INVALID_TMC_UART(J) #error "TMC2208 or TMC2209 on J requires J_HARDWARE_SERIAL or J_SERIAL_(RX|TX)_PIN." -#elif HAS_K_AXIS && INVALID_TMC_UART(K) +#elif INVALID_TMC_UART(K) #error "TMC2208 or TMC2209 on K requires K_HARDWARE_SERIAL or K_SERIAL_(RX|TX)_PIN." -#elif HAS_U_AXIS && INVALID_TMC_UART(U) +#elif INVALID_TMC_UART(U) #error "TMC2208 or TMC2209 on U requires U_HARDWARE_SERIAL or U_SERIAL_(RX|TX)_PIN." -#elif HAS_V_AXIS && INVALID_TMC_UART(V) +#elif INVALID_TMC_UART(V) #error "TMC2208 or TMC2209 on V requires V_HARDWARE_SERIAL or V_SERIAL_(RX|TX)_PIN." -#elif HAS_W_AXIS && INVALID_TMC_UART(W) +#elif INVALID_TMC_UART(W) #error "TMC2208 or TMC2209 on W requires W_HARDWARE_SERIAL or W_SERIAL_(RX|TX)_PIN." #endif @@ -3552,17 +3552,17 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS INVALID_TMC_MS(E6) #elif !TMC_MICROSTEP_IS_VALID(E7) INVALID_TMC_MS(E7) -#elif HAS_I_AXIS && !TMC_MICROSTEP_IS_VALID(I) +#elif !TMC_MICROSTEP_IS_VALID(I) INVALID_TMC_MS(I) -#elif HAS_J_AXIS && !TMC_MICROSTEP_IS_VALID(J) +#elif !TMC_MICROSTEP_IS_VALID(J) INVALID_TMC_MS(J) -#elif HAS_K_AXIS && !TMC_MICROSTEP_IS_VALID(K) +#elif !TMC_MICROSTEP_IS_VALID(K) INVALID_TMC_MS(K) -#elif HAS_U_AXIS && !TMC_MICROSTEP_IS_VALID(U) +#elif !TMC_MICROSTEP_IS_VALID(U) INVALID_TMC_MS(U) -#elif HAS_V_AXIS && !TMC_MICROSTEP_IS_VALID(V) +#elif !TMC_MICROSTEP_IS_VALID(V) INVALID_TMC_MS(V) -#elif HAS_W_AXIS && !TMC_MICROSTEP_IS_VALID(W) +#elif !TMC_MICROSTEP_IS_VALID(W) INVALID_TMC_MS(W) #endif #undef INVALID_TMC_MS @@ -3579,67 +3579,43 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS // towers to +Z and the individual homing of each tower. This restriction can be removed once a means of // clearing the stallGuard activated status is found. - // Stall detection DIAG = HIGH : TMC2209 - // Stall detection DIAG = LOW : TMC2130/TMC2160/TMC2660/TMC5130/TMC5160 - #define X_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(X,TMC2209) - #define Y_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(Y,TMC2209) - #define Z_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(Z,TMC2209) - #if HAS_I_AXIS - #define I_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(I,TMC2209) - #endif - #if HAS_J_AXIS - #define J_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(J,TMC2209) - #endif - #if HAS_K_AXIS - #define K_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(K,TMC2209) - #endif - #if HAS_U_AXIS - #define U_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(U,TMC2209) - #endif - #if HAS_V_AXIS - #define V_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(V,TMC2209) - #endif - #if HAS_W_AXIS - #define W_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(W,TMC2209) - #endif - #if NONE(SPI_ENDSTOPS, ONBOARD_ENDSTOPPULLUPS, ENDSTOPPULLUPS) #if X_SENSORLESS && X_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_XMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_XMIN (or ENDSTOPPULLUPS) when homing to X_MIN." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_XMIN (or ENDSTOPPULLUPS) for X_MIN homing." #elif X_SENSORLESS && X_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_XMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_XMAX (or ENDSTOPPULLUPS) when homing to X_MAX." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_XMAX (or ENDSTOPPULLUPS) for X_MAX homing." #elif Y_SENSORLESS && Y_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_YMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_YMIN (or ENDSTOPPULLUPS) when homing to Y_MIN." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_YMIN (or ENDSTOPPULLUPS) for Y_MIN homing." #elif Y_SENSORLESS && Y_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_YMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_YMAX (or ENDSTOPPULLUPS) when homing to Y_MAX." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_YMAX (or ENDSTOPPULLUPS) for Y_MAX homing." #elif Z_SENSORLESS && Z_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_ZMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMIN (or ENDSTOPPULLUPS) when homing to Z_MIN." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMIN (or ENDSTOPPULLUPS) for Z_MIN homing." #elif Z_SENSORLESS && Z_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_ZMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMAX (or ENDSTOPPULLUPS) when homing to Z_MAX." - #elif ALL(HAS_I_AXIS, I_SENSORLESS, I_HOME_TO_MIN) && DISABLED(ENDSTOPPULLUP_IMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMIN (or ENDSTOPPULLUPS) when homing to I_MIN." - #elif ALL(HAS_I_AXIS, I_SENSORLESS, I_HOME_TO_MAX) && DISABLED(ENDSTOPPULLUP_IMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMAX (or ENDSTOPPULLUPS) when homing to I_MAX." - #elif ALL(HAS_J_AXIS, J_SENSORLESS, J_HOME_TO_MIN) && DISABLED(ENDSTOPPULLUP_JMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMIN (or ENDSTOPPULLUPS) when homing to J_MIN." - #elif ALL(HAS_J_AXIS, J_SENSORLESS, J_HOME_TO_MAX) && DISABLED(ENDSTOPPULLUP_JMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMAX (or ENDSTOPPULLUPS) when homing to J_MAX." - #elif ALL(HAS_K_AXIS, K_SENSORLESS, K_HOME_TO_MIN) && DISABLED(ENDSTOPPULLUP_KMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMIN (or ENDSTOPPULLUPS) when homing to K_MIN." - #elif ALL(HAS_K_AXIS, K_SENSORLESS, K_HOME_TO_MAX) && DISABLED(ENDSTOPPULLUP_KMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMAX (or ENDSTOPPULLUPS) when homing to K_MAX." - #elif HAS_U_AXIS && U_SENSORLESS && U_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_UMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_UMIN (or ENDSTOPPULLUPS) when homing to U_MIN." - #elif HAS_U_AXIS && U_SENSORLESS && U_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_UMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_UMAX (or ENDSTOPPULLUPS) when homing to U_MAX." - #elif HAS_V_AXIS && V_SENSORLESS && V_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_VMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_VMIN (or ENDSTOPPULLUPS) when homing to V_MIN." - #elif HAS_V_AXIS && V_SENSORLESS && V_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_VMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_VMAX (or ENDSTOPPULLUPS) when homing to V_MAX." - #elif HAS_W_AXIS && W_SENSORLESS && W_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_WMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_WMIN (or ENDSTOPPULLUPS) when homing to W_MIN." - #elif HAS_W_AXIS && W_SENSORLESS && W_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_WMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_WMAX (or ENDSTOPPULLUPS) when homing to W_MAX." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMAX (or ENDSTOPPULLUPS) for Z_MAX homing." + #elif I_SENSORLESS && I_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_IMIN) + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMIN (or ENDSTOPPULLUPS) for I_MIN homing." + #elif I_SENSORLESS && I_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_IMAX) + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMAX (or ENDSTOPPULLUPS) for I_MAX homing." + #elif J_SENSORLESS && J_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_JMIN) + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMIN (or ENDSTOPPULLUPS) for J_MIN homing." + #elif J_SENSORLESS && J_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_JMAX) + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMAX (or ENDSTOPPULLUPS) for J_MAX homing." + #elif K_SENSORLESS && K_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_KMIN) + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMIN (or ENDSTOPPULLUPS) for K_MIN homing." + #elif K_SENSORLESS && K_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_KMAX) + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMAX (or ENDSTOPPULLUPS) for K_MAX homing." + #elif U_SENSORLESS && U_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_UMIN) + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_UMIN (or ENDSTOPPULLUPS) for U_MIN homing." + #elif U_SENSORLESS && U_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_UMAX) + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_UMAX (or ENDSTOPPULLUPS) for U_MAX homing." + #elif V_SENSORLESS && V_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_VMIN) + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_VMIN (or ENDSTOPPULLUPS) for V_MIN homing." + #elif V_SENSORLESS && V_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_VMAX) + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_VMAX (or ENDSTOPPULLUPS) for V_MAX homing." + #elif W_SENSORLESS && W_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_WMIN) + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_WMIN (or ENDSTOPPULLUPS) for W_MIN homing." + #elif W_SENSORLESS && W_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_WMAX) + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_WMAX (or ENDSTOPPULLUPS) for W_MAX homing." #endif #endif @@ -3648,117 +3624,172 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #if ENABLED(QUICK_HOME) #warning "SPI_ENDSTOPS may be unreliable with QUICK_HOME. Adjust back-offs for better results." #endif - #else - #if X_SENSORLESS && X_HOME_TO_MIN && X_MIN_ENDSTOP_INVERTING != X_ENDSTOP_INVERTING - #if X_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_INVERTING = true when homing to X_MIN." - #else - #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to X_MIN." - #endif - #elif X_SENSORLESS && X_HOME_TO_MAX && X_MAX_ENDSTOP_INVERTING != X_ENDSTOP_INVERTING - #if X_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_INVERTING = true when homing to X_MAX." - #else - #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to X_MAX." - #endif - #elif Y_SENSORLESS && Y_HOME_TO_MIN && Y_MIN_ENDSTOP_INVERTING != Y_ENDSTOP_INVERTING - #if Y_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_INVERTING = true when homing to Y_MIN." - #else - #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to Y_MIN." - #endif - #elif Y_SENSORLESS && Y_HOME_TO_MAX && Y_MAX_ENDSTOP_INVERTING != Y_ENDSTOP_INVERTING - #if Y_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires Y_MAX_ENDSTOP_INVERTING = true when homing to Y_MAX." - #else - #error "SENSORLESS_HOMING requires Y_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to Y_MAX." - #endif - #elif Z_SENSORLESS && Z_HOME_TO_MIN && Z_MIN_ENDSTOP_INVERTING != Z_ENDSTOP_INVERTING - #if Z_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_INVERTING = true when homing to Z_MIN." - #else - #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to Z_MIN." - #endif - #elif Z_SENSORLESS && Z_HOME_TO_MAX && Z_MAX_ENDSTOP_INVERTING != Z_ENDSTOP_INVERTING - #if Z_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires Z_MAX_ENDSTOP_INVERTING = true when homing to Z_MAX." - #else - #error "SENSORLESS_HOMING requires Z_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to Z_MAX." - #endif - #elif ALL(HAS_I_AXIS, I_SENSORLESS, I_HOME_TO_MIN) && I_MIN_ENDSTOP_INVERTING != I_ENDSTOP_INVERTING - #if I_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_INVERTING = true when homing to I_MIN." - #else - #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to I_MIN." - #endif - #elif ALL(HAS_I_AXIS, I_SENSORLESS, I_HOME_TO_MAX) && I_MAX_ENDSTOP_INVERTING != I_ENDSTOP_INVERTING - #if I_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires I_MAX_ENDSTOP_INVERTING = true when homing to I_MAX." - #else - #error "SENSORLESS_HOMING requires I_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to I_MAX." - #endif - #elif ALL(HAS_J_AXIS, J_SENSORLESS, J_HOME_TO_MIN) && J_MIN_ENDSTOP_INVERTING != J_ENDSTOP_INVERTING - #if J_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_INVERTING = true when homing to J_MIN." - #else - #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to J_MIN." - #endif - #elif ALL(HAS_J_AXIS, J_SENSORLESS, J_HOME_TO_MAX) && J_MAX_ENDSTOP_INVERTING != J_ENDSTOP_INVERTING - #if J_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires J_MAX_ENDSTOP_INVERTING = true when homing to J_MAX." - #else - #error "SENSORLESS_HOMING requires J_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to J_MAX." - #endif - #elif ALL(HAS_K_AXIS, K_SENSORLESS, K_HOME_TO_MIN) && K_MIN_ENDSTOP_INVERTING != K_ENDSTOP_INVERTING - #if K_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_INVERTING = true when homing to K_MIN." - #else - #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to K_MIN." - #endif - #elif ALL(HAS_K_AXIS, K_SENSORLESS, K_HOME_TO_MAX) && K_MAX_ENDSTOP_INVERTING != K_ENDSTOP_INVERTING - #if K_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires K_MAX_ENDSTOP_INVERTING = true when homing to K_MAX." - #else - #error "SENSORLESS_HOMING requires K_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to K_MAX." - #endif - #elif ALL(HAS_U_AXIS, U_SENSORLESS, U_HOME_TO_MIN) && U_MIN_ENDSTOP_INVERTING != U_ENDSTOP_INVERTING - #if U_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_INVERTING = true when homing to U_MIN." - #else - #error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to U_MIN." - #endif - #elif ALL(HAS_U_AXIS, U_SENSORLESS, U_HOME_TO_MAX) && U_MAX_ENDSTOP_INVERTING != U_ENDSTOP_INVERTING - #if U_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires U_MAX_ENDSTOP_INVERTING = true when homing to U_MAX." - #else - #error "SENSORLESS_HOMING requires U_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to U_MAX." - #endif - #elif ALL(HAS_V_AXIS, V_SENSORLESS, V_HOME_TO_MIN) && V_MIN_ENDSTOP_INVERTING != V_ENDSTOP_INVERTING - #if V_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_INVERTING = true when homing to V_MIN." - #else - #error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to V_MIN." - #endif - #elif ALL(HAS_V_AXIS, V_SENSORLESS, V_HOME_TO_MAX) && V_MAX_ENDSTOP_INVERTING != V_ENDSTOP_INVERTING - #if V_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires V_MAX_ENDSTOP_INVERTING = true when homing to V_MAX." - #else - #error "SENSORLESS_HOMING requires V_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to V_MAX." - #endif - #elif ALL(HAS_W_AXIS, W_SENSORLESS, W_HOME_TO_MIN) && W_MIN_ENDSTOP_INVERTING != W_ENDSTOP_INVERTING - #if W_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_INVERTING = true when homing to W_MIN." - #else - #error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to W_MIN." - #endif - #elif ALL(HAS_W_AXIS, W_SENSORLESS, W_HOME_TO_MAX0) && W_MAX_ENDSTOP_INVERTING != W_ENDSTOP_INVERTING - #if W_ENDSTOP_INVERTING - #error "SENSORLESS_HOMING requires W_MAX_ENDSTOP_INVERTING = true when homing to W_MAX." - #else - #error "SENSORLESS_HOMING requires W_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to W_MAX." + #else // !SPI_ENDSTOPS + // Stall detection DIAG = HIGH : TMC2209 + // Stall detection DIAG = LOW : TMC2130/TMC2160/TMC2660/TMC5130/TMC5160 + #if X_SENSORLESS + #define _HIT_STATE AXIS_DRIVER_TYPE(X,TMC2209) + #if X_HOME_TO_MIN && X_MIN_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_HIT_STATE LOW for X_MIN homing." + #else + #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_HIT_STATE HIGH for X_MIN homing with TMC2209." + #endif + #elif X_HOME_TO_MAX && X_MAX_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_HIT_STATE LOW for X_MAX homing." + #else + #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_HIT_STATE HIGH for X_MAX homing with TMC2209." + #endif #endif + #undef _HIT_STATE #endif - #endif + + #if Y_SENSORLESS + #define _HIT_STATE AXIS_DRIVER_TYPE(Y,TMC2209) + #if Y_HOME_TO_MIN && Y_MIN_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_HIT_STATE LOW for Y_MIN homing." + #else + #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_HIT_STATE HIGH for Y_MIN homing with TMC2209." + #endif + #elif Y_HOME_TO_MAX && Y_MAX_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires Y_MAY_ENDSTOP_HIT_STATE LOW for Y_MAX homing." + #else + #error "SENSORLESS_HOMING requires Y_MAY_ENDSTOP_HIT_STATE HIGH for Y_MAX homing with TMC2209." + #endif + #endif + #undef _HIT_STATE + #endif + + #if Z_SENSORLESS + #define _HIT_STATE AXIS_DRIVER_TYPE(Z,TMC2209) + #if Z_HOME_TO_MIN && Z_MIN_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_HIT_STATE LOW for Z_MIN homing." + #else + #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_HIT_STATE HIGH for Z_MIN homing with TMC2209." + #endif + #elif Z_HOME_TO_MAX && Z_MAX_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires Z_MAZ_ENDSTOP_HIT_STATE LOW for Z_MAX homing." + #else + #error "SENSORLESS_HOMING requires Z_MAZ_ENDSTOP_HIT_STATE HIGH for Z_MAX homing with TMC2209." + #endif + #endif + #undef _HIT_STATE + #endif + + #if I_SENSORLESS + #define _HIT_STATE AXIS_DRIVER_TYPE(I,TMC2209) + #if I_HOME_TO_MIN && I_MIN_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_HIT_STATE LOW for I_MIN homing." + #else + #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_HIT_STATE HIGH for I_MIN homing with TMC2209." + #endif + #elif I_HOME_TO_MAX && I_MAX_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires I_MAI_ENDSTOP_HIT_STATE LOW for I_MAX homing." + #else + #error "SENSORLESS_HOMING requires I_MAI_ENDSTOP_HIT_STATE HIGH for I_MAX homing with TMC2209." + #endif + #endif + #undef _HIT_STATE + #endif + + #if J_SENSORLESS + #define _HIT_STATE AXIS_DRIVER_TYPE(J,TMC2209) + #if J_HOME_TO_MIN && J_MIN_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_HIT_STATE LOW for J_MIN homing." + #else + #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_HIT_STATE HIGH for J_MIN homing with TMC2209." + #endif + #elif J_HOME_TO_MAX && J_MAX_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires J_MAJ_ENDSTOP_HIT_STATE LOW for J_MAX homing." + #else + #error "SENSORLESS_HOMING requires J_MAJ_ENDSTOP_HIT_STATE HIGH for J_MAX homing with TMC2209." + #endif + #endif + #undef _HIT_STATE + #endif + + #if K_SENSORLESS + #define _HIT_STATE AXIS_DRIVER_TYPE(K,TMC2209) + #if K_HOME_TO_MIN && K_MIN_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_HIT_STATE LOW for K_MIN homing." + #else + #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_HIT_STATE HIGH for K_MIN homing with TMC2209." + #endif + #elif K_HOME_TO_MAX && K_MAX_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires K_MAK_ENDSTOP_HIT_STATE LOW for K_MAX homing." + #else + #error "SENSORLESS_HOMING requires K_MAK_ENDSTOP_HIT_STATE HIGH for K_MAX homing with TMC2209." + #endif + #endif + #undef _HIT_STATE + #endif + + #if U_SENSORLESS + #define _HIT_STATE AXIS_DRIVER_TYPE(U,TMC2209) + #if U_HOME_TO_MIN && U_MIN_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_HIT_STATE LOW for U_MIN homing." + #else + #error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_HIT_STATE HIGH for U_MIN homing with TMC2209." + #endif + #elif U_HOME_TO_MAX && U_MAX_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires U_MAU_ENDSTOP_HIT_STATE LOW for U_MAX homing." + #else + #error "SENSORLESS_HOMING requires U_MAU_ENDSTOP_HIT_STATE HIGH for U_MAX homing with TMC2209." + #endif + #endif + #undef _HIT_STATE + #endif + + #if V_SENSORLESS + #define _HIT_STATE AXIS_DRIVER_TYPE(V,TMC2209) + #if V_HOME_TO_MIN && V_MIN_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_HIT_STATE LOW for V_MIN homing." + #else + #error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_HIT_STATE HIGH for V_MIN homing with TMC2209." + #endif + #elif V_HOME_TO_MAX && V_MAX_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires V_MAV_ENDSTOP_HIT_STATE LOW for V_MAX homing." + #else + #error "SENSORLESS_HOMING requires V_MAV_ENDSTOP_HIT_STATE HIGH for V_MAX homing with TMC2209." + #endif + #endif + #undef _HIT_STATE + #endif + + #if W_SENSORLESS + #define _HIT_STATE AXIS_DRIVER_TYPE(W,TMC2209) + #if W_HOME_TO_MIN && W_MIN_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_HIT_STATE LOW for W_MIN homing." + #else + #error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_HIT_STATE HIGH for W_MIN homing with TMC2209." + #endif + #elif W_HOME_TO_MAX && W_MAX_ENDSTOP_HIT_STATE != _HIT_STATE + #if _HIT_STATE + #error "SENSORLESS_HOMING requires W_MAW_ENDSTOP_HIT_STATE LOW for W_MAX homing." + #else + #error "SENSORLESS_HOMING requires W_MAW_ENDSTOP_HIT_STATE HIGH for W_MAX homing with TMC2209." + #endif + #endif + #undef _HIT_STATE + #endif + + #endif // !SPI_ENDSTOPS #if ENABLED(DELTA) && !BOTH(STEALTHCHOP_XY, STEALTHCHOP_Z) #error "SENSORLESS_HOMING on DELTA currently requires STEALTHCHOP_XY and STEALTHCHOP_Z." @@ -3768,15 +3799,6 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "SENSORLESS_HOMING requires a TMC stepper driver with StallGuard on X, Y, Z, I, J, K, U, V, or W axes." #endif - #undef X_ENDSTOP_INVERTING - #undef Y_ENDSTOP_INVERTING - #undef Z_ENDSTOP_INVERTING - #undef I_ENDSTOP_INVERTING - #undef J_ENDSTOP_INVERTING - #undef K_ENDSTOP_INVERTING - #undef U_ENDSTOP_INVERTING - #undef V_ENDSTOP_INVERTING - #undef W_ENDSTOP_INVERTING #endif // Sensorless probing requirements diff --git a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp index 0945d69778..c3edba53df 100644 --- a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp +++ b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp @@ -89,7 +89,7 @@ void ESDiagClass::Draw() { void ESDiagClass::Update() { DWINUI::cursor.y = 80; - #define ES_REPORT(S) draw_es_state(READ(S##_PIN) != S##_ENDSTOP_INVERTING) + #define ES_REPORT(S) draw_es_state(READ(S##_PIN) == S##_ENDSTOP_HIT_STATE) #if HAS_X_MIN ES_REPORT(X_MIN); #endif diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp index f7e57cf0b9..b52904fe8f 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp @@ -41,7 +41,7 @@ void EndstopStatesScreen::onExit() { #define GRID_ROWS 7 #define PIN_BTN(X,Y,PIN,LABEL) button(BTN_POS(X,Y), BTN_SIZE(2,1), LABEL) -#define PIN_ENABLED(X,Y,LABEL,PIN,INV) cmd.enabled(1).colors(READ(PIN##_PIN) != INV ? action_btn : normal_btn).PIN_BTN(X,Y,PIN,LABEL); +#define PIN_ENABLED(X,Y,LABEL,PIN,ST) cmd.enabled(1).colors(READ(PIN##_PIN) == ST ? action_btn : normal_btn).PIN_BTN(X,Y,PIN,LABEL); #define PIN_DISABLED(X,Y,LABEL,PIN) cmd.enabled(0).PIN_BTN(X,Y,PIN,LABEL); void EndstopStatesScreen::onRedraw(draw_mode_t) { @@ -55,32 +55,32 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) { .text(BTN_POS(1,1), BTN_SIZE(6,1), GET_TEXT_F(MSG_LCD_ENDSTOPS)) .font(font_tiny); #if HAS_X_MAX - PIN_ENABLED (1, 2, PSTR(STR_X_MAX), X_MAX, X_MAX_ENDSTOP_INVERTING) + PIN_ENABLED (1, 2, PSTR(STR_X_MAX), X_MAX, X_MAX_ENDSTOP_HIT_STATE) #else PIN_DISABLED(1, 2, PSTR(STR_X_MAX), X_MAX) #endif #if HAS_Y_MAX - PIN_ENABLED (3, 2, PSTR(STR_Y_MAX), Y_MAX, Y_MAX_ENDSTOP_INVERTING) + PIN_ENABLED (3, 2, PSTR(STR_Y_MAX), Y_MAX, Y_MAX_ENDSTOP_HIT_STATE) #else PIN_DISABLED(3, 2, PSTR(STR_Y_MAX), Y_MAX) #endif #if HAS_Z_MAX - PIN_ENABLED (5, 2, PSTR(STR_Z_MAX), Z_MAX, Z_MAX_ENDSTOP_INVERTING) + PIN_ENABLED (5, 2, PSTR(STR_Z_MAX), Z_MAX, Z_MAX_ENDSTOP_HIT_STATE) #else PIN_DISABLED(5, 2, PSTR(STR_Z_MAX), Z_MAX) #endif #if HAS_X_MIN - PIN_ENABLED (1, 3, PSTR(STR_X_MIN), X_MIN, X_MIN_ENDSTOP_INVERTING) + PIN_ENABLED (1, 3, PSTR(STR_X_MIN), X_MIN, X_MIN_ENDSTOP_HIT_STATE) #else PIN_DISABLED(1, 3, PSTR(STR_X_MIN), X_MIN) #endif #if HAS_Y_MIN - PIN_ENABLED (3, 3, PSTR(STR_Y_MIN), Y_MIN, Y_MIN_ENDSTOP_INVERTING) + PIN_ENABLED (3, 3, PSTR(STR_Y_MIN), Y_MIN, Y_MIN_ENDSTOP_HIT_STATE) #else PIN_DISABLED(3, 3, PSTR(STR_Y_MIN), Y_MIN) #endif #if HAS_Z_MIN - PIN_ENABLED (5, 3, PSTR(STR_Z_MIN), Z_MIN, Z_MIN_ENDSTOP_INVERTING) + PIN_ENABLED (5, 3, PSTR(STR_Z_MIN), Z_MIN, Z_MIN_ENDSTOP_HIT_STATE) #else PIN_DISABLED(5, 3, PSTR(STR_Z_MIN), Z_MIN) #endif @@ -95,7 +95,7 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) { PIN_DISABLED(3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2) #endif #if PIN_EXISTS(Z_MIN_PROBE) - PIN_ENABLED (5, 4, PSTR(STR_Z_PROBE), Z_MIN_PROBE, Z_MIN_PROBE_ENDSTOP_INVERTING) + PIN_ENABLED (5, 4, PSTR(STR_Z_PROBE), Z_MIN_PROBE, Z_MIN_PROBE_ENDSTOP_HIT_STATE) #else PIN_DISABLED(5, 4, PSTR(STR_Z_PROBE), Z_MIN_PROBE) #endif diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp index 86b5e6eb4c..d1679d402f 100644 --- a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp +++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp @@ -76,7 +76,7 @@ constexpr static bool endstopz2_sta = true; #endif - #define ESTATE(S) (READ(S##_PIN) != S##_ENDSTOP_INVERTING) + #define ESTATE(S) (READ(S##_PIN) == S##_ENDSTOP_HIT_STATE) void test_gpio_readlevel_L() { WRITE(WIFI_IO0_PIN, HIGH); diff --git a/Marlin/src/lcd/extui/nextion/nextion_tft.cpp b/Marlin/src/lcd/extui/nextion/nextion_tft.cpp index 63c25177a6..8b7b36e9ce 100644 --- a/Marlin/src/lcd/extui/nextion/nextion_tft.cpp +++ b/Marlin/src/lcd/extui/nextion/nextion_tft.cpp @@ -431,27 +431,27 @@ void NextionTFT::PanelInfo(uint8_t req) { case 36: // Endstop Info #if X_HOME_TO_MIN - SEND_VALasTXT("x1", READ(X_MIN_PIN) != X_MIN_ENDSTOP_INVERTING ? "triggered" : "open"); + SEND_VALasTXT("x1", READ(X_MIN_PIN) == X_MIN_ENDSTOP_HIT_STATE ? "triggered" : "open"); #elif X_HOME_TO_MAX - SEND_VALasTXT("x2", READ(X_MAX_PIN) != X_MAX_ENDSTOP_INVERTING ? "triggered" : "open"); + SEND_VALasTXT("x2", READ(X_MAX_PIN) == X_MAX_ENDSTOP_HIT_STATE ? "triggered" : "open"); #endif #if Y_HOME_TO_MIN - SEND_VALasTXT("y1", READ(Y_MIN_PIN) != Y_MIN_ENDSTOP_INVERTING ? "triggered" : "open"); + SEND_VALasTXT("y1", READ(Y_MIN_PIN) == Y_MIN_ENDSTOP_HIT_STATE ? "triggered" : "open"); #elif Y_HOME_TO_MAX - SEND_VALasTXT("y2", READ(X_MAX_PIN) != Y_MAX_ENDSTOP_INVERTING ? "triggered" : "open"); + SEND_VALasTXT("y2", READ(X_MAX_PIN) == Y_MAX_ENDSTOP_HIT_STATE ? "triggered" : "open"); #endif #if Z_HOME_TO_MIN - SEND_VALasTXT("z1", READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING ? "triggered" : "open"); + SEND_VALasTXT("z1", READ(Z_MIN_PIN) == Z_MIN_ENDSTOP_HIT_STATE ? "triggered" : "open"); #elif Z_HOME_TO_MAX - SEND_VALasTXT("z2", READ(Z_MAX_PIN) != Z_MAX_ENDSTOP_INVERTING ? "triggered" : "open"); + SEND_VALasTXT("z2", READ(Z_MAX_PIN) == Z_MAX_ENDSTOP_HIT_STATE ? "triggered" : "open"); #endif #if HAS_Z2_MIN - SEND_VALasTXT("z2", READ(Z2_MIN_PIN) != Z2_MIN_ENDSTOP_INVERTING ? "triggered" : "open"); + SEND_VALasTXT("z2", READ(Z2_MIN_PIN) == Z2_MIN_ENDSTOP_HIT_STATE ? "triggered" : "open"); #elif HAS_Z2_MAX - SEND_VALasTXT("z2", READ(Z2_MAX_PIN) != Z2_MAX_ENDSTOP_INVERTING ? "triggered" : "open"); + SEND_VALasTXT("z2", READ(Z2_MAX_PIN) == Z2_MAX_ENDSTOP_HIT_STATE ? "triggered" : "open"); #endif #if HAS_BED_PROBE - //SEND_VALasTXT("bltouch", READ(Z_MIN_PROBE_PIN) != Z_MIN_PROBE_ENDSTOP_INVERTING ? "triggered" : "open"); + //SEND_VALasTXT("bltouch", READ(Z_MIN_PROBE_PIN) == Z_MIN_PROBE_ENDSTOP_HIT_STATE ? "triggered" : "open"); #else SEND_NA("bltouch"); #endif diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index ef5f5d06e1..9d73210025 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -109,284 +109,90 @@ Endstops::endstop_mask_t Endstops::live_state = 0; void Endstops::init() { + #define _INIT_ENDSTOP(T,A,N) TERN(ENDSTOPPULLUP_##A##T, SET_INPUT_PULLUP, TERN(ENDSTOPPULLDOWN_##A##T, SET_INPUT_PULLDOWN, SET_INPUT))(A##N##_##T##_PIN) #if HAS_X_MIN - #if ENABLED(ENDSTOPPULLUP_XMIN) - SET_INPUT_PULLUP(X_MIN_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_XMIN) - SET_INPUT_PULLDOWN(X_MIN_PIN); - #else - SET_INPUT(X_MIN_PIN); - #endif + _INIT_ENDSTOP(MIN,X,); #endif - - #if HAS_X2_MIN - #if ENABLED(ENDSTOPPULLUP_XMIN) - SET_INPUT_PULLUP(X2_MIN_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_XMIN) - SET_INPUT_PULLDOWN(X2_MIN_PIN); - #else - SET_INPUT(X2_MIN_PIN); - #endif - #endif - - #if HAS_Y_MIN - #if ENABLED(ENDSTOPPULLUP_YMIN) - SET_INPUT_PULLUP(Y_MIN_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_YMIN) - SET_INPUT_PULLDOWN(Y_MIN_PIN); - #else - SET_INPUT(Y_MIN_PIN); - #endif - #endif - - #if HAS_Y2_MIN - #if ENABLED(ENDSTOPPULLUP_YMIN) - SET_INPUT_PULLUP(Y2_MIN_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_YMIN) - SET_INPUT_PULLDOWN(Y2_MIN_PIN); - #else - SET_INPUT(Y2_MIN_PIN); - #endif - #endif - - #if HAS_Z_MIN - #if ENABLED(ENDSTOPPULLUP_ZMIN) - SET_INPUT_PULLUP(Z_MIN_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_ZMIN) - SET_INPUT_PULLDOWN(Z_MIN_PIN); - #else - SET_INPUT(Z_MIN_PIN); - #endif - #endif - - #if HAS_Z2_MIN - #if ENABLED(ENDSTOPPULLUP_ZMIN) - SET_INPUT_PULLUP(Z2_MIN_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_ZMIN) - SET_INPUT_PULLDOWN(Z2_MIN_PIN); - #else - SET_INPUT(Z2_MIN_PIN); - #endif - #endif - - #if HAS_Z3_MIN - #if ENABLED(ENDSTOPPULLUP_ZMIN) - SET_INPUT_PULLUP(Z3_MIN_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_ZMIN) - SET_INPUT_PULLDOWN(Z3_MIN_PIN); - #else - SET_INPUT(Z3_MIN_PIN); - #endif - #endif - - #if HAS_Z4_MIN - #if ENABLED(ENDSTOPPULLUP_ZMIN) - SET_INPUT_PULLUP(Z4_MIN_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_ZMIN) - SET_INPUT_PULLDOWN(Z4_MIN_PIN); - #else - SET_INPUT(Z4_MIN_PIN); - #endif - #endif - #if HAS_X_MAX - #if ENABLED(ENDSTOPPULLUP_XMAX) - SET_INPUT_PULLUP(X_MAX_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_XMAX) - SET_INPUT_PULLDOWN(X_MAX_PIN); - #else - SET_INPUT(X_MAX_PIN); - #endif + _INIT_ENDSTOP(MAX,X,); + #endif + #if HAS_X2_MIN + _INIT_ENDSTOP(MIN,X,2); #endif - #if HAS_X2_MAX - #if ENABLED(ENDSTOPPULLUP_XMAX) - SET_INPUT_PULLUP(X2_MAX_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_XMAX) - SET_INPUT_PULLDOWN(X2_MAX_PIN); - #else - SET_INPUT(X2_MAX_PIN); - #endif + _INIT_ENDSTOP(MAX,X,2); + #endif + #if HAS_Y_MIN + _INIT_ENDSTOP(MIN,Y,); #endif - #if HAS_Y_MAX - #if ENABLED(ENDSTOPPULLUP_YMAX) - SET_INPUT_PULLUP(Y_MAX_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_YMAX) - SET_INPUT_PULLDOWN(Y_MAX_PIN); - #else - SET_INPUT(Y_MAX_PIN); - #endif + _INIT_ENDSTOP(MAX,Y,); + #endif + #if HAS_Y2_MIN + _INIT_ENDSTOP(MIN,Y,2); #endif - #if HAS_Y2_MAX - #if ENABLED(ENDSTOPPULLUP_YMAX) - SET_INPUT_PULLUP(Y2_MAX_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_YMAX) - SET_INPUT_PULLDOWN(Y2_MAX_PIN); - #else - SET_INPUT(Y2_MAX_PIN); - #endif + _INIT_ENDSTOP(MAX,Y,2); + #endif + #if HAS_Z_MIN + _INIT_ENDSTOP(MIN,Z,); #endif - #if HAS_Z_MAX - #if ENABLED(ENDSTOPPULLUP_ZMAX) - SET_INPUT_PULLUP(Z_MAX_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_ZMAX) - SET_INPUT_PULLDOWN(Z_MAX_PIN); - #else - SET_INPUT(Z_MAX_PIN); - #endif + _INIT_ENDSTOP(MAX,Z,); + #endif + #if HAS_Z2_MIN + _INIT_ENDSTOP(MIN,Z,2); #endif - #if HAS_Z2_MAX - #if ENABLED(ENDSTOPPULLUP_ZMAX) - SET_INPUT_PULLUP(Z2_MAX_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_ZMAX) - SET_INPUT_PULLDOWN(Z2_MAX_PIN); - #else - SET_INPUT(Z2_MAX_PIN); - #endif + _INIT_ENDSTOP(MAX,Z,2); + #endif + #if HAS_Z3_MIN + _INIT_ENDSTOP(MIN,Z,3); #endif - #if HAS_Z3_MAX - #if ENABLED(ENDSTOPPULLUP_ZMAX) - SET_INPUT_PULLUP(Z3_MAX_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_ZMAX) - SET_INPUT_PULLDOWN(Z3_MAX_PIN); - #else - SET_INPUT(Z3_MAX_PIN); - #endif + _INIT_ENDSTOP(MAX,Z,3); + #endif + #if HAS_Z4_MIN + _INIT_ENDSTOP(MIN,Z,4); #endif - #if HAS_Z4_MAX - #if ENABLED(ENDSTOPPULLUP_ZMAX) - SET_INPUT_PULLUP(Z4_MAX_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_ZMAX) - SET_INPUT_PULLDOWN(Z4_MAX_PIN); - #else - SET_INPUT(Z4_MAX_PIN); - #endif + _INIT_ENDSTOP(MAX,Z,4); #endif - #if HAS_I_MIN - #if ENABLED(ENDSTOPPULLUP_IMIN) - SET_INPUT_PULLUP(I_MIN_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_IMIN) - SET_INPUT_PULLDOWN(I_MIN_PIN); - #else - SET_INPUT(I_MIN_PIN); - #endif + _INIT_ENDSTOP(MIN,I,); #endif - #if HAS_I_MAX - #if ENABLED(ENDSTOPPULLUP_IMAX) - SET_INPUT_PULLUP(I_MAX_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_IMAX) - SET_INPUT_PULLDOWN(I_MAX_PIN); - #else - SET_INPUT(I_MAX_PIN); - #endif + _INIT_ENDSTOP(MAX,I,); #endif - #if HAS_J_MIN - #if ENABLED(ENDSTOPPULLUP_JMIN) - SET_INPUT_PULLUP(J_MIN_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_IMIN) - SET_INPUT_PULLDOWN(J_MIN_PIN); - #else - SET_INPUT(J_MIN_PIN); - #endif + _INIT_ENDSTOP(MIN,J,); #endif - #if HAS_J_MAX - #if ENABLED(ENDSTOPPULLUP_JMAX) - SET_INPUT_PULLUP(J_MAX_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_JMAX) - SET_INPUT_PULLDOWN(J_MAX_PIN); - #else - SET_INPUT(J_MAX_PIN); - #endif + _INIT_ENDSTOP(MAX,J,); #endif - #if HAS_K_MIN - #if ENABLED(ENDSTOPPULLUP_KMIN) - SET_INPUT_PULLUP(K_MIN_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_KMIN) - SET_INPUT_PULLDOWN(K_MIN_PIN); - #else - SET_INPUT(K_MIN_PIN); - #endif + _INIT_ENDSTOP(MIN,K,); #endif - #if HAS_K_MAX - #if ENABLED(ENDSTOPPULLUP_KMAX) - SET_INPUT_PULLUP(K_MAX_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_KMIN) - SET_INPUT_PULLDOWN(K_MAX_PIN); - #else - SET_INPUT(K_MAX_PIN); - #endif + _INIT_ENDSTOP(MAX,K,); #endif - #if HAS_U_MIN - #if ENABLED(ENDSTOPPULLUP_UMIN) - SET_INPUT_PULLUP(U_MIN_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_UMIN) - SET_INPUT_PULLDOWN(U_MIN_PIN); - #else - SET_INPUT(U_MIN_PIN); - #endif + _INIT_ENDSTOP(MIN,U,); #endif - #if HAS_U_MAX - #if ENABLED(ENDSTOPPULLUP_UMAX) - SET_INPUT_PULLUP(U_MAX_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_UMIN) - SET_INPUT_PULLDOWN(U_MAX_PIN); - #else - SET_INPUT(U_MAX_PIN); - #endif + _INIT_ENDSTOP(MAX,U,); #endif - #if HAS_V_MIN - #if ENABLED(ENDSTOPPULLUP_VMIN) - SET_INPUT_PULLUP(V_MIN_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_VMIN) - SET_INPUT_PULLDOWN(V_MIN_PIN); - #else - SET_INPUT(V_MIN_PIN); - #endif + _INIT_ENDSTOP(MIN,V,); #endif - #if HAS_V_MAX - #if ENABLED(ENDSTOPPULLUP_VMAX) - SET_INPUT_PULLUP(V_MAX_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_VMIN) - SET_INPUT_PULLDOWN(V_MAX_PIN); - #else - SET_INPUT(V_MAX_PIN); - #endif + _INIT_ENDSTOP(MAX,V,); #endif - #if HAS_W_MIN - #if ENABLED(ENDSTOPPULLUP_WMIN) - SET_INPUT_PULLUP(W_MIN_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_WMIN) - SET_INPUT_PULLDOWN(W_MIN_PIN); - #else - SET_INPUT(W_MIN_PIN); - #endif + _INIT_ENDSTOP(MIN,W,); #endif - #if HAS_W_MAX - #if ENABLED(ENDSTOPPULLUP_WMAX) - SET_INPUT_PULLUP(W_MAX_PIN); - #elif ENABLED(ENDSTOPPULLDOWN_WMIN) - SET_INPUT_PULLDOWN(W_MAX_PIN); - #else - SET_INPUT(W_MAX_PIN); - #endif + _INIT_ENDSTOP(MAX,W,); #endif #if PIN_EXISTS(CALIBRATION) @@ -577,7 +383,7 @@ static void print_es_state(const bool is_hit, FSTR_P const flabel=nullptr) { void __O2 Endstops::report_states() { TERN_(BLTOUCH, bltouch._set_SW_mode()); SERIAL_ECHOLNPGM(STR_M119_REPORT); - #define ES_REPORT(S) print_es_state(READ_ENDSTOP(S##_PIN) != S##_ENDSTOP_INVERTING, F(STR_##S)) + #define ES_REPORT(S) print_es_state(READ_ENDSTOP(S##_PIN) == S##_ENDSTOP_HIT_STATE, F(STR_##S)) #if HAS_X_MIN ES_REPORT(X_MIN); #endif @@ -693,7 +499,7 @@ void __O2 Endstops::report_states() { #define __ENDSTOP(AXIS, MINMAX) AXIS ##_## MINMAX #define _ENDSTOP_PIN(AXIS, MINMAX) AXIS ##_## MINMAX ##_PIN -#define _ENDSTOP_INVERTING(AXIS, MINMAX) AXIS ##_## MINMAX ##_ENDSTOP_INVERTING +#define _ENDSTOP_HIT_STATE(AXIS, MINMAX) AXIS ##_## MINMAX ##_ENDSTOP_HIT_STATE #define _ENDSTOP(AXIS, MINMAX) __ENDSTOP(AXIS, MINMAX) /** @@ -708,7 +514,7 @@ void Endstops::update() { #endif // Macros to update / copy the live_state - #define UPDATE_ENDSTOP_BIT(AXIS, MINMAX) SET_BIT_TO(live_state, _ENDSTOP(AXIS, MINMAX), (READ_ENDSTOP(_ENDSTOP_PIN(AXIS, MINMAX)) != _ENDSTOP_INVERTING(AXIS, MINMAX))) + #define UPDATE_ENDSTOP_BIT(AXIS, MINMAX) SET_BIT_TO(live_state, _ENDSTOP(AXIS, MINMAX), (READ_ENDSTOP(_ENDSTOP_PIN(AXIS, MINMAX)) == _ENDSTOP_HIT_STATE(AXIS, MINMAX))) #define COPY_LIVE_STATE(SRC_BIT, DST_BIT) SET_BIT_TO(live_state, DST_BIT, TEST(live_state, SRC_BIT)) #if ENABLED(G38_PROBE_TARGET) && NONE(CORE_IS_XY, CORE_IS_XZ, MARKFORGED_XY, MARKFORGED_YX) diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 770ca81ef4..90dccf7a7b 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -44,9 +44,9 @@ #endif #if USES_Z_MIN_PROBE_PIN - #define PROBE_TRIGGERED() (READ(Z_MIN_PROBE_PIN) != Z_MIN_PROBE_ENDSTOP_INVERTING) + #define PROBE_TRIGGERED() (READ(Z_MIN_PROBE_PIN) == Z_MIN_PROBE_ENDSTOP_HIT_STATE) #else - #define PROBE_TRIGGERED() (READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING) + #define PROBE_TRIGGERED() (READ(Z_MIN_PIN) == Z_MIN_ENDSTOP_HIT_STATE) #endif #if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) diff --git a/buildroot/tests/FYSETC_F6 b/buildroot/tests/FYSETC_F6 index f4f05ceea7..0c5f25a155 100755 --- a/buildroot/tests/FYSETC_F6 +++ b/buildroot/tests/FYSETC_F6 @@ -39,7 +39,7 @@ restore_configs opt_set MOTHERBOARD BOARD_FYSETC_F6_13 \ LCD_LANGUAGE vi LCD_LANGUAGE_2 fr \ X_DRIVER_TYPE TMC2160 Y_DRIVER_TYPE TMC5160 Z_DRIVER_TYPE TMC2208_STANDALONE E0_DRIVER_TYPE TMC2130 \ - X_MIN_ENDSTOP_INVERTING true Y_MIN_ENDSTOP_INVERTING true + X_MIN_ENDSTOP_HIT_STATE LOW Y_MIN_ENDSTOP_HIT_STATE LOW opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER \ MARLIN_BRICKOUT MARLIN_INVADERS MARLIN_SNAKE \ MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD \ @@ -59,7 +59,7 @@ exec_test $1 $2 "RAMPS 1.3 | DELTA | FLSUN AC Config" "$3" use_example_configs SCARA/Morgan opt_set MOTHERBOARD BOARD_FYSETC_F6_13 \ LCD_LANGUAGE es \ - X_MAX_ENDSTOP_INVERTING false \ + X_MAX_ENDSTOP_HIT_STATE HIGH \ X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2130 Z_DRIVER_TYPE TMC2130_STANDALONE E0_DRIVER_TYPE TMC2660 \ X_HARDWARE_SERIAL Serial2 opt_enable USE_ZMIN_PLUG FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \ diff --git a/buildroot/tests/mega1280 b/buildroot/tests/mega1280 index 5bf37289ba..d948623f48 100755 --- a/buildroot/tests/mega1280 +++ b/buildroot/tests/mega1280 @@ -55,8 +55,8 @@ exec_test $1 $2 "RAMPS | DELTA | RRD LCD | DELTA_AUTO_CALIBRATION | DELTA_CALIBR # use_example_configs delta/generic opt_set LCD_LANGUAGE cz \ - Z_MIN_PROBE_ENDSTOP_INVERTING false \ - Z_MIN_ENDSTOP_INVERTING false + Z_MIN_PROBE_ENDSTOP_HIT_STATE HIGH \ + Z_MIN_ENDSTOP_HIT_STATE HIGH opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER DELTA_CALIBRATION_MENU AUTO_BED_LEVELING_BILINEAR BLTOUCH exec_test $1 $2 "DELTA | RRD LCD | ABL Bilinear | BLTOUCH" "$3" diff --git a/buildroot/tests/teensy35 b/buildroot/tests/teensy35 index ec12082909..d9e7839da8 100755 --- a/buildroot/tests/teensy35 +++ b/buildroot/tests/teensy35 @@ -85,7 +85,7 @@ exec_test $1 $2 "Mixing Extruder" "$3" restore_configs opt_set MOTHERBOARD BOARD_TEENSY35_36 \ X_DRIVER_TYPE TMC5160 Y_DRIVER_TYPE TMC5160 \ - X_MIN_ENDSTOP_INVERTING true Y_MIN_ENDSTOP_INVERTING true \ + X_MIN_ENDSTOP_HIT_STATE LOW Y_MIN_ENDSTOP_HIT_STATE LOW \ X_CS_PIN 46 Y_CS_PIN 47 opt_enable COREXY USE_ZMIN_PLUG MONITOR_DRIVER_STATUS SENSORLESS_HOMING exec_test $1 $2 "Teensy 3.5/3.6 COREXY" "$3" diff --git a/buildroot/tests/teensy41 b/buildroot/tests/teensy41 index 56bd5043c7..f852474ac0 100755 --- a/buildroot/tests/teensy41 +++ b/buildroot/tests/teensy41 @@ -88,7 +88,7 @@ exec_test $1 $2 "Mixing Extruder" "$3" restore_configs opt_set MOTHERBOARD BOARD_TEENSY41 \ X_DRIVER_TYPE TMC5160 Y_DRIVER_TYPE TMC5160 \ - X_MIN_ENDSTOP_INVERTING true Y_MIN_ENDSTOP_INVERTING true \ + X_MIN_ENDSTOP_HIT_STATE LOW Y_MIN_ENDSTOP_HIT_STATE LOW \ X_CS_PIN 46 Y_CS_PIN 47 opt_enable COREXY USE_ZMIN_PLUG MONITOR_DRIVER_STATUS SENSORLESS_HOMING exec_test $1 $2 "Teensy 4.0/4.1 COREXY" "$3" From 0021a58943721a81b1ef23fa5e7366cfd80a3d28 Mon Sep 17 00:00:00 2001 From: Bob Kuhn Date: Sun, 26 Mar 2023 04:07:25 -0500 Subject: [PATCH 183/659] =?UTF-8?q?=E2=9C=A8=20AnyCubic=20Vyper=20/=20Vype?= =?UTF-8?q?r=20LCD=20(#25405)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 16 +- Marlin/Configuration_adv.h | 2 +- Marlin/src/HAL/LPC1768/HAL.h | 4 +- Marlin/src/core/boards.h | 1 + Marlin/src/feature/bedlevel/abl/bbl.cpp | 33 +- Marlin/src/feature/bedlevel/abl/bbl.h | 8 +- Marlin/src/feature/powerloss.cpp | 2 +- Marlin/src/gcode/queue.cpp | 18 + Marlin/src/gcode/queue.h | 6 + Marlin/src/gcode/temp/M303.cpp | 3 + Marlin/src/inc/Conditionals_LCD.h | 4 +- Marlin/src/inc/SanityCheck.h | 10 +- Marlin/src/inc/Warnings.cpp | 4 +- .../lcd/extui/anycubic_chiron/chiron_tft.cpp | 8 - .../lcd/extui/anycubic_chiron/chiron_tft.h | 1 - .../anycubic_i3mega/anycubic_i3mega_lcd.cpp | 2 + .../extui/anycubic_vyper/FileNavigator.cpp | 161 + .../lcd/extui/anycubic_vyper/FileNavigator.h | 57 + Marlin/src/lcd/extui/anycubic_vyper/Tunes.cpp | 58 + Marlin/src/lcd/extui/anycubic_vyper/Tunes.h | 220 ++ .../src/lcd/extui/anycubic_vyper/dgus_tft.cpp | 3305 +++++++++++++++++ .../src/lcd/extui/anycubic_vyper/dgus_tft.h | 479 +++ .../lcd/extui/anycubic_vyper/dgus_tft_defs.h | 157 + .../lcd/extui/anycubic_vyper/vyper_extui.cpp | 152 + .../lcd/extui/ia_creality/creality_extui.cpp | 2 +- Marlin/src/lcd/extui/ui_api.cpp | 13 +- Marlin/src/lcd/extui/ui_api.h | 2 + Marlin/src/lcd/tft/ui_320x240.cpp | 2 +- Marlin/src/libs/buzzer.h | 4 +- Marlin/src/libs/numtostr.cpp | 31 + Marlin/src/libs/numtostr.h | 6 + Marlin/src/pins/gd32f1/env_validate.h | 32 + Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h | 152 + Marlin/src/pins/pins.h | 2 + Marlin/src/sd/cardreader.cpp | 34 + Marlin/src/sd/cardreader.h | 1 + ini/features.ini | 1 + ini/stm32f1.ini | 10 + platformio.ini | 1 + 39 files changed, 4951 insertions(+), 53 deletions(-) create mode 100644 Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp create mode 100644 Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h create mode 100644 Marlin/src/lcd/extui/anycubic_vyper/Tunes.cpp create mode 100644 Marlin/src/lcd/extui/anycubic_vyper/Tunes.h create mode 100644 Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp create mode 100644 Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h create mode 100644 Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h create mode 100644 Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp create mode 100644 Marlin/src/pins/gd32f1/env_validate.h create mode 100644 Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index becad3f2f0..7f6e7daed5 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -3132,15 +3132,23 @@ //#define TOUCH_UI_FTDI_EVE // -// Touch-screen LCD for Anycubic printers +// Touch-screen LCD for Anycubic Chiron +// +//#define ANYCUBIC_LCD_CHIRON + +// +// Touch-screen LCD for Anycubic i3 Mega // //#define ANYCUBIC_LCD_I3MEGA -//#define ANYCUBIC_LCD_CHIRON -#if EITHER(ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON) - //#define ANYCUBIC_LCD_DEBUG +#if ENABLED(ANYCUBIC_LCD_I3MEGA) //#define ANYCUBIC_LCD_GCODE_EXT // Add ".gcode" to menu entries for DGUS clone compatibility #endif +// +// Touch-screen LCD for Anycubic Vyper +// +//#define ANYCUBIC_LCD_VYPER + // // 320x240 Nextion 2.8" serial TFT Resistive Touch Screen NX3224T028 // diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index eb04f473b7..e8fc947d3e 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1957,7 +1957,7 @@ // // Specify additional languages for the UI. Default specified by LCD_LANGUAGE. // -#if ANY(DOGLCD, TFT_COLOR_UI, TOUCH_UI_FTDI_EVE, IS_DWIN_MARLINUI) +#if ANY(DOGLCD, TFT_COLOR_UI, TOUCH_UI_FTDI_EVE, IS_DWIN_MARLINUI, ANYCUBIC_LCD_VYPER) //#define LCD_LANGUAGE_2 fr //#define LCD_LANGUAGE_3 de //#define LCD_LANGUAGE_4 es diff --git a/Marlin/src/HAL/LPC1768/HAL.h b/Marlin/src/HAL/LPC1768/HAL.h index 63bec2b720..15d61d30d1 100644 --- a/Marlin/src/HAL/LPC1768/HAL.h +++ b/Marlin/src/HAL/LPC1768/HAL.h @@ -249,9 +249,9 @@ public: static bool adc_ready() { return LPC176x::adc_hardware.done(LPC176x::pin_get_adc_channel(adc_pin)); } // The current value of the ADC register - static uint16_t adc_value() { + static uint16_t adc_value() { adc_result = FilteredADC::read(adc_pin) >> (16 - HAL_ADC_RESOLUTION); // returns 16bit value, reduce to required bits - return uint16_t(adc_result); + return uint16_t(adc_result); } /** diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index 8a1cec714e..0ca26d2ab2 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -382,6 +382,7 @@ #define BOARD_ERYONE_ERY32_MINI 5065 // Eryone Ery32 mini (STM32F103VE) #define BOARD_PANDA_PI_V29 5066 // Panda Pi V2.9 - Standalone (STM32F103RC) #define BOARD_SOVOL_V131 5067 // Sovol V1.3.1 (GD32F103RET6) +#define BOARD_TRIGORILLA_V006 5068 // Trigorilla V0.0.6 (GD32F103RE) // // ARM Cortex-M4F diff --git a/Marlin/src/feature/bedlevel/abl/bbl.cpp b/Marlin/src/feature/bedlevel/abl/bbl.cpp index d0044303c7..6ef3945fa5 100644 --- a/Marlin/src/feature/bedlevel/abl/bbl.cpp +++ b/Marlin/src/feature/bedlevel/abl/bbl.cpp @@ -175,13 +175,13 @@ void LevelingBilinear::print_leveling_grid(const bed_mesh_t* _z_values/*=nullptr xy_float_t LevelingBilinear::grid_factor_virt; #define LINEAR_EXTRAPOLATION(E, I) ((E) * 2 - (I)) - float LevelingBilinear::bed_level_virt_coord(const uint8_t x, const uint8_t y) { + float LevelingBilinear::virt_coord(const uint8_t x, const uint8_t y) { uint8_t ep = 0, ip = 1; if (x > (GRID_MAX_POINTS_X) + 1 || y > (GRID_MAX_POINTS_Y) + 1) { // The requested point requires extrapolating two points beyond the mesh. // These values are only requested for the edges of the mesh, which are always an actual mesh point, // and do not require interpolation. When interpolation is not needed, this "Mesh + 2" point is - // cancelled out in bed_level_virt_cmr and does not impact the result. Return 0.0 rather than + // cancelled out in virt_cmr and does not impact the result. Return 0.0 rather than // making this function more complex by extrapolating two points. return 0.0; } @@ -197,8 +197,8 @@ void LevelingBilinear::print_leveling_grid(const bed_mesh_t* _z_values/*=nullptr ); else return LINEAR_EXTRAPOLATION( - bed_level_virt_coord(ep + 1, y), - bed_level_virt_coord(ip + 1, y) + virt_coord(ep + 1, y), + virt_coord(ip + 1, y) ); } if (!y || y == ABL_TEMP_POINTS_Y - 1) { @@ -213,14 +213,14 @@ void LevelingBilinear::print_leveling_grid(const bed_mesh_t* _z_values/*=nullptr ); else return LINEAR_EXTRAPOLATION( - bed_level_virt_coord(x, ep + 1), - bed_level_virt_coord(x, ip + 1) + virt_coord(x, ep + 1), + virt_coord(x, ip + 1) ); } return z_values[x - 1][y - 1]; } - float LevelingBilinear::bed_level_virt_cmr(const float p[4], const uint8_t i, const float t) { + float LevelingBilinear::virt_cmr(const float p[4], const uint8_t i, const float t) { return ( p[i-1] * -t * sq(1 - t) + p[i] * (2 - 5 * sq(t) + 3 * t * sq(t)) @@ -229,18 +229,18 @@ void LevelingBilinear::print_leveling_grid(const bed_mesh_t* _z_values/*=nullptr ) * 0.5f; } - float LevelingBilinear::bed_level_virt_2cmr(const uint8_t x, const uint8_t y, const_float_t tx, const_float_t ty) { + float LevelingBilinear::virt_2cmr(const uint8_t x, const uint8_t y, const_float_t tx, const_float_t ty) { float row[4], column[4]; LOOP_L_N(i, 4) { LOOP_L_N(j, 4) { - column[j] = bed_level_virt_coord(i + x - 1, j + y - 1); + column[j] = virt_coord(i + x - 1, j + y - 1); } - row[i] = bed_level_virt_cmr(column, 1, ty); + row[i] = virt_cmr(column, 1, ty); } - return bed_level_virt_cmr(row, 1, tx); + return virt_cmr(row, 1, tx); } - void LevelingBilinear::bed_level_virt_interpolate() { + void LevelingBilinear::subdivide_mesh() { grid_spacing_virt = grid_spacing / (BILINEAR_SUBDIVISIONS); grid_factor_virt = grid_spacing_virt.reciprocal(); LOOP_L_N(y, GRID_MAX_POINTS_Y) @@ -250,12 +250,7 @@ void LevelingBilinear::print_leveling_grid(const bed_mesh_t* _z_values/*=nullptr if ((ty && y == (GRID_MAX_POINTS_Y) - 1) || (tx && x == (GRID_MAX_POINTS_X) - 1)) continue; z_values_virt[x * (BILINEAR_SUBDIVISIONS) + tx][y * (BILINEAR_SUBDIVISIONS) + ty] = - bed_level_virt_2cmr( - x + 1, - y + 1, - (float)tx / (BILINEAR_SUBDIVISIONS), - (float)ty / (BILINEAR_SUBDIVISIONS) - ); + virt_2cmr(x + 1, y + 1, (float)tx / (BILINEAR_SUBDIVISIONS), (float)ty / (BILINEAR_SUBDIVISIONS)); } } @@ -263,7 +258,7 @@ void LevelingBilinear::print_leveling_grid(const bed_mesh_t* _z_values/*=nullptr // Refresh after other values have been updated void LevelingBilinear::refresh_bed_level() { - TERN_(ABL_BILINEAR_SUBDIVISION, bed_level_virt_interpolate()); + TERN_(ABL_BILINEAR_SUBDIVISION, subdivide_mesh()); cached_rel.x = cached_rel.y = -999.999; cached_g.x = cached_g.y = -99; } diff --git a/Marlin/src/feature/bedlevel/abl/bbl.h b/Marlin/src/feature/bedlevel/abl/bbl.h index 60dde9060f..ca2e96593f 100644 --- a/Marlin/src/feature/bedlevel/abl/bbl.h +++ b/Marlin/src/feature/bedlevel/abl/bbl.h @@ -43,10 +43,10 @@ private: static xy_pos_t grid_spacing_virt; static xy_float_t grid_factor_virt; - static float bed_level_virt_coord(const uint8_t x, const uint8_t y); - static float bed_level_virt_cmr(const float p[4], const uint8_t i, const float t); - static float bed_level_virt_2cmr(const uint8_t x, const uint8_t y, const_float_t tx, const_float_t ty); - static void bed_level_virt_interpolate(); + static float virt_coord(const uint8_t x, const uint8_t y); + static float virt_cmr(const float p[4], const uint8_t i, const float t); + static float virt_2cmr(const uint8_t x, const uint8_t y, const_float_t tx, const_float_t ty); + static void subdivide_mesh(); #endif public: diff --git a/Marlin/src/feature/powerloss.cpp b/Marlin/src/feature/powerloss.cpp index dd20d04278..29c4695ca4 100644 --- a/Marlin/src/feature/powerloss.cpp +++ b/Marlin/src/feature/powerloss.cpp @@ -113,7 +113,7 @@ void PrintJobRecovery::changed() { purge(); else if (IS_SD_PRINTING()) save(true); - TERN_(EXTENSIBLE_UI, ExtUI::onSetPowerLoss(onoff)); + TERN_(EXTENSIBLE_UI, ExtUI::onSetPowerLoss(enabled)); } /** diff --git a/Marlin/src/gcode/queue.cpp b/Marlin/src/gcode/queue.cpp index c951fc6333..edf0ddfdbf 100644 --- a/Marlin/src/gcode/queue.cpp +++ b/Marlin/src/gcode/queue.cpp @@ -303,6 +303,24 @@ static bool serial_data_available(serial_index_t index) { inline int read_serial(const serial_index_t index) { return SERIAL_IMPL.read(index); } +#if (defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32)) && defined(USBCON) + + /** + * arduinoststm32's USB receive buffer is not well behaved when the buffer overflows + * + * This can happen when the host programs (such as Pronterface) automatically + * send M105 temperature requests. + */ + void GCodeQueue::flush_rx() { + // Flush receive buffer + LOOP_L_N(p, NUM_SERIAL) { + if (!serial_data_available(p)) continue; // No data for this port? Skip. + while (SERIAL_IMPL.available(p)) (void)read_serial(p); + } + } + +#endif // (ARDUINO_ARCH_STM32F4 || ARDUINO_ARCH_STM32) && USBCON + void GCodeQueue::gcode_line_error(FSTR_P const ferr, const serial_index_t serial_ind) { PORT_REDIRECT(SERIAL_PORTMASK(serial_ind)); // Reply to the serial port that sent the command SERIAL_ERROR_START(); diff --git a/Marlin/src/gcode/queue.h b/Marlin/src/gcode/queue.h index 1422830080..19fb359e15 100644 --- a/Marlin/src/gcode/queue.h +++ b/Marlin/src/gcode/queue.h @@ -201,6 +201,12 @@ public: */ static void flush_and_request_resend(const serial_index_t serial_ind); + #if (defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32)) && defined(USBCON) + static void flush_rx(); + #else + static void flush_rx() {} + #endif + /** * (Re)Set the current line number for the last received command */ diff --git a/Marlin/src/gcode/temp/M303.cpp b/Marlin/src/gcode/temp/M303.cpp index e0ad26027e..48eebaa0e4 100644 --- a/Marlin/src/gcode/temp/M303.cpp +++ b/Marlin/src/gcode/temp/M303.cpp @@ -25,6 +25,7 @@ #if HAS_PID_HEATING #include "../gcode.h" +#include "../queue.h" // for flush_tx #include "../../lcd/marlinui.h" #include "../../module/temperature.h" @@ -85,6 +86,8 @@ void GcodeSuite::M303() { LCD_MESSAGE(MSG_PID_AUTOTUNE); thermalManager.PID_autotune(temp, hid, c, u); ui.reset_status(); + + queue.flush_rx(); } #endif // HAS_PID_HEATING diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 3c821e5306..403db47e42 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -477,7 +477,7 @@ #endif // Aliases for LCD features -#if !DGUS_UI_IS(NONE) +#if !DGUS_UI_IS(NONE) || ENABLED(ANYCUBIC_LCD_VYPER) #define HAS_DGUS_LCD 1 #if DGUS_UI_IS(ORIGIN, FYSETC, HIPRECY, MKS) #define HAS_DGUS_LCD_CLASSIC 1 @@ -485,7 +485,7 @@ #endif // Extensible UI serial touch screens. (See src/lcd/extui) -#if ANY(HAS_DGUS_LCD, MALYAN_LCD, TOUCH_UI_FTDI_EVE, ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON, NEXTION_TFT) +#if ANY(HAS_DGUS_LCD, MALYAN_LCD, TOUCH_UI_FTDI_EVE, ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON, ANYCUBIC_LCD_VYPER, NEXTION_TFT) #define IS_EXTUI 1 #define EXTENSIBLE_UI #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 1f43d01bb8..e67a4c9e49 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -3140,7 +3140,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS + (ENABLED(EXTENSIBLE_UI) && DISABLED(IS_EXTUI)) \ + (DISABLED(IS_LEGACY_TFT) && ENABLED(TFT_GENERIC)) \ + (ENABLED(IS_LEGACY_TFT) && COUNT_ENABLED(TFT_320x240, TFT_320x240_SPI, TFT_480x320, TFT_480x320_SPI)) \ - + COUNT_ENABLED(ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON, ANYCUBIC_TFT35) \ + + COUNT_ENABLED(ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON, ANYCUBIC_TFT35, ANYCUBIC_LCD_VYPER) \ + DGUS_UI_IS(ORIGIN) + DGUS_UI_IS(FYSETC) + DGUS_UI_IS(HIPRECY) + DGUS_UI_IS(MKS) + DGUS_UI_IS(RELOADED) + DGUS_UI_IS(IA_CREALITY) \ + COUNT_ENABLED(ENDER2_STOCKDISPLAY, CR10_STOCKDISPLAY) \ + COUNT_ENABLED(DWIN_CREALITY_LCD, DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI, DWIN_MARLINUI_PORTRAIT, DWIN_MARLINUI_LANDSCAPE) \ @@ -3254,6 +3254,10 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #endif #endif +#if ENABLED(ANYCUBIC_LCD_VYPER) + static_assert(strcmp(STRINGIFY(LCD_LANGUAGE_2), "zh_CN") == 0, "LCD_LANGUAGE_2 must be set to zh_CN for ANYCUBIC_LCD_VYPER."); +#endif + #if EITHER(MKS_TS35_V2_0, BTT_TFT35_SPI_V1_0) && SD_CONNECTION_IS(LCD) #error "SDCARD_CONNECTION cannot be set to LCD for the enabled TFT. No available SD card reader." #endif @@ -3353,8 +3357,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #else #if HAS_DGUS_LCD #error "The DGUS LCD requires LCD_SERIAL_PORT to be defined." - #elif EITHER(ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON) - #error "The ANYCUBIC LCD requires LCD_SERIAL_PORT to be defined." + #elif ANY(ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON, ANYCUBIC_LCD_VYPER) + #error "ANYCUBIC_LCD_* requires LCD_SERIAL_PORT to be defined." #elif ENABLED(MALYAN_LCD) #error "MALYAN_LCD requires LCD_SERIAL_PORT to be defined." #elif ENABLED(NEXTION_LCD) diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 405e7a351e..3b9bc17b6f 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -780,8 +780,8 @@ /** * GD32 is not exactly like STM32 */ -#if MB(SOVOL_V131) - #warning "GD32 based controllers may not be fully compatible with Maple Generic STM32F103RE. Please report any issues." +#if MB(SOVOL_V131, TRIGORILLA_V006) + #warning "GD32 based controllers may not be fully compatible with STM32 platforms. Please report any issues." #endif /** diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp index 285729cc15..dce503776b 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp @@ -72,14 +72,6 @@ void ChironTFT::Startup() { live_Zoffset = 0.0; file_menu = AC_menu_file; - // Setup pins for powerloss detection - // Two IO pins are connected on the Trigorilla Board - // On a power interruption the OUTAGECON_PIN goes low. - - #if ENABLED(POWER_LOSS_RECOVERY) - OUT_WRITE(OUTAGECON_PIN, HIGH); - #endif - // Filament runout is handled by Marlin settings in Configuration.h // opt_set FIL_RUNOUT_STATE HIGH // Pin state indicating that filament is NOT present. // opt_enable FIL_RUNOUT_PULLUP diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.h b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.h index c9a32e584d..e0517ec640 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.h +++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.h @@ -76,7 +76,6 @@ class ChironTFT { static void CheckHeaters(); static void SendFileList(int8_t); static void SelectFile(); - static void InjectCommandandWait(PGM_P); static void ProcessPanelRequest(); static void PanelInfo(uint8_t); static void PanelAction(uint8_t); diff --git a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp index 774ba55e43..1bc52bfcaf 100644 --- a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp +++ b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp @@ -23,6 +23,8 @@ #if ENABLED(ANYCUBIC_LCD_I3MEGA) +//#define ANYCUBIC_LCD_DEBUG + #include "anycubic_i3mega_lcd.h" #include "../ui_api.h" diff --git a/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp new file mode 100644 index 0000000000..38603f5679 --- /dev/null +++ b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp @@ -0,0 +1,161 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/** + * lcd/extui/anycubic_vyper/FileNavigator.cpp + */ + +/*************************************************************************** + * The AC panel wants files in block of 4 and can only display a flat list * + * This library allows full folder traversal. * + ***************************************************************************/ + +#include "../../../inc/MarlinConfigPre.h" + +#if ENABLED(ANYCUBIC_LCD_VYPER) + +#include "FileNavigator.h" +#include "dgus_tft.h" + +using namespace ExtUI; + +namespace Anycubic { + + FileList FileNavigator::filelist; // Instance of the Marlin file API + char FileNavigator::currentfoldername[MAX_PATH_LEN]; // Current folder path + uint16_t FileNavigator::lastindex; + uint8_t FileNavigator::folderdepth; + uint16_t FileNavigator::currentindex; // override the panel request + + FileNavigator filenavigator; + + FileNavigator::FileNavigator() { reset(); } + + void FileNavigator::reset() { + currentfoldername[0] = '\0'; + folderdepth = 0; + currentindex = 0; + lastindex = 0; + // Start at root folder + while (!filelist.isAtRootDir()) filelist.upDir(); + refresh(); + } + + void FileNavigator::refresh() { filelist.refresh(); } + + void FileNavigator::getFiles(uint16_t index) { + uint8_t files = 5; + if (index == 0) currentindex = 0; + + // Each time we change folder we reset the file index to 0 and keep track + // of the current position as the TFT panel isnt aware of folders trees. + if (index > 0) { + //--currentindex; // go back a file to take account off the .. we added to the root. + if (index > lastindex) + currentindex += files; + else + currentindex = currentindex < 5 ? 0 : currentindex - files; + } + lastindex = index; + + #if ACDEBUG(AC_FILE) + SERIAL_ECHOLNPGM("index=", index, " currentindex=", currentindex, " lastindex=", lastindex); + #endif + + uint8_t file_num = 0; + for (uint16_t _seek = currentindex; _seek < currentindex + files; _seek++) { + + #if ACDEBUG(AC_FILE) + SERIAL_ECHOLNPGM("_seek: ", _seek, " currentindex: ", currentindex, " files: ", files); + #endif + + if (filelist.seek(_seek)) { + //sendFile(); + + DgusTFT::SendTxtToTFT(filelist.longFilename(), TXT_FILE_0 + file_num*0x30); + + #if ACDEBUG(AC_FILE) + SERIAL_ECHOLNPGM("seek: ", _seek, " '", filelist.longFilename(), "' '", currentfoldername, "", filelist.shortFilename(), "'\n"); + #endif + } + else { + #if ACDEBUG(AC_FILE) + SERIAL_ECHOLNPGM("over seek: ", _seek); + #endif + + DgusTFT::SendTxtToTFT("\0", TXT_FILE_0 + file_num*0x30); + } + + file_num++; + } + } + + void FileNavigator::sendFile() { + // Send the file and folder info to the panel. + // This info will be returned when the file is selected. + // Permitted special characters in file name: -_*#~ + // Panel can display 22 characters per line. + if (!filelist.isDir()) + DgusTFT::SendTxtToTFT(filelist.longFilename(), TXT_FILE_0); + } + + void FileNavigator::changeDIR(char *folder) { + #if ACDEBUG(AC_FILE) + SERIAL_ECHOLNPGM("currentfolder: ", currentfoldername, " New: ", folder); + #endif + if (folderdepth >= MAX_FOLDER_DEPTH) return; // limit the folder depth + strcat(currentfoldername, folder); + strcat(currentfoldername, "/"); + filelist.changeDir(folder); + refresh(); + folderdepth++; + currentindex = 0; + } + + void FileNavigator::upDIR() { + filelist.upDir(); + refresh(); + folderdepth--; + currentindex = 0; + // Remove the last child folder from the stored path + if (folderdepth == 0) { + currentfoldername[0] = '\0'; + reset(); + } + else { + char *pos = nullptr; + for (uint8_t f = 0; f < folderdepth; f++) + pos = strchr(currentfoldername, '/'); + + *(pos + 1) = '\0'; + } + #if ACDEBUG(AC_FILE) + SERIAL_ECHOLNPGM("depth: ", folderdepth, " currentfoldername: ", currentfoldername); + #endif + } + + char* FileNavigator::getCurrentFolderName() { return currentfoldername; } + + uint16_t FileNavigator::getFileNum() { return filelist.count(); } +} + +#endif // ANYCUBIC_LCD_VYPER diff --git a/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h new file mode 100644 index 0000000000..c39e66b63e --- /dev/null +++ b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h @@ -0,0 +1,57 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * lcd/extui/anycubic_vyper/FileNavigator.h + */ + +#include "dgus_tft_defs.h" +#include "../ui_api.h" + +using namespace ExtUI; + +namespace Anycubic { + class FileNavigator { + public: + FileNavigator(); + + static FileList filelist; + + void reset(); + void getFiles(uint16_t); + void upDIR(); + void changeDIR(char *); + void sendFile(); + void refresh(); + char * getCurrentFolderName(); + uint16_t getFileNum(); + + private: + + static char currentfoldername[MAX_PATH_LEN]; + static uint16_t lastindex; + static uint8_t folderdepth; + static uint16_t currentindex; + }; + extern FileNavigator filenavigator; +} diff --git a/Marlin/src/lcd/extui/anycubic_vyper/Tunes.cpp b/Marlin/src/lcd/extui/anycubic_vyper/Tunes.cpp new file mode 100644 index 0000000000..d7f0e4b6d4 --- /dev/null +++ b/Marlin/src/lcd/extui/anycubic_vyper/Tunes.cpp @@ -0,0 +1,58 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/** + * lcd/extui/anycubic_vyper/Tunes.cpp + */ + +/*********************************************************************** + * A Utility to play tunes using the buzzer in the printer controller. * + * See Tunes.h for note and tune definitions. * + ***********************************************************************/ + +#include "../../../inc/MarlinConfigPre.h" + +#if ENABLED(ANYCUBIC_LCD_VYPER) + +#include "Tunes.h" +#include "../ui_api.h" + +namespace Anycubic { + + void PlayTune(const uint8_t beeperPin, const uint16_t *tune, const uint8_t speed=1) { + uint8_t pos = 1; + uint16_t wholenotelen = tune[0] / speed; + do { + uint16_t freq = tune[pos]; + uint16_t notelen = wholenotelen / tune[pos + 1]; + + ::tone(beeperPin, freq, notelen); + ExtUI::delay_ms(notelen); + pos += 2; + + if (pos >= MAX_TUNE_LENGTH) break; + } while (tune[pos] != n_END); + } + +} + +#endif // ANYCUBIC_LCD_VYPER diff --git a/Marlin/src/lcd/extui/anycubic_vyper/Tunes.h b/Marlin/src/lcd/extui/anycubic_vyper/Tunes.h new file mode 100644 index 0000000000..9a06768ac6 --- /dev/null +++ b/Marlin/src/lcd/extui/anycubic_vyper/Tunes.h @@ -0,0 +1,220 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * lcd/extui/anycubic_vyper/Tunes.h + */ + +/************************************************************************** + * Notes definition from https://pages.mtu.edu/~suits/NoteFreqCalcs.html * + * * + * The format of a tune is: * + * {,,, ,, ... } * + * * + * 1) The first value is the length of a whole note in milliseconds * + * 2) Then a sequence of pitch and duration pairs * + * 3) Finally the END marker so your tunes can be any length up to * + * MAX_TUNE_LEN * + *************************************************************************/ + +#include + +#define MAX_TUNE_LENGTH 128 + +// Special notes! +#define n_P 0 // silence or pause +#define n_END 10000 // end of tune marker + +// Note duration divisors +#define l_T1 1 +#define l_T2 2 +#define l_T3 3 +#define l_T4 4 +#define l_T8 8 +#define l_T16 16 + +// Note Frequency +#define n_C0 16 +#define n_CS0 17 +#define n_D0 18 +#define n_DS0 19 +#define n_E0 21 +#define n_F0 22 +#define n_FS0 23 +#define n_G0 25 +#define n_GS0 26 +#define n_A0 28 +#define n_AS0 29 +#define n_B0 31 +#define n_C1 33 +#define n_CS1 35 +#define n_D1 37 +#define n_DS1 39 +#define n_E1 41 +#define n_F1 44 +#define n_FS1 46 +#define n_G1 49 +#define n_GS1 52 +#define n_A1 55 +#define n_AS1 58 +#define n_B1 62 +#define n_C2 65 +#define n_CS2 69 +#define n_D2 73 +#define n_DS2 78 +#define n_E2 82 +#define n_F2 87 +#define n_FS2 93 +#define n_G2 98 +#define n_GS2 104 +#define n_A2 110 +#define n_AS2 117 +#define n_B2 123 +#define n_C3 131 +#define n_CS3 139 +#define n_D3 147 +#define n_DS3 156 +#define n_E3 165 +#define n_F3 175 +#define n_FS3 185 +#define n_G3 196 +#define n_GS3 208 +#define n_A3 220 +#define n_AS3 233 +#define n_B3 247 +#define n_C4 262 +#define n_CS4 277 +#define n_D4 294 +#define n_DS4 311 +#define n_E4 330 +#define n_F4 349 +#define n_FS4 370 +#define n_G4 392 +#define n_GS4 415 +#define n_A4 440 +#define n_AS4 466 +#define n_B4 494 +#define n_C5 523 +#define n_CS5 554 +#define n_D5 587 +#define n_DS5 622 +#define n_E5 659 +#define n_F5 698 +#define n_FS5 740 +#define n_G5 784 +#define n_GS5 831 +#define n_A5 880 +#define n_AS5 932 +#define n_B5 988 +#define n_C6 1047 +#define n_CS6 1109 +#define n_D6 1175 +#define n_DS6 1245 +#define n_E6 1319 +#define n_F6 1397 +#define n_FS6 1480 +#define n_G6 1568 +#define n_GS6 1661 +#define n_A6 1760 +#define n_AS6 1865 +#define n_B6 1976 +#define n_C7 2093 +#define n_CS7 2217 +#define n_D7 2349 +#define n_DS7 2489 +#define n_E7 2637 +#define n_F7 2794 +#define n_FS7 2960 +#define n_G7 3136 +#define n_GS7 3322 +#define n_A7 3520 +#define n_AS7 3729 +#define n_B7 3951 +#define n_C8 4186 +#define n_CS8 4435 +#define n_D8 4699 +#define n_DS8 4978 +#define n_E8 5274 +#define n_F8 5587 +#define n_FS8 5920 +#define n_G8 6272 +#define n_GS8 6645 +#define n_A8 7040 +#define n_AS8 7459 +#define n_B8 7902 + +namespace Anycubic { + + void PlayTune(const uint8_t beeperPin, const uint16_t *tune, const uint8_t speed); + + // Only uncomment the tunes you are using to save memory + // This will help you write tunes! + // https://www.apronus.com/music/flashpiano.htm + + const uint16_t SOS[] = { + 250, + n_G6,l_T3, n_P,l_T3, n_G6,l_T3, n_P,l_T3, n_G6,l_T3, n_P,l_T1, + n_G6,l_T1, n_P,l_T3, n_G6,l_T1, n_P,l_T3, n_G6,l_T1, n_P,l_T1, + n_G6,l_T3, n_P,l_T3, n_G6,l_T3, n_P,l_T3, n_G6,l_T3, n_P,l_T1, + n_END + }; + + const uint16_t BeepBeep[] = { + 500, + n_C7,l_T8, n_P,l_T16, n_C7,l_T8, n_P,l_T8, + n_END + }; + + const uint16_t BeepBeepBeeep[] = { + 1000, + n_G7,l_T4, n_P,l_T16, n_G7,l_T4, n_P,l_T8, n_G7,l_T2, + n_END + }; + + const uint16_t Anycubic_PowerOn[] = { + 1000, + n_F7,l_T8, n_P,l_T8, n_C7,l_T8, n_P,l_T8, n_D7,l_T8, n_P,l_T8, + n_E7,l_T8, n_P,l_T8, n_D7,l_T4, n_P,l_T4, n_G7,l_T4, n_P,l_T4, + n_A7,l_T2, n_P,l_T1, + n_END + }; + + const uint16_t GB_PowerOn[] = { + 500, + n_C6,l_T4, n_P,l_T16, n_C7,l_T2, n_P,l_T8, + n_END + }; + + const uint16_t Heater_Timedout[] = { + 1000, + n_C6,l_T1, + n_END + }; + + const uint16_t FilamentOut[] = { + 1000, + n_AS7,l_T4, n_P,l_T16, n_FS7,l_T2, + n_END + }; + +} diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp new file mode 100644 index 0000000000..9487f22e89 --- /dev/null +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp @@ -0,0 +1,3305 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/** + * lcd/extui/anycubic_vyper/dgus_tft.cpp + */ + +#include "../../../inc/MarlinConfigPre.h" + +#if ENABLED(ANYCUBIC_LCD_VYPER) + +#include "dgus_tft.h" +#include "Tunes.h" +#include "FileNavigator.h" + +#include "../../../gcode/queue.h" +#include "../../../sd/cardreader.h" +#include "../../../libs/numtostr.h" +#include "../../../MarlinCore.h" +#include "../../../core/serial.h" +#include "../../../module/stepper.h" +#include "../../../module/probe.h" + +#if ENABLED(POWER_LOSS_RECOVERY) + #include "../../../feature/powerloss.h" +#endif + +#define DEBUG_OUT ACDEBUGLEVEL +#include "../../../core/debug_out.h" + +#include + +namespace Anycubic { + + const char MESSAGE_charu[] = {0xB4, 0xE6, 0xB4, 0xA2, 0xBF, 0xA8, 0xD2, 0xD1, 0xB2, 0xE5, 0xC8, 0xEB, 0x00}; // '忙'垄驴篓脪脩虏氓脠毛 + const char MESSAGE_bachu[] = {0xB4, 0xE6, 0xB4, 0xA2, 0xBF, 0xA8, 0xD2, 0xD1, 0xB0, 0xCE, 0xB3, 0xF6, 0x00}; + const char MESSAGE_wuka[] = {0xCE, 0xDE, 0xB4, 0xE6, 0xB4, 0xA2, 0xBF, 0xA8, 0x00}; + const char MESSAGE_lianji[] = {0xC1, 0xAA, 0xBB, 0xFA, 0xD6, 0xD0, 0x00}; + const char MESSAGE_tuoji[] = {0xCD, 0xD1, 0xBB, 0xFA, 0xB4, 0xF2, 0xD3, 0xA1, 0xD6, 0xD0, 0x00}; + const char MESSAGE_zanting[] = {0xB4, 0xF2, 0xD3, 0xA1, 0xD4, 0xDD, 0xCD, 0xA3, 0xD6, 0xD0, 0x00}; + const char MESSAGE_tingzhi[] = {0xCD, 0xA3, 0xD6, 0xB9, 0xB4, 0xF2, 0xD3, 0xA1, 0x00}; + const char MESSAGE_wancheng[] = {0xCD, 0xEA, 0xB3, 0xC9, 0xB4, 0xF2, 0xD3, 0xA1, 0x00}; + const char MESSAGE_hotend_heating[] = {0xB4, 0xF2, 0xD3, 0xA1, 0xCD, 0xB7, 0xD5, 0xFD, 0xD4, 0xDA, 0xBC, 0xD3, 0xC8, 0xC8, 0x00}; + const char MESSAGE_hotend_over[] = {0xB4, 0xF2, 0xD3, 0xA1, 0xCD, 0xB7, 0xBC, 0xD3, 0xC8, 0xC8, 0xCD, 0xEA, 0xB3, 0xC9, 0x00}; + const char MESSAGE_bed_heating[] = {0xC8, 0xC8, 0xB4, 0xB2, 0xD5, 0xFD, 0xD4, 0xDA, 0xBC, 0xD3, 0xC8, 0xC8, 0x00}; + const char MESSAGE_bed_over[] = {0xC8, 0xC8, 0xB4, 0xB2, 0xBC, 0xD3, 0xC8, 0xC8, 0xCD, 0xEA, 0xB3, 0xC9, 0x00}; + const char MESSAGE_ready[] = {0xD7, 0xBC, 0xB1, 0xB8, 0xBE, 0xCD, 0xD0, 0xF7, 0x00}; + const char MESSAGE_cold[] = {0xB4, 0xF2, 0xD3, 0xA1, 0xCD, 0xB7, 0xCE, 0xC2, 0xB6, 0xC8, 0xB9, 0xFD, 0xB5, 0xCD, 0x00}; + + const char *p_mesage[] = { MESSAGE_charu, MESSAGE_bachu, MESSAGE_wuka, MESSAGE_lianji, MESSAGE_tuoji, MESSAGE_zanting, + MESSAGE_tingzhi, MESSAGE_wancheng, MESSAGE_hotend_heating, MESSAGE_hotend_over, MESSAGE_bed_heating, + MESSAGE_bed_over, MESSAGE_ready, MESSAGE_cold }; + + DgusTFT::p_fun fun_array[] = { + DgusTFT::page1, DgusTFT::page2, DgusTFT::page3, DgusTFT::page4, DgusTFT::page5, DgusTFT::page6, + DgusTFT::page7, DgusTFT::page8, DgusTFT::page9, DgusTFT::page10, DgusTFT::page11, DgusTFT::page12, + DgusTFT::page13, DgusTFT::page14, DgusTFT::page15, DgusTFT::page16, DgusTFT::page17, DgusTFT::page18, + DgusTFT::page19, DgusTFT::page20, DgusTFT::page21, DgusTFT::page22, DgusTFT::page23, DgusTFT::page24, + DgusTFT::page25, DgusTFT::page26, DgusTFT::page27, DgusTFT::page28, DgusTFT::page29, DgusTFT::page30, + DgusTFT::page31, DgusTFT::page32 + #if HAS_LEVELING + , DgusTFT::page33 , DgusTFT::page34 + #endif + }; + + printer_state_t DgusTFT::printer_state; + paused_state_t DgusTFT::pause_state; + #if HAS_HOTEND + heater_state_t DgusTFT::hotend_state; + #endif + #if HAS_HEATED_BED + heater_state_t DgusTFT::hotbed_state; + #endif + char DgusTFT::selectedfile[MAX_PATH_LEN]; + char DgusTFT::panel_command[MAX_CMND_LEN]; + uint8_t DgusTFT::command_len; + file_menu_t DgusTFT::file_menu; + + bool DgusTFT::data_received; + uint8_t DgusTFT::data_buf[DATA_BUF_SIZE]; + uint8_t DgusTFT::data_index; + uint16_t DgusTFT::page_index_now, DgusTFT::page_index_last, DgusTFT::page_index_last_2; + uint8_t DgusTFT::message_index; + uint8_t DgusTFT::pop_up_index; + uint32_t DgusTFT::key_value; + uint8_t DgusTFT::lcd_txtbox_index; + uint8_t DgusTFT::lcd_txtbox_page; + int16_t DgusTFT::feedrate_back; + lcd_info_t DgusTFT::lcd_info, DgusTFT::lcd_info_back; + language_t DgusTFT::ui_language; + uint16_t page_index_saved; // flags to keep from bombing the host display + uint8_t pop_up_index_saved; + uint32_t key_value_saved; + + void DEBUG_PRINT_PAUSED_STATE(FSTR_P const msg, paused_state_t state); + void DEBUG_PRINT_PRINTER_STATE(FSTR_P const msg, printer_state_t state); + void DEBUG_PRINT_TIMER_EVENT(FSTR_P const msg, timer_event_t event); + void DEBUG_PRINT_MEDIA_EVENT(FSTR_P const msg, media_event_t event); + + DgusTFT Dgus; + + DgusTFT::DgusTFT() { + data_buf[0] = '\0'; + message_index = 100; + pop_up_index = 100; + page_index_now = page_index_last = page_index_last_2 = 1; + lcd_txtbox_index = 0; + feedrate_back = -1; + } + + void DgusTFT::Startup() { + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("DgusTFT::Startup()"); + #endif + selectedfile[0] = '\0'; + panel_command[0] = '\0'; + command_len = 0; + printer_state = AC_printer_idle; + pause_state = AC_paused_idle; + TERN_(HAS_HOTEND, hotend_state = AC_heater_off); + TERN_(HAS_HEATED_BED, hotbed_state = AC_heater_off); + file_menu = AC_menu_file; + set_language(ui_language); // use language stored in EEPROM + + // Filament runout is handled by Marlin settings in Configuration.h + // opt_set FIL_RUNOUT_STATE HIGH // Pin state indicating that filament is NOT present. + // opt_enable FIL_RUNOUT_PULLUP + + TFTSer.begin(115200); + + // Signal Board has reset + SendtoTFTLN(AC_msg_main_board_has_reset); + + // Enable levelling and Disable end stops during print + // as Z home places nozzle above the bed so we need to allow it past the end stops + injectCommands_P(AC_cmnd_enable_levelling); + + // Startup tunes are defined in Tunes.h + //PlayTune(BEEPER_PIN, Anycubic_PowerOn, 1); + //PlayTune(BEEPER_PIN, GB_PowerOn, 1); + #if ACDEBUGLEVEL + DEBUG_ECHOLNPGM("Startup AC Debug Level ", ACDEBUGLEVEL); + #endif + SendtoTFTLN(AC_msg_ready); + } + + void DgusTFT::ParamInit() { + + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("DgusTFT::ParamInit()"); + #endif + + if (lcd_info.language == CHS) + page_index_now = 1; + else if (lcd_info.language == ENG) + page_index_now = 121; + + LcdAudioSet(lcd_info.audio_on); + + #if ACDEBUG(AC_MARLIN) + if (lcd_info.language == CHS) + DEBUG_ECHOLNPGM("ParamInit lcd language: CHS"); + else if (lcd_info.language == ENG) + DEBUG_ECHOLNPGM("ParamInit lcd language: ENG"); + + if (lcd_info.audio_on) + DEBUG_ECHOLNPGM("ParamInit lcd audio: ON"); + else + DEBUG_ECHOLNPGM("ParamInit lcd audio: OFF"); + #endif + + RequestValueFromTFT(0x14); // get page ID + } + + void DgusTFT::IdleLoop() { + if (ReadTFTCommand()) { + ProcessPanelRequest(); + command_len = 0; + } + + #if ACDEBUG(AC_MARLIN) + if (key_value) { + DEBUG_ECHOLNPGM("IdleLoop page: ", page_index_now); + DEBUG_ECHOLNPGM("key: ", key_value); + } + #endif + + switch (page_index_now) { + case 115: page115(); break; + case 117: page117(); break; + //case 124: page124(); break; + //case 125: page125(); break; + case 170: page170(); break; + + #if ENABLED(POWER_LOSS_RECOVERY) + case 171: page171(); break; + case 173: page173(); break; + #endif + + #if HAS_LEVELING + case 175: page175(); break; + case 176: page176(); break; + #endif + + case 177 ... 198: { + #if 0 // ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("line: ", __LINE__); + DEBUG_ECHOLNPGM("func: ", page_index_now); + #endif + //page177_to_198(); + } break; + + case 199 ... 200: { + #if 0 // ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("line: ", __LINE__); + DEBUG_ECHOLNPGM("func: ", page_index_now); + #endif + page199_to_200(); + } break; + + case 201: case 204: page201(); break; + case 202: case 205: page202(); break; + case 203: case 206: page203(); break; + + default: + if (lcd_info.language == CHS) { + if (WITHIN(page_index_now, 1, 1 + COUNT(fun_array))) { + fun_array[page_index_now - 1](); + } + else { + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("line: ", __LINE__); + DEBUG_ECHOLNPGM("fun doesn't exist: ", page_index_now); + #endif + } + } + else if (lcd_info.language == ENG) { + if (WITHIN(page_index_now, 121, 121 + COUNT(fun_array))) { + fun_array[page_index_now - 121](); // ENG page_index is 120 more than CHS + } + else { + SERIAL_ECHOLNPGM("lcd function doesn't exist"); + SERIAL_ECHOLNPGM("page_index_last: ", page_index_last); + SERIAL_ECHOLNPGM("page_index_last_2: ", page_index_last_2); + } + } + break; + } + + pop_up_manager(); + key_value = 0; + + CheckHeaters(); + } + + uint8_t FSHlength(FSTR_P FSHinput) { + PGM_P FSHinputPointer = reinterpret_cast(FSHinput); + uint8_t stringLength = 0; + while (pgm_read_byte(FSHinputPointer++)) stringLength++; + return stringLength; + } + + void DgusTFT::PrinterKilled(FSTR_P error_p, FSTR_P component_p) { + + // copy string in FLASH to RAM for strcmp_P + + uint8_t textLength = FSHlength(error_p); + char error[FSHlength(error_p) + 1]; + memcpy_P(error, error_p, textLength + 1); // +1 for the null terminator + + textLength = FSHlength(component_p); + char component[FSHlength(component_p) + 1]; + memcpy_P(component, component_p, textLength + 1); // +1 for the null terminator + + SendtoTFTLN(AC_msg_kill_lcd); + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("PrinterKilled()\nerror: ", error, "\ncomponent: ", component); + #endif + + if (strcmp_P(error, PSTR("Heating Failed")) == 0) { + + if (strcmp_P(component, PSTR("Bed")) == 0) { + ChangePageOfTFT(PAGE_CHS_ABNORMAL_BED_HEATER); + SERIAL_ECHOLNPGM("Check Bed heater"); + } + else if (strcmp_P(component, PSTR("E1")) == 0) { + ChangePageOfTFT(PAGE_CHS_ABNORMAL_HOTEND_HEATER); + SERIAL_ECHOLNPGM("Check E1 heater"); + } + + } + else if (strcmp_P(error, PSTR("Err: MINTEMP")) == 0) { + + if (strcmp_P(component, PSTR("Bed")) == 0) { + ChangePageOfTFT(PAGE_CHS_ABNORMAL_BED_NTC); + SERIAL_ECHOLNPGM("Check Bed thermistor"); + } + else if (strcmp_P(component, PSTR("E1")) == 0) { + ChangePageOfTFT(PAGE_CHS_ABNORMAL_HOTEND_NTC); + SERIAL_ECHOLNPGM("Check E1 thermistor"); + } + + } + else if (strcmp_P(error, PSTR("Err: MAXTEMP")) == 0) { + + if (strcmp_P(component, PSTR("Bed")) == 0) { + ChangePageOfTFT(PAGE_CHS_ABNORMAL_BED_NTC); + SERIAL_ECHOLNPGM("Check Bed thermistor"); + } + else if (strcmp_P(component, PSTR("E1")) == 0) { + ChangePageOfTFT(PAGE_CHS_ABNORMAL_HOTEND_NTC); + SERIAL_ECHOLNPGM("Check E1 thermistor"); + } + + } + else if (strcmp_P(error, PSTR("THERMAL RUNAWAY")) == 0) { + + if (strcmp_P(component, PSTR("Bed")) == 0) { + ChangePageOfTFT(PAGE_CHS_ABNORMAL_BED_HEATER); + SERIAL_ECHOLNPGM("Check Bed thermal runaway"); + } + else if (strcmp_P(component, PSTR("E1")) == 0) { + ChangePageOfTFT(PAGE_CHS_ABNORMAL_HOTEND_HEATER); + SERIAL_ECHOLNPGM("Check E1 thermal runaway"); + } + + } + else if (strcmp_P(error, PSTR("Homing Failed")) == 0) { + + if (strcmp_P(component, PSTR("X")) == 0) { + ChangePageOfTFT(PAGE_CHS_ABNORMAL_X_ENDSTOP); + SERIAL_ECHOLNPGM("Check X endstop"); + } + else if (strcmp_P(component, PSTR("Y")) == 0) { + ChangePageOfTFT(PAGE_CHS_ABNORMAL_Y_ENDSTOP); + SERIAL_ECHOLNPGM("Check Y endstop"); + } + else if (strcmp_P(component, PSTR("Z")) == 0) { + ChangePageOfTFT(PAGE_CHS_ABNORMAL_Z_ENDSTOP); + SERIAL_ECHOLNPGM("Check Z endstop"); + } + + } + + } + + void DgusTFT::set_descript_color(const uint16_t color, const uint8_t index/*=lcd_txtbox_index*/) { + SendColorToTFT(color, TXT_DESCRIPT_0 + 0x30 * (index - 1)); + } + + void DgusTFT::MediaEvent(media_event_t event) { + #if ACDEBUG(AC_MARLIN) + DEBUG_PRINT_MEDIA_EVENT(F("ProcessMediaStatus() "), event); + #endif + switch (event) { + case AC_media_inserted: + + filenavigator.reset(); + + lcd_txtbox_page = 0; + if (lcd_txtbox_index) { + set_descript_color(COLOR_BLUE); + lcd_txtbox_index = 0; + } + + SendFileList(lcd_txtbox_index); + + break; + + case AC_media_removed: + SendtoTFTLN(AC_msg_sd_card_removed); + + filenavigator.reset(); + + lcd_txtbox_page = 0; + if (lcd_txtbox_index) { + set_descript_color(COLOR_BLUE); + lcd_txtbox_index = 0; + } + + SendFileList(lcd_txtbox_index); + break; + + case AC_media_error: + SendtoTFTLN(AC_msg_no_sd_card); + break; + } + } + + void DgusTFT::TimerEvent(timer_event_t event) { + + #if ACDEBUG(AC_MARLIN) + DEBUG_PRINT_TIMER_EVENT(F("TimerEvent() "), event); + DEBUG_PRINT_PRINTER_STATE(F("Printer State: "), printer_state); + #endif + + switch (event) { + case AC_timer_started: + setSoftEndstopState(false); // disable endstops to print + printer_state = AC_printer_printing; + SendtoTFTLN(AC_msg_print_from_sd_card); + break; + + case AC_timer_paused: + //printer_state = AC_printer_paused; + //pause_state = AC_paused_idle; + SendtoTFTLN(AC_msg_paused); + break; + + case AC_timer_stopped: + if (printer_state != AC_printer_idle) { + if (printer_state == AC_printer_stopping_from_media_remove) { + ChangePageOfTFT(PAGE_NO_SD); + } + else { + printer_state = AC_printer_stopping; + + // Get Printing Time + uint32_t time = getProgress_seconds_elapsed() / 60; + char str_buf[20]; + sprintf(str_buf, "%s H ", utostr3(time / 60)); + sprintf(str_buf + strlen(str_buf), "%s M", utostr3(time % 60)); + SendTxtToTFT(str_buf, TXT_FINISH_TIME); + ChangePageOfTFT(PAGE_PRINT_FINISH); + SendtoTFTLN(AC_msg_print_complete); + pop_up_index = 100; + } + } + setSoftEndstopState(true); // enable endstops + break; + } + } + + #if ENABLED(FILAMENT_RUNOUT_SENSOR) + + void DgusTFT::FilamentRunout() { + #if ACDEBUG(AC_MARLIN) + DEBUG_PRINT_PRINTER_STATE(F("FilamentRunout() printer_state "), printer_state); + + // 1 Signal filament out + SendtoTFTLN(isPrintingFromMedia() ? AC_msg_filament_out_alert : AC_msg_filament_out_block); + //printer_state = AC_printer_filament_out; + + DEBUG_ECHOLNPGM("getFilamentRunoutState: ", getFilamentRunoutState()); + #endif + + pop_up_index = 15; // show filament lack. + + if (READ(FIL_RUNOUT_PIN) == FIL_RUNOUT_STATE) { + PlayTune(BEEPER_PIN, FilamentOut, 1); + + feedrate_back = getFeedrate_percent(); + + if (isPrintingFromMedia()) { + pausePrint(); + printer_state = AC_printer_pausing; + pause_state = AC_paused_filament_lack; + } + } + } + + #endif // FILAMENT_RUNOUT_SENSOR + + void DgusTFT::ConfirmationRequest(const char * const msg) { + // M108 continue + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("HomingComplete, line: ", __LINE__); + DEBUG_ECHOLNPGM("ConfirmationRequest() ", msg); + DEBUG_PRINT_PRINTER_STATE(F("printer_state: " ), printer_state); + DEBUG_PRINT_PAUSED_STATE(F("pause_state: "), pause_state); + #endif + + switch (printer_state) { + case AC_printer_pausing: { + if (strcmp_P(msg, MARLIN_msg_print_paused) == 0 || strcmp_P(msg, MARLIN_msg_nozzle_parked) == 0) { + if (pause_state != AC_paused_filament_lack) + ChangePageOfTFT(PAGE_STATUS1); // enable continue button + printer_state = AC_printer_paused; + } + } + break; + + #if ENABLED(POWER_LOSS_RECOVERY) + case AC_printer_resuming_from_power_outage: + #endif + case AC_printer_printing: + case AC_printer_paused: + // Heater timout, send acknowledgement + if (strcmp_P(msg, MARLIN_msg_heater_timeout) == 0) { + pause_state = AC_paused_heater_timed_out; + SendtoTFTLN(AC_msg_paused); // enable continue button + PlayTune(BEEPER_PIN, Heater_Timedout, 1); + } + // Reheat finished, send acknowledgement + else if (strcmp_P(msg, MARLIN_msg_reheat_done) == 0) { + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("send M108 ", __LINE__); + #endif + injectCommands(F("M108")); + + if (pause_state != AC_paused_filament_lack) + pause_state = AC_paused_idle; + + SendtoTFTLN(AC_msg_paused); // enable continue button + } + // Filament Purging, send acknowledgement enter run mode + else if (strcmp_P(msg, MARLIN_msg_filament_purging) == 0) { + pause_state = AC_paused_purging_filament; + SendtoTFTLN(AC_msg_paused); // enable continue button + } + else if (strcmp_P(msg, MARLIN_msg_nozzle_parked) == 0) { + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("send M108 ", __LINE__); + #endif + injectCommands(F("M108")); + + if (pause_state != AC_paused_filament_lack) + pause_state = AC_paused_idle; + } + + break; + + default: break; + } + } + + void DgusTFT::StatusChange(const char * const msg) { + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("StatusChange() ", msg); + DEBUG_PRINT_PRINTER_STATE(F("printer_state: "), printer_state); + DEBUG_PRINT_PAUSED_STATE(F("pause_state: "), pause_state); + #endif + bool msg_matched = false; + + #if HAS_LEVELING + static uint8_t probe_cnt = 0; + #endif + + // The only way to get printer status is to parse messages + // Use the state to minimise the work we do here. + switch (printer_state) { + #if HAS_LEVELING + case AC_printer_probing: + + if (strncmp_P(msg, MARLIN_msg_probing_point, strlen_P(MARLIN_msg_probing_point)) == 0) + probe_cnt++; + + // If probing completes ok save the mesh and park + // Ignore the custom machine name + if (strcmp_P(msg + strlen(MACHINE_NAME), MARLIN_msg_ready) == 0) { + if (probe_cnt == GRID_MAX_POINTS_X * GRID_MAX_POINTS_Y) { + probe_cnt = 0; + injectCommands(F("M500")); // G27 park nozzle + //ChangePageOfTFT(PAGE_PreLEVEL); + FakeChangePageOfTFT(PAGE_PreLEVEL); // Prevent UI refreshing too quickly when probing is done + printer_state = AC_printer_idle; + msg_matched = true; + } + } + + // If probing fails don't save the mesh raise the probe above the bad point + if (strcmp_P(msg, MARLIN_msg_probing_failed) == 0) { + PlayTune(BEEPER_PIN, BeepBeepBeeep, 1); + injectCommands(F("G1 Z50 F500")); + ChangePageOfTFT(PAGE_CHS_ABNORMAL_LEVELING_SENSOR); + SendtoTFTLN(AC_msg_probing_complete); + printer_state = AC_printer_idle; + msg_matched = true; + } + + if (strcmp_P(msg, MARLIN_msg_probe_preheat_start) == 0) + ChangePageOfTFT(PAGE_CHS_PROBE_PREHEATING); + + if (strcmp_P(msg, MARLIN_msg_probe_preheat_stop) == 0) + ChangePageOfTFT(PAGE_LEVELING); + + break; + #endif + + case AC_printer_printing: + if (strcmp_P(msg, MARLIN_msg_reheating) == 0) { + SendtoTFTLN(AC_msg_paused); // enable continue button + ChangePageOfTFT(PAGE_STATUS2); + msg_matched = true; + } + else if (strcmp_P(msg, MARLIN_msg_media_removed) == 0) { + msg_matched = true; + printer_state = AC_printer_stopping_from_media_remove; + } + else { + #if ENABLED(FILAMENT_RUNOUT_SENSOR) + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("setFilamentRunoutState: ", __LINE__); + #endif + setFilamentRunoutState(false); + #endif + } + break; + + case AC_printer_pausing: + if (strcmp_P(msg, MARLIN_msg_print_paused) == 0) { + if (pause_state != AC_paused_filament_lack) { + ChangePageOfTFT(PAGE_STATUS1); // show resume + pause_state = AC_paused_idle; + } + + printer_state = AC_printer_paused; + msg_matched = true; + } + break; + + case AC_printer_paused: + if (strcmp_P(msg, MARLIN_msg_print_paused) == 0) { + if (pause_state != AC_paused_filament_lack) { + ChangePageOfTFT(PAGE_STATUS1); // show resume + pause_state = AC_paused_idle; + } + + printer_state = AC_printer_paused; + msg_matched = true; + } + break; + + case AC_printer_stopping: + if (strcmp_P(msg, MARLIN_msg_print_aborted) == 0) { + ChangePageOfTFT(PAGE_MAIN); + printer_state = AC_printer_idle; + msg_matched = true; + } + break; + + default: break; + } + + // If not matched earlier see if this was a heater message + if (!msg_matched) { + #if HAS_HOTEND + if (strcmp_P(msg, MARLIN_msg_extruder_heating) == 0) { + SendtoTFTLN(AC_msg_nozzle_heating); + hotend_state = AC_heater_temp_set; + return; + } + #endif + #if HAS_HEATED_BED + if (strcmp_P(msg, MARLIN_msg_bed_heating) == 0) { + SendtoTFTLN(AC_msg_bed_heating); + hotbed_state = AC_heater_temp_set; + } + #endif + } + } + + #if ENABLED(POWER_LOSS_RECOVERY) + + void DgusTFT::PowerLoss() { + // On: 5A A5 05 82 00 82 00 00 + // Off: 5A A5 05 82 00 82 00 64 + uint8_t data[] = { 0x5A, 0xA5, 0x05, 0x82, 0x00, 0x82, 0x00, uint8_t(recovery.enabled ? 0x00 : 0x64) }; + LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); + } + + void DgusTFT::PowerLossRecovery() { + printer_state = AC_printer_resuming_from_power_outage; // Play tune to notify user we can recover. + } + + #endif // POWER_LOSS_RECOVERY + + void DgusTFT::HomingStart() { + if (!isPrintingFromMedia()) + ChangePageOfTFT(PAGE_CHS_HOMING); + } + + void DgusTFT::HomingComplete() { + if (lcd_info.language == ENG && page_index_last > 120) + page_index_last -= 120; + + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("HomingComplete, line: ", __LINE__); + DEBUG_ECHOLNPGM("page_index_last: ", page_index_last); + #endif + + if (!isPrintingFromMedia()) + ChangePageOfTFT(page_index_last); + } + + void DgusTFT::SendtoTFT(FSTR_P const fstr/*=nullptr*/) { // A helper to print PROGMEM string to the panel + #if ACDEBUG(AC_SOME) + DEBUG_ECHOF(fstr); + #endif + PGM_P str = FTOP(fstr); + while (const char c = pgm_read_byte(str++)) TFTSer.write(c); + } + + void DgusTFT::SendtoTFTLN(FSTR_P const fstr/*=nullptr*/) { + if (fstr) { + #if ACDEBUG(AC_SOME) + DEBUG_ECHOPGM("> "); + #endif + SendtoTFT(fstr); + #if ACDEBUG(AC_SOME) + SERIAL_EOL(); + #endif + } + TFTSer.println(); + } + + void DgusTFT::SendValueToTFT(const uint16_t value, const uint16_t address) { + uint8_t data[] = { 0x5A, 0xA5, 0x05, 0x82, uint8_t(address >> 8), uint8_t(address & 0xFF), uint8_t(value >> 8), uint8_t(value & 0xFF) }; + LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); + } + + void DgusTFT::RequestValueFromTFT(const uint16_t address) { + uint8_t data[] = { 0x5A, 0xA5, 0x04, 0x83, uint8_t(address >> 8), uint8_t(address & 0xFF), 0x01 }; + LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); + } + + void DgusTFT::SendTxtToTFT(const char *pdata, const uint16_t address) { + uint8_t data_len = strlen(pdata); + uint8_t data[] = { 0x5A, 0xA5, uint8_t(data_len + 5), 0x82, uint8_t(address >> 8), uint8_t(address & 0xFF) }; + LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); + LOOP_L_N(i, data_len) TFTSer.write(pdata[i]); + TFTSer.write(0xFF); TFTSer.write(0xFF); + } + + void DgusTFT::SendColorToTFT(const uint16_t color, const uint16_t address) { + uint8_t data[] = { 0x5A, 0xA5, 0x05, 0x82, uint8_t(address >> 8), uint8_t(address & 0xFF), uint8_t(color >> 8), uint8_t(color & 0xFF) }; + LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); + } + + void DgusTFT::SendReadNumOfTxtToTFT(const uint8_t number, const uint16_t address) { + uint8_t data[] = { 0x5A, 0xA5, 0x04, 0x83, uint8_t(address >> 8), uint8_t(address & 0xFF), number }; + LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); + } + + void DgusTFT::ChangePageOfTFT(const uint16_t page_index, const bool no_send/*=false*/) { + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("ChangePageOfTFT: ", page_index); + #endif + + uint32_t data_temp = 0; + + if (lcd_info.language == CHS) { + data_temp = page_index; + } + else if (lcd_info.language == ENG) { + switch (page_index) { + case PAGE_OUTAGE_RECOVERY: + data_temp = PAGE_ENG_OUTAGE_RECOVERY; break; + case PAGE_CHS_PROBE_PREHEATING: + data_temp = PAGE_ENG_PROBE_PREHEATING; break; + case PAGE_CHS_HOMING ... PAGE_ENG_HOMING: + data_temp = page_index + 12; break; + case PAGE_CHS_PROBE_PRECHECK ... PAGE_CHS_PROBE_PRECHECK_FAILED: + data_temp = page_index + 3; break; + default: + data_temp = page_index + 120; break; + } + } + + if (!no_send) { + uint8_t data[] = { 0x5A, 0xA5, 0x07, 0x82, 0x00, 0x84, 0x5A, 0x01, uint8_t(data_temp >> 8), uint8_t(data_temp & 0xFF) }; + LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); + } + + page_index_last_2 = page_index_last; + page_index_last = page_index_now; + page_index_now = data_temp; + + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("page_index_last_2: ", page_index_last_2); + DEBUG_ECHOLNPGM("page_index_last: ", page_index_last); + DEBUG_ECHOLNPGM("page_index_now: ", page_index_now); + #endif + } + + void DgusTFT::FakeChangePageOfTFT(const uint16_t page_index) { + #if ACDEBUG(AC_MARLIN) + if (page_index_saved != page_index_now) + DEBUG_ECHOLNPGM("FakeChangePageOfTFT: ", page_index); + #endif + ChangePageOfTFT(page_index, true); + } + + void DgusTFT::LcdAudioSet(const bool audio_on) { + // On: 5A A5 07 82 00 80 5A 00 00 1A + // Off: 5A A5 07 82 00 80 5A 00 00 12 + uint8_t data[] = { 0x5A, 0xA5, 0x07, 0x82, 0x00, 0x80, 0x5A, 0x00, 0x00, uint8_t(audio_on ? 0x1A : 0x12) }; + LOOP_L_N(i, 10) TFTSer.write(data[i]); + } + + bool DgusTFT::ReadTFTCommand() { + static uint8_t length = 0, cnt = 0, tft_receive_steps = 0; + uint8_t data; + + if (0 == TFTSer.available() || data_received) return false; + + data = TFTSer.read(); + + if (tft_receive_steps == 0) { + if (data != 0x5A) { + cnt = 0; + length = 0; + data_index = 0; + data_received = false; + return false; + } + + while (!TFTSer.available()) TERN_(USE_WATCHDOG, hal.watchdog_refresh()); + + data = TFTSer.read(); + // MYSERIAL.write(data ); + if (data == 0xA5) tft_receive_steps = 2; + } + else if (tft_receive_steps == 2) { + length = data; + tft_receive_steps = 3; + data_index = 0; + cnt = 0; + } + else if (tft_receive_steps == 3) { + if (data_index >= (DATA_BUF_SIZE -1)) { + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("lcd uart buff overflow: ", data_index); + #endif + data_index = 0; + data_received = false; + return false; + } + data_buf[data_index++] = data; + cnt++; + if (cnt >= length) { // Receive complete + tft_receive_steps = 0; + cnt = 0; + data_index = 0; + data_received = true; + return true; + } + } + + return false; + } + + #if 0 + { + //SERIAL_ECHOLNPGM("ReadTFTCommand: ", millis()); + //return -1; + + bool command_ready = false; + uint8_t data = 0; + + while (TFTSer.available() > 0 && command_len < MAX_CMND_LEN) { + data = TFTSer.read(); + if (0 == command_len) { + // if + } + + panel_command[command_len] = + if (panel_command[command_len] == '\n') { + command_ready = true; + break; + } + command_len++; + } + + if (command_ready) { + panel_command[command_len] = 0x00; + #if ACDEBUG(AC_ALL) + DEBUG_ECHOLNPGM("< panel_command ", panel_command); + #endif + #if ACDEBUG(AC_SOME) + // Ignore status request commands + uint8_t req = atoi(&panel_command[1]); + if (req > 7 && req != 20) { + DEBUG_ECHOLNPGM("> ", panel_command); + DEBUG_PRINT_PRINTER_STATE(F("printer_state: "), printer_state); + } + #endif + } + return command_ready; + } + #endif + + int8_t DgusTFT::Findcmndpos(const char * buff, const char q) { + for (int8_t pos = 0; pos < MAX_CMND_LEN; ++pos) + if (buff[pos] == q) return pos; + return -1; + } + + void DgusTFT::CheckHeaters() { + static uint32_t time_last = 0; + if (PENDING(millis(), time_last)) return; + time_last = millis() + 500; + + float temp = 0; + + #if HAS_HOTEND + // If the hotend temp is abnormal, confirm state before signalling panel + static uint8_t faultE0Duration = 0; + temp = getActualTemp_celsius(E0); + if (!WITHIN(temp, HEATER_0_MINTEMP, HEATER_0_MAXTEMP)) { + faultE0Duration++; + if (faultE0Duration >= AC_HEATER_FAULT_VALIDATION_TIME) { + SendtoTFTLN(AC_msg_nozzle_temp_abnormal); + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("Extruder temp abnormal! : ", temp); + #endif + faultE0Duration = 0; + } + } + #endif + + #if HAS_HEATED_BED + static uint8_t faultBedDuration = 0; + temp = getActualTemp_celsius(BED); + if (!WITHIN(temp, BED_MINTEMP, BED_MAXTEMP)) { + faultBedDuration++; + if (faultBedDuration >= AC_HEATER_FAULT_VALIDATION_TIME) { + SendtoTFTLN(AC_msg_bed_temp_abnormal); + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("Bed temp abnormal! : ", temp); + #endif + faultBedDuration = 0; + } + } + #endif + + #if 0 + // Update panel with hotend heater status + if (hotend_state != AC_heater_temp_reached) { + if (WITHIN(getActualTemp_celsius(E0) - getTargetTemp_celsius(E0), -1, 1)) { + SendtoTFTLN(AC_msg_nozzle_heating_done); + hotend_state = AC_heater_temp_reached; + } + } + + // Update panel with bed heater status + if (hotbed_state != AC_heater_temp_reached) { + if (WITHIN(getActualTemp_celsius(BED) - getTargetTemp_celsius(BED), -0.5, 0.5)) { + SendtoTFTLN(AC_msg_bed_heating_done); + hotbed_state = AC_heater_temp_reached; + } + } + #endif + } + + void DgusTFT::SendFileList(int8_t startindex) { + // Respond to panel request for 4 files starting at index + #if ACDEBUG(AC_INFO) + DEBUG_ECHOLNPGM("## SendFileList ## ", startindex); + #endif + filenavigator.getFiles(startindex); + } + + void DgusTFT::SelectFile() { + strncpy(selectedfile, panel_command + 4, command_len - 4); + selectedfile[command_len - 5] = '\0'; + #if ACDEBUG(AC_FILE) + DEBUG_ECHOLNPGM(" Selected File: ", selectedfile); + #endif + switch (selectedfile[0]) { + case '/': // Valid file selected + SendtoTFTLN(AC_msg_sd_file_open_success); + break; + case '<': // .. (go up folder level) + filenavigator.upDIR(); + SendtoTFTLN(AC_msg_sd_file_open_failed); + SendFileList(0); + break; + default: // enter sub folder + filenavigator.changeDIR(selectedfile); + SendtoTFTLN(AC_msg_sd_file_open_failed); + SendFileList(0); + break; + } + } + + void DgusTFT::ProcessPanelRequest() { + uint16_t control_index = 0; + uint32_t control_value; + uint16_t temp; + char str_buf[20]; + + if (data_received) { + data_received = false; + + if (0x83 == data_buf[0]) { + control_index = uint16_t(data_buf[1] << 8) | uint16_t(data_buf[2]); + if (control_index == KEY_ADDRESS) { // is KEY + //key_index = control_index; + key_value = (uint16_t(data_buf[4]) << 8) | uint16_t(data_buf[5]); + } + + #if HAS_HOTEND + else if (control_index == TXT_HOTEND_TARGET || control_index == TXT_ADJUST_HOTEND) { // hotend target temp + control_value = (uint16_t(data_buf[4]) << 8) | uint16_t(data_buf[5]); + temp = constrain(uint16_t(control_value), 0, HEATER_0_MAXTEMP); + setTargetTemp_celsius(temp, E0); + //sprintf(str_buf,"%u/%u", (uint16_t)thermalManager.degHotend(0), uint16_t(control_value)); + //SendTxtToTFT(str_buf, TXT_PRINT_HOTEND); + } + #endif + + #if HAS_HEATED_BED + else if (control_index == TXT_BED_TARGET || control_index == TXT_ADJUST_BED) {// bed target temp + control_value = (uint16_t(data_buf[4]) << 8) | uint16_t(data_buf[5]); + temp = constrain(uint16_t(control_value), 0, BED_MAXTEMP); + setTargetTemp_celsius(temp, BED); + //sprintf(str_buf,"%u/%u", uint16_t(thermalManager.degBed()), uint16_t(control_value)); + //SendTxtToTFT(str_buf, TXT_PRINT_BED); + } + #endif + + #if HAS_FAN + else if (control_index == TXT_FAN_SPEED_TARGET) { // fan speed + control_value = (uint16_t(data_buf[4]) << 8) | uint16_t(data_buf[5]); + temp = constrain(uint16_t(control_value), 0, 100); + SendValueToTFT(temp, TXT_FAN_SPEED_NOW); + SendValueToTFT(temp, TXT_FAN_SPEED_TARGET); + setTargetFan_percent(temp, FAN0); + } + #endif + + else if (control_index == TXT_PRINT_SPEED_TARGET || control_index == TXT_ADJUST_SPEED) { // print speed + control_value = (uint16_t(data_buf[4]) << 8) | uint16_t(data_buf[5]); + const uint16_t feedrate = constrain(uint16_t(control_value), 40, 999); + //feedrate_percentage=constrain(control_value,40,999); + sprintf(str_buf, "%u", feedrate); + SendTxtToTFT(str_buf, TXT_PRINT_SPEED); + SendValueToTFT(feedrate, TXT_PRINT_SPEED_NOW); + SendValueToTFT(feedrate, TXT_PRINT_SPEED_TARGET); + setFeedrate_percent(feedrate); + } + + else if (control_index == REG_LCD_READY) { + control_value = (uint32_t(data_buf[3]) << 16) | (uint32_t(data_buf[4]) << 8) | uint32_t(data_buf[5]); + if (control_value == 0x010072) { // startup last gif + LcdAudioSet(lcd_info.audio_on); + + SendValueToTFT(2, ADDRESS_MOVE_DISTANCE); + + #if ENABLED(CASE_LIGHT_ENABLE) + SendValueToTFT(getCaseLightState(), ADDRESS_SYSTEM_LED_STATUS); + SendValueToTFT(getCaseLightState(), ADDRESS_PRINT_SETTING_LED_STATUS); + #endif + + #if ENABLED(POWER_LOSS_RECOVERY) + const bool is_outage = AC_printer_resuming_from_power_outage == printer_state; + if (is_outage) { + ChangePageOfTFT(PAGE_OUTAGE_RECOVERY); + #if ENABLED(LONG_FILENAME_HOST_SUPPORT) + char filename[64] = { '\0' }; + card.getLongPath(filename, recovery.info.sd_filename); + SendTxtToTFT(filename, TXT_OUTAGE_RECOVERY_FILE); + #else + SendTxtToTFT(recovery.info.sd_filename, TXT_OUTAGE_RECOVERY_FILE); + #endif + PlayTune(BEEPER_PIN, SOS, 1); + } + #else + constexpr bool is_outage = false; + #endif + + if (!is_outage) ChangePageOfTFT(PAGE_MAIN); + + } + else if (control_value == 0x010000) { // startup first gif + PlayTune(BEEPER_PIN, Anycubic_PowerOn, 1); // takes 3500 ms + } + } + + /* + else if ((control_index & 0xF000) == 0x2000) { // is TXT ADDRESS + tft_txt_index = control_index; + j = 0; + for (i = 4; ;i++) { + tft_txt_buf[j] = data_buf[i]; + if (tft_txt_buf[j] == 0xFF) { + tft_txt_buf[j] = 0; + break; + } + j++; + } + } + */ + } + else if (data_buf[0] == 0x82) { + // send_cmd_to_pc(cmd ,start ); + } + } + } + + #if 0 + { + // Break these up into logical blocks // as its easier to navigate than one huge switch case! + int8_t req = atoi(&panel_command[1]); + + // Information requests A0 - A8 and A33 + if (req <= 8 || req == 33) PanelInfo(req); + + // Simple Actions A9 - A28 + else if (req <= 28) PanelAction(req); + + // Process Initiation + else if (req <= 34) PanelProcess(req); + + else SendtoTFTLN(); + } + #endif + + void DgusTFT::set_language(language_t language) { + lcd_info.language = ui_language = lcd_info_back.language = language; + } + + void DgusTFT::toggle_language() { + lcd_info.language = ui_language = (lcd_info.language == CHS ? ENG : CHS); + } + + void DgusTFT::goto_system_page() { + ChangePageOfTFT(lcd_info.language == CHS + ? (lcd_info.audio_on ? PAGE_SYSTEM_CHS_AUDIO_ON : PAGE_SYSTEM_CHS_AUDIO_OFF) + : (lcd_info.audio_on ? 11 : 50) // PAGE_SYSTEM_ENG_AUDIO_ON/OFF - 120 + ); + } + + void DgusTFT::toggle_audio() { + lcd_info.audio_on = !lcd_info.audio_on; + goto_system_page(); + LcdAudioSet(lcd_info.audio_on); + } + + void DgusTFT::store_changes() { + if (lcd_info_back.language != lcd_info.language || lcd_info_back.audio_on != lcd_info.audio_on) { + lcd_info_back = lcd_info; + injectCommands(F("M500")); + } + } + + #if HAS_HOTEND + void DgusTFT::send_temperature_hotend(uint32_t addr) { + char str_buf[16]; + sprintf(str_buf, "%u/%u", uint16_t(getActualTemp_celsius(E0)), uint16_t(getTargetTemp_celsius(E0))); + SendTxtToTFT(str_buf, addr); + } + #endif + + #if HAS_HEATED_BED + void DgusTFT::send_temperature_bed(uint32_t addr) { + char str_buf[16]; + sprintf(str_buf, "%u/%u", uint16_t(getActualTemp_celsius(BED)), uint16_t(getTargetTemp_celsius(BED))); + SendTxtToTFT(str_buf, addr); + } + #endif + + void DgusTFT::page1() { + #if ACDEBUG(AC_ALL) + if (page_index_saved != page_index_now || key_value_saved != key_value) { + DEBUG_ECHOLNPGM("page1 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + + case 1: { // main page, print + lcd_txtbox_page = 0; + if (lcd_txtbox_index) { + set_descript_color(COLOR_BLUE); + lcd_txtbox_index = 0; + } + ChangePageOfTFT(PAGE_FILE); + SendFileList(0); + } break; + + case 2: { // tool + ChangePageOfTFT(PAGE_TOOL); + #if ENABLED(CASE_LIGHT_ENABLE) + SendValueToTFT(getCaseLightState(), ADDRESS_SYSTEM_LED_STATUS); + #endif + } break; + + case 3: // prepare + ChangePageOfTFT(PAGE_PREPARE); + break; + + case 4: // system + goto_system_page(); + break; + } + + #if 0 + if (message_index < 30) { + SendTxtToTFT(p_mesage[message_index], TXT_MAIN_MESSAGE); + message_index = 30; + } + #endif + + #if HAS_HOTEND || HAS_HEATED_BED + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1500; + + TERN_(HAS_HOTEND, send_temperature_hotend(TXT_PREHEAT_HOTEND)); + TERN_(HAS_HEATED_BED, send_temperature_bed(TXT_PREHEAT_BED)); + #endif + } + + void DgusTFT::page2() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page2 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + char file_index = 0; + + switch (key_value) { + case 0: break; + + case 1: // return + ChangePageOfTFT(PAGE_MAIN); + set_descript_color(COLOR_BLUE); + break; + + case 2: // page up + if (lcd_txtbox_page > 0) { + lcd_txtbox_page--; + + set_descript_color(COLOR_BLUE); + lcd_txtbox_index = 0; + + SendFileList(lcd_txtbox_page * 5); + } + break; + + case 3: // page down + if ((lcd_txtbox_page + 1) * 5 < filenavigator.getFileNum()) { + lcd_txtbox_page++; + + set_descript_color(COLOR_BLUE); + lcd_txtbox_index = 0; + + SendFileList(lcd_txtbox_page * 5); + } + break; + + case 4: // page refresh + if (!isMediaInserted()) safe_delay(500); + + filenavigator.reset(); + + lcd_txtbox_page = 0; + if (lcd_txtbox_index) { + set_descript_color(COLOR_BLUE); + lcd_txtbox_index = 0; + } + SendFileList(lcd_txtbox_index); + break; + + case 5: // resume of outage(last power off) + #if ACDEBUG(AC_MARLIN) + DEBUG_PRINT_PRINTER_STATE(F("printer_state: "), printer_state); + #endif + if (lcd_txtbox_index > 0 && lcd_txtbox_index < 6) { // 1~5 + + if (filenavigator.filelist.seek(lcd_txtbox_page * 5 + (lcd_txtbox_index - 1))) { + + set_descript_color(COLOR_BLUE); + + TERN_(CASE_LIGHT_ENABLE, setCaseLightState(true)); + + char str_buf[20]; + strncpy_P(str_buf, filenavigator.filelist.longFilename(), 17); + str_buf[17] = '\0'; + SendTxtToTFT(str_buf, TXT_PRINT_NAME); + + #if ENABLED(POWER_LOSS_RECOVERY) + if (printer_state == AC_printer_resuming_from_power_outage) { + // Need to home here to restore the Z position + //injectCommands_P(AC_cmnd_power_loss_recovery); + //SERIAL_ECHOLNPGM("start resuming from power outage: ", AC_cmnd_power_loss_recovery); + ChangePageOfTFT(PAGE_STATUS2); // show pause + injectCommands(F("M1000")); // home and start recovery + } + #endif + } + } + break; + + case 6: // start print + if (lcd_txtbox_index > 0 && lcd_txtbox_index < 6) { // 1~5 + + if (filenavigator.filelist.seek(lcd_txtbox_page * 5 + lcd_txtbox_index - 1)) { + #if 0 + SERIAL_ECHOLNPGM("start print: ", lcd_txtbox_page * 5 + (lcd_txtbox_index - 1)); + SERIAL_ECHOLNPGM("start print: ", filenavigator.filelist.shortFilename()); + SERIAL_ECHOLNPGM("start print: ", filenavigator.filelist.longFilename()); + #endif + + set_descript_color(COLOR_BLUE); + + // Allows printer to restart the job if we don't want to recover + if (printer_state == AC_printer_resuming_from_power_outage) { + injectCommands(F("M1000 C")); // Cancel recovery + printer_state = AC_printer_idle; + } + + TERN_(CASE_LIGHT_ENABLE, setCaseLightState(true)); + printFile(filenavigator.filelist.shortFilename()); + + char str_buf[20]; + strncpy_P(str_buf, filenavigator.filelist.longFilename(), 17); + str_buf[17] = '\0'; + SendTxtToTFT(str_buf, TXT_PRINT_NAME); + + sprintf(str_buf, "%5.2f", getFeedrate_percent()); + SendTxtToTFT(str_buf, TXT_PRINT_SPEED); + + sprintf(str_buf, "%u", uint16_t(getProgress_percent())); + SendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); + + uint32_t time = 0; + sprintf(str_buf, "%s H ", utostr3(time / 60)); + sprintf(str_buf + strlen(str_buf), "%s M", utostr3(time % 60)); + SendTxtToTFT(str_buf, TXT_PRINT_TIME); + + ChangePageOfTFT(PAGE_STATUS2); + } + } + break; + + case 7: // txtbox 1 click + case 8: // txtbox 2 click + case 9: // txtbox 3 click + case 10: // txtbox 4 click + + case 11: { // txtbox 5 click + static uint8_t lcd_txtbox_index_last = 0; + + lcd_txtbox_index = key_value - 6; + + // lcd_txtbox_page 0~... + // lcd_txtbox_index 1~5 + file_index = lcd_txtbox_page * 5 + (lcd_txtbox_index - 1); + if (file_index < filenavigator.getFileNum()) { + + set_descript_color(COLOR_RED); + + if (lcd_txtbox_index_last && lcd_txtbox_index_last != lcd_txtbox_index) // 1~5 + set_descript_color(COLOR_BLUE, lcd_txtbox_index_last); + lcd_txtbox_index_last = lcd_txtbox_index; + } + } break; + } + } + + void DgusTFT::page3() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page3 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + static millis_t flash_time = 0; + const millis_t ms = millis(); + char str_buf[20]; + static uint8_t progress_last = 0; + + switch (key_value) { + case 0: break; + + case 1: // return + if (!isPrintingFromMedia()) // only idle status can return + ChangePageOfTFT(PAGE_FILE); + break; + + case 2: // resume print + #if ACDEBUG(AC_MARLIN) + DEBUG_PRINT_PRINTER_STATE(F("printer_state: "), printer_state); + DEBUG_PRINT_PAUSED_STATE(F("pause_state :"), pause_state); + #endif + if ( pause_state == AC_paused_idle + || pause_state == AC_paused_filament_lack + || printer_state == AC_printer_resuming_from_power_outage + ) { + printer_state = AC_printer_idle; + pause_state = AC_paused_idle; + resumePrint(); + ChangePageOfTFT(PAGE_STATUS2); // show pause print + flash_time = ms + 1500; + } + else + setUserConfirmed(); + break; + + case 3: // print stop + if (isPrintingFromMedia()) + ChangePageOfTFT(PAGE_STOP_CONF); + break; + + case 4: // print change param + ChangePageOfTFT(PAGE_ADJUST); + TERN_(CASE_LIGHT_ENABLE, SendValueToTFT(getCaseLightState(), ADDRESS_PRINT_SETTING_LED_STATUS)); + TERN_(HAS_HOTEND, SendValueToTFT(uint16_t(getTargetTemp_celsius(E0)), TXT_ADJUST_HOTEND)); + TERN_(HAS_HEATED_BED, SendValueToTFT(uint16_t(getTargetTemp_celsius(BED)), TXT_ADJUST_BED)); + feedrate_back = getFeedrate_percent(); + SendValueToTFT(uint16_t(feedrate_back), TXT_ADJUST_SPEED); + flash_time = ms + 1500; + break; + } + + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1500; + + if (feedrate_back != getFeedrate_percent()) { + if (getFeedrate_percent() != 0) + sprintf(str_buf, "%5.2f", getFeedrate_percent()); + else + sprintf(str_buf, "%d", feedrate_back); + + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("print speed: ", str_buf); + DEBUG_ECHOLNPGM("feedrate_back: ", feedrate_back); + #endif + SendTxtToTFT(str_buf, TXT_PRINT_SPEED); + feedrate_back = getFeedrate_percent(); + } + + if (progress_last != getProgress_percent()) { + sprintf(str_buf, "%u", getProgress_percent()); + SendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); + progress_last = getProgress_percent(); + } + + // Get Printing Time + uint32_t time = getProgress_seconds_elapsed() / 60; + sprintf(str_buf, "%s H ", utostr3(time / 60)); + sprintf(str_buf + strlen(str_buf), "%s M", utostr3(time % 60)); + SendTxtToTFT(str_buf, TXT_PRINT_TIME); + + TERN_(HAS_HOTEND, send_temperature_hotend(TXT_PRINT_HOTEND)); + TERN_(HAS_HEATED_BED, send_temperature_bed(TXT_PRINT_BED)); + } + + void DgusTFT::page4() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page4 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + char str_buf[20]; + static uint8_t progress_last = 0; + + switch (key_value) { + case 0: break; + + case 1: // return + if (!isPrintingFromMedia()) // only is idle status can return + ChangePageOfTFT(PAGE_FILE); + break; + + case 2: // print pause + if (isPrintingFromMedia()) { + pausePrint(); + printer_state = AC_printer_pausing; + pause_state = AC_paused_idle; + ChangePageOfTFT(PAGE_WAIT_PAUSE); + //injectCommands(F("M108")); // stop waiting temperature M109 + } + break; + + case 3: // print stop + if (isPrintingFromMedia()) + ChangePageOfTFT(PAGE_STOP_CONF); + break; + + case 4: // print settings + ChangePageOfTFT(PAGE_ADJUST); + TERN_(CASE_LIGHT_ENABLE, SendValueToTFT(getCaseLightState(), ADDRESS_PRINT_SETTING_LED_STATUS)); + TERN_(HAS_HOTEND, SendValueToTFT(uint16_t(getTargetTemp_celsius(E0)), TXT_ADJUST_HOTEND)); + TERN_(HAS_HEATED_BED, SendValueToTFT(uint16_t(getTargetTemp_celsius(BED)), TXT_ADJUST_BED)); + feedrate_back = getFeedrate_percent(); + SendValueToTFT((uint16_t)feedrate_back, TXT_ADJUST_SPEED); + TERN_(HAS_FAN, SendValueToTFT(uint16_t(getActualFan_percent(FAN0)), TXT_FAN_SPEED_TARGET)); + str_buf[0] = 0; + strcat(str_buf, ftostr52sprj(getZOffset_mm()) + 3); + SendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); + //SendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); + RequestValueFromTFT(TXT_ADJUST_SPEED); // attempt to make feedrate visible on visit to this page + break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1500; + + if (feedrate_back != getFeedrate_percent()) { + if (getFeedrate_percent() != 0) + sprintf(str_buf, "%5.2f", getFeedrate_percent()); + else + sprintf(str_buf, "%d", feedrate_back); + + SendTxtToTFT(str_buf, TXT_PRINT_SPEED); + feedrate_back = getFeedrate_percent(); + } + + if (progress_last != getProgress_percent()) { + sprintf(str_buf, "%u", getProgress_percent()); + SendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); + progress_last = getProgress_percent(); + } + + uint32_t time = getProgress_seconds_elapsed() / 60; + sprintf(str_buf, "%s H ", utostr3(time / 60)); + sprintf(str_buf + strlen(str_buf), "%s M", utostr3(time % 60)); + SendTxtToTFT(str_buf, TXT_PRINT_TIME); + + TERN_(HAS_HOTEND, send_temperature_hotend(TXT_PRINT_HOTEND)); + TERN_(HAS_HEATED_BED, send_temperature_bed(TXT_PRINT_BED)); + } + + void DgusTFT::page5() { // print settings + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page5 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + static bool z_change = false; + + switch (key_value) { + case 0: break; + + case 1: // return + if (AC_printer_printing == printer_state) + ChangePageOfTFT(PAGE_STATUS2); // show pause + else if (AC_printer_paused == printer_state) + ChangePageOfTFT(PAGE_STATUS1); // show print + break; + + #if ENABLED(MESH_EDIT_MENU) + + case 2: { // - + float z_off = getZOffset_mm(); + //SERIAL_ECHOLNPGM("z_off: ", z_off); + //setSoftEndstopState(false); + if (z_off <= -5) return; + z_off -= 0.05f; + setZOffset_mm(z_off); + + char str_buf[10]; + str_buf[0] = 0; + strcat(str_buf, ftostr52sprj(getZOffset_mm()) + 2); + SendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); + //SendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); + + //if (isAxisPositionKnown(Z)) { // Move Z axis + // SERIAL_ECHOLNPGM("Z now:", getAxisPosition_mm(Z)); + // const float currZpos = getAxisPosition_mm(Z); + // setAxisPosition_mm(currZpos-0.05, Z); + // SERIAL_ECHOLNPGM("Z now:", getAxisPosition_mm(Z)); + //} + + #if ENABLED(BABYSTEPPING) + int16_t steps = mmToWholeSteps(-0.05, Z); + babystepAxis_steps(steps, Z); + #endif + + GRID_LOOP(x, y) { + const xy_uint8_t pos { x, y }; + const float currval = getMeshPoint(pos); + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("x: ", x, " y: ", y, " z: ", currval); + #endif + setMeshPoint(pos, constrain(currval - 0.05f, AC_LOWEST_MESHPOINT_VAL, 5)); + } + + z_change = true; + + //setSoftEndstopState(true); + } break; + + case 3: { // + + float z_off = getZOffset_mm(); + //SERIAL_ECHOLNPGM("z_off: ", z_off); + //setSoftEndstopState(false); + + if (z_off >= 5) return; + z_off += 0.05f; + setZOffset_mm(z_off); + + char str_buf[10]; + str_buf[0] = '\0'; + strcat(str_buf, ftostr52sprj(getZOffset_mm()) + 2); + SendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); + //SendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); + + //int16_t steps = mmToWholeSteps(constrain(Zshift,-0.05,0.05), Z); + + /* + if (isAxisPositionKnown(Z)) { // Move Z axis + SERIAL_ECHOLNPGM("Z now:", getAxisPosition_mm(Z)); + const float currZpos = getAxisPosition_mm(Z); + setAxisPosition_mm(currZpos-0.05, Z); + SERIAL_ECHOLNPGM("Z now:", getAxisPosition_mm(Z)); + } + */ + + #if ENABLED(BABYSTEPPING) + int16_t steps = mmToWholeSteps(0.05, Z); + babystepAxis_steps(steps, Z); + #endif + + GRID_LOOP(x, y) { + const xy_uint8_t pos { x, y }; + const float currval = getMeshPoint(pos); + //SERIAL_ECHOLNPGM("x: ", x, " y: ", y, " z: ", currval); + setMeshPoint(pos, constrain(currval + 0.05f, AC_LOWEST_MESHPOINT_VAL, 5)); + } + + z_change = true; + + //setSoftEndstopState(true); + } break; + + #endif // MESH_EDIT_MENU + + #if ENABLED(CASE_LIGHT_ENABLE) + case 4: { // light control + const bool cls = !getCaseLightState(); + SendValueToTFT(cls, ADDRESS_PRINT_SETTING_LED_STATUS); + setCaseLightState(cls); + } break; + #endif + + case 5: + ChangePageOfTFT(PAGE_DONE); + break; + + case 6: break; + + case 7: + TERN_(HAS_HEATED_BED, RequestValueFromTFT(TXT_ADJUST_BED)); + RequestValueFromTFT(TXT_ADJUST_SPEED); + TERN_(HAS_HOTEND, RequestValueFromTFT(TXT_ADJUST_HOTEND)); + TERN_(HAS_FAN, RequestValueFromTFT(TXT_FAN_SPEED_TARGET)); + + if (z_change == true) { + injectCommands(F("M500")); + z_change = false; + } + + if (AC_printer_printing == printer_state) + ChangePageOfTFT(PAGE_STATUS2); // show pause + else if (AC_printer_paused == printer_state) + ChangePageOfTFT(PAGE_STATUS1); // show print + + break; + } + } + + void DgusTFT::page6() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page6 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + switch (key_value) { + case 0: break; + case 1: break; + } + } + + void DgusTFT::page7() { // tools + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page7 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + switch (key_value) { + case 0: break; + + case 1: // return + ChangePageOfTFT(PAGE_MAIN); + break; + + case 2: + ChangePageOfTFT(PAGE_MOVE); + break; + + case 3: // set temperature + ChangePageOfTFT(PAGE_TEMP); + #if HAS_HOTEND + SendValueToTFT(uint16_t(getActualTemp_celsius(E0)), TXT_HOTEND_NOW); + SendValueToTFT(uint16_t(getTargetTemp_celsius(E0)), TXT_HOTEND_TARGET); + #endif + #if HAS_HEATED_BED + SendValueToTFT(uint16_t(getActualTemp_celsius(BED)), TXT_BED_NOW); + SendValueToTFT(uint16_t(getTargetTemp_celsius(BED)), TXT_BED_TARGET); + #endif + break; + + case 4: + ChangePageOfTFT(PAGE_SPEED); + #if HAS_FAN + SendValueToTFT(uint16_t(getActualFan_percent(FAN0)), TXT_FAN_SPEED_NOW); + SendValueToTFT(uint16_t(getTargetFan_percent(FAN0)), TXT_FAN_SPEED_TARGET); + #endif + SendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_NOW); + SendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_TARGET); + break; + + case 5: // turn off the xyz motor + if (!isMoving()) + stepper.disable_all_steppers(); + break; + + #if ENABLED(CASE_LIGHT_ENABLE) + case 6: { // light control + const bool cls = !getCaseLightState(); + SendValueToTFT(cls, ADDRESS_SYSTEM_LED_STATUS); + setCaseLightState(cls); + } break; + #endif + } + } + + void DgusTFT::page8() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page8 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + //static uint16_t movespeed = 50; + static float move_dis = 1.0f; + + if (key_value == 2 || key_value == 4 + || key_value == 6 || key_value == 8 + || key_value == 10 || (key_value == 12 && !isMoving()) + ) { + if (getAxisPosition_mm(Z) < 0) setAxisPosition_mm(0, Z, 8); + } + + // if (!planner.movesplanned())return; + switch (key_value) { + case 0: + break; + + case 1: // return + ChangePageOfTFT(PAGE_TOOL); + break; + + case 5: + if (!isMoving()) + injectCommands(F("G28 X")); + break; + + case 9: + if (!isMoving()) + injectCommands(F("G28 Y")); + break; + + case 13: + if (!isMoving()) + injectCommands(F("G28 Z")); + break; + + case 17: + if (!isMoving()) + injectCommands(F("G28")); + break; + + case 2: // X- + if (!isMoving()) + setAxisPosition_mm(getAxisPosition_mm(X) - move_dis, X, 50); + break; + + case 4: // X+ + if (!isMoving()) + setAxisPosition_mm(getAxisPosition_mm(X) + move_dis, X, 50); + break; + + case 6: // Y+ + if (!isMoving()) + setAxisPosition_mm(getAxisPosition_mm(Y) - move_dis, Y, 50); + break; + + case 8: // Y- + if (!isMoving()) + setAxisPosition_mm(getAxisPosition_mm(Y) + move_dis, Y, 50); + break; + + case 10: // Z- + if (!isMoving()) + setAxisPosition_mm(getAxisPosition_mm(Z) - move_dis, Z, 8); + break; + + case 12: // Z+ + if (!isMoving()) + setAxisPosition_mm(getAxisPosition_mm(Z) + move_dis, Z, 8); + break; + + case 3: + move_dis = 0.1f; + SendValueToTFT(1, ADDRESS_MOVE_DISTANCE); + break; + + case 7: + move_dis = 1.0f; + SendValueToTFT(2, ADDRESS_MOVE_DISTANCE); + break; + + case 11: + move_dis = 10.0f; + SendValueToTFT(3, ADDRESS_MOVE_DISTANCE); + break; + + //case 14: + // movespeed = 3000; //SERIAL_ECHOLN(movespeed); + // break; + // + //case 15: + // movespeed = 2000; //SERIAL_ECHOLN(movespeed); + // break; + // + //case 16: + // movespeed = 1000; //SERIAL_ECHOLN(movespeed); + // break; + } + } + + void DgusTFT::page9() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page9 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + + case 1: // return + ChangePageOfTFT(PAGE_TOOL); + break; + + case 2: break; + case 3: break; + case 4: break; + case 5: break; + + case 6: // cooling + setTargetTemp_celsius(0, E0); + setTargetTemp_celsius(0, BED); + ChangePageOfTFT(PAGE_TOOL); + break; + + case 7: // send target temp + RequestValueFromTFT(TXT_HOTEND_TARGET); + RequestValueFromTFT(TXT_BED_TARGET); + ChangePageOfTFT(PAGE_TOOL); + break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1500; + + SendValueToTFT(uint16_t(getActualTemp_celsius(E0)), TXT_HOTEND_NOW); + SendValueToTFT(uint16_t(getActualTemp_celsius(BED)), TXT_BED_NOW); + } + + void DgusTFT::page10() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page10 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + case 1: // return + ChangePageOfTFT(PAGE_TOOL); + break; + + case 2: break; + case 3: break; + case 4: break; + case 5: break; + + case 6: // ok + RequestValueFromTFT(TXT_FAN_SPEED_TARGET); + RequestValueFromTFT(TXT_PRINT_SPEED_TARGET); + ChangePageOfTFT(PAGE_TOOL); + break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1500; + + SendValueToTFT(uint16_t(getActualFan_percent(FAN0)), TXT_FAN_SPEED_NOW); + SendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_NOW); + } + + void DgusTFT::page11() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page11 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + switch (key_value) { + case 0: break; + + case 1: // return + ChangePageOfTFT(PAGE_MAIN); + store_changes(); + break; + + case 2: // language + toggle_language(); + goto_system_page(); + break; + + case 3: break; + + case 4: // audio + toggle_audio(); + break; + + case 5: { // about + char str_ver[32]; + //sprintf(str_ver, "%04d-%02d-%02d %02d:%02d:%02d\n", BUILD_YEAR, BUILD_MONTH, BUILD_DAY, BUILD_HOUR, BUILD_MIN, BUILD_SEC); + sprintf(str_ver, MAIN_BOARD_FIRMWARE_VER); + SendTxtToTFT(str_ver, TXT_VERSION); + ChangePageOfTFT(PAGE_ABOUT); + } break; + + case 6: + ChangePageOfTFT(PAGE_RECORD); + break; + } + } + + void DgusTFT::page12() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page12 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + switch (key_value) { + case 0: break; + case 1: // return + ChangePageOfTFT(PAGE_SYSTEM_CHS_AUDIO_ON); + break; + } + } + + void DgusTFT::page13() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page13 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + switch (key_value) { + case 0: break; + + case 1: // return + goto_system_page(); + break; + + case 2: break; + } + } + + void DgusTFT::page14() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page14 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + switch (key_value) { + case 0: break; + case 1: break; // return + case 2: break; + case 3: break; + case 4: break; + } + } + + void DgusTFT::page15() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page15 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + + case 1: // return + ChangePageOfTFT(PAGE_MAIN); + break; + + case 2: + ChangePageOfTFT(PAGE_PreLEVEL); + break; + + #if HAS_HOTEND || HAS_HEATED_BED + case 3: { + ChangePageOfTFT(PAGE_PREHEAT); + TERN_(HAS_HOTEND, send_temperature_hotend(TXT_PREHEAT_HOTEND)); + TERN_(HAS_HEATED_BED, send_temperature_bed(TXT_PREHEAT_BED)); + } break; + #endif + + #if HAS_EXTRUDERS + case 4: { + send_temperature_hotend(TXT_FILAMENT_TEMP); + ChangePageOfTFT(PAGE_FILAMENT); + } break; + #endif + } + } + + void DgusTFT::page16() { // AUTO LEVELING + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page16 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + switch (key_value) { + case 0: break; + case 1: // return + ChangePageOfTFT(PAGE_PREPARE); + break; + + case 2: + if (!isPrinting()) { + //ChangePageOfTFT(PAGE_LEVEL_ENSURE); + ChangePageOfTFT(PAGE_CHS_PROBE_PRECHECK); + } + break; + + case 3: { + char str_buf[10]; + str_buf[0] = '\0'; + strcat(str_buf, ftostr52sprj(getZOffset_mm()) + 2); + SendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); + //SendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); + ChangePageOfTFT(PAGE_LEVEL_ADVANCE); + } break; + + case 4: + ChangePageOfTFT(PAGE_AUTO_OFFSET); + break; + } + } + + void DgusTFT::page17() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page17 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + float z_off; + switch (key_value) { + case 0: break; + + case 1: // return + ChangePageOfTFT(PAGE_PreLEVEL); + break; + + case 2: { + setSoftEndstopState(false); + if (getZOffset_mm() <= -5) return; + z_off = getZOffset_mm() - 0.01f; + setZOffset_mm(z_off); + + char str_buf[10]; + strcat(str_buf, ftostr52sprj(getZOffset_mm()) + 2); + SendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); + //SendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); + + if (isAxisPositionKnown(Z)) { + const float currZpos = getAxisPosition_mm(Z); + setAxisPosition_mm(currZpos - 0.01f, Z); + } + + setSoftEndstopState(true); + } break; + + case 3: { + setSoftEndstopState(false); + if (getZOffset_mm() >= 5) return; + z_off = getZOffset_mm() + 0.01f; + setZOffset_mm(z_off); + + char str_buf[10]; + strcat(str_buf, ftostr52sprj(getZOffset_mm()) + 2); + SendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); + //SendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); + + if (isAxisPositionKnown(Z)) { // Move Z axis + const float currZpos = getAxisPosition_mm(Z); + setAxisPosition_mm(currZpos + 0.01f, Z); + } + + setSoftEndstopState(true); + } break; + + case 4: + #if ACDEBUG(AC_MARLIN) + DEBUG_ECHOLNPGM("z off: ", ftostr52sprj(getZOffset_mm())); + #endif + #if HAS_LEVELING + GRID_LOOP(x, y) { + const xy_uint8_t pos { x, y }; + const float currval = getMeshPoint(pos); + setMeshPoint(pos, constrain(currval + getZOffset_mm(), AC_LOWEST_MESHPOINT_VAL, 5)); + } + injectCommands(F("M500")); + #endif + ChangePageOfTFT(PAGE_PREPARE); + break; + } + } + + #if HAS_HOTEND || HAS_HEATED_BED + + void DgusTFT::page18() { // preheat + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page18 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + + case 1: // return + ChangePageOfTFT(PAGE_PREPARE); + break; + + case 2: // PLA + TERN_(HAS_HOTEND, setTargetTemp_celsius(190, E0)); + TERN_(HAS_HEATED_BED, setTargetTemp_celsius(60, BED)); + ChangePageOfTFT(PAGE_PREHEAT); + break; + + case 3: // ABS + TERN_(HAS_HOTEND, setTargetTemp_celsius(240, E0)); + TERN_(HAS_HEATED_BED, setTargetTemp_celsius(100, BED)); + ChangePageOfTFT(PAGE_PREHEAT); + break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1500; + + TERN_(HAS_HOTEND, send_temperature_hotend(TXT_PREHEAT_HOTEND)); + TERN_(HAS_HEATED_BED, send_temperature_bed(TXT_PREHEAT_BED)); + } + + #endif // HAS_HOTEND || HAS_HEATED_BED + + #if HAS_EXTRUDERS + + void DgusTFT::page19() { // Filament + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page19 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + static char filament_status = 0; + static millis_t flash_time = 0; + switch (key_value) { + case 0: break; + + case 1: // return + filament_status = 0; + injectCommands(F("G90")); + ChangePageOfTFT(PAGE_PREPARE); + break; + + case 2: // Filament in + if (getActualTemp_celsius(E0) < 220) { + filament_status = 0; + ChangePageOfTFT(PAGE_FILAMENT_HEAT); + } + else { + filament_status = 1; + injectCommands(F("G91")); + } + break; + + case 3: // filament out + if (getActualTemp_celsius(E0) < 220) { + filament_status = 0; + ChangePageOfTFT(PAGE_FILAMENT_HEAT); + } + else { + filament_status = 2; + injectCommands(F("G91")); + } + break; + + case 4: // stop + filament_status = 0; + break; + + } + + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1500; + + send_temperature_hotend(TXT_FILAMENT_TEMP); + + if (!isPrinting()) { + if (filament_status == 1) { + if (canMove(E0) && !commandsInQueue()) + injectCommands_P(AC_cmnd_manual_load_filament); + } + else if (filament_status == 2) { + if (canMove(E0) && !commandsInQueue()) + injectCommands_P(AC_cmnd_manual_unload_filament); + } + } + } + + #endif // HAS_EXTRUDERS + + void DgusTFT::page20() { // confirm + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page20 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + case 1: // return + ChangePageOfTFT(page_index_last); + break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1000; + } + + void DgusTFT::page21() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page21 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + + case 1: // return + ChangePageOfTFT(page_index_last); + break; + + case 2: break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1000; + } + + void DgusTFT::page22() { // print finish + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page22 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + + case 1: // OK to finish + TERN_(CASE_LIGHT_ENABLE, setCaseLightState(false)); + ChangePageOfTFT(PAGE_MAIN); + break; + + case 2: break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1000; + } + + void DgusTFT::page23() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page23 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + case 1: ChangePageOfTFT(page_index_last); break; // return + case 2: ChangePageOfTFT(page_index_last); break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1000; + } + + void DgusTFT::page24() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page24 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + case 1: ChangePageOfTFT(page_index_last); break; // return + case 2: ChangePageOfTFT(page_index_last); break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1000; + } + + void DgusTFT::page25() { // lack filament + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page25 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + + case 1: // return + #if ACDEBUG(AC_MARLIN) + DEBUG_PRINT_PRINTER_STATE(F("printer_state: "), printer_state); + DEBUG_PRINT_PAUSED_STATE(F("pause_state: "), pause_state); + #endif + if (AC_printer_printing == printer_state) + ChangePageOfTFT(PAGE_STATUS2); // show pause + else if (AC_printer_paused == printer_state) { + //injectCommands(F("M108")); + ChangePageOfTFT(PAGE_STATUS1); // show resume + } + break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1000; + } + + void DgusTFT::page26() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page26 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + case 1: ChangePageOfTFT(page_index_last); break; // return + case 2: break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1000; + } + + void DgusTFT::page27() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page27 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + + case 1: // print stop confirmed + if (isPrintingFromMedia()) { + printer_state = AC_printer_stopping; + stopPrint(); + message_index = 6; + ChangePageOfTFT(PAGE_MAIN); + } + else { + if (printer_state == AC_printer_resuming_from_power_outage) + injectCommands(F("M1000 C")); // Cancel recovery + printer_state = AC_printer_idle; + } + break; + + case 2: // return + if (AC_printer_printing == printer_state) + ChangePageOfTFT(PAGE_STATUS2); // show pause + else if (AC_printer_paused == printer_state) + ChangePageOfTFT(PAGE_STATUS1); // show print + break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1000; + } + + void DgusTFT::page28() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page28 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + case 1: ChangePageOfTFT(page_index_last); break; // return + case 2: break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1000; + } + + void DgusTFT::page29() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page29 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + + case 1: // return + TERN_(CASE_LIGHT_ENABLE, setCaseLightState(false)); + ChangePageOfTFT(PAGE_MAIN); + break; + + case 2: break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1000; + } + + void DgusTFT::page30() { // Auto heat filament + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page30 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + + case 1: // return + setTargetTemp_celsius(230, E0); + ChangePageOfTFT(PAGE_FILAMENT); + break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1000; + } + + void DgusTFT::page31() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page31 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + case 0: break; + case 1: break; // return + case 2: break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1000; + } + + void DgusTFT::page32() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page32 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1000; + } + + #if HAS_LEVELING + + void DgusTFT::page33() { + #if ACDEBUG(AC_ALL) + if (page_index_saved != page_index_now) { + DEBUG_ECHOLNPGM("page33 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + } + #endif + + switch (key_value) { + case 0: break; + + case 1: // auto leveling start + injectCommands(F("G28\nG29")); + printer_state = AC_printer_probing; + + // this will cause leveling->preheating->leveling + #if 0 + #if ENABLED(PREHEAT_BEFORE_LEVELING) + if (getTargetTemp_celsius(E0) < LEVELING_NOZZLE_TEMP + || getTargetTemp_celsius(BED) < LEVELING_BED_TEMP + ) { + setTargetTemp_celsius(LEVELING_NOZZLE_TEMP, E0); + setTargetTemp_celsius(LEVELING_BED_TEMP, BED); + ChangePageOfTFT(PAGE_CHS_PROBE_PREHEATING); + } + else + ChangePageOfTFT(PAGE_LEVELING); + + #else + ChangePageOfTFT(PAGE_LEVELING); + #endif + #endif + + ChangePageOfTFT(PAGE_LEVELING); + break; + + case 2: + ChangePageOfTFT(PAGE_PreLEVEL); + break; + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1500; + } + + void DgusTFT::page34() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page34 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + #if HAS_HOTEND || HAS_HEATED_BED + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1500; + + TERN_(HAS_HOTEND, send_temperature_hotend(TXT_MAIN_HOTEND)); + TERN_(HAS_HEATED_BED, send_temperature_bed(TXT_MAIN_BED)); + #endif + + if (pop_up_index == 25) { + pop_up_index = 100; + ChangePageOfTFT(PAGE_PreLEVEL); + } + } + + #endif // HAS_LEVELING + + void DgusTFT::page115() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page115 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + switch (key_value) { + + case 0: break; + case 1: ChangePageOfTFT(PAGE_PreLEVEL); break; + + case 2: { + injectCommands(F("M1024 S3")); // -1 + //char value[20] + //sprintf_P(value, PSTR("G1 Z%iF%i")); enqueue_and_echo_command_now(value); } + } break; + + case 3: injectCommands(F("M1024 S4")); break; // 1 + case 4: injectCommands(F("M1024 S1")); break; // -0.1 + case 5: injectCommands(F("M1024 S2")); break; // 0.1 + case 6: injectCommands(F("M1024 S0")); break; // prepare, move x y to center + case 7: injectCommands(F("M1024 S5")); break; // 0.1 + } + + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1000; + } + + void DgusTFT::page117() { // Page CHS Mute handler + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page117 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + switch (key_value) { + case 0: break; + + case 1: + ChangePageOfTFT(PAGE_MAIN); + store_changes(); + break; + + case 2: // language + toggle_language(); + goto_system_page(); + break; + + case 3: break; + + case 4: // audio + toggle_audio(); + break; + + case 5: // about + char str_ver[32]; + //sprintf(str_ver, "%04d-%02d-%02d %02d:%02d:%02d\n", BUILD_YEAR, BUILD_MONTH, BUILD_DAY, BUILD_HOUR, BUILD_MIN, BUILD_SEC); + sprintf(str_ver, MAIN_BOARD_FIRMWARE_VER); + SendTxtToTFT(str_ver, TXT_VERSION); + ChangePageOfTFT(PAGE_ABOUT); + break; + + case 6: + ChangePageOfTFT(PAGE_RECORD); + break; + } + } + + void DgusTFT::page124() { // first time into page 124 the feedrate percent is not set + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page124 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now); + page_index_saved = page_index_now; + key_value_saved = key_value; + //DEBUG_ECHOLNPGM("update feedrate percent"); + } + #endif + SendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_NOW); + } + + void DgusTFT::page125() { // first time into page 125 the feedrate percent is not set + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page125 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now); + page_index_saved = page_index_now; + key_value_saved = key_value; + //DEBUG_ECHOLNPGM("update feedrate percent"); + } + #endif + SendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_NOW); + } + + void DgusTFT::page170() { // ENG Mute handler + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page170 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + switch (key_value) { + case 0: break; + + case 1: + ChangePageOfTFT(PAGE_MAIN); + store_changes(); + break; + + case 2: // language + toggle_language(); + goto_system_page(); + break; + + case 3: break; + + case 4: // audio + toggle_audio(); + break; + + case 5: // about + char str_ver[32]; + //sprintf(str_ver, "%04d-%02d-%02d %02d:%02d:%02d\n", BUILD_YEAR, BUILD_MONTH, BUILD_DAY, BUILD_HOUR, BUILD_MIN, BUILD_SEC); + sprintf(str_ver, MAIN_BOARD_FIRMWARE_VER); + SendTxtToTFT(str_ver, TXT_VERSION); + ChangePageOfTFT(PAGE_ABOUT); + break; + + case 6: + ChangePageOfTFT(PAGE_RECORD); + break; + } + } + + #if ENABLED(POWER_LOSS_RECOVERY) + + void DgusTFT::page171() { // CHS power outage resume handler + #if ACDEBUG(AC_ALL) + if (page_index_saved != page_index_now) { + DEBUG_ECHOLNPGM("page171 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + } + #endif + #if ENABLED(LONG_FILENAME_HOST_SUPPORT) + char filename[64] = { '\0' }; + #endif + + switch (key_value) { + case 0: break; + + case 1: { // resume + ChangePageOfTFT(PAGE_OUTAGE_RECOVERY); + #if ENABLED(LONG_FILENAME_HOST_SUPPORT) + card.getLongPath(filename, recovery.info.sd_filename); + filename[17] = '\0'; + SendTxtToTFT(filename, TXT_OUTAGE_RECOVERY_FILE); + #else + SendTxtToTFT(recovery.info.sd_filename, TXT_OUTAGE_RECOVERY_FILE); + #endif + + char str_buf[20] = { '\0' }; + sprintf(str_buf, "%u", uint16_t(getFeedrate_percent())); + SendTxtToTFT(str_buf, TXT_PRINT_SPEED); + + sprintf(str_buf, "%u", uint16_t(getProgress_percent())); + SendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); + + ChangePageOfTFT(PAGE_STATUS2); // show pause + injectCommands(F("M355 S1\nM1000")); // case light on, home and start recovery + } break; + + case 2: // cancel + printer_state = AC_printer_idle; + ChangePageOfTFT(PAGE_MAIN); + injectCommands(F("M355 S0\nM1000 C")); // cancel recovery + break; + } + } + + void DgusTFT::page173() { // ENG power outage resume handler + #if ACDEBUG(AC_ALL) + if (page_index_saved != page_index_now) { + DEBUG_ECHOLNPGM("page173 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + } + #endif + #if ENABLED(LONG_FILENAME_HOST_SUPPORT) + char filename[64] = { '\0' }; + #endif + + switch (key_value) { + case 0: break; + + case 1: { // resume + ChangePageOfTFT(PAGE_OUTAGE_RECOVERY); + #if ENABLED(LONG_FILENAME_HOST_SUPPORT) + card.getLongPath(filename, recovery.info.sd_filename); + filename[17] = '\0'; + SendTxtToTFT(filename, TXT_OUTAGE_RECOVERY_FILE); + #else + SendTxtToTFT(recovery.info.sd_filename, TXT_OUTAGE_RECOVERY_FILE); + #endif + + char str_buf[20] = { '\0' }; + sprintf(str_buf, "%u", uint16_t(getFeedrate_percent())); + SendTxtToTFT(str_buf, TXT_PRINT_SPEED); + + sprintf(str_buf, "%u", uint16_t(getProgress_percent())); + SendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); + + ChangePageOfTFT(PAGE_STATUS2); // show pause + injectCommands(F("M355 S1\nM1000")); // case light on, home and start recovery + } break; + + case 2: // cancel + printer_state = AC_printer_idle; + ChangePageOfTFT(PAGE_MAIN); + injectCommands(F("M355 S0\nM1000 C")); // cancel recovery + break; + } + } + + #endif // POWER_LOSS_RECOVERY + + #if HAS_LEVELING + + void DgusTFT::page175() { // CHS probe preheating handler + #if ACDEBUG(AC_ALL) + if (page_index_saved != page_index_now) { + DEBUG_ECHOLNPGM("page175 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now); + page_index_saved = page_index_now; + } + #endif + + #if HAS_HOTEND || HAS_HEATED_BED + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1500; + + TERN_(HAS_HOTEND, send_temperature_hotend(TXT_MAIN_HOTEND)); + TERN_(HAS_HEATED_BED, send_temperature_bed(TXT_MAIN_BED)); + #endif + } + + void DgusTFT::page176() { // ENG probe preheating handler + #if ACDEBUG(AC_ALL) + if (page_index_saved != page_index_now) { + DEBUG_ECHOLNPGM("page176 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now); + page_index_saved = page_index_now; + } + #endif + + #if HAS_HOTEND || HAS_HEATED_BED + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1500; + + TERN_(HAS_HOTEND, send_temperature_hotend(TXT_MAIN_HOTEND)); + TERN_(HAS_HEATED_BED, send_temperature_bed(TXT_MAIN_BED)); + #endif + } + + #endif // HAS_LEVELING + + void DgusTFT::page177_to_198() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page177_to_198 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + switch (key_value) { + case 1: // return + #if ACDEBUG(AC_MARLIN) + //DEBUG_ECHOLNPGM("page_index_now: ", page_index_now); + //DEBUG_ECHOLNPGM("page_index_last: ", page_index_last); + //DEBUG_ECHOLNPGM("page_index_last_2: ", page_index_last_2); + #endif + + if ((WITHIN(page_index_now, PAGE_CHS_ABNORMAL_X_ENDSTOP, PAGE_CHS_ABNORMAL_Z_ENDSTOP)) + || (WITHIN(page_index_now, PAGE_ENG_ABNORMAL_X_ENDSTOP, PAGE_ENG_ABNORMAL_Z_ENDSTOP)) + ) { + if (lcd_info.language == ENG) { + if (page_index_last_2 > 120) page_index_last_2 -= 120; + if (page_index_last > 120) page_index_last -= 120; + } + + if (PAGE_STATUS1 == page_index_last_2 || PAGE_STATUS2 == page_index_last_2 || PAGE_PRINT_FINISH == page_index_last) + ChangePageOfTFT(PAGE_MAIN); + else + ChangePageOfTFT(page_index_last_2); + } + else { + if (lcd_info.language == ENG && page_index_last > 120) + page_index_last -= 120; + ChangePageOfTFT(page_index_last); + } + + onSurviveInKilled(); + stepper.disable_all_steppers(); + break; + + default: break; + } + } + + #if 0 + void DgusTFT::page178_to_181_190_to_193() { // temperature abnormal + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page178_to_181_190_to_193 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + switch (key_value) { + case 1: // return + SERIAL_ECHOLNPGM("page_index_now: ", page_index_now); + SERIAL_ECHOLNPGM("page_index_last: ", page_index_last); + SERIAL_ECHOLNPGM("page_index_last_2: ", page_index_last_2); + + if (isPrinting() || isPrintingPaused() || isPrintingFromMedia()) { + printer_state = AC_printer_stopping; + stopPrint(); + ChangePageOfTFT(PAGE_MAIN); + } + else + ChangePageOfTFT(page_index_last); + + onSurviveInKilled(); + break; + + default: break; + } + } + #endif + + void DgusTFT::page199_to_200() { + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page199_to_200 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now, " key: ", key_value); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + switch (key_value) { + case 1: // return + #if ACDEBUG(AC_MARLIN) + //DEBUG_ECHOLNPGM("page_index_now: ", page_index_now); + //DEBUG_ECHOLNPGM("page_index_last: ", page_index_last); + //DEBUG_ECHOLNPGM("page_index_last_2: ", page_index_last_2); + #endif + onSurviveInKilled(); + ChangePageOfTFT(PAGE_PreLEVEL); + break; + + default: break; + } + } + + inline void ProbeTare() { + #if PIN_EXISTS(AUTO_LEVEL_TX) + OUT_WRITE(AUTO_LEVEL_TX_PIN, LOW); + delay(300); + OUT_WRITE(AUTO_LEVEL_TX_PIN, HIGH); + delay(100); + #endif + } + + inline bool getProbeState() { return PROBE_TRIGGERED(); } + + void DgusTFT::page201() { // probe precheck + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page201 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + static millis_t probe_check_time = 0; + static millis_t temperature_time = 0; + static uint8_t probe_check_counter = 0; + static uint8_t probe_state_last = 0; + static bool probe_tare_flag = 0; + + if (!probe_tare_flag) { + ProbeTare(); + + delay(100); + + if (getProbeState()) { // triggered too early + probe_check_counter = 0; + probe_tare_flag = 0; + ChangePageOfTFT(PAGE_CHS_PROBE_PRECHECK_FAILED); + } + probe_tare_flag = 1; + } + + switch (key_value) { + case 1: // cancel + probe_check_counter = 0; + probe_tare_flag = 0; + ChangePageOfTFT(PAGE_PreLEVEL); + break; + + default: break; + } + + if (ELAPSED(millis(), probe_check_time)) { + probe_check_time = millis() + 300; + + if (!probe_state_last && getProbeState()) { + probe_check_counter = 0; + probe_tare_flag = 0; + ChangePageOfTFT(PAGE_CHS_PROBE_PRECHECK_OK); + } + + probe_state_last = getProbeState(); + + if (probe_check_counter++ >= 200) { // waiting for 1 min + probe_check_counter = 0; + probe_tare_flag = 0; + ChangePageOfTFT(PAGE_CHS_PROBE_PRECHECK_FAILED); + } + } + + if (ELAPSED(millis(), temperature_time)) { + temperature_time = millis() + 1500; + TERN_(HAS_HOTEND, send_temperature_hotend(TXT_MAIN_HOTEND)); + TERN_(HAS_HEATED_BED, send_temperature_bed(TXT_MAIN_BED)); + } + } + + void DgusTFT::page202() { // probe precheck ok + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page202 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + + //static millis_t flash_time = 0; + //static millis_t probe_check_counter = 0; + //static uint8_t probe_state_last = 0; + + delay(3000); + + injectCommands(F("G28\nG29")); + printer_state = AC_printer_probing; + ChangePageOfTFT(PAGE_LEVELING); + } + + void DgusTFT::page203() { // probe precheck failed + #if ACDEBUG(AC_ALL) + if ((page_index_saved != page_index_now) || (key_value_saved != key_value)) { + DEBUG_ECHOLNPGM("page203 page_index_last_2: ", page_index_last_2, " page_index_last: ", page_index_last, " page_index_now: ", page_index_now); + page_index_saved = page_index_now; + key_value_saved = key_value; + } + #endif + //static millis_t probe_check_counter = 0; + //static uint8_t probe_state_last = 0; + + #if HAS_HOTEND || HAS_HEATED_BED + static millis_t flash_time = 0; + const millis_t ms = millis(); + if (PENDING(ms, flash_time)) return; + flash_time = ms + 1500; + + TERN_(HAS_HOTEND, send_temperature_hotend(TXT_MAIN_HOTEND)); + TERN_(HAS_HEATED_BED, send_temperature_bed(TXT_MAIN_BED)); + #endif + } + + void DgusTFT::pop_up_manager() { + #if ACDEBUG(AC_ALL) + if (pop_up_index_saved != pop_up_index) { + DEBUG_ECHOLNPGM("pop_up_manager pop_up_index: ", pop_up_index); + pop_up_index_saved = pop_up_index; + } + #endif + + switch (pop_up_index) { + case 10: // T0 error + if (page_index_now != PAGE_ABNORMAL) + ChangePageOfTFT(PAGE_ABNORMAL); + pop_up_index = 100; + break; + + case 15: // filament lack + if (page_index_now != PAGE_FILAMENT_LACK) + ChangePageOfTFT(PAGE_FILAMENT_LACK); + pop_up_index = 100; + break; + + case 16: // stop wait + ChangePageOfTFT(PAGE_WAIT_STOP); + pop_up_index = 100; + break; + + case 18: + ChangePageOfTFT(PAGE_STATUS1); + pop_up_index = 100; + break; + + case 23: // + if (page_index_now != PAGE_FILAMENT_LACK) + ChangePageOfTFT(PAGE_FILAMENT_LACK); + pop_up_index = 100; + break; + + case 24: { // + uint32_t time = getProgress_seconds_elapsed() / 60; + char str_buf[20]; + sprintf(str_buf, "%s H ", utostr3(time / 60)); + sprintf(str_buf + strlen(str_buf), "%s M", utostr3(time % 60)); + SendTxtToTFT(str_buf, TXT_FINISH_TIME); + ChangePageOfTFT(PAGE_PRINT_FINISH); + //SendtoTFTLN(AC_msg_print_complete); // no idea why this causes a compile error + pop_up_index = 100; + } break; + + case 25: // LEVEL DONE + ChangePageOfTFT(PAGE_PreLEVEL); + pop_up_index = 100; + break; + } + } + + void DEBUG_PRINT_PAUSED_STATE(FSTR_P const msg, paused_state_t state) { + DEBUG_ECHOPGM(msg, state); + switch (state) { + case AC_paused_heater_timed_out: + DEBUG_ECHOLNPGM(" AC_paused_heater_timed_out"); + break; + case AC_paused_filament_lack: + DEBUG_ECHOLNPGM(" AC_paused_filament_lack"); + break; + case AC_paused_purging_filament: + DEBUG_ECHOLNPGM(" AC_paused_purging_filament"); + break; + case AC_paused_idle: + DEBUG_ECHOLNPGM(" AC_paused_idle"); + break; + } + } + +// routines to make the debug outputs human readable + + void DEBUG_PRINT_PRINTER_STATE(FSTR_P const msg, printer_state_t state) { + DEBUG_ECHOPGM(msg, state); + switch (state) { + case AC_printer_idle: + DEBUG_ECHOLNPGM(" AC_printer_idle"); + break; + case AC_printer_probing: + DEBUG_ECHOLNPGM(" AC_printer_probing"); + break; + case AC_printer_printing: + DEBUG_ECHOLNPGM(" AC_printer_printing"); + break; + case AC_printer_pausing: + DEBUG_ECHOLNPGM(" AC_printer_pausing"); + break; + case AC_printer_paused: + DEBUG_ECHOLNPGM(" AC_printer_paused"); + break; + case AC_printer_stopping: + DEBUG_ECHOLNPGM(" AC_printer_stopping"); + break; + case AC_printer_stopping_from_media_remove: + DEBUG_ECHOLNPGM(" AC_printer_stopping_from_media_remove"); + break; + case AC_printer_resuming_from_power_outage: + DEBUG_ECHOLNPGM(" AC_printer_resuming_from_power_outage"); + break; + } + } + + void DEBUG_PRINT_TIMER_EVENT(FSTR_P const msg, timer_event_t event) { + DEBUG_ECHOPGM(msg, event); + switch (event) { + case AC_timer_started: + DEBUG_ECHOLNPGM(" AC_timer_started"); + break; + case AC_timer_paused: + DEBUG_ECHOLNPGM(" AC_timer_paused"); + break; + case AC_timer_stopped: + DEBUG_ECHOLNPGM(" AC_timer_stopped"); + break; + } + } + + void DEBUG_PRINT_MEDIA_EVENT(FSTR_P const msg, media_event_t event) { + DEBUG_ECHOPGM(msg, event); + switch (event) { + case AC_media_inserted: + DEBUG_ECHOLNPGM(" AC_media_inserted"); + break; + case AC_media_removed: + DEBUG_ECHOLNPGM(" AC_media_removed"); + break; + case AC_media_error: + DEBUG_ECHOLNPGM(" AC_media_error"); + break; + } + } + +} // namespace + +#endif // ANYCUBIC_LCD_VYPER diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h new file mode 100644 index 0000000000..1903fa1183 --- /dev/null +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h @@ -0,0 +1,479 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * lcd/extui/anycubic_vyper/dgus_tft.h + */ + +#include "dgus_tft_defs.h" +#include "../../../inc/MarlinConfigPre.h" +#include "../ui_api.h" + +#define MAIN_BOARD_FIRMWARE_VER "V2.4.5" + +#define DATA_BUF_SIZE 64 + +/****************** PAGE INDEX***********************/ +#define PAGE_OFFSET 0 +#define PAGE_MAIN (1+PAGE_OFFSET) +#define PAGE_FILE (2+PAGE_OFFSET) +#define PAGE_STATUS1 (3+PAGE_OFFSET) // show resume +#define PAGE_STATUS2 (4+PAGE_OFFSET) // show pause +#define PAGE_ADJUST (5+PAGE_OFFSET) +#define PAGE_KEYBPARD (6+PAGE_OFFSET) +#define PAGE_TOOL (7+PAGE_OFFSET) +#define PAGE_MOVE (8+PAGE_OFFSET) +#define PAGE_TEMP (9+PAGE_OFFSET) +#define PAGE_SPEED (10+PAGE_OFFSET) +#define PAGE_SYSTEM_CHS_AUDIO_ON (11+PAGE_OFFSET) +#define PAGE_WIFI (12+PAGE_OFFSET) +#define PAGE_ABOUT (13+PAGE_OFFSET) +#define PAGE_RECORD (14+PAGE_OFFSET) +#define PAGE_PREPARE (15+PAGE_OFFSET) +#define PAGE_PreLEVEL (16+PAGE_OFFSET) +#define PAGE_LEVEL_ADVANCE (17+PAGE_OFFSET) +#define PAGE_PREHEAT (18+PAGE_OFFSET) +#define PAGE_FILAMENT (19+PAGE_OFFSET) + +#define PAGE_DONE (20+PAGE_OFFSET) +#define PAGE_ABNORMAL (21+PAGE_OFFSET) +#define PAGE_PRINT_FINISH (22+PAGE_OFFSET) +#define PAGE_WAIT_STOP (23+PAGE_OFFSET) +#define PAGE_FILAMENT_LACK (25+PAGE_OFFSET) +#define PAGE_FORBIT (26+PAGE_OFFSET) +#define PAGE_STOP_CONF (27+PAGE_OFFSET) +#define PAGE_NO_SD (29+PAGE_OFFSET) +#define PAGE_FILAMENT_HEAT (30+PAGE_OFFSET) +#define PAGE_WAIT_PAUSE (32+PAGE_OFFSET) + +#define PAGE_LEVEL_ENSURE (33+PAGE_OFFSET) +#define PAGE_LEVELING (34+PAGE_OFFSET) + +#define PAGE_AUTO_OFFSET (115+PAGE_OFFSET) + +#define PAGE_SYSTEM_CHS_AUDIO_OFF (117+PAGE_OFFSET) + +#define PAGE_SYSTEM_ENG_AUDIO_ON (131+PAGE_OFFSET) +#define PAGE_SYSTEM_ENG_AUDIO_OFF (170+PAGE_OFFSET) + +#define PAGE_OUTAGE_RECOVERY (171+PAGE_OFFSET) +#define PAGE_ENG_OUTAGE_RECOVERY (173+PAGE_OFFSET) + +#define PAGE_CHS_PROBE_PREHEATING (176+PAGE_OFFSET) +#define PAGE_ENG_PROBE_PREHEATING (175+PAGE_OFFSET) + +#define PAGE_CHS_HOMING (177+PAGE_OFFSET) +#define PAGE_CHS_ABNORMAL_BED_HEATER (178+PAGE_OFFSET) +#define PAGE_CHS_ABNORMAL_BED_NTC (179+PAGE_OFFSET) +#define PAGE_CHS_ABNORMAL_HOTEND_HEATER (180+PAGE_OFFSET) +#define PAGE_CHS_ABNORMAL_HOTEND_NTC (181+PAGE_OFFSET) +#define PAGE_CHS_ABNORMAL_ENDSTOP (182+PAGE_OFFSET) +#define PAGE_CHS_ABNORMAL_X_ENDSTOP (182+PAGE_OFFSET) +#define PAGE_CHS_ABNORMAL_Y_ENDSTOP (183+PAGE_OFFSET) +#define PAGE_CHS_ABNORMAL_Z_ENDSTOP (184+PAGE_OFFSET) +#define PAGE_CHS_ABNORMAL_ZL_ENDSTOP (185+PAGE_OFFSET) +#define PAGE_CHS_ABNORMAL_ZR_ENDSTOP (186+PAGE_OFFSET) +#define PAGE_CHS_ABNORMAL_LEVELING_SENSOR (187+PAGE_OFFSET) +#define PAGE_CHS_LEVELING_FAILED (188+PAGE_OFFSET) + +#define PAGE_ENG_HOMING (189+PAGE_OFFSET) +#define PAGE_ENG_ABNORMAL_BED_HEATER (190+PAGE_OFFSET) +#define PAGE_ENG_ABNORMAL_BED_NTC (191+PAGE_OFFSET) +#define PAGE_ENG_ABNORMAL_HOTEND_HEATER (192+PAGE_OFFSET) +#define PAGE_ENG_ABNORMAL_HOTEND_NTC (193+PAGE_OFFSET) +#define PAGE_ENG_ABNORMAL_ENDSTOP (194+PAGE_OFFSET) +#define PAGE_ENG_ABNORMAL_X_ENDSTOP (194+PAGE_OFFSET) +#define PAGE_ENG_ABNORMAL_Y_ENDSTOP (195+PAGE_OFFSET) +#define PAGE_ENG_ABNORMAL_Z_ENDSTOP (196+PAGE_OFFSET) +#define PAGE_ENG_ABNORMAL_ZL_ENDSTOP (197+PAGE_OFFSET) +#define PAGE_ENG_ABNORMAL_ZR_ENDSTOP (198+PAGE_OFFSET) +#define PAGE_ENG_ABNORMAL_LEVELING_SENSOR (199+PAGE_OFFSET) +#define PAGE_ENG_LEVELING_FAILED (200+PAGE_OFFSET) + +#define PAGE_CHS_PROBE_PRECHECK (201+PAGE_OFFSET) +#define PAGE_CHS_PROBE_PRECHECK_OK (202+PAGE_OFFSET) +#define PAGE_CHS_PROBE_PRECHECK_FAILED (203+PAGE_OFFSET) + +#define PAGE_ENG_PROBE_PRECHECK (204+PAGE_OFFSET) +#define PAGE_ENG_PROBE_PRECHECK_OK (205+PAGE_OFFSET) +#define PAGE_ENG_PROBE_PRECHECK_FAILED (206+PAGE_OFFSET) + +/****************** Lcd control **************************/ +#define REG_LCD_READY 0x0014 + +/****************** TXT **************************/ + +// MAIN PAGE TXT +#define TXT_MAIN_BED 0x2000 +#define TXT_MAIN_HOTEND 0x2030 +#define TXT_MAIN_MESSAGE 0x2060 + +// FILE TXT +#define TXT_FILE_0 (0x2000+3*0x30) +#define TXT_DESCRIPT_0 0x5000 // DESCRIBE ADDRESS +#define TXT_FILE_1 (0x2000+4*0x30) +#define TXT_DESCRIPT_1 0x5030 +#define TXT_FILE_2 (0x2000+5*0x30) +#define TXT_DESCRIPT_2 0x5060 +#define TXT_FILE_3 (0x2000+6*0x30) +#define TXT_DESCRIPT_3 0x5090 +#define TXT_FILE_4 (0x2000+7*0x30) +#define TXT_DESCRIPT_4 0x50C0 + +// PRINT TXT +#define TXT_PRINT_NAME 0x2000+8*0x30 +#define TXT_PRINT_SPEED 0x2000+9*0x30 +#define TXT_PRINT_TIME 0x2000+10*0x30 +#define TXT_PRINT_PROGRESS 0x2000+11*0x30 +#define TXT_PRINT_HOTEND 0x2000+12*0x30 +#define TXT_PRINT_BED 0x2000+13*0x30 + +// PRINT ADJUST TXT + +#define TXT_ADJUST_HOTEND (0x2000+14*0x30) +#define TXT_ADJUST_BED (0x2000+15*0x30) +#define TXT_ADJUST_SPEED (0x2000+16*0x30) + +// TEMP SET TXT + +#define TXT_BED_NOW (0x2000+17*0x30) +#define TXT_BED_TARGET (0x2000+18*0x30) +#define TXT_HOTEND_NOW (0x2000+19*0x30) +#define TXT_HOTEND_TARGET (0x2000+20*0x30) + +// SPEED SET TXT +#define TXT_FAN_SPEED_NOW (0x2000+21*0x30) +#define TXT_FAN_SPEED_TARGET (0x2000+22*0x30) +#define TXT_PRINT_SPEED_NOW (0x2000+23*0x30) +#define TXT_PRINT_SPEED_TARGET (0x2000+24*0x30) + +// ABOUT TXT +#define TXT_ABOUT (0x2000+25*0x30) + +// RECORT TXT +#define TXT_RECORT_0 (0x2000+26*0x30) +#define TXT_RECORT_1 (0x2000+27*0x30) +#define TXT_RECORT_2 (0x2000+28*0x30) +#define TXT_RECORT_3 (0x2000+29*0x30) +#define TXT_RECORT_4 (0x2000+30*0x30) +#define TXT_RECORT_5 (0x2000+31*0x30) + +// ADVANCE LEVEL TXT +#define TXT_LEVEL_OFFSET (0x2000+32*0x30) + +// FILAMENT TXT +#define TXT_FILAMENT_TEMP (0x2000+33*0x30) + +#define TXT_FINISH_TIME (0x2000+34*0x30) +#define TXT_VERSION (0x2000+35*0x30) +#define TXT_PREHEAT_HOTEND (0x2000+36*0x30) +#define TXT_PREHEAT_BED (0x2000+37*0x30) + +#define TXT_OUTAGE_RECOVERY_FILE 0x2180 + +#define ADDRESS_SYSTEM_AUDIO 0x0080 + +#define ADDRESS_MOVE_DISTANCE 0x4300 +#define ADDRESS_SYSTEM_LED_STATUS 0x4500 +#define ADDRESS_PRINT_SETTING_LED_STATUS 0x4550 + +/*********************** KEY VALUE **************************/ +#define KEY_ADDRESS 0x1000 + +// MAIN PAGE KEY + +#define KEY_MAIN_TO_FILE 1 +#define KEY_MAIN_TO_TOOL 2 +#define KEY_MAIN_TO_PREPARE 3 +#define KEY_MAIN_TO_SYSTEM 4 + +// FILE PAGE KEY + +#define KEY_FILE_TO_MAIN 1 +#define KEY_PRINT 6 +#define KEY_RESUME 5 +#define KEY_PgUp 2 +#define KEY_pgDn 3 +#define KEY_FLASH 4 +#define KEY_FILE0 7 +#define KEY_FILE1 8 +#define KEY_FILE2 9 +#define KEY_FILE3 10 +#define KEY_FILE4 11 + +#define KEY_CONTINUE 2 +#define KEY_PAUSE 2 +#define KEY_STOP 3 +#define KEY_TO_ADJUST 4 +#define KEY_ADJUST_TO_PRINT 1 +#define KEY_ADJUST_ENSURE 7 +#define KEY_CHECK_DOOR 2 +#define KEY_DONE_OFF 3 + +// TOOL PAGE KEY + +#define KEY_TOOL_TO_MAIN 1 +#define KEY_TOOL_TO_MOVE 2 +#define KEY_TOOL_TO_TEMP 3 +#define KEY_TOOL_TO_SPEED 4 +#define KEY_TOOL_LIGHT 5 + +#define KEY_MOVE_TO_TOLL 1// move page +#define KEY_MOVE_X 2 +#define KEY_01 3 +#define KEY_MOVE_NX 4 +#define KEY_HOME_X 5 +#define KEY_MOVE_Y 6 +#define KEY_1 7 +#define KEY_MOVE_NY 8 +#define KEY_HOME_Y 9 +#define KEY_MOVE_Z 10 +#define KEY_10 11 +#define KEY_MOVE_NZ 12 +#define KEY_HOME_Z 13 +#define KEY_SPEED_LOW 14 +#define KEY_SPEED_MIDDLE 15 +#define KEY_SPEED_HIGHT 16 +#define KEY_HOME_ALL 17 + +#define KEY_TEMP_TO_TOOL 1 //Temperature setting page +#define KEY_BED_ADD 2 +#define KEY_BED_DEC 3 +#define KEY_HOTEND_ADD 4 +#define KEY_HOTEND_DEC 5 +#define KEY_COOL 6 +#define KEY_TEMP_ENSURE 7 + +#define KEY_SPEED_TO_TOOL 1 //speed setting page +#define KEY_FAN_SPEED_ADD 2 +#define KEY_FAN_SPEED_DEC 3 +#define KEY_PRINT_SPEED_ADD 4 +#define KEY_PRINT_SPEED_DEC 5 +#define KEY_SPEED_ENSURE 6 + +#define KEY_PREPARE_TO_MAIN 1 //PREPARE PAGE TO MAIN +#define KEY_PREPARE_TO_PreLEVE 2 +#define KEY_PreLEVE_TO_PREPARE 1 +#define KEY_PreLEVE_TO_LEVELING 2 +#define KEY_PreLEVE_TO_ADVANCE 3 +#define KEY_ADVANCE_TO_PreLEVE 1 +#define KEY_LEVEL_ADD 3 +#define KEY_LEVEL_DEC 2 +#define KEY_LEVEL_ENSURE 4 + + +#define KEY_PREPARE_TO_PREHEAT 3 +#define KEY_PREHEAT_TO_PREPARE 1 +#define KEY_PREHEAT_PLA 2 +#define KEY_PREHEAT_ABS 3 + +#define KEY_PREPARE_TO_FILAMENT 4 +#define KEY_FILAMENT_TO_PREPARE 1 +#define KEY_RETREAT 3 +#define KEY_FORWARD 2 +#define KEY_FILAMENT_STOP 4 + +// SYSTEM PAGE KEY + +#define KEY_SYS_TO_MAIN 1 +#define KEY_LANGUAGE 2 +#define KEY_SYS_TO_WIFI 3 +#define KEY_WIFI_TO_SYS 1 + +#define KEY_BEEP 4 +#define KEY_SYS_TO_ABOUT 5 +#define KEY_ABOUT_TO_SYS 1 + +#define KEY_SYS_TO_RECORD 6 +#define KEY_RECORD_TO_SYS 1 +#define KEY_RECORD_PaUp 2 +#define KEY_RECORD_PaDn 3 +#define KEY_RECORD_FLASH 4 + +#define COLOR_RED 0xF800 +#define COLOR_BLUE 0x0210 + +namespace Anycubic { + + enum language_t : uint8_t { ENG, CHS }; + + class DgusTFT; + extern DgusTFT ui; + + typedef struct _lcd_info_t { + language_t language; + bool audio_on; + } lcd_info_t; + + class DgusTFT { + static printer_state_t printer_state; + static paused_state_t pause_state; + #if HAS_HOTEND + static heater_state_t hotend_state; + #endif + #if HAS_HEATED_BED + static heater_state_t hotbed_state; + #endif + static char panel_command[MAX_CMND_LEN]; + static uint8_t command_len; + static char selectedfile[MAX_PATH_LEN]; + static file_menu_t file_menu; + static bool data_received; + static uint8_t data_buf[DATA_BUF_SIZE]; + static uint8_t data_index; + static uint16_t page_index_last, page_index_last_2; + static uint8_t message_index; + static uint8_t pop_up_index; + static uint32_t key_value; + static uint8_t lcd_txtbox_index; + static uint8_t lcd_txtbox_page; + static int16_t feedrate_back; + static language_t ui_language; + + public: + DgusTFT(); + + static lcd_info_t lcd_info, lcd_info_back; + static uint16_t page_index_now; + + static void Startup(); + static void ParamInit(); + static void IdleLoop(); + static void PrinterKilled(FSTR_P,FSTR_P); + static void MediaEvent(media_event_t); + static void TimerEvent(timer_event_t); + static void FilamentRunout(); + static void ConfirmationRequest(const char * const); + static void StatusChange(const char * const); + static void PowerLoss(); + static void PowerLossRecovery(); + static void HomingStart(); + static void HomingComplete(); + + static void set_descript_color(const uint16_t color, const uint8_t index=lcd_txtbox_index); + static void set_language(language_t); + static void toggle_language(); + static void goto_system_page(); + static void toggle_audio(); + static void store_changes(); + + #if HAS_HOTEND + static void send_temperature_hotend(uint32_t addr); + #endif + #if HAS_HEATED_BED + static void send_temperature_bed(uint32_t addr); + #endif + + typedef void (*p_fun)(); + static void page1(); + static void page2(); + static void page3(); + static void page4(); + static void page5(); + static void page6(); + static void page7(); // tool + static void page8(); + static void page9(); + static void page10(); // fan and print speed + static void page11(); // system + static void page12(); + static void page13(); + static void page14(); + static void page15(); + static void page16(); + static void page17(); + static void page18(); + static void page19(); + static void page20(); + static void page21(); + static void page22(); + static void page23(); + static void page24(); + static void page25(); + static void page26(); + static void page27(); + static void page28(); + static void page29(); + static void page30(); + static void page31(); + static void page32(); + + #if HAS_LEVELING + static void page33(); + #endif + static void page34(); + static void page115(); + static void page117(); // CHS Mute handler + static void page124(); + static void page125(); + static void page170(); // ENG Mute handler + + #if ENABLED(POWER_LOSS_RECOVERY) + static void page171(); // CHS power outage resume handler + static void page173(); // ENG power outage resume handler + #endif + #if HAS_LEVELING + static void page175(); // ENG probe preheating handler + static void page176(); // CHS probe preheating handler + #endif + + static void page177_to_198(); + //static void page178_to_181_190_to_193(); + static void page199_to_200(); + + static void page201(); + static void page202(); + static void page203(); + static void page204(); + static void page205(); + static void page206(); + + static void pop_up_manager(); + + static void SendtoTFT(FSTR_P const=nullptr); + static void SendtoTFTLN(FSTR_P const=nullptr); + static bool ReadTFTCommand(); + static int8_t Findcmndpos(const char *, const char); + static void CheckHeaters(); + static void SendFileList(int8_t); + static void SelectFile(); + static void ProcessPanelRequest(); + static void PanelInfo(uint8_t); + static void PanelAction(uint8_t); + static void PanelProcess(uint8_t); + + static void SendValueToTFT(const uint16_t value, const uint16_t address); + static void RequestValueFromTFT(const uint16_t address); + static void SendTxtToTFT(const char *pdata, const uint16_t address); + static void SendColorToTFT(const uint16_t color, const uint16_t address); + static void SendReadNumOfTxtToTFT(const uint8_t number, const uint16_t address); + static void ChangePageOfTFT(const uint16_t page_index, const bool no_send=false); + static void FakeChangePageOfTFT(const uint16_t page_index); + static void LcdAudioSet(const bool audio_on); + + private: + + }; + + extern DgusTFT Dgus; +} diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h new file mode 100644 index 0000000000..dc187690e3 --- /dev/null +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h @@ -0,0 +1,157 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/** + * lcd/extui/anycubic_vyper/dgus_defs.h + */ + +#pragma once +#include "../../../inc/MarlinConfigPre.h" + +#define ACDEBUGLEVEL 0 // 0: off, 255: all levels enabled + +#if ACDEBUGLEVEL + // Bit-masks for selective debug: + enum ACDebugMask : uint8_t { + AC_INFO = 1, + AC_ACTION = 2, + AC_FILE = 4, + AC_PANEL = 8, + AC_MARLIN = 16, + AC_SOME = 32, + AC_ALL = 64 + }; + #define ACDEBUG(mask) ( ((mask) & ACDEBUGLEVEL) == mask ) // Debug flag macro +#else + #define ACDEBUG(mask) false +#endif + +#define TFTSer LCD_SERIAL // Serial interface for TFT panel now uses marlinserial +#define MAX_FOLDER_DEPTH 4 // Limit folder depth TFT has a limit for the file path +#define MAX_CMND_LEN 16 * MAX_FOLDER_DEPTH // Maximum Length for a Panel command +#define MAX_PATH_LEN 16 * MAX_FOLDER_DEPTH // Maximum number of characters in a SD file path + +#define AC_HEATER_FAULT_VALIDATION_TIME 5 // number of 1/2 second loops before signalling a heater fault +#define AC_LOWEST_MESHPOINT_VAL Z_PROBE_LOW_POINT // The lowest value you can set for a single mesh point offset + + // TFT panel commands +#define AC_msg_sd_card_inserted F("J00") +#define AC_msg_sd_card_removed F("J01") +#define AC_msg_no_sd_card F("J02") +#define AC_msg_usb_connected F("J03") +#define AC_msg_print_from_sd_card F("J04") +#define AC_msg_pause F("J05") +#define AC_msg_nozzle_heating F("J06") +#define AC_msg_nozzle_heating_done F("J07") +#define AC_msg_bed_heating F("J08") +#define AC_msg_bed_heating_done F("J09") +#define AC_msg_nozzle_temp_abnormal F("J10") +#define AC_msg_kill_lcd F("J11") +#define AC_msg_ready F("J12") +#define AC_msg_low_nozzle_temp F("J13") +#define AC_msg_print_complete F("J14") +#define AC_msg_filament_out_alert F("J15") +#define AC_msg_stop F("J16") +#define AC_msg_main_board_has_reset F("J17") +#define AC_msg_paused F("J18") +#define AC_msg_j19_unknown F("J19") +#define AC_msg_sd_file_open_success F("J20") +#define AC_msg_sd_file_open_failed F("J21") +#define AC_msg_level_monitor_finished F("J22") +#define AC_msg_filament_out_block F("J23") +#define AC_msg_probing_not_allowed F("J24") +#define AC_msg_probing_complete F("J25") +#define AC_msg_start_probing F("J26") +#define AC_msg_version F("J27") +#define AC_msg_bed_temp_abnormal F("J28") + +#define MARLIN_msg_probing_point PSTR("Probing Point ") +#define MARLIN_msg_start_probing PSTR("Probing Point 1/25") +#define MARLIN_msg_probing_failed PSTR("Probing Failed") +#define MARLIN_msg_ready PSTR(" Ready.") +#define MARLIN_msg_print_paused PSTR("Print Paused") +#define MARLIN_msg_print_aborted PSTR("Print Aborted") +#define MARLIN_msg_extruder_heating PSTR("E Heating...") +#define MARLIN_msg_bed_heating PSTR("Bed Heating...") + +#define MARLIN_msg_probe_preheat_start PSTR("Probe preheat start") +#define MARLIN_msg_probe_preheat_stop PSTR("Probe preheat stop") + + +#define MARLIN_msg_nozzle_parked PSTR("Nozzle Parked") +#define MARLIN_msg_heater_timeout PSTR("Heater Timeout") +#define MARLIN_msg_reheating PSTR("Reheating...") +#define MARLIN_msg_reheat_done PSTR("Reheat finished.") +#define MARLIN_msg_filament_purging PSTR("Filament Purging...") +#define MARLIN_msg_media_removed PSTR("Media Removed") +#define MARLIN_msg_special_pause PSTR("PB") +#define AC_cmnd_auto_unload_filament PSTR("M701") // Use Marlin unload routine +#define AC_cmnd_auto_load_filament PSTR("M702 M0 PB") // Use Marlin load routing then pause for user to clean nozzle + +#define AC_cmnd_manual_load_filament PSTR("M83\nG1 E50 F700\nM82") // replace the manual panel commands with something a little faster +#define AC_cmnd_manual_unload_filament PSTR("M83\nG1 E-50 F1200\nM82") +#define AC_cmnd_enable_levelling PSTR("M420 S1 V1") +#define AC_cmnd_power_loss_recovery PSTR("G28 R5 X Y\nG28 Z") // Lift, home X and Y then home Z when in 'safe' position + +namespace Anycubic { + enum heater_state_t : uint8_t { + AC_heater_off, + AC_heater_temp_set, + AC_heater_temp_reached + }; + + enum paused_state_t : uint8_t { + AC_paused_heater_timed_out, + AC_paused_filament_lack, + AC_paused_purging_filament, + AC_paused_idle + }; + + enum printer_state_t : uint8_t { + AC_printer_idle, + AC_printer_probing, + AC_printer_printing, + AC_printer_pausing, + AC_printer_paused, + AC_printer_stopping, + AC_printer_stopping_from_media_remove, + AC_printer_resuming_from_power_outage + }; + + enum timer_event_t : uint8_t { + AC_timer_started, + AC_timer_paused, + AC_timer_stopped + }; + + enum media_event_t : uint8_t { + AC_media_inserted, + AC_media_removed, + AC_media_error + }; + enum file_menu_t : uint8_t { + AC_menu_file, + AC_menu_command, + AC_menu_change_to_file, + AC_menu_change_to_command + }; +} diff --git a/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp b/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp new file mode 100644 index 0000000000..142f438861 --- /dev/null +++ b/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp @@ -0,0 +1,152 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/** + * lcd/extui/anycubic_vyper/vyper_extui.cpp + * + * Anycubic Dgus TFT support for Marlin + */ + +#include "../../../inc/MarlinConfigPre.h" + +#if ENABLED(ANYCUBIC_LCD_VYPER) + +#include "../ui_api.h" +#include "dgus_tft.h" + +using namespace Anycubic; + +namespace ExtUI { + + void onStartup() { Dgus.Startup(); } + + void onIdle() { Dgus.IdleLoop(); } + + void onPrinterKilled(FSTR_P const error, FSTR_P const component) { + Dgus.PrinterKilled(error, component); + } + + void onMediaInserted() { Dgus.MediaEvent(AC_media_inserted); } + void onMediaError() { Dgus.MediaEvent(AC_media_error); } + void onMediaRemoved() { Dgus.MediaEvent(AC_media_removed); } + + void onPlayTone(const uint16_t frequency, const uint16_t duration) { + #if ENABLED(SPEAKER) + ::tone(BEEPER_PIN, frequency, duration); + #endif + } + + void onPrintTimerStarted() { Dgus.TimerEvent(AC_timer_started); } + void onPrintTimerPaused() { Dgus.TimerEvent(AC_timer_paused); } + void onPrintTimerStopped() { Dgus.TimerEvent(AC_timer_stopped); } + void onPrintDone() {} + + void onFilamentRunout(const extruder_t) { Dgus.FilamentRunout(); } + + void onUserConfirmRequired(const char * const msg) { Dgus.ConfirmationRequest(msg); } + void onStatusChanged(const char * const msg) { Dgus.StatusChange(msg); } + + void onHomingStart() { Dgus.HomingStart(); } + void onHomingDone() { Dgus.HomingComplete(); } + + void onFactoryReset() { + Dgus.page_index_now = 121; + Dgus.lcd_info.audio_on = DISABLED(SPEAKER); + } + + void onStoreSettings(char *buff) { + // Called when saving to EEPROM (i.e. M500). If the ExtUI needs + // permanent data to be stored, it can write up to eeprom_data_size bytes + // into buff. + + static_assert(sizeof(Dgus.lcd_info) <= ExtUI::eeprom_data_size); + memcpy(buff, &Dgus.lcd_info, sizeof(Dgus.lcd_info)); + } + + void onLoadSettings(const char *buff) { + // Called while loading settings from EEPROM. If the ExtUI + // needs to retrieve data, it should copy up to eeprom_data_size bytes + // from buff + + static_assert(sizeof(Dgus.lcd_info) <= ExtUI::eeprom_data_size); + memcpy(&Dgus.lcd_info, buff, sizeof(Dgus.lcd_info)); + memcpy(&Dgus.lcd_info_back, buff, sizeof(Dgus.lcd_info_back)); + } + + void onPostprocessSettings() { + // Called after loading or resetting stored settings + Dgus.ParamInit(); + Dgus.PowerLoss(); + } + + void onSettingsStored(const bool success) { + // Called after the entire EEPROM has been written, + // whether successful or not. + } + + void onSettingsLoaded(const bool success) { + // Called after the entire EEPROM has been read, + // whether successful or not. + } + + #if HAS_MESH + void onLevelingStart() {} + void onLevelingDone() {} + + void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval) { + // Called when any mesh points are updated + //SERIAL_ECHOLNPGM("onMeshUpdate() x:", xpos, " y:", ypos, " z:", zval); + } + + void onMeshUpdate(const int8_t xpos, const int8_t ypos, const probe_state_t state) { + // Called to indicate a special condition + //SERIAL_ECHOLNPGM("onMeshUpdate() x:", xpos, " y:", ypos, " state:", state); + } + #endif + + #if ENABLED(POWER_LOSS_RECOVERY) + // Called when power-loss is enabled/disabled + void onSetPowerLoss(const bool) { Dgus.PowerLoss(); } + // Called when power-loss state is detected + void onPowerLoss() { /* handled internally */ } + // Called on resume from power-loss + void onPowerLossResume() { Dgus.PowerLossRecovery(); } + #endif + + #if HAS_PID_HEATING + void onPidTuning(const result_t rst) { + // Called for temperature PID tuning result + switch (rst) { + case PID_STARTED: break; + case PID_BAD_HEATER_ID: break; + case PID_TEMP_TOO_HIGH: break; + case PID_TUNING_TIMEOUT: break; + case PID_DONE: break; + } + } + #endif + + void onSteppersDisabled() {} + void onSteppersEnabled() {} +} + +#endif // ANYCUBIC_LCD_VYPER diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp index d92517578f..1f40f2a037 100644 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp +++ b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp @@ -1580,7 +1580,7 @@ namespace ExtUI { else if (recdat.data[0] == 4) { // Page Up injectCommands(F("M22\nM21")); } - else if (recdat.data[0] == 0) { // return to main page + else if (recdat.data[0] == 0) { // return to main page InforShowStatus = true; TPShowStatus = false; } diff --git a/Marlin/src/lcd/extui/ui_api.cpp b/Marlin/src/lcd/extui/ui_api.cpp index 1075816c43..5c27b345c4 100644 --- a/Marlin/src/lcd/extui/ui_api.cpp +++ b/Marlin/src/lcd/extui/ui_api.cpp @@ -112,9 +112,9 @@ namespace ExtUI { static struct { - uint8_t printer_killed : 1; + bool printer_killed : 1; #if ENABLED(JOYSTICK) - uint8_t jogging : 1; + bool jogging : 1; #endif } flags; @@ -926,7 +926,7 @@ namespace ExtUI { void setMeshPoint(const xy_uint8_t &pos, const_float_t zoff) { if (WITHIN(pos.x, 0, (GRID_MAX_POINTS_X) - 1) && WITHIN(pos.y, 0, (GRID_MAX_POINTS_Y) - 1)) { bedlevel.z_values[pos.x][pos.y] = zoff; - TERN_(ABL_BILINEAR_SUBDIVISION, bed_level_virt_interpolate()); + TERN_(ABL_BILINEAR_SUBDIVISION, bedlevel.refresh_bed_level()); } } @@ -1127,6 +1127,13 @@ namespace ExtUI { #endif } + void onSurviveInKilled() { + thermalManager.disable_all_heaters(); + flags.printer_killed = 0; + marlin_state = MF_RUNNING; + //SERIAL_ECHOLNPGM("survived at: ", millis()); + } + FileList::FileList() { refresh(); } void FileList::refresh() { num_files = 0xFFFF; } diff --git a/Marlin/src/lcd/extui/ui_api.h b/Marlin/src/lcd/extui/ui_api.h index 98441ccdd9..d9594bace6 100644 --- a/Marlin/src/lcd/extui/ui_api.h +++ b/Marlin/src/lcd/extui/ui_api.h @@ -45,6 +45,7 @@ #include "../../inc/MarlinConfig.h" #include "../marlinui.h" #include "../../gcode/gcode.h" + #if M600_PURGE_MORE_RESUMABLE #include "../../feature/pause.h" #endif @@ -406,6 +407,7 @@ namespace ExtUI { void onMediaRemoved(); void onPlayTone(const uint16_t frequency, const uint16_t duration); void onPrinterKilled(FSTR_P const error, FSTR_P const component); + void onSurviveInKilled(); void onPrintTimerStarted(); void onPrintTimerPaused(); void onPrintTimerStopped(); diff --git a/Marlin/src/lcd/tft/ui_320x240.cpp b/Marlin/src/lcd/tft/ui_320x240.cpp index e8bec7e1a7..11e4730239 100644 --- a/Marlin/src/lcd/tft/ui_320x240.cpp +++ b/Marlin/src/lcd/tft/ui_320x240.cpp @@ -446,7 +446,7 @@ void MarlinUI::draw_status_screen() { #else 256, 130 #endif - , menu_main, imgSettings + , menu_main, imgSettings ); #if ENABLED(SDSUPPORT) const bool cm = card.isMounted(), pa = printingIsActive(); diff --git a/Marlin/src/libs/buzzer.h b/Marlin/src/libs/buzzer.h index cd8e17d004..aa4d48ae5d 100644 --- a/Marlin/src/libs/buzzer.h +++ b/Marlin/src/libs/buzzer.h @@ -27,7 +27,9 @@ #include "circularqueue.h" - #define TONE_QUEUE_LENGTH 4 + #ifndef TONE_QUEUE_LENGTH + #define TONE_QUEUE_LENGTH 4 + #endif /** * @brief Tone structure diff --git a/Marlin/src/libs/numtostr.cpp b/Marlin/src/libs/numtostr.cpp index 4cc40a96d1..2938229a7a 100644 --- a/Marlin/src/libs/numtostr.cpp +++ b/Marlin/src/libs/numtostr.cpp @@ -423,3 +423,34 @@ const char* ftostr52sp(const_float_t f) { } return &conv[1]; } + +// Convert unsigned 16bit int to string 1, 12, 123 format, capped at 999 +const char* utostr3(const uint16_t x) { + return i16tostr3left(_MIN(x, 999U)); +} + +// Convert signed float to space-padded string with 1.23, 12.34, 123.45 format +const char* ftostr52sprj(const_float_t f) { + long i = INTFLOAT(f, 2); + LIMIT(i, -99999, 99999); // cap to -999.99 - 999.99 range + if (WITHIN(i, -999, 999)) { // -9.99 - 9.99 range + conv[1] = conv[2] = ' '; // default to ' ' for smaller numbers + conv[3] = MINUSOR(i, ' '); + } + else if (WITHIN(i, -9999, 9999)) { // -99.99 - 99.99 range + conv[1] = ' '; + conv[2] = MINUSOR(i, ' '); + conv[3] = DIGIMOD(i, 1000); + } + else { // -999.99 - 999.99 range + conv[1] = MINUSOR(i, ' '); + conv[2] = DIGIMOD(i, 10000); + conv[3] = DIGIMOD(i, 1000); + } + conv[4] = DIGIMOD(i, 100); // always convert last 3 digits + conv[5] = '.'; + conv[6] = DIGIMOD(i, 10); + conv[7] = DIGIMOD(i, 1); + + return &conv[1]; +} diff --git a/Marlin/src/libs/numtostr.h b/Marlin/src/libs/numtostr.h index 0c8ce0f79a..31e8db0048 100644 --- a/Marlin/src/libs/numtostr.h +++ b/Marlin/src/libs/numtostr.h @@ -129,3 +129,9 @@ FORCE_INLINE const char* ftostr3(const_float_t x) { return i16tostr3rj(int16_t(x // Convert float to rj string with 1234, _123, -123, __12, _-12, ___1, or __-1 format FORCE_INLINE const char* ftostr4sign(const_float_t x) { return i16tostr4signrj(int16_t(x + (x < 0 ? -0.5f : 0.5f))); } #endif + +// Convert unsigned int to string 1, 12, 123 format, capped at 999 +const char* utostr3(const uint16_t x); + +// Convert signed float to space-padded string with 1.23, 12.34, 123.45 format +const char* ftostr52sprj(const_float_t f); diff --git a/Marlin/src/pins/gd32f1/env_validate.h b/Marlin/src/pins/gd32f1/env_validate.h new file mode 100644 index 0000000000..4b07cce4e5 --- /dev/null +++ b/Marlin/src/pins/gd32f1/env_validate.h @@ -0,0 +1,32 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#if NOT_TARGET(__STM32F1__, STM32F1) + #if DISABLED(ALLOW_STM32F4) + #error "Oops! Select an STM32F1 board in 'Tools > Board.'" + #elif NOT_TARGET(STM32F4) + #error "Oops! Select an STM32F4 board in 'Tools > Board.'" + #endif +#endif + +#undef ALLOW_STM32F4 diff --git a/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h b/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h new file mode 100644 index 0000000000..7b8c412bed --- /dev/null +++ b/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h @@ -0,0 +1,152 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "env_validate.h" + +#define BOARD_INFO_NAME "TRIGORILLA_V006" +#define DEFAULT_MACHINE_NAME "GD32F103" + +#define BOARD_NO_NATIVE_USB + +// Release PA13 from SWD for CASE_LIGHT_PIN +#define DISABLE_DEBUG +#define DISABLE_JTAG + +// +// EEPROM +// +#define FLASH_EEPROM_EMULATION +#define MARLIN_EEPROM_SIZE 0x1000 // 4KB + +// +// Limit Switches +// +#define X_MIN_PIN PA7 +#define X_MAX_PIN PC6 +#define Y_MIN_PIN PC5 +#define Y_MAX_PIN -1 +#define Z_MIN_PIN PB2 +#define Z_MAX_PIN -1 + +// +// Steppers +// +#define X_ENABLE_PIN PC3 +#define X_STEP_PIN PC2 +#define X_DIR_PIN PB9 + +#define Y_ENABLE_PIN PC13 +#define Y_STEP_PIN PB8 +#define Y_DIR_PIN PB7 + +#define Z_ENABLE_PIN PC14 +#define Z_STEP_PIN PB6 +#define Z_DIR_PIN PB5 + +#define E0_ENABLE_PIN PA15 +#define E0_STEP_PIN PB4 +#define E0_DIR_PIN PB3 + +#define E1_ENABLE_PIN PC15 +#define E1_STEP_PIN PC0 +#define E1_DIR_PIN PC1 + +// +// Temperature Sensors +// +#define TEMP_0_PIN PC4 // T0 +#define TEMP_1_PIN -1 // T1 PA6 used for power loss +#define TEMP_BED_PIN PB0 // TB + +// +// Heaters +// +#define HEATER_0_PIN PA1 // H0 +#define HEATER_1_PIN PA8 // H1 +#define HEATER_BED_PIN PA4 // HB + +// +// Fans +// +#define FAN_PIN PA0 // FAN +#define FAN1_PIN PA14 // Connected to +24V +#define FAN2_PIN -1 // PB1, auto fan for E0 +#define CONTROLLER_FAN_PIN FAN1_PIN + +// +// Misc +// +#define BEEPER_PIN PB15 +#define LED_PIN -1 +#define POWER_LOSS_PIN PA6 +#define FIL_RUNOUT_PIN PA5 +#define CASE_LIGHT_PIN PA13 +#define POWER_MONITOR_VOLTAGE_PIN PA6 + +#define AUTO_LEVEL_TX_PIN PB13 +#define AUTO_LEVEL_RX_PIN PB12 + +#ifndef Z_MIN_PROBE_PIN + #define Z_MIN_PROBE_PIN AUTO_LEVEL_RX_PIN +#endif + +// +// SD Card +// +#define SD_DETECT_PIN PC7 + +#ifndef SDIO_SUPPORT + #define SDIO_SUPPORT +#endif +#if ENABLED(SDIO_SUPPORT) + // + // SPI + // + #define SPI_DEVICE -1 + #define SCK_PIN -1 + #define MISO_PIN -1 + #define MOSI_PIN -1 + #define SS_PIN -1 + + // + // SDIO + // + #define SDIO_READ_RETRIES 16 + #define SDIO_D0_PIN PC8 + #define SDIO_D1_PIN PC9 + #define SDIO_D2_PIN PC10 + #define SDIO_D3_PIN PC11 + #define SDIO_CK_PIN PC12 + #define SDIO_CMD_PIN PD2 + +#else + + #undef SDSS + #define SDSS PC11 // SDIO_D3_PIN + #define SS_PIN SDSS + #define SCK_PIN PC12 // SDIO_CK_PIN + #define MISO_PIN PC8 // SDIO_D0_PIN + #define MOSI_PIN PD2 // SDIO_CMD_PIN + #define SOFTWARE_SPI + +#endif diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 62ddba06f5..bead9d1f06 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -629,6 +629,8 @@ #include "stm32f1/pins_PANDA_PI_V29.h" // STM32F103RCT6 env:PANDA_PI_V29 #elif MB(SOVOL_V131) #include "stm32f1/pins_SOVOL_V131.h" // GD32F1 env:GD32F103RET6_sovol_maple +#elif MB(TRIGORILLA_V006) + #include "gd32f1/pins_TRIGORILLA_V006.h" // GD32F103 env:trigorilla_v006 // // ARM Cortex-M4F diff --git a/Marlin/src/sd/cardreader.cpp b/Marlin/src/sd/cardreader.cpp index fb2721a2b2..8a4fa743d4 100644 --- a/Marlin/src/sd/cardreader.cpp +++ b/Marlin/src/sd/cardreader.cpp @@ -420,6 +420,40 @@ void CardReader::ls(const uint8_t lsflags) { SERIAL_EOL(); } + void CardReader::getLongPath(char * const pathLong, char * const pathShort) { + + int i, pathLen = strlen(pathShort); + char bufShort[FILENAME_LENGTH] = { '\0' }; + strcpy_P(bufShort, pathShort); + + // Zero out slashes to make segments + for (i = 0; i < pathLen; i++) if (bufShort[i] == '/') bufShort[i] = '\0'; + + SdFile diveDir = root; // start from the root for segment 1 + for (i = 0; i < pathLen;) { + + if (bufShort[i] == '\0') i++; // move past a single nul + + char *segment = &bufShort[i]; // The segment after most slashes + + // If a segment is empty (extra-slash) then exit + if (!*segment) break; + + //SERIAL_ECHOLNPGM("Looking for segment: ", segment); + + // Find the item, setting the long filename + diveDir.rewind(); + selectByName(diveDir, segment); + diveDir.close(); + + if (longFilename[0]) { + strncpy_P(pathLong, longFilename, 63); + pathLong[63] = '\0'; + break; + } + } + } + #endif // LONG_FILENAME_HOST_SUPPORT // diff --git a/Marlin/src/sd/cardreader.h b/Marlin/src/sd/cardreader.h index 86acb1b862..47e3c66e47 100644 --- a/Marlin/src/sd/cardreader.h +++ b/Marlin/src/sd/cardreader.h @@ -146,6 +146,7 @@ public: static char* longest_filename() { return longFilename[0] ? longFilename : filename; } #if ENABLED(LONG_FILENAME_HOST_SUPPORT) static void printLongPath(char * const path); // Used by M33 + static void getLongPath(char * const pathLong, char * const pathShort); // Used by anycubic_vyper #endif // Working Directory for SD card menu diff --git a/ini/features.ini b/ini/features.ini index 35b6959fd9..11ffca6ba6 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -81,6 +81,7 @@ HAS_MENU_TOUCH_SCREEN = src_filter=+ HAS_MENU_UBL = src_filter=+ ANYCUBIC_LCD_CHIRON = src_filter=+ +ANYCUBIC_LCD_VYPER = src_filter=+ ANYCUBIC_LCD_I3MEGA = src_filter=+ HAS_DGUS_LCD_CLASSIC = src_filter=+ DGUS_LCD_UI_RELOADED = src_filter=+ diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini index 1adc83a8f9..783d05fab4 100644 --- a/ini/stm32f1.ini +++ b/ini/stm32f1.ini @@ -134,6 +134,16 @@ monitor_speed = 115200 debug_tool = jlink upload_protocol = jlink +# +# Trigorilla V0.0.6 (GD32F103) +# modified version of env:STM32F103RE_creality +# +[env:trigorilla_v006] +extends = STM32F103Rx_creality +board = genericSTM32F103RE +board_build.offset = 0x8000 +board_upload.offset_address = 0x08008000 + # # Creality (STM32F103Rx) # With custom upload to SD via Marlin with binary protocol. diff --git a/platformio.ini b/platformio.ini index f8a8988ef8..9fbc589d2e 100644 --- a/platformio.ini +++ b/platformio.ini @@ -81,6 +81,7 @@ default_src_filter = + - - + - - - + - - - - - - - - From 48b7c7911340300905940ad490678514a18492fe Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Sun, 26 Mar 2023 02:09:27 -0700 Subject: [PATCH 184/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20Touch=20Calibratio?= =?UTF-8?q?n=20first=20point=20(#25298)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp | 3 ++- Marlin/src/lcd/tft/touch.cpp | 2 +- Marlin/src/lcd/tft_io/touch_calibration.cpp | 9 +++++---- Marlin/src/lcd/tft_io/touch_calibration.h | 6 ++++-- Marlin/src/lcd/touch/touch_buttons.cpp | 2 +- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp index 2248ef334f..08db5ae7ad 100644 --- a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp @@ -492,6 +492,7 @@ void lv_encoder_pin_init() { } #if 1 // HAS_ENCODER_ACTION + void lv_update_encoder() { static uint32_t encoder_time1; uint32_t tmpTime, diffTime = 0; @@ -552,7 +553,7 @@ void lv_encoder_pin_init() { #endif // HAS_ENCODER_WHEEL - } // next_button_update_ms + } // encoder_time1 } #endif // HAS_ENCODER_ACTION diff --git a/Marlin/src/lcd/tft/touch.cpp b/Marlin/src/lcd/tft/touch.cpp index b73f67e744..9482c85a47 100644 --- a/Marlin/src/lcd/tft/touch.cpp +++ b/Marlin/src/lcd/tft/touch.cpp @@ -152,7 +152,7 @@ void Touch::touch(touch_control_t *control) { case CALIBRATE: if (touch_calibration.handleTouch(x, y)) ui.refresh(); break; - #endif // TOUCH_SCREEN_CALIBRATION + #endif case MENU_SCREEN: ui.goto_screen((screenFunc_t)control->data); break; case BACK: ui.goto_previous_screen(); break; diff --git a/Marlin/src/lcd/tft_io/touch_calibration.cpp b/Marlin/src/lcd/tft_io/touch_calibration.cpp index b1ef17df17..c239a94b41 100644 --- a/Marlin/src/lcd/tft_io/touch_calibration.cpp +++ b/Marlin/src/lcd/tft_io/touch_calibration.cpp @@ -41,6 +41,7 @@ touch_calibration_t TouchCalibration::calibration; calibrationState TouchCalibration::calibration_state = CALIBRATION_NONE; touch_calibration_point_t TouchCalibration::calibration_points[4]; uint8_t TouchCalibration::failed_count; +millis_t TouchCalibration::next_touch_update_ms; // = 0; void TouchCalibration::validate_calibration() { #define VALIDATE_PRECISION(XY, A, B) validate_precision_##XY(CALIBRATION_##A, CALIBRATION_##B) @@ -89,11 +90,11 @@ void TouchCalibration::validate_calibration() { } } -bool TouchCalibration::handleTouch(uint16_t x, uint16_t y) { - static millis_t next_button_update_ms = 0; +bool TouchCalibration::handleTouch(const uint16_t x, const uint16_t y) { const millis_t now = millis(); - if (PENDING(now, next_button_update_ms)) return false; - next_button_update_ms = now + BUTTON_DELAY_MENU; + + if (next_touch_update_ms && PENDING(now, next_touch_update_ms)) return false; + next_touch_update_ms = now + BUTTON_DELAY_MENU; if (calibration_state < CALIBRATION_SUCCESS) { calibration_points[calibration_state].raw_x = x; diff --git a/Marlin/src/lcd/tft_io/touch_calibration.h b/Marlin/src/lcd/tft_io/touch_calibration.h index abd5667700..030b4977db 100644 --- a/Marlin/src/lcd/tft_io/touch_calibration.h +++ b/Marlin/src/lcd/tft_io/touch_calibration.h @@ -57,6 +57,7 @@ class TouchCalibration { public: static calibrationState calibration_state; static touch_calibration_point_t calibration_points[4]; + static millis_t next_touch_update_ms; static bool validate_precision(int32_t a, int32_t b) { return (a > b ? (100 * b) / a : (100 * a) / b) > TOUCH_SCREEN_CALIBRATION_PRECISION; } static bool validate_precision_x(uint8_t a, uint8_t b) { return validate_precision(calibration_points[a].raw_x, calibration_points[b].raw_x); } @@ -64,11 +65,12 @@ public: static void validate_calibration(); static touch_calibration_t calibration; - static uint8_t failed_count; + static uint8_t failed_count; static void calibration_reset() { calibration = { TOUCH_CALIBRATION_X, TOUCH_CALIBRATION_Y, TOUCH_OFFSET_X, TOUCH_OFFSET_Y, TOUCH_ORIENTATION }; } static bool need_calibration() { return !calibration.offset_x && !calibration.offset_y && !calibration.x && !calibration.y; } static calibrationState calibration_start() { + next_touch_update_ms = millis() + 750UL; calibration = { 0, 0, 0, 0, TOUCH_ORIENTATION_NONE }; calibration_state = CALIBRATION_TOP_LEFT; calibration_points[CALIBRATION_TOP_LEFT].x = 30; @@ -89,7 +91,7 @@ public: return !need_calibration(); } - static bool handleTouch(uint16_t x, uint16_t y); + static bool handleTouch(const uint16_t x, const uint16_t y); }; extern TouchCalibration touch_calibration; diff --git a/Marlin/src/lcd/touch/touch_buttons.cpp b/Marlin/src/lcd/touch/touch_buttons.cpp index d641dd3b1c..08554de0d3 100644 --- a/Marlin/src/lcd/touch/touch_buttons.cpp +++ b/Marlin/src/lcd/touch/touch_buttons.cpp @@ -91,7 +91,7 @@ uint8_t TouchButtons::read_buttons() { y = uint16_t((uint32_t(y) * TOUCH_CALIBRATION_Y) >> 16) + TOUCH_OFFSET_Y; #endif #elif ENABLED(TFT_TOUCH_DEVICE_GT911) - bool is_touched = (TOUCH_ORIENTATION == TOUCH_PORTRAIT ? touchIO.getPoint(&y, &x) : touchIO.getPoint(&x, &y)); + const bool is_touched = (TOUCH_ORIENTATION == TOUCH_PORTRAIT ? touchIO.getPoint(&y, &x) : touchIO.getPoint(&x, &y)); if (!is_touched) return 0; #endif From 24a9a66f0a238cb59cc6bfc7ff235713eefc3614 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 26 Mar 2023 04:36:12 -0500 Subject: [PATCH 185/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Aut?= =?UTF-8?q?o=20Fan=20/=20Cooler=20Fan=20updates=20(#25554)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_post.h | 22 +++++- Marlin/src/inc/SanityCheck.h | 21 +---- Marlin/src/module/temperature.cpp | 123 +++++++++++++++-------------- 3 files changed, 84 insertions(+), 82 deletions(-) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 6e0c6c95a8..edd3edf246 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -2572,10 +2572,21 @@ #if ANY(HAS_AUTO_FAN_0, HAS_AUTO_FAN_1, HAS_AUTO_FAN_2, HAS_AUTO_FAN_3, HAS_AUTO_FAN_4, HAS_AUTO_FAN_5, HAS_AUTO_FAN_6, HAS_AUTO_FAN_7, HAS_AUTO_CHAMBER_FAN, HAS_AUTO_COOLER_FAN) #define HAS_AUTO_FAN 1 -#endif -#define _FANOVERLAP(A,B) (A##_AUTO_FAN_PIN == E##B##_AUTO_FAN_PIN) -#if HAS_AUTO_FAN && (_FANOVERLAP(CHAMBER,0) || _FANOVERLAP(CHAMBER,1) || _FANOVERLAP(CHAMBER,2) || _FANOVERLAP(CHAMBER,3) || _FANOVERLAP(CHAMBER,4) || _FANOVERLAP(CHAMBER,5) || _FANOVERLAP(CHAMBER,6) || _FANOVERLAP(CHAMBER,7)) - #define AUTO_CHAMBER_IS_E 1 + #define _FANOVERLAP(I,T) (T##_AUTO_FAN_PIN == E##I##_AUTO_FAN_PIN) + #if HAS_AUTO_CHAMBER_FAN + #define _CHFANOVERLAP(I) || _FANOVERLAP(I,CHAMBER) + #if (0 REPEAT(8, _CHFANOVERLAP)) + #define AUTO_CHAMBER_IS_E 1 + #endif + #undef _CHFANOVERLAP + #endif + #if HAS_AUTO_COOLER_FAN + #define _COFANOVERLAP(I) || _FANOVERLAP(I,COOLER) + #if (0 REPEAT(8, _COFANOVERLAP)) + #define AUTO_COOLER_IS_E 1 + #endif + #undef _COFANOVERLAP + #endif #endif // Fans check @@ -2620,6 +2631,9 @@ #if !HAS_AUTO_CHAMBER_FAN || AUTO_CHAMBER_IS_E #undef AUTO_POWER_CHAMBER_FAN #endif +#if !HAS_AUTO_COOLER_FAN || AUTO_COOLER_IS_E + #undef AUTO_POWER_COOLER_FAN +#endif // Print Cooling fans (limit) #ifdef NUM_M106_FANS diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index e67a4c9e49..6946db3911 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -3043,24 +3043,9 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS * Auto Fan check for PWM pins */ #if HAS_AUTO_FAN && EXTRUDER_AUTO_FAN_SPEED != 255 - #define AF_ERR_SUFF "_AUTO_FAN_PIN is not a PWM pin. Set EXTRUDER_AUTO_FAN_SPEED to 255." - #if HAS_AUTO_FAN_0 - static_assert(_TEST_PWM(E0_AUTO_FAN_PIN), "E0" AF_ERR_SUFF); - #elif HAS_AUTO_FAN_1 - static_assert(_TEST_PWM(E1_AUTO_FAN_PIN), "E1" AF_ERR_SUFF); - #elif HAS_AUTO_FAN_2 - static_assert(_TEST_PWM(E2_AUTO_FAN_PIN), "E2" AF_ERR_SUFF); - #elif HAS_AUTO_FAN_3 - static_assert(_TEST_PWM(E3_AUTO_FAN_PIN), "E3" AF_ERR_SUFF); - #elif HAS_AUTO_FAN_4 - static_assert(_TEST_PWM(E4_AUTO_FAN_PIN), "E4" AF_ERR_SUFF); - #elif HAS_AUTO_FAN_5 - static_assert(_TEST_PWM(E5_AUTO_FAN_PIN), "E5" AF_ERR_SUFF); - #elif HAS_AUTO_FAN_6 - static_assert(_TEST_PWM(E6_AUTO_FAN_PIN), "E6" AF_ERR_SUFF); - #elif HAS_AUTO_FAN_7 - static_assert(_TEST_PWM(E7_AUTO_FAN_PIN), "E7" AF_ERR_SUFF); - #endif + #define AF_ASSERT(N) OPTCODE(HAS_AUTO_FAN_##N, static_assert(_TEST_PWM(E##N##_AUTO_FAN_PIN), "E" STRINGIFY(N) "_AUTO_FAN_PIN is not a PWM pin. Set EXTRUDER_AUTO_FAN_SPEED to 255.")) + REPEAT(8, AF_ASSERT) + #undef AF_ASSERT #endif /** diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index ad467070d1..180dbbc5ad 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -1194,44 +1194,55 @@ int16_t Temperature::getHeaterPower(const heater_id_t heater_id) { } } -#define _EFANOVERLAP(A,B) _FANOVERLAP(E##A,B) - #if HAS_AUTO_FAN + #define _EFANOVERLAP(I,N) ((I != N) && _FANOVERLAP(I,E##N)) + #if EXTRUDER_AUTO_FAN_SPEED != 255 - #define INIT_E_AUTO_FAN_PIN(P) do{ if (P == FAN1_PIN || P == FAN2_PIN) { SET_PWM(P); SET_FAST_PWM_FREQ(P); } else SET_OUTPUT(P); }while(0) + #define INIT_E_AUTO_FAN_PIN(P) do{ if (PWM_PIN(P)) { SET_PWM(P); SET_FAST_PWM_FREQ(P); } else SET_OUTPUT(P); }while(0) #else #define INIT_E_AUTO_FAN_PIN(P) SET_OUTPUT(P) #endif #if CHAMBER_AUTO_FAN_SPEED != 255 - #define INIT_CHAMBER_AUTO_FAN_PIN(P) do{ if (P == FAN1_PIN || P == FAN2_PIN) { SET_PWM(P); SET_FAST_PWM_FREQ(P); } else SET_OUTPUT(P); }while(0) + #define INIT_CHAMBER_AUTO_FAN_PIN(P) do{ if (PWM_PIN(P)) { SET_PWM(P); SET_FAST_PWM_FREQ(P); } else SET_OUTPUT(P); }while(0) #else #define INIT_CHAMBER_AUTO_FAN_PIN(P) SET_OUTPUT(P) #endif + #if COOLER_AUTO_FAN_SPEED != 255 + #define INIT_COOLER_AUTO_FAN_PIN(P) do{ if (PWM_PIN(P)) { SET_PWM(P); SET_FAST_PWM_FREQ(P); } else SET_OUTPUT(P); }while(0) + #else + #define INIT_COOLER_AUTO_FAN_PIN(P) SET_OUTPUT(P) + #endif #ifndef CHAMBER_FAN_INDEX #define CHAMBER_FAN_INDEX HOTENDS #endif void Temperature::update_autofans() { - #define _EFAN(B,A) _EFANOVERLAP(A,B) ? B : + #define _EFAN(I,N) _EFANOVERLAP(I,N) ? I : static const uint8_t fanBit[] PROGMEM = { 0 #if HAS_MULTI_HOTEND #define _NEXT_FAN(N) , REPEAT2(N,_EFAN,N) N RREPEAT_S(1, HOTENDS, _NEXT_FAN) #endif + #define _NFAN HOTENDS #if HAS_AUTO_CHAMBER_FAN - #define _CFAN(B) _FANOVERLAP(CHAMBER,B) ? B : - , REPEAT(HOTENDS,_CFAN) (HOTENDS) + #define _CHFAN(I) _FANOVERLAP(I,CHAMBER) ? I : + , (REPEAT(HOTENDS,_CHFAN) (_NFAN)) + #undef _NFAN + #define _NFAN INCREMENT(HOTENDS) + #endif + #if HAS_AUTO_COOLER_FAN + #define _COFAN(I) _FANOVERLAP(I,COOLER) ? I : + , (REPEAT(HOTENDS,_COFAN) (_NFAN)) #endif }; uint8_t fanState = 0; HOTEND_LOOP() { - if (temp_hotend[e].celsius >= EXTRUDER_AUTO_FAN_TEMPERATURE) { + if (temp_hotend[e].celsius >= EXTRUDER_AUTO_FAN_TEMPERATURE) SBI(fanState, pgm_read_byte(&fanBit[e])); - } } #if HAS_AUTO_CHAMBER_FAN @@ -1262,6 +1273,11 @@ int16_t Temperature::getHeaterPower(const heater_id_t heater_id) { chamberfan_speed = fan_on ? CHAMBER_AUTO_FAN_SPEED : 0; break; #endif + #if ENABLED(AUTO_POWER_COOLER_FAN) + case COOLER_FAN_INDEX: + coolerfan_speed = fan_on ? COOLER_AUTO_FAN_SPEED : 0; + break; + #endif default: #if EITHER(AUTO_POWER_E_FANS, HAS_FANCHECK) autofan_speed[realFan] = fan_on ? EXTRUDER_AUTO_FAN_SPEED : 0; @@ -1275,35 +1291,16 @@ int16_t Temperature::getHeaterPower(const heater_id_t heater_id) { #define _AUTOFAN_SPEED() EXTRUDER_AUTO_FAN_SPEED #endif #define _AUTOFAN_CASE(N) case N: _UPDATE_AUTO_FAN(E##N, fan_on, _AUTOFAN_SPEED()); break + #define AUTOFAN_CASE(N) OPTCODE(HAS_AUTO_FAN_##N, _AUTOFAN_CASE(N)) switch (f) { - #if HAS_AUTO_FAN_0 - _AUTOFAN_CASE(0); - #endif - #if HAS_AUTO_FAN_1 - _AUTOFAN_CASE(1); - #endif - #if HAS_AUTO_FAN_2 - _AUTOFAN_CASE(2); - #endif - #if HAS_AUTO_FAN_3 - _AUTOFAN_CASE(3); - #endif - #if HAS_AUTO_FAN_4 - _AUTOFAN_CASE(4); - #endif - #if HAS_AUTO_FAN_5 - _AUTOFAN_CASE(5); - #endif - #if HAS_AUTO_FAN_6 - _AUTOFAN_CASE(6); - #endif - #if HAS_AUTO_FAN_7 - _AUTOFAN_CASE(7); - #endif + REPEAT(8, AUTOFAN_CASE) #if HAS_AUTO_CHAMBER_FAN && !AUTO_CHAMBER_IS_E case CHAMBER_FAN_INDEX: _UPDATE_AUTO_FAN(CHAMBER, fan_on, CHAMBER_AUTO_FAN_SPEED); break; #endif + #if HAS_AUTO_COOLER_FAN && !AUTO_COOLER_IS_E + case COOLER_FAN_INDEX: _UPDATE_AUTO_FAN(COOLER, fan_on, COOLER_AUTO_FAN_SPEED); break; + #endif } SBI(fanDone, realFan); } @@ -2737,33 +2734,39 @@ void Temperature::init() { HAL_timer_start(MF_TIMER_TEMP, TEMP_TIMER_FREQUENCY); ENABLE_TEMPERATURE_INTERRUPT(); - #if HAS_AUTO_FAN_0 - INIT_E_AUTO_FAN_PIN(E0_AUTO_FAN_PIN); - #endif - #if HAS_AUTO_FAN_1 && !_EFANOVERLAP(1,0) - INIT_E_AUTO_FAN_PIN(E1_AUTO_FAN_PIN); - #endif - #if HAS_AUTO_FAN_2 && !(_EFANOVERLAP(2,0) || _EFANOVERLAP(2,1)) - INIT_E_AUTO_FAN_PIN(E2_AUTO_FAN_PIN); - #endif - #if HAS_AUTO_FAN_3 && !(_EFANOVERLAP(3,0) || _EFANOVERLAP(3,1) || _EFANOVERLAP(3,2)) - INIT_E_AUTO_FAN_PIN(E3_AUTO_FAN_PIN); - #endif - #if HAS_AUTO_FAN_4 && !(_EFANOVERLAP(4,0) || _EFANOVERLAP(4,1) || _EFANOVERLAP(4,2) || _EFANOVERLAP(4,3)) - INIT_E_AUTO_FAN_PIN(E4_AUTO_FAN_PIN); - #endif - #if HAS_AUTO_FAN_5 && !(_EFANOVERLAP(5,0) || _EFANOVERLAP(5,1) || _EFANOVERLAP(5,2) || _EFANOVERLAP(5,3) || _EFANOVERLAP(5,4)) - INIT_E_AUTO_FAN_PIN(E5_AUTO_FAN_PIN); - #endif - #if HAS_AUTO_FAN_6 && !(_EFANOVERLAP(6,0) || _EFANOVERLAP(6,1) || _EFANOVERLAP(6,2) || _EFANOVERLAP(6,3) || _EFANOVERLAP(6,4) || _EFANOVERLAP(6,5)) - INIT_E_AUTO_FAN_PIN(E6_AUTO_FAN_PIN); - #endif - #if HAS_AUTO_FAN_7 && !(_EFANOVERLAP(7,0) || _EFANOVERLAP(7,1) || _EFANOVERLAP(7,2) || _EFANOVERLAP(7,3) || _EFANOVERLAP(7,4) || _EFANOVERLAP(7,5) || _EFANOVERLAP(7,6)) - INIT_E_AUTO_FAN_PIN(E7_AUTO_FAN_PIN); - #endif - #if HAS_AUTO_CHAMBER_FAN && !AUTO_CHAMBER_IS_E - INIT_CHAMBER_AUTO_FAN_PIN(CHAMBER_AUTO_FAN_PIN); - #endif + #if HAS_AUTO_FAN + #define _OREFAN(I,N) || _EFANOVERLAP(I,N) + #if HAS_AUTO_FAN_0 + INIT_E_AUTO_FAN_PIN(E0_AUTO_FAN_PIN); + #endif + #if HAS_AUTO_FAN_1 && !_EFANOVERLAP(0,1) + INIT_E_AUTO_FAN_PIN(E1_AUTO_FAN_PIN); + #endif + #if HAS_AUTO_FAN_2 && !(0 REPEAT2(2, _OREFAN, 2)) + INIT_E_AUTO_FAN_PIN(E2_AUTO_FAN_PIN); + #endif + #if HAS_AUTO_FAN_3 && !(0 REPEAT2(3, _OREFAN, 3)) + INIT_E_AUTO_FAN_PIN(E3_AUTO_FAN_PIN); + #endif + #if HAS_AUTO_FAN_4 && !(0 REPEAT2(4, _OREFAN, 4)) + INIT_E_AUTO_FAN_PIN(E4_AUTO_FAN_PIN); + #endif + #if HAS_AUTO_FAN_5 && !(0 REPEAT2(5, _OREFAN, 5)) + INIT_E_AUTO_FAN_PIN(E5_AUTO_FAN_PIN); + #endif + #if HAS_AUTO_FAN_6 && !(0 REPEAT2(6, _OREFAN, 6)) + INIT_E_AUTO_FAN_PIN(E6_AUTO_FAN_PIN); + #endif + #if HAS_AUTO_FAN_7 && !(0 REPEAT2(7, _OREFAN, 7)) + INIT_E_AUTO_FAN_PIN(E7_AUTO_FAN_PIN); + #endif + #if HAS_AUTO_CHAMBER_FAN && !AUTO_CHAMBER_IS_E + INIT_CHAMBER_AUTO_FAN_PIN(CHAMBER_AUTO_FAN_PIN); + #endif + #if HAS_AUTO_COOLER_FAN && !AUTO_COOLER_IS_E + INIT_COOLER_AUTO_FAN_PIN(COOLER_AUTO_FAN_PIN); + #endif + #endif // HAS_AUTO_FAN #if HAS_HOTEND #define _TEMP_MIN_E(NR) do{ \ From 241c06218822d63e47710acfa6885351fe495bc5 Mon Sep 17 00:00:00 2001 From: tombrazier <68918209+tombrazier@users.noreply.github.com> Date: Sun, 26 Mar 2023 10:46:55 +0100 Subject: [PATCH 186/659] =?UTF-8?q?=F0=9F=90=9B=20Prevent=20divide-by-zero?= =?UTF-8?q?=20in=20calc=5Ftimer=5Finterval=20(#25557)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 5c0034a5f9..f7436e51d5 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -2094,7 +2094,8 @@ hal_timer_t Stepper::calc_timer_interval(uint32_t step_rate) { #ifdef CPU_32_BIT - return uint32_t(STEPPER_TIMER_RATE) / step_rate; // A fast processor can just do integer division + // A fast processor can just do integer division + return step_rate ? uint32_t(STEPPER_TIMER_RATE) / step_rate : HAL_TIMER_TYPE_MAX; #else From 39652d93ab09ee95059b1c08969b11b12db1e5a3 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 26 Mar 2023 17:14:51 -0500 Subject: [PATCH 187/659] =?UTF-8?q?=F0=9F=94=A7=20Sanity-check=20for=20end?= =?UTF-8?q?stop=20inverting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25574 --- Marlin/src/inc/SanityCheck.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 6946db3911..70dcd590fd 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -684,6 +684,14 @@ #error "SQUARE_WAVE_STEPPING is now EDGE_STEPPING." #elif defined(FAN_PIN) #error "FAN_PIN is now FAN0_PIN." +#elif defined(X_MIN_ENDSTOP_INVERTING) || defined(Y_MIN_ENDSTOP_INVERTING) || defined(Z_MIN_ENDSTOP_INVERTING) \ + || defined(I_MIN_ENDSTOP_INVERTING) || defined(J_MIN_ENDSTOP_INVERTING) || defined(K_MIN_ENDSTOP_INVERTING) \ + || defined(U_MIN_ENDSTOP_INVERTING) || defined(V_MIN_ENDSTOP_INVERTING) || defined(W_MIN_ENDSTOP_INVERTING) \ + || defined(X_MAX_ENDSTOP_INVERTING) || defined(Y_MAX_ENDSTOP_INVERTING) || defined(Z_MAX_ENDSTOP_INVERTING) \ + || defined(I_MAX_ENDSTOP_INVERTING) || defined(J_MAX_ENDSTOP_INVERTING) || defined(K_MAX_ENDSTOP_INVERTING) \ + || defined(U_MAX_ENDSTOP_INVERTING) || defined(V_MAX_ENDSTOP_INVERTING) || defined(W_MAX_ENDSTOP_INVERTING) \ + || defined(Z_MIN_PROBE_ENDSTOP_INVERTING) + #error "*_ENDSTOP_INVERTING false/true is now set with *_ENDSTOP_HIT_STATE HIGH/LOW." #endif // L64xx stepper drivers have been removed From 61f22f34d32ca33d99233eb5b242e52c23aabb23 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 26 Mar 2023 17:24:40 -0500 Subject: [PATCH 188/659] =?UTF-8?q?=F0=9F=94=A7=20Clarify=20axis=20disable?= =?UTF-8?q?=20/=20timeout=20(#25571)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 4 +- Marlin/Configuration_adv.h | 25 +++++------ Marlin/config.ini | 12 +++--- Marlin/src/MarlinCore.cpp | 22 +++++----- Marlin/src/gcode/control/M17_M18_M84.cpp | 2 +- Marlin/src/gcode/gcode.cpp | 4 +- Marlin/src/gcode/gcode.h | 2 +- Marlin/src/inc/Conditionals_LCD.h | 13 +++++- Marlin/src/inc/Conditionals_adv.h | 54 ++++++++++++++++++++---- Marlin/src/inc/Conditionals_post.h | 37 ---------------- Marlin/src/inc/SanityCheck.h | 22 ++++++---- Marlin/src/module/planner.cpp | 34 ++++++++------- Marlin/src/module/planner.h | 4 +- buildroot/tests/mega2560 | 2 +- buildroot/tests/rambo | 2 +- buildroot/tests/teensy35 | 2 +- buildroot/tests/teensy41 | 2 +- 17 files changed, 130 insertions(+), 113 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 7f6e7daed5..2f4b18a210 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1710,8 +1710,8 @@ // @section extruder -//#define DISABLE_E // Disable the extruder when not stepping -#define DISABLE_INACTIVE_EXTRUDER // Keep only the active extruder enabled +//#define DISABLE_E // Disable the extruder when not stepping +#define DISABLE_OTHER_EXTRUDERS // Keep only the active extruder enabled // @section motion diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index e8fc947d3e..416caf22fc 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1146,19 +1146,20 @@ /** * Idle Stepper Shutdown - * Enable DISABLE_INACTIVE_* to shut down axis steppers after an idle period. - * The Deactive Time can be overridden with M18 and M84. Set to 0 for No Timeout. + * Enable DISABLE_IDLE_* to shut down axis steppers after an idle period. + * The default timeout duration can be overridden with M18 and M84. Set to 0 for No Timeout. */ -#define DEFAULT_STEPPER_DEACTIVE_TIME 120 -#define DISABLE_INACTIVE_X -#define DISABLE_INACTIVE_Y -#define DISABLE_INACTIVE_Z // Disable if the nozzle could fall onto your printed part! -//#define DISABLE_INACTIVE_I -//#define DISABLE_INACTIVE_J -//#define DISABLE_INACTIVE_K -//#define DISABLE_INACTIVE_U -//#define DISABLE_INACTIVE_V -//#define DISABLE_INACTIVE_W +#define DEFAULT_STEPPER_TIMEOUT_SEC 120 +#define DISABLE_IDLE_X +#define DISABLE_IDLE_Y +#define DISABLE_IDLE_Z // Disable if the nozzle could fall onto your printed part! +//#define DISABLE_IDLE_I +//#define DISABLE_IDLE_J +//#define DISABLE_IDLE_K +//#define DISABLE_IDLE_U +//#define DISABLE_IDLE_V +//#define DISABLE_IDLE_W +#define DISABLE_IDLE_E // Shut down all idle extruders // Default Minimum Feedrates for printing and travel moves #define DEFAULT_MINIMUMFEEDRATE 0.0 // (mm/s. °/s for rotational-only moves) Minimum feedrate. Set with M205 S. diff --git a/Marlin/config.ini b/Marlin/config.ini index 65058a500d..0ac8187179 100644 --- a/Marlin/config.ini +++ b/Marlin/config.ini @@ -127,7 +127,7 @@ busy_while_heating = on default_ejerk = 5.0 default_keepalive_interval = 2 default_leveling_fade_height = 0.0 -disable_inactive_extruder = on +disable_other_extruders = on display_charset_hd44780 = JAPANESE eeprom_boot_silent = on eeprom_chitchat = on @@ -176,12 +176,12 @@ auto_report_temperatures = on autotemp = on autotemp_oldweight = 0.98 bed_check_interval = 5000 -default_stepper_deactive_time = 120 +default_stepper_timeout_sec = 120 default_volumetric_extruder_limit = 0.00 -disable_inactive_extruder = true -disable_inactive_x = true -disable_inactive_y = true -disable_inactive_z = true +disable_idle_x = on +disable_idle_y = on +disable_idle_z = on +disable_idle_e = on e0_auto_fan_pin = -1 encoder_100x_steps_per_sec = 80 encoder_10x_steps_per_sec = 30 diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 342f8812d8..3ab01b0348 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -429,7 +429,7 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) { if (has_blocks) gcode.reset_stepper_timeout(ms); // Reset timeout for M18/M84, M85 max 'kill', and laser. // M18 / M84 : Handle steppers inactive time timeout - #if HAS_DISABLE_INACTIVE_AXIS + #if HAS_DISABLE_IDLE_AXES if (gcode.stepper_inactive_time) { static bool already_shutdown_steppers; // = false @@ -439,16 +439,16 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) { already_shutdown_steppers = true; // Individual axes will be disabled if configured - TERN_(DISABLE_INACTIVE_X, stepper.disable_axis(X_AXIS)); - TERN_(DISABLE_INACTIVE_Y, stepper.disable_axis(Y_AXIS)); - TERN_(DISABLE_INACTIVE_Z, stepper.disable_axis(Z_AXIS)); - TERN_(DISABLE_INACTIVE_I, stepper.disable_axis(I_AXIS)); - TERN_(DISABLE_INACTIVE_J, stepper.disable_axis(J_AXIS)); - TERN_(DISABLE_INACTIVE_K, stepper.disable_axis(K_AXIS)); - TERN_(DISABLE_INACTIVE_U, stepper.disable_axis(U_AXIS)); - TERN_(DISABLE_INACTIVE_V, stepper.disable_axis(V_AXIS)); - TERN_(DISABLE_INACTIVE_W, stepper.disable_axis(W_AXIS)); - TERN_(DISABLE_INACTIVE_EXTRUDER, stepper.disable_e_steppers()); + TERN_(DISABLE_IDLE_X, stepper.disable_axis(X_AXIS)); + TERN_(DISABLE_IDLE_Y, stepper.disable_axis(Y_AXIS)); + TERN_(DISABLE_IDLE_Z, stepper.disable_axis(Z_AXIS)); + TERN_(DISABLE_IDLE_I, stepper.disable_axis(I_AXIS)); + TERN_(DISABLE_IDLE_J, stepper.disable_axis(J_AXIS)); + TERN_(DISABLE_IDLE_K, stepper.disable_axis(K_AXIS)); + TERN_(DISABLE_IDLE_U, stepper.disable_axis(U_AXIS)); + TERN_(DISABLE_IDLE_V, stepper.disable_axis(V_AXIS)); + TERN_(DISABLE_IDLE_W, stepper.disable_axis(W_AXIS)); + TERN_(DISABLE_IDLE_E, stepper.disable_e_steppers()); TERN_(AUTO_BED_LEVELING_UBL, bedlevel.steppers_were_disabled()); } diff --git a/Marlin/src/gcode/control/M17_M18_M84.cpp b/Marlin/src/gcode/control/M17_M18_M84.cpp index 4ff48568fa..76fc335e25 100644 --- a/Marlin/src/gcode/control/M17_M18_M84.cpp +++ b/Marlin/src/gcode/control/M17_M18_M84.cpp @@ -212,7 +212,7 @@ void try_to_disable(const stepper_flags_t to_disable) { void GcodeSuite::M18_M84() { if (parser.seenval('S')) { reset_stepper_timeout(); - #if HAS_DISABLE_INACTIVE_AXIS + #if HAS_DISABLE_IDLE_AXES const millis_t ms = parser.value_millis_from_seconds(); #if LASER_SAFETY_TIMEOUT_MS > 0 if (ms && ms <= LASER_SAFETY_TIMEOUT_MS) { diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index f08ade8c38..1eaf4dcd39 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -75,8 +75,8 @@ GcodeSuite gcode; millis_t GcodeSuite::previous_move_ms = 0, GcodeSuite::max_inactive_time = 0; -#if HAS_DISABLE_INACTIVE_AXIS - millis_t GcodeSuite::stepper_inactive_time = SEC_TO_MS(DEFAULT_STEPPER_DEACTIVE_TIME); +#if HAS_DISABLE_IDLE_AXES + millis_t GcodeSuite::stepper_inactive_time = SEC_TO_MS(DEFAULT_STEPPER_TIMEOUT_SEC); #endif // Relative motion mode for each logical axis diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 9bb45d9a43..48e6fd2da8 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -403,7 +403,7 @@ public: } FORCE_INLINE static void reset_stepper_timeout(const millis_t ms=millis()) { previous_move_ms = ms; } - #if HAS_DISABLE_INACTIVE_AXIS + #if HAS_DISABLE_IDLE_AXES static millis_t stepper_inactive_time; FORCE_INLINE static bool stepper_inactive_timeout(const millis_t ms=millis()) { return ELAPSED(ms, previous_move_ms + stepper_inactive_time); diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 403db47e42..60bc653560 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -624,7 +624,7 @@ #undef PREVENT_LENGTHY_EXTRUDE #undef FILAMENT_RUNOUT_SENSOR #undef FILAMENT_RUNOUT_DISTANCE_MM - #undef DISABLE_INACTIVE_EXTRUDER + #undef DISABLE_OTHER_EXTRUDERS #endif #define E_OPTARG(N) OPTARG(HAS_MULTI_EXTRUDER, N) @@ -678,7 +678,7 @@ // No inactive extruders with SWITCHING_NOZZLE or Průša MMU1 #if HAS_SWITCHING_NOZZLE || HAS_PRUSA_MMU1 - #undef DISABLE_INACTIVE_EXTRUDER + #undef DISABLE_OTHER_EXTRUDERS #endif // Průša MMU1, MMU(S) 2.0 and EXTENDABLE_EMU_MMU2(S) force SINGLENOZZLE @@ -934,6 +934,15 @@ #undef MAX_SOFTWARE_ENDSTOP_W #endif +#define _OR_HAS_DA(A) ENABLED(DISABLE_##A) || +#if MAP(_OR_HAS_DA, X, Y, Z, I, J, K, U, V, W) 0 + #define HAS_DISABLE_MAIN_AXES 1 +#endif +#if HAS_DISABLE_MAIN_AXES || ENABLED(DISABLE_E) + #define HAS_DISABLE_AXES 1 +#endif +#undef _OR_HAS_DA + #ifdef X2_DRIVER_TYPE #define HAS_X2_STEPPER 1 // Dual X Carriage isn't known yet. TODO: Consider moving it to Configuration.h. diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 5079a93c1d..c3f244b6bb 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -93,7 +93,7 @@ #undef ARC_SUPPORT #undef CALIBRATION_MEASURE_YMAX #undef CALIBRATION_MEASURE_YMIN - #undef DISABLE_INACTIVE_Y + #undef DISABLE_IDLE_Y #undef HOME_Y_BEFORE_X #undef INPUT_SHAPING_Y #undef QUICK_HOME @@ -108,7 +108,7 @@ #undef CALIBRATION_MEASURE_ZMAX #undef CALIBRATION_MEASURE_ZMIN #undef CNC_WORKSPACE_PLANES - #undef DISABLE_INACTIVE_Z + #undef DISABLE_IDLE_Z #undef ENABLE_LEVELING_FADE_HEIGHT #undef HOME_Z_FIRST #undef HOMING_Z_WITH_PROBE @@ -124,7 +124,7 @@ #if !HAS_I_AXIS #undef CALIBRATION_MEASURE_IMAX #undef CALIBRATION_MEASURE_IMIN - #undef DISABLE_INACTIVE_I + #undef DISABLE_IDLE_I #undef SAFE_BED_LEVELING_START_I #undef STEALTHCHOP_I #undef STEP_STATE_I @@ -133,7 +133,7 @@ #if !HAS_J_AXIS #undef CALIBRATION_MEASURE_JMAX #undef CALIBRATION_MEASURE_JMIN - #undef DISABLE_INACTIVE_J + #undef DISABLE_IDLE_J #undef SAFE_BED_LEVELING_START_J #undef STEALTHCHOP_J #undef STEP_STATE_J @@ -142,7 +142,7 @@ #if !HAS_K_AXIS #undef CALIBRATION_MEASURE_KMAX #undef CALIBRATION_MEASURE_KMIN - #undef DISABLE_INACTIVE_K + #undef DISABLE_IDLE_K #undef SAFE_BED_LEVELING_START_K #undef STEALTHCHOP_K #undef STEP_STATE_K @@ -151,7 +151,7 @@ #if !HAS_U_AXIS #undef CALIBRATION_MEASURE_UMAX #undef CALIBRATION_MEASURE_UMIN - #undef DISABLE_INACTIVE_U + #undef DISABLE_IDLE_U #undef SAFE_BED_LEVELING_START_U #undef STEALTHCHOP_U #undef STEP_STATE_U @@ -160,7 +160,7 @@ #if !HAS_V_AXIS #undef CALIBRATION_MEASURE_VMAX #undef CALIBRATION_MEASURE_VMIN - #undef DISABLE_INACTIVE_V + #undef DISABLE_IDLE_V #undef SAFE_BED_LEVELING_START_V #undef STEALTHCHOP_V #undef STEP_STATE_V @@ -169,7 +169,7 @@ #if !HAS_W_AXIS #undef CALIBRATION_MEASURE_WMAX #undef CALIBRATION_MEASURE_WMIN - #undef DISABLE_INACTIVE_W + #undef DISABLE_IDLE_W #undef SAFE_BED_LEVELING_START_W #undef STEALTHCHOP_W #undef STEP_STATE_W @@ -180,6 +180,7 @@ #define NO_VOLUMETRICS #undef ADVANCED_PAUSE_FEATURE #undef AUTOTEMP + #undef DISABLE_IDLE_E #undef EXTRUDER_RUNOUT_PREVENT #undef FILAMENT_LOAD_UNLOAD_GCODES #undef FWRETRACT @@ -194,6 +195,43 @@ #undef WATCH_TEMP_PERIOD #endif +#if ENABLED(DISABLE_X) && !defined(DISABLE_IDLE_X) + #define DISABLE_IDLE_X +#endif +#if ENABLED(DISABLE_Y) && !defined(DISABLE_IDLE_Y) + #define DISABLE_IDLE_Y +#endif +#if ENABLED(DISABLE_Z) && !defined(DISABLE_IDLE_Z) + #define DISABLE_IDLE_Z +#endif +#if ENABLED(DISABLE_I) && !defined(DISABLE_IDLE_I) + #define DISABLE_IDLE_I +#endif +#if ENABLED(DISABLE_J) && !defined(DISABLE_IDLE_J) + #define DISABLE_IDLE_J +#endif +#if ENABLED(DISABLE_K) && !defined(DISABLE_IDLE_K) + #define DISABLE_IDLE_K +#endif +#if ENABLED(DISABLE_U) && !defined(DISABLE_IDLE_U) + #define DISABLE_IDLE_U +#endif +#if ENABLED(DISABLE_V) && !defined(DISABLE_IDLE_V) + #define DISABLE_IDLE_V +#endif +#if ENABLED(DISABLE_W) && !defined(DISABLE_IDLE_W) + #define DISABLE_IDLE_W +#endif +#if ENABLED(DISABLE_E) && !defined(DISABLE_IDLE_E) + #define DISABLE_IDLE_E +#endif + +#define _OR_HAS_DI(A) || BOTH(HAS_##A##_AXIS, DISABLE_IDLE_##A) +#if BOTH(HAS_EXTRUDERS, DISABLE_IDLE_E) MAP(_OR_HAS_DI, X, Y, Z, I, J, K, U, V, W) + #define HAS_DISABLE_IDLE_AXES 1 +#endif +#undef _OR_HAS_DI + #if HOTENDS <= 7 #undef E7_AUTO_FAN_PIN #if HOTENDS <= 6 diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index edd3edf246..bf9ede65dc 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -1487,43 +1487,6 @@ #endif #endif -#if !defined(DISABLE_INACTIVE_X) && ENABLED(DISABLE_X) - #define DISABLE_INACTIVE_X -#endif -#if !defined(DISABLE_INACTIVE_Y) && ENABLED(DISABLE_Y) - #define DISABLE_INACTIVE_Y -#endif -#if !defined(DISABLE_INACTIVE_Z) && ENABLED(DISABLE_Z) - #define DISABLE_INACTIVE_Z -#endif -#if !defined(DISABLE_INACTIVE_I) && ENABLED(DISABLE_I) - #define DISABLE_INACTIVE_I -#endif -#if !defined(DISABLE_INACTIVE_J) && ENABLED(DISABLE_J) - #define DISABLE_INACTIVE_J -#endif -#if !defined(DISABLE_INACTIVE_K) && ENABLED(DISABLE_K) - #define DISABLE_INACTIVE_K -#endif -#if !defined(DISABLE_INACTIVE_U) && ENABLED(DISABLE_U) - #define DISABLE_INACTIVE_U -#endif -#if !defined(DISABLE_INACTIVE_V) && ENABLED(DISABLE_V) - #define DISABLE_INACTIVE_V -#endif -#if !defined(DISABLE_INACTIVE_W) && ENABLED(DISABLE_W) - #define DISABLE_INACTIVE_W -#endif -#if !defined(DISABLE_INACTIVE_EXTRUDER) && ENABLED(DISABLE_E) - #define DISABLE_INACTIVE_EXTRUDER -#endif -#if ANY(DISABLE_INACTIVE_X, DISABLE_INACTIVE_Y, DISABLE_INACTIVE_Z, DISABLE_INACTIVE_I, DISABLE_INACTIVE_J, DISABLE_INACTIVE_K, DISABLE_INACTIVE_U, DISABLE_INACTIVE_V, DISABLE_INACTIVE_W, DISABLE_INACTIVE_EXTRUDER) - #define HAS_DISABLE_INACTIVE_AXIS 1 -#endif -#if ANY(DISABLE_X, DISABLE_Y, DISABLE_Z, DISABLE_I, DISABLE_J, DISABLE_K, DISABLE_U, DISABLE_V, DISABLE_W, DISABLE_E) - #define HAS_DISABLE_AXIS 1 -#endif - // Extruder steppers and solenoids #if HAS_EXTRUDERS diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 70dcd590fd..88dd13a054 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -674,8 +674,8 @@ #error "EXPERIMENTAL_SCURVE is no longer needed and should be removed." #elif defined(BABYSTEP_ZPROBE_GFX_OVERLAY) #error "BABYSTEP_ZPROBE_GFX_OVERLAY is now BABYSTEP_GFX_OVERLAY." -#elif defined(DISABLE_INACTIVE_E) - #error "DISABLE_INACTIVE_E is now set with DISABLE_INACTIVE_EXTRUDER." +#elif defined(DISABLE_INACTIVE_EXTRUDER) + #error "DISABLE_INACTIVE_EXTRUDER is now DISABLE_OTHER_EXTRUDERS." #elif defined(INVERT_X_STEP_PIN) || defined(INVERT_Y_STEP_PIN) || defined(INVERT_Z_STEP_PIN) || defined(INVERT_I_STEP_PIN) || defined(INVERT_J_STEP_PIN) || defined(INVERT_K_STEP_PIN) || defined(INVERT_U_STEP_PIN) || defined(INVERT_V_STEP_PIN) || defined(INVERT_W_STEP_PIN) || defined(INVERT_E_STEP_PIN) #error "INVERT_*_STEP_PIN true is now STEP_STATE_* LOW, and INVERT_*_STEP_PIN false is now STEP_STATE_* HIGH." #elif defined(PROBE_PT_1_X) || defined(PROBE_PT_1_Y) || defined(PROBE_PT_2_X) || defined(PROBE_PT_2_Y) || defined(PROBE_PT_3_X) || defined(PROBE_PT_3_Y) @@ -692,6 +692,12 @@ || defined(U_MAX_ENDSTOP_INVERTING) || defined(V_MAX_ENDSTOP_INVERTING) || defined(W_MAX_ENDSTOP_INVERTING) \ || defined(Z_MIN_PROBE_ENDSTOP_INVERTING) #error "*_ENDSTOP_INVERTING false/true is now set with *_ENDSTOP_HIT_STATE HIGH/LOW." +#elif defined(DISABLE_INACTIVE_X) || defined(DISABLE_INACTIVE_Y) || defined(DISABLE_INACTIVE_Z) \ + || defined(DISABLE_INACTIVE_I) || defined(DISABLE_INACTIVE_J) || defined(DISABLE_INACTIVE_K) \ + || defined(DISABLE_INACTIVE_U) || defined(DISABLE_INACTIVE_V) || defined(DISABLE_INACTIVE_W) || defined(DISABLE_INACTIVE_E) + #error "DISABLE_INACTIVE_[XYZIJKUVWE] is now DISABLE_IDLE_[XYZIJKUVWE]." +#elif defined(DEFAULT_STEPPER_DEACTIVE_TIME) + #error "DEFAULT_STEPPER_DEACTIVE_TIME is now DEFAULT_STEPPER_TIMEOUT_SEC." #endif // L64xx stepper drivers have been removed @@ -1398,8 +1404,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "MIXING_EXTRUDER is incompatible with (MECHANICAL_)SWITCHING_EXTRUDER." #elif ENABLED(SINGLENOZZLE) #error "MIXING_EXTRUDER is incompatible with SINGLENOZZLE." - #elif ENABLED(DISABLE_INACTIVE_EXTRUDER) - #error "MIXING_EXTRUDER is incompatible with DISABLE_INACTIVE_EXTRUDER." + #elif ENABLED(DISABLE_OTHER_EXTRUDERS) + #error "MIXING_EXTRUDER is incompatible with DISABLE_OTHER_EXTRUDERS." #elif HAS_FILAMENT_RUNOUT_DISTANCE #error "MIXING_EXTRUDER is incompatible with FILAMENT_RUNOUT_DISTANCE_MM." #endif @@ -2286,10 +2292,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS /** * Make sure DISABLE_[XYZ] compatible with selected homing options */ -#if ANY(DISABLE_X, DISABLE_Y, DISABLE_Z, DISABLE_I, DISABLE_J, DISABLE_K, DISABLE_U, DISABLE_V, DISABLE_W) - #if EITHER(HOME_AFTER_DEACTIVATE, Z_SAFE_HOMING) - #error "DISABLE_[XYZIJKUVW] is not compatible with HOME_AFTER_DEACTIVATE or Z_SAFE_HOMING." - #endif +#if HAS_DISABLE_MAIN_AXES && EITHER(HOME_AFTER_DEACTIVATE, Z_SAFE_HOMING) + #error "DISABLE_[XYZIJKUVW] is not compatible with HOME_AFTER_DEACTIVATE or Z_SAFE_HOMING." #endif /** @@ -4264,7 +4268,7 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); #undef _PIN_CONFLICT #ifdef LASER_SAFETY_TIMEOUT_MS - static_assert(LASER_SAFETY_TIMEOUT_MS < (DEFAULT_STEPPER_DEACTIVE_TIME) * 1000UL, "LASER_SAFETY_TIMEOUT_MS must be less than DEFAULT_STEPPER_DEACTIVE_TIME (" STRINGIFY(DEFAULT_STEPPER_DEACTIVE_TIME) " seconds)"); + static_assert(LASER_SAFETY_TIMEOUT_MS < (DEFAULT_STEPPER_TIMEOUT_SEC) * 1000UL, "LASER_SAFETY_TIMEOUT_MS must be less than DEFAULT_STEPPER_TIMEOUT_SEC (" STRINGIFY(DEFAULT_STEPPER_TIMEOUT_SEC) " seconds)"); #endif #endif diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 12e879af96..8e77a7c979 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -215,7 +215,7 @@ uint32_t Planner::acceleration_long_cutoff; xyze_float_t Planner::previous_speed; float Planner::previous_nominal_speed; -#if ENABLED(DISABLE_INACTIVE_EXTRUDER) +#if ENABLED(DISABLE_OTHER_EXTRUDERS) last_move_t Planner::extruder_last_move[E_STEPPERS] = { 0 }; #endif @@ -1320,7 +1320,7 @@ void Planner::recalculate(TERN_(HINTS_SAFE_EXIT_SPEED, const_float_t safe_exit_s */ void Planner::check_axes_activity() { - #if HAS_DISABLE_AXIS + #if HAS_DISABLE_AXES xyze_bool_t axis_active = { false }; #endif @@ -1360,7 +1360,7 @@ void Planner::check_axes_activity() { TERN_(HAS_HEATER_2, tail_e_to_p_pressure = block->e_to_p_pressure); #endif - #if HAS_DISABLE_AXIS + #if HAS_DISABLE_AXES for (uint8_t b = block_buffer_tail; b != block_buffer_head; b = next_block_index(b)) { block_t * const bnext = &block_buffer[b]; LOGICAL_AXIS_CODE( @@ -1401,18 +1401,20 @@ void Planner::check_axes_activity() { // // Disable inactive axes // - LOGICAL_AXIS_CODE( - if (TERN0(DISABLE_E, !axis_active.e)) stepper.disable_e_steppers(), - if (TERN0(DISABLE_X, !axis_active.x)) stepper.disable_axis(X_AXIS), - if (TERN0(DISABLE_Y, !axis_active.y)) stepper.disable_axis(Y_AXIS), - if (TERN0(DISABLE_Z, !axis_active.z)) stepper.disable_axis(Z_AXIS), - if (TERN0(DISABLE_I, !axis_active.i)) stepper.disable_axis(I_AXIS), - if (TERN0(DISABLE_J, !axis_active.j)) stepper.disable_axis(J_AXIS), - if (TERN0(DISABLE_K, !axis_active.k)) stepper.disable_axis(K_AXIS), - if (TERN0(DISABLE_U, !axis_active.u)) stepper.disable_axis(U_AXIS), - if (TERN0(DISABLE_V, !axis_active.v)) stepper.disable_axis(V_AXIS), - if (TERN0(DISABLE_W, !axis_active.w)) stepper.disable_axis(W_AXIS) - ); + #if HAS_DISABLE_AXES + LOGICAL_AXIS_CODE( + if (TERN0(DISABLE_E, !axis_active.e)) stepper.disable_e_steppers(), + if (TERN0(DISABLE_X, !axis_active.x)) stepper.disable_axis(X_AXIS), + if (TERN0(DISABLE_Y, !axis_active.y)) stepper.disable_axis(Y_AXIS), + if (TERN0(DISABLE_Z, !axis_active.z)) stepper.disable_axis(Z_AXIS), + if (TERN0(DISABLE_I, !axis_active.i)) stepper.disable_axis(I_AXIS), + if (TERN0(DISABLE_J, !axis_active.j)) stepper.disable_axis(J_AXIS), + if (TERN0(DISABLE_K, !axis_active.k)) stepper.disable_axis(K_AXIS), + if (TERN0(DISABLE_U, !axis_active.u)) stepper.disable_axis(U_AXIS), + if (TERN0(DISABLE_V, !axis_active.v)) stepper.disable_axis(V_AXIS), + if (TERN0(DISABLE_W, !axis_active.w)) stepper.disable_axis(W_AXIS) + ); + #endif // // Update Fan speeds @@ -2276,7 +2278,7 @@ bool Planner::_populate_block( if (esteps) { TERN_(AUTO_POWER_CONTROL, powerManager.power_on()); - #if ENABLED(DISABLE_INACTIVE_EXTRUDER) // Enable only the selected extruder + #if ENABLED(DISABLE_OTHER_EXTRUDERS) // Enable only the selected extruder // Count down all steppers that were recently moved LOOP_L_N(i, E_STEPPERS) diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index 9497912d2f..ccf6ba08d3 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -352,7 +352,7 @@ typedef struct { } skew_factor_t; #endif -#if ENABLED(DISABLE_INACTIVE_EXTRUDER) +#if ENABLED(DISABLE_OTHER_EXTRUDERS) typedef uvalue_t(BLOCK_BUFFER_SIZE * 2) last_move_t; #endif @@ -533,7 +533,7 @@ class Planner { static float last_fade_z; #endif - #if ENABLED(DISABLE_INACTIVE_EXTRUDER) + #if ENABLED(DISABLE_OTHER_EXTRUDERS) // Counters to manage disabling inactive extruder steppers static last_move_t extruder_last_move[E_STEPPERS]; #endif diff --git a/buildroot/tests/mega2560 b/buildroot/tests/mega2560 index ae3d1c45f8..c2a3452e67 100755 --- a/buildroot/tests/mega2560 +++ b/buildroot/tests/mega2560 @@ -82,7 +82,7 @@ opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO MIXING_STEPPERS 5 LCD_LANGUAGE ru \ opt_enable MIXING_EXTRUDER GRADIENT_MIX GRADIENT_VTOOL CR10_STOCKDISPLAY \ USE_CONTROLLER_FAN CONTROLLER_FAN_EDITABLE CONTROLLER_FAN_IGNORE_Z \ FILAMENT_RUNOUT_SENSOR ADVANCED_PAUSE_FEATURE NOZZLE_PARK_FEATURE INPUT_SHAPING_X INPUT_SHAPING_Y -opt_disable DISABLE_INACTIVE_EXTRUDER +opt_disable DISABLE_OTHER_EXTRUDERS exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Input Shaping | Greek" "$3" # diff --git a/buildroot/tests/rambo b/buildroot/tests/rambo index 7e6f71364c..ca6aae471f 100755 --- a/buildroot/tests/rambo +++ b/buildroot/tests/rambo @@ -125,7 +125,7 @@ opt_enable COREYX USE_XMAX_PLUG MIXING_EXTRUDER GRADIENT_MIX \ SD_ABORT_ON_ENDSTOP_HIT HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT HOST_PAUSE_M76 ADVANCED_OK M114_DETAIL \ VOLUMETRIC_DEFAULT_ON NO_WORKSPACE_OFFSETS EXTRA_FAN_SPEED FWRETRACT \ USE_CONTROLLER_FAN CONTROLLER_FAN_EDITABLE CONTROLLER_FAN_USE_Z_ONLY -opt_disable DISABLE_INACTIVE_EXTRUDER +opt_disable DISABLE_OTHER_EXTRUDERS exec_test $1 $2 "Rambo | CoreXY, Gradient Mix | Endstop Int. | Home Y > X | FW Retract ..." "$3" # clean up diff --git a/buildroot/tests/teensy35 b/buildroot/tests/teensy35 index d9e7839da8..fd6ae86387 100755 --- a/buildroot/tests/teensy35 +++ b/buildroot/tests/teensy35 @@ -68,7 +68,7 @@ exec_test $1 $2 "PARKING_EXTRUDER with LCD" "$3" restore_configs opt_set MOTHERBOARD BOARD_TEENSY35_36 MIXING_STEPPERS 2 opt_enable MIXING_EXTRUDER DIRECT_MIXING_IN_G1 GRADIENT_MIX GRADIENT_VTOOL REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER -opt_disable DISABLE_INACTIVE_EXTRUDER +opt_disable DISABLE_OTHER_EXTRUDERS exec_test $1 $2 "Mixing Extruder" "$3" # diff --git a/buildroot/tests/teensy41 b/buildroot/tests/teensy41 index f852474ac0..11b5e34025 100755 --- a/buildroot/tests/teensy41 +++ b/buildroot/tests/teensy41 @@ -71,7 +71,7 @@ exec_test $1 $2 "Ethernet, EEPROM, Magnetic Parking Extruder, No LCD" "$3" restore_configs opt_set MOTHERBOARD BOARD_TEENSY41 MIXING_STEPPERS 2 opt_enable MIXING_EXTRUDER DIRECT_MIXING_IN_G1 GRADIENT_MIX GRADIENT_VTOOL -opt_disable DISABLE_INACTIVE_EXTRUDER +opt_disable DISABLE_OTHER_EXTRUDERS exec_test $1 $2 "Mixing Extruder" "$3" # From 1adf76dd23269101439976a2873b96cc6a82f676 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 27 Mar 2023 00:21:15 +0000 Subject: [PATCH 189/659] [cron] Bump distribution date (2023-03-27) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index baa481f8f0..73ec99f61d 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-26" +//#define STRING_DISTRIBUTION_DATE "2023-03-27" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index e5489d990f..c169ec5129 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-26" + #define STRING_DISTRIBUTION_DATE "2023-03-27" #endif /** From c2decc3e2e30c7cb0f517b7e40d8138a8c1d4a81 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 26 Mar 2023 17:49:51 -0500 Subject: [PATCH 190/659] =?UTF-8?q?=F0=9F=94=A8=20Fix=20thread-unsafe=20de?= =?UTF-8?q?que=20iteration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/share/PlatformIO/scripts/marlin.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/buildroot/share/PlatformIO/scripts/marlin.py b/buildroot/share/PlatformIO/scripts/marlin.py index 169dd9d3c3..8d8dbb5b63 100644 --- a/buildroot/share/PlatformIO/scripts/marlin.py +++ b/buildroot/share/PlatformIO/scripts/marlin.py @@ -16,7 +16,8 @@ def copytree(src, dst, symlinks=False, ignore=None): shutil.copy2(item, dst / item.name) def replace_define(field, value): - for define in env['CPPDEFINES']: + envdefs = env['CPPDEFINES'].copy() + for define in envdefs: if define[0] == field: env['CPPDEFINES'].remove(define) env['CPPDEFINES'].append((field, value)) From 08675612d5425d6a3824d0113b2a5c4072193a4d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 26 Mar 2023 21:36:40 -0500 Subject: [PATCH 191/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20AnyCubic=20Vyper?= =?UTF-8?q?=20ProcessPanelRequest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25405 --- Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp index 9487f22e89..e9e80101f6 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp @@ -1004,7 +1004,7 @@ namespace Anycubic { if (0x83 == data_buf[0]) { control_index = uint16_t(data_buf[1] << 8) | uint16_t(data_buf[2]); - if (control_index == KEY_ADDRESS) { // is KEY + if ((control_index & 0xF000) == KEY_ADDRESS) { // is KEY //key_index = control_index; key_value = (uint16_t(data_buf[4]) << 8) | uint16_t(data_buf[5]); } @@ -1102,7 +1102,7 @@ namespace Anycubic { } */ } - else if (data_buf[0] == 0x82) { + else if (0x82 == data_buf[0]) { // send_cmd_to_pc(cmd ,start ); } } From 41487bc9e73457021a544a17bc2d8b61cb3223c9 Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Mon, 27 Mar 2023 04:57:56 +0200 Subject: [PATCH 192/659] =?UTF-8?q?=F0=9F=8E=A8=20Suppress=20a=20type=20wa?= =?UTF-8?q?rning=20(#25575)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/probe.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 90dccf7a7b..90ef42b643 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -310,9 +310,9 @@ public: points[1] = xy_float_t({ (X_CENTER) + probe_radius() * COS120, (Y_CENTER) + probe_radius() * SIN120 }); points[2] = xy_float_t({ (X_CENTER) + probe_radius() * COS240, (Y_CENTER) + probe_radius() * SIN240 }); #elif ENABLED(AUTO_BED_LEVELING_UBL) - points[0] = xy_float_t({ _MAX(MESH_MIN_X, min_x()), _MAX(MESH_MIN_Y, min_y()) }); - points[1] = xy_float_t({ _MIN(MESH_MAX_X, max_x()), _MAX(MESH_MIN_Y, min_y()) }); - points[2] = xy_float_t({ (_MAX(MESH_MIN_X, min_x()) + _MIN(MESH_MAX_X, max_x())) / 2, _MIN(MESH_MAX_Y, max_y()) }); + points[0] = xy_float_t({ _MAX(float(MESH_MIN_X), min_x()), _MAX(float(MESH_MIN_Y), min_y()) }); + points[1] = xy_float_t({ _MIN(float(MESH_MAX_X), max_x()), _MAX(float(MESH_MIN_Y), min_y()) }); + points[2] = xy_float_t({ (_MAX(float(MESH_MIN_X), min_x()) + _MIN(float(MESH_MAX_X), max_x())) / 2, _MIN(float(MESH_MAX_Y), max_y()) }); #else points[0] = xy_float_t({ min_x(), min_y() }); points[1] = xy_float_t({ max_x(), min_y() }); From e0132f7a1ec256ffe07d44c181fe1f2a799fd109 Mon Sep 17 00:00:00 2001 From: Alexander Gavrilenko Date: Mon, 27 Mar 2023 21:17:02 +0300 Subject: [PATCH 193/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Improve=20TFT=20DM?= =?UTF-8?q?A=20for=20STM32=20(#25359)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 4 +- Marlin/src/HAL/LPC1768/tft/tft_spi.cpp | 2 +- Marlin/src/HAL/STM32/tft/tft_fsmc.cpp | 8 +- Marlin/src/HAL/STM32/tft/tft_spi.cpp | 3 +- Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp | 2 + Marlin/src/HAL/STM32F1/tft/tft_fsmc.h | 7 + Marlin/src/HAL/STM32F1/tft/tft_spi.cpp | 2 +- Marlin/src/inc/SanityCheck.h | 2 + Marlin/src/lcd/tft_io/ili9328.h | 2 +- Marlin/src/lcd/tft_io/ili9341.h | 39 +-- Marlin/src/lcd/tft_io/ili9488.h | 232 ++++++++++-------- Marlin/src/lcd/tft_io/r65105.h | 2 +- Marlin/src/lcd/tft_io/st7789v.h | 26 +- Marlin/src/lcd/tft_io/st7796s.h | 12 +- Marlin/src/pins/stm32f1/pins_CHITU3D_common.h | 2 - Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h | 2 - .../src/pins/stm32f1/pins_JGAURORA_A5S_A1.h | 2 - Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h | 2 - .../pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h | 2 - Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h | 2 - Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h | 2 - .../pins/stm32f1/pins_MKS_ROBIN_NANO_common.h | 2 - Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h | 2 - Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h | 2 - Marlin/src/pins/stm32f4/pins_TRONXY_V10.h | 2 - 25 files changed, 198 insertions(+), 167 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 2f4b18a210..475f662ca5 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -3292,11 +3292,11 @@ */ #define TFT_FONT NOTOSANS - //#define TFT_SHARED_SPI // SPI is shared between TFT display and other devices. Disable async data transfer + //#define TFT_SHARED_IO // I/O is shared between TFT display and other devices. Disable async data transfer. #endif #if ENABLED(TFT_LVGL_UI) - //#define MKS_WIFI_MODULE // MKS WiFi module + //#define MKS_WIFI_MODULE // MKS WiFi module #endif /** diff --git a/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp b/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp index 804fc85e79..abf1cf5e43 100644 --- a/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp +++ b/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp @@ -139,7 +139,7 @@ void TFT_SPI::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Coun DataTransferBegin(DATASIZE_16BIT); SPIx.dmaSendAsync(Data, Count, MemoryIncrease); - TERN_(TFT_SHARED_SPI, while (isBusy())); + TERN_(TFT_SHARED_IO, while (isBusy())); } #endif // HAS_SPI_TFT diff --git a/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp b/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp index cf9e569336..fa43a7ad27 100644 --- a/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp +++ b/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp @@ -100,11 +100,11 @@ void TFT_FSMC::Init() { HAL_SRAM_Init(&SRAMx, &Timing, &ExtTiming); - __HAL_RCC_DMA2_CLK_ENABLE(); - #ifdef STM32F1xx - DMAtx.Instance = DMA2_Channel1; + __HAL_RCC_DMA1_CLK_ENABLE(); + DMAtx.Instance = DMA1_Channel1; #elif defined(STM32F4xx) + __HAL_RCC_DMA2_CLK_ENABLE(); DMAtx.Instance = DMA2_Stream0; DMAtx.Init.Channel = DMA_CHANNEL_0; DMAtx.Init.FIFOMode = DMA_FIFOMODE_ENABLE; @@ -174,6 +174,8 @@ void TFT_FSMC::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Cou DMAtx.Init.PeriphInc = MemoryIncrease; HAL_DMA_Init(&DMAtx); HAL_DMA_Start(&DMAtx, (uint32_t)Data, (uint32_t)&(LCD->RAM), Count); + + TERN_(TFT_SHARED_IO, while (isBusy())); } void TFT_FSMC::Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { diff --git a/Marlin/src/HAL/STM32/tft/tft_spi.cpp b/Marlin/src/HAL/STM32/tft/tft_spi.cpp index 5e79f156d2..6ee4dc3364 100644 --- a/Marlin/src/HAL/STM32/tft/tft_spi.cpp +++ b/Marlin/src/HAL/STM32/tft/tft_spi.cpp @@ -242,7 +242,7 @@ void TFT_SPI::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Coun SET_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); // Enable Tx DMA Request - TERN_(TFT_SHARED_SPI, while (isBusy())); + TERN_(TFT_SHARED_IO, while (isBusy())); } @@ -261,6 +261,7 @@ void TFT_SPI::Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) SET_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); // Enable Tx DMA Request HAL_DMA_PollForTransfer(&DMAtx, HAL_DMA_FULL_TRANSFER, HAL_MAX_DELAY); + while ( __HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY)) {} Abort(); } diff --git a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp index 512e70cf3f..3fd92ed02b 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp +++ b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp @@ -245,6 +245,8 @@ void TFT_FSMC::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Cou dma_set_num_transfers(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, Count); dma_clear_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); dma_enable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); + + TERN_(TFT_SHARED_IO, while (isBusy())); } void TFT_FSMC::Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { diff --git a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h index 8d26f6eac0..ab98334f57 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h +++ b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h @@ -30,6 +30,13 @@ #include +#ifndef FSMC_DMA_DEV + #define FSMC_DMA_DEV DMA2 +#endif +#ifndef FSMC_DMA_CHANNEL + #define FSMC_DMA_CHANNEL DMA_CH5 +#endif + #define DATASIZE_8BIT DMA_SIZE_8BITS #define DATASIZE_16BIT DMA_SIZE_16BITS #define TFT_IO_DRIVER TFT_FSMC diff --git a/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp b/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp index bb495d5f58..9129cfdf1f 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp +++ b/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp @@ -154,7 +154,7 @@ void TFT_SPI::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Coun DataTransferBegin(); SPIx.dmaSendAsync(Data, Count, MemoryIncrease == DMA_MINC_ENABLE); - TERN_(TFT_SHARED_SPI, while (isBusy())); + TERN_(TFT_SHARED_IO, while (isBusy())); } void TFT_SPI::Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 88dd13a054..8fbc0c4541 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -698,6 +698,8 @@ #error "DISABLE_INACTIVE_[XYZIJKUVWE] is now DISABLE_IDLE_[XYZIJKUVWE]." #elif defined(DEFAULT_STEPPER_DEACTIVE_TIME) #error "DEFAULT_STEPPER_DEACTIVE_TIME is now DEFAULT_STEPPER_TIMEOUT_SEC." +#elif defined(TFT_SHARED_SPI) + #error "TFT_SHARED_SPI is now TFT_SHARED_IO." #endif // L64xx stepper drivers have been removed diff --git a/Marlin/src/lcd/tft_io/ili9328.h b/Marlin/src/lcd/tft_io/ili9328.h index b50517adfe..823835f448 100644 --- a/Marlin/src/lcd/tft_io/ili9328.h +++ b/Marlin/src/lcd/tft_io/ili9328.h @@ -39,7 +39,7 @@ #define ILI9328_ETMOD_ID0 0x0010 // 0 - Horizontal Decrement / 1 - Horizontal Increment #define ILI9328_ETMOD_AM 0x0008 // 0 - Horizontal / 1 - Vertical -// MKS Robin TFT v1.1 - 320x240 ; Cable on the left side +// MKS Robin TFT v1.1 - 320x240 ; FPC cable on the left side #if TFT_ROTATION == TFT_ROTATE_180 #define ILI9328_DRVCTL_DATA 0x0000 diff --git a/Marlin/src/lcd/tft_io/ili9341.h b/Marlin/src/lcd/tft_io/ili9341.h index dda326df6d..4488287430 100644 --- a/Marlin/src/lcd/tft_io/ili9341.h +++ b/Marlin/src/lcd/tft_io/ili9341.h @@ -33,10 +33,10 @@ #define ILI9341_MADCTL_RGB 0x00 #define ILI9341_MADCTL_MH 0x04 // Horizontal Refresh Order -#define ILI9341_ORIENTATION_UP ILI9341_MADCTL_MY // 240x320 ; Cable on the upper side -#define ILI9341_ORIENTATION_RIGHT ILI9341_MADCTL_MV // 320x240 ; Cable on the right side -#define ILI9341_ORIENTATION_LEFT ILI9341_MADCTL_MY | ILI9341_MADCTL_MX | ILI9341_MADCTL_MV // 320x240 ; Cable on the left side -#define ILI9341_ORIENTATION_DOWN ILI9341_MADCTL_MX // 240x320 ; Cable on the upper side +#define ILI9341_ORIENTATION_TOP ILI9341_MADCTL_MY // 240x320 ; FPC cable on the top side +#define ILI9341_ORIENTATION_RIGHT ILI9341_MADCTL_MV // 320x240 ; FPC cable on the right side +#define ILI9341_ORIENTATION_LEFT ILI9341_MADCTL_MY | ILI9341_MADCTL_MX | ILI9341_MADCTL_MV // 320x240 ; FPC cable on the left side +#define ILI9341_ORIENTATION_BOTTOM ILI9341_MADCTL_MX // 240x320 ; FPC cable on the bottom side #define ILI9341_ORIENTATION IF_0((TFT_ORIENTATION) & TFT_EXCHANGE_XY, ILI9341_MADCTL_MV) | \ IF_0((TFT_ORIENTATION) & TFT_INVERT_X, ILI9341_MADCTL_MX) | \ @@ -52,7 +52,7 @@ #define ILI9341_NOP 0x00 // No Operation #define ILI9341_SWRESET 0x01 // Software Reset -#define ILI9341_RDDIDIF 0x04 // Read display identification information +#define ILI9341_RDDIDIF 0x04 // Read Display Identification Information #define ILI9341_RDDST 0x09 // Read Display Status #define ILI9341_RDDPM 0x0A // Read Display Power Mode #define ILI9341_RDDMADCTL 0x0B // Read Display MADCTL @@ -141,20 +141,21 @@ static const uint16_t ili9341_init[] = { DATASIZE_8BIT, ESC_REG(ILI9341_SWRESET), ESC_DELAY(100), ESC_REG(ILI9341_SLPOUT), ESC_DELAY(20), -/* - ESC_REG(ILI9341_PWCTRLA), 0x0039, 0x002C, 0x0000, 0x0034, 0x0002, // Power control A - ESC_REG(ILI9341_PWCTRLB), 0x0000, 0x00C1, 0x0030, // Power control B - ESC_REG(ILI9341_DRVTCTLA1), 0x0085, 0x0000, 0x0078, // Driver timing control A - ESC_REG(ILI9341_DRVTCTLB), 0x0000, 0x0000, // Driver timing control B - ESC_REG(ILI9341_PONSEQCTL), 0x0064, 0x0003, 0x0012, 0x0081, // Power on sequence control - ESC_REG(ILI9341_DISCTRL), 0x0008, 0x0082, 0x0027, // Display Function Control - ESC_REG(ILI9341_PUMPRCTL), 0x0020, // Pump ratio control - ESC_REG(ILI9341_VMCTRL1), 0x003E, 0x0028, // VCOM Control 1 - ESC_REG(ILI9341_VMCTRL2), 0x0086, // VCOM Control 2 - ESC_REG(ILI9341_FRMCTR1), 0x0000, 0x0018, // Frame Rate Control (In Normal Mode/Full Colors) - ESC_REG(ILI9341_PWCTRL1), 0x0023, // Power Control 1 - ESC_REG(ILI9341_PWCTRL2), 0x0010, // Power Control 2 -*/ + + ESC_REG(ILI9341_PWCTRLA), 0x0039, 0x002C, 0x0000, 0x0034, 0x0002, + ESC_REG(ILI9341_PWCTRLB), 0x0000, 0x00C1, 0x0030, + ESC_REG(ILI9341_DRVTCTLA1), 0x0085, 0x0000, 0x0078, + ESC_REG(ILI9341_DRVTCTLB), 0x0000, 0x0000, + ESC_REG(ILI9341_PONSEQCTL), 0x0064, 0x0003, 0x0012, 0x0081, + ESC_REG(ILI9341_DISCTRL), 0x0008, 0x0082, 0x0027, // Source Output Scan Direction: 0, Gate Output Scan Direction: 0 + ESC_REG(ILI9341_DINVOFF), + ESC_REG(ILI9341_PUMPRCTL), 0x0020, + ESC_REG(ILI9341_VMCTRL1), 0x003E, 0x0028, + ESC_REG(ILI9341_VMCTRL2), 0x0086, + ESC_REG(ILI9341_FRMCTR1), 0x0000, 0x0018, + ESC_REG(ILI9341_PWCTRL1), 0x0023, + ESC_REG(ILI9341_PWCTRL2), 0x0010, + ESC_REG(ILI9341_MADCTL), ILI9341_MADCTL_DATA, ESC_REG(ILI9341_PIXSET), 0x0055, diff --git a/Marlin/src/lcd/tft_io/ili9488.h b/Marlin/src/lcd/tft_io/ili9488.h index e71c0d16d7..fc2add662d 100644 --- a/Marlin/src/lcd/tft_io/ili9488.h +++ b/Marlin/src/lcd/tft_io/ili9488.h @@ -25,18 +25,18 @@ #include "../../inc/MarlinConfig.h" -#define ILI9488_MADCTL_MY 0x80 // Row Address Order -#define ILI9488_MADCTL_MX 0x40 // Column Address Order -#define ILI9488_MADCTL_MV 0x20 // Row/Column Exchange -#define ILI9488_MADCTL_ML 0x10 // Vertical Refresh Order -#define ILI9488_MADCTL_BGR 0x08 // RGB-BGR ORDER -#define ILI9488_MADCTL_RGB 0x00 -#define ILI9488_MADCTL_MH 0x04 // Horizontal Refresh Order +#define ILI9488_MADCTL_MY 0x80 // Row Address Order +#define ILI9488_MADCTL_MX 0x40 // Column Address Order +#define ILI9488_MADCTL_MV 0x20 // Row/Column Exchange +#define ILI9488_MADCTL_ML 0x10 // Vertical Refresh Order +#define ILI9488_MADCTL_BGR 0x08 // RGB-BGR ORDER +#define ILI9488_MADCTL_RGB 0x00 +#define ILI9488_MADCTL_MH 0x04 // Horizontal Refresh Order -#define ILI9488_ORIENTATION_UP ILI9488_MADCTL_MY // 320x480 ; Cable on the upper side -#define ILI9488_ORIENTATION_RIGHT ILI9488_MADCTL_MV // 480x320 ; Cable on the right side -#define ILI9488_ORIENTATION_LEFT ILI9488_MADCTL_MY | ILI9488_MADCTL_MX | ILI9488_MADCTL_MV // 480x320 ; Cable on the left side -#define ILI9488_ORIENTATION_DOWN ILI9488_MADCTL_MX // 320x480 ; Cable on the upper side +#define ILI9488_ORIENTATION_TOP ILI9488_MADCTL_MY // 320x480 ; FPC cable on the top side +#define ILI9488_ORIENTATION_RIGHT ILI9488_MADCTL_MV // 480x320 ; FPC cable on the right side +#define ILI9488_ORIENTATION_LEFT ILI9488_MADCTL_MY | ILI9488_MADCTL_MX | ILI9488_MADCTL_MV // 480x320 ; FPC cable on the left side +#define ILI9488_ORIENTATION_BOTTOM ILI9488_MADCTL_MX // 320x480 ; FPC cable on the bottom side #define ILI9488_ORIENTATION IF_0((TFT_ORIENTATION) & TFT_EXCHANGE_XY, ILI9488_MADCTL_MV) | \ IF_0((TFT_ORIENTATION) & TFT_INVERT_X, ILI9488_MADCTL_MX) | \ @@ -48,103 +48,113 @@ #define ILI9488_COLOR ILI9488_MADCTL_RGB #endif -#define ILI9488_MADCTL_DATA (ILI9488_ORIENTATION) | (ILI9488_COLOR) +#define ILI9488_MADCTL_DATA (ILI9488_ORIENTATION) | (ILI9488_COLOR) -#define ILI9488_NOP 0x00 // No Operation -#define ILI9488_SWRESET 0x01 // Software Reset -#define ILI9488_RDDIDIF 0x04 // Read Display Identification Information -#define ILI9488_RDNUMED 0x05 // Read Number of the Errors on DSI -#define ILI9488_RDDST 0x09 // Read Display Status -#define ILI9488_RDDPM 0x0A // Read Display Power Mode -#define ILI9488_RDDMADCTL 0x0B // Read Display MADCTL -#define ILI9488_RDDCOLMOD 0x0C // Read Display COLMOD -#define ILI9488_RDDIM 0x0D // Read Display Image Mode -#define ILI9488_RDDSM 0x0E // Read Display Signal Mode -#define ILI9488_RDDSDR 0x0F // Read Display Self-Diagnostic Result -#define ILI9488_SLPIN 0x10 // Sleep IN -#define ILI9488_SLPOUT 0x11 // Sleep OUT -#define ILI9488_PTLON 0x12 // Partial Mode ON -#define ILI9488_NORON 0x13 // Normal Display Mode ON -#define ILI9488_INVOFF 0x20 // Display Inversion OFF -#define ILI9488_INVON 0x21 // Display Inversion ON -#define ILI9488_ALLPOFF 0x22 // All Pixels OFF -#define ILI9488_ALLPON 0x23 // All Pixels ON -#define ILI9488_DISOFF 0x28 // Display OFF -#define ILI9488_DISON 0x29 // Display ON -#define ILI9488_CASET 0x2A // Column Address Set -#define ILI9488_PASET 0x2B // Page Address Set -#define ILI9488_RAMWR 0x2C // Memory Write -#define ILI9488_RAMRD 0x2E // Memory Read -#define ILI9488_PLTAR 0x30 // Partial Area -#define ILI9488_VSCRDEF 0x33 // Vertical Scrolling Definition -#define ILI9488_TEOFF 0x34 // Tearing Effect Line OFF -#define ILI9488_TEON 0x35 // Tearing Effect Line ON -#define ILI9488_MADCTL 0x36 // Memory Access Control -#define ILI9488_VSCRSADD 0x37 // Vertical Scrolling Start Address -#define ILI9488_IDMOFF 0x38 // Idle Mode OFF -#define ILI9488_IDMON 0x39 // Idle Mode ON -#define ILI9488_COLMOD 0x3A // Interface Pixel Format -#define ILI9488_RAMWRC 0x3C // Memory Write Continue -#define ILI9488_RAMRDRC 0x3E // Memory Read Continue -#define ILI9488_TESLWR 0x44 // Write Tear Scan Line -#define ILI9488_TESLRD 0x45 // Read Scan Line -#define ILI9488_WRDISBV 0x51 // Write Display Brightness Value -#define ILI9488_RDDISBV 0x52 // Read Display Brightness Value -#define ILI9488_WRCTRLD 0x53 // Write Control Display Value -#define ILI9488_RDCTRLD 0x54 // Read Control Display Value -#define ILI9488_WRCABC 0x55 // Write Content Adaptive Brightness Control Value -#define ILI9488_RDCABC 0x56 // Read Content Adaptive Brightness Control Value -#define ILI9488_WRCABCMB 0x5E // Write CABC Minimum Brightness -#define ILI9488_RDCABCMB 0x5F // Read CABC Minimum Brightness -#define ILI9488_RDABCSDR 0x68 // Read Automatic Brightness Control Self-diagnostic Result -#define ILI9488_RDID1 0xDA // Read ID1 -#define ILI9488_RDID2 0xDB // Read ID2 -#define ILI9488_RDID3 0xDC // Read ID3 +#define ILI9488_NOP 0x00 // No Operation +#define ILI9488_SWRESET 0x01 // Software Reset +#define ILI9488_RDDIDIF 0x04 // Read Display Identification Information +#define ILI9488_RDNUMED 0x05 // Read Number of the Errors on DSI +#define ILI9488_RDDST 0x09 // Read Display Status +#define ILI9488_RDDPM 0x0A // Read Display Power Mode +#define ILI9488_RDDMADCTL 0x0B // Read Display MADCTL +#define ILI9488_RDDCOLMOD 0x0C // Read Display COLMOD +#define ILI9488_RDDIM 0x0D // Read Display Image Mode +#define ILI9488_RDDSM 0x0E // Read Display Signal Mode +#define ILI9488_RDDSDR 0x0F // Read Display Self-Diagnostic Result +#define ILI9488_SLPIN 0x10 // Sleep IN +#define ILI9488_SLPOUT 0x11 // Sleep OUT +#define ILI9488_PTLON 0x12 // Partial Mode ON +#define ILI9488_NORON 0x13 // Normal Display Mode ON +#define ILI9488_INVOFF 0x20 // Display Inversion OFF +#define ILI9488_INVON 0x21 // Display Inversion ON +#define ILI9488_ALLPOFF 0x22 // All Pixels OFF +#define ILI9488_ALLPON 0x23 // All Pixels ON +#define ILI9488_DISOFF 0x28 // Display OFF +#define ILI9488_DISON 0x29 // Display ON +#define ILI9488_CASET 0x2A // Column Address Set +#define ILI9488_PASET 0x2B // Page Address Set +#define ILI9488_RAMWR 0x2C // Memory Write +#define ILI9488_RAMRD 0x2E // Memory Read +#define ILI9488_PLTAR 0x30 // Partial Area +#define ILI9488_VSCRDEF 0x33 // Vertical Scrolling Definition +#define ILI9488_TEOFF 0x34 // Tearing Effect Line OFF +#define ILI9488_TEON 0x35 // Tearing Effect Line ON +#define ILI9488_MADCTL 0x36 // Memory Access Control +#define ILI9488_VSCRSADD 0x37 // Vertical Scrolling Start Address +#define ILI9488_IDMOFF 0x38 // Idle Mode OFF +#define ILI9488_IDMON 0x39 // Idle Mode ON +#define ILI9488_COLMOD 0x3A // Interface Pixel Format +#define ILI9488_RAMWRC 0x3C // Memory Write Continue +#define ILI9488_RAMRDRC 0x3E // Memory Read Continue +#define ILI9488_TESLWR 0x44 // Write Tear Scan Line +#define ILI9488_TESLRD 0x45 // Read Scan Line +#define ILI9488_WRDISBV 0x51 // Write Display Brightness Value +#define ILI9488_RDDISBV 0x52 // Read Display Brightness Value +#define ILI9488_WRCTRLD 0x53 // Write Control Display Value +#define ILI9488_RDCTRLD 0x54 // Read Control Display Value +#define ILI9488_WRCABC 0x55 // Write Content Adaptive Brightness Control Value +#define ILI9488_RDCABC 0x56 // Read Content Adaptive Brightness Control Value +#define ILI9488_WRCABCMB 0x5E // Write CABC Minimum Brightness +#define ILI9488_RDCABCMB 0x5F // Read CABC Minimum Brightness +#define ILI9488_RDABCSDR 0x68 // Read Automatic Brightness Control Self-diagnostic Result +#define ILI9488_RDID1 0xDA // Read ID1 +#define ILI9488_RDID2 0xDB // Read ID2 +#define ILI9488_RDID3 0xDC // Read ID3 -#define ILI9488_IFMODE 0xB0 // Interface Mode Control -#define ILI9488_FRMCTR1 0xB1 // Frame Rate Control (In Normal Mode/Full Colors) -#define ILI9488_FRMCTR2 0xB2 // Frame Rate Control (In Idle Mode/8 Colors) -#define ILI9488_FRMCTR3 0xB3 // Frame Rate Control (In Partial Mode/Full Colors) -#define ILI9488_INVTR 0xB4 // Display Inversion Control -#define ILI9488_PRCTR 0xB5 // Blanking Porch Control -#define ILI9488_DISCTRL 0xB6 // Display Function Control -#define ILI9488_ETMOD 0xB7 // Entry Mode Set -#define ILI9488_CECTRL1 0xB9 // Color Enhancement Control 1 -#define ILI9488_CECTRL2 0xBA // Color Enhancement Control 2 -#define ILI9488_HSLCTRL 0xBE // HS Lanes Control -#define ILI9488_PWCTRL1 0xC0 // Power Control 1 -#define ILI9488_PWCTRL2 0xC1 // Power Control 2 -#define ILI9488_PWCTRL3 0xC2 // Power Control 3 (For Normal Mode) -#define ILI9488_PWCTRL4 0xC3 // Power Control 4 (For Idle Mode) -#define ILI9488_PWCTRL5 0xC4 // Power Control 5 (For Partial Mode) -#define ILI9488_VMCTRL 0xC5 // VCOM Control -#define ILI9488_CABCCTRL1 0xC6 // CABC Control 1 -#define ILI9488_CABCCTRL2 0xC8 // CABC Control 2 -#define ILI9488_CABCCTRL3 0xC9 // CABC Control 3 -#define ILI9488_CABCCTRL4 0xCA // CABC Control 4 -#define ILI9488_CABCCTRL5 0xCB // CABC Control 5 -#define ILI9488_CABCCTRL6 0xCC // CABC Control 6 -#define ILI9488_CABCCTRL7 0xCD // CABC Control 7 -#define ILI9488_CABCCTRL8 0xCE // CABC Control 8 -#define ILI9488_CABCCTRL9 0xCF // CABC Control 9 -#define ILI9488_NVMWR 0xD0 // NV Memory Write -#define ILI9488_NVMPKEY 0xD1 // NV Memory Protection Key -#define ILI9488_RDNVM 0xD2 // NV Memory Status Read -#define ILI9488_RDID4 0xD3 // Read ID4 - 0x009488 -#define ILI9488_ADJCTL1 0xD7 // Adjust Control 1 -#define ILI9488_RDIDV 0xD8 // Read ID Version -#define ILI9488_PGAMCTRL 0xE0 // Positive Gamma Control -#define ILI9488_NGAMCTRL 0xE1 // Negative Gamma Control -#define ILI9488_DGAMCTRL1 0xE2 // Ditigal Gamma Control 1 -#define ILI9488_DGAMCTRL2 0xE3 // Ditigal Gamma Control 2 -#define ILI9488_SETIMAGE 0xE9 // Set Image Function -#define ILI9488_ADJCTL2 0xF2 // Adjust Control 2 -#define ILI9488_ADJCTL3 0xF7 // Adjust Control 3 -#define ILI9488_ADJCTL4 0xF8 // Adjust Control 4 -#define ILI9488_ADJCTL5 0xF9 // Adjust Control 5 -#define ILI9488_RDEXTC 0xFB // Read EXTC command is SPI mode -#define ILI9488_ADJCTL6 0xFC // Adjust Control 6 -#define ILI9488_ADJCTL7 0xFF // Adjust Control 7 +#define ILI9488_IFMODE 0xB0 // Interface Mode Control +#define ILI9488_FRMCTR1 0xB1 // Frame Rate Control (In Normal Mode/Full Colors) +#define ILI9488_FRMCTR2 0xB2 // Frame Rate Control (In Idle Mode/8 Colors) +#define ILI9488_FRMCTR3 0xB3 // Frame Rate Control (In Partial Mode/Full Colors) +#define ILI9488_INVTR 0xB4 // Display Inversion Control +#define ILI9488_PRCTR 0xB5 // Blanking Porch Control +#define ILI9488_DISCTRL 0xB6 // Display Function Control +#define ILI9488_ETMOD 0xB7 // Entry Mode Set +#define ILI9488_CECTRL1 0xB9 // Color Enhancement Control 1 +#define ILI9488_CECTRL2 0xBA // Color Enhancement Control 2 +#define ILI9488_HSLCTRL 0xBE // HS Lanes Control +#define ILI9488_PWCTRL1 0xC0 // Power Control 1 +#define ILI9488_PWCTRL2 0xC1 // Power Control 2 +#define ILI9488_PWCTRL3 0xC2 // Power Control 3 (For Normal Mode) +#define ILI9488_PWCTRL4 0xC3 // Power Control 4 (For Idle Mode) +#define ILI9488_PWCTRL5 0xC4 // Power Control 5 (For Partial Mode) +#define ILI9488_VMCTRL 0xC5 // VCOM Control +#define ILI9488_CABCCTRL1 0xC6 // CABC Control 1 +#define ILI9488_CABCCTRL2 0xC8 // CABC Control 2 +#define ILI9488_CABCCTRL3 0xC9 // CABC Control 3 +#define ILI9488_CABCCTRL4 0xCA // CABC Control 4 +#define ILI9488_CABCCTRL5 0xCB // CABC Control 5 +#define ILI9488_CABCCTRL6 0xCC // CABC Control 6 +#define ILI9488_CABCCTRL7 0xCD // CABC Control 7 +#define ILI9488_CABCCTRL8 0xCE // CABC Control 8 +#define ILI9488_CABCCTRL9 0xCF // CABC Control 9 +#define ILI9488_NVMWR 0xD0 // NV Memory Write +#define ILI9488_NVMPKEY 0xD1 // NV Memory Protection Key +#define ILI9488_RDNVM 0xD2 // NV Memory Status Read +#define ILI9488_RDID4 0xD3 // Read ID4 - 0x009488 +#define ILI9488_ADJCTL1 0xD7 // Adjust Control 1 +#define ILI9488_RDIDV 0xD8 // Read ID Version +#define ILI9488_PGAMCTRL 0xE0 // Positive Gamma Control +#define ILI9488_NGAMCTRL 0xE1 // Negative Gamma Control +#define ILI9488_DGAMCTRL1 0xE2 // Ditigal Gamma Control 1 +#define ILI9488_DGAMCTRL2 0xE3 // Ditigal Gamma Control 2 +#define ILI9488_SETIMAGE 0xE9 // Set Image Function +#define ILI9488_ADJCTL2 0xF2 // Adjust Control 2 +#define ILI9488_ADJCTL3 0xF7 // Adjust Control 3 +#define ILI9488_ADJCTL4 0xF8 // Adjust Control 4 +#define ILI9488_ADJCTL5 0xF9 // Adjust Control 5 +#define ILI9488_RDEXTC 0xFB // Read EXTC command is SPI mode +#define ILI9488_ADJCTL6 0xFC // Adjust Control 6 +#define ILI9488_ADJCTL7 0xFF // Adjust Control 7 + +#if 0 + // https://forum.mikroe.com/viewtopic.php?t=74586 + #if ANY(MKS_ROBIN_TFT35, TFT_TRONXY_X5SA, ANYCUBIC_TFT35) // ILI9488 + #define TFT_DRIVER ILI9488 + #define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y) + #define TFT_RES_480x320 + #define TFT_INTERFACE_FSMC + #endif +#endif static const uint16_t ili9488_init[] = { DATASIZE_8BIT, @@ -154,10 +164,20 @@ static const uint16_t ili9488_init[] = { ESC_REG(ILI9488_MADCTL), ILI9488_MADCTL_DATA, ESC_REG(ILI9488_COLMOD), 0x0055, + ESC_REG(ILI9488_FRMCTR1), 0x00A0, + ESC_REG(ILI9488_INVTR), 0x0002, + ESC_REG(ILI9488_DISCTRL), 0x0002, 0x0002, // Gate Scan sequence: 0, Source Scan sequence: 0 + ESC_REG(ILI9488_PWCTRL1), 0x0015, 0x0017, + ESC_REG(ILI9488_PWCTRL2), 0x0041, + ESC_REG(ILI9488_VMCTRL), 0x0000, 0x0012, 0x0080, + ESC_REG(ILI9488_SETIMAGE), 0x0000, + ESC_REG(ILI9488_ADJCTL3), 0x00A9, 0x0051, 0x002C, 0x0082, + /* Gamma Correction. */ ESC_REG(ILI9488_PGAMCTRL), 0x0000, 0x0003, 0x0009, 0x0008, 0x0016, 0x000A, 0x003F, 0x0078, 0x004C, 0x0009, 0x000A, 0x0008, 0x0016, 0x001A, 0x000F, ESC_REG(ILI9488_NGAMCTRL), 0x0000, 0x0016, 0x0019, 0x0003, 0x000F, 0x0005, 0x0032, 0x0045, 0x0046, 0x0004, 0x000E, 0x000D, 0x0035, 0x0037, 0x000F, + ESC_REG(TERN(ILI9488_INVERTED, ILI9488_INVON, ILI9488_INVOFF)), // Display inversion ESC_REG(ILI9488_NORON), ESC_REG(ILI9488_DISON), ESC_END diff --git a/Marlin/src/lcd/tft_io/r65105.h b/Marlin/src/lcd/tft_io/r65105.h index 8be2afe442..4cc8c99942 100644 --- a/Marlin/src/lcd/tft_io/r65105.h +++ b/Marlin/src/lcd/tft_io/r65105.h @@ -41,7 +41,7 @@ #define R61505_DRVCTRL_GS 0x8000 // Gate Scan direction -// MKS Robin TFT v1.1 - 320x240 ; Cable on the left side +// MKS Robin TFT v1.1 - 320x240 ; FPC cable on the left side #if TFT_ROTATION == TFT_ROTATE_180 #define R61505_DRVCTL_DATA 0x0000 diff --git a/Marlin/src/lcd/tft_io/st7789v.h b/Marlin/src/lcd/tft_io/st7789v.h index d0cf969c66..a7048e0578 100644 --- a/Marlin/src/lcd/tft_io/st7789v.h +++ b/Marlin/src/lcd/tft_io/st7789v.h @@ -33,10 +33,11 @@ #define ST7789V_MADCTL_RGB 0x00 #define ST7789V_MADCTL_MH 0x04 // Horizontal Refresh Order -#define ST7789V_ORIENTATION_UP ST7789V_MADCTL_MX | ST7789V_MADCTL_MY // 240x320 ; Cable on the upper side -#define ST7789V_ORIENTATION_RIGHT ST7789V_MADCTL_MX | ST7789V_MADCTL_MV // 320x240 ; Cable on the right side -#define ST7789V_ORIENTATION_LEFT ST7789V_MADCTL_MY | ST7789V_MADCTL_MV // 320x240 ; Cable on the left side -#define ST7789V_ORIENTATION_DOWN 0 // 240x320 ; Cable on the lower side +// ST7789V-specific: "MX Inversion" is enabled by default in LCM Control register. +#define ST7789V_ORIENTATION_TOP ST7789V_MADCTL_MX | ST7789V_MADCTL_MY // 240x320 ; PFC cable on the top side +#define ST7789V_ORIENTATION_RIGHT ST7789V_MADCTL_MX | ST7789V_MADCTL_MV // 320x240 ; PFC cable on the right side +#define ST7789V_ORIENTATION_LEFT ST7789V_MADCTL_MY | ST7789V_MADCTL_MV // 320x240 ; PFC cable on the left side +#define ST7789V_ORIENTATION_BOTTOM 0 // 240x320 ; PFC cable on the bottom side #define ST7789V_ORIENTATION IF_0((TFT_ORIENTATION) & TFT_EXCHANGE_XY, ST7789V_MADCTL_MV) | \ IF_0((TFT_ORIENTATION) & TFT_INVERT_X, ST7789V_MADCTL_MX) | \ @@ -141,7 +142,22 @@ static const uint16_t st7789v_init[] = { ESC_REG(ST7789V_PORCTRL), 0x000C, 0x000C, 0x0000, 0x0033, 0x0033, ESC_REG(ST7789V_GCTRL), 0x0035, ESC_REG(ST7789V_VCOMS), 0x001F, - ESC_REG(ST7789V_LCMCTRL), 0x002C, + + /** + * LCM Control + * + * Default Power-on Value: 0x2C / 00101100b + * MY Inversion: 0 + * RGB/BGR Inversion: 1 + * Display Inversion: 0 + * MX Inversion: 1 + * MH (Source Output) Inversion: 1 + * MV Inversion: 0 + * Gate Scan Inversion: 0 + */ + ESC_REG(ST7789V_LCMCTRL), 0x002C, // Default Power-on Value + ESC_REG(ST7789V_GATECTRL), 0x0027, 0x0000, 0x0010, // Gate Scan Direction: 0 + ESC_REG(ST7789V_VDVVRHEN), 0x0001, 0x00C3, ESC_REG(ST7789V_VDVS), 0x0020, ESC_REG(ST7789V_FRCTRL2), 0x000F, diff --git a/Marlin/src/lcd/tft_io/st7796s.h b/Marlin/src/lcd/tft_io/st7796s.h index 6d79dd882a..bca8d602ef 100644 --- a/Marlin/src/lcd/tft_io/st7796s.h +++ b/Marlin/src/lcd/tft_io/st7796s.h @@ -33,6 +33,11 @@ #define ST7796S_MADCTL_RGB 0x00 #define ST7796S_MADCTL_MH 0x04 // Horizontal Refresh Order +#define ST7796S_ORIENTATION_TOP ST7796S_MADCTL_MX // 320x480 ; FPC cable on the top side +#define ST7796S_ORIENTATION_RIGHT ST7796S_MADCTL_MV // 480x320 ; FPC cable on the right side +#define ST7796S_ORIENTATION_LEFT ST7796S_MADCTL_MY | ST7796S_MADCTL_MX | ST7796S_MADCTL_MV // 480x320 ; FPC cable on the left side +#define ST7796S_ORIENTATION_BOTTOM ST7796S_MADCTL_MY // 320x480 ; FPC cable on the bottom side + #define ST7796S_ORIENTATION IF_0((TFT_ORIENTATION) & TFT_EXCHANGE_XY, ST7796S_MADCTL_MV) | \ IF_0((TFT_ORIENTATION) & TFT_INVERT_X, ST7796S_MADCTL_MX) | \ IF_0((TFT_ORIENTATION) & TFT_INVERT_Y, ST7796S_MADCTL_MY) @@ -132,6 +137,7 @@ static const uint16_t st7796s_init[] = { ESC_REG(ST7796S_COLMOD), 0x0055, ESC_REG(ST7796S_DIC), 0x0001, // 1-dot inversion + ESC_REG(ST7796S_DFC), 0x0080, 0x0002, 0x003B, // Source Output Scan Direction: 0, Gate Output Scan Direction: 0 ESC_REG(ST7796S_EM), 0x00C6, ESC_REG(ST7796S_PWR2), 0x0015, @@ -144,11 +150,7 @@ static const uint16_t st7796s_init[] = { ESC_REG(ST7796S_PGC), 0x00F0, 0x0004, 0x0008, 0x0009, 0x0008, 0x0015, 0x002F, 0x0042, 0x0046, 0x0028, 0x0015, 0x0016, 0x0029, 0x002D, ESC_REG(ST7796S_NGC), 0x00F0, 0x0004, 0x0009, 0x0009, 0x0008, 0x0015, 0x002E, 0x0046, 0x0046, 0x0028, 0x0015, 0x0015, 0x0029, 0x002D, - #if ENABLED(ST7796S_INVERTED) - ESC_REG(ST7796S_INVON), // Display inversion ON - #else - ESC_REG(ST7796S_NORON), - #endif + ESC_REG(TERN(ST7796S_INVERTED, ST7796S_INVON, ST7796S_NORON)), // Display inversion ESC_REG(ST7796S_WRCTRLD), 0x0024, ESC_REG(ST7796S_CSCON), 0x003C, // disable command 2 part I ESC_REG(ST7796S_CSCON), 0x0069, // disable command 2 part II diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h index 9f8de25ff1..c85c107bd9 100644 --- a/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h +++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h @@ -140,8 +140,6 @@ #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT #define FSMC_CS_PIN PD7 #define FSMC_RS_PIN PD11 - #define FSMC_DMA_DEV DMA2 - #define FSMC_DMA_CHANNEL DMA_CH5 #define TFT_CS_PIN FSMC_CS_PIN #define TFT_RS_PIN FSMC_RS_PIN diff --git a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h index f784c07c21..0811ab1f1b 100644 --- a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h +++ b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h @@ -293,8 +293,6 @@ #define TFT_BACKLIGHT_PIN PD13 #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT - #define FSMC_DMA_DEV DMA2 - #define FSMC_DMA_CHANNEL DMA_CH5 #define FSMC_CS_PIN PD7 // NE4 #define FSMC_RS_PIN PD11 // A0 diff --git a/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h b/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h index c4638cd9a9..21ac51e279 100644 --- a/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h +++ b/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h @@ -117,8 +117,6 @@ #define FSMC_RS_PIN PG0 #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT - #define FSMC_DMA_DEV DMA2 - #define FSMC_DMA_CHANNEL DMA_CH5 #define TFT_CS_PIN FSMC_CS_PIN #define TFT_RS_PIN FSMC_RS_PIN diff --git a/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h b/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h index bd39632cc5..b1498d13b9 100644 --- a/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h +++ b/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h @@ -138,8 +138,6 @@ #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT #define FSMC_CS_PIN PD7 // pin 88 = FSMC_NE1 #define FSMC_RS_PIN PD11 // pin 58 A16 Register. Only one address needed - #define FSMC_DMA_DEV DMA2 - #define FSMC_DMA_CHANNEL DMA_CH5 #define TFT_CS_PIN FSMC_CS_PIN #define TFT_RS_PIN FSMC_RS_PIN diff --git a/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h b/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h index c4d0276578..cc26942002 100644 --- a/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h @@ -143,8 +143,6 @@ #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT #define FSMC_CS_PIN PD7 // NE4 #define FSMC_RS_PIN PG0 // A0 - #define FSMC_DMA_DEV DMA2 - #define FSMC_DMA_CHANNEL DMA_CH5 #define TFT_CS_PIN FSMC_CS_PIN #define TFT_RS_PIN FSMC_RS_PIN diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h index 25b372a889..5f290d153d 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h @@ -176,8 +176,6 @@ #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT #define FSMC_CS_PIN PG12 // NE4 #define FSMC_RS_PIN PF0 // A0 - #define FSMC_DMA_DEV DMA2 - #define FSMC_DMA_CHANNEL DMA_CH5 #define TFT_CS_PIN FSMC_CS_PIN #define TFT_RS_PIN FSMC_RS_PIN diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h index 11597109c8..46c2fa8065 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h @@ -160,8 +160,6 @@ #define FSMC_RS_PIN TFT_RS_PIN // A0 #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT - #define FSMC_DMA_DEV DMA2 - #define FSMC_DMA_CHANNEL DMA_CH5 #if NEED_TOUCH_PINS #define TOUCH_CS_PIN PC2 // SPI2_NSS diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h index 616d1f1d3f..28dd19938b 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h @@ -196,8 +196,6 @@ #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT #define FSMC_CS_PIN PD7 #define FSMC_RS_PIN PD11 - #define FSMC_DMA_DEV DMA2 - #define FSMC_DMA_CHANNEL DMA_CH5 #define TFT_CS_PIN FSMC_CS_PIN #define TFT_RS_PIN FSMC_RS_PIN diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h index 63b7b9e286..8a213090b1 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h @@ -231,8 +231,6 @@ #define FSMC_CS_PIN PD7 // NE4 #define FSMC_RS_PIN PD11 // A0 - #define FSMC_DMA_DEV DMA2 - #define FSMC_DMA_CHANNEL DMA_CH5 #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT #define TFT_CS_PIN FSMC_CS_PIN #define TFT_RS_PIN FSMC_RS_PIN diff --git a/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h b/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h index 410e39bccf..d2f3645d94 100644 --- a/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h +++ b/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h @@ -153,8 +153,6 @@ #define TFT_RS_PIN FSMC_RS_PIN #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT - #define FSMC_DMA_DEV DMA2 - #define FSMC_DMA_CHANNEL DMA_CH5 #define ANYCUBIC_TFT35 #else diff --git a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h index 21158f7af9..8d2584fe10 100644 --- a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h +++ b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h @@ -200,8 +200,6 @@ #define TFT_BACKLIGHT_PIN PG8 #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT - #define FSMC_DMA_DEV DMA2 - #define FSMC_DMA_CHANNEL DMA_CH5 #define TFT_CS_PIN PG12 #define TFT_RS_PIN PG2 From a3ab435acf27034e14cc1f94ab5e3de3936052cf Mon Sep 17 00:00:00 2001 From: Eduard Sukharev Date: Mon, 27 Mar 2023 21:55:56 +0300 Subject: [PATCH 194/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20M23=20long=20filen?= =?UTF-8?q?ame=20support=20(#25540)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/sd/SdBaseFile.cpp | 87 +++++++++++++++++++++--------------- Marlin/src/sd/SdBaseFile.h | 10 +++-- 2 files changed, 57 insertions(+), 40 deletions(-) diff --git a/Marlin/src/sd/SdBaseFile.cpp b/Marlin/src/sd/SdBaseFile.cpp index b8b49b7ba0..72cdcb9268 100644 --- a/Marlin/src/sd/SdBaseFile.cpp +++ b/Marlin/src/sd/SdBaseFile.cpp @@ -703,7 +703,10 @@ bool SdBaseFile::open(SdBaseFile *dirFile, const uint8_t dname[11] // Get VFat dir entry pvFat = (vfat_t *) p; // Get checksum from the last entry of the sequence - if (pvFat->sequenceNumber & 0x40) lfnChecksum = pvFat->checksum; + if (pvFat->sequenceNumber & 0x40) { + lfnChecksum = pvFat->checksum; + ZERO(lfnName); + } // Get LFN sequence number lfnSequenceNumber = pvFat->sequenceNumber & 0x1F; if WITHIN(lfnSequenceNumber, 1, reqEntriesNum) { @@ -711,6 +714,7 @@ bool SdBaseFile::open(SdBaseFile *dirFile, const uint8_t dname[11] if (lfnChecksum == pvFat->checksum) { // Set chunk of LFN from VFAT entry into lfnName getLFNName(pvFat, (char *)lfnName, lfnSequenceNumber); + TERN_(UTF_FILENAME_SUPPORT, convertUtf16ToUtf8((char *)lfnName)); // LFN found? if (!strncasecmp((char*)dlname, (char*)lfnName, lfnNameLength)) lfnFileFound = true; } @@ -1132,13 +1136,13 @@ bool SdBaseFile::openNext(SdBaseFile *dirFile, uint8_t oflag) { * Get the LFN filename block from a dir. Get the block in lname at startOffset */ void SdBaseFile::getLFNName(vfat_t *pFatDir, char *lname, uint8_t sequenceNumber) { - uint8_t startOffset = (sequenceNumber - 1) * FILENAME_LENGTH; + const uint8_t startOffset = (sequenceNumber - 1) * FILENAME_LENGTH; LOOP_L_N(i, FILENAME_LENGTH) { const uint16_t utf16_ch = (i >= 11) ? pFatDir->name3[i - 11] : (i >= 5) ? pFatDir->name2[i - 5] : pFatDir->name1[i]; #if ENABLED(UTF_FILENAME_SUPPORT) // We can't reconvert to UTF-8 here as UTF-8 is variable-size encoding, but joining LFN blocks // needs static bytes addressing. So here just store full UTF-16LE words to re-convert later. - uint16_t idx = (startOffset + i) * 2; // This is fixed as FAT LFN always contain UTF-16LE encoding + const uint16_t idx = (startOffset + i) * 2; // This is fixed as FAT LFN always contain UTF-16LE encoding lname[idx] = utf16_ch & 0xFF; lname[idx + 1] = (utf16_ch >> 8) & 0xFF; #else @@ -1152,8 +1156,8 @@ bool SdBaseFile::openNext(SdBaseFile *dirFile, uint8_t oflag) { * Set the LFN filename block lname to a dir. Put the block based on sequence number */ void SdBaseFile::setLFNName(vfat_t *pFatDir, char *lname, uint8_t sequenceNumber) { - uint8_t startOffset = (sequenceNumber - 1) * FILENAME_LENGTH; - uint8_t nameLength = strlen(lname); + const uint8_t startOffset = (sequenceNumber - 1) * FILENAME_LENGTH, + nameLength = strlen(lname); LOOP_L_N(i, FILENAME_LENGTH) { uint16_t ch = 0; if ((startOffset + i) < nameLength) @@ -1424,7 +1428,7 @@ int16_t SdBaseFile::read(void *buf, uint16_t nbyte) { * readDir() called before a directory has been opened, this is not * a directory file or an I/O error occurred. */ -int8_t SdBaseFile::readDir(dir_t *dir, char *longFilename) { +int8_t SdBaseFile::readDir(dir_t *dir, char * const longFilename) { int16_t n; // if not a directory file or miss-positioned return an error if (!isDir() || (0x1F & curPosition_)) return -1; @@ -1506,44 +1510,55 @@ int8_t SdBaseFile::readDir(dir_t *dir, char *longFilename) { // Post-process normal file or subdirectory longname, if any if (DIR_IS_FILE_OR_SUBDIR(dir)) { #if ENABLED(UTF_FILENAME_SUPPORT) - #if LONG_FILENAME_CHARSIZE > 2 - // Add warning for developers for unsupported 3-byte cases. - // (Converting 2-byte codepoints to 3-byte in-place would break the rest of filename.) - #error "Currently filename re-encoding is done in-place. It may break the remaining chars to use 3-byte codepoints." - #endif - // Is there a long filename to decode? if (longFilename) { - // Reset n to the start of the long name - n = 0; - for (uint16_t idx = 0; idx < (LONG_FILENAME_LENGTH); idx += 2) { // idx is fixed since FAT LFN always contains UTF-16LE encoding - const uint16_t utf16_ch = longFilename[idx] | (longFilename[idx + 1] << 8); - if (0xD800 == (utf16_ch & 0xF800)) // Surrogate pair - encode as '_' - longFilename[n++] = '_'; - else if (0 == (utf16_ch & 0xFF80)) // Encode as 1-byte UTF-8 char - longFilename[n++] = utf16_ch & 0x007F; - else if (0 == (utf16_ch & 0xF800)) { // Encode as 2-byte UTF-8 char - longFilename[n++] = 0xC0 | ((utf16_ch >> 6) & 0x1F); - longFilename[n++] = 0x80 | ( utf16_ch & 0x3F); - } - else { - #if LONG_FILENAME_CHARSIZE > 2 // Encode as 3-byte UTF-8 char - longFilename[n++] = 0xE0 | ((utf16_ch >> 12) & 0x0F); - longFilename[n++] = 0xC0 | ((utf16_ch >> 6) & 0x3F); - longFilename[n++] = 0xC0 | ( utf16_ch & 0x3F); - #else // Encode as '_' - longFilename[n++] = '_'; - #endif - } - if (0 == utf16_ch) break; // End of filename - } // idx - } // longFilename + n = convertUtf16ToUtf8(longFilename); + } #endif return n; } // DIR_IS_FILE_OR_SUBDIR } } +#if ENABLED(UTF_FILENAME_SUPPORT) + + uint8_t SdBaseFile::convertUtf16ToUtf8(char * const longFilename) { + #if LONG_FILENAME_CHARSIZE > 2 + // Add warning for developers for unsupported 3-byte cases. + // (Converting 2-byte codepoints to 3-byte in-place would break the rest of filename.) + #error "Currently filename re-encoding is done in-place. It may break the remaining chars to use 3-byte codepoints." + #endif + + int16_t n; + // Reset n to the start of the long name + n = 0; + for (uint16_t idx = 0; idx < (LONG_FILENAME_LENGTH); idx += 2) { // idx is fixed since FAT LFN always contains UTF-16LE encoding + const uint16_t utf16_ch = longFilename[idx] | (longFilename[idx + 1] << 8); + if (0xD800 == (utf16_ch & 0xF800)) // Surrogate pair - encode as '_' + longFilename[n++] = '_'; + else if (0 == (utf16_ch & 0xFF80)) // Encode as 1-byte UTF-8 char + longFilename[n++] = utf16_ch & 0x007F; + else if (0 == (utf16_ch & 0xF800)) { // Encode as 2-byte UTF-8 char + longFilename[n++] = 0xC0 | ((utf16_ch >> 6) & 0x1F); + longFilename[n++] = 0x80 | ( utf16_ch & 0x3F); + } + else { + #if LONG_FILENAME_CHARSIZE > 2 // Encode as 3-byte UTF-8 char + longFilename[n++] = 0xE0 | ((utf16_ch >> 12) & 0x0F); + longFilename[n++] = 0xC0 | ((utf16_ch >> 6) & 0x3F); + longFilename[n++] = 0xC0 | ( utf16_ch & 0x3F); + #else // Encode as '_' + longFilename[n++] = '_'; + #endif + } + if (0 == utf16_ch) break; // End of filename + } // idx + + return n; + } + +#endif // UTF_FILENAME_SUPPORT + // Read next directory entry into the cache // Assumes file is correctly positioned dir_t* SdBaseFile::readDirCache() { diff --git a/Marlin/src/sd/SdBaseFile.h b/Marlin/src/sd/SdBaseFile.h index dd8e2aff4b..19225170f9 100644 --- a/Marlin/src/sd/SdBaseFile.h +++ b/Marlin/src/sd/SdBaseFile.h @@ -298,7 +298,7 @@ class SdBaseFile { bool printName(); int16_t read(); int16_t read(void *buf, uint16_t nbyte); - int8_t readDir(dir_t *dir, char *longFilename); + int8_t readDir(dir_t *dir, char * const longFilename); static bool remove(SdBaseFile *dirFile, const char *path); bool remove(); @@ -392,14 +392,16 @@ class SdBaseFile { bool openCachedEntry(uint8_t cacheIndex, uint8_t oflags); dir_t* readDirCache(); + #if ENABLED(UTF_FILENAME_SUPPORT) + uint8_t convertUtf16ToUtf8(char * const longFilename); + #endif + // Long Filename create/write support #if ENABLED(LONG_FILENAME_WRITE_SUPPORT) static bool isDirLFN(const dir_t* dir); static bool isDirNameLFN(const char *dirname); static bool parsePath(const char *str, uint8_t *name, uint8_t *lname, const char **ptr); - /** - * Return the number of entries needed in the FAT for this LFN - */ + // Return the number of entries needed in the FAT for this LFN static inline uint8_t getLFNEntriesNum(const char *lname) { return (strlen(lname) + 12) / 13; } static void getLFNName(vfat_t *vFatDir, char *lname, uint8_t startOffset); static void setLFNName(vfat_t *vFatDir, char *lname, uint8_t lfnSequenceNumber); From 70063fb6520f4d42976ef9f4ea58cde6506bb96f Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 28 Mar 2023 00:21:53 +0000 Subject: [PATCH 195/659] [cron] Bump distribution date (2023-03-28) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 73ec99f61d..69cf291f62 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-27" +//#define STRING_DISTRIBUTION_DATE "2023-03-28" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index c169ec5129..6c08c374ce 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-27" + #define STRING_DISTRIBUTION_DATE "2023-03-28" #endif /** From de0cd660705668f2e9f1e0cb8fff80b40be0f4e6 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 28 Mar 2023 05:39:35 -0500 Subject: [PATCH 196/659] =?UTF-8?q?=F0=9F=8E=A8=20Misc.=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/LPC1768/tft/tft_spi.h | 2 +- Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h | 2 +- Marlin/src/HAL/STM32/tft/tft_fsmc.cpp | 2 +- Marlin/src/HAL/STM32/tft/tft_fsmc.h | 8 ++++++-- Marlin/src/HAL/STM32/tft/tft_ltdc.h | 2 +- Marlin/src/HAL/STM32/tft/tft_spi.h | 2 +- Marlin/src/HAL/STM32F1/MarlinSerial.cpp | 4 ++-- Marlin/src/HAL/STM32F1/sdio.cpp | 9 +++++++-- Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp | 4 ++++ Marlin/src/HAL/STM32F1/tft/tft_fsmc.h | 2 +- Marlin/src/HAL/STM32F1/tft/tft_spi.cpp | 4 ++++ Marlin/src/HAL/STM32F1/tft/tft_spi.h | 2 +- Marlin/src/HAL/STM32F1/tft/xpt2046.cpp | 6 +++++- Marlin/src/feature/mmu/mmu2-serial-protocol.md | 1 - Marlin/src/lcd/tft_io/st7789v.h | 2 +- Marlin/src/lcd/tft_io/tft_io.h | 2 +- Marlin/src/module/endstops.cpp | 4 ++-- Marlin/src/module/endstops.h | 2 +- Marlin/src/module/tool_change.cpp | 1 - Marlin/src/pins/ramps/pins_VORON.h | 8 +++----- 20 files changed, 43 insertions(+), 26 deletions(-) diff --git a/Marlin/src/HAL/LPC1768/tft/tft_spi.h b/Marlin/src/HAL/LPC1768/tft/tft_spi.h index dad393981e..4817a5aae3 100644 --- a/Marlin/src/HAL/LPC1768/tft/tft_spi.h +++ b/Marlin/src/HAL/LPC1768/tft/tft_spi.h @@ -69,7 +69,7 @@ public: static bool isBusy(); static void Abort(); - static void DataTransferBegin(uint16_t DataWidth = DATASIZE_16BIT); + static void DataTransferBegin(uint16_t DataWidth=DATASIZE_16BIT); static void DataTransferEnd() { WRITE(TFT_CS_PIN, HIGH); SSP_Cmd(LPC_SSPx, DISABLE); }; static void DataTransferAbort(); diff --git a/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h b/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h index f412e09e11..f3b64c4cca 100644 --- a/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h +++ b/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h @@ -52,7 +52,7 @@ public: static bool isBusy(); static void Abort(); - static void DataTransferBegin(uint16_t DataWidth = DATASIZE_16BIT); + static void DataTransferBegin(uint16_t DataWidth=DATASIZE_16BIT); static void DataTransferEnd(); static void DataTransferAbort(); diff --git a/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp b/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp index fa43a7ad27..6ac3549b41 100644 --- a/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp +++ b/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp @@ -71,7 +71,7 @@ void TFT_FSMC::Init() { Timing.DataLatency = 17; Timing.AccessMode = FSMC_ACCESS_MODE_A; // Write Timing - // Can be decreases from 8-15-8 to 0-0-1 with risk of stability loss + // Can be decreased from 8-15-8 to 0-0-1 with risk of stability loss ExtTiming.AddressSetupTime = 8; ExtTiming.AddressHoldTime = 15; ExtTiming.DataSetupTime = 8; diff --git a/Marlin/src/HAL/STM32/tft/tft_fsmc.h b/Marlin/src/HAL/STM32/tft/tft_fsmc.h index 41ff8c9a83..8eb41d717d 100644 --- a/Marlin/src/HAL/STM32/tft/tft_fsmc.h +++ b/Marlin/src/HAL/STM32/tft/tft_fsmc.h @@ -31,6 +31,10 @@ #error "FSMC TFT is currently only supported on STM32F1 and STM32F4 hardware." #endif +#ifndef HAL_SRAM_MODULE_ENABLED + #error "SRAM module disabled for the STM32 framework (HAL_SRAM_MODULE_ENABLED)! Please consult the development team." +#endif + #ifndef LCD_READ_ID #define LCD_READ_ID 0x04 // Read display identification information (0xD3 on ILI9341) #endif @@ -69,8 +73,8 @@ class TFT_FSMC { static bool isBusy(); static void Abort(); - static void DataTransferBegin(uint16_t DataWidth = TFT_DATASIZE) {} - static void DataTransferEnd() {}; + static void DataTransferBegin(uint16_t DataWidth=TFT_DATASIZE) {} + static void DataTransferEnd() {} static void WriteData(uint16_t Data) { Transmit(tft_data_t(Data)); } static void WriteReg(uint16_t Reg) { LCD->REG = tft_data_t(Reg); __DSB(); } diff --git a/Marlin/src/HAL/STM32/tft/tft_ltdc.h b/Marlin/src/HAL/STM32/tft/tft_ltdc.h index 8d83839bb3..ee65561011 100644 --- a/Marlin/src/HAL/STM32/tft/tft_ltdc.h +++ b/Marlin/src/HAL/STM32/tft/tft_ltdc.h @@ -58,7 +58,7 @@ class TFT_LTDC { static bool isBusy(); static void Abort() { /*__HAL_DMA_DISABLE(&DMAtx);*/ } - static void DataTransferBegin(uint16_t DataWidth = TFT_DATASIZE) {} + static void DataTransferBegin(uint16_t DataWidth=TFT_DATASIZE) {} static void DataTransferEnd() {}; static void WriteData(uint16_t Data); diff --git a/Marlin/src/HAL/STM32/tft/tft_spi.h b/Marlin/src/HAL/STM32/tft/tft_spi.h index 6b8613e3f8..4825b65c68 100644 --- a/Marlin/src/HAL/STM32/tft/tft_spi.h +++ b/Marlin/src/HAL/STM32/tft/tft_spi.h @@ -60,7 +60,7 @@ public: static bool isBusy(); static void Abort(); - static void DataTransferBegin(uint16_t DataWidth = DATASIZE_16BIT); + static void DataTransferBegin(uint16_t DataWidth=DATASIZE_16BIT); static void DataTransferEnd() { WRITE(TFT_CS_PIN, HIGH); __HAL_SPI_DISABLE(&SPIx); }; static void DataTransferAbort(); diff --git a/Marlin/src/HAL/STM32F1/MarlinSerial.cpp b/Marlin/src/HAL/STM32F1/MarlinSerial.cpp index 6dabcde51e..7898e9f2bc 100644 --- a/Marlin/src/HAL/STM32F1/MarlinSerial.cpp +++ b/Marlin/src/HAL/STM32F1/MarlinSerial.cpp @@ -77,7 +77,7 @@ static inline __always_inline void my_usart_irq(ring_buffer *rb, ring_buffer *wb // Not every MarlinSerial port should handle emergency parsing. // It would not make sense to parse GCode from TMC responses, for example. constexpr bool serial_handles_emergency(int port) { - return false + return (false #ifdef SERIAL_PORT || (SERIAL_PORT) == port #endif @@ -87,7 +87,7 @@ constexpr bool serial_handles_emergency(int port) { #ifdef LCD_SERIAL_PORT || (LCD_SERIAL_PORT) == port #endif - ; + ); } #define DEFINE_HWSERIAL_MARLIN(name, n) \ diff --git a/Marlin/src/HAL/STM32F1/sdio.cpp b/Marlin/src/HAL/STM32F1/sdio.cpp index 6e41d2cbf1..b00be30217 100644 --- a/Marlin/src/HAL/STM32F1/sdio.cpp +++ b/Marlin/src/HAL/STM32F1/sdio.cpp @@ -136,8 +136,13 @@ bool SDIO_ReadBlock_DMA(uint32_t blockAddress, uint8_t *data) { } bool SDIO_ReadBlock(uint32_t blockAddress, uint8_t *data) { - uint32_t retries = SDIO_READ_RETRIES; - while (retries--) if (SDIO_ReadBlock_DMA(blockAddress, data)) return true; + uint8_t retries = SDIO_READ_RETRIES; + while (retries--) { + if (SDIO_ReadBlock_DMA(blockAddress, data)) return true; + #if SD_RETRY_DELAY_MS + delay(SD_RETRY_DELAY_MS); + #endif + } return false; } diff --git a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp index 3fd92ed02b..1e4dfec8a6 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp +++ b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp @@ -20,6 +20,8 @@ * */ +#ifdef __STM32F1__ + #include "../../../inc/MarlinConfig.h" #if HAS_FSMC_TFT @@ -262,3 +264,5 @@ void TFT_FSMC::Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) } #endif // HAS_FSMC_TFT + +#endif // __STM32F1__ diff --git a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h index ab98334f57..0db7f559b6 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h +++ b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h @@ -65,7 +65,7 @@ class TFT_FSMC { static bool isBusy(); static void Abort(); - static void DataTransferBegin(uint16_t DataWidth = DATASIZE_16BIT) {}; + static void DataTransferBegin(uint16_t DataWidth=DATASIZE_16BIT) {}; static void DataTransferEnd() {}; static void WriteData(uint16_t Data) { Transmit(Data); } diff --git a/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp b/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp index 9129cfdf1f..eed52f4e8a 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp +++ b/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp @@ -20,6 +20,8 @@ * */ +#ifdef __STM32F1__ + #include "../../../inc/MarlinConfig.h" #if HAS_SPI_TFT @@ -165,3 +167,5 @@ void TFT_SPI::Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) } #endif // HAS_SPI_TFT + +#endif // __STM32F1__ diff --git a/Marlin/src/HAL/STM32F1/tft/tft_spi.h b/Marlin/src/HAL/STM32F1/tft/tft_spi.h index 2bda8c21f7..573077d21d 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_spi.h +++ b/Marlin/src/HAL/STM32F1/tft/tft_spi.h @@ -76,7 +76,7 @@ public: static bool isBusy(); static void Abort(); - static void DataTransferBegin(uint16_t DataWidth = DATA_SIZE_16BIT); + static void DataTransferBegin(uint16_t DataWidth=DATA_SIZE_16BIT); static void DataTransferEnd() { WRITE(TFT_CS_PIN, HIGH); SPIx.end(); }; static void DataTransferAbort(); diff --git a/Marlin/src/HAL/STM32F1/tft/xpt2046.cpp b/Marlin/src/HAL/STM32F1/tft/xpt2046.cpp index ac9ad072aa..bf57ba0034 100644 --- a/Marlin/src/HAL/STM32F1/tft/xpt2046.cpp +++ b/Marlin/src/HAL/STM32F1/tft/xpt2046.cpp @@ -20,6 +20,8 @@ * */ +#ifdef __STM32F1__ + #include "../../../inc/MarlinConfig.h" #if HAS_TFT_XPT2046 || HAS_RES_TOUCH_BUTTONS @@ -141,4 +143,6 @@ uint16_t XPT2046::SoftwareIO(uint16_t data) { return result; } -#endif // HAS_TFT_XPT2046 +#endif // HAS_TFT_XPT2046 || HAS_RES_TOUCH_BUTTONS + +#endif // __STM32F1__ diff --git a/Marlin/src/feature/mmu/mmu2-serial-protocol.md b/Marlin/src/feature/mmu/mmu2-serial-protocol.md index 93135e406f..42f30e418d 100644 --- a/Marlin/src/feature/mmu/mmu2-serial-protocol.md +++ b/Marlin/src/feature/mmu/mmu2-serial-protocol.md @@ -91,4 +91,3 @@ Eject filament - MMU <= 'E*Filament index*\n' - MMU => 'ok\n' - diff --git a/Marlin/src/lcd/tft_io/st7789v.h b/Marlin/src/lcd/tft_io/st7789v.h index a7048e0578..690e530717 100644 --- a/Marlin/src/lcd/tft_io/st7789v.h +++ b/Marlin/src/lcd/tft_io/st7789v.h @@ -145,7 +145,7 @@ static const uint16_t st7789v_init[] = { /** * LCM Control - * + * * Default Power-on Value: 0x2C / 00101100b * MY Inversion: 0 * RGB/BGR Inversion: 1 diff --git a/Marlin/src/lcd/tft_io/tft_io.h b/Marlin/src/lcd/tft_io/tft_io.h index 9cfb2137df..7dd973ef70 100644 --- a/Marlin/src/lcd/tft_io/tft_io.h +++ b/Marlin/src/lcd/tft_io/tft_io.h @@ -62,7 +62,7 @@ public: inline static void Abort() { io.Abort(); } inline static uint32_t GetID() { return io.GetID(); } - inline static void DataTransferBegin(uint16_t DataWidth = DATASIZE_16BIT) { io.DataTransferBegin(DataWidth); } + inline static void DataTransferBegin(uint16_t DataWidth=DATASIZE_16BIT) { io.DataTransferBegin(DataWidth); } inline static void DataTransferEnd() { io.DataTransferEnd(); } inline static void WriteData(uint16_t Data) { io.WriteData(Data); } diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 9d73210025..6719925f15 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -1143,7 +1143,7 @@ void Endstops::update() { #endif )) { SBI(live_state, X_ENDSTOP); hit = true; } #if ENABLED(X_DUAL_ENDSTOPS) - if (tmc_spi_homing.x && stepperX2.test_stall_status()) { SBI(live_state, X2_ENDSTOP); hit = true; } + if (tmc_spi_homing.x && stepperX2.test_stall_status()) { SBI(live_state, X2_ENDSTOP); hit = true; } #endif #endif #if Y_SPI_SENSORLESS @@ -1155,7 +1155,7 @@ void Endstops::update() { #endif )) { SBI(live_state, Y_ENDSTOP); hit = true; } #if ENABLED(Y_DUAL_ENDSTOPS) - if (tmc_spi_homing.y && stepperY2.test_stall_status()) { SBI(live_state, Y2_ENDSTOP); hit = true; } + if (tmc_spi_homing.y && stepperY2.test_stall_status()) { SBI(live_state, Y2_ENDSTOP); hit = true; } #endif #endif #if Z_SPI_SENSORLESS diff --git a/Marlin/src/module/endstops.h b/Marlin/src/module/endstops.h index 36cd002c8f..76c8d454d7 100644 --- a/Marlin/src/module/endstops.h +++ b/Marlin/src/module/endstops.h @@ -86,7 +86,7 @@ enum EndstopEnum : char { #if HAS_X_MIN || HAS_X_MAX , X_ENDSTOP = TERN(X_HOME_TO_MAX, X_MAX, X_MIN) #if ENABLED(X_DUAL_ENDSTOPS) - , X2_ENDSTOP = TERN(X_HOME_TO_MAX, X2_MAX, X2_MIN) + , X2_ENDSTOP = TERN(X_HOME_TO_MAX, X2_MAX, X2_MIN) #endif #endif #if HAS_Y_MIN || HAS_Y_MAX diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index 9955a0f1b0..43a50505ef 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -435,7 +435,6 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. } } - #endif // TOOL_SENSOR #if ENABLED(SWITCHING_TOOLHEAD) diff --git a/Marlin/src/pins/ramps/pins_VORON.h b/Marlin/src/pins/ramps/pins_VORON.h index c928a1fb65..4aee2ab142 100644 --- a/Marlin/src/pins/ramps/pins_VORON.h +++ b/Marlin/src/pins/ramps/pins_VORON.h @@ -29,14 +29,10 @@ #define BOARD_INFO_NAME "VORON Design v2" -#define MOSFET_C_PIN 11 - -#include "pins_RAMPS.h" - // // Heaters / Fans // -#undef FAN0_PIN +#define MOSFET_C_PIN 11 #define FAN0_PIN 5 // Using the pin for the controller fan since controller fan is always on. #define CONTROLLER_FAN_PIN 8 @@ -50,6 +46,8 @@ #define E1_AUTO_FAN_PIN 6 // Servo pin 6 for E3D Fan (same pin for both extruders since it's the same fan) #endif +#include "pins_RAMPS.h" + // // LCDs and Controllers // From 9911104036a515967029286775db0d0e7c4aec3a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 28 Mar 2023 16:14:37 -0500 Subject: [PATCH 197/659] =?UTF-8?q?=F0=9F=94=A7=20Fix=20up=20WiFi=20option?= =?UTF-8?q?s=20(#25586)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/ESP32/HAL.h | 14 +++--- Marlin/src/HAL/shared/esp_wifi.cpp | 5 ++ Marlin/src/MarlinCore.cpp | 8 +++- Marlin/src/inc/SanityCheck.h | 10 ++-- Marlin/src/pins/sam/pins_RURAMPS4D_11.h | 12 +++-- Marlin/src/pins/sam/pins_RURAMPS4D_13.h | 12 +++-- Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h | 44 +++++++++--------- Marlin/src/pins/stm32f1/pins_GTM32_MINI.h | 15 +++--- Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h | 15 +++--- Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h | 15 +++--- Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h | 15 +++--- Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h | 19 ++++---- .../pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h | 46 ++++++++++--------- .../pins/stm32f4/pins_BTT_SKR_PRO_common.h | 38 +++++++-------- .../pins/stm32f4/pins_BTT_SKR_V2_0_common.h | 44 +++++++++--------- .../pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h | 44 +++++++++--------- .../pins/stm32h7/pins_BTT_SKR_V3_0_common.h | 44 +++++++++--------- 17 files changed, 217 insertions(+), 183 deletions(-) diff --git a/Marlin/src/HAL/ESP32/HAL.h b/Marlin/src/HAL/ESP32/HAL.h index ddfedf92ee..5dc9b2cfe2 100644 --- a/Marlin/src/HAL/ESP32/HAL.h +++ b/Marlin/src/HAL/ESP32/HAL.h @@ -50,14 +50,12 @@ #define MYSERIAL1 flushableSerial -#if EITHER(WIFISUPPORT, ESP3D_WIFISUPPORT) - #if ENABLED(ESP3D_WIFISUPPORT) - typedef ForwardSerial1Class< decltype(Serial2Socket) > DefaultSerial1; - extern DefaultSerial1 MSerial0; - #define MYSERIAL2 MSerial0 - #else - #define MYSERIAL2 webSocketSerial - #endif +#if ENABLED(ESP3D_WIFISUPPORT) + typedef ForwardSerial1Class< decltype(Serial2Socket) > DefaultSerial1; + extern DefaultSerial1 MSerial0; + #define MYSERIAL2 MSerial0 +#elif ENABLED(WIFISUPPORT) + #define MYSERIAL2 webSocketSerial #endif #define CRITICAL_SECTION_START() portENTER_CRITICAL(&hal.spinlock) diff --git a/Marlin/src/HAL/shared/esp_wifi.cpp b/Marlin/src/HAL/shared/esp_wifi.cpp index a55f5ca39f..8a6ac2dfa9 100644 --- a/Marlin/src/HAL/shared/esp_wifi.cpp +++ b/Marlin/src/HAL/shared/esp_wifi.cpp @@ -21,6 +21,9 @@ */ #include "../../inc/MarlinConfig.h" + +#if ENABLED(WIFISUPPORT) + #include "Delay.h" void esp_wifi_init(void) { // init ESP01 WIFI module pins @@ -41,3 +44,5 @@ void esp_wifi_init(void) { // init ESP01 WIFI module pi OUT_WRITE(ESP_WIFI_MODULE_ENABLE_PIN, HIGH); #endif } + +#endif // WIFISUPPORT diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 3ab01b0348..213cbebc26 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -34,6 +34,10 @@ #include "HAL/shared/esp_wifi.h" #include "HAL/shared/cpu_exception/exception_hook.h" +#if ENABLED(WIFISUPPORT) + #include "HAL/shared/esp_wifi.h" +#endif + #ifdef ARDUINO #include #endif @@ -1270,7 +1274,9 @@ void setup() { SETUP_RUN(hal.init_board()); - SETUP_RUN(esp_wifi_init()); + #if ENABLED(WIFISUPPORT) + SETUP_RUN(esp_wifi_init()); + #endif // Report Reset Reason if (mcu & RST_POWER_ON) SERIAL_ECHOLNPGM(STR_POWERUP); diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 8fbc0c4541..c92cc64c65 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -4307,10 +4307,14 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); #endif /** - * Sanity check for WIFI + * Sanity check WiFi options */ -#if EITHER(ESP3D_WIFISUPPORT, WIFISUPPORT) && DISABLED(ARDUINO_ARCH_ESP32) - #error "ESP3D_WIFISUPPORT or WIFISUPPORT requires an ESP32 MOTHERBOARD." +#if ENABLED(ESP3D_WIFISUPPORT) && DISABLED(ARDUINO_ARCH_ESP32) + #error "ESP3D_WIFISUPPORT requires an ESP32 MOTHERBOARD." +#elif ENABLED(WEBSUPPORT) && NONE(ARDUINO_ARCH_ESP32, WIFISUPPORT) + #error "WEBSUPPORT requires WIFISUPPORT and an ESP32 MOTHERBOARD." +#elif BOTH(ESP3D_WIFISUPPORT, WIFISUPPORT) + #error "Enable only one of ESP3D_WIFISUPPORT or WIFISUPPORT." #endif /** diff --git a/Marlin/src/pins/sam/pins_RURAMPS4D_11.h b/Marlin/src/pins/sam/pins_RURAMPS4D_11.h index fb14c5a81f..2ae1f48277 100644 --- a/Marlin/src/pins/sam/pins_RURAMPS4D_11.h +++ b/Marlin/src/pins/sam/pins_RURAMPS4D_11.h @@ -163,11 +163,13 @@ #define TFT_LCD_MODULE_COM 1 #define TFT_LCD_MODULE_BAUDRATE 115600 -// ESP WiFi Use internal USART-2 -#define ESP_WIFI_MODULE_COM 2 -#define ESP_WIFI_MODULE_BAUDRATE 115600 -#define ESP_WIFI_MODULE_RESET_PIN -1 -#define PIGGY_GPIO_PIN -1 +#if ENABLED(WIFISUPPORT) + // ESP WiFi Use internal USART-2 + #define ESP_WIFI_MODULE_COM 2 + #define ESP_WIFI_MODULE_BAUDRATE 115600 + #define ESP_WIFI_MODULE_RESET_PIN -1 + #define PIGGY_GPIO_PIN -1 +#endif // // EEPROM diff --git a/Marlin/src/pins/sam/pins_RURAMPS4D_13.h b/Marlin/src/pins/sam/pins_RURAMPS4D_13.h index c65e6e24cb..6034a0e82a 100644 --- a/Marlin/src/pins/sam/pins_RURAMPS4D_13.h +++ b/Marlin/src/pins/sam/pins_RURAMPS4D_13.h @@ -153,11 +153,13 @@ #define TFT_LCD_MODULE_COM 1 #define TFT_LCD_MODULE_BAUDRATE 115200 -// ESP WiFi Use internal USART-2 -#define ESP_WIFI_MODULE_COM 2 -#define ESP_WIFI_MODULE_BAUDRATE 115200 -#define ESP_WIFI_MODULE_RESET_PIN -1 -#define PIGGY_GPIO_PIN -1 +#if ENABLED(WIFISUPPORT) + // ESP WiFi Use internal USART-2 + #define ESP_WIFI_MODULE_COM 2 + #define ESP_WIFI_MODULE_BAUDRATE 115200 + #define ESP_WIFI_MODULE_RESET_PIN -1 + #define PIGGY_GPIO_PIN -1 +#endif // // EEPROM diff --git a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h index 0811ab1f1b..4978f84abe 100644 --- a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h +++ b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h @@ -138,27 +138,29 @@ #define DEFAULT_PWM_MOTOR_CURRENT { 800, 800, 800 } #endif - /** - * MKS Robin_Wifi or another ESP8266 module - * - * __ESP(M1)__ -J1- - * GND| 15 | | 08 |+3v3 (22) RXD1 (PA10) - * | 16 | | 07 |MOSI (21) TXD1 (PA9) Active LOW, probably OK to leave floating - * IO2| 17 | | 06 |MISO (19) IO1 (PC7) Leave as unused (ESP3D software configures this with a pullup so OK to leave as floating) - * IO0| 18 | | 05 |CLK (18) IO0 (PA8) Must be HIGH (ESP3D software configures this with a pullup so OK to leave as floating) - * IO1| 19 | | 03 |EN (03) WIFI_EN Must be HIGH for module to run - * | nc | | nc | (01) WIFI_CTRL (PA5) - * RX| 21 | | nc | - * TX| 22 | | 01 |RST - *  ̄ ̄ AE ̄ ̄ - */ - // Module ESP-WIFI - #define ESP_WIFI_MODULE_COM 2 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this - #define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 - #define ESP_WIFI_MODULE_RESET_PIN PA5 // WIFI CTRL/RST - #define ESP_WIFI_MODULE_ENABLE_PIN -1 - #define ESP_WIFI_MODULE_TXD_PIN PA9 // MKS or ESP WIFI RX PIN - #define ESP_WIFI_MODULE_RXD_PIN PA10 // MKS or ESP WIFI TX PIN + #if ENABLED(WIFISUPPORT) + /** + * MKS Robin_Wifi or another ESP8266 module + * + * __ESP(M1)__ -J1- + * GND| 15 | | 08 |+3v3 (22) RXD1 (PA10) + * | 16 | | 07 |MOSI (21) TXD1 (PA9) Active LOW, probably OK to leave floating + * IO2| 17 | | 06 |MISO (19) IO1 (PC7) Leave as unused (ESP3D software configures this with a pullup so OK to leave as floating) + * IO0| 18 | | 05 |CLK (18) IO0 (PA8) Must be HIGH (ESP3D software configures this with a pullup so OK to leave as floating) + * IO1| 19 | | 03 |EN (03) WIFI_EN Must be HIGH for module to run + * | nc | | nc | (01) WIFI_CTRL (PA5) + * RX| 21 | | nc | + * TX| 22 | | 01 |RST + *  ̄ ̄ AE ̄ ̄ + */ + // Module ESP-WIFI + #define ESP_WIFI_MODULE_COM 2 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this + #define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 + #define ESP_WIFI_MODULE_RESET_PIN PA5 // WIFI CTRL/RST + #define ESP_WIFI_MODULE_ENABLE_PIN -1 + #define ESP_WIFI_MODULE_TXD_PIN PA9 // MKS or ESP WIFI RX PIN + #define ESP_WIFI_MODULE_RXD_PIN PA10 // MKS or ESP WIFI TX PIN + #endif #endif // diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h b/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h index 4030edbeb2..c41e20c2ed 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h @@ -226,10 +226,11 @@ #define SDSS SD_SS_PIN -// -// ESP WiFi can be soldered to J9 connector which is wired to USART2. -// Must define WIFISUPPORT in Configuration.h for the printer. -// -#define ESP_WIFI_MODULE_COM 2 -#define ESP_WIFI_MODULE_BAUDRATE 115200 -#define ESP_WIFI_MODULE_RESET_PIN -1 +#if ENABLED(WIFISUPPORT) + // + // ESP WiFi can be soldered to J9 connector which is wired to USART2. + // + #define ESP_WIFI_MODULE_COM 2 + #define ESP_WIFI_MODULE_BAUDRATE 115200 + #define ESP_WIFI_MODULE_RESET_PIN -1 +#endif diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h b/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h index 040f44e0cf..7b144f7118 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h @@ -220,10 +220,11 @@ #define SDSS SD_SS_PIN -// -// ESP WiFi can be soldered to J9 connector which is wired to USART2. -// Must define WIFISUPPORT in Configuration.h for the printer. -// -#define ESP_WIFI_MODULE_COM 2 -#define ESP_WIFI_MODULE_BAUDRATE 115200 -#define ESP_WIFI_MODULE_RESET_PIN -1 +#if ENABLED(WIFISUPPORT) + // + // ESP WiFi can be soldered to J9 connector which is wired to USART2. + // + #define ESP_WIFI_MODULE_COM 2 + #define ESP_WIFI_MODULE_BAUDRATE 115200 + #define ESP_WIFI_MODULE_RESET_PIN -1 +#endif diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h b/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h index 313b693ec5..633b782e02 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h @@ -231,10 +231,11 @@ #define SDSS SD_SS_PIN -// -// ESP WiFi can be soldered to J9 connector which is wired to USART2. -// Must define WIFISUPPORT in Configuration.h for the printer. -// -#define ESP_WIFI_MODULE_COM 2 -#define ESP_WIFI_MODULE_BAUDRATE 115200 -#define ESP_WIFI_MODULE_RESET_PIN -1 +#if ENABLED(WIFISUPPORT) + // + // ESP WiFi can be soldered to J9 connector which is wired to USART2. + // + #define ESP_WIFI_MODULE_COM 2 + #define ESP_WIFI_MODULE_BAUDRATE 115200 + #define ESP_WIFI_MODULE_RESET_PIN -1 +#endif diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h b/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h index 35b952f79b..2316d9d3b6 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h @@ -223,10 +223,11 @@ #define SDSS SD_SS_PIN -// -// ESP WiFi can be soldered to J9 connector which is wired to USART2. -// Must define WIFISUPPORT in Configuration.h for the printer. -// -#define ESP_WIFI_MODULE_COM 2 -#define ESP_WIFI_MODULE_BAUDRATE 115200 -#define ESP_WIFI_MODULE_RESET_PIN -1 +#if ENABLED(WIFISUPPORT) + // + // ESP WiFi can be soldered to J9 connector which is wired to USART2. + // + #define ESP_WIFI_MODULE_COM 2 + #define ESP_WIFI_MODULE_BAUDRATE 115200 + #define ESP_WIFI_MODULE_RESET_PIN -1 +#endif diff --git a/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h b/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h index 383f15f2a3..73f943c3fa 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h @@ -390,15 +390,16 @@ #error "SD CUSTOM_CABLE is not compatible with BTT E3 RRF." #endif -// -// WIFI -// - -#define ESP_WIFI_MODULE_COM 3 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this -#define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 -#define ESP_WIFI_MODULE_RESET_PIN PA4 -#define ESP_WIFI_MODULE_ENABLE_PIN PA5 -#define ESP_WIFI_MODULE_GPIO0_PIN PA6 +#if ENABLED(WIFISUPPORT) + // + // WIFI + // + #define ESP_WIFI_MODULE_COM 3 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this + #define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 + #define ESP_WIFI_MODULE_RESET_PIN PA4 + #define ESP_WIFI_MODULE_ENABLE_PIN PA5 + #define ESP_WIFI_MODULE_GPIO0_PIN PA6 +#endif #if ENABLED(BTT_E3_RRF_IDEX_BOARD) #define FPC2_PIN PB11 diff --git a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h index 4bc75089d1..78766b5c98 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h @@ -542,26 +542,28 @@ #define NEOPIXEL_PIN PB0 #endif -// -// WIFI -// +#if ENABLED(WIFISUPPORT) + // + // WIFI + // -/** - * ------- - * GND | 9 | | 8 | 3.3V - * (ESP-CS) PB12 | 10 | | 7 | PB15 (ESP-MOSI) - * 3.3V | 11 | | 6 | PB14 (ESP-MISO) - * (ESP-IO0) PD7 | 12 | | 5 | PB13 (ESP-CLK) - * (ESP-IO4) PD10 | 13 | | 4 | -- - * -- | 14 | | 3 | PE15 (ESP-EN) - * (ESP-RX) PD8 | 15 | | 2 | -- - * (ESP-TX) PD9 | 16 | | 1 | PE14 (ESP-RST) - * ------- - * WIFI - */ -#define ESP_WIFI_MODULE_COM 3 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this -#define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 -#define ESP_WIFI_MODULE_RESET_PIN PG7 -#define ESP_WIFI_MODULE_ENABLE_PIN PG8 -#define ESP_WIFI_MODULE_GPIO0_PIN PD7 -#define ESP_WIFI_MODULE_GPIO4_PIN PD10 + /** + * ------- + * GND | 9 | | 8 | 3.3V + * (ESP-CS) PB12 | 10 | | 7 | PB15 (ESP-MOSI) + * 3.3V | 11 | | 6 | PB14 (ESP-MISO) + * (ESP-IO0) PD7 | 12 | | 5 | PB13 (ESP-CLK) + * (ESP-IO4) PD10 | 13 | | 4 | -- + * -- | 14 | | 3 | PE15 (ESP-EN) + * (ESP-RX) PD8 | 15 | | 2 | -- + * (ESP-TX) PD9 | 16 | | 1 | PE14 (ESP-RST) + * ------- + * WIFI + */ + #define ESP_WIFI_MODULE_COM 3 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this + #define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 + #define ESP_WIFI_MODULE_RESET_PIN PG7 + #define ESP_WIFI_MODULE_ENABLE_PIN PG8 + #define ESP_WIFI_MODULE_GPIO0_PIN PD7 + #define ESP_WIFI_MODULE_GPIO4_PIN PD10 +#endif diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h index 2121b078db..0cdd34aaee 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h @@ -545,22 +545,24 @@ #endif #endif -// -// WIFI -// +#if ENABLED(WIFISUPPORT) + // + // WIFI + // -/** - * ------ - * RX | 8 7 | 3.3V GPIO0 PF14 ... Leave as unused (ESP3D software configures this with a pullup so OK to leave as floating) - * GPIO0 | 6 5 | Reset GPIO2 PF15 ... must be high (ESP3D software configures this with a pullup so OK to leave as floating) - * GPIO2 | 4 3 | Enable Reset PG0 ... active low, probably OK to leave floating - * GND | 2 1 | TX Enable PG1 ... Must be high for module to run - * ------ - * W1 - */ -#define ESP_WIFI_MODULE_COM 6 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this -#define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 -#define ESP_WIFI_MODULE_RESET_PIN PG0 -#define ESP_WIFI_MODULE_ENABLE_PIN PG1 -#define ESP_WIFI_MODULE_GPIO0_PIN PF14 -#define ESP_WIFI_MODULE_GPIO2_PIN PF15 + /** + * ------ + * RX | 8 7 | 3.3V GPIO0 PF14 ... Leave as unused (ESP3D software configures this with a pullup so OK to leave as floating) + * GPIO0 | 6 5 | Reset GPIO2 PF15 ... must be high (ESP3D software configures this with a pullup so OK to leave as floating) + * GPIO2 | 4 3 | Enable Reset PG0 ... active low, probably OK to leave floating + * GND | 2 1 | TX Enable PG1 ... Must be high for module to run + * ------ + * W1 + */ + #define ESP_WIFI_MODULE_COM 6 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this + #define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 + #define ESP_WIFI_MODULE_RESET_PIN PG0 + #define ESP_WIFI_MODULE_ENABLE_PIN PG1 + #define ESP_WIFI_MODULE_GPIO0_PIN PF14 + #define ESP_WIFI_MODULE_GPIO2_PIN PF15 +#endif diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h index ef85caa170..95b20c105d 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h @@ -554,25 +554,27 @@ #define NEOPIXEL_PIN PE6 #endif -// -// WIFI -// +#if ENABLED(WIFISUPPORT) + // + // WIFI + // -/** - * ------- - * GND | 9 | | 8 | 3.3V - * (ESP-CS) PB12 | 10 | | 7 | PB15 (ESP-MOSI) - * 3.3V | 11 | | 6 | PB14 (ESP-MISO) - * (ESP-IO0) PB10 | 12 | | 5 | PB13 (ESP-CLK) - * (ESP-IO4) PB11 | 13 | | 4 | -- - * -- | 14 | | 3 | 3.3V (ESP-EN) - * (ESP-RX) PD8 | 15 | | 2 | -- - * (ESP-TX) PD9 | 16 | | 1 | PC14 (ESP-RST) - * ------- - * WIFI - */ -#define ESP_WIFI_MODULE_COM 3 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this -#define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 -#define ESP_WIFI_MODULE_RESET_PIN PC14 -#define ESP_WIFI_MODULE_GPIO0_PIN PB10 -#define ESP_WIFI_MODULE_GPIO4_PIN PB11 + /** + * ------- + * GND | 9 | | 8 | 3.3V + * (ESP-CS) PB12 | 10 | | 7 | PB15 (ESP-MOSI) + * 3.3V | 11 | | 6 | PB14 (ESP-MISO) + * (ESP-IO0) PB10 | 12 | | 5 | PB13 (ESP-CLK) + * (ESP-IO4) PB11 | 13 | | 4 | -- + * -- | 14 | | 3 | 3.3V (ESP-EN) + * (ESP-RX) PD8 | 15 | | 2 | -- + * (ESP-TX) PD9 | 16 | | 1 | PC14 (ESP-RST) + * ------- + * WIFI + */ + #define ESP_WIFI_MODULE_COM 3 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this + #define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 + #define ESP_WIFI_MODULE_RESET_PIN PC14 + #define ESP_WIFI_MODULE_GPIO0_PIN PB10 + #define ESP_WIFI_MODULE_GPIO4_PIN PB11 +#endif diff --git a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h index c414ac619b..cc2dab0e16 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h @@ -519,25 +519,27 @@ #define NEOPIXEL2_PIN PE9 #endif -// -// WIFI -// +#if ENABLED(WIFISUPPORT) + // + // WIFI + // -/** - * ------- - * GND | 9 | | 8 | 3.3V - * (ESP-CS) PG1 | 10 | | 7 | PB15 (ESP-MOSI) - * 3.3V | 11 | | 6 | PB14 (ESP-MISO) - * (ESP-IO0) PG0 | 12 | | 5 | PB13 (ESP-CLK) - * (ESP-IO4) PF15 | 13 | | 4 | -- - * -- | 14 | | 3 | 3.3V (ESP-EN) - * (ESP-RX) PE7 | 15 | | 2 | -- - * (ESP-TX) PE8 | 16 | | 1 | PB2 (ESP-RST) - * ------- - * WIFI - */ -#define ESP_WIFI_MODULE_COM 7 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this -#define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 -#define ESP_WIFI_MODULE_RESET_PIN PB2 -#define ESP_WIFI_MODULE_GPIO0_PIN PG0 -#define ESP_WIFI_MODULE_GPIO4_PIN PF15 + /** + * ------- + * GND | 9 | | 8 | 3.3V + * (ESP-CS) PG1 | 10 | | 7 | PB15 (ESP-MOSI) + * 3.3V | 11 | | 6 | PB14 (ESP-MISO) + * (ESP-IO0) PG0 | 12 | | 5 | PB13 (ESP-CLK) + * (ESP-IO4) PF15 | 13 | | 4 | -- + * -- | 14 | | 3 | 3.3V (ESP-EN) + * (ESP-RX) PE7 | 15 | | 2 | -- + * (ESP-TX) PE8 | 16 | | 1 | PB2 (ESP-RST) + * ------- + * WIFI + */ + #define ESP_WIFI_MODULE_COM 7 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this + #define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 + #define ESP_WIFI_MODULE_RESET_PIN PB2 + #define ESP_WIFI_MODULE_GPIO0_PIN PG0 + #define ESP_WIFI_MODULE_GPIO4_PIN PF15 +#endif diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h index cafd30bf63..97ac32479e 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h @@ -541,25 +541,27 @@ #define NEOPIXEL_PIN PE6 #endif -// -// WIFI -// +#if ENABLED(WIFISUPPORT) + // + // WIFI + // -/** - * ------- - * GND | 9 | | 8 | 3.3V - * (ESP-CS) PB12 | 10 | | 7 | PB15 (ESP-MOSI) - * 3.3V | 11 | | 6 | PB14 (ESP-MISO) - * (ESP-IO0) PB10 | 12 | | 5 | PB13 (ESP-CLK) - * (ESP-IO4) PB11 | 13 | | 4 | -- - * -- | 14 | | 3 | 3.3V (ESP-EN) - * (ESP-RX) PD8 | 15 | | 2 | -- - * (ESP-TX) PD9 | 16 | | 1 | PC14 (ESP-RST) - * ------- - * WIFI - */ -#define ESP_WIFI_MODULE_COM 3 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this -#define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 -#define ESP_WIFI_MODULE_RESET_PIN PC14 -#define ESP_WIFI_MODULE_GPIO0_PIN PB10 -#define ESP_WIFI_MODULE_GPIO4_PIN PB11 + /** + * ------- + * GND | 9 | | 8 | 3.3V + * (ESP-CS) PB12 | 10 | | 7 | PB15 (ESP-MOSI) + * 3.3V | 11 | | 6 | PB14 (ESP-MISO) + * (ESP-IO0) PB10 | 12 | | 5 | PB13 (ESP-CLK) + * (ESP-IO4) PB11 | 13 | | 4 | -- + * -- | 14 | | 3 | 3.3V (ESP-EN) + * (ESP-RX) PD8 | 15 | | 2 | -- + * (ESP-TX) PD9 | 16 | | 1 | PC14 (ESP-RST) + * ------- + * WIFI + */ + #define ESP_WIFI_MODULE_COM 3 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this + #define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 + #define ESP_WIFI_MODULE_RESET_PIN PC14 + #define ESP_WIFI_MODULE_GPIO0_PIN PB10 + #define ESP_WIFI_MODULE_GPIO4_PIN PB11 +#endif From 83da21089f789033d2a8d5de6433c5fc7cf58b98 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 28 Mar 2023 16:38:56 -0500 Subject: [PATCH 198/659] =?UTF-8?q?=F0=9F=94=A8=20Update=20config.ini=20en?= =?UTF-8?q?dstop=20states?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25574 --- Marlin/config.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/config.ini b/Marlin/config.ini index 0ac8187179..c4fe7597f8 100644 --- a/Marlin/config.ini +++ b/Marlin/config.ini @@ -73,9 +73,9 @@ use_xmin_plug = on use_ymin_plug = on use_zmin_plug = on -x_min_endstop_inverting = false -y_min_endstop_inverting = false -z_min_endstop_inverting = false +x_min_endstop_hit_state = HIGH +y_min_endstop_hit_state = HIGH +z_min_endstop_hit_state = HIGH default_axis_steps_per_unit = { 80, 80, 400, 500 } axis_relative_modes = { false, false, false, false } From 7185b34fd759bc378c2fcdf3b84f9533cf171110 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 29 Mar 2023 00:24:23 +0000 Subject: [PATCH 199/659] [cron] Bump distribution date (2023-03-29) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 69cf291f62..bdcccd204d 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-28" +//#define STRING_DISTRIBUTION_DATE "2023-03-29" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 6c08c374ce..4443753e79 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-28" + #define STRING_DISTRIBUTION_DATE "2023-03-29" #endif /** From 2c6aff5c79310c1b8222f0c2a26994ac728516f8 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Wed, 29 Mar 2023 15:36:05 +1300 Subject: [PATCH 200/659] =?UTF-8?q?=F0=9F=94=A7=20Impose=20Hephestos=202?= =?UTF-8?q?=20Bed=20Kit=20requirements=20(#25585)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 2 - Marlin/src/inc/Conditionals_post.h | 65 ++++----------------- Marlin/src/inc/SanityCheck.h | 11 ++++ Marlin/src/module/temperature.cpp | 26 ++++----- Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h | 3 +- 5 files changed, 37 insertions(+), 70 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 416caf22fc..070309d5aa 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -194,8 +194,6 @@ */ //#define HEPHESTOS2_HEATED_BED_KIT #if ENABLED(HEPHESTOS2_HEATED_BED_KIT) - #undef TEMP_SENSOR_BED - #define TEMP_SENSOR_BED 70 #define HEATER_BED_INVERTING true #endif diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index bf9ede65dc..4e36b726c8 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -2799,54 +2799,24 @@ #define HAS_MICROSTEPS 1 #endif -/** - * Heater signal inversion defaults - */ - -#if HAS_HEATER_0 && !defined(HEATER_0_INVERTING) - #define HEATER_0_INVERTING false -#endif -#if HAS_HEATER_1 && !defined(HEATER_1_INVERTING) - #define HEATER_1_INVERTING false -#endif -#if HAS_HEATER_2 && !defined(HEATER_2_INVERTING) - #define HEATER_2_INVERTING false -#endif -#if HAS_HEATER_3 && !defined(HEATER_3_INVERTING) - #define HEATER_3_INVERTING false -#endif -#if HAS_HEATER_4 && !defined(HEATER_4_INVERTING) - #define HEATER_4_INVERTING false -#endif -#if HAS_HEATER_5 && !defined(HEATER_5_INVERTING) - #define HEATER_5_INVERTING false -#endif -#if HAS_HEATER_6 && !defined(HEATER_6_INVERTING) - #define HEATER_6_INVERTING false -#endif -#if HAS_HEATER_7 && !defined(HEATER_7_INVERTING) - #define HEATER_7_INVERTING false -#endif - /** * Helper Macros for heaters and extruder fan */ - -#define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, (v) ^ HEATER_0_INVERTING) +#define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, (v) ^ ENABLED(HEATER_0_INVERTING)) #if EITHER(HAS_MULTI_HOTEND, HEATERS_PARALLEL) - #define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, (v) ^ HEATER_1_INVERTING) + #define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, (v) ^ ENABLED(HEATER_1_INVERTING)) #if HOTENDS > 2 - #define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, (v) ^ HEATER_2_INVERTING) + #define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, (v) ^ ENABLED(HEATER_2_INVERTING)) #if HOTENDS > 3 - #define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, (v) ^ HEATER_3_INVERTING) + #define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, (v) ^ ENABLED(HEATER_3_INVERTING)) #if HOTENDS > 4 - #define WRITE_HEATER_4(v) WRITE(HEATER_4_PIN, (v) ^ HEATER_4_INVERTING) + #define WRITE_HEATER_4(v) WRITE(HEATER_4_PIN, (v) ^ ENABLED(HEATER_4_INVERTING)) #if HOTENDS > 5 - #define WRITE_HEATER_5(v) WRITE(HEATER_5_PIN, (v) ^ HEATER_5_INVERTING) + #define WRITE_HEATER_5(v) WRITE(HEATER_5_PIN, (v) ^ ENABLED(HEATER_5_INVERTING)) #if HOTENDS > 6 - #define WRITE_HEATER_6(v) WRITE(HEATER_6_PIN, (v) ^ HEATER_6_INVERTING) + #define WRITE_HEATER_6(v) WRITE(HEATER_6_PIN, (v) ^ ENABLED(HEATER_6_INVERTING)) #if HOTENDS > 7 - #define WRITE_HEATER_7(v) WRITE(HEATER_7_PIN, (v) ^ HEATER_7_INVERTING) + #define WRITE_HEATER_7(v) WRITE(HEATER_7_PIN, (v) ^ ENABLED(HEATER_7_INVERTING)) #endif // HOTENDS > 7 #endif // HOTENDS > 6 #endif // HOTENDS > 5 @@ -2860,10 +2830,6 @@ #define WRITE_HEATER_0(v) WRITE_HEATER_0P(v) #endif -#ifndef MIN_POWER - #define MIN_POWER 0 -#endif - /** * Heated bed requires settings */ @@ -2874,10 +2840,7 @@ #ifndef MAX_BED_POWER #define MAX_BED_POWER 255 #endif - #ifndef HEATER_BED_INVERTING - #define HEATER_BED_INVERTING false - #endif - #define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, (v) ^ HEATER_BED_INVERTING) + #define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, (v) ^ ENABLED(HEATER_BED_INVERTING)) #endif /** @@ -2890,10 +2853,7 @@ #ifndef MAX_CHAMBER_POWER #define MAX_CHAMBER_POWER 255 #endif - #ifndef HEATER_CHAMBER_INVERTING - #define HEATER_CHAMBER_INVERTING false - #endif - #define WRITE_HEATER_CHAMBER(v) WRITE(HEATER_CHAMBER_PIN, (v) ^ HEATER_CHAMBER_INVERTING) + #define WRITE_HEATER_CHAMBER(v) WRITE(HEATER_CHAMBER_PIN, (v) ^ ENABLED(HEATER_CHAMBER_INVERTING)) #endif /** @@ -2903,10 +2863,7 @@ #ifndef MAX_COOLER_POWER #define MAX_COOLER_POWER 255 #endif - #ifndef COOLER_INVERTING - #define COOLER_INVERTING true - #endif - #define WRITE_HEATER_COOLER(v) WRITE(COOLER_PIN, (v) ^ COOLER_INVERTING) + #define WRITE_HEATER_COOLER(v) WRITE(COOLER_PIN, (v) ^ ENABLED(COOLER_INVERTING)) #endif #if HAS_HOTEND || HAS_HEATED_BED || HAS_HEATED_CHAMBER || HAS_COOLER diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index c92cc64c65..a18ced531e 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -736,6 +736,17 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #undef _ISMAX_1 #undef _ISSNS_1 +/** + * Hephestos 2 Heated Bed Kit requirements + */ +#if ENABLED(HEPHESTOS2_HEATED_BED_KIT) + #if TEMP_SENSOR_BED != 70 + #error "HEPHESTOS2_HEATED_BED_KIT requires TEMP_SENSOR_BED 70." + #elif DISABLED(HEATER_BED_INVERTING) + #error "HEPHESTOS2_HEATED_BED_KIT requires HEATER_BED_INVERTING." + #endif +#endif + /** * Probe temp compensation requirements */ diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 180dbbc5ad..29c3a787c5 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2630,47 +2630,47 @@ void Temperature::init() { #if HAS_HEATER_0 #ifdef BOARD_OPENDRAIN_MOSFETS - OUT_WRITE_OD(HEATER_0_PIN, HEATER_0_INVERTING); + OUT_WRITE_OD(HEATER_0_PIN, ENABLED(HEATER_0_INVERTING)); #else - OUT_WRITE(HEATER_0_PIN, HEATER_0_INVERTING); + OUT_WRITE(HEATER_0_PIN, ENABLED(HEATER_0_INVERTING)); #endif #endif #if HAS_HEATER_1 - OUT_WRITE(HEATER_1_PIN, HEATER_1_INVERTING); + OUT_WRITE(HEATER_1_PIN, ENABLED(HEATER_1_INVERTING)); #endif #if HAS_HEATER_2 - OUT_WRITE(HEATER_2_PIN, HEATER_2_INVERTING); + OUT_WRITE(HEATER_2_PIN, ENABLED(HEATER_2_INVERTING)); #endif #if HAS_HEATER_3 - OUT_WRITE(HEATER_3_PIN, HEATER_3_INVERTING); + OUT_WRITE(HEATER_3_PIN, ENABLED(HEATER_3_INVERTING)); #endif #if HAS_HEATER_4 - OUT_WRITE(HEATER_4_PIN, HEATER_4_INVERTING); + OUT_WRITE(HEATER_4_PIN, ENABLED(HEATER_4_INVERTING)); #endif #if HAS_HEATER_5 - OUT_WRITE(HEATER_5_PIN, HEATER_5_INVERTING); + OUT_WRITE(HEATER_5_PIN, ENABLED(HEATER_5_INVERTING)); #endif #if HAS_HEATER_6 - OUT_WRITE(HEATER_6_PIN, HEATER_6_INVERTING); + OUT_WRITE(HEATER_6_PIN, ENABLED(HEATER_6_INVERTING)); #endif #if HAS_HEATER_7 - OUT_WRITE(HEATER_7_PIN, HEATER_7_INVERTING); + OUT_WRITE(HEATER_7_PIN, ENABLED(HEATER_7_INVERTING)); #endif #if HAS_HEATED_BED #ifdef BOARD_OPENDRAIN_MOSFETS - OUT_WRITE_OD(HEATER_BED_PIN, HEATER_BED_INVERTING); + OUT_WRITE_OD(HEATER_BED_PIN, ENABLED(HEATER_BED_INVERTING)); #else - OUT_WRITE(HEATER_BED_PIN, HEATER_BED_INVERTING); + OUT_WRITE(HEATER_BED_PIN, ENABLED(HEATER_BED_INVERTING)); #endif #endif #if HAS_HEATED_CHAMBER - OUT_WRITE(HEATER_CHAMBER_PIN, HEATER_CHAMBER_INVERTING); + OUT_WRITE(HEATER_CHAMBER_PIN, ENABLED(HEATER_CHAMBER_INVERTING)); #endif #if HAS_COOLER - OUT_WRITE(COOLER_PIN, COOLER_INVERTING); + OUT_WRITE(COOLER_PIN, ENABLED(COOLER_INVERTING)); #endif #if HAS_FAN0 diff --git a/Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h b/Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h index cd3ada25bf..efedb8ffaf 100644 --- a/Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h +++ b/Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h @@ -121,9 +121,10 @@ #include "pins_RAMPS_13.h" // ... RAMPS // -// Used by the Hephestos 2 heated bed upgrade kit +// Hephestos 2 heated bed upgrade kit uses pin 8 // #if ENABLED(HEPHESTOS2_HEATED_BED_KIT) #undef HEATER_BED_PIN #define HEATER_BED_PIN 8 + #define HEATER_BED_INVERTING true #endif From 93eeee2230c5b0fb238f63931c55b0b47547a8e5 Mon Sep 17 00:00:00 2001 From: Andrew <18502096+classicrocker883@users.noreply.github.com> Date: Wed, 29 Mar 2023 00:20:52 -0400 Subject: [PATCH 201/659] =?UTF-8?q?=F0=9F=8E=A8=20Remove=20unused=20ProUI?= =?UTF-8?q?=20:=20UBLValidMesh=20(#25591)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/e3v2/proui/dwin.h | 1 - 1 file changed, 1 deletion(-) diff --git a/Marlin/src/lcd/e3v2/proui/dwin.h b/Marlin/src/lcd/e3v2/proui/dwin.h index 4197da4390..26b77da5fb 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.h +++ b/Marlin/src/lcd/e3v2/proui/dwin.h @@ -229,7 +229,6 @@ void ParkHead(); #endif #if ENABLED(AUTO_BED_LEVELING_UBL) void UBLMeshTilt(); - bool UBLValidMesh(); void UBLMeshSave(); void UBLMeshLoad(); #endif From 54e29d75d72671c535324f9e4fc5cc1b0a31b298 Mon Sep 17 00:00:00 2001 From: John Unland Date: Tue, 28 Mar 2023 23:23:27 -0500 Subject: [PATCH 202/659] =?UTF-8?q?=F0=9F=94=A8=20Improve=20Docker=20local?= =?UTF-8?q?=20tests=20support=20(#25583)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 42 +++++++++++++++---------------------- Makefile | 21 ++++++++++++------- docker-compose.yml | 19 ----------------- docker/Dockerfile | 23 +++++++++++++++++--- get_test_targets.py | 12 ----------- scripts/get_test_targets.py | 15 +++++++++++++ 6 files changed, 66 insertions(+), 66 deletions(-) delete mode 100644 docker-compose.yml delete mode 100755 get_test_targets.py create mode 100644 scripts/get_test_targets.py diff --git a/.gitignore b/.gitignore index 555bde8622..a7f8a091aa 100755 --- a/.gitignore +++ b/.gitignore @@ -28,29 +28,11 @@ mczip.h *.gen *.sublime-workspace -# # OS -# applet/ .DS_Store -# -# Misc -# -*~ -*.orig -*.rej -*.bak -*.idea -*.i -*.ii -*.swp -tags - -# -# C++ -# -# Compiled Object files +# Compiled C++ Object files *.slo *.lo *.o @@ -81,10 +63,7 @@ tags *.out *.app -# -# C -# -# Object files +# Compiled C Object files *.o *.ko *.obj @@ -144,13 +123,13 @@ vc-fileutils.settings .vscode/* !.vscode/extensions.json -#Simulation +# Simulation files imgui.ini eeprom.dat spi_flash.bin fs.img -#cmake +# CMake CMakeLists.txt src/CMakeLists.txt CMakeListsPrivate.txt @@ -171,3 +150,16 @@ __pycache__ # IOLogger logs *_log.csv + +# Misc. +*~ +*.orig +*.rej +*.bak +*.idea +*.i +*.ii +*.swp +tags +*.logs +*.bak diff --git a/Makefile b/Makefile index d0495dc7d8..ad5c320c20 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,16 @@ +SCRIPTS_DIR := scripts +CONTAINER_RT_BIN := docker +CONTAINER_RT_OPTS := --rm -v $(PWD):/code -v platformio-cache:/root/.platformio +CONTAINER_IMAGE := marlin-dev + help: @echo "Tasks for local development:" @echo "* tests-single-ci: Run a single test from inside the CI" @echo "* tests-single-local: Run a single test locally" - @echo "* tests-single-local-docker: Run a single test locally, using docker-compose" + @echo "* tests-single-local-docker: Run a single test locally, using docker" @echo "* tests-all-local: Run all tests locally" - @echo "* tests-all-local-docker: Run all tests locally, using docker-compose" - @echo "* setup-local-docker: Setup local docker-compose" + @echo "* tests-all-local-docker: Run all tests locally, using docker" + @echo "* setup-local-docker: Build the local docker image" @echo "" @echo "Options for testing:" @echo " TEST_TARGET Set when running tests-single-*, to select the" @@ -34,19 +39,21 @@ tests-single-local: tests-single-local-docker: @if ! test -n "$(TEST_TARGET)" ; then echo "***ERROR*** Set TEST_TARGET= or use make tests-all-local-docker" ; return 1; fi - docker-compose run --rm marlin $(MAKE) tests-single-local TEST_TARGET=$(TEST_TARGET) VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD) ONLY_TEST="$(ONLY_TEST)" + @if ! $(CONTAINER_RT_BIN) images -q $(CONTAINER_IMAGE) > /dev/null ; then $(MAKE) setup-local-docker ; fi + $(CONTAINER_RT_BIN) run $(CONTAINER_RT_OPTS) $(CONTAINER_IMAGE) $(MAKE) tests-single-local TEST_TARGET=$(TEST_TARGET) VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD) ONLY_TEST="$(ONLY_TEST)" .PHONY: tests-single-local-docker tests-all-local: export PATH="./buildroot/bin/:./buildroot/tests/:${PATH}" \ && export VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) \ - && for TEST_TARGET in $$(./get_test_targets.py) ; do echo "Running tests for $$TEST_TARGET" ; run_tests . $$TEST_TARGET ; done + && for TEST_TARGET in $$($(SCRIPTS_DIR)/get_test_targets.py) ; do echo "Running tests for $$TEST_TARGET" ; run_tests . $$TEST_TARGET ; done .PHONY: tests-all-local tests-all-local-docker: - docker-compose run --rm marlin $(MAKE) tests-all-local VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD) + @if ! $(CONTAINER_RT_BIN) images -q $(CONTAINER_IMAGE) > /dev/null ; then $(MAKE) setup-local-docker ; fi + $(CONTAINER_RT_BIN) run $(CONTAINER_RT_OPTS) $(CONTAINER_IMAGE) $(MAKE) tests-all-local VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD) .PHONY: tests-all-local-docker setup-local-docker: - docker-compose build + $(CONTAINER_RT_BIN) build -t $(CONTAINER_IMAGE) -f docker/Dockerfile . .PHONY: setup-local-docker diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index a85e0f8315..0000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -version: "3.8" -services: - # The main image: this doesn't run any particular command, but is mainly used - # for running tests locally - marlin: - image: marlin-dev - build: - dockerfile: Dockerfile - context: docker - working_dir: /code - volumes: - - .:/code - - platformio-cache:/root/.platformio - -volumes: - # This volume holds installed libraries for PlatformIO. If this is deleted you - # will have to download all the dependencies again, which can be a very slow - # process - platformio-cache: diff --git a/docker/Dockerfile b/docker/Dockerfile index 7d32f9c637..c01ca76ebb 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,7 +1,24 @@ FROM python:3.9.0-buster -RUN pip install -U platformio +# Disable warnings about not having a TTY +ARG DEBIAN_FRONTEND=noninteractive + +# Disable debconf warnings +ARG DEBCONF_NOWARNINGS="yes" + +# Upgrade pip +RUN pip install --upgrade pip + +# Install platformio toolchain / framework and pyyaml +RUN pip install -U platformio PyYaml + +# Upgrade platformio using development version / branch RUN pio upgrade --dev -# To get the test platforms -RUN pip install PyYaml + +# Set working directory +WORKDIR /code + +# Set volumes / mount points that we are using +VOLUME /code /root/.platformio + #ENV PATH /code/buildroot/bin/:/code/buildroot/tests/:${PATH} diff --git a/get_test_targets.py b/get_test_targets.py deleted file mode 100755 index a38e3a594a..0000000000 --- a/get_test_targets.py +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env python -""" -Extract the builds used in Github CI, so that we can run them locally -""" -import yaml - - -with open('.github/workflows/test-builds.yml') as f: - github_configuration = yaml.safe_load(f) -test_platforms = github_configuration\ - ['jobs']['test_builds']['strategy']['matrix']['test-platform'] -print(' '.join(test_platforms)) diff --git a/scripts/get_test_targets.py b/scripts/get_test_targets.py new file mode 100644 index 0000000000..f51951ae12 --- /dev/null +++ b/scripts/get_test_targets.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +""" +Extract the builds used in Github CI, so that we can run them locally +""" +import yaml + +# Set the yaml file to parse +yaml_file = '.github/workflows/test-builds.yml' + +# Parse the yaml file, and load it into a dictionary (github_configuration) +with open(yaml_file) as f: + github_configuration = yaml.safe_load(f) + +# Print out the test platforms +print(' '.join(github_configuration['jobs']['test_builds']['strategy']['matrix']['test-platform'])) From 3b425d9a3860e959ede1f841112819a6ef09f7d5 Mon Sep 17 00:00:00 2001 From: Chris Pepper Date: Wed, 29 Mar 2023 05:45:22 +0100 Subject: [PATCH 203/659] =?UTF-8?q?=F0=9F=94=A8=20MarlinSimUI=20updates=20?= =?UTF-8?q?(#25589)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/boards.h | 2 +- Marlin/src/inc/SanityCheck.h | 2 +- Marlin/src/pins/pins.h | 6 +++++- buildroot/tests/linux_native | 2 +- ini/native.ini | 2 +- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index 0ca26d2ab2..147080542d 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -495,7 +495,7 @@ // Simulations // -#define BOARD_LINUX_RAMPS 9999 +#define BOARD_SIMULATED 9999 #define _MB_1(B) (defined(BOARD_##B) && MOTHERBOARD==BOARD_##B) #define MB(V...) DO(MB,||,V) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index a18ced531e..59b64e9ae9 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -4312,7 +4312,7 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); /** * Touch Screen Calibration */ -#if !MB(LINUX_RAMPS) && ENABLED(TFT_TOUCH_DEVICE_XPT2046) && DISABLED(TOUCH_SCREEN_CALIBRATION) \ +#if !MB(SIMULATED) && ENABLED(TFT_TOUCH_DEVICE_XPT2046) && DISABLED(TOUCH_SCREEN_CALIBRATION) \ && !(defined(TOUCH_CALIBRATION_X) && defined(TOUCH_CALIBRATION_Y) && defined(TOUCH_OFFSET_X) && defined(TOUCH_OFFSET_Y)) #error "TOUCH_CALIBRATION_[XY] and TOUCH_OFFSET_[XY] are required for resistive touch screens with TOUCH_SCREEN_CALIBRATION disabled." #endif diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index bead9d1f06..124c940422 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -809,7 +809,7 @@ // Linux Native Debug board // -#elif MB(LINUX_RAMPS) +#elif MB(SIMULATED) #include "linux/pins_RAMPS_LINUX.h" // Native or Simulation lin:linux_native mac:simulator_macos_debug mac:simulator_macos_release win:simulator_windows lin:simulator_linux_debug lin:simulator_linux_release #else @@ -845,6 +845,7 @@ #define BOARD_TH3D_EZBOARD_LITE_V2 99923 #define BOARD_BTT_SKR_SE_BX 99924 #define BOARD_MKS_MONSTER8 99925 + #define BOARD_LINUX_RAMPS 99926 #if MB(MKS_13) #error "BOARD_MKS_13 has been renamed BOARD_MKS_GEN_13. Please update your configuration." @@ -900,6 +901,8 @@ #error "BOARD_BTT_SKR_SE_BX is now BOARD_BTT_SKR_SE_BX_V2 or BOARD_BTT_SKR_SE_BX_V3. Please update your configuration." #elif MB(MKS_MONSTER8) #error "BOARD_MKS_MONSTER8 is now BOARD_MKS_MONSTER8_V1 or BOARD_MKS_MONSTER8_V2. Please update your configuration." + #elif MB(LINUX_RAMPS) + #error "BOARD_LINUX_RAMPS is now BOARD_SIMULATED. Please update your configuration." #elif defined(MOTHERBOARD) #error "Unknown MOTHERBOARD value set in Configuration.h." #else @@ -933,6 +936,7 @@ #undef BOARD_TH3D_EZBOARD_LITE_V2 #undef BOARD_BTT_SKR_SE_BX #undef BOARD_MKS_MONSTER8 + #undef BOARD_LINUX_RAMPS #endif diff --git a/buildroot/tests/linux_native b/buildroot/tests/linux_native index 0153687eac..268de8fd2b 100755 --- a/buildroot/tests/linux_native +++ b/buildroot/tests/linux_native @@ -10,7 +10,7 @@ set -e # Build with the default configurations # restore_configs -opt_set MOTHERBOARD BOARD_LINUX_RAMPS TEMP_SENSOR_BED 1 +opt_set MOTHERBOARD BOARD_SIMULATED TEMP_SENSOR_BED 1 opt_enable PIDTEMPBED EEPROM_SETTINGS BAUD_RATE_GCODE exec_test $1 $2 "Linux with EEPROM" "$3" diff --git a/ini/native.ini b/ini/native.ini index 6a0cce38e8..481dac1777 100644 --- a/ini/native.ini +++ b/ini/native.ini @@ -43,7 +43,7 @@ debug_build_flags = -fstack-protector-strong -g -g3 -ggdb lib_compat_mode = off build_src_filter = ${common.default_src_filter} + lib_deps = ${common.lib_deps} - MarlinSimUI=https://github.com/p3p/MarlinSimUI/archive/refs/heads/bugfix-2.0.x.zip + MarlinSimUI=https://github.com/p3p/MarlinSimUI/archive/refs/heads/bugfix-2.1.x.zip Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/marlin_sim_native.zip LiquidCrystal=https://github.com/p3p/LiquidCrystal/archive/master.zip extra_scripts = ${common.extra_scripts} From 6f5fd425113817fb72a38faf330b7719d63a77c4 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 30 Mar 2023 00:21:52 +0000 Subject: [PATCH 204/659] [cron] Bump distribution date (2023-03-30) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index bdcccd204d..40d817f7f0 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-29" +//#define STRING_DISTRIBUTION_DATE "2023-03-30" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 4443753e79..30c78dc3cc 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-29" + #define STRING_DISTRIBUTION_DATE "2023-03-30" #endif /** From e60df9d0af373b8ea34de7bfdbc9113eb97a1b22 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 29 Mar 2023 21:59:26 -0500 Subject: [PATCH 205/659] =?UTF-8?q?=F0=9F=A9=B9=20Update=20Trigorilla=20V0?= =?UTF-8?q?06=20fan=20pin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25568 --- Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h b/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h index 7b8c412bed..f09f633220 100644 --- a/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h +++ b/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h @@ -88,7 +88,7 @@ // // Fans // -#define FAN_PIN PA0 // FAN +#define FAN0_PIN PA0 // FAN #define FAN1_PIN PA14 // Connected to +24V #define FAN2_PIN -1 // PB1, auto fan for E0 #define CONTROLLER_FAN_PIN FAN1_PIN From 6a8ebdcd5093a8fb393356dc0c1ee2a894576fdb Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 29 Mar 2023 21:50:04 -0500 Subject: [PATCH 206/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20Ender-3=20V2=20wit?= =?UTF-8?q?h=20no=20fan?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 4 +- .../lcd/e3v2/marlinui/ui_status_480x272.cpp | 39 ++++++++++--------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 3f13fe8b3b..d90e4df5af 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -3862,7 +3862,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/ Draw_Menu_Item(row, ICON_Back, F("Cancel")); else { thermalManager.setTargetHotend(0, 0); - thermalManager.set_fan_speed(0, 0); + TERN_(HAS_FAN, thermalManager.set_fan_speed(0, 0)); Redraw_Menu(false, true, true); } break; @@ -4474,7 +4474,7 @@ void CrealityDWINClass::Popup_Control() { case ETemp: if (selection == 0) { thermalManager.setTargetHotend(EXTRUDE_MINTEMP, 0); - thermalManager.set_fan_speed(0, MAX_FAN_SPEED); + TERN_(HAS_FAN, thermalManager.set_fan_speed(0, MAX_FAN_SPEED)); Draw_Menu(PreheatHotend); } else diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp index d0a04a3c4b..680173bd12 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp @@ -143,25 +143,27 @@ void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, #endif // LCD_SHOW_E_TOTAL -// -// Fan Icon and Percentage -// -FORCE_INLINE void _draw_fan_status(const uint16_t x, const uint16_t y) { - const uint16_t fanx = (4 * STATUS_CHR_WIDTH - STATUS_FAN_WIDTH) / 2; - const bool fan_on = !!thermalManager.scaledFanSpeed(0); - if (fan_on) { - DWIN_ICON_Animation(0, fan_on, ICON, ICON_Fan0, ICON_Fan3, x + fanx, y, 25); - dwin_string.set(i8tostr3rj(thermalManager.scaledFanSpeedPercent(0))); - dwin_string.add('%'); - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x, y + STATUS_FAN_HEIGHT, S(dwin_string.string())); +#if HAS_FAN + // + // Fan Icon and Percentage + // + FORCE_INLINE void _draw_fan_status(const uint16_t x, const uint16_t y) { + const uint16_t fanx = (4 * STATUS_CHR_WIDTH - STATUS_FAN_WIDTH) / 2; + const bool fan_on = !!thermalManager.scaledFanSpeed(0); + if (fan_on) { + DWIN_ICON_Animation(0, fan_on, ICON, ICON_Fan0, ICON_Fan3, x + fanx, y, 25); + dwin_string.set(i8tostr3rj(thermalManager.scaledFanSpeedPercent(0))); + dwin_string.add('%'); + DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x, y + STATUS_FAN_HEIGHT, S(dwin_string.string())); + } + else { + DWIN_ICON_AnimationControl(0x0000); // disable all icon animations (this is the only one) + DWIN_ICON_Show(ICON, ICON_Fan0, x + fanx, y); + dwin_string.set(F(" ")); + DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x, y + STATUS_FAN_HEIGHT, S(dwin_string.string())); + } } - else { - DWIN_ICON_AnimationControl(0x0000); // disable all icon animations (this is the only one) - DWIN_ICON_Show(ICON, ICON_Fan0, x + fanx, y); - dwin_string.set(F(" ")); - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x, y + STATUS_FAN_HEIGHT, S(dwin_string.string())); - } -} +#endif /** * Draw a single heater icon with current and target temperature, at the given XY @@ -300,7 +302,6 @@ void MarlinUI::draw_status_screen() { #if HAS_HEATED_BED _draw_heater_status(H_BED, hx, STATUS_HEATERS_Y); #endif - #if HAS_FAN _draw_fan_status(LCD_PIXEL_WIDTH - STATUS_CHR_WIDTH * 5, STATUS_FAN_Y); #endif From a8ac83bbca1b6aed52e6cfa9a7b219cadd8c20b7 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 29 Mar 2023 22:34:07 -0500 Subject: [PATCH 207/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20=5FHAS=5FFAN=20for?= =?UTF-8?q?=20fan=20on=20Pin=200?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_post.h | 13 ++++++------- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 1 - 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 4e36b726c8..ad8d9d36fd 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -2605,14 +2605,13 @@ #define MAX_FANS 8 // Max supported fans #endif -#define _NOT_E_AUTO(N,F) (E##N##_AUTO_FAN_PIN != FAN##F##_PIN) -#define _HAS_FAN(F) (PIN_EXISTS(FAN##F) \ +#define _IS_E_AUTO(N,F) (PIN_EXISTS(E##N##_AUTO_FAN) && E##N##_AUTO_FAN_PIN == FAN##F##_PIN) +#define _HAS_FAN(F) (F < MAX_FANS && PIN_EXISTS(FAN##F) \ && CONTROLLER_FAN_PIN != FAN##F##_PIN \ - && _NOT_E_AUTO(0,F) && _NOT_E_AUTO(1,F) \ - && _NOT_E_AUTO(2,F) && _NOT_E_AUTO(3,F) \ - && _NOT_E_AUTO(4,F) && _NOT_E_AUTO(5,F) \ - && _NOT_E_AUTO(6,F) && _NOT_E_AUTO(7,F) \ - && F < MAX_FANS) + && !_IS_E_AUTO(0,F) && !_IS_E_AUTO(1,F) \ + && !_IS_E_AUTO(2,F) && !_IS_E_AUTO(3,F) \ + && !_IS_E_AUTO(4,F) && !_IS_E_AUTO(5,F) \ + && !_IS_E_AUTO(6,F) && !_IS_E_AUTO(7,F)) #if _HAS_FAN(0) #define HAS_FAN0 1 #endif diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index d90e4df5af..d4b4280671 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -38,7 +38,6 @@ #include "../../../module/planner.h" #include "../../../module/settings.h" #include "../../../libs/buzzer.h" -#include "../../../inc/Conditionals_post.h" //#define DEBUG_OUT 1 #include "../../../core/debug_out.h" From 49f1cc8efe0fcb8df79581c0b71eedef250e83f7 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 29 Mar 2023 22:55:36 -0500 Subject: [PATCH 208/659] =?UTF-8?q?=F0=9F=8E=A8=20Refine=20probe,=20more?= =?UTF-8?q?=20debug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/calibrate/G34_M422.cpp | 9 ++--- Marlin/src/gcode/calibrate/G76_M871.cpp | 1 - Marlin/src/module/motion.cpp | 11 ++++-- Marlin/src/module/probe.cpp | 46 ++++++++++++++++--------- Marlin/src/module/probe.h | 6 ++-- 5 files changed, 44 insertions(+), 29 deletions(-) diff --git a/Marlin/src/gcode/calibrate/G34_M422.cpp b/Marlin/src/gcode/calibrate/G34_M422.cpp index 6d5ca8bf19..816e455b84 100644 --- a/Marlin/src/gcode/calibrate/G34_M422.cpp +++ b/Marlin/src/gcode/calibrate/G34_M422.cpp @@ -147,18 +147,13 @@ void GcodeSuite::G34() { TERN_(HAS_DUPLICATION_MODE, set_duplication_enabled(false)); - // In BLTOUCH HS mode, the probe travels in a deployed state. - // Users of G34 might have a badly misaligned bed, so raise Z by the - // length of the deployed pin (BLTOUCH stroke < 7mm) - #define Z_BASIC_CLEARANCE (Z_CLEARANCE_BETWEEN_PROBES + TERN0(BLTOUCH, bltouch.z_extra_clearance())) - // Compute a worst-case clearance height to probe from. After the first // iteration this will be re-calculated based on the actual bed position auto magnitude2 = [&](const uint8_t i, const uint8_t j) { const xy_pos_t diff = z_stepper_align.xy[i] - z_stepper_align.xy[j]; return HYPOT2(diff.x, diff.y); }; - float z_probe = Z_BASIC_CLEARANCE + (G34_MAX_GRADE) * 0.01f * SQRT(_MAX(0, magnitude2(0, 1) + float z_probe = Z_PROBE_SAFE_CLEARANCE + (G34_MAX_GRADE) * 0.01f * SQRT(_MAX(0, magnitude2(0, 1) #if TRIPLE_Z , magnitude2(2, 1), magnitude2(2, 0) #if QUAD_Z @@ -253,7 +248,7 @@ void GcodeSuite::G34() { // Adapt the next probe clearance height based on the new measurements. // Safe_height = lowest distance to bed (= highest measurement) plus highest measured misalignment. z_maxdiff = z_measured_max - z_measured_min; - z_probe = Z_BASIC_CLEARANCE + z_measured_max + z_maxdiff; + z_probe = Z_PROBE_SAFE_CLEARANCE + z_measured_max + z_maxdiff; #if HAS_Z_STEPPER_ALIGN_STEPPER_XY // Replace the initial values in z_measured with calculated heights at diff --git a/Marlin/src/gcode/calibrate/G76_M871.cpp b/Marlin/src/gcode/calibrate/G76_M871.cpp index 9bea0a0b86..f25c848f2f 100644 --- a/Marlin/src/gcode/calibrate/G76_M871.cpp +++ b/Marlin/src/gcode/calibrate/G76_M871.cpp @@ -34,7 +34,6 @@ #include "../../module/probe.h" #include "../../feature/bedlevel/bedlevel.h" #include "../../module/temperature.h" -#include "../../module/probe.h" #include "../../feature/probe_temp_comp.h" #include "../../lcd/marlinui.h" diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 9d43db48c7..61cbef068e 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -672,6 +672,7 @@ void do_blocking_move_to(const xyze_pos_t &raw, const_feedRate_t fr_mm_s/*=0.0f* do_blocking_move_to(NUM_AXIS_ELEM(raw), fr_mm_s); } void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_blocking_move_to_x(", rx, ", ", fr_mm_s, ")"); do_blocking_move_to( NUM_AXIS_LIST(rx, current_position.y, current_position.z, current_position.i, current_position.j, current_position.k, current_position.u, current_position.v, current_position.w), @@ -681,6 +682,7 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { #if HAS_Y_AXIS void do_blocking_move_to_y(const_float_t ry, const_feedRate_t fr_mm_s/*=0.0*/) { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_blocking_move_to_y(", ry, ", ", fr_mm_s, ")"); do_blocking_move_to( NUM_AXIS_LIST(current_position.x, ry, current_position.z, current_position.i, current_position.j, current_position.k, current_position.u, current_position.v, current_position.w), @@ -691,6 +693,7 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { #if HAS_Z_AXIS void do_blocking_move_to_z(const_float_t rz, const_feedRate_t fr_mm_s/*=0.0*/) { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_blocking_move_to_z(", rz, ", ", fr_mm_s, ")"); do_blocking_move_to_xy_z(current_position, rz, fr_mm_s); } #endif @@ -769,6 +772,7 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { #if HAS_Y_AXIS void do_blocking_move_to_xy(const_float_t rx, const_float_t ry, const_feedRate_t fr_mm_s/*=0.0*/) { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_blocking_move_to_xy(", rx, ", ", ry, ", ", fr_mm_s, ")"); do_blocking_move_to( NUM_AXIS_LIST(rx, ry, current_position.z, current_position.i, current_position.j, current_position.k, current_position.u, current_position.v, current_position.w), @@ -789,9 +793,10 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { ); } void do_z_clearance(const_float_t zclear, const bool lower_allowed/*=false*/) { - float zdest = zclear; - if (!lower_allowed) NOLESS(zdest, current_position.z); - do_blocking_move_to_z(_MIN(zdest, Z_MAX_POS), TERN(HAS_BED_PROBE, z_probe_fast_mm_s, homing_feedrate(Z_AXIS))); + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_z_clearance(", zclear, ", ", lower_allowed, ")"); + const float zdest = _MIN(zclear, Z_MAX_POS); + if (zdest == current_position.z || (!lower_allowed && zdest < current_position.z)) return; + do_blocking_move_to_z(zdest, TERN(HAS_BED_PROBE, z_probe_fast_mm_s, homing_feedrate(Z_AXIS))); } #endif diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 25581922f6..230fc30db1 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -361,6 +361,7 @@ void Probe::do_z_raise(const float z_raise) { } FORCE_INLINE void probe_specific_action(const bool deploy) { + DEBUG_SECTION(log_psa, "Probe::probe_specific_action", DEBUGGING(LEVELING)); #if ENABLED(PAUSE_BEFORE_DEPLOY_STOW) do { #if ENABLED(PAUSE_PROBE_DEPLOY_WHEN_TRIGGERED) @@ -505,7 +506,6 @@ void Probe::probe_error_stop() { * Return TRUE if the probe could not be deployed/stowed */ bool Probe::set_deployed(const bool deploy, const bool no_return/*=false*/) { - if (DEBUGGING(LEVELING)) { DEBUG_POS("Probe::set_deployed", current_position); DEBUG_ECHOLNPGM("deploy=", deploy, " no_return=", no_return); @@ -688,12 +688,12 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { bool Probe::tare() { #if BOTH(PROBE_ACTIVATION_SWITCH, PROBE_TARE_ONLY_WHILE_INACTIVE) if (endstops.probe_switch_activated()) { - SERIAL_ECHOLNPGM("Cannot tare an active probe"); + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Cannot tare an active probe"); return true; } #endif - SERIAL_ECHOLNPGM("Taring probe"); + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Taring probe"); WRITE(PROBE_TARE_PIN, PROBE_TARE_STATE); delay(PROBE_TARE_TIME); WRITE(PROBE_TARE_PIN, !PROBE_TARE_STATE); @@ -718,6 +718,8 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { const float zoffs = SUM_TERN(HAS_HOTEND_OFFSET, -offset.z, hotend_offset[active_extruder].z); auto try_to_probe = [&](PGM_P const plbl, const_float_t z_probe_low_point, const feedRate_t fr_mm_s, const bool scheck, const float clearance) -> bool { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("try_to_probe(..., ", z_probe_low_point, ", ", fr_mm_s, ", ", scheck, ", ", clearance); + // Tare the probe, if supported if (TERN0(PROBE_TARE, tare())) return true; @@ -742,6 +744,8 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { // If Z isn't known then probe to -10mm. const float z_probe_low_point = axis_is_trusted(Z_AXIS) ? zoffs + Z_PROBE_LOW_POINT : -10.0f; + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Probe Low Point: ", z_probe_low_point); + // Double-probing does a fast probe followed by a slow probe #if TOTAL_PROBING == 2 @@ -749,6 +753,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { if (TERN0(PROBE_TARE, tare())) return NAN; // Do a first probe at the fast speed + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Fast Probe:"); if (try_to_probe(PSTR("FAST"), z_probe_low_point, z_probe_fast_mm_s, sanity_check, Z_CLEARANCE_BETWEEN_PROBES) ) return NAN; @@ -756,17 +761,17 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("1st Probe Z:", first_probe_z); // Raise to give the probe clearance - do_z_clearance(current_position.z + Z_CLEARANCE_MULTI_PROBE); + do_z_clearance(Z_CLEARANCE_MULTI_PROBE); #elif Z_PROBE_FEEDRATE_FAST != Z_PROBE_FEEDRATE_SLOW // If the nozzle is well over the travel height then // move down quickly before doing the slow probe - const float z = Z_CLEARANCE_DEPLOY_PROBE + 5.0f + (zoffs > 0 ? zoffs : 0); + const float z = Z_CLEARANCE_DEPLOY_PROBE + 5.0f + _MAX(zoffs, 0.0f); if (current_position.z > z) { // Probe down fast. If the probe never triggered, raise for probe clearance if (!probe_down_to_z(z, z_probe_fast_mm_s)) - do_z_clearance(current_position.z + Z_CLEARANCE_BETWEEN_PROBES); + do_z_clearance(Z_CLEARANCE_BETWEEN_PROBES); } #endif @@ -789,6 +794,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { if (TERN0(PROBE_TARE, tare())) return true; // Probe downward slowly to find the bed + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Slow Probe:"); if (try_to_probe(PSTR("SLOW"), z_probe_low_point, MMM_TO_MMS(Z_PROBE_FEEDRATE_SLOW), sanity_check, Z_CLEARANCE_MULTI_PROBE) ) return NAN; @@ -798,7 +804,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { #if EXTRA_PROBING > 0 // Insert Z measurement into probes[]. Keep it sorted ascending. - LOOP_LE_N(i, p) { // Iterate the saved Zs to insert the new Z + LOOP_LE_N(i, p) { // Iterate the saved Zs to insert the new Z if (i == p || probes[i] > z) { // Last index or new Z is smaller than this Z for (int8_t m = p; --m >= i;) probes[m + 1] = probes[m]; // Shift items down after the insertion point probes[i] = z; // Insert the new Z measurement @@ -817,7 +823,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { #if EXTRA_PROBING > 0 < TOTAL_PROBING - 1 #endif - ) do_z_clearance(z + Z_CLEARANCE_MULTI_PROBE); + ) do_z_clearance(Z_CLEARANCE_MULTI_PROBE); #endif } @@ -919,7 +925,7 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai #endif // Use a safe Z height for the XY move - const float safe_z = _MAX(current_position.z, SUM_TERN(BLTOUCH, Z_CLEARANCE_BETWEEN_PROBES, bltouch.z_extra_clearance())); + const float safe_z = _MAX(current_position.z, Z_PROBE_SAFE_CLEARANCE); // On delta keep Z below clip height or do_blocking_move_to will abort xyz_pos_t npos = NUM_AXIS_ARRAY( @@ -928,12 +934,16 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai current_position.u, current_position.v, current_position.w ); if (!can_reach(npos, probe_relative)) { - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Position Not Reachable"); + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Not Reachable"); return NAN; } - if (probe_relative) // Get the nozzle position, adjust for active hotend if not 0 + if (DEBUGGING(LEVELING)) DEBUG_ECHOPGM("Move to probe"); + if (probe_relative) { // Get the nozzle position, adjust for active hotend if not 0 + if (DEBUGGING(LEVELING)) DEBUG_ECHOPGM("-relative"); npos -= DIFF_TERN(HAS_HOTEND_OFFSET, offset_xy, xy_pos_t(hotend_offset[active_extruder])); + } + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM(" point"); // Move the probe to the starting XYZ do_blocking_move_to(npos, feedRate_t(XY_PROBE_FEEDRATE_MM_S)); @@ -953,11 +963,15 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai // Raise and/or stow the probe depending on 'raise_after' and settings. if (!isnan(measured_z)) { const ProbePtRaise raise_type = (TERN0(BLTOUCH, !bltouch.high_speed_mode) && raise_after == PROBE_PT_RAISE) ? PROBE_PT_STOW : raise_after; - const bool big_raise = raise_type == PROBE_PT_BIG_RAISE; - if (big_raise || raise_type == PROBE_PT_RAISE) - do_z_clearance(current_position.z + (big_raise ? 25 : Z_CLEARANCE_BETWEEN_PROBES)); - else if (raise_type == PROBE_PT_STOW || raise_type == PROBE_PT_LAST_STOW) - if (stow()) measured_z = NAN; // Error on stow? + switch (raise_type) { + default: break; + case PROBE_PT_RAISE: + do_z_clearance(Z_CLEARANCE_BETWEEN_PROBES); + break; + case PROBE_PT_STOW: case PROBE_PT_LAST_STOW: + if (stow()) measured_z = NAN; // Error on stow? + break; + } if (verbose_level > 2) SERIAL_ECHOLNPGM("Bed X: ", LOGICAL_X_POSITION(rx), " Y: ", LOGICAL_Y_POSITION(ry), " Z: ", measured_z); diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 90ef42b643..069e505ea0 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -38,8 +38,7 @@ PROBE_PT_NONE, // No raise or stow after run_z_probe PROBE_PT_STOW, // Do a complete stow after run_z_probe PROBE_PT_LAST_STOW, // Stow for sure, even in BLTouch HS mode - PROBE_PT_RAISE, // Raise to "between" clearance after run_z_probe - PROBE_PT_BIG_RAISE // Raise to big clearance after run_z_probe + PROBE_PT_RAISE // Raise to "between" clearance after run_z_probe }; #endif @@ -59,6 +58,9 @@ #define Z_POST_CLEARANCE 10 #endif +// In BLTOUCH HS mode, the probe travels in a deployed state. +#define Z_PROBE_SAFE_CLEARANCE SUM_TERN(BLTOUCH, Z_CLEARANCE_BETWEEN_PROBES, bltouch.z_extra_clearance()) + #if ENABLED(PREHEAT_BEFORE_LEVELING) #ifndef LEVELING_NOZZLE_TEMP #define LEVELING_NOZZLE_TEMP 0 From c91f3a78845853b83d583db75faee09031f6c608 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 16 Aug 2021 13:44:00 -0500 Subject: [PATCH 209/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20displayed=20mix=20?= =?UTF-8?q?percentages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/mixing.cpp | 2 -- Marlin/src/feature/mixing.h | 3 +-- Marlin/src/lcd/menu/menu_mixer.cpp | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/Marlin/src/feature/mixing.cpp b/Marlin/src/feature/mixing.cpp index b1a069e320..cf88b806f5 100644 --- a/Marlin/src/feature/mixing.cpp +++ b/Marlin/src/feature/mixing.cpp @@ -24,8 +24,6 @@ #if ENABLED(MIXING_EXTRUDER) -//#define MIXER_NORMALIZER_DEBUG - #include "mixing.h" Mixer mixer; diff --git a/Marlin/src/feature/mixing.h b/Marlin/src/feature/mixing.h index 85d52d69c8..3a14fdad59 100644 --- a/Marlin/src/feature/mixing.h +++ b/Marlin/src/feature/mixing.h @@ -148,8 +148,7 @@ class Mixer { static void update_mix_from_vtool(const uint8_t j=selected_vtool) { float ctot = 0; MIXER_STEPPER_LOOP(i) ctot += color[j][i]; - //MIXER_STEPPER_LOOP(i) mix[i] = 100.0f * color[j][i] / ctot; - MIXER_STEPPER_LOOP(i) mix[i] = mixer_perc_t(100.0f * color[j][i] / ctot); + MIXER_STEPPER_LOOP(i) mix[i] = mixer_perc_t(100.0f * color[j][i] / ctot + 0.5f); #ifdef MIXER_NORMALIZER_DEBUG SERIAL_ECHOPGM("V-tool ", j, " [ "); diff --git a/Marlin/src/lcd/menu/menu_mixer.cpp b/Marlin/src/lcd/menu/menu_mixer.cpp index f18c5bbfeb..f787d47d0f 100644 --- a/Marlin/src/lcd/menu/menu_mixer.cpp +++ b/Marlin/src/lcd/menu/menu_mixer.cpp @@ -112,7 +112,7 @@ static uint8_t v_index; #if HAS_DUAL_MIXING void _lcd_draw_mix(const uint8_t y) { char tmp[20]; // "100%_100%" - sprintf_P(tmp, PSTR("%3d%% %3d%%"), int(mixer.mix[0]), int(mixer.mix[1])); + sprintf_P(tmp, PSTR("%3d%% %3d%% "), int(mixer.mix[0]), int(mixer.mix[1])); SETCURSOR(2, y); lcd_put_u8str(GET_TEXT_F(MSG_MIX)); SETCURSOR_RJ(10, y); lcd_put_u8str(tmp); } From b1398cf3ab3c2a9fa1a34866f21dbf248d7e983f Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 31 Mar 2023 00:21:31 +0000 Subject: [PATCH 210/659] [cron] Bump distribution date (2023-03-31) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 40d817f7f0..b046ce572e 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-30" +//#define STRING_DISTRIBUTION_DATE "2023-03-31" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 30c78dc3cc..b81da76b55 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-30" + #define STRING_DISTRIBUTION_DATE "2023-03-31" #endif /** From 20e23050117287dafa6e5b16b6253b3d7629020d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 31 Mar 2023 00:33:31 -0500 Subject: [PATCH 211/659] =?UTF-8?q?=F0=9F=94=A7=20=20DGUS=5FLCD=5FUI=20sel?= =?UTF-8?q?ectable=20options?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 475f662ca5..d36ceab491 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -3111,6 +3111,8 @@ * - Download files as specified for your type of display. * - Plug the microSD card into the back of the display. * - Boot the display and wait for the update to complete. + * + * :[ 'ORIGIN', 'FYSETC', 'HYPRECY', 'MKS', 'RELOADED', 'IA_CREALITY' ] */ //#define DGUS_LCD_UI ORIGIN #if DGUS_UI_IS(MKS) From 16bd900a56498361d88514a831eed983af9301aa Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Fri, 31 Mar 2023 19:04:40 +1300 Subject: [PATCH 212/659] =?UTF-8?q?=F0=9F=94=A7=20Fix=20SENSORLESS=20hit?= =?UTF-8?q?=20state=20error=20(#25604)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/SanityCheck.h | 72 ++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 59b64e9ae9..6adf3c9d88 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -3645,15 +3645,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(X,TMC2209) #if X_HOME_TO_MIN && X_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_HIT_STATE LOW for X_MIN homing." - #else #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_HIT_STATE HIGH for X_MIN homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_HIT_STATE LOW for X_MIN homing." #endif #elif X_HOME_TO_MAX && X_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_HIT_STATE LOW for X_MAX homing." - #else #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_HIT_STATE HIGH for X_MAX homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_HIT_STATE LOW for X_MAX homing." #endif #endif #undef _HIT_STATE @@ -3663,15 +3663,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(Y,TMC2209) #if Y_HOME_TO_MIN && Y_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_HIT_STATE LOW for Y_MIN homing." - #else #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_HIT_STATE HIGH for Y_MIN homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_HIT_STATE LOW for Y_MIN homing." #endif #elif Y_HOME_TO_MAX && Y_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires Y_MAY_ENDSTOP_HIT_STATE LOW for Y_MAX homing." - #else #error "SENSORLESS_HOMING requires Y_MAY_ENDSTOP_HIT_STATE HIGH for Y_MAX homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires Y_MAY_ENDSTOP_HIT_STATE LOW for Y_MAX homing." #endif #endif #undef _HIT_STATE @@ -3681,15 +3681,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(Z,TMC2209) #if Z_HOME_TO_MIN && Z_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_HIT_STATE LOW for Z_MIN homing." - #else #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_HIT_STATE HIGH for Z_MIN homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_HIT_STATE LOW for Z_MIN homing." #endif #elif Z_HOME_TO_MAX && Z_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires Z_MAZ_ENDSTOP_HIT_STATE LOW for Z_MAX homing." - #else #error "SENSORLESS_HOMING requires Z_MAZ_ENDSTOP_HIT_STATE HIGH for Z_MAX homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires Z_MAZ_ENDSTOP_HIT_STATE LOW for Z_MAX homing." #endif #endif #undef _HIT_STATE @@ -3699,15 +3699,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(I,TMC2209) #if I_HOME_TO_MIN && I_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_HIT_STATE LOW for I_MIN homing." - #else #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_HIT_STATE HIGH for I_MIN homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_HIT_STATE LOW for I_MIN homing." #endif #elif I_HOME_TO_MAX && I_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires I_MAI_ENDSTOP_HIT_STATE LOW for I_MAX homing." - #else #error "SENSORLESS_HOMING requires I_MAI_ENDSTOP_HIT_STATE HIGH for I_MAX homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires I_MAI_ENDSTOP_HIT_STATE LOW for I_MAX homing." #endif #endif #undef _HIT_STATE @@ -3717,15 +3717,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(J,TMC2209) #if J_HOME_TO_MIN && J_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_HIT_STATE LOW for J_MIN homing." - #else #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_HIT_STATE HIGH for J_MIN homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_HIT_STATE LOW for J_MIN homing." #endif #elif J_HOME_TO_MAX && J_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires J_MAJ_ENDSTOP_HIT_STATE LOW for J_MAX homing." - #else #error "SENSORLESS_HOMING requires J_MAJ_ENDSTOP_HIT_STATE HIGH for J_MAX homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires J_MAJ_ENDSTOP_HIT_STATE LOW for J_MAX homing." #endif #endif #undef _HIT_STATE @@ -3735,15 +3735,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(K,TMC2209) #if K_HOME_TO_MIN && K_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_HIT_STATE LOW for K_MIN homing." - #else #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_HIT_STATE HIGH for K_MIN homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_HIT_STATE LOW for K_MIN homing." #endif #elif K_HOME_TO_MAX && K_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires K_MAK_ENDSTOP_HIT_STATE LOW for K_MAX homing." - #else #error "SENSORLESS_HOMING requires K_MAK_ENDSTOP_HIT_STATE HIGH for K_MAX homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires K_MAK_ENDSTOP_HIT_STATE LOW for K_MAX homing." #endif #endif #undef _HIT_STATE @@ -3753,15 +3753,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(U,TMC2209) #if U_HOME_TO_MIN && U_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_HIT_STATE LOW for U_MIN homing." - #else #error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_HIT_STATE HIGH for U_MIN homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_HIT_STATE LOW for U_MIN homing." #endif #elif U_HOME_TO_MAX && U_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires U_MAU_ENDSTOP_HIT_STATE LOW for U_MAX homing." - #else #error "SENSORLESS_HOMING requires U_MAU_ENDSTOP_HIT_STATE HIGH for U_MAX homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires U_MAU_ENDSTOP_HIT_STATE LOW for U_MAX homing." #endif #endif #undef _HIT_STATE @@ -3771,15 +3771,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(V,TMC2209) #if V_HOME_TO_MIN && V_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_HIT_STATE LOW for V_MIN homing." - #else #error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_HIT_STATE HIGH for V_MIN homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_HIT_STATE LOW for V_MIN homing." #endif #elif V_HOME_TO_MAX && V_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires V_MAV_ENDSTOP_HIT_STATE LOW for V_MAX homing." - #else #error "SENSORLESS_HOMING requires V_MAV_ENDSTOP_HIT_STATE HIGH for V_MAX homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires V_MAV_ENDSTOP_HIT_STATE LOW for V_MAX homing." #endif #endif #undef _HIT_STATE @@ -3789,15 +3789,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(W,TMC2209) #if W_HOME_TO_MIN && W_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_HIT_STATE LOW for W_MIN homing." - #else #error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_HIT_STATE HIGH for W_MIN homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_HIT_STATE LOW for W_MIN homing." #endif #elif W_HOME_TO_MAX && W_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires W_MAW_ENDSTOP_HIT_STATE LOW for W_MAX homing." - #else #error "SENSORLESS_HOMING requires W_MAW_ENDSTOP_HIT_STATE HIGH for W_MAX homing with TMC2209." + #else + #error "SENSORLESS_HOMING requires W_MAW_ENDSTOP_HIT_STATE LOW for W_MAX homing." #endif #endif #undef _HIT_STATE From 06e5273d24776219253a9229621c034ab263cba7 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 31 Mar 2023 18:18:25 -0500 Subject: [PATCH 213/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Car?= =?UTF-8?q?dReader=20adjustments=20(#25611)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/easythreed_ui.cpp | 17 ++--- Marlin/src/inc/Conditionals_post.h | 23 +++--- Marlin/src/inc/SanityCheck.h | 15 ++-- Marlin/src/inc/Warnings.cpp | 7 ++ Marlin/src/lcd/e3v2/creality/dwin.cpp | 10 +-- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 10 +-- Marlin/src/lcd/e3v2/proui/dwin.cpp | 8 +-- Marlin/src/lcd/extui/malyan/malyan.cpp | 4 +- .../src/lcd/extui/mks_ui/draw_print_file.cpp | 6 +- Marlin/src/lcd/extui/mks_ui/wifi_module.cpp | 6 +- Marlin/src/lcd/extui/ui_api.cpp | 18 ++--- Marlin/src/lcd/extui/ui_api.h | 3 - Marlin/src/lcd/menu/menu_media.cpp | 10 +-- Marlin/src/sd/cardreader.cpp | 72 ++++++++----------- Marlin/src/sd/cardreader.h | 27 +++---- 15 files changed, 106 insertions(+), 130 deletions(-) diff --git a/Marlin/src/feature/easythreed_ui.cpp b/Marlin/src/feature/easythreed_ui.cpp index b15daffc09..39248bfc7d 100644 --- a/Marlin/src/feature/easythreed_ui.cpp +++ b/Marlin/src/feature/easythreed_ui.cpp @@ -190,31 +190,28 @@ void EasythreedUI::printButton() { print_key_flag = PF_PAUSE; // The "Print" button now pauses the print card.mount(); // Force SD card to mount - now! if (!card.isMounted) { // Failed to mount? - blink_interval_ms = LED_OFF; // Turn off LED - print_key_flag = PF_START; - return; // Bail out + blink_interval_ms = LED_OFF; // Turn off LED + print_key_flag = PF_START; + return; // Bail out } card.ls(); // List all files to serial output - const uint16_t filecnt = card.countFilesInWorkDir(); // Count printable files in cwd + const int16_t filecnt = card.get_num_items(); // Count printable files in cwd if (filecnt == 0) return; // None are printable? card.selectFileByIndex(filecnt); // Select the last file according to current sort options card.openAndPrintFile(card.filename); // Start printing it - break; - } + } break; case PF_PAUSE: { // Pause printing (not currently firing) if (!printingIsActive()) break; blink_interval_ms = LED_ON; // Set indicator to steady ON queue.inject(F("M25")); // Queue Pause print_key_flag = PF_RESUME; // The "Print" button now resumes the print - break; - } + } break; case PF_RESUME: { // Resume printing if (printingIsActive()) break; blink_interval_ms = LED_BLINK_2; // Blink the indicator LED at 1 second intervals queue.inject(F("M24")); // Queue resume print_key_flag = PF_PAUSE; // The "Print" button now pauses the print - break; - } + } break; } } else { // Register a longer press diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index ad8d9d36fd..d45abc558a 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -3262,9 +3262,9 @@ // Number of VFAT entries used. Each entry has 13 UTF-16 characters #if ANY(SCROLL_LONG_FILENAMES, HAS_DWIN_E3V2, TFT_COLOR_UI) - #define MAX_VFAT_ENTRIES (5) + #define MAX_VFAT_ENTRIES 5 #else - #define MAX_VFAT_ENTRIES (2) + #define MAX_VFAT_ENTRIES 2 #endif // Nozzle park for Delta @@ -3279,14 +3279,17 @@ #if defined(TARGET_LPC1768) && IS_RRD_FG_SC && (SD_SCK_PIN == LCD_PINS_D4) #define SDCARD_SORT_ALPHA // Keep one directory level in RAM. Changing directory levels // may still glitch the screen, but LCD updates clean it up. - #undef SDSORT_LIMIT - #undef SDSORT_USES_RAM - #undef SDSORT_USES_STACK - #undef SDSORT_CACHE_NAMES - #define SDSORT_LIMIT 64 - #define SDSORT_USES_RAM true - #define SDSORT_USES_STACK false - #define SDSORT_CACHE_NAMES true + #if SDSORT_LIMIT > 64 || !SDSORT_USES_RAM || SDSORT_USES_STACK || !SDSORT_CACHE_NAMES + #undef SDSORT_LIMIT + #undef SDSORT_USES_RAM + #undef SDSORT_USES_STACK + #undef SDSORT_CACHE_NAMES + #define SDSORT_LIMIT 64 + #define SDSORT_USES_RAM true + #define SDSORT_USES_STACK false + #define SDSORT_CACHE_NAMES true + #define SDSORT_CACHE_LPC1768_WARNING 1 + #endif #ifndef FOLDER_SORTING #define FOLDER_SORTING -1 #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 6adf3c9d88..c25be192e2 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1031,7 +1031,9 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS * SD File Sorting */ #if ENABLED(SDCARD_SORT_ALPHA) - #if SDSORT_LIMIT > 256 + #if NONE(EXTENSIBLE_UI, HAS_MARLINUI_MENU, DWIN_CREALITY_LCD, DWIN_CREALITY_LCD_JYERSUI, DWIN_LCD_PROUI) + #error "SDCARD_SORT_ALPHA requires an LCD that supports it. (It doesn't apply to M20, etc.)" + #elif SDSORT_LIMIT > 256 #error "SDSORT_LIMIT must be 256 or smaller." #elif SDSORT_LIMIT < 10 #error "SDSORT_LIMIT should be greater than 9 to be useful." @@ -1049,7 +1051,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #elif SDSORT_CACHE_VFATS > MAX_VFAT_ENTRIES #undef SDSORT_CACHE_VFATS #define SDSORT_CACHE_VFATS MAX_VFAT_ENTRIES - #warning "SDSORT_CACHE_VFATS was reduced to MAX_VFAT_ENTRIES!" + #define SDSORT_CACHE_VFATS_WARNING 1 #endif #endif #endif @@ -3117,14 +3119,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS /** * Make sure features that need to write to the SD card can */ -#if ENABLED(SDCARD_READONLY) && ANY(POWER_LOSS_RECOVERY, BINARY_FILE_TRANSFER, SDCARD_EEPROM_EMULATION) - #undef SDCARD_READONLY +#if ENABLED(SDCARD_READONLY) #if ENABLED(POWER_LOSS_RECOVERY) - #warning "Either disable SDCARD_READONLY or disable POWER_LOSS_RECOVERY." + #error "Either disable SDCARD_READONLY or disable POWER_LOSS_RECOVERY." #elif ENABLED(BINARY_FILE_TRANSFER) - #warning "Either disable SDCARD_READONLY or disable BINARY_FILE_TRANSFER." + #error "Either disable SDCARD_READONLY or disable BINARY_FILE_TRANSFER." #elif ENABLED(SDCARD_EEPROM_EMULATION) - #warning "Either disable SDCARD_READONLY or disable SDCARD_EEPROM_EMULATION." + #error "Either disable SDCARD_READONLY or disable SDCARD_EEPROM_EMULATION." #endif #endif diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 3b9bc17b6f..e9d3f42388 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -808,3 +808,10 @@ #if MULTISTEPPING_LIMIT_WARNING #warning "MULTISTEPPING_LIMIT has been automatically set to 128. Use a lower value if the machine is slow to respond." #endif + +#if SDSORT_CACHE_VFATS_WARNING + #warning "SDSORT_CACHE_VFATS has been reduced to MAX_VFAT_ENTRIES." +#endif +#if SDSORT_CACHE_LPC1768_WARNING + #warning "SDCARD_SORT_ALPHA sub-options overridden for LPC1768 with DOGM LCD SCK overlap." +#endif diff --git a/Marlin/src/lcd/e3v2/creality/dwin.cpp b/Marlin/src/lcd/e3v2/creality/dwin.cpp index 08d928684a..459b00ae1b 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.cpp +++ b/Marlin/src/lcd/e3v2/creality/dwin.cpp @@ -411,7 +411,7 @@ void Scroll_Menu(const uint8_t dir) { } inline uint16_t nr_sd_menu_items() { - return card.get_num_Files() + !card.flag.workDirIsRoot; + return card.get_num_items() + !card.flag.workDirIsRoot; } void Erase_Menu_Text(const uint8_t line) { @@ -1830,9 +1830,9 @@ void MarlinUI::refresh() { /* Nothing to see here */ } void Init_Shift_Name() { const bool is_subdir = !card.flag.workDirIsRoot; const int8_t filenum = select_file.now - 1 - is_subdir; // Skip "Back" and ".." - const uint16_t fileCnt = card.get_num_Files(); + const int16_t fileCnt = card.get_num_items(); if (WITHIN(filenum, 0, fileCnt - 1)) { - card.getfilename_sorted(SD_ORDER(filenum, fileCnt)); + card.selectFileByIndexSorted(filenum); char * const name = card.longest_filename(); make_name_without_ext(shift_name, name, 100); } @@ -1857,7 +1857,7 @@ void Draw_SDItem(const uint16_t item, int16_t row=-1) { return; } - card.getfilename_sorted(SD_ORDER(item - is_subdir, card.get_num_Files())); + card.selectFileByIndexSorted(item - is_subdir); char * const name = card.longest_filename(); #if ENABLED(SCROLL_LONG_FILENAMES) @@ -2223,7 +2223,7 @@ void HMI_SelectFile() { } else { const uint16_t filenum = select_file.now - 1 - hasUpDir; - card.getfilename_sorted(SD_ORDER(filenum, card.get_num_Files())); + card.selectFileByIndexSorted(filenum); // Enter that folder! if (card.flag.filenameIsDir) { diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index d4b4280671..285723e278 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -807,7 +807,7 @@ void CrealityDWINClass::Draw_SD_Item(uint8_t item, uint8_t row) { if (item == 0) Draw_Menu_Item(0, ICON_Back, card.flag.workDirIsRoot ? F("Back") : F("..")); else { - card.getfilename_sorted(SD_ORDER(item - 1, card.get_num_Files())); + card.selectFileByIndexSorted(item - 1); char * const filename = card.longest_filename(); size_t max = MENU_CHAR_LIMIT; size_t pos = strlen(filename), len = pos; @@ -831,7 +831,7 @@ void CrealityDWINClass::Draw_SD_List(bool removed/*=false*/) { scrollpos = 0; process = File; if (card.isMounted() && !removed) { - LOOP_L_N(i, _MIN(card.get_num_Files() + 1, TROWS)) + LOOP_L_N(i, _MIN(card.get_num_items() + 1, TROWS)) Draw_SD_Item(i, i); } else { @@ -4281,7 +4281,7 @@ void CrealityDWINClass::File_Control() { EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) { if (selection > 0) { - card.getfilename_sorted(SD_ORDER(selection - 1, card.get_num_Files())); + card.selectFileByIndexSorted(selection - 1); char * const filename = card.longest_filename(); size_t len = strlen(filename); size_t pos = len; @@ -4300,7 +4300,7 @@ void CrealityDWINClass::File_Control() { } return; } - if (encoder_diffState == ENCODER_DIFF_CW && selection < card.get_num_Files()) { + if (encoder_diffState == ENCODER_DIFF_CW && selection < card.get_num_items()) { DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); if (selection > 0) { DWIN_Draw_Rectangle(1, Color_Bg_Black, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28); @@ -4340,7 +4340,7 @@ void CrealityDWINClass::File_Control() { } } else { - card.getfilename_sorted(SD_ORDER(selection - 1, card.get_num_Files())); + card.selectFileByIndexSorted(selection - 1); if (card.flag.filenameIsDir) { card.cd(card.filename); Draw_SD_List(); diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index b0d1fb3ff6..adc6fca72a 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -844,7 +844,7 @@ void SetMediaAutoMount() { } inline uint16_t nr_sd_menu_items() { - return _MIN(card.get_num_Files() + !card.flag.workDirIsRoot, MENU_MAX_ITEMS); + return _MIN(card.get_num_items() + !card.flag.workDirIsRoot, MENU_MAX_ITEMS); } void make_name_without_ext(char *dst, char *src, size_t maxlen=MENU_CHAR_LIMIT) { @@ -891,7 +891,7 @@ void onClickSDItem() { if (hasUpDir && CurrentMenu->selected == 1) return SDCard_Up(); else { const uint16_t filenum = CurrentMenu->selected - 1 - hasUpDir; - card.getfilename_sorted(SD_ORDER(filenum, card.get_num_Files())); + card.selectFileByIndexSorted(filenum); // Enter that folder! if (card.flag.filenameIsDir) return SDCard_Folder(card.filename); @@ -934,7 +934,7 @@ void onClickSDItem() { last_itemselected = selected; if (selected >= 1 + hasUpDir) { const int8_t filenum = selected - 1 - hasUpDir; // Skip "Back" and ".." - card.getfilename_sorted(SD_ORDER(filenum, card.get_num_Files())); + card.selectFileByIndexSorted(filenum); make_name_without_ext(shift_name, card.longest_filename(), LONG_FILENAME_LENGTH); shift_len = strlen(shift_name); shift_amt = 0; @@ -959,7 +959,7 @@ void onDrawFileName(MenuItemClass* menuitem, int8_t line) { } else { uint8_t icon; - card.getfilename_sorted(SD_ORDER(menuitem->pos - is_subdir - 1, card.get_num_Files())); + card.selectFileByIndexSorted(menuitem->pos - is_subdir - 1); make_name_without_ext(shift_name, card.longest_filename()); icon = card.flag.filenameIsDir ? ICON_Folder : card.fileIsBinary() ? ICON_Binary : ICON_File; Draw_Menu_Line(line, icon, shift_name); diff --git a/Marlin/src/lcd/extui/malyan/malyan.cpp b/Marlin/src/lcd/extui/malyan/malyan.cpp index 06c9886f01..66c52878cc 100644 --- a/Marlin/src/lcd/extui/malyan/malyan.cpp +++ b/Marlin/src/lcd/extui/malyan/malyan.cpp @@ -326,8 +326,8 @@ void process_lcd_s_command(const char *command) { // select a file for printing during a print, there's // little reason not to do it this way. char message_buffer[MAX_CURLY_COMMAND]; - uint16_t file_count = card.get_num_Files(); - for (uint16_t i = 0; i < file_count; i++) { + int16_t file_count = card.get_num_items(); + for (int16_t i = 0; i < file_count; i++) { card.selectFileByIndex(i); sprintf_P(message_buffer, card.flag.filenameIsDir ? PSTR("{DIR:%s}") : PSTR("{FILE:%s}"), card.longest_filename()); write_to_lcd(message_buffer); diff --git a/Marlin/src/lcd/extui/mks_ui/draw_print_file.cpp b/Marlin/src/lcd/extui/mks_ui/draw_print_file.cpp index 0199bc1f55..6b41981fb8 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_print_file.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_print_file.cpp @@ -72,11 +72,11 @@ uint8_t sel_id = 0; else card.cdroot(); - const uint16_t fileCnt = card.get_num_Files(); + const int16_t fileCnt = card.get_num_items(); - for (uint16_t i = 0; i < fileCnt; i++) { + for (int16_t i = 0; i < fileCnt; i++) { if (list_file.Sd_file_cnt == list_file.Sd_file_offset) { - card.getfilename_sorted(SD_ORDER(i, fileCnt)); + card.selectFileByIndexSorted(i); list_file.IsFolder[valid_name_cnt] = card.flag.filenameIsDir; strcpy(list_file.file_name[valid_name_cnt], list_file.curDirPath); diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp index b389109975..d6d2ce3945 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp @@ -823,12 +823,12 @@ uint8_t Explore_Disk(const char * const path, const uint8_t recu_level, const bo if (!path) return 0; - const uint8_t fileCnt = card.get_num_Files(); + const int16_t fileCnt = card.get_num_items(); MediaFile file; MediaFile *diveDir; - for (uint8_t i = 0; i < fileCnt; i++) { - card.getfilename_sorted(SD_ORDER(i, fileCnt)); + for (int16_t i = 0; i < fileCnt; i++) { + card.selectFileByIndexSorted(i); ZERO(Fstream); strcpy(Fstream, card.filename); diff --git a/Marlin/src/lcd/extui/ui_api.cpp b/Marlin/src/lcd/extui/ui_api.cpp index 5c27b345c4..7e47bef9c1 100644 --- a/Marlin/src/lcd/extui/ui_api.cpp +++ b/Marlin/src/lcd/extui/ui_api.cpp @@ -1136,12 +1136,12 @@ namespace ExtUI { FileList::FileList() { refresh(); } - void FileList::refresh() { num_files = 0xFFFF; } + void FileList::refresh() { } bool FileList::seek(const uint16_t pos, const bool skip_range_check) { #if ENABLED(SDSUPPORT) if (!skip_range_check && (pos + 1) > count()) return false; - card.getfilename_sorted(SD_ORDER(pos, count())); + card.selectFileByIndexSorted(pos); return card.filename[0] != '\0'; #else UNUSED(pos); @@ -1167,7 +1167,7 @@ namespace ExtUI { } uint16_t FileList::count() { - return TERN0(SDSUPPORT, (num_files = (num_files == 0xFFFF ? card.get_num_Files() : num_files))); + return TERN0(SDSUPPORT, card.get_num_items()); } bool FileList::isAtRootDir() { @@ -1175,19 +1175,11 @@ namespace ExtUI { } void FileList::upDir() { - #if ENABLED(SDSUPPORT) - card.cdup(); - num_files = 0xFFFF; - #endif + TERN_(SDSUPPORT, card.cdup()); } void FileList::changeDir(const char * const dirname) { - #if ENABLED(SDSUPPORT) - card.cd(dirname); - num_files = 0xFFFF; - #else - UNUSED(dirname); - #endif + TERN(SDSUPPORT, card.cd(dirname), UNUSED(dirname)); } } // namespace ExtUI diff --git a/Marlin/src/lcd/extui/ui_api.h b/Marlin/src/lcd/extui/ui_api.h index d9594bace6..209635ea09 100644 --- a/Marlin/src/lcd/extui/ui_api.h +++ b/Marlin/src/lcd/extui/ui_api.h @@ -376,9 +376,6 @@ namespace ExtUI { void resumePrint(); class FileList { - private: - uint16_t num_files; - public: FileList(); void refresh(); diff --git a/Marlin/src/lcd/menu/menu_media.cpp b/Marlin/src/lcd/menu/menu_media.cpp index 20ef6e3d19..d43053da62 100644 --- a/Marlin/src/lcd/menu/menu_media.cpp +++ b/Marlin/src/lcd/menu/menu_media.cpp @@ -109,10 +109,10 @@ void menu_media_filelist() { ui.encoder_direction_menus(); #if HAS_MARLINUI_U8GLIB - static uint16_t fileCnt; - if (ui.first_page) fileCnt = card.get_num_Files(); + static int16_t fileCnt; + if (ui.first_page) fileCnt = card.get_num_items(); #else - const uint16_t fileCnt = card.get_num_Files(); + const int16_t fileCnt = card.get_num_items(); #endif START_MENU(); @@ -129,9 +129,9 @@ void menu_media_filelist() { else if (card.isMounted()) ACTION_ITEM_F(F(LCD_STR_FOLDER " .."), lcd_sd_updir); - if (ui.should_draw()) for (uint16_t i = 0; i < fileCnt; i++) { + if (ui.should_draw()) for (int16_t i = 0; i < fileCnt; i++) { if (_menuLineNr == _thisItemNr) { - card.getfilename_sorted(SD_ORDER(i, fileCnt)); + card.selectFileByIndexSorted(i); if (card.flag.filenameIsDir) MENU_ITEM(sdfolder, MSG_MEDIA_MENU, card); else diff --git a/Marlin/src/sd/cardreader.cpp b/Marlin/src/sd/cardreader.cpp index 8a4fa743d4..3a377d694d 100644 --- a/Marlin/src/sd/cardreader.cpp +++ b/Marlin/src/sd/cardreader.cpp @@ -81,10 +81,11 @@ IF_DISABLED(NO_SD_AUTOSTART, uint8_t CardReader::autofile_index); // = 0 MediaFile CardReader::root, CardReader::workDir, CardReader::workDirParents[MAX_DIR_DEPTH]; uint8_t CardReader::workDirDepth; +int16_t CardReader::nrItems = -1; #if ENABLED(SDCARD_SORT_ALPHA) - uint16_t CardReader::sort_count; + int16_t CardReader::sort_count; #if ENABLED(SDSORT_GCODE) bool CardReader::sort_alpha; int CardReader::sort_folders; @@ -100,7 +101,6 @@ uint8_t CardReader::workDirDepth; #if ENABLED(SDSORT_USES_RAM) #if ENABLED(SDSORT_CACHE_NAMES) - uint16_t CardReader::nrFiles; // Cached total file count #if ENABLED(SDSORT_DYNAMIC_RAM) char **CardReader::sortshort, **CardReader::sortnames; #else @@ -228,25 +228,20 @@ bool CardReader::is_visible_entity(const dir_t &p OPTARG(CUSTOM_FIRMWARE_UPLOAD, // // Get the number of (compliant) items in the folder // -int CardReader::countItems(MediaFile dir) { +int16_t CardReader::countVisibleItems(MediaFile dir) { dir_t p; - int c = 0; - while (dir.readDir(&p, longFilename) > 0) - c += is_visible_entity(p); - - #if ALL(SDCARD_SORT_ALPHA, SDSORT_USES_RAM, SDSORT_CACHE_NAMES) - nrFiles = c; - #endif - + int16_t c = 0; + dir.rewind(); + while (dir.readDir(&p, longFilename) > 0) c += is_visible_entity(p); return c; } // // Get file/folder info for an item by index // -void CardReader::selectByIndex(MediaFile dir, const uint8_t index) { +void CardReader::selectByIndex(MediaFile dir, const int16_t index) { dir_t p; - for (uint8_t cnt = 0; dir.readDir(&p, longFilename) > 0;) { + for (int16_t cnt = 0; dir.readDir(&p, longFilename) > 0;) { if (is_visible_entity(p)) { if (cnt == index) { createFilename(filename, p); @@ -480,6 +475,7 @@ void CardReader::printSelectedFilename() { void CardReader::mount() { flag.mounted = false; + nrItems = -1; if (root.isOpen()) root.close(); if (!driver->init(SD_SPI_SPEED, SDSS) @@ -578,9 +574,7 @@ void CardReader::release() { flag.mounted = false; flag.workDirIsRoot = true; - #if ALL(SDCARD_SORT_ALPHA, SDSORT_USES_RAM, SDSORT_CACHE_NAMES) - nrFiles = 0; - #endif + nrItems = -1; SERIAL_ECHO_MSG(STR_SD_CARD_RELEASED); } @@ -909,7 +903,7 @@ void CardReader::closefile(const bool store_location/*=false*/) { // // Get info for a file in the working directory by index // -void CardReader::selectFileByIndex(const uint16_t nr) { +void CardReader::selectFileByIndex(const int16_t nr) { #if ENABLED(SDSORT_CACHE_NAMES) if (nr < sort_count) { strcpy(filename, sortshort[nr]); @@ -928,7 +922,7 @@ void CardReader::selectFileByIndex(const uint16_t nr) { // void CardReader::selectFileByName(const char * const match) { #if ENABLED(SDSORT_CACHE_NAMES) - for (uint16_t nr = 0; nr < sort_count; nr++) + for (int16_t nr = 0; nr < sort_count; nr++) if (strcasecmp(match, sortshort[nr]) == 0) { strcpy(filename, sortshort[nr]); strcpy(longFilename, sortnames[nr]); @@ -941,11 +935,6 @@ void CardReader::selectFileByName(const char * const match) { selectByName(workDir, match); } -uint16_t CardReader::countFilesInWorkDir() { - workDir.rewind(); - return countItems(workDir); -} - /** * Dive to the given DOS 8.3 file path, with optional echo of the dive paths. * @@ -1058,6 +1047,7 @@ void CardReader::cd(const char * relpath) { flag.workDirIsRoot = false; if (workDirDepth < MAX_DIR_DEPTH) workDirParents[workDirDepth++] = workDir; + nrItems = -1; TERN_(SDCARD_SORT_ALPHA, presort()); } else @@ -1066,6 +1056,7 @@ void CardReader::cd(const char * relpath) { int8_t CardReader::cdup() { if (workDirDepth > 0) { // At least 1 dir has been saved + nrItems = -1; workDir = --workDirDepth ? workDirParents[workDirDepth - 1] : root; // Use parent, or root if none TERN_(SDCARD_SORT_ALPHA, presort()); } @@ -1077,6 +1068,7 @@ void CardReader::cdroot() { workDir = root; flag.workDirIsRoot = true; workDirDepth = 0; + nrItems = -1; TERN_(SDCARD_SORT_ALPHA, presort()); } @@ -1085,9 +1077,8 @@ void CardReader::cdroot() { /** * Get the name of a file in the working directory by sort-index */ - void CardReader::getfilename_sorted(const uint16_t nr) { - selectFileByIndex(TERN1(SDSORT_GCODE, sort_alpha) && (nr < sort_count) - ? sort_order[nr] : nr); + void CardReader::selectFileByIndexSorted(const int16_t nr) { + selectFileByIndex(TERN1(SDSORT_GCODE, sort_alpha) && (nr < sort_count) ? sort_order[nr] : nr); } #if ENABLED(SDSORT_USES_RAM) @@ -1128,20 +1119,20 @@ void CardReader::cdroot() { * - Most RAM: Buffer the directory and return filenames from RAM */ void CardReader::presort() { - // Throw away old sort index flush_presort(); + int16_t fileCnt = get_num_items(); + // Sorting may be turned off if (TERN0(SDSORT_GCODE, !sort_alpha)) return; // If there are files, sort up to the limit - uint16_t fileCnt = countFilesInWorkDir(); if (fileCnt > 0) { // Never sort more than the max allowed // If you use folders to organize, 20 may be enough - NOMORE(fileCnt, uint16_t(SDSORT_LIMIT)); + NOMORE(fileCnt, int16_t(SDSORT_LIMIT)); // Sort order is always needed. May be static or dynamic. TERN_(SDSORT_DYNAMIC_RAM, sort_order = new uint8_t[fileCnt]); @@ -1181,7 +1172,7 @@ void CardReader::cdroot() { if (fileCnt > 1) { // Init sort order. - for (uint16_t i = 0; i < fileCnt; i++) { + for (int16_t i = 0; i < fileCnt; i++) { sort_order[i] = i; // If using RAM then read all filenames now. #if ENABLED(SDSORT_USES_RAM) @@ -1200,9 +1191,9 @@ void CardReader::cdroot() { } // Bubble Sort - for (uint16_t i = fileCnt; --i;) { + for (int16_t i = fileCnt; --i;) { bool didSwap = false; - uint8_t o1 = sort_order[0]; + int16_t o1 = sort_order[0]; #if DISABLED(SDSORT_USES_RAM) selectFileByIndex(o1); // Pre-fetch the first entry and save it strcpy(name1, longest_filename()); // so the loop only needs one fetch @@ -1211,8 +1202,8 @@ void CardReader::cdroot() { #endif #endif - for (uint16_t j = 0; j < i; ++j) { - const uint16_t o2 = sort_order[j + 1]; + for (int16_t j = 0; j < i; ++j) { + const int16_t o2 = sort_order[j + 1]; // Compare names from the array or just the two buffered names #if ENABLED(SDSORT_USES_RAM) @@ -1270,7 +1261,7 @@ void CardReader::cdroot() { // Using RAM but not keeping names around #if ENABLED(SDSORT_USES_RAM) && DISABLED(SDSORT_CACHE_NAMES) #if ENABLED(SDSORT_DYNAMIC_RAM) - for (uint16_t i = 0; i < fileCnt; ++i) free(sortnames[i]); + for (int16_t i = 0; i < fileCnt; ++i) free(sortnames[i]); TERN_(HAS_FOLDER_SORTING, delete [] isDir); #endif #endif @@ -1313,15 +1304,10 @@ void CardReader::cdroot() { #endif // SDCARD_SORT_ALPHA -uint16_t CardReader::get_num_Files() { +int16_t CardReader::get_num_items() { if (!isMounted()) return 0; - return ( - #if ALL(SDCARD_SORT_ALPHA, SDSORT_USES_RAM, SDSORT_CACHE_NAMES) - nrFiles // no need to access the SD card for filenames - #else - countFilesInWorkDir() - #endif - ); + if (nrItems < 0) nrItems = countVisibleItems(workDir); + return nrItems; } // diff --git a/Marlin/src/sd/cardreader.h b/Marlin/src/sd/cardreader.h index 47e3c66e47..d5eca9c915 100644 --- a/Marlin/src/sd/cardreader.h +++ b/Marlin/src/sd/cardreader.h @@ -36,12 +36,6 @@ extern const char M23_STR[], M24_STR[]; #endif #endif -#if ENABLED(SDCARD_RATHERRECENTFIRST) && DISABLED(SDCARD_SORT_ALPHA) - #define SD_ORDER(N,C) ((C) - 1 - (N)) -#else - #define SD_ORDER(N,C) N -#endif - #define MAX_DIR_DEPTH 10 // Maximum folder depth #define MAXDIRNAMELENGTH 8 // DOS folder name size #define MAXPATHNAMELENGTH (1 + (MAXDIRNAMELENGTH + 1) * (MAX_DIR_DEPTH) + 1 + FILENAME_LENGTH) // "/" + N * ("ADIRNAME/") + "filename.ext" @@ -110,8 +104,6 @@ public: #endif #endif - // // // Methods // // // - CardReader(); static void changeMedia(DiskIODriver *_driver) { driver = _driver; } @@ -153,11 +145,10 @@ public: static void cdroot(); static void cd(const char *relpath); static int8_t cdup(); - static uint16_t countFilesInWorkDir(); - static uint16_t get_num_Files(); + static int16_t get_num_items(); // Select a file - static void selectFileByIndex(const uint16_t nr); + static void selectFileByIndex(const int16_t nr); static void selectFileByName(const char * const match); // (working directory only) // Print job @@ -200,14 +191,16 @@ public: #if ENABLED(SDCARD_SORT_ALPHA) static void presort(); - static void getfilename_sorted(const uint16_t nr); + static void selectFileByIndexSorted(const int16_t nr); #if ENABLED(SDSORT_GCODE) FORCE_INLINE static void setSortOn(bool b) { sort_alpha = b; presort(); } FORCE_INLINE static void setSortFolders(int i) { sort_folders = i; presort(); } //FORCE_INLINE static void setSortReverse(bool b) { sort_reverse = b; } #endif #else - FORCE_INLINE static void getfilename_sorted(const uint16_t nr) { selectFileByIndex(nr); } + FORCE_INLINE static void selectFileByIndexSorted(const int16_t nr) { + selectFileByIndex(TERN(SDCARD_RATHERRECENTFIRST, get_num_items() - 1 - nr, (nr))); + } #endif static void ls(const uint8_t lsflags); @@ -265,12 +258,13 @@ private: // static MediaFile root, workDir, workDirParents[MAX_DIR_DEPTH]; static uint8_t workDirDepth; + static int16_t nrItems; // Cache the total count // // Alphabetical file and folder sorting // #if ENABLED(SDCARD_SORT_ALPHA) - static uint16_t sort_count; // Count of sorted items in the current directory + static int16_t sort_count; // Count of sorted items in the current directory #if ENABLED(SDSORT_GCODE) static bool sort_alpha; // Flag to enable / disable the feature static int sort_folders; // Folder sorting before/none/after @@ -297,7 +291,6 @@ private: // If using dynamic ram for names, allocate on the heap. #if ENABLED(SDSORT_CACHE_NAMES) - static uint16_t nrFiles; // Cache the total count #if ENABLED(SDSORT_DYNAMIC_RAM) static char **sortshort, **sortnames; #else @@ -342,8 +335,8 @@ private: // Directory items // static bool is_visible_entity(const dir_t &p OPTARG(CUSTOM_FIRMWARE_UPLOAD, const bool onlyBin=false)); - static int countItems(MediaFile dir); - static void selectByIndex(MediaFile dir, const uint8_t index); + static int16_t countVisibleItems(MediaFile dir); + static void selectByIndex(MediaFile dir, const int16_t index); static void selectByName(MediaFile dir, const char * const match); static void printListing( MediaFile parent, const char * const prepend, const uint8_t lsflags From afb9ed73ac5d2a25ff742e9515bd4e3b71a319e0 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 1 Apr 2023 00:27:45 +0000 Subject: [PATCH 214/659] [cron] Bump distribution date (2023-04-01) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index b046ce572e..d6abcc4aa6 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-03-31" +//#define STRING_DISTRIBUTION_DATE "2023-04-01" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index b81da76b55..2140a73690 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-03-31" + #define STRING_DISTRIBUTION_DATE "2023-04-01" #endif /** From 8cdf43f8fdf8900ad903d094d1aeb5dc651b324b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 31 Mar 2023 20:26:49 -0500 Subject: [PATCH 215/659] =?UTF-8?q?=F0=9F=8E=A8=20=20HAS=5FSHAPING=20=3D>?= =?UTF-8?q?=20HAS=5FZV=5FSHAPING?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/gcode/feature/input_shaping/M593.cpp | 2 +- Marlin/src/gcode/gcode.cpp | 2 +- Marlin/src/gcode/gcode.h | 2 +- Marlin/src/inc/Conditionals_adv.h | 2 +- Marlin/src/inc/SanityCheck.h | 2 +- Marlin/src/inc/Warnings.cpp | 2 +- Marlin/src/module/planner.cpp | 2 +- Marlin/src/module/settings.cpp | 6 +++--- Marlin/src/module/stepper.cpp | 18 +++++++++--------- Marlin/src/module/stepper.h | 18 +++++++++--------- ini/features.ini | 2 +- 11 files changed, 29 insertions(+), 29 deletions(-) diff --git a/Marlin/src/gcode/feature/input_shaping/M593.cpp b/Marlin/src/gcode/feature/input_shaping/M593.cpp index a4b3cd3fee..1b6a43f9dd 100644 --- a/Marlin/src/gcode/feature/input_shaping/M593.cpp +++ b/Marlin/src/gcode/feature/input_shaping/M593.cpp @@ -22,7 +22,7 @@ #include "../../../inc/MarlinConfig.h" -#if HAS_SHAPING +#if HAS_ZV_SHAPING #include "../../gcode.h" #include "../../../module/stepper.h" diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 1eaf4dcd39..1752ae8a18 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -933,7 +933,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 575: M575(); break; // M575: Set serial baudrate #endif - #if HAS_SHAPING + #if HAS_ZV_SHAPING case 593: M593(); break; // M593: Set Input Shaping parameters #endif diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 48e6fd2da8..cc3f221a82 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -1084,7 +1084,7 @@ private: static void M575(); #endif - #if HAS_SHAPING + #if HAS_ZV_SHAPING static void M593(); static void M593_report(const bool forReplay=true); #endif diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index c3f244b6bb..3295626722 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -1248,7 +1248,7 @@ // Input shaping #if EITHER(INPUT_SHAPING_X, INPUT_SHAPING_Y) - #define HAS_SHAPING 1 + #define HAS_ZV_SHAPING 1 #endif // Toolchange Event G-code diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index c25be192e2..f718846bff 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -4513,7 +4513,7 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); /** * Input Shaping requirements */ -#if HAS_SHAPING +#if HAS_ZV_SHAPING #if ENABLED(DELTA) #error "Input Shaping is not compatible with DELTA kinematics." #elif ENABLED(SCARA) diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index e9d3f42388..0204c3fab0 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -801,7 +801,7 @@ /** * Input Shaping */ -#if HAS_SHAPING && ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) +#if HAS_ZV_SHAPING && ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) #warning "Input Shaping for CORE / MARKFORGED kinematic axes is still experimental." #endif diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 8e77a7c979..552d212e2e 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -1728,7 +1728,7 @@ float Planner::triggered_position_mm(const AxisEnum axis) { bool Planner::busy() { return (has_blocks_queued() || cleaning_buffer_counter || TERN0(EXTERNAL_CLOSED_LOOP_CONTROLLER, CLOSED_LOOP_WAITING()) - || TERN0(HAS_SHAPING, stepper.input_shaping_busy()) + || TERN0(HAS_ZV_SHAPING, stepper.input_shaping_busy()) ); } diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 8b615f2faf..0be7f965a4 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -1638,7 +1638,7 @@ void MarlinSettings::postprocess() { // // Input Shaping /// - #if HAS_SHAPING + #if HAS_ZV_SHAPING #if ENABLED(INPUT_SHAPING_X) EEPROM_WRITE(stepper.get_shaping_frequency(X_AXIS)); EEPROM_WRITE(stepper.get_shaping_damping_ratio(X_AXIS)); @@ -3429,7 +3429,7 @@ void MarlinSettings::reset() { // // Input Shaping // - #if HAS_SHAPING + #if HAS_ZV_SHAPING #if ENABLED(INPUT_SHAPING_X) stepper.set_shaping_frequency(X_AXIS, SHAPING_FREQ_X); stepper.set_shaping_damping_ratio(X_AXIS, SHAPING_ZETA_X); @@ -3690,7 +3690,7 @@ void MarlinSettings::reset() { // // Input Shaping // - TERN_(HAS_SHAPING, gcode.M593_report(forReplay)); + TERN_(HAS_ZV_SHAPING, gcode.M593_report(forReplay)); // // Linear Advance diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index f7436e51d5..34a5ca28a3 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -240,7 +240,7 @@ uint32_t Stepper::advance_divisor = 0, bool Stepper::la_active = false; #endif -#if HAS_SHAPING +#if HAS_ZV_SHAPING shaping_time_t ShapingQueue::now = 0; shaping_time_t ShapingQueue::times[shaping_echoes]; shaping_echo_axis_t ShapingQueue::echo_axes[shaping_echoes]; @@ -1494,7 +1494,7 @@ void Stepper::isr() { // Enable ISRs to reduce USART processing latency hal.isr_on(); - TERN_(HAS_SHAPING, shaping_isr()); // Do Shaper stepping, if needed + TERN_(HAS_ZV_SHAPING, shaping_isr()); // Do Shaper stepping, if needed if (!nextMainISR) pulse_phase_isr(); // 0 = Do coordinated axes Stepper pulses @@ -1542,7 +1542,7 @@ void Stepper::isr() { // nextMainISR -= interval; - TERN_(HAS_SHAPING, ShapingQueue::decrement_delays(interval)); + TERN_(HAS_ZV_SHAPING, ShapingQueue::decrement_delays(interval)); TERN_(LIN_ADVANCE, if (nextAdvanceISR != LA_ADV_NEVER) nextAdvanceISR -= interval); TERN_(INTEGRATED_BABYSTEPPING, if (nextBabystepISR != BABYSTEP_NEVER) nextBabystepISR -= interval); @@ -1663,7 +1663,7 @@ void Stepper::pulse_phase_isr() { abort_current_block = false; if (current_block) { discard_current_block(); - #if HAS_SHAPING + #if HAS_ZV_SHAPING ShapingQueue::purge(); #if ENABLED(INPUT_SHAPING_X) shaping_x.delta_error = 0; @@ -1921,7 +1921,7 @@ void Stepper::pulse_phase_isr() { #endif #endif - #if HAS_SHAPING + #if HAS_ZV_SHAPING // record an echo if a step is needed in the primary bresenham const bool x_step = TERN0(INPUT_SHAPING_X, step_needed.x && shaping_x.enabled), y_step = TERN0(INPUT_SHAPING_Y, step_needed.y && shaping_y.enabled); @@ -2035,7 +2035,7 @@ void Stepper::pulse_phase_isr() { } while (--events_to_do); } -#if HAS_SHAPING +#if HAS_ZV_SHAPING void Stepper::shaping_isr() { AxisFlags step_needed{0}; @@ -2087,7 +2087,7 @@ void Stepper::pulse_phase_isr() { } } -#endif // HAS_SHAPING +#endif // HAS_ZV_SHAPING // Calculate timer interval, with all limits applied. hal_timer_t Stepper::calc_timer_interval(uint32_t step_rate) { @@ -3108,7 +3108,7 @@ void Stepper::init() { #endif } -#if HAS_SHAPING +#if HAS_ZV_SHAPING /** * Calculate a fixed point factor to apply to the signal and its echo @@ -3179,7 +3179,7 @@ void Stepper::init() { return -1; } -#endif // HAS_SHAPING +#endif // HAS_ZV_SHAPING /** * Set the stepper positions directly in steps diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 704805464c..4adbb01991 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -94,7 +94,7 @@ #endif // Input shaping base time - #if HAS_SHAPING + #if HAS_ZV_SHAPING #define ISR_SHAPING_BASE_CYCLES 180UL #else #define ISR_SHAPING_BASE_CYCLES 0UL @@ -128,7 +128,7 @@ #endif // Input shaping base time - #if HAS_SHAPING + #if HAS_ZV_SHAPING #define ISR_SHAPING_BASE_CYCLES 290UL #else #define ISR_SHAPING_BASE_CYCLES 0UL @@ -217,7 +217,7 @@ #define ISR_LOOP_CYCLES(R) ((ISR_LOOP_BASE_CYCLES + MIN_ISR_LOOP_CYCLES + MIN_STEPPER_PULSE_CYCLES) * ((1UL << R) - 1) + _MAX(MIN_ISR_LOOP_CYCLES, MIN_STEPPER_PULSE_CYCLES)) // Model input shaping as an extra loop call -#define ISR_SHAPING_LOOP_CYCLES(R) (TERN0(HAS_SHAPING, (ISR_LOOP_BASE_CYCLES + TERN0(INPUT_SHAPING_X, ISR_X_STEPPER_CYCLES) + TERN0(INPUT_SHAPING_Y, ISR_Y_STEPPER_CYCLES)) << R)) +#define ISR_SHAPING_LOOP_CYCLES(R) (TERN0(HAS_ZV_SHAPING, (ISR_LOOP_BASE_CYCLES + TERN0(INPUT_SHAPING_X, ISR_X_STEPPER_CYCLES) + TERN0(INPUT_SHAPING_Y, ISR_Y_STEPPER_CYCLES)) << R)) // If linear advance is enabled, then it is handled separately #if ENABLED(LIN_ADVANCE) @@ -315,7 +315,7 @@ constexpr ena_mask_t enable_overlap[] = { //static_assert(!any_enable_overlap(), "There is some overlap."); -#if HAS_SHAPING +#if HAS_ZV_SHAPING #ifdef SHAPING_MAX_STEPRATE constexpr float max_step_rate = SHAPING_MAX_STEPRATE; @@ -463,7 +463,7 @@ constexpr ena_mask_t enable_overlap[] = { int32_t last_block_end_pos = 0; }; -#endif // HAS_SHAPING +#endif // HAS_ZV_SHAPING // // Stepper class definition @@ -577,7 +577,7 @@ class Stepper { static bool bezier_2nd_half; // If Bézier curve has been initialized or not #endif - #if HAS_SHAPING + #if HAS_ZV_SHAPING #if ENABLED(INPUT_SHAPING_X) static ShapeParams shaping_x; #endif @@ -646,7 +646,7 @@ class Stepper { // The stepper block processing ISR phase static hal_timer_t block_phase_isr(); - #if HAS_SHAPING + #if HAS_ZV_SHAPING static void shaping_isr(); #endif @@ -669,7 +669,7 @@ class Stepper { // Check if the given block is busy or not - Must not be called from ISR contexts static bool is_block_busy(const block_t * const block); - #if HAS_SHAPING + #if HAS_ZV_SHAPING // Check whether the stepper is processing any input shaping echoes static bool input_shaping_busy() { const bool was_on = hal.isr_state(); @@ -817,7 +817,7 @@ class Stepper { set_directions(); } - #if HAS_SHAPING + #if HAS_ZV_SHAPING static void set_shaping_damping_ratio(const AxisEnum axis, const_float_t zeta); static float get_shaping_damping_ratio(const AxisEnum axis); static void set_shaping_frequency(const AxisEnum axis, const_float_t freq); diff --git a/ini/features.ini b/ini/features.ini index 11ffca6ba6..4e378a8eaf 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -189,7 +189,7 @@ HAS_DUPLICATION_MODE = src_filter=+ PHOTO_GCODE = src_filter=+ CONTROLLER_FAN_EDITABLE = src_filter=+ -HAS_SHAPING = src_filter=+ +HAS_ZV_SHAPING = src_filter=+ GCODE_MACROS = src_filter=+ GRADIENT_MIX = src_filter=+ HAS_SAVED_POSITIONS = src_filter=+ + From c37fa3cc9097a9aa7fad5f168e335caabf23278e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 31 Mar 2023 21:18:37 -0500 Subject: [PATCH 216/659] =?UTF-8?q?=E2=9C=A8=20Fixed-Time=20Motion=20with?= =?UTF-8?q?=20Input=20Shaping=20by=20Ulendo=20(#25394)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Ulendo Alex --- Marlin/Configuration_adv.h | 48 +- Marlin/src/MarlinCore.cpp | 7 + Marlin/src/gcode/feature/ft_motion/M493.cpp | 282 ++++++ Marlin/src/gcode/gcode.cpp | 6 +- Marlin/src/gcode/gcode.h | 4 + Marlin/src/module/ft_motion.cpp | 924 ++++++++++++++++++++ Marlin/src/module/ft_motion.h | 170 ++++ Marlin/src/module/ft_types.h | 59 ++ Marlin/src/module/planner.cpp | 22 +- Marlin/src/module/planner.h | 4 + Marlin/src/module/stepper.cpp | 275 +++++- Marlin/src/module/stepper.h | 15 + buildroot/tests/STM32F103RC_btt | 4 +- ini/features.ini | 1 + platformio.ini | 1 + 15 files changed, 1772 insertions(+), 50 deletions(-) create mode 100644 Marlin/src/gcode/feature/ft_motion/M493.cpp create mode 100644 Marlin/src/module/ft_motion.cpp create mode 100644 Marlin/src/module/ft_motion.h create mode 100644 Marlin/src/module/ft_types.h diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 070309d5aa..18e5d9e647 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1086,7 +1086,51 @@ #endif -// @section motion +// @section motion control + +/** + * Fixed-time-based Motion Control -- EXPERIMENTAL + * Enable/disable and set parameters with G-code M493. + */ +//#define FT_MOTION +#if ENABLED(FT_MOTION) + #define FTM_DEFAULT_MODE ftMotionMode_ENABLED // Default mode of fixed time control. (Enums in ft_types.h) + #define FTM_DEFAULT_DYNFREQ_MODE dynFreqMode_DISABLED // Default mode of dynamic frequency calculation. (Enums in ft_types.h) + #define FTM_SHAPING_DEFAULT_X_FREQ 37.0f // (Hz) Default peak frequency used by input shapers. + #define FTM_SHAPING_DEFAULT_Y_FREQ 37.0f // (Hz) Default peak frequency used by input shapers. + #define FTM_LINEAR_ADV_DEFAULT_ENA false // Default linear advance enable (true) or disable (false). + #define FTM_LINEAR_ADV_DEFAULT_K 0.0f // Default linear advance gain. + #define FTM_SHAPING_ZETA 0.1f // Zeta used by input shapers. + #define FTM_SHAPING_V_TOL 0.05f // Vibration tolerance used by EI input shapers. + + /** + * Advanced configuration + */ + #define FTM_BATCH_SIZE 100 // Batch size for trajectory generation; + // half the window size for Ulendo FBS. + #define FTM_FS 1000 // (Hz) Frequency for trajectory generation. (1 / FTM_TS) + #define FTM_TS 0.001f // (s) Time step for trajectory generation. (1 / FTM_FS) + #define FTM_STEPPER_FS 20000 // (Hz) Frequency for stepper I/O update. + #define FTM_MIN_TICKS ((STEPPER_TIMER_RATE) / (FTM_STEPPER_FS)) // Minimum stepper ticks between steps. + #define FTM_MIN_SHAPE_FREQ 10 // Minimum shaping frequency. + #define FTM_ZMAX 100 // Maximum delays for shaping functions (even numbers only!). + // Calculate as: + // 1/2 * (FTM_FS / FTM_MIN_SHAPE_FREQ) for ZV. + // (FTM_FS / FTM_MIN_SHAPE_FREQ) for ZVD, MZV. + // 3/2 * (FTM_FS / FTM_MIN_SHAPE_FREQ) for 2HEI. + // 2 * (FTM_FS / FTM_MIN_SHAPE_FREQ) for 3HEI. + #define FTM_STEPS_PER_UNIT_TIME 20 // Interpolated stepper commands per unit time. + // Calculate as (FTM_STEPPER_FS / FTM_FS). + #define FTM_CTS_COMPARE_VAL 10 // Comparison value used in interpolation algorithm. + // Calculate as (FTM_STEPS_PER_UNIT_TIME / 2). + // These values may be configured to adjust duration of loop(). + #define FTM_STEPS_PER_LOOP 60 // Number of stepper commands to generate each loop(). + #define FTM_POINTS_PER_LOOP 100 // Number of trajectory points to generate each loop(). + + // This value may be configured to adjust duration to consume the command buffer. + // Try increasing this value if stepper motion is not smooth. + #define FTM_STEPPERCMD_BUFF_SIZE 1000 // Size of the stepper command buffers. +#endif /** * Input Shaping -- EXPERIMENTAL @@ -1125,6 +1169,8 @@ //#define SHAPING_MENU // Add a menu to the LCD to set shaping parameters. #endif +// @section motion + #define AXIS_RELATIVE_MODES { false, false, false, false } // Add a Duplicate option for well-separated conjoined nozzles diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 213cbebc26..19aaedf7c6 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -50,6 +50,9 @@ #include "module/settings.h" #include "module/stepper.h" #include "module/temperature.h" +#if ENABLED(FT_MOTION) + #include "module/ft_motion.h" +#endif #include "gcode/gcode.h" #include "gcode/parser.h" @@ -885,8 +888,12 @@ void idle(bool no_stepper_sleep/*=false*/) { // Update the LVGL interface TERN_(HAS_TFT_LVGL_UI, LV_TASK_HANDLER()); + // Manage Fixed-time Motion Control + TERN_(FT_MOTION, fxdTiCtrl.loop()); + IDLE_DONE: TERN_(MARLIN_DEV_MODE, idle_depth--); + return; } diff --git a/Marlin/src/gcode/feature/ft_motion/M493.cpp b/Marlin/src/gcode/feature/ft_motion/M493.cpp new file mode 100644 index 0000000000..31e16a194d --- /dev/null +++ b/Marlin/src/gcode/feature/ft_motion/M493.cpp @@ -0,0 +1,282 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../../inc/MarlinConfig.h" + +#if ENABLED(FT_MOTION) + +#include "../../gcode.h" +#include "../../../module/ft_motion.h" + +void say_shaping() { + SERIAL_ECHO_TERNARY(fxdTiCtrl.cfg_mode, "Fixed time controller ", "en", "dis", "abled"); + if (fxdTiCtrl.cfg_mode == ftMotionMode_DISABLED || fxdTiCtrl.cfg_mode == ftMotionMode_ENABLED) { + SERIAL_ECHOLNPGM("."); + return; + } + #if HAS_X_AXIS + SERIAL_ECHOPGM(" with "); + switch (fxdTiCtrl.cfg_mode) { + default: break; + //case ftMotionMode_ULENDO_FBS: SERIAL_ECHOLNPGM("Ulendo FBS."); return; + case ftMotionMode_ZV: SERIAL_ECHOLNPGM("ZV"); break; + case ftMotionMode_ZVD: SERIAL_ECHOLNPGM("ZVD"); break; + case ftMotionMode_EI: SERIAL_ECHOLNPGM("EI"); break; + case ftMotionMode_2HEI: SERIAL_ECHOLNPGM("2 Hump EI"); break; + case ftMotionMode_3HEI: SERIAL_ECHOLNPGM("3 Hump EI"); break; + case ftMotionMode_MZV: SERIAL_ECHOLNPGM("MZV"); break; + //case ftMotionMode_DISCTF: SERIAL_ECHOLNPGM("discrete transfer functions"); break; + } + SERIAL_ECHOLNPGM(" shaping."); + #endif +} + +/** + * M493: Set Fixed-time Motion Control parameters + * + * S Set the motion / shaping mode. Shaping requires an X axis, at the minimum. + * 0: NORMAL + * 1: FIXED-TIME + * 10: ZV + * 11: ZVD + * 12: EI + * 13: 2HEI + * 14: 3HEI + * 15: MZV + * + * P Enable (1) or Disable (0) Linear Advance pressure control + * + * K Set Linear Advance gain + * + * D Set Dynamic Frequency mode + * 0: DISABLED + * 1: Z-based (Requires a Z axis) + * 2: Mass-based (Requires X and E axes) + * + * A Set static/base frequency for the X axis + * F Set frequency scaling for the X axis + * + * B Set static/base frequency for the Y axis + * H Set frequency scaling for the Y axis + */ +void GcodeSuite::M493() { + // Parse 'S' mode parameter. + if (parser.seenval('S')) { + const ftMotionMode_t val = (ftMotionMode_t)parser.value_byte(); + switch (val) { + case ftMotionMode_DISABLED: + case ftMotionMode_ENABLED: + #if HAS_X_AXIS + case ftMotionMode_ZVD: + case ftMotionMode_2HEI: + case ftMotionMode_3HEI: + case ftMotionMode_MZV: + //case ftMotionMode_ULENDO_FBS: + //case ftMotionMode_DISCTF: + fxdTiCtrl.cfg_mode = val; + say_shaping(); + break; + #endif + default: + SERIAL_ECHOLNPGM("?Invalid control mode [M] value."); + return; + } + + switch (val) { + case ftMotionMode_ENABLED: fxdTiCtrl.reset(); break; + #if HAS_X_AXIS + case ftMotionMode_ZV: + case ftMotionMode_ZVD: + case ftMotionMode_EI: + case ftMotionMode_2HEI: + case ftMotionMode_3HEI: + case ftMotionMode_MZV: + fxdTiCtrl.updateShapingN(fxdTiCtrl.cfg_baseFreq[0] OPTARG(HAS_Y_AXIS, fxdTiCtrl.cfg_baseFreq[1])); + fxdTiCtrl.updateShapingA(); + fxdTiCtrl.reset(); + break; + //case ftMotionMode_ULENDO_FBS: + //case ftMotionMode_DISCTF: + #endif + default: break; + } + } + + #if HAS_EXTRUDERS + + // Pressure control (linear advance) parameter. + if (parser.seen('P')) { + const bool val = parser.value_bool(); + fxdTiCtrl.cfg_linearAdvEna = val; + SERIAL_ECHO_TERNARY(val, "Pressure control: Linear Advance ", "en", "dis", "abled.\n"); + } + + // Pressure control (linear advance) gain parameter. + if (parser.seenval('K')) { + const float val = parser.value_float(); + if (val >= 0.0f) { + fxdTiCtrl.cfg_linearAdvK = val; + SERIAL_ECHOPGM("Pressure control: Linear Advance gain set to: "); + SERIAL_ECHO_F(val, 5); + SERIAL_ECHOLNPGM("."); + } + else { // Value out of range. + SERIAL_ECHOLNPGM("Pressure control: Linear Advance gain out of range."); + } + } + + #endif // HAS_EXTRUDERS + + #if HAS_Z_AXIS || HAS_EXTRUDERS + + // Dynamic frequency mode parameter. + if (parser.seenval('D')) { + if (WITHIN(fxdTiCtrl.cfg_mode, 10U, 19U)) { + const dynFreqMode_t val = dynFreqMode_t(parser.value_byte()); + switch (val) { + case dynFreqMode_DISABLED: + fxdTiCtrl.cfg_dynFreqMode = val; + SERIAL_ECHOLNPGM("Dynamic frequency mode disabled."); + break; + #if HAS_Z_AXIS + case dynFreqMode_Z_BASED: + fxdTiCtrl.cfg_dynFreqMode = val; + SERIAL_ECHOLNPGM("Z-based Dynamic Frequency Mode."); + break; + #endif + #if HAS_EXTRUDERS + case dynFreqMode_MASS_BASED: + fxdTiCtrl.cfg_dynFreqMode = val; + SERIAL_ECHOLNPGM("Mass-based Dynamic Frequency Mode."); + break; + #endif + default: + SERIAL_ECHOLNPGM("?Invalid Dynamic Frequency Mode [D] value."); + break; + } + } + else { + SERIAL_ECHOLNPGM("Incompatible shaper for [D] Dynamic Frequency mode."); + } + } + + #endif // HAS_Z_AXIS || HAS_EXTRUDERS + + #if HAS_X_AXIS + + // Parse frequency parameter (X axis). + if (parser.seenval('A')) { + if (WITHIN(fxdTiCtrl.cfg_mode, 10U, 19U)) { + const float val = parser.value_float(); + const bool frequencyInRange = WITHIN(val, FTM_MIN_SHAPE_FREQ, (FTM_FS) / 2); + // TODO: Frequency minimum is dependent on the shaper used; the above check isn't always correct. + if (frequencyInRange) { + fxdTiCtrl.cfg_baseFreq[0] = val; + fxdTiCtrl.updateShapingN(fxdTiCtrl.cfg_baseFreq[0] OPTARG(HAS_Y_AXIS, fxdTiCtrl.cfg_baseFreq[1])); + fxdTiCtrl.reset(); + if (fxdTiCtrl.cfg_dynFreqMode) { SERIAL_ECHOPGM("Compensator base dynamic frequency (X/A axis) set to:"); } + else { SERIAL_ECHOPGM("Compensator static frequency (X/A axis) set to: "); } + SERIAL_ECHO_F( fxdTiCtrl.cfg_baseFreq[0], 2 ); + SERIAL_ECHOLNPGM("."); + } + else { // Frequency out of range. + SERIAL_ECHOLNPGM("Invalid [A] frequency value."); + } + } + else { // Mode doesn't use frequency. + SERIAL_ECHOLNPGM("Incompatible mode for [A] frequency."); + } + } + + #if HAS_Z_AXIS || HAS_EXTRUDERS + // Parse frequency scaling parameter (X axis). + if (parser.seenval('F')) { + const bool modeUsesDynFreq = ( + TERN0(HAS_Z_AXIS, fxdTiCtrl.cfg_dynFreqMode == dynFreqMode_Z_BASED) + || TERN0(HAS_EXTRUDERS, fxdTiCtrl.cfg_dynFreqMode == dynFreqMode_MASS_BASED) + ); + + if (modeUsesDynFreq) { + const float val = parser.value_float(); + fxdTiCtrl.cfg_dynFreqK[0] = val; + SERIAL_ECHOPGM("Frequency scaling (X/A axis) set to: "); + SERIAL_ECHO_F(fxdTiCtrl.cfg_dynFreqK[0], 8); + SERIAL_ECHOLNPGM("."); + } + else { + SERIAL_ECHOLNPGM("Incompatible mode for [F] frequency scaling."); + } + } + #endif // HAS_Z_AXIS || HAS_EXTRUDERS + + #endif // HAS_X_AXIS + + #if HAS_Y_AXIS + + // Parse frequency parameter (Y axis). + if (parser.seenval('B')) { + if (WITHIN(fxdTiCtrl.cfg_mode, 10U, 19U)) { + const float val = parser.value_float(); + const bool frequencyInRange = WITHIN(val, FTM_MIN_SHAPE_FREQ, (FTM_FS) / 2); + if (frequencyInRange) { + fxdTiCtrl.cfg_baseFreq[1] = val; + fxdTiCtrl.updateShapingN(fxdTiCtrl.cfg_baseFreq[0] OPTARG(HAS_Y_AXIS, fxdTiCtrl.cfg_baseFreq[1])); + fxdTiCtrl.reset(); + if (fxdTiCtrl.cfg_dynFreqMode) { SERIAL_ECHOPGM("Compensator base dynamic frequency (Y/B axis) set to:"); } + else { SERIAL_ECHOPGM("Compensator static frequency (Y/B axis) set to: "); } + SERIAL_ECHO_F( fxdTiCtrl.cfg_baseFreq[1], 2 ); + SERIAL_ECHOLNPGM("."); + } + else { // Frequency out of range. + SERIAL_ECHOLNPGM("Invalid frequency [B] value."); + } + } + else { // Mode doesn't use frequency. + SERIAL_ECHOLNPGM("Incompatible mode for [B] frequency."); + } + } + + #if HAS_Z_AXIS || HAS_EXTRUDERS + // Parse frequency scaling parameter (Y axis). + if (parser.seenval('H')) { + const bool modeUsesDynFreq = ( + TERN0(HAS_Z_AXIS, fxdTiCtrl.cfg_dynFreqMode == dynFreqMode_Z_BASED) + || TERN0(HAS_EXTRUDERS, fxdTiCtrl.cfg_dynFreqMode == dynFreqMode_MASS_BASED) + ); + + if (modeUsesDynFreq) { + const float val = parser.value_float(); + fxdTiCtrl.cfg_dynFreqK[1] = val; + SERIAL_ECHOPGM("Frequency scaling (Y/B axis) set to: "); + SERIAL_ECHO_F(val, 8); + SERIAL_ECHOLNPGM("."); + } + else { + SERIAL_ECHOLNPGM("Incompatible mode for [H] frequency scaling."); + } + } + #endif // HAS_Z_AXIS || HAS_EXTRUDERS + + #endif // HAS_Y_AXIS +} + +#endif // FT_MOTION diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 1752ae8a18..0711d39204 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -895,6 +895,10 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 486: M486(); break; // M486: Identify and cancel objects #endif + #if ENABLED(FT_MOTION) + case 493: M493(); break; // M493: Fixed-Time Motion control + #endif + case 500: M500(); break; // M500: Store settings in EEPROM case 501: M501(); break; // M501: Read settings from EEPROM case 502: M502(); break; // M502: Revert to default settings @@ -934,7 +938,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { #endif #if HAS_ZV_SHAPING - case 593: M593(); break; // M593: Set Input Shaping parameters + case 593: M593(); break; // M593: Input Shaping control #endif #if ENABLED(ADVANCED_PAUSE_FEATURE) diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index cc3f221a82..8493d7f291 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -1038,6 +1038,10 @@ private: static void M486(); #endif + #if ENABLED(FT_MOTION) + static void M493(); + #endif + static void M500(); static void M501(); static void M502(); diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp new file mode 100644 index 0000000000..dfef961c79 --- /dev/null +++ b/Marlin/src/module/ft_motion.cpp @@ -0,0 +1,924 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../inc/MarlinConfig.h" + +#if ENABLED(FT_MOTION) + +#include "ft_motion.h" +#include "stepper.h" // Access stepper block queue function and abort status. + +FxdTiCtrl fxdTiCtrl; + +//-----------------------------------------------------------------// +// Variables. +//-----------------------------------------------------------------// + +// Public variables. +ftMotionMode_t FxdTiCtrl::cfg_mode = FTM_DEFAULT_MODE; // Mode / active compensation mode configuration. + +#if HAS_EXTRUDERS + bool FxdTiCtrl::cfg_linearAdvEna = FTM_LINEAR_ADV_DEFAULT_ENA; // Linear advance enable configuration. + float FxdTiCtrl::cfg_linearAdvK = FTM_LINEAR_ADV_DEFAULT_K; // Linear advance gain. +#endif + +dynFreqMode_t FxdTiCtrl::cfg_dynFreqMode = FTM_DEFAULT_DYNFREQ_MODE; // Dynamic frequency mode configuration. +#if !HAS_Z_AXIS + static_assert(FTM_DEFAULT_DYNFREQ_MODE != dynFreqMode_Z_BASED, "dynFreqMode_Z_BASED requires a Z axis."); +#endif +#if !(HAS_X_AXIS && HAS_EXTRUDERS) + static_assert(FTM_DEFAULT_DYNFREQ_MODE != dynFreqMode_MASS_BASED, "dynFreqMode_MASS_BASED requires an X axis and an extruder."); +#endif + +#if HAS_X_AXIS + float FxdTiCtrl::cfg_baseFreq[] = { FTM_SHAPING_DEFAULT_X_FREQ // Base frequency. [Hz] + OPTARG(HAS_Y_AXIS, FTM_SHAPING_DEFAULT_Y_FREQ) }; + float FxdTiCtrl::cfg_dynFreqK[] = { 0.0f OPTARG(HAS_Y_AXIS, 0.0f) }; // Scaling / gain for dynamic frequency. [Hz/mm] or [Hz/g] +#endif + +ft_command_t FxdTiCtrl::stepperCmdBuff[FTM_STEPPERCMD_BUFF_SIZE] = {0U}; // Buffer of stepper commands. +hal_timer_t FxdTiCtrl::stepperCmdBuff_StepRelativeTi[FTM_STEPPERCMD_BUFF_SIZE] = {0U}; // Buffer of the stepper command timing. +uint8_t FxdTiCtrl::stepperCmdBuff_ApplyDir[FTM_STEPPERCMD_DIR_SIZE] = {0U}; // Buffer of whether DIR needs to be updated. +uint32_t FxdTiCtrl::stepperCmdBuff_produceIdx = 0, // Index of next stepper command write to the buffer. + FxdTiCtrl::stepperCmdBuff_consumeIdx = 0; // Index of next stepper command read from the buffer. + +bool FxdTiCtrl::sts_stepperBusy = false; // The stepper buffer has items and is in use. + +// Private variables. +// NOTE: These are sized for Ulendo FBS use. +#if HAS_X_AXIS + float FxdTiCtrl::xd[2 * (FTM_BATCH_SIZE)], // = {0.0f} Storage for fixed-time-based trajectory. + FxdTiCtrl::xm[FTM_BATCH_SIZE]; // = {0.0f} Storage for modified fixed-time-based trajectory. +#endif +#if HAS_Y_AXIS + float FxdTiCtrl::yd[2 * (FTM_BATCH_SIZE)], FxdTiCtrl::ym[FTM_BATCH_SIZE]; +#endif +#if HAS_Z_AXIS + float FxdTiCtrl::zd[2 * (FTM_BATCH_SIZE)], FxdTiCtrl::zm[FTM_BATCH_SIZE]; +#endif +#if HAS_EXTRUDERS + float FxdTiCtrl::ed[2 * (FTM_BATCH_SIZE)], FxdTiCtrl::em[FTM_BATCH_SIZE]; +#endif + +block_t* FxdTiCtrl::current_block_cpy = nullptr; // Pointer to current block being processed. +bool FxdTiCtrl::blockProcRdy = false, // Indicates a block is ready to be processed. + FxdTiCtrl::blockProcRdy_z1 = false, // Storage for the previous indicator. + FxdTiCtrl::blockProcDn = false; // Indicates current block is done being processed. +bool FxdTiCtrl::batchRdy = false; // Indicates a batch of the fixed time trajectory + // has been generated, is now available in the upper - + // half of xd, yd, zd, ed vectors, and is ready to be + // post processed, if applicable, then interpolated. +bool FxdTiCtrl::batchRdyForInterp = false; // Indicates the batch is done being post processed, + // if applicable, and is ready to be converted to step commands. +bool FxdTiCtrl::runoutEna = false; // True if runout of the block hasn't been done and is allowed. + +// Trapezoid data variables. +#if HAS_X_AXIS + float FxdTiCtrl::x_startPosn, // (mm) Start position of block + FxdTiCtrl::x_endPosn_prevBlock = 0.0f, // (mm) Start position of block + FxdTiCtrl::x_Ratio; // (ratio) Axis move ratio of block +#endif +#if HAS_Y_AXIS + float FxdTiCtrl::y_startPosn, + FxdTiCtrl::y_endPosn_prevBlock = 0.0f, + FxdTiCtrl::y_Ratio; +#endif +#if HAS_Z_AXIS + float FxdTiCtrl::z_startPosn, + FxdTiCtrl::z_endPosn_prevBlock = 0.0f, + FxdTiCtrl::z_Ratio; +#endif +#if HAS_EXTRUDERS + float FxdTiCtrl::e_startPosn, + FxdTiCtrl::e_endPosn_prevBlock = 0.0f, + FxdTiCtrl::e_Ratio; +#endif +float FxdTiCtrl::accel_P, // Acceleration prime of block. [mm/sec/sec] + FxdTiCtrl::decel_P, // Deceleration prime of block. [mm/sec/sec] + FxdTiCtrl::F_P, // Feedrate prime of block. [mm/sec] + FxdTiCtrl::f_s, // Starting feedrate of block. [mm/sec] + FxdTiCtrl::s_1e, // Position after acceleration phase of block. + FxdTiCtrl::s_2e; // Position after acceleration and coasting phase of block. + +uint32_t FxdTiCtrl::N1, // Number of data points in the acceleration phase. + FxdTiCtrl::N2, // Number of data points in the coasting phase. + FxdTiCtrl::N3; // Number of data points in the deceleration phase. + +uint32_t FxdTiCtrl::max_intervals; // Total number of data points that will be generated from block. + +// Make vector variables. +uint32_t FxdTiCtrl::makeVector_idx = 0, // Index of fixed time trajectory generation of the overall block. + FxdTiCtrl::makeVector_idx_z1 = 0, // Storage for the previously calculated index above. + FxdTiCtrl::makeVector_batchIdx = FTM_BATCH_SIZE; // Index of fixed time trajectory generation within the batch. + +// Interpolation variables. +#if HAS_X_AXIS + int32_t FxdTiCtrl::x_steps = 0; // Step count accumulator. + stepDirState_t FxdTiCtrl::x_dirState = stepDirState_NOT_SET; // Memory of the currently set step direction of the axis. +#endif +#if HAS_Y_AXIS + int32_t FxdTiCtrl::y_steps = 0; + stepDirState_t FxdTiCtrl::y_dirState = stepDirState_NOT_SET; +#endif +#if HAS_Z_AXIS + int32_t FxdTiCtrl::z_steps = 0; + stepDirState_t FxdTiCtrl::z_dirState = stepDirState_NOT_SET; +#endif +#if HAS_EXTRUDERS + int32_t FxdTiCtrl::e_steps = 0; + stepDirState_t FxdTiCtrl::e_dirState = stepDirState_NOT_SET; +#endif + +uint32_t FxdTiCtrl::interpIdx = 0, // Index of current data point being interpolated. + FxdTiCtrl::interpIdx_z1 = 0; // Storage for the previously calculated index above. +hal_timer_t FxdTiCtrl::nextStepTicks = FTM_MIN_TICKS; // Accumulator for the next step time (in ticks). + +// Shaping variables. +#if HAS_X_AXIS + uint32_t FxdTiCtrl::xy_zi_idx = 0, // Index of storage in the data point delay vectors. + FxdTiCtrl::xy_max_i = 0; // Vector length for the selected shaper. + float FxdTiCtrl::xd_zi[FTM_ZMAX] = { 0.0f }; // Data point delay vector. + float FxdTiCtrl::x_Ai[5]; // Shaping gain vector. + uint32_t FxdTiCtrl::x_Ni[5]; // Shaping time index vector. +#endif +#if HAS_Y_AXIS + float FxdTiCtrl::yd_zi[FTM_ZMAX] = { 0.0f }; + float FxdTiCtrl::y_Ai[5]; + uint32_t FxdTiCtrl::y_Ni[5]; +#endif + +#if HAS_EXTRUDERS + // Linear advance variables. + float FxdTiCtrl::e_raw_z1 = 0.0f; // (ms) Unit delay of raw extruder position. + float FxdTiCtrl::e_advanced_z1 = 0.0f; // (ms) Unit delay of advanced extruder position. +#endif + +//-----------------------------------------------------------------// +// Function definitions. +//-----------------------------------------------------------------// + +// Public functions. + +// Sets controller states to begin processing a block. +void FxdTiCtrl::startBlockProc(block_t * const current_block) { + current_block_cpy = current_block; + blockProcRdy = true; + blockProcDn = false; + runoutEna = true; +} + +// Moves any free data points to the stepper buffer even if a full batch isn't ready. +void FxdTiCtrl::runoutBlock() { + + if (runoutEna && !batchRdy) { // If the window is full already (block intervals was a multiple of + // the batch size), or runout is not enabled, no runout is needed. + // Fill out the trajectory window with the last position calculated. + if (makeVector_batchIdx > FTM_BATCH_SIZE) { + for (uint32_t i = makeVector_batchIdx; i < 2 * (FTM_BATCH_SIZE); i++) { + xd[i] = xd[makeVector_batchIdx - 1]; + TERN_(HAS_Y_AXIS, yd[i] = yd[makeVector_batchIdx - 1]); + TERN_(HAS_Y_AXIS, zd[i] = zd[makeVector_batchIdx - 1]); + TERN_(HAS_EXTRUDERS, ed[i] = ed[makeVector_batchIdx - 1]); + } + } + makeVector_batchIdx = FTM_BATCH_SIZE; + batchRdy = true; + } + runoutEna = false; +} + +// Controller main, to be invoked from non-isr task. +void FxdTiCtrl::loop() { + + if (!cfg_mode) return; + + static bool initd = false; + if (!initd) { init(); initd = true; } + + // Handle block abort with the following sequence: + // 1. Zero out commands in stepper ISR. + // 2. Drain the motion buffer, stop processing until they are emptied. + // 3. Reset all the states / memory. + // 4. Signal ready for new block. + if (stepper.abort_current_block) { + if (sts_stepperBusy) return; // Wait until motion buffers are emptied + reset(); + blockProcDn = true; // Set queueing to look for next block. + runoutEna = false; // Disabling running out this block, since we want to halt the motion. + stepper.abort_current_block = false; // Abort finished. + } + + // Planner processing and block conversion. + if (!blockProcRdy) stepper.fxdTiCtrl_BlockQueueUpdate(); + + if (blockProcRdy) { + if (!blockProcRdy_z1) loadBlockData(current_block_cpy); // One-shot. + while (!blockProcDn && !batchRdy && (makeVector_idx - makeVector_idx_z1 < (FTM_POINTS_PER_LOOP))) + makeVector(); + } + + // FBS / post processing. + if (batchRdy && !batchRdyForInterp) { + + // Call Ulendo FBS here. + + memcpy(xm, &xd[FTM_BATCH_SIZE], sizeof(xm)); + TERN_(HAS_Y_AXIS, memcpy(ym, &yd[FTM_BATCH_SIZE], sizeof(ym))); + + // Done compensating ... + + // Copy the uncompensated vectors. + TERN_(HAS_Z_AXIS, memcpy(zm, &zd[FTM_BATCH_SIZE], sizeof(zm))); + TERN_(HAS_EXTRUDERS, memcpy(em, &ed[FTM_BATCH_SIZE], sizeof(em))); + + // Shift the time series back in the window. + memcpy(xd, &xd[FTM_BATCH_SIZE], sizeof(xd) / 2); + TERN_(HAS_Y_AXIS, memcpy(yd, &yd[FTM_BATCH_SIZE], sizeof(yd) / 2)); + // Disabled by comment as these are uncompensated, the lower half is not used. + //TERN_(HAS_Z_AXIS, memcpy(zd, &zd[FTM_BATCH_SIZE], (sizeof(zd) / 2))); + //TERN_(HAS_EXTRUDERS, memcpy(ed, &ed[FTM_BATCH_SIZE], (sizeof(ed) / 2))); + + // ... data is ready in xm, ym, zm, em. + batchRdyForInterp = true; + + batchRdy = false; // Clear so that makeVector() may resume generating points. + + } // if (batchRdy && !batchRdyForInterp) + + // Interpolation. + while ( batchRdyForInterp + && ( stepperCmdBuffItems() < ((FTM_STEPPERCMD_BUFF_SIZE) - (FTM_STEPS_PER_UNIT_TIME)) ) + && ( (interpIdx - interpIdx_z1) < (FTM_STEPS_PER_LOOP) ) + ) { + convertToSteps(interpIdx); + + if (++interpIdx == FTM_BATCH_SIZE) { + batchRdyForInterp = false; + interpIdx = 0; + } + } + + // Report busy status to planner. + planner.fxdTiCtrl_busy = (sts_stepperBusy || ((!blockProcDn && blockProcRdy) || batchRdy || batchRdyForInterp || runoutEna)); + + blockProcRdy_z1 = blockProcRdy; + makeVector_idx_z1 = makeVector_idx; + interpIdx_z1 = interpIdx; +} + +#if HAS_X_AXIS + + // Refresh the gains used by shaping functions. + // To be called on init or mode or zeta change. + void FxdTiCtrl::updateShapingA(const_float_t zeta/*=FTM_SHAPING_ZETA*/, const_float_t vtol/*=FTM_SHAPING_V_TOL*/) { + + const float K = exp( -zeta * PI / sqrt(1.0f - sq(zeta)) ), + K2 = sq(K); + + switch (cfg_mode) { + + case ftMotionMode_ZV: + xy_max_i = 1U; + x_Ai[0] = 1.0f / (1.0f + K); + x_Ai[1] = x_Ai[0] * K; + break; + + case ftMotionMode_ZVD: + xy_max_i = 2U; + x_Ai[0] = 1.0f / ( 1.0f + 2.0f * K + K2 ); + x_Ai[1] = x_Ai[0] * 2.0f * K; + x_Ai[2] = x_Ai[0] * K2; + break; + + case ftMotionMode_EI: { + xy_max_i = 2U; + x_Ai[0] = 0.25f * (1.0f + vtol); + x_Ai[1] = 0.50f * (1.0f - vtol) * K; + x_Ai[2] = x_Ai[0] * K2; + const float A_adj = 1.0f / (x_Ai[0] + x_Ai[1] + x_Ai[2]); + for (uint32_t i = 0U; i < 3U; i++) { x_Ai[i] *= A_adj; } + } break; + + case ftMotionMode_2HEI: { + xy_max_i = 3U; + const float vtol2 = sq(vtol); + const float X = pow(vtol2 * (sqrt(1.0f - vtol2) + 1.0f), 1.0f / 3.0f); + x_Ai[0] = ( 3.0f * sq(X) + 2.0f * X + 3.0f * vtol2 ) / (16.0f * X); + x_Ai[1] = ( 0.5f - x_Ai[0] ) * K; + x_Ai[2] = x_Ai[1] * K; + x_Ai[3] = x_Ai[0] * cu(K); + const float A_adj = 1.0f / (x_Ai[0] + x_Ai[1] + x_Ai[2] + x_Ai[3]); + for (uint32_t i = 0U; i < 4U; i++) { x_Ai[i] *= A_adj; } + } break; + + case ftMotionMode_3HEI: { + xy_max_i = 4U; + x_Ai[0] = 0.0625f * ( 1.0f + 3.0f * vtol + 2.0f * sqrt( 2.0f * ( vtol + 1.0f ) * vtol ) ); + x_Ai[1] = 0.25f * ( 1.0f - vtol ) * K; + x_Ai[2] = ( 0.5f * ( 1.0f + vtol ) - 2.0f * x_Ai[0] ) * K2; + x_Ai[3] = x_Ai[1] * K2; + x_Ai[4] = x_Ai[0] * sq(K2); + const float A_adj = 1.0f / (x_Ai[0] + x_Ai[1] + x_Ai[2] + x_Ai[3] + x_Ai[4]); + for (uint32_t i = 0U; i < 5U; i++) { x_Ai[i] *= A_adj; } + } break; + + case ftMotionMode_MZV: { + xy_max_i = 2U; + const float B = 1.4142135623730950488016887242097f * K; + x_Ai[0] = 1.0f / (1.0f + B + K2); + x_Ai[1] = x_Ai[0] * B; + x_Ai[2] = x_Ai[0] * K2; + } break; + + default: + for (uint32_t i = 0U; i < 5U; i++) x_Ai[i] = 0.0f; + xy_max_i = 0; + } + #if HAS_Y_AXIS + memcpy(y_Ai, x_Ai, sizeof(x_Ai)); // For now, zeta and vtol are shared across x and y. + #endif + } + + // Refresh the indices used by shaping functions. + // To be called when frequencies change. + void FxdTiCtrl::updateShapingN(const_float_t xf OPTARG(HAS_Y_AXIS, const_float_t yf), const_float_t zeta/*=FTM_SHAPING_ZETA*/) { + + // Protections omitted for DBZ and for index exceeding array length. + + const float df = sqrt(1.0f - sq(zeta)); + + switch (cfg_mode) { + case ftMotionMode_ZV: + x_Ni[1] = round((0.5f / xf / df) * (FTM_FS)); + #if HAS_Y_AXIS + y_Ni[1] = round((0.5f / yf / df) * (FTM_FS)); + #endif + break; + case ftMotionMode_ZVD: + case ftMotionMode_EI: + x_Ni[1] = round((0.5f / xf / df) * (FTM_FS)); + x_Ni[2] = 2 * x_Ni[1]; + #if HAS_Y_AXIS + y_Ni[1] = round((0.5f / yf / df) * (FTM_FS)); + y_Ni[2] = 2 * y_Ni[1]; + #endif + break; + case ftMotionMode_2HEI: + x_Ni[1] = round((0.5f / xf / df) * (FTM_FS)); + x_Ni[2] = 2 * x_Ni[1]; + x_Ni[3] = 3 * x_Ni[1]; + #if HAS_Y_AXIS + y_Ni[1] = round((0.5f / yf / df) * (FTM_FS)); + y_Ni[2] = 2 * y_Ni[1]; + y_Ni[3] = 3 * y_Ni[1]; + #endif + break; + case ftMotionMode_3HEI: + x_Ni[1] = round((0.5f / xf / df) * (FTM_FS)); + x_Ni[2] = 2 * x_Ni[1]; + x_Ni[3] = 3 * x_Ni[1]; + x_Ni[4] = 4 * x_Ni[1]; + #if HAS_Y_AXIS + y_Ni[1] = round((0.5f / yf / df) * (FTM_FS)); + y_Ni[2] = 2 * y_Ni[1]; + y_Ni[3] = 3 * y_Ni[1]; + y_Ni[4] = 4 * y_Ni[1]; + #endif + break; + case ftMotionMode_MZV: + x_Ni[1] = round((0.375f / xf / df) * (FTM_FS)); + x_Ni[2] = 2 * x_Ni[1]; + #if HAS_Y_AXIS + y_Ni[1] = round((0.375f / yf / df) * (FTM_FS)); + y_Ni[2] = 2 * y_Ni[1]; + #endif + break; + default: + for (uint32_t i = 0U; i < 5U; i++) { x_Ni[i] = 0; TERN_(HAS_Y_AXIS, y_Ni[i] = 0); } + } + } + +#endif // HAS_X_AXIS + +// Reset all trajectory processing variables. +void FxdTiCtrl::reset() { + + stepperCmdBuff_produceIdx = stepperCmdBuff_consumeIdx = 0; + + for (uint32_t i = 0U; i < (FTM_BATCH_SIZE); i++) { // Reset trajectory history + TERN_(HAS_X_AXIS, xd[i] = 0.0f); + TERN_(HAS_Y_AXIS, yd[i] = 0.0f); + TERN_(HAS_Z_AXIS, zd[i] = 0.0f); + TERN_(HAS_EXTRUDERS, ed[i] = 0.0f); + } + + blockProcRdy = blockProcRdy_z1 = blockProcDn = false; + batchRdy = batchRdyForInterp = false; + runoutEna = false; + + TERN_(HAS_X_AXIS, x_endPosn_prevBlock = 0.0f); + TERN_(HAS_Y_AXIS, y_endPosn_prevBlock = 0.0f); + TERN_(HAS_Z_AXIS, z_endPosn_prevBlock = 0.0f); + TERN_(HAS_EXTRUDERS, e_endPosn_prevBlock = 0.0f); + + makeVector_idx = makeVector_idx_z1 = 0; + makeVector_batchIdx = FTM_BATCH_SIZE; + + TERN_(HAS_X_AXIS, x_steps = 0); + TERN_(HAS_Y_AXIS, y_steps = 0); + TERN_(HAS_Z_AXIS, z_steps = 0); + TERN_(HAS_EXTRUDERS, e_steps = 0); + interpIdx = interpIdx_z1 = 0; + TERN_(HAS_X_AXIS, x_dirState = stepDirState_NOT_SET); + TERN_(HAS_Y_AXIS, y_dirState = stepDirState_NOT_SET); + TERN_(HAS_Z_AXIS, z_dirState = stepDirState_NOT_SET); + TERN_(HAS_EXTRUDERS, e_dirState = stepDirState_NOT_SET); + nextStepTicks = FTM_MIN_TICKS; + + #if HAS_X_AXIS + for (uint32_t i = 0U; i < (FTM_ZMAX); i++) { xd_zi[i] = 0.0f; TERN_(HAS_Y_AXIS, yd_zi[i] = 0.0f); } + xy_zi_idx = 0; + #endif + + TERN_(HAS_EXTRUDERS, e_raw_z1 = e_advanced_z1 = 0.0f); +} + +// Private functions. +// Auxiliary function to get number of step commands in the buffer. +uint32_t FxdTiCtrl::stepperCmdBuffItems() { + const uint32_t udiff = stepperCmdBuff_produceIdx - stepperCmdBuff_consumeIdx; + return stepperCmdBuff_produceIdx < stepperCmdBuff_consumeIdx ? (FTM_STEPPERCMD_BUFF_SIZE) + udiff : udiff; +} + +// Initializes storage variables before startup. +void FxdTiCtrl::init() { + #if HAS_X_AXIS + updateShapingN(cfg_baseFreq[0] OPTARG(HAS_Y_AXIS, cfg_baseFreq[1])); + updateShapingA(FTM_SHAPING_ZETA, FTM_SHAPING_V_TOL); + #endif + reset(); // Precautionary. +} + +// Loads / converts block data from planner to fixed-time control variables. +void FxdTiCtrl::loadBlockData(block_t * const current_block) { + + const float totalLength = current_block->millimeters, + oneOverLength = 1.0f / totalLength; + + const axis_bits_t direction = current_block->direction_bits; + + #if HAS_X_AXIS + x_startPosn = x_endPosn_prevBlock; + float x_moveDist = current_block->steps.a / planner.settings.axis_steps_per_mm[X_AXIS]; + if (TEST(direction, X_AXIS)) x_moveDist *= -1.0f; + x_Ratio = x_moveDist * oneOverLength; + #endif + + #if HAS_Y_AXIS + y_startPosn = y_endPosn_prevBlock; + float y_moveDist = current_block->steps.b / planner.settings.axis_steps_per_mm[Y_AXIS]; + if (TEST(direction, Y_AXIS)) y_moveDist *= -1.0f; + y_Ratio = y_moveDist * oneOverLength; + #endif + + #if HAS_Z_AXIS + z_startPosn = z_endPosn_prevBlock; + float z_moveDist = current_block->steps.c / planner.settings.axis_steps_per_mm[Z_AXIS]; + if (TEST(direction, Z_AXIS)) z_moveDist *= -1.0f; + z_Ratio = z_moveDist * oneOverLength; + #endif + + #if HAS_EXTRUDERS + e_startPosn = e_endPosn_prevBlock; + float extrusion = current_block->steps.e / planner.settings.axis_steps_per_mm[E_AXIS_N(current_block->extruder)]; + if (TEST(direction, E_AXIS_N(current_block->extruder))) extrusion *= -1.0f; + e_Ratio = extrusion * oneOverLength; + #endif + + const float spm = totalLength / current_block->step_event_count; // (steps/mm) Distance for each step + f_s = spm * current_block->initial_rate; // (steps/s) Start feedrate + const float f_e = spm * current_block->final_rate; // (steps/s) End feedrate + + const float a = current_block->acceleration, // (mm/s^2) Same magnitude for acceleration or deceleration + oneby2a = 1.0f / (2.0f * a), // (s/mm) Time to accelerate or decelerate one mm (i.e., oneby2a * 2 + oneby2d = -oneby2a; // (s/mm) Time to accelerate or decelerate one mm (i.e., oneby2a * 2 + const float fsSqByTwoA = sq(f_s) * oneby2a, // (mm) Distance to accelerate from start speed to nominal speed + feSqByTwoD = sq(f_e) * oneby2d; // (mm) Distance to decelerate from nominal speed to end speed + + float F_n = current_block->nominal_speed; // (mm/s) Speed we hope to achieve, if possible + const float fdiff = feSqByTwoD - fsSqByTwoA, // (mm) Coasting distance if nominal speed is reached + odiff = oneby2a - oneby2d, // (i.e., oneby2a * 2) (mm/s) Change in speed for one second of acceleration + ldiff = totalLength - fdiff; // (mm) Distance to travel if nominal speed is reached + float T2 = (1.0f / F_n) * (ldiff - odiff * sq(F_n)); // (s) Coasting duration after nominal speed reached + if (T2 < 0.0f) { + T2 = 0.0f; + F_n = SQRT(ldiff / odiff); // Clip by intersection if nominal speed can't be reached. + } + + const float T1 = (F_n - f_s) / a, // (s) Accel Time = difference in feedrate over acceleration + T3 = (F_n - f_e) / a; // (s) Decel Time = difference in feedrate over acceleration + + N1 = ceil(T1 * (FTM_FS)); // Accel datapoints based on Hz frequency + N2 = ceil(T2 * (FTM_FS)); // Coast + N3 = ceil(T3 * (FTM_FS)); // Decel + + const float T1_P = N1 * (FTM_TS), // (s) Accel datapoints x timestep resolution + T2_P = N2 * (FTM_TS), // (s) Coast + T3_P = N3 * (FTM_TS); // (s) Decel + + // Calculate the reachable feedrate at the end of the accel phase + // totalLength is the total distance to travel in mm + // f_s is the starting feedrate in mm/s + // f_e is the ending feedrate in mm/s + // T1_P is the time spent accelerating in seconds + // T2_P is the time spent coasting in seconds + // T3_P is the time spent decelerating in seconds + // f_s * T1_P is the distance traveled during the accel phase + // f_e * T3_P is the distance traveled during the decel phase + // + F_P = (2.0f * totalLength - f_s * T1_P - f_e * T3_P) / (T1_P + 2.0f * T2_P + T3_P); // (mm/s) Feedrate at the end of the accel phase + + // Calculate the acceleration and deceleration rates + accel_P = N1 ? ((F_P - f_s) / T1_P) : 0.0f; + + decel_P = (f_e - F_P) / T3_P; + + // Calculate the distance traveled during the accel phase + s_1e = f_s * T1_P + 0.5f * accel_P * sq(T1_P); + + // Calculate the distance traveled during the decel phase + s_2e = s_1e + F_P * T2_P; + + // One less than (Accel + Coasting + Decel) datapoints + max_intervals = N1 + N2 + N3 - 1U; + + TERN_(HAS_X_AXIS, x_endPosn_prevBlock += x_moveDist); + TERN_(HAS_Y_AXIS, y_endPosn_prevBlock += y_moveDist); + TERN_(HAS_Z_AXIS, z_endPosn_prevBlock += z_moveDist); + TERN_(HAS_EXTRUDERS, e_endPosn_prevBlock += extrusion); +} + +// Generate data points of the trajectory. +void FxdTiCtrl::makeVector() { + float accel_k = 0.0f; // (mm/s^2) Acceleration K factor + float tau = (makeVector_idx + 1) * (FTM_TS); // (s) Time since start of block + float dist = 0.0f; // (mm) Distance traveled + + if (makeVector_idx < N1) { + // Acceleration phase + dist = (f_s * tau) + (0.5f * accel_P * sq(tau)); // (mm) Distance traveled for acceleration phase + accel_k = accel_P; // (mm/s^2) Acceleration K factor from Accel phase + } + else if (makeVector_idx >= N1 && makeVector_idx < (N1 + N2)) { + // Coasting phase + dist = s_1e + F_P * (tau - N1 * (FTM_TS)); // (mm) Distance traveled for coasting phase + //accel_k = 0.0f; + } + else { + // Deceleration phase + const float tau_ = tau - (N1 + N2) * (FTM_TS); // (s) Time since start of decel phase + dist = s_2e + F_P * tau_ + 0.5f * decel_P * sq(tau_); // (mm) Distance traveled for deceleration phase + accel_k = decel_P; // (mm/s^2) Acceleration K factor from Decel phase + } + + TERN_(HAS_X_AXIS, xd[makeVector_batchIdx] = x_startPosn + x_Ratio * dist); // (mm) X position for this datapoint + TERN_(HAS_Y_AXIS, yd[makeVector_batchIdx] = y_startPosn + y_Ratio * dist); // (mm) Y + TERN_(HAS_Z_AXIS, zd[makeVector_batchIdx] = z_startPosn + z_Ratio * dist); // (mm) Z + + #if HAS_EXTRUDERS + const float new_raw_z1 = e_startPosn + e_Ratio * dist; + if (cfg_linearAdvEna) { + float dedt_adj = (new_raw_z1 - e_raw_z1) * (FTM_FS); + if (e_Ratio > 0.0f) dedt_adj += accel_k * cfg_linearAdvK; + + e_advanced_z1 += dedt_adj * (FTM_TS); + ed[makeVector_batchIdx] = e_advanced_z1; + + e_raw_z1 = new_raw_z1; + } + else { + ed[makeVector_batchIdx] = new_raw_z1; + // Alternatively: coordArray_e[makeVector_batchIdx] = e_startDist + extrusion / (N1 + N2 + N3); + } + #endif + + // Update shaping parameters if needed. + #if HAS_Z_AXIS + static float zd_z1 = 0.0f; + #endif + switch (cfg_dynFreqMode) { + + #if HAS_Z_AXIS + case dynFreqMode_Z_BASED: + if (zd[makeVector_batchIdx] != zd_z1) { // Only update if Z changed. + const float xf = cfg_baseFreq[0] + cfg_dynFreqK[0] * zd[makeVector_batchIdx], + yf = cfg_baseFreq[1] + cfg_dynFreqK[1] * zd[makeVector_batchIdx]; + updateShapingN(_MAX(xf, FTM_MIN_SHAPE_FREQ), _MAX(yf, FTM_MIN_SHAPE_FREQ)); + zd_z1 = zd[makeVector_batchIdx]; + } + break; + #endif + + #if HAS_X_AXIS && HAS_EXTRUDERS + case dynFreqMode_MASS_BASED: + // Update constantly. The optimization done for Z value makes + // less sense for E, as E is expected to constantly change. + updateShapingN( cfg_baseFreq[0] + cfg_dynFreqK[0] * ed[makeVector_batchIdx] + OPTARG(HAS_Y_AXIS, cfg_baseFreq[1] + cfg_dynFreqK[1] * ed[makeVector_batchIdx]) ); + break; + #endif + + default: break; + } + + // Apply shaping if in mode. + #if HAS_X_AXIS + if (WITHIN(cfg_mode, 10U, 19U)) { + xd_zi[xy_zi_idx] = xd[makeVector_batchIdx]; + xd[makeVector_batchIdx] *= x_Ai[0]; + #if HAS_Y_AXIS + yd_zi[xy_zi_idx] = yd[makeVector_batchIdx]; + yd[makeVector_batchIdx] *= y_Ai[0]; + #endif + for (uint32_t i = 1U; i <= xy_max_i; i++) { + const uint32_t udiffx = xy_zi_idx - x_Ni[i]; + xd[makeVector_batchIdx] += x_Ai[i] * xd_zi[x_Ni[i] > xy_zi_idx ? (FTM_ZMAX) + udiffx : udiffx]; + #if HAS_Y_AXIS + const uint32_t udiffy = xy_zi_idx - y_Ni[i]; + yd[makeVector_batchIdx] += y_Ai[i] * yd_zi[y_Ni[i] > xy_zi_idx ? (FTM_ZMAX) + udiffy : udiffy]; + #endif + } + if (++xy_zi_idx == (FTM_ZMAX)) xy_zi_idx = 0; + } + #endif + + // Filled up the queue with regular and shaped steps + if (++makeVector_batchIdx == 2 * (FTM_BATCH_SIZE)) { + makeVector_batchIdx = FTM_BATCH_SIZE; + batchRdy = true; + } + + if (makeVector_idx == max_intervals) { + blockProcDn = true; + blockProcRdy = false; + makeVector_idx = 0; + } + else + makeVector_idx++; +} + +// Interpolates single data point to stepper commands. +void FxdTiCtrl::convertToSteps(const uint32_t idx) { + #if HAS_X_AXIS + int32_t x_err_P = 0; + #endif + #if HAS_Y_AXIS + int32_t y_err_P = 0; + #endif + #if HAS_Z_AXIS + int32_t z_err_P = 0; + #endif + #if HAS_EXTRUDERS + int32_t e_err_P = 0; + #endif + + //#define STEPS_ROUNDING + #if ENABLED(STEPS_ROUNDING) + #if HAS_X_AXIS + const float x_steps_tar = xm[idx] * planner.settings.axis_steps_per_mm[X_AXIS] + (xm[idx] < 0.0f ? -0.5f : 0.5f); // May be eliminated if guaranteed positive. + const int32_t x_delta = int32_t(x_steps_tar) - x_steps; + #endif + #if HAS_Y_AXIS + const float y_steps_tar = ym[idx] * planner.settings.axis_steps_per_mm[Y_AXIS] + (ym[idx] < 0.0f ? -0.5f : 0.5f); + const int32_t y_delta = int32_t(y_steps_tar) - y_steps; + #endif + #if HAS_Z_AXIS + const float z_steps_tar = zm[idx] * planner.settings.axis_steps_per_mm[Z_AXIS] + (zm[idx] < 0.0f ? -0.5f : 0.5f); + const int32_t z_delta = int32_t(z_steps_tar) - z_steps; + #endif + #if HAS_EXTRUDERS + const float e_steps_tar = em[idx] * planner.settings.axis_steps_per_mm[E_AXIS] + (em[idx] < 0.0f ? -0.5f : 0.5f); + const int32_t e_delta = int32_t(e_steps_tar) - e_steps; + #endif + #else + #if HAS_X_AXIS + const int32_t x_delta = int32_t(xm[idx] * planner.settings.axis_steps_per_mm[X_AXIS]) - x_steps; + #endif + #if HAS_Y_AXIS + const int32_t y_delta = int32_t(ym[idx] * planner.settings.axis_steps_per_mm[Y_AXIS]) - y_steps; + #endif + #if HAS_Z_AXIS + const int32_t z_delta = int32_t(zm[idx] * planner.settings.axis_steps_per_mm[Z_AXIS]) - z_steps; + #endif + #if HAS_EXTRUDERS + const int32_t e_delta = int32_t(em[idx] * planner.settings.axis_steps_per_mm[E_AXIS]) - e_steps; + #endif + #endif + + bool any_dirChange = (false + || TERN0(HAS_X_AXIS, (x_delta > 0 && x_dirState != stepDirState_POS) || (x_delta < 0 && x_dirState != stepDirState_NEG)) + || TERN0(HAS_Y_AXIS, (y_delta > 0 && y_dirState != stepDirState_POS) || (y_delta < 0 && y_dirState != stepDirState_NEG)) + || TERN0(HAS_Z_AXIS, (z_delta > 0 && z_dirState != stepDirState_POS) || (z_delta < 0 && z_dirState != stepDirState_NEG)) + || TERN0(HAS_EXTRUDERS, (e_delta > 0 && e_dirState != stepDirState_POS) || (e_delta < 0 && e_dirState != stepDirState_NEG)) + ); + + for (uint32_t i = 0U; i < (FTM_STEPS_PER_UNIT_TIME); i++) { + + // TODO: (?) Since the *delta variables will not change, + // the comparison may be done once before iterating at + // expense of storage and lines of code. + + bool anyStep = false; + + stepperCmdBuff[stepperCmdBuff_produceIdx] = 0; + + // Commands are written in the format: + // |X_step|X_direction|Y_step|Y_direction|Z_step|Z_direction|E_step|E_direction| + #if HAS_X_AXIS + if (x_delta >= 0) { + if ((x_err_P + x_delta) < (FTM_CTS_COMPARE_VAL)) { + x_err_P += x_delta; + } + else { + x_steps++; + stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_X) | _BV(FT_BIT_STEP_X); + x_err_P += x_delta - (FTM_STEPS_PER_UNIT_TIME); + anyStep = true; + } + } + else { + if ((x_err_P + x_delta) > -(FTM_CTS_COMPARE_VAL)) { + x_err_P += x_delta; + } + else { + x_steps--; + stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_STEP_X); + x_err_P += x_delta + (FTM_STEPS_PER_UNIT_TIME); + anyStep = true; + } + } + #endif // HAS_X_AXIS + + #if HAS_Y_AXIS + if (y_delta >= 0) { + if ((y_err_P + y_delta) < (FTM_CTS_COMPARE_VAL)) { + y_err_P += y_delta; + } + else { + y_steps++; + stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_Y) | _BV(FT_BIT_STEP_Y); + y_err_P += y_delta - (FTM_STEPS_PER_UNIT_TIME); + anyStep = true; + } + } + else { + if ((y_err_P + y_delta) > -(FTM_CTS_COMPARE_VAL)) { + y_err_P += y_delta; + } + else { + y_steps--; + stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_STEP_Y); + y_err_P += y_delta + (FTM_STEPS_PER_UNIT_TIME); + anyStep = true; + } + } + #endif // HAS_Y_AXIS + + #if HAS_Z_AXIS + if (z_delta >= 0) { + if ((z_err_P + z_delta) < (FTM_CTS_COMPARE_VAL)) { + z_err_P += z_delta; + } + else { + z_steps++; + stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_Z) | _BV(FT_BIT_STEP_Z); + z_err_P += z_delta - (FTM_STEPS_PER_UNIT_TIME); + anyStep = true; + } + } + else { + if ((z_err_P + z_delta) > -(FTM_CTS_COMPARE_VAL)) { + z_err_P += z_delta; + } + else { + z_steps--; + stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_STEP_Z); + z_err_P += z_delta + (FTM_STEPS_PER_UNIT_TIME); + anyStep = true; + } + } + #endif // HAS_Z_AXIS + + #if HAS_EXTRUDERS + if (e_delta >= 0) { + if ((e_err_P + e_delta) < (FTM_CTS_COMPARE_VAL)) { + e_err_P += e_delta; + } + else { + e_steps++; + stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_E) | _BV(FT_BIT_STEP_E); + e_err_P += e_delta - (FTM_STEPS_PER_UNIT_TIME); + anyStep = true; + } + } + else { + if ((e_err_P + e_delta) > -(FTM_CTS_COMPARE_VAL)) { + e_err_P += e_delta; + } + else { + e_steps--; + stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_STEP_E); + e_err_P += e_delta + (FTM_STEPS_PER_UNIT_TIME); + anyStep = true; + } + } + #endif // HAS_EXTRUDERS + + if (!anyStep) { + nextStepTicks += (FTM_MIN_TICKS); + } + else { + stepperCmdBuff_StepRelativeTi[stepperCmdBuff_produceIdx] = nextStepTicks; + + const uint8_t dir_index = stepperCmdBuff_produceIdx >> 3, + dir_bit = stepperCmdBuff_produceIdx & 0x7; + if (any_dirChange) { + SBI(stepperCmdBuff_ApplyDir[dir_index], dir_bit); + #if HAS_X_AXIS + if (x_delta > 0) { + stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_X); + x_dirState = stepDirState_POS; + } + else { + x_dirState = stepDirState_NEG; + } + #endif + + #if HAS_Y_AXIS + if (y_delta > 0) { + stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_Y); + y_dirState = stepDirState_POS; + } + else { + y_dirState = stepDirState_NEG; + } + #endif + + #if HAS_Z_AXIS + if (z_delta > 0) { + stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_Z); + z_dirState = stepDirState_POS; + } + else { + z_dirState = stepDirState_NEG; + } + #endif + + #if HAS_EXTRUDERS + if (e_delta > 0) { + stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_E); + e_dirState = stepDirState_POS; + } + else { + e_dirState = stepDirState_NEG; + } + #endif + + any_dirChange = false; + } + else { // ...no direction change. + CBI(stepperCmdBuff_ApplyDir[dir_index], dir_bit); + } + + if (stepperCmdBuff_produceIdx == (FTM_STEPPERCMD_BUFF_SIZE) - 1) { + stepperCmdBuff_produceIdx = 0; + } + else { + stepperCmdBuff_produceIdx++; + } + + nextStepTicks = FTM_MIN_TICKS; + } + } // FTM_STEPS_PER_UNIT_TIME loop +} + +#endif // FT_MOTION diff --git a/Marlin/src/module/ft_motion.h b/Marlin/src/module/ft_motion.h new file mode 100644 index 0000000000..2794608bf9 --- /dev/null +++ b/Marlin/src/module/ft_motion.h @@ -0,0 +1,170 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "../inc/MarlinConfigPre.h" // Access the top level configurations. +#include "../module/planner.h" // Access block type from planner. + +#include "ft_types.h" + +#define FTM_STEPPERCMD_DIR_SIZE ((FTM_STEPPERCMD_BUFF_SIZE + 7) / 8) + +class FxdTiCtrl { + + public: + + // Public variables + static ftMotionMode_t cfg_mode; // Mode / active compensation mode configuration. + static bool cfg_linearAdvEna; // Linear advance enable configuration. + static float cfg_linearAdvK; // Linear advance gain. + static dynFreqMode_t cfg_dynFreqMode; // Dynamic frequency mode configuration. + + #if HAS_X_AXIS + static float cfg_baseFreq[1 + ENABLED(HAS_Y_AXIS)]; // Base frequency. [Hz] + static float cfg_dynFreqK[1 + ENABLED(HAS_Y_AXIS)]; // Scaling / gain for dynamic frequency. [Hz/mm] or [Hz/g] + #endif + + static uint8_t stepperCmdBuff[FTM_STEPPERCMD_BUFF_SIZE]; // Buffer of stepper commands. + static hal_timer_t stepperCmdBuff_StepRelativeTi[FTM_STEPPERCMD_BUFF_SIZE]; // Buffer of the stepper command timing. + static uint8_t stepperCmdBuff_ApplyDir[FTM_STEPPERCMD_DIR_SIZE]; // Buffer of whether DIR needs to be updated. + static uint32_t stepperCmdBuff_produceIdx, // Index of next stepper command write to the buffer. + stepperCmdBuff_consumeIdx; // Index of next stepper command read from the buffer. + + static bool sts_stepperBusy; // The stepper buffer has items and is in use. + + + // Public methods + static void startBlockProc(block_t * const current_block); // Set controller states to begin processing a block. + static bool getBlockProcDn() { return blockProcDn; } // Return true if the controller no longer needs the current block. + static void runoutBlock(); // Move any free data points to the stepper buffer even if a full batch isn't ready. + static void loop(); // Controller main, to be invoked from non-isr task. + + + #if HAS_X_AXIS + // Refresh the gains used by shaping functions. + // To be called on init or mode or zeta change. + static void updateShapingA(const_float_t zeta=FTM_SHAPING_ZETA, const_float_t vtol=FTM_SHAPING_V_TOL); + + // Refresh the indices used by shaping functions. + // To be called when frequencies change. + static void updateShapingN(const_float_t xf OPTARG(HAS_Y_AXIS, const_float_t yf), const_float_t zeta=FTM_SHAPING_ZETA); + #endif + + static void reset(); // Resets all states of the fixed time conversion to defaults. + + private: + + #if HAS_X_AXIS + static float xd[2 * (FTM_BATCH_SIZE)], xm[FTM_BATCH_SIZE]; + #endif + #if HAS_Y_AXIS + static float yd[2 * (FTM_BATCH_SIZE)], ym[FTM_BATCH_SIZE]; + #endif + #if HAS_Z_AXIS + static float zd[2 * (FTM_BATCH_SIZE)], zm[FTM_BATCH_SIZE]; + #endif + #if HAS_EXTRUDERS + static float ed[2 * (FTM_BATCH_SIZE)], em[FTM_BATCH_SIZE]; + #endif + + static block_t *current_block_cpy; + static bool blockProcRdy, blockProcRdy_z1, blockProcDn; + static bool batchRdy, batchRdyForInterp; + static bool runoutEna; + + // Trapezoid data variables. + #if HAS_X_AXIS + static float x_startPosn, x_endPosn_prevBlock, x_Ratio; + #endif + #if HAS_Y_AXIS + static float y_startPosn, y_endPosn_prevBlock, y_Ratio; + #endif + #if HAS_Z_AXIS + static float z_startPosn, z_endPosn_prevBlock, z_Ratio; + #endif + #if HAS_EXTRUDERS + static float e_startPosn, e_endPosn_prevBlock, e_Ratio; + #endif + static float accel_P, decel_P, + F_P, + f_s, + s_1e, + s_2e; + + static uint32_t N1, N2, N3; + static uint32_t max_intervals; + + // Make vector variables. + static uint32_t makeVector_idx, + makeVector_idx_z1, + makeVector_batchIdx; + + // Interpolation variables. + static uint32_t interpIdx, + interpIdx_z1; + #if HAS_X_AXIS + static int32_t x_steps; + static stepDirState_t x_dirState; + #endif + #if HAS_Y_AXIS + static int32_t y_steps; + static stepDirState_t y_dirState; + #endif + #if HAS_Z_AXIS + static int32_t z_steps; + static stepDirState_t z_dirState; + #endif + #if HAS_EXTRUDERS + static int32_t e_steps; + static stepDirState_t e_dirState; + #endif + + static hal_timer_t nextStepTicks; + + // Shaping variables. + #if HAS_X_AXIS + static uint32_t xy_zi_idx, xy_max_i; + static float xd_zi[FTM_ZMAX]; + static float x_Ai[5]; + static uint32_t x_Ni[5]; + #endif + #if HAS_Y_AXIS + static float yd_zi[FTM_ZMAX]; + static float y_Ai[5]; + static uint32_t y_Ni[5]; + #endif + + // Linear advance variables. + #if HAS_EXTRUDERS + static float e_raw_z1, e_advanced_z1; + #endif + + // Private methods + static uint32_t stepperCmdBuffItems(); + static void init(); + static void loadBlockData(block_t * const current_block); + static void makeVector(); + static void convertToSteps(const uint32_t idx); + +}; // class fxdTiCtrl + +extern FxdTiCtrl fxdTiCtrl; diff --git a/Marlin/src/module/ft_types.h b/Marlin/src/module/ft_types.h new file mode 100644 index 0000000000..613e177a39 --- /dev/null +++ b/Marlin/src/module/ft_types.h @@ -0,0 +1,59 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "../core/types.h" + +typedef enum FXDTICtrlMode : uint8_t { + ftMotionMode_DISABLED = 0U, + ftMotionMode_ENABLED = 1U, + ftMotionMode_ULENDO_FBS = 2U, + ftMotionMode_ZV = 10U, + ftMotionMode_ZVD = 11U, + ftMotionMode_EI = 12U, + ftMotionMode_2HEI = 13U, + ftMotionMode_3HEI = 14U, + ftMotionMode_MZV = 15U, + ftMotionMode_DISCTF = 20U +} ftMotionMode_t; + +enum dynFreqMode_t : uint8_t { + dynFreqMode_DISABLED = 0U, + dynFreqMode_Z_BASED = 1U, + dynFreqMode_MASS_BASED = 2U +}; + +enum stepDirState_t { + stepDirState_NOT_SET = 0U, + stepDirState_POS = 1U, + stepDirState_NEG = 2U +}; + +enum { + FT_BIT_DIR_E, FT_BIT_STEP_E, + FT_BIT_DIR_Z, FT_BIT_STEP_Z, + FT_BIT_DIR_Y, FT_BIT_STEP_Y, + FT_BIT_DIR_X, FT_BIT_STEP_X, + FT_BIT_COUNT +}; + +typedef bits_t(FT_BIT_COUNT) ft_command_t; diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 552d212e2e..dadb22fbde 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -69,6 +69,9 @@ #include "stepper.h" #include "motion.h" #include "temperature.h" +#if ENABLED(FT_MOTION) + #include "ft_motion.h" +#endif #include "../lcd/marlinui.h" #include "../gcode/parser.h" @@ -112,7 +115,8 @@ // Delay for delivery of first block to the stepper ISR, if the queue contains 2 or // fewer movements. The delay is measured in milliseconds, and must be less than 250ms -#define BLOCK_DELAY_FOR_1ST_MOVE 100 +#define BLOCK_DELAY_NONE 0U +#define BLOCK_DELAY_FOR_1ST_MOVE 100U Planner planner; @@ -127,7 +131,7 @@ volatile uint8_t Planner::block_buffer_head, // Index of the next block to be Planner::block_buffer_planned, // Index of the optimally planned block Planner::block_buffer_tail; // Index of the busy block, if any uint16_t Planner::cleaning_buffer_counter; // A counter to disable queuing of blocks -uint8_t Planner::delay_before_delivering; // This counter delays delivery of blocks when queue becomes empty to allow the opportunity of merging blocks +uint8_t Planner::delay_before_delivering; // Delay block delivery so initial blocks in an empty queue may merge planner_settings_t Planner::settings; // Initialized by settings.load() @@ -225,6 +229,10 @@ float Planner::previous_nominal_speed; int32_t Planner::xy_freq_min_interval_us = LROUND(1000000.0f / (XY_FREQUENCY_LIMIT)); #endif +#if ENABLED(FT_MOTION) + bool Planner::fxdTiCtrl_busy = false; +#endif + #if ENABLED(LIN_ADVANCE) float Planner::extruder_advance_K[DISTINCT_E]; // Initialized by settings.load() #endif @@ -1683,7 +1691,8 @@ void Planner::quick_stop() { // Restart the block delay for the first movement - As the queue was // forced to empty, there's no risk the ISR will touch this. - delay_before_delivering = BLOCK_DELAY_FOR_1ST_MOVE; + + delay_before_delivering = TERN_(FT_MOTION, fxdTiCtrl.cfg_mode ? BLOCK_DELAY_NONE :) BLOCK_DELAY_FOR_1ST_MOVE; TERN_(HAS_WIRED_LCD, clear_block_buffer_runtime()); // Clear the accumulated runtime @@ -1729,6 +1738,7 @@ bool Planner::busy() { return (has_blocks_queued() || cleaning_buffer_counter || TERN0(EXTERNAL_CLOSED_LOOP_CONTROLLER, CLOSED_LOOP_WAITING()) || TERN0(HAS_ZV_SHAPING, stepper.input_shaping_busy()) + || TERN0(FT_MOTION, fxdTiCtrl_busy) ); } @@ -1841,7 +1851,7 @@ bool Planner::_buffer_steps(const xyze_long_t &target // As there are no queued movements, the Stepper ISR will not touch this // variable, so there is no risk setting this here (but it MUST be done // before the following line!!) - delay_before_delivering = BLOCK_DELAY_FOR_1ST_MOVE; + delay_before_delivering = TERN_(FT_MOTION, fxdTiCtrl.cfg_mode ? BLOCK_DELAY_NONE :) BLOCK_DELAY_FOR_1ST_MOVE; } // Move buffer head @@ -2945,7 +2955,7 @@ void Planner::buffer_sync_block(const BlockFlagBit sync_flag/*=BLOCK_BIT_SYNC_PO // As there are no queued movements, the Stepper ISR will not touch this // variable, so there is no risk setting this here (but it MUST be done // before the following line!!) - delay_before_delivering = BLOCK_DELAY_FOR_1ST_MOVE; + delay_before_delivering = TERN_(FT_MOTION, fxdTiCtrl.cfg_mode ? BLOCK_DELAY_NONE :) BLOCK_DELAY_FOR_1ST_MOVE; } block_buffer_head = next_buffer_head; @@ -3243,7 +3253,7 @@ bool Planner::buffer_line(const xyze_pos_t &cart, const_feedRate_t fr_mm_s // As there are no queued movements, the Stepper ISR will not touch this // variable, so there is no risk setting this here (but it MUST be done // before the following line!!) - delay_before_delivering = BLOCK_DELAY_FOR_1ST_MOVE; + delay_before_delivering = TERN_(FT_MOTION, fxdTiCtrl.cfg_mode ? BLOCK_DELAY_NONE :) BLOCK_DELAY_FOR_1ST_MOVE; } // Move buffer head diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index ccf6ba08d3..e2d1d6739c 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -512,6 +512,10 @@ class Planner { } #endif + #if ENABLED(FT_MOTION) + static bool fxdTiCtrl_busy; + #endif + private: /** diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 34a5ca28a3..1062a778d8 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -91,6 +91,10 @@ Stepper stepper; // Singleton #include "planner.h" #include "motion.h" +#if ENABLED(FT_MOTION) + #include "ft_motion.h" +#endif + #include "../lcd/marlinui.h" #include "../gcode/queue.h" #include "../sd/cardreader.h" @@ -1488,63 +1492,133 @@ void Stepper::isr() { // Limit the amount of iterations uint8_t max_loops = 10; + #if ENABLED(FT_MOTION) + static bool fxdTiCtrl_stepCmdRdy = false; // Indicates a step command was loaded from the + // buffers and is ready to be output. + static bool fxdTiCtrl_applyDir = false; // Indicates the DIR output should be set. + static ft_command_t fxdTiCtrl_stepCmd = 0U; // Storage for the step command to be output. + static uint32_t fxdTiCtrl_nextAuxISR = 0U; // Storage for the next ISR of the auxilliary tasks. + #endif + // We need this variable here to be able to use it in the following loop hal_timer_t min_ticks; do { // Enable ISRs to reduce USART processing latency hal.isr_on(); - TERN_(HAS_ZV_SHAPING, shaping_isr()); // Do Shaper stepping, if needed + hal_timer_t interval; - if (!nextMainISR) pulse_phase_isr(); // 0 = Do coordinated axes Stepper pulses + #if ENABLED(FT_MOTION) - #if ENABLED(LIN_ADVANCE) - if (!nextAdvanceISR) { // 0 = Do Linear Advance E Stepper pulses - advance_isr(); - nextAdvanceISR = la_interval; + // NOTE STEPPER_TIMER_RATE is equal to 2000000, not what VSCode shows + const bool using_fxtictrl = fxdTiCtrl.cfg_mode; + if (using_fxtictrl) { + if (!nextMainISR) { + if (abort_current_block) { + fxdTiCtrl_stepCmdRdy = false; // If a command was ready, cancel it. + fxdTiCtrl.sts_stepperBusy = false; // Set busy false to allow a reset. + nextMainISR = 0.01f * (STEPPER_TIMER_RATE); // Come back in 10 msec. + } + else { // !(abort_current_block) + if (fxdTiCtrl_stepCmdRdy) { + fxdTiCtrl_stepper(fxdTiCtrl_applyDir, fxdTiCtrl_stepCmd); + fxdTiCtrl_stepCmdRdy = false; + } + // Check if there is data in the buffers. + if (fxdTiCtrl.stepperCmdBuff_produceIdx != fxdTiCtrl.stepperCmdBuff_consumeIdx) { + + fxdTiCtrl.sts_stepperBusy = true; + + // "Pop" one command from the command buffer. + fxdTiCtrl_stepCmd = fxdTiCtrl.stepperCmdBuff[fxdTiCtrl.stepperCmdBuff_consumeIdx]; + const uint8_t dir_index = fxdTiCtrl.stepperCmdBuff_consumeIdx >> 3, + dir_bit = fxdTiCtrl.stepperCmdBuff_consumeIdx & 0x7; + fxdTiCtrl_applyDir = TEST(fxdTiCtrl.stepperCmdBuff_ApplyDir[dir_index], dir_bit); + nextMainISR = fxdTiCtrl.stepperCmdBuff_StepRelativeTi[fxdTiCtrl.stepperCmdBuff_consumeIdx]; + fxdTiCtrl_stepCmdRdy = true; + + if (++fxdTiCtrl.stepperCmdBuff_consumeIdx == (FTM_STEPPERCMD_BUFF_SIZE)) + fxdTiCtrl.stepperCmdBuff_consumeIdx = 0; + + } + else { // Buffer empty. + fxdTiCtrl.sts_stepperBusy = false; + nextMainISR = 0.01f * (STEPPER_TIMER_RATE); // Come back in 10 msec. + } + } // !(abort_current_block) + } // if (!nextMainISR) + + // Define 2.5 msec task for auxilliary functions. + if (!fxdTiCtrl_nextAuxISR) { + endstops.update(); + TERN_(INTEGRATED_BABYSTEPPING, if (babystep.has_steps()) babystepping_isr()); + fxdTiCtrl_refreshAxisDidMove(); + fxdTiCtrl_nextAuxISR = 0.0025f * (STEPPER_TIMER_RATE); + } + + interval = _MIN(nextMainISR, fxdTiCtrl_nextAuxISR); + nextMainISR -= interval; + fxdTiCtrl_nextAuxISR -= interval; } - else if (nextAdvanceISR == LA_ADV_NEVER) // Start LA steps if necessary - nextAdvanceISR = la_interval; + + #else + + constexpr bool using_fxtictrl = false; + #endif - #if ENABLED(INTEGRATED_BABYSTEPPING) - const bool is_babystep = (nextBabystepISR == 0); // 0 = Do Babystepping (XY)Z pulses - if (is_babystep) nextBabystepISR = babystepping_isr(); - #endif + if (!using_fxtictrl) { - // ^== Time critical. NOTHING besides pulse generation should be above here!!! + TERN_(HAS_ZV_SHAPING, shaping_isr()); // Do Shaper stepping, if needed - if (!nextMainISR) nextMainISR = block_phase_isr(); // Manage acc/deceleration, get next block + if (!nextMainISR) pulse_phase_isr(); // 0 = Do coordinated axes Stepper pulses - #if ENABLED(INTEGRATED_BABYSTEPPING) - if (is_babystep) // Avoid ANY stepping too soon after baby-stepping - NOLESS(nextMainISR, (BABYSTEP_TICKS) / 8); // FULL STOP for 125µs after a baby-step + #if ENABLED(LIN_ADVANCE) + if (!nextAdvanceISR) { // 0 = Do Linear Advance E Stepper pulses + advance_isr(); + nextAdvanceISR = la_interval; + } + else if (nextAdvanceISR == LA_ADV_NEVER) // Start LA steps if necessary + nextAdvanceISR = la_interval; + #endif - if (nextBabystepISR != BABYSTEP_NEVER) // Avoid baby-stepping too close to axis Stepping - NOLESS(nextBabystepISR, nextMainISR / 2); // TODO: Only look at axes enabled for baby-stepping - #endif + #if ENABLED(INTEGRATED_BABYSTEPPING) + const bool is_babystep = (nextBabystepISR == 0); // 0 = Do Babystepping (XY)Z pulses + if (is_babystep) nextBabystepISR = babystepping_isr(); + #endif - // Get the interval to the next ISR call - const hal_timer_t interval = _MIN( - hal_timer_t(HAL_TIMER_TYPE_MAX), // Come back in a very long time - nextMainISR // Time until the next Pulse / Block phase - OPTARG(INPUT_SHAPING_X, ShapingQueue::peek_x()) // Time until next input shaping echo for X - OPTARG(INPUT_SHAPING_Y, ShapingQueue::peek_y()) // Time until next input shaping echo for Y - OPTARG(LIN_ADVANCE, nextAdvanceISR) // Come back early for Linear Advance? - OPTARG(INTEGRATED_BABYSTEPPING, nextBabystepISR) // Come back early for Babystepping? - ); + // ^== Time critical. NOTHING besides pulse generation should be above here!!! - // - // Compute remaining time for each ISR phase - // NEVER : The phase is idle - // Zero : The phase will occur on the next ISR call - // Non-zero : The phase will occur on a future ISR call - // + if (!nextMainISR) nextMainISR = block_phase_isr(); // Manage acc/deceleration, get next block - nextMainISR -= interval; - TERN_(HAS_ZV_SHAPING, ShapingQueue::decrement_delays(interval)); - TERN_(LIN_ADVANCE, if (nextAdvanceISR != LA_ADV_NEVER) nextAdvanceISR -= interval); - TERN_(INTEGRATED_BABYSTEPPING, if (nextBabystepISR != BABYSTEP_NEVER) nextBabystepISR -= interval); + #if ENABLED(INTEGRATED_BABYSTEPPING) + if (is_babystep) // Avoid ANY stepping too soon after baby-stepping + NOLESS(nextMainISR, (BABYSTEP_TICKS) / 8); // FULL STOP for 125µs after a baby-step + + if (nextBabystepISR != BABYSTEP_NEVER) // Avoid baby-stepping too close to axis Stepping + NOLESS(nextBabystepISR, nextMainISR / 2); // TODO: Only look at axes enabled for baby-stepping + #endif + + // Get the interval to the next ISR call + interval = _MIN(nextMainISR, uint32_t(HAL_TIMER_TYPE_MAX)); // Time until the next Pulse / Block phase + TERN_(INPUT_SHAPING_X, NOMORE(interval, ShapingQueue::peek_x())); // Time until next input shaping echo for X + TERN_(INPUT_SHAPING_Y, NOMORE(interval, ShapingQueue::peek_y())); // Time until next input shaping echo for Y + TERN_(LIN_ADVANCE, NOMORE(interval, nextAdvanceISR)); // Come back early for Linear Advance? + TERN_(INTEGRATED_BABYSTEPPING, NOMORE(interval, nextBabystepISR)); // Come back early for Babystepping? + + // + // Compute remaining time for each ISR phase + // NEVER : The phase is idle + // Zero : The phase will occur on the next ISR call + // Non-zero : The phase will occur on a future ISR call + // + + nextMainISR -= interval; + TERN_(HAS_ZV_SHAPING, ShapingQueue::decrement_delays(interval)); + TERN_(LIN_ADVANCE, if (nextAdvanceISR != LA_ADV_NEVER) nextAdvanceISR -= interval); + TERN_(INTEGRATED_BABYSTEPPING, if (nextBabystepISR != BABYSTEP_NEVER) nextBabystepISR -= interval); + + } // standard motion control /** * This needs to avoid a race-condition caused by interleaving @@ -1978,7 +2052,7 @@ void Stepper::pulse_phase_isr() { #if ENABLED(MIXING_EXTRUDER) if (step_needed.e) { - count_position[E_AXIS] += count_direction[E_AXIS]; + count_position.e += count_direction.e; E_STEP_WRITE(mixer.get_next_stepper(), STEP_STATE_E); } #elif HAS_E0_STEP @@ -3381,6 +3455,127 @@ void Stepper::report_positions() { report_a_position(pos); } +#if ENABLED(FT_MOTION) + + // Set stepper I/O for fixed time controller. + void Stepper::fxdTiCtrl_stepper(const bool applyDir, const ft_command_t command) { + + USING_TIMED_PULSE(); + + #if HAS_Z_AXIS + // Z is handled differently to update the stepper + // counts (needed by Marlin for bed level probing). + const bool z_dir = !TEST(command, FT_BIT_DIR_Z), + z_step = TEST(command, FT_BIT_STEP_Z); + #endif + + if (applyDir) { + X_DIR_WRITE(TEST(command, FT_BIT_DIR_X)); + TERN_(HAS_Y_AXIS, Y_DIR_WRITE(TEST(command, FT_BIT_DIR_Y))); + TERN_(HAS_Z_AXIS, Z_DIR_WRITE(z_dir)); + TERN_(HAS_EXTRUDERS, E0_DIR_WRITE(TEST(command, FT_BIT_DIR_E))); + DIR_WAIT_AFTER(); + } + + X_STEP_WRITE(TEST(command, FT_BIT_STEP_X)); + TERN_(HAS_Y_AXIS, Y_STEP_WRITE(TEST(command, FT_BIT_STEP_Y))); + TERN_(HAS_Z_AXIS, Z_STEP_WRITE(z_step)); + TERN_(HAS_EXTRUDERS, E0_STEP_WRITE(TEST(command, FT_BIT_STEP_E))); + + START_TIMED_PULSE(); + + #if HAS_Z_AXIS + // Update step counts + if (z_step) count_position.z += z_dir ? -1 : 1; + #endif + + AWAIT_HIGH_PULSE(); + + X_STEP_WRITE(0); + TERN_(HAS_Y_AXIS, Y_STEP_WRITE(0)); + TERN_(HAS_Z_AXIS, Z_STEP_WRITE(0)); + TERN_(HAS_EXTRUDERS, E0_STEP_WRITE(0)); + + } // Stepper::fxdTiCtrl_stepper + + void Stepper::fxdTiCtrl_BlockQueueUpdate() { + + if (current_block) { + // If the current block is not done processing, return right away + if (!fxdTiCtrl.getBlockProcDn()) return; + + axis_did_move = 0; + current_block = nullptr; + discard_current_block(); + } + + if (!current_block) { // No current block + + // Check the buffer for a new block + current_block = planner.get_current_block(); + + if (current_block) { + // Sync block? Sync the stepper counts and return + while (current_block->is_sync()) { + if (!(current_block->is_fan_sync() || current_block->is_pwr_sync())) _set_position(current_block->position); + discard_current_block(); + + // Try to get a new block + if (!(current_block = planner.get_current_block())) + return; // No more queued movements!image.png + } + + // this is needed by motor_direction() and subsequently bed leveling (somehow) + // update it here, even though it will may be out of sync with step commands + last_direction_bits = current_block->direction_bits; + + fxdTiCtrl.startBlockProc(current_block); + + } + else { + fxdTiCtrl.runoutBlock(); + return; // No queued blocks + } + + } // if (!current_block) + + } // Stepper::fxdTiCtrl_BlockQueueUpdate() + + // Debounces the axis move indication to account for potential + // delay between the block information and the stepper commands + void Stepper::fxdTiCtrl_refreshAxisDidMove() { + + // Set the debounce time in seconds. + #define AXIS_DID_MOVE_DEB 5 // TODO: The debounce time should be calculated if possible, + // or the set conditions should be changed from the block to + // the motion trajectory or motor commands. + + uint8_t axis_bits = 0U; + + static uint32_t a_debounce = 0U; + if (!!current_block->steps.a) a_debounce = (AXIS_DID_MOVE_DEB) * 400; // divide by 0.0025f + if (a_debounce) { SBI(axis_bits, A_AXIS); a_debounce--; } + #if HAS_Y_AXIS + static uint32_t b_debounce = 0U; + if (!!current_block->steps.b) b_debounce = (AXIS_DID_MOVE_DEB) * 400; + if (b_debounce) { SBI(axis_bits, B_AXIS); b_debounce--; } + #endif + #if HAS_Z_AXIS + static uint32_t c_debounce = 0U; + if (!!current_block->steps.c) c_debounce = (AXIS_DID_MOVE_DEB) * 400; + if (c_debounce) { SBI(axis_bits, C_AXIS); c_debounce--; } + #endif + #if HAS_EXTRUDERS + static uint32_t e_debounce = 0U; + if (!!current_block->steps.e) e_debounce = (AXIS_DID_MOVE_DEB) * 400; + if (e_debounce) { SBI(axis_bits, E_AXIS); e_debounce--; } + #endif + + axis_did_move = axis_bits; + } + +#endif // FT_MOTION + #if ENABLED(BABYSTEPPING) #define _ENABLE_AXIS(A) enable_axis(_AXIS(A)) diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 4adbb01991..4c54a5dbf9 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -49,6 +49,10 @@ #include "stepper/speed_lookuptable.h" #endif +#if ENABLED(FT_MOTION) + #include "ft_types.h" +#endif + // // Estimate the amount of time the Stepper ISR will take to execute // @@ -470,6 +474,7 @@ constexpr ena_mask_t enable_overlap[] = { // class Stepper { friend class Max7219; + friend class FxdTiCtrl; friend void stepperTask(void *); public: @@ -817,6 +822,11 @@ class Stepper { set_directions(); } + #if ENABLED(FT_MOTION) + // Manage the planner + static void fxdTiCtrl_BlockQueueUpdate(); + #endif + #if HAS_ZV_SHAPING static void set_shaping_damping_ratio(const AxisEnum axis, const_float_t zeta); static float get_shaping_damping_ratio(const AxisEnum axis); @@ -848,6 +858,11 @@ class Stepper { static void microstep_init(); #endif + #if ENABLED(FT_MOTION) + static void fxdTiCtrl_stepper(const bool applyDir, const ft_command_t command); + static void fxdTiCtrl_refreshAxisDidMove(); + #endif + }; extern Stepper stepper; diff --git a/buildroot/tests/STM32F103RC_btt b/buildroot/tests/STM32F103RC_btt index 16419cbfa2..95a18c615f 100755 --- a/buildroot/tests/STM32F103RC_btt +++ b/buildroot/tests/STM32F103RC_btt @@ -12,8 +12,8 @@ set -e restore_configs opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V1_0 SERIAL_PORT 1 SERIAL_PORT_2 -1 \ X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2209 Z_DRIVER_TYPE TMC2209 E0_DRIVER_TYPE TMC2209 -opt_enable PINS_DEBUGGING Z_IDLE_HEIGHT -exec_test $1 $2 "BigTreeTech SKR Mini E3 1.0 - Basic Config with TMC2209 HW Serial" "$3" +opt_enable PINS_DEBUGGING Z_IDLE_HEIGHT FT_MOTION +exec_test $1 $2 "BigTreeTech SKR Mini E3 1.0 - TMC2209 HW Serial, FT_MOTION" "$3" # clean up restore_configs diff --git a/ini/features.ini b/ini/features.ini index 4e378a8eaf..d8ba74f2db 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -186,6 +186,7 @@ AIR_EVACUATION = src_filter=+ SERVO_DETACH_GCODE = src_filter=+ HAS_DUPLICATION_MODE = src_filter=+ +FT_MOTION = src_filter=+ + LIN_ADVANCE = src_filter=+ PHOTO_GCODE = src_filter=+ CONTROLLER_FAN_EDITABLE = src_filter=+ diff --git a/platformio.ini b/platformio.ini index 9fbc589d2e..3478dcc1fb 100644 --- a/platformio.ini +++ b/platformio.ini @@ -192,6 +192,7 @@ default_src_filter = + - - + - - - + - - - - - From 06d9a2ff8f4364c13dc12e36b91399de54136097 Mon Sep 17 00:00:00 2001 From: Eduard Sukharev Date: Sat, 1 Apr 2023 05:45:53 +0300 Subject: [PATCH 217/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Long=20FIlename=20?= =?UTF-8?q?lookup=20(#25598)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_post.h | 5 +++-- Marlin/src/inc/SanityCheck.h | 4 ++-- Marlin/src/inc/Warnings.cpp | 2 +- Marlin/src/sd/SdBaseFile.cpp | 7 ++++--- Marlin/src/sd/SdFatConfig.h | 2 +- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index d45abc558a..4bbb43a216 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -3262,10 +3262,11 @@ // Number of VFAT entries used. Each entry has 13 UTF-16 characters #if ANY(SCROLL_LONG_FILENAMES, HAS_DWIN_E3V2, TFT_COLOR_UI) - #define MAX_VFAT_ENTRIES 5 + #define VFAT_ENTRIES_LIMIT 5 #else - #define MAX_VFAT_ENTRIES 2 + #define VFAT_ENTRIES_LIMIT 2 #endif +#define MAX_VFAT_ENTRIES 20 // by VFAT specs to fit LFN of length 255 // Nozzle park for Delta #if BOTH(NOZZLE_PARK_FEATURE, DELTA) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index f718846bff..ce657f24a6 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1048,9 +1048,9 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #if ENABLED(SDSORT_CACHE_NAMES) && DISABLED(SDSORT_DYNAMIC_RAM) #if SDSORT_CACHE_VFATS < 2 #error "SDSORT_CACHE_VFATS must be 2 or greater!" - #elif SDSORT_CACHE_VFATS > MAX_VFAT_ENTRIES + #elif SDSORT_CACHE_VFATS > VFAT_ENTRIES_LIMIT #undef SDSORT_CACHE_VFATS - #define SDSORT_CACHE_VFATS MAX_VFAT_ENTRIES + #define SDSORT_CACHE_VFATS VFAT_ENTRIES_LIMIT #define SDSORT_CACHE_VFATS_WARNING 1 #endif #endif diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 0204c3fab0..82aadf7d77 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -810,7 +810,7 @@ #endif #if SDSORT_CACHE_VFATS_WARNING - #warning "SDSORT_CACHE_VFATS has been reduced to MAX_VFAT_ENTRIES." + #warning "SDSORT_CACHE_VFATS has been reduced to VFAT_ENTRIES_LIMIT." #endif #if SDSORT_CACHE_LPC1768_WARNING #warning "SDCARD_SORT_ALPHA sub-options overridden for LPC1768 with DOGM LCD SCK overlap." diff --git a/Marlin/src/sd/SdBaseFile.cpp b/Marlin/src/sd/SdBaseFile.cpp index 72cdcb9268..818f0dcb37 100644 --- a/Marlin/src/sd/SdBaseFile.cpp +++ b/Marlin/src/sd/SdBaseFile.cpp @@ -1003,7 +1003,8 @@ bool SdBaseFile::openNext(SdBaseFile *dirFile, uint8_t oflag) { bool SdBaseFile::isDirLFN(const dir_t* dir) { if (DIR_IS_LONG_NAME(dir)) { vfat_t *VFAT = (vfat_t*)dir; - // Sanity-check the VFAT entry. The first cluster is always set to zero. And the sequence number should be higher than 0 + // Sanity-check the VFAT entry. The first cluster is always set to zero. + // The sequence number should be higher than 0 and lower than maximum allowed by VFAT spec if ((VFAT->firstClusterLow == 0) && WITHIN((VFAT->sequenceNumber & 0x1F), 1, MAX_VFAT_ENTRIES)) return true; } return false; @@ -1463,7 +1464,7 @@ int8_t SdBaseFile::readDir(dir_t *dir, char * const longFilename) { // Sanity-check the VFAT entry. The first cluster is always set to zero. And the sequence number should be higher than 0 if (VFAT->firstClusterLow == 0) { const uint8_t seq = VFAT->sequenceNumber & 0x1F; - if (WITHIN(seq, 1, MAX_VFAT_ENTRIES)) { + if (WITHIN(seq, 1, VFAT_ENTRIES_LIMIT)) { if (seq == 1) { checksum = VFAT->checksum; checksum_error = 0; @@ -1627,7 +1628,7 @@ bool SdBaseFile::remove() { // Check if the entry has a LFN bool lastEntry = false; // loop back to search for any LFN entries related to this file - LOOP_S_LE_N(sequenceNumber, 1, MAX_VFAT_ENTRIES) { + LOOP_S_LE_N(sequenceNumber, 1, VFAT_ENTRIES_LIMIT) { dirIndex_ = (dirIndex_ - 1) & 0xF; if (dirBlock_ == 0) break; if (dirIndex_ == 0xF) dirBlock_--; diff --git a/Marlin/src/sd/SdFatConfig.h b/Marlin/src/sd/SdFatConfig.h index dfba641295..0979a592a3 100644 --- a/Marlin/src/sd/SdFatConfig.h +++ b/Marlin/src/sd/SdFatConfig.h @@ -109,4 +109,4 @@ #define LONG_FILENAME_CHARSIZE TERN(UTF_FILENAME_SUPPORT, 2, 1) // Total bytes needed to store a single long filename -#define LONG_FILENAME_LENGTH (FILENAME_LENGTH * LONG_FILENAME_CHARSIZE * MAX_VFAT_ENTRIES + 1) +#define LONG_FILENAME_LENGTH (FILENAME_LENGTH * LONG_FILENAME_CHARSIZE * VFAT_ENTRIES_LIMIT + 1) From 1be2a7e4c17b8e19fade64ed32e101a65f9e8c32 Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Sat, 1 Apr 2023 06:19:48 +0200 Subject: [PATCH 218/659] =?UTF-8?q?=F0=9F=8C=90=20Update=20Italian=20langu?= =?UTF-8?q?age=20(#25587)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/language/language_it.h | 30 ++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index ad6668112f..fb9178c67e 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -371,7 +371,7 @@ namespace Language_it { LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Verif.perdita calore"); LSTR MSG_MPC_HEATING_PAST_200 = _UxGT("Riscalda a >200C"); LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Raffredda a amb."); - LSTR MSG_MPC_AUTOTUNE = _UxGT("MPC Autotune"); + LSTR MSG_MPC_AUTOTUNE = _UxGT("Calibra MPC"); LSTR MSG_MPC_EDIT = _UxGT("Modif.MPC *"); LSTR MSG_MPC_POWER = _UxGT("Potenza riscald."); LSTR MSG_MPC_POWER_E = _UxGT("Potenza *"); @@ -610,9 +610,9 @@ namespace Language_it { LSTR MSG_HALTED = _UxGT("STAMPANTE FERMATA"); LSTR MSG_PLEASE_WAIT = _UxGT("Attendere prego..."); LSTR MSG_PLEASE_RESET = _UxGT("Riavviare prego"); - LSTR MSG_PREHEATING = _UxGT("Preriscaldam..."); + LSTR MSG_PREHEATING = _UxGT("Preriscaldamento..."); LSTR MSG_HEATING = _UxGT("Riscaldamento..."); - LSTR MSG_COOLING = _UxGT("Raffreddamento.."); + LSTR MSG_COOLING = _UxGT("Raffreddamento..."); LSTR MSG_BED_HEATING = _UxGT("Risc. piatto..."); LSTR MSG_BED_COOLING = _UxGT("Raffr. piatto..."); LSTR MSG_PROBE_HEATING = _UxGT("Risc. sonda..."); @@ -849,4 +849,28 @@ namespace Language_it { LSTR MSG_USB_DISK = _UxGT("Disco USB"); LSTR MSG_HOST_SHUTDOWN = _UxGT("Arresta host"); + +// DGUS-Specific message strings, not used elsewhere + LSTR DGUS_MSG_NOT_WHILE_PRINTING = _UxGT("Non ammesso durante la stampa"); + LSTR DGUS_MSG_NOT_WHILE_IDLE = _UxGT("Non ammesso mentre è in riposo"); + LSTR DGUS_MSG_NO_FILE_SELECTED = _UxGT("Nessun file selezionato"); + LSTR DGUS_MSG_TEMP_TOO_LOW = _UxGT("Temperatura troppo bassa"); + LSTR DGUS_MSG_EXECUTING_COMMAND = _UxGT("Esecuzione del comando..."); + LSTR DGUS_MSG_BED_PID_DISABLED = _UxGT("PID letto disabilitato"); + LSTR DGUS_MSG_PID_DISABLED = _UxGT("PID disabilitato"); + LSTR DGUS_MSG_PID_AUTOTUNING = _UxGT("Calibrazione PID..."); + LSTR DGUS_MSG_INVALID_RECOVERY_DATA = _UxGT("Dati di recupero non validi"); + + LSTR DGUS_MSG_HOMING_REQUIRED = _UxGT("Azzeramento richiesto"); + LSTR DGUS_MSG_BUSY = _UxGT("Occupato"); + LSTR DGUS_MSG_HOMING = _UxGT("Azzeramento..."); + LSTR DGUS_MSG_FW_OUTDATED = _UxGT("Richiesto aggiornamento DWIN GUI/OS"); + LSTR DGUS_MSG_ABL_REQUIRED = _UxGT("Richiesto autolivellamento letto"); + LSTR DGUS_MSG_PROBING_FAILED = _UxGT("Sondaggio fallito"); + LSTR DGUS_MSG_PROBING_SUCCESS = _UxGT("Sondaggio effettuato"); + LSTR DGUS_MSG_RESET_EEPROM = _UxGT("Reset EEPROM"); + LSTR DGUS_MSG_WRITE_EEPROM_FAILED = _UxGT("Scrittura EEPROM fallita"); + LSTR DGUS_MSG_READ_EEPROM_FAILED = _UxGT("Lettura EEPROM fallita"); + LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Filament runout E%d"); + } From c47189a9d94508d78ebf22b0d96a311a1dde8690 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 1 Apr 2023 02:16:48 -0500 Subject: [PATCH 219/659] =?UTF-8?q?=F0=9F=94=A8=20Move=20Docker=20local=20?= =?UTF-8?q?test=20script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25583 --- Makefile | 2 +- {scripts => buildroot/share/scripts}/get_test_targets.py | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename {scripts => buildroot/share/scripts}/get_test_targets.py (100%) diff --git a/Makefile b/Makefile index ad5c320c20..2a18c0b4e8 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -SCRIPTS_DIR := scripts +SCRIPTS_DIR := buildroot/share/scripts CONTAINER_RT_BIN := docker CONTAINER_RT_OPTS := --rm -v $(PWD):/code -v platformio-cache:/root/.platformio CONTAINER_IMAGE := marlin-dev diff --git a/scripts/get_test_targets.py b/buildroot/share/scripts/get_test_targets.py similarity index 100% rename from scripts/get_test_targets.py rename to buildroot/share/scripts/get_test_targets.py From c25a6737c6845c75474891203447101c06bace81 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 1 Apr 2023 16:51:15 -0500 Subject: [PATCH 220/659] =?UTF-8?q?=F0=9F=A9=B9=20FT=5FMOTION=20Followup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/STM32/pinsDebug.h | 4 +++- Marlin/src/module/ft_motion.h | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Marlin/src/HAL/STM32/pinsDebug.h b/Marlin/src/HAL/STM32/pinsDebug.h index 29a4e003f9..b12d621e98 100644 --- a/Marlin/src/HAL/STM32/pinsDebug.h +++ b/Marlin/src/HAL/STM32/pinsDebug.h @@ -111,7 +111,9 @@ const XrefInfo pin_xref[] PROGMEM = { #if NUM_ANALOG_FIRST >= NUM_DIGITAL_PINS #define HAS_HIGH_ANALOG_PINS 1 #endif -#define NUM_ANALOG_LAST ((NUM_ANALOG_FIRST) + (NUM_ANALOG_INPUTS) - 1) +#ifndef NUM_ANALOG_LAST + #define NUM_ANALOG_LAST ((NUM_ANALOG_FIRST) + (NUM_ANALOG_INPUTS) - 1) +#endif #define NUMBER_PINS_TOTAL ((NUM_DIGITAL_PINS) + TERN0(HAS_HIGH_ANALOG_PINS, NUM_ANALOG_INPUTS)) #define VALID_PIN(P) (WITHIN(P, 0, (NUM_DIGITAL_PINS) - 1) || TERN0(HAS_HIGH_ANALOG_PINS, WITHIN(P, NUM_ANALOG_FIRST, NUM_ANALOG_LAST))) #define digitalRead_mod(Ard_num) extDigitalRead(Ard_num) // must use Arduino pin numbers when doing reads diff --git a/Marlin/src/module/ft_motion.h b/Marlin/src/module/ft_motion.h index 2794608bf9..6c5b6bf03b 100644 --- a/Marlin/src/module/ft_motion.h +++ b/Marlin/src/module/ft_motion.h @@ -43,7 +43,7 @@ class FxdTiCtrl { static float cfg_dynFreqK[1 + ENABLED(HAS_Y_AXIS)]; // Scaling / gain for dynamic frequency. [Hz/mm] or [Hz/g] #endif - static uint8_t stepperCmdBuff[FTM_STEPPERCMD_BUFF_SIZE]; // Buffer of stepper commands. + static ft_command_t stepperCmdBuff[FTM_STEPPERCMD_BUFF_SIZE]; // Buffer of stepper commands. static hal_timer_t stepperCmdBuff_StepRelativeTi[FTM_STEPPERCMD_BUFF_SIZE]; // Buffer of the stepper command timing. static uint8_t stepperCmdBuff_ApplyDir[FTM_STEPPERCMD_DIR_SIZE]; // Buffer of whether DIR needs to be updated. static uint32_t stepperCmdBuff_produceIdx, // Index of next stepper command write to the buffer. From 80839cf020b32971b4cb63f96a803c4fe19ce828 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 4 Apr 2023 20:46:46 -0500 Subject: [PATCH 221/659] =?UTF-8?q?=F0=9F=90=9B=20Ensure=20root=20for=20'M?= =?UTF-8?q?503=20C'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/eeprom/M500-M504.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/gcode/eeprom/M500-M504.cpp b/Marlin/src/gcode/eeprom/M500-M504.cpp index 412d003355..6da1d1cbd7 100644 --- a/Marlin/src/gcode/eeprom/M500-M504.cpp +++ b/Marlin/src/gcode/eeprom/M500-M504.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfig.h" #if ENABLED(CONFIGURATION_EMBEDDING) - #include "../../sd/SdBaseFile.h" + #include "../../sd/cardreader.h" #include "../../mczip.h" #endif @@ -69,7 +69,7 @@ void GcodeSuite::M502() { SdBaseFile file; const uint16_t size = sizeof(mc_zip); // Need to create the config size on the SD card - if (file.open("mc.zip", O_WRITE|O_CREAT) && file.write(pgm_read_ptr(mc_zip), size) != -1 && file.close()) + if (file.open(card.getroot(), "mc.zip", O_WRITE|O_CREAT) && file.write(pgm_read_ptr(mc_zip), size) != -1 && file.close()) SERIAL_ECHO_MSG("Configuration saved as 'mc.zip'"); } #endif From e687490f41036e85d604618bf4c6246526759b54 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 4 Apr 2023 21:52:26 -0500 Subject: [PATCH 222/659] =?UTF-8?q?=F0=9F=90=9B=20Clean=20up=20DELTA=20bab?= =?UTF-8?q?ystep=20Z?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.cpp | 72 ----------------------------------- 1 file changed, 72 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 1062a778d8..f40afc6191 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -3732,24 +3732,6 @@ void Stepper::report_positions() { #ifdef Z_DIR_WRITE Z_DIR_WRITE(ENABLED(INVERT_Z_DIR) ^ z_direction); #endif - #ifdef I_DIR_WRITE - I_DIR_WRITE(ENABLED(INVERT_I_DIR) ^ z_direction); - #endif - #ifdef J_DIR_WRITE - J_DIR_WRITE(ENABLED(INVERT_J_DIR) ^ z_direction); - #endif - #ifdef K_DIR_WRITE - K_DIR_WRITE(ENABLED(INVERT_K_DIR) ^ z_direction); - #endif - #ifdef U_DIR_WRITE - U_DIR_WRITE(ENABLED(INVERT_U_DIR) ^ z_direction); - #endif - #ifdef V_DIR_WRITE - V_DIR_WRITE(ENABLED(INVERT_V_DIR) ^ z_direction); - #endif - #ifdef W_DIR_WRITE - W_DIR_WRITE(ENABLED(INVERT_W_DIR) ^ z_direction); - #endif DIR_WAIT_AFTER(); @@ -3762,24 +3744,6 @@ void Stepper::report_positions() { #ifdef Z_STEP_WRITE Z_STEP_WRITE(STEP_STATE_Z); #endif - #ifdef I_STEP_WRITE - I_STEP_WRITE(STEP_STATE_I); - #endif - #ifdef J_STEP_WRITE - J_STEP_WRITE(STEP_STATE_J); - #endif - #ifdef K_STEP_WRITE - K_STEP_WRITE(STEP_STATE_K); - #endif - #ifdef U_STEP_WRITE - U_STEP_WRITE(STEP_STATE_U); - #endif - #ifdef V_STEP_WRITE - V_STEP_WRITE(STEP_STATE_V); - #endif - #ifdef W_STEP_WRITE - W_STEP_WRITE(STEP_STATE_W); - #endif _PULSE_WAIT(); @@ -3790,24 +3754,6 @@ void Stepper::report_positions() { #ifdef Z_STEP_WRITE Z_STEP_WRITE(!STEP_STATE_Z); #endif - #ifdef I_STEP_WRITE - I_STEP_WRITE(!STEP_STATE_I); - #endif - #ifdef J_STEP_WRITE - J_STEP_WRITE(!STEP_STATE_J); - #endif - #ifdef K_STEP_WRITE - K_STEP_WRITE(!STEP_STATE_K); - #endif - #ifdef U_STEP_WRITE - U_STEP_WRITE(!STEP_STATE_U); - #endif - #ifdef V_STEP_WRITE - V_STEP_WRITE(!STEP_STATE_V); - #endif - #ifdef W_STEP_WRITE - W_STEP_WRITE(!STEP_STATE_W); - #endif // Restore direction bits EXTRA_DIR_WAIT_BEFORE(); @@ -3819,24 +3765,6 @@ void Stepper::report_positions() { #ifdef Z_DIR_WRITE Z_DIR_WRITE(old_dir.z); #endif - #ifdef I_DIR_WRITE - I_DIR_WRITE(old_dir.i); - #endif - #ifdef J_DIR_WRITE - J_DIR_WRITE(old_dir.j); - #endif - #ifdef K_DIR_WRITE - K_DIR_WRITE(old_dir.k); - #endif - #ifdef U_DIR_WRITE - U_DIR_WRITE(old_dir.u); - #endif - #ifdef V_DIR_WRITE - V_DIR_WRITE(old_dir.v); - #endif - #ifdef W_DIR_WRITE - W_DIR_WRITE(old_dir.w); - #endif EXTRA_DIR_WAIT_AFTER(); From 4aec74f2465a14b2660a2c28e1da39f1013cb521 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 5 Apr 2023 11:58:24 -0500 Subject: [PATCH 223/659] =?UTF-8?q?=F0=9F=90=9B=20INVERT=5F*=5FDIR=20for?= =?UTF-8?q?=20FT=5FMOTION=20(#25637)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bedlevel/bdl/bdl.cpp | 2 +- Marlin/src/module/motion.cpp | 36 ++-- Marlin/src/module/stepper.cpp | 73 ++++---- Marlin/src/module/stepper/indirection.h | 210 ++++++++++-------------- 4 files changed, 150 insertions(+), 171 deletions(-) diff --git a/Marlin/src/feature/bedlevel/bdl/bdl.cpp b/Marlin/src/feature/bedlevel/bdl/bdl.cpp index 1a27011a4b..e729022f21 100644 --- a/Marlin/src/feature/bedlevel/bdl/bdl.cpp +++ b/Marlin/src/feature/bedlevel/bdl/bdl.cpp @@ -109,7 +109,7 @@ void BDS_Leveling::process() { #endif } else { - babystep.set_mm(Z_AXIS, 0); //if (old_cur_z <= cur_z) Z_DIR_WRITE(!INVERT_Z_DIR); + babystep.set_mm(Z_AXIS, 0); //if (old_cur_z <= cur_z) Z_DIR_WRITE(INVERT_DIR(Z, HIGH)); stepper.set_directions(); } #endif diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 61cbef068e..4e4c174bd8 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -1952,72 +1952,72 @@ void prepare_line_to_destination() { case X_AXIS: phasePerUStep = PHASE_PER_MICROSTEP(X); phaseCurrent = stepperX.get_microstep_counter(); - effectorBackoutDir = -X_HOME_DIR; - stepperBackoutDir = IF_DISABLED(INVERT_X_DIR, -)effectorBackoutDir; + effectorBackoutDir = -(X_HOME_DIR); + stepperBackoutDir = TERN_(INVERT_X_DIR, -)(-effectorBackoutDir); break; #endif #ifdef Y_MICROSTEPS case Y_AXIS: phasePerUStep = PHASE_PER_MICROSTEP(Y); phaseCurrent = stepperY.get_microstep_counter(); - effectorBackoutDir = -Y_HOME_DIR; - stepperBackoutDir = IF_DISABLED(INVERT_Y_DIR, -)effectorBackoutDir; + effectorBackoutDir = -(Y_HOME_DIR); + stepperBackoutDir = TERN_(INVERT_Y_DIR, -)(-effectorBackoutDir); break; #endif #ifdef Z_MICROSTEPS case Z_AXIS: phasePerUStep = PHASE_PER_MICROSTEP(Z); phaseCurrent = stepperZ.get_microstep_counter(); - effectorBackoutDir = -Z_HOME_DIR; - stepperBackoutDir = IF_DISABLED(INVERT_Z_DIR, -)effectorBackoutDir; + effectorBackoutDir = -(Z_HOME_DIR); + stepperBackoutDir = TERN_(INVERT_Z_DIR, -)(-effectorBackoutDir); break; #endif #ifdef I_MICROSTEPS case I_AXIS: phasePerUStep = PHASE_PER_MICROSTEP(I); phaseCurrent = stepperI.get_microstep_counter(); - effectorBackoutDir = -I_HOME_DIR; - stepperBackoutDir = IF_DISABLED(INVERT_I_DIR, -)effectorBackoutDir; + effectorBackoutDir = -(I_HOME_DIR); + stepperBackoutDir = TERN_(INVERT_I_DIR, -)(-effectorBackoutDir); break; #endif #ifdef J_MICROSTEPS case J_AXIS: phasePerUStep = PHASE_PER_MICROSTEP(J); phaseCurrent = stepperJ.get_microstep_counter(); - effectorBackoutDir = -J_HOME_DIR; - stepperBackoutDir = IF_DISABLED(INVERT_J_DIR, -)effectorBackoutDir; + effectorBackoutDir = -(J_HOME_DIR); + stepperBackoutDir = TERN_(INVERT_J_DIR, -)(-effectorBackoutDir); break; #endif #ifdef K_MICROSTEPS case K_AXIS: phasePerUStep = PHASE_PER_MICROSTEP(K); phaseCurrent = stepperK.get_microstep_counter(); - effectorBackoutDir = -K_HOME_DIR; - stepperBackoutDir = IF_DISABLED(INVERT_K_DIR, -)effectorBackoutDir; + effectorBackoutDir = -(K_HOME_DIR); + stepperBackoutDir = TERN_(INVERT_K_DIR, -)(-effectorBackoutDir); break; #endif #ifdef U_MICROSTEPS case U_AXIS: phasePerUStep = PHASE_PER_MICROSTEP(U); phaseCurrent = stepperU.get_microstep_counter(); - effectorBackoutDir = -U_HOME_DIR; - stepperBackoutDir = IF_DISABLED(INVERT_U_DIR, -)effectorBackoutDir; + effectorBackoutDir = -(U_HOME_DIR); + stepperBackoutDir = TERN_(INVERT_U_DIR, -)(-effectorBackoutDir); break; #endif #ifdef V_MICROSTEPS case V_AXIS: phasePerUStep = PHASE_PER_MICROSTEP(V); phaseCurrent = stepperV.get_microstep_counter(); - effectorBackoutDir = -V_HOME_DIR; - stepperBackoutDir = IF_DISABLED(INVERT_V_DIR, -)effectorBackoutDir; + effectorBackoutDir = -(V_HOME_DIR); + stepperBackoutDir = TERN_(INVERT_V_DIR, -)(-effectorBackoutDir); break; #endif #ifdef W_MICROSTEPS case W_AXIS: phasePerUStep = PHASE_PER_MICROSTEP(W); phaseCurrent = stepperW.get_microstep_counter(); - effectorBackoutDir = -W_HOME_DIR; - stepperBackoutDir = IF_DISABLED(INVERT_W_DIR, -)effectorBackoutDir; + effectorBackoutDir = -(W_HOME_DIR); + stepperBackoutDir = TERN_(INVERT_W_DIR, -)(-effectorBackoutDir); break; #endif default: return; diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index f40afc6191..cc353b42e2 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -382,7 +382,7 @@ xyze_int8_t Stepper::count_direction{0}; } #if HAS_DUAL_X_STEPPERS - #define X_APPLY_DIR(v,Q) do{ X_DIR_WRITE(v); X2_DIR_WRITE((v) ^ ENABLED(INVERT_X2_VS_X_DIR)); }while(0) + #define X_APPLY_DIR(v,Q) do{ X_DIR_WRITE(v); X2_DIR_WRITE(INVERT_DIR(X2_VS_X, v)); }while(0) #if ENABLED(X_DUAL_ENDSTOPS) #define X_APPLY_STEP(v,Q) DUAL_ENDSTOP_APPLY_STEP(X,v) #else @@ -403,7 +403,7 @@ xyze_int8_t Stepper::count_direction{0}; #endif #if HAS_DUAL_Y_STEPPERS - #define Y_APPLY_DIR(v,Q) do{ Y_DIR_WRITE(v); Y2_DIR_WRITE((v) ^ ENABLED(INVERT_Y2_VS_Y_DIR)); }while(0) + #define Y_APPLY_DIR(v,Q) do{ Y_DIR_WRITE(v); Y2_DIR_WRITE(INVERT_DIR(Y2_VS_Y, v)); }while(0) #if ENABLED(Y_DUAL_ENDSTOPS) #define Y_APPLY_STEP(v,Q) DUAL_ENDSTOP_APPLY_STEP(Y,v) #else @@ -416,8 +416,8 @@ xyze_int8_t Stepper::count_direction{0}; #if NUM_Z_STEPPERS == 4 #define Z_APPLY_DIR(v,Q) do{ \ - Z_DIR_WRITE(v); Z2_DIR_WRITE((v) ^ ENABLED(INVERT_Z2_VS_Z_DIR)); \ - Z3_DIR_WRITE((v) ^ ENABLED(INVERT_Z3_VS_Z_DIR)); Z4_DIR_WRITE((v) ^ ENABLED(INVERT_Z4_VS_Z_DIR)); \ + Z_DIR_WRITE(v); Z2_DIR_WRITE(INVERT_DIR(Z2_VS_Z, v)); \ + Z3_DIR_WRITE(INVERT_DIR(Z3_VS_Z, v)); Z4_DIR_WRITE(INVERT_DIR(Z4_VS_Z, v)); \ }while(0) #if ENABLED(Z_MULTI_ENDSTOPS) #define Z_APPLY_STEP(v,Q) QUAD_ENDSTOP_APPLY_STEP(Z,v) @@ -428,7 +428,7 @@ xyze_int8_t Stepper::count_direction{0}; #endif #elif NUM_Z_STEPPERS == 3 #define Z_APPLY_DIR(v,Q) do{ \ - Z_DIR_WRITE(v); Z2_DIR_WRITE((v) ^ ENABLED(INVERT_Z2_VS_Z_DIR)); Z3_DIR_WRITE((v) ^ ENABLED(INVERT_Z3_VS_Z_DIR)); \ + Z_DIR_WRITE(v); Z2_DIR_WRITE(INVERT_DIR(Z2_VS_Z, v)); Z3_DIR_WRITE(INVERT_DIR(Z3_VS_Z, v)); \ }while(0) #if ENABLED(Z_MULTI_ENDSTOPS) #define Z_APPLY_STEP(v,Q) TRIPLE_ENDSTOP_APPLY_STEP(Z,v) @@ -438,7 +438,7 @@ xyze_int8_t Stepper::count_direction{0}; #define Z_APPLY_STEP(v,Q) do{ Z_STEP_WRITE(v); Z2_STEP_WRITE(v); Z3_STEP_WRITE(v); }while(0) #endif #elif NUM_Z_STEPPERS == 2 - #define Z_APPLY_DIR(v,Q) do{ Z_DIR_WRITE(v); Z2_DIR_WRITE((v) ^ ENABLED(INVERT_Z2_VS_Z_DIR)); }while(0) + #define Z_APPLY_DIR(v,Q) do{ Z_DIR_WRITE(v); Z2_DIR_WRITE(INVERT_DIR(Z2_VS_Z, v)); }while(0) #if ENABLED(Z_MULTI_ENDSTOPS) #define Z_APPLY_STEP(v,Q) DUAL_ENDSTOP_APPLY_STEP(Z,v) #elif ENABLED(Z_STEPPER_AUTO_ALIGN) @@ -3470,14 +3470,14 @@ void Stepper::report_positions() { #endif if (applyDir) { - X_DIR_WRITE(TEST(command, FT_BIT_DIR_X)); - TERN_(HAS_Y_AXIS, Y_DIR_WRITE(TEST(command, FT_BIT_DIR_Y))); - TERN_(HAS_Z_AXIS, Z_DIR_WRITE(z_dir)); - TERN_(HAS_EXTRUDERS, E0_DIR_WRITE(TEST(command, FT_BIT_DIR_E))); + TERN_(HAS_X_AXIS, X_DIR_WRITE(INVERT_DIR(X, TEST(command, FT_BIT_DIR_X)))); + TERN_(HAS_Y_AXIS, Y_DIR_WRITE(INVERT_DIR(Y, TEST(command, FT_BIT_DIR_Y)))); + TERN_(HAS_Z_AXIS, Z_DIR_WRITE(INVERT_DIR(Z, z_dir))); + TERN_(HAS_EXTRUDERS, E0_DIR_WRITE(INVERT_DIR(E0, TEST(command, FT_BIT_DIR_E)))); DIR_WAIT_AFTER(); } - X_STEP_WRITE(TEST(command, FT_BIT_STEP_X)); + TERN_(HAS_X_AXIS, X_STEP_WRITE(TEST(command, FT_BIT_STEP_X))); TERN_(HAS_Y_AXIS, Y_STEP_WRITE(TEST(command, FT_BIT_STEP_Y))); TERN_(HAS_Z_AXIS, Z_STEP_WRITE(z_step)); TERN_(HAS_EXTRUDERS, E0_STEP_WRITE(TEST(command, FT_BIT_STEP_E))); @@ -3580,7 +3580,6 @@ void Stepper::report_positions() { #define _ENABLE_AXIS(A) enable_axis(_AXIS(A)) #define _READ_DIR(AXIS) AXIS ##_DIR_READ() - #define _INVERT_DIR(AXIS) ENABLED(INVERT_## AXIS ##_DIR) #define _APPLY_DIR(AXIS, INVERT) AXIS ##_APPLY_DIR(INVERT, true) #if MINIMUM_STEPPER_PULSE @@ -3627,19 +3626,19 @@ void Stepper::report_positions() { #if DISABLED(DELTA) - #define BABYSTEP_AXIS(AXIS, INV, DIR) do{ \ - const uint8_t old_dir = _READ_DIR(AXIS); \ - _ENABLE_AXIS(AXIS); \ - DIR_WAIT_BEFORE(); \ - _APPLY_DIR(AXIS, _INVERT_DIR(AXIS)^DIR^INV); \ - DIR_WAIT_AFTER(); \ - _SAVE_START(); \ - _APPLY_STEP(AXIS, _STEP_STATE(AXIS), true); \ - _PULSE_WAIT(); \ - _APPLY_STEP(AXIS, !_STEP_STATE(AXIS), true); \ - EXTRA_DIR_WAIT_BEFORE(); \ - _APPLY_DIR(AXIS, old_dir); \ - EXTRA_DIR_WAIT_AFTER(); \ + #define BABYSTEP_AXIS(AXIS, INV, DIR) do{ \ + const uint8_t old_dir = _READ_DIR(AXIS); \ + _ENABLE_AXIS(AXIS); \ + DIR_WAIT_BEFORE(); \ + _APPLY_DIR(AXIS, INVERT_DIR(AXIS, (DIR)^(INV))); \ + DIR_WAIT_AFTER(); \ + _SAVE_START(); \ + _APPLY_STEP(AXIS, _STEP_STATE(AXIS), true); \ + _PULSE_WAIT(); \ + _APPLY_STEP(AXIS, !_STEP_STATE(AXIS), true); \ + EXTRA_DIR_WAIT_BEFORE(); \ + _APPLY_DIR(AXIS, old_dir); \ + EXTRA_DIR_WAIT_AFTER(); \ }while(0) #endif @@ -3650,8 +3649,8 @@ void Stepper::report_positions() { const xy_byte_t old_dir = { _READ_DIR(A), _READ_DIR(B) }; \ _ENABLE_AXIS(A); _ENABLE_AXIS(B); \ DIR_WAIT_BEFORE(); \ - _APPLY_DIR(A, _INVERT_DIR(A)^DIR^INV); \ - _APPLY_DIR(B, _INVERT_DIR(B)^DIR^INV^ALT); \ + _APPLY_DIR(A, INVERT_DIR(A, (DIR)^(INV)); \ + _APPLY_DIR(B, INVERT_DIR(B, (DIR)^(INV)^(ALT)); \ DIR_WAIT_AFTER(); \ _SAVE_START(); \ _APPLY_STEP(A, _STEP_STATE(A), true); \ @@ -3725,19 +3724,23 @@ void Stepper::report_positions() { U_DIR_READ(), V_DIR_READ(), W_DIR_READ() ); - X_DIR_WRITE(ENABLED(INVERT_X_DIR) ^ z_direction); + #ifdef X_DIR_WRITE + X_DIR_WRITE(INVERT_DIR(X, z_direction)); + #endif #ifdef Y_DIR_WRITE - Y_DIR_WRITE(ENABLED(INVERT_Y_DIR) ^ z_direction); + Y_DIR_WRITE(INVERT_DIR(Y, z_direction)); #endif #ifdef Z_DIR_WRITE - Z_DIR_WRITE(ENABLED(INVERT_Z_DIR) ^ z_direction); + Z_DIR_WRITE(INVERT_DIR(Z, z_direction)); #endif DIR_WAIT_AFTER(); _SAVE_START(); - X_STEP_WRITE(STEP_STATE_X); + #ifdef X_STEP_WRITE + X_STEP_WRITE(STEP_STATE_X); + #endif #ifdef Y_STEP_WRITE Y_STEP_WRITE(STEP_STATE_Y); #endif @@ -3747,7 +3750,9 @@ void Stepper::report_positions() { _PULSE_WAIT(); - X_STEP_WRITE(!STEP_STATE_X); + #ifdef X_STEP_WRITE + X_STEP_WRITE(!STEP_STATE_X); + #endif #ifdef Y_STEP_WRITE Y_STEP_WRITE(!STEP_STATE_Y); #endif @@ -3758,7 +3763,9 @@ void Stepper::report_positions() { // Restore direction bits EXTRA_DIR_WAIT_BEFORE(); - X_DIR_WRITE(old_dir.x); + #ifdef X_DIR_WRITE + X_DIR_WRITE(old_dir.x); + #endif #ifdef Y_DIR_WRITE Y_DIR_WRITE(old_dir.y); #endif diff --git a/Marlin/src/module/stepper/indirection.h b/Marlin/src/module/stepper/indirection.h index 81a1377cef..806826b7fc 100644 --- a/Marlin/src/module/stepper/indirection.h +++ b/Marlin/src/module/stepper/indirection.h @@ -451,6 +451,8 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #define E7_STEP_READ() bool(READ(E7_STEP_PIN)) +#define INVERT_DIR(AXIS, D) (TERN_(INVERT_## AXIS ##_DIR, !)(D)) + /** * Extruder indirection for the single E axis */ @@ -458,91 +460,91 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #if EXTRUDERS > 7 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else if (E < 6) { E2_STEP_WRITE(V); } else { E3_STEP_WRITE(V); } }while(0) #define NORM_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; case 1: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; \ - case 2: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; case 3: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; \ - case 4: E2_DIR_WRITE(DISABLED(INVERT_E2_DIR)); break; case 5: E2_DIR_WRITE( ENABLED(INVERT_E2_DIR)); break; \ - case 6: E3_DIR_WRITE( ENABLED(INVERT_E3_DIR)); break; case 7: E3_DIR_WRITE( ENABLED(INVERT_E3_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ + case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ + case 4: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; \ + case 6: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; case 7: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); break; \ } }while(0) #define REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; case 1: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; \ - case 2: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; case 3: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; \ - case 4: E2_DIR_WRITE( ENABLED(INVERT_E2_DIR)); break; case 5: E2_DIR_WRITE(DISABLED(INVERT_E2_DIR)); break; \ - case 6: E3_DIR_WRITE(DISABLED(INVERT_E3_DIR)); break; case 7: E3_DIR_WRITE(DISABLED(INVERT_E3_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; \ + case 2: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ + case 4: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; \ + case 6: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); break; case 7: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ } }while(0) #elif EXTRUDERS > 6 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else if (E < 6) { E2_STEP_WRITE(V); } else { E3_STEP_WRITE(V); } }while(0) #define NORM_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; case 1: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; \ - case 2: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; case 3: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; \ - case 4: E2_DIR_WRITE(DISABLED(INVERT_E2_DIR)); break; case 5: E2_DIR_WRITE( ENABLED(INVERT_E2_DIR)); break; \ - case 6: E3_DIR_WRITE( ENABLED(INVERT_E3_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ + case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ + case 4: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; \ + case 6: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ } }while(0) #define REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; case 1: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; \ - case 2: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; case 3: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; \ - case 4: E2_DIR_WRITE( ENABLED(INVERT_E2_DIR)); break; case 5: E2_DIR_WRITE(DISABLED(INVERT_E2_DIR)); break; \ - case 6: E3_DIR_WRITE(DISABLED(INVERT_E3_DIR)); } }while(0) + case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; \ + case 2: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ + case 4: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; \ + case 6: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); } }while(0) #elif EXTRUDERS > 5 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else { E2_STEP_WRITE(V); } }while(0) #define NORM_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; case 1: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; \ - case 2: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; case 3: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; \ - case 4: E2_DIR_WRITE(DISABLED(INVERT_E2_DIR)); break; case 5: E2_DIR_WRITE( ENABLED(INVERT_E2_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ + case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ + case 4: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; \ } }while(0) #define REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; case 1: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; \ - case 2: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; case 3: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; \ - case 4: E2_DIR_WRITE( ENABLED(INVERT_E2_DIR)); break; case 5: E2_DIR_WRITE(DISABLED(INVERT_E2_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; \ + case 2: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ + case 4: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; \ } }while(0) #elif EXTRUDERS > 4 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else { E2_STEP_WRITE(V); } }while(0) #define NORM_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; case 1: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; \ - case 2: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; case 3: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; \ - case 4: E2_DIR_WRITE(DISABLED(INVERT_E2_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ + case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ + case 4: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; \ } }while(0) #define REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; case 1: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; \ - case 2: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; case 3: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; \ - case 4: E2_DIR_WRITE( ENABLED(INVERT_E2_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; \ + case 2: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ + case 4: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; \ } }while(0) #elif EXTRUDERS > 3 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0) #define NORM_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; case 1: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; \ - case 2: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; case 3: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ + case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ } }while(0) #define REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; case 1: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; \ - case 2: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; case 3: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; \ + case 2: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ } }while(0) #elif EXTRUDERS > 2 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0) #define NORM_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; case 1: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; \ - case 2: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ + case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ } }while(0) #define REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; case 1: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; \ - case 2: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; \ + case 2: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ } }while(0) #else #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V) - #define NORM_E_DIR(E) do{ E0_DIR_WRITE(E ? ENABLED(INVERT_E0_DIR) : DISABLED(INVERT_E0_DIR)); }while(0) - #define REV_E_DIR(E) do{ E0_DIR_WRITE(E ? DISABLED(INVERT_E0_DIR) : ENABLED(INVERT_E0_DIR)); }while(0) + #define NORM_E_DIR(E) do{ E0_DIR_WRITE(INVERT_DIR(E0, (E) ? LOW : HIGH)); }while(0) + #define REV_E_DIR(E) do{ E0_DIR_WRITE(INVERT_DIR(E0, (E) ? HIGH : LOW )); }while(0) #endif #elif HAS_PRUSA_MMU2 // One multiplexed stepper driver #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V) - #define NORM_E_DIR(E) E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)) - #define REV_E_DIR(E) E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)) + #define NORM_E_DIR(E) E0_DIR_WRITE(INVERT_DIR(E0, HIGH)) + #define REV_E_DIR(E) E0_DIR_WRITE(INVERT_DIR(E0, LOW )) #elif HAS_PRUSA_MMU1 // One multiplexed stepper driver, reversed on odd index #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V) - #define NORM_E_DIR(E) do{ E0_DIR_WRITE(TEST(E, 0) ? DISABLED(INVERT_E0_DIR): ENABLED(INVERT_E0_DIR)); }while(0) - #define REV_E_DIR(E) do{ E0_DIR_WRITE(TEST(E, 0) ? ENABLED(INVERT_E0_DIR): DISABLED(INVERT_E0_DIR)); }while(0) + #define NORM_E_DIR(E) do{ E0_DIR_WRITE(INVERT_DIR(E0, TEST(E, 0) ? HIGH : LOW )); }while(0) + #define REV_E_DIR(E) do{ E0_DIR_WRITE(INVERT_DIR(E0, TEST(E, 0) ? LOW : HIGH)); }while(0) #elif E_STEPPERS > 1 @@ -553,16 +555,16 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 4: E4_STEP_WRITE(V); break; case 5: E5_STEP_WRITE(V); break; case 6: E6_STEP_WRITE(V); break; case 7: E7_STEP_WRITE(V); break; \ } }while(0) #define _NORM_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; case 1: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; \ - case 2: E2_DIR_WRITE(DISABLED(INVERT_E2_DIR)); break; case 3: E3_DIR_WRITE(DISABLED(INVERT_E3_DIR)); break; \ - case 4: E4_DIR_WRITE(DISABLED(INVERT_E4_DIR)); break; case 5: E5_DIR_WRITE(DISABLED(INVERT_E5_DIR)); break; \ - case 6: E6_DIR_WRITE(DISABLED(INVERT_E6_DIR)); break; case 7: E7_DIR_WRITE(DISABLED(INVERT_E7_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ + case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ + case 4: E4_DIR_WRITE(INVERT_DIR(E4, HIGH)); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, HIGH)); break; \ + case 6: E6_DIR_WRITE(INVERT_DIR(E6, HIGH)); break; case 7: E7_DIR_WRITE(INVERT_DIR(E7, HIGH)); break; \ } }while(0) #define _REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; case 1: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; \ - case 2: E2_DIR_WRITE( ENABLED(INVERT_E2_DIR)); break; case 3: E3_DIR_WRITE( ENABLED(INVERT_E3_DIR)); break; \ - case 4: E4_DIR_WRITE( ENABLED(INVERT_E4_DIR)); break; case 5: E5_DIR_WRITE( ENABLED(INVERT_E5_DIR)); break; \ - case 6: E6_DIR_WRITE( ENABLED(INVERT_E6_DIR)); break; case 7: E7_DIR_WRITE( ENABLED(INVERT_E7_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ + case 2: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); break; \ + case 4: E4_DIR_WRITE(INVERT_DIR(E4, LOW )); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, LOW )); break; \ + case 6: E6_DIR_WRITE(INVERT_DIR(E6, LOW )); break; case 7: E7_DIR_WRITE(INVERT_DIR(E7, LOW )); break; \ } }while(0) #elif E_STEPPERS > 6 @@ -572,16 +574,16 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 4: E4_STEP_WRITE(V); break; case 5: E5_STEP_WRITE(V); break; case 6: E6_STEP_WRITE(V); break; \ } }while(0) #define _NORM_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; case 1: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; \ - case 2: E2_DIR_WRITE(DISABLED(INVERT_E2_DIR)); break; case 3: E3_DIR_WRITE(DISABLED(INVERT_E3_DIR)); break; \ - case 4: E4_DIR_WRITE(DISABLED(INVERT_E4_DIR)); break; case 5: E5_DIR_WRITE(DISABLED(INVERT_E5_DIR)); break; \ - case 6: E6_DIR_WRITE(DISABLED(INVERT_E6_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ + case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ + case 4: E4_DIR_WRITE(INVERT_DIR(E4, HIGH)); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, HIGH)); break; \ + case 6: E6_DIR_WRITE(INVERT_DIR(E6, HIGH)); break; \ } }while(0) #define _REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; case 1: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; \ - case 2: E2_DIR_WRITE( ENABLED(INVERT_E2_DIR)); break; case 3: E3_DIR_WRITE( ENABLED(INVERT_E3_DIR)); break; \ - case 4: E4_DIR_WRITE( ENABLED(INVERT_E4_DIR)); break; case 5: E5_DIR_WRITE( ENABLED(INVERT_E5_DIR)); break; \ - case 6: E6_DIR_WRITE( ENABLED(INVERT_E6_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ + case 2: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); break; \ + case 4: E4_DIR_WRITE(INVERT_DIR(E4, LOW )); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, LOW )); break; \ + case 6: E6_DIR_WRITE(INVERT_DIR(E6, LOW )); break; \ } }while(0) #elif E_STEPPERS > 5 @@ -591,14 +593,14 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 4: E4_STEP_WRITE(V); break; case 5: E5_STEP_WRITE(V); break; \ } }while(0) #define _NORM_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; case 1: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; \ - case 2: E2_DIR_WRITE(DISABLED(INVERT_E2_DIR)); break; case 3: E3_DIR_WRITE(DISABLED(INVERT_E3_DIR)); break; \ - case 4: E4_DIR_WRITE(DISABLED(INVERT_E4_DIR)); break; case 5: E5_DIR_WRITE(DISABLED(INVERT_E5_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ + case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ + case 4: E4_DIR_WRITE(INVERT_DIR(E4, HIGH)); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, HIGH)); break; \ } }while(0) #define _REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; case 1: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; \ - case 2: E2_DIR_WRITE( ENABLED(INVERT_E2_DIR)); break; case 3: E3_DIR_WRITE( ENABLED(INVERT_E3_DIR)); break; \ - case 4: E4_DIR_WRITE( ENABLED(INVERT_E4_DIR)); break; case 5: E5_DIR_WRITE( ENABLED(INVERT_E5_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ + case 2: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); break; \ + case 4: E4_DIR_WRITE(INVERT_DIR(E4, LOW )); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, LOW )); break; \ } }while(0) #elif E_STEPPERS > 4 @@ -608,14 +610,14 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 4: E4_STEP_WRITE(V); break; \ } }while(0) #define _NORM_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; case 1: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; \ - case 2: E2_DIR_WRITE(DISABLED(INVERT_E2_DIR)); break; case 3: E3_DIR_WRITE(DISABLED(INVERT_E3_DIR)); break; \ - case 4: E4_DIR_WRITE(DISABLED(INVERT_E4_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ + case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ + case 4: E4_DIR_WRITE(INVERT_DIR(E4, HIGH)); break; \ } }while(0) #define _REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; case 1: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; \ - case 2: E2_DIR_WRITE( ENABLED(INVERT_E2_DIR)); break; case 3: E3_DIR_WRITE( ENABLED(INVERT_E3_DIR)); break; \ - case 4: E4_DIR_WRITE( ENABLED(INVERT_E4_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ + case 2: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); break; \ + case 4: E4_DIR_WRITE(INVERT_DIR(E4, LOW )); break; \ } }while(0) #elif E_STEPPERS > 3 @@ -624,71 +626,41 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \ } }while(0) #define _NORM_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; case 1: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; \ - case 2: E2_DIR_WRITE(DISABLED(INVERT_E2_DIR)); break; case 3: E3_DIR_WRITE(DISABLED(INVERT_E3_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ + case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ } }while(0) #define _REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; case 1: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; \ - case 2: E2_DIR_WRITE( ENABLED(INVERT_E2_DIR)); break; case 3: E3_DIR_WRITE( ENABLED(INVERT_E3_DIR)); break; \ + case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ + case 2: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); break; \ } }while(0) #elif E_STEPPERS > 2 #define _E_STEP_WRITE(E,V) do{ switch (E) { case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); } }while(0) - #define _NORM_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); break; case 1: E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); break; case 2: E2_DIR_WRITE(DISABLED(INVERT_E2_DIR)); } }while(0) - #define _REV_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); break; case 1: E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); break; case 2: E2_DIR_WRITE( ENABLED(INVERT_E2_DIR)); } }while(0) + #define _NORM_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); } }while(0) + #define _REV_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; case 2: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); } }while(0) #else #define _E_STEP_WRITE(E,V) do{ if (E == 0) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0) - #define _NORM_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); } else { E1_DIR_WRITE(DISABLED(INVERT_E1_DIR)); } }while(0) - #define _REV_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); } else { E1_DIR_WRITE( ENABLED(INVERT_E1_DIR)); } }while(0) + #define _NORM_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); } else { E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); } }while(0) + #define _REV_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE(INVERT_DIR(E0, LOW )); } else { E1_DIR_WRITE(INVERT_DIR(E1, LOW )); } }while(0) #endif #if HAS_DUPLICATION_MODE #if ENABLED(MULTI_NOZZLE_DUPLICATION) - #define _DUPE(N,T,V) do{ if (TEST(duplication_e_mask, N)) E##N##_##T##_WRITE(V); }while(0) + #define DUPE(N,T,V) do{ if (TEST(duplication_e_mask, N)) E##N##_##T##_WRITE(V); }while(0); #else - #define _DUPE(N,T,V) E##N##_##T##_WRITE(V) + #define DUPE(N,T,V) E##N##_##T##_WRITE(V); #endif - #define NDIR(N) _DUPE(N,DIR,DISABLED(INVERT_E##N##_DIR)) - #define RDIR(N) _DUPE(N,DIR, ENABLED(INVERT_E##N##_DIR)) + #define NDIR(N) DUPE(N,DIR,INVERT_DIR(E, HIGH)); + #define RDIR(N) DUPE(N,DIR,INVERT_DIR(E, LOW )); - #define E_STEP_WRITE(E,V) do{ if (extruder_duplication_enabled) { DUPE(STEP,V); } else _E_STEP_WRITE(E,V); }while(0) - - #if E_STEPPERS > 2 - #if E_STEPPERS > 7 - #define DUPE(T,V) do{ _DUPE(0,T,V); _DUPE(1,T,V); _DUPE(2,T,V); _DUPE(3,T,V); _DUPE(4,T,V); _DUPE(5,T,V); _DUPE(6,T,V); _DUPE(7,T,V); }while(0) - #define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); NDIR(2); NDIR(3); NDIR(4); NDIR(5); NDIR(6); NDIR(7); } else _NORM_E_DIR(E); }while(0) - #define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); RDIR(2); RDIR(3); RDIR(4); RDIR(5); RDIR(6); RDIR(7); } else _REV_E_DIR(E); }while(0) - #elif E_STEPPERS > 6 - #define DUPE(T,V) do{ _DUPE(0,T,V); _DUPE(1,T,V); _DUPE(2,T,V); _DUPE(3,T,V); _DUPE(4,T,V); _DUPE(5,T,V); _DUPE(6,T,V); }while(0) - #define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); NDIR(2); NDIR(3); NDIR(4); NDIR(5); NDIR(6); } else _NORM_E_DIR(E); }while(0) - #define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); RDIR(2); RDIR(3); RDIR(4); RDIR(5); RDIR(6); } else _REV_E_DIR(E); }while(0) - #elif E_STEPPERS > 5 - #define DUPE(T,V) do{ _DUPE(0,T,V); _DUPE(1,T,V); _DUPE(2,T,V); _DUPE(3,T,V); _DUPE(4,T,V); _DUPE(5,T,V); }while(0) - #define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); NDIR(2); NDIR(3); NDIR(4); NDIR(5); } else _NORM_E_DIR(E); }while(0) - #define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); RDIR(2); RDIR(3); RDIR(4); RDIR(5); } else _REV_E_DIR(E); }while(0) - #elif E_STEPPERS > 4 - #define DUPE(T,V) do{ _DUPE(0,T,V); _DUPE(1,T,V); _DUPE(2,T,V); _DUPE(3,T,V); _DUPE(4,T,V); }while(0) - #define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); NDIR(2); NDIR(3); NDIR(4); } else _NORM_E_DIR(E); }while(0) - #define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); RDIR(2); RDIR(3); RDIR(4); } else _REV_E_DIR(E); }while(0) - #elif E_STEPPERS > 3 - #define DUPE(T,V) do{ _DUPE(0,T,V); _DUPE(1,T,V); _DUPE(2,T,V); _DUPE(3,T,V); }while(0) - #define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); NDIR(2); NDIR(3); } else _NORM_E_DIR(E); }while(0) - #define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); RDIR(2); RDIR(3); } else _REV_E_DIR(E); }while(0) - #else - #define DUPE(T,V) do{ _DUPE(0,T,V); _DUPE(1,T,V); _DUPE(2,T,V); }while(0) - #define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); NDIR(2); } else _NORM_E_DIR(E); }while(0) - #define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); RDIR(2); } else _REV_E_DIR(E); }while(0) - #endif - #else - #define DUPE(T,V) do{ _DUPE(0,T,V); _DUPE(1,T,V); }while(0) - #define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); } else _NORM_E_DIR(E); }while(0) - #define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); } else _REV_E_DIR(E); }while(0) - #endif + #define E_STEP_WRITE(E,V) do{ if (extruder_duplication_enabled) { REPEAT2(E_STEPPERS, DUPE, STEP, V); } else _E_STEP_WRITE(E,V); }while(0) + #define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { REPEAT(E_STEPPERS, NDIR); } else _NORM_E_DIR(E); }while(0) + #define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { REPEAT(E_STEPPERS, RDIR); } else _REV_E_DIR(E); }while(0) #else @@ -700,13 +672,13 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #elif ENABLED(E_DUAL_STEPPER_DRIVERS) #define E_STEP_WRITE(E,V) do{ E0_STEP_WRITE(V); E1_STEP_WRITE(V); }while(0) - #define NORM_E_DIR(E) do{ E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)); E1_DIR_WRITE(DISABLED(INVERT_E0_DIR) ^ ENABLED(INVERT_E1_VS_E0_DIR)); }while(0) - #define REV_E_DIR(E) do{ E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)); E1_DIR_WRITE( ENABLED(INVERT_E0_DIR) ^ ENABLED(INVERT_E1_VS_E0_DIR)); }while(0) + #define NORM_E_DIR(E) do{ constexpr bool d = INVERT_DIR(E0, HIGH); E0_DIR_WRITE(d); E1_DIR_WRITE(INVERT_DIR(E1_VS_E0, d)); }while(0) + #define REV_E_DIR(E) do{ constexpr bool d = INVERT_DIR(E0, LOW ); E0_DIR_WRITE(d); E1_DIR_WRITE(INVERT_DIR(E1_VS_E0, d)); }while(0) #elif E_STEPPERS #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V) - #define NORM_E_DIR(E) E0_DIR_WRITE(DISABLED(INVERT_E0_DIR)) - #define REV_E_DIR(E) E0_DIR_WRITE( ENABLED(INVERT_E0_DIR)) + #define NORM_E_DIR(E) E0_DIR_WRITE(INVERT_DIR(E0, HIGH)) + #define REV_E_DIR(E) E0_DIR_WRITE(INVERT_DIR(E0, LOW )) #else #define E_STEP_WRITE(E,V) NOOP From 7e700c13948506ab0fc57719c7c1bd35f0cb33c4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 5 Apr 2023 13:54:09 -0500 Subject: [PATCH 224/659] =?UTF-8?q?=F0=9F=94=A7=20Move=20DOGLCD=20options?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 20 ----------- Marlin/Configuration_adv.h | 33 ++++++++++++++----- .../stm32f4/pins_MKS_ROBIN_NANO_V3_common.h | 1 - .../src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h | 1 - 4 files changed, 25 insertions(+), 30 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index d36ceab491..4fa07c0871 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -63,26 +63,6 @@ #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. //#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes) -/** - * *** VENDORS PLEASE READ *** - * - * Marlin allows you to add a custom boot image for Graphical LCDs. - * With this option Marlin will first show your custom screen followed - * by the standard Marlin logo with version number and web URL. - * - * We encourage you to take advantage of this new feature and we also - * respectfully request that you retain the unmodified Marlin boot screen. - */ - -// Show the Marlin bootscreen on startup. ** ENABLE FOR PRODUCTION ** -#define SHOW_BOOTSCREEN - -// Show the bitmap in Marlin/_Bootscreen.h on startup. -//#define SHOW_CUSTOM_BOOTSCREEN - -// Show the bitmap in Marlin/_Statusscreen.h on the status screen. -//#define CUSTOM_STATUS_SCREEN_IMAGE - // @section machine // Choose the name from boards.h that matches your setup diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 18e5d9e647..cbc85283a3 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -989,7 +989,7 @@ #endif // BLTOUCH -// @section extras +// @section calibration /** * Z Steppers Auto-Alignment @@ -1508,19 +1508,36 @@ #endif // HAS_MARLINUI_MENU #if HAS_DISPLAY + /** + * *** VENDORS PLEASE READ *** + * + * Marlin allows you to add a custom boot image for Graphical LCDs. + * With this option Marlin will first show your custom screen followed + * by the standard Marlin logo with version number and web URL. + * + * We encourage you to take advantage of this new feature and we also + * respectfully request that you retain the unmodified Marlin boot screen. + */ + #if ANY(HAS_MARLINUI_U8GLIB, TOUCH_UI_FTDI_EVE, IS_DWIN_MARLINUI) + #define SHOW_BOOTSCREEN // Show the Marlin bootscreen on startup. ** ENABLE FOR PRODUCTION ** + #if ENABLED(SHOW_BOOTSCREEN) + #define BOOTSCREEN_TIMEOUT 4000 // (ms) Total Duration to display the boot screen(s) + #if EITHER(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI) + #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) + #endif + //#define SHOW_CUSTOM_BOOTSCREEN // Show the bitmap in Marlin/_Bootscreen.h on startup. + #endif + #if HAS_MARLINUI_U8GLIB + //#define CUSTOM_STATUS_SCREEN_IMAGE // Show the bitmap in Marlin/_Statusscreen.h on the status screen. + #endif + #endif + //#define SOUND_MENU_ITEM // Add a mute option to the LCD menu #define SOUND_ON_DEFAULT // Buzzer/speaker default enabled state // The timeout to return to the status screen from sub-menus //#define LCD_TIMEOUT_TO_STATUS 15000 // (ms) - #if ENABLED(SHOW_BOOTSCREEN) - #define BOOTSCREEN_TIMEOUT 4000 // (ms) Total Duration to display the boot screen(s) - #if EITHER(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI) - #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) - #endif - #endif - // Scroll a longer status message into view //#define STATUS_MESSAGE_SCROLLING diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h index a687cb9c9d..fed0dc9fa5 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h @@ -342,7 +342,6 @@ // Required for MKS_MINI_12864 with this board //#define MKS_LCD12864B - //#undef SHOW_BOOTSCREEN #elif ENABLED(FYSETC_MINI_12864_2_1) #define LCD_PINS_DC EXP1_04_PIN diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h index 8fdb417805..82c52ad984 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h @@ -356,7 +356,6 @@ // Required for MKS_MINI_12864 with this board //#define MKS_LCD12864B - //#undef SHOW_BOOTSCREEN #else // !MKS_MINI_12864 From 42a5ae8716072d16badadd62fee38368909ae412 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 6 Apr 2023 16:58:12 -0500 Subject: [PATCH 225/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Upd?= =?UTF-8?q?ate=20pinsformat.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/share/scripts/pinsformat.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/buildroot/share/scripts/pinsformat.js b/buildroot/share/scripts/pinsformat.js index a82c2f2659..1ce0d75d9a 100755 --- a/buildroot/share/scripts/pinsformat.js +++ b/buildroot/share/scripts/pinsformat.js @@ -27,9 +27,9 @@ String.prototype.rpad = function(len, chr) { return s; }; -const mpatt = [ '-?\\d+', 'P[A-I]\\d+', 'P\\d_\\d+' ], - definePatt = new RegExp(`^\\s*(//)?#define\\s+[A-Z_][A-Z0-9_]+\\s+(${mpatt[0]}|${mpatt[1]}|${mpatt[2]})\\s*(//.*)?$`, 'gm'), - ppad = [ 3, 4, 5 ], +const mpatt = [ '-?\\d{1,3}', 'P[A-I]\\d+', 'P\\d_\\d+', 'Pin[A-Z]\\d\\b' ], + definePatt = new RegExp(`^\\s*(//)?#define\\s+[A-Z_][A-Z0-9_]+\\s+(${mpatt[0]}|${mpatt[1]}|${mpatt[2]}|${mpatt[3]})\\s*(//.*)?$`, 'gm'), + ppad = [ 3, 4, 5, 5 ], col_comment = 50, col_value_rj = col_comment - 3; @@ -55,7 +55,7 @@ else // Find the pin pattern so non-pin defines can be skipped function get_pin_pattern(txt) { - var r, m = 0, match_count = [ 0, 0, 0 ]; + var r, m = 0, match_count = [ 0, 0, 0, 0 ]; definePatt.lastIndex = 0; while ((r = definePatt.exec(txt)) !== null) { let ind = -1; @@ -65,7 +65,7 @@ function get_pin_pattern(txt) { return r[2].match(p); }) ) { const m = ++match_count[ind]; - if (m >= 10) { + if (m >= 5) { return { match: mpatt[ind], pad:ppad[ind] }; } } @@ -79,7 +79,8 @@ function process_text(txt) { if (!patt) return txt; const pindefPatt = new RegExp(`^(\\s*(//)?#define)\\s+([A-Z_][A-Z0-9_]+)\\s+(${patt.match})\\s*(//.*)?$`), noPinPatt = new RegExp(`^(\\s*(//)?#define)\\s+([A-Z_][A-Z0-9_]+)\\s+(-1)\\s*(//.*)?$`), - skipPatt = new RegExp('^(\\s*(//)?#define)\\s+(AT90USB|USBCON|BOARD_.+|.+_MACHINE_NAME|.+_SERIAL)\\s+(.+)\\s*(//.*)?$'), + skipPatt1 = new RegExp('^(\\s*(//)?#define)\\s+(AT90USB|USBCON|(BOARD|DAC|FLASH|HAS|IS|USE)_.+|.+_(ADDRESS|AVAILABLE|BAUDRATE|CLOCK|CONNECTION|DEFAULT|FREQ|ITEM|MODULE|NAME|ONLY|PERIOD|RANGE|RATE|SERIAL|SIZE|SPI|STATE|STEP|TIMER))\\s+(.+)\\s*(//.*)?$'), + skipPatt2 = new RegExp('^(\\s*(//)?#define)\\s+([A-Z_][A-Z0-9_]+)\\s+(0x[0-9A-Fa-f]+|\d+|.+[a-z].+)\\s*(//.*)?$'), aliasPatt = new RegExp('^(\\s*(//)?#define)\\s+([A-Z_][A-Z0-9_]+)\\s+([A-Z_][A-Z0-9_()]+)\\s*(//.*)?$'), switchPatt = new RegExp('^(\\s*(//)?#define)\\s+([A-Z_][A-Z0-9_]+)\\s*(//.*)?$'), undefPatt = new RegExp('^(\\s*(//)?#undef)\\s+([A-Z_][A-Z0-9_]+)\\s*(//.*)?$'), @@ -96,6 +97,12 @@ function process_text(txt) { // Comments in column 45 line = ''.rpad(col_comment) + r[1]; + else if (skipPatt1.exec(line) !== null) { + // + // #define SKIP_ME + // + if (do_log) console.log("skip:", line); + } else if ((r = pindefPatt.exec(line)) !== null) { // // #define MY_PIN [pin] @@ -115,7 +122,7 @@ function process_text(txt) { line = line.rpad(col_value_lj) + '-1'; if (r[5]) line = line.rpad(col_comment) + r[5]; } - else if ((r = skipPatt.exec(line)) !== null) { + else if (skipPatt2.exec(line) !== null) { // // #define SKIP_ME // From 5b1f087c5b79fa7797aca5acc22a72570a36b64a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 6 Apr 2023 17:24:32 -0500 Subject: [PATCH 226/659] =?UTF-8?q?=F0=9F=93=9D=20Update=20Ender=20#=20lab?= =?UTF-8?q?els?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- Marlin/src/inc/SanityCheck.h | 2 +- Marlin/src/lcd/e3v2/README.md | 4 ++-- Marlin/src/lcd/e3v2/creality/dwin.cpp | 2 +- Marlin/src/lcd/e3v2/jyersui/README.md | 4 ++-- Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp | 2 +- Marlin/src/lcd/e3v2/proui/base64.hpp | 2 +- Marlin/src/libs/BL24CXX.h | 2 +- Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h | 2 +- Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h | 6 +++--- Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h | 6 +++--- Marlin/src/pins/samd/pins_MINITRONICS20.h | 6 +++--- Marlin/src/pins/stm32f1/pins_CREALITY_V24S1.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h | 4 ++-- Marlin/src/pins/stm32f1/pins_CREALITY_V4.h | 2 +- Marlin/src/pins/stm32f4/pins_CREALITY_V24S1_301F4.h | 2 +- buildroot/share/dwin/bin/README.md | 2 +- buildroot/tests/STM32F103RE_creality | 4 ++-- buildroot/tests/STM32F401RC_creality | 2 +- buildroot/tests/melzi_optiboot | 4 ++-- 20 files changed, 31 insertions(+), 31 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index efc5972325..b40d881a75 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -100,7 +100,7 @@ body: - type: input attributes: label: Printer model - description: Creality Ender 3, Prusa mini, or Kossel Delta? + description: Creality Ender-3, Prusa mini, or Kossel Delta? - type: input attributes: diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index ce657f24a6..5a0168e845 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -3274,7 +3274,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #endif /** - * Ender 3 V2 controller has some limitations + * Ender-3 V2 controller has some limitations */ #if ENABLED(DWIN_CREALITY_LCD) #if DISABLED(SDSUPPORT) diff --git a/Marlin/src/lcd/e3v2/README.md b/Marlin/src/lcd/e3v2/README.md index 91f25e2433..09055d03a4 100644 --- a/Marlin/src/lcd/e3v2/README.md +++ b/Marlin/src/lcd/e3v2/README.md @@ -1,6 +1,6 @@ -# DWIN for Creality Ender 3 v2 +# DWIN for Creality Ender-3 v2 -Marlin's Ender 3 v2 support requires the `DWIN_SET` included with the Ender 3 V2 [example configuration](https://github.com/MarlinFirmware/Configurations/tree/bugfix-2.1.x/config/examples/Creality/Ender-3%20V2). +Marlin's Ender-3 v2 support requires the `DWIN_SET` included with the Ender-3 V2 [example configuration](https://github.com/MarlinFirmware/Configurations/tree/bugfix-2.1.x/config/examples/Creality/Ender-3%20V2). ## Easy Install diff --git a/Marlin/src/lcd/e3v2/creality/dwin.cpp b/Marlin/src/lcd/e3v2/creality/dwin.cpp index 459b00ae1b..02bfa624fa 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.cpp +++ b/Marlin/src/lcd/e3v2/creality/dwin.cpp @@ -2243,7 +2243,7 @@ void HMI_SelectFile() { card.openAndPrintFile(card.filename); #if HAS_FAN - // All fans on for Ender 3 v2 ? + // All fans on for Ender-3 v2 ? // The slicer should manage this for us. //for (uint8_t i = 0; i < FAN_COUNT; i++) // thermalManager.fan_speed[i] = 255; diff --git a/Marlin/src/lcd/e3v2/jyersui/README.md b/Marlin/src/lcd/e3v2/jyersui/README.md index 91f25e2433..09055d03a4 100644 --- a/Marlin/src/lcd/e3v2/jyersui/README.md +++ b/Marlin/src/lcd/e3v2/jyersui/README.md @@ -1,6 +1,6 @@ -# DWIN for Creality Ender 3 v2 +# DWIN for Creality Ender-3 v2 -Marlin's Ender 3 v2 support requires the `DWIN_SET` included with the Ender 3 V2 [example configuration](https://github.com/MarlinFirmware/Configurations/tree/bugfix-2.1.x/config/examples/Creality/Ender-3%20V2). +Marlin's Ender-3 v2 support requires the `DWIN_SET` included with the Ender-3 V2 [example configuration](https://github.com/MarlinFirmware/Configurations/tree/bugfix-2.1.x/config/examples/Creality/Ender-3%20V2). ## Easy Install diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp index 680173bd12..5ec94b853f 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp @@ -262,7 +262,7 @@ FORCE_INLINE void _draw_feedrate_status(const char *value, uint16_t x, uint16_t } /** - * Draw the MarlinUI Status Screen for Ender 3 V2 + * Draw the MarlinUI Status Screen for Ender-3 V2 */ void MarlinUI::draw_status_screen() { const bool blink = get_blink(); diff --git a/Marlin/src/lcd/e3v2/proui/base64.hpp b/Marlin/src/lcd/e3v2/proui/base64.hpp index d82d0b27e8..a51cca7c52 100644 --- a/Marlin/src/lcd/e3v2/proui/base64.hpp +++ b/Marlin/src/lcd/e3v2/proui/base64.hpp @@ -5,7 +5,7 @@ * Author: Densaugeo * Maintainer: Densaugeo * Version: 1.2.1.1 - * Changed unsigned int to uint16_t for use in the professional Ender 3V2/S1 firmware + * Changed unsigned int to uint16_t for use in the professional Ender-3V2/S1 firmware * Url: https://www.arduino.cc/reference/en/libraries/base64/ */ diff --git a/Marlin/src/libs/BL24CXX.h b/Marlin/src/libs/BL24CXX.h index b069c196c0..654ceffc3e 100644 --- a/Marlin/src/libs/BL24CXX.h +++ b/Marlin/src/libs/BL24CXX.h @@ -23,7 +23,7 @@ /******************************************************************************** * @file BL24CXX.h - * @brief i2c EEPROM for Ender 3 v2 board (4.2.2) + * @brief i2c EEPROM for Ender-3 v2 board (4.2.2) ********************************************************************************/ /******************** IIC ********************/ diff --git a/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h b/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h index 70f7f748c0..f8187babd3 100644 --- a/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h +++ b/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h @@ -211,7 +211,7 @@ #endif /** - * Ender 3 V2 display SKR E3 Turbo (EXP1) Ender 3 V2 display --> SKR E3 Turbo + * Ender-3 V2 display SKR E3 Turbo (EXP1) Ender-3 V2 display --> SKR E3 Turbo * ------ ------ RX 3 --> 5 P0_15 * -- | 1 2 | -- (BEEPER) P2_08 |10 9 | P0_16 (BTN_ENC) TX 4 --> 9 P0_16 * (SKR_TX1) RX | 3 4 | TX (SKR_RX1) (BTN_EN1) P0_19 | 8 7 | RESET BEEPER 6 --> 10 P2_08 diff --git a/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h b/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h index 5cd2584104..662cccacfc 100644 --- a/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h +++ b/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h @@ -203,10 +203,10 @@ * This section starts with the pins_RAMPS_144.h as example, after if you need any new * display, you could use normal duponts and connect it with with the scheme showed before. * Tested: - * - Ender 3 Old display (Character LCD) - * - Ender 3 New Serial DWING Display + * - Ender-3 Old display (Character LCD) + * - Ender-3 New Serial DWING Display * - Reprap Display - * - Ender 5 New Serial Display + * - Ender-5 New Serial Display * - Any Reprap character display like */ diff --git a/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h b/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h index 13434fffeb..b70db129a7 100644 --- a/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h +++ b/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h @@ -255,10 +255,10 @@ * This sections starts with the pins_RAMPS_144.h as example, after if you need any new * display, you could use normal duponts and connect it with with the scheme showed before. * Tested: - * - Ender 3 Old display (Character LCD) - * - Ender 3 New Serial DWING Display + * - Ender-3 Old display (Character LCD) + * - Ender-3 New Serial DWING Display * - Reprap Display - * - Ender 5 New Serial Display + * - Ender-5 New Serial Display * - Any Reprap character display like */ diff --git a/Marlin/src/pins/samd/pins_MINITRONICS20.h b/Marlin/src/pins/samd/pins_MINITRONICS20.h index 12438fe57e..d2a2a27d7c 100644 --- a/Marlin/src/pins/samd/pins_MINITRONICS20.h +++ b/Marlin/src/pins/samd/pins_MINITRONICS20.h @@ -174,10 +174,10 @@ * This sections starts with the pins_RAMPS_144.h as example, after if you need any new * display, you could use normal duponts and connect it with with the scheme showed before. * Tested: - * - Ender 3 Old display (Character LCD) - * - Ender 3 New Serial DWING Display + * - Ender-3 Old display (Character LCD) + * - Ender-3 New Serial DWING Display * - Reprap Display - * - Ender 5 New Serial Display + * - Ender-5 New Serial Display * - Any Reprap character display like */ diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1.h index 0d2ad835d3..f7a73de284 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1.h @@ -22,7 +22,7 @@ #pragma once /** - * Creality v2.4.S1 (STM32F103RE / STM32F103RC) v101 as found in the Ender 7 + * Creality v2.4.S1 (STM32F103RE / STM32F103RC) v101 as found in the Ender-7 */ #define BOARD_INFO_NAME "Creality v2.4.S1 V101" diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h index 7a8f3189aa..4276db5e9f 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h @@ -22,7 +22,7 @@ #pragma once /** - * Creality V24S1_301 (STM32F103RE / STM32F103RC) board pin assignments as found on Ender 3 S1. + * Creality V24S1_301 (STM32F103RE / STM32F103RC) board pin assignments as found on Ender-3 S1. * Also supports the STM32F4 version of the board with identical pin mapping. */ @@ -40,7 +40,7 @@ #define BOARD_INFO_NAME "Creality V24S1-301" #endif #ifndef DEFAULT_MACHINE_NAME - #define DEFAULT_MACHINE_NAME "Ender 3 S1" + #define DEFAULT_MACHINE_NAME "Ender-3 S1" #endif // diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h index e71fec0181..00de57ff58 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h @@ -35,7 +35,7 @@ #define BOARD_INFO_NAME "Creality V4" #endif #ifndef DEFAULT_MACHINE_NAME - #define DEFAULT_MACHINE_NAME "Ender 3 V2" + #define DEFAULT_MACHINE_NAME "Ender-3 V2" #endif #define BOARD_NO_NATIVE_USB diff --git a/Marlin/src/pins/stm32f4/pins_CREALITY_V24S1_301F4.h b/Marlin/src/pins/stm32f4/pins_CREALITY_V24S1_301F4.h index 883640d577..32f70a3715 100644 --- a/Marlin/src/pins/stm32f4/pins_CREALITY_V24S1_301F4.h +++ b/Marlin/src/pins/stm32f4/pins_CREALITY_V24S1_301F4.h @@ -22,7 +22,7 @@ #pragma once /** - * Creality V24S1_301F4 (STM32F401RC) board pin assignments as found on Ender 3 S1. + * Creality V24S1_301F4 (STM32F401RC) board pin assignments as found on Ender-3 S1. */ #ifndef BOARD_INFO_NAME diff --git a/buildroot/share/dwin/bin/README.md b/buildroot/share/dwin/bin/README.md index 9d513bc0c8..4a9b4687ab 100644 --- a/buildroot/share/dwin/bin/README.md +++ b/buildroot/share/dwin/bin/README.md @@ -4,7 +4,7 @@ Tools for processing `.ICO` files used by DWIN displays. ## Introduction -The DWIN LCDs that come with the Creality Ender 3 v2 and other 3D printers contain image and container files stored on them which are used to draw various the UI elements. +The DWIN LCDs that come with the Creality Ender-3 v2 and other 3D printers contain image and container files stored on them which are used to draw various the UI elements. Standard `.JPG` files can be installed for things like the boot screen, and `.ICO` files can contain several images within a structured file format. diff --git a/buildroot/tests/STM32F103RE_creality b/buildroot/tests/STM32F103RE_creality index a05f1d96be..6677559720 100755 --- a/buildroot/tests/STM32F103RE_creality +++ b/buildroot/tests/STM32F103RE_creality @@ -11,12 +11,12 @@ set -e # use_example_configs "Creality/Ender-3 V2/CrealityV422/CrealityUI" opt_enable MARLIN_DEV_MODE BUFFER_MONITORING BLTOUCH AUTO_BED_LEVELING_BILINEAR Z_SAFE_HOMING -exec_test $1 $2 "Ender 3 v2 with CrealityUI" "$3" +exec_test $1 $2 "Ender-3 v2 with CrealityUI" "$3" use_example_configs "Creality/Ender-3 V2/CrealityV422/CrealityUI" opt_disable DWIN_CREALITY_LCD opt_enable DWIN_CREALITY_LCD_JYERSUI AUTO_BED_LEVELING_BILINEAR PROBE_MANUALLY -exec_test $1 $2 "Ender 3 v2 with JyersUI" "$3" +exec_test $1 $2 "Ender-3 v2 with JyersUI" "$3" use_example_configs "Creality/Ender-3 S1/STM32F1" opt_disable DWIN_CREALITY_LCD Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN AUTO_BED_LEVELING_BILINEAR CONFIGURATION_EMBEDDING CANCEL_OBJECTS FWRETRACT diff --git a/buildroot/tests/STM32F401RC_creality b/buildroot/tests/STM32F401RC_creality index 380711d061..fbc5194d60 100755 --- a/buildroot/tests/STM32F401RC_creality +++ b/buildroot/tests/STM32F401RC_creality @@ -9,7 +9,7 @@ set -e use_example_configs "Creality/Ender-3 V2/CrealityV422/MarlinUI" opt_add SDCARD_EEPROM_EMULATION AUTO_BED_LEVELING_BILINEAR Z_SAFE_HOMING opt_set MOTHERBOARD BOARD_CREALITY_V24S1_301F4 -exec_test $1 $2 "Ender 3 v2 with MarlinUI" "$3" +exec_test $1 $2 "Ender-3 v2 with MarlinUI" "$3" # clean up restore_configs diff --git a/buildroot/tests/melzi_optiboot b/buildroot/tests/melzi_optiboot index f31c69cdcb..086fcc9169 100755 --- a/buildroot/tests/melzi_optiboot +++ b/buildroot/tests/melzi_optiboot @@ -7,10 +7,10 @@ set -e # -# Ender 2 +# Ender-2 # use_example_configs Creality/Ender-2 -exec_test $1 $2 "Ender 2" "$3" +exec_test $1 $2 "Ender-2" "$3" # clean up restore_configs From 2fa4a77584180524c526c3e13af5bc57100c62a8 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 7 Apr 2023 06:06:14 +0000 Subject: [PATCH 227/659] [cron] Bump distribution date (2023-04-07) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index d6abcc4aa6..7e27512e97 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-01" +//#define STRING_DISTRIBUTION_DATE "2023-04-07" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 2140a73690..5b28b7c96f 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-01" + #define STRING_DISTRIBUTION_DATE "2023-04-07" #endif /** From 74b205c7abfa5cf9bc487edcd6a26a75a6c9a0cb Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Fri, 7 Apr 2023 18:32:25 +1200 Subject: [PATCH 228/659] =?UTF-8?q?=F0=9F=9A=B8=20Support=20CoreXY=20witho?= =?UTF-8?q?ut=20Z=20(#25630)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/planner.cpp | 6 +++--- Marlin/src/module/stepper.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index dadb22fbde..ccf27a502a 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -1972,7 +1972,7 @@ bool Planner::_populate_block( #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) if (da < 0) SBI(dm, X_HEAD); // Save the toolhead's true direction in X if (db < 0) SBI(dm, Y_HEAD); // ...and Y - if (dc < 0) SBI(dm, Z_AXIS); + TERN_(HAS_Z_AXIS, if (dc < 0) SBI(dm, Z_AXIS)); #endif #if IS_CORE #if CORE_IS_XY @@ -2096,7 +2096,7 @@ bool Planner::_populate_block( #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) steps_dist_mm.head.x = da * mm_per_step[A_AXIS]; steps_dist_mm.head.y = db * mm_per_step[B_AXIS]; - steps_dist_mm.z = dc * mm_per_step[Z_AXIS]; + TERN_(HAS_Z_AXIS, steps_dist_mm.z = dc * mm_per_step[Z_AXIS]); #endif #if IS_CORE #if CORE_IS_XY @@ -2244,7 +2244,7 @@ bool Planner::_populate_block( stepper.enable_axis(X_AXIS); stepper.enable_axis(Y_AXIS); } - #if DISABLED(Z_LATE_ENABLE) + #if HAS_Z_AXIS && DISABLED(Z_LATE_ENABLE) if (block->steps.z) stepper.enable_axis(Z_AXIS); #endif #elif CORE_IS_XZ diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index cc353b42e2..7bf50e557f 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -3276,7 +3276,7 @@ void Stepper::_set_position(const abce_long_t &spos) { #if CORE_IS_XY // corexy positioning // these equations follow the form of the dA and dB equations on https://www.corexy.com/theory.html - count_position.set(spos.a + spos.b, CORESIGN(spos.a - spos.b), spos.c); + count_position.set(spos.a + spos.b, CORESIGN(spos.a - spos.b) OPTARG(HAS_Z_AXIS, spos.c)); #elif CORE_IS_XZ // corexz planning count_position.set(spos.a + spos.c, spos.b, CORESIGN(spos.a - spos.c)); From 27b828891db155f8b372e4efb9891bdc91bf6d33 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 7 Apr 2023 01:33:03 -0500 Subject: [PATCH 229/659] =?UTF-8?q?=F0=9F=8E=A8=20Apply=20const=20(#25643)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/MarlinCore.cpp | 2 +- Marlin/src/MarlinCore.h | 2 +- .../src/lcd/extui/mks_ui/SPIFlashStorage.cpp | 18 ++-- Marlin/src/lcd/extui/mks_ui/SPIFlashStorage.h | 14 +-- Marlin/src/sd/Sd2Card.cpp | 16 ++-- Marlin/src/sd/Sd2Card.h | 20 ++--- Marlin/src/sd/SdBaseFile.cpp | 67 +++++++------- Marlin/src/sd/SdBaseFile.h | 87 +++++++++---------- Marlin/src/sd/SdFile.cpp | 12 +-- Marlin/src/sd/SdFile.h | 12 +-- Marlin/src/sd/SdVolume.cpp | 12 +-- Marlin/src/sd/SdVolume.h | 36 ++++---- Marlin/src/sd/disk_io_driver.h | 8 +- 13 files changed, 152 insertions(+), 154 deletions(-) diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 19aaedf7c6..d2a9f395b7 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -782,7 +782,7 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) { * - Update the Průša MMU2 * - Handle Joystick jogging */ -void idle(bool no_stepper_sleep/*=false*/) { +void idle(const bool no_stepper_sleep/*=false*/) { #ifdef MAX7219_DEBUG_PROFILE CodeProfiler idle_profiler; #endif diff --git a/Marlin/src/MarlinCore.h b/Marlin/src/MarlinCore.h index f80405a302..e9c63bb31f 100644 --- a/Marlin/src/MarlinCore.h +++ b/Marlin/src/MarlinCore.h @@ -30,7 +30,7 @@ void stop(); // Pass true to keep steppers from timing out -void idle(bool no_stepper_sleep=false); +void idle(const bool no_stepper_sleep=false); inline void idle_no_sleep() { idle(true); } #if ENABLED(G38_PROBE_TARGET) diff --git a/Marlin/src/lcd/extui/mks_ui/SPIFlashStorage.cpp b/Marlin/src/lcd/extui/mks_ui/SPIFlashStorage.cpp index 6508f6f024..43149dc60c 100644 --- a/Marlin/src/lcd/extui/mks_ui/SPIFlashStorage.cpp +++ b/Marlin/src/lcd/extui/mks_ui/SPIFlashStorage.cpp @@ -148,7 +148,7 @@ uint32_t SPIFlashStorage::m_startAddress; #endif // HAS_SPI_FLASH_COMPRESSION -void SPIFlashStorage::beginWrite(uint32_t startAddress) { +void SPIFlashStorage::beginWrite(const uint32_t startAddress) { m_pageDataUsed = 0; m_currentPage = 0; m_startAddress = startAddress; @@ -171,7 +171,7 @@ void SPIFlashStorage::endWrite() { #endif } -void SPIFlashStorage::savePage(uint8_t *buffer) { +void SPIFlashStorage::savePage(uint8_t * const buffer) { W25QXX.SPI_FLASH_BufferWrite(buffer, m_startAddress + (SPI_FLASH_PageSize * m_currentPage), SPI_FLASH_PageSize); // Test env // char fname[256]; @@ -181,7 +181,7 @@ void SPIFlashStorage::savePage(uint8_t *buffer) { // fclose(fp); } -void SPIFlashStorage::loadPage(uint8_t *buffer) { +void SPIFlashStorage::loadPage(uint8_t * const buffer) { W25QXX.SPI_FLASH_BufferRead(buffer, m_startAddress + (SPI_FLASH_PageSize * m_currentPage), SPI_FLASH_PageSize); // Test env // char fname[256]; @@ -260,7 +260,7 @@ void SPIFlashStorage::readPage() { #endif } -uint16_t SPIFlashStorage::inData(uint8_t *data, uint16_t size) { +uint16_t SPIFlashStorage::inData(const uint8_t * const data, uint16_t size) { // Don't write more than we can NOMORE(size, pageDataFree()); memcpy(m_pageData + m_pageDataUsed, data, size); @@ -268,12 +268,12 @@ uint16_t SPIFlashStorage::inData(uint8_t *data, uint16_t size) { return size; } -void SPIFlashStorage::writeData(uint8_t *data, uint16_t size) { +void SPIFlashStorage::writeData(const uint8_t *data, uint16_t size) { // Flush a page if needed if (pageDataFree() == 0) flushPage(); while (size > 0) { - uint16_t written = inData(data, size); + const uint16_t written = inData(data, size); size -= written; // Need to write more? Flush page and continue! if (size > 0) { @@ -283,7 +283,7 @@ void SPIFlashStorage::writeData(uint8_t *data, uint16_t size) { } } -void SPIFlashStorage::beginRead(uint32_t startAddress) { +void SPIFlashStorage::beginRead(const uint32_t startAddress) { m_startAddress = startAddress; m_currentPage = 0; // Nothing in memory now @@ -293,7 +293,7 @@ void SPIFlashStorage::beginRead(uint32_t startAddress) { #endif } -uint16_t SPIFlashStorage::outData(uint8_t *data, uint16_t size) { +uint16_t SPIFlashStorage::outData(uint8_t * const data, uint16_t size) { // Don't read more than we have NOMORE(size, pageDataFree()); memcpy(data, m_pageData + m_pageDataUsed, size); @@ -306,7 +306,7 @@ void SPIFlashStorage::readData(uint8_t *data, uint16_t size) { if (pageDataFree() == 0) readPage(); while (size > 0) { - uint16_t read = outData(data, size); + const uint16_t read = outData(data, size); size -= read; // Need to write more? Flush page and continue! if (size > 0) { diff --git a/Marlin/src/lcd/extui/mks_ui/SPIFlashStorage.h b/Marlin/src/lcd/extui/mks_ui/SPIFlashStorage.h index 72394286ac..bd7109b7ac 100644 --- a/Marlin/src/lcd/extui/mks_ui/SPIFlashStorage.h +++ b/Marlin/src/lcd/extui/mks_ui/SPIFlashStorage.h @@ -75,23 +75,23 @@ class SPIFlashStorage { public: // Write operation - static void beginWrite(uint32_t startAddress); + static void beginWrite(const uint32_t startAddress); static void endWrite(); - static void writeData(uint8_t *data, uint16_t size); + static void writeData(const uint8_t *data, uint16_t size); // Read operation - static void beginRead(uint32_t startAddress); + static void beginRead(const uint32_t startAddress); static void readData(uint8_t *data, uint16_t size); static uint32_t getCurrentPage() { return m_currentPage; } private: static void flushPage(); - static void savePage(uint8_t *buffer); - static void loadPage(uint8_t *buffer); + static void savePage(uint8_t * const buffer); + static void loadPage(uint8_t * const buffer); static void readPage(); - static uint16_t inData(uint8_t *data, uint16_t size); - static uint16_t outData(uint8_t *data, uint16_t size); + static uint16_t inData(const uint8_t * const data, uint16_t size); + static uint16_t outData(uint8_t * const data, uint16_t size); static uint8_t m_pageData[SPI_FLASH_PageSize]; static uint32_t m_currentPage; diff --git a/Marlin/src/sd/Sd2Card.cpp b/Marlin/src/sd/Sd2Card.cpp index 2d84c95a3d..81cc032304 100644 --- a/Marlin/src/sd/Sd2Card.cpp +++ b/Marlin/src/sd/Sd2Card.cpp @@ -345,7 +345,7 @@ bool DiskIODriver_SPI_SD::init(const uint8_t sckRateID, const pin_t chipSelectPi * \param[out] dst Pointer to the location that will receive the data. * \return true for success, false for failure. */ -bool DiskIODriver_SPI_SD::readBlock(uint32_t blockNumber, uint8_t *dst) { +bool DiskIODriver_SPI_SD::readBlock(uint32_t blockNumber, uint8_t * const dst) { #if IS_TEENSY_35_36 || IS_TEENSY_40_41 return 0 == SDHC_CardReadBlock(dst, blockNumber); #endif @@ -385,7 +385,7 @@ bool DiskIODriver_SPI_SD::readBlock(uint32_t blockNumber, uint8_t *dst) { * * \return true for success, false for failure. */ -bool DiskIODriver_SPI_SD::readData(uint8_t *dst) { +bool DiskIODriver_SPI_SD::readData(uint8_t * const dst) { chipSelect(); return readData(dst, 512); } @@ -455,7 +455,7 @@ bool DiskIODriver_SPI_SD::readData(uint8_t *dst) { #endif // SD_CHECK_AND_RETRY -bool DiskIODriver_SPI_SD::readData(uint8_t *dst, const uint16_t count) { +bool DiskIODriver_SPI_SD::readData(uint8_t * const dst, const uint16_t count) { bool success = false; const millis_t read_timeout = millis() + SD_READ_TIMEOUT; @@ -487,8 +487,8 @@ bool DiskIODriver_SPI_SD::readData(uint8_t *dst, const uint16_t count) { } /** read CID or CSR register */ -bool DiskIODriver_SPI_SD::readRegister(const uint8_t cmd, void *buf) { - uint8_t *dst = reinterpret_cast(buf); +bool DiskIODriver_SPI_SD::readRegister(const uint8_t cmd, void * const buf) { + uint8_t * const dst = reinterpret_cast(buf); if (cardCommand(cmd, 0)) { error(SD_CARD_ERROR_READ_REG); chipDeselect(); @@ -567,7 +567,7 @@ void DiskIODriver_SPI_SD::error(const uint8_t code) { errorCode_ = code; } * \param[in] src Pointer to the location of the data to be written. * \return true for success, false for failure. */ -bool DiskIODriver_SPI_SD::writeBlock(uint32_t blockNumber, const uint8_t *src) { +bool DiskIODriver_SPI_SD::writeBlock(uint32_t blockNumber, const uint8_t * const src) { if (ENABLED(SDCARD_READONLY)) return false; #if IS_TEENSY_35_36 || IS_TEENSY_40_41 @@ -598,7 +598,7 @@ bool DiskIODriver_SPI_SD::writeBlock(uint32_t blockNumber, const uint8_t *src) { * \param[in] src Pointer to the location of the data to be written. * \return true for success, false for failure. */ -bool DiskIODriver_SPI_SD::writeData(const uint8_t *src) { +bool DiskIODriver_SPI_SD::writeData(const uint8_t * const src) { if (ENABLED(SDCARD_READONLY)) return false; bool success = true; @@ -613,7 +613,7 @@ bool DiskIODriver_SPI_SD::writeData(const uint8_t *src) { } // Send one block of data for write block or write multiple blocks -bool DiskIODriver_SPI_SD::writeData(const uint8_t token, const uint8_t *src) { +bool DiskIODriver_SPI_SD::writeData(const uint8_t token, const uint8_t * const src) { if (ENABLED(SDCARD_READONLY)) return false; const uint16_t crc = TERN(SD_CHECK_AND_RETRY, CRC_CCITT(src, 512), 0xFFFF); diff --git a/Marlin/src/sd/Sd2Card.h b/Marlin/src/sd/Sd2Card.h index e0dce02a02..23677b24fa 100644 --- a/Marlin/src/sd/Sd2Card.h +++ b/Marlin/src/sd/Sd2Card.h @@ -143,7 +143,7 @@ public: * * \return true for success or false for failure. */ - bool readCID(cid_t *cid) { return readRegister(CMD10, cid); } + bool readCID(cid_t * const cid) { return readRegister(CMD10, cid); } /** * Read a card's CSD register. The CSD contains Card-Specific Data that @@ -153,18 +153,18 @@ public: * * \return true for success or false for failure. */ - inline bool readCSD(csd_t *csd) override { return readRegister(CMD9, csd); } + inline bool readCSD(csd_t * const csd) override { return readRegister(CMD9, csd); } - bool readData(uint8_t *dst) override; + bool readData(uint8_t * const dst) override; bool readStart(uint32_t blockNumber) override; bool readStop() override; - bool writeData(const uint8_t *src) override; - bool writeStart(const uint32_t blockNumber, const uint32_t eraseCount) override; + bool writeData(const uint8_t * const src) override; + bool writeStart(uint32_t blockNumber, const uint32_t eraseCount) override; bool writeStop() override; - bool readBlock(uint32_t block, uint8_t *dst) override; - bool writeBlock(uint32_t blockNumber, const uint8_t *src) override; + bool readBlock(uint32_t blockNumber, uint8_t * const dst) override; + bool writeBlock(uint32_t blockNumber, const uint8_t * const src) override; uint32_t cardSize() override; @@ -187,11 +187,11 @@ private: } uint8_t cardCommand(const uint8_t cmd, const uint32_t arg); - bool readData(uint8_t *dst, const uint16_t count); - bool readRegister(const uint8_t cmd, void *buf); + bool readData(uint8_t * const dst, const uint16_t count); + bool readRegister(const uint8_t cmd, void * const buf); void chipDeselect(); void chipSelect(); inline void type(const uint8_t value) { type_ = value; } bool waitNotBusy(const millis_t timeout_ms); - bool writeData(const uint8_t token, const uint8_t *src); + bool writeData(const uint8_t token, const uint8_t * const src); }; diff --git a/Marlin/src/sd/SdBaseFile.cpp b/Marlin/src/sd/SdBaseFile.cpp index 818f0dcb37..4f4a8e9fa9 100644 --- a/Marlin/src/sd/SdBaseFile.cpp +++ b/Marlin/src/sd/SdBaseFile.cpp @@ -91,7 +91,7 @@ bool SdBaseFile::addDirCluster() { // cache a file's directory entry // cache the current "dirBlock_" and return the entry at index "dirIndex_" // return pointer to cached entry or null for failure -dir_t* SdBaseFile::cacheDirEntry(uint8_t action) { +dir_t* SdBaseFile::cacheDirEntry(const uint8_t action) { if (!vol_->cacheRawBlock(dirBlock_, action)) return nullptr; return vol_->cache()->dir + dirIndex_; } @@ -119,7 +119,7 @@ bool SdBaseFile::close() { * Reasons for failure include file is not contiguous, file has zero length * or an I/O error occurred. */ -bool SdBaseFile::contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock) { +bool SdBaseFile::contiguousRange(uint32_t * const bgnBlock, uint32_t * const endBlock) { // error if no blocks if (firstCluster_ == 0) return false; @@ -156,7 +156,7 @@ bool SdBaseFile::contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock) { * a file is already open, the file already exists, the root * directory is full or an I/O error. */ -bool SdBaseFile::createContiguous(SdBaseFile *dirFile, const char *path, uint32_t size) { +bool SdBaseFile::createContiguous(SdBaseFile * const dirFile, const char * const path, const uint32_t size) { if (ENABLED(SDCARD_READONLY)) return false; uint32_t count; @@ -301,7 +301,7 @@ bool SdBaseFile::getDosName(char * const name) { return true; } -void SdBaseFile::getpos(filepos_t *pos) { +void SdBaseFile::getpos(filepos_t * const pos) { pos->position = curPosition_; pos->cluster = curCluster_; } @@ -337,7 +337,7 @@ void SdBaseFile::ls(uint8_t flags, uint8_t indent) { // saves 32 bytes on stack for ls recursion // return 0 - EOF, 1 - normal file, or 2 - directory -int8_t SdBaseFile::lsPrintNext(uint8_t flags, uint8_t indent) { +int8_t SdBaseFile::lsPrintNext(const uint8_t flags, const uint8_t indent) { dir_t dir; uint8_t w = 0; @@ -400,7 +400,7 @@ uint8_t lfn_checksum(const uint8_t *name) { } // Format directory name field from a 8.3 name string -bool SdBaseFile::make83Name(const char *str, uint8_t *name, const char **ptr) { +bool SdBaseFile::make83Name(const char *str, uint8_t * const name, const char **ptr) { uint8_t n = 7, // Max index until a dot is found i = 11; while (i) name[--i] = ' '; // Set whole FILENAME.EXT to spaces @@ -437,13 +437,11 @@ bool SdBaseFile::make83Name(const char *str, uint8_t *name, const char **ptr) { * Reasons for failure include this file is already open, \a parent is not a * directory, \a path is invalid or already exists in \a parent. */ -bool SdBaseFile::mkdir(SdBaseFile *parent, const char *path, bool pFlag) { +bool SdBaseFile::mkdir(SdBaseFile *parent, const char *path, const bool pFlag/*=true*/) { if (ENABLED(SDCARD_READONLY)) return false; - uint8_t dname[11]; - SdBaseFile dir1, dir2; - SdBaseFile *sub = &dir1; - SdBaseFile *start = parent; + SdBaseFile dir1, dir2, *sub = &dir1; + SdBaseFile * const start = parent; #if ENABLED(LONG_FILENAME_WRITE_SUPPORT) uint8_t dlname[LONG_FILENAME_LENGTH]; @@ -459,6 +457,7 @@ bool SdBaseFile::mkdir(SdBaseFile *parent, const char *path, bool pFlag) { } } + uint8_t dname[11]; for (;;) { if (!TERN(LONG_FILENAME_WRITE_SUPPORT, parsePath(path, dname, dlname, &path), make83Name(path, dname, &path))) return false; while (*path == '/') path++; @@ -474,7 +473,7 @@ bool SdBaseFile::mkdir(SdBaseFile *parent, const char *path, bool pFlag) { return mkdir(parent, dname OPTARG(LONG_FILENAME_WRITE_SUPPORT, dlname)); } -bool SdBaseFile::mkdir(SdBaseFile *parent, const uint8_t dname[11] +bool SdBaseFile::mkdir(SdBaseFile * const parent, const uint8_t dname[11] OPTARG(LONG_FILENAME_WRITE_SUPPORT, const uint8_t dlname[LONG_FILENAME_LENGTH]) ) { if (ENABLED(SDCARD_READONLY)) return false; @@ -541,7 +540,7 @@ bool SdBaseFile::mkdir(SdBaseFile *parent, const uint8_t dname[11] * * \return true for success, false for failure. */ -bool SdBaseFile::open(const char *path, uint8_t oflag) { +bool SdBaseFile::open(const char * const path, const uint8_t oflag) { return open(cwd_, path, oflag); } @@ -595,7 +594,7 @@ bool SdBaseFile::open(const char *path, uint8_t oflag) { * a directory, \a path is invalid, the file does not exist * or can't be opened in the access mode specified by oflag. */ -bool SdBaseFile::open(SdBaseFile *dirFile, const char *path, uint8_t oflag) { +bool SdBaseFile::open(SdBaseFile * const dirFile, const char *path, const uint8_t oflag) { uint8_t dname[11]; SdBaseFile dir1, dir2; SdBaseFile *parent = dirFile, *sub = &dir1; @@ -627,9 +626,9 @@ bool SdBaseFile::open(SdBaseFile *dirFile, const char *path, uint8_t oflag) { } // open with filename in dname and long filename in dlname -bool SdBaseFile::open(SdBaseFile *dirFile, const uint8_t dname[11] +bool SdBaseFile::open(SdBaseFile * const dirFile, const uint8_t dname[11] OPTARG(LONG_FILENAME_WRITE_SUPPORT, const uint8_t dlname[LONG_FILENAME_LENGTH]) - , uint8_t oflag + , const uint8_t oflag ) { bool emptyFound = false, fileFound = false; uint8_t index = 0; @@ -876,7 +875,7 @@ bool SdBaseFile::open(SdBaseFile *dirFile, const uint8_t dname[11] * See open() by path for definition of flags. * \return true for success or false for failure. */ -bool SdBaseFile::open(SdBaseFile *dirFile, uint16_t index, uint8_t oflag) { +bool SdBaseFile::open(SdBaseFile *dirFile, uint16_t index, const uint8_t oflag) { vol_ = dirFile->vol_; // error if already open @@ -902,7 +901,7 @@ bool SdBaseFile::open(SdBaseFile *dirFile, uint16_t index, uint8_t oflag) { } // open a cached directory entry. Assumes vol_ is initialized -bool SdBaseFile::openCachedEntry(uint8_t dirIndex, uint8_t oflag) { +bool SdBaseFile::openCachedEntry(const uint8_t dirIndex, const uint8_t oflag) { dir_t *p; #if ENABLED(SDCARD_READONLY) @@ -962,7 +961,7 @@ bool SdBaseFile::openCachedEntry(uint8_t dirIndex, uint8_t oflag) { * See open() by path for definition of flags. * \return true for success or false for failure. */ -bool SdBaseFile::openNext(SdBaseFile *dirFile, uint8_t oflag) { +bool SdBaseFile::openNext(SdBaseFile *dirFile, const uint8_t oflag) { if (!dirFile) return false; // error if already open @@ -1017,7 +1016,7 @@ bool SdBaseFile::openNext(SdBaseFile *dirFile, uint8_t oflag) { * \return true if the dirname is a long file name (LFN) * \return false if the dirname is a short file name 8.3 (SFN) */ - bool SdBaseFile::isDirNameLFN(const char *dirname) { + bool SdBaseFile::isDirNameLFN(const char * const dirname) { uint8_t length = strlen(dirname), idx = length; bool dotFound = false; if (idx > 12) return true; // LFN due to filename length > 12 ("filename.ext") @@ -1048,7 +1047,7 @@ bool SdBaseFile::openNext(SdBaseFile *dirFile, uint8_t oflag) { * The SFN is without dot ("FILENAMEEXT") * The LFN is complete ("Filename.ext") */ - bool SdBaseFile::parsePath(const char *path, uint8_t *name, uint8_t *lname, const char **ptrNextPath) { + bool SdBaseFile::parsePath(const char *path, uint8_t * const name, uint8_t * const lname, const char **ptrNextPath) { // Init randomizer for SFN generation randomSeed(millis()); // Parse the LFN @@ -1136,7 +1135,7 @@ bool SdBaseFile::openNext(SdBaseFile *dirFile, uint8_t oflag) { /** * Get the LFN filename block from a dir. Get the block in lname at startOffset */ - void SdBaseFile::getLFNName(vfat_t *pFatDir, char *lname, uint8_t sequenceNumber) { + void SdBaseFile::getLFNName(vfat_t *pFatDir, char *lname, const uint8_t sequenceNumber) { const uint8_t startOffset = (sequenceNumber - 1) * FILENAME_LENGTH; LOOP_L_N(i, FILENAME_LENGTH) { const uint16_t utf16_ch = (i >= 11) ? pFatDir->name3[i - 11] : (i >= 5) ? pFatDir->name2[i - 5] : pFatDir->name1[i]; @@ -1156,7 +1155,7 @@ bool SdBaseFile::openNext(SdBaseFile *dirFile, uint8_t oflag) { /** * Set the LFN filename block lname to a dir. Put the block based on sequence number */ - void SdBaseFile::setLFNName(vfat_t *pFatDir, char *lname, uint8_t sequenceNumber) { + void SdBaseFile::setLFNName(vfat_t *pFatDir, char *lname, const uint8_t sequenceNumber) { const uint8_t startOffset = (sequenceNumber - 1) * FILENAME_LENGTH, nameLength = strlen(lname); LOOP_L_N(i, FILENAME_LENGTH) { @@ -1305,7 +1304,7 @@ static void print2u(const uint8_t v) { * \param[in] pr Print stream for output. * \param[in] fatDate The date field from a directory entry. */ -void SdBaseFile::printFatDate(uint16_t fatDate) { +void SdBaseFile::printFatDate(const uint16_t fatDate) { SERIAL_ECHO(FAT_YEAR(fatDate)); SERIAL_CHAR('-'); print2u(FAT_MONTH(fatDate)); @@ -1322,7 +1321,7 @@ void SdBaseFile::printFatDate(uint16_t fatDate) { * \param[in] pr Print stream for output. * \param[in] fatTime The time field from a directory entry. */ -void SdBaseFile::printFatTime(uint16_t fatTime) { +void SdBaseFile::printFatTime(const uint16_t fatTime) { print2u(FAT_HOUR(fatTime)); SERIAL_CHAR(':'); print2u(FAT_MINUTE(fatTime)); @@ -1367,7 +1366,7 @@ int16_t SdBaseFile::read() { * read() called before a file has been opened, corrupt file system * or an I/O error occurred. */ -int16_t SdBaseFile::read(void *buf, uint16_t nbyte) { +int16_t SdBaseFile::read(void * const buf, uint16_t nbyte) { uint8_t *dst = reinterpret_cast(buf); uint16_t offset, toRead; uint32_t block; // raw device block number @@ -1429,7 +1428,7 @@ int16_t SdBaseFile::read(void *buf, uint16_t nbyte) { * readDir() called before a directory has been opened, this is not * a directory file or an I/O error occurred. */ -int8_t SdBaseFile::readDir(dir_t *dir, char * const longFilename) { +int8_t SdBaseFile::readDir(dir_t * const dir, char * const longFilename) { int16_t n; // if not a directory file or miss-positioned return an error if (!isDir() || (0x1F & curPosition_)) return -1; @@ -1676,7 +1675,7 @@ bool SdBaseFile::remove() { * \a dirFile is not a directory, \a path is not found * or an I/O error occurred. */ -bool SdBaseFile::remove(SdBaseFile *dirFile, const char *path) { +bool SdBaseFile::remove(SdBaseFile * const dirFile, const char * const path) { if (ENABLED(SDCARD_READONLY)) return false; SdBaseFile file; @@ -1715,7 +1714,7 @@ bool SdBaseFile::hide(const bool hidden) { * Reasons for failure include \a dirFile is not open or is not a directory * file, newPath is invalid or already exists, or an I/O error occurs. */ -bool SdBaseFile::rename(SdBaseFile *dirFile, const char *newPath) { +bool SdBaseFile::rename(SdBaseFile * const dirFile, const char * const newPath) { if (ENABLED(SDCARD_READONLY)) return false; uint32_t dirCluster = 0; @@ -1900,7 +1899,7 @@ bool SdBaseFile::rmRfStar() { * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive * OR of open flags. see SdBaseFile::open(SdBaseFile*, const char*, uint8_t). */ -SdBaseFile::SdBaseFile(const char *path, uint8_t oflag) { +SdBaseFile::SdBaseFile(const char * const path, const uint8_t oflag) { type_ = FAT_FILE_TYPE_CLOSED; writeError = false; open(path, oflag); @@ -1943,7 +1942,7 @@ bool SdBaseFile::seekSet(const uint32_t pos) { return true; } -void SdBaseFile::setpos(filepos_t *pos) { +void SdBaseFile::setpos(filepos_t * const pos) { curPosition_ = pos->position; curCluster_ = pos->cluster; } @@ -1998,7 +1997,7 @@ bool SdBaseFile::sync() { * * \return true for success, false for failure. */ -bool SdBaseFile::timestamp(SdBaseFile *file) { +bool SdBaseFile::timestamp(SdBaseFile * const file) { dir_t dir; // get timestamps @@ -2055,8 +2054,8 @@ bool SdBaseFile::timestamp(SdBaseFile *file) { * * \return true for success, false for failure. */ -bool SdBaseFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, - uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) { +bool SdBaseFile::timestamp(const uint8_t flags, const uint16_t year, const uint8_t month, + const uint8_t day, const uint8_t hour, const uint8_t minute, const uint8_t second) { if (ENABLED(SDCARD_READONLY)) return false; uint16_t dirDate, dirTime; diff --git a/Marlin/src/sd/SdBaseFile.h b/Marlin/src/sd/SdBaseFile.h index 19225170f9..046c2447cb 100644 --- a/Marlin/src/sd/SdBaseFile.h +++ b/Marlin/src/sd/SdBaseFile.h @@ -89,7 +89,7 @@ uint8_t const FAT_FILE_TYPE_CLOSED = 0, // This file h * * \return Packed date for dir_t entry. */ -static inline uint16_t FAT_DATE(uint16_t year, uint8_t month, uint8_t day) { return (year - 1980) << 9 | month << 5 | day; } +static inline uint16_t FAT_DATE(const uint16_t year, const uint8_t month, const uint8_t day) { return (year - 1980) << 9 | month << 5 | day; } /** * year part of FAT directory date field @@ -97,7 +97,7 @@ static inline uint16_t FAT_DATE(uint16_t year, uint8_t month, uint8_t day) { ret * * \return Extracted year [1980,2107] */ -static inline uint16_t FAT_YEAR(uint16_t fatDate) { return 1980 + (fatDate >> 9); } +static inline uint16_t FAT_YEAR(const uint16_t fatDate) { return 1980 + (fatDate >> 9); } /** * month part of FAT directory date field @@ -105,7 +105,7 @@ static inline uint16_t FAT_YEAR(uint16_t fatDate) { return 1980 + (fatDate >> 9) * * \return Extracted month [1,12] */ -static inline uint8_t FAT_MONTH(uint16_t fatDate) { return (fatDate >> 5) & 0xF; } +static inline uint8_t FAT_MONTH(const uint16_t fatDate) { return (fatDate >> 5) & 0xF; } /** * day part of FAT directory date field @@ -113,7 +113,7 @@ static inline uint8_t FAT_MONTH(uint16_t fatDate) { return (fatDate >> 5) & 0xF; * * \return Extracted day [1,31] */ -static inline uint8_t FAT_DAY(uint16_t fatDate) { return fatDate & 0x1F; } +static inline uint8_t FAT_DAY(const uint16_t fatDate) { return fatDate & 0x1F; } /** * time field for FAT directory entry @@ -123,7 +123,7 @@ static inline uint8_t FAT_DAY(uint16_t fatDate) { return fatDate & 0x1F; } * * \return Packed time for dir_t entry. */ -static inline uint16_t FAT_TIME(uint8_t hour, uint8_t minute, uint8_t second) { return hour << 11 | minute << 5 | second >> 1; } +static inline uint16_t FAT_TIME(const uint8_t hour, const uint8_t minute, const uint8_t second) { return hour << 11 | minute << 5 | second >> 1; } /** * hour part of FAT directory time field @@ -131,7 +131,7 @@ static inline uint16_t FAT_TIME(uint8_t hour, uint8_t minute, uint8_t second) { * * \return Extracted hour [0,23] */ -static inline uint8_t FAT_HOUR(uint16_t fatTime) { return fatTime >> 11; } +static inline uint8_t FAT_HOUR(const uint16_t fatTime) { return fatTime >> 11; } /** * minute part of FAT directory time field @@ -139,7 +139,7 @@ static inline uint8_t FAT_HOUR(uint16_t fatTime) { return fatTime >> 11; } * * \return Extracted minute [0,59] */ -static inline uint8_t FAT_MINUTE(uint16_t fatTime) { return (fatTime >> 5) & 0x3F; } +static inline uint8_t FAT_MINUTE(const uint16_t fatTime) { return (fatTime >> 5) & 0x3F; } /** * second part of FAT directory time field @@ -149,7 +149,7 @@ static inline uint8_t FAT_MINUTE(uint16_t fatTime) { return (fatTime >> 5) & 0x3 * * \return Extracted second [0,58] */ -static inline uint8_t FAT_SECOND(uint16_t fatTime) { return 2 * (fatTime & 0x1F); } +static inline uint8_t FAT_SECOND(const uint16_t fatTime) { return 2 * (fatTime & 0x1F); } // Default date for file timestamps is 1 Jan 2000 uint16_t const FAT_DEFAULT_DATE = ((2000 - 1980) << 9) | (1 << 5) | 1; @@ -163,7 +163,7 @@ uint16_t const FAT_DEFAULT_TIME = (1 << 11); class SdBaseFile { public: SdBaseFile() : writeError(false), type_(FAT_FILE_TYPE_CLOSED) {} - SdBaseFile(const char *path, uint8_t oflag); + SdBaseFile(const char * const path, const uint8_t oflag); ~SdBaseFile() { if (isOpen()) close(); } /** @@ -179,18 +179,17 @@ class SdBaseFile { * get position for streams * \param[out] pos struct to receive position */ - void getpos(filepos_t *pos); + void getpos(filepos_t * const pos); /** * set position for streams * \param[out] pos struct with value for new position */ - void setpos(filepos_t *pos); + void setpos(filepos_t * const pos); bool close(); - bool contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock); - bool createContiguous(SdBaseFile *dirFile, - const char *path, uint32_t size); + bool contiguousRange(uint32_t * const bgnBlock, uint32_t * const endBlock); + bool createContiguous(SdBaseFile * const dirFile, const char * const path, const uint32_t size); /** * \return The current cluster number for a file or directory. */ @@ -235,7 +234,7 @@ class SdBaseFile { * See the timestamp() function. */ static void dateTimeCallback( - void (*dateTime)(uint16_t *date, uint16_t *time)) { + void (*dateTime)(uint16_t * const date, uint16_t * const time)) { dateTime_ = dateTime; } @@ -246,7 +245,7 @@ class SdBaseFile { bool dirEntry(dir_t *dir); static void dirName(const dir_t& dir, char *name); bool exists(const char *name); - int16_t fgets(char *str, int16_t num, char *delim = 0); + int16_t fgets(char *str, int16_t num, char *delim=0); /** * \return The total number of bytes in a file or directory. @@ -284,29 +283,29 @@ class SdBaseFile { bool isRoot() const { return type_ == FAT_FILE_TYPE_ROOT_FIXED || type_ == FAT_FILE_TYPE_ROOT32; } bool getDosName(char * const name); - void ls(uint8_t flags = 0, uint8_t indent = 0); + void ls(uint8_t flags=0, uint8_t indent=0); - bool mkdir(SdBaseFile *dir, const char *path, bool pFlag = true); - bool open(SdBaseFile *dirFile, uint16_t index, uint8_t oflag); - bool open(SdBaseFile *dirFile, const char *path, uint8_t oflag); - bool open(const char *path, uint8_t oflag = O_READ); - bool openNext(SdBaseFile *dirFile, uint8_t oflag); - bool openRoot(SdVolume *vol); + bool mkdir(SdBaseFile *parent, const char *path, const bool pFlag=true); + bool open(SdBaseFile * const dirFile, uint16_t index, const uint8_t oflag); + bool open(SdBaseFile * const dirFile, const char *path, const uint8_t oflag); + bool open(const char * const path, const uint8_t oflag=O_READ); + bool openNext(SdBaseFile * const dirFile, const uint8_t oflag); + bool openRoot(SdVolume * const vol); int peek(); - static void printFatDate(uint16_t fatDate); - static void printFatTime(uint16_t fatTime); + static void printFatDate(const uint16_t fatDate); + static void printFatTime(const uint16_t fatTime); bool printName(); int16_t read(); - int16_t read(void *buf, uint16_t nbyte); - int8_t readDir(dir_t *dir, char * const longFilename); - static bool remove(SdBaseFile *dirFile, const char *path); + int16_t read(void * const buf, uint16_t nbyte); + int8_t readDir(dir_t * const dir, char * const longFilename); + static bool remove(SdBaseFile * const dirFile, const char * const path); bool remove(); /** * Set the file's current position to zero. */ void rewind() { seekSet(0); } - bool rename(SdBaseFile *dirFile, const char *newPath); + bool rename(SdBaseFile * const dirFile, const char * const newPath); bool rmdir(); bool rmRfStar(); @@ -327,12 +326,12 @@ class SdBaseFile { * \param[in] offset The new position in bytes from end-of-file. * \return true for success or false for failure. */ - bool seekEnd(const int32_t offset = 0) { return seekSet(fileSize_ + offset); } + bool seekEnd(const int32_t offset=0) { return seekSet(fileSize_ + offset); } bool seekSet(const uint32_t pos); bool sync(); - bool timestamp(SdBaseFile *file); - bool timestamp(uint8_t flag, uint16_t year, uint8_t month, uint8_t day, - uint8_t hour, uint8_t minute, uint8_t second); + bool timestamp(SdBaseFile * const file); + bool timestamp(const uint8_t flag, const uint16_t year, const uint8_t month, const uint8_t day, + const uint8_t hour, const uint8_t minute, const uint8_t second); /** * Type of file. Use isFile() or isDir() instead of type() if possible. @@ -379,17 +378,17 @@ class SdBaseFile { // private functions bool addCluster(); bool addDirCluster(); - dir_t* cacheDirEntry(uint8_t action); - int8_t lsPrintNext(uint8_t flags, uint8_t indent); - static bool make83Name(const char *str, uint8_t *name, const char **ptr); - bool mkdir(SdBaseFile *parent, const uint8_t dname[11] + dir_t* cacheDirEntry(const uint8_t action); + int8_t lsPrintNext(const uint8_t flags, const uint8_t indent); + static bool make83Name(const char *str, uint8_t * const name, const char **ptr); + bool mkdir(SdBaseFile * const parent, const uint8_t dname[11] OPTARG(LONG_FILENAME_WRITE_SUPPORT, const uint8_t dlname[LONG_FILENAME_LENGTH]) ); bool open(SdBaseFile *dirFile, const uint8_t dname[11] OPTARG(LONG_FILENAME_WRITE_SUPPORT, const uint8_t dlname[LONG_FILENAME_LENGTH]) - , uint8_t oflag + , const uint8_t oflag ); - bool openCachedEntry(uint8_t cacheIndex, uint8_t oflags); + bool openCachedEntry(const uint8_t dirIndex, const uint8_t oflags); dir_t* readDirCache(); #if ENABLED(UTF_FILENAME_SUPPORT) @@ -399,11 +398,11 @@ class SdBaseFile { // Long Filename create/write support #if ENABLED(LONG_FILENAME_WRITE_SUPPORT) static bool isDirLFN(const dir_t* dir); - static bool isDirNameLFN(const char *dirname); - static bool parsePath(const char *str, uint8_t *name, uint8_t *lname, const char **ptr); + static bool isDirNameLFN(const char * const dirname); + static bool parsePath(const char *str, uint8_t * const name, uint8_t * const lname, const char **ptr); // Return the number of entries needed in the FAT for this LFN - static inline uint8_t getLFNEntriesNum(const char *lname) { return (strlen(lname) + 12) / 13; } - static void getLFNName(vfat_t *vFatDir, char *lname, uint8_t startOffset); - static void setLFNName(vfat_t *vFatDir, char *lname, uint8_t lfnSequenceNumber); + static uint8_t getLFNEntriesNum(const char * const lname) { return (strlen(lname) + 12) / 13; } + static void getLFNName(vfat_t *vFatDir, char *lname, const uint8_t sequenceNumber); + static void setLFNName(vfat_t *vFatDir, char *lname, const uint8_t sequenceNumber); #endif }; diff --git a/Marlin/src/sd/SdFile.cpp b/Marlin/src/sd/SdFile.cpp index bce96ef02d..ac5f6f9234 100644 --- a/Marlin/src/sd/SdFile.cpp +++ b/Marlin/src/sd/SdFile.cpp @@ -43,7 +43,7 @@ * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive * OR of open flags. see SdBaseFile::open(SdBaseFile*, const char*, uint8_t). */ -SdFile::SdFile(const char *path, uint8_t oflag) : SdBaseFile(path, oflag) { } +SdFile::SdFile(const char * const path, const uint8_t oflag) : SdBaseFile(path, oflag) { } /** * Write data to an open file. @@ -60,7 +60,7 @@ SdFile::SdFile(const char *path, uint8_t oflag) : SdBaseFile(path, oflag) { } * include write() is called before a file has been opened, write is called * for a read-only file, device is full, a corrupt file system or an I/O error. */ -int16_t SdFile::write(const void *buf, uint16_t nbyte) { return SdBaseFile::write(buf, nbyte); } +int16_t SdFile::write(const void * const buf, const uint16_t nbyte) { return SdBaseFile::write(buf, nbyte); } /** * Write a byte to a file. Required by the Arduino Print class. @@ -68,9 +68,9 @@ int16_t SdFile::write(const void *buf, uint16_t nbyte) { return SdBaseFile::writ * Use writeError to check for errors. */ #if ARDUINO >= 100 - size_t SdFile::write(uint8_t b) { return SdBaseFile::write(&b, 1); } + size_t SdFile::write(const uint8_t b) { return SdBaseFile::write(&b, 1); } #else - void SdFile::write(uint8_t b) { SdBaseFile::write(&b, 1); } + void SdFile::write(const uint8_t b) { SdBaseFile::write(&b, 1); } #endif /** @@ -78,7 +78,7 @@ int16_t SdFile::write(const void *buf, uint16_t nbyte) { return SdBaseFile::writ * \param[in] str Pointer to the string. * Use writeError to check for errors. */ -void SdFile::write(const char *str) { SdBaseFile::write(str, strlen(str)); } +void SdFile::write(const char * const str) { SdBaseFile::write(str, strlen(str)); } /** * Write a PROGMEM string to a file. @@ -94,7 +94,7 @@ void SdFile::write_P(PGM_P str) { * \param[in] str Pointer to the PROGMEM string. * Use writeError to check for errors. */ -void SdFile::writeln_P(PGM_P str) { +void SdFile::writeln_P(PGM_P const str) { write_P(str); write_P(PSTR("\r\n")); } diff --git a/Marlin/src/sd/SdFile.h b/Marlin/src/sd/SdFile.h index 81eeadf5b5..b075239ebb 100644 --- a/Marlin/src/sd/SdFile.h +++ b/Marlin/src/sd/SdFile.h @@ -41,17 +41,17 @@ class SdFile : public SdBaseFile { public: SdFile() {} - SdFile(const char *name, uint8_t oflag); + SdFile(const char * const name, const uint8_t oflag); #if ARDUINO >= 100 - size_t write(uint8_t b); + size_t write(const uint8_t b); #else - void write(uint8_t b); + void write(const uint8_t b); #endif - int16_t write(const void *buf, uint16_t nbyte); - void write(const char *str); + int16_t write(const void * const buf, const uint16_t nbyte); + void write(const char * const str); void write_P(PGM_P str); - void writeln_P(PGM_P str); + void writeln_P(PGM_P const str); }; using MediaFile = SdFile; diff --git a/Marlin/src/sd/SdVolume.cpp b/Marlin/src/sd/SdVolume.cpp index 1b1fdc5a7c..8c06c74537 100644 --- a/Marlin/src/sd/SdVolume.cpp +++ b/Marlin/src/sd/SdVolume.cpp @@ -47,7 +47,7 @@ #endif // find a contiguous group of clusters -bool SdVolume::allocContiguous(uint32_t count, uint32_t *curCluster) { +bool SdVolume::allocContiguous(const uint32_t count, uint32_t * const curCluster) { if (ENABLED(SDCARD_READONLY)) return false; // start of group @@ -138,7 +138,7 @@ bool SdVolume::cacheFlush() { return true; } -bool SdVolume::cacheRawBlock(uint32_t blockNumber, bool dirty) { +bool SdVolume::cacheRawBlock(const uint32_t blockNumber, const bool dirty) { if (cacheBlockNumber_ != blockNumber) { if (!cacheFlush()) return false; if (!sdCard_->readBlock(blockNumber, cacheBuffer_.data)) return false; @@ -149,7 +149,7 @@ bool SdVolume::cacheRawBlock(uint32_t blockNumber, bool dirty) { } // return the size in bytes of a cluster chain -bool SdVolume::chainSize(uint32_t cluster, uint32_t *size) { +bool SdVolume::chainSize(uint32_t cluster, uint32_t * const size) { uint32_t s = 0; do { if (!fatGet(cluster, &cluster)) return false; @@ -160,7 +160,7 @@ bool SdVolume::chainSize(uint32_t cluster, uint32_t *size) { } // Fetch a FAT entry -bool SdVolume::fatGet(uint32_t cluster, uint32_t *value) { +bool SdVolume::fatGet(const uint32_t cluster, uint32_t * const value) { uint32_t lba; if (cluster > (clusterCount_ + 1)) return false; if (FAT12_SUPPORT && fatType_ == 12) { @@ -195,7 +195,7 @@ bool SdVolume::fatGet(uint32_t cluster, uint32_t *value) { } // Store a FAT entry -bool SdVolume::fatPut(uint32_t cluster, uint32_t value) { +bool SdVolume::fatPut(const uint32_t cluster, const uint32_t value) { if (ENABLED(SDCARD_READONLY)) return false; uint32_t lba; @@ -326,7 +326,7 @@ int32_t SdVolume::freeClusterCount() { * Reasons for failure include not finding a valid partition, not finding a valid * FAT file system in the specified partition or an I/O error. */ -bool SdVolume::init(DiskIODriver* dev, uint8_t part) { +bool SdVolume::init(DiskIODriver * const dev, const uint8_t part) { uint32_t totalBlocks, volumeStartBlock = 0; fat32_boot_t *fbs; diff --git a/Marlin/src/sd/SdVolume.h b/Marlin/src/sd/SdVolume.h index 3097773030..ccf595a593 100644 --- a/Marlin/src/sd/SdVolume.h +++ b/Marlin/src/sd/SdVolume.h @@ -93,8 +93,8 @@ class SdVolume { * Reasons for failure include not finding a valid partition, not finding * a valid FAT file system or an I/O error. */ - bool init(DiskIODriver *dev) { return init(dev, 1) || init(dev, 0); } - bool init(DiskIODriver *dev, uint8_t part); + bool init(DiskIODriver * const dev) { return init(dev, 1) || init(dev, 0); } + bool init(DiskIODriver * const dev, const uint8_t part); // inline functions that return volume info uint8_t blocksPerCluster() const { return blocksPerCluster_; } //> \return The volume's cluster size in blocks. @@ -127,7 +127,7 @@ class SdVolume { * \param[out] v value of entry * \return true for success or false for failure */ - bool dbgFat(uint32_t n, uint32_t *v) { return fatGet(n, v); } + bool dbgFat(const uint32_t n, uint32_t * const v) { return fatGet(n, v); } private: // Allow SdBaseFile access to SdVolume private data. @@ -164,20 +164,20 @@ class SdVolume { uint16_t rootDirEntryCount_; // number of entries in FAT16 root dir uint32_t rootDirStart_; // root start block for FAT16, cluster for FAT32 - bool allocContiguous(uint32_t count, uint32_t *curCluster); - uint8_t blockOfCluster(uint32_t position) const { return (position >> 9) & (blocksPerCluster_ - 1); } - uint32_t clusterStartBlock(uint32_t cluster) const { return dataStartBlock_ + ((cluster - 2) << clusterSizeShift_); } - uint32_t blockNumber(uint32_t cluster, uint32_t position) const { return clusterStartBlock(cluster) + blockOfCluster(position); } + bool allocContiguous(const uint32_t count, uint32_t * const curCluster); + uint8_t blockOfCluster(const uint32_t position) const { return (position >> 9) & (blocksPerCluster_ - 1); } + uint32_t clusterStartBlock(const uint32_t cluster) const { return dataStartBlock_ + ((cluster - 2) << clusterSizeShift_); } + uint32_t blockNumber(const uint32_t cluster, const uint32_t position) const { return clusterStartBlock(cluster) + blockOfCluster(position); } cache_t* cache() { return &cacheBuffer_; } uint32_t cacheBlockNumber() const { return cacheBlockNumber_; } #if USE_MULTIPLE_CARDS bool cacheFlush(); - bool cacheRawBlock(uint32_t blockNumber, bool dirty); + bool cacheRawBlock(const uint32_t blockNumber, const bool dirty); #else static bool cacheFlush(); - static bool cacheRawBlock(uint32_t blockNumber, bool dirty); + static bool cacheRawBlock(const uint32_t blockNumber, const bool dirty); #endif // used by SdBaseFile write to assign cache to SD location @@ -186,18 +186,18 @@ class SdVolume { cacheBlockNumber_ = blockNumber; } void cacheSetDirty() { cacheDirty_ |= CACHE_FOR_WRITE; } - bool chainSize(uint32_t beginCluster, uint32_t *size); - bool fatGet(uint32_t cluster, uint32_t *value); - bool fatPut(uint32_t cluster, uint32_t value); - bool fatPutEOC(uint32_t cluster) { return fatPut(cluster, 0x0FFFFFFF); } + bool chainSize(uint32_t cluster, uint32_t * const size); + bool fatGet(const uint32_t cluster, uint32_t * const value); + bool fatPut(const uint32_t cluster, const uint32_t value); + bool fatPutEOC(const uint32_t cluster) { return fatPut(cluster, 0x0FFFFFFF); } bool freeChain(uint32_t cluster); - bool isEOC(uint32_t cluster) const { - if (FAT12_SUPPORT && fatType_ == 12) return cluster >= FAT12EOC_MIN; + bool isEOC(const uint32_t cluster) const { + if (FAT12_SUPPORT && fatType_ == 12) return cluster >= FAT12EOC_MIN; if (fatType_ == 16) return cluster >= FAT16EOC_MIN; - return cluster >= FAT32EOC_MIN; + return cluster >= FAT32EOC_MIN; } - bool readBlock(uint32_t block, uint8_t *dst) { return sdCard_->readBlock(block, dst); } - bool writeBlock(uint32_t block, const uint8_t *dst) { return sdCard_->writeBlock(block, dst); } + bool readBlock(const uint32_t block, uint8_t * const dst) { return sdCard_->readBlock(block, dst); } + bool writeBlock(const uint32_t block, const uint8_t * const dst) { return sdCard_->writeBlock(block, dst); } }; using MarlinVolume = SdVolume; diff --git a/Marlin/src/sd/disk_io_driver.h b/Marlin/src/sd/disk_io_driver.h index 3e2d688aea..f1f49cf85f 100644 --- a/Marlin/src/sd/disk_io_driver.h +++ b/Marlin/src/sd/disk_io_driver.h @@ -47,18 +47,18 @@ public: * * \return true for success or false for failure. */ - virtual bool readCSD(csd_t* csd) = 0; + virtual bool readCSD(csd_t * const csd) = 0; virtual bool readStart(const uint32_t block) = 0; - virtual bool readData(uint8_t* dst) = 0; + virtual bool readData(uint8_t * const dst) = 0; virtual bool readStop() = 0; virtual bool writeStart(const uint32_t block, const uint32_t) = 0; virtual bool writeData(const uint8_t* src) = 0; virtual bool writeStop() = 0; - virtual bool readBlock(uint32_t block, uint8_t* dst) = 0; - virtual bool writeBlock(uint32_t blockNumber, const uint8_t* src) = 0; + virtual bool readBlock(const uint32_t block, uint8_t * const dst) = 0; + virtual bool writeBlock(const uint32_t blockNumber, const uint8_t * const src) = 0; virtual uint32_t cardSize() = 0; From 836c8ce5e57ffd7d4cb2b0b7364917088d7ca7d5 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 7 Apr 2023 01:49:27 -0500 Subject: [PATCH 230/659] =?UTF-8?q?=F0=9F=8E=A8=20Detab=20some=20build=20f?= =?UTF-8?q?iles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boards/marlin_FYSETC_CHEETAH_V20.json | 2 +- .../variants/MARLIN_ARCHIM/variant.h | 39 +- .../variants/MARLIN_ARTILLERY_RUBY/variant.h | 1 + .../variants/MARLIN_BIGTREE_BTT002/variant.h | 1 + .../variants/MARLIN_BIGTREE_E3_RRF/variant.h | 1 + .../variants/MARLIN_BIGTREE_GTR_V1/variant.h | 1 + .../MARLIN_BIGTREE_SKR_PRO_11/variant.h | 1 + .../variants/MARLIN_BTT_SKR_SE_BX/variant.h | 1 + .../MARLIN_CREALITY_STM32F401RC/variant.h | 1 + .../variants/MARLIN_F103Rx/variant.h | 1 + .../variants/MARLIN_F103VE_LONGER/variant.h | 1 + .../variants/MARLIN_F103Vx/ldscript.ld | 14 +- .../variants/MARLIN_F103Vx/variant.h | 1 + .../variants/MARLIN_F103Zx/ldscript.ld | 13 +- .../variants/MARLIN_F103Zx/variant.h | 1 + .../variants/MARLIN_F401RC/ldscript.ld | 6 +- .../variants/MARLIN_F407VE/variant.h | 1 + .../variants/MARLIN_F446VE/variant.h | 1 + .../variants/MARLIN_F4x7Vx/variant.h | 1 + .../variants/MARLIN_FLY_F407ZG/variant.h | 230 +- .../MARLIN_FYSETC_CHEETAH_V20/variant.h | 1 + .../PeripheralPins.c | 4 +- .../MARLIN_FYSETC_SPIDER_KING407/variant.h | 233 +- .../variants/MARLIN_LERDGE/variant.h | 1 + .../MARLIN_MEGA_EXTENDED/pins_arduino.h | 606 +- .../variants/MARLIN_MKS_SKIPR_V1/variant.h | 1 + .../variants/MARLIN_TH3D_EZBOARD_V2/variant.h | 1 + buildroot/share/cmake/CMakeLists.txt | 8 +- buildroot/share/dwin/bin/README.md | 46 +- buildroot/share/vscode/avrdude_linux.conf | 22874 ++++++++-------- buildroot/share/vscode/avrdude_macOS.conf | 22874 ++++++++-------- buildroot/tests/mks_tinybee | 8 +- buildroot/web-ui/data/www/webmarlin.js | 2 +- 33 files changed, 23496 insertions(+), 23481 deletions(-) diff --git a/buildroot/share/PlatformIO/boards/marlin_FYSETC_CHEETAH_V20.json b/buildroot/share/PlatformIO/boards/marlin_FYSETC_CHEETAH_V20.json index 6c2e093c3b..7dd7542c6d 100644 --- a/buildroot/share/PlatformIO/boards/marlin_FYSETC_CHEETAH_V20.json +++ b/buildroot/share/PlatformIO/boards/marlin_FYSETC_CHEETAH_V20.json @@ -55,7 +55,7 @@ "dfu", "jlink" ], - "offset_address": "0x8008000", + "offset_address": "0x8008000", "require_upload_port": true, "use_1200bps_touch": false, "wait_for_upload_port": false diff --git a/buildroot/share/PlatformIO/variants/MARLIN_ARCHIM/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_ARCHIM/variant.h index 11f8f63bfb..c073e9bbdd 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_ARCHIM/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_ARCHIM/variant.h @@ -24,10 +24,10 @@ *----------------------------------------------------------------------------*/ /** Frequency of the board main oscillator */ -#define VARIANT_MAINOSC 12000000 +#define VARIANT_MAINOSC 12000000 /** Master clock frequency */ -#define VARIANT_MCK 84000000 +#define VARIANT_MCK 84000000 /*---------------------------------------------------------------------------- * Headers @@ -119,13 +119,13 @@ extern "C"{ #define BOARD_SPI_DEFAULT_SS BOARD_SPI_SS3 #define BOARD_PIN_TO_SPI_PIN(x) \ - (x==BOARD_SPI_SS0 ? PIN_SPI_SS0 : \ - (x==BOARD_SPI_SS1 ? PIN_SPI_SS1 : \ - (x==BOARD_SPI_SS2 ? PIN_SPI_SS2 : PIN_SPI_SS3 ))) + (x==BOARD_SPI_SS0 ? PIN_SPI_SS0 : \ + (x==BOARD_SPI_SS1 ? PIN_SPI_SS1 : \ + (x==BOARD_SPI_SS2 ? PIN_SPI_SS2 : PIN_SPI_SS3 ))) #define BOARD_PIN_TO_SPI_CHANNEL(x) \ - (x==BOARD_SPI_SS0 ? 0 : \ - (x==BOARD_SPI_SS1 ? 1 : \ - (x==BOARD_SPI_SS2 ? 2 : 3))) + (x==BOARD_SPI_SS0 ? 0 : \ + (x==BOARD_SPI_SS1 ? 1 : \ + (x==BOARD_SPI_SS2 ? 2 : 3))) static const uint8_t SS = BOARD_SPI_SS0; static const uint8_t SS1 = BOARD_SPI_SS1; @@ -195,7 +195,7 @@ static const uint8_t DAC0 = 66; static const uint8_t DAC1 = 67; static const uint8_t CANRX = 68; static const uint8_t CANTX = 69; -#define ADC_RESOLUTION 12 +#define ADC_RESOLUTION 12 /* * Complementary CAN pins @@ -212,21 +212,21 @@ static const uint8_t CAN1TX = 89; /* * DACC */ -#define DACC_INTERFACE DACC -#define DACC_INTERFACE_ID ID_DACC -#define DACC_RESOLUTION 12 +#define DACC_INTERFACE DACC +#define DACC_INTERFACE_ID ID_DACC +#define DACC_RESOLUTION 12 #define DACC_ISR_HANDLER DACC_Handler #define DACC_ISR_ID DACC_IRQn /* * PWM */ -#define PWM_INTERFACE PWM -#define PWM_INTERFACE_ID ID_PWM -#define PWM_FREQUENCY 31000 -#define PWM_MAX_DUTY_CYCLE 255 -#define PWM_MIN_DUTY_CYCLE 0 -#define PWM_RESOLUTION 8 +#define PWM_INTERFACE PWM +#define PWM_INTERFACE_ID ID_PWM +#define PWM_FREQUENCY 31000 +#define PWM_MAX_DUTY_CYCLE 255 +#define PWM_MIN_DUTY_CYCLE 0 +#define PWM_RESOLUTION 8 /* * TC @@ -236,7 +236,7 @@ static const uint8_t CAN1TX = 89; #define TC_FREQUENCY 100000 #define TC_MAX_DUTY_CYCLE 255 #define TC_MIN_DUTY_CYCLE 0 -#define TC_RESOLUTION 8 +#define TC_RESOLUTION 8 #ifdef __cplusplus } @@ -281,4 +281,3 @@ extern USARTClass Serial3; #define SERIAL_PORT_HARDWARE3 Serial3 #endif /* _VARIANT_ARDUINO_DUE_X_ */ - diff --git a/buildroot/share/PlatformIO/variants/MARLIN_ARTILLERY_RUBY/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_ARTILLERY_RUBY/variant.h index ca7a53d782..f32ff3c28d 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_ARTILLERY_RUBY/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_ARTILLERY_RUBY/variant.h @@ -121,6 +121,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_BTT002/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_BTT002/variant.h index 068d0b9ee5..88b6e45292 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_BTT002/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_BTT002/variant.h @@ -272,6 +272,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_E3_RRF/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_E3_RRF/variant.h index edc1c91c53..90e9998d10 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_E3_RRF/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_E3_RRF/variant.h @@ -267,6 +267,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_GTR_V1/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_GTR_V1/variant.h index d39e665d53..01f19a7933 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_GTR_V1/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_GTR_V1/variant.h @@ -295,6 +295,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_SKR_PRO_11/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_SKR_PRO_11/variant.h index c30d7ecc77..56bc3bdd9e 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_SKR_PRO_11/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_BIGTREE_SKR_PRO_11/variant.h @@ -295,6 +295,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_BTT_SKR_SE_BX/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_BTT_SKR_SE_BX/variant.h index 285ad662e0..f03ba32637 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_BTT_SKR_SE_BX/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_BTT_SKR_SE_BX/variant.h @@ -195,6 +195,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RC/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RC/variant.h index 595601aae0..722a29d00d 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RC/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RC/variant.h @@ -123,6 +123,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F103Rx/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_F103Rx/variant.h index 8f17d052bb..4a0245e7e9 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_F103Rx/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_F103Rx/variant.h @@ -148,6 +148,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F103VE_LONGER/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_F103VE_LONGER/variant.h index 8e4f248c2e..3fac64958c 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_F103VE_LONGER/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_F103VE_LONGER/variant.h @@ -148,6 +148,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F103Vx/ldscript.ld b/buildroot/share/PlatformIO/variants/MARLIN_F103Vx/ldscript.ld index 3013b09607..ac7ac2e904 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_F103Vx/ldscript.ld +++ b/buildroot/share/PlatformIO/variants/MARLIN_F103Vx/ldscript.ld @@ -4,7 +4,7 @@ ** File : LinkerScript.ld ** -** Author : Auto-generated by STM32CubeIDE +** Author : Auto-generated by STM32CubeIDE ** ** Abstract : Linker script for STM32F103V(8/B/C/E/F/GTx Device from STM32F1 series ** 64/128/256/512/768/1024Kbytes FLASH @@ -54,15 +54,15 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ -_estack = 0x20000000 + LD_MAX_DATA_SIZE; /* end of "RAM" Ram type memory */ +_estack = 0x20000000 + LD_MAX_DATA_SIZE; /* end of "RAM" Ram type memory */ _Min_Heap_Size = 0x200; /* required amount of heap */ _Min_Stack_Size = 0x400; /* required amount of stack */ /* Memories definition */ MEMORY { - RAM (xrw) : ORIGIN = 0x20000000, LENGTH = LD_MAX_DATA_SIZE - FLASH (rx) : ORIGIN = 0x8000000 + LD_FLASH_OFFSET, LENGTH = LD_MAX_SIZE - LD_FLASH_OFFSET + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = LD_MAX_DATA_SIZE + FLASH (rx) : ORIGIN = 0x8000000 + LD_FLASH_OFFSET, LENGTH = LD_MAX_SIZE - LD_FLASH_OFFSET } /* Sections */ @@ -103,9 +103,9 @@ SECTIONS } >FLASH .ARM.extab : { - . = ALIGN(4); - *(.ARM.extab* .gnu.linkonce.armextab.*) - . = ALIGN(4); + . = ALIGN(4); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(4); } >FLASH .ARM : { . = ALIGN(4); diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F103Vx/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_F103Vx/variant.h index e01d67fd59..4061db4e26 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_F103Vx/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_F103Vx/variant.h @@ -158,6 +158,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F103Zx/ldscript.ld b/buildroot/share/PlatformIO/variants/MARLIN_F103Zx/ldscript.ld index cac12da5c2..d995458f95 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_F103Zx/ldscript.ld +++ b/buildroot/share/PlatformIO/variants/MARLIN_F103Zx/ldscript.ld @@ -1,10 +1,9 @@ /* ****************************************************************************** ** - ** File : LinkerScript.ld ** -** Author : Auto-generated by STM32CubeIDE +** Author : Auto-generated by STM32CubeIDE ** ** Abstract : Linker script for STM32F103Z(C/D/E/G/GTx Device from STM32F1 series ** 256/386/512K/786/1024bytes FLASH @@ -54,7 +53,7 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ -_estack = 0x20000000 + LD_MAX_DATA_SIZE; /* end of "RAM" Ram type memory */ +_estack = 0x20000000 + LD_MAX_DATA_SIZE; /* end of "RAM" Ram type memory */ _Min_Heap_Size = 0x200; /* required amount of heap */ _Min_Stack_Size = 0x400; /* required amount of stack */ @@ -62,7 +61,7 @@ _Min_Stack_Size = 0x400; /* required amount of stack */ MEMORY { RAM (xrw) : ORIGIN = 0x20000000, LENGTH = LD_MAX_DATA_SIZE - FLASH (rx) : ORIGIN = 0x8000000 + LD_FLASH_OFFSET, LENGTH = LD_MAX_SIZE - LD_FLASH_OFFSET + FLASH (rx) : ORIGIN = 0x8000000 + LD_FLASH_OFFSET, LENGTH = LD_MAX_SIZE - LD_FLASH_OFFSET } /* Sections */ @@ -103,9 +102,9 @@ SECTIONS } >FLASH .ARM.extab : { - . = ALIGN(4); - *(.ARM.extab* .gnu.linkonce.armextab.*) - . = ALIGN(4); + . = ALIGN(4); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(4); } >FLASH .ARM : { . = ALIGN(4); diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F103Zx/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_F103Zx/variant.h index 330a7efbf8..8de1e062f9 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_F103Zx/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_F103Zx/variant.h @@ -205,6 +205,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F401RC/ldscript.ld b/buildroot/share/PlatformIO/variants/MARLIN_F401RC/ldscript.ld index c7e67d311e..d028dfc000 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_F401RC/ldscript.ld +++ b/buildroot/share/PlatformIO/variants/MARLIN_F401RC/ldscript.ld @@ -28,10 +28,10 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ -_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ +_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ -_Min_Heap_Size = 0x200; /* required amount of heap */ -_Min_Stack_Size = 0x400; /* required amount of stack */ +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ /* Memories definition */ MEMORY diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F407VE/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_F407VE/variant.h index df8bf064fc..df45a5dbbb 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_F407VE/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_F407VE/variant.h @@ -326,6 +326,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F446VE/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_F446VE/variant.h index 855616f66b..b2111d04f2 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_F446VE/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_F446VE/variant.h @@ -159,6 +159,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F4x7Vx/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_F4x7Vx/variant.h index 0b78be627f..d6f8e9fe83 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_F4x7Vx/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_F4x7Vx/variant.h @@ -176,6 +176,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_FLY_F407ZG/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_FLY_F407ZG/variant.h index 2bfce85e21..80d5d3e009 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_FLY_F407ZG/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_FLY_F407ZG/variant.h @@ -37,121 +37,120 @@ extern "C" { * Pins *----------------------------------------------------------------------------*/ - -#define PA1 0 -#define PA2 1 -#define PA3 2 -#define PA4 3 -#define PA5 4 -#define PA6 5 -#define PA7 6 -#define PA8 7 -#define PA9 8 -#define PA10 9 -#define PA11 10 -#define PA12 11 -#define PA13 12 -#define PA14 13 -#define PA15 14 -#define PB0 15 -#define PB1 16 -#define PB2 17 -#define PB3 18 -#define PB4 19 -#define PB5 20 -#define PB6 21 -#define PB7 22 -#define PB8 23 -#define PB9 24 -#define PB10 25 -#define PB11 26 -#define PB12 27 -#define PB13 28 -#define PB14 29 -#define PB15 30 -#define PC2 31 -#define PC3 32 -#define PC4 33 -#define PC5 34 -#define PC6 35 -#define PC7 36 -#define PC8 37 -#define PC9 38 -#define PC10 39 -#define PC11 40 -#define PC12 41 -#define PC13 42 -#define PC14 43 -#define PC15 44 -#define PD0 45 -#define PD1 46 -#define PD2 47 -#define PD3 48 -#define PD4 49 -#define PD5 50 -#define PD6 51 -#define PD7 52 -#define PD8 53 -#define PD9 54 -#define PD10 55 -#define PD11 56 -#define PD12 57 -#define PD13 58 -#define PD14 59 -#define PD15 60 -#define PE0 61 -#define PE1 62 -#define PE11 63 -#define PE3 64 -#define PE4 65 -#define PE5 66 -#define PE6 67 -#define PE7 68 -#define PE8 69 -#define PE9 70 -#define PE10 71 +#define PA1 0 +#define PA2 1 +#define PA3 2 +#define PA4 3 +#define PA5 4 +#define PA6 5 +#define PA7 6 +#define PA8 7 +#define PA9 8 +#define PA10 9 +#define PA11 10 +#define PA12 11 +#define PA13 12 +#define PA14 13 +#define PA15 14 +#define PB0 15 +#define PB1 16 +#define PB2 17 +#define PB3 18 +#define PB4 19 +#define PB5 20 +#define PB6 21 +#define PB7 22 +#define PB8 23 +#define PB9 24 +#define PB10 25 +#define PB11 26 +#define PB12 27 +#define PB13 28 +#define PB14 29 +#define PB15 30 +#define PC2 31 +#define PC3 32 +#define PC4 33 +#define PC5 34 +#define PC6 35 +#define PC7 36 +#define PC8 37 +#define PC9 38 +#define PC10 39 +#define PC11 40 +#define PC12 41 +#define PC13 42 +#define PC14 43 +#define PC15 44 +#define PD0 45 +#define PD1 46 +#define PD2 47 +#define PD3 48 +#define PD4 49 +#define PD5 50 +#define PD6 51 +#define PD7 52 +#define PD8 53 +#define PD9 54 +#define PD10 55 +#define PD11 56 +#define PD12 57 +#define PD13 58 +#define PD14 59 +#define PD15 60 +#define PE0 61 +#define PE1 62 +#define PE11 63 +#define PE3 64 +#define PE4 65 +#define PE5 66 +#define PE6 67 +#define PE7 68 +#define PE8 69 +#define PE9 70 +#define PE10 71 #define PE2 72 -#define PE12 73 -#define PE13 74 -#define PE14 75 -#define PE15 76 -#define PF0 77 -#define PF1 78 -#define PF2 79 -#define PF6 80 -#define PF7 81 -#define PF8 82 -#define PF9 83 -#define PF11 84 -#define PF12 85 -#define PF13 86 -#define PF14 87 -#define PF15 88 -#define PG0 89 -#define PG1 90 -#define PG2 91 -#define PG3 92 -#define PG4 93 -#define PG5 94 -#define PG6 95 -#define PG7 96 -#define PG8 97 -#define PG9 98 -#define PG10 99 -#define PG11 100 -#define PG12 101 -#define PG13 102 -#define PG14 103 -#define PG15 104 -#define PH0 105 -#define PH1 106 -#define PA0 107 -#define PC1 108 -#define PC0 109 -#define PF10 110 -#define PF5 111 -#define PF4 112 -#define PF3 113 +#define PE12 73 +#define PE13 74 +#define PE14 75 +#define PE15 76 +#define PF0 77 +#define PF1 78 +#define PF2 79 +#define PF6 80 +#define PF7 81 +#define PF8 82 +#define PF9 83 +#define PF11 84 +#define PF12 85 +#define PF13 86 +#define PF14 87 +#define PF15 88 +#define PG0 89 +#define PG1 90 +#define PG2 91 +#define PG3 92 +#define PG4 93 +#define PG5 94 +#define PG6 95 +#define PG7 96 +#define PG8 97 +#define PG9 98 +#define PG10 99 +#define PG11 100 +#define PG12 101 +#define PG13 102 +#define PG14 103 +#define PG15 104 +#define PH0 105 +#define PH1 106 +#define PA0 107 +#define PC1 108 +#define PC0 109 +#define PF10 110 +#define PF5 111 +#define PF4 112 +#define PF3 113 // This must be a literal #define NUM_DIGITAL_PINS 114 @@ -212,6 +211,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ @@ -234,5 +234,5 @@ extern "C" { // pins are NOT connected to anything by default. #define SERIAL_PORT_MONITOR Serial #define SERIAL_PORT_HARDWARE Serial1 -#endif +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_CHEETAH_V20/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_CHEETAH_V20/variant.h index 041c43b55f..ca3664daa1 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_CHEETAH_V20/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_CHEETAH_V20/variant.h @@ -121,6 +121,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/PeripheralPins.c index 4c0a7e4fa1..f8ec838146 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/PeripheralPins.c +++ b/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/PeripheralPins.c @@ -47,10 +47,10 @@ WEAK const PinMap PinMap_ADC[] = { //{PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1 //{PA_1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC2_IN1 //{PA_1, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_IN1 - {PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2 LCD RX + {PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2 LCD RX //{PA_2, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC2_IN2 //{PA_2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC3_IN2 - {PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3 LCD TX + {PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3 LCD TX //{PA_3, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC2_IN3 //{PA_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC3_IN3 //{PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4 diff --git a/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/variant.h index c3a0c16811..abcbba8595 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_FYSETC_SPIDER_KING407/variant.h @@ -37,121 +37,120 @@ extern "C" { * Pins *----------------------------------------------------------------------------*/ - -#define PA1 0 -#define PA2 1 -#define PA3 2 -#define PA4 3 -#define PA5 4 -#define PA6 5 -#define PA7 6 -#define PA8 7 -#define PA9 8 -#define PA10 9 -#define PA11 10 -#define PA12 11 -#define PA13 12 -#define PA14 13 -#define PA15 14 -#define PB0 15 -#define PB1 16 -#define PB2 17 -#define PB3 18 -#define PB4 19 -#define PB5 20 -#define PB6 21 -#define PB7 22 -#define PB8 23 -#define PB9 24 -#define PB10 25 -#define PB11 26 -#define PB12 27 -#define PB13 28 -#define PB14 29 -#define PB15 30 -#define PC2 31 -#define PC3 32 -#define PC4 33 -#define PC5 34 -#define PC6 35 -#define PC7 36 -#define PC8 37 -#define PC9 38 -#define PC10 39 -#define PC11 40 -#define PC12 41 -#define PC13 42 -#define PC14 43 -#define PC15 44 -#define PD0 45 -#define PD1 46 -#define PD2 47 -#define PD3 48 -#define PD4 49 -#define PD5 50 -#define PD6 51 -#define PD7 52 -#define PD8 53 -#define PD9 54 -#define PD10 55 -#define PD11 56 -#define PD12 57 -#define PD13 58 -#define PD14 59 -#define PD15 60 -#define PE0 61 -#define PE1 62 -#define PE11 63 -#define PE3 64 -#define PE4 65 -#define PE5 66 -#define PE6 67 -#define PE7 68 -#define PE8 69 -#define PE9 70 -#define PE10 71 +#define PA1 0 +#define PA2 1 +#define PA3 2 +#define PA4 3 +#define PA5 4 +#define PA6 5 +#define PA7 6 +#define PA8 7 +#define PA9 8 +#define PA10 9 +#define PA11 10 +#define PA12 11 +#define PA13 12 +#define PA14 13 +#define PA15 14 +#define PB0 15 +#define PB1 16 +#define PB2 17 +#define PB3 18 +#define PB4 19 +#define PB5 20 +#define PB6 21 +#define PB7 22 +#define PB8 23 +#define PB9 24 +#define PB10 25 +#define PB11 26 +#define PB12 27 +#define PB13 28 +#define PB14 29 +#define PB15 30 +#define PC2 31 +#define PC3 32 +#define PC4 33 +#define PC5 34 +#define PC6 35 +#define PC7 36 +#define PC8 37 +#define PC9 38 +#define PC10 39 +#define PC11 40 +#define PC12 41 +#define PC13 42 +#define PC14 43 +#define PC15 44 +#define PD0 45 +#define PD1 46 +#define PD2 47 +#define PD3 48 +#define PD4 49 +#define PD5 50 +#define PD6 51 +#define PD7 52 +#define PD8 53 +#define PD9 54 +#define PD10 55 +#define PD11 56 +#define PD12 57 +#define PD13 58 +#define PD14 59 +#define PD15 60 +#define PE0 61 +#define PE1 62 +#define PE11 63 +#define PE3 64 +#define PE4 65 +#define PE5 66 +#define PE6 67 +#define PE7 68 +#define PE8 69 +#define PE9 70 +#define PE10 71 #define PE2 72 -#define PE12 73 -#define PE13 74 -#define PE14 75 -#define PE15 76 -#define PF0 77 -#define PF1 78 -#define PF2 79 -#define PF6 80 -#define PF7 81 -#define PF8 82 -#define PF9 83 -#define PF11 84 -#define PF12 85 -#define PF13 86 -#define PF14 87 -#define PF15 88 -#define PG0 89 -#define PG1 90 -#define PG2 91 -#define PG3 92 -#define PG4 93 -#define PG5 94 -#define PG6 95 -#define PG7 96 -#define PG8 97 -#define PG9 98 -#define PG10 99 -#define PG11 100 -#define PG12 101 -#define PG13 102 -#define PG14 103 -#define PG15 104 -#define PH0 105 -#define PH1 106 -#define PA0 107 -#define PC1 108 -#define PC0 109 -#define PF10 110 -#define PF5 111 -#define PF4 112 -#define PF3 113 +#define PE12 73 +#define PE13 74 +#define PE14 75 +#define PE15 76 +#define PF0 77 +#define PF1 78 +#define PF2 79 +#define PF6 80 +#define PF7 81 +#define PF8 82 +#define PF9 83 +#define PF11 84 +#define PF12 85 +#define PF13 86 +#define PF14 87 +#define PF15 88 +#define PG0 89 +#define PG1 90 +#define PG2 91 +#define PG3 92 +#define PG4 93 +#define PG5 94 +#define PG6 95 +#define PG7 96 +#define PG8 97 +#define PG9 98 +#define PG10 99 +#define PG11 100 +#define PG12 101 +#define PG13 102 +#define PG14 103 +#define PG15 104 +#define PH0 105 +#define PH1 106 +#define PA0 107 +#define PC1 108 +#define PC0 109 +#define PF10 110 +#define PF5 111 +#define PF4 112 +#define PF3 113 // This must be a literal #define NUM_DIGITAL_PINS 114 @@ -210,6 +209,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ @@ -230,8 +230,7 @@ extern "C" { // // SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX // pins are NOT connected to anything by default. -#define SERIAL_PORT_MONITOR Serial -#define SERIAL_PORT_HARDWARE Serial1 +#define SERIAL_PORT_MONITOR Serial +#define SERIAL_PORT_HARDWARE Serial1 #define SERIAL_PORT_HARDWARE_OPEN Serial2 #endif - diff --git a/buildroot/share/PlatformIO/variants/MARLIN_LERDGE/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_LERDGE/variant.h index e7bc7c0bc1..e71bb1c5c8 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_LERDGE/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_LERDGE/variant.h @@ -218,6 +218,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_MEGA_EXTENDED/pins_arduino.h b/buildroot/share/PlatformIO/variants/MARLIN_MEGA_EXTENDED/pins_arduino.h index 1129f8edae..f6bc62d57b 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_MEGA_EXTENDED/pins_arduino.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_MEGA_EXTENDED/pins_arduino.h @@ -118,324 +118,324 @@ static const uint8_t A15 = PIN_A15; #ifdef ARDUINO_MAIN const uint16_t PROGMEM port_to_mode_PGM[] = { - NOT_A_PORT, - (uint16_t) &DDRA, - (uint16_t) &DDRB, - (uint16_t) &DDRC, - (uint16_t) &DDRD, - (uint16_t) &DDRE, - (uint16_t) &DDRF, - (uint16_t) &DDRG, - (uint16_t) &DDRH, - NOT_A_PORT, - (uint16_t) &DDRJ, - (uint16_t) &DDRK, - (uint16_t) &DDRL, + NOT_A_PORT, + (uint16_t) &DDRA, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, + (uint16_t) &DDRE, + (uint16_t) &DDRF, + (uint16_t) &DDRG, + (uint16_t) &DDRH, + NOT_A_PORT, + (uint16_t) &DDRJ, + (uint16_t) &DDRK, + (uint16_t) &DDRL, }; const uint16_t PROGMEM port_to_output_PGM[] = { - NOT_A_PORT, - (uint16_t) &PORTA, - (uint16_t) &PORTB, - (uint16_t) &PORTC, - (uint16_t) &PORTD, - (uint16_t) &PORTE, - (uint16_t) &PORTF, - (uint16_t) &PORTG, - (uint16_t) &PORTH, - NOT_A_PORT, - (uint16_t) &PORTJ, - (uint16_t) &PORTK, - (uint16_t) &PORTL, + NOT_A_PORT, + (uint16_t) &PORTA, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, + (uint16_t) &PORTE, + (uint16_t) &PORTF, + (uint16_t) &PORTG, + (uint16_t) &PORTH, + NOT_A_PORT, + (uint16_t) &PORTJ, + (uint16_t) &PORTK, + (uint16_t) &PORTL, }; const uint16_t PROGMEM port_to_input_PGM[] = { - NOT_A_PIN, - (uint16_t) &PINA, - (uint16_t) &PINB, - (uint16_t) &PINC, - (uint16_t) &PIND, - (uint16_t) &PINE, - (uint16_t) &PINF, - (uint16_t) &PING, - (uint16_t) &PINH, - NOT_A_PIN, - (uint16_t) &PINJ, - (uint16_t) &PINK, - (uint16_t) &PINL, + NOT_A_PIN, + (uint16_t) &PINA, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, + (uint16_t) &PINE, + (uint16_t) &PINF, + (uint16_t) &PING, + (uint16_t) &PINH, + NOT_A_PIN, + (uint16_t) &PINJ, + (uint16_t) &PINK, + (uint16_t) &PINL, }; const uint8_t PROGMEM digital_pin_to_port_PGM[] = { - // PORTLIST - // ------------------------------------------- - PE , // PE 0 ** 0 ** USART0_RX - PE , // PE 1 ** 1 ** USART0_TX - PE , // PE 4 ** 2 ** PWM2 - PE , // PE 5 ** 3 ** PWM3 - PG , // PG 5 ** 4 ** PWM4 - PE , // PE 3 ** 5 ** PWM5 - PH , // PH 3 ** 6 ** PWM6 - PH , // PH 4 ** 7 ** PWM7 - PH , // PH 5 ** 8 ** PWM8 - PH , // PH 6 ** 9 ** PWM9 - PB , // PB 4 ** 10 ** PWM10 - PB , // PB 5 ** 11 ** PWM11 - PB , // PB 6 ** 12 ** PWM12 - PB , // PB 7 ** 13 ** PWM13 - PJ , // PJ 1 ** 14 ** USART3_TX - PJ , // PJ 0 ** 15 ** USART3_RX - PH , // PH 1 ** 16 ** USART2_TX - PH , // PH 0 ** 17 ** USART2_RX - PD , // PD 3 ** 18 ** USART1_TX - PD , // PD 2 ** 19 ** USART1_RX - PD , // PD 1 ** 20 ** I2C_SDA - PD , // PD 0 ** 21 ** I2C_SCL - PA , // PA 0 ** 22 ** D22 - PA , // PA 1 ** 23 ** D23 - PA , // PA 2 ** 24 ** D24 - PA , // PA 3 ** 25 ** D25 - PA , // PA 4 ** 26 ** D26 - PA , // PA 5 ** 27 ** D27 - PA , // PA 6 ** 28 ** D28 - PA , // PA 7 ** 29 ** D29 - PC , // PC 7 ** 30 ** D30 - PC , // PC 6 ** 31 ** D31 - PC , // PC 5 ** 32 ** D32 - PC , // PC 4 ** 33 ** D33 - PC , // PC 3 ** 34 ** D34 - PC , // PC 2 ** 35 ** D35 - PC , // PC 1 ** 36 ** D36 - PC , // PC 0 ** 37 ** D37 - PD , // PD 7 ** 38 ** D38 - PG , // PG 2 ** 39 ** D39 - PG , // PG 1 ** 40 ** D40 - PG , // PG 0 ** 41 ** D41 - PL , // PL 7 ** 42 ** D42 - PL , // PL 6 ** 43 ** D43 - PL , // PL 5 ** 44 ** D44 - PL , // PL 4 ** 45 ** D45 - PL , // PL 3 ** 46 ** D46 - PL , // PL 2 ** 47 ** D47 - PL , // PL 1 ** 48 ** D48 - PL , // PL 0 ** 49 ** D49 - PB , // PB 3 ** 50 ** SPI_MISO - PB , // PB 2 ** 51 ** SPI_MOSI - PB , // PB 1 ** 52 ** SPI_SCK - PB , // PB 0 ** 53 ** SPI_SS - PF , // PF 0 ** 54 ** A0 - PF , // PF 1 ** 55 ** A1 - PF , // PF 2 ** 56 ** A2 - PF , // PF 3 ** 57 ** A3 - PF , // PF 4 ** 58 ** A4 - PF , // PF 5 ** 59 ** A5 - PF , // PF 6 ** 60 ** A6 - PF , // PF 7 ** 61 ** A7 - PK , // PK 0 ** 62 ** A8 - PK , // PK 1 ** 63 ** A9 - PK , // PK 2 ** 64 ** A10 - PK , // PK 3 ** 65 ** A11 - PK , // PK 4 ** 66 ** A12 - PK , // PK 5 ** 67 ** A13 - PK , // PK 6 ** 68 ** A14 - PK , // PK 7 ** 69 ** A15 - PG , // PG 4 ** 70 ** D70 - PG , // PG 3 ** 71 ** D71 - PJ , // PJ 2 ** 72 ** D72 - PJ , // PJ 3 ** 73 ** D73 - PJ , // PJ 7 ** 74 ** D74 - PJ , // PJ 4 ** 75 ** D75 - PJ , // PJ 5 ** 76 ** D76 - PJ , // PJ 6 ** 77 ** D77 - PE , // PE 2 ** 78 ** D78 - PE , // PE 6 ** 79 ** D79 - PE , // PE 7 ** 80 ** D80 - PD , // PD 4 ** 81 ** D81 - PD , // PD 5 ** 82 ** D82 - PD , // PD 6 ** 83 ** D83 - PH , // PH 2 ** 84 ** D84 - PH , // PH 7 ** 85 ** D85 + // PORTLIST + // ------------------------------------------- + PE , // PE 0 ** 0 ** USART0_RX + PE , // PE 1 ** 1 ** USART0_TX + PE , // PE 4 ** 2 ** PWM2 + PE , // PE 5 ** 3 ** PWM3 + PG , // PG 5 ** 4 ** PWM4 + PE , // PE 3 ** 5 ** PWM5 + PH , // PH 3 ** 6 ** PWM6 + PH , // PH 4 ** 7 ** PWM7 + PH , // PH 5 ** 8 ** PWM8 + PH , // PH 6 ** 9 ** PWM9 + PB , // PB 4 ** 10 ** PWM10 + PB , // PB 5 ** 11 ** PWM11 + PB , // PB 6 ** 12 ** PWM12 + PB , // PB 7 ** 13 ** PWM13 + PJ , // PJ 1 ** 14 ** USART3_TX + PJ , // PJ 0 ** 15 ** USART3_RX + PH , // PH 1 ** 16 ** USART2_TX + PH , // PH 0 ** 17 ** USART2_RX + PD , // PD 3 ** 18 ** USART1_TX + PD , // PD 2 ** 19 ** USART1_RX + PD , // PD 1 ** 20 ** I2C_SDA + PD , // PD 0 ** 21 ** I2C_SCL + PA , // PA 0 ** 22 ** D22 + PA , // PA 1 ** 23 ** D23 + PA , // PA 2 ** 24 ** D24 + PA , // PA 3 ** 25 ** D25 + PA , // PA 4 ** 26 ** D26 + PA , // PA 5 ** 27 ** D27 + PA , // PA 6 ** 28 ** D28 + PA , // PA 7 ** 29 ** D29 + PC , // PC 7 ** 30 ** D30 + PC , // PC 6 ** 31 ** D31 + PC , // PC 5 ** 32 ** D32 + PC , // PC 4 ** 33 ** D33 + PC , // PC 3 ** 34 ** D34 + PC , // PC 2 ** 35 ** D35 + PC , // PC 1 ** 36 ** D36 + PC , // PC 0 ** 37 ** D37 + PD , // PD 7 ** 38 ** D38 + PG , // PG 2 ** 39 ** D39 + PG , // PG 1 ** 40 ** D40 + PG , // PG 0 ** 41 ** D41 + PL , // PL 7 ** 42 ** D42 + PL , // PL 6 ** 43 ** D43 + PL , // PL 5 ** 44 ** D44 + PL , // PL 4 ** 45 ** D45 + PL , // PL 3 ** 46 ** D46 + PL , // PL 2 ** 47 ** D47 + PL , // PL 1 ** 48 ** D48 + PL , // PL 0 ** 49 ** D49 + PB , // PB 3 ** 50 ** SPI_MISO + PB , // PB 2 ** 51 ** SPI_MOSI + PB , // PB 1 ** 52 ** SPI_SCK + PB , // PB 0 ** 53 ** SPI_SS + PF , // PF 0 ** 54 ** A0 + PF , // PF 1 ** 55 ** A1 + PF , // PF 2 ** 56 ** A2 + PF , // PF 3 ** 57 ** A3 + PF , // PF 4 ** 58 ** A4 + PF , // PF 5 ** 59 ** A5 + PF , // PF 6 ** 60 ** A6 + PF , // PF 7 ** 61 ** A7 + PK , // PK 0 ** 62 ** A8 + PK , // PK 1 ** 63 ** A9 + PK , // PK 2 ** 64 ** A10 + PK , // PK 3 ** 65 ** A11 + PK , // PK 4 ** 66 ** A12 + PK , // PK 5 ** 67 ** A13 + PK , // PK 6 ** 68 ** A14 + PK , // PK 7 ** 69 ** A15 + PG , // PG 4 ** 70 ** D70 + PG , // PG 3 ** 71 ** D71 + PJ , // PJ 2 ** 72 ** D72 + PJ , // PJ 3 ** 73 ** D73 + PJ , // PJ 7 ** 74 ** D74 + PJ , // PJ 4 ** 75 ** D75 + PJ , // PJ 5 ** 76 ** D76 + PJ , // PJ 6 ** 77 ** D77 + PE , // PE 2 ** 78 ** D78 + PE , // PE 6 ** 79 ** D79 + PE , // PE 7 ** 80 ** D80 + PD , // PD 4 ** 81 ** D81 + PD , // PD 5 ** 82 ** D82 + PD , // PD 6 ** 83 ** D83 + PH , // PH 2 ** 84 ** D84 + PH , // PH 7 ** 85 ** D85 }; const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { - // PIN IN PORT - // ------------------------------------------- - _BV( 0 ) , // PE 0 ** 0 ** USART0_RX - _BV( 1 ) , // PE 1 ** 1 ** USART0_TX - _BV( 4 ) , // PE 4 ** 2 ** PWM2 - _BV( 5 ) , // PE 5 ** 3 ** PWM3 - _BV( 5 ) , // PG 5 ** 4 ** PWM4 - _BV( 3 ) , // PE 3 ** 5 ** PWM5 - _BV( 3 ) , // PH 3 ** 6 ** PWM6 - _BV( 4 ) , // PH 4 ** 7 ** PWM7 - _BV( 5 ) , // PH 5 ** 8 ** PWM8 - _BV( 6 ) , // PH 6 ** 9 ** PWM9 - _BV( 4 ) , // PB 4 ** 10 ** PWM10 - _BV( 5 ) , // PB 5 ** 11 ** PWM11 - _BV( 6 ) , // PB 6 ** 12 ** PWM12 - _BV( 7 ) , // PB 7 ** 13 ** PWM13 - _BV( 1 ) , // PJ 1 ** 14 ** USART3_TX - _BV( 0 ) , // PJ 0 ** 15 ** USART3_RX - _BV( 1 ) , // PH 1 ** 16 ** USART2_TX - _BV( 0 ) , // PH 0 ** 17 ** USART2_RX - _BV( 3 ) , // PD 3 ** 18 ** USART1_TX - _BV( 2 ) , // PD 2 ** 19 ** USART1_RX - _BV( 1 ) , // PD 1 ** 20 ** I2C_SDA - _BV( 0 ) , // PD 0 ** 21 ** I2C_SCL - _BV( 0 ) , // PA 0 ** 22 ** D22 - _BV( 1 ) , // PA 1 ** 23 ** D23 - _BV( 2 ) , // PA 2 ** 24 ** D24 - _BV( 3 ) , // PA 3 ** 25 ** D25 - _BV( 4 ) , // PA 4 ** 26 ** D26 - _BV( 5 ) , // PA 5 ** 27 ** D27 - _BV( 6 ) , // PA 6 ** 28 ** D28 - _BV( 7 ) , // PA 7 ** 29 ** D29 - _BV( 7 ) , // PC 7 ** 30 ** D30 - _BV( 6 ) , // PC 6 ** 31 ** D31 - _BV( 5 ) , // PC 5 ** 32 ** D32 - _BV( 4 ) , // PC 4 ** 33 ** D33 - _BV( 3 ) , // PC 3 ** 34 ** D34 - _BV( 2 ) , // PC 2 ** 35 ** D35 - _BV( 1 ) , // PC 1 ** 36 ** D36 - _BV( 0 ) , // PC 0 ** 37 ** D37 - _BV( 7 ) , // PD 7 ** 38 ** D38 - _BV( 2 ) , // PG 2 ** 39 ** D39 - _BV( 1 ) , // PG 1 ** 40 ** D40 - _BV( 0 ) , // PG 0 ** 41 ** D41 - _BV( 7 ) , // PL 7 ** 42 ** D42 - _BV( 6 ) , // PL 6 ** 43 ** D43 - _BV( 5 ) , // PL 5 ** 44 ** D44 - _BV( 4 ) , // PL 4 ** 45 ** D45 - _BV( 3 ) , // PL 3 ** 46 ** D46 - _BV( 2 ) , // PL 2 ** 47 ** D47 - _BV( 1 ) , // PL 1 ** 48 ** D48 - _BV( 0 ) , // PL 0 ** 49 ** D49 - _BV( 3 ) , // PB 3 ** 50 ** SPI_MISO - _BV( 2 ) , // PB 2 ** 51 ** SPI_MOSI - _BV( 1 ) , // PB 1 ** 52 ** SPI_SCK - _BV( 0 ) , // PB 0 ** 53 ** SPI_SS - _BV( 0 ) , // PF 0 ** 54 ** A0 - _BV( 1 ) , // PF 1 ** 55 ** A1 - _BV( 2 ) , // PF 2 ** 56 ** A2 - _BV( 3 ) , // PF 3 ** 57 ** A3 - _BV( 4 ) , // PF 4 ** 58 ** A4 - _BV( 5 ) , // PF 5 ** 59 ** A5 - _BV( 6 ) , // PF 6 ** 60 ** A6 - _BV( 7 ) , // PF 7 ** 61 ** A7 - _BV( 0 ) , // PK 0 ** 62 ** A8 - _BV( 1 ) , // PK 1 ** 63 ** A9 - _BV( 2 ) , // PK 2 ** 64 ** A10 - _BV( 3 ) , // PK 3 ** 65 ** A11 - _BV( 4 ) , // PK 4 ** 66 ** A12 - _BV( 5 ) , // PK 5 ** 67 ** A13 - _BV( 6 ) , // PK 6 ** 68 ** A14 - _BV( 7 ) , // PK 7 ** 69 ** A15 - _BV( 4 ) , // PG 4 ** 70 ** D70 - _BV( 3 ) , // PG 3 ** 71 ** D71 - _BV( 2 ) , // PJ 2 ** 72 ** D72 - _BV( 3 ) , // PJ 3 ** 73 ** D73 - _BV( 7 ) , // PJ 7 ** 74 ** D74 - _BV( 4 ) , // PJ 4 ** 75 ** D75 - _BV( 5 ) , // PJ 5 ** 76 ** D76 - _BV( 6 ) , // PJ 6 ** 77 ** D77 - _BV( 2 ) , // PE 2 ** 78 ** D78 - _BV( 6 ) , // PE 6 ** 79 ** D79 - _BV( 7 ) , // PE 7 ** 80 ** D80 - _BV( 4 ) , // PD 4 ** 81 ** D81 - _BV( 5 ) , // PD 5 ** 82 ** D82 - _BV( 6 ) , // PD 6 ** 83 ** D83 - _BV( 2 ) , // PH 2 ** 84 ** D84 - _BV( 7 ) , // PH 7 ** 85 ** D85 + // PIN IN PORT + // ------------------------------------------- + _BV( 0 ) , // PE 0 ** 0 ** USART0_RX + _BV( 1 ) , // PE 1 ** 1 ** USART0_TX + _BV( 4 ) , // PE 4 ** 2 ** PWM2 + _BV( 5 ) , // PE 5 ** 3 ** PWM3 + _BV( 5 ) , // PG 5 ** 4 ** PWM4 + _BV( 3 ) , // PE 3 ** 5 ** PWM5 + _BV( 3 ) , // PH 3 ** 6 ** PWM6 + _BV( 4 ) , // PH 4 ** 7 ** PWM7 + _BV( 5 ) , // PH 5 ** 8 ** PWM8 + _BV( 6 ) , // PH 6 ** 9 ** PWM9 + _BV( 4 ) , // PB 4 ** 10 ** PWM10 + _BV( 5 ) , // PB 5 ** 11 ** PWM11 + _BV( 6 ) , // PB 6 ** 12 ** PWM12 + _BV( 7 ) , // PB 7 ** 13 ** PWM13 + _BV( 1 ) , // PJ 1 ** 14 ** USART3_TX + _BV( 0 ) , // PJ 0 ** 15 ** USART3_RX + _BV( 1 ) , // PH 1 ** 16 ** USART2_TX + _BV( 0 ) , // PH 0 ** 17 ** USART2_RX + _BV( 3 ) , // PD 3 ** 18 ** USART1_TX + _BV( 2 ) , // PD 2 ** 19 ** USART1_RX + _BV( 1 ) , // PD 1 ** 20 ** I2C_SDA + _BV( 0 ) , // PD 0 ** 21 ** I2C_SCL + _BV( 0 ) , // PA 0 ** 22 ** D22 + _BV( 1 ) , // PA 1 ** 23 ** D23 + _BV( 2 ) , // PA 2 ** 24 ** D24 + _BV( 3 ) , // PA 3 ** 25 ** D25 + _BV( 4 ) , // PA 4 ** 26 ** D26 + _BV( 5 ) , // PA 5 ** 27 ** D27 + _BV( 6 ) , // PA 6 ** 28 ** D28 + _BV( 7 ) , // PA 7 ** 29 ** D29 + _BV( 7 ) , // PC 7 ** 30 ** D30 + _BV( 6 ) , // PC 6 ** 31 ** D31 + _BV( 5 ) , // PC 5 ** 32 ** D32 + _BV( 4 ) , // PC 4 ** 33 ** D33 + _BV( 3 ) , // PC 3 ** 34 ** D34 + _BV( 2 ) , // PC 2 ** 35 ** D35 + _BV( 1 ) , // PC 1 ** 36 ** D36 + _BV( 0 ) , // PC 0 ** 37 ** D37 + _BV( 7 ) , // PD 7 ** 38 ** D38 + _BV( 2 ) , // PG 2 ** 39 ** D39 + _BV( 1 ) , // PG 1 ** 40 ** D40 + _BV( 0 ) , // PG 0 ** 41 ** D41 + _BV( 7 ) , // PL 7 ** 42 ** D42 + _BV( 6 ) , // PL 6 ** 43 ** D43 + _BV( 5 ) , // PL 5 ** 44 ** D44 + _BV( 4 ) , // PL 4 ** 45 ** D45 + _BV( 3 ) , // PL 3 ** 46 ** D46 + _BV( 2 ) , // PL 2 ** 47 ** D47 + _BV( 1 ) , // PL 1 ** 48 ** D48 + _BV( 0 ) , // PL 0 ** 49 ** D49 + _BV( 3 ) , // PB 3 ** 50 ** SPI_MISO + _BV( 2 ) , // PB 2 ** 51 ** SPI_MOSI + _BV( 1 ) , // PB 1 ** 52 ** SPI_SCK + _BV( 0 ) , // PB 0 ** 53 ** SPI_SS + _BV( 0 ) , // PF 0 ** 54 ** A0 + _BV( 1 ) , // PF 1 ** 55 ** A1 + _BV( 2 ) , // PF 2 ** 56 ** A2 + _BV( 3 ) , // PF 3 ** 57 ** A3 + _BV( 4 ) , // PF 4 ** 58 ** A4 + _BV( 5 ) , // PF 5 ** 59 ** A5 + _BV( 6 ) , // PF 6 ** 60 ** A6 + _BV( 7 ) , // PF 7 ** 61 ** A7 + _BV( 0 ) , // PK 0 ** 62 ** A8 + _BV( 1 ) , // PK 1 ** 63 ** A9 + _BV( 2 ) , // PK 2 ** 64 ** A10 + _BV( 3 ) , // PK 3 ** 65 ** A11 + _BV( 4 ) , // PK 4 ** 66 ** A12 + _BV( 5 ) , // PK 5 ** 67 ** A13 + _BV( 6 ) , // PK 6 ** 68 ** A14 + _BV( 7 ) , // PK 7 ** 69 ** A15 + _BV( 4 ) , // PG 4 ** 70 ** D70 + _BV( 3 ) , // PG 3 ** 71 ** D71 + _BV( 2 ) , // PJ 2 ** 72 ** D72 + _BV( 3 ) , // PJ 3 ** 73 ** D73 + _BV( 7 ) , // PJ 7 ** 74 ** D74 + _BV( 4 ) , // PJ 4 ** 75 ** D75 + _BV( 5 ) , // PJ 5 ** 76 ** D76 + _BV( 6 ) , // PJ 6 ** 77 ** D77 + _BV( 2 ) , // PE 2 ** 78 ** D78 + _BV( 6 ) , // PE 6 ** 79 ** D79 + _BV( 7 ) , // PE 7 ** 80 ** D80 + _BV( 4 ) , // PD 4 ** 81 ** D81 + _BV( 5 ) , // PD 5 ** 82 ** D82 + _BV( 6 ) , // PD 6 ** 83 ** D83 + _BV( 2 ) , // PH 2 ** 84 ** D84 + _BV( 7 ) , // PH 7 ** 85 ** D85 }; const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { - // TIMERS - // ------------------------------------------- - NOT_ON_TIMER , // PE 0 ** 0 ** USART0_RX - NOT_ON_TIMER , // PE 1 ** 1 ** USART0_TX - TIMER3B , // PE 4 ** 2 ** PWM2 - TIMER3C , // PE 5 ** 3 ** PWM3 - TIMER0B , // PG 5 ** 4 ** PWM4 - TIMER3A , // PE 3 ** 5 ** PWM5 - TIMER4A , // PH 3 ** 6 ** PWM6 - TIMER4B , // PH 4 ** 7 ** PWM7 - TIMER4C , // PH 5 ** 8 ** PWM8 - TIMER2B , // PH 6 ** 9 ** PWM9 - TIMER2A , // PB 4 ** 10 ** PWM10 - TIMER1A , // PB 5 ** 11 ** PWM11 - TIMER1B , // PB 6 ** 12 ** PWM12 - TIMER0A , // PB 7 ** 13 ** PWM13 - NOT_ON_TIMER , // PJ 1 ** 14 ** USART3_TX - NOT_ON_TIMER , // PJ 0 ** 15 ** USART3_RX - NOT_ON_TIMER , // PH 1 ** 16 ** USART2_TX - NOT_ON_TIMER , // PH 0 ** 17 ** USART2_RX - NOT_ON_TIMER , // PD 3 ** 18 ** USART1_TX - NOT_ON_TIMER , // PD 2 ** 19 ** USART1_RX - NOT_ON_TIMER , // PD 1 ** 20 ** I2C_SDA - NOT_ON_TIMER , // PD 0 ** 21 ** I2C_SCL - NOT_ON_TIMER , // PA 0 ** 22 ** D22 - NOT_ON_TIMER , // PA 1 ** 23 ** D23 - NOT_ON_TIMER , // PA 2 ** 24 ** D24 - NOT_ON_TIMER , // PA 3 ** 25 ** D25 - NOT_ON_TIMER , // PA 4 ** 26 ** D26 - NOT_ON_TIMER , // PA 5 ** 27 ** D27 - NOT_ON_TIMER , // PA 6 ** 28 ** D28 - NOT_ON_TIMER , // PA 7 ** 29 ** D29 - NOT_ON_TIMER , // PC 7 ** 30 ** D30 - NOT_ON_TIMER , // PC 6 ** 31 ** D31 - NOT_ON_TIMER , // PC 5 ** 32 ** D32 - NOT_ON_TIMER , // PC 4 ** 33 ** D33 - NOT_ON_TIMER , // PC 3 ** 34 ** D34 - NOT_ON_TIMER , // PC 2 ** 35 ** D35 - NOT_ON_TIMER , // PC 1 ** 36 ** D36 - NOT_ON_TIMER , // PC 0 ** 37 ** D37 - NOT_ON_TIMER , // PD 7 ** 38 ** D38 - NOT_ON_TIMER , // PG 2 ** 39 ** D39 - NOT_ON_TIMER , // PG 1 ** 40 ** D40 - NOT_ON_TIMER , // PG 0 ** 41 ** D41 - NOT_ON_TIMER , // PL 7 ** 42 ** D42 - NOT_ON_TIMER , // PL 6 ** 43 ** D43 - TIMER5C , // PL 5 ** 44 ** D44 - TIMER5B , // PL 4 ** 45 ** D45 - TIMER5A , // PL 3 ** 46 ** D46 - NOT_ON_TIMER , // PL 2 ** 47 ** D47 - NOT_ON_TIMER , // PL 1 ** 48 ** D48 - NOT_ON_TIMER , // PL 0 ** 49 ** D49 - NOT_ON_TIMER , // PB 3 ** 50 ** SPI_MISO - NOT_ON_TIMER , // PB 2 ** 51 ** SPI_MOSI - NOT_ON_TIMER , // PB 1 ** 52 ** SPI_SCK - NOT_ON_TIMER , // PB 0 ** 53 ** SPI_SS - NOT_ON_TIMER , // PF 0 ** 54 ** A0 - NOT_ON_TIMER , // PF 1 ** 55 ** A1 - NOT_ON_TIMER , // PF 2 ** 56 ** A2 - NOT_ON_TIMER , // PF 3 ** 57 ** A3 - NOT_ON_TIMER , // PF 4 ** 58 ** A4 - NOT_ON_TIMER , // PF 5 ** 59 ** A5 - NOT_ON_TIMER , // PF 6 ** 60 ** A6 - NOT_ON_TIMER , // PF 7 ** 61 ** A7 - NOT_ON_TIMER , // PK 0 ** 62 ** A8 - NOT_ON_TIMER , // PK 1 ** 63 ** A9 - NOT_ON_TIMER , // PK 2 ** 64 ** A10 - NOT_ON_TIMER , // PK 3 ** 65 ** A11 - NOT_ON_TIMER , // PK 4 ** 66 ** A12 - NOT_ON_TIMER , // PK 5 ** 67 ** A13 - NOT_ON_TIMER , // PK 6 ** 68 ** A14 - NOT_ON_TIMER , // PK 7 ** 69 ** A15 - NOT_ON_TIMER , // PG 4 ** 70 ** D70 - NOT_ON_TIMER , // PG 3 ** 71 ** D71 - NOT_ON_TIMER , // PJ 2 ** 72 ** D72 - NOT_ON_TIMER , // PJ 3 ** 73 ** D73 - NOT_ON_TIMER , // PJ 7 ** 74 ** D74 - NOT_ON_TIMER , // PJ 4 ** 75 ** D75 - NOT_ON_TIMER , // PJ 5 ** 76 ** D76 - NOT_ON_TIMER , // PJ 6 ** 77 ** D77 - NOT_ON_TIMER , // PE 2 ** 78 ** D78 - NOT_ON_TIMER , // PE 6 ** 79 ** D79 - NOT_ON_TIMER , // PE 7 ** 80 ** D80 - NOT_ON_TIMER , // PD 4 ** 81 ** D81 - NOT_ON_TIMER , // PD 5 ** 82 ** D82 - NOT_ON_TIMER , // PD 6 ** 83 ** D83 - NOT_ON_TIMER , // PH 2 ** 84 ** D84 - NOT_ON_TIMER , // PH 7 ** 85 ** D85 + // TIMERS + // ------------------------------------------- + NOT_ON_TIMER , // PE 0 ** 0 ** USART0_RX + NOT_ON_TIMER , // PE 1 ** 1 ** USART0_TX + TIMER3B , // PE 4 ** 2 ** PWM2 + TIMER3C , // PE 5 ** 3 ** PWM3 + TIMER0B , // PG 5 ** 4 ** PWM4 + TIMER3A , // PE 3 ** 5 ** PWM5 + TIMER4A , // PH 3 ** 6 ** PWM6 + TIMER4B , // PH 4 ** 7 ** PWM7 + TIMER4C , // PH 5 ** 8 ** PWM8 + TIMER2B , // PH 6 ** 9 ** PWM9 + TIMER2A , // PB 4 ** 10 ** PWM10 + TIMER1A , // PB 5 ** 11 ** PWM11 + TIMER1B , // PB 6 ** 12 ** PWM12 + TIMER0A , // PB 7 ** 13 ** PWM13 + NOT_ON_TIMER , // PJ 1 ** 14 ** USART3_TX + NOT_ON_TIMER , // PJ 0 ** 15 ** USART3_RX + NOT_ON_TIMER , // PH 1 ** 16 ** USART2_TX + NOT_ON_TIMER , // PH 0 ** 17 ** USART2_RX + NOT_ON_TIMER , // PD 3 ** 18 ** USART1_TX + NOT_ON_TIMER , // PD 2 ** 19 ** USART1_RX + NOT_ON_TIMER , // PD 1 ** 20 ** I2C_SDA + NOT_ON_TIMER , // PD 0 ** 21 ** I2C_SCL + NOT_ON_TIMER , // PA 0 ** 22 ** D22 + NOT_ON_TIMER , // PA 1 ** 23 ** D23 + NOT_ON_TIMER , // PA 2 ** 24 ** D24 + NOT_ON_TIMER , // PA 3 ** 25 ** D25 + NOT_ON_TIMER , // PA 4 ** 26 ** D26 + NOT_ON_TIMER , // PA 5 ** 27 ** D27 + NOT_ON_TIMER , // PA 6 ** 28 ** D28 + NOT_ON_TIMER , // PA 7 ** 29 ** D29 + NOT_ON_TIMER , // PC 7 ** 30 ** D30 + NOT_ON_TIMER , // PC 6 ** 31 ** D31 + NOT_ON_TIMER , // PC 5 ** 32 ** D32 + NOT_ON_TIMER , // PC 4 ** 33 ** D33 + NOT_ON_TIMER , // PC 3 ** 34 ** D34 + NOT_ON_TIMER , // PC 2 ** 35 ** D35 + NOT_ON_TIMER , // PC 1 ** 36 ** D36 + NOT_ON_TIMER , // PC 0 ** 37 ** D37 + NOT_ON_TIMER , // PD 7 ** 38 ** D38 + NOT_ON_TIMER , // PG 2 ** 39 ** D39 + NOT_ON_TIMER , // PG 1 ** 40 ** D40 + NOT_ON_TIMER , // PG 0 ** 41 ** D41 + NOT_ON_TIMER , // PL 7 ** 42 ** D42 + NOT_ON_TIMER , // PL 6 ** 43 ** D43 + TIMER5C , // PL 5 ** 44 ** D44 + TIMER5B , // PL 4 ** 45 ** D45 + TIMER5A , // PL 3 ** 46 ** D46 + NOT_ON_TIMER , // PL 2 ** 47 ** D47 + NOT_ON_TIMER , // PL 1 ** 48 ** D48 + NOT_ON_TIMER , // PL 0 ** 49 ** D49 + NOT_ON_TIMER , // PB 3 ** 50 ** SPI_MISO + NOT_ON_TIMER , // PB 2 ** 51 ** SPI_MOSI + NOT_ON_TIMER , // PB 1 ** 52 ** SPI_SCK + NOT_ON_TIMER , // PB 0 ** 53 ** SPI_SS + NOT_ON_TIMER , // PF 0 ** 54 ** A0 + NOT_ON_TIMER , // PF 1 ** 55 ** A1 + NOT_ON_TIMER , // PF 2 ** 56 ** A2 + NOT_ON_TIMER , // PF 3 ** 57 ** A3 + NOT_ON_TIMER , // PF 4 ** 58 ** A4 + NOT_ON_TIMER , // PF 5 ** 59 ** A5 + NOT_ON_TIMER , // PF 6 ** 60 ** A6 + NOT_ON_TIMER , // PF 7 ** 61 ** A7 + NOT_ON_TIMER , // PK 0 ** 62 ** A8 + NOT_ON_TIMER , // PK 1 ** 63 ** A9 + NOT_ON_TIMER , // PK 2 ** 64 ** A10 + NOT_ON_TIMER , // PK 3 ** 65 ** A11 + NOT_ON_TIMER , // PK 4 ** 66 ** A12 + NOT_ON_TIMER , // PK 5 ** 67 ** A13 + NOT_ON_TIMER , // PK 6 ** 68 ** A14 + NOT_ON_TIMER , // PK 7 ** 69 ** A15 + NOT_ON_TIMER , // PG 4 ** 70 ** D70 + NOT_ON_TIMER , // PG 3 ** 71 ** D71 + NOT_ON_TIMER , // PJ 2 ** 72 ** D72 + NOT_ON_TIMER , // PJ 3 ** 73 ** D73 + NOT_ON_TIMER , // PJ 7 ** 74 ** D74 + NOT_ON_TIMER , // PJ 4 ** 75 ** D75 + NOT_ON_TIMER , // PJ 5 ** 76 ** D76 + NOT_ON_TIMER , // PJ 6 ** 77 ** D77 + NOT_ON_TIMER , // PE 2 ** 78 ** D78 + NOT_ON_TIMER , // PE 6 ** 79 ** D79 + NOT_ON_TIMER , // PE 7 ** 80 ** D80 + NOT_ON_TIMER , // PD 4 ** 81 ** D81 + NOT_ON_TIMER , // PD 5 ** 82 ** D82 + NOT_ON_TIMER , // PD 6 ** 83 ** D83 + NOT_ON_TIMER , // PH 2 ** 84 ** D84 + NOT_ON_TIMER , // PH 7 ** 85 ** D85 }; #endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_MKS_SKIPR_V1/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_MKS_SKIPR_V1/variant.h index 51a9e92286..0b6e6142ba 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_MKS_SKIPR_V1/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_MKS_SKIPR_V1/variant.h @@ -167,6 +167,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_TH3D_EZBOARD_V2/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_TH3D_EZBOARD_V2/variant.h index 30c3d95349..5232a1eaf2 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_TH3D_EZBOARD_V2/variant.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_TH3D_EZBOARD_V2/variant.h @@ -121,6 +121,7 @@ extern "C" { #ifdef __cplusplus } // extern "C" #endif + /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ diff --git a/buildroot/share/cmake/CMakeLists.txt b/buildroot/share/cmake/CMakeLists.txt index 9d3f24f990..1ed9091e01 100644 --- a/buildroot/share/cmake/CMakeLists.txt +++ b/buildroot/share/cmake/CMakeLists.txt @@ -25,7 +25,7 @@ set(SCRIPT_BRANCH 1.0.2) #Set to wanted marlin-cmake release tag or branch if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake) file(DOWNLOAD https://github.com/tohara/marlin-cmake/archive/${SCRIPT_BRANCH}.tar.gz - ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-src.tar.gz SHOW_PROGRESS) + ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-src.tar.gz SHOW_PROGRESS) execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xvf ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-src.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) @@ -36,7 +36,7 @@ if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake) endif() if(WIN32 AND NOT EXISTS ${CMAKE_BINARY_DIR}/make.exe) - file(COPY ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/resources/make.exe DESTINATION ${CMAKE_BINARY_DIR}/) + file(COPY ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/resources/make.exe DESTINATION ${CMAKE_BINARY_DIR}/) endif() set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/modules) @@ -105,9 +105,9 @@ set(${PROJECT_NAME}_SRCS "${SOURCES};../../../Marlin/Marlin.ino") # cmake .. -DUPLOAD_PORT=/dev/ttyACM0 # #====================================================================# if(UPLOAD_PORT) - set(${PROJECT_NAME}_PORT ${UPLOAD_PORT}) + set(${PROJECT_NAME}_PORT ${UPLOAD_PORT}) else() - set(${PROJECT_NAME}_PORT /dev/ttyACM0) + set(${PROJECT_NAME}_PORT /dev/ttyACM0) endif() #====================================================================# diff --git a/buildroot/share/dwin/bin/README.md b/buildroot/share/dwin/bin/README.md index 4a9b4687ab..a00d679bf8 100644 --- a/buildroot/share/dwin/bin/README.md +++ b/buildroot/share/dwin/bin/README.md @@ -42,15 +42,15 @@ These tools must be run from a terminal with access to an installed Python 3 and Pillow is most easily installed with pip: - python3 -m pip install pillow + python3 -m pip install pillow ## Examples These tools process an `.ICO` file that you specify. The safest method is to create a folder and copy your `.ICO` file there. For example: - $ mkdir hackicons - $ cp 9.ICO hackicons - $ cd hackicons + $ mkdir hackicons + $ cp 9.ICO hackicons + $ cd hackicons The following explanations will refer back to this layout. @@ -64,19 +64,19 @@ If you want to edit the individual icons stored in an ICO file (or add more imag In this example we're extracting the constituent JPEG files from `9.ICO` and storing them in a folder named `icons`. As each file is extracted the script reports its index number, byte offset, size, dimensions, and filename: - $ cd buildroot/share/dwin - $ ./bin/splitIco.py 9.ICO icons-9 - Splitting 9.ICO into dir icons - Splitting Entry Data... - 00: offset: 0x001000 len: 0x10a2 width: 130 height: 17 - Wrote 4258 bytes to icons/000-ICON_LOGO.jpg - 01: offset: 0x0020a2 len: 0x0eac width: 110 height: 100 - Wrote 3756 bytes to icons/001-ICON_Print_0.jpg - 02: offset: 0x002f4e len: 0x0eaa width: 110 height: 100 - Wrote 3754 bytes to icons/002-ICON_Print_1.jpg - ... - 91: offset: 0x0345fc len: 0x0d89 width: 110 height: 100 - Wrote 3465 bytes to icons/091-ICON_Info_1.jpg + $ cd buildroot/share/dwin + $ ./bin/splitIco.py 9.ICO icons-9 + Splitting 9.ICO into dir icons + Splitting Entry Data... + 00: offset: 0x001000 len: 0x10a2 width: 130 height: 17 + Wrote 4258 bytes to icons/000-ICON_LOGO.jpg + 01: offset: 0x0020a2 len: 0x0eac width: 110 height: 100 + Wrote 3756 bytes to icons/001-ICON_Print_0.jpg + 02: offset: 0x002f4e len: 0x0eaa width: 110 height: 100 + Wrote 3754 bytes to icons/002-ICON_Print_1.jpg + ... + 91: offset: 0x0345fc len: 0x0d89 width: 110 height: 100 + Wrote 3465 bytes to icons/091-ICON_Info_1.jpg Once the individual JPEG files have been saved they can be edited using common graphics applications like Photoshop. JPEG files are inherently lossy and will usually contain ugly artifacts, so cleanup may be needed before they are re-exported. Keep the limits of bank size in mind when exporting images and try to find the best balance between compressed size and image quality. @@ -84,9 +84,9 @@ Once the individual JPEG files have been saved they can be edited using common g After editing images you'll create a new `9.ICO` archive with `makeIco.py` like so: - $ cd buildroot/share/dwin - $ ./bin/makeIco.py icons-3 3.ICO - Making .ico file '3.ICO' from contents of 'icons-3' - Scanning icon directory icons-3 - ...Scanned 16 icon files - Scanning done. 16 icons included. + $ cd buildroot/share/dwin + $ ./bin/makeIco.py icons-3 3.ICO + Making .ico file '3.ICO' from contents of 'icons-3' + Scanning icon directory icons-3 + ...Scanned 16 icon files + Scanning done. 16 icons included. diff --git a/buildroot/share/vscode/avrdude_linux.conf b/buildroot/share/vscode/avrdude_linux.conf index ff429a028c..f889e3e142 100644 --- a/buildroot/share/vscode/avrdude_linux.conf +++ b/buildroot/share/vscode/avrdude_linux.conf @@ -240,8 +240,8 @@ #define AT86RF401 0xD0 #define AT89START 0xE0 -#define AT89S51 0xE0 -#define AT89S52 0xE1 +#define AT89S51 0xE0 +#define AT89S52 0xE1 # The following table lists the devices in the original AVR910 # appnote: @@ -293,15 +293,15 @@ # in the Internet. These add the following codes (only devices that # actually exist are listed): -# ATmega8515 0x3A -# ATmega128 0x43 -# ATmega64 0x45 -# ATtiny26 0x5E -# ATmega8535 0x69 -# ATmega32 0x72 -# ATmega16 0x74 -# ATmega8 0x76 -# ATmega169 0x78 +# ATmega8515 0x3A +# ATmega128 0x43 +# ATmega64 0x45 +# ATtiny26 0x5E +# ATmega8535 0x69 +# ATmega32 0x72 +# ATmega16 0x74 +# ATmega8 0x76 +# ATmega169 0x78 # # Overall avrdude defaults @@ -894,63 +894,63 @@ programmer # This is an HVSP-only device. part - id = "t11"; - desc = "ATtiny11"; - stk500_devcode = 0x11; - signature = 0x1e 0x90 0x04; - chip_erase_delay = 20000; + id = "t11"; + desc = "ATtiny11"; + stk500_devcode = 0x11; + signature = 0x1e 0x90 0x04; + chip_erase_delay = 20000; - timeout = 200; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + timeout = 200; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 64; - blocksize = 64; - readsize = 256; - delay = 5; - ; + memory "eeprom" + size = 64; + blocksize = 64; + readsize = 256; + delay = 5; + ; - memory "flash" - size = 1024; - blocksize = 128; - readsize = 256; - delay = 3; - ; + memory "flash" + size = 1024; + blocksize = 128; + readsize = 256; + delay = 3; + ; - memory "signature" - size = 3; - ; + memory "signature" + size = 3; + ; - memory "lock" - size = 1; - ; + memory "lock" + size = 1; + ; - memory "calibration" - size = 1; - ; + memory "calibration" + size = 1; + ; - memory "fuse" - size = 1; - ; + memory "fuse" + size = 1; + ; ; #------------------------------------------------------------ @@ -958,132 +958,132 @@ part #------------------------------------------------------------ part - id = "t12"; - desc = "ATtiny12"; - stk500_devcode = 0x12; - avr910_devcode = 0x55; - signature = 0x1e 0x90 0x05; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "t12"; + desc = "ATtiny12"; + stk500_devcode = 0x12; + avr910_devcode = 0x55; + signature = 0x1e 0x90 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 64; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 64; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 8; - blocksize = 64; - readsize = 256; - ; + mode = 0x04; + delay = 8; + blocksize = 64; + readsize = 256; + ; - memory "flash" - size = 1024; - min_write_delay = 4500; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + size = 1024; + min_write_delay = 4500; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 5; - blocksize = 128; - readsize = 256; - ; + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "fuse" - size = 1; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x o o o o o o o o"; + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; ; #------------------------------------------------------------ @@ -1091,170 +1091,170 @@ part #------------------------------------------------------------ part - id = "t13"; - desc = "ATtiny13"; - has_debugwire = yes; - flash_instr = 0xB4, 0x0E, 0x1E; - eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x14; - signature = 0x1e 0x90 0x07; - chip_erase_delay = 4000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "t13"; + desc = "ATtiny13"; + has_debugwire = yes; + flash_instr = 0xB4, 0x0E, 0x1E; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; + signature = 0x1e 0x90 0x07; + chip_erase_delay = 4000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - hvsp_controlstack = + hvsp_controlstack = 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 90; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 90; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 64; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 64; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x x a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 1024; - page_size = 32; - num_pages = 32; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 0 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 1024; + page_size = 32; + num_pages = 32; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 0 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 0 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; ; @@ -1264,132 +1264,132 @@ part #------------------------------------------------------------ part - id = "t15"; - desc = "ATtiny15"; - stk500_devcode = 0x13; - avr910_devcode = 0x56; - signature = 0x1e 0x90 0x06; - chip_erase_delay = 8200; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "t15"; + desc = "ATtiny15"; + stk500_devcode = 0x13; + avr910_devcode = 0x56; + signature = 0x1e 0x90 0x06; + chip_erase_delay = 8200; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 5; - synchcycles = 6; - latchcycles = 16; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 5; + synchcycles = 6; + latchcycles = 16; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 64; - min_write_delay = 8200; - max_write_delay = 8200; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 64; + min_write_delay = 8200; + max_write_delay = 8200; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 10; - blocksize = 64; - readsize = 256; - ; + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; - memory "flash" - size = 1024; - min_write_delay = 4100; - max_write_delay = 4100; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + size = 1024; + min_write_delay = 4100; + max_write_delay = 4100; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 5; - blocksize = 128; - readsize = 256; - ; + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "fuse" - size = 1; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x o o o o x x o o"; + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o x x o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", - "x x x x x x x x i i i i 1 1 i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i 1 1 i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; ; #------------------------------------------------------------ @@ -1397,114 +1397,114 @@ part #------------------------------------------------------------ part - id = "1200"; - desc = "AT90S1200"; - stk500_devcode = 0x33; - avr910_devcode = 0x13; - signature = 0x1e 0x90 0x01; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "1200"; + desc = "AT90S1200"; + stk500_devcode = 0x33; + avr910_devcode = 0x13; + signature = 0x1e 0x90 0x01; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 1; - bytedelay = 0; - pollindex = 0; - pollvalue = 0xFF; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 1; + bytedelay = 0; + pollindex = 0; + pollvalue = 0xFF; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; - memory "eeprom" - size = 64; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 64; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 20; - blocksize = 32; - readsize = 256; - ; - memory "flash" - size = 1024; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 20; + blocksize = 32; + readsize = 256; + ; + memory "flash" + size = 1024; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x02; - delay = 15; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; + mode = 0x02; + delay = 15; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; ; #------------------------------------------------------------ @@ -1512,112 +1512,112 @@ part #------------------------------------------------------------ part - id = "4414"; - desc = "AT90S4414"; - stk500_devcode = 0x50; - avr910_devcode = 0x28; - signature = 0x1e 0x92 0x01; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "4414"; + desc = "AT90S4414"; + stk500_devcode = 0x50; + avr910_devcode = 0x28; + signature = 0x1e 0x92 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; - memory "eeprom" - size = 256; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x80; - readback_p2 = 0x7f; - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "flash" - size = 4096; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x7f; - readback_p2 = 0x7f; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + min_write_delay = 9000; + max_write_delay = 9000; + ; ; #------------------------------------------------------------ @@ -1625,112 +1625,112 @@ part #------------------------------------------------------------ part - id = "2313"; - desc = "AT90S2313"; - stk500_devcode = 0x40; - avr910_devcode = 0x20; - signature = 0x1e 0x91 0x01; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "2313"; + desc = "AT90S2313"; + stk500_devcode = 0x40; + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; - memory "eeprom" - size = 128; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x80; - readback_p2 = 0x7f; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 128; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "flash" - size = 2048; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x7f; - readback_p2 = 0x7f; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; ; #------------------------------------------------------------ @@ -1738,126 +1738,126 @@ part #------------------------------------------------------------ part - id = "2333"; + id = "2333"; ##### WARNING: No XML file for device 'AT90S2333'! ##### - desc = "AT90S2333"; - stk500_devcode = 0x42; - avr910_devcode = 0x34; - signature = 0x1e 0x91 0x05; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + desc = "AT90S2333"; + stk500_devcode = 0x42; + avr910_devcode = 0x34; + signature = 0x1e 0x91 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; - memory "eeprom" - size = 128; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; - memory "flash" - size = 2048; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - pwroff_after_write = yes; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o o o o o o"; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; ; @@ -1866,122 +1866,122 @@ part #------------------------------------------------------------ part - id = "2343"; - desc = "AT90S2343"; - stk500_devcode = 0x43; - avr910_devcode = 0x4c; - signature = 0x1e 0x91 0x03; - chip_erase_delay = 18000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "2343"; + desc = "AT90S2343"; + stk500_devcode = 0x43; + avr910_devcode = 0x4c; + signature = 0x1e 0x91 0x03; + chip_erase_delay = 18000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 0; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 0; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 128; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "flash" - size = 2048; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 128; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x o o o x x x x o"; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 128; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; - write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x o o o x x x x o"; + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; ; @@ -1990,123 +1990,123 @@ part #------------------------------------------------------------ part - id = "4433"; - desc = "AT90S4433"; - stk500_devcode = 0x51; - avr910_devcode = 0x30; - signature = 0x1e 0x92 0x03; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "4433"; + desc = "AT90S4433"; + stk500_devcode = 0x51; + avr910_devcode = 0x30; + signature = 0x1e 0x92 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; - memory "eeprom" - size = 256; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "flash" - size = 4096; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - pwroff_after_write = yes; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o o o o o o"; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; ; #------------------------------------------------------------ @@ -2114,82 +2114,82 @@ part #------------------------------------------------------------ part - id = "4434"; + id = "4434"; ##### WARNING: No XML file for device 'AT90S4434'! ##### - desc = "AT90S4434"; - stk500_devcode = 0x52; - avr910_devcode = 0x6c; - signature = 0x1e 0x92 0x02; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + desc = "AT90S4434"; + stk500_devcode = 0x52; + avr910_devcode = 0x6c; + signature = 0x1e 0x92 0x02; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - memory "eeprom" - size = 256; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - ; - memory "flash" - size = 4096; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o o o o o o"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; ; #------------------------------------------------------------ @@ -2197,113 +2197,113 @@ part #------------------------------------------------------------ part - id = "8515"; - desc = "AT90S8515"; - stk500_devcode = 0x60; - avr910_devcode = 0x38; - signature = 0x1e 0x93 0x01; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "8515"; + desc = "AT90S8515"; + stk500_devcode = 0x60; + avr910_devcode = 0x38; + signature = 0x1e 0x93 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; - memory "eeprom" - size = 512; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x80; - readback_p2 = 0x7f; - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "flash" - size = 8192; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x7f; - readback_p2 = 0x7f; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + min_write_delay = 9000; + max_write_delay = 9000; + ; ; #------------------------------------------------------------ @@ -2311,120 +2311,120 @@ part #------------------------------------------------------------ part - id = "8535"; - desc = "AT90S8535"; - stk500_devcode = 0x61; - avr910_devcode = 0x68; - signature = 0x1e 0x93 0x03; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "8535"; + desc = "AT90S8535"; + stk500_devcode = 0x61; + avr910_devcode = 0x68; + signature = 0x1e 0x93 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; - memory "eeprom" - size = 512; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "flash" - size = 8192; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", "x x x x x x x x x x x x x x x o"; - write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", "x x x x x x x x o o x x x x x x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + min_write_delay = 9000; + max_write_delay = 9000; + ; ; #------------------------------------------------------------ @@ -2432,138 +2432,138 @@ part #------------------------------------------------------------ part - id = "m103"; - desc = "ATMEGA103"; - stk500_devcode = 0xB1; - avr910_devcode = 0x41; - signature = 0x1e 0x97 0x01; - chip_erase_delay = 112000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m103"; + desc = "ATMEGA103"; + stk500_devcode = 0xB1; + avr910_devcode = 0x41; + signature = 0x1e 0x97 0x01; + chip_erase_delay = 112000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE, - 0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE, - 0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A, - 0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 10; + pp_controlstack = + 0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE, + 0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE, + 0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A, + 0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 10; - memory "eeprom" - size = 4096; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x80; - readback_p2 = 0x7f; + memory "eeprom" + size = 4096; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 22000; - max_write_delay = 56000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 22000; + max_write_delay = 56000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x11; - delay = 70; - blocksize = 256; - readsize = 256; - ; + mode = 0x11; + delay = 70; + blocksize = 256; + readsize = 256; + ; - memory "fuse" - size = 1; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o x o 1 o o"; + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o x o 1 o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -2572,177 +2572,177 @@ part #------------------------------------------------------------ part - id = "m64"; - desc = "ATMEGA64"; - has_jtag = yes; - stk500_devcode = 0xA0; - avr910_devcode = 0x45; - signature = 0x1e 0x96 0x02; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m64"; + desc = "ATMEGA64"; + has_jtag = yes; + stk500_devcode = 0xA0; + avr910_devcode = 0x45; + signature = 0x1e 0x96 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x22; - spmcr = 0x68; - allowfullpagebitstream = yes; + idr = 0x22; + spmcr = 0x68; + allowfullpagebitstream = yes; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 20; - blocksize = 64; - readsize = 256; - ; + mode = 0x04; + delay = 20; + blocksize = 64; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -2753,177 +2753,177 @@ part #------------------------------------------------------------ part - id = "m128"; - desc = "ATMEGA128"; - has_jtag = yes; - stk500_devcode = 0xB2; - avr910_devcode = 0x43; - signature = 0x1e 0x97 0x02; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m128"; + desc = "ATMEGA128"; + has_jtag = yes; + stk500_devcode = 0xB2; + avr910_devcode = 0x43; + signature = 0x1e 0x97 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x22; - spmcr = 0x68; - rampz = 0x3b; - allowfullpagebitstream = yes; + idr = 0x22; + spmcr = 0x68; + rampz = 0x3b; + allowfullpagebitstream = yes; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -2931,189 +2931,189 @@ part #------------------------------------------------------------ part - id = "c128"; - desc = "AT90CAN128"; - has_jtag = yes; - stk500_devcode = 0xB3; + id = "c128"; + desc = "AT90CAN128"; + has_jtag = yes; + stk500_devcode = 0xB3; # avr910_devcode = 0x43; - signature = 0x1e 0x97 0x81; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + signature = 0x1e 0x97 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - eecr = 0x3f; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -3121,189 +3121,189 @@ part #------------------------------------------------------------ part - id = "c64"; - desc = "AT90CAN64"; - has_jtag = yes; - stk500_devcode = 0xB3; + id = "c64"; + desc = "AT90CAN64"; + has_jtag = yes; + stk500_devcode = 0xB3; # avr910_devcode = 0x43; - signature = 0x1e 0x96 0x81; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + signature = 0x1e 0x96 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - eecr = 0x3f; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 0 x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -3311,189 +3311,189 @@ part #------------------------------------------------------------ part - id = "c32"; - desc = "AT90CAN32"; - has_jtag = yes; - stk500_devcode = 0xB3; + id = "c32"; + desc = "AT90CAN32"; + has_jtag = yes; + stk500_devcode = 0xB3; # avr910_devcode = 0x43; - signature = 0x1e 0x95 0x81; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + signature = 0x1e 0x95 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - eecr = 0x3f; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 256; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 256; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -3502,174 +3502,174 @@ part #------------------------------------------------------------ part - id = "m16"; - desc = "ATMEGA16"; - has_jtag = yes; - stk500_devcode = 0x82; - avr910_devcode = 0x74; - signature = 0x1e 0x94 0x03; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m16"; + desc = "ATMEGA16"; + has_jtag = yes; + stk500_devcode = 0x82; + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x03; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 100; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + hventerstabdelay = 100; + progmodedelay = 100; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = yes; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x04; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "calibration" - size = 4; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "calibration" + size = 4; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; ; @@ -3680,187 +3680,187 @@ part # close to ATmega16 part - id = "m164p"; - desc = "ATMEGA164P"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x94 0x0a; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m164p"; + desc = "ATMEGA164P"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x0a; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -3871,187 +3871,187 @@ part # similar to ATmega164P part - id = "m324p"; - desc = "ATMEGA324P"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x95 0x08; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m324p"; + desc = "ATMEGA324P"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x95 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -4062,187 +4062,187 @@ part # similar to ATmega164 part - id = "m644"; - desc = "ATMEGA644"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x96 0x09; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m644"; + desc = "ATMEGA644"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x09; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -4252,187 +4252,187 @@ part # similar to ATmega164p part - id = "m644p"; - desc = "ATMEGA644P"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x96 0x0a; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m644p"; + desc = "ATMEGA644P"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x0a; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -4444,187 +4444,187 @@ part # similar to ATmega164p part - id = "m1284p"; - desc = "ATMEGA1284P"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x97 0x05; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m1284p"; + desc = "ATMEGA1284P"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x97 0x05; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -4634,193 +4634,193 @@ part #------------------------------------------------------------ part - id = "m162"; - desc = "ATMEGA162"; - has_jtag = yes; - stk500_devcode = 0x83; - avr910_devcode = 0x63; - signature = 0x1e 0x94 0x04; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; + id = "m162"; + desc = "ATMEGA162"; + has_jtag = yes; + stk500_devcode = 0x83; + avr910_devcode = 0x63; + signature = 0x1e 0x94 0x04; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; - idr = 0x04; - spmcr = 0x57; - allowfullpagebitstream = yes; + idr = 0x04; + spmcr = 0x57; + allowfullpagebitstream = yes; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; - ; + ; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; + memory "hfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; + memory "efuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; + memory "lock" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; + memory "signature" + size = 3; - read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -4830,157 +4830,157 @@ part #------------------------------------------------------------ part - id = "m163"; - desc = "ATMEGA163"; - stk500_devcode = 0x81; - avr910_devcode = 0x64; - signature = 0x1e 0x94 0x02; - chip_erase_delay = 32000; - pagel = 0xd7; - bs2 = 0xa0; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m163"; + desc = "ATMEGA163"; + stk500_devcode = 0x81; + avr910_devcode = 0x64; + signature = 0x1e 0x94 0x02; + chip_erase_delay = 32000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 30; - programfusepulsewidth = 0; - programfusepolltimeout = 2; - programlockpulsewidth = 0; - programlockpolltimeout = 2; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; memory "eeprom" - size = 512; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; + size = 512; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 16000; - max_write_delay = 16000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 16000; + max_write_delay = 16000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x11; - delay = 20; - blocksize = 128; - readsize = 256; - ; + mode = 0x11; + delay = 20; + blocksize = 128; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o x x o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o x x o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i 1 1 i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i 1 1 i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x 1 o o o"; + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x 1 o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x 0 x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x 0 x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -4988,179 +4988,179 @@ part #------------------------------------------------------------ part - id = "m169"; - desc = "ATMEGA169"; - has_jtag = yes; - stk500_devcode = 0x85; - avr910_devcode = 0x78; - signature = 0x1e 0x94 0x05; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m169"; + desc = "ATMEGA169"; + has_jtag = yes; + stk500_devcode = 0x85; + avr910_devcode = 0x78; + signature = 0x1e 0x94 0x05; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; + idr = 0x31; + spmcr = 0x57; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -5168,182 +5168,182 @@ part #------------------------------------------------------------ part - id = "m329"; - desc = "ATMEGA329"; - has_jtag = yes; + id = "m329"; + desc = "ATMEGA329"; + has_jtag = yes; # stk500_devcode = 0x85; # no STK500 support, only STK500v2 # avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x95 0x03; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; + idr = 0x31; + spmcr = 0x57; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -5352,182 +5352,182 @@ part # Identical to ATmega329 except of the signature part - id = "m329p"; - desc = "ATMEGA329P"; - has_jtag = yes; + id = "m329p"; + desc = "ATMEGA329P"; + has_jtag = yes; # stk500_devcode = 0x85; # no STK500 support, only STK500v2 # avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x95 0x0b; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x0b; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; + idr = 0x31; + spmcr = 0x57; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -5537,182 +5537,182 @@ part # identical to ATmega329 part - id = "m3290"; - desc = "ATMEGA3290"; - has_jtag = yes; + id = "m3290"; + desc = "ATMEGA3290"; + has_jtag = yes; # stk500_devcode = 0x85; # no STK500 support, only STK500v2 # avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x95 0x04; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x04; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; + idr = 0x31; + spmcr = 0x57; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a3 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -5722,182 +5722,182 @@ part # identical to ATmega3290 except of the signature part - id = "m3290p"; - desc = "ATMEGA3290P"; - has_jtag = yes; + id = "m3290p"; + desc = "ATMEGA3290P"; + has_jtag = yes; # stk500_devcode = 0x85; # no STK500 support, only STK500v2 # avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x95 0x0c; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x0c; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; + idr = 0x31; + spmcr = 0x57; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a3 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -5905,182 +5905,182 @@ part #------------------------------------------------------------ part - id = "m649"; - desc = "ATMEGA649"; - has_jtag = yes; + id = "m649"; + desc = "ATMEGA649"; + has_jtag = yes; # stk500_devcode = 0x85; # no STK500 support, only STK500v2 # avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x96 0x03; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; + idr = 0x31; + spmcr = 0x57; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -6090,192 +6090,192 @@ part # identical to ATmega649 part - id = "m6490"; - desc = "ATMEGA6490"; - has_jtag = yes; + id = "m6490"; + desc = "ATMEGA6490"; + has_jtag = yes; # stk500_devcode = 0x85; # no STK500 support, only STK500v2 # avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x96 0x04; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x04; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; + idr = 0x31; + spmcr = 0x57; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -6283,174 +6283,174 @@ part #------------------------------------------------------------ part - id = "m32"; - desc = "ATMEGA32"; - has_jtag = yes; - stk500_devcode = 0x91; - avr910_devcode = 0x72; - signature = 0x1e 0x95 0x02; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m32"; + desc = "ATMEGA32"; + has_jtag = yes; + stk500_devcode = 0x91; + avr910_devcode = 0x72; + signature = 0x1e 0x95 0x02; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = yes; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x04; - delay = 10; - blocksize = 64; - readsize = 256; - ; + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -6458,138 +6458,138 @@ part #------------------------------------------------------------ part - id = "m161"; - desc = "ATMEGA161"; - stk500_devcode = 0x80; - avr910_devcode = 0x60; - signature = 0x1e 0x94 0x01; - chip_erase_delay = 28000; - pagel = 0xd7; - bs2 = 0xa0; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m161"; + desc = "ATMEGA161"; + stk500_devcode = 0x80; + avr910_devcode = 0x60; + signature = 0x1e 0x94 0x01; + chip_erase_delay = 28000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 30; - programfusepulsewidth = 0; - programfusepolltimeout = 2; - programlockpulsewidth = 0; - programlockpolltimeout = 2; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; memory "eeprom" - size = 512; - min_write_delay = 3400; - max_write_delay = 3400; - readback_p1 = 0xff; - readback_p2 = 0xff; + size = 512; + min_write_delay = 3400; + max_write_delay = 3400; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 5; - blocksize = 128; - readsize = 256; - ; + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 14000; - max_write_delay = 14000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 14000; + max_write_delay = 14000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 16; - blocksize = 128; - readsize = 256; - ; + mode = 0x21; + delay = 16; + blocksize = 128; + readsize = 256; + ; - memory "fuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x o x o o o o o"; + memory "fuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x o x o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", - "x x x x x x x x 1 i 1 i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x 1 i 1 i i i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -6598,158 +6598,158 @@ part #------------------------------------------------------------ part - id = "m8"; - desc = "ATMEGA8"; - stk500_devcode = 0x70; - avr910_devcode = 0x76; - signature = 0x1e 0x93 0x07; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 10000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m8"; + desc = "ATMEGA8"; + stk500_devcode = 0x70; + avr910_devcode = 0x76; + signature = 0x1e 0x93 0x07; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 10000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 512; - page_size = 4; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + size = 512; + page_size = 4; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 20; - blocksize = 128; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 10; - blocksize = 64; - readsize = 256; - ; + mode = 0x21; + delay = 10; + blocksize = 64; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -6759,154 +6759,154 @@ part #------------------------------------------------------------ part - id = "m8515"; - desc = "ATMEGA8515"; - stk500_devcode = 0x63; - avr910_devcode = 0x3A; - signature = 0x1e 0x93 0x06; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m8515"; + desc = "ATMEGA8515"; + stk500_devcode = 0x63; + avr910_devcode = 0x3A; + signature = 0x1e 0x93 0x06; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 10; - blocksize = 128; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -6917,156 +6917,156 @@ part #------------------------------------------------------------ part - id = "m8535"; - desc = "ATMEGA8535"; - stk500_devcode = 0x64; - avr910_devcode = 0x69; - signature = 0x1e 0x93 0x08; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m8535"; + desc = "ATMEGA8535"; + stk500_devcode = 0x64; + avr910_devcode = 0x69; + signature = 0x1e 0x93 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 10; - blocksize = 128; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -7075,153 +7075,153 @@ part #------------------------------------------------------------ part - id = "t26"; - desc = "ATTINY26"; - stk500_devcode = 0x21; - avr910_devcode = 0x5e; - signature = 0x1e 0x91 0x09; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "t26"; + desc = "ATTINY26"; + stk500_devcode = 0x21; + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x09; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 10; - blocksize = 64; - readsize = 256; - ; + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 16; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 16; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x x x x i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x x x x i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; ; @@ -7232,185 +7232,185 @@ part # Close to ATtiny26 part - id = "t261"; - desc = "ATTINY261"; - has_debugwire = yes; - flash_instr = 0xB4, 0x00, 0x10; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t261"; + desc = "ATTINY261"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; # stk500_devcode = 0x21; # avr910_devcode = 0x5e; - signature = 0x1e 0x91 0x0c; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 4000; + signature = 0x1e 0x91 0x0c; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - size = 128; - page_size = 4; - num_pages = 32; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; + size = 128; + page_size = 4; + num_pages = 32; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x x x o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -7421,185 +7421,185 @@ part # Close to ATtiny261 part - id = "t461"; - desc = "ATTINY461"; - has_debugwire = yes; - flash_instr = 0xB4, 0x00, 0x10; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t461"; + desc = "ATTINY461"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; # stk500_devcode = 0x21; # avr910_devcode = 0x5e; - signature = 0x1e 0x92 0x08; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 4000; + signature = 0x1e 0x92 0x08; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - size = 256; - page_size = 4; - num_pages = 64; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; + size = 256; + page_size = 4; + num_pages = 64; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x x x o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -7610,185 +7610,185 @@ part # Close to ATtiny461 part - id = "t861"; - desc = "ATTINY861"; - has_debugwire = yes; - flash_instr = 0xB4, 0x00, 0x10; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t861"; + desc = "ATTINY861"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; # stk500_devcode = 0x21; # avr910_devcode = 0x5e; - signature = 0x1e 0x93 0x0d; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 4000; + signature = 0x1e 0x93 0x0d; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - size = 512; - num_pages = 128; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; + size = 512; + num_pages = 128; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x x x o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -7798,185 +7798,185 @@ part #------------------------------------------------------------ part - id = "m48"; - desc = "ATMEGA48"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x59; + id = "m48"; + desc = "ATMEGA48"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x59; # avr910_devcode = 0x; - signature = 0x1e 0x92 0x05; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 45000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + signature = 0x1e 0x92 0x05; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 45000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - page_size = 4; - size = 256; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; + page_size = 4; + size = 256; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x x", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x x x o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -7985,185 +7985,185 @@ part #------------------------------------------------------------ part - id = "m88"; - desc = "ATMEGA88"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x73; + id = "m88"; + desc = "ATMEGA88"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x73; # avr910_devcode = 0x; - signature = 0x1e 0x93 0x0a; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + signature = 0x1e 0x93 0x0a; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - page_size = 4; - size = 512; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -8171,187 +8171,187 @@ part #------------------------------------------------------------ part - id = "m168"; - desc = "ATMEGA168"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x86; - # avr910_devcode = 0x; - signature = 0x1e 0x94 0x06; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m168"; + desc = "ATMEGA168"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x94 0x06; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - page_size = 4; - size = 512; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; - ; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -8359,185 +8359,185 @@ part #------------------------------------------------------------ part - id = "t88"; - desc = "attiny88"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x73; + id = "t88"; + desc = "attiny88"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x73; # avr910_devcode = 0x; - signature = 0x1e 0x93 0x11; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + signature = 0x1e 0x93 0x11; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - page_size = 4; - size = 64; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; + page_size = 4; + size = 64; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 64; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 64; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -8545,100 +8545,100 @@ part #------------------------------------------------------------ part - id = "m328p"; - desc = "ATMEGA328P"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + id = "m328p"; + desc = "ATMEGA328P"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x86; - # avr910_devcode = 0x; - signature = 0x1e 0x95 0x0F; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x95 0x0F; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - page_size = 4; - size = 1024; + memory "eeprom" + paged = no; + page_size = 4; + size = 1024; min_write_delay = 3600; max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x a9 a8", + " 0 0 0 x x x a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; min_write_delay = 4500; max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; + readback_p1 = 0xff; + readback_p2 = 0xff; read_lo = " 0 0 1 0 0 0 0 0", " 0 0 a13 a12 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", @@ -8650,82 +8650,82 @@ part " o o o o o o o o"; loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; - ; + ; - memory "lfuse" + memory "lfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + "x x x x x x x x o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" + memory "hfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + "x x x x x x x x o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" + memory "efuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x o o o"; + "x x x x x x x x x x x x x o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" + memory "lock" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + "x x x x x x x x x x o o o o o o"; write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" + memory "calibration" size = 1; read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" + memory "signature" size = 3; read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -8733,186 +8733,186 @@ part #------------------------------------------------------------ part - id = "t2313"; - desc = "ATtiny2313"; - has_debugwire = yes; - flash_instr = 0xB2, 0x0F, 0x1F; - eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x23; + id = "t2313"; + desc = "ATtiny2313"; + has_debugwire = yes; + flash_instr = 0xB2, 0x0F, 0x1F; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x23; ## Use the ATtiny26 devcode: - avr910_devcode = 0x5e; - signature = 0x1e 0x91 0x0a; - pagel = 0xD4; - bs2 = 0xD6; - reset = io; - chip_erase_delay = 9000; + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0a; + pagel = 0xD4; + bs2 = 0xD6; + reset = io; + chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, - 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, - 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, - 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, + 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, + 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, + 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 128; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; # The information in the data sheet of April/2004 is wrong, this works: - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; # The information in the data sheet of April/2004 is wrong, this works: - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; # The information in the data sheet of April/2004 is wrong, this works: - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; # ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; # The Tiny2313 has calibration data for both 4 MHz and 8 MHz. # The information in the data sheet of April/2004 is wrong, this works: - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -8920,181 +8920,181 @@ part #------------------------------------------------------------ part - id = "pwm2"; - desc = "AT90PWM2"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x65; + id = "pwm2"; + desc = "AT90PWM2"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; ## avr910_devcode = ?; - signature = 0x1e 0x93 0x81; - pagel = 0xD8; - bs2 = 0xE2; - reset = io; - chip_erase_delay = 9000; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; # AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -9104,181 +9104,181 @@ part # Completely identical to AT90PWM2 (including the signature!) part - id = "pwm3"; - desc = "AT90PWM3"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x65; + id = "pwm3"; + desc = "AT90PWM3"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; ## avr910_devcode = ?; - signature = 0x1e 0x93 0x81; - pagel = 0xD8; - bs2 = 0xE2; - reset = io; - chip_erase_delay = 9000; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; # AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -9287,180 +9287,180 @@ part # Same as AT90PWM2 but different signature. part - id = "pwm2b"; - desc = "AT90PWM2B"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x65; + id = "pwm2b"; + desc = "AT90PWM2B"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; ## avr910_devcode = ?; - signature = 0x1e 0x93 0x83; - pagel = 0xD8; - bs2 = 0xE2; - reset = io; - chip_erase_delay = 9000; + signature = 0x1e 0x93 0x83; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -9470,180 +9470,180 @@ part # Completely identical to AT90PWM2B (including the signature!) part - id = "pwm3b"; - desc = "AT90PWM3B"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x65; + id = "pwm3b"; + desc = "AT90PWM3B"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; ## avr910_devcode = ?; - signature = 0x1e 0x93 0x83; - pagel = 0xD8; - bs2 = 0xE2; - reset = io; - chip_erase_delay = 9000; + signature = 0x1e 0x93 0x83; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -9651,179 +9651,179 @@ part #------------------------------------------------------------ part - id = "t25"; - desc = "ATtiny25"; - has_debugwire = yes; - flash_instr = 0xB4, 0x02, 0x12; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t25"; + desc = "ATtiny25"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; ## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; + stk500_devcode = 0x14; ## avr910_devcode = ?; ## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x91 0x08; - reset = io; - chip_erase_delay = 4500; + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x08; + reset = io; + chip_erase_delay = 4500; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 128; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; # ATtiny25 has Signature Bytes: 0x1E 0x91 0x08. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -9831,178 +9831,178 @@ part #------------------------------------------------------------ part - id = "t45"; - desc = "ATtiny45"; - has_debugwire = yes; - flash_instr = 0xB4, 0x02, 0x12; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x14; + id = "t45"; + desc = "ATtiny45"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; ## avr910_devcode = ?; ## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x92 0x06; - reset = io; - chip_erase_delay = 4500; + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x06; + reset = io; + chip_erase_delay = 4500; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - hvsp_controlstack = + hvsp_controlstack = 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 256; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 256; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; # ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!) - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -10010,179 +10010,179 @@ part #------------------------------------------------------------ part - id = "t85"; - desc = "ATtiny85"; - has_debugwire = yes; - flash_instr = 0xB4, 0x02, 0x12; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t85"; + desc = "ATtiny85"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; ## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; + stk500_devcode = 0x14; ## avr910_devcode = ?; ## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x93 0x0b; - reset = io; - chip_erase_delay = 4500; + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0b; + reset = io; + chip_erase_delay = 4500; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; # ATtiny85 has Signature Bytes: 0x1E 0x93 0x08. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -10191,187 +10191,187 @@ part # Almost same as ATmega1280, except for different memory sizes part - id = "m640"; - desc = "ATMEGA640"; - signature = 0x1e 0x96 0x08; - has_jtag = yes; + id = "m640"; + desc = "ATMEGA640"; + signature = 0x1e 0x96 0x08; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -10379,187 +10379,187 @@ part #------------------------------------------------------------ part - id = "m1280"; - desc = "ATMEGA1280"; - signature = 0x1e 0x97 0x03; - has_jtag = yes; + id = "m1280"; + desc = "ATMEGA1280"; + signature = 0x1e 0x97 0x03; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -10568,187 +10568,187 @@ part # Identical to ATmega1280 part - id = "m1281"; - desc = "ATMEGA1281"; - signature = 0x1e 0x97 0x04; - has_jtag = yes; + id = "m1281"; + desc = "ATMEGA1281"; + signature = 0x1e 0x97 0x04; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -10756,192 +10756,192 @@ part #------------------------------------------------------------ part - id = "m2560"; - desc = "ATMEGA2560"; - signature = 0x1e 0x98 0x01; - has_jtag = yes; + id = "m2560"; + desc = "ATMEGA2560"; + signature = 0x1e 0x98 0x01; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 262144; - page_size = 256; - num_pages = 1024; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - load_ext_addr = " 0 1 0 0 1 1 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 a16", - " 0 0 0 0 0 0 0 0"; + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -10949,192 +10949,192 @@ part #------------------------------------------------------------ part - id = "m2561"; - desc = "ATMEGA2561"; - signature = 0x1e 0x98 0x02; - has_jtag = yes; + id = "m2561"; + desc = "ATMEGA2561"; + signature = 0x1e 0x98 0x02; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 262144; - page_size = 256; - num_pages = 1024; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - load_ext_addr = " 0 1 0 0 1 1 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 a16", - " 0 0 0 0 0 0 0 0"; + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -11143,187 +11143,187 @@ part # Identical to ATmega2561 but half the ROM part - id = "m128rfa1"; - desc = "ATMEGA128RFA1"; - signature = 0x1e 0xa7 0x01; - has_jtag = yes; + id = "m128rfa1"; + desc = "ATMEGA128RFA1"; + signature = 0x1e 0xa7 0x01; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xE2; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xE2; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -11331,181 +11331,181 @@ part #------------------------------------------------------------ part - id = "t24"; - desc = "ATtiny24"; - has_debugwire = yes; - flash_instr = 0xB4, 0x07, 0x17; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t24"; + desc = "ATtiny24"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; ## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; + stk500_devcode = 0x14; ## avr910_devcode = ?; ## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x91 0x0b; - reset = io; - chip_erase_delay = 4500; + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x0b; + reset = io; + chip_erase_delay = 4500; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 70; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 128; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; # ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -11513,181 +11513,181 @@ part #------------------------------------------------------------ part - id = "t44"; - desc = "ATtiny44"; - has_debugwire = yes; - flash_instr = 0xB4, 0x07, 0x17; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t44"; + desc = "ATtiny44"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; ## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; + stk500_devcode = 0x14; ## avr910_devcode = ?; ## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x92 0x07; - reset = io; - chip_erase_delay = 4500; + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x07; + reset = io; + chip_erase_delay = 4500; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 70; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 256; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 256; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; # ATtiny44 has Signature Bytes: 0x1E 0x92 0x07. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -11695,182 +11695,182 @@ part #------------------------------------------------------------ part - id = "t84"; - desc = "ATtiny84"; - has_debugwire = yes; - flash_instr = 0xB4, 0x07, 0x17; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t84"; + desc = "ATtiny84"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; ## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; + stk500_devcode = 0x14; ## avr910_devcode = ?; ## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x93 0x0c; - reset = io; - chip_erase_delay = 4500; + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0c; + reset = io; + chip_erase_delay = 4500; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 70; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; # ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -11878,187 +11878,187 @@ part #------------------------------------------------------------ part - id = "m32u4"; - desc = "ATmega32U4"; - signature = 0x1e 0x95 0x87; - has_jtag = yes; + id = "m32u4"; + desc = "ATmega32U4"; + signature = 0x1e 0x95 0x87; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -12066,187 +12066,187 @@ part #------------------------------------------------------------ part - id = "usb646"; - desc = "AT90USB646"; - signature = 0x1e 0x96 0x82; - has_jtag = yes; + id = "usb646"; + desc = "AT90USB646"; + signature = 0x1e 0x96 0x82; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -12255,187 +12255,187 @@ part # identical to AT90USB646 part - id = "usb647"; - desc = "AT90USB647"; - signature = 0x1e 0x96 0x82; - has_jtag = yes; + id = "usb647"; + desc = "AT90USB647"; + signature = 0x1e 0x96 0x82; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -12443,187 +12443,187 @@ part #------------------------------------------------------------ part - id = "usb1286"; - desc = "AT90USB1286"; - signature = 0x1e 0x97 0x82; - has_jtag = yes; + id = "usb1286"; + desc = "AT90USB1286"; + signature = 0x1e 0x97 0x82; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -12632,187 +12632,187 @@ part # identical to AT90USB1286 part - id = "usb1287"; - desc = "AT90USB1287"; - signature = 0x1e 0x97 0x82; - has_jtag = yes; + id = "usb1287"; + desc = "AT90USB1287"; + signature = 0x1e 0x97 0x82; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -12821,179 +12821,179 @@ part #------------------------------------------------------------ part - id = "usb162"; - desc = "AT90USB162"; - has_jtag = no; - has_debugwire = yes; - signature = 0x1e 0x94 0x82; - chip_erase_delay = 9000; - reset = io; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - pagel = 0xD7; - bs2 = 0xC6; + id = "usb162"; + desc = "AT90USB162"; + has_jtag = no; + has_debugwire = yes; + signature = 0x1e 0x94 0x82; + chip_erase_delay = 9000; + reset = io; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + pagel = 0xD7; + bs2 = 0xC6; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + num_pages = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -13005,179 +13005,179 @@ part # num_pages = 64; part - id = "usb82"; - desc = "AT90USB82"; - has_jtag = no; - has_debugwire = yes; - signature = 0x1e 0x93 0x82; - chip_erase_delay = 9000; - reset = io; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - pagel = 0xD7; - bs2 = 0xC6; + id = "usb82"; + desc = "AT90USB82"; + has_jtag = no; + has_debugwire = yes; + signature = 0x1e 0x93 0x82; + chip_erase_delay = 9000; + reset = io; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + pagel = 0xD7; + bs2 = 0xC6; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + num_pages = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 8192; - page_size = 128; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 8192; + page_size = 128; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -13185,188 +13185,188 @@ part #------------------------------------------------------------ part - id = "m325"; - desc = "ATMEGA325"; - signature = 0x1e 0x95 0x05; - has_jtag = yes; + id = "m325"; + desc = "ATMEGA325"; + signature = 0x1e 0x95 0x05; + has_jtag = yes; # stk500_devcode = 0x??; # No STK500v1 support? # avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -13374,188 +13374,188 @@ part #------------------------------------------------------------ part - id = "m645"; - desc = "ATMEGA645"; - signature = 0x1E 0x96 0x05; - has_jtag = yes; + id = "m645"; + desc = "ATMEGA645"; + signature = 0x1E 0x96 0x05; + has_jtag = yes; # stk500_devcode = 0x??; # No STK500v1 support? # avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " 0 0 0 0 0 0 0 0"; + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -13563,188 +13563,188 @@ part #------------------------------------------------------------ part - id = "m3250"; - desc = "ATMEGA3250"; - signature = 0x1E 0x95 0x06; - has_jtag = yes; + id = "m3250"; + desc = "ATMEGA3250"; + signature = 0x1E 0x95 0x06; + has_jtag = yes; # stk500_devcode = 0x??; # No STK500v1 support? # avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -13752,188 +13752,188 @@ part #------------------------------------------------------------ part - id = "m6450"; - desc = "ATMEGA6450"; - signature = 0x1E 0x96 0x06; - has_jtag = yes; + id = "m6450"; + desc = "ATMEGA6450"; + signature = 0x1E 0x96 0x06; + has_jtag = yes; # stk500_devcode = 0x??; # No STK500v1 support? # avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " 0 0 0 0 0 0 0 0"; + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -13941,96 +13941,96 @@ part #------------------------------------------------------------ part - id = "x64a1"; - desc = "ATXMEGA64A1"; - signature = 0x1e 0x96 0x4e; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x64a1"; + desc = "ATXMEGA64A1"; + signature = 0x1e 0x96 0x4e; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00010000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00010000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00001000; - offset = 0x0080f000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00001000; + offset = 0x0080f000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00001000; - offset = 0x00810000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00001000; + offset = 0x00810000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00011000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00011000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14038,96 +14038,96 @@ part #------------------------------------------------------------ part - id = "x128a1"; - desc = "ATXMEGA128A1"; - signature = 0x1e 0x97 0x4c; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x128a1"; + desc = "ATXMEGA128A1"; + signature = 0x1e 0x97 0x4c; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00020000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00020000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0081e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0081e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00820000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00820000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00022000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00022000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14135,96 +14135,96 @@ part #------------------------------------------------------------ part - id = "x128a1d"; - desc = "ATXMEGA128A1REVD"; - signature = 0x1e 0x97 0x41; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x128a1d"; + desc = "ATXMEGA128A1REVD"; + signature = 0x1e 0x97 0x41; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00020000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00020000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0081e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0081e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00820000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00820000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00022000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00022000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14232,96 +14232,96 @@ part #------------------------------------------------------------ part - id = "x192a1"; - desc = "ATXMEGA192A1"; - signature = 0x1e 0x97 0x4e; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x192a1"; + desc = "ATXMEGA192A1"; + signature = 0x1e 0x97 0x4e; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00030000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00030000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0082e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0082e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00830000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00830000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00032000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00032000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14329,96 +14329,96 @@ part #------------------------------------------------------------ part - id = "x256a1"; - desc = "ATXMEGA256A1"; - signature = 0x1e 0x98 0x46; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x256a1"; + desc = "ATXMEGA256A1"; + signature = 0x1e 0x98 0x46; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x1000; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x1000; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00040000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00040000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0083e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0083e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00840000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00840000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00042000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00042000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14426,96 +14426,96 @@ part #------------------------------------------------------------ part - id = "x64a3"; - desc = "ATXMEGA64A3"; - signature = 0x1e 0x96 0x42; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x64a3"; + desc = "ATXMEGA64A3"; + signature = 0x1e 0x96 0x42; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00010000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00010000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00001000; - offset = 0x0080f000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00001000; + offset = 0x0080f000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00001000; - offset = 0x00810000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00001000; + offset = 0x00810000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00011000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00011000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14523,96 +14523,96 @@ part #------------------------------------------------------------ part - id = "x128a3"; - desc = "ATXMEGA128A3"; - signature = 0x1e 0x97 0x42; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x128a3"; + desc = "ATXMEGA128A3"; + signature = 0x1e 0x97 0x42; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00020000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00020000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0081e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0081e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00820000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00820000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00022000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00022000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14620,96 +14620,96 @@ part #------------------------------------------------------------ part - id = "x192a3"; - desc = "ATXMEGA192A3"; - signature = 0x1e 0x97 0x44; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x192a3"; + desc = "ATXMEGA192A3"; + signature = 0x1e 0x97 0x44; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00030000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00030000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0082e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0082e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00830000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00830000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00032000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00032000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14717,96 +14717,96 @@ part #------------------------------------------------------------ part - id = "x256a3"; - desc = "ATXMEGA256A3"; - signature = 0x1e 0x98 0x42; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x256a3"; + desc = "ATXMEGA256A3"; + signature = 0x1e 0x98 0x42; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x1000; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x1000; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00040000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00040000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0083e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0083e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00840000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00840000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00042000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00042000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14814,96 +14814,96 @@ part #------------------------------------------------------------ part - id = "x256a3b"; - desc = "ATXMEGA256A3B"; - signature = 0x1e 0x98 0x43; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x256a3b"; + desc = "ATXMEGA256A3B"; + signature = 0x1e 0x98 0x43; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x1000; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x1000; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00040000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00040000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0083e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0083e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00840000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00840000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00042000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00042000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14911,96 +14911,96 @@ part #------------------------------------------------------------ part - id = "x16a4"; - desc = "ATXMEGA16A4"; - signature = 0x1e 0x94 0x41; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x16a4"; + desc = "ATXMEGA16A4"; + signature = 0x1e 0x94 0x41; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0400; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0400; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00004000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00004000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00001000; - offset = 0x00803000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00001000; + offset = 0x00803000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00001000; - offset = 0x00804000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00001000; + offset = 0x00804000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00005000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00005000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -15008,96 +15008,96 @@ part #------------------------------------------------------------ part - id = "x32a4"; - desc = "ATXMEGA32A4"; - signature = 0x1e 0x95 0x41; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x32a4"; + desc = "ATXMEGA32A4"; + signature = 0x1e 0x95 0x41; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0400; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0400; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00008000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00008000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00001000; - offset = 0x00807000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00001000; + offset = 0x00807000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00001000; - offset = 0x00808000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00001000; + offset = 0x00808000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00009000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00009000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -15105,96 +15105,96 @@ part #------------------------------------------------------------ part - id = "x64a4"; - desc = "ATXMEGA64A4"; - signature = 0x1e 0x96 0x46; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x64a4"; + desc = "ATXMEGA64A4"; + signature = 0x1e 0x96 0x46; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00010000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00010000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00001000; - offset = 0x0080f000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00001000; + offset = 0x0080f000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00001000; - offset = 0x00810000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00001000; + offset = 0x00810000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00011000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00011000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -15202,96 +15202,96 @@ part #------------------------------------------------------------ part - id = "x128a4"; - desc = "ATXMEGA128A4"; - signature = 0x1e 0x97 0x46; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x128a4"; + desc = "ATXMEGA128A4"; + signature = 0x1e 0x97 0x46; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00020000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00020000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0081e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0081e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00820000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00820000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00022000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00022000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; @@ -15300,20 +15300,20 @@ part #------------------------------------------------------------ part - id = "ucr2"; - desc = "32UC3A0512"; - signature = 0xED 0xC0 0x3F; - has_jtag = yes; - is_avr32 = yes; + id = "ucr2"; + desc = "32UC3A0512"; + signature = 0xED 0xC0 0x3F; + has_jtag = yes; + is_avr32 = yes; - memory "flash" - paged = yes; - page_size = 512; # bytes - readsize = 512; # bytes - num_pages = 1024; # could be set dynamicly - size = 0x00080000; # could be set dynamicly - offset = 0x80000000; - ; + memory "flash" + paged = yes; + page_size = 512; # bytes + readsize = 512; # bytes + num_pages = 1024; # could be set dynamicly + size = 0x00080000; # could be set dynamicly + offset = 0x80000000; + ; ; #------------------------------------------------------------ @@ -15321,38 +15321,38 @@ part #------------------------------------------------------------ part - id = "t4"; - desc = "ATtiny4"; - signature = 0x1e 0x8f 0x0a; - has_tpi = yes; + id = "t4"; + desc = "ATtiny4"; + signature = 0x1e 0x8f 0x0a; + has_tpi = yes; - memory "flash" - size = 512; - offset = 0x4000; - page_size = 16; - blocksize = 128; - ; + memory "flash" + size = 512; + offset = 0x4000; + page_size = 16; + blocksize = 128; + ; - memory "signature" - size = 3; - offset = 0x3fc0; - ; + memory "signature" + size = 3; + offset = 0x3fc0; + ; - memory "fuse" - size = 1; - offset = 0x3f40; - blocksize = 4; - ; + memory "fuse" + size = 1; + offset = 0x3f40; + blocksize = 4; + ; - memory "calibration" - size = 1; - offset = 0x3f80; - ; + memory "calibration" + size = 1; + offset = 0x3f80; + ; - memory "lockbits" - size = 1; - offset = 0x3f00; - ; + memory "lockbits" + size = 1; + offset = 0x3f00; + ; ; @@ -15361,38 +15361,38 @@ part #------------------------------------------------------------ part - id = "t5"; - desc = "ATtiny5"; - signature = 0x1e 0x8f 0x09; - has_tpi = yes; + id = "t5"; + desc = "ATtiny5"; + signature = 0x1e 0x8f 0x09; + has_tpi = yes; - memory "flash" - size = 512; - offset = 0x4000; - page_size = 16; - blocksize = 128; - ; + memory "flash" + size = 512; + offset = 0x4000; + page_size = 16; + blocksize = 128; + ; - memory "signature" - size = 3; - offset = 0x3fc0; - ; + memory "signature" + size = 3; + offset = 0x3fc0; + ; - memory "fuse" - size = 1; - offset = 0x3f40; - blocksize = 4; - ; + memory "fuse" + size = 1; + offset = 0x3f40; + blocksize = 4; + ; - memory "calibration" - size = 1; - offset = 0x3f80; - ; + memory "calibration" + size = 1; + offset = 0x3f80; + ; - memory "lockbits" - size = 1; - offset = 0x3f00; - ; + memory "lockbits" + size = 1; + offset = 0x3f00; + ; ; @@ -15401,38 +15401,38 @@ part #------------------------------------------------------------ part - id = "t8"; - desc = "ATtiny9"; - signature = 0x1e 0x90 0x08; - has_tpi = yes; + id = "t8"; + desc = "ATtiny9"; + signature = 0x1e 0x90 0x08; + has_tpi = yes; - memory "flash" - size = 1024; - offset = 0x4000; - page_size = 16; - blocksize = 128; - ; + memory "flash" + size = 1024; + offset = 0x4000; + page_size = 16; + blocksize = 128; + ; - memory "signature" - size = 3; - offset = 0x3fc0; - ; + memory "signature" + size = 3; + offset = 0x3fc0; + ; - memory "fuse" - size = 1; - offset = 0x3f40; - blocksize = 4; - ; + memory "fuse" + size = 1; + offset = 0x3f40; + blocksize = 4; + ; - memory "calibration" - size = 1; - offset = 0x3f80; - ; + memory "calibration" + size = 1; + offset = 0x3f80; + ; - memory "lockbits" - size = 1; - offset = 0x3f00; - ; + memory "lockbits" + size = 1; + offset = 0x3f00; + ; ; @@ -15441,38 +15441,38 @@ part #------------------------------------------------------------ part - id = "t10"; - desc = "ATtiny10"; - signature = 0x1e 0x90 0x03; - has_tpi = yes; + id = "t10"; + desc = "ATtiny10"; + signature = 0x1e 0x90 0x03; + has_tpi = yes; - memory "flash" - size = 1024; - offset = 0x4000; - page_size = 16; - blocksize = 128; - ; + memory "flash" + size = 1024; + offset = 0x4000; + page_size = 16; + blocksize = 128; + ; - memory "signature" - size = 3; - offset = 0x3fc0; - ; + memory "signature" + size = 3; + offset = 0x3fc0; + ; - memory "fuse" - size = 1; - offset = 0x3f40; - blocksize = 4; - ; + memory "fuse" + size = 1; + offset = 0x3f40; + blocksize = 4; + ; - memory "calibration" - size = 1; - offset = 0x3f80; - ; + memory "calibration" + size = 1; + offset = 0x3f80; + ; - memory "lockbits" - size = 1; - offset = 0x3f00; - ; + memory "lockbits" + size = 1; + offset = 0x3f00; + ; ; diff --git a/buildroot/share/vscode/avrdude_macOS.conf b/buildroot/share/vscode/avrdude_macOS.conf index 6147a2259a..c3235eed2b 100644 --- a/buildroot/share/vscode/avrdude_macOS.conf +++ b/buildroot/share/vscode/avrdude_macOS.conf @@ -240,8 +240,8 @@ #define AT86RF401 0xD0 #define AT89START 0xE0 -#define AT89S51 0xE0 -#define AT89S52 0xE1 +#define AT89S51 0xE0 +#define AT89S52 0xE1 # The following table lists the devices in the original AVR910 # appnote: @@ -293,15 +293,15 @@ # in the Internet. These add the following codes (only devices that # actually exist are listed): -# ATmega8515 0x3A -# ATmega128 0x43 -# ATmega64 0x45 -# ATtiny26 0x5E -# ATmega8535 0x69 -# ATmega32 0x72 -# ATmega16 0x74 -# ATmega8 0x76 -# ATmega169 0x78 +# ATmega8515 0x3A +# ATmega128 0x43 +# ATmega64 0x45 +# ATtiny26 0x5E +# ATmega8535 0x69 +# ATmega32 0x72 +# ATmega16 0x74 +# ATmega8 0x76 +# ATmega169 0x78 # # Overall avrdude defaults @@ -688,63 +688,63 @@ programmer # This is an HVSP-only device. part - id = "t11"; - desc = "ATtiny11"; - stk500_devcode = 0x11; - signature = 0x1e 0x90 0x04; - chip_erase_delay = 20000; + id = "t11"; + desc = "ATtiny11"; + stk500_devcode = 0x11; + signature = 0x1e 0x90 0x04; + chip_erase_delay = 20000; - timeout = 200; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + timeout = 200; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 64; - blocksize = 64; - readsize = 256; - delay = 5; - ; + memory "eeprom" + size = 64; + blocksize = 64; + readsize = 256; + delay = 5; + ; - memory "flash" - size = 1024; - blocksize = 128; - readsize = 256; - delay = 3; - ; + memory "flash" + size = 1024; + blocksize = 128; + readsize = 256; + delay = 3; + ; - memory "signature" - size = 3; - ; + memory "signature" + size = 3; + ; - memory "lock" - size = 1; - ; + memory "lock" + size = 1; + ; - memory "calibration" - size = 1; - ; + memory "calibration" + size = 1; + ; - memory "fuse" - size = 1; - ; + memory "fuse" + size = 1; + ; ; #------------------------------------------------------------ @@ -752,132 +752,132 @@ part #------------------------------------------------------------ part - id = "t12"; - desc = "ATtiny12"; - stk500_devcode = 0x12; - avr910_devcode = 0x55; - signature = 0x1e 0x90 0x05; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "t12"; + desc = "ATtiny12"; + stk500_devcode = 0x12; + avr910_devcode = 0x55; + signature = 0x1e 0x90 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 64; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 64; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 8; - blocksize = 64; - readsize = 256; - ; + mode = 0x04; + delay = 8; + blocksize = 64; + readsize = 256; + ; - memory "flash" - size = 1024; - min_write_delay = 4500; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + size = 1024; + min_write_delay = 4500; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 5; - blocksize = 128; - readsize = 256; - ; + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "fuse" - size = 1; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x o o o o o o o o"; + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; ; #------------------------------------------------------------ @@ -885,170 +885,170 @@ part #------------------------------------------------------------ part - id = "t13"; - desc = "ATtiny13"; - has_debugwire = yes; - flash_instr = 0xB4, 0x0E, 0x1E; - eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x14; - signature = 0x1e 0x90 0x07; - chip_erase_delay = 4000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "t13"; + desc = "ATtiny13"; + has_debugwire = yes; + flash_instr = 0xB4, 0x0E, 0x1E; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; + signature = 0x1e 0x90 0x07; + chip_erase_delay = 4000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - hvsp_controlstack = + hvsp_controlstack = 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 90; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 90; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 64; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 64; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x x a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 1024; - page_size = 32; - num_pages = 32; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 0 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 1024; + page_size = 32; + num_pages = 32; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 0 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 0 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; ; @@ -1058,132 +1058,132 @@ part #------------------------------------------------------------ part - id = "t15"; - desc = "ATtiny15"; - stk500_devcode = 0x13; - avr910_devcode = 0x56; - signature = 0x1e 0x90 0x06; - chip_erase_delay = 8200; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "t15"; + desc = "ATtiny15"; + stk500_devcode = 0x13; + avr910_devcode = 0x56; + signature = 0x1e 0x90 0x06; + chip_erase_delay = 8200; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 5; - synchcycles = 6; - latchcycles = 16; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 5; + synchcycles = 6; + latchcycles = 16; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 64; - min_write_delay = 8200; - max_write_delay = 8200; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 64; + min_write_delay = 8200; + max_write_delay = 8200; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 10; - blocksize = 64; - readsize = 256; - ; + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; - memory "flash" - size = 1024; - min_write_delay = 4100; - max_write_delay = 4100; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + size = 1024; + min_write_delay = 4100; + max_write_delay = 4100; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 5; - blocksize = 128; - readsize = 256; - ; + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "fuse" - size = 1; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x o o o o x x o o"; + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o x x o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", - "x x x x x x x x i i i i 1 1 i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i 1 1 i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; ; #------------------------------------------------------------ @@ -1191,114 +1191,114 @@ part #------------------------------------------------------------ part - id = "1200"; - desc = "AT90S1200"; - stk500_devcode = 0x33; - avr910_devcode = 0x13; - signature = 0x1e 0x90 0x01; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "1200"; + desc = "AT90S1200"; + stk500_devcode = 0x33; + avr910_devcode = 0x13; + signature = 0x1e 0x90 0x01; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 1; - bytedelay = 0; - pollindex = 0; - pollvalue = 0xFF; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 1; + bytedelay = 0; + pollindex = 0; + pollvalue = 0xFF; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; - memory "eeprom" - size = 64; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 64; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 20; - blocksize = 32; - readsize = 256; - ; - memory "flash" - size = 1024; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 20; + blocksize = 32; + readsize = 256; + ; + memory "flash" + size = 1024; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x02; - delay = 15; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; + mode = 0x02; + delay = 15; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; ; #------------------------------------------------------------ @@ -1306,112 +1306,112 @@ part #------------------------------------------------------------ part - id = "4414"; - desc = "AT90S4414"; - stk500_devcode = 0x50; - avr910_devcode = 0x28; - signature = 0x1e 0x92 0x01; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "4414"; + desc = "AT90S4414"; + stk500_devcode = 0x50; + avr910_devcode = 0x28; + signature = 0x1e 0x92 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; - memory "eeprom" - size = 256; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x80; - readback_p2 = 0x7f; - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "flash" - size = 4096; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x7f; - readback_p2 = 0x7f; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + min_write_delay = 9000; + max_write_delay = 9000; + ; ; #------------------------------------------------------------ @@ -1419,112 +1419,112 @@ part #------------------------------------------------------------ part - id = "2313"; - desc = "AT90S2313"; - stk500_devcode = 0x40; - avr910_devcode = 0x20; - signature = 0x1e 0x91 0x01; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "2313"; + desc = "AT90S2313"; + stk500_devcode = 0x40; + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; - memory "eeprom" - size = 128; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x80; - readback_p2 = 0x7f; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 128; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "flash" - size = 2048; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x7f; - readback_p2 = 0x7f; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; ; #------------------------------------------------------------ @@ -1532,126 +1532,126 @@ part #------------------------------------------------------------ part - id = "2333"; + id = "2333"; ##### WARNING: No XML file for device 'AT90S2333'! ##### - desc = "AT90S2333"; - stk500_devcode = 0x42; - avr910_devcode = 0x34; - signature = 0x1e 0x91 0x05; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + desc = "AT90S2333"; + stk500_devcode = 0x42; + avr910_devcode = 0x34; + signature = 0x1e 0x91 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; - memory "eeprom" - size = 128; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; - memory "flash" - size = 2048; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - pwroff_after_write = yes; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o o o o o o"; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; ; @@ -1660,122 +1660,122 @@ part #------------------------------------------------------------ part - id = "2343"; - desc = "AT90S2343"; - stk500_devcode = 0x43; - avr910_devcode = 0x4c; - signature = 0x1e 0x91 0x03; - chip_erase_delay = 18000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "2343"; + desc = "AT90S2343"; + stk500_devcode = 0x43; + avr910_devcode = 0x4c; + signature = 0x1e 0x91 0x03; + chip_erase_delay = 18000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 0; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 0; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 128; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "flash" - size = 2048; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 128; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x o o o x x x x o"; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 128; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; - write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x o o o x x x x o"; + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; ; @@ -1784,123 +1784,123 @@ part #------------------------------------------------------------ part - id = "4433"; - desc = "AT90S4433"; - stk500_devcode = 0x51; - avr910_devcode = 0x30; - signature = 0x1e 0x92 0x03; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "4433"; + desc = "AT90S4433"; + stk500_devcode = 0x51; + avr910_devcode = 0x30; + signature = 0x1e 0x92 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; - memory "eeprom" - size = 256; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "flash" - size = 4096; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - pwroff_after_write = yes; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o o o o o o"; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; ; #------------------------------------------------------------ @@ -1908,82 +1908,82 @@ part #------------------------------------------------------------ part - id = "4434"; + id = "4434"; ##### WARNING: No XML file for device 'AT90S4434'! ##### - desc = "AT90S4434"; - stk500_devcode = 0x52; - avr910_devcode = 0x6c; - signature = 0x1e 0x92 0x02; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + desc = "AT90S4434"; + stk500_devcode = 0x52; + avr910_devcode = 0x6c; + signature = 0x1e 0x92 0x02; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - memory "eeprom" - size = 256; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - ; - memory "flash" - size = 4096; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o o o o o o"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; ; #------------------------------------------------------------ @@ -1991,113 +1991,113 @@ part #------------------------------------------------------------ part - id = "8515"; - desc = "AT90S8515"; - stk500_devcode = 0x60; - avr910_devcode = 0x38; - signature = 0x1e 0x93 0x01; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "8515"; + desc = "AT90S8515"; + stk500_devcode = 0x60; + avr910_devcode = 0x38; + signature = 0x1e 0x93 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; - memory "eeprom" - size = 512; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x80; - readback_p2 = 0x7f; - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "flash" - size = 8192; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x7f; - readback_p2 = 0x7f; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + min_write_delay = 9000; + max_write_delay = 9000; + ; ; #------------------------------------------------------------ @@ -2105,120 +2105,120 @@ part #------------------------------------------------------------ part - id = "8535"; - desc = "AT90S8535"; - stk500_devcode = 0x61; - avr910_devcode = 0x68; - signature = 0x1e 0x93 0x03; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "8535"; + desc = "AT90S8535"; + stk500_devcode = 0x61; + avr910_devcode = 0x68; + signature = 0x1e 0x93 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; - memory "eeprom" - size = 512; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "flash" - size = 8192; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", "x x x x x x x x x x x x x x x o"; - write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", "x x x x x x x x o o x x x x x x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + min_write_delay = 9000; + max_write_delay = 9000; + ; ; #------------------------------------------------------------ @@ -2226,138 +2226,138 @@ part #------------------------------------------------------------ part - id = "m103"; - desc = "ATMEGA103"; - stk500_devcode = 0xB1; - avr910_devcode = 0x41; - signature = 0x1e 0x97 0x01; - chip_erase_delay = 112000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m103"; + desc = "ATMEGA103"; + stk500_devcode = 0xB1; + avr910_devcode = 0x41; + signature = 0x1e 0x97 0x01; + chip_erase_delay = 112000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE, - 0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE, - 0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A, - 0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 10; + pp_controlstack = + 0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE, + 0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE, + 0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A, + 0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 10; - memory "eeprom" - size = 4096; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x80; - readback_p2 = 0x7f; + memory "eeprom" + size = 4096; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 22000; - max_write_delay = 56000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 22000; + max_write_delay = 56000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x11; - delay = 70; - blocksize = 256; - readsize = 256; - ; + mode = 0x11; + delay = 70; + blocksize = 256; + readsize = 256; + ; - memory "fuse" - size = 1; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o x o 1 o o"; + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o x o 1 o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -2366,177 +2366,177 @@ part #------------------------------------------------------------ part - id = "m64"; - desc = "ATMEGA64"; - has_jtag = yes; - stk500_devcode = 0xA0; - avr910_devcode = 0x45; - signature = 0x1e 0x96 0x02; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m64"; + desc = "ATMEGA64"; + has_jtag = yes; + stk500_devcode = 0xA0; + avr910_devcode = 0x45; + signature = 0x1e 0x96 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x22; - spmcr = 0x68; - allowfullpagebitstream = yes; + idr = 0x22; + spmcr = 0x68; + allowfullpagebitstream = yes; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 20; - blocksize = 64; - readsize = 256; - ; + mode = 0x04; + delay = 20; + blocksize = 64; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -2547,177 +2547,177 @@ part #------------------------------------------------------------ part - id = "m128"; - desc = "ATMEGA128"; - has_jtag = yes; - stk500_devcode = 0xB2; - avr910_devcode = 0x43; - signature = 0x1e 0x97 0x02; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m128"; + desc = "ATMEGA128"; + has_jtag = yes; + stk500_devcode = 0xB2; + avr910_devcode = 0x43; + signature = 0x1e 0x97 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x22; - spmcr = 0x68; - rampz = 0x3b; - allowfullpagebitstream = yes; + idr = 0x22; + spmcr = 0x68; + rampz = 0x3b; + allowfullpagebitstream = yes; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -2725,189 +2725,189 @@ part #------------------------------------------------------------ part - id = "c128"; - desc = "AT90CAN128"; - has_jtag = yes; - stk500_devcode = 0xB3; + id = "c128"; + desc = "AT90CAN128"; + has_jtag = yes; + stk500_devcode = 0xB3; # avr910_devcode = 0x43; - signature = 0x1e 0x97 0x81; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + signature = 0x1e 0x97 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - eecr = 0x3f; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -2915,189 +2915,189 @@ part #------------------------------------------------------------ part - id = "c64"; - desc = "AT90CAN64"; - has_jtag = yes; - stk500_devcode = 0xB3; + id = "c64"; + desc = "AT90CAN64"; + has_jtag = yes; + stk500_devcode = 0xB3; # avr910_devcode = 0x43; - signature = 0x1e 0x96 0x81; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + signature = 0x1e 0x96 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - eecr = 0x3f; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 0 x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -3105,189 +3105,189 @@ part #------------------------------------------------------------ part - id = "c32"; - desc = "AT90CAN32"; - has_jtag = yes; - stk500_devcode = 0xB3; + id = "c32"; + desc = "AT90CAN32"; + has_jtag = yes; + stk500_devcode = 0xB3; # avr910_devcode = 0x43; - signature = 0x1e 0x95 0x81; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + signature = 0x1e 0x95 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - eecr = 0x3f; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 256; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 256; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -3296,174 +3296,174 @@ part #------------------------------------------------------------ part - id = "m16"; - desc = "ATMEGA16"; - has_jtag = yes; - stk500_devcode = 0x82; - avr910_devcode = 0x74; - signature = 0x1e 0x94 0x03; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m16"; + desc = "ATMEGA16"; + has_jtag = yes; + stk500_devcode = 0x82; + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x03; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 100; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + hventerstabdelay = 100; + progmodedelay = 100; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = yes; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x04; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "calibration" - size = 4; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "calibration" + size = 4; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; ; @@ -3474,187 +3474,187 @@ part # close to ATmega16 part - id = "m164p"; - desc = "ATMEGA164P"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x94 0x0a; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m164p"; + desc = "ATMEGA164P"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x0a; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -3665,187 +3665,187 @@ part # similar to ATmega164P part - id = "m324p"; - desc = "ATMEGA324P"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x95 0x08; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m324p"; + desc = "ATMEGA324P"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x95 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -3856,187 +3856,187 @@ part # similar to ATmega164 part - id = "m644"; - desc = "ATMEGA644"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x96 0x09; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m644"; + desc = "ATMEGA644"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x09; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -4046,187 +4046,187 @@ part # similar to ATmega164p part - id = "m644p"; - desc = "ATMEGA644P"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x96 0x0a; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m644p"; + desc = "ATMEGA644P"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x0a; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -4238,187 +4238,187 @@ part # similar to ATmega164p part - id = "m1284p"; - desc = "ATMEGA1284P"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x97 0x05; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m1284p"; + desc = "ATMEGA1284P"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x97 0x05; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -4428,193 +4428,193 @@ part #------------------------------------------------------------ part - id = "m162"; - desc = "ATMEGA162"; - has_jtag = yes; - stk500_devcode = 0x83; - avr910_devcode = 0x63; - signature = 0x1e 0x94 0x04; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; + id = "m162"; + desc = "ATMEGA162"; + has_jtag = yes; + stk500_devcode = 0x83; + avr910_devcode = 0x63; + signature = 0x1e 0x94 0x04; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; - idr = 0x04; - spmcr = 0x57; - allowfullpagebitstream = yes; + idr = 0x04; + spmcr = 0x57; + allowfullpagebitstream = yes; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; - ; + ; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; + memory "hfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; + memory "efuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; + memory "lock" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; + memory "signature" + size = 3; - read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -4624,157 +4624,157 @@ part #------------------------------------------------------------ part - id = "m163"; - desc = "ATMEGA163"; - stk500_devcode = 0x81; - avr910_devcode = 0x64; - signature = 0x1e 0x94 0x02; - chip_erase_delay = 32000; - pagel = 0xd7; - bs2 = 0xa0; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m163"; + desc = "ATMEGA163"; + stk500_devcode = 0x81; + avr910_devcode = 0x64; + signature = 0x1e 0x94 0x02; + chip_erase_delay = 32000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 30; - programfusepulsewidth = 0; - programfusepolltimeout = 2; - programlockpulsewidth = 0; - programlockpolltimeout = 2; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; memory "eeprom" - size = 512; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; + size = 512; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 16000; - max_write_delay = 16000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 16000; + max_write_delay = 16000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x11; - delay = 20; - blocksize = 128; - readsize = 256; - ; + mode = 0x11; + delay = 20; + blocksize = 128; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o x x o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o x x o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i 1 1 i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i 1 1 i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x 1 o o o"; + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x 1 o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x 0 x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x 0 x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -4782,179 +4782,179 @@ part #------------------------------------------------------------ part - id = "m169"; - desc = "ATMEGA169"; - has_jtag = yes; - stk500_devcode = 0x85; - avr910_devcode = 0x78; - signature = 0x1e 0x94 0x05; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m169"; + desc = "ATMEGA169"; + has_jtag = yes; + stk500_devcode = 0x85; + avr910_devcode = 0x78; + signature = 0x1e 0x94 0x05; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; + idr = 0x31; + spmcr = 0x57; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -4962,182 +4962,182 @@ part #------------------------------------------------------------ part - id = "m329"; - desc = "ATMEGA329"; - has_jtag = yes; + id = "m329"; + desc = "ATMEGA329"; + has_jtag = yes; # stk500_devcode = 0x85; # no STK500 support, only STK500v2 # avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x95 0x03; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; + idr = 0x31; + spmcr = 0x57; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -5146,182 +5146,182 @@ part # Identical to ATmega329 except of the signature part - id = "m329p"; - desc = "ATMEGA329P"; - has_jtag = yes; + id = "m329p"; + desc = "ATMEGA329P"; + has_jtag = yes; # stk500_devcode = 0x85; # no STK500 support, only STK500v2 # avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x95 0x0b; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x0b; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; + idr = 0x31; + spmcr = 0x57; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -5331,182 +5331,182 @@ part # identical to ATmega329 part - id = "m3290"; - desc = "ATMEGA3290"; - has_jtag = yes; + id = "m3290"; + desc = "ATMEGA3290"; + has_jtag = yes; # stk500_devcode = 0x85; # no STK500 support, only STK500v2 # avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x95 0x04; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x04; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; + idr = 0x31; + spmcr = 0x57; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a3 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -5516,182 +5516,182 @@ part # identical to ATmega3290 except of the signature part - id = "m3290p"; - desc = "ATMEGA3290P"; - has_jtag = yes; + id = "m3290p"; + desc = "ATMEGA3290P"; + has_jtag = yes; # stk500_devcode = 0x85; # no STK500 support, only STK500v2 # avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x95 0x0c; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x0c; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; + idr = 0x31; + spmcr = 0x57; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a3 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -5699,182 +5699,182 @@ part #------------------------------------------------------------ part - id = "m649"; - desc = "ATMEGA649"; - has_jtag = yes; + id = "m649"; + desc = "ATMEGA649"; + has_jtag = yes; # stk500_devcode = 0x85; # no STK500 support, only STK500v2 # avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x96 0x03; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; + idr = 0x31; + spmcr = 0x57; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -5884,192 +5884,192 @@ part # identical to ATmega649 part - id = "m6490"; - desc = "ATMEGA6490"; - has_jtag = yes; + id = "m6490"; + desc = "ATMEGA6490"; + has_jtag = yes; # stk500_devcode = 0x85; # no STK500 support, only STK500v2 # avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x96 0x04; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x04; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; + idr = 0x31; + spmcr = 0x57; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -6077,174 +6077,174 @@ part #------------------------------------------------------------ part - id = "m32"; - desc = "ATMEGA32"; - has_jtag = yes; - stk500_devcode = 0x91; - avr910_devcode = 0x72; - signature = 0x1e 0x95 0x02; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m32"; + desc = "ATMEGA32"; + has_jtag = yes; + stk500_devcode = 0x91; + avr910_devcode = 0x72; + signature = 0x1e 0x95 0x02; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = yes; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x04; - delay = 10; - blocksize = 64; - readsize = 256; - ; + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -6252,138 +6252,138 @@ part #------------------------------------------------------------ part - id = "m161"; - desc = "ATMEGA161"; - stk500_devcode = 0x80; - avr910_devcode = 0x60; - signature = 0x1e 0x94 0x01; - chip_erase_delay = 28000; - pagel = 0xd7; - bs2 = 0xa0; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m161"; + desc = "ATMEGA161"; + stk500_devcode = 0x80; + avr910_devcode = 0x60; + signature = 0x1e 0x94 0x01; + chip_erase_delay = 28000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 30; - programfusepulsewidth = 0; - programfusepolltimeout = 2; - programlockpulsewidth = 0; - programlockpolltimeout = 2; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; memory "eeprom" - size = 512; - min_write_delay = 3400; - max_write_delay = 3400; - readback_p1 = 0xff; - readback_p2 = 0xff; + size = 512; + min_write_delay = 3400; + max_write_delay = 3400; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 5; - blocksize = 128; - readsize = 256; - ; + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 14000; - max_write_delay = 14000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 14000; + max_write_delay = 14000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 16; - blocksize = 128; - readsize = 256; - ; + mode = 0x21; + delay = 16; + blocksize = 128; + readsize = 256; + ; - memory "fuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x o x o o o o o"; + memory "fuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x o x o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", - "x x x x x x x x 1 i 1 i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x 1 i 1 i i i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -6392,158 +6392,158 @@ part #------------------------------------------------------------ part - id = "m8"; - desc = "ATMEGA8"; - stk500_devcode = 0x70; - avr910_devcode = 0x76; - signature = 0x1e 0x93 0x07; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 10000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m8"; + desc = "ATMEGA8"; + stk500_devcode = 0x70; + avr910_devcode = 0x76; + signature = 0x1e 0x93 0x07; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 10000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 512; - page_size = 4; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + size = 512; + page_size = 4; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 20; - blocksize = 128; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 10; - blocksize = 64; - readsize = 256; - ; + mode = 0x21; + delay = 10; + blocksize = 64; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -6553,154 +6553,154 @@ part #------------------------------------------------------------ part - id = "m8515"; - desc = "ATMEGA8515"; - stk500_devcode = 0x63; - avr910_devcode = 0x3A; - signature = 0x1e 0x93 0x06; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m8515"; + desc = "ATMEGA8515"; + stk500_devcode = 0x63; + avr910_devcode = 0x3A; + signature = 0x1e 0x93 0x06; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 10; - blocksize = 128; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -6711,156 +6711,156 @@ part #------------------------------------------------------------ part - id = "m8535"; - desc = "ATMEGA8535"; - stk500_devcode = 0x64; - avr910_devcode = 0x69; - signature = 0x1e 0x93 0x08; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m8535"; + desc = "ATMEGA8535"; + stk500_devcode = 0x64; + avr910_devcode = 0x69; + signature = 0x1e 0x93 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - mode = 0x04; - delay = 10; - blocksize = 128; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -6869,153 +6869,153 @@ part #------------------------------------------------------------ part - id = "t26"; - desc = "ATTINY26"; - stk500_devcode = 0x21; - avr910_devcode = 0x5e; - signature = 0x1e 0x91 0x09; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "t26"; + desc = "ATTINY26"; + stk500_devcode = 0x21; + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x09; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - mode = 0x04; - delay = 10; - blocksize = 64; - readsize = 256; - ; + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; - mode = 0x21; - delay = 6; - blocksize = 16; - readsize = 256; - ; + mode = 0x21; + delay = 6; + blocksize = 16; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x x x x i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x x x x i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; ; @@ -7026,185 +7026,185 @@ part # Close to ATtiny26 part - id = "t261"; - desc = "ATTINY261"; - has_debugwire = yes; - flash_instr = 0xB4, 0x00, 0x10; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t261"; + desc = "ATTINY261"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; # stk500_devcode = 0x21; # avr910_devcode = 0x5e; - signature = 0x1e 0x91 0x0c; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 4000; + signature = 0x1e 0x91 0x0c; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - size = 128; - page_size = 4; - num_pages = 32; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; + size = 128; + page_size = 4; + num_pages = 32; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x x x o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -7215,185 +7215,185 @@ part # Close to ATtiny261 part - id = "t461"; - desc = "ATTINY461"; - has_debugwire = yes; - flash_instr = 0xB4, 0x00, 0x10; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t461"; + desc = "ATTINY461"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; # stk500_devcode = 0x21; # avr910_devcode = 0x5e; - signature = 0x1e 0x92 0x08; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 4000; + signature = 0x1e 0x92 0x08; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - size = 256; - page_size = 4; - num_pages = 64; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; + size = 256; + page_size = 4; + num_pages = 64; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x x x o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -7404,185 +7404,185 @@ part # Close to ATtiny461 part - id = "t861"; - desc = "ATTINY861"; - has_debugwire = yes; - flash_instr = 0xB4, 0x00, 0x10; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t861"; + desc = "ATTINY861"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; # stk500_devcode = 0x21; # avr910_devcode = 0x5e; - signature = 0x1e 0x93 0x0d; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 4000; + signature = 0x1e 0x93 0x0d; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - size = 512; - num_pages = 128; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; + size = 512; + num_pages = 128; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x x x o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; @@ -7592,185 +7592,185 @@ part #------------------------------------------------------------ part - id = "m48"; - desc = "ATMEGA48"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x59; + id = "m48"; + desc = "ATMEGA48"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x59; # avr910_devcode = 0x; - signature = 0x1e 0x92 0x05; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 45000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + signature = 0x1e 0x92 0x05; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 45000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - page_size = 4; - size = 256; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; + page_size = 4; + size = 256; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x x", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x x x o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -7779,185 +7779,185 @@ part #------------------------------------------------------------ part - id = "m88"; - desc = "ATMEGA88"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x73; + id = "m88"; + desc = "ATMEGA88"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x73; # avr910_devcode = 0x; - signature = 0x1e 0x93 0x0a; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + signature = 0x1e 0x93 0x0a; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - page_size = 4; - size = 512; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -7965,187 +7965,187 @@ part #------------------------------------------------------------ part - id = "m168"; - desc = "ATMEGA168"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x86; - # avr910_devcode = 0x; - signature = 0x1e 0x94 0x06; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + id = "m168"; + desc = "ATMEGA168"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x94 0x06; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - page_size = 4; - size = 512; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; - ; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -8153,185 +8153,185 @@ part #------------------------------------------------------------ part - id = "t88"; - desc = "attiny88"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x73; + id = "t88"; + desc = "attiny88"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x73; # avr910_devcode = 0x; - signature = 0x1e 0x93 0x11; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + signature = 0x1e 0x93 0x11; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - page_size = 4; - size = 64; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; + memory "eeprom" + paged = no; + page_size = 4; + size = 64; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 64; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 64; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x o o o"; + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + ; - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -8339,100 +8339,100 @@ part #------------------------------------------------------------ part - id = "m328p"; - desc = "ATMEGA328P"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + id = "m328p"; + desc = "ATMEGA328P"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x86; - # avr910_devcode = 0x; - signature = 0x1e 0x95 0x0F; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x95 0x0F; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = + pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; - page_size = 4; - size = 1024; + memory "eeprom" + paged = no; + page_size = 4; + size = 1024; min_write_delay = 3600; max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; + readback_p1 = 0xff; + readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x a9 a8", + " 0 0 0 x x x a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; min_write_delay = 4500; max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; + readback_p1 = 0xff; + readback_p2 = 0xff; read_lo = " 0 0 1 0 0 0 0 0", " 0 0 a13 a12 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", @@ -8444,82 +8444,82 @@ part " o o o o o o o o"; loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; - ; + ; - memory "lfuse" + memory "lfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; + "x x x x x x x x o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + "x x x x x x x x i i i i i i i i"; + ; - memory "hfuse" + memory "hfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; + "x x x x x x x x o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; + "x x x x x x x x i i i i i i i i"; + ; - memory "efuse" + memory "efuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x o o o"; + "x x x x x x x x x x x x x o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; + "x x x x x x x x x x x x x i i i"; + ; - memory "lock" + memory "lock" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + "x x x x x x x x x x o o o o o o"; write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; + "x x x x x x x x 1 1 i i i i i i"; + ; - memory "calibration" + memory "calibration" size = 1; read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" + memory "signature" size = 3; read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -8527,186 +8527,186 @@ part #------------------------------------------------------------ part - id = "t2313"; - desc = "ATtiny2313"; - has_debugwire = yes; - flash_instr = 0xB2, 0x0F, 0x1F; - eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x23; + id = "t2313"; + desc = "ATtiny2313"; + has_debugwire = yes; + flash_instr = 0xB2, 0x0F, 0x1F; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x23; ## Use the ATtiny26 devcode: - avr910_devcode = 0x5e; - signature = 0x1e 0x91 0x0a; - pagel = 0xD4; - bs2 = 0xD6; - reset = io; - chip_erase_delay = 9000; + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0a; + pagel = 0xD4; + bs2 = 0xD6; + reset = io; + chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, - 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, - 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, - 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, + 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, + 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, + 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 128; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; # The information in the data sheet of April/2004 is wrong, this works: - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; # The information in the data sheet of April/2004 is wrong, this works: - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; # The information in the data sheet of April/2004 is wrong, this works: - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; # ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; # The Tiny2313 has calibration data for both 4 MHz and 8 MHz. # The information in the data sheet of April/2004 is wrong, this works: - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -8714,181 +8714,181 @@ part #------------------------------------------------------------ part - id = "pwm2"; - desc = "AT90PWM2"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x65; + id = "pwm2"; + desc = "AT90PWM2"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; ## avr910_devcode = ?; - signature = 0x1e 0x93 0x81; - pagel = 0xD8; - bs2 = 0xE2; - reset = io; - chip_erase_delay = 9000; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; # AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -8898,181 +8898,181 @@ part # Completely identical to AT90PWM2 (including the signature!) part - id = "pwm3"; - desc = "AT90PWM3"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x65; + id = "pwm3"; + desc = "AT90PWM3"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; ## avr910_devcode = ?; - signature = 0x1e 0x93 0x81; - pagel = 0xD8; - bs2 = 0xE2; - reset = io; - chip_erase_delay = 9000; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; # AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -9081,180 +9081,180 @@ part # Same as AT90PWM2 but different signature. part - id = "pwm2b"; - desc = "AT90PWM2B"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x65; + id = "pwm2b"; + desc = "AT90PWM2B"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; ## avr910_devcode = ?; - signature = 0x1e 0x93 0x83; - pagel = 0xD8; - bs2 = 0xE2; - reset = io; - chip_erase_delay = 9000; + signature = 0x1e 0x93 0x83; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -9264,180 +9264,180 @@ part # Completely identical to AT90PWM2B (including the signature!) part - id = "pwm3b"; - desc = "AT90PWM3B"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x65; + id = "pwm3b"; + desc = "AT90PWM3B"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; ## avr910_devcode = ?; - signature = 0x1e 0x93 0x83; - pagel = 0xD8; - bs2 = 0xE2; - reset = io; - chip_erase_delay = 9000; + signature = 0x1e 0x93 0x83; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -9445,179 +9445,179 @@ part #------------------------------------------------------------ part - id = "t25"; - desc = "ATtiny25"; - has_debugwire = yes; - flash_instr = 0xB4, 0x02, 0x12; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t25"; + desc = "ATtiny25"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; ## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; + stk500_devcode = 0x14; ## avr910_devcode = ?; ## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x91 0x08; - reset = io; - chip_erase_delay = 4500; + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x08; + reset = io; + chip_erase_delay = 4500; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 128; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; # ATtiny25 has Signature Bytes: 0x1E 0x91 0x08. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -9625,178 +9625,178 @@ part #------------------------------------------------------------ part - id = "t45"; - desc = "ATtiny45"; - has_debugwire = yes; - flash_instr = 0xB4, 0x02, 0x12; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x14; + id = "t45"; + desc = "ATtiny45"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; ## avr910_devcode = ?; ## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x92 0x06; - reset = io; - chip_erase_delay = 4500; + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x06; + reset = io; + chip_erase_delay = 4500; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - hvsp_controlstack = + hvsp_controlstack = 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 256; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 256; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; # ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!) - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -9804,179 +9804,179 @@ part #------------------------------------------------------------ part - id = "t85"; - desc = "ATtiny85"; - has_debugwire = yes; - flash_instr = 0xB4, 0x02, 0x12; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t85"; + desc = "ATtiny85"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; ## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; + stk500_devcode = 0x14; ## avr910_devcode = ?; ## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x93 0x0b; - reset = io; - chip_erase_delay = 4500; + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0b; + reset = io; + chip_erase_delay = 4500; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; # ATtiny85 has Signature Bytes: 0x1E 0x93 0x08. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -9985,187 +9985,187 @@ part # Almost same as ATmega1280, except for different memory sizes part - id = "m640"; - desc = "ATMEGA640"; - signature = 0x1e 0x96 0x08; - has_jtag = yes; + id = "m640"; + desc = "ATMEGA640"; + signature = 0x1e 0x96 0x08; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -10173,187 +10173,187 @@ part #------------------------------------------------------------ part - id = "m1280"; - desc = "ATMEGA1280"; - signature = 0x1e 0x97 0x03; - has_jtag = yes; + id = "m1280"; + desc = "ATMEGA1280"; + signature = 0x1e 0x97 0x03; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -10362,187 +10362,187 @@ part # Identical to ATmega1280 part - id = "m1281"; - desc = "ATMEGA1281"; - signature = 0x1e 0x97 0x04; - has_jtag = yes; + id = "m1281"; + desc = "ATMEGA1281"; + signature = 0x1e 0x97 0x04; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -10550,192 +10550,192 @@ part #------------------------------------------------------------ part - id = "m2560"; - desc = "ATMEGA2560"; - signature = 0x1e 0x98 0x01; - has_jtag = yes; + id = "m2560"; + desc = "ATMEGA2560"; + signature = 0x1e 0x98 0x01; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 262144; - page_size = 256; - num_pages = 1024; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - load_ext_addr = " 0 1 0 0 1 1 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 a16", - " 0 0 0 0 0 0 0 0"; + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -10743,192 +10743,192 @@ part #------------------------------------------------------------ part - id = "m2561"; - desc = "ATMEGA2561"; - signature = 0x1e 0x98 0x02; - has_jtag = yes; + id = "m2561"; + desc = "ATMEGA2561"; + signature = 0x1e 0x98 0x02; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 262144; - page_size = 256; - num_pages = 1024; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - load_ext_addr = " 0 1 0 0 1 1 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 a16", - " 0 0 0 0 0 0 0 0"; + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -10937,187 +10937,187 @@ part # Identical to ATmega2561 but half the ROM part - id = "m128rfa1"; - desc = "ATMEGA128RFA1"; - signature = 0x1e 0xa7 0x01; - has_jtag = yes; + id = "m128rfa1"; + desc = "ATMEGA128RFA1"; + signature = 0x1e 0xa7 0x01; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xE2; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xE2; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x a11 a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -11125,181 +11125,181 @@ part #------------------------------------------------------------ part - id = "t24"; - desc = "ATtiny24"; - has_debugwire = yes; - flash_instr = 0xB4, 0x07, 0x17; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t24"; + desc = "ATtiny24"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; ## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; + stk500_devcode = 0x14; ## avr910_devcode = ?; ## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x91 0x0b; - reset = io; - chip_erase_delay = 4500; + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x0b; + reset = io; + chip_erase_delay = 4500; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 70; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 128; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; # ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -11307,181 +11307,181 @@ part #------------------------------------------------------------ part - id = "t44"; - desc = "ATtiny44"; - has_debugwire = yes; - flash_instr = 0xB4, 0x07, 0x17; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t44"; + desc = "ATtiny44"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; ## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; + stk500_devcode = 0x14; ## avr910_devcode = ?; ## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x92 0x07; - reset = io; - chip_erase_delay = 4500; + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x07; + reset = io; + chip_erase_delay = 4500; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 70; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 256; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 256; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; # ATtiny44 has Signature Bytes: 0x1E 0x92 0x07. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -11489,182 +11489,182 @@ part #------------------------------------------------------------ part - id = "t84"; - desc = "ATtiny84"; - has_debugwire = yes; - flash_instr = 0xB4, 0x07, 0x17; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; + id = "t84"; + desc = "ATtiny84"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; ## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; + stk500_devcode = 0x14; ## avr910_devcode = ?; ## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x93 0x0c; - reset = io; - chip_erase_delay = 4500; + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0c; + reset = io; + chip_erase_delay = 4500; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 70; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x x", " x a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; # ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -11672,187 +11672,187 @@ part #------------------------------------------------------------ part - id = "m32u4"; - desc = "ATmega32U4"; - signature = 0x1e 0x95 0x87; - has_jtag = yes; + id = "m32u4"; + desc = "ATmega32U4"; + signature = 0x1e 0x95 0x87; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -11860,187 +11860,187 @@ part #------------------------------------------------------------ part - id = "usb646"; - desc = "AT90USB646"; - signature = 0x1e 0x96 0x82; - has_jtag = yes; + id = "usb646"; + desc = "AT90USB646"; + signature = 0x1e 0x96 0x82; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -12049,187 +12049,187 @@ part # identical to AT90USB646 part - id = "usb647"; - desc = "AT90USB647"; - signature = 0x1e 0x96 0x82; - has_jtag = yes; + id = "usb647"; + desc = "AT90USB647"; + signature = 0x1e 0x96 0x82; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -12237,187 +12237,187 @@ part #------------------------------------------------------------ part - id = "usb1286"; - desc = "AT90USB1286"; - signature = 0x1e 0x97 0x82; - has_jtag = yes; + id = "usb1286"; + desc = "AT90USB1286"; + signature = 0x1e 0x97 0x82; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -12426,187 +12426,187 @@ part # identical to AT90USB1286 part - id = "usb1287"; - desc = "AT90USB1287"; - signature = 0x1e 0x97 0x82; - has_jtag = yes; + id = "usb1287"; + desc = "AT90USB1287"; + signature = 0x1e 0x97 0x82; + has_jtag = yes; # stk500_devcode = 0xB2; # avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 a2 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", + writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x a10 a9 a8", " a7 a6 a5 a4 a3 0 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; @@ -12615,179 +12615,179 @@ part #------------------------------------------------------------ part - id = "usb162"; - desc = "AT90USB162"; - has_jtag = no; - has_debugwire = yes; - signature = 0x1e 0x94 0x82; - chip_erase_delay = 9000; - reset = io; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - pagel = 0xD7; - bs2 = 0xC6; + id = "usb162"; + desc = "AT90USB162"; + has_jtag = no; + has_debugwire = yes; + signature = 0x1e 0x94 0x82; + chip_erase_delay = 9000; + reset = io; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + pagel = 0xD7; + bs2 = 0xC6; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + num_pages = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -12799,179 +12799,179 @@ part # num_pages = 64; part - id = "usb82"; - desc = "AT90USB82"; - has_jtag = no; - has_debugwire = yes; - signature = 0x1e 0x93 0x82; - chip_erase_delay = 9000; - reset = io; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - pagel = 0xD7; - bs2 = 0xC6; + id = "usb82"; + desc = "AT90USB82"; + has_jtag = no; + has_debugwire = yes; + signature = 0x1e 0x93 0x82; + chip_erase_delay = 9000; + reset = io; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + pagel = 0xD7; + bs2 = 0xC6; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + num_pages = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", + loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 8192; - page_size = 128; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 8192; + page_size = 128; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -12979,188 +12979,188 @@ part #------------------------------------------------------------ part - id = "m325"; - desc = "ATMEGA325"; - signature = 0x1e 0x95 0x05; - has_jtag = yes; + id = "m325"; + desc = "ATMEGA325"; + signature = 0x1e 0x95 0x05; + has_jtag = yes; # stk500_devcode = 0x??; # No STK500v1 support? # avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -13168,188 +13168,188 @@ part #------------------------------------------------------------ part - id = "m645"; - desc = "ATMEGA645"; - signature = 0x1E 0x96 0x05; - has_jtag = yes; + id = "m645"; + desc = "ATMEGA645"; + signature = 0x1E 0x96 0x05; + has_jtag = yes; # stk500_devcode = 0x??; # No STK500v1 support? # avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " 0 0 0 0 0 0 0 0"; + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -13357,188 +13357,188 @@ part #------------------------------------------------------------ part - id = "m3250"; - desc = "ATMEGA3250"; - signature = 0x1E 0x95 0x06; - has_jtag = yes; + id = "m3250"; + desc = "ATMEGA3250"; + signature = 0x1E 0x95 0x06; + has_jtag = yes; # stk500_devcode = 0x??; # No STK500v1 support? # avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " x x x x x x x x"; + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -13546,188 +13546,188 @@ part #------------------------------------------------------------ part - id = "m6450"; - desc = "ATMEGA6450"; - signature = 0x1E 0x96 0x06; - has_jtag = yes; + id = "m6450"; + desc = "ATMEGA6450"; + signature = 0x1E 0x96 0x06; + has_jtag = yes; # stk500_devcode = 0x??; # No STK500v1 support? # avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - read_hi = " 0 0 1 0 1 0 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; - writepage = " 0 1 0 0 1 1 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " 0 0 0 0 0 0 0 0"; + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "efuse" - size = 1; + memory "efuse" + size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; - memory "calibration" - size = 1; + memory "calibration" + size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -13735,96 +13735,96 @@ part #------------------------------------------------------------ part - id = "x64a1"; - desc = "ATXMEGA64A1"; - signature = 0x1e 0x96 0x4e; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x64a1"; + desc = "ATXMEGA64A1"; + signature = 0x1e 0x96 0x4e; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00010000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00010000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00001000; - offset = 0x0080f000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00001000; + offset = 0x0080f000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00001000; - offset = 0x00810000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00001000; + offset = 0x00810000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00011000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00011000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -13832,96 +13832,96 @@ part #------------------------------------------------------------ part - id = "x128a1"; - desc = "ATXMEGA128A1"; - signature = 0x1e 0x97 0x4c; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x128a1"; + desc = "ATXMEGA128A1"; + signature = 0x1e 0x97 0x4c; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00020000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00020000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0081e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0081e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00820000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00820000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00022000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00022000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -13929,96 +13929,96 @@ part #------------------------------------------------------------ part - id = "x128a1d"; - desc = "ATXMEGA128A1REVD"; - signature = 0x1e 0x97 0x41; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x128a1d"; + desc = "ATXMEGA128A1REVD"; + signature = 0x1e 0x97 0x41; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00020000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00020000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0081e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0081e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00820000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00820000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00022000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00022000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14026,96 +14026,96 @@ part #------------------------------------------------------------ part - id = "x192a1"; - desc = "ATXMEGA192A1"; - signature = 0x1e 0x97 0x4e; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x192a1"; + desc = "ATXMEGA192A1"; + signature = 0x1e 0x97 0x4e; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00030000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00030000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0082e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0082e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00830000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00830000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00032000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00032000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14123,96 +14123,96 @@ part #------------------------------------------------------------ part - id = "x256a1"; - desc = "ATXMEGA256A1"; - signature = 0x1e 0x98 0x46; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x256a1"; + desc = "ATXMEGA256A1"; + signature = 0x1e 0x98 0x46; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x1000; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x1000; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00040000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00040000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0083e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0083e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00840000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00840000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00042000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00042000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14220,96 +14220,96 @@ part #------------------------------------------------------------ part - id = "x64a3"; - desc = "ATXMEGA64A3"; - signature = 0x1e 0x96 0x42; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x64a3"; + desc = "ATXMEGA64A3"; + signature = 0x1e 0x96 0x42; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00010000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00010000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00001000; - offset = 0x0080f000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00001000; + offset = 0x0080f000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00001000; - offset = 0x00810000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00001000; + offset = 0x00810000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00011000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00011000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14317,96 +14317,96 @@ part #------------------------------------------------------------ part - id = "x128a3"; - desc = "ATXMEGA128A3"; - signature = 0x1e 0x97 0x42; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x128a3"; + desc = "ATXMEGA128A3"; + signature = 0x1e 0x97 0x42; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00020000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00020000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0081e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0081e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00820000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00820000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00022000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00022000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14414,96 +14414,96 @@ part #------------------------------------------------------------ part - id = "x192a3"; - desc = "ATXMEGA192A3"; - signature = 0x1e 0x97 0x44; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x192a3"; + desc = "ATXMEGA192A3"; + signature = 0x1e 0x97 0x44; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00030000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00030000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0082e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0082e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00830000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00830000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00032000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00032000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14511,96 +14511,96 @@ part #------------------------------------------------------------ part - id = "x256a3"; - desc = "ATXMEGA256A3"; - signature = 0x1e 0x98 0x42; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x256a3"; + desc = "ATXMEGA256A3"; + signature = 0x1e 0x98 0x42; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x1000; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x1000; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00040000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00040000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0083e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0083e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00840000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00840000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00042000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00042000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14608,96 +14608,96 @@ part #------------------------------------------------------------ part - id = "x256a3b"; - desc = "ATXMEGA256A3B"; - signature = 0x1e 0x98 0x43; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x256a3b"; + desc = "ATXMEGA256A3B"; + signature = 0x1e 0x98 0x43; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x1000; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x1000; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00040000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00040000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0083e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0083e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00840000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00840000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00042000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00042000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14705,96 +14705,96 @@ part #------------------------------------------------------------ part - id = "x16a4"; - desc = "ATXMEGA16A4"; - signature = 0x1e 0x94 0x41; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x16a4"; + desc = "ATXMEGA16A4"; + signature = 0x1e 0x94 0x41; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0400; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0400; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00004000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00004000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00001000; - offset = 0x00803000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00001000; + offset = 0x00803000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00001000; - offset = 0x00804000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00001000; + offset = 0x00804000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00005000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00005000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14802,96 +14802,96 @@ part #------------------------------------------------------------ part - id = "x32a4"; - desc = "ATXMEGA32A4"; - signature = 0x1e 0x95 0x41; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x32a4"; + desc = "ATXMEGA32A4"; + signature = 0x1e 0x95 0x41; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0400; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0400; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00008000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00008000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00001000; - offset = 0x00807000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00001000; + offset = 0x00807000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00001000; - offset = 0x00808000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00001000; + offset = 0x00808000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00009000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00009000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14899,96 +14899,96 @@ part #------------------------------------------------------------ part - id = "x64a4"; - desc = "ATXMEGA64A4"; - signature = 0x1e 0x96 0x46; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x64a4"; + desc = "ATXMEGA64A4"; + signature = 0x1e 0x96 0x46; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00010000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00010000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00001000; - offset = 0x0080f000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00001000; + offset = 0x0080f000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00001000; - offset = 0x00810000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00001000; + offset = 0x00810000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00011000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00011000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; #------------------------------------------------------------ @@ -14996,96 +14996,96 @@ part #------------------------------------------------------------ part - id = "x128a4"; - desc = "ATXMEGA128A4"; - signature = 0x1e 0x97 0x46; - has_jtag = yes; - has_pdi = yes; - nvm_base = 0x01c0; + id = "x128a4"; + desc = "ATXMEGA128A4"; + signature = 0x1e 0x97 0x46; + has_jtag = yes; + has_pdi = yes; + nvm_base = 0x01c0; - memory "eeprom" - size = 0x0800; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; + memory "eeprom" + size = 0x0800; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; - memory "application" - size = 0x00020000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "application" + size = 0x00020000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "apptable" - size = 0x00002000; - offset = 0x0081e000; - page_size = 0x100; - readsize = 0x100; - ; + memory "apptable" + size = 0x00002000; + offset = 0x0081e000; + page_size = 0x100; + readsize = 0x100; + ; - memory "boot" - size = 0x00002000; - offset = 0x00820000; - page_size = 0x100; - readsize = 0x100; - ; + memory "boot" + size = 0x00002000; + offset = 0x00820000; + page_size = 0x100; + readsize = 0x100; + ; - memory "flash" - size = 0x00022000; - offset = 0x0800000; - page_size = 0x100; - readsize = 0x100; - ; + memory "flash" + size = 0x00022000; + offset = 0x0800000; + page_size = 0x100; + readsize = 0x100; + ; - memory "prodsig" - size = 0x200; - offset = 0x8e0200; - page_size = 0x100; - readsize = 0x100; - ; + memory "prodsig" + size = 0x200; + offset = 0x8e0200; + page_size = 0x100; + readsize = 0x100; + ; - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; - memory "signature" - size = 3; - offset = 0x1000090; - ; + memory "signature" + size = 3; + offset = 0x1000090; + ; - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; - memory "lock" - size = 1; - offset = 0x8f0027; - ; + memory "lock" + size = 1; + offset = 0x8f0027; + ; ; @@ -15094,20 +15094,20 @@ part #------------------------------------------------------------ part - id = "ucr2"; - desc = "32UC3A0512"; - signature = 0xED 0xC0 0x3F; - has_jtag = yes; - is_avr32 = yes; + id = "ucr2"; + desc = "32UC3A0512"; + signature = 0xED 0xC0 0x3F; + has_jtag = yes; + is_avr32 = yes; - memory "flash" - paged = yes; - page_size = 512; # bytes - readsize = 512; # bytes - num_pages = 1024; # could be set dynamicly - size = 0x00080000; # could be set dynamicly - offset = 0x80000000; - ; + memory "flash" + paged = yes; + page_size = 512; # bytes + readsize = 512; # bytes + num_pages = 1024; # could be set dynamicly + size = 0x00080000; # could be set dynamicly + offset = 0x80000000; + ; ; #------------------------------------------------------------ @@ -15115,38 +15115,38 @@ part #------------------------------------------------------------ part - id = "t4"; - desc = "ATtiny4"; - signature = 0x1e 0x8f 0x0a; - has_tpi = yes; + id = "t4"; + desc = "ATtiny4"; + signature = 0x1e 0x8f 0x0a; + has_tpi = yes; - memory "flash" - size = 512; - offset = 0x4000; - page_size = 16; - blocksize = 128; - ; + memory "flash" + size = 512; + offset = 0x4000; + page_size = 16; + blocksize = 128; + ; - memory "signature" - size = 3; - offset = 0x3fc0; - ; + memory "signature" + size = 3; + offset = 0x3fc0; + ; - memory "fuse" - size = 1; - offset = 0x3f40; - blocksize = 4; - ; + memory "fuse" + size = 1; + offset = 0x3f40; + blocksize = 4; + ; - memory "calibration" - size = 1; - offset = 0x3f80; - ; + memory "calibration" + size = 1; + offset = 0x3f80; + ; - memory "lockbits" - size = 1; - offset = 0x3f00; - ; + memory "lockbits" + size = 1; + offset = 0x3f00; + ; ; @@ -15155,38 +15155,38 @@ part #------------------------------------------------------------ part - id = "t5"; - desc = "ATtiny5"; - signature = 0x1e 0x8f 0x09; - has_tpi = yes; + id = "t5"; + desc = "ATtiny5"; + signature = 0x1e 0x8f 0x09; + has_tpi = yes; - memory "flash" - size = 512; - offset = 0x4000; - page_size = 16; - blocksize = 128; - ; + memory "flash" + size = 512; + offset = 0x4000; + page_size = 16; + blocksize = 128; + ; - memory "signature" - size = 3; - offset = 0x3fc0; - ; + memory "signature" + size = 3; + offset = 0x3fc0; + ; - memory "fuse" - size = 1; - offset = 0x3f40; - blocksize = 4; - ; + memory "fuse" + size = 1; + offset = 0x3f40; + blocksize = 4; + ; - memory "calibration" - size = 1; - offset = 0x3f80; - ; + memory "calibration" + size = 1; + offset = 0x3f80; + ; - memory "lockbits" - size = 1; - offset = 0x3f00; - ; + memory "lockbits" + size = 1; + offset = 0x3f00; + ; ; @@ -15195,38 +15195,38 @@ part #------------------------------------------------------------ part - id = "t8"; - desc = "ATtiny9"; - signature = 0x1e 0x90 0x08; - has_tpi = yes; + id = "t8"; + desc = "ATtiny9"; + signature = 0x1e 0x90 0x08; + has_tpi = yes; - memory "flash" - size = 1024; - offset = 0x4000; - page_size = 16; - blocksize = 128; - ; + memory "flash" + size = 1024; + offset = 0x4000; + page_size = 16; + blocksize = 128; + ; - memory "signature" - size = 3; - offset = 0x3fc0; - ; + memory "signature" + size = 3; + offset = 0x3fc0; + ; - memory "fuse" - size = 1; - offset = 0x3f40; - blocksize = 4; - ; + memory "fuse" + size = 1; + offset = 0x3f40; + blocksize = 4; + ; - memory "calibration" - size = 1; - offset = 0x3f80; - ; + memory "calibration" + size = 1; + offset = 0x3f80; + ; - memory "lockbits" - size = 1; - offset = 0x3f00; - ; + memory "lockbits" + size = 1; + offset = 0x3f00; + ; ; @@ -15235,38 +15235,38 @@ part #------------------------------------------------------------ part - id = "t10"; - desc = "ATtiny10"; - signature = 0x1e 0x90 0x03; - has_tpi = yes; + id = "t10"; + desc = "ATtiny10"; + signature = 0x1e 0x90 0x03; + has_tpi = yes; - memory "flash" - size = 1024; - offset = 0x4000; - page_size = 16; - blocksize = 128; - ; + memory "flash" + size = 1024; + offset = 0x4000; + page_size = 16; + blocksize = 128; + ; - memory "signature" - size = 3; - offset = 0x3fc0; - ; + memory "signature" + size = 3; + offset = 0x3fc0; + ; - memory "fuse" - size = 1; - offset = 0x3f40; - blocksize = 4; - ; + memory "fuse" + size = 1; + offset = 0x3f40; + blocksize = 4; + ; - memory "calibration" - size = 1; - offset = 0x3f80; - ; + memory "calibration" + size = 1; + offset = 0x3f80; + ; - memory "lockbits" - size = 1; - offset = 0x3f00; - ; + memory "lockbits" + size = 1; + offset = 0x3f00; + ; ; diff --git a/buildroot/tests/mks_tinybee b/buildroot/tests/mks_tinybee index 8b5aa0f075..9dcc33ede7 100755 --- a/buildroot/tests/mks_tinybee +++ b/buildroot/tests/mks_tinybee @@ -21,10 +21,10 @@ exec_test $1 "$2" "MKS TinyBee with ESP3D_WIFISUPPORT" "$3" # restore_configs opt_set MOTHERBOARD BOARD_MKS_TINYBEE \ - LCD_LANGUAGE en \ - LCD_INFO_SCREEN_STYLE 0 \ - DISPLAY_CHARSET_HD44780 WESTERN \ - NEOPIXEL_TYPE NEO_RGB + LCD_LANGUAGE en \ + LCD_INFO_SCREEN_STYLE 0 \ + DISPLAY_CHARSET_HD44780 WESTERN \ + NEOPIXEL_TYPE NEO_RGB opt_enable FYSETC_MINI_12864_2_1 SDSUPPORT opt_enable LED_CONTROL_MENU LED_USER_PRESET_STARTUP LED_COLOR_PRESETS NEOPIXEL_LED exec_test $1 $2 "MKS TinyBee with NeoPixel LCD, SD and Speaker" "$3" diff --git a/buildroot/web-ui/data/www/webmarlin.js b/buildroot/web-ui/data/www/webmarlin.js index 943f7b9c08..3eb5139fb1 100644 --- a/buildroot/web-ui/data/www/webmarlin.js +++ b/buildroot/web-ui/data/www/webmarlin.js @@ -41,7 +41,7 @@ var WmButtonGroups = { var wmWebSoket = { WSObject: null, Connect: function() { - WsUrl=`ws://${location.host}/ws`; + WsUrl=`ws://${location.host}/ws`; try { if(wmWebSoket.WSObject === null) { jsLog.Debug("WebSocket: Trying connecting to " + WsUrl); From f0f5cd473417b55442069372d8ef80ff1113f117 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 7 Apr 2023 14:45:55 -0500 Subject: [PATCH 231/659] =?UTF-8?q?=F0=9F=A7=B1=20Bump=20all=20the=20dates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/bump-date.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/bump-date.yml b/.github/workflows/bump-date.yml index 51b58ad493..482fbbbb40 100644 --- a/.github/workflows/bump-date.yml +++ b/.github/workflows/bump-date.yml @@ -18,10 +18,10 @@ jobs: steps: - - name: Check out bugfix-2.1.x + - name: Check out bugfix-2.0.x uses: actions/checkout@v2 with: - ref: bugfix-2.1.x + ref: bugfix-2.0.x - name: Bump Date (bugfix-2.0.x) run: | From fa0b86ff98d39db5b078bc68a9647c3303b4ced2 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 26 Mar 2023 20:26:18 -0500 Subject: [PATCH 232/659] =?UTF-8?q?=F0=9F=94=A7=20Move=20TFT=20sanity=20ch?= =?UTF-8?q?ecks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/AVR/inc/Conditionals_LCD.h | 4 ---- Marlin/src/HAL/AVR/inc/SanityCheck.h | 4 ++++ Marlin/src/HAL/DUE/inc/Conditionals_LCD.h | 4 ---- Marlin/src/HAL/DUE/inc/SanityCheck.h | 6 +++++- Marlin/src/HAL/ESP32/inc/Conditionals_LCD.h | 4 ---- Marlin/src/HAL/ESP32/inc/SanityCheck.h | 11 +++++++++-- Marlin/src/HAL/LINUX/inc/Conditionals_LCD.h | 4 ---- Marlin/src/HAL/LINUX/inc/SanityCheck.h | 10 +++++++--- Marlin/src/HAL/LPC1768/inc/Conditionals_LCD.h | 4 ---- Marlin/src/HAL/LPC1768/inc/SanityCheck.h | 4 ++++ Marlin/src/HAL/NATIVE_SIM/inc/SanityCheck.h | 2 +- Marlin/src/HAL/SAMD21/inc/Conditionals_LCD.h | 8 -------- Marlin/src/HAL/SAMD21/inc/SanityCheck.h | 6 +++++- Marlin/src/HAL/SAMD51/inc/Conditionals_LCD.h | 4 ---- Marlin/src/HAL/SAMD51/inc/SanityCheck.h | 6 +++++- Marlin/src/HAL/TEENSY31_32/inc/Conditionals_LCD.h | 4 ---- Marlin/src/HAL/TEENSY31_32/inc/SanityCheck.h | 12 ++++++++---- Marlin/src/HAL/TEENSY35_36/inc/Conditionals_LCD.h | 4 ---- Marlin/src/HAL/TEENSY35_36/inc/SanityCheck.h | 12 ++++++++---- Marlin/src/HAL/TEENSY40_41/inc/Conditionals_LCD.h | 4 ---- Marlin/src/HAL/TEENSY40_41/inc/SanityCheck.h | 10 +++++++--- 21 files changed, 63 insertions(+), 64 deletions(-) diff --git a/Marlin/src/HAL/AVR/inc/Conditionals_LCD.h b/Marlin/src/HAL/AVR/inc/Conditionals_LCD.h index a611ccd7c4..5f1c4b1601 100644 --- a/Marlin/src/HAL/AVR/inc/Conditionals_LCD.h +++ b/Marlin/src/HAL/AVR/inc/Conditionals_LCD.h @@ -20,7 +20,3 @@ * */ #pragma once - -#if HAS_SPI_TFT || HAS_FSMC_TFT - #error "Sorry! TFT displays are not available for HAL/AVR." -#endif diff --git a/Marlin/src/HAL/AVR/inc/SanityCheck.h b/Marlin/src/HAL/AVR/inc/SanityCheck.h index 45aa3a50b9..665e68043a 100644 --- a/Marlin/src/HAL/AVR/inc/SanityCheck.h +++ b/Marlin/src/HAL/AVR/inc/SanityCheck.h @@ -25,6 +25,10 @@ * Test AVR-specific configuration values for errors at compile-time. */ +#if HAS_SPI_TFT || HAS_FSMC_TFT + #error "Sorry! TFT displays are not available for HAL/AVR." +#endif + /** * Check for common serial pin conflicts */ diff --git a/Marlin/src/HAL/DUE/inc/Conditionals_LCD.h b/Marlin/src/HAL/DUE/inc/Conditionals_LCD.h index 5867414447..5f1c4b1601 100644 --- a/Marlin/src/HAL/DUE/inc/Conditionals_LCD.h +++ b/Marlin/src/HAL/DUE/inc/Conditionals_LCD.h @@ -20,7 +20,3 @@ * */ #pragma once - -#if HAS_SPI_TFT || HAS_FSMC_TFT - #error "Sorry! TFT displays are not available for HAL/DUE." -#endif diff --git a/Marlin/src/HAL/DUE/inc/SanityCheck.h b/Marlin/src/HAL/DUE/inc/SanityCheck.h index 996404a7d0..6bbf04a0ac 100644 --- a/Marlin/src/HAL/DUE/inc/SanityCheck.h +++ b/Marlin/src/HAL/DUE/inc/SanityCheck.h @@ -25,6 +25,10 @@ * Test Arduino Due specific configuration values for errors at compile-time. */ +#if HAS_SPI_TFT || HAS_FSMC_TFT + #error "Sorry! TFT displays are not available for HAL/DUE." +#endif + /** * Check for common serial pin conflicts */ @@ -77,7 +81,7 @@ #endif #if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY - #error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on DUE." + #error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for HAL/DUE." #endif #if HAS_TMC_SW_SERIAL diff --git a/Marlin/src/HAL/ESP32/inc/Conditionals_LCD.h b/Marlin/src/HAL/ESP32/inc/Conditionals_LCD.h index 4da600179d..5f1c4b1601 100644 --- a/Marlin/src/HAL/ESP32/inc/Conditionals_LCD.h +++ b/Marlin/src/HAL/ESP32/inc/Conditionals_LCD.h @@ -20,7 +20,3 @@ * */ #pragma once - -#if HAS_SPI_TFT || HAS_FSMC_TFT - #error "Sorry! TFT displays are not available for HAL/ESP32." -#endif diff --git a/Marlin/src/HAL/ESP32/inc/SanityCheck.h b/Marlin/src/HAL/ESP32/inc/SanityCheck.h index 2d1b850330..910918b9ea 100644 --- a/Marlin/src/HAL/ESP32/inc/SanityCheck.h +++ b/Marlin/src/HAL/ESP32/inc/SanityCheck.h @@ -21,12 +21,19 @@ */ #pragma once +#if HAS_SPI_TFT || HAS_FSMC_TFT + #error "Sorry! TFT displays are not available for HAL/ESP32." +#endif + #if ENABLED(EMERGENCY_PARSER) #error "EMERGENCY_PARSER is not yet implemented for ESP32. Disable EMERGENCY_PARSER to continue." #endif -#if (ENABLED(SPINDLE_LASER_USE_PWM) && SPINDLE_LASER_FREQUENCY > 78125) || (ENABLED(FAST_PWM_FAN_FREQUENCY) && FAST_PWM_FAN_FREQUENCY > 78125) - #error "SPINDLE_LASER_FREQUENCY and FAST_PWM_FREQUENCY maximum value is 78125Hz for ESP32." +#if ENABLED(SPINDLE_LASER_USE_PWM) && SPINDLE_LASER_FREQUENCY > 78125 + #error "SPINDLE_LASER_FREQUENCY maximum value is 78125Hz for ESP32." +#endif +#if ENABLED(FAST_PWM_FAN) && FAST_PWM_FAN_FREQUENCY > 78125 + #error "FAST_PWM_FREQUENCY maximum value is 78125Hz for ESP32." #endif #if HAS_TMC_SW_SERIAL diff --git a/Marlin/src/HAL/LINUX/inc/Conditionals_LCD.h b/Marlin/src/HAL/LINUX/inc/Conditionals_LCD.h index 99a6fc2753..5f1c4b1601 100644 --- a/Marlin/src/HAL/LINUX/inc/Conditionals_LCD.h +++ b/Marlin/src/HAL/LINUX/inc/Conditionals_LCD.h @@ -20,7 +20,3 @@ * */ #pragma once - -#if HAS_SPI_TFT || HAS_FSMC_TFT - #error "Sorry! TFT displays are not available for HAL/LINUX." -#endif diff --git a/Marlin/src/HAL/LINUX/inc/SanityCheck.h b/Marlin/src/HAL/LINUX/inc/SanityCheck.h index 36d3190a3e..861bade10f 100644 --- a/Marlin/src/HAL/LINUX/inc/SanityCheck.h +++ b/Marlin/src/HAL/LINUX/inc/SanityCheck.h @@ -31,13 +31,17 @@ #endif #if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY - #error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on LINUX." + #error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for HAL/LINUX." +#endif + +#if HAS_SPI_TFT || HAS_FSMC_TFT + #error "Sorry! TFT displays are not available for HAL/LINUX." #endif #if HAS_TMC_SW_SERIAL - #error "TMC220x Software Serial is not supported on LINUX." + #error "TMC220x Software Serial is not supported for HAL/LINUX." #endif #if ENABLED(POSTMORTEM_DEBUGGING) - #error "POSTMORTEM_DEBUGGING is not yet supported on LINUX." + #error "POSTMORTEM_DEBUGGING is not yet supported for HAL/LINUX." #endif diff --git a/Marlin/src/HAL/LPC1768/inc/Conditionals_LCD.h b/Marlin/src/HAL/LPC1768/inc/Conditionals_LCD.h index 32ef908d63..5f1c4b1601 100644 --- a/Marlin/src/HAL/LPC1768/inc/Conditionals_LCD.h +++ b/Marlin/src/HAL/LPC1768/inc/Conditionals_LCD.h @@ -20,7 +20,3 @@ * */ #pragma once - -#if HAS_FSMC_TFT - #error "Sorry! FSMC TFT displays are not current available for HAL/LPC1768." -#endif diff --git a/Marlin/src/HAL/LPC1768/inc/SanityCheck.h b/Marlin/src/HAL/LPC1768/inc/SanityCheck.h index b9a3360668..9f78f2a70d 100644 --- a/Marlin/src/HAL/LPC1768/inc/SanityCheck.h +++ b/Marlin/src/HAL/LPC1768/inc/SanityCheck.h @@ -77,6 +77,10 @@ static_assert(!(NUM_SERVOS && ENABLED(FAST_PWM_FAN)), "BLTOUCH and Servos are in #endif #endif +#if HAS_FSMC_TFT + #error "Sorry! FSMC TFT displays are not current available for HAL/LPC1768." +#endif + static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported on LPC176x."); /** diff --git a/Marlin/src/HAL/NATIVE_SIM/inc/SanityCheck.h b/Marlin/src/HAL/NATIVE_SIM/inc/SanityCheck.h index 2d7bef23a3..615e5254c9 100644 --- a/Marlin/src/HAL/NATIVE_SIM/inc/SanityCheck.h +++ b/Marlin/src/HAL/NATIVE_SIM/inc/SanityCheck.h @@ -31,7 +31,7 @@ #endif #if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY - #error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on LINUX." + #error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for HAL/LINUX." #endif #if HAS_TMC_SW_SERIAL diff --git a/Marlin/src/HAL/SAMD21/inc/Conditionals_LCD.h b/Marlin/src/HAL/SAMD21/inc/Conditionals_LCD.h index ca467937c3..9d58e45432 100644 --- a/Marlin/src/HAL/SAMD21/inc/Conditionals_LCD.h +++ b/Marlin/src/HAL/SAMD21/inc/Conditionals_LCD.h @@ -20,12 +20,4 @@ * */ -/** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) - */ #pragma once - -#if HAS_SPI_TFT || HAS_FSMC_TFT - #error "Sorry! TFT displays are not available for HAL/SAMD21." -#endif diff --git a/Marlin/src/HAL/SAMD21/inc/SanityCheck.h b/Marlin/src/HAL/SAMD21/inc/SanityCheck.h index 95fa5e5940..8bf052e3bb 100644 --- a/Marlin/src/HAL/SAMD21/inc/SanityCheck.h +++ b/Marlin/src/HAL/SAMD21/inc/SanityCheck.h @@ -29,6 +29,10 @@ * Test SAMD21 specific configuration values for errors at compile-time. */ +#if HAS_SPI_TFT || HAS_FSMC_TFT + #error "Sorry! TFT displays are not available for HAL/SAMD21." +#endif + #if SERVO_TC == MF_TIMER_RTC #error "Servos can't use RTC timer" #endif @@ -42,7 +46,7 @@ #endif #if ENABLED(FAST_PWM_FAN) - #error "Features requiring Hardware PWM (FAST_PWM_FAN) are not yet supported on SAMD21." + #error "Features requiring Hardware PWM (FAST_PWM_FAN) are not yet supported for HAL/SAMD21." #endif #if ENABLED(POSTMORTEM_DEBUGGING) diff --git a/Marlin/src/HAL/SAMD51/inc/Conditionals_LCD.h b/Marlin/src/HAL/SAMD51/inc/Conditionals_LCD.h index 932348c52f..5f1c4b1601 100644 --- a/Marlin/src/HAL/SAMD51/inc/Conditionals_LCD.h +++ b/Marlin/src/HAL/SAMD51/inc/Conditionals_LCD.h @@ -20,7 +20,3 @@ * */ #pragma once - -#if HAS_SPI_TFT || HAS_FSMC_TFT - #error "Sorry! TFT displays are not available for HAL/SAMD51." -#endif diff --git a/Marlin/src/HAL/SAMD51/inc/SanityCheck.h b/Marlin/src/HAL/SAMD51/inc/SanityCheck.h index ae1bc2f3ef..f9ff090f75 100644 --- a/Marlin/src/HAL/SAMD51/inc/SanityCheck.h +++ b/Marlin/src/HAL/SAMD51/inc/SanityCheck.h @@ -29,6 +29,10 @@ * Test SAMD51 specific configuration values for errors at compile-time. */ +#if HAS_SPI_TFT || HAS_FSMC_TFT + #error "Sorry! TFT displays are not available for HAL/SAMD51." +#endif + #if ENABLED(FLASH_EEPROM_EMULATION) #warning "Did you activate the SmartEEPROM? See https://github.com/GMagician/SAMD51-SmartEEprom-Manager/releases" #endif @@ -55,7 +59,7 @@ #endif #if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY - #error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on SAMD51." + #error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for HAL/SAMD51." #endif #if ENABLED(POSTMORTEM_DEBUGGING) diff --git a/Marlin/src/HAL/TEENSY31_32/inc/Conditionals_LCD.h b/Marlin/src/HAL/TEENSY31_32/inc/Conditionals_LCD.h index 54ec166643..5f1c4b1601 100644 --- a/Marlin/src/HAL/TEENSY31_32/inc/Conditionals_LCD.h +++ b/Marlin/src/HAL/TEENSY31_32/inc/Conditionals_LCD.h @@ -20,7 +20,3 @@ * */ #pragma once - -#if HAS_SPI_TFT || HAS_FSMC_TFT - #error "Sorry! TFT displays are not available for HAL/TEENSY31_32." -#endif diff --git a/Marlin/src/HAL/TEENSY31_32/inc/SanityCheck.h b/Marlin/src/HAL/TEENSY31_32/inc/SanityCheck.h index dbce187673..c5b25f2cb5 100644 --- a/Marlin/src/HAL/TEENSY31_32/inc/SanityCheck.h +++ b/Marlin/src/HAL/TEENSY31_32/inc/SanityCheck.h @@ -25,22 +25,26 @@ * Test TEENSY35_36 specific configuration values for errors at compile-time. */ +#if HAS_SPI_TFT || HAS_FSMC_TFT + #error "Sorry! TFT displays are not available for Teensy 3.1/3.2." +#endif + #if ENABLED(EMERGENCY_PARSER) #error "EMERGENCY_PARSER is not yet implemented for Teensy 3.1/3.2. Disable EMERGENCY_PARSER to continue." #endif #if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY - #error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on Teensy 3.1/3.2." + #error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for Teensy 3.1/3.2." #endif #if HAS_TMC_SW_SERIAL - #error "TMC220x Software Serial is not supported on Teensy 3.1/3.2." + #error "TMC220x Software Serial is not supported for Teensy 3.1/3.2." #endif #if ENABLED(POSTMORTEM_DEBUGGING) - #error "POSTMORTEM_DEBUGGING is not yet supported on Teensy 3.1/3.2." + #error "POSTMORTEM_DEBUGGING is not yet supported for Teensy 3.1/3.2." #endif #if USING_PULLDOWNS - #error "PULLDOWN pin mode is not available on Teensy 3.1/3.2 boards." + #error "PULLDOWN pin mode is not available for Teensy 3.1/3.2." #endif diff --git a/Marlin/src/HAL/TEENSY35_36/inc/Conditionals_LCD.h b/Marlin/src/HAL/TEENSY35_36/inc/Conditionals_LCD.h index 632ee533ac..5f1c4b1601 100644 --- a/Marlin/src/HAL/TEENSY35_36/inc/Conditionals_LCD.h +++ b/Marlin/src/HAL/TEENSY35_36/inc/Conditionals_LCD.h @@ -20,7 +20,3 @@ * */ #pragma once - -#if HAS_SPI_TFT || HAS_FSMC_TFT - #error "Sorry! TFT displays are not available for HAL/TEENSY35_36." -#endif diff --git a/Marlin/src/HAL/TEENSY35_36/inc/SanityCheck.h b/Marlin/src/HAL/TEENSY35_36/inc/SanityCheck.h index 3308707371..ff6d772411 100644 --- a/Marlin/src/HAL/TEENSY35_36/inc/SanityCheck.h +++ b/Marlin/src/HAL/TEENSY35_36/inc/SanityCheck.h @@ -25,22 +25,26 @@ * Test TEENSY35_36 specific configuration values for errors at compile-time. */ +#if HAS_SPI_TFT || HAS_FSMC_TFT + #error "Sorry! TFT displays are not available for Teensy 3.5/3.6. +#endif + #if ENABLED(EMERGENCY_PARSER) #error "EMERGENCY_PARSER is not yet implemented for Teensy 3.5/3.6. Disable EMERGENCY_PARSER to continue." #endif #if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY - #error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on Teensy 3.5/3.6." + #error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for Teensy 3.5/3.6." #endif #if HAS_TMC_SW_SERIAL - #error "TMC220x Software Serial is not supported on Teensy 3.5/3.6." + #error "TMC220x Software Serial is not supported for Teensy 3.5/3.6." #endif #if ENABLED(POSTMORTEM_DEBUGGING) - #error "POSTMORTEM_DEBUGGING is not yet supported on Teensy 3.5/3.6." + #error "POSTMORTEM_DEBUGGING is not yet supported for Teensy 3.5/3.6." #endif #if USING_PULLDOWNS - #error "PULLDOWN pin mode is not available on Teensy 3.5/3.6 boards." + #error "PULLDOWN pin mode is not available for Teensy 3.5/3.6." #endif diff --git a/Marlin/src/HAL/TEENSY40_41/inc/Conditionals_LCD.h b/Marlin/src/HAL/TEENSY40_41/inc/Conditionals_LCD.h index 6a8540927b..5f1c4b1601 100644 --- a/Marlin/src/HAL/TEENSY40_41/inc/Conditionals_LCD.h +++ b/Marlin/src/HAL/TEENSY40_41/inc/Conditionals_LCD.h @@ -20,7 +20,3 @@ * */ #pragma once - -#if HAS_SPI_TFT || HAS_FSMC_TFT - #error "Sorry! TFT displays are not available for HAL/TEENSY40_41." -#endif diff --git a/Marlin/src/HAL/TEENSY40_41/inc/SanityCheck.h b/Marlin/src/HAL/TEENSY40_41/inc/SanityCheck.h index 3d2668d749..731658b4a3 100644 --- a/Marlin/src/HAL/TEENSY40_41/inc/SanityCheck.h +++ b/Marlin/src/HAL/TEENSY40_41/inc/SanityCheck.h @@ -25,18 +25,22 @@ * Test TEENSY41 specific configuration values for errors at compile-time. */ +#if HAS_SPI_TFT || HAS_FSMC_TFT + #error "Sorry! TFT displays are not available for Teensy 4.0/4.1." +#endif + #if ENABLED(EMERGENCY_PARSER) #error "EMERGENCY_PARSER is not yet implemented for Teensy 4.0/4.1. Disable EMERGENCY_PARSER to continue." #endif #if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY - #error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on Teensy 4.0/4.1." + #error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for Teensy 4.0/4.1." #endif #if HAS_TMC_SW_SERIAL - #error "TMC220x Software Serial is not supported on Teensy 4.0/4.1." + #error "TMC220x Software Serial is not supported for Teensy 4.0/4.1." #endif #if ENABLED(POSTMORTEM_DEBUGGING) - #error "POSTMORTEM_DEBUGGING is not yet supported on Teensy 4.0/4.1." + #error "POSTMORTEM_DEBUGGING is not yet supported for Teensy 4.0/4.1." #endif From f1970b9da80ea3c7795267b02b12a33c354e2139 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 8 Apr 2023 00:18:59 +0000 Subject: [PATCH 233/659] [cron] Bump distribution date (2023-04-08) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 7e27512e97..7968a02f3e 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-07" +//#define STRING_DISTRIBUTION_DATE "2023-04-08" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 5b28b7c96f..f19dfc7acf 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-07" + #define STRING_DISTRIBUTION_DATE "2023-04-08" #endif /** From c7290f00e01e233c14829f3bd8d899f92a8010e0 Mon Sep 17 00:00:00 2001 From: Jason Smith Date: Fri, 7 Apr 2023 18:52:33 -0700 Subject: [PATCH 234/659] =?UTF-8?q?=F0=9F=8E=A8=20Suppress=20M122=20sign?= =?UTF-8?q?=20warning=20(#25613)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/feature/trinamic/M122.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/gcode/feature/trinamic/M122.cpp b/Marlin/src/gcode/feature/trinamic/M122.cpp index 07fe9e5bd8..61786d51ad 100644 --- a/Marlin/src/gcode/feature/trinamic/M122.cpp +++ b/Marlin/src/gcode/feature/trinamic/M122.cpp @@ -47,7 +47,7 @@ void GcodeSuite::M122() { if (sflag && !sval) tmc_set_report_interval(0); else if (parser.seenval('P')) - tmc_set_report_interval(_MAX(250, parser.value_ushort())); + tmc_set_report_interval(_MAX(uint16_t(250), parser.value_ushort())); else if (sval) tmc_set_report_interval(MONITOR_DRIVER_STATUS_INTERVAL_MS); #endif From 56f2da8c9d4f0b1a0a337fcf176c805e93fb98bf Mon Sep 17 00:00:00 2001 From: Chris Pepper Date: Sat, 8 Apr 2023 02:55:10 +0100 Subject: [PATCH 235/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20SD=20partitionTabl?= =?UTF-8?q?e=20packing=20(#25648)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/sd/SdFatStructs.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Marlin/src/sd/SdFatStructs.h b/Marlin/src/sd/SdFatStructs.h index 03bbc1c194..b3f94b57a0 100644 --- a/Marlin/src/sd/SdFatStructs.h +++ b/Marlin/src/sd/SdFatStructs.h @@ -66,9 +66,9 @@ struct partitionTable { * Sector part of Cylinder-head-sector address of the first block in * the partition. Legal values are 1-63. Only used in old PC BIOS. */ - unsigned beginSector : 6; + uint8_t beginSector : 6; /** High bits cylinder for first block in partition. */ - unsigned beginCylinderHigh : 2; + uint8_t beginCylinderHigh : 2; /** * Combine beginCylinderLow with beginCylinderHigh. Legal values * are 0-1023. Only used in old PC BIOS. @@ -88,9 +88,9 @@ struct partitionTable { * Sector part of cylinder-head-sector address of the last sector in * the partition. Legal values are 1-63. Only used in old PC BIOS. */ - unsigned endSector : 6; + uint8_t endSector : 6; /** High bits of end cylinder */ - unsigned endCylinderHigh : 2; + uint8_t endCylinderHigh : 2; /** * Combine endCylinderLow with endCylinderHigh. Legal values * are 0-1023. Only used in old PC BIOS. From cd5dc7203ca6340017a4f686a456f5d71792f272 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 8 Apr 2023 14:02:14 -0500 Subject: [PATCH 236/659] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20LCD=5FPINS=5FENABL?= =?UTF-8?q?E=20=3D>=20LCD=5FPINS=5FEN?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/AVR/fastio/fastio_1280.h | 1 + Marlin/src/HAL/LINUX/spi_pins.h | 2 +- Marlin/src/HAL/LPC1768/spi_pins.h | 2 +- Marlin/src/HAL/NATIVE_SIM/spi_pins.h | 2 +- Marlin/src/inc/SanityCheck.h | 2 + Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 2 +- Marlin/src/lcd/dogm/marlinui_DOGM.h | 10 ++- .../lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.h | 2 +- .../extui/ftdi_eve_touch_ui/pin_mappings.h | 18 ++--- Marlin/src/pins/esp32/pins_MKS_TINYBEE.h | 2 +- Marlin/src/pins/esp32/pins_MRR_ESPE.h | 2 +- Marlin/src/pins/esp32/pins_PANDA_common.h | 2 +- Marlin/src/pins/linux/pins_RAMPS_LINUX.h | 10 +-- Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h | 4 +- Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h | 4 +- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h | 2 +- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h | 6 +- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h | 8 +-- Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h | 2 +- Marlin/src/pins/lpc1768/pins_MKS_SBASE.h | 6 +- Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h | 6 +- Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h | 4 +- Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h | 2 +- Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h | 1 - Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h | 4 +- .../src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h | 4 +- .../src/pins/lpc1769/pins_COHESION3D_MINI.h | 2 +- .../src/pins/lpc1769/pins_COHESION3D_REMIX.h | 2 +- Marlin/src/pins/lpc1769/pins_FLY_CDY.h | 2 +- Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h | 6 +- Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h | 2 +- Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h | 2 +- Marlin/src/pins/mega/pins_CHEAPTRONICv2.h | 2 +- Marlin/src/pins/mega/pins_GT2560_REV_A.h | 4 +- Marlin/src/pins/mega/pins_GT2560_V3.h | 4 +- Marlin/src/pins/mega/pins_GT2560_V3_A20.h | 2 +- Marlin/src/pins/mega/pins_GT2560_V4_A20.h | 2 +- Marlin/src/pins/mega/pins_HJC2560C_REV2.h | 4 +- Marlin/src/pins/mega/pins_INTAMSYS40.h | 2 +- Marlin/src/pins/mega/pins_MEGATRONICS.h | 2 +- Marlin/src/pins/mega/pins_MEGATRONICS_2.h | 2 +- Marlin/src/pins/mega/pins_MEGATRONICS_3.h | 4 +- Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h | 2 +- Marlin/src/pins/mega/pins_MINITRONICS.h | 4 +- Marlin/src/pins/mega/pins_OVERLORD.h | 2 +- Marlin/src/pins/mega/pins_PICA.h | 2 +- Marlin/src/pins/mega/pins_SILVER_GATE.h | 2 +- Marlin/src/pins/pinsDebug_list.h | 4 +- Marlin/src/pins/rambo/pins_EINSY_RAMBO.h | 4 +- Marlin/src/pins/rambo/pins_EINSY_RETRO.h | 4 +- Marlin/src/pins/rambo/pins_MINIRAMBO.h | 4 +- Marlin/src/pins/rambo/pins_RAMBO.h | 4 +- Marlin/src/pins/rambo/pins_SCOOVO_X9H.h | 2 +- Marlin/src/pins/ramps/pins_3DRAG.h | 2 +- .../src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h | 2 +- Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h | 2 +- .../src/pins/ramps/pins_FORMBOT_TREX2PLUS.h | 2 +- Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h | 2 +- Marlin/src/pins/ramps/pins_FYSETC_F6_13.h | 2 +- Marlin/src/pins/ramps/pins_K8600.h | 2 +- Marlin/src/pins/ramps/pins_K8800.h | 2 +- Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h | 18 ++--- Marlin/src/pins/ramps/pins_ORTUR_4.h | 2 +- Marlin/src/pins/ramps/pins_RAMPS.h | 10 +-- Marlin/src/pins/ramps/pins_RAMPS_S_12.h | 2 +- Marlin/src/pins/ramps/pins_RUMBA.h | 2 +- Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h | 2 +- Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h | 2 +- Marlin/src/pins/ramps/pins_TT_OSCAR.h | 10 +-- Marlin/src/pins/ramps/pins_ULTIMAIN_2.h | 2 +- Marlin/src/pins/ramps/pins_ULTIMAKER.h | 4 +- Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h | 6 +- Marlin/src/pins/ramps/pins_ZRIB_V20.h | 2 +- Marlin/src/pins/ramps/pins_ZRIB_V53.h | 10 +-- Marlin/src/pins/sam/pins_ADSK.h | 2 +- Marlin/src/pins/sam/pins_ALLIGATOR_R2.h | 2 +- Marlin/src/pins/sam/pins_ARCHIM1.h | 2 +- Marlin/src/pins/sam/pins_ARCHIM2.h | 2 +- Marlin/src/pins/sam/pins_DUE3DOM.h | 4 +- Marlin/src/pins/sam/pins_DUE3DOM_MINI.h | 4 +- Marlin/src/pins/sam/pins_KRATOS32.h | 2 +- Marlin/src/pins/sam/pins_RADDS.h | 6 +- Marlin/src/pins/sam/pins_RAMPS_DUO.h | 11 +-- Marlin/src/pins/sam/pins_RAMPS_FD_V1.h | 12 ++-- Marlin/src/pins/sam/pins_RURAMPS4D_11.h | 6 +- Marlin/src/pins/sam/pins_RURAMPS4D_13.h | 4 +- Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h | 2 +- .../src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h | 34 ++++----- Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h | 34 ++++----- Marlin/src/pins/samd/pins_MINITRONICS20.h | 10 +-- Marlin/src/pins/samd/pins_RAMPS_144.h | 10 +-- Marlin/src/pins/sanguino/pins_ANET_10.h | 70 +++++++++---------- Marlin/src/pins/sanguino/pins_GEN7_CUSTOM.h | 2 +- .../src/pins/sanguino/pins_MELZI_CREALITY.h | 8 +-- Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h | 2 +- Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h | 2 +- .../src/pins/sanguino/pins_SANGUINOLOLU_11.h | 10 +-- Marlin/src/pins/sanguino/pins_ZMIB_V2.h | 2 +- Marlin/src/pins/stm32f1/pins_BEAST.h | 2 +- Marlin/src/pins/stm32f1/pins_BTT_SKR_CR6.h | 2 +- Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h | 4 +- .../stm32f1/pins_BTT_SKR_MINI_E3_common.h | 6 +- .../src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h | 4 +- .../src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h | 2 +- Marlin/src/pins/stm32f1/pins_CHITU3D.h | 6 +- Marlin/src/pins/stm32f1/pins_CREALITY_V4.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V521.h | 2 +- .../src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h | 2 +- Marlin/src/pins/stm32f1/pins_FLY_MINI.h | 2 +- Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h | 2 +- Marlin/src/pins/stm32f1/pins_GTM32_MINI.h | 2 +- Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h | 2 +- Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h | 2 +- Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h | 4 +- .../pins/stm32f1/pins_MKS_ROBIN_E3_common.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h | 2 +- .../src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h | 2 +- .../src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h | 4 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h | 2 +- Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h | 2 +- Marlin/src/pins/stm32f1/pins_SOVOL_V131.h | 2 +- Marlin/src/pins/stm32f1/pins_STM32F1R.h | 2 +- Marlin/src/pins/stm32f1/pins_STM3R_MINI.h | 2 +- Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h | 4 +- Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h | 8 +-- Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h | 4 +- Marlin/src/pins/stm32f4/pins_ARMED.h | 2 +- Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h | 2 +- .../src/pins/stm32f4/pins_BLACK_STM32F407VE.h | 2 +- .../src/pins/stm32f4/pins_BTT_BTT002_V1_0.h | 4 +- Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h | 4 +- Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h | 4 +- .../pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h | 4 +- .../stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h | 4 +- .../pins/stm32f4/pins_BTT_SKR_PRO_common.h | 4 +- .../pins/stm32f4/pins_BTT_SKR_V2_0_common.h | 4 +- Marlin/src/pins/stm32f4/pins_FLYF407ZG.h | 2 +- .../pins/stm32f4/pins_FYSETC_CHEETAH_V20.h | 55 ++++++++------- Marlin/src/pins/stm32f4/pins_FYSETC_S6.h | 4 +- .../pins/stm32f4/pins_MKS_MONSTER8_common.h | 2 +- .../stm32f4/pins_MKS_ROBIN_NANO_V3_common.h | 2 +- .../src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h | 2 +- Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h | 4 +- Marlin/src/pins/stm32f4/pins_RUMBA32_common.h | 2 +- .../src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h | 2 +- Marlin/src/pins/stm32f4/pins_VAKE403D.h | 2 +- Marlin/src/pins/stm32f7/pins_NUCLEO_F767ZI.h | 2 +- Marlin/src/pins/stm32f7/pins_REMRAM_V1.h | 2 +- .../pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h | 4 +- .../pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h | 4 +- .../pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h | 4 +- .../pins/stm32g0/pins_BTT_MANTA_M8P_common.h | 4 +- .../pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h | 8 +-- .../pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h | 4 +- .../pins/stm32h7/pins_BTT_SKR_V3_0_common.h | 4 +- Marlin/src/pins/teensy2/pins_PRINTRBOARD.h | 2 +- .../src/pins/teensy2/pins_PRINTRBOARD_REVF.h | 2 +- Marlin/src/pins/teensy2/pins_SAV_MKI.h | 2 +- Marlin/src/pins/teensy2/pins_TEENSY2.h | 2 +- Marlin/src/pins/teensy3/pins_TEENSY31_32.h | 2 +- Marlin/src/pins/teensy3/pins_TEENSY35_36.h | 4 +- .../MARLIN_TH3D_EZBOARD_V2/PeripheralPins.c | 4 +- ini/lpc176x.ini | 2 +- 165 files changed, 388 insertions(+), 384 deletions(-) diff --git a/Marlin/src/HAL/AVR/fastio/fastio_1280.h b/Marlin/src/HAL/AVR/fastio/fastio_1280.h index e6ecbabb80..6f074cf911 100644 --- a/Marlin/src/HAL/AVR/fastio/fastio_1280.h +++ b/Marlin/src/HAL/AVR/fastio/fastio_1280.h @@ -27,6 +27,7 @@ * Hardware Pin : 02 03 06 07 01 05 15 16 17 18 23 24 25 26 64 63 13 12 46 45 44 43 78 77 76 75 74 73 72 71 60 59 58 57 56 55 54 53 50 70 52 51 42 41 40 39 38 37 36 35 22 21 20 19 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 | 04 08 09 10 11 14 27 28 29 30 31 32 33 34 47 48 49 61 62 65 66 67 68 69 79 80 81 98 99 100 * Port : E0 E1 E4 E5 G5 E3 H3 H4 H5 H6 B4 B5 B6 B7 J1 J0 H1 H0 D3 D2 D1 D0 A0 A1 A2 A3 A4 A5 A6 A7 C7 C6 C5 C4 C3 C2 C1 C0 D7 G2 G1 G0 L7 L6 L5 L4 L3 L2 L1 L0 B3 B2 B1 B0 F0 F1 F2 F3 F4 F5 F6 F7 K0 K1 K2 K3 K4 K5 K6 K7 | E2 E6 E7 xx xx H2 H7 G3 G4 xx xx xx xx xx D4 D5 D6 xx xx J2 J3 J4 J5 J6 J7 xx xx xx xx xx * Logical Pin : 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | 78 79 80 xx xx 84 85 71 70 xx xx xx xx xx 81 82 83 xx xx 72 73 75 76 77 74 xx xx xx xx xx + * Analog Input : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 * * Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA * AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg diff --git a/Marlin/src/HAL/LINUX/spi_pins.h b/Marlin/src/HAL/LINUX/spi_pins.h index 9b40651873..9ecbb04987 100644 --- a/Marlin/src/HAL/LINUX/spi_pins.h +++ b/Marlin/src/HAL/LINUX/spi_pins.h @@ -24,7 +24,7 @@ #include "../../core/macros.h" #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_U8GLIB, SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_ENABLE == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) +#if BOTH(HAS_MARLINUI_U8GLIB, SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) #define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently // needed due to the speed and mode required for communicating with each device being different. // This requirement can be removed if the SPI access to these devices is updated to use diff --git a/Marlin/src/HAL/LPC1768/spi_pins.h b/Marlin/src/HAL/LPC1768/spi_pins.h index a82b21dda9..e716d00fb0 100644 --- a/Marlin/src/HAL/LPC1768/spi_pins.h +++ b/Marlin/src/HAL/LPC1768/spi_pins.h @@ -23,7 +23,7 @@ #include "../../core/macros.h" -#if BOTH(SDSUPPORT, HAS_MARLINUI_U8GLIB) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_ENABLE == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) +#if BOTH(SDSUPPORT, HAS_MARLINUI_U8GLIB) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) #define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently // needed due to the speed and mode required for communicating with each device being different. // This requirement can be removed if the SPI access to these devices is updated to use diff --git a/Marlin/src/HAL/NATIVE_SIM/spi_pins.h b/Marlin/src/HAL/NATIVE_SIM/spi_pins.h index fd3378b337..eb20a21c56 100644 --- a/Marlin/src/HAL/NATIVE_SIM/spi_pins.h +++ b/Marlin/src/HAL/NATIVE_SIM/spi_pins.h @@ -24,7 +24,7 @@ #include "../../core/macros.h" #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_U8GLIB, SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_ENABLE == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) +#if BOTH(HAS_MARLINUI_U8GLIB, SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) #define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently // needed due to the speed and mode required for communicating with each device being different. // This requirement can be removed if the SPI access to these devices is updated to use diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 5a0168e845..46c7931a50 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -700,6 +700,8 @@ #error "DEFAULT_STEPPER_DEACTIVE_TIME is now DEFAULT_STEPPER_TIMEOUT_SEC." #elif defined(TFT_SHARED_SPI) #error "TFT_SHARED_SPI is now TFT_SHARED_IO." +#elif defined(LCD_PINS_ENABLE) + #error "LCD_PINS_ENABLE is now LCD_PINS_EN." #endif // L64xx stepper drivers have been removed diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index 416c07c8f7..e4c0317d12 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -108,7 +108,7 @@ #else // Standard direct-connected LCD implementations - LCD_CLASS lcd(LCD_PINS_RS, LCD_PINS_ENABLE, LCD_PINS_D4, LCD_PINS_D5, LCD_PINS_D6, LCD_PINS_D7); + LCD_CLASS lcd(LCD_PINS_RS, LCD_PINS_EN, LCD_PINS_D4, LCD_PINS_D5, LCD_PINS_D6, LCD_PINS_D7); #endif diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.h b/Marlin/src/lcd/dogm/marlinui_DOGM.h index f70621574c..2b9eb64a57 100644 --- a/Marlin/src/lcd/dogm/marlinui_DOGM.h +++ b/Marlin/src/lcd/dogm/marlinui_DOGM.h @@ -36,17 +36,15 @@ // RepRapWorld Graphical LCD - - #if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN) && (LCD_PINS_ENABLE == SD_MOSI_PIN) + #if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN) && (LCD_PINS_EN == SD_MOSI_PIN) #define U8G_CLASS U8GLIB_ST7920_128X64_4X_HAL #define U8G_PARAM LCD_PINS_RS #elif ENABLED(SDSUPPORT) && __SAMD21__ - #define U8G_CLASS U8GLIB_ST7920_128X64_4X #define U8G_PARAM LCD_PINS_RS #else #define U8G_CLASS U8GLIB_ST7920_128X64_4X - #define U8G_PARAM LCD_PINS_D4, LCD_PINS_ENABLE, LCD_PINS_RS + #define U8G_PARAM LCD_PINS_D4, LCD_PINS_EN, LCD_PINS_RS #endif #elif IS_U8GLIB_ST7920 @@ -54,7 +52,7 @@ // RepRap Discount Full Graphics Smart Controller // and other variant LCDs using ST7920 - #if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN) && (LCD_PINS_ENABLE == SD_MOSI_PIN) + #if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN) && (LCD_PINS_EN == SD_MOSI_PIN) #define U8G_CLASS U8GLIB_ST7920_128X64_4X_HAL // 2 stripes, HW SPI (Shared with SD card. Non-standard LCD adapter on AVR.) #define U8G_PARAM LCD_PINS_RS #else @@ -63,7 +61,7 @@ #else #define U8G_CLASS U8GLIB_ST7920_128X64_RRD // Adjust stripes with PAGE_HEIGHT in ultralcd_st7920_u8glib_rrd.h #endif - #define U8G_PARAM LCD_PINS_D4, LCD_PINS_ENABLE, LCD_PINS_RS // AVR version ignores these pin settings + #define U8G_PARAM LCD_PINS_D4, LCD_PINS_EN, LCD_PINS_RS // AVR version ignores these pin settings // HAL version uses these pin settings #endif diff --git a/Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.h b/Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.h index 446bfcfd42..9a565fc2ef 100644 --- a/Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.h +++ b/Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.h @@ -28,7 +28,7 @@ #include "../../HAL/shared/Delay.h" #define ST7920_CLK_PIN LCD_PINS_D4 -#define ST7920_DAT_PIN LCD_PINS_ENABLE +#define ST7920_DAT_PIN LCD_PINS_EN #define ST7920_CS_PIN LCD_PINS_RS //#define PAGE_HEIGHT 8 // 128 byte framebuffer diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/pin_mappings.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/pin_mappings.h index 34026f4a26..167ea9d7cf 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/pin_mappings.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/pin_mappings.h @@ -42,13 +42,13 @@ #elif ENABLED(CR10_TFT_PINMAP) // FYSETC S6 - STM32F4 - with TOUCH_UI_ULTIPANEL #define CLCD_USE_SOFT_SPI - #define CLCD_SOFT_SPI_SCLK LCD_PINS_D4 // PORTA1 Pin 6 - #define CLCD_SOFT_SPI_MOSI LCD_PINS_ENABLE // PORTC1 Pin 8 - #define CLCD_SPI_CS LCD_PINS_RS // PORTA3 Pin 7 - #define CLCD_SOFT_SPI_MISO 16 // PORTC0 BTN_ENC Pin 2 - #define CLCD_MOD_RESET 11 // PORTD3 BTN_EN1 Pin 3 - #define CLCD_AUX_0 10 // PORTD2 BTN_EN2 Pin 5 - #define CLCD_AUX_1 BEEPER_PIN // PORTA4 Pin 1 + #define CLCD_SOFT_SPI_SCLK LCD_PINS_D4 // PORTA1 Pin 6 + #define CLCD_SOFT_SPI_MOSI LCD_PINS_EN // PORTC1 Pin 8 + #define CLCD_SPI_CS LCD_PINS_RS // PORTA3 Pin 7 + #define CLCD_SOFT_SPI_MISO 16 // PORTC0 BTN_ENC Pin 2 + #define CLCD_MOD_RESET 11 // PORTD3 BTN_EN1 Pin 3 + #define CLCD_AUX_0 10 // PORTD2 BTN_EN2 Pin 5 + #define CLCD_AUX_1 BEEPER_PIN // PORTA4 Pin 1 #elif ENABLED(AO_EXP1_DEPRECATED_PINMAP) @@ -60,7 +60,7 @@ #define CLCD_MOD_RESET LCD_PINS_D4 #define CLCD_SPI_CS LCD_PINS_D5 - #define CLCD_AUX_0 LCD_PINS_ENABLE + #define CLCD_AUX_0 LCD_PINS_EN #define CLCD_AUX_1 BTN_ENC #define CLCD_AUX_2 BEEPER_PIN @@ -93,7 +93,7 @@ * functionality over software SPI. */ - #define CLCD_MOD_RESET LCD_PINS_ENABLE + #define CLCD_MOD_RESET LCD_PINS_EN #define CLCD_SPI_CS LCD_PINS_D4 #define CLCD_USE_SOFT_SPI diff --git a/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h b/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h index 791ddcab41..493269cf2c 100644 --- a/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h +++ b/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h @@ -158,7 +158,7 @@ #if HAS_WIRED_LCD #define BEEPER_PIN EXP1_01_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_RS EXP1_04_PIN #define BTN_ENC EXP1_02_PIN #define BTN_EN1 EXP2_03_PIN diff --git a/Marlin/src/pins/esp32/pins_MRR_ESPE.h b/Marlin/src/pins/esp32/pins_MRR_ESPE.h index b95e54841e..d88a3ab359 100644 --- a/Marlin/src/pins/esp32/pins_MRR_ESPE.h +++ b/Marlin/src/pins/esp32/pins_MRR_ESPE.h @@ -126,7 +126,7 @@ #if HAS_WIRED_LCD #define LCD_PINS_RS 13 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 16 #if ENABLED(CR10_STOCKDISPLAY) diff --git a/Marlin/src/pins/esp32/pins_PANDA_common.h b/Marlin/src/pins/esp32/pins_PANDA_common.h index 2325805676..c66bdf0bd1 100644 --- a/Marlin/src/pins/esp32/pins_PANDA_common.h +++ b/Marlin/src/pins/esp32/pins_PANDA_common.h @@ -123,6 +123,6 @@ #define BTN_EN2 EXP2_05_PIN #define LCD_PINS_RS EXP1_04_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #endif diff --git a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h index bfef46c945..d7f53568e6 100644 --- a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h +++ b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h @@ -474,13 +474,13 @@ #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) #define LCD_PINS_RS 49 // CS chip select /SS chip slave select - #define LCD_PINS_ENABLE 51 // SID (MOSI) + #define LCD_PINS_EN 51 // SID (MOSI) #define LCD_PINS_D4 52 // SCK (CLK) clock #elif BOTH(IS_NEWPANEL, PANEL_ONE) #define LCD_PINS_RS 40 - #define LCD_PINS_ENABLE 42 + #define LCD_PINS_EN 42 #define LCD_PINS_D4 65 #define LCD_PINS_D5 66 #define LCD_PINS_D6 44 @@ -491,7 +491,7 @@ #if ENABLED(CR10_STOCKDISPLAY) #define LCD_PINS_RS 27 - #define LCD_PINS_ENABLE 29 + #define LCD_PINS_EN 29 #define LCD_PINS_D4 25 #if !IS_NEWPANEL @@ -501,7 +501,7 @@ #elif ENABLED(ZONESTAR_LCD) #define LCD_PINS_RS 64 - #define LCD_PINS_ENABLE 44 + #define LCD_PINS_EN 44 #define LCD_PINS_D4 63 #define LCD_PINS_D5 40 #define LCD_PINS_D6 42 @@ -519,7 +519,7 @@ #define DOGLCD_A0 LCD_PINS_DC #else #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 23 #define LCD_PINS_D5 25 #define LCD_PINS_D6 27 diff --git a/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h b/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h index 7115cea0bd..7cbad6a7f9 100644 --- a/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h +++ b/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h @@ -127,7 +127,7 @@ #define SD_DETECT_PIN P0_27 // EXP2-7 #define LCD_PINS_RS P0_16 // EXP1-4 - #define LCD_PINS_ENABLE P0_18 // (MOSI) EXP1-3 + #define LCD_PINS_EN P0_18 // (MOSI) EXP1-3 #define LCD_PINS_D4 P0_15 // (SCK) EXP1-5 #if BOTH(HAS_MARLINUI_HD44780, IS_RRD_SC) @@ -159,7 +159,7 @@ * * There are 6 PWMS. Each PWM can be assigned to one of two pins. * - * PWM1.1 P0_18 LCD_PINS_ENABLE + * PWM1.1 P0_18 LCD_PINS_EN * PWM1.1 P2_0 X_STEP_PIN * PWM1.2 P1_20 * PWM1.2 P2_1 Y_STEP_PIN diff --git a/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h b/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h index d5f1d0a296..914a944027 100644 --- a/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h +++ b/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h @@ -104,7 +104,7 @@ #define SD_DETECT_PIN P0_27 // EXP2-7 #define LCD_PINS_RS P0_16 // EXP1-4 - #define LCD_PINS_ENABLE P0_18 // (MOSI) EXP1-3 + #define LCD_PINS_EN P0_18 // (MOSI) EXP1-3 #define LCD_PINS_D4 P0_15 // (SCK) EXP1-5 #if BOTH(HAS_MARLINUI_HD44780, IS_RRD_SC) @@ -138,7 +138,7 @@ * * There are 6 PWMS. Each PWM can be assigned to one of two pins. * - * PWM1.1 P0_18 LCD_PINS_ENABLE + * PWM1.1 P0_18 LCD_PINS_EN * PWM1.1 P2_0 X_STEP_PIN * PWM1.2 P1_20 * PWM1.2 P2_1 Y_STEP_PIN diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h index d1ea2c0197..aa3c15443e 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_1.h @@ -112,7 +112,7 @@ #define LCD_SDSS EXP2_04_PIN #define LCD_PINS_RS EXP1_04_PIN - #define LCD_PINS_ENABLE EXP2_06_PIN + #define LCD_PINS_EN EXP2_06_PIN #define LCD_PINS_D4 EXP2_02_PIN #if ENABLED(MKS_MINI_12864) diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h index aafc8d3f9f..90a2ef8afc 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h @@ -254,7 +254,7 @@ #define BTN_EN2 EXP1_07_PIN #define BTN_ENC EXP1_03_PIN - #define LCD_PINS_ENABLE EXP1_06_PIN + #define LCD_PINS_EN EXP1_06_PIN #define LCD_PINS_D4 EXP1_04_PIN #elif ENABLED(WYH_L12864) @@ -299,7 +299,7 @@ #define BTN_EN2 EXP1_05_PIN #define BTN_ENC EXP1_02_PIN // (58) open-drain - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif HAS_ADC_BUTTONS @@ -385,7 +385,7 @@ #define BTN_EN2 EXP2_05_PIN // (33) J3-4 & AUX-4 #define BTN_ENC EXP1_02_PIN // (58) open-drain - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #define LCD_SDSS EXP2_04_PIN // (16) J3-7 & AUX-4 diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h index b4fafbf7a4..41190e644f 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h @@ -316,7 +316,7 @@ #define BTN_EN2 EXP1_07_PIN #define BTN_ENC EXP1_01_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #define BEEPER_PIN EXP1_08_PIN @@ -352,7 +352,7 @@ #define BTN_EN2 EXP1_07_PIN #define BTN_ENC EXP1_03_PIN - #define LCD_PINS_ENABLE EXP1_06_PIN + #define LCD_PINS_EN EXP1_06_PIN #define LCD_PINS_D4 EXP1_04_PIN #define BEEPER_PIN EXP1_01_PIN @@ -364,7 +364,7 @@ #define BTN_EN2 EXP1_05_PIN #define BTN_ENC EXP1_02_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(ENDER2_STOCKDISPLAY) @@ -429,7 +429,7 @@ #define BTN_EN1 EXP2_03_PIN // (31) J3-2 & AUX-4 #define BTN_EN2 EXP2_05_PIN // (33) J3-4 & AUX-4 - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #define LCD_SDSS EXP2_04_PIN // (16) J3-7 & AUX-4 diff --git a/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h b/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h index 63760d962b..92c405b267 100644 --- a/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h +++ b/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h @@ -141,7 +141,7 @@ #define BTN_EN2 P1_24 #define BTN_ENC P1_25 #define LCD_PINS_RS P0_20 - #define LCD_PINS_ENABLE P0_21 + #define LCD_PINS_EN P0_21 #define LCD_PINS_D4 P2_11 #define LCD_PINS_D5 P0_22 #define LCD_PINS_D6 P1_29 diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h index 9218bb168d..09a3075301 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h @@ -238,7 +238,7 @@ #define BTN_EN2 P3_25 // EXP2.3 #define LCD_PINS_RS P0_16 // EXP1.4 #define LCD_SDSS P0_28 // EXP2.4 - #define LCD_PINS_ENABLE P0_18 // EXP1.3 + #define LCD_PINS_EN P0_18 // EXP1.3 #define LCD_PINS_D4 P0_15 // EXP1.5 #if EITHER(VIKI2, miniVIKI) #define DOGLCD_SCK SD_SCK_PIN @@ -257,8 +257,8 @@ * Pins 6, 7 & 8 on EXP2 are no connects. That means a second special * cable will be needed if the RGB LEDs are to be active. */ - #define DOGLCD_CS LCD_PINS_ENABLE // EXP1.3 (LCD_EN on FYSETC schematic) - #define DOGLCD_A0 LCD_PINS_RS // EXP1.4 (LCD_A0 on FYSETC schematic) + #define DOGLCD_CS P0_18 // EXP1.3 (LCD_EN on FYSETC schematic) + #define DOGLCD_A0 P0_16 // EXP1.4 (LCD_A0 on FYSETC schematic) #define DOGLCD_SCK P2_11 // J8-5 (SCK on FYSETC schematic) #define DOGLCD_MOSI P4_28 // J8-6 (MOSI on FYSETC schematic) diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h index 155d53c780..0994b20a0c 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h @@ -287,7 +287,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif HAS_SPI_TFT // Config for Classic UI (emulated DOGM) and Color UI @@ -306,7 +306,7 @@ #define TOUCH_BUTTONS_HW_SPI_DEVICE 2 // Disable any LCD related PINs config - #define LCD_PINS_ENABLE -1 + #define LCD_PINS_EN -1 #define LCD_PINS_RS -1 #ifndef TFT_BUFFER_SIZE @@ -351,7 +351,7 @@ #define LCD_PINS_RS EXP1_04_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h index b9edef8678..6639053d5e 100644 --- a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h +++ b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h @@ -301,7 +301,7 @@ #define BTN_ENC P3_25 // J3-4 & AUX-4 #define LCD_PINS_RS P0_15 // J3-9 & AUX-4 (CS) - #define LCD_PINS_ENABLE P0_18 // J3-10 & AUX-3 (SID, MOSI) + #define LCD_PINS_EN P0_18 // J3-10 & AUX-3 (SID, MOSI) #define LCD_PINS_D4 P2_06 // J3-8 & AUX-3 (SCK, CLK) #elif ENABLED(ZONESTAR_LCD) @@ -394,7 +394,7 @@ #endif #define LCD_BACKLIGHT_PIN P0_16 //(16) J3-7 & AUX-4 - only used on DOGLCD controllers - #define LCD_PINS_ENABLE P0_18 // (51) (MOSI) J3-10 & AUX-3 + #define LCD_PINS_EN P0_18 // (51) (MOSI) J3-10 & AUX-3 #define LCD_PINS_D4 P0_15 // (52) (SCK) J3-9 & AUX-3 #if IS_ULTIPANEL #define LCD_PINS_D5 P1_17 // (71) ENET_MDIO diff --git a/Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h b/Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h index 996cb52c6c..16858c0b56 100644 --- a/Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h +++ b/Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h @@ -98,7 +98,7 @@ #if IS_RRD_FG_SC #define LCD_PINS_RS P0_16 - #define LCD_PINS_ENABLE P0_18 + #define LCD_PINS_EN P0_18 #define LCD_PINS_D4 P0_15 #define LCD_PINS_D5 P1_00 #define LCD_PINS_D6 P1_01 diff --git a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h index 9dfb80772f..5899cb0f50 100644 --- a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h +++ b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h @@ -108,7 +108,6 @@ // // Display // - #if EITHER(VIKI2, miniVIKI) #define BEEPER_PIN P1_31 #define DOGLCD_A0 P2_06 diff --git a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h index 2d96194db5..1a8192bafe 100644 --- a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h +++ b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h @@ -128,7 +128,7 @@ #define BTN_ENC P3_25 // J3-4 & AUX-4 #define LCD_PINS_RS P0_15 // J3-9 & AUX-4 (CS) - #define LCD_PINS_ENABLE P0_18 // J3-10 & AUX-3 (SID, MOSI) + #define LCD_PINS_EN P0_18 // J3-10 & AUX-3 (SID, MOSI) #define LCD_PINS_D4 P2_06 // J3-8 & AUX-3 (SCK, CLK) #else @@ -142,7 +142,7 @@ #define LCD_PINS_RS P0_16 // (16) J3-7 & AUX-4 #define LCD_SDSS P0_16 // (16) J3-7 & AUX-4 #define LCD_BACKLIGHT_PIN P0_16 // (16) J3-7 & AUX-4 - only used on DOGLCD controllers - #define LCD_PINS_ENABLE P0_18 // (51) (MOSI) J3-10 & AUX-3 + #define LCD_PINS_EN P0_18 // (51) (MOSI) J3-10 & AUX-3 #define LCD_PINS_D4 P0_15 // (52) (SCK) J3-9 & AUX-3 #define DOGLCD_A0 P2_06 // (59) J3-8 & AUX-2 diff --git a/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h b/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h index f8187babd3..3793f65bfa 100644 --- a/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h +++ b/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h @@ -237,7 +237,7 @@ #define BTN_ENC EXP1_02_PIN #define LCD_PINS_RS EXP1_07_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(ZONESTAR_LCD) // ANET A8 LCD Controller - Must convert to 3.3V - CONNECTING TO 5V WILL DAMAGE THE BOARD! @@ -247,7 +247,7 @@ #endif #define LCD_PINS_RS EXP1_06_PIN - #define LCD_PINS_ENABLE EXP1_02_PIN + #define LCD_PINS_EN EXP1_02_PIN #define LCD_PINS_D4 EXP1_07_PIN #define LCD_PINS_D5 EXP1_05_PIN #define LCD_PINS_D6 EXP1_03_PIN diff --git a/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h b/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h index fa389f4924..6747a7c2bf 100644 --- a/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h +++ b/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h @@ -149,7 +149,7 @@ #define LCD_PINS_RS P0_16 // EXP1-4 #define LCD_SDSS P0_28 // EXP2-4 - #define LCD_PINS_ENABLE P0_18 // EXP1-3 + #define LCD_PINS_EN P0_18 // EXP1-3 #define LCD_PINS_D4 P0_15 // EXP1-5 #define KILL_PIN P2_11 // EXP2-10 diff --git a/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h b/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h index 2d44a3859b..4dc275eee7 100644 --- a/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h +++ b/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h @@ -215,7 +215,7 @@ #define LCD_PINS_RS P0_16 // EXP1-4 #define LCD_SDSS P0_28 // EXP2-4 - #define LCD_PINS_ENABLE P0_18 // EXP1-3 + #define LCD_PINS_EN P0_18 // EXP1-3 #define LCD_PINS_D4 P0_15 // EXP1-5 #define KILL_PIN P2_11 // EXP2-10 diff --git a/Marlin/src/pins/lpc1769/pins_FLY_CDY.h b/Marlin/src/pins/lpc1769/pins_FLY_CDY.h index 796df12e75..fb768ed46a 100644 --- a/Marlin/src/pins/lpc1769/pins_FLY_CDY.h +++ b/Marlin/src/pins/lpc1769/pins_FLY_CDY.h @@ -155,7 +155,7 @@ // #define BEEPER_PIN P2_07 #define LCD_PINS_RS P2_10 -#define LCD_PINS_ENABLE P0_22 +#define LCD_PINS_EN P0_22 #define LCD_PINS_D4 P1_19 #define LCD_PINS_D5 P2_08 #define LCD_PINS_D6 P1_30 diff --git a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h index f49aae0c45..51a8f601ee 100644 --- a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h +++ b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h @@ -316,7 +316,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #else @@ -355,7 +355,7 @@ #define TOUCH_BUTTONS_HW_SPI_DEVICE 2 // Disable any LCD related PINs config - #define LCD_PINS_ENABLE -1 + #define LCD_PINS_EN -1 #define LCD_PINS_RS -1 #ifndef TFT_BUFFER_SIZE @@ -369,7 +369,7 @@ #define LCD_PINS_RS EXP1_04_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h b/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h index c8526611d0..3e7e784b59 100644 --- a/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h +++ b/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h @@ -142,7 +142,7 @@ // EXP1 Pins #define BEEPER_PIN P1_31 // EXP1 Pin 1 #define BTN_ENC P1_30 // EXP1 Pin 2 - #define LCD_PINS_ENABLE P0_18 // EXP1 Pin 3 (MOSI) + #define LCD_PINS_EN P0_18 // EXP1 Pin 3 (MOSI) #define LCD_PINS_RS P0_16 // EXP1 Pin 4 (CS) #define LCD_PINS_D4 P0_15 // EXP1 Pin 5 (SCK) // EXP2 Pins diff --git a/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h b/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h index 8ad3cd2821..a55b9fb646 100644 --- a/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h +++ b/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h @@ -185,7 +185,7 @@ */ #define BEEPER_PIN EXP1_01_PIN #define LCD_PINS_RS EXP1_07_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #define KILL_PIN EXP1_04_PIN diff --git a/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h b/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h index 92c5a6f123..4c8dd5c42a 100644 --- a/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h +++ b/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h @@ -113,7 +113,7 @@ // LCD / Controller // #define LCD_PINS_RS 19 -#define LCD_PINS_ENABLE 42 +#define LCD_PINS_EN 42 #define LCD_PINS_D4 18 #define LCD_PINS_D5 38 #define LCD_PINS_D6 41 diff --git a/Marlin/src/pins/mega/pins_GT2560_REV_A.h b/Marlin/src/pins/mega/pins_GT2560_REV_A.h index 99e2031706..61c61f94ff 100644 --- a/Marlin/src/pins/mega/pins_GT2560_REV_A.h +++ b/Marlin/src/pins/mega/pins_GT2560_REV_A.h @@ -135,7 +135,7 @@ #define LCD_BACKLIGHT_PIN -1 #else #define LCD_PINS_RS 20 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 16 #define LCD_PINS_D5 21 #define LCD_PINS_D6 5 @@ -155,7 +155,7 @@ #define SHIFT_EN_PIN 17 #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 5 + #define LCD_PINS_EN 5 #define LCD_PINS_D4 6 #define LCD_PINS_D5 21 #define LCD_PINS_D6 20 diff --git a/Marlin/src/pins/mega/pins_GT2560_V3.h b/Marlin/src/pins/mega/pins_GT2560_V3.h index e4e51c30b3..b04962bbb3 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V3.h +++ b/Marlin/src/pins/mega/pins_GT2560_V3.h @@ -180,8 +180,8 @@ #ifndef LCD_PINS_RS #define LCD_PINS_RS 20 #endif - #ifndef LCD_PINS_ENABLE - #define LCD_PINS_ENABLE 17 + #ifndef LCD_PINS_EN + #define LCD_PINS_EN 17 #endif #ifndef LCD_PINS_D4 #define LCD_PINS_D4 16 diff --git a/Marlin/src/pins/mega/pins_GT2560_V3_A20.h b/Marlin/src/pins/mega/pins_GT2560_V3_A20.h index 628f897b0c..772a45a918 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V3_A20.h +++ b/Marlin/src/pins/mega/pins_GT2560_V3_A20.h @@ -27,7 +27,7 @@ */ #define LCD_PINS_RS 5 -#define LCD_PINS_ENABLE 36 +#define LCD_PINS_EN 36 #define LCD_PINS_D4 21 #define LCD_PINS_D7 6 diff --git a/Marlin/src/pins/mega/pins_GT2560_V4_A20.h b/Marlin/src/pins/mega/pins_GT2560_V4_A20.h index 8ca2d44db9..3b3a80caa8 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V4_A20.h +++ b/Marlin/src/pins/mega/pins_GT2560_V4_A20.h @@ -29,7 +29,7 @@ #define BOARD_INFO_NAME "GT2560 4.x" #define LCD_PINS_RS 5 -#define LCD_PINS_ENABLE 36 +#define LCD_PINS_EN 36 #define LCD_PINS_D4 21 #define LCD_PINS_D7 6 diff --git a/Marlin/src/pins/mega/pins_HJC2560C_REV2.h b/Marlin/src/pins/mega/pins_HJC2560C_REV2.h index ea197e50db..79eef14366 100644 --- a/Marlin/src/pins/mega/pins_HJC2560C_REV2.h +++ b/Marlin/src/pins/mega/pins_HJC2560C_REV2.h @@ -129,7 +129,7 @@ #if IS_NEWPANEL #define LCD_PINS_RS 20 // LCD_CS - #define LCD_PINS_ENABLE 15 // LCD_SDA + #define LCD_PINS_EN 15 // LCD_SDA #define LCD_PINS_D4 14 // LCD_SCK #if ENABLED(HJC_LCD_SMART_CONTROLLER) @@ -161,7 +161,7 @@ #define SHIFT_EN_PIN 17 #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 5 + #define LCD_PINS_EN 5 #define LCD_PINS_D4 6 #define LCD_PINS_D5 21 #define LCD_PINS_D6 20 diff --git a/Marlin/src/pins/mega/pins_INTAMSYS40.h b/Marlin/src/pins/mega/pins_INTAMSYS40.h index 903849a140..6b82965065 100644 --- a/Marlin/src/pins/mega/pins_INTAMSYS40.h +++ b/Marlin/src/pins/mega/pins_INTAMSYS40.h @@ -123,7 +123,7 @@ #if HAS_WIRED_LCD #define LCD_PINS_RS 20 - #define LCD_PINS_ENABLE 30 + #define LCD_PINS_EN 30 #define LCD_PINS_D4 14 #define LCD_PINS_D5 21 #define LCD_PINS_D6 5 diff --git a/Marlin/src/pins/mega/pins_MEGATRONICS.h b/Marlin/src/pins/mega/pins_MEGATRONICS.h index b038c9935c..0e2ac291b2 100644 --- a/Marlin/src/pins/mega/pins_MEGATRONICS.h +++ b/Marlin/src/pins/mega/pins_MEGATRONICS.h @@ -112,7 +112,7 @@ #if HAS_WIRED_LCD && IS_NEWPANEL #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 23 #define LCD_PINS_D5 25 #define LCD_PINS_D6 27 diff --git a/Marlin/src/pins/mega/pins_MEGATRONICS_2.h b/Marlin/src/pins/mega/pins_MEGATRONICS_2.h index 5ebcbefe08..d6840de8d0 100644 --- a/Marlin/src/pins/mega/pins_MEGATRONICS_2.h +++ b/Marlin/src/pins/mega/pins_MEGATRONICS_2.h @@ -134,7 +134,7 @@ #if HAS_WIRED_LCD #define LCD_PINS_RS 14 - #define LCD_PINS_ENABLE 15 + #define LCD_PINS_EN 15 #define LCD_PINS_D4 30 #define LCD_PINS_D5 31 #define LCD_PINS_D6 32 diff --git a/Marlin/src/pins/mega/pins_MEGATRONICS_3.h b/Marlin/src/pins/mega/pins_MEGATRONICS_3.h index b3edfc5e17..5e571d5a3f 100644 --- a/Marlin/src/pins/mega/pins_MEGATRONICS_3.h +++ b/Marlin/src/pins/mega/pins_MEGATRONICS_3.h @@ -155,14 +155,14 @@ #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) #define LCD_PINS_RS 56 // CS chip select / SS chip slave select - #define LCD_PINS_ENABLE 51 // SID (MOSI) + #define LCD_PINS_EN 51 // SID (MOSI) #define LCD_PINS_D4 52 // SCK (CLK) clock #define SD_DETECT_PIN 35 #else #define LCD_PINS_RS 32 - #define LCD_PINS_ENABLE 31 + #define LCD_PINS_EN 31 #define LCD_PINS_D4 14 #define LCD_PINS_D5 30 #define LCD_PINS_D6 39 diff --git a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h index 0a1553c64e..e9a0ddc09d 100644 --- a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h +++ b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h @@ -192,7 +192,7 @@ #if IS_RRD_FG_SC #define LCD_PINS_RS 33 // C4: LCD-STROBE - #define LCD_PINS_ENABLE 72 // J2: LEFT + #define LCD_PINS_EN 72 // J2: LEFT #define LCD_PINS_D4 35 // C2: LCD-CLK #define LCD_PINS_D5 32 // C5: RLED #define LCD_PINS_D6 34 // C3: LCD-DATA diff --git a/Marlin/src/pins/mega/pins_MINITRONICS.h b/Marlin/src/pins/mega/pins_MINITRONICS.h index 5145cb496d..6d0309c4c1 100644 --- a/Marlin/src/pins/mega/pins_MINITRONICS.h +++ b/Marlin/src/pins/mega/pins_MINITRONICS.h @@ -108,7 +108,7 @@ #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) #define LCD_PINS_RS 15 // CS chip select /SS chip slave select - #define LCD_PINS_ENABLE 11 // SID (MOSI) + #define LCD_PINS_EN 11 // SID (MOSI) #define LCD_PINS_D4 10 // SCK (CLK) clock #define BTN_EN1 18 @@ -120,7 +120,7 @@ #else #define LCD_PINS_RS -1 - #define LCD_PINS_ENABLE -1 + #define LCD_PINS_EN -1 // Buttons are directly attached using keypad #define BTN_EN1 -1 diff --git a/Marlin/src/pins/mega/pins_OVERLORD.h b/Marlin/src/pins/mega/pins_OVERLORD.h index 3bccbbc741..1ae9e69af0 100644 --- a/Marlin/src/pins/mega/pins_OVERLORD.h +++ b/Marlin/src/pins/mega/pins_OVERLORD.h @@ -126,7 +126,7 @@ // OVERLORD OLED pins #define LCD_PINS_RS 20 #define LCD_PINS_D5 21 - #define LCD_PINS_ENABLE 15 + #define LCD_PINS_EN 15 #define LCD_PINS_D4 14 #define LCD_PINS_D6 5 #define LCD_PINS_D7 6 diff --git a/Marlin/src/pins/mega/pins_PICA.h b/Marlin/src/pins/mega/pins_PICA.h index 3926978e6d..d9f4a858da 100644 --- a/Marlin/src/pins/mega/pins_PICA.h +++ b/Marlin/src/pins/mega/pins_PICA.h @@ -142,7 +142,7 @@ #if HAS_WIRED_LCD #define LCD_PINS_RS 33 - #define LCD_PINS_ENABLE 30 + #define LCD_PINS_EN 30 #define LCD_PINS_D4 35 #define LCD_PINS_D5 32 #define LCD_PINS_D6 37 diff --git a/Marlin/src/pins/mega/pins_SILVER_GATE.h b/Marlin/src/pins/mega/pins_SILVER_GATE.h index dd26a2714c..d739157aaf 100644 --- a/Marlin/src/pins/mega/pins_SILVER_GATE.h +++ b/Marlin/src/pins/mega/pins_SILVER_GATE.h @@ -77,7 +77,7 @@ #if HAS_WIRED_LCD #if IS_U8GLIB_ST7920 // SPI GLCD 12864 ST7920 #define LCD_PINS_RS 30 - #define LCD_PINS_ENABLE 20 + #define LCD_PINS_EN 20 #define LCD_PINS_D4 25 #define BEEPER_PIN 29 #define BTN_EN1 19 diff --git a/Marlin/src/pins/pinsDebug_list.h b/Marlin/src/pins/pinsDebug_list.h index 16dd2a0c45..fa6cbf49b9 100644 --- a/Marlin/src/pins/pinsDebug_list.h +++ b/Marlin/src/pins/pinsDebug_list.h @@ -929,8 +929,8 @@ #if _EXISTS(LCD_PINS_D7) REPORT_NAME_DIGITAL(__LINE__, LCD_PINS_D7) #endif -#if _EXISTS(LCD_PINS_ENABLE) - REPORT_NAME_DIGITAL(__LINE__, LCD_PINS_ENABLE) +#if _EXISTS(LCD_PINS_EN) + REPORT_NAME_DIGITAL(__LINE__, LCD_PINS_EN) #endif #if _EXISTS(LCD_PINS_RS) REPORT_NAME_DIGITAL(__LINE__, LCD_PINS_RS) diff --git a/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h index be1af14bb1..ced9c722f4 100644 --- a/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h +++ b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h @@ -211,13 +211,13 @@ #if ENABLED(CR10_STOCKDISPLAY) #define LCD_PINS_RS EXP1_07_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN #else #define LCD_PINS_RS EXP1_04_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #define LCD_PINS_D5 EXP1_06_PIN #define LCD_PINS_D6 EXP1_07_PIN diff --git a/Marlin/src/pins/rambo/pins_EINSY_RETRO.h b/Marlin/src/pins/rambo/pins_EINSY_RETRO.h index 315a17ee03..10736d34a9 100644 --- a/Marlin/src/pins/rambo/pins_EINSY_RETRO.h +++ b/Marlin/src/pins/rambo/pins_EINSY_RETRO.h @@ -178,13 +178,13 @@ #if ENABLED(CR10_STOCKDISPLAY) #define LCD_PINS_RS 85 - #define LCD_PINS_ENABLE 71 + #define LCD_PINS_EN 71 #define LCD_PINS_D4 70 #define BTN_EN1 18 #define BTN_EN2 19 #else #define LCD_PINS_RS 82 - #define LCD_PINS_ENABLE 18 // On 0.6b, use 61 + #define LCD_PINS_EN 18 // On 0.6b, use 61 #define LCD_PINS_D4 19 // On 0.6b, use 59 #define LCD_PINS_D5 70 #define LCD_PINS_D6 85 diff --git a/Marlin/src/pins/rambo/pins_MINIRAMBO.h b/Marlin/src/pins/rambo/pins_MINIRAMBO.h index da55c1ec07..6e1a460838 100644 --- a/Marlin/src/pins/rambo/pins_MINIRAMBO.h +++ b/Marlin/src/pins/rambo/pins_MINIRAMBO.h @@ -162,7 +162,7 @@ #define BTN_ENC 21 #define LCD_PINS_RS 38 - #define LCD_PINS_ENABLE 5 + #define LCD_PINS_EN 5 #define LCD_PINS_D4 14 #define LCD_PINS_D5 15 #define LCD_PINS_D6 32 @@ -181,7 +181,7 @@ #define BTN_ENC 9 #define LCD_PINS_RS 82 - #define LCD_PINS_ENABLE 18 + #define LCD_PINS_EN 18 #define LCD_PINS_D4 19 #define LCD_PINS_D5 70 #define LCD_PINS_D6 85 diff --git a/Marlin/src/pins/rambo/pins_RAMBO.h b/Marlin/src/pins/rambo/pins_RAMBO.h index 7c70c7c753..1e9b9938a5 100644 --- a/Marlin/src/pins/rambo/pins_RAMBO.h +++ b/Marlin/src/pins/rambo/pins_RAMBO.h @@ -204,7 +204,7 @@ #if IS_ULTIPANEL || TOUCH_UI_ULTIPANEL #define LCD_PINS_RS 70 - #define LCD_PINS_ENABLE 71 + #define LCD_PINS_EN 71 #define LCD_PINS_D4 72 #define LCD_PINS_D5 73 #define LCD_PINS_D6 74 @@ -264,7 +264,7 @@ //#define SHIFT_EN_PIN 17 #define LCD_PINS_RS 75 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 23 #define LCD_PINS_D5 25 #define LCD_PINS_D6 27 diff --git a/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h b/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h index 2230eaa35b..f0e107f398 100644 --- a/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h +++ b/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h @@ -126,7 +126,7 @@ // LCD / Controller // #define LCD_PINS_RS 70 // Ext2_5 -#define LCD_PINS_ENABLE 71 // Ext2_7 +#define LCD_PINS_EN 71 // Ext2_7 #define LCD_PINS_D4 72 // Ext2_9 ? #define LCD_PINS_D5 73 // Ext2_11 ? #define LCD_PINS_D6 74 // Ext2_13 diff --git a/Marlin/src/pins/ramps/pins_3DRAG.h b/Marlin/src/pins/ramps/pins_3DRAG.h index c14284865b..6f57b0eca6 100644 --- a/Marlin/src/pins/ramps/pins_3DRAG.h +++ b/Marlin/src/pins/ramps/pins_3DRAG.h @@ -136,7 +136,7 @@ // TODO: Remap EXP1/2 based on adapter #define LCD_PINS_RS 27 - #define LCD_PINS_ENABLE 29 + #define LCD_PINS_EN 29 #define LCD_PINS_D4 37 #define LCD_PINS_D5 35 #define LCD_PINS_D6 33 diff --git a/Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h b/Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h index a147eba9fd..90f46fe386 100644 --- a/Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h +++ b/Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h @@ -90,7 +90,7 @@ #if HAS_WIRED_LCD #if ENABLED(ZONESTAR_LCD) #define LCD_PINS_RS 2 - #define LCD_PINS_ENABLE 36 + #define LCD_PINS_EN 36 #define LCD_PINS_D4 37 #define LCD_PINS_D5 34 #define LCD_PINS_D6 35 diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h index f9e4517a11..b77c325029 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h @@ -174,7 +174,7 @@ #define SD_DETECT_PIN 49 #define KILL_PIN 41 #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 23 #define LCD_PINS_D5 25 #define LCD_PINS_D6 27 diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h b/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h index e671184a53..2d92306f89 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h @@ -175,7 +175,7 @@ #endif #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 23 #define LCD_PINS_D5 25 #define LCD_PINS_D6 27 diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h b/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h index 3babc257b4..d84a852915 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h @@ -164,7 +164,7 @@ // #if IS_RRD_SC #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 23 #define LCD_PINS_D5 25 #define LCD_PINS_D6 27 diff --git a/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h b/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h index 9cae3797c3..fa5bbb5b9e 100644 --- a/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h +++ b/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h @@ -266,7 +266,7 @@ #elif HAS_MARLINUI_U8GLIB || HAS_MARLINUI_HD44780 #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 23 #define LCD_PINS_D5 25 #define LCD_PINS_D6 27 diff --git a/Marlin/src/pins/ramps/pins_K8600.h b/Marlin/src/pins/ramps/pins_K8600.h index 2ffa8c6b10..eacaf95b38 100644 --- a/Marlin/src/pins/ramps/pins_K8600.h +++ b/Marlin/src/pins/ramps/pins_K8600.h @@ -63,7 +63,7 @@ #if HAS_WIRED_LCD && IS_NEWPANEL #define LCD_PINS_RS 27 - #define LCD_PINS_ENABLE 29 + #define LCD_PINS_EN 29 #define LCD_PINS_D4 37 #define LCD_PINS_D5 35 #define LCD_PINS_D6 33 diff --git a/Marlin/src/pins/ramps/pins_K8800.h b/Marlin/src/pins/ramps/pins_K8800.h index 6c4fa1cc7c..826e1b206a 100644 --- a/Marlin/src/pins/ramps/pins_K8800.h +++ b/Marlin/src/pins/ramps/pins_K8800.h @@ -102,7 +102,7 @@ #define DOGLCD_A0 27 #define LCD_PINS_RS 27 - #define LCD_PINS_ENABLE 29 + #define LCD_PINS_EN 29 #define LCD_PINS_D4 37 #define LCD_PINS_D5 35 #define LCD_PINS_D6 33 diff --git a/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h b/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h index d9759153c3..89da25d074 100644 --- a/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h +++ b/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h @@ -128,19 +128,19 @@ // ------------------ ---------------- --------------- ------------- #if BOTH(CR10_STOCKDISPLAY, LONGER_LK5) - /** CR-10 Stock Display - * ------ - * GND | 9 10 | 5V - * LCD_PINS_RS D5 | 7 8 | D4 LCD_PINS_ENABLE - * BTN_EN2 D19 | 5 6 D6 LCD_PINS_D4 - * BTN_EN1 D18 | 3 4 | GND - * BEEPER_PIN D11 | 1 2 | D15 BTN_ENC - * ------ + /** CR-10 Stock Display + * ------ + * BEEPER D11 | 1 2 | D15 ENC + * EN1 D18 | 3 4 | GND + * EN2 D19 5 6 | D6 LCD_D4 + * LCD_RS D5 | 7 8 | D4 LCD_ENABLE + * GND | 9 10 | 5V + * ------ * Connected via provided custom cable to: * Aux-1, J21, J17 and Y-Max. */ #define LCD_PINS_RS 5 - #define LCD_PINS_ENABLE 4 + #define LCD_PINS_EN 4 #define LCD_PINS_D4 6 #define BTN_EN1 18 #define BTN_EN2 19 diff --git a/Marlin/src/pins/ramps/pins_ORTUR_4.h b/Marlin/src/pins/ramps/pins_ORTUR_4.h index 7f0fe93084..d2adf9971c 100644 --- a/Marlin/src/pins/ramps/pins_ORTUR_4.h +++ b/Marlin/src/pins/ramps/pins_ORTUR_4.h @@ -83,7 +83,7 @@ #define BEEPER_PIN 35 #define LCD_PINS_RS 27 - #define LCD_PINS_ENABLE 23 + #define LCD_PINS_EN 23 #define LCD_PINS_D4 37 #define LCD_SDSS 53 diff --git a/Marlin/src/pins/ramps/pins_RAMPS.h b/Marlin/src/pins/ramps/pins_RAMPS.h index 58b9b78648..4541aefacb 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS.h +++ b/Marlin/src/pins/ramps/pins_RAMPS.h @@ -594,13 +594,13 @@ #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) #define LCD_PINS_RS EXP2_07_PIN // CS chip select /SS chip slave select - #define LCD_PINS_ENABLE EXP2_06_PIN // SID (MOSI) + #define LCD_PINS_EN EXP2_06_PIN // SID (MOSI) #define LCD_PINS_D4 EXP2_02_PIN // SCK (CLK) clock #elif BOTH(IS_NEWPANEL, PANEL_ONE) #define LCD_PINS_RS AUX2_06_PIN - #define LCD_PINS_ENABLE AUX2_08_PIN + #define LCD_PINS_EN AUX2_08_PIN #define LCD_PINS_D4 AUX2_10_PIN #define LCD_PINS_D5 AUX2_09_PIN #define LCD_PINS_D6 AUX2_07_PIN @@ -615,7 +615,7 @@ #if ENABLED(CR10_STOCKDISPLAY) #define LCD_PINS_RS EXP1_07_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #if !IS_NEWPANEL @@ -629,7 +629,7 @@ #endif #define LCD_PINS_RS AUX2_05_PIN - #define LCD_PINS_ENABLE AUX2_07_PIN + #define LCD_PINS_EN AUX2_07_PIN #define LCD_PINS_D4 AUX2_04_PIN #define LCD_PINS_D5 AUX2_06_PIN #define LCD_PINS_D6 AUX2_08_PIN @@ -651,7 +651,7 @@ #define DOGLCD_SCK EXP1_05_PIN #else #define LCD_PINS_RS EXP1_04_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #define LCD_PINS_D5 EXP1_06_PIN #define LCD_PINS_D6 EXP1_07_PIN diff --git a/Marlin/src/pins/ramps/pins_RAMPS_S_12.h b/Marlin/src/pins/ramps/pins_RAMPS_S_12.h index bb1e276416..87535a7de8 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_S_12.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_S_12.h @@ -254,7 +254,7 @@ #if HAS_WIRED_LCD #define BEEPER_PIN 45 #define LCD_PINS_RS 19 - #define LCD_PINS_ENABLE 49 + #define LCD_PINS_EN 49 #define LCD_PINS_D4 18 #define LCD_PINS_D5 30 #define LCD_PINS_D6 41 diff --git a/Marlin/src/pins/ramps/pins_RUMBA.h b/Marlin/src/pins/ramps/pins_RUMBA.h index 3c6873e765..258b9ccca6 100644 --- a/Marlin/src/pins/ramps/pins_RUMBA.h +++ b/Marlin/src/pins/ramps/pins_RUMBA.h @@ -228,7 +228,7 @@ #else #define LCD_PINS_RS 19 - #define LCD_PINS_ENABLE 42 + #define LCD_PINS_EN 42 #define LCD_PINS_D4 18 #define LCD_PINS_D5 38 #define LCD_PINS_D6 41 diff --git a/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h b/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h index a00720b576..dd9cafc306 100644 --- a/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h +++ b/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h @@ -169,7 +169,7 @@ //#if IS_RRD_SC #define LCD_PINS_RS -1 -#define LCD_PINS_ENABLE -1 +#define LCD_PINS_EN -1 #define LCD_PINS_D4 -1 #define LCD_PINS_D5 -1 #define LCD_PINS_D6 -1 diff --git a/Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h b/Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h index 0cf6e3b18b..1197874d71 100644 --- a/Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h +++ b/Marlin/src/pins/ramps/pins_TENLOG_MB1_V23.h @@ -139,7 +139,7 @@ //#endif #define LCD_PINS_RS -1 -#define LCD_PINS_ENABLE -1 +#define LCD_PINS_EN -1 #define LCD_PINS_D4 -1 #define LCD_PINS_D5 -1 #define LCD_PINS_D6 -1 diff --git a/Marlin/src/pins/ramps/pins_TT_OSCAR.h b/Marlin/src/pins/ramps/pins_TT_OSCAR.h index 5150ad55b6..56ebf2c663 100644 --- a/Marlin/src/pins/ramps/pins_TT_OSCAR.h +++ b/Marlin/src/pins/ramps/pins_TT_OSCAR.h @@ -276,13 +276,13 @@ #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) #define LCD_PINS_RS 49 // CS chip select /SS chip slave select - #define LCD_PINS_ENABLE 51 // SID (MOSI) + #define LCD_PINS_EN 51 // SID (MOSI) #define LCD_PINS_D4 52 // SCK (CLK) clock #elif BOTH(IS_NEWPANEL, PANEL_ONE) #define LCD_PINS_RS 40 - #define LCD_PINS_ENABLE 42 + #define LCD_PINS_EN 42 #define LCD_PINS_D4 65 #define LCD_PINS_D5 66 #define LCD_PINS_D6 44 @@ -291,7 +291,7 @@ #elif ENABLED(ZONESTAR_LCD) #define LCD_PINS_RS 64 - #define LCD_PINS_ENABLE 44 + #define LCD_PINS_EN 44 #define LCD_PINS_D4 63 #define LCD_PINS_D5 40 #define LCD_PINS_D6 42 @@ -303,7 +303,7 @@ #if ENABLED(CR10_STOCKDISPLAY) #define LCD_PINS_RS 27 - #define LCD_PINS_ENABLE 29 + #define LCD_PINS_EN 29 #define LCD_PINS_D4 25 #if !IS_NEWPANEL @@ -322,7 +322,7 @@ #define DOGLCD_A0 LCD_PINS_DC #else #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 23 #define LCD_PINS_D5 25 #define LCD_PINS_D6 27 diff --git a/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h b/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h index 16400be059..dc06963289 100644 --- a/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h +++ b/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h @@ -135,7 +135,7 @@ #define BEEPER_PIN 18 #define LCD_PINS_RS 20 -#define LCD_PINS_ENABLE 15 +#define LCD_PINS_EN 15 #define LCD_PINS_D4 14 #define LCD_PINS_D5 21 #define LCD_PINS_D6 5 diff --git a/Marlin/src/pins/ramps/pins_ULTIMAKER.h b/Marlin/src/pins/ramps/pins_ULTIMAKER.h index c29318c372..c822a62faf 100644 --- a/Marlin/src/pins/ramps/pins_ULTIMAKER.h +++ b/Marlin/src/pins/ramps/pins_ULTIMAKER.h @@ -125,7 +125,7 @@ #if IS_NEWPANEL #define LCD_PINS_RS 20 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 16 #define LCD_PINS_D5 21 #define LCD_PINS_D6 5 @@ -147,7 +147,7 @@ #define SHIFT_EN_PIN 17 #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 5 + #define LCD_PINS_EN 5 #define LCD_PINS_D4 6 #define LCD_PINS_D5 21 #define LCD_PINS_D6 20 diff --git a/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h b/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h index 25cc278ada..5f5cb6cb12 100644 --- a/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h +++ b/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h @@ -169,7 +169,7 @@ #if EITHER(BOARD_REV_1_0, BOARD_REV_1_1_TO_1_3) #define LCD_PINS_RS 24 - #define LCD_PINS_ENABLE 22 + #define LCD_PINS_EN 22 #define LCD_PINS_D4 36 #define LCD_PINS_D5 34 #define LCD_PINS_D6 32 @@ -182,7 +182,7 @@ #if IS_NEWPANEL #define LCD_PINS_RS 20 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 16 #define LCD_PINS_D5 21 #define LCD_PINS_D6 5 @@ -204,7 +204,7 @@ #define SHIFT_EN_PIN 17 #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 5 + #define LCD_PINS_EN 5 #define LCD_PINS_D4 6 #define LCD_PINS_D5 21 #define LCD_PINS_D6 20 diff --git a/Marlin/src/pins/ramps/pins_ZRIB_V20.h b/Marlin/src/pins/ramps/pins_ZRIB_V20.h index 127fffa794..d1c80f6a4a 100644 --- a/Marlin/src/pins/ramps/pins_ZRIB_V20.h +++ b/Marlin/src/pins/ramps/pins_ZRIB_V20.h @@ -53,7 +53,7 @@ #if ENABLED(ZONESTAR_LCD) #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 23 #define LCD_PINS_D5 25 #define LCD_PINS_D6 27 diff --git a/Marlin/src/pins/ramps/pins_ZRIB_V53.h b/Marlin/src/pins/ramps/pins_ZRIB_V53.h index 74188190fe..2b8b583075 100644 --- a/Marlin/src/pins/ramps/pins_ZRIB_V53.h +++ b/Marlin/src/pins/ramps/pins_ZRIB_V53.h @@ -336,9 +336,9 @@ #if ENABLED(ZONESTAR_12864LCD) #define LCDSCREEN_NAME "ZONESTAR LCD12864" #define LCD_SDSS 16 - #define LCD_PINS_RS 16 // ST7920_CS_PIN LCD_PIN_RS (PIN4 of LCD module) - #define LCD_PINS_ENABLE 23 // ST7920_DAT_PIN LCD_PIN_R/W (PIN5 of LCD module) - #define LCD_PINS_D4 17 // ST7920_CLK_PIN LCD_PIN_ENABLE (PIN6 of LCD module) + #define LCD_PINS_RS 16 // ST7920_CS_PIN LCD_PIN_RS (PIN4 of LCD module) + #define LCD_PINS_EN 23 // ST7920_DAT_PIN LCD_PIN_R/W (PIN5 of LCD module) + #define LCD_PINS_D4 17 // ST7920_CLK_PIN LCD_PIN_ENA (PIN6 of LCD module) #define BTN_EN2 25 #define BTN_EN1 27 #define BTN_ENC 29 @@ -348,7 +348,7 @@ #define LCDSCREEN_NAME "Reprap LCD12864" // Use EXP1 & EXP2 connector #define LCD_PINS_RS 16 // ST7920_CS_PIN LCD_PIN_RS - #define LCD_PINS_ENABLE 17 // ST7920_DAT_PIN LCD_PIN_ENABLE + #define LCD_PINS_EN 17 // ST7920_DAT_PIN LCD_PIN_ENA #define LCD_PINS_D4 23 // ST7920_CLK_PIN LCD_PIN_R/W #define BTN_EN1 31 #define BTN_EN2 33 @@ -388,7 +388,7 @@ #if ENABLED(ZONESTAR_LCD) #define LCDSCREEN_NAME "LCD2004 ADCKEY" #define LCD_PINS_RS EXP1_04_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #define LCD_PINS_D5 EXP1_06_PIN #define LCD_PINS_D6 EXP1_07_PIN diff --git a/Marlin/src/pins/sam/pins_ADSK.h b/Marlin/src/pins/sam/pins_ADSK.h index 7e47f122f6..c264ffb50e 100644 --- a/Marlin/src/pins/sam/pins_ADSK.h +++ b/Marlin/src/pins/sam/pins_ADSK.h @@ -160,7 +160,7 @@ A stepper for E0 extruder // // LCD / Controller // - #define LCD_PINS_ENABLE 14 + #define LCD_PINS_EN 14 #define LCD_PINS_RS 15 #define LCD_PINS_D4 16 #define LCD_PINS_D5 17 diff --git a/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h b/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h index bdbea60150..87a1260c40 100644 --- a/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h +++ b/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h @@ -150,7 +150,7 @@ // #if IS_RRD_FG_SC #define LCD_PINS_RS 18 - #define LCD_PINS_ENABLE 15 + #define LCD_PINS_EN 15 #define LCD_PINS_D4 19 #define BEEPER_PIN 64 #undef UI_VOLTAGE_LEVEL diff --git a/Marlin/src/pins/sam/pins_ARCHIM1.h b/Marlin/src/pins/sam/pins_ARCHIM1.h index e01b93a018..a6ac53e5ec 100644 --- a/Marlin/src/pins/sam/pins_ARCHIM1.h +++ b/Marlin/src/pins/sam/pins_ARCHIM1.h @@ -183,7 +183,7 @@ #if HAS_WIRED_LCD #define BEEPER_PIN 23 // D24 PA15_CTS1 #define LCD_PINS_RS 17 // D17 PA12_RXD1 - #define LCD_PINS_ENABLE 24 // D23 PA14_RTS1 + #define LCD_PINS_EN 24 // D23 PA14_RTS1 #define LCD_PINS_D4 69 // D69 PA0_CANTX0 #define LCD_PINS_D5 54 // D54 PA16_SCK1 #define LCD_PINS_D6 68 // D68 PA1_CANRX0 diff --git a/Marlin/src/pins/sam/pins_ARCHIM2.h b/Marlin/src/pins/sam/pins_ARCHIM2.h index de06a72809..56202cc188 100644 --- a/Marlin/src/pins/sam/pins_ARCHIM2.h +++ b/Marlin/src/pins/sam/pins_ARCHIM2.h @@ -238,7 +238,7 @@ #if ANY(HAS_WIRED_LCD, TOUCH_UI_ULTIPANEL, TOUCH_UI_FTDI_EVE) #define BEEPER_PIN 23 // D24 PA15_CTS1 #define LCD_PINS_RS 17 // D17 PA12_RXD1 - #define LCD_PINS_ENABLE 24 // D23 PA14_RTS1 + #define LCD_PINS_EN 24 // D23 PA14_RTS1 #define LCD_PINS_D4 69 // D69 PA0_CANTX0 #define LCD_PINS_D5 54 // D54 PA16_SCK1 #define LCD_PINS_D6 68 // D68 PA1_CANRX0 diff --git a/Marlin/src/pins/sam/pins_DUE3DOM.h b/Marlin/src/pins/sam/pins_DUE3DOM.h index 5d47f28aba..c8a168228d 100644 --- a/Marlin/src/pins/sam/pins_DUE3DOM.h +++ b/Marlin/src/pins/sam/pins_DUE3DOM.h @@ -114,7 +114,7 @@ #if HAS_WIRED_LCD #define LCD_PINS_RS 42 - #define LCD_PINS_ENABLE 43 + #define LCD_PINS_EN 43 #define LCD_PINS_D4 44 #define LCD_PINS_D5 45 #define LCD_PINS_D6 46 @@ -154,7 +154,7 @@ #elif ENABLED(SPARK_FULL_GRAPHICS) #define LCD_PINS_D4 29 - #define LCD_PINS_ENABLE 27 + #define LCD_PINS_EN 27 #define LCD_PINS_RS 25 #define BTN_EN1 35 diff --git a/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h b/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h index 9d56d36264..66d4f713f8 100644 --- a/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h +++ b/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h @@ -103,7 +103,7 @@ #if HAS_WIRED_LCD #define LCD_PINS_RS 42 - #define LCD_PINS_ENABLE 43 + #define LCD_PINS_EN 43 #define LCD_PINS_D4 44 #define LCD_PINS_D5 45 #define LCD_PINS_D6 46 @@ -147,7 +147,7 @@ #elif ENABLED(SPARK_FULL_GRAPHICS) #define LCD_PINS_D4 29 - #define LCD_PINS_ENABLE 27 + #define LCD_PINS_EN 27 #define LCD_PINS_RS 25 #define BTN_EN1 35 diff --git a/Marlin/src/pins/sam/pins_KRATOS32.h b/Marlin/src/pins/sam/pins_KRATOS32.h index 97449c2d83..f4e3eb479c 100644 --- a/Marlin/src/pins/sam/pins_KRATOS32.h +++ b/Marlin/src/pins/sam/pins_KRATOS32.h @@ -160,7 +160,7 @@ #if IS_RRD_FG_SC #define LCD_PINS_RS 42 - #define LCD_PINS_ENABLE 43 + #define LCD_PINS_EN 43 #define LCD_PINS_D4 44 #define BTN_BACK 52 diff --git a/Marlin/src/pins/sam/pins_RADDS.h b/Marlin/src/pins/sam/pins_RADDS.h index e3de444278..7ebb24fde9 100644 --- a/Marlin/src/pins/sam/pins_RADDS.h +++ b/Marlin/src/pins/sam/pins_RADDS.h @@ -229,7 +229,7 @@ #if ENABLED(RADDS_DISPLAY) #define LCD_PINS_RS 42 - #define LCD_PINS_ENABLE 43 + #define LCD_PINS_EN 43 #define LCD_PINS_D4 44 #define LCD_PINS_D5 45 #define LCD_PINS_D6 46 @@ -252,7 +252,7 @@ // an adapter such as https://www.thingiverse.com/thing:1740725 #define LCD_PINS_RS 42 - #define LCD_PINS_ENABLE 43 + #define LCD_PINS_EN 43 #define LCD_PINS_D4 44 #define BEEPER_PIN 41 @@ -276,7 +276,7 @@ #elif ENABLED(SPARK_FULL_GRAPHICS) #define LCD_PINS_D4 29 - #define LCD_PINS_ENABLE 27 + #define LCD_PINS_EN 27 #define LCD_PINS_RS 25 #define BTN_EN1 35 diff --git a/Marlin/src/pins/sam/pins_RAMPS_DUO.h b/Marlin/src/pins/sam/pins_RAMPS_DUO.h index 5b2b2f0b66..04a4b69ae1 100644 --- a/Marlin/src/pins/sam/pins_RAMPS_DUO.h +++ b/Marlin/src/pins/sam/pins_RAMPS_DUO.h @@ -45,21 +45,16 @@ #define BOARD_INFO_NAME "RAMPS Duo" -#define ALLOW_SAM3X8E -#include "../ramps/pins_RAMPS.h" - // // Temperature Sensors // -#undef TEMP_0_PIN #define TEMP_0_PIN 9 // Analog Input - -#undef TEMP_1_PIN #define TEMP_1_PIN 11 // Analog Input - -#undef TEMP_BED_PIN #define TEMP_BED_PIN 10 // Analog Input +#define ALLOW_SAM3X8E +#include "../ramps/pins_RAMPS.h" + // SPI for MAX Thermocouple #undef TEMP_0_CS_PIN #if DISABLED(SDSUPPORT) diff --git a/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h b/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h index 75d758439c..e1b0d7edc8 100644 --- a/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h +++ b/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h @@ -168,19 +168,21 @@ // ramps-fd lcd adaptor #define BEEPER_PIN EXP1_01_PIN - #define BTN_EN1 EXP2_05_PIN - #define BTN_EN2 EXP2_03_PIN + #define BTN_ENC EXP1_02_PIN + #define BTN_EN2 EXP2_03_PIN + #define BTN_EN1 EXP2_05_PIN + #define SD_DETECT_PIN EXP2_07_PIN #if IS_NEWPANEL #define LCD_PINS_RS EXP1_07_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #endif #if ENABLED(FYSETC_MINI_12864) - #define DOGLCD_CS LCD_PINS_ENABLE - #define DOGLCD_A0 LCD_PINS_RS + #define DOGLCD_CS EXP1_08_PIN + #define DOGLCD_A0 EXP1_07_PIN #define DOGLCD_SCK EXP2_02_PIN #define DOGLCD_MOSI EXP2_06_PIN diff --git a/Marlin/src/pins/sam/pins_RURAMPS4D_11.h b/Marlin/src/pins/sam/pins_RURAMPS4D_11.h index 2ae1f48277..8b078371e9 100644 --- a/Marlin/src/pins/sam/pins_RURAMPS4D_11.h +++ b/Marlin/src/pins/sam/pins_RURAMPS4D_11.h @@ -230,12 +230,12 @@ #if EITHER(RADDS_DISPLAY, IS_RRD_SC) #define LCD_PINS_RS EXP1_04_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #elif IS_RRD_FG_SC #define LCD_PINS_RS EXP1_07_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #elif HAS_U8GLIB_I2C_OLED @@ -273,7 +273,7 @@ //http://doku.radds.org/dokumentation/other-electronics/sparklcd/ #error "Oops! SPARK_FULL_GRAPHICS not supported with RURAMPS4D." //#define LCD_PINS_D4 29 //? - //#define LCD_PINS_ENABLE 27 //? + //#define LCD_PINS_EN 27 //? //#define LCD_PINS_RS 25 //? //#define BTN_EN1 35 //? //#define BTN_EN2 33 //? diff --git a/Marlin/src/pins/sam/pins_RURAMPS4D_13.h b/Marlin/src/pins/sam/pins_RURAMPS4D_13.h index 6034a0e82a..8f107ff4e5 100644 --- a/Marlin/src/pins/sam/pins_RURAMPS4D_13.h +++ b/Marlin/src/pins/sam/pins_RURAMPS4D_13.h @@ -220,12 +220,12 @@ #if EITHER(RADDS_DISPLAY, IS_RRD_SC) #define LCD_PINS_RS EXP1_04_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #elif IS_RRD_FG_SC #define LCD_PINS_RS EXP1_07_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #elif HAS_U8GLIB_I2C_OLED diff --git a/Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h b/Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h index 4445cf24e8..e4525acad0 100644 --- a/Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h +++ b/Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h @@ -166,7 +166,7 @@ #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) #define LCD_PINS_RS A8 // CS chip select / SS chip slave select - #define LCD_PINS_ENABLE MOSI // SID (MOSI) + #define LCD_PINS_EN MOSI // SID (MOSI) #define LCD_PINS_D4 SCK // SCK (CLK) clock #define BTN_EN1 20 diff --git a/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h b/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h index 662cccacfc..8af1054a2c 100644 --- a/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h +++ b/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h @@ -130,25 +130,25 @@ * 5B | . . | 5V * ------ * - *- Special mapping of EXP1 to EXP3 to work with Ender displays. + *- Special mapping of EXP1 to work with Ender displays. * - * Enable CR10_STOCKDISPLAY in Configuration.h and connect EXP1 to the display EXP3 with this mapping. * ------ - * VCC | 1 2 | GND - * LCDDE | 3 4 | LCDRS - * LCDD4 | 5 6 BTN_EN2 - * RESET | 7 8 | BTN_EN1 - * BTN_ENCODER | 9 10 | BEEPER + * BEEPER | 1 2 | ENC + * EN1 | 3 4 | RESET + * EN2 5 6 | LCD_D4 + * LCD_RS | 7 8 | LCD_EN + * GND | 9 10 | 5V * ------ + * EXP1 * *- Digital pinout reference of the Bricolemon for advanced users/configurations. * * ------ ------ - * VCC | 1 2 | GND D49 | 1 2 | GND - * D39 | 3 4 | D38 RST | 3 4 | D44 - * D37 | 5 6 D36 D51 | 5 6 D42 - * D34 | 7 8 | D35 D53 | 7 8 | D43 - * D40 | 9 10 | D41 D52 | 9 10 | D50 + * D41 | 1 2 | D40 D50 | 1 2 | D52 + * D35 | 3 4 | D34 D43 | 3 4 | D53 + * D36 5 6 | D37 D42 5 6 | D51 + * D38 | 7 8 | D39 D44 | 7 8 | RST + * GND | 9 10 | VCC GND | 9 10 | D49 * ------ ------ * EXP1 EXP2 * @@ -235,14 +235,14 @@ // TO TEST //#define LCD_PINS_RS EXP2_10_PIN // CS chip select /SS chip slave select - //#define LCD_PINS_ENABLE EXP2_06_PIN // SID (MOSI) + //#define LCD_PINS_EN EXP2_06_PIN // SID (MOSI) //#define LCD_PINS_D4 EXP2_02_PIN // SCK (CLK) clock #elif BOTH(IS_NEWPANEL, PANEL_ONE) // TO TEST //#define LCD_PINS_RS EXP1_02_PIN - //#define LCD_PINS_ENABLE EXP2_05_PIN + //#define LCD_PINS_EN EXP2_05_PIN //#define LCD_PINS_D4 57 // Mega/Due:65 - AGCM4:57 //#define LCD_PINS_D5 58 // Mega/Due:66 - AGCM4:58 //#define LCD_PINS_D6 EXP2_07_PIN @@ -254,7 +254,7 @@ // TO TEST #define LCD_PINS_RS EXP3_04_PIN - #define LCD_PINS_ENABLE EXP3_03_PIN + #define LCD_PINS_EN EXP3_03_PIN #define LCD_PINS_D4 EXP3_05_PIN #if !IS_NEWPANEL @@ -266,7 +266,7 @@ // TO TEST //#define LCD_PINS_RS 56 // Mega/Due:64 - AGCM4:56 - //#define LCD_PINS_ENABLE EXP2_07_PIN + //#define LCD_PINS_EN EXP2_07_PIN //#define LCD_PINS_D4 55 // Mega/Due:63 - AGCM4:55 //#define LCD_PINS_D5 EXP1_02_PIN //#define LCD_PINS_D6 EXP2_05_PIN @@ -287,7 +287,7 @@ #else // Definitions for any standard Display #define LCD_PINS_RS EXP1_04_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #define LCD_PINS_D5 EXP1_06_PIN #define LCD_PINS_D6 EXP1_07_PIN diff --git a/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h b/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h index b70db129a7..7378731c90 100644 --- a/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h +++ b/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h @@ -182,25 +182,25 @@ * 5B | . . | 5V * ------ * - *- Special mapping of EXP1 to EXP3 to work with Ender displays. + *- Special mapping of EXP1 to work with Ender displays. * - * Enable CR10_STOCKDISPLAY in Configuration.h and connect EXP1 to the display EXP3 with this mapping. * ------ - * VCC | 1 2 | GND - * LCDDE | 3 4 | LCDRS - * LCDD4 | 5 6 BTN_EN2 - * RESET | 7 8 | BTN_EN1 - * BTN_ENCODER | 9 10 | BEEPER + * BEEPER | 1 2 | ENC + * EN1 | 3 4 | RESET + * EN2 5 6 | LCD_D4 + * LCD_RS | 7 8 | LCD_EN + * GND | 9 10 | 5V * ------ + * EXP1 * *- Digital pinout reference of the Bricolemon for advanced users/configurations. * * ------ ------ - * VCC | 1 2 | GND D49 | 1 2 | GND - * D39 | 3 4 | D38 RST | 3 4 | D44 - * D37 | 5 6 D36 D51 | 5 6 D42 - * D34 | 7 8 | D35 D53 | 7 8 | D43 - * D40 | 9 10 | D41 D52 | 9 10 | D50 + * D41 | 1 2 | D40 D50 | 1 2 | D52 + * D35 | 3 4 | D34 D43 | 3 4 | D53 + * D36 5 6 | D37 D42 5 6 | D51 + * D38 | 7 8 | D39 D44 | 7 8 | RST + * GND | 9 10 | VCC GND | 9 10 | D49 * ------ ------ * EXP1 EXP2 * @@ -288,14 +288,14 @@ // TO TEST //#define LCD_PINS_RS EXP2_10_PIN // CS chip select /SS chip slave select - //#define LCD_PINS_ENABLE EXP2_06_PIN // SID (MOSI) + //#define LCD_PINS_EN EXP2_06_PIN // SID (MOSI) //#define LCD_PINS_D4 EXP2_02_PIN // SCK (CLK) clock #elif BOTH(IS_NEWPANEL, PANEL_ONE) // TO TEST //#define LCD_PINS_RS EXP1_02_PIN - //#define LCD_PINS_ENABLE EXP2_05_PIN + //#define LCD_PINS_EN EXP2_05_PIN //#define LCD_PINS_D4 57 // Mega/Due:65 - AGCM4:57 //#define LCD_PINS_D5 58 // Mega/Due:66 - AGCM4:58 //#define LCD_PINS_D6 EXP2_07_PIN @@ -307,7 +307,7 @@ // TO TEST #define LCD_PINS_RS EXP3_04_PIN - #define LCD_PINS_ENABLE EXP3_03_PIN + #define LCD_PINS_EN EXP3_03_PIN #define LCD_PINS_D4 EXP3_05_PIN #if !IS_NEWPANEL @@ -319,7 +319,7 @@ // TO TEST //#define LCD_PINS_RS 56 // Mega/Due:64 - AGCM4:56 - //#define LCD_PINS_ENABLE EXP2_07_PIN + //#define LCD_PINS_EN EXP2_07_PIN //#define LCD_PINS_D4 55 // Mega/Due:63 - AGCM4:55 //#define LCD_PINS_D5 EXP1_02_PIN //#define LCD_PINS_D6 EXP2_05_PIN @@ -340,7 +340,7 @@ #else // Definitions for any standard Display #define LCD_PINS_RS EXP1_04_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #define LCD_PINS_D5 EXP1_06_PIN #define LCD_PINS_D6 EXP1_07_PIN diff --git a/Marlin/src/pins/samd/pins_MINITRONICS20.h b/Marlin/src/pins/samd/pins_MINITRONICS20.h index d2a2a27d7c..804750b69a 100644 --- a/Marlin/src/pins/samd/pins_MINITRONICS20.h +++ b/Marlin/src/pins/samd/pins_MINITRONICS20.h @@ -190,7 +190,7 @@ #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) #define LCD_PINS_RS 18 // CS chip select /SS chip slave select - #define LCD_PINS_ENABLE MOSI // SID (MOSI) + #define LCD_PINS_EN MOSI // SID (MOSI) #define LCD_PINS_D4 SCK // SCK (CLK) clock #define BTN_ENC 23 @@ -201,7 +201,7 @@ // TO TEST //#define LCD_PINS_RS EXP1_02_PIN - //#define LCD_PINS_ENABLE EXP2_05_PIN + //#define LCD_PINS_EN EXP2_05_PIN //#define LCD_PINS_D4 57 // Mega/Due:65 - AGCM4:57 //#define LCD_PINS_D5 58 // Mega/Due:66 - AGCM4:58 //#define LCD_PINS_D6 EXP2_07_PIN @@ -213,7 +213,7 @@ // TO TEST //#define LCD_PINS_RS EXP3_04_PIN - //#define LCD_PINS_ENABLE EXP3_03_PIN + //#define LCD_PINS_EN EXP3_03_PIN //#define LCD_PINS_D4 EXP3_05_PIN #if !IS_NEWPANEL @@ -225,7 +225,7 @@ // TO TEST //#define LCD_PINS_RS 56 // Mega/Due:64 - AGCM4:56 - //#define LCD_PINS_ENABLE EXP2_07_PIN + //#define LCD_PINS_EN EXP2_07_PIN //#define LCD_PINS_D4 55 // Mega/Due:63 - AGCM4:55 //#define LCD_PINS_D5 EXP1_02_PIN //#define LCD_PINS_D6 EXP2_05_PIN @@ -246,7 +246,7 @@ #else // Definitions for any standard Display #define LCD_PINS_RS EXP1_04_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #define LCD_PINS_D5 EXP1_06_PIN #define LCD_PINS_D6 EXP1_07_PIN diff --git a/Marlin/src/pins/samd/pins_RAMPS_144.h b/Marlin/src/pins/samd/pins_RAMPS_144.h index ed10c4d284..aa262f5a60 100644 --- a/Marlin/src/pins/samd/pins_RAMPS_144.h +++ b/Marlin/src/pins/samd/pins_RAMPS_144.h @@ -273,14 +273,14 @@ // TO TEST //#define LCD_PINS_RS 49 // CS chip select /SS chip slave select - //#define LCD_PINS_ENABLE 51 // SID (MOSI) + //#define LCD_PINS_EN 51 // SID (MOSI) //#define LCD_PINS_D4 52 // SCK (CLK) clock #elif BOTH(IS_NEWPANEL, PANEL_ONE) // TO TEST //#define LCD_PINS_RS 40 - //#define LCD_PINS_ENABLE 42 + //#define LCD_PINS_EN 42 //#define LCD_PINS_D4 57 // Mega/Due:65 - AGCM4:57 //#define LCD_PINS_D5 58 // Mega/Due:66 - AGCM4:58 //#define LCD_PINS_D6 44 @@ -292,7 +292,7 @@ // TO TEST //#define LCD_PINS_RS 27 - //#define LCD_PINS_ENABLE 29 + //#define LCD_PINS_EN 29 //#define LCD_PINS_D4 25 #if !IS_NEWPANEL @@ -304,7 +304,7 @@ // TO TEST //#define LCD_PINS_RS 56 // Mega/Due:64 - AGCM4:56 - //#define LCD_PINS_ENABLE 44 + //#define LCD_PINS_EN 44 //#define LCD_PINS_D4 55 // Mega/Due:63 - AGCM4:55 //#define LCD_PINS_D5 40 //#define LCD_PINS_D6 42 @@ -323,7 +323,7 @@ //#define DOGLCD_A0 LCD_PINS_DC #else #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 23 #define LCD_PINS_D5 25 #define LCD_PINS_D6 27 diff --git a/Marlin/src/pins/sanguino/pins_ANET_10.h b/Marlin/src/pins/sanguino/pins_ANET_10.h index 176bb2be12..e57cc9f6fa 100644 --- a/Marlin/src/pins/sanguino/pins_ANET_10.h +++ b/Marlin/src/pins/sanguino/pins_ANET_10.h @@ -175,7 +175,7 @@ #define SERVO0_PIN 27 // free for BLTouch/3D-Touch #define LCD_PINS_RS 28 - #define LCD_PINS_ENABLE 29 + #define LCD_PINS_EN 29 #define LCD_PINS_D4 10 #define LCD_PINS_D5 11 #define LCD_PINS_D6 16 @@ -192,7 +192,7 @@ #define SERVO0_PIN 30 #define BEEPER_PIN 27 #define LCD_PINS_RS 29 - #define LCD_PINS_ENABLE 16 + #define LCD_PINS_EN 16 #define LCD_PINS_D4 11 #define BTN_EN1 28 #define BTN_EN2 10 @@ -204,7 +204,7 @@ #define SERVO0_PIN 29 // free for BLTouch/3D-Touch #define BEEPER_PIN 17 #define LCD_PINS_RS 27 - #define LCD_PINS_ENABLE 28 + #define LCD_PINS_EN 28 #define LCD_PINS_D4 30 #define BTN_EN1 11 #define BTN_EN2 10 @@ -233,11 +233,11 @@ * published by oderwat on Thingiverse at https://www.thingiverse.com/thing:2103748. * * Using that adapter requires changing the pin definition as follows: - * #define SERVO0_PIN 27 // free for BLTouch/3D-Touch - * #define BEEPER_PIN 28 - * #define LCD_PINS_RS 30 - * #define LCD_PINS_ENABLE 29 - * #define LCD_PINS_D4 17 + * #define SERVO0_PIN 27 // free for BLTouch/3D-Touch + * #define BEEPER_PIN 28 + * #define LCD_PINS_RS 30 + * #define LCD_PINS_EN 29 + * #define LCD_PINS_D4 17 * * The BLTouch pin becomes LCD:3 */ @@ -247,32 +247,32 @@ * ===================== LCD PINOUTS ================================== * ==================================================================== * - * Anet V1.0 controller | ZONESTAR_LCD | ANET_FULL_ | RepRapDiscount Full | Thingiverse RepRap wiring - * physical logical alt | | GRAPHICS_LCD | Graphics Display Wiring | https://www.thingiverse - * pin pin functions | | | | .com/thing:2103748 - *------------------------------------------------------------------------------------------------------------------------ - * ANET-J3.1 8 *** | N/A | J3_TX *** | | - * ANET-J3.2 9 *** | N/A | J3_RX *** | | - * ANET-J3.3 6 MISO | N/A | MISO *** | EXP2.1 MISO | EXP2.1 MISO - * ANET-J3.4 +5V | N/A | +5V | | - * ANET-J3.5 7 SCK | N/A | SCK *** | EXP2.2 SCK | EXP2.2 SCK - * ANET-J3.6 5 MOSI | N/A | MOSI *** | EXP2.6 MOSI | EXP2.6 MOSI - * ANET-J3.7 !RESET | N/A | button | EXP2.8 panel button | EXP2.8 panel button - * ANET-J3.8 GND | N/A | GND | EXP2.9 GND | EXP2.9 GND - * ANET-J3.9 4 Don't use | N/A | N/C | | - * ANET-J3.10 +3.3V | N/A | +3.3V *** | | - * | | | | - * | | | | - * ANET-LCD.1 GND | GND | GND | EXP1.9 GND | EXP1.9 GND - * ANET-LCD.2 +5V | +5V | +5V | EXP1.10 +5V | EXP1.10 +5V - * ANET-LCD.3 27 A4 | N/C * | LCD_PINS_RS | EXP1.4 LCD_PINS_RS | EXP2.4 SDSS or N/C * - * ANET-LCD.4 10 | LCD_PINS_D4 | BTN_EN2 | EXP2.3 BTN_EN2 | EXP2.3 BTN_EN2 - * ANET-LCD.5 28 A3 | LCD_PINS_RS | LCD_PINS_ENABLE | EXP1.3 LCD_PINS_ENABLE | EXP1.1 BEEPER_PIN - * ANET-LCD.6 11 | LCD_PINS_D5 | BTN_EN1 | EXP2.5 BTN_EN1 | EXP2.5 BTN_EN1 - * ANET-LCD.7 29 A2 | LCD_PINS_ENABLE | N/C * | EXP2.4 SDSS or N/C * | EXP1.3 LCD_PINS_ENABLE - * ANET-LCD.8 16 SCL | LCD_PINS_D6 | BTN_ENC | EXP1.2 BTN_ENC | EXP1.2 BTN_ENC - * ANET-LCD.9 30 A1 | ADC_KEYPAD_PIN ** | LCD_PINS_D4 | EXP1.5 LCD_PINS_D4 | EXP1.4 LCD_PINS_RS - * ANET-LCD.10 17 SDA | LCD_PINS_D7 | BEEPER_PIN | EXP1.1 BEEPER_PIN | EXP1.5 LCD_PINS_D4 + * Anet V1.0 controller | ZONESTAR_LCD | ANET_FULL_ | RepRapDiscount Full | Thingiverse RepRap wiring + * physical logical alt | | GRAPHICS_LCD | Graphics Display Wiring | https://www.thingiverse + * pin pin functions | | | | .com/thing:2103748 + *-------------------------------------------------------------------------------------------------------------------- + * ANET-J3.1 8 *** | N/A | J3_TX *** | | + * ANET-J3.2 9 *** | N/A | J3_RX *** | | + * ANET-J3.3 6 MISO | N/A | MISO *** | EXP2.1 MISO | EXP2.1 MISO + * ANET-J3.4 +5V | N/A | +5V | | + * ANET-J3.5 7 SCK | N/A | SCK *** | EXP2.2 SCK | EXP2.2 SCK + * ANET-J3.6 5 MOSI | N/A | MOSI *** | EXP2.6 MOSI | EXP2.6 MOSI + * ANET-J3.7 !RESET | N/A | button | EXP2.8 panel button | EXP2.8 panel button + * ANET-J3.8 GND | N/A | GND | EXP2.9 GND | EXP2.9 GND + * ANET-J3.9 4 Don't use | N/A | N/C | | + * ANET-J3.10 +3.3V | N/A | +3.3V *** | | + * | | | | + * | | | | + * ANET-LCD.1 GND | GND | GND | EXP1.9 GND | EXP1.9 GND + * ANET-LCD.2 +5V | +5V | +5V | EXP1.10 +5V | EXP1.10 +5V + * ANET-LCD.3 27 A4 | N/C * | LCD_PINS_RS | EXP1.4 LCD_PINS_RS | EXP2.4 SDSS or N/C * + * ANET-LCD.4 10 | LCD_PINS_D4 | BTN_EN2 | EXP2.3 BTN_EN2 | EXP2.3 BTN_EN2 + * ANET-LCD.5 28 A3 | LCD_PINS_RS | LCD_PINS_EN | EXP1.3 LCD_PINS_EN | EXP1.1 BEEPER_PIN + * ANET-LCD.6 11 | LCD_PINS_D5 | BTN_EN1 | EXP2.5 BTN_EN1 | EXP2.5 BTN_EN1 + * ANET-LCD.7 29 A2 | LCD_PINS_EN | N/C * | EXP2.4 SDSS or N/C * | EXP1.3 LCD_PINS_EN + * ANET-LCD.8 16 SCL | LCD_PINS_D6 | BTN_ENC | EXP1.2 BTN_ENC | EXP1.2 BTN_ENC + * ANET-LCD.9 30 A1 | ADC_KEYPAD_PIN ** | LCD_PINS_D4 | EXP1.5 LCD_PINS_D4 | EXP1.4 LCD_PINS_RS + * ANET-LCD.10 17 SDA | LCD_PINS_D7 | BEEPER_PIN | EXP1.1 BEEPER_PIN | EXP1.5 LCD_PINS_D4 * * N/C * - if not connected to the LCD can be used for BLTouch servo input * ** - analog pin -WITHOUT a pullup @@ -284,7 +284,7 @@ * physical pin function * EXP1.1 BEEPER * EXP1.2 BTN_ENC - * EXP1.3 LCD_PINS_ENABLE + * EXP1.3 LCD_PINS_EN * EXP1.4 LCD_PINS_RS * EXP1.5 LCD_PINS_D4 * EXP1.6 LCD_PINS_D5 (not used) diff --git a/Marlin/src/pins/sanguino/pins_GEN7_CUSTOM.h b/Marlin/src/pins/sanguino/pins_GEN7_CUSTOM.h index 6d7678e6e3..3927250b15 100644 --- a/Marlin/src/pins/sanguino/pins_GEN7_CUSTOM.h +++ b/Marlin/src/pins/sanguino/pins_GEN7_CUSTOM.h @@ -116,7 +116,7 @@ // 4bit LCD Support #define LCD_PINS_RS 18 -#define LCD_PINS_ENABLE 17 +#define LCD_PINS_EN 17 #define LCD_PINS_D4 16 #define LCD_PINS_D5 15 #define LCD_PINS_D6 13 diff --git a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h index 7984e64b5f..398343cb97 100644 --- a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h +++ b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h @@ -51,7 +51,7 @@ #if ANY(MKS_MINI_12864, CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) #if EITHER(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) #define LCD_PINS_RS 28 // ST9720 CS - #define LCD_PINS_ENABLE 17 // ST9720 DAT + #define LCD_PINS_EN 17 // ST9720 DAT #define LCD_PINS_D4 30 // ST9720 CLK #endif #if EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) @@ -119,7 +119,7 @@ PIN: 15 Port: D7 X_STEP_PIN protected PIN: 16 Port: C0 BTN_ENC Input = 1 . SCL Input = 1 - PIN: 17 Port: C1 LCD_PINS_ENABLE Output = 0 + PIN: 17 Port: C1 LCD_PINS_EN Output = 0 . SDA Output = 0 PIN: 18 Port: C2 X_MIN_PIN protected . X_STOP_PIN protected @@ -145,8 +145,8 @@ * ------ ------ * PA4 | 1 2 | PC0 BEEPER_PIN | 1 2 | BTN_ENC * PD3 | 3 4 | RESET BTN_EN1 | 3 4 | RESET - * PD2 5 6 | PA1 BTN_EN2 5 6 | LCD_PINS_D4 (ST9720 CLK) - * PA3 | 7 8 | PC1 (ST9720 CS) LCD_PINS_RS | 7 8 | LCD_PINS_ENABLE (ST9720 DAT) + * PD2 5 6 | PA1 BTN_EN2 5 6 | LCD_D4 (ST9720 CLK) + * PA3 | 7 8 | PC1 (ST9720 CS) LCD_RS | 7 8 | LCD_EN (ST9720 DAT) * GND | 9 10 | 5V GND | 9 10 | 5V * ------ ------ */ diff --git a/Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h b/Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h index 00c9db6f81..323ecaa029 100644 --- a/Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h +++ b/Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h @@ -30,7 +30,7 @@ #if ENABLED(CR10_STOCKDISPLAY) #define LCD_PINS_RS 17 // ST9720 CS - #define LCD_PINS_ENABLE 16 // ST9720 DAT + #define LCD_PINS_EN 16 // ST9720 DAT #define LCD_PINS_D4 11 // ST9720 CLK #define BTN_EN1 30 #define BTN_EN2 29 diff --git a/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h b/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h index da010ab1a6..6b47d9186c 100644 --- a/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h +++ b/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h @@ -34,7 +34,7 @@ #if EITHER(CR10_STOCKDISPLAY, LCD_FOR_MELZI) #define LCD_PINS_RS 30 - #define LCD_PINS_ENABLE 28 + #define LCD_PINS_EN 28 #define LCD_PINS_D4 16 #define LCD_PINS_D5 17 #define LCD_PINS_D6 27 diff --git a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h index 1459eab646..45b326e74e 100644 --- a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h +++ b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h @@ -158,7 +158,7 @@ #if ENABLED(LCD_FOR_MELZI) #define LCD_PINS_RS 17 - #define LCD_PINS_ENABLE 16 + #define LCD_PINS_EN 16 #define LCD_PINS_D4 11 #define KILL_PIN 10 #define BEEPER_PIN 27 @@ -167,7 +167,7 @@ #if IS_MELZI #define LCD_PINS_RS 30 // CS chip select /SS chip slave select - #define LCD_PINS_ENABLE 29 // SID (MOSI) + #define LCD_PINS_EN 29 // SID (MOSI) #define LCD_PINS_D4 17 // SCK (CLK) clock // Pin 27 is taken by LED_PIN, but Melzi LED does nothing with // Marlin so this can be used for BEEPER_PIN. You can use this pin @@ -175,7 +175,7 @@ #define BEEPER_PIN 27 #else // Sanguinololu >=1.3 #define LCD_PINS_RS 4 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 30 #define LCD_PINS_D5 29 #define LCD_PINS_D6 28 @@ -210,7 +210,7 @@ #elif ENABLED(ZONESTAR_LCD) // For the Tronxy Melzi boards #define LCD_PINS_RS 28 - #define LCD_PINS_ENABLE 29 + #define LCD_PINS_EN 29 #define LCD_PINS_D4 10 #define LCD_PINS_D5 11 #define LCD_PINS_D6 16 @@ -219,7 +219,7 @@ #else #define LCD_PINS_RS 4 - #define LCD_PINS_ENABLE 17 + #define LCD_PINS_EN 17 #define LCD_PINS_D4 30 #define LCD_PINS_D5 29 #define LCD_PINS_D6 28 diff --git a/Marlin/src/pins/sanguino/pins_ZMIB_V2.h b/Marlin/src/pins/sanguino/pins_ZMIB_V2.h index 5b0b996d18..dce01177be 100644 --- a/Marlin/src/pins/sanguino/pins_ZMIB_V2.h +++ b/Marlin/src/pins/sanguino/pins_ZMIB_V2.h @@ -194,7 +194,7 @@ #define FORCE_SOFT_SPI //#define LCD_SDSS EXP1_03_PIN #define LCD_PINS_RS EXP1_03_PIN // ST7920_CS_PIN (LCD module pin 4) - #define LCD_PINS_ENABLE EXP1_06_PIN // ST7920_DAT_PIN (LCD module pin 5) + #define LCD_PINS_EN EXP1_06_PIN // ST7920_DAT_PIN (LCD module pin 5) #define LCD_PINS_D4 EXP1_04_PIN // ST7920_CLK_PIN (LCD module pin 6) #define BOARD_ST7920_DELAY_1 DELAY_2_NOP diff --git a/Marlin/src/pins/stm32f1/pins_BEAST.h b/Marlin/src/pins/stm32f1/pins_BEAST.h index 80967bad07..eca4529636 100644 --- a/Marlin/src/pins/stm32f1/pins_BEAST.h +++ b/Marlin/src/pins/stm32f1/pins_BEAST.h @@ -112,7 +112,7 @@ #error "REPRAPWORLD_GRAPHICAL_LCD is not supported." #else #define LCD_PINS_RS PB8 - #define LCD_PINS_ENABLE PD2 + #define LCD_PINS_EN PD2 #define LCD_PINS_D4 PB12 #define LCD_PINS_D5 PB13 #define LCD_PINS_D6 PB14 diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_CR6.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_CR6.h index 00dc0613f2..06646e2e59 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_CR6.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_CR6.h @@ -126,7 +126,7 @@ #define BTN_EN2 PA10 #define LCD_PINS_RS PB8 - #define LCD_PINS_ENABLE PB15 + #define LCD_PINS_EN PB15 #define LCD_PINS_D4 PB9 #define BEEPER_PIN PB5 diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h index 8fb194c27f..aa8795bf3e 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h @@ -184,7 +184,7 @@ #define BTN_EN2 EXP1_05_PIN #define LCD_PINS_RS EXP1_07_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(ZONESTAR_LCD) // ANET A8 LCD Controller - Must convert to 3.3V - CONNECTING TO 5V WILL DAMAGE THE BOARD! @@ -194,7 +194,7 @@ #endif #define LCD_PINS_RS EXP1_06_PIN - #define LCD_PINS_ENABLE EXP1_02_PIN + #define LCD_PINS_EN EXP1_02_PIN #define LCD_PINS_D4 EXP1_07_PIN #define LCD_PINS_D5 EXP1_05_PIN #define LCD_PINS_D6 EXP1_03_PIN diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h index 9d85e211f7..689e73c4f3 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h @@ -169,7 +169,7 @@ #define BTN_EN2 EXP1_05_PIN #define LCD_PINS_RS EXP1_07_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(LCD_FOR_MELZI) @@ -200,7 +200,7 @@ #define BTN_EN2 EXP1_07_PIN #define LCD_PINS_RS EXP1_01_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #elif ENABLED(ZONESTAR_LCD) // ANET A8 LCD Controller - Must convert to 3.3V - CONNECTING TO 5V WILL DAMAGE THE BOARD! @@ -210,7 +210,7 @@ #endif #define LCD_PINS_RS EXP1_06_PIN - #define LCD_PINS_ENABLE EXP1_02_PIN + #define LCD_PINS_EN EXP1_02_PIN #define LCD_PINS_D4 EXP1_07_PIN #define LCD_PINS_D5 EXP1_05_PIN #define LCD_PINS_D6 EXP1_03_PIN diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h index c45e7fb282..eb2f17f40a 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h @@ -180,7 +180,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif IS_TFTGLCD_PANEL @@ -201,7 +201,7 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h b/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h index a75825658c..5cb2845d9f 100644 --- a/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h +++ b/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h @@ -151,7 +151,7 @@ #define LCD_PINS_RS EXP1_07_PIN // CS -- SOFT SPI for ENDER3 LCD #define LCD_PINS_D4 EXP1_06_PIN // SCLK - #define LCD_PINS_ENABLE EXP1_08_PIN // DATA MOSI + #define LCD_PINS_EN EXP1_08_PIN // DATA MOSI #endif // Alter timing for graphical display diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D.h b/Marlin/src/pins/stm32f1/pins_CHITU3D.h index 32894bb72c..73030c8ef6 100644 --- a/Marlin/src/pins/stm32f1/pins_CHITU3D.h +++ b/Marlin/src/pins/stm32f1/pins_CHITU3D.h @@ -102,18 +102,18 @@ #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) #define LCD_PINS_RS PD1 // 49 // CS chip select /SS chip slave select - #define LCD_PINS_ENABLE PD3 // 51 // SID (MOSI) + #define LCD_PINS_EN PD3 // 51 // SID (MOSI) #define LCD_PINS_D4 PD4 // 52 // SCK (CLK) clock #elif BOTH(IS_NEWPANEL, PANEL_ONE) #define LCD_PINS_RS PB8 - #define LCD_PINS_ENABLE PD2 + #define LCD_PINS_EN PD2 #define LCD_PINS_D4 PB12 #define LCD_PINS_D5 PB13 #define LCD_PINS_D6 PB14 #define LCD_PINS_D7 PB15 #else #define LCD_PINS_RS PB8 - #define LCD_PINS_ENABLE PD2 + #define LCD_PINS_EN PD2 #define LCD_PINS_D4 PB12 #define LCD_PINS_D5 PB13 #define LCD_PINS_D6 PB14 diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h index 00de57ff58..c028deaa99 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h @@ -211,7 +211,7 @@ #if ENABLED(CR10_STOCKDISPLAY) #define LCD_PINS_RS EXP3_07_PIN - #define LCD_PINS_ENABLE EXP3_08_PIN + #define LCD_PINS_EN EXP3_08_PIN #define LCD_PINS_D4 EXP3_06_PIN #define BTN_ENC EXP3_02_PIN diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h index d85758981f..12a5e5ea51 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h @@ -193,7 +193,7 @@ #endif #define LCD_PINS_RS EXP3_07_PIN - #define LCD_PINS_ENABLE EXP3_08_PIN + #define LCD_PINS_EN EXP3_08_PIN #define LCD_PINS_D4 EXP3_06_PIN #define BTN_ENC EXP3_02_PIN diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h index c90d76d17d..c3b66b034a 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h @@ -197,7 +197,7 @@ #endif #define LCD_PINS_RS EXP3_07_PIN - #define LCD_PINS_ENABLE EXP3_08_PIN + #define LCD_PINS_EN EXP3_08_PIN #define LCD_PINS_D4 EXP3_06_PIN #define BTN_ENC EXP3_02_PIN diff --git a/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h b/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h index f5a285170e..de85484eae 100644 --- a/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h @@ -166,7 +166,7 @@ #if HAS_WIRED_LCD #define BEEPER_PIN PE12 #define BTN_ENC PE11 - #define LCD_PINS_ENABLE PE10 + #define LCD_PINS_EN PE10 #define LCD_PINS_RS PE9 #define BTN_EN1 PE4 #define BTN_EN2 PE3 diff --git a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h index c7a6a7639d..e723845a2a 100644 --- a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h @@ -164,7 +164,7 @@ #define BEEPER_PIN EXP1_01_PIN #define LCD_PINS_RS EXP1_04_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #define LCD_PINS_D5 EXP1_06_PIN #define LCD_PINS_D6 EXP1_07_PIN diff --git a/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h b/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h index 9bc10a26bc..47bea172a8 100644 --- a/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h +++ b/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h @@ -172,7 +172,7 @@ #define LCD_PINS_RS EXP1_07_PIN // CS -- SOFT SPI for ENDER3 LCD #define LCD_PINS_D4 EXP1_06_PIN // SCLK - #define LCD_PINS_ENABLE EXP1_08_PIN // DATA MOSI + #define LCD_PINS_EN EXP1_08_PIN // DATA MOSI //#define LCD_CONTRAST_INIT 190 diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h b/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h index c41e20c2ed..9c136c11f6 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h @@ -143,7 +143,7 @@ // RepRapDiscount Smart Controller, but adds an FFC40 connector // #define LCD_PINS_RS PE6 // CS chip select /SS chip slave select - #define LCD_PINS_ENABLE PE14 // SID (MOSI) + #define LCD_PINS_EN PE14 // SID (MOSI) #define LCD_PINS_D4 PD8 // SCK (CLK) clock #define LCD_PINS_D5 PD9 #define LCD_PINS_D6 PD10 diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h b/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h index 7b144f7118..2cd77f42b2 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h @@ -144,7 +144,7 @@ // connected with a flat wire to J2 connector on the board. // #define LCD_PINS_RS PE6 // CS chip select /SS chip slave select - #define LCD_PINS_ENABLE PE14 // SID (MOSI) + #define LCD_PINS_EN PE14 // SID (MOSI) #define LCD_PINS_D4 PD8 // SCK (CLK) clock #define LCD_PINS_D5 PD9 #define LCD_PINS_D6 PD10 diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h b/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h index 633b782e02..5e012c177d 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h @@ -148,7 +148,7 @@ // RepRapDiscount Smart Controller, but adds an FFC40 connector // #define LCD_PINS_RS PE6 // CS chip select /SS chip slave select - #define LCD_PINS_ENABLE PE14 // SID (MOSI) + #define LCD_PINS_EN PE14 // SID (MOSI) #define LCD_PINS_D4 PD8 // SCK (CLK) clock #define LCD_PINS_D5 PD9 #define LCD_PINS_D6 PD10 diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h b/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h index 2316d9d3b6..8a0f15806e 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h @@ -146,7 +146,7 @@ // #define LCD_PINS_RS PA12 // CS chip select /SS chip slave select // RW is hardwired to VSS - #define LCD_PINS_ENABLE PC7 // SID (MOSI) + #define LCD_PINS_EN PC7 // SID (MOSI) #define LCD_PINS_D4 PD1 // SCK (CLK) clock #define LCD_PINS_D5 PD4 #define LCD_PINS_D6 PD5 diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h index b14b17d0b9..052bed202b 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h @@ -296,7 +296,7 @@ #if ENABLED(TFT_CLASSIC_UI) // Emulated DOGM SPI - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_RS EXP1_04_PIN #define BTN_ENC EXP1_02_PIN #define BTN_EN1 EXP2_03_PIN @@ -308,7 +308,7 @@ #if HAS_WIRED_LCD && !HAS_SPI_TFT #define BEEPER_PIN EXP1_01_PIN #define BTN_ENC EXP1_02_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_RS EXP1_04_PIN #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h index c7aacc4bab..4d71fcf656 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h @@ -181,7 +181,7 @@ #define BEEPER_PIN EXP1_01_PIN #define BTN_ENC EXP1_02_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_RS EXP1_04_PIN #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h index e2d4cf5646..af4e121100 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h @@ -110,7 +110,7 @@ #define BTN_EN1 EXP3_03_PIN #define BTN_EN2 EXP3_05_PIN - #define LCD_PINS_ENABLE EXP3_08_PIN + #define LCD_PINS_EN EXP3_08_PIN #if ENABLED(MKS_MINI_12864) diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h index 161ff658a6..6835ec3b56 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h @@ -101,7 +101,7 @@ #define BEEPER_PIN PC1 #define BTN_ENC PC3 - #define LCD_PINS_ENABLE PA4 + #define LCD_PINS_EN PA4 #define LCD_PINS_RS PA5 #define BTN_EN1 PB11 #define BTN_EN2 PB0 diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h index 9176ec0ae1..d37d4a10de 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h @@ -296,7 +296,7 @@ #if ENABLED(TFT_CLASSIC_UI) // Emulated DOGM SPI - #define LCD_PINS_ENABLE PD13 + #define LCD_PINS_EN PD13 #define LCD_PINS_RS PC6 #define BTN_ENC PE13 #define BTN_EN1 PE8 @@ -308,7 +308,7 @@ #if HAS_WIRED_LCD && !HAS_SPI_TFT #define BEEPER_PIN PC5 #define BTN_ENC PE13 - #define LCD_PINS_ENABLE PD13 + #define LCD_PINS_EN PD13 #define LCD_PINS_RS PC6 #define BTN_EN1 PE8 #define BTN_EN2 PE11 diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h index 8a213090b1..2a212f1b4a 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h @@ -264,7 +264,7 @@ #define BEEPER_PIN PC5 #define BTN_ENC PG2 - #define LCD_PINS_ENABLE PG0 + #define LCD_PINS_EN PG0 #define LCD_PINS_RS PG1 #define BTN_EN1 PG5 #define BTN_EN2 PG4 diff --git a/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h b/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h index 7c8906e599..60211f53f4 100644 --- a/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h +++ b/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h @@ -171,7 +171,7 @@ #define BTN_EN2 PC5 #define LCD_PINS_RS PC0 - #define LCD_PINS_ENABLE PC2 + #define LCD_PINS_EN PC2 #define LCD_PINS_D4 PC1 #endif diff --git a/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h b/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h index ba8a563f39..97ba7f7fec 100644 --- a/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h +++ b/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h @@ -216,7 +216,7 @@ #if ENABLED(RET6_12864_LCD) #define LCD_PINS_RS EXP3_07_PIN - #define LCD_PINS_ENABLE EXP3_08_PIN + #define LCD_PINS_EN EXP3_08_PIN #define LCD_PINS_D4 EXP3_06_PIN #define BTN_ENC EXP3_02_PIN diff --git a/Marlin/src/pins/stm32f1/pins_STM32F1R.h b/Marlin/src/pins/stm32f1/pins_STM32F1R.h index 634cadc1aa..46bd48f93f 100644 --- a/Marlin/src/pins/stm32f1/pins_STM32F1R.h +++ b/Marlin/src/pins/stm32f1/pins_STM32F1R.h @@ -101,7 +101,7 @@ #error "REPRAPWORLD_GRAPHICAL_LCD is not supported." #else #define LCD_PINS_RS PB8 - #define LCD_PINS_ENABLE PD2 + #define LCD_PINS_EN PD2 #define LCD_PINS_D4 PB12 #define LCD_PINS_D5 PB13 #define LCD_PINS_D6 PB14 diff --git a/Marlin/src/pins/stm32f1/pins_STM3R_MINI.h b/Marlin/src/pins/stm32f1/pins_STM3R_MINI.h index 61cb563575..4cf464aaee 100644 --- a/Marlin/src/pins/stm32f1/pins_STM3R_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_STM3R_MINI.h @@ -116,7 +116,7 @@ #error "REPRAPWORLD_GRAPHICAL_LCD is not supported." #else #define LCD_PINS_RS PB8 - #define LCD_PINS_ENABLE PD2 + #define LCD_PINS_EN PD2 #define LCD_PINS_D4 PB12 #define LCD_PINS_D5 PB13 #define LCD_PINS_D6 PB14 diff --git a/Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h b/Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h index fe4fa49f8f..08491fc21c 100644 --- a/Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h +++ b/Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h @@ -186,7 +186,7 @@ // 8 TX1 PA9 LCD_PINS_RS // 7 RX1 PA10 LCD_PINS_D4 // 6 ENA PC5 BTN_EN2 - // 5 DAT PB2 LCD_PINS_ENABLE + // 5 DAT PB2 LCD_PINS_EN // 4 TX3 PB10 BTN_ENC // 3 RX3 PB11 BTN_EN1 // 2 +5V @@ -194,7 +194,7 @@ #define LCDSCREEN_NAME "ZONESTAR LCD12864" #define LCD_PINS_RS EXP1_03_PIN - #define LCD_PINS_ENABLE EXP1_06_PIN + #define LCD_PINS_EN EXP1_06_PIN #define LCD_PINS_D4 EXP1_04_PIN //#define KILL_PIN EXP1_01_PIN #define BEEPER_PIN EXP1_02_PIN diff --git a/Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h b/Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h index c6192191e1..8997a5f1db 100644 --- a/Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h +++ b/Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h @@ -280,7 +280,7 @@ #if ENABLED(ZONESTAR_12864LCD) #define LCDSCREEN_NAME "ZONESTAR LCD12864" #define LCD_PINS_RS EXP1_03_PIN // 7 CS make sure for zonestar zm3e4! - #define LCD_PINS_ENABLE EXP1_06_PIN // 6 DATA make sure for zonestar zm3e4! + #define LCD_PINS_EN EXP1_06_PIN // 6 DATA make sure for zonestar zm3e4! #define LCD_PINS_D4 EXP1_04_PIN // 8 SCK make sure for zonestar zm3e4! #define BEEPER_PIN EXP1_02_PIN #define KILL_PIN -1 // EXP1_01_PIN @@ -290,7 +290,7 @@ #elif ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) #define LCDSCREEN_NAME "REPRAPDISCOUNT LCD12864" #define LCD_PINS_RS EXP1_03_PIN // 7 CS make sure for zonestar zm3e4! - #define LCD_PINS_ENABLE EXP1_04_PIN // 6 DATA make sure for zonestar zm3e4! + #define LCD_PINS_EN EXP1_04_PIN // 6 DATA make sure for zonestar zm3e4! #define LCD_PINS_D4 EXP1_06_PIN // 8 SCK make sure for zonestar zm3e4! #define BEEPER_PIN EXP1_02_PIN #define KILL_PIN EXP2_07_PIN @@ -310,7 +310,7 @@ #if ENABLED(ZONESTAR_LCD2004_KNOB) #define LCDSCREEN_NAME "LCD2004 KNOB" #define LCD_PINS_RS EXP1_03_PIN - #define LCD_PINS_ENABLE EXP1_04_PIN + #define LCD_PINS_EN EXP1_04_PIN #define LCD_PINS_D4 EXP1_06_PIN #define LCD_PINS_D5 EXP1_05_PIN #define LCD_PINS_D6 EXP1_08_PIN @@ -323,7 +323,7 @@ #elif ENABLED(ZONESTAR_LCD2004_ADCKEY) #define LCDSCREEN_NAME "LCD2004 5KEY" #define LCD_PINS_RS EXP1_03_PIN - #define LCD_PINS_ENABLE EXP1_04_PIN + #define LCD_PINS_EN EXP1_04_PIN #define LCD_PINS_D4 EXP1_06_PIN #define LCD_PINS_D5 EXP1_05_PIN #define LCD_PINS_D6 EXP1_08_PIN diff --git a/Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h b/Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h index b8d72061df..b60cca831b 100644 --- a/Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h +++ b/Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h @@ -277,7 +277,7 @@ #if ENABLED(ZONESTAR_12864LCD) #define LCDSCREEN_NAME "ZONESTAR LCD12864" #define LCD_PINS_RS EXP1_03_PIN // 7 CS make sure for zonestar zm3e4! - #define LCD_PINS_ENABLE EXP1_06_PIN // 6 DATA make sure for zonestar zm3e4! + #define LCD_PINS_EN EXP1_06_PIN // 6 DATA make sure for zonestar zm3e4! #define LCD_PINS_D4 EXP1_04_PIN // 8 SCK make sure for zonestar zm3e4! #define BEEPER_PIN EXP1_02_PIN #define KILL_PIN -1 // EXP1_01_PIN @@ -287,7 +287,7 @@ #elif ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) #define LCDSCREEN_NAME "REPRAPDISCOUNT LCD12864" #define LCD_PINS_RS EXP2_03_PIN // 7 CS make sure for zonestar zm3e4! - #define LCD_PINS_ENABLE EXP2_06_PIN // 6 DATA make sure for zonestar zm3e4! + #define LCD_PINS_EN EXP2_06_PIN // 6 DATA make sure for zonestar zm3e4! #define LCD_PINS_D4 EXP2_04_PIN // 8 SCK make sure for zonestar zm3e4! #define BEEPER_PIN EXP2_01_PIN #define KILL_PIN EXP2_02_PIN diff --git a/Marlin/src/pins/stm32f4/pins_ARMED.h b/Marlin/src/pins/stm32f4/pins_ARMED.h index 6ae2674488..357ab1bd3b 100644 --- a/Marlin/src/pins/stm32f4/pins_ARMED.h +++ b/Marlin/src/pins/stm32f4/pins_ARMED.h @@ -173,7 +173,7 @@ #endif #else #define LCD_PINS_RS PE9 - #define LCD_PINS_ENABLE PE8 + #define LCD_PINS_EN PE8 #define LCD_PINS_D4 PB12 #define LCD_PINS_D5 PB13 #define LCD_PINS_D6 PB14 diff --git a/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h b/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h index 4c0b7d54b7..869b1e859d 100644 --- a/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h +++ b/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h @@ -160,7 +160,7 @@ #define LCD_CONTRAST_INIT 255 #else #define LCD_PINS_RS PC15 - #define LCD_PINS_ENABLE PB6 + #define LCD_PINS_EN PB6 #define LCD_PINS_D4 PB5 #define LCD_PINS_D5 PB9 #define LCD_PINS_D6 PB8 diff --git a/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h b/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h index b42bcf5de3..a4af3f8fe3 100644 --- a/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h +++ b/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h @@ -121,7 +121,7 @@ #define BEEPER_PIN PD10 #define LCD_PINS_RS PE15 -#define LCD_PINS_ENABLE PD8 +#define LCD_PINS_EN PD8 #define LCD_PINS_D4 PE10 #define LCD_PINS_D5 PE12 #define LCD_PINS_D6 PD1 diff --git a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h index fdd56b5c9e..73af02d3ab 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h @@ -248,7 +248,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(MKS_MINI_12864) @@ -265,7 +265,7 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h b/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h index 73f943c3fa..0130d60240 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h @@ -206,7 +206,7 @@ #define BTN_EN2 PB2 #define LCD_PINS_RS PB1 - #define LCD_PINS_ENABLE PE11 + #define LCD_PINS_EN PE11 #define LCD_PINS_D4 PE10 #if ENABLED(LCD_FOR_MELZI) @@ -252,7 +252,7 @@ #endif #define LCD_PINS_RS PE10 - #define LCD_PINS_ENABLE PE9 + #define LCD_PINS_EN PE9 #define LCD_PINS_D4 PB1 #define LCD_PINS_D5 PB2 #define LCD_PINS_D6 PE7 diff --git a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h index a21eaefee8..b81859dd61 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h @@ -419,7 +419,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(MKS_MINI_12864) @@ -438,7 +438,7 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h index 78766b5c98..711050b747 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h @@ -463,7 +463,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #else @@ -473,7 +473,7 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h index d3a04b9d07..ffddeff67c 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h @@ -202,7 +202,7 @@ #define BTN_EN2 EXP1_05_PIN #define LCD_PINS_RS EXP1_07_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(ZONESTAR_LCD) // ANET A8 LCD Controller - Must convert to 3.3V - CONNECTING TO 5V WILL DAMAGE THE BOARD! @@ -212,7 +212,7 @@ #endif #define LCD_PINS_RS EXP1_06_PIN - #define LCD_PINS_ENABLE EXP1_02_PIN + #define LCD_PINS_EN EXP1_02_PIN #define LCD_PINS_D4 EXP1_07_PIN #define LCD_PINS_D5 EXP1_05_PIN #define LCD_PINS_D6 EXP1_03_PIN diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h index 0cdd34aaee..ad0f594a24 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h @@ -442,7 +442,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(MKS_MINI_12864) @@ -494,7 +494,7 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h index 95b20c105d..73c2cf9ff8 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h @@ -456,7 +456,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(MKS_MINI_12864) @@ -473,7 +473,7 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h b/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h index 24419cfd1b..b9996aa1f2 100644 --- a/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h +++ b/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h @@ -286,7 +286,7 @@ #if IS_RRD_SC #define BEEPER_PIN EXP1_01_PIN #define LCD_PINS_RS EXP1_04_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #define LCD_PINS_D5 EXP1_06_PIN #define LCD_PINS_D6 EXP1_07_PIN diff --git a/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h b/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h index a7b7c079c3..626bdcde76 100644 --- a/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h +++ b/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h @@ -149,17 +149,15 @@ * GND | 9 10 | 5V GND | 9 10 | 5V * ------ ------ * EXP2 EXP1 - */ - -/** - * ------ - * 5V | 1 2 | GND - * (LCD_EN/MOSI) PB15 | 3 4 | PB12 (LCD_RS) - * (LCD_D4/SCK) PB13 5 6 | PC11 (BTN_EN2) - * (LCD_D5/MISO) PB14 | 7 8 | PC10 (BTN_EN1) - * (BTN_ENC) PC12 | 9 10 | PC9 (BEEPER) - * ------ - * EXP3 + * + * ------ + * (BEEPER) PC9 | 1 2 | PC12 (BTN_ENC) + * (BTN_EN1) PC10 | 3 4 | PB14 (LCD_D5/MISO) + * (BTN_EN2) PC11 5 6 | PB13 (LCD_D4/SCK) + * (LCD_RS) PB12 | 7 8 | PB15 (LCD_EN/MOSI) + * GND | 9 10 | 5V + * ------ + * EXP3 */ #define EXP1_01_PIN PC9 @@ -180,22 +178,31 @@ #define EXP2_07_PIN PC3 #define EXP2_08_PIN -1 -#if HAS_WIRED_LCD +#define EXP3_01_PIN PC9 +#define EXP3_02_PIN PC12 +#define EXP3_03_PIN PC10 +#define EXP3_04_PIN PB14 +#define EXP3_05_PIN PC11 +#define EXP3_06_PIN PB13 +#define EXP3_07_PIN PB12 +#define EXP3_08_PIN PB15 + +#if ENABLED(CR10_STOCKDISPLAY) + + #define BEEPER_PIN EXP3_01_PIN + #define BTN_ENC EXP3_02_PIN + #define BTN_EN1 EXP3_03_PIN + #define BTN_EN2 EXP3_05_PIN + #define LCD_PINS_D4 EXP3_06_PIN + #define LCD_PINS_RS EXP3_07_PIN + #define LCD_PINS_EN EXP3_08_PIN + +#elif HAS_WIRED_LCD #define BEEPER_PIN EXP1_01_PIN #define BTN_ENC EXP1_02_PIN - #if ENABLED(CR10_STOCKDISPLAY) - - #define LCD_PINS_RS EXP1_04_PIN - - #define BTN_EN1 EXP2_03_PIN - #define BTN_EN2 EXP2_05_PIN - - #define LCD_PINS_ENABLE EXP1_03_PIN - #define LCD_PINS_D4 EXP1_05_PIN - - #elif ENABLED(MKS_MINI_12864) + #if ENABLED(MKS_MINI_12864) #define DOGLCD_A0 EXP1_07_PIN #define DOGLCD_CS EXP1_06_PIN @@ -209,7 +216,7 @@ #define BTN_EN1 EXP2_05_PIN #define BTN_EN2 EXP2_03_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h b/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h index 49aab671c5..7780490799 100644 --- a/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h +++ b/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h @@ -268,7 +268,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #else @@ -280,7 +280,7 @@ #define LCD_SDSS EXP2_04_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h index 1a72722221..367cace424 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h @@ -311,7 +311,7 @@ #elif HAS_WIRED_LCD - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_RS EXP1_04_PIN #define LCD_BACKLIGHT_PIN -1 diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h index fed0dc9fa5..3b1c773b29 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h @@ -327,7 +327,7 @@ #elif HAS_WIRED_LCD - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_RS EXP1_04_PIN #define LCD_BACKLIGHT_PIN -1 diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h index 82c52ad984..7d537c9643 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h @@ -339,7 +339,7 @@ #define BEEPER_PIN EXP1_01_PIN #define BTN_ENC EXP1_02_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_RS EXP1_04_PIN #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN diff --git a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h index b03fc5419e..b281a8e2a3 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h @@ -307,7 +307,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #else @@ -317,7 +317,7 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h b/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h index ed4ba34266..daed1da4b0 100644 --- a/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h +++ b/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h @@ -149,7 +149,7 @@ #define BTN_ENC PE7 #define LCD_PINS_RS PE10 - #define LCD_PINS_ENABLE PE9 + #define LCD_PINS_EN PE9 #define LCD_PINS_D4 PE12 #if ENABLED(MKS_MINI_12864) diff --git a/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h b/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h index b2fec3b834..448c54f1b3 100644 --- a/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h +++ b/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h @@ -233,7 +233,7 @@ #define BEEPER_PIN EXP1_01_PIN // Not connected in dev board #endif #define LCD_PINS_RS EXP1_07_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN //#define KILL_PIN -1 diff --git a/Marlin/src/pins/stm32f4/pins_VAKE403D.h b/Marlin/src/pins/stm32f4/pins_VAKE403D.h index eba63c5a5b..a17d31f063 100644 --- a/Marlin/src/pins/stm32f4/pins_VAKE403D.h +++ b/Marlin/src/pins/stm32f4/pins_VAKE403D.h @@ -208,7 +208,7 @@ #define BTN_EN2 EXP2_05_PIN #define BTN_ENC EXP1_02_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_RS EXP1_04_PIN #define LCD_PINS_D4 EXP1_05_PIN diff --git a/Marlin/src/pins/stm32f7/pins_NUCLEO_F767ZI.h b/Marlin/src/pins/stm32f7/pins_NUCLEO_F767ZI.h index 6f5c179d1c..bf45f94ab8 100644 --- a/Marlin/src/pins/stm32f7/pins_NUCLEO_F767ZI.h +++ b/Marlin/src/pins/stm32f7/pins_NUCLEO_F767ZI.h @@ -186,7 +186,7 @@ #define BTN_ENC PE11 // BTN_ENC #define SD_DETECT_PIN PD14 #define LCD_PINS_RS PF12 // LCD_RS - #define LCD_PINS_ENABLE PD15 // LCD_EN + #define LCD_PINS_EN PD15 // LCD_EN #define LCD_PINS_D4 PB13 // LCD_D4 #define BTN_EN1 PF13 // BTN_EN1 #define BTN_EN2 PE9 // BTN_EN2 diff --git a/Marlin/src/pins/stm32f7/pins_REMRAM_V1.h b/Marlin/src/pins/stm32f7/pins_REMRAM_V1.h index f13eba8ef3..2db21be45e 100644 --- a/Marlin/src/pins/stm32f7/pins_REMRAM_V1.h +++ b/Marlin/src/pins/stm32f7/pins_REMRAM_V1.h @@ -120,7 +120,7 @@ #define SD_DETECT_PIN 56 // SD_CARD_DET #define BEEPER_PIN 46 // LCD_BEEPER #define LCD_PINS_RS 49 // LCD_RS -#define LCD_PINS_ENABLE 48 // LCD_EN +#define LCD_PINS_EN 48 // LCD_EN #define LCD_PINS_D4 50 // LCD_D4 #define LCD_PINS_D5 51 // LCD_D5 #define LCD_PINS_D6 52 // LCD_D6 diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h index 57e257a7ba..e2e276f89a 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h @@ -266,7 +266,7 @@ #define BTN_ENC EXP1_02_PIN #define LCD_PINS_RS EXP1_07_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(ZONESTAR_LCD) // ANET A8 LCD Controller - Must convert to 3.3V - CONNECTING TO 5V WILL DAMAGE THE BOARD! @@ -276,7 +276,7 @@ #endif #define LCD_PINS_RS EXP1_06_PIN - #define LCD_PINS_ENABLE EXP1_02_PIN + #define LCD_PINS_EN EXP1_02_PIN #define LCD_PINS_D4 EXP1_07_PIN #define LCD_PINS_D5 EXP1_05_PIN #define LCD_PINS_D6 EXP1_03_PIN diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h index 276c951143..8f3cc618e7 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h @@ -227,7 +227,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(MKS_MINI_12864) @@ -244,7 +244,7 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h index 737330d351..fd926c014f 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h @@ -255,7 +255,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(MKS_MINI_12864) @@ -272,7 +272,7 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h index 2c778f8732..bd9a1cf0b5 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h @@ -319,7 +319,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(MKS_MINI_12864) @@ -336,7 +336,7 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h b/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h index 9be2357043..0f7da52572 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h @@ -196,7 +196,7 @@ * CS | 3 4 | SCK (EN1) PA10 | 3 4 | -- * MOSI | 5 6 | MISO (EN2) PA9 5 6 | MOSI * 3V3 | 7 8 | GND -- | 7 8 | -- - * ------ GND | 9 10| RESET (Kill) + * ------ GND | 9 10 | RESET (Kill) * SPI ------ * EXP2 * @@ -205,7 +205,7 @@ * PA9 | 3 4 | RESET (LCD CS) PB8 | 3 4 | PD6 (LCD_A0) * PA10 5 6 | PB9 (RESET) PB9 5 6 | PA15 (DIN) * PB8 | 7 8 | PD6 -- | 7 8 | -- - * GND | 9 10| 5V GND | 9 10| 5V + * GND | 9 10 | 5V GND | 9 10 | 5V * ------ ------ * EXP1 EXP1 */ @@ -238,7 +238,7 @@ #define BTN_EN2 EXP1_05_PIN #define LCD_PINS_RS EXP1_07_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(ZONESTAR_LCD) // ANET A8 LCD Controller - Must convert to 3.3V - CONNECTING TO 5V WILL DAMAGE THE BOARD! @@ -248,7 +248,7 @@ #endif #define LCD_PINS_RS EXP1_06_PIN - #define LCD_PINS_ENABLE EXP1_02_PIN + #define LCD_PINS_EN EXP1_02_PIN #define LCD_PINS_D4 EXP1_07_PIN #define LCD_PINS_D5 EXP1_05_PIN #define LCD_PINS_D6 EXP1_03_PIN diff --git a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h index cc2dab0e16..e8e984fcb7 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h @@ -430,7 +430,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #else @@ -440,7 +440,7 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h index 97ac32479e..be56d0d2b7 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h @@ -445,7 +445,7 @@ #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #define LCD_PINS_D4 EXP1_06_PIN #elif ENABLED(MKS_MINI_12864) @@ -462,7 +462,7 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #if ENABLED(FYSETC_MINI_12864) diff --git a/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h b/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h index f80576b509..124faa7691 100644 --- a/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h +++ b/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h @@ -133,7 +133,7 @@ #if HAS_WIRED_LCD && IS_NEWPANEL #define LCD_PINS_RS 9 // E1 JP11-11 - #define LCD_PINS_ENABLE 8 // E0 JP11-10 + #define LCD_PINS_EN 8 // E0 JP11-10 #define LCD_PINS_D4 7 // D7 JP11-8 #define LCD_PINS_D5 6 // D6 JP11-7 #define LCD_PINS_D6 5 // D5 JP11-6 diff --git a/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h b/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h index 06496abdcd..b208b08826 100644 --- a/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h +++ b/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h @@ -214,7 +214,7 @@ #if HAS_WIRED_LCD #define LCD_PINS_RS 9 // E1 JP11-11 - #define LCD_PINS_ENABLE 8 // E0 JP11-10 + #define LCD_PINS_EN 8 // E0 JP11-10 #define LCD_PINS_D4 7 // D7 JP11-8 #define LCD_PINS_D5 6 // D6 JP11-7 #define LCD_PINS_D6 5 // D5 JP11-6 diff --git a/Marlin/src/pins/teensy2/pins_SAV_MKI.h b/Marlin/src/pins/teensy2/pins_SAV_MKI.h index 5044af75d3..c1809eed6b 100644 --- a/Marlin/src/pins/teensy2/pins_SAV_MKI.h +++ b/Marlin/src/pins/teensy2/pins_SAV_MKI.h @@ -155,7 +155,7 @@ // #define BEEPER_PIN -1 #define LCD_PINS_RS -1 -#define LCD_PINS_ENABLE -1 +#define LCD_PINS_EN -1 #if ENABLED(SAV_3DLCD) // For LCD SHIFT register LCD diff --git a/Marlin/src/pins/teensy2/pins_TEENSY2.h b/Marlin/src/pins/teensy2/pins_TEENSY2.h index b31c173869..2b65f17bc5 100644 --- a/Marlin/src/pins/teensy2/pins_TEENSY2.h +++ b/Marlin/src/pins/teensy2/pins_TEENSY2.h @@ -169,7 +169,7 @@ // #if IS_ULTIPANEL #define LCD_PINS_RS 8 // E0 - #define LCD_PINS_ENABLE 9 // E1 + #define LCD_PINS_EN 9 // E1 #define LCD_PINS_D4 10 // C0 #define LCD_PINS_D5 11 // C1 #define LCD_PINS_D6 12 // C2 diff --git a/Marlin/src/pins/teensy3/pins_TEENSY31_32.h b/Marlin/src/pins/teensy3/pins_TEENSY31_32.h index ee5466b54d..a6aa4fd86d 100644 --- a/Marlin/src/pins/teensy3/pins_TEENSY31_32.h +++ b/Marlin/src/pins/teensy3/pins_TEENSY31_32.h @@ -100,7 +100,7 @@ /* #if HAS_WIRED_LCD #define LCD_PINS_RS 40 - #define LCD_PINS_ENABLE 41 + #define LCD_PINS_EN 41 #define LCD_PINS_D4 42 #define LCD_PINS_D5 43 #define LCD_PINS_D6 44 diff --git a/Marlin/src/pins/teensy3/pins_TEENSY35_36.h b/Marlin/src/pins/teensy3/pins_TEENSY35_36.h index 289a8acb1c..54bf6f8835 100644 --- a/Marlin/src/pins/teensy3/pins_TEENSY35_36.h +++ b/Marlin/src/pins/teensy3/pins_TEENSY35_36.h @@ -67,7 +67,7 @@ * * Interior pins: * LCD_PINS_RS 40 * * 53 SCK2 - * LCD_PINS_ENABLE 41 * * 52 MOSI2 + * LCD_PINS_EN 41 * * 52 MOSI2 * LCD_PINS_D4 42 * * 51 MISO2 * LCD_PINS_D5 CS2 43 * * 50 A24 * LCD_PINS_D6 MOSI2 44 * * 49 A23 @@ -132,7 +132,7 @@ #if HAS_WIRED_LCD #define LCD_PINS_RS 40 - #define LCD_PINS_ENABLE 41 + #define LCD_PINS_EN 41 #define LCD_PINS_D4 42 #define LCD_PINS_D5 43 #define LCD_PINS_D6 44 diff --git a/buildroot/share/PlatformIO/variants/MARLIN_TH3D_EZBOARD_V2/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_TH3D_EZBOARD_V2/PeripheralPins.c index 03d75bbfa8..edefd00f7a 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_TH3D_EZBOARD_V2/PeripheralPins.c +++ b/buildroot/share/PlatformIO/variants/MARLIN_TH3D_EZBOARD_V2/PeripheralPins.c @@ -161,7 +161,7 @@ WEAK const PinMap PinMap_PWM[] = { //{PB_14, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N //{PB_14, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM12, 1, 0)}, // TIM12_CH1 - //{PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N LCD_PINS_ENABLE + //{PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N LCD_PINS_EN //{PB_15, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N //{PB_15, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM12, 2, 0)}, // TIM12_CH2 @@ -292,7 +292,7 @@ WEAK const PinMap PinMap_USB_OTG_HS[] = { //{PB_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_ID CS (LCD) //{PB_13, USB_OTG_HS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_HS_VBUS LCD_PINS_D4 //{PB_14, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_DM MISO (LCD) - //{PB_15, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_DP LCD_PINS_ENABLE + //{PB_15, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_DP LCD_PINS_EN #else //{PA_3, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D0 Z_STEP //{PA_5, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_CK SPI-SCK diff --git a/ini/lpc176x.ini b/ini/lpc176x.ini index 0cb26628fe..223ba3cabd 100644 --- a/ini/lpc176x.ini +++ b/ini/lpc176x.ini @@ -23,7 +23,7 @@ extra_scripts = ${common.extra_scripts} build_src_filter = ${common.default_src_filter} + + lib_deps = ${common.lib_deps} Servo -custom_marlin.USES_LIQUIDCRYSTAL = arduino-libraries/LiquidCrystal@~1.0.7 +custom_marlin.USES_LIQUIDCRYSTAL = arduino-libraries/LiquidCrystal@~1.0.7 custom_marlin.NEOPIXEL_LED = Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/1.5.0.zip build_flags = ${common.build_flags} -DU8G_HAL_LINKS -IMarlin/src/HAL/LPC1768/include -IMarlin/src/HAL/LPC1768/u8g # debug options for backtrace From 8c897babce82114b0f589ef4f93a9cd501efd241 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 9 Apr 2023 00:22:09 +0000 Subject: [PATCH 237/659] [cron] Bump distribution date (2023-04-09) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 7968a02f3e..e43a88dba8 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-08" +//#define STRING_DISTRIBUTION_DATE "2023-04-09" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index f19dfc7acf..7d1e3e89ef 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-08" + #define STRING_DISTRIBUTION_DATE "2023-04-09" #endif /** From 12d6043d86737925f8d5232536b3fc5f9055672a Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Mon, 10 Apr 2023 21:16:52 +1200 Subject: [PATCH 238/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20MARLIN=5FF446Zx=5F?= =?UTF-8?q?TRONXY=20variant=20(#25659)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to 9be1554f --- .../variants/MARLIN_F446Zx_TRONXY/variant.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F446Zx_TRONXY/variant.cpp b/buildroot/share/PlatformIO/variants/MARLIN_F446Zx_TRONXY/variant.cpp index 2d94ee763a..7e18e33f7e 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_F446Zx_TRONXY/variant.cpp +++ b/buildroot/share/PlatformIO/variants/MARLIN_F446Zx_TRONXY/variant.cpp @@ -173,15 +173,15 @@ uint32_t myvar[] = {1,2,3,4,5,6,7,8}; void myshow(int fre, int times) // YSZ-WORK { uint32_t index = 10; - RCC->AHB1ENR |= 1 << 6; // port G clock - GPIOG->MODER &= ~(3UL << 2 * index); // clear old mode - GPIOG->MODER |= 1 << 2 * index; // mode is output - GPIOG->OSPEEDR &= ~(3UL << 2 * index) // Clear old output speed - GPIOG->OSPEEDR |= 2 << 2 * index; // Set output speed - GPIOG->OTYPER &= ~(1UL << index) // clear old output - GPIOG->OTYPER |= 0 << index; // Set the output mode to push-pull - GPIOG->PUPDR &= ~(3 << 2 * index) // Clear the original settings first - GPIOG->PUPDR |= 1 << 2 * index; // Set new up and down + RCC->AHB1ENR |= 1 << 6; // port G clock + GPIOG->MODER &= ~(3UL << 2 * index); // clear old mode + GPIOG->MODER |= 1 << 2 * index; // mode is output + GPIOG->OSPEEDR &= ~(3UL << 2 * index); // Clear old output speed + GPIOG->OSPEEDR |= 2 << 2 * index; // Set output speed + GPIOG->OTYPER &= ~(1UL << index); // clear old output + GPIOG->OTYPER |= 0 << index; // Set the output mode to push-pull + GPIOG->PUPDR &= ~(3 << 2 * index); // Clear the original settings first + GPIOG->PUPDR |= 1 << 2 * index; // Set new up and down while (times != 0) { GPIOG->BSRR = 1UL << index; for (int i = 0; i < fre; i++) From 54aef53c4d413e9fab2151cc2c85467902c65955 Mon Sep 17 00:00:00 2001 From: David Fries Date: Mon, 10 Apr 2023 04:38:38 -0500 Subject: [PATCH 239/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Skip=20a=20redunda?= =?UTF-8?q?nt=20BLTouch::command=20(#25656)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bltouch.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Marlin/src/feature/bltouch.cpp b/Marlin/src/feature/bltouch.cpp index fe56341a47..1c6c1eb4aa 100644 --- a/Marlin/src/feature/bltouch.cpp +++ b/Marlin/src/feature/bltouch.cpp @@ -42,9 +42,14 @@ bool BLTouch::od_5v_mode; // Initialized by settings.load, 0 = Open Drai #include "../core/debug_out.h" bool BLTouch::command(const BLTCommand cmd, const millis_t &ms) { - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("BLTouch Command :", cmd); - servo[Z_PROBE_SERVO_NR].move(cmd); - safe_delay(_MAX(ms, (uint32_t)BLTOUCH_DELAY)); // BLTOUCH_DELAY is also the *minimum* delay + const BLTCommand current = servo[Z_PROBE_SERVO_NR].read(); + if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("BLTouch from ", current, " to ", cmd); + // If the new command is the same, skip it (and the delay). + // The previous write should've already delayed to detect the alarm. + if (cmd != current) { + servo[Z_PROBE_SERVO_NR].move(cmd); + safe_delay(_MAX(ms, (uint32_t)BLTOUCH_DELAY)); // BLTOUCH_DELAY is also the *minimum* delay + } return triggered(); } From 7a5934ff4729267873a94ae3fd95675ddda65daa Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Mon, 10 Apr 2023 22:17:50 +1200 Subject: [PATCH 240/659] =?UTF-8?q?=F0=9F=94=A7=20Update=20thermocouple=20?= =?UTF-8?q?2=20pin=20sanity=20check=20(#25627)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/SanityCheck.h | 4 ++-- Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 46c7931a50..7dbd4c765d 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2646,8 +2646,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS." #elif !HAS_HEATER_2 #error "HEATER_2_PIN not defined for this board." - #elif !PIN_EXISTS(TEMP_2) && !TEMP_SENSOR_2_IS_DUMMY - #error "TEMP_2_PIN not defined for this board." + #elif !ANY_PIN(TEMP_2, TEMP_2_CS) && !TEMP_SENSOR_2_IS_DUMMY + #error "TEMP_2_PIN or TEMP_2_CS_PIN not defined for this board." #endif #if HOTENDS > 3 #if TEMP_SENSOR_3 == 0 diff --git a/Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h b/Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h index e4525acad0..f3ec7806e6 100644 --- a/Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h +++ b/Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h @@ -153,7 +153,7 @@ #define TEMP_0_CS_PIN 65 #define TEMP_1_CS_PIN 52 #define TEMP_2_CS_PIN 50 -#define TEMP_3_CS_PIN 51 +#define TEMP_3_CS_PIN 51 // Not yet supported #define ENC424_SS 61 From 182497fc3901b156f139e6884a2e5106f2e208fa Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 10 Apr 2023 12:07:12 +0000 Subject: [PATCH 241/659] [cron] Bump distribution date (2023-04-10) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index e43a88dba8..6fcb899a7b 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-09" +//#define STRING_DISTRIBUTION_DATE "2023-04-10" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 7d1e3e89ef..dcff1bd9bd 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-09" + #define STRING_DISTRIBUTION_DATE "2023-04-10" #endif /** From 266786406c3e90654e94b91cd74e646d145cc4ef Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 30 Mar 2023 15:12:56 -0500 Subject: [PATCH 242/659] =?UTF-8?q?=F0=9F=8E=A8=20Misc.=20probe-related=20?= =?UTF-8?q?cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/calibrate/G34_M422.cpp | 8 ++++---- Marlin/src/gcode/probe/M401_M402.cpp | 4 +++- Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp | 8 ++++---- Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h | 13 +++++++------ Marlin/src/module/motion.cpp | 9 ++++----- Marlin/src/module/motion.h | 2 ++ Marlin/src/module/probe.cpp | 10 +++++----- Marlin/src/module/probe.h | 5 +++++ 8 files changed, 34 insertions(+), 25 deletions(-) diff --git a/Marlin/src/gcode/calibrate/G34_M422.cpp b/Marlin/src/gcode/calibrate/G34_M422.cpp index 816e455b84..db6ef874d9 100644 --- a/Marlin/src/gcode/calibrate/G34_M422.cpp +++ b/Marlin/src/gcode/calibrate/G34_M422.cpp @@ -153,7 +153,7 @@ void GcodeSuite::G34() { const xy_pos_t diff = z_stepper_align.xy[i] - z_stepper_align.xy[j]; return HYPOT2(diff.x, diff.y); }; - float z_probe = Z_PROBE_SAFE_CLEARANCE + (G34_MAX_GRADE) * 0.01f * SQRT(_MAX(0, magnitude2(0, 1) + float z_probe = (Z_PROBE_SAFE_CLEARANCE) + (G34_MAX_GRADE) * 0.01f * SQRT(_MAX(0, magnitude2(0, 1) #if TRIPLE_Z , magnitude2(2, 1), magnitude2(2, 0) #if QUAD_Z @@ -234,7 +234,7 @@ void GcodeSuite::G34() { // Add height to each value, to provide a more useful target height for // the next iteration of probing. This allows adjustments to be made away from the bed. - z_measured[iprobe] = z_probed_height + Z_CLEARANCE_BETWEEN_PROBES; + z_measured[iprobe] = z_probed_height + (Z_CLEARANCE_BETWEEN_PROBES); if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("> Z", iprobe + 1, " measured position is ", z_measured[iprobe]); @@ -248,7 +248,7 @@ void GcodeSuite::G34() { // Adapt the next probe clearance height based on the new measurements. // Safe_height = lowest distance to bed (= highest measurement) plus highest measured misalignment. z_maxdiff = z_measured_max - z_measured_min; - z_probe = Z_PROBE_SAFE_CLEARANCE + z_measured_max + z_maxdiff; + z_probe = (Z_PROBE_SAFE_CLEARANCE) + z_measured_max + z_maxdiff; #if HAS_Z_STEPPER_ALIGN_STEPPER_XY // Replace the initial values in z_measured with calculated heights at @@ -436,7 +436,7 @@ void GcodeSuite::G34() { // Use the probed height from the last iteration to determine the Z height. // z_measured_min is used, because all steppers are aligned to z_measured_min. // Ideally, this would be equal to the 'z_probe * 0.5f' which was added earlier. - current_position.z -= z_measured_min - (float)Z_CLEARANCE_BETWEEN_PROBES; + current_position.z -= z_measured_min - float(Z_CLEARANCE_BETWEEN_PROBES); sync_plan_position(); #endif diff --git a/Marlin/src/gcode/probe/M401_M402.cpp b/Marlin/src/gcode/probe/M401_M402.cpp index 7114cad9e8..d81c04f4a0 100644 --- a/Marlin/src/gcode/probe/M401_M402.cpp +++ b/Marlin/src/gcode/probe/M401_M402.cpp @@ -65,7 +65,9 @@ void GcodeSuite::M401() { */ void GcodeSuite::M402() { probe.stow(parser.boolval('R')); - probe.move_z_after_probing(); + #ifdef Z_AFTER_PROBING + do_z_clearance(Z_AFTER_PROBING); + #endif report_current_position(); } diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp index e9e80101f6..81af2e6e20 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp @@ -152,7 +152,7 @@ namespace Anycubic { // Enable levelling and Disable end stops during print // as Z home places nozzle above the bed so we need to allow it past the end stops - injectCommands_P(AC_cmnd_enable_levelling); + injectCommands(AC_cmnd_enable_leveling); // Startup tunes are defined in Tunes.h //PlayTune(BEEPER_PIN, Anycubic_PowerOn, 1); @@ -1299,7 +1299,7 @@ namespace Anycubic { #if ENABLED(POWER_LOSS_RECOVERY) if (printer_state == AC_printer_resuming_from_power_outage) { // Need to home here to restore the Z position - //injectCommands_P(AC_cmnd_power_loss_recovery); + //injectCommands(AC_cmnd_power_loss_recovery); //SERIAL_ECHOLNPGM("start resuming from power outage: ", AC_cmnd_power_loss_recovery); ChangePageOfTFT(PAGE_STATUS2); // show pause injectCommands(F("M1000")); // home and start recovery @@ -2280,11 +2280,11 @@ namespace Anycubic { if (!isPrinting()) { if (filament_status == 1) { if (canMove(E0) && !commandsInQueue()) - injectCommands_P(AC_cmnd_manual_load_filament); + injectCommands(AC_cmnd_manual_load_filament); } else if (filament_status == 2) { if (canMove(E0) && !commandsInQueue()) - injectCommands_P(AC_cmnd_manual_unload_filament); + injectCommands(AC_cmnd_manual_unload_filament); } } } diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h index dc187690e3..72e812b965 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h @@ -104,13 +104,14 @@ #define MARLIN_msg_filament_purging PSTR("Filament Purging...") #define MARLIN_msg_media_removed PSTR("Media Removed") #define MARLIN_msg_special_pause PSTR("PB") -#define AC_cmnd_auto_unload_filament PSTR("M701") // Use Marlin unload routine -#define AC_cmnd_auto_load_filament PSTR("M702 M0 PB") // Use Marlin load routing then pause for user to clean nozzle -#define AC_cmnd_manual_load_filament PSTR("M83\nG1 E50 F700\nM82") // replace the manual panel commands with something a little faster -#define AC_cmnd_manual_unload_filament PSTR("M83\nG1 E-50 F1200\nM82") -#define AC_cmnd_enable_levelling PSTR("M420 S1 V1") -#define AC_cmnd_power_loss_recovery PSTR("G28 R5 X Y\nG28 Z") // Lift, home X and Y then home Z when in 'safe' position +#define AC_cmnd_auto_unload_filament F("M701") // Use Marlin unload routine +#define AC_cmnd_auto_load_filament F("M702 M0 PB") // Use Marlin load routing then pause for user to clean nozzle + +#define AC_cmnd_manual_load_filament F("M83\nG1 E50 F700\nM82") // replace the manual panel commands with something a little faster +#define AC_cmnd_manual_unload_filament F("M83\nG1 E-50 F1200\nM82") +#define AC_cmnd_enable_leveling F("M420SV") +#define AC_cmnd_power_loss_recovery F("G28XYR5\nG28Z") // Lift, home X and Y then home Z when in 'safe' position namespace Anycubic { enum heater_state_t : uint8_t { diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 4e4c174bd8..152b5f70e3 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -798,6 +798,10 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { if (zdest == current_position.z || (!lower_allowed && zdest < current_position.z)) return; do_blocking_move_to_z(zdest, TERN(HAS_BED_PROBE, z_probe_fast_mm_s, homing_feedrate(Z_AXIS))); } + void do_z_clearance_by(const_float_t zclear) { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_z_clearance_by(", zclear, ")"); + do_z_clearance(current_position.z + zclear); + } #endif // @@ -2458,15 +2462,10 @@ void set_axis_is_at_home(const AxisEnum axis) { #if HAS_BED_PROBE && Z_HOME_TO_MIN if (axis == Z_AXIS) { #if HOMING_Z_WITH_PROBE - current_position.z -= probe.offset.z; - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("*** Z HOMED WITH PROBE (Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) ***\n> probe.offset.z = ", probe.offset.z); - #else - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("*** Z HOMED TO ENDSTOP ***"); - #endif } #endif diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index 611d3a17bd..adc11f54d9 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -404,8 +404,10 @@ void restore_feedrate_and_scaling(); #if HAS_Z_AXIS void do_z_clearance(const_float_t zclear, const bool lower_allowed=false); + void do_z_clearance_by(const_float_t zclear); #else inline void do_z_clearance(float, bool=false) {} + inline void do_z_clearance_by(float) {} #endif /** diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 230fc30db1..b2c1c2b8de 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -757,8 +757,8 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { if (try_to_probe(PSTR("FAST"), z_probe_low_point, z_probe_fast_mm_s, sanity_check, Z_CLEARANCE_BETWEEN_PROBES) ) return NAN; - const float first_probe_z = DIFF_TERN(HAS_DELTA_SENSORLESS_PROBING, current_position.z, largest_sensorless_adj); - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("1st Probe Z:", first_probe_z); + const float z1 = DIFF_TERN(HAS_DELTA_SENSORLESS_PROBING, current_position.z, largest_sensorless_adj); + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("1st Probe Z:", z1); // Raise to give the probe clearance do_z_clearance(Z_CLEARANCE_MULTI_PROBE); @@ -767,7 +767,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { // If the nozzle is well over the travel height then // move down quickly before doing the slow probe - const float z = Z_CLEARANCE_DEPLOY_PROBE + 5.0f + _MAX(zoffs, 0.0f); + const float z = (Z_CLEARANCE_DEPLOY_PROBE) + 5.0f + _MAX(zoffs, 0.0f); if (current_position.z > z) { // Probe down fast. If the probe never triggered, raise for probe clearance if (!probe_down_to_z(z, z_probe_fast_mm_s)) @@ -853,10 +853,10 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { const float z2 = DIFF_TERN(HAS_DELTA_SENSORLESS_PROBING, current_position.z, largest_sensorless_adj); - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("2nd Probe Z:", z2, " Discrepancy:", first_probe_z - z2); + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("2nd Probe Z:", z2, " Discrepancy:", z1 - z2); // Return a weighted average of the fast and slow probes - const float measured_z = (z2 * 3.0f + first_probe_z * 2.0f) * 0.2f; + const float measured_z = (z2 * 3.0f + z1 * 2.0f) * 0.2f; #else diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 069e505ea0..03544690b5 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -33,6 +33,9 @@ #include "../lcd/e3v2/proui/dwin.h" #endif +#define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE) +#include "../core/debug_out.h" + #if HAS_BED_PROBE enum ProbePtRaise : uint8_t { PROBE_PT_NONE, // No raise or stow after run_z_probe @@ -171,6 +174,7 @@ public: #endif // !IS_KINEMATIC static void move_z_after_probing() { + DEBUG_SECTION(mzah, "move_z_after_probing", DEBUGGING(LEVELING)); #ifdef Z_AFTER_PROBING do_z_clearance(Z_AFTER_PROBING, true); // Move down still permitted #endif @@ -193,6 +197,7 @@ public: static void use_probing_tool(const bool=true) IF_DISABLED(DO_TOOLCHANGE_FOR_PROBING, {}); static void move_z_after_homing() { + DEBUG_SECTION(mzah, "move_z_after_homing", DEBUGGING(LEVELING)); #if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) || defined(Z_AFTER_HOMING) do_z_clearance(Z_POST_CLEARANCE, true); #elif HAS_BED_PROBE From 25e5a3597fed4c9c9c0b074e4aa7c5a7c69d0403 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 10 Apr 2023 19:26:55 -0500 Subject: [PATCH 243/659] =?UTF-8?q?=F0=9F=9A=B8=20Fix=20G30=20behavior?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: David Fries <2767875+dfries@users.noreply.github.com> --- Marlin/src/gcode/probe/G30.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/Marlin/src/gcode/probe/G30.cpp b/Marlin/src/gcode/probe/G30.cpp index 0a23e0981c..6548105487 100644 --- a/Marlin/src/gcode/probe/G30.cpp +++ b/Marlin/src/gcode/probe/G30.cpp @@ -53,15 +53,21 @@ */ void GcodeSuite::G30() { + xy_pos_t old_pos = current_position, + probepos = current_position; + + const bool seenX = parser.seenval('X'); + if (seenX) probepos.x = RAW_X_POSITION(parser.value_linear_units()); + const bool seenY = parser.seenval('Y'); + if (seenY) probepos.y = RAW_Y_POSITION(parser.value_linear_units()); + probe.use_probing_tool(); - // Convert the given logical position to native position - const xy_pos_t pos = { - parser.seenval('X') ? RAW_X_POSITION(parser.value_linear_units()) : current_position.x, - parser.seenval('Y') ? RAW_Y_POSITION(parser.value_linear_units()) : current_position.y - }; + if (probe.can_reach(probepos)) { + + if (seenX) old_pos.x = probepos.x; + if (seenY) old_pos.y = probepos.y; - if (probe.can_reach(pos)) { // Disable leveling so the planner won't mess with us TERN_(HAS_LEVELING, set_bed_leveling_enabled(false)); @@ -74,15 +80,15 @@ void GcodeSuite::G30() { const ProbePtRaise raise_after = parser.boolval('E', true) ? PROBE_PT_STOW : PROBE_PT_NONE; TERN_(HAS_PTC, ptc.set_enabled(!parser.seen('C') || parser.value_bool())); - const float measured_z = probe.probe_at_point(pos, raise_after, 1); + const float measured_z = probe.probe_at_point(probepos, raise_after, 1); TERN_(HAS_PTC, ptc.set_enabled(true)); if (!isnan(measured_z)) { - SERIAL_ECHOLNPGM("Bed X: ", pos.asLogical().x, " Y: ", pos.asLogical().y, " Z: ", measured_z); + SERIAL_ECHOLNPGM("Bed X: ", probepos.asLogical().x, " Y: ", probepos.asLogical().y, " Z: ", measured_z); #if EITHER(DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI) char msg[31], str_1[6], str_2[6], str_3[6]; sprintf_P(msg, PSTR("X:%s, Y:%s, Z:%s"), - dtostrf(pos.x, 1, 1, str_1), - dtostrf(pos.y, 1, 1, str_2), + dtostrf(probepos.x, 1, 1, str_1), + dtostrf(probepos.y, 1, 1, str_2), dtostrf(measured_z, 1, 2, str_3) ); ui.set_status(msg); @@ -91,6 +97,8 @@ void GcodeSuite::G30() { restore_feedrate_and_scaling(); + do_blocking_move_to(old_pos); + if (raise_after == PROBE_PT_STOW) probe.move_z_after_probing(); From c4aa39dc863091cbf0b4590ec4bd3a117a9f92d3 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 10 Apr 2023 20:54:55 -0500 Subject: [PATCH 244/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20BLTouch=20stow=20i?= =?UTF-8?q?n=20homeaxis(Z)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/motion.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 152b5f70e3..785cbb09a6 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -2153,12 +2153,12 @@ void prepare_line_to_destination() { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Home Fast: ", move_length, "mm"); do_homing_move(axis, move_length, 0.0, !use_probe_bump); - #if BOTH(HOMING_Z_WITH_PROBE, BLTOUCH) - if (axis == Z_AXIS && !bltouch.high_speed_mode) bltouch.stow(); // Intermediate STOW (in LOW SPEED MODE) - #endif - // If a second homing move is configured... if (bump) { + #if BOTH(HOMING_Z_WITH_PROBE, BLTOUCH) + if (axis == Z_AXIS && !bltouch.high_speed_mode) bltouch.stow(); // Intermediate STOW (in LOW SPEED MODE) + #endif + // Move away from the endstop by the axis HOMING_BUMP_MM if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Move Away: ", -bump, "mm"); do_homing_move(axis, -bump, TERN(HOMING_Z_WITH_PROBE, (axis == Z_AXIS ? z_probe_fast_mm_s : 0), 0), false); @@ -2209,12 +2209,12 @@ void prepare_line_to_destination() { const float rebump = bump * 2; if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Re-bump: ", rebump, "mm"); do_homing_move(axis, rebump, get_homing_bump_feedrate(axis), true); - - #if BOTH(HOMING_Z_WITH_PROBE, BLTOUCH) - if (axis == Z_AXIS) bltouch.stow(); // The final STOW - #endif } + #if BOTH(HOMING_Z_WITH_PROBE, BLTOUCH) + if (axis == Z_AXIS) bltouch.stow(); // The final STOW + #endif + #if HAS_EXTRA_ENDSTOPS const bool pos_dir = axis_home_dir > 0; #if ENABLED(X_DUAL_ENDSTOPS) From 832f769b4614c60b6088f1fde63995e26ee76dcc Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 10 Apr 2023 23:22:30 -0500 Subject: [PATCH 245/659] =?UTF-8?q?=F0=9F=93=9D=20Describe=20G34,=20spellc?= =?UTF-8?q?heck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 8 ++++---- Marlin/Configuration_adv.h | 28 ++++++++++++++-------------- Marlin/src/gcode/calibrate/G34.cpp | 17 +++++++++++++++++ 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 4fa07c0871..81591597b2 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2519,7 +2519,7 @@ #define PASSWORD_ON_STARTUP #define PASSWORD_UNLOCK_GCODE // Unlock with the M511 P command. Disable to prevent brute-force attack. #define PASSWORD_CHANGE_GCODE // Change the password with M512 P S. - //#define PASSWORD_ON_SD_PRINT_MENU // This does not prevent gcodes from running + //#define PASSWORD_ON_SD_PRINT_MENU // This does not prevent G-codes from running //#define PASSWORD_AFTER_SD_PRINT_END //#define PASSWORD_AFTER_SD_PRINT_ABORT //#include "Configuration_Secure.h" // External file with PASSWORD_DEFAULT_VALUE @@ -3268,9 +3268,9 @@ /** * TFT Font for Color_UI. Choose one of the following: * - * NOTOSANS - Default font with antialiasing. Supports Latin Extended and non-Latin characters. - * UNIFONT - Lightweight font, no antialiasing. Supports Latin Extended and non-Latin characters. - * HELVETICA - Lightweight font, no antialiasing. Supports Basic Latin (0x0020-0x007F) and Latin-1 Supplement (0x0080-0x00FF) characters only. + * NOTOSANS - Default font with anti-aliasing. Supports Latin Extended and non-Latin characters. + * UNIFONT - Lightweight font, no anti-aliasing. Supports Latin Extended and non-Latin characters. + * HELVETICA - Lightweight font, no anti-aliasing. Supports Basic Latin (0x0020-0x007F) and Latin-1 Supplement (0x0080-0x00FF) characters only. */ #define TFT_FONT NOTOSANS diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index cbc85283a3..a010480c61 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -372,7 +372,7 @@ * Thermal Protection Variance Monitor - EXPERIMENTAL * Kill the machine on a stuck temperature sensor. * - * This feature may cause some thermally-stable systems to halt. Be sure to test it throughly under + * This feature may cause some thermally-stable systems to halt. Be sure to test it thoroughly under * a variety of conditions. Disable if you get false positives. * * This feature ensures that temperature sensors are updating regularly. If sensors die or get "stuck", @@ -415,7 +415,7 @@ * You can either just add a constant compensation with the DEFAULT_Kf value * or follow the instruction below to get speed-dependent compensation. * - * Constant compensation (use only with fanspeeds of 0% and 100%) + * Constant compensation (use only with fan speeds of 0% and 100%) * --------------------------------------------------------------------- * A good starting point for the Kf-value comes from the calculation: * kf = (power_fan * eff_fan) / power_heater * 255 @@ -442,7 +442,7 @@ //#define PID_FAN_SCALING_ALTERNATIVE_DEFINITION #if ENABLED(PID_FAN_SCALING_ALTERNATIVE_DEFINITION) // The alternative definition is used for an easier configuration. - // Just figure out Kf at fullspeed (255) and PID_FAN_SCALING_MIN_SPEED. + // Just figure out Kf at full speed (255) and PID_FAN_SCALING_MIN_SPEED. // DEFAULT_Kf and PID_FAN_SCALING_LIN_FACTOR are calculated accordingly. #define PID_FAN_SCALING_AT_FULL_SPEED 13.0 //=PID_FAN_SCALING_LIN_FACTOR*255+DEFAULT_Kf @@ -621,7 +621,7 @@ * FAST_PWM_FAN_FREQUENCY * Set this to your desired frequency. * For AVR, if left undefined this defaults to F = F_CPU/(2*255*1) - * i.e., F = 31.4kHz on 16MHz microcontrollers or F = 39.2kHz on 20MHz microcontrollers. + * i.e., F = 31.4kHz on 16MHz micro-controllers or F = 39.2kHz on 20MHz micro-controllers. * For non AVR, if left undefined this defaults to F = 1Khz. * This F value is only to protect the hardware from an absence of configuration * and not to complete it when users are not aware that the frequency must be specifically set to support the target board. @@ -960,9 +960,9 @@ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller! * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup. * If disabled, OD mode is the hard-coded default on 3.0 - * On startup, Marlin will compare its eeprom to this value. If the selected mode - * differs, a mode set eeprom write will be completed at initialization. - * Use the option below to force an eeprom write to a V3.1 probe regardless. + * On startup, Marlin will compare its EEPROM to this value. If the selected mode + * differs, a mode set EEPROM write will be completed at initialization. + * Use the option below to force an EEPROM write to a V3.1 probe regardless. */ //#define BLTOUCH_SET_5V_MODE @@ -1328,7 +1328,7 @@ //#define CALIBRATION_MEASURE_WMAX // Probing at the exact top center only works if the center is flat. If - // probing on a screwhead or hollow washer, probe near the edges. + // probing on a screw head or hollow washer, probe near the edges. //#define CALIBRATION_MEASURE_AT_TOP_EDGES // Define the pin to read during calibration @@ -1923,7 +1923,7 @@ #endif /** - * Status (Info) Screen customizations + * Status (Info) Screen customization * These options may affect code size and screen render time. * Custom status screens can forcibly override these settings. */ @@ -2176,7 +2176,7 @@ #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING) #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds. // Note: Extra time may be added to mitigate controller latency. - //#define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on doubleclick when printer is idle. + //#define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on double-click when printer is idle. #if ENABLED(MOVE_Z_WHEN_IDLE) #define MOVE_Z_IDLE_MULTIPLICATOR 1 // Multiply 1mm by this factor for the move step size. #endif @@ -3536,7 +3536,7 @@ * Feed rates are set by the F parameter of a move command e.g. G1 X0 Y10 F6000 * Laser power would be calculated by bit shifting off 8 LSB's. In binary this is div 256. * The calculation gives us ocr values from 0 to 255, values over F65535 will be set as 255 . - * More refined power control such as compesation for accell/decell will be addressed in future releases. + * More refined power control such as compensation for accel/decel will be addressed in future releases. * * M5 I clears inline mode and set power to 0, M5 sets the power output to 0 but leaves inline mode on. */ @@ -3544,8 +3544,8 @@ /** * Enable M3 commands for laser mode inline power planner syncing. * This feature enables any M3 S-value to be injected into the block buffers while in - * CUTTER_MODE_CONTINUOUS. The option allows M3 laser power to be commited without waiting - * for a planner syncronization + * CUTTER_MODE_CONTINUOUS. The option allows M3 laser power to be committed without waiting + * for a planner synchronization */ //#define LASER_POWER_SYNC @@ -4144,7 +4144,7 @@ #define MAX7219_DEBUG_PROFILE 6 // Display the fraction of CPU time spent in profiled code on this LED matrix // row. By default idle() is profiled so this shows how "idle" the processor is. // See class CodeProfiler. - //#define MAX7219_DEBUG_MULTISTEPPING 6 // Show multistepping 1 to 128 on this LED matrix row. + //#define MAX7219_DEBUG_MULTISTEPPING 6 // Show multi-stepping 1 to 128 on this LED matrix row. #endif /** diff --git a/Marlin/src/gcode/calibrate/G34.cpp b/Marlin/src/gcode/calibrate/G34.cpp index 7ae1e7765c..9a0cb0054b 100644 --- a/Marlin/src/gcode/calibrate/G34.cpp +++ b/Marlin/src/gcode/calibrate/G34.cpp @@ -39,6 +39,23 @@ #define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE) #include "../../core/debug_out.h" +/** + * G34 - Align the ends of the X gantry. See https://youtu.be/3jAFQdTk8iw + * + * - The carriage moves to GANTRY_CALIBRATION_SAFE_POSITION, also called the “pounce” position. + * - If possible, the Z stepper current is reduced to the value specified by 'S' + * (or GANTRY_CALIBRATION_CURRENT) to prevent damage to steppers and other parts. + * The reduced current should be just high enough to move the Z axis when not blocked. + * - The Z axis is jogged past the Z limit, only as far as the specified Z distance + * (or GANTRY_CALIBRATION_EXTRA_HEIGHT) at the GANTRY_CALIBRATION_FEEDRATE. + * - The Z axis is moved back to the working area (also at GANTRY_CALIBRATION_FEEDRATE). + * - Stepper current is restored back to normal. + * - The machine is re-homed, according to GANTRY_CALIBRATION_COMMANDS_POST. + * + * Parameters: + * [S] - Current value to use for the raise move. (Default: GANTRY_CALIBRATION_CURRENT) + * [Z] - Extra distance past Z_MAX_POS to move the Z axis. (Default: GANTRY_CALIBRATION_EXTRA_HEIGHT) + */ void GcodeSuite::G34() { // Home before the alignment procedure From c37797ba2c1516d7cb010d58adcbc9f204865651 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 11 Apr 2023 06:06:17 +0000 Subject: [PATCH 246/659] [cron] Bump distribution date (2023-04-11) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 6fcb899a7b..3d66f31569 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-10" +//#define STRING_DISTRIBUTION_DATE "2023-04-11" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index dcff1bd9bd..b13a8fceef 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-10" + #define STRING_DISTRIBUTION_DATE "2023-04-11" #endif /** From c6e564885e65b9bc4fbc490e62ffb3d743eaa1f0 Mon Sep 17 00:00:00 2001 From: David Fries Date: Tue, 11 Apr 2023 18:37:54 -0500 Subject: [PATCH 247/659] =?UTF-8?q?=E2=9C=A8=20BLTOUCH=5FHS=5FEXTRA=5FCLEA?= =?UTF-8?q?RANCE=20(#25655)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration_adv.h | 11 +++++++++-- Marlin/src/feature/bltouch.h | 2 +- Marlin/src/inc/SanityCheck.h | 10 ++++++++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index a010480c61..17255d1f25 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -966,6 +966,9 @@ */ //#define BLTOUCH_SET_5V_MODE + // Safety: Enable voltage mode settings in the LCD menu. + //#define BLTOUCH_LCD_VOLTAGE_MENU + /** * Safety: Activate if connecting a probe with an unknown voltage mode. * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0 @@ -984,8 +987,12 @@ */ //#define BLTOUCH_HS_MODE true - // Safety: Enable voltage mode settings in the LCD menu. - //#define BLTOUCH_LCD_VOLTAGE_MENU + #if ENABLED(BLTOUCH_HS_MODE) + // The probe Z offset (M851 Z) is the height at which the probe triggers. + // This must be large enough to keep the probe pin off the bed and prevent + // it from snagging on the bed clips. + #define BLTOUCH_HS_EXTRA_CLEARANCE 7 // Extra Z Clearance + #endif #endif // BLTOUCH diff --git a/Marlin/src/feature/bltouch.h b/Marlin/src/feature/bltouch.h index fa857bb96a..2ced649a4e 100644 --- a/Marlin/src/feature/bltouch.h +++ b/Marlin/src/feature/bltouch.h @@ -76,7 +76,7 @@ public: static constexpr bool high_speed_mode = false; #endif - static float z_extra_clearance() { return high_speed_mode ? 7 : 0; } + static float z_extra_clearance() { return high_speed_mode ? TERN0(BLTOUCH_HS_MODE, BLTOUCH_HS_EXTRA_CLEARANCE) : 0; } // DEPLOY and STOW are wrapped for error handling - these are used by homing and by probing static bool deploy() { return deploy_proc(); } diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 7dbd4c765d..5c594abff3 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1895,9 +1895,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #endif #endif - #if ENABLED(BLTOUCH_HS_MODE) && BLTOUCH_HS_MODE == 0 - #error "BLTOUCH_HS_MODE must now be defined as true or false, indicating the default state." + #if ENABLED(BLTOUCH_HS_MODE) + #if BLTOUCH_HS_MODE == 0 + #error "BLTOUCH_HS_MODE must now be defined as true or false, indicating the default state." + #endif + #ifdef BLTOUCH_HS_EXTRA_CLEARANCE + static_assert(BLTOUCH_HS_EXTRA_CLEARANCE > 0, "BLTOUCH_HS_MODE requires a positive BLTOUCH_HS_EXTRA_CLEARANCE."); + #endif #endif + #if BLTOUCH_DELAY < 200 #error "BLTOUCH_DELAY less than 200 is unsafe and is not supported." #endif From e9f483b4801a541758fdc9d065e1b825e8c53266 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 11 Apr 2023 16:08:04 -0500 Subject: [PATCH 248/659] =?UTF-8?q?=F0=9F=93=9D=20Improve=20G30=20descript?= =?UTF-8?q?ion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/probe/G30.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/gcode/probe/G30.cpp b/Marlin/src/gcode/probe/G30.cpp index 6548105487..a17ec367df 100644 --- a/Marlin/src/gcode/probe/G30.cpp +++ b/Marlin/src/gcode/probe/G30.cpp @@ -42,7 +42,7 @@ #endif /** - * G30: Do a single Z probe at the current XY + * G30: Do a single Z probe at the given XY (default: current) * * Parameters: * From 185961f898f8c9d2cf5e3d78dcd060e7c576cf7d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 11 Apr 2023 17:55:58 -0500 Subject: [PATCH 249/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Mor?= =?UTF-8?q?e=20debug=20in=20motion.*?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/motion.cpp | 2 ++ Marlin/src/module/motion.h | 19 +++++++------------ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 785cbb09a6..ad5be12187 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -811,6 +811,7 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { static float saved_feedrate_mm_s; static int16_t saved_feedrate_percentage; void remember_feedrate_and_scaling() { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("remember_feedrate_and_scaling: fr=", feedrate_mm_s, " ", feedrate_percentage, "%"); saved_feedrate_mm_s = feedrate_mm_s; saved_feedrate_percentage = feedrate_percentage; } @@ -821,6 +822,7 @@ void remember_feedrate_scaling_off() { void restore_feedrate_and_scaling() { feedrate_mm_s = saved_feedrate_mm_s; feedrate_percentage = saved_feedrate_percentage; + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("restore_feedrate_and_scaling: fr=", feedrate_mm_s, " ", feedrate_percentage, "%"); } #if HAS_SOFTWARE_ENDSTOPS diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index adc11f54d9..cdf1d7a969 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -436,26 +436,21 @@ void set_axis_is_at_home(const AxisEnum axis); void set_axis_never_homed(const AxisEnum axis); main_axes_bits_t axes_should_home(main_axes_bits_t axes_mask=main_axes_mask); bool homing_needed_error(main_axes_bits_t axes_mask=main_axes_mask); - inline void set_axis_unhomed(const AxisEnum axis) { CBI(axes_homed, axis); } - inline void set_axis_untrusted(const AxisEnum axis) { CBI(axes_trusted, axis); } - inline void set_all_unhomed() { axes_homed = axes_trusted = 0; } - inline void set_axis_homed(const AxisEnum axis) { SBI(axes_homed, axis); } - inline void set_axis_trusted(const AxisEnum axis) { SBI(axes_trusted, axis); } - inline void set_all_homed() { axes_homed = axes_trusted = main_axes_mask; } #else constexpr main_axes_bits_t axes_homed = main_axes_mask, axes_trusted = main_axes_mask; // Zero-endstop machines are always homed and trusted inline void homeaxis(const AxisEnum axis) {} inline void set_axis_never_homed(const AxisEnum) {} inline main_axes_bits_t axes_should_home(main_axes_bits_t=main_axes_mask) { return 0; } inline bool homing_needed_error(main_axes_bits_t=main_axes_mask) { return false; } - inline void set_axis_unhomed(const AxisEnum axis) {} - inline void set_axis_untrusted(const AxisEnum axis) {} - inline void set_all_unhomed() {} - inline void set_axis_homed(const AxisEnum axis) {} - inline void set_axis_trusted(const AxisEnum axis) {} - inline void set_all_homed() {} #endif +inline void set_axis_unhomed(const AxisEnum axis) { TERN_(HAS_ENDSTOPS, CBI(axes_homed, axis)); } +inline void set_axis_untrusted(const AxisEnum axis) { TERN_(HAS_ENDSTOPS, CBI(axes_trusted, axis)); } +inline void set_all_unhomed() { TERN_(HAS_ENDSTOPS, axes_homed = axes_trusted = 0); } +inline void set_axis_homed(const AxisEnum axis) { TERN_(HAS_ENDSTOPS, SBI(axes_homed, axis)); } +inline void set_axis_trusted(const AxisEnum axis) { TERN_(HAS_ENDSTOPS, SBI(axes_trusted, axis)); } +inline void set_all_homed() { TERN_(HAS_ENDSTOPS, axes_homed = axes_trusted = main_axes_mask); } + inline bool axis_was_homed(const AxisEnum axis) { return TEST(axes_homed, axis); } inline bool axis_is_trusted(const AxisEnum axis) { return TEST(axes_trusted, axis); } inline bool axis_should_home(const AxisEnum axis) { return (axes_should_home() & _BV(axis)) != 0; } From f53217b2c5bf7d61d21ee6784ec251bc7a670eb3 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 11 Apr 2023 18:43:01 -0500 Subject: [PATCH 250/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Pro?= =?UTF-8?q?be=20flag=20in=20do=5Fz=5Fclearance?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 5 ++--- Marlin/src/module/motion.cpp | 13 ++++++++----- Marlin/src/module/motion.h | 4 ++-- Marlin/src/module/probe.cpp | 18 +++++------------- Marlin/src/module/probe.h | 1 - Marlin/src/module/temperature.cpp | 2 +- 6 files changed, 18 insertions(+), 25 deletions(-) diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index d9205b7577..a6206b398e 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -916,15 +916,14 @@ void set_message_with_feedback(FSTR_P const fstr) { echo_and_take_a_measurement(); const float z1 = measure_point_with_encoder(); - do_blocking_move_to_z(current_position.z + SIZE_OF_LITTLE_RAISE); - planner.synchronize(); + do_z_clearance_by(SIZE_OF_LITTLE_RAISE); SERIAL_ECHOPGM("Remove shim"); LCD_MESSAGE(MSG_UBL_BC_REMOVE); echo_and_take_a_measurement(); const float z2 = measure_point_with_encoder(); - do_blocking_move_to_z(current_position.z + Z_CLEARANCE_BETWEEN_PROBES); + do_z_clearance_by(Z_CLEARANCE_BETWEEN_PROBES); const float thickness = ABS(z1 - z2); diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index ad5be12187..d5d9ca8d34 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -792,15 +792,18 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { fr_mm_s ); } - void do_z_clearance(const_float_t zclear, const bool lower_allowed/*=false*/) { - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_z_clearance(", zclear, ", ", lower_allowed, ")"); - const float zdest = _MIN(zclear, Z_MAX_POS); - if (zdest == current_position.z || (!lower_allowed && zdest < current_position.z)) return; + void do_z_clearance(const_float_t zclear, const bool with_probe/*=true*/, const bool lower_allowed/*=false*/) { + UNUSED(with_probe); + float zdest = zclear; + TERN_(HAS_BED_PROBE, if (with_probe && probe.offset.z < 0) zdest -= probe.offset.z); + NOMORE(zdest, Z_MAX_POS); + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_z_clearance(", zclear, " [", current_position.z, " to ", zdest, "], ", lower_allowed, ")"); + if ((!lower_allowed && zdest < current_position.z) || zdest == current_position.z) return; do_blocking_move_to_z(zdest, TERN(HAS_BED_PROBE, z_probe_fast_mm_s, homing_feedrate(Z_AXIS))); } void do_z_clearance_by(const_float_t zclear) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_z_clearance_by(", zclear, ")"); - do_z_clearance(current_position.z + zclear); + do_z_clearance(current_position.z + zclear, false); } #endif diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index cdf1d7a969..c93b1ef205 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -403,10 +403,10 @@ void remember_feedrate_scaling_off(); void restore_feedrate_and_scaling(); #if HAS_Z_AXIS - void do_z_clearance(const_float_t zclear, const bool lower_allowed=false); + void do_z_clearance(const_float_t zclear, const bool with_probe=true, const bool lower_allowed=false); void do_z_clearance_by(const_float_t zclear); #else - inline void do_z_clearance(float, bool=false) {} + inline void do_z_clearance(float, bool=true, bool=false) {} inline void do_z_clearance_by(float) {} #endif diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index b2c1c2b8de..ff4ca58a6f 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -349,17 +349,6 @@ xyz_pos_t Probe::offset; // Initialized by settings.load() #endif // HAS_QUIET_PROBING -/** - * Raise Z to a minimum height to make room for a probe to move - */ -void Probe::do_z_raise(const float z_raise) { - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Probe::do_z_raise(", z_raise, ")"); - float z_dest = z_raise; - const float zoffs = DIFF_TERN(HAS_HOTEND_OFFSET, offset.z, hotend_offset[active_extruder].z); - if (zoffs < 0) z_dest -= zoffs; - do_z_clearance(z_dest); -} - FORCE_INLINE void probe_specific_action(const bool deploy) { DEBUG_SECTION(log_psa, "Probe::probe_specific_action", DEBUGGING(LEVELING)); #if ENABLED(PAUSE_BEFORE_DEPLOY_STOW) @@ -522,8 +511,11 @@ bool Probe::set_deployed(const bool deploy, const bool no_return/*=false*/) { constexpr bool z_raise_wanted = true; #endif - if (z_raise_wanted) - do_z_raise(_MAX(Z_CLEARANCE_BETWEEN_PROBES, Z_CLEARANCE_DEPLOY_PROBE)); + if (z_raise_wanted) { + const float zdest = DIFF_TERN(HAS_HOTEND_OFFSET, _MAX(Z_CLEARANCE_BETWEEN_PROBES, Z_CLEARANCE_DEPLOY_PROBE), hotend_offset[active_extruder].z); + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Raise Z to ", zdest); + do_z_clearance(zdest); + } #if EITHER(Z_PROBE_SLED, Z_PROBE_ALLEN_KEY) if (homing_needed_error(TERN_(Z_PROBE_SLED, _BV(X_AXIS)))) { diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 03544690b5..4545daa31e 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -352,7 +352,6 @@ public: private: static bool probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s); - static void do_z_raise(const float z_raise); static float run_z_probe(const bool sanity_check=true); }; diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 29c3a787c5..43ef774948 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -982,7 +982,7 @@ volatile bool Temperature::raw_temps_ready = false; planner.sync_fan_speeds(fan_speed); #endif - do_z_clearance(MPC_TUNING_END_Z); + do_z_clearance(MPC_TUNING_END_Z, false); TERN_(TEMP_TUNING_MAINTAIN_FAN, adaptive_fan_slowing = true); } From 8c0ae93d2af2b55197de856529384e8a79967f92 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 11 Apr 2023 18:43:18 -0500 Subject: [PATCH 251/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Cla?= =?UTF-8?q?rify=20G28=20R=20/=20R0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/calibrate/G28.cpp | 35 +++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index e279b90e33..b5e7a13295 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -408,17 +408,40 @@ void GcodeSuite::G28() { #endif #endif + // Z may home first, e.g., when homing away from the bed TERN_(HOME_Z_FIRST, if (doZ) homeaxis(Z_AXIS)); + // 'R' to specify a specific raise. 'R0' indicates no raise, e.g., for recovery.resume + // When 'R0' is used, there should already be adequate clearance, e.g., from homing Z to max. const bool seenR = parser.seenval('R'); - const float z_homing_height = seenR ? parser.value_linear_units() : Z_HOMING_HEIGHT; - if (z_homing_height && (seenR || NUM_AXIS_GANG(doX, || doY, || TERN0(Z_SAFE_HOMING, doZ), || doI, || doJ, || doK, || doU, || doV, || doW))) { - // Raise Z before homing any other axes and z is not already high enough (never lower z) - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Raise Z (before homing) by ", z_homing_height); - do_z_clearance(z_homing_height); - TERN_(BLTOUCH, bltouch.init()); + // Use raise given by 'R' or Z_HOMING_HEIGHT (above the probe trigger point) + float z_homing_height = seenR ? parser.value_linear_units() : Z_HOMING_HEIGHT; + + // Check for any lateral motion that might require clearance + const bool may_skate = seenR || NUM_AXIS_GANG(doX, || doY, || TERN0(Z_SAFE_HOMING, doZ), || doI, || doJ, || doK, || doU, || doV, || doW); + + if (seenR && z_homing_height == 0) { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("R0 = No Z raise"); } + else { + bool with_probe = ENABLED(HOMING_Z_WITH_PROBE); + // Raise above the current Z (which should be synced in the planner) + // The "height" for Z is a coordinate. But if Z is not trusted/homed make it relative. + if (seenR || !TERN(HOME_AFTER_DEACTIVATE, axis_is_trusted, axis_was_homed)(Z_AXIS)) { + z_homing_height += current_position.z; + with_probe = false; + } + + if (may_skate) { + // Apply Z clearance before doing any lateral motion + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Raise Z before homing:"); + do_z_clearance(z_homing_height, with_probe); + } + } + + // Init BLTouch ahead of any lateral motion, even if not homing with the probe + TERN_(BLTOUCH, if (may_skate) bltouch.init()); // Diagonal move first if both are homing TERN_(QUICK_HOME, if (doX && doY) quick_home_xy()); From c599c939c1d50bcda4cd8f491ac6bd36d9c4d56f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 11 Apr 2023 17:54:02 -0500 Subject: [PATCH 252/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Mod?= =?UTF-8?q?ify=20try=5Fto=5Fprobe=20sanity-checking?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/probe.cpp | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index ff4ca58a6f..945ebcdca5 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -702,6 +702,10 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { * @details Used by probe_at_point to get the bed Z height at the current XY. * Leaves current_position.z at the height where the probe triggered. * + * @param sanity_check Flag to compare the probe result with the expected result + * based on the probe Z offset. If the result is too far away + * (more than 2mm too early) then consider it an error. + * * @return The Z position of the bed at the current XY or NAN on error. */ float Probe::run_z_probe(const bool sanity_check/*=true*/) { @@ -709,22 +713,24 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { const float zoffs = SUM_TERN(HAS_HOTEND_OFFSET, -offset.z, hotend_offset[active_extruder].z); - auto try_to_probe = [&](PGM_P const plbl, const_float_t z_probe_low_point, const feedRate_t fr_mm_s, const bool scheck, const float clearance) -> bool { - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("try_to_probe(..., ", z_probe_low_point, ", ", fr_mm_s, ", ", scheck, ", ", clearance); + auto try_to_probe = [&](PGM_P const plbl, const_float_t z_probe_low_point, const feedRate_t fr_mm_s, const bool scheck) -> bool { + constexpr float error_tolerance = 2.0f; + if (DEBUGGING(LEVELING)) { + DEBUG_ECHOPGM_P(plbl); + DEBUG_ECHOLNPGM("> try_to_probe(..., ", z_probe_low_point, ", ", fr_mm_s, ", ...)"); + } // Tare the probe, if supported if (TERN0(PROBE_TARE, tare())) return true; // Do a first probe at the fast speed - const bool probe_fail = probe_down_to_z(z_probe_low_point, fr_mm_s), // No probe trigger? - early_fail = (scheck && current_position.z > zoffs + clearance); // Probe triggered too high? + const bool probe_fail = probe_down_to_z(z_probe_low_point, fr_mm_s), // No probe trigger? + early_fail = (scheck && current_position.z > zoffs + error_tolerance); // Probe triggered too high? #if ENABLED(DEBUG_LEVELING_FEATURE) if (DEBUGGING(LEVELING) && (probe_fail || early_fail)) { - DEBUG_ECHOPGM_P(plbl); - DEBUG_ECHOPGM(" Probe fail! -"); - if (probe_fail) DEBUG_ECHOPGM(" No trigger."); - if (early_fail) DEBUG_ECHOPGM(" Triggered early."); - DEBUG_EOL(); + DEBUG_ECHOPGM(" Probe fail! - "); + if (probe_fail) DEBUG_ECHOLNPGM("No trigger."); + if (early_fail) DEBUG_ECHOLNPGM("Triggered early (above ", zoffs + error_tolerance, "mm)"); } #else UNUSED(plbl); @@ -733,7 +739,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { }; // Stop the probe before it goes too low to prevent damage. - // If Z isn't known then probe to -10mm. + // For known Z probe below the expected trigger point, otherwise -10mm. const float z_probe_low_point = axis_is_trusted(Z_AXIS) ? zoffs + Z_PROBE_LOW_POINT : -10.0f; if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Probe Low Point: ", z_probe_low_point); @@ -745,9 +751,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { if (TERN0(PROBE_TARE, tare())) return NAN; // Do a first probe at the fast speed - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Fast Probe:"); - if (try_to_probe(PSTR("FAST"), z_probe_low_point, z_probe_fast_mm_s, - sanity_check, Z_CLEARANCE_BETWEEN_PROBES) ) return NAN; + if (try_to_probe(PSTR("FAST"), z_probe_low_point, z_probe_fast_mm_s, sanity_check)) return NAN; const float z1 = DIFF_TERN(HAS_DELTA_SENSORLESS_PROBING, current_position.z, largest_sensorless_adj); if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("1st Probe Z:", z1); @@ -787,8 +791,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { // Probe downward slowly to find the bed if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Slow Probe:"); - if (try_to_probe(PSTR("SLOW"), z_probe_low_point, MMM_TO_MMS(Z_PROBE_FEEDRATE_SLOW), - sanity_check, Z_CLEARANCE_MULTI_PROBE) ) return NAN; + if (try_to_probe(PSTR("SLOW"), z_probe_low_point, MMM_TO_MMS(Z_PROBE_FEEDRATE_SLOW), sanity_check)) return NAN; TERN_(MEASURE_BACKLASH_WHEN_PROBING, backlash.measure_with_probe()); From 4e73fdd03ae4a89ba3449c9da377f2901678ea6d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 11 Apr 2023 18:11:45 -0500 Subject: [PATCH 253/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Upd?= =?UTF-8?q?ate=20move=5Fz=5Fafter=5Fprobing/homing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/probe.h | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 4545daa31e..ebae929439 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -173,12 +173,6 @@ public: #endif // !IS_KINEMATIC - static void move_z_after_probing() { - DEBUG_SECTION(mzah, "move_z_after_probing", DEBUGGING(LEVELING)); - #ifdef Z_AFTER_PROBING - do_z_clearance(Z_AFTER_PROBING, true); // Move down still permitted - #endif - } static float probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRaise raise_after=PROBE_PT_NONE, const uint8_t verbose_level=0, const bool probe_relative=true, const bool sanity_check=true); static float probe_at_point(const xy_pos_t &pos, const ProbePtRaise raise_after=PROBE_PT_NONE, const uint8_t verbose_level=0, const bool probe_relative=true, const bool sanity_check=true) { return probe_at_point(pos.x, pos.y, raise_after, verbose_level, probe_relative, sanity_check); @@ -196,10 +190,17 @@ public: static void use_probing_tool(const bool=true) IF_DISABLED(DO_TOOLCHANGE_FOR_PROBING, {}); + #ifndef Z_AFTER_PROBING + #define Z_AFTER_PROBING 0 + #endif + static void move_z_after_probing(const float z=Z_AFTER_PROBING) { + DEBUG_SECTION(mzah, "move_z_after_probing", DEBUGGING(LEVELING)); + if (z != 0) do_z_clearance(z, true, true); // Move down still permitted + } static void move_z_after_homing() { DEBUG_SECTION(mzah, "move_z_after_homing", DEBUGGING(LEVELING)); - #if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) || defined(Z_AFTER_HOMING) - do_z_clearance(Z_POST_CLEARANCE, true); + #if defined(Z_AFTER_HOMING) || ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) + move_z_after_probing(Z_POST_CLEARANCE); #elif HAS_BED_PROBE move_z_after_probing(); #endif From b5899a96645894af4cdc6815e8b5def1ef85a347 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 11 Apr 2023 18:13:24 -0500 Subject: [PATCH 254/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Use?= =?UTF-8?q?=20largest=5Fsensorless=5Fadj=20in=20DELTA=20run=5Fz=5Fprobe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/probe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 945ebcdca5..ece14caac8 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -818,7 +818,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { #if EXTRA_PROBING > 0 < TOTAL_PROBING - 1 #endif - ) do_z_clearance(Z_CLEARANCE_MULTI_PROBE); + ) do_z_clearance(z + (Z_CLEARANCE_MULTI_PROBE), false); #endif } From b3a3cf28d244c02f89303d09d6b5d6cbdc90dd53 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 11 Apr 2023 18:14:43 -0500 Subject: [PATCH 255/659] =?UTF-8?q?=F0=9F=9A=B8=20More=20clearance=20on=20?= =?UTF-8?q?fast=20probe=20failure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/probe.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index ece14caac8..7aa6595e28 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -767,7 +767,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { if (current_position.z > z) { // Probe down fast. If the probe never triggered, raise for probe clearance if (!probe_down_to_z(z, z_probe_fast_mm_s)) - do_z_clearance(Z_CLEARANCE_BETWEEN_PROBES); + do_z_clearance(Z_PROBE_SAFE_CLEARANCE); } #endif @@ -886,7 +886,6 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { #endif /** - * - Switch to PROBING_TOOL if necessary * - Move to the given XY * - Deploy the probe, if not already deployed * - Probe the bed, get the Z position From b1537135e4abaf6c0dd85aa00160f63306d8a83f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 11 Apr 2023 18:18:37 -0500 Subject: [PATCH 256/659] =?UTF-8?q?=F0=9F=9A=B8=20BLTouch=20extra=20cleara?= =?UTF-8?q?nce=20for=20PROBE=5FPT=5FRAISE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/probe.cpp | 64 ++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 7aa6595e28..0f2fca119c 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -943,45 +943,45 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai do_blocking_move_to(npos, feedRate_t(XY_PROBE_FEEDRATE_MM_S)); #if ENABLED(BD_SENSOR) + return current_position.z - bdl.read(); // Difference between Z-home-relative Z and sensor reading - #endif - float measured_z = NAN; - if (!deploy()) { - measured_z = run_z_probe(sanity_check) + offset.z; - TERN_(HAS_PTC, ptc.apply_compensation(measured_z)); - TERN_(X_AXIS_TWIST_COMPENSATION, measured_z += xatc.compensation(npos + offset_xy)); - } + #else // !BD_SENSOR - // Deploy succeeded and a successful measurement was done. - // Raise and/or stow the probe depending on 'raise_after' and settings. - if (!isnan(measured_z)) { - const ProbePtRaise raise_type = (TERN0(BLTOUCH, !bltouch.high_speed_mode) && raise_after == PROBE_PT_RAISE) ? PROBE_PT_STOW : raise_after; - switch (raise_type) { - default: break; - case PROBE_PT_RAISE: - do_z_clearance(Z_CLEARANCE_BETWEEN_PROBES); - break; - case PROBE_PT_STOW: case PROBE_PT_LAST_STOW: - if (stow()) measured_z = NAN; // Error on stow? - break; + float measured_z = deploy() ? NAN : run_z_probe(sanity_check) + offset.z; + + // Deploy succeeded and a successful measurement was done. + // Raise and/or stow the probe depending on 'raise_after' and settings. + if (!isnan(measured_z)) { + switch (raise_after) { + default: break; + case PROBE_PT_RAISE: + do_z_clearance(Z_PROBE_SAFE_CLEARANCE); + break; + case PROBE_PT_STOW: case PROBE_PT_LAST_STOW: + if (stow()) measured_z = NAN; // Error on stow? + break; + } } - if (verbose_level > 2) - SERIAL_ECHOLNPGM("Bed X: ", LOGICAL_X_POSITION(rx), " Y: ", LOGICAL_Y_POSITION(ry), " Z: ", measured_z); - } + // If any error occurred stow the probe and set an alert + if (isnan(measured_z)) { + stow(); + LCD_MESSAGE(MSG_LCD_PROBING_FAILED); + #if DISABLED(G29_RETRY_AND_RECOVER) + SERIAL_ERROR_MSG(STR_ERR_PROBING_FAILED); + #endif + } + else { + TERN_(HAS_PTC, ptc.apply_compensation(measured_z)); + TERN_(X_AXIS_TWIST_COMPENSATION, measured_z += xatc.compensation(npos + offset_xy)); + if (verbose_level > 2 || DEBUGGING(LEVELING)) + SERIAL_ECHOLNPGM("Bed X: ", LOGICAL_X_POSITION(rx), " Y: ", LOGICAL_Y_POSITION(ry), " Z: ", measured_z); + } - // If any error occurred stow the probe and set an alert - if (isnan(measured_z)) { - stow(); - LCD_MESSAGE(MSG_LCD_PROBING_FAILED); - #if DISABLED(G29_RETRY_AND_RECOVER) - SERIAL_ERROR_MSG(STR_ERR_PROBING_FAILED); - #endif - } - DEBUG_ECHOLNPGM("measured_z: ", measured_z); + return measured_z; - return measured_z; + #endif // !BD_SENSOR } #if HAS_Z_SERVO_PROBE From 7369a6a37b39d89ce92bcfebec74d60ecd74ff22 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 12 Apr 2023 00:22:30 +0000 Subject: [PATCH 257/659] [cron] Bump distribution date (2023-04-12) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 3d66f31569..3378da8cb0 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-11" +//#define STRING_DISTRIBUTION_DATE "2023-04-12" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index b13a8fceef..050196ca90 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-11" + #define STRING_DISTRIBUTION_DATE "2023-04-12" #endif /** From f5c7b190f6169f0a213ef4b088e9c4b5ef33b2b8 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 11 Apr 2023 23:22:36 -0500 Subject: [PATCH 258/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20BLTOUCH=5FHS=5FMOD?= =?UTF-8?q?E=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 2 +- Marlin/src/feature/bltouch.cpp | 2 +- Marlin/src/feature/bltouch.h | 4 ++-- Marlin/src/gcode/probe/M401_M402.cpp | 4 ++-- Marlin/src/inc/Conditionals_adv.h | 11 ++++++++--- Marlin/src/inc/SanityCheck.h | 8 ++++---- Marlin/src/lcd/e3v2/proui/dwin.cpp | 8 +++----- Marlin/src/lcd/menu/menu_configuration.cpp | 2 +- Marlin/src/module/settings.cpp | 10 ++++------ 9 files changed, 26 insertions(+), 25 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 17255d1f25..dd96459004 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -987,7 +987,7 @@ */ //#define BLTOUCH_HS_MODE true - #if ENABLED(BLTOUCH_HS_MODE) + #ifdef BLTOUCH_HS_MODE // The probe Z offset (M851 Z) is the height at which the probe triggers. // This must be large enough to keep the probe pin off the bed and prevent // it from snagging on the bed clips. diff --git a/Marlin/src/feature/bltouch.cpp b/Marlin/src/feature/bltouch.cpp index 1c6c1eb4aa..02f76c1392 100644 --- a/Marlin/src/feature/bltouch.cpp +++ b/Marlin/src/feature/bltouch.cpp @@ -29,7 +29,7 @@ BLTouch bltouch; bool BLTouch::od_5v_mode; // Initialized by settings.load, 0 = Open Drain; 1 = 5V Drain -#ifdef BLTOUCH_HS_MODE +#if HAS_BLTOUCH_HS_MODE bool BLTouch::high_speed_mode; // Initialized by settings.load, 0 = Low Speed; 1 = High Speed #else constexpr bool BLTouch::high_speed_mode; diff --git a/Marlin/src/feature/bltouch.h b/Marlin/src/feature/bltouch.h index 2ced649a4e..0f9f2e68ba 100644 --- a/Marlin/src/feature/bltouch.h +++ b/Marlin/src/feature/bltouch.h @@ -70,13 +70,13 @@ public: static void init(const bool set_voltage=false); static bool od_5v_mode; // Initialized by settings.load, 0 = Open Drain; 1 = 5V Drain - #ifdef BLTOUCH_HS_MODE + #if HAS_BLTOUCH_HS_MODE static bool high_speed_mode; // Initialized by settings.load, 0 = Low Speed; 1 = High Speed #else static constexpr bool high_speed_mode = false; #endif - static float z_extra_clearance() { return high_speed_mode ? TERN0(BLTOUCH_HS_MODE, BLTOUCH_HS_EXTRA_CLEARANCE) : 0; } + static float z_extra_clearance() { return TERN0(HAS_BLTOUCH_HS_MODE, high_speed_mode ? BLTOUCH_HS_EXTRA_CLEARANCE : 0); } // DEPLOY and STOW are wrapped for error handling - these are used by homing and by probing static bool deploy() { return deploy_proc(); } diff --git a/Marlin/src/gcode/probe/M401_M402.cpp b/Marlin/src/gcode/probe/M401_M402.cpp index d81c04f4a0..05230e05ea 100644 --- a/Marlin/src/gcode/probe/M401_M402.cpp +++ b/Marlin/src/gcode/probe/M401_M402.cpp @@ -28,7 +28,7 @@ #include "../../module/motion.h" #include "../../module/probe.h" -#ifdef BLTOUCH_HS_MODE +#if HAS_BLTOUCH_HS_MODE #include "../../feature/bltouch.h" #endif @@ -42,7 +42,7 @@ * R Remain in place after deploying (and before activating) the probe */ void GcodeSuite::M401() { - #ifdef BLTOUCH_HS_MODE + #if HAS_BLTOUCH_HS_MODE const bool seenH = parser.seen_test('H'), seenS = parser.seen('S'); if (seenH || seenS) { diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 3295626722..edee5e9bd2 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -76,9 +76,14 @@ #endif // !defined(NUM_SERVOS) // Convenience override for a BLTouch alone -#if ENABLED(BLTOUCH) && NUM_SERVOS == 1 - #undef SERVO_DELAY - #define SERVO_DELAY { 50 } +#if ENABLED(BLTOUCH) + #ifdef BLTOUCH_HS_MODE + #define HAS_BLTOUCH_HS_MODE 1 + #endif + #if NUM_SERVOS == 1 + #undef SERVO_DELAY + #define SERVO_DELAY { 50 } + #endif #endif #if !HAS_BED_PROBE diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 5c594abff3..84118729a2 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1895,10 +1895,10 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #endif #endif - #if ENABLED(BLTOUCH_HS_MODE) - #if BLTOUCH_HS_MODE == 0 - #error "BLTOUCH_HS_MODE must now be defined as true or false, indicating the default state." - #endif + #if HAS_BLTOUCH_HS_MODE + constexpr char hs[] = STRINGIFY(BLTOUCH_HS_MODE); + static_assert(!(strcmp(hs, "1") && strcmp(hs, "true") && strcmp(hs, "0") && strcmp(hs, "false")), \ + "BLTOUCH_HS_MODE must now be defined as true or false, indicating the default state."); #ifdef BLTOUCH_HS_EXTRA_CLEARANCE static_assert(BLTOUCH_HS_EXTRA_CLEARANCE > 0, "BLTOUCH_HS_MODE requires a positive BLTOUCH_HS_EXTRA_CLEARANCE."); #endif diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index adc6fca72a..af157921d5 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -2211,10 +2211,8 @@ void SetMoveZ() { HMI_value.axis = Z_AXIS; SetPFloatOnClick(Z_MIN_POS, Z_MAX_POS void ProbeStow() { probe.stow(); } void ProbeDeploy() { probe.deploy(); } - #if ENABLED(BLTOUCH_HS_MODE) - void SetHSMode() { - Toggle_Chkb_Line(bltouch.high_speed_mode); - } + #if HAS_BLTOUCH_HS_MODE + void SetHSMode() { Toggle_Chkb_Line(bltouch.high_speed_mode); } #endif #endif @@ -3184,7 +3182,7 @@ void Draw_Move_Menu() { MENU_ITEM(ICON_ProbeStow, MSG_MANUAL_STOW, onDrawMenuItem, ProbeStow); MENU_ITEM(ICON_ProbeDeploy, MSG_MANUAL_DEPLOY, onDrawMenuItem, ProbeDeploy); MENU_ITEM(ICON_BltouchReset, MSG_BLTOUCH_RESET, onDrawMenuItem, bltouch._reset); - #if ENABLED(BLTOUCH_HS_MODE) + #if HAS_BLTOUCH_HS_MODE EDIT_ITEM(ICON_HSMode, MSG_ENABLE_HS_MODE, onDrawChkbMenu, SetHSMode, &bltouch.high_speed_mode); #endif #endif diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index e50cd69f63..4dce109b42 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -243,7 +243,7 @@ void menu_advanced_settings(); ACTION_ITEM(MSG_BLTOUCH_DEPLOY, bltouch._deploy); ACTION_ITEM(MSG_BLTOUCH_STOW, bltouch._stow); ACTION_ITEM(MSG_BLTOUCH_SW_MODE, bltouch._set_SW_mode); - #ifdef BLTOUCH_HS_MODE + #if HAS_BLTOUCH_HS_MODE EDIT_ITEM(bool, MSG_BLTOUCH_SPEED_MODE, &bltouch.high_speed_mode); #endif #if ENABLED(BLTOUCH_LCD_VOLTAGE_MENU) diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 0be7f965a4..ca5b940c5d 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -322,7 +322,7 @@ typedef struct SettingsDataStruct { // BLTOUCH // bool bltouch_od_5v_mode; - #ifdef BLTOUCH_HS_MODE + #if HAS_BLTOUCH_HS_MODE bool bltouch_high_speed_mode; // M401 S #endif @@ -1016,7 +1016,7 @@ void MarlinSettings::postprocess() { const bool bltouch_od_5v_mode = TERN0(BLTOUCH, bltouch.od_5v_mode); EEPROM_WRITE(bltouch_od_5v_mode); - #ifdef BLTOUCH_HS_MODE + #if HAS_BLTOUCH_HS_MODE _FIELD_TEST(bltouch_high_speed_mode); const bool bltouch_high_speed_mode = TERN0(BLTOUCH, bltouch.high_speed_mode); EEPROM_WRITE(bltouch_high_speed_mode); @@ -1976,7 +1976,7 @@ void MarlinSettings::postprocess() { #endif EEPROM_READ(bltouch_od_5v_mode); - #ifdef BLTOUCH_HS_MODE + #if HAS_BLTOUCH_HS_MODE _FIELD_TEST(bltouch_high_speed_mode); #if ENABLED(BLTOUCH) const bool &bltouch_high_speed_mode = bltouch.high_speed_mode; @@ -3075,9 +3075,7 @@ void MarlinSettings::reset() { // // BLTouch // - #ifdef BLTOUCH_HS_MODE - bltouch.high_speed_mode = ENABLED(BLTOUCH_HS_MODE); - #endif + TERN_(HAS_BLTOUCH_HS_MODE, bltouch.high_speed_mode = BLTOUCH_HS_MODE); // // Kinematic Settings (Delta, SCARA, TPARA, Polargraph...) From 0f341635582a205e56ee8007ba0c4bb4545f59cf Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 11 Apr 2023 21:26:46 -0500 Subject: [PATCH 259/659] =?UTF-8?q?=F0=9F=9A=B8=20Minor=20M43=20improvemen?= =?UTF-8?q?ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/AVR/pinsDebug.h | 10 ++++++---- Marlin/src/gcode/config/M43.cpp | 35 ++++++++++++++++++++++++++++----- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/Marlin/src/HAL/AVR/pinsDebug.h b/Marlin/src/HAL/AVR/pinsDebug.h index dab4e44715..b91bde182d 100644 --- a/Marlin/src/HAL/AVR/pinsDebug.h +++ b/Marlin/src/HAL/AVR/pinsDebug.h @@ -64,11 +64,13 @@ #define VALID_PIN(pin) (pin >= 0 && pin < NUM_DIGITAL_PINS ? 1 : 0) #if AVR_ATmega1284_FAMILY - #define DIGITAL_PIN_TO_ANALOG_PIN(P) int(analogInputToDigitalPin(0) - (P)) - #define IS_ANALOG(P) ((P) >= analogInputToDigitalPin(7) && (P) <= analogInputToDigitalPin(0)) + #define IS_ANALOG(P) WITHIN(P, analogInputToDigitalPin(7), analogInputToDigitalPin(0)) + #define DIGITAL_PIN_TO_ANALOG_PIN(P) int(IS_ANALOG(P) ? (P) - analogInputToDigitalPin(7) : -1) #else - #define DIGITAL_PIN_TO_ANALOG_PIN(P) int((P) - analogInputToDigitalPin(0)) - #define IS_ANALOG(P) ((P) >= analogInputToDigitalPin(0) && ((P) <= analogInputToDigitalPin(15) || (P) <= analogInputToDigitalPin(7))) + #define _ANALOG1(P) WITHIN(P, analogInputToDigitalPin(0), analogInputToDigitalPin(7)) + #define _ANALOG2(P) WITHIN(P, analogInputToDigitalPin(8), analogInputToDigitalPin(15)) + #define IS_ANALOG(P) (_ANALOG1(P) || _ANALOG2(P)) + #define DIGITAL_PIN_TO_ANALOG_PIN(P) int(_ANALOG1(P) ? (P) - analogInputToDigitalPin(0) : _ANALOG2(P) ? (P) - analogInputToDigitalPin(8) + 8 : -1) #endif #define GET_ARRAY_PIN(p) pgm_read_byte(&pin_array[p].pin) #define MULTI_NAME_PAD 26 // space needed to be pretty if not first name assigned to a pin diff --git a/Marlin/src/gcode/config/M43.cpp b/Marlin/src/gcode/config/M43.cpp index d408ded3ac..a3e837eb53 100644 --- a/Marlin/src/gcode/config/M43.cpp +++ b/Marlin/src/gcode/config/M43.cpp @@ -305,7 +305,7 @@ void GcodeSuite::M43() { // 'P' Get the range of pins to test or watch uint8_t first_pin = PARSED_PIN_INDEX('P', 0), - last_pin = parser.seenval('L') ? PARSED_PIN_INDEX('L', 0) : parser.seenval('P') ? first_pin : (NUMBER_PINS_TOTAL) - 1; + last_pin = parser.seenval('L') ? PARSED_PIN_INDEX('L', 0) : (parser.seenval('P') ? first_pin : (NUMBER_PINS_TOTAL) - 1); NOMORE(first_pin, (NUMBER_PINS_TOTAL) - 1); NOMORE(last_pin, (NUMBER_PINS_TOTAL) - 1); @@ -321,15 +321,18 @@ void GcodeSuite::M43() { // 'W' Watch until click, M108, or reset if (parser.boolval('W')) { - SERIAL_ECHOLNPGM("Watching pins"); #ifdef ARDUINO_ARCH_SAM NOLESS(first_pin, 2); // Don't hijack the UART pins #endif - uint8_t pin_state[last_pin - first_pin + 1]; + + const uint8_t pin_count = last_pin - first_pin + 1; + uint8_t pin_state[pin_count]; + bool can_watch = false; LOOP_S_LE_N(i, first_pin, last_pin) { pin_t pin = GET_PIN_MAP_PIN_M43(i); if (!VALID_PIN(pin)) continue; if (M43_NEVER_TOUCH(i) || (!ignore_protection && pin_is_protected(pin))) continue; + can_watch = true; pinMode(pin, INPUT_PULLUP); delay(1); /* @@ -340,11 +343,31 @@ void GcodeSuite::M43() { pin_state[i - first_pin] = extDigitalRead(pin); } + const bool multipin = (pin_count > 1); + + if (!can_watch) { + SERIAL_ECHOPGM("Specified pin"); + SERIAL_ECHOPGM_P(multipin ? PSTR("s are") : PSTR(" is")); + SERIAL_ECHOLNPGM(" protected. Use 'I' to override."); + return; + } + + // "Watching pin(s) # - #" + SERIAL_ECHOPGM("Watching pin"); + if (multipin) SERIAL_CHAR('s'); + SERIAL_CHAR(' '); SERIAL_ECHO(first_pin); + if (multipin) SERIAL_ECHOPGM(" - ", last_pin); + SERIAL_EOL(); + #if HAS_RESUME_CONTINUE KEEPALIVE_STATE(PAUSED_FOR_USER); wait_for_user = true; - TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, F("M43 Wait Called"), FPSTR(CONTINUE_STR))); - TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(F("M43 Wait Called"))); + TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, F("M43 Waiting..."), FPSTR(CONTINUE_STR))); + #if ENABLED(EXTENSIBLE_UI) + ExtUI::onUserConfirmRequired(F("M43 Waiting...")); + #else + LCD_MESSAGE(MSG_USERWAIT); + #endif #endif for (;;) { @@ -372,6 +395,8 @@ void GcodeSuite::M43() { safe_delay(200); } + + TERN_(HAS_RESUME_CONTINUE, ui.reset_status()); } else { // Report current state of selected pin(s) From cbe796e2d61af12b964545abacc35c381f1774a3 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 13 Apr 2023 00:19:21 +0000 Subject: [PATCH 260/659] [cron] Bump distribution date (2023-04-13) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 3378da8cb0..ae6921d527 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-12" +//#define STRING_DISTRIBUTION_DATE "2023-04-13" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 050196ca90..afa580dc40 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-12" + #define STRING_DISTRIBUTION_DATE "2023-04-13" #endif /** From c3f34e4eb2fb64c9e38beef6f0bdbc921e688ad4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 11 Apr 2023 21:28:21 -0500 Subject: [PATCH 261/659] =?UTF-8?q?=F0=9F=94=A7=20Move=20FIL=5FRUNOUT=5FPI?= =?UTF-8?q?N=20for=20Chiron=20+=20GLCD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/ramps/pins_TRIGORILLA_14.h | 34 +++++++++++++++------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h index 0e6e8ee41d..9e761fd247 100644 --- a/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h +++ b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h @@ -53,6 +53,23 @@ #define E0_AUTO_FAN_PIN FAN2_PIN #endif +/** + * Trigorilla Plugs (oriented with stepper plugs at the top) + * + * AUX : D42 GND 5V (Chiron Y-STOP) + * D43 GND 5V (Chiron Z-STOP) + * + * UART3 : GND D15 D14 5V + * (RX3 TX3) + * + * IIC : 12V GND D21 D20 GND 5V + * (SCL SDA) + * + * END STOPS : D19 D18 D15 D14 D2 D3 + * GND GND GND GND GND GND + * 5V 5V 5V 5V 5V 5V + */ + // // AnyCubic pin mappings // @@ -61,9 +78,6 @@ // - TRIGORILLA_MAPPING_I3MEGA // -// -// Limit Switches -// //#define ANYCUBIC_4_MAX_PRO_ENDSTOPS #if ENABLED(ANYCUBIC_4_MAX_PRO_ENDSTOPS) #define X_MAX_PIN 43 @@ -75,7 +89,7 @@ #define Z2_MIN_PIN 18 // Z- #ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN 2 + #define Z_MIN_PROBE_PIN 2 // X+ #endif #define CONTROLLER_FAN_PIN FAN1_PIN @@ -86,14 +100,14 @@ #endif #if ENABLED(TRIGORILLA_MAPPING_CHIRON) - #ifndef FIL_RUNOUT_PIN - #define FIL_RUNOUT_PIN 33 + #if ENABLED(ANYCUBIC_LCD_CHIRON) && !defined(FIL_RUNOUT_PIN) + #define FIL_RUNOUT_PIN 33 // Chiron LCD Adapter only #endif #define HEATER_BED_PIN MOSFET_B_PIN // HEATER1 - #else - #ifndef FIL_RUNOUT_PIN - #define FIL_RUNOUT_PIN 19 - #endif + #endif + + #ifndef FIL_RUNOUT_PIN + #define FIL_RUNOUT_PIN 19 // Z+ #endif #if EITHER(TRIGORILLA_MAPPING_CHIRON, SWAP_Z_MOTORS) From b3198ed92942c848bea66a6e41b02ec1d11471ff Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 13 Apr 2023 04:05:56 -0500 Subject: [PATCH 262/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20AUTOFAN=5FCASE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25554 --- Marlin/src/module/temperature.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 43ef774948..43bf31e0e7 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -1290,8 +1290,9 @@ int16_t Temperature::getHeaterPower(const heater_id_t heater_id) { #else #define _AUTOFAN_SPEED() EXTRUDER_AUTO_FAN_SPEED #endif - #define _AUTOFAN_CASE(N) case N: _UPDATE_AUTO_FAN(E##N, fan_on, _AUTOFAN_SPEED()); break - #define AUTOFAN_CASE(N) OPTCODE(HAS_AUTO_FAN_##N, _AUTOFAN_CASE(N)) + #define _AUTOFAN_CASE(N) case N: _UPDATE_AUTO_FAN(E##N, fan_on, _AUTOFAN_SPEED()); break; + #define _AUTOFAN_NOT(N) + #define AUTOFAN_CASE(N) TERN(HAS_AUTO_FAN_##N, _AUTOFAN_CASE, _AUTOFAN_NOT)(N) switch (f) { REPEAT(8, AUTOFAN_CASE) From c8cb618faca2ec88681dfdd1b36ab6d160036b33 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 13 Apr 2023 04:06:35 -0500 Subject: [PATCH 263/659] =?UTF-8?q?=F0=9F=94=A8=20Improve=20runout=20scrip?= =?UTF-8?q?t=20check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/share/PlatformIO/scripts/preflight-checks.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/buildroot/share/PlatformIO/scripts/preflight-checks.py b/buildroot/share/PlatformIO/scripts/preflight-checks.py index 08856350d2..3f7c97af9d 100644 --- a/buildroot/share/PlatformIO/scripts/preflight-checks.py +++ b/buildroot/share/PlatformIO/scripts/preflight-checks.py @@ -129,8 +129,10 @@ if pioutil.is_pio_build(): # if 'FILAMENT_RUNOUT_SENSOR' in env['MARLIN_FEATURES'] and 'NUM_RUNOUT_SENSORS' in env['MARLIN_FEATURES']: if env['MARLIN_FEATURES']['NUM_RUNOUT_SENSORS'].isdigit() and int(env['MARLIN_FEATURES']['NUM_RUNOUT_SENSORS']) > 1: - if 'FILAMENT_RUNOUT_SCRIPT' in env['MARLIN_FEATURES'] and "%c" not in env['MARLIN_FEATURES']['FILAMENT_RUNOUT_SCRIPT']: - err = "ERROR: FILAMENT_RUNOUT_SCRIPT needs a %c parameter when NUM_RUNOUT_SENSORS is > 1" - raise SystemExit(err) + if 'FILAMENT_RUNOUT_SCRIPT' in env['MARLIN_FEATURES']: + frs = env['MARLIN_FEATURES']['FILAMENT_RUNOUT_SCRIPT'] + if "M600" in frs and "%c" not in frs: + err = "ERROR: FILAMENT_RUNOUT_SCRIPT needs a %c parameter (e.g., \"M600 T%c\") when NUM_RUNOUT_SENSORS is > 1" + raise SystemExit(err) sanity_check_target() From c3921bbf3f9eae586ddac773a6992e1b638cbfb2 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 14 Apr 2023 00:19:41 +0000 Subject: [PATCH 264/659] [cron] Bump distribution date (2023-04-14) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index ae6921d527..f9d7ff2988 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-13" +//#define STRING_DISTRIBUTION_DATE "2023-04-14" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index afa580dc40..0bd02a67e8 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-13" + #define STRING_DISTRIBUTION_DATE "2023-04-14" #endif /** From 161b99cb54f5d6d183877902581d3d77e8a1fa78 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 14 Apr 2023 01:08:51 -0500 Subject: [PATCH 265/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20some=20bad=20feedr?= =?UTF-8?q?ates=20(#25672)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/feature/pause/G61.cpp | 4 +--- .../extui/dgus/fysetc/DGUSScreenHandler.cpp | 6 +++--- .../extui/dgus/hiprecy/DGUSScreenHandler.cpp | 6 +++--- .../lcd/extui/dgus/mks/DGUSScreenHandler.cpp | 6 +++--- .../extui/dgus/origin/DGUSScreenHandler.cpp | 6 +++--- .../generic/move_axis_screen.cpp | 10 ++++----- .../generic/move_axis_screen.h | 8 +++---- Marlin/src/lcd/extui/ui_api.cpp | 9 ++++---- Marlin/src/lcd/menu/menu_probe_offset.cpp | 2 +- Marlin/src/lcd/menu/menu_x_twist.cpp | 2 +- Marlin/src/module/motion.cpp | 18 ++++------------ Marlin/src/module/planner.h | 11 +++++----- Marlin/src/module/tool_change.cpp | 21 +++++++++---------- Marlin/src/module/tool_change.h | 4 ++-- 14 files changed, 50 insertions(+), 63 deletions(-) diff --git a/Marlin/src/gcode/feature/pause/G61.cpp b/Marlin/src/gcode/feature/pause/G61.cpp index 889709c045..0efcfbf208 100644 --- a/Marlin/src/gcode/feature/pause/G61.cpp +++ b/Marlin/src/gcode/feature/pause/G61.cpp @@ -71,7 +71,7 @@ void GcodeSuite::G61() { if (!TEST(saved_slots[slot >> 3], slot & 0x07)) return; // Apply any given feedrate over 0.0 - feedRate_t saved_feedrate = feedrate_mm_s; + REMEMBER(saved, feedrate_mm_s); const float fr = parser.linearval('F'); if (fr > 0.0) feedrate_mm_s = MMM_TO_MMS(fr); @@ -101,8 +101,6 @@ void GcodeSuite::G61() { } #endif } - - feedrate_mm_s = saved_feedrate; } #endif // SAVED_POSITIONS diff --git a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp index c6e000eeca..58f0ed8319 100644 --- a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp @@ -157,7 +157,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } #endif char axiscode; - uint16_t speed = _mf[X_AXIS]; // Default feedrate for manual moves + uint16_t speed = manual_feedrate_mm_m[X_AXIS]; // Default feedrate for manual moves switch (var.VP) { default: return; @@ -170,7 +170,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Y_AXIS case VP_MOVE_Y: axiscode = 'Y'; - speed = _mf[Y_AXIS]; + speed = manual_feedrate_mm_m[Y_AXIS]; if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; break; #endif @@ -178,7 +178,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Z_AXIS case VP_MOVE_Z: axiscode = 'Z'; - speed = _mf[Z_AXIS]; + speed = manual_feedrate_mm_m[Z_AXIS]; if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; break; #endif diff --git a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp index ca1a64123a..ebe3e3ba8a 100644 --- a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp @@ -157,7 +157,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } #endif char axiscode; - uint16_t speed = _mf[X_AXIS]; // Default feedrate for manual moves + uint16_t speed = manual_feedrate_mm_m[X_AXIS]; // Default feedrate for manual moves switch (var.VP) { default: return; @@ -170,7 +170,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Y_AXIS case VP_MOVE_Y: axiscode = 'Y'; - speed = _mf[Y_AXIS]; + speed = manual_feedrate_mm_m[Y_AXIS]; if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; break; #endif @@ -178,7 +178,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Z_AXIS case VP_MOVE_Z: axiscode = 'Z'; - speed = _mf[Z_AXIS]; + speed = manual_feedrate_mm_m[Z_AXIS]; if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; break; #endif diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp index 2dd4d0d19e..bdd5f4f018 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp @@ -739,7 +739,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { return; char axiscode; - uint16_t speed = _mf[X_AXIS]; // Default feedrate for manual moves + uint16_t speed = manual_feedrate_mm_m[X_AXIS]; // Default feedrate for manual moves switch (var.VP) { // switch X Y Z or Home default: return; @@ -751,7 +751,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Y_AXIS case VP_MOVE_Y: axiscode = 'Y'; - speed = _mf[Y_AXIS]; + speed = manual_feedrate_mm_m[Y_AXIS]; if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; break; #endif @@ -759,7 +759,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Z_AXIS case VP_MOVE_Z: axiscode = 'Z'; - speed = _mf[Z_AXIS]; + speed = manual_feedrate_mm_m[Z_AXIS]; if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; break; #endif diff --git a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp index 22fdd80fc9..edf9a5ca82 100644 --- a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp @@ -157,7 +157,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } #endif char axiscode; - uint16_t speed = _mf[X_AXIS]; // Default feedrate for manual moves + uint16_t speed = manual_feedrate_mm_m[X_AXIS]; // Default feedrate for manual moves switch (var.VP) { default: return; @@ -170,7 +170,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Y_AXIS case VP_MOVE_Y: axiscode = 'Y'; - speed = _mf[Y_AXIS]; + speed = manual_feedrate_mm_m[Y_AXIS]; if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; break; #endif @@ -178,7 +178,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Z_AXIS case VP_MOVE_Z: axiscode = 'Z'; - speed = _mf[Z_AXIS]; + speed = manual_feedrate_mm_m[Z_AXIS]; if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; break; #endif diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.cpp index c3927c21a7..c15ff1173f 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.cpp @@ -72,7 +72,7 @@ void MoveAxisScreen::onRedraw(draw_mode_t what) { w.increments(); } -bool BaseMoveAxisScreen::onTouchHeld(uint8_t tag) { +bool BaseMoveAxisScreen::onTouchHeld(const uint8_t tag) { #define UI_INCREMENT_AXIS(axis) setManualFeedrate(axis, increment); UI_INCREMENT(AxisPosition_mm, axis); #define UI_DECREMENT_AXIS(axis) setManualFeedrate(axis, increment); UI_DECREMENT(AxisPosition_mm, axis); const float increment = getIncrement(); @@ -120,20 +120,20 @@ void BaseMoveAxisScreen::raiseZtoTop() { setAxisPosition_mm(Z_MAX_POS - 5, Z, homing_feedrate.z); } -float BaseMoveAxisScreen::getManualFeedrate(uint8_t axis, float increment_mm) { +float BaseMoveAxisScreen::getManualFeedrate(const uint8_t axis, const_float_t increment_mm) { // Compute feedrate so that the tool lags the adjuster when it is // being held down, this allows enough margin for the planner to // connect segments and even out the motion. constexpr xyze_feedrate_t max_manual_feedrate = MANUAL_FEEDRATE; - return min(max_manual_feedrate[axis] / 60.0f, ABS(increment_mm * (TOUCH_REPEATS_PER_SECOND) * 0.80f)); + return min(MMM_TO_MMS(max_manual_feedrate[axis]), ABS(increment_mm * (TOUCH_REPEATS_PER_SECOND) * 0.80f)); } -void BaseMoveAxisScreen::setManualFeedrate(ExtUI::axis_t axis, float increment_mm) { +void BaseMoveAxisScreen::setManualFeedrate(const ExtUI::axis_t axis, const_float_t increment_mm) { ExtUI::setFeedrate_mm_s(getManualFeedrate(X_AXIS + (axis - ExtUI::X), increment_mm)); } #if HAS_EXTRUDERS - void BaseMoveAxisScreen::setManualFeedrate(ExtUI::extruder_t, float increment_mm) { + void BaseMoveAxisScreen::setManualFeedrate(const ExtUI::extruder_t, const_float_t increment_mm) { ExtUI::setFeedrate_mm_s(getManualFeedrate(E_AXIS, increment_mm)); } #endif diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.h index 16723cfc13..b26254c4df 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.h @@ -32,14 +32,14 @@ struct MoveAxisScreenData { class BaseMoveAxisScreen : public BaseNumericAdjustmentScreen { private: - static float getManualFeedrate(uint8_t axis, float increment_mm); + static float getManualFeedrate(const uint8_t axis, const_float_t increment_mm); public: static void raiseZtoTop(); - static void setManualFeedrate(ExtUI::axis_t, float increment_mm); - static void setManualFeedrate(ExtUI::extruder_t, float increment_mm); + static void setManualFeedrate(const ExtUI::axis_t, const_float_t increment_mm); + static void setManualFeedrate(const ExtUI::extruder_t, const_float_t increment_mm); static void onEntry(); - static bool onTouchHeld(uint8_t tag); + static bool onTouchHeld(const uint8_t tag); }; class MoveAxisScreen : public BaseMoveAxisScreen, public CachedScreen { diff --git a/Marlin/src/lcd/extui/ui_api.cpp b/Marlin/src/lcd/extui/ui_api.cpp index 7e47bef9c1..2b1f05d2bc 100644 --- a/Marlin/src/lcd/extui/ui_api.cpp +++ b/Marlin/src/lcd/extui/ui_api.cpp @@ -932,22 +932,21 @@ namespace ExtUI { void moveToMeshPoint(const xy_uint8_t &pos, const_float_t z) { #if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL) - const feedRate_t old_feedrate = feedrate_mm_s; + REMEMBER(fr, feedrate_mm_s); const float x_target = MESH_MIN_X + pos.x * (MESH_X_DIST), y_target = MESH_MIN_Y + pos.y * (MESH_Y_DIST); if (x_target != current_position.x || y_target != current_position.y) { // If moving across bed, raise nozzle to safe height over bed - feedrate_mm_s = Z_PROBE_FEEDRATE_FAST; + feedrate_mm_s = MMM_TO_MMS(Z_PROBE_FEEDRATE_FAST); destination.set(current_position.x, current_position.y, Z_CLEARANCE_BETWEEN_PROBES); prepare_line_to_destination(); - feedrate_mm_s = XY_PROBE_FEEDRATE; + feedrate_mm_s = XY_PROBE_FEEDRATE_MM_S; destination.set(x_target, y_target); prepare_line_to_destination(); } - feedrate_mm_s = Z_PROBE_FEEDRATE_FAST; + feedrate_mm_s = MMM_TO_MMS(Z_PROBE_FEEDRATE_FAST); destination.z = z; prepare_line_to_destination(); - feedrate_mm_s = old_feedrate; #else UNUSED(pos); UNUSED(z); diff --git a/Marlin/src/lcd/menu/menu_probe_offset.cpp b/Marlin/src/lcd/menu/menu_probe_offset.cpp index 428052bf2a..34172de458 100644 --- a/Marlin/src/lcd/menu/menu_probe_offset.cpp +++ b/Marlin/src/lcd/menu/menu_probe_offset.cpp @@ -119,7 +119,7 @@ void prepare_for_probe_offset_wizard() { // Move Nozzle to Probing/Homing Position ui.wait_for_move = true; current_position += probe.offset_xy; - line_to_current_position(MMM_TO_MMS(XY_PROBE_FEEDRATE)); + line_to_current_position(XY_PROBE_FEEDRATE_MM_S); ui.synchronize(GET_TEXT_F(MSG_PROBE_WIZARD_MOVING)); ui.wait_for_move = false; diff --git a/Marlin/src/lcd/menu/menu_x_twist.cpp b/Marlin/src/lcd/menu/menu_x_twist.cpp index d1850a1eb2..86ef3be7b9 100644 --- a/Marlin/src/lcd/menu/menu_x_twist.cpp +++ b/Marlin/src/lcd/menu/menu_x_twist.cpp @@ -141,7 +141,7 @@ void xatc_wizard_goto_next_point() { xatc.set_enabled(true); current_position += probe.offset_xy; current_position.z = (XATC_START_Z) - probe.offset.z + measured_z; - line_to_current_position(MMM_TO_MMS(XY_PROBE_FEEDRATE)); + line_to_current_position(XY_PROBE_FEEDRATE_MM_S); ui.wait_for_move = false; } else diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index d5d9ca8d34..219f219e59 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -525,25 +525,15 @@ void line_to_current_position(const_feedRate_t fr_mm_s/*=feedrate_mm_s*/) { void _internal_move_to_destination(const_feedRate_t fr_mm_s/*=0.0f*/ OPTARG(IS_KINEMATIC, const bool is_fast/*=false*/) ) { - const feedRate_t old_feedrate = feedrate_mm_s; + REMEMBER(fr, feedrate_mm_s); + REMEMBER(pct, feedrate_percentage, 100); + TERN_(HAS_EXTRUDERS, REMEMBER(fac, planner.e_factor[active_extruder], 1.0f)); + if (fr_mm_s) feedrate_mm_s = fr_mm_s; - - const uint16_t old_pct = feedrate_percentage; - feedrate_percentage = 100; - - #if HAS_EXTRUDERS - const float old_fac = planner.e_factor[active_extruder]; - planner.e_factor[active_extruder] = 1.0f; - #endif - if (TERN0(IS_KINEMATIC, is_fast)) TERN(IS_KINEMATIC, prepare_fast_move_to_destination(), NOOP); else prepare_line_to_destination(); - - feedrate_mm_s = old_feedrate; - feedrate_percentage = old_pct; - TERN_(HAS_EXTRUDERS, planner.e_factor[active_extruder] = old_fac); } /** diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index e2d1d6739c..030c1b31db 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -80,11 +80,12 @@ // Feedrate for manual moves #ifdef MANUAL_FEEDRATE - constexpr xyze_feedrate_t _mf = MANUAL_FEEDRATE, - manual_feedrate_mm_s = LOGICAL_AXIS_ARRAY(_mf.e / 60.0f, - _mf.x / 60.0f, _mf.y / 60.0f, _mf.z / 60.0f, - _mf.i / 60.0f, _mf.j / 60.0f, _mf.k / 60.0f, - _mf.u / 60.0f, _mf.v / 60.0f, _mf.w / 60.0f); + constexpr xyze_feedrate_t manual_feedrate_mm_m = MANUAL_FEEDRATE, + manual_feedrate_mm_s = LOGICAL_AXIS_ARRAY( + MMM_TO_MMS(manual_feedrate_mm_m.e), + MMM_TO_MMS(manual_feedrate_mm_m.x), MMM_TO_MMS(manual_feedrate_mm_m.y), MMM_TO_MMS(manual_feedrate_mm_m.z), + MMM_TO_MMS(manual_feedrate_mm_m.i), MMM_TO_MMS(manual_feedrate_mm_m.j), MMM_TO_MMS(manual_feedrate_mm_m.k), + MMM_TO_MMS(manual_feedrate_mm_m.u), MMM_TO_MMS(manual_feedrate_mm_m.v), MMM_TO_MMS(manual_feedrate_mm_m.w)); #endif #if IS_KINEMATIC && HAS_JUNCTION_DEVIATION diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index 43a50505ef..a91f6f742d 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -957,13 +957,12 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. * If cooling fan is enabled, calls filament_swap_cooling(); */ void extruder_prime() { - if (too_cold(active_extruder)) { FS_DEBUG("Priming Aborted - Nozzle Too Cold!"); return; // Extruder too cold to prime } - float fr = toolchange_settings.unretract_speed; // Set default speed for unretract + feedRate_t fr_mm_s = MMM_TO_MMS(toolchange_settings.unretract_speed); // Set default speed for unretract #if ENABLED(TOOLCHANGE_FS_SLOW_FIRST_PRIME) /** @@ -973,18 +972,19 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. if (!extruder_did_first_prime[active_extruder]) { extruder_did_first_prime.set(active_extruder); // Log first prime complete // new nozzle - prime at user-specified speed. - FS_DEBUG("First time priming T", active_extruder, ", reducing speed from ", MMM_TO_MMS(fr), " to ", MMM_TO_MMS(toolchange_settings.prime_speed), "mm/s"); - fr = toolchange_settings.prime_speed; - unscaled_e_move(0, MMM_TO_MMS(fr)); // Init planner with 0 length move + const feedRate_t prime_mm_s = MMM_TO_MMS(toolchange_settings.prime_speed); + FS_DEBUG("First time priming T", active_extruder, ", reducing speed from ", fr_mm_s, " to ", prime_mm_s, "mm/s"); + fr_mm_s = prime_mm_s; + unscaled_e_move(0, fr_mm_s); // Init planner with 0 length move } #endif // Calculate and perform the priming distance if (toolchange_settings.extra_prime >= 0) { // Positive extra_prime value - // - Return filament at speed (fr) then extra_prime at prime speed - FS_DEBUG("Loading Filament for T", active_extruder, " | Distance: ", toolchange_settings.swap_length, " | Speed: ", MMM_TO_MMS(fr), "mm/s"); - unscaled_e_move(toolchange_settings.swap_length, MMM_TO_MMS(fr)); // Prime (Unretract) filament by extruding equal to Swap Length (Unretract) + // - Return filament at speed (fr_mm_s) then extra_prime at prime speed + FS_DEBUG("Loading Filament for T", active_extruder, " | Distance: ", toolchange_settings.swap_length, " | Speed: ", fr_mm_s, "mm/s"); + unscaled_e_move(toolchange_settings.swap_length, fr_mm_s); // Prime (Unretract) filament by extruding equal to Swap Length (Unretract) if (toolchange_settings.extra_prime > 0) { FS_DEBUG("Performing Extra Priming for T", active_extruder, " | Distance: ", toolchange_settings.extra_prime, " | Speed: ", MMM_TO_MMS(toolchange_settings.prime_speed), "mm/s"); @@ -996,8 +996,8 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. // - Unretract distance (swap length) is reduced by the value of extra_prime const float eswap = toolchange_settings.swap_length + toolchange_settings.extra_prime; FS_DEBUG("Negative ExtraPrime value - Swap Return Length has been reduced from ", toolchange_settings.swap_length, " to ", eswap); - FS_DEBUG("Loading Filament for T", active_extruder, " | Distance: ", eswap, " | Speed: ", MMM_TO_MMS(fr), "mm/s"); - unscaled_e_move(eswap, MMM_TO_MMS(fr)); + FS_DEBUG("Loading Filament for T", active_extruder, " | Distance: ", eswap, " | Speed: ", fr_mm_s, "mm/s"); + unscaled_e_move(eswap, fr_mm_s); } extruder_was_primed.set(active_extruder); // Log that this extruder has been primed @@ -1010,7 +1010,6 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. // Cool down with fan filament_swap_cooling(); - } /** diff --git a/Marlin/src/module/tool_change.h b/Marlin/src/module/tool_change.h index ff456485e2..5f03a5495e 100644 --- a/Marlin/src/module/tool_change.h +++ b/Marlin/src/module/tool_change.h @@ -34,8 +34,8 @@ float extra_resume; // M217 B int16_t prime_speed; // M217 P int16_t wipe_retract; // M217 G - int16_t retract_speed; // M217 R - int16_t unretract_speed; // M217 U + int16_t retract_speed; // M217 R (mm/m) + int16_t unretract_speed; // M217 U (mm/m) uint8_t fan_speed; // M217 F uint8_t fan_time; // M217 D #endif From efc725863ab76cfd32fc8bb136aec7b6d884cef0 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 14 Apr 2023 17:14:04 -0500 Subject: [PATCH 266/659] =?UTF-8?q?=F0=9F=94=A7=20Edge=20Stepping=20sanity?= =?UTF-8?q?-check=20(#25674)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_adv.h | 3 +++ Marlin/src/inc/SanityCheck.h | 34 ++++++++++++++++++++++++++++ Marlin/src/module/stepper/trinamic.h | 2 -- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index edee5e9bd2..3a3daa84ac 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -1133,6 +1133,9 @@ #endif #endif +// Test for edge stepping on any axis +#define AXIS_HAS_DEDGE(A) (ENABLED(EDGE_STEPPING) && AXIS_IS_TMC(A)) + #if ENABLED(DIRECT_STEPPING) #ifndef STEPPER_PAGES #define STEPPER_PAGES 16 diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 84118729a2..30b5963e44 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -4313,6 +4313,40 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); #error "MONITOR_DRIVER_STATUS and SDSUPPORT cannot be used together on boards with shared SPI." #endif +// Although it just toggles STEP, EDGE_STEPPING requires HIGH state for logic +#if ENABLED(EDGE_STEPPING) + #if AXIS_HAS_DEDGE(X) && STEP_STATE_X != HIGH + #error "STEP_STATE_X must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(Y) && STEP_STATE_Y != HIGH + #error "STEP_STATE_Y must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(Z) && STEP_STATE_Z != HIGH + #error "STEP_STATE_Z must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(I) && STEP_STATE_I != HIGH + #error "STEP_STATE_I must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(J) && STEP_STATE_J != HIGH + #error "STEP_STATE_J must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(K) && STEP_STATE_K != HIGH + #error "STEP_STATE_K must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(U) && STEP_STATE_U != HIGH + #error "STEP_STATE_U must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(V) && STEP_STATE_V != HIGH + #error "STEP_STATE_V must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(W) && STEP_STATE_W != HIGH + #error "STEP_STATE_W must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(E0) && STEP_STATE_E != HIGH + #error "STEP_STATE_E must be HIGH for EDGE_STEPPING." + #endif +#endif + // G60/G61 Position Save #if SAVED_POSITIONS > 256 #error "SAVED_POSITIONS must be an integer from 0 to 256." diff --git a/Marlin/src/module/stepper/trinamic.h b/Marlin/src/module/stepper/trinamic.h index 3705543c99..88c0686fc3 100644 --- a/Marlin/src/module/stepper/trinamic.h +++ b/Marlin/src/module/stepper/trinamic.h @@ -115,8 +115,6 @@ void restore_trinamic_drivers(); void reset_trinamic_drivers(); -#define AXIS_HAS_DEDGE(A) (AXIS_IS_TMC(A) && ENABLED(EDGE_STEPPING)) - // X Stepper #if AXIS_IS_TMC(X) extern TMC_CLASS(X, X) stepperX; From b44d21c595c5266e2590fc99712b107f7cb19067 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 15 Apr 2023 00:21:50 +0000 Subject: [PATCH 267/659] [cron] Bump distribution date (2023-04-15) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index f9d7ff2988..11ce41f42a 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-14" +//#define STRING_DISTRIBUTION_DATE "2023-04-15" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 0bd02a67e8..c3c89a1398 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-14" + #define STRING_DISTRIBUTION_DATE "2023-04-15" #endif /** From 756fd1b9acc6238ff677513cfaa3da2da7aa6fa4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 14 Apr 2023 22:22:07 -0500 Subject: [PATCH 268/659] =?UTF-8?q?=F0=9F=94=A7=20Trigorilla=20/=20Chiron?= =?UTF-8?q?=20updates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to c3f34e4e --- Marlin/src/pins/ramps/pins_RAMPS.h | 41 ++++++----- Marlin/src/pins/ramps/pins_TRIGORILLA_14.h | 80 +++++++++++----------- 2 files changed, 65 insertions(+), 56 deletions(-) diff --git a/Marlin/src/pins/ramps/pins_RAMPS.h b/Marlin/src/pins/ramps/pins_RAMPS.h index 4541aefacb..0334da2da3 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS.h +++ b/Marlin/src/pins/ramps/pins_RAMPS.h @@ -97,10 +97,10 @@ #define Z_MAX_PIN -1 #endif #ifndef I_STOP_PIN - #define I_STOP_PIN 18 + #define I_STOP_PIN 18 // Z- #endif #ifndef J_STOP_PIN - #define J_STOP_PIN 19 + #define J_STOP_PIN 19 // Z+ #endif #endif @@ -109,26 +109,26 @@ // #ifndef X_STOP_PIN #ifndef X_MIN_PIN - #define X_MIN_PIN 3 + #define X_MIN_PIN 3 // X- #endif #ifndef X_MAX_PIN - #define X_MAX_PIN 2 + #define X_MAX_PIN 2 // X+ #endif #endif #ifndef Y_STOP_PIN #ifndef Y_MIN_PIN - #define Y_MIN_PIN 14 + #define Y_MIN_PIN 14 // Y- #endif #ifndef Y_MAX_PIN - #define Y_MAX_PIN 15 + #define Y_MAX_PIN 15 // Y+ #endif #endif #ifndef Z_STOP_PIN #ifndef Z_MIN_PIN - #define Z_MIN_PIN 18 + #define Z_MIN_PIN 18 // Z- #endif #ifndef Z_MAX_PIN - #define Z_MAX_PIN 19 + #define Z_MAX_PIN 19 // Z+ #endif #endif @@ -687,8 +687,6 @@ #if IS_RRD_SC - #define BEEPER_PIN EXP1_01_PIN - #if ENABLED(CR10_STOCKDISPLAY) #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN @@ -743,7 +741,9 @@ #define DOGLCD_A0 AUX2_07_PIN #define LCD_SCREEN_ROTATE 180 // 0, 90, 180, 270 - #define BEEPER_PIN EXP2_05_PIN + #ifndef BEEPER_PIN + #define BEEPER_PIN EXP2_05_PIN + #endif #define STAT_LED_RED_PIN AUX4_03_PIN #define STAT_LED_BLUE_PIN EXP1_02_PIN @@ -761,7 +761,9 @@ #define DOGLCD_CS EXP1_08_PIN #define DOGLCD_A0 EXP1_07_PIN - #define BEEPER_PIN EXP1_05_PIN + #ifndef BEEPER_PIN + #define BEEPER_PIN EXP1_05_PIN + #endif #define LCD_BACKLIGHT_PIN EXP2_05_PIN #define BTN_EN1 EXP1_02_PIN @@ -776,7 +778,6 @@ #elif EITHER(MKS_MINI_12864, FYSETC_MINI_12864) - #define BEEPER_PIN EXP1_01_PIN #define BTN_ENC EXP1_02_PIN #ifndef SD_DETECT_PIN #define SD_DETECT_PIN EXP2_07_PIN @@ -830,7 +831,9 @@ #elif ENABLED(MINIPANEL) - #define BEEPER_PIN AUX2_08_PIN + #ifndef BEEPER_PIN + #define BEEPER_PIN AUX2_08_PIN + #endif #define LCD_BACKLIGHT_PIN AUX2_10_PIN #define DOGLCD_A0 AUX2_07_PIN @@ -855,8 +858,6 @@ #elif ENABLED(G3D_PANEL) - #define BEEPER_PIN EXP1_01_PIN - #ifndef SD_DETECT_PIN #define SD_DETECT_PIN EXP2_07_PIN #endif @@ -874,7 +875,9 @@ #else - #define BEEPER_PIN EXP2_05_PIN + #ifndef BEEPER_PIN + #define BEEPER_PIN EXP2_05_PIN + #endif #if ENABLED(PANEL_ONE) // Buttons connect directly to AUX-2 #define BTN_EN1 AUX2_03_PIN @@ -889,6 +892,10 @@ #endif #endif // IS_NEWPANEL + #ifndef BEEPER_PIN + #define BEEPER_PIN EXP1_01_PIN // Most common mapping + #endif + #endif // HAS_WIRED_LCD && !LCD_PINS_DEFINED #if IS_RRW_KEYPAD && !HAS_ADC_BUTTONS diff --git a/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h index 9e761fd247..4399014c48 100644 --- a/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h +++ b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h @@ -56,6 +56,10 @@ /** * Trigorilla Plugs (oriented with stepper plugs at the top) * + * SENSORS : GND GND GND GND + * A12 A15 A14 A13 + * (D66 D69 D68 D67) + * * AUX : D42 GND 5V (Chiron Y-STOP) * D43 GND 5V (Chiron Z-STOP) * @@ -70,6 +74,34 @@ * 5V 5V 5V 5V 5V 5V */ +/** Expansion Headers + * ------ ------ + * 37 | 1 2 | 35 (MISO) 50 | 1 2 | 52 (SCK) + * 17 | 3 4 | 16 31 | 3 4 | 53 + * 23 5 6 | 25 33 5 6 | 51 (MOSI) + * 27 | 7 8 | 29 49 | 7 8 | 41 + * (GND) | 9 10 | (5V) (GND) | 9 10 | RESET + * ------ ------ + * EXP1 EXP2 + */ +#define EXP1_01_PIN 37 +#define EXP1_02_PIN 35 +#define EXP1_03_PIN 17 +#define EXP1_04_PIN 16 +#define EXP1_05_PIN 23 +#define EXP1_06_PIN 25 +#define EXP1_07_PIN 27 +#define EXP1_08_PIN 29 + +#define EXP2_01_PIN 50 // MISO +#define EXP2_02_PIN 52 // SCK +#define EXP2_03_PIN 31 +#define EXP2_04_PIN 53 +#define EXP2_05_PIN 33 +#define EXP2_06_PIN 51 // MOSI +#define EXP2_07_PIN 49 +#define EXP2_08_PIN 41 + // // AnyCubic pin mappings // @@ -80,12 +112,12 @@ //#define ANYCUBIC_4_MAX_PRO_ENDSTOPS #if ENABLED(ANYCUBIC_4_MAX_PRO_ENDSTOPS) - #define X_MAX_PIN 43 - #define Y_STOP_PIN 19 + #define X_MAX_PIN 43 // AUX (2) + #define Y_STOP_PIN 19 // Z+ #elif EITHER(TRIGORILLA_MAPPING_CHIRON, TRIGORILLA_MAPPING_I3MEGA) // Chiron uses AUX header for Y and Z endstops - #define Y_STOP_PIN 42 // AUX - #define Z_STOP_PIN 43 // AUX + #define Y_STOP_PIN 42 // AUX (1) + #define Z_STOP_PIN 43 // AUX (2) #define Z2_MIN_PIN 18 // Z- #ifndef Z_MIN_PROBE_PIN @@ -101,7 +133,7 @@ #if ENABLED(TRIGORILLA_MAPPING_CHIRON) #if ENABLED(ANYCUBIC_LCD_CHIRON) && !defined(FIL_RUNOUT_PIN) - #define FIL_RUNOUT_PIN 33 // Chiron LCD Adapter only + #define FIL_RUNOUT_PIN EXP2_05_PIN // Chiron Standard Adapter #endif #define HEATER_BED_PIN MOSFET_B_PIN // HEATER1 #endif @@ -125,8 +157,10 @@ #endif #if EITHER(ANYCUBIC_LCD_CHIRON, ANYCUBIC_LCD_I3MEGA) - #define BEEPER_PIN 31 - #define SD_DETECT_PIN 49 + #ifndef BEEPER_PIN + #define BEEPER_PIN EXP2_03_PIN // Chiron Standard Adapter + #endif + #define SD_DETECT_PIN EXP2_07_PIN // Chiron Standard Adapter #endif #if HAS_TMC_UART @@ -145,35 +179,3 @@ #endif #include "pins_RAMPS.h" - -// -// AnyCubic made the following changes to 1.1.0-RC8 -// If these are appropriate for your LCD let us know. -// -#if 0 && HAS_WIRED_LCD - - // LCD Display output pins - #if BOTH(IS_NEWPANEL, PANEL_ONE) - #undef LCD_PINS_D6 - #define LCD_PINS_D6 57 - #endif - - // LCD Display input pins - #if IS_NEWPANEL - #if EITHER(VIKI2, miniVIKI) - #undef DOGLCD_A0 - #define DOGLCD_A0 23 - #elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) - #undef BEEPER_PIN - #define BEEPER_PIN 33 - #undef LCD_BACKLIGHT_PIN - #define LCD_BACKLIGHT_PIN 67 - #endif - #elif ENABLED(MINIPANEL) - #undef BEEPER_PIN - #define BEEPER_PIN 33 - #undef DOGLCD_A0 - #define DOGLCD_A0 42 - #endif - -#endif // HAS_WIRED_LCD From d77e921a1512c22670b5ccf421a186d7ce3bd815 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 14 Apr 2023 22:26:06 -0500 Subject: [PATCH 269/659] =?UTF-8?q?=E2=9C=A8=20STARTUP=5FTUNE=20option?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/MarlinCore.cpp | 5 +++++ Marlin/src/gcode/lcd/M300.cpp | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index d2a9f395b7..aaa8e0b4b4 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -1660,6 +1660,11 @@ void setup() { marlin_state = MF_RUNNING; + #if ENABLED(SPEAKER) && defined(STARTUP_TUNE) + constexpr uint16_t tune[] = STARTUP_TUNE; + for (uint8_t i = 0; i < COUNT(tune); i += 2) BUZZ(tune[i + 1], tune[i]); + #endif + SETUP_LOG("setup() completed."); TERN_(MARLIN_TEST_BUILD, runStartupTests()); diff --git a/Marlin/src/gcode/lcd/M300.cpp b/Marlin/src/gcode/lcd/M300.cpp index 76d4b96b24..7ee811f0bd 100644 --- a/Marlin/src/gcode/lcd/M300.cpp +++ b/Marlin/src/gcode/lcd/M300.cpp @@ -30,10 +30,13 @@ #include "../../libs/buzzer.h" // Buzzer, if possible /** - * M300: Play beep sound S P + * M300: Play a Tone / Add a tone to the queue + * + * S - (Hz) The frequency of the tone. 0 for silence. + * P - (ms) The duration of the tone. */ void GcodeSuite::M300() { - uint16_t const frequency = parser.ushortval('S', 260); + const uint16_t frequency = parser.ushortval('S', 260); uint16_t duration = parser.ushortval('P', 1000); // Limits the tone duration to 0-5 seconds. From cc3a355ffbc85a9908c8e7986e3453de951c2316 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 16 Apr 2023 00:21:45 +0000 Subject: [PATCH 270/659] [cron] Bump distribution date (2023-04-16) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 11ce41f42a..b345bef514 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-15" +//#define STRING_DISTRIBUTION_DATE "2023-04-16" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index c3c89a1398..bf22ae4ded 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-15" + #define STRING_DISTRIBUTION_DATE "2023-04-16" #endif /** From 42c62ff84e9e5322daa61ac2e582414d0304acc8 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 15 Apr 2023 17:33:56 -0500 Subject: [PATCH 271/659] =?UTF-8?q?=E2=9C=A8=20STARTUP=5FTUNE=20configurat?= =?UTF-8?q?ion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 12 ++++++++++++ Marlin/src/MarlinCore.cpp | 5 +++-- Marlin/src/inc/SanityCheck.h | 10 ++++++++++ buildroot/tests/NUCLEO_F767ZI | 2 +- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 81591597b2..9844b44e10 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2681,6 +2681,18 @@ //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2 //#define LCD_FEEDBACK_FREQUENCY_HZ 5000 +// +// Tone queue size, used to keep beeps from blocking execution. +// Default is 4, or override here. Costs 4 bytes of SRAM per entry. +// +//#define TONE_QUEUE_LENGTH 4 + +// +// A sequence of tones to play at startup, in pairs of tone (Hz), duration (ms). +// Silence in-between tones. +// +//#define STARTUP_TUNE { 698, 300, 0, 50, 523, 50, 0, 25, 494, 50, 0, 25, 523, 100, 0, 50, 554, 300, 0, 100, 523, 300 } + //============================================================================= //======================== LCD / Controller Selection ========================= //======================== (Character-based LCDs) ========================= diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index aaa8e0b4b4..8c0f7a29e8 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -1660,9 +1660,10 @@ void setup() { marlin_state = MF_RUNNING; - #if ENABLED(SPEAKER) && defined(STARTUP_TUNE) + #ifdef STARTUP_TUNE + // Play a short startup tune before continuing. constexpr uint16_t tune[] = STARTUP_TUNE; - for (uint8_t i = 0; i < COUNT(tune); i += 2) BUZZ(tune[i + 1], tune[i]); + for (uint8_t i = 0; i < COUNT(tune) - 1; i += 2) BUZZ(tune[i + 1], tune[i]); #endif SETUP_LOG("setup() completed."); diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 30b5963e44..fd58a9c54e 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -3324,6 +3324,16 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #endif #endif +// Startup Tune requirements +#ifdef STARTUP_TUNE + #if EITHER(ANYCUBIC_LCD_CHIRON, ANYCUBIC_LCD_VYPER) + #error "STARTUP_TUNE should be disabled with ANYCUBIC_LCD_CHIRON or ANYCUBIC_LCD_VYPER." + #elif !(BOTH(HAS_BEEPER, SPEAKER) || USE_MARLINUI_BUZZER) + #error "STARTUP_TUNE requires a BEEPER_PIN with SPEAKER or USE_MARLINUI_BUZZER." + #undef STARTUP_TUNE + #endif +#endif + /** * Display Sleep is not supported by these common displays */ diff --git a/buildroot/tests/NUCLEO_F767ZI b/buildroot/tests/NUCLEO_F767ZI index 9e23246606..a331618a09 100755 --- a/buildroot/tests/NUCLEO_F767ZI +++ b/buildroot/tests/NUCLEO_F767ZI @@ -11,7 +11,7 @@ set -e # restore_configs opt_set MOTHERBOARD BOARD_NUCLEO_F767ZI SERIAL_PORT -1 X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2208 -opt_enable BLTOUCH Z_SAFE_HOMING SPEAKER SOFTWARE_DRIVER_ENABLE +opt_enable BLTOUCH Z_SAFE_HOMING REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SPEAKER STARTUP_TUNE SOFTWARE_DRIVER_ENABLE exec_test $1 $2 "Mixed timer usage" "$3" # clean up From 92721d1bf7d3516ffa591bf7fa9b0b03099f5156 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 14 Apr 2023 17:45:45 -0500 Subject: [PATCH 272/659] =?UTF-8?q?=F0=9F=9A=B8=20"Main"=20=3D>=20"Main=20?= =?UTF-8?q?Menu"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/e3v2/creality/dwin.cpp | 2 +- .../extui/ftdi_eve_touch_ui/bioprinter/main_menu.cpp | 2 +- Marlin/src/lcd/language/language_an.h | 2 +- Marlin/src/lcd/language/language_bg.h | 2 +- Marlin/src/lcd/language/language_ca.h | 2 +- Marlin/src/lcd/language/language_cz.h | 2 +- Marlin/src/lcd/language/language_da.h | 2 +- Marlin/src/lcd/language/language_de.h | 2 +- Marlin/src/lcd/language/language_el.h | 2 +- Marlin/src/lcd/language/language_el_gr.h | 2 +- Marlin/src/lcd/language/language_en.h | 2 +- Marlin/src/lcd/language/language_es.h | 2 +- Marlin/src/lcd/language/language_eu.h | 2 +- Marlin/src/lcd/language/language_fi.h | 2 +- Marlin/src/lcd/language/language_fr.h | 2 +- Marlin/src/lcd/language/language_fr_na.h | 2 +- Marlin/src/lcd/language/language_gl.h | 2 +- Marlin/src/lcd/language/language_hr.h | 2 +- Marlin/src/lcd/language/language_hu.h | 2 +- Marlin/src/lcd/language/language_it.h | 2 +- Marlin/src/lcd/language/language_jp_kana.h | 2 +- Marlin/src/lcd/language/language_ko_KR.h | 2 +- Marlin/src/lcd/language/language_nl.h | 2 +- Marlin/src/lcd/language/language_pl.h | 2 +- Marlin/src/lcd/language/language_pt.h | 2 +- Marlin/src/lcd/language/language_pt_br.h | 2 +- Marlin/src/lcd/language/language_ro.h | 2 +- Marlin/src/lcd/language/language_ru.h | 2 +- Marlin/src/lcd/language/language_sk.h | 2 +- Marlin/src/lcd/language/language_sv.h | 2 +- Marlin/src/lcd/language/language_test.h | 12 ++++++------ Marlin/src/lcd/language/language_tr.h | 2 +- Marlin/src/lcd/language/language_uk.h | 2 +- Marlin/src/lcd/language/language_vi.h | 2 +- Marlin/src/lcd/language/language_zh_CN.h | 2 +- Marlin/src/lcd/language/language_zh_TW.h | 2 +- Marlin/src/lcd/menu/menu_backlash.cpp | 2 +- Marlin/src/lcd/menu/menu_cancelobject.cpp | 2 +- Marlin/src/lcd/menu/menu_configuration.cpp | 4 ++-- Marlin/src/lcd/menu/menu_delta_calibrate.cpp | 2 +- Marlin/src/lcd/menu/menu_filament.cpp | 2 +- Marlin/src/lcd/menu/menu_game.cpp | 2 +- Marlin/src/lcd/menu/menu_info.cpp | 2 +- Marlin/src/lcd/menu/menu_language.cpp | 2 +- Marlin/src/lcd/menu/menu_led.cpp | 2 +- Marlin/src/lcd/menu/menu_main.cpp | 2 +- Marlin/src/lcd/menu/menu_media.cpp | 4 ++-- Marlin/src/lcd/menu/menu_mixer.cpp | 2 +- Marlin/src/lcd/menu/menu_mmu2.cpp | 2 +- Marlin/src/lcd/menu/menu_motion.cpp | 2 +- Marlin/src/lcd/menu/menu_power_monitor.cpp | 2 +- Marlin/src/lcd/menu/menu_spindle_laser.cpp | 2 +- Marlin/src/lcd/menu/menu_temperature.cpp | 4 ++-- Marlin/src/lcd/menu/menu_tune.cpp | 2 +- 54 files changed, 62 insertions(+), 62 deletions(-) diff --git a/Marlin/src/lcd/e3v2/creality/dwin.cpp b/Marlin/src/lcd/e3v2/creality/dwin.cpp index 02bfa624fa..66baff1611 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.cpp +++ b/Marlin/src/lcd/e3v2/creality/dwin.cpp @@ -1273,7 +1273,7 @@ void Goto_MainMenu() { DWIN_Frame_TitleCopy(2, 2, 26, 13); // "Home" etc else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_MAIN)); + Draw_Title(GET_TEXT_F(MSG_MAIN_MENU)); #else DWIN_Frame_TitleCopy(0, 2, 40, 11); // "Home" #endif diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/main_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/main_menu.cpp index edae2cb042..8de81a98ae 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/main_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/main_menu.cpp @@ -43,7 +43,7 @@ void MainMenu::onRedraw(draw_mode_t what) { if (what & FOREGROUND) { CommandProcessor cmd; cmd.cmd(COLOR_RGB(bg_text_enabled)) - .font(font_large).text( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXT_F(MSG_MAIN)) + .font(font_large).text( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXT_F(MSG_MAIN_MENU)) .colors(normal_btn) .font(font_medium) .tag(2).button(BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(MSG_MOVE_TO_HOME)) diff --git a/Marlin/src/lcd/language/language_an.h b/Marlin/src/lcd/language/language_an.h index a7da7c6e96..7d6b6de33b 100644 --- a/Marlin/src/lcd/language/language_an.h +++ b/Marlin/src/lcd/language/language_an.h @@ -41,7 +41,7 @@ namespace Language_an { LSTR MSG_MEDIA_INSERTED = _UxGT("Tarcheta mesa"); LSTR MSG_MEDIA_REMOVED = _UxGT("Tarcheta sacada"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters - LSTR MSG_MAIN = _UxGT("Menu prencipal"); + LSTR MSG_MAIN_MENU = _UxGT("Menu prencipal"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Inicio automatico"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Amortar motors"); LSTR MSG_HOMING = _UxGT("Orichen"); diff --git a/Marlin/src/lcd/language/language_bg.h b/Marlin/src/lcd/language/language_bg.h index 87199ffbc9..17f631090d 100644 --- a/Marlin/src/lcd/language/language_bg.h +++ b/Marlin/src/lcd/language/language_bg.h @@ -39,7 +39,7 @@ namespace Language_bg { LSTR WELCOME_MSG = MACHINE_NAME _UxGT(" Готов."); LSTR MSG_MEDIA_INSERTED = _UxGT("Картата е поставена"); LSTR MSG_MEDIA_REMOVED = _UxGT("Картата е извадена"); - LSTR MSG_MAIN = _UxGT("Меню"); + LSTR MSG_MAIN_MENU = _UxGT("Меню"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Автостарт"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Изкл. двигатели"); LSTR MSG_AUTO_HOME = _UxGT("Паркиране"); diff --git a/Marlin/src/lcd/language/language_ca.h b/Marlin/src/lcd/language/language_ca.h index fec9c44741..ac6d4388e1 100644 --- a/Marlin/src/lcd/language/language_ca.h +++ b/Marlin/src/lcd/language/language_ca.h @@ -37,7 +37,7 @@ namespace Language_ca { LSTR MSG_MEDIA_INSERTED = _UxGT("Targeta detectada."); LSTR MSG_MEDIA_REMOVED = _UxGT("Targeta extreta."); LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); - LSTR MSG_MAIN = _UxGT("Menú principal"); + LSTR MSG_MAIN_MENU = _UxGT("Menú principal"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Inici automatic"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Desactiva motors"); LSTR MSG_DEBUG_MENU = _UxGT("Menu de depuracio"); diff --git a/Marlin/src/lcd/language/language_cz.h b/Marlin/src/lcd/language/language_cz.h index f0da141069..d06c5554fd 100644 --- a/Marlin/src/lcd/language/language_cz.h +++ b/Marlin/src/lcd/language/language_cz.h @@ -54,7 +54,7 @@ namespace Language_cz { LSTR MSG_MEDIA_USB_FAILED = _UxGT("Chyba USB"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstopy"); // max 8 znaku LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstopy"); - LSTR MSG_MAIN = _UxGT("Hlavní nabídka"); + LSTR MSG_MAIN_MENU = _UxGT("Hlavní nabídka"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Další nastavení"); LSTR MSG_CONFIGURATION = _UxGT("Konfigurace"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Autostart"); diff --git a/Marlin/src/lcd/language/language_da.h b/Marlin/src/lcd/language/language_da.h index ec1a769783..a424883000 100644 --- a/Marlin/src/lcd/language/language_da.h +++ b/Marlin/src/lcd/language/language_da.h @@ -39,7 +39,7 @@ namespace Language_da { LSTR WELCOME_MSG = MACHINE_NAME _UxGT(" er klar"); LSTR MSG_MEDIA_INSERTED = _UxGT("Kort isat"); LSTR MSG_MEDIA_REMOVED = _UxGT("Kort fjernet"); - LSTR MSG_MAIN = _UxGT("Menu"); + LSTR MSG_MAIN_MENU = _UxGT("Menu"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Slå alle steppere fra"); LSTR MSG_AUTO_HOME = _UxGT("Auto Home"); // G28 LSTR MSG_LEVEL_BED_WAITING = _UxGT("Klik når du er klar"); diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h index 32da975e04..4313a80490 100644 --- a/Marlin/src/lcd/language/language_de.h +++ b/Marlin/src/lcd/language/language_de.h @@ -52,7 +52,7 @@ namespace Language_de { LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Subcall überschritten"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstopp"); // Max length 8 characters LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Software-Endstopp"); - LSTR MSG_MAIN = _UxGT("Hauptmenü"); + LSTR MSG_MAIN_MENU = _UxGT("Hauptmenü"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Erw. Einstellungen"); LSTR MSG_TOOLBAR_SETUP = _UxGT("Toolbar Einstellung"); LSTR MSG_OPTION_DISABLED = _UxGT("Option Deaktiviert"); diff --git a/Marlin/src/lcd/language/language_el.h b/Marlin/src/lcd/language/language_el.h index a411f33155..e18bda4edf 100644 --- a/Marlin/src/lcd/language/language_el.h +++ b/Marlin/src/lcd/language/language_el.h @@ -51,7 +51,7 @@ namespace Language_el { LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB αφαιρέθη"); LSTR MSG_MEDIA_USB_FAILED = _UxGT("Αποτυχία εκκίνησης USB"); LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Αποτυχία αρχικοποίησης SD"); - LSTR MSG_MAIN = _UxGT("Αρχική Οθόνη"); + LSTR MSG_MAIN_MENU = _UxGT("Αρχική Οθόνη"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Αυτόματη εκκίνηση"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Απενεργοποίηση μοτέρ"); LSTR MSG_AUTO_HOME = _UxGT("Αυτόμ. επαναφορά XYZ"); diff --git a/Marlin/src/lcd/language/language_el_gr.h b/Marlin/src/lcd/language/language_el_gr.h index 463d6d4c7b..d4eabb70ce 100644 --- a/Marlin/src/lcd/language/language_el_gr.h +++ b/Marlin/src/lcd/language/language_el_gr.h @@ -40,7 +40,7 @@ namespace Language_el_gr { LSTR MSG_MEDIA_INSERTED = _UxGT("Εισαγωγή κάρτας"); LSTR MSG_MEDIA_REMOVED = _UxGT("Αφαίρεση κάρτας"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters - LSTR MSG_MAIN = _UxGT("Βασική Οθόνη"); + LSTR MSG_MAIN_MENU = _UxGT("Βασική Οθόνη"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Αυτόματη εκκίνηση"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Απενεργοποίηση βηματιστή"); LSTR MSG_AUTO_HOME = _UxGT("Αυτομ. επαναφορά στο αρχικό σημείο"); diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 55f426017c..68c231d556 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -67,7 +67,7 @@ namespace Language_en { LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Subcall Overflow"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops"); - LSTR MSG_MAIN = _UxGT("Main"); + LSTR MSG_MAIN_MENU = _UxGT("Main Menu"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Advanced Settings"); LSTR MSG_TOOLBAR_SETUP = _UxGT("Toolbar Setup"); LSTR MSG_OPTION_DISABLED = _UxGT("Option Disabled"); diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h index 13d9a9b655..371df360ee 100644 --- a/Marlin/src/lcd/language/language_es.h +++ b/Marlin/src/lcd/language/language_es.h @@ -49,7 +49,7 @@ namespace Language_es { LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Desbordamiento de subllamada"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops"); - LSTR MSG_MAIN = _UxGT("Menú principal"); + LSTR MSG_MAIN_MENU = _UxGT("Menú principal"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Ajustes avanzados"); LSTR MSG_CONFIGURATION = _UxGT("Configuración"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Inicio automático"); diff --git a/Marlin/src/lcd/language/language_eu.h b/Marlin/src/lcd/language/language_eu.h index f000b5fcfb..9b969762d5 100644 --- a/Marlin/src/lcd/language/language_eu.h +++ b/Marlin/src/lcd/language/language_eu.h @@ -41,7 +41,7 @@ namespace Language_eu { LSTR MSG_BACK = _UxGT("Atzera"); LSTR MSG_MEDIA_INSERTED = _UxGT("Txartela sartuta"); LSTR MSG_MEDIA_REMOVED = _UxGT("Txartela kenduta"); - LSTR MSG_MAIN = _UxGT("Menu nagusia"); + LSTR MSG_MAIN_MENU = _UxGT("Menu nagusia"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Auto hasiera"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Itzali motoreak"); LSTR MSG_DEBUG_MENU = _UxGT("Arazketa Menua"); diff --git a/Marlin/src/lcd/language/language_fi.h b/Marlin/src/lcd/language/language_fi.h index 300da9b956..57fc0a7c21 100644 --- a/Marlin/src/lcd/language/language_fi.h +++ b/Marlin/src/lcd/language/language_fi.h @@ -39,7 +39,7 @@ namespace Language_fi { LSTR WELCOME_MSG = MACHINE_NAME _UxGT(" valmis."); LSTR MSG_MEDIA_INSERTED = _UxGT("Kortti asetettu"); LSTR MSG_MEDIA_REMOVED = _UxGT("Kortti poistettu"); - LSTR MSG_MAIN = _UxGT("Palaa"); + LSTR MSG_MAIN_MENU = _UxGT("Palaa"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Automaatti"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Vapauta moottorit"); LSTR MSG_AUTO_HOME = _UxGT("Aja referenssiin"); diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h index 1128328391..f7eec7f5ce 100644 --- a/Marlin/src/lcd/language/language_fr.h +++ b/Marlin/src/lcd/language/language_fr.h @@ -49,7 +49,7 @@ namespace Language_fr { LSTR MSG_MEDIA_USB_FAILED = _UxGT("Erreur média USB"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Butées"); LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Butées SW"); - LSTR MSG_MAIN = _UxGT("Menu principal"); + LSTR MSG_MAIN_MENU = _UxGT("Menu principal"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Config. avancée"); LSTR MSG_CONFIGURATION = _UxGT("Configuration"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Exéc. auto.gcode"); diff --git a/Marlin/src/lcd/language/language_fr_na.h b/Marlin/src/lcd/language/language_fr_na.h index 48030dd031..9300b299eb 100644 --- a/Marlin/src/lcd/language/language_fr_na.h +++ b/Marlin/src/lcd/language/language_fr_na.h @@ -49,7 +49,7 @@ namespace Language_fr_na { LSTR MSG_MEDIA_USB_FAILED = _UxGT("Erreur media USB"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Butees"); LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Butees SW"); - LSTR MSG_MAIN = _UxGT("Menu principal"); + LSTR MSG_MAIN_MENU = _UxGT("Menu principal"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Config. avancee"); LSTR MSG_CONFIGURATION = _UxGT("Configuration"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Exec. auto.gcode"); diff --git a/Marlin/src/lcd/language/language_gl.h b/Marlin/src/lcd/language/language_gl.h index 7d6b285834..da8a7047c7 100644 --- a/Marlin/src/lcd/language/language_gl.h +++ b/Marlin/src/lcd/language/language_gl.h @@ -50,7 +50,7 @@ namespace Language_gl { LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Desbord. Subch."); LSTR MSG_LCD_ENDSTOPS = _UxGT("FinCarro"); LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("FinCarro SW"); - LSTR MSG_MAIN = _UxGT("Menú principal"); + LSTR MSG_MAIN_MENU = _UxGT("Menú principal"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Axustes avanzados"); LSTR MSG_CONFIGURATION = _UxGT("Configuración"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Autoarranque"); diff --git a/Marlin/src/lcd/language/language_hr.h b/Marlin/src/lcd/language/language_hr.h index 697341fc44..1f51c5c539 100644 --- a/Marlin/src/lcd/language/language_hr.h +++ b/Marlin/src/lcd/language/language_hr.h @@ -40,7 +40,7 @@ namespace Language_hr { LSTR MSG_MEDIA_INSERTED = _UxGT("SD kartica umetnuta"); LSTR MSG_MEDIA_REMOVED = _UxGT("SD kartica uklonjena"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters - LSTR MSG_MAIN = _UxGT("Main"); + LSTR MSG_MAIN_MENU = _UxGT("Main"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Auto pokretanje"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Ugasi steppere"); LSTR MSG_AUTO_HOME = _UxGT("Automatski homing"); diff --git a/Marlin/src/lcd/language/language_hu.h b/Marlin/src/lcd/language/language_hu.h index caa8fc62df..471f2ee8cb 100644 --- a/Marlin/src/lcd/language/language_hu.h +++ b/Marlin/src/lcd/language/language_hu.h @@ -54,7 +54,7 @@ namespace Language_hu { LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Túlfolyás"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Végállás"); // Maximum 8 karakter LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Szoft. végállás"); - LSTR MSG_MAIN = _UxGT(""); + LSTR MSG_MAIN_MENU = _UxGT(""); LSTR MSG_ADVANCED_SETTINGS = _UxGT("További beállítások"); LSTR MSG_CONFIGURATION = _UxGT("Konfiguráció"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Fájl auto. futtatás"); diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index fb9178c67e..4bc7c0303a 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -62,7 +62,7 @@ namespace Language_it { LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Overflow subchiamate"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Finecor."); // Max 8 characters LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Finecorsa Soft"); - LSTR MSG_MAIN = _UxGT("Menu principale"); + LSTR MSG_MAIN_MENU = _UxGT("Menu principale"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Impostaz. avanzate"); LSTR MSG_TOOLBAR_SETUP = _UxGT("Cnf barra strumenti"); LSTR MSG_OPTION_DISABLED = _UxGT("Opzione disab."); diff --git a/Marlin/src/lcd/language/language_jp_kana.h b/Marlin/src/lcd/language/language_jp_kana.h index 8ed1a7865e..7570710838 100644 --- a/Marlin/src/lcd/language/language_jp_kana.h +++ b/Marlin/src/lcd/language/language_jp_kana.h @@ -46,7 +46,7 @@ namespace Language_jp_kana { LSTR MSG_MEDIA_REMOVED = _UxGT("メディアガアリマセン"); // "Card removed" LSTR MSG_RELEASE_MEDIA = _UxGT("メディアノトリダシ"); LSTR MSG_LCD_ENDSTOPS = _UxGT("エンドストップ"); // "Endstops" // Max length 8 characters - LSTR MSG_MAIN = _UxGT("メイン"); // "Main" + LSTR MSG_MAIN_MENU = _UxGT("メイン"); // "Main" LSTR MSG_RUN_AUTO_FILES = _UxGT("ジドウカイシ"); // "Autostart" LSTR MSG_DISABLE_STEPPERS = _UxGT("モーターデンゲン オフ"); // "Disable steppers" LSTR MSG_DEBUG_MENU = _UxGT("デバッグメニュー"); // "Debug Menu" diff --git a/Marlin/src/lcd/language/language_ko_KR.h b/Marlin/src/lcd/language/language_ko_KR.h index 50c73f69e9..e52ced2dad 100644 --- a/Marlin/src/lcd/language/language_ko_KR.h +++ b/Marlin/src/lcd/language/language_ko_KR.h @@ -39,7 +39,7 @@ namespace Language_ko_KR { LSTR MSG_MEDIA_REMOVED = _UxGT("카드 제거됨"); LSTR MSG_LCD_ENDSTOPS = _UxGT("엔드스탑"); LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("소프트 엔드스탑"); - LSTR MSG_MAIN = _UxGT("뒤로"); + LSTR MSG_MAIN_MENU = _UxGT("뒤로"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("고급 설정"); LSTR MSG_CONFIGURATION = _UxGT("설정"); LSTR MSG_RUN_AUTO_FILES = _UxGT("자동 시작"); diff --git a/Marlin/src/lcd/language/language_nl.h b/Marlin/src/lcd/language/language_nl.h index 6397a95a7e..d708135fac 100644 --- a/Marlin/src/lcd/language/language_nl.h +++ b/Marlin/src/lcd/language/language_nl.h @@ -42,7 +42,7 @@ namespace Language_nl { LSTR MSG_MEDIA_INSERTED = _UxGT("Kaart ingestoken"); LSTR MSG_MEDIA_REMOVED = _UxGT("Kaart verwijderd"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters - LSTR MSG_MAIN = _UxGT("Hoofdmenu"); + LSTR MSG_MAIN_MENU = _UxGT("Hoofdmenu"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Autostart"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Motoren uit"); LSTR MSG_DEBUG_MENU = _UxGT("Debug Menu"); // accepted English terms diff --git a/Marlin/src/lcd/language/language_pl.h b/Marlin/src/lcd/language/language_pl.h index 1b5715aedd..5bf4884941 100644 --- a/Marlin/src/lcd/language/language_pl.h +++ b/Marlin/src/lcd/language/language_pl.h @@ -58,7 +58,7 @@ namespace Language_pl { LSTR MSG_MEDIA_USB_FAILED = _UxGT("Błąd uruchomienia USB"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Krańców."); // Max length 8 characters LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Progr. Krańcówki"); - LSTR MSG_MAIN = _UxGT("Menu główne"); + LSTR MSG_MAIN_MENU = _UxGT("Menu główne"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Ustawienie zaawansowane"); LSTR MSG_CONFIGURATION = _UxGT("Konfiguracja"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Autostart"); diff --git a/Marlin/src/lcd/language/language_pt.h b/Marlin/src/lcd/language/language_pt.h index 7f09d71e48..ac2cbbdc20 100644 --- a/Marlin/src/lcd/language/language_pt.h +++ b/Marlin/src/lcd/language/language_pt.h @@ -40,7 +40,7 @@ namespace Language_pt { LSTR WELCOME_MSG = MACHINE_NAME _UxGT(" pronta."); LSTR MSG_MEDIA_INSERTED = _UxGT("Cartão inserido"); LSTR MSG_MEDIA_REMOVED = _UxGT("Cartão removido"); - LSTR MSG_MAIN = _UxGT("Menu principal"); + LSTR MSG_MAIN_MENU = _UxGT("Menu principal"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Desactivar motores"); LSTR MSG_AUTO_HOME = _UxGT("Ir para origem"); LSTR MSG_AUTO_HOME_X = _UxGT("Ir para origem X"); diff --git a/Marlin/src/lcd/language/language_pt_br.h b/Marlin/src/lcd/language/language_pt_br.h index 1bd3f61682..c17ca124ed 100644 --- a/Marlin/src/lcd/language/language_pt_br.h +++ b/Marlin/src/lcd/language/language_pt_br.h @@ -48,7 +48,7 @@ namespace Language_pt_br { LSTR MSG_MEDIA_USB_FAILED = _UxGT("USB falhou"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Fins de curso"); LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Fins curso"); - LSTR MSG_MAIN = _UxGT("Menu principal"); + LSTR MSG_MAIN_MENU = _UxGT("Menu principal"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Config. Avançada"); LSTR MSG_CONFIGURATION = _UxGT("Configuração"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Início automático"); diff --git a/Marlin/src/lcd/language/language_ro.h b/Marlin/src/lcd/language/language_ro.h index 938aa71c57..bdb9f226a9 100644 --- a/Marlin/src/lcd/language/language_ro.h +++ b/Marlin/src/lcd/language/language_ro.h @@ -49,7 +49,7 @@ namespace Language_ro { LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Eroare:Subcall Overflow"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops"); - LSTR MSG_MAIN = _UxGT("Principal"); + LSTR MSG_MAIN_MENU = _UxGT("Principal"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Setari Avansate"); LSTR MSG_CONFIGURATION = _UxGT("Configurare"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Autostart"); diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index ab5d7fca98..6dd773f77b 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -57,7 +57,7 @@ namespace Language_ru { LSTR MSG_MEDIA_USB_FAILED = _UxGT("Ошибка USB диска"); LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Прогр. концевики"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Концевик"); // Max length 8 characters - LSTR MSG_MAIN = _UxGT("Главное меню"); + LSTR MSG_MAIN_MENU = _UxGT("Главное меню"); LSTR MSG_CONFIGURATION = _UxGT("Конфигурация"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Автостарт"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Выключить двигатели"); diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h index 0e00ce4b12..c78029048b 100644 --- a/Marlin/src/lcd/language/language_sk.h +++ b/Marlin/src/lcd/language/language_sk.h @@ -65,7 +65,7 @@ namespace Language_sk { LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Preteč. podprogramu"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstopy"); // max 8 znakov LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft. endstopy"); - LSTR MSG_MAIN = _UxGT("Hlavná ponuka"); + LSTR MSG_MAIN_MENU = _UxGT("Hlavná ponuka"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Pokročilé nastav."); LSTR MSG_TOOLBAR_SETUP = _UxGT("Panel nástrojov"); LSTR MSG_OPTION_DISABLED = _UxGT("Možnosť vypnutá"); diff --git a/Marlin/src/lcd/language/language_sv.h b/Marlin/src/lcd/language/language_sv.h index c7e6c19bd7..13ae8fcd29 100644 --- a/Marlin/src/lcd/language/language_sv.h +++ b/Marlin/src/lcd/language/language_sv.h @@ -51,7 +51,7 @@ namespace Language_sv { LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Underanrop överskriden"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Slutstop"); // Max length 8 characters LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Mjuk slutstopp"); - LSTR MSG_MAIN = _UxGT("Huvud"); + LSTR MSG_MAIN_MENU = _UxGT("Huvud"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Advancerade inställningar"); LSTR MSG_CONFIGURATION = _UxGT("Konfiguration"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Autostarta Filer"); diff --git a/Marlin/src/lcd/language/language_test.h b/Marlin/src/lcd/language/language_test.h index 20b5a7e686..657e4e2e48 100644 --- a/Marlin/src/lcd/language/language_test.h +++ b/Marlin/src/lcd/language/language_test.h @@ -133,7 +133,7 @@ namespace Language_test { LSTR MSG_PREPARE = _UxGT("UTF8"); LSTR MSG_CONTROL = _UxGT("ASCII"); - LSTR MSG_MAIN = _UxGT(".."); + LSTR MSG_MAIN_MENU = _UxGT(".."); LSTR MSG_DISABLE_STEPPERS = STRG_C2_8; LSTR MSG_AUTO_HOME = STRG_C2_9; LSTR MSG_SET_HOME_OFFSETS = STRG_C2_a; @@ -143,7 +143,7 @@ namespace Language_test { LSTR MSG_SWITCH_PS_OFF = STRG_C3_a; LSTR MSG_MOVE_AXIS = STRG_C3_b; - LSTR MSG_MAIN = STRG_OKTAL_2; + LSTR MSG_MAIN_MENU = STRG_OKTAL_2; LSTR MSG_TEMPERATURE = STRG_OKTAL_3; LSTR MSG_MOTION = STRG_OKTAL_4; LSTR MSG_FILAMENT = STRG_OKTAL_5; @@ -170,7 +170,7 @@ namespace Language_test { LSTR MSG_PREPARE = _UxGT("UTF8"); LSTR MSG_CONTROL = _UxGT("ASCII"); - LSTR MSG_MAIN = _UxGT(".."); + LSTR MSG_MAIN_MENU = _UxGT(".."); LSTR MSG_DISABLE_STEPPERS = STRG_D0_8; LSTR MSG_AUTO_HOME = STRG_D0_9; LSTR MSG_SET_HOME_OFFSETS = STRG_D0_a; @@ -180,7 +180,7 @@ namespace Language_test { LSTR MSG_SWITCH_PS_OFF = STRG_D1_a; LSTR MSG_MOVE_AXIS = STRG_D1_b; - LSTR MSG_MAIN = STRG_OKTAL_2; + LSTR MSG_MAIN_MENU = STRG_OKTAL_2; LSTR MSG_TEMPERATURE = STRG_OKTAL_3; LSTR MSG_MOTION = STRG_OKTAL_4; LSTR MSG_FILAMENT = STRG_OKTAL_5; @@ -206,7 +206,7 @@ namespace Language_test { LSTR MSG_PREPARE = _UxGT("UTF8"); LSTR MSG_CONTROL = _UxGT("ASCII"); - LSTR MSG_MAIN = _UxGT(".."); + LSTR MSG_MAIN_MENU = _UxGT(".."); LSTR MSG_DISABLE_STEPPERS = STRG_E382_8; LSTR MSG_AUTO_HOME = STRG_E382_9; LSTR MSG_SET_HOME_OFFSETS = STRG_E382_a; @@ -216,7 +216,7 @@ namespace Language_test { LSTR MSG_SWITCH_PS_OFF = STRG_E383_a; LSTR MSG_MOVE_AXIS = STRG_E383_b; - LSTR MSG_MAIN = STRG_OKTAL_2; + LSTR MSG_MAIN_MENU = STRG_OKTAL_2; LSTR MSG_TEMPERATURE = STRG_OKTAL_3; LSTR MSG_MOTION = STRG_OKTAL_4; LSTR MSG_FILAMENT = STRG_OKTAL_5; diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h index 569b32b93d..414d545927 100644 --- a/Marlin/src/lcd/language/language_tr.h +++ b/Marlin/src/lcd/language/language_tr.h @@ -55,7 +55,7 @@ namespace Language_tr { LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Subcall Overflow"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Yazılımsal Endstops"); - LSTR MSG_MAIN = _UxGT("Ana"); + LSTR MSG_MAIN_MENU = _UxGT("Ana"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Gelişmiş Ayarlar"); LSTR MSG_TOOLBAR_SETUP = _UxGT("Araç Çubuğu Kurulumu"); LSTR MSG_OPTION_DISABLED = _UxGT("Seçenek Devre Dışı"); diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h index 7e7ef5eb37..7bdd896a33 100644 --- a/Marlin/src/lcd/language/language_uk.h +++ b/Marlin/src/lcd/language/language_uk.h @@ -60,7 +60,7 @@ namespace Language_uk { LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Прогр.кінцевики"); #endif LSTR MSG_LCD_ENDSTOPS = _UxGT("Кінцевик"); // Max length 8 characters - LSTR MSG_MAIN = _UxGT("Основне меню"); + LSTR MSG_MAIN_MENU = _UxGT("Основне меню"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Інші налаштування"); LSTR MSG_CONFIGURATION = _UxGT("Конфігурація"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Автостарт"); diff --git a/Marlin/src/lcd/language/language_vi.h b/Marlin/src/lcd/language/language_vi.h index 3925eb8b83..5795c58a1e 100644 --- a/Marlin/src/lcd/language/language_vi.h +++ b/Marlin/src/lcd/language/language_vi.h @@ -44,7 +44,7 @@ namespace Language_vi { LSTR MSG_MEDIA_USB_FAILED = _UxGT("USB khởi thất bại"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Công tắc"); // Endstops - công tắc hành trình LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Công tắc mềm"); // soft Endstops - LSTR MSG_MAIN = _UxGT("Chính"); // Main + LSTR MSG_MAIN_MENU = _UxGT("Chính"); // Main LSTR MSG_ADVANCED_SETTINGS = _UxGT("Thiết lập cấp cao"); // Advanced Settings LSTR MSG_CONFIGURATION = _UxGT("Cấu hình"); // Configuration LSTR MSG_RUN_AUTO_FILES = _UxGT("Khởi chạy tự động"); // Autostart diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h index 0fd72b410c..3e8ab9870f 100644 --- a/Marlin/src/lcd/language/language_zh_CN.h +++ b/Marlin/src/lcd/language/language_zh_CN.h @@ -48,7 +48,7 @@ namespace Language_zh_CN { LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("子响应溢出"); LSTR MSG_LCD_ENDSTOPS = _UxGT("挡块"); // "Endstops" // Max length 8 characters LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("软挡块"); - LSTR MSG_MAIN = _UxGT("主菜单"); // "Main" + LSTR MSG_MAIN_MENU = _UxGT("主菜单"); // "Main" LSTR MSG_ADVANCED_SETTINGS = _UxGT("高级设置"); LSTR MSG_CONFIGURATION = _UxGT("配置"); LSTR MSG_RUN_AUTO_FILES = _UxGT("自动开始"); // "Autostart" diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h index a00303864a..5f9f0e3904 100644 --- a/Marlin/src/lcd/language/language_zh_TW.h +++ b/Marlin/src/lcd/language/language_zh_TW.h @@ -46,7 +46,7 @@ namespace Language_zh_TW { LSTR MSG_MEDIA_USB_FAILED = _UxGT("USB啟動失敗"); // "USB start failed" LSTR MSG_LCD_ENDSTOPS = _UxGT("擋塊"); // "Endstops" // Max length 8 characters LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("軟體擋塊"); // "Soft Endstops" - LSTR MSG_MAIN = _UxGT("主選單"); // "Main" + LSTR MSG_MAIN_MENU = _UxGT("主選單"); // "Main" LSTR MSG_ADVANCED_SETTINGS = _UxGT("進階設置"); // "Advanced Settings" LSTR MSG_CONFIGURATION = _UxGT("設置"); //Configuration LSTR MSG_RUN_AUTO_FILES = _UxGT("自動開始"); // "Autostart" diff --git a/Marlin/src/lcd/menu/menu_backlash.cpp b/Marlin/src/lcd/menu/menu_backlash.cpp index e71606fc12..2b9404b0f6 100644 --- a/Marlin/src/lcd/menu/menu_backlash.cpp +++ b/Marlin/src/lcd/menu/menu_backlash.cpp @@ -34,7 +34,7 @@ void menu_backlash() { START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); editable.uint8 = backlash.get_correction_uint8(); EDIT_ITEM_FAST(percent, MSG_BACKLASH_CORRECTION, &editable.uint8, backlash.all_off, backlash.all_on, []{ backlash.set_correction_uint8(editable.uint8); }); diff --git a/Marlin/src/lcd/menu/menu_cancelobject.cpp b/Marlin/src/lcd/menu/menu_cancelobject.cpp index b2d36bf8c3..b2784bcd41 100644 --- a/Marlin/src/lcd/menu/menu_cancelobject.cpp +++ b/Marlin/src/lcd/menu/menu_cancelobject.cpp @@ -56,7 +56,7 @@ void menu_cancelobject() { const int8_t ao = cancelable.active_object; START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); // Draw cancelable items in a loop for (int8_t i = -1; i < cancelable.object_count; i++) { diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index 4dce109b42..3ff4b2e562 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -360,7 +360,7 @@ void menu_advanced_settings(); void custom_menus_configuration() { START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); #define HAS_CUSTOM_ITEM_CONF(N) (defined(CONFIG_MENU_ITEM_##N##_DESC) && defined(CONFIG_MENU_ITEM_##N##_GCODE)) @@ -472,7 +472,7 @@ void menu_configuration() { const bool busy = printer_busy(); START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); // // Debug Menu when certain options are enabled diff --git a/Marlin/src/lcd/menu/menu_delta_calibrate.cpp b/Marlin/src/lcd/menu/menu_delta_calibrate.cpp index 94663744ea..a33edd1659 100644 --- a/Marlin/src/lcd/menu/menu_delta_calibrate.cpp +++ b/Marlin/src/lcd/menu/menu_delta_calibrate.cpp @@ -132,7 +132,7 @@ void menu_delta_calibrate() { #endif START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); #if ENABLED(DELTA_AUTO_CALIBRATION) GCODES_ITEM(MSG_DELTA_AUTO_CALIBRATE, F("G33")); diff --git a/Marlin/src/lcd/menu/menu_filament.cpp b/Marlin/src/lcd/menu/menu_filament.cpp index 122f0c4050..6fdcc2b488 100644 --- a/Marlin/src/lcd/menu/menu_filament.cpp +++ b/Marlin/src/lcd/menu/menu_filament.cpp @@ -130,7 +130,7 @@ void menu_change_filament() { #endif START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); // Change filament #if E_STEPPERS == 1 diff --git a/Marlin/src/lcd/menu/menu_game.cpp b/Marlin/src/lcd/menu/menu_game.cpp index fa56d7eee2..750c3c7e82 100644 --- a/Marlin/src/lcd/menu/menu_game.cpp +++ b/Marlin/src/lcd/menu/menu_game.cpp @@ -29,7 +29,7 @@ void menu_game() { START_MENU(); - BACK_ITEM(TERN(LCD_INFO_MENU, MSG_INFO_MENU, MSG_MAIN)); + BACK_ITEM(TERN(LCD_INFO_MENU, MSG_INFO_MENU, MSG_MAIN_MENU)); #if ENABLED(MARLIN_BRICKOUT) SUBMENU(MSG_BRICKOUT, brickout.enter_game); #endif diff --git a/Marlin/src/lcd/menu/menu_info.cpp b/Marlin/src/lcd/menu/menu_info.cpp index 101861074d..abca4a7d15 100644 --- a/Marlin/src/lcd/menu/menu_info.cpp +++ b/Marlin/src/lcd/menu/menu_info.cpp @@ -276,7 +276,7 @@ void menu_info_board() { // void menu_info() { START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); #if ENABLED(LCD_PRINTER_INFO_IS_BOOTSCREEN) SUBMENU(MSG_INFO_PRINTER_MENU, TERN(SHOW_CUSTOM_BOOTSCREEN, menu_show_custom_bootscreen, menu_show_marlin_bootscreen)); #else diff --git a/Marlin/src/lcd/menu/menu_language.cpp b/Marlin/src/lcd/menu/menu_language.cpp index 2ea4359c6b..9361d595f7 100644 --- a/Marlin/src/lcd/menu/menu_language.cpp +++ b/Marlin/src/lcd/menu/menu_language.cpp @@ -39,7 +39,7 @@ static void set_lcd_language(const uint8_t inlang) { void menu_language() { START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); MENU_ITEM_F(function, FPSTR(GET_LANGUAGE_NAME(1)), []{ set_lcd_language(0); }); MENU_ITEM_F(function, FPSTR(GET_LANGUAGE_NAME(2)), []{ set_lcd_language(1); }); diff --git a/Marlin/src/lcd/menu/menu_led.cpp b/Marlin/src/lcd/menu/menu_led.cpp index 867e4dafa9..dea5ecceeb 100644 --- a/Marlin/src/lcd/menu/menu_led.cpp +++ b/Marlin/src/lcd/menu/menu_led.cpp @@ -126,7 +126,7 @@ void menu_led() { START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); #if ENABLED(LED_CONTROL_MENU) if (TERN1(PSU_CONTROL, powerManager.psu_on)) { diff --git a/Marlin/src/lcd/menu/menu_main.cpp b/Marlin/src/lcd/menu/menu_main.cpp index 81b36d2b01..3b1cd73745 100644 --- a/Marlin/src/lcd/menu/menu_main.cpp +++ b/Marlin/src/lcd/menu/menu_main.cpp @@ -114,7 +114,7 @@ void menu_configuration(); void custom_menus_main() { START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); #define HAS_CUSTOM_ITEM_MAIN(N) (defined(MAIN_MENU_ITEM_##N##_DESC) && defined(MAIN_MENU_ITEM_##N##_GCODE)) diff --git a/Marlin/src/lcd/menu/menu_media.cpp b/Marlin/src/lcd/menu/menu_media.cpp index d43053da62..79cca1d97a 100644 --- a/Marlin/src/lcd/menu/menu_media.cpp +++ b/Marlin/src/lcd/menu/menu_media.cpp @@ -119,7 +119,7 @@ void menu_media_filelist() { #if ENABLED(MULTI_VOLUME) ACTION_ITEM(MSG_BACK, []{ ui.goto_screen(menu_media); }); #else - BACK_ITEM_F(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT_F(MSG_MAIN) : GET_TEXT_F(MSG_BACK)); + BACK_ITEM_F(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT_F(MSG_MAIN_MENU) : GET_TEXT_F(MSG_BACK)); #endif if (card.flag.workDirIsRoot) { #if !HAS_SD_DETECT @@ -146,7 +146,7 @@ void menu_media_filelist() { #if ENABLED(MULTI_VOLUME) void menu_media_select() { START_MENU(); - BACK_ITEM_F(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT_F(MSG_MAIN) : GET_TEXT_F(MSG_BACK)); + BACK_ITEM_F(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT_F(MSG_MAIN_MENU) : GET_TEXT_F(MSG_BACK)); #if ENABLED(VOLUME_SD_ONBOARD) ACTION_ITEM(MSG_SD_CARD, []{ card.changeMedia(&card.media_driver_sdcard); card.mount(); ui.goto_screen(menu_media_filelist); }); #endif diff --git a/Marlin/src/lcd/menu/menu_mixer.cpp b/Marlin/src/lcd/menu/menu_mixer.cpp index f787d47d0f..478792479c 100644 --- a/Marlin/src/lcd/menu/menu_mixer.cpp +++ b/Marlin/src/lcd/menu/menu_mixer.cpp @@ -225,7 +225,7 @@ void lcd_mixer_mix_edit() { void menu_mixer() { START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); v_index = mixer.get_current_vtool(); EDIT_ITEM(uint8, MSG_ACTIVE_VTOOL, &v_index, 0, MIXING_VIRTUAL_TOOLS - 1, _lcd_mixer_select_vtool, ENABLED(HAS_DUAL_MIXING)); diff --git a/Marlin/src/lcd/menu/menu_mmu2.cpp b/Marlin/src/lcd/menu/menu_mmu2.cpp index a2412b0f6a..22230687e4 100644 --- a/Marlin/src/lcd/menu/menu_mmu2.cpp +++ b/Marlin/src/lcd/menu/menu_mmu2.cpp @@ -104,7 +104,7 @@ void action_mmu2_reset() { void menu_mmu2() { START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); SUBMENU(MSG_MMU2_LOAD_FILAMENT, menu_mmu2_load_filament); SUBMENU(MSG_MMU2_LOAD_TO_NOZZLE, menu_mmu2_load_to_nozzle); SUBMENU(MSG_MMU2_EJECT_FILAMENT, menu_mmu2_eject_filament); diff --git a/Marlin/src/lcd/menu/menu_motion.cpp b/Marlin/src/lcd/menu/menu_motion.cpp index d5c1a8a38a..200d46a8af 100644 --- a/Marlin/src/lcd/menu/menu_motion.cpp +++ b/Marlin/src/lcd/menu/menu_motion.cpp @@ -317,7 +317,7 @@ void menu_motion() { // // ^ Main // - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); // // Move Axis diff --git a/Marlin/src/lcd/menu/menu_power_monitor.cpp b/Marlin/src/lcd/menu/menu_power_monitor.cpp index 3cd9909e5c..3d718c108a 100644 --- a/Marlin/src/lcd/menu/menu_power_monitor.cpp +++ b/Marlin/src/lcd/menu/menu_power_monitor.cpp @@ -33,7 +33,7 @@ void menu_power_monitor() { START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); #if ENABLED(POWER_MONITOR_CURRENT) { diff --git a/Marlin/src/lcd/menu/menu_spindle_laser.cpp b/Marlin/src/lcd/menu/menu_spindle_laser.cpp index de16316987..e053361fb0 100644 --- a/Marlin/src/lcd/menu/menu_spindle_laser.cpp +++ b/Marlin/src/lcd/menu/menu_spindle_laser.cpp @@ -39,7 +39,7 @@ #endif START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); #if ENABLED(SPINDLE_LASER_USE_PWM) // Change the cutter's "current power" value without turning the cutter on or off diff --git a/Marlin/src/lcd/menu/menu_temperature.cpp b/Marlin/src/lcd/menu/menu_temperature.cpp index 2e5b8f1e54..ec6d49c16f 100644 --- a/Marlin/src/lcd/menu/menu_temperature.cpp +++ b/Marlin/src/lcd/menu/menu_temperature.cpp @@ -162,7 +162,7 @@ void menu_temperature() { #endif START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); // // Nozzle: @@ -291,7 +291,7 @@ void menu_temperature() { void menu_preheat_only() { START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); LOOP_L_N(m, PREHEAT_COUNT) { editable.int8 = m; diff --git a/Marlin/src/lcd/menu/menu_tune.cpp b/Marlin/src/lcd/menu/menu_tune.cpp index 9247607269..8a2636ba5d 100644 --- a/Marlin/src/lcd/menu/menu_tune.cpp +++ b/Marlin/src/lcd/menu/menu_tune.cpp @@ -109,7 +109,7 @@ void menu_tune() { START_MENU(); - BACK_ITEM(MSG_MAIN); + BACK_ITEM(MSG_MAIN_MENU); // // Speed: From 6d819eb8d419bad0bea5c9ce33a673eef5ef03eb Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 14 Apr 2023 18:09:16 -0500 Subject: [PATCH 273/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20App?= =?UTF-8?q?ly=20simplified=20=3F:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/tmc_util.cpp | 4 ++-- Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp | 6 +++--- .../ftdi_eve_lib/extended/command_processor.h | 2 +- .../ftdi_eve_lib/extended/sound_player.cpp | 2 +- .../ftdi_eve_touch_ui/generic/dialog_box_base_class.cpp | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp index 0867686363..2e5a5c5585 100644 --- a/Marlin/src/feature/tmc_util.cpp +++ b/Marlin/src/feature/tmc_util.cpp @@ -601,8 +601,8 @@ case TMC_STEALTHCHOP: serialprint_truefalse(st.en_pwm_mode()); break; case TMC_GLOBAL_SCALER: { - uint16_t value = st.GLOBAL_SCALER(); - SERIAL_ECHO(value ? value : 256); + const uint16_t value = st.GLOBAL_SCALER(); + SERIAL_ECHO(value ?: 256); SERIAL_ECHOPGM("/256"); } break; diff --git a/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp index 3d1594aca2..96f2eeae96 100644 --- a/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp +++ b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp @@ -629,14 +629,14 @@ void ST7920_Lite_Status_Screen::draw_position(const xyze_pos_t &pos, const bool #endif } else { - write_byte(alt_label ? alt_label : 'X'); + write_byte(alt_label ?: 'X'); write_str(dtostrf(pos.x, -4, 0, str), 4); - write_byte(alt_label ? alt_label : 'Y'); + write_byte(alt_label ?: 'Y'); write_str(dtostrf(pos.y, -4, 0, str), 4); } - write_byte(alt_label ? alt_label : 'Z'); + write_byte(alt_label ?: 'Z'); write_str(dtostrf(pos.z, -5, 1, str), 5); } diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/command_processor.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/command_processor.h index 648ed5330a..fd3e8f921c 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/command_processor.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/command_processor.h @@ -125,7 +125,7 @@ class CommandProcessor : public CLCD::CommandFifo { } inline CommandProcessor& set_button_style_callback(const btn_style_func_t *func) { - _btn_style_callback = func ? func : default_button_style_func; + _btn_style_callback = func ?: default_button_style_func; return *this; } diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/sound_player.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/sound_player.cpp index 47bf79e467..3d53f2d99b 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/sound_player.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/sound_player.cpp @@ -41,7 +41,7 @@ namespace FTDI { #endif // Play the note - CLCD::mem_write_16(REG::SOUND, (note == REST) ? 0 : (((note ? note : NOTE_C4) << 8) | effect)); + CLCD::mem_write_16(REG::SOUND, (note == REST) ? 0 : (((note ?: NOTE_C4) << 8) | effect)); CLCD::mem_write_8(REG::PLAY, 1); } diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/dialog_box_base_class.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/dialog_box_base_class.cpp index a006d30942..ea177bfdc1 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/dialog_box_base_class.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/dialog_box_base_class.cpp @@ -39,7 +39,7 @@ void DialogBoxBaseClass::drawMessage(T message, const int16_t font) { .cmd(CLEAR(true,true,true)) .cmd(COLOR_RGB(bg_text_enabled)) .tag(0); - draw_text_box(cmd, BTN_POS(1,1), BTN_SIZE(2,6), message, OPT_CENTER, font ? font : font_large); + draw_text_box(cmd, BTN_POS(1,1), BTN_SIZE(2,6), message, OPT_CENTER, font ?: font_large); cmd.colors(normal_btn); } From 48b712fdc013cfbda94bc1e2452e4538999916a4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 14 Apr 2023 18:00:25 -0500 Subject: [PATCH 274/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Jye?= =?UTF-8?q?rsUI=20code=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 142 +++++++++++++-------------- Marlin/src/lcd/e3v2/jyersui/dwin.h | 63 ++++++------ 2 files changed, 102 insertions(+), 103 deletions(-) diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 285723e278..a24adec8e9 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -377,7 +377,7 @@ private: return min; } - void Draw_Bed_Mesh(int16_t selected = -1, uint8_t gridline_width = 1, uint16_t padding_x = 8, uint16_t padding_y_top = 40 + 53 - 7) { + void Draw_Bed_Mesh(const int16_t selected=-1, const uint8_t gridline_width=1, const uint16_t padding_x=8, const uint16_t padding_y_top=40 + 53 - 7) { drawing_mesh = true; const uint16_t total_width_px = DWIN_WIDTH - padding_x - padding_x, cell_width_px = total_width_px / (GRID_MAX_POINTS_X), @@ -470,15 +470,15 @@ constexpr const char * const CrealityDWINClass::preheat_modes[3]; // 3=Title bar and Menu area (default) // 2=Menu area // 1=Title bar -void CrealityDWINClass::Clear_Screen(uint8_t e/*=3*/) { +void CrealityDWINClass::Clear_Screen(const uint8_t e/*=3*/) { if (e == 1 || e == 3 || e == 4) DWIN_Draw_Rectangle(1, GetColor(eeprom_settings.menu_top_bg, Color_Bg_Blue, false), 0, 0, DWIN_WIDTH, TITLE_HEIGHT); // Clear Title Bar if (e == 2 || e == 3) DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, 31, DWIN_WIDTH, STATUS_Y); // Clear Menu Area if (e == 4) DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, 31, DWIN_WIDTH, DWIN_HEIGHT); // Clear Popup Area } -void CrealityDWINClass::Draw_Float(float value, uint8_t row, bool selected/*=false*/, uint8_t minunit/*=10*/) { +void CrealityDWINClass::Draw_Float(const_float_t value, const uint8_t row, const bool selected/*=false*/, const uint8_t minunit/*=10*/) { const uint8_t digits = (uint8_t)floor(log10(abs(value))) + log10(minunit) + (minunit > 1); - const uint16_t bColor = (selected) ? Select_Color : Color_Bg_Black; + const uint16_t bColor = selected ? Select_Color : Color_Bg_Black; const uint16_t xpos = 240 - (digits * 8); DWIN_Draw_Rectangle(1, Color_Bg_Black, 194, MBASE(row), 234 - (digits * 8), MBASE(row) + 16); if (isnan(value)) @@ -489,44 +489,44 @@ void CrealityDWINClass::Draw_Float(float value, uint8_t row, bool selected/*=fal } } -void CrealityDWINClass::Draw_Option(uint8_t value, const char * const * options, uint8_t row, bool selected/*=false*/, bool color/*=false*/) { - uint16_t bColor = (selected) ? Select_Color : Color_Bg_Black, - tColor = (color) ? GetColor(value, Color_White, false) : Color_White; +void CrealityDWINClass::Draw_Option(const uint8_t value, const char * const * options, const uint8_t row, const bool selected/*=false*/, const bool color/*=false*/) { + const uint16_t bColor = selected ? Select_Color : Color_Bg_Black, + tColor = color ? GetColor(value, Color_White, false) : Color_White; DWIN_Draw_Rectangle(1, bColor, 202, MBASE(row) + 14, 258, MBASE(row) - 2); DWIN_Draw_String(false, DWIN_FONT_MENU, tColor, bColor, 202, MBASE(row) - 1, options[value]); } -uint16_t CrealityDWINClass::GetColor(uint8_t color, uint16_t original, bool light/*=false*/) { +uint16_t CrealityDWINClass::GetColor(const uint8_t color, const uint16_t original, const bool light/*=false*/) { switch (color) { case Default: return original; break; case White: - return (light) ? Color_Light_White : Color_White; + return light ? Color_Light_White : Color_White; break; case Green: - return (light) ? Color_Light_Green : Color_Green; + return light ? Color_Light_Green : Color_Green; break; case Cyan: - return (light) ? Color_Light_Cyan : Color_Cyan; + return light ? Color_Light_Cyan : Color_Cyan; break; case Blue: - return (light) ? Color_Light_Blue : Color_Blue; + return light ? Color_Light_Blue : Color_Blue; break; case Magenta: - return (light) ? Color_Light_Magenta : Color_Magenta; + return light ? Color_Light_Magenta : Color_Magenta; break; case Red: - return (light) ? Color_Light_Red : Color_Red; + return light ? Color_Light_Red : Color_Red; break; case Orange: - return (light) ? Color_Light_Orange : Color_Orange; + return light ? Color_Light_Orange : Color_Orange; break; case Yellow: - return (light) ? Color_Light_Yellow : Color_Yellow; + return light ? Color_Light_Yellow : Color_Yellow; break; case Brown: - return (light) ? Color_Light_Brown : Color_Brown; + return light ? Color_Light_Brown : Color_Brown; break; case Black: return Color_Black; @@ -535,7 +535,7 @@ uint16_t CrealityDWINClass::GetColor(uint8_t color, uint16_t original, bool ligh return Color_White; } -void CrealityDWINClass::Draw_Title(const char * ctitle) { +void CrealityDWINClass::Draw_Title(const char * const ctitle) { DWIN_Draw_String(false, DWIN_FONT_HEAD, GetColor(eeprom_settings.menu_top_txt, Color_White, false), Color_Bg_Blue, (DWIN_WIDTH - strlen(ctitle) * STAT_CHR_W) / 2, 5, ctitle); } void CrealityDWINClass::Draw_Title(FSTR_P const ftitle) { @@ -548,7 +548,7 @@ void _Decorate_Menu_Item(uint8_t row, uint8_t icon, bool more) { DWIN_Draw_Line(CrealityDWIN.GetColor(CrealityDWIN.eeprom_settings.menu_split_line, Line_Color, true), 16, MBASE(row) + 33, 256, MBASE(row) + 33); // Draw Menu Line } -void CrealityDWINClass::Draw_Menu_Item(uint8_t row, uint8_t icon/*=0*/, const char * label1, const char * label2, bool more/*=false*/, bool centered/*=false*/) { +void CrealityDWINClass::Draw_Menu_Item(const uint8_t row, const uint8_t icon/*=0*/, const char * const label1, const char * const label2, const bool more/*=false*/, const bool centered/*=false*/) { const uint8_t label_offset_y = (label1 || label2) ? MENU_CHR_H * 3 / 5 : 0, label1_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (label1 ? strlen(label1) : 0) * MENU_CHR_W) / 2), label2_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (label2 ? strlen(label2) : 0) * MENU_CHR_W) / 2); @@ -557,7 +557,7 @@ void CrealityDWINClass::Draw_Menu_Item(uint8_t row, uint8_t icon/*=0*/, const ch _Decorate_Menu_Item(row, icon, more); } -void CrealityDWINClass::Draw_Menu_Item(uint8_t row, uint8_t icon/*=0*/, FSTR_P const flabel1, FSTR_P const flabel2, bool more/*=false*/, bool centered/*=false*/) { +void CrealityDWINClass::Draw_Menu_Item(const uint8_t row, const uint8_t icon/*=0*/, FSTR_P const flabel1, FSTR_P const flabel2, const bool more/*=false*/, const bool centered/*=false*/) { const uint8_t label_offset_y = (flabel1 || flabel2) ? MENU_CHR_H * 3 / 5 : 0, label1_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (flabel1 ? strlen_P(FTOP(flabel1)) : 0) * MENU_CHR_W) / 2), label2_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (flabel2 ? strlen_P(FTOP(flabel2)) : 0) * MENU_CHR_W) / 2); @@ -566,7 +566,7 @@ void CrealityDWINClass::Draw_Menu_Item(uint8_t row, uint8_t icon/*=0*/, FSTR_P c _Decorate_Menu_Item(row, icon, more); } -void CrealityDWINClass::Draw_Checkbox(uint8_t row, bool value) { +void CrealityDWINClass::Draw_Checkbox(const uint8_t row, const bool value) { #if ENABLED(DWIN_CREALITY_LCD_CUSTOM_ICONS) // Draw appropriate checkbox icon DWIN_ICON_Show(ICON, (value ? ICON_Checkbox_T : ICON_Checkbox_F), 226, MBASE(row) - 3); #else // Draw a basic checkbox using rectangles and lines @@ -583,7 +583,7 @@ void CrealityDWINClass::Draw_Checkbox(uint8_t row, bool value) { #endif } -void CrealityDWINClass::Draw_Menu(uint8_t menu, uint8_t select/*=0*/, uint8_t scroll/*=0*/) { +void CrealityDWINClass::Draw_Menu(const uint8_t menu, const uint8_t select/*=0*/, const uint8_t scroll/*=0*/) { if (active_menu != menu) { last_menu = active_menu; if (process == Menu) last_selection = selection; @@ -600,12 +600,12 @@ void CrealityDWINClass::Draw_Menu(uint8_t menu, uint8_t select/*=0*/, uint8_t sc DWIN_Draw_Rectangle(1, GetColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); } -void CrealityDWINClass::Redraw_Menu(bool lastprocess/*=true*/, bool lastselection/*=false*/, bool lastmenu/*=false*/) { - switch ((lastprocess) ? last_process : process) { +void CrealityDWINClass::Redraw_Menu(const bool lastproc/*=true*/, const bool lastsel/*=false*/, const bool lastmenu/*=false*/) { + switch (lastproc ? last_process : process) { case Menu: - Draw_Menu((lastmenu) ? last_menu : active_menu, (lastselection) ? last_selection : selection, (lastmenu) ? 0 : scrollpos); + Draw_Menu(lastmenu ? last_menu : active_menu, lastsel ? last_selection : selection, lastmenu ? 0 : scrollpos); break; - case Main: Draw_Main_Menu((lastselection) ? last_selection : selection); break; + case Main: Draw_Main_Menu(lastsel ? last_selection : selection); break; case Print: Draw_Print_Screen(); break; case File: Draw_SD_List(); break; default: break; @@ -671,7 +671,7 @@ void CrealityDWINClass::Main_Menu_Icons() { #endif } -void CrealityDWINClass::Draw_Main_Menu(uint8_t select/*=0*/) { +void CrealityDWINClass::Draw_Main_Menu(const uint8_t select/*=0*/) { process = Main; active_menu = MainMenu; selection = select; @@ -803,7 +803,7 @@ void CrealityDWINClass::Draw_Print_confirm() { DWIN_Draw_Rectangle(0, GetColor(eeprom_settings.highlight_box, Color_White), 85, 281, 188, 322); } -void CrealityDWINClass::Draw_SD_Item(uint8_t item, uint8_t row) { +void CrealityDWINClass::Draw_SD_Item(const uint8_t item, const uint8_t row) { if (item == 0) Draw_Menu_Item(0, ICON_Back, card.flag.workDirIsRoot ? F("Back") : F("..")); else { @@ -824,7 +824,7 @@ void CrealityDWINClass::Draw_SD_Item(uint8_t item, uint8_t row) { } } -void CrealityDWINClass::Draw_SD_List(bool removed/*=false*/) { +void CrealityDWINClass::Draw_SD_List(const bool removed/*=false*/) { Clear_Screen(); Draw_Title("Select File"); selection = 0; @@ -842,7 +842,7 @@ void CrealityDWINClass::Draw_SD_List(bool removed/*=false*/) { DWIN_Draw_Rectangle(1, GetColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(0) - 18, 14, MBASE(0) + 33); } -void CrealityDWINClass::Draw_Status_Area(bool icons/*=false*/) { +void CrealityDWINClass::Draw_Status_Area(const bool icons/*=false*/) { if (icons) DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, STATUS_Y, DWIN_WIDTH, DWIN_HEIGHT - 1); @@ -965,7 +965,7 @@ void CrealityDWINClass::Draw_Status_Area(bool icons/*=false*/) { if ((update_z = axis_should_home(Z_AXIS) && ui.get_blink())) DWIN_Draw_String(true, DWIN_FONT_MENU, GetColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 205, 459, F(" -?- ")); else - DWIN_Draw_FloatValue(true, true, 0, DWIN_FONT_MENU, GetColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 3, 2, 205, 459, (current_position.z>=0) ? current_position.z : 0); + DWIN_Draw_FloatValue(true, true, 0, DWIN_FONT_MENU, GetColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 3, 2, 205, 459, current_position.z >= 0 ? current_position.z : 0); } DWIN_UpdateLCD(); } @@ -1001,15 +1001,15 @@ void MarlinUI::kill_screen(FSTR_P const error, FSTR_P const) { } void CrealityDWINClass::Popup_Select() { - const uint16_t c1 = (selection == 0) ? GetColor(eeprom_settings.highlight_box, Color_White) : Color_Bg_Window, - c2 = (selection == 0) ? Color_Bg_Window : GetColor(eeprom_settings.highlight_box, Color_White); + const uint16_t c1 = selection ? Color_Bg_Window : GetColor(eeprom_settings.highlight_box, Color_White), + c2 = selection ? GetColor(eeprom_settings.highlight_box, Color_White) : Color_Bg_Window; DWIN_Draw_Rectangle(0, c1, 25, 279, 126, 318); DWIN_Draw_Rectangle(0, c1, 24, 278, 127, 319); DWIN_Draw_Rectangle(0, c2, 145, 279, 246, 318); DWIN_Draw_Rectangle(0, c2, 144, 278, 247, 319); } -void CrealityDWINClass::Update_Status_Bar(bool refresh/*=false*/) { +void CrealityDWINClass::Update_Status_Bar(const bool refresh/*=false*/) { typedef TextScroller<30> Scroller; static bool new_msg; static Scroller scroller; @@ -1039,7 +1039,7 @@ void CrealityDWINClass::Update_Status_Bar(bool refresh/*=false*/) { /* Menu Item Config */ -void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/*=true*/) { +void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item, bool draw/*=true*/) { const uint8_t row = item - scrollpos; #if HAS_LEVELING static bool level_state; @@ -1199,7 +1199,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/ #if ENABLED(ADVANCED_PAUSE_FEATURE) case PREPARE_CHANGEFIL: if (draw) { - Draw_Menu_Item(row, ICON_ResumeEEPROM, F("Change Filament") + Draw_Menu_Item(row, ICON_ResumeEEPROM, GET_TEXT_F(MSG_FILAMENTCHANGE) #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) , nullptr, true #endif @@ -1737,7 +1737,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/ break; case CHANGEFIL_LOAD: if (draw) - Draw_Menu_Item(row, ICON_WriteEEPROM, F("Load Filament")); + Draw_Menu_Item(row, ICON_WriteEEPROM, GET_TEXT_F(MSG_FILAMENTLOAD)); else { if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) Popup_Handler(ETemp); @@ -1755,7 +1755,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/ break; case CHANGEFIL_UNLOAD: if (draw) - Draw_Menu_Item(row, ICON_ReadEEPROM, F("Unload Filament")); + Draw_Menu_Item(row, ICON_ReadEEPROM, GET_TEXT_F(MSG_FILAMENTUNLOAD)); else { if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) { Popup_Handler(ETemp); @@ -1774,7 +1774,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/ break; case CHANGEFIL_CHANGE: if (draw) - Draw_Menu_Item(row, ICON_ResumeEEPROM, F("Change Filament")); + Draw_Menu_Item(row, ICON_ResumeEEPROM, GET_TEXT_F(MSG_FILAMENTCHANGE)); else { if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) Popup_Handler(ETemp); @@ -3805,7 +3805,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/ #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) case TUNE_CHANGEFIL: if (draw) - Draw_Menu_Item(row, ICON_ResumeEEPROM, F("Change Filament")); + Draw_Menu_Item(row, ICON_ResumeEEPROM, GET_TEXT_F(MSG_FILAMENTCHANGE)); else Popup_Handler(ConfFilChange); break; @@ -3931,32 +3931,32 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/ } } -FSTR_P CrealityDWINClass::Get_Menu_Title(uint8_t menu) { +FSTR_P CrealityDWINClass::Get_Menu_Title(const uint8_t menu) { switch (menu) { - case MainMenu: return F("Main Menu"); - case Prepare: return F("Prepare"); + case MainMenu: return GET_TEXT_F(MSG_MAIN_MENU); + case Prepare: return GET_TEXT_F(MSG_PREPARE); case HomeMenu: return F("Homing Menu"); - case Move: return F("Move"); - case ManualLevel: return F("Manual Leveling"); + case Move: return GET_TEXT_F(MSG_MOVE_AXIS); + case ManualLevel: return GET_TEXT_F(MSG_BED_TRAMMING_MANUAL); #if HAS_ZOFFSET_ITEM - case ZOffset: return F("Z Offset"); + case ZOffset: return GET_TEXT_F(MSG_ZPROBE_ZOFFSET); #endif #if HAS_PREHEAT case Preheat: return F("Preheat"); #endif #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) - case ChangeFilament: return F("Change Filament"); + case ChangeFilament: return GET_TEXT_F(MSG_FILAMENTCHANGE); #endif #if HAS_CUSTOM_MENU case MenuCustom: #ifdef CUSTOM_MENU_CONFIG_TITLE return F(CUSTOM_MENU_CONFIG_TITLE); #else - return F("Custom Commands"); + return GET_TEXT_F(MSG_CUSTOM_COMMANDS); #endif #endif - case Control: return F("Control"); - case TempMenu: return F("Temperature"); + case Control: return GET_TEXT_F(MSG_CONTROL); + case TempMenu: return GET_TEXT_F(MSG_TEMPERATURE); #if HAS_HOTEND || HAS_HEATED_BED case PID: return F("PID Menu"); #endif @@ -3977,14 +3977,14 @@ FSTR_P CrealityDWINClass::Get_Menu_Title(uint8_t menu) { #if HAS_CLASSIC_JERK case MaxJerk: return F("Max Jerk"); #endif - case Steps: return F("Steps/mm"); + case Steps: return GET_TEXT_F(MSG_STEPS_PER_MM); case Visual: return F("Visual Settings"); - case Advanced: return F("Advanced Settings"); + case Advanced: return GET_TEXT_F(MSG_ADVANCED_SETTINGS); #if HAS_BED_PROBE case ProbeMenu: return F("Bed Probe"); #endif #if HAS_TRINAMIC_CONFIG - case TMCMenu: return F("TMC Drivers"); + case TMCMenu: return GET_TEXT_F(MSG_TMC_DRIVERS); #endif case ColorSettings: return F("UI Color Settings"); case Info: return F("Info"); @@ -4000,15 +4000,15 @@ FSTR_P CrealityDWINClass::Get_Menu_Title(uint8_t menu) { case UBLMesh: return F("UBL Bed Leveling"); #endif #if ENABLED(PROBE_MANUALLY) - case ManualMesh: return F("Mesh Bed Leveling"); + case ManualMesh: return GET_TEXT_F(MSG_MANUAL_LEVELING); #endif - case Tune: return F("Tune"); - case PreheatHotend: return F("Preheat Hotend"); + case Tune: return GET_TEXT_F(MSG_TUNE); + case PreheatHotend: return GET_TEXT_F(MSG_PREHEAT_HOTEND); } return F(""); } -uint8_t CrealityDWINClass::Get_Menu_Size(uint8_t menu) { +uint8_t CrealityDWINClass::Get_Menu_Size(const uint8_t menu) { switch (menu) { case Prepare: return PREPARE_TOTAL; case HomeMenu: return HOME_TOTAL; @@ -4085,7 +4085,7 @@ uint8_t CrealityDWINClass::Get_Menu_Size(uint8_t menu) { /* Popup Config */ -void CrealityDWINClass::Popup_Handler(PopupID popupid, bool option/*=false*/) { +void CrealityDWINClass::Popup_Handler(const PopupID popupid, const bool option/*=false*/) { popup = last_popup = popupid; switch (popupid) { case Pause: Draw_Popup(F("Pause Print"), F(""), F(""), Popup); break; @@ -4522,7 +4522,7 @@ void CrealityDWINClass::Popup_Control() { else { pause_menu_response = PAUSE_RESPONSE_RESUME_PRINT; if (printing) Popup_Handler(Resuming); - else Redraw_Menu(true, true, (active_menu==PreheatHotend)); + else Redraw_Menu(true, true, active_menu == PreheatHotend); } break; #endif // ADVANCED_PAUSE_FEATURE @@ -4581,7 +4581,7 @@ void CrealityDWINClass::Confirm_Control() { /* In-Menu Value Modification */ -void CrealityDWINClass::Setup_Value(float value, float min, float max, float unit, uint8_t type) { +void CrealityDWINClass::Setup_Value(const_float_t value, const_float_t min, const_float_t max, const_float_t unit, const uint8_t type) { if (TERN0(HAS_HOTEND, valuepointer == &thermalManager.temp_hotend[0].pid.Ki) || TERN0(HAS_HEATED_BED, valuepointer == &thermalManager.temp_bed.pid.Ki)) tempvalue = unscalePID_i(value) * unit; else if (TERN0(HAS_HOTEND, valuepointer == &thermalManager.temp_hotend[0].pid.Kd) || TERN0(HAS_HEATED_BED, valuepointer == &thermalManager.temp_bed.pid.Kd)) @@ -4597,38 +4597,38 @@ void CrealityDWINClass::Setup_Value(float value, float min, float max, float uni Draw_Float(tempvalue / unit, selection - scrollpos, true, valueunit); } -void CrealityDWINClass::Modify_Value(float &value, float min, float max, float unit, void (*f)()/*=nullptr*/) { +void CrealityDWINClass::Modify_Value(float &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; Setup_Value((float)value, min, max, unit, 0); } -void CrealityDWINClass::Modify_Value(uint8_t &value, float min, float max, float unit, void (*f)()/*=nullptr*/) { +void CrealityDWINClass::Modify_Value(uint8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; Setup_Value((float)value, min, max, unit, 1); } -void CrealityDWINClass::Modify_Value(uint16_t &value, float min, float max, float unit, void (*f)()/*=nullptr*/) { +void CrealityDWINClass::Modify_Value(uint16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; Setup_Value((float)value, min, max, unit, 2); } -void CrealityDWINClass::Modify_Value(int16_t &value, float min, float max, float unit, void (*f)()/*=nullptr*/) { +void CrealityDWINClass::Modify_Value(int16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; Setup_Value((float)value, min, max, unit, 3); } -void CrealityDWINClass::Modify_Value(uint32_t &value, float min, float max, float unit, void (*f)()/*=nullptr*/) { +void CrealityDWINClass::Modify_Value(uint32_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; Setup_Value((float)value, min, max, unit, 4); } -void CrealityDWINClass::Modify_Value(int8_t &value, float min, float max, float unit, void (*f)()/*=nullptr*/) { +void CrealityDWINClass::Modify_Value(int8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; Setup_Value((float)value, min, max, unit, 5); } -void CrealityDWINClass::Modify_Option(uint8_t value, const char * const * options, uint8_t max) { +void CrealityDWINClass::Modify_Option(const uint8_t value, const char * const * options, const uint8_t max) { tempvalue = value; valuepointer = const_cast(options); valuemin = 0; @@ -4652,7 +4652,7 @@ void CrealityDWINClass::Update_Status(const char * const text) { } } -void CrealityDWINClass::Start_Print(bool sd) { +void CrealityDWINClass::Start_Print(const bool sd) { sdprint = sd; if (!printing) { printing = true; @@ -4723,7 +4723,7 @@ void CrealityDWINClass::State_Update() { Popup_Handler(FilChange); else if (pause_menu_response == PAUSE_RESPONSE_RESUME_PRINT) { if (printing) Popup_Handler(Resuming); - else Redraw_Menu(true, true, (active_menu==PreheatHotend)); + else Redraw_Menu(true, true, active_menu == PreheatHotend); } } #endif @@ -4869,13 +4869,13 @@ void CrealityDWINClass::AudioFeedback(const bool success/*=true*/) { Update_Status(success ? "Success" : "Failed"); } -void CrealityDWINClass::Save_Settings(char *buff) { +void CrealityDWINClass::Save_Settings(char * const buff) { TERN_(AUTO_BED_LEVELING_UBL, eeprom_settings.tilt_grid_size = mesh_conf.tilt_grid - 1); eeprom_settings.corner_pos = corner_pos * 10; memcpy(buff, &eeprom_settings, _MIN(sizeof(eeprom_settings), eeprom_data_size)); } -void CrealityDWINClass::Load_Settings(const char *buff) { +void CrealityDWINClass::Load_Settings(const char * const buff) { memcpy(&eeprom_settings, buff, _MIN(sizeof(eeprom_settings), eeprom_data_size)); TERN_(AUTO_BED_LEVELING_UBL, mesh_conf.tilt_grid = eeprom_settings.tilt_grid_size + 1); if (eeprom_settings.corner_pos == 0) eeprom_settings.corner_pos = 325; diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.h b/Marlin/src/lcd/e3v2/jyersui/dwin.h index f360819df5..71db445aa8 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.h +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.h @@ -172,17 +172,17 @@ public: static constexpr const char * const color_names[11] = { "Default", "White", "Green", "Cyan", "Blue", "Magenta", "Red", "Orange", "Yellow", "Brown", "Black" }; static constexpr const char * const preheat_modes[3] = { "Both", "Hotend", "Bed" }; - static void Clear_Screen(uint8_t e=3); - static void Draw_Float(float value, uint8_t row, bool selected=false, uint8_t minunit=10); - static void Draw_Option(uint8_t value, const char * const * options, uint8_t row, bool selected=false, bool color=false); - static uint16_t GetColor(uint8_t color, uint16_t original, bool light=false); - static void Draw_Checkbox(uint8_t row, bool value); - static void Draw_Title(const char * title); + static void Clear_Screen(const uint8_t e=3); + static void Draw_Float(const_float_t value, const uint8_t row, const bool selected=false, const uint8_t minunit=10); + static void Draw_Option(const uint8_t value, const char * const * options, const uint8_t row, const bool selected=false, const bool color=false); + static uint16_t GetColor(const uint8_t color, const uint16_t original, const bool light=false); + static void Draw_Checkbox(const uint8_t row, const bool value); + static void Draw_Title(const char * const title); static void Draw_Title(FSTR_P const title); - static void Draw_Menu_Item(uint8_t row, uint8_t icon=0, const char * const label1=nullptr, const char * const label2=nullptr, bool more=false, bool centered=false); - static void Draw_Menu_Item(uint8_t row, uint8_t icon=0, FSTR_P const flabel1=nullptr, FSTR_P const flabel2=nullptr, bool more=false, bool centered=false); - static void Draw_Menu(uint8_t menu, uint8_t select=0, uint8_t scroll=0); - static void Redraw_Menu(bool lastprocess=true, bool lastselection=false, bool lastmenu=false); + static void Draw_Menu_Item(const uint8_t row, uint8_t icon=0, const char * const label1=nullptr, const char * const label2=nullptr, const bool more=false, const bool centered=false); + static void Draw_Menu_Item(const uint8_t row, uint8_t icon=0, FSTR_P const flabel1=nullptr, FSTR_P const flabel2=nullptr, const bool more=false, const bool centered=false); + static void Draw_Menu(const uint8_t menu, const uint8_t select=0, const uint8_t scroll=0); + static void Redraw_Menu(const bool lastproc=true, const bool lastsel=false, const bool lastmenu=false); static void Redraw_Screen(); static void Main_Menu_Icons(); @@ -196,24 +196,23 @@ public: #endif static void Draw_Print_ProgressElapsed(); static void Draw_Print_confirm(); - static void Draw_SD_Item(uint8_t item, uint8_t row); - static void Draw_SD_List(bool removed=false); - static void Draw_Status_Area(bool icons=false); + static void Draw_SD_Item(const uint8_t item, const uint8_t row); + static void Draw_SD_List(const bool removed=false); + static void Draw_Status_Area(const bool icons=false); static void Draw_Popup(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, uint8_t mode, uint8_t icon=0); static void Popup_Select(); - static void Update_Status_Bar(bool refresh=false); + static void Update_Status_Bar(const bool refresh=false); - #if ENABLED(AUTO_BED_LEVELING_UBL) - static void Draw_Bed_Mesh(int16_t selected = -1, uint8_t gridline_width = 1, uint16_t padding_x = 8, uint16_t padding_y_top = 40 + 53 - 7); + #if HAS_MESH static void Set_Mesh_Viewer_Status(); #endif - static FSTR_P Get_Menu_Title(uint8_t menu); - static uint8_t Get_Menu_Size(uint8_t menu); - static void Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw=true); + static FSTR_P Get_Menu_Title(const uint8_t menu); + static uint8_t Get_Menu_Size(const uint8_t menu); + static void Menu_Item_Handler(const uint8_t menu, const uint8_t item, bool draw=true); - static void Popup_Handler(PopupID popupid, bool option = false); - static void Confirm_Handler(PopupID popupid); + static void Popup_Handler(const PopupID popupid, bool option=false); + static void Confirm_Handler(const PopupID popupid); static void Main_Menu_Control(); static void Menu_Control(); @@ -224,24 +223,24 @@ public: static void Popup_Control(); static void Confirm_Control(); - static void Setup_Value(float value, float min, float max, float unit, uint8_t type); - static void Modify_Value(float &value, float min, float max, float unit, void (*f)()=nullptr); - static void Modify_Value(uint8_t &value, float min, float max, float unit, void (*f)()=nullptr); - static void Modify_Value(uint16_t &value, float min, float max, float unit, void (*f)()=nullptr); - static void Modify_Value(int16_t &value, float min, float max, float unit, void (*f)()=nullptr); - static void Modify_Value(uint32_t &value, float min, float max, float unit, void (*f)()=nullptr); - static void Modify_Value(int8_t &value, float min, float max, float unit, void (*f)()=nullptr); - static void Modify_Option(uint8_t value, const char * const * options, uint8_t max); + static void Setup_Value(const_float_t value, const_float_t min, const_float_t max, const_float_t unit, const uint8_t type); + static void Modify_Value(float &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); + static void Modify_Value(uint8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); + static void Modify_Value(uint16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); + static void Modify_Value(int16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); + static void Modify_Value(uint32_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); + static void Modify_Value(int8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); + static void Modify_Option(const uint8_t value, const char * const * options, const uint8_t max); static void Update_Status(const char * const text); - static void Start_Print(bool sd); + static void Start_Print(const bool sd); static void Stop_Print(); static void Update(); static void State_Update(); static void Screen_Update(); static void AudioFeedback(const bool success=true); - static void Save_Settings(char *buff); - static void Load_Settings(const char *buff); + static void Save_Settings(char * const buff); + static void Load_Settings(const char * const buff); static void Reset_Settings(); }; From 9a1c02591ba4c3d5b41f4c64edd819ea1860b75b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 14 Apr 2023 17:51:45 -0500 Subject: [PATCH 275/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Sta?= =?UTF-8?q?tus=20Message=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/mmu/mmu2.cpp | 6 ++-- Marlin/src/feature/pause.cpp | 15 ++++---- Marlin/src/gcode/bedlevel/G26.cpp | 36 ++++++++------------ Marlin/src/gcode/calibrate/M48.cpp | 2 +- Marlin/src/lcd/language/language_en.h | 4 ++- Marlin/src/lcd/marlinui.cpp | 4 +-- Marlin/src/lcd/marlinui.h | 8 +++++ Marlin/src/lcd/menu/menu_delta_calibrate.cpp | 4 +-- Marlin/src/module/settings.cpp | 4 +-- 9 files changed, 43 insertions(+), 40 deletions(-) diff --git a/Marlin/src/feature/mmu/mmu2.cpp b/Marlin/src/feature/mmu/mmu2.cpp index 7b6a48954b..b56e3d9c29 100644 --- a/Marlin/src/feature/mmu/mmu2.cpp +++ b/Marlin/src/feature/mmu/mmu2.cpp @@ -978,10 +978,10 @@ bool MMU2::eject_filament(const uint8_t index, const bool recover) { manage_response(false, false); if (recover) { - LCD_MESSAGE(MSG_MMU2_EJECT_RECOVER); + LCD_MESSAGE(MSG_MMU2_REMOVE_AND_CLICK); mmu2_attn_buzz(); - TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, F("MMU2 Eject Recover"), FPSTR(CONTINUE_STR))); - TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(F("MMU2 Eject Recover"))); + TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_MMU2_EJECT_RECOVER), FPSTR(CONTINUE_STR))); + TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_MMU2_EJECT_RECOVER))); TERN_(HAS_RESUME_CONTINUE, wait_for_user_response()); mmu2_attn_buzz(true); diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp index 488f5920c2..9e0f51fad6 100644 --- a/Marlin/src/feature/pause.cpp +++ b/Marlin/src/feature/pause.cpp @@ -201,7 +201,7 @@ bool load_filament(const_float_t slow_load_length/*=0*/, const_float_t fast_load KEEPALIVE_STATE(PAUSED_FOR_USER); wait_for_user = true; // LCD click or M108 will clear this - TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(F("Load Filament"))); + TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENTLOAD))); #if ENABLED(HOST_PROMPT_SUPPORT) const char tool = '0' + TERN0(MULTI_FILAMENT_SENSOR, active_extruder); @@ -465,7 +465,7 @@ bool pause_print(const_float_t retract, const xyz_pos_t &park_point, const bool // If axes don't need to home then the nozzle can park if (do_park) nozzle.park(0, park_point); // Park the nozzle by doing a Minimum Z Raise followed by an XY Move - TERN_(DWIN_LCD_PROUI, if (!do_park) ui.set_status(GET_TEXT_F(MSG_PARK_FAILED))); + if (!do_park) LCD_MESSAGE(MSG_PARK_FAILED); #if ENABLED(DUAL_X_CARRIAGE) const int8_t saved_ext = active_extruder; @@ -554,9 +554,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_INFO, GET_TEXT_F(MSG_REHEATING))); - TERN_(EXTENSIBLE_UI, ExtUI::onStatusChanged(GET_TEXT_F(MSG_REHEATING))); - - TERN_(DWIN_LCD_PROUI, LCD_MESSAGE(MSG_REHEATING)); + LCD_MESSAGE(MSG_REHEATING); // Re-enable the heaters if they timed out HOTEND_LOOP() thermalManager.reset_hotend_idle_timer(e); @@ -573,8 +571,11 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep HOTEND_LOOP() thermalManager.heater_idle[e].start(nozzle_timeout); TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_REHEATDONE), FPSTR(CONTINUE_STR))); - TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_REHEATDONE))); - TERN_(DWIN_LCD_PROUI, LCD_MESSAGE(MSG_REHEATDONE)); + #if ENABLED(EXTENSIBLE_UI) + ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_REHEATDONE)); + #else + LCD_MESSAGE(MSG_REHEATDONE); + #endif IF_DISABLED(PAUSE_REHEAT_FAST_RESUME, wait_for_user = true); diff --git a/Marlin/src/gcode/bedlevel/G26.cpp b/Marlin/src/gcode/bedlevel/G26.cpp index aa6e0c1f0c..fe20423b8d 100644 --- a/Marlin/src/gcode/bedlevel/G26.cpp +++ b/Marlin/src/gcode/bedlevel/G26.cpp @@ -162,8 +162,8 @@ float g26_random_deviation = 0.0; */ bool user_canceled() { if (!ui.button_pressed()) return false; // Return if the button isn't pressed - ui.set_status(GET_TEXT_F(MSG_G26_CANCELED), 99); - TERN_(HAS_MARLINUI_MENU, ui.quick_feedback()); + LCD_MESSAGE_MAX(MSG_G26_CANCELED); + ui.quick_feedback(); ui.wait_for_release(); return true; } @@ -321,11 +321,9 @@ typedef struct { #if HAS_HEATED_BED if (bed_temp > 25) { - #if HAS_WIRED_LCD - ui.set_status(GET_TEXT_F(MSG_G26_HEATING_BED), 99); - ui.quick_feedback(); - TERN_(HAS_MARLINUI_MENU, ui.capture()); - #endif + LCD_MESSAGE_MAX(MSG_G26_HEATING_BED); + ui.quick_feedback(); + TERN_(HAS_MARLINUI_MENU, ui.capture()); thermalManager.setTargetBed(bed_temp); // Wait for the temperature to stabilize @@ -340,20 +338,16 @@ typedef struct { #endif // HAS_HEATED_BED // Start heating the active nozzle - #if HAS_WIRED_LCD - ui.set_status(GET_TEXT_F(MSG_G26_HEATING_NOZZLE), 99); - ui.quick_feedback(); - #endif + LCD_MESSAGE_MAX(MSG_G26_HEATING_NOZZLE); + ui.quick_feedback(); thermalManager.setTargetHotend(hotend_temp, active_extruder); // Wait for the temperature to stabilize if (!thermalManager.wait_for_hotend(active_extruder, true OPTARG(G26_CLICK_CAN_CANCEL, true))) return G26_ERR; - #if HAS_WIRED_LCD - ui.reset_status(); - ui.quick_feedback(); - #endif + ui.reset_status(); + ui.completion_feedback(); return G26_OK; } @@ -371,7 +365,7 @@ typedef struct { if (prime_flag == -1) { // The user wants to control how much filament gets purged ui.capture(); - ui.set_status(GET_TEXT_F(MSG_G26_MANUAL_PRIME), 99); + LCD_MESSAGE_MAX(MSG_G26_MANUAL_PRIME); ui.chirp(); destination = current_position; @@ -398,17 +392,15 @@ typedef struct { ui.wait_for_release(); - ui.set_status(GET_TEXT_F(MSG_G26_PRIME_DONE), 99); + LCD_MESSAGE_MAX(MSG_G26_PRIME_DONE); ui.quick_feedback(); ui.release(); } else #endif { - #if HAS_WIRED_LCD - ui.set_status(GET_TEXT_F(MSG_G26_FIXED_LENGTH), 99); - ui.quick_feedback(); - #endif + LCD_MESSAGE_MAX(MSG_G26_FIXED_LENGTH); + ui.quick_feedback(); destination = current_position; destination.e += prime_length; prepare_internal_move_to_destination(fr_slow_e); @@ -853,7 +845,7 @@ void GcodeSuite::G26() { } while (--g26_repeats && location.valid()); LEAVE: - ui.set_status(GET_TEXT_F(MSG_G26_LEAVING), -1); + LCD_MESSAGE_MIN(MSG_G26_LEAVING); TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(location, ExtUI::G26_FINISH)); g26.retract_filament(destination); diff --git a/Marlin/src/gcode/calibrate/M48.cpp b/Marlin/src/gcode/calibrate/M48.cpp index ff14175c71..5e0c21b42e 100644 --- a/Marlin/src/gcode/calibrate/M48.cpp +++ b/Marlin/src/gcode/calibrate/M48.cpp @@ -84,7 +84,7 @@ void GcodeSuite::M48() { }; if (!probe.can_reach(test_position)) { - ui.set_status(GET_TEXT_F(MSG_M48_OUT_OF_BOUNDS), 99); + LCD_MESSAGE_MAX(MSG_M48_OUT_OF_BOUNDS); SERIAL_ECHOLNPGM("? (X,Y) out of bounds."); return; } diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 68c231d556..244d61a712 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -639,6 +639,7 @@ namespace Language_en { LSTR MSG_CHAMBER_COOLING = _UxGT("Chamber Cooling..."); LSTR MSG_LASER_COOLING = _UxGT("Laser Cooling..."); LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Calibration"); + LSTR MSG_DELTA_CALIBRATION_IN_PROGRESS = _UxGT("Delta Calibration in progress"); LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrate X"); LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrate Y"); LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrate Z"); @@ -749,7 +750,8 @@ namespace Language_en { LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); LSTR MSG_MMU2_RESET = _UxGT("Reset MMU"); LSTR MSG_MMU2_RESETTING = _UxGT("MMU Resetting..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Remove, click"); + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("MMU2 Eject Recover"); + LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Remove and click..."); LSTR MSG_MIX = _UxGT("Mix"); LSTR MSG_MIX_COMPONENT_N = _UxGT("Component ="); diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 88cdb99076..22b3fa27d7 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -671,7 +671,7 @@ void MarlinUI::init() { #if HAS_MARLINUI_MENU if (use_click()) { #if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) - next_filament_display = millis() + 5000UL; // Show status message for 5s + pause_filament_display(); #endif goto_screen(menu_main); reinit_lcd(); // Revive a noisy shared SPI LCD @@ -1592,7 +1592,7 @@ void MarlinUI::init() { #endif #if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) - next_filament_display = ms + 5000UL; // Show status message for 5s + pause_filament_display(ms); // Show status message for 5s #endif #endif diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index 9d6d235e96..32d747da43 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -469,6 +469,7 @@ public: #if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) static millis_t next_filament_display; + static void pause_filament_display(const millis_t ms=millis()) { next_filament_display = ms + 5000UL; } #endif #if HAS_TOUCH_SLEEP @@ -493,6 +494,11 @@ public: static void status_screen(); + #else + + static void quick_feedback(const bool=true) {} + static void completion_feedback(const bool=true) {} + #endif #if HAS_MARLINUI_U8GLIB @@ -803,5 +809,7 @@ private: #define LCD_MESSAGE_F(S) ui.set_status(F(S)) #define LCD_MESSAGE(M) ui.set_status(GET_TEXT_F(M)) +#define LCD_MESSAGE_MIN(M) ui.set_status(GET_TEXT_F(M), -1) +#define LCD_MESSAGE_MAX(M) ui.set_status(GET_TEXT_F(M), 99) #define LCD_ALERTMESSAGE_F(S) ui.set_alert_status(F(S)) #define LCD_ALERTMESSAGE(M) ui.set_alert_status(GET_TEXT_F(M)) diff --git a/Marlin/src/lcd/menu/menu_delta_calibrate.cpp b/Marlin/src/lcd/menu/menu_delta_calibrate.cpp index a33edd1659..3b04de9eb0 100644 --- a/Marlin/src/lcd/menu/menu_delta_calibrate.cpp +++ b/Marlin/src/lcd/menu/menu_delta_calibrate.cpp @@ -68,8 +68,8 @@ void _man_probe_pt(const xy_pos_t &xy) { float lcd_probe_pt(const xy_pos_t &xy) { _man_probe_pt(xy); ui.defer_status_screen(); - TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, F("Delta Calibration in progress"), FPSTR(CONTINUE_STR))); - TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(F("Delta Calibration in progress"))); + TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_DELTA_CALIBRATION_IN_PROGRESS), FPSTR(CONTINUE_STR))); + TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_DELTA_CALIBRATION_IN_PROGRESS))); TERN_(HAS_RESUME_CONTINUE, wait_for_user_response()); ui.goto_previous_screen_no_defer(); return current_position.z; diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index ca5b940c5d..8ebc8c61f5 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -1706,7 +1706,7 @@ void MarlinSettings::postprocess() { stored_ver[1] = '\0'; } DEBUG_ECHO_MSG("EEPROM version mismatch (EEPROM=", stored_ver, " Marlin=" EEPROM_VERSION ")"); - TERN_(DWIN_LCD_PROUI, LCD_MESSAGE(MSG_ERR_EEPROM_VERSION)); + LCD_MESSAGE(MSG_ERR_EEPROM_VERSION); TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_ERR_EEPROM_VERSION))); IF_DISABLED(EEPROM_AUTO_INIT, ui.eeprom_alert_version()); @@ -2662,7 +2662,7 @@ void MarlinSettings::postprocess() { else if (working_crc != stored_crc) { eeprom_error = true; DEBUG_ERROR_MSG("EEPROM CRC mismatch - (stored) ", stored_crc, " != ", working_crc, " (calculated)!"); - TERN_(DWIN_LCD_PROUI, LCD_MESSAGE(MSG_ERR_EEPROM_CRC)); + LCD_MESSAGE(MSG_ERR_EEPROM_CRC); TERN_(HOST_EEPROM_CHITCHAT, hostui.notify(GET_TEXT_F(MSG_ERR_EEPROM_CRC))); IF_DISABLED(EEPROM_AUTO_INIT, ui.eeprom_alert_crc()); } From 78bdf34b7bc56a0a8aa193cfd824ad2841ed25dc Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 14 Apr 2023 18:06:56 -0500 Subject: [PATCH 276/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Hos?= =?UTF-8?q?tUI::continue=5Fprompt=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/host_actions.h | 7 +++++-- Marlin/src/feature/mmu/mmu2.cpp | 2 +- Marlin/src/feature/pause.cpp | 6 +++--- Marlin/src/gcode/config/M43.cpp | 2 +- Marlin/src/gcode/lcd/M0_M1.cpp | 4 ++-- Marlin/src/gcode/sd/M1001.cpp | 2 +- Marlin/src/lcd/menu/menu_delta_calibrate.cpp | 2 +- Marlin/src/module/probe.cpp | 4 ++-- 8 files changed, 16 insertions(+), 13 deletions(-) diff --git a/Marlin/src/feature/host_actions.h b/Marlin/src/feature/host_actions.h index 3f75562398..c030ebad01 100644 --- a/Marlin/src/feature/host_actions.h +++ b/Marlin/src/feature/host_actions.h @@ -35,6 +35,8 @@ PROMPT_INFO }; + extern const char CONTINUE_STR[], DISMISS_STR[]; + #endif class HostUI { @@ -111,6 +113,9 @@ class HostUI { static void prompt_do(const PromptReason reason, FSTR_P const pstr, const char extra_char, FSTR_P const btn1=nullptr, FSTR_P const btn2=nullptr); static void prompt_do(const PromptReason reason, const char * const cstr, const char extra_char, FSTR_P const btn1=nullptr, FSTR_P const btn2=nullptr); + static void continue_prompt(FSTR_P const fstr) { prompt_do(PROMPT_USER_CONTINUE, fstr, FPSTR(CONTINUE_STR)); } + static void continue_prompt(const char * const cstr) { prompt_do(PROMPT_USER_CONTINUE, cstr, FPSTR(CONTINUE_STR)); } + static void prompt_open(const PromptReason reason, FSTR_P const pstr, FSTR_P const btn1=nullptr, FSTR_P const btn2=nullptr) { if (host_prompt_reason == PROMPT_NOT_DEFINED) prompt_do(reason, pstr, btn1, btn2); } @@ -124,5 +129,3 @@ class HostUI { }; extern HostUI hostui; - -extern const char CONTINUE_STR[], DISMISS_STR[]; diff --git a/Marlin/src/feature/mmu/mmu2.cpp b/Marlin/src/feature/mmu/mmu2.cpp index b56e3d9c29..ea58c2859b 100644 --- a/Marlin/src/feature/mmu/mmu2.cpp +++ b/Marlin/src/feature/mmu/mmu2.cpp @@ -980,7 +980,7 @@ bool MMU2::eject_filament(const uint8_t index, const bool recover) { if (recover) { LCD_MESSAGE(MSG_MMU2_REMOVE_AND_CLICK); mmu2_attn_buzz(); - TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_MMU2_EJECT_RECOVER), FPSTR(CONTINUE_STR))); + TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(GET_TEXT_F(MSG_MMU2_EJECT_RECOVER))); TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_MMU2_EJECT_RECOVER))); TERN_(HAS_RESUME_CONTINUE, wait_for_user_response()); mmu2_attn_buzz(true); diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp index 9e0f51fad6..35d1fd79f9 100644 --- a/Marlin/src/feature/pause.cpp +++ b/Marlin/src/feature/pause.cpp @@ -262,7 +262,7 @@ bool load_filament(const_float_t slow_load_length/*=0*/, const_float_t fast_load if (show_lcd) ui.pause_show_message(PAUSE_MESSAGE_PURGE); TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE))); - TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE), FPSTR(CONTINUE_STR))); + TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE))); wait_for_user = true; // A click or M108 breaks the purge_length loop for (float purge_count = purge_length; purge_count > 0 && wait_for_user; --purge_count) unscaled_e_move(1, ADVANCED_PAUSE_PURGE_FEEDRATE); @@ -530,7 +530,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep // Wait for filament insert by user and press button KEEPALIVE_STATE(PAUSED_FOR_USER); - TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_NOZZLE_PARKED), FPSTR(CONTINUE_STR))); + TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(GET_TEXT_F(MSG_NOZZLE_PARKED))); TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_NOZZLE_PARKED))); wait_for_user = true; // LCD click or M108 will clear this while (wait_for_user) { @@ -570,7 +570,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep HOTEND_LOOP() thermalManager.heater_idle[e].start(nozzle_timeout); - TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_REHEATDONE), FPSTR(CONTINUE_STR))); + TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(GET_TEXT_F(MSG_REHEATDONE))); #if ENABLED(EXTENSIBLE_UI) ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_REHEATDONE)); #else diff --git a/Marlin/src/gcode/config/M43.cpp b/Marlin/src/gcode/config/M43.cpp index a3e837eb53..c427fe7a31 100644 --- a/Marlin/src/gcode/config/M43.cpp +++ b/Marlin/src/gcode/config/M43.cpp @@ -362,7 +362,7 @@ void GcodeSuite::M43() { #if HAS_RESUME_CONTINUE KEEPALIVE_STATE(PAUSED_FOR_USER); wait_for_user = true; - TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, F("M43 Waiting..."), FPSTR(CONTINUE_STR))); + TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(F("M43 Waiting..."))); #if ENABLED(EXTENSIBLE_UI) ExtUI::onUserConfirmRequired(F("M43 Waiting...")); #else diff --git a/Marlin/src/gcode/lcd/M0_M1.cpp b/Marlin/src/gcode/lcd/M0_M1.cpp index 35afea0f6e..120a36a578 100644 --- a/Marlin/src/gcode/lcd/M0_M1.cpp +++ b/Marlin/src/gcode/lcd/M0_M1.cpp @@ -87,9 +87,9 @@ void GcodeSuite::M0_M1() { #if ENABLED(HOST_PROMPT_SUPPORT) if (parser.string_arg) - hostui.prompt_do(PROMPT_USER_CONTINUE, parser.string_arg, FPSTR(CONTINUE_STR)); + hostui.continue_prompt(parser.string_arg); else - hostui.prompt_do(PROMPT_USER_CONTINUE, parser.codenum ? F("M1 Stop") : F("M0 Stop"), FPSTR(CONTINUE_STR)); + hostui.continue_prompt(parser.codenum ? F("M1 Stop") : F("M0 Stop")); #endif TERN_(HAS_RESUME_CONTINUE, wait_for_user_response(ms)); diff --git a/Marlin/src/gcode/sd/M1001.cpp b/Marlin/src/gcode/sd/M1001.cpp index c7728a5a47..1d1d1a4b7f 100644 --- a/Marlin/src/gcode/sd/M1001.cpp +++ b/Marlin/src/gcode/sd/M1001.cpp @@ -97,7 +97,7 @@ void GcodeSuite::M1001() { if (long_print) { printerEventLEDs.onPrintCompleted(); TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_PRINT_DONE))); - TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_PRINT_DONE), FPSTR(CONTINUE_STR))); + TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(GET_TEXT_F(MSG_PRINT_DONE))); TERN_(HAS_RESUME_CONTINUE, wait_for_user_response(SEC_TO_MS(TERN(HAS_MARLINUI_MENU, PE_LEDS_COMPLETED_TIME, 30)))); printerEventLEDs.onResumeAfterWait(); } diff --git a/Marlin/src/lcd/menu/menu_delta_calibrate.cpp b/Marlin/src/lcd/menu/menu_delta_calibrate.cpp index 3b04de9eb0..fe0be04398 100644 --- a/Marlin/src/lcd/menu/menu_delta_calibrate.cpp +++ b/Marlin/src/lcd/menu/menu_delta_calibrate.cpp @@ -68,7 +68,7 @@ void _man_probe_pt(const xy_pos_t &xy) { float lcd_probe_pt(const xy_pos_t &xy) { _man_probe_pt(xy); ui.defer_status_screen(); - TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_DELTA_CALIBRATION_IN_PROGRESS), FPSTR(CONTINUE_STR))); + TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(GET_TEXT_F(MSG_DELTA_CALIBRATION_IN_PROGRESS))); TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_DELTA_CALIBRATION_IN_PROGRESS))); TERN_(HAS_RESUME_CONTINUE, wait_for_user_response()); ui.goto_previous_screen_no_defer(); diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 0f2fca119c..75295c5f5a 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -168,7 +168,7 @@ xyz_pos_t Probe::offset; // Initialized by settings.load() LCD_MESSAGE(MSG_MANUAL_DEPLOY_TOUCHMI); ui.return_to_status(); - TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, F("Deploy TouchMI"), FPSTR(CONTINUE_STR))); + TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(F("Deploy TouchMI"))); TERN_(HAS_RESUME_CONTINUE, wait_for_user_response()); ui.reset_status(); ui.goto_screen(prev_screen); @@ -364,7 +364,7 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { ui.set_status(ds_str, 99); SERIAL_ECHOLNF(deploy ? GET_EN_TEXT_F(MSG_MANUAL_DEPLOY) : GET_EN_TEXT_F(MSG_MANUAL_STOW)); - TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, ds_str, FPSTR(CONTINUE_STR))); + TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(ds_str)); TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(ds_str)); TERN_(DWIN_LCD_PROUI, DWIN_Popup_Confirm(ICON_BLTouch, ds_str, FPSTR(CONTINUE_STR))); TERN_(HAS_RESUME_CONTINUE, wait_for_user_response()); From cc35cb3876ed95163b4715bc29da96813906663a Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Sun, 16 Apr 2023 03:26:08 +0200 Subject: [PATCH 277/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Configuration=20Em?= =?UTF-8?q?bedding=20(#25688)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/eeprom/M500-M504.cpp | 16 ++++++++++++---- buildroot/share/PlatformIO/scripts/signature.py | 3 ++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Marlin/src/gcode/eeprom/M500-M504.cpp b/Marlin/src/gcode/eeprom/M500-M504.cpp index 6da1d1cbd7..31da2c5adf 100644 --- a/Marlin/src/gcode/eeprom/M500-M504.cpp +++ b/Marlin/src/gcode/eeprom/M500-M504.cpp @@ -66,11 +66,19 @@ void GcodeSuite::M502() { #if ENABLED(CONFIGURATION_EMBEDDING) if (parser.seen_test('C')) { - SdBaseFile file; - const uint16_t size = sizeof(mc_zip); + MediaFile file; // Need to create the config size on the SD card - if (file.open(card.getroot(), "mc.zip", O_WRITE|O_CREAT) && file.write(pgm_read_ptr(mc_zip), size) != -1 && file.close()) - SERIAL_ECHO_MSG("Configuration saved as 'mc.zip'"); + MediaFile root = card.getroot(); + if (file.open(&root, "mc.zip", O_WRITE|O_CREAT)) { + bool success = true; + for (uint16_t i = 0; success && i < sizeof(mc_zip); ++i) { + const uint8_t c = pgm_read_byte(&mc_zip[i]); + file.write(c); + } + success = file.close() && success; + + if (success) SERIAL_ECHO_MSG("Configuration saved as 'mc.zip'"); + } } #endif } diff --git a/buildroot/share/PlatformIO/scripts/signature.py b/buildroot/share/PlatformIO/scripts/signature.py index 4fc0084e57..0da02f837b 100644 --- a/buildroot/share/PlatformIO/scripts/signature.py +++ b/buildroot/share/PlatformIO/scripts/signature.py @@ -56,13 +56,14 @@ def compute_build_signature(env): files_to_keep = [ 'Marlin/Configuration.h', 'Marlin/Configuration_adv.h' ] build_path = Path(env['PROJECT_BUILD_DIR'], env['PIOENV']) + build_path_relative = Path('.pio', 'build', env['PIOENV']) # Check if we can skip processing hashes = '' for header in files_to_keep: hashes += get_file_sha256sum(header)[0:10] - marlin_json = build_path / 'marlin_config.json' + marlin_json = build_path_relative / 'marlin_config.json' marlin_zip = build_path / 'mc.zip' # Read existing config file From 883bde07c650068f10995b7c58cd72a432d4b78e Mon Sep 17 00:00:00 2001 From: Andrew <18502096+classicrocker883@users.noreply.github.com> Date: Sat, 15 Apr 2023 21:51:51 -0400 Subject: [PATCH 278/659] =?UTF-8?q?=F0=9F=94=A7=20Animated=20bootscreen=20?= =?UTF-8?q?U8glib-only=20(#25684)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 4 +++- ini/stm32f4.ini | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index dd96459004..294cc44487 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1535,6 +1535,9 @@ //#define SHOW_CUSTOM_BOOTSCREEN // Show the bitmap in Marlin/_Bootscreen.h on startup. #endif #if HAS_MARLINUI_U8GLIB + #if ENABLED(SHOW_BOOTSCREEN) + //#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash. + #endif //#define CUSTOM_STATUS_SCREEN_IMAGE // Show the bitmap in Marlin/_Statusscreen.h on the status screen. #endif #endif @@ -1947,7 +1950,6 @@ //#define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap //#define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames //#define STATUS_HEAT_PERCENT // Show heating in a progress bar - //#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash. // Frivolous Game Options //#define MARLIN_BRICKOUT diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini index e9b9a956de..7060f95db7 100644 --- a/ini/stm32f4.ini +++ b/ini/stm32f4.ini @@ -47,6 +47,7 @@ board = marlin_STM32F407ZGT6 board_build.variant = MARLIN_FLY_F407ZG board_build.offset = 0x8000 upload_protocol = dfu + # # FYSETC S6 (STM32F446RET6 ARM Cortex-M4) # From 6e3b58d76a00e861a9945f3073719f82473a0faf Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 15 Apr 2023 22:24:14 -0500 Subject: [PATCH 279/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Any?= =?UTF-8?q?cubic=20shared=20code=20(#25690)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{anycubic_vyper => anycubic}/Tunes.cpp | 27 +-- .../{anycubic_vyper => anycubic}/Tunes.h | 137 ++--------- Marlin/src/lcd/extui/anycubic/common_defs.h | 138 +++++++++++ .../extui/anycubic_chiron/FileNavigator.cpp | 28 +-- .../lcd/extui/anycubic_chiron/FileNavigator.h | 38 +-- .../src/lcd/extui/anycubic_chiron/Tunes.cpp | 61 ----- Marlin/src/lcd/extui/anycubic_chiron/Tunes.h | 224 ------------------ .../lcd/extui/anycubic_chiron/chiron_tft.cpp | 10 +- .../extui/anycubic_chiron/chiron_tft_defs.h | 140 ++--------- .../lcd/extui/anycubic_vyper/FileNavigator.h | 33 ++- .../src/lcd/extui/anycubic_vyper/dgus_tft.cpp | 18 +- .../lcd/extui/anycubic_vyper/dgus_tft_defs.h | 119 +--------- ini/features.ini | 1 + platformio.ini | 4 +- 14 files changed, 264 insertions(+), 714 deletions(-) rename Marlin/src/lcd/extui/{anycubic_vyper => anycubic}/Tunes.cpp (71%) rename Marlin/src/lcd/extui/{anycubic_vyper => anycubic}/Tunes.h (54%) create mode 100644 Marlin/src/lcd/extui/anycubic/common_defs.h delete mode 100644 Marlin/src/lcd/extui/anycubic_chiron/Tunes.cpp delete mode 100644 Marlin/src/lcd/extui/anycubic_chiron/Tunes.h diff --git a/Marlin/src/lcd/extui/anycubic_vyper/Tunes.cpp b/Marlin/src/lcd/extui/anycubic/Tunes.cpp similarity index 71% rename from Marlin/src/lcd/extui/anycubic_vyper/Tunes.cpp rename to Marlin/src/lcd/extui/anycubic/Tunes.cpp index d7f0e4b6d4..118f049bc1 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/Tunes.cpp +++ b/Marlin/src/lcd/extui/anycubic/Tunes.cpp @@ -21,7 +21,7 @@ */ /** - * lcd/extui/anycubic_vyper/Tunes.cpp + * lcd/extui/anycubic/Tunes.cpp */ /*********************************************************************** @@ -31,28 +31,23 @@ #include "../../../inc/MarlinConfigPre.h" -#if ENABLED(ANYCUBIC_LCD_VYPER) +#if EITHER(ANYCUBIC_LCD_CHIRON, ANYCUBIC_LCD_VYPER) #include "Tunes.h" +#include "../../../libs/buzzer.h" #include "../ui_api.h" namespace Anycubic { - void PlayTune(const uint8_t beeperPin, const uint16_t *tune, const uint8_t speed=1) { - uint8_t pos = 1; - uint16_t wholenotelen = tune[0] / speed; - do { - uint16_t freq = tune[pos]; - uint16_t notelen = wholenotelen / tune[pos + 1]; - - ::tone(beeperPin, freq, notelen); - ExtUI::delay_ms(notelen); - pos += 2; - - if (pos >= MAX_TUNE_LENGTH) break; - } while (tune[pos] != n_END); + void PlayTune(const uint16_t *tune, const uint8_t speed=1) { + const uint16_t wholenotelen = tune[0] / speed; + for (uint8_t pos = 1; pos < MAX_TUNE_LENGTH; pos += 2) { + const uint16_t freq = tune[pos]; + if (freq == n_END) break; + BUZZ(freq, wholenotelen / tune[pos + 1]); + } } } -#endif // ANYCUBIC_LCD_VYPER +#endif // ANYCUBIC_LCD_CHIRON || ANYCUBIC_LCD_VYPER diff --git a/Marlin/src/lcd/extui/anycubic_vyper/Tunes.h b/Marlin/src/lcd/extui/anycubic/Tunes.h similarity index 54% rename from Marlin/src/lcd/extui/anycubic_vyper/Tunes.h rename to Marlin/src/lcd/extui/anycubic/Tunes.h index 9a06768ac6..a05107738d 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/Tunes.h +++ b/Marlin/src/lcd/extui/anycubic/Tunes.h @@ -22,7 +22,7 @@ #pragma once /** - * lcd/extui/anycubic_vyper/Tunes.h + * lcd/extui/anycubic/Tunes.h */ /************************************************************************** @@ -41,127 +41,23 @@ #define MAX_TUNE_LENGTH 128 -// Special notes! -#define n_P 0 // silence or pause -#define n_END 10000 // end of tune marker - // Note duration divisors -#define l_T1 1 -#define l_T2 2 -#define l_T3 3 -#define l_T4 4 -#define l_T8 8 -#define l_T16 16 +enum { l_T1=1, l_T2 =2, l_T3=3, l_T4 =4, l_T8=8, l_T16=16 }; // Note Frequency -#define n_C0 16 -#define n_CS0 17 -#define n_D0 18 -#define n_DS0 19 -#define n_E0 21 -#define n_F0 22 -#define n_FS0 23 -#define n_G0 25 -#define n_GS0 26 -#define n_A0 28 -#define n_AS0 29 -#define n_B0 31 -#define n_C1 33 -#define n_CS1 35 -#define n_D1 37 -#define n_DS1 39 -#define n_E1 41 -#define n_F1 44 -#define n_FS1 46 -#define n_G1 49 -#define n_GS1 52 -#define n_A1 55 -#define n_AS1 58 -#define n_B1 62 -#define n_C2 65 -#define n_CS2 69 -#define n_D2 73 -#define n_DS2 78 -#define n_E2 82 -#define n_F2 87 -#define n_FS2 93 -#define n_G2 98 -#define n_GS2 104 -#define n_A2 110 -#define n_AS2 117 -#define n_B2 123 -#define n_C3 131 -#define n_CS3 139 -#define n_D3 147 -#define n_DS3 156 -#define n_E3 165 -#define n_F3 175 -#define n_FS3 185 -#define n_G3 196 -#define n_GS3 208 -#define n_A3 220 -#define n_AS3 233 -#define n_B3 247 -#define n_C4 262 -#define n_CS4 277 -#define n_D4 294 -#define n_DS4 311 -#define n_E4 330 -#define n_F4 349 -#define n_FS4 370 -#define n_G4 392 -#define n_GS4 415 -#define n_A4 440 -#define n_AS4 466 -#define n_B4 494 -#define n_C5 523 -#define n_CS5 554 -#define n_D5 587 -#define n_DS5 622 -#define n_E5 659 -#define n_F5 698 -#define n_FS5 740 -#define n_G5 784 -#define n_GS5 831 -#define n_A5 880 -#define n_AS5 932 -#define n_B5 988 -#define n_C6 1047 -#define n_CS6 1109 -#define n_D6 1175 -#define n_DS6 1245 -#define n_E6 1319 -#define n_F6 1397 -#define n_FS6 1480 -#define n_G6 1568 -#define n_GS6 1661 -#define n_A6 1760 -#define n_AS6 1865 -#define n_B6 1976 -#define n_C7 2093 -#define n_CS7 2217 -#define n_D7 2349 -#define n_DS7 2489 -#define n_E7 2637 -#define n_F7 2794 -#define n_FS7 2960 -#define n_G7 3136 -#define n_GS7 3322 -#define n_A7 3520 -#define n_AS7 3729 -#define n_B7 3951 -#define n_C8 4186 -#define n_CS8 4435 -#define n_D8 4699 -#define n_DS8 4978 -#define n_E8 5274 -#define n_F8 5587 -#define n_FS8 5920 -#define n_G8 6272 -#define n_GS8 6645 -#define n_A8 7040 -#define n_AS8 7459 -#define n_B8 7902 +enum { +n_P = 0, // silence or pause +n_C0= 16, n_CS0= 17, n_D0= 18, n_DS0= 19, n_E0= 21, n_F0= 22, n_FS0= 23, n_G0= 25, n_GS0= 26, n_A0= 28, n_AS0= 29, n_B0= 31, +n_C1= 33, n_CS1= 35, n_D1= 37, n_DS1= 39, n_E1= 41, n_F1= 44, n_FS1= 46, n_G1= 49, n_GS1= 52, n_A1= 55, n_AS1= 58, n_B1= 62, +n_C2= 65, n_CS2= 69, n_D2= 73, n_DS2= 78, n_E2= 82, n_F2= 87, n_FS2= 93, n_G2= 98, n_GS2= 104, n_A2= 110, n_AS2= 117, n_B2= 123, +n_C3= 131, n_CS3= 139, n_D3= 147, n_DS3= 156, n_E3= 165, n_F3= 175, n_FS3= 185, n_G3= 196, n_GS3= 208, n_A3= 220, n_AS3= 233, n_B3= 247, +n_C4= 262, n_CS4= 277, n_D4= 294, n_DS4= 311, n_E4= 330, n_F4= 349, n_FS4= 370, n_G4= 392, n_GS4= 415, n_A4= 440, n_AS4= 466, n_B4= 494, +n_C5= 523, n_CS5= 554, n_D5= 587, n_DS5= 622, n_E5= 659, n_F5= 698, n_FS5= 740, n_G5= 784, n_GS5= 831, n_A5= 880, n_AS5= 932, n_B5= 988, +n_C6=1047, n_CS6=1109, n_D6=1175, n_DS6=1245, n_E6=1319, n_F6=1397, n_FS6=1480, n_G6=1568, n_GS6=1661, n_A6=1760, n_AS6=1865, n_B6=1976, +n_C7=2093, n_CS7=2217, n_D7=2349, n_DS7=2489, n_E7=2637, n_F7=2794, n_FS7=2960, n_G7=3136, n_GS7=3322, n_A7=3520, n_AS7=3729, n_B7=3951, +n_C8=4186, n_CS8=4435, n_D8=4699, n_DS8=4978, n_E8=5274, n_F8=5587, n_FS8=5920, n_G8=6272, n_GS8=6645, n_A8=7040, n_AS8=7459, n_B8=7902, +n_END=10000 // end of tune marker +}; namespace Anycubic { @@ -194,8 +90,7 @@ namespace Anycubic { const uint16_t Anycubic_PowerOn[] = { 1000, n_F7,l_T8, n_P,l_T8, n_C7,l_T8, n_P,l_T8, n_D7,l_T8, n_P,l_T8, - n_E7,l_T8, n_P,l_T8, n_D7,l_T4, n_P,l_T4, n_G7,l_T4, n_P,l_T4, - n_A7,l_T2, n_P,l_T1, + n_E7,l_T8, n_P,l_T8, n_D7,l_T4, n_P,l_T4, n_END }; diff --git a/Marlin/src/lcd/extui/anycubic/common_defs.h b/Marlin/src/lcd/extui/anycubic/common_defs.h new file mode 100644 index 0000000000..4257f1dabf --- /dev/null +++ b/Marlin/src/lcd/extui/anycubic/common_defs.h @@ -0,0 +1,138 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * lcd/extui/anycubic/common_defs.h + */ + +#include "../../../inc/MarlinConfigPre.h" + +#define ACDEBUGLEVEL 0 // 0: off, 255: all levels enabled + +#if ACDEBUGLEVEL + // Bit-masks for selective debug: + enum ACDebugMask : uint8_t { + AC_INFO = 1, + AC_ACTION = 2, + AC_FILE = 4, + AC_PANEL = 8, + AC_MARLIN = 16, + AC_SOME = 32, + AC_ALL = 64 + }; + #define ACDEBUG(mask) ( ((mask) & ACDEBUGLEVEL) == mask ) // Debug flag macro +#else + #define ACDEBUG(mask) false +#endif + +#define TFTSer LCD_SERIAL // Serial interface for TFT panel now uses marlinserial +#define MAX_FOLDER_DEPTH 4 // Limit folder depth TFT has a limit for the file path +#define MAX_CMND_LEN 16 * MAX_FOLDER_DEPTH // Maximum Length for a Panel command +#define MAX_PATH_LEN 16 * MAX_FOLDER_DEPTH // Maximum number of characters in a SD file path + +#define AC_HEATER_FAULT_VALIDATION_TIME 5 // number of 1/2 second loops before signalling a heater fault +#define AC_LOWEST_MESHPOINT_VAL Z_PROBE_LOW_POINT // The lowest value you can set for a single mesh point offset + +// TFT panel commands +#define AC_msg_sd_card_inserted F("J00") +#define AC_msg_sd_card_removed F("J01") +#define AC_msg_no_sd_card F("J02") +#define AC_msg_usb_connected F("J03") +#define AC_msg_print_from_sd_card F("J04") +#define AC_msg_pause F("J05") +#define AC_msg_nozzle_heating F("J06") +#define AC_msg_nozzle_heating_done F("J07") +#define AC_msg_bed_heating F("J08") +#define AC_msg_bed_heating_done F("J09") +#define AC_msg_nozzle_temp_abnormal F("J10") +#define AC_msg_kill_lcd F("J11") +#define AC_msg_ready F("J12") +#define AC_msg_low_nozzle_temp F("J13") +#define AC_msg_print_complete F("J14") +#define AC_msg_filament_out_alert F("J15") +#define AC_msg_stop F("J16") +#define AC_msg_main_board_has_reset F("J17") +#define AC_msg_paused F("J18") +#define AC_msg_j19_unknown F("J19") +#define AC_msg_sd_file_open_success F("J20") +#define AC_msg_sd_file_open_failed F("J21") +#define AC_msg_level_monitor_finished F("J22") +#define AC_msg_filament_out_block F("J23") +#define AC_msg_probing_not_allowed F("J24") +#define AC_msg_probing_complete F("J25") +#define AC_msg_start_probing F("J26") +#define AC_msg_version F("J27") + +// TFT panel messages +#define MARLIN_msg_start_probing PSTR("Probing Point 1/25") +#define MARLIN_msg_probing_failed PSTR("Probing Failed") +#define MARLIN_msg_ready PSTR(" Ready.") +#define MARLIN_msg_print_paused PSTR("Print Paused") +#define MARLIN_msg_print_aborted PSTR("Print Aborted") +#define MARLIN_msg_extruder_heating PSTR("E Heating...") +#define MARLIN_msg_bed_heating PSTR("Bed Heating...") + +#define MARLIN_msg_nozzle_parked PSTR("Nozzle Parked") +#define MARLIN_msg_heater_timeout PSTR("Heater Timeout") +#define MARLIN_msg_reheating PSTR("Reheating...") +#define MARLIN_msg_reheat_done PSTR("Reheat finished.") +#define MARLIN_msg_filament_purging PSTR("Filament Purging...") + +#define MARLIN_msg_special_pause PSTR("PB") // AnyCubic + +#define AC_cmnd_auto_unload_filament F("M701") // Marlin unload routine +#define AC_cmnd_auto_load_filament F("M702 M0 PB") // AnyCubic: Marlin load routine, pause for user to clean nozzle + +#define AC_cmnd_manual_load_filament F("M83\nG1 E50 F700\nM82") // replace the manual panel commands with something a little faster +#define AC_cmnd_manual_unload_filament F("M83\nG1 E-50 F1200\nM82") +#define AC_cmnd_enable_leveling F("M420SV") +#define AC_cmnd_power_loss_recovery F("G28XYR5\nG28Z") // Lift, home X and Y then home Z when in 'safe' position + +namespace Anycubic { + + enum heater_state_t : uint8_t { + AC_heater_off, + AC_heater_temp_set, + AC_heater_temp_reached + }; + + enum timer_event_t : uint8_t { + AC_timer_started, + AC_timer_paused, + AC_timer_stopped + }; + + enum media_event_t : uint8_t { + AC_media_inserted, + AC_media_removed, + AC_media_error + }; + + enum file_menu_t : uint8_t { + AC_menu_file, + AC_menu_command, + AC_menu_change_to_file, + AC_menu_change_to_command + }; + +} // Anycubic diff --git a/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp b/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp index 90e3321252..6e77b2b2fd 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp +++ b/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp @@ -63,7 +63,7 @@ FileNavigator filenavigator; FileList FileNavigator::filelist; // Instance of the Marlin file API uint16_t FileNavigator::lastpanelindex; uint16_t FileNavigator::currentindex; // override the panel request -uint8_t FileNavigator::currentfolderdepth; +uint8_t FileNavigator::folderdepth; uint16_t FileNavigator::currentfolderindex[MAX_FOLDER_DEPTH]; // track folder pos for iteration char FileNavigator::currentfoldername[MAX_PATH_LEN + 1]; // Current folder path @@ -71,7 +71,7 @@ FileNavigator::FileNavigator() { reset(); } void FileNavigator::reset() { currentfoldername[0] = '\0'; - currentfolderdepth = 0; + folderdepth = 0; currentindex = 0; lastpanelindex = 0; ZERO(currentfolderindex); @@ -84,25 +84,25 @@ void FileNavigator::reset() { void FileNavigator::refresh() { filelist.refresh(); } void FileNavigator::changeDIR(const char *folder) { - if (currentfolderdepth >= MAX_FOLDER_DEPTH) return; // limit the folder depth - currentfolderindex[currentfolderdepth] = currentindex; + if (folderdepth >= MAX_FOLDER_DEPTH) return; // limit the folder depth + currentfolderindex[folderdepth] = currentindex; strcat(currentfoldername, folder); strcat(currentfoldername, "/"); filelist.changeDir(folder); - currentfolderdepth++; + folderdepth++; currentindex = 0; } void FileNavigator::upDIR() { if (!filelist.isAtRootDir()) { filelist.upDir(); - currentfolderdepth--; - currentindex = currentfolderindex[currentfolderdepth]; // restore last position in the folder + folderdepth--; + currentindex = currentfolderindex[folderdepth]; // restore last position in the folder filelist.seek(currentindex); // restore file information } // Remove the child folder from the stored path - if (currentfolderdepth == 0) + if (folderdepth == 0) currentfoldername[0] = '\0'; else { char * const pos = strchr(currentfoldername, '/'); @@ -122,7 +122,7 @@ void FileNavigator::skiptofileindex(uint16_t skip) { changeDIR(filelist.shortFilename()); } // valid file if (currentindex == filelist.count()) { - if (currentfolderdepth > 0) { + if (folderdepth > 0) { upDIR(); currentindex++; } @@ -147,7 +147,7 @@ void FileNavigator::skiptofileindex(uint16_t skip) { } lastpanelindex = index; - if (currentindex == 0 && currentfolderdepth > 0) { // Add a link to go up a folder + if (currentindex == 0 && folderdepth > 0) { // Add a link to go up a folder // The new panel ignores entries that don't end in .GCO or .gcode so add and pad them. if (paneltype <= AC_panel_new) { TFTSer.println("<<.GCO"); @@ -186,7 +186,7 @@ void FileNavigator::skiptofileindex(uint16_t skip) { } else { // Not DIR TFTSer.write('/'); - if (currentfolderdepth > 0) TFTSer.print(currentfoldername); + if (folderdepth > 0) TFTSer.print(currentfoldername); TFTSer.println(filelist.shortFilename()); TFTSer.print(filelist.longFilename()); @@ -221,7 +221,7 @@ void FileNavigator::skiptofileindex(uint16_t skip) { } // valid file if (currentindex == filelist.count()) { - if (currentfolderdepth > 0) { + if (folderdepth > 0) { upDIR(); currentindex++; } @@ -233,9 +233,9 @@ void FileNavigator::skiptofileindex(uint16_t skip) { void FileNavigator::sendFile(panel_type_t paneltype) { TFTSer.write('/'); - if (currentfolderdepth > 0) TFTSer.print(currentfoldername); + if (folderdepth > 0) TFTSer.print(currentfoldername); TFTSer.println(filelist.shortFilename()); - if (currentfolderdepth > 0) TFTSer.print(currentfoldername); + if (folderdepth > 0) TFTSer.print(currentfoldername); TFTSer.println(filelist.longFilename()); } diff --git a/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.h b/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.h index ca4283f54b..71236c4df9 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.h +++ b/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.h @@ -36,26 +36,26 @@ using namespace ExtUI; namespace Anycubic { -class FileNavigator { - public: - FileNavigator(); - static void reset(); - static void getFiles(uint16_t, panel_type_t, uint8_t filesneeded=4); - static void upDIR(); - static void changeDIR(const char *); - static void sendFile(panel_type_t); - static void refresh(); - static void skiptofileindex(uint16_t); + class FileNavigator { + public: + static FileList filelist; - static FileList filelist; - private: - static uint16_t lastpanelindex; - static uint16_t currentindex; - static uint8_t currentfolderdepth; - static uint16_t currentfolderindex[MAX_FOLDER_DEPTH]; - static char currentfoldername[MAX_PATH_LEN + 1]; -}; + FileNavigator(); + static void reset(); + static void getFiles(uint16_t, panel_type_t, uint8_t filesneeded=4); + static void upDIR(); + static void changeDIR(const char *); + static void sendFile(panel_type_t); + static void refresh(); + static void skiptofileindex(uint16_t); + private: + static uint16_t lastpanelindex; + static uint16_t currentindex; + static uint8_t folderdepth; + static uint16_t currentfolderindex[MAX_FOLDER_DEPTH]; + static char currentfoldername[MAX_PATH_LEN + 1]; + }; -extern FileNavigator filenavigator; + extern FileNavigator filenavigator; } diff --git a/Marlin/src/lcd/extui/anycubic_chiron/Tunes.cpp b/Marlin/src/lcd/extui/anycubic_chiron/Tunes.cpp deleted file mode 100644 index adbf98e3bb..0000000000 --- a/Marlin/src/lcd/extui/anycubic_chiron/Tunes.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * lcd/extui/anycubic_chiron/Tunes.cpp - * - * Extensible_UI implementation for Anycubic Chiron - * Written By Nick Wells, 2020 [https://github.com/SwiftNick] - * (not affiliated with Anycubic, Ltd.) - */ - -/*********************************************************************** - * A Utility to play tunes using the buzzer in the printer controller. * - * See Tunes.h for note and tune definitions. * - ***********************************************************************/ - -#include "../../../inc/MarlinConfigPre.h" - -// TODO: Use Marlin's built-in tone player instead. - -#if ENABLED(ANYCUBIC_LCD_CHIRON) - -#include "Tunes.h" -#include "../ui_api.h" - -namespace Anycubic { - - void PlayTune(uint8_t beeperPin, const uint16_t *tune, uint8_t speed=1) { - uint8_t pos = 1; - const uint16_t wholenotelen = tune[0] / speed; - do { - const uint16_t freq = tune[pos], notelen = wholenotelen / tune[pos + 1]; - ::tone(beeperPin, freq, notelen); - ExtUI::delay_ms(notelen); - pos += 2; - if (pos >= MAX_TUNE_LENGTH) break; - } while (tune[pos] != n_END); - } - -} - -#endif // ANYCUBIC_LCD_CHIRON diff --git a/Marlin/src/lcd/extui/anycubic_chiron/Tunes.h b/Marlin/src/lcd/extui/anycubic_chiron/Tunes.h deleted file mode 100644 index bf2e92d03e..0000000000 --- a/Marlin/src/lcd/extui/anycubic_chiron/Tunes.h +++ /dev/null @@ -1,224 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -#pragma once - -/** - * lcd/extui/anycubic_chiron/Tunes.h - * - * Extensible_UI implementation for Anycubic Chiron - * Written By Nick Wells, 2020 [https://github.com/SwiftNick] - * (not affiliated with Anycubic, Ltd.) - */ - -/************************************************************************** - * Notes definition from https://pages.mtu.edu/~suits/NoteFreqCalcs.html * - * * - * The format of a tune is: * - * {,,, ,, ... } * - * * - * 1) The first value is the length of a whole note in milliseconds * - * 2) Then a sequence of pitch and duration pairs * - * 3) Finally the END marker so your tunes can be any length up to * - * MAX_TUNE_LEN * - *************************************************************************/ - -#include - -#define MAX_TUNE_LENGTH 128 - -// Special notes! -#define n_P 0 // silence or pause -#define n_END 10000 // end of tune marker - -// Note duration divisors -#define l_T1 1 -#define l_T2 2 -#define l_T3 3 -#define l_T4 4 -#define l_T8 8 -#define l_T16 16 - -// Note Frequency -#define n_C0 16 -#define n_CS0 17 -#define n_D0 18 -#define n_DS0 19 -#define n_E0 21 -#define n_F0 22 -#define n_FS0 23 -#define n_G0 25 -#define n_GS0 26 -#define n_A0 28 -#define n_AS0 29 -#define n_B0 31 -#define n_C1 33 -#define n_CS1 35 -#define n_D1 37 -#define n_DS1 39 -#define n_E1 41 -#define n_F1 44 -#define n_FS1 46 -#define n_G1 49 -#define n_GS1 52 -#define n_A1 55 -#define n_AS1 58 -#define n_B1 62 -#define n_C2 65 -#define n_CS2 69 -#define n_D2 73 -#define n_DS2 78 -#define n_E2 82 -#define n_F2 87 -#define n_FS2 93 -#define n_G2 98 -#define n_GS2 104 -#define n_A2 110 -#define n_AS2 117 -#define n_B2 123 -#define n_C3 131 -#define n_CS3 139 -#define n_D3 147 -#define n_DS3 156 -#define n_E3 165 -#define n_F3 175 -#define n_FS3 185 -#define n_G3 196 -#define n_GS3 208 -#define n_A3 220 -#define n_AS3 233 -#define n_B3 247 -#define n_C4 262 -#define n_CS4 277 -#define n_D4 294 -#define n_DS4 311 -#define n_E4 330 -#define n_F4 349 -#define n_FS4 370 -#define n_G4 392 -#define n_GS4 415 -#define n_A4 440 -#define n_AS4 466 -#define n_B4 494 -#define n_C5 523 -#define n_CS5 554 -#define n_D5 587 -#define n_DS5 622 -#define n_E5 659 -#define n_F5 698 -#define n_FS5 740 -#define n_G5 784 -#define n_GS5 831 -#define n_A5 880 -#define n_AS5 932 -#define n_B5 988 -#define n_C6 1047 -#define n_CS6 1109 -#define n_D6 1175 -#define n_DS6 1245 -#define n_E6 1319 -#define n_F6 1397 -#define n_FS6 1480 -#define n_G6 1568 -#define n_GS6 1661 -#define n_A6 1760 -#define n_AS6 1865 -#define n_B6 1976 -#define n_C7 2093 -#define n_CS7 2217 -#define n_D7 2349 -#define n_DS7 2489 -#define n_E7 2637 -#define n_F7 2794 -#define n_FS7 2960 -#define n_G7 3136 -#define n_GS7 3322 -#define n_A7 3520 -#define n_AS7 3729 -#define n_B7 3951 -#define n_C8 4186 -#define n_CS8 4435 -#define n_D8 4699 -#define n_DS8 4978 -#define n_E8 5274 -#define n_F8 5587 -#define n_FS8 5920 -#define n_G8 6272 -#define n_GS8 6645 -#define n_A8 7040 -#define n_AS8 7459 -#define n_B8 7902 - -namespace Anycubic { - - void PlayTune(uint8_t beeperPin, const uint16_t *tune, uint8_t speed); - - // Only uncomment the tunes you are using to save memory - // This will help you write tunes! - // https://www.apronus.com/music/flashpiano.htm - - const uint16_t SOS[] = { - 250, - n_G6,l_T3, n_P,l_T3, n_G6,l_T3, n_P,l_T3, n_G6,l_T3, n_P,l_T1, - n_G6,l_T1, n_P,l_T3, n_G6,l_T1, n_P,l_T3, n_G6,l_T1, n_P,l_T1, - n_G6,l_T3, n_P,l_T3, n_G6,l_T3, n_P,l_T3, n_G6,l_T3, n_P,l_T1, - n_END - }; - - const uint16_t BeepBeep[] = { - 500, - n_C7,l_T8, n_P,l_T16, n_C7,l_T8, n_P,l_T8, - n_END - }; - - const uint16_t BeepBeepBeeep[] = { - 1000, - n_G7,l_T4, n_P,l_T16, n_G7,l_T4, n_P,l_T8, n_G7,l_T2, - n_END - }; - - const uint16_t Anycubic_PowerOn[] = { - 1000, - n_F7,l_T8, n_P,l_T8, n_C7,l_T8, n_P,l_T8, n_D7,l_T8, n_P,l_T8, - n_E7,l_T8, n_P,l_T8, n_D7,l_T4, n_P,l_T4, n_G7,l_T4, n_P,l_T4, - n_A7,l_T2, n_P,l_T1, - n_END - }; - - const uint16_t GB_PowerOn[] = { - 500, - n_C6,l_T4, n_P,l_T16, n_C7,l_T2, n_P,l_T8, - n_END - }; - - const uint16_t Heater_Timedout[] = { - 1000, - n_C6,l_T1, - n_END - }; - - const uint16_t FilamentOut[] = { - 1000, - n_AS7,l_T4, n_P,l_T16, n_FS7,l_T2, - n_END - }; - -} diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp index dce503776b..45fb73c02f 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp @@ -33,7 +33,7 @@ #if ENABLED(ANYCUBIC_LCD_CHIRON) #include "chiron_tft.h" -#include "Tunes.h" +#include "../anycubic/Tunes.h" #include "FileNavigator.h" #include "../../../gcode/queue.h" @@ -104,7 +104,7 @@ void ChironTFT::Startup() { injectCommands(AC_cmnd_enable_leveling); // Startup tunes are defined in Tunes.h - PlayTune(BEEPER_PIN, TERN(AC_DEFAULT_STARTUP_TUNE, Anycubic_PowerOn, GB_PowerOn), 1); + PlayTune(TERN(AC_DEFAULT_STARTUP_TUNE, Anycubic_PowerOn, GB_PowerOn), 1); #if ACDEBUGLEVEL SERIAL_ECHOLNPGM("AC Debug Level ", ACDEBUGLEVEL); @@ -192,7 +192,7 @@ void ChironTFT::FilamentRunout() { // 1 Signal filament out last_error = AC_error_filament_runout; SendtoTFTLN(isPrintingFromMedia() ? AC_msg_filament_out_alert : AC_msg_filament_out_block); - PlayTune(BEEPER_PIN, FilamentOut, 1); + PlayTune(FilamentOut, 1); } void ChironTFT::ConfirmationRequest(const char * const msg) { @@ -253,7 +253,7 @@ void ChironTFT::StatusChange(const char * const msg) { } // If probing fails don't save the mesh raise the probe above the bad point if (strcmp_P(msg, MARLIN_msg_probing_failed) == 0) { - PlayTune(BEEPER_PIN, BeepBeepBeeep, 1); + PlayTune(BeepBeepBeeep, 1); injectCommands(F("G1 Z50 F500")); SendtoTFTLN(AC_msg_probing_complete); printer_state = AC_printer_idle; @@ -307,7 +307,7 @@ void ChironTFT::StatusChange(const char * const msg) { void ChironTFT::PowerLossRecovery() { printer_state = AC_printer_resuming_from_power_outage; // Play tune to notify user we can recover. last_error = AC_error_powerloss; - PlayTune(BEEPER_PIN, SOS, 1); + PlayTune(SOS, 1); SERIAL_ECHOLNF(AC_msg_powerloss_recovery); } diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft_defs.h b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft_defs.h index e3609b5408..6cad95e68d 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft_defs.h +++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft_defs.h @@ -29,116 +29,39 @@ * (not affiliated with Anycubic, Ltd.) */ -#include "../../../inc/MarlinConfigPre.h" -//#define ACDEBUGLEVEL 4 +#include "../anycubic/common_defs.h" -#if ACDEBUGLEVEL - // Bit-masks for selective debug: - enum ACDebugMask : uint8_t { - AC_INFO = 1, - AC_ACTION = 2, - AC_FILE = 4, - AC_PANEL = 8, - AC_MARLIN = 16, - AC_SOME = 32, - AC_ALL = 64 - }; - #define ACDEBUG(mask) ( ((mask) & ACDEBUGLEVEL) == mask ) // Debug flag macro -#else - #define ACDEBUG(mask) false -#endif +// TFT panel messages +#define AC_msg_mesh_changes_abandoned F("Mesh changes abandoned, previous mesh restored.") +#define AC_msg_mesh_changes_saved F("Mesh changes saved.") +#define AC_msg_old_panel_detected F("Standard TFT panel detected!") +#define AC_msg_new_panel_detected F("New TFT panel detected!") +#define AC_msg_auto_panel_detection F("Auto detect panel type (assuming new panel)") +#define AC_msg_old_panel_set F("Set for standard TFT panel.") +#define AC_msg_new_panel_set F("Set for new TFT panel.") -#define TFTSer LCD_SERIAL // Serial interface for TFT panel now uses marlinserial -#define MAX_FOLDER_DEPTH 4 // Limit folder depth TFT has a limit for the file path -#define MAX_CMND_LEN 16 * MAX_FOLDER_DEPTH // Maximum Length for a Panel command -#define MAX_PATH_LEN 16 * MAX_FOLDER_DEPTH // Maximum number of characters in a SD file path - -#define AC_HEATER_FAULT_VALIDATION_TIME 5 // number of 1/2 second loops before signalling a heater fault -#define AC_LOWEST_MESHPOINT_VAL -10 // The lowest value you can set for a single mesh point offset - - // TFT panel commands -#define AC_msg_sd_card_inserted F("J00") -#define AC_msg_sd_card_removed F("J01") -#define AC_msg_no_sd_card F("J02") -#define AC_msg_usb_connected F("J03") -#define AC_msg_print_from_sd_card F("J04") -#define AC_msg_pause F("J05") -#define AC_msg_nozzle_heating F("J06") -#define AC_msg_nozzle_heating_done F("J07") -#define AC_msg_bed_heating F("J08") -#define AC_msg_bed_heating_done F("J09") -#define AC_msg_nozzle_temp_abnormal F("J10") -#define AC_msg_kill_lcd F("J11") -#define AC_msg_ready F("J12") -#define AC_msg_low_nozzle_temp F("J13") -#define AC_msg_print_complete F("J14") -#define AC_msg_filament_out_alert F("J15") -#define AC_msg_stop F("J16") -#define AC_msg_main_board_has_reset F("J17") -#define AC_msg_paused F("J18") -#define AC_msg_j19_unknown F("J19") -#define AC_msg_sd_file_open_success F("J20") -#define AC_msg_sd_file_open_failed F("J21") -#define AC_msg_level_monitor_finished F("J22") -#define AC_msg_filament_out_block F("J23") -#define AC_msg_probing_not_allowed F("J24") -#define AC_msg_probing_complete F("J25") -#define AC_msg_start_probing F("J26") -#define AC_msg_version F("J27") -#define AC_msg_mesh_changes_abandoned F("Mesh changes abandoned, previous mesh restored.") -#define AC_msg_mesh_changes_saved F("Mesh changes saved.") -#define AC_msg_old_panel_detected F("Standard TFT panel detected!") -#define AC_msg_new_panel_detected F("New TFT panel detected!") -#define AC_msg_auto_panel_detection F("Auto detect panel type (assuming new panel)") -#define AC_msg_old_panel_set F("Set for standard TFT panel.") -#define AC_msg_new_panel_set F("Set for new TFT panel.") - -#define AC_msg_powerloss_recovery F("Resuming from power outage! select the same SD file then press resume") +#define AC_msg_powerloss_recovery F("Resuming from power outage! select the same SD file then press resume") // Error messages must not contain spaces -#define AC_msg_error_bed_temp F("Abnormal_bed_temp") -#define AC_msg_error_hotend_temp F("Abnormal_hotend_temp") -#define AC_msg_error_sd_card F("SD_card_error") -#define AC_msg_filament_out F("Filament_runout") -#define AC_msg_power_loss F("Power_failure") -#define AC_msg_eeprom_version F("EEPROM_ver_wrong") +#define AC_msg_error_bed_temp F("Abnormal_bed_temp") +#define AC_msg_error_hotend_temp F("Abnormal_hotend_temp") +#define AC_msg_error_sd_card F("SD_card_error") +#define AC_msg_filament_out F("Filament_runout") +#define AC_msg_power_loss F("Power_failure") +#define AC_msg_eeprom_version F("EEPROM_ver_wrong") -#define MARLIN_msg_start_probing PSTR("Probing Point 1/25") -#define MARLIN_msg_probing_failed PSTR("Probing Failed") -#define MARLIN_msg_ready PSTR(" Ready.") -#define MARLIN_msg_print_paused PSTR("Print Paused") -#define MARLIN_msg_print_aborted PSTR("Print Aborted") -#define MARLIN_msg_extruder_heating PSTR("E Heating...") -#define MARLIN_msg_bed_heating PSTR("Bed Heating...") -#define MARLIN_msg_EEPROM_version PSTR("EEPROM Version Error") -#define MARLIN_msg_nozzle_parked PSTR("Nozzle Parked") -#define MARLIN_msg_heater_timeout PSTR("Heater Timeout") -#define MARLIN_msg_reheating PSTR("Reheating...") -#define MARLIN_msg_reheat_done PSTR("Reheat finished.") -#define MARLIN_msg_filament_purging PSTR("Filament Purging...") -#define MARLIN_msg_special_pause PSTR("PB") +#define MARLIN_msg_EEPROM_version PSTR("EEPROM Version Error") -#define AC_cmnd_auto_unload_filament F("M701") // Use Marlin unload routine -#define AC_cmnd_auto_load_filament F("M702 M0 PB") // Use Marlin load routing then pause for user to clean nozzle - -#define AC_cmnd_manual_load_filament F("M83\nG1 E50 F700\nM82") // replace the manual panel commands with something a little faster -#define AC_cmnd_manual_unload_filament F("M83\nG1 E-50 F1200\nM82") -#define AC_cmnd_enable_leveling F("M420SV") -#define AC_cmnd_power_loss_recovery F("G28XYR5\nG28Z") // Lift, home X and Y then home Z when in 'safe' position - -#define AC_Test_for_OldPanel F("SIZE") // An old panel will respond with 'SXY 480 320' a new panel wont respond. -#define AC_Test_for_NewPanel F("J200") // A new panel will respond with '[0]=0 [1]=0' to '[19]=0 ' an old panel wont respond +#define AC_Test_for_OldPanel F("SIZE") // An old panel will respond with 'SXY 480 320' a new panel wont respond. +#define AC_Test_for_NewPanel F("J200") // A new panel will respond with '[0]=0 [1]=0' to '[19]=0 ' an old panel wont respond namespace Anycubic { - enum heater_state_t : uint8_t { - AC_heater_off, - AC_heater_temp_set, - AC_heater_temp_reached - }; + enum paused_state_t : uint8_t { AC_paused_heater_timed_out, AC_paused_purging_filament, AC_paused_idle }; + enum printer_state_t : uint8_t { AC_printer_booting, AC_printer_idle, @@ -149,27 +72,13 @@ namespace Anycubic { AC_printer_stopping, AC_printer_resuming_from_power_outage }; - enum timer_event_t : uint8_t { - AC_timer_started, - AC_timer_paused, - AC_timer_stopped - }; - enum media_event_t : uint8_t { - AC_media_inserted, - AC_media_removed, - AC_media_error - }; - enum file_menu_t : uint8_t { - AC_menu_file, - AC_menu_command, - AC_menu_change_to_file, - AC_menu_change_to_command - }; + enum panel_type_t : uint8_t { // order is important here as we assume new panel if type is unknown AC_panel_unknown, AC_panel_new, AC_panel_standard }; + enum last_error_t : uint8_t { AC_error_none, AC_error_abnormal_temp_t0, @@ -179,4 +88,5 @@ namespace Anycubic { AC_error_filament_runout, AC_error_EEPROM }; -} // Anycubic namespace + +} // Anycubic diff --git a/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h index c39e66b63e..dd4b0b0f74 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h +++ b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h @@ -31,27 +31,26 @@ using namespace ExtUI; namespace Anycubic { + class FileNavigator { public: + static FileList filelist; + FileNavigator(); - - static FileList filelist; - - void reset(); - void getFiles(uint16_t); - void upDIR(); - void changeDIR(char *); - void sendFile(); - void refresh(); - char * getCurrentFolderName(); - uint16_t getFileNum(); - + static void reset(); + static void getFiles(uint16_t); + static void upDIR(); + static void changeDIR(char *); + static void sendFile(); + static void refresh(); + static char* getCurrentFolderName(); + static uint16_t getFileNum(); private: - - static char currentfoldername[MAX_PATH_LEN]; - static uint16_t lastindex; - static uint8_t folderdepth; - static uint16_t currentindex; + static uint16_t lastindex; + static uint16_t currentindex; + static uint8_t folderdepth; + static char currentfoldername[MAX_PATH_LEN + 1]; }; + extern FileNavigator filenavigator; } diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp index 81af2e6e20..e2bc343d67 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp @@ -29,7 +29,7 @@ #if ENABLED(ANYCUBIC_LCD_VYPER) #include "dgus_tft.h" -#include "Tunes.h" +#include "../anycubic/Tunes.h" #include "FileNavigator.h" #include "../../../gcode/queue.h" @@ -154,9 +154,6 @@ namespace Anycubic { // as Z home places nozzle above the bed so we need to allow it past the end stops injectCommands(AC_cmnd_enable_leveling); - // Startup tunes are defined in Tunes.h - //PlayTune(BEEPER_PIN, Anycubic_PowerOn, 1); - //PlayTune(BEEPER_PIN, GB_PowerOn, 1); #if ACDEBUGLEVEL DEBUG_ECHOLNPGM("Startup AC Debug Level ", ACDEBUGLEVEL); #endif @@ -466,7 +463,7 @@ namespace Anycubic { pop_up_index = 15; // show filament lack. if (READ(FIL_RUNOUT_PIN) == FIL_RUNOUT_STATE) { - PlayTune(BEEPER_PIN, FilamentOut, 1); + PlayTune(FilamentOut, 1); feedrate_back = getFeedrate_percent(); @@ -508,7 +505,7 @@ namespace Anycubic { if (strcmp_P(msg, MARLIN_msg_heater_timeout) == 0) { pause_state = AC_paused_heater_timed_out; SendtoTFTLN(AC_msg_paused); // enable continue button - PlayTune(BEEPER_PIN, Heater_Timedout, 1); + PlayTune(Heater_Timedout, 1); } // Reheat finished, send acknowledgement else if (strcmp_P(msg, MARLIN_msg_reheat_done) == 0) { @@ -579,7 +576,7 @@ namespace Anycubic { // If probing fails don't save the mesh raise the probe above the bad point if (strcmp_P(msg, MARLIN_msg_probing_failed) == 0) { - PlayTune(BEEPER_PIN, BeepBeepBeeep, 1); + PlayTune(BeepBeepBeeep, 1); injectCommands(F("G1 Z50 F500")); ChangePageOfTFT(PAGE_CHS_ABNORMAL_LEVELING_SENSOR); SendtoTFTLN(AC_msg_probing_complete); @@ -1073,7 +1070,7 @@ namespace Anycubic { #else SendTxtToTFT(recovery.info.sd_filename, TXT_OUTAGE_RECOVERY_FILE); #endif - PlayTune(BEEPER_PIN, SOS, 1); + PlayTune(SOS, 1); } #else constexpr bool is_outage = false; @@ -1083,12 +1080,13 @@ namespace Anycubic { } else if (control_value == 0x010000) { // startup first gif - PlayTune(BEEPER_PIN, Anycubic_PowerOn, 1); // takes 3500 ms + // Startup tunes are defined in Tunes.h + PlayTune(Anycubic_PowerOn, 1); // takes 3500 ms } } /* - else if ((control_index & 0xF000) == 0x2000) { // is TXT ADDRESS + else if ((control_index & 0xF000) == 0x2000) { // is TXT ADDRESS tft_txt_index = control_index; j = 0; for (i = 4; ;i++) { diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h index 72e812b965..1133d670cd 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h @@ -19,106 +19,24 @@ * along with this program. If not, see . * */ +#pragma once /** * lcd/extui/anycubic_vyper/dgus_defs.h */ -#pragma once -#include "../../../inc/MarlinConfigPre.h" +#include "../anycubic/common_defs.h" -#define ACDEBUGLEVEL 0 // 0: off, 255: all levels enabled +// TFT panel commands +#define AC_msg_bed_temp_abnormal F("J28") -#if ACDEBUGLEVEL - // Bit-masks for selective debug: - enum ACDebugMask : uint8_t { - AC_INFO = 1, - AC_ACTION = 2, - AC_FILE = 4, - AC_PANEL = 8, - AC_MARLIN = 16, - AC_SOME = 32, - AC_ALL = 64 - }; - #define ACDEBUG(mask) ( ((mask) & ACDEBUGLEVEL) == mask ) // Debug flag macro -#else - #define ACDEBUG(mask) false -#endif - -#define TFTSer LCD_SERIAL // Serial interface for TFT panel now uses marlinserial -#define MAX_FOLDER_DEPTH 4 // Limit folder depth TFT has a limit for the file path -#define MAX_CMND_LEN 16 * MAX_FOLDER_DEPTH // Maximum Length for a Panel command -#define MAX_PATH_LEN 16 * MAX_FOLDER_DEPTH // Maximum number of characters in a SD file path - -#define AC_HEATER_FAULT_VALIDATION_TIME 5 // number of 1/2 second loops before signalling a heater fault -#define AC_LOWEST_MESHPOINT_VAL Z_PROBE_LOW_POINT // The lowest value you can set for a single mesh point offset - - // TFT panel commands -#define AC_msg_sd_card_inserted F("J00") -#define AC_msg_sd_card_removed F("J01") -#define AC_msg_no_sd_card F("J02") -#define AC_msg_usb_connected F("J03") -#define AC_msg_print_from_sd_card F("J04") -#define AC_msg_pause F("J05") -#define AC_msg_nozzle_heating F("J06") -#define AC_msg_nozzle_heating_done F("J07") -#define AC_msg_bed_heating F("J08") -#define AC_msg_bed_heating_done F("J09") -#define AC_msg_nozzle_temp_abnormal F("J10") -#define AC_msg_kill_lcd F("J11") -#define AC_msg_ready F("J12") -#define AC_msg_low_nozzle_temp F("J13") -#define AC_msg_print_complete F("J14") -#define AC_msg_filament_out_alert F("J15") -#define AC_msg_stop F("J16") -#define AC_msg_main_board_has_reset F("J17") -#define AC_msg_paused F("J18") -#define AC_msg_j19_unknown F("J19") -#define AC_msg_sd_file_open_success F("J20") -#define AC_msg_sd_file_open_failed F("J21") -#define AC_msg_level_monitor_finished F("J22") -#define AC_msg_filament_out_block F("J23") -#define AC_msg_probing_not_allowed F("J24") -#define AC_msg_probing_complete F("J25") -#define AC_msg_start_probing F("J26") -#define AC_msg_version F("J27") -#define AC_msg_bed_temp_abnormal F("J28") - -#define MARLIN_msg_probing_point PSTR("Probing Point ") -#define MARLIN_msg_start_probing PSTR("Probing Point 1/25") -#define MARLIN_msg_probing_failed PSTR("Probing Failed") -#define MARLIN_msg_ready PSTR(" Ready.") -#define MARLIN_msg_print_paused PSTR("Print Paused") -#define MARLIN_msg_print_aborted PSTR("Print Aborted") -#define MARLIN_msg_extruder_heating PSTR("E Heating...") -#define MARLIN_msg_bed_heating PSTR("Bed Heating...") - -#define MARLIN_msg_probe_preheat_start PSTR("Probe preheat start") -#define MARLIN_msg_probe_preheat_stop PSTR("Probe preheat stop") - - -#define MARLIN_msg_nozzle_parked PSTR("Nozzle Parked") -#define MARLIN_msg_heater_timeout PSTR("Heater Timeout") -#define MARLIN_msg_reheating PSTR("Reheating...") -#define MARLIN_msg_reheat_done PSTR("Reheat finished.") -#define MARLIN_msg_filament_purging PSTR("Filament Purging...") -#define MARLIN_msg_media_removed PSTR("Media Removed") -#define MARLIN_msg_special_pause PSTR("PB") - -#define AC_cmnd_auto_unload_filament F("M701") // Use Marlin unload routine -#define AC_cmnd_auto_load_filament F("M702 M0 PB") // Use Marlin load routing then pause for user to clean nozzle - -#define AC_cmnd_manual_load_filament F("M83\nG1 E50 F700\nM82") // replace the manual panel commands with something a little faster -#define AC_cmnd_manual_unload_filament F("M83\nG1 E-50 F1200\nM82") -#define AC_cmnd_enable_leveling F("M420SV") -#define AC_cmnd_power_loss_recovery F("G28XYR5\nG28Z") // Lift, home X and Y then home Z when in 'safe' position +// TFT panel messages +#define MARLIN_msg_probing_point PSTR("Probing Point ") +#define MARLIN_msg_probe_preheat_start PSTR("Probe preheat start") +#define MARLIN_msg_probe_preheat_stop PSTR("Probe preheat stop") +#define MARLIN_msg_media_removed PSTR("Media Removed") namespace Anycubic { - enum heater_state_t : uint8_t { - AC_heater_off, - AC_heater_temp_set, - AC_heater_temp_reached - }; enum paused_state_t : uint8_t { AC_paused_heater_timed_out, @@ -138,21 +56,4 @@ namespace Anycubic { AC_printer_resuming_from_power_outage }; - enum timer_event_t : uint8_t { - AC_timer_started, - AC_timer_paused, - AC_timer_stopped - }; - - enum media_event_t : uint8_t { - AC_media_inserted, - AC_media_removed, - AC_media_error - }; - enum file_menu_t : uint8_t { - AC_menu_file, - AC_menu_command, - AC_menu_change_to_file, - AC_menu_change_to_command - }; -} +} // Anycubic diff --git a/ini/features.ini b/ini/features.ini index d8ba74f2db..3c5eb1adec 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -80,6 +80,7 @@ HAS_MENU_TMC = src_filter=+ HAS_MENU_TOUCH_SCREEN = src_filter=+ HAS_MENU_TRAMMING_WIZARD = src_filter=+ HAS_MENU_UBL = src_filter=+ +ANYCUBIC_LCD_(CHIRON|VYPER) = src_filter=+ ANYCUBIC_LCD_CHIRON = src_filter=+ ANYCUBIC_LCD_VYPER = src_filter=+ ANYCUBIC_LCD_I3MEGA = src_filter=+ diff --git a/platformio.ini b/platformio.ini index 3478dcc1fb..885fdd87d6 100644 --- a/platformio.ini +++ b/platformio.ini @@ -80,9 +80,7 @@ default_src_filter = + - - + - - - - - - - - - + - - - - - - - - - - - From 2fcc140c0d4353149c24fa8a3845b417738d7620 Mon Sep 17 00:00:00 2001 From: XDA-Bam <1209896+XDA-Bam@users.noreply.github.com> Date: Sun, 16 Apr 2023 05:26:46 +0200 Subject: [PATCH 280/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20'G29=20J'=20status?= =?UTF-8?q?=20message=20(#25677)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index a6206b398e..5bc5e6ec61 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -1499,7 +1499,7 @@ void unified_bed_leveling::smart_fill_mesh() { LOOP_L_N(i, 3) { SERIAL_ECHOLNPGM("Tilting mesh (", i + 1, "/3)"); - TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " %i/3"), i + 1, GET_TEXT(MSG_LCD_TILTING_MESH))); + TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " %i/3"), GET_TEXT(MSG_LCD_TILTING_MESH), i + 1)); measured_z = probe.probe_at_point(points[i], i < 2 ? PROBE_PT_RAISE : PROBE_PT_LAST_STOW, param.V_verbosity); if ((abort_flag = isnan(measured_z))) break; From e49cf0665a112e7de0601e5a86c977435b2142c3 Mon Sep 17 00:00:00 2001 From: Dennis Lawler <4824647+drawlerr@users.noreply.github.com> Date: Sat, 15 Apr 2023 22:50:26 -0600 Subject: [PATCH 281/659] =?UTF-8?q?=F0=9F=9A=B8=20Echo=20G30=20out-of-boun?= =?UTF-8?q?ds=20(#25671)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/probe/G30.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/Marlin/src/gcode/probe/G30.cpp b/Marlin/src/gcode/probe/G30.cpp index a17ec367df..468189bf5a 100644 --- a/Marlin/src/gcode/probe/G30.cpp +++ b/Marlin/src/gcode/probe/G30.cpp @@ -28,6 +28,7 @@ #include "../../module/motion.h" #include "../../module/probe.h" #include "../../feature/bedlevel/bedlevel.h" +#include "../../lcd/marlinui.h" #if HAS_PTC #include "../../feature/probe_temp_comp.h" @@ -37,10 +38,6 @@ #include "../../module/tool_change.h" #endif -#if EITHER(DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI) - #include "../../lcd/marlinui.h" -#endif - /** * G30: Do a single Z probe at the given XY (default: current) * @@ -105,10 +102,8 @@ void GcodeSuite::G30() { report_current_position(); } else { - #if ENABLED(DWIN_LCD_PROUI) - SERIAL_ECHOLNF(GET_EN_TEXT_F(MSG_ZPROBE_OUT)); - LCD_MESSAGE(MSG_ZPROBE_OUT); - #endif + SERIAL_ECHOLNF(GET_EN_TEXT_F(MSG_ZPROBE_OUT)); + LCD_MESSAGE(MSG_ZPROBE_OUT); } probe.use_probing_tool(false); From b6a1a6273fcff835002c5645ebdd157b5f180bab Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Sun, 16 Apr 2023 06:59:23 +0200 Subject: [PATCH 282/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20MPC=20compile=20(#?= =?UTF-8?q?25669)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/menu/menu_advanced.cpp | 2 +- Marlin/src/module/temperature.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/lcd/menu/menu_advanced.cpp b/Marlin/src/lcd/menu/menu_advanced.cpp index 71188a8688..719838f6be 100644 --- a/Marlin/src/lcd/menu/menu_advanced.cpp +++ b/Marlin/src/lcd/menu/menu_advanced.cpp @@ -370,6 +370,7 @@ void menu_backlash(); #if ENABLED(MPC_EDIT_MENU) #define _MPC_EDIT_ITEMS(N) \ + MPC_t &mpc = thermalManager.temp_hotend[MenuItemBase::itemIndex].mpc; \ EDIT_ITEM_FAST_N(float31sign, N, MSG_MPC_POWER_E, &mpc.heater_power, 1, 200); \ EDIT_ITEM_FAST_N(float31sign, N, MSG_MPC_BLOCK_HEAT_CAPACITY_E, &mpc.block_heat_capacity, 0, 40); \ EDIT_ITEM_FAST_N(float43, N, MSG_SENSOR_RESPONSIVENESS_E, &mpc.sensor_responsiveness, 0, 1); \ @@ -377,7 +378,6 @@ void menu_backlash(); #if ENABLED(MPC_INCLUDE_FAN) #define MPC_EDIT_ITEMS(N) \ - MPC_t &mpc = thermalManager.temp_hotend[MenuItemBase::itemIndex].mpc; \ _MPC_EDIT_ITEMS(N); \ EDIT_ITEM_FAST_N(float43, N, MSG_MPC_AMBIENT_XFER_COEFF_FAN_E, &editable.decimal, 0, 1, []{ \ thermalManager.temp_hotend[MenuItemBase::itemIndex].applyFanAdjustment(editable.decimal); \ diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 43bf31e0e7..ce46d3d43d 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -1085,9 +1085,9 @@ volatile bool Temperature::raw_temps_ready = false; block_responsiveness = -log((t2 - asymp_temp) / (t1 - asymp_temp)) / (sample_distance * (sample_count >> 1)); mpc.ambient_xfer_coeff_fan0 = mpc.heater_power * (MPC_MAX) / 255 / (asymp_temp - ambient_temp); - mpc.fan255_adjustment = 0.0f; mpc.block_heat_capacity = mpc.ambient_xfer_coeff_fan0 / block_responsiveness; mpc.sensor_responsiveness = block_responsiveness / (1.0f - (ambient_temp - asymp_temp) * exp(-block_responsiveness * t1_time) / (t1 - asymp_temp)); + TERN_(MPC_INCLUDE_FAN, mpc.fan255_adjustment = 0.0f); hotend.modeled_block_temp = asymp_temp + (ambient_temp - asymp_temp) * exp(-block_responsiveness * (ms - heat_start_time) / 1000.0f); hotend.modeled_sensor_temp = current_temp; From 802fe519a310e94c7658d7c60deffd240770565b Mon Sep 17 00:00:00 2001 From: Bob Kuhn Date: Sun, 16 Apr 2023 18:35:13 -0500 Subject: [PATCH 283/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20laser=20with=20no?= =?UTF-8?q?=20PWM=20compile=20(#25290)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/spindle_laser.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/feature/spindle_laser.h b/Marlin/src/feature/spindle_laser.h index a49e5611a4..9750d4807f 100644 --- a/Marlin/src/feature/spindle_laser.h +++ b/Marlin/src/feature/spindle_laser.h @@ -281,7 +281,7 @@ public: set_enabled(state); if (state) { if (!menuPower) menuPower = cpwr_to_upwr(SPEED_POWER_STARTUP); - power = upower_to_ocr(menuPower); + power = TERN(SPINDLE_LASER_USE_PWM, upower_to_ocr(menuPower), 255); apply_power(power); } else apply_power(0); From 09ddf9c6ef9708baf42c3145332b2921e75f8d73 Mon Sep 17 00:00:00 2001 From: "Alexey D. Filimonov" Date: Mon, 17 Apr 2023 02:38:12 +0300 Subject: [PATCH 284/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20Spindle/Laser=20EN?= =?UTF-8?q?A=20pin=20test=20(#25622)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/spindle_laser.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/feature/spindle_laser.h b/Marlin/src/feature/spindle_laser.h index 9750d4807f..5cbc20866c 100644 --- a/Marlin/src/feature/spindle_laser.h +++ b/Marlin/src/feature/spindle_laser.h @@ -210,7 +210,7 @@ public: enable = false; apply_power(0); } - #if SPINDLE_LASER_ENA_PIN + #if PIN_EXISTS(SPINDLE_LASER_ENA) WRITE(SPINDLE_LASER_ENA_PIN, enable ? SPINDLE_LASER_ACTIVE_STATE : !SPINDLE_LASER_ACTIVE_STATE); #endif enable_state = enable; From ace9855d6fe4fc956c1c3ad584ca07e25216376b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 16 Apr 2023 19:11:56 -0500 Subject: [PATCH 285/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Min?= =?UTF-8?q?or=20SpindleLaser::set=5Fenabled=20tweak?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/spindle_laser.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/Marlin/src/feature/spindle_laser.h b/Marlin/src/feature/spindle_laser.h index 5cbc20866c..8908ae6df5 100644 --- a/Marlin/src/feature/spindle_laser.h +++ b/Marlin/src/feature/spindle_laser.h @@ -201,8 +201,6 @@ public: apply_power(enable ? TERN(SPINDLE_LASER_USE_PWM, (power ?: (unitPower ? upower_to_ocr(cpwr_to_upwr(SPEED_POWER_STARTUP)) : 0)), 255) : 0); break; case CUTTER_MODE_CONTINUOUS: - TERN_(LASER_FEATURE, set_inline_enabled(enable)); - break; case CUTTER_MODE_DYNAMIC: TERN_(LASER_FEATURE, set_inline_enabled(enable)); break; From b39b5bbbc92d3a15c53ec5027d8b2e05b34ea6eb Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 17 Apr 2023 00:20:56 +0000 Subject: [PATCH 286/659] [cron] Bump distribution date (2023-04-17) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index b345bef514..ea6679cba9 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-16" +//#define STRING_DISTRIBUTION_DATE "2023-04-17" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index bf22ae4ded..bdfac93020 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-16" + #define STRING_DISTRIBUTION_DATE "2023-04-17" #endif /** From ff44663f5fe4e9ddc1cb2ddd8c2a6c5994e3d143 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Tue, 18 Apr 2023 07:51:25 +1200 Subject: [PATCH 287/659] =?UTF-8?q?=F0=9F=94=A8=20Fix,=20clean=20up=20STM3?= =?UTF-8?q?2F1=20envs=20(#25697)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- ini/stm32f1.ini | 143 +++++++++++++++++++++--------------------------- 1 file changed, 62 insertions(+), 81 deletions(-) diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini index 783d05fab4..9aaa39ea20 100644 --- a/ini/stm32f1.ini +++ b/ini/stm32f1.ini @@ -134,16 +134,6 @@ monitor_speed = 115200 debug_tool = jlink upload_protocol = jlink -# -# Trigorilla V0.0.6 (GD32F103) -# modified version of env:STM32F103RE_creality -# -[env:trigorilla_v006] -extends = STM32F103Rx_creality -board = genericSTM32F103RE -board_build.offset = 0x8000 -board_upload.offset_address = 0x08008000 - # # Creality (STM32F103Rx) # With custom upload to SD via Marlin with binary protocol. @@ -176,10 +166,19 @@ board = genericSTM32F103RE # Creality 512K (STM32F103RE) for new 64KiB bootloader (CR-10 Smart Pro printer) # [env:STM32F103RE_creality_smartPro] -extends = STM32F103Rx_creality +extends = env:STM32F103RE_creality board_build.offset = 0x10000 board_upload.offset_address = 0x08010000 +# +# Trigorilla V0.0.6 (GD32F103) +# modified version of env:STM32F103RE_creality +# +[env:trigorilla_v006] +extends = env:STM32F103RE_creality +board_build.offset = 0x8000 +board_upload.offset_address = 0x08008000 + # # Creality 256K (STM32F103RC) # @@ -230,54 +229,7 @@ platform_packages = ${stm_flash_drive.platform_packages} build_flags = ${env:STM32F103RE_btt.build_flags} -DUSE_USB_FS -DUSBD_IRQ_PRIO=5 -DUSBD_IRQ_SUBPRIO=6 -DUSBD_USE_CDC_MSC -build_unflags = ${stm32_variant.build_unflags} -DUSBD_USE_CDC - -# -# FLSUN QQS Pro (STM32F103VET6) -# board Hispeedv1 -# -[env:flsun_hispeedv1] -extends = stm32_variant -board = genericSTM32F103VE -board_build.variant = MARLIN_F103Vx -board_build.encrypt_mks = Robin_mini.bin -board_build.offset = 0x7000 -board_upload.offset_address = 0x08007000 -build_flags = ${stm32_variant.build_flags} - -DMCU_STM32F103VE -DSS_TIMER=4 -DENABLE_HWSERIAL3 - -DTIMER_TONE=TIM3 -DTIMER_SERVO=TIM2 -build_unflags = ${stm32_variant.build_unflags} - -DUSBCON -DUSBD_USE_CDC - -[mks_robin_nano_v1v2_common] -extends = stm32_variant -board = genericSTM32F103VE -board_build.variant = MARLIN_F103Vx -board_build.encrypt_mks = Robin_nano35.bin -board_build.offset = 0x7000 -board_upload.offset_address = 0x08007000 -debug_tool = stlink -upload_protocol = stlink - -# -# MKS Robin Nano V1.2 and V2 -# -[env:mks_robin_nano_v1v2] -extends = mks_robin_nano_v1v2_common -build_flags = ${stm32_variant.build_flags} - -DMCU_STM32F103VE -DSS_TIMER=4 -DENABLE_HWSERIAL3 - -DTIMER_TONE=TIM3 -DTIMER_SERVO=TIM2 -build_unflags = ${stm32_variant.build_unflags} - -DUSBCON -DUSBD_USE_CDC - -# -# MKS/ZNP Robin Nano V1.2 and V2 with native USB modification -# -[env:mks_robin_nano_v1v2_usbmod] -extends = mks_robin_nano_v1v2_common -build_flags = ${common_stm32.build_flags} - -DMCU_STM32F103VE -DSS_TIMER=4 - -DTIMER_TONE=TIM3 -DTIMER_SERVO=TIM2 +build_unflags = ${env:STM32F103RE_btt.build_unflags} -DUSBD_USE_CDC # # Mingda MPX_ARM_MINI @@ -315,17 +267,63 @@ board_upload.offset_address = 0x08005000 build_flags = ${stm32_variant.build_flags} -DSS_TIMER=4 # -# MKS Robin Mini (STM32F103VET6) +# (STM32F103VE_robin) # -[env:mks_robin_mini] +[STM32F103VE_robin] extends = stm32_variant board = genericSTM32F103VE board_build.variant = MARLIN_F103Vx -board_build.encrypt_mks = Robin_mini.bin board_build.offset = 0x7000 board_upload.offset_address = 0x08007000 -build_flags = ${stm32_variant.build_flags} - -DMCU_STM32F103VE -DTIMER_TONE=TIM3 -DTIMER_SERVO=TIM2 +build_flags = ${stm32_variant.build_flags} -DMCU_STM32F103VE -DTIMER_TONE=TIM3 -DTIMER_SERVO=TIM2 -DSS_TIMER=4 + +[mks_robin_nano_v1v2_common] +extends = STM32F103VE_robin +board_build.encrypt_mks = Robin_nano35.bin +debug_tool = stlink +upload_protocol = stlink + +# +# MKS/ZNP Robin Nano V1.2 and V2 with native USB modification +# +[env:mks_robin_nano_v1v2_usbmod] +extends = mks_robin_nano_v1v2_common + +# +# MKS Robin Nano V1.2 and V2 +# +[env:mks_robin_nano_v1v2] +extends = mks_robin_nano_v1v2_common +build_flags = ${mks_robin_nano_v1v2_common.build_flags} -DENABLE_HWSERIAL3 +build_unflags = ${mks_robin_nano_v1v2_common.build_unflags} -DUSBCON -DUSBD_USE_CDC + +# +# MKS Robin Mini (STM32F103VET6) +# +[env:mks_robin_mini] +extends = STM32F103VE_robin +board_build.encrypt_mks = Robin_mini.bin +build_unflags = ${STM32F103VE_robin.build_unflags} -DSS_TIMER=4 + +# +# MKS Robin E3p (STM32F103VET6) +# - LVGL UI +# +[env:mks_robin_e3p] +extends = STM32F103VE_robin +board_build.encrypt_mks = Robin_e3p.bin +debug_tool = jlink +upload_protocol = jlink + +# +# FLSUN QQS Pro (STM32F103VET6) +# Hispeedv1 Robin mini variant +# +[env:flsun_hispeedv1] +extends = STM32F103VE_robin +board_build.encrypt_mks = Robin_mini.bin +build_flags = ${STM32F103VE_robin.build_flags} -DENABLE_HWSERIAL3 +build_unflags = ${STM32F103VE_robin.build_unflags} -DUSBCON -DUSBD_USE_CDC # # MKS Robin Lite/Lite2 (STM32F103RCT6) @@ -352,23 +350,6 @@ board_build.encrypt_mks = mksLite3.bin extends = env:mks_robin board_build.encrypt_mks = Robin_pro.bin -# -# MKS Robin E3p (STM32F103VET6) -# - LVGL UI -# -[env:mks_robin_e3p] -extends = stm32_variant -board = genericSTM32F103VE -board_build.variant = MARLIN_F103Vx -board_build.encrypt_mks = Robin_e3p.bin -board_build.offset = 0x7000 -board_upload.offset_address = 0x08007000 -build_flags = ${stm32_variant.build_flags} - -DMCU_STM32F103VE -DSS_TIMER=4 - -DTIMER_TONE=TIM3 -DTIMER_SERVO=TIM2 -debug_tool = jlink -upload_protocol = jlink - # # JGAurora A5S A1 (STM32F103ZET6) # From 4d8ab1c401170e345b11e971773a87d87272a82a Mon Sep 17 00:00:00 2001 From: tombrazier <68918209+tombrazier@users.noreply.github.com> Date: Mon, 17 Apr 2023 23:48:56 +0100 Subject: [PATCH 288/659] =?UTF-8?q?=F0=9F=90=9B=20Prevent=20Linear=20Advan?= =?UTF-8?q?ce=20stall=20(#25696)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 7bf50e557f..3cca0516ff 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -1578,7 +1578,7 @@ void Stepper::isr() { advance_isr(); nextAdvanceISR = la_interval; } - else if (nextAdvanceISR == LA_ADV_NEVER) // Start LA steps if necessary + else if (nextAdvanceISR > la_interval) // Start/accelerate LA steps if necessary nextAdvanceISR = la_interval; #endif @@ -2169,7 +2169,8 @@ hal_timer_t Stepper::calc_timer_interval(uint32_t step_rate) { #ifdef CPU_32_BIT // A fast processor can just do integer division - return step_rate ? uint32_t(STEPPER_TIMER_RATE) / step_rate : HAL_TIMER_TYPE_MAX; + constexpr uint32_t min_step_rate = uint32_t(STEPPER_TIMER_RATE) / HAL_TIMER_TYPE_MAX; + return step_rate > min_step_rate ? uint32_t(STEPPER_TIMER_RATE) / step_rate : HAL_TIMER_TYPE_MAX; #else From e6308f5d027d2e8ff633aaf035787a1be9da0d58 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 17 Apr 2023 18:10:07 -0500 Subject: [PATCH 289/659] =?UTF-8?q?=F0=9F=A9=B9=20const=5Ffloat=5Ft=20=3D>?= =?UTF-8?q?=20float?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 3cca0516ff..9728a90896 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -3198,9 +3198,9 @@ void Stepper::init() { else if (zeta >= 1.0f) factor2 = 0.0f; else { factor2 = 64.44056192 + -99.02008832 * zeta; - const_float_t zeta2 = zeta * zeta; + const float zeta2 = sq(zeta); factor2 += -7.58095488 * zeta2; - const_float_t zeta3 = zeta2 * zeta; + const float zeta3 = zeta2 * zeta; factor2 += 43.073216 * zeta3; factor2 = floor(factor2); } From 364d8566b01ff7555c6075c857c1a727642e88ad Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 18 Apr 2023 00:25:20 +0000 Subject: [PATCH 290/659] [cron] Bump distribution date (2023-04-18) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index ea6679cba9..c6846adb43 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-17" +//#define STRING_DISTRIBUTION_DATE "2023-04-18" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index bdfac93020..2274701600 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-17" + #define STRING_DISTRIBUTION_DATE "2023-04-18" #endif /** From c8c5ab22ce242b93632a7e2b9f855bbaf38b557f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 17 Apr 2023 19:29:53 -0500 Subject: [PATCH 291/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Gat?= =?UTF-8?q?her=20Z=20clearances=20(#25701)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 8 +- Marlin/src/gcode/bedlevel/G35.cpp | 7 -- Marlin/src/gcode/bedlevel/abl/G29.cpp | 15 +--- Marlin/src/gcode/calibrate/G28.cpp | 85 ++++++++++--------- Marlin/src/inc/Conditionals_post.h | 14 +-- Marlin/src/inc/SanityCheck.h | 10 ++- .../lcd/extui/mks_ui/draw_z_offset_wizard.cpp | 10 +-- Marlin/src/lcd/menu/menu_probe_offset.cpp | 14 ++- Marlin/src/module/motion.cpp | 19 +++-- Marlin/src/module/motion.h | 10 ++- Marlin/src/module/probe.h | 29 +------ 11 files changed, 102 insertions(+), 119 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 9844b44e10..19407b6158 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1402,7 +1402,7 @@ * on the right, enable and set TOUCH_MI_DEPLOY_XPOS to the deploy position. * * Also requires: BABYSTEPPING, BABYSTEP_ZPROBE_OFFSET, Z_SAFE_HOMING, - * and a minimum Z_HOMING_HEIGHT of 10. + * and a minimum Z_CLEARANCE_FOR_HOMING of 10. */ //#define TOUCH_MI_PROBE #if ENABLED(TOUCH_MI_PROBE) @@ -1730,10 +1730,10 @@ */ //#define Z_IDLE_HEIGHT Z_HOME_POS -//#define Z_HOMING_HEIGHT 4 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure to have this much clearance over your Z_MAX_POS to prevent grinding. +//#define Z_CLEARANCE_FOR_HOMING 4 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ... + // Be sure to have this much clearance over your Z_MAX_POS to prevent grinding. -//#define Z_AFTER_HOMING 10 // (mm) Height to move to after homing Z +//#define Z_AFTER_HOMING 10 // (mm) Height to move to after homing Z // Direction of endstops when homing; 1=MAX, -1=MIN // :[-1,1] diff --git a/Marlin/src/gcode/bedlevel/G35.cpp b/Marlin/src/gcode/bedlevel/G35.cpp index c1cef2b987..27c57cf62e 100644 --- a/Marlin/src/gcode/bedlevel/G35.cpp +++ b/Marlin/src/gcode/bedlevel/G35.cpp @@ -98,14 +98,7 @@ void GcodeSuite::G35() { // Probe all positions LOOP_L_N(i, G35_PROBE_COUNT) { - - // In BLTOUCH HS mode, the probe travels in a deployed state. - // Users of G35 might have a badly misaligned bed, so raise Z by the - // length of the deployed pin (BLTOUCH stroke < 7mm) - - // Unsure if this is even required. The probe seems to lift correctly after probe done. const float z_probed_height = probe.probe_at_point(tramming_points[i], PROBE_PT_RAISE, 0, true); - if (isnan(z_probed_height)) { SERIAL_ECHOPGM("G35 failed at point ", i + 1, " ("); SERIAL_ECHOPGM_P((char *)pgm_read_ptr(&tramming_point_name[i])); diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index e334412054..dd325284af 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -494,20 +494,13 @@ G29_TYPE GcodeSuite::G29() { #endif #if ENABLED(AUTO_BED_LEVELING_BILINEAR) - if (!abl.dryrun - && (abl.gridSpacing != bedlevel.grid_spacing || abl.probe_position_lf != bedlevel.grid_start) - ) { - // Reset grid to 0.0 or "not probed". (Also disables ABL) - reset_bed_level(); - - // Can't re-enable (on error) until the new grid is written - abl.reenable = false; + if (!abl.dryrun && (abl.gridSpacing != bedlevel.grid_spacing || abl.probe_position_lf != bedlevel.grid_start)) { + reset_bed_level(); // Reset grid to 0.0 or "not probed". (Also disables ABL) + abl.reenable = false; // Can't re-enable (on error) until the new grid is written } - // Pre-populate local Z values from the stored mesh TERN_(IS_KINEMATIC, COPY(abl.z_values, bedlevel.z_values)); - - #endif // AUTO_BED_LEVELING_BILINEAR + #endif } // !g29_in_progress diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index b5e7a13295..89e0c8d8d4 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -399,49 +399,50 @@ void GcodeSuite::G28() { doU = home_all || homeU, doV = home_all || homeV, doW = home_all || homeW ); - #if HAS_Z_AXIS - UNUSED(needZ); UNUSED(homeZZ); - #else - constexpr bool doZ = false; - #if !HAS_Y_AXIS - constexpr bool doY = false; - #endif + #if !HAS_Y_AXIS + constexpr bool doY = false; #endif - // Z may home first, e.g., when homing away from the bed - TERN_(HOME_Z_FIRST, if (doZ) homeaxis(Z_AXIS)); + #if HAS_Z_AXIS - // 'R' to specify a specific raise. 'R0' indicates no raise, e.g., for recovery.resume - // When 'R0' is used, there should already be adequate clearance, e.g., from homing Z to max. - const bool seenR = parser.seenval('R'); + UNUSED(needZ); UNUSED(homeZZ); - // Use raise given by 'R' or Z_HOMING_HEIGHT (above the probe trigger point) - float z_homing_height = seenR ? parser.value_linear_units() : Z_HOMING_HEIGHT; + // Z may home first, e.g., when homing away from the bed + TERN_(HOME_Z_FIRST, if (doZ) homeaxis(Z_AXIS)); - // Check for any lateral motion that might require clearance - const bool may_skate = seenR || NUM_AXIS_GANG(doX, || doY, || TERN0(Z_SAFE_HOMING, doZ), || doI, || doJ, || doK, || doU, || doV, || doW); + // 'R' to specify a specific raise. 'R0' indicates no raise, e.g., for recovery.resume + // When 'R0' is used, there should already be adequate clearance, e.g., from homing Z to max. + const bool seenR = parser.seenval('R'); - if (seenR && z_homing_height == 0) { - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("R0 = No Z raise"); - } - else { - bool with_probe = ENABLED(HOMING_Z_WITH_PROBE); - // Raise above the current Z (which should be synced in the planner) - // The "height" for Z is a coordinate. But if Z is not trusted/homed make it relative. - if (seenR || !TERN(HOME_AFTER_DEACTIVATE, axis_is_trusted, axis_was_homed)(Z_AXIS)) { - z_homing_height += current_position.z; - with_probe = false; + // Use raise given by 'R' or Z_CLEARANCE_FOR_HOMING (above the probe trigger point) + float z_homing_height = seenR ? parser.value_linear_units() : Z_CLEARANCE_FOR_HOMING; + + // Check for any lateral motion that might require clearance + const bool may_skate = seenR || NUM_AXIS_GANG(doX, || doY, || TERN0(Z_SAFE_HOMING, doZ), || doI, || doJ, || doK, || doU, || doV, || doW); + + if (seenR && z_homing_height == 0) { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("R0 = No Z raise"); + } + else { + bool with_probe = ENABLED(HOMING_Z_WITH_PROBE); + // Raise above the current Z (which should be synced in the planner) + // The "height" for Z is a coordinate. But if Z is not trusted/homed make it relative. + if (seenR || !TERN(HOME_AFTER_DEACTIVATE, axis_is_trusted, axis_was_homed)(Z_AXIS)) { + z_homing_height += current_position.z; + with_probe = false; + } + + if (may_skate) { + // Apply Z clearance before doing any lateral motion + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Raise Z before homing:"); + do_z_clearance(z_homing_height, with_probe); + } } - if (may_skate) { - // Apply Z clearance before doing any lateral motion - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Raise Z before homing:"); - do_z_clearance(z_homing_height, with_probe); - } - } + // Init BLTouch ahead of any lateral motion, even if not homing with the probe + TERN_(BLTOUCH, if (may_skate) bltouch.init()); - // Init BLTouch ahead of any lateral motion, even if not homing with the probe - TERN_(BLTOUCH, if (may_skate) bltouch.init()); + #endif // HAS_Z_AXIS // Diagonal move first if both are homing TERN_(QUICK_HOME, if (doX && doY) quick_home_xy()); @@ -497,11 +498,14 @@ void GcodeSuite::G28() { TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(saved_motion_state)); #if ENABLED(FOAMCUTTER_XYUV) - // skip homing of unused Z axis for foamcutters + + // Skip homing of unused Z axis for foamcutters if (doZ) set_axis_is_at_home(Z_AXIS); - #else + + #elif HAS_Z_AXIS + // Home Z last if homing towards the bed - #if HAS_Z_AXIS && DISABLED(HOME_Z_FIRST) + #if DISABLED(HOME_Z_FIRST) if (doZ) { #if EITHER(Z_MULTI_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) stepper.set_all_z_lock(false); @@ -513,7 +517,7 @@ void GcodeSuite::G28() { #else homeaxis(Z_AXIS); #endif - probe.move_z_after_homing(); + do_move_after_z_homing(); } #endif @@ -525,7 +529,8 @@ void GcodeSuite::G28() { if (doV) homeaxis(V_AXIS), if (doW) homeaxis(W_AXIS) ); - #endif + + #endif // HAS_Z_AXIS sync_plan_position(); @@ -629,7 +634,7 @@ void GcodeSuite::G28() { report_current_position(); - if (ENABLED(NANODLP_Z_SYNC) && (doZ || ENABLED(NANODLP_ALL_AXIS))) + if (BOTH(NANODLP_Z_SYNC, NANODLP_ALL_AXIS) || TERN0(HAS_Z_AXIS, doZ)) SERIAL_ECHOLNPGM(STR_Z_MOVE_COMP); TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(old_grblstate)); diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 4bbb43a216..c09f668450 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -3180,24 +3180,24 @@ #endif /** - * Z_HOMING_HEIGHT / Z_CLEARANCE_BETWEEN_PROBES + * Z_CLEARANCE_FOR_HOMING / Z_CLEARANCE_BETWEEN_PROBES */ -#ifndef Z_HOMING_HEIGHT +#ifndef Z_CLEARANCE_FOR_HOMING #ifdef Z_CLEARANCE_BETWEEN_PROBES - #define Z_HOMING_HEIGHT Z_CLEARANCE_BETWEEN_PROBES + #define Z_CLEARANCE_FOR_HOMING Z_CLEARANCE_BETWEEN_PROBES #else - #define Z_HOMING_HEIGHT 0 + #define Z_CLEARANCE_FOR_HOMING 0 #endif #endif #if PROBE_SELECTED #ifndef Z_CLEARANCE_BETWEEN_PROBES - #define Z_CLEARANCE_BETWEEN_PROBES Z_HOMING_HEIGHT + #define Z_CLEARANCE_BETWEEN_PROBES Z_CLEARANCE_FOR_HOMING #endif - #if Z_CLEARANCE_BETWEEN_PROBES > Z_HOMING_HEIGHT + #if Z_CLEARANCE_BETWEEN_PROBES > Z_CLEARANCE_FOR_HOMING #define Z_CLEARANCE_BETWEEN_MANUAL_PROBES Z_CLEARANCE_BETWEEN_PROBES #else - #define Z_CLEARANCE_BETWEEN_MANUAL_PROBES Z_HOMING_HEIGHT + #define Z_CLEARANCE_BETWEEN_MANUAL_PROBES Z_CLEARANCE_FOR_HOMING #endif #ifndef Z_CLEARANCE_MULTI_PROBE #define Z_CLEARANCE_MULTI_PROBE Z_CLEARANCE_BETWEEN_PROBES diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index fd58a9c54e..8a3e0a6cda 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -214,9 +214,11 @@ #elif defined(PID_ADD_EXTRUSION_RATE) #error "PID_ADD_EXTRUSION_RATE is now PID_EXTRUSION_SCALING and is DISABLED by default." #elif defined(Z_RAISE_BEFORE_HOMING) - #error "Z_RAISE_BEFORE_HOMING is now Z_HOMING_HEIGHT." + #error "Z_RAISE_BEFORE_HOMING is now Z_CLEARANCE_FOR_HOMING." #elif defined(MIN_Z_HEIGHT_FOR_HOMING) - #error "MIN_Z_HEIGHT_FOR_HOMING is now Z_HOMING_HEIGHT." + #error "MIN_Z_HEIGHT_FOR_HOMING is now Z_CLEARANCE_FOR_HOMING." +#elif defined(Z_HOMING_HEIGHT) + #error "Z_HOMING_HEIGHT is now Z_CLEARANCE_FOR_HOMING." #elif defined(Z_RAISE_BEFORE_PROBING) || defined(Z_RAISE_AFTER_PROBING) #error "Z_RAISE_(BEFORE|AFTER)_PROBING are deprecated. Use Z_CLEARANCE_DEPLOY_PROBE and Z_AFTER_PROBING instead." #elif defined(Z_RAISE_PROBE_DEPLOY_STOW) || defined(Z_RAISE_BETWEEN_PROBINGS) @@ -1945,8 +1947,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "TOUCH_MI_PROBE requires TOUCH_MI_RETRACT_Z." #elif defined(Z_AFTER_PROBING) #error "TOUCH_MI_PROBE requires Z_AFTER_PROBING to be disabled." - #elif Z_HOMING_HEIGHT < 10 - #error "TOUCH_MI_PROBE requires Z_HOMING_HEIGHT >= 10." + #elif Z_CLEARANCE_FOR_HOMING < 10 + #error "TOUCH_MI_PROBE requires Z_CLEARANCE_FOR_HOMING >= 10." #elif DISABLED(BABYSTEP_ZPROBE_OFFSET) #error "TOUCH_MI_PROBE requires BABYSTEPPING with BABYSTEP_ZPROBE_OFFSET." #elif !HAS_RESUME_CONTINUE diff --git a/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp b/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp index dbe8577dc9..69e547a68c 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp @@ -102,8 +102,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { current_position.z = z_offset_ref; // Set Z to z_offset_ref, as we can expect it is at probe height probe.offset.z = calculated_z_offset; sync_plan_position(); - // Raise Z as if it was homed - do_z_clearance(Z_POST_CLEARANCE); + do_z_post_clearance(); hal.watchdog_refresh(); draw_return_ui(); return; @@ -111,11 +110,12 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { probe.offset.z = z_offset_backup; SET_SOFT_ENDSTOP_LOOSE(false); TERN_(HAS_LEVELING, set_bed_leveling_enabled(mks_leveling_was_active)); + // On cancel the Z position needs correction #if HOMING_Z_WITH_PROBE && defined(PROBE_OFFSET_WIZARD_START_Z) - set_axis_never_homed(Z_AXIS); // On cancel the Z position needs correction + set_axis_never_homed(Z_AXIS); queue.inject_P(PSTR("G28Z")); - #else // Otherwise do a Z clearance move like after Homing - do_z_clearance(Z_POST_CLEARANCE); + #else + do_z_post_clearance(); #endif hal.watchdog_refresh(); draw_return_ui(); diff --git a/Marlin/src/lcd/menu/menu_probe_offset.cpp b/Marlin/src/lcd/menu/menu_probe_offset.cpp index 34172de458..62704cdede 100644 --- a/Marlin/src/lcd/menu/menu_probe_offset.cpp +++ b/Marlin/src/lcd/menu/menu_probe_offset.cpp @@ -44,10 +44,6 @@ void _goto_manual_move_z(const_float_t); // Global storage float z_offset_backup, calculated_z_offset, z_offset_ref; -inline void z_clearance_move() { - do_z_clearance(Z_POST_CLEARANCE); -} - void set_offset_and_go_back(const_float_t z) { probe.offset.z = z; SET_SOFT_ENDSTOP_LOOSE(false); @@ -75,17 +71,17 @@ void probe_offset_wizard_menu() { set_offset_and_go_back(calculated_z_offset); current_position.z = z_offset_ref; // Set Z to z_offset_ref, as we can expect it is at probe height sync_plan_position(); - z_clearance_move(); // Raise Z as if it was homed + do_z_post_clearance(); }); ACTION_ITEM(MSG_BUTTON_CANCEL, []{ set_offset_and_go_back(z_offset_backup); - // If wizard-homing was done by probe with PROBE_OFFSET_WIZARD_START_Z + // On cancel the Z position needs correction #if HOMING_Z_WITH_PROBE && defined(PROBE_OFFSET_WIZARD_START_Z) - set_axis_never_homed(Z_AXIS); // On cancel the Z position needs correction + set_axis_never_homed(Z_AXIS); queue.inject(F("G28Z")); - #else // Otherwise do a Z clearance move like after Homing - z_clearance_move(); + #else + do_z_post_clearance(); #endif }); diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 219f219e59..6917bbc42a 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -38,6 +38,10 @@ #include "../lcd/marlinui.h" #endif +#if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) + #include "../lcd/e3v2/proui/dwin.h" +#endif + #if ENABLED(POLAR) #include "polar.h" #endif @@ -795,6 +799,14 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_z_clearance_by(", zclear, ")"); do_z_clearance(current_position.z + zclear, false); } + void do_move_after_z_homing() { + DEBUG_SECTION(mzah, "do_move_after_z_homing", DEBUGGING(LEVELING)); + #if defined(Z_AFTER_HOMING) || ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) + do_z_clearance(Z_POST_CLEARANCE, true, true); + #elif ENABLED(USE_PROBE_FOR_Z_HOMING) + probe.move_z_after_probing(); + #endif + } #endif // @@ -803,13 +815,10 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { // static float saved_feedrate_mm_s; static int16_t saved_feedrate_percentage; -void remember_feedrate_and_scaling() { - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("remember_feedrate_and_scaling: fr=", feedrate_mm_s, " ", feedrate_percentage, "%"); +void remember_feedrate_scaling_off() { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("remember_feedrate_scaling_off: fr=", feedrate_mm_s, " ", feedrate_percentage, "%"); saved_feedrate_mm_s = feedrate_mm_s; saved_feedrate_percentage = feedrate_percentage; -} -void remember_feedrate_scaling_off() { - remember_feedrate_and_scaling(); feedrate_percentage = 100; } void restore_feedrate_and_scaling() { diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index c93b1ef205..4cd4641e3d 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -398,13 +398,21 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s=0.0f); FORCE_INLINE void do_blocking_move_to_xy_z(const xyze_pos_t &raw, const_float_t z, const_feedRate_t fr_mm_s=0.0f) { do_blocking_move_to_xy_z(xy_pos_t(raw), z, fr_mm_s); } #endif -void remember_feedrate_and_scaling(); void remember_feedrate_scaling_off(); void restore_feedrate_and_scaling(); #if HAS_Z_AXIS + #if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) + #define Z_POST_CLEARANCE HMI_data.z_after_homing + #elif defined(Z_AFTER_HOMING) + #define Z_POST_CLEARANCE Z_AFTER_HOMING + #else + #define Z_POST_CLEARANCE Z_CLEARANCE_FOR_HOMING + #endif void do_z_clearance(const_float_t zclear, const bool with_probe=true, const bool lower_allowed=false); void do_z_clearance_by(const_float_t zclear); + void do_move_after_z_homing(); + inline void do_z_post_clearance() { do_z_clearance(Z_POST_CLEARANCE); } #else inline void do_z_clearance(float, bool=true, bool=false) {} inline void do_z_clearance_by(float) {} diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index ebae929439..4c6f233905 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -29,10 +29,6 @@ #include "motion.h" -#if ENABLED(DWIN_LCD_PROUI) - #include "../lcd/e3v2/proui/dwin.h" -#endif - #define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE) #include "../core/debug_out.h" @@ -51,16 +47,6 @@ #define PROBE_TRIGGERED() (READ(Z_MIN_PIN) == Z_MIN_ENDSTOP_HIT_STATE) #endif -#if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) - #define Z_POST_CLEARANCE HMI_data.z_after_homing -#elif defined(Z_AFTER_HOMING) - #define Z_POST_CLEARANCE Z_AFTER_HOMING -#elif defined(Z_HOMING_HEIGHT) - #define Z_POST_CLEARANCE Z_HOMING_HEIGHT -#else - #define Z_POST_CLEARANCE 10 -#endif - // In BLTOUCH HS mode, the probe travels in a deployed state. #define Z_PROBE_SAFE_CLEARANCE SUM_TERN(BLTOUCH, Z_CLEARANCE_BETWEEN_PROBES, bltouch.z_extra_clearance()) @@ -190,19 +176,10 @@ public: static void use_probing_tool(const bool=true) IF_DISABLED(DO_TOOLCHANGE_FOR_PROBING, {}); - #ifndef Z_AFTER_PROBING - #define Z_AFTER_PROBING 0 - #endif - static void move_z_after_probing(const float z=Z_AFTER_PROBING) { + static void move_z_after_probing() { DEBUG_SECTION(mzah, "move_z_after_probing", DEBUGGING(LEVELING)); - if (z != 0) do_z_clearance(z, true, true); // Move down still permitted - } - static void move_z_after_homing() { - DEBUG_SECTION(mzah, "move_z_after_homing", DEBUGGING(LEVELING)); - #if defined(Z_AFTER_HOMING) || ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) - move_z_after_probing(Z_POST_CLEARANCE); - #elif HAS_BED_PROBE - move_z_after_probing(); + #ifdef Z_AFTER_PROBING + do_z_clearance(Z_AFTER_PROBING, true, true); // Move down still permitted #endif } From 0c2ed8688dd387b56b318f6207ee1cc70811b5a5 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 17 Apr 2023 21:00:12 -0500 Subject: [PATCH 292/659] =?UTF-8?q?=F0=9F=A9=B9=20Z=20clearance=20followup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/calibrate/G28.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 89e0c8d8d4..782761ee14 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -634,7 +634,7 @@ void GcodeSuite::G28() { report_current_position(); - if (BOTH(NANODLP_Z_SYNC, NANODLP_ALL_AXIS) || TERN0(HAS_Z_AXIS, doZ)) + if (ENABLED(NANODLP_Z_SYNC) && (ENABLED(NANODLP_ALL_AXIS) || TERN0(HAS_Z_AXIS, doZ))) SERIAL_ECHOLNPGM(STR_Z_MOVE_COMP); TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(old_grblstate)); From 158c4de4f6d5a91379226f00e6e9e0e7c153d22f Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Tue, 18 Apr 2023 10:40:13 +0200 Subject: [PATCH 293/659] =?UTF-8?q?=F0=9F=A9=B9=20Bail=20on=20'mc.zip'=20w?= =?UTF-8?q?rite=20error=20(#25695)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/gcode/eeprom/M500-M504.cpp | 2 +- Marlin/src/sd/SdBaseFile.cpp | 2 +- Marlin/src/sd/SdBaseFile.h | 2 +- Marlin/src/sd/SdFile.cpp | 6 +----- Marlin/src/sd/SdFile.h | 7 +------ buildroot/tests/STM32F103RE_creality | 2 +- 6 files changed, 6 insertions(+), 15 deletions(-) diff --git a/Marlin/src/gcode/eeprom/M500-M504.cpp b/Marlin/src/gcode/eeprom/M500-M504.cpp index 31da2c5adf..c3962117e5 100644 --- a/Marlin/src/gcode/eeprom/M500-M504.cpp +++ b/Marlin/src/gcode/eeprom/M500-M504.cpp @@ -73,7 +73,7 @@ void GcodeSuite::M502() { bool success = true; for (uint16_t i = 0; success && i < sizeof(mc_zip); ++i) { const uint8_t c = pgm_read_byte(&mc_zip[i]); - file.write(c); + success = (file.write(c) == 1); } success = file.close() && success; diff --git a/Marlin/src/sd/SdBaseFile.cpp b/Marlin/src/sd/SdBaseFile.cpp index 4f4a8e9fa9..5ee0db2b9e 100644 --- a/Marlin/src/sd/SdBaseFile.cpp +++ b/Marlin/src/sd/SdBaseFile.cpp @@ -2169,7 +2169,7 @@ bool SdBaseFile::truncate(uint32_t length) { * include write() is called before a file has been opened, write is called * for a read-only file, device is full, a corrupt file system or an I/O error. */ -int16_t SdBaseFile::write(const void *buf, uint16_t nbyte) { +int16_t SdBaseFile::write(const void *buf, const uint16_t nbyte) { #if ENABLED(SDCARD_READONLY) writeError = true; return -1; #endif diff --git a/Marlin/src/sd/SdBaseFile.h b/Marlin/src/sd/SdBaseFile.h index 046c2447cb..3ac23138b1 100644 --- a/Marlin/src/sd/SdBaseFile.h +++ b/Marlin/src/sd/SdBaseFile.h @@ -345,7 +345,7 @@ class SdBaseFile { * \return SdVolume that contains this file. */ SdVolume* volume() const { return vol_; } - int16_t write(const void *buf, uint16_t nbyte); + int16_t write(const void *buf, const uint16_t nbyte); private: friend class SdFat; // allow SdFat to set cwd_ diff --git a/Marlin/src/sd/SdFile.cpp b/Marlin/src/sd/SdFile.cpp index ac5f6f9234..a1dd793727 100644 --- a/Marlin/src/sd/SdFile.cpp +++ b/Marlin/src/sd/SdFile.cpp @@ -67,11 +67,7 @@ int16_t SdFile::write(const void * const buf, const uint16_t nbyte) { return SdB * \param[in] b the byte to be written. * Use writeError to check for errors. */ -#if ARDUINO >= 100 - size_t SdFile::write(const uint8_t b) { return SdBaseFile::write(&b, 1); } -#else - void SdFile::write(const uint8_t b) { SdBaseFile::write(&b, 1); } -#endif +size_t SdFile::write(const uint8_t b) { return SdBaseFile::write(&b, 1); } /** * Write a string to a file. Used by the Arduino Print class. diff --git a/Marlin/src/sd/SdFile.h b/Marlin/src/sd/SdFile.h index b075239ebb..cdce1ffe12 100644 --- a/Marlin/src/sd/SdFile.h +++ b/Marlin/src/sd/SdFile.h @@ -42,12 +42,7 @@ class SdFile : public SdBaseFile { public: SdFile() {} SdFile(const char * const name, const uint8_t oflag); - #if ARDUINO >= 100 - size_t write(const uint8_t b); - #else - void write(const uint8_t b); - #endif - + size_t write(const uint8_t b); int16_t write(const void * const buf, const uint16_t nbyte); void write(const char * const str); void write_P(PGM_P str); diff --git a/buildroot/tests/STM32F103RE_creality b/buildroot/tests/STM32F103RE_creality index 6677559720..d407dc4301 100755 --- a/buildroot/tests/STM32F103RE_creality +++ b/buildroot/tests/STM32F103RE_creality @@ -19,7 +19,7 @@ opt_enable DWIN_CREALITY_LCD_JYERSUI AUTO_BED_LEVELING_BILINEAR PROBE_MANUALLY exec_test $1 $2 "Ender-3 v2 with JyersUI" "$3" use_example_configs "Creality/Ender-3 S1/STM32F1" -opt_disable DWIN_CREALITY_LCD Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN AUTO_BED_LEVELING_BILINEAR CONFIGURATION_EMBEDDING CANCEL_OBJECTS FWRETRACT +opt_disable DWIN_CREALITY_LCD Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN AUTO_BED_LEVELING_BILINEAR CANCEL_OBJECTS FWRETRACT opt_enable DWIN_LCD_PROUI INDIVIDUAL_AXIS_HOMING_SUBMENU SET_PROGRESS_MANUALLY SET_PROGRESS_PERCENT STATUS_MESSAGE_SCROLLING \ SOUND_MENU_ITEM PRINTCOUNTER NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE FILAMENT_RUNOUT_SENSOR \ BLTOUCH Z_SAFE_HOMING AUTO_BED_LEVELING_UBL MESH_EDIT_MENU \ From 5e2e00306e034c9bb0ad5180e1c7b138f6616f5e Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 19 Apr 2023 00:22:13 +0000 Subject: [PATCH 294/659] [cron] Bump distribution date (2023-04-19) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index c6846adb43..e1ea5a7d53 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-18" +//#define STRING_DISTRIBUTION_DATE "2023-04-19" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 2274701600..38c87f0d1a 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-18" + #define STRING_DISTRIBUTION_DATE "2023-04-19" #endif /** From 19b4ae862b4db32f94f3ff004b5e5e3116502e3f Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Wed, 19 Apr 2023 12:50:11 +1200 Subject: [PATCH 295/659] =?UTF-8?q?=F0=9F=A9=B9=20Correctly=20add=20JSON?= =?UTF-8?q?=20to=20mc.zip=20(#25706)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/share/PlatformIO/scripts/signature.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/buildroot/share/PlatformIO/scripts/signature.py b/buildroot/share/PlatformIO/scripts/signature.py index 0da02f837b..84312da01b 100644 --- a/buildroot/share/PlatformIO/scripts/signature.py +++ b/buildroot/share/PlatformIO/scripts/signature.py @@ -39,9 +39,9 @@ def get_file_sha256sum(filepath): # Compress a JSON file into a zip file # import zipfile -def compress_file(filepath, outpath): +def compress_file(filepath, storedname, outpath): with zipfile.ZipFile(outpath, 'w', compression=zipfile.ZIP_BZIP2, compresslevel=9) as zipf: - zipf.write(filepath, compress_type=zipfile.ZIP_BZIP2, compresslevel=9) + zipf.write(filepath, arcname=storedname, compress_type=zipfile.ZIP_BZIP2, compresslevel=9) # # Compute the build signature. The idea is to extract all defines in the configuration headers @@ -56,14 +56,13 @@ def compute_build_signature(env): files_to_keep = [ 'Marlin/Configuration.h', 'Marlin/Configuration_adv.h' ] build_path = Path(env['PROJECT_BUILD_DIR'], env['PIOENV']) - build_path_relative = Path('.pio', 'build', env['PIOENV']) # Check if we can skip processing hashes = '' for header in files_to_keep: hashes += get_file_sha256sum(header)[0:10] - marlin_json = build_path_relative / 'marlin_config.json' + marlin_json = build_path / 'marlin_config.json' marlin_zip = build_path / 'mc.zip' # Read existing config file @@ -72,7 +71,7 @@ def compute_build_signature(env): conf = json.load(infile) if conf['__INITIAL_HASH'] == hashes: # Same configuration, skip recomputing the building signature - compress_file(marlin_json, marlin_zip) + compress_file(marlin_json, 'marlin_config.json', marlin_zip) return except: pass @@ -256,7 +255,7 @@ def compute_build_signature(env): return # Compress the JSON file as much as we can - compress_file(marlin_json, marlin_zip) + compress_file(marlin_json, 'marlin_config.json', marlin_zip) # Generate a C source file for storing this array with open('Marlin/src/mczip.h','wb') as result_file: From fad1dcefbcd300128b474783f1183ea8a6d18496 Mon Sep 17 00:00:00 2001 From: Jay Robson <45777442+jsrobson10@users.noreply.github.com> Date: Thu, 20 Apr 2023 06:58:42 +1000 Subject: [PATCH 296/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20G38=20with=20Z,=20?= =?UTF-8?q?support=209=20axes=20(#25691)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/inc/Conditionals_post.h | 6 +++--- Marlin/src/module/endstops.cpp | 14 +++++--------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index c09f668450..96b7313f29 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -341,21 +341,21 @@ #ifdef MANUAL_U_HOME_POS #define U_HOME_POS MANUAL_U_HOME_POS #else - #define U_HOME_POS (U_HOME_DIR < 0 ? U_MIN_POS : U_MAX_POS) + #define U_HOME_POS TERN(U_HOME_TO_MIN, U_MIN_POS, U_MAX_POS) #endif #endif #if HAS_V_AXIS #ifdef MANUAL_V_HOME_POS #define V_HOME_POS MANUAL_V_HOME_POS #else - #define V_HOME_POS (V_HOME_DIR < 0 ? V_MIN_POS : V_MAX_POS) + #define V_HOME_POS TERN(V_HOME_TO_MIN, V_MIN_POS, V_MAX_POS) #endif #endif #if HAS_W_AXIS #ifdef MANUAL_W_HOME_POS #define W_HOME_POS MANUAL_W_HOME_POS #else - #define W_HOME_POS (W_HOME_DIR < 0 ? W_MIN_POS : W_MAX_POS) + #define W_HOME_POS TERN(W_HOME_TO_MIN, W_MIN_POS, W_MAX_POS) #endif #endif diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 6719925f15..ccad00062e 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -913,17 +913,13 @@ void Endstops::update() { #endif #if HAS_G38_PROBE // TODO (DerAndere): Add support for HAS_I_AXIS - #define _G38_OPEN_STATE TERN(G38_PROBE_AWAY, (G38_move >= 4), LOW) // For G38 moves check the probe's pin for ALL movement - if (G38_move && TEST_ENDSTOP(_ENDSTOP(Z, TERN(USES_Z_MIN_PROBE_PIN, MIN_PROBE, MIN))) != _G38_OPEN_STATE) { - if (stepper.axis_is_moving(X_AXIS)) { _ENDSTOP_HIT(X, TERN(X_HOME_TO_MIN, MIN, MAX)); planner.endstop_triggered(X_AXIS); } - #if HAS_Y_AXIS - else if (stepper.axis_is_moving(Y_AXIS)) { _ENDSTOP_HIT(Y, TERN(Y_HOME_TO_MIN, MIN, MAX)); planner.endstop_triggered(Y_AXIS); } - #endif - #if HAS_Z_AXIS - else if (stepper.axis_is_moving(Z_AXIS)) { _ENDSTOP_HIT(Z, TERN(Z_HOME_TO_MIN, MIN, MAX)); planner.endstop_triggered(Z_AXIS); } - #endif + if (G38_move && TEST_ENDSTOP(_ENDSTOP(Z, TERN(USES_Z_MIN_PROBE_PIN, MIN_PROBE, MIN))) == TERN1(G38_PROBE_AWAY, (G38_move < 4))) { G38_did_trigger = true; + #define _G38_SET(Q) | (stepper.axis_is_moving(_AXIS(Q)) << _AXIS(Q)) + #define _G38_RESP(Q) if (moving[_AXIS(Q)]) { _ENDSTOP_HIT(Q, ENDSTOP); planner.endstop_triggered(_AXIS(Q)); } + const Flags moving = { value_t(NUM_AXES)(0 MAIN_AXIS_MAP(_G38_SET)) }; + MAIN_AXIS_MAP(_G38_RESP); } #endif From 4ac9cfba4f44235047e95d3dd64579577262d4fa Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Wed, 19 Apr 2023 14:53:11 -0700 Subject: [PATCH 297/659] =?UTF-8?q?=F0=9F=94=A7=20Check=20renamed=20LIN=5F?= =?UTF-8?q?ADVANCE=5FK=20(#25710)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/SanityCheck.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 8a3e0a6cda..f5d0c785eb 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -656,6 +656,8 @@ #error "USE_M73_REMAINING_TIME is now SET_REMAINING_TIME." #elif defined(SHOW_SD_PERCENT) #error "SHOW_SD_PERCENT is now SHOW_PROGRESS_PERCENT." +#elif defined(LIN_ADVANCE_K) + #error "LIN_ADVANCE_K is now ADVANCE_K." #elif defined(EXTRA_LIN_ADVANCE_K) #error "EXTRA_LIN_ADVANCE_K is now ADVANCE_K_EXTRA." #elif defined(POLAR_SEGMENTS_PER_SECOND) || defined(DELTA_SEGMENTS_PER_SECOND) || defined(SCARA_SEGMENTS_PER_SECOND) || defined(TPARA_SEGMENTS_PER_SECOND) From c087ad04d3fb95fff1ae032d4f395e4fa33e31ed Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 20 Apr 2023 00:20:18 +0000 Subject: [PATCH 298/659] [cron] Bump distribution date (2023-04-20) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index e1ea5a7d53..c803516490 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-19" +//#define STRING_DISTRIBUTION_DATE "2023-04-20" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 38c87f0d1a..ed0440a7db 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-19" + #define STRING_DISTRIBUTION_DATE "2023-04-20" #endif /** From de7726ca019461d029f9fe2a14a85b8ecf8723fe Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Wed, 19 Apr 2023 17:21:53 -0700 Subject: [PATCH 299/659] =?UTF-8?q?=F0=9F=9A=B8=20Permit=20G38=20with=20Co?= =?UTF-8?q?re=20(#25713)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/endstops.cpp | 7 +++---- Marlin/src/module/endstops.h | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index ccad00062e..02af062eca 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -517,8 +517,7 @@ void Endstops::update() { #define UPDATE_ENDSTOP_BIT(AXIS, MINMAX) SET_BIT_TO(live_state, _ENDSTOP(AXIS, MINMAX), (READ_ENDSTOP(_ENDSTOP_PIN(AXIS, MINMAX)) == _ENDSTOP_HIT_STATE(AXIS, MINMAX))) #define COPY_LIVE_STATE(SRC_BIT, DST_BIT) SET_BIT_TO(live_state, DST_BIT, TEST(live_state, SRC_BIT)) - #if ENABLED(G38_PROBE_TARGET) && NONE(CORE_IS_XY, CORE_IS_XZ, MARKFORGED_XY, MARKFORGED_YX) - #define HAS_G38_PROBE 1 + #if ENABLED(G38_PROBE_TARGET) // For G38 moves check the probe's pin for ALL movement if (G38_move) UPDATE_ENDSTOP_BIT(Z, TERN(USES_Z_MIN_PROBE_PIN, MIN_PROBE, MIN)); #endif @@ -912,9 +911,9 @@ void Endstops::update() { #define PROCESS_ENDSTOP_Z(MINMAX) PROCESS_DUAL_ENDSTOP(Z, MINMAX) #endif - #if HAS_G38_PROBE // TODO (DerAndere): Add support for HAS_I_AXIS + #if ENABLED(G38_PROBE_TARGET) // For G38 moves check the probe's pin for ALL movement - if (G38_move && TEST_ENDSTOP(_ENDSTOP(Z, TERN(USES_Z_MIN_PROBE_PIN, MIN_PROBE, MIN))) == TERN1(G38_PROBE_AWAY, (G38_move < 4))) { + if (G38_move && TEST_ENDSTOP(Z_MIN_PROBE) == TERN1(G38_PROBE_AWAY, (G38_move < 4))) { G38_did_trigger = true; #define _G38_SET(Q) | (stepper.axis_is_moving(_AXIS(Q)) << _AXIS(Q)) #define _G38_RESP(Q) if (moving[_AXIS(Q)]) { _ENDSTOP_HIT(Q, ENDSTOP); planner.endstop_triggered(_AXIS(Q)); } diff --git a/Marlin/src/module/endstops.h b/Marlin/src/module/endstops.h index 76c8d454d7..e0c0de39a1 100644 --- a/Marlin/src/module/endstops.h +++ b/Marlin/src/module/endstops.h @@ -96,7 +96,7 @@ enum EndstopEnum : char { #endif #endif #if HAS_Z_MIN || HAS_Z_MAX || HOMING_Z_WITH_PROBE - , Z_ENDSTOP = TERN(Z_HOME_TO_MAX, Z_MAX, TERN(HOMING_Z_WITH_PROBE, Z_MIN_PROBE, Z_MIN)) + , Z_ENDSTOP = TERN(HOMING_Z_WITH_PROBE, Z_MIN_PROBE, TERN(Z_HOME_TO_MAX, Z_MAX, Z_MIN)) #endif #if HAS_I_MIN || HAS_I_MAX , I_ENDSTOP = TERN(I_HOME_TO_MAX, I_MAX, I_MIN) From 91cce2a7b39f1b64e37224fe6bef4ce00463fecf Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Wed, 19 Apr 2023 19:42:05 -0700 Subject: [PATCH 300/659] =?UTF-8?q?=E2=9C=A8=20Panowin=20Cutlass=20/=20Bar?= =?UTF-8?q?do=20(F1=20/=20Trinus)=20(#25663)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/AVR/pinsDebug.h | 1 - Marlin/src/HAL/AVR/pinsDebug_plus_70.h | 1 - Marlin/src/HAL/TEENSY35_36/pinsDebug.h | 2 +- Marlin/src/HAL/TEENSY40_41/pinsDebug.h | 2 +- Marlin/src/core/boards.h | 2 + Marlin/src/gcode/control/M42.cpp | 3 +- Marlin/src/inc/Conditionals_LCD.h | 7 +- Marlin/src/pins/pins.h | 4 + Marlin/src/pins/ramps/pins_KODAMA_BARDO.h | 34 +++++ Marlin/src/pins/ramps/pins_PANOWIN_CUTLASS.h | 133 +++++++++++++++++++ 10 files changed, 183 insertions(+), 6 deletions(-) create mode 100644 Marlin/src/pins/ramps/pins_KODAMA_BARDO.h create mode 100755 Marlin/src/pins/ramps/pins_PANOWIN_CUTLASS.h diff --git a/Marlin/src/HAL/AVR/pinsDebug.h b/Marlin/src/HAL/AVR/pinsDebug.h index b91bde182d..3fe877cd00 100644 --- a/Marlin/src/HAL/AVR/pinsDebug.h +++ b/Marlin/src/HAL/AVR/pinsDebug.h @@ -90,7 +90,6 @@ void PRINT_ARRAY_NAME(uint8_t x) { #define GET_ARRAY_IS_DIGITAL(x) pgm_read_byte(&pin_array[x].is_digital) - #if defined(__AVR_ATmega1284P__) // 1284 IDE extensions set this to the number of #undef NUM_DIGITAL_PINS // digital only pins while all other CPUs have it #define NUM_DIGITAL_PINS 32 // set to digital only + digital/analog diff --git a/Marlin/src/HAL/AVR/pinsDebug_plus_70.h b/Marlin/src/HAL/AVR/pinsDebug_plus_70.h index d9aa44c3cb..fa479cfe8f 100644 --- a/Marlin/src/HAL/AVR/pinsDebug_plus_70.h +++ b/Marlin/src/HAL/AVR/pinsDebug_plus_70.h @@ -231,7 +231,6 @@ const uint8_t PROGMEM digital_pin_to_bit_mask_PGM_plus_70[] = { #define digitalPinToBitMask_plus_70(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM_plus_70 + (P) ) ) - const uint8_t PROGMEM digital_pin_to_timer_PGM_plus_70[] = { // TIMERS // ------------------------ diff --git a/Marlin/src/HAL/TEENSY35_36/pinsDebug.h b/Marlin/src/HAL/TEENSY35_36/pinsDebug.h index 7a2e1d6e59..235c0e4a48 100644 --- a/Marlin/src/HAL/TEENSY35_36/pinsDebug.h +++ b/Marlin/src/HAL/TEENSY35_36/pinsDebug.h @@ -77,7 +77,7 @@ void HAL_analog_pin_state(char buffer[], int8_t pin) { * Print a pin's PWM status. * Return true if it's currently a PWM pin. */ -bool HAL_pwm_status(int8_t pin) { +bool HAL_pwm_status(const int8_t pin) { char buffer[20]; // for the sprintf statements switch (pin) { FTM_CASE(0,0); diff --git a/Marlin/src/HAL/TEENSY40_41/pinsDebug.h b/Marlin/src/HAL/TEENSY40_41/pinsDebug.h index fc90f671cf..c85a88c9ae 100644 --- a/Marlin/src/HAL/TEENSY40_41/pinsDebug.h +++ b/Marlin/src/HAL/TEENSY40_41/pinsDebug.h @@ -136,7 +136,7 @@ void HAL_analog_pin_state(char buffer[], int8_t pin) { * Print a pin's PWM status. * Return true if it's currently a PWM pin. */ -bool HAL_pwm_status(int8_t pin) { +bool HAL_pwm_status(const int8_t pin) { char buffer[20]; // for the sprintf statements const struct pwm_pin_info_struct *info; diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index 147080542d..2f2ac1664e 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -118,6 +118,8 @@ #define BOARD_LONGER3D_LKx_PRO 1162 // Longer LKx PRO / Alfawise Uxx Pro (PRO version) #define BOARD_ZRIB_V53 1163 // Zonestar zrib V5.3 (Chinese RAMPS replica) #define BOARD_PXMALION_CORE_I3 1164 // Pxmalion Core I3 +#define BOARD_PANOWIN_CUTLASS 1165 // Panowin Cutlass (as found in the Panowin F1) +#define BOARD_KODAMA_BARDO 1166 // Kodama Bardo V1.x (as found in the Kodama Trinus) // // RAMBo and derivatives diff --git a/Marlin/src/gcode/control/M42.cpp b/Marlin/src/gcode/control/M42.cpp index 1b3a29d100..55ece67de7 100644 --- a/Marlin/src/gcode/control/M42.cpp +++ b/Marlin/src/gcode/control/M42.cpp @@ -53,6 +53,7 @@ void protected_pin_err() { * I Flag to ignore Marlin's pin protection * * T Pin mode: 0=INPUT 1=OUTPUT 2=INPUT_PULLUP 3=INPUT_PULLDOWN + * 4=INPUT_ANALOG 5=OUTPUT_OPEN_DRAIN */ void GcodeSuite::M42() { const int pin_index = PARSED_PIN_INDEX('P', GET_PIN_MAP_INDEX(LED_PIN)); @@ -119,7 +120,7 @@ void GcodeSuite::M42() { } // An OUTPUT_OPEN_DRAIN should not be changed to normal OUTPUT (STM32) - // Use M42 Px M1/5 S0/1 to set the output type and then set value + // Use M42 Px T1/5 S0/1 to set the output type and then set value #ifndef OUTPUT_OPEN_DRAIN pinMode(pin, OUTPUT); #endif diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 60bc653560..5cc1d07b09 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -484,8 +484,13 @@ #endif #endif +// Serial Controllers require LCD_SERIAL_PORT +#if ANY(HAS_DGUS_LCD, MALYAN_LCD, ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON, NEXTION_TFT) + #define LCD_NEEDS_SERIAL_PORT 1 +#endif + // Extensible UI serial touch screens. (See src/lcd/extui) -#if ANY(HAS_DGUS_LCD, MALYAN_LCD, TOUCH_UI_FTDI_EVE, ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON, ANYCUBIC_LCD_VYPER, NEXTION_TFT) +#if EITHER(LCD_NEEDS_SERIAL_PORT, TOUCH_UI_FTDI_EVE) #define IS_EXTUI 1 #define EXTENSIBLE_UI #endif diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 124c940422..d3b3bbbd21 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -205,6 +205,10 @@ #include "ramps/pins_LONGER3D_LKx_PRO.h" // ATmega2560 env:mega2560 #elif MB(PXMALION_CORE_I3) #include "ramps/pins_PXMALION_CORE_I3.h" // ATmega2560 env:mega2560 +#elif MB(PANOWIN_CUTLASS) + #include "ramps/pins_PANOWIN_CUTLASS.h" // ATmega2560 env:mega2560ext +#elif MB(KODAMA_BARDO) + #include "ramps/pins_KODAMA_BARDO.h" // ATmega2560 env:mega2560ext // // RAMBo and derivatives diff --git a/Marlin/src/pins/ramps/pins_KODAMA_BARDO.h b/Marlin/src/pins/ramps/pins_KODAMA_BARDO.h new file mode 100644 index 0000000000..12597c4270 --- /dev/null +++ b/Marlin/src/pins/ramps/pins_KODAMA_BARDO.h @@ -0,0 +1,34 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * Kodama Bardo V1.x as found in the Kodama Trinus (MEGA2560) board pin assignments + * + * Ported from https://github.com/sambuls/MarlinOnTrinus + * Board photo https://imgur.com/a/JbQH5SI + */ + +#define BOARD_NAME "Kodama Bardo V1.x" +#define DEFAULT_MACHINE_NAME "Kodama Trinus" + +#include "pins_PANOWIN_CUTLASS.h" diff --git a/Marlin/src/pins/ramps/pins_PANOWIN_CUTLASS.h b/Marlin/src/pins/ramps/pins_PANOWIN_CUTLASS.h new file mode 100755 index 0000000000..cc651cc8ef --- /dev/null +++ b/Marlin/src/pins/ramps/pins_PANOWIN_CUTLASS.h @@ -0,0 +1,133 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * Panowin V?.? as found in the Panowin F1 (MEGA2560) board pin assignments + * + * Ported from https://github.com/sambuls/MarlinOnTrinus + * Board photo https://imgur.com/a/xvol1Bo + */ + +#include "env_validate.h" + +#ifndef BOARD_NAME + #define BOARD_NAME "Panowin Cutlass" +#endif + +#ifndef DEFAULT_MACHINE_NAME + #define DEFAULT_MACHINE_NAME "Panowin F1" +#endif + +// +// Limit Switches +// +#define X_STOP_PIN 71 // G3 +#define Y_STOP_PIN 85 // H7 +#define Z_STOP_PIN 13 // B7 + +// +// Steppers +// +#define X_STEP_PIN 38 // D7 +#define X_DIR_PIN 83 +#define X_ENABLE_PIN 82 + +#define Y_STEP_PIN 37 +#define Y_DIR_PIN 40 +#define Y_ENABLE_PIN 41 + +#define Z_STEP_PIN 30 // C7 +#define Z_DIR_PIN 32 // C5 +#define Z_ENABLE_PIN 34 // C3 + +#define E0_STEP_PIN 42 +#define E0_DIR_PIN 43 +#define E0_ENABLE_PIN 44 + +// Microstepping mode pins +#define X_MS1_PIN 19 // D2 +#define X_MS2_PIN 18 // D3 +#define X_MS3_PIN 81 // D4 + +#define Y_MS1_PIN 19 // D2 +#define Y_MS2_PIN 18 // D3 +#define Y_MS3_PIN 81 // D4 + +#define Z_MS1_PIN 73 // J3 +#define Z_MS2_PIN 75 // J4 +#define Z_MS3_PIN 76 // J5 + +#define E0_MS1_PIN 46 // L3 +#define E0_MS2_PIN 47 // L2 +#define E0_MS3_PIN 45 // L4 + +// +// Temperature Sensors +// +#define TEMP_0_PIN 12 // Analog Input +#define TEMP_BED_PIN 14 // Analog Input + +// +// Heaters / Fans +// +#define HEATER_0_PIN 9 // H6 +#define HEATER_BED_PIN 8 +#define FAN0_PIN 62 // K0 +#define FAN_SOFT_PWM_REQUIRED + +// +// M3/M4/M5 - Spindle/Laser Control +// +#if HAS_CUTTER + #define SPINDLE_LASER_ENA_PIN 74 // J7 +#endif + +// +// Serial LCD +// +#if LCD_NEEDS_SERIAL_PORT && !defined(LCD_SERIAL_PORT) + #define LCD_SERIAL_PORT 2 // D16 H1 (TX2), D17 H0 (RX2) +#endif + +// +// SD Card +// +#define SD_DETECT_PIN 28 // A6 Onboard SD + +// +// Misc. Functions +// +#define BEEPER_PIN 24 // A2 + +// +// Onboard (bright!) RGB LED +// +#ifndef RGB_LED_R_PIN + #define RGB_LED_R_PIN 64 // K2 +#endif +#ifndef RGB_LED_G_PIN + #define RGB_LED_G_PIN 65 // K3 +#endif +#ifndef RGB_LED_B_PIN + #define RGB_LED_B_PIN 63 // K1 +#endif From 335ba32a0e71991402d3686162afc429130db4ec Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 20 Apr 2023 17:21:59 -0500 Subject: [PATCH 301/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20Core=20Kinematics?= =?UTF-8?q?=20BABYSTEP=5FXY?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.cpp | 38 +++++++++++++++++------------------ buildroot/tests/rambo | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 9728a90896..373d86970a 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -3627,7 +3627,7 @@ void Stepper::report_positions() { #if DISABLED(DELTA) - #define BABYSTEP_AXIS(AXIS, INV, DIR) do{ \ + #define BABYSTEP_AXIS(AXIS, DIR, INV) do{ \ const uint8_t old_dir = _READ_DIR(AXIS); \ _ENABLE_AXIS(AXIS); \ DIR_WAIT_BEFORE(); \ @@ -3646,12 +3646,12 @@ void Stepper::report_positions() { #if IS_CORE - #define BABYSTEP_CORE(A, B, INV, DIR, ALT) do{ \ + #define BABYSTEP_CORE(A, B, DIR, INV, ALT) do{ \ const xy_byte_t old_dir = { _READ_DIR(A), _READ_DIR(B) }; \ _ENABLE_AXIS(A); _ENABLE_AXIS(B); \ DIR_WAIT_BEFORE(); \ - _APPLY_DIR(A, INVERT_DIR(A, (DIR)^(INV)); \ - _APPLY_DIR(B, INVERT_DIR(B, (DIR)^(INV)^(ALT)); \ + _APPLY_DIR(A, INVERT_DIR(A, (DIR)^(INV))); \ + _APPLY_DIR(B, INVERT_DIR(B, (DIR)^(INV)^(ALT))); \ DIR_WAIT_AFTER(); \ _SAVE_START(); \ _APPLY_STEP(A, _STEP_STATE(A), true); \ @@ -3678,21 +3678,21 @@ void Stepper::report_positions() { case X_AXIS: #if CORE_IS_XY - BABYSTEP_CORE(X, Y, 0, direction, 0); + BABYSTEP_CORE(X, Y, direction, 0, 0); #elif CORE_IS_XZ - BABYSTEP_CORE(X, Z, 0, direction, 0); + BABYSTEP_CORE(X, Z, direction, 0, 0); #else - BABYSTEP_AXIS(X, 0, direction); + BABYSTEP_AXIS(X, direction, 0); #endif break; case Y_AXIS: #if CORE_IS_XY - BABYSTEP_CORE(X, Y, 1, !direction, (CORESIGN(1)>0)); + BABYSTEP_CORE(X, Y, !direction, 1, (CORESIGN(1)>0)); #elif CORE_IS_YZ - BABYSTEP_CORE(Y, Z, 0, direction, (CORESIGN(1)<0)); + BABYSTEP_CORE(Y, Z, direction, 0, (CORESIGN(1)<0)); #else - BABYSTEP_AXIS(Y, 0, direction); + BABYSTEP_AXIS(Y, direction, 0); #endif break; @@ -3701,11 +3701,11 @@ void Stepper::report_positions() { case Z_AXIS: { #if CORE_IS_XZ - BABYSTEP_CORE(X, Z, BABYSTEP_INVERT_Z, direction, (CORESIGN(1)<0)); + BABYSTEP_CORE(X, Z, direction, BABYSTEP_INVERT_Z, (CORESIGN(1)<0)); #elif CORE_IS_YZ - BABYSTEP_CORE(Y, Z, BABYSTEP_INVERT_Z, direction, (CORESIGN(1)<0)); + BABYSTEP_CORE(Y, Z, direction, BABYSTEP_INVERT_Z, (CORESIGN(1)<0)); #elif DISABLED(DELTA) - BABYSTEP_AXIS(Z, BABYSTEP_INVERT_Z, direction); + BABYSTEP_AXIS(Z, direction, BABYSTEP_INVERT_Z); #else // DELTA @@ -3781,22 +3781,22 @@ void Stepper::report_positions() { } break; #if HAS_I_AXIS - case I_AXIS: BABYSTEP_AXIS(I, 0, direction); break; + case I_AXIS: BABYSTEP_AXIS(I, direction, 0); break; #endif #if HAS_J_AXIS - case J_AXIS: BABYSTEP_AXIS(J, 0, direction); break; + case J_AXIS: BABYSTEP_AXIS(J, direction, 0); break; #endif #if HAS_K_AXIS - case K_AXIS: BABYSTEP_AXIS(K, 0, direction); break; + case K_AXIS: BABYSTEP_AXIS(K, direction, 0); break; #endif #if HAS_U_AXIS - case U_AXIS: BABYSTEP_AXIS(U, 0, direction); break; + case U_AXIS: BABYSTEP_AXIS(U, direction, 0); break; #endif #if HAS_V_AXIS - case V_AXIS: BABYSTEP_AXIS(V, 0, direction); break; + case V_AXIS: BABYSTEP_AXIS(V, direction, 0); break; #endif #if HAS_W_AXIS - case W_AXIS: BABYSTEP_AXIS(W, 0, direction); break; + case W_AXIS: BABYSTEP_AXIS(W, direction, 0); break; #endif default: break; diff --git a/buildroot/tests/rambo b/buildroot/tests/rambo index ca6aae471f..040773230a 100755 --- a/buildroot/tests/rambo +++ b/buildroot/tests/rambo @@ -116,7 +116,7 @@ opt_set MOTHERBOARD BOARD_RAMBO \ FAN_MIN_PWM 50 FAN_KICKSTART_TIME 100 \ XY_FREQUENCY_LIMIT 15 opt_enable COREYX USE_XMAX_PLUG MIXING_EXTRUDER GRADIENT_MIX \ - BABYSTEPPING BABYSTEP_DISPLAY_TOTAL FILAMENT_LCD_DISPLAY \ + BABYSTEPPING BABYSTEP_XY BABYSTEP_DISPLAY_TOTAL FILAMENT_LCD_DISPLAY \ REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER MENU_ADDAUTOSTART SDSUPPORT SDCARD_SORT_ALPHA \ ENDSTOP_NOISE_THRESHOLD FAN_SOFT_PWM \ FIX_MOUNTED_PROBE PROBING_ESTEPPERS_OFF PROBE_OFFSET_WIZARD \ From ded9ffa1e7cc154518fe94b5c7da4f4332eb8a27 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 20 Apr 2023 17:35:20 -0500 Subject: [PATCH 302/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20App?= =?UTF-8?q?ly=20INVERT=5FDIR=20to=20SET=5FSTEP=5FDIR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 373d86970a..045df05981 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -591,14 +591,14 @@ void Stepper::disable_all_steppers() { TERN_(EXTENSIBLE_UI, ExtUI::onSteppersDisabled()); } -#define SET_STEP_DIR(A) \ - if (motor_direction(_AXIS(A))) { \ - A##_APPLY_DIR(INVERT_##A##_DIR, false); \ - count_direction[_AXIS(A)] = -1; \ - } \ - else { \ - A##_APPLY_DIR(!INVERT_##A##_DIR, false); \ - count_direction[_AXIS(A)] = 1; \ +#define SET_STEP_DIR(A) \ + if (motor_direction(_AXIS(A))) { \ + A##_APPLY_DIR(INVERT_DIR(A, LOW), false); \ + count_direction[_AXIS(A)] = -1; \ + } \ + else { \ + A##_APPLY_DIR(INVERT_DIR(A, HIGH), false); \ + count_direction[_AXIS(A)] = 1; \ } /** From 98277f2c1cb1f8ec66938689f6728ea9f52143c8 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 21 Apr 2023 00:20:12 +0000 Subject: [PATCH 303/659] [cron] Bump distribution date (2023-04-21) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index c803516490..df1b974a81 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-20" +//#define STRING_DISTRIBUTION_DATE "2023-04-21" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index ed0440a7db..4e228d659f 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-20" + #define STRING_DISTRIBUTION_DATE "2023-04-21" #endif /** From 4233e4864f0c621612ce35a9b6ca882312e3aa4d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 22 Apr 2023 01:56:10 -0500 Subject: [PATCH 304/659] =?UTF-8?q?=F0=9F=9A=B8=20MarlinUI=20Endstop=20Tes?= =?UTF-8?q?t=20Screen,=20and=20more=20(#25667)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 3 + Marlin/src/gcode/calibrate/G425.cpp | 36 +- Marlin/src/gcode/calibrate/M425.cpp | 7 +- Marlin/src/inc/Conditionals_post.h | 51 +- Marlin/src/inc/SanityCheck.h | 108 +-- Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 35 +- Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp | 40 +- Marlin/src/lcd/dogm/marlinui_DOGM.cpp | 32 +- Marlin/src/lcd/e3v2/marlinui/ui_common.cpp | 36 +- Marlin/src/lcd/e3v2/proui/endstop_diag.cpp | 34 +- Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp | 88 +- Marlin/src/lcd/language/language_en.h | 3 + Marlin/src/lcd/menu/menu.h | 5 +- Marlin/src/lcd/menu/menu_configuration.cpp | 89 +- Marlin/src/lcd/menu/menu_info.cpp | 96 +- Marlin/src/lcd/menu/menu_item.h | 30 +- Marlin/src/lcd/tft/ui_common.cpp | 23 +- Marlin/src/module/endstops.h | 91 +- Marlin/src/module/motion.cpp | 29 +- Marlin/src/module/probe.cpp | 8 +- Marlin/src/pins/pins_postprocess.h | 884 +++++++++---------- buildroot/tests/STM32F103RE_creality | 15 +- 22 files changed, 952 insertions(+), 791 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 294cc44487..993e0d8dde 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1512,6 +1512,9 @@ // Insert a menu for preheating at the top level to allow for quick access //#define PREHEAT_SHORTCUT_MENU_ITEM + // Add Configuration > Debug Menu > Endstop Test for endstop/probe/runout testing + //#define LCD_ENDSTOP_TEST + #endif // HAS_MARLINUI_MENU #if HAS_DISPLAY diff --git a/Marlin/src/gcode/calibrate/G425.cpp b/Marlin/src/gcode/calibrate/G425.cpp index a22608f5b4..e3f8913125 100644 --- a/Marlin/src/gcode/calibrate/G425.cpp +++ b/Marlin/src/gcode/calibrate/G425.cpp @@ -271,10 +271,10 @@ inline void probe_side(measurements_t &m, const float uncertainty, const side_t #if AXIS_CAN_CALIBRATE(X) _ACASE(X, RIGHT, LEFT); #endif - #if HAS_Y_AXIS && AXIS_CAN_CALIBRATE(Y) + #if AXIS_CAN_CALIBRATE(Y) _ACASE(Y, BACK, FRONT); #endif - #if HAS_Z_AXIS && AXIS_CAN_CALIBRATE(Z) + #if AXIS_CAN_CALIBRATE(Z) case TOP: { const float measurement = measure(Z_AXIS, -1, true, &m.backlash[TOP], uncertainty); m.obj_center.z = measurement - dimensions.z / 2; @@ -282,22 +282,22 @@ inline void probe_side(measurements_t &m, const float uncertainty, const side_t return; } #endif - #if HAS_I_AXIS && AXIS_CAN_CALIBRATE(I) + #if AXIS_CAN_CALIBRATE(I) _PCASE(I); #endif - #if HAS_J_AXIS && AXIS_CAN_CALIBRATE(J) + #if AXIS_CAN_CALIBRATE(J) _PCASE(J); #endif - #if HAS_K_AXIS && AXIS_CAN_CALIBRATE(K) + #if AXIS_CAN_CALIBRATE(K) _PCASE(K); #endif - #if HAS_U_AXIS && AXIS_CAN_CALIBRATE(U) + #if AXIS_CAN_CALIBRATE(U) _PCASE(U); #endif - #if HAS_V_AXIS && AXIS_CAN_CALIBRATE(V) + #if AXIS_CAN_CALIBRATE(V) _PCASE(V); #endif - #if HAS_W_AXIS && AXIS_CAN_CALIBRATE(W) + #if AXIS_CAN_CALIBRATE(W) _PCASE(W); #endif default: return; @@ -395,7 +395,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) { #if ENABLED(CALIBRATION_REPORTING) inline void report_measured_faces(const measurements_t &m) { SERIAL_ECHOLNPGM("Sides:"); - #if HAS_Z_AXIS && AXIS_CAN_CALIBRATE(Z) + #if AXIS_CAN_CALIBRATE(Z) SERIAL_ECHOLNPGM(" Top: ", m.obj_side[TOP]); #endif #if ENABLED(CALIBRATION_MEASURE_LEFT) @@ -503,7 +503,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) { SERIAL_ECHOLNPGM(" Right: ", m.backlash[RIGHT]); #endif #endif - #if HAS_Y_AXIS && AXIS_CAN_CALIBRATE(Y) + #if AXIS_CAN_CALIBRATE(Y) #if ENABLED(CALIBRATION_MEASURE_FRONT) SERIAL_ECHOLNPGM(" Front: ", m.backlash[FRONT]); #endif @@ -511,10 +511,10 @@ inline void probe_sides(measurements_t &m, const float uncertainty) { SERIAL_ECHOLNPGM(" Back: ", m.backlash[BACK]); #endif #endif - #if HAS_Z_AXIS && AXIS_CAN_CALIBRATE(Z) + #if AXIS_CAN_CALIBRATE(Z) SERIAL_ECHOLNPGM(" Top: ", m.backlash[TOP]); #endif - #if HAS_I_AXIS && AXIS_CAN_CALIBRATE(I) + #if AXIS_CAN_CALIBRATE(I) #if ENABLED(CALIBRATION_MEASURE_IMIN) SERIAL_ECHOLNPGM(" " STR_I_MIN ": ", m.backlash[IMINIMUM]); #endif @@ -522,7 +522,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) { SERIAL_ECHOLNPGM(" " STR_I_MAX ": ", m.backlash[IMAXIMUM]); #endif #endif - #if HAS_J_AXIS && AXIS_CAN_CALIBRATE(J) + #if AXIS_CAN_CALIBRATE(J) #if ENABLED(CALIBRATION_MEASURE_JMIN) SERIAL_ECHOLNPGM(" " STR_J_MIN ": ", m.backlash[JMINIMUM]); #endif @@ -530,7 +530,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) { SERIAL_ECHOLNPGM(" " STR_J_MAX ": ", m.backlash[JMAXIMUM]); #endif #endif - #if HAS_K_AXIS && AXIS_CAN_CALIBRATE(K) + #if AXIS_CAN_CALIBRATE(K) #if ENABLED(CALIBRATION_MEASURE_KMIN) SERIAL_ECHOLNPGM(" " STR_K_MIN ": ", m.backlash[KMINIMUM]); #endif @@ -538,7 +538,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) { SERIAL_ECHOLNPGM(" " STR_K_MAX ": ", m.backlash[KMAXIMUM]); #endif #endif - #if HAS_U_AXIS && AXIS_CAN_CALIBRATE(U) + #if AXIS_CAN_CALIBRATE(U) #if ENABLED(CALIBRATION_MEASURE_UMIN) SERIAL_ECHOLNPGM(" " STR_U_MIN ": ", m.backlash[UMINIMUM]); #endif @@ -546,7 +546,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) { SERIAL_ECHOLNPGM(" " STR_U_MAX ": ", m.backlash[UMAXIMUM]); #endif #endif - #if HAS_V_AXIS && AXIS_CAN_CALIBRATE(V) + #if AXIS_CAN_CALIBRATE(V) #if ENABLED(CALIBRATION_MEASURE_VMIN) SERIAL_ECHOLNPGM(" " STR_V_MIN ": ", m.backlash[VMINIMUM]); #endif @@ -554,7 +554,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) { SERIAL_ECHOLNPGM(" " STR_V_MAX ": ", m.backlash[VMAXIMUM]); #endif #endif - #if HAS_W_AXIS && AXIS_CAN_CALIBRATE(W) + #if AXIS_CAN_CALIBRATE(W) #if ENABLED(CALIBRATION_MEASURE_WMIN) SERIAL_ECHOLNPGM(" " STR_W_MIN ": ", m.backlash[WMINIMUM]); #endif @@ -575,7 +575,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) { #if HAS_Y_CENTER && AXIS_CAN_CALIBRATE(Y) SERIAL_ECHOLNPGM_P(SP_Y_STR, m.pos_error.y); #endif - #if HAS_Z_AXIS && AXIS_CAN_CALIBRATE(Z) + #if AXIS_CAN_CALIBRATE(Z) SERIAL_ECHOLNPGM_P(SP_Z_STR, m.pos_error.z); #endif #if HAS_I_CENTER && AXIS_CAN_CALIBRATE(I) diff --git a/Marlin/src/gcode/calibrate/M425.cpp b/Marlin/src/gcode/calibrate/M425.cpp index a6c6ff9dae..0432b4c962 100644 --- a/Marlin/src/gcode/calibrate/M425.cpp +++ b/Marlin/src/gcode/calibrate/M425.cpp @@ -46,12 +46,13 @@ void GcodeSuite::M425() { bool noArgs = true; - auto axis_can_calibrate = [](const uint8_t a) { - #define _CAN_CASE(N) case N##_AXIS: return AXIS_CAN_CALIBRATE(N); + auto axis_can_calibrate = [](const uint8_t a) -> bool { + #define _CAN_CASE(N) case N##_AXIS: return bool(AXIS_CAN_CALIBRATE(N)); switch (a) { - default: return false; MAIN_AXIS_MAP(_CAN_CASE) + default: break; } + return false; }; LOOP_NUM_AXES(a) { diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 96b7313f29..eaf2d03cea 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -255,12 +255,14 @@ // Calibration codes only for non-core axes #if EITHER(BACKLASH_GCODE, CALIBRATION_GCODE) #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) - #define CAN_CALIBRATE(A,B) (_AXIS(A) == B) + #define CAN_CALIBRATE(A,B) TERN0(HAS_##A##_AXIS, (_AXIS(A) == B)) #else - #define CAN_CALIBRATE(A,B) true + #define CAN_CALIBRATE(A,B) ENABLED(HAS_##A##_AXIS) #endif + #define AXIS_CAN_CALIBRATE(A) CAN_CALIBRATE(A,NORMAL_AXIS) +#else + #define AXIS_CAN_CALIBRATE(A) false #endif -#define AXIS_CAN_CALIBRATE(A) CAN_CALIBRATE(A,NORMAL_AXIS) /** * No adjustable bed on non-cartesians @@ -2296,6 +2298,49 @@ #define HAS_Z4_MAX 1 #endif +#if HAS_X_MIN || HAS_X_MAX + #define HAS_X_ENDSTOP 1 +#endif +#if HAS_X2_MIN || HAS_X2_MAX + #define HAS_X2_ENDSTOP 1 +#endif +#if HAS_Y_MIN || HAS_Y_MAX + #define HAS_Y_ENDSTOP 1 +#endif +#if HAS_Y2_MIN || HAS_Y2_MAX + #define HAS_Y2_ENDSTOP 1 +#endif +#if HAS_Z_MIN || HAS_Z_MAX + #define HAS_Z_ENDSTOP 1 +#endif +#if HAS_Z2_MIN || HAS_Z2_MAX + #define HAS_Z2_ENDSTOP 1 +#endif +#if HAS_Z3_MIN || HAS_Z3_MAX + #define HAS_Z3_ENDSTOP 1 +#endif +#if HAS_Z4_MIN || HAS_Z4_MAX + #define HAS_Z4_ENDSTOP 1 +#endif +#if HAS_I_MIN || HAS_I_MAX + #define HAS_I_ENDSTOP 1 +#endif +#if HAS_J_MIN || HAS_J_MAX + #define HAS_J_ENDSTOP 1 +#endif +#if HAS_K_MIN || HAS_K_MAX + #define HAS_K_ENDSTOP 1 +#endif +#if HAS_U_MIN || HAS_U_MAX + #define HAS_U_ENDSTOP 1 +#endif +#if HAS_V_MIN || HAS_V_MAX + #define HAS_V_ENDSTOP 1 +#endif +#if HAS_W_MIN || HAS_W_MAX + #define HAS_W_ENDSTOP 1 +#endif + #if HAS_BED_PROBE && PIN_EXISTS(Z_MIN_PROBE) #define HAS_Z_MIN_PROBE_PIN 1 #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index f5d0c785eb..a7aec8e833 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -3618,41 +3618,41 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #if NONE(SPI_ENDSTOPS, ONBOARD_ENDSTOPPULLUPS, ENDSTOPPULLUPS) #if X_SENSORLESS && X_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_XMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_XMIN (or ENDSTOPPULLUPS) for X_MIN homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_XMIN (or ENDSTOPPULLUPS) for X MIN homing." #elif X_SENSORLESS && X_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_XMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_XMAX (or ENDSTOPPULLUPS) for X_MAX homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_XMAX (or ENDSTOPPULLUPS) for X MAX homing." #elif Y_SENSORLESS && Y_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_YMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_YMIN (or ENDSTOPPULLUPS) for Y_MIN homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_YMIN (or ENDSTOPPULLUPS) for Y MIN homing." #elif Y_SENSORLESS && Y_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_YMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_YMAX (or ENDSTOPPULLUPS) for Y_MAX homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_YMAX (or ENDSTOPPULLUPS) for Y MAX homing." #elif Z_SENSORLESS && Z_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_ZMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMIN (or ENDSTOPPULLUPS) for Z_MIN homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMIN (or ENDSTOPPULLUPS) for Z MIN homing." #elif Z_SENSORLESS && Z_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_ZMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMAX (or ENDSTOPPULLUPS) for Z_MAX homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMAX (or ENDSTOPPULLUPS) for Z MAX homing." #elif I_SENSORLESS && I_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_IMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMIN (or ENDSTOPPULLUPS) for I_MIN homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMIN (or ENDSTOPPULLUPS) for I MIN homing." #elif I_SENSORLESS && I_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_IMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMAX (or ENDSTOPPULLUPS) for I_MAX homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMAX (or ENDSTOPPULLUPS) for I MAX homing." #elif J_SENSORLESS && J_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_JMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMIN (or ENDSTOPPULLUPS) for J_MIN homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMIN (or ENDSTOPPULLUPS) for J MIN homing." #elif J_SENSORLESS && J_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_JMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMAX (or ENDSTOPPULLUPS) for J_MAX homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMAX (or ENDSTOPPULLUPS) for J MAX homing." #elif K_SENSORLESS && K_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_KMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMIN (or ENDSTOPPULLUPS) for K_MIN homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMIN (or ENDSTOPPULLUPS) for K MIN homing." #elif K_SENSORLESS && K_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_KMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMAX (or ENDSTOPPULLUPS) for K_MAX homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMAX (or ENDSTOPPULLUPS) for K MAX homing." #elif U_SENSORLESS && U_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_UMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_UMIN (or ENDSTOPPULLUPS) for U_MIN homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_UMIN (or ENDSTOPPULLUPS) for U MIN homing." #elif U_SENSORLESS && U_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_UMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_UMAX (or ENDSTOPPULLUPS) for U_MAX homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_UMAX (or ENDSTOPPULLUPS) for U MAX homing." #elif V_SENSORLESS && V_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_VMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_VMIN (or ENDSTOPPULLUPS) for V_MIN homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_VMIN (or ENDSTOPPULLUPS) for V MIN homing." #elif V_SENSORLESS && V_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_VMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_VMAX (or ENDSTOPPULLUPS) for V_MAX homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_VMAX (or ENDSTOPPULLUPS) for V MAX homing." #elif W_SENSORLESS && W_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_WMIN) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_WMIN (or ENDSTOPPULLUPS) for W_MIN homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_WMIN (or ENDSTOPPULLUPS) for W MIN homing." #elif W_SENSORLESS && W_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_WMAX) - #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_WMAX (or ENDSTOPPULLUPS) for W_MAX homing." + #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_WMAX (or ENDSTOPPULLUPS) for W MAX homing." #endif #endif @@ -3668,15 +3668,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(X,TMC2209) #if X_HOME_TO_MIN && X_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_HIT_STATE HIGH for X_MIN homing with TMC2209." + #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_HIT_STATE HIGH for X MIN homing with TMC2209." #else - #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_HIT_STATE LOW for X_MIN homing." + #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_HIT_STATE LOW for X MIN homing." #endif #elif X_HOME_TO_MAX && X_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_HIT_STATE HIGH for X_MAX homing with TMC2209." + #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_HIT_STATE HIGH for X MAX homing with TMC2209." #else - #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_HIT_STATE LOW for X_MAX homing." + #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_HIT_STATE LOW for X MAX homing." #endif #endif #undef _HIT_STATE @@ -3686,15 +3686,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(Y,TMC2209) #if Y_HOME_TO_MIN && Y_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_HIT_STATE HIGH for Y_MIN homing with TMC2209." + #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_HIT_STATE HIGH for Y MIN homing with TMC2209." #else - #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_HIT_STATE LOW for Y_MIN homing." + #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_HIT_STATE LOW for Y MIN homing." #endif #elif Y_HOME_TO_MAX && Y_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires Y_MAY_ENDSTOP_HIT_STATE HIGH for Y_MAX homing with TMC2209." + #error "SENSORLESS_HOMING requires Y_MAX_ENDSTOP_HIT_STATE HIGH for Y MAX homing with TMC2209." #else - #error "SENSORLESS_HOMING requires Y_MAY_ENDSTOP_HIT_STATE LOW for Y_MAX homing." + #error "SENSORLESS_HOMING requires Y_MAX_ENDSTOP_HIT_STATE LOW for Y MAX homing." #endif #endif #undef _HIT_STATE @@ -3704,15 +3704,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(Z,TMC2209) #if Z_HOME_TO_MIN && Z_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_HIT_STATE HIGH for Z_MIN homing with TMC2209." + #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_HIT_STATE HIGH for Z MIN homing with TMC2209." #else - #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_HIT_STATE LOW for Z_MIN homing." + #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_HIT_STATE LOW for Z MIN homing." #endif #elif Z_HOME_TO_MAX && Z_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires Z_MAZ_ENDSTOP_HIT_STATE HIGH for Z_MAX homing with TMC2209." + #error "SENSORLESS_HOMING requires Z_MAX_ENDSTOP_HIT_STATE HIGH for Z MAX homing with TMC2209." #else - #error "SENSORLESS_HOMING requires Z_MAZ_ENDSTOP_HIT_STATE LOW for Z_MAX homing." + #error "SENSORLESS_HOMING requires Z_MAX_ENDSTOP_HIT_STATE LOW for Z MAX homing." #endif #endif #undef _HIT_STATE @@ -3722,15 +3722,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(I,TMC2209) #if I_HOME_TO_MIN && I_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_HIT_STATE HIGH for I_MIN homing with TMC2209." + #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_HIT_STATE HIGH for I MIN homing with TMC2209." #else - #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_HIT_STATE LOW for I_MIN homing." + #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_HIT_STATE LOW for I MIN homing." #endif #elif I_HOME_TO_MAX && I_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires I_MAI_ENDSTOP_HIT_STATE HIGH for I_MAX homing with TMC2209." + #error "SENSORLESS_HOMING requires I_MAX_ENDSTOP_HIT_STATE HIGH for I MAX homing with TMC2209." #else - #error "SENSORLESS_HOMING requires I_MAI_ENDSTOP_HIT_STATE LOW for I_MAX homing." + #error "SENSORLESS_HOMING requires I_MAX_ENDSTOP_HIT_STATE LOW for I MAX homing." #endif #endif #undef _HIT_STATE @@ -3740,15 +3740,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(J,TMC2209) #if J_HOME_TO_MIN && J_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_HIT_STATE HIGH for J_MIN homing with TMC2209." + #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_HIT_STATE HIGH for J MIN homing with TMC2209." #else - #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_HIT_STATE LOW for J_MIN homing." + #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_HIT_STATE LOW for J MIN homing." #endif #elif J_HOME_TO_MAX && J_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires J_MAJ_ENDSTOP_HIT_STATE HIGH for J_MAX homing with TMC2209." + #error "SENSORLESS_HOMING requires J_MAX_ENDSTOP_HIT_STATE HIGH for J MAX homing with TMC2209." #else - #error "SENSORLESS_HOMING requires J_MAJ_ENDSTOP_HIT_STATE LOW for J_MAX homing." + #error "SENSORLESS_HOMING requires J_MAX_ENDSTOP_HIT_STATE LOW for J MAX homing." #endif #endif #undef _HIT_STATE @@ -3758,15 +3758,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(K,TMC2209) #if K_HOME_TO_MIN && K_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_HIT_STATE HIGH for K_MIN homing with TMC2209." + #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_HIT_STATE HIGH for K MIN homing with TMC2209." #else - #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_HIT_STATE LOW for K_MIN homing." + #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_HIT_STATE LOW for K MIN homing." #endif #elif K_HOME_TO_MAX && K_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires K_MAK_ENDSTOP_HIT_STATE HIGH for K_MAX homing with TMC2209." + #error "SENSORLESS_HOMING requires K_MAX_ENDSTOP_HIT_STATE HIGH for K MAX homing with TMC2209." #else - #error "SENSORLESS_HOMING requires K_MAK_ENDSTOP_HIT_STATE LOW for K_MAX homing." + #error "SENSORLESS_HOMING requires K_MAX_ENDSTOP_HIT_STATE LOW for K MAX homing." #endif #endif #undef _HIT_STATE @@ -3776,15 +3776,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(U,TMC2209) #if U_HOME_TO_MIN && U_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_HIT_STATE HIGH for U_MIN homing with TMC2209." + #error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_HIT_STATE HIGH for U MIN homing with TMC2209." #else - #error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_HIT_STATE LOW for U_MIN homing." + #error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_HIT_STATE LOW for U MIN homing." #endif #elif U_HOME_TO_MAX && U_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires U_MAU_ENDSTOP_HIT_STATE HIGH for U_MAX homing with TMC2209." + #error "SENSORLESS_HOMING requires U_MAX_ENDSTOP_HIT_STATE HIGH for U MAX homing with TMC2209." #else - #error "SENSORLESS_HOMING requires U_MAU_ENDSTOP_HIT_STATE LOW for U_MAX homing." + #error "SENSORLESS_HOMING requires U_MAX_ENDSTOP_HIT_STATE LOW for U MAX homing." #endif #endif #undef _HIT_STATE @@ -3794,15 +3794,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(V,TMC2209) #if V_HOME_TO_MIN && V_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_HIT_STATE HIGH for V_MIN homing with TMC2209." + #error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_HIT_STATE HIGH for V MIN homing with TMC2209." #else - #error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_HIT_STATE LOW for V_MIN homing." + #error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_HIT_STATE LOW for V MIN homing." #endif #elif V_HOME_TO_MAX && V_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires V_MAV_ENDSTOP_HIT_STATE HIGH for V_MAX homing with TMC2209." + #error "SENSORLESS_HOMING requires V_MAX_ENDSTOP_HIT_STATE HIGH for V MAX homing with TMC2209." #else - #error "SENSORLESS_HOMING requires V_MAV_ENDSTOP_HIT_STATE LOW for V_MAX homing." + #error "SENSORLESS_HOMING requires V_MAX_ENDSTOP_HIT_STATE LOW for V MAX homing." #endif #endif #undef _HIT_STATE @@ -3812,15 +3812,15 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #define _HIT_STATE AXIS_DRIVER_TYPE(W,TMC2209) #if W_HOME_TO_MIN && W_MIN_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_HIT_STATE HIGH for W_MIN homing with TMC2209." + #error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_HIT_STATE HIGH for W MIN homing with TMC2209." #else - #error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_HIT_STATE LOW for W_MIN homing." + #error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_HIT_STATE LOW for W MIN homing." #endif #elif W_HOME_TO_MAX && W_MAX_ENDSTOP_HIT_STATE != _HIT_STATE #if _HIT_STATE - #error "SENSORLESS_HOMING requires W_MAW_ENDSTOP_HIT_STATE HIGH for W_MAX homing with TMC2209." + #error "SENSORLESS_HOMING requires W_MAX_ENDSTOP_HIT_STATE HIGH for W MAX homing with TMC2209." #else - #error "SENSORLESS_HOMING requires W_MAW_ENDSTOP_HIT_STATE LOW for W_MAX homing." + #error "SENSORLESS_HOMING requires W_MAX_ENDSTOP_HIT_STATE LOW for W MAX homing." #endif #endif #undef _HIT_STATE diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index e4c0317d12..8a5e5c5ad9 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -1137,17 +1137,38 @@ void MarlinUI::draw_status_screen() { #endif // ADVANCED_PAUSE_FEATURE // Draw a static item with no left-right margin required. Centered by default. - void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t style/*=SS_DEFAULT*/, const char * const vstr/*=nullptr*/) { - int8_t n = LCD_WIDTH; + void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t style/*=SS_DEFAULT*/, const char *vstr/*=nullptr*/) { lcd_moveto(0, row); + + int8_t n = LCD_WIDTH; + const bool center = bool(style & SS_CENTER), full = bool(style & SS_FULL); const int8_t plen = fstr ? utf8_strlen(fstr) : 0, vlen = vstr ? utf8_strlen(vstr) : 0; - if (style & SS_CENTER) { - int8_t pad = (LCD_WIDTH - plen - vlen) / 2; - while (--pad >= 0) { lcd_put_u8str(F(" ")); n--; } + int8_t pad = (center || full) ? n - plen - vlen : 0; + + // SS_CENTER: Pad with half of the unused space first + if (center) for (int8_t lpad = pad / 2; lpad > 0; --lpad) { lcd_put_u8str(F(" ")); n--; } + + // Draw as much of the label as fits + if (plen) { + const int8_t expl = n; + n = lcd_put_u8str(fstr, itemIndex, itemStringC, itemStringF, n); + pad -= (expl - n - plen); // Reduce the padding } - if (plen) n = lcd_put_u8str(fstr, itemIndex, itemStringC, itemStringF, n); - if (vlen) n -= lcd_put_u8str_max(vstr, n); + + if (vlen && n > 0) { + // SS_FULL: Pad with enough space to justify the value + if (full && !center) { + // Move the leading colon from the value to the label + if (*vstr == ':') { n -= lcd_put_u8str(F(":")); vstr++; } + // Move spaces to the padding + while (*vstr == ' ') { vstr++; pad++; } + // Pad in-between + for (; pad > 0; --pad) { lcd_put_u8str(F(" ")); n--; } + } + n -= lcd_put_u8str_max(vstr, n); + } + for (; n > 0; --n) lcd_put_u8str(F(" ")); } diff --git a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp index e4f9e4eafc..fc568c55db 100644 --- a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp +++ b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp @@ -962,17 +962,41 @@ void MarlinUI::draw_status_screen() { #endif // Draw a static item with no left-right margin required. Centered by default. - void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t style/*=SS_DEFAULT*/, const char * const valstr/*=nullptr*/) { + void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t style/*=SS_DEFAULT*/, const char *vstr/*=nullptr*/) { if (!PanelDetected) return; - uint8_t n = LCD_WIDTH; lcd_moveto(0, row); - if ((style & SS_CENTER) && !valstr) { - int8_t pad = (LCD_WIDTH - utf8_strlen(fstr)) / 2; - while (--pad >= 0) { lcd.write(' '); n--; } + + uint8_t n = LCD_WIDTH; + const bool center = bool(style & SS_CENTER), full = bool(style & SS_FULL); + const int8_t plen = fstr ? utf8_strlen(fstr) : 0, + vlen = vstr ? utf8_strlen(vstr) : 0; + int8_t pad = (center || full) ? n - plen - vlen : 0; + + // SS_CENTER: Pad with half of the unused space first + if (center) for (int8_t lpad = pad / 2; lpad > 0; --lpad) { lcd.write(' '); n--; } + + // Draw as much of the label as fits + if (plen) { + const int8_t expl = n; + n = lcd_put_u8str(fstr, itemIndex, itemStringC, itemStringF, n); + pad -= (expl - n - plen); // Reduce the padding } - n = lcd_put_u8str(fstr, itemIndex, itemStringC, itemStringF, n); - if (valstr) n -= lcd_put_u8str_max(valstr, n); - for (; n; --n) lcd.write(' '); + + if (vlen && n > 0) { + // SS_FULL: Pad with enough space to justify the value + if (full && !center) { + // Move the leading colon from the value to the label + if (*vstr == ':') { lcd.write(':'); vstr++; n--; } + // Move spaces to the padding + while (*vstr == ' ') { vstr++; pad++; } + // Pad in-between + for (; pad > 0; --pad) { lcd.write(' '); n--; } + } + n -= lcd_put_u8str_max(vstr, n); + } + + for (; n > 0; --n) lcd.write(' '); + lcd.print_line(); } diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp index aa32fd403f..ce9a31668a 100644 --- a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp +++ b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp @@ -411,20 +411,38 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop } // Draw a static line of text in the same idiom as a menu item - void MenuItem_static::draw(const uint8_t row, FSTR_P const ftpl, const uint8_t style/*=SS_DEFAULT*/, const char * const vstr/*=nullptr*/) { + void MenuItem_static::draw(const uint8_t row, FSTR_P const ftpl, const uint8_t style/*=SS_DEFAULT*/, const char *vstr/*=nullptr*/) { if (mark_as_selected(row, style & SS_INVERT)) { pixel_len_t n = LCD_PIXEL_WIDTH; // pixel width of string allowed - const int plen = ftpl ? calculateWidth(ftpl) : 0, + const bool center = bool(style & SS_CENTER), full = bool(style & SS_FULL); + const int pwide = ftpl ? calculateWidth(ftpl) : 0, vlen = vstr ? utf8_strlen(vstr) : 0; - if (style & SS_CENTER) { - int pad = (LCD_PIXEL_WIDTH - plen - vlen * MENU_FONT_WIDTH) / MENU_FONT_WIDTH / 2; - while (--pad >= 0) n -= lcd_put_u8str(F(" ")); + int pad = (center || full) ? ((LCD_PIXEL_WIDTH) - pwide - vlen * (MENU_FONT_WIDTH)) / (MENU_FONT_WIDTH) : 0; + + // SS_CENTER: Pad with half of the unused space first + if (center) for (int lpad = pad / 2; lpad > 0; --lpad) n -= lcd_put_u8str(F(" ")); + + // Draw as much of the label as fits + if (pwide) { + const pixel_len_t expw = n; + n = lcd_put_u8str(ftpl, itemIndex, itemStringC, itemStringF, n / (MENU_FONT_WIDTH)) * (MENU_FONT_WIDTH); + pad -= (expw - n - pwide) / (MENU_FONT_WIDTH); // Reduce the padding } - if (plen) n = lcd_put_u8str(ftpl, itemIndex, itemStringC, itemStringF, n / (MENU_FONT_WIDTH)) * (MENU_FONT_WIDTH); - if (vlen) n -= lcd_put_u8str_max(vstr, n); + if (vlen) { + // SS_FULL: Pad with enough space to justify the value + if (full && !center && n > MENU_FONT_WIDTH) { + // Move the leading colon from the value to the label + if (*vstr == ':') { n -= lcd_put_u8str(F(":")); vstr++; } + // Move spaces to the padding + while (*vstr == ' ') { vstr++; pad++; } + // Pad in-between + for (; pad > 0; --pad) n -= lcd_put_u8str(F(" ")); + } + n -= lcd_put_u8str_max(vstr, n); + } while (n > MENU_FONT_WIDTH) n -= lcd_put_u8str(F(" ")); } } diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp index 778bed6335..c267d32048 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp @@ -311,7 +311,7 @@ void MarlinUI::draw_status_message(const bool blink) { // Draw a static line of text in the same idiom as a menu item - void MenuItem_static::draw(const uint8_t row, FSTR_P const ftpl, const uint8_t style/*=SS_DEFAULT*/, const char * const vstr/*=nullptr*/) { + void MenuItem_static::draw(const uint8_t row, FSTR_P const ftpl, const uint8_t style/*=SS_DEFAULT*/, const char *vstr/*=nullptr*/) { // Call mark_as_selected to draw a bigger selection box // and draw the text without a background if (mark_as_selected(row, (bool)(style & SS_INVERT), true)) { @@ -320,20 +320,38 @@ void MarlinUI::draw_status_message(const bool blink) { dwin_font.fg = Color_White; dwin_string.set(); + + const bool center = bool(style & SS_CENTER), full = bool(style & SS_FULL); const int8_t plen = ftpl ? utf8_strlen(ftpl) : 0, vlen = vstr ? utf8_strlen(vstr) : 0; - if (style & SS_CENTER) { - int8_t pad = (LCD_WIDTH - 1 - plen - vlen) / 2; - while (--pad) dwin_string.add(' '); + int8_t pad = (center || full) ? (LCD_WIDTH) - 1 - plen - vlen : 0; + + // SS_CENTER: Pad with half of the unused space first + if (center) for (int8_t lpad = pad / 2; lpad > 0; --lpad) dwin_string.add(' '); + + // Append the templated label string + if (plen) { + dwin_string.add(ftpl, itemIndex, itemStringC, itemStringF); + pad -= dwin_string.length - plen; } - if (plen) dwin_string.add(ftpl, itemIndex, itemStringC, itemStringF); - if (vlen) dwin_string.add(vstr); - if (style & SS_CENTER) { - int8_t pad = (LCD_WIDTH - 1 - plen - vlen) / 2; - while (--pad) dwin_string.add(' '); + // SS_FULL: Pad with enough space to justify the value + if (vlen) { + if (full && !center) { + // Move the leading colon from the value to the label + if (*vstr == ':') { dwin_string.add(':'); vstr++; } + // Move spaces to the padding + while (*vstr == ' ') { vstr++; pad++; } + // Pad in-between + for (; pad > 0; --pad) dwin_string.add(' '); + } + // Append the value + dwin_string.add(vstr); } + // SS_CENTER: Pad the rest of the string + if (center) for (int8_t rpad = pad - (pad / 2); rpad > 0; --rpad) dwin_string.add(' '); + lcd_moveto(1, row); lcd_put_dwin_string(); } diff --git a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp index c3edba53df..96ee732678 100644 --- a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp +++ b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp @@ -66,42 +66,26 @@ void draw_es_state(const bool is_hit) { } void ESDiagClass::Draw() { - Title.ShowCaption(F("End-stops Diagnostic")); + Title.ShowCaption(GET_TEXT_F(MSG_ENDSTOP_TEST)); DWINUI::ClearMainArea(); Draw_Popup_Bkgd(); DWINUI::Draw_Button(BTN_Continue, 86, 250); DWINUI::cursor.y = 80; #define ES_LABEL(S) draw_es_label(F(STR_##S)) - #if HAS_X_MIN - ES_LABEL(X_MIN); - #endif - #if HAS_Y_MIN - ES_LABEL(Y_MIN); - #endif - #if HAS_Z_MIN - ES_LABEL(Z_MIN); - #endif - #if HAS_FILAMENT_SENSOR - draw_es_label(F(STR_FILAMENT)); - #endif + TERN_(HAS_X_MIN, ES_LABEL(X_MIN)); TERN_(HAS_X_MAX, ES_LABEL(X_MAX)); + TERN_(HAS_Y_MIN, ES_LABEL(Y_MIN)); TERN_(HAS_Y_MAX, ES_LABEL(Y_MAX)); + TERN_(HAS_Z_MIN, ES_LABEL(Z_MIN)); TERN_(HAS_Z_MAX, ES_LABEL(Z_MAX)); + TERN_(HAS_FILAMENT_SENSOR, draw_es_label(F(STR_FILAMENT))); Update(); } void ESDiagClass::Update() { DWINUI::cursor.y = 80; #define ES_REPORT(S) draw_es_state(READ(S##_PIN) == S##_ENDSTOP_HIT_STATE) - #if HAS_X_MIN - ES_REPORT(X_MIN); - #endif - #if HAS_Y_MIN - ES_REPORT(Y_MIN); - #endif - #if HAS_Z_MIN - ES_REPORT(Z_MIN); - #endif - #if HAS_FILAMENT_SENSOR - draw_es_state(READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE); - #endif + TERN_(HAS_X_MIN, ES_REPORT(X_MIN)); TERN_(HAS_X_MAX, ES_REPORT(X_MAX)); + TERN_(HAS_Y_MIN, ES_REPORT(Y_MIN)); TERN_(HAS_Y_MAX, ES_REPORT(Y_MAX)); + TERN_(HAS_Z_MIN, ES_REPORT(Z_MIN)); TERN_(HAS_Z_MAX, ES_REPORT(Z_MAX)); + TERN_(HAS_FILAMENT_SENSOR, draw_es_state(READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE)); DWIN_UpdateLCD(); } diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp index d1679d402f..24e177df39 100644 --- a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp +++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp @@ -45,32 +45,32 @@ #if PIN_EXISTS(MT_DET_2) bool mt_det2_sta; #endif - #if X_HOME_DIR + #if HAS_X_ENDSTOP bool endstopx1_sta; #else constexpr static bool endstopx1_sta = true; #endif - #if HAS_X2_MIN || HAS_X2_MAX + #if HAS_X2_ENDSTOP bool endstopx2_sta; #else constexpr static bool endstopx2_sta = true; #endif - #if HAS_Y_AXIS && Y_HOME_DIR + #if HAS_Y_ENDSTOP bool endstopy1_sta; #else constexpr static bool endstopy1_sta = true; #endif - #if HAS_Y2_MIN || HAS_Y2_MAX + #if HAS_Y2_ENDSTOP bool endstopy2_sta; #else constexpr static bool endstopy2_sta = true; #endif - #if HAS_Z_AXIS && Z_HOME_DIR + #if HAS_Z_ENDSTOP bool endstopz1_sta; #else constexpr static bool endstopz1_sta = true; #endif - #if HAS_Z2_MIN || HAS_Z2_MAX + #if HAS_Z2_ENDSTOP bool endstopz2_sta; #else constexpr static bool endstopz2_sta = true; @@ -87,36 +87,12 @@ #if PIN_EXISTS(MT_DET_2) mt_det2_sta = (READ(MT_DET_2_PIN) == LOW); #endif - #if HAS_X_MIN - endstopx1_sta = ESTATE(X_MIN); - #elif HAS_X_MAX - endstopx1_sta = ESTATE(X_MAX); - #endif - #if HAS_X2_MIN - endstopx2_sta = ESTATE(X2_MIN); - #elif HAS_X2_MAX - endstopx2_sta = ESTATE(X2_MAX); - #endif - #if HAS_Y_MIN - endstopy1_sta = ESTATE(Y_MIN); - #elif HAS_Y_MAX - endstopy1_sta = ESTATE(Y_MAX); - #endif - #if HAS_Y2_MIN - endstopy2_sta = ESTATE(Y2_MIN); - #elif HAS_Y2_MAX - endstopy2_sta = ESTATE(Y2_MAX); - #endif - #if HAS_Z_MIN - endstopz1_sta = ESTATE(Z_MIN); - #elif HAS_Z_MAX - endstopz1_sta = ESTATE(Z_MAX); - #endif - #if HAS_Z2_MIN - endstopz2_sta = ESTATE(Z2_MIN); - #elif HAS_Z2_MAX - endstopz2_sta = ESTATE(Z2_MAX); - #endif + TERN_(HAS_X_ENDSTOP, endstopx1_sta = ESTATE(TERN(HAS_X_MIN, X_MIN, X_MAX))); + TERN_(HAS_X2_ENDSTOP, endstopx2_sta = ESTATE(TERN(HAS_X2_MIN, X2_MIN, X2_MAX))); + TERN_(HAS_Y_ENDSTOP, endstopy1_sta = ESTATE(TERN(HAS_Y_MIN, Y_MIN, Y_MAX))); + TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = ESTATE(TERN(HAS_Y2_MIN, Y2_MIN, Y2_MAX))); + TERN_(HAS_Z_ENDSTOP, endstopz1_sta = ESTATE(TERN(HAS_Z_MIN, Z_MIN, Z_MAX))); + TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = ESTATE(TERN(HAS_Z2_MIN, Z2_MIN, Z2_MAX))); } void test_gpio_readlevel_H() { @@ -128,36 +104,12 @@ #if PIN_EXISTS(MT_DET_2) mt_det2_sta = (READ(MT_DET_2_PIN) == HIGH); #endif - #if HAS_X_MIN - endstopx1_sta = !ESTATE(X_MIN); - #elif HAS_X_MAX - endstopx1_sta = !ESTATE(X_MAX); - #endif - #if HAS_X2_MIN - endstopx2_sta = !ESTATE(X2_MIN); - #elif HAS_X2_MAX - endstopx2_sta = !ESTATE(X2_MAX); - #endif - #if HAS_Y_MIN - endstopy1_sta = !ESTATE(Y_MIN); - #elif HAS_Y_MAX - endstopy1_sta = !ESTATE(Y_MAX); - #endif - #if HAS_Y2_MIN - endstopy2_sta = !ESTATE(Y2_MIN); - #elif HAS_Y2_MAX - endstopy2_sta = !ESTATE(Y2_MAX); - #endif - #if HAS_Z_MIN - endstopz1_sta = !ESTATE(Z_MIN); - #elif HAS_Z_MAX - endstopz1_sta = !ESTATE(Z_MAX); - #endif - #if HAS_Z2_MIN - endstopz2_sta = !ESTATE(Z2_MIN); - #elif HAS_Z2_MAX - endstopz2_sta = !ESTATE(Z2_MAX); - #endif + TERN_(HAS_X_ENDSTOP, endstopx1_sta = !ESTATE(TERN(HAS_X_MIN, X_MIN, X_MAX))); + TERN_(HAS_X2_ENDSTOP, endstopx2_sta = !ESTATE(TERN(HAS_X2_MIN, X2_MIN, X2_MAX))); + TERN_(HAS_Y_ENDSTOP, endstopy1_sta = !ESTATE(TERN(HAS_Y_MIN, Y_MIN, Y_MAX))); + TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = !ESTATE(TERN(HAS_Y2_MIN, Y2_MIN, Y2_MAX))); + TERN_(HAS_Z_ENDSTOP, endstopz1_sta = !ESTATE(TERN(HAS_Z_MIN, Z_MIN, Z_MAX))); + TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = !ESTATE(TERN(HAS_Z2_MIN, Z2_MIN, Z2_MAX))); } #include "../../../libs/buzzer.h" @@ -178,7 +130,9 @@ SET_INPUT_PULLUP(MKS_TEST_PS_ON_PIN); SET_INPUT_PULLUP(SERVO0_PIN); - OUT_WRITE(X_ENABLE_PIN, LOW); + #if HAS_X_AXIS + OUT_WRITE(X_ENABLE_PIN, LOW); + #endif #if HAS_Y_AXIS OUT_WRITE(Y_ENABLE_PIN, LOW); #endif diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 244d61a712..9a64587f15 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -76,6 +76,8 @@ namespace Language_en { LSTR MSG_DISABLE_STEPPERS = _UxGT("Disable Steppers"); LSTR MSG_DEBUG_MENU = _UxGT("Debug Menu"); LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Progress Bar Test"); + LSTR MSG_ENDSTOP_TEST = _UxGT("Endstop Test"); + LSTR MSG_Z_PROBE = _UxGT("Z Probe"); LSTR MSG_HOMING = _UxGT("Homing"); LSTR MSG_AUTO_HOME = _UxGT("Auto Home"); LSTR MSG_AUTO_HOME_A = _UxGT("Home @"); @@ -430,6 +432,7 @@ namespace Language_en { LSTR MSG_TEMPERATURE = _UxGT("Temperature"); LSTR MSG_MOTION = _UxGT("Motion"); LSTR MSG_FILAMENT = _UxGT("Filament"); + LSTR MSG_FILAMENT_EN = _UxGT("Filament *"); LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit in mm") SUPERSCRIPT_THREE; LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *"); diff --git a/Marlin/src/lcd/menu/menu.h b/Marlin/src/lcd/menu/menu.h index 9b9c678868..06d9c846cc 100644 --- a/Marlin/src/lcd/menu/menu.h +++ b/Marlin/src/lcd/menu/menu.h @@ -35,7 +35,8 @@ typedef void (*selectFunc_t)(); #define SS_LEFT 0x00 #define SS_CENTER 0x01 -#define SS_INVERT 0x02 +#define SS_FULL 0x02 +#define SS_INVERT 0x04 #define SS_DEFAULT SS_CENTER #if ENABLED(BABYSTEP_ZPROBE_OFFSET) && Z_PROBE_OFFSET_RANGE_MIN >= -9 && Z_PROBE_OFFSET_RANGE_MAX <= 9 @@ -75,7 +76,7 @@ class MenuItemBase { // STATIC_ITEM(LABEL,...) class MenuItem_static : public MenuItemBase { public: - static void draw(const uint8_t row, FSTR_P const fstr, const uint8_t style=SS_DEFAULT, const char * const vstr=nullptr); + static void draw(const uint8_t row, FSTR_P const fstr, const uint8_t style=SS_DEFAULT, const char *vstr=nullptr); }; // BACK_ITEM(LABEL) diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index 3ff4b2e562..2fe4b77018 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -32,6 +32,10 @@ #include "../../MarlinCore.h" +#if ENABLED(LCD_ENDSTOP_TEST) + #include "../../module/endstops.h" +#endif + #if HAS_FILAMENT_SENSOR #include "../../feature/runout.h" #endif @@ -57,7 +61,7 @@ #include "../../core/debug_out.h" -#define HAS_DEBUG_MENU ENABLED(LCD_PROGRESS_BAR_TEST) +#define HAS_DEBUG_MENU EITHER(LCD_PROGRESS_BAR_TEST, LCD_ENDSTOP_TEST) void menu_advanced_settings(); #if EITHER(DELTA_CALIBRATION_MENU, DELTA_AUTO_CALIBRATION) @@ -90,6 +94,83 @@ void menu_advanced_settings(); #endif // LCD_PROGRESS_BAR_TEST +#if ENABLED(LCD_ENDSTOP_TEST) + + #include "../lcdprint.h" + + #define __STOP_ITEM(F,S) PSTRING_ITEM_F_P(F, TEST(stops, S) ? PSTR(STR_ENDSTOP_HIT) : PSTR(STR_ENDSTOP_OPEN), SS_FULL) + #define _STOP_ITEM(L,S) __STOP_ITEM(F(L), S) + #define STOP_ITEM(A,I) _STOP_ITEM(STRINGIFY(A) STRINGIFY(I) " " TERN(A##_HOME_TO_MAX, "Max", "Min"), A##I##_ENDSTOP) + #define FIL_ITEM(N) PSTRING_ITEM_N_P(N-1, MSG_FILAMENT_EN, (READ(FIL_RUNOUT##N##_PIN) != FIL_RUNOUT##N##_STATE) ? PSTR("PRESENT") : PSTR("out"), SS_FULL); + + static void endstop_test() { + if (ui.use_click()) { + ui.goto_previous_screen(); + //endstops.enable_globally(false); + return; + } + TemporaryGlobalEndstopsState temp(true); + ui.defer_status_screen(true); + const Endstops::endstop_mask_t stops = endstops.state(); + + START_SCREEN(); + STATIC_ITEM_F(GET_TEXT_F(MSG_ENDSTOP_TEST), SS_DEFAULT|SS_INVERT); + + #if HAS_X_ENDSTOP + STOP_ITEM(X,); + #if ENABLED(X_DUAL_ENDSTOPS) + STOP_ITEM(X,2); + #endif + #endif + #if HAS_Y_ENDSTOP + STOP_ITEM(Y,); + #if ENABLED(Y_DUAL_ENDSTOPS) + STOP_ITEM(Y,2); + #endif + #endif + #if HAS_Z_ENDSTOP + STOP_ITEM(Z,); + #if ENABLED(Z_MULTI_ENDSTOPS) + STOP_ITEM(Z,2); + #if NUM_Z_STEPPERS >= 3 + STOP_ITEM(Z,3); + #if NUM_Z_STEPPERS >= 4 + STOP_ITEM(Z,4); + #endif + #endif + #endif + #endif + #if HAS_I_ENDSTOP + STOP_ITEM(I,); + #endif + #if HAS_J_ENDSTOP + STOP_ITEM(J,); + #endif + #if HAS_K_ENDSTOP + STOP_ITEM(K,); + #endif + #if HAS_U_ENDSTOP + STOP_ITEM(U,); + #endif + #if HAS_V_ENDSTOP + STOP_ITEM(V,); + #endif + #if HAS_W_ENDSTOP + STOP_ITEM(W,); + #endif + #if HAS_BED_PROBE && !HAS_DELTA_SENSORLESS_PROBING + __STOP_ITEM(GET_TEXT_F(MSG_Z_PROBE), Z_MIN_PROBE); + #endif + #if ENABLED(FILAMENT_RUNOUT_SENSOR) + REPEAT_1(NUM_RUNOUT_SENSORS, FIL_ITEM) + #endif + + END_SCREEN(); + ui.refresh(LCDVIEW_CALL_REDRAW_NEXT); + } + +#endif // LCD_ENDSTOP_TEST + #if HAS_DEBUG_MENU void menu_debug() { @@ -101,6 +182,10 @@ void menu_advanced_settings(); SUBMENU(MSG_PROGRESS_BAR_TEST, _progress_bar_test); #endif + #if ENABLED(LCD_ENDSTOP_TEST) + SUBMENU(MSG_ENDSTOP_TEST, endstop_test); + #endif + END_MENU(); } @@ -161,7 +246,7 @@ void menu_advanced_settings(); } #endif -#endif +#endif // HAS_MULTI_EXTRUDER #if HAS_HOTEND_OFFSET #include "../../module/motion.h" diff --git a/Marlin/src/lcd/menu/menu_info.cpp b/Marlin/src/lcd/menu/menu_info.cpp index abca4a7d15..e2dd6c6475 100644 --- a/Marlin/src/lcd/menu/menu_info.cpp +++ b/Marlin/src/lcd/menu/menu_info.cpp @@ -51,40 +51,40 @@ char buffer[21]; - START_SCREEN(); // 12345678901234567890 - VALUE_ITEM(MSG_INFO_PRINT_COUNT, i16tostr3left(stats.totalPrints), SS_LEFT); // Print Count: 999 - VALUE_ITEM(MSG_INFO_COMPLETED_PRINTS, i16tostr3left(stats.finishedPrints), SS_LEFT); // Completed : 666 + START_SCREEN(); // 12345678901234567890 + VALUE_ITEM(MSG_INFO_PRINT_COUNT, i16tostr3left(stats.totalPrints), SS_FULL); // Print Count: 999 + VALUE_ITEM(MSG_INFO_COMPLETED_PRINTS, i16tostr3left(stats.finishedPrints), SS_FULL); // Completed : 666 - STATIC_ITEM(MSG_INFO_PRINT_TIME, SS_LEFT); // Total print Time: - STATIC_ITEM_F(F("> "), SS_LEFT, duration_t(stats.printTime).toString(buffer)); // > 99y 364d 23h 59m 59s + STATIC_ITEM(MSG_INFO_PRINT_TIME, SS_FULL); // Total print Time: + STATIC_ITEM_F(nullptr, SS_FULL, duration_t(stats.printTime).toString(buffer)); // > 99y 364d 23h 59m 59s - STATIC_ITEM(MSG_INFO_PRINT_LONGEST, SS_LEFT); // Longest job time: - STATIC_ITEM_F(F("> "), SS_LEFT, duration_t(stats.longestPrint).toString(buffer)); // > 99y 364d 23h 59m 59s + STATIC_ITEM(MSG_INFO_PRINT_LONGEST, SS_FULL); // Longest job time: + STATIC_ITEM_F(nullptr, SS_FULL, duration_t(stats.longestPrint).toString(buffer)); // > 99y 364d 23h 59m 59s - STATIC_ITEM(MSG_INFO_PRINT_FILAMENT, SS_LEFT); // Extruded total: + STATIC_ITEM(MSG_INFO_PRINT_FILAMENT, SS_FULL); // Extruded total: sprintf_P(buffer, PSTR("%ld.%im") , long(stats.filamentUsed / 1000) , int16_t(stats.filamentUsed / 100) % 10 ); - STATIC_ITEM_F(F("> "), SS_LEFT, buffer); // > 125m + STATIC_ITEM_F(nullptr, SS_FULL, buffer); // > 125m #if SERVICE_INTERVAL_1 > 0 || SERVICE_INTERVAL_2 > 0 || SERVICE_INTERVAL_3 > 0 strcpy_P(buffer, GET_TEXT(MSG_SERVICE_IN)); #endif #if SERVICE_INTERVAL_1 > 0 - STATIC_ITEM_F(F(SERVICE_NAME_1 " "), SS_LEFT, buffer); // Service X in: - STATIC_ITEM_F(F("> "), SS_LEFT, duration_t(stats.nextService1).toString(buffer)); // > 7d 12h 11m 10s + STATIC_ITEM_F(F(SERVICE_NAME_1 " "), SS_FULL, buffer); // Service X in: + STATIC_ITEM_F(nullptr, SS_FULL, duration_t(stats.nextService1).toString(buffer)); // > 7d 12h 11m 10s #endif #if SERVICE_INTERVAL_2 > 0 - STATIC_ITEM_F(F(SERVICE_NAME_2 " "), SS_LEFT, buffer); - STATIC_ITEM_F(F("> "), SS_LEFT, duration_t(stats.nextService2).toString(buffer)); + STATIC_ITEM_F(F(SERVICE_NAME_2 " "), SS_FULL, buffer); + STATIC_ITEM_F(nullptr, SS_FULL, duration_t(stats.nextService2).toString(buffer)); #endif #if SERVICE_INTERVAL_3 > 0 - STATIC_ITEM_F(F(SERVICE_NAME_3 " "), SS_LEFT, buffer); - STATIC_ITEM_F(F("> "), SS_LEFT, duration_t(stats.nextService3).toString(buffer)); + STATIC_ITEM_F(F(SERVICE_NAME_3 " "), SS_FULL, buffer); + STATIC_ITEM_F(nullptr, SS_FULL, duration_t(stats.nextService3).toString(buffer)); #endif END_SCREEN(); @@ -104,9 +104,9 @@ void menu_info_thermistors() { #define THERMISTOR_ID TEMP_SENSOR_0 #include "../thermistornames.h" STATIC_ITEM_F(F(STR_E0 ": " THERMISTOR_NAME), SS_INVERT); - PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_0_MINTEMP), SS_LEFT); - PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_0_MAXTEMP), SS_LEFT); - STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_LEFT); + PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_0_MINTEMP), SS_FULL); + PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_0_MAXTEMP), SS_FULL); + STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_FULL); #endif #if TEMP_SENSOR_1 != 0 @@ -114,9 +114,9 @@ void menu_info_thermistors() { #define THERMISTOR_ID TEMP_SENSOR_1 #include "../thermistornames.h" STATIC_ITEM_F(F(STR_E1 ": " THERMISTOR_NAME), SS_INVERT); - PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_1_MINTEMP), SS_LEFT); - PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_1_MAXTEMP), SS_LEFT); - STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_LEFT); + PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_1_MINTEMP), SS_FULL); + PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_1_MAXTEMP), SS_FULL); + STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_FULL); #endif #if TEMP_SENSOR_2 != 0 @@ -124,9 +124,9 @@ void menu_info_thermistors() { #define THERMISTOR_ID TEMP_SENSOR_2 #include "../thermistornames.h" STATIC_ITEM_F(F(STR_E2 ": " THERMISTOR_NAME), SS_INVERT); - PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_2_MINTEMP), SS_LEFT); - PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_2_MAXTEMP), SS_LEFT); - STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_LEFT); + PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_2_MINTEMP), SS_FULL); + PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_2_MAXTEMP), SS_FULL); + STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_FULL); #endif #if TEMP_SENSOR_3 != 0 @@ -134,9 +134,9 @@ void menu_info_thermistors() { #define THERMISTOR_ID TEMP_SENSOR_3 #include "../thermistornames.h" STATIC_ITEM_F(F(STR_E3 ": " THERMISTOR_NAME), SS_INVERT); - PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_3_MINTEMP), SS_LEFT); - PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_3_MAXTEMP), SS_LEFT); - STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_LEFT); + PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_3_MINTEMP), SS_FULL); + PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_3_MAXTEMP), SS_FULL); + STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_FULL); #endif #if TEMP_SENSOR_4 != 0 @@ -144,9 +144,9 @@ void menu_info_thermistors() { #define THERMISTOR_ID TEMP_SENSOR_4 #include "../thermistornames.h" STATIC_ITEM_F(F(STR_E4 ": " THERMISTOR_NAME), SS_INVERT); - PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_4_MINTEMP), SS_LEFT); - PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_4_MAXTEMP), SS_LEFT); - STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_LEFT); + PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_4_MINTEMP), SS_FULL); + PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_4_MAXTEMP), SS_FULL); + STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_FULL); #endif #if TEMP_SENSOR_5 != 0 @@ -154,9 +154,9 @@ void menu_info_thermistors() { #define THERMISTOR_ID TEMP_SENSOR_5 #include "../thermistornames.h" STATIC_ITEM_F(F(STR_E5 ": " THERMISTOR_NAME), SS_INVERT); - PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_5_MINTEMP), SS_LEFT); - PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_5_MAXTEMP), SS_LEFT); - STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_LEFT); + PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_5_MINTEMP), SS_FULL); + PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_5_MAXTEMP), SS_FULL); + STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_FULL); #endif #if TEMP_SENSOR_6 != 0 @@ -164,9 +164,9 @@ void menu_info_thermistors() { #define THERMISTOR_ID TEMP_SENSOR_6 #include "../thermistornames.h" STATIC_ITEM_F(F(STR_E6 ": " THERMISTOR_NAME), SS_INVERT); - PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_6_MINTEMP), SS_LEFT); - PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_6_MAXTEMP), SS_LEFT); - STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_LEFT); + PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_6_MINTEMP), SS_FULL); + PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_6_MAXTEMP), SS_FULL); + STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_FULL); #endif #if TEMP_SENSOR_7 != 0 @@ -174,9 +174,9 @@ void menu_info_thermistors() { #define THERMISTOR_ID TEMP_SENSOR_7 #include "../thermistornames.h" STATIC_ITEM_F(F(STR_E7 ": " THERMISTOR_NAME), SS_INVERT); - PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_7_MINTEMP), SS_LEFT); - PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_7_MAXTEMP), SS_LEFT); - STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_LEFT); + PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_7_MINTEMP), SS_FULL); + PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_7_MAXTEMP), SS_FULL); + STATIC_ITEM(TERN(WATCH_HOTENDS, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_FULL); #endif #if HAS_HEATED_BED @@ -184,9 +184,9 @@ void menu_info_thermistors() { #define THERMISTOR_ID TEMP_SENSOR_BED #include "../thermistornames.h" STATIC_ITEM_F(F("BED: " THERMISTOR_NAME), SS_INVERT); - PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(BED_MINTEMP), SS_LEFT); - PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(BED_MAXTEMP), SS_LEFT); - STATIC_ITEM(TERN(WATCH_BED, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_LEFT); + PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(BED_MINTEMP), SS_FULL); + PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(BED_MAXTEMP), SS_FULL); + STATIC_ITEM(TERN(WATCH_BED, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_FULL); #endif #if HAS_HEATED_CHAMBER @@ -194,9 +194,9 @@ void menu_info_thermistors() { #define THERMISTOR_ID TEMP_SENSOR_CHAMBER #include "../thermistornames.h" STATIC_ITEM_F(F("CHAM: " THERMISTOR_NAME), SS_INVERT); - PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(CHAMBER_MINTEMP), SS_LEFT); - PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(CHAMBER_MAXTEMP), SS_LEFT); - STATIC_ITEM(TERN(WATCH_CHAMBER, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_LEFT); + PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(CHAMBER_MINTEMP), SS_FULL); + PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(CHAMBER_MAXTEMP), SS_FULL); + STATIC_ITEM(TERN(WATCH_CHAMBER, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_FULL); #endif #if HAS_COOLER @@ -204,9 +204,9 @@ void menu_info_thermistors() { #define THERMISTOR_ID TEMP_SENSOR_COOLER #include "../thermistornames.h" STATIC_ITEM_F(F("COOL: " THERMISTOR_NAME), SS_INVERT); - PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(COOLER_MINTEMP), SS_LEFT); - PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(COOLER_MAXTEMP), SS_LEFT); - STATIC_ITEM(TERN(WATCH_COOLER, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_LEFT); + PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(COOLER_MINTEMP), SS_FULL); + PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(COOLER_MAXTEMP), SS_FULL); + STATIC_ITEM(TERN(WATCH_COOLER, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_FULL); #endif END_SCREEN(); diff --git a/Marlin/src/lcd/menu/menu_item.h b/Marlin/src/lcd/menu/menu_item.h index 3186852002..805caa1d90 100644 --- a/Marlin/src/lcd/menu/menu_item.h +++ b/Marlin/src/lcd/menu/menu_item.h @@ -368,19 +368,29 @@ class MenuItem_bool : public MenuEditItemBase { NEXT_ITEM(); \ }while(0) -// PSTRING_ITEM is like STATIC_ITEM but it takes -// two PSTRs with the style as the last parameter. +// PSTRING_ITEM is like STATIC_ITEM +// but also takes a PSTR and style. -#define PSTRING_ITEM_F(FLABEL, PVAL, STYL) do{ \ - constexpr int m = 20; \ - char msg[m+1]; \ - msg[0] = ':'; msg[1] = ' '; \ - strncpy_P(msg+2, PSTR(PVAL), m-2); \ - if (msg[m-1] & 0x80) msg[m-1] = '\0'; \ - STATIC_ITEM_F(FLABEL, STYL, msg); \ +#define PSTRING_ITEM_F_P(FLABEL, PVAL, STYL) do{ \ + constexpr int m = 20; \ + char msg[m+1]; \ + if (_menuLineNr == _thisItemNr) { \ + msg[0] = ':'; msg[1] = ' '; \ + strncpy_P(msg+2, PVAL, m-2); \ + if (msg[m-1] & 0x80) msg[m-1] = '\0'; \ + } \ + STATIC_ITEM_F(FLABEL, STYL, msg); \ }while(0) -#define PSTRING_ITEM(LABEL, V...) PSTRING_ITEM_F(GET_TEXT_F(LABEL), ##V) +#define PSTRING_ITEM_N_F_P(N, V...) do{ \ + if (_menuLineNr == _thisItemNr) \ + MenuItemBase::init(N); \ + PSTRING_ITEM_F_P(V); \ +}while(0) + +#define PSTRING_ITEM_N_P(N, LABEL, V...) PSTRING_ITEM_N_F_P(N, GET_TEXT_F(LABEL), ##V) +#define PSTRING_ITEM_P(LABEL, V...) PSTRING_ITEM_F_P(GET_TEXT_F(LABEL), ##V) +#define PSTRING_ITEM(LABEL, S, V...) PSTRING_ITEM_P(LABEL, PSTR(S), ##V) #define STATIC_ITEM(LABEL, V...) STATIC_ITEM_F(GET_TEXT_F(LABEL), ##V) #define STATIC_ITEM_N(N, LABEL, V...) STATIC_ITEM_N_F(N, GET_TEXT_F(LABEL), ##V) diff --git a/Marlin/src/lcd/tft/ui_common.cpp b/Marlin/src/lcd/tft/ui_common.cpp index 6fbde79154..6dee62820e 100644 --- a/Marlin/src/lcd/tft/ui_common.cpp +++ b/Marlin/src/lcd/tft/ui_common.cpp @@ -164,11 +164,28 @@ void MenuEditItemBase::draw(const bool sel, const uint8_t row, FSTR_P const fstr } // Draw a static item with no left-right margin required. Centered by default. -void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t style/*=SS_DEFAULT*/, const char * const vstr/*=nullptr*/) { +void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t style/*=SS_DEFAULT*/, const char *vstr/*=nullptr*/) { menu_item(row); + tft_string.set(fstr, itemIndex, itemStringC, itemStringF); - if (vstr) tft_string.add(vstr); - tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_YELLOW, tft_string); + + const bool center = bool(style & SS_CENTER), full = bool(style & SS_FULL); + if (!full || !vstr) { + if (vstr) tft_string.add(vstr); + tft.add_text(center ? tft_string.center(TFT_WIDTH) : 0, MENU_TEXT_Y_OFFSET, COLOR_YELLOW, tft_string); + return; + } + + // Move the leading colon from the value to the label + if (*vstr == ':') { tft_string.add(':'); vstr++; } + + // Left-justified label + tft.add_text(0, MENU_TEXT_Y_OFFSET, COLOR_YELLOW, tft_string); + + // Right-justified value, after spaces + while (*vstr == ' ') vstr++; + tft_string.set(vstr); + tft.add_text(TFT_WIDTH - 1 - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_YELLOW, tft_string); } #if ENABLED(SDSUPPORT) diff --git a/Marlin/src/module/endstops.h b/Marlin/src/module/endstops.h index e0c0de39a1..9e942dc18e 100644 --- a/Marlin/src/module/endstops.h +++ b/Marlin/src/module/endstops.h @@ -31,46 +31,43 @@ #define __ES_ITEM(N) N, #define _ES_ITEM(K,N) TERN_(K,DEFER4(__ES_ITEM)(N)) +/** + * Basic Endstop Flag Bits: + * - Each axis gets one endstop flag bit based on the homing direction (e.g., "EndstopEnum::X_MIN"). + * (The use of "MIN" or "MAX" makes it easier to pair with similarly-named endstop pins.) + * - Multi-stepper axes can optionally enable endstops for all axis steppers. + * - The bed probe gets a 'Z_PROBE' flag bit (but DELTA sensorless probing uses 3 endstops). + * + * Endstop Flag Bit Aliases: + * - Each *_MIN or *_MAX flag is aliased to *_ENDSTOP. + * - 'Z_ENDSTOP' is aliased to 'Z_PROBE' if homing with the probe. + */ enum EndstopEnum : char { // Common XYZ (ABC) endstops. Defined according to USE_[XYZ](MIN|MAX)_PLUG settings. - _ES_ITEM(HAS_X_MIN, X_MIN) - _ES_ITEM(HAS_X_MAX, X_MAX) - _ES_ITEM(HAS_Y_MIN, Y_MIN) - _ES_ITEM(HAS_Y_MAX, Y_MAX) - _ES_ITEM(HAS_Z_MIN, Z_MIN) - _ES_ITEM(HAS_Z_MAX, Z_MAX) - _ES_ITEM(HAS_I_MIN, I_MIN) - _ES_ITEM(HAS_I_MAX, I_MAX) - _ES_ITEM(HAS_J_MIN, J_MIN) - _ES_ITEM(HAS_J_MAX, J_MAX) - _ES_ITEM(HAS_K_MIN, K_MIN) - _ES_ITEM(HAS_K_MAX, K_MAX) - _ES_ITEM(HAS_U_MIN, U_MIN) - _ES_ITEM(HAS_U_MAX, U_MAX) - _ES_ITEM(HAS_V_MIN, V_MIN) - _ES_ITEM(HAS_V_MAX, V_MAX) - _ES_ITEM(HAS_W_MIN, W_MIN) - _ES_ITEM(HAS_W_MAX, W_MAX) + _ES_ITEM(HAS_X_MIN, X_MIN) _ES_ITEM(HAS_X_MAX, X_MAX) + _ES_ITEM(HAS_Y_MIN, Y_MIN) _ES_ITEM(HAS_Y_MAX, Y_MAX) + _ES_ITEM(HAS_Z_MIN, Z_MIN) _ES_ITEM(HAS_Z_MAX, Z_MAX) + _ES_ITEM(HAS_I_MIN, I_MIN) _ES_ITEM(HAS_I_MAX, I_MAX) + _ES_ITEM(HAS_J_MIN, J_MIN) _ES_ITEM(HAS_J_MAX, J_MAX) + _ES_ITEM(HAS_K_MIN, K_MIN) _ES_ITEM(HAS_K_MAX, K_MAX) + _ES_ITEM(HAS_U_MIN, U_MIN) _ES_ITEM(HAS_U_MAX, U_MAX) + _ES_ITEM(HAS_V_MIN, V_MIN) _ES_ITEM(HAS_V_MAX, V_MAX) + _ES_ITEM(HAS_W_MIN, W_MIN) _ES_ITEM(HAS_W_MAX, W_MAX) // Extra Endstops for XYZ #if ENABLED(X_DUAL_ENDSTOPS) - _ES_ITEM(HAS_X_MIN, X2_MIN) - _ES_ITEM(HAS_X_MAX, X2_MAX) + _ES_ITEM(HAS_X_MIN, X2_MIN) _ES_ITEM(HAS_X_MAX, X2_MAX) #endif #if ENABLED(Y_DUAL_ENDSTOPS) - _ES_ITEM(HAS_Y_MIN, Y2_MIN) - _ES_ITEM(HAS_Y_MAX, Y2_MAX) + _ES_ITEM(HAS_Y_MIN, Y2_MIN) _ES_ITEM(HAS_Y_MAX, Y2_MAX) #endif #if ENABLED(Z_MULTI_ENDSTOPS) - _ES_ITEM(HAS_Z_MIN, Z2_MIN) - _ES_ITEM(HAS_Z_MAX, Z2_MAX) + _ES_ITEM(HAS_Z_MIN, Z2_MIN) _ES_ITEM(HAS_Z_MAX, Z2_MAX) #if NUM_Z_STEPPERS >= 3 - _ES_ITEM(HAS_Z_MIN, Z3_MIN) - _ES_ITEM(HAS_Z_MAX, Z3_MAX) - #endif - #if NUM_Z_STEPPERS >= 4 - _ES_ITEM(HAS_Z_MIN, Z4_MIN) - _ES_ITEM(HAS_Z_MAX, Z4_MAX) + _ES_ITEM(HAS_Z_MIN, Z3_MIN) _ES_ITEM(HAS_Z_MAX, Z3_MAX) + #if NUM_Z_STEPPERS >= 4 + _ES_ITEM(HAS_Z_MIN, Z4_MIN) _ES_ITEM(HAS_Z_MAX, Z4_MAX) + #endif #endif #endif @@ -83,30 +80,50 @@ enum EndstopEnum : char { NUM_ENDSTOP_STATES // Endstops can be either MIN or MAX but not both - #if HAS_X_MIN || HAS_X_MAX + #if HAS_X_ENDSTOP , X_ENDSTOP = TERN(X_HOME_TO_MAX, X_MAX, X_MIN) #if ENABLED(X_DUAL_ENDSTOPS) , X2_ENDSTOP = TERN(X_HOME_TO_MAX, X2_MAX, X2_MIN) #endif #endif - #if HAS_Y_MIN || HAS_Y_MAX + #if HAS_Y_ENDSTOP , Y_ENDSTOP = TERN(Y_HOME_TO_MAX, Y_MAX, Y_MIN) #if ENABLED(Y_DUAL_ENDSTOPS) , Y2_ENDSTOP = TERN(Y_HOME_TO_MAX, Y2_MAX, Y2_MIN) #endif #endif - #if HAS_Z_MIN || HAS_Z_MAX || HOMING_Z_WITH_PROBE - , Z_ENDSTOP = TERN(HOMING_Z_WITH_PROBE, Z_MIN_PROBE, TERN(Z_HOME_TO_MAX, Z_MAX, Z_MIN)) + #if HOMING_Z_WITH_PROBE + , Z_ENDSTOP = Z_MIN_PROBE + #elif HAS_Z_ENDSTOP + , Z_ENDSTOP = TERN(Z_HOME_TO_MAX, Z_MAX, Z_MIN) + #if ENABLED(Z_MULTI_ENDSTOPS) + , Z2_ENDSTOP = TERN(Z_HOME_TO_MAX, Z2_MAX, Z2_MIN) + #if NUM_Z_STEPPERS >= 3 + , Z3_ENDSTOP = TERN(Z_HOME_TO_MAX, Z3_MAX, Z3_MIN) + #if NUM_Z_STEPPERS >= 4 + , Z4_ENDSTOP = TERN(Z_HOME_TO_MAX, Z4_MAX, Z4_MIN) + #endif + #endif + #endif #endif - #if HAS_I_MIN || HAS_I_MAX + #if HAS_I_ENDSTOP , I_ENDSTOP = TERN(I_HOME_TO_MAX, I_MAX, I_MIN) #endif - #if HAS_J_MIN || HAS_J_MAX + #if HAS_J_ENDSTOP , J_ENDSTOP = TERN(J_HOME_TO_MAX, J_MAX, J_MIN) #endif - #if HAS_K_MIN || HAS_K_MAX + #if HAS_K_ENDSTOP , K_ENDSTOP = TERN(K_HOME_TO_MAX, K_MAX, K_MIN) #endif + #if HAS_U_ENDSTOP + , U_ENDSTOP = TERN(U_HOME_TO_MAX, U_MAX, U_MIN) + #endif + #if HAS_V_ENDSTOP + , V_ENDSTOP = TERN(V_HOME_TO_MAX, V_MAX, V_MIN) + #endif + #if HAS_W_ENDSTOP + , W_ENDSTOP = TERN(W_HOME_TO_MAX, W_MAX, W_MIN) + #endif }; #undef __ES_ITEM diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 6917bbc42a..589299f2f1 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -2171,32 +2171,9 @@ void prepare_line_to_destination() { // Check for a broken endstop EndstopEnum es; switch (axis) { - default: - case X_AXIS: es = X_ENDSTOP; break; - #if HAS_Y_AXIS - case Y_AXIS: es = Y_ENDSTOP; break; - #endif - #if HAS_Z_AXIS - case Z_AXIS: es = Z_ENDSTOP; break; - #endif - #if HAS_I_AXIS - case I_AXIS: es = I_ENDSTOP; break; - #endif - #if HAS_J_AXIS - case J_AXIS: es = J_ENDSTOP; break; - #endif - #if HAS_K_AXIS - case K_AXIS: es = K_ENDSTOP; break; - #endif - #if HAS_U_AXIS - case U_AXIS: es = U_ENDSTOP; break; - #endif - #if HAS_V_AXIS - case V_AXIS: es = V_ENDSTOP; break; - #endif - #if HAS_W_AXIS - case W_AXIS: es = W_ENDSTOP; break; - #endif + #define _ESCASE(A) case A##_AXIS: es = A##_ENDSTOP; break; + MAIN_AXIS_MAP(_ESCASE) + default: break; } if (TEST(endstops.state(), es)) { SERIAL_ECHO_MSG("Bad ", AS_CHAR(AXIS_CHAR(axis)), " Endstop?"); diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 75295c5f5a..3e7db5a077 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -551,6 +551,7 @@ bool Probe::set_deployed(const bool deploy, const bool no_return/*=false*/) { #endif // If preheating is required before any probing... + // TODO: Consider skipping this for things like M401, G34, etc. TERN_(PREHEAT_BEFORE_PROBING, if (deploy) preheat_for_probing(PROBING_NOZZLE_TEMP, PROBING_BED_TEMP)); if (!no_return) do_blocking_move_to(old_xy); // Return to the original location unless handled externally @@ -1020,15 +1021,16 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai void Probe::refresh_largest_sensorless_adj() { DEBUG_SECTION(rso, "Probe::refresh_largest_sensorless_adj", true); largest_sensorless_adj = -3; // A reference away from any real probe height - if (TEST(endstops.state(), X_MAX)) { + const Endstops::endstop_mask_t state = endstops.state(); + if (TEST(state, X_MAX)) { NOLESS(largest_sensorless_adj, offset_sensorless_adj.a); DEBUG_ECHOLNPGM("Endstop_X: ", largest_sensorless_adj, " TowerX"); } - if (TEST(endstops.state(), Y_MAX)) { + if (TEST(state, Y_MAX)) { NOLESS(largest_sensorless_adj, offset_sensorless_adj.b); DEBUG_ECHOLNPGM("Endstop_Y: ", largest_sensorless_adj, " TowerY"); } - if (TEST(endstops.state(), Z_MAX)) { + if (TEST(state, Z_MAX)) { NOLESS(largest_sensorless_adj, offset_sensorless_adj.c); DEBUG_ECHOLNPGM("Endstop_Z: ", largest_sensorless_adj, " TowerZ"); } diff --git a/Marlin/src/pins/pins_postprocess.h b/Marlin/src/pins/pins_postprocess.h index 708eb7f8e6..6ae99d2f57 100644 --- a/Marlin/src/pins/pins_postprocess.h +++ b/Marlin/src/pins/pins_postprocess.h @@ -1867,487 +1867,467 @@ * X_DUAL_ENDSTOPS endstop reassignment */ #if ENABLED(X_DUAL_ENDSTOPS) - #if X_HOME_TO_MAX - #ifndef X2_MAX_PIN - #if PIN_EXISTS(X2_STOP) - #define X2_MAX_PIN X2_STOP_PIN - #elif X2_USE_ENDSTOP == _XMIN_ - #define X2_MAX_PIN X_MIN_PIN - #elif X2_USE_ENDSTOP == _XMAX_ - #define X2_MAX_PIN X_MAX_PIN - #elif X2_USE_ENDSTOP == _XSTOP_ - #define X2_MAX_PIN X_STOP_PIN - #elif X2_USE_ENDSTOP == _YMIN_ - #define X2_MAX_PIN Y_MIN_PIN - #elif X2_USE_ENDSTOP == _YMAX_ - #define X2_MAX_PIN Y_MAX_PIN - #elif X2_USE_ENDSTOP == _YSTOP_ - #define X2_MAX_PIN Y_STOP_PIN - #elif X2_USE_ENDSTOP == _ZMIN_ - #define X2_MAX_PIN Z_MIN_PIN - #elif X2_USE_ENDSTOP == _ZMAX_ - #define X2_MAX_PIN Z_MAX_PIN - #elif X2_USE_ENDSTOP == _ZSTOP_ - #define X2_MAX_PIN Z_STOP_PIN - #elif X2_USE_ENDSTOP == _XDIAG_ - #define X2_MAX_PIN X_DIAG_PIN - #elif X2_USE_ENDSTOP == _YDIAG_ - #define X2_MAX_PIN Y_DIAG_PIN - #elif X2_USE_ENDSTOP == _ZDIAG_ - #define X2_MAX_PIN Z_DIAG_PIN - #elif X2_USE_ENDSTOP == _E0DIAG_ - #define X2_MAX_PIN E0_DIAG_PIN - #elif X2_USE_ENDSTOP == _E1DIAG_ - #define X2_MAX_PIN E1_DIAG_PIN - #elif X2_USE_ENDSTOP == _E2DIAG_ - #define X2_MAX_PIN E2_DIAG_PIN - #elif X2_USE_ENDSTOP == _E3DIAG_ - #define X2_MAX_PIN E3_DIAG_PIN - #elif X2_USE_ENDSTOP == _E4DIAG_ - #define X2_MAX_PIN E4_DIAG_PIN - #elif X2_USE_ENDSTOP == _E5DIAG_ - #define X2_MAX_PIN E5_DIAG_PIN - #elif X2_USE_ENDSTOP == _E6DIAG_ - #define X2_MAX_PIN E6_DIAG_PIN - #elif X2_USE_ENDSTOP == _E7DIAG_ - #define X2_MAX_PIN E7_DIAG_PIN - #endif + #if X_HOME_TO_MAX && !defined(X2_MAX_PIN) + #if PIN_EXISTS(X2_STOP) + #define X2_MAX_PIN X2_STOP_PIN + #elif X2_USE_ENDSTOP == _XMIN_ + #define X2_MAX_PIN X_MIN_PIN + #elif X2_USE_ENDSTOP == _XMAX_ + #define X2_MAX_PIN X_MAX_PIN + #elif X2_USE_ENDSTOP == _XSTOP_ + #define X2_MAX_PIN X_STOP_PIN + #elif X2_USE_ENDSTOP == _YMIN_ + #define X2_MAX_PIN Y_MIN_PIN + #elif X2_USE_ENDSTOP == _YMAX_ + #define X2_MAX_PIN Y_MAX_PIN + #elif X2_USE_ENDSTOP == _YSTOP_ + #define X2_MAX_PIN Y_STOP_PIN + #elif X2_USE_ENDSTOP == _ZMIN_ + #define X2_MAX_PIN Z_MIN_PIN + #elif X2_USE_ENDSTOP == _ZMAX_ + #define X2_MAX_PIN Z_MAX_PIN + #elif X2_USE_ENDSTOP == _ZSTOP_ + #define X2_MAX_PIN Z_STOP_PIN + #elif X2_USE_ENDSTOP == _XDIAG_ + #define X2_MAX_PIN X_DIAG_PIN + #elif X2_USE_ENDSTOP == _YDIAG_ + #define X2_MAX_PIN Y_DIAG_PIN + #elif X2_USE_ENDSTOP == _ZDIAG_ + #define X2_MAX_PIN Z_DIAG_PIN + #elif X2_USE_ENDSTOP == _E0DIAG_ + #define X2_MAX_PIN E0_DIAG_PIN + #elif X2_USE_ENDSTOP == _E1DIAG_ + #define X2_MAX_PIN E1_DIAG_PIN + #elif X2_USE_ENDSTOP == _E2DIAG_ + #define X2_MAX_PIN E2_DIAG_PIN + #elif X2_USE_ENDSTOP == _E3DIAG_ + #define X2_MAX_PIN E3_DIAG_PIN + #elif X2_USE_ENDSTOP == _E4DIAG_ + #define X2_MAX_PIN E4_DIAG_PIN + #elif X2_USE_ENDSTOP == _E5DIAG_ + #define X2_MAX_PIN E5_DIAG_PIN + #elif X2_USE_ENDSTOP == _E6DIAG_ + #define X2_MAX_PIN E6_DIAG_PIN + #elif X2_USE_ENDSTOP == _E7DIAG_ + #define X2_MAX_PIN E7_DIAG_PIN #endif - #else - #ifndef X2_MIN_PIN - #if PIN_EXISTS(X2_STOP) - #define X2_MIN_PIN X2_STOP_PIN - #elif X2_USE_ENDSTOP == _XMIN_ - #define X2_MIN_PIN X_MIN_PIN - #elif X2_USE_ENDSTOP == _XMAX_ - #define X2_MIN_PIN X_MAX_PIN - #elif X2_USE_ENDSTOP == _XSTOP_ - #define X2_MIN_PIN X_STOP_PIN - #elif X2_USE_ENDSTOP == _YMIN_ - #define X2_MIN_PIN Y_MIN_PIN - #elif X2_USE_ENDSTOP == _YMAX_ - #define X2_MIN_PIN Y_MAX_PIN - #elif X2_USE_ENDSTOP == _YSTOP_ - #define X2_MIN_PIN Y_STOP_PIN - #elif X2_USE_ENDSTOP == _ZMIN_ - #define X2_MIN_PIN Z_MIN_PIN - #elif X2_USE_ENDSTOP == _ZMAX_ - #define X2_MIN_PIN Z_MAX_PIN - #elif X2_USE_ENDSTOP == _ZSTOP_ - #define X2_MIN_PIN Z_STOP_PIN - #elif X2_USE_ENDSTOP == _XDIAG_ - #define X2_MIN_PIN X_DIAG_PIN - #elif X2_USE_ENDSTOP == _YDIAG_ - #define X2_MIN_PIN Y_DIAG_PIN - #elif X2_USE_ENDSTOP == _ZDIAG_ - #define X2_MIN_PIN Z_DIAG_PIN - #elif X2_USE_ENDSTOP == _E0DIAG_ - #define X2_MIN_PIN E0_DIAG_PIN - #elif X2_USE_ENDSTOP == _E1DIAG_ - #define X2_MIN_PIN E1_DIAG_PIN - #elif X2_USE_ENDSTOP == _E2DIAG_ - #define X2_MIN_PIN E2_DIAG_PIN - #elif X2_USE_ENDSTOP == _E3DIAG_ - #define X2_MIN_PIN E3_DIAG_PIN - #elif X2_USE_ENDSTOP == _E4DIAG_ - #define X2_MIN_PIN E4_DIAG_PIN - #elif X2_USE_ENDSTOP == _E5DIAG_ - #define X2_MIN_PIN E5_DIAG_PIN - #elif X2_USE_ENDSTOP == _E6DIAG_ - #define X2_MIN_PIN E6_DIAG_PIN - #elif X2_USE_ENDSTOP == _E7DIAG_ - #define X2_MIN_PIN E7_DIAG_PIN - #endif + #elif X_HOME_TO_MIN && !defined(X2_MIN_PIN) + #if PIN_EXISTS(X2_STOP) + #define X2_MIN_PIN X2_STOP_PIN + #elif X2_USE_ENDSTOP == _XMIN_ + #define X2_MIN_PIN X_MIN_PIN + #elif X2_USE_ENDSTOP == _XMAX_ + #define X2_MIN_PIN X_MAX_PIN + #elif X2_USE_ENDSTOP == _XSTOP_ + #define X2_MIN_PIN X_STOP_PIN + #elif X2_USE_ENDSTOP == _YMIN_ + #define X2_MIN_PIN Y_MIN_PIN + #elif X2_USE_ENDSTOP == _YMAX_ + #define X2_MIN_PIN Y_MAX_PIN + #elif X2_USE_ENDSTOP == _YSTOP_ + #define X2_MIN_PIN Y_STOP_PIN + #elif X2_USE_ENDSTOP == _ZMIN_ + #define X2_MIN_PIN Z_MIN_PIN + #elif X2_USE_ENDSTOP == _ZMAX_ + #define X2_MIN_PIN Z_MAX_PIN + #elif X2_USE_ENDSTOP == _ZSTOP_ + #define X2_MIN_PIN Z_STOP_PIN + #elif X2_USE_ENDSTOP == _XDIAG_ + #define X2_MIN_PIN X_DIAG_PIN + #elif X2_USE_ENDSTOP == _YDIAG_ + #define X2_MIN_PIN Y_DIAG_PIN + #elif X2_USE_ENDSTOP == _ZDIAG_ + #define X2_MIN_PIN Z_DIAG_PIN + #elif X2_USE_ENDSTOP == _E0DIAG_ + #define X2_MIN_PIN E0_DIAG_PIN + #elif X2_USE_ENDSTOP == _E1DIAG_ + #define X2_MIN_PIN E1_DIAG_PIN + #elif X2_USE_ENDSTOP == _E2DIAG_ + #define X2_MIN_PIN E2_DIAG_PIN + #elif X2_USE_ENDSTOP == _E3DIAG_ + #define X2_MIN_PIN E3_DIAG_PIN + #elif X2_USE_ENDSTOP == _E4DIAG_ + #define X2_MIN_PIN E4_DIAG_PIN + #elif X2_USE_ENDSTOP == _E5DIAG_ + #define X2_MIN_PIN E5_DIAG_PIN + #elif X2_USE_ENDSTOP == _E6DIAG_ + #define X2_MIN_PIN E6_DIAG_PIN + #elif X2_USE_ENDSTOP == _E7DIAG_ + #define X2_MIN_PIN E7_DIAG_PIN #endif #endif -#endif +#endif // X_DUAL_ENDSTOPS /** * Y_DUAL_ENDSTOPS endstop reassignment */ #if ENABLED(Y_DUAL_ENDSTOPS) - #if Y_HOME_TO_MAX - #ifndef Y2_MAX_PIN - #if PIN_EXISTS(Y2_STOP) - #define Y2_MAX_PIN Y2_STOP_PIN - #elif Y2_USE_ENDSTOP == _XMIN_ - #define Y2_MAX_PIN X_MIN_PIN - #elif Y2_USE_ENDSTOP == _XMAX_ - #define Y2_MAX_PIN X_MAX_PIN - #elif Y2_USE_ENDSTOP == _XSTOP_ - #define Y2_MAX_PIN X_STOP_PIN - #elif Y2_USE_ENDSTOP == _YMIN_ - #define Y2_MAX_PIN Y_MIN_PIN - #elif Y2_USE_ENDSTOP == _YMAX_ - #define Y2_MAX_PIN Y_MAX_PIN - #elif Y2_USE_ENDSTOP == _YSTOP_ - #define Y2_MAX_PIN Y_STOP_PIN - #elif Y2_USE_ENDSTOP == _ZMIN_ - #define Y2_MAX_PIN Z_MIN_PIN - #elif Y2_USE_ENDSTOP == _ZMAX_ - #define Y2_MAX_PIN Z_MAX_PIN - #elif Y2_USE_ENDSTOP == _ZSTOP_ - #define Y2_MAX_PIN Z_STOP_PIN - #elif Y2_USE_ENDSTOP == _XDIAG_ - #define Y2_MAX_PIN X_DIAG_PIN - #elif Y2_USE_ENDSTOP == _YDIAG_ - #define Y2_MAX_PIN Y_DIAG_PIN - #elif Y2_USE_ENDSTOP == _ZDIAG_ - #define Y2_MAX_PIN Z_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E0DIAG_ - #define Y2_MAX_PIN E0_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E1DIAG_ - #define Y2_MAX_PIN E1_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E2DIAG_ - #define Y2_MAX_PIN E2_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E3DIAG_ - #define Y2_MAX_PIN E3_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E4DIAG_ - #define Y2_MAX_PIN E4_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E5DIAG_ - #define Y2_MAX_PIN E5_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E6DIAG_ - #define Y2_MAX_PIN E6_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E7DIAG_ - #define Y2_MAX_PIN E7_DIAG_PIN - #endif + #if Y_HOME_TO_MAX && !defined(Y2_MAX_PIN) + #if PIN_EXISTS(Y2_STOP) + #define Y2_MAX_PIN Y2_STOP_PIN + #elif Y2_USE_ENDSTOP == _XMIN_ + #define Y2_MAX_PIN X_MIN_PIN + #elif Y2_USE_ENDSTOP == _XMAX_ + #define Y2_MAX_PIN X_MAX_PIN + #elif Y2_USE_ENDSTOP == _XSTOP_ + #define Y2_MAX_PIN X_STOP_PIN + #elif Y2_USE_ENDSTOP == _YMIN_ + #define Y2_MAX_PIN Y_MIN_PIN + #elif Y2_USE_ENDSTOP == _YMAX_ + #define Y2_MAX_PIN Y_MAX_PIN + #elif Y2_USE_ENDSTOP == _YSTOP_ + #define Y2_MAX_PIN Y_STOP_PIN + #elif Y2_USE_ENDSTOP == _ZMIN_ + #define Y2_MAX_PIN Z_MIN_PIN + #elif Y2_USE_ENDSTOP == _ZMAX_ + #define Y2_MAX_PIN Z_MAX_PIN + #elif Y2_USE_ENDSTOP == _ZSTOP_ + #define Y2_MAX_PIN Z_STOP_PIN + #elif Y2_USE_ENDSTOP == _XDIAG_ + #define Y2_MAX_PIN X_DIAG_PIN + #elif Y2_USE_ENDSTOP == _YDIAG_ + #define Y2_MAX_PIN Y_DIAG_PIN + #elif Y2_USE_ENDSTOP == _ZDIAG_ + #define Y2_MAX_PIN Z_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E0DIAG_ + #define Y2_MAX_PIN E0_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E1DIAG_ + #define Y2_MAX_PIN E1_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E2DIAG_ + #define Y2_MAX_PIN E2_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E3DIAG_ + #define Y2_MAX_PIN E3_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E4DIAG_ + #define Y2_MAX_PIN E4_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E5DIAG_ + #define Y2_MAX_PIN E5_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E6DIAG_ + #define Y2_MAX_PIN E6_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E7DIAG_ + #define Y2_MAX_PIN E7_DIAG_PIN #endif - #else - #ifndef Y2_MIN_PIN - #if PIN_EXISTS(Y2_STOP) - #define Y2_MIN_PIN Y2_STOP_PIN - #elif Y2_USE_ENDSTOP == _XMIN_ - #define Y2_MIN_PIN X_MIN_PIN - #elif Y2_USE_ENDSTOP == _XMAX_ - #define Y2_MIN_PIN X_MAX_PIN - #elif Y2_USE_ENDSTOP == _XSTOP_ - #define Y2_MIN_PIN X_STOP_PIN - #elif Y2_USE_ENDSTOP == _YMIN_ - #define Y2_MIN_PIN Y_MIN_PIN - #elif Y2_USE_ENDSTOP == _YMAX_ - #define Y2_MIN_PIN Y_MAX_PIN - #elif Y2_USE_ENDSTOP == _YSTOP_ - #define Y2_MIN_PIN Y_STOP_PIN - #elif Y2_USE_ENDSTOP == _ZMIN_ - #define Y2_MIN_PIN Z_MIN_PIN - #elif Y2_USE_ENDSTOP == _ZMAX_ - #define Y2_MIN_PIN Z_MAX_PIN - #elif Y2_USE_ENDSTOP == _ZSTOP_ - #define Y2_MIN_PIN Z_STOP_PIN - #elif Y2_USE_ENDSTOP == _XDIAG_ - #define Y2_MIN_PIN X_DIAG_PIN - #elif Y2_USE_ENDSTOP == _YDIAG_ - #define Y2_MIN_PIN Y_DIAG_PIN - #elif Y2_USE_ENDSTOP == _ZDIAG_ - #define Y2_MIN_PIN Z_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E0DIAG_ - #define Y2_MIN_PIN E0_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E1DIAG_ - #define Y2_MIN_PIN E1_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E2DIAG_ - #define Y2_MIN_PIN E2_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E3DIAG_ - #define Y2_MIN_PIN E3_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E4DIAG_ - #define Y2_MIN_PIN E4_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E5DIAG_ - #define Y2_MIN_PIN E5_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E6DIAG_ - #define Y2_MIN_PIN E6_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E7DIAG_ - #define Y2_MIN_PIN E7_DIAG_PIN - #endif + #elif Y_HOME_TO_MIN && !defined(Y2_MIN_PIN) + #if PIN_EXISTS(Y2_STOP) + #define Y2_MIN_PIN Y2_STOP_PIN + #elif Y2_USE_ENDSTOP == _XMIN_ + #define Y2_MIN_PIN X_MIN_PIN + #elif Y2_USE_ENDSTOP == _XMAX_ + #define Y2_MIN_PIN X_MAX_PIN + #elif Y2_USE_ENDSTOP == _XSTOP_ + #define Y2_MIN_PIN X_STOP_PIN + #elif Y2_USE_ENDSTOP == _YMIN_ + #define Y2_MIN_PIN Y_MIN_PIN + #elif Y2_USE_ENDSTOP == _YMAX_ + #define Y2_MIN_PIN Y_MAX_PIN + #elif Y2_USE_ENDSTOP == _YSTOP_ + #define Y2_MIN_PIN Y_STOP_PIN + #elif Y2_USE_ENDSTOP == _ZMIN_ + #define Y2_MIN_PIN Z_MIN_PIN + #elif Y2_USE_ENDSTOP == _ZMAX_ + #define Y2_MIN_PIN Z_MAX_PIN + #elif Y2_USE_ENDSTOP == _ZSTOP_ + #define Y2_MIN_PIN Z_STOP_PIN + #elif Y2_USE_ENDSTOP == _XDIAG_ + #define Y2_MIN_PIN X_DIAG_PIN + #elif Y2_USE_ENDSTOP == _YDIAG_ + #define Y2_MIN_PIN Y_DIAG_PIN + #elif Y2_USE_ENDSTOP == _ZDIAG_ + #define Y2_MIN_PIN Z_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E0DIAG_ + #define Y2_MIN_PIN E0_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E1DIAG_ + #define Y2_MIN_PIN E1_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E2DIAG_ + #define Y2_MIN_PIN E2_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E3DIAG_ + #define Y2_MIN_PIN E3_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E4DIAG_ + #define Y2_MIN_PIN E4_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E5DIAG_ + #define Y2_MIN_PIN E5_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E6DIAG_ + #define Y2_MIN_PIN E6_DIAG_PIN + #elif Y2_USE_ENDSTOP == _E7DIAG_ + #define Y2_MIN_PIN E7_DIAG_PIN #endif #endif -#endif +#endif // Y_DUAL_ENDSTOPS /** * Z_MULTI_ENDSTOPS endstop reassignment */ #if ENABLED(Z_MULTI_ENDSTOPS) - #if Z_HOME_TO_MAX - #ifndef Z2_MAX_PIN - #if PIN_EXISTS(Z2_STOP) - #define Z2_MAX_PIN Z2_STOP_PIN - #elif Z2_USE_ENDSTOP == _XMIN_ - #define Z2_MAX_PIN X_MIN_PIN - #elif Z2_USE_ENDSTOP == _XMAX_ - #define Z2_MAX_PIN X_MAX_PIN - #elif Z2_USE_ENDSTOP == _XSTOP_ - #define Z2_MAX_PIN X_STOP_PIN - #elif Z2_USE_ENDSTOP == _YMIN_ - #define Z2_MAX_PIN Y_MIN_PIN - #elif Z2_USE_ENDSTOP == _YMAX_ - #define Z2_MAX_PIN Y_MAX_PIN - #elif Z2_USE_ENDSTOP == _YSTOP_ - #define Z2_MAX_PIN Y_STOP_PIN - #elif Z2_USE_ENDSTOP == _ZMIN_ - #define Z2_MAX_PIN Z_MIN_PIN - #elif Z2_USE_ENDSTOP == _ZMAX_ - #define Z2_MAX_PIN Z_MAX_PIN - #elif Z2_USE_ENDSTOP == _ZSTOP_ - #define Z2_MAX_PIN Z_STOP_PIN - #elif Z2_USE_ENDSTOP == _XDIAG_ - #define Z2_MAX_PIN X_DIAG_PIN - #elif Z2_USE_ENDSTOP == _YDIAG_ - #define Z2_MAX_PIN Y_DIAG_PIN - #elif Z2_USE_ENDSTOP == _ZDIAG_ - #define Z2_MAX_PIN Z_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E0DIAG_ - #define Z2_MAX_PIN E0_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E1DIAG_ - #define Z2_MAX_PIN E1_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E2DIAG_ - #define Z2_MAX_PIN E2_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E3DIAG_ - #define Z2_MAX_PIN E3_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E4DIAG_ - #define Z2_MAX_PIN E4_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E5DIAG_ - #define Z2_MAX_PIN E5_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E6DIAG_ - #define Z2_MAX_PIN E6_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E7DIAG_ - #define Z2_MAX_PIN E7_DIAG_PIN - #endif + #if Z_HOME_TO_MAX && !defined(Z2_MAX_PIN) + #if PIN_EXISTS(Z2_STOP) + #define Z2_MAX_PIN Z2_STOP_PIN + #elif Z2_USE_ENDSTOP == _XMIN_ + #define Z2_MAX_PIN X_MIN_PIN + #elif Z2_USE_ENDSTOP == _XMAX_ + #define Z2_MAX_PIN X_MAX_PIN + #elif Z2_USE_ENDSTOP == _XSTOP_ + #define Z2_MAX_PIN X_STOP_PIN + #elif Z2_USE_ENDSTOP == _YMIN_ + #define Z2_MAX_PIN Y_MIN_PIN + #elif Z2_USE_ENDSTOP == _YMAX_ + #define Z2_MAX_PIN Y_MAX_PIN + #elif Z2_USE_ENDSTOP == _YSTOP_ + #define Z2_MAX_PIN Y_STOP_PIN + #elif Z2_USE_ENDSTOP == _ZMIN_ + #define Z2_MAX_PIN Z_MIN_PIN + #elif Z2_USE_ENDSTOP == _ZMAX_ + #define Z2_MAX_PIN Z_MAX_PIN + #elif Z2_USE_ENDSTOP == _ZSTOP_ + #define Z2_MAX_PIN Z_STOP_PIN + #elif Z2_USE_ENDSTOP == _XDIAG_ + #define Z2_MAX_PIN X_DIAG_PIN + #elif Z2_USE_ENDSTOP == _YDIAG_ + #define Z2_MAX_PIN Y_DIAG_PIN + #elif Z2_USE_ENDSTOP == _ZDIAG_ + #define Z2_MAX_PIN Z_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E0DIAG_ + #define Z2_MAX_PIN E0_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E1DIAG_ + #define Z2_MAX_PIN E1_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E2DIAG_ + #define Z2_MAX_PIN E2_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E3DIAG_ + #define Z2_MAX_PIN E3_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E4DIAG_ + #define Z2_MAX_PIN E4_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E5DIAG_ + #define Z2_MAX_PIN E5_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E6DIAG_ + #define Z2_MAX_PIN E6_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E7DIAG_ + #define Z2_MAX_PIN E7_DIAG_PIN #endif - #else - #ifndef Z2_MIN_PIN - #if PIN_EXISTS(Z2_STOP) - #define Z2_MIN_PIN Z2_STOP_PIN - #elif Z2_USE_ENDSTOP == _XMIN_ - #define Z2_MIN_PIN X_MIN_PIN - #elif Z2_USE_ENDSTOP == _XMAX_ - #define Z2_MIN_PIN X_MAX_PIN - #elif Z2_USE_ENDSTOP == _XSTOP_ - #define Z2_MIN_PIN X_STOP_PIN - #elif Z2_USE_ENDSTOP == _YMIN_ - #define Z2_MIN_PIN Y_MIN_PIN - #elif Z2_USE_ENDSTOP == _YMAX_ - #define Z2_MIN_PIN Y_MAX_PIN - #elif Z2_USE_ENDSTOP == _YSTOP_ - #define Z2_MIN_PIN Y_STOP_PIN - #elif Z2_USE_ENDSTOP == _ZMIN_ - #define Z2_MIN_PIN Z_MIN_PIN - #elif Z2_USE_ENDSTOP == _ZMAX_ - #define Z2_MIN_PIN Z_MAX_PIN - #elif Z2_USE_ENDSTOP == _ZSTOP_ - #define Z2_MIN_PIN Z_STOP_PIN - #elif Z2_USE_ENDSTOP == _XDIAG_ - #define Z2_MIN_PIN X_DIAG_PIN - #elif Z2_USE_ENDSTOP == _YDIAG_ - #define Z2_MIN_PIN Y_DIAG_PIN - #elif Z2_USE_ENDSTOP == _ZDIAG_ - #define Z2_MIN_PIN Z_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E0DIAG_ - #define Z2_MIN_PIN E0_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E1DIAG_ - #define Z2_MIN_PIN E1_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E2DIAG_ - #define Z2_MIN_PIN E2_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E3DIAG_ - #define Z2_MIN_PIN E3_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E4DIAG_ - #define Z2_MIN_PIN E4_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E5DIAG_ - #define Z2_MIN_PIN E5_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E6DIAG_ - #define Z2_MIN_PIN E6_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E7DIAG_ - #define Z2_MIN_PIN E7_DIAG_PIN - #endif + #elif Z_HOME_TO_MIN && !defined(Z2_MIN_PIN) + #if PIN_EXISTS(Z2_STOP) + #define Z2_MIN_PIN Z2_STOP_PIN + #elif Z2_USE_ENDSTOP == _XMIN_ + #define Z2_MIN_PIN X_MIN_PIN + #elif Z2_USE_ENDSTOP == _XMAX_ + #define Z2_MIN_PIN X_MAX_PIN + #elif Z2_USE_ENDSTOP == _XSTOP_ + #define Z2_MIN_PIN X_STOP_PIN + #elif Z2_USE_ENDSTOP == _YMIN_ + #define Z2_MIN_PIN Y_MIN_PIN + #elif Z2_USE_ENDSTOP == _YMAX_ + #define Z2_MIN_PIN Y_MAX_PIN + #elif Z2_USE_ENDSTOP == _YSTOP_ + #define Z2_MIN_PIN Y_STOP_PIN + #elif Z2_USE_ENDSTOP == _ZMIN_ + #define Z2_MIN_PIN Z_MIN_PIN + #elif Z2_USE_ENDSTOP == _ZMAX_ + #define Z2_MIN_PIN Z_MAX_PIN + #elif Z2_USE_ENDSTOP == _ZSTOP_ + #define Z2_MIN_PIN Z_STOP_PIN + #elif Z2_USE_ENDSTOP == _XDIAG_ + #define Z2_MIN_PIN X_DIAG_PIN + #elif Z2_USE_ENDSTOP == _YDIAG_ + #define Z2_MIN_PIN Y_DIAG_PIN + #elif Z2_USE_ENDSTOP == _ZDIAG_ + #define Z2_MIN_PIN Z_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E0DIAG_ + #define Z2_MIN_PIN E0_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E1DIAG_ + #define Z2_MIN_PIN E1_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E2DIAG_ + #define Z2_MIN_PIN E2_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E3DIAG_ + #define Z2_MIN_PIN E3_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E4DIAG_ + #define Z2_MIN_PIN E4_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E5DIAG_ + #define Z2_MIN_PIN E5_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E6DIAG_ + #define Z2_MIN_PIN E6_DIAG_PIN + #elif Z2_USE_ENDSTOP == _E7DIAG_ + #define Z2_MIN_PIN E7_DIAG_PIN #endif #endif #if NUM_Z_STEPPERS >= 3 - #if Z_HOME_TO_MAX - #ifndef Z3_MAX_PIN - #if PIN_EXISTS(Z3_STOP) - #define Z3_MAX_PIN Z3_STOP_PIN - #elif Z3_USE_ENDSTOP == _XMIN_ - #define Z3_MAX_PIN X_MIN_PIN - #elif Z3_USE_ENDSTOP == _XMAX_ - #define Z3_MAX_PIN X_MAX_PIN - #elif Z3_USE_ENDSTOP == _XSTOP_ - #define Z3_MAX_PIN X_STOP_PIN - #elif Z3_USE_ENDSTOP == _YMIN_ - #define Z3_MAX_PIN Y_MIN_PIN - #elif Z3_USE_ENDSTOP == _YMAX_ - #define Z3_MAX_PIN Y_MAX_PIN - #elif Z3_USE_ENDSTOP == _YSTOP_ - #define Z3_MAX_PIN Y_STOP_PIN - #elif Z3_USE_ENDSTOP == _ZMIN_ - #define Z3_MAX_PIN Z_MIN_PIN - #elif Z3_USE_ENDSTOP == _ZMAX_ - #define Z3_MAX_PIN Z_MAX_PIN - #elif Z3_USE_ENDSTOP == _ZSTOP_ - #define Z3_MAX_PIN Z_STOP_PIN - #elif Z3_USE_ENDSTOP == _XDIAG_ - #define Z3_MAX_PIN X_DIAG_PIN - #elif Z3_USE_ENDSTOP == _YDIAG_ - #define Z3_MAX_PIN Y_DIAG_PIN - #elif Z3_USE_ENDSTOP == _ZDIAG_ - #define Z3_MAX_PIN Z_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E0DIAG_ - #define Z3_MAX_PIN E0_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E1DIAG_ - #define Z3_MAX_PIN E1_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E2DIAG_ - #define Z3_MAX_PIN E2_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E3DIAG_ - #define Z3_MAX_PIN E3_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E4DIAG_ - #define Z3_MAX_PIN E4_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E5DIAG_ - #define Z3_MAX_PIN E5_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E6DIAG_ - #define Z3_MAX_PIN E6_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E7DIAG_ - #define Z3_MAX_PIN E7_DIAG_PIN - #endif + #if Z_HOME_TO_MAX && !defined(Z3_MAX_PIN) + #if PIN_EXISTS(Z3_STOP) + #define Z3_MAX_PIN Z3_STOP_PIN + #elif Z3_USE_ENDSTOP == _XMIN_ + #define Z3_MAX_PIN X_MIN_PIN + #elif Z3_USE_ENDSTOP == _XMAX_ + #define Z3_MAX_PIN X_MAX_PIN + #elif Z3_USE_ENDSTOP == _XSTOP_ + #define Z3_MAX_PIN X_STOP_PIN + #elif Z3_USE_ENDSTOP == _YMIN_ + #define Z3_MAX_PIN Y_MIN_PIN + #elif Z3_USE_ENDSTOP == _YMAX_ + #define Z3_MAX_PIN Y_MAX_PIN + #elif Z3_USE_ENDSTOP == _YSTOP_ + #define Z3_MAX_PIN Y_STOP_PIN + #elif Z3_USE_ENDSTOP == _ZMIN_ + #define Z3_MAX_PIN Z_MIN_PIN + #elif Z3_USE_ENDSTOP == _ZMAX_ + #define Z3_MAX_PIN Z_MAX_PIN + #elif Z3_USE_ENDSTOP == _ZSTOP_ + #define Z3_MAX_PIN Z_STOP_PIN + #elif Z3_USE_ENDSTOP == _XDIAG_ + #define Z3_MAX_PIN X_DIAG_PIN + #elif Z3_USE_ENDSTOP == _YDIAG_ + #define Z3_MAX_PIN Y_DIAG_PIN + #elif Z3_USE_ENDSTOP == _ZDIAG_ + #define Z3_MAX_PIN Z_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E0DIAG_ + #define Z3_MAX_PIN E0_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E1DIAG_ + #define Z3_MAX_PIN E1_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E2DIAG_ + #define Z3_MAX_PIN E2_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E3DIAG_ + #define Z3_MAX_PIN E3_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E4DIAG_ + #define Z3_MAX_PIN E4_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E5DIAG_ + #define Z3_MAX_PIN E5_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E6DIAG_ + #define Z3_MAX_PIN E6_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E7DIAG_ + #define Z3_MAX_PIN E7_DIAG_PIN #endif - #else - #ifndef Z3_MIN_PIN - #if PIN_EXISTS(Z3_STOP) - #define Z3_MIN_PIN Z3_STOP_PIN - #elif Z3_USE_ENDSTOP == _XMIN_ - #define Z3_MIN_PIN X_MIN_PIN - #elif Z3_USE_ENDSTOP == _XMAX_ - #define Z3_MIN_PIN X_MAX_PIN - #elif Z3_USE_ENDSTOP == _XSTOP_ - #define Z3_MIN_PIN X_STOP_PIN - #elif Z3_USE_ENDSTOP == _YMIN_ - #define Z3_MIN_PIN Y_MIN_PIN - #elif Z3_USE_ENDSTOP == _YMAX_ - #define Z3_MIN_PIN Y_MAX_PIN - #elif Z3_USE_ENDSTOP == _YSTOP_ - #define Z3_MIN_PIN Y_STOP_PIN - #elif Z3_USE_ENDSTOP == _ZMIN_ - #define Z3_MIN_PIN Z_MIN_PIN - #elif Z3_USE_ENDSTOP == _ZMAX_ - #define Z3_MIN_PIN Z_MAX_PIN - #elif Z3_USE_ENDSTOP == _ZSTOP_ - #define Z3_MIN_PIN Z_STOP_PIN - #elif Z3_USE_ENDSTOP == _XDIAG_ - #define Z3_MIN_PIN X_DIAG_PIN - #elif Z3_USE_ENDSTOP == _YDIAG_ - #define Z3_MIN_PIN Y_DIAG_PIN - #elif Z3_USE_ENDSTOP == _ZDIAG_ - #define Z3_MIN_PIN Z_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E0DIAG_ - #define Z3_MIN_PIN E0_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E1DIAG_ - #define Z3_MIN_PIN E1_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E2DIAG_ - #define Z3_MIN_PIN E2_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E3DIAG_ - #define Z3_MIN_PIN E3_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E4DIAG_ - #define Z3_MIN_PIN E4_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E5DIAG_ - #define Z3_MIN_PIN E5_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E6DIAG_ - #define Z3_MIN_PIN E6_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E7DIAG_ - #define Z3_MIN_PIN E7_DIAG_PIN - #endif + #elif Z_HOME_TO_MIN && !defined(Z3_MIN_PIN) + #if PIN_EXISTS(Z3_STOP) + #define Z3_MIN_PIN Z3_STOP_PIN + #elif Z3_USE_ENDSTOP == _XMIN_ + #define Z3_MIN_PIN X_MIN_PIN + #elif Z3_USE_ENDSTOP == _XMAX_ + #define Z3_MIN_PIN X_MAX_PIN + #elif Z3_USE_ENDSTOP == _XSTOP_ + #define Z3_MIN_PIN X_STOP_PIN + #elif Z3_USE_ENDSTOP == _YMIN_ + #define Z3_MIN_PIN Y_MIN_PIN + #elif Z3_USE_ENDSTOP == _YMAX_ + #define Z3_MIN_PIN Y_MAX_PIN + #elif Z3_USE_ENDSTOP == _YSTOP_ + #define Z3_MIN_PIN Y_STOP_PIN + #elif Z3_USE_ENDSTOP == _ZMIN_ + #define Z3_MIN_PIN Z_MIN_PIN + #elif Z3_USE_ENDSTOP == _ZMAX_ + #define Z3_MIN_PIN Z_MAX_PIN + #elif Z3_USE_ENDSTOP == _ZSTOP_ + #define Z3_MIN_PIN Z_STOP_PIN + #elif Z3_USE_ENDSTOP == _XDIAG_ + #define Z3_MIN_PIN X_DIAG_PIN + #elif Z3_USE_ENDSTOP == _YDIAG_ + #define Z3_MIN_PIN Y_DIAG_PIN + #elif Z3_USE_ENDSTOP == _ZDIAG_ + #define Z3_MIN_PIN Z_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E0DIAG_ + #define Z3_MIN_PIN E0_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E1DIAG_ + #define Z3_MIN_PIN E1_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E2DIAG_ + #define Z3_MIN_PIN E2_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E3DIAG_ + #define Z3_MIN_PIN E3_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E4DIAG_ + #define Z3_MIN_PIN E4_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E5DIAG_ + #define Z3_MIN_PIN E5_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E6DIAG_ + #define Z3_MIN_PIN E6_DIAG_PIN + #elif Z3_USE_ENDSTOP == _E7DIAG_ + #define Z3_MIN_PIN E7_DIAG_PIN #endif #endif #endif #if NUM_Z_STEPPERS >= 4 - #if Z_HOME_TO_MAX - #ifndef Z4_MAX_PIN - #if PIN_EXISTS(Z4_STOP) - #define Z4_MAX_PIN Z4_STOP_PIN - #elif Z4_USE_ENDSTOP == _XMIN_ - #define Z4_MAX_PIN X_MIN_PIN - #elif Z4_USE_ENDSTOP == _XMAX_ - #define Z4_MAX_PIN X_MAX_PIN - #elif Z4_USE_ENDSTOP == _XSTOP_ - #define Z4_MAX_PIN X_STOP_PIN - #elif Z4_USE_ENDSTOP == _YMIN_ - #define Z4_MAX_PIN Y_MIN_PIN - #elif Z4_USE_ENDSTOP == _YMAX_ - #define Z4_MAX_PIN Y_MAX_PIN - #elif Z4_USE_ENDSTOP == _YSTOP_ - #define Z4_MAX_PIN Y_STOP_PIN - #elif Z4_USE_ENDSTOP == _ZMIN_ - #define Z4_MAX_PIN Z_MIN_PIN - #elif Z4_USE_ENDSTOP == _ZMAX_ - #define Z4_MAX_PIN Z_MAX_PIN - #elif Z4_USE_ENDSTOP == _ZSTOP_ - #define Z4_MAX_PIN Z_STOP_PIN - #elif Z4_USE_ENDSTOP == _XDIAG_ - #define Z4_MAX_PIN X_DIAG_PIN - #elif Z4_USE_ENDSTOP == _YDIAG_ - #define Z4_MAX_PIN Y_DIAG_PIN - #elif Z4_USE_ENDSTOP == _ZDIAG_ - #define Z4_MAX_PIN Z_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E0DIAG_ - #define Z4_MAX_PIN E0_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E1DIAG_ - #define Z4_MAX_PIN E1_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E2DIAG_ - #define Z4_MAX_PIN E2_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E3DIAG_ - #define Z4_MAX_PIN E3_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E4DIAG_ - #define Z4_MAX_PIN E4_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E5DIAG_ - #define Z4_MAX_PIN E5_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E6DIAG_ - #define Z4_MAX_PIN E6_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E7DIAG_ - #define Z4_MAX_PIN E7_DIAG_PIN - #endif + #if Z_HOME_TO_MAX && !defined(Z4_MAX_PIN) + #if PIN_EXISTS(Z4_STOP) + #define Z4_MAX_PIN Z4_STOP_PIN + #elif Z4_USE_ENDSTOP == _XMIN_ + #define Z4_MAX_PIN X_MIN_PIN + #elif Z4_USE_ENDSTOP == _XMAX_ + #define Z4_MAX_PIN X_MAX_PIN + #elif Z4_USE_ENDSTOP == _XSTOP_ + #define Z4_MAX_PIN X_STOP_PIN + #elif Z4_USE_ENDSTOP == _YMIN_ + #define Z4_MAX_PIN Y_MIN_PIN + #elif Z4_USE_ENDSTOP == _YMAX_ + #define Z4_MAX_PIN Y_MAX_PIN + #elif Z4_USE_ENDSTOP == _YSTOP_ + #define Z4_MAX_PIN Y_STOP_PIN + #elif Z4_USE_ENDSTOP == _ZMIN_ + #define Z4_MAX_PIN Z_MIN_PIN + #elif Z4_USE_ENDSTOP == _ZMAX_ + #define Z4_MAX_PIN Z_MAX_PIN + #elif Z4_USE_ENDSTOP == _ZSTOP_ + #define Z4_MAX_PIN Z_STOP_PIN + #elif Z4_USE_ENDSTOP == _XDIAG_ + #define Z4_MAX_PIN X_DIAG_PIN + #elif Z4_USE_ENDSTOP == _YDIAG_ + #define Z4_MAX_PIN Y_DIAG_PIN + #elif Z4_USE_ENDSTOP == _ZDIAG_ + #define Z4_MAX_PIN Z_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E0DIAG_ + #define Z4_MAX_PIN E0_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E1DIAG_ + #define Z4_MAX_PIN E1_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E2DIAG_ + #define Z4_MAX_PIN E2_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E3DIAG_ + #define Z4_MAX_PIN E3_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E4DIAG_ + #define Z4_MAX_PIN E4_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E5DIAG_ + #define Z4_MAX_PIN E5_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E6DIAG_ + #define Z4_MAX_PIN E6_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E7DIAG_ + #define Z4_MAX_PIN E7_DIAG_PIN #endif - #else - #ifndef Z4_MIN_PIN - #if PIN_EXISTS(Z4_STOP) - #define Z4_MIN_PIN Z4_STOP_PIN - #elif Z4_USE_ENDSTOP == _XMIN_ - #define Z4_MIN_PIN X_MIN_PIN - #elif Z4_USE_ENDSTOP == _XMAX_ - #define Z4_MIN_PIN X_MAX_PIN - #elif Z4_USE_ENDSTOP == _XSTOP_ - #define Z4_MIN_PIN X_STOP_PIN - #elif Z4_USE_ENDSTOP == _YMIN_ - #define Z4_MIN_PIN Y_MIN_PIN - #elif Z4_USE_ENDSTOP == _YMAX_ - #define Z4_MIN_PIN Y_MAX_PIN - #elif Z4_USE_ENDSTOP == _YSTOP_ - #define Z4_MIN_PIN Y_STOP_PIN - #elif Z4_USE_ENDSTOP == _ZMIN_ - #define Z4_MIN_PIN Z_MIN_PIN - #elif Z4_USE_ENDSTOP == _ZMAX_ - #define Z4_MIN_PIN Z_MAX_PIN - #elif Z4_USE_ENDSTOP == _ZSTOP_ - #define Z4_MIN_PIN Z_STOP_PIN - #elif Z4_USE_ENDSTOP == _XDIAG_ - #define Z4_MIN_PIN X_DIAG_PIN - #elif Z4_USE_ENDSTOP == _YDIAG_ - #define Z4_MIN_PIN Y_DIAG_PIN - #elif Z4_USE_ENDSTOP == _ZDIAG_ - #define Z4_MIN_PIN Z_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E0DIAG_ - #define Z4_MIN_PIN E0_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E1DIAG_ - #define Z4_MIN_PIN E1_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E2DIAG_ - #define Z4_MIN_PIN E2_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E3DIAG_ - #define Z4_MIN_PIN E3_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E4DIAG_ - #define Z4_MIN_PIN E4_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E5DIAG_ - #define Z4_MIN_PIN E5_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E6DIAG_ - #define Z4_MIN_PIN E6_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E7DIAG_ - #define Z4_MIN_PIN E7_DIAG_PIN - #endif + #elif Z_HOME_TO_MIN && !defined(Z4_MIN_PIN) + #if PIN_EXISTS(Z4_STOP) + #define Z4_MIN_PIN Z4_STOP_PIN + #elif Z4_USE_ENDSTOP == _XMIN_ + #define Z4_MIN_PIN X_MIN_PIN + #elif Z4_USE_ENDSTOP == _XMAX_ + #define Z4_MIN_PIN X_MAX_PIN + #elif Z4_USE_ENDSTOP == _XSTOP_ + #define Z4_MIN_PIN X_STOP_PIN + #elif Z4_USE_ENDSTOP == _YMIN_ + #define Z4_MIN_PIN Y_MIN_PIN + #elif Z4_USE_ENDSTOP == _YMAX_ + #define Z4_MIN_PIN Y_MAX_PIN + #elif Z4_USE_ENDSTOP == _YSTOP_ + #define Z4_MIN_PIN Y_STOP_PIN + #elif Z4_USE_ENDSTOP == _ZMIN_ + #define Z4_MIN_PIN Z_MIN_PIN + #elif Z4_USE_ENDSTOP == _ZMAX_ + #define Z4_MIN_PIN Z_MAX_PIN + #elif Z4_USE_ENDSTOP == _ZSTOP_ + #define Z4_MIN_PIN Z_STOP_PIN + #elif Z4_USE_ENDSTOP == _XDIAG_ + #define Z4_MIN_PIN X_DIAG_PIN + #elif Z4_USE_ENDSTOP == _YDIAG_ + #define Z4_MIN_PIN Y_DIAG_PIN + #elif Z4_USE_ENDSTOP == _ZDIAG_ + #define Z4_MIN_PIN Z_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E0DIAG_ + #define Z4_MIN_PIN E0_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E1DIAG_ + #define Z4_MIN_PIN E1_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E2DIAG_ + #define Z4_MIN_PIN E2_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E3DIAG_ + #define Z4_MIN_PIN E3_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E4DIAG_ + #define Z4_MIN_PIN E4_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E5DIAG_ + #define Z4_MIN_PIN E5_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E6DIAG_ + #define Z4_MIN_PIN E6_DIAG_PIN + #elif Z4_USE_ENDSTOP == _E7DIAG_ + #define Z4_MIN_PIN E7_DIAG_PIN #endif #endif #endif diff --git a/buildroot/tests/STM32F103RE_creality b/buildroot/tests/STM32F103RE_creality index d407dc4301..834580fac8 100755 --- a/buildroot/tests/STM32F103RE_creality +++ b/buildroot/tests/STM32F103RE_creality @@ -11,12 +11,17 @@ set -e # use_example_configs "Creality/Ender-3 V2/CrealityV422/CrealityUI" opt_enable MARLIN_DEV_MODE BUFFER_MONITORING BLTOUCH AUTO_BED_LEVELING_BILINEAR Z_SAFE_HOMING -exec_test $1 $2 "Ender-3 v2 with CrealityUI" "$3" +exec_test $1 $2 "Ender-3 v2 - CrealityUI" "$3" use_example_configs "Creality/Ender-3 V2/CrealityV422/CrealityUI" opt_disable DWIN_CREALITY_LCD opt_enable DWIN_CREALITY_LCD_JYERSUI AUTO_BED_LEVELING_BILINEAR PROBE_MANUALLY -exec_test $1 $2 "Ender-3 v2 with JyersUI" "$3" +exec_test $1 $2 "Ender-3 v2 - JyersUI (ABL Bilinear/Manual)" "$3" + +use_example_configs "Creality/Ender-3 V2/CrealityV422/CrealityUI" +opt_disable DWIN_CREALITY_LCD PIDTEMP +opt_enable DWIN_MARLINUI_LANDSCAPE LCD_ENDSTOP_TEST AUTO_BED_LEVELING_UBL BLTOUCH Z_SAFE_HOMING MPCTEMP MPC_AUTOTUNE +exec_test $1 $2 "Ender-3 v2 - MarlinUI (UBL+BLTOUCH, MPCTEMP, LCD_ENDSTOP_TEST)" "$3" use_example_configs "Creality/Ender-3 S1/STM32F1" opt_disable DWIN_CREALITY_LCD Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN AUTO_BED_LEVELING_BILINEAR CANCEL_OBJECTS FWRETRACT @@ -25,11 +30,7 @@ opt_enable DWIN_LCD_PROUI INDIVIDUAL_AXIS_HOMING_SUBMENU SET_PROGRESS_MANUALLY S BLTOUCH Z_SAFE_HOMING AUTO_BED_LEVELING_UBL MESH_EDIT_MENU \ LIMITED_MAX_FR_EDITING LIMITED_MAX_ACCEL_EDITING LIMITED_JERK_EDITING BAUD_RATE_GCODE opt_set PREHEAT_3_LABEL '"CUSTOM"' PREHEAT_3_TEMP_HOTEND 240 PREHEAT_3_TEMP_BED 60 PREHEAT_3_FAN_SPEED 128 -exec_test $1 $2 "Ender-3 S1 with ProUI (PIDTEMP)" "$3" - -opt_disable PIDTEMP -opt_enable MPCTEMP MPC_AUTOTUNE -exec_test $1 $2 "Ender-3 S1 with ProUI (MPCTEMP)" "$3" +exec_test $1 $2 "Ender-3 S1 - ProUI (PIDTEMP)" "$3" restore_configs opt_set MOTHERBOARD BOARD_CREALITY_V452 SERIAL_PORT 1 From 726de7e82136c1a718b0c62425231eb0662592b6 Mon Sep 17 00:00:00 2001 From: Nomis-97 <72187111+Nomis-97@users.noreply.github.com> Date: Sat, 22 Apr 2023 10:16:19 +0200 Subject: [PATCH 305/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20MKS=20Gen-L=20MOSF?= =?UTF-8?q?ETs=20(#25717)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/ramps/pins_MKS_GEN_L.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_L.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L.h index 5d1136e4ef..06bb35c72b 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_L.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_L.h @@ -38,10 +38,10 @@ // Heaters / Fans // -#define MOSFET_A_PIN 9 // HE0 -#define MOSFET_B_PIN 8 // HE1 -#define MOSFET_C_PIN 10 // HBED -#define FAN0_PIN 7 +#define MOSFET_A_PIN 10 // HE0 +#define MOSFET_B_PIN 7 // HE1 or FAN Hotend Cooling +#define MOSFET_C_PIN 8 // HBED +#define FAN0_PIN 9 // FAN Part Cooling // // CS Pins wired to avoid conflict with the LCD From fba1f838551d13339df3a0f6f82c46b92631c730 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sat, 22 Apr 2023 21:02:51 +1200 Subject: [PATCH 306/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20Anycubic=20PlayTun?= =?UTF-8?q?e=20(#25728)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25690 --- Marlin/src/lcd/extui/anycubic/Tunes.h | 2 +- Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/lcd/extui/anycubic/Tunes.h b/Marlin/src/lcd/extui/anycubic/Tunes.h index a05107738d..be8bc7223c 100644 --- a/Marlin/src/lcd/extui/anycubic/Tunes.h +++ b/Marlin/src/lcd/extui/anycubic/Tunes.h @@ -61,7 +61,7 @@ n_END=10000 // end of tune marker namespace Anycubic { - void PlayTune(const uint8_t beeperPin, const uint16_t *tune, const uint8_t speed); + void PlayTune(const uint16_t *tune, const uint8_t speed); // Only uncomment the tunes you are using to save memory // This will help you write tunes! diff --git a/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp index 38603f5679..03eba4c5b3 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp @@ -40,8 +40,8 @@ using namespace ExtUI; namespace Anycubic { - FileList FileNavigator::filelist; // Instance of the Marlin file API - char FileNavigator::currentfoldername[MAX_PATH_LEN]; // Current folder path + FileList FileNavigator::filelist; // Instance of the Marlin file API + char FileNavigator::currentfoldername[MAX_PATH_LEN + 1]; // Current folder path uint16_t FileNavigator::lastindex; uint8_t FileNavigator::folderdepth; uint16_t FileNavigator::currentindex; // override the panel request From 89ccede139963091768985eeb4ca5a6e3111647c Mon Sep 17 00:00:00 2001 From: "Alexey D. Filimonov" Date: Sat, 22 Apr 2023 12:06:19 +0300 Subject: [PATCH 307/659] =?UTF-8?q?=F0=9F=8E=A8=20Clean=20up=20TFT=20Color?= =?UTF-8?q?=20UI=20display=20items=20(#25712)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/lcd/tft/ui_1024x600.cpp | 14 +++++----- Marlin/src/lcd/tft/ui_320x240.cpp | 14 +++++----- Marlin/src/lcd/tft/ui_480x320.cpp | 14 +++++----- Marlin/src/lcd/tft/ui_common.h | 41 +++++++++--------------------- 4 files changed, 33 insertions(+), 50 deletions(-) diff --git a/Marlin/src/lcd/tft/ui_1024x600.cpp b/Marlin/src/lcd/tft/ui_1024x600.cpp index 6b628bc4cf..638e32a9b3 100644 --- a/Marlin/src/lcd/tft/ui_1024x600.cpp +++ b/Marlin/src/lcd/tft/ui_1024x600.cpp @@ -228,25 +228,25 @@ void MarlinUI::draw_status_screen() { for (i = 0 ; i < ITEMS_COUNT; i++) { x = (TFT_WIDTH / ITEMS_COUNT - 80) / 2 + (TFT_WIDTH * i / ITEMS_COUNT); switch (i) { - #ifdef ITEM_E0 + #if HAS_EXTRUDERS case ITEM_E0: draw_heater_status(x, y, H_E0); break; #endif - #ifdef ITEM_E1 + #if HAS_MULTI_HOTEND case ITEM_E1: draw_heater_status(x, y, H_E1); break; #endif - #ifdef ITEM_E2 + #if HOTENDS > 2 case ITEM_E2: draw_heater_status(x, y, H_E2); break; #endif - #ifdef ITEM_BED + #if HAS_HEATED_BED case ITEM_BED: draw_heater_status(x, y, H_BED); break; #endif - #ifdef ITEM_CHAMBER + #if HAS_TEMP_CHAMBER case ITEM_CHAMBER: draw_heater_status(x, y, H_CHAMBER); break; #endif - #ifdef ITEM_COOLER + #if HAS_TEMP_COOLER case ITEM_COOLER: draw_heater_status(x, y, H_COOLER); break; #endif - #ifdef ITEM_FAN + #if HAS_FAN case ITEM_FAN: draw_fan_status(x, y, blink); break; #endif } diff --git a/Marlin/src/lcd/tft/ui_320x240.cpp b/Marlin/src/lcd/tft/ui_320x240.cpp index 11e4730239..e606dca7ce 100644 --- a/Marlin/src/lcd/tft/ui_320x240.cpp +++ b/Marlin/src/lcd/tft/ui_320x240.cpp @@ -230,25 +230,25 @@ void MarlinUI::draw_status_screen() { for (i = 0 ; i < ITEMS_COUNT; i++) { x = (TFT_WIDTH / ITEMS_COUNT - 64) / 2 + (TFT_WIDTH * i / ITEMS_COUNT); switch (i) { - #ifdef ITEM_E0 + #if HAS_EXTRUDERS case ITEM_E0: draw_heater_status(x, y, H_E0); break; #endif - #ifdef ITEM_E1 + #if HAS_MULTI_HOTEND case ITEM_E1: draw_heater_status(x, y, H_E1); break; #endif - #ifdef ITEM_E2 + #if HOTENDS > 2 case ITEM_E2: draw_heater_status(x, y, H_E2); break; #endif - #ifdef ITEM_BED + #if HAS_HEATED_BED case ITEM_BED: draw_heater_status(x, y, H_BED); break; #endif - #ifdef ITEM_CHAMBER + #if HAS_TEMP_CHAMBER case ITEM_CHAMBER: draw_heater_status(x, y, H_CHAMBER); break; #endif - #ifdef ITEM_COOLER + #if HAS_TEMP_COOLER case ITEM_COOLER: draw_heater_status(x, y, H_COOLER); break; #endif - #ifdef ITEM_FAN + #if HAS_FAN case ITEM_FAN: draw_fan_status(x, y, blink); break; #endif } diff --git a/Marlin/src/lcd/tft/ui_480x320.cpp b/Marlin/src/lcd/tft/ui_480x320.cpp index 54762da671..edc3d321f2 100644 --- a/Marlin/src/lcd/tft/ui_480x320.cpp +++ b/Marlin/src/lcd/tft/ui_480x320.cpp @@ -228,25 +228,25 @@ void MarlinUI::draw_status_screen() { for (i = 0 ; i < ITEMS_COUNT; i++) { x = (TFT_WIDTH / ITEMS_COUNT - 80) / 2 + (TFT_WIDTH * i / ITEMS_COUNT); switch (i) { - #ifdef ITEM_E0 + #if HAS_EXTRUDERS case ITEM_E0: draw_heater_status(x, y, H_E0); break; #endif - #ifdef ITEM_E1 + #if HAS_MULTI_HOTEND case ITEM_E1: draw_heater_status(x, y, H_E1); break; #endif - #ifdef ITEM_E2 + #if HOTENDS > 2 case ITEM_E2: draw_heater_status(x, y, H_E2); break; #endif - #ifdef ITEM_BED + #if HAS_HEATED_BED case ITEM_BED: draw_heater_status(x, y, H_BED); break; #endif - #ifdef ITEM_CHAMBER + #if HAS_TEMP_CHAMBER case ITEM_CHAMBER: draw_heater_status(x, y, H_CHAMBER); break; #endif - #ifdef ITEM_COOLER + #if HAS_TEMP_COOLER case ITEM_COOLER: draw_heater_status(x, y, H_COOLER); break; #endif - #ifdef ITEM_FAN + #if HAS_FAN case ITEM_FAN: draw_fan_status(x, y, blink); break; #endif } diff --git a/Marlin/src/lcd/tft/ui_common.h b/Marlin/src/lcd/tft/ui_common.h index 7329c31a52..2a81ee2114 100644 --- a/Marlin/src/lcd/tft/ui_common.h +++ b/Marlin/src/lcd/tft/ui_common.h @@ -57,32 +57,15 @@ void menu_item(const uint8_t row, bool sel = false); #define ABSOLUTE_ZERO -273.15 -#if HAS_TEMP_CHAMBER && HAS_MULTI_HOTEND - #define ITEM_E0 0 - #define ITEM_E1 1 - #define ITEM_BED 2 - #define ITEM_CHAMBER 3 - #define ITEM_FAN 4 - #define ITEMS_COUNT 5 -#elif HAS_TEMP_CHAMBER - #define ITEM_E0 0 - #define ITEM_BED 1 - #define ITEM_CHAMBER 2 - #define ITEM_FAN 3 - #define ITEMS_COUNT 4 -#elif HAS_TEMP_COOLER - #define ITEM_COOLER 0 - #define ITEM_FAN 1 - #define ITEMS_COUNT 2 -#elif HAS_MULTI_HOTEND - #define ITEM_E0 0 - #define ITEM_E1 1 - #define ITEM_BED 2 - #define ITEM_FAN 3 - #define ITEMS_COUNT 4 -#else - #define ITEM_E0 0 - #define ITEM_BED 1 - #define ITEM_FAN 2 - #define ITEMS_COUNT 3 -#endif +enum { + OPTITEM(HAS_EXTRUDERS, ITEM_E0) + OPTITEM(HAS_MULTI_HOTEND, ITEM_E1) + #if HOTENDS > 2 + ITEM_E2, + #endif + OPTITEM(HAS_HEATED_BED, ITEM_BED) + OPTITEM(HAS_TEMP_CHAMBER, ITEM_CHAMBER) + OPTITEM(HAS_TEMP_COOLER, ITEM_COOLER) + OPTITEM(HAS_FAN, ITEM_FAN) + ITEMS_COUNT +}; From c8ed7950f40f9f454fc769b02d53f1086b17576c Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sat, 22 Apr 2023 21:09:17 +1200 Subject: [PATCH 308/659] =?UTF-8?q?=F0=9F=94=A7=20Permit=20extrude=20witho?= =?UTF-8?q?ut=20hotend=20(#25709)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/gcode/gcode.cpp | 2 +- Marlin/src/gcode/gcode.h | 2 +- Marlin/src/gcode/temp/M104_M109.cpp | 4 +- Marlin/src/inc/Conditionals_LCD.h | 83 +++++++------ Marlin/src/inc/Conditionals_adv.h | 178 +++++++++++++--------------- Marlin/src/inc/SanityCheck.h | 143 +++++++++++----------- Marlin/src/module/temperature.cpp | 2 +- 7 files changed, 201 insertions(+), 213 deletions(-) diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 0711d39204..9d1014e8bf 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -581,7 +581,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 102: M102(); break; // M102: Configure Bed Distance Sensor #endif - #if HAS_EXTRUDERS + #if HAS_HOTEND case 104: M104(); break; // M104: Set hot end temperature case 109: M109(); break; // M109: Wait for hotend temperature to reach target #endif diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 8493d7f291..d49c544623 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -716,7 +716,7 @@ private: static void M102_report(const bool forReplay=true); #endif - #if HAS_EXTRUDERS + #if HAS_HOTEND static void M104_M109(const bool isM109); FORCE_INLINE static void M104() { M104_M109(false); } FORCE_INLINE static void M109() { M104_M109(true); } diff --git a/Marlin/src/gcode/temp/M104_M109.cpp b/Marlin/src/gcode/temp/M104_M109.cpp index 331ceeb61d..db150d5518 100644 --- a/Marlin/src/gcode/temp/M104_M109.cpp +++ b/Marlin/src/gcode/temp/M104_M109.cpp @@ -28,7 +28,7 @@ #include "../../inc/MarlinConfigPre.h" -#if HAS_EXTRUDERS +#if HAS_HOTEND #include "../gcode.h" #include "../../module/temperature.h" @@ -135,4 +135,4 @@ void GcodeSuite::M104_M109(const bool isM109) { (void)thermalManager.wait_for_hotend(target_extruder, no_wait_for_cooling); } -#endif // EXTRUDERS +#endif // HAS_HOTEND diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 5cc1d07b09..32a2eda7c7 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -624,8 +624,6 @@ #undef MIXING_EXTRUDER #undef HOTEND_IDLE_TIMEOUT #undef DISABLE_E - #undef THERMAL_PROTECTION_HOTENDS - #undef PREVENT_COLD_EXTRUSION #undef PREVENT_LENGTHY_EXTRUDE #undef FILAMENT_RUNOUT_SENSOR #undef FILAMENT_RUNOUT_DISTANCE_MM @@ -657,9 +655,6 @@ #else #define E_STEPPERS 1 #endif - #if !HAS_SWITCHING_NOZZLE - #define HOTENDS E_STEPPERS - #endif #elif ENABLED(MIXING_EXTRUDER) // Multiple feeds are mixed proportionally @@ -691,16 +686,7 @@ #define SINGLENOZZLE #endif -#if EITHER(SINGLENOZZLE, MIXING_EXTRUDER) // One hotend, one thermistor, no XY offset - #undef HOTENDS - #define HOTENDS 1 - #undef HOTEND_OFFSET_X - #undef HOTEND_OFFSET_Y -#endif - -#ifndef HOTENDS - #define HOTENDS EXTRUDERS -#endif +// Default E steppers / manual motion is one per extruder #ifndef E_STEPPERS #define E_STEPPERS EXTRUDERS #endif @@ -708,6 +694,45 @@ #define E_MANUAL EXTRUDERS #endif +// Number of hotends... +#if EITHER(SINGLENOZZLE, MIXING_EXTRUDER) // Only one for singlenozzle or mixing extruder + #define HOTENDS 1 +#elif HAS_SWITCHING_EXTRUDER && !HAS_SWITCHING_NOZZLE // One for each pair of abstract "extruders" + #define HOTENDS E_STEPPERS +#elif TEMP_SENSOR_0 + #define HOTENDS EXTRUDERS // One per extruder if at least one heater exists +#else + #define HOTENDS 0 // A machine with no hotends at all can still extrude +#endif + +// More than one hotend... +#if HOTENDS > 1 + #define HAS_MULTI_HOTEND 1 + #define HAS_HOTEND_OFFSET 1 + #ifndef HOTEND_OFFSET_X + #define HOTEND_OFFSET_X { 0 } // X offsets for each extruder + #endif + #ifndef HOTEND_OFFSET_Y + #define HOTEND_OFFSET_Y { 0 } // Y offsets for each extruder + #endif + #ifndef HOTEND_OFFSET_Z + #define HOTEND_OFFSET_Z { 0 } // Z offsets for each extruder + #endif +#else + #undef HOTEND_OFFSET_X + #undef HOTEND_OFFSET_Y + #undef HOTEND_OFFSET_Z +#endif + +// At least one hotend... +#if HOTENDS + #define HAS_HOTEND 1 + #ifndef HOTEND_OVERSHOOT + #define HOTEND_OVERSHOOT 15 + #endif +#endif + +// Clean up E-stepper-based settings... #if E_STEPPERS <= 7 #undef INVERT_E7_DIR #undef E7_DRIVER_TYPE @@ -1037,19 +1062,6 @@ #define E_INDEX_N(E) 0 #endif -#if HOTENDS - #define HAS_HOTEND 1 - #ifndef HOTEND_OVERSHOOT - #define HOTEND_OVERSHOOT 15 - #endif - #if HOTENDS > 1 - #define HAS_MULTI_HOTEND 1 - #define HAS_HOTEND_OFFSET 1 - #endif -#else - #undef PID_PARAMS_PER_HOTEND -#endif - // Helper macros for extruder and hotend arrays #define _EXTRUDER_LOOP(E) for (int8_t E = 0; E < EXTRUDERS; E++) #define EXTRUDER_LOOP() _EXTRUDER_LOOP(e) @@ -1061,21 +1073,6 @@ #define ARRAY_BY_HOTENDS(V...) ARRAY_N(HOTENDS, V) #define ARRAY_BY_HOTENDS1(v1) ARRAY_N_1(HOTENDS, v1) -/** - * Default hotend offsets, if not defined - */ -#if HAS_HOTEND_OFFSET - #ifndef HOTEND_OFFSET_X - #define HOTEND_OFFSET_X { 0 } // X offsets for each extruder - #endif - #ifndef HOTEND_OFFSET_Y - #define HOTEND_OFFSET_Y { 0 } // Y offsets for each extruder - #endif - #ifndef HOTEND_OFFSET_Z - #define HOTEND_OFFSET_Z { 0 } // Z offsets for each extruder - #endif -#endif - /** * Disable unused SINGLENOZZLE sub-options */ diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 3a3daa84ac..c9c8fdf2d5 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -184,7 +184,6 @@ #if !HAS_EXTRUDERS #define NO_VOLUMETRICS #undef ADVANCED_PAUSE_FEATURE - #undef AUTOTEMP #undef DISABLE_IDLE_E #undef EXTRUDER_RUNOUT_PREVENT #undef FILAMENT_LOAD_UNLOAD_GCODES @@ -193,11 +192,8 @@ #undef LIN_ADVANCE #undef MANUAL_E_MOVES_RELATIVE #undef PID_EXTRUSION_SCALING - #undef PIDTEMP #undef SHOW_TEMP_ADC_VALUES #undef STEALTHCHOP_E - #undef THERMAL_PROTECTION_PERIOD - #undef WATCH_TEMP_PERIOD #endif #if ENABLED(DISABLE_X) && !defined(DISABLE_IDLE_X) @@ -237,22 +233,47 @@ #endif #undef _OR_HAS_DI -#if HOTENDS <= 7 +// Remove hotend-dependent settings +#if HOTENDS < 8 #undef E7_AUTO_FAN_PIN - #if HOTENDS <= 6 + #undef HEATER_7_MAXTEMP + #undef HEATER_7_MINTEMP + #if HOTENDS < 7 #undef E6_AUTO_FAN_PIN - #if HOTENDS <= 5 + #undef HEATER_6_MAXTEMP + #undef HEATER_6_MINTEMP + #if HOTENDS < 6 #undef E5_AUTO_FAN_PIN - #if HOTENDS <= 4 + #undef HEATER_5_MAXTEMP + #undef HEATER_5_MINTEMP + #if HOTENDS < 5 #undef E4_AUTO_FAN_PIN - #if HOTENDS <= 3 + #undef HEATER_4_MAXTEMP + #undef HEATER_4_MINTEMP + #if HOTENDS < 4 #undef E3_AUTO_FAN_PIN - #if HOTENDS <= 2 + #undef HEATER_3_MAXTEMP + #undef HEATER_3_MINTEMP + #if HOTENDS < 3 #undef E2_AUTO_FAN_PIN - #if HOTENDS <= 1 + #undef HEATER_2_MAXTEMP + #undef HEATER_2_MINTEMP + #if HOTENDS < 2 #undef E1_AUTO_FAN_PIN - #if HOTENDS == 0 + #undef HEATER_1_MAXTEMP + #undef HEATER_1_MINTEMP + #if HOTENDS < 1 + #undef AUTOTEMP #undef E0_AUTO_FAN_PIN + #undef HEATER_0_MAXTEMP + #undef HEATER_0_MINTEMP + #undef PID_PARAMS_PER_HOTEND + #undef PIDTEMP + #undef MPCTEMP + #undef PREVENT_COLD_EXTRUSION + #undef THERMAL_PROTECTION_HOTENDS + #undef THERMAL_PROTECTION_PERIOD + #undef WATCH_TEMP_PERIOD #endif #endif #endif @@ -325,15 +346,13 @@ #define TEMP_SENSOR_0_IS_AD8495 1 #elif TEMP_SENSOR_0 == -1 #define TEMP_SENSOR_0_IS_AD595 1 -#elif TEMP_SENSOR_0 == 1000 - #define TEMP_SENSOR_0_IS_CUSTOM 1 #elif TEMP_SENSOR_0 == 998 || TEMP_SENSOR_0 == 999 #define TEMP_SENSOR_0_IS_DUMMY 1 #elif TEMP_SENSOR_0 > 0 #define TEMP_SENSOR_0_IS_THERMISTOR 1 -#else - #undef HEATER_0_MINTEMP - #undef HEATER_0_MAXTEMP + #if TEMP_SENSOR_0 == 1000 + #define TEMP_SENSOR_0_IS_CUSTOM 1 + #endif #endif #if TEMP_SENSOR_IS_MAX_TC(1) @@ -370,15 +389,13 @@ #define TEMP_SENSOR_1_IS_AD8495 1 #elif TEMP_SENSOR_1 == -1 #define TEMP_SENSOR_1_IS_AD595 1 -#elif TEMP_SENSOR_1 == 1000 - #define TEMP_SENSOR_1_IS_CUSTOM 1 #elif TEMP_SENSOR_1 == 998 || TEMP_SENSOR_1 == 999 #define TEMP_SENSOR_1_IS_DUMMY 1 #elif TEMP_SENSOR_1 > 0 #define TEMP_SENSOR_1_IS_THERMISTOR 1 -#else - #undef HEATER_1_MINTEMP - #undef HEATER_1_MAXTEMP + #if TEMP_SENSOR_1 == 1000 + #define TEMP_SENSOR_1_IS_CUSTOM 1 + #endif #endif #if TEMP_SENSOR_IS_MAX_TC(2) @@ -415,70 +432,58 @@ #define TEMP_SENSOR_2_IS_AD8495 1 #elif TEMP_SENSOR_2 == -1 #define TEMP_SENSOR_2_IS_AD595 1 -#elif TEMP_SENSOR_2 == 1000 - #define TEMP_SENSOR_2_IS_CUSTOM 1 #elif TEMP_SENSOR_2 == 998 || TEMP_SENSOR_2 == 999 #define TEMP_SENSOR_2_IS_DUMMY 1 #elif TEMP_SENSOR_2 > 0 #define TEMP_SENSOR_2_IS_THERMISTOR 1 -#else - #undef HEATER_2_MINTEMP - #undef HEATER_2_MAXTEMP + #if TEMP_SENSOR_2 == 1000 + #define TEMP_SENSOR_2_IS_CUSTOM 1 + #endif #endif -#if TEMP_SENSOR_3 == 1000 - #define TEMP_SENSOR_3_IS_CUSTOM 1 -#elif TEMP_SENSOR_3 == 998 || TEMP_SENSOR_3 == 999 +#if TEMP_SENSOR_3 == 998 || TEMP_SENSOR_3 == 999 #define TEMP_SENSOR_3_IS_DUMMY 1 #elif TEMP_SENSOR_3 > 0 #define TEMP_SENSOR_3_IS_THERMISTOR 1 -#elif !TEMP_SENSOR_3 - #undef HEATER_3_MINTEMP - #undef HEATER_3_MAXTEMP + #if TEMP_SENSOR_3 == 1000 + #define TEMP_SENSOR_3_IS_CUSTOM 1 + #endif #endif -#if TEMP_SENSOR_4 == 1000 - #define TEMP_SENSOR_4_IS_CUSTOM 1 -#elif TEMP_SENSOR_4 == 998 || TEMP_SENSOR_4 == 999 +#if TEMP_SENSOR_4 == 998 || TEMP_SENSOR_4 == 999 #define TEMP_SENSOR_4_IS_DUMMY 1 #elif TEMP_SENSOR_4 > 0 #define TEMP_SENSOR_4_IS_THERMISTOR 1 -#elif !TEMP_SENSOR_4 - #undef HEATER_4_MINTEMP - #undef HEATER_4_MAXTEMP + #if TEMP_SENSOR_4 == 1000 + #define TEMP_SENSOR_4_IS_CUSTOM 1 + #endif #endif -#if TEMP_SENSOR_5 == 1000 - #define TEMP_SENSOR_5_IS_CUSTOM 1 -#elif TEMP_SENSOR_5 == 998 || TEMP_SENSOR_5 == 999 +#if TEMP_SENSOR_5 == 998 || TEMP_SENSOR_5 == 999 #define TEMP_SENSOR_5_IS_DUMMY 1 #elif TEMP_SENSOR_5 > 0 #define TEMP_SENSOR_5_IS_THERMISTOR 1 -#elif !TEMP_SENSOR_5 - #undef HEATER_5_MINTEMP - #undef HEATER_5_MAXTEMP + #if TEMP_SENSOR_5 == 1000 + #define TEMP_SENSOR_5_IS_CUSTOM 1 + #endif #endif -#if TEMP_SENSOR_6 == 1000 - #define TEMP_SENSOR_6_IS_CUSTOM 1 -#elif TEMP_SENSOR_6 == 998 || TEMP_SENSOR_6 == 999 +#if TEMP_SENSOR_6 == 998 || TEMP_SENSOR_6 == 999 #define TEMP_SENSOR_6_IS_DUMMY 1 #elif TEMP_SENSOR_6 > 0 #define TEMP_SENSOR_6_IS_THERMISTOR 1 -#elif !TEMP_SENSOR_6 - #undef HEATER_6_MINTEMP - #undef HEATER_6_MAXTEMP + #if TEMP_SENSOR_6 == 1000 + #define TEMP_SENSOR_6_IS_CUSTOM 1 + #endif #endif -#if TEMP_SENSOR_7 == 1000 - #define TEMP_SENSOR_7_IS_CUSTOM 1 -#elif TEMP_SENSOR_7 == 998 || TEMP_SENSOR_7 == 999 +#if TEMP_SENSOR_7 == 998 || TEMP_SENSOR_7 == 999 #define TEMP_SENSOR_7_IS_DUMMY 1 #elif TEMP_SENSOR_7 > 0 #define TEMP_SENSOR_7_IS_THERMISTOR 1 -#elif !TEMP_SENSOR_7 - #undef HEATER_7_MINTEMP - #undef HEATER_7_MAXTEMP + #if TEMP_SENSOR_7 == 1000 + #define TEMP_SENSOR_7_IS_CUSTOM 1 + #endif #endif #if TEMP_SENSOR_IS_MAX_TC(REDUNDANT) @@ -542,12 +547,12 @@ #define TEMP_SENSOR_REDUNDANT_IS_AD8495 1 #elif TEMP_SENSOR_REDUNDANT == -1 #define TEMP_SENSOR_REDUNDANT_IS_AD595 1 +#elif TEMP_SENSOR_REDUNDANT == 998 || TEMP_SENSOR_REDUNDANT == 999 + #error "Dummy sensors are not supported for TEMP_SENSOR_REDUNDANT." #elif TEMP_SENSOR_REDUNDANT > 0 #define TEMP_SENSOR_REDUNDANT_IS_THERMISTOR 1 #if TEMP_SENSOR_REDUNDANT == 1000 #define TEMP_SENSOR_REDUNDANT_IS_CUSTOM 1 - #elif TEMP_SENSOR_REDUNDANT == 998 || TEMP_SENSOR_REDUNDANT == 999 - #error "Dummy sensors are not supported for TEMP_SENSOR_REDUNDANT." #endif #endif @@ -572,16 +577,13 @@ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_3." #elif TEMP_SENSOR_3 == -1 #define TEMP_SENSOR_3_IS_AD595 1 +#elif TEMP_SENSOR_3 == 998 || TEMP_SENSOR_3 == 999 + #define TEMP_SENSOR_3_IS_DUMMY 1 #elif TEMP_SENSOR_3 > 0 #define TEMP_SENSOR_3_IS_THERMISTOR 1 #if TEMP_SENSOR_3 == 1000 #define TEMP_SENSOR_3_IS_CUSTOM 1 - #elif TEMP_SENSOR_3 == 998 || TEMP_SENSOR_3 == 999 - #define TEMP_SENSOR_3_IS_DUMMY 1 #endif -#else - #undef HEATER_3_MINTEMP - #undef HEATER_3_MAXTEMP #endif #if TEMP_SENSOR_4 == -4 @@ -592,16 +594,13 @@ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_4." #elif TEMP_SENSOR_4 == -1 #define TEMP_SENSOR_4_IS_AD595 1 +#elif TEMP_SENSOR_4 == 998 || TEMP_SENSOR_4 == 999 + #define TEMP_SENSOR_4_IS_DUMMY 1 #elif TEMP_SENSOR_4 > 0 #define TEMP_SENSOR_4_IS_THERMISTOR 1 #if TEMP_SENSOR_4 == 1000 #define TEMP_SENSOR_4_IS_CUSTOM 1 - #elif TEMP_SENSOR_4 == 998 || TEMP_SENSOR_4 == 999 - #define TEMP_SENSOR_4_IS_DUMMY 1 #endif -#else - #undef HEATER_4_MINTEMP - #undef HEATER_4_MAXTEMP #endif #if TEMP_SENSOR_5 == -4 @@ -612,16 +611,13 @@ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_5." #elif TEMP_SENSOR_5 == -1 #define TEMP_SENSOR_5_IS_AD595 1 +#elif TEMP_SENSOR_5 == 998 || TEMP_SENSOR_5 == 999 + #define TEMP_SENSOR_5_IS_DUMMY 1 #elif TEMP_SENSOR_5 > 0 #define TEMP_SENSOR_5_IS_THERMISTOR 1 #if TEMP_SENSOR_5 == 1000 #define TEMP_SENSOR_5_IS_CUSTOM 1 - #elif TEMP_SENSOR_5 == 998 || TEMP_SENSOR_5 == 999 - #define TEMP_SENSOR_5_IS_DUMMY 1 #endif -#else - #undef HEATER_5_MINTEMP - #undef HEATER_5_MAXTEMP #endif #if TEMP_SENSOR_6 == -4 @@ -632,16 +628,13 @@ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_6." #elif TEMP_SENSOR_6 == -1 #define TEMP_SENSOR_6_IS_AD595 1 +#elif TEMP_SENSOR_6 == 998 || TEMP_SENSOR_6 == 999 + #define TEMP_SENSOR_6_IS_DUMMY 1 #elif TEMP_SENSOR_6 > 0 #define TEMP_SENSOR_6_IS_THERMISTOR 1 #if TEMP_SENSOR_6 == 1000 #define TEMP_SENSOR_6_IS_CUSTOM 1 - #elif TEMP_SENSOR_6 == 998 || TEMP_SENSOR_6 == 999 - #define TEMP_SENSOR_6_IS_DUMMY 1 #endif -#else - #undef HEATER_6_MINTEMP - #undef HEATER_6_MAXTEMP #endif #if TEMP_SENSOR_7 == -4 @@ -652,16 +645,13 @@ #error "MAX7775 Thermocouples (-2) not supported for TEMP_SENSOR_7." #elif TEMP_SENSOR_7 == -1 #define TEMP_SENSOR_7_IS_AD595 1 +#elif TEMP_SENSOR_7 == 998 || TEMP_SENSOR_7 == 999 + #define TEMP_SENSOR_7_IS_DUMMY 1 #elif TEMP_SENSOR_7 > 0 #define TEMP_SENSOR_7_IS_THERMISTOR 1 #if TEMP_SENSOR_7 == 1000 #define TEMP_SENSOR_7_IS_CUSTOM 1 - #elif TEMP_SENSOR_7 == 998 || TEMP_SENSOR_7 == 999 - #define TEMP_SENSOR_7_IS_DUMMY 1 #endif -#else - #undef HEATER_7_MINTEMP - #undef HEATER_7_MAXTEMP #endif #if TEMP_SENSOR_BED == -4 @@ -672,12 +662,12 @@ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_BED." #elif TEMP_SENSOR_BED == -1 #define TEMP_SENSOR_BED_IS_AD595 1 +#elif TEMP_SENSOR_BED == 998 || TEMP_SENSOR_BED == 999 + #define TEMP_SENSOR_BED_IS_DUMMY 1 #elif TEMP_SENSOR_BED > 0 #define TEMP_SENSOR_BED_IS_THERMISTOR 1 #if TEMP_SENSOR_BED == 1000 #define TEMP_SENSOR_BED_IS_CUSTOM 1 - #elif TEMP_SENSOR_BED == 998 || TEMP_SENSOR_BED == 999 - #define TEMP_SENSOR_BED_IS_DUMMY 1 #endif #else #undef THERMAL_PROTECTION_BED @@ -694,12 +684,12 @@ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_CHAMBER." #elif TEMP_SENSOR_CHAMBER == -1 #define TEMP_SENSOR_CHAMBER_IS_AD595 1 +#elif TEMP_SENSOR_CHAMBER == 998 || TEMP_SENSOR_CHAMBER == 999 + #define TEMP_SENSOR_CHAMBER_IS_DUMMY 1 #elif TEMP_SENSOR_CHAMBER > 0 #define TEMP_SENSOR_CHAMBER_IS_THERMISTOR 1 #if TEMP_SENSOR_CHAMBER == 1000 #define TEMP_SENSOR_CHAMBER_IS_CUSTOM 1 - #elif TEMP_SENSOR_CHAMBER == 998 || TEMP_SENSOR_CHAMBER == 999 - #define TEMP_SENSOR_CHAMBER_IS_DUMMY 1 #endif #else #undef THERMAL_PROTECTION_CHAMBER @@ -715,12 +705,12 @@ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_COOLER." #elif TEMP_SENSOR_COOLER == -1 #define TEMP_SENSOR_COOLER_IS_AD595 1 +#elif TEMP_SENSOR_COOLER == 998 || TEMP_SENSOR_COOLER == 999 + #define TEMP_SENSOR_COOLER_IS_DUMMY 1 #elif TEMP_SENSOR_COOLER > 0 #define TEMP_SENSOR_COOLER_IS_THERMISTOR 1 #if TEMP_SENSOR_COOLER == 1000 #define TEMP_SENSOR_COOLER_IS_CUSTOM 1 - #elif TEMP_SENSOR_COOLER == 998 || TEMP_SENSOR_COOLER == 999 - #define TEMP_SENSOR_COOLER_IS_DUMMY 1 #endif #else #undef THERMAL_PROTECTION_COOLER @@ -736,12 +726,12 @@ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_PROBE." #elif TEMP_SENSOR_PROBE == -1 #define TEMP_SENSOR_PROBE_IS_AD595 1 +#elif TEMP_SENSOR_PROBE == 998 || TEMP_SENSOR_PROBE == 999 + #define TEMP_SENSOR_PROBE_IS_DUMMY 1 #elif TEMP_SENSOR_PROBE > 0 #define TEMP_SENSOR_PROBE_IS_THERMISTOR 1 #if TEMP_SENSOR_PROBE == 1000 #define TEMP_SENSOR_PROBE_IS_CUSTOM 1 - #elif TEMP_SENSOR_PROBE == 998 || TEMP_SENSOR_PROBE == 999 - #define TEMP_SENSOR_PROBE_IS_DUMMY 1 #endif #endif @@ -753,12 +743,12 @@ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_BOARD." #elif TEMP_SENSOR_BOARD == -1 #define TEMP_SENSOR_BOARD_IS_AD595 1 +#elif TEMP_SENSOR_BOARD == 998 || TEMP_SENSOR_BOARD == 999 + #define TEMP_SENSOR_BOARD_IS_DUMMY 1 #elif TEMP_SENSOR_BOARD > 0 #define TEMP_SENSOR_BOARD_IS_THERMISTOR 1 #if TEMP_SENSOR_BOARD == 1000 #define TEMP_SENSOR_BOARD_IS_CUSTOM 1 - #elif TEMP_SENSOR_BOARD == 998 || TEMP_SENSOR_BOARD == 999 - #define TEMP_SENSOR_BOARD_IS_DUMMY 1 #endif #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index a7aec8e833..d431415559 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2628,84 +2628,85 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #endif /** - * Test Sensor & Heater pin combos. * Pins and Sensor IDs must be set for each heater */ -#if HAS_EXTRUDERS && !ANY_PIN(TEMP_0, TEMP_0_CS) - #error "TEMP_0_PIN or TEMP_0_CS_PIN not defined for this board." -#elif HAS_EXTRUDERS && !HAS_HEATER_0 - #error "HEATER_0_PIN not defined for this board." -#elif TEMP_SENSOR_IS_MAX_TC(0) && !PIN_EXISTS(TEMP_0_CS) - #error "TEMP_SENSOR_0 MAX thermocouple requires TEMP_0_CS_PIN." -#elif HAS_HOTEND && !HAS_TEMP_HOTEND && !TEMP_SENSOR_0_IS_DUMMY - #error "TEMP_0_PIN (required for TEMP_SENSOR_0) not defined for this board." -#elif EITHER(HAS_MULTI_HOTEND, HEATERS_PARALLEL) && !HAS_HEATER_1 - #error "HEATER_1_PIN is not defined. TEMP_SENSOR_1 might not be set, or the board (not EEB / EEF?) doesn't define a pin." -#endif - -#if HAS_MULTI_HOTEND - #if TEMP_SENSOR_IS_MAX_TC(1) && !PIN_EXISTS(TEMP_1_CS) - #error "TEMP_SENSOR_1 MAX thermocouple requires TEMP_1_CS_PIN." - #elif TEMP_SENSOR_1 == 0 - #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS." - #elif !ANY_PIN(TEMP_1, TEMP_1_CS) && !TEMP_SENSOR_1_IS_DUMMY - #error "TEMP_1_PIN or TEMP_1_CS_PIN not defined for this board." +#if HAS_HOTEND + #if !HAS_HEATER_0 + #error "HEATER_0_PIN not defined for this board." + #elif TEMP_SENSOR_IS_MAX_TC(0) && !PIN_EXISTS(TEMP_0_CS) + #error "TEMP_SENSOR_0 MAX thermocouple requires TEMP_0_CS_PIN." + #elif TEMP_SENSOR_0 == 0 + #error "TEMP_SENSOR_0 is required with 1 or more HOTENDS." + #elif !ANY_PIN(TEMP_0, TEMP_0_CS) && !TEMP_SENSOR_0_IS_DUMMY + #error "TEMP_0_PIN or TEMP_0_CS_PIN not defined for this board." #endif - #if HOTENDS > 2 - #if TEMP_SENSOR_2 == 0 - #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS." - #elif !HAS_HEATER_2 - #error "HEATER_2_PIN not defined for this board." - #elif !ANY_PIN(TEMP_2, TEMP_2_CS) && !TEMP_SENSOR_2_IS_DUMMY - #error "TEMP_2_PIN or TEMP_2_CS_PIN not defined for this board." + #if EITHER(HAS_MULTI_HOTEND, HEATERS_PARALLEL) && !HAS_HEATER_1 + #error "HEATER_1_PIN is not defined. TEMP_SENSOR_1 might not be set, or the board (not EEB / EEF?) doesn't define a pin." + #endif + #if HAS_MULTI_HOTEND + #if TEMP_SENSOR_IS_MAX_TC(1) && !PIN_EXISTS(TEMP_1_CS) + #error "TEMP_SENSOR_1 MAX thermocouple requires TEMP_1_CS_PIN." + #elif TEMP_SENSOR_1 == 0 + #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS." + #elif !ANY_PIN(TEMP_1, TEMP_1_CS) && !TEMP_SENSOR_1_IS_DUMMY + #error "TEMP_1_PIN or TEMP_1_CS_PIN not defined for this board." #endif - #if HOTENDS > 3 - #if TEMP_SENSOR_3 == 0 - #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS." - #elif !HAS_HEATER_3 - #error "HEATER_3_PIN not defined for this board." - #elif !PIN_EXISTS(TEMP_3) && !TEMP_SENSOR_3_IS_DUMMY - #error "TEMP_3_PIN not defined for this board." + #if HOTENDS > 2 + #if TEMP_SENSOR_2 == 0 + #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS." + #elif !HAS_HEATER_2 + #error "HEATER_2_PIN not defined for this board." + #elif !ANY_PIN(TEMP_2, TEMP_2_CS) && !TEMP_SENSOR_2_IS_DUMMY + #error "TEMP_2_PIN or TEMP_2_CS_PIN not defined for this board." #endif - #if HOTENDS > 4 - #if TEMP_SENSOR_4 == 0 - #error "TEMP_SENSOR_4 is required with 5 or more HOTENDS." - #elif !HAS_HEATER_4 - #error "HEATER_4_PIN not defined for this board." - #elif !PIN_EXISTS(TEMP_4) && !TEMP_SENSOR_4_IS_DUMMY - #error "TEMP_4_PIN not defined for this board." + #if HOTENDS > 3 + #if TEMP_SENSOR_3 == 0 + #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS." + #elif !HAS_HEATER_3 + #error "HEATER_3_PIN not defined for this board." + #elif !PIN_EXISTS(TEMP_3) && !TEMP_SENSOR_3_IS_DUMMY + #error "TEMP_3_PIN not defined for this board." #endif - #if HOTENDS > 5 - #if TEMP_SENSOR_5 == 0 - #error "TEMP_SENSOR_5 is required with 6 HOTENDS." - #elif !HAS_HEATER_5 - #error "HEATER_5_PIN not defined for this board." - #elif !PIN_EXISTS(TEMP_5) && !TEMP_SENSOR_5_IS_DUMMY - #error "TEMP_5_PIN not defined for this board." + #if HOTENDS > 4 + #if TEMP_SENSOR_4 == 0 + #error "TEMP_SENSOR_4 is required with 5 or more HOTENDS." + #elif !HAS_HEATER_4 + #error "HEATER_4_PIN not defined for this board." + #elif !PIN_EXISTS(TEMP_4) && !TEMP_SENSOR_4_IS_DUMMY + #error "TEMP_4_PIN not defined for this board." #endif - #if HOTENDS > 6 - #if TEMP_SENSOR_6 == 0 - #error "TEMP_SENSOR_6 is required with 6 HOTENDS." - #elif !HAS_HEATER_6 - #error "HEATER_6_PIN not defined for this board." - #elif !PIN_EXISTS(TEMP_6) && !TEMP_SENSOR_6_IS_DUMMY - #error "TEMP_6_PIN not defined for this board." + #if HOTENDS > 5 + #if TEMP_SENSOR_5 == 0 + #error "TEMP_SENSOR_5 is required with 6 HOTENDS." + #elif !HAS_HEATER_5 + #error "HEATER_5_PIN not defined for this board." + #elif !PIN_EXISTS(TEMP_5) && !TEMP_SENSOR_5_IS_DUMMY + #error "TEMP_5_PIN not defined for this board." #endif - #if HOTENDS > 7 - #if TEMP_SENSOR_7 == 0 - #error "TEMP_SENSOR_7 is required with 7 HOTENDS." - #elif !HAS_HEATER_7 - #error "HEATER_7_PIN not defined for this board." - #elif !PIN_EXISTS(TEMP_7) && !TEMP_SENSOR_7_IS_DUMMY - #error "TEMP_7_PIN not defined for this board." + #if HOTENDS > 6 + #if TEMP_SENSOR_6 == 0 + #error "TEMP_SENSOR_6 is required with 6 HOTENDS." + #elif !HAS_HEATER_6 + #error "HEATER_6_PIN not defined for this board." + #elif !PIN_EXISTS(TEMP_6) && !TEMP_SENSOR_6_IS_DUMMY + #error "TEMP_6_PIN not defined for this board." #endif - #endif // HOTENDS > 7 - #endif // HOTENDS > 6 - #endif // HOTENDS > 5 - #endif // HOTENDS > 4 - #endif // HOTENDS > 3 - #endif // HOTENDS > 2 -#endif // HAS_MULTI_HOTEND + #if HOTENDS > 7 + #if TEMP_SENSOR_7 == 0 + #error "TEMP_SENSOR_7 is required with 7 HOTENDS." + #elif !HAS_HEATER_7 + #error "HEATER_7_PIN not defined for this board." + #elif !PIN_EXISTS(TEMP_7) && !TEMP_SENSOR_7_IS_DUMMY + #error "TEMP_7_PIN not defined for this board." + #endif + #endif // HOTENDS > 7 + #endif // HOTENDS > 6 + #endif // HOTENDS > 5 + #endif // HOTENDS > 4 + #endif // HOTENDS > 3 + #endif // HOTENDS > 2 + #endif // HAS_MULTI_HOTEND +#endif // HAS_HOTEND #if DO_TOOLCHANGE_FOR_PROBING && PROBING_TOOL >= EXTRUDERS #error "PROBING_TOOL must be a valid tool index." @@ -2836,8 +2837,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "E0_STEP_PIN or E0_DIR_PIN not defined for this board." #elif ( !(defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__)) && (!PINS_EXIST(E0_STEP, E0_DIR) || !HAS_E0_ENABLE)) #error "E0_STEP_PIN, E0_DIR_PIN, or E0_ENABLE_PIN not defined for this board." - #elif EXTRUDERS && TEMP_SENSOR_0 == 0 - #error "TEMP_SENSOR_0 is required if there are any extruders." + #elif HOTENDS && TEMP_SENSOR_0 == 0 + #error "TEMP_SENSOR_0 is required if there are any hotends." #endif #endif diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index ce46d3d43d..5bf809c955 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2785,7 +2785,7 @@ void Temperature::init() { temp_range[NR].raw_max -= TEMPDIR(NR) * (OVERSAMPLENR); \ }while(0) - #define _MINMAX_TEST(N,M) (HOTENDS > N && TEMP_SENSOR(N) > 0 && TEMP_SENSOR(N) != 998 && TEMP_SENSOR(N) != 999 && defined(HEATER_##N##_##M##TEMP)) + #define _MINMAX_TEST(N,M) (HOTENDS > N && TEMP_SENSOR_##NR##_IS_THERMISTOR && defined(HEATER_##N##_##M##TEMP)) #if _MINMAX_TEST(0, MIN) _TEMP_MIN_E(0); From 31173394b871a9a3e26ab58eae51c62c7d780ba2 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 22 Apr 2023 12:06:22 +0000 Subject: [PATCH 309/659] [cron] Bump distribution date (2023-04-22) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index df1b974a81..a2a7fd05d2 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-21" +//#define STRING_DISTRIBUTION_DATE "2023-04-22" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 4e228d659f..edd46fd203 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-21" + #define STRING_DISTRIBUTION_DATE "2023-04-22" #endif /** From 5d8d38a911f96dadd56471f6dacaa6bda64b66fb Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sun, 23 Apr 2023 08:59:51 +1200 Subject: [PATCH 310/659] =?UTF-8?q?=F0=9F=A9=B9=20Status=20/=20Host=20Prom?= =?UTF-8?q?pt=20followup=20(#25720)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25679 Co-authored-by: Scott Lahteine --- Marlin/src/lcd/marlinui.cpp | 7 +++++++ Marlin/src/lcd/marlinui.h | 10 +++++----- Marlin/src/lcd/menu/menu.cpp | 7 ------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 22b3fa27d7..c1ec15dc19 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -1424,6 +1424,13 @@ void MarlinUI::init() { #endif // HAS_ENCODER_ACTION + #if HAS_SOUND + void MarlinUI::completion_feedback(const bool good/*=true*/) { + TERN_(HAS_TOUCH_SLEEP, wakeup_screen()); // Wake up on rotary encoder click... + if (good) OKAY_BUZZ(); else ERR_BUZZ(); + } + #endif + #endif // HAS_WIRED_LCD #if HAS_STATUS_MESSAGE diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index 32d747da43..de1e30fe4e 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -494,11 +494,6 @@ public: static void status_screen(); - #else - - static void quick_feedback(const bool=true) {} - static void completion_feedback(const bool=true) {} - #endif #if HAS_MARLINUI_U8GLIB @@ -529,6 +524,11 @@ public: #endif + #if !HAS_WIRED_LCD + static void quick_feedback(const bool=true) {} + static void completion_feedback(const bool=true) {} + #endif + #if ENABLED(SDSUPPORT) #if BOTH(SCROLL_LONG_FILENAMES, HAS_MARLINUI_MENU) #define MARLINUI_SCROLL_NAME 1 diff --git a/Marlin/src/lcd/menu/menu.cpp b/Marlin/src/lcd/menu/menu.cpp index 85b773bebc..5c4dc12d26 100644 --- a/Marlin/src/lcd/menu/menu.cpp +++ b/Marlin/src/lcd/menu/menu.cpp @@ -271,13 +271,6 @@ void scroll_screen(const uint8_t limit, const bool is_menu) { encoderTopLine = encoderLine; } -#if HAS_SOUND - void MarlinUI::completion_feedback(const bool good/*=true*/) { - TERN_(HAS_TOUCH_SLEEP, wakeup_screen()); // Wake up on rotary encoder click... - if (good) OKAY_BUZZ(); else ERR_BUZZ(); - } -#endif - #if HAS_LINE_TO_Z void line_to_z(const_float_t z) { From 95cfc98fe406bda0d0dc8d08d31e0f4416fb109a Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 23 Apr 2023 00:22:56 +0000 Subject: [PATCH 311/659] [cron] Bump distribution date (2023-04-23) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index a2a7fd05d2..e18ee687ed 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-22" +//#define STRING_DISTRIBUTION_DATE "2023-04-23" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index edd46fd203..51f45936ca 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-22" + #define STRING_DISTRIBUTION_DATE "2023-04-23" #endif /** From ce85b98db471685404d6e4975dcff645b09d771b Mon Sep 17 00:00:00 2001 From: Jason Smith Date: Sat, 22 Apr 2023 20:27:01 -0700 Subject: [PATCH 312/659] =?UTF-8?q?=F0=9F=A9=B9=20Relocate=20Fan=20conditi?= =?UTF-8?q?onals,=20sanity-checks=20(#25731)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/inc/Conditionals_adv.h | 11 ------ Marlin/src/inc/Conditionals_post.h | 60 +++++++++++++++--------------- Marlin/src/inc/SanityCheck.h | 31 +++++++++++---- 3 files changed, 53 insertions(+), 49 deletions(-) diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index c9c8fdf2d5..fd7ba59224 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -1233,17 +1233,6 @@ #define CANNOT_EMBED_CONFIGURATION defined(__AVR__) #endif -// Fan Kickstart -#if FAN_KICKSTART_TIME && !defined(FAN_KICKSTART_POWER) - #define FAN_KICKSTART_POWER 180 -#endif - -#if FAN_MIN_PWM == 0 && FAN_MAX_PWM == 255 - #define CALC_FAN_SPEED(f) (f ?: FAN_OFF_PWM) -#else - #define CALC_FAN_SPEED(f) (f ? map(f, 1, 255, FAN_MIN_PWM, FAN_MAX_PWM) : FAN_OFF_PWM) -#endif - // Input shaping #if EITHER(INPUT_SHAPING_X, INPUT_SHAPING_Y) #define HAS_ZV_SHAPING 1 diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index eaf2d03cea..59b5dab462 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -2719,37 +2719,8 @@ #define HAS_FAN 1 #endif -/** - * Part Cooling fan multipliexer - */ #if PIN_EXISTS(FANMUX0) - #define HAS_FANMUX 1 -#endif - -/** - * MIN/MAX fan PWM scaling - */ -#ifndef FAN_OFF_PWM - #define FAN_OFF_PWM 0 -#endif -#ifndef FAN_MIN_PWM - #if FAN_OFF_PWM > 0 - #define FAN_MIN_PWM (FAN_OFF_PWM + 1) - #else - #define FAN_MIN_PWM 0 - #endif -#endif -#ifndef FAN_MAX_PWM - #define FAN_MAX_PWM 255 -#endif -#if FAN_MIN_PWM < 0 || FAN_MIN_PWM > 255 - #error "FAN_MIN_PWM must be a value from 0 to 255." -#elif FAN_MAX_PWM < 0 || FAN_MAX_PWM > 255 - #error "FAN_MAX_PWM must be a value from 0 to 255." -#elif FAN_MIN_PWM > FAN_MAX_PWM - #error "FAN_MIN_PWM must be less than or equal to FAN_MAX_PWM." -#elif FAN_OFF_PWM > FAN_MIN_PWM - #error "FAN_OFF_PWM must be less than or equal to FAN_MIN_PWM." + #define HAS_FANMUX 1 // Part Cooling fan multipliexer #endif /** @@ -2773,6 +2744,35 @@ #endif #endif +/** + * MIN/MAX fan PWM scaling + */ +#if EITHER(HAS_FAN, USE_CONTROLLER_FAN) + #ifndef FAN_OFF_PWM + #define FAN_OFF_PWM 0 + #endif + #ifndef FAN_MIN_PWM + #if FAN_OFF_PWM > 0 + #define FAN_MIN_PWM (FAN_OFF_PWM + 1) + #else + #define FAN_MIN_PWM 0 + #endif + #endif + #ifndef FAN_MAX_PWM + #define FAN_MAX_PWM 255 + #endif + #if FAN_MIN_PWM == 0 && FAN_MAX_PWM == 255 + #define CALC_FAN_SPEED(f) (f ?: FAN_OFF_PWM) + #else + #define CALC_FAN_SPEED(f) (f ? map(f, 1, 255, FAN_MIN_PWM, FAN_MAX_PWM) : FAN_OFF_PWM) + #endif +#endif + +// Fan Kickstart +#if FAN_KICKSTART_TIME && !defined(FAN_KICKSTART_POWER) + #define FAN_KICKSTART_POWER 180 +#endif + // Servos #if PIN_EXISTS(SERVO0) && NUM_SERVOS > 0 #define HAS_SERVO_0 1 diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index d431415559..034e472e84 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1560,11 +1560,11 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS /** * Part-Cooling Fan Multiplexer requirements */ -#if PIN_EXISTS(FANMUX1) - #if !HAS_FANMUX - #error "FANMUX0_PIN must be set before FANMUX1_PIN can be set." - #endif -#elif PIN_EXISTS(FANMUX2) +#if HAS_FANMUX && !HAS_FAN0 + #error "FAN0_PIN must be defined to use Fan Multiplexing." +#elif PIN_EXISTS(FANMUX1) && !PIN_EXISTS(FANMUX0) + #error "FANMUX0_PIN must be set before FANMUX1_PIN can be set." +#elif PIN_EXISTS(FANMUX2) && !PINS_EXIST(FANMUX0, FANMUX1) #error "FANMUX0_PIN and FANMUX1_PIN must be set before FANMUX2_PIN can be set." #endif @@ -1608,7 +1608,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #endif #if ENABLED(MPC_INCLUDE_FAN) - #if FAN_COUNT < 1 + #if !HAS_FAN #error "MPC_INCLUDE_FAN requires at least one fan." #endif #if FAN_COUNT < HOTENDS @@ -1627,8 +1627,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "To use BED_LIMIT_SWITCHING you must disable PIDTEMPBED." #endif -// Fan Kickstart -#if FAN_KICKSTART_TIME && defined(FAN_KICKSTART_POWER) && !WITHIN(FAN_KICKSTART_POWER, 64, 255) +// Fan Kickstart power +#if FAN_KICKSTART_TIME && !WITHIN(FAN_KICKSTART_POWER, 64, 255) #error "FAN_KICKSTART_POWER must be an integer from 64 to 255." #endif @@ -2454,6 +2454,21 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #endif #endif +/** + * Make sure FAN_*_PWM values are sensible + */ +#if EITHER(HAS_FAN, USE_CONTROLLER_FAN) + #if !WITHIN(FAN_MIN_PWM, 0, 255) + #error "FAN_MIN_PWM must be a value from 0 to 255." + #elif !WITHIN(FAN_MAX_PWM, 0, 255) + #error "FAN_MAX_PWM must be a value from 0 to 255." + #elif FAN_MIN_PWM > FAN_MAX_PWM + #error "FAN_MIN_PWM must be less than or equal to FAN_MAX_PWM." + #elif FAN_OFF_PWM > FAN_MIN_PWM + #error "FAN_OFF_PWM must be less than or equal to FAN_MIN_PWM." + #endif +#endif + #ifdef REDUNDANT_PART_COOLING_FAN #if FAN_COUNT < 2 #error "REDUNDANT_PART_COOLING_FAN requires a board with at least two PWM fans." From 5664c02d077e028f84a24efd96c2eebe97ce8763 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 22 Apr 2023 22:43:09 -0500 Subject: [PATCH 313/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Gen?= =?UTF-8?q?eralize=20SDSUPPORT=20as=20HAS=5FMEDIA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In preparation for single- and multi-volume refactoring. --- Marlin/Configuration_adv.h | 14 +++---- Marlin/src/HAL/AVR/HAL.cpp | 6 +-- Marlin/src/HAL/DUE/HAL.cpp | 2 +- Marlin/src/HAL/DUE/inc/SanityCheck.h | 2 +- Marlin/src/HAL/DUE/usb/conf_usb.h | 4 +- Marlin/src/HAL/DUE/usb/sd_mmc_spi_mem.cpp | 4 +- Marlin/src/HAL/DUE/usb/udi_cdc_desc.c | 4 +- Marlin/src/HAL/DUE/usb/udi_composite_desc.c | 4 +- Marlin/src/HAL/DUE/usb/udi_msc.c | 4 +- Marlin/src/HAL/DUE/usb/usb_task.c | 12 +++--- Marlin/src/HAL/ESP32/HAL_SPI.cpp | 2 +- Marlin/src/HAL/ESP32/u8g_esp32_spi.cpp | 2 +- Marlin/src/HAL/LINUX/spi_pins.h | 2 +- Marlin/src/HAL/LPC1768/inc/SanityCheck.h | 2 +- Marlin/src/HAL/LPC1768/spi_pins.h | 2 +- Marlin/src/HAL/NATIVE_SIM/spi_pins.h | 2 +- Marlin/src/HAL/SAMD21/HAL.cpp | 2 +- Marlin/src/HAL/SAMD51/HAL.cpp | 2 +- Marlin/src/HAL/STM32/HAL.cpp | 2 +- Marlin/src/HAL/STM32/inc/Conditionals_adv.h | 2 +- Marlin/src/HAL/STM32/inc/SanityCheck.h | 2 +- .../src/HAL/STM32F1/inc/Conditionals_post.h | 4 +- Marlin/src/HAL/STM32F1/inc/SanityCheck.h | 2 +- Marlin/src/MarlinCore.cpp | 14 +++---- Marlin/src/feature/binary_stream.h | 2 +- Marlin/src/feature/e_parser.cpp | 2 +- Marlin/src/feature/e_parser.h | 10 ++--- Marlin/src/feature/host_actions.cpp | 2 +- Marlin/src/feature/leds/printer_event_leds.h | 4 +- Marlin/src/feature/pause.cpp | 6 +-- Marlin/src/feature/power_monitor.h | 2 +- Marlin/src/gcode/control/M993_M994.cpp | 4 +- Marlin/src/gcode/feature/pause/M125.cpp | 2 +- Marlin/src/gcode/gcode.cpp | 10 ++--- Marlin/src/gcode/gcode.h | 12 +++--- Marlin/src/gcode/gcode_d.cpp | 4 +- Marlin/src/gcode/host/M115.cpp | 6 +-- Marlin/src/gcode/host/M360.cpp | 2 +- Marlin/src/gcode/queue.cpp | 12 +++--- Marlin/src/gcode/queue.h | 2 +- Marlin/src/gcode/sd/M1001.cpp | 4 +- Marlin/src/gcode/sd/M20.cpp | 4 +- Marlin/src/gcode/sd/M21_M22.cpp | 4 +- Marlin/src/gcode/sd/M23.cpp | 4 +- Marlin/src/gcode/sd/M24_M25.cpp | 8 ++-- Marlin/src/gcode/sd/M26.cpp | 4 +- Marlin/src/gcode/sd/M27.cpp | 4 +- Marlin/src/gcode/sd/M28_M29.cpp | 4 +- Marlin/src/gcode/sd/M30.cpp | 4 +- Marlin/src/gcode/sd/M524.cpp | 4 +- Marlin/src/gcode/sd/M928.cpp | 4 +- Marlin/src/inc/Conditionals_LCD.h | 6 ++- Marlin/src/inc/Conditionals_adv.h | 10 ++--- Marlin/src/inc/Conditionals_post.h | 4 +- Marlin/src/inc/SanityCheck.h | 18 ++++----- Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 14 +++---- Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp | 10 ++--- Marlin/src/lcd/dogm/marlinui_DOGM.cpp | 6 +-- Marlin/src/lcd/dogm/marlinui_DOGM.h | 6 +-- Marlin/src/lcd/dogm/status_screen_DOGM.cpp | 10 ++--- .../lcd/dogm/status_screen_lite_ST7920.cpp | 2 +- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 4 +- Marlin/src/lcd/e3v2/marlinui/ui_common.cpp | 6 +-- .../lcd/e3v2/marlinui/ui_status_480x272.cpp | 2 +- .../anycubic_i3mega/anycubic_i3mega_lcd.cpp | 40 +++++++++---------- .../src/lcd/extui/dgus/DGUSScreenHandler.cpp | 6 +-- .../lcd/extui/dgus/DGUSScreenHandlerBase.h | 4 +- Marlin/src/lcd/extui/dgus/dgus_extui.cpp | 6 +-- .../lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp | 4 +- .../extui/dgus/fysetc/DGUSScreenHandler.cpp | 4 +- .../lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp | 4 +- .../extui/dgus/hiprecy/DGUSScreenHandler.cpp | 4 +- .../src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp | 4 +- .../lcd/extui/dgus/mks/DGUSScreenHandler.cpp | 6 +-- .../lcd/extui/dgus/mks/DGUSScreenHandler.h | 2 +- .../lcd/extui/dgus/origin/DGUSDisplayDef.cpp | 4 +- .../extui/dgus/origin/DGUSScreenHandler.cpp | 4 +- .../lcd/extui/dgus_reloaded/DGUSRxHandler.cpp | 6 +-- .../lcd/extui/dgus_reloaded/DGUSRxHandler.h | 2 +- .../extui/dgus_reloaded/DGUSScreenHandler.cpp | 6 +-- .../extui/dgus_reloaded/DGUSScreenHandler.h | 4 +- .../extui/dgus_reloaded/DGUSSetupHandler.cpp | 2 +- .../extui/dgus_reloaded/DGUSSetupHandler.h | 2 +- .../lcd/extui/dgus_reloaded/DGUSTxHandler.cpp | 4 +- .../lcd/extui/dgus_reloaded/DGUSTxHandler.h | 2 +- .../definition/DGUS_ScreenAddrList.cpp | 4 +- .../definition/DGUS_ScreenSetup.cpp | 2 +- .../dgus_reloaded/definition/DGUS_VPList.cpp | 4 +- .../dgus_reloaded/dgus_reloaded_extui.cpp | 6 +-- .../archim2-flash/flash_storage.cpp | 4 +- .../archim2-flash/media_file_reader.cpp | 2 +- .../archim2-flash/media_file_reader.h | 4 +- .../bioprinter/printing_dialog_box.cpp | 2 +- .../ftdi_eve_touch_ui/ftdi_eve_extui.cpp | 4 +- .../generic/developer_menu.cpp | 4 +- .../generic/media_player_screen.cpp | 2 +- .../extui/ftdi_eve_touch_ui/generic/screens.h | 4 +- .../generic/status_screen.cpp | 2 +- .../extui/ftdi_eve_touch_ui/pin_mappings.h | 2 +- Marlin/src/lcd/extui/malyan/malyan.cpp | 8 ++-- Marlin/src/lcd/extui/malyan/malyan_extui.cpp | 2 +- Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp | 4 +- .../src/lcd/extui/mks_ui/draw_operation.cpp | 2 +- .../src/lcd/extui/mks_ui/draw_print_file.cpp | 28 ++++++------- Marlin/src/lcd/extui/mks_ui/draw_printing.cpp | 6 +-- Marlin/src/lcd/extui/mks_ui/draw_ui.cpp | 10 ++--- Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp | 4 +- Marlin/src/lcd/extui/mks_ui/mks_hardware.h | 2 +- Marlin/src/lcd/extui/mks_ui/pic_manager.cpp | 6 +-- .../lcd/extui/mks_ui/printer_operation.cpp | 2 +- .../extui/mks_ui/tft_lvgl_configuration.cpp | 6 +-- Marlin/src/lcd/extui/mks_ui/wifi_module.cpp | 22 +++++----- Marlin/src/lcd/extui/ui_api.cpp | 26 ++++++------ Marlin/src/lcd/marlinui.cpp | 26 ++++++------ Marlin/src/lcd/marlinui.h | 6 +-- Marlin/src/lcd/menu/menu.h | 4 +- Marlin/src/lcd/menu/menu_main.cpp | 12 +++--- Marlin/src/lcd/menu/menu_media.cpp | 4 +- Marlin/src/lcd/tft/ui_1024x600.cpp | 4 +- Marlin/src/lcd/tft/ui_320x240.cpp | 4 +- Marlin/src/lcd/tft/ui_480x320.cpp | 4 +- Marlin/src/lcd/tft/ui_common.cpp | 2 +- Marlin/src/module/endstops.cpp | 4 +- Marlin/src/module/temperature.cpp | 2 +- Marlin/src/pins/esp32/pins_MKS_TINYBEE.h | 2 +- Marlin/src/pins/esp32/pins_PANDA_common.h | 2 +- Marlin/src/pins/linux/pins_RAMPS_LINUX.h | 2 +- Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h | 4 +- Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h | 6 +-- .../src/pins/lpc1769/pins_COHESION3D_MINI.h | 2 +- Marlin/src/pins/mega/pins_CHEAPTRONICv2.h | 2 +- Marlin/src/pins/mega/pins_PICA.h | 2 +- Marlin/src/pins/mega/pins_WEEDO_62A.h | 2 +- Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h | 2 +- .../src/pins/ramps/pins_FORMBOT_TREX2PLUS.h | 2 +- Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h | 2 +- Marlin/src/pins/ramps/pins_RAMPS_OLD.h | 2 +- Marlin/src/pins/ramps/pins_RIGIDBOARD.h | 2 +- Marlin/src/pins/ramps/pins_RUMBA.h | 2 +- Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h | 2 +- Marlin/src/pins/ramps/pins_TT_OSCAR.h | 2 +- Marlin/src/pins/sam/pins_DUE3DOM.h | 2 +- Marlin/src/pins/sam/pins_DUE3DOM_MINI.h | 2 +- Marlin/src/pins/sam/pins_RADDS.h | 2 +- Marlin/src/pins/sam/pins_RAMPS_DUO.h | 2 +- Marlin/src/pins/sam/pins_RAMPS_FD_V1.h | 2 +- Marlin/src/pins/sam/pins_RAMPS_SMART.h | 2 +- Marlin/src/pins/sam/pins_RURAMPS4D_11.h | 2 +- Marlin/src/pins/sam/pins_RURAMPS4D_13.h | 2 +- Marlin/src/pins/sanguino/pins_ZMIB_V2.h | 2 +- Marlin/src/pins/stm32f4/pins_ANET_ET4.h | 2 +- Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h | 2 +- .../pins/stm32f4/pins_MKS_MONSTER8_common.h | 2 +- Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h | 2 +- Marlin/src/pins/stm32f4/pins_VAKE403D.h | 4 +- Marlin/src/sd/SdBaseFile.cpp | 4 +- Marlin/src/sd/SdFatUtil.cpp | 4 +- Marlin/src/sd/SdFile.cpp | 4 +- Marlin/src/sd/SdVolume.cpp | 4 +- Marlin/src/sd/cardreader.cpp | 6 +-- Marlin/src/sd/cardreader.h | 6 +-- .../PlatformIO/scripts/common-dependencies.h | 2 +- ini/features.ini | 2 +- ini/samd51.ini | 2 +- 164 files changed, 399 insertions(+), 397 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 993e0d8dde..22c97c3b8c 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1601,13 +1601,13 @@ #define SET_REMAINING_TIME // Add 'R' parameter to set remaining time //#define SET_INTERACTION_TIME // Add 'C' parameter to set time until next filament change or other user interaction //#define M73_REPORT // Report M73 values to host - #if BOTH(M73_REPORT, SDSUPPORT) + #if BOTH(M73_REPORT, HAS_MEDIA) #define M73_REPORT_SD_ONLY // Report only when printing from SD #endif #endif // LCD Print Progress options. Multiple times may be displayed in turn. -#if HAS_DISPLAY && EITHER(SDSUPPORT, SET_PROGRESS_MANUALLY) +#if HAS_DISPLAY && EITHER(HAS_MEDIA, SET_PROGRESS_MANUALLY) #define SHOW_PROGRESS_PERCENT // Show print progress percentage (doesn't affect progress bar) #define SHOW_ELAPSED_TIME // Display elapsed printing time (prefix 'E') //#define SHOW_REMAINING_TIME // Display estimated time to completion (prefix 'R') @@ -1628,7 +1628,7 @@ #endif #endif -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA /** * SD Card SPI Speed * May be required to resolve "volume init" errors. @@ -1868,7 +1868,7 @@ #define DEFAULT_SHARED_VOLUME SV_USB_FLASH_DRIVE #endif -#endif // SDSUPPORT +#endif // HAS_MEDIA /** * By default an onboard SD card reader may be shared as a USB mass- @@ -2492,9 +2492,9 @@ // The number of linear moves that can be in the planner at once. // The value of BLOCK_BUFFER_SIZE must be a power of 2 (e.g., 8, 16, 32) -#if BOTH(SDSUPPORT, DIRECT_STEPPING) +#if BOTH(HAS_MEDIA, DIRECT_STEPPING) #define BLOCK_BUFFER_SIZE 8 -#elif ENABLED(SDSUPPORT) +#elif HAS_MEDIA #define BLOCK_BUFFER_SIZE 16 #else #define BLOCK_BUFFER_SIZE 16 @@ -2527,7 +2527,7 @@ //#define SERIAL_XON_XOFF #endif -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA // Enable this option to collect and display the maximum // RX queue usage after transferring a file to SD. //#define SERIAL_STATS_MAX_RX_QUEUED diff --git a/Marlin/src/HAL/AVR/HAL.cpp b/Marlin/src/HAL/AVR/HAL.cpp index 5382eb36a2..b3dcfbdf59 100644 --- a/Marlin/src/HAL/AVR/HAL.cpp +++ b/Marlin/src/HAL/AVR/HAL.cpp @@ -145,12 +145,12 @@ void MarlinHAL::reboot() { // Free Memory Accessor // ------------------------ -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../../sd/SdFatUtil.h" int freeMemory() { return SdFatUtil::FreeRam(); } -#else // !SDSUPPORT +#else // !HAS_MEDIA extern "C" { extern char __bss_end; @@ -167,6 +167,6 @@ void MarlinHAL::reboot() { } } -#endif // !SDSUPPORT +#endif // !HAS_MEDIA #endif // __AVR__ diff --git a/Marlin/src/HAL/DUE/HAL.cpp b/Marlin/src/HAL/DUE/HAL.cpp index 4353f16497..1b57bdb2fa 100644 --- a/Marlin/src/HAL/DUE/HAL.cpp +++ b/Marlin/src/HAL/DUE/HAL.cpp @@ -45,7 +45,7 @@ uint16_t MarlinHAL::adc_result; #endif void MarlinHAL::init() { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA OUT_WRITE(SDSS, HIGH); // Try to set SDSS inactive before any other SPI users start up #endif usb_task_init(); // Initialize the USB stack diff --git a/Marlin/src/HAL/DUE/inc/SanityCheck.h b/Marlin/src/HAL/DUE/inc/SanityCheck.h index 6bbf04a0ac..a8f5de8298 100644 --- a/Marlin/src/HAL/DUE/inc/SanityCheck.h +++ b/Marlin/src/HAL/DUE/inc/SanityCheck.h @@ -70,7 +70,7 @@ */ #define _IS_HW_SPI(P) (defined(TMC_SPI_##P) && (TMC_SPI_##P == SD_MOSI_PIN || TMC_SPI_##P == SD_MISO_PIN || TMC_SPI_##P == SD_SCK_PIN)) -#if ENABLED(SDSUPPORT) && HAS_DRIVER(TMC2130) +#if HAS_MEDIA && HAS_DRIVER(TMC2130) #if ENABLED(TMC_USE_SW_SPI) #if DISABLED(DUE_SOFTWARE_SPI) && (_IS_HW_SPI(MOSI) || _IS_HW_SPI(MISO) || _IS_HW_SPI(SCK)) #error "DUE hardware SPI is required but is incompatible with TMC2130 software SPI. Either disable TMC_USE_SW_SPI or use separate pins for the two SPIs." diff --git a/Marlin/src/HAL/DUE/usb/conf_usb.h b/Marlin/src/HAL/DUE/usb/conf_usb.h index 4de9e347e2..f66194c6e6 100644 --- a/Marlin/src/HAL/DUE/usb/conf_usb.h +++ b/Marlin/src/HAL/DUE/usb/conf_usb.h @@ -101,7 +101,7 @@ #define USB_DEVICE_SPECIFIC_REQUEST() usb_task_other_requests() //@} -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA /** * USB Device low level configuration * When only one interface is used, these configurations are defined by the class module. @@ -185,7 +185,7 @@ //! Enable id string of interface to add an extra USB string #define UDI_CDC_IAD_STRING_ID 4 -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA /** * USB CDC low level configuration * In standalone these configurations are defined by the CDC module. diff --git a/Marlin/src/HAL/DUE/usb/sd_mmc_spi_mem.cpp b/Marlin/src/HAL/DUE/usb/sd_mmc_spi_mem.cpp index 34cc256b30..65a926ff36 100644 --- a/Marlin/src/HAL/DUE/usb/sd_mmc_spi_mem.cpp +++ b/Marlin/src/HAL/DUE/usb/sd_mmc_spi_mem.cpp @@ -6,7 +6,7 @@ #include "../../../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../../../sd/cardreader.h" extern "C" { @@ -138,5 +138,5 @@ Ctrl_status sd_mmc_spi_usb_write_10(uint32_t addr, uint16_t nb_sector) { #endif // ACCESS_USB == true -#endif // SDSUPPORT +#endif // HAS_MEDIA #endif // ARDUINO_ARCH_SAM diff --git a/Marlin/src/HAL/DUE/usb/udi_cdc_desc.c b/Marlin/src/HAL/DUE/usb/udi_cdc_desc.c index 97c334e2a8..4c79e8df13 100644 --- a/Marlin/src/HAL/DUE/usb/udi_cdc_desc.c +++ b/Marlin/src/HAL/DUE/usb/udi_cdc_desc.c @@ -51,7 +51,7 @@ #include "udc_desc.h" #include "udi_cdc.h" -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA /** * \defgroup udi_cdc_group_single_desc USB device descriptors for a single interface @@ -256,6 +256,6 @@ UDC_DESC_STORAGE udc_config_t udc_config = { //@} //@} -#endif // SDSUPPORT +#endif // HAS_MEDIA #endif // ARDUINO_ARCH_SAM diff --git a/Marlin/src/HAL/DUE/usb/udi_composite_desc.c b/Marlin/src/HAL/DUE/usb/udi_composite_desc.c index da74fbe60d..b10d043b9f 100644 --- a/Marlin/src/HAL/DUE/usb/udi_composite_desc.c +++ b/Marlin/src/HAL/DUE/usb/udi_composite_desc.c @@ -50,7 +50,7 @@ #include "udd.h" #include "udc_desc.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA /** * \defgroup udi_group_desc Descriptors for a USB Device @@ -189,4 +189,4 @@ UDC_DESC_STORAGE udc_config_t udc_config = { #endif // ARDUINO_ARCH_SAM -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/HAL/DUE/usb/udi_msc.c b/Marlin/src/HAL/DUE/usb/udi_msc.c index dd34048772..a75b5936b3 100644 --- a/Marlin/src/HAL/DUE/usb/udi_msc.c +++ b/Marlin/src/HAL/DUE/usb/udi_msc.c @@ -57,7 +57,7 @@ #include "ctrl_access.h" #include -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #ifndef UDI_MSC_NOTIFY_TRANS_EXT # define UDI_MSC_NOTIFY_TRANS_EXT() @@ -1127,6 +1127,6 @@ bool udi_msc_trans_block(bool b_read, uint8_t * block, iram_size_t block_size, //@} -#endif // SDSUPPORT +#endif // HAS_MEDIA #endif // ARDUINO_ARCH_SAM diff --git a/Marlin/src/HAL/DUE/usb/usb_task.c b/Marlin/src/HAL/DUE/usb/usb_task.c index 86ab27217a..6f027f83a1 100644 --- a/Marlin/src/HAL/DUE/usb/usb_task.c +++ b/Marlin/src/HAL/DUE/usb/usb_task.c @@ -51,14 +51,14 @@ #include "conf_usb.h" #include "udc.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA static volatile bool main_b_msc_enable = false; #endif static volatile bool main_b_cdc_enable = false; static volatile bool main_b_dtr_active = false; void usb_task_idle(void) { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA // Attend SD card access from the USB MSD -- Prioritize access to improve speed int delay = 2; while (main_b_msc_enable && --delay > 0) { @@ -70,7 +70,7 @@ void usb_task_idle(void) { #endif } -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA bool usb_task_msc_enable(void) { return ((main_b_msc_enable = true)); } void usb_task_msc_disable(void) { main_b_msc_enable = false; } bool usb_task_msc_isenabled(void) { return main_b_msc_enable; } @@ -206,13 +206,13 @@ static USB_MicrosoftExtendedPropertiesDescriptor microsoft_extended_properties_d bool usb_task_extra_string(void) { static uint8_t udi_msft_magic[] = "MSFT100\xEE"; static uint8_t udi_cdc_name[] = "CDC interface"; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA static uint8_t udi_msc_name[] = "MSC interface"; #endif struct extra_strings_desc_t { usb_str_desc_t header; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA le16_t string[Max(Max(sizeof(udi_cdc_name) - 1, sizeof(udi_msc_name) - 1), sizeof(udi_msft_magic) - 1)]; #else le16_t string[Max(sizeof(udi_cdc_name) - 1, sizeof(udi_msft_magic) - 1)]; @@ -231,7 +231,7 @@ bool usb_task_extra_string(void) { str_lgt = sizeof(udi_cdc_name) - 1; str = udi_cdc_name; break; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA case UDI_MSC_STRING_ID: str_lgt = sizeof(udi_msc_name) - 1; str = udi_msc_name; diff --git a/Marlin/src/HAL/ESP32/HAL_SPI.cpp b/Marlin/src/HAL/ESP32/HAL_SPI.cpp index 868ab1b671..6dc540864e 100644 --- a/Marlin/src/HAL/ESP32/HAL_SPI.cpp +++ b/Marlin/src/HAL/ESP32/HAL_SPI.cpp @@ -53,7 +53,7 @@ static SPISettings spiConfig; // ------------------------ void spiBegin() { - #if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_SS) + #if HAS_MEDIA && PIN_EXISTS(SD_SS) OUT_WRITE(SD_SS_PIN, HIGH); #endif } diff --git a/Marlin/src/HAL/ESP32/u8g_esp32_spi.cpp b/Marlin/src/HAL/ESP32/u8g_esp32_spi.cpp index bd7ecdc9f2..955c751e48 100644 --- a/Marlin/src/HAL/ESP32/u8g_esp32_spi.cpp +++ b/Marlin/src/HAL/ESP32/u8g_esp32_spi.cpp @@ -32,7 +32,7 @@ #include "HAL.h" #include "SPI.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../../sd/cardreader.h" #if ENABLED(ESP3D_WIFISUPPORT) #include "sd_ESP32.h" diff --git a/Marlin/src/HAL/LINUX/spi_pins.h b/Marlin/src/HAL/LINUX/spi_pins.h index 9ecbb04987..f09d1decb8 100644 --- a/Marlin/src/HAL/LINUX/spi_pins.h +++ b/Marlin/src/HAL/LINUX/spi_pins.h @@ -24,7 +24,7 @@ #include "../../core/macros.h" #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_U8GLIB, SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) +#if BOTH(HAS_MARLINUI_U8GLIB, HAS_MEDIA) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) #define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently // needed due to the speed and mode required for communicating with each device being different. // This requirement can be removed if the SPI access to these devices is updated to use diff --git a/Marlin/src/HAL/LPC1768/inc/SanityCheck.h b/Marlin/src/HAL/LPC1768/inc/SanityCheck.h index 9f78f2a70d..f49bc34c92 100644 --- a/Marlin/src/HAL/LPC1768/inc/SanityCheck.h +++ b/Marlin/src/HAL/LPC1768/inc/SanityCheck.h @@ -201,7 +201,7 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o #if USEDI2CDEV_M == 0 // P0_27 [D57] (AUX-1) .......... P0_28 [D58] (AUX-1) #define PIN_IS_SDA0(P) (P##_PIN == P0_27) #define IS_SCL0(P) (P == P0_28) - #if ENABLED(SDSUPPORT) && PIN_IS_SDA0(SD_DETECT) + #if HAS_MEDIA && PIN_IS_SDA0(SD_DETECT) #error "SDA0 overlaps with SD_DETECT_PIN!" #elif PIN_IS_SDA0(E0_AUTO_FAN) #error "SDA0 overlaps with E0_AUTO_FAN_PIN!" diff --git a/Marlin/src/HAL/LPC1768/spi_pins.h b/Marlin/src/HAL/LPC1768/spi_pins.h index e716d00fb0..33a5b369ad 100644 --- a/Marlin/src/HAL/LPC1768/spi_pins.h +++ b/Marlin/src/HAL/LPC1768/spi_pins.h @@ -23,7 +23,7 @@ #include "../../core/macros.h" -#if BOTH(SDSUPPORT, HAS_MARLINUI_U8GLIB) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) +#if BOTH(HAS_MEDIA, HAS_MARLINUI_U8GLIB) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) #define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently // needed due to the speed and mode required for communicating with each device being different. // This requirement can be removed if the SPI access to these devices is updated to use diff --git a/Marlin/src/HAL/NATIVE_SIM/spi_pins.h b/Marlin/src/HAL/NATIVE_SIM/spi_pins.h index eb20a21c56..02fb359238 100644 --- a/Marlin/src/HAL/NATIVE_SIM/spi_pins.h +++ b/Marlin/src/HAL/NATIVE_SIM/spi_pins.h @@ -24,7 +24,7 @@ #include "../../core/macros.h" #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_U8GLIB, SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) +#if BOTH(HAS_MARLINUI_U8GLIB, HAS_MEDIA) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) #define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently // needed due to the speed and mode required for communicating with each device being different. // This requirement can be removed if the SPI access to these devices is updated to use diff --git a/Marlin/src/HAL/SAMD21/HAL.cpp b/Marlin/src/HAL/SAMD21/HAL.cpp index 14c439eeb9..1bc0406ab3 100644 --- a/Marlin/src/HAL/SAMD21/HAL.cpp +++ b/Marlin/src/HAL/SAMD21/HAL.cpp @@ -105,7 +105,7 @@ void MarlinHAL::dma_init() {} // HAL initialization task void MarlinHAL::init() { TERN_(DMA_IS_REQUIRED, dma_init()); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA #if HAS_SD_DETECT && SD_CONNECTION_IS(ONBOARD) SET_INPUT_PULLUP(SD_DETECT_PIN); #endif diff --git a/Marlin/src/HAL/SAMD51/HAL.cpp b/Marlin/src/HAL/SAMD51/HAL.cpp index 8c102b643d..bc7a9b6d91 100644 --- a/Marlin/src/HAL/SAMD51/HAL.cpp +++ b/Marlin/src/HAL/SAMD51/HAL.cpp @@ -602,7 +602,7 @@ void MarlinHAL::dma_init() { // HAL initialization task void MarlinHAL::init() { TERN_(DMA_IS_REQUIRED, dma_init()); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA #if HAS_SD_DETECT && SD_CONNECTION_IS(ONBOARD) SET_INPUT_PULLUP(SD_DETECT_PIN); #endif diff --git a/Marlin/src/HAL/STM32/HAL.cpp b/Marlin/src/HAL/STM32/HAL.cpp index aff52f597f..d8a12aad7e 100644 --- a/Marlin/src/HAL/STM32/HAL.cpp +++ b/Marlin/src/HAL/STM32/HAL.cpp @@ -70,7 +70,7 @@ void MarlinHAL::init() { constexpr int cpuFreq = F_CPU; UNUSED(cpuFreq); - #if ENABLED(SDSUPPORT) && DISABLED(SDIO_SUPPORT) && (defined(SDSS) && SDSS != -1) + #if HAS_MEDIA && DISABLED(SDIO_SUPPORT) && (defined(SDSS) && SDSS != -1) OUT_WRITE(SDSS, HIGH); // Try to set SDSS inactive before any other SPI users start up #endif diff --git a/Marlin/src/HAL/STM32/inc/Conditionals_adv.h b/Marlin/src/HAL/STM32/inc/Conditionals_adv.h index 451c94f25d..ee8c49e4e0 100644 --- a/Marlin/src/HAL/STM32/inc/Conditionals_adv.h +++ b/Marlin/src/HAL/STM32/inc/Conditionals_adv.h @@ -21,7 +21,7 @@ */ #pragma once -#if BOTH(SDSUPPORT, USBD_USE_CDC_MSC) && DISABLED(NO_SD_HOST_DRIVE) +#if BOTH(HAS_MEDIA, USBD_USE_CDC_MSC) && DISABLED(NO_SD_HOST_DRIVE) #define HAS_SD_HOST_DRIVE 1 #endif diff --git a/Marlin/src/HAL/STM32/inc/SanityCheck.h b/Marlin/src/HAL/STM32/inc/SanityCheck.h index eaad8db4d3..9b0c232bdf 100644 --- a/Marlin/src/HAL/STM32/inc/SanityCheck.h +++ b/Marlin/src/HAL/STM32/inc/SanityCheck.h @@ -29,7 +29,7 @@ //#endif -#if ENABLED(SDCARD_EEPROM_EMULATION) && DISABLED(SDSUPPORT) +#if ENABLED(SDCARD_EEPROM_EMULATION) && !HAS_MEDIA #undef SDCARD_EEPROM_EMULATION // Avoid additional error noise #if USE_FALLBACK_EEPROM #warning "EEPROM type not specified. Fallback is SDCARD_EEPROM_EMULATION." diff --git a/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h b/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h index 656fbe1ce2..228e869688 100644 --- a/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h +++ b/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h @@ -28,7 +28,7 @@ #define USE_SHARED_EEPROM 1 #endif -// Allow SDSUPPORT to be disabled -#if DISABLED(SDSUPPORT) +// Allow for no media drives +#if !HAS_MEDIA #undef SDIO_SUPPORT #endif diff --git a/Marlin/src/HAL/STM32F1/inc/SanityCheck.h b/Marlin/src/HAL/STM32F1/inc/SanityCheck.h index fe8f6e0ec2..1da42dcc8f 100644 --- a/Marlin/src/HAL/STM32F1/inc/SanityCheck.h +++ b/Marlin/src/HAL/STM32F1/inc/SanityCheck.h @@ -25,7 +25,7 @@ * Test STM32F1-specific configuration values for errors at compile-time. */ -#if ENABLED(SDCARD_EEPROM_EMULATION) && DISABLED(SDSUPPORT) +#if ENABLED(SDCARD_EEPROM_EMULATION) && !HAS_MEDIA #undef SDCARD_EEPROM_EMULATION // Avoid additional error noise #if USE_FALLBACK_EEPROM #warning "EEPROM type not specified. Fallback is SDCARD_EEPROM_EMULATION." diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 8c0f7a29e8..e478a35445 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -160,7 +160,7 @@ #include "feature/spindle_laser.h" #endif -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA CardReader card; #endif @@ -363,7 +363,7 @@ void startOrResumeJob() { print_job_timer.start(); } -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA inline void abortSDPrinting() { IF_DISABLED(NO_SD_AUTOSTART, card.autofile_cancel()); @@ -397,7 +397,7 @@ void startOrResumeJob() { } } -#endif // SDSUPPORT +#endif // HAS_MEDIA /** * Minimal management of Marlin's core activities: @@ -834,7 +834,7 @@ void idle(const bool no_stepper_sleep/*=false*/) { #endif // Handle SD Card insert / remove - TERN_(SDSUPPORT, card.manage_media()); + TERN_(HAS_MEDIA, card.manage_media()); // Handle USB Flash Drive insert / remove TERN_(USB_FLASH_DRIVE_SUPPORT, card.diskIODriver()->idle()); @@ -1340,7 +1340,7 @@ void setup() { #endif #endif - #if BOTH(SDSUPPORT, SDCARD_EEPROM_EMULATION) + #if BOTH(HAS_MEDIA, SDCARD_EEPROM_EMULATION) SETUP_RUN(card.mount()); // Mount media with settings before first_load #endif @@ -1624,7 +1624,7 @@ void setup() { #endif #if HAS_TFT_LVGL_UI - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (!card.isMounted()) SETUP_RUN(card.mount()); // Mount SD to load graphics and fonts #endif SETUP_RUN(tft_lvgl_init()); @@ -1688,7 +1688,7 @@ void loop() { do { idle(); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (card.flag.abort_sd_printing) abortSDPrinting(); if (marlin_state == MF_SD_COMPLETE) finishSDPrinting(); #endif diff --git a/Marlin/src/feature/binary_stream.h b/Marlin/src/feature/binary_stream.h index 417e39c745..a9cd12b85e 100644 --- a/Marlin/src/feature/binary_stream.h +++ b/Marlin/src/feature/binary_stream.h @@ -281,7 +281,7 @@ public: uint8_t data = 0; millis_t transfer_window = millis() + RX_TIMESLICE; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA PORT_REDIRECT(SERIAL_PORTMASK(card.transfer_port_index)); #endif diff --git a/Marlin/src/feature/e_parser.cpp b/Marlin/src/feature/e_parser.cpp index cfe0956aa7..b50a12d1af 100644 --- a/Marlin/src/feature/e_parser.cpp +++ b/Marlin/src/feature/e_parser.cpp @@ -33,7 +33,7 @@ // Static data members bool EmergencyParser::killed_by_M112, // = false EmergencyParser::quickstop_by_M410, - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA EmergencyParser::sd_abort_by_M524, #endif EmergencyParser::enabled; diff --git a/Marlin/src/feature/e_parser.h b/Marlin/src/feature/e_parser.h index 3a15a7ffa0..df4456d8d3 100644 --- a/Marlin/src/feature/e_parser.h +++ b/Marlin/src/feature/e_parser.h @@ -58,7 +58,7 @@ public: EP_M10, EP_M108, EP_M11, EP_M112, EP_M4, EP_M41, EP_M410, - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA EP_M5, EP_M52, EP_M524, #endif #if ENABLED(HOST_PROMPT_SUPPORT) @@ -79,7 +79,7 @@ public: static bool killed_by_M112; static bool quickstop_by_M410; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA static bool sd_abort_by_M524; #endif @@ -152,7 +152,7 @@ public: case ' ': break; case '1': state = EP_M1; break; case '4': state = EP_M4; break; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA case '5': state = EP_M5; break; #endif #if ENABLED(HOST_PROMPT_SUPPORT) @@ -175,7 +175,7 @@ public: case EP_M4: state = (c == '1') ? EP_M41 : EP_IGNORE; break; case EP_M41: state = (c == '0') ? EP_M410 : EP_IGNORE; break; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA case EP_M5: state = (c == '2') ? EP_M52 : EP_IGNORE; break; case EP_M52: state = (c == '4') ? EP_M524 : EP_IGNORE; break; #endif @@ -215,7 +215,7 @@ public: case EP_M108: wait_for_user = wait_for_heatup = false; break; case EP_M112: killed_by_M112 = true; break; case EP_M410: quickstop_by_M410 = true; break; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA case EP_M524: sd_abort_by_M524 = true; break; #endif #if ENABLED(HOST_PROMPT_SUPPORT) diff --git a/Marlin/src/feature/host_actions.cpp b/Marlin/src/feature/host_actions.cpp index 773b6ebc61..a1c1bad5bb 100644 --- a/Marlin/src/feature/host_actions.cpp +++ b/Marlin/src/feature/host_actions.cpp @@ -209,7 +209,7 @@ void HostUI::action(FSTR_P const fstr, const bool eol) { TERN_(HAS_RESUME_CONTINUE, wait_for_user = false); break; case PROMPT_PAUSE_RESUME: - #if BOTH(ADVANCED_PAUSE_FEATURE, SDSUPPORT) + #if BOTH(ADVANCED_PAUSE_FEATURE, HAS_MEDIA) extern const char M24_STR[]; queue.inject_P(M24_STR); #endif diff --git a/Marlin/src/feature/leds/printer_event_leds.h b/Marlin/src/feature/leds/printer_event_leds.h index 2a4342e8f5..3a037eba96 100644 --- a/Marlin/src/feature/leds/printer_event_leds.h +++ b/Marlin/src/feature/leds/printer_event_leds.h @@ -59,7 +59,7 @@ public: static void onPidTuningDone(LEDColor c) { leds.set_color(c); } #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA static void onPrintCompleted() { leds.set_green(); @@ -80,7 +80,7 @@ public: #endif } - #endif // SDSUPPORT + #endif // HAS_MEDIA }; extern PrinterEventLEDs printerEventLEDs; diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp index 35d1fd79f9..7b814e57f7 100644 --- a/Marlin/src/feature/pause.cpp +++ b/Marlin/src/feature/pause.cpp @@ -91,7 +91,7 @@ static xyze_pos_t resume_position; fil_change_settings_t fc_settings[EXTRUDERS]; -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../sd/cardreader.h" #endif @@ -420,7 +420,7 @@ bool pause_print(const_float_t retract, const xyz_pos_t &park_point, const bool ++did_pause_print; // Pause the print job and timer - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA const bool was_sd_printing = IS_SD_PRINTING(); if (was_sd_printing) { card.pauseSDPrint(); @@ -701,7 +701,7 @@ void resume_print(const_float_t slow_load_length/*=0*/, const_float_t fast_load_ // Resume the print job timer if it was running if (print_job_timer.isPaused()) print_job_timer.start(); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (did_pause_print) { --did_pause_print; card.startOrResumeFilePrinting(); diff --git a/Marlin/src/feature/power_monitor.h b/Marlin/src/feature/power_monitor.h index fa06909053..89e92fb773 100644 --- a/Marlin/src/feature/power_monitor.h +++ b/Marlin/src/feature/power_monitor.h @@ -119,7 +119,7 @@ public: volts.reset(); #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA display_item_ms = 0; display_item = 0; #endif diff --git a/Marlin/src/gcode/control/M993_M994.cpp b/Marlin/src/gcode/control/M993_M994.cpp index 598a73fab7..f6fe0f34ad 100644 --- a/Marlin/src/gcode/control/M993_M994.cpp +++ b/Marlin/src/gcode/control/M993_M994.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if ALL(SPI_FLASH, SDSUPPORT, MARLIN_DEV_MODE) +#if ALL(SPI_FLASH, HAS_MEDIA, MARLIN_DEV_MODE) #include "../gcode.h" #include "../../sd/cardreader.h" @@ -85,4 +85,4 @@ void GcodeSuite::M994() { card.closefile(); } -#endif // SPI_FLASH && SDSUPPORT && MARLIN_DEV_MODE +#endif // SPI_FLASH && HAS_MEDIA && MARLIN_DEV_MODE diff --git a/Marlin/src/gcode/feature/pause/M125.cpp b/Marlin/src/gcode/feature/pause/M125.cpp index 9b18eda4fb..d6e6cb9315 100644 --- a/Marlin/src/gcode/feature/pause/M125.cpp +++ b/Marlin/src/gcode/feature/pause/M125.cpp @@ -88,7 +88,7 @@ void GcodeSuite::M125() { park_point += hotend_offset[active_extruder]; #endif - const bool sd_printing = TERN0(SDSUPPORT, IS_SD_PRINTING()); + const bool sd_printing = TERN0(HAS_MEDIA, IS_SD_PRINTING()); ui.pause_show_message(PAUSE_MESSAGE_PARKING, PAUSE_MODE_PAUSE_PRINT); diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 9d1014e8bf..06a9600c43 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -519,7 +519,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 17: M17(); break; // M17: Enable all stepper motors - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA case 20: M20(); break; // M20: List SD card case 21: M21(); break; // M21: Init SD card case 22: M22(); break; // M22: Release SD card @@ -545,7 +545,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { #endif case 928: M928(); break; // M928: Start SD write - #endif // SDSUPPORT + #endif // HAS_MEDIA case 31: M31(); break; // M31: Report time since the start of SD print or last M109 @@ -919,7 +919,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { #endif #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA case 524: M524(); break; // M524: Abort the current SD print job #endif @@ -1061,7 +1061,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 422: M422(); break; // M422: Set Z Stepper automatic alignment position using probe #endif - #if ALL(SPI_FLASH, SDSUPPORT, MARLIN_DEV_MODE) + #if ALL(SPI_FLASH, HAS_MEDIA, MARLIN_DEV_MODE) case 993: M993(); break; // M993: Backup SPI Flash to SD case 994: M994(); break; // M994: Load a Backup from SD to SPI Flash #endif @@ -1081,7 +1081,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 1000: M1000(); break; // M1000: [INTERNAL] Resume from power-loss #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA case 1001: M1001(); break; // M1001: [INTERNAL] Handle SD completion #endif diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index d49c544623..6a66fa911a 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -642,7 +642,7 @@ private: static void M18_M84(); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA static void M20(); static void M21(); static void M22(); @@ -658,7 +658,7 @@ private: static void M31(); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA #if HAS_MEDIA_SUBCALLS static void M32(); #endif @@ -1062,7 +1062,7 @@ private: #endif #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA static void M524(); #endif @@ -1195,7 +1195,7 @@ private: static void M910(); #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA static void M928(); #endif @@ -1207,7 +1207,7 @@ private: static void M995(); #endif - #if BOTH(SPI_FLASH, SDSUPPORT) + #if BOTH(SPI_FLASH, HAS_MEDIA) static void M993(); static void M994(); #endif @@ -1229,7 +1229,7 @@ private: static void M423_report(const bool forReplay=true); #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA static void M1001(); #endif diff --git a/Marlin/src/gcode/gcode_d.cpp b/Marlin/src/gcode/gcode_d.cpp index be431eed0d..28edf9dcdb 100644 --- a/Marlin/src/gcode/gcode_d.cpp +++ b/Marlin/src/gcode/gcode_d.cpp @@ -199,7 +199,7 @@ void GcodeSuite::D(const int16_t dcode) { SERIAL_ECHOLNPGM("FAILURE: Watchdog did not trigger board reset."); } break; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA case 101: { // D101 Test SD Write card.openFileWrite("test.gco"); @@ -250,7 +250,7 @@ void GcodeSuite::D(const int16_t dcode) { card.closefile(); } break; - #endif // SDSUPPORT + #endif // HAS_MEDIA #if ENABLED(POSTMORTEM_DEBUGGING) diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index d28d53eedd..236895e107 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -168,10 +168,10 @@ void GcodeSuite::M115() { cap_line(F("PROMPT_SUPPORT"), ENABLED(HOST_PROMPT_SUPPORT)); // SDCARD (M20, M23, M24, etc.) - cap_line(F("SDCARD"), ENABLED(SDSUPPORT)); + cap_line(F("SDCARD"), ENABLED(HAS_MEDIA)); // MULTI_VOLUME (M21 S/M21 U) - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA cap_line(F("MULTI_VOLUME"), ENABLED(MULTI_VOLUME)); #endif @@ -179,7 +179,7 @@ void GcodeSuite::M115() { cap_line(F("REPEAT"), ENABLED(GCODE_REPEAT_MARKERS)); // SD_WRITE (M928, M28, M29) - cap_line(F("SD_WRITE"), ENABLED(SDSUPPORT) && DISABLED(SDCARD_READONLY)); + cap_line(F("SD_WRITE"), ENABLED(HAS_MEDIA) && DISABLED(SDCARD_READONLY)); // AUTOREPORT_SD_STATUS (M27 extension) cap_line(F("AUTOREPORT_SD_STATUS"), ENABLED(AUTO_REPORT_SD_STATUS)); diff --git a/Marlin/src/gcode/host/M360.cpp b/Marlin/src/gcode/host/M360.cpp index d8e166dad8..9649e99e17 100644 --- a/Marlin/src/gcode/host/M360.cpp +++ b/Marlin/src/gcode/host/M360.cpp @@ -70,7 +70,7 @@ void GcodeSuite::M360() { config_line(F("InputBuffer"), MAX_CMD_SIZE); config_line(F("PrintlineCache"), BUFSIZE); config_line(F("MixingExtruder"), ENABLED(MIXING_EXTRUDER)); - config_line(F("SDCard"), ENABLED(SDSUPPORT)); + config_line(F("SDCard"), ENABLED(HAS_MEDIA)); config_line(F("Fan"), ENABLED(HAS_FAN)); config_line(F("LCD"), ENABLED(HAS_DISPLAY)); config_line(F("SoftwarePowerSwitch"), 1); diff --git a/Marlin/src/gcode/queue.cpp b/Marlin/src/gcode/queue.cpp index edf0ddfdbf..af8e877436 100644 --- a/Marlin/src/gcode/queue.cpp +++ b/Marlin/src/gcode/queue.cpp @@ -512,7 +512,7 @@ void GCodeQueue::get_serial_commands() { serial.last_N = gcode_N; } - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA // Pronterface "M29" and "M29 " has no line number else if (card.flag.saving && !is_M29(command)) { gcode_line_error(F(STR_ERR_NO_CHECKSUM), p); @@ -562,7 +562,7 @@ void GCodeQueue::get_serial_commands() { } // queue has space, serial has data } -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA /** * Get lines from the SD Card until the command buffer is full @@ -615,7 +615,7 @@ void GCodeQueue::get_serial_commands() { } } -#endif // SDSUPPORT +#endif // HAS_MEDIA /** * Add to the circular command queue the next command from: @@ -628,7 +628,7 @@ void GCodeQueue::get_available_commands() { get_serial_commands(); - TERN_(SDSUPPORT, get_sdcard_commands()); + TERN_(HAS_MEDIA, get_sdcard_commands()); } /** @@ -667,7 +667,7 @@ void GCodeQueue::advance() { } #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (card.flag.saving) { char * const cmd = ring_buffer.peek_next_command_string(); @@ -703,7 +703,7 @@ void GCodeQueue::advance() { gcode.process_next_command(); - #endif // SDSUPPORT + #endif // HAS_MEDIA // The queue may be reset by a command handler or by code invoked by idle() within a handler ring_buffer.advance_pos(ring_buffer.index_r, -1); diff --git a/Marlin/src/gcode/queue.h b/Marlin/src/gcode/queue.h index 19fb359e15..2cb72f2e15 100644 --- a/Marlin/src/gcode/queue.h +++ b/Marlin/src/gcode/queue.h @@ -256,7 +256,7 @@ private: static void get_serial_commands(); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA static void get_sdcard_commands(); #endif diff --git a/Marlin/src/gcode/sd/M1001.cpp b/Marlin/src/gcode/sd/M1001.cpp index 1d1d1a4b7f..3c8f38a144 100644 --- a/Marlin/src/gcode/sd/M1001.cpp +++ b/Marlin/src/gcode/sd/M1001.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../gcode.h" #include "../../module/planner.h" @@ -114,4 +114,4 @@ void GcodeSuite::M1001() { TERN_(SD_REPRINT_LAST_SELECTED_FILE, ui.reselect_last_file()); } -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/gcode/sd/M20.cpp b/Marlin/src/gcode/sd/M20.cpp index 2a7e0d08df..9dca2bb3e0 100644 --- a/Marlin/src/gcode/sd/M20.cpp +++ b/Marlin/src/gcode/sd/M20.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../gcode.h" #include "../../sd/cardreader.h" @@ -51,4 +51,4 @@ void GcodeSuite::M20() { SERIAL_ECHO_MSG(STR_NO_MEDIA); } -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/gcode/sd/M21_M22.cpp b/Marlin/src/gcode/sd/M21_M22.cpp index aec0de27ca..3347168151 100644 --- a/Marlin/src/gcode/sd/M21_M22.cpp +++ b/Marlin/src/gcode/sd/M21_M22.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../gcode.h" #include "../../sd/cardreader.h" @@ -52,4 +52,4 @@ void GcodeSuite::M22() { if (!IS_SD_PRINTING()) card.release(); } -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/gcode/sd/M23.cpp b/Marlin/src/gcode/sd/M23.cpp index 8722e9b6de..7727d4958f 100644 --- a/Marlin/src/gcode/sd/M23.cpp +++ b/Marlin/src/gcode/sd/M23.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../gcode.h" #include "../../sd/cardreader.h" @@ -41,4 +41,4 @@ void GcodeSuite::M23() { TERN_(SET_PROGRESS_PERCENT, ui.set_progress(0)); } -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/gcode/sd/M24_M25.cpp b/Marlin/src/gcode/sd/M24_M25.cpp index 847af65b12..45c596ae99 100644 --- a/Marlin/src/gcode/sd/M24_M25.cpp +++ b/Marlin/src/gcode/sd/M24_M25.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../gcode.h" #include "../../sd/cardreader.h" @@ -101,9 +101,7 @@ void GcodeSuite::M25() { #else // Set initial pause flag to prevent more commands from landing in the queue while we try to pause - #if ENABLED(SDSUPPORT) - if (IS_SD_PRINTING()) card.pauseSDPrint(); - #endif + if (IS_SD_PRINTING()) card.pauseSDPrint(); #if ENABLED(POWER_LOSS_RECOVERY) && DISABLED(DGUS_LCD_UI_MKS) if (recovery.enabled) recovery.save(true); @@ -125,4 +123,4 @@ void GcodeSuite::M25() { #endif } -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/gcode/sd/M26.cpp b/Marlin/src/gcode/sd/M26.cpp index e0557bfa14..9ddc436e8c 100644 --- a/Marlin/src/gcode/sd/M26.cpp +++ b/Marlin/src/gcode/sd/M26.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../gcode.h" #include "../../sd/cardreader.h" @@ -35,4 +35,4 @@ void GcodeSuite::M26() { card.setIndex(parser.value_long()); } -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/gcode/sd/M27.cpp b/Marlin/src/gcode/sd/M27.cpp index 88238190e2..590efbf79d 100644 --- a/Marlin/src/gcode/sd/M27.cpp +++ b/Marlin/src/gcode/sd/M27.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../gcode.h" #include "../../sd/cardreader.h" @@ -49,4 +49,4 @@ void GcodeSuite::M27() { card.report_status(); } -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/gcode/sd/M28_M29.cpp b/Marlin/src/gcode/sd/M28_M29.cpp index 373938d99b..ac1ba08788 100644 --- a/Marlin/src/gcode/sd/M28_M29.cpp +++ b/Marlin/src/gcode/sd/M28_M29.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../gcode.h" #include "../../sd/cardreader.h" @@ -69,4 +69,4 @@ void GcodeSuite::M29() { card.flag.saving = false; } -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/gcode/sd/M30.cpp b/Marlin/src/gcode/sd/M30.cpp index b95a895f1e..da8e51bb8b 100644 --- a/Marlin/src/gcode/sd/M30.cpp +++ b/Marlin/src/gcode/sd/M30.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../gcode.h" #include "../../sd/cardreader.h" @@ -37,4 +37,4 @@ void GcodeSuite::M30() { } } -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/gcode/sd/M524.cpp b/Marlin/src/gcode/sd/M524.cpp index f2b9274223..a3c03e90ba 100644 --- a/Marlin/src/gcode/sd/M524.cpp +++ b/Marlin/src/gcode/sd/M524.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../gcode.h" #include "../../sd/cardreader.h" @@ -51,4 +51,4 @@ void GcodeSuite::M524() { } -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/gcode/sd/M928.cpp b/Marlin/src/gcode/sd/M928.cpp index 03a7877a90..0d86b330c7 100644 --- a/Marlin/src/gcode/sd/M928.cpp +++ b/Marlin/src/gcode/sd/M928.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../gcode.h" #include "../../sd/cardreader.h" @@ -36,4 +36,4 @@ void GcodeSuite::M928() { } -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 32a2eda7c7..b11ede3dc5 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -26,6 +26,10 @@ * Conditionals that need to be set before Configuration_adv.h or pins.h */ +#if ENABLED(SDSUPPORT) + #define HAS_MEDIA 1 +#endif + // MKS_LCD12864A/B is a variant of MKS_MINI_12864 #if EITHER(MKS_LCD12864A, MKS_LCD12864B) #define MKS_MINI_12864 @@ -217,7 +221,7 @@ #define IS_TFTGLCD_PANEL 1 #define IS_ULTIPANEL 1 // Note that IS_ULTIPANEL leads to HAS_WIRED_LCD - #if ENABLED(SDSUPPORT) && DISABLED(LCD_PROGRESS_BAR) + #if HAS_MEDIA && DISABLED(LCD_PROGRESS_BAR) #define LCD_PROGRESS_BAR #endif #if ENABLED(TFTGLCD_PANEL_I2C) diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index fd7ba59224..929a7c78cf 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -794,7 +794,7 @@ #undef MENU_ADDAUTOSTART #endif -#if EITHER(SDSUPPORT, SET_PROGRESS_MANUALLY) +#if EITHER(HAS_MEDIA, SET_PROGRESS_MANUALLY) #define HAS_PRINT_PROGRESS 1 #endif @@ -812,7 +812,7 @@ #define HAS_STATUS_MESSAGE_TIMEOUT 1 #endif -#if ENABLED(SDSUPPORT) && SD_PROCEDURE_DEPTH +#if HAS_MEDIA && SD_PROCEDURE_DEPTH #define HAS_MEDIA_SUBCALLS 1 #endif @@ -850,7 +850,7 @@ #else #undef LED_POWEROFF_TIMEOUT #endif -#if ALL(HAS_RESUME_CONTINUE, PRINTER_EVENT_LEDS, SDSUPPORT) +#if ALL(HAS_RESUME_CONTINUE, PRINTER_EVENT_LEDS, HAS_MEDIA) #define HAS_LEDS_OFF_FLAG 1 #endif #if DISPLAY_SLEEP_MINUTES || TOUCH_IDLE_SLEEP_MINS @@ -1148,7 +1148,7 @@ // SD Card connection methods // Defined here so pins and sanity checks can use them // -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #define _SDCARD_LCD 1 #define _SDCARD_ONBOARD 2 #define _SDCARD_CUSTOM_CABLE 3 @@ -1228,7 +1228,7 @@ #endif // AVR are (usually) too limited in resources to store the configuration into the binary -#if ENABLED(CONFIGURATION_EMBEDDING) && !defined(FORCE_CONFIG_EMBED) && (defined(__AVR__) || DISABLED(SDSUPPORT) || EITHER(SDCARD_READONLY, DISABLE_M503)) +#if ENABLED(CONFIGURATION_EMBEDDING) && !defined(FORCE_CONFIG_EMBED) && (defined(__AVR__) || !HAS_MEDIA || EITHER(SDCARD_READONLY, DISABLE_M503)) #undef CONFIGURATION_EMBEDDING #define CANNOT_EMBED_CONFIGURATION defined(__AVR__) #endif diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 59b5dab462..bf4810cd8a 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -510,7 +510,7 @@ * Override the SD_DETECT_STATE set in Configuration_adv.h * and enable sharing of onboard SD host drives (all platforms but AGCM4) */ -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #if HAS_SD_HOST_DRIVE && SD_CONNECTION_IS(ONBOARD) // @@ -3351,7 +3351,7 @@ #endif // Fallback SPI Speed for SD -#if ENABLED(SDSUPPORT) && !defined(SD_SPI_SPEED) +#if HAS_MEDIA && !defined(SD_SPI_SPEED) #define SD_SPI_SPEED SPI_FULL_SPEED #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 034e472e84..40e76b6149 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -978,7 +978,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS * Progress Bar */ #if ENABLED(LCD_PROGRESS_BAR) - #if NONE(SDSUPPORT, SET_PROGRESS_MANUALLY) + #if NONE(HAS_MEDIA, SET_PROGRESS_MANUALLY) #error "LCD_PROGRESS_BAR requires SDSUPPORT or SET_PROGRESS_MANUALLY." #elif NONE(HAS_MARLINUI_HD44780, IS_TFTGLCD_PANEL) #error "LCD_PROGRESS_BAR only applies to HD44780 character LCD and TFTGLCD_PANEL_(SPI|I2C)." @@ -1028,7 +1028,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS /** * SD Card Settings */ -#if ALL(SDSUPPORT, HAS_SD_DETECT, SD_CONNECTION_TYPICAL, ELB_FULL_GRAPHIC_CONTROLLER, HAS_MARLINUI_MENU) && SD_DETECT_STATE == LOW +#if ALL(HAS_MEDIA, HAS_SD_DETECT, SD_CONNECTION_TYPICAL, ELB_FULL_GRAPHIC_CONTROLLER, HAS_MARLINUI_MENU) && SD_DETECT_STATE == LOW #error "SD_DETECT_STATE must be set HIGH for SD on the ELB_FULL_GRAPHIC_CONTROLLER." #endif #undef SD_CONNECTION_TYPICAL @@ -1176,8 +1176,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "ADVANCED_PAUSE_FEATURE requires FILAMENT_UNLOAD_PURGE_FEEDRATE." #elif ENABLED(EXTRUDER_RUNOUT_PREVENT) #error "EXTRUDER_RUNOUT_PREVENT is incompatible with ADVANCED_PAUSE_FEATURE." - #elif ENABLED(PARK_HEAD_ON_PAUSE) && NONE(SDSUPPORT, IS_NEWPANEL, EMERGENCY_PARSER) - #error "PARK_HEAD_ON_PAUSE requires SDSUPPORT, EMERGENCY_PARSER, or an LCD controller." + #elif ENABLED(PARK_HEAD_ON_PAUSE) && NONE(HAS_MEDIA, IS_NEWPANEL, EMERGENCY_PARSER) + #error "PARK_HEAD_ON_PAUSE requires HAS_MEDIA, EMERGENCY_PARSER, or an LCD controller." #elif ENABLED(HOME_BEFORE_FILAMENT_CHANGE) && DISABLED(PAUSE_PARK_NO_STEPPER_TIMEOUT) #error "HOME_BEFORE_FILAMENT_CHANGE requires PAUSE_PARK_NO_STEPPER_TIMEOUT." #elif ENABLED(PREVENT_LENGTHY_EXTRUDE) && FILAMENT_CHANGE_UNLOAD_LENGTH > EXTRUDE_MAXLENGTH @@ -3266,7 +3266,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #if ENABLED(TFT_LVGL_UI) #if DISABLED(TFT_RES_480x320) #error "TFT_LVGL_UI requires TFT_RES_480x320." - #elif DISABLED(SDSUPPORT) + #elif !HAS_MEDIA #error "TFT_LVGL_UI requires SDSUPPORT." #endif #endif @@ -3282,7 +3282,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #if ENABLED(ANYCUBIC_LCD_CHIRON) #ifndef BEEPER_PIN #error "ANYCUBIC_LCD_CHIRON requires BEEPER_PIN" - #elif DISABLED(SDSUPPORT) + #elif !HAS_MEDIA #error "ANYCUBIC_LCD_CHIRON requires SDSUPPORT" #elif TEMP_SENSOR_BED == 0 #error "ANYCUBIC_LCD_CHIRON requires heatbed (TEMP_SENSOR_BED)" @@ -3305,7 +3305,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS * Ender-3 V2 controller has some limitations */ #if ENABLED(DWIN_CREALITY_LCD) - #if DISABLED(SDSUPPORT) + #if !HAS_MEDIA #error "DWIN_CREALITY_LCD requires SDSUPPORT to be enabled." #elif EITHER(PID_EDIT_MENU, PID_AUTOTUNE_MENU) #error "DWIN_CREALITY_LCD does not support PID_EDIT_MENU or PID_AUTOTUNE_MENU." @@ -3317,7 +3317,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "DWIN_CREALITY_LCD does not support LCD_BED_LEVELING with PROBE_MANUALLY." #endif #elif ENABLED(DWIN_LCD_PROUI) - #if DISABLED(SDSUPPORT) + #if !HAS_MEDIA #error "DWIN_LCD_PROUI requires SDSUPPORT to be enabled." #elif EITHER(PID_EDIT_MENU, PID_AUTOTUNE_MENU) #error "DWIN_LCD_PROUI does not support PID_EDIT_MENU or PID_AUTOTUNE_MENU." @@ -4339,7 +4339,7 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); * Check to make sure MONITOR_DRIVER_STATUS isn't enabled * on boards where TMC drivers share the SPI bus with SD. */ -#if HAS_TMC_SPI && ALL(MONITOR_DRIVER_STATUS, SDSUPPORT, USES_SHARED_SPI) +#if HAS_TMC_SPI && ALL(MONITOR_DRIVER_STATUS, HAS_MEDIA, USES_SHARED_SPI) #error "MONITOR_DRIVER_STATUS and SDSUPPORT cannot be used together on boards with shared SPI." #endif diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index 8a5e5c5ad9..e33814589c 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -41,7 +41,7 @@ #include "../../module/planner.h" #include "../../module/motion.h" -#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) +#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) #include "../../feature/filwidth.h" #include "../../gcode/parser.h" #endif @@ -289,7 +289,7 @@ void MarlinUI::set_custom_characters(const HD44780CharSet screen_charset/*=CHARS #endif // LCD_PROGRESS_BAR - #if BOTH(SDSUPPORT, HAS_MARLINUI_MENU) + #if BOTH(HAS_MEDIA, HAS_MARLINUI_MENU) // CHARSET_MENU const static PROGMEM byte refresh[8] = { @@ -313,7 +313,7 @@ void MarlinUI::set_custom_characters(const HD44780CharSet screen_charset/*=CHARS B00000 }; - #endif // SDSUPPORT + #endif // HAS_MEDIA #if ENABLED(SHOW_BOOTSCREEN) // Set boot screen corner characters @@ -339,7 +339,7 @@ void MarlinUI::set_custom_characters(const HD44780CharSet screen_charset/*=CHARS #endif { createChar_P(LCD_STR_UPLEVEL[0], uplevel); - #if BOTH(SDSUPPORT, HAS_MARLINUI_MENU) + #if BOTH(HAS_MEDIA, HAS_MARLINUI_MENU) // SD Card sub-menu special characters createChar_P(LCD_STR_REFRESH[0], refresh); createChar_P(LCD_STR_FOLDER[0], folder); @@ -697,7 +697,7 @@ void MarlinUI::draw_status_message(const bool blink) { if (progress > 2) return draw_progress_bar(progress); } - #elif BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) + #elif BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) // Alternate Status message and Filament display if (ELAPSED(millis(), next_filament_display)) { @@ -709,7 +709,7 @@ void MarlinUI::draw_status_message(const bool blink) { return; } - #endif // FILAMENT_LCD_DISPLAY && SDSUPPORT + #endif // FILAMENT_LCD_DISPLAY && HAS_MEDIA #if ENABLED(STATUS_MESSAGE_SCROLLING) static bool last_blink = false; @@ -1218,7 +1218,7 @@ void MarlinUI::draw_status_screen() { } } - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA void MenuItem_sdbase::draw(const bool sel, const uint8_t row, FSTR_P const, CardReader &theCard, const bool isDir) { lcd_put_lchar(0, row, sel ? LCD_STR_ARROW_RIGHT[0] : ' '); diff --git a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp index fc568c55db..969b3fb036 100644 --- a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp +++ b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp @@ -52,7 +52,7 @@ #include "../../module/planner.h" #include "../../module/motion.h" -#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) +#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) #include "../../feature/filwidth.h" #include "../../gcode/parser.h" #endif @@ -672,7 +672,7 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const void MarlinUI::draw_status_message(const bool blink) { if (!PanelDetected) return; lcd_moveto(0, 3); - #if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) + #if BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) // Alternate Status message and Filament display if (ELAPSED(millis(), next_filament_display)) { @@ -689,7 +689,7 @@ void MarlinUI::draw_status_message(const bool blink) { return; } - #endif // FILAMENT_LCD_DISPLAY && SDSUPPORT + #endif // FILAMENT_LCD_DISPLAY && HAS_MEDIA // Get the UTF8 character count of the string uint8_t slen = utf8_strlen(status_message); @@ -1061,7 +1061,7 @@ void MarlinUI::draw_status_screen() { lcd.print_line(); } - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA void MenuItem_sdbase::draw(const bool sel, const uint8_t row, FSTR_P const, CardReader &theCard, const bool isDir) { if (!PanelDetected) return; @@ -1074,7 +1074,7 @@ void MarlinUI::draw_status_screen() { lcd.print_line(); } - #endif // SDSUPPORT + #endif // HAS_MEDIA #if ENABLED(LCD_HAS_STATUS_INDICATORS) diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp index ce9a31668a..76fa7842a3 100644 --- a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp +++ b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp @@ -56,7 +56,7 @@ #include "../../module/printcounter.h" #include "../../MarlinCore.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../../libs/duration_t.h" #endif @@ -545,7 +545,7 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop if (yes) draw_boxed_string(LCD_WIDTH - (utf8_strlen(yes) * (USE_WIDE_GLYPH ? 2 : 1) + 1), LCD_HEIGHT - 1, yes, yesno); } - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA void MenuItem_sdbase::draw(const bool sel, const uint8_t row, FSTR_P const, CardReader &theCard, const bool isDir) { if (mark_as_selected(row, sel)) { @@ -557,7 +557,7 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop } } - #endif // SDSUPPORT + #endif // HAS_MEDIA #if ENABLED(AUTO_BED_LEVELING_UBL) diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.h b/Marlin/src/lcd/dogm/marlinui_DOGM.h index 2b9eb64a57..afdda5ac5b 100644 --- a/Marlin/src/lcd/dogm/marlinui_DOGM.h +++ b/Marlin/src/lcd/dogm/marlinui_DOGM.h @@ -36,10 +36,10 @@ // RepRapWorld Graphical LCD - #if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN) && (LCD_PINS_EN == SD_MOSI_PIN) + #if !HAS_MEDIA && (LCD_PINS_D4 == SD_SCK_PIN) && (LCD_PINS_EN == SD_MOSI_PIN) #define U8G_CLASS U8GLIB_ST7920_128X64_4X_HAL #define U8G_PARAM LCD_PINS_RS - #elif ENABLED(SDSUPPORT) && __SAMD21__ + #elif HAS_MEDIA && __SAMD21__ #define U8G_CLASS U8GLIB_ST7920_128X64_4X #define U8G_PARAM LCD_PINS_RS #else @@ -52,7 +52,7 @@ // RepRap Discount Full Graphics Smart Controller // and other variant LCDs using ST7920 - #if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN) && (LCD_PINS_EN == SD_MOSI_PIN) + #if !HAS_MEDIA && (LCD_PINS_D4 == SD_SCK_PIN) && (LCD_PINS_EN == SD_MOSI_PIN) #define U8G_CLASS U8GLIB_ST7920_128X64_4X_HAL // 2 stripes, HW SPI (Shared with SD card. Non-standard LCD adapter on AVR.) #define U8G_PARAM LCD_PINS_RS #else diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp index 22e71251ff..cb3515a694 100644 --- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp +++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp @@ -67,7 +67,7 @@ #include "../../feature/power_monitor.h" #endif -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../../sd/cardreader.h" #endif @@ -742,7 +742,7 @@ void MarlinUI::draw_status_screen() { #endif } - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA // // SD Card Symbol // @@ -756,7 +756,7 @@ void MarlinUI::draw_status_screen() { // Corner pixel u8g.drawPixel(50, 43); // 43 (or 42) } - #endif // SDSUPPORT + #endif // HAS_MEDIA #if HAS_PRINT_PROGRESS // Progress bar frame @@ -871,7 +871,7 @@ void MarlinUI::draw_status_screen() { // // Filament sensor display if SD is disabled // - #if ENABLED(FILAMENT_LCD_DISPLAY) && DISABLED(SDSUPPORT) + #if ENABLED(FILAMENT_LCD_DISPLAY) && !HAS_MEDIA lcd_put_u8str(56, EXTRAS_2_BASELINE, wstring); lcd_put_u8str(102, EXTRAS_2_BASELINE, mstring); lcd_put_u8str(F("%")); @@ -887,7 +887,7 @@ void MarlinUI::draw_status_screen() { if (PAGE_CONTAINS(STATUS_BASELINE - INFO_FONT_ASCENT, STATUS_BASELINE + INFO_FONT_DESCENT)) { lcd_moveto(0, STATUS_BASELINE); - #if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) + #if BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) // Alternate Status message and Filament display if (ELAPSED(millis(), next_filament_display)) { lcd_put_u8str(F(LCD_STR_FILAM_DIA)); diff --git a/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp index 96f2eeae96..a4ace1ce8a 100644 --- a/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp +++ b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp @@ -81,7 +81,7 @@ #include "../../module/temperature.h" #include "../../libs/numtostr.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../../sd/cardreader.h" #endif diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index a24adec8e9..e685fe16fd 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -4389,7 +4389,7 @@ void CrealityDWINClass::Print_Screen_Control() { #endif TERN_(HAS_FAN, thermalManager.fan_speed[0] = pausefan); planner.synchronize(); - TERN_(SDSUPPORT, queue.inject(F("M24"))); + TERN_(HAS_MEDIA, queue.inject(F("M24"))); #endif } else { @@ -4427,7 +4427,7 @@ void CrealityDWINClass::Popup_Control() { #endif #if ENABLED(PARK_HEAD_ON_PAUSE) Popup_Handler(Home, true); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (IS_SD_PRINTING()) card.pauseSDPrint(); #endif planner.synchronize(); diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp index c267d32048..4b34d65100 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp @@ -39,7 +39,7 @@ #include "../../../module/temperature.h" #include "../../../module/printcounter.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../../../libs/duration_t.h" #endif @@ -467,7 +467,7 @@ void MarlinUI::draw_status_message(const bool blink) { if (yes) draw_boxed_string(true, yes, yesno); } - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA void MenuItem_sdbase::draw(const bool sel, const uint8_t row, FSTR_P const, CardReader &theCard, const bool isDir) { if (mark_as_selected(row, sel)) { @@ -487,7 +487,7 @@ void MarlinUI::draw_status_message(const bool blink) { } } - #endif // SDSUPPORT + #endif // HAS_MEDIA #if ENABLED(AUTO_BED_LEVELING_UBL) diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp index 5ec94b853f..cfa326667a 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp @@ -39,7 +39,7 @@ #include "../../../module/printcounter.h" #include "../../../module/planner.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../../../libs/duration_t.h" #endif diff --git a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp index 1bc52bfcaf..36b24861fe 100644 --- a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp +++ b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp @@ -94,7 +94,7 @@ void AnycubicTFTClass::OnSetup() { delay_ms(10); // Init the state of the key pins running on the TFT - #if BOTH(SDSUPPORT, HAS_SD_DETECT) + #if BOTH(HAS_MEDIA, HAS_SD_DETECT) SET_INPUT_PULLUP(SD_DETECT_PIN); #endif #if ENABLED(FILAMENT_RUNOUT_SENSOR) @@ -176,7 +176,7 @@ void AnycubicTFTClass::OnUserConfirmRequired(const char * const msg) { SERIAL_ECHOLNPGM("TFT Serial Debug: OnUserConfirmRequired triggered... ", msg); #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA /** * Need to handle the process of following states * "Nozzle Parked" @@ -380,7 +380,7 @@ void AnycubicTFTClass::HandleSpecialMenu() { } void AnycubicTFTClass::RenderCurrentFileList() { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA uint16_t selectedNumber = 0; SelectedDirectory[0] = 0; SelectedFile[0] = 0; @@ -404,7 +404,7 @@ void AnycubicTFTClass::RenderCurrentFileList() { RenderCurrentFolder(selectedNumber); } SENDLINE_PGM("END"); // Filelist stop - #endif // SDSUPPORT + #endif // HAS_MEDIA } void AnycubicTFTClass::RenderSpecialMenu(uint16_t selectedNumber) { @@ -516,7 +516,7 @@ void AnycubicTFTClass::RenderCurrentFolder(uint16_t selectedNumber) { } void AnycubicTFTClass::OnPrintTimerStarted() { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (mediaPrintingState == AMPRINTSTATE_PRINTING) SENDLINE_DBG_PGM("J04", "TFT Serial Debug: Starting SD Print... J04"); // J04 Starting Print @@ -524,7 +524,7 @@ void AnycubicTFTClass::OnPrintTimerStarted() { } void AnycubicTFTClass::OnPrintTimerPaused() { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (isPrintingFromMedia()) { mediaPrintingState = AMPRINTSTATE_PAUSED; mediaPauseState = AMPAUSESTATE_PARKING; @@ -533,7 +533,7 @@ void AnycubicTFTClass::OnPrintTimerPaused() { } void AnycubicTFTClass::OnPrintTimerStopped() { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (mediaPrintingState == AMPRINTSTATE_PRINTING) { mediaPrintingState = AMPRINTSTATE_NOT_PRINTING; mediaPauseState = AMPAUSESTATE_NOT_PAUSED; @@ -608,7 +608,7 @@ void AnycubicTFTClass::GetCommandFromTFT() { } break; case 6: // A6 GET SD CARD PRINTING STATUS - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (isPrintingFromMedia()) { SEND_PGM("A6V "); if (isMediaInserted()) @@ -637,28 +637,28 @@ void AnycubicTFTClass::GetCommandFromTFT() { break; case 8: // A8 GET SD LIST - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA SelectedFile[0] = 0; RenderCurrentFileList(); #endif break; case 9: // A9 pause sd print - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (isPrintingFromMedia()) PausePrint(); #endif break; case 10: // A10 resume sd print - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (isPrintingFromMediaPaused()) ResumePrint(); #endif break; case 11: // A11 STOP SD PRINT - TERN_(SDSUPPORT, StopPrint()); + TERN_(HAS_MEDIA, StopPrint()); break; case 12: // A12 kill @@ -666,7 +666,7 @@ void AnycubicTFTClass::GetCommandFromTFT() { break; case 13: // A13 SELECTION FILE - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (isMediaInserted()) { starpos = (strchr(TFTstrchr_pointer + 4, '*')); if (TFTstrchr_pointer[4] == '/') { @@ -695,7 +695,7 @@ void AnycubicTFTClass::GetCommandFromTFT() { break; case 14: // A14 START PRINTING - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (!isPrinting() && strlen(SelectedFile) > 0) StartPrint(); #endif @@ -868,7 +868,7 @@ void AnycubicTFTClass::GetCommandFromTFT() { break; case 26: // A26 refresh SD - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (isMediaInserted()) { if (strlen(SelectedDirectory) > 0) { FileList currentFileList; @@ -924,7 +924,7 @@ void AnycubicTFTClass::GetCommandFromTFT() { } void AnycubicTFTClass::DoSDCardStateCheck() { - #if BOTH(SDSUPPORT, HAS_SD_DETECT) + #if BOTH(HAS_MEDIA, HAS_SD_DETECT) bool isInserted = isMediaInserted(); if (isInserted) SENDLINE_DBG_PGM("J00", "TFT Serial Debug: SD card state changed... isInserted"); @@ -954,7 +954,7 @@ void AnycubicTFTClass::DoFilamentRunoutCheck() { } void AnycubicTFTClass::StartPrint() { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (!isPrinting() && strlen(SelectedFile) > 0) { #if ENABLED(ANYCUBIC_LCD_DEBUG) SERIAL_ECHOPGM("TFT Serial Debug: About to print file ... "); @@ -970,7 +970,7 @@ void AnycubicTFTClass::StartPrint() { } void AnycubicTFTClass::PausePrint() { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (isPrintingFromMedia() && mediaPrintingState != AMPRINTSTATE_STOP_REQUESTED && mediaPauseState == AMPAUSESTATE_NOT_PAUSED) { mediaPrintingState = AMPRINTSTATE_PAUSE_REQUESTED; mediaPauseState = AMPAUSESTATE_NOT_PAUSED; // need the userconfirm method to update pause state @@ -984,7 +984,7 @@ void AnycubicTFTClass::PausePrint() { } void AnycubicTFTClass::ResumePrint() { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA #if ENABLED(FILAMENT_RUNOUT_SENSOR) if (READ(FIL_RUNOUT1_PIN)) { #if ENABLED(ANYCUBIC_LCD_DEBUG) @@ -1020,7 +1020,7 @@ void AnycubicTFTClass::ResumePrint() { } void AnycubicTFTClass::StopPrint() { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA mediaPrintingState = AMPRINTSTATE_STOP_REQUESTED; mediaPauseState = AMPAUSESTATE_NOT_PAUSED; SENDLINE_DBG_PGM("J16", "TFT Serial Debug: SD print stop called... J16"); diff --git a/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp index b2363c4ee9..e8abc259a2 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp @@ -52,7 +52,7 @@ bool DGUSScreenHandler::ScreenComplete; void (*DGUSScreenHandler::confirm_action_cb)() = nullptr; -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA int16_t DGUSScreenHandler::top_file = 0, DGUSScreenHandler::file_to_print = 0; ExtUI::FileList filelist; @@ -260,7 +260,7 @@ void DGUSScreenHandler::DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var) #endif -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA void DGUSScreenHandler::ScreenChangeHookIfSD(DGUS_VP_Variable &var, void *val_ptr) { // default action executed when there is a SD card, but not printing @@ -329,7 +329,7 @@ void DGUSScreenHandler::DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var) GotoScreen(DGUSLCD_SCREEN_POPUP); } -#endif // SDSUPPORT +#endif // HAS_MEDIA void DGUSScreenHandler::ScreenConfirmedOK(DGUS_VP_Variable &var, void *val_ptr) { DGUS_VP_Variable ramcopy; diff --git a/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h b/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h index 7ff9ac673f..9ebca87be1 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h +++ b/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h @@ -114,7 +114,7 @@ public: static void HandleFilamentLoadUnload(DGUS_VP_Variable &var); #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA // Callback for VP "Display wants to change screen when there is a SD card" static void ScreenChangeHookIfSD(DGUS_VP_Variable &var, void *val_ptr); // Scroll buttons on the file listing screen. @@ -233,7 +233,7 @@ protected: static uint16_t ConfirmVP; //< context for confirm screen (VP that will be emulated-sent on "OK"). - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA static int16_t top_file; //< file on top of file chooser static int16_t file_to_print; //< touched file to be confirmed #endif diff --git a/Marlin/src/lcd/extui/dgus/dgus_extui.cpp b/Marlin/src/lcd/extui/dgus/dgus_extui.cpp index 2fe4e03016..1d86d8bd55 100644 --- a/Marlin/src/lcd/extui/dgus/dgus_extui.cpp +++ b/Marlin/src/lcd/extui/dgus/dgus_extui.cpp @@ -48,9 +48,9 @@ namespace ExtUI { while (!ScreenHandler.loop()); // Wait while anything is left to be sent } - void onMediaInserted() { TERN_(SDSUPPORT, ScreenHandler.SDCardInserted()); } - void onMediaError() { TERN_(SDSUPPORT, ScreenHandler.SDCardError()); } - void onMediaRemoved() { TERN_(SDSUPPORT, ScreenHandler.SDCardRemoved()); } + void onMediaInserted() { TERN_(HAS_MEDIA, ScreenHandler.SDCardInserted()); } + void onMediaError() { TERN_(HAS_MEDIA, ScreenHandler.SDCardError()); } + void onMediaRemoved() { TERN_(HAS_MEDIA, ScreenHandler.SDCardRemoved()); } void onPlayTone(const uint16_t frequency, const uint16_t duration) {} void onPrintTimerStarted() {} diff --git a/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp b/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp index 3e731de438..6b670368b6 100644 --- a/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp +++ b/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp @@ -320,7 +320,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { // Helper to detect touch events VPHELPER(VP_SCREENCHANGE, nullptr, ScreenHandler.ScreenChangeHook, nullptr), VPHELPER(VP_SCREENCHANGE_ASK, nullptr, ScreenHandler.ScreenChangeHookIfIdle, nullptr), - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, ScreenHandler.ScreenChangeHookIfSD, nullptr), #endif VPHELPER(VP_CONFIRMED, nullptr, ScreenHandler.ScreenConfirmedOK, nullptr), @@ -442,7 +442,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { #endif // SDCard File listing. - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA VPHELPER(VP_SD_ScrollEvent, nullptr, ScreenHandler.DGUSLCD_SD_ScrollFilelist, nullptr), VPHELPER(VP_SD_FileSelected, nullptr, ScreenHandler.DGUSLCD_SD_FileSelected, nullptr), VPHELPER(VP_SD_FileSelectConfirm, nullptr, ScreenHandler.DGUSLCD_SD_StartPrint, nullptr), diff --git a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp index 58f0ed8319..0c76454d74 100644 --- a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp @@ -40,7 +40,7 @@ #include "../../../../feature/powerloss.h" #endif -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA extern ExtUI::FileList filelist; @@ -124,7 +124,7 @@ ) GotoScreen(DGUSLCD_SCREEN_MAIN); } -#endif // SDSUPPORT +#endif // HAS_MEDIA void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { uint8_t *tmp = (uint8_t*)val_ptr; diff --git a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp index a348a1f9a1..c278179e3f 100644 --- a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp +++ b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp @@ -317,7 +317,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { // Helper to detect touch events VPHELPER(VP_SCREENCHANGE, nullptr, ScreenHandler.ScreenChangeHook, nullptr), VPHELPER(VP_SCREENCHANGE_ASK, nullptr, ScreenHandler.ScreenChangeHookIfIdle, nullptr), - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, ScreenHandler.ScreenChangeHookIfSD, nullptr), #endif VPHELPER(VP_CONFIRMED, nullptr, ScreenHandler.ScreenConfirmedOK, nullptr), @@ -435,7 +435,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { #endif // SDCard File listing. - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA VPHELPER(VP_SD_ScrollEvent, nullptr, ScreenHandler.DGUSLCD_SD_ScrollFilelist, nullptr), VPHELPER(VP_SD_FileSelected, nullptr, ScreenHandler.DGUSLCD_SD_FileSelected, nullptr), VPHELPER(VP_SD_FileSelectConfirm, nullptr, ScreenHandler.DGUSLCD_SD_StartPrint, nullptr), diff --git a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp index ebe3e3ba8a..83658cc8c0 100644 --- a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp @@ -40,7 +40,7 @@ #include "../../../../feature/powerloss.h" #endif -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA extern ExtUI::FileList filelist; @@ -124,7 +124,7 @@ ) GotoScreen(DGUSLCD_SCREEN_MAIN); } -#endif // SDSUPPORT +#endif // HAS_MEDIA void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { uint8_t *tmp = (uint8_t*)val_ptr; diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp index 40f6a349d5..8dee8e26d7 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp @@ -502,7 +502,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { // Helper to detect touch events VPHELPER(VP_SCREENCHANGE, nullptr, ScreenHandler.ScreenChangeHook, nullptr), VPHELPER(VP_SCREENCHANGE_ASK, nullptr, ScreenHandler.ScreenChangeHookIfIdle, nullptr), - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, ScreenHandler.ScreenChangeHookIfSD, nullptr), #endif VPHELPER(VP_CONFIRMED, nullptr, ScreenHandler.ScreenConfirmedOK, nullptr), @@ -751,7 +751,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { // SDCard File listing - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA VPHELPER(VP_SD_FileSelected, nullptr, ScreenHandler.DGUSLCD_SD_FileSelected, nullptr), VPHELPER(VP_SD_ScrollEvent, nullptr, ScreenHandler.DGUSLCD_SD_ScrollFilelist, nullptr), VPHELPER(VP_SD_FileSelectConfirm, nullptr, ScreenHandler.DGUSLCD_SD_StartPrint, nullptr), diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp index bdd5f4f018..8cddcb074e 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp @@ -47,7 +47,7 @@ #include "../../../../feature/powerloss.h" #endif -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA extern ExtUI::FileList filelist; #endif @@ -140,7 +140,7 @@ void DGUSScreenHandlerMKS::DGUSLCD_SendTMCStepValue(DGUS_VP_Variable &var) { #endif } -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA void DGUSScreenHandler::DGUSLCD_SD_FileSelected(DGUS_VP_Variable &var, void *val_ptr) { uint16_t touched_nr = (int16_t)BE16_P(val_ptr) + top_file; @@ -262,7 +262,7 @@ void DGUSScreenHandlerMKS::DGUSLCD_SendTMCStepValue(DGUS_VP_Variable &var) { const uint16_t value = BE16_P(val_ptr); if (value == 0x0F) GotoScreen(DGUSLCD_SCREEN_MAIN); } -#endif // SDSUPPORT +#endif // HAS_MEDIA void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { uint8_t *tmp = (uint8_t*)val_ptr; diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.h b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.h index 823ed4297c..69ded29ffb 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.h +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.h @@ -83,7 +83,7 @@ public: static void GetManualFilamentSpeed(DGUS_VP_Variable &var, void *val_ptr); #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA // Marlin informed us about SD print completion. static void SDPrintingFinished(); #else diff --git a/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.cpp b/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.cpp index 004b453e6e..c5711320ec 100644 --- a/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.cpp +++ b/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.cpp @@ -128,7 +128,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { // Helper to detect touch events VPHELPER(VP_SCREENCHANGE, nullptr, ScreenHandler.ScreenChangeHook, nullptr), VPHELPER(VP_SCREENCHANGE_ASK, nullptr, ScreenHandler.ScreenChangeHookIfIdle, nullptr), - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, ScreenHandler.ScreenChangeHookIfSD, nullptr), #endif VPHELPER(VP_CONFIRMED, nullptr, ScreenHandler.ScreenConfirmedOK, nullptr), @@ -243,7 +243,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { #endif // SDCard File listing. - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA VPHELPER(VP_SD_ScrollEvent, nullptr, ScreenHandler.DGUSLCD_SD_ScrollFilelist, nullptr), VPHELPER(VP_SD_FileSelected, nullptr, ScreenHandler.DGUSLCD_SD_FileSelected, nullptr), VPHELPER(VP_SD_FileSelectConfirm, nullptr, ScreenHandler.DGUSLCD_SD_StartPrint, nullptr), diff --git a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp index edf9a5ca82..6921cdc737 100644 --- a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp @@ -40,7 +40,7 @@ #include "../../../../feature/powerloss.h" #endif -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA extern ExtUI::FileList filelist; @@ -124,7 +124,7 @@ ) GotoScreen(DGUSLCD_SCREEN_MAIN); } -#endif // SDSUPPORT +#endif // HAS_MEDIA void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { uint8_t *tmp = (uint8_t*)val_ptr; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp index 7a0318a555..40f3bbf1d5 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp @@ -46,7 +46,7 @@ void DGUSRxHandler::ScreenChange(DGUS_VP &vp, void *data_ptr) { const DGUS_Screen screen = (DGUS_Screen)((uint8_t*)data_ptr)[1]; if (vp.addr == DGUS_Addr::SCREENCHANGE_SD) { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA IF_DISABLED(HAS_SD_DETECT, card.mount()); if (!ExtUI::isMediaInserted()) { @@ -76,7 +76,7 @@ void DGUSRxHandler::ScreenChange(DGUS_VP &vp, void *data_ptr) { dgus_screen_handler.TriggerScreenChange(screen); } -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA void DGUSRxHandler::Scroll(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); @@ -154,7 +154,7 @@ void DGUSRxHandler::ScreenChange(DGUS_VP &vp, void *data_ptr) { ExtUI::printFile(dgus_screen_handler.filelist.shortFilename()); dgus_screen_handler.TriggerScreenChange(DGUS_Screen::PRINT_STATUS); } -#endif // SDSUPPORT +#endif // HAS_MEDIA void DGUSRxHandler::PrintAbort(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.h index 4cad11fc0b..d6d5855b9d 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.h @@ -28,7 +28,7 @@ namespace DGUSRxHandler { void ScreenChange(DGUS_VP &, void *); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA void Scroll(DGUS_VP &, void *); void SelectFile(DGUS_VP &, void *); void PrintFile(DGUS_VP &, void *); diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp index e1d8778567..e8c23b3226 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp @@ -34,7 +34,7 @@ uint8_t DGUSScreenHandler::debug_count = 0; -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA ExtUI::FileList DGUSScreenHandler::filelist; uint16_t DGUSScreenHandler::filelist_offset = 0; int16_t DGUSScreenHandler::filelist_selected = -1; @@ -281,7 +281,7 @@ void DGUSScreenHandler::FilamentRunout(const ExtUI::extruder_t extruder) { dgus_display.PlaySound(3); } -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA void DGUSScreenHandler::SDCardInserted() { if (current_screen == DGUS_Screen::HOME) @@ -299,7 +299,7 @@ void DGUSScreenHandler::FilamentRunout(const ExtUI::extruder_t extruder) { TriggerScreenChange(DGUS_Screen::HOME); } -#endif // SDSUPPORT +#endif // HAS_MEDIA #if ENABLED(POWER_LOSS_RECOVERY) diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h index 295df311df..0f71ebdc3d 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h @@ -52,7 +52,7 @@ public: static void PrintTimerStopped(); static void FilamentRunout(const ExtUI::extruder_t extruder); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA /// Marlin informed us that a new SD has been inserted. static void SDCardInserted(); /// Marlin informed us that the SD Card has been removed(). @@ -89,7 +89,7 @@ public: static uint8_t debug_count; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA static ExtUI::FileList filelist; static uint16_t filelist_offset; static int16_t filelist_selected; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp index c95d7d0453..3b1a38502d 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp @@ -31,7 +31,7 @@ #include "../../../gcode/queue.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA bool DGUSSetupHandler::Print() { dgus_screen_handler.filelist.refresh(); diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.h index 9e3866467f..10063446b7 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.h @@ -23,7 +23,7 @@ namespace DGUSSetupHandler { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA bool Print(); #endif bool PrintStatus(); diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp index b27988a89f..c7d650c03e 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp @@ -36,7 +36,7 @@ #include "../../../feature/pause.h" #endif -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA void DGUSTxHandler::SetFileControlState(int16_t file, bool state) { DGUS_Control control; @@ -177,7 +177,7 @@ dgus_display.WriteString((uint16_t)vp.addr, dgus_screen_handler.filelist.filename(), vp.size); } -#endif // SDSUPPORT +#endif // HAS_MEDIA void DGUSTxHandler::PositionZ(DGUS_VP &vp) { const float position = ExtUI::isAxisPositionKnown(ExtUI::Z) ? planner.get_axis_position_mm(Z_AXIS) : 0; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h index 161d73f813..6e4f1db5dc 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h @@ -28,7 +28,7 @@ namespace DGUSTxHandler { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA void SetFileControlState(int16_t, bool); void FileType(DGUS_VP &); void FileName(DGUS_VP &); diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp index 706038f0ed..4c99ff6a00 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp @@ -36,7 +36,7 @@ constexpr DGUS_Addr LIST_HOME[] PROGMEM = { (DGUS_Addr)0 }; -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA constexpr DGUS_Addr LIST_PRINT[] PROGMEM = { DGUS_Addr::SD_Type, DGUS_Addr::SD_FileName0, @@ -210,7 +210,7 @@ constexpr DGUS_Addr LIST_WAIT[] PROGMEM = { const struct DGUS_ScreenAddrList screen_addr_list_map[] PROGMEM = { MAP_HELPER(DGUS_Screen::HOME, LIST_HOME), - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA MAP_HELPER(DGUS_Screen::PRINT, LIST_PRINT), #endif MAP_HELPER(DGUS_Screen::PRINT_STATUS, LIST_PRINT_STATUS), diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.cpp b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.cpp index a9f13b5ee5..e3ba393af2 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.cpp @@ -35,7 +35,7 @@ .setup_fn = SETUP } const struct DGUS_ScreenSetup screen_setup_list[] PROGMEM = { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA SETUP_HELPER(DGUS_Screen::PRINT, &DGUSSetupHandler::Print), #endif SETUP_HELPER(DGUS_Screen::PRINT_STATUS, &DGUSSetupHandler::PrintStatus), diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp index 3f00dbb037..cd5408e190 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp @@ -80,7 +80,7 @@ const struct DGUS_VP vp_list[] PROGMEM = { VP_HELPER_RX(DGUS_Addr::SCREENCHANGE_Idle, &DGUSRxHandler::ScreenChange), VP_HELPER_RX(DGUS_Addr::SCREENCHANGE_Printing, &DGUSRxHandler::ScreenChange), - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA VP_HELPER_RX(DGUS_Addr::SD_SelectFile, &DGUSRxHandler::SelectFile), VP_HELPER_RX(DGUS_Addr::SD_Scroll, &DGUSRxHandler::Scroll), VP_HELPER_RX_NODATA(DGUS_Addr::SD_Print, &DGUSRxHandler::PrintFile), @@ -150,7 +150,7 @@ const struct DGUS_VP vp_list[] PROGMEM = { // WRITE-ONLY VARIABLES - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA VP_HELPER_TX(DGUS_Addr::SD_Type, &DGUSTxHandler::FileType), VP_HELPER_TX_SIZE(DGUS_Addr::SD_FileName0, DGUS_FILENAME_LEN, diff --git a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp index fb8ef8cc84..75ef5f5d66 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp @@ -50,9 +50,9 @@ namespace ExtUI { dgus_screen_handler.PrinterKilled(error, component); } - void onMediaInserted() { TERN_(SDSUPPORT, dgus_screen_handler.SDCardInserted()); } - void onMediaError() { TERN_(SDSUPPORT, dgus_screen_handler.SDCardError()); } - void onMediaRemoved() { TERN_(SDSUPPORT, dgus_screen_handler.SDCardRemoved()); } + void onMediaInserted() { TERN_(HAS_MEDIA, dgus_screen_handler.SDCardInserted()); } + void onMediaError() { TERN_(HAS_MEDIA, dgus_screen_handler.SDCardError()); } + void onMediaRemoved() { TERN_(HAS_MEDIA, dgus_screen_handler.SDCardRemoved()); } void onPlayTone(const uint16_t frequency, const uint16_t duration) { dgus_screen_handler.PlayTone(frequency, duration); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/flash_storage.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/flash_storage.cpp index a23ad6e37e..c3a4118f20 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/flash_storage.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/flash_storage.cpp @@ -416,7 +416,7 @@ bool UIFlashStorage::is_present = false; * files must be written sequentially following by a chip erase and it is not possible to * overwrite files. */ UIFlashStorage::error_t UIFlashStorage::write_media_file(FSTR_P filename, uint8_t slot) { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA uint32_t addr; uint8_t buff[write_page_size]; @@ -500,7 +500,7 @@ bool UIFlashStorage::is_present = false; } #else return VERIFY_ERROR; - #endif // SDSUPPORT + #endif // HAS_MEDIA } bool UIFlashStorage::BootMediaReader::isAvailable(uint32_t slot) { diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/media_file_reader.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/media_file_reader.cpp index b4165a742a..99e875712a 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/media_file_reader.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/media_file_reader.cpp @@ -25,7 +25,7 @@ #if ENABLED(TOUCH_UI_FTDI_EVE) #include "media_file_reader.h" - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA bool MediaFileReader::open(const char *filename) { root = CardReader::getroot(); return file.open(&root, filename, O_READ); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/media_file_reader.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/media_file_reader.h index 9a20c2a038..78b1652c50 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/media_file_reader.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/archim2-flash/media_file_reader.h @@ -24,14 +24,14 @@ #include "../../../../inc/MarlinConfigPre.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "../../../../sd/SdFile.h" #include "../../../../sd/cardreader.h" #endif class MediaFileReader { private: - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA MediaFile root, file; #endif diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/printing_dialog_box.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/printing_dialog_box.cpp index 4af38dcb9d..9b67f0e3c8 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/printing_dialog_box.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/printing_dialog_box.cpp @@ -75,7 +75,7 @@ void BioPrintingDialogBox::draw_interaction_buttons(draw_mode_t what) { .font(font_medium) .colors(isPrinting() ? action_btn : normal_btn) .tag(2).button(BTN_POS(1,9), BTN_SIZE(1,1), F("Menu")) - .enabled(isPrinting() ? TERN0(SDSUPPORT, isPrintingFromMedia()) : 1) + .enabled(isPrinting() ? TERN0(HAS_MEDIA, isPrintingFromMedia()) : 1) .tag(3) .colors(isPrinting() ? normal_btn : action_btn) .button(BTN_POS(2,9), BTN_SIZE(1,1), isPrinting() ? F("Cancel") : F("Back")); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp index b82b4a07bd..86f470ee19 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp @@ -45,14 +45,14 @@ namespace ExtUI { } void onMediaInserted() { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA sound.play(media_inserted, PLAY_ASYNCHRONOUS); StatusScreen::onMediaInserted(); #endif } void onMediaRemoved() { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (isPrintingFromMedia()) { stopPrint(); InterfaceSoundsScreen::playEventSound(InterfaceSoundsScreen::PRINTING_FAILED); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/developer_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/developer_menu.cpp index 2ec8a3bbd1..4a60733723 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/developer_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/developer_menu.cpp @@ -44,7 +44,7 @@ void DeveloperMenu::onRedraw(draw_mode_t what) { constexpr bool has_flash = false; #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA constexpr bool has_media = true; #else constexpr bool has_media = false; @@ -98,7 +98,7 @@ bool DeveloperMenu::onTouchEnd(uint8_t tag) { break; case 4: GOTO_SCREEN(TouchRegistersScreen); break; case 5: sound.play(js_bach_joy, PLAY_ASYNCHRONOUS); break; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA case 6: if (!MediaPlayerScreen::playCardMedia()) AlertDialogBox::showError(F("Cannot open STARTUP.AVI")); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/media_player_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/media_player_screen.cpp index 061c8555df..fbfce19a75 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/media_player_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/media_player_screen.cpp @@ -57,7 +57,7 @@ void MediaPlayerScreen::onRedraw(draw_mode_t) { } bool MediaPlayerScreen::playCardMedia() { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA char fname[15]; strcpy_P(fname, PSTR("STARTUP.AVI")); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/screens.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/screens.h index b88e517576..e2df29cb83 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/screens.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/screens.h @@ -83,7 +83,7 @@ enum { #if ENABLED(FILAMENT_RUNOUT_SENSOR) FILAMENT_RUNOUT_SCREEN_CACHE, #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA FILES_SCREEN_CACHE, #endif #if ENABLED(CUSTOM_MENU_MAIN) @@ -204,7 +204,7 @@ enum { #include "linear_advance_screen.h" #endif -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "files_screen.h" #endif diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/status_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/status_screen.cpp index f1c65357e0..738d8ee64f 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/status_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/status_screen.cpp @@ -417,7 +417,7 @@ bool StatusScreen::onTouchEnd(uint8_t tag) { using namespace ExtUI; switch (tag) { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA case 3: GOTO_SCREEN(FilesScreen); break; #endif case 4: diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/pin_mappings.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/pin_mappings.h index 167ea9d7cf..3963493841 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/pin_mappings.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/pin_mappings.h @@ -137,7 +137,7 @@ #define CLCD_SPI_CS BTN_EN1 #define CLCD_MOD_RESET BTN_EN2 - #if MB(EINSY_RAMBO, EINSY_RETRO) && DISABLED(SDSUPPORT) + #if MB(EINSY_RAMBO, EINSY_RETRO) && !HAS_MEDIA #define CLCD_SPI_EXTRA_CS SDSS #endif diff --git a/Marlin/src/lcd/extui/malyan/malyan.cpp b/Marlin/src/lcd/extui/malyan/malyan.cpp index 66c52878cc..1c051f4504 100644 --- a/Marlin/src/lcd/extui/malyan/malyan.cpp +++ b/Marlin/src/lcd/extui/malyan/malyan.cpp @@ -167,7 +167,7 @@ void process_lcd_eb_command(const char *command) { char message_buffer[MAX_CURLY_COMMAND]; uint8_t done_pct = print_job_timer.isRunning() ? (iteration * 10) : 100; iteration = (iteration + 1) % 10; // Provide progress animation - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (ExtUI::isPrintingFromMedia() || ExtUI::isPrintingFromMediaPaused()) done_pct = card.percentDone(); #endif @@ -180,7 +180,7 @@ void process_lcd_eb_command(const char *command) { #else 0, 0, #endif - TERN(SDSUPPORT, done_pct, 0), + TERN(HAS_MEDIA, done_pct, 0), elapsed_buffer ); write_to_lcd(message_buffer); @@ -257,7 +257,7 @@ void process_lcd_p_command(const char *command) { break; case 'H': queue.enqueue_now_P(G28_STR); break; // Home all axes default: { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA // Print file 000 - a three digit number indicating which // file to print in the SD card. If it's a directory, // then switch to the directory. @@ -316,7 +316,7 @@ void process_lcd_s_command(const char *command) { } break; case 'L': { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (!card.isMounted()) card.mount(); // A more efficient way to do this would be to diff --git a/Marlin/src/lcd/extui/malyan/malyan_extui.cpp b/Marlin/src/lcd/extui/malyan/malyan_extui.cpp index 8bffa442b6..042062b7c9 100644 --- a/Marlin/src/lcd/extui/malyan/malyan_extui.cpp +++ b/Marlin/src/lcd/extui/malyan/malyan_extui.cpp @@ -78,7 +78,7 @@ namespace ExtUI { while (LCD_SERIAL.available()) parse_lcd_byte((byte)LCD_SERIAL.read()); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA // The way last printing status works is simple: // The UI needs to see at least one TQ which is not 100% // and then when the print is complete, one which is. diff --git a/Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp b/Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp index a214e7d1e0..f0609f4ebb 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp @@ -85,7 +85,7 @@ static void btn_ok_event_cb(lv_obj_t *btn, lv_event_t event) { lv_clear_dialog(); lv_draw_printing(); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (!gcode_preview_over) { char *cur_name; cur_name = strrchr(list_file.file_name[sel_id], '/'); @@ -121,7 +121,7 @@ static void btn_ok_event_cb(lv_obj_t *btn, lv_event_t event) { lv_clear_dialog(); lv_draw_ready_print(); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA uiCfg.print_state = IDLE; card.abortFilePrintSoon(); #endif diff --git a/Marlin/src/lcd/extui/mks_ui/draw_operation.cpp b/Marlin/src/lcd/extui/mks_ui/draw_operation.cpp index ffe714fca9..bf39a52fe9 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_operation.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_operation.cpp @@ -70,7 +70,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { uiCfg.extruderIndexBak = active_extruder; #endif if (uiCfg.print_state == WORKING) { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA card.pauseSDPrint(); stop_print_time(); uiCfg.print_state = PAUSING; diff --git a/Marlin/src/lcd/extui/mks_ui/draw_print_file.cpp b/Marlin/src/lcd/extui/mks_ui/draw_print_file.cpp index 6b41981fb8..4997641e15 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_print_file.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_print_file.cpp @@ -55,7 +55,7 @@ extern char public_buf_m[100]; uint8_t sel_id = 0; -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA static uint8_t search_file() { int valid_name_cnt = 0; @@ -100,10 +100,10 @@ uint8_t sel_id = 0; return valid_name_cnt; } -#endif // SDSUPPORT +#endif // HAS_MEDIA bool have_pre_pic(char *path) { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA char *ps1, *ps2, *cur_name = strrchr(path, '/'); card.openFileRead(cur_name); card.read(public_buf, 512); @@ -130,7 +130,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { if (dir_offset[curDirLever].cur_page_first_offset >= FILE_NUM) list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset - FILE_NUM; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA file_count = search_file(); #endif if (file_count != 0) { @@ -144,7 +144,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { if (dir_offset[curDirLever].cur_page_last_offset > 0) { list_file.Sd_file_cnt = 0; list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_last_offset + 1; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA file_count = search_file(); #endif if (file_count != 0) { @@ -161,7 +161,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { int8_t *ch = (int8_t *)strrchr(list_file.curDirPath, '/'); if (ch) { *ch = 0; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA card.cdup(); #endif dir_offset[curDirLever].curPage = 0; @@ -169,7 +169,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { dir_offset[curDirLever].cur_page_last_offset = 0; curDirLever--; list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA file_count = search_file(); #endif lv_clear_print_file(); @@ -189,7 +189,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { strcpy(list_file.curDirPath, list_file.file_name[i]); curDirLever++; list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA file_count = search_file(); #endif lv_clear_print_file(); @@ -222,7 +222,7 @@ void lv_draw_print_file() { ZERO(list_file.curDirPath); list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset; - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA card.mount(); file_count = search_file(); #endif @@ -359,7 +359,7 @@ void disp_gcode_icon(uint8_t file_num) { } uint32_t lv_open_gcode_file(char *path) { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA uint32_t *ps4; uintptr_t pre_sread_cnt = UINTPTR_MAX; char *cur_name; @@ -375,7 +375,7 @@ uint32_t lv_open_gcode_file(char *path) { card.setIndex(pre_sread_cnt); } return pre_sread_cnt; - #endif // SDSUPPORT + #endif // HAS_MEDIA } int ascii2dec_test(char *ascii) { @@ -395,7 +395,7 @@ int ascii2dec_test(char *ascii) { } void lv_gcode_file_read(uint8_t *data_buf) { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA uint16_t i = 0, j = 0, k = 0; uint16_t row_1 = 0; bool ignore_start = true; @@ -454,10 +454,10 @@ void lv_gcode_file_read(uint8_t *data_buf) { } #endif // !HAS_TFT_LVGL_UI_SPI memcpy(data_buf, public_buf, 200); - #endif // SDSUPPORT + #endif // HAS_MEDIA } -void lv_close_gcode_file() {TERN_(SDSUPPORT, card.closefile());} +void lv_close_gcode_file() {TERN_(HAS_MEDIA, card.closefile());} void lv_gcode_file_seek(uint32_t pos) { card.setIndex(pos); diff --git a/Marlin/src/lcd/extui/mks_ui/draw_printing.cpp b/Marlin/src/lcd/extui/mks_ui/draw_printing.cpp index 5dc3861f65..345c5dd732 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_printing.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_printing.cpp @@ -80,7 +80,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { switch (obj->mks_obj_id) { case ID_PAUSE: if (uiCfg.print_state == WORKING) { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA card.pauseSDPrint(); stop_print_time(); uiCfg.print_state = PAUSING; @@ -274,13 +274,13 @@ void setProBarRate() { volatile long long rate_tmp_r; if (!gCfgItems.from_flash_pic) { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA rate_tmp_r = (long long)card.getIndex() * 100; #endif rate = rate_tmp_r / gCfgItems.curFilesize; } else { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA rate_tmp_r = (long long)card.getIndex(); #endif rate = (rate_tmp_r - (PREVIEW_SIZE + To_pre_view)) * 100 / (gCfgItems.curFilesize - (PREVIEW_SIZE + To_pre_view)); diff --git a/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp b/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp index b510e3c0c6..102109a136 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp @@ -563,7 +563,7 @@ char *creat_title_text() { uintptr_t gPicturePreviewStart = 0; void preview_gcode_prehandle(char *path) { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA uintptr_t pre_read_cnt = 0; uint32_t *p1; char *cur_name; @@ -593,7 +593,7 @@ char *creat_title_text() { } void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA volatile uint32_t i, j; volatile uint16_t *p_index; char *cur_name; @@ -672,7 +672,7 @@ char *creat_title_text() { } return; } - #endif // SDSUPPORT + #endif // HAS_MEDIA } void draw_default_preview(int xpos_pixel, int ypos_pixel, uint8_t sel) { @@ -1345,7 +1345,7 @@ void lv_screen_menu_item_onoff_update(lv_obj_t *btn, const bool curValue) { lv_label_set_text((lv_obj_t*)btn->child_ll.head, curValue ? machine_menu.enable : machine_menu.disable); } -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA void sd_detection() { static bool last_sd_status; @@ -1377,7 +1377,7 @@ void LV_TASK_HANDLER() { if (TERN1(USE_SPI_DMA_TC, !get_lcd_dma_lock())) lv_task_handler(); - #if BOTH(MKS_TEST, SDSUPPORT) + #if BOTH(MKS_TEST, HAS_MEDIA) if (mks_test_flag == 0x1E) mks_hardware_test(); #endif diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp index 24e177df39..45a54f6177 100644 --- a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp +++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp @@ -159,7 +159,7 @@ void mks_test_beeper() { buzzer.click(100); } - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA void mks_gpio_test() { init_test_gpio(); @@ -677,7 +677,7 @@ void disp_assets_update_progress(FSTR_P const fmsg) { #endif } -#if BOTH(MKS_TEST, SDSUPPORT) +#if BOTH(MKS_TEST, HAS_MEDIA) uint8_t mks_test_flag = 0; const char *MKSTestPath = "MKS_TEST"; void mks_test_get() { diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware.h b/Marlin/src/lcd/extui/mks_ui/mks_hardware.h index c0cdacd963..6a2574e3b0 100644 --- a/Marlin/src/lcd/extui/mks_ui/mks_hardware.h +++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.h @@ -26,7 +26,7 @@ #include // Functions for MKS_TEST -#if BOTH(MKS_TEST, SDSUPPORT) +#if BOTH(MKS_TEST, HAS_MEDIA) void mks_hardware_test(); void mks_test_get(); void mks_gpio_test(); diff --git a/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp b/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp index d642d81f6b..6570176a29 100644 --- a/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp +++ b/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp @@ -36,7 +36,7 @@ extern uint16_t DeviceCode; -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA extern char *createFilename(char * const buffer, const dir_t &p); #endif @@ -374,7 +374,7 @@ uint32_t Pic_Info_Write(uint8_t *P_name, uint32_t P_size) { return Pic_SaveAddr; } -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA static void dosName2LongName(const char dosName[11], char *longName) { uint8_t j = 0; @@ -547,7 +547,7 @@ uint32_t Pic_Info_Write(uint8_t *P_name, uint32_t P_size) { void spi_flash_read_test() { W25QXX.SPI_FLASH_BufferRead(public_buf, UNIGBK_FLASH_ADDR, BMP_WRITE_BUF_LEN); } #endif -#endif // SDSUPPORT +#endif // HAS_MEDIA void Pic_Read(uint8_t *Pname, uint8_t *P_Rbuff) { uint8_t i, j; diff --git a/Marlin/src/lcd/extui/mks_ui/printer_operation.cpp b/Marlin/src/lcd/extui/mks_ui/printer_operation.cpp index 8f5b89cf34..26979af270 100644 --- a/Marlin/src/lcd/extui/mks_ui/printer_operation.cpp +++ b/Marlin/src/lcd/extui/mks_ui/printer_operation.cpp @@ -45,7 +45,7 @@ extern bool flash_preview_begin, default_preview_flg, gcode_preview_over; void printer_state_polling() { char str_1[16]; if (uiCfg.print_state == PAUSING) { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (!planner.has_blocks_queued() && card.getIndex() > MIN_FILE_PRINTED) uiCfg.waitEndMoves++; diff --git a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp index 08db5ae7ad..972349d287 100644 --- a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp @@ -78,7 +78,7 @@ XPT2046 touch; static lv_disp_buf_t disp_buf; lv_group_t* g; -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA void UpdateAssets(); #endif uint16_t DeviceCode = 0x9488; @@ -153,7 +153,7 @@ void tft_lvgl_init() { hal.watchdog_refresh(); // LVGL init takes time - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA UpdateAssets(); hal.watchdog_refresh(); // LVGL init takes time TERN_(MKS_TEST, mks_test_get()); @@ -246,7 +246,7 @@ void tft_lvgl_init() { if (ready) lv_draw_ready_print(); - #if BOTH(MKS_TEST, SDSUPPORT) + #if BOTH(MKS_TEST, HAS_MEDIA) if (mks_test_flag == 0x1E) mks_gpio_test(); #endif } diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp index d6d2ce3945..cf2411ee7e 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp @@ -135,7 +135,7 @@ void wifi_reset() { void mount_file_sys(const uint8_t disk_type) { switch (disk_type) { - case FILE_SYS_SD: TERN_(SDSUPPORT, card.mount()); break; + case FILE_SYS_SD: TERN_(HAS_MEDIA, card.mount()); break; case FILE_SYS_USB: break; } } @@ -718,7 +718,7 @@ void get_file_list(const char * const path, const bool with_longnames) { if (!path) return; if (gCfgItems.fileSysType == FILE_SYS_SD) { - TERN_(SDSUPPORT, card.mount()); + TERN_(HAS_MEDIA, card.mount()); } else if (gCfgItems.fileSysType == FILE_SYS_USB) { // udisk @@ -993,7 +993,7 @@ static void wifi_gcode_exec(uint8_t * const cmd_line) { uiCfg.print_state = WORKING; lv_draw_printing(); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (!gcode_preview_over) { char *cur_name = strrchr(list_file.file_name[sel_id], '/'); @@ -1058,7 +1058,7 @@ static void wifi_gcode_exec(uint8_t * const cmd_line) { clear_cur_ui(); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA card.pauseSDPrint(); uiCfg.print_state = PAUSING; #endif @@ -1077,7 +1077,7 @@ static void wifi_gcode_exec(uint8_t * const cmd_line) { stop_print_time(); clear_cur_ui(); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA uiCfg.print_state = IDLE; card.abortFilePrintSoon(); #endif @@ -1118,7 +1118,7 @@ static void wifi_gcode_exec(uint8_t * const cmd_line) { } mount_file_sys(gCfgItems.fileSysType); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA char *cur_name = strrchr(list_file.file_name[sel_id], '/'); card.openFileWrite(cur_name); if (card.isFileOpen()) { @@ -1529,7 +1529,7 @@ static void file_first_msg_handle(const uint8_t * const msg, const uint16_t msgL ZERO(saveFilePath); if (gCfgItems.fileSysType == FILE_SYS_SD) { - TERN_(SDSUPPORT, card.mount()); + TERN_(HAS_MEDIA, card.mount()); } else if (gCfgItems.fileSysType == FILE_SYS_USB) { // nothing @@ -1541,11 +1541,11 @@ static void file_first_msg_handle(const uint8_t * const msg, const uint16_t msgL wifiTransError.start_tick = 0; wifiTransError.now_tick = 0; - TERN_(SDSUPPORT, card.closefile()); + TERN_(HAS_MEDIA, card.closefile()); wifi_delay(1000); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA char dosName[FILENAME_LENGTH]; @@ -1574,7 +1574,7 @@ static void file_first_msg_handle(const uint8_t * const msg, const uint16_t msgL return; } - #endif // SDSUPPORT + #endif // HAS_MEDIA wifi_link_state = WIFI_TRANS_FILE; @@ -1774,7 +1774,7 @@ void stopEspTransfer() { if (wifi_link_state == WIFI_TRANS_FILE) wifi_link_state = WIFI_CONNECTED; - TERN_(SDSUPPORT, card.closefile()); + TERN_(HAS_MEDIA, card.closefile()); if (upload_result != 3) { wifiTransError.flag = 1; diff --git a/Marlin/src/lcd/extui/ui_api.cpp b/Marlin/src/lcd/extui/ui_api.cpp index 2b1f05d2bc..a742a82a5b 100644 --- a/Marlin/src/lcd/extui/ui_api.cpp +++ b/Marlin/src/lcd/extui/ui_api.cpp @@ -1082,14 +1082,14 @@ namespace ExtUI { #endif void printFile(const char *filename) { - TERN(SDSUPPORT, card.openAndPrintFile(filename), UNUSED(filename)); + TERN(HAS_MEDIA, card.openAndPrintFile(filename), UNUSED(filename)); } bool isPrintingFromMediaPaused() { - return TERN0(SDSUPPORT, IS_SD_PAUSED()); + return TERN0(HAS_MEDIA, IS_SD_PAUSED()); } - bool isPrintingFromMedia() { return TERN0(SDSUPPORT, IS_SD_PRINTING() || IS_SD_PAUSED()); } + bool isPrintingFromMedia() { return TERN0(HAS_MEDIA, IS_SD_PRINTING() || IS_SD_PAUSED()); } bool isPrinting() { return commandsInQueue() || isPrintingFromMedia() || printJobOngoing() || printingIsPaused(); @@ -1099,7 +1099,7 @@ namespace ExtUI { return isPrinting() && (isPrintingFromMediaPaused() || print_job_timer.isPaused()); } - bool isMediaInserted() { return TERN0(SDSUPPORT, IS_SD_INSERTED()); } + bool isMediaInserted() { return TERN0(HAS_MEDIA, IS_SD_INSERTED()); } void pausePrint() { ui.pause_print(); } void resumePrint() { ui.resume_print(); } @@ -1138,7 +1138,7 @@ namespace ExtUI { void FileList::refresh() { } bool FileList::seek(const uint16_t pos, const bool skip_range_check) { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (!skip_range_check && (pos + 1) > count()) return false; card.selectFileByIndexSorted(pos); return card.filename[0] != '\0'; @@ -1150,35 +1150,35 @@ namespace ExtUI { } const char* FileList::filename() { - return TERN(SDSUPPORT, card.longest_filename(), ""); + return TERN(HAS_MEDIA, card.longest_filename(), ""); } const char* FileList::shortFilename() { - return TERN(SDSUPPORT, card.filename, ""); + return TERN(HAS_MEDIA, card.filename, ""); } const char* FileList::longFilename() { - return TERN(SDSUPPORT, card.longFilename, ""); + return TERN(HAS_MEDIA, card.longFilename, ""); } bool FileList::isDir() { - return TERN0(SDSUPPORT, card.flag.filenameIsDir); + return TERN0(HAS_MEDIA, card.flag.filenameIsDir); } uint16_t FileList::count() { - return TERN0(SDSUPPORT, card.get_num_items()); + return TERN0(HAS_MEDIA, card.get_num_items()); } bool FileList::isAtRootDir() { - return TERN1(SDSUPPORT, card.flag.workDirIsRoot); + return TERN1(HAS_MEDIA, card.flag.workDirIsRoot); } void FileList::upDir() { - TERN_(SDSUPPORT, card.cdup()); + TERN_(HAS_MEDIA, card.cdup()); } void FileList::changeDir(const char * const dirname) { - TERN(SDSUPPORT, card.cd(dirname), UNUSED(dirname)); + TERN(HAS_MEDIA, card.cd(dirname), UNUSED(dirname)); } } // namespace ExtUI diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index c1ec15dc19..0153a11a15 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -339,7 +339,7 @@ void MarlinUI::init() { uint8_t MarlinUI::lcd_status_update_delay = 1; // First update one loop delayed - #if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) + #if BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) millis_t MarlinUI::next_filament_display; // = 0 #endif @@ -353,7 +353,7 @@ void MarlinUI::init() { bool MarlinUI::did_first_redraw; #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA #if MARLINUI_SCROLL_NAME uint8_t MarlinUI::filename_scroll_pos, MarlinUI::filename_scroll_max; @@ -670,7 +670,7 @@ void MarlinUI::init() { #if HAS_MARLINUI_MENU if (use_click()) { - #if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) + #if BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) pause_filament_display(); #endif goto_screen(menu_main); @@ -1490,7 +1490,7 @@ void MarlinUI::init() { FSTR_P msg; if (printingIsPaused()) msg = GET_TEXT_F(MSG_PRINT_PAUSED); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA else if (IS_SD_PRINTING()) return set_status(card.longest_filename(), true); #endif @@ -1587,7 +1587,7 @@ void MarlinUI::init() { #if HAS_WIRED_LCD - #if BASIC_PROGRESS_BAR || BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) + #if BASIC_PROGRESS_BAR || BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) const millis_t ms = millis(); #endif @@ -1598,7 +1598,7 @@ void MarlinUI::init() { #endif #endif - #if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) + #if BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) pause_filament_display(ms); // Show status message for 5s #endif @@ -1651,12 +1651,12 @@ void MarlinUI::init() { #if HAS_DISPLAY - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA extern bool wait_for_user, wait_for_heatup; #endif void MarlinUI::abort_print() { - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA wait_for_heatup = wait_for_user = false; card.abortFilePrintSoon(); #endif @@ -1699,7 +1699,7 @@ void MarlinUI::init() { #if ENABLED(PARK_HEAD_ON_PAUSE) pause_show_message(PAUSE_MESSAGE_PARKING, PAUSE_MODE_PAUSE_PRINT); // Show message immediately to let user know about pause in progress queue.inject(F("M25 P\nM24")); - #elif ENABLED(SDSUPPORT) + #elif HAS_MEDIA queue.inject(F("M25")); #elif defined(ACTION_ON_PAUSE) hostui.pause(); @@ -1709,7 +1709,7 @@ void MarlinUI::init() { void MarlinUI::resume_print() { reset_status(); TERN_(PARK_HEAD_ON_PAUSE, wait_for_heatup = wait_for_user = false); - TERN_(SDSUPPORT, if (IS_SD_PAUSED()) queue.inject_P(M24_STR)); + TERN_(HAS_MEDIA, if (IS_SD_PAUSED()) queue.inject_P(M24_STR)); #ifdef ACTION_ON_RESUME hostui.resume(); #endif @@ -1754,7 +1754,7 @@ void MarlinUI::init() { MarlinUI::progress_t MarlinUI::_get_progress() { return ( TERN0(SET_PROGRESS_PERCENT, (progress_override & PROGRESS_MASK)) - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA ?: TERN(HAS_PRINT_PROGRESS_PERMYRIAD, card.permyriadDone(), card.percentDone()) #endif ); @@ -1784,7 +1784,7 @@ void MarlinUI::init() { #endif // HAS_PRINT_PROGRESS -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #if ENABLED(EXTENSIBLE_UI) #include "extui/ui_api.h" @@ -1837,7 +1837,7 @@ void MarlinUI::init() { #endif } -#endif // SDSUPPORT +#endif // HAS_MEDIA #if HAS_MARLINUI_MENU void MarlinUI::reset_settings() { diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index de1e30fe4e..65176507fc 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -248,7 +248,7 @@ public: } #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA #define MEDIA_MENU_GATEWAY TERN(PASSWORD_ON_SD_PRINT_MENU, password.media_gatekeeper, menu_media) static void media_changed(const uint8_t old_stat, const uint8_t stat); #endif @@ -467,7 +467,7 @@ public: FORCE_INLINE static void refresh_contrast() { set_contrast(contrast); } #endif - #if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) + #if BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) static millis_t next_filament_display; static void pause_filament_display(const millis_t ms=millis()) { next_filament_display = ms + 5000UL; } #endif @@ -529,7 +529,7 @@ public: static void completion_feedback(const bool=true) {} #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA #if BOTH(SCROLL_LONG_FILENAMES, HAS_MARLINUI_MENU) #define MARLINUI_SCROLL_NAME 1 #endif diff --git a/Marlin/src/lcd/menu/menu.h b/Marlin/src/lcd/menu/menu.h index 06d9c846cc..9d824e2a4c 100644 --- a/Marlin/src/lcd/menu/menu.h +++ b/Marlin/src/lcd/menu/menu.h @@ -191,7 +191,7 @@ class MenuEditItemBase : public MenuItemBase { static void draw_edit_screen(const char * const value) { draw_edit_screen(editLabel, value); } }; -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA class CardReader; class MenuItem_sdbase { public: @@ -207,7 +207,7 @@ class MenuEditItemBase : public MenuItemBase { void menu_main(); void menu_move(); -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA void menu_media(); #endif diff --git a/Marlin/src/lcd/menu/menu_main.cpp b/Marlin/src/lcd/menu/menu_main.cpp index 3b1cd73745..a202f624f7 100644 --- a/Marlin/src/lcd/menu/menu_main.cpp +++ b/Marlin/src/lcd/menu/menu_main.cpp @@ -43,10 +43,10 @@ #include "game/game.h" #endif -#if EITHER(SDSUPPORT, HOST_PROMPT_SUPPORT) || defined(ACTION_ON_CANCEL) +#if EITHER(HAS_MEDIA, HOST_PROMPT_SUPPORT) || defined(ACTION_ON_CANCEL) #define MACHINE_CAN_STOP 1 #endif -#if ANY(SDSUPPORT, HOST_PROMPT_SUPPORT, PARK_HEAD_ON_PAUSE) || defined(ACTION_ON_PAUSE) +#if ANY(HAS_MEDIA, HOST_PROMPT_SUPPORT, PARK_HEAD_ON_PAUSE) || defined(ACTION_ON_PAUSE) #define MACHINE_CAN_PAUSE 1 #endif @@ -234,7 +234,7 @@ void menu_configuration(); void menu_main() { const bool busy = printingIsActive() - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA , card_detected = card.isMounted() , card_open = card_detected && card.isFileOpen() #endif @@ -243,7 +243,7 @@ void menu_main() { START_MENU(); BACK_ITEM(MSG_INFO_SCREEN); - #if ENABLED(SDSUPPORT) && !defined(MEDIA_MENU_AT_TOP) && !HAS_ENCODER_WHEEL + #if HAS_MEDIA && !defined(MEDIA_MENU_AT_TOP) && !HAS_ENCODER_WHEEL #define MEDIA_MENU_AT_TOP #endif @@ -273,7 +273,7 @@ void menu_main() { #endif } else { - #if BOTH(SDSUPPORT, MEDIA_MENU_AT_TOP) + #if BOTH(HAS_MEDIA, MEDIA_MENU_AT_TOP) // BEGIN MEDIA MENU #if ENABLED(MENU_ADDAUTOSTART) ACTION_ITEM(MSG_RUN_AUTO_FILES, card.autofile_begin); // Run Auto Files @@ -388,7 +388,7 @@ void menu_main() { GCODES_ITEM(MSG_SWITCH_PS_ON, F("M80")); #endif - #if ENABLED(SDSUPPORT) && DISABLED(MEDIA_MENU_AT_TOP) + #if HAS_MEDIA && DISABLED(MEDIA_MENU_AT_TOP) // BEGIN MEDIA MENU #if ENABLED(MENU_ADDAUTOSTART) ACTION_ITEM(MSG_RUN_AUTO_FILES, card.autofile_begin); // Run Auto Files diff --git a/Marlin/src/lcd/menu/menu_media.cpp b/Marlin/src/lcd/menu/menu_media.cpp index 79cca1d97a..e32f41a9a6 100644 --- a/Marlin/src/lcd/menu/menu_media.cpp +++ b/Marlin/src/lcd/menu/menu_media.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_MENU, SDSUPPORT) +#if BOTH(HAS_MARLINUI_MENU, HAS_MEDIA) #include "menu_item.h" #include "../../sd/cardreader.h" @@ -161,4 +161,4 @@ void menu_media() { TERN(MULTI_VOLUME, menu_media_select, menu_media_filelist)(); } -#endif // HAS_MARLINUI_MENU && SDSUPPORT +#endif // HAS_MARLINUI_MENU && HAS_MEDIA diff --git a/Marlin/src/lcd/tft/ui_1024x600.cpp b/Marlin/src/lcd/tft/ui_1024x600.cpp index 638e32a9b3..cf5911cdc1 100644 --- a/Marlin/src/lcd/tft/ui_1024x600.cpp +++ b/Marlin/src/lcd/tft/ui_1024x600.cpp @@ -36,7 +36,7 @@ #include "../../module/planner.h" #include "../../module/motion.h" -#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) +#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) #include "../../feature/filwidth.h" #include "../../gcode/parser.h" #endif @@ -326,7 +326,7 @@ void MarlinUI::draw_status_screen() { #if ENABLED(TOUCH_SCREEN) add_control(900, y, menu_main, imgSettings); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA const bool cm = card.isMounted(), pa = printingIsActive(); if (cm && pa) add_control(12, y, STOP, imgCancel, true, COLOR_CONTROL_CANCEL); diff --git a/Marlin/src/lcd/tft/ui_320x240.cpp b/Marlin/src/lcd/tft/ui_320x240.cpp index e606dca7ce..bac7586a25 100644 --- a/Marlin/src/lcd/tft/ui_320x240.cpp +++ b/Marlin/src/lcd/tft/ui_320x240.cpp @@ -36,7 +36,7 @@ #include "../../module/planner.h" #include "../../module/motion.h" -#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) +#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) #include "../../feature/filwidth.h" #include "../../gcode/parser.h" #endif @@ -448,7 +448,7 @@ void MarlinUI::draw_status_screen() { #endif , menu_main, imgSettings ); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA const bool cm = card.isMounted(), pa = printingIsActive(); if (cm && pa) add_control(0, TERN(TFT_COLOR_UI_PORTRAIT, 210, 130), STOP, imgCancel, true, COLOR_CONTROL_CANCEL); diff --git a/Marlin/src/lcd/tft/ui_480x320.cpp b/Marlin/src/lcd/tft/ui_480x320.cpp index edc3d321f2..efb58754c7 100644 --- a/Marlin/src/lcd/tft/ui_480x320.cpp +++ b/Marlin/src/lcd/tft/ui_480x320.cpp @@ -36,7 +36,7 @@ #include "../../module/planner.h" #include "../../module/motion.h" -#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT) +#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) #include "../../feature/filwidth.h" #include "../../gcode/parser.h" #endif @@ -320,7 +320,7 @@ void MarlinUI::draw_status_screen() { #if ENABLED(TOUCH_SCREEN) add_control(404, y, menu_main, imgSettings); - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA const bool cm = card.isMounted(), pa = printingIsActive(); if (cm && pa) add_control(12, y, STOP, imgCancel, true, COLOR_CONTROL_CANCEL); diff --git a/Marlin/src/lcd/tft/ui_common.cpp b/Marlin/src/lcd/tft/ui_common.cpp index 6dee62820e..962daadb19 100644 --- a/Marlin/src/lcd/tft/ui_common.cpp +++ b/Marlin/src/lcd/tft/ui_common.cpp @@ -188,7 +188,7 @@ void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t s tft.add_text(TFT_WIDTH - 1 - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_YELLOW, tft_string); } -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA void MenuItem_sdbase::draw(const bool sel, const uint8_t row, FSTR_P const, CardReader &theCard, const bool isDir) { menu_item(row, sel); diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 02af062eca..56444d1aee 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -38,7 +38,7 @@ #include HAL_PATH(../HAL, endstop_interrupts.h) #endif -#if BOTH(SD_ABORT_ON_ENDSTOP_HIT, SDSUPPORT) +#if BOTH(SD_ABORT_ON_ENDSTOP_HIT, HAS_MEDIA) #include "printcounter.h" // for print_job_timer #endif @@ -352,7 +352,7 @@ void Endstops::event_handler() { ) ); - #if BOTH(SD_ABORT_ON_ENDSTOP_HIT, SDSUPPORT) + #if BOTH(SD_ABORT_ON_ENDSTOP_HIT, HAS_MEDIA) if (planner.abort_on_endstop_hit) { card.abortFilePrintNow(); quickstop_stepper(); diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 5bf809c955..3274136f41 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -1929,7 +1929,7 @@ void Temperature::task() { quickstop_stepper(); } - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA if (emergency_parser.sd_abort_by_M524) { // abort SD print immediately emergency_parser.sd_abort_by_M524 = false; card.flag.abort_sd_printing = true; diff --git a/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h b/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h index 493269cf2c..cfb682df54 100644 --- a/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h +++ b/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h @@ -179,7 +179,7 @@ #if SD_CONNECTION_IS(ONBOARD) #define FORCE_SOFT_SPI #endif - #if BOTH(MKS_MINI_12864_V3, SDSUPPORT) + #if BOTH(MKS_MINI_12864_V3, HAS_MEDIA) #define PAUSE_LCD_FOR_BUSY_SD #endif #else diff --git a/Marlin/src/pins/esp32/pins_PANDA_common.h b/Marlin/src/pins/esp32/pins_PANDA_common.h index c66bdf0bd1..971525622a 100644 --- a/Marlin/src/pins/esp32/pins_PANDA_common.h +++ b/Marlin/src/pins/esp32/pins_PANDA_common.h @@ -107,7 +107,7 @@ // // SD Card // -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #define SD_MOSI_PIN EXP2_06_PIN #define SD_MISO_PIN EXP2_01_PIN #define SD_SCK_PIN EXP2_02_PIN diff --git a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h index d7f53568e6..b414c0015f 100644 --- a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h +++ b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h @@ -136,7 +136,7 @@ #define TEMP_BED_PIN 2 // Analog Input // SPI for MAX Thermocouple -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN 66 // Don't use 53 if using Display/SD card #else #define TEMP_0_CS_PIN 66 // Don't use 49 (SD_DETECT_PIN) diff --git a/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h b/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h index 7cbad6a7f9..423c89b8c9 100644 --- a/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h +++ b/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h @@ -134,7 +134,7 @@ #error "REPRAP_DISCOUNT_SMART_CONTROLLER displays aren't supported by the BIQU B300 v1.0" #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA #error "SDSUPPORT is not supported by the BIQU B300 v1.0 when an LCD controller is used" #endif @@ -146,7 +146,7 @@ * Software SPI is used to interface with a stand-alone SD card reader connected to EXP1. * Hardware SPI can't be used because P0_17 (MISO) is not brought out on this board. */ -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #define SD_SCK_PIN P0_15 // EXP1-5 #define SD_MISO_PIN P0_16 // EXP1-4 #define SD_MOSI_PIN P0_18 // EXP1-3 diff --git a/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h b/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h index 914a944027..278ba12dd5 100644 --- a/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h +++ b/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h @@ -111,7 +111,7 @@ #error "REPRAP_DISCOUNT_SMART_CONTROLLER displays aren't supported by the BIQU BQ111-A4" #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA #error "SDSUPPORT is not supported by the BIQU BQ111-A4 when an LCD controller is used" #endif @@ -123,7 +123,7 @@ * Software SPI is used to interface with a stand-alone SD card reader connected to EXP1. * Hardware SPI can't be used because P0_17 (MISO) is not brought out on this board. */ -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #define SD_SCK_PIN P0_15 // EXP1-5 #define SD_MISO_PIN P0_16 // EXP1-4 @@ -131,7 +131,7 @@ #define SD_SS_PIN P1_30 // EXP1-2 #define SDSS SD_SS_PIN -#endif // SDSUPPORT +#endif // HAS_MEDIA /** * PWMS diff --git a/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h b/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h index 6747a7c2bf..70781cb0b5 100644 --- a/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h +++ b/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h @@ -154,7 +154,7 @@ #define KILL_PIN P2_11 // EXP2-10 - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA #error "SDSUPPORT is not currently supported by the Cohesion3D boards" #endif diff --git a/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h b/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h index 4c8dd5c42a..62215a8224 100644 --- a/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h +++ b/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h @@ -128,7 +128,7 @@ // #define BEEPER_PIN 44 -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #define SDSS 53 #define SD_DETECT_PIN 49 #endif diff --git a/Marlin/src/pins/mega/pins_PICA.h b/Marlin/src/pins/mega/pins_PICA.h index d9f4a858da..0541e1af58 100644 --- a/Marlin/src/pins/mega/pins_PICA.h +++ b/Marlin/src/pins/mega/pins_PICA.h @@ -123,7 +123,7 @@ #define SSR_PIN 6 // SPI for MAX Thermocouple -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN 66 // Don't use 53 if using Display/SD card #else #define TEMP_0_CS_PIN 66 // Don't use 49 (SD_DETECT_PIN) diff --git a/Marlin/src/pins/mega/pins_WEEDO_62A.h b/Marlin/src/pins/mega/pins_WEEDO_62A.h index 7b417c19a1..d13de7ed30 100644 --- a/Marlin/src/pins/mega/pins_WEEDO_62A.h +++ b/Marlin/src/pins/mega/pins_WEEDO_62A.h @@ -85,7 +85,7 @@ // // SD Support // -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #define SDSS 53 #define SD_DETECT_PIN 49 #endif diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h index b77c325029..f6ee06846d 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h @@ -116,7 +116,7 @@ #define TEMP_BED_PIN 14 // Analog Input // SPI for MAX Thermocouple -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN 66 // Don't use 53 if using Display/SD card #else #define TEMP_0_CS_PIN 66 // Don't use 49 (SD_DETECT_PIN) diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h b/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h index 2d92306f89..179bad04a5 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h @@ -113,7 +113,7 @@ #define TEMP_BED_PIN 3 // Analog Input // SPI for MAX Thermocouple -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN 66 // Don't use 53 if using Display/SD card #else #define TEMP_0_CS_PIN 66 // Don't use 49 (SD_DETECT_PIN) diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h b/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h index d84a852915..fd799e0d49 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h @@ -119,7 +119,7 @@ #define TEMP_BED_PIN 14 // Analog Input // SPI for MAX Thermocouple -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN 66 // Don't use 53 if using Display/SD card #else #define TEMP_0_CS_PIN 66 // Don't use 49 (SD_DETECT_PIN) diff --git a/Marlin/src/pins/ramps/pins_RAMPS_OLD.h b/Marlin/src/pins/ramps/pins_RAMPS_OLD.h index 663c6e4792..19b048ec81 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_OLD.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_OLD.h @@ -76,7 +76,7 @@ #define TEMP_BED_PIN 1 // Analog Input // SPI for MAX Thermocouple -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN 66 // Don't use 53 if using Display/SD card #else #define TEMP_0_CS_PIN 66 // Don't use 49 (SD_DETECT_PIN) diff --git a/Marlin/src/pins/ramps/pins_RIGIDBOARD.h b/Marlin/src/pins/ramps/pins_RIGIDBOARD.h index 8eab6c7d9b..afd31eeead 100644 --- a/Marlin/src/pins/ramps/pins_RIGIDBOARD.h +++ b/Marlin/src/pins/ramps/pins_RIGIDBOARD.h @@ -72,7 +72,7 @@ // SPI for MAX Thermocouple #undef TEMP_0_CS_PIN -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN 53 // Don't use pin 53 if there is even the remote possibility of using Display/SD card #else #define TEMP_0_CS_PIN 49 // Don't use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present diff --git a/Marlin/src/pins/ramps/pins_RUMBA.h b/Marlin/src/pins/ramps/pins_RUMBA.h index 258b9ccca6..ba3c97c87a 100644 --- a/Marlin/src/pins/ramps/pins_RUMBA.h +++ b/Marlin/src/pins/ramps/pins_RUMBA.h @@ -241,7 +241,7 @@ // #define BEEPER_PIN 44 -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #define SDSS 53 #define SD_DETECT_PIN 49 #endif diff --git a/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h b/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h index dd9cafc306..f68b9ef8a6 100644 --- a/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h +++ b/Marlin/src/pins/ramps/pins_TENLOG_D3_HERO.h @@ -125,7 +125,7 @@ #define TEMP_BED_PIN 14 // Analog Input // SPI for MAX Thermocouple -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN -1 // Don't use 53 if using Display/SD card #else #define TEMP_0_CS_PIN -1 // Don't use 49 (SD_DETECT_PIN) diff --git a/Marlin/src/pins/ramps/pins_TT_OSCAR.h b/Marlin/src/pins/ramps/pins_TT_OSCAR.h index 56ebf2c663..7078b11b6b 100644 --- a/Marlin/src/pins/ramps/pins_TT_OSCAR.h +++ b/Marlin/src/pins/ramps/pins_TT_OSCAR.h @@ -178,7 +178,7 @@ #endif // SPI for MAX Thermocouple -//#if DISABLED(SDSUPPORT) +//#if !HAS_MEDIA // #define TEMP_0_CS_PIN 66 // Don't use 53 if using Display/SD card //#else // #define TEMP_0_CS_PIN 66 // Don't use 49 (SD_DETECT_PIN) diff --git a/Marlin/src/pins/sam/pins_DUE3DOM.h b/Marlin/src/pins/sam/pins_DUE3DOM.h index c8a168228d..bd6cb7a6cd 100644 --- a/Marlin/src/pins/sam/pins_DUE3DOM.h +++ b/Marlin/src/pins/sam/pins_DUE3DOM.h @@ -83,7 +83,7 @@ #define TEMP_BED_PIN 1 // Analog Input (BED thermistor) // SPI for MAX Thermocouple -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN -1 #else #define TEMP_0_CS_PIN -1 diff --git a/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h b/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h index 66d4f713f8..41d43c0b04 100644 --- a/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h +++ b/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h @@ -72,7 +72,7 @@ #define TEMP_BOARD_PIN 5 // Analog Input (OnBoard thermistor beta 3950) // SPI for MAX Thermocouple -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN 53 #else #define TEMP_0_CS_PIN 53 diff --git a/Marlin/src/pins/sam/pins_RADDS.h b/Marlin/src/pins/sam/pins_RADDS.h index 7ebb24fde9..9301167959 100644 --- a/Marlin/src/pins/sam/pins_RADDS.h +++ b/Marlin/src/pins/sam/pins_RADDS.h @@ -180,7 +180,7 @@ #define TEMP_BED_PIN 4 // Analog Input // SPI for MAX Thermocouple -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN 53 #else #define TEMP_0_CS_PIN 49 diff --git a/Marlin/src/pins/sam/pins_RAMPS_DUO.h b/Marlin/src/pins/sam/pins_RAMPS_DUO.h index 04a4b69ae1..92de79bd7f 100644 --- a/Marlin/src/pins/sam/pins_RAMPS_DUO.h +++ b/Marlin/src/pins/sam/pins_RAMPS_DUO.h @@ -57,7 +57,7 @@ // SPI for MAX Thermocouple #undef TEMP_0_CS_PIN -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN 69 // Don't use 53 if using Display/SD card #else #define TEMP_0_CS_PIN 69 // Don't use 49 (SD_DETECT_PIN) diff --git a/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h b/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h index e1b0d7edc8..c84d84105c 100644 --- a/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h +++ b/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h @@ -110,7 +110,7 @@ #define TEMP_BED_PIN 0 // Analog Input // SPI for MAX Thermocouple -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN 53 #else #define TEMP_0_CS_PIN 49 diff --git a/Marlin/src/pins/sam/pins_RAMPS_SMART.h b/Marlin/src/pins/sam/pins_RAMPS_SMART.h index b02ddef166..2a0733c601 100644 --- a/Marlin/src/pins/sam/pins_RAMPS_SMART.h +++ b/Marlin/src/pins/sam/pins_RAMPS_SMART.h @@ -82,7 +82,7 @@ #define TEMP_BED_PIN 11 // Analog Input // SPI for MAX Thermocouple -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN 67 // Don't use 53 if using Display/SD card #else #define TEMP_0_CS_PIN 67 // Don't use 49 (SD_DETECT_PIN) diff --git a/Marlin/src/pins/sam/pins_RURAMPS4D_11.h b/Marlin/src/pins/sam/pins_RURAMPS4D_11.h index 8b078371e9..516063d158 100644 --- a/Marlin/src/pins/sam/pins_RURAMPS4D_11.h +++ b/Marlin/src/pins/sam/pins_RURAMPS4D_11.h @@ -145,7 +145,7 @@ // SPI for MAX Thermocouple /* -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN EXP1_08_PIN #else #define TEMP_0_CS_PIN 49 diff --git a/Marlin/src/pins/sam/pins_RURAMPS4D_13.h b/Marlin/src/pins/sam/pins_RURAMPS4D_13.h index 8f107ff4e5..9e9aeb9fec 100644 --- a/Marlin/src/pins/sam/pins_RURAMPS4D_13.h +++ b/Marlin/src/pins/sam/pins_RURAMPS4D_13.h @@ -135,7 +135,7 @@ // SPI for MAX Thermocouple /* -#if DISABLED(SDSUPPORT) +#if !HAS_MEDIA #define TEMP_0_CS_PIN 53 #else #define TEMP_0_CS_PIN 49 diff --git a/Marlin/src/pins/sanguino/pins_ZMIB_V2.h b/Marlin/src/pins/sanguino/pins_ZMIB_V2.h index dce01177be..1e449579cf 100644 --- a/Marlin/src/pins/sanguino/pins_ZMIB_V2.h +++ b/Marlin/src/pins/sanguino/pins_ZMIB_V2.h @@ -159,7 +159,7 @@ // // SD card // -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #define SDSS 4 #endif #define SD_DETECT_PIN -1 diff --git a/Marlin/src/pins/stm32f4/pins_ANET_ET4.h b/Marlin/src/pins/stm32f4/pins_ANET_ET4.h index 347ef8451d..bd8a2d9762 100644 --- a/Marlin/src/pins/stm32f4/pins_ANET_ET4.h +++ b/Marlin/src/pins/stm32f4/pins_ANET_ET4.h @@ -201,7 +201,7 @@ #define SDCARD_CONNECTION CUSTOM_CABLE #endif -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #if DISABLED(SDIO_SUPPORT) #define SOFTWARE_SPI diff --git a/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h b/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h index 869b1e859d..7b0206e287 100644 --- a/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h +++ b/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h @@ -173,7 +173,7 @@ // #define BEEPER_PIN PC13 - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA #define SDSS PA15 #define SD_DETECT_PIN PD2 #endif diff --git a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h index 367cace424..33dedf7e8e 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h @@ -238,7 +238,7 @@ #define EXP2_07_PIN PB11 #define EXP2_08_PIN -1 // RESET -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #ifndef SDCARD_CONNECTION #define SDCARD_CONNECTION ONBOARD #endif diff --git a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h index b281a8e2a3..c4a7cd886f 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h @@ -262,7 +262,7 @@ // SD Support // Onboard SD card use hardware SPI3 (defined in variant), LCD SD card use hardware SPI1 // -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #ifndef SDCARD_CONNECTION #define SDCARD_CONNECTION LCD #endif diff --git a/Marlin/src/pins/stm32f4/pins_VAKE403D.h b/Marlin/src/pins/stm32f4/pins_VAKE403D.h index a17d31f063..e4150f3bd2 100644 --- a/Marlin/src/pins/stm32f4/pins_VAKE403D.h +++ b/Marlin/src/pins/stm32f4/pins_VAKE403D.h @@ -160,7 +160,7 @@ #define KILL_PIN PD5 #define POWER_LOSS_PIN PA4 // ?? Power loss / nAC_FAULT -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #define SD_DETECT_PIN EXP2_07_PIN #define SD_SS_PIN PB15 // USD_CS -> CS for onboard SD #endif @@ -198,7 +198,7 @@ // #if HAS_WIRED_LCD - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA #define SDSS PB6 // CS for SD card in LCD #endif diff --git a/Marlin/src/sd/SdBaseFile.cpp b/Marlin/src/sd/SdBaseFile.cpp index 5ee0db2b9e..cf403d4b3a 100644 --- a/Marlin/src/sd/SdBaseFile.cpp +++ b/Marlin/src/sd/SdBaseFile.cpp @@ -35,7 +35,7 @@ #include "../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "SdBaseFile.h" @@ -2269,4 +2269,4 @@ int16_t SdBaseFile::write(const void *buf, const uint16_t nbyte) { return -1; } -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/sd/SdFatUtil.cpp b/Marlin/src/sd/SdFatUtil.cpp index e6f7a9a013..a68bd73ebe 100644 --- a/Marlin/src/sd/SdFatUtil.cpp +++ b/Marlin/src/sd/SdFatUtil.cpp @@ -31,7 +31,7 @@ #include "../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "SdFatUtil.h" #include @@ -59,4 +59,4 @@ #endif -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/sd/SdFile.cpp b/Marlin/src/sd/SdFile.cpp index a1dd793727..c6a3577e1d 100644 --- a/Marlin/src/sd/SdFile.cpp +++ b/Marlin/src/sd/SdFile.cpp @@ -31,7 +31,7 @@ #include "../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "SdFile.h" @@ -95,4 +95,4 @@ void SdFile::writeln_P(PGM_P const str) { write_P(PSTR("\r\n")); } -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/sd/SdVolume.cpp b/Marlin/src/sd/SdVolume.cpp index 8c06c74537..1b8cdbdcae 100644 --- a/Marlin/src/sd/SdVolume.cpp +++ b/Marlin/src/sd/SdVolume.cpp @@ -31,7 +31,7 @@ #include "../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA #include "SdVolume.h" @@ -402,4 +402,4 @@ bool SdVolume::init(DiskIODriver * const dev, const uint8_t part) { return true; } -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/sd/cardreader.cpp b/Marlin/src/sd/cardreader.cpp index 3a377d694d..4e864e5672 100644 --- a/Marlin/src/sd/cardreader.cpp +++ b/Marlin/src/sd/cardreader.cpp @@ -22,7 +22,7 @@ #include "../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA //#define DEBUG_CARDREADER @@ -172,7 +172,7 @@ CardReader::CardReader() { workDirDepth = 0; ZERO(workDirParents); - #if BOTH(SDSUPPORT, HAS_SD_DETECT) + #if BOTH(HAS_MEDIA, HAS_SD_DETECT) SET_INPUT_PULLUP(SD_DETECT_PIN); #endif @@ -1368,4 +1368,4 @@ void CardReader::fileHasFinished() { #endif // POWER_LOSS_RECOVERY -#endif // SDSUPPORT +#endif // HAS_MEDIA diff --git a/Marlin/src/sd/cardreader.h b/Marlin/src/sd/cardreader.h index d5eca9c915..3b7b7debcf 100644 --- a/Marlin/src/sd/cardreader.h +++ b/Marlin/src/sd/cardreader.h @@ -23,7 +23,7 @@ #include "../inc/MarlinConfig.h" -#if ENABLED(SDSUPPORT) +#if HAS_MEDIA extern const char M23_STR[], M24_STR[]; @@ -364,7 +364,7 @@ private: extern CardReader card; -#else // !SDSUPPORT +#else // !HAS_MEDIA #define IS_SD_PRINTING() false #define IS_SD_FETCHING() false @@ -373,4 +373,4 @@ extern CardReader card; #define LONG_FILENAME_LENGTH 0 -#endif // !SDSUPPORT +#endif // !HAS_MEDIA diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.h b/buildroot/share/PlatformIO/scripts/common-dependencies.h index 344669c49b..9bdcac5db1 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.h +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.h @@ -68,7 +68,7 @@ #if ENABLED(ADVANCED_PAUSE_FEATURE) #define HAS_MENU_FILAMENT #endif - #if ENABLED(SDSUPPORT) + #if HAS_MEDIA #define HAS_MENU_MEDIA #endif #if ENABLED(MIXING_EXTRUDER) diff --git a/ini/features.ini b/ini/features.ini index 3c5eb1adec..a8ee50b9ed 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -220,7 +220,7 @@ BABYSTEPPING = src_filter=+ Z_PROBE_SLED = src_filter=+ G38_PROBE_TARGET = src_filter=+ MAGNETIC_PARKING_EXTRUDER = src_filter=+ -SDSUPPORT = src_filter=+ + + + + + + +HAS_MEDIA = src_filter=+ + + + + + + HAS_MEDIA_SUBCALLS = src_filter=+ GCODE_REPEAT_MARKERS = src_filter=+ + HAS_EXTRUDERS = src_filter=+ + + diff --git a/ini/samd51.ini b/ini/samd51.ini index d7d9b3a421..70bda9ca52 100644 --- a/ini/samd51.ini +++ b/ini/samd51.ini @@ -22,5 +22,5 @@ lib_deps = ${common.lib_deps} SoftwareSerialM extra_scripts = ${common.extra_scripts} pre:buildroot/share/PlatformIO/scripts/SAMD51_grandcentral_m4.py -custom_marlin.SDSUPPORT = SdFat - Adafruit Fork, Adafruit SPIFlash +custom_marlin.HAS_MEDIA = SdFat - Adafruit Fork, Adafruit SPIFlash debug_tool = jlink From 921591d2b899000e3181a098a069392ac0ac4b42 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 22 Apr 2023 23:15:31 -0500 Subject: [PATCH 314/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20SDI?= =?UTF-8?q?O=5FSUPPORT=20=3D>=20ONBOARD=5FSDIO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/SAMD21/inc/SanityCheck.h | 4 ++-- Marlin/src/HAL/SAMD51/inc/SanityCheck.h | 4 ++-- Marlin/src/HAL/STM32/HAL.cpp | 2 +- Marlin/src/HAL/STM32/sdio.cpp | 4 ++-- Marlin/src/HAL/STM32F1/inc/Conditionals_post.h | 2 +- Marlin/src/inc/Conditionals_post.h | 2 +- Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h | 6 +++--- Marlin/src/pins/stm32f1/pins_CHITU3D_common.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V4.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V45x.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V521.h | 2 +- Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h | 2 +- Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h | 2 +- Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h | 4 ++-- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h | 2 +- Marlin/src/pins/stm32f1/pins_SOVOL_V131.h | 2 +- Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h | 2 +- Marlin/src/pins/stm32f4/pins_ANET_ET4.h | 4 ++-- Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h | 4 ++-- Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h | 2 +- Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h | 2 +- Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h | 2 +- Marlin/src/pins/stm32f4/pins_FLYF407ZG.h | 4 ++-- Marlin/src/pins/stm32f4/pins_LERDGE_K.h | 4 ++-- Marlin/src/pins/stm32f4/pins_LERDGE_S.h | 4 ++-- Marlin/src/pins/stm32f4/pins_LERDGE_X.h | 4 ++-- Marlin/src/pins/stm32f4/pins_TRONXY_V10.h | 2 +- Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h | 2 +- 35 files changed, 47 insertions(+), 47 deletions(-) diff --git a/Marlin/src/HAL/SAMD21/inc/SanityCheck.h b/Marlin/src/HAL/SAMD21/inc/SanityCheck.h index 8bf052e3bb..83fafc9689 100644 --- a/Marlin/src/HAL/SAMD21/inc/SanityCheck.h +++ b/Marlin/src/HAL/SAMD21/inc/SanityCheck.h @@ -41,8 +41,8 @@ #error "EMERGENCY_PARSER is not yet implemented for SAMD21. Disable EMERGENCY_PARSER to continue." #endif -#if ENABLED(SDIO_SUPPORT) - #error "SDIO_SUPPORT is not supported on SAMD21." +#if ENABLED(ONBOARD_SDIO) + #error "ONBOARD_SDIO is not supported on SAMD21." #endif #if ENABLED(FAST_PWM_FAN) diff --git a/Marlin/src/HAL/SAMD51/inc/SanityCheck.h b/Marlin/src/HAL/SAMD51/inc/SanityCheck.h index f9ff090f75..4719ac6eb8 100644 --- a/Marlin/src/HAL/SAMD51/inc/SanityCheck.h +++ b/Marlin/src/HAL/SAMD51/inc/SanityCheck.h @@ -54,8 +54,8 @@ #error "EMERGENCY_PARSER is not yet implemented for SAMD51. Disable EMERGENCY_PARSER to continue." #endif -#if ENABLED(SDIO_SUPPORT) - #error "SDIO_SUPPORT is not supported on SAMD51." +#if ENABLED(ONBOARD_SDIO) + #error "ONBOARD_SDIO is not supported on SAMD51." #endif #if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY diff --git a/Marlin/src/HAL/STM32/HAL.cpp b/Marlin/src/HAL/STM32/HAL.cpp index d8a12aad7e..ce49f27a8e 100644 --- a/Marlin/src/HAL/STM32/HAL.cpp +++ b/Marlin/src/HAL/STM32/HAL.cpp @@ -70,7 +70,7 @@ void MarlinHAL::init() { constexpr int cpuFreq = F_CPU; UNUSED(cpuFreq); - #if HAS_MEDIA && DISABLED(SDIO_SUPPORT) && (defined(SDSS) && SDSS != -1) + #if HAS_MEDIA && DISABLED(ONBOARD_SDIO) && (defined(SDSS) && SDSS != -1) OUT_WRITE(SDSS, HIGH); // Try to set SDSS inactive before any other SPI users start up #endif diff --git a/Marlin/src/HAL/STM32/sdio.cpp b/Marlin/src/HAL/STM32/sdio.cpp index 72518ef1cc..de388b8e14 100644 --- a/Marlin/src/HAL/STM32/sdio.cpp +++ b/Marlin/src/HAL/STM32/sdio.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(SDIO_SUPPORT) +#if ENABLED(ONBOARD_SDIO) #include "sdio.h" @@ -453,5 +453,5 @@ uint32_t SDIO_GetCardSize() { return (uint32_t)(hsd.SdCard.BlockNbr) * (hsd.SdCard.BlockSize); } -#endif // SDIO_SUPPORT +#endif // ONBOARD_SDIO #endif // HAL_STM32 diff --git a/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h b/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h index 228e869688..5a4bde16a5 100644 --- a/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h +++ b/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h @@ -30,5 +30,5 @@ // Allow for no media drives #if !HAS_MEDIA - #undef SDIO_SUPPORT + #undef ONBOARD_SDIO #endif diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index bf4810cd8a..de983dd608 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -545,7 +545,7 @@ #endif #if DISABLED(USB_FLASH_DRIVE_SUPPORT) || BOTH(MULTI_VOLUME, VOLUME_SD_ONBOARD) - #if ENABLED(SDIO_SUPPORT) + #if ENABLED(ONBOARD_SDIO) #define NEED_SD2CARD_SDIO 1 #else #define NEED_SD2CARD_SPI 1 diff --git a/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h b/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h index f09f633220..ee4376c50a 100644 --- a/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h +++ b/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h @@ -115,10 +115,10 @@ // #define SD_DETECT_PIN PC7 -#ifndef SDIO_SUPPORT - #define SDIO_SUPPORT +#ifndef ONBOARD_SDIO + #define ONBOARD_SDIO #endif -#if ENABLED(SDIO_SUPPORT) +#if ENABLED(ONBOARD_SDIO) // // SPI // diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h index c85c107bd9..22f78350cf 100644 --- a/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h +++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h @@ -169,7 +169,7 @@ // // SD Card // -#define SDIO_SUPPORT +#define ONBOARD_SDIO #define SD_DETECT_PIN -1 // PF0, but it isn't connected #define SDIO_CLOCK 4500000 #define SDIO_READ_RETRIES 16 diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h index 9e422e62b0..f78bad624d 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h @@ -127,7 +127,7 @@ #define SDCARD_CONNECTION ONBOARD #define ON_BOARD_SPI_DEVICE 1 #define ONBOARD_SD_CS_PIN PC12 // SDSS -#define SDIO_SUPPORT +#define ONBOARD_SDIO #define NO_SD_HOST_DRIVE // This board's SD is only seen by the printer // diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h index c028deaa99..fd96799372 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h @@ -159,7 +159,7 @@ // #define SD_DETECT_PIN PC7 #define SDCARD_CONNECTION ONBOARD -#define SDIO_SUPPORT +#define ONBOARD_SDIO #define NO_SD_HOST_DRIVE // This board's SD is only seen by the printer #if ANY(RET6_12864_LCD, HAS_DWIN_E3V2, IS_DWIN_MARLINUI) diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h index 12a5e5ea51..7a7ec35508 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h @@ -140,7 +140,7 @@ #define SDCARD_CONNECTION ONBOARD #define ONBOARD_SPI_DEVICE 1 #define ONBOARD_SD_CS_PIN PA4 // SDSS -#define SDIO_SUPPORT +#define ONBOARD_SDIO #define NO_SD_HOST_DRIVE // This board's SD is only seen by the printer #if ANY(RET6_12864_LCD, HAS_DWIN_E3V2, IS_DWIN_MARLINUI) diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V45x.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V45x.h index a9ff02d1f4..d592b4808a 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V45x.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V45x.h @@ -105,7 +105,7 @@ #define SD_DETECT_PIN PC7 #define NO_SD_HOST_DRIVE // SD is only seen by the printer -#define SDIO_SUPPORT // Extra added by Creality +#define ONBOARD_SDIO // Extra added by Creality #define SDIO_CLOCK 6000000 // In original source code overridden by Creality in sdio.h // diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h index c3b66b034a..e54469afff 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h @@ -144,7 +144,7 @@ #define SDCARD_CONNECTION ONBOARD #define ONBOARD_SPI_DEVICE 1 #define ONBOARD_SD_CS_PIN PC11 // SDSS -#define SDIO_SUPPORT +#define ONBOARD_SDIO #define NO_SD_HOST_DRIVE // This board's SD is only seen by the printer #if ANY(RET6_12864_LCD, HAS_DWIN_E3V2, IS_DWIN_MARLINUI) diff --git a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h index 4978f84abe..a02b270337 100644 --- a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h +++ b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h @@ -256,7 +256,7 @@ #define SD_SS_PIN -1 #define SD_DETECT_PIN PD12 // SD_CD (if -1 no detection) #else - #define SDIO_SUPPORT + #define ONBOARD_SDIO #define SDIO_CLOCK 4500000 // 4.5 MHz #define SDIO_READ_RETRIES 16 #define ONBOARD_SPI_DEVICE 1 // SPI1 diff --git a/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h b/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h index b1498d13b9..168317d8b5 100644 --- a/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h +++ b/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h @@ -158,7 +158,7 @@ #define LCD_BRIGHTNESS_DEFAULT TFT_BACKLIGHT_PWM #endif -#if ENABLED(SDIO_SUPPORT) +#if ENABLED(ONBOARD_SDIO) #define SD_SS_PIN -1 // else SDSS set to PA4 in M43 (spi_pins.h) #endif diff --git a/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h b/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h index cc26942002..a7fc323ba0 100644 --- a/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h @@ -120,7 +120,7 @@ #define SDCARD_CONNECTION ONBOARD #endif -#define SDIO_SUPPORT +#define ONBOARD_SDIO #define SDIO_CLOCK 4500000 // 4.5 MHz #define SDIO_READ_RETRIES 16 diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h index 5f290d153d..e53ffa008b 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h @@ -197,10 +197,10 @@ // SPI1(PA7) & SPI3(PB5) not available #define SPI_DEVICE 2 -#define SDIO_SUPPORT +#define ONBOARD_SDIO #define SDIO_CLOCK 4500000 #define SDIO_READ_RETRIES 16 -#if ENABLED(SDIO_SUPPORT) +#if ENABLED(ONBOARD_SDIO) #define SD_SCK_PIN PB13 // SPI2 #define SD_MISO_PIN PB14 // SPI2 #define SD_MOSI_PIN PB15 // SPI2 diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h index 052bed202b..3ec2c2cfd9 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h @@ -239,7 +239,7 @@ #endif #if SD_CONNECTION_IS(ONBOARD) - #define SDIO_SUPPORT + #define ONBOARD_SDIO #define SDIO_CLOCK 4500000 // 4.5 MHz #define SD_DETECT_PIN PD12 #define ONBOARD_SD_CS_PIN PC11 diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h index 46c2fa8065..3a50465a9a 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h @@ -133,7 +133,7 @@ #define SDCARD_CONNECTION ONBOARD #endif -#define SDIO_SUPPORT +#define ONBOARD_SDIO #define SDIO_CLOCK 4500000 // 4.5 MHz #define SD_DETECT_PIN PD12 #define ONBOARD_SPI_DEVICE 1 // SPI1 diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h index d37d4a10de..6f641f20dd 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h @@ -239,7 +239,7 @@ #endif #if SD_CONNECTION_IS(ONBOARD) - #define SDIO_SUPPORT + #define ONBOARD_SDIO #define SDIO_CLOCK 4500000 // 4.5 MHz #define SD_DETECT_PIN PD12 #define ONBOARD_SD_CS_PIN PC11 diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h index 28dd19938b..a329b8a4bb 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h @@ -163,7 +163,7 @@ #define SDCARD_CONNECTION ONBOARD #endif -#define SDIO_SUPPORT +#define ONBOARD_SDIO #define SDIO_CLOCK 4500000 // 4.5 MHz #define SD_DETECT_PIN PD12 #define ONBOARD_SD_CS_PIN PC11 diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h index 2a212f1b4a..922caa556e 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h @@ -210,7 +210,7 @@ #define SD_MOSI_PIN PB15 #define SD_SS_PIN PG6 #elif SD_CONNECTION_IS(ONBOARD) - #define SDIO_SUPPORT + #define ONBOARD_SDIO #define SD_DETECT_PIN PD12 #define ONBOARD_SD_CS_PIN PC11 #elif SD_CONNECTION_IS(CUSTOM_CABLE) diff --git a/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h b/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h index 97ba7f7fec..ee50f32738 100644 --- a/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h +++ b/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h @@ -187,7 +187,7 @@ #define SDCARD_CONNECTION ONBOARD #define ONBOARD_SPI_DEVICE 1 #define ONBOARD_SD_CS_PIN PA4 // SDSS -#define SDIO_SUPPORT +#define ONBOARD_SDIO #define NO_SD_HOST_DRIVE // This board's SD is only seen by the printer #if ANY(RET6_12864_LCD, HAS_DWIN_E3V2, IS_DWIN_MARLINUI) diff --git a/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h b/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h index d2f3645d94..ff2bf5fd8e 100644 --- a/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h +++ b/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h @@ -186,7 +186,7 @@ // SPI1(PA7) & SPI3(PB5) not available #define SPI_DEVICE 2 -#if ENABLED(SDIO_SUPPORT) +#if ENABLED(ONBOARD_SDIO) #define SD_SCK_PIN PB13 // SPI2 ok #define SD_MISO_PIN PB14 // SPI2 ok #define SD_MOSI_PIN PB15 // SPI2 ok diff --git a/Marlin/src/pins/stm32f4/pins_ANET_ET4.h b/Marlin/src/pins/stm32f4/pins_ANET_ET4.h index bd8a2d9762..edfee05166 100644 --- a/Marlin/src/pins/stm32f4/pins_ANET_ET4.h +++ b/Marlin/src/pins/stm32f4/pins_ANET_ET4.h @@ -195,7 +195,7 @@ // // SD Card // -//#define SDIO_SUPPORT +//#define ONBOARD_SDIO #ifndef SDCARD_CONNECTION #define SDCARD_CONNECTION CUSTOM_CABLE @@ -203,7 +203,7 @@ #if HAS_MEDIA - #if DISABLED(SDIO_SUPPORT) + #if DISABLED(ONBOARD_SDIO) #define SOFTWARE_SPI #define SDSS PC11 #define SD_SS_PIN SDSS diff --git a/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h b/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h index a4af3f8fe3..025a1fc9f1 100644 --- a/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h +++ b/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h @@ -145,8 +145,8 @@ #endif #if SD_CONNECTION_IS(ONBOARD) - #define SDIO_SUPPORT // Use SDIO for onboard SD - #if DISABLED(SDIO_SUPPORT) + #define ONBOARD_SDIO // Use SDIO for onboard SD + #if DISABLED(ONBOARD_SDIO) #define SOFTWARE_SPI // Use soft SPI for onboard SD #define SDSS PC11 #define SD_SCK_PIN PC12 diff --git a/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h b/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h index 0130d60240..7e3f070786 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h @@ -383,7 +383,7 @@ #endif #if SD_CONNECTION_IS(ONBOARD) - #define SDIO_SUPPORT // Use SDIO for onboard SD + #define ONBOARD_SDIO // Use SDIO for onboard SD //#define SDIO_CLOCK 48000000 #define SD_DETECT_PIN PC4 #elif SD_CONNECTION_IS(CUSTOM_CABLE) diff --git a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h index 711050b747..d69d8fbef0 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h @@ -351,7 +351,7 @@ // Must use soft SPI because Marlin's default hardware SPI is tied to LCD's EXP2 // #if SD_CONNECTION_IS(ONBOARD) - #define SDIO_SUPPORT // Use SDIO for onboard SD + #define ONBOARD_SDIO // Use SDIO for onboard SD #ifndef SD_DETECT_STATE #define SD_DETECT_STATE HIGH #elif SD_DETECT_STATE == LOW diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h index 73c2cf9ff8..183927a5a6 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h @@ -372,7 +372,7 @@ #define SD_MOSI_PIN EXP2_06_PIN #define SD_DETECT_PIN EXP2_07_PIN #elif SD_CONNECTION_IS(ONBOARD) - #define SDIO_SUPPORT // Use SDIO for onboard SD + #define ONBOARD_SDIO // Use SDIO for onboard SD #elif SD_CONNECTION_IS(CUSTOM_CABLE) #error "No custom SD drive cable defined for this board." #endif diff --git a/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h b/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h index b9996aa1f2..725d326ec2 100644 --- a/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h +++ b/Marlin/src/pins/stm32f4/pins_FLYF407ZG.h @@ -214,9 +214,9 @@ #if SD_CONNECTION_IS(ONBOARD) - #define SDIO_SUPPORT // Use SDIO for onboard SD + #define ONBOARD_SDIO // Use SDIO for onboard SD - #if DISABLED(SDIO_SUPPORT) + #if DISABLED(ONBOARD_SDIO) #define SOFTWARE_SPI // Use soft SPI for onboard SD #define SDSS PC11 #define SD_SCK_PIN PC12 diff --git a/Marlin/src/pins/stm32f4/pins_LERDGE_K.h b/Marlin/src/pins/stm32f4/pins_LERDGE_K.h index 5471613679..04264ea2e7 100644 --- a/Marlin/src/pins/stm32f4/pins_LERDGE_K.h +++ b/Marlin/src/pins/stm32f4/pins_LERDGE_K.h @@ -217,10 +217,10 @@ // // SD support // -#define SDIO_SUPPORT +#define ONBOARD_SDIO #define SDIO_CLOCK 4800000 #define SD_DETECT_PIN PA8 -#if DISABLED(SDIO_SUPPORT) +#if DISABLED(ONBOARD_SDIO) #define SOFTWARE_SPI #define SD_SCK_PIN PC12 #define SD_MISO_PIN PC8 diff --git a/Marlin/src/pins/stm32f4/pins_LERDGE_S.h b/Marlin/src/pins/stm32f4/pins_LERDGE_S.h index 180235019a..c7c9e3db3b 100644 --- a/Marlin/src/pins/stm32f4/pins_LERDGE_S.h +++ b/Marlin/src/pins/stm32f4/pins_LERDGE_S.h @@ -160,10 +160,10 @@ // // SD support // -#define SDIO_SUPPORT +#define ONBOARD_SDIO #define SDIO_CLOCK 4800000 #define SD_DETECT_PIN PG15 -#if DISABLED(SDIO_SUPPORT) +#if DISABLED(ONBOARD_SDIO) #define SOFTWARE_SPI #define SD_SCK_PIN PC12 #define SD_MISO_PIN PC8 diff --git a/Marlin/src/pins/stm32f4/pins_LERDGE_X.h b/Marlin/src/pins/stm32f4/pins_LERDGE_X.h index 20985f263c..22e7f6e2e2 100644 --- a/Marlin/src/pins/stm32f4/pins_LERDGE_X.h +++ b/Marlin/src/pins/stm32f4/pins_LERDGE_X.h @@ -118,10 +118,10 @@ // // SD support (On board) // -#define SDIO_SUPPORT +#define ONBOARD_SDIO #define SD_DETECT_PIN PA8 #define SDIO_CLOCK 4800000 -#if DISABLED(SDIO_SUPPORT) +#if DISABLED(ONBOARD_SDIO) #define SOFTWARE_SPI #define SD_SCK_PIN PC12 #define SD_MISO_PIN PC8 diff --git a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h index 8d2584fe10..1677b45697 100644 --- a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h +++ b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h @@ -251,7 +251,7 @@ // // SD Card // -#define SDIO_SUPPORT +#define ONBOARD_SDIO #define SD_DETECT_PIN -1 // PF0, but not connected #define SDIO_CLOCK 4500000 #define SDIO_READ_RETRIES 16 diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h index be56d0d2b7..09b305f700 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h @@ -360,7 +360,7 @@ #define SD_MOSI_PIN EXP2_06_PIN #define SD_DETECT_PIN EXP2_07_PIN #elif SD_CONNECTION_IS(ONBOARD) - #define SDIO_SUPPORT + #define ONBOARD_SDIO #define SDIO_CLOCK 24000000 // 24MHz #elif SD_CONNECTION_IS(CUSTOM_CABLE) #error "No custom SD drive cable defined for this board." From f0f7ec88823318c7d778e42b4dc7604120943032 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 23 Apr 2023 00:47:44 -0500 Subject: [PATCH 315/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Ste?= =?UTF-8?q?pper::set=5Fdirections()=20=3D>=20apply=5Fdirections()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bedlevel/bdl/bdl.cpp | 4 ++-- Marlin/src/module/motion.cpp | 6 +++--- Marlin/src/module/stepper.cpp | 2 +- Marlin/src/module/stepper.h | 4 ++-- Marlin/src/module/stepper/trinamic.cpp | 2 +- Marlin/src/module/tool_change.cpp | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Marlin/src/feature/bedlevel/bdl/bdl.cpp b/Marlin/src/feature/bedlevel/bdl/bdl.cpp index e729022f21..5ce5e894ca 100644 --- a/Marlin/src/feature/bedlevel/bdl/bdl.cpp +++ b/Marlin/src/feature/bedlevel/bdl/bdl.cpp @@ -110,7 +110,7 @@ void BDS_Leveling::process() { } else { babystep.set_mm(Z_AXIS, 0); //if (old_cur_z <= cur_z) Z_DIR_WRITE(INVERT_DIR(Z, HIGH)); - stepper.set_directions(); + stepper.apply_directions(); } #endif old_cur_z = cur_z; @@ -119,7 +119,7 @@ void BDS_Leveling::process() { //endstops.update(); } else - stepper.set_directions(); + stepper.apply_directions(); #if ENABLED(DEBUG_OUT_BD) SERIAL_ECHOLNPGM("BD:", tmp & 0x3FF, ", Z:", cur_z, "|", current_position.z); diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 589299f2f1..f7671e3135 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -1419,13 +1419,13 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool void idex_set_mirrored_mode(const bool mirr) { idex_mirrored_mode = mirr; - stepper.set_directions(); + stepper.apply_directions(); } void set_duplication_enabled(const bool dupe, const int8_t tool_index/*=-1*/) { extruder_duplication_enabled = dupe; if (tool_index >= 0) active_extruder = tool_index; - stepper.set_directions(); + stepper.apply_directions(); } void idex_set_parked(const bool park/*=true*/) { @@ -1471,7 +1471,7 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool line_to_current_position(fr_zfast); } } - stepper.set_directions(); + stepper.apply_directions(); idex_set_parked(false); if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("idex_set_parked(false)"); diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 045df05981..f26e10a4bd 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -608,7 +608,7 @@ void Stepper::disable_all_steppers() { * COREXZ: X_AXIS=A_AXIS and Z_AXIS=C_AXIS * COREYZ: Y_AXIS=B_AXIS and Z_AXIS=C_AXIS */ -void Stepper::set_directions() { +void Stepper::apply_directions() { DIR_WAIT_BEFORE(); diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 4c54a5dbf9..63285398cd 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -814,12 +814,12 @@ class Stepper { static void disable_all_steppers(); // Update direction states for all steppers - static void set_directions(); + static void apply_directions(); // Set direction bits and update all stepper DIR states static void set_directions(const axis_bits_t bits) { last_direction_bits = bits; - set_directions(); + apply_directions(); } #if ENABLED(FT_MOTION) diff --git a/Marlin/src/module/stepper/trinamic.cpp b/Marlin/src/module/stepper/trinamic.cpp index 02ae9cb1e4..893ce3f8db 100644 --- a/Marlin/src/module/stepper/trinamic.cpp +++ b/Marlin/src/module/stepper/trinamic.cpp @@ -1010,7 +1010,7 @@ void reset_trinamic_drivers() { TMC_ADV() #endif - stepper.set_directions(); + stepper.apply_directions(); } // TMC Slave Address Conflict Detection diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index a91f6f742d..cce3669355 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -880,7 +880,7 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. } // Ensure X axis DIR pertains to the correct carriage - stepper.set_directions(); + stepper.apply_directions(); DEBUG_ECHOLNPGM("Active extruder parked: ", active_extruder_parked ? "yes" : "no"); DEBUG_POS("New extruder (parked)", current_position); From 69f8da468247986225b33e9a373856650746b5d7 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 23 Apr 2023 01:58:01 -0500 Subject: [PATCH 316/659] =?UTF-8?q?=F0=9F=94=A7=20Split=20Changes.h=20from?= =?UTF-8?q?=20SanityCheck.h=20(#25732)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Changes.h | 665 +++++++++++++++++++++ Marlin/src/inc/Conditionals_post.h | 224 +------ Marlin/src/inc/MarlinConfig.h | 1 + Marlin/src/inc/SanityCheck.h | 693 ++-------------------- Marlin/src/pins/esp32/pins_PANDA_common.h | 8 +- 5 files changed, 726 insertions(+), 865 deletions(-) create mode 100644 Marlin/src/inc/Changes.h diff --git a/Marlin/src/inc/Changes.h b/Marlin/src/inc/Changes.h new file mode 100644 index 0000000000..4b7627adb4 --- /dev/null +++ b/Marlin/src/inc/Changes.h @@ -0,0 +1,665 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * Changes.h + * + * Alert about Configuration changes at compile-time. + */ + +/** + * Warnings for old configurations + */ +#if WATCH_TEMP_PERIOD > 500 + #error "WATCH_TEMP_PERIOD now uses seconds instead of milliseconds." +#elif DISABLED(THERMAL_PROTECTION_HOTENDS) && (defined(WATCH_TEMP_PERIOD) || defined(THERMAL_PROTECTION_PERIOD)) + #error "Thermal Runaway Protection for hotends is now enabled with THERMAL_PROTECTION_HOTENDS." +#elif DISABLED(THERMAL_PROTECTION_BED) && defined(THERMAL_PROTECTION_BED_PERIOD) + #error "Thermal Runaway Protection for the bed is now enabled with THERMAL_PROTECTION_BED." +#elif defined(NO_FAN_SLOWING_IN_PID_TUNING) + #error "NO_FAN_SLOWING_IN_PID_TUNING is now TEMP_TUNING_MAINTAIN_FAN." +#elif (CORE_IS_XZ || CORE_IS_YZ) && ENABLED(Z_LATE_ENABLE) + #error "Z_LATE_ENABLE can't be used with COREXZ, COREZX, COREYZ, or COREZY." +#elif defined(X_HOME_RETRACT_MM) + #error "[XYZ]_HOME_RETRACT_MM settings have been renamed [XYZ]_HOME_BUMP_MM." +#elif defined(SDCARDDETECTINVERTED) + #error "SDCARDDETECTINVERTED is now SD_DETECT_STATE (HIGH)." +#elif defined(SD_DETECT_INVERTED) + #error "SD_DETECT_INVERTED is now SD_DETECT_STATE (HIGH)." +#elif defined(BTENABLED) + #error "BTENABLED is now BLUETOOTH." +#elif defined(CUSTOM_MENDEL_NAME) + #error "CUSTOM_MENDEL_NAME is now CUSTOM_MACHINE_NAME." +#elif defined(HAS_AUTOMATIC_VERSIONING) + #error "HAS_AUTOMATIC_VERSIONING is now CUSTOM_VERSION_FILE." +#elif defined(USE_AUTOMATIC_VERSIONING) + #error "USE_AUTOMATIC_VERSIONING is now CUSTOM_VERSION_FILE." +#elif defined(SDSLOW) + #error "SDSLOW deprecated. Set SD_SPI_SPEED to SPI_HALF_SPEED instead." +#elif defined(SDEXTRASLOW) + #error "SDEXTRASLOW deprecated. Set SD_SPI_SPEED to SPI_QUARTER_SPEED instead." +#elif defined(FILAMENT_SENSOR) + #error "FILAMENT_SENSOR is now FILAMENT_WIDTH_SENSOR." +#elif defined(ENDSTOPPULLUP_FIL_RUNOUT) + #error "ENDSTOPPULLUP_FIL_RUNOUT is now FIL_RUNOUT_PULLUP." +#elif defined(DISABLE_MAX_ENDSTOPS) || defined(DISABLE_MIN_ENDSTOPS) + #error "DISABLE_MAX_ENDSTOPS and DISABLE_MIN_ENDSTOPS deprecated. Use individual USE_*_PLUG options instead." +#elif defined(LANGUAGE_INCLUDE) + #error "LANGUAGE_INCLUDE has been replaced by LCD_LANGUAGE." +#elif defined(EXTRUDER_OFFSET_X) || defined(EXTRUDER_OFFSET_Y) + #error "EXTRUDER_OFFSET_[XY] is deprecated. Use HOTEND_OFFSET_[XY] instead." +#elif defined(PID_PARAMS_PER_EXTRUDER) + #error "PID_PARAMS_PER_EXTRUDER is deprecated. Use PID_PARAMS_PER_HOTEND instead." +#elif defined(EXTRUDER_WATTS) || defined(BED_WATTS) + #error "EXTRUDER_WATTS and BED_WATTS are deprecated and should be removed." +#elif defined(SERVO_ENDSTOP_ANGLES) + #error "SERVO_ENDSTOP_ANGLES is deprecated. Use Z_SERVO_ANGLES instead." +#elif defined(X_ENDSTOP_SERVO_NR) || defined(Y_ENDSTOP_SERVO_NR) + #error "X_ENDSTOP_SERVO_NR and Y_ENDSTOP_SERVO_NR are deprecated and should be removed." +#elif defined(Z_ENDSTOP_SERVO_NR) + #error "Z_ENDSTOP_SERVO_NR is now Z_PROBE_SERVO_NR." +#elif defined(DEFAULT_XYJERK) + #error "DEFAULT_XYJERK is deprecated. Use DEFAULT_XJERK and DEFAULT_YJERK instead." +#elif defined(XY_TRAVEL_SPEED) + #error "XY_TRAVEL_SPEED is now XY_PROBE_FEEDRATE." +#elif defined(XY_PROBE_SPEED) + #error "XY_PROBE_SPEED is now XY_PROBE_FEEDRATE." +#elif defined(Z_PROBE_SPEED_FAST) + #error "Z_PROBE_SPEED_FAST is now Z_PROBE_FEEDRATE_FAST." +#elif defined(Z_PROBE_SPEED_SLOW) + #error "Z_PROBE_SPEED_SLOW is now Z_PROBE_FEEDRATE_SLOW." +#elif defined(PROBE_SERVO_DEACTIVATION_DELAY) + #error "PROBE_SERVO_DEACTIVATION_DELAY is deprecated. Use DEACTIVATE_SERVOS_AFTER_MOVE instead." +#elif defined(SERVO_DEACTIVATION_DELAY) + #error "SERVO_DEACTIVATION_DELAY is now SERVO_DELAY." +#elif ENABLED(FILAMENTCHANGEENABLE) + #error "FILAMENTCHANGEENABLE is now ADVANCED_PAUSE_FEATURE." +#elif ENABLED(FILAMENT_CHANGE_FEATURE) + #error "FILAMENT_CHANGE_FEATURE is now ADVANCED_PAUSE_FEATURE." +#elif defined(FILAMENT_CHANGE_X_POS) || defined(FILAMENT_CHANGE_Y_POS) + #error "FILAMENT_CHANGE_[XY]_POS is now set with NOZZLE_PARK_POINT." +#elif defined(FILAMENT_CHANGE_Z_ADD) + #error "FILAMENT_CHANGE_Z_ADD is now set with NOZZLE_PARK_POINT." +#elif defined(FILAMENT_CHANGE_XY_FEEDRATE) + #error "FILAMENT_CHANGE_XY_FEEDRATE is now NOZZLE_PARK_XY_FEEDRATE." +#elif defined(FILAMENT_CHANGE_Z_FEEDRATE) + #error "FILAMENT_CHANGE_Z_FEEDRATE is now NOZZLE_PARK_Z_FEEDRATE." +#elif defined(PAUSE_PARK_X_POS) || defined(PAUSE_PARK_Y_POS) + #error "PAUSE_PARK_[XY]_POS is now set with NOZZLE_PARK_POINT." +#elif defined(PAUSE_PARK_Z_ADD) + #error "PAUSE_PARK_Z_ADD is now set with NOZZLE_PARK_POINT." +#elif defined(PAUSE_PARK_XY_FEEDRATE) + #error "PAUSE_PARK_XY_FEEDRATE is now NOZZLE_PARK_XY_FEEDRATE." +#elif defined(PAUSE_PARK_Z_FEEDRATE) + #error "PAUSE_PARK_Z_FEEDRATE is now NOZZLE_PARK_Z_FEEDRATE." +#elif defined(FILAMENT_CHANGE_RETRACT_FEEDRATE) + #error "FILAMENT_CHANGE_RETRACT_FEEDRATE is now PAUSE_PARK_RETRACT_FEEDRATE." +#elif defined(FILAMENT_CHANGE_RETRACT_LENGTH) + #error "FILAMENT_CHANGE_RETRACT_LENGTH is now PAUSE_PARK_RETRACT_LENGTH." +#elif defined(FILAMENT_CHANGE_EXTRUDE_FEEDRATE) + #error "FILAMENT_CHANGE_EXTRUDE_FEEDRATE is now ADVANCED_PAUSE_PURGE_FEEDRATE." +#elif defined(ADVANCED_PAUSE_EXTRUDE_FEEDRATE) + #error "ADVANCED_PAUSE_EXTRUDE_FEEDRATE is now ADVANCED_PAUSE_PURGE_FEEDRATE." +#elif defined(FILAMENT_CHANGE_EXTRUDE_LENGTH) + #error "FILAMENT_CHANGE_EXTRUDE_LENGTH is now ADVANCED_PAUSE_PURGE_LENGTH." +#elif defined(ADVANCED_PAUSE_EXTRUDE_LENGTH) + #error "ADVANCED_PAUSE_EXTRUDE_LENGTH is now ADVANCED_PAUSE_PURGE_LENGTH." +#elif defined(FILAMENT_CHANGE_NOZZLE_TIMEOUT) + #error "FILAMENT_CHANGE_NOZZLE_TIMEOUT is now PAUSE_PARK_NOZZLE_TIMEOUT." +#elif defined(FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS) + #error "FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS is now FILAMENT_CHANGE_ALERT_BEEPS." +#elif defined(FILAMENT_CHANGE_NO_STEPPER_TIMEOUT) + #error "FILAMENT_CHANGE_NO_STEPPER_TIMEOUT is now PAUSE_PARK_NO_STEPPER_TIMEOUT." +#elif defined(PLA_PREHEAT_HOTEND_TEMP) + #error "PLA_PREHEAT_HOTEND_TEMP is now PREHEAT_1_TEMP_HOTEND." +#elif defined(PLA_PREHEAT_HPB_TEMP) + #error "PLA_PREHEAT_HPB_TEMP is now PREHEAT_1_TEMP_BED." +#elif defined(PLA_PREHEAT_FAN_SPEED) + #error "PLA_PREHEAT_FAN_SPEED is now PREHEAT_1_FAN_SPEED." +#elif defined(ABS_PREHEAT_HOTEND_TEMP) + #error "ABS_PREHEAT_HOTEND_TEMP is now PREHEAT_2_TEMP_HOTEND." +#elif defined(ABS_PREHEAT_HPB_TEMP) + #error "ABS_PREHEAT_HPB_TEMP is now PREHEAT_2_TEMP_BED." +#elif defined(ABS_PREHEAT_FAN_SPEED) + #error "ABS_PREHEAT_FAN_SPEED is now PREHEAT_2_FAN_SPEED." +#elif defined(ENDSTOPS_ONLY_FOR_HOMING) + #error "ENDSTOPS_ONLY_FOR_HOMING is deprecated. Use (disable) ENDSTOPS_ALWAYS_ON_DEFAULT instead." +#elif defined(HOMING_FEEDRATE) + #error "HOMING_FEEDRATE is now set using the HOMING_FEEDRATE_MM_M array instead." +#elif (defined(HOMING_FEEDRATE_XY) || defined(HOMING_FEEDRATE_Z)) && !defined(HOMING_FEEDRATE_MM_M) + #error "HOMING_FEEDRATE_XY and HOMING_FEEDRATE_Z are now set using the HOMING_FEEDRATE_MM_M array instead." +#elif defined(MANUAL_HOME_POSITIONS) + #error "MANUAL_HOME_POSITIONS is deprecated. Set MANUAL_[XYZ]_HOME_POS as-needed instead." +#elif defined(PID_ADD_EXTRUSION_RATE) + #error "PID_ADD_EXTRUSION_RATE is now PID_EXTRUSION_SCALING and is DISABLED by default." +#elif defined(Z_RAISE_BEFORE_HOMING) + #error "Z_RAISE_BEFORE_HOMING is now Z_CLEARANCE_FOR_HOMING." +#elif defined(MIN_Z_HEIGHT_FOR_HOMING) + #error "MIN_Z_HEIGHT_FOR_HOMING is now Z_CLEARANCE_FOR_HOMING." +#elif defined(Z_HOMING_HEIGHT) + #error "Z_HOMING_HEIGHT is now Z_CLEARANCE_FOR_HOMING." +#elif defined(Z_RAISE_BEFORE_PROBING) || defined(Z_RAISE_AFTER_PROBING) + #error "Z_RAISE_(BEFORE|AFTER)_PROBING are deprecated. Use Z_CLEARANCE_DEPLOY_PROBE and Z_AFTER_PROBING instead." +#elif defined(Z_RAISE_PROBE_DEPLOY_STOW) || defined(Z_RAISE_BETWEEN_PROBINGS) + #error "Z_RAISE_PROBE_DEPLOY_STOW and Z_RAISE_BETWEEN_PROBINGS are now Z_CLEARANCE_DEPLOY_PROBE and Z_CLEARANCE_BETWEEN_PROBES." +#elif defined(Z_PROBE_DEPLOY_HEIGHT) || defined(Z_PROBE_TRAVEL_HEIGHT) + #error "Z_PROBE_DEPLOY_HEIGHT and Z_PROBE_TRAVEL_HEIGHT are now Z_CLEARANCE_DEPLOY_PROBE and Z_CLEARANCE_BETWEEN_PROBES." +#elif defined(MANUAL_BED_LEVELING) + #error "MANUAL_BED_LEVELING is now LCD_BED_LEVELING." +#elif defined(MESH_HOME_SEARCH_Z) + #error "MESH_HOME_SEARCH_Z is now LCD_PROBE_Z_RANGE." +#elif defined(MANUAL_PROBE_Z_RANGE) + #error "MANUAL_PROBE_Z_RANGE is now LCD_PROBE_Z_RANGE." +#elif !defined(MIN_STEPS_PER_SEGMENT) + #error "Please replace 'const int dropsegments' with '#define MIN_STEPS_PER_SEGMENT' (and increase by 1)." +#elif MIN_STEPS_PER_SEGMENT <= 0 + #error "MIN_STEPS_PER_SEGMENT must be at least 1." +#elif defined(PREVENT_DANGEROUS_EXTRUDE) + #error "PREVENT_DANGEROUS_EXTRUDE is now PREVENT_COLD_EXTRUSION." +#elif defined(SCARA) + #error "SCARA is now MORGAN_SCARA." +#elif defined(ENABLE_AUTO_BED_LEVELING) + #error "ENABLE_AUTO_BED_LEVELING is deprecated. Specify AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR, or AUTO_BED_LEVELING_3POINT." +#elif defined(AUTO_BED_LEVELING_FEATURE) + #error "AUTO_BED_LEVELING_FEATURE is deprecated. Specify AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR, or AUTO_BED_LEVELING_3POINT." +#elif defined(ABL_GRID_POINTS) + #error "ABL_GRID_POINTS is now GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y." +#elif defined(ABL_GRID_POINTS_X) || defined(ABL_GRID_POINTS_Y) + #error "ABL_GRID_POINTS_[XY] is now GRID_MAX_POINTS_[XY]." +#elif defined(ABL_GRID_MAX_POINTS_X) || defined(ABL_GRID_MAX_POINTS_Y) + #error "ABL_GRID_MAX_POINTS_[XY] is now GRID_MAX_POINTS_[XY]." +#elif defined(MESH_NUM_X_POINTS) || defined(MESH_NUM_Y_POINTS) + #error "MESH_NUM_[XY]_POINTS is now GRID_MAX_POINTS_[XY]." +#elif defined(UBL_MESH_NUM_X_POINTS) || defined(UBL_MESH_NUM_Y_POINTS) + #error "UBL_MESH_NUM_[XY]_POINTS is now GRID_MAX_POINTS_[XY]." +#elif defined(UBL_G26_MESH_VALIDATION) + #error "UBL_G26_MESH_VALIDATION is now G26_MESH_VALIDATION." +#elif defined(UBL_MESH_EDIT_ENABLED) + #error "UBL_MESH_EDIT_ENABLED is now G26_MESH_VALIDATION." +#elif defined(UBL_MESH_EDITING) + #error "UBL_MESH_EDITING is now G26_MESH_VALIDATION." +#elif defined(BLTOUCH_HEATERS_OFF) + #error "BLTOUCH_HEATERS_OFF is now PROBING_HEATERS_OFF." +#elif defined(BLTOUCH_V3) + #error "BLTOUCH_V3 is obsolete." +#elif defined(BLTOUCH_FORCE_OPEN_DRAIN_MODE) + #error "BLTOUCH_FORCE_OPEN_DRAIN_MODE is obsolete." +#elif defined(BEEPER) + #error "BEEPER is now BEEPER_PIN." +#elif defined(SDCARDDETECT) + #error "SDCARDDETECT is now SD_DETECT_PIN." +#elif defined(STAT_LED_RED) || defined(STAT_LED_BLUE) + #error "STAT_LED_RED/STAT_LED_BLUE are now STAT_LED_RED_PIN/STAT_LED_BLUE_PIN." +#elif defined(LCD_PIN_BL) + #error "LCD_PIN_BL is now LCD_BACKLIGHT_PIN." +#elif defined(LCD_PIN_RESET) + #error "LCD_PIN_RESET is now LCD_RESET_PIN." +#elif defined(EXTRUDER_0_AUTO_FAN_PIN) || defined(EXTRUDER_1_AUTO_FAN_PIN) || defined(EXTRUDER_2_AUTO_FAN_PIN) || defined(EXTRUDER_3_AUTO_FAN_PIN) + #error "EXTRUDER_[0123]_AUTO_FAN_PIN is now E[0123]_AUTO_FAN_PIN." +#elif defined(min_software_endstops) || defined(max_software_endstops) + #error "(min|max)_software_endstops are now (MIN|MAX)_SOFTWARE_ENDSTOPS." +#elif ENABLED(Z_PROBE_SLED) && defined(SLED_PIN) + #error "Replace SLED_PIN with SOL1_PIN (applies to both Z_PROBE_SLED and SOLENOID_PROBE)." +#elif defined(CONTROLLERFAN_PIN) + #error "CONTROLLERFAN_PIN is now CONTROLLER_FAN_PIN, enabled with USE_CONTROLLER_FAN." +#elif defined(CONTROLLERFAN_SPEED) + #error "CONTROLLERFAN_SPEED is now CONTROLLERFAN_SPEED_ACTIVE." +#elif defined(CONTROLLERFAN_SECS) + #error "CONTROLLERFAN_SECS is now CONTROLLERFAN_IDLE_TIME." +#elif defined(MIN_RETRACT) + #error "MIN_RETRACT is now MIN_AUTORETRACT and MAX_AUTORETRACT." +#elif defined(ADVANCE) + #error "ADVANCE is now LIN_ADVANCE." +#elif defined(LIN_ADVANCE_E_D_RATIO) + #error "LIN_ADVANCE (1.5) no longer uses LIN_ADVANCE_E_D_RATIO." +#elif defined(NEOPIXEL_RGBW_LED) + #error "NEOPIXEL_RGBW_LED is now NEOPIXEL_LED." +#elif ENABLED(DELTA) && defined(DELTA_PROBEABLE_RADIUS) + #error "Remove DELTA_PROBEABLE_RADIUS and use PROBING_MARGIN to inset the probe area instead." +#elif ENABLED(DELTA) && defined(DELTA_CALIBRATION_RADIUS) + #error "Remove DELTA_CALIBRATION_RADIUS and use PROBING_MARGIN to inset the probe area instead." +#elif defined(UBL_MESH_INSET) + #error "UBL_MESH_INSET is now just MESH_INSET." +#elif defined(UBL_MESH_MIN_X) || defined(UBL_MESH_MIN_Y) || defined(UBL_MESH_MAX_X) || defined(UBL_MESH_MAX_Y) + #error "UBL_MESH_(MIN|MAX)_[XY] is now just MESH_(MIN|MAX)_[XY]." +#elif defined(ABL_PROBE_PT_1_X) || defined(ABL_PROBE_PT_1_Y) || defined(ABL_PROBE_PT_2_X) || defined(ABL_PROBE_PT_2_Y) || defined(ABL_PROBE_PT_3_X) || defined(ABL_PROBE_PT_3_Y) + #error "ABL_PROBE_PT_[123]_[XY] is no longer required. Please remove it." +#elif defined(UBL_PROBE_PT_1_X) || defined(UBL_PROBE_PT_1_Y) || defined(UBL_PROBE_PT_2_X) || defined(UBL_PROBE_PT_2_Y) || defined(UBL_PROBE_PT_3_X) || defined(UBL_PROBE_PT_3_Y) + #error "UBL_PROBE_PT_[123]_[XY] is no longer required. Please remove it." +#elif defined(MIN_PROBE_EDGE) + #error "MIN_PROBE_EDGE is now called PROBING_MARGIN." +#elif defined(MIN_PROBE_EDGE_LEFT) + #error "MIN_PROBE_EDGE_LEFT is now called PROBING_MARGIN_LEFT." +#elif defined(MIN_PROBE_EDGE_RIGHT) + #error "MIN_PROBE_EDGE_RIGHT is now called PROBING_MARGIN_RIGHT." +#elif defined(MIN_PROBE_EDGE_FRONT) + #error "MIN_PROBE_EDGE_FRONT is now called PROBING_MARGIN_FRONT." +#elif defined(MIN_PROBE_EDGE_BACK) + #error "MIN_PROBE_EDGE_BACK is now called PROBING_MARGIN_BACK." +#elif defined(LEFT_PROBE_BED_POSITION) + #error "LEFT_PROBE_BED_POSITION is obsolete. Set a margin with PROBING_MARGIN or PROBING_MARGIN_LEFT instead." +#elif defined(RIGHT_PROBE_BED_POSITION) + #error "RIGHT_PROBE_BED_POSITION is obsolete. Set a margin with PROBING_MARGIN or PROBING_MARGIN_RIGHT instead." +#elif defined(FRONT_PROBE_BED_POSITION) + #error "FRONT_PROBE_BED_POSITION is obsolete. Set a margin with PROBING_MARGIN or PROBING_MARGIN_FRONT instead." +#elif defined(BACK_PROBE_BED_POSITION) + #error "BACK_PROBE_BED_POSITION is obsolete. Set a margin with PROBING_MARGIN or PROBING_MARGIN_BACK instead." +#elif defined(ENABLE_MESH_EDIT_GFX_OVERLAY) + #error "ENABLE_MESH_EDIT_GFX_OVERLAY is now MESH_EDIT_GFX_OVERLAY." +#elif defined(BABYSTEP_ZPROBE_GFX_REVERSE) + #error "BABYSTEP_ZPROBE_GFX_REVERSE is now set by OVERLAY_GFX_REVERSE." +#elif defined(UBL_GRANULAR_SEGMENTATION_FOR_CARTESIAN) + #error "UBL_GRANULAR_SEGMENTATION_FOR_CARTESIAN is now SEGMENT_LEVELED_MOVES." +#elif HAS_PID_HEATING && (defined(K1) || !defined(PID_K1)) + #error "K1 is now PID_K1." +#elif defined(PROBE_DOUBLE_TOUCH) + #error "PROBE_DOUBLE_TOUCH is now MULTIPLE_PROBING." +#elif defined(ANET_KEYPAD_LCD) + #error "ANET_KEYPAD_LCD is now ZONESTAR_LCD." +#elif defined(LCD_I2C_SAINSMART_YWROBOT) + #error "LCD_I2C_SAINSMART_YWROBOT is now LCD_SAINSMART_I2C_(1602|2004)." +#elif defined(MEASURED_LOWER_LIMIT) || defined(MEASURED_UPPER_LIMIT) + #error "MEASURED_(UPPER|LOWER)_LIMIT is now FILWIDTH_ERROR_MARGIN." +#elif defined(HAVE_TMCDRIVER) + #error "HAVE_TMCDRIVER is now [AXIS]_DRIVER_TYPE TMC26X." +#elif defined(STEALTHCHOP) + #error "STEALTHCHOP is now STEALTHCHOP_(XY|Z|E)." +#elif defined(HAVE_TMC26X) + #error "HAVE_TMC26X is now [AXIS]_DRIVER_TYPE TMC26X." +#elif defined(HAVE_TMC2130) + #error "HAVE_TMC2130 is now [AXIS]_DRIVER_TYPE TMC2130." +#elif defined(HAVE_TMC2208) + #error "HAVE_TMC2208 is now [AXIS]_DRIVER_TYPE TMC2208." +#elif defined(HAVE_L6470DRIVER) + #error "HAVE_L6470DRIVER is obsolete. L64xx stepper drivers are no longer supported in Marlin." +#elif defined(X_IS_TMC) || defined(X2_IS_TMC) || defined(Y_IS_TMC) || defined(Y2_IS_TMC) || defined(Z_IS_TMC) || defined(Z2_IS_TMC) || defined(Z3_IS_TMC) \ + || defined(E0_IS_TMC) || defined(E1_IS_TMC) || defined(E2_IS_TMC) || defined(E3_IS_TMC) || defined(E4_IS_TMC) || defined(E5_IS_TMC) || defined(E6_IS_TMC) || defined(E7_IS_TMC) + #error "[AXIS]_IS_TMC is now [AXIS]_DRIVER_TYPE TMC26X." +#elif defined(X_IS_TMC26X) || defined(X2_IS_TMC26X) || defined(Y_IS_TMC26X) || defined(Y2_IS_TMC26X) || defined(Z_IS_TMC26X) || defined(Z2_IS_TMC26X) || defined(Z3_IS_TMC26X) \ + || defined(E0_IS_TMC26X) || defined(E1_IS_TMC26X) || defined(E2_IS_TMC26X) || defined(E3_IS_TMC26X) || defined(E4_IS_TMC26X) || defined(E5_IS_TMC26X) || defined(E6_IS_TMC26X) || defined(E7_IS_TMC26X) + #error "[AXIS]_IS_TMC26X is now [AXIS]_DRIVER_TYPE TMC26X." +#elif defined(X_IS_TMC2130) || defined(X2_IS_TMC2130) || defined(Y_IS_TMC2130) || defined(Y2_IS_TMC2130) || defined(Z_IS_TMC2130) || defined(Z2_IS_TMC2130) || defined(Z3_IS_TMC2130) \ + || defined(E0_IS_TMC2130) || defined(E1_IS_TMC2130) || defined(E2_IS_TMC2130) || defined(E3_IS_TMC2130) || defined(E4_IS_TMC2130) || defined(E5_IS_TMC2130) || defined(E6_IS_TMC2130) || defined(E7_IS_TMC2130) + #error "[AXIS]_IS_TMC2130 is now [AXIS]_DRIVER_TYPE TMC2130." +#elif defined(X_IS_TMC2208) || defined(X2_IS_TMC2208) || defined(Y_IS_TMC2208) || defined(Y2_IS_TMC2208) || defined(Z_IS_TMC2208) || defined(Z2_IS_TMC2208) || defined(Z3_IS_TMC2208) \ + || defined(E0_IS_TMC2208) || defined(E1_IS_TMC2208) || defined(E2_IS_TMC2208) || defined(E3_IS_TMC2208) || defined(E4_IS_TMC2208) || defined(E5_IS_TMC2208) || defined(E6_IS_TMC2208) || defined(E7_IS_TMC2208) + #error "[AXIS]_IS_TMC2208 is now [AXIS]_DRIVER_TYPE TMC2208." +#elif defined(AUTOMATIC_CURRENT_CONTROL) + #error "AUTOMATIC_CURRENT_CONTROL is now MONITOR_DRIVER_STATUS." +#elif defined(FILAMENT_CHANGE_LOAD_LENGTH) + #error "FILAMENT_CHANGE_LOAD_LENGTH is now FILAMENT_CHANGE_FAST_LOAD_LENGTH." +#elif defined(LEVEL_CORNERS_INSET) + #error "LEVEL_CORNERS_INSET is now BED_TRAMMING_INSET_LFRB." +#elif defined(BEZIER_JERK_CONTROL) + #error "BEZIER_JERK_CONTROL is now S_CURVE_ACCELERATION." +#elif HAS_JUNCTION_DEVIATION && defined(JUNCTION_DEVIATION_FACTOR) + #error "JUNCTION_DEVIATION_FACTOR is now JUNCTION_DEVIATION_MM." +#elif defined(JUNCTION_ACCELERATION_FACTOR) + #error "JUNCTION_ACCELERATION_FACTOR is obsolete. Delete it from Configuration_adv.h." +#elif defined(JUNCTION_ACCELERATION) + #error "JUNCTION_ACCELERATION is obsolete. Delete it from Configuration_adv.h." +#elif defined(MAX7219_DEBUG_STEPPER_HEAD) + #error "MAX7219_DEBUG_STEPPER_HEAD is now MAX7219_DEBUG_PLANNER_HEAD." +#elif defined(MAX7219_DEBUG_STEPPER_TAIL) + #error "MAX7219_DEBUG_STEPPER_TAIL is now MAX7219_DEBUG_PLANNER_TAIL." +#elif defined(MAX7219_DEBUG_STEPPER_QUEUE) + #error "MAX7219_DEBUG_STEPPER_QUEUE is now MAX7219_DEBUG_PLANNER_QUEUE." +#elif defined(ENDSTOP_NOISE_FILTER) + #error "ENDSTOP_NOISE_FILTER is now ENDSTOP_NOISE_THRESHOLD [2-7]." +#elif defined(RETRACT_ZLIFT) + #error "RETRACT_ZLIFT is now RETRACT_ZRAISE." +#elif defined(TOOLCHANGE_FS_INIT_BEFORE_SWAP) + #error "TOOLCHANGE_FS_INIT_BEFORE_SWAP is now TOOLCHANGE_FS_SLOW_FIRST_PRIME." +#elif defined(TOOLCHANGE_PARK_ZLIFT) || defined(TOOLCHANGE_UNPARK_ZLIFT) + #error "TOOLCHANGE_PARK_ZLIFT and TOOLCHANGE_UNPARK_ZLIFT are now TOOLCHANGE_ZRAISE." +#elif defined(SINGLENOZZLE_TOOLCHANGE_ZRAISE) + #error "SINGLENOZZLE_TOOLCHANGE_ZRAISE is now TOOLCHANGE_ZRAISE." +#elif defined(SINGLENOZZLE_SWAP_LENGTH) + #error "SINGLENOZZLE_SWAP_LENGTH is now TOOLCHANGE_FIL_SWAP_LENGTH." +#elif defined(SINGLENOZZLE_SWAP_RETRACT_SPEED) + #error "SINGLENOZZLE_SWAP_RETRACT_SPEED is now TOOLCHANGE_FIL_SWAP_RETRACT_SPEED." +#elif defined(SINGLENOZZLE_SWAP_PRIME_SPEED) + #error "SINGLENOZZLE_SWAP_PRIME_SPEED is now TOOLCHANGE_FIL_SWAP_PRIME_SPEED." +#elif defined(SINGLENOZZLE_SWAP_PARK) + #error "SINGLENOZZLE_SWAP_PARK is now TOOLCHANGE_PARK." +#elif defined(SINGLENOZZLE_TOOLCHANGE_XY) + #error "SINGLENOZZLE_TOOLCHANGE_XY is now TOOLCHANGE_PARK_XY." +#elif defined(SINGLENOZZLE_PARK_XY_FEEDRATE) + #error "SINGLENOZZLE_PARK_XY_FEEDRATE is now TOOLCHANGE_PARK_XY_FEEDRATE." +#elif defined(PARKING_EXTRUDER_SECURITY_RAISE) + #error "PARKING_EXTRUDER_SECURITY_RAISE is now TOOLCHANGE_ZRAISE." +#elif defined(SWITCHING_TOOLHEAD_SECURITY_RAISE) + #error "SWITCHING_TOOLHEAD_SECURITY_RAISE is now TOOLCHANGE_ZRAISE." +#elif defined(G0_FEEDRATE) && G0_FEEDRATE == 0 + #error "G0_FEEDRATE is now used to set the G0 feedrate." +#elif defined(MBL_Z_STEP) + #error "MBL_Z_STEP is now MESH_EDIT_Z_STEP." +#elif defined(CHDK) + #error "CHDK is now CHDK_PIN." +#elif ANY_PIN( \ + MAX6675_SS, MAX6675_SS2, MAX6675_SS3, MAX6675_CS, MAX6675_CS2, MAX6675_CS3,\ + MAX31855_SS, MAX31855_SS2, MAX31855_SS3, MAX31855_CS, MAX31855_CS2, MAX31855_CS3, \ + MAX31865_SS, MAX31865_SS2, MAX31865_SS3, MAX31865_CS, MAX31865_CS2, MAX31865_CS3) + #warning "MAX*_SS_PIN, MAX*_SS2_PIN, MAX*_SS3_PIN, MAX*_CS_PIN, MAX*_CS2_PIN, and MAX*_CS3_PIN, are obsolete. Please use TEMP_0_CS_PIN/TEMP_1_CS_PIN/TEMP_2_CS_PIN instead." +#elif ANY_PIN(MAX6675_SCK, MAX31855_SCK, MAX31865_SCK) + #warning "MAX*_SCK_PIN is obsolete. Please use TEMP_0_SCK_PIN/TEMP_1_SCK_PIN/TEMP_2_SCK_PIN instead." +#elif ANY_PIN(MAX6675_MISO, MAX6675_DO, MAX31855_MISO, MAX31855_DO, MAX31865_MISO, MAX31865_DO) + #warning "MAX*_MISO_PIN and MAX*_DO_PIN are obsolete. Please use TEMP_0_MISO_PIN/TEMP_1_MISO_PIN/TEMP_2_MISO_PIN instead." +#elif PIN_EXISTS(MAX31865_MOSI) + #warning "MAX31865_MOSI_PIN is obsolete. Please use TEMP_0_MOSI_PIN/TEMP_1_MOSI_PIN/TEMP_2_MOSI_PIN instead." +#elif ANY_PIN(THERMO_CS1_PIN, THERMO_CS2_PIN, THERMO_CS3_PIN, THERMO_DO_PIN, THERMO_SCK_PIN) + #error "THERMO_*_PIN is now TEMP_n_CS_PIN, TEMP_n_SCK_PIN, TEMP_n_MOSI_PIN, TEMP_n_MISO_PIN." +#elif defined(MAX31865_SENSOR_OHMS) + #error "MAX31865_SENSOR_OHMS is now MAX31865_SENSOR_OHMS_0." +#elif defined(MAX31865_CALIBRATION_OHMS) + #error "MAX31865_CALIBRATION_OHMS is now MAX31865_CALIBRATION_OHMS_0." +#elif defined(SPINDLE_LASER_ENABLE) + #error "SPINDLE_LASER_ENABLE is now SPINDLE_FEATURE or LASER_FEATURE." +#elif defined(SPINDLE_LASER_ENABLE_PIN) + #error "SPINDLE_LASER_ENABLE_PIN is now SPINDLE_LASER_ENA_PIN." +#elif defined(SPINDLE_DIR_CHANGE) + #error "SPINDLE_DIR_CHANGE is now SPINDLE_CHANGE_DIR." +#elif defined(SPINDLE_STOP_ON_DIR_CHANGE) + #error "SPINDLE_STOP_ON_DIR_CHANGE is now SPINDLE_CHANGE_DIR_STOP." +#elif defined(SPINDLE_LASER_ACTIVE_HIGH) + #error "SPINDLE_LASER_ACTIVE_HIGH is now SPINDLE_LASER_ACTIVE_STATE." +#elif defined(SPINDLE_LASER_ENABLE_INVERT) + #error "SPINDLE_LASER_ENABLE_INVERT is now SPINDLE_LASER_ACTIVE_STATE." +#elif defined(LASER_POWER_INLINE) + #error "LASER_POWER_INLINE is not required, inline mode is enabled with 'M3 I' and disabled with 'M5 I'." +#elif defined(LASER_POWER_INLINE_TRAPEZOID) + #error "LASER_POWER_INLINE_TRAPEZOID is now LASER_POWER_TRAP." +#elif defined(LASER_POWER_INLINE_TRAPEZOID_CONT) + #error "LASER_POWER_INLINE_TRAPEZOID_CONT is replaced with LASER_POWER_TRAP." +#elif defined(LASER_POWER_INLINE_TRAPEZOID_PER) + #error "LASER_POWER_INLINE_TRAPEZOID_CONT_PER replaced with LASER_POWER_TRAP." +#elif defined(LASER_POWER_INLINE_CONTINUOUS) + #error "LASER_POWER_INLINE_CONTINUOUS is not required, inline mode is enabled with 'M3 I' and disabled with 'M5 I'." +#elif defined(CUTTER_POWER_DISPLAY) + #error "CUTTER_POWER_DISPLAY is now CUTTER_POWER_UNIT." +#elif defined(CHAMBER_HEATER_PIN) + #error "CHAMBER_HEATER_PIN is now HEATER_CHAMBER_PIN." +#elif defined(TMC_Z_CALIBRATION) + #error "TMC_Z_CALIBRATION has been deprecated in favor of MECHANICAL_GANTRY_CALIBRATION." +#elif defined(Z_MIN_PROBE_ENDSTOP) + #error "Z_MIN_PROBE_ENDSTOP is no longer required. Please remove it." +#elif defined(DUAL_NOZZLE_DUPLICATION_MODE) + #error "DUAL_NOZZLE_DUPLICATION_MODE is now MULTI_NOZZLE_DUPLICATION." +#elif defined(MENU_ITEM_CASE_LIGHT) + #error "MENU_ITEM_CASE_LIGHT is now CASE_LIGHT_MENU." +#elif defined(CASE_LIGHT_NEOPIXEL_COLOR) + #error "CASE_LIGHT_NEOPIXEL_COLOR is now CASE_LIGHT_DEFAULT_COLOR." +#elif defined(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) + #error "ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED is now SD_ABORT_ON_ENDSTOP_HIT." +#elif defined(LPC_SD_LCD) || defined(LPC_SD_ONBOARD) || defined(LPC_SD_CUSTOM_CABLE) + #error "LPC_SD_(LCD|ONBOARD|CUSTOM_CABLE) are now SDCARD_CONNECTION." +#elif defined(USB_SD_DISABLED) + #error "USB_SD_DISABLED is now NO_SD_HOST_DRIVE." +#elif defined(USB_SD_ONBOARD) + #error "USB_SD_ONBOARD is obsolete. Disable NO_SD_HOST_DRIVE instead." +#elif defined(PSU_ACTIVE_HIGH) + #error "PSU_ACTIVE_HIGH is now PSU_ACTIVE_STATE." +#elif POWER_SUPPLY == 1 + #error "Replace POWER_SUPPLY 1 by enabling PSU_CONTROL and setting PSU_ACTIVE_STATE to 'LOW'." +#elif POWER_SUPPLY == 2 + #error "Replace POWER_SUPPLY 2 by enabling PSU_CONTROL and setting PSU_ACTIVE_STATE to 'HIGH'." +#elif defined(POWER_SUPPLY) + #error "POWER_SUPPLY is now obsolete. Please remove it." +#elif defined(MKS_ROBIN_TFT) + #error "MKS_ROBIN_TFT is now FSMC_GRAPHICAL_TFT." +#elif defined(SDPOWER) + #error "SDPOWER is now SDPOWER_PIN." +#elif defined(STRING_SPLASH_LINE1) || defined(STRING_SPLASH_LINE2) + #error "STRING_SPLASH_LINE[12] are now obsolete. Please remove them." +#elif defined(Z_PROBE_ALLEN_KEY_DEPLOY_1_X) || defined(Z_PROBE_ALLEN_KEY_STOW_1_X) + #error "Z_PROBE_ALLEN_KEY_(DEPLOY|STOW) coordinates are now a single setting." +#elif defined(X_PROBE_OFFSET_FROM_EXTRUDER) || defined(Y_PROBE_OFFSET_FROM_EXTRUDER) || defined(Z_PROBE_OFFSET_FROM_EXTRUDER) + #error "[XYZ]_PROBE_OFFSET_FROM_EXTRUDER is now NOZZLE_TO_PROBE_OFFSET." +#elif defined(MIN_PROBE_X) || defined(MIN_PROBE_Y) || defined(MAX_PROBE_X) || defined(MAX_PROBE_Y) + #error "(MIN|MAX)_PROBE_[XY] are now calculated at runtime. Please remove them." +#elif defined(Z_STEPPER_ALIGN_X) || defined(Z_STEPPER_ALIGN_X) + #error "Z_STEPPER_ALIGN_X and Z_STEPPER_ALIGN_Y are now combined as Z_STEPPER_ALIGN_XY." +#elif defined(JUNCTION_DEVIATION) + #error "JUNCTION_DEVIATION is no longer required. (See CLASSIC_JERK). Please remove it." +#elif defined(BABYSTEP_MULTIPLICATOR) + #error "BABYSTEP_MULTIPLICATOR is now BABYSTEP_MULTIPLICATOR_[XY|Z]." +#elif defined(LULZBOT_TOUCH_UI) + #error "LULZBOT_TOUCH_UI is now TOUCH_UI_FTDI_EVE." +#elif defined(PS_DEFAULT_OFF) + #error "PS_DEFAULT_OFF is now PSU_DEFAULT_OFF." +#elif defined(FILAMENT_UNLOAD_RETRACT_LENGTH) + #error "FILAMENT_UNLOAD_RETRACT_LENGTH is now FILAMENT_UNLOAD_PURGE_RETRACT." +#elif defined(FILAMENT_UNLOAD_DELAY) + #error "FILAMENT_UNLOAD_DELAY is now FILAMENT_UNLOAD_PURGE_DELAY." +#elif defined(HOME_USING_SPREADCYCLE) + #error "HOME_USING_SPREADCYCLE is now obsolete. Please remove it." +#elif defined(DGUS_LCD) + #error "DGUS_LCD is now DGUS_LCD_UI ORIGIN|FYSETC|HIPRECY)." +#elif defined(DGUS_SERIAL_PORT) + #error "DGUS_SERIAL_PORT is now LCD_SERIAL_PORT." +#elif defined(DGUS_BAUDRATE) + #error "DGUS_BAUDRATE is now LCD_BAUDRATE." +#elif defined(DGUS_STATS_RX_BUFFER_OVERRUNS) + #error "DGUS_STATS_RX_BUFFER_OVERRUNS is now STATS_RX_BUFFER_OVERRUNS." +#elif defined(ANYCUBIC_LCD_SERIAL_PORT) + #error "ANYCUBIC_LCD_SERIAL_PORT is now LCD_SERIAL_PORT." +#elif defined(INTERNAL_SERIAL_PORT) + #error "INTERNAL_SERIAL_PORT is now MMU2_SERIAL_PORT." +#elif defined(X_DUAL_ENDSTOPS_ADJUSTMENT) || defined(Y_DUAL_ENDSTOPS_ADJUSTMENT) || defined(Z_DUAL_ENDSTOPS_ADJUSTMENT) + #error "[XYZ]_DUAL_ENDSTOPS_ADJUSTMENT is now [XYZ]2_ENDSTOP_ADJUSTMENT." +#elif defined(Z_TRIPLE_ENDSTOPS_ADJUSTMENT2) || defined(Z_TRIPLE_ENDSTOPS_ADJUSTMENT3) + #error "Z_TRIPLE_ENDSTOPS_ADJUSTMENT[23] is now Z[23]_ENDSTOP_ADJUSTMENT." +#elif defined(Z_QUAD_ENDSTOPS_ADJUSTMENT2) || defined(Z_QUAD_ENDSTOPS_ADJUSTMENT3) || defined(Z_QUAD_ENDSTOPS_ADJUSTMENT4) + #error "Z_QUAD_ENDSTOPS_ADJUSTMENT[234] is now Z[234]_ENDSTOP_ADJUSTMENT." +#elif defined(Z_DUAL_STEPPER_DRIVERS) + #error "Z_DUAL_STEPPER_DRIVERS is no longer needed and should be removed." +#elif defined(Z_TRIPLE_STEPPER_DRIVERS) + #error "Z_TRIPLE_STEPPER_DRIVERS is no longer needed and should be removed." +#elif defined(Z_QUAD_STEPPER_DRIVERS) + #error "Z_QUAD_STEPPER_DRIVERS is no longer needed and should be removed." +#elif defined(Z_DUAL_ENDSTOPS) || defined(Z_TRIPLE_ENDSTOPS) || defined(Z_QUAD_ENDSTOPS) + #error "Z_(DUAL|TRIPLE|QUAD)_ENDSTOPS is now Z_MULTI_ENDSTOPS." +#elif defined(DUGS_UI_MOVE_DIS_OPTION) + #error "DUGS_UI_MOVE_DIS_OPTION is spelled DGUS_UI_MOVE_DIS_OPTION." +#elif defined(ORIG_E0_AUTO_FAN_PIN) || defined(ORIG_E1_AUTO_FAN_PIN) || defined(ORIG_E2_AUTO_FAN_PIN) || defined(ORIG_E3_AUTO_FAN_PIN) || defined(ORIG_E4_AUTO_FAN_PIN) || defined(ORIG_E5_AUTO_FAN_PIN) || defined(ORIG_E6_AUTO_FAN_PIN) || defined(ORIG_E7_AUTO_FAN_PIN) + #error "ORIG_Ex_AUTO_FAN_PIN is now just Ex_AUTO_FAN_PIN." +#elif defined(ORIG_CHAMBER_AUTO_FAN_PIN) + #error "ORIG_CHAMBER_AUTO_FAN_PIN is now just CHAMBER_AUTO_FAN_PIN." +#elif defined(HOMING_BACKOFF_MM) + #error "HOMING_BACKOFF_MM is now HOMING_BACKOFF_POST_MM." +#elif defined(X_HOME_BUMP_MM) || defined(Y_HOME_BUMP_MM) || defined(Z_HOME_BUMP_MM) + #error "[XYZ]_HOME_BUMP_MM is now HOMING_BUMP_MM." +#elif defined(DIGIPOT_I2C) + #error "DIGIPOT_I2C is now DIGIPOT_MCP4451 (or DIGIPOT_MCP4018)." +#elif defined(TOUCH_BUTTONS) + #error "TOUCH_BUTTONS is now TOUCH_SCREEN." +#elif defined(LCD_FULL_PIXEL_HEIGHT) || defined(LCD_FULL_PIXEL_WIDTH) + #error "LCD_FULL_PIXEL_(WIDTH|HEIGHT) is deprecated and should be removed." +#elif defined(FSMC_UPSCALE) + #error "FSMC_UPSCALE is now GRAPHICAL_TFT_UPSCALE." +#elif defined(ANYCUBIC_TFT_MODEL) + #error "ANYCUBIC_TFT_MODEL is now ANYCUBIC_LCD_I3MEGA." +#elif defined(EVENT_GCODE_SD_STOP) + #error "EVENT_GCODE_SD_STOP is now EVENT_GCODE_SD_ABORT." +#elif defined(GRAPHICAL_TFT_ROTATE_180) + #error "GRAPHICAL_TFT_ROTATE_180 is now TFT_ROTATION set to TFT_ROTATE_180." +#elif defined(PROBE_OFFSET_START) + #error "PROBE_OFFSET_START is now PROBE_OFFSET_WIZARD_START_Z." +#elif defined(POWER_LOSS_PULL) + #error "POWER_LOSS_PULL is now specifically POWER_LOSS_PULL(UP|DOWN)." +#elif defined(SHORT_MANUAL_Z_MOVE) + #error "SHORT_MANUAL_Z_MOVE is now FINE_MANUAL_MOVE, applying to Z on most printers." +#elif defined(FIL_RUNOUT_INVERTING) + #if FIL_RUNOUT_INVERTING + #error "FIL_RUNOUT_INVERTING true is now FIL_RUNOUT_STATE HIGH." + #else + #error "FIL_RUNOUT_INVERTING false is now FIL_RUNOUT_STATE LOW." + #endif +#elif defined(ASSISTED_TRAMMING_MENU_ITEM) + #error "ASSISTED_TRAMMING_MENU_ITEM is deprecated and should be removed." +#elif defined(UNKNOWN_Z_NO_RAISE) + #error "UNKNOWN_Z_NO_RAISE is replaced by setting Z_IDLE_HEIGHT to Z_MAX_POS." +#elif defined(Z_AFTER_DEACTIVATE) + #error "Z_AFTER_DEACTIVATE is replaced by Z_IDLE_HEIGHT." +#elif defined(MEATPACK) + #error "MEATPACK is now enabled with MEATPACK_ON_SERIAL_PORT_1, MEATPACK_ON_SERIAL_PORT_2, etc." +#elif defined(CUSTOM_USER_MENUS) + #error "CUSTOM_USER_MENUS has been replaced by CUSTOM_MENU_MAIN and CUSTOM_MENU_CONFIG." +#elif defined(MKS_LCD12864) + #error "MKS_LCD12864 is now MKS_LCD12864A or MKS_LCD12864B." +#elif defined(DOGM_SD_PERCENT) + #error "DOGM_SD_PERCENT is now SHOW_PROGRESS_PERCENT." +#elif defined(NEOPIXEL_BKGD_LED_INDEX) + #error "NEOPIXEL_BKGD_LED_INDEX is now NEOPIXEL_BKGD_INDEX_FIRST." +#elif defined(TEMP_SENSOR_1_AS_REDUNDANT) + #error "TEMP_SENSOR_1_AS_REDUNDANT is now TEMP_SENSOR_REDUNDANT, with associated TEMP_SENSOR_REDUNDANT_* config." +#elif defined(MAX_REDUNDANT_TEMP_SENSOR_DIFF) + #error "MAX_REDUNDANT_TEMP_SENSOR_DIFF is now TEMP_SENSOR_REDUNDANT_MAX_DIFF" +#elif defined(LCD_ALEPHOBJECTS_CLCD_UI) + #error "LCD_ALEPHOBJECTS_CLCD_UI is now LCD_LULZBOT_CLCD_UI." +#elif defined(MIN_ARC_SEGMENTS) + #error "MIN_ARC_SEGMENTS is now MIN_CIRCLE_SEGMENTS." +#elif defined(ARC_SEGMENTS_PER_R) + #error "ARC_SUPPORT no longer uses ARC_SEGMENTS_PER_R." +#elif ENABLED(ARC_SUPPORT) && (!defined(MIN_ARC_SEGMENT_MM) || !defined(MAX_ARC_SEGMENT_MM)) + #error "ARC_SUPPORT now requires MIN_ARC_SEGMENT_MM and MAX_ARC_SEGMENT_MM." +#elif defined(LASER_POWER_INLINE) + #error "LASER_POWER_INLINE is obsolete." +#elif defined(SPINDLE_LASER_PWM) + #error "SPINDLE_LASER_PWM (true) is now set with SPINDLE_LASER_USE_PWM (enabled)." +#elif ANY(IS_RAMPS_EEB, IS_RAMPS_EEF, IS_RAMPS_EFB, IS_RAMPS_EFF, IS_RAMPS_SF) + #error "The IS_RAMPS_* conditionals (for heater/fan/bed pins) are now called FET_ORDER_*." +#elif defined(PROBE_TEMP_COMPENSATION) + #error "PROBE_TEMP_COMPENSATION is now set using the PTC_PROBE, PTC_BED, PTC_HOTEND options." +#elif defined(BTC_PROBE_TEMP) + #error "BTC_PROBE_TEMP is now PTC_PROBE_TEMP." +#elif defined(LCD_SCREEN_ROT_90) + #error "LCD_SCREEN_ROT_90 is now LCD_SCREEN_ROTATE with a value of 90." +#elif defined(LCD_SCREEN_ROT_180) + #error "LCD_SCREEN_ROT_180 is now LCD_SCREEN_ROTATE with a value of 180." +#elif defined(LCD_SCREEN_ROT_270) + #error "LCD_SCREEN_ROT_270 is now LCD_SCREEN_ROTATE with a value of 270." +#elif defined(DEFAULT_LCD_BRIGHTNESS) + #error "DEFAULT_LCD_BRIGHTNESS is now LCD_BRIGHTNESS_DEFAULT." +#elif defined(NOZZLE_PARK_X_ONLY) + #error "NOZZLE_PARK_X_ONLY is now NOZZLE_PARK_MOVE 1." +#elif defined(NOZZLE_PARK_Y_ONLY) + #error "NOZZLE_PARK_Y_ONLY is now NOZZLE_PARK_MOVE 2." +#elif defined(Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS) + #error "Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS is now just Z_STEPPER_ALIGN_STEPPER_XY." +#elif defined(DWIN_CREALITY_LCD_ENHANCED) + #error "DWIN_CREALITY_LCD_ENHANCED is now DWIN_LCD_PROUI." +#elif defined(LINEAR_AXES) + #error "LINEAR_AXES is now NUM_AXES (to account for rotational axes)." +#elif defined(X_DUAL_STEPPER_DRIVERS) + #error "X_DUAL_STEPPER_DRIVERS is no longer needed and should be removed." +#elif defined(Y_DUAL_STEPPER_DRIVERS) + #error "Y_DUAL_STEPPER_DRIVERS is no longer needed and should be removed." +#elif defined(NUM_Z_STEPPER_DRIVERS) + #error "NUM_Z_STEPPER_DRIVERS is no longer needed and should be removed." +#elif defined(LEVEL_BED_CORNERS) + #error "LEVEL_BED_CORNERS is now LCD_BED_TRAMMING." +#elif defined(LEVEL_CORNERS_INSET_LFRB) || defined(LEVEL_CORNERS_HEIGHT) || defined(LEVEL_CORNERS_Z_HOP) || defined(LEVEL_CORNERS_USE_PROBE) || defined(LEVEL_CORNERS_PROBE_TOLERANCE) || defined(LEVEL_CORNERS_VERIFY_RAISED) || defined(LEVEL_CORNERS_AUDIO_FEEDBACK) + #error "LEVEL_CORNERS_* settings have been renamed BED_TRAMMING_*." +#elif defined(LEVEL_CENTER_TOO) + #error "LEVEL_CENTER_TOO is now BED_TRAMMING_INCLUDE_CENTER." +#elif defined(TOUCH_IDLE_SLEEP) + #error "TOUCH_IDLE_SLEEP (seconds) is now TOUCH_IDLE_SLEEP_MINS (minutes)." +#elif defined(LCD_BACKLIGHT_TIMEOUT) + #error "LCD_BACKLIGHT_TIMEOUT (seconds) is now LCD_BACKLIGHT_TIMEOUT_MINS (minutes)." +#elif defined(LCD_SET_PROGRESS_MANUALLY) + #error "LCD_SET_PROGRESS_MANUALLY is now SET_PROGRESS_MANUALLY." +#elif defined(USE_M73_REMAINING_TIME) + #error "USE_M73_REMAINING_TIME is now SET_REMAINING_TIME." +#elif defined(SHOW_SD_PERCENT) + #error "SHOW_SD_PERCENT is now SHOW_PROGRESS_PERCENT." +#elif defined(LIN_ADVANCE_K) + #error "LIN_ADVANCE_K is now ADVANCE_K." +#elif defined(EXTRA_LIN_ADVANCE_K) + #error "EXTRA_LIN_ADVANCE_K is now ADVANCE_K_EXTRA." +#elif defined(POLAR_SEGMENTS_PER_SECOND) || defined(DELTA_SEGMENTS_PER_SECOND) || defined(SCARA_SEGMENTS_PER_SECOND) || defined(TPARA_SEGMENTS_PER_SECOND) + #error "(POLAR|DELTA|SCARA|TPARA)_SEGMENTS_PER_SECOND is now DEFAULT_SEGMENTS_PER_SECOND." +#elif defined(TMC_SW_MOSI) || defined(TMC_SW_MISO) || defined(TMC_SW_SCK) + #error "TMC_SW_(MOSI|MISO|SCK) is now TMC_SPI_(MOSI|MISO|SCK)." +#elif ANY(DGUS_LCD_UI_ORIGIN, DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY, DGUS_LCD_UI_MKS, DGUS_LCD_UI_RELOADED) && !defined(DGUS_LCD_UI) + #error "DGUS_LCD_UI_[TYPE] is now set using DGUS_LCD_UI TYPE." +#elif defined(DELTA_PRINTABLE_RADIUS) + #error "DELTA_PRINTABLE_RADIUS is now PRINTABLE_RADIUS." +#elif defined(SCARA_PRINTABLE_RADIUS) + #error "SCARA_PRINTABLE_RADIUS is now PRINTABLE_RADIUS." +#elif defined(SCARA_FEEDRATE_SCALING) + #error "SCARA_FEEDRATE_SCALING is now FEEDRATE_SCALING." +#elif defined(MILLISECONDS_PREHEAT_TIME) + #error "MILLISECONDS_PREHEAT_TIME is now PREHEAT_TIME_HOTEND_MS." +#elif defined(EXPERIMENTAL_SCURVE) + #error "EXPERIMENTAL_SCURVE is no longer needed and should be removed." +#elif defined(BABYSTEP_ZPROBE_GFX_OVERLAY) + #error "BABYSTEP_ZPROBE_GFX_OVERLAY is now BABYSTEP_GFX_OVERLAY." +#elif defined(DISABLE_INACTIVE_EXTRUDER) + #error "DISABLE_INACTIVE_EXTRUDER is now DISABLE_OTHER_EXTRUDERS." +#elif defined(INVERT_X_STEP_PIN) || defined(INVERT_Y_STEP_PIN) || defined(INVERT_Z_STEP_PIN) || defined(INVERT_I_STEP_PIN) || defined(INVERT_J_STEP_PIN) || defined(INVERT_K_STEP_PIN) || defined(INVERT_U_STEP_PIN) || defined(INVERT_V_STEP_PIN) || defined(INVERT_W_STEP_PIN) || defined(INVERT_E_STEP_PIN) + #error "INVERT_*_STEP_PIN true is now STEP_STATE_* LOW, and INVERT_*_STEP_PIN false is now STEP_STATE_* HIGH." +#elif defined(PROBE_PT_1_X) || defined(PROBE_PT_1_Y) || defined(PROBE_PT_2_X) || defined(PROBE_PT_2_Y) || defined(PROBE_PT_3_X) || defined(PROBE_PT_3_Y) + #error "PROBE_PT_[123]_[XY] is now defined using PROBE_PT_[123] with an array { x, y }." +#elif defined(SQUARE_WAVE_STEPPING) + #error "SQUARE_WAVE_STEPPING is now EDGE_STEPPING." +#elif defined(FAN_PIN) + #error "FAN_PIN is now FAN0_PIN." +#elif defined(X_MIN_ENDSTOP_INVERTING) || defined(Y_MIN_ENDSTOP_INVERTING) || defined(Z_MIN_ENDSTOP_INVERTING) \ + || defined(I_MIN_ENDSTOP_INVERTING) || defined(J_MIN_ENDSTOP_INVERTING) || defined(K_MIN_ENDSTOP_INVERTING) \ + || defined(U_MIN_ENDSTOP_INVERTING) || defined(V_MIN_ENDSTOP_INVERTING) || defined(W_MIN_ENDSTOP_INVERTING) \ + || defined(X_MAX_ENDSTOP_INVERTING) || defined(Y_MAX_ENDSTOP_INVERTING) || defined(Z_MAX_ENDSTOP_INVERTING) \ + || defined(I_MAX_ENDSTOP_INVERTING) || defined(J_MAX_ENDSTOP_INVERTING) || defined(K_MAX_ENDSTOP_INVERTING) \ + || defined(U_MAX_ENDSTOP_INVERTING) || defined(V_MAX_ENDSTOP_INVERTING) || defined(W_MAX_ENDSTOP_INVERTING) \ + || defined(Z_MIN_PROBE_ENDSTOP_INVERTING) + #error "*_ENDSTOP_INVERTING false/true is now set with *_ENDSTOP_HIT_STATE HIGH/LOW." +#elif defined(DISABLE_INACTIVE_X) || defined(DISABLE_INACTIVE_Y) || defined(DISABLE_INACTIVE_Z) \ + || defined(DISABLE_INACTIVE_I) || defined(DISABLE_INACTIVE_J) || defined(DISABLE_INACTIVE_K) \ + || defined(DISABLE_INACTIVE_U) || defined(DISABLE_INACTIVE_V) || defined(DISABLE_INACTIVE_W) || defined(DISABLE_INACTIVE_E) + #error "DISABLE_INACTIVE_[XYZIJKUVWE] is now DISABLE_IDLE_[XYZIJKUVWE]." +#elif defined(DEFAULT_STEPPER_DEACTIVE_TIME) + #error "DEFAULT_STEPPER_DEACTIVE_TIME is now DEFAULT_STEPPER_TIMEOUT_SEC." +#elif defined(TFT_SHARED_SPI) + #error "TFT_SHARED_SPI is now TFT_SHARED_IO." +#elif defined(LCD_PINS_ENABLE) + #error "LCD_PINS_ENABLE is now LCD_PINS_EN." +#endif + +// L64xx stepper drivers have been removed +#define _L6470 0x6470 +#define _L6474 0x6474 +#define _L6480 0x6480 +#define _POWERSTEP01 0xF00D +#if HAS_DRIVER(L6470) + #error "L6470 stepper drivers are no longer supported in Marlin." +#elif HAS_DRIVER(L6474) + #error "L6474 stepper drivers are no longer supported in Marlin." +#elif HAS_DRIVER(L6480) + #error "L6480 stepper drivers are no longer supported in Marlin." +#elif HAS_DRIVER(POWERSTEP01) + #error "POWERSTEP01 stepper drivers are no longer supported in Marlin." +#endif +#undef _L6470 +#undef _L6474 +#undef _L6480 +#undef _POWERSTEP01 diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index de983dd608..30c2613b03 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -683,213 +683,33 @@ */ #if HAS_MAX_TC - // Translate old _SS, _CS, _SCK, _DO, _DI, _MISO, and _MOSI PIN defines. - #if TEMP_SENSOR_IS_MAX_TC(0) || (TEMP_SENSOR_IS_MAX_TC(REDUNDANT) && REDUNDANT_TEMP_MATCH(SOURCE, E1)) - - #if !PIN_EXISTS(TEMP_0_CS) // SS, CS - #if PIN_EXISTS(MAX6675_SS) - #define TEMP_0_CS_PIN MAX6675_SS_PIN - #elif PIN_EXISTS(MAX6675_CS) - #define TEMP_0_CS_PIN MAX6675_CS_PIN - #elif PIN_EXISTS(MAX31855_SS) - #define TEMP_0_CS_PIN MAX31855_SS_PIN - #elif PIN_EXISTS(MAX31855_CS) - #define TEMP_0_CS_PIN MAX31855_CS_PIN - #elif PIN_EXISTS(MAX31865_SS) - #define TEMP_0_CS_PIN MAX31865_SS_PIN - #elif PIN_EXISTS(MAX31865_CS) - #define TEMP_0_CS_PIN MAX31865_CS_PIN - #endif + // Software SPI - enable if MISO/SCK are defined. + #if (TEMP_SENSOR_IS_MAX_TC(0) || (TEMP_SENSOR_IS_MAX_TC(REDUNDANT) && REDUNDANT_TEMP_MATCH(SOURCE, E1))) \ + && PIN_EXISTS(TEMP_0_MISO) && PIN_EXISTS(TEMP_0_SCK) && DISABLED(TEMP_SENSOR_0_FORCE_HW_SPI) + #if TEMP_SENSOR_0_IS_MAX31865 && !PIN_EXISTS(TEMP_0_MOSI) + #error "TEMP_SENSOR_0 MAX31865 requires TEMP_0_MOSI_PIN defined for Software SPI. To use Hardware SPI instead, undefine MISO/SCK or enable TEMP_SENSOR_0_FORCE_HW_SPI." + #else + #define TEMP_SENSOR_0_HAS_SPI_PINS 1 #endif + #endif - #if TEMP_SENSOR_0_IS_MAX6675 - #if !PIN_EXISTS(TEMP_0_MISO) // DO - #if PIN_EXISTS(MAX6675_MISO) - #define TEMP_0_MISO_PIN MAX6675_MISO_PIN - #elif PIN_EXISTS(MAX6675_DO) - #define TEMP_0_MISO_PIN MAX6675_DO_PIN - #endif - #endif - #if !PIN_EXISTS(TEMP_0_SCK) && PIN_EXISTS(MAX6675_SCK) - #define TEMP_0_SCK_PIN MAX6675_SCK_PIN - #endif - - #elif TEMP_SENSOR_0_IS_MAX31855 - #if !PIN_EXISTS(TEMP_0_MISO) // DO - #if PIN_EXISTS(MAX31855_MISO) - #define TEMP_0_MISO_PIN MAX31855_MISO_PIN - #elif PIN_EXISTS(MAX31855_DO) - #define TEMP_0_MISO_PIN MAX31855_DO_PIN - #endif - #endif - #if !PIN_EXISTS(TEMP_0_SCK) && PIN_EXISTS(MAX31855_SCK) - #define TEMP_0_SCK_PIN MAX31855_SCK_PIN - #endif - - #elif TEMP_SENSOR_0_IS_MAX31865 - #if !PIN_EXISTS(TEMP_0_MISO) // DO - #if PIN_EXISTS(MAX31865_MISO) - #define TEMP_0_MISO_PIN MAX31865_MISO_PIN - #elif PIN_EXISTS(MAX31865_DO) - #define TEMP_0_MISO_PIN MAX31865_DO_PIN - #endif - #endif - #if !PIN_EXISTS(TEMP_0_SCK) && PIN_EXISTS(MAX31865_SCK) - #define TEMP_0_SCK_PIN MAX31865_SCK_PIN - #endif - #if !PIN_EXISTS(TEMP_0_MOSI) && PIN_EXISTS(MAX31865_MOSI) // MOSI for '65 only - #define TEMP_0_MOSI_PIN MAX31865_MOSI_PIN - #endif + #if (TEMP_SENSOR_IS_MAX_TC(1) || (TEMP_SENSOR_IS_MAX_TC(REDUNDANT) && REDUNDANT_TEMP_MATCH(SOURCE, E1))) \ + && PIN_EXISTS(TEMP_1_MISO) && PIN_EXISTS(TEMP_1_SCK) && DISABLED(TEMP_SENSOR_1_FORCE_HW_SPI) + #if TEMP_SENSOR_1_IS_MAX31865 && !PIN_EXISTS(TEMP_1_MOSI) + #error "TEMP_SENSOR_1 MAX31865 requires TEMP_1_MOSI_PIN defined for Software SPI. To use Hardware SPI instead, undefine MISO/SCK or enable TEMP_SENSOR_1_FORCE_HW_SPI." + #else + #define TEMP_SENSOR_1_HAS_SPI_PINS 1 #endif + #endif - // Software SPI - enable if MISO/SCK are defined. - #if PIN_EXISTS(TEMP_0_MISO) && PIN_EXISTS(TEMP_0_SCK) && DISABLED(TEMP_SENSOR_0_FORCE_HW_SPI) - #if TEMP_SENSOR_0_IS_MAX31865 && !PIN_EXISTS(TEMP_0_MOSI) - #error "TEMP_SENSOR_0 MAX31865 requires TEMP_0_MOSI_PIN defined for Software SPI. To use Hardware SPI instead, undefine MISO/SCK or enable TEMP_SENSOR_0_FORCE_HW_SPI." - #else - #define TEMP_SENSOR_0_HAS_SPI_PINS 1 - #endif + #if (TEMP_SENSOR_IS_MAX_TC(2) || (TEMP_SENSOR_IS_MAX_TC(REDUNDANT) && REDUNDANT_TEMP_MATCH(SOURCE, E2))) \ + && PIN_EXISTS(TEMP_2_MISO) && PIN_EXISTS(TEMP_2_SCK) && DISABLED(TEMP_SENSOR_2_FORCE_HW_SPI) + #if TEMP_SENSOR_2_IS_MAX31865 && !PIN_EXISTS(TEMP_2_MOSI) + #error "TEMP_SENSOR_2 MAX31865 requires TEMP_2_MOSI_PIN defined for Software SPI. To use Hardware SPI instead, undefine MISO/SCK or enable TEMP_SENSOR_2_FORCE_HW_SPI." + #else + #define TEMP_SENSOR_2_HAS_SPI_PINS 1 #endif - - #endif // TEMP_SENSOR_IS_MAX_TC(0) - - #if TEMP_SENSOR_IS_MAX_TC(1) || (TEMP_SENSOR_IS_MAX_TC(REDUNDANT) && REDUNDANT_TEMP_MATCH(SOURCE, E1)) - - #if !PIN_EXISTS(TEMP_1_CS) // SS2, CS2 - #if PIN_EXISTS(MAX6675_SS2) - #define TEMP_1_CS_PIN MAX6675_SS2_PIN - #elif PIN_EXISTS(MAX6675_CS) - #define TEMP_1_CS_PIN MAX6675_CS2_PIN - #elif PIN_EXISTS(MAX31855_SS2) - #define TEMP_1_CS_PIN MAX31855_SS2_PIN - #elif PIN_EXISTS(MAX31855_CS2) - #define TEMP_1_CS_PIN MAX31855_CS2_PIN - #elif PIN_EXISTS(MAX31865_SS2) - #define TEMP_1_CS_PIN MAX31865_SS2_PIN - #elif PIN_EXISTS(MAX31865_CS2) - #define TEMP_1_CS_PIN MAX31865_CS2_PIN - #endif - #endif - - #if TEMP_SENSOR_1_IS_MAX6675 - #if !PIN_EXISTS(TEMP_1_MISO) // DO - #if PIN_EXISTS(MAX6675_MISO) - #define TEMP_1_MISO_PIN MAX6675_MISO_PIN - #elif PIN_EXISTS(MAX6675_DO) - #define TEMP_1_MISO_PIN MAX6675_DO_PIN - #endif - #endif - #if !PIN_EXISTS(TEMP_1_SCK) && PIN_EXISTS(MAX6675_SCK) - #define TEMP_1_SCK_PIN MAX6675_SCK_PIN - #endif - - #elif TEMP_SENSOR_1_IS_MAX31855 - #if !PIN_EXISTS(TEMP_1_MISO) // DO - #if PIN_EXISTS(MAX31855_MISO) - #define TEMP_1_MISO_PIN MAX31855_MISO_PIN - #elif PIN_EXISTS(MAX31855_DO) - #define TEMP_1_MISO_PIN MAX31855_DO_PIN - #endif - #endif - #if !PIN_EXISTS(TEMP_1_SCK) && PIN_EXISTS(MAX31855_SCK) - #define TEMP_1_SCK_PIN MAX31855_SCK_PIN - #endif - - #elif TEMP_SENSOR_1_IS_MAX31865 - #if !PIN_EXISTS(TEMP_1_MISO) // DO - #if PIN_EXISTS(MAX31865_MISO) - #define TEMP_1_MISO_PIN MAX31865_MISO_PIN - #elif PIN_EXISTS(MAX31865_DO) - #define TEMP_1_MISO_PIN MAX31865_DO_PIN - #endif - #endif - #if !PIN_EXISTS(TEMP_1_SCK) && PIN_EXISTS(MAX31865_SCK) - #define TEMP_1_SCK_PIN MAX31865_SCK_PIN - #endif - #if !PIN_EXISTS(TEMP_1_MOSI) && PIN_EXISTS(MAX31865_MOSI) // MOSI for '65 only - #define TEMP_1_MOSI_PIN MAX31865_MOSI_PIN - #endif - #endif - - // Software SPI - enable if MISO/SCK are defined. - #if PIN_EXISTS(TEMP_1_MISO) && PIN_EXISTS(TEMP_1_SCK) && DISABLED(TEMP_SENSOR_1_FORCE_HW_SPI) - #if TEMP_SENSOR_1_IS_MAX31865 && !PIN_EXISTS(TEMP_1_MOSI) - #error "TEMP_SENSOR_1 MAX31865 requires TEMP_1_MOSI_PIN defined for Software SPI. To use Hardware SPI instead, undefine MISO/SCK or enable TEMP_SENSOR_1_FORCE_HW_SPI." - #else - #define TEMP_SENSOR_1_HAS_SPI_PINS 1 - #endif - #endif - - #endif // TEMP_SENSOR_IS_MAX_TC(1) - - #if TEMP_SENSOR_IS_MAX_TC(2) || (TEMP_SENSOR_IS_MAX_TC(REDUNDANT) && REDUNDANT_TEMP_MATCH(SOURCE, E2)) - - #if !PIN_EXISTS(TEMP_2_CS) // SS3, CS3 - #if PIN_EXISTS(MAX6675_SS3) - #define TEMP_2_CS_PIN MAX6675_SS3_PIN - #elif PIN_EXISTS(MAX6675_CS) - #define TEMP_2_CS_PIN MAX6675_CS3_PIN - #elif PIN_EXISTS(MAX31855_SS3) - #define TEMP_2_CS_PIN MAX31855_SS3_PIN - #elif PIN_EXISTS(MAX31855_CS3) - #define TEMP_2_CS_PIN MAX31855_CS3_PIN - #elif PIN_EXISTS(MAX31865_SS3) - #define TEMP_2_CS_PIN MAX31865_SS3_PIN - #elif PIN_EXISTS(MAX31865_CS3) - #define TEMP_2_CS_PIN MAX31865_CS3_PIN - #endif - #endif - - #if TEMP_SENSOR_2_IS_MAX6675 - #if !PIN_EXISTS(TEMP_2_MISO) // DO - #if PIN_EXISTS(MAX6675_MISO) - #define TEMP_2_MISO_PIN MAX6675_MISO_PIN - #elif PIN_EXISTS(MAX6675_DO) - #define TEMP_2_MISO_PIN MAX6675_DO_PIN - #endif - #endif - #if !PIN_EXISTS(TEMP_2_SCK) && PIN_EXISTS(MAX6675_SCK) - #define TEMP_2_SCK_PIN MAX6675_SCK_PIN - #endif - - #elif TEMP_SENSOR_2_IS_MAX31855 - #if !PIN_EXISTS(TEMP_2_MISO) // DO - #if PIN_EXISTS(MAX31855_MISO) - #define TEMP_2_MISO_PIN MAX31855_MISO_PIN - #elif PIN_EXISTS(MAX31855_DO) - #define TEMP_2_MISO_PIN MAX31855_DO_PIN - #endif - #endif - #if !PIN_EXISTS(TEMP_2_SCK) && PIN_EXISTS(MAX31855_SCK) - #define TEMP_2_SCK_PIN MAX31855_SCK_PIN - #endif - - #elif TEMP_SENSOR_2_IS_MAX31865 - #if !PIN_EXISTS(TEMP_2_MISO) // DO - #if PIN_EXISTS(MAX31865_MISO) - #define TEMP_2_MISO_PIN MAX31865_MISO_PIN - #elif PIN_EXISTS(MAX31865_DO) - #define TEMP_2_MISO_PIN MAX31865_DO_PIN - #endif - #endif - #if !PIN_EXISTS(TEMP_2_SCK) && PIN_EXISTS(MAX31865_SCK) - #define TEMP_2_SCK_PIN MAX31865_SCK_PIN - #endif - #if !PIN_EXISTS(TEMP_2_MOSI) && PIN_EXISTS(MAX31865_MOSI) // MOSI for '65 only - #define TEMP_2_MOSI_PIN MAX31865_MOSI_PIN - #endif - #endif - - // Software SPI - enable if MISO/SCK are defined. - #if PIN_EXISTS(TEMP_2_MISO) && PIN_EXISTS(TEMP_2_SCK) && DISABLED(TEMP_SENSOR_2_FORCE_HW_SPI) - #if TEMP_SENSOR_2_IS_MAX31865 && !PIN_EXISTS(TEMP_2_MOSI) - #error "TEMP_SENSOR_2 MAX31865 requires TEMP_2_MOSI_PIN defined for Software SPI. To use Hardware SPI instead, undefine MISO/SCK or enable TEMP_SENSOR_2_FORCE_HW_SPI." - #else - #define TEMP_SENSOR_2_HAS_SPI_PINS 1 - #endif - #endif - - #endif // TEMP_SENSOR_IS_MAX_TC(2) + #endif // // User-defined thermocouple libraries diff --git a/Marlin/src/inc/MarlinConfig.h b/Marlin/src/inc/MarlinConfig.h index 8fdb4b9bae..ad11cc67b2 100644 --- a/Marlin/src/inc/MarlinConfig.h +++ b/Marlin/src/inc/MarlinConfig.h @@ -46,6 +46,7 @@ #include "../core/types.h" // Ahead of sanity-checks + #include "Changes.h" #include "SanityCheck.h" #include HAL_PATH(../HAL, inc/SanityCheck.h) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 40e76b6149..f496a4e880 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -89,643 +89,28 @@ */ #ifndef MOTHERBOARD #error "MOTHERBOARD is required. You must '#define MOTHERBOARD BOARD_MYNAME' (not just '#define BOARD_MYNAME')." -#elif !defined(X_BED_SIZE) || !defined(Y_BED_SIZE) - #error "X_BED_SIZE and Y_BED_SIZE are now required!" -#elif WATCH_TEMP_PERIOD > 500 - #error "WATCH_TEMP_PERIOD now uses seconds instead of milliseconds." -#elif DISABLED(THERMAL_PROTECTION_HOTENDS) && (defined(WATCH_TEMP_PERIOD) || defined(THERMAL_PROTECTION_PERIOD)) - #error "Thermal Runaway Protection for hotends is now enabled with THERMAL_PROTECTION_HOTENDS." -#elif DISABLED(THERMAL_PROTECTION_BED) && defined(THERMAL_PROTECTION_BED_PERIOD) - #error "Thermal Runaway Protection for the bed is now enabled with THERMAL_PROTECTION_BED." -#elif defined(NO_FAN_SLOWING_IN_PID_TUNING) - #error "NO_FAN_SLOWING_IN_PID_TUNING is now TEMP_TUNING_MAINTAIN_FAN." -#elif (CORE_IS_XZ || CORE_IS_YZ) && ENABLED(Z_LATE_ENABLE) - #error "Z_LATE_ENABLE can't be used with COREXZ, COREZX, COREYZ, or COREZY." -#elif defined(X_HOME_RETRACT_MM) - #error "[XYZ]_HOME_RETRACT_MM settings have been renamed [XYZ]_HOME_BUMP_MM." -#elif defined(SDCARDDETECTINVERTED) - #error "SDCARDDETECTINVERTED is now SD_DETECT_STATE (HIGH)." -#elif defined(SD_DETECT_INVERTED) - #error "SD_DETECT_INVERTED is now SD_DETECT_STATE (HIGH)." -#elif defined(BTENABLED) - #error "BTENABLED is now BLUETOOTH." -#elif defined(CUSTOM_MENDEL_NAME) - #error "CUSTOM_MENDEL_NAME is now CUSTOM_MACHINE_NAME." -#elif defined(HAS_AUTOMATIC_VERSIONING) - #error "HAS_AUTOMATIC_VERSIONING is now CUSTOM_VERSION_FILE." -#elif defined(USE_AUTOMATIC_VERSIONING) - #error "USE_AUTOMATIC_VERSIONING is now CUSTOM_VERSION_FILE." -#elif defined(SDSLOW) - #error "SDSLOW deprecated. Set SD_SPI_SPEED to SPI_HALF_SPEED instead." -#elif defined(SDEXTRASLOW) - #error "SDEXTRASLOW deprecated. Set SD_SPI_SPEED to SPI_QUARTER_SPEED instead." -#elif defined(FILAMENT_SENSOR) - #error "FILAMENT_SENSOR is now FILAMENT_WIDTH_SENSOR." -#elif defined(ENDSTOPPULLUP_FIL_RUNOUT) - #error "ENDSTOPPULLUP_FIL_RUNOUT is now FIL_RUNOUT_PULLUP." -#elif defined(DISABLE_MAX_ENDSTOPS) || defined(DISABLE_MIN_ENDSTOPS) - #error "DISABLE_MAX_ENDSTOPS and DISABLE_MIN_ENDSTOPS deprecated. Use individual USE_*_PLUG options instead." -#elif defined(LANGUAGE_INCLUDE) - #error "LANGUAGE_INCLUDE has been replaced by LCD_LANGUAGE." -#elif defined(EXTRUDER_OFFSET_X) || defined(EXTRUDER_OFFSET_Y) - #error "EXTRUDER_OFFSET_[XY] is deprecated. Use HOTEND_OFFSET_[XY] instead." -#elif defined(PID_PARAMS_PER_EXTRUDER) - #error "PID_PARAMS_PER_EXTRUDER is deprecated. Use PID_PARAMS_PER_HOTEND instead." -#elif defined(EXTRUDER_WATTS) || defined(BED_WATTS) - #error "EXTRUDER_WATTS and BED_WATTS are deprecated and should be removed." -#elif defined(SERVO_ENDSTOP_ANGLES) - #error "SERVO_ENDSTOP_ANGLES is deprecated. Use Z_SERVO_ANGLES instead." -#elif defined(X_ENDSTOP_SERVO_NR) || defined(Y_ENDSTOP_SERVO_NR) - #error "X_ENDSTOP_SERVO_NR and Y_ENDSTOP_SERVO_NR are deprecated and should be removed." -#elif defined(Z_ENDSTOP_SERVO_NR) - #error "Z_ENDSTOP_SERVO_NR is now Z_PROBE_SERVO_NR." -#elif defined(DEFAULT_XYJERK) - #error "DEFAULT_XYJERK is deprecated. Use DEFAULT_XJERK and DEFAULT_YJERK instead." -#elif defined(XY_TRAVEL_SPEED) - #error "XY_TRAVEL_SPEED is now XY_PROBE_FEEDRATE." -#elif defined(XY_PROBE_SPEED) - #error "XY_PROBE_SPEED is now XY_PROBE_FEEDRATE." -#elif defined(Z_PROBE_SPEED_FAST) - #error "Z_PROBE_SPEED_FAST is now Z_PROBE_FEEDRATE_FAST." -#elif defined(Z_PROBE_SPEED_SLOW) - #error "Z_PROBE_SPEED_SLOW is now Z_PROBE_FEEDRATE_SLOW." -#elif defined(PROBE_SERVO_DEACTIVATION_DELAY) - #error "PROBE_SERVO_DEACTIVATION_DELAY is deprecated. Use DEACTIVATE_SERVOS_AFTER_MOVE instead." -#elif defined(SERVO_DEACTIVATION_DELAY) - #error "SERVO_DEACTIVATION_DELAY is now SERVO_DELAY." -#elif ENABLED(FILAMENTCHANGEENABLE) - #error "FILAMENTCHANGEENABLE is now ADVANCED_PAUSE_FEATURE." -#elif ENABLED(FILAMENT_CHANGE_FEATURE) - #error "FILAMENT_CHANGE_FEATURE is now ADVANCED_PAUSE_FEATURE." -#elif defined(FILAMENT_CHANGE_X_POS) || defined(FILAMENT_CHANGE_Y_POS) - #error "FILAMENT_CHANGE_[XY]_POS is now set with NOZZLE_PARK_POINT." -#elif defined(FILAMENT_CHANGE_Z_ADD) - #error "FILAMENT_CHANGE_Z_ADD is now set with NOZZLE_PARK_POINT." -#elif defined(FILAMENT_CHANGE_XY_FEEDRATE) - #error "FILAMENT_CHANGE_XY_FEEDRATE is now NOZZLE_PARK_XY_FEEDRATE." -#elif defined(FILAMENT_CHANGE_Z_FEEDRATE) - #error "FILAMENT_CHANGE_Z_FEEDRATE is now NOZZLE_PARK_Z_FEEDRATE." -#elif defined(PAUSE_PARK_X_POS) || defined(PAUSE_PARK_Y_POS) - #error "PAUSE_PARK_[XY]_POS is now set with NOZZLE_PARK_POINT." -#elif defined(PAUSE_PARK_Z_ADD) - #error "PAUSE_PARK_Z_ADD is now set with NOZZLE_PARK_POINT." -#elif defined(PAUSE_PARK_XY_FEEDRATE) - #error "PAUSE_PARK_XY_FEEDRATE is now NOZZLE_PARK_XY_FEEDRATE." -#elif defined(PAUSE_PARK_Z_FEEDRATE) - #error "PAUSE_PARK_Z_FEEDRATE is now NOZZLE_PARK_Z_FEEDRATE." -#elif defined(FILAMENT_CHANGE_RETRACT_FEEDRATE) - #error "FILAMENT_CHANGE_RETRACT_FEEDRATE is now PAUSE_PARK_RETRACT_FEEDRATE." -#elif defined(FILAMENT_CHANGE_RETRACT_LENGTH) - #error "FILAMENT_CHANGE_RETRACT_LENGTH is now PAUSE_PARK_RETRACT_LENGTH." -#elif defined(FILAMENT_CHANGE_EXTRUDE_FEEDRATE) - #error "FILAMENT_CHANGE_EXTRUDE_FEEDRATE is now ADVANCED_PAUSE_PURGE_FEEDRATE." -#elif defined(ADVANCED_PAUSE_EXTRUDE_FEEDRATE) - #error "ADVANCED_PAUSE_EXTRUDE_FEEDRATE is now ADVANCED_PAUSE_PURGE_FEEDRATE." -#elif defined(FILAMENT_CHANGE_EXTRUDE_LENGTH) - #error "FILAMENT_CHANGE_EXTRUDE_LENGTH is now ADVANCED_PAUSE_PURGE_LENGTH." -#elif defined(ADVANCED_PAUSE_EXTRUDE_LENGTH) - #error "ADVANCED_PAUSE_EXTRUDE_LENGTH is now ADVANCED_PAUSE_PURGE_LENGTH." -#elif defined(FILAMENT_CHANGE_NOZZLE_TIMEOUT) - #error "FILAMENT_CHANGE_NOZZLE_TIMEOUT is now PAUSE_PARK_NOZZLE_TIMEOUT." -#elif defined(FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS) - #error "FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS is now FILAMENT_CHANGE_ALERT_BEEPS." -#elif defined(FILAMENT_CHANGE_NO_STEPPER_TIMEOUT) - #error "FILAMENT_CHANGE_NO_STEPPER_TIMEOUT is now PAUSE_PARK_NO_STEPPER_TIMEOUT." -#elif defined(PLA_PREHEAT_HOTEND_TEMP) - #error "PLA_PREHEAT_HOTEND_TEMP is now PREHEAT_1_TEMP_HOTEND." -#elif defined(PLA_PREHEAT_HPB_TEMP) - #error "PLA_PREHEAT_HPB_TEMP is now PREHEAT_1_TEMP_BED." -#elif defined(PLA_PREHEAT_FAN_SPEED) - #error "PLA_PREHEAT_FAN_SPEED is now PREHEAT_1_FAN_SPEED." -#elif defined(ABS_PREHEAT_HOTEND_TEMP) - #error "ABS_PREHEAT_HOTEND_TEMP is now PREHEAT_2_TEMP_HOTEND." -#elif defined(ABS_PREHEAT_HPB_TEMP) - #error "ABS_PREHEAT_HPB_TEMP is now PREHEAT_2_TEMP_BED." -#elif defined(ABS_PREHEAT_FAN_SPEED) - #error "ABS_PREHEAT_FAN_SPEED is now PREHEAT_2_FAN_SPEED." -#elif defined(ENDSTOPS_ONLY_FOR_HOMING) - #error "ENDSTOPS_ONLY_FOR_HOMING is deprecated. Use (disable) ENDSTOPS_ALWAYS_ON_DEFAULT instead." -#elif defined(HOMING_FEEDRATE) - #error "HOMING_FEEDRATE is now set using the HOMING_FEEDRATE_MM_M array instead." -#elif (defined(HOMING_FEEDRATE_XY) || defined(HOMING_FEEDRATE_Z)) && !defined(HOMING_FEEDRATE_MM_M) - #error "HOMING_FEEDRATE_XY and HOMING_FEEDRATE_Z are now set using the HOMING_FEEDRATE_MM_M array instead." -#elif defined(MANUAL_HOME_POSITIONS) - #error "MANUAL_HOME_POSITIONS is deprecated. Set MANUAL_[XYZ]_HOME_POS as-needed instead." -#elif defined(PID_ADD_EXTRUSION_RATE) - #error "PID_ADD_EXTRUSION_RATE is now PID_EXTRUSION_SCALING and is DISABLED by default." -#elif defined(Z_RAISE_BEFORE_HOMING) - #error "Z_RAISE_BEFORE_HOMING is now Z_CLEARANCE_FOR_HOMING." -#elif defined(MIN_Z_HEIGHT_FOR_HOMING) - #error "MIN_Z_HEIGHT_FOR_HOMING is now Z_CLEARANCE_FOR_HOMING." -#elif defined(Z_HOMING_HEIGHT) - #error "Z_HOMING_HEIGHT is now Z_CLEARANCE_FOR_HOMING." -#elif defined(Z_RAISE_BEFORE_PROBING) || defined(Z_RAISE_AFTER_PROBING) - #error "Z_RAISE_(BEFORE|AFTER)_PROBING are deprecated. Use Z_CLEARANCE_DEPLOY_PROBE and Z_AFTER_PROBING instead." -#elif defined(Z_RAISE_PROBE_DEPLOY_STOW) || defined(Z_RAISE_BETWEEN_PROBINGS) - #error "Z_RAISE_PROBE_DEPLOY_STOW and Z_RAISE_BETWEEN_PROBINGS are now Z_CLEARANCE_DEPLOY_PROBE and Z_CLEARANCE_BETWEEN_PROBES." -#elif defined(Z_PROBE_DEPLOY_HEIGHT) || defined(Z_PROBE_TRAVEL_HEIGHT) - #error "Z_PROBE_DEPLOY_HEIGHT and Z_PROBE_TRAVEL_HEIGHT are now Z_CLEARANCE_DEPLOY_PROBE and Z_CLEARANCE_BETWEEN_PROBES." -#elif defined(MANUAL_BED_LEVELING) - #error "MANUAL_BED_LEVELING is now LCD_BED_LEVELING." -#elif defined(MESH_HOME_SEARCH_Z) - #error "MESH_HOME_SEARCH_Z is now LCD_PROBE_Z_RANGE." -#elif defined(MANUAL_PROBE_Z_RANGE) - #error "MANUAL_PROBE_Z_RANGE is now LCD_PROBE_Z_RANGE." -#elif !defined(MIN_STEPS_PER_SEGMENT) - #error "Please replace 'const int dropsegments' with '#define MIN_STEPS_PER_SEGMENT' (and increase by 1)." -#elif MIN_STEPS_PER_SEGMENT <= 0 - #error "MIN_STEPS_PER_SEGMENT must be at least 1." -#elif defined(PREVENT_DANGEROUS_EXTRUDE) - #error "PREVENT_DANGEROUS_EXTRUDE is now PREVENT_COLD_EXTRUSION." -#elif defined(SCARA) - #error "SCARA is now MORGAN_SCARA." -#elif defined(ENABLE_AUTO_BED_LEVELING) - #error "ENABLE_AUTO_BED_LEVELING is deprecated. Specify AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR, or AUTO_BED_LEVELING_3POINT." -#elif defined(AUTO_BED_LEVELING_FEATURE) - #error "AUTO_BED_LEVELING_FEATURE is deprecated. Specify AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR, or AUTO_BED_LEVELING_3POINT." -#elif defined(ABL_GRID_POINTS) - #error "ABL_GRID_POINTS is now GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y." -#elif defined(ABL_GRID_POINTS_X) || defined(ABL_GRID_POINTS_Y) - #error "ABL_GRID_POINTS_[XY] is now GRID_MAX_POINTS_[XY]." -#elif defined(ABL_GRID_MAX_POINTS_X) || defined(ABL_GRID_MAX_POINTS_Y) - #error "ABL_GRID_MAX_POINTS_[XY] is now GRID_MAX_POINTS_[XY]." -#elif defined(MESH_NUM_X_POINTS) || defined(MESH_NUM_Y_POINTS) - #error "MESH_NUM_[XY]_POINTS is now GRID_MAX_POINTS_[XY]." -#elif defined(UBL_MESH_NUM_X_POINTS) || defined(UBL_MESH_NUM_Y_POINTS) - #error "UBL_MESH_NUM_[XY]_POINTS is now GRID_MAX_POINTS_[XY]." -#elif defined(UBL_G26_MESH_VALIDATION) - #error "UBL_G26_MESH_VALIDATION is now G26_MESH_VALIDATION." -#elif defined(UBL_MESH_EDIT_ENABLED) - #error "UBL_MESH_EDIT_ENABLED is now G26_MESH_VALIDATION." -#elif defined(UBL_MESH_EDITING) - #error "UBL_MESH_EDITING is now G26_MESH_VALIDATION." -#elif defined(BLTOUCH_HEATERS_OFF) - #error "BLTOUCH_HEATERS_OFF is now PROBING_HEATERS_OFF." -#elif defined(BLTOUCH_V3) - #error "BLTOUCH_V3 is obsolete." -#elif defined(BLTOUCH_FORCE_OPEN_DRAIN_MODE) - #error "BLTOUCH_FORCE_OPEN_DRAIN_MODE is obsolete." -#elif defined(BEEPER) - #error "BEEPER is now BEEPER_PIN." -#elif defined(SDCARDDETECT) - #error "SDCARDDETECT is now SD_DETECT_PIN." -#elif defined(STAT_LED_RED) || defined(STAT_LED_BLUE) - #error "STAT_LED_RED/STAT_LED_BLUE are now STAT_LED_RED_PIN/STAT_LED_BLUE_PIN." -#elif defined(LCD_PIN_BL) - #error "LCD_PIN_BL is now LCD_BACKLIGHT_PIN." -#elif defined(LCD_PIN_RESET) - #error "LCD_PIN_RESET is now LCD_RESET_PIN." -#elif defined(EXTRUDER_0_AUTO_FAN_PIN) || defined(EXTRUDER_1_AUTO_FAN_PIN) || defined(EXTRUDER_2_AUTO_FAN_PIN) || defined(EXTRUDER_3_AUTO_FAN_PIN) - #error "EXTRUDER_[0123]_AUTO_FAN_PIN is now E[0123]_AUTO_FAN_PIN." -#elif defined(PID_FAN_SCALING) && !HAS_FAN - #error "PID_FAN_SCALING needs at least one fan enabled." -#elif defined(min_software_endstops) || defined(max_software_endstops) - #error "(min|max)_software_endstops are now (MIN|MAX)_SOFTWARE_ENDSTOPS." -#elif ENABLED(Z_PROBE_SLED) && defined(SLED_PIN) - #error "Replace SLED_PIN with SOL1_PIN (applies to both Z_PROBE_SLED and SOLENOID_PROBE)." -#elif defined(CONTROLLERFAN_PIN) - #error "CONTROLLERFAN_PIN is now CONTROLLER_FAN_PIN, enabled with USE_CONTROLLER_FAN." -#elif defined(CONTROLLERFAN_SPEED) - #error "CONTROLLERFAN_SPEED is now CONTROLLERFAN_SPEED_ACTIVE." -#elif defined(CONTROLLERFAN_SECS) - #error "CONTROLLERFAN_SECS is now CONTROLLERFAN_IDLE_TIME." -#elif defined(MIN_RETRACT) - #error "MIN_RETRACT is now MIN_AUTORETRACT and MAX_AUTORETRACT." -#elif defined(ADVANCE) - #error "ADVANCE is now LIN_ADVANCE." -#elif defined(LIN_ADVANCE_E_D_RATIO) - #error "LIN_ADVANCE (1.5) no longer uses LIN_ADVANCE_E_D_RATIO." -#elif defined(NEOPIXEL_RGBW_LED) - #error "NEOPIXEL_RGBW_LED is now NEOPIXEL_LED." -#elif ENABLED(DELTA) && defined(DELTA_PROBEABLE_RADIUS) - #error "Remove DELTA_PROBEABLE_RADIUS and use PROBING_MARGIN to inset the probe area instead." -#elif ENABLED(DELTA) && defined(DELTA_CALIBRATION_RADIUS) - #error "Remove DELTA_CALIBRATION_RADIUS and use PROBING_MARGIN to inset the probe area instead." -#elif defined(UBL_MESH_INSET) - #error "UBL_MESH_INSET is now just MESH_INSET." -#elif defined(UBL_MESH_MIN_X) || defined(UBL_MESH_MIN_Y) || defined(UBL_MESH_MAX_X) || defined(UBL_MESH_MAX_Y) - #error "UBL_MESH_(MIN|MAX)_[XY] is now just MESH_(MIN|MAX)_[XY]." -#elif defined(ABL_PROBE_PT_1_X) || defined(ABL_PROBE_PT_1_Y) || defined(ABL_PROBE_PT_2_X) || defined(ABL_PROBE_PT_2_Y) || defined(ABL_PROBE_PT_3_X) || defined(ABL_PROBE_PT_3_Y) - #error "ABL_PROBE_PT_[123]_[XY] is no longer required. Please remove it." -#elif defined(UBL_PROBE_PT_1_X) || defined(UBL_PROBE_PT_1_Y) || defined(UBL_PROBE_PT_2_X) || defined(UBL_PROBE_PT_2_Y) || defined(UBL_PROBE_PT_3_X) || defined(UBL_PROBE_PT_3_Y) - #error "UBL_PROBE_PT_[123]_[XY] is no longer required. Please remove it." -#elif defined(MIN_PROBE_EDGE) - #error "MIN_PROBE_EDGE is now called PROBING_MARGIN." -#elif defined(MIN_PROBE_EDGE_LEFT) - #error "MIN_PROBE_EDGE_LEFT is now called PROBING_MARGIN_LEFT." -#elif defined(MIN_PROBE_EDGE_RIGHT) - #error "MIN_PROBE_EDGE_RIGHT is now called PROBING_MARGIN_RIGHT." -#elif defined(MIN_PROBE_EDGE_FRONT) - #error "MIN_PROBE_EDGE_FRONT is now called PROBING_MARGIN_FRONT." -#elif defined(MIN_PROBE_EDGE_BACK) - #error "MIN_PROBE_EDGE_BACK is now called PROBING_MARGIN_BACK." -#elif defined(LEFT_PROBE_BED_POSITION) - #error "LEFT_PROBE_BED_POSITION is obsolete. Set a margin with PROBING_MARGIN or PROBING_MARGIN_LEFT instead." -#elif defined(RIGHT_PROBE_BED_POSITION) - #error "RIGHT_PROBE_BED_POSITION is obsolete. Set a margin with PROBING_MARGIN or PROBING_MARGIN_RIGHT instead." -#elif defined(FRONT_PROBE_BED_POSITION) - #error "FRONT_PROBE_BED_POSITION is obsolete. Set a margin with PROBING_MARGIN or PROBING_MARGIN_FRONT instead." -#elif defined(BACK_PROBE_BED_POSITION) - #error "BACK_PROBE_BED_POSITION is obsolete. Set a margin with PROBING_MARGIN or PROBING_MARGIN_BACK instead." -#elif defined(ENABLE_MESH_EDIT_GFX_OVERLAY) - #error "ENABLE_MESH_EDIT_GFX_OVERLAY is now MESH_EDIT_GFX_OVERLAY." -#elif defined(BABYSTEP_ZPROBE_GFX_REVERSE) - #error "BABYSTEP_ZPROBE_GFX_REVERSE is now set by OVERLAY_GFX_REVERSE." -#elif defined(UBL_GRANULAR_SEGMENTATION_FOR_CARTESIAN) - #error "UBL_GRANULAR_SEGMENTATION_FOR_CARTESIAN is now SEGMENT_LEVELED_MOVES." -#elif HAS_PID_HEATING && (defined(K1) || !defined(PID_K1)) - #error "K1 is now PID_K1." -#elif defined(PROBE_DOUBLE_TOUCH) - #error "PROBE_DOUBLE_TOUCH is now MULTIPLE_PROBING." -#elif defined(ANET_KEYPAD_LCD) - #error "ANET_KEYPAD_LCD is now ZONESTAR_LCD." -#elif defined(LCD_I2C_SAINSMART_YWROBOT) - #error "LCD_I2C_SAINSMART_YWROBOT is now LCD_SAINSMART_I2C_(1602|2004)." -#elif defined(MEASURED_LOWER_LIMIT) || defined(MEASURED_UPPER_LIMIT) - #error "MEASURED_(UPPER|LOWER)_LIMIT is now FILWIDTH_ERROR_MARGIN." -#elif defined(HAVE_TMCDRIVER) - #error "HAVE_TMCDRIVER is now [AXIS]_DRIVER_TYPE TMC26X." -#elif defined(STEALTHCHOP) - #error "STEALTHCHOP is now STEALTHCHOP_(XY|Z|E)." -#elif defined(HAVE_TMC26X) - #error "HAVE_TMC26X is now [AXIS]_DRIVER_TYPE TMC26X." -#elif defined(HAVE_TMC2130) - #error "HAVE_TMC2130 is now [AXIS]_DRIVER_TYPE TMC2130." -#elif defined(HAVE_TMC2208) - #error "HAVE_TMC2208 is now [AXIS]_DRIVER_TYPE TMC2208." -#elif defined(HAVE_L6470DRIVER) - #error "HAVE_L6470DRIVER is obsolete. L64xx stepper drivers are no longer supported in Marlin." -#elif defined(X_IS_TMC) || defined(X2_IS_TMC) || defined(Y_IS_TMC) || defined(Y2_IS_TMC) || defined(Z_IS_TMC) || defined(Z2_IS_TMC) || defined(Z3_IS_TMC) \ - || defined(E0_IS_TMC) || defined(E1_IS_TMC) || defined(E2_IS_TMC) || defined(E3_IS_TMC) || defined(E4_IS_TMC) || defined(E5_IS_TMC) || defined(E6_IS_TMC) || defined(E7_IS_TMC) - #error "[AXIS]_IS_TMC is now [AXIS]_DRIVER_TYPE TMC26X." -#elif defined(X_IS_TMC26X) || defined(X2_IS_TMC26X) || defined(Y_IS_TMC26X) || defined(Y2_IS_TMC26X) || defined(Z_IS_TMC26X) || defined(Z2_IS_TMC26X) || defined(Z3_IS_TMC26X) \ - || defined(E0_IS_TMC26X) || defined(E1_IS_TMC26X) || defined(E2_IS_TMC26X) || defined(E3_IS_TMC26X) || defined(E4_IS_TMC26X) || defined(E5_IS_TMC26X) || defined(E6_IS_TMC26X) || defined(E7_IS_TMC26X) - #error "[AXIS]_IS_TMC26X is now [AXIS]_DRIVER_TYPE TMC26X." -#elif defined(X_IS_TMC2130) || defined(X2_IS_TMC2130) || defined(Y_IS_TMC2130) || defined(Y2_IS_TMC2130) || defined(Z_IS_TMC2130) || defined(Z2_IS_TMC2130) || defined(Z3_IS_TMC2130) \ - || defined(E0_IS_TMC2130) || defined(E1_IS_TMC2130) || defined(E2_IS_TMC2130) || defined(E3_IS_TMC2130) || defined(E4_IS_TMC2130) || defined(E5_IS_TMC2130) || defined(E6_IS_TMC2130) || defined(E7_IS_TMC2130) - #error "[AXIS]_IS_TMC2130 is now [AXIS]_DRIVER_TYPE TMC2130." -#elif defined(X_IS_TMC2208) || defined(X2_IS_TMC2208) || defined(Y_IS_TMC2208) || defined(Y2_IS_TMC2208) || defined(Z_IS_TMC2208) || defined(Z2_IS_TMC2208) || defined(Z3_IS_TMC2208) \ - || defined(E0_IS_TMC2208) || defined(E1_IS_TMC2208) || defined(E2_IS_TMC2208) || defined(E3_IS_TMC2208) || defined(E4_IS_TMC2208) || defined(E5_IS_TMC2208) || defined(E6_IS_TMC2208) || defined(E7_IS_TMC2208) - #error "[AXIS]_IS_TMC2208 is now [AXIS]_DRIVER_TYPE TMC2208." -#elif defined(AUTOMATIC_CURRENT_CONTROL) - #error "AUTOMATIC_CURRENT_CONTROL is now MONITOR_DRIVER_STATUS." -#elif defined(FILAMENT_CHANGE_LOAD_LENGTH) - #error "FILAMENT_CHANGE_LOAD_LENGTH is now FILAMENT_CHANGE_FAST_LOAD_LENGTH." -#elif defined(LEVEL_CORNERS_INSET) - #error "LEVEL_CORNERS_INSET is now BED_TRAMMING_INSET_LFRB." -#elif defined(BEZIER_JERK_CONTROL) - #error "BEZIER_JERK_CONTROL is now S_CURVE_ACCELERATION." -#elif HAS_JUNCTION_DEVIATION && defined(JUNCTION_DEVIATION_FACTOR) - #error "JUNCTION_DEVIATION_FACTOR is now JUNCTION_DEVIATION_MM." -#elif defined(JUNCTION_ACCELERATION_FACTOR) - #error "JUNCTION_ACCELERATION_FACTOR is obsolete. Delete it from Configuration_adv.h." -#elif defined(JUNCTION_ACCELERATION) - #error "JUNCTION_ACCELERATION is obsolete. Delete it from Configuration_adv.h." -#elif defined(MAX7219_DEBUG_STEPPER_HEAD) - #error "MAX7219_DEBUG_STEPPER_HEAD is now MAX7219_DEBUG_PLANNER_HEAD." -#elif defined(MAX7219_DEBUG_STEPPER_TAIL) - #error "MAX7219_DEBUG_STEPPER_TAIL is now MAX7219_DEBUG_PLANNER_TAIL." -#elif defined(MAX7219_DEBUG_STEPPER_QUEUE) - #error "MAX7219_DEBUG_STEPPER_QUEUE is now MAX7219_DEBUG_PLANNER_QUEUE." -#elif defined(ENDSTOP_NOISE_FILTER) - #error "ENDSTOP_NOISE_FILTER is now ENDSTOP_NOISE_THRESHOLD [2-7]." -#elif defined(RETRACT_ZLIFT) - #error "RETRACT_ZLIFT is now RETRACT_ZRAISE." -#elif defined(TOOLCHANGE_FS_INIT_BEFORE_SWAP) - #error "TOOLCHANGE_FS_INIT_BEFORE_SWAP is now TOOLCHANGE_FS_SLOW_FIRST_PRIME." -#elif defined(TOOLCHANGE_PARK_ZLIFT) || defined(TOOLCHANGE_UNPARK_ZLIFT) - #error "TOOLCHANGE_PARK_ZLIFT and TOOLCHANGE_UNPARK_ZLIFT are now TOOLCHANGE_ZRAISE." -#elif defined(SINGLENOZZLE_TOOLCHANGE_ZRAISE) - #error "SINGLENOZZLE_TOOLCHANGE_ZRAISE is now TOOLCHANGE_ZRAISE." -#elif defined(SINGLENOZZLE_SWAP_LENGTH) - #error "SINGLENOZZLE_SWAP_LENGTH is now TOOLCHANGE_FIL_SWAP_LENGTH." -#elif defined(SINGLENOZZLE_SWAP_RETRACT_SPEED) - #error "SINGLENOZZLE_SWAP_RETRACT_SPEED is now TOOLCHANGE_FIL_SWAP_RETRACT_SPEED." -#elif defined(SINGLENOZZLE_SWAP_PRIME_SPEED) - #error "SINGLENOZZLE_SWAP_PRIME_SPEED is now TOOLCHANGE_FIL_SWAP_PRIME_SPEED." -#elif defined(SINGLENOZZLE_SWAP_PARK) - #error "SINGLENOZZLE_SWAP_PARK is now TOOLCHANGE_PARK." -#elif defined(SINGLENOZZLE_TOOLCHANGE_XY) - #error "SINGLENOZZLE_TOOLCHANGE_XY is now TOOLCHANGE_PARK_XY." -#elif defined(SINGLENOZZLE_PARK_XY_FEEDRATE) - #error "SINGLENOZZLE_PARK_XY_FEEDRATE is now TOOLCHANGE_PARK_XY_FEEDRATE." -#elif defined(PARKING_EXTRUDER_SECURITY_RAISE) - #error "PARKING_EXTRUDER_SECURITY_RAISE is now TOOLCHANGE_ZRAISE." -#elif defined(SWITCHING_TOOLHEAD_SECURITY_RAISE) - #error "SWITCHING_TOOLHEAD_SECURITY_RAISE is now TOOLCHANGE_ZRAISE." -#elif defined(G0_FEEDRATE) && G0_FEEDRATE == 0 - #error "G0_FEEDRATE is now used to set the G0 feedrate." -#elif defined(MBL_Z_STEP) - #error "MBL_Z_STEP is now MESH_EDIT_Z_STEP." -#elif defined(CHDK) - #error "CHDK is now CHDK_PIN." -#elif ANY_PIN( \ - MAX6675_SS, MAX6675_SS2, MAX6675_SS3, MAX6675_CS, MAX6675_CS2, MAX6675_CS3,\ - MAX31855_SS, MAX31855_SS2, MAX31855_SS3, MAX31855_CS, MAX31855_CS2, MAX31855_CS3, \ - MAX31865_SS, MAX31865_SS2, MAX31865_SS3, MAX31865_CS, MAX31865_CS2, MAX31865_CS3) - #warning "MAX*_SS_PIN, MAX*_SS2_PIN, MAX*_SS3_PIN, MAX*_CS_PIN, MAX*_CS2_PIN, and MAX*_CS3_PIN, are deprecated and will be removed in a future version. Please use TEMP_0_CS_PIN/TEMP_1_CS_PIN/TEMP_2_CS_PIN instead." -#elif ANY_PIN(MAX6675_SCK, MAX31855_SCK, MAX31865_SCK) - #warning "MAX*_SCK_PIN is deprecated and will be removed in a future version. Please use TEMP_0_SCK_PIN/TEMP_1_SCK_PIN/TEMP_2_SCK_PIN instead." -#elif ANY_PIN(MAX6675_MISO, MAX6675_DO, MAX31855_MISO, MAX31855_DO, MAX31865_MISO, MAX31865_DO) - #warning "MAX*_MISO_PIN and MAX*_DO_PIN are deprecated and will be removed in a future version. Please use TEMP_0_MISO_PIN/TEMP_1_MISO_PIN/TEMP_2_MISO_PIN instead." -#elif PIN_EXISTS(MAX31865_MOSI) - #warning "MAX31865_MOSI_PIN is deprecated and will be removed in a future version. Please use TEMP_0_MOSI_PIN/TEMP_1_MOSI_PIN/TEMP_2_MOSI_PIN instead." -#elif ANY_PIN(THERMO_CS1_PIN, THERMO_CS2_PIN, THERMO_CS3_PIN, THERMO_DO_PIN, THERMO_SCK_PIN) - #error "THERMO_*_PIN is now TEMP_n_CS_PIN, TEMP_n_SCK_PIN, TEMP_n_MOSI_PIN, TEMP_n_MISO_PIN." -#elif defined(MAX31865_SENSOR_OHMS) - #error "MAX31865_SENSOR_OHMS is now MAX31865_SENSOR_OHMS_0." -#elif defined(MAX31865_CALIBRATION_OHMS) - #error "MAX31865_CALIBRATION_OHMS is now MAX31865_CALIBRATION_OHMS_0." -#elif defined(SPINDLE_LASER_ENABLE) - #error "SPINDLE_LASER_ENABLE is now SPINDLE_FEATURE or LASER_FEATURE." -#elif defined(SPINDLE_LASER_ENABLE_PIN) - #error "SPINDLE_LASER_ENABLE_PIN is now SPINDLE_LASER_ENA_PIN." -#elif defined(SPINDLE_DIR_CHANGE) - #error "SPINDLE_DIR_CHANGE is now SPINDLE_CHANGE_DIR." -#elif defined(SPINDLE_STOP_ON_DIR_CHANGE) - #error "SPINDLE_STOP_ON_DIR_CHANGE is now SPINDLE_CHANGE_DIR_STOP." -#elif defined(SPINDLE_LASER_ACTIVE_HIGH) - #error "SPINDLE_LASER_ACTIVE_HIGH is now SPINDLE_LASER_ACTIVE_STATE." -#elif defined(SPINDLE_LASER_ENABLE_INVERT) - #error "SPINDLE_LASER_ENABLE_INVERT is now SPINDLE_LASER_ACTIVE_STATE." -#elif defined(LASER_POWER_INLINE) - #error "LASER_POWER_INLINE is not required, inline mode is enabled with 'M3 I' and disabled with 'M5 I'." -#elif defined(LASER_POWER_INLINE_TRAPEZOID) - #error "LASER_POWER_INLINE_TRAPEZOID is now LASER_POWER_TRAP." -#elif defined(LASER_POWER_INLINE_TRAPEZOID_CONT) - #error "LASER_POWER_INLINE_TRAPEZOID_CONT is replaced with LASER_POWER_TRAP." -#elif defined(LASER_POWER_INLINE_TRAPEZOID_PER) - #error "LASER_POWER_INLINE_TRAPEZOID_CONT_PER replaced with LASER_POWER_TRAP." -#elif defined(LASER_POWER_INLINE_CONTINUOUS) - #error "LASER_POWER_INLINE_CONTINUOUS is not required, inline mode is enabled with 'M3 I' and disabled with 'M5 I'." -#elif defined(CUTTER_POWER_DISPLAY) - #error "CUTTER_POWER_DISPLAY is now CUTTER_POWER_UNIT." -#elif defined(CHAMBER_HEATER_PIN) - #error "CHAMBER_HEATER_PIN is now HEATER_CHAMBER_PIN." -#elif defined(TMC_Z_CALIBRATION) - #error "TMC_Z_CALIBRATION has been deprecated in favor of MECHANICAL_GANTRY_CALIBRATION." -#elif defined(Z_MIN_PROBE_ENDSTOP) - #error "Z_MIN_PROBE_ENDSTOP is no longer required. Please remove it." -#elif defined(DUAL_NOZZLE_DUPLICATION_MODE) - #error "DUAL_NOZZLE_DUPLICATION_MODE is now MULTI_NOZZLE_DUPLICATION." -#elif defined(MENU_ITEM_CASE_LIGHT) - #error "MENU_ITEM_CASE_LIGHT is now CASE_LIGHT_MENU." -#elif defined(CASE_LIGHT_NEOPIXEL_COLOR) - #error "CASE_LIGHT_NEOPIXEL_COLOR is now CASE_LIGHT_DEFAULT_COLOR." -#elif defined(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) - #error "ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED is now SD_ABORT_ON_ENDSTOP_HIT." -#elif defined(LPC_SD_LCD) || defined(LPC_SD_ONBOARD) || defined(LPC_SD_CUSTOM_CABLE) - #error "LPC_SD_(LCD|ONBOARD|CUSTOM_CABLE) are now SDCARD_CONNECTION." -#elif defined(USB_SD_DISABLED) - #error "USB_SD_DISABLED is now NO_SD_HOST_DRIVE." -#elif defined(USB_SD_ONBOARD) - #error "USB_SD_ONBOARD is obsolete. Disable NO_SD_HOST_DRIVE instead." -#elif defined(PSU_ACTIVE_HIGH) - #error "PSU_ACTIVE_HIGH is now PSU_ACTIVE_STATE." -#elif POWER_SUPPLY == 1 - #error "Replace POWER_SUPPLY 1 by enabling PSU_CONTROL and setting PSU_ACTIVE_STATE to 'LOW'." -#elif POWER_SUPPLY == 2 - #error "Replace POWER_SUPPLY 2 by enabling PSU_CONTROL and setting PSU_ACTIVE_STATE to 'HIGH'." -#elif defined(POWER_SUPPLY) - #error "POWER_SUPPLY is now obsolete. Please remove it." -#elif defined(MKS_ROBIN_TFT) - #error "MKS_ROBIN_TFT is now FSMC_GRAPHICAL_TFT." -#elif defined(SDPOWER) - #error "SDPOWER is now SDPOWER_PIN." -#elif defined(STRING_SPLASH_LINE1) || defined(STRING_SPLASH_LINE2) - #error "STRING_SPLASH_LINE[12] are now obsolete. Please remove them." -#elif defined(Z_PROBE_ALLEN_KEY_DEPLOY_1_X) || defined(Z_PROBE_ALLEN_KEY_STOW_1_X) - #error "Z_PROBE_ALLEN_KEY_(DEPLOY|STOW) coordinates are now a single setting." -#elif defined(X_PROBE_OFFSET_FROM_EXTRUDER) || defined(Y_PROBE_OFFSET_FROM_EXTRUDER) || defined(Z_PROBE_OFFSET_FROM_EXTRUDER) - #error "[XYZ]_PROBE_OFFSET_FROM_EXTRUDER is now NOZZLE_TO_PROBE_OFFSET." -#elif defined(MIN_PROBE_X) || defined(MIN_PROBE_Y) || defined(MAX_PROBE_X) || defined(MAX_PROBE_Y) - #error "(MIN|MAX)_PROBE_[XY] are now calculated at runtime. Please remove them." -#elif defined(Z_STEPPER_ALIGN_X) || defined(Z_STEPPER_ALIGN_X) - #error "Z_STEPPER_ALIGN_X and Z_STEPPER_ALIGN_Y are now combined as Z_STEPPER_ALIGN_XY." -#elif defined(JUNCTION_DEVIATION) - #error "JUNCTION_DEVIATION is no longer required. (See CLASSIC_JERK). Please remove it." -#elif defined(BABYSTEP_MULTIPLICATOR) - #error "BABYSTEP_MULTIPLICATOR is now BABYSTEP_MULTIPLICATOR_[XY|Z]." -#elif defined(LULZBOT_TOUCH_UI) - #error "LULZBOT_TOUCH_UI is now TOUCH_UI_FTDI_EVE." -#elif defined(PS_DEFAULT_OFF) - #error "PS_DEFAULT_OFF is now PSU_DEFAULT_OFF." -#elif defined(FILAMENT_UNLOAD_RETRACT_LENGTH) - #error "FILAMENT_UNLOAD_RETRACT_LENGTH is now FILAMENT_UNLOAD_PURGE_RETRACT." -#elif defined(FILAMENT_UNLOAD_DELAY) - #error "FILAMENT_UNLOAD_DELAY is now FILAMENT_UNLOAD_PURGE_DELAY." -#elif defined(HOME_USING_SPREADCYCLE) - #error "HOME_USING_SPREADCYCLE is now obsolete. Please remove it." -#elif defined(DGUS_LCD) - #error "DGUS_LCD is now DGUS_LCD_UI ORIGIN|FYSETC|HIPRECY)." -#elif defined(DGUS_SERIAL_PORT) - #error "DGUS_SERIAL_PORT is now LCD_SERIAL_PORT." -#elif defined(DGUS_BAUDRATE) - #error "DGUS_BAUDRATE is now LCD_BAUDRATE." -#elif defined(DGUS_STATS_RX_BUFFER_OVERRUNS) - #error "DGUS_STATS_RX_BUFFER_OVERRUNS is now STATS_RX_BUFFER_OVERRUNS." -#elif defined(ANYCUBIC_LCD_SERIAL_PORT) - #error "ANYCUBIC_LCD_SERIAL_PORT is now LCD_SERIAL_PORT." -#elif defined(INTERNAL_SERIAL_PORT) - #error "INTERNAL_SERIAL_PORT is now MMU2_SERIAL_PORT." -#elif defined(X_DUAL_ENDSTOPS_ADJUSTMENT) || defined(Y_DUAL_ENDSTOPS_ADJUSTMENT) || defined(Z_DUAL_ENDSTOPS_ADJUSTMENT) - #error "[XYZ]_DUAL_ENDSTOPS_ADJUSTMENT is now [XYZ]2_ENDSTOP_ADJUSTMENT." -#elif defined(Z_TRIPLE_ENDSTOPS_ADJUSTMENT2) || defined(Z_TRIPLE_ENDSTOPS_ADJUSTMENT3) - #error "Z_TRIPLE_ENDSTOPS_ADJUSTMENT[23] is now Z[23]_ENDSTOP_ADJUSTMENT." -#elif defined(Z_QUAD_ENDSTOPS_ADJUSTMENT2) || defined(Z_QUAD_ENDSTOPS_ADJUSTMENT3) || defined(Z_QUAD_ENDSTOPS_ADJUSTMENT4) - #error "Z_QUAD_ENDSTOPS_ADJUSTMENT[234] is now Z[234]_ENDSTOP_ADJUSTMENT." -#elif defined(Z_DUAL_STEPPER_DRIVERS) - #error "Z_DUAL_STEPPER_DRIVERS is no longer needed and should be removed." -#elif defined(Z_TRIPLE_STEPPER_DRIVERS) - #error "Z_TRIPLE_STEPPER_DRIVERS is no longer needed and should be removed." -#elif defined(Z_QUAD_STEPPER_DRIVERS) - #error "Z_QUAD_STEPPER_DRIVERS is no longer needed and should be removed." -#elif defined(Z_DUAL_ENDSTOPS) || defined(Z_TRIPLE_ENDSTOPS) || defined(Z_QUAD_ENDSTOPS) - #error "Z_(DUAL|TRIPLE|QUAD)_ENDSTOPS is now Z_MULTI_ENDSTOPS." -#elif defined(DUGS_UI_MOVE_DIS_OPTION) - #error "DUGS_UI_MOVE_DIS_OPTION is spelled DGUS_UI_MOVE_DIS_OPTION." -#elif defined(ORIG_E0_AUTO_FAN_PIN) || defined(ORIG_E1_AUTO_FAN_PIN) || defined(ORIG_E2_AUTO_FAN_PIN) || defined(ORIG_E3_AUTO_FAN_PIN) || defined(ORIG_E4_AUTO_FAN_PIN) || defined(ORIG_E5_AUTO_FAN_PIN) || defined(ORIG_E6_AUTO_FAN_PIN) || defined(ORIG_E7_AUTO_FAN_PIN) - #error "ORIG_Ex_AUTO_FAN_PIN is now just Ex_AUTO_FAN_PIN." -#elif defined(ORIG_CHAMBER_AUTO_FAN_PIN) - #error "ORIG_CHAMBER_AUTO_FAN_PIN is now just CHAMBER_AUTO_FAN_PIN." -#elif defined(HOMING_BACKOFF_MM) - #error "HOMING_BACKOFF_MM is now HOMING_BACKOFF_POST_MM." -#elif defined(X_HOME_BUMP_MM) || defined(Y_HOME_BUMP_MM) || defined(Z_HOME_BUMP_MM) - #error "[XYZ]_HOME_BUMP_MM is now HOMING_BUMP_MM." -#elif defined(DIGIPOT_I2C) - #error "DIGIPOT_I2C is now DIGIPOT_MCP4451 (or DIGIPOT_MCP4018)." -#elif defined(TOUCH_BUTTONS) - #error "TOUCH_BUTTONS is now TOUCH_SCREEN." -#elif defined(LCD_FULL_PIXEL_HEIGHT) || defined(LCD_FULL_PIXEL_WIDTH) - #error "LCD_FULL_PIXEL_(WIDTH|HEIGHT) is deprecated and should be removed." -#elif defined(FSMC_UPSCALE) - #error "FSMC_UPSCALE is now GRAPHICAL_TFT_UPSCALE." -#elif defined(ANYCUBIC_TFT_MODEL) - #error "ANYCUBIC_TFT_MODEL is now ANYCUBIC_LCD_I3MEGA." -#elif defined(EVENT_GCODE_SD_STOP) - #error "EVENT_GCODE_SD_STOP is now EVENT_GCODE_SD_ABORT." -#elif defined(GRAPHICAL_TFT_ROTATE_180) - #error "GRAPHICAL_TFT_ROTATE_180 is now TFT_ROTATION set to TFT_ROTATE_180." -#elif defined(PROBE_OFFSET_START) - #error "PROBE_OFFSET_START is now PROBE_OFFSET_WIZARD_START_Z." -#elif defined(POWER_LOSS_PULL) - #error "POWER_LOSS_PULL is now specifically POWER_LOSS_PULL(UP|DOWN)." -#elif defined(SHORT_MANUAL_Z_MOVE) - #error "SHORT_MANUAL_Z_MOVE is now FINE_MANUAL_MOVE, applying to Z on most printers." -#elif defined(FIL_RUNOUT_INVERTING) - #if FIL_RUNOUT_INVERTING - #error "FIL_RUNOUT_INVERTING true is now FIL_RUNOUT_STATE HIGH." - #else - #error "FIL_RUNOUT_INVERTING false is now FIL_RUNOUT_STATE LOW." - #endif -#elif defined(ASSISTED_TRAMMING_MENU_ITEM) - #error "ASSISTED_TRAMMING_MENU_ITEM is deprecated and should be removed." -#elif defined(UNKNOWN_Z_NO_RAISE) - #error "UNKNOWN_Z_NO_RAISE is replaced by setting Z_IDLE_HEIGHT to Z_MAX_POS." -#elif defined(Z_AFTER_DEACTIVATE) - #error "Z_AFTER_DEACTIVATE is replaced by Z_IDLE_HEIGHT." -#elif defined(MEATPACK) - #error "MEATPACK is now enabled with MEATPACK_ON_SERIAL_PORT_1, MEATPACK_ON_SERIAL_PORT_2, etc." -#elif defined(CUSTOM_USER_MENUS) - #error "CUSTOM_USER_MENUS has been replaced by CUSTOM_MENU_MAIN and CUSTOM_MENU_CONFIG." -#elif defined(MKS_LCD12864) - #error "MKS_LCD12864 is now MKS_LCD12864A or MKS_LCD12864B." -#elif defined(DOGM_SD_PERCENT) - #error "DOGM_SD_PERCENT is now SHOW_PROGRESS_PERCENT." -#elif defined(NEOPIXEL_BKGD_LED_INDEX) - #error "NEOPIXEL_BKGD_LED_INDEX is now NEOPIXEL_BKGD_INDEX_FIRST." -#elif defined(TEMP_SENSOR_1_AS_REDUNDANT) - #error "TEMP_SENSOR_1_AS_REDUNDANT is now TEMP_SENSOR_REDUNDANT, with associated TEMP_SENSOR_REDUNDANT_* config." -#elif defined(MAX_REDUNDANT_TEMP_SENSOR_DIFF) - #error "MAX_REDUNDANT_TEMP_SENSOR_DIFF is now TEMP_SENSOR_REDUNDANT_MAX_DIFF" -#elif defined(LCD_ALEPHOBJECTS_CLCD_UI) - #error "LCD_ALEPHOBJECTS_CLCD_UI is now LCD_LULZBOT_CLCD_UI." -#elif defined(MIN_ARC_SEGMENTS) - #error "MIN_ARC_SEGMENTS is now MIN_CIRCLE_SEGMENTS." -#elif defined(ARC_SEGMENTS_PER_R) - #error "ARC_SUPPORT no longer uses ARC_SEGMENTS_PER_R." -#elif ENABLED(ARC_SUPPORT) && (!defined(MIN_ARC_SEGMENT_MM) || !defined(MAX_ARC_SEGMENT_MM)) - #error "ARC_SUPPORT now requires MIN_ARC_SEGMENT_MM and MAX_ARC_SEGMENT_MM." -#elif defined(LASER_POWER_INLINE) - #error "LASER_POWER_INLINE is obsolete." -#elif defined(SPINDLE_LASER_PWM) - #error "SPINDLE_LASER_PWM (true) is now set with SPINDLE_LASER_USE_PWM (enabled)." -#elif ANY(IS_RAMPS_EEB, IS_RAMPS_EEF, IS_RAMPS_EFB, IS_RAMPS_EFF, IS_RAMPS_SF) - #error "The IS_RAMPS_* conditionals (for heater/fan/bed pins) are now called FET_ORDER_*." -#elif defined(PROBE_TEMP_COMPENSATION) - #error "PROBE_TEMP_COMPENSATION is now set using the PTC_PROBE, PTC_BED, PTC_HOTEND options." -#elif defined(BTC_PROBE_TEMP) - #error "BTC_PROBE_TEMP is now PTC_PROBE_TEMP." -#elif defined(LCD_SCREEN_ROT_90) - #error "LCD_SCREEN_ROT_90 is now LCD_SCREEN_ROTATE with a value of 90." -#elif defined(LCD_SCREEN_ROT_180) - #error "LCD_SCREEN_ROT_180 is now LCD_SCREEN_ROTATE with a value of 180." -#elif defined(LCD_SCREEN_ROT_270) - #error "LCD_SCREEN_ROT_270 is now LCD_SCREEN_ROTATE with a value of 270." -#elif defined(DEFAULT_LCD_BRIGHTNESS) - #error "DEFAULT_LCD_BRIGHTNESS is now LCD_BRIGHTNESS_DEFAULT." -#elif defined(NOZZLE_PARK_X_ONLY) - #error "NOZZLE_PARK_X_ONLY is now NOZZLE_PARK_MOVE 1." -#elif defined(NOZZLE_PARK_Y_ONLY) - #error "NOZZLE_PARK_Y_ONLY is now NOZZLE_PARK_MOVE 2." -#elif defined(Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS) - #error "Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS is now just Z_STEPPER_ALIGN_STEPPER_XY." -#elif defined(DWIN_CREALITY_LCD_ENHANCED) - #error "DWIN_CREALITY_LCD_ENHANCED is now DWIN_LCD_PROUI." -#elif defined(LINEAR_AXES) - #error "LINEAR_AXES is now NUM_AXES (to account for rotational axes)." -#elif defined(X_DUAL_STEPPER_DRIVERS) - #error "X_DUAL_STEPPER_DRIVERS is no longer needed and should be removed." -#elif defined(Y_DUAL_STEPPER_DRIVERS) - #error "Y_DUAL_STEPPER_DRIVERS is no longer needed and should be removed." -#elif defined(NUM_Z_STEPPER_DRIVERS) - #error "NUM_Z_STEPPER_DRIVERS is no longer needed and should be removed." -#elif defined(LEVEL_BED_CORNERS) - #error "LEVEL_BED_CORNERS is now LCD_BED_TRAMMING." -#elif defined(LEVEL_CORNERS_INSET_LFRB) || defined(LEVEL_CORNERS_HEIGHT) || defined(LEVEL_CORNERS_Z_HOP) || defined(LEVEL_CORNERS_USE_PROBE) || defined(LEVEL_CORNERS_PROBE_TOLERANCE) || defined(LEVEL_CORNERS_VERIFY_RAISED) || defined(LEVEL_CORNERS_AUDIO_FEEDBACK) - #error "LEVEL_CORNERS_* settings have been renamed BED_TRAMMING_*." -#elif defined(LEVEL_CENTER_TOO) - #error "LEVEL_CENTER_TOO is now BED_TRAMMING_INCLUDE_CENTER." -#elif defined(TOUCH_IDLE_SLEEP) - #error "TOUCH_IDLE_SLEEP (seconds) is now TOUCH_IDLE_SLEEP_MINS (minutes)." -#elif defined(LCD_BACKLIGHT_TIMEOUT) - #error "LCD_BACKLIGHT_TIMEOUT (seconds) is now LCD_BACKLIGHT_TIMEOUT_MINS (minutes)." -#elif defined(LCD_SET_PROGRESS_MANUALLY) - #error "LCD_SET_PROGRESS_MANUALLY is now SET_PROGRESS_MANUALLY." -#elif defined(USE_M73_REMAINING_TIME) - #error "USE_M73_REMAINING_TIME is now SET_REMAINING_TIME." -#elif defined(SHOW_SD_PERCENT) - #error "SHOW_SD_PERCENT is now SHOW_PROGRESS_PERCENT." -#elif defined(LIN_ADVANCE_K) - #error "LIN_ADVANCE_K is now ADVANCE_K." -#elif defined(EXTRA_LIN_ADVANCE_K) - #error "EXTRA_LIN_ADVANCE_K is now ADVANCE_K_EXTRA." -#elif defined(POLAR_SEGMENTS_PER_SECOND) || defined(DELTA_SEGMENTS_PER_SECOND) || defined(SCARA_SEGMENTS_PER_SECOND) || defined(TPARA_SEGMENTS_PER_SECOND) - #error "(POLAR|DELTA|SCARA|TPARA)_SEGMENTS_PER_SECOND is now DEFAULT_SEGMENTS_PER_SECOND." -#elif defined(TMC_SW_MOSI) || defined(TMC_SW_MISO) || defined(TMC_SW_SCK) - #error "TMC_SW_(MOSI|MISO|SCK) is now TMC_SPI_(MOSI|MISO|SCK)." -#elif ANY(DGUS_LCD_UI_ORIGIN, DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY, DGUS_LCD_UI_MKS, DGUS_LCD_UI_RELOADED) && !defined(DGUS_LCD_UI) - #error "DGUS_LCD_UI_[TYPE] is now set using DGUS_LCD_UI TYPE." -#elif defined(DELTA_PRINTABLE_RADIUS) - #error "DELTA_PRINTABLE_RADIUS is now PRINTABLE_RADIUS." -#elif defined(SCARA_PRINTABLE_RADIUS) - #error "SCARA_PRINTABLE_RADIUS is now PRINTABLE_RADIUS." -#elif defined(SCARA_FEEDRATE_SCALING) - #error "SCARA_FEEDRATE_SCALING is now FEEDRATE_SCALING." -#elif defined(MILLISECONDS_PREHEAT_TIME) - #error "MILLISECONDS_PREHEAT_TIME is now PREHEAT_TIME_HOTEND_MS." -#elif defined(EXPERIMENTAL_SCURVE) - #error "EXPERIMENTAL_SCURVE is no longer needed and should be removed." -#elif defined(BABYSTEP_ZPROBE_GFX_OVERLAY) - #error "BABYSTEP_ZPROBE_GFX_OVERLAY is now BABYSTEP_GFX_OVERLAY." -#elif defined(DISABLE_INACTIVE_EXTRUDER) - #error "DISABLE_INACTIVE_EXTRUDER is now DISABLE_OTHER_EXTRUDERS." -#elif defined(INVERT_X_STEP_PIN) || defined(INVERT_Y_STEP_PIN) || defined(INVERT_Z_STEP_PIN) || defined(INVERT_I_STEP_PIN) || defined(INVERT_J_STEP_PIN) || defined(INVERT_K_STEP_PIN) || defined(INVERT_U_STEP_PIN) || defined(INVERT_V_STEP_PIN) || defined(INVERT_W_STEP_PIN) || defined(INVERT_E_STEP_PIN) - #error "INVERT_*_STEP_PIN true is now STEP_STATE_* LOW, and INVERT_*_STEP_PIN false is now STEP_STATE_* HIGH." -#elif defined(PROBE_PT_1_X) || defined(PROBE_PT_1_Y) || defined(PROBE_PT_2_X) || defined(PROBE_PT_2_Y) || defined(PROBE_PT_3_X) || defined(PROBE_PT_3_Y) - #error "PROBE_PT_[123]_[XY] is now defined using PROBE_PT_[123] with an array { x, y }." -#elif defined(SQUARE_WAVE_STEPPING) - #error "SQUARE_WAVE_STEPPING is now EDGE_STEPPING." -#elif defined(FAN_PIN) - #error "FAN_PIN is now FAN0_PIN." -#elif defined(X_MIN_ENDSTOP_INVERTING) || defined(Y_MIN_ENDSTOP_INVERTING) || defined(Z_MIN_ENDSTOP_INVERTING) \ - || defined(I_MIN_ENDSTOP_INVERTING) || defined(J_MIN_ENDSTOP_INVERTING) || defined(K_MIN_ENDSTOP_INVERTING) \ - || defined(U_MIN_ENDSTOP_INVERTING) || defined(V_MIN_ENDSTOP_INVERTING) || defined(W_MIN_ENDSTOP_INVERTING) \ - || defined(X_MAX_ENDSTOP_INVERTING) || defined(Y_MAX_ENDSTOP_INVERTING) || defined(Z_MAX_ENDSTOP_INVERTING) \ - || defined(I_MAX_ENDSTOP_INVERTING) || defined(J_MAX_ENDSTOP_INVERTING) || defined(K_MAX_ENDSTOP_INVERTING) \ - || defined(U_MAX_ENDSTOP_INVERTING) || defined(V_MAX_ENDSTOP_INVERTING) || defined(W_MAX_ENDSTOP_INVERTING) \ - || defined(Z_MIN_PROBE_ENDSTOP_INVERTING) - #error "*_ENDSTOP_INVERTING false/true is now set with *_ENDSTOP_HIT_STATE HIGH/LOW." -#elif defined(DISABLE_INACTIVE_X) || defined(DISABLE_INACTIVE_Y) || defined(DISABLE_INACTIVE_Z) \ - || defined(DISABLE_INACTIVE_I) || defined(DISABLE_INACTIVE_J) || defined(DISABLE_INACTIVE_K) \ - || defined(DISABLE_INACTIVE_U) || defined(DISABLE_INACTIVE_V) || defined(DISABLE_INACTIVE_W) || defined(DISABLE_INACTIVE_E) - #error "DISABLE_INACTIVE_[XYZIJKUVWE] is now DISABLE_IDLE_[XYZIJKUVWE]." -#elif defined(DEFAULT_STEPPER_DEACTIVE_TIME) - #error "DEFAULT_STEPPER_DEACTIVE_TIME is now DEFAULT_STEPPER_TIMEOUT_SEC." -#elif defined(TFT_SHARED_SPI) - #error "TFT_SHARED_SPI is now TFT_SHARED_IO." -#elif defined(LCD_PINS_ENABLE) - #error "LCD_PINS_ENABLE is now LCD_PINS_EN." #endif -// L64xx stepper drivers have been removed -#define _L6470 0x6470 -#define _L6474 0x6474 -#define _L6480 0x6480 -#define _POWERSTEP01 0xF00D -#if HAS_DRIVER(L6470) - #error "L6470 stepper drivers are no longer supported in Marlin." -#elif HAS_DRIVER(L6474) - #error "L6474 stepper drivers are no longer supported in Marlin." -#elif HAS_DRIVER(L6480) - #error "L6480 stepper drivers are no longer supported in Marlin." -#elif HAS_DRIVER(POWERSTEP01) - #error "POWERSTEP01 stepper drivers are no longer supported in Marlin." +/** + * Required Version defines + */ +#ifndef SHORT_BUILD_VERSION + #error "SHORT_BUILD_VERSION must be specified." +#elif !defined(DETAILED_BUILD_VERSION) + #error "BUILD_VERSION must be specified." +#elif !defined(STRING_DISTRIBUTION_DATE) + #error "STRING_DISTRIBUTION_DATE must be specified." +#elif !defined(PROTOCOL_VERSION) + #error "PROTOCOL_VERSION must be specified." +#elif !defined(MACHINE_NAME) + #error "MACHINE_NAME must be specified." +#elif !defined(SOURCE_CODE_URL) + #error "SOURCE_CODE_URL must be specified." +#elif !defined(DEFAULT_MACHINE_UUID) + #error "DEFAULT_MACHINE_UUID must be specified." +#elif !defined(WEBSITE_URL) + #error "WEBSITE_URL must be specified." #endif -#undef _L6470 -#undef _L6474 -#undef _L6480 -#undef _POWERSTEP01 // Check AXIS_RELATIVE_MODES constexpr float arm[] = AXIS_RELATIVE_MODES; @@ -823,27 +208,6 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #endif #endif // HAS_PTC -/** - * Marlin release, version and default string - */ -#ifndef SHORT_BUILD_VERSION - #error "SHORT_BUILD_VERSION must be specified." -#elif !defined(DETAILED_BUILD_VERSION) - #error "BUILD_VERSION must be specified." -#elif !defined(STRING_DISTRIBUTION_DATE) - #error "STRING_DISTRIBUTION_DATE must be specified." -#elif !defined(PROTOCOL_VERSION) - #error "PROTOCOL_VERSION must be specified." -#elif !defined(MACHINE_NAME) - #error "MACHINE_NAME must be specified." -#elif !defined(SOURCE_CODE_URL) - #error "SOURCE_CODE_URL must be specified." -#elif !defined(DEFAULT_MACHINE_UUID) - #error "DEFAULT_MACHINE_UUID must be specified." -#elif !defined(WEBSITE_URL) - #error "WEBSITE_URL must be specified." -#endif - /** * Serial */ @@ -895,11 +259,17 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #endif /** - * Validate that the bed size fits + * Validate bed size */ -static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS) are too narrow to contain X_BED_SIZE."); -#if HAS_Y_AXIS - static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS) are too narrow to contain Y_BED_SIZE."); +#if !defined(X_BED_SIZE) || !defined(Y_BED_SIZE) + #error "X_BED_SIZE and Y_BED_SIZE are now required!" +#else + #if HAS_Y_AXIS + static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS) are too narrow to contain X_BED_SIZE."); + #endif + #if HAS_Y_AXIS + static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS) are too narrow to contain Y_BED_SIZE."); + #endif #endif /** @@ -1568,6 +938,11 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #error "FANMUX0_PIN and FANMUX1_PIN must be set before FANMUX2_PIN can be set." #endif +// PID Fan Scaling requires a fan +#if defined(PID_FAN_SCALING) && !HAS_FAN + #error "PID_FAN_SCALING needs at least one fan enabled." +#endif + /** * Limited user-controlled fans */ diff --git a/Marlin/src/pins/esp32/pins_PANDA_common.h b/Marlin/src/pins/esp32/pins_PANDA_common.h index 971525622a..b24babd96b 100644 --- a/Marlin/src/pins/esp32/pins_PANDA_common.h +++ b/Marlin/src/pins/esp32/pins_PANDA_common.h @@ -63,10 +63,10 @@ #define TEMP_BED_PIN 36 // Analog Input #if ENABLED(MAX31856_PANDAPI) - #define MAX31856_CLK_PIN 29 - #define MAX31856_MISO_PIN 24 - #define MAX31856_MOSI_PIN 28 - #define MAX31856_CS_PIN 27 + #define TEMP_0_CLK_PIN 29 + #define TEMP_0_MISO_PIN 24 + #define TEMP_0_MOSI_PIN 28 + #define TEMP_0_CS_PIN 27 #endif // From aaf55a21ad9fa0f72e166b4b3f74fda427ccf91f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 23 Apr 2023 02:07:42 -0500 Subject: [PATCH 317/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20UBL=20safe=20measu?= =?UTF-8?q?re=20move=20with=20extra=20axes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to 7e79fc5b --- Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index 5bc5e6ec61..7277b293aa 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -883,7 +883,7 @@ void set_message_with_feedback(FSTR_P const fstr) { save_ubl_active_state_and_disable(); // Disable bed level correction for probing do_blocking_move_to( - NUM_AXIS_LIST( + xyz_pos_t({ 0.5f * ((MESH_MAX_X) - (MESH_MIN_X)), 0.5f * ((MESH_MAX_Y) - (MESH_MIN_Y)), MANUAL_PROBE_START_Z @@ -905,7 +905,7 @@ void set_message_with_feedback(FSTR_P const fstr) { #ifdef SAFE_BED_LEVELING_START_W , SAFE_BED_LEVELING_START_W #endif - ) + }) //, _MIN(planner.settings.max_feedrate_mm_s[X_AXIS], planner.settings.max_feedrate_mm_s[Y_AXIS]) * 0.5f ); planner.synchronize(); From 166935641a335664213cf21ff7ffe08c10eaf5be Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 23 Apr 2023 03:00:56 -0500 Subject: [PATCH 318/659] =?UTF-8?q?=F0=9F=94=A7=20Split=20followup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/SanityCheck.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index f496a4e880..196b1dc4e3 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -264,7 +264,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #if !defined(X_BED_SIZE) || !defined(Y_BED_SIZE) #error "X_BED_SIZE and Y_BED_SIZE are now required!" #else - #if HAS_Y_AXIS + #if HAS_X_AXIS static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS) are too narrow to contain X_BED_SIZE."); #endif #if HAS_Y_AXIS From 10ed5ab01c43a09429e1eb885196308fca71f492 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 23 Apr 2023 03:17:55 -0500 Subject: [PATCH 319/659] =?UTF-8?q?=F0=9F=9A=B8=20Improve=20PAUSE=5FPROBE?= =?UTF-8?q?=5FDEPLOY=5FWHEN=5FTRIGGERED=20(#25681)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/leds/pca9632.cpp | 2 +- Marlin/src/feature/leds/pca9632.h | 2 +- Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 2 +- Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp | 2 +- Marlin/src/lcd/marlinui.cpp | 2 +- Marlin/src/lcd/marlinui.h | 2 +- Marlin/src/libs/buzzer.h | 13 +++-- Marlin/src/module/probe.cpp | 54 ++++++++++++--------- Marlin/src/module/probe.h | 2 +- 9 files changed, 45 insertions(+), 36 deletions(-) diff --git a/Marlin/src/feature/leds/pca9632.cpp b/Marlin/src/feature/leds/pca9632.cpp index abea988004..07c379a815 100644 --- a/Marlin/src/feature/leds/pca9632.cpp +++ b/Marlin/src/feature/leds/pca9632.cpp @@ -148,7 +148,7 @@ void PCA9632_set_led_color(const LEDColor &color) { #if ENABLED(PCA9632_BUZZER) - void PCA9632_buzz(const long, const uint16_t) { + void PCA9632_buzz(const long, const uint16_t=0) { uint8_t data[] = PCA9632_BUZZER_DATA; Wire.beginTransmission(I2C_ADDRESS(PCA9632_ADDRESS)); Wire.write(data, sizeof(data)); diff --git a/Marlin/src/feature/leds/pca9632.h b/Marlin/src/feature/leds/pca9632.h index fb59a8c184..adef0200af 100644 --- a/Marlin/src/feature/leds/pca9632.h +++ b/Marlin/src/feature/leds/pca9632.h @@ -33,5 +33,5 @@ void PCA9632_set_led_color(const LEDColor &color); #if ENABLED(PCA9632_BUZZER) #include - void PCA9632_buzz(const long, const uint16_t); + void PCA9632_buzz(const long, const uint16_t=0); #endif diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index e33814589c..36831767f3 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -125,7 +125,7 @@ static void createChar_P(const char c, const byte * const ptr) { #if ENABLED(LCD_USE_I2C_BUZZER) - void MarlinUI::buzz(const long duration, const uint16_t freq) { + void MarlinUI::buzz(const long duration, const uint16_t freq/*=0*/) { if (sound_on) lcd.buzz(duration, freq); } diff --git a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp index 969b3fb036..6090b13732 100644 --- a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp +++ b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp @@ -299,7 +299,7 @@ uint8_t MarlinUI::read_slow_buttons() { } // Duration in ms, freq in Hz -void MarlinUI::buzz(const long duration, const uint16_t freq) { +void MarlinUI::buzz(const long duration, const uint16_t freq/*=0*/) { if (!PanelDetected) return; if (!sound_on) return; #if ENABLED(TFTGLCD_PANEL_SPI) diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 0153a11a15..b3db930fe4 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -127,7 +127,7 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; #endif #if ENABLED(PCA9632_BUZZER) - void MarlinUI::buzz(const long duration, const uint16_t freq) { + void MarlinUI::buzz(const long duration, const uint16_t freq/*=0*/) { if (sound_on) PCA9632_buzz(duration, freq); } #endif diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index 65176507fc..9c5e192fb2 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -228,7 +228,7 @@ public: #endif #if USE_MARLINUI_BUZZER - static void buzz(const long duration, const uint16_t freq); + static void buzz(const long duration, const uint16_t freq=0); #endif static void chirp() { diff --git a/Marlin/src/libs/buzzer.h b/Marlin/src/libs/buzzer.h index aa4d48ae5d..f6d5b49d73 100644 --- a/Marlin/src/libs/buzzer.h +++ b/Marlin/src/libs/buzzer.h @@ -117,21 +117,20 @@ extern Buzzer buzzer; // Buzz directly via the BEEPER pin tone queue - #define BUZZ(d,f) buzzer.tone(d, f) + #define BUZZ(V...) buzzer.tone(V) #elif USE_MARLINUI_BUZZER // Use MarlinUI for a buzzer on the LCD - #include "../lcd/marlinui.h" - #define BUZZ(d,f) ui.buzz(d,f) + #define BUZZ(V...) ui.buzz(V) #else // No buzz capability - #define BUZZ(d,f) NOOP + #define BUZZ(...) NOOP #endif -#define ERR_BUZZ() BUZZ(400, 40); -#define OKAY_BUZZ() do{ BUZZ(100, 659); BUZZ(10, 0); BUZZ(100, 698); }while(0) -#define DONE_BUZZ(OK) do{ if (OK) OKAY_BUZZ(); else ERR_BUZZ(); }while(0) +#define ERR_BUZZ() BUZZ(400, 40) +#define OKAY_BUZZ() do{ BUZZ(100, 659); BUZZ(10); BUZZ(100, 698); }while(0) +#define DONE_BUZZ(ok) do{ if (ok) OKAY_BUZZ(); else ERR_BUZZ(); }while(0) diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 3e7db5a077..a03125a73a 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -352,25 +352,35 @@ xyz_pos_t Probe::offset; // Initialized by settings.load() FORCE_INLINE void probe_specific_action(const bool deploy) { DEBUG_SECTION(log_psa, "Probe::probe_specific_action", DEBUGGING(LEVELING)); #if ENABLED(PAUSE_BEFORE_DEPLOY_STOW) - do { - #if ENABLED(PAUSE_PROBE_DEPLOY_WHEN_TRIGGERED) - if (deploy != PROBE_TRIGGERED()) break; - #endif - OKAY_BUZZ(); + // Start preheating before waiting for user confirmation that the probe is ready. + TERN_(PREHEAT_BEFORE_PROBING, if (deploy) probe.preheat_for_probing(0, PROBING_BED_TEMP, true)); - FSTR_P const ds_str = deploy ? GET_TEXT_F(MSG_MANUAL_DEPLOY) : GET_TEXT_F(MSG_MANUAL_STOW); - ui.return_to_status(); // To display the new status message - ui.set_status(ds_str, 99); - SERIAL_ECHOLNF(deploy ? GET_EN_TEXT_F(MSG_MANUAL_DEPLOY) : GET_EN_TEXT_F(MSG_MANUAL_STOW)); + FSTR_P const ds_str = deploy ? GET_TEXT_F(MSG_MANUAL_DEPLOY) : GET_TEXT_F(MSG_MANUAL_STOW); + ui.return_to_status(); // To display the new status message + ui.set_status(ds_str, 99); + SERIAL_ECHOLNF(deploy ? GET_EN_TEXT_F(MSG_MANUAL_DEPLOY) : GET_EN_TEXT_F(MSG_MANUAL_STOW)); - TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(ds_str)); - TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(ds_str)); - TERN_(DWIN_LCD_PROUI, DWIN_Popup_Confirm(ICON_BLTouch, ds_str, FPSTR(CONTINUE_STR))); - TERN_(HAS_RESUME_CONTINUE, wait_for_user_response()); - ui.reset_status(); + OKAY_BUZZ(); - } while (ENABLED(PAUSE_PROBE_DEPLOY_WHEN_TRIGGERED)); + #if ENABLED(PAUSE_PROBE_DEPLOY_WHEN_TRIGGERED) + // Wait for the probe to be attached or detached before asking for explicit user confirmation + // Allow the user to interrupt + { + KEEPALIVE_STATE(PAUSED_FOR_USER); + TERN_(HAS_RESUME_CONTINUE, wait_for_user = true); + while (deploy == PROBE_TRIGGERED() && TERN1(HAS_RESUME_CONTINUE, wait_for_user)) idle_no_sleep(); + TERN_(HAS_RESUME_CONTINUE, wait_for_user = false); + OKAY_BUZZ(); + } + #endif + + TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(ds_str)); + TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(ds_str)); + TERN_(DWIN_LCD_PROUI, DWIN_Popup_Confirm(ICON_BLTouch, ds_str, FPSTR(CONTINUE_STR))); + TERN_(HAS_RESUME_CONTINUE, wait_for_user_response()); + + ui.reset_status(); #endif // PAUSE_BEFORE_DEPLOY_STOW @@ -435,7 +445,7 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { * - If a preheat input is higher than the current target, raise the target temperature. * - If a preheat input is higher than the current temperature, wait for stabilization. */ - void Probe::preheat_for_probing(const celsius_t hotend_temp, const celsius_t bed_temp) { + void Probe::preheat_for_probing(const celsius_t hotend_temp, const celsius_t bed_temp, const bool early/*=false*/) { #if HAS_HOTEND && (PROBING_NOZZLE_TEMP || LEVELING_NOZZLE_TEMP) #define WAIT_FOR_NOZZLE_HEAT #endif @@ -443,7 +453,7 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { #define WAIT_FOR_BED_HEAT #endif - LCD_MESSAGE(MSG_PREHEATING); + if (!early) LCD_MESSAGE(MSG_PREHEATING); DEBUG_ECHOPGM("Preheating "); @@ -453,14 +463,12 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { DEBUG_ECHOPGM("hotend (", hotendPreheat, ")"); thermalManager.setTargetHotend(hotendPreheat, 0); } - #elif ENABLED(WAIT_FOR_BED_HEAT) - constexpr celsius_t hotendPreheat = 0; #endif #if ENABLED(WAIT_FOR_BED_HEAT) const celsius_t bedPreheat = bed_temp > thermalManager.degTargetBed() ? bed_temp : 0; if (bedPreheat) { - if (hotendPreheat) DEBUG_ECHOPGM(" and "); + if (TERN0(WAIT_FOR_NOZZLE_HEAT, hotendPreheat)) DEBUG_ECHOPGM(" and "); DEBUG_ECHOPGM("bed (", bedPreheat, ")"); thermalManager.setTargetBed(bedPreheat); } @@ -468,8 +476,10 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { DEBUG_EOL(); - TERN_(WAIT_FOR_NOZZLE_HEAT, if (hotend_temp > thermalManager.wholeDegHotend(0) + (TEMP_WINDOW)) thermalManager.wait_for_hotend(0)); - TERN_(WAIT_FOR_BED_HEAT, if (bed_temp > thermalManager.wholeDegBed() + (TEMP_BED_WINDOW)) thermalManager.wait_for_bed_heating()); + if (!early) { + TERN_(WAIT_FOR_NOZZLE_HEAT, if (hotend_temp > thermalManager.wholeDegHotend(0) + (TEMP_WINDOW)) thermalManager.wait_for_hotend(0)); + TERN_(WAIT_FOR_BED_HEAT, if (bed_temp > thermalManager.wholeDegBed() + (TEMP_BED_WINDOW)) thermalManager.wait_for_bed_heating()); + } } #endif diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 4c6f233905..fd0302c665 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -76,7 +76,7 @@ public: static xyz_pos_t offset; #if EITHER(PREHEAT_BEFORE_PROBING, PREHEAT_BEFORE_LEVELING) - static void preheat_for_probing(const celsius_t hotend_temp, const celsius_t bed_temp); + static void preheat_for_probing(const celsius_t hotend_temp, const celsius_t bed_temp, const bool early=false); #endif static void probe_error_stop(); From 9902097d916e42977e7a4992e2e5773d5e5e9731 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Mon, 24 Apr 2023 11:11:02 +1200 Subject: [PATCH 320/659] =?UTF-8?q?=F0=9F=94=A8=20Gather=20GD32,=20suppres?= =?UTF-8?q?s=20redundant=20#error=20(#25665)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/pins/esp32/env_validate.h | 5 +- Marlin/src/pins/esp32/pins_E4D.h | 4 +- Marlin/src/pins/esp32/pins_FYSETC_E4.h | 4 +- Marlin/src/pins/esp32/pins_MRR_ESPA.h | 4 +- Marlin/src/pins/esp32/pins_PANDA_M4.h | 4 + Marlin/src/pins/esp32/pins_PANDA_ZHU.h | 6 + Marlin/src/pins/gd32f1/env_validate.h | 11 +- Marlin/src/pins/gd32f1/pins_SOVOL_V131.h | 74 ++++++ Marlin/src/pins/lpc1768/env_validate.h | 5 +- Marlin/src/pins/lpc1769/env_validate.h | 5 +- Marlin/src/pins/mega/env_validate.h | 5 +- Marlin/src/pins/mega/pins_GT2560_V3.h | 4 + Marlin/src/pins/mega/pins_PICA.h | 4 + Marlin/src/pins/pins.h | 2 +- Marlin/src/pins/rambo/env_validate.h | 5 +- Marlin/src/pins/ramps/env_validate.h | 5 +- Marlin/src/pins/sam/env_validate.h | 5 +- Marlin/src/pins/sanguino/env_validate.h | 5 +- Marlin/src/pins/stm32f1/env_validate.h | 5 +- Marlin/src/pins/stm32f1/pins_CREALITY_V24S1.h | 5 + .../pins/stm32f1/pins_CREALITY_V24S1_301.h | 1 + Marlin/src/pins/stm32f1/pins_CREALITY_V4.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V425.h | 4 - Marlin/src/pins/stm32f1/pins_SOVOL_V131.h | 236 ------------------ Marlin/src/pins/stm32f4/env_validate.h | 5 +- Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h | 2 +- .../stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h | 2 +- .../src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h | 2 +- Marlin/src/pins/stm32g0/env_validate.h | 5 +- Marlin/src/pins/stm32h7/env_validate.h | 5 +- Marlin/src/pins/teensy2/env_validate.h | 5 +- 31 files changed, 162 insertions(+), 274 deletions(-) create mode 100644 Marlin/src/pins/gd32f1/pins_SOVOL_V131.h delete mode 100644 Marlin/src/pins/stm32f1/pins_SOVOL_V131.h diff --git a/Marlin/src/pins/esp32/env_validate.h b/Marlin/src/pins/esp32/env_validate.h index ce14c33414..0bfd0ebd92 100644 --- a/Marlin/src/pins/esp32/env_validate.h +++ b/Marlin/src/pins/esp32/env_validate.h @@ -19,8 +19,11 @@ * along with this program. If not, see . * */ -#pragma once +#ifndef ENV_VALIDATE_H +#define ENV_VALIDATE_H #if NOT_TARGET(ARDUINO_ARCH_ESP32) #error "Oops! Select an ESP32 board in 'Tools > Board.'" #endif + +#endif diff --git a/Marlin/src/pins/esp32/pins_E4D.h b/Marlin/src/pins/esp32/pins_E4D.h index 15b697a85b..06e46e3c4c 100644 --- a/Marlin/src/pins/esp32/pins_E4D.h +++ b/Marlin/src/pins/esp32/pins_E4D.h @@ -30,9 +30,7 @@ #include "env_validate.h" -#if EXTRUDERS > 1 || E_STEPPERS > 1 - #error "E4d@box only supports 1 E stepper." -#elif HAS_MULTI_HOTEND +#if HAS_MULTI_HOTEND || E_STEPPERS > 1 #error "E4d@box only supports 1 hotend / E stepper." #endif diff --git a/Marlin/src/pins/esp32/pins_FYSETC_E4.h b/Marlin/src/pins/esp32/pins_FYSETC_E4.h index 7dc59979c8..4bcffb545e 100644 --- a/Marlin/src/pins/esp32/pins_FYSETC_E4.h +++ b/Marlin/src/pins/esp32/pins_FYSETC_E4.h @@ -30,9 +30,7 @@ #include "env_validate.h" -#if EXTRUDERS > 1 || E_STEPPERS > 1 - #error "FYSETC E4 only supports 1 E stepper." -#elif HAS_MULTI_HOTEND +#if HAS_MULTI_HOTEND || E_STEPPERS > 1 #error "FYSETC E4 only supports 1 hotend / E stepper." #endif diff --git a/Marlin/src/pins/esp32/pins_MRR_ESPA.h b/Marlin/src/pins/esp32/pins_MRR_ESPA.h index e9e3db5758..ba5f6cbe35 100644 --- a/Marlin/src/pins/esp32/pins_MRR_ESPA.h +++ b/Marlin/src/pins/esp32/pins_MRR_ESPA.h @@ -30,9 +30,7 @@ #include "env_validate.h" -#if EXTRUDERS > 1 || E_STEPPERS > 1 - #error "MRR ESPA only supports 1 E stepper." -#elif HAS_MULTI_HOTEND +#if HAS_MULTI_HOTEND || E_STEPPERS > 1 #error "MRR ESPA only supports 1 hotend / E stepper." #endif diff --git a/Marlin/src/pins/esp32/pins_PANDA_M4.h b/Marlin/src/pins/esp32/pins_PANDA_M4.h index 5e2e72af05..c619be43a5 100644 --- a/Marlin/src/pins/esp32/pins_PANDA_M4.h +++ b/Marlin/src/pins/esp32/pins_PANDA_M4.h @@ -27,6 +27,10 @@ #define BOARD_INFO_NAME "Panda_M4" +#if HAS_MULTI_HOTEND || E_STEPPERS > 1 + #error "PANDA M4 only supports 1 hotend / E stepper." +#endif + #include "pins_PANDA_common.h" // diff --git a/Marlin/src/pins/esp32/pins_PANDA_ZHU.h b/Marlin/src/pins/esp32/pins_PANDA_ZHU.h index 4750057897..f2a5f440f6 100644 --- a/Marlin/src/pins/esp32/pins_PANDA_ZHU.h +++ b/Marlin/src/pins/esp32/pins_PANDA_ZHU.h @@ -27,6 +27,12 @@ #define BOARD_INFO_NAME "Panda_ZHU" +#if E_STEPPERS > 5 + #error "PANDA ZHU supports up to 5 E steppers." +#if HAS_MULTI_HOTEND + #error "PANDA ZHU only supports 1 hotend." +#endif + #include "pins_PANDA_common.h" // diff --git a/Marlin/src/pins/gd32f1/env_validate.h b/Marlin/src/pins/gd32f1/env_validate.h index 4b07cce4e5..f6882e70d6 100644 --- a/Marlin/src/pins/gd32f1/env_validate.h +++ b/Marlin/src/pins/gd32f1/env_validate.h @@ -19,14 +19,11 @@ * along with this program. If not, see . * */ -#pragma once +#ifndef ENV_VALIDATE_H +#define ENV_VALIDATE_H #if NOT_TARGET(__STM32F1__, STM32F1) - #if DISABLED(ALLOW_STM32F4) - #error "Oops! Select an STM32F1 board in 'Tools > Board.'" - #elif NOT_TARGET(STM32F4) - #error "Oops! Select an STM32F4 board in 'Tools > Board.'" - #endif + #error "Oops! Select an STM32F1 board in 'Tools > Board.'" #endif -#undef ALLOW_STM32F4 +#endif diff --git a/Marlin/src/pins/gd32f1/pins_SOVOL_V131.h b/Marlin/src/pins/gd32f1/pins_SOVOL_V131.h new file mode 100644 index 0000000000..44e5275423 --- /dev/null +++ b/Marlin/src/pins/gd32f1/pins_SOVOL_V131.h @@ -0,0 +1,74 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * Sovol 1.3.1 (GD32F103RET6) board pin assignments + */ + +#include "env_validate.h" + +#if HAS_MULTI_HOTEND || E_STEPPERS > 1 + #error "SOVOL V131 only supports 1 hotend / E-stepper." + #define E_ERROR 1 +#endif + +#ifndef BOARD_INFO_NAME + #define BOARD_INFO_NAME "Sovol V131" +#endif +#ifndef DEFAULT_MACHINE_NAME + #define DEFAULT_MACHINE_NAME "Sovol SV06" +#endif + +#include "../stm32f1/pins_CREALITY_V4.h" + +#if HAS_TMC_UART + + /** + * TMC2208/TMC2209 stepper drivers + * + * Hardware serial communication ports. + * If undefined software serial is used according to the pins below + */ + + #define X_SERIAL_TX_PIN PC1 + #define X_SERIAL_RX_PIN PC1 + + #define Y_SERIAL_TX_PIN PC0 + #define Y_SERIAL_RX_PIN PC0 + + #define Z_SERIAL_TX_PIN PA15 + #define Z_SERIAL_RX_PIN PA15 + + #define E0_SERIAL_TX_PIN PC14 + #define E0_SERIAL_RX_PIN PC14 + + // Reduce baud rate to improve software serial reliability + #define TMC_BAUD_RATE 19200 + +#endif // HAS_TMC_UART + +// +// SD Card +// +#define ONBOARD_SPI_DEVICE 1 +#define ONBOARD_SD_CS_PIN PA4 // SDSS diff --git a/Marlin/src/pins/lpc1768/env_validate.h b/Marlin/src/pins/lpc1768/env_validate.h index adb3ea938d..8a6a1cebd3 100644 --- a/Marlin/src/pins/lpc1768/env_validate.h +++ b/Marlin/src/pins/lpc1768/env_validate.h @@ -19,7 +19,8 @@ * along with this program. If not, see . * */ -#pragma once +#ifndef ENV_VALIDATE_H +#define ENV_VALIDATE_H #if ENABLED(REQUIRE_LPC1769) && NOT_TARGET(MCU_LPC1769) #error "Oops! Make sure you have the LPC1769 environment selected in your IDE." @@ -28,3 +29,5 @@ #endif #undef REQUIRE_LPC1769 + +#endif diff --git a/Marlin/src/pins/lpc1769/env_validate.h b/Marlin/src/pins/lpc1769/env_validate.h index 2e2b63d520..0f62412453 100644 --- a/Marlin/src/pins/lpc1769/env_validate.h +++ b/Marlin/src/pins/lpc1769/env_validate.h @@ -19,8 +19,11 @@ * along with this program. If not, see . * */ -#pragma once +#ifndef ENV_VALIDATE_H +#define ENV_VALIDATE_H #if NOT_TARGET(MCU_LPC1769) #error "Oops! Make sure you have the LPC1769 environment selected in your IDE." #endif + +#endif diff --git a/Marlin/src/pins/mega/env_validate.h b/Marlin/src/pins/mega/env_validate.h index 97c52d4e5e..7b6462ab7a 100644 --- a/Marlin/src/pins/mega/env_validate.h +++ b/Marlin/src/pins/mega/env_validate.h @@ -19,7 +19,8 @@ * along with this program. If not, see . * */ -#pragma once +#ifndef ENV_VALIDATE_H +#define ENV_VALIDATE_H #if NOT_TARGET(__AVR_ATmega2560__) #if DISABLED(ALLOW_MEGA1280) @@ -30,3 +31,5 @@ #endif #undef ALLOW_MEGA1280 + +#endif diff --git a/Marlin/src/pins/mega/pins_GT2560_V3.h b/Marlin/src/pins/mega/pins_GT2560_V3.h index b04962bbb3..61f30fc7d4 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V3.h +++ b/Marlin/src/pins/mega/pins_GT2560_V3.h @@ -33,6 +33,10 @@ #define ALLOW_MEGA1280 #include "env_validate.h" +#if HOTENDS > 3 || E_STEPPERS > 3 + #error "GT2560 supports up to 3 hotends / E steppers." +#endif + #ifndef BOARD_INFO_NAME #define BOARD_INFO_NAME "GT2560 3.x" #endif diff --git a/Marlin/src/pins/mega/pins_PICA.h b/Marlin/src/pins/mega/pins_PICA.h index 0541e1af58..5e9d607a78 100644 --- a/Marlin/src/pins/mega/pins_PICA.h +++ b/Marlin/src/pins/mega/pins_PICA.h @@ -35,6 +35,10 @@ #include "env_validate.h" +#if HOTENDS > 2 || E_STEPPERS > 2 + #error "PICA supports up to 2 hotends / E steppers." +#endif + #ifndef BOARD_INFO_NAME #define BOARD_INFO_NAME "PICA" #endif diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index d3b3bbbd21..86a36c7580 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -632,7 +632,7 @@ #elif MB(PANDA_PI_V29) #include "stm32f1/pins_PANDA_PI_V29.h" // STM32F103RCT6 env:PANDA_PI_V29 #elif MB(SOVOL_V131) - #include "stm32f1/pins_SOVOL_V131.h" // GD32F1 env:GD32F103RET6_sovol_maple + #include "gd32f1/pins_SOVOL_V131.h" // GD32F1 env:GD32F103RET6_sovol_maple #elif MB(TRIGORILLA_V006) #include "gd32f1/pins_TRIGORILLA_V006.h" // GD32F103 env:trigorilla_v006 diff --git a/Marlin/src/pins/rambo/env_validate.h b/Marlin/src/pins/rambo/env_validate.h index 84cf8392cd..ce2818f596 100644 --- a/Marlin/src/pins/rambo/env_validate.h +++ b/Marlin/src/pins/rambo/env_validate.h @@ -19,8 +19,11 @@ * along with this program. If not, see . * */ -#pragma once +#ifndef ENV_VALIDATE_H +#define ENV_VALIDATE_H #if NOT_TARGET(__AVR_ATmega2560__) #error "Oops! Select 'Arduino Mega 2560 or Rambo' in 'Tools > Board.'" #endif + +#endif diff --git a/Marlin/src/pins/ramps/env_validate.h b/Marlin/src/pins/ramps/env_validate.h index 6006a78f01..86d7bce16c 100644 --- a/Marlin/src/pins/ramps/env_validate.h +++ b/Marlin/src/pins/ramps/env_validate.h @@ -19,7 +19,8 @@ * along with this program. If not, see . * */ -#pragma once +#ifndef ENV_VALIDATE_H +#define ENV_VALIDATE_H #if ENABLED(ALLOW_SAM3X8E) #if NOT_TARGET(__SAM3X8E__, __AVR_ATmega2560__) @@ -33,3 +34,5 @@ #undef ALLOW_SAM3X8E #undef REQUIRE_MEGA2560 + +#endif diff --git a/Marlin/src/pins/sam/env_validate.h b/Marlin/src/pins/sam/env_validate.h index 09bcd13649..c6f4d76894 100644 --- a/Marlin/src/pins/sam/env_validate.h +++ b/Marlin/src/pins/sam/env_validate.h @@ -19,7 +19,8 @@ * along with this program. If not, see . * */ -#pragma once +#ifndef ENV_VALIDATE_H +#define ENV_VALIDATE_H #if BOTH(ALLOW_MEGA1280, ALLOW_MEGA2560) && NOT_TARGET(__SAM3X8E__, __AVR_ATmega1280__, __AVR_ATmega2560__) #error "Oops! Select 'Arduino Due or Mega' in 'Tools > Board.'" @@ -31,3 +32,5 @@ #undef ALLOW_MEGA1280 #undef ALLOW_MEGA2560 + +#endif diff --git a/Marlin/src/pins/sanguino/env_validate.h b/Marlin/src/pins/sanguino/env_validate.h index d229b6f102..bd7947f469 100644 --- a/Marlin/src/pins/sanguino/env_validate.h +++ b/Marlin/src/pins/sanguino/env_validate.h @@ -19,7 +19,8 @@ * along with this program. If not, see . * */ -#pragma once +#ifndef ENV_VALIDATE_H +#define ENV_VALIDATE_H #if ENABLED(ALLOW_MEGA644) #if NOT_TARGET(__AVR_ATmega644__, __AVR_ATmega644P__, __AVR_ATmega1284P__) @@ -40,3 +41,5 @@ #undef ALLOW_MEGA644 #undef ALLOW_MEGA644P #undef REQUIRE_MEGA644P + +#endif diff --git a/Marlin/src/pins/stm32f1/env_validate.h b/Marlin/src/pins/stm32f1/env_validate.h index 2d325428ac..47399a062d 100644 --- a/Marlin/src/pins/stm32f1/env_validate.h +++ b/Marlin/src/pins/stm32f1/env_validate.h @@ -19,7 +19,8 @@ * along with this program. If not, see . * */ -#pragma once +#ifndef ENV_VALIDATE_H +#define ENV_VALIDATE_H #if NOT_TARGET(__STM32F1__, STM32F1) #if DISABLED(ALLOW_STM32F4) @@ -30,3 +31,5 @@ #endif #undef ALLOW_STM32F4 + +#endif diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1.h index f7a73de284..058dcdf94f 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1.h @@ -25,6 +25,11 @@ * Creality v2.4.S1 (STM32F103RE / STM32F103RC) v101 as found in the Ender-7 */ +#if HAS_MULTI_HOTEND || E_STEPPERS > 1 + #error "Creality 2.4.S1 V101 only supports 1 hotend / E stepper." + #define E_ERROR 1 +#endif + #define BOARD_INFO_NAME "Creality v2.4.S1 V101" #define DEFAULT_MACHINE_NAME "Creality3D" diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h index 4276db5e9f..f2450ffcb4 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h @@ -30,6 +30,7 @@ #if HAS_MULTI_HOTEND || E_STEPPERS > 1 #error "Creality v24S1 only supports 1 hotend / E stepper." + #define E_ERROR 1 #endif #if BOTH(BLTOUCH, Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h index fd96799372..6cb4d48d58 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h @@ -27,7 +27,7 @@ #include "env_validate.h" -#if HAS_MULTI_HOTEND || E_STEPPERS > 1 +#if !E_ERROR && (HAS_MULTI_HOTEND || E_STEPPERS > 1) #error "Creality v4 only supports 1 hotend / E stepper." #endif diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V425.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V425.h index 2d9b9f38f5..a225fe11be 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V425.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V425.h @@ -27,10 +27,6 @@ #include "env_validate.h" -#if HAS_MULTI_HOTEND || E_STEPPERS > 1 - #error "Creality v4.2.5 only supports 1 hotend / E stepper." -#endif - #define BOARD_INFO_NAME "Creality V4.2.5" #define DEFAULT_MACHINE_NAME "CR200B" diff --git a/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h b/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h deleted file mode 100644 index ee50f32738..0000000000 --- a/Marlin/src/pins/stm32f1/pins_SOVOL_V131.h +++ /dev/null @@ -1,236 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -#pragma once - -/** - * Sovol 1.3.1 (GD32F103RET6) board pin assignments - */ - -#include "env_validate.h" - -#if HOTENDS > 1 || E_STEPPERS > 1 - #error "SOVOL V131 only supports 1 hotend / E-stepper." -#endif - -#ifndef BOARD_INFO_NAME - #define BOARD_INFO_NAME "Sovol V131" -#endif -#ifndef DEFAULT_MACHINE_NAME - #define DEFAULT_MACHINE_NAME "Sovol SV06" -#endif - -//#define BOARD_NO_NATIVE_USB - -// -// Release PB4 (Y_ENABLE_PIN) from JTAG NRST role -// -#ifndef DISABLE_DEBUG - #define DISABLE_DEBUG -#endif - -// -// EEPROM -// -#if NO_EEPROM_SELECTED - #define IIC_BL24CXX_EEPROM // EEPROM on I2C-0 - //#define SDCARD_EEPROM_EMULATION - #undef NO_EEPROM_SELECTED -#endif - -#if ENABLED(IIC_BL24CXX_EEPROM) - #define IIC_EEPROM_SDA PA11 - #define IIC_EEPROM_SCL PA12 - #define MARLIN_EEPROM_SIZE 0x800 // 2K (24C16) -#elif ENABLED(SDCARD_EEPROM_EMULATION) - #define MARLIN_EEPROM_SIZE 0x800 // 2K -#endif - -// -// Servos -// -#ifndef SERVO0_PIN - #ifndef HAS_PIN_27_BOARD - #define SERVO0_PIN PB0 // BLTouch OUT - #else - #define SERVO0_PIN PC6 - #endif -#endif - -// -// Limit Switches -// -#ifndef X_STOP_PIN - #define X_STOP_PIN PA5 -#endif -#ifndef Y_STOP_PIN - #define Y_STOP_PIN PA6 -#endif -#ifndef Z_STOP_PIN - #define Z_STOP_PIN PA7 -#endif - -#ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN PB1 // BLTouch IN -#endif - -// -// Filament Runout Sensor -// -#ifndef FIL_RUNOUT_PIN - #define FIL_RUNOUT_PIN PA4 // "Pulled-high" -#endif - -// -// Steppers -// -#ifndef X_STEP_PIN - #define X_STEP_PIN PC2 -#endif -#ifndef X_DIR_PIN - #define X_DIR_PIN PB9 -#endif -#define X_ENABLE_PIN PC3 // Shared - -#ifndef Y_STEP_PIN - #define Y_STEP_PIN PB8 -#endif -#ifndef Y_DIR_PIN - #define Y_DIR_PIN PB7 -#endif -#define Y_ENABLE_PIN X_ENABLE_PIN - -#ifndef Z_STEP_PIN - #define Z_STEP_PIN PB6 -#endif -#ifndef Z_DIR_PIN - #define Z_DIR_PIN PB5 -#endif -#define Z_ENABLE_PIN X_ENABLE_PIN - -#ifndef E0_STEP_PIN - #define E0_STEP_PIN PB4 -#endif -#ifndef E0_DIR_PIN - #define E0_DIR_PIN PB3 -#endif -#define E0_ENABLE_PIN X_ENABLE_PIN - -#if HAS_TMC_UART - - /** - * TMC2208/TMC2209 stepper drivers - * - * Hardware serial communication ports. - * If undefined software serial is used according to the pins below - */ - - #define X_SERIAL_TX_PIN PC1 - #define X_SERIAL_RX_PIN PC1 - - #define Y_SERIAL_TX_PIN PC0 - #define Y_SERIAL_RX_PIN PC0 - - #define Z_SERIAL_TX_PIN PA15 - #define Z_SERIAL_RX_PIN PA15 - - #define E0_SERIAL_TX_PIN PC14 - #define E0_SERIAL_RX_PIN PC14 - - // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 - -#endif // HAS_TMC_UART - -// -// Temperature Sensors -// -#define TEMP_0_PIN PC5 // TH1 -#define TEMP_BED_PIN PC4 // TB1 - -// -// Heaters / Fans -// -#ifndef HEATER_0_PIN - #define HEATER_0_PIN PA1 // HEATER1 -#endif -#ifndef HEATER_BED_PIN - #define HEATER_BED_PIN PA2 // HOT BED -#endif -#ifndef FAN0_PIN - #define FAN0_PIN PA0 // FAN -#endif -#define FAN_SOFT_PWM_REQUIRED - -// -// SD Card -// -#define SD_DETECT_PIN PC7 -#define SDCARD_CONNECTION ONBOARD -#define ONBOARD_SPI_DEVICE 1 -#define ONBOARD_SD_CS_PIN PA4 // SDSS -#define ONBOARD_SDIO -#define NO_SD_HOST_DRIVE // This board's SD is only seen by the printer - -#if ANY(RET6_12864_LCD, HAS_DWIN_E3V2, IS_DWIN_MARLINUI) - /** - * RET6 12864 LCD - * ------ - * PC6 | 1 2 | PB2 - * PB10 | 3 4 | PB11 - * PB14 5 6 | PB13 - * PB12 | 7 8 | PB15 - * GND | 9 10 | 5V - * ------ - */ - #define EXP3_01_PIN PC6 - #define EXP3_02_PIN PB2 - #define EXP3_03_PIN PB10 - #define EXP3_04_PIN PB11 - #define EXP3_05_PIN PB14 - #define EXP3_06_PIN PB13 - #define EXP3_07_PIN PB12 - #define EXP3_08_PIN PB15 -#endif - -#if ENABLED(CR10_STOCKDISPLAY) - - #if ENABLED(RET6_12864_LCD) - - #define LCD_PINS_RS EXP3_07_PIN - #define LCD_PINS_EN EXP3_08_PIN - #define LCD_PINS_D4 EXP3_06_PIN - - #define BTN_ENC EXP3_02_PIN - #define BTN_EN1 EXP3_03_PIN - #define BTN_EN2 EXP3_05_PIN - - #ifndef HAS_PIN_27_BOARD - #define BEEPER_PIN EXP3_01_PIN - #endif - - #else - - #error "Only the RET6_12864_LCD variant of CR10_STOCKDISPLAY is supported." - - #endif - -#endif diff --git a/Marlin/src/pins/stm32f4/env_validate.h b/Marlin/src/pins/stm32f4/env_validate.h index c01401f06c..91adbfc869 100644 --- a/Marlin/src/pins/stm32f4/env_validate.h +++ b/Marlin/src/pins/stm32f4/env_validate.h @@ -19,10 +19,13 @@ * along with this program. If not, see . * */ -#pragma once +#ifndef ENV_VALIDATE_H +#define ENV_VALIDATE_H #if NOT_TARGET(STM32F4) && (DISABLED(ALLOW_STM32DUINO) || NOT_TARGET(STM32F4xx)) #error "Oops! Select an STM32F4 board in 'Tools > Board.'" #endif #undef ALLOW_STM32DUINO + +#endif diff --git a/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h b/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h index 7b0206e287..8510e81482 100644 --- a/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h +++ b/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h @@ -23,7 +23,7 @@ #include "env_validate.h" -#if HOTENDS > 1 || E_STEPPERS > 1 +#if HAS_MULTI_HOTEND || E_STEPPERS > 1 #error "Artillery Ruby only supports 1 hotend / E stepper." #endif diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h index ffddeff67c..6f2de83b51 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h @@ -25,7 +25,7 @@ #include "env_validate.h" -#if HOTENDS > 1 || E_STEPPERS > 1 +#if HAS_MULTI_HOTEND || E_STEPPERS > 1 #error "BTT SKR Mini E3 V3.0.1 supports up to 1 hotend / E stepper." #endif diff --git a/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h b/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h index 448c54f1b3..b74db89f3a 100644 --- a/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h +++ b/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h @@ -24,7 +24,7 @@ #define ALLOW_STM32DUINO #include "env_validate.h" -#if HOTENDS > 1 || E_STEPPERS > 1 +#if HAS_MULTI_HOTEND || E_STEPPERS > 1 #error "TH3D EZBoard only supports 1 hotend / E stepper." #endif diff --git a/Marlin/src/pins/stm32g0/env_validate.h b/Marlin/src/pins/stm32g0/env_validate.h index a7be76bd8b..03887eb7a4 100644 --- a/Marlin/src/pins/stm32g0/env_validate.h +++ b/Marlin/src/pins/stm32g0/env_validate.h @@ -19,8 +19,11 @@ * along with this program. If not, see . * */ -#pragma once +#ifndef ENV_VALIDATE_H +#define ENV_VALIDATE_H #if NOT_TARGET(STM32G0xx) || NOT_TARGET(STM32G0B1xx) #error "Oops! Select an STM32G0 board in 'Tools > Board.'" #endif + +#endif diff --git a/Marlin/src/pins/stm32h7/env_validate.h b/Marlin/src/pins/stm32h7/env_validate.h index 0c515e5df6..7feaf20959 100644 --- a/Marlin/src/pins/stm32h7/env_validate.h +++ b/Marlin/src/pins/stm32h7/env_validate.h @@ -19,8 +19,11 @@ * along with this program. If not, see . * */ -#pragma once +#ifndef ENV_VALIDATE_H +#define ENV_VALIDATE_H #if NOT_TARGET(STM32H7) #error "Oops! Select an STM32H7 board in 'Tools > Board.'" #endif + +#endif diff --git a/Marlin/src/pins/teensy2/env_validate.h b/Marlin/src/pins/teensy2/env_validate.h index 5f0ea4f3b6..8fd6fba319 100644 --- a/Marlin/src/pins/teensy2/env_validate.h +++ b/Marlin/src/pins/teensy2/env_validate.h @@ -19,10 +19,13 @@ * along with this program. If not, see . * */ -#pragma once +#ifndef ENV_VALIDATE_H +#define ENV_VALIDATE_H #if NOT_TARGET(__AVR_AT90USB1286__) && (DISABLED(ALLOW_AT90USB1286P) || NOT_TARGET(__AVR_AT90USB1286P__)) #error "Oops! Select 'Teensy++ 2.0' or 'Printrboard' in 'Tools > Board.'" #endif #undef ALLOW_AT90USB1286P + +#endif From df4f80622eb262fe39cc898e0237257b2870aa7f Mon Sep 17 00:00:00 2001 From: plampix Date: Mon, 24 Apr 2023 01:12:47 +0200 Subject: [PATCH 321/659] =?UTF-8?q?=E2=9C=A8=20NOZZLE=5FCLEAN=5FPATTERN=5F?= =?UTF-8?q?*=20(#25666)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration.h | 28 ++- Marlin/src/gcode/feature/clean/G12.cpp | 14 +- Marlin/src/inc/SanityCheck.h | 15 ++ Marlin/src/libs/nozzle.cpp | 277 +++++++++++++------------ buildroot/tests/rambo | 4 +- 5 files changed, 195 insertions(+), 143 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 19407b6158..6e2f409613 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2409,23 +2409,31 @@ //#define NOZZLE_CLEAN_FEATURE #if ENABLED(NOZZLE_CLEAN_FEATURE) - // Default number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 + #define NOZZLE_CLEAN_PATTERN_LINE // Provide 'G12 P0' - a simple linear cleaning pattern + #define NOZZLE_CLEAN_PATTERN_ZIGZAG // Provide 'G12 P1' - a zigzag cleaning pattern + #define NOZZLE_CLEAN_PATTERN_CIRCLE // Provide 'G12 P2' - a circular cleaning pattern - // Default number of triangles - #define NOZZLE_CLEAN_TRIANGLES 3 + // Default pattern to use when 'P' is not provided to G12. One of the enabled options above. + #define NOZZLE_CLEAN_DEFAULT_PATTERN 0 + + #if ENABLED(NOZZLE_CLEAN_PATTERN_LINE) + #define NOZZLE_CLEAN_STROKES 12 // Default number of pattern repetitions + #endif + + #if ENABLED(NOZZLE_CLEAN_PATTERN_ZIGZAG) + #define NOZZLE_CLEAN_TRIANGLES 3 // Default number of triangles + #endif // Specify positions for each tool as { { X, Y, Z }, { X, Y, Z } } // Dual hotend system may use { { -20, (Y_BED_SIZE / 2), (Z_MIN_POS + 1) }, { 420, (Y_BED_SIZE / 2), (Z_MIN_POS + 1) }} #define NOZZLE_CLEAN_START_POINT { { 30, 30, (Z_MIN_POS + 1) } } #define NOZZLE_CLEAN_END_POINT { { 100, 60, (Z_MIN_POS + 1) } } - // Circular pattern radius - #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 - // Circular pattern circle fragments number - #define NOZZLE_CLEAN_CIRCLE_FN 10 - // Middle point of circle - #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT + #if ENABLED(NOZZLE_CLEAN_PATTERN_CIRCLE) + #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 // (mm) Circular pattern radius + #define NOZZLE_CLEAN_CIRCLE_FN 10 // Circular pattern circle number of segments + #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT // Middle point of circle + #endif // Move the nozzle to the initial position after cleaning #define NOZZLE_CLEAN_GOBACK diff --git a/Marlin/src/gcode/feature/clean/G12.cpp b/Marlin/src/gcode/feature/clean/G12.cpp index 0113170f1d..597d8ce0a0 100644 --- a/Marlin/src/gcode/feature/clean/G12.cpp +++ b/Marlin/src/gcode/feature/clean/G12.cpp @@ -57,10 +57,16 @@ void GcodeSuite::G12() { } #endif - const uint8_t pattern = parser.ushortval('P', 0), - strokes = parser.ushortval('S', NOZZLE_CLEAN_STROKES), - objects = parser.ushortval('T', NOZZLE_CLEAN_TRIANGLES); - const float radius = parser.linearval('R', NOZZLE_CLEAN_CIRCLE_RADIUS); + const uint8_t pattern = ( + #if COUNT_ENABLED(NOZZLE_CLEAN_PATTERN_LINE, NOZZLE_CLEAN_PATTERN_ZIGZAG, NOZZLE_CLEAN_PATTERN_CIRCLE) > 1 + parser.ushortval('P', NOZZLE_CLEAN_DEFAULT_PATTERN) + #else + NOZZLE_CLEAN_DEFAULT_PATTERN + #endif + ); + const uint8_t strokes = TERN0(NOZZLE_CLEAN_PATTERN_LINEAR, parser.ushortval('S', NOZZLE_CLEAN_STROKES)), + objects = TERN0(NOZZLE_CLEAN_PATTERN_ZIGZAG, parser.ushortval('T', NOZZLE_CLEAN_TRIANGLES)); + const float radius = TERN0(NOZZLE_CLEAN_PATTERN_CIRCLE, parser.linearval('R', NOZZLE_CLEAN_CIRCLE_RADIUS)); const bool seenxyz = parser.seen("XYZ"); const uint8_t cleans = (!seenxyz || parser.boolval('X') ? _BV(X_AXIS) : 0) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 196b1dc4e3..2c2e17f4e3 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -3816,6 +3816,21 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); #undef _CLEAN_ASSERT #endif +/** + * Sanity check nozzle cleaning pattern settings + */ +#if ENABLED(NOZZLE_CLEAN_FEATURE) + #if NONE(NOZZLE_CLEAN_PATTERN_LINE, NOZZLE_CLEAN_PATTERN_ZIGZAG, NOZZLE_CLEAN_PATTERN_CIRCLE) + #error "NOZZLE_CLEAN_FEATURE requires at least one of NOZZLE_CLEAN_PATTERN_LINE, NOZZLE_CLEAN_PATTERN_ZIGZAG, and/or NOZZLE_CLEAN_PATTERN_CIRCLE." + #elif NOZZLE_CLEAN_DEFAULT_PATTERN == 0 && DISABLED(NOZZLE_CLEAN_PATTERN_LINE) + #error "NOZZLE_CLEAN_DEFAULT_PATTERN 0 (LINE) is not available. Enable NOZZLE_CLEAN_PATTERN_LINE or set a different NOZZLE_CLEAN_DEFAULT_PATTERN." + #elif NOZZLE_CLEAN_DEFAULT_PATTERN == 1 && DISABLED(NOZZLE_CLEAN_PATTERN_ZIGZAG) + #error "NOZZLE_CLEAN_DEFAULT_PATTERN 1 (ZIGZAG) is not available. Enable NOZZLE_CLEAN_PATTERN_ZIGZAG or set a different NOZZLE_CLEAN_DEFAULT_PATTERN." + #elif NOZZLE_CLEAN_DEFAULT_PATTERN == 2 && DISABLED(NOZZLE_CLEAN_PATTERN_CIRCLE) + #error "NOZZLE_CLEAN_DEFAULT_PATTERN 2 (CIRCLE) is not available. Enable NOZZLE_CLEAN_PATTERN_CIRCLE or set a different NOZZLE_CLEAN_DEFAULT_PATTERN." + #endif +#endif + /** * Sanity check for MIXING_EXTRUDER & DISTINCT_E_FACTORS these are not compatible */ diff --git a/Marlin/src/libs/nozzle.cpp b/Marlin/src/libs/nozzle.cpp index 74f61c33d0..8f44c69c5c 100644 --- a/Marlin/src/libs/nozzle.cpp +++ b/Marlin/src/libs/nozzle.cpp @@ -37,119 +37,125 @@ Nozzle nozzle; #if ENABLED(NOZZLE_CLEAN_FEATURE) - /** - * @brief Stroke clean pattern - * @details Wipes the nozzle back and forth in a linear movement - * - * @param start xyz_pos_t defining the starting point - * @param end xyz_pos_t defining the ending point - * @param strokes number of strokes to execute - */ - void Nozzle::stroke(const xyz_pos_t &start, const xyz_pos_t &end, const uint8_t &strokes) { - #if ENABLED(NOZZLE_CLEAN_GOBACK) - const xyz_pos_t oldpos = current_position; - #endif - - // Move to the starting point - #if ENABLED(NOZZLE_CLEAN_NO_Z) - #if ENABLED(NOZZLE_CLEAN_NO_Y) - do_blocking_move_to_x(start.x); - #else - do_blocking_move_to_xy(start); + #if ENABLED(NOZZLE_CLEAN_PATTERN_LINE) + /** + * @brief Stroke clean pattern + * @details Wipes the nozzle back and forth in a linear movement + * + * @param start xyz_pos_t defining the starting point + * @param end xyz_pos_t defining the ending point + * @param strokes number of strokes to execute + */ + void Nozzle::stroke(const xyz_pos_t &start, const xyz_pos_t &end, const uint8_t &strokes) { + #if ENABLED(NOZZLE_CLEAN_GOBACK) + const xyz_pos_t oldpos = current_position; #endif - #else - do_blocking_move_to(start); - #endif - // Start the stroke pattern - LOOP_L_N(i, strokes >> 1) { - #if ENABLED(NOZZLE_CLEAN_NO_Y) - do_blocking_move_to_x(end.x); - do_blocking_move_to_x(start.x); + // Move to the starting point + #if ENABLED(NOZZLE_CLEAN_NO_Z) + #if ENABLED(NOZZLE_CLEAN_NO_Y) + do_blocking_move_to_x(start.x); + #else + do_blocking_move_to_xy(start); + #endif #else - do_blocking_move_to_xy(end); - do_blocking_move_to_xy(start); + do_blocking_move_to(start); #endif + + // Start the stroke pattern + LOOP_L_N(i, strokes >> 1) { + #if ENABLED(NOZZLE_CLEAN_NO_Y) + do_blocking_move_to_x(end.x); + do_blocking_move_to_x(start.x); + #else + do_blocking_move_to_xy(end); + do_blocking_move_to_xy(start); + #endif + } + + TERN_(NOZZLE_CLEAN_GOBACK, do_blocking_move_to(oldpos)); } + #endif - TERN_(NOZZLE_CLEAN_GOBACK, do_blocking_move_to(oldpos)); - } + #if ENABLED(NOZZLE_CLEAN_PATTERN_ZIGZAG) + /** + * @brief Zig-zag clean pattern + * @details Apply a zig-zag cleaning pattern + * + * @param start xyz_pos_t defining the starting point + * @param end xyz_pos_t defining the ending point + * @param strokes number of strokes to execute + * @param objects number of triangles to do + */ + void Nozzle::zigzag(const xyz_pos_t &start, const xyz_pos_t &end, const uint8_t &strokes, const uint8_t &objects) { + const xy_pos_t diff = end - start; + if (!diff.x || !diff.y) return; - /** - * @brief Zig-zag clean pattern - * @details Apply a zig-zag cleaning pattern - * - * @param start xyz_pos_t defining the starting point - * @param end xyz_pos_t defining the ending point - * @param strokes number of strokes to execute - * @param objects number of triangles to do - */ - void Nozzle::zigzag(const xyz_pos_t &start, const xyz_pos_t &end, const uint8_t &strokes, const uint8_t &objects) { - const xy_pos_t diff = end - start; - if (!diff.x || !diff.y) return; + #if ENABLED(NOZZLE_CLEAN_GOBACK) + const xyz_pos_t back = current_position; + #endif - #if ENABLED(NOZZLE_CLEAN_GOBACK) - const xyz_pos_t back = current_position; - #endif + #if ENABLED(NOZZLE_CLEAN_NO_Z) + do_blocking_move_to_xy(start); + #else + do_blocking_move_to(start); + #endif - #if ENABLED(NOZZLE_CLEAN_NO_Z) + const uint8_t zigs = objects << 1; + const bool horiz = ABS(diff.x) >= ABS(diff.y); // Do a horizontal wipe? + const float P = (horiz ? diff.x : diff.y) / zigs; // Period of each zig / zag + const xyz_pos_t *side; + LOOP_L_N(j, strokes) { + for (int8_t i = 0; i < zigs; i++) { + side = (i & 1) ? &end : &start; + if (horiz) + do_blocking_move_to_xy(start.x + i * P, side->y); + else + do_blocking_move_to_xy(side->x, start.y + i * P); + } + for (int8_t i = zigs; i >= 0; i--) { + side = (i & 1) ? &end : &start; + if (horiz) + do_blocking_move_to_xy(start.x + i * P, side->y); + else + do_blocking_move_to_xy(side->x, start.y + i * P); + } + } + + TERN_(NOZZLE_CLEAN_GOBACK, do_blocking_move_to(back)); + } + #endif + + #if ENABLED(NOZZLE_CLEAN_PATTERN_CIRCLE) + /** + * @brief Circular clean pattern + * @details Apply a circular cleaning pattern + * + * @param start xyz_pos_t defining the middle of circle + * @param strokes number of strokes to execute + * @param radius radius of circle + */ + void Nozzle::circle(const xyz_pos_t &start, const xyz_pos_t &middle, const uint8_t &strokes, const_float_t radius) { + if (strokes == 0) return; + + #if ENABLED(NOZZLE_CLEAN_GOBACK) + const xyz_pos_t back = current_position; + #endif + TERN(NOZZLE_CLEAN_NO_Z, do_blocking_move_to_xy, do_blocking_move_to)(start); + + LOOP_L_N(s, strokes) + LOOP_L_N(i, NOZZLE_CLEAN_CIRCLE_FN) + do_blocking_move_to_xy( + middle.x + sin((RADIANS(360) / NOZZLE_CLEAN_CIRCLE_FN) * i) * radius, + middle.y + cos((RADIANS(360) / NOZZLE_CLEAN_CIRCLE_FN) * i) * radius + ); + + // Let's be safe do_blocking_move_to_xy(start); - #else - do_blocking_move_to(start); - #endif - const uint8_t zigs = objects << 1; - const bool horiz = ABS(diff.x) >= ABS(diff.y); // Do a horizontal wipe? - const float P = (horiz ? diff.x : diff.y) / zigs; // Period of each zig / zag - const xyz_pos_t *side; - LOOP_L_N(j, strokes) { - for (int8_t i = 0; i < zigs; i++) { - side = (i & 1) ? &end : &start; - if (horiz) - do_blocking_move_to_xy(start.x + i * P, side->y); - else - do_blocking_move_to_xy(side->x, start.y + i * P); - } - for (int8_t i = zigs; i >= 0; i--) { - side = (i & 1) ? &end : &start; - if (horiz) - do_blocking_move_to_xy(start.x + i * P, side->y); - else - do_blocking_move_to_xy(side->x, start.y + i * P); - } + TERN_(NOZZLE_CLEAN_GOBACK, do_blocking_move_to(back)); } - - TERN_(NOZZLE_CLEAN_GOBACK, do_blocking_move_to(back)); - } - - /** - * @brief Circular clean pattern - * @details Apply a circular cleaning pattern - * - * @param start xyz_pos_t defining the middle of circle - * @param strokes number of strokes to execute - * @param radius radius of circle - */ - void Nozzle::circle(const xyz_pos_t &start, const xyz_pos_t &middle, const uint8_t &strokes, const_float_t radius) { - if (strokes == 0) return; - - #if ENABLED(NOZZLE_CLEAN_GOBACK) - const xyz_pos_t back = current_position; - #endif - TERN(NOZZLE_CLEAN_NO_Z, do_blocking_move_to_xy, do_blocking_move_to)(start); - - LOOP_L_N(s, strokes) - LOOP_L_N(i, NOZZLE_CLEAN_CIRCLE_FN) - do_blocking_move_to_xy( - middle.x + sin((RADIANS(360) / NOZZLE_CLEAN_CIRCLE_FN) * i) * radius, - middle.y + cos((RADIANS(360) / NOZZLE_CLEAN_CIRCLE_FN) * i) * radius - ); - - // Let's be safe - do_blocking_move_to_xy(start); - - TERN_(NOZZLE_CLEAN_GOBACK, do_blocking_move_to(back)); - } + #endif /** * @brief Clean the nozzle @@ -159,10 +165,25 @@ Nozzle nozzle; * @param argument depends on the cleaning pattern */ void Nozzle::clean(const uint8_t &pattern, const uint8_t &strokes, const_float_t radius, const uint8_t &objects, const uint8_t cleans) { - xyz_pos_t start[HOTENDS] = NOZZLE_CLEAN_START_POINT, end[HOTENDS] = NOZZLE_CLEAN_END_POINT, middle[HOTENDS] = NOZZLE_CLEAN_CIRCLE_MIDDLE; + xyz_pos_t start[HOTENDS] = NOZZLE_CLEAN_START_POINT, end[HOTENDS] = NOZZLE_CLEAN_END_POINT; + #if ENABLED(NOZZLE_CLEAN_PATTERN_CIRCLE) + xyz_pos_t middle[HOTENDS] = NOZZLE_CLEAN_CIRCLE_MIDDLE; + #endif const uint8_t arrPos = EITHER(SINGLENOZZLE, MIXING_EXTRUDER) ? 0 : active_extruder; + switch (pattern) { + #if DISABLED(NOZZLE_CLEAN_PATTERN_LINE) + case 0: SERIAL_ECHOLNPGM("Pattern ", F("LINE"), " not enabled."); return; + #endif + #if DISABLED(NOZZLE_CLEAN_PATTERN_ZIGZAG) + case 1: SERIAL_ECHOLNPGM("Pattern ", F("ZIGZAG"), " not enabled."); return; + #endif + #if DISABLED(NOZZLE_CLEAN_PATTERN_CIRCLE) + case 2: SERIAL_ECHOLNPGM("Pattern ", F("CIRCULAR"), " not enabled."); return; + #endif + } + #if NOZZLE_CLEAN_MIN_TEMP > 20 if (thermalManager.degTargetHotend(arrPos) < NOZZLE_CLEAN_MIN_TEMP) { #if ENABLED(NOZZLE_CLEAN_HEATUP) @@ -179,45 +200,47 @@ Nozzle nozzle; #if HAS_SOFTWARE_ENDSTOPS #define LIMIT_AXIS(A) do{ \ - LIMIT( start[arrPos].A, soft_endstop.min.A, soft_endstop.max.A); \ - LIMIT(middle[arrPos].A, soft_endstop.min.A, soft_endstop.max.A); \ - LIMIT( end[arrPos].A, soft_endstop.min.A, soft_endstop.max.A); \ + LIMIT( start[arrPos].A, soft_endstop.min.A, soft_endstop.max.A); \ + LIMIT( end[arrPos].A, soft_endstop.min.A, soft_endstop.max.A); \ + TERN_(NOZZLE_CLEAN_PATTERN_CIRCLE, LIMIT(middle[arrPos].A, soft_endstop.min.A, soft_endstop.max.A)); \ }while(0) if (soft_endstop.enabled()) { - - LIMIT_AXIS(x); - LIMIT_AXIS(y); - LIMIT_AXIS(z); - const bool radiusOutOfRange = (middle[arrPos].x + radius > soft_endstop.max.x) - || (middle[arrPos].x - radius < soft_endstop.min.x) - || (middle[arrPos].y + radius > soft_endstop.max.y) - || (middle[arrPos].y - radius < soft_endstop.min.y); - if (radiusOutOfRange && pattern == 2) { - SERIAL_ECHOLNPGM("Warning: Radius Out of Range"); - return; - } - + LIMIT_AXIS(x); LIMIT_AXIS(y); LIMIT_AXIS(z); + #if ENABLED(NOZZLE_CLEAN_PATTERN_CIRCLE) + if (pattern == 2 && !(WITHIN(middle[arrPos].x, soft_endstop.min.x + radius, soft_endstop.max.x - radius) + && WITHIN(middle[arrPos].y, soft_endstop.min.y + radius, soft_endstop.max.y - radius)) + ) { + SERIAL_ECHOLNPGM("Warning: Radius Out of Range"); return; + } + #endif } #endif - if (pattern == 2) { - if (!(cleans & (_BV(X_AXIS) | _BV(Y_AXIS)))) { - SERIAL_ECHOLNPGM("Warning: Clean Circle requires XY"); - return; + #if ENABLED(NOZZLE_CLEAN_PATTERN_CIRCLE) + if (pattern == 2 && !(cleans & (_BV(X_AXIS) | _BV(Y_AXIS)))) { + SERIAL_ECHOLNPGM("Warning: Clean Circle requires XY"); return; } - } - else { + #endif + + if (TERN1(NOZZLE_CLEAN_PATTERN_CIRCLE, pattern != 2)) { if (!TEST(cleans, X_AXIS)) start[arrPos].x = end[arrPos].x = current_position.x; if (!TEST(cleans, Y_AXIS)) start[arrPos].y = end[arrPos].y = current_position.y; } if (!TEST(cleans, Z_AXIS)) start[arrPos].z = end[arrPos].z = current_position.z; switch (pattern) { - case 1: zigzag(start[arrPos], end[arrPos], strokes, objects); break; - case 2: circle(start[arrPos], middle[arrPos], strokes, radius); break; - default: stroke(start[arrPos], end[arrPos], strokes); + default: + #if ENABLED(NOZZLE_CLEAN_PATTERN_LINE) + case 0: stroke(start[arrPos], end[arrPos], strokes); + #endif + #if ENABLED(NOZZLE_CLEAN_PATTERN_ZIGZAG) + case 1: zigzag(start[arrPos], end[arrPos], strokes, objects); break; + #endif + #if ENABLED(NOZZLE_CLEAN_PATTERN_CIRCLE) + case 2: circle(start[arrPos], middle[arrPos], strokes, radius); break; + #endif } } diff --git a/buildroot/tests/rambo b/buildroot/tests/rambo index 040773230a..b50f220404 100755 --- a/buildroot/tests/rambo +++ b/buildroot/tests/rambo @@ -98,8 +98,8 @@ opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CO NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE \ ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE ADVANCED_PAUSE_CONTINUOUS_PURGE FILAMENT_LOAD_UNLOAD_GCODES \ PRINTCOUNTER SERVICE_NAME_1 SERVICE_INTERVAL_1 M114_DETAIL -opt_add M100_FREE_MEMORY_DUMPER -opt_add M100_FREE_MEMORY_CORRUPTOR +opt_disable NOZZLE_CLEAN_PATTERN_CIRCLE +opt_add M100_FREE_MEMORY_DUMPER M100_FREE_MEMORY_CORRUPTOR exec_test $1 $2 "MINIRAMBO | RRDGFSC | ABL Linear Manual | M100 | PWM_MOTOR_CURRENT | M600..." "$3" # From 02a14d31b2bbe6f723dc8da75f1f124a99deedba Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 24 Apr 2023 00:21:28 +0000 Subject: [PATCH 322/659] [cron] Bump distribution date (2023-04-24) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index e18ee687ed..a2a254824d 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-23" +//#define STRING_DISTRIBUTION_DATE "2023-04-24" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 51f45936ca..146d422033 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-23" + #define STRING_DISTRIBUTION_DATE "2023-04-24" #endif /** From 743903b96fd64ef8cbe23d84eed7de1e29b1abed Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 24 Apr 2023 01:50:39 +0100 Subject: [PATCH 323/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20Anycubic=20PlayTun?= =?UTF-8?q?e=20(#25735)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25690 Co-authored-by: Scott Lahteine --- Marlin/src/lcd/extui/anycubic/Tunes.cpp | 4 ++-- Marlin/src/lcd/extui/anycubic/Tunes.h | 4 ++-- Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp | 10 +++++----- Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp | 10 +++++----- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Marlin/src/lcd/extui/anycubic/Tunes.cpp b/Marlin/src/lcd/extui/anycubic/Tunes.cpp index 118f049bc1..d1fb888d17 100644 --- a/Marlin/src/lcd/extui/anycubic/Tunes.cpp +++ b/Marlin/src/lcd/extui/anycubic/Tunes.cpp @@ -39,12 +39,12 @@ namespace Anycubic { - void PlayTune(const uint16_t *tune, const uint8_t speed=1) { + void PlayTune(const uint16_t *tune, const uint8_t speed/*=1*/) { const uint16_t wholenotelen = tune[0] / speed; for (uint8_t pos = 1; pos < MAX_TUNE_LENGTH; pos += 2) { const uint16_t freq = tune[pos]; if (freq == n_END) break; - BUZZ(freq, wholenotelen / tune[pos + 1]); + BUZZ(wholenotelen / tune[pos + 1], freq); } } diff --git a/Marlin/src/lcd/extui/anycubic/Tunes.h b/Marlin/src/lcd/extui/anycubic/Tunes.h index be8bc7223c..8b99f1f863 100644 --- a/Marlin/src/lcd/extui/anycubic/Tunes.h +++ b/Marlin/src/lcd/extui/anycubic/Tunes.h @@ -61,7 +61,7 @@ n_END=10000 // end of tune marker namespace Anycubic { - void PlayTune(const uint16_t *tune, const uint8_t speed); + void PlayTune(const uint16_t *tune, const uint8_t speed=1); // Only uncomment the tunes you are using to save memory // This will help you write tunes! @@ -100,7 +100,7 @@ namespace Anycubic { n_END }; - const uint16_t Heater_Timedout[] = { + const uint16_t HeaterTimeout[] = { 1000, n_C6,l_T1, n_END diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp index 45fb73c02f..f3bc64a024 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp @@ -104,7 +104,7 @@ void ChironTFT::Startup() { injectCommands(AC_cmnd_enable_leveling); // Startup tunes are defined in Tunes.h - PlayTune(TERN(AC_DEFAULT_STARTUP_TUNE, Anycubic_PowerOn, GB_PowerOn), 1); + PlayTune(TERN(AC_DEFAULT_STARTUP_TUNE, Anycubic_PowerOn, GB_PowerOn)); #if ACDEBUGLEVEL SERIAL_ECHOLNPGM("AC Debug Level ", ACDEBUGLEVEL); @@ -192,7 +192,7 @@ void ChironTFT::FilamentRunout() { // 1 Signal filament out last_error = AC_error_filament_runout; SendtoTFTLN(isPrintingFromMedia() ? AC_msg_filament_out_alert : AC_msg_filament_out_block); - PlayTune(FilamentOut, 1); + PlayTune(FilamentOut); } void ChironTFT::ConfirmationRequest(const char * const msg) { @@ -215,7 +215,7 @@ void ChironTFT::ConfirmationRequest(const char * const msg) { if (strcmp_P(msg, MARLIN_msg_heater_timeout) == 0) { pause_state = AC_paused_heater_timed_out; SendtoTFTLN(AC_msg_paused); // enable continue button - PlayTune(BEEPER_PIN,Heater_Timedout,1); + PlayTune(HeaterTimeout); } // Reheat finished, send acknowledgement else if (strcmp_P(msg, MARLIN_msg_reheat_done) == 0) { @@ -253,7 +253,7 @@ void ChironTFT::StatusChange(const char * const msg) { } // If probing fails don't save the mesh raise the probe above the bad point if (strcmp_P(msg, MARLIN_msg_probing_failed) == 0) { - PlayTune(BeepBeepBeeep, 1); + PlayTune(BeepBeepBeeep); injectCommands(F("G1 Z50 F500")); SendtoTFTLN(AC_msg_probing_complete); printer_state = AC_printer_idle; @@ -307,7 +307,7 @@ void ChironTFT::StatusChange(const char * const msg) { void ChironTFT::PowerLossRecovery() { printer_state = AC_printer_resuming_from_power_outage; // Play tune to notify user we can recover. last_error = AC_error_powerloss; - PlayTune(SOS, 1); + PlayTune(SOS); SERIAL_ECHOLNF(AC_msg_powerloss_recovery); } diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp index e2bc343d67..387557f2af 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp @@ -463,7 +463,7 @@ namespace Anycubic { pop_up_index = 15; // show filament lack. if (READ(FIL_RUNOUT_PIN) == FIL_RUNOUT_STATE) { - PlayTune(FilamentOut, 1); + PlayTune(FilamentOut); feedrate_back = getFeedrate_percent(); @@ -505,7 +505,7 @@ namespace Anycubic { if (strcmp_P(msg, MARLIN_msg_heater_timeout) == 0) { pause_state = AC_paused_heater_timed_out; SendtoTFTLN(AC_msg_paused); // enable continue button - PlayTune(Heater_Timedout, 1); + PlayTune(HeaterTimeout); } // Reheat finished, send acknowledgement else if (strcmp_P(msg, MARLIN_msg_reheat_done) == 0) { @@ -576,7 +576,7 @@ namespace Anycubic { // If probing fails don't save the mesh raise the probe above the bad point if (strcmp_P(msg, MARLIN_msg_probing_failed) == 0) { - PlayTune(BeepBeepBeeep, 1); + PlayTune(BeepBeepBeeep); injectCommands(F("G1 Z50 F500")); ChangePageOfTFT(PAGE_CHS_ABNORMAL_LEVELING_SENSOR); SendtoTFTLN(AC_msg_probing_complete); @@ -1070,7 +1070,7 @@ namespace Anycubic { #else SendTxtToTFT(recovery.info.sd_filename, TXT_OUTAGE_RECOVERY_FILE); #endif - PlayTune(SOS, 1); + PlayTune(SOS); } #else constexpr bool is_outage = false; @@ -1081,7 +1081,7 @@ namespace Anycubic { } else if (control_value == 0x010000) { // startup first gif // Startup tunes are defined in Tunes.h - PlayTune(Anycubic_PowerOn, 1); // takes 3500 ms + PlayTune(Anycubic_PowerOn); // takes 3500 ms } } From 2954bf26979e43c6b36ca2739af4e887b651f3f8 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 24 Apr 2023 00:24:40 -0500 Subject: [PATCH 324/659] =?UTF-8?q?=F0=9F=8C=90=20Replace=20'=3D'=20with?= =?UTF-8?q?=20'{'=20for=20substitution?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp | 6 +-- Marlin/src/lcd/language/language_cz.h | 4 +- Marlin/src/lcd/language/language_de.h | 6 +-- Marlin/src/lcd/language/language_en.h | 10 ++-- Marlin/src/lcd/language/language_es.h | 4 +- Marlin/src/lcd/language/language_fr.h | 4 +- Marlin/src/lcd/language/language_fr_na.h | 4 +- Marlin/src/lcd/language/language_gl.h | 6 +-- Marlin/src/lcd/language/language_hu.h | 12 ++--- Marlin/src/lcd/language/language_it.h | 8 ++-- Marlin/src/lcd/language/language_pl.h | 8 ++-- Marlin/src/lcd/language/language_pt_br.h | 2 +- Marlin/src/lcd/language/language_ro.h | 4 +- Marlin/src/lcd/language/language_ru.h | 6 +-- Marlin/src/lcd/language/language_sk.h | 8 ++-- Marlin/src/lcd/language/language_sv.h | 6 +-- Marlin/src/lcd/language/language_tr.h | 8 ++-- Marlin/src/lcd/language/language_uk.h | 6 +-- Marlin/src/lcd/language/language_zh_CN.h | 44 ++++++++--------- Marlin/src/lcd/language/language_zh_TW.h | 50 ++++++++++---------- Marlin/src/lcd/lcdprint.cpp | 6 +-- Marlin/src/lcd/lcdprint.h | 2 +- Marlin/src/lcd/tft/tft_string.cpp | 6 +-- 23 files changed, 110 insertions(+), 110 deletions(-) diff --git a/Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp b/Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp index 38a8eafe23..6d60608426 100644 --- a/Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp @@ -44,7 +44,7 @@ uint8_t read_byte(const uint8_t *byte) { return *byte; } * Add a string, applying substitutions for the following characters: * * $ displays the clipped string given by fstr or cstr - * = displays '0'....'10' for indexes 0 - 10 + * { displays '0'....'10' for indexes 0 - 10 * ~ displays '1'....'11' for indexes 0 - 10 * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) * @ displays an axis name such as XYZUVW, or E for an extruder @@ -57,9 +57,9 @@ void DWIN_String::add(const char *tpl, const int8_t index, const char *cstr/*=nu if (wc > 255) wc |= 0x0080; const uint8_t ch = uint8_t(wc & 0x00FF); - if (ch == '=' || ch == '~' || ch == '*') { + if (ch == '{' || ch == '~' || ch == '*') { if (index >= 0) { - int8_t inum = index + ((ch == '=') ? 0 : LCD_FIRST_TOOL); + int8_t inum = index + ((ch == '{') ? 0 : LCD_FIRST_TOOL); if (ch == '*') add_character('E'); if (inum >= 10) { add_character('0' + (inum / 10)); inum %= 10; } add_character('0' + inum); diff --git a/Marlin/src/lcd/language/language_cz.h b/Marlin/src/lcd/language/language_cz.h index d06c5554fd..1f697f8d5a 100644 --- a/Marlin/src/lcd/language/language_cz.h +++ b/Marlin/src/lcd/language/language_cz.h @@ -334,7 +334,7 @@ namespace Language_cz { LSTR MSG_STOP_PRINT = _UxGT("Zastavit tisk"); LSTR MSG_PRINTING_OBJECT = _UxGT("Tisk objektu"); LSTR MSG_CANCEL_OBJECT = _UxGT("Zrušit objekt"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušit objekt ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušit objekt {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Obnova výpadku"); LSTR MSG_MEDIA_MENU = _UxGT("Tisknout z SD"); LSTR MSG_NO_MEDIA = _UxGT("Žádná SD karta"); @@ -512,7 +512,7 @@ namespace Language_cz { LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Vytáhněte, klikněte"); LSTR MSG_MIX = _UxGT("Mix"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponenta ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponenta {"); LSTR MSG_MIXER = _UxGT("Mixér"); LSTR MSG_GRADIENT = _UxGT("Přechod"); LSTR MSG_FULL_GRADIENT = _UxGT("Celý přechod"); diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h index 4313a80490..534d49ade9 100644 --- a/Marlin/src/lcd/language/language_de.h +++ b/Marlin/src/lcd/language/language_de.h @@ -277,7 +277,7 @@ namespace Language_de { LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violett"); LSTR MSG_SET_LEDS_WHITE = _UxGT("Weiß"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Standard"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal ="); + LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal {"); LSTR MSG_LEDS2 = _UxGT("Lichter #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Licht #2 Voreinst."); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Helligkeit"); @@ -461,7 +461,7 @@ namespace Language_de { LSTR MSG_END_LOOPS = _UxGT("Wiederholung beenden"); LSTR MSG_PRINTING_OBJECT = _UxGT("Objekt drucken"); LSTR MSG_CANCEL_OBJECT = _UxGT("Objekt abbrechen"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Objekt abbrechen ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Objekt abbrechen {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Wiederh. n. Stroma."); LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Druckauftrag fortset."); LSTR MSG_MEDIA_MENU = _UxGT("Druck vom Medium"); @@ -692,7 +692,7 @@ namespace Language_de { LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Entfernen, klicken"); LSTR MSG_MIX = _UxGT("Mix"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponente ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponente {"); LSTR MSG_MIXER = _UxGT("Mixer"); LSTR MSG_GRADIENT = _UxGT("Gradient"); // equal Farbverlauf LSTR MSG_FULL_GRADIENT = _UxGT("Volle Gradient"); diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 9a64587f15..0cfd2f8bea 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -30,7 +30,7 @@ * Substitutions are applied for the following characters when used in menu items titles: * * $ displays an inserted string - * = displays '0'....'10' for indexes 0 - 10 + * { displays '0'....'10' for indexes 0 - 10 * ~ displays '1'....'11' for indexes 0 - 10 * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) * @ displays an axis name such as XYZUVW, or E for an extruder @@ -298,7 +298,7 @@ namespace Language_en { LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violet"); LSTR MSG_SET_LEDS_WHITE = _UxGT("White"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Default"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Channel ="); + LSTR MSG_LED_CHANNEL_N = _UxGT("Channel {"); LSTR MSG_LEDS2 = _UxGT("Lights #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Light #2 Presets"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Brightness"); @@ -505,7 +505,7 @@ namespace Language_en { LSTR MSG_HOST_START_PRINT = _UxGT("Start Host Print"); LSTR MSG_PRINTING_OBJECT = _UxGT("Printing Object"); LSTR MSG_CANCEL_OBJECT = _UxGT("Cancel Object"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Object ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Object {"); LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Continue Print Job"); LSTR MSG_MEDIA_MENU = _UxGT("Print from ") MEDIA_TYPE_EN; LSTR MSG_TURN_OFF = _UxGT("Turn off the printer"); @@ -514,7 +514,7 @@ namespace Language_en { LSTR MSG_HOST_START_PRINT = _UxGT("Host Start"); LSTR MSG_PRINTING_OBJECT = _UxGT("Print Obj"); LSTR MSG_CANCEL_OBJECT = _UxGT("Cancel Obj"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Obj ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Obj {"); LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Continue Job"); LSTR MSG_MEDIA_MENU = MEDIA_TYPE_EN _UxGT(" Print"); LSTR MSG_TURN_OFF = _UxGT("Turn off now"); @@ -757,7 +757,7 @@ namespace Language_en { LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Remove and click..."); LSTR MSG_MIX = _UxGT("Mix"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Component ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Component {"); LSTR MSG_MIXER = _UxGT("Mixer"); LSTR MSG_GRADIENT = _UxGT("Gradient"); LSTR MSG_FULL_GRADIENT = _UxGT("Full Gradient"); diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h index 371df360ee..f3d6fc577d 100644 --- a/Marlin/src/lcd/language/language_es.h +++ b/Marlin/src/lcd/language/language_es.h @@ -338,7 +338,7 @@ namespace Language_es { LSTR MSG_STOP_PRINT = _UxGT("Detener impresión"); LSTR MSG_PRINTING_OBJECT = _UxGT("Imprimiendo Objeto"); LSTR MSG_CANCEL_OBJECT = _UxGT("Cancelar Objeto"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancelar Objeto ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancelar Objeto {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Rec. Fallo electrico"); LSTR MSG_MEDIA_MENU = _UxGT("Imprim. desde SD/FD"); LSTR MSG_NO_MEDIA = _UxGT("SD/FD no presente"); @@ -510,7 +510,7 @@ namespace Language_es { LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Retirar, y pulsar"); LSTR MSG_MIX = _UxGT("Mezcla"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Componente ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Componente {"); LSTR MSG_MIXER = _UxGT("Miezclador"); LSTR MSG_GRADIENT = _UxGT("Degradado"); LSTR MSG_FULL_GRADIENT = _UxGT("Degradado Total"); diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h index f7eec7f5ce..01422f5c76 100644 --- a/Marlin/src/lcd/language/language_fr.h +++ b/Marlin/src/lcd/language/language_fr.h @@ -353,7 +353,7 @@ namespace Language_fr { LSTR MSG_STOP_PRINT = _UxGT("Arrêter impr."); LSTR MSG_PRINTING_OBJECT = _UxGT("Impression objet"); LSTR MSG_CANCEL_OBJECT = _UxGT("Annuler objet"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Annuler objet ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Annuler objet {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Récup. coup."); LSTR MSG_MEDIA_MENU = _UxGT("Impression SD"); LSTR MSG_NO_MEDIA = _UxGT("Pas de média"); @@ -540,7 +540,7 @@ namespace Language_fr { LSTR MSG_MMU2_RESETTING = _UxGT("Réinit. MMU..."); LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Retrait, click"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Composante ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Composante {"); LSTR MSG_MIXER = _UxGT("Mixeur"); LSTR MSG_GRADIENT = _UxGT("Dégradé"); LSTR MSG_FULL_GRADIENT = _UxGT("Dégradé complet"); diff --git a/Marlin/src/lcd/language/language_fr_na.h b/Marlin/src/lcd/language/language_fr_na.h index 9300b299eb..12fa0295ea 100644 --- a/Marlin/src/lcd/language/language_fr_na.h +++ b/Marlin/src/lcd/language/language_fr_na.h @@ -353,7 +353,7 @@ namespace Language_fr_na { LSTR MSG_STOP_PRINT = _UxGT("Arreter impr."); LSTR MSG_PRINTING_OBJECT = _UxGT("Impression objet"); LSTR MSG_CANCEL_OBJECT = _UxGT("Annuler objet"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Annuler objet ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Annuler objet {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Recup. coup."); LSTR MSG_MEDIA_MENU = _UxGT("Impression SD"); LSTR MSG_NO_MEDIA = _UxGT("Pas de media"); @@ -543,7 +543,7 @@ namespace Language_fr_na { LSTR MSG_MMU2_RESETTING = _UxGT("Reinit. MMU..."); LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Retrait, click"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Composante ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Composante {"); LSTR MSG_MIXER = _UxGT("Mixeur"); LSTR MSG_GRADIENT = _UxGT("Degrade"); LSTR MSG_FULL_GRADIENT = _UxGT("Degrade complet"); diff --git a/Marlin/src/lcd/language/language_gl.h b/Marlin/src/lcd/language/language_gl.h index da8a7047c7..83855dd56d 100644 --- a/Marlin/src/lcd/language/language_gl.h +++ b/Marlin/src/lcd/language/language_gl.h @@ -22,7 +22,7 @@ #pragma once /** - * Galician language (ISO "gl") + * Galician language * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html @@ -342,7 +342,7 @@ namespace Language_gl { LSTR MSG_STOP_PRINT = _UxGT("Deter impresión"); LSTR MSG_PRINTING_OBJECT = _UxGT("Imprimindo Obxecto"); LSTR MSG_CANCEL_OBJECT = _UxGT("Cancelar Obxecto"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancelar Obxecto ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancelar Obxecto {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Recuperar Impresión"); LSTR MSG_MEDIA_MENU = _UxGT("Tarxeta SD"); LSTR MSG_NO_MEDIA = _UxGT("Sen tarxeta SD"); @@ -525,7 +525,7 @@ namespace Language_gl { LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Expulsar, premer"); LSTR MSG_MIX = _UxGT("Mestura"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Compoñente ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Compoñente {"); LSTR MSG_MIXER = _UxGT("Mesturadora"); LSTR MSG_GRADIENT = _UxGT("Degradado"); LSTR MSG_FULL_GRADIENT = _UxGT("Degradado Total"); diff --git a/Marlin/src/lcd/language/language_hu.h b/Marlin/src/lcd/language/language_hu.h index 471f2ee8cb..99062ca5c3 100644 --- a/Marlin/src/lcd/language/language_hu.h +++ b/Marlin/src/lcd/language/language_hu.h @@ -240,7 +240,7 @@ namespace Language_hu { LSTR MSG_SET_LEDS_VIOLET = _UxGT("Viola"); LSTR MSG_SET_LEDS_WHITE = _UxGT("Fehér"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Alapérték"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Csatorna ="); + LSTR MSG_LED_CHANNEL_N = _UxGT("Csatorna {"); LSTR MSG_LEDS2 = _UxGT("LED-ek #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Fény #2 megadott"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Fényerö"); @@ -284,10 +284,10 @@ namespace Language_hu { LSTR MSG_FLOWMETER_SAFETY = _UxGT("Áramlásbiztonság"); LSTR MSG_LASER = _UxGT("Lézer"); LSTR MSG_FAN_SPEED = _UxGT("Hütés sebesség"); - LSTR MSG_FAN_SPEED_N = _UxGT("Hütés sebesség ="); - LSTR MSG_STORED_FAN_N = _UxGT("Tárolt hütés ="); + LSTR MSG_FAN_SPEED_N = _UxGT("Hütés sebesség {"); + LSTR MSG_STORED_FAN_N = _UxGT("Tárolt hütés {"); LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra hütés sebesség"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra hütés sebesség ="); + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra hütés sebesség {"); LSTR MSG_CONTROLLER_FAN = _UxGT("Hütésvezérlés"); LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Alapjárat"); LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Automatikus mód"); @@ -396,7 +396,7 @@ namespace Language_hu { LSTR MSG_END_LOOPS = _UxGT("Hurok ismétlés vége"); LSTR MSG_PRINTING_OBJECT = _UxGT("Objektum nyomtatása"); LSTR MSG_CANCEL_OBJECT = _UxGT("Objektum törlése"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Objektum törlése ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Objektum törlése {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Kiesés helyreáll."); LSTR MSG_MEDIA_MENU = _UxGT("Nyomtatás tárolóról"); LSTR MSG_NO_MEDIA = _UxGT("Nincs tároló"); @@ -587,7 +587,7 @@ namespace Language_hu { LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Kidob, kattint"); LSTR MSG_MIX = _UxGT("Kever"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Összetevö ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Összetevö {"); LSTR MSG_MIXER = _UxGT("Keverö"); LSTR MSG_GRADIENT = _UxGT("Színátm."); LSTR MSG_FULL_GRADIENT = _UxGT("Teljes színátm."); diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index 4bc7c0303a..bd0d2f2257 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -30,7 +30,7 @@ * Substitutions are applied for the following characters when used in menu items titles: * * $ displays an inserted string - * = displays '0'....'10' for indexes 0 - 10 + * { displays '0'....'10' for indexes 0 - 10 * ~ displays '1'....'11' for indexes 0 - 10 * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) * @ displays an axis name such as XYZUVW, or E for an extruder @@ -293,7 +293,7 @@ namespace Language_it { LSTR MSG_SET_LEDS_VIOLET = _UxGT("Viola"); LSTR MSG_SET_LEDS_WHITE = _UxGT("Bianco"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Predefinito"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Canale ="); + LSTR MSG_LED_CHANNEL_N = _UxGT("Canale {"); LSTR MSG_LEDS2 = _UxGT("Luci #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Presets luce #2"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Luminosità"); @@ -498,7 +498,7 @@ namespace Language_it { LSTR MSG_END_LOOPS = _UxGT("Fine cicli di rip."); LSTR MSG_PRINTING_OBJECT = _UxGT("Stampa Oggetto"); LSTR MSG_CANCEL_OBJECT = _UxGT("Cancella Oggetto"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Canc. Oggetto ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Canc. Oggetto {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Ripresa da PowerLoss"); LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Cont.proc.stampa"); LSTR MSG_MEDIA_MENU = _UxGT("Stampa da media"); @@ -734,7 +734,7 @@ namespace Language_it { LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Rimuovi, click"); LSTR MSG_MIX = _UxGT("Miscela"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Componente ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Componente {"); LSTR MSG_MIXER = _UxGT("Miscelatore"); LSTR MSG_GRADIENT = _UxGT("Gradiente"); LSTR MSG_FULL_GRADIENT = _UxGT("Gradiente pieno"); diff --git a/Marlin/src/lcd/language/language_pl.h b/Marlin/src/lcd/language/language_pl.h index 5bf4884941..855a1e3bd1 100644 --- a/Marlin/src/lcd/language/language_pl.h +++ b/Marlin/src/lcd/language/language_pl.h @@ -30,7 +30,7 @@ * Substitutions are applied for the following characters when used in menu items titles: * * $ displays an inserted string - * = displays '0'....'10' for indexes 0 - 10 + * { displays '0'....'10' for indexes 0 - 10 * ~ displays '1'....'11' for indexes 0 - 10 * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) * @ displays an axis name such as XYZUVW, or E for an extruder @@ -221,7 +221,7 @@ namespace Language_pl { LSTR MSG_SET_LEDS_VIOLET = _UxGT("Fioletowy"); LSTR MSG_SET_LEDS_WHITE = _UxGT("Biały"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Domyślny"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Kanał ="); + LSTR MSG_LED_CHANNEL_N = _UxGT("Kanał {"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Jasność"); LSTR MSG_CUSTOM_LEDS = _UxGT("Własne światła"); LSTR MSG_INTENSITY_R = _UxGT("Czerwony"); @@ -330,7 +330,7 @@ namespace Language_pl { LSTR MSG_STOP_PRINT = _UxGT("Stop"); LSTR MSG_PRINTING_OBJECT = _UxGT("Drukowanie obiektu"); LSTR MSG_CANCEL_OBJECT = _UxGT("Anunuj obiekt"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Anunuj obiekt ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Anunuj obiekt {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Odzyskiwanie po awarii"); LSTR MSG_MEDIA_MENU = _UxGT("Karta SD"); LSTR MSG_NO_MEDIA = _UxGT("Brak karty"); @@ -474,7 +474,7 @@ namespace Language_pl { LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Usuń, kliknij"); LSTR MSG_MIX = _UxGT("Miks"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponent ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponent {"); LSTR MSG_MIXER = _UxGT("Mikser"); LSTR MSG_FULL_GRADIENT = _UxGT("Pełny gradient"); LSTR MSG_TOGGLE_MIX = _UxGT("Przełacz miks"); diff --git a/Marlin/src/lcd/language/language_pt_br.h b/Marlin/src/lcd/language/language_pt_br.h index c17ca124ed..4ace61e116 100644 --- a/Marlin/src/lcd/language/language_pt_br.h +++ b/Marlin/src/lcd/language/language_pt_br.h @@ -293,7 +293,7 @@ namespace Language_pt_br { LSTR MSG_STOP_PRINT = _UxGT("Parar impressão"); LSTR MSG_PRINTING_OBJECT = _UxGT("Imprimindo objeto"); LSTR MSG_CANCEL_OBJECT = _UxGT("Cancelar Objeto"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancelar Objeto ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancelar Objeto {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Recuperar Impressão"); LSTR MSG_MEDIA_MENU = _UxGT("Imprimir do SD"); LSTR MSG_NO_MEDIA = _UxGT("Sem cartão SD"); diff --git a/Marlin/src/lcd/language/language_ro.h b/Marlin/src/lcd/language/language_ro.h index bdb9f226a9..327ba7ad81 100644 --- a/Marlin/src/lcd/language/language_ro.h +++ b/Marlin/src/lcd/language/language_ro.h @@ -348,7 +348,7 @@ namespace Language_ro { LSTR MSG_STOP_PRINT = _UxGT("Stop Print"); LSTR MSG_PRINTING_OBJECT = _UxGT("Printing Object"); LSTR MSG_CANCEL_OBJECT = _UxGT("Cancel Object"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Object ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Object {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Outage Recovery"); LSTR MSG_MEDIA_MENU = _UxGT("Print from Media"); LSTR MSG_NO_MEDIA = _UxGT("No Media"); @@ -532,7 +532,7 @@ namespace Language_ro { LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Remove, click"); LSTR MSG_MIX = _UxGT("Mix"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Component ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Component {"); LSTR MSG_MIXER = _UxGT("Mixer"); LSTR MSG_GRADIENT = _UxGT("Gradient"); LSTR MSG_FULL_GRADIENT = _UxGT("Full Gradient"); diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index 6dd773f77b..b5815be1bd 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -310,7 +310,7 @@ namespace Language_ru { LSTR MSG_SET_LEDS_VIOLET = _UxGT("Фиолетовый"); LSTR MSG_SET_LEDS_WHITE = _UxGT("Белый"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Свет по умолчанию"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Канал ="); + LSTR MSG_LED_CHANNEL_N = _UxGT("Канал {"); LSTR MSG_LEDS2 = _UxGT("Свет #2"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 LSTR MSG_NEO2_PRESETS = _UxGT("Свет #2 предустановки"); @@ -485,7 +485,7 @@ namespace Language_ru { LSTR MSG_STOP_PRINT = _UxGT("Остановить печать"); LSTR MSG_PRINTING_OBJECT = _UxGT("Печать объекта"); LSTR MSG_CANCEL_OBJECT = _UxGT("Завершить объект"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Завершить объект ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Завершить объект {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Восстановение сбоя"); LSTR MSG_MEDIA_MENU = _UxGT("Печать с SD карты"); LSTR MSG_NO_MEDIA = _UxGT("Нет SD карты"); @@ -734,7 +734,7 @@ namespace Language_ru { #else LSTR MSG_MIX = _UxGT("Смешив."); #endif - LSTR MSG_MIX_COMPONENT_N = _UxGT("Компонент ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Компонент {"); LSTR MSG_MIXER = _UxGT("Смеситель"); LSTR MSG_GRADIENT = _UxGT("Градиент"); LSTR MSG_FULL_GRADIENT = _UxGT("Полный градиент"); diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h index c78029048b..907b865bd9 100644 --- a/Marlin/src/lcd/language/language_sk.h +++ b/Marlin/src/lcd/language/language_sk.h @@ -34,7 +34,7 @@ * Substitutions are applied for the following characters when used in menu items titles: * * $ displays an inserted string - * = displays '0'....'10' for indexes 0 - 10 + * { displays '0'....'10' for indexes 0 - 10 * ~ displays '1'....'11' for indexes 0 - 10 * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) * @ displays an axis name such as XYZUVW, or E for an extruder @@ -294,7 +294,7 @@ namespace Language_sk { LSTR MSG_SET_LEDS_VIOLET = _UxGT("Fialová"); LSTR MSG_SET_LEDS_WHITE = _UxGT("Biela"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Obnoviť nastavenie"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Kanál ="); + LSTR MSG_LED_CHANNEL_N = _UxGT("Kanál {"); LSTR MSG_LEDS2 = _UxGT("Svetlo #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Predvolby svetla #2"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Jas"); @@ -500,7 +500,7 @@ namespace Language_sk { LSTR MSG_HOST_START_PRINT = _UxGT("Spustiť z hosta"); LSTR MSG_PRINTING_OBJECT = _UxGT("Tlačím objekt"); LSTR MSG_CANCEL_OBJECT = _UxGT("Zrušiť objekt"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušiť objekt ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušiť objekt {"); LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Pokračovať v úlohe"); LSTR MSG_MEDIA_MENU = _UxGT("Vytlačiť z karty"); LSTR MSG_TURN_OFF = _UxGT("Vypnite tlačiareň"); @@ -509,7 +509,7 @@ namespace Language_sk { LSTR MSG_HOST_START_PRINT = _UxGT("Spustiť z hosta"); LSTR MSG_PRINTING_OBJECT = _UxGT("Tlačím obj."); LSTR MSG_CANCEL_OBJECT = _UxGT("Zrušiť obj."); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušiť obj. ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušiť obj. {"); LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Pokrač. v úlohe"); LSTR MSG_MEDIA_MENU = _UxGT("Tlač z karty"); LSTR MSG_TURN_OFF = _UxGT("Vypnit. teraz"); diff --git a/Marlin/src/lcd/language/language_sv.h b/Marlin/src/lcd/language/language_sv.h index 13ae8fcd29..570bc3df8d 100644 --- a/Marlin/src/lcd/language/language_sv.h +++ b/Marlin/src/lcd/language/language_sv.h @@ -233,7 +233,7 @@ namespace Language_sv { LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violet"); LSTR MSG_SET_LEDS_WHITE = _UxGT("Vitt"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Standard"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal ="); + LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal {"); LSTR MSG_LEDS2 = _UxGT("Ljus #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Ljus #2 Förinställd"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Ljusstyrka"); @@ -381,7 +381,7 @@ namespace Language_sv { LSTR MSG_END_LOOPS = _UxGT("Slut Upprepningsloop"); LSTR MSG_PRINTING_OBJECT = _UxGT("Skriver Objekt"); LSTR MSG_CANCEL_OBJECT = _UxGT("Avbryt Objekt"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Avbryt Objekt ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Avbryt Objekt {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Ström Avbrott"); LSTR MSG_MEDIA_MENU = _UxGT("Skriv fråm Media"); LSTR MSG_NO_MEDIA = _UxGT("Inget Media"); @@ -569,7 +569,7 @@ namespace Language_sv { LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Ta bort, Klicka"); LSTR MSG_MIX = _UxGT("Mixa"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponent ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponent {"); LSTR MSG_MIXER = _UxGT("Mixer"); LSTR MSG_GRADIENT = _UxGT("Gradient"); LSTR MSG_FULL_GRADIENT = _UxGT("Full Gradient"); diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h index 414d545927..1054137230 100644 --- a/Marlin/src/lcd/language/language_tr.h +++ b/Marlin/src/lcd/language/language_tr.h @@ -280,7 +280,7 @@ namespace Language_tr { LSTR MSG_SET_LEDS_VIOLET = _UxGT("Menekşe"); LSTR MSG_SET_LEDS_WHITE = _UxGT("Beyaz"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Varsayılan"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal ="); + LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal {"); LSTR MSG_LEDS2 = _UxGT("Işıklar #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Işık #2 Ön Ayarları"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Parlaklık"); @@ -479,7 +479,7 @@ namespace Language_tr { LSTR MSG_HOST_START_PRINT = _UxGT("Host Baskıyı başlat"); LSTR MSG_PRINTING_OBJECT = _UxGT("Yazdırma Nesnesi"); LSTR MSG_CANCEL_OBJECT = _UxGT("Nesneyi İptal Et"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et {"); LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Yazdırmaya Devam Et"); LSTR MSG_MEDIA_MENU = _UxGT("SD Karttan Yazdır"); LSTR MSG_TURN_OFF = _UxGT("Yazıcıyı kapat"); @@ -488,7 +488,7 @@ namespace Language_tr { LSTR MSG_HOST_START_PRINT = _UxGT("Host Başlatma"); LSTR MSG_PRINTING_OBJECT = _UxGT("Nesneyi Yazdır"); LSTR MSG_CANCEL_OBJECT = _UxGT("Nesneyi İptal Et"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et {"); LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("İşe Devam Et"); LSTR MSG_MEDIA_MENU = MEDIA_TYPE_EN _UxGT(" Yazdır"); LSTR MSG_TURN_OFF = _UxGT("Şimdi kapat"); @@ -720,7 +720,7 @@ namespace Language_tr { LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Kaldır, tıkla"); LSTR MSG_MIX = _UxGT("Karışım"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Bileşen ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Bileşen {"); LSTR MSG_MIXER = _UxGT("Karıştırıcı"); LSTR MSG_GRADIENT = _UxGT("Gradyan"); LSTR MSG_FULL_GRADIENT = _UxGT("Tam Gradyan"); diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h index 7bdd896a33..4ee32fe4bc 100644 --- a/Marlin/src/lcd/language/language_uk.h +++ b/Marlin/src/lcd/language/language_uk.h @@ -313,7 +313,7 @@ namespace Language_uk { LSTR MSG_SET_LEDS_VIOLET = _UxGT("Фіолетовий"); LSTR MSG_SET_LEDS_WHITE = _UxGT("Білий"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("За умовчанням"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Канал ="); + LSTR MSG_LED_CHANNEL_N = _UxGT("Канал {"); LSTR MSG_LEDS2 = _UxGT("Світло #2"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 LSTR MSG_NEO2_PRESETS = _UxGT("Передустановка світла #2"); @@ -507,7 +507,7 @@ namespace Language_uk { LSTR MSG_END_LOOPS = _UxGT("End Repeat Loops"); // needs translation LSTR MSG_PRINTING_OBJECT = _UxGT("Друк об'єкта"); LSTR MSG_CANCEL_OBJECT = _UxGT("Завершити об'єкт"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Завершити об'єкт ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Завершити об'єкт {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Віднов. після збою"); LSTR MSG_MEDIA_MENU = _UxGT("Друкувати з SD"); LSTR MSG_NO_MEDIA = _UxGT("SD-картки немає"); @@ -780,7 +780,7 @@ namespace Language_uk { #else LSTR MSG_MIX = _UxGT("Змішув."); #endif - LSTR MSG_MIX_COMPONENT_N = _UxGT("Компонент ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("Компонент {"); LSTR MSG_MIXER = _UxGT("Змішувач"); LSTR MSG_GRADIENT = _UxGT("Градієнт"); LSTR MSG_FULL_GRADIENT = _UxGT("Повний градієнт"); diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h index 3e8ab9870f..27f2a597c6 100644 --- a/Marlin/src/lcd/language/language_zh_CN.h +++ b/Marlin/src/lcd/language/language_zh_CN.h @@ -198,27 +198,27 @@ namespace Language_zh_CN { LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. 细调所有的"); LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. 保存热床网格"); - LSTR MSG_LED_CONTROL = _UxGT("LED控制"); // "LED Control") - LSTR MSG_LEDS = _UxGT("灯"); // "Lights") - LSTR MSG_LED_PRESETS = _UxGT("灯预置"); // "Light Presets") - LSTR MSG_SET_LEDS_RED = _UxGT("红"); // "Red") - LSTR MSG_SET_LEDS_ORANGE = _UxGT("橙"); // "Orange") - LSTR MSG_SET_LEDS_YELLOW = _UxGT("黄"); // "Yellow") - LSTR MSG_SET_LEDS_GREEN = _UxGT("绿"); // "Green") - LSTR MSG_SET_LEDS_BLUE = _UxGT("蓝"); // "Blue") - LSTR MSG_SET_LEDS_INDIGO = _UxGT("青"); // "Indigo") - LSTR MSG_SET_LEDS_VIOLET = _UxGT("紫"); // "Violet") - LSTR MSG_SET_LEDS_WHITE = _UxGT("白"); // "White") - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("缺省"); // "Default") - LSTR MSG_CUSTOM_LEDS = _UxGT("定制灯"); // "Custom Lights") - LSTR MSG_INTENSITY_R = _UxGT("红饱和度"); // "Red Intensity") - LSTR MSG_INTENSITY_G = _UxGT("绿饱和度"); // "Green Intensity") - LSTR MSG_INTENSITY_B = _UxGT("蓝饱和度"); // "Blue Intensity") - LSTR MSG_INTENSITY_W = _UxGT("白饱和度"); // "White Intensity") - LSTR MSG_LED_BRIGHTNESS = _UxGT("亮度"); // "Brightness") + LSTR MSG_LED_CONTROL = _UxGT("LED控制"); // "LED Control" + LSTR MSG_LEDS = _UxGT("灯"); // "Lights" + LSTR MSG_LED_PRESETS = _UxGT("灯预置"); // "Light Presets" + LSTR MSG_SET_LEDS_RED = _UxGT("红"); // "Red" + LSTR MSG_SET_LEDS_ORANGE = _UxGT("橙"); // "Orange" + LSTR MSG_SET_LEDS_YELLOW = _UxGT("黄"); // "Yellow" + LSTR MSG_SET_LEDS_GREEN = _UxGT("绿"); // "Green" + LSTR MSG_SET_LEDS_BLUE = _UxGT("蓝"); // "Blue" + LSTR MSG_SET_LEDS_INDIGO = _UxGT("青"); // "Indigo" + LSTR MSG_SET_LEDS_VIOLET = _UxGT("紫"); // "Violet" + LSTR MSG_SET_LEDS_WHITE = _UxGT("白"); // "White" + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("缺省"); // "Default" + LSTR MSG_CUSTOM_LEDS = _UxGT("定制灯"); // "Custom Lights" + LSTR MSG_INTENSITY_R = _UxGT("红饱和度"); // "Red Intensity" + LSTR MSG_INTENSITY_G = _UxGT("绿饱和度"); // "Green Intensity" + LSTR MSG_INTENSITY_B = _UxGT("蓝饱和度"); // "Blue Intensity" + LSTR MSG_INTENSITY_W = _UxGT("白饱和度"); // "White Intensity" + LSTR MSG_LED_BRIGHTNESS = _UxGT("亮度"); // "Brightness" - LSTR MSG_MOVING = _UxGT("移动..."); // "Moving...") - LSTR MSG_FREE_XY = _UxGT("释放 XY"); // "Free XY") + LSTR MSG_MOVING = _UxGT("移动..."); // "Moving..." + LSTR MSG_FREE_XY = _UxGT("释放 XY"); // "Free XY" LSTR MSG_MOVE_X = _UxGT("移动X"); // "Move X" LSTR MSG_MOVE_Y = _UxGT("移动Y"); // "Move Y" LSTR MSG_MOVE_Z = _UxGT("移动Z"); // "Move Z" @@ -348,7 +348,7 @@ namespace Language_zh_CN { LSTR MSG_STOP_PRINT = _UxGT("停止打印"); // "Stop print" LSTR MSG_PRINTING_OBJECT = _UxGT("打印物体"); LSTR MSG_CANCEL_OBJECT = _UxGT("取消物体"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("取消物体 ="); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("取消物体 {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("中断恢复"); LSTR MSG_MEDIA_MENU = _UxGT("从存储卡上打印"); // "Print from SD" LSTR MSG_NO_MEDIA = _UxGT("无存储卡"); // "No SD card" @@ -532,7 +532,7 @@ namespace Language_zh_CN { LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("移出, 按下"); LSTR MSG_MIX = _UxGT("混合"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("器件 ="); + LSTR MSG_MIX_COMPONENT_N = _UxGT("器件 {"); LSTR MSG_MIXER = _UxGT("混合器"); LSTR MSG_GRADIENT = _UxGT("梯度"); LSTR MSG_FULL_GRADIENT = _UxGT("全梯度"); diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h index 5f9f0e3904..570dc292c5 100644 --- a/Marlin/src/lcd/language/language_zh_TW.h +++ b/Marlin/src/lcd/language/language_zh_TW.h @@ -129,7 +129,7 @@ namespace Language_zh_TW { LSTR MSG_UBL_ACTIVATE_MESH = _UxGT("啟動UBL"); // "Activate UBL" LSTR MSG_UBL_DEACTIVATE_MESH = _UxGT("關閉UBL"); // "Deactivate UBL" LSTR MSG_UBL_SET_TEMP_BED = _UxGT("置設熱床溫度"); // "Bed Temp" - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("置設熱床溫度"); // "Bed Temp") + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("置設熱床溫度"); // "Bed Temp" LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("置設噴嘴溫度"); // "Hotend Temp" LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("熱端溫度"); // "Hotend Temp" LSTR MSG_UBL_MESH_EDIT = _UxGT("網格編輯"); // "Mesh Edit" @@ -194,27 +194,27 @@ namespace Language_zh_TW { LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. 細調所有的"); LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. 保存熱床網格"); - LSTR MSG_LED_CONTROL = _UxGT("燈管控制"); // "LED Control") - LSTR MSG_LEDS = _UxGT("燈"); // "Lights") - LSTR MSG_LED_PRESETS = _UxGT("燈預置"); // "Light Presets") - LSTR MSG_SET_LEDS_RED = _UxGT("红"); // "Red") - LSTR MSG_SET_LEDS_ORANGE = _UxGT("橙"); // "Orange") - LSTR MSG_SET_LEDS_YELLOW = _UxGT("黃"); // "Yellow") - LSTR MSG_SET_LEDS_GREEN = _UxGT("綠"); // "Green") - LSTR MSG_SET_LEDS_BLUE = _UxGT("藍"); // "Blue") - LSTR MSG_SET_LEDS_INDIGO = _UxGT("青"); // "Indigo") - LSTR MSG_SET_LEDS_VIOLET = _UxGT("紫"); // "Violet") - LSTR MSG_SET_LEDS_WHITE = _UxGT("白"); // "White") - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("復歸"); // "Default") - LSTR MSG_CUSTOM_LEDS = _UxGT("定制燈"); // "Custom Lights") - LSTR MSG_INTENSITY_R = _UxGT("紅飽和度"); // "Red Intensity") - LSTR MSG_INTENSITY_G = _UxGT("綠飽和度"); // "Green Intensity") - LSTR MSG_INTENSITY_B = _UxGT("藍飽和度"); // "Blue Intensity") - LSTR MSG_INTENSITY_W = _UxGT("白飽和度"); // "White Intensity") - LSTR MSG_LED_BRIGHTNESS = _UxGT("亮度"); // "Brightness") + LSTR MSG_LED_CONTROL = _UxGT("燈管控制"); // "LED Control" + LSTR MSG_LEDS = _UxGT("燈"); // "Lights" + LSTR MSG_LED_PRESETS = _UxGT("燈預置"); // "Light Presets" + LSTR MSG_SET_LEDS_RED = _UxGT("红"); // "Red" + LSTR MSG_SET_LEDS_ORANGE = _UxGT("橙"); // "Orange" + LSTR MSG_SET_LEDS_YELLOW = _UxGT("黃"); // "Yellow" + LSTR MSG_SET_LEDS_GREEN = _UxGT("綠"); // "Green" + LSTR MSG_SET_LEDS_BLUE = _UxGT("藍"); // "Blue" + LSTR MSG_SET_LEDS_INDIGO = _UxGT("青"); // "Indigo" + LSTR MSG_SET_LEDS_VIOLET = _UxGT("紫"); // "Violet" + LSTR MSG_SET_LEDS_WHITE = _UxGT("白"); // "White" + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("復歸"); // "Default" + LSTR MSG_CUSTOM_LEDS = _UxGT("定制燈"); // "Custom Lights" + LSTR MSG_INTENSITY_R = _UxGT("紅飽和度"); // "Red Intensity" + LSTR MSG_INTENSITY_G = _UxGT("綠飽和度"); // "Green Intensity" + LSTR MSG_INTENSITY_B = _UxGT("藍飽和度"); // "Blue Intensity" + LSTR MSG_INTENSITY_W = _UxGT("白飽和度"); // "White Intensity" + LSTR MSG_LED_BRIGHTNESS = _UxGT("亮度"); // "Brightness" - LSTR MSG_MOVING = _UxGT("移動 ..."); // "Moving...") - LSTR MSG_FREE_XY = _UxGT("釋放 XY"); // "Free XY") + LSTR MSG_MOVING = _UxGT("移動 ..."); // "Moving..." + LSTR MSG_FREE_XY = _UxGT("釋放 XY"); // "Free XY" LSTR MSG_MOVE_X = _UxGT("移動X"); // "Move X" LSTR MSG_MOVE_Y = _UxGT("移動Y"); // "Move Y" LSTR MSG_MOVE_Z = _UxGT("移動Z"); // "Move Z" @@ -235,10 +235,10 @@ namespace Language_zh_TW { LSTR MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" 熱床"); // "Bed" LSTR MSG_CHAMBER = _UxGT("Enclosure"); LSTR MSG_FAN_SPEED = _UxGT("風扇速率"); // "Fan speed" - LSTR MSG_FAN_SPEED_N = _UxGT("風扇速率 ="); - LSTR MSG_STORED_FAN_N = _UxGT("Stored Fan ="); + LSTR MSG_FAN_SPEED_N = _UxGT("風扇速率 {"); + LSTR MSG_STORED_FAN_N = _UxGT("Stored Fan {"); LSTR MSG_EXTRA_FAN_SPEED = _UxGT("額外風扇速率"); // "Extra fan speed" - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("額外風扇速率 ="); + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("額外風扇速率 {"); LSTR MSG_FLOW = _UxGT("擠出速率"); LSTR MSG_FLOW_N = _UxGT("擠出速率 ~"); // "Flow" LSTR MSG_CONTROL = _UxGT("控制"); // "Control" @@ -322,7 +322,7 @@ namespace Language_zh_TW { LSTR MSG_STOP_PRINT = _UxGT("停止列印"); // "Stop print" LSTR MSG_PRINTING_OBJECT = _UxGT("列印物件"); // "Printing Object" LSTR MSG_CANCEL_OBJECT = _UxGT("中止物件"); // "Cancel Object" - LSTR MSG_CANCEL_OBJECT_N = _UxGT("中止物件 ="); // "Cancel Object =" + LSTR MSG_CANCEL_OBJECT_N = _UxGT("中止物件 {"); // "Cancel Object {" LSTR MSG_OUTAGE_RECOVERY = _UxGT("中斷恢復"); // "Outage Recovery" LSTR MSG_MEDIA_MENU = _UxGT("從記憶卡上列印"); // "Print from SD" LSTR MSG_NO_MEDIA = _UxGT("無記憶卡"); // "No SD card" diff --git a/Marlin/src/lcd/lcdprint.cpp b/Marlin/src/lcd/lcdprint.cpp index 650824e553..162f01a12c 100644 --- a/Marlin/src/lcd/lcdprint.cpp +++ b/Marlin/src/lcd/lcdprint.cpp @@ -37,7 +37,7 @@ * Print a string with optional substitutions: * * $ displays the clipped string given by fstr or cstr - * = displays '0'....'10' for indexes 0 - 10 + * { displays '0'....'10' for indexes 0 - 10 * ~ displays '1'....'11' for indexes 0 - 10 * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) * @ displays an axis name such as XYZUVW, or E for an extruder @@ -50,11 +50,11 @@ lcd_uint_t lcd_put_u8str_P(PGM_P const ptpl, const int8_t ind, const char *cstr/ lchar_t wc; p = get_utf8_value_cb(p, read_byte_rom, wc); if (!wc) break; - if (wc == '=' || wc == '~' || wc == '*') { + if (wc == '{' || wc == '~' || wc == '*') { if (ind >= 0) { if (wc == '*') { lcd_put_u8str(F("E")); n--; } if (n) { - int8_t inum = ind + ((wc == '=') ? 0 : LCD_FIRST_TOOL); + int8_t inum = ind + ((wc == '{') ? 0 : LCD_FIRST_TOOL); if (inum >= 10) { lcd_put_lchar('0' + (inum / 10)); n--; inum %= 10; diff --git a/Marlin/src/lcd/lcdprint.h b/Marlin/src/lcd/lcdprint.h index bcf85cb693..623c9dd4b9 100644 --- a/Marlin/src/lcd/lcdprint.h +++ b/Marlin/src/lcd/lcdprint.h @@ -209,7 +209,7 @@ inline int lcd_put_u8str(const lcd_uint_t col, const lcd_uint_t row, FSTR_P cons * @brief Draw a string with optional substitution * @details Print a string with optional substitutions: * $ displays the clipped string given by fstr or cstr - * = displays '0'....'10' for indexes 0 - 10 + * { displays '0'....'10' for indexes 0 - 10 * ~ displays '1'....'11' for indexes 0 - 10 * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) * @ displays an axis name such as XYZUVW, or E for an extruder diff --git a/Marlin/src/lcd/tft/tft_string.cpp b/Marlin/src/lcd/tft/tft_string.cpp index 1b65f226d9..82444a4398 100644 --- a/Marlin/src/lcd/tft/tft_string.cpp +++ b/Marlin/src/lcd/tft/tft_string.cpp @@ -179,7 +179,7 @@ void TFT_String::set() { * Add a string, applying substitutions for the following characters: * * $ displays the string given by fstr or cstr - * = displays '0'....'10' for indexes 0 - 10 + * { displays '0'....'10' for indexes 0 - 10 * ~ displays '1'....'11' for indexes 0 - 10 * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) * @ displays an axis name such as XYZUVW, or E for an extruder @@ -191,9 +191,9 @@ void TFT_String::add(const char *tpl, const int8_t index, const char *cstr/*=nul tpl = get_utf8_value_cb(tpl, read_byte_ram, wc); const uint16_t ch = uint16_t(wc); - if (ch == '=' || ch == '~' || ch == '*') { + if (ch == '{' || ch == '~' || ch == '*') { if (index >= 0) { - int8_t inum = index + ((ch == '=') ? 0 : LCD_FIRST_TOOL); + int8_t inum = index + ((ch == '{') ? 0 : LCD_FIRST_TOOL); if (ch == '*') add_character('E'); if (inum >= 10) { add_character('0' + (inum / 10)); inum %= 10; } add_character('0' + inum); From 077a620e21fcb1cd355129a56f12125d067f2e0f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 24 Apr 2023 05:24:10 -0500 Subject: [PATCH 325/659] =?UTF-8?q?=F0=9F=93=9D=20Developer=20note=20in=20?= =?UTF-8?q?boards.h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/boards.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index 2f2ac1664e..a51d9a12e1 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -21,6 +21,11 @@ */ #pragma once +/** + * Whenever changes are made to this file, please update Marlin/Makefile + * and _data/boards.yml in the MarlinDocumentation repo. + */ + #include "macros.h" #define BOARD_UNKNOWN -1 From c034819cf8b81626cc0af719cdcc776ffdb6269f Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 25 Apr 2023 00:20:57 +0000 Subject: [PATCH 326/659] [cron] Bump distribution date (2023-04-25) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index a2a254824d..764df84470 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-24" +//#define STRING_DISTRIBUTION_DATE "2023-04-25" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 146d422033..cf9077c43e 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-24" + #define STRING_DISTRIBUTION_DATE "2023-04-25" #endif /** From 650e6fc42691a634c0a2f303734a6023e80eeecc Mon Sep 17 00:00:00 2001 From: Anson Liu Date: Mon, 24 Apr 2023 22:07:12 -0400 Subject: [PATCH 327/659] =?UTF-8?q?=F0=9F=94=A8=20Prevent=20SlowSoftWire?= =?UTF-8?q?=20+=20Wire=20name=20conflict=20(#25707)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/shared/eeprom_if_i2c.cpp | 21 +++++++++++---------- Marlin/src/lcd/marlinui.cpp | 2 +- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Marlin/src/HAL/shared/eeprom_if_i2c.cpp b/Marlin/src/HAL/shared/eeprom_if_i2c.cpp index 6b559e234b..bba9c626a4 100644 --- a/Marlin/src/HAL/shared/eeprom_if_i2c.cpp +++ b/Marlin/src/HAL/shared/eeprom_if_i2c.cpp @@ -33,13 +33,14 @@ #if ENABLED(SOFT_I2C_EEPROM) #include - SlowSoftWire Wire = SlowSoftWire(I2C_SDA_PIN, I2C_SCL_PIN, true); + SlowSoftWire eWire = SlowSoftWire(I2C_SDA_PIN, I2C_SCL_PIN, true); #else #include + #define eWire Wire #endif void eeprom_init() { - Wire.begin( + eWire.begin( #if PINS_EXIST(I2C_SCL, I2C_SDA) && DISABLED(SOFT_I2C_EEPROM) uint8_t(I2C_SDA_PIN), uint8_t(I2C_SCL_PIN) #endif @@ -75,16 +76,16 @@ static uint8_t _eeprom_calc_device_address(uint8_t * const pos) { static void _eeprom_begin(uint8_t * const pos) { const unsigned eeprom_address = (unsigned)pos; - Wire.beginTransmission(_eeprom_calc_device_address(pos)); + eWire.beginTransmission(_eeprom_calc_device_address(pos)); if (!SMALL_EEPROM) - Wire.write(uint8_t((eeprom_address >> 8) & 0xFF)); // Address High, if needed - Wire.write(uint8_t(eeprom_address & 0xFF)); // Address Low + eWire.write(uint8_t((eeprom_address >> 8) & 0xFF)); // Address High, if needed + eWire.write(uint8_t(eeprom_address & 0xFF)); // Address Low } void eeprom_write_byte(uint8_t *pos, uint8_t value) { _eeprom_begin(pos); - Wire.write(value); - Wire.endTransmission(); + eWire.write(value); + eWire.endTransmission(); // wait for write cycle to complete // this could be done more efficiently with "acknowledge polling" @@ -93,9 +94,9 @@ void eeprom_write_byte(uint8_t *pos, uint8_t value) { uint8_t eeprom_read_byte(uint8_t *pos) { _eeprom_begin(pos); - Wire.endTransmission(); - Wire.requestFrom(_eeprom_calc_device_address(pos), (byte)1); - return Wire.available() ? Wire.read() : 0xFF; + eWire.endTransmission(); + eWire.requestFrom(_eeprom_calc_device_address(pos), (byte)1); + return eWire.available() ? eWire.read() : 0xFF; } #endif // USE_SHARED_EEPROM diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index b3db930fe4..75e24e2313 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -174,7 +174,7 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; #endif #if HAS_U8GLIB_I2C_OLED && PINS_EXIST(I2C_SCL, I2C_SDA) && DISABLED(SOFT_I2C_EEPROM) - #include "Wire.h" + #include #endif // Encoder Handling From d1738e946abda285f9841ca4329d43b86f7e297f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 24 Apr 2023 21:40:08 -0500 Subject: [PATCH 328/659] =?UTF-8?q?=F0=9F=94=A7=20Fix=20LCD=5FSERIAL=5FPOR?= =?UTF-8?q?T=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_LCD.h | 23 ++++++++++---------- Marlin/src/inc/Conditionals_adv.h | 19 ++++++++-------- Marlin/src/pins/ramps/pins_PANOWIN_CUTLASS.h | 7 ------ Marlin/src/pins/stm32f1/pins_CREALITY_V521.h | 5 ----- 4 files changed, 20 insertions(+), 34 deletions(-) diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index b11ede3dc5..f012bd9e36 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -488,13 +488,8 @@ #endif #endif -// Serial Controllers require LCD_SERIAL_PORT -#if ANY(HAS_DGUS_LCD, MALYAN_LCD, ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON, NEXTION_TFT) - #define LCD_NEEDS_SERIAL_PORT 1 -#endif - // Extensible UI serial touch screens. (See src/lcd/extui) -#if EITHER(LCD_NEEDS_SERIAL_PORT, TOUCH_UI_FTDI_EVE) +#if ANY(HAS_DGUS_LCD, MALYAN_LCD, ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON, NEXTION_TFT, TOUCH_UI_FTDI_EVE) #define IS_EXTUI 1 #define EXTENSIBLE_UI #endif @@ -506,18 +501,22 @@ #if EITHER(HAS_DWIN_E3V2_BASIC, DWIN_CREALITY_LCD_JYERSUI) #define HAS_DWIN_E3V2 1 #endif -#if ENABLED(DWIN_LCD_PROUI) - #define DO_LIST_BIN_FILES 1 -#endif // E3V2 extras #if HAS_DWIN_E3V2 || IS_DWIN_MARLINUI #define SERIAL_CATCHALL 0 #define HAS_LCD_BRIGHTNESS 1 #define LCD_BRIGHTNESS_MAX 250 - #if ENABLED(DWIN_LCD_PROUI) - #define LCD_BRIGHTNESS_DEFAULT 127 - #endif +#endif + +#if ENABLED(DWIN_LCD_PROUI) + #define DO_LIST_BIN_FILES 1 + #define LCD_BRIGHTNESS_DEFAULT 127 +#endif + +// Serial Controllers require LCD_SERIAL_PORT +#if ANY(IS_DWIN_MARLINUI, HAS_DWIN_E3V2, HAS_DGUS_LCD, MALYAN_LCD, ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON, NEXTION_TFT) + #define LCD_IS_SERIAL_HOST 1 #endif #if HAS_WIRED_LCD diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 929a7c78cf..119d69ee3d 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -1203,17 +1203,16 @@ #endif /** - * LCD_SERIAL_PORT must be defined ahead of HAL.h + * LCD_SERIAL_PORT must be defined ahead of HAL.h and + * currently HAL.h must be included ahead of pins.h. */ -#ifndef LCD_SERIAL_PORT - #if HAS_DWIN_E3V2 || IS_DWIN_MARLINUI || HAS_DGUS_LCD - #if MB(BTT_SKR_MINI_E3_V1_0, BTT_SKR_MINI_E3_V1_2, BTT_SKR_MINI_E3_V2_0, BTT_SKR_MINI_E3_V3_0, BTT_SKR_E3_TURBO, BTT_OCTOPUS_V1_1) - #define LCD_SERIAL_PORT 1 - #elif MB(CREALITY_V24S1_301, CREALITY_V24S1_301F4, CREALITY_V423, MKS_ROBIN) - #define LCD_SERIAL_PORT 2 // Creality Ender3S1, MKS Robin - #else - #define LCD_SERIAL_PORT 3 // Other boards - #endif +#if LCD_IS_SERIAL_HOST && !defined(LCD_SERIAL_PORT) + #if MB(BTT_SKR_MINI_E3_V1_0, BTT_SKR_MINI_E3_V1_2, BTT_SKR_MINI_E3_V2_0, BTT_SKR_MINI_E3_V3_0, BTT_SKR_E3_TURBO, BTT_OCTOPUS_V1_1) + #define LCD_SERIAL_PORT 1 + #elif MB(CREALITY_V24S1_301, CREALITY_V24S1_301F4, CREALITY_V423, MKS_ROBIN, PANOWIN_CUTLASS, KODAMA_BARDO) + #define LCD_SERIAL_PORT 2 + #else + #define LCD_SERIAL_PORT 3 #endif #ifdef LCD_SERIAL_PORT #define AUTO_ASSIGNED_LCD_SERIAL 1 diff --git a/Marlin/src/pins/ramps/pins_PANOWIN_CUTLASS.h b/Marlin/src/pins/ramps/pins_PANOWIN_CUTLASS.h index cc651cc8ef..11451e95a4 100755 --- a/Marlin/src/pins/ramps/pins_PANOWIN_CUTLASS.h +++ b/Marlin/src/pins/ramps/pins_PANOWIN_CUTLASS.h @@ -102,13 +102,6 @@ #define SPINDLE_LASER_ENA_PIN 74 // J7 #endif -// -// Serial LCD -// -#if LCD_NEEDS_SERIAL_PORT && !defined(LCD_SERIAL_PORT) - #define LCD_SERIAL_PORT 2 // D16 H1 (TX2), D17 H0 (RX2) -#endif - // // SD Card // diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h index e54469afff..81cb1e1f79 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h @@ -219,8 +219,3 @@ #endif #endif - -// DGUS LCDs -#if HAS_DGUS_LCD - #define LCD_SERIAL_PORT 3 -#endif From f5a905a64121e4ff43894d295ce6990e55aa1149 Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Tue, 25 Apr 2023 04:51:44 +0200 Subject: [PATCH 329/659] =?UTF-8?q?=E2=9C=A8=20TEMP=5FSENSOR=5FSOC=20(#256?= =?UTF-8?q?42)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration.h | 141 +++---- Marlin/Configuration_adv.h | 15 +- Marlin/src/HAL/STM32/HAL.h | 1 + Marlin/src/HAL/STM32/inc/SanityCheck.h | 4 + Marlin/src/HAL/STM32/temp_soc.h | 346 ++++++++++++++++++ Marlin/src/HAL/STM32F1/HAL.cpp | 3 + Marlin/src/core/language.h | 1 + Marlin/src/feature/controllerfan.cpp | 8 +- Marlin/src/inc/Conditionals_adv.h | 8 +- Marlin/src/inc/Conditionals_post.h | 11 +- Marlin/src/inc/SanityCheck.h | 14 +- Marlin/src/module/temperature.cpp | 58 ++- Marlin/src/module/temperature.h | 25 ++ Marlin/src/module/thermistor/thermistors.h | 4 + .../src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h | 5 +- Marlin/src/pins/pins_postprocess.h | 5 + Marlin/src/pins/rambo/pins_EINSY_RAMBO.h | 5 +- Marlin/src/pins/sam/pins_DUE3DOM_MINI.h | 5 +- .../src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h | 18 +- .../src/pins/stm32f4/pins_BTT_BTT002_V1_0.h | 5 +- buildroot/share/PlatformIO/scripts/schema.py | 2 +- buildroot/tests/STM32F103RC_btt_USB | 4 +- 22 files changed, 587 insertions(+), 101 deletions(-) create mode 100644 Marlin/src/HAL/STM32/temp_soc.h diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 6e2f409613..047beac89c 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -432,78 +432,67 @@ // @section temperature /** - * --NORMAL IS 4.7kΩ PULLUP!-- 1kΩ pullup can be used on hotend sensor, using correct resistor and table + * Temperature Sensors: * - * Temperature sensors available: - * - * SPI RTD/Thermocouple Boards - IMPORTANT: Read the NOTE below! - * ------- - * -5 : MAX31865 with Pt100/Pt1000, 2, 3, or 4-wire (only for sensors 0-1) - * NOTE: You must uncomment/set the MAX31865_*_OHMS_n defines below. - * -3 : MAX31855 with Thermocouple, -200°C to +700°C (only for sensors 0-1) - * -2 : MAX6675 with Thermocouple, 0°C to +700°C (only for sensors 0-1) - * - * NOTE: Ensure TEMP_n_CS_PIN is set in your pins file for each TEMP_SENSOR_n using an SPI Thermocouple. By default, - * Hardware SPI on the default serial bus is used. If you have also set TEMP_n_SCK_PIN and TEMP_n_MISO_PIN, - * Software SPI will be used on those ports instead. You can force Hardware SPI on the default bus in the - * Configuration_adv.h file. At this time, separate Hardware SPI buses for sensors are not supported. - * - * Analog Themocouple Boards - * ------- - * -4 : AD8495 with Thermocouple - * -1 : AD595 with Thermocouple + * NORMAL IS 4.7kΩ PULLUP! Hotend sensors can use 1kΩ pullup with correct resistor and table. * + * ================================================================ * Analog Thermistors - 4.7kΩ pullup - Normal - * ------- - * 1 : 100kΩ EPCOS - Best choice for EPCOS thermistors - * 331 : 100kΩ Same as #1, but 3.3V scaled for MEGA - * 332 : 100kΩ Same as #1, but 3.3V scaled for DUE - * 2 : 200kΩ ATC Semitec 204GT-2 - * 202 : 200kΩ Copymaster 3D - * 3 : ???Ω Mendel-parts thermistor - * 4 : 10kΩ Generic Thermistor !! DO NOT use for a hotend - it gives bad resolution at high temp. !! - * 5 : 100kΩ ATC Semitec 104GT-2/104NT-4-R025H42G - Used in ParCan, J-Head, and E3D, SliceEngineering 300°C - * 501 : 100kΩ Zonestar - Tronxy X3A - * 502 : 100kΩ Zonestar - used by hot bed in Zonestar Průša P802M - * 503 : 100kΩ Zonestar (Z8XM2) Heated Bed thermistor - * 504 : 100kΩ Zonestar P802QR2 (Part# QWG-104F-B3950) Hotend Thermistor - * 505 : 100kΩ Zonestar P802QR2 (Part# QWG-104F-3950) Bed Thermistor - * 512 : 100kΩ RPW-Ultra hotend - * 6 : 100kΩ EPCOS - Not as accurate as table #1 (created using a fluke thermocouple) - * 7 : 100kΩ Honeywell 135-104LAG-J01 - * 71 : 100kΩ Honeywell 135-104LAF-J01 - * 8 : 100kΩ Vishay 0603 SMD NTCS0603E3104FXT - * 9 : 100kΩ GE Sensing AL03006-58.2K-97-G1 - * 10 : 100kΩ RS PRO 198-961 - * 11 : 100kΩ Keenovo AC silicone mats, most Wanhao i3 machines - beta 3950, 1% - * 12 : 100kΩ Vishay 0603 SMD NTCS0603E3104FXT (#8) - calibrated for Makibox hot bed - * 13 : 100kΩ Hisens up to 300°C - for "Simple ONE" & "All In ONE" hotend - beta 3950, 1% - * 15 : 100kΩ Calibrated for JGAurora A5 hotend - * 18 : 200kΩ ATC Semitec 204GT-2 Dagoma.Fr - MKS_Base_DKU001327 - * 22 : 100kΩ GTM32 Pro vB - hotend - 4.7kΩ pullup to 3.3V and 220Ω to analog input - * 23 : 100kΩ GTM32 Pro vB - bed - 4.7kΩ pullup to 3.3v and 220Ω to analog input - * 30 : 100kΩ Kis3d Silicone heating mat 200W/300W with 6mm precision cast plate (EN AW 5083) NTC100K - beta 3950 - * 60 : 100kΩ Maker's Tool Works Kapton Bed Thermistor - beta 3950 - * 61 : 100kΩ Formbot/Vivedino 350°C Thermistor - beta 3950 - * 66 : 4.7MΩ Dyze Design / Trianglelab T-D500 500°C High Temperature Thermistor - * 67 : 500kΩ SliceEngineering 450°C Thermistor - * 68 : PT100 amplifier board from Dyze Design - * 70 : 100kΩ bq Hephestos 2 - * 75 : 100kΩ Generic Silicon Heat Pad with NTC100K MGB18-104F39050L32 - * 2000 : 100kΩ Ultimachine Rambo TDK NTCG104LH104KT1 NTC100K motherboard Thermistor + * ================================================================ + * 1 : 100kΩ EPCOS - Best choice for EPCOS thermistors + * 331 : 100kΩ Same as #1, but 3.3V scaled for MEGA + * 332 : 100kΩ Same as #1, but 3.3V scaled for DUE + * 2 : 200kΩ ATC Semitec 204GT-2 + * 202 : 200kΩ Copymaster 3D + * 3 : ???Ω Mendel-parts thermistor + * 4 : 10kΩ Generic Thermistor !! DO NOT use for a hotend - it gives bad resolution at high temp. !! + * 5 : 100kΩ ATC Semitec 104GT-2/104NT-4-R025H42G - Used in ParCan, J-Head, and E3D, SliceEngineering 300°C + * 501 : 100kΩ Zonestar - Tronxy X3A + * 502 : 100kΩ Zonestar - used by hot bed in Zonestar Průša P802M + * 503 : 100kΩ Zonestar (Z8XM2) Heated Bed thermistor + * 504 : 100kΩ Zonestar P802QR2 (Part# QWG-104F-B3950) Hotend Thermistor + * 505 : 100kΩ Zonestar P802QR2 (Part# QWG-104F-3950) Bed Thermistor + * 512 : 100kΩ RPW-Ultra hotend + * 6 : 100kΩ EPCOS - Not as accurate as table #1 (created using a fluke thermocouple) + * 7 : 100kΩ Honeywell 135-104LAG-J01 + * 71 : 100kΩ Honeywell 135-104LAF-J01 + * 8 : 100kΩ Vishay 0603 SMD NTCS0603E3104FXT + * 9 : 100kΩ GE Sensing AL03006-58.2K-97-G1 + * 10 : 100kΩ RS PRO 198-961 + * 11 : 100kΩ Keenovo AC silicone mats, most Wanhao i3 machines - beta 3950, 1% + * 12 : 100kΩ Vishay 0603 SMD NTCS0603E3104FXT (#8) - calibrated for Makibox hot bed + * 13 : 100kΩ Hisens up to 300°C - for "Simple ONE" & "All In ONE" hotend - beta 3950, 1% + * 15 : 100kΩ Calibrated for JGAurora A5 hotend + * 18 : 200kΩ ATC Semitec 204GT-2 Dagoma.Fr - MKS_Base_DKU001327 + * 22 : 100kΩ GTM32 Pro vB - hotend - 4.7kΩ pullup to 3.3V and 220Ω to analog input + * 23 : 100kΩ GTM32 Pro vB - bed - 4.7kΩ pullup to 3.3v and 220Ω to analog input + * 30 : 100kΩ Kis3d Silicone heating mat 200W/300W with 6mm precision cast plate (EN AW 5083) NTC100K - beta 3950 + * 60 : 100kΩ Maker's Tool Works Kapton Bed Thermistor - beta 3950 + * 61 : 100kΩ Formbot/Vivedino 350°C Thermistor - beta 3950 + * 66 : 4.7MΩ Dyze Design / Trianglelab T-D500 500°C High Temperature Thermistor + * 67 : 500kΩ SliceEngineering 450°C Thermistor + * 68 : PT100 Smplifier board from Dyze Design + * 70 : 100kΩ bq Hephestos 2 + * 75 : 100kΩ Generic Silicon Heat Pad with NTC100K MGB18-104F39050L32 + * 2000 : 100kΩ Ultimachine Rambo TDK NTCG104LH104KT1 NTC100K motherboard Thermistor * - * Analog Thermistors - 1kΩ pullup - Atypical, and requires changing out the 4.7kΩ pullup for 1kΩ. - * ------- (but gives greater accuracy and more stable PID) - * 51 : 100kΩ EPCOS (1kΩ pullup) - * 52 : 200kΩ ATC Semitec 204GT-2 (1kΩ pullup) - * 55 : 100kΩ ATC Semitec 104GT-2 - Used in ParCan & J-Head (1kΩ pullup) + * ================================================================ + * Analog Thermistors - 1kΩ pullup + * Atypical, and requires changing out the 4.7kΩ pullup for 1kΩ. + * (but gives greater accuracy and more stable PID) + * ================================================================ + * 51 : 100kΩ EPCOS (1kΩ pullup) + * 52 : 200kΩ ATC Semitec 204GT-2 (1kΩ pullup) + * 55 : 100kΩ ATC Semitec 104GT-2 - Used in ParCan & J-Head (1kΩ pullup) * + * ================================================================ * Analog Thermistors - 10kΩ pullup - Atypical - * ------- - * 99 : 100kΩ Found on some Wanhao i3 machines with a 10kΩ pull-up resistor + * ================================================================ + * 99 : 100kΩ Found on some Wanhao i3 machines with a 10kΩ pull-up resistor * + * ================================================================ * Analog RTDs (Pt100/Pt1000) - * ------- + * ================================================================ * 110 : Pt100 with 1kΩ pullup (atypical) * 147 : Pt100 with 4.7kΩ pullup * 1010 : Pt1000 with 1kΩ pullup (atypical) @@ -515,15 +504,34 @@ * NOTE: ADC pins are not 5V tolerant. Not recommended because it's possible to damage the CPU by going over 500°C. * 201 : Pt100 with circuit in Overlord, similar to Ultimainboard V2.x * + * ================================================================ + * SPI RTD/Thermocouple Boards + * ================================================================ + * -5 : MAX31865 with Pt100/Pt1000, 2, 3, or 4-wire (only for sensors 0-1) + * NOTE: You must uncomment/set the MAX31865_*_OHMS_n defines below. + * -3 : MAX31855 with Thermocouple, -200°C to +700°C (only for sensors 0-1) + * -2 : MAX6675 with Thermocouple, 0°C to +700°C (only for sensors 0-1) + * + * NOTE: Ensure TEMP_n_CS_PIN is set in your pins file for each TEMP_SENSOR_n using an SPI Thermocouple. By default, + * Hardware SPI on the default serial bus is used. If you have also set TEMP_n_SCK_PIN and TEMP_n_MISO_PIN, + * Software SPI will be used on those ports instead. You can force Hardware SPI on the default bus in the + * Configuration_adv.h file. At this time, separate Hardware SPI buses for sensors are not supported. + * + * ================================================================ + * Analog Thermocouple Boards + * ================================================================ + * -4 : AD8495 with Thermocouple + * -1 : AD595 with Thermocouple + * + * ================================================================ * Custom/Dummy/Other Thermal Sensors - * ------ + * ================================================================ * 0 : not used * 1000 : Custom - Specify parameters in Configuration_adv.h * * !!! Use these for Testing or Development purposes. NEVER for production machine. !!! * 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below. * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below. - * */ #define TEMP_SENSOR_0 1 #define TEMP_SENSOR_1 0 @@ -538,6 +546,7 @@ #define TEMP_SENSOR_CHAMBER 0 #define TEMP_SENSOR_COOLER 0 #define TEMP_SENSOR_BOARD 0 +#define TEMP_SENSOR_SOC 0 #define TEMP_SENSOR_REDUNDANT 0 // Dummy thermistor constant temperature readings, for use with 998 and 999 diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 22c97c3b8c..f0c4975d5d 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -276,9 +276,15 @@ #define THERMAL_PROTECTION_BOARD // Halt the printer if the board sensor leaves the temp range below. #define BOARD_MINTEMP 8 // (°C) #define BOARD_MAXTEMP 70 // (°C) - #ifndef TEMP_BOARD_PIN - //#define TEMP_BOARD_PIN -1 // Board temp sensor pin, if not set in pins file. - #endif + //#define TEMP_BOARD_PIN -1 // Board temp sensor pin override. +#endif + +// +// SoC Sensor options +// +#if TEMP_SENSOR_SOC + #define THERMAL_PROTECTION_SOC // Halt the printer if the SoC sensor leaves the temp range below. + #define SOC_MAXTEMP 85 // (°C) #endif /** @@ -579,6 +585,9 @@ // Use TEMP_SENSOR_BOARD as a trigger for enabling the controller fan //#define CONTROLLER_FAN_MIN_BOARD_TEMP 40 // (°C) Turn on the fan if the board reaches this temperature + // Use TEMP_SENSOR_SOC as a trigger for enabling the controller fan + //#define CONTROLLER_FAN_MIN_SOC_TEMP 40 // (°C) Turn on the fan if the SoC reaches this temperature + //#define CONTROLLER_FAN_EDITABLE // Enable M710 configurable settings #if ENABLED(CONTROLLER_FAN_EDITABLE) #define CONTROLLER_FAN_MENU // Enable the Controller Fan submenu diff --git a/Marlin/src/HAL/STM32/HAL.h b/Marlin/src/HAL/STM32/HAL.h index 61569c7937..26fcc2a2e1 100644 --- a/Marlin/src/HAL/STM32/HAL.h +++ b/Marlin/src/HAL/STM32/HAL.h @@ -28,6 +28,7 @@ #include "../shared/Marduino.h" #include "../shared/math_32bit.h" #include "../shared/HAL_SPI.h" +#include "temp_soc.h" #include "fastio.h" #include "Servo.h" #include "MarlinSerial.h" diff --git a/Marlin/src/HAL/STM32/inc/SanityCheck.h b/Marlin/src/HAL/STM32/inc/SanityCheck.h index 9b0c232bdf..80d0314dbb 100644 --- a/Marlin/src/HAL/STM32/inc/SanityCheck.h +++ b/Marlin/src/HAL/STM32/inc/SanityCheck.h @@ -51,6 +51,10 @@ #error "TFT_COLOR_UI, TFT_LVGL_UI and TFT_CLASSIC_UI are currently only supported on STM32H7, STM32F4 and STM32F1 hardware." #endif +#if TEMP_SENSOR_SOC && defined(ATEMP) && TEMP_SOC_PIN != ATEMP + #error "TEMP_SENSOR_SOC requires 'TEMP_SOC_PIN ATEMP' on STM32." +#endif + /** * Check for common serial pin conflicts */ diff --git a/Marlin/src/HAL/STM32/temp_soc.h b/Marlin/src/HAL/STM32/temp_soc.h new file mode 100644 index 0000000000..05262eab8b --- /dev/null +++ b/Marlin/src/HAL/STM32/temp_soc.h @@ -0,0 +1,346 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#ifdef STM32F0xx + /* + STM32F030x4 STM32F030x6 STM32F030x8 STM32F030xC https://www.st.com/resource/en/datasheet/stm32f030f4.pdf + --> TS_CAL2 not defined in datasheet + STM32F031x4 STM32F031x6 https://www.st.com/resource/en/datasheet/stm32f031c4.pdf + STM32F038x6 https://www.st.com/resource/en/datasheet/stm32f038c6.pdf + STM32F042x4 STM32F042x6 https://www.st.com/resource/en/datasheet/stm32f042c4.pdf + STM32F048C6 STM32F048G6 STM32F048T6 https://www.st.com/resource/en/datasheet/stm32f048c6.pdf + STM32F051x4 STM32F051x6 STM32F051x8 https://www.st.com/resource/en/datasheet/dm00039193.pdf + STM32F058C8 STM32F058R8 STM32F058T8 https://www.st.com/resource/en/datasheet/stm32f058c8.pdf + STM32F070CB STM32F070RB STM32F070C6 STM32F070F6 https://www.st.com/resource/en/datasheet/stm32f070c6.pdf + --> TS_CAL2 not defined in datasheet + STM32F071x8 STM32F071xB https://www.st.com/resource/en/datasheet/stm32f071cb.pdf + STM32F072x8 STM32F072xB https://www.st.com/resource/en/datasheet/stm32f072c8.pdf + STM32F078CB STM32F078RB STM32F078VB https://www.st.com/resource/en/datasheet/stm32f078cb.pdf + STM32F091xB STM32F091xC https://www.st.com/resource/en/datasheet/stm32f091cc.pdf + STM32F098CC STM32F098RC STM32F098VC https://www.st.com/resource/en/datasheet/stm32f098cc.pdf + */ + #define TS_CAL1_TEMP 30 // Calibration temperature of TS_CAL1 (see specific SoC datasheet) + #define TS_CAL1_REGOFFSET 0x1FFFF7B8 // Memory address of TS_CAL1 for STM32F030x4/x6/x8/xC (see specific SoC datasheet) + #define TS_CAL2_TEMP 110 // Calibration temperature of TS_CAL2 (see specific SoC datasheet) + #define TS_CAL2_REGOFFSET 0x1FFFF7C2 // Memory address of TS_CAL2 for STM32F030x4/x6/x8/xC (see specific SoC datasheet) + +#elif defined(STM32F1xx) + /* + STM32F100xC STM32F100xD STM32F100xE https://www.st.com/resource/en/datasheet/stm32f100rc.pdf + --> V=1.41 + STM32F100x4 STM32F100x6 STM32F100x8 STM32F100xB https://www.st.com/resource/en/datasheet/stm32f100cb.pdf + --> V=1.41 + STM32F101x8 STM32F101xB https://www.st.com/resource/en/datasheet/stm32f101r8.pdf + STM32F101xC STM32F101xD STM32F101xE https://www.st.com/resource/en/datasheet/stm32f101rc.pdf + STM32F101x4 STM32F101x6 https://www.st.com/resource/en/datasheet/stm32f101c4.pdf + STM32F101xF STM32F101xG https://www.st.com/resource/en/datasheet/stm32f101vf.pdf + STM32F102x8 STM32F102xB https://www.st.com/resource/en/datasheet/stm32f102c8.pdf + --> V=1.42 / Slope=4.35 + STM32F102x4 STM32F102x6 https://www.st.com/resource/en/datasheet/stm32f102c4.pdf + --> V=1.42 / Slope=4.35 + STM32F103x8 STM32F103xB https://www.st.com/resource/en/datasheet/stm32f103c8.pdf + STM32F103xC STM32F103xD STM32F103xE https://www.st.com/resource/en/datasheet/stm32f103rc.pdf + STM32F103x4 STM32F103x6 https://www.st.com/resource/en/datasheet/stm32f103c4.pdf + STM32F103xF STM32F103xG https://www.st.com/resource/en/datasheet/stm32f103rg.pdf + STM32F105xx STM32F107xx https://www.st.com/resource/en/datasheet/stm32f105r8.pdf + */ + #define TS_TYPICAL_V 1.43 + #define TS_TYPICAL_TEMP 25 + #define TS_TYPICAL_SLOPE 4.3 + +#elif defined(STM32F2xx) + /* + STM32F205xx STM32F207xx https://www.st.com/resource/en/datasheet/stm32f205rb.pdf + STM32F215xx STM32F217xx https://www.st.com/resource/en/datasheet/stm32f215re.pdf + */ + #define TS_TYPICAL_V 0.76 + #define TS_TYPICAL_TEMP 25 + #define TS_TYPICAL_SLOPE 2.5 + +#elif defined(STM32F3xx) + /* + STM32F301x6 STM32F301x8 https://www.st.com/resource/en/datasheet/stm32f301c6.pdf + STM32F302xD STM32F302xE https://www.st.com/resource/en/datasheet/stm32f302re.pdf + STM32F302x6 STM32F302x8 https://www.st.com/resource/en/datasheet/stm32f302r6.pdf + STM32F302xB STM32F302xC https://www.st.com/resource/en/datasheet/stm32f302cb.pdf + STM32F303xD STM32F303xE https://www.st.com/resource/en/datasheet/stm32f303re.pdf + STM32F303xB STM32F303xC https://www.st.com/resource/en/datasheet/stm32f303cb.pdf + STM32F303x6/x8 https://www.st.com/resource/en/datasheet/stm32f303c6.pdf + STM32F334x4 STM32F334x6 STM32F334x8 https://www.st.com/resource/en/datasheet/stm32f334k4.pdf + STM32F373xx https://www.st.com/resource/en/datasheet/stm32f373cc.pdf + STM32F358xC https://www.st.com/resource/en/datasheet/stm32f358cc.pdf + STM32F378xx https://www.st.com/resource/en/datasheet/stm32f378cc.pdf + STM32F318C8 STM32F318K8 https://www.st.com/resource/en/datasheet/stm32f318c8.pdf + STM32F328C8 https://www.st.com/resource/en/datasheet/stm32f328c8.pdf + STM32F398VE https://www.st.com/resource/en/datasheet/stm32f398ve.pdf + */ + #define TS_CAL1_TEMP 30 + #define TS_CAL1_REGOFFSET 0x1FFFF7B8 + #define TS_CAL2_TEMP 110 + #define TS_CAL2_REGOFFSET 0x1FFFF7C2 + +#elif defined(STM32F4xx) + /* + STM32F401xD STM32F401xE https://www.st.com/resource/en/datasheet/stm32f401re.pdf + STM32F411xC STM32F411xE https://www.st.com/resource/en/datasheet/stm32f411ce.pdf + STM32F446xC/E https://www.st.com/resource/en/datasheet/stm32f446mc.pdf + STM32F479xx https://www.st.com/resource/en/datasheet/stm32f479ai.pdf + STM32F412xE STM32F412xG https://www.st.com/resource/en/datasheet/stm32f412ce.pdf + STM32F410x8 STM32F410xB https://www.st.com/resource/en/datasheet/stm32f410cb.pdf + STM32F469xx https://www.st.com/resource/en/datasheet/stm32f469ae.pdf + STM32F423xH https://www.st.com/resource/en/datasheet/stm32f423ch.pdf + STM32F413xG STM32F413xH https://www.st.com/resource/en/datasheet/stm32f413cg.pdf + STM32F415xx STM32F417xx https://www.st.com/resource/en/datasheet/stm32f415rg.pdf + STM32F405xx STM32F407xx https://www.st.com/resource/en/datasheet/stm32f405rg.pdf + STM32F427xx STM32F429xx https://www.st.com/resource/en/datasheet/stm32f427vg.pdf + STM32F437xx STM32F439xx https://www.st.com/resource/en/datasheet/stm32f437vg.pdf + STM32F401xB STM32F401xC https://www.st.com/resource/en/datasheet/stm32f401cb.pdf + */ + #define TS_CAL1_TEMP 30 + #define TS_CAL1_REGOFFSET 0x1FFF7A2C + #define TS_CAL2_TEMP 110 + #define TS_CAL2_REGOFFSET 0x1FFF7A2E + +#elif defined(STM32F7xx) + /* + STM32F756xx https://www.st.com/resource/en/datasheet/stm32f756bg.pdf + STM32F745xx STM32F746xx https://www.st.com/resource/en/datasheet/stm32f745ie.pdf + STM32F777xx STM32F778Ax STM32F779xx https://www.st.com/resource/en/datasheet/stm32f777bi.pdf + STM32F765xx STM32F767xx STM32F768Ax STM32F769xx https://www.st.com/resource/en/datasheet/stm32f765bi.pdf + STM32F722xx STM32F723xx https://www.st.com/resource/en/datasheet/stm32f722ic.pdf + --> TS_CAL1/2 = 0x1FF07A2C / 0x1FF07A2E + STM32F732xx STM32F733xx https://www.st.com/resource/en/datasheet/stm32f732ie.pdf + --> TS_CAL1/2 = 0x1FF07A2C / 0x1FF07A2E + STM32F750x8 https://www.st.com/resource/en/datasheet/stm32f750n8.pdf + STM32F730x8 https://www.st.com/resource/en/datasheet/stm32f730i8.pdf + --> TS_CAL1/2 = 0x1FF07A2C / 0x1FF07A2E + */ + #define TS_CAL1_TEMP 30 + #define TS_CAL1_REGOFFSET 0x1FF0F44C + #define TS_CAL2_TEMP 110 + #define TS_CAL2_REGOFFSET 0x1FF0F44E + +#elif defined(STM32G0xx) + /* + STM32G030x6/x8 https://www.st.com/resource/en/datasheet/stm32g030c6.pdf + --> TS_CAL2 not defined in datasheet + STM32G050x6/x8 https://www.st.com/resource/en/datasheet/stm32g050c6.pdf + STM32G0B0KE/CE/RE/VE https://www.st.com/resource/en/datasheet/stm32g0b0ce.pdf + --> TS_CAL2 not defined in datasheet + STM32G081xB https://www.st.com/resource/en/datasheet/stm32g081cb.pdf + STM32G071x8/xB https://www.st.com/resource/en/datasheet/stm32g071c8.pdf + STM32G031x4/x6/x8 https://www.st.com/resource/en/datasheet/stm32g031c6.pdf + STM32G041x6/x8 https://www.st.com/resource/en/datasheet/stm32g041c8.pdf + STM32G051x6/x8 https://www.st.com/resource/en/datasheet/stm32g051c6.pdf + STM32G061x6/x8 https://www.st.com/resource/en/datasheet/stm32g061c6.pdf + STM32G0B1xB/xC/xE https://www.st.com/resource/en/datasheet/stm32g0b1cc.pdf + STM32G0C1xC/xE https://www.st.com/resource/en/datasheet/stm32g0c1cc.pdf + */ + #define TS_CAL1_TEMP 30 + #define TS_CAL1_REGOFFSET 0x1FFF75A8 + #define TS_CAL2_TEMP 130 + #define TS_CAL2_REGOFFSET 0x1FFF75CA + +#elif defined(STM32G4xx) + /* + STM32G431x6 STM32G431x8 STM32G431xB https://www.st.com/resource/en/datasheet/stm32g431c6.pdf + STM32G441xB https://www.st.com/resource/en/datasheet/stm32g441cb.pdf + STM32G491xC STM32G491xE https://www.st.com/resource/en/datasheet/stm32g491cc.pdf + STM32G4A1xE https://www.st.com/resource/en/datasheet/stm32g4a1ce.pdf + STM32G473xB STM32G473xC STM32G473xE https://www.st.com/resource/en/datasheet/stm32g473cb.pdf + STM32G483xE https://www.st.com/resource/en/datasheet/stm32g483ce.pdf + --> TS_CAL1/TS_CAL2 not defined in datasheet + STM32G474xB STM32G474xC STM32G474xE https://www.st.com/resource/en/datasheet/stm32g474cb.pdf + STM32G484xE https://www.st.com/resource/en/datasheet/stm32g484ce.pdf + */ + #define TS_CAL1_TEMP 30 + #define TS_CAL1_REGOFFSET 0x1FFF75A8 + #define TS_CAL2_TEMP 130 + #define TS_CAL2_REGOFFSET 0x1FFF75CA + +#elif defined(STM32H7xx) + /* + STM32H7A3xI/G + --> TS_CAL1/2 = 0x08FFF814 / 0x08FFF818 + STM32H7B0xB + --> TS_CAL1/2 = 0x08FFF814 / 0x08FFF818 + STM32H7B3xI + --> TS_CAL1/2 = 0x08FFF814 / 0x08FFF818 + STM32H725xE/G + STM32H735xG + STM32H723VE STM32H723VG STM32H723ZE STM32H723ZG + STM32H730AB STM32H730IB STM32H730VB STM32H730ZB + STM32H733VG STM32H733ZG + STM32H742xI/G STM32H743xI/G + --> CAL2_TEMP = 110 + STM32H745xI/G + STM32H747xI/G + STM32H753xI + STM32H755xI + STM32H757xI + STM32H750VB STM32H750ZB STM32H750IB STM32H750XB + --> CAL2_TEMP = 110 + */ + #define TS_CAL1_TEMP 30 + #define TS_CAL1_REGOFFSET 0x1FF1E820 + #define TS_CAL2_TEMP 130 + #define TS_CAL2_REGOFFSET 0x1FF1E840 + +#elif defined(STM32L0xx) + /* + STM32L010RB + --> TS_CAL1/TS_CAL2 not defined in datasheet + STM32L010F4 STM32L010K4 + --> TS_CAL1/TS_CAL2 not defined in datasheet + STM32L010C6 + --> TS_CAL1/TS_CAL2 not defined in datasheet + STM32L010K8 STM32L010R8 + --> TS_CAL1/TS_CAL2 not defined in datasheet + STM32L011x3 STM32L011x4 + --> TS_CAL1 not defined in datasheet + STM32L021D4 STM32L021F4 STM32L021G4 STM32L021K4 + --> TS_CAL1 not defined in datasheet + STM32L031x4 STM32L031x6 + STM32L041x6 + STM32L051x6 STM32L051x8 + STM32L071x8 STM32L071xB STM32L071xZ + STM32L081CB STM32L081CZ STM32L081KZ + STM32L052x6 STM32L052x8 + STM32L062K8 STM32L062T8 STM32L062C8 + STM32L072x8 STM32L072xB STM32L072xZ + STM32L082KB STM32L082KZ STM32L082CZ + STM32L053C6 STM32L053C8 STM32L053R6 STM32L053R8 + STM32L063C8 STM32L063R8 + STM32L073x8 STM32L073xB STM32L073xZ + STM32L083x8 STM32L083xB STM32L083xZ + */ + #define TS_CAL1_TEMP 30 + #define TS_CAL1_REGOFFSET 0x1FF8007A + #define TS_CAL2_TEMP 130 + #define TS_CAL2_REGOFFSET 0x1FF8007E + +#elif defined(STM32L1xx) + /* + STM32L100x6/8/B-A + --> TS_CAL1/TS_CAL2 not defined in datasheet + STM32L100RC + --> TS_CAL1/TS_CAL2 not defined in datasheet + STM32L100C6 STM32L100R8/RB + --> TS_CAL1/TS_CAL2 not defined in datasheet + STM32L151x6/8/B-A STM32L152x6/8/B-A + --> TS_CAL1/2 = 0x08FFF814 / 0x08FFF818 + STM32L151xD STM32L152xD + STM32L151VD-X STM32L152VD-X + STM32L15xCC STM32L15xRC STM32L15xUC STM32L15xVC + STM32L15xQC STM32L15xRC-A STM32L15xVC-A STM32L15xZC + STM32L162xE + STM32L162VD STM32L162ZD STM32L162QD STM32L162RD + STM32L162VC STM32L162RC + STM32L162VD-X + STM32L162QC STM32L162VC-A STM32L162ZC STM32L162RC-A + */ + #define TS_CAL1_TEMP 30 + #define TS_CAL1_REGOFFSET 0x1FF800FA + #define TS_CAL2_TEMP 110 + #define TS_CAL2_REGOFFSET 0x1FF800FE + +#elif defined(STM32L4xx) + /* + STM32L431xx + STM32L451xx + STM32L471xx + --> CAL2_TEMP = 110 + STM32L412xx + STM32L422xx + STM32L432KB STM32L432KC + STM32L442KC + STM32L452xx + STM32L462CE STM32L462RE STM32L462VE + STM32L433xx + STM32L443CC STM32L443RC STM32L443VC + STM32L475xx + --> CAL2_TEMP = 110 + STM32L476xx + --> CAL2_TEMP = 110 + STM32L486xx : + --> CAL2_TEMP = 110 + STM32L496xx + STM32L4A6xG + */ + #define TS_CAL1_TEMP 30 + #define TS_CAL1_REGOFFSET 0x1FFF75A8 + #define TS_CAL2_TEMP 130 + #define TS_CAL2_REGOFFSET 0x1FFF75CA + +#elif defined(STM32MP1xx) + /* + STM32MP131A STM32MP131D + STM32MP131C STM32MP131F + STM32MP133A STM32MP133D + STM32MP133C STM32MP133F + STM32MP135A STM32MP135D + STM32MP135C STM32MP135F + STM32MP151A/D + STM32MP151C/F + STM32MP153A/D + STM32MP153C/F + STM32MP157A/D + STM32MP157C/F + */ + // BSEC -> RCC + //#define TS_CAL1_TEMP 30 + //#define TS_CAL1_REGOFFSET 0x5C00 525C[15:0] + //#define TS_CAL2_TEMP 130 + //#define TS_CAL2_REGOFFSET 0x5C00 525C[31:16] + +#elif defined(STM32WBxx) + /* + STM32WB10CC + STM32WB50CG STM32WB30CE + STM32WB15CC + STM32WB55xx STM32WB35xx + */ + #define TS_CAL1_TEMP 30 + #define TS_CAL1_REGOFFSET 0x1FFF75A8 + #define TS_CAL2_TEMP 130 + #define TS_CAL2_REGOFFSET 0x1FFF75CA +#endif + +// TODO implement voltage scaling (calibrated Vrefint) and ADC resolution scaling (when applicable) + +/** + * When provided in datasheet, the use of calibrated values (TS_CAL1, TS_CAL2) should always be preferred over typical values. + * Typical values may result in important variation from the actual temperature. + * + * If calibrated values are not provided in datasheet, it is encouraged to calibrate your specific chip yourself. + */ +#if defined(TS_CAL1_TEMP) && defined(TS_CAL1_REGOFFSET) && defined(TS_CAL2_TEMP) && defined(TS_CAL2_REGOFFSET) + + #define READMEMORY(ADDR) (*((uint16_t const *)(ADDR))) + #define TEMP_SOC_SENSOR(RAW) (float((TS_CAL2_TEMP) - (TS_CAL1_TEMP)) / (READMEMORY(TS_CAL2_REGOFFSET) - READMEMORY(TS_CAL1_REGOFFSET)) * ((RAW) / float(OVERSAMPLENR) - READMEMORY(TS_CAL1_REGOFFSET)) + (TS_CAL1_TEMP)) + +#elif defined(TS_TYPICAL_V) && defined(TS_TYPICAL_SLOPE) && defined(TS_TYPICAL_TEMP) + + #define TEMP_SOC_SENSOR(RAW) ((TS_TYPICAL_V - (RAW) / float(OVERSAMPLENR) / float(HAL_ADC_RANGE) * float(ADC_VREF)) / (TS_TYPICAL_SLOPE/1000) + TS_TYPICAL_TEMP) + +#endif diff --git a/Marlin/src/HAL/STM32F1/HAL.cpp b/Marlin/src/HAL/STM32F1/HAL.cpp index 4d3140001e..a0cdda3b4f 100644 --- a/Marlin/src/HAL/STM32F1/HAL.cpp +++ b/Marlin/src/HAL/STM32F1/HAL.cpp @@ -307,6 +307,7 @@ enum ADCIndex : uint8_t { OPTITEM(HAS_TEMP_ADC_PROBE, TEMP_PROBE) OPTITEM(HAS_TEMP_COOLER, TEMP_COOLER) OPTITEM(HAS_TEMP_BOARD, TEMP_BOARD) + OPTITEM(HAS_TEMP_SOC, TEMP_SOC) OPTITEM(FILAMENT_WIDTH_SENSOR, FILWIDTH) OPTITEM(HAS_ADC_BUTTONS, ADC_KEY) OPTITEM(HAS_JOY_ADC_X, JOY_X) @@ -335,6 +336,7 @@ void MarlinHAL::adc_init() { OPTITEM(HAS_TEMP_ADC_PROBE, TEMP_PROBE_PIN) OPTITEM(HAS_TEMP_COOLER, TEMP_COOLER_PIN) OPTITEM(HAS_TEMP_BOARD, TEMP_BOARD_PIN) + OPTITEM(HAS_TEMP_SOC, TEMP_SOC_PIN) OPTITEM(FILAMENT_WIDTH_SENSOR, FILWIDTH_PIN) OPTITEM(HAS_ADC_BUTTONS, ADC_KEYPAD_PIN) OPTITEM(HAS_JOY_ADC_X, JOY_X_PIN) @@ -373,6 +375,7 @@ void MarlinHAL::adc_start(const pin_t pin) { _TCASE(HAS_TEMP_ADC_PROBE, TEMP_PROBE_PIN, TEMP_PROBE) _TCASE(HAS_TEMP_COOLER, TEMP_COOLER_PIN, TEMP_COOLER) _TCASE(HAS_TEMP_BOARD, TEMP_BOARD_PIN, TEMP_BOARD) + _TCASE(HAS_TEMP_SOC, TEMP_SOC_PIN, TEMP_SOC) _TCASE(HAS_JOY_ADC_X, JOY_X_PIN, JOY_X) _TCASE(HAS_JOY_ADC_Y, JOY_Y_PIN, JOY_Y) _TCASE(HAS_JOY_ADC_Z, JOY_Z_PIN, JOY_Z) diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h index bf309293ac..0c5bc0af9b 100644 --- a/Marlin/src/core/language.h +++ b/Marlin/src/core/language.h @@ -242,6 +242,7 @@ #define STR_HEATER_CHAMBER "chamber" #define STR_COOLER "cooler" #define STR_MOTHERBOARD "motherboard" +#define STR_SOC "soc" #define STR_PROBE "probe" #define STR_REDUNDANT "redundant " #define STR_LASER_TEMP "laser temperature" diff --git a/Marlin/src/feature/controllerfan.cpp b/Marlin/src/feature/controllerfan.cpp index 6e5278ce74..4b3d9f5501 100644 --- a/Marlin/src/feature/controllerfan.cpp +++ b/Marlin/src/feature/controllerfan.cpp @@ -61,10 +61,16 @@ void ControllerFan::update() { // - At least one stepper driver is enabled // - The heated bed is enabled // - TEMP_SENSOR_BOARD is reporting >= CONTROLLER_FAN_MIN_BOARD_TEMP + // - TEMP_SENSOR_SOC is reporting >= CONTROLLER_FAN_MIN_SOC_TEMP const ena_mask_t axis_mask = TERN(CONTROLLER_FAN_USE_Z_ONLY, _BV(Z_AXIS), (ena_mask_t)~TERN0(CONTROLLER_FAN_IGNORE_Z, _BV(Z_AXIS))); if ( (stepper.axis_enabled.bits & axis_mask) || TERN0(HAS_HEATED_BED, thermalManager.temp_bed.soft_pwm_amount > 0) - || TERN0(HAS_CONTROLLER_FAN_MIN_BOARD_TEMP, thermalManager.wholeDegBoard() >= CONTROLLER_FAN_MIN_BOARD_TEMP) + #ifdef CONTROLLER_FAN_MIN_BOARD_TEMP + || thermalManager.wholeDegBoard() >= CONTROLLER_FAN_MIN_BOARD_TEMP + #endif + #ifdef CONTROLLER_FAN_MIN_SOC_TEMP + || thermalManager.wholeDegSoc() >= CONTROLLER_FAN_MIN_SOC_TEMP + #endif ) lastMotorOn = ms; //... set time to NOW so the fan will turn on // Fan Settings. Set fan > 0: diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 119d69ee3d..1772430dc4 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -288,7 +288,8 @@ */ // Temperature sensor IDs -#define HID_REDUNDANT -6 +#define HID_REDUNDANT -7 +#define HID_SOC -6 #define HID_BOARD -5 #define HID_COOLER -4 #define HID_PROBE -3 @@ -306,9 +307,8 @@ #define _SENSOR_IS(I,N) || (TEMP_SENSOR(N) == I) #define _E_SENSOR_IS(I,N) _SENSOR_IS(N,I) #define ANY_E_SENSOR_IS(N) (0 REPEAT2(HOTENDS, _E_SENSOR_IS, N)) -#define ANY_THERMISTOR_IS(N) ( ANY_E_SENSOR_IS(N) \ - _SENSOR_IS(N,BED) _SENSOR_IS(N,PROBE) _SENSOR_IS(N,CHAMBER) \ - _SENSOR_IS(N,COOLER) _SENSOR_IS(N,BOARD) _SENSOR_IS(N,REDUNDANT) ) +#define ANY_THERMISTOR_IS(N) ( ANY_E_SENSOR_IS(N) _SENSOR_IS(N,REDUNDANT) \ + _SENSOR_IS(N,BED) _SENSOR_IS(N,PROBE) _SENSOR_IS(N,CHAMBER) _SENSOR_IS(N,COOLER) _SENSOR_IS(N,BOARD) ) #if ANY_THERMISTOR_IS(1000) #define HAS_USER_THERMISTORS 1 diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 30c2613b03..ac701c4570 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -2216,6 +2216,9 @@ #if HAS_ADC_TEST(BOARD) #define HAS_TEMP_ADC_BOARD 1 #endif +#if HAS_ADC_TEST(SOC) + #define HAS_TEMP_ADC_SOC 1 +#endif #if HAS_ADC_TEST(REDUNDANT) #define HAS_TEMP_ADC_REDUNDANT 1 #endif @@ -2239,6 +2242,9 @@ #if HAS_TEMP(BOARD) #define HAS_TEMP_BOARD 1 #endif +#if HAS_TEMP(SOC) + #define HAS_TEMP_SOC 1 +#endif #if HAS_TEMP(REDUNDANT) #define HAS_TEMP_REDUNDANT 1 #endif @@ -2312,7 +2318,7 @@ #define BED_OR_CHAMBER 1 #endif -#if HAS_TEMP_HOTEND || BED_OR_CHAMBER || HAS_TEMP_PROBE || HAS_TEMP_COOLER || HAS_TEMP_BOARD +#if HAS_TEMP_HOTEND || BED_OR_CHAMBER || HAS_TEMP_PROBE || HAS_TEMP_COOLER || HAS_TEMP_BOARD || HAS_TEMP_SOC #define HAS_TEMP_SENSOR 1 #endif @@ -2548,9 +2554,6 @@ */ #if PIN_EXISTS(CONTROLLER_FAN) #define HAS_CONTROLLER_FAN 1 - #if CONTROLLER_FAN_MIN_BOARD_TEMP - #define HAS_CONTROLLER_FAN_MIN_BOARD_TEMP 1 - #endif #endif #if HAS_CONTROLLER_FAN diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 2c2e17f4e3..a5244636dc 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1976,6 +1976,8 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "TEMP_SENSOR_REDUNDANT_SOURCE can't be PROBE. TEMP_SENSOR_PROBE is in use." #elif REDUNDANT_TEMP_MATCH(SOURCE, BOARD) && HAS_TEMP_BOARD #error "TEMP_SENSOR_REDUNDANT_SOURCE can't be BOARD. TEMP_SENSOR_BOARD is in use." + #elif REDUNDANT_TEMP_MATCH(SOURCE, SOC) + #error "TEMP_SENSOR_REDUNDANT_SOURCE can't be SOC." #elif REDUNDANT_TEMP_MATCH(SOURCE, CHAMBER) && HAS_TEMP_CHAMBER #error "TEMP_SENSOR_REDUNDANT_SOURCE can't be CHAMBER. TEMP_SENSOR_CHAMBER is in use." #elif REDUNDANT_TEMP_MATCH(SOURCE, BED) && HAS_TEMP_BED @@ -2004,6 +2006,8 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "TEMP_SENSOR_REDUNDANT_TARGET can't be CHAMBER without TEMP_CHAMBER_PIN defined." #elif REDUNDANT_TEMP_MATCH(TARGET, BOARD) && !PIN_EXISTS(TEMP_BOARD) #error "TEMP_SENSOR_REDUNDANT_TARGET can't be BOARD without TEMP_BOARD_PIN defined." + #elif REDUNDANT_TEMP_MATCH(TARGET, SOC) + #error "TEMP_SENSOR_REDUNDANT_TARGET can't be SOC." #elif REDUNDANT_TEMP_MATCH(TARGET, PROBE) && !PIN_EXISTS(TEMP_PROBE) #error "TEMP_SENSOR_REDUNDANT_TARGET can't be PROBE without TEMP_PROBE_PIN defined." #elif REDUNDANT_TEMP_MATCH(TARGET, COOLER) && !PIN_EXISTS(TEMP_COOLER) @@ -2135,8 +2139,14 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "CONTROLLER_FAN_MIN_BOARD_TEMP requires TEMP_SENSOR_BOARD." #endif -#if TEMP_SENSOR_BOARD && !PIN_EXISTS(TEMP_BOARD) - #error "TEMP_SENSOR_BOARD requires TEMP_BOARD_PIN." +#if TEMP_SENSOR_SOC + #if !PIN_EXISTS(TEMP_SOC) + #error "TEMP_SENSOR_SOC requires TEMP_SOC_PIN." + #elif ENABLED(THERMAL_PROTECTION_SOC) && !defined(SOC_MAXTEMP) + #error "THERMAL_PROTECTION_SOC requires SOC_MAXTEMP." + #endif +#elif CONTROLLER_FAN_MIN_SOC_TEMP + #error "CONTROLLER_FAN_MIN_SOC_TEMP requires TEMP_SENSOR_SOC." #endif #if ENABLED(LASER_COOLANT_FLOW_METER) && !(PIN_EXISTS(FLOWMETER) && ENABLED(LASER_FEATURE)) diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 3274136f41..b4b1ba6372 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -564,6 +564,11 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); #endif #endif +#if HAS_TEMP_SOC + soc_info_t Temperature::temp_soc; // = { 0 } + raw_adc_t Temperature::maxtemp_raw_SOC = TEMP_SENSOR_SOC_RAW_HI_TEMP; +#endif + #if BOTH(HAS_MARLINUI_MENU, PREVENT_COLD_EXTRUSION) && E_MANUAL > 0 bool Temperature::allow_cold_extrude_override = false; #else @@ -1356,6 +1361,7 @@ void Temperature::_temp_error(const heater_id_t heater_id, FSTR_P const serial_m OPTCODE(HAS_TEMP_COOLER, case H_COOLER: SERIAL_ECHOPGM(STR_COOLER); break) OPTCODE(HAS_TEMP_PROBE, case H_PROBE: SERIAL_ECHOPGM(STR_PROBE); break) OPTCODE(HAS_TEMP_BOARD, case H_BOARD: SERIAL_ECHOPGM(STR_MOTHERBOARD); break) + OPTCODE(HAS_TEMP_SOC, case H_SOC: SERIAL_ECHOPGM(STR_SOC); break) OPTCODE(HAS_TEMP_CHAMBER, case H_CHAMBER: SERIAL_ECHOPGM(STR_HEATER_CHAMBER); break) OPTCODE(HAS_TEMP_BED, case H_BED: SERIAL_ECHOPGM(STR_HEATER_BED); break) default: @@ -2368,6 +2374,20 @@ void Temperature::task() { } #endif // HAS_TEMP_BOARD +#if HAS_TEMP_SOC + // For SoC temperature measurement. + celsius_float_t Temperature::analog_to_celsius_soc(const raw_adc_t raw) { + return ( + #ifdef TEMP_SOC_SENSOR + TEMP_SOC_SENSOR(raw) + #else + 0 + #error "TEMP_SENSOR_SOC requires the TEMP_SOC_SENSOR(RAW) macro to be defined for your board." + #endif + ); + } +#endif + #if HAS_TEMP_REDUNDANT // For redundant temperature measurement. celsius_float_t Temperature::analog_to_celsius_redundant(const raw_adc_t raw) { @@ -2430,6 +2450,7 @@ void Temperature::updateTemperaturesFromRawValues() { TERN_(HAS_TEMP_COOLER, temp_cooler.celsius = analog_to_celsius_cooler(temp_cooler.getraw())); TERN_(HAS_TEMP_PROBE, temp_probe.celsius = analog_to_celsius_probe(temp_probe.getraw())); TERN_(HAS_TEMP_BOARD, temp_board.celsius = analog_to_celsius_board(temp_board.getraw())); + TERN_(HAS_TEMP_SOC, temp_soc.celsius = analog_to_celsius_soc(temp_soc.getraw())); TERN_(HAS_TEMP_REDUNDANT, temp_redundant.celsius = analog_to_celsius_redundant(temp_redundant.getraw())); TERN_(FILAMENT_WIDTH_SENSOR, filwidth.update_measured_mm()); @@ -2507,6 +2528,10 @@ void Temperature::updateTemperaturesFromRawValues() { if (TP_CMP(BOARD, temp_board.getraw(), maxtemp_raw_BOARD)) maxtemp_error(H_BOARD); if (TP_CMP(BOARD, mintemp_raw_BOARD, temp_board.getraw())) mintemp_error(H_BOARD); #endif + + #if BOTH(HAS_TEMP_SOC, THERMAL_PROTECTION_SOC) + if (TP_CMP(SOC, temp_soc.getraw(), maxtemp_raw_SOC)) maxtemp_error(H_SOC); + #endif #undef TP_CMP } // Temperature::updateTemperaturesFromRawValues @@ -2722,6 +2747,7 @@ void Temperature::init() { TERN_(HAS_TEMP_ADC_PROBE, hal.adc_enable(TEMP_PROBE_PIN)); TERN_(HAS_TEMP_ADC_COOLER, hal.adc_enable(TEMP_COOLER_PIN)); TERN_(HAS_TEMP_ADC_BOARD, hal.adc_enable(TEMP_BOARD_PIN)); + TERN_(HAS_TEMP_ADC_SOC, hal.adc_enable(TEMP_SOC_PIN)); TERN_(HAS_TEMP_ADC_REDUNDANT, hal.adc_enable(TEMP_REDUNDANT_PIN)); TERN_(FILAMENT_WIDTH_SENSOR, hal.adc_enable(FILWIDTH_PIN)); TERN_(HAS_ADC_BUTTONS, hal.adc_enable(ADC_KEYPAD_PIN)); @@ -2858,6 +2884,10 @@ void Temperature::init() { while (analog_to_celsius_board(maxtemp_raw_BOARD) > BOARD_MAXTEMP) maxtemp_raw_BOARD -= TEMPDIR(BOARD) * (OVERSAMPLENR); #endif + #if BOTH(HAS_TEMP_SOC, THERMAL_PROTECTION_SOC) + while (analog_to_celsius_soc(maxtemp_raw_SOC) > SOC_MAXTEMP) maxtemp_raw_SOC -= OVERSAMPLENR; + #endif + #if HAS_TEMP_REDUNDANT temp_redundant.target = &( #if REDUNDANT_TEMP_MATCH(TARGET, COOLER) && HAS_TEMP_COOLER @@ -3340,6 +3370,7 @@ void Temperature::update_raw_temperatures() { TERN_(HAS_TEMP_ADC_PROBE, temp_probe.update()); TERN_(HAS_TEMP_ADC_COOLER, temp_cooler.update()); TERN_(HAS_TEMP_ADC_BOARD, temp_board.update()); + TERN_(HAS_TEMP_ADC_SOC, temp_soc.update()); TERN_(HAS_JOY_ADC_X, joystick.x.update()); TERN_(HAS_JOY_ADC_Y, joystick.y.update()); @@ -3370,6 +3401,7 @@ void Temperature::readings_ready() { TERN_(HAS_TEMP_PROBE, temp_probe.reset()); TERN_(HAS_TEMP_COOLER, temp_cooler.reset()); TERN_(HAS_TEMP_BOARD, temp_board.reset()); + TERN_(HAS_TEMP_SOC, temp_soc.reset()); TERN_(HAS_TEMP_REDUNDANT, temp_redundant.reset()); TERN_(HAS_JOY_ADC_X, joystick.x.reset()); @@ -3828,6 +3860,11 @@ void Temperature::isr() { case MeasureTemp_BOARD: ACCUMULATE_ADC(temp_board); break; #endif + #if HAS_TEMP_ADC_SOC + case PrepareTemp_SOC: hal.adc_start(TEMP_SOC_PIN); break; + case MeasureTemp_SOC: ACCUMULATE_ADC(temp_soc); break; + #endif + #if HAS_TEMP_ADC_REDUNDANT case PrepareTemp_REDUNDANT: hal.adc_start(TEMP_REDUNDANT_PIN); break; case MeasureTemp_REDUNDANT: ACCUMULATE_ADC(temp_redundant); break; @@ -3967,8 +4004,10 @@ void Temperature::isr() { * Print a single heater state in the form: * Bed: " B:nnn.nn /nnn.nn" * Chamber: " C:nnn.nn /nnn.nn" - * Probe: " P:nnn.nn /nnn.nn" + * Probe: " P:nnn.nn" * Cooler: " L:nnn.nn /nnn.nn" + * Board: " M:nnn.nn" + * SoC: " S:nnn.nn" * Redundant: " R:nnn.nn /nnn.nn" * Extruder: " T0:nnn.nn /nnn.nn" * With ADC: " T0:nnn.nn /nnn.nn (nnn.nn)" @@ -3977,6 +4016,7 @@ void Temperature::isr() { OPTARG(SHOW_TEMP_ADC_VALUES, const float r) ) { char k; + bool show_t = true; switch (e) { default: #if HAS_TEMP_HOTEND @@ -3989,13 +4029,16 @@ void Temperature::isr() { case H_CHAMBER: k = 'C'; break; #endif #if HAS_TEMP_PROBE - case H_PROBE: k = 'P'; break; + case H_PROBE: k = 'P'; show_t = false; break; #endif #if HAS_TEMP_COOLER case H_COOLER: k = 'L'; break; #endif #if HAS_TEMP_BOARD - case H_BOARD: k = 'M'; break; + case H_BOARD: k = 'M'; show_t = false; break; + #endif + #if HAS_TEMP_SOC + case H_SOC: k = 'S'; show_t = false; break; #endif #if HAS_TEMP_REDUNDANT case H_REDUNDANT: k = 'R'; break; @@ -4010,10 +4053,8 @@ void Temperature::isr() { #else #define SFP 2 #endif - SERIAL_CHAR(':'); - SERIAL_PRINT(c, SFP); - SERIAL_ECHOPGM(" /"); - SERIAL_PRINT(t, SFP); + SERIAL_CHAR(':'); SERIAL_PRINT(c, SFP); + if (show_t) { SERIAL_ECHOPGM(" /"); SERIAL_PRINT(t, SFP); } #if ENABLED(SHOW_TEMP_ADC_VALUES) // Temperature MAX SPI boards do not have an OVERSAMPLENR defined SERIAL_ECHOPGM(" (", TERN(HAS_MAXTC_LIBRARIES, k == 'T', false) ? r : r * RECIPROCAL(OVERSAMPLENR)); @@ -4043,6 +4084,9 @@ void Temperature::isr() { #if HAS_TEMP_BOARD print_heater_state(H_BOARD, degBoard(), 0 OPTARG(SHOW_TEMP_ADC_VALUES, rawBoardTemp())); #endif + #if HAS_TEMP_SOC + print_heater_state(H_SOC, degSoc(), 0 OPTARG(SHOW_TEMP_ADC_VALUES, rawSocTemp())); + #endif #if HAS_TEMP_REDUNDANT if (include_r) print_heater_state(H_REDUNDANT, degRedundant(), degRedundantTarget() OPTARG(SHOW_TEMP_ADC_VALUES, rawRedundantTemp())); #endif diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index 4bf76e5d48..2fdd1f02c8 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -54,6 +54,7 @@ typedef enum : int_fast8_t { H_COOLER = HID_COOLER, H_PROBE = HID_PROBE, H_BOARD = HID_BOARD, + H_SOC = HID_SOC, H_CHAMBER = HID_CHAMBER, H_BED = HID_BED, H_E0 = HID_E0, H_E1, H_E2, H_E3, H_E4, H_E5, H_E6, H_E7, @@ -83,6 +84,9 @@ enum ADCSensorState : char { #if HAS_TEMP_ADC_BOARD PrepareTemp_BOARD, MeasureTemp_BOARD, #endif + #if HAS_TEMP_ADC_SOC + PrepareTemp_SOC, MeasureTemp_SOC, + #endif #if HAS_TEMP_ADC_REDUNDANT PrepareTemp_REDUNDANT, MeasureTemp_REDUNDANT, #endif @@ -480,6 +484,9 @@ struct PIDHeaterInfo : public HeaterInfo { #if HAS_TEMP_BOARD typedef temp_info_t board_info_t; #endif +#if HAS_TEMP_SOC + typedef temp_info_t soc_info_t; +#endif // Heater watch handling template @@ -607,6 +614,9 @@ class Temperature { #if HAS_TEMP_BOARD static board_info_t temp_board; #endif + #if HAS_TEMP_SOC + static soc_info_t temp_soc; + #endif #if HAS_TEMP_REDUNDANT static redundant_info_t temp_redundant; #endif @@ -754,6 +764,10 @@ class Temperature { static raw_adc_t mintemp_raw_BOARD, maxtemp_raw_BOARD; #endif + #if BOTH(HAS_TEMP_SOC, THERMAL_PROTECTION_SOC) + static raw_adc_t maxtemp_raw_SOC; + #endif + #if MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED > 1 static uint8_t consecutive_low_temperature_error[HOTENDS]; #endif @@ -846,6 +860,9 @@ class Temperature { #if HAS_TEMP_BOARD static celsius_float_t analog_to_celsius_board(const raw_adc_t raw); #endif + #if HAS_TEMP_SOC + static celsius_float_t analog_to_celsius_soc(const raw_adc_t raw); + #endif #if HAS_TEMP_REDUNDANT static celsius_float_t analog_to_celsius_redundant(const raw_adc_t raw); #endif @@ -1119,6 +1136,14 @@ class Temperature { static celsius_t wholeDegBoard() { return static_cast(temp_board.celsius + 0.5f); } #endif + #if HAS_TEMP_SOC + #if ENABLED(SHOW_TEMP_ADC_VALUES) + static raw_adc_t rawSocTemp() { return temp_soc.getraw(); } + #endif + static celsius_float_t degSoc() { return temp_soc.celsius; } + static celsius_t wholeDegSoc() { return static_cast(temp_soc.celsius + 0.5f); } + #endif + #if HAS_TEMP_REDUNDANT #if ENABLED(SHOW_TEMP_ADC_VALUES) static raw_adc_t rawRedundantTemp() { return temp_redundant.getraw(); } diff --git a/Marlin/src/module/thermistor/thermistors.h b/Marlin/src/module/thermistor/thermistors.h index c596d746f7..53ca609f68 100644 --- a/Marlin/src/module/thermistor/thermistors.h +++ b/Marlin/src/module/thermistor/thermistors.h @@ -532,6 +532,10 @@ static_assert(255 > TEMPTABLE_0_LEN || 255 > TEMPTABLE_1_LEN || 255 > TEMPTABLE_ #define TEMP_SENSOR_BOARD_RAW_LO_TEMP MAX_RAW_THERMISTOR_VALUE #endif #endif +#ifndef TEMP_SENSOR_SOC_RAW_HI_TEMP + #define TEMP_SENSOR_SOC_RAW_LO_TEMP 0 + #define TEMP_SENSOR_SOC_RAW_HI_TEMP MAX_RAW_THERMISTOR_VALUE +#endif #ifndef TEMP_SENSOR_REDUNDANT_RAW_HI_TEMP #if TT_REVRAW(REDUNDANT) #define TEMP_SENSOR_REDUNDANT_RAW_HI_TEMP MAX_RAW_THERMISTOR_VALUE diff --git a/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h b/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h index 3793f65bfa..8c32202d4d 100644 --- a/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h +++ b/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h @@ -171,7 +171,10 @@ #define TEMP_0_PIN P0_24 #define TEMP_1_PIN P0_23 #define TEMP_BED_PIN P0_25 -#define TEMP_BOARD_PIN P1_30 // Onboard thermistor, NTC100K + +#ifndef TEMP_BOARD_PIN + #define TEMP_BOARD_PIN P1_30 // Onboard thermistor, NTC100K +#endif // // Heaters / Fans diff --git a/Marlin/src/pins/pins_postprocess.h b/Marlin/src/pins/pins_postprocess.h index 6ae99d2f57..cf64b28cd5 100644 --- a/Marlin/src/pins/pins_postprocess.h +++ b/Marlin/src/pins/pins_postprocess.h @@ -456,6 +456,11 @@ #define TEMP_BED_PIN -1 #endif +// Use ATEMP if TEMP_SOC_PIN is not defined +#if !defined(TEMP_SOC_PIN) && defined(ATEMP) + #define TEMP_SOC_PIN ATEMP +#endif + #ifndef SD_DETECT_PIN #define SD_DETECT_PIN -1 #endif diff --git a/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h index ced9c722f4..531739ca16 100644 --- a/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h +++ b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h @@ -118,10 +118,13 @@ // #define TEMP_0_PIN 0 // Analog Input, Header J2 #define TEMP_1_PIN 1 // Analog Input, Header J3 -#define TEMP_BOARD_PIN 91 // Onboard thermistor, 100k TDK NTCG104LH104JT1 #define TEMP_BED_PIN 2 // Analog Input, Header J6 #define TEMP_PROBE_PIN 3 // Analog Input, Header J15 +#ifndef TEMP_BOARD_PIN + #define TEMP_BOARD_PIN 91 // Onboard thermistor, 100k TDK NTCG104LH104JT1 +#endif + // // Heaters / Fans // diff --git a/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h b/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h index 41d43c0b04..8ad5e2229c 100644 --- a/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h +++ b/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h @@ -69,7 +69,10 @@ #define TEMP_0_PIN 0 // Analog Input (HOTEND0 thermistor) #define TEMP_1_PIN 2 // Analog Input (unused) #define TEMP_BED_PIN 1 // Analog Input (BED thermistor) -#define TEMP_BOARD_PIN 5 // Analog Input (OnBoard thermistor beta 3950) + +#ifndef TEMP_BOARD_PIN + #define TEMP_BOARD_PIN 5 // Analog Input (OnBoard thermistor beta 3950) +#endif // SPI for MAX Thermocouple #if !HAS_MEDIA diff --git a/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h b/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h index de85484eae..7a1f1e6cce 100644 --- a/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h @@ -148,18 +148,22 @@ #define E0_SLAVE_ADDRESS 0 #endif #endif + // // Temperature Sensors // -#define TEMP_BED_PIN PC2 //TB -#define TEMP_0_PIN PC1 //TH1 -//#define TEMP_1_PIN PC3 //TH2 -#define TEMP_BOARD_PIN PC3 -#ifndef TEMP_SENSOR_BOARD - #define TEMP_SENSOR_BOARD 13 -#endif +#define TEMP_BED_PIN PC2 // TB +#define TEMP_0_PIN PC1 // TH1 +//#define TEMP_1_PIN PC3 // TH2 #define FIL_RUNOUT_PIN PA10 // MT_DET +#ifndef TEMP_BOARD_PIN + #define TEMP_BOARD_PIN PC3 +#endif +#if TEMP_BOARD_PIN == PC3 && TEMP_SENSOR_BOARD != 13 + #warning "The built-in TEMP_SENSOR_BOARD is 13 for ERYONE Ery32 mini." +#endif + // // LCD Pins // diff --git a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h index 73af02d3ab..f40e6c2d69 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h @@ -160,10 +160,13 @@ // #define TEMP_0_PIN PA2 // T0 <-> E0 #define TEMP_1_PIN PA0 // T1 <-> E1 -#define TEMP_BOARD_PIN PC2 // Onboard thermistor, NTC100K #define TEMP_BED_PIN PA1 // T2 <-> Bed #define TEMP_PROBE_PIN PC3 // Shares J4 connector with PD1 +#ifndef TEMP_BOARD_PIN + #define TEMP_BOARD_PIN PC2 // Onboard thermistor, NTC100K +#endif + // // Heaters / Fans // diff --git a/buildroot/share/PlatformIO/scripts/schema.py b/buildroot/share/PlatformIO/scripts/schema.py index 103aa1f072..afac7b5d27 100755 --- a/buildroot/share/PlatformIO/scripts/schema.py +++ b/buildroot/share/PlatformIO/scripts/schema.py @@ -190,7 +190,7 @@ def extract(): elif state == Parse.BLOCK_COMMENT: # Look for temperature sensors - if cline == "Temperature sensors available:": + if re.match(r'temperature sensors.*:', cline, re.IGNORECASE): state, cline = Parse.GET_SENSORS, "Temperature Sensors" options_json, section = use_comment(cline, options_json, section, comment_buff) diff --git a/buildroot/tests/STM32F103RC_btt_USB b/buildroot/tests/STM32F103RC_btt_USB index 8381de0ea6..3981466c46 100755 --- a/buildroot/tests/STM32F103RC_btt_USB +++ b/buildroot/tests/STM32F103RC_btt_USB @@ -10,8 +10,8 @@ set -e # Build with the default configurations # restore_configs -opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_V1_1 SERIAL_PORT 1 SERIAL_PORT_2 -1 -exec_test $1 $2 "BigTreeTech SKR Mini v1.1 - Basic Configuration" "$3" +opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_V1_1 SERIAL_PORT 1 SERIAL_PORT_2 -1 TEMP_SENSOR_SOC 1 +exec_test $1 $2 "BigTreeTech SKR Mini v1.1 - SOC Temperature" "$3" # clean up restore_configs From a4cc9b60fd27c3b4ac81c322107fa4a041cb51b5 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 26 Apr 2023 00:21:12 +0000 Subject: [PATCH 330/659] [cron] Bump distribution date (2023-04-26) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 764df84470..c357b9f8b8 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-25" +//#define STRING_DISTRIBUTION_DATE "2023-04-26" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index cf9077c43e..f2caef0458 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-25" + #define STRING_DISTRIBUTION_DATE "2023-04-26" #endif /** From 08edb6282f7c85f785bd838be9ef59ef247e61a2 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 26 Apr 2023 02:57:53 -0500 Subject: [PATCH 331/659] =?UTF-8?q?=F0=9F=94=A7=20Extra=20axis=20endstop?= =?UTF-8?q?=20defaults?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_post.h | 36 ++++++++++++++++++++++++++++++ Marlin/src/pins/pins_postprocess.h | 36 ++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index ac701c4570..f3d80a6c9f 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -1085,6 +1085,24 @@ #if ENABLED(USE_ZMAX_PLUG) #define ENDSTOPPULLDOWN_ZMAX #endif + #if ENABLED(USE_IMAX_PLUG) + #define ENDSTOPPULLDOWN_IMAX + #endif + #if ENABLED(USE_JMAX_PLUG) + #define ENDSTOPPULLDOWN_JMAX + #endif + #if ENABLED(USE_KMAX_PLUG) + #define ENDSTOPPULLDOWN_KMAX + #endif + #if ENABLED(USE_UMAX_PLUG) + #define ENDSTOPPULLDOWN_UMAX + #endif + #if ENABLED(USE_VMAX_PLUG) + #define ENDSTOPPULLDOWN_VMAX + #endif + #if ENABLED(USE_WMAX_PLUG) + #define ENDSTOPPULLDOWN_WMAX + #endif #if ENABLED(USE_XMIN_PLUG) #define ENDSTOPPULLDOWN_XMIN #endif @@ -1094,6 +1112,24 @@ #if ENABLED(USE_ZMIN_PLUG) #define ENDSTOPPULLDOWN_ZMIN #endif + #if ENABLED(USE_IMIN_PLUG) + #define ENDSTOPPULLDOWN_IMIN + #endif + #if ENABLED(USE_JMIN_PLUG) + #define ENDSTOPPULLDOWN_JMIN + #endif + #if ENABLED(USE_KMIN_PLUG) + #define ENDSTOPPULLDOWN_KMIN + #endif + #if ENABLED(USE_UMIN_PLUG) + #define ENDSTOPPULLDOWN_UMIN + #endif + #if ENABLED(USE_VMIN_PLUG) + #define ENDSTOPPULLDOWN_VMIN + #endif + #if ENABLED(USE_WMIN_PLUG) + #define ENDSTOPPULLDOWN_WMIN + #endif #endif /** diff --git a/Marlin/src/pins/pins_postprocess.h b/Marlin/src/pins/pins_postprocess.h index cf64b28cd5..4c07b5412d 100644 --- a/Marlin/src/pins/pins_postprocess.h +++ b/Marlin/src/pins/pins_postprocess.h @@ -1723,6 +1723,24 @@ #if !defined(USE_ZMAX_PLUG) && _STOP_IN_USE(_ZMAX_) #define USE_ZMAX_PLUG #endif +#if !defined(USE_IMAX_PLUG) && _STOP_IN_USE(_IMAX_) + #define USE_IMAX_PLUG +#endif +#if !defined(USE_JMAX_PLUG) && _STOP_IN_USE(_JMAX_) + #define USE_JMAX_PLUG +#endif +#if !defined(USE_KMAX_PLUG) && _STOP_IN_USE(_KMAX_) + #define USE_KMAX_PLUG +#endif +#if !defined(USE_UMAX_PLUG) && _STOP_IN_USE(_UMAX_) + #define USE_UMAX_PLUG +#endif +#if !defined(USE_VMAX_PLUG) && _STOP_IN_USE(_VMAX_) + #define USE_VMAX_PLUG +#endif +#if !defined(USE_WMAX_PLUG) && _STOP_IN_USE(_WMAX_) + #define USE_WMAX_PLUG +#endif #if !defined(USE_XMIN_PLUG) && _STOP_IN_USE(_XMIN_) #define USE_XMIN_PLUG #endif @@ -1732,6 +1750,24 @@ #if !defined(USE_ZMIN_PLUG) && _STOP_IN_USE(_ZMIN_) #define USE_ZMIN_PLUG #endif +#if !defined(USE_IMIN_PLUG) && _STOP_IN_USE(_IMIN_) + #define USE_IMIN_PLUG +#endif +#if !defined(USE_JMIN_PLUG) && _STOP_IN_USE(_JMIN_) + #define USE_JMIN_PLUG +#endif +#if !defined(USE_KMIN_PLUG) && _STOP_IN_USE(_KMIN_) + #define USE_KMIN_PLUG +#endif +#if !defined(USE_UMIN_PLUG) && _STOP_IN_USE(_UMIN_) + #define USE_UMIN_PLUG +#endif +#if !defined(USE_VMIN_PLUG) && _STOP_IN_USE(_VMIN_) + #define USE_VMIN_PLUG +#endif +#if !defined(USE_WMIN_PLUG) && _STOP_IN_USE(_WMIN_) + #define USE_WMIN_PLUG +#endif #undef _STOP_IN_USE #if !USES_Z_MIN_PROBE_PIN #undef Z_MIN_PROBE_PIN From 68f74784a3a41c643984ee62a507b25903430591 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 26 Apr 2023 13:50:45 -0500 Subject: [PATCH 332/659] =?UTF-8?q?=F0=9F=8E=A8=20Misc.=20fixes,=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/types.h | 2 + Marlin/src/gcode/calibrate/M666.cpp | 2 +- Marlin/src/gcode/gcode.cpp | 2 +- Marlin/src/module/endstops.cpp | 148 ++++++--------------- Marlin/src/module/endstops.h | 55 ++++---- Marlin/src/module/motion.cpp | 50 +++---- Marlin/src/pins/pins_postprocess.h | 116 ++-------------- Marlin/src/pins/ramps/pins_RUMBA.h | 3 - Marlin/src/pins/ramps/pins_TRIGORILLA_14.h | 4 +- 9 files changed, 119 insertions(+), 263 deletions(-) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 15d572af60..af6834c666 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -67,6 +67,8 @@ template struct IF { typedef L type; }; #define SECONDARY_AXIS_GANG(V...) GANG_N(SECONDARY_AXES, V) #define SECONDARY_AXIS_CODE(V...) CODE_N(SECONDARY_AXES, V) +#define SECONDARY_AXIS_LIST(V...) LIST_N(SECONDARY_AXES, V) +#define SECONDARY_AXIS_ARGS(T) SECONDARY_AXIS_LIST(T i, T j, T k, T u, T v, T w) #if HAS_ROTATIONAL_AXES #define ROTATIONAL_AXIS_GANG(V...) GANG_N(ROTATIONAL_AXES, V) diff --git a/Marlin/src/gcode/calibrate/M666.cpp b/Marlin/src/gcode/calibrate/M666.cpp index 90fad1811c..546aa7fcb5 100644 --- a/Marlin/src/gcode/calibrate/M666.cpp +++ b/Marlin/src/gcode/calibrate/M666.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(DELTA) || HAS_EXTRA_ENDSTOPS +#if EITHER(DELTA, HAS_EXTRA_ENDSTOPS) #include "../gcode.h" diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 06a9600c43..931c30c26d 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -954,7 +954,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 665: M665(); break; // M665: Set Kinematics parameters #endif - #if ENABLED(DELTA) || HAS_EXTRA_ENDSTOPS + #if EITHER(DELTA, HAS_EXTRA_ENDSTOPS) case 666: M666(); break; // M666: Set delta or multiple endstop adjustment #endif diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 56444d1aee..25553a98ac 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -514,12 +514,12 @@ void Endstops::update() { #endif // Macros to update / copy the live_state - #define UPDATE_ENDSTOP_BIT(AXIS, MINMAX) SET_BIT_TO(live_state, _ENDSTOP(AXIS, MINMAX), (READ_ENDSTOP(_ENDSTOP_PIN(AXIS, MINMAX)) == _ENDSTOP_HIT_STATE(AXIS, MINMAX))) + #define UPDATE_LIVE_STATE(AXIS, MINMAX) SET_BIT_TO(live_state, _ENDSTOP(AXIS, MINMAX), (READ_ENDSTOP(_ENDSTOP_PIN(AXIS, MINMAX)) == _ENDSTOP_HIT_STATE(AXIS, MINMAX))) #define COPY_LIVE_STATE(SRC_BIT, DST_BIT) SET_BIT_TO(live_state, DST_BIT, TEST(live_state, SRC_BIT)) #if ENABLED(G38_PROBE_TARGET) // For G38 moves check the probe's pin for ALL movement - if (G38_move) UPDATE_ENDSTOP_BIT(Z, TERN(USES_Z_MIN_PROBE_PIN, MIN_PROBE, MIN)); + if (G38_move) UPDATE_LIVE_STATE(Z, TERN(USES_Z_MIN_PROBE_PIN, MIN_PROBE, MIN)); #endif // With Dual X, endstops are only checked in the homing direction for the active extruder @@ -554,10 +554,10 @@ void Endstops::update() { * Check and update endstops */ #if HAS_X_MIN && !X_SPI_SENSORLESS - UPDATE_ENDSTOP_BIT(X, MIN); + UPDATE_LIVE_STATE(X, MIN); #if ENABLED(X_DUAL_ENDSTOPS) #if HAS_X2_MIN - UPDATE_ENDSTOP_BIT(X2, MIN); + UPDATE_LIVE_STATE(X2, MIN); #else COPY_LIVE_STATE(X_MIN, X2_MIN); #endif @@ -565,10 +565,10 @@ void Endstops::update() { #endif #if HAS_X_MAX && !X_SPI_SENSORLESS - UPDATE_ENDSTOP_BIT(X, MAX); + UPDATE_LIVE_STATE(X, MAX); #if ENABLED(X_DUAL_ENDSTOPS) #if HAS_X2_MAX - UPDATE_ENDSTOP_BIT(X2, MAX); + UPDATE_LIVE_STATE(X2, MAX); #else COPY_LIVE_STATE(X_MAX, X2_MAX); #endif @@ -576,10 +576,10 @@ void Endstops::update() { #endif #if HAS_Y_MIN && !Y_SPI_SENSORLESS - UPDATE_ENDSTOP_BIT(Y, MIN); + UPDATE_LIVE_STATE(Y, MIN); #if ENABLED(Y_DUAL_ENDSTOPS) #if HAS_Y2_MIN - UPDATE_ENDSTOP_BIT(Y2, MIN); + UPDATE_LIVE_STATE(Y2, MIN); #else COPY_LIVE_STATE(Y_MIN, Y2_MIN); #endif @@ -587,10 +587,10 @@ void Endstops::update() { #endif #if HAS_Y_MAX && !Y_SPI_SENSORLESS - UPDATE_ENDSTOP_BIT(Y, MAX); + UPDATE_LIVE_STATE(Y, MAX); #if ENABLED(Y_DUAL_ENDSTOPS) #if HAS_Y2_MAX - UPDATE_ENDSTOP_BIT(Y2, MAX); + UPDATE_LIVE_STATE(Y2, MAX); #else COPY_LIVE_STATE(Y_MAX, Y2_MAX); #endif @@ -598,23 +598,23 @@ void Endstops::update() { #endif #if HAS_Z_MIN && NONE(Z_SPI_SENSORLESS, Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - UPDATE_ENDSTOP_BIT(Z, MIN); + UPDATE_LIVE_STATE(Z, MIN); #if ENABLED(Z_MULTI_ENDSTOPS) #if HAS_Z2_MIN - UPDATE_ENDSTOP_BIT(Z2, MIN); + UPDATE_LIVE_STATE(Z2, MIN); #else COPY_LIVE_STATE(Z_MIN, Z2_MIN); #endif #if NUM_Z_STEPPERS >= 3 #if HAS_Z3_MIN - UPDATE_ENDSTOP_BIT(Z3, MIN); + UPDATE_LIVE_STATE(Z3, MIN); #else COPY_LIVE_STATE(Z_MIN, Z3_MIN); #endif #endif #if NUM_Z_STEPPERS >= 4 #if HAS_Z4_MIN - UPDATE_ENDSTOP_BIT(Z4, MIN); + UPDATE_LIVE_STATE(Z4, MIN); #else COPY_LIVE_STATE(Z_MIN, Z4_MIN); #endif @@ -625,189 +625,129 @@ void Endstops::update() { #if HAS_BED_PROBE // When closing the gap check the enabled probe if (probe_switch_activated()) - UPDATE_ENDSTOP_BIT(Z, TERN(USES_Z_MIN_PROBE_PIN, MIN_PROBE, MIN)); + UPDATE_LIVE_STATE(Z, TERN(USES_Z_MIN_PROBE_PIN, MIN_PROBE, MIN)); #endif #if HAS_Z_MAX && !Z_SPI_SENSORLESS // Check both Z dual endstops #if ENABLED(Z_MULTI_ENDSTOPS) - UPDATE_ENDSTOP_BIT(Z, MAX); + UPDATE_LIVE_STATE(Z, MAX); #if HAS_Z2_MAX - UPDATE_ENDSTOP_BIT(Z2, MAX); + UPDATE_LIVE_STATE(Z2, MAX); #else COPY_LIVE_STATE(Z_MAX, Z2_MAX); #endif #if NUM_Z_STEPPERS >= 3 #if HAS_Z3_MAX - UPDATE_ENDSTOP_BIT(Z3, MAX); + UPDATE_LIVE_STATE(Z3, MAX); #else COPY_LIVE_STATE(Z_MAX, Z3_MAX); #endif #endif #if NUM_Z_STEPPERS >= 4 #if HAS_Z4_MAX - UPDATE_ENDSTOP_BIT(Z4, MAX); + UPDATE_LIVE_STATE(Z4, MAX); #else COPY_LIVE_STATE(Z_MAX, Z4_MAX); #endif #endif #elif TERN1(USES_Z_MIN_PROBE_PIN, Z_MAX_PIN != Z_MIN_PROBE_PIN) // If this pin isn't the bed probe it's the Z endstop - UPDATE_ENDSTOP_BIT(Z, MAX); + UPDATE_LIVE_STATE(Z, MAX); #endif #endif #if HAS_I_MIN && !I_SPI_SENSORLESS #if ENABLED(I_DUAL_ENDSTOPS) - UPDATE_ENDSTOP_BIT(I, MIN); - #if HAS_I2_MIN - UPDATE_ENDSTOP_BIT(I2, MAX); - #else - COPY_LIVE_STATE(I_MIN, I2_MIN); - #endif + UPDATE_LIVE_STATE(I, MIN); #else - UPDATE_ENDSTOP_BIT(I, MIN); + UPDATE_LIVE_STATE(I, MIN); #endif #endif #if HAS_I_MAX && !I_SPI_SENSORLESS #if ENABLED(I_DUAL_ENDSTOPS) - UPDATE_ENDSTOP_BIT(I, MAX); - #if HAS_I2_MAX - UPDATE_ENDSTOP_BIT(I2, MAX); - #else - COPY_LIVE_STATE(I_MAX, I2_MAX); - #endif + UPDATE_LIVE_STATE(I, MAX); #else - UPDATE_ENDSTOP_BIT(I, MAX); + UPDATE_LIVE_STATE(I, MAX); #endif #endif #if HAS_J_MIN && !J_SPI_SENSORLESS #if ENABLED(J_DUAL_ENDSTOPS) - UPDATE_ENDSTOP_BIT(J, MIN); - #if HAS_J2_MIN - UPDATE_ENDSTOP_BIT(J2, MIN); - #else - COPY_LIVE_STATE(J_MIN, J2_MIN); - #endif + UPDATE_LIVE_STATE(J, MIN); #else - UPDATE_ENDSTOP_BIT(J, MIN); + UPDATE_LIVE_STATE(J, MIN); #endif #endif #if HAS_J_MAX && !J_SPI_SENSORLESS #if ENABLED(J_DUAL_ENDSTOPS) - UPDATE_ENDSTOP_BIT(J, MAX); - #if HAS_J2_MAX - UPDATE_ENDSTOP_BIT(J2, MAX); - #else - COPY_LIVE_STATE(J_MAX, J2_MAX); - #endif + UPDATE_LIVE_STATE(J, MAX); #else - UPDATE_ENDSTOP_BIT(J, MAX); + UPDATE_LIVE_STATE(J, MAX); #endif #endif #if HAS_K_MIN && !K_SPI_SENSORLESS #if ENABLED(K_DUAL_ENDSTOPS) - UPDATE_ENDSTOP_BIT(K, MIN); - #if HAS_K2_MIN - UPDATE_ENDSTOP_BIT(K2, MIN); - #else - COPY_LIVE_STATE(K_MIN, K2_MIN); - #endif + UPDATE_LIVE_STATE(K, MIN); #else - UPDATE_ENDSTOP_BIT(K, MIN); + UPDATE_LIVE_STATE(K, MIN); #endif #endif #if HAS_K_MAX && !K_SPI_SENSORLESS #if ENABLED(K_DUAL_ENDSTOPS) - UPDATE_ENDSTOP_BIT(K, MAX); - #if HAS_K2_MAX - UPDATE_ENDSTOP_BIT(K2, MAX); - #else - COPY_LIVE_STATE(K_MAX, K2_MAX); - #endif + UPDATE_LIVE_STATE(K, MAX); #else - UPDATE_ENDSTOP_BIT(K, MAX); + UPDATE_LIVE_STATE(K, MAX); #endif #endif #if HAS_U_MIN && !U_SPI_SENSORLESS #if ENABLED(U_DUAL_ENDSTOPS) - UPDATE_ENDSTOP_BIT(U, MIN); - #if HAS_U2_MIN - UPDATE_ENDSTOP_BIT(U2, MIN); - #else - COPY_LIVE_STATE(U_MIN, U2_MIN); - #endif + UPDATE_LIVE_STATE(U, MIN); #else - UPDATE_ENDSTOP_BIT(U, MIN); + UPDATE_LIVE_STATE(U, MIN); #endif #endif #if HAS_U_MAX && !U_SPI_SENSORLESS #if ENABLED(U_DUAL_ENDSTOPS) - UPDATE_ENDSTOP_BIT(U, MAX); - #if HAS_U2_MAX - UPDATE_ENDSTOP_BIT(U2, MAX); - #else - COPY_LIVE_STATE(U_MAX, U2_MAX); - #endif + UPDATE_LIVE_STATE(U, MAX); #else - UPDATE_ENDSTOP_BIT(U, MAX); + UPDATE_LIVE_STATE(U, MAX); #endif #endif #if HAS_V_MIN && !V_SPI_SENSORLESS #if ENABLED(V_DUAL_ENDSTOPS) - UPDATE_ENDSTOP_BIT(V, MIN); - #if HAS_V2_MIN - UPDATE_ENDSTOP_BIT(V2, MIN); - #else - COPY_LIVE_STATE(V_MIN, V2_MIN); - #endif + UPDATE_LIVE_STATE(V, MIN); #else - UPDATE_ENDSTOP_BIT(V, MIN); + UPDATE_LIVE_STATE(V, MIN); #endif #endif #if HAS_V_MAX && !V_SPI_SENSORLESS #if ENABLED(O_DUAL_ENDSTOPS) - UPDATE_ENDSTOP_BIT(V, MAX); - #if HAS_V2_MAX - UPDATE_ENDSTOP_BIT(V2, MAX); - #else - COPY_LIVE_STATE(V_MAX, V2_MAX); - #endif + UPDATE_LIVE_STATE(V, MAX); #else - UPDATE_ENDSTOP_BIT(V, MAX); + UPDATE_LIVE_STATE(V, MAX); #endif #endif #if HAS_W_MIN && !W_SPI_SENSORLESS #if ENABLED(W_DUAL_ENDSTOPS) - UPDATE_ENDSTOP_BIT(W, MIN); - #if HAS_W2_MIN - UPDATE_ENDSTOP_BIT(W2, MIN); - #else - COPY_LIVE_STATE(W_MIN, W2_MIN); - #endif + UPDATE_LIVE_STATE(W, MIN); #else - UPDATE_ENDSTOP_BIT(W, MIN); + UPDATE_LIVE_STATE(W, MIN); #endif #endif #if HAS_W_MAX && !W_SPI_SENSORLESS #if ENABLED(W_DUAL_ENDSTOPS) - UPDATE_ENDSTOP_BIT(W, MAX); - #if HAS_W2_MAX - UPDATE_ENDSTOP_BIT(W2, MAX); - #else - COPY_LIVE_STATE(W_MAX, W2_MAX); - #endif + UPDATE_LIVE_STATE(W, MAX); #else - UPDATE_ENDSTOP_BIT(W, MAX); + UPDATE_LIVE_STATE(W, MAX); #endif #endif diff --git a/Marlin/src/module/endstops.h b/Marlin/src/module/endstops.h index 9e942dc18e..28917697c4 100644 --- a/Marlin/src/module/endstops.h +++ b/Marlin/src/module/endstops.h @@ -28,58 +28,65 @@ #include "../inc/MarlinConfig.h" #include -#define __ES_ITEM(N) N, -#define _ES_ITEM(K,N) TERN_(K,DEFER4(__ES_ITEM)(N)) +#define _ES_ITEM(N) N, +#define ES_ITEM(K,N) TERN_(K,DEFER4(_ES_ITEM)(N)) /** * Basic Endstop Flag Bits: - * - Each axis gets one endstop flag bit based on the homing direction (e.g., "EndstopEnum::X_MIN"). + * - Each axis with an endstop gets a flag for its homing direction. * (The use of "MIN" or "MAX" makes it easier to pair with similarly-named endstop pins.) - * - Multi-stepper axes can optionally enable endstops for all axis steppers. - * - The bed probe gets a 'Z_PROBE' flag bit (but DELTA sensorless probing uses 3 endstops). + * - Bed probes with a single pin get a Z_MIN_PROBE flag. This includes Sensorless Z Probe. + * + * Extended Flag Bits: + * - Multi-stepper axes may have multi-endstops such as X2_MIN, Y2_MAX, etc. + * - DELTA gets X_MAX, Y_MAX, and Z_MAX corresponding to its "A", "B", "C" towers. + * - For DUAL_X_CARRIAGE the X axis has both X_MIN and X_MAX flags. + * - The Z axis may have both MIN and MAX when homing to MAX and the probe is Z_MIN. + * - DELTA Sensorless Probe uses X/Y/Z_MAX but sets the Z_MIN flag. * * Endstop Flag Bit Aliases: * - Each *_MIN or *_MAX flag is aliased to *_ENDSTOP. - * - 'Z_ENDSTOP' is aliased to 'Z_PROBE' if homing with the probe. + * - Z_MIN_PROBE is an alias to Z_MIN when the Z_MIN_PIN is being used as the probe pin. + * - When homing with the probe Z_ENDSTOP is a Z_MIN_PROBE alias, otherwise a Z_MIN/MAX alias. */ enum EndstopEnum : char { - // Common XYZ (ABC) endstops. Defined according to USE_[XYZ](MIN|MAX)_PLUG settings. - _ES_ITEM(HAS_X_MIN, X_MIN) _ES_ITEM(HAS_X_MAX, X_MAX) - _ES_ITEM(HAS_Y_MIN, Y_MIN) _ES_ITEM(HAS_Y_MAX, Y_MAX) - _ES_ITEM(HAS_Z_MIN, Z_MIN) _ES_ITEM(HAS_Z_MAX, Z_MAX) - _ES_ITEM(HAS_I_MIN, I_MIN) _ES_ITEM(HAS_I_MAX, I_MAX) - _ES_ITEM(HAS_J_MIN, J_MIN) _ES_ITEM(HAS_J_MAX, J_MAX) - _ES_ITEM(HAS_K_MIN, K_MIN) _ES_ITEM(HAS_K_MAX, K_MAX) - _ES_ITEM(HAS_U_MIN, U_MIN) _ES_ITEM(HAS_U_MAX, U_MAX) - _ES_ITEM(HAS_V_MIN, V_MIN) _ES_ITEM(HAS_V_MAX, V_MAX) - _ES_ITEM(HAS_W_MIN, W_MIN) _ES_ITEM(HAS_W_MAX, W_MAX) + // Common XYZ (ABC) endstops. + ES_ITEM(HAS_X_MIN, X_MIN) ES_ITEM(HAS_X_MAX, X_MAX) + ES_ITEM(HAS_Y_MIN, Y_MIN) ES_ITEM(HAS_Y_MAX, Y_MAX) + ES_ITEM(HAS_Z_MIN, Z_MIN) ES_ITEM(HAS_Z_MAX, Z_MAX) + ES_ITEM(HAS_I_MIN, I_MIN) ES_ITEM(HAS_I_MAX, I_MAX) + ES_ITEM(HAS_J_MIN, J_MIN) ES_ITEM(HAS_J_MAX, J_MAX) + ES_ITEM(HAS_K_MIN, K_MIN) ES_ITEM(HAS_K_MAX, K_MAX) + ES_ITEM(HAS_U_MIN, U_MIN) ES_ITEM(HAS_U_MAX, U_MAX) + ES_ITEM(HAS_V_MIN, V_MIN) ES_ITEM(HAS_V_MAX, V_MAX) + ES_ITEM(HAS_W_MIN, W_MIN) ES_ITEM(HAS_W_MAX, W_MAX) // Extra Endstops for XYZ #if ENABLED(X_DUAL_ENDSTOPS) - _ES_ITEM(HAS_X_MIN, X2_MIN) _ES_ITEM(HAS_X_MAX, X2_MAX) + ES_ITEM(HAS_X_MIN, X2_MIN) ES_ITEM(HAS_X_MAX, X2_MAX) #endif #if ENABLED(Y_DUAL_ENDSTOPS) - _ES_ITEM(HAS_Y_MIN, Y2_MIN) _ES_ITEM(HAS_Y_MAX, Y2_MAX) + ES_ITEM(HAS_Y_MIN, Y2_MIN) ES_ITEM(HAS_Y_MAX, Y2_MAX) #endif #if ENABLED(Z_MULTI_ENDSTOPS) - _ES_ITEM(HAS_Z_MIN, Z2_MIN) _ES_ITEM(HAS_Z_MAX, Z2_MAX) + ES_ITEM(HAS_Z_MIN, Z2_MIN) ES_ITEM(HAS_Z_MAX, Z2_MAX) #if NUM_Z_STEPPERS >= 3 - _ES_ITEM(HAS_Z_MIN, Z3_MIN) _ES_ITEM(HAS_Z_MAX, Z3_MAX) + ES_ITEM(HAS_Z_MIN, Z3_MIN) ES_ITEM(HAS_Z_MAX, Z3_MAX) #if NUM_Z_STEPPERS >= 4 - _ES_ITEM(HAS_Z_MIN, Z4_MIN) _ES_ITEM(HAS_Z_MAX, Z4_MAX) + ES_ITEM(HAS_Z_MIN, Z4_MIN) ES_ITEM(HAS_Z_MAX, Z4_MAX) #endif #endif #endif // Bed Probe state is distinct or shared with Z_MIN (i.e., when the probe is the only Z endstop) #if !HAS_DELTA_SENSORLESS_PROBING - _ES_ITEM(HAS_BED_PROBE, Z_MIN_PROBE IF_DISABLED(USES_Z_MIN_PROBE_PIN, = Z_MIN)) + ES_ITEM(HAS_BED_PROBE, Z_MIN_PROBE IF_DISABLED(USES_Z_MIN_PROBE_PIN, = Z_MIN)) #endif // The total number of states NUM_ENDSTOP_STATES - // Endstops can be either MIN or MAX but not both + // Endstop aliased to MIN or MAX #if HAS_X_ENDSTOP , X_ENDSTOP = TERN(X_HOME_TO_MAX, X_MAX, X_MIN) #if ENABLED(X_DUAL_ENDSTOPS) @@ -126,8 +133,8 @@ enum EndstopEnum : char { #endif }; -#undef __ES_ITEM #undef _ES_ITEM +#undef ES_ITEM class Endstops { public: diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index f7671e3135..418bee559f 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -540,6 +540,21 @@ void _internal_move_to_destination(const_feedRate_t fr_mm_s/*=0.0f*/ prepare_line_to_destination(); } +#if SECONDARY_AXES + + void secondary_axis_moves(SECONDARY_AXIS_ARGS(const_float_t), const_feedRate_t fr_mm_s) { + auto move_one = [&](const AxisEnum a, const_float_t p) { + const feedRate_t fr = fr_mm_s ?: homing_feedrate(a); + current_position[a] = p; line_to_current_position(fr); + }; + SECONDARY_AXIS_CODE( + move_one(I_AXIS, i), move_one(J_AXIS, j), move_one(K_AXIS, k), + move_one(U_AXIS, u), move_one(V_AXIS, v), move_one(W_AXIS, w) + ); + } + +#endif + /** * Plan a move to (X, Y, Z, [I, [J, [K...]]]) and set the current_position * Plan a move to (X, Y, Z, [I, [J, [K...]]]) with separation of Z from other components. @@ -558,14 +573,6 @@ void do_blocking_move_to(NUM_AXIS_ARGS(const_float_t), const_feedRate_t fr_mm_s/ #if HAS_Z_AXIS const feedRate_t z_feedrate = fr_mm_s ?: homing_feedrate(Z_AXIS); #endif - SECONDARY_AXIS_CODE( - const feedRate_t i_feedrate = fr_mm_s ?: homing_feedrate(I_AXIS), - const feedRate_t j_feedrate = fr_mm_s ?: homing_feedrate(J_AXIS), - const feedRate_t k_feedrate = fr_mm_s ?: homing_feedrate(K_AXIS), - const feedRate_t u_feedrate = fr_mm_s ?: homing_feedrate(U_AXIS), - const feedRate_t v_feedrate = fr_mm_s ?: homing_feedrate(V_AXIS), - const feedRate_t w_feedrate = fr_mm_s ?: homing_feedrate(W_AXIS) - ); #if IS_KINEMATIC && DISABLED(POLARGRAPH) // kinematic machines are expected to home to a point 1.5x their range? never reachable. @@ -608,6 +615,10 @@ void do_blocking_move_to(NUM_AXIS_ARGS(const_float_t), const_feedRate_t fr_mm_s/ if (DEBUGGING(LEVELING)) DEBUG_POS("z lower move", current_position); } + #if SECONDARY_AXES + secondary_axis_moves(SECONDARY_AXIS_LIST(i, j, k, u, v, w), fr_mm_s); + #endif + #elif IS_SCARA // If Z needs to raise, do it before moving XY @@ -615,6 +626,10 @@ void do_blocking_move_to(NUM_AXIS_ARGS(const_float_t), const_feedRate_t fr_mm_s/ destination.set(x, y); prepare_internal_fast_move_to_destination(xy_feedrate); + #if SECONDARY_AXES + secondary_axis_moves(SECONDARY_AXIS_LIST(i, j, k, u, v, w), fr_mm_s); + #endif + // If Z needs to lower, do it after moving XY if (destination.z > z) { destination.z = z; prepare_internal_fast_move_to_destination(z_feedrate); } @@ -626,23 +641,8 @@ void do_blocking_move_to(NUM_AXIS_ARGS(const_float_t), const_feedRate_t fr_mm_s/ current_position.set(x OPTARG(HAS_Y_AXIS, y)); line_to_current_position(xy_feedrate); - #if HAS_I_AXIS - current_position.i = i; line_to_current_position(i_feedrate); - #endif - #if HAS_J_AXIS - current_position.j = j; line_to_current_position(j_feedrate); - #endif - #if HAS_K_AXIS - current_position.k = k; line_to_current_position(k_feedrate); - #endif - #if HAS_U_AXIS - current_position.u = u; line_to_current_position(u_feedrate); - #endif - #if HAS_V_AXIS - current_position.v = v; line_to_current_position(v_feedrate); - #endif - #if HAS_W_AXIS - current_position.w = w; line_to_current_position(w_feedrate); + #if SECONDARY_AXES + secondary_axis_moves(SECONDARY_AXIS_LIST(i, j, k, u, v, w), fr_mm_s); #endif #if HAS_Z_AXIS diff --git a/Marlin/src/pins/pins_postprocess.h b/Marlin/src/pins/pins_postprocess.h index 4c07b5412d..9d917cec29 100644 --- a/Marlin/src/pins/pins_postprocess.h +++ b/Marlin/src/pins/pins_postprocess.h @@ -499,39 +499,29 @@ // // Assign endstop pins for boards with only 3 connectors // -#ifdef X_STOP_PIN - #if X_HOME_TO_MIN - #define X_MIN_PIN X_STOP_PIN - #ifndef X_MAX_PIN - #define X_MAX_PIN -1 +#if HAS_X_AXIS + #ifdef X_STOP_PIN + #if X_HOME_TO_MIN + #define X_MIN_PIN X_STOP_PIN + #else + #define X_MAX_PIN X_STOP_PIN #endif + #elif X_HOME_TO_MIN + #define X_STOP_PIN X_MIN_PIN #else - #define X_MAX_PIN X_STOP_PIN - #ifndef X_MIN_PIN - #define X_MIN_PIN -1 - #endif + #define X_STOP_PIN X_MAX_PIN + #endif + #if !defined(X2_USE_ENDSTOP) && ENABLED(X_DUAL_ENDSTOPS) && PIN_EXISTS(X_STOP) + #define X2_USE_ENDSTOP _XSTOP_ #endif -#elif X_HOME_TO_MIN - #define X_STOP_PIN X_MIN_PIN -#else - #define X_STOP_PIN X_MAX_PIN -#endif -#if !defined(X2_USE_ENDSTOP) && ENABLED(X_DUAL_ENDSTOPS) && PIN_EXISTS(X_STOP) - #define X2_USE_ENDSTOP _XSTOP_ #endif #if HAS_Y_AXIS #ifdef Y_STOP_PIN #if Y_HOME_TO_MIN #define Y_MIN_PIN Y_STOP_PIN - #ifndef Y_MAX_PIN - #define Y_MAX_PIN -1 - #endif #else #define Y_MAX_PIN Y_STOP_PIN - #ifndef Y_MIN_PIN - #define Y_MIN_PIN -1 - #endif #endif #elif Y_HOME_TO_MIN #define Y_STOP_PIN Y_MIN_PIN @@ -547,14 +537,8 @@ #ifdef Z_STOP_PIN #if Z_HOME_TO_MIN #define Z_MIN_PIN Z_STOP_PIN - #ifndef Z_MAX_PIN - #define Z_MAX_PIN -1 - #endif #else #define Z_MAX_PIN Z_STOP_PIN - #ifndef Z_MIN_PIN - #define Z_MIN_PIN -1 - #endif #endif #elif Z_HOME_TO_MIN #define Z_STOP_PIN Z_MIN_PIN @@ -578,138 +562,84 @@ #ifdef I_STOP_PIN #if I_HOME_TO_MIN #define I_MIN_PIN I_STOP_PIN - #ifndef I_MAX_PIN - #define I_MAX_PIN -1 - #endif #else #define I_MAX_PIN I_STOP_PIN - #ifndef I_MIN_PIN - #define I_MIN_PIN -1 - #endif #endif #elif I_HOME_TO_MIN #define I_STOP_PIN I_MIN_PIN #else #define I_STOP_PIN I_MAX_PIN #endif -#else - #undef I_MIN_PIN - #undef I_MAX_PIN #endif #if HAS_J_AXIS #ifdef J_STOP_PIN #if J_HOME_TO_MIN #define J_MIN_PIN J_STOP_PIN - #ifndef J_MAX_PIN - #define J_MAX_PIN -1 - #endif #else #define J_MAX_PIN J_STOP_PIN - #ifndef J_MIN_PIN - #define J_MIN_PIN -1 - #endif #endif #elif J_HOME_TO_MIN #define J_STOP_PIN J_MIN_PIN #else #define J_STOP_PIN J_MAX_PIN #endif -#else - #undef J_MIN_PIN - #undef J_MAX_PIN #endif #if HAS_K_AXIS #ifdef K_STOP_PIN #if K_HOME_TO_MIN #define K_MIN_PIN K_STOP_PIN - #ifndef K_MAX_PIN - #define K_MAX_PIN -1 - #endif #else #define K_MAX_PIN K_STOP_PIN - #ifndef K_MIN_PIN - #define K_MIN_PIN -1 - #endif #endif #elif K_HOME_TO_MIN #define K_STOP_PIN K_MIN_PIN #else #define K_STOP_PIN K_MAX_PIN #endif -#else - #undef K_MIN_PIN - #undef K_MAX_PIN #endif #if HAS_U_AXIS #ifdef U_STOP_PIN #if U_HOME_TO_MIN #define U_MIN_PIN U_STOP_PIN - #ifndef U_MAX_PIN - #define U_MAX_PIN -1 - #endif #else #define U_MAX_PIN U_STOP_PIN - #ifndef U_MIN_PIN - #define U_MIN_PIN -1 - #endif #endif #elif U_HOME_TO_MIN #define U_STOP_PIN U_MIN_PIN #else #define U_STOP_PIN U_MAX_PIN #endif -#else - #undef U_MIN_PIN - #undef U_MAX_PIN #endif #if HAS_V_AXIS #ifdef V_STOP_PIN #if V_HOME_TO_MIN #define V_MIN_PIN V_STOP_PIN - #ifndef V_MAX_PIN - #define V_MAX_PIN -1 - #endif #else #define V_MAX_PIN V_STOP_PIN - #ifndef V_MIN_PIN - #define V_MIN_PIN -1 - #endif #endif #elif V_HOME_TO_MIN #define V_STOP_PIN V_MIN_PIN #else #define V_STOP_PIN V_MAX_PIN #endif -#else - #undef V_MIN_PIN - #undef V_MAX_PIN #endif #if HAS_W_AXIS #ifdef W_STOP_PIN #if W_HOME_TO_MIN #define W_MIN_PIN W_STOP_PIN - #ifndef W_MAX_PIN - #define W_MAX_PIN -1 - #endif #else #define W_MAX_PIN W_STOP_PIN - #ifndef W_MIN_PIN - #define W_MIN_PIN -1 - #endif #endif #elif W_HOME_TO_MIN #define W_STOP_PIN W_MIN_PIN #else #define W_STOP_PIN W_MAX_PIN #endif -#else - #undef W_MIN_PIN - #undef W_MAX_PIN #endif // Filament Sensor first pin alias @@ -822,7 +752,6 @@ // Auto-assign pins for stallGuard sensorless homing // #if !defined(X2_DIAG_PIN) && !defined(X2_USE_ENDSTOP) && defined(X2_STALL_SENSITIVITY) && ENABLED(X_DUAL_ENDSTOPS) && _PEXI(X2_E_INDEX, DIAG) - #define X2_DIAG_PIN _EPIN(X2_E_INDEX, DIAG) #if DIAG_REMAPPED(X2, X_MIN) // If already remapped in the pins file... #define X2_USE_ENDSTOP _XMIN_ #elif DIAG_REMAPPED(X2, Y_MIN) @@ -839,7 +768,6 @@ #define X2_USE_ENDSTOP _En_DIAG_(X2_E_INDEX) #endif #define AUTO_ASSIGNED_X2_DIAG 1 - #undef X2_DIAG_PIN // Defined in Conditionals_post.h based on X2_USE_ENDSTOP #endif #endif @@ -908,7 +836,6 @@ #endif // Auto-assign pins for stallGuard sensorless homing #if !defined(Y2_DIAG_PIN) && !defined(Y2_USE_ENDSTOP) && defined(Y2_STALL_SENSITIVITY) && ENABLED(Y_DUAL_ENDSTOPS) && _PEXI(Y2_E_INDEX, DIAG) - #define Y2_DIAG_PIN _EPIN(Y2_E_INDEX, DIAG) #if DIAG_REMAPPED(Y2, X_MIN) #define Y2_USE_ENDSTOP _XMIN_ #elif DIAG_REMAPPED(Y2, Y_MIN) @@ -925,7 +852,6 @@ #define Y2_USE_ENDSTOP _En_DIAG_(Y2_E_INDEX) #endif #define AUTO_ASSIGNED_Y2_DIAG 1 - #undef Y2_DIAG_PIN // Defined in Conditionals_post.h based on Y2_USE_ENDSTOP #endif #endif @@ -994,7 +920,6 @@ #endif // Auto-assign pins for stallGuard sensorless homing #if !defined(Z2_DIAG_PIN) && !defined(Z2_USE_ENDSTOP) && defined(Z2_STALL_SENSITIVITY) && ENABLED(Z_MULTI_ENDSTOPS) && _PEXI(Z2_E_INDEX, DIAG) - #define Z2_DIAG_PIN _EPIN(Z2_E_INDEX, DIAG) #if DIAG_REMAPPED(Z2, X_MIN) #define Z2_USE_ENDSTOP _XMIN_ #elif DIAG_REMAPPED(Z2, Y_MIN) @@ -1011,7 +936,6 @@ #define Z2_USE_ENDSTOP _En_DIAG_(Z2_E_INDEX) #endif #define AUTO_ASSIGNED_Z2_DIAG 1 - #undef Z2_DIAG_PIN // Defined in Conditionals_post.h based on Z2_USE_ENDSTOP #endif #endif @@ -1080,7 +1004,6 @@ #endif // Auto-assign pins for stallGuard sensorless homing #if !defined(Z3_DIAG_PIN) && !defined(Z3_USE_ENDSTOP) && defined(Z3_STALL_SENSITIVITY) && ENABLED(Z_MULTI_ENDSTOPS) && _PEXI(Z3_E_INDEX, DIAG) - #define Z3_DIAG_PIN _EPIN(Z3_E_INDEX, DIAG) #if DIAG_REMAPPED(Z3, X_MIN) #define Z3_USE_ENDSTOP _XMIN_ #elif DIAG_REMAPPED(Z3, Y_MIN) @@ -1097,7 +1020,6 @@ #define Z3_USE_ENDSTOP _En_DIAG_(Z3_E_INDEX) #endif #define AUTO_ASSIGNED_Z3_DIAG 1 - #undef Z3_DIAG_PIN // Defined in Conditionals_post.h based on Z3_USE_ENDSTOP #endif #endif @@ -1166,7 +1088,6 @@ #endif // Auto-assign pins for stallGuard sensorless homing #if !defined(Z4_DIAG_PIN) && !defined(Z4_USE_ENDSTOP) && defined(Z4_STALL_SENSITIVITY) && ENABLED(Z_MULTI_ENDSTOPS) && _PEXI(Z4_E_INDEX, DIAG) - #define Z4_DIAG_PIN _EPIN(Z4_E_INDEX, DIAG) #if DIAG_REMAPPED(Z4, X_MIN) #define Z4_USE_ENDSTOP _XMIN_ #elif DIAG_REMAPPED(Z4, Y_MIN) @@ -1183,7 +1104,6 @@ #define Z4_USE_ENDSTOP _En_DIAG_(Z4_E_INDEX) #endif #define AUTO_ASSIGNED_Z4_DIAG 1 - #undef Z4_DIAG_PIN // Defined in Conditionals_post.h based on Z4_USE_ENDSTOP #endif #endif @@ -1252,7 +1172,6 @@ #endif // Auto-assign pins for stallGuard sensorless homing #if !defined(I_DIAG_PIN) && !defined(I_USE_ENDSTOP) && defined(I_STALL_SENSITIVITY) && _PEXI(I_E_INDEX, DIAG) - #define I_DIAG_PIN _EPIN(I_E_INDEX, DIAG) #if DIAG_REMAPPED(I, X_MIN) #define I_USE_ENDSTOP _XMIN_ #elif DIAG_REMAPPED(I, Y_MIN) @@ -1269,7 +1188,6 @@ #define I_USE_ENDSTOP _En_DIAG_(I_E_INDEX) #endif #define AUTO_ASSIGNED_I_DIAG 1 - #undef I_DIAG_PIN // Defined in Conditionals_post.h based on I_USE_ENDSTOP #endif #endif @@ -1338,7 +1256,6 @@ #endif // Auto-assign pins for stallGuard sensorless homing #if !defined(J_DIAG_PIN) && !defined(J_USE_ENDSTOP) && defined(J_STALL_SENSITIVITY) && _PEXI(J_E_INDEX, DIAG) - #define J_DIAG_PIN _EPIN(J_E_INDEX, DIAG) #if DIAG_REMAPPED(J, X_MIN) #define J_USE_ENDSTOP _XMIN_ #elif DIAG_REMAPPED(J, Y_MIN) @@ -1355,7 +1272,6 @@ #define J_USE_ENDSTOP _En_DIAG_(J_E_INDEX) #endif #define AUTO_ASSIGNED_J_DIAG 1 - #undef J_DIAG_PIN // Defined in Conditionals_post.h based on J_USE_ENDSTOP #endif #endif @@ -1424,7 +1340,6 @@ #endif // Auto-assign pins for stallGuard sensorless homing #if !defined(K_DIAG_PIN) && !defined(K_USE_ENDSTOP) && defined(K_STALL_SENSITIVITY) && _PEXI(K_E_INDEX, DIAG) - #define K_DIAG_PIN _EPIN(K_E_INDEX, DIAG) #if DIAG_REMAPPED(K, X_MIN) #define K_USE_ENDSTOP _XMIN_ #elif DIAG_REMAPPED(K, Y_MIN) @@ -1441,7 +1356,6 @@ #define K_USE_ENDSTOP _En_DIAG_(K_E_INDEX) #endif #define AUTO_ASSIGNED_K_DIAG 1 - #undef K_DIAG_PIN // Defined in Conditionals_post.h based on K_USE_ENDSTOP #endif #endif @@ -1510,7 +1424,6 @@ #endif // Auto-assign pins for stallGuard sensorless homing #if !defined(U_DIAG_PIN) && !defined(U_USE_ENDSTOP) && defined(U_STALL_SENSITIVITY) && _PEXI(U_E_INDEX, DIAG) - #define U_DIAG_PIN _EPIN(U_E_INDEX, DIAG) #if DIAG_REMAPPED(U, X_MIN) #define U_USE_ENDSTOP _XMIN_ #elif DIAG_REMAPPED(U, Y_MIN) @@ -1527,7 +1440,6 @@ #define U_USE_ENDSTOP _En_DIAG_(U_E_INDEX) #endif #define AUTO_ASSIGNED_U_DIAG 1 - #undef U_DIAG_PIN // Defined in Conditionals_post.h based on U_USE_ENDSTOP #endif #endif @@ -1596,7 +1508,6 @@ #endif // Auto-assign pins for stallGuard sensorless homing #if !defined(V_DIAG_PIN) && !defined(V_USE_ENDSTOP) && defined(V_STALL_SENSITIVITY) && _PEXI(V_E_INDEX, DIAG) - #define V_DIAG_PIN _EPIN(V_E_INDEX, DIAG) #if DIAG_REMAPPED(V, X_MIN) #define V_USE_ENDSTOP _XMIN_ #elif DIAG_REMAPPED(V, Y_MIN) @@ -1613,7 +1524,6 @@ #define V_USE_ENDSTOP _En_DIAG_(V_E_INDEX) #endif #define AUTO_ASSIGNED_V_DIAG 1 - #undef V_DIAG_PIN // Defined in Conditionals_post.h based on O_USE_ENDSTOP #endif #endif @@ -1676,7 +1586,6 @@ #endif // Auto-assign pins for stallGuard sensorless homing #if !defined(W_DIAG_PIN) && !defined(W_USE_ENDSTOP) && defined(W_STALL_SENSITIVITY) && _PEXI(W_E_INDEX, DIAG) - #define W_DIAG_PIN _EPIN(W_E_INDEX, DIAG) #if DIAG_REMAPPED(W, X_MIN) #define W_USE_ENDSTOP _XMIN_ #elif DIAG_REMAPPED(W, Y_MIN) @@ -1693,7 +1602,6 @@ #define W_USE_ENDSTOP _En_DIAG_(W_E_INDEX) #endif #define AUTO_ASSIGNED_W_DIAG 1 - #undef W_DIAG_PIN // Defined in Conditionals_post.h based on Q_USE_ENDSTOP #endif #endif diff --git a/Marlin/src/pins/ramps/pins_RUMBA.h b/Marlin/src/pins/ramps/pins_RUMBA.h index ba3c97c87a..20c804367a 100644 --- a/Marlin/src/pins/ramps/pins_RUMBA.h +++ b/Marlin/src/pins/ramps/pins_RUMBA.h @@ -53,9 +53,6 @@ #ifndef X_MIN_PIN #define X_MIN_PIN 37 #endif -#ifndef X_MIN_PIN - #define X_MIN_PIN 37 -#endif #ifndef X_MAX_PIN #define X_MAX_PIN 36 #endif diff --git a/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h index 4399014c48..c2af8f1968 100644 --- a/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h +++ b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h @@ -118,7 +118,9 @@ // Chiron uses AUX header for Y and Z endstops #define Y_STOP_PIN 42 // AUX (1) #define Z_STOP_PIN 43 // AUX (2) - #define Z2_MIN_PIN 18 // Z- + #ifndef Z2_STOP_PIN + #define Z2_STOP_PIN 18 // Z- + #endif #ifndef Z_MIN_PROBE_PIN #define Z_MIN_PROBE_PIN 2 // X+ From 1771d7ab64e2cb5bb339370a373ea0e6dbed82e1 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 26 Apr 2023 13:51:33 -0500 Subject: [PATCH 333/659] =?UTF-8?q?=E2=9C=85=20Skip=20change=20alerts=20in?= =?UTF-8?q?=20CI=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 12 ++++++++---- Makefile | 2 +- Marlin/src/inc/Changes.h | 4 +++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.editorconfig b/.editorconfig index 57a5b2fb5e..84f2d090b1 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,16 +4,20 @@ root = true [{*.patch,syntax_test_*}] trim_trailing_whitespace = false -[{*.c,*.cpp,*.h,*.ino}] -charset = utf-8 - -[{*.c,*.cpp,*.h,*.ino,Makefile}] +[{*.c,*.cpp,*.h,*.ino,*.py,Makefile}] trim_trailing_whitespace = true insert_final_newline = true end_of_line = lf + +[{*.c,*.cpp,*.h,*.ino}] +charset = utf-8 indent_style = space indent_size = 2 +[{Makefile}] +indent_style = tab +indent_size = 2 + [{*.py}] indent_style = space indent_size = 4 diff --git a/Makefile b/Makefile index 2a18c0b4e8..cfe0b77226 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ help: tests-single-ci: export GIT_RESET_HARD=true - $(MAKE) tests-single-local TEST_TARGET=$(TEST_TARGET) + $(MAKE) tests-single-local TEST_TARGET=$(TEST_TARGET) PLATFORMIO_BUILD_FLAGS=-DGITHUB_ACTION .PHONY: tests-single-ci tests-single-local: diff --git a/Marlin/src/inc/Changes.h b/Marlin/src/inc/Changes.h index 4b7627adb4..6fd33debc6 100644 --- a/Marlin/src/inc/Changes.h +++ b/Marlin/src/inc/Changes.h @@ -30,7 +30,9 @@ /** * Warnings for old configurations */ -#if WATCH_TEMP_PERIOD > 500 +#ifdef GITHUB_ACTION + // Skip change alerts during CI Test +#elif WATCH_TEMP_PERIOD > 500 #error "WATCH_TEMP_PERIOD now uses seconds instead of milliseconds." #elif DISABLED(THERMAL_PROTECTION_HOTENDS) && (defined(WATCH_TEMP_PERIOD) || defined(THERMAL_PROTECTION_PERIOD)) #error "Thermal Runaway Protection for hotends is now enabled with THERMAL_PROTECTION_HOTENDS." From d364babbc0cdb73337d86e2c4fd9170b46b7361a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 26 Apr 2023 14:29:21 -0500 Subject: [PATCH 334/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Cha?= =?UTF-8?q?nge=20HAL=5FPATH=20macro=20for=20easier=20HAL=20relocation=20(#?= =?UTF-8?q?25743)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/HAL.h | 2 +- Marlin/src/HAL/platforms.h | 26 +++++++++---------- Marlin/src/inc/MarlinConfig.h | 8 +++--- Marlin/src/inc/MarlinConfigPre.h | 4 +-- .../extui/mks_ui/tft_lvgl_configuration.cpp | 2 +- Marlin/src/lcd/tft/touch.h | 4 +-- Marlin/src/lcd/tft_io/tft_io.h | 6 ++--- Marlin/src/lcd/touch/touch_buttons.cpp | 4 +-- Marlin/src/libs/MAX31865.h | 2 +- Marlin/src/libs/W25Qxx.h | 2 +- Marlin/src/module/endstops.cpp | 2 +- Marlin/src/module/stepper.cpp | 2 +- Marlin/src/pins/pinsDebug.h | 2 +- .../sd/usb_flashdrive/Sd2Card_FlashDrive.cpp | 4 +-- ini/features.ini | 1 + 15 files changed, 36 insertions(+), 35 deletions(-) diff --git a/Marlin/src/HAL/HAL.h b/Marlin/src/HAL/HAL.h index 5186578019..f3e16cfdf1 100644 --- a/Marlin/src/HAL/HAL.h +++ b/Marlin/src/HAL/HAL.h @@ -27,7 +27,7 @@ #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) #endif -#include HAL_PATH(.,HAL.h) +#include HAL_PATH(..,HAL.h) extern MarlinHAL hal; #define HAL_ADC_RANGE _BV(HAL_ADC_RESOLUTION) diff --git a/Marlin/src/HAL/platforms.h b/Marlin/src/HAL/platforms.h index 488980ce09..84ba7087b0 100644 --- a/Marlin/src/HAL/platforms.h +++ b/Marlin/src/HAL/platforms.h @@ -24,34 +24,34 @@ #define XSTR(V...) #V #ifdef __AVR__ - #define HAL_PATH(PATH, NAME) XSTR(PATH/AVR/NAME) + #define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/AVR/NAME) #elif defined(ARDUINO_ARCH_SAM) - #define HAL_PATH(PATH, NAME) XSTR(PATH/DUE/NAME) + #define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/DUE/NAME) #elif defined(__MK20DX256__) - #define HAL_PATH(PATH, NAME) XSTR(PATH/TEENSY31_32/NAME) + #define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/TEENSY31_32/NAME) #elif defined(__MK64FX512__) || defined(__MK66FX1M0__) - #define HAL_PATH(PATH, NAME) XSTR(PATH/TEENSY35_36/NAME) + #define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/TEENSY35_36/NAME) #elif defined(__IMXRT1062__) - #define HAL_PATH(PATH, NAME) XSTR(PATH/TEENSY40_41/NAME) + #define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/TEENSY40_41/NAME) #elif defined(TARGET_LPC1768) - #define HAL_PATH(PATH, NAME) XSTR(PATH/LPC1768/NAME) + #define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/LPC1768/NAME) #elif defined(__STM32F1__) || defined(TARGET_STM32F1) - #define HAL_PATH(PATH, NAME) XSTR(PATH/STM32F1/NAME) + #define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/STM32F1/NAME) #elif defined(ARDUINO_ARCH_STM32) #ifndef HAL_STM32 #define HAL_STM32 #endif - #define HAL_PATH(PATH, NAME) XSTR(PATH/STM32/NAME) + #define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/STM32/NAME) #elif defined(ARDUINO_ARCH_ESP32) - #define HAL_PATH(PATH, NAME) XSTR(PATH/ESP32/NAME) + #define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/ESP32/NAME) #elif defined(__PLAT_LINUX__) - #define HAL_PATH(PATH, NAME) XSTR(PATH/LINUX/NAME) + #define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/LINUX/NAME) #elif defined(__PLAT_NATIVE_SIM__) - #define HAL_PATH(PATH, NAME) XSTR(PATH/NATIVE_SIM/NAME) + #define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/NATIVE_SIM/NAME) #elif defined(__SAMD51__) - #define HAL_PATH(PATH, NAME) XSTR(PATH/SAMD51/NAME) + #define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/SAMD51/NAME) #elif defined(__SAMD21__) - #define HAL_PATH(PATH, NAME) XSTR(PATH/SAMD21/NAME) + #define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/SAMD21/NAME) #else #error "Unsupported Platform!" #endif diff --git a/Marlin/src/inc/MarlinConfig.h b/Marlin/src/inc/MarlinConfig.h index ad11cc67b2..c6c0bfbe21 100644 --- a/Marlin/src/inc/MarlinConfig.h +++ b/Marlin/src/inc/MarlinConfig.h @@ -34,21 +34,21 @@ #include "../pins/pins.h" #ifndef __MARLIN_DEPS__ - #include HAL_PATH(../HAL, timers.h) - #include HAL_PATH(../HAL, spi_pins.h) + #include HAL_PATH(.., timers.h) + #include HAL_PATH(.., spi_pins.h) #endif #include "Conditionals_post.h" #ifndef __MARLIN_DEPS__ - #include HAL_PATH(../HAL, inc/Conditionals_post.h) + #include HAL_PATH(.., inc/Conditionals_post.h) #include "../core/types.h" // Ahead of sanity-checks #include "Changes.h" #include "SanityCheck.h" - #include HAL_PATH(../HAL, inc/SanityCheck.h) + #include HAL_PATH(.., inc/SanityCheck.h) // Include all core headers #include "../core/language.h" diff --git a/Marlin/src/inc/MarlinConfigPre.h b/Marlin/src/inc/MarlinConfigPre.h index c090b7e37b..c2191ab1b7 100644 --- a/Marlin/src/inc/MarlinConfigPre.h +++ b/Marlin/src/inc/MarlinConfigPre.h @@ -49,7 +49,7 @@ #include "Conditionals_LCD.h" #ifndef __MARLIN_DEPS__ - #include HAL_PATH(../HAL, inc/Conditionals_LCD.h) + #include HAL_PATH(.., inc/Conditionals_LCD.h) #endif #include "../core/drivers.h" @@ -58,5 +58,5 @@ #include "Conditionals_adv.h" #ifndef __MARLIN_DEPS__ - #include HAL_PATH(../HAL, inc/Conditionals_adv.h) + #include HAL_PATH(.., inc/Conditionals_adv.h) #endif diff --git a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp index 972349d287..991754ba96 100644 --- a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp @@ -38,7 +38,7 @@ #include "../../../MarlinCore.h" #include "../../../inc/MarlinConfig.h" -#include HAL_PATH(../../../HAL, tft/xpt2046.h) +#include HAL_PATH(../../.., tft/xpt2046.h) #include "../../marlinui.h" XPT2046 touch; diff --git a/Marlin/src/lcd/tft/touch.h b/Marlin/src/lcd/tft/touch.h index bebd9d01e3..91e863573b 100644 --- a/Marlin/src/lcd/tft/touch.h +++ b/Marlin/src/lcd/tft/touch.h @@ -31,10 +31,10 @@ #endif #if ENABLED(TFT_TOUCH_DEVICE_GT911) - #include HAL_PATH(../../HAL, tft/gt911.h) + #include HAL_PATH(../.., tft/gt911.h) #define TOUCH_DRIVER_CLASS GT911 #elif ENABLED(TFT_TOUCH_DEVICE_XPT2046) - #include HAL_PATH(../../HAL, tft/xpt2046.h) + #include HAL_PATH(../.., tft/xpt2046.h) #define TOUCH_DRIVER_CLASS XPT2046 #else #error "Unknown Touch Screen Type." diff --git a/Marlin/src/lcd/tft_io/tft_io.h b/Marlin/src/lcd/tft_io/tft_io.h index 7dd973ef70..226348552d 100644 --- a/Marlin/src/lcd/tft_io/tft_io.h +++ b/Marlin/src/lcd/tft_io/tft_io.h @@ -24,11 +24,11 @@ #include "../../inc/MarlinConfig.h" #if HAS_SPI_TFT - #include HAL_PATH(../../HAL, tft/tft_spi.h) + #include HAL_PATH(../.., tft/tft_spi.h) #elif HAS_FSMC_TFT - #include HAL_PATH(../../HAL, tft/tft_fsmc.h) + #include HAL_PATH(../.., tft/tft_fsmc.h) #elif HAS_LTDC_TFT - #include HAL_PATH(../../HAL, tft/tft_ltdc.h) + #include HAL_PATH(../.., tft/tft_ltdc.h) #else #error "TFT IO only supports SPI, FSMC or LTDC interface." #endif diff --git a/Marlin/src/lcd/touch/touch_buttons.cpp b/Marlin/src/lcd/touch/touch_buttons.cpp index 08554de0d3..032015cdd0 100644 --- a/Marlin/src/lcd/touch/touch_buttons.cpp +++ b/Marlin/src/lcd/touch/touch_buttons.cpp @@ -28,10 +28,10 @@ #include "../scaled_tft.h" #if ENABLED(TFT_TOUCH_DEVICE_GT911) - #include HAL_PATH(../../HAL, tft/gt911.h) + #include HAL_PATH(../.., tft/gt911.h) GT911 touchIO; #elif ENABLED(TFT_TOUCH_DEVICE_XPT2046) - #include HAL_PATH(../../HAL, tft/xpt2046.h) + #include HAL_PATH(../.., tft/xpt2046.h) XPT2046 touchIO; #else #error "Unknown Touch Screen Type." diff --git a/Marlin/src/libs/MAX31865.h b/Marlin/src/libs/MAX31865.h index 95bde756ce..3e9b0c139f 100644 --- a/Marlin/src/libs/MAX31865.h +++ b/Marlin/src/libs/MAX31865.h @@ -45,7 +45,7 @@ #include "../inc/MarlinConfig.h" #include "../HAL/shared/Delay.h" -#include HAL_PATH(../HAL, MarlinSPI.h) +#include HAL_PATH(.., MarlinSPI.h) #define MAX31865_CONFIG_REG 0x00 #define MAX31865_CONFIG_BIAS 0x80 diff --git a/Marlin/src/libs/W25Qxx.h b/Marlin/src/libs/W25Qxx.h index 778463477d..55490b0252 100644 --- a/Marlin/src/libs/W25Qxx.h +++ b/Marlin/src/libs/W25Qxx.h @@ -23,7 +23,7 @@ #include -#include HAL_PATH(../HAL, MarlinSPI.h) +#include HAL_PATH(.., MarlinSPI.h) #define W25X_WriteEnable 0x06 #define W25X_WriteDisable 0x04 diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 25553a98ac..233d848425 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -35,7 +35,7 @@ #include "../core/debug_out.h" #if ENABLED(ENDSTOP_INTERRUPTS_FEATURE) - #include HAL_PATH(../HAL, endstop_interrupts.h) + #include HAL_PATH(.., endstop_interrupts.h) #endif #if BOTH(SD_ABORT_ON_ENDSTOP_HIT, HAS_MEDIA) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index f26e10a4bd..32e97c2a06 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -3985,7 +3985,7 @@ void Stepper::report_positions() { #else // PRINTRBOARD_G2 - #include HAL_PATH(../HAL, fastio/G2_PWM.h) + #include HAL_PATH(.., fastio/G2_PWM.h) #endif diff --git a/Marlin/src/pins/pinsDebug.h b/Marlin/src/pins/pinsDebug.h index 5b19ff1b2d..25b883eee6 100644 --- a/Marlin/src/pins/pinsDebug.h +++ b/Marlin/src/pins/pinsDebug.h @@ -168,7 +168,7 @@ const PinInfo pin_array[] PROGMEM = { }; -#include HAL_PATH(../HAL, pinsDebug.h) // get the correct support file for this CPU +#include HAL_PATH(.., pinsDebug.h) // get the correct support file for this CPU #ifndef M43_NEVER_TOUCH #define M43_NEVER_TOUCH(Q) false diff --git a/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.cpp b/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.cpp index b5968b7021..76d69c789e 100644 --- a/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.cpp +++ b/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.cpp @@ -84,10 +84,10 @@ #elif ENABLED(USE_OTG_USB_HOST) #if HAS_SD_HOST_DRIVE - #include HAL_PATH(../../HAL, msc_sd.h) + #include HAL_PATH(../.., msc_sd.h) #endif - #include HAL_PATH(../../HAL, usb_host.h) + #include HAL_PATH(../.., usb_host.h) #define UHS_START usb.start() #define rREVISION 0 diff --git a/ini/features.ini b/ini/features.ini index a8ee50b9ed..d459c2bee9 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -248,3 +248,4 @@ HAS_MICROSTEPS = src_filter=+ Date: Wed, 26 Apr 2023 21:38:39 +0200 Subject: [PATCH 335/659] =?UTF-8?q?=F0=9F=94=A7=20Thermistor=20100=20:=20S?= =?UTF-8?q?oC=20sensor=20(#25745)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25642 --- Marlin/Configuration.h | 5 ++++ Marlin/src/inc/SanityCheck.h | 56 ++++++++++++++++++++++++++++-------- 2 files changed, 49 insertions(+), 12 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 047beac89c..1251a99a34 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -524,6 +524,11 @@ * -1 : AD595 with Thermocouple * * ================================================================ + * SoC internal sensor + * ================================================================ + * 100 : SoC internal sensor + * + * ================================================================ * Custom/Dummy/Other Thermal Sensors * ================================================================ * 0 : not used diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index a5244636dc..39e27ce3aa 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2029,6 +2029,8 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "HEATER_0_PIN not defined for this board." #elif TEMP_SENSOR_IS_MAX_TC(0) && !PIN_EXISTS(TEMP_0_CS) #error "TEMP_SENSOR_0 MAX thermocouple requires TEMP_0_CS_PIN." + #elif TEMP_SENSOR_0 == 100 + #error "TEMP_SENSOR_0 can't use Soc temperature sensor." #elif TEMP_SENSOR_0 == 0 #error "TEMP_SENSOR_0 is required with 1 or more HOTENDS." #elif !ANY_PIN(TEMP_0, TEMP_0_CS) && !TEMP_SENSOR_0_IS_DUMMY @@ -2040,13 +2042,17 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #if HAS_MULTI_HOTEND #if TEMP_SENSOR_IS_MAX_TC(1) && !PIN_EXISTS(TEMP_1_CS) #error "TEMP_SENSOR_1 MAX thermocouple requires TEMP_1_CS_PIN." + #elif TEMP_SENSOR_1 == 100 + #error "TEMP_SENSOR_1 can't use Soc temperature sensor." #elif TEMP_SENSOR_1 == 0 #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS." #elif !ANY_PIN(TEMP_1, TEMP_1_CS) && !TEMP_SENSOR_1_IS_DUMMY #error "TEMP_1_PIN or TEMP_1_CS_PIN not defined for this board." #endif #if HOTENDS > 2 - #if TEMP_SENSOR_2 == 0 + #if TEMP_SENSOR_2 == 100 + #error "TEMP_SENSOR_2 can't use Soc temperature sensor." + #elif TEMP_SENSOR_2 == 0 #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS." #elif !HAS_HEATER_2 #error "HEATER_2_PIN not defined for this board." @@ -2054,7 +2060,9 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "TEMP_2_PIN or TEMP_2_CS_PIN not defined for this board." #endif #if HOTENDS > 3 - #if TEMP_SENSOR_3 == 0 + #if TEMP_SENSOR_3 == 100 + #error "TEMP_SENSOR_3 can't use Soc temperature sensor." + #elif TEMP_SENSOR_3 == 0 #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS." #elif !HAS_HEATER_3 #error "HEATER_3_PIN not defined for this board." @@ -2062,7 +2070,9 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "TEMP_3_PIN not defined for this board." #endif #if HOTENDS > 4 - #if TEMP_SENSOR_4 == 0 + #if TEMP_SENSOR_4 == 100 + #error "TEMP_SENSOR_4 can't use Soc temperature sensor." + #elif TEMP_SENSOR_4 == 0 #error "TEMP_SENSOR_4 is required with 5 or more HOTENDS." #elif !HAS_HEATER_4 #error "HEATER_4_PIN not defined for this board." @@ -2070,7 +2080,9 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "TEMP_4_PIN not defined for this board." #endif #if HOTENDS > 5 - #if TEMP_SENSOR_5 == 0 + #if TEMP_SENSOR_5 == 100 + #error "TEMP_SENSOR_5 can't use Soc temperature sensor." + #elif TEMP_SENSOR_5 == 0 #error "TEMP_SENSOR_5 is required with 6 HOTENDS." #elif !HAS_HEATER_5 #error "HEATER_5_PIN not defined for this board." @@ -2078,7 +2090,9 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "TEMP_5_PIN not defined for this board." #endif #if HOTENDS > 6 - #if TEMP_SENSOR_6 == 0 + #if TEMP_SENSOR_6 == 100 + #error "TEMP_SENSOR_6 can't use Soc temperature sensor." + #elif TEMP_SENSOR_6 == 0 #error "TEMP_SENSOR_6 is required with 6 HOTENDS." #elif !HAS_HEATER_6 #error "HEATER_6_PIN not defined for this board." @@ -2086,7 +2100,9 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "TEMP_6_PIN not defined for this board." #endif #if HOTENDS > 7 - #if TEMP_SENSOR_7 == 0 + #if TEMP_SENSOR_7 == 100 + #error "TEMP_SENSOR_7 can't use Soc temperature sensor." + #elif TEMP_SENSOR_7 == 0 #error "TEMP_SENSOR_7 is required with 7 HOTENDS." #elif !HAS_HEATER_7 #error "HEATER_7_PIN not defined for this board." @@ -2109,12 +2125,22 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Pins must be set for temp sensors, with some other feature requirements. */ -#if TEMP_SENSOR_CHAMBER && !PIN_EXISTS(TEMP_CHAMBER) - #error "TEMP_SENSOR_CHAMBER requires TEMP_CHAMBER_PIN." +#if TEMP_SENSOR_BED == 100 + #error "TEMP_SENSOR_BED can't use Soc temperature sensor." +#endif + +#if TEMP_SENSOR_CHAMBER + #if TEMP_SENSOR_CHAMBER == 100 + #error "TEMP_SENSOR_CHAMBER can't use Soc temperature sensor." + #elif !PIN_EXISTS(TEMP_CHAMBER) + #error "TEMP_SENSOR_CHAMBER requires TEMP_CHAMBER_PIN." + #endif #endif #if TEMP_SENSOR_COOLER - #if !PIN_EXISTS(TEMP_COOLER) + #if TEMP_SENSOR_COOLER == 100 + #error "TEMP_SENSOR_COOLER can't use Soc temperature sensor." + #elif !PIN_EXISTS(TEMP_COOLER) #error "TEMP_SENSOR_COOLER requires TEMP_COOLER_PIN." #elif DISABLED(LASER_FEATURE) #error "TEMP_SENSOR_COOLER requires LASER_FEATURE." @@ -2122,7 +2148,9 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #endif #if TEMP_SENSOR_PROBE - #if !PIN_EXISTS(TEMP_PROBE) + #if TEMP_SENSOR_PROBE == 100 + #error "TEMP_SENSOR_PROBE can't use Soc temperature sensor." + #elif !PIN_EXISTS(TEMP_PROBE) #error "TEMP_SENSOR_PROBE requires TEMP_PROBE_PIN." #elif DISABLED(FIX_MOUNTED_PROBE) #error "TEMP_SENSOR_PROBE shouldn't be set without FIX_MOUNTED_PROBE." @@ -2130,7 +2158,9 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #endif #if TEMP_SENSOR_BOARD - #if !PIN_EXISTS(TEMP_BOARD) + #if TEMP_SENSOR_BOARD == 100 + #error "TEMP_SENSOR_BOARD can't use Soc temperature sensor." + #elif !PIN_EXISTS(TEMP_BOARD) #error "TEMP_SENSOR_BOARD requires TEMP_BOARD_PIN." #elif ENABLED(THERMAL_PROTECTION_BOARD) && (!defined(BOARD_MINTEMP) || !defined(BOARD_MAXTEMP)) #error "THERMAL_PROTECTION_BOARD requires BOARD_MINTEMP and BOARD_MAXTEMP." @@ -2140,7 +2170,9 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #endif #if TEMP_SENSOR_SOC - #if !PIN_EXISTS(TEMP_SOC) + #if TEMP_SENSOR_SOC != 100 + #error "TEMP_SENSOR_SOC requires TEMP_SENSOR_SOC 100." + #elif !PIN_EXISTS(TEMP_SOC) #error "TEMP_SENSOR_SOC requires TEMP_SOC_PIN." #elif ENABLED(THERMAL_PROTECTION_SOC) && !defined(SOC_MAXTEMP) #error "THERMAL_PROTECTION_SOC requires SOC_MAXTEMP." From 358a54ecdc4e13d46d3859485255ef0856e3f2ba Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 26 Apr 2023 14:39:56 -0500 Subject: [PATCH 336/659] =?UTF-8?q?=F0=9F=94=A8=20Servo=20Timer=201=20with?= =?UTF-8?q?=20STM32F103RC=5Ffysetc=20(#25741)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test-builds.yml | 131 +++++++++++++---------- buildroot/tests/STM32F103RC_fysetc | 16 +++ buildroot/tests/STM32F103RC_fysetc_maple | 4 +- ini/stm32f1.ini | 1 + 4 files changed, 93 insertions(+), 59 deletions(-) create mode 100755 buildroot/tests/STM32F103RC_fysetc diff --git a/.github/workflows/test-builds.yml b/.github/workflows/test-builds.yml index 173631e5e5..fcda1111cb 100644 --- a/.github/workflows/test-builds.yml +++ b/.github/workflows/test-builds.yml @@ -33,91 +33,108 @@ jobs: strategy: matrix: test-platform: - # Base Environments - - DUE - - DUE_archim - - esp32 + # Native - linux_native + + # AVR - mega2560 - at90usb1286_dfu - - teensy31 - - teensy35 - - teensy41 - - SAMD21_minitronics20 - - SAMD51_grandcentral_m4 - - PANDA_PI_V29 - - # Extended AVR Environments + # AVR Extended - FYSETC_F6 - mega1280 + - melzi_optiboot - rambo - sanguino1284p - sanguino644p - - melzi_optiboot - # STM32F1 (Maple) Environments + # SAM3X8E + - DUE + - DUE_archim - #- STM32F103RC_btt_maple - - STM32F103RC_btt_USB_maple - - STM32F103RC_fysetc_maple - - STM32F103RC_meeb_maple - - jgaurora_a5s_a1_maple - - STM32F103VE_longer_maple - #- mks_robin_maple - - mks_robin_lite_maple - - mks_robin_pro_maple - #- mks_robin_nano_v1v2_maple - #- STM32F103RE_creality_maple - - STM32F103VE_ZM3E4V2_USB_maple + # SAMD21 + - SAMD51_grandcentral_m4 + - SAMD21_minitronics20 - # STM32 (ST) Environments + # ESP32 + - esp32 + - mks_tinybee + # Teensy 2 + #- at90usb1286_cdc + + # Teensy MK20DX256 + - teensy31 + + # Teensy MK64FX512, MK66FX1M0 + - teensy35 + + # Teensy IMXRT1062DVx6A + - teensy41 + + # STM32F0 + - malyan_M300 + - STM32F070CB_malyan + - STM32F070RB_malyan + + # STM32F1 + - chitu_f103 + - mks_robin + - mks_robin_nano_v1v2 + - PANDA_PI_V29 - STM32F103RC_btt - #- STM32F103RC_btt_USB + - STM32F103RC_fysetc - STM32F103RE_btt - STM32F103RE_btt_USB - STM32F103RE_creality - - STM32F401RC_creality - STM32F103VE_longer - - STM32F407VE_black - - BIGTREE_BTT002 - - BIGTREE_SKR_PRO - - BIGTREE_GTR_V1_0 - - mks_robin - - ARMED - - FYSETC_S6 - - STM32F070CB_malyan - - STM32F070RB_malyan - - malyan_M300 - - FLYF407ZG - - rumba32 - - LERDGEX - - LERDGEK - - mks_robin_nano_v1v2 - #- mks_robin_nano_v1v2_usbmod + #- mks_robin_mini #- mks_robin_nano_v1_3_f4_usbmod + #- mks_robin_nano_v1v2_usbmod + #- STM32F103CB_malyan + #- STM32F103RC_btt_USB + #- STM32F103RE + + # STM32F4 + - ARMED + - BIGTREE_BTT002 + - BIGTREE_GTR_V1_0 + - BIGTREE_SKR_PRO + - FLYF407ZG + - FYSETC_S6 + - LERDGEK + - LERDGEX + - Opulo_Lumen_REV3 + - rumba32 + - STM32F401RC_creality + - STM32F407VE_black + + # STM32F7 - NUCLEO_F767ZI - REMRAM_V1 + + # STM32H7 - BTT_SKR_SE_BX - - chitu_f103 - - Opulo_Lumen_REV3 - # ESP32 environments - - mks_tinybee - - # Put lengthy tests last + # STM32F1 (Maple) + - jgaurora_a5s_a1_maple + - mks_robin_lite_maple + - mks_robin_pro_maple + - STM32F103RC_btt_USB_maple + - STM32F103RC_fysetc_maple + - STM32F103RC_meeb_maple + - STM32F103VE_longer_maple + - STM32F103VE_ZM3E4V2_USB_maple + #- mks_robin_maple + #- mks_robin_nano_v1v2_maple + #- STM32F103RC_btt_maple + #- STM32F103RE_creality_maple + # LPC176x - Lengthy tests - LPC1768 - LPC1769 - # Non-working environment tests - #- at90usb1286_cdc - #- STM32F103CB_malyan - #- STM32F103RE - #- mks_robin_mini - steps: - name: Check out the PR diff --git a/buildroot/tests/STM32F103RC_fysetc b/buildroot/tests/STM32F103RC_fysetc new file mode 100755 index 0000000000..93b0fedf3d --- /dev/null +++ b/buildroot/tests/STM32F103RC_fysetc @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +# +# Build tests for STM32F103RC_fysetc +# + +# exit on first failure +set -e + +# +# Build with the default configurations +# +use_example_configs "Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch" +exec_test $1 $2 "Ender-3 with Cheetah 1.2 | BLTouch" "$3" + +# clean up +restore_configs diff --git a/buildroot/tests/STM32F103RC_fysetc_maple b/buildroot/tests/STM32F103RC_fysetc_maple index 0e78c73188..09dba7ef61 100755 --- a/buildroot/tests/STM32F103RC_fysetc_maple +++ b/buildroot/tests/STM32F103RC_fysetc_maple @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Build tests for STM32F103RC FYSETC +# Build tests for STM32F103RC_fysetc_maple # # exit on first failure @@ -10,7 +10,7 @@ set -e # Build with the default configurations # use_example_configs "Creality/Ender-3/FYSETC Cheetah 1.2/base" -exec_test $1 $2 "Cheetah 1.2 Configuration" "$3" +exec_test $1 $2 "Maple build of Cheetah 1.2 Configuration" "$3" # clean up restore_configs diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini index 9aaa39ea20..230f1ae774 100644 --- a/ini/stm32f1.ini +++ b/ini/stm32f1.ini @@ -371,6 +371,7 @@ extra_scripts = ${stm32_variant.extra_scripts} extends = common_STM32F103RC_variant extra_scripts = ${common_STM32F103RC_variant.extra_scripts} buildroot/share/PlatformIO/scripts/STM32F103RC_fysetc.py +build_flags = ${common_STM32F103RC_variant.build_flags} -DTIMER_SERVO=TIM1 lib_ldf_mode = chain debug_tool = stlink upload_protocol = serial From 467ab74523087a852ab50939d86a0ca0b78f17ad Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 26 Apr 2023 14:56:23 -0500 Subject: [PATCH 337/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Sim?= =?UTF-8?q?plify=20endstops=20config=20(#25748)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 22 - Marlin/Configuration_adv.h | 12 +- Marlin/src/HAL/AVR/endstop_interrupts.h | 26 +- Marlin/src/HAL/DUE/endstop_interrupts.h | 56 +- Marlin/src/HAL/ESP32/endstop_interrupts.h | 56 +- Marlin/src/HAL/LPC1768/endstop_interrupts.h | 50 +- Marlin/src/HAL/SAMD21/endstop_interrupts.h | 130 ++- Marlin/src/HAL/SAMD51/endstop_interrupts.h | 106 +- Marlin/src/HAL/STM32/endstop_interrupts.h | 56 +- Marlin/src/HAL/STM32F1/endstop_interrupts.h | 56 +- .../src/HAL/TEENSY31_32/endstop_interrupts.h | 56 +- .../src/HAL/TEENSY35_36/endstop_interrupts.h | 56 +- .../src/HAL/TEENSY40_41/endstop_interrupts.h | 50 +- Marlin/src/core/macros.h | 45 - Marlin/src/inc/Changes.h | 16 +- Marlin/src/inc/Conditionals_post.h | 404 ++++---- Marlin/src/inc/SanityCheck.h | 146 +-- Marlin/src/inc/Warnings.cpp | 778 +++++++-------- Marlin/src/lcd/e3v2/proui/endstop_diag.cpp | 12 +- .../generic/endstop_state_screen.cpp | 2 +- Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp | 24 +- Marlin/src/module/endstops.cpp | 8 +- Marlin/src/pins/pins.h | 51 + Marlin/src/pins/pins_postprocess.h | 910 +++--------------- Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h | 1 + Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h | 1 + Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h | 6 +- Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h | 20 +- .../pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h | 23 +- Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h | 25 +- .../pins/stm32g0/pins_BTT_MANTA_M8P_common.h | 18 +- .../pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h | 23 +- buildroot/tests/DUE | 2 +- buildroot/tests/FYSETC_F6 | 4 +- buildroot/tests/LPC1769 | 4 +- buildroot/tests/mega1280 | 2 +- buildroot/tests/rambo | 7 +- buildroot/tests/teensy31 | 1 - buildroot/tests/teensy35 | 4 +- buildroot/tests/teensy41 | 4 +- 40 files changed, 1286 insertions(+), 1987 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 1251a99a34..33b661e3c8 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1087,28 +1087,6 @@ // @section endstops -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_IMIN_PLUG -//#define USE_JMIN_PLUG -//#define USE_KMIN_PLUG -//#define USE_UMIN_PLUG -//#define USE_VMIN_PLUG -//#define USE_WMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG -//#define USE_IMAX_PLUG -//#define USE_JMAX_PLUG -//#define USE_KMAX_PLUG -//#define USE_UMAX_PLUG -//#define USE_VMAX_PLUG -//#define USE_WMAX_PLUG - // Enable pullup for all endstops to prevent a floating state #define ENDSTOPPULLUPS #if DISABLED(ENDSTOPPULLUPS) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index f0c4975d5d..5eb709f704 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -849,13 +849,13 @@ * Get the offset by homing X and measuring the error. * Also set with 'M666 X' and stored to EEPROM with 'M500'. * - * - Use X2_USE_ENDSTOP to set the endstop plug by name. (_XMIN_, _XMAX_, _YMIN_, _YMAX_, _ZMIN_, _ZMAX_) + * - Define the extra endstop pins here to override defaults. No auto-assignment. */ #if HAS_X2_STEPPER && DISABLED(DUAL_X_CARRIAGE) //#define INVERT_X2_VS_X_DIR // X2 direction signal is the opposite of X //#define X_DUAL_ENDSTOPS // X2 has its own endstop #if ENABLED(X_DUAL_ENDSTOPS) - #define X2_USE_ENDSTOP _XMAX_ // X2 endstop board plug. Don't forget to enable USE_*_PLUG. + //#define X2_STOP_PIN X_MAX_PIN // X2 endstop pin override #define X2_ENDSTOP_ADJUSTMENT 0 // X2 offset relative to X endstop #endif #endif @@ -864,7 +864,7 @@ //#define INVERT_Y2_VS_Y_DIR // Y2 direction signal is the opposite of Y //#define Y_DUAL_ENDSTOPS // Y2 has its own endstop #if ENABLED(Y_DUAL_ENDSTOPS) - #define Y2_USE_ENDSTOP _YMAX_ // Y2 endstop board plug. Don't forget to enable USE_*_PLUG. + //#define Y2_STOP_PIN Y_MAX_PIN // Y2 endstop pin override #define Y2_ENDSTOP_ADJUSTMENT 0 // Y2 offset relative to Y endstop #endif #endif @@ -877,20 +877,20 @@ //#define Z_MULTI_ENDSTOPS // Other Z axes have their own endstops #if ENABLED(Z_MULTI_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ // Z2 endstop board plug. Don't forget to enable USE_*_PLUG. + //#define Z2_STOP_PIN X_MAX_PIN // Z2 endstop pin override #define Z2_ENDSTOP_ADJUSTMENT 0 // Z2 offset relative to Z endstop #endif #ifdef Z3_DRIVER_TYPE //#define INVERT_Z3_VS_Z_DIR // Z3 direction signal is the opposite of Z #if ENABLED(Z_MULTI_ENDSTOPS) - #define Z3_USE_ENDSTOP _YMAX_ // Z3 endstop board plug. Don't forget to enable USE_*_PLUG. + //#define Z3_STOP_PIN Y_MAX_PIN // Z3 endstop pin override #define Z3_ENDSTOP_ADJUSTMENT 0 // Z3 offset relative to Z endstop #endif #endif #ifdef Z4_DRIVER_TYPE //#define INVERT_Z4_VS_Z_DIR // Z4 direction signal is the opposite of Z #if ENABLED(Z_MULTI_ENDSTOPS) - #define Z4_USE_ENDSTOP _ZMAX_ // Z4 endstop board plug. Don't forget to enable USE_*_PLUG. + //#define Z4_STOP_PIN Z_MAX_PIN // Z4 endstop pin override #define Z4_ENDSTOP_ADJUSTMENT 0 // Z4 offset relative to Z endstop #endif #endif diff --git a/Marlin/src/HAL/AVR/endstop_interrupts.h b/Marlin/src/HAL/AVR/endstop_interrupts.h index 5511aa406f..a67b4493f0 100644 --- a/Marlin/src/HAL/AVR/endstop_interrupts.h +++ b/Marlin/src/HAL/AVR/endstop_interrupts.h @@ -160,7 +160,7 @@ void setup_endstop_interrupts() { pciSetup(Z_MAX_PIN); #endif #endif - #if HAS_Z_MIN + #if HAS_Z_MIN_PIN #if (digitalPinToInterrupt(Z_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(Z_MIN_PIN); #else @@ -172,14 +172,14 @@ void setup_endstop_interrupts() { #if (digitalPinToInterrupt(I_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(I_MAX_PIN); #else - static_assert(digitalPinHasPCICR(I_MAX_PIN), "I_MAX_PIN is not interrupt-capable"); + static_assert(digitalPinHasPCICR(I_MAX_PIN), "I_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(I_MAX_PIN); #endif #elif HAS_I_MIN #if (digitalPinToInterrupt(I_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(I_MIN_PIN); #else - static_assert(digitalPinHasPCICR(I_MIN_PIN), "I_MIN_PIN is not interrupt-capable"); + static_assert(digitalPinHasPCICR(I_MIN_PIN), "I_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(I_MIN_PIN); #endif #endif @@ -187,14 +187,14 @@ void setup_endstop_interrupts() { #if (digitalPinToInterrupt(J_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(J_MAX_PIN); #else - static_assert(digitalPinHasPCICR(J_MAX_PIN), "J_MAX_PIN is not interrupt-capable"); + static_assert(digitalPinHasPCICR(J_MAX_PIN), "J_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(J_MAX_PIN); #endif #elif HAS_J_MIN #if (digitalPinToInterrupt(J_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(J_MIN_PIN); #else - static_assert(digitalPinHasPCICR(J_MIN_PIN), "J_MIN_PIN is not interrupt-capable"); + static_assert(digitalPinHasPCICR(J_MIN_PIN), "J_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(J_MIN_PIN); #endif #endif @@ -202,14 +202,14 @@ void setup_endstop_interrupts() { #if (digitalPinToInterrupt(K_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(K_MAX_PIN); #else - static_assert(digitalPinHasPCICR(K_MAX_PIN), "K_MAX_PIN is not interrupt-capable"); + static_assert(digitalPinHasPCICR(K_MAX_PIN), "K_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(K_MAX_PIN); #endif #elif HAS_K_MIN #if (digitalPinToInterrupt(K_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(K_MIN_PIN); #else - static_assert(digitalPinHasPCICR(K_MIN_PIN), "K_MIN_PIN is not interrupt-capable"); + static_assert(digitalPinHasPCICR(K_MIN_PIN), "K_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(K_MIN_PIN); #endif #endif @@ -217,14 +217,14 @@ void setup_endstop_interrupts() { #if (digitalPinToInterrupt(U_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(U_MAX_PIN); #else - static_assert(digitalPinHasPCICR(U_MAX_PIN), "U_MAX_PIN is not interrupt-capable"); + static_assert(digitalPinHasPCICR(U_MAX_PIN), "U_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(U_MAX_PIN); #endif #elif HAS_U_MIN #if (digitalPinToInterrupt(U_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(U_MIN_PIN); #else - static_assert(digitalPinHasPCICR(U_MIN_PIN), "U_MIN_PIN is not interrupt-capable"); + static_assert(digitalPinHasPCICR(U_MIN_PIN), "U_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(U_MIN_PIN); #endif #endif @@ -232,14 +232,14 @@ void setup_endstop_interrupts() { #if (digitalPinToInterrupt(V_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(V_MAX_PIN); #else - static_assert(digitalPinHasPCICR(V_MAX_PIN), "V_MAX_PIN is not interrupt-capable"); + static_assert(digitalPinHasPCICR(V_MAX_PIN), "V_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(V_MAX_PIN); #endif #elif HAS_V_MIN #if (digitalPinToInterrupt(V_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(V_MIN_PIN); #else - static_assert(digitalPinHasPCICR(V_MIN_PIN), "V_MIN_PIN is not interrupt-capable"); + static_assert(digitalPinHasPCICR(V_MIN_PIN), "V_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(V_MIN_PIN); #endif #endif @@ -247,14 +247,14 @@ void setup_endstop_interrupts() { #if (digitalPinToInterrupt(W_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(W_MAX_PIN); #else - static_assert(digitalPinHasPCICR(W_MAX_PIN), "W_MAX_PIN is not interrupt-capable"); + static_assert(digitalPinHasPCICR(W_MAX_PIN), "W_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(W_MAX_PIN); #endif #elif HAS_W_MIN #if (digitalPinToInterrupt(W_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(W_MIN_PIN); #else - static_assert(digitalPinHasPCICR(W_MIN_PIN), "W_MIN_PIN is not interrupt-capable"); + static_assert(digitalPinHasPCICR(W_MIN_PIN), "W_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(W_MIN_PIN); #endif #endif diff --git a/Marlin/src/HAL/DUE/endstop_interrupts.h b/Marlin/src/HAL/DUE/endstop_interrupts.h index c1bbcb121b..9ce4fcdb2f 100644 --- a/Marlin/src/HAL/DUE/endstop_interrupts.h +++ b/Marlin/src/HAL/DUE/endstop_interrupts.h @@ -47,33 +47,33 @@ void endstop_ISR() { endstops.update(); } void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE) - TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); - TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); - TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); - TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); - TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN, _ATTACH(Z_MIN_PIN)); - TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); - TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); - TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); - TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); - TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); - TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); - TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); - TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); - TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); - TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); + TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); + TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); + TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); + TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); + TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); + TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); + TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); + TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); + TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); + TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); + TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); + TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); + TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); + TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); + TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN)); - TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); - TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); - TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); - TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); - TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); - TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); - TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); - TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); - TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); - TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); - TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); - TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); + TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); + TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); + TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); + TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); + TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); + TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); + TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); + TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); + TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); + TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); + TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); } diff --git a/Marlin/src/HAL/ESP32/endstop_interrupts.h b/Marlin/src/HAL/ESP32/endstop_interrupts.h index 0536864610..f48cda4511 100644 --- a/Marlin/src/HAL/ESP32/endstop_interrupts.h +++ b/Marlin/src/HAL/ESP32/endstop_interrupts.h @@ -42,33 +42,33 @@ void ICACHE_RAM_ATTR endstop_ISR() { endstops.update(); } void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE) - TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); - TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); - TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); - TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); - TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN, _ATTACH(Z_MIN_PIN)); - TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); - TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); - TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); - TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); - TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); - TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); - TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); - TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); - TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); - TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); + TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); + TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); + TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); + TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); + TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); + TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); + TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); + TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); + TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); + TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); + TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); + TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); + TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); + TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); + TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN)); - TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); - TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); - TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); - TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); - TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); - TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); - TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); - TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); - TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); - TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); - TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); - TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); + TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); + TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); + TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); + TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); + TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); + TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); + TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); + TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); + TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); + TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); + TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); } diff --git a/Marlin/src/HAL/LPC1768/endstop_interrupts.h b/Marlin/src/HAL/LPC1768/endstop_interrupts.h index e4ac17f608..2253b92627 100644 --- a/Marlin/src/HAL/LPC1768/endstop_interrupts.h +++ b/Marlin/src/HAL/LPC1768/endstop_interrupts.h @@ -74,12 +74,36 @@ void setup_endstop_interrupts() { #endif _ATTACH(Z_MAX_PIN); #endif - #if HAS_Z_MIN + #if HAS_Z_MIN_PIN #if !LPC1768_PIN_INTERRUPT_M(Z_MIN_PIN) #error "Z_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z_MIN_PIN); #endif + #if HAS_X2_MAX + #if !LPC1768_PIN_INTERRUPT_M(X2_MAX_PIN) + #error "X2_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." + #endif + _ATTACH(X2_MAX_PIN); + #endif + #if HAS_X2_MIN + #if !LPC1768_PIN_INTERRUPT_M(X2_MIN_PIN) + #error "X2_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." + #endif + _ATTACH(X2_MIN_PIN); + #endif + #if HAS_Y2_MAX + #if !LPC1768_PIN_INTERRUPT_M(Y2_MAX_PIN) + #error "Y2_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." + #endif + _ATTACH(Y2_MAX_PIN); + #endif + #if HAS_Y2_MIN + #if !LPC1768_PIN_INTERRUPT_M(Y2_MIN_PIN) + #error "Y2_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." + #endif + _ATTACH(Y2_MIN_PIN); + #endif #if HAS_Z2_MAX #if !LPC1768_PIN_INTERRUPT_M(Z2_MAX_PIN) #error "Z2_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." @@ -124,67 +148,67 @@ void setup_endstop_interrupts() { #endif #if HAS_I_MAX #if !LPC1768_PIN_INTERRUPT_M(I_MAX_PIN) - #error "I_MAX_PIN is not INTERRUPT-capable." + #error "I_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(I_MAX_PIN); #elif HAS_I_MIN #if !LPC1768_PIN_INTERRUPT_M(I_MIN_PIN) - #error "I_MIN_PIN is not INTERRUPT-capable." + #error "I_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(I_MIN_PIN); #endif #if HAS_J_MAX #if !LPC1768_PIN_INTERRUPT_M(J_MAX_PIN) - #error "J_MAX_PIN is not INTERRUPT-capable." + #error "J_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(J_MAX_PIN); #elif HAS_J_MIN #if !LPC1768_PIN_INTERRUPT_M(J_MIN_PIN) - #error "J_MIN_PIN is not INTERRUPT-capable." + #error "J_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(J_MIN_PIN); #endif #if HAS_K_MAX #if !LPC1768_PIN_INTERRUPT_M(K_MAX_PIN) - #error "K_MAX_PIN is not INTERRUPT-capable." + #error "K_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(K_MAX_PIN); #elif HAS_K_MIN #if !LPC1768_PIN_INTERRUPT_M(K_MIN_PIN) - #error "K_MIN_PIN is not INTERRUPT-capable." + #error "K_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(K_MIN_PIN); #endif #if HAS_U_MAX #if !LPC1768_PIN_INTERRUPT_M(U_MAX_PIN) - #error "U_MAX_PIN is not INTERRUPT-capable." + #error "U_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(U_MAX_PIN); #elif HAS_U_MIN #if !LPC1768_PIN_INTERRUPT_M(U_MIN_PIN) - #error "U_MIN_PIN is not INTERRUPT-capable." + #error "U_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(U_MIN_PIN); #endif #if HAS_V_MAX #if !LPC1768_PIN_INTERRUPT_M(V_MAX_PIN) - #error "V_MAX_PIN is not INTERRUPT-capable." + #error "V_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(V_MAX_PIN); #elif HAS_V_MIN #if !LPC1768_PIN_INTERRUPT_M(V_MIN_PIN) - #error "V_MIN_PIN is not INTERRUPT-capable." + #error "V_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(V_MIN_PIN); #endif #if HAS_W_MAX #if !LPC1768_PIN_INTERRUPT_M(W_MAX_PIN) - #error "W_MAX_PIN is not INTERRUPT-capable." + #error "W_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(W_MAX_PIN); #elif HAS_W_MIN #if !LPC1768_PIN_INTERRUPT_M(W_MIN_PIN) - #error "W_MIN_PIN is not INTERRUPT-capable." + #error "W_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(W_MIN_PIN); #endif diff --git a/Marlin/src/HAL/SAMD21/endstop_interrupts.h b/Marlin/src/HAL/SAMD21/endstop_interrupts.h index d8711aa018..a277e04097 100644 --- a/Marlin/src/HAL/SAMD21/endstop_interrupts.h +++ b/Marlin/src/HAL/SAMD21/endstop_interrupts.h @@ -54,30 +54,34 @@ #include "../../module/endstops.h" #define MATCH_EILINE(P1,P2) (P1 != P2 && PIN_TO_EILINE(P1) == PIN_TO_EILINE(P2)) -#define MATCH_X_MAX_EILINE(P) TERN0(HAS_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN)) -#define MATCH_X_MIN_EILINE(P) TERN0(HAS_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN)) -#define MATCH_Y_MAX_EILINE(P) TERN0(HAS_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN)) -#define MATCH_Y_MIN_EILINE(P) TERN0(HAS_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN)) -#define MATCH_Z_MAX_EILINE(P) TERN0(HAS_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN)) -#define MATCH_Z_MIN_EILINE(P) TERN0(HAS_Z_MIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PIN)) -#define MATCH_I_MAX_EILINE(P) TERN0(HAS_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN)) -#define MATCH_I_MIN_EILINE(P) TERN0(HAS_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN)) -#define MATCH_J_MAX_EILINE(P) TERN0(HAS_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN)) -#define MATCH_J_MIN_EILINE(P) TERN0(HAS_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN)) -#define MATCH_K_MAX_EILINE(P) TERN0(HAS_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN)) -#define MATCH_K_MIN_EILINE(P) TERN0(HAS_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN)) -#define MATCH_U_MAX_EILINE(P) TERN0(HAS_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN)) -#define MATCH_U_MIN_EILINE(P) TERN0(HAS_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN)) -#define MATCH_V_MAX_EILINE(P) TERN0(HAS_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN)) -#define MATCH_V_MIN_EILINE(P) TERN0(HAS_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN)) -#define MATCH_W_MAX_EILINE(P) TERN0(HAS_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN)) -#define MATCH_W_MIN_EILINE(P) TERN0(HAS_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN)) -#define MATCH_Z2_MAX_EILINE(P) TERN0(HAS_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN)) -#define MATCH_Z2_MIN_EILINE(P) TERN0(HAS_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN)) -#define MATCH_Z3_MAX_EILINE(P) TERN0(HAS_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN)) -#define MATCH_Z3_MIN_EILINE(P) TERN0(HAS_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN)) -#define MATCH_Z4_MAX_EILINE(P) TERN0(HAS_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN)) -#define MATCH_Z4_MIN_EILINE(P) TERN0(HAS_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN)) +#define MATCH_X_MAX_EILINE(P) TERN0(HAS_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN)) +#define MATCH_X_MIN_EILINE(P) TERN0(HAS_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN)) +#define MATCH_Y_MAX_EILINE(P) TERN0(HAS_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN)) +#define MATCH_Y_MIN_EILINE(P) TERN0(HAS_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN)) +#define MATCH_Z_MAX_EILINE(P) TERN0(HAS_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN)) +#define MATCH_Z_MIN_EILINE(P) TERN0(HAS_Z_MIN_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PIN)) +#define MATCH_I_MAX_EILINE(P) TERN0(HAS_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN)) +#define MATCH_I_MIN_EILINE(P) TERN0(HAS_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN)) +#define MATCH_J_MAX_EILINE(P) TERN0(HAS_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN)) +#define MATCH_J_MIN_EILINE(P) TERN0(HAS_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN)) +#define MATCH_K_MAX_EILINE(P) TERN0(HAS_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN)) +#define MATCH_K_MIN_EILINE(P) TERN0(HAS_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN)) +#define MATCH_U_MAX_EILINE(P) TERN0(HAS_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN)) +#define MATCH_U_MIN_EILINE(P) TERN0(HAS_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN)) +#define MATCH_V_MAX_EILINE(P) TERN0(HAS_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN)) +#define MATCH_V_MIN_EILINE(P) TERN0(HAS_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN)) +#define MATCH_W_MAX_EILINE(P) TERN0(HAS_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN)) +#define MATCH_W_MIN_EILINE(P) TERN0(HAS_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN)) +#define MATCH_X2_MAX_EILINE(P) TERN0(HAS_X2_MAX, DEFER4(MATCH_EILINE)(P, X2_MAX_PIN)) +#define MATCH_X2_MIN_EILINE(P) TERN0(HAS_X2_MIN, DEFER4(MATCH_EILINE)(P, X2_MIN_PIN)) +#define MATCH_Y2_MAX_EILINE(P) TERN0(HAS_Y2_MAX, DEFER4(MATCH_EILINE)(P, Y2_MAX_PIN)) +#define MATCH_Y2_MIN_EILINE(P) TERN0(HAS_Y2_MIN, DEFER4(MATCH_EILINE)(P, Y2_MIN_PIN)) +#define MATCH_Z2_MAX_EILINE(P) TERN0(HAS_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN)) +#define MATCH_Z2_MIN_EILINE(P) TERN0(HAS_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN)) +#define MATCH_Z3_MAX_EILINE(P) TERN0(HAS_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN)) +#define MATCH_Z3_MIN_EILINE(P) TERN0(HAS_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN)) +#define MATCH_Z4_MAX_EILINE(P) TERN0(HAS_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN)) +#define MATCH_Z4_MIN_EILINE(P) TERN0(HAS_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN)) #define MATCH_Z_MIN_PROBE_EILINE(P) TERN0(HAS_Z_MIN_PROBE_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PROBE_PIN)) #define AVAILABLE_EILINE(P) ( PIN_TO_EILINE(P) != -1 \ @@ -90,6 +94,8 @@ && !MATCH_U_MAX_EILINE(P) && !MATCH_U_MIN_EILINE(P) \ && !MATCH_V_MAX_EILINE(P) && !MATCH_V_MIN_EILINE(P) \ && !MATCH_W_MAX_EILINE(P) && !MATCH_W_MIN_EILINE(P) \ + && !MATCH_X2_MAX_EILINE(P) && !MATCH_X2_MIN_EILINE(P) \ + && !MATCH_Y2_MAX_EILINE(P) && !MATCH_Y2_MIN_EILINE(P) \ && !MATCH_Z2_MAX_EILINE(P) && !MATCH_Z2_MIN_EILINE(P) \ && !MATCH_Z3_MAX_EILINE(P) && !MATCH_Z3_MIN_EILINE(P) \ && !MATCH_Z4_MAX_EILINE(P) && !MATCH_Z4_MIN_EILINE(P) \ @@ -102,151 +108,175 @@ void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(P, endstop_ISR, CHANGE) #if HAS_X_MAX #if !AVAILABLE_EILINE(X_MAX_PIN) - #error "X_MAX_PIN has no EXTINT line available." + #error "X_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(X_MAX_PIN); #endif #if HAS_X_MIN #if !AVAILABLE_EILINE(X_MIN_PIN) - #error "X_MIN_PIN has no EXTINT line available." + #error "X_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(X_MIN_PIN); #endif #if HAS_Y_MAX #if !AVAILABLE_EILINE(Y_MAX_PIN) - #error "Y_MAX_PIN has no EXTINT line available." + #error "Y_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Y_MAX_PIN); #endif #if HAS_Y_MIN #if !AVAILABLE_EILINE(Y_MIN_PIN) - #error "Y_MIN_PIN has no EXTINT line available." + #error "Y_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Y_MIN_PIN); #endif #if HAS_Z_MAX #if !AVAILABLE_EILINE(Z_MAX_PIN) - #error "Z_MAX_PIN has no EXTINT line available." + #error "Z_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z_MAX_PIN); #endif - #if HAS_Z_MIN + #if HAS_Z_MIN_PIN #if !AVAILABLE_EILINE(Z_MIN_PIN) - #error "Z_MIN_PIN has no EXTINT line available." + #error "Z_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z_MIN_PIN); #endif + #if HAS_X2_MAX + #if !AVAILABLE_EILINE(X2_MAX_PIN) + #error "X2_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." + #endif + _ATTACH(X2_MAX_PIN); + #endif + #if HAS_X2_MIN + #if !AVAILABLE_EILINE(X2_MIN_PIN) + #error "X2_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." + #endif + _ATTACH(X2_MIN_PIN); + #endif + #if HAS_Y2_MAX + #if !AVAILABLE_EILINE(Y2_MAX_PIN) + #error "Y2_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." + #endif + _ATTACH(Y2_MAX_PIN); + #endif + #if HAS_Y2_MIN + #if !AVAILABLE_EILINE(Y2_MIN_PIN) + #error "Y2_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." + #endif + _ATTACH(Y2_MIN_PIN); + #endif #if HAS_Z2_MAX #if !AVAILABLE_EILINE(Z2_MAX_PIN) - #error "Z2_MAX_PIN has no EXTINT line available." + #error "Z2_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z2_MAX_PIN); #endif #if HAS_Z2_MIN #if !AVAILABLE_EILINE(Z2_MIN_PIN) - #error "Z2_MIN_PIN has no EXTINT line available." + #error "Z2_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z2_MIN_PIN); #endif #if HAS_Z3_MAX #if !AVAILABLE_EILINE(Z3_MAX_PIN) - #error "Z3_MAX_PIN has no EXTINT line available." + #error "Z3_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z3_MAX_PIN); #endif #if HAS_Z3_MIN #if !AVAILABLE_EILINE(Z3_MIN_PIN) - #error "Z3_MIN_PIN has no EXTINT line available." + #error "Z3_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z3_MIN_PIN); #endif #if HAS_Z4_MAX #if !AVAILABLE_EILINE(Z4_MAX_PIN) - #error "Z4_MAX_PIN has no EXTINT line available." + #error "Z4_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z4_MAX_PIN); #endif #if HAS_Z4_MIN #if !AVAILABLE_EILINE(Z4_MIN_PIN) - #error "Z4_MIN_PIN has no EXTINT line available." + #error "Z4_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z4_MIN_PIN); #endif #if HAS_Z_MIN_PROBE_PIN #if !AVAILABLE_EILINE(Z_MIN_PROBE_PIN) - #error "Z_MIN_PROBE_PIN has no EXTINT line available." + #error "Z_MIN_PROBE_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z_MIN_PROBE_PIN); #endif #if HAS_I_MAX #if !AVAILABLE_EILINE(I_MAX_PIN) - #error "I_MAX_PIN has no EXTINT line available." + #error "I_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(I_MAX_PIN, endstop_ISR, CHANGE); #endif #if HAS_I_MIN #if !AVAILABLE_EILINE(I_MIN_PIN) - #error "I_MIN_PIN has no EXTINT line available." + #error "I_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(I_MIN_PIN, endstop_ISR, CHANGE); #endif #if HAS_J_MAX #if !AVAILABLE_EILINE(J_MAX_PIN) - #error "J_MAX_PIN has no EXTINT line available." + #error "J_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(J_MAX_PIN, endstop_ISR, CHANGE); #endif #if HAS_J_MIN #if !AVAILABLE_EILINE(J_MIN_PIN) - #error "J_MIN_PIN has no EXTINT line available." + #error "J_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(J_MIN_PIN, endstop_ISR, CHANGE); #endif #if HAS_K_MAX #if !AVAILABLE_EILINE(K_MAX_PIN) - #error "K_MAX_PIN has no EXTINT line available." + #error "K_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(K_MAX_PIN, endstop_ISR, CHANGE); #endif #if HAS_K_MIN #if !AVAILABLE_EILINE(K_MIN_PIN) - #error "K_MIN_PIN has no EXTINT line available." + #error "K_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(K_MIN_PIN, endstop_ISR, CHANGE); #endif #if HAS_U_MAX #if !AVAILABLE_EILINE(U_MAX_PIN) - #error "U_MAX_PIN has no EXTINT line available." + #error "U_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(U_MAX_PIN, endstop_ISR, CHANGE); #endif #if HAS_U_MIN #if !AVAILABLE_EILINE(U_MIN_PIN) - #error "U_MIN_PIN has no EXTINT line available." + #error "U_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(U_MIN_PIN, endstop_ISR, CHANGE); #endif #if HAS_V_MAX #if !AVAILABLE_EILINE(V_MAX_PIN) - #error "V_MAX_PIN has no EXTINT line available." + #error "V_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(V_MAX_PIN, endstop_ISR, CHANGE); #endif #if HAS_V_MIN #if !AVAILABLE_EILINE(V_MIN_PIN) - #error "V_MIN_PIN has no EXTINT line available." + #error "V_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(V_MIN_PIN, endstop_ISR, CHANGE); #endif #if HAS_W_MAX #if !AVAILABLE_EILINE(W_MAX_PIN) - #error "W_MAX_PIN has no EXTINT line available." + #error "W_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(W_MAX_PIN, endstop_ISR, CHANGE); #endif #if HAS_W_MIN #if !AVAILABLE_EILINE(W_MIN_PIN) - #error "W_MIN_PIN has no EXTINT line available." + #error "W_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(W_MIN_PIN, endstop_ISR, CHANGE); #endif diff --git a/Marlin/src/HAL/SAMD51/endstop_interrupts.h b/Marlin/src/HAL/SAMD51/endstop_interrupts.h index e0e811c3a0..b5fead26f4 100644 --- a/Marlin/src/HAL/SAMD51/endstop_interrupts.h +++ b/Marlin/src/HAL/SAMD51/endstop_interrupts.h @@ -53,30 +53,34 @@ #include "../../module/endstops.h" #define MATCH_EILINE(P1,P2) (P1 != P2 && PIN_TO_EILINE(P1) == PIN_TO_EILINE(P2)) -#define MATCH_X_MAX_EILINE(P) TERN0(HAS_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN)) -#define MATCH_X_MIN_EILINE(P) TERN0(HAS_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN)) -#define MATCH_Y_MAX_EILINE(P) TERN0(HAS_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN)) -#define MATCH_Y_MIN_EILINE(P) TERN0(HAS_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN)) -#define MATCH_Z_MAX_EILINE(P) TERN0(HAS_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN)) -#define MATCH_Z_MIN_EILINE(P) TERN0(HAS_Z_MIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PIN)) -#define MATCH_I_MAX_EILINE(P) TERN0(HAS_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN)) -#define MATCH_I_MIN_EILINE(P) TERN0(HAS_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN)) -#define MATCH_J_MAX_EILINE(P) TERN0(HAS_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN)) -#define MATCH_J_MIN_EILINE(P) TERN0(HAS_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN)) -#define MATCH_K_MAX_EILINE(P) TERN0(HAS_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN)) -#define MATCH_K_MIN_EILINE(P) TERN0(HAS_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN)) -#define MATCH_U_MAX_EILINE(P) TERN0(HAS_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN)) -#define MATCH_U_MIN_EILINE(P) TERN0(HAS_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN)) -#define MATCH_V_MAX_EILINE(P) TERN0(HAS_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN)) -#define MATCH_V_MIN_EILINE(P) TERN0(HAS_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN)) -#define MATCH_W_MAX_EILINE(P) TERN0(HAS_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN)) -#define MATCH_W_MIN_EILINE(P) TERN0(HAS_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN)) -#define MATCH_Z2_MAX_EILINE(P) TERN0(HAS_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN)) -#define MATCH_Z2_MIN_EILINE(P) TERN0(HAS_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN)) -#define MATCH_Z3_MAX_EILINE(P) TERN0(HAS_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN)) -#define MATCH_Z3_MIN_EILINE(P) TERN0(HAS_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN)) -#define MATCH_Z4_MAX_EILINE(P) TERN0(HAS_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN)) -#define MATCH_Z4_MIN_EILINE(P) TERN0(HAS_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN)) +#define MATCH_X_MAX_EILINE(P) TERN0(HAS_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN)) +#define MATCH_X_MIN_EILINE(P) TERN0(HAS_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN)) +#define MATCH_Y_MAX_EILINE(P) TERN0(HAS_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN)) +#define MATCH_Y_MIN_EILINE(P) TERN0(HAS_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN)) +#define MATCH_Z_MAX_EILINE(P) TERN0(HAS_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN)) +#define MATCH_Z_MIN_EILINE(P) TERN0(HAS_Z_MIN_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PIN)) +#define MATCH_I_MAX_EILINE(P) TERN0(HAS_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN)) +#define MATCH_I_MIN_EILINE(P) TERN0(HAS_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN)) +#define MATCH_J_MAX_EILINE(P) TERN0(HAS_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN)) +#define MATCH_J_MIN_EILINE(P) TERN0(HAS_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN)) +#define MATCH_K_MAX_EILINE(P) TERN0(HAS_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN)) +#define MATCH_K_MIN_EILINE(P) TERN0(HAS_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN)) +#define MATCH_U_MAX_EILINE(P) TERN0(HAS_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN)) +#define MATCH_U_MIN_EILINE(P) TERN0(HAS_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN)) +#define MATCH_V_MAX_EILINE(P) TERN0(HAS_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN)) +#define MATCH_V_MIN_EILINE(P) TERN0(HAS_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN)) +#define MATCH_W_MAX_EILINE(P) TERN0(HAS_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN)) +#define MATCH_W_MIN_EILINE(P) TERN0(HAS_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN)) +#define MATCH_X2_MAX_EILINE(P) TERN0(HAS_X2_MAX, DEFER4(MATCH_EILINE)(P, X2_MAX_PIN)) +#define MATCH_X2_MIN_EILINE(P) TERN0(HAS_X2_MIN, DEFER4(MATCH_EILINE)(P, X2_MIN_PIN)) +#define MATCH_Y2_MAX_EILINE(P) TERN0(HAS_Y2_MAX, DEFER4(MATCH_EILINE)(P, Y2_MAX_PIN)) +#define MATCH_Y2_MIN_EILINE(P) TERN0(HAS_Y2_MIN, DEFER4(MATCH_EILINE)(P, Y2_MIN_PIN)) +#define MATCH_Z2_MAX_EILINE(P) TERN0(HAS_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN)) +#define MATCH_Z2_MIN_EILINE(P) TERN0(HAS_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN)) +#define MATCH_Z3_MAX_EILINE(P) TERN0(HAS_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN)) +#define MATCH_Z3_MIN_EILINE(P) TERN0(HAS_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN)) +#define MATCH_Z4_MAX_EILINE(P) TERN0(HAS_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN)) +#define MATCH_Z4_MIN_EILINE(P) TERN0(HAS_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN)) #define MATCH_Z_MIN_PROBE_EILINE(P) TERN0(HAS_Z_MIN_PROBE_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PROBE_PIN)) #define AVAILABLE_EILINE(P) ( PIN_TO_EILINE(P) != -1 \ @@ -89,6 +93,8 @@ && !MATCH_U_MAX_EILINE(P) && !MATCH_U_MIN_EILINE(P) \ && !MATCH_V_MAX_EILINE(P) && !MATCH_V_MIN_EILINE(P) \ && !MATCH_W_MAX_EILINE(P) && !MATCH_W_MIN_EILINE(P) \ + && !MATCH_X2_MAX_EILINE(P) && !MATCH_X2_MIN_EILINE(P) \ + && !MATCH_Y2_MAX_EILINE(P) && !MATCH_Y2_MIN_EILINE(P) \ && !MATCH_Z2_MAX_EILINE(P) && !MATCH_Z2_MIN_EILINE(P) \ && !MATCH_Z3_MAX_EILINE(P) && !MATCH_Z3_MIN_EILINE(P) \ && !MATCH_Z4_MAX_EILINE(P) && !MATCH_Z4_MIN_EILINE(P) \ @@ -101,151 +107,151 @@ void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(P, endstop_ISR, CHANGE) #if HAS_X_MAX #if !AVAILABLE_EILINE(X_MAX_PIN) - #error "X_MAX_PIN has no EXTINT line available." + #error "X_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(X_MAX_PIN); #endif #if HAS_X_MIN #if !AVAILABLE_EILINE(X_MIN_PIN) - #error "X_MIN_PIN has no EXTINT line available." + #error "X_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(X_MIN_PIN); #endif #if HAS_Y_MAX #if !AVAILABLE_EILINE(Y_MAX_PIN) - #error "Y_MAX_PIN has no EXTINT line available." + #error "Y_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Y_MAX_PIN); #endif #if HAS_Y_MIN #if !AVAILABLE_EILINE(Y_MIN_PIN) - #error "Y_MIN_PIN has no EXTINT line available." + #error "Y_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Y_MIN_PIN); #endif #if HAS_Z_MAX #if !AVAILABLE_EILINE(Z_MAX_PIN) - #error "Z_MAX_PIN has no EXTINT line available." + #error "Z_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z_MAX_PIN); #endif - #if HAS_Z_MIN + #if HAS_Z_MIN_PIN #if !AVAILABLE_EILINE(Z_MIN_PIN) - #error "Z_MIN_PIN has no EXTINT line available." + #error "Z_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z_MIN_PIN); #endif #if HAS_Z2_MAX #if !AVAILABLE_EILINE(Z2_MAX_PIN) - #error "Z2_MAX_PIN has no EXTINT line available." + #error "Z2_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z2_MAX_PIN); #endif #if HAS_Z2_MIN #if !AVAILABLE_EILINE(Z2_MIN_PIN) - #error "Z2_MIN_PIN has no EXTINT line available." + #error "Z2_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z2_MIN_PIN); #endif #if HAS_Z3_MAX #if !AVAILABLE_EILINE(Z3_MAX_PIN) - #error "Z3_MAX_PIN has no EXTINT line available." + #error "Z3_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z3_MAX_PIN); #endif #if HAS_Z3_MIN #if !AVAILABLE_EILINE(Z3_MIN_PIN) - #error "Z3_MIN_PIN has no EXTINT line available." + #error "Z3_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z3_MIN_PIN); #endif #if HAS_Z4_MAX #if !AVAILABLE_EILINE(Z4_MAX_PIN) - #error "Z4_MAX_PIN has no EXTINT line available." + #error "Z4_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z4_MAX_PIN); #endif #if HAS_Z4_MIN #if !AVAILABLE_EILINE(Z4_MIN_PIN) - #error "Z4_MIN_PIN has no EXTINT line available." + #error "Z4_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z4_MIN_PIN); #endif #if HAS_Z_MIN_PROBE_PIN #if !AVAILABLE_EILINE(Z_MIN_PROBE_PIN) - #error "Z_MIN_PROBE_PIN has no EXTINT line available." + #error "Z_MIN_PROBE_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z_MIN_PROBE_PIN); #endif #if HAS_I_MAX #if !AVAILABLE_EILINE(I_MAX_PIN) - #error "I_MAX_PIN has no EXTINT line available." + #error "I_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(I_MAX_PIN, endstop_ISR, CHANGE); #endif #if HAS_I_MIN #if !AVAILABLE_EILINE(I_MIN_PIN) - #error "I_MIN_PIN has no EXTINT line available." + #error "I_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(I_MIN_PIN, endstop_ISR, CHANGE); #endif #if HAS_J_MAX #if !AVAILABLE_EILINE(J_MAX_PIN) - #error "J_MAX_PIN has no EXTINT line available." + #error "J_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(J_MAX_PIN, endstop_ISR, CHANGE); #endif #if HAS_J_MIN #if !AVAILABLE_EILINE(J_MIN_PIN) - #error "J_MIN_PIN has no EXTINT line available." + #error "J_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(J_MIN_PIN, endstop_ISR, CHANGE); #endif #if HAS_K_MAX #if !AVAILABLE_EILINE(K_MAX_PIN) - #error "K_MAX_PIN has no EXTINT line available." + #error "K_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(K_MAX_PIN, endstop_ISR, CHANGE); #endif #if HAS_K_MIN #if !AVAILABLE_EILINE(K_MIN_PIN) - #error "K_MIN_PIN has no EXTINT line available." + #error "K_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(K_MIN_PIN, endstop_ISR, CHANGE); #endif #if HAS_U_MAX #if !AVAILABLE_EILINE(U_MAX_PIN) - #error "U_MAX_PIN has no EXTINT line available." + #error "U_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(U_MAX_PIN, endstop_ISR, CHANGE); #endif #if HAS_U_MIN #if !AVAILABLE_EILINE(U_MIN_PIN) - #error "U_MIN_PIN has no EXTINT line available." + #error "U_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(U_MIN_PIN, endstop_ISR, CHANGE); #endif #if HAS_V_MAX #if !AVAILABLE_EILINE(V_MAX_PIN) - #error "V_MAX_PIN has no EXTINT line available." + #error "V_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(V_MAX_PIN, endstop_ISR, CHANGE); #endif #if HAS_V_MIN #if !AVAILABLE_EILINE(V_MIN_PIN) - #error "V_MIN_PIN has no EXTINT line available." + #error "V_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(V_MIN_PIN, endstop_ISR, CHANGE); #endif #if HAS_W_MAX #if !AVAILABLE_EILINE(W_MAX_PIN) - #error "W_MAX_PIN has no EXTINT line available." + #error "W_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(W_MAX_PIN, endstop_ISR, CHANGE); #endif #if HAS_W_MIN #if !AVAILABLE_EILINE(W_MIN_PIN) - #error "W_MIN_PIN has no EXTINT line available." + #error "W_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(W_MIN_PIN, endstop_ISR, CHANGE); #endif diff --git a/Marlin/src/HAL/STM32/endstop_interrupts.h b/Marlin/src/HAL/STM32/endstop_interrupts.h index d2f20ba1c7..ce160d9405 100644 --- a/Marlin/src/HAL/STM32/endstop_interrupts.h +++ b/Marlin/src/HAL/STM32/endstop_interrupts.h @@ -29,33 +29,33 @@ void endstop_ISR() { endstops.update(); } void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(P, endstop_ISR, CHANGE) - TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); - TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); - TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); - TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); - TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN, _ATTACH(Z_MIN_PIN)); - TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); - TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); - TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); - TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); - TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); - TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); - TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); - TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); - TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); - TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); + TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); + TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); + TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); + TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); + TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); + TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); + TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); + TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); + TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); + TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); + TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); + TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); + TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); + TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); + TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN)); - TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); - TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); - TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); - TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); - TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); - TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); - TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); - TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); - TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); - TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); - TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); - TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); + TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); + TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); + TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); + TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); + TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); + TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); + TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); + TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); + TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); + TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); + TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); } diff --git a/Marlin/src/HAL/STM32F1/endstop_interrupts.h b/Marlin/src/HAL/STM32F1/endstop_interrupts.h index a1ef8a8c3a..b4df5d71f1 100644 --- a/Marlin/src/HAL/STM32F1/endstop_interrupts.h +++ b/Marlin/src/HAL/STM32F1/endstop_interrupts.h @@ -54,33 +54,33 @@ void endstop_ISR() { endstops.update(); } void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(P, endstop_ISR, CHANGE) - TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); - TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); - TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); - TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); - TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN, _ATTACH(Z_MIN_PIN)); - TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); - TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); - TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); - TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); - TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); - TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); - TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); - TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); - TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); - TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); + TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); + TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); + TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); + TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); + TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); + TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); + TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); + TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); + TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); + TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); + TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); + TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); + TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); + TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); + TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN)); - TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); - TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); - TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); - TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); - TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); - TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); - TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); - TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); - TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); - TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); - TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); - TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); + TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); + TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); + TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); + TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); + TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); + TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); + TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); + TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); + TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); + TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); + TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); } diff --git a/Marlin/src/HAL/TEENSY31_32/endstop_interrupts.h b/Marlin/src/HAL/TEENSY31_32/endstop_interrupts.h index c1bbcb121b..9ce4fcdb2f 100644 --- a/Marlin/src/HAL/TEENSY31_32/endstop_interrupts.h +++ b/Marlin/src/HAL/TEENSY31_32/endstop_interrupts.h @@ -47,33 +47,33 @@ void endstop_ISR() { endstops.update(); } void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE) - TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); - TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); - TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); - TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); - TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN, _ATTACH(Z_MIN_PIN)); - TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); - TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); - TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); - TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); - TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); - TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); - TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); - TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); - TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); - TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); + TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); + TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); + TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); + TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); + TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); + TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); + TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); + TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); + TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); + TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); + TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); + TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); + TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); + TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); + TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN)); - TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); - TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); - TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); - TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); - TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); - TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); - TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); - TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); - TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); - TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); - TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); - TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); + TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); + TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); + TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); + TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); + TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); + TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); + TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); + TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); + TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); + TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); + TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); } diff --git a/Marlin/src/HAL/TEENSY35_36/endstop_interrupts.h b/Marlin/src/HAL/TEENSY35_36/endstop_interrupts.h index 48d3bbbfa1..c9ef278769 100644 --- a/Marlin/src/HAL/TEENSY35_36/endstop_interrupts.h +++ b/Marlin/src/HAL/TEENSY35_36/endstop_interrupts.h @@ -46,33 +46,33 @@ void endstop_ISR() { endstops.update(); } */ void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE) - TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); - TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); - TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); - TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); - TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN, _ATTACH(Z_MIN_PIN)); - TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); - TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); - TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); - TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); - TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); - TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); - TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); - TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); - TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); - TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); + TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); + TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); + TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); + TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); + TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); + TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); + TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); + TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); + TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); + TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); + TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); + TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); + TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); + TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); + TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN)); - TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); - TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); - TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); - TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); - TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); - TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); - TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); - TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); - TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); - TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); - TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); - TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); + TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); + TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); + TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); + TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); + TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); + TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); + TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); + TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); + TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); + TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); + TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); } diff --git a/Marlin/src/HAL/TEENSY40_41/endstop_interrupts.h b/Marlin/src/HAL/TEENSY40_41/endstop_interrupts.h index 4c3ddec9f1..1e4ce4cef3 100644 --- a/Marlin/src/HAL/TEENSY40_41/endstop_interrupts.h +++ b/Marlin/src/HAL/TEENSY40_41/endstop_interrupts.h @@ -46,27 +46,33 @@ void endstop_ISR() { endstops.update(); } */ void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE) - TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); - TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); - TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); - TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); - TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN, _ATTACH(Z_MIN_PIN)); - TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); - TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); - TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); - TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); - TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); - TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); - TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); - TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); - TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); - TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); + TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); + TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); + TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); + TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); + TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); + TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); + TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); + TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); + TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); + TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); + TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); + TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); + TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); + TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); + TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN)); - TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); - TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); - TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); - TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); - TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); - TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); + TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); + TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); + TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); + TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); + TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); + TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); + TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); + TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); + TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); + TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); } diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h index fec390b64b..7e20f83803 100644 --- a/Marlin/src/core/macros.h +++ b/Marlin/src/core/macros.h @@ -33,51 +33,6 @@ #define _AXIS(A) (A##_AXIS) -#define _XSTOP_ 0x01 -#define _YSTOP_ 0x02 -#define _ZSTOP_ 0x03 -#define _ISTOP_ 0x04 -#define _JSTOP_ 0x05 -#define _KSTOP_ 0x06 -#define _USTOP_ 0x07 -#define _VSTOP_ 0x08 -#define _WSTOP_ 0x09 -#define _XMIN_ 0x11 -#define _YMIN_ 0x12 -#define _ZMIN_ 0x13 -#define _IMIN_ 0x14 -#define _JMIN_ 0x15 -#define _KMIN_ 0x16 -#define _UMIN_ 0x17 -#define _VMIN_ 0x18 -#define _WMIN_ 0x19 -#define _XMAX_ 0x21 -#define _YMAX_ 0x22 -#define _ZMAX_ 0x23 -#define _IMAX_ 0x24 -#define _JMAX_ 0x25 -#define _KMAX_ 0x26 -#define _UMAX_ 0x27 -#define _VMAX_ 0x28 -#define _WMAX_ 0x29 -#define _XDIAG_ 0x31 -#define _YDIAG_ 0x32 -#define _ZDIAG_ 0x33 -#define _IDIAG_ 0x34 -#define _JDIAG_ 0x35 -#define _KDIAG_ 0x36 -#define _UDIAG_ 0x37 -#define _VDIAG_ 0x38 -#define _WDIAG_ 0x39 -#define _E0DIAG_ 0xE0 -#define _E1DIAG_ 0xE1 -#define _E2DIAG_ 0xE2 -#define _E3DIAG_ 0xE3 -#define _E4DIAG_ 0xE4 -#define _E5DIAG_ 0xE5 -#define _E6DIAG_ 0xE6 -#define _E7DIAG_ 0xE7 - #define _FORCE_INLINE_ __attribute__((__always_inline__)) __inline__ #define FORCE_INLINE __attribute__((always_inline)) inline #define NO_INLINE __attribute__((noinline)) diff --git a/Marlin/src/inc/Changes.h b/Marlin/src/inc/Changes.h index 6fd33debc6..8606cbcc93 100644 --- a/Marlin/src/inc/Changes.h +++ b/Marlin/src/inc/Changes.h @@ -65,7 +65,7 @@ #elif defined(ENDSTOPPULLUP_FIL_RUNOUT) #error "ENDSTOPPULLUP_FIL_RUNOUT is now FIL_RUNOUT_PULLUP." #elif defined(DISABLE_MAX_ENDSTOPS) || defined(DISABLE_MIN_ENDSTOPS) - #error "DISABLE_MAX_ENDSTOPS and DISABLE_MIN_ENDSTOPS deprecated. Use individual USE_*_PLUG options instead." + #error "DISABLE_MAX_ENDSTOPS and DISABLE_MIN_ENDSTOPS deprecated. Endstops are automatically determined." #elif defined(LANGUAGE_INCLUDE) #error "LANGUAGE_INCLUDE has been replaced by LCD_LANGUAGE." #elif defined(EXTRUDER_OFFSET_X) || defined(EXTRUDER_OFFSET_Y) @@ -645,6 +645,20 @@ #error "TFT_SHARED_SPI is now TFT_SHARED_IO." #elif defined(LCD_PINS_ENABLE) #error "LCD_PINS_ENABLE is now LCD_PINS_EN." +#elif ANY(USE_XMIN_PLUG, USE_XMAX_PLUG, USE_YMIN_PLUG, USE_YMAX_PLUG, USE_ZMIN_PLUG, USE_ZMAX_PLUG, \ + USE_IMIN_PLUG, USE_IMAX_PLUG, USE_JMIN_PLUG, USE_JMAX_PLUG, USE_KMIN_PLUG, USE_KMAX_PLUG, \ + USE_UMIN_PLUG, USE_UMAX_PLUG, USE_VMIN_PLUG, USE_VMAX_PLUG, USE_WMIN_PLUG, USE_WMAX_PLUG) + #error "USE_*_PLUG settings are no longer needed and should be removed." +#elif defined(X2_USE_ENDSTOP) + #error "X2_USE_ENDSTOP is obsolete. Instead set X2_STOP_PIN directly. (e.g., 'X2_USE_ENDSTOP _XMAX_' becomes 'X2_STOP_PIN X_MAX_PIN')" +#elif defined(Y2_USE_ENDSTOP) + #error "Y2_USE_ENDSTOP is obsolete. Instead set Y2_STOP_PIN directly. (e.g., 'Y2_USE_ENDSTOP _YMAX_' becomes 'Y2_STOP_PIN Y_MAX_PIN')" +#elif defined(Z2_USE_ENDSTOP) + #error "Z2_USE_ENDSTOP is obsolete. Instead set Z2_STOP_PIN directly. (e.g., 'Z2_USE_ENDSTOP _ZMAX_' becomes 'Z2_STOP_PIN Z_MAX_PIN')" +#elif defined(Z2_USE_ENDSTOP) + #error "Z2_USE_ENDSTOP is obsolete. Instead set Z2_STOP_PIN directly. (e.g., 'Z2_USE_ENDSTOP _ZMAX_' becomes 'Z2_STOP_PIN Z_MAX_PIN')" +#elif defined(Z4_USE_ENDSTOP) + #error "Z4_USE_ENDSTOP is obsolete. Instead set Z4_STOP_PIN directly. (e.g., 'Z4_USE_ENDSTOP _ZMAX_' becomes 'Z4_STOP_PIN Z_MAX_PIN')" #endif // L64xx stepper drivers have been removed diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index f3d80a6c9f..9e8e8ed17f 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -737,17 +737,17 @@ #if ENABLED(X_DUAL_ENDSTOPS) #if X_HOME_TO_MAX #ifndef X2_MAX_ENDSTOP_HIT_STATE - #if X2_USE_ENDSTOP == _XMIN_ + #if X2_STOP_PIN == X_MIN_PIN #define X2_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE - #elif X2_USE_ENDSTOP == _XMAX_ + #elif X2_STOP_PIN == X_MAX_PIN #define X2_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE - #elif X2_USE_ENDSTOP == _YMIN_ + #elif X2_STOP_PIN == Y_MIN_PIN #define X2_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE - #elif X2_USE_ENDSTOP == _YMAX_ + #elif X2_STOP_PIN == Y_MAX_PIN #define X2_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE - #elif X2_USE_ENDSTOP == _ZMIN_ + #elif X2_STOP_PIN == Z_MIN_PIN #define X2_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE - #elif X2_USE_ENDSTOP == _ZMAX_ + #elif X2_STOP_PIN == Z_MAX_PIN #define X2_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif @@ -759,17 +759,17 @@ #endif #else #ifndef X2_MIN_ENDSTOP_HIT_STATE - #if X2_USE_ENDSTOP == _XMIN_ + #if X2_STOP_PIN == X_MIN_PIN #define X2_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE - #elif X2_USE_ENDSTOP == _XMAX_ + #elif X2_STOP_PIN == X_MAX_PIN #define X2_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE - #elif X2_USE_ENDSTOP == _YMIN_ + #elif X2_STOP_PIN == Y_MIN_PIN #define X2_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE - #elif X2_USE_ENDSTOP == _YMAX_ + #elif X2_STOP_PIN == Y_MAX_PIN #define X2_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE - #elif X2_USE_ENDSTOP == _ZMIN_ + #elif X2_STOP_PIN == Z_MIN_PIN #define X2_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE - #elif X2_USE_ENDSTOP == _ZMAX_ + #elif X2_STOP_PIN == Z_MAX_PIN #define X2_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif @@ -794,17 +794,17 @@ #if ENABLED(Y_DUAL_ENDSTOPS) #if Y_HOME_TO_MAX #ifndef Y2_MAX_ENDSTOP_HIT_STATE - #if Y2_USE_ENDSTOP == _XMIN_ + #if Y2_STOP_PIN == X_MIN_PIN #define Y2_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE - #elif Y2_USE_ENDSTOP == _XMAX_ + #elif Y2_STOP_PIN == X_MAX_PIN #define Y2_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE - #elif Y2_USE_ENDSTOP == _YMIN_ + #elif Y2_STOP_PIN == Y_MIN_PIN #define Y2_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE - #elif Y2_USE_ENDSTOP == _YMAX_ + #elif Y2_STOP_PIN == Y_MAX_PIN #define Y2_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE - #elif Y2_USE_ENDSTOP == _ZMIN_ + #elif Y2_STOP_PIN == Z_MIN_PIN #define Y2_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE - #elif Y2_USE_ENDSTOP == _ZMAX_ + #elif Y2_STOP_PIN == Z_MAX_PIN #define Y2_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif @@ -816,17 +816,17 @@ #endif #else #ifndef Y2_MIN_ENDSTOP_HIT_STATE - #if Y2_USE_ENDSTOP == _XMIN_ + #if Y2_STOP_PIN == X_MIN_PIN #define Y2_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE - #elif Y2_USE_ENDSTOP == _XMAX_ + #elif Y2_STOP_PIN == X_MAX_PIN #define Y2_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE - #elif Y2_USE_ENDSTOP == _YMIN_ + #elif Y2_STOP_PIN == Y_MIN_PIN #define Y2_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE - #elif Y2_USE_ENDSTOP == _YMAX_ + #elif Y2_STOP_PIN == Y_MAX_PIN #define Y2_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE - #elif Y2_USE_ENDSTOP == _ZMIN_ + #elif Y2_STOP_PIN == Z_MIN_PIN #define Y2_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE - #elif Y2_USE_ENDSTOP == _ZMAX_ + #elif Y2_STOP_PIN == Z_MAX_PIN #define Y2_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif @@ -852,17 +852,17 @@ #if Z_HOME_TO_MAX #ifndef Z2_MAX_ENDSTOP_HIT_STATE - #if Z2_USE_ENDSTOP == _XMIN_ + #if Z2_STOP_PIN == X_MIN_PIN #define Z2_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE - #elif Z2_USE_ENDSTOP == _XMAX_ + #elif Z2_STOP_PIN == X_MAX_PIN #define Z2_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE - #elif Z2_USE_ENDSTOP == _YMIN_ + #elif Z2_STOP_PIN == Y_MIN_PIN #define Z2_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE - #elif Z2_USE_ENDSTOP == _YMAX_ + #elif Z2_STOP_PIN == Y_MAX_PIN #define Z2_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE - #elif Z2_USE_ENDSTOP == _ZMIN_ + #elif Z2_STOP_PIN == Z_MIN_PIN #define Z2_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE - #elif Z2_USE_ENDSTOP == _ZMAX_ + #elif Z2_STOP_PIN == Z_MAX_PIN #define Z2_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif @@ -874,17 +874,17 @@ #endif #else #ifndef Z2_MIN_ENDSTOP_HIT_STATE - #if Z2_USE_ENDSTOP == _XMIN_ + #if Z2_STOP_PIN == X_MIN_PIN #define Z2_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE - #elif Z2_USE_ENDSTOP == _XMAX_ + #elif Z2_STOP_PIN == X_MAX_PIN #define Z2_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE - #elif Z2_USE_ENDSTOP == _YMIN_ + #elif Z2_STOP_PIN == Y_MIN_PIN #define Z2_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE - #elif Z2_USE_ENDSTOP == _YMAX_ + #elif Z2_STOP_PIN == Y_MAX_PIN #define Z2_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE - #elif Z2_USE_ENDSTOP == _ZMIN_ + #elif Z2_STOP_PIN == Z_MIN_PIN #define Z2_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE - #elif Z2_USE_ENDSTOP == _ZMAX_ + #elif Z2_STOP_PIN == Z_MAX_PIN #define Z2_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif @@ -905,17 +905,17 @@ #if NUM_Z_STEPPERS >= 3 #if Z_HOME_TO_MAX #ifndef Z3_MAX_ENDSTOP_HIT_STATE - #if Z3_USE_ENDSTOP == _XMIN_ + #if Z3_STOP_PIN == X_MIN_PIN #define Z3_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE - #elif Z3_USE_ENDSTOP == _XMAX_ + #elif Z3_STOP_PIN == X_MAX_PIN #define Z3_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE - #elif Z3_USE_ENDSTOP == _YMIN_ + #elif Z3_STOP_PIN == Y_MIN_PIN #define Z3_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE - #elif Z3_USE_ENDSTOP == _YMAX_ + #elif Z3_STOP_PIN == Y_MAX_PIN #define Z3_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE - #elif Z3_USE_ENDSTOP == _ZMIN_ + #elif Z3_STOP_PIN == Z_MIN_PIN #define Z3_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE - #elif Z3_USE_ENDSTOP == _ZMAX_ + #elif Z3_STOP_PIN == Z_MAX_PIN #define Z3_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif @@ -927,17 +927,17 @@ #endif #else #ifndef Z3_MIN_ENDSTOP_HIT_STATE - #if Z3_USE_ENDSTOP == _XMIN_ + #if Z3_STOP_PIN == X_MIN_PIN #define Z3_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE - #elif Z3_USE_ENDSTOP == _XMAX_ + #elif Z3_STOP_PIN == X_MAX_PIN #define Z3_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE - #elif Z3_USE_ENDSTOP == _YMIN_ + #elif Z3_STOP_PIN == Y_MIN_PIN #define Z3_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE - #elif Z3_USE_ENDSTOP == _YMAX_ + #elif Z3_STOP_PIN == Y_MAX_PIN #define Z3_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE - #elif Z3_USE_ENDSTOP == _ZMIN_ + #elif Z3_STOP_PIN == Z_MIN_PIN #define Z3_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE - #elif Z3_USE_ENDSTOP == _ZMAX_ + #elif Z3_STOP_PIN == Z_MAX_PIN #define Z3_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif @@ -959,17 +959,17 @@ #if NUM_Z_STEPPERS >= 4 #if Z_HOME_TO_MAX #ifndef Z4_MAX_ENDSTOP_HIT_STATE - #if Z4_USE_ENDSTOP == _XMIN_ + #if Z4_STOP_PIN == X_MIN_PIN #define Z4_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE - #elif Z4_USE_ENDSTOP == _XMAX_ + #elif Z4_STOP_PIN == X_MAX_PIN #define Z4_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE - #elif Z4_USE_ENDSTOP == _YMIN_ + #elif Z4_STOP_PIN == Y_MIN_PIN #define Z4_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE - #elif Z4_USE_ENDSTOP == _YMAX_ + #elif Z4_STOP_PIN == Y_MAX_PIN #define Z4_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE - #elif Z4_USE_ENDSTOP == _ZMIN_ + #elif Z4_STOP_PIN == Z_MIN_PIN #define Z4_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE - #elif Z4_USE_ENDSTOP == _ZMAX_ + #elif Z4_STOP_PIN == Z_MAX_PIN #define Z4_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif @@ -981,17 +981,17 @@ #endif #else #ifndef Z4_MIN_ENDSTOP_HIT_STATE - #if Z4_USE_ENDSTOP == _XMIN_ + #if Z4_STOP_PIN == X_MIN_PIN #define Z4_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE - #elif Z4_USE_ENDSTOP == _XMAX_ + #elif Z4_STOP_PIN == X_MAX_PIN #define Z4_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE - #elif Z4_USE_ENDSTOP == _YMIN_ + #elif Z4_STOP_PIN == Y_MIN_PIN #define Z4_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE - #elif Z4_USE_ENDSTOP == _YMAX_ + #elif Z4_STOP_PIN == Y_MAX_PIN #define Z4_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE - #elif Z4_USE_ENDSTOP == _ZMIN_ + #elif Z4_STOP_PIN == Z_MIN_PIN #define Z4_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE - #elif Z4_USE_ENDSTOP == _ZMAX_ + #elif Z4_STOP_PIN == Z_MAX_PIN #define Z4_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE #endif #endif @@ -1016,58 +1016,58 @@ * Set ENDSTOPPULLUPS for active endstop switches */ #if ENABLED(ENDSTOPPULLUPS) - #if ENABLED(USE_XMAX_PLUG) + #if HAS_X_MAX #define ENDSTOPPULLUP_XMAX #endif - #if ENABLED(USE_YMAX_PLUG) + #if HAS_Y_MAX #define ENDSTOPPULLUP_YMAX #endif - #if ENABLED(USE_ZMAX_PLUG) + #if HAS_Z_MAX #define ENDSTOPPULLUP_ZMAX #endif - #if ENABLED(USE_IMAX_PLUG) + #if HAS_I_MAX #define ENDSTOPPULLUP_IMAX #endif - #if ENABLED(USE_JMAX_PLUG) + #if HAS_J_MAX #define ENDSTOPPULLUP_JMAX #endif - #if ENABLED(USE_KMAX_PLUG) + #if HAS_K_MAX #define ENDSTOPPULLUP_KMAX #endif - #if ENABLED(USE_UMAX_PLUG) + #if HAS_U_MAX #define ENDSTOPPULLUP_UMAX #endif - #if ENABLED(USE_VMAX_PLUG) + #if HAS_V_MAX #define ENDSTOPPULLUP_VMAX #endif - #if ENABLED(USE_WMAX_PLUG) + #if HAS_W_MAX #define ENDSTOPPULLUP_WMAX #endif - #if ENABLED(USE_XMIN_PLUG) + #if HAS_X_MIN #define ENDSTOPPULLUP_XMIN #endif - #if ENABLED(USE_YMIN_PLUG) + #if HAS_Y_MIN #define ENDSTOPPULLUP_YMIN #endif - #if ENABLED(USE_ZMIN_PLUG) + #if HAS_Z_MIN_PIN #define ENDSTOPPULLUP_ZMIN #endif - #if ENABLED(USE_IMIN_PLUG) + #if HAS_I_MIN #define ENDSTOPPULLUP_IMIN #endif - #if ENABLED(USE_JMIN_PLUG) + #if HAS_J_MIN #define ENDSTOPPULLUP_JMIN #endif - #if ENABLED(USE_KMIN_PLUG) + #if HAS_K_MIN #define ENDSTOPPULLUP_KMIN #endif - #if ENABLED(USE_UMIN_PLUG) + #if HAS_U_MIN #define ENDSTOPPULLUP_UMIN #endif - #if ENABLED(USE_VMIN_PLUG) + #if HAS_V_MIN #define ENDSTOPPULLUP_VMIN #endif - #if ENABLED(USE_WMIN_PLUG) + #if HAS_W_MIN #define ENDSTOPPULLUP_WMIN #endif #endif @@ -1076,58 +1076,58 @@ * Set ENDSTOPPULLDOWNS for active endstop switches */ #if ENABLED(ENDSTOPPULLDOWNS) - #if ENABLED(USE_XMAX_PLUG) + #if HAS_X_MAX #define ENDSTOPPULLDOWN_XMAX #endif - #if ENABLED(USE_YMAX_PLUG) + #if HAS_Y_MAX #define ENDSTOPPULLDOWN_YMAX #endif - #if ENABLED(USE_ZMAX_PLUG) + #if HAS_Z_MAX #define ENDSTOPPULLDOWN_ZMAX #endif - #if ENABLED(USE_IMAX_PLUG) + #if HAS_I_MAX #define ENDSTOPPULLDOWN_IMAX #endif - #if ENABLED(USE_JMAX_PLUG) + #if HAS_J_MAX #define ENDSTOPPULLDOWN_JMAX #endif - #if ENABLED(USE_KMAX_PLUG) + #if HAS_K_MAX #define ENDSTOPPULLDOWN_KMAX #endif - #if ENABLED(USE_UMAX_PLUG) + #if HAS_U_MAX #define ENDSTOPPULLDOWN_UMAX #endif - #if ENABLED(USE_VMAX_PLUG) + #if HAS_V_MAX #define ENDSTOPPULLDOWN_VMAX #endif - #if ENABLED(USE_WMAX_PLUG) + #if HAS_W_MAX #define ENDSTOPPULLDOWN_WMAX #endif - #if ENABLED(USE_XMIN_PLUG) + #if HAS_X_MIN #define ENDSTOPPULLDOWN_XMIN #endif - #if ENABLED(USE_YMIN_PLUG) + #if HAS_Y_MIN #define ENDSTOPPULLDOWN_YMIN #endif - #if ENABLED(USE_ZMIN_PLUG) + #if HAS_Z_MIN_PIN #define ENDSTOPPULLDOWN_ZMIN #endif - #if ENABLED(USE_IMIN_PLUG) + #if HAS_I_MIN #define ENDSTOPPULLDOWN_IMIN #endif - #if ENABLED(USE_JMIN_PLUG) + #if HAS_J_MIN #define ENDSTOPPULLDOWN_JMIN #endif - #if ENABLED(USE_KMIN_PLUG) + #if HAS_K_MIN #define ENDSTOPPULLDOWN_KMIN #endif - #if ENABLED(USE_UMIN_PLUG) + #if HAS_U_MIN #define ENDSTOPPULLDOWN_UMIN #endif - #if ENABLED(USE_VMIN_PLUG) + #if HAS_V_MIN #define ENDSTOPPULLDOWN_VMIN #endif - #if ENABLED(USE_WMIN_PLUG) + #if HAS_W_MIN #define ENDSTOPPULLDOWN_WMIN #endif #endif @@ -2060,154 +2060,152 @@ // Endstops and bed probe // -// Is an endstop plug used for extra Z endstops or the probe? -#define IS_PROBE_PIN(A,M) (USES_Z_MIN_PROBE_PIN && Z_MIN_PROBE_PIN == A##_##M##_PIN) -#define IS_X2_ENDSTOP(A,M) (ENABLED(X_DUAL_ENDSTOPS) && X2_USE_ENDSTOP == _##A##M##_) -#define IS_Y2_ENDSTOP(A,M) (ENABLED(Y_DUAL_ENDSTOPS) && Y2_USE_ENDSTOP == _##A##M##_) -#define IS_Z2_ENDSTOP(A,M) (ENABLED(Z_MULTI_ENDSTOPS) && Z2_USE_ENDSTOP == _##A##M##_) -#define IS_Z3_ENDSTOP(A,M) (ENABLED(Z_MULTI_ENDSTOPS) && NUM_Z_STEPPERS >= 3 && Z3_USE_ENDSTOP == _##A##M##_) -#define IS_Z4_ENDSTOP(A,M) (ENABLED(Z_MULTI_ENDSTOPS) && NUM_Z_STEPPERS >= 4 && Z4_USE_ENDSTOP == _##A##M##_) +#define _HAS_STOP(A,N,M,C) ((A##_HOME_TO_##M || (C+0)) && PIN_EXISTS(A##N##_##M)) -#define _HAS_STOP(A,M) (HAS_##A##_AXIS && PIN_EXISTS(A##_##M) && !IS_PROBE_PIN(A,M) && !IS_X2_ENDSTOP(A,M) && !IS_Y2_ENDSTOP(A,M) && !IS_Z2_ENDSTOP(A,M) && !IS_Z3_ENDSTOP(A,M) && !IS_Z4_ENDSTOP(A,M)) -#if _HAS_STOP(X,MIN) +#if _HAS_STOP(X,,MIN,) #define HAS_X_MIN 1 #endif -#if _HAS_STOP(X,MAX) +#if _HAS_STOP(X,,MAX,ENABLED(DUAL_X_CARRIAGE)) #define HAS_X_MAX 1 #endif -#if _HAS_STOP(Y,MIN) - #define HAS_Y_MIN 1 -#endif -#if _HAS_STOP(Y,MAX) - #define HAS_Y_MAX 1 -#endif -#if _HAS_STOP(Z,MIN) - #define HAS_Z_MIN 1 -#endif -#if _HAS_STOP(Z,MAX) - #define HAS_Z_MAX 1 -#endif -#if _HAS_STOP(I,MIN) - #define HAS_I_MIN 1 -#endif -#if _HAS_STOP(I,MAX) - #define HAS_I_MAX 1 -#endif -#if _HAS_STOP(J,MIN) - #define HAS_J_MIN 1 -#endif -#if _HAS_STOP(J,MAX) - #define HAS_J_MAX 1 -#endif -#if _HAS_STOP(K,MIN) - #define HAS_K_MIN 1 -#endif -#if _HAS_STOP(K,MAX) - #define HAS_K_MAX 1 -#endif -#if _HAS_STOP(U,MIN) - #define HAS_U_MIN 1 -#endif -#if _HAS_STOP(U,MAX) - #define HAS_U_MAX 1 -#endif -#if _HAS_STOP(V,MIN) - #define HAS_V_MIN 1 -#endif -#if _HAS_STOP(V,MAX) - #define HAS_V_MAX 1 -#endif -#if _HAS_STOP(W,MIN) - #define HAS_W_MIN 1 -#endif -#if _HAS_STOP(W,MAX) - #define HAS_W_MAX 1 -#endif -#if PIN_EXISTS(X2_MIN) - #define HAS_X2_MIN 1 -#endif -#if PIN_EXISTS(X2_MAX) - #define HAS_X2_MAX 1 -#endif -#if PIN_EXISTS(Y2_MIN) - #define HAS_Y2_MIN 1 -#endif -#if PIN_EXISTS(Y2_MAX) - #define HAS_Y2_MAX 1 -#endif -#if PIN_EXISTS(Z2_MIN) - #define HAS_Z2_MIN 1 -#endif -#if PIN_EXISTS(Z2_MAX) - #define HAS_Z2_MAX 1 -#endif -#if PIN_EXISTS(Z3_MIN) - #define HAS_Z3_MIN 1 -#endif -#if PIN_EXISTS(Z3_MAX) - #define HAS_Z3_MAX 1 -#endif -#if PIN_EXISTS(Z4_MIN) - #define HAS_Z4_MIN 1 -#endif -#if PIN_EXISTS(Z4_MAX) - #define HAS_Z4_MAX 1 -#endif - #if HAS_X_MIN || HAS_X_MAX #define HAS_X_ENDSTOP 1 #endif -#if HAS_X2_MIN || HAS_X2_MAX - #define HAS_X2_ENDSTOP 1 + +#if _HAS_STOP(Y,,MIN,) + #define HAS_Y_MIN 1 +#elif _HAS_STOP(Y,,MAX,) + #define HAS_Y_MAX 1 #endif #if HAS_Y_MIN || HAS_Y_MAX #define HAS_Y_ENDSTOP 1 #endif -#if HAS_Y2_MIN || HAS_Y2_MAX - #define HAS_Y2_ENDSTOP 1 + +#if _HAS_STOP(Z,,MIN,EITHER(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, HAS_DELTA_SENSORLESS_PROBING)) + #define HAS_Z_MIN 1 + #if !HAS_DELTA_SENSORLESS_PROBING + #define HAS_Z_MIN_PIN 1 + #endif +#endif +#if _HAS_STOP(Z,,MAX,) + #define HAS_Z_MAX 1 #endif #if HAS_Z_MIN || HAS_Z_MAX #define HAS_Z_ENDSTOP 1 #endif -#if HAS_Z2_MIN || HAS_Z2_MAX - #define HAS_Z2_ENDSTOP 1 -#endif -#if HAS_Z3_MIN || HAS_Z3_MAX - #define HAS_Z3_ENDSTOP 1 -#endif -#if HAS_Z4_MIN || HAS_Z4_MAX - #define HAS_Z4_ENDSTOP 1 + +#if _HAS_STOP(I,,MIN,) + #define HAS_I_MIN 1 +#elif _HAS_STOP(I,,MAX,) + #define HAS_I_MAX 1 #endif #if HAS_I_MIN || HAS_I_MAX #define HAS_I_ENDSTOP 1 #endif + +#if _HAS_STOP(J,,MIN,) + #define HAS_J_MIN 1 +#elif _HAS_STOP(J,,MAX,) + #define HAS_J_MAX 1 +#endif #if HAS_J_MIN || HAS_J_MAX #define HAS_J_ENDSTOP 1 #endif + +#if _HAS_STOP(K,,MIN,) + #define HAS_K_MIN 1 +#elif _HAS_STOP(K,,MAX,) + #define HAS_K_MAX 1 +#endif #if HAS_K_MIN || HAS_K_MAX #define HAS_K_ENDSTOP 1 #endif + +#if _HAS_STOP(U,,MIN,) + #define HAS_U_MIN 1 +#elif _HAS_STOP(U,,MAX,) + #define HAS_U_MAX 1 +#endif #if HAS_U_MIN || HAS_U_MAX #define HAS_U_ENDSTOP 1 #endif + +#if _HAS_STOP(V,,MIN,) + #define HAS_V_MIN 1 +#elif _HAS_STOP(V,,MAX,) + #define HAS_V_MAX 1 +#endif #if HAS_V_MIN || HAS_V_MAX #define HAS_V_ENDSTOP 1 #endif + +#if _HAS_STOP(W,,MIN,) + #define HAS_W_MIN 1 +#elif _HAS_STOP(W,,MAX,) + #define HAS_W_MAX 1 +#endif #if HAS_W_MIN || HAS_W_MAX #define HAS_W_ENDSTOP 1 #endif +#if EITHER(DUAL_X_CARRIAGE, X_DUAL_ENDSTOPS) + #if _HAS_STOP(X,2,MIN,) + #define HAS_X2_MIN 1 + #elif _HAS_STOP(X,2,MAX,) + #define HAS_X2_MAX 1 + #endif + #if HAS_X2_MIN || HAS_X2_MAX + #define HAS_X2_ENDSTOP 1 + #endif +#endif + +#if ENABLED(Y_DUAL_ENDSTOPS) + #if _HAS_STOP(Y,2,MIN,) + #define HAS_Y2_MIN 1 + #elif _HAS_STOP(Y,2,MAX,) + #define HAS_Y2_MAX 1 + #endif + #if HAS_Y2_MIN || HAS_Y2_MAX + #define HAS_Y2_ENDSTOP 1 + #endif +#endif + +#if ENABLED(Z_MULTI_ENDSTOPS) + #if _HAS_STOP(Z,2,MIN,) + #define HAS_Z2_MIN 1 + #elif _HAS_STOP(Z,2,MAX,) + #define HAS_Z2_MAX 1 + #endif + #if HAS_Z2_MIN || HAS_Z2_MAX + #define HAS_Z2_ENDSTOP 1 + #endif + #if NUM_Z_STEPPERS >= 3 + #if _HAS_STOP(Z,3,MIN,) + #define HAS_Z3_MIN 1 + #elif _HAS_STOP(Z,3,MAX,) + #define HAS_Z3_MAX 1 + #endif + #if HAS_Z3_MIN || HAS_Z3_MAX + #define HAS_Z3_ENDSTOP 1 + #endif + #endif + #if NUM_Z_STEPPERS >= 4 + #if _HAS_STOP(Z,4,MIN,) + #define HAS_Z4_MIN 1 + #elif _HAS_STOP(Z,4,MAX,) + #define HAS_Z4_MAX 1 + #endif + #if HAS_Z4_MIN || HAS_Z4_MAX + #define HAS_Z4_ENDSTOP 1 + #endif + #endif +#endif + #if HAS_BED_PROBE && PIN_EXISTS(Z_MIN_PROBE) #define HAS_Z_MIN_PROBE_PIN 1 #endif #undef _HAS_STOP -#undef IS_PROBE_PIN -#undef IS_X2_ENDSTOP -#undef IS_Y2_ENDSTOP -#undef IS_Z2_ENDSTOP -#undef IS_Z3_ENDSTOP -#undef IS_Z4_ENDSTOP // // ADC Temp Sensors (Thermistor or Thermocouple with amplifier ADC interface) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 39e27ce3aa..35da7935de 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1379,9 +1379,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "SENSORLESS_PROBING requires a TMC2130/2160/2209/5130/5160 driver on Z and Z_STALL_SENSITIVITY." #endif #elif ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - #if DISABLED(USE_ZMIN_PLUG) - #error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires USE_ZMIN_PLUG to be enabled." - #elif !HAS_Z_MIN + #if !HAS_Z_MIN_PIN #error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires the Z_MIN_PIN to be defined." #elif Z_MIN_PROBE_ENDSTOP_HIT_STATE != Z_MIN_ENDSTOP_HIT_STATE #error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires Z_MIN_ENDSTOP_HIT_STATE to match Z_MIN_PROBE_ENDSTOP_HIT_STATE." @@ -1772,7 +1770,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #elif !GOOD_AXIS_PINS(X2) #error "DUAL_X_CARRIAGE requires X2 stepper pins to be defined." #elif !HAS_X_MAX - #error "DUAL_X_CARRIAGE requires USE_XMAX_PLUG and an X Max Endstop." + #error "DUAL_X_CARRIAGE requires an X_MAX_PIN in addition to the X_MIN_PIN." #elif !defined(X2_HOME_POS) || !defined(X2_MIN_POS) || !defined(X2_MAX_POS) #error "DUAL_X_CARRIAGE requires X2_HOME_POS, X2_MIN_POS, and X2_MAX_POS." #elif X_HOME_TO_MAX || X2_HOME_TO_MIN @@ -2302,90 +2300,49 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Endstop Tests */ - -#define _PLUG_UNUSED_TEST(A,P) (DISABLED(USE_##P##MIN_PLUG, USE_##P##MAX_PLUG) \ - && !(ENABLED(A##_DUAL_ENDSTOPS) && WITHIN(A##2_USE_ENDSTOP, _##P##MAX_, _##P##MIN_)) \ - && !(ENABLED(A##_MULTI_ENDSTOPS) && WITHIN(A##2_USE_ENDSTOP, _##P##MAX_, _##P##MIN_)) ) -#define _AXIS_PLUG_UNUSED_TEST(A) (HAS_##A##_A NUM_AXIS_GANG(&& _PLUG_UNUSED_TEST(A,X), && _PLUG_UNUSED_TEST(A,Y), && _PLUG_UNUSED_TEST(A,Z), \ - && _PLUG_UNUSED_TEST(A,I), && _PLUG_UNUSED_TEST(A,J), && _PLUG_UNUSED_TEST(A,K), \ - && _PLUG_UNUSED_TEST(A,U), && _PLUG_UNUSED_TEST(A,V), && _PLUG_UNUSED_TEST(A,W) ) ) - -// A machine with endstops must have a minimum of 3 #if HAS_ENDSTOPS - #if _AXIS_PLUG_UNUSED_TEST(X) - #error "You must enable USE_XMIN_PLUG or USE_XMAX_PLUG." - #endif - #if _AXIS_PLUG_UNUSED_TEST(Y) - #error "You must enable USE_YMIN_PLUG or USE_YMAX_PLUG." - #endif - #if _AXIS_PLUG_UNUSED_TEST(Z) - #error "You must enable USE_ZMIN_PLUG or USE_ZMAX_PLUG." - #endif - #if _AXIS_PLUG_UNUSED_TEST(I) - #error "You must enable USE_IMIN_PLUG or USE_IMAX_PLUG." - #endif - #if _AXIS_PLUG_UNUSED_TEST(J) - #error "You must enable USE_JMIN_PLUG or USE_JMAX_PLUG." - #endif - #if _AXIS_PLUG_UNUSED_TEST(K) - #error "You must enable USE_KMIN_PLUG or USE_KMAX_PLUG." - #endif - #if _AXIS_PLUG_UNUSED_TEST(U) - #error "You must enable USE_UMIN_PLUG or USE_UMAX_PLUG." - #endif - #if _AXIS_PLUG_UNUSED_TEST(V) - #error "You must enable USE_VMIN_PLUG or USE_VMAX_PLUG." - #endif - #if _AXIS_PLUG_UNUSED_TEST(W) - #error "You must enable USE_WMIN_PLUG or USE_WMAX_PLUG." - #endif - // Delta and Cartesian use 3 homing endstops #if NONE(IS_SCARA, SPI_ENDSTOPS) - #if X_HOME_TO_MIN && DISABLED(USE_XMIN_PLUG) - #error "Enable USE_XMIN_PLUG when homing X to MIN." - #elif X_HOME_TO_MAX && DISABLED(USE_XMAX_PLUG) - #error "Enable USE_XMAX_PLUG when homing X to MAX." - #elif Y_HOME_TO_MIN && DISABLED(USE_YMIN_PLUG) - #error "Enable USE_YMIN_PLUG when homing Y to MIN." - #elif Y_HOME_TO_MAX && DISABLED(USE_YMAX_PLUG) - #error "Enable USE_YMAX_PLUG when homing Y to MAX." - #elif I_HOME_TO_MIN && DISABLED(USE_IMIN_PLUG) - #error "Enable USE_IMIN_PLUG when homing I to MIN." - #elif I_HOME_TO_MAX && DISABLED(USE_IMAX_PLUG) - #error "Enable USE_IMAX_PLUG when homing I to MAX." - #elif J_HOME_TO_MIN && DISABLED(USE_JMIN_PLUG) - #error "Enable USE_JMIN_PLUG when homing J to MIN." - #elif J_HOME_TO_MAX && DISABLED(USE_JMAX_PLUG) - #error "Enable USE_JMAX_PLUG when homing J to MAX." - #elif K_HOME_TO_MIN && DISABLED(USE_KMIN_PLUG) - #error "Enable USE_KMIN_PLUG when homing K to MIN." - #elif K_HOME_TO_MAX && DISABLED(USE_KMAX_PLUG) - #error "Enable USE_KMAX_PLUG when homing K to MAX." - #elif U_HOME_TO_MIN && DISABLED(USE_UMIN_PLUG) - #error "Enable USE_UMIN_PLUG when homing U to MIN." - #elif U_HOME_TO_MAX && DISABLED(USE_UMAX_PLUG) - #error "Enable USE_UMAX_PLUG when homing U to MAX." - #elif V_HOME_TO_MIN && DISABLED(USE_VMIN_PLUG) - #error "Enable USE_VMIN_PLUG when homing V to MIN." - #elif V_HOME_TO_MAX && DISABLED(USE_VMAX_PLUG) - #error "Enable USE_VMAX_PLUG when homing V to MAX." - #elif W_HOME_TO_MIN && DISABLED(USE_WMIN_PLUG) - #error "Enable USE_WMIN_PLUG when homing W to MIN." - #elif W_HOME_TO_MAX && DISABLED(USE_WMAX_PLUG) - #error "Enable USE_WMAX_PLUG when homing W to MAX." + #if X_HOME_TO_MIN && !PIN_EXISTS(X_MIN) + #error "X_MIN_PIN (or X_STOP_PIN) is required for X axis homing." + #elif X_HOME_TO_MAX && !PIN_EXISTS(X_MAX) + #error "X_MAX_PIN (or X_STOP_PIN) is required for X axis homing." + #elif Y_HOME_TO_MIN && !PIN_EXISTS(Y_MIN) + #error "Y_MIN_PIN (or Y_STOP_PIN) is required for Y axis homing." + #elif Y_HOME_TO_MAX && !PIN_EXISTS(Y_MAX) + #error "Y_MAX_PIN (or Y_STOP_PIN) is required for Y axis homing." + #elif I_HOME_TO_MIN && !PIN_EXISTS(I_MIN) + #error "I_MIN_PIN (or I_STOP_PIN) is required for I axis homing." + #elif I_HOME_TO_MAX && !PIN_EXISTS(I_MAX) + #error "I_MAX_PIN (or I_STOP_PIN) is required for I axis homing." + #elif J_HOME_TO_MIN && !PIN_EXISTS(J_MIN) + #error "J_MIN_PIN (or J_STOP_PIN) is required for J axis homing." + #elif J_HOME_TO_MAX && !PIN_EXISTS(J_MAX) + #error "J_MAX_PIN (or J_STOP_PIN) is required for J axis homing." + #elif K_HOME_TO_MIN && !PIN_EXISTS(K_MIN) + #error "K_MIN_PIN (or K_STOP_PIN) is required for K axis homing." + #elif K_HOME_TO_MAX && !PIN_EXISTS(K_MAX) + #error "K_MAX_PIN (or K_STOP_PIN) is required for K axis homing." + #elif U_HOME_TO_MIN && !PIN_EXISTS(U_MIN) + #error "U_MIN_PIN (or U_STOP_PIN) is required for U axis homing." + #elif U_HOME_TO_MAX && !PIN_EXISTS(U_MAX) + #error "U_MAX_PIN (or U_STOP_PIN) is required for U axis homing." + #elif V_HOME_TO_MIN && !PIN_EXISTS(V_MIN) + #error "V_MIN_PIN (or V_STOP_PIN) is required for V axis homing." + #elif V_HOME_TO_MAX && !PIN_EXISTS(V_MAX) + #error "V_MAX_PIN (or V_STOP_PIN) is required for V axis homing." + #elif W_HOME_TO_MIN && !PIN_EXISTS(W_MIN) + #error "W_MIN_PIN (or W_STOP_PIN) is required for W axis homing." + #elif W_HOME_TO_MAX && !PIN_EXISTS(W_MAX) + #error "W_MAX_PIN (or W_STOP_PIN) is required for W axis homing." #endif #endif - // Z homing direction and plug usage flags - #if Z_HOME_TO_MIN && NONE(USE_ZMIN_PLUG, HOMING_Z_WITH_PROBE) - #error "Enable USE_ZMIN_PLUG when homing Z to MIN." - #elif Z_HOME_TO_MAX && ENABLED(USE_PROBE_FOR_Z_HOMING) + // Z homing requirements + #if Z_HOME_TO_MAX && ENABLED(USE_PROBE_FOR_Z_HOMING) #error "Z_HOME_DIR must be -1 when homing Z with the probe." #elif BOTH(HOMING_Z_WITH_PROBE, Z_MULTI_ENDSTOPS) #error "Z_MULTI_ENDSTOPS is incompatible with USE_PROBE_FOR_Z_HOMING." - #elif Z_HOME_TO_MAX && DISABLED(USE_ZMAX_PLUG) - #error "Enable USE_ZMAX_PLUG when homing Z to MAX." #endif #endif @@ -2397,26 +2354,26 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #if ENABLED(X_DUAL_ENDSTOPS) #if ENABLED(DELTA) #error "X_DUAL_ENDSTOPS is not compatible with DELTA." - #elif !X2_USE_ENDSTOP - #error "X2_USE_ENDSTOP must be set with X_DUAL_ENDSTOPS." + #elif !HAS_X2_ENDSTOP + #error "X2 Endstop Pin must be defined for X_DUAL_ENDSTOPS." #endif #endif #if ENABLED(Y_DUAL_ENDSTOPS) #if ENABLED(DELTA) #error "Y_DUAL_ENDSTOPS is not compatible with DELTA." - #elif !Y2_USE_ENDSTOP - #error "Y2_USE_ENDSTOP must be set with Y_DUAL_ENDSTOPS." + #elif !HAS_Y2_ENDSTOP + #error "Y2 Endstop Pin must be defined for Y_DUAL_ENDSTOPS." #endif #endif #if ENABLED(Z_MULTI_ENDSTOPS) #if ENABLED(DELTA) #error "Z_MULTI_ENDSTOPS is not compatible with DELTA." - #elif !Z2_USE_ENDSTOP - #error "Z2_USE_ENDSTOP must be set with Z_MULTI_ENDSTOPS." - #elif !Z3_USE_ENDSTOP && NUM_Z_STEPPERS >= 3 - #error "Z3_USE_ENDSTOP must be set with Z_MULTI_ENDSTOPS and Z3_DRIVER_TYPE." - #elif !Z4_USE_ENDSTOP && NUM_Z_STEPPERS >= 4 - #error "Z4_USE_ENDSTOP must be set with Z_MULTI_ENDSTOPS and Z4_DRIVER_TYPE." + #elif !HAS_Z2_ENDSTOP + #error "Z2 Endstop Pin must be defined for Z_MULTI_ENDSTOPS." + #elif NUM_Z_STEPPERS >= 3 && !HAS_Z3_ENDSTOP + #error "Z3 Endstop Pin must be defined for Z_MULTI_ENDSTOPS and Z3_DRIVER_TYPE." + #elif NUM_Z_STEPPERS >= 4 && !HAS_Z4_ENDSTOP + #error "Z4 Endstop Pin must be defined for Z_MULTI_ENDSTOPS and Z4_DRIVER_TYPE." #endif #endif @@ -3310,10 +3267,12 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L * TMC SPI Chaining */ #define IN_CHAIN(A) A##_CHAIN_POS > 0 -#if IN_CHAIN(X ) || IN_CHAIN(Y ) || IN_CHAIN(Z ) || IN_CHAIN(X2) || IN_CHAIN(Y2) || IN_CHAIN(Z2) || IN_CHAIN(Z3) || IN_CHAIN(Z4) \ +#if IN_CHAIN(X) || IN_CHAIN(Y) || IN_CHAIN(Z) || IN_CHAIN(I) || IN_CHAIN(J) || IN_CHAIN(K) || IN_CHAIN(U) || IN_CHAIN(V) || IN_CHAIN(W) \ + || IN_CHAIN(X2) || IN_CHAIN(Y2) || IN_CHAIN(Z2) || IN_CHAIN(Z3) || IN_CHAIN(Z4) \ || IN_CHAIN(E0) || IN_CHAIN(E1) || IN_CHAIN(E2) || IN_CHAIN(E3) || IN_CHAIN(E4) || IN_CHAIN(E5) || IN_CHAIN(E6) || IN_CHAIN(E7) #define BAD_CHAIN(A) (IN_CHAIN(A) && !PIN_EXISTS(A##_CS)) - #if BAD_CHAIN(X ) || BAD_CHAIN(Y ) || BAD_CHAIN(Z ) || BAD_CHAIN(X2) || BAD_CHAIN(Y2) || BAD_CHAIN(Z2) || BAD_CHAIN(Z3) || BAD_CHAIN(Z4) \ + #if BAD_CHAIN(X) || BAD_CHAIN(Y) || BAD_CHAIN(Z) || BAD_CHAIN(I) || BAD_CHAIN(J) || BAD_CHAIN(K) || BAD_CHAIN(U) || BAD_CHAIN(V) || BAD_CHAIN(W) \ + || BAD_CHAIN(X2) || BAD_CHAIN(Y2) || BAD_CHAIN(Z2) || BAD_CHAIN(Z3) || BAD_CHAIN(Z4) \ || BAD_CHAIN(E0) || BAD_CHAIN(E1) || BAD_CHAIN(E2) || BAD_CHAIN(E3) || BAD_CHAIN(E4) || BAD_CHAIN(E5) || BAD_CHAIN(E6) || BAD_CHAIN(E7) #error "All chained TMC drivers need a CS pin." #else @@ -3361,9 +3320,8 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #define CS_COMPARE E7_CS_PIN #endif #define BAD_CS_PIN(A) (IN_CHAIN(A) && A##_CS_PIN != CS_COMPARE) - #if BAD_CS_PIN(X ) || BAD_CS_PIN(Y ) || BAD_CS_PIN(Z ) || BAD_CS_PIN(X2) || BAD_CS_PIN(Y2) || BAD_CS_PIN(Z2) || BAD_CS_PIN(Z3) || BAD_CS_PIN(Z4) \ - || BAD_CS_PIN(I) || BAD_CS_PIN(J) || BAD_CS_PIN(K) \ - || BAD_CS_PIN(U) || BAD_CS_PIN(V) || BAD_CS_PIN(W) \ + #if BAD_CS_PIN(X) || BAD_CS_PIN(Y) || BAD_CS_PIN(Z) || BAD_CS_PIN(I) || BAD_CS_PIN(J) || BAD_CS_PIN(K) || BAD_CS_PIN(U) || BAD_CS_PIN(V) || BAD_CS_PIN(W) \ + || BAD_CS_PIN(X2) || BAD_CS_PIN(Y2) || BAD_CS_PIN(Z2) || BAD_CS_PIN(Z3) || BAD_CS_PIN(Z4) \ || BAD_CS_PIN(E0) || BAD_CS_PIN(E1) || BAD_CS_PIN(E2) || BAD_CS_PIN(E3) || BAD_CS_PIN(E4) || BAD_CS_PIN(E5) || BAD_CS_PIN(E6) || BAD_CS_PIN(E7) #error "All chained TMC drivers must use the same CS pin." #endif diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 82aadf7d77..c7773eaabc 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -95,46 +95,40 @@ #warning "Note: Auto-assigned X2_CS_PIN to an unused En_CS_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #if AUTO_ASSIGNED_X2_DIAG - #if X2_USE_ENDSTOP == _XMIN_ - #warning "Note: Auto-assigned X2_DIAG_PIN to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _XMAX_ - #warning "Note: Auto-assigned X2_DIAG_PIN to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _XSTOP_ - #warning "Note: Auto-assigned X2_DIAG_PIN to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _YMIN_ - #warning "Note: Auto-assigned X2_DIAG_PIN to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _YMAX_ - #warning "Note: Auto-assigned X2_DIAG_PIN to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _YSTOP_ - #warning "Note: Auto-assigned X2_DIAG_PIN to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _ZMIN_ - #warning "Note: Auto-assigned X2_DIAG_PIN to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _ZMAX_ - #warning "Note: Auto-assigned X2_DIAG_PIN to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _ZSTOP_ - #warning "Note: Auto-assigned X2_DIAG_PIN to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _XDIAG_ - #warning "Note: Auto-assigned X2_DIAG_PIN to X_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _YDIAG_ - #warning "Note: Auto-assigned X2_DIAG_PIN to Y_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _ZDIAG_ - #warning "Note: Auto-assigned X2_DIAG_PIN to Z_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _E0DIAG_ - #warning "Note: Auto-assigned X2_DIAG_PIN to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _E1DIAG_ - #warning "Note: Auto-assigned X2_DIAG_PIN to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _E2DIAG_ - #warning "Note: Auto-assigned X2_DIAG_PIN to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _E3DIAG_ - #warning "Note: Auto-assigned X2_DIAG_PIN to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _E4DIAG_ - #warning "Note: Auto-assigned X2_DIAG_PIN to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _E5DIAG_ - #warning "Note: Auto-assigned X2_DIAG_PIN to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _E6DIAG_ - #warning "Note: Auto-assigned X2_DIAG_PIN to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif X2_USE_ENDSTOP == _E7DIAG_ - #warning "Note: Auto-assigned X2_DIAG_PIN to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #if X2_STOP_PIN == X_MIN_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == X_MAX_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == X_STOP_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == Y_MIN_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == Y_MAX_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == Y_STOP_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == Z_MIN_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == Z_MAX_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == Z_STOP_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == E0_DIAG_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == E1_DIAG_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == E2_DIAG_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == E3_DIAG_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == E4_DIAG_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == E5_DIAG_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == E6_DIAG_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif X2_STOP_PIN == E7_DIAG_PIN + #warning "Note: Auto-assigned X2 sensorless endstop to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #endif #if AUTO_ASSIGNED_Y2_STEPPER @@ -153,46 +147,40 @@ #warning "Note: Auto-assigned Y2_CS_PIN to an unused En_CS_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #if AUTO_ASSIGNED_Y2_DIAG - #if Y2_USE_ENDSTOP == _XMIN_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _XMAX_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _XSTOP_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _YMIN_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _YMAX_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _YSTOP_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _ZMIN_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _ZMAX_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _ZSTOP_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _XDIAG_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to X_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _YDIAG_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to Y_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _ZDIAG_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to Z_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _E0DIAG_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _E1DIAG_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _E2DIAG_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _E3DIAG_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _E4DIAG_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _E5DIAG_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _E6DIAG_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Y2_USE_ENDSTOP == _E7DIAG_ - #warning "Note: Auto-assigned Y2_DIAG_PIN to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #if Y2_USE_ENDSTOP == X_MIN_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_STOP_PIN == X_MAX_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_STOP_PIN == X_STOP_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_USE_ENDSTOP == Y_MIN_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_STOP_PIN == Y_MAX_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_STOP_PIN == Y_STOP_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_USE_ENDSTOP == Z_MIN_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_STOP_PIN == Z_MAX_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_STOP_PIN == Z_STOP_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_STOP_PIN == E0_DIAG_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_STOP_PIN == E1_DIAG_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_STOP_PIN == E2_DIAG_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_STOP_PIN == E3_DIAG_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_STOP_PIN == E4_DIAG_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_STOP_PIN == E5_DIAG_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_STOP_PIN == E6_DIAG_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Y2_STOP_PIN == E7_DIAG_PIN + #warning "Note: Auto-assigned Y2 sensorless endstop to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #endif #if AUTO_ASSIGNED_Z2_STEPPER @@ -211,46 +199,40 @@ #warning "Note: Auto-assigned Z2_CS_PIN to an unused En_CS_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #if AUTO_ASSIGNED_Z2_DIAG - #if Z2_USE_ENDSTOP == _XMIN_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _XMAX_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _XSTOP_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _YMIN_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _YMAX_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _YSTOP_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _ZMIN_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _ZMAX_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _ZSTOP_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _XDIAG_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to X_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _YDIAG_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to Y_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _ZDIAG_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to Z_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _E0DIAG_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _E1DIAG_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _E2DIAG_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _E3DIAG_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _E4DIAG_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _E5DIAG_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _E6DIAG_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z2_USE_ENDSTOP == _E7DIAG_ - #warning "Note: Auto-assigned Z2_DIAG_PIN to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #if Z2_USE_ENDSTOP == X_MIN_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_STOP_PIN == X_MAX_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_STOP_PIN == X_STOP_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_USE_ENDSTOP == Y_MIN_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_STOP_PIN == Y_MAX_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_STOP_PIN == Y_STOP_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_USE_ENDSTOP == Z_MIN_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_STOP_PIN == Z_MAX_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_STOP_PIN == Z_STOP_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_STOP_PIN == E0_DIAG_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_STOP_PIN == E1_DIAG_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_STOP_PIN == E2_DIAG_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_STOP_PIN == E3_DIAG_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_STOP_PIN == E4_DIAG_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_STOP_PIN == E5_DIAG_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_STOP_PIN == E6_DIAG_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z2_STOP_PIN == E7_DIAG_PIN + #warning "Note: Auto-assigned Z2 sensorless endstop to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #endif #if AUTO_ASSIGNED_Z3_STEPPER @@ -269,46 +251,40 @@ #warning "Note: Auto-assigned Z3_MS3_PIN to an unused En_MS3_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #if AUTO_ASSIGNED_Z3_DIAG - #if Z3_USE_ENDSTOP == _XMIN_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _XMAX_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _XSTOP_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _YMIN_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _YMAX_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _YSTOP_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _ZMIN_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _ZMAX_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _ZSTOP_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _XDIAG_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to X_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _YDIAG_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to Y_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _ZDIAG_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to Z_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _E0DIAG_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _E1DIAG_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _E2DIAG_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _E3DIAG_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _E4DIAG_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _E5DIAG_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _E6DIAG_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z3_USE_ENDSTOP == _E7DIAG_ - #warning "Note: Auto-assigned Z3_DIAG_PIN to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #if Z3_USE_ENDSTOP == X_MIN_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_STOP_PIN == X_MAX_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_STOP_PIN == X_STOP_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_USE_ENDSTOP == Y_MIN_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_STOP_PIN == Y_MAX_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_STOP_PIN == Y_STOP_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_USE_ENDSTOP == Z_MIN_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_STOP_PIN == Z_MAX_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_STOP_PIN == Z_STOP_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_STOP_PIN == E0_DIAG_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_STOP_PIN == E1_DIAG_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_STOP_PIN == E2_DIAG_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_STOP_PIN == E3_DIAG_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_STOP_PIN == E4_DIAG_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_STOP_PIN == E5_DIAG_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_STOP_PIN == E6_DIAG_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z3_STOP_PIN == E7_DIAG_PIN + #warning "Note: Auto-assigned Z3 sensorless endstop to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #endif #if AUTO_ASSIGNED_Z4_STEPPER @@ -327,46 +303,40 @@ #warning "Note: Auto-assigned Z4_MS3_PIN to an unused En_MS3_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #if AUTO_ASSIGNED_Z4_DIAG - #if Z4_USE_ENDSTOP == _XMIN_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _XMAX_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _XSTOP_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _YMIN_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _YMAX_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _YSTOP_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _ZMIN_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _ZMAX_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _ZSTOP_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _XDIAG_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to X_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _YDIAG_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to Y_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _ZDIAG_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to Z_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _E0DIAG_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _E1DIAG_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _E2DIAG_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _E3DIAG_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _E4DIAG_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _E5DIAG_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _E6DIAG_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif Z4_USE_ENDSTOP == _E7DIAG_ - #warning "Note: Auto-assigned Z4_DIAG_PIN to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #if Z4_USE_ENDSTOP == X_MIN_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_STOP_PIN == X_MAX_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_STOP_PIN == X_STOP_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_USE_ENDSTOP == Y_MIN_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_STOP_PIN == Y_MAX_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_STOP_PIN == Y_STOP_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_USE_ENDSTOP == Z_MIN_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_STOP_PIN == Z_MAX_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_STOP_PIN == Z_STOP_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_STOP_PIN == E0_DIAG_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_STOP_PIN == E1_DIAG_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_STOP_PIN == E2_DIAG_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_STOP_PIN == E3_DIAG_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_STOP_PIN == E4_DIAG_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_STOP_PIN == E5_DIAG_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_STOP_PIN == E6_DIAG_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif Z4_STOP_PIN == E7_DIAG_PIN + #warning "Note: Auto-assigned Z4 sensorless endstop to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #endif #if AUTO_ASSIGNED_I_STEPPER @@ -385,46 +355,40 @@ #warning "Note: Auto-assigned I_MS3_PIN to an unused En_MS3_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #if AUTO_ASSIGNED_I_DIAG - #if I_USE_ENDSTOP == _XMIN_ - #warning "Note: Auto-assigned I_DIAG_PIN to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _XMAX_ - #warning "Note: Auto-assigned I_DIAG_PIN to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _XSTOP_ - #warning "Note: Auto-assigned I_DIAG_PIN to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _YMIN_ - #warning "Note: Auto-assigned I_DIAG_PIN to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _YMAX_ - #warning "Note: Auto-assigned I_DIAG_PIN to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _YSTOP_ - #warning "Note: Auto-assigned I_DIAG_PIN to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _ZMIN_ - #warning "Note: Auto-assigned I_DIAG_PIN to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _ZMAX_ - #warning "Note: Auto-assigned I_DIAG_PIN to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _ZSTOP_ - #warning "Note: Auto-assigned I_DIAG_PIN to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _XDIAG_ - #warning "Note: Auto-assigned I_DIAG_PIN to X_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _YDIAG_ - #warning "Note: Auto-assigned I_DIAG_PIN to Y_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _ZDIAG_ - #warning "Note: Auto-assigned I_DIAG_PIN to Z_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _E0DIAG_ - #warning "Note: Auto-assigned I_DIAG_PIN to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _E1DIAG_ - #warning "Note: Auto-assigned I_DIAG_PIN to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _E2DIAG_ - #warning "Note: Auto-assigned I_DIAG_PIN to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _E3DIAG_ - #warning "Note: Auto-assigned I_DIAG_PIN to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _E4DIAG_ - #warning "Note: Auto-assigned I_DIAG_PIN to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _E5DIAG_ - #warning "Note: Auto-assigned I_DIAG_PIN to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _E6DIAG_ - #warning "Note: Auto-assigned I_DIAG_PIN to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif I_USE_ENDSTOP == _E7DIAG_ - #warning "Note: Auto-assigned I_DIAG_PIN to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #if I_STOP_PIN == X_MIN_PIN + #warning "Note: Auto-assigned I sensorless endstop to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == X_MAX_PIN + #warning "Note: Auto-assigned I sensorless endstop to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == X_STOP_PIN + #warning "Note: Auto-assigned I sensorless endstop to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == Y_MIN_PIN + #warning "Note: Auto-assigned I sensorless endstop to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == Y_MAX_PIN + #warning "Note: Auto-assigned I sensorless endstop to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == Y_STOP_PIN + #warning "Note: Auto-assigned I sensorless endstop to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == Z_MIN_PIN + #warning "Note: Auto-assigned I sensorless endstop to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == Z_MAX_PIN + #warning "Note: Auto-assigned I sensorless endstop to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == Z_STOP_PIN + #warning "Note: Auto-assigned I sensorless endstop to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == E0_DIAG_PIN + #warning "Note: Auto-assigned I sensorless endstop to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == E1_DIAG_PIN + #warning "Note: Auto-assigned I sensorless endstop to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == E2_DIAG_PIN + #warning "Note: Auto-assigned I sensorless endstop to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == E3_DIAG_PIN + #warning "Note: Auto-assigned I sensorless endstop to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == E4_DIAG_PIN + #warning "Note: Auto-assigned I sensorless endstop to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == E5_DIAG_PIN + #warning "Note: Auto-assigned I sensorless endstop to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == E6_DIAG_PIN + #warning "Note: Auto-assigned I sensorless endstop to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif I_STOP_PIN == E7_DIAG_PIN + #warning "Note: Auto-assigned I sensorless endstop to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #endif #if AUTO_ASSIGNED_J_STEPPER @@ -443,46 +407,40 @@ #warning "Note: Auto-assigned J_MS3_PIN to an unused En_MS3_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #if AUTO_ASSIGNED_J_DIAG - #if J_USE_ENDSTOP == _XMIN_ - #warning "Note: Auto-assigned J_DIAG_PIN to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _XMAX_ - #warning "Note: Auto-assigned J_DIAG_PIN to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _XSTOP_ - #warning "Note: Auto-assigned J_DIAG_PIN to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _YMIN_ - #warning "Note: Auto-assigned J_DIAG_PIN to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _YMAX_ - #warning "Note: Auto-assigned J_DIAG_PIN to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _YSTOP_ - #warning "Note: Auto-assigned J_DIAG_PIN to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _ZMIN_ - #warning "Note: Auto-assigned J_DIAG_PIN to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _ZMAX_ - #warning "Note: Auto-assigned J_DIAG_PIN to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _ZSTOP_ - #warning "Note: Auto-assigned J_DIAG_PIN to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _XDIAG_ - #warning "Note: Auto-assigned J_DIAG_PIN to X_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _YDIAG_ - #warning "Note: Auto-assigned J_DIAG_PIN to Y_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _ZDIAG_ - #warning "Note: Auto-assigned J_DIAG_PIN to Z_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _E0DIAG_ - #warning "Note: Auto-assigned J_DIAG_PIN to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _E1DIAG_ - #warning "Note: Auto-assigned J_DIAG_PIN to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _E2DIAG_ - #warning "Note: Auto-assigned J_DIAG_PIN to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _E3DIAG_ - #warning "Note: Auto-assigned J_DIAG_PIN to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _E4DIAG_ - #warning "Note: Auto-assigned J_DIAG_PIN to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _E5DIAG_ - #warning "Note: Auto-assigned J_DIAG_PIN to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _E6DIAG_ - #warning "Note: Auto-assigned J_DIAG_PIN to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif J_USE_ENDSTOP == _E7DIAG_ - #warning "Note: Auto-assigned J_DIAG_PIN to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #if J_STOP_PIN == X_MIN_PIN + #warning "Note: Auto-assigned J sensorless endstop to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == X_MAX_PIN + #warning "Note: Auto-assigned J sensorless endstop to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == X_STOP_PIN + #warning "Note: Auto-assigned J sensorless endstop to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == Y_MIN_PIN + #warning "Note: Auto-assigned J sensorless endstop to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == Y_MAX_PIN + #warning "Note: Auto-assigned J sensorless endstop to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == Y_STOP_PIN + #warning "Note: Auto-assigned J sensorless endstop to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == Z_MIN_PIN + #warning "Note: Auto-assigned J sensorless endstop to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == Z_MAX_PIN + #warning "Note: Auto-assigned J sensorless endstop to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == Z_STOP_PIN + #warning "Note: Auto-assigned J sensorless endstop to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == E0_DIAG_PIN + #warning "Note: Auto-assigned J sensorless endstop to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == E1_DIAG_PIN + #warning "Note: Auto-assigned J sensorless endstop to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == E2_DIAG_PIN + #warning "Note: Auto-assigned J sensorless endstop to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == E3_DIAG_PIN + #warning "Note: Auto-assigned J sensorless endstop to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == E4_DIAG_PIN + #warning "Note: Auto-assigned J sensorless endstop to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == E5_DIAG_PIN + #warning "Note: Auto-assigned J sensorless endstop to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == E6_DIAG_PIN + #warning "Note: Auto-assigned J sensorless endstop to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif J_STOP_PIN == E7_DIAG_PIN + #warning "Note: Auto-assigned J sensorless endstop to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #endif #if AUTO_ASSIGNED_K_STEPPER @@ -501,46 +459,40 @@ #warning "Note: Auto-assigned K_MS3_PIN to an unused En_MS3_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #if AUTO_ASSIGNED_K_DIAG - #if K_USE_ENDSTOP == _XMIN_ - #warning "Note: Auto-assigned K_DIAG_PIN to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _XMAX_ - #warning "Note: Auto-assigned K_DIAG_PIN to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _XSTOP_ - #warning "Note: Auto-assigned K_DIAG_PIN to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _YMIN_ - #warning "Note: Auto-assigned K_DIAG_PIN to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _YMAX_ - #warning "Note: Auto-assigned K_DIAG_PIN to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _YSTOP_ - #warning "Note: Auto-assigned K_DIAG_PIN to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _ZMIN_ - #warning "Note: Auto-assigned K_DIAG_PIN to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _ZMAX_ - #warning "Note: Auto-assigned K_DIAG_PIN to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _ZSTOP_ - #warning "Note: Auto-assigned K_DIAG_PIN to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _XDIAG_ - #warning "Note: Auto-assigned K_DIAG_PIN to X_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _YDIAG_ - #warning "Note: Auto-assigned K_DIAG_PIN to Y_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _ZDIAG_ - #warning "Note: Auto-assigned K_DIAG_PIN to Z_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _E0DIAG_ - #warning "Note: Auto-assigned K_DIAG_PIN to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _E1DIAG_ - #warning "Note: Auto-assigned K_DIAG_PIN to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _E2DIAG_ - #warning "Note: Auto-assigned K_DIAG_PIN to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _E3DIAG_ - #warning "Note: Auto-assigned K_DIAG_PIN to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _E4DIAG_ - #warning "Note: Auto-assigned K_DIAG_PIN to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _E5DIAG_ - #warning "Note: Auto-assigned K_DIAG_PIN to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _E6DIAG_ - #warning "Note: Auto-assigned K_DIAG_PIN to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _E7DIAG_ - #warning "Note: Auto-assigned K_DIAG_PIN to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #if K_STOP_PIN == X_MIN_PIN + #warning "Note: Auto-assigned K sensorless endstop to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == X_MAX_PIN + #warning "Note: Auto-assigned K sensorless endstop to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == X_STOP_PIN + #warning "Note: Auto-assigned K sensorless endstop to X_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == Y_MIN_PIN + #warning "Note: Auto-assigned K sensorless endstop to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == Y_MAX_PIN + #warning "Note: Auto-assigned K sensorless endstop to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == Y_STOP_PIN + #warning "Note: Auto-assigned K sensorless endstop to Y_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == Z_MIN_PIN + #warning "Note: Auto-assigned K sensorless endstop to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == Z_MAX_PIN + #warning "Note: Auto-assigned K sensorless endstop to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == Z_STOP_PIN + #warning "Note: Auto-assigned K sensorless endstop to Z_STOP_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == E0_DIAG_PIN + #warning "Note: Auto-assigned K sensorless endstop to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == E1_DIAG_PIN + #warning "Note: Auto-assigned K sensorless endstop to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == E2_DIAG_PIN + #warning "Note: Auto-assigned K sensorless endstop to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == E3_DIAG_PIN + #warning "Note: Auto-assigned K sensorless endstop to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == E4_DIAG_PIN + #warning "Note: Auto-assigned K sensorless endstop to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == E5_DIAG_PIN + #warning "Note: Auto-assigned K sensorless endstop to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == E6_DIAG_PIN + #warning "Note: Auto-assigned K sensorless endstop to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == E7_DIAG_PIN + #warning "Note: Auto-assigned K sensorless endstop to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #endif @@ -560,40 +512,34 @@ #warning "Note: Auto-assigned U_MS3_PIN to an unused En_MS3_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #if AUTO_ASSIGNED_U_DIAG - #if U_USE_ENDSTOP == _XMIN_ - #warning "Note: Auto-assigned U_DIAG_PIN to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _XMAX_ - #warning "Note: Auto-assigned U_DIAG_PIN to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif K_USE_ENDSTOP == _YMIN_ - #warning "Note: Auto-assigned U_DIAG_PIN to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _YMAX_ - #warning "Note: Auto-assigned U_DIAG_PIN to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _ZMIN_ - #warning "Note: Auto-assigned U_DIAG_PIN to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _ZMAX_ - #warning "Note: Auto-assigned U_DIAG_PIN to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _XDIAG_ - #warning "Note: Auto-assigned U_DIAG_PIN to X_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _YDIAG_ - #warning "Note: Auto-assigned U_DIAG_PIN to Y_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _ZDIAG_ - #warning "Note: Auto-assigned U_DIAG_PIN to Z_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _E0DIAG_ - #warning "Note: Auto-assigned U_DIAG_PIN to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _E1DIAG_ - #warning "Note: Auto-assigned U_DIAG_PIN to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _E2DIAG_ - #warning "Note: Auto-assigned U_DIAG_PIN to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _E3DIAG_ - #warning "Note: Auto-assigned U_DIAG_PIN to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _E4DIAG_ - #warning "Note: Auto-assigned U_DIAG_PIN to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _E5DIAG_ - #warning "Note: Auto-assigned U_DIAG_PIN to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _E6DIAG_ - #warning "Note: Auto-assigned U_DIAG_PIN to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif U_USE_ENDSTOP == _E7DIAG_ - #warning "Note: Auto-assigned U_DIAG_PIN to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #if U_STOP_PIN == X_MIN_PIN + #warning "Note: Auto-assigned U sensorless endstop to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif U_STOP_PIN == X_MAX_PIN + #warning "Note: Auto-assigned U sensorless endstop to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif K_STOP_PIN == Y_MIN_PIN + #warning "Note: Auto-assigned U sensorless endstop to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif U_STOP_PIN == Y_MAX_PIN + #warning "Note: Auto-assigned U sensorless endstop to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif U_STOP_PIN == Z_MIN_PIN + #warning "Note: Auto-assigned U sensorless endstop to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif U_STOP_PIN == Z_MAX_PIN + #warning "Note: Auto-assigned U sensorless endstop to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif U_STOP_PIN == E0_DIAG_PIN + #warning "Note: Auto-assigned U sensorless endstop to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif U_STOP_PIN == E1_DIAG_PIN + #warning "Note: Auto-assigned U sensorless endstop to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif U_STOP_PIN == E2_DIAG_PIN + #warning "Note: Auto-assigned U sensorless endstop to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif U_STOP_PIN == E3_DIAG_PIN + #warning "Note: Auto-assigned U sensorless endstop to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif U_STOP_PIN == E4_DIAG_PIN + #warning "Note: Auto-assigned U sensorless endstop to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif U_STOP_PIN == E5_DIAG_PIN + #warning "Note: Auto-assigned U sensorless endstop to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif U_STOP_PIN == E6_DIAG_PIN + #warning "Note: Auto-assigned U sensorless endstop to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif U_STOP_PIN == E7_DIAG_PIN + #warning "Note: Auto-assigned U sensorless endstop to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #endif #if AUTO_ASSIGNED_V_STEPPER @@ -612,40 +558,34 @@ #warning "Note: Auto-assigned V_MS3_PIN to an unused En_MS3_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #if AUTO_ASSIGNED_V_DIAG - #if V_USE_ENDSTOP == _XMIN_ - #warning "Note: Auto-assigned V_DIAG_PIN to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _XMAX_ - #warning "Note: Auto-assigned V_DIAG_PIN to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _YMIN_ - #warning "Note: Auto-assigned V_DIAG_PIN to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _YMAX_ - #warning "Note: Auto-assigned V_DIAG_PIN to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _ZMIN_ - #warning "Note: Auto-assigned V_DIAG_PIN to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _ZMAX_ - #warning "Note: Auto-assigned V_DIAG_PIN to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _XDIAG_ - #warning "Note: Auto-assigned V_DIAG_PIN to X_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _YDIAG_ - #warning "Note: Auto-assigned V_DIAG_PIN to Y_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _ZDIAG_ - #warning "Note: Auto-assigned V_DIAG_PIN to Z_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _E0DIAG_ - #warning "Note: Auto-assigned V_DIAG_PIN to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _E1DIAG_ - #warning "Note: Auto-assigned V_DIAG_PIN to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _E2DIAG_ - #warning "Note: Auto-assigned V_DIAG_PIN to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _E3DIAG_ - #warning "Note: Auto-assigned V_DIAG_PIN to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _E4DIAG_ - #warning "Note: Auto-assigned V_DIAG_PIN to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _E5DIAG_ - #warning "Note: Auto-assigned V_DIAG_PIN to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _E6DIAG_ - #warning "Note: Auto-assigned V_DIAG_PIN to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif V_USE_ENDSTOP == _E7DIAG_ - #warning "Note: Auto-assigned V_DIAG_PIN to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #if V_STOP_PIN == X_MIN_PIN + #warning "Note: Auto-assigned V sensorless endstop to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif V_STOP_PIN == X_MAX_PIN + #warning "Note: Auto-assigned V sensorless endstop to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif V_STOP_PIN == Y_MIN_PIN + #warning "Note: Auto-assigned V sensorless endstop to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif V_STOP_PIN == Y_MAX_PIN + #warning "Note: Auto-assigned V sensorless endstop to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif V_STOP_PIN == Z_MIN_PIN + #warning "Note: Auto-assigned V sensorless endstop to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif V_STOP_PIN == Z_MAX_PIN + #warning "Note: Auto-assigned V sensorless endstop to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif V_STOP_PIN == E0_DIAG_PIN + #warning "Note: Auto-assigned V sensorless endstop to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif V_STOP_PIN == E1_DIAG_PIN + #warning "Note: Auto-assigned V sensorless endstop to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif V_STOP_PIN == E2_DIAG_PIN + #warning "Note: Auto-assigned V sensorless endstop to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif V_STOP_PIN == E3_DIAG_PIN + #warning "Note: Auto-assigned V sensorless endstop to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif V_STOP_PIN == E4_DIAG_PIN + #warning "Note: Auto-assigned V sensorless endstop to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif V_STOP_PIN == E5_DIAG_PIN + #warning "Note: Auto-assigned V sensorless endstop to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif V_STOP_PIN == E6_DIAG_PIN + #warning "Note: Auto-assigned V sensorless endstop to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif V_STOP_PIN == E7_DIAG_PIN + #warning "Note: Auto-assigned V sensorless endstop to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #endif #if AUTO_ASSIGNED_W_STEPPER @@ -664,40 +604,34 @@ #warning "Note: Auto-assigned W_MS3_PIN to an unused En_MS3_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #if AUTO_ASSIGNED_W_DIAG - #if W_USE_ENDSTOP == _XMIN_ - #warning "Note: Auto-assigned W_DIAG_PIN to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _XMAX_ - #warning "Note: Auto-assigned W_DIAG_PIN to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _YMIN_ - #warning "Note: Auto-assigned W_DIAG_PIN to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _YMAX_ - #warning "Note: Auto-assigned W_DIAG_PIN to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _ZMIN_ - #warning "Note: Auto-assigned W_DIAG_PIN to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _ZMAX_ - #warning "Note: Auto-assigned W_DIAG_PIN to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _XDIAG_ - #warning "Note: Auto-assigned W_DIAG_PIN to X_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _YDIAG_ - #warning "Note: Auto-assigned W_DIAG_PIN to Y_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _ZDIAG_ - #warning "Note: Auto-assigned W_DIAG_PIN to Z_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _E0DIAG_ - #warning "Note: Auto-assigned W_DIAG_PIN to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _E1DIAG_ - #warning "Note: Auto-assigned W_DIAG_PIN to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _E2DIAG_ - #warning "Note: Auto-assigned W_DIAG_PIN to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _E3DIAG_ - #warning "Note: Auto-assigned W_DIAG_PIN to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _E4DIAG_ - #warning "Note: Auto-assigned W_DIAG_PIN to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _E5DIAG_ - #warning "Note: Auto-assigned W_DIAG_PIN to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _E6DIAG_ - #warning "Note: Auto-assigned W_DIAG_PIN to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" - #elif W_USE_ENDSTOP == _E7DIAG_ - #warning "Note: Auto-assigned W_DIAG_PIN to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #if W_STOP_PIN == X_MIN_PIN + #warning "Note: Auto-assigned W sensorless endstop to X_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif W_STOP_PIN == X_MAX_PIN + #warning "Note: Auto-assigned W sensorless endstop to X_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif W_STOP_PIN == Y_MIN_PIN + #warning "Note: Auto-assigned W sensorless endstop to Y_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif W_STOP_PIN == Y_MAX_PIN + #warning "Note: Auto-assigned W sensorless endstop to Y_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif W_STOP_PIN == Z_MIN_PIN + #warning "Note: Auto-assigned W sensorless endstop to Z_MIN_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif W_STOP_PIN == Z_MAX_PIN + #warning "Note: Auto-assigned W sensorless endstop to Z_MAX_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif W_STOP_PIN == E0_DIAG_PIN + #warning "Note: Auto-assigned W sensorless endstop to E0_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif W_STOP_PIN == E1_DIAG_PIN + #warning "Note: Auto-assigned W sensorless endstop to E1_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif W_STOP_PIN == E2_DIAG_PIN + #warning "Note: Auto-assigned W sensorless endstop to E2_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif W_STOP_PIN == E3_DIAG_PIN + #warning "Note: Auto-assigned W sensorless endstop to E3_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif W_STOP_PIN == E4_DIAG_PIN + #warning "Note: Auto-assigned W sensorless endstop to E4_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif W_STOP_PIN == E5_DIAG_PIN + #warning "Note: Auto-assigned W sensorless endstop to E5_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif W_STOP_PIN == E6_DIAG_PIN + #warning "Note: Auto-assigned W sensorless endstop to E6_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + #elif W_STOP_PIN == E7_DIAG_PIN + #warning "Note: Auto-assigned W sensorless endstop to E7_DIAG_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #endif diff --git a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp index 96ee732678..055f26c058 100644 --- a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp +++ b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp @@ -72,9 +72,9 @@ void ESDiagClass::Draw() { DWINUI::Draw_Button(BTN_Continue, 86, 250); DWINUI::cursor.y = 80; #define ES_LABEL(S) draw_es_label(F(STR_##S)) - TERN_(HAS_X_MIN, ES_LABEL(X_MIN)); TERN_(HAS_X_MAX, ES_LABEL(X_MAX)); - TERN_(HAS_Y_MIN, ES_LABEL(Y_MIN)); TERN_(HAS_Y_MAX, ES_LABEL(Y_MAX)); - TERN_(HAS_Z_MIN, ES_LABEL(Z_MIN)); TERN_(HAS_Z_MAX, ES_LABEL(Z_MAX)); + TERN_(HAS_X_MIN, ES_LABEL(X_MIN)); TERN_(HAS_X_MAX, ES_LABEL(X_MAX)); + TERN_(HAS_Y_MIN, ES_LABEL(Y_MIN)); TERN_(HAS_Y_MAX, ES_LABEL(Y_MAX)); + TERN_(HAS_Z_MIN_PIN, ES_LABEL(Z_MIN)); TERN_(HAS_Z_MAX, ES_LABEL(Z_MAX)); TERN_(HAS_FILAMENT_SENSOR, draw_es_label(F(STR_FILAMENT))); Update(); } @@ -82,9 +82,9 @@ void ESDiagClass::Draw() { void ESDiagClass::Update() { DWINUI::cursor.y = 80; #define ES_REPORT(S) draw_es_state(READ(S##_PIN) == S##_ENDSTOP_HIT_STATE) - TERN_(HAS_X_MIN, ES_REPORT(X_MIN)); TERN_(HAS_X_MAX, ES_REPORT(X_MAX)); - TERN_(HAS_Y_MIN, ES_REPORT(Y_MIN)); TERN_(HAS_Y_MAX, ES_REPORT(Y_MAX)); - TERN_(HAS_Z_MIN, ES_REPORT(Z_MIN)); TERN_(HAS_Z_MAX, ES_REPORT(Z_MAX)); + TERN_(HAS_X_MIN, ES_REPORT(X_MIN)); TERN_(HAS_X_MAX, ES_REPORT(X_MAX)); + TERN_(HAS_Y_MIN, ES_REPORT(Y_MIN)); TERN_(HAS_Y_MAX, ES_REPORT(Y_MAX)); + TERN_(HAS_Z_MIN_PIN, ES_REPORT(Z_MIN)); TERN_(HAS_Z_MAX, ES_REPORT(Z_MAX)); TERN_(HAS_FILAMENT_SENSOR, draw_es_state(READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE)); DWIN_UpdateLCD(); } diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp index b52904fe8f..46d4998591 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp @@ -79,7 +79,7 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) { #else PIN_DISABLED(3, 3, PSTR(STR_Y_MIN), Y_MIN) #endif - #if HAS_Z_MIN + #if HAS_Z_MIN_PIN PIN_ENABLED (5, 3, PSTR(STR_Z_MIN), Z_MIN, Z_MIN_ENDSTOP_HIT_STATE) #else PIN_DISABLED(5, 3, PSTR(STR_Z_MIN), Z_MIN) diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp index 45a54f6177..20f069aa49 100644 --- a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp +++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp @@ -87,12 +87,12 @@ #if PIN_EXISTS(MT_DET_2) mt_det2_sta = (READ(MT_DET_2_PIN) == LOW); #endif - TERN_(HAS_X_ENDSTOP, endstopx1_sta = ESTATE(TERN(HAS_X_MIN, X_MIN, X_MAX))); - TERN_(HAS_X2_ENDSTOP, endstopx2_sta = ESTATE(TERN(HAS_X2_MIN, X2_MIN, X2_MAX))); - TERN_(HAS_Y_ENDSTOP, endstopy1_sta = ESTATE(TERN(HAS_Y_MIN, Y_MIN, Y_MAX))); - TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = ESTATE(TERN(HAS_Y2_MIN, Y2_MIN, Y2_MAX))); - TERN_(HAS_Z_ENDSTOP, endstopz1_sta = ESTATE(TERN(HAS_Z_MIN, Z_MIN, Z_MAX))); - TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = ESTATE(TERN(HAS_Z2_MIN, Z2_MIN, Z2_MAX))); + TERN_(HAS_X_ENDSTOP, endstopx1_sta = ESTATE(TERN(HAS_X_MIN, X_MIN, X_MAX))); + TERN_(HAS_X2_ENDSTOP, endstopx2_sta = ESTATE(TERN(HAS_X2_MIN, X2_MIN, X2_MAX))); + TERN_(HAS_Y_ENDSTOP, endstopy1_sta = ESTATE(TERN(HAS_Y_MIN, Y_MIN, Y_MAX))); + TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = ESTATE(TERN(HAS_Y2_MIN, Y2_MIN, Y2_MAX))); + TERN_(HAS_Z_ENDSTOP, endstopz1_sta = ESTATE(TERN(HAS_Z_MIN_PIN, Z_MIN, Z_MAX))); + TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = ESTATE(TERN(HAS_Z2_MIN, Z2_MIN, Z2_MAX))); } void test_gpio_readlevel_H() { @@ -104,12 +104,12 @@ #if PIN_EXISTS(MT_DET_2) mt_det2_sta = (READ(MT_DET_2_PIN) == HIGH); #endif - TERN_(HAS_X_ENDSTOP, endstopx1_sta = !ESTATE(TERN(HAS_X_MIN, X_MIN, X_MAX))); - TERN_(HAS_X2_ENDSTOP, endstopx2_sta = !ESTATE(TERN(HAS_X2_MIN, X2_MIN, X2_MAX))); - TERN_(HAS_Y_ENDSTOP, endstopy1_sta = !ESTATE(TERN(HAS_Y_MIN, Y_MIN, Y_MAX))); - TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = !ESTATE(TERN(HAS_Y2_MIN, Y2_MIN, Y2_MAX))); - TERN_(HAS_Z_ENDSTOP, endstopz1_sta = !ESTATE(TERN(HAS_Z_MIN, Z_MIN, Z_MAX))); - TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = !ESTATE(TERN(HAS_Z2_MIN, Z2_MIN, Z2_MAX))); + TERN_(HAS_X_ENDSTOP, endstopx1_sta = !ESTATE(TERN(HAS_X_MIN, X_MIN, X_MAX))); + TERN_(HAS_X2_ENDSTOP, endstopx2_sta = !ESTATE(TERN(HAS_X2_MIN, X2_MIN, X2_MAX))); + TERN_(HAS_Y_ENDSTOP, endstopy1_sta = !ESTATE(TERN(HAS_Y_MIN, Y_MIN, Y_MAX))); + TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = !ESTATE(TERN(HAS_Y2_MIN, Y2_MIN, Y2_MAX))); + TERN_(HAS_Z_ENDSTOP, endstopz1_sta = !ESTATE(TERN(HAS_Z_MIN_PIN, Z_MIN, Z_MAX))); + TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = !ESTATE(TERN(HAS_Z2_MIN, Z2_MIN, Z2_MAX))); } #include "../../../libs/buzzer.h" diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 233d848425..ca231f1cb2 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -134,7 +134,7 @@ void Endstops::init() { #if HAS_Y2_MAX _INIT_ENDSTOP(MAX,Y,2); #endif - #if HAS_Z_MIN + #if HAS_Z_MIN_PIN _INIT_ENDSTOP(MIN,Z,); #endif #if HAS_Z_MAX @@ -598,7 +598,9 @@ void Endstops::update() { #endif #if HAS_Z_MIN && NONE(Z_SPI_SENSORLESS, Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - UPDATE_LIVE_STATE(Z, MIN); + #if HAS_Z_MIN_PIN + UPDATE_LIVE_STATE(Z, MIN); + #endif #if ENABLED(Z_MULTI_ENDSTOPS) #if HAS_Z2_MIN UPDATE_LIVE_STATE(Z2, MIN); @@ -1179,7 +1181,7 @@ void Endstops::update() { #if HAS_Y_MAX ES_GET_STATE(Y_MAX); #endif - #if HAS_Z_MIN + #if HAS_Z_MIN_PIN ES_GET_STATE(Z_MIN); #endif #if HAS_Z_MAX diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 86a36c7580..67ee0bd08d 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -65,6 +65,57 @@ #define HAS_FREE_AUX2_PINS 1 #endif +// +// Check for additional used endstop pins +// +#ifndef X_MIN_PIN + #define X_MIN_PIN 1001 +#endif +#ifndef Y_MIN_PIN + #define Y_MIN_PIN 1002 +#endif +#ifndef Z_MIN_PIN + #define Z_MIN_PIN 1003 +#endif +#ifndef X_MAX_PIN + #define X_MAX_PIN 1004 +#endif +#ifndef Y_MAX_PIN + #define Y_MAX_PIN 1005 +#endif +#ifndef Z_MAX_PIN + #define Z_MAX_PIN 1006 +#endif +#define _ENDSTOP_IS_ANY(P) (HAS_EXTRA_ENDSTOPS && (X2_STOP_PIN == P || Y2_STOP_PIN == P || Z2_STOP_PIN == P || Z3_STOP_PIN == P || Z4_STOP_PIN == P)) +#if ENABLED(DUAL_X_CARRIAGE) || _ENDSTOP_IS_ANY(X_MIN_PIN) || _ENDSTOP_IS_ANY(X_MAX_PIN) + #define NEEDS_X_MINMAX 1 +#endif +#if _ENDSTOP_IS_ANY(Y_MIN_PIN) || _ENDSTOP_IS_ANY(Y_MAX_PIN) + #define NEEDS_Y_MINMAX 1 +#endif +#if _ENDSTOP_IS_ANY(Z_MIN_PIN) || _ENDSTOP_IS_ANY(Z_MAX_PIN) || BOTH(Z_HOME_TO_MAX, Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) + #define NEEDS_Z_MINMAX 1 +#endif +#undef _ENDSTOP_IS_ANY +#if X_MIN_PIN > 1000 + #undef X_MIN_PIN +#endif +#if Y_MIN_PIN > 1000 + #undef Y_MIN_PIN +#endif +#if Z_MIN_PIN > 1000 + #undef Z_MIN_PIN +#endif +#if X_MAX_PIN > 1000 + #undef X_MAX_PIN +#endif +#if Y_MAX_PIN > 1000 + #undef Y_MAX_PIN +#endif +#if Z_MAX_PIN > 1000 + #undef Z_MAX_PIN +#endif + // Test the target within the included pins file #ifdef __MARLIN_DEPS__ #define NOT_TARGET(V...) 0 diff --git a/Marlin/src/pins/pins_postprocess.h b/Marlin/src/pins/pins_postprocess.h index 9d917cec29..daf6c03aa3 100644 --- a/Marlin/src/pins/pins_postprocess.h +++ b/Marlin/src/pins/pins_postprocess.h @@ -511,8 +511,8 @@ #else #define X_STOP_PIN X_MAX_PIN #endif - #if !defined(X2_USE_ENDSTOP) && ENABLED(X_DUAL_ENDSTOPS) && PIN_EXISTS(X_STOP) - #define X2_USE_ENDSTOP _XSTOP_ + #if !defined(X2_STOP_PIN) && ENABLED(X_DUAL_ENDSTOPS) && PIN_EXISTS(X_STOP) + #define X2_STOP_PIN X_STOP_PIN #endif #endif @@ -528,8 +528,8 @@ #else #define Y_STOP_PIN Y_MAX_PIN #endif - #if !defined(Y2_USE_ENDSTOP) && ENABLED(Y_DUAL_ENDSTOPS) && PIN_EXISTS(Y_STOP) - #define Y2_USE_ENDSTOP _YSTOP_ + #if !defined(Y2_STOP_PIN) && ENABLED(Y_DUAL_ENDSTOPS) && PIN_EXISTS(Y_STOP) + #define Y2_STOP_PIN Y_STOP_PIN #endif #endif @@ -546,14 +546,14 @@ #define Z_STOP_PIN Z_MAX_PIN #endif #if ENABLED(Z_MULTI_ENDSTOPS) && PIN_EXISTS(Z_STOP) - #ifndef Z2_USE_ENDSTOP - #define Z2_USE_ENDSTOP _ZSTOP_ + #ifndef Z2_STOP_PIN + #define Z2_STOP_PIN Z_STOP_PIN #endif - #if NUM_Z_STEPPERS >= 3 && !defined(Z3_USE_ENDSTOP) - #define Z3_USE_ENDSTOP _ZSTOP_ + #if NUM_Z_STEPPERS >= 3 && !defined(Z3_STOP_PIN) + #define Z3_STOP_PIN Z_STOP_PIN #endif - #if NUM_Z_STEPPERS >= 4 && !defined(Z4_USE_ENDSTOP) - #define Z4_USE_ENDSTOP _ZSTOP_ + #if NUM_Z_STEPPERS >= 4 && !defined(Z4_STOP_PIN) + #define Z4_STOP_PIN Z_STOP_PIN #endif #endif #endif @@ -672,6 +672,10 @@ #endif #endif +// Utility macros to define extra axis pins in terms of E pins +#define __EPIN(p,q) E##p##_##q##_PIN +#define _EPIN(p,q) __EPIN(p,q) + /** * Auto-Assignment for Dual X, Dual Y, Multi-Z Steppers * @@ -680,12 +684,16 @@ * overridden in Configuration.h or Configuration_adv.h. */ -#define __PEXI(p,q) PIN_EXISTS(E##p##_##q) -#define _PEXI(p,q) __PEXI(p,q) -#define __EPIN(p,q) E##p##_##q##_PIN -#define _EPIN(p,q) __EPIN(p,q) +#define _E_DIAG_EXISTS(p) PIN_EXISTS(E##p##_DIAG) +#define E_DIAG_EXISTS(p) _E_DIAG_EXISTS(p) + +/** + * For endstop auto-assignment some pins files pre-assign MIN/MAX endstops + * to DIAG pins so those should be preferred over just using En_DIAG_PIN. + * DIAG_REMAPPED(X2, X_MIN) ... PIN_EXISTS(X_MIN) && E(X2_E_INDEX)_DIAG_PIN == X_MIN_PIN + */ #define DIAG_REMAPPED(p,q) (PIN_EXISTS(q) && _EPIN(p##_E_INDEX, DIAG) == q##_PIN) -#define _En_DIAG_(p) _E##p##_DIAG_ +#define _En_DIAG_PIN(p) E##p##_DIAG_PIN // The E0/E1 steppers are always used for Dual E #if ENABLED(E_DUAL_STEPPER_DRIVERS) @@ -697,7 +705,8 @@ #define X2_E_INDEX E_STEPPERS #endif -#if HAS_X2_STEPPER && !defined(X2_DIAG_PIN) && !defined(X2_STEP_PIN) && !PIN_EXISTS(X2_CS_PIN) +// X2 auto-assignment will use up an E stepper, but not if it's chained +#if HAS_X2_STEPPER && !defined(X2_STEP_PIN) && !PIN_EXISTS(X2_CS_PIN) #define Y2_E_INDEX INCREMENT(X2_E_INDEX) #else #define Y2_E_INDEX X2_E_INDEX @@ -751,21 +760,21 @@ // // Auto-assign pins for stallGuard sensorless homing // - #if !defined(X2_DIAG_PIN) && !defined(X2_USE_ENDSTOP) && defined(X2_STALL_SENSITIVITY) && ENABLED(X_DUAL_ENDSTOPS) && _PEXI(X2_E_INDEX, DIAG) + #if !defined(X2_STOP_PIN) && defined(X2_STALL_SENSITIVITY) && ENABLED(X_DUAL_ENDSTOPS) && E_DIAG_EXISTS(X2_E_INDEX) #if DIAG_REMAPPED(X2, X_MIN) // If already remapped in the pins file... - #define X2_USE_ENDSTOP _XMIN_ + #define X2_STOP_PIN X_MIN_PIN #elif DIAG_REMAPPED(X2, Y_MIN) - #define X2_USE_ENDSTOP _YMIN_ + #define X2_STOP_PIN Y_MIN_PIN #elif DIAG_REMAPPED(X2, Z_MIN) - #define X2_USE_ENDSTOP _ZMIN_ + #define X2_STOP_PIN Z_MIN_PIN #elif DIAG_REMAPPED(X2, X_MAX) - #define X2_USE_ENDSTOP _XMAX_ + #define X2_STOP_PIN X_MAX_PIN #elif DIAG_REMAPPED(X2, Y_MAX) - #define X2_USE_ENDSTOP _YMAX_ + #define X2_STOP_PIN Y_MAX_PIN #elif DIAG_REMAPPED(X2, Z_MAX) - #define X2_USE_ENDSTOP _ZMAX_ + #define X2_STOP_PIN Z_MAX_PIN #else // Otherwise pick the next free En_DIAG_PIN directly - #define X2_USE_ENDSTOP _En_DIAG_(X2_E_INDEX) + #define X2_STOP_PIN _En_DIAG_PIN(X2_E_INDEX) #endif #define AUTO_ASSIGNED_X2_DIAG 1 #endif @@ -784,7 +793,8 @@ #define X2_MS3_PIN -1 #endif -#if HAS_DUAL_Y_STEPPERS && !defined(Y2_DIAG_PIN) && !defined(Y2_STEP_PIN) && !PIN_EXISTS(Y2_CS_PIN) +// Y2 auto-assignment will use up an E stepper, but not if it's chained +#if HAS_DUAL_Y_STEPPERS && !defined(Y2_STEP_PIN) && !PIN_EXISTS(Y2_CS_PIN) #define Z2_E_INDEX INCREMENT(Y2_E_INDEX) #else #define Z2_E_INDEX Y2_E_INDEX @@ -835,21 +845,21 @@ #endif #endif // Auto-assign pins for stallGuard sensorless homing - #if !defined(Y2_DIAG_PIN) && !defined(Y2_USE_ENDSTOP) && defined(Y2_STALL_SENSITIVITY) && ENABLED(Y_DUAL_ENDSTOPS) && _PEXI(Y2_E_INDEX, DIAG) + #if !defined(Y2_STOP_PIN) && defined(Y2_STALL_SENSITIVITY) && ENABLED(Y_DUAL_ENDSTOPS) && E_DIAG_EXISTS(Y2_E_INDEX) #if DIAG_REMAPPED(Y2, X_MIN) - #define Y2_USE_ENDSTOP _XMIN_ + #define Y2_STOP_PIN X_MIN_PIN #elif DIAG_REMAPPED(Y2, Y_MIN) - #define Y2_USE_ENDSTOP _YMIN_ + #define Y2_STOP_PIN Y_MIN_PIN #elif DIAG_REMAPPED(Y2, Z_MIN) - #define Y2_USE_ENDSTOP _ZMIN_ + #define Y2_STOP_PIN Z_MIN_PIN #elif DIAG_REMAPPED(Y2, X_MAX) - #define Y2_USE_ENDSTOP _XMAX_ + #define Y2_STOP_PIN X_MAX_PIN #elif DIAG_REMAPPED(Y2, Y_MAX) - #define Y2_USE_ENDSTOP _YMAX_ + #define Y2_STOP_PIN Y_MAX_PIN #elif DIAG_REMAPPED(Y2, Z_MAX) - #define Y2_USE_ENDSTOP _ZMAX_ + #define Y2_STOP_PIN Z_MAX_PIN #else - #define Y2_USE_ENDSTOP _En_DIAG_(Y2_E_INDEX) + #define Y2_STOP_PIN _En_DIAG_PIN(Y2_E_INDEX) #endif #define AUTO_ASSIGNED_Y2_DIAG 1 #endif @@ -868,7 +878,8 @@ #define Y2_MS3_PIN -1 #endif -#if NUM_Z_STEPPERS >= 2 && !defined(Z2_DIAG_PIN) && !defined(Z2_STEP_PIN) && !PIN_EXISTS(Z2_CS_PIN) +// Z2 auto-assignment will use up an E stepper, but not if it's chained +#if NUM_Z_STEPPERS >= 2 && !defined(Z2_STEP_PIN) && !PIN_EXISTS(Z2_CS_PIN) #define Z3_E_INDEX INCREMENT(Z2_E_INDEX) #else #define Z3_E_INDEX Z2_E_INDEX @@ -919,21 +930,21 @@ #endif #endif // Auto-assign pins for stallGuard sensorless homing - #if !defined(Z2_DIAG_PIN) && !defined(Z2_USE_ENDSTOP) && defined(Z2_STALL_SENSITIVITY) && ENABLED(Z_MULTI_ENDSTOPS) && _PEXI(Z2_E_INDEX, DIAG) + #if !defined(Z2_STOP_PIN) && defined(Z2_STALL_SENSITIVITY) && ENABLED(Z_MULTI_ENDSTOPS) && E_DIAG_EXISTS(Z2_E_INDEX) #if DIAG_REMAPPED(Z2, X_MIN) - #define Z2_USE_ENDSTOP _XMIN_ + #define Z2_STOP_PIN X_MIN_PIN #elif DIAG_REMAPPED(Z2, Y_MIN) - #define Z2_USE_ENDSTOP _YMIN_ + #define Z2_STOP_PIN Y_MIN_PIN #elif DIAG_REMAPPED(Z2, Z_MIN) - #define Z2_USE_ENDSTOP _ZMIN_ + #define Z2_STOP_PIN Z_MIN_PIN #elif DIAG_REMAPPED(Z2, X_MAX) - #define Z2_USE_ENDSTOP _XMAX_ + #define Z2_STOP_PIN X_MAX_PIN #elif DIAG_REMAPPED(Z2, Y_MAX) - #define Z2_USE_ENDSTOP _YMAX_ + #define Z2_STOP_PIN Y_MAX_PIN #elif DIAG_REMAPPED(Z2, Z_MAX) - #define Z2_USE_ENDSTOP _ZMAX_ + #define Z2_STOP_PIN Z_MAX_PIN #else - #define Z2_USE_ENDSTOP _En_DIAG_(Z2_E_INDEX) + #define Z2_STOP_PIN _En_DIAG_PIN(Z2_E_INDEX) #endif #define AUTO_ASSIGNED_Z2_DIAG 1 #endif @@ -952,7 +963,8 @@ #define Z2_MS3_PIN -1 #endif -#if NUM_Z_STEPPERS >= 3 && !defined(Z3_DIAG_PIN) && !defined(Z3_STEP_PIN) && !PIN_EXISTS(Z3_CS_PIN) +// Z3 auto-assignment will use up an E stepper, but not if it's chained +#if NUM_Z_STEPPERS >= 3 && !defined(Z3_STEP_PIN) && !PIN_EXISTS(Z3_CS_PIN) #define Z4_E_INDEX INCREMENT(Z3_E_INDEX) #else #define Z4_E_INDEX Z3_E_INDEX @@ -1003,21 +1015,21 @@ #endif #endif // Auto-assign pins for stallGuard sensorless homing - #if !defined(Z3_DIAG_PIN) && !defined(Z3_USE_ENDSTOP) && defined(Z3_STALL_SENSITIVITY) && ENABLED(Z_MULTI_ENDSTOPS) && _PEXI(Z3_E_INDEX, DIAG) + #if !defined(Z3_STOP_PIN) && defined(Z3_STALL_SENSITIVITY) && ENABLED(Z_MULTI_ENDSTOPS) && E_DIAG_EXISTS(Z3_E_INDEX) #if DIAG_REMAPPED(Z3, X_MIN) - #define Z3_USE_ENDSTOP _XMIN_ + #define Z3_STOP_PIN X_MIN_PIN #elif DIAG_REMAPPED(Z3, Y_MIN) - #define Z3_USE_ENDSTOP _YMIN_ + #define Z3_STOP_PIN Y_MIN_PIN #elif DIAG_REMAPPED(Z3, Z_MIN) - #define Z3_USE_ENDSTOP _ZMIN_ + #define Z3_STOP_PIN Z_MIN_PIN #elif DIAG_REMAPPED(Z3, X_MAX) - #define Z3_USE_ENDSTOP _XMAX_ + #define Z3_STOP_PIN X_MAX_PIN #elif DIAG_REMAPPED(Z3, Y_MAX) - #define Z3_USE_ENDSTOP _YMAX_ + #define Z3_STOP_PIN Y_MAX_PIN #elif DIAG_REMAPPED(Z3, Z_MAX) - #define Z3_USE_ENDSTOP _ZMAX_ + #define Z3_STOP_PIN Z_MAX_PIN #else - #define Z3_USE_ENDSTOP _En_DIAG_(Z3_E_INDEX) + #define Z3_STOP_PIN _En_DIAG_PIN(Z3_E_INDEX) #endif #define AUTO_ASSIGNED_Z3_DIAG 1 #endif @@ -1036,7 +1048,8 @@ #define Z3_MS3_PIN -1 #endif -#if NUM_Z_STEPPERS >= 4 && !defined(Z4_DIAG_PIN) && !defined(Z4_STEP_PIN) && !PIN_EXISTS(Z4_CS_PIN) +// Z4 auto-assignment will use up an E stepper, but not if it's chained +#if NUM_Z_STEPPERS >= 4 && !defined(Z4_STEP_PIN) && !PIN_EXISTS(Z4_CS_PIN) #define I_E_INDEX INCREMENT(Z4_E_INDEX) #else #define I_E_INDEX Z4_E_INDEX @@ -1087,21 +1100,21 @@ #endif #endif // Auto-assign pins for stallGuard sensorless homing - #if !defined(Z4_DIAG_PIN) && !defined(Z4_USE_ENDSTOP) && defined(Z4_STALL_SENSITIVITY) && ENABLED(Z_MULTI_ENDSTOPS) && _PEXI(Z4_E_INDEX, DIAG) + #if !defined(Z4_STOP_PIN) && defined(Z4_STALL_SENSITIVITY) && ENABLED(Z_MULTI_ENDSTOPS) && E_DIAG_EXISTS(Z4_E_INDEX) #if DIAG_REMAPPED(Z4, X_MIN) - #define Z4_USE_ENDSTOP _XMIN_ + #define Z4_STOP_PIN X_MIN_PIN #elif DIAG_REMAPPED(Z4, Y_MIN) - #define Z4_USE_ENDSTOP _YMIN_ + #define Z4_STOP_PIN Y_MIN_PIN #elif DIAG_REMAPPED(Z4, Z_MIN) - #define Z4_USE_ENDSTOP _ZMIN_ + #define Z4_STOP_PIN Z_MIN_PIN #elif DIAG_REMAPPED(Z4, X_MAX) - #define Z4_USE_ENDSTOP _XMAX_ + #define Z4_STOP_PIN X_MAX_PIN #elif DIAG_REMAPPED(Z4, Y_MAX) - #define Z4_USE_ENDSTOP _YMAX_ + #define Z4_STOP_PIN Y_MAX_PIN #elif DIAG_REMAPPED(Z4, Z_MAX) - #define Z4_USE_ENDSTOP _ZMAX_ + #define Z4_STOP_PIN Z_MAX_PIN #else - #define Z4_USE_ENDSTOP _En_DIAG_(Z4_E_INDEX) + #define Z4_STOP_PIN _En_DIAG_PIN(Z4_E_INDEX) #endif #define AUTO_ASSIGNED_Z4_DIAG 1 #endif @@ -1120,7 +1133,8 @@ #define Z4_MS3_PIN -1 #endif -#if HAS_I_AXIS && !defined(I_DIAG_PIN) && !defined(I_STEP_PIN) && !PIN_EXISTS(I_CS_PIN) +// I auto-assignment will use up an E stepper, but not if it's chained +#if HAS_I_AXIS && !defined(I_STEP_PIN) && !PIN_EXISTS(I_CS_PIN) #define J_E_INDEX INCREMENT(I_E_INDEX) #else #define J_E_INDEX I_E_INDEX @@ -1171,21 +1185,21 @@ #endif #endif // Auto-assign pins for stallGuard sensorless homing - #if !defined(I_DIAG_PIN) && !defined(I_USE_ENDSTOP) && defined(I_STALL_SENSITIVITY) && _PEXI(I_E_INDEX, DIAG) + #if !defined(I_STOP_PIN) && defined(I_STALL_SENSITIVITY) && E_DIAG_EXISTS(I_E_INDEX) #if DIAG_REMAPPED(I, X_MIN) - #define I_USE_ENDSTOP _XMIN_ + #define I_STOP_PIN X_MIN_PIN #elif DIAG_REMAPPED(I, Y_MIN) - #define I_USE_ENDSTOP _YMIN_ + #define I_STOP_PIN Y_MIN_PIN #elif DIAG_REMAPPED(I, Z_MIN) - #define I_USE_ENDSTOP _ZMIN_ + #define I_STOP_PIN Z_MIN_PIN #elif DIAG_REMAPPED(I, X_MAX) - #define I_USE_ENDSTOP _XMAX_ + #define I_STOP_PIN X_MAX_PIN #elif DIAG_REMAPPED(I, Y_MAX) - #define I_USE_ENDSTOP _YMAX_ + #define I_STOP_PIN Y_MAX_PIN #elif DIAG_REMAPPED(I, Z_MAX) - #define I_USE_ENDSTOP _ZMAX_ + #define I_STOP_PIN Z_MAX_PIN #else - #define I_USE_ENDSTOP _En_DIAG_(I_E_INDEX) + #define I_STOP_PIN _En_DIAG_PIN(I_E_INDEX) #endif #define AUTO_ASSIGNED_I_DIAG 1 #endif @@ -1204,7 +1218,8 @@ #define I_MS3_PIN -1 #endif -#if HAS_J_AXIS && !defined(J_DIAG_PIN) && !defined(J_STEP_PIN) && !PIN_EXISTS(J_CS_PIN) +// J auto-assignment will use up an E stepper, but not if it's chained +#if HAS_J_AXIS && !defined(J_STEP_PIN) && !PIN_EXISTS(J_CS_PIN) #define K_E_INDEX INCREMENT(J_E_INDEX) #else #define K_E_INDEX J_E_INDEX @@ -1255,21 +1270,21 @@ #endif #endif // Auto-assign pins for stallGuard sensorless homing - #if !defined(J_DIAG_PIN) && !defined(J_USE_ENDSTOP) && defined(J_STALL_SENSITIVITY) && _PEXI(J_E_INDEX, DIAG) + #if !defined(J_STOP_PIN) && defined(J_STALL_SENSITIVITY) && E_DIAG_EXISTS(J_E_INDEX) #if DIAG_REMAPPED(J, X_MIN) - #define J_USE_ENDSTOP _XMIN_ + #define J_STOP_PIN X_MIN_PIN #elif DIAG_REMAPPED(J, Y_MIN) - #define J_USE_ENDSTOP _YMIN_ + #define J_STOP_PIN Y_MIN_PIN #elif DIAG_REMAPPED(J, Z_MIN) - #define J_USE_ENDSTOP _ZMIN_ + #define J_STOP_PIN Z_MIN_PIN #elif DIAG_REMAPPED(J, X_MAX) - #define J_USE_ENDSTOP _XMAX_ + #define J_STOP_PIN X_MAX_PIN #elif DIAG_REMAPPED(J, Y_MAX) - #define J_USE_ENDSTOP _YMAX_ + #define J_STOP_PIN Y_MAX_PIN #elif DIAG_REMAPPED(I, Z_MAX) - #define J_USE_ENDSTOP _ZMAX_ + #define J_STOP_PIN Z_MAX_PIN #else - #define J_USE_ENDSTOP _En_DIAG_(J_E_INDEX) + #define J_STOP_PIN _En_DIAG_PIN(J_E_INDEX) #endif #define AUTO_ASSIGNED_J_DIAG 1 #endif @@ -1288,7 +1303,8 @@ #define J_MS3_PIN -1 #endif -#if HAS_K_AXIS && !defined(K_DIAG_PIN) && !defined(K_STEP_PIN) && !PIN_EXISTS(K_CS_PIN) +// K auto-assignment will use up an E stepper, but not if it's chained +#if HAS_K_AXIS && !defined(K_STEP_PIN) && !PIN_EXISTS(K_CS_PIN) #define U_E_INDEX INCREMENT(K_E_INDEX) #else #define U_E_INDEX K_E_INDEX @@ -1339,21 +1355,21 @@ #endif #endif // Auto-assign pins for stallGuard sensorless homing - #if !defined(K_DIAG_PIN) && !defined(K_USE_ENDSTOP) && defined(K_STALL_SENSITIVITY) && _PEXI(K_E_INDEX, DIAG) + #if !defined(K_STOP_PIN) && defined(K_STALL_SENSITIVITY) && E_DIAG_EXISTS(K_E_INDEX) #if DIAG_REMAPPED(K, X_MIN) - #define K_USE_ENDSTOP _XMIN_ + #define K_STOP_PIN X_MIN_PIN #elif DIAG_REMAPPED(K, Y_MIN) - #define K_USE_ENDSTOP _YMIN_ + #define K_STOP_PIN Y_MIN_PIN #elif DIAG_REMAPPED(K, Z_MIN) - #define K_USE_ENDSTOP _ZMIN_ + #define K_STOP_PIN Z_MIN_PIN #elif DIAG_REMAPPED(K, X_MAX) - #define K_USE_ENDSTOP _XMAX_ + #define K_STOP_PIN X_MAX_PIN #elif DIAG_REMAPPED(K, Y_MAX) - #define K_USE_ENDSTOP _YMAX_ + #define K_STOP_PIN Y_MAX_PIN #elif DIAG_REMAPPED(K, Z_MAX) - #define K_USE_ENDSTOP _ZMAX_ + #define K_STOP_PIN Z_MAX_PIN #else - #define K_USE_ENDSTOP _En_DIAG_(K_E_INDEX) + #define K_STOP_PIN _En_DIAG_PIN(K_E_INDEX) #endif #define AUTO_ASSIGNED_K_DIAG 1 #endif @@ -1372,7 +1388,8 @@ #define K_MS3_PIN -1 #endif -#if HAS_U_AXIS && !defined(U_DIAG_PIN) && !defined(U_STEP_PIN) && !PIN_EXISTS(U_CS_PIN) +// U auto-assignment will use up an E stepper, but not if it's chained +#if HAS_U_AXIS && !defined(U_STEP_PIN) && !PIN_EXISTS(U_CS_PIN) #define V_E_INDEX INCREMENT(U_E_INDEX) #else #define V_E_INDEX U_E_INDEX @@ -1423,21 +1440,21 @@ #endif #endif // Auto-assign pins for stallGuard sensorless homing - #if !defined(U_DIAG_PIN) && !defined(U_USE_ENDSTOP) && defined(U_STALL_SENSITIVITY) && _PEXI(U_E_INDEX, DIAG) + #if !defined(U_STOP_PIN) && defined(U_STALL_SENSITIVITY) && E_DIAG_EXISTS(U_E_INDEX) #if DIAG_REMAPPED(U, X_MIN) - #define U_USE_ENDSTOP _XMIN_ + #define U_STOP_PIN X_MIN_PIN #elif DIAG_REMAPPED(U, Y_MIN) - #define U_USE_ENDSTOP _YMIN_ + #define U_STOP_PIN Y_MIN_PIN #elif DIAG_REMAPPED(U, Z_MIN) - #define U_USE_ENDSTOP _ZMIN_ + #define U_STOP_PIN Z_MIN_PIN #elif DIAG_REMAPPED(U, X_MAX) - #define U_USE_ENDSTOP _XMAX_ + #define U_STOP_PIN X_MAX_PIN #elif DIAG_REMAPPED(U, Y_MAX) - #define U_USE_ENDSTOP _YMAX_ + #define U_STOP_PIN Y_MAX_PIN #elif DIAG_REMAPPED(U, Z_MAX) - #define U_USE_ENDSTOP _ZMAX_ + #define U_STOP_PIN Z_MAX_PIN #else - #define U_USE_ENDSTOP _En_DIAG_(U_E_INDEX) + #define U_STOP_PIN _En_DIAG_PIN(U_E_INDEX) #endif #define AUTO_ASSIGNED_U_DIAG 1 #endif @@ -1456,7 +1473,8 @@ #define U_MS3_PIN -1 #endif -#if HAS_V_AXIS && !defined(V_DIAG_PIN) && !defined(V_STEP_PIN) && !PIN_EXISTS(V_CS_PIN) +// V auto-assignment will use up an E stepper, but not if it's chained +#if HAS_V_AXIS && !defined(V_STEP_PIN) && !PIN_EXISTS(V_CS_PIN) #define W_E_INDEX INCREMENT(V_E_INDEX) #else #define W_E_INDEX V_E_INDEX @@ -1507,21 +1525,21 @@ #endif #endif // Auto-assign pins for stallGuard sensorless homing - #if !defined(V_DIAG_PIN) && !defined(V_USE_ENDSTOP) && defined(V_STALL_SENSITIVITY) && _PEXI(V_E_INDEX, DIAG) + #if !defined(V_STOP_PIN) && defined(V_STALL_SENSITIVITY) && E_DIAG_EXISTS(V_E_INDEX) #if DIAG_REMAPPED(V, X_MIN) - #define V_USE_ENDSTOP _XMIN_ + #define V_STOP_PIN X_MIN_PIN #elif DIAG_REMAPPED(V, Y_MIN) - #define V_USE_ENDSTOP _YMIN_ + #define V_STOP_PIN Y_MIN_PIN #elif DIAG_REMAPPED(V, Z_MIN) - #define V_USE_ENDSTOP _ZMIN_ + #define V_STOP_PIN Z_MIN_PIN #elif DIAG_REMAPPED(V, X_MAX) - #define V_USE_ENDSTOP _XMAX_ + #define V_STOP_PIN X_MAX_PIN #elif DIAG_REMAPPED(V, Y_MAX) - #define V_USE_ENDSTOP _YMAX_ + #define V_STOP_PIN Y_MAX_PIN #elif DIAG_REMAPPED(V, Z_MAX) - #define V_USE_ENDSTOP _ZMAX_ + #define V_STOP_PIN Z_MAX_PIN #else - #define V_USE_ENDSTOP _En_DIAG_(V_E_INDEX) + #define V_STOP_PIN _En_DIAG_PIN(V_E_INDEX) #endif #define AUTO_ASSIGNED_V_DIAG 1 #endif @@ -1585,21 +1603,21 @@ #endif #endif // Auto-assign pins for stallGuard sensorless homing - #if !defined(W_DIAG_PIN) && !defined(W_USE_ENDSTOP) && defined(W_STALL_SENSITIVITY) && _PEXI(W_E_INDEX, DIAG) + #if !defined(W_STOP_PIN) && defined(W_STALL_SENSITIVITY) && E_DIAG_EXISTS(W_E_INDEX) #if DIAG_REMAPPED(W, X_MIN) - #define W_USE_ENDSTOP _XMIN_ + #define W_STOP_PIN X_MIN_PIN #elif DIAG_REMAPPED(W, Y_MIN) - #define W_USE_ENDSTOP _YMIN_ + #define W_STOP_PIN Y_MIN_PIN #elif DIAG_REMAPPED(W, Z_MIN) - #define W_USE_ENDSTOP _ZMIN_ + #define W_STOP_PIN Z_MIN_PIN #elif DIAG_REMAPPED(W, X_MAX) - #define W_USE_ENDSTOP _XMAX_ + #define W_STOP_PIN X_MAX_PIN #elif DIAG_REMAPPED(W, Y_MAX) - #define W_USE_ENDSTOP _YMAX_ + #define W_STOP_PIN Y_MAX_PIN #elif DIAG_REMAPPED(W, Z_MAX) - #define W_USE_ENDSTOP _ZMAX_ + #define W_STOP_PIN Z_MAX_PIN #else - #define W_USE_ENDSTOP _En_DIAG_(W_E_INDEX) + #define W_STOP_PIN _En_DIAG_PIN(W_E_INDEX) #endif #define AUTO_ASSIGNED_W_DIAG 1 #endif @@ -1618,670 +1636,52 @@ #define W_MS3_PIN -1 #endif -// -// Disable unused endstop / probe pins -// -#define _STOP_IN_USE(N) (X2_USE_ENDSTOP == N || Y2_USE_ENDSTOP == N || Z2_USE_ENDSTOP == N || Z3_USE_ENDSTOP == N || Z4_USE_ENDSTOP == N) -#if !defined(USE_XMAX_PLUG) && _STOP_IN_USE(_XMAX_) - #define USE_XMAX_PLUG -#endif -#if !defined(USE_YMAX_PLUG) && _STOP_IN_USE(_YMAX_) - #define USE_YMAX_PLUG -#endif -#if !defined(USE_ZMAX_PLUG) && _STOP_IN_USE(_ZMAX_) - #define USE_ZMAX_PLUG -#endif -#if !defined(USE_IMAX_PLUG) && _STOP_IN_USE(_IMAX_) - #define USE_IMAX_PLUG -#endif -#if !defined(USE_JMAX_PLUG) && _STOP_IN_USE(_JMAX_) - #define USE_JMAX_PLUG -#endif -#if !defined(USE_KMAX_PLUG) && _STOP_IN_USE(_KMAX_) - #define USE_KMAX_PLUG -#endif -#if !defined(USE_UMAX_PLUG) && _STOP_IN_USE(_UMAX_) - #define USE_UMAX_PLUG -#endif -#if !defined(USE_VMAX_PLUG) && _STOP_IN_USE(_VMAX_) - #define USE_VMAX_PLUG -#endif -#if !defined(USE_WMAX_PLUG) && _STOP_IN_USE(_WMAX_) - #define USE_WMAX_PLUG -#endif -#if !defined(USE_XMIN_PLUG) && _STOP_IN_USE(_XMIN_) - #define USE_XMIN_PLUG -#endif -#if !defined(USE_YMIN_PLUG) && _STOP_IN_USE(_YMIN_) - #define USE_YMIN_PLUG -#endif -#if !defined(USE_ZMIN_PLUG) && _STOP_IN_USE(_ZMIN_) - #define USE_ZMIN_PLUG -#endif -#if !defined(USE_IMIN_PLUG) && _STOP_IN_USE(_IMIN_) - #define USE_IMIN_PLUG -#endif -#if !defined(USE_JMIN_PLUG) && _STOP_IN_USE(_JMIN_) - #define USE_JMIN_PLUG -#endif -#if !defined(USE_KMIN_PLUG) && _STOP_IN_USE(_KMIN_) - #define USE_KMIN_PLUG -#endif -#if !defined(USE_UMIN_PLUG) && _STOP_IN_USE(_UMIN_) - #define USE_UMIN_PLUG -#endif -#if !defined(USE_VMIN_PLUG) && _STOP_IN_USE(_VMIN_) - #define USE_VMIN_PLUG -#endif -#if !defined(USE_WMIN_PLUG) && _STOP_IN_USE(_WMIN_) - #define USE_WMIN_PLUG -#endif -#undef _STOP_IN_USE -#if !USES_Z_MIN_PROBE_PIN - #undef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN -1 -#endif -#if DISABLED(USE_XMIN_PLUG) - #undef X_MIN_PIN - #define X_MIN_PIN -1 -#endif -#if DISABLED(USE_XMAX_PLUG) - #undef X_MAX_PIN - #define X_MAX_PIN -1 -#endif -#if NONE(USE_XMIN_PLUG, USE_XMAX_PLUG) - #undef X_STOP_PIN -#endif -#if DISABLED(USE_YMIN_PLUG) - #undef Y_MIN_PIN - #define Y_MIN_PIN -1 -#endif -#if DISABLED(USE_YMAX_PLUG) - #undef Y_MAX_PIN - #define Y_MAX_PIN -1 -#endif -#if NONE(USE_YMIN_PLUG, USE_YMAX_PLUG) - #undef Y_STOP_PIN -#endif -#if DISABLED(USE_ZMIN_PLUG) - #undef Z_MIN_PIN - #define Z_MIN_PIN -1 -#endif -#if DISABLED(USE_ZMAX_PLUG) - #undef Z_MAX_PIN - #define Z_MAX_PIN -1 -#endif -#if NONE(USE_ZMIN_PLUG, USE_ZMAX_PLUG) - #undef Z_STOP_PIN -#endif -#if DISABLED(USE_IMIN_PLUG) - #undef I_MIN_PIN - #define I_MIN_PIN -1 -#endif -#if DISABLED(USE_IMAX_PLUG) - #undef I_MAX_PIN - #define I_MAX_PIN -1 -#endif -#if NONE(USE_IMIN_PLUG, USE_IMAX_PLUG) - #undef I_STOP_PIN -#endif -#if DISABLED(USE_JMIN_PLUG) - #undef J_MIN_PIN - #define J_MIN_PIN -1 -#endif -#if DISABLED(USE_JMAX_PLUG) - #undef J_MAX_PIN - #define J_MAX_PIN -1 -#endif -#if NONE(USE_JMIN_PLUG, USE_JMAX_PLUG) - #undef J_STOP_PIN -#endif -#if DISABLED(USE_KMIN_PLUG) - #undef K_MIN_PIN - #define K_MIN_PIN -1 -#endif -#if DISABLED(USE_KMAX_PLUG) - #undef K_MAX_PIN - #define K_MAX_PIN -1 -#endif -#if NONE(USE_KMIN_PLUG, USE_KMAX_PLUG) - #undef K_STOP_PIN -#endif -#if DISABLED(USE_UMIN_PLUG) - #undef U_MIN_PIN - #define U_MIN_PIN -1 -#endif -#if DISABLED(USE_UMAX_PLUG) - #undef U_MAX_PIN - #define U_MAX_PIN -1 -#endif -#if NONE(USE_UMIN_PLUG, USE_UMAX_PLUG) - #undef U_STOP_PIN -#endif -#if DISABLED(USE_VMIN_PLUG) - #undef V_MIN_PIN - #define V_MIN_PIN -1 -#endif -#if DISABLED(USE_VMAX_PLUG) - #undef V_MAX_PIN - #define V_MAX_PIN -1 -#endif -#if NONE(USE_VMIN_PLUG, USE_VMAX_PLUG) - #undef V_STOP_PIN -#endif -#if DISABLED(USE_WMIN_PLUG) - #undef W_MIN_PIN - #define W_MIN_PIN -1 -#endif -#if DISABLED(USE_WMAX_PLUG) - #undef W_MAX_PIN - #define W_MAX_PIN -1 -#endif -#if NONE(USE_WMIN_PLUG, USE_WMAX_PLUG) - #undef W_STOP_PIN -#endif - -#if DISABLED(X_DUAL_ENDSTOPS) || X_HOME_TO_MAX - #undef X2_MIN_PIN -#endif -#if DISABLED(X_DUAL_ENDSTOPS) || X_HOME_TO_MIN - #undef X2_MAX_PIN -#endif -#if DISABLED(Y_DUAL_ENDSTOPS) || Y_HOME_TO_MAX - #undef Y2_MIN_PIN -#endif -#if DISABLED(Y_DUAL_ENDSTOPS) || Y_HOME_TO_MIN - #undef Y2_MAX_PIN -#endif -#if DISABLED(Z_MULTI_ENDSTOPS) || Z_HOME_TO_MAX - #undef Z2_MIN_PIN -#endif -#if DISABLED(Z_MULTI_ENDSTOPS) || Z_HOME_TO_MIN - #undef Z2_MAX_PIN -#endif -#if DISABLED(Z_MULTI_ENDSTOPS) || NUM_Z_STEPPERS < 3 || Z_HOME_TO_MAX - #undef Z3_MIN_PIN -#endif -#if DISABLED(Z_MULTI_ENDSTOPS) || NUM_Z_STEPPERS < 3 || Z_HOME_TO_MIN - #undef Z3_MAX_PIN -#endif -#if DISABLED(Z_MULTI_ENDSTOPS) || NUM_Z_STEPPERS < 4 || Z_HOME_TO_MAX - #undef Z4_MIN_PIN -#endif -#if DISABLED(Z_MULTI_ENDSTOPS) || NUM_Z_STEPPERS < 4 || Z_HOME_TO_MIN - #undef Z4_MAX_PIN -#endif - /** * X_DUAL_ENDSTOPS endstop reassignment */ #if ENABLED(X_DUAL_ENDSTOPS) - #if X_HOME_TO_MAX && !defined(X2_MAX_PIN) - #if PIN_EXISTS(X2_STOP) - #define X2_MAX_PIN X2_STOP_PIN - #elif X2_USE_ENDSTOP == _XMIN_ - #define X2_MAX_PIN X_MIN_PIN - #elif X2_USE_ENDSTOP == _XMAX_ - #define X2_MAX_PIN X_MAX_PIN - #elif X2_USE_ENDSTOP == _XSTOP_ - #define X2_MAX_PIN X_STOP_PIN - #elif X2_USE_ENDSTOP == _YMIN_ - #define X2_MAX_PIN Y_MIN_PIN - #elif X2_USE_ENDSTOP == _YMAX_ - #define X2_MAX_PIN Y_MAX_PIN - #elif X2_USE_ENDSTOP == _YSTOP_ - #define X2_MAX_PIN Y_STOP_PIN - #elif X2_USE_ENDSTOP == _ZMIN_ - #define X2_MAX_PIN Z_MIN_PIN - #elif X2_USE_ENDSTOP == _ZMAX_ - #define X2_MAX_PIN Z_MAX_PIN - #elif X2_USE_ENDSTOP == _ZSTOP_ - #define X2_MAX_PIN Z_STOP_PIN - #elif X2_USE_ENDSTOP == _XDIAG_ - #define X2_MAX_PIN X_DIAG_PIN - #elif X2_USE_ENDSTOP == _YDIAG_ - #define X2_MAX_PIN Y_DIAG_PIN - #elif X2_USE_ENDSTOP == _ZDIAG_ - #define X2_MAX_PIN Z_DIAG_PIN - #elif X2_USE_ENDSTOP == _E0DIAG_ - #define X2_MAX_PIN E0_DIAG_PIN - #elif X2_USE_ENDSTOP == _E1DIAG_ - #define X2_MAX_PIN E1_DIAG_PIN - #elif X2_USE_ENDSTOP == _E2DIAG_ - #define X2_MAX_PIN E2_DIAG_PIN - #elif X2_USE_ENDSTOP == _E3DIAG_ - #define X2_MAX_PIN E3_DIAG_PIN - #elif X2_USE_ENDSTOP == _E4DIAG_ - #define X2_MAX_PIN E4_DIAG_PIN - #elif X2_USE_ENDSTOP == _E5DIAG_ - #define X2_MAX_PIN E5_DIAG_PIN - #elif X2_USE_ENDSTOP == _E6DIAG_ - #define X2_MAX_PIN E6_DIAG_PIN - #elif X2_USE_ENDSTOP == _E7DIAG_ - #define X2_MAX_PIN E7_DIAG_PIN - #endif - #elif X_HOME_TO_MIN && !defined(X2_MIN_PIN) - #if PIN_EXISTS(X2_STOP) - #define X2_MIN_PIN X2_STOP_PIN - #elif X2_USE_ENDSTOP == _XMIN_ - #define X2_MIN_PIN X_MIN_PIN - #elif X2_USE_ENDSTOP == _XMAX_ - #define X2_MIN_PIN X_MAX_PIN - #elif X2_USE_ENDSTOP == _XSTOP_ - #define X2_MIN_PIN X_STOP_PIN - #elif X2_USE_ENDSTOP == _YMIN_ - #define X2_MIN_PIN Y_MIN_PIN - #elif X2_USE_ENDSTOP == _YMAX_ - #define X2_MIN_PIN Y_MAX_PIN - #elif X2_USE_ENDSTOP == _YSTOP_ - #define X2_MIN_PIN Y_STOP_PIN - #elif X2_USE_ENDSTOP == _ZMIN_ - #define X2_MIN_PIN Z_MIN_PIN - #elif X2_USE_ENDSTOP == _ZMAX_ - #define X2_MIN_PIN Z_MAX_PIN - #elif X2_USE_ENDSTOP == _ZSTOP_ - #define X2_MIN_PIN Z_STOP_PIN - #elif X2_USE_ENDSTOP == _XDIAG_ - #define X2_MIN_PIN X_DIAG_PIN - #elif X2_USE_ENDSTOP == _YDIAG_ - #define X2_MIN_PIN Y_DIAG_PIN - #elif X2_USE_ENDSTOP == _ZDIAG_ - #define X2_MIN_PIN Z_DIAG_PIN - #elif X2_USE_ENDSTOP == _E0DIAG_ - #define X2_MIN_PIN E0_DIAG_PIN - #elif X2_USE_ENDSTOP == _E1DIAG_ - #define X2_MIN_PIN E1_DIAG_PIN - #elif X2_USE_ENDSTOP == _E2DIAG_ - #define X2_MIN_PIN E2_DIAG_PIN - #elif X2_USE_ENDSTOP == _E3DIAG_ - #define X2_MIN_PIN E3_DIAG_PIN - #elif X2_USE_ENDSTOP == _E4DIAG_ - #define X2_MIN_PIN E4_DIAG_PIN - #elif X2_USE_ENDSTOP == _E5DIAG_ - #define X2_MIN_PIN E5_DIAG_PIN - #elif X2_USE_ENDSTOP == _E6DIAG_ - #define X2_MIN_PIN E6_DIAG_PIN - #elif X2_USE_ENDSTOP == _E7DIAG_ - #define X2_MIN_PIN E7_DIAG_PIN - #endif + #if X_HOME_TO_MAX && !defined(X2_MAX_PIN) && PIN_EXISTS(X2_STOP) + #define X2_MAX_PIN X2_STOP_PIN + #elif X_HOME_TO_MIN && !defined(X2_MIN_PIN) && PIN_EXISTS(X2_STOP) + #define X2_MIN_PIN X2_STOP_PIN #endif -#endif // X_DUAL_ENDSTOPS +#endif /** * Y_DUAL_ENDSTOPS endstop reassignment */ #if ENABLED(Y_DUAL_ENDSTOPS) - #if Y_HOME_TO_MAX && !defined(Y2_MAX_PIN) - #if PIN_EXISTS(Y2_STOP) - #define Y2_MAX_PIN Y2_STOP_PIN - #elif Y2_USE_ENDSTOP == _XMIN_ - #define Y2_MAX_PIN X_MIN_PIN - #elif Y2_USE_ENDSTOP == _XMAX_ - #define Y2_MAX_PIN X_MAX_PIN - #elif Y2_USE_ENDSTOP == _XSTOP_ - #define Y2_MAX_PIN X_STOP_PIN - #elif Y2_USE_ENDSTOP == _YMIN_ - #define Y2_MAX_PIN Y_MIN_PIN - #elif Y2_USE_ENDSTOP == _YMAX_ - #define Y2_MAX_PIN Y_MAX_PIN - #elif Y2_USE_ENDSTOP == _YSTOP_ - #define Y2_MAX_PIN Y_STOP_PIN - #elif Y2_USE_ENDSTOP == _ZMIN_ - #define Y2_MAX_PIN Z_MIN_PIN - #elif Y2_USE_ENDSTOP == _ZMAX_ - #define Y2_MAX_PIN Z_MAX_PIN - #elif Y2_USE_ENDSTOP == _ZSTOP_ - #define Y2_MAX_PIN Z_STOP_PIN - #elif Y2_USE_ENDSTOP == _XDIAG_ - #define Y2_MAX_PIN X_DIAG_PIN - #elif Y2_USE_ENDSTOP == _YDIAG_ - #define Y2_MAX_PIN Y_DIAG_PIN - #elif Y2_USE_ENDSTOP == _ZDIAG_ - #define Y2_MAX_PIN Z_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E0DIAG_ - #define Y2_MAX_PIN E0_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E1DIAG_ - #define Y2_MAX_PIN E1_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E2DIAG_ - #define Y2_MAX_PIN E2_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E3DIAG_ - #define Y2_MAX_PIN E3_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E4DIAG_ - #define Y2_MAX_PIN E4_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E5DIAG_ - #define Y2_MAX_PIN E5_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E6DIAG_ - #define Y2_MAX_PIN E6_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E7DIAG_ - #define Y2_MAX_PIN E7_DIAG_PIN - #endif - #elif Y_HOME_TO_MIN && !defined(Y2_MIN_PIN) - #if PIN_EXISTS(Y2_STOP) - #define Y2_MIN_PIN Y2_STOP_PIN - #elif Y2_USE_ENDSTOP == _XMIN_ - #define Y2_MIN_PIN X_MIN_PIN - #elif Y2_USE_ENDSTOP == _XMAX_ - #define Y2_MIN_PIN X_MAX_PIN - #elif Y2_USE_ENDSTOP == _XSTOP_ - #define Y2_MIN_PIN X_STOP_PIN - #elif Y2_USE_ENDSTOP == _YMIN_ - #define Y2_MIN_PIN Y_MIN_PIN - #elif Y2_USE_ENDSTOP == _YMAX_ - #define Y2_MIN_PIN Y_MAX_PIN - #elif Y2_USE_ENDSTOP == _YSTOP_ - #define Y2_MIN_PIN Y_STOP_PIN - #elif Y2_USE_ENDSTOP == _ZMIN_ - #define Y2_MIN_PIN Z_MIN_PIN - #elif Y2_USE_ENDSTOP == _ZMAX_ - #define Y2_MIN_PIN Z_MAX_PIN - #elif Y2_USE_ENDSTOP == _ZSTOP_ - #define Y2_MIN_PIN Z_STOP_PIN - #elif Y2_USE_ENDSTOP == _XDIAG_ - #define Y2_MIN_PIN X_DIAG_PIN - #elif Y2_USE_ENDSTOP == _YDIAG_ - #define Y2_MIN_PIN Y_DIAG_PIN - #elif Y2_USE_ENDSTOP == _ZDIAG_ - #define Y2_MIN_PIN Z_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E0DIAG_ - #define Y2_MIN_PIN E0_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E1DIAG_ - #define Y2_MIN_PIN E1_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E2DIAG_ - #define Y2_MIN_PIN E2_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E3DIAG_ - #define Y2_MIN_PIN E3_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E4DIAG_ - #define Y2_MIN_PIN E4_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E5DIAG_ - #define Y2_MIN_PIN E5_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E6DIAG_ - #define Y2_MIN_PIN E6_DIAG_PIN - #elif Y2_USE_ENDSTOP == _E7DIAG_ - #define Y2_MIN_PIN E7_DIAG_PIN - #endif + #if Y_HOME_TO_MAX && !defined(Y2_MAX_PIN) && PIN_EXISTS(Y2_STOP) + #define Y2_MAX_PIN Y2_STOP_PIN + #elif Y_HOME_TO_MIN && !defined(Y2_MIN_PIN) && PIN_EXISTS(Y2_STOP) + #define Y2_MIN_PIN Y2_STOP_PIN #endif -#endif // Y_DUAL_ENDSTOPS +#endif /** * Z_MULTI_ENDSTOPS endstop reassignment */ #if ENABLED(Z_MULTI_ENDSTOPS) - - #if Z_HOME_TO_MAX && !defined(Z2_MAX_PIN) - #if PIN_EXISTS(Z2_STOP) - #define Z2_MAX_PIN Z2_STOP_PIN - #elif Z2_USE_ENDSTOP == _XMIN_ - #define Z2_MAX_PIN X_MIN_PIN - #elif Z2_USE_ENDSTOP == _XMAX_ - #define Z2_MAX_PIN X_MAX_PIN - #elif Z2_USE_ENDSTOP == _XSTOP_ - #define Z2_MAX_PIN X_STOP_PIN - #elif Z2_USE_ENDSTOP == _YMIN_ - #define Z2_MAX_PIN Y_MIN_PIN - #elif Z2_USE_ENDSTOP == _YMAX_ - #define Z2_MAX_PIN Y_MAX_PIN - #elif Z2_USE_ENDSTOP == _YSTOP_ - #define Z2_MAX_PIN Y_STOP_PIN - #elif Z2_USE_ENDSTOP == _ZMIN_ - #define Z2_MAX_PIN Z_MIN_PIN - #elif Z2_USE_ENDSTOP == _ZMAX_ - #define Z2_MAX_PIN Z_MAX_PIN - #elif Z2_USE_ENDSTOP == _ZSTOP_ - #define Z2_MAX_PIN Z_STOP_PIN - #elif Z2_USE_ENDSTOP == _XDIAG_ - #define Z2_MAX_PIN X_DIAG_PIN - #elif Z2_USE_ENDSTOP == _YDIAG_ - #define Z2_MAX_PIN Y_DIAG_PIN - #elif Z2_USE_ENDSTOP == _ZDIAG_ - #define Z2_MAX_PIN Z_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E0DIAG_ - #define Z2_MAX_PIN E0_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E1DIAG_ - #define Z2_MAX_PIN E1_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E2DIAG_ - #define Z2_MAX_PIN E2_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E3DIAG_ - #define Z2_MAX_PIN E3_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E4DIAG_ - #define Z2_MAX_PIN E4_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E5DIAG_ - #define Z2_MAX_PIN E5_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E6DIAG_ - #define Z2_MAX_PIN E6_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E7DIAG_ - #define Z2_MAX_PIN E7_DIAG_PIN - #endif - #elif Z_HOME_TO_MIN && !defined(Z2_MIN_PIN) - #if PIN_EXISTS(Z2_STOP) - #define Z2_MIN_PIN Z2_STOP_PIN - #elif Z2_USE_ENDSTOP == _XMIN_ - #define Z2_MIN_PIN X_MIN_PIN - #elif Z2_USE_ENDSTOP == _XMAX_ - #define Z2_MIN_PIN X_MAX_PIN - #elif Z2_USE_ENDSTOP == _XSTOP_ - #define Z2_MIN_PIN X_STOP_PIN - #elif Z2_USE_ENDSTOP == _YMIN_ - #define Z2_MIN_PIN Y_MIN_PIN - #elif Z2_USE_ENDSTOP == _YMAX_ - #define Z2_MIN_PIN Y_MAX_PIN - #elif Z2_USE_ENDSTOP == _YSTOP_ - #define Z2_MIN_PIN Y_STOP_PIN - #elif Z2_USE_ENDSTOP == _ZMIN_ - #define Z2_MIN_PIN Z_MIN_PIN - #elif Z2_USE_ENDSTOP == _ZMAX_ - #define Z2_MIN_PIN Z_MAX_PIN - #elif Z2_USE_ENDSTOP == _ZSTOP_ - #define Z2_MIN_PIN Z_STOP_PIN - #elif Z2_USE_ENDSTOP == _XDIAG_ - #define Z2_MIN_PIN X_DIAG_PIN - #elif Z2_USE_ENDSTOP == _YDIAG_ - #define Z2_MIN_PIN Y_DIAG_PIN - #elif Z2_USE_ENDSTOP == _ZDIAG_ - #define Z2_MIN_PIN Z_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E0DIAG_ - #define Z2_MIN_PIN E0_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E1DIAG_ - #define Z2_MIN_PIN E1_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E2DIAG_ - #define Z2_MIN_PIN E2_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E3DIAG_ - #define Z2_MIN_PIN E3_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E4DIAG_ - #define Z2_MIN_PIN E4_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E5DIAG_ - #define Z2_MIN_PIN E5_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E6DIAG_ - #define Z2_MIN_PIN E6_DIAG_PIN - #elif Z2_USE_ENDSTOP == _E7DIAG_ - #define Z2_MIN_PIN E7_DIAG_PIN - #endif + #if Z_HOME_TO_MAX && !defined(Z2_MAX_PIN) && PIN_EXISTS(Z2_STOP) + #define Z2_MAX_PIN Z2_STOP_PIN + #elif Z_HOME_TO_MIN && !defined(Z2_MIN_PIN) && PIN_EXISTS(Z2_STOP) + #define Z2_MIN_PIN Z2_STOP_PIN #endif - #if NUM_Z_STEPPERS >= 3 - #if Z_HOME_TO_MAX && !defined(Z3_MAX_PIN) - #if PIN_EXISTS(Z3_STOP) - #define Z3_MAX_PIN Z3_STOP_PIN - #elif Z3_USE_ENDSTOP == _XMIN_ - #define Z3_MAX_PIN X_MIN_PIN - #elif Z3_USE_ENDSTOP == _XMAX_ - #define Z3_MAX_PIN X_MAX_PIN - #elif Z3_USE_ENDSTOP == _XSTOP_ - #define Z3_MAX_PIN X_STOP_PIN - #elif Z3_USE_ENDSTOP == _YMIN_ - #define Z3_MAX_PIN Y_MIN_PIN - #elif Z3_USE_ENDSTOP == _YMAX_ - #define Z3_MAX_PIN Y_MAX_PIN - #elif Z3_USE_ENDSTOP == _YSTOP_ - #define Z3_MAX_PIN Y_STOP_PIN - #elif Z3_USE_ENDSTOP == _ZMIN_ - #define Z3_MAX_PIN Z_MIN_PIN - #elif Z3_USE_ENDSTOP == _ZMAX_ - #define Z3_MAX_PIN Z_MAX_PIN - #elif Z3_USE_ENDSTOP == _ZSTOP_ - #define Z3_MAX_PIN Z_STOP_PIN - #elif Z3_USE_ENDSTOP == _XDIAG_ - #define Z3_MAX_PIN X_DIAG_PIN - #elif Z3_USE_ENDSTOP == _YDIAG_ - #define Z3_MAX_PIN Y_DIAG_PIN - #elif Z3_USE_ENDSTOP == _ZDIAG_ - #define Z3_MAX_PIN Z_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E0DIAG_ - #define Z3_MAX_PIN E0_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E1DIAG_ - #define Z3_MAX_PIN E1_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E2DIAG_ - #define Z3_MAX_PIN E2_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E3DIAG_ - #define Z3_MAX_PIN E3_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E4DIAG_ - #define Z3_MAX_PIN E4_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E5DIAG_ - #define Z3_MAX_PIN E5_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E6DIAG_ - #define Z3_MAX_PIN E6_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E7DIAG_ - #define Z3_MAX_PIN E7_DIAG_PIN - #endif - #elif Z_HOME_TO_MIN && !defined(Z3_MIN_PIN) - #if PIN_EXISTS(Z3_STOP) - #define Z3_MIN_PIN Z3_STOP_PIN - #elif Z3_USE_ENDSTOP == _XMIN_ - #define Z3_MIN_PIN X_MIN_PIN - #elif Z3_USE_ENDSTOP == _XMAX_ - #define Z3_MIN_PIN X_MAX_PIN - #elif Z3_USE_ENDSTOP == _XSTOP_ - #define Z3_MIN_PIN X_STOP_PIN - #elif Z3_USE_ENDSTOP == _YMIN_ - #define Z3_MIN_PIN Y_MIN_PIN - #elif Z3_USE_ENDSTOP == _YMAX_ - #define Z3_MIN_PIN Y_MAX_PIN - #elif Z3_USE_ENDSTOP == _YSTOP_ - #define Z3_MIN_PIN Y_STOP_PIN - #elif Z3_USE_ENDSTOP == _ZMIN_ - #define Z3_MIN_PIN Z_MIN_PIN - #elif Z3_USE_ENDSTOP == _ZMAX_ - #define Z3_MIN_PIN Z_MAX_PIN - #elif Z3_USE_ENDSTOP == _ZSTOP_ - #define Z3_MIN_PIN Z_STOP_PIN - #elif Z3_USE_ENDSTOP == _XDIAG_ - #define Z3_MIN_PIN X_DIAG_PIN - #elif Z3_USE_ENDSTOP == _YDIAG_ - #define Z3_MIN_PIN Y_DIAG_PIN - #elif Z3_USE_ENDSTOP == _ZDIAG_ - #define Z3_MIN_PIN Z_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E0DIAG_ - #define Z3_MIN_PIN E0_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E1DIAG_ - #define Z3_MIN_PIN E1_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E2DIAG_ - #define Z3_MIN_PIN E2_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E3DIAG_ - #define Z3_MIN_PIN E3_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E4DIAG_ - #define Z3_MIN_PIN E4_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E5DIAG_ - #define Z3_MIN_PIN E5_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E6DIAG_ - #define Z3_MIN_PIN E6_DIAG_PIN - #elif Z3_USE_ENDSTOP == _E7DIAG_ - #define Z3_MIN_PIN E7_DIAG_PIN - #endif + #if Z_HOME_TO_MAX && !defined(Z3_MAX_PIN) && PIN_EXISTS(Z3_STOP) + #define Z3_MAX_PIN Z3_STOP_PIN + #elif Z_HOME_TO_MIN && !defined(Z3_MIN_PIN) && PIN_EXISTS(Z3_STOP) + #define Z3_MIN_PIN Z3_STOP_PIN #endif #endif - #if NUM_Z_STEPPERS >= 4 - #if Z_HOME_TO_MAX && !defined(Z4_MAX_PIN) - #if PIN_EXISTS(Z4_STOP) - #define Z4_MAX_PIN Z4_STOP_PIN - #elif Z4_USE_ENDSTOP == _XMIN_ - #define Z4_MAX_PIN X_MIN_PIN - #elif Z4_USE_ENDSTOP == _XMAX_ - #define Z4_MAX_PIN X_MAX_PIN - #elif Z4_USE_ENDSTOP == _XSTOP_ - #define Z4_MAX_PIN X_STOP_PIN - #elif Z4_USE_ENDSTOP == _YMIN_ - #define Z4_MAX_PIN Y_MIN_PIN - #elif Z4_USE_ENDSTOP == _YMAX_ - #define Z4_MAX_PIN Y_MAX_PIN - #elif Z4_USE_ENDSTOP == _YSTOP_ - #define Z4_MAX_PIN Y_STOP_PIN - #elif Z4_USE_ENDSTOP == _ZMIN_ - #define Z4_MAX_PIN Z_MIN_PIN - #elif Z4_USE_ENDSTOP == _ZMAX_ - #define Z4_MAX_PIN Z_MAX_PIN - #elif Z4_USE_ENDSTOP == _ZSTOP_ - #define Z4_MAX_PIN Z_STOP_PIN - #elif Z4_USE_ENDSTOP == _XDIAG_ - #define Z4_MAX_PIN X_DIAG_PIN - #elif Z4_USE_ENDSTOP == _YDIAG_ - #define Z4_MAX_PIN Y_DIAG_PIN - #elif Z4_USE_ENDSTOP == _ZDIAG_ - #define Z4_MAX_PIN Z_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E0DIAG_ - #define Z4_MAX_PIN E0_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E1DIAG_ - #define Z4_MAX_PIN E1_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E2DIAG_ - #define Z4_MAX_PIN E2_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E3DIAG_ - #define Z4_MAX_PIN E3_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E4DIAG_ - #define Z4_MAX_PIN E4_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E5DIAG_ - #define Z4_MAX_PIN E5_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E6DIAG_ - #define Z4_MAX_PIN E6_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E7DIAG_ - #define Z4_MAX_PIN E7_DIAG_PIN - #endif - #elif Z_HOME_TO_MIN && !defined(Z4_MIN_PIN) - #if PIN_EXISTS(Z4_STOP) - #define Z4_MIN_PIN Z4_STOP_PIN - #elif Z4_USE_ENDSTOP == _XMIN_ - #define Z4_MIN_PIN X_MIN_PIN - #elif Z4_USE_ENDSTOP == _XMAX_ - #define Z4_MIN_PIN X_MAX_PIN - #elif Z4_USE_ENDSTOP == _XSTOP_ - #define Z4_MIN_PIN X_STOP_PIN - #elif Z4_USE_ENDSTOP == _YMIN_ - #define Z4_MIN_PIN Y_MIN_PIN - #elif Z4_USE_ENDSTOP == _YMAX_ - #define Z4_MIN_PIN Y_MAX_PIN - #elif Z4_USE_ENDSTOP == _YSTOP_ - #define Z4_MIN_PIN Y_STOP_PIN - #elif Z4_USE_ENDSTOP == _ZMIN_ - #define Z4_MIN_PIN Z_MIN_PIN - #elif Z4_USE_ENDSTOP == _ZMAX_ - #define Z4_MIN_PIN Z_MAX_PIN - #elif Z4_USE_ENDSTOP == _ZSTOP_ - #define Z4_MIN_PIN Z_STOP_PIN - #elif Z4_USE_ENDSTOP == _XDIAG_ - #define Z4_MIN_PIN X_DIAG_PIN - #elif Z4_USE_ENDSTOP == _YDIAG_ - #define Z4_MIN_PIN Y_DIAG_PIN - #elif Z4_USE_ENDSTOP == _ZDIAG_ - #define Z4_MIN_PIN Z_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E0DIAG_ - #define Z4_MIN_PIN E0_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E1DIAG_ - #define Z4_MIN_PIN E1_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E2DIAG_ - #define Z4_MIN_PIN E2_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E3DIAG_ - #define Z4_MIN_PIN E3_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E4DIAG_ - #define Z4_MIN_PIN E4_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E5DIAG_ - #define Z4_MIN_PIN E5_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E6DIAG_ - #define Z4_MIN_PIN E6_DIAG_PIN - #elif Z4_USE_ENDSTOP == _E7DIAG_ - #define Z4_MIN_PIN E7_DIAG_PIN - #endif + #if Z_HOME_TO_MAX && !defined(Z4_MAX_PIN) && PIN_EXISTS(Z4_STOP) + #define Z4_MAX_PIN Z4_STOP_PIN + #elif Z_HOME_TO_MIN && !defined(Z4_MIN_PIN) && PIN_EXISTS(Z4_STOP) + #define Z4_MIN_PIN Z4_STOP_PIN #endif #endif - -#endif // Z_MULTI_ENDSTOPS +#endif // // Default DOGLCD SPI delays @@ -2307,3 +1707,5 @@ #undef HAS_FREE_AUX2_PINS #undef DIAG_REMAPPED +#undef _E_DIAG_EXISTS +#undef E_DIAG_EXISTS diff --git a/Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h b/Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h index 8997a5f1db..06f697e270 100644 --- a/Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h +++ b/Marlin/src/pins/stm32f1/pins_ZM3E4_V1_0.h @@ -190,6 +190,7 @@ #define Z2_DIR_PIN PD0 #endif +// TODO: Use different pin names for auto-remapping #ifdef OPTION_Z2_ENDSTOP #define Z2_MIN_PIN PD1 #define Z2_MAX_PIN PB12 diff --git a/Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h b/Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h index b60cca831b..24c7404360 100644 --- a/Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h +++ b/Marlin/src/pins/stm32f1/pins_ZM3E4_V2_0.h @@ -156,6 +156,7 @@ #define Y_MAX_PIN PB14 #define Z_MAX_PIN PB13 +// TODO: Use different pin names for auto-remapping #ifdef OPTION_Z2_ENDSTOP #define Z2_MIN_PIN PD1 #define Z2_MAX_PIN PB12 diff --git a/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h b/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h index 7e3f070786..0ed0177da8 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h @@ -51,11 +51,7 @@ #define Z_STOP_PIN PC2 // Z-STOP #if ENABLED(BTT_E3_RRF_IDEX_BOARD) - #if X2_USE_ENDSTOP == _XMAX_ - #define X_MAX_PIN FPC2_PIN // X2-STOP - #elif X2_USE_ENDSTOP == _XMIN_ - #define X_MIN_PIN FPC2_PIN // X2-STOP - #endif + #define X2_STOP_PIN FPC2_PIN // X2-STOP #endif // diff --git a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h index b81859dd61..6021810f40 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h @@ -106,11 +106,21 @@ // Pins on the extender // #if ENABLED(M5_EXTENDER) - #define X2_STOP_PIN PI4 // M5 M1_STOP - #define Y2_STOP_PIN PF12 // M5 M5_STOP - #define Z2_STOP_PIN PF4 // M5 M2_STOP - #define Z3_STOP_PIN PI7 // M5 M4_STOP - #define Z4_STOP_PIN PF6 // M5 M3_STOP + #ifndef X2_STOP_PIN + #define X2_STOP_PIN PI4 // M5 M1_STOP + #endif + #ifndef Y2_STOP_PIN + #define Y2_STOP_PIN PF12 // M5 M5_STOP + #endif + #ifndef Z2_STOP_PIN + #define Z2_STOP_PIN PF4 // M5 M2_STOP + #endif + #ifndef Z3_STOP_PIN + #define Z3_STOP_PIN PI7 // M5 M4_STOP + #endif + #ifndef Z4_STOP_PIN + #define Z4_STOP_PIN PF6 // M5 M3_STOP + #endif #endif #ifndef Z_MIN_PROBE_PIN diff --git a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h index d69d8fbef0..bf08aca0fe 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h @@ -68,23 +68,6 @@ #define Z_MIN_PROBE_PIN PB7 #endif -// -// Check for additional used endstop pins -// -#if HAS_EXTRA_ENDSTOPS - #define _ENDSTOP_IS_ANY(ES) X2_USE_ENDSTOP == ES || Y2_USE_ENDSTOP == ES || Z2_USE_ENDSTOP == ES || Z3_USE_ENDSTOP == ES || Z4_USE_ENDSTOP == ES - #if _ENDSTOP_IS_ANY(_XMIN_) || _ENDSTOP_IS_ANY(_XMAX_) - #define NEEDS_X_MINMAX - #endif - #if _ENDSTOP_IS_ANY(_YMIN_) || _ENDSTOP_IS_ANY(_YMAX_) - #define NEEDS_Y_MINMAX - #endif - #if _ENDSTOP_IS_ANY(_ZMIN_) || _ENDSTOP_IS_ANY(_ZMAX_) - #define NEEDS_Z_MINMAX - #endif - #undef _ENDSTOP_IS_ANY -#endif - // // Limit Switches // @@ -95,7 +78,7 @@ #else #define X_MIN_PIN E0_DIAG_PIN // E0DET #endif -#elif EITHER(DUAL_X_CARRIAGE, NEEDS_X_MINMAX) +#elif NEEDS_X_MINMAX #ifndef X_MIN_PIN #define X_MIN_PIN X_DIAG_PIN // X-STOP #endif @@ -113,7 +96,7 @@ #else #define Y_MIN_PIN E1_DIAG_PIN // E1DET #endif -#elif ENABLED(NEEDS_Y_MINMAX) +#elif NEEDS_Y_MINMAX #ifndef Y_MIN_PIN #define Y_MIN_PIN Y_DIAG_PIN // Y-STOP #endif @@ -131,7 +114,7 @@ #else #define Z_MIN_PIN E2_DIAG_PIN // PWRDET #endif -#elif ENABLED(NEEDS_Z_MINMAX) +#elif NEEDS_Z_MINMAX #ifndef Z_MIN_PIN #define Z_MIN_PIN Z_DIAG_PIN // Z-STOP #endif diff --git a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h index c4a7cd886f..d26e541d4c 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h @@ -53,29 +53,12 @@ #define E1_DIAG_PIN PC5 // NEOPIXEL #define E2_DIAG_PIN PB14 // Z+ -// -// Check for additional used endstop pins -// -#if HAS_EXTRA_ENDSTOPS - #define _ENDSTOP_IS_ANY(ES) X2_USE_ENDSTOP == ES || Y2_USE_ENDSTOP == ES || Z2_USE_ENDSTOP == ES || Z3_USE_ENDSTOP == ES || Z4_USE_ENDSTOP == ES - #if _ENDSTOP_IS_ANY(_XMIN_) || _ENDSTOP_IS_ANY(_XMAX_) - #define NEEDS_X_MINMAX - #endif - #if _ENDSTOP_IS_ANY(_YMIN_) || _ENDSTOP_IS_ANY(_YMAX_) - #define NEEDS_Y_MINMAX - #endif - #if _ENDSTOP_IS_ANY(_ZMIN_) || _ENDSTOP_IS_ANY(_ZMAX_) - #define NEEDS_Z_MINMAX - #endif - #undef _ENDSTOP_IS_ANY -#endif - // // Limit Switches // #ifdef X_STALL_SENSITIVITY #define X_STOP_PIN X_DIAG_PIN // X- -#elif EITHER(DUAL_X_CARRIAGE, NEEDS_X_MINMAX) +#elif NEEDS_X_MINMAX #ifndef X_MIN_PIN #define X_MIN_PIN X_DIAG_PIN // X- #endif @@ -88,7 +71,7 @@ #ifdef Y_STALL_SENSITIVITY #define Y_STOP_PIN Y_DIAG_PIN // Y- -#elif ENABLED(NEEDS_Y_MINMAX) +#elif NEEDS_Y_MINMAX #ifndef Y_MIN_PIN #define Y_MIN_PIN Y_DIAG_PIN // Y- #endif @@ -101,7 +84,7 @@ #ifdef Z_STALL_SENSITIVITY #define Z_STOP_PIN Z_DIAG_PIN // Z- -#elif ENABLED(NEEDS_Z_MINMAX) +#elif NEEDS_Z_MINMAX #ifndef Z_MIN_PIN #define Z_MIN_PIN Z_DIAG_PIN // Z- #endif @@ -113,7 +96,7 @@ #endif #if DISABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) || ENABLED(USE_PROBE_FOR_Z_HOMING) - #ifndef Z_MIN_PROBE + #ifndef Z_MIN_PROBE_PIN #define Z_MIN_PROBE_PIN E2_DIAG_PIN // defaults to 'Z+' connector #endif #endif diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h index bd9a1cf0b5..792f473d92 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h @@ -75,20 +75,6 @@ //#define Z_MIN_PROBE_PIN PF6 // IND-PROBE (with adjustable voltage & pullup set via jumpers) #endif -// -// Check for additional used endstop pins -// -#if HAS_EXTRA_ENDSTOPS - #define _ENDSTOP_IS_ANY(ES) X2_USE_ENDSTOP == ES || Y2_USE_ENDSTOP == ES || Z2_USE_ENDSTOP == ES || Z3_USE_ENDSTOP == ES || Z4_USE_ENDSTOP == ES - #if _ENDSTOP_IS_ANY(_XMIN_) || _ENDSTOP_IS_ANY(_XMAX_) - #define NEEDS_X_MINMAX - #endif - #if _ENDSTOP_IS_ANY(_YMIN_) || _ENDSTOP_IS_ANY(_YMAX_) - #define NEEDS_Y_MINMAX - #endif - #undef _ENDSTOP_IS_ANY -#endif - // // Limit Switches // @@ -99,7 +85,7 @@ #else #define X_MIN_PIN E0_DIAG_PIN // MIN5 #endif -#elif EITHER(DUAL_X_CARRIAGE, NEEDS_X_MINMAX) +#elif NEEDS_X_MINMAX #ifndef X_MIN_PIN #define X_MIN_PIN X_DIAG_PIN // MIN1 #endif @@ -117,7 +103,7 @@ #else #define Y_MIN_PIN E1_DIAG_PIN // MIN6 #endif -#elif ENABLED(NEEDS_Y_MINMAX) +#elif NEEDS_Y_MINMAX #ifndef Y_MIN_PIN #define Y_MIN_PIN Y_DIAG_PIN // MIN2 #endif diff --git a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h index e8e984fcb7..119c6b3929 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h @@ -68,23 +68,6 @@ #define Z_MIN_PROBE_PIN PB15 #endif -// -// Check for additional used endstop pins -// -#if HAS_EXTRA_ENDSTOPS - #define _ENDSTOP_IS_ANY(ES) X2_USE_ENDSTOP == ES || Y2_USE_ENDSTOP == ES || Z2_USE_ENDSTOP == ES || Z3_USE_ENDSTOP == ES || Z4_USE_ENDSTOP == ES - #if _ENDSTOP_IS_ANY(_XMIN_) || _ENDSTOP_IS_ANY(_XMAX_) - #define NEEDS_X_MINMAX - #endif - #if _ENDSTOP_IS_ANY(_YMIN_) || _ENDSTOP_IS_ANY(_YMAX_) - #define NEEDS_Y_MINMAX - #endif - #if _ENDSTOP_IS_ANY(_ZMIN_) || _ENDSTOP_IS_ANY(_ZMAX_) - #define NEEDS_Z_MINMAX - #endif - #undef _ENDSTOP_IS_ANY -#endif - // // Limit Switches // @@ -95,7 +78,7 @@ #else #define X_MIN_PIN E0_DIAG_PIN // E0DET #endif -#elif EITHER(DUAL_X_CARRIAGE, NEEDS_X_MINMAX) +#elif NEEDS_X_MINMAX #ifndef X_MIN_PIN #define X_MIN_PIN X_DIAG_PIN // X-STOP #endif @@ -113,7 +96,7 @@ #else #define Y_MIN_PIN E1_DIAG_PIN // E1DET #endif -#elif ENABLED(NEEDS_Y_MINMAX) +#elif NEEDS_Y_MINMAX #ifndef Y_MIN_PIN #define Y_MIN_PIN Y_DIAG_PIN // Y-STOP #endif @@ -131,7 +114,7 @@ #else #define Z_MIN_PIN E2_DIAG_PIN // PWRDET #endif -#elif ENABLED(NEEDS_Z_MINMAX) +#elif NEEDS_Z_MINMAX #ifndef Z_MIN_PIN #define Z_MIN_PIN Z_DIAG_PIN // Z-STOP #endif diff --git a/buildroot/tests/DUE b/buildroot/tests/DUE index 4ed234ab3a..c43d30c76e 100755 --- a/buildroot/tests/DUE +++ b/buildroot/tests/DUE @@ -37,7 +37,7 @@ exec_test $1 $2 "RAMPS4DUE_EFB with ABL (Bilinear), ExtUI, S-Curve, many options # restore_configs opt_set MOTHERBOARD BOARD_RADDS Z_DRIVER_TYPE A4988 Z2_DRIVER_TYPE A4988 Z3_DRIVER_TYPE A4988 -opt_enable USE_XMAX_PLUG USE_YMAX_PLUG ENDSTOPPULLUPS BLTOUCH AUTO_BED_LEVELING_BILINEAR \ +opt_enable ENDSTOPPULLUPS BLTOUCH AUTO_BED_LEVELING_BILINEAR \ Z_STEPPER_AUTO_ALIGN Z_STEPPER_ALIGN_STEPPER_XY Z_SAFE_HOMING pins_set ramps/RAMPS X_MAX_PIN -1 pins_set ramps/RAMPS Y_MAX_PIN -1 diff --git a/buildroot/tests/FYSETC_F6 b/buildroot/tests/FYSETC_F6 index 0c5f25a155..dbfb767171 100755 --- a/buildroot/tests/FYSETC_F6 +++ b/buildroot/tests/FYSETC_F6 @@ -43,7 +43,7 @@ opt_set MOTHERBOARD BOARD_FYSETC_F6_13 \ opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER \ MARLIN_BRICKOUT MARLIN_INVADERS MARLIN_SNAKE \ MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD \ - USE_ZMIN_PLUG SENSORLESS_HOMING TMC_DEBUG M114_DETAIL + SENSORLESS_HOMING TMC_DEBUG M114_DETAIL exec_test $1 $2 "RAMPS | Mixed TMC | Sensorless | RRDFGSC | Games" "$3" # @@ -62,7 +62,7 @@ opt_set MOTHERBOARD BOARD_FYSETC_F6_13 \ X_MAX_ENDSTOP_HIT_STATE HIGH \ X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2130 Z_DRIVER_TYPE TMC2130_STANDALONE E0_DRIVER_TYPE TMC2660 \ X_HARDWARE_SERIAL Serial2 -opt_enable USE_ZMIN_PLUG FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \ +opt_enable FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \ FYSETC_242_OLED_12864 EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL Z_SAFE_HOMING \ STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD SENSORLESS_HOMING EDGE_STEPPING exec_test $1 $2 "FYSETC_F6 | SCARA | Mixed TMC | EEPROM" "$3" diff --git a/buildroot/tests/LPC1769 b/buildroot/tests/LPC1769 index cf2838bdd5..733201e009 100755 --- a/buildroot/tests/LPC1769 +++ b/buildroot/tests/LPC1769 @@ -29,7 +29,7 @@ exec_test $1 $2 "Smoothieboard with TFTGLCD_PANEL_SPI and many features" "$3" #restore_configs #opt_set MOTHERBOARD BOARD_AZTEEG_X5_MINI_WIFI -#opt_enable COREYX USE_XMAX_PLUG DAC_MOTOR_CURRENT_DEFAULT \ +#opt_enable COREYX DAC_MOTOR_CURRENT_DEFAULT \ # REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT BABYSTEPPING \ # AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 EEPROM_SETTINGS \ # FILAMENT_LCD_DISPLAY FILAMENT_WIDTH_SENSOR FAN_SOFT_PWM \ @@ -56,7 +56,7 @@ opt_set MOTHERBOARD BOARD_COHESION3D_REMIX \ opt_enable AUTO_BED_LEVELING_BILINEAR EEPROM_SETTINGS EEPROM_CHITCHAT MECHANICAL_GANTRY_CALIBRATION \ TMC_USE_SW_SPI MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z HYBRID_THRESHOLD \ SENSORLESS_PROBING Z_SAFE_HOMING X_STALL_SENSITIVITY Y_STALL_SENSITIVITY Z_STALL_SENSITIVITY TMC_DEBUG \ - AXIS4_ROTATES I_MIN_POS I_MAX_POS I_HOME_DIR I_ENABLE_ON USE_IMIN_PLUG INVERT_I_DIR \ + AXIS4_ROTATES I_MIN_POS I_MAX_POS I_HOME_DIR I_ENABLE_ON INVERT_I_DIR \ EXPERIMENTAL_I2CBUS opt_disable PSU_CONTROL Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN exec_test $1 $2 "Cohesion3D Remix DELTA + ABL Bilinear + EEPROM + SENSORLESS_PROBING + I Axis" "$3" diff --git a/buildroot/tests/mega1280 b/buildroot/tests/mega1280 index d948623f48..53016e8406 100755 --- a/buildroot/tests/mega1280 +++ b/buildroot/tests/mega1280 @@ -40,7 +40,7 @@ restore_configs opt_set MOTHERBOARD BOARD_ZRIB_V52 \ LCD_LANGUAGE pt REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 \ EXTRUDERS 2 TEMP_SENSOR_1 1 X2_DRIVER_TYPE A4988 -opt_enable USE_XMAX_PLUG DUAL_X_CARRIAGE REPRAPWORLD_KEYPAD +opt_enable DUAL_X_CARRIAGE REPRAPWORLD_KEYPAD exec_test $1 $2 "ZRIB_V52 | DUAL_X_CARRIAGE" "$3" # diff --git a/buildroot/tests/rambo b/buildroot/tests/rambo index b50f220404..475b2daf87 100755 --- a/buildroot/tests/rambo +++ b/buildroot/tests/rambo @@ -17,7 +17,7 @@ opt_set MOTHERBOARD BOARD_RAMBO \ GRID_MAX_POINTS_X 16 AUTO_POWER_E_TEMP 80 \ FANMUX0_PIN 53 FIL_MOTION1_PIN 45 opt_disable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN USE_WATCHDOG -opt_enable USE_ZMAX_PLUG REPRAP_DISCOUNT_SMART_CONTROLLER LCD_PROGRESS_BAR LCD_PROGRESS_BAR_TEST \ +opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER LCD_PROGRESS_BAR LCD_PROGRESS_BAR_TEST \ FIX_MOUNTED_PROBE CODEPENDENT_XY_HOMING PIDTEMPBED PTC_PROBE PTC_BED \ PREHEAT_BEFORE_PROBING PROBING_HEATERS_OFF PROBING_FANS_OFF PROBING_STEPPERS_OFF WAIT_FOR_BED_HEATER \ EEPROM_SETTINGS SDSUPPORT SD_REPRINT_LAST_SELECTED_FILE BINARY_FILE_TRANSFER \ @@ -53,8 +53,7 @@ opt_set MOTHERBOARD BOARD_RAMBO \ AXIS_RELATIVE_MODES '{ false, false, false }' \ BED_TRAMMING_LEVELING_ORDER '{ LF, RF }' \ X2_DRIVER_TYPE A4988 Y2_DRIVER_TYPE A4988 -opt_enable USE_XMAX_PLUG USE_YMAX_PLUG USE_ZMAX_PLUG \ - REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER REVERSE_ENCODER_DIRECTION SDSUPPORT EEPROM_SETTINGS \ +opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER REVERSE_ENCODER_DIRECTION SDSUPPORT EEPROM_SETTINGS \ S_CURVE_ACCELERATION X_DUAL_ENDSTOPS Y_DUAL_ENDSTOPS \ ADAPTIVE_STEP_SMOOTHING CNC_COORDINATE_SYSTEMS GCODE_MOTION_MODES \ LCD_BED_TRAMMING BED_TRAMMING_INCLUDE_CENTER @@ -115,7 +114,7 @@ opt_set MOTHERBOARD BOARD_RAMBO \ CONTROLLER_FAN_PIN X_MAX_PIN FILWIDTH_PIN 5 \ FAN_MIN_PWM 50 FAN_KICKSTART_TIME 100 \ XY_FREQUENCY_LIMIT 15 -opt_enable COREYX USE_XMAX_PLUG MIXING_EXTRUDER GRADIENT_MIX \ +opt_enable COREYX MIXING_EXTRUDER GRADIENT_MIX \ BABYSTEPPING BABYSTEP_XY BABYSTEP_DISPLAY_TOTAL FILAMENT_LCD_DISPLAY \ REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER MENU_ADDAUTOSTART SDSUPPORT SDCARD_SORT_ALPHA \ ENDSTOP_NOISE_THRESHOLD FAN_SOFT_PWM \ diff --git a/buildroot/tests/teensy31 b/buildroot/tests/teensy31 index 7465a67fdd..5f5b84e0c4 100755 --- a/buildroot/tests/teensy31 +++ b/buildroot/tests/teensy31 @@ -15,7 +15,6 @@ exec_test $1 $2 "Teensy3.1 with default config" "$3" # restore_configs opt_set MOTHERBOARD BOARD_TEENSY31_32 X_HOME_DIR 0 Y_HOME_DIR 0 Z_HOME_DIR 0 -opt_disable USE_XMIN_PLUG USE_YMIN_PLUG USE_ZMIN_PLUG exec_test $1 $2 "Teensy3.1 with Zero Endstops" "$3" # diff --git a/buildroot/tests/teensy35 b/buildroot/tests/teensy35 index fd6ae86387..38da97c25b 100755 --- a/buildroot/tests/teensy35 +++ b/buildroot/tests/teensy35 @@ -87,7 +87,7 @@ opt_set MOTHERBOARD BOARD_TEENSY35_36 \ X_DRIVER_TYPE TMC5160 Y_DRIVER_TYPE TMC5160 \ X_MIN_ENDSTOP_HIT_STATE LOW Y_MIN_ENDSTOP_HIT_STATE LOW \ X_CS_PIN 46 Y_CS_PIN 47 -opt_enable COREXY USE_ZMIN_PLUG MONITOR_DRIVER_STATUS SENSORLESS_HOMING +opt_enable COREXY MONITOR_DRIVER_STATUS SENSORLESS_HOMING exec_test $1 $2 "Teensy 3.5/3.6 COREXY" "$3" # @@ -103,7 +103,7 @@ exec_test $1 $2 "Teensy 3.5/3.6 COREXZ | BACKLASH" "$3" # restore_configs opt_set MOTHERBOARD BOARD_TEENSY35_36 Z_DRIVER_TYPE A4988 Z2_DRIVER_TYPE A4988 Z2_MIN_PIN 2 -opt_enable Z_MULTI_ENDSTOPS USE_XMAX_PLUG +opt_enable Z_MULTI_ENDSTOPS pins_set ramps/RAMPS X_MAX_PIN -1 exec_test $1 $2 "Dual Z with Dual Z endstops" "$3" diff --git a/buildroot/tests/teensy41 b/buildroot/tests/teensy41 index 11b5e34025..e6a769c282 100755 --- a/buildroot/tests/teensy41 +++ b/buildroot/tests/teensy41 @@ -90,7 +90,7 @@ opt_set MOTHERBOARD BOARD_TEENSY41 \ X_DRIVER_TYPE TMC5160 Y_DRIVER_TYPE TMC5160 \ X_MIN_ENDSTOP_HIT_STATE LOW Y_MIN_ENDSTOP_HIT_STATE LOW \ X_CS_PIN 46 Y_CS_PIN 47 -opt_enable COREXY USE_ZMIN_PLUG MONITOR_DRIVER_STATUS SENSORLESS_HOMING +opt_enable COREXY MONITOR_DRIVER_STATUS SENSORLESS_HOMING exec_test $1 $2 "Teensy 4.0/4.1 COREXY" "$3" # @@ -106,7 +106,7 @@ exec_test $1 $2 "Teensy 4.0/4.1 COREXZ" "$3" # restore_configs opt_set MOTHERBOARD BOARD_TEENSY41 Z_DRIVER_TYPE A4988 Z2_DRIVER_TYPE A4988 Z2_MIN_PIN 2 -opt_enable Z_MULTI_ENDSTOPS USE_XMAX_PLUG +opt_enable Z_MULTI_ENDSTOPS pins_set ramps/RAMPS X_MAX_PIN -1 exec_test $1 $2 "Dual Z with Dual Z endstops" "$3" From 04a25ab49686a71f448e3605a192917d03f86a95 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 27 Apr 2023 00:22:32 +0000 Subject: [PATCH 338/659] [cron] Bump distribution date (2023-04-27) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index c357b9f8b8..94dc8bd024 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-26" +//#define STRING_DISTRIBUTION_DATE "2023-04-27" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index f2caef0458..dbed7697cb 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-26" + #define STRING_DISTRIBUTION_DATE "2023-04-27" #endif /** From 774861b15ddd850b34404e3daf931bf12f990919 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 26 Apr 2023 20:04:01 -0500 Subject: [PATCH 339/659] =?UTF-8?q?=F0=9F=94=A7=20Endstops=20followup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Changes.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/inc/Changes.h b/Marlin/src/inc/Changes.h index 8606cbcc93..8a4a9c2b48 100644 --- a/Marlin/src/inc/Changes.h +++ b/Marlin/src/inc/Changes.h @@ -655,8 +655,8 @@ #error "Y2_USE_ENDSTOP is obsolete. Instead set Y2_STOP_PIN directly. (e.g., 'Y2_USE_ENDSTOP _YMAX_' becomes 'Y2_STOP_PIN Y_MAX_PIN')" #elif defined(Z2_USE_ENDSTOP) #error "Z2_USE_ENDSTOP is obsolete. Instead set Z2_STOP_PIN directly. (e.g., 'Z2_USE_ENDSTOP _ZMAX_' becomes 'Z2_STOP_PIN Z_MAX_PIN')" -#elif defined(Z2_USE_ENDSTOP) - #error "Z2_USE_ENDSTOP is obsolete. Instead set Z2_STOP_PIN directly. (e.g., 'Z2_USE_ENDSTOP _ZMAX_' becomes 'Z2_STOP_PIN Z_MAX_PIN')" +#elif defined(Z3_USE_ENDSTOP) + #error "Z3_USE_ENDSTOP is obsolete. Instead set Z2_STOP_PIN directly. (e.g., 'Z3_USE_ENDSTOP _ZMAX_' becomes 'Z3_STOP_PIN Z_MAX_PIN')" #elif defined(Z4_USE_ENDSTOP) #error "Z4_USE_ENDSTOP is obsolete. Instead set Z4_STOP_PIN directly. (e.g., 'Z4_USE_ENDSTOP _ZMAX_' becomes 'Z4_STOP_PIN Z_MAX_PIN')" #endif From 9a7d9e6995f4f66c4b48147ec7876d49d4b3ae77 Mon Sep 17 00:00:00 2001 From: Martin Turski Date: Thu, 27 Apr 2023 14:05:24 +0200 Subject: [PATCH 340/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Opt?= =?UTF-8?q?imize=20PlatformIO=20source=20filtering=20(#25332)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/HAL/LPC1768/HAL.h | 4 +- Marlin/src/HAL/LPC1768/tft/tft_spi.cpp | 3 + Marlin/src/HAL/LPC1768/tft/xpt2046.cpp | 5 +- Marlin/src/HAL/STM32/HAL.h | 4 +- Marlin/src/HAL/STM32F1/HAL.h | 4 +- Marlin/src/HAL/shared/fauxpins.h | 367 ++++++++++++++++++ Marlin/src/gcode/control/M993_M994.cpp | 4 +- Marlin/src/gcode/gcode.cpp | 2 +- Marlin/src/gcode/gcode.h | 2 +- Marlin/src/gcode/{control => motion}/M400.cpp | 0 Marlin/src/gcode/temp/M155.cpp | 4 +- Marlin/src/inc/Conditionals_LCD.h | 8 + Marlin/src/inc/Conditionals_post.h | 39 +- Marlin/src/inc/MarlinConfig.h | 4 +- Marlin/src/inc/SanityCheck.h | 12 +- Marlin/src/lcd/HD44780/marlinui_HD44780.h | 1 - Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.h | 1 - Marlin/src/lcd/dogm/lcdprint_u8g.cpp | 1 - Marlin/src/lcd/dogm/marlinui_DOGM.cpp | 1 - .../lcd/dogm/status_screen_lite_ST7920.cpp | 1 - Marlin/src/lcd/dogm/u8g_fontutf8.cpp | 2 +- Marlin/src/lcd/dogm/u8g_fontutf8.h | 2 +- Marlin/src/lcd/e3v2/creality/dwin.cpp | 2 +- Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp | 2 +- Marlin/src/lcd/e3v2/marlinui/dwin_string.h | 2 +- Marlin/src/lcd/e3v2/marlinui/ui_common.cpp | 3 +- .../lcd/e3v2/marlinui/ui_status_480x272.cpp | 2 +- Marlin/src/lcd/e3v2/proui/dwin.cpp | 2 +- Marlin/src/lcd/lcdprint.h | 2 +- Marlin/src/lcd/marlinui.cpp | 2 +- Marlin/src/lcd/menu/menu_configuration.cpp | 12 +- Marlin/src/lcd/tft/tft_string.cpp | 2 +- Marlin/src/lcd/tft/tft_string.h | 2 +- Marlin/src/lcd/{fontutils.cpp => utf8.cpp} | 12 +- Marlin/src/lcd/{fontutils.h => utf8.h} | 4 +- Marlin/src/pins/ramps/pins_MKS_GEN_L.h | 2 +- .../PlatformIO/scripts/common-dependencies.h | 13 + .../PlatformIO/scripts/common-dependencies.py | 93 ++++- ini/features.ini | 33 +- ini/lpc176x.ini | 5 +- ini/stm32-common.ini | 10 +- ini/stm32f0.ini | 2 +- ini/stm32f1-maple.ini | 4 +- ini/stm32f1.ini | 2 +- platformio.ini | 263 +++---------- 45 files changed, 650 insertions(+), 297 deletions(-) create mode 100644 Marlin/src/HAL/shared/fauxpins.h rename Marlin/src/gcode/{control => motion}/M400.cpp (100%) rename Marlin/src/lcd/{fontutils.cpp => utf8.cpp} (97%) rename Marlin/src/lcd/{fontutils.h => utf8.h} (97%) diff --git a/Marlin/src/HAL/LPC1768/HAL.h b/Marlin/src/HAL/LPC1768/HAL.h index 15d61d30d1..6d5824f7a1 100644 --- a/Marlin/src/HAL/LPC1768/HAL.h +++ b/Marlin/src/HAL/LPC1768/HAL.h @@ -165,7 +165,9 @@ int16_t PARSED_PIN_INDEX(const char code, const int16_t dval); // Defines // ------------------------ -#define PLATFORM_M997_SUPPORT +#ifndef PLATFORM_M997_SUPPORT + #define PLATFORM_M997_SUPPORT +#endif void flashFirmware(const int16_t); #define HAL_CAN_SET_PWM_FREQ // This HAL supports PWM Frequency adjustment diff --git a/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp b/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp index abf1cf5e43..10555762b1 100644 --- a/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp +++ b/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp @@ -20,6 +20,8 @@ * */ +#ifdef TARGET_LPC1768 + #include "../../../inc/MarlinConfig.h" #if HAS_SPI_TFT @@ -143,3 +145,4 @@ void TFT_SPI::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Coun } #endif // HAS_SPI_TFT +#endif // TARGET_LPC1768 diff --git a/Marlin/src/HAL/LPC1768/tft/xpt2046.cpp b/Marlin/src/HAL/LPC1768/tft/xpt2046.cpp index 68a2176f5e..910511612b 100644 --- a/Marlin/src/HAL/LPC1768/tft/xpt2046.cpp +++ b/Marlin/src/HAL/LPC1768/tft/xpt2046.cpp @@ -20,6 +20,8 @@ * */ +#ifdef TARGET_LPC1768 + #include "../../../inc/MarlinConfig.h" #if HAS_TFT_XPT2046 || HAS_RES_TOUCH_BUTTONS @@ -130,4 +132,5 @@ uint16_t XPT2046::SoftwareIO(uint16_t data) { return result; } -#endif // HAS_TFT_XPT2046 +#endif // HAS_TFT_XPT2046 || HAS_RES_TOUCH_BUTTONS +#endif // TARGET_LPC1768 diff --git a/Marlin/src/HAL/STM32/HAL.h b/Marlin/src/HAL/STM32/HAL.h index 26fcc2a2e1..54359c5b09 100644 --- a/Marlin/src/HAL/STM32/HAL.h +++ b/Marlin/src/HAL/STM32/HAL.h @@ -175,7 +175,9 @@ typedef libServo hal_servo_t; #define JTAGSWD_RESET() AFIO_DBGAFR_CONFIG(AFIO_MAPR_SWJ_CFG_RESET); // Reset: FULL SWD+JTAG #endif -#define PLATFORM_M997_SUPPORT +#ifndef PLATFORM_M997_SUPPORT + #define PLATFORM_M997_SUPPORT +#endif void flashFirmware(const int16_t); // Maple Compatibility diff --git a/Marlin/src/HAL/STM32F1/HAL.h b/Marlin/src/HAL/STM32F1/HAL.h index b14b5f7e79..954281a4be 100644 --- a/Marlin/src/HAL/STM32F1/HAL.h +++ b/Marlin/src/HAL/STM32F1/HAL.h @@ -205,7 +205,9 @@ void analogWrite(const pin_t pin, int pwm_val8); // PWM only! mul by 257 in mapl #define JTAG_DISABLE() afio_cfg_debug_ports(AFIO_DEBUG_SW_ONLY) #define JTAGSWD_DISABLE() afio_cfg_debug_ports(AFIO_DEBUG_NONE) -#define PLATFORM_M997_SUPPORT +#ifndef PLATFORM_M997_SUPPORT + #define PLATFORM_M997_SUPPORT +#endif void flashFirmware(const int16_t); #define HAL_CAN_SET_PWM_FREQ // This HAL supports PWM Frequency adjustment diff --git a/Marlin/src/HAL/shared/fauxpins.h b/Marlin/src/HAL/shared/fauxpins.h new file mode 100644 index 0000000000..8bc52c6926 --- /dev/null +++ b/Marlin/src/HAL/shared/fauxpins.h @@ -0,0 +1,367 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +// +// Faux pins for Dependency Check +// + +// +// STM32 Pin Names +// +#define PA0 0x10 +#define PA1 0x11 +#define PA2 0x12 +#define PA3 0x13 +#define PA4 0x14 +#define PA5 0x15 +#define PA6 0x16 +#define PA7 0x17 +#define PA8 0x18 +#define PA9 0x19 +#define PA10 0x1A +#define PA11 0x1B +#define PA12 0x1C +#define PA13 0x1D +#define PA14 0x1E +#define PA15 0x1F + +#define PB0 0x20 +#define PB1 0x21 +#define PB2 0x22 +#define PB3 0x23 +#define PB4 0x24 +#define PB5 0x25 +#define PB6 0x26 +#define PB7 0x27 +#define PB8 0x28 +#define PB9 0x29 +#define PB10 0x2A +#define PB11 0x2B +#define PB12 0x2C +#define PB13 0x2D +#define PB14 0x2E +#define PB15 0x2F + +#define PC0 0x30 +#define PC1 0x31 +#define PC2 0x32 +#define PC3 0x33 +#define PC4 0x34 +#define PC5 0x35 +#define PC6 0x36 +#define PC7 0x37 +#define PC8 0x38 +#define PC9 0x39 +#define PC10 0x3A +#define PC11 0x3B +#define PC12 0x3C +#define PC13 0x3D +#define PC14 0x3E +#define PC15 0x3F + +#define PD0 0x40 +#define PD1 0x41 +#define PD2 0x42 +#define PD3 0x43 +#define PD4 0x44 +#define PD5 0x45 +#define PD6 0x46 +#define PD7 0x47 +#define PD8 0x48 +#define PD9 0x49 +#define PD10 0x4A +#define PD11 0x4B +#define PD12 0x4C +#define PD13 0x4D +#define PD14 0x4E +#define PD15 0x4F + +#define PE0 0x50 +#define PE1 0x51 +#define PE2 0x52 +#define PE3 0x53 +#define PE4 0x54 +#define PE5 0x55 +#define PE6 0x56 +#define PE7 0x57 +#define PE8 0x58 +#define PE9 0x59 +#define PE10 0x5A +#define PE11 0x5B +#define PE12 0x5C +#define PE13 0x5D +#define PE14 0x5E +#define PE15 0x5F + +#define PF0 0x60 +#define PF1 0x61 +#define PF2 0x62 +#define PF3 0x63 +#define PF4 0x64 +#define PF5 0x65 +#define PF6 0x66 +#define PF7 0x67 +#define PF8 0x68 +#define PF9 0x69 +#define PF10 0x6A +#define PF11 0x6B +#define PF12 0x6C +#define PF13 0x6D +#define PF14 0x6E +#define PF15 0x6F + +#define PG0 0x70 +#define PG1 0x71 +#define PG2 0x72 +#define PG3 0x73 +#define PG4 0x74 +#define PG5 0x75 +#define PG6 0x76 +#define PG7 0x77 +#define PG8 0x78 +#define PG9 0x79 +#define PG10 0x7A +#define PG11 0x7B +#define PG12 0x7C +#define PG13 0x7D +#define PG14 0x7E +#define PG15 0x7F + +#define PH0 0x80 +#define PH1 0x81 +#define PH2 0x82 +#define PH3 0x83 +#define PH4 0x84 +#define PH5 0x85 +#define PH6 0x86 +#define PH7 0x87 +#define PH8 0x88 +#define PH9 0x89 +#define PH10 0x8A +#define PH11 0x8B +#define PH12 0x8C +#define PH13 0x8D +#define PH14 0x8E +#define PH15 0x8F + +#define PI0 0x90 +#define PI1 0x91 +#define PI2 0x92 +#define PI3 0x93 +#define PI4 0x94 +#define PI5 0x95 +#define PI6 0x96 +#define PI7 0x97 +#define PI8 0x98 +#define PI9 0x99 +#define PI10 0x9A +#define PI11 0x9B +#define PI12 0x9C +#define PI13 0x9D +#define PI14 0x9E +#define PI15 0x9F + +#define PJ0 0xA0 +#define PJ1 0xA1 +#define PJ2 0xA2 +#define PJ3 0xA3 +#define PJ4 0xA4 +#define PJ5 0xA5 +#define PJ6 0xA6 +#define PJ7 0xA7 +#define PJ8 0xA8 +#define PJ9 0xA9 +#define PJ10 0xAA +#define PJ11 0xAB +#define PJ12 0xAC +#define PJ13 0xAD +#define PJ14 0xAE +#define PJ15 0xAF + +// +// LPC Pin Names +// +#define P0_0 100 +#define P0_1 101 +#define P0_2 102 +#define P0_3 103 +#define P0_4 104 +#define P0_5 105 +#define P0_6 106 +#define P0_7 107 +#define P0_8 108 +#define P0_9 109 +#define P0_10 110 +#define P0_11 111 +#define P0_12 112 +#define P0_13 113 +#define P0_14 114 +#define P0_15 115 +#define P0_16 116 +#define P0_17 117 +#define P0_18 118 +#define P0_19 119 +#define P0_20 120 +#define P0_21 121 +#define P0_22 122 +#define P0_23 123 +#define P0_24 124 +#define P0_25 125 +#define P0_26 126 +#define P0_27 127 +#define P0_28 128 +#define P0_29 129 +#define P0_30 130 +#define P0_31 131 + +#define P1_0 200 +#define P1_1 201 +#define P1_2 202 +#define P1_3 203 +#define P1_4 204 +#define P1_5 205 +#define P1_6 206 +#define P1_7 207 +#define P1_8 208 +#define P1_9 209 +#define P1_10 210 +#define P1_11 211 +#define P1_12 212 +#define P1_13 213 +#define P1_14 214 +#define P1_15 215 +#define P1_16 216 +#define P1_17 217 +#define P1_18 218 +#define P1_19 219 +#define P1_20 220 +#define P1_21 221 +#define P1_22 222 +#define P1_23 223 +#define P1_24 224 +#define P1_25 225 +#define P1_26 226 +#define P1_27 227 +#define P1_28 228 +#define P1_29 229 +#define P1_30 230 +#define P1_31 231 + +#define P2_0 300 +#define P2_1 301 +#define P2_2 302 +#define P2_3 303 +#define P2_4 304 +#define P2_5 305 +#define P2_6 306 +#define P2_7 307 +#define P2_8 308 +#define P2_9 309 +#define P2_10 310 +#define P2_11 311 +#define P2_12 312 +#define P2_13 313 +#define P2_14 314 +#define P2_15 315 +#define P2_16 316 +#define P2_17 317 +#define P2_18 318 +#define P2_19 319 +#define P2_20 320 +#define P2_21 321 +#define P2_22 322 +#define P2_23 323 +#define P2_24 324 +#define P2_25 325 +#define P2_26 326 +#define P2_27 327 +#define P2_28 328 +#define P2_29 329 +#define P2_30 330 +#define P2_31 331 + +#define P3_0 400 +#define P3_1 401 +#define P3_2 402 +#define P3_3 403 +#define P3_4 404 +#define P3_5 405 +#define P3_6 406 +#define P3_7 407 +#define P3_8 408 +#define P3_9 409 +#define P3_10 410 +#define P3_11 411 +#define P3_12 412 +#define P3_13 413 +#define P3_14 414 +#define P3_15 415 +#define P3_16 416 +#define P3_17 417 +#define P3_18 418 +#define P3_19 419 +#define P3_20 420 +#define P3_21 421 +#define P3_22 422 +#define P3_23 423 +#define P3_24 424 +#define P3_25 425 +#define P3_26 426 +#define P3_27 427 +#define P3_28 428 +#define P3_29 429 +#define P3_30 430 +#define P3_31 431 + +#define P4_0 500 +#define P4_1 501 +#define P4_2 502 +#define P4_3 503 +#define P4_4 504 +#define P4_5 505 +#define P4_6 506 +#define P4_7 507 +#define P4_8 508 +#define P4_9 509 +#define P4_10 510 +#define P4_11 511 +#define P4_12 512 +#define P4_13 513 +#define P4_14 514 +#define P4_15 515 +#define P4_16 516 +#define P4_17 517 +#define P4_18 518 +#define P4_19 519 +#define P4_20 520 +#define P4_21 521 +#define P4_22 522 +#define P4_23 523 +#define P4_24 524 +#define P4_25 525 +#define P4_26 526 +#define P4_27 527 +#define P4_28 528 +#define P4_29 529 +#define P4_30 530 +#define P4_31 531 diff --git a/Marlin/src/gcode/control/M993_M994.cpp b/Marlin/src/gcode/control/M993_M994.cpp index f6fe0f34ad..bc634ae13c 100644 --- a/Marlin/src/gcode/control/M993_M994.cpp +++ b/Marlin/src/gcode/control/M993_M994.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if ALL(SPI_FLASH, HAS_MEDIA, MARLIN_DEV_MODE) +#if SPI_FLASH_BACKUP #include "../gcode.h" #include "../../sd/cardreader.h" @@ -85,4 +85,4 @@ void GcodeSuite::M994() { card.closefile(); } -#endif // SPI_FLASH && HAS_MEDIA && MARLIN_DEV_MODE +#endif // SPI_FLASH_BACKUP diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 931c30c26d..013a2bfb74 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -1061,7 +1061,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 422: M422(); break; // M422: Set Z Stepper automatic alignment position using probe #endif - #if ALL(SPI_FLASH, HAS_MEDIA, MARLIN_DEV_MODE) + #if SPI_FLASH_BACKUP case 993: M993(); break; // M993: Backup SPI Flash to SD case 994: M994(); break; // M994: Load a Backup from SD to SPI Flash #endif diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 6a66fa911a..05175abd9d 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -1207,7 +1207,7 @@ private: static void M995(); #endif - #if BOTH(SPI_FLASH, HAS_MEDIA) + #if SPI_FLASH_BACKUP static void M993(); static void M994(); #endif diff --git a/Marlin/src/gcode/control/M400.cpp b/Marlin/src/gcode/motion/M400.cpp similarity index 100% rename from Marlin/src/gcode/control/M400.cpp rename to Marlin/src/gcode/motion/M400.cpp diff --git a/Marlin/src/gcode/temp/M155.cpp b/Marlin/src/gcode/temp/M155.cpp index 48c23986ae..f1744c8a1e 100644 --- a/Marlin/src/gcode/temp/M155.cpp +++ b/Marlin/src/gcode/temp/M155.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if BOTH(AUTO_REPORT_TEMPERATURES, HAS_TEMP_SENSOR) +#if ENABLED(AUTO_REPORT_TEMPERATURES) #include "../gcode.h" #include "../../module/temperature.h" @@ -37,4 +37,4 @@ void GcodeSuite::M155() { } -#endif // AUTO_REPORT_TEMPERATURES && HAS_TEMP_SENSOR +#endif // AUTO_REPORT_TEMPERATURES diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index f012bd9e36..c28a49c8df 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -540,6 +540,10 @@ #define HAS_LCDPRINT 1 #endif +#if HAS_DISPLAY || HAS_LCDPRINT + #define HAS_UTF8_UTILS 1 +#endif + #if HAS_DISPLAY || HAS_DWIN_E3V2 #define HAS_STATUS_MESSAGE 1 #endif @@ -1797,3 +1801,7 @@ #if defined(NEOPIXEL_BKGD_INDEX_FIRST) && !defined(NEOPIXEL_BKGD_INDEX_LAST) #define NEOPIXEL_BKGD_INDEX_LAST NEOPIXEL_BKGD_INDEX_FIRST #endif + +#if ALL(SPI_FLASH, HAS_MEDIA, MARLIN_DEV_MODE) + #define SPI_FLASH_BACKUP 1 +#endif diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 9e8e8ed17f..bb78178ad5 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -2503,6 +2503,24 @@ #undef AUTO_POWER_COOLER_FAN #endif +/** + * Controller Fan Settings + */ +#if PIN_EXISTS(CONTROLLER_FAN) + #define HAS_CONTROLLER_FAN 1 +#endif + +#if HAS_CONTROLLER_FAN + #if ENABLED(CONTROLLER_FAN_USE_BOARD_TEMP) + #define HAS_CONTROLLER_FAN_BOARD_TEMP_TRIGGER 1 + #ifndef CONTROLLER_FAN_TRIGGER_TEMP + #define CONTROLLER_FAN_TRIGGER_TEMP 30 + #endif + #else + #undef CONTROLLER_FAN_TRIGGER_TEMP + #endif +#endif + // Print Cooling fans (limit) #ifdef NUM_M106_FANS #define MAX_FANS NUM_M106_FANS @@ -2512,11 +2530,12 @@ #define _IS_E_AUTO(N,F) (PIN_EXISTS(E##N##_AUTO_FAN) && E##N##_AUTO_FAN_PIN == FAN##F##_PIN) #define _HAS_FAN(F) (F < MAX_FANS && PIN_EXISTS(FAN##F) \ - && CONTROLLER_FAN_PIN != FAN##F##_PIN \ + && !(HAS_CONTROLLER_FAN && CONTROLLER_FAN_PIN == FAN##F##_PIN) \ && !_IS_E_AUTO(0,F) && !_IS_E_AUTO(1,F) \ && !_IS_E_AUTO(2,F) && !_IS_E_AUTO(3,F) \ && !_IS_E_AUTO(4,F) && !_IS_E_AUTO(5,F) \ && !_IS_E_AUTO(6,F) && !_IS_E_AUTO(7,F)) + #if _HAS_FAN(0) #define HAS_FAN0 1 #endif @@ -2583,24 +2602,6 @@ #define HAS_FANMUX 1 // Part Cooling fan multipliexer #endif -/** - * Controller Fan Settings - */ -#if PIN_EXISTS(CONTROLLER_FAN) - #define HAS_CONTROLLER_FAN 1 -#endif - -#if HAS_CONTROLLER_FAN - #if ENABLED(CONTROLLER_FAN_USE_BOARD_TEMP) - #define HAS_CONTROLLER_FAN_BOARD_TEMP_TRIGGER 1 - #ifndef CONTROLLER_FAN_TRIGGER_TEMP - #define CONTROLLER_FAN_TRIGGER_TEMP 30 - #endif - #else - #undef CONTROLLER_FAN_TRIGGER_TEMP - #endif -#endif - /** * MIN/MAX fan PWM scaling */ diff --git a/Marlin/src/inc/MarlinConfig.h b/Marlin/src/inc/MarlinConfig.h index c6c0bfbe21..dda1480e02 100644 --- a/Marlin/src/inc/MarlinConfig.h +++ b/Marlin/src/inc/MarlinConfig.h @@ -27,7 +27,9 @@ #include "MarlinConfigPre.h" -#ifndef __MARLIN_DEPS__ +#ifdef __MARLIN_DEPS__ + #include "../HAL/shared/fauxpins.h" +#else #include "../HAL/HAL.h" #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 35da7935de..d4f9423080 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -3700,10 +3700,14 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); #endif -#if ENABLED(COOLANT_MIST) && !PIN_EXISTS(COOLANT_MIST) - #error "COOLANT_MIST requires COOLANT_MIST_PIN to be defined." -#elif ENABLED(COOLANT_FLOOD) && !PIN_EXISTS(COOLANT_FLOOD) - #error "COOLANT_FLOOD requires COOLANT_FLOOD_PIN to be defined." +#if ENABLED(COOLANT_CONTROL) + #if NONE(COOLANT_MIST, COOLANT_FLOOD) + #error "COOLANT_CONTROL requires either COOLANT_MIST or COOLANT_FLOOD." + #elif ENABLED(COOLANT_MIST) && !PIN_EXISTS(COOLANT_MIST) + #error "COOLANT_MIST requires COOLANT_MIST_PIN to be defined." + #elif ENABLED(COOLANT_FLOOD) && !PIN_EXISTS(COOLANT_FLOOD) + #error "COOLANT_FLOOD requires COOLANT_FLOOD_PIN to be defined." + #endif #endif #if HAS_ADC_BUTTONS && defined(ADC_BUTTON_DEBOUNCE_DELAY) && ADC_BUTTON_DEBOUNCE_DELAY < 16 diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.h b/Marlin/src/lcd/HD44780/marlinui_HD44780.h index 62c0c76202..719514fb11 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.h +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.h @@ -103,5 +103,4 @@ #endif -#include "../fontutils.h" #include "../lcdprint.h" diff --git a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.h b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.h index c399b907e4..3e447fa196 100644 --- a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.h +++ b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.h @@ -57,7 +57,6 @@ class TFTGLCD { extern TFTGLCD lcd; -#include "../fontutils.h" #include "../lcdprint.h" // Use panel encoder - free old encoder pins diff --git a/Marlin/src/lcd/dogm/lcdprint_u8g.cpp b/Marlin/src/lcd/dogm/lcdprint_u8g.cpp index 74a49b0950..ea0db357b6 100644 --- a/Marlin/src/lcd/dogm/lcdprint_u8g.cpp +++ b/Marlin/src/lcd/dogm/lcdprint_u8g.cpp @@ -16,7 +16,6 @@ #include "../marlinui.h" #include "../../MarlinCore.h" -#include "../fontutils.h" #include "u8g_fontutf8.h" #include "../lcdprint.h" diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp index 76fa7842a3..2552df3b88 100644 --- a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp +++ b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp @@ -47,7 +47,6 @@ #endif #include "../lcdprint.h" -#include "../fontutils.h" #include "../../libs/numtostr.h" #include "../marlinui.h" diff --git a/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp index a4ace1ce8a..bc961dbf15 100644 --- a/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp +++ b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp @@ -73,7 +73,6 @@ #if ENABLED(LIGHTWEIGHT_UI) #include "../marlinui.h" -#include "../fontutils.h" #include "../lcdprint.h" #include "../../libs/duration_t.h" #include "../../module/motion.h" diff --git a/Marlin/src/lcd/dogm/u8g_fontutf8.cpp b/Marlin/src/lcd/dogm/u8g_fontutf8.cpp index e9d1535096..79fabfd805 100644 --- a/Marlin/src/lcd/dogm/u8g_fontutf8.cpp +++ b/Marlin/src/lcd/dogm/u8g_fontutf8.cpp @@ -12,7 +12,7 @@ #if HAS_MARLINUI_U8GLIB #include -#include "../fontutils.h" +#include "../utf8.h" #include "u8g_fontutf8.h" typedef void font_t; diff --git a/Marlin/src/lcd/dogm/u8g_fontutf8.h b/Marlin/src/lcd/dogm/u8g_fontutf8.h index 660eb28ffe..281894509d 100644 --- a/Marlin/src/lcd/dogm/u8g_fontutf8.h +++ b/Marlin/src/lcd/dogm/u8g_fontutf8.h @@ -9,7 +9,7 @@ #pragma once #include -#include "../fontutils.h" +#include "../utf8.h" // the macro to indicate a UTF-8 string // You should to save the C/C++ source in UTF-8 encoding! diff --git a/Marlin/src/lcd/e3v2/creality/dwin.cpp b/Marlin/src/lcd/e3v2/creality/dwin.cpp index 66baff1611..73621851df 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.cpp +++ b/Marlin/src/lcd/e3v2/creality/dwin.cpp @@ -45,7 +45,7 @@ #define JUST_BABYSTEP 1 #endif -#include "../../fontutils.h" +#include "../../utf8.h" #include "../../marlinui.h" #include "../../../sd/cardreader.h" diff --git a/Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp b/Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp index 6d60608426..10a478f756 100644 --- a/Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp @@ -25,7 +25,7 @@ #if IS_DWIN_MARLINUI #include "dwin_string.h" -//#include "../../fontutils.h" +//#include "../../utf8.h" char DWIN_String::data[]; uint16_t DWIN_String::span; diff --git a/Marlin/src/lcd/e3v2/marlinui/dwin_string.h b/Marlin/src/lcd/e3v2/marlinui/dwin_string.h index 686b1aa2b1..4224b26458 100644 --- a/Marlin/src/lcd/e3v2/marlinui/dwin_string.h +++ b/Marlin/src/lcd/e3v2/marlinui/dwin_string.h @@ -23,7 +23,7 @@ // TODO: Make AVR-compatible with separate ROM / RAM string methods -#include "../../fontutils.h" +#include "../../utf8.h" #include "../../marlinui.h" #include diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp index 4b34d65100..58a84ac34e 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp @@ -28,9 +28,8 @@ #include "dwin_lcd.h" #include "dwin_string.h" -//#include "../../lcdprint.h" #include "lcdprint_dwin.h" -#include "../../fontutils.h" +#include "../../utf8.h" #include "../../../libs/numtostr.h" #include "../../marlinui.h" diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp index cfa326667a..70c7c2d8f0 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp @@ -29,7 +29,7 @@ #include "dwin_string.h" #include "lcdprint_dwin.h" -#include "../../fontutils.h" +#include "../../utf8.h" #include "../../../libs/numtostr.h" #include "../../marlinui.h" diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index af157921d5..a372ae5b4d 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -31,7 +31,7 @@ #if ENABLED(DWIN_LCD_PROUI) -#include "../../fontutils.h" +#include "../../utf8.h" #include "../../marlinui.h" #include "../../../sd/cardreader.h" diff --git a/Marlin/src/lcd/lcdprint.h b/Marlin/src/lcd/lcdprint.h index 623c9dd4b9..9ba5147918 100644 --- a/Marlin/src/lcd/lcdprint.h +++ b/Marlin/src/lcd/lcdprint.h @@ -30,7 +30,7 @@ */ #pragma once -#include "fontutils.h" +#include "utf8.h" #include "../inc/MarlinConfig.h" diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 75e24e2313..ec929753ae 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -42,7 +42,7 @@ MarlinUI ui; #if HAS_DISPLAY #include "../gcode/queue.h" - #include "fontutils.h" + #include "utf8.h" #endif #if ENABLED(DWIN_CREALITY_LCD) diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index 2fe4b77018..0611bda84b 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -59,9 +59,13 @@ #include "../../libs/buzzer.h" #endif -#include "../../core/debug_out.h" +#if EITHER(LCD_PROGRESS_BAR_TEST, LCD_ENDSTOP_TEST) + #include "../lcdprint.h" + #define HAS_DEBUG_MENU 1 +#endif -#define HAS_DEBUG_MENU EITHER(LCD_PROGRESS_BAR_TEST, LCD_ENDSTOP_TEST) +//#define DEBUG_OUT 1 +#include "../../core/debug_out.h" void menu_advanced_settings(); #if EITHER(DELTA_CALIBRATION_MENU, DELTA_AUTO_CALIBRATION) @@ -70,8 +74,6 @@ void menu_advanced_settings(); #if ENABLED(LCD_PROGRESS_BAR_TEST) - #include "../lcdprint.h" - static void progress_bar_test() { static int8_t bar_percent = 0; if (ui.use_click()) { @@ -96,8 +98,6 @@ void menu_advanced_settings(); #if ENABLED(LCD_ENDSTOP_TEST) - #include "../lcdprint.h" - #define __STOP_ITEM(F,S) PSTRING_ITEM_F_P(F, TEST(stops, S) ? PSTR(STR_ENDSTOP_HIT) : PSTR(STR_ENDSTOP_OPEN), SS_FULL) #define _STOP_ITEM(L,S) __STOP_ITEM(F(L), S) #define STOP_ITEM(A,I) _STOP_ITEM(STRINGIFY(A) STRINGIFY(I) " " TERN(A##_HOME_TO_MAX, "Max", "Min"), A##I##_ENDSTOP) diff --git a/Marlin/src/lcd/tft/tft_string.cpp b/Marlin/src/lcd/tft/tft_string.cpp index 82444a4398..19ea5b2079 100644 --- a/Marlin/src/lcd/tft/tft_string.cpp +++ b/Marlin/src/lcd/tft/tft_string.cpp @@ -25,7 +25,7 @@ #if HAS_GRAPHICAL_TFT #include "tft_string.h" -#include "../fontutils.h" +#include "../utf8.h" #include "../marlinui.h" //#define DEBUG_TFT_FONT diff --git a/Marlin/src/lcd/tft/tft_string.h b/Marlin/src/lcd/tft/tft_string.h index 8596667047..3df6afe49b 100644 --- a/Marlin/src/lcd/tft/tft_string.h +++ b/Marlin/src/lcd/tft/tft_string.h @@ -23,7 +23,7 @@ #include -#include "../fontutils.h" +#include "../utf8.h" #define NO_GLYPH 0xFF diff --git a/Marlin/src/lcd/fontutils.cpp b/Marlin/src/lcd/utf8.cpp similarity index 97% rename from Marlin/src/lcd/fontutils.cpp rename to Marlin/src/lcd/utf8.cpp index 46329fd4be..075f8b0c7c 100644 --- a/Marlin/src/lcd/fontutils.cpp +++ b/Marlin/src/lcd/utf8.cpp @@ -21,14 +21,18 @@ */ /** - * @file fontutils.cpp - * @brief help functions for font and char + * @file utf8.cpp + * @brief Helper functions for UTF-8 strings * @author Yunhui Fu (yhfudev@gmail.com) * @version 1.0 * @date 2016-08-19 * @copyright GPL/BSD */ +#include "../inc/MarlinConfigPre.h" + +#if HAS_UTF8_UTILS + #include "../inc/MarlinConfig.h" #if HAS_WIRED_LCD @@ -36,7 +40,7 @@ #include "../MarlinCore.h" #endif -#include "fontutils.h" +#include "utf8.h" uint8_t read_byte_ram(const uint8_t *str) { return *str; } uint8_t read_byte_rom(const uint8_t *str) { return pgm_read_byte(str); } @@ -203,3 +207,5 @@ uint8_t utf8_byte_pos_by_char_num(const char *pstart, const uint8_t charnum) { uint8_t utf8_byte_pos_by_char_num_P(PGM_P pstart, const uint8_t charnum) { return utf8_byte_pos_by_char_num_cb(pstart, read_byte_rom, charnum); } + +#endif // HAS_UTF8_UTILS diff --git a/Marlin/src/lcd/fontutils.h b/Marlin/src/lcd/utf8.h similarity index 97% rename from Marlin/src/lcd/fontutils.h rename to Marlin/src/lcd/utf8.h index 69edf1a0c8..6031818571 100644 --- a/Marlin/src/lcd/fontutils.h +++ b/Marlin/src/lcd/utf8.h @@ -21,8 +21,8 @@ */ /** - * @file fontutils.h - * @brief help functions for font and char + * @file utf8.h + * @brief Helper functions for UTF-8 strings * @author Yunhui Fu (yhfudev@gmail.com) * @version 1.0 * @date 2016-08-19 diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_L.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L.h index 06bb35c72b..73e7aa577d 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_L.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_L.h @@ -38,7 +38,7 @@ // Heaters / Fans // -#define MOSFET_A_PIN 10 // HE0 +#define MOSFET_A_PIN 10 // HE0 #define MOSFET_B_PIN 7 // HE1 or FAN Hotend Cooling #define MOSFET_C_PIN 8 // HBED #define FAN0_PIN 9 // FAN Part Cooling diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.h b/buildroot/share/PlatformIO/scripts/common-dependencies.h index 9bdcac5db1..4438b4efe1 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.h +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.h @@ -105,3 +105,16 @@ #define HAS_MENU_UBL #endif #endif + +#if HAS_GRAPHICAL_TFT + #define NOTOSANS 1 + #define UNIFONT 2 + #define HELVETICA 3 + #if TFT_FONT == NOTOSANS + #define TFT_FONT_NOTOSANS + #elif TFT_FONT == UNIFONT + #define TFT_FONT_UNIFONT + #elif TFT_FONT == HELVETICA + #define TFT_FONT_HELVETICA + #endif +#endif diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.py b/buildroot/share/PlatformIO/scripts/common-dependencies.py index 6b5a9aea57..58d9cfcb4d 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.py +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.py @@ -5,7 +5,9 @@ import pioutil if pioutil.is_pio_build(): - import subprocess,os,re + import subprocess,os,re,fnmatch,glob + srcfilepattern = re.compile(r".*[.](cpp|c)$") + marlinbasedir = os.path.join(os.getcwd(), "Marlin/") Import("env") from platformio.package.meta import PackageSpec @@ -128,6 +130,7 @@ if pioutil.is_pio_build(): def apply_features_config(): load_features() blab("========== Apply enabled features...") + build_filters = ' '.join(env.GetProjectOption('src_filter')) for feature in FEATURE_CONFIG: if not env.MarlinHas(feature): continue @@ -174,23 +177,87 @@ if pioutil.is_pio_build(): if 'src_filter' in feat: blab("========== Adding build_src_filter for %s... " % feature, 2) - src_filter = ' '.join(env.GetProjectOption('src_filter')) - # first we need to remove the references to the same folder - my_srcs = re.findall(r'[+-](<.*?>)', feat['src_filter']) - cur_srcs = re.findall(r'[+-](<.*?>)', src_filter) - for d in my_srcs: - if d in cur_srcs: - src_filter = re.sub(r'[+-]' + d, '', src_filter) - - src_filter = feat['src_filter'] + ' ' + src_filter - set_env_field('build_src_filter', [src_filter]) - env.Replace(SRC_FILTER=src_filter) + build_filters = build_filters + ' ' + feat['src_filter'] + # Just append the filter in the order that the build environment specifies. + # Important here is the order of entries in the "features.ini" file. if 'lib_ignore' in feat: blab("========== Adding lib_ignore for %s... " % feature, 2) lib_ignore = env.GetProjectOption('lib_ignore') + [feat['lib_ignore']] set_env_field('lib_ignore', lib_ignore) + src_filter = "" + if True: + # Build the actual equivalent build_src_filter list based on the inclusions by the features. + # PlatformIO doesn't do it this way, but maybe in the future.... + cur_srcs = set() + # Remove the references to the same folder + my_srcs = re.findall(r'([+-]<.*?>)', build_filters) + for d in my_srcs: + # Assume normalized relative paths + plain = d[2:-1] + if d[0] == '+': + def addentry(fullpath, info=None): + relp = os.path.relpath(fullpath, marlinbasedir) + if srcfilepattern.match(relp): + if info: + blab("Added src file %s (%s)" % (relp, str(info))) + else: + blab("Added src file %s " % relp) + cur_srcs.add(relp) + # Special rule: If a direct folder is specified add all files within. + fullplain = os.path.join(marlinbasedir, plain) + if os.path.isdir(fullplain): + blab("Directory content addition for %s " % plain) + gpattern = os.path.join(fullplain, "**") + for fname in glob.glob(gpattern, recursive=True): + addentry(fname, "dca") + else: + # Add all the things from the pattern by GLOB. + def srepl(matchi): + g0 = matchi.group(0) + return r"**" + g0[1:] + gpattern = re.sub(r'[*]($|[^*])', srepl, plain) + gpattern = os.path.join(marlinbasedir, gpattern) + + for fname in glob.glob(gpattern, recursive=True): + addentry(fname) + else: + # Special rule: If a direct folder is specified then remove all files within. + def onremove(relp, info=None): + if info: + blab("Removed src file %s (%s)" % (relp, str(info))) + else: + blab("Removed src file %s " % relp) + fullplain = os.path.join(marlinbasedir, plain) + if os.path.isdir(fullplain): + blab("Directory content removal for %s " % plain) + def filt(x): + common = os.path.commonpath([plain, x]) + if not common == os.path.normpath(plain): return True + onremove(x, "dcr") + return False + cur_srcs = set(filter(filt, cur_srcs)) + else: + # Remove matching source entries. + def filt(x): + if not fnmatch.fnmatch(x, plain): return True + onremove(x) + return False + cur_srcs = set(filter(filt, cur_srcs)) + # Transform the resulting set into a string. + for x in cur_srcs: + if len(src_filter) > 0: src_filter += ' ' + src_filter += "+<" + x + ">" + + #blab("Final src_filter: " + src_filter) + else: + src_filter = build_filters + + # Update in PlatformIO + set_env_field('build_src_filter', [src_filter]) + env.Replace(SRC_FILTER=src_filter) + # # Use the compiler to get a list of all enabled features # @@ -226,6 +293,8 @@ if pioutil.is_pio_build(): elif val in env['MARLIN_FEATURES']: some_on = env.MarlinHas(val) + #blab("%s is %s" % (feature, str(some_on))) + return some_on validate_pio() diff --git a/ini/features.ini b/ini/features.ini index d459c2bee9..660e3fb2c8 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -9,6 +9,8 @@ # # ################################# +# The order of the features matters for source-filter resolution inside of common-dependencies.py. + [features] YHCB2004 = red-scorp/LiquidCrystal_AIP31068@^1.0.4, red-scorp/SoftSPIB@^1.1.1 HAS_TFT_LVGL_UI = lvgl=https://github.com/makerbase-mks/LVGL-6.1.1-MKS/archive/master.zip @@ -23,6 +25,7 @@ HAS_TRINAMIC_CONFIG = TMCStepper@~0.7.3 HAS_T(RINAMIC_CONFIG|MC_SPI) = src_filter=+ HAS_STEALTHCHOP = src_filter=+ SR_LCD_3W_NL = SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip +HAS_MOTOR_CURRENT_(I2C|DAC|SPI|PWM) = src_filter=+ HAS_MOTOR_CURRENT_I2C = SlowSoftI2CMaster src_filter=+ HAS_TMC26X = TMC26XStepper=https://github.com/MarlinFirmware/TMC26XStepper/archive/master.zip @@ -39,9 +42,12 @@ HAS_LCDPRINT = src_filter=+ HAS_MARLINUI_HD44780 = src_filter=+ HAS_MARLINUI_U8GLIB = marlinfirmware/U8glib-HAL@~0.5.2 src_filter=+ -HAS_(FSMC|SPI|LTDC)_TFT = src_filter=+ + + +HAS_(FSMC|SPI|LTDC)_TFT = src_filter=+ +HAS_LTDC_TFT = src_filter=+ HAS_FSMC_TFT = src_filter=+ + -HAS_SPI_TFT = src_filter=+ + +HAS_SPI_TFT = src_filter=+ + + +HAS_TFT_XPT2046 = src_filter=+ + + +TFT_TOUCH_DEVICE_GT911 = src_filter=+ I2C_EEPROM = src_filter=+ SOFT_I2C_EEPROM = SlowSoftI2CMaster, SlowSoftWire=https://github.com/felias-fogg/SlowSoftWire/archive/master.zip SPI_EEPROM = src_filter=+ @@ -50,10 +56,13 @@ DWIN_CREALITY_LCD = src_filter=+ DWIN_LCD_PROUI = src_filter=+ DWIN_CREALITY_LCD_JYERSUI = src_filter=+ IS_DWIN_MARLINUI = src_filter=+ -HAS_GRAPHICAL_TFT = src_filter=+ +HAS_GRAPHICAL_TFT = src_filter=+ - +TFT_FONT_HELVETICA = src_filter=+ +TFT_FONT_NOTOSANS = src_filter=+ +TFT_FONT_UNIFONT = src_filter=+ IS_TFTGLCD_PANEL = src_filter=+ HAS_TOUCH_BUTTONS = src_filter=+ -HAS_MARLINUI_MENU = src_filter=+ +HAS_MARLINUI_MENU = src_filter=+ - HAS_GAMES = src_filter=+ MARLIN_BRICKOUT = src_filter=+ MARLIN_INVADERS = src_filter=+ @@ -80,6 +89,7 @@ HAS_MENU_TMC = src_filter=+ HAS_MENU_TOUCH_SCREEN = src_filter=+ HAS_MENU_TRAMMING_WIZARD = src_filter=+ HAS_MENU_UBL = src_filter=+ +EXTENSIBLE_UI = src_filter=+ ANYCUBIC_LCD_(CHIRON|VYPER) = src_filter=+ ANYCUBIC_LCD_CHIRON = src_filter=+ ANYCUBIC_LCD_VYPER = src_filter=+ @@ -171,7 +181,6 @@ HAS_EXTRA_ENDSTOPS = src_filter=+ DIRECT_PIN_CONTROL = src_filter=+ + PINS_DEBUGGING = src_filter=+ -NO_VOLUMETRICS = src_filter=- HAS_MULTI_EXTRUDER = src_filter=+ HAS_HOTEND_OFFSET = src_filter=+ EDITABLE_SERVO_ANGLES = src_filter=+ @@ -179,6 +188,7 @@ PIDTEMP = src_filter=+ PREVENT_COLD_EXTRUSION = src_filter=+ PIDTEMPBED = src_filter=+ HAS_USER_THERMISTORS = src_filter=+ +PIDTEMPCHAMBER = src_filter=+ SD_ABORT_ON_ENDSTOP_HIT = src_filter=+ BAUD_RATE_GCODE = src_filter=+ HAS_SMART_EFF_MOD = src_filter=+ @@ -187,7 +197,9 @@ AIR_EVACUATION = src_filter=+ SERVO_DETACH_GCODE = src_filter=+ HAS_DUPLICATION_MODE = src_filter=+ -FT_MOTION = src_filter=+ + +SPI_FLASH_BACKUP = src_filter=+ +PLATFORM_M997_SUPPORT = src_filter=+ +FT_MOTION = src_filter=+ + LIN_ADVANCE = src_filter=+ PHOTO_GCODE = src_filter=+ CONTROLLER_FAN_EDITABLE = src_filter=+ @@ -223,10 +235,15 @@ MAGNETIC_PARKING_EXTRUDER = src_filter=+ HAS_MEDIA = src_filter=+ + + + + + + HAS_MEDIA_SUBCALLS = src_filter=+ GCODE_REPEAT_MARKERS = src_filter=+ + -HAS_EXTRUDERS = src_filter=+ + + -HAS_TEMP_PROBE = src_filter=+ +HAS_EXTRUDERS = src_filter=+ + +HAS_HOTEND = src_filter=+ +HAS_FAN = src_filter=+ +HAS_HEATED_BED = src_filter=+ +HAS_HEATED_CHAMBER = src_filter=+ HAS_COOLER = src_filter=+ AUTO_REPORT_TEMPERATURES = src_filter=+ +HAS_TEMP_PROBE = src_filter=+ +HAS_PID_HEATING = src_filter=+ MPCTEMP = src_filter=+ INCH_MODE_SUPPORT = src_filter=+ TEMPERATURE_UNITS_SUPPORT = src_filter=+ diff --git a/ini/lpc176x.ini b/ini/lpc176x.ini index 223ba3cabd..548baaa410 100644 --- a/ini/lpc176x.ini +++ b/ini/lpc176x.ini @@ -20,12 +20,13 @@ lib_ldf_mode = off lib_compat_mode = strict extra_scripts = ${common.extra_scripts} Marlin/src/HAL/LPC1768/upload_extra_script.py -build_src_filter = ${common.default_src_filter} + + +build_src_filter = ${common.default_src_filter} + - + lib_deps = ${common.lib_deps} Servo custom_marlin.USES_LIQUIDCRYSTAL = arduino-libraries/LiquidCrystal@~1.0.7 custom_marlin.NEOPIXEL_LED = Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/1.5.0.zip -build_flags = ${common.build_flags} -DU8G_HAL_LINKS -IMarlin/src/HAL/LPC1768/include -IMarlin/src/HAL/LPC1768/u8g +build_flags = ${common.build_flags} -DU8G_HAL_LINKS -DPLATFORM_M997_SUPPORT + -IMarlin/src/HAL/LPC1768/include -IMarlin/src/HAL/LPC1768/u8g # debug options for backtrace #-funwind-tables #-mpoke-function-name diff --git a/ini/stm32-common.ini b/ini/stm32-common.ini index c8f28cd0e3..464d8f4757 100644 --- a/ini/stm32-common.ini +++ b/ini/stm32-common.ini @@ -12,13 +12,11 @@ [common_stm32] platform = ststm32@~12.1 board_build.core = stm32 -build_flags = ${common.build_flags} - -std=gnu++14 -DHAL_STM32 - -DUSBCON -DUSBD_USE_CDC - -DTIM_IRQ_PRIO=13 - -DADC_RESOLUTION=12 +build_flags = ${common.build_flags} -std=gnu++14 + -DHAL_STM32 -DPLATFORM_M997_SUPPORT + -DUSBCON -DUSBD_USE_CDC -DTIM_IRQ_PRIO=13 -DADC_RESOLUTION=12 build_unflags = -std=gnu++11 -build_src_filter = ${common.default_src_filter} + + +build_src_filter = ${common.default_src_filter} + - + extra_scripts = ${common.extra_scripts} pre:buildroot/share/PlatformIO/scripts/stm32_serialbuffer.py diff --git a/ini/stm32f0.ini b/ini/stm32f0.ini index d62ac3acf5..d23ee2a603 100644 --- a/ini/stm32f0.ini +++ b/ini/stm32f0.ini @@ -48,4 +48,4 @@ board = malyanm300_f070cb build_flags = ${common_stm32.build_flags} -DHAL_PCD_MODULE_ENABLED -DDISABLE_GENERIC_SERIALUSB -DHAL_UART_MODULE_ENABLED -build_src_filter = ${common.default_src_filter} + +build_src_filter = ${common.default_src_filter} + - diff --git a/ini/stm32f1-maple.ini b/ini/stm32f1-maple.ini index d361a0d40a..3560c1fd2a 100644 --- a/ini/stm32f1-maple.ini +++ b/ini/stm32f1-maple.ini @@ -26,9 +26,9 @@ platform = ststm32@~12.1 board_build.core = maple build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py - ${common.build_flags} -DARDUINO_ARCH_STM32 -DMAPLE_STM32F1 + ${common.build_flags} -DARDUINO_ARCH_STM32 -DMAPLE_STM32F1 -DPLATFORM_M997_SUPPORT build_unflags = -std=gnu11 -std=gnu++11 -build_src_filter = ${common.default_src_filter} + +build_src_filter = ${common.default_src_filter} + - lib_ignore = SPI, FreeRTOS701, FreeRTOS821 lib_deps = ${common.lib_deps} SoftwareSerialM diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini index 230f1ae774..d19de4d2dd 100644 --- a/ini/stm32f1.ini +++ b/ini/stm32f1.ini @@ -253,7 +253,7 @@ board = malyanm200_f103cb build_flags = ${common_stm32.build_flags} -DHAL_PCD_MODULE_ENABLED -DDISABLE_GENERIC_SERIALUSB -DHAL_UART_MODULE_ENABLED -build_src_filter = ${common.default_src_filter} + +build_src_filter = ${common.default_src_filter} + - # # FLYmaker FLY Mini (STM32F103RCT6) diff --git a/platformio.ini b/platformio.ini index 885fdd87d6..e3bdb6f586 100644 --- a/platformio.ini +++ b/platformio.ini @@ -52,218 +52,79 @@ extra_scripts = pre:buildroot/share/PlatformIO/scripts/preflight-checks.py post:buildroot/share/PlatformIO/scripts/common-dependencies-post.py lib_deps = -default_src_filter = + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +default_src_filter = + - - + ; LCDs and Controllers + - - - - - + - - - - - - - - - - - - - - - - - - - + ; Marlin HAL + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ; Features and G-Codes + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - + - + - + ; Library Code + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + ; Modules + - + - + ; Media Support + - + ; + ; Minimal Requirements + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # # Default values apply to all 'env:' prefixed environments From 959f7308e760d85cdbfe90ea3581f42811823389 Mon Sep 17 00:00:00 2001 From: TheSnowfield <17957399+TheSnowfield@users.noreply.github.com> Date: Thu, 27 Apr 2023 20:37:11 +0800 Subject: [PATCH 341/659] =?UTF-8?q?=E2=9C=A8=20AUTO=5FREPORT=5FREAL=5FPOSI?= =?UTF-8?q?TION=20option=20for=20M154=20(#25738)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 3 +++ Marlin/src/module/motion.h | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 5eb709f704..cd19393551 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -3733,6 +3733,9 @@ * Auto-report position with M154 S */ //#define AUTO_REPORT_POSITION +#if ENABLED(AUTO_REPORT_POSITION) + //#define AUTO_REPORT_REAL_POSITION // Auto-report the real position +#endif /** * Include capabilities in M115 output diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index 4cd4641e3d..e899815c0f 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -259,7 +259,9 @@ void report_current_position_projected(); #if ENABLED(AUTO_REPORT_POSITION) #include "../libs/autoreport.h" - struct PositionReport { static void report() { report_current_position_projected(); } }; + struct PositionReport { static void report() { + TERN(AUTO_REPORT_REAL_POSITION, report_real_position(), report_current_position_projected()); + } }; extern AutoReporter position_auto_reporter; #endif From 0e2c5b45ece8ebe591e27cebe9570f9049a55f83 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 28 Apr 2023 00:21:29 +0000 Subject: [PATCH 342/659] [cron] Bump distribution date (2023-04-28) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 94dc8bd024..e5e96da7c2 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-27" +//#define STRING_DISTRIBUTION_DATE "2023-04-28" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index dbed7697cb..cedbb273e4 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-27" + #define STRING_DISTRIBUTION_DATE "2023-04-28" #endif /** From 6323de309fc6b54f67121c147240c060ecc6c143 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 28 Apr 2023 11:03:20 -0500 Subject: [PATCH 343/659] =?UTF-8?q?=F0=9F=94=A8=20Fix=20LPC=20faux=20pins?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25332 --- Marlin/src/HAL/shared/fauxpins.h | 100 +++++++++++++++---------------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/Marlin/src/HAL/shared/fauxpins.h b/Marlin/src/HAL/shared/fauxpins.h index 8bc52c6926..924bfba02a 100644 --- a/Marlin/src/HAL/shared/fauxpins.h +++ b/Marlin/src/HAL/shared/fauxpins.h @@ -201,16 +201,16 @@ // // LPC Pin Names // -#define P0_0 100 -#define P0_1 101 -#define P0_2 102 -#define P0_3 103 -#define P0_4 104 -#define P0_5 105 -#define P0_6 106 -#define P0_7 107 -#define P0_8 108 -#define P0_9 109 +#define P0_00 100 +#define P0_01 101 +#define P0_02 102 +#define P0_03 103 +#define P0_04 104 +#define P0_05 105 +#define P0_06 106 +#define P0_07 107 +#define P0_08 108 +#define P0_09 109 #define P0_10 110 #define P0_11 111 #define P0_12 112 @@ -234,16 +234,16 @@ #define P0_30 130 #define P0_31 131 -#define P1_0 200 -#define P1_1 201 -#define P1_2 202 -#define P1_3 203 -#define P1_4 204 -#define P1_5 205 -#define P1_6 206 -#define P1_7 207 -#define P1_8 208 -#define P1_9 209 +#define P1_00 200 +#define P1_01 201 +#define P1_02 202 +#define P1_03 203 +#define P1_04 204 +#define P1_05 205 +#define P1_06 206 +#define P1_07 207 +#define P1_08 208 +#define P1_09 209 #define P1_10 210 #define P1_11 211 #define P1_12 212 @@ -267,16 +267,16 @@ #define P1_30 230 #define P1_31 231 -#define P2_0 300 -#define P2_1 301 -#define P2_2 302 -#define P2_3 303 -#define P2_4 304 -#define P2_5 305 -#define P2_6 306 -#define P2_7 307 -#define P2_8 308 -#define P2_9 309 +#define P2_00 300 +#define P2_01 301 +#define P2_02 302 +#define P2_03 303 +#define P2_04 304 +#define P2_05 305 +#define P2_06 306 +#define P2_07 307 +#define P2_08 308 +#define P2_09 309 #define P2_10 310 #define P2_11 311 #define P2_12 312 @@ -300,16 +300,16 @@ #define P2_30 330 #define P2_31 331 -#define P3_0 400 -#define P3_1 401 -#define P3_2 402 -#define P3_3 403 -#define P3_4 404 -#define P3_5 405 -#define P3_6 406 -#define P3_7 407 -#define P3_8 408 -#define P3_9 409 +#define P3_00 400 +#define P3_01 401 +#define P3_02 402 +#define P3_03 403 +#define P3_04 404 +#define P3_05 405 +#define P3_06 406 +#define P3_07 407 +#define P3_08 408 +#define P3_09 409 #define P3_10 410 #define P3_11 411 #define P3_12 412 @@ -333,16 +333,16 @@ #define P3_30 430 #define P3_31 431 -#define P4_0 500 -#define P4_1 501 -#define P4_2 502 -#define P4_3 503 -#define P4_4 504 -#define P4_5 505 -#define P4_6 506 -#define P4_7 507 -#define P4_8 508 -#define P4_9 509 +#define P4_00 500 +#define P4_01 501 +#define P4_02 502 +#define P4_03 503 +#define P4_04 504 +#define P4_05 505 +#define P4_06 506 +#define P4_07 507 +#define P4_08 508 +#define P4_09 509 #define P4_10 510 #define P4_11 511 #define P4_12 512 From a872232b15d63c73c5c5ce281e3d1dcadb47b608 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 28 Apr 2023 11:03:38 -0500 Subject: [PATCH 344/659] =?UTF-8?q?=F0=9F=94=A7=20Move=20MMU=20section?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 33b661e3c8..0ce37a2384 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -222,24 +222,6 @@ //#define SINGLENOZZLE_STANDBY_FAN #endif -// @section multi-material - -/** - * Multi-Material Unit - * Set to one of these predefined models: - * - * PRUSA_MMU1 : Průša MMU1 (The "multiplexer" version) - * PRUSA_MMU2 : Průša MMU2 - * PRUSA_MMU2S : Průša MMU2S (Requires MK3S extruder with motion sensor, EXTRUDERS = 5) - * EXTENDABLE_EMU_MMU2 : MMU with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware) - * EXTENDABLE_EMU_MMU2S : MMUS with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware) - * - * Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails. - * See additional options in Configuration_adv.h. - * :["PRUSA_MMU1", "PRUSA_MMU2", "PRUSA_MMU2S", "EXTENDABLE_EMU_MMU2", "EXTENDABLE_EMU_MMU2S"] - */ -//#define MMU_MODEL PRUSA_MMU2 - // A dual extruder that uses a single stepper motor //#define SWITCHING_EXTRUDER #if ENABLED(SWITCHING_EXTRUDER) @@ -382,6 +364,24 @@ //#define HOTEND_OFFSET_Y { 0.0, 5.00 } // (mm) relative Y-offset for each nozzle //#define HOTEND_OFFSET_Z { 0.0, 0.00 } // (mm) relative Z-offset for each nozzle +// @section multi-material + +/** + * Multi-Material Unit + * Set to one of these predefined models: + * + * PRUSA_MMU1 : Průša MMU1 (The "multiplexer" version) + * PRUSA_MMU2 : Průša MMU2 + * PRUSA_MMU2S : Průša MMU2S (Requires MK3S extruder with motion sensor, EXTRUDERS = 5) + * EXTENDABLE_EMU_MMU2 : MMU with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware) + * EXTENDABLE_EMU_MMU2S : MMUS with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware) + * + * Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails. + * See additional options in Configuration_adv.h. + * :["PRUSA_MMU1", "PRUSA_MMU2", "PRUSA_MMU2S", "EXTENDABLE_EMU_MMU2", "EXTENDABLE_EMU_MMU2S"] + */ +//#define MMU_MODEL PRUSA_MMU2 + // @section psu control /** From 7d95928cbb3de6c677bf76110097c0aa21965740 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 28 Apr 2023 13:38:59 -0500 Subject: [PATCH 345/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20auto=20pullup/down?= =?UTF-8?q?=20settings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25748 --- Marlin/src/inc/Conditionals_post.h | 226 ++++++++++++++--------------- 1 file changed, 106 insertions(+), 120 deletions(-) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index bb78178ad5..2c611099e3 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -1012,126 +1012,6 @@ #endif // Z_MULTI_ENDSTOPS -/** - * Set ENDSTOPPULLUPS for active endstop switches - */ -#if ENABLED(ENDSTOPPULLUPS) - #if HAS_X_MAX - #define ENDSTOPPULLUP_XMAX - #endif - #if HAS_Y_MAX - #define ENDSTOPPULLUP_YMAX - #endif - #if HAS_Z_MAX - #define ENDSTOPPULLUP_ZMAX - #endif - #if HAS_I_MAX - #define ENDSTOPPULLUP_IMAX - #endif - #if HAS_J_MAX - #define ENDSTOPPULLUP_JMAX - #endif - #if HAS_K_MAX - #define ENDSTOPPULLUP_KMAX - #endif - #if HAS_U_MAX - #define ENDSTOPPULLUP_UMAX - #endif - #if HAS_V_MAX - #define ENDSTOPPULLUP_VMAX - #endif - #if HAS_W_MAX - #define ENDSTOPPULLUP_WMAX - #endif - #if HAS_X_MIN - #define ENDSTOPPULLUP_XMIN - #endif - #if HAS_Y_MIN - #define ENDSTOPPULLUP_YMIN - #endif - #if HAS_Z_MIN_PIN - #define ENDSTOPPULLUP_ZMIN - #endif - #if HAS_I_MIN - #define ENDSTOPPULLUP_IMIN - #endif - #if HAS_J_MIN - #define ENDSTOPPULLUP_JMIN - #endif - #if HAS_K_MIN - #define ENDSTOPPULLUP_KMIN - #endif - #if HAS_U_MIN - #define ENDSTOPPULLUP_UMIN - #endif - #if HAS_V_MIN - #define ENDSTOPPULLUP_VMIN - #endif - #if HAS_W_MIN - #define ENDSTOPPULLUP_WMIN - #endif -#endif - -/** - * Set ENDSTOPPULLDOWNS for active endstop switches - */ -#if ENABLED(ENDSTOPPULLDOWNS) - #if HAS_X_MAX - #define ENDSTOPPULLDOWN_XMAX - #endif - #if HAS_Y_MAX - #define ENDSTOPPULLDOWN_YMAX - #endif - #if HAS_Z_MAX - #define ENDSTOPPULLDOWN_ZMAX - #endif - #if HAS_I_MAX - #define ENDSTOPPULLDOWN_IMAX - #endif - #if HAS_J_MAX - #define ENDSTOPPULLDOWN_JMAX - #endif - #if HAS_K_MAX - #define ENDSTOPPULLDOWN_KMAX - #endif - #if HAS_U_MAX - #define ENDSTOPPULLDOWN_UMAX - #endif - #if HAS_V_MAX - #define ENDSTOPPULLDOWN_VMAX - #endif - #if HAS_W_MAX - #define ENDSTOPPULLDOWN_WMAX - #endif - #if HAS_X_MIN - #define ENDSTOPPULLDOWN_XMIN - #endif - #if HAS_Y_MIN - #define ENDSTOPPULLDOWN_YMIN - #endif - #if HAS_Z_MIN_PIN - #define ENDSTOPPULLDOWN_ZMIN - #endif - #if HAS_I_MIN - #define ENDSTOPPULLDOWN_IMIN - #endif - #if HAS_J_MIN - #define ENDSTOPPULLDOWN_JMIN - #endif - #if HAS_K_MIN - #define ENDSTOPPULLDOWN_KMIN - #endif - #if HAS_U_MIN - #define ENDSTOPPULLDOWN_UMIN - #endif - #if HAS_V_MIN - #define ENDSTOPPULLDOWN_VMIN - #endif - #if HAS_W_MIN - #define ENDSTOPPULLDOWN_WMIN - #endif -#endif - /** * Shorthand for pin tests, used wherever needed */ @@ -2207,6 +2087,112 @@ #undef _HAS_STOP +/** + * Set ENDSTOPPULLUPS for active endstop switches + */ +#if ENABLED(ENDSTOPPULLUPS) + #if HAS_X_MIN + #define ENDSTOPPULLUP_XMIN + #endif + #if HAS_X_MAX + #define ENDSTOPPULLUP_XMAX + #endif + #if HAS_Y_MIN + #define ENDSTOPPULLUP_YMIN + #elif HAS_Y_MAX + #define ENDSTOPPULLUP_YMAX + #endif + #if HAS_Z_MIN_PIN + #define ENDSTOPPULLUP_ZMIN + #endif + #if HAS_Z_MAX + #define ENDSTOPPULLUP_ZMAX + #endif + #if HAS_I_MIN + #define ENDSTOPPULLUP_IMIN + #elif HAS_I_MAX + #define ENDSTOPPULLUP_IMAX + #endif + #if HAS_J_MIN + #define ENDSTOPPULLUP_JMIN + #elif HAS_J_MAX + #define ENDSTOPPULLUP_JMAX + #endif + #if HAS_K_MIN + #define ENDSTOPPULLUP_KMIN + #elif HAS_K_MAX + #define ENDSTOPPULLUP_KMAX + #endif + #if HAS_U_MIN + #define ENDSTOPPULLUP_UMIN + #elif HAS_U_MAX + #define ENDSTOPPULLUP_UMAX + #endif + #if HAS_V_MIN + #define ENDSTOPPULLUP_VMIN + #elif HAS_V_MAX + #define ENDSTOPPULLUP_VMAX + #endif + #if HAS_W_MIN + #define ENDSTOPPULLUP_WMIN + #elif HAS_W_MAX + #define ENDSTOPPULLUP_WMAX + #endif +#endif + +/** + * Set ENDSTOPPULLDOWNS for active endstop switches + */ +#if ENABLED(ENDSTOPPULLDOWNS) + #if HAS_X_MIN + #define ENDSTOPPULLDOWN_XMIN + #endif + #if HAS_X_MAX + #define ENDSTOPPULLDOWN_XMAX + #endif + #if HAS_Y_MIN + #define ENDSTOPPULLDOWN_YMIN + #elif HAS_Y_MAX + #define ENDSTOPPULLDOWN_YMAX + #endif + #if HAS_Z_MIN_PIN + #define ENDSTOPPULLDOWN_ZMIN + #endif + #if HAS_Z_MAX + #define ENDSTOPPULLDOWN_ZMAX + #endif + #if HAS_I_MIN + #define ENDSTOPPULLDOWN_IMIN + #elif HAS_I_MAX + #define ENDSTOPPULLDOWN_IMAX + #endif + #if HAS_J_MIN + #define ENDSTOPPULLDOWN_JMIN + #elif HAS_J_MAX + #define ENDSTOPPULLDOWN_JMAX + #endif + #if HAS_K_MIN + #define ENDSTOPPULLDOWN_KMIN + #elif HAS_K_MAX + #define ENDSTOPPULLDOWN_KMAX + #endif + #if HAS_U_MIN + #define ENDSTOPPULLDOWN_UMIN + #elif HAS_U_MAX + #define ENDSTOPPULLDOWN_UMAX + #endif + #if HAS_V_MIN + #define ENDSTOPPULLDOWN_VMIN + #elif HAS_V_MAX + #define ENDSTOPPULLDOWN_VMAX + #endif + #if HAS_W_MIN + #define ENDSTOPPULLDOWN_WMIN + #elif HAS_W_MAX + #define ENDSTOPPULLDOWN_WMAX + #endif +#endif + // // ADC Temp Sensors (Thermistor or Thermocouple with amplifier ADC interface) // From c5a2e41647a12ef16b280975ab713e080e831e46 Mon Sep 17 00:00:00 2001 From: James Pearson Date: Fri, 28 Apr 2023 23:30:15 +0100 Subject: [PATCH 346/659] =?UTF-8?q?=F0=9F=90=9B=20Probe=20behavior=20corre?= =?UTF-8?q?ctions=20(#25631)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine Co-authored-by: David Fries <2767875+dfries@users.noreply.github.com> --- Marlin/Configuration.h | 2 +- Marlin/Configuration_adv.h | 2 +- Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 19 ++++----- Marlin/src/gcode/bedlevel/G35.cpp | 2 +- Marlin/src/gcode/calibrate/G28.cpp | 41 +++++++++++++------- Marlin/src/gcode/calibrate/G33.cpp | 2 +- Marlin/src/gcode/calibrate/G34_M422.cpp | 27 ++++--------- Marlin/src/gcode/calibrate/M48.cpp | 2 +- Marlin/src/gcode/probe/G30.cpp | 2 +- Marlin/src/inc/SanityCheck.h | 4 ++ Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 36 ++++++++++------- Marlin/src/lcd/menu/menu_probe_offset.cpp | 2 +- Marlin/src/lcd/menu/menu_tramming_wizard.cpp | 2 +- Marlin/src/module/probe.cpp | 30 ++++++++------ Marlin/src/module/probe.h | 22 ++++++++--- 15 files changed, 113 insertions(+), 82 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 0ce37a2384..68784df5d7 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1725,7 +1725,7 @@ //#define Z_CLEARANCE_FOR_HOMING 4 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ... // Be sure to have this much clearance over your Z_MAX_POS to prevent grinding. -//#define Z_AFTER_HOMING 10 // (mm) Height to move to after homing Z +//#define Z_AFTER_HOMING 10 // (mm) Height to move to after homing (if Z was homed) // Direction of endstops when homing; 1=MAX, -1=MIN // :[-1,1] diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index cd19393551..f712a6921a 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -924,7 +924,7 @@ //#define QUICK_HOME // If G28 contains XY do a diagonal move first //#define HOME_Y_BEFORE_X // If G28 contains XY home Y before X -//#define HOME_Z_FIRST // Home Z first. Requires a Z-MIN endstop (not a probe). +//#define HOME_Z_FIRST // Home Z first. Requires a real endstop (not a probe). //#define CODEPENDENT_XY_HOMING // If X/Y can't home without homing Y/X first // @section bltouch diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index 7277b293aa..2fbd3bfbeb 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -112,7 +112,7 @@ * If omitted, the nozzle will raise by Z_CLEARANCE_BETWEEN_PROBES. * * H # Offset With P4, 'H' specifies the Offset above the mesh height to place the nozzle. - * If omitted, Z_CLEARANCE_BETWEEN_PROBES will be used. + * If omitted, Z_TWEEN_SAFE_CLEARANCE will be used. * * I # Invalidate Invalidate the specified number of Mesh Points near the given 'X' 'Y'. If X or Y are omitted, * the nozzle location is used. If no 'I' value is given, only the point nearest to the location @@ -790,10 +790,7 @@ void unified_bed_leveling::shift_mesh_height() { if (best.pos.x >= 0) { // mesh point found and is reachable by probe TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(best.pos, ExtUI::G29_POINT_START)); - const float measured_z = probe.probe_at_point( - best.meshpos(), - stow_probe ? PROBE_PT_STOW : PROBE_PT_RAISE, param.V_verbosity - ); + const float measured_z = probe.probe_at_point(best.meshpos(), stow_probe ? PROBE_PT_STOW : PROBE_PT_RAISE, param.V_verbosity); z_values[best.pos.x][best.pos.y] = measured_z; #if ENABLED(EXTENSIBLE_UI) ExtUI::onMeshUpdate(best.pos, ExtUI::G29_POINT_FINISH); @@ -1034,9 +1031,9 @@ void set_message_with_feedback(FSTR_P const fstr) { save_ubl_active_state_and_disable(); LCD_MESSAGE(MSG_UBL_FINE_TUNE_MESH); - ui.capture(); // Take over control of the LCD encoder + ui.capture(); // Take over control of the LCD encoder - do_blocking_move_to_xy_z(pos, Z_CLEARANCE_BETWEEN_PROBES); // Move to the given XY with probe clearance + do_blocking_move_to_xy_z(pos, Z_TWEEN_SAFE_CLEARANCE); // Move to the given XY with probe clearance MeshFlags done_flags{0}; const xy_int8_t &lpos = location.pos; @@ -1053,7 +1050,7 @@ void set_message_with_feedback(FSTR_P const fstr) { done_flags.mark(lpos); // Mark this location as 'adjusted' so a new // location is used on the next loop - const xyz_pos_t raw = { get_mesh_x(lpos.x), get_mesh_y(lpos.y), Z_CLEARANCE_BETWEEN_PROBES }; + const xyz_pos_t raw = { get_mesh_x(lpos.x), get_mesh_y(lpos.y), Z_TWEEN_SAFE_CLEARANCE }; if (!position_is_reachable(raw)) break; // SHOULD NOT OCCUR (find_closest_mesh_point_of_type only returns reachable) @@ -1063,7 +1060,7 @@ void set_message_with_feedback(FSTR_P const fstr) { KEEPALIVE_STATE(PAUSED_FOR_USER); - if (do_ubl_mesh_map) display_map(param.T_map_type); // Display the current point + if (do_ubl_mesh_map) display_map(param.T_map_type); // Display the current point #if IS_TFTGLCD_PANEL ui.ubl_plot(lpos.x, lpos.y); // update plot screen @@ -1093,7 +1090,7 @@ void set_message_with_feedback(FSTR_P const fstr) { // Button held down? Abort editing if (_click_and_hold([]{ ui.return_to_status(); - do_z_clearance(Z_CLEARANCE_BETWEEN_PROBES); + do_z_clearance(Z_TWEEN_SAFE_CLEARANCE); set_message_with_feedback(GET_TEXT_F(MSG_EDITING_STOPPED)); })) break; @@ -1113,7 +1110,7 @@ void set_message_with_feedback(FSTR_P const fstr) { if (do_ubl_mesh_map) display_map(param.T_map_type); restore_ubl_active_state_and_leave(); - do_blocking_move_to_xy_z(pos, Z_CLEARANCE_BETWEEN_PROBES); + do_blocking_move_to_xy_z(pos, Z_TWEEN_SAFE_CLEARANCE); LCD_MESSAGE(MSG_UBL_DONE_EDITING_MESH); SERIAL_ECHOLNPGM("Done Editing Mesh"); diff --git a/Marlin/src/gcode/bedlevel/G35.cpp b/Marlin/src/gcode/bedlevel/G35.cpp index 27c57cf62e..f5f395ee2e 100644 --- a/Marlin/src/gcode/bedlevel/G35.cpp +++ b/Marlin/src/gcode/bedlevel/G35.cpp @@ -98,7 +98,7 @@ void GcodeSuite::G35() { // Probe all positions LOOP_L_N(i, G35_PROBE_COUNT) { - const float z_probed_height = probe.probe_at_point(tramming_points[i], PROBE_PT_RAISE, 0, true); + const float z_probed_height = probe.probe_at_point(tramming_points[i], PROBE_PT_RAISE); if (isnan(z_probed_height)) { SERIAL_ECHOPGM("G35 failed at point ", i + 1, " ("); SERIAL_ECHOPGM_P((char *)pgm_read_ptr(&tramming_point_name[i])); diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 782761ee14..ed2cda2932 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -356,6 +356,8 @@ void GcodeSuite::G28() { endstops.enable(true); // Enable endstops for next homing move + bool finalRaiseZ = false; + #if ENABLED(DELTA) constexpr bool doZ = true; // for NANODLP_Z_SYNC if your DLP is on a DELTA @@ -407,8 +409,9 @@ void GcodeSuite::G28() { UNUSED(needZ); UNUSED(homeZZ); - // Z may home first, e.g., when homing away from the bed - TERN_(HOME_Z_FIRST, if (doZ) homeaxis(Z_AXIS)); + // Z may home first, e.g., when homing away from the bed. + // This is also permitted when homing with a Z endstop. + if (TERN0(HOME_Z_FIRST, doZ)) homeaxis(Z_AXIS); // 'R' to specify a specific raise. 'R0' indicates no raise, e.g., for recovery.resume // When 'R0' is used, there should already be adequate clearance, e.g., from homing Z to max. @@ -517,7 +520,10 @@ void GcodeSuite::G28() { #else homeaxis(Z_AXIS); #endif - do_move_after_z_homing(); + + #if EITHER(Z_HOME_TO_MIN, ALLOW_Z_AFTER_HOMING) + finalRaiseZ = true; + #endif } #endif @@ -575,18 +581,6 @@ void GcodeSuite::G28() { // Clear endstop state for polled stallGuard endstops TERN_(SPI_ENDSTOPS, endstops.clear_endstop_state()); - // Move to a height where we can use the full xy-area - TERN_(DELTA_HOME_TO_SAFE_ZONE, do_blocking_move_to_z(delta_clip_start_height)); - - TERN_(CAN_SET_LEVELING_AFTER_G28, if (leveling_restore_state) set_bed_leveling_enabled()); - - restore_feedrate_and_scaling(); - - // Restore the active tool after homing - #if HAS_MULTI_HOTEND && (DISABLED(DELTA) || ENABLED(DELTA_HOME_TO_SAFE_ZONE)) - tool_change(old_tool_index, TERN(PARKING_EXTRUDER, !pe_final_change_must_unpark, DISABLED(DUAL_X_CARRIAGE))); // Do move if one of these - #endif - #if HAS_HOMING_CURRENT if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Restore driver current..."); #if HAS_CURRENT_HOME(X) @@ -627,6 +621,23 @@ void GcodeSuite::G28() { #endif #endif // HAS_HOMING_CURRENT + // Move to a height where we can use the full xy-area + TERN_(DELTA_HOME_TO_SAFE_ZONE, do_blocking_move_to_z(delta_clip_start_height)); + + // Move to the configured Z only if Z was homed to MIN, because machines that + // home to MAX historically expect 'G28 Z' to be safe to use at the end of a + // print, and do_move_after_z_homing is not very nuanced. + if (finalRaiseZ) do_move_after_z_homing(); + + TERN_(CAN_SET_LEVELING_AFTER_G28, if (leveling_restore_state) set_bed_leveling_enabled()); + + // Restore the active tool after homing + #if HAS_MULTI_HOTEND && (DISABLED(DELTA) || ENABLED(DELTA_HOME_TO_SAFE_ZONE)) + tool_change(old_tool_index, TERN(PARKING_EXTRUDER, !pe_final_change_must_unpark, DISABLED(DUAL_X_CARRIAGE))); // Do move if one of these + #endif + + restore_feedrate_and_scaling(); + ui.refresh(); TERN_(HAS_DWIN_E3V2_BASIC, DWIN_HomingDone()); diff --git a/Marlin/src/gcode/calibrate/G33.cpp b/Marlin/src/gcode/calibrate/G33.cpp index 61320c0576..08734073d6 100644 --- a/Marlin/src/gcode/calibrate/G33.cpp +++ b/Marlin/src/gcode/calibrate/G33.cpp @@ -170,7 +170,7 @@ static float std_dev_points(float z_pt[NPP + 1], const bool _0p_cal, const bool */ static float calibration_probe(const xy_pos_t &xy, const bool stow, const bool probe_at_offset) { #if HAS_BED_PROBE - return probe.probe_at_point(xy, stow ? PROBE_PT_STOW : PROBE_PT_RAISE, 0, probe_at_offset, false); + return probe.probe_at_point(xy, stow ? PROBE_PT_STOW : PROBE_PT_RAISE, 0, probe_at_offset, false, Z_PROBE_LOW_POINT, Z_TWEEN_SAFE_CLEARANCE, true); #else UNUSED(stow); return lcd_probe_pt(xy); diff --git a/Marlin/src/gcode/calibrate/G34_M422.cpp b/Marlin/src/gcode/calibrate/G34_M422.cpp index db6ef874d9..3e7ed08b6c 100644 --- a/Marlin/src/gcode/calibrate/G34_M422.cpp +++ b/Marlin/src/gcode/calibrate/G34_M422.cpp @@ -153,7 +153,8 @@ void GcodeSuite::G34() { const xy_pos_t diff = z_stepper_align.xy[i] - z_stepper_align.xy[j]; return HYPOT2(diff.x, diff.y); }; - float z_probe = (Z_PROBE_SAFE_CLEARANCE) + (G34_MAX_GRADE) * 0.01f * SQRT(_MAX(0, magnitude2(0, 1) + const float zoffs = (probe.offset.z < 0) ? -probe.offset.z : 0.0f; + float z_probe = (Z_TWEEN_SAFE_CLEARANCE + zoffs) + (G34_MAX_GRADE) * 0.01f * SQRT(_MAX(0, magnitude2(0, 1) #if TRIPLE_Z , magnitude2(2, 1), magnitude2(2, 0) #if QUAD_Z @@ -165,12 +166,6 @@ void GcodeSuite::G34() { // Home before the alignment procedure home_if_needed(); - // Move the Z coordinate realm towards the positive - dirty trick - current_position.z += z_probe * 0.5f; - sync_plan_position(); - // Now, the Z origin lies below the build plate. That allows to probe deeper, before run_z_probe throws an error. - // This hack is un-done at the end of G34 - either by re-homing, or by using the probed heights of the last iteration. - #if !HAS_Z_STEPPER_ALIGN_STEPPER_XY float last_z_align_move[NUM_Z_STEPPERS] = ARRAY_N_1(NUM_Z_STEPPERS, 10000.0f); #else @@ -213,20 +208,16 @@ void GcodeSuite::G34() { // iteration odd/even --> downward / upward stepper sequence const uint8_t iprobe = (iteration & 1) ? NUM_Z_STEPPERS - 1 - i : i; - // Safe clearance even on an incline - if ((iteration == 0 || i > 0) && z_probe > current_position.z) do_blocking_move_to_z(z_probe); - xy_pos_t &ppos = z_stepper_align.xy[iprobe]; - if (DEBUGGING(LEVELING)) - DEBUG_ECHOLNPGM_P(PSTR("Probing X"), ppos.x, SP_Y_STR, ppos.y); + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM_P(PSTR("Probing X"), ppos.x, SP_Y_STR, ppos.y); // Probe a Z height for each stepper. // Probing sanity check is disabled, as it would trigger even in normal cases because // current_position.z has been manually altered in the "dirty trick" above. - const float z_probed_height = probe.probe_at_point(DIFF_TERN(HAS_HOME_OFFSET, ppos, xy_pos_t(home_offset)), raise_after, 0, true, false); + const float z_probed_height = probe.probe_at_point(DIFF_TERN(HAS_HOME_OFFSET, ppos, xy_pos_t(home_offset)), raise_after, 0, true, false, (Z_PROBE_LOW_POINT) - z_probe * 0.5f, z_probe * 0.5f); if (isnan(z_probed_height)) { - SERIAL_ECHOLNPGM("Probing failed"); + SERIAL_ECHOLNPGM(STR_ERR_PROBING_FAILED); LCD_MESSAGE(MSG_LCD_PROBING_FAILED); err_break = true; break; @@ -234,7 +225,7 @@ void GcodeSuite::G34() { // Add height to each value, to provide a more useful target height for // the next iteration of probing. This allows adjustments to be made away from the bed. - z_measured[iprobe] = z_probed_height + (Z_CLEARANCE_BETWEEN_PROBES); + z_measured[iprobe] = z_probed_height + (Z_TWEEN_SAFE_CLEARANCE + zoffs); //do we need to add the clearance to this? if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("> Z", iprobe + 1, " measured position is ", z_measured[iprobe]); @@ -248,7 +239,7 @@ void GcodeSuite::G34() { // Adapt the next probe clearance height based on the new measurements. // Safe_height = lowest distance to bed (= highest measurement) plus highest measured misalignment. z_maxdiff = z_measured_max - z_measured_min; - z_probe = (Z_PROBE_SAFE_CLEARANCE) + z_measured_max + z_maxdiff; + z_probe = (Z_TWEEN_SAFE_CLEARANCE + zoffs) + z_measured_max + z_maxdiff; //Not sure we need z_maxdiff, but leaving it in for safety. #if HAS_Z_STEPPER_ALIGN_STEPPER_XY // Replace the initial values in z_measured with calculated heights at @@ -428,15 +419,13 @@ void GcodeSuite::G34() { IF_DISABLED(TOUCH_MI_PROBE, probe.stow()); #if ENABLED(HOME_AFTER_G34) - // After this operation the z position needs correction - set_axis_never_homed(Z_AXIS); // Home Z after the alignment procedure process_subcommands_now(F("G28Z")); #else // Use the probed height from the last iteration to determine the Z height. // z_measured_min is used, because all steppers are aligned to z_measured_min. // Ideally, this would be equal to the 'z_probe * 0.5f' which was added earlier. - current_position.z -= z_measured_min - float(Z_CLEARANCE_BETWEEN_PROBES); + current_position.z -= z_measured_min - (Z_TWEEN_SAFE_CLEARANCE + zoffs); //we shouldn't want to subtract the clearance from here right? (Depends if we added it further up) sync_plan_position(); #endif diff --git a/Marlin/src/gcode/calibrate/M48.cpp b/Marlin/src/gcode/calibrate/M48.cpp index 5e0c21b42e..701e938697 100644 --- a/Marlin/src/gcode/calibrate/M48.cpp +++ b/Marlin/src/gcode/calibrate/M48.cpp @@ -223,7 +223,7 @@ void GcodeSuite::M48() { } // n_legs // Probe a single point - const float pz = probe.probe_at_point(test_position, raise_after, 0); + const float pz = probe.probe_at_point(test_position, raise_after); // Break the loop if the probe fails probing_good = !isnan(pz); diff --git a/Marlin/src/gcode/probe/G30.cpp b/Marlin/src/gcode/probe/G30.cpp index 468189bf5a..8e64ba7cca 100644 --- a/Marlin/src/gcode/probe/G30.cpp +++ b/Marlin/src/gcode/probe/G30.cpp @@ -77,7 +77,7 @@ void GcodeSuite::G30() { const ProbePtRaise raise_after = parser.boolval('E', true) ? PROBE_PT_STOW : PROBE_PT_NONE; TERN_(HAS_PTC, ptc.set_enabled(!parser.seen('C') || parser.value_bool())); - const float measured_z = probe.probe_at_point(probepos, raise_after, 1); + const float measured_z = probe.probe_at_point(probepos, raise_after); TERN_(HAS_PTC, ptc.set_enabled(true)); if (!isnan(measured_z)) { SERIAL_ECHOLNPGM("Bed X: ", probepos.asLogical().x, " Y: ", probepos.asLogical().y, " Z: ", measured_z); diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index d4f9423080..687ef28a37 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2350,6 +2350,10 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "HOME_Z_FIRST can't be used when homing Z with a probe." #endif +#if Z_HOME_TO_MAX && defined(Z_AFTER_HOMING) && DISABLED(ALLOW_Z_AFTER_HOMING) + #error "Z_AFTER_HOMING shouldn't be used with Z max homing to keep 'G28 Z' safe for end-of-print usage. Define ALLOW_Z_AFTER_HOMING to allow this at your own risk." +#endif + // Dual/multiple endstops requirements #if ENABLED(X_DUAL_ENDSTOPS) #if ENABLED(DELTA) diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index e685fe16fd..c4098bdb49 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -1409,6 +1409,13 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item static float mlev_z_pos = 0; static bool use_probe = false; + #if HAS_BED_PROBE + constexpr float probe_x_min = _MAX(0 + corner_pos, X_MIN_POS + probe.offset.x, X_MIN_POS + PROBING_MARGIN) - probe.offset.x, + probe_x_max = _MIN((X_BED_SIZE + X_MIN_POS) - corner_pos, X_MAX_POS + probe.offset.x, X_MAX_POS - PROBING_MARGIN) - probe.offset.x, + probe_y_min = _MAX(0 + corner_pos, Y_MIN_POS + probe.offset.y, Y_MIN_POS + PROBING_MARGIN) - probe.offset.y, + probe_y_max = _MIN((Y_BED_SIZE + Y_MIN_POS) - corner_pos, Y_MAX_POS + probe.offset.y, Y_MAX_POS - PROBING_MARGIN) - probe.offset.y; + #endif + switch (item) { case MLEVEL_BACK: if (draw) @@ -1425,19 +1432,22 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item Draw_Checkbox(row, use_probe); } else { - use_probe = !use_probe; + use_probe ^= true; Draw_Checkbox(row, use_probe); if (use_probe) { Popup_Handler(Level); + constexpr struct { xy_pos_t p, ProbePtRaise r } points[] = { + { { probe_x_min, probe_y_min }, PROBE_PT_RAISE }, + { { probe_x_min, probe_y_max }, PROBE_PT_RAISE }, + { { probe_x_max, probe_y_max }, PROBE_PT_RAISE }, + { { probe_x_max, probe_y_min }, PROBE_PT_STOW } + }; corner_avg = 0; - #define PROBE_X_MIN _MAX(0 + corner_pos, X_MIN_POS + probe.offset.x, X_MIN_POS + PROBING_MARGIN) - probe.offset.x - #define PROBE_X_MAX _MIN((X_BED_SIZE + X_MIN_POS) - corner_pos, X_MAX_POS + probe.offset.x, X_MAX_POS - PROBING_MARGIN) - probe.offset.x - #define PROBE_Y_MIN _MAX(0 + corner_pos, Y_MIN_POS + probe.offset.y, Y_MIN_POS + PROBING_MARGIN) - probe.offset.y - #define PROBE_Y_MAX _MIN((Y_BED_SIZE + Y_MIN_POS) - corner_pos, Y_MAX_POS + probe.offset.y, Y_MAX_POS - PROBING_MARGIN) - probe.offset.y - corner_avg += probe.probe_at_point(PROBE_X_MIN, PROBE_Y_MIN, PROBE_PT_RAISE, 0, false); - corner_avg += probe.probe_at_point(PROBE_X_MIN, PROBE_Y_MAX, PROBE_PT_RAISE, 0, false); - corner_avg += probe.probe_at_point(PROBE_X_MAX, PROBE_Y_MAX, PROBE_PT_RAISE, 0, false); - corner_avg += probe.probe_at_point(PROBE_X_MAX, PROBE_Y_MIN, PROBE_PT_STOW, 0, false); + for (uint8_t i = 0; i < COUNT(points); i++) { + const float mz = probe.probe_at_point(points[i].p, points[i].r, 0, false); + if (isnan(mz)) { corner_avg = 0; break; } + corner_avg += mz; + } corner_avg /= 4; Redraw_Menu(); } @@ -1451,7 +1461,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item Popup_Handler(MoveWait); if (use_probe) { #if HAS_BED_PROBE - sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(PROBE_X_MIN, 1, 3, str_1), dtostrf(PROBE_Y_MIN, 1, 3, str_2)); + sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(probe_x_min, 1, 3, str_1), dtostrf(probe_y_min, 1, 3, str_2)); gcode.process_subcommands_now(cmd); planner.synchronize(); Popup_Handler(ManualProbing); @@ -1472,7 +1482,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item Popup_Handler(MoveWait); if (use_probe) { #if HAS_BED_PROBE - sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(PROBE_X_MIN, 1, 3, str_1), dtostrf(PROBE_Y_MAX, 1, 3, str_2)); + sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(probe_x_min, 1, 3, str_1), dtostrf(probe_y_max, 1, 3, str_2)); gcode.process_subcommands_now(cmd); planner.synchronize(); Popup_Handler(ManualProbing); @@ -1493,7 +1503,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item Popup_Handler(MoveWait); if (use_probe) { #if HAS_BED_PROBE - sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(PROBE_X_MAX, 1, 3, str_1), dtostrf(PROBE_Y_MAX, 1, 3, str_2)); + sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(probe_x_max, 1, 3, str_1), dtostrf(probe_y_max, 1, 3, str_2)); gcode.process_subcommands_now(cmd); planner.synchronize(); Popup_Handler(ManualProbing); @@ -1514,7 +1524,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item Popup_Handler(MoveWait); if (use_probe) { #if HAS_BED_PROBE - sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(PROBE_X_MAX, 1, 3, str_1), dtostrf(PROBE_Y_MIN, 1, 3, str_2)); + sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(probe_x_max, 1, 3, str_1), dtostrf(probe_y_min, 1, 3, str_2)); gcode.process_subcommands_now(cmd); planner.synchronize(); Popup_Handler(ManualProbing); diff --git a/Marlin/src/lcd/menu/menu_probe_offset.cpp b/Marlin/src/lcd/menu/menu_probe_offset.cpp index 62704cdede..0dd118ed22 100644 --- a/Marlin/src/lcd/menu/menu_probe_offset.cpp +++ b/Marlin/src/lcd/menu/menu_probe_offset.cpp @@ -102,7 +102,7 @@ void prepare_for_probe_offset_wizard() { // Probe for Z reference ui.wait_for_move = true; - z_offset_ref = probe.probe_at_point(wizard_pos, PROBE_PT_RAISE, 0, true); + z_offset_ref = probe.probe_at_point(wizard_pos, PROBE_PT_RAISE); ui.wait_for_move = false; // Stow the probe, as the last call to probe.probe_at_point(...) left diff --git a/Marlin/src/lcd/menu/menu_tramming_wizard.cpp b/Marlin/src/lcd/menu/menu_tramming_wizard.cpp index 4ce2cd6460..8fb251c238 100644 --- a/Marlin/src/lcd/menu/menu_tramming_wizard.cpp +++ b/Marlin/src/lcd/menu/menu_tramming_wizard.cpp @@ -53,7 +53,7 @@ static int8_t reference_index; // = 0 #endif static bool probe_single_point() { - const float z_probed_height = probe.probe_at_point(tramming_points[tram_index], PROBE_PT_RAISE, 0, true); + const float z_probed_height = probe.probe_at_point(tramming_points[tram_index], PROBE_PT_RAISE); z_measured[tram_index] = z_probed_height; if (reference_index < 0) reference_index = tram_index; move_to_tramming_wait_pos(); diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index a03125a73a..96606f30a8 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -522,7 +522,7 @@ bool Probe::set_deployed(const bool deploy, const bool no_return/*=false*/) { #endif if (z_raise_wanted) { - const float zdest = DIFF_TERN(HAS_HOTEND_OFFSET, _MAX(Z_CLEARANCE_BETWEEN_PROBES, Z_CLEARANCE_DEPLOY_PROBE), hotend_offset[active_extruder].z); + const float zdest = DIFF_TERN(HAS_HOTEND_OFFSET, Z_CLEARANCE_DEPLOY_PROBE, hotend_offset[active_extruder].z); if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Raise Z to ", zdest); do_z_clearance(zdest); } @@ -716,10 +716,12 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { * @param sanity_check Flag to compare the probe result with the expected result * based on the probe Z offset. If the result is too far away * (more than 2mm too early) then consider it an error. + * @param z_min_point Override the minimum probing height (-2mm), to allow deeper probing. + * @param z_clearance Z clearance to apply on probe failure. * * @return The Z position of the bed at the current XY or NAN on error. */ -float Probe::run_z_probe(const bool sanity_check/*=true*/) { +float Probe::run_z_probe(const bool sanity_check/*=true*/, const_float_t z_min_point/*=Z_PROBE_LOW_POINT*/, const_float_t z_clearance/*=Z_TWEEN_SAFE_CLEARANCE*/) { DEBUG_SECTION(log_probe, "Probe::run_z_probe", DEBUGGING(LEVELING)); const float zoffs = SUM_TERN(HAS_HOTEND_OFFSET, -offset.z, hotend_offset[active_extruder].z); @@ -750,9 +752,8 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { }; // Stop the probe before it goes too low to prevent damage. - // For known Z probe below the expected trigger point, otherwise -10mm. - const float z_probe_low_point = axis_is_trusted(Z_AXIS) ? zoffs + Z_PROBE_LOW_POINT : -10.0f; - + // For known Z probe below the expected trigger point, otherwise -10mm lower. + const float z_probe_low_point = zoffs + z_min_point -float((!axis_is_trusted(Z_AXIS)) * 10); if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Probe Low Point: ", z_probe_low_point); // Double-probing does a fast probe followed by a slow probe @@ -768,7 +769,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("1st Probe Z:", z1); // Raise to give the probe clearance - do_z_clearance(Z_CLEARANCE_MULTI_PROBE); + do_z_clearance(z1 + (Z_CLEARANCE_MULTI_PROBE), false); #elif Z_PROBE_FEEDRATE_FAST != Z_PROBE_FEEDRATE_SLOW @@ -778,7 +779,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { if (current_position.z > z) { // Probe down fast. If the probe never triggered, raise for probe clearance if (!probe_down_to_z(z, z_probe_fast_mm_s)) - do_z_clearance(Z_PROBE_SAFE_CLEARANCE); + do_z_clearance(z_clearance); } #endif @@ -911,7 +912,11 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/) { * with the previously active tool. * */ -float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRaise raise_after/*=PROBE_PT_NONE*/, const uint8_t verbose_level/*=0*/, const bool probe_relative/*=true*/, const bool sanity_check/*=true*/) { +float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRaise raise_after/*=PROBE_PT_NONE*/, + const uint8_t verbose_level/*=0*/, const bool probe_relative/*=true*/, const bool sanity_check/*=true*/, + const_float_t z_min_point/*=Z_PROBE_LOW_POINT*/, const_float_t z_clearance/*=Z_TWEEN_SAFE_CLEARANCE*/, + const bool raise_after_is_relative/*=false*/ +) { DEBUG_SECTION(log_probe, "Probe::probe_at_point", DEBUGGING(LEVELING)); if (DEBUGGING(LEVELING)) { @@ -930,7 +935,7 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai #endif // Use a safe Z height for the XY move - const float safe_z = _MAX(current_position.z, Z_PROBE_SAFE_CLEARANCE); + const float safe_z = _MAX(current_position.z, z_clearance); // On delta keep Z below clip height or do_blocking_move_to will abort xyz_pos_t npos = NUM_AXIS_ARRAY( @@ -959,7 +964,7 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai #else // !BD_SENSOR - float measured_z = deploy() ? NAN : run_z_probe(sanity_check) + offset.z; + float measured_z = deploy() ? NAN : run_z_probe(sanity_check, z_min_point, z_clearance) + offset.z; // Deploy succeeded and a successful measurement was done. // Raise and/or stow the probe depending on 'raise_after' and settings. @@ -967,7 +972,10 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai switch (raise_after) { default: break; case PROBE_PT_RAISE: - do_z_clearance(Z_PROBE_SAFE_CLEARANCE); + if (raise_after_is_relative) + do_z_clearance(current_position.z + z_clearance, false); + else + do_z_clearance(z_clearance); break; case PROBE_PT_STOW: case PROBE_PT_LAST_STOW: if (stow()) measured_z = NAN; // Error on stow? diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index fd0302c665..715f3f3a73 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -29,6 +29,10 @@ #include "motion.h" +#if ENABLED(BLTOUCH) + #include "../feature/bltouch.h" +#endif + #define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE) #include "../core/debug_out.h" @@ -48,7 +52,7 @@ #endif // In BLTOUCH HS mode, the probe travels in a deployed state. -#define Z_PROBE_SAFE_CLEARANCE SUM_TERN(BLTOUCH, Z_CLEARANCE_BETWEEN_PROBES, bltouch.z_extra_clearance()) +#define Z_TWEEN_SAFE_CLEARANCE SUM_TERN(BLTOUCH, Z_CLEARANCE_BETWEEN_PROBES, bltouch.z_extra_clearance()) #if ENABLED(PREHEAT_BEFORE_LEVELING) #ifndef LEVELING_NOZZLE_TEMP @@ -159,9 +163,17 @@ public: #endif // !IS_KINEMATIC - static float probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRaise raise_after=PROBE_PT_NONE, const uint8_t verbose_level=0, const bool probe_relative=true, const bool sanity_check=true); - static float probe_at_point(const xy_pos_t &pos, const ProbePtRaise raise_after=PROBE_PT_NONE, const uint8_t verbose_level=0, const bool probe_relative=true, const bool sanity_check=true) { - return probe_at_point(pos.x, pos.y, raise_after, verbose_level, probe_relative, sanity_check); + static float probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRaise raise_after=PROBE_PT_NONE, + const uint8_t verbose_level=0, const bool probe_relative=true, const bool sanity_check=true, + const_float_t z_min_point=Z_PROBE_LOW_POINT, const_float_t z_clearance=Z_TWEEN_SAFE_CLEARANCE, + const bool raise_after_is_relative=false); + + static float probe_at_point(const xy_pos_t &pos, const ProbePtRaise raise_after=PROBE_PT_NONE, + const uint8_t verbose_level=0, const bool probe_relative=true, const bool sanity_check=true, + const_float_t z_min_point=Z_PROBE_LOW_POINT, float z_clearance=Z_TWEEN_SAFE_CLEARANCE, + const bool raise_after_is_relative=false + ) { + return probe_at_point(pos.x, pos.y, raise_after, verbose_level, probe_relative, sanity_check, z_min_point, z_clearance, raise_after_is_relative); } #else // !HAS_BED_PROBE @@ -330,7 +342,7 @@ public: private: static bool probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s); - static float run_z_probe(const bool sanity_check=true); + static float run_z_probe(const bool sanity_check=true, const_float_t z_min_point=Z_PROBE_LOW_POINT, const_float_t z_clearance=Z_TWEEN_SAFE_CLEARANCE); }; extern Probe probe; From f9db5ab965f39c594029301d20358cc7150f233a Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 29 Apr 2023 00:20:26 +0000 Subject: [PATCH 347/659] [cron] Bump distribution date (2023-04-29) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index e5e96da7c2..aa8834afc2 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-28" +//#define STRING_DISTRIBUTION_DATE "2023-04-29" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index cedbb273e4..0dde46e36c 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-28" + #define STRING_DISTRIBUTION_DATE "2023-04-29" #endif /** From 4c033c3e47b80a9d2497b47a7d3f1ef5034ff4d0 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 29 Apr 2023 12:34:56 -0500 Subject: [PATCH 348/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Twe?= =?UTF-8?q?ak=20homing=20debug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/motion.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 418bee559f..ccbf73e243 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -2444,9 +2444,9 @@ void set_axis_is_at_home(const AxisEnum axis) { if (axis == Z_AXIS) { #if HOMING_Z_WITH_PROBE current_position.z -= probe.offset.z; - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("*** Z HOMED WITH PROBE (Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) ***\n> probe.offset.z = ", probe.offset.z); + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("*** Z homed with PROBE" TERN_(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, " (Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)") " ***\n> (M851 Z", probe.offset.z, ")"); #else - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("*** Z HOMED TO ENDSTOP ***"); + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("*** Z homed to ENDSTOP ***"); #endif } #endif From 5aef2c0afa7807dce16eb4cc49eaaa6bd3a9e714 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 30 Apr 2023 00:22:44 +0000 Subject: [PATCH 349/659] [cron] Bump distribution date (2023-04-30) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index aa8834afc2..fa1ed3ac3f 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-29" +//#define STRING_DISTRIBUTION_DATE "2023-04-30" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 0dde46e36c..9945dc5cb6 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-29" + #define STRING_DISTRIBUTION_DATE "2023-04-30" #endif /** From ec6bc15d1b52f480e88ad4a21c87f175d1388226 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 29 Apr 2023 20:10:33 -0500 Subject: [PATCH 350/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20FT=20Motion=20reve?= =?UTF-8?q?rsed=20Z?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 32e97c2a06..790b118c6d 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -3466,7 +3466,7 @@ void Stepper::report_positions() { #if HAS_Z_AXIS // Z is handled differently to update the stepper // counts (needed by Marlin for bed level probing). - const bool z_dir = !TEST(command, FT_BIT_DIR_Z), + const bool z_dir = TEST(command, FT_BIT_DIR_Z), z_step = TEST(command, FT_BIT_STEP_Z); #endif From 3b50b6aeb1dec836d6bf26f0c8af2b5bb1b7de48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davide=20Rombol=C3=A0?= Date: Sun, 30 Apr 2023 23:36:47 +0200 Subject: [PATCH 351/659] =?UTF-8?q?=F0=9F=94=A7=20Allow=20BLTOUCH=5FHS=5FE?= =?UTF-8?q?XTRA=5FCLEARANCE=20=3D=3D=200=20(#25760)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/SanityCheck.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 687ef28a37..fd6b78cf72 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1279,7 +1279,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L static_assert(!(strcmp(hs, "1") && strcmp(hs, "true") && strcmp(hs, "0") && strcmp(hs, "false")), \ "BLTOUCH_HS_MODE must now be defined as true or false, indicating the default state."); #ifdef BLTOUCH_HS_EXTRA_CLEARANCE - static_assert(BLTOUCH_HS_EXTRA_CLEARANCE > 0, "BLTOUCH_HS_MODE requires a positive BLTOUCH_HS_EXTRA_CLEARANCE."); + static_assert(BLTOUCH_HS_EXTRA_CLEARANCE >= 0, "BLTOUCH_HS_MODE requires BLTOUCH_HS_EXTRA_CLEARANCE >= 0."); #endif #endif From b88ab391bb7199e5774610efd41f1f82a14ba8d2 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Mon, 1 May 2023 09:52:29 +1200 Subject: [PATCH 352/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Ender-2=20Stock=20?= =?UTF-8?q?LCD=20on=20MELZI=5FCREALITY=20(#25759)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pins/sanguino/pins_MELZI_CREALITY.h | 75 ++++++++++--------- 1 file changed, 41 insertions(+), 34 deletions(-) diff --git a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h index 398343cb97..e391cd1020 100644 --- a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h +++ b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h @@ -45,54 +45,72 @@ #define BOARD_ST7920_DELAY_3 125 #endif +/** + * EXP1 EXP1 as ENDER2 STOCKDISPLAY EXP1 as CR10 STOCKDISPLAY + * ------ ------ ------ + * D27 | 1 2 | D16 SCK | 1 2 | BTN_E BEEPER_PIN | 1 2 | BTN_ENC + * D11 | 3 4 | RESET BTN_EN1 | 3 4 | RESET BTN_EN1 | 3 4 | RESET + * D10 5 6 | D30 BTN_EN2 5 6 | LCD_A0 BTN_EN2 5 6 | LCD_D4 (ST9720 CLK) + * D28 | 7 8 | D17 LCD_CS | 7 8 | MOSI (ST9720 CS) LCD_RS | 7 8 | LCD_EN (ST9720 DAT) + * GND | 9 10 | 5V GND | 9 10 | 5V GND | 9 10 | 5V + * ------ ------ ------ + */ +#define EXP1_01_PIN 27 +#define EXP1_02_PIN 16 +#define EXP1_03_PIN 11 +#define EXP1_04_PIN -1 // RESET +#define EXP1_05_PIN 10 +#define EXP1_06_PIN 30 +#define EXP1_07_PIN 28 +#define EXP1_08_PIN 17 + // // LCD / Controller // #if ANY(MKS_MINI_12864, CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) - #if EITHER(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) - #define LCD_PINS_RS 28 // ST9720 CS - #define LCD_PINS_EN 17 // ST9720 DAT - #define LCD_PINS_D4 30 // ST9720 CLK + #if ENABLED(MKS_MINI_12864) + #ifndef NO_CONTROLLER_CUSTOM_WIRING_WARNING + #error "CAUTION! MKS_MINI_12864 on MELZI_CREALITY requires wiring modifications. (Define NO_CONTROLLER_CUSTOM_WIRING_WARNING to suppress this warning.)" + #endif + #define DOGLCD_CS EXP1_07_PIN + #define DOGLCD_A0 EXP1_06_PIN + #elif ENABLED(CR10_STOCKDISPLAY) + #define LCD_PINS_RS EXP1_07_PIN // ST9720 CS + #define LCD_PINS_EN EXP1_08_PIN // ST9720 DAT + #define LCD_PINS_D4 EXP1_06_PIN // ST9720 CLK + #define BEEPER_PIN EXP1_01_PIN + #elif ENABLED(ENDER2_STOCKDISPLAY) + #define DOGLCD_CS EXP1_07_PIN + #define DOGLCD_A0 EXP1_06_PIN + #define DOGLCD_SCK EXP1_01_PIN + #define DOGLCD_MOSI EXP1_08_PIN + #define FORCE_SOFT_SPI #endif - #if EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) - #define DOGLCD_CS 28 - #define DOGLCD_A0 30 - #endif - + #define BTN_ENC EXP1_02_PIN + #define BTN_EN1 EXP1_03_PIN + #define BTN_EN2 EXP1_05_PIN #define LCD_SDSS 31 // Controller's SD card - - #define BTN_ENC 16 - #define BTN_EN1 11 - #define BTN_EN2 10 - #define BEEPER_PIN 27 - #define LCD_PINS_DEFINED - #endif #include "pins_MELZI.h" // ... SANGUINOLOLU_12 ... SANGUINOLOLU_11 #if ENABLED(BLTOUCH) #ifndef SERVO0_PIN - #define SERVO0_PIN 27 + #define SERVO0_PIN EXP1_01_PIN #endif #if SERVO0_PIN == BEEPER_PIN #undef BEEPER_PIN #endif #elif HAS_FILAMENT_SENSOR #ifndef FIL_RUNOUT_PIN - #define FIL_RUNOUT_PIN 27 + #define FIL_RUNOUT_PIN EXP1_01_PIN #endif #if FIL_RUNOUT_PIN == BEEPER_PIN #undef BEEPER_PIN #endif #endif -#if ENABLED(MINIPANEL) - #undef DOGLCD_CS - #define DOGLCD_CS LCD_PINS_RS -#endif - /** PIN: 0 Port: B0 E0_DIR_PIN protected PIN: 1 Port: B1 E0_STEP_PIN protected @@ -139,14 +157,3 @@ PIN: 30 Port: A1 LCD_PINS_D4 Output = 1 PIN: 31 Port: A0 SDSS Output = 1 */ - -/** - * EXP1 Connector EXP1 as CR10 STOCKDISPLAY - * ------ ------ - * PA4 | 1 2 | PC0 BEEPER_PIN | 1 2 | BTN_ENC - * PD3 | 3 4 | RESET BTN_EN1 | 3 4 | RESET - * PD2 5 6 | PA1 BTN_EN2 5 6 | LCD_D4 (ST9720 CLK) - * PA3 | 7 8 | PC1 (ST9720 CS) LCD_RS | 7 8 | LCD_EN (ST9720 DAT) - * GND | 9 10 | 5V GND | 9 10 | 5V - * ------ ------ - */ From 4937a64bccdb449569c30ebc234f2f0cc102be9e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 30 Apr 2023 18:12:21 -0500 Subject: [PATCH 353/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Use?= =?UTF-8?q?=20NUM=5FAXIS=5FARRAY?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/host/M115.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index 236895e107..43d37e92ac 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -223,9 +223,9 @@ void GcodeSuite::M115() { // Machine Geometry #if ENABLED(M115_GEOMETRY_REPORT) constexpr xyz_pos_t bmin{0}, - bmax = ARRAY_N(NUM_AXES, X_BED_SIZE, Y_BED_SIZE, Z_MAX_POS, I_MAX_POS, J_MAX_POS, K_MAX_POS, U_MAX_POS, V_MAX_POS, W_MAX_POS), - dmin = ARRAY_N(NUM_AXES, X_MIN_POS, Y_MIN_POS, Z_MIN_POS, I_MIN_POS, J_MIN_POS, K_MIN_POS, U_MIN_POS, V_MIN_POS, W_MIN_POS), - dmax = ARRAY_N(NUM_AXES, X_MAX_POS, Y_MAX_POS, Z_MAX_POS, I_MAX_POS, J_MAX_POS, K_MAX_POS, U_MAX_POS, V_MAX_POS, W_MAX_POS); + bmax = NUM_AXIS_ARRAY(X_BED_SIZE, Y_BED_SIZE, Z_MAX_POS, I_MAX_POS, J_MAX_POS, K_MAX_POS, U_MAX_POS, V_MAX_POS, W_MAX_POS), + dmin = NUM_AXIS_ARRAY(X_MIN_POS, Y_MIN_POS, Z_MIN_POS, I_MIN_POS, J_MIN_POS, K_MIN_POS, U_MIN_POS, V_MIN_POS, W_MIN_POS), + dmax = NUM_AXIS_ARRAY(X_MAX_POS, Y_MAX_POS, Z_MAX_POS, I_MAX_POS, J_MAX_POS, K_MAX_POS, U_MAX_POS, V_MAX_POS, W_MAX_POS); xyz_pos_t cmin = bmin, cmax = bmax; apply_motion_limits(cmin); apply_motion_limits(cmax); From f246e0d0e417f8178a22bcad545bc2938c95b394 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 30 Apr 2023 18:12:13 -0500 Subject: [PATCH 354/659] =?UTF-8?q?=F0=9F=94=A7=20Fix=20X2/Y2=20axis=20pin?= =?UTF-8?q?s=20check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/SanityCheck.h | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index fd6b78cf72..74633b9ec4 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -239,15 +239,13 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Multiple Stepper Drivers Per Axis */ -#define GOOD_AXIS_PINS(A) (HAS_##A##_ENABLE && HAS_##A##_STEP && HAS_##A##_DIR) -#if HAS_X2_STEPPER && !GOOD_AXIS_PINS(X) +#define GOOD_AXIS_PINS(A) PINS_EXIST(A##_ENABLE, A##_STEP, A##_DIR) +#if HAS_X2_STEPPER && !GOOD_AXIS_PINS(X2) #error "If X2_DRIVER_TYPE is defined, then X2 ENABLE/STEP/DIR pins are also needed." #endif - -#if HAS_DUAL_Y_STEPPERS && !GOOD_AXIS_PINS(Y) +#if HAS_DUAL_Y_STEPPERS && !GOOD_AXIS_PINS(Y2) #error "If Y2_DRIVER_TYPE is defined, then Y2 ENABLE/STEP/DIR pins are also needed." #endif - #if HAS_Z_AXIS #if NUM_Z_STEPPERS >= 2 && !GOOD_AXIS_PINS(Z2) #error "If Z2_DRIVER_TYPE is defined, then Z2 ENABLE/STEP/DIR pins are also needed." From 9773160639e1670b81ff64325d3c17d591b32575 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 30 Apr 2023 18:24:05 -0500 Subject: [PATCH 355/659] =?UTF-8?q?=F0=9F=94=A7=20Character=20display=20ha?= =?UTF-8?q?s=20boot=20screen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 25 ++++++++++--------- .../ftdi_eve_touch_ui/generic/boot_screen.cpp | 2 +- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index f712a6921a..34f5f38ce3 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1537,21 +1537,22 @@ * We encourage you to take advantage of this new feature and we also * respectfully request that you retain the unmodified Marlin boot screen. */ - #if ANY(HAS_MARLINUI_U8GLIB, TOUCH_UI_FTDI_EVE, IS_DWIN_MARLINUI) - #define SHOW_BOOTSCREEN // Show the Marlin bootscreen on startup. ** ENABLE FOR PRODUCTION ** - #if ENABLED(SHOW_BOOTSCREEN) - #define BOOTSCREEN_TIMEOUT 4000 // (ms) Total Duration to display the boot screen(s) - #if EITHER(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI) - #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) - #endif - //#define SHOW_CUSTOM_BOOTSCREEN // Show the bitmap in Marlin/_Bootscreen.h on startup. + #define SHOW_BOOTSCREEN // Show the Marlin bootscreen on startup. ** ENABLE FOR PRODUCTION ** + #if ENABLED(SHOW_BOOTSCREEN) + #define BOOTSCREEN_TIMEOUT 4000 // (ms) Total Duration to display the boot screen(s) + #if EITHER(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI) + #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) #endif #if HAS_MARLINUI_U8GLIB - #if ENABLED(SHOW_BOOTSCREEN) - //#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash. - #endif - //#define CUSTOM_STATUS_SCREEN_IMAGE // Show the bitmap in Marlin/_Statusscreen.h on the status screen. + //#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash. #endif + #if EITHER(HAS_MARLINUI_U8GLIB, TOUCH_UI_FTDI_EVE) + //#define SHOW_CUSTOM_BOOTSCREEN // Show the bitmap in Marlin/_Bootscreen.h on startup. + #endif + #endif + + #if HAS_MARLINUI_U8GLIB + //#define CUSTOM_STATUS_SCREEN_IMAGE // Show the bitmap in Marlin/_Statusscreen.h on the status screen. #endif //#define SOUND_MENU_ITEM // Add a mute option to the LCD menu diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/boot_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/boot_screen.cpp index c0940bed5c..b01e45948c 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/boot_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/boot_screen.cpp @@ -30,7 +30,7 @@ #if ENABLED(SHOW_CUSTOM_BOOTSCREEN) #if ENABLED(TOUCH_UI_PORTRAIT) - #include "../theme/bootscreen_logo_portrait.h" + #include "../theme/_bootscreen_portrait.h" #else #include "../theme/_bootscreen_landscape.h" #endif From 35dd6a3f77f17f7a0216c242916d4fc08521e2b3 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 1 May 2023 00:22:20 +0000 Subject: [PATCH 356/659] [cron] Bump distribution date (2023-05-01) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index fa1ed3ac3f..7ab3dcf489 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-04-30" +//#define STRING_DISTRIBUTION_DATE "2023-05-01" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 9945dc5cb6..db48a85c54 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-04-30" + #define STRING_DISTRIBUTION_DATE "2023-05-01" #endif /** From 55cbe15b811975156a4d2b2a1a9ecffd872ee951 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 30 Apr 2023 19:14:53 -0500 Subject: [PATCH 357/659] =?UTF-8?q?=F0=9F=94=A7=20Remove=20config.ini=20ob?= =?UTF-8?q?solete=20options?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/config.ini | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Marlin/config.ini b/Marlin/config.ini index c4fe7597f8..6d2a49c2ed 100644 --- a/Marlin/config.ini +++ b/Marlin/config.ini @@ -69,10 +69,6 @@ x_home_dir = -1 y_home_dir = -1 z_home_dir = -1 -use_xmin_plug = on -use_ymin_plug = on -use_zmin_plug = on - x_min_endstop_hit_state = HIGH y_min_endstop_hit_state = HIGH z_min_endstop_hit_state = HIGH From 006a9e514b68bc10ae069f0715bf5d7a44e5b6a7 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 30 Apr 2023 23:10:44 -0500 Subject: [PATCH 358/659] =?UTF-8?q?=F0=9F=A9=B9=20NOZZLE=5FCLEAN=5FPATTERN?= =?UTF-8?q?=5F*=20Followup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25666 --- Marlin/src/gcode/feature/clean/G12.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/gcode/feature/clean/G12.cpp b/Marlin/src/gcode/feature/clean/G12.cpp index 597d8ce0a0..98be3f0770 100644 --- a/Marlin/src/gcode/feature/clean/G12.cpp +++ b/Marlin/src/gcode/feature/clean/G12.cpp @@ -64,7 +64,7 @@ void GcodeSuite::G12() { NOZZLE_CLEAN_DEFAULT_PATTERN #endif ); - const uint8_t strokes = TERN0(NOZZLE_CLEAN_PATTERN_LINEAR, parser.ushortval('S', NOZZLE_CLEAN_STROKES)), + const uint8_t strokes = TERN0(NOZZLE_CLEAN_PATTERN_LINE, parser.ushortval('S', NOZZLE_CLEAN_STROKES)), objects = TERN0(NOZZLE_CLEAN_PATTERN_ZIGZAG, parser.ushortval('T', NOZZLE_CLEAN_TRIANGLES)); const float radius = TERN0(NOZZLE_CLEAN_PATTERN_CIRCLE, parser.linearval('R', NOZZLE_CLEAN_CIRCLE_RADIUS)); From 4bed8a89dbf0726700cfef44a38961d2bb6c6716 Mon Sep 17 00:00:00 2001 From: Scott Mikutsky Date: Mon, 1 May 2023 02:10:46 -0400 Subject: [PATCH 359/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20STM32=20USB=20disc?= =?UTF-8?q?onnect=20behavior=20(#25762)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/STM32/usb_host.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/HAL/STM32/usb_host.cpp b/Marlin/src/HAL/STM32/usb_host.cpp index d77f0b28e9..f378467004 100644 --- a/Marlin/src/HAL/STM32/usb_host.cpp +++ b/Marlin/src/HAL/STM32/usb_host.cpp @@ -44,7 +44,7 @@ static void USBH_UserProcess(USBH_HandleTypeDef *phost, uint8_t id) { break; case HOST_USER_DISCONNECTION: //SERIAL_ECHOLNPGM("APPLICATION_DISCONNECT"); - //usb.setUsbTaskState(USB_STATE_RUNNING); + usb.setUsbTaskState(USB_STATE_INIT); break; case HOST_USER_CLASS_ACTIVE: //SERIAL_ECHOLNPGM("APPLICATION_READY"); From b042567f76b92d177e355dd2fc55b1b043fdff36 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 1 May 2023 18:15:31 -0500 Subject: [PATCH 360/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20TFT=20sanity=20err?= =?UTF-8?q?or?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/TEENSY35_36/inc/SanityCheck.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/HAL/TEENSY35_36/inc/SanityCheck.h b/Marlin/src/HAL/TEENSY35_36/inc/SanityCheck.h index ff6d772411..843905a851 100644 --- a/Marlin/src/HAL/TEENSY35_36/inc/SanityCheck.h +++ b/Marlin/src/HAL/TEENSY35_36/inc/SanityCheck.h @@ -26,7 +26,7 @@ */ #if HAS_SPI_TFT || HAS_FSMC_TFT - #error "Sorry! TFT displays are not available for Teensy 3.5/3.6. + #error "Sorry! TFT displays are not available for Teensy 3.5/3.6." #endif #if ENABLED(EMERGENCY_PARSER) From f89fa4cec79c3f034b8bfc868523a1df19520970 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 2 May 2023 00:24:02 +0000 Subject: [PATCH 361/659] [cron] Bump distribution date (2023-05-02) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 7ab3dcf489..6a3684ba4a 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-01" +//#define STRING_DISTRIBUTION_DATE "2023-05-02" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index db48a85c54..9283399182 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-01" + #define STRING_DISTRIBUTION_DATE "2023-05-02" #endif /** From 4812ed5053983212c9ec8a6229a150a1af7822f1 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 1 May 2023 18:45:42 -0500 Subject: [PATCH 362/659] =?UTF-8?q?=F0=9F=8E=A8=20Misc.=20code=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/DUE/MinSerial.cpp | 22 +++++++++---------- Marlin/src/HAL/LPC1768/MinSerial.cpp | 22 +++++++++---------- Marlin/src/HAL/STM32/MinSerial.cpp | 22 +++++++++---------- Marlin/src/feature/pause.cpp | 2 +- Marlin/src/feature/runout.h | 14 ++++++------ Marlin/src/gcode/queue.cpp | 4 ++-- Marlin/src/gcode/queue.h | 4 ++-- .../lcd/extui/ia_creality/creality_extui.cpp | 4 ++-- .../lcd/extui/ia_creality/ia_creality_extui.h | 3 ++- Marlin/src/lcd/extui/mks_ui/pic_manager.cpp | 3 ++- .../variants/MARLIN_F103Rx/PeripheralPins.c | 0 .../variants/MARLIN_F103Rx/PinNamesVar.h | 2 +- .../variants/MARLIN_F407ZE/PeripheralPins.c | 3 +-- 13 files changed, 53 insertions(+), 52 deletions(-) mode change 100755 => 100644 buildroot/share/PlatformIO/variants/MARLIN_F103Rx/PeripheralPins.c diff --git a/Marlin/src/HAL/DUE/MinSerial.cpp b/Marlin/src/HAL/DUE/MinSerial.cpp index e5b3dbfe6f..505a712aa9 100644 --- a/Marlin/src/HAL/DUE/MinSerial.cpp +++ b/Marlin/src/HAL/DUE/MinSerial.cpp @@ -73,18 +73,18 @@ void install_min_serial() { } #if DISABLED(DYNAMIC_VECTORTABLE) -extern "C" { - __attribute__((naked)) void JumpHandler_ASM() { - __asm__ __volatile__ ( - "b CommonHandler_ASM\n" - ); + extern "C" { + __attribute__((naked)) void JumpHandler_ASM() { + __asm__ __volatile__ ( + "b CommonHandler_ASM\n" + ); + } + void __attribute__((naked, alias("JumpHandler_ASM"))) HardFault_Handler(); + void __attribute__((naked, alias("JumpHandler_ASM"))) BusFault_Handler(); + void __attribute__((naked, alias("JumpHandler_ASM"))) UsageFault_Handler(); + void __attribute__((naked, alias("JumpHandler_ASM"))) MemManage_Handler(); + void __attribute__((naked, alias("JumpHandler_ASM"))) NMI_Handler(); } - void __attribute__((naked, alias("JumpHandler_ASM"))) HardFault_Handler(); - void __attribute__((naked, alias("JumpHandler_ASM"))) BusFault_Handler(); - void __attribute__((naked, alias("JumpHandler_ASM"))) UsageFault_Handler(); - void __attribute__((naked, alias("JumpHandler_ASM"))) MemManage_Handler(); - void __attribute__((naked, alias("JumpHandler_ASM"))) NMI_Handler(); -} #endif #endif // POSTMORTEM_DEBUGGING diff --git a/Marlin/src/HAL/LPC1768/MinSerial.cpp b/Marlin/src/HAL/LPC1768/MinSerial.cpp index 7a1c038c0b..368bcb5259 100644 --- a/Marlin/src/HAL/LPC1768/MinSerial.cpp +++ b/Marlin/src/HAL/LPC1768/MinSerial.cpp @@ -33,18 +33,18 @@ static void TX(char c) { _DBC(c); } void install_min_serial() { HAL_min_serial_out = &TX; } #if DISABLED(DYNAMIC_VECTORTABLE) -extern "C" { - __attribute__((naked)) void JumpHandler_ASM() { - __asm__ __volatile__ ( - "b CommonHandler_ASM\n" - ); + extern "C" { + __attribute__((naked)) void JumpHandler_ASM() { + __asm__ __volatile__ ( + "b CommonHandler_ASM\n" + ); + } + void __attribute__((naked, alias("JumpHandler_ASM"))) HardFault_Handler(); + void __attribute__((naked, alias("JumpHandler_ASM"))) BusFault_Handler(); + void __attribute__((naked, alias("JumpHandler_ASM"))) UsageFault_Handler(); + void __attribute__((naked, alias("JumpHandler_ASM"))) MemManage_Handler(); + void __attribute__((naked, alias("JumpHandler_ASM"))) NMI_Handler(); } - void __attribute__((naked, alias("JumpHandler_ASM"))) HardFault_Handler(); - void __attribute__((naked, alias("JumpHandler_ASM"))) BusFault_Handler(); - void __attribute__((naked, alias("JumpHandler_ASM"))) UsageFault_Handler(); - void __attribute__((naked, alias("JumpHandler_ASM"))) MemManage_Handler(); - void __attribute__((naked, alias("JumpHandler_ASM"))) NMI_Handler(); -} #endif #endif // POSTMORTEM_DEBUGGING diff --git a/Marlin/src/HAL/STM32/MinSerial.cpp b/Marlin/src/HAL/STM32/MinSerial.cpp index b0fcff20c1..c2260f4f26 100644 --- a/Marlin/src/HAL/STM32/MinSerial.cpp +++ b/Marlin/src/HAL/STM32/MinSerial.cpp @@ -135,18 +135,18 @@ void install_min_serial() { } #if NONE(DYNAMIC_VECTORTABLE, STM32F0xx, STM32G0xx) // Cortex M0 can't jump to a symbol that's too far from the current function, so we work around this in exception_arm.cpp -extern "C" { - __attribute__((naked)) void JumpHandler_ASM() { - __asm__ __volatile__ ( - "b CommonHandler_ASM\n" - ); + extern "C" { + __attribute__((naked)) void JumpHandler_ASM() { + __asm__ __volatile__ ( + "b CommonHandler_ASM\n" + ); + } + void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) HardFault_Handler(); + void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) BusFault_Handler(); + void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) UsageFault_Handler(); + void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) MemManage_Handler(); + void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) NMI_Handler(); } - void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) HardFault_Handler(); - void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) BusFault_Handler(); - void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) UsageFault_Handler(); - void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) MemManage_Handler(); - void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) NMI_Handler(); -} #endif #endif // POSTMORTEM_DEBUGGING diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp index 7b814e57f7..504a9f61c7 100644 --- a/Marlin/src/feature/pause.cpp +++ b/Marlin/src/feature/pause.cpp @@ -445,7 +445,7 @@ bool pause_print(const_float_t retract, const xyz_pos_t &park_point, const bool // Wait for buffered blocks to complete planner.synchronize(); - #if ENABLED(ADVANCED_PAUSE_FANS_PAUSE) && HAS_FAN + #if BOTH(ADVANCED_PAUSE_FANS_PAUSE, HAS_FAN) thermalManager.set_fans_paused(true); #endif diff --git a/Marlin/src/feature/runout.h b/Marlin/src/feature/runout.h index e839db3f5e..fb4d0c2694 100644 --- a/Marlin/src/feature/runout.h +++ b/Marlin/src/feature/runout.h @@ -191,13 +191,13 @@ class FilamentSensorBase { public: static void setup() { #define _INIT_RUNOUT_PIN(P,S,U,D) do{ if (ENABLED(U)) SET_INPUT_PULLUP(P); else if (ENABLED(D)) SET_INPUT_PULLDOWN(P); else SET_INPUT(P); }while(0); - #define INIT_RUNOUT_PIN(N) _INIT_RUNOUT_PIN(FIL_RUNOUT##N##_PIN, FIL_RUNOUT##N##_STATE, FIL_RUNOUT##N##_PULLUP, FIL_RUNOUT##N##_PULLDOWN) - REPEAT_1(NUM_RUNOUT_SENSORS, INIT_RUNOUT_PIN); + #define INIT_RUNOUT_PIN(N) _INIT_RUNOUT_PIN(FIL_RUNOUT##N##_PIN, FIL_RUNOUT##N##_STATE, FIL_RUNOUT##N##_PULLUP, FIL_RUNOUT##N##_PULLDOWN); + REPEAT_1(NUM_RUNOUT_SENSORS, INIT_RUNOUT_PIN) #undef INIT_RUNOUT_PIN #if ENABLED(FILAMENT_SWITCH_AND_MOTION) - #define INIT_MOTION_PIN(N) _INIT_RUNOUT_PIN(FIL_MOTION##N##_PIN, FIL_MOTION##N##_STATE, FIL_MOTION##N##_PULLUP, FIL_MOTION##N##_PULLDOWN) - REPEAT_1(NUM_MOTION_SENSORS, INIT_MOTION_PIN); + #define INIT_MOTION_PIN(N) _INIT_RUNOUT_PIN(FIL_MOTION##N##_PIN, FIL_MOTION##N##_STATE, FIL_MOTION##N##_PULLUP, FIL_MOTION##N##_PULLDOWN); + REPEAT_1(NUM_MOTION_SENSORS, INIT_MOTION_PIN) #undef INIT_MOTION_PIN #endif #undef _INIT_RUNOUT_PIN @@ -212,9 +212,9 @@ class FilamentSensorBase { // Return a bitmask of runout flag states (1 bits always indicates runout) static uint8_t poll_runout_states() { - #define _OR_RUNOUT(N) | (FIL_RUNOUT##N##_STATE ? 0 : _BV(N - 1)) - return poll_runout_pins() ^ uint8_t(0 REPEAT_1(NUM_RUNOUT_SENSORS, _OR_RUNOUT)); - #undef _OR_RUNOUT + #define _INVERT_BIT(N) | (FIL_RUNOUT##N##_STATE ? 0 : _BV(N - 1)) + return poll_runout_pins() ^ uint8_t(0 REPEAT_1(NUM_RUNOUT_SENSORS, _INVERT_BIT)); + #undef _INVERT_BIT } #if ENABLED(FILAMENT_SWITCH_AND_MOTION) diff --git a/Marlin/src/gcode/queue.cpp b/Marlin/src/gcode/queue.cpp index af8e877436..b64aa95112 100644 --- a/Marlin/src/gcode/queue.cpp +++ b/Marlin/src/gcode/queue.cpp @@ -99,7 +99,7 @@ PGM_P GCodeQueue::injected_commands_P; // = nullptr */ char GCodeQueue::injected_commands[64]; // = { 0 } -void GCodeQueue::RingBuffer::commit_command(bool skip_ok +void GCodeQueue::RingBuffer::commit_command(const bool skip_ok OPTARG(HAS_MULTI_SERIAL, serial_index_t serial_ind/*=-1*/) ) { commands[index_w].skip_ok = skip_ok; @@ -113,7 +113,7 @@ void GCodeQueue::RingBuffer::commit_command(bool skip_ok * Return true if the command was successfully added. * Return false for a full buffer, or if the 'command' is a comment. */ -bool GCodeQueue::RingBuffer::enqueue(const char *cmd, bool skip_ok/*=true*/ +bool GCodeQueue::RingBuffer::enqueue(const char *cmd, const bool skip_ok/*=true*/ OPTARG(HAS_MULTI_SERIAL, serial_index_t serial_ind/*=-1*/) ) { if (*cmd == ';' || length >= BUFSIZE) return false; diff --git a/Marlin/src/gcode/queue.h b/Marlin/src/gcode/queue.h index 2cb72f2e15..25b9f5cf9b 100644 --- a/Marlin/src/gcode/queue.h +++ b/Marlin/src/gcode/queue.h @@ -79,11 +79,11 @@ public: void advance_pos(uint8_t &p, const int inc) { if (++p >= BUFSIZE) p = 0; length += inc; } - void commit_command(bool skip_ok + void commit_command(const bool skip_ok OPTARG(HAS_MULTI_SERIAL, serial_index_t serial_ind = serial_index_t()) ); - bool enqueue(const char *cmd, bool skip_ok = true + bool enqueue(const char *cmd, const bool skip_ok=true OPTARG(HAS_MULTI_SERIAL, serial_index_t serial_ind = serial_index_t()) ); diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp index 1f40f2a037..3ba8322f00 100644 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp +++ b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp @@ -1066,7 +1066,7 @@ namespace ExtUI { TPShowStatus = false; ZERO(ChangeMaterialbuf); ChangeMaterialbuf[1] = ChangeMaterialbuf[0] = 10; - RTS_SndData(10 * ChangeMaterialbuf[0], FilamentUnit1); // It's ChangeMaterialbuf for show,instead of current_position[E_AXIS] in them. + RTS_SndData(10 * ChangeMaterialbuf[0], FilamentUnit1); // It's ChangeMaterialbuf for show, instead of current_position.e in them. RTS_SndData(10 * ChangeMaterialbuf[1], FilamentUnit2); RTS_SndData(getActualTemp_celsius(H0), NozzleTemp); RTS_SndData(getTargetTemp_celsius(H0), NozzlePreheat); @@ -1381,7 +1381,7 @@ namespace ExtUI { case 0xF0: // not to cancel heating break; } - RTS_SndData(10 * ChangeMaterialbuf[0], FilamentUnit1); // It's ChangeMaterialbuf for show,instead of current_position[E_AXIS] in them. + RTS_SndData(10 * ChangeMaterialbuf[0], FilamentUnit1); // It's ChangeMaterialbuf for show, instead of current_position.e in them. RTS_SndData(10 * ChangeMaterialbuf[1], FilamentUnit2); } else if (recdat.addr == FilamentUnit1) { diff --git a/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.h b/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.h index 0d93255663..ba5df4fe77 100644 --- a/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.h +++ b/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.h @@ -31,9 +31,10 @@ * * ***************************************/ -#include "string.h" #include "../ui_api.h" +#include + /*********************************/ #define FHONE (0x5A) #define FHTWO (0xA5) diff --git a/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp b/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp index 6570176a29..6e39c9a36e 100644 --- a/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp +++ b/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp @@ -24,7 +24,6 @@ #if HAS_TFT_LVGL_UI -#include "string.h" #include "draw_ui.h" #include "pic_manager.h" #include "draw_ready_print.h" @@ -34,6 +33,8 @@ #include "../../../sd/cardreader.h" #include "../../../MarlinCore.h" +#include + extern uint16_t DeviceCode; #if HAS_MEDIA diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F103Rx/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_F103Rx/PeripheralPins.c old mode 100755 new mode 100644 diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F103Rx/PinNamesVar.h b/buildroot/share/PlatformIO/variants/MARLIN_F103Rx/PinNamesVar.h index d9e759f5d0..d9076b4dfb 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_F103Rx/PinNamesVar.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_F103Rx/PinNamesVar.h @@ -27,4 +27,4 @@ #ifdef USBCON USB_DM = PA_11, USB_DP = PA_12, -#endif \ No newline at end of file +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F407ZE/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_F407ZE/PeripheralPins.c index d0905853a9..de796f4ef5 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_F407ZE/PeripheralPins.c +++ b/buildroot/share/PlatformIO/variants/MARLIN_F407ZE/PeripheralPins.c @@ -413,7 +413,7 @@ const PinMap PinMap_USB_OTG_HS[] = { */ {NC, NP, 0} }; - +#endif #ifdef HAL_SD_MODULE_ENABLED WEAK const PinMap PinMap_SD[] = { @@ -430,4 +430,3 @@ WEAK const PinMap PinMap_SD[] = { {NC, NP, 0} }; #endif -#endif From 207535af9d4c4fd5e3cf61bc8f38c082892d1bf1 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 1 May 2023 20:33:58 -0500 Subject: [PATCH 363/659] =?UTF-8?q?=F0=9F=94=A8=20Fix=20Multi-Language=20M?= =?UTF-8?q?enu=20criteria?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/multi_language.h | 3 +++ Marlin/src/lcd/menu/menu_language.cpp | 4 ++-- ini/features.ini | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Marlin/src/core/multi_language.h b/Marlin/src/core/multi_language.h index 05a713e435..2c0eb7aa72 100644 --- a/Marlin/src/core/multi_language.h +++ b/Marlin/src/core/multi_language.h @@ -64,6 +64,9 @@ typedef const char Language_Str[]; #if NUM_LANGUAGES > 1 #define HAS_MULTI_LANGUAGE 1 + #if HAS_MARLINUI_MENU + #define HAS_MENU_MULTI_LANGUAGE 1 + #endif #define GET_TEXT(MSG) ( \ ui.language == 4 ? GET_LANG(LCD_LANGUAGE_5)::MSG : \ ui.language == 3 ? GET_LANG(LCD_LANGUAGE_4)::MSG : \ diff --git a/Marlin/src/lcd/menu/menu_language.cpp b/Marlin/src/lcd/menu/menu_language.cpp index 9361d595f7..c92b860950 100644 --- a/Marlin/src/lcd/menu/menu_language.cpp +++ b/Marlin/src/lcd/menu/menu_language.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfig.h" -#if HAS_MULTI_LANGUAGE +#if HAS_MENU_MULTI_LANGUAGE #include "menu_item.h" #include "../../MarlinCore.h" @@ -56,4 +56,4 @@ void menu_language() { END_MENU(); } -#endif // HAS_MULTI_LANGUAGE +#endif // HAS_MENU_MULTI_LANGUAGE diff --git a/ini/features.ini b/ini/features.ini index 660e3fb2c8..638f3109fc 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -76,7 +76,7 @@ HAS_MENU_DELTA_CALIBRATE = src_filter=+ LCD_INFO_MENU = src_filter=+ HAS_MENU_JOB_RECOVERY = src_filter=+ -HAS_MULTI_LANGUAGE = src_filter=+ + +HAS_MENU_MULTI_LANGUAGE = src_filter=+ HAS_MENU_LED = src_filter=+ HAS_MENU_MEDIA = src_filter=+ HAS_MENU_MIXER = src_filter=+ @@ -225,6 +225,7 @@ HAS_LCD_CONTRAST = src_filter=+ HAS_GCODE_M255 = src_filter=+ HAS_LCD_BRIGHTNESS = src_filter=+ HAS_SOUND = src_filter=+ +HAS_MULTI_LANGUAGE = src_filter=+ TOUCH_SCREEN_CALIBRATION = src_filter=+ ARC_SUPPORT = src_filter=+ GCODE_MOTION_MODES = src_filter=+ From 61f0dd227177419ade6b2454afaec422f41fcc03 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 1 May 2023 20:23:41 -0500 Subject: [PATCH 364/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20=5FCAN=5FHOME=20fo?= =?UTF-8?q?r=20new=20endstop=20flags?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/motion.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index ccbf73e243..9c59195a8c 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -2078,12 +2078,7 @@ void prepare_line_to_destination() { // Only Z homing (with probe) is permitted if (axis != Z_AXIS) { BUZZ(100, 880); return; } #else - #define _CAN_HOME(A) (axis == _AXIS(A) && ( \ - ENABLED(A##_SPI_SENSORLESS) \ - || TERN0(HAS_Z_AXIS, TERN0(HOMING_Z_WITH_PROBE, _AXIS(A) == Z_AXIS)) \ - || TERN0(A##_HOME_TO_MIN, A##_MIN_PIN > -1) \ - || TERN0(A##_HOME_TO_MAX, A##_MAX_PIN > -1) \ - )) + #define _CAN_HOME(A) (axis == _AXIS(A) && (EITHER(A##_SPI_SENSORLESS, HAS_##A##_ENDSTOP) || TERN0(HOMING_Z_WITH_PROBE, _AXIS(A) == Z_AXIS))) #define _ANDCANT(N) && !_CAN_HOME(N) if (true MAIN_AXIS_MAP(_ANDCANT)) return; #endif From 9aa69cbc85c9559e2671127d6d6e4298001a6bd5 Mon Sep 17 00:00:00 2001 From: plampix Date: Tue, 2 May 2023 07:01:44 +0200 Subject: [PATCH 365/659] Fix G12 Nozzle Clean (#25766) Followup to #25666 --- Marlin/Configuration.h | 4 +--- Marlin/src/gcode/feature/clean/G12.cpp | 2 +- Marlin/src/libs/nozzle.cpp | 13 ++++++------- Marlin/src/libs/nozzle.h | 8 ++++---- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 68784df5d7..9ffa5740e3 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2408,9 +2408,7 @@ // Default pattern to use when 'P' is not provided to G12. One of the enabled options above. #define NOZZLE_CLEAN_DEFAULT_PATTERN 0 - #if ENABLED(NOZZLE_CLEAN_PATTERN_LINE) - #define NOZZLE_CLEAN_STROKES 12 // Default number of pattern repetitions - #endif + #define NOZZLE_CLEAN_STROKES 12 // Default number of pattern repetitions #if ENABLED(NOZZLE_CLEAN_PATTERN_ZIGZAG) #define NOZZLE_CLEAN_TRIANGLES 3 // Default number of triangles diff --git a/Marlin/src/gcode/feature/clean/G12.cpp b/Marlin/src/gcode/feature/clean/G12.cpp index 98be3f0770..a5e312f8fd 100644 --- a/Marlin/src/gcode/feature/clean/G12.cpp +++ b/Marlin/src/gcode/feature/clean/G12.cpp @@ -64,7 +64,7 @@ void GcodeSuite::G12() { NOZZLE_CLEAN_DEFAULT_PATTERN #endif ); - const uint8_t strokes = TERN0(NOZZLE_CLEAN_PATTERN_LINE, parser.ushortval('S', NOZZLE_CLEAN_STROKES)), + const uint8_t strokes = parser.ushortval('S', NOZZLE_CLEAN_STROKES), objects = TERN0(NOZZLE_CLEAN_PATTERN_ZIGZAG, parser.ushortval('T', NOZZLE_CLEAN_TRIANGLES)); const float radius = TERN0(NOZZLE_CLEAN_PATTERN_CIRCLE, parser.linearval('R', NOZZLE_CLEAN_CIRCLE_RADIUS)); diff --git a/Marlin/src/libs/nozzle.cpp b/Marlin/src/libs/nozzle.cpp index 8f44c69c5c..e675c53cb1 100644 --- a/Marlin/src/libs/nozzle.cpp +++ b/Marlin/src/libs/nozzle.cpp @@ -46,7 +46,7 @@ Nozzle nozzle; * @param end xyz_pos_t defining the ending point * @param strokes number of strokes to execute */ - void Nozzle::stroke(const xyz_pos_t &start, const xyz_pos_t &end, const uint8_t &strokes) { + void Nozzle::stroke(const xyz_pos_t &start, const xyz_pos_t &end, const uint8_t strokes) { #if ENABLED(NOZZLE_CLEAN_GOBACK) const xyz_pos_t oldpos = current_position; #endif @@ -87,7 +87,7 @@ Nozzle nozzle; * @param strokes number of strokes to execute * @param objects number of triangles to do */ - void Nozzle::zigzag(const xyz_pos_t &start, const xyz_pos_t &end, const uint8_t &strokes, const uint8_t &objects) { + void Nozzle::zigzag(const xyz_pos_t &start, const xyz_pos_t &end, const uint8_t strokes, const uint8_t objects) { const xy_pos_t diff = end - start; if (!diff.x || !diff.y) return; @@ -135,7 +135,7 @@ Nozzle nozzle; * @param strokes number of strokes to execute * @param radius radius of circle */ - void Nozzle::circle(const xyz_pos_t &start, const xyz_pos_t &middle, const uint8_t &strokes, const_float_t radius) { + void Nozzle::circle(const xyz_pos_t &start, const xyz_pos_t &middle, const uint8_t strokes, const_float_t radius) { if (strokes == 0) return; #if ENABLED(NOZZLE_CLEAN_GOBACK) @@ -164,7 +164,7 @@ Nozzle nozzle; * @param pattern one of the available patterns * @param argument depends on the cleaning pattern */ - void Nozzle::clean(const uint8_t &pattern, const uint8_t &strokes, const_float_t radius, const uint8_t &objects, const uint8_t cleans) { + void Nozzle::clean(const uint8_t pattern, const uint8_t strokes, const_float_t radius, const uint8_t objects, const uint8_t cleans) { xyz_pos_t start[HOTENDS] = NOZZLE_CLEAN_START_POINT, end[HOTENDS] = NOZZLE_CLEAN_END_POINT; #if ENABLED(NOZZLE_CLEAN_PATTERN_CIRCLE) xyz_pos_t middle[HOTENDS] = NOZZLE_CLEAN_CIRCLE_MIDDLE; @@ -230,10 +230,9 @@ Nozzle nozzle; } if (!TEST(cleans, Z_AXIS)) start[arrPos].z = end[arrPos].z = current_position.z; - switch (pattern) { - default: + switch (pattern) { // no default clause as pattern is already validated #if ENABLED(NOZZLE_CLEAN_PATTERN_LINE) - case 0: stroke(start[arrPos], end[arrPos], strokes); + case 0: stroke(start[arrPos], end[arrPos], strokes); break; #endif #if ENABLED(NOZZLE_CLEAN_PATTERN_ZIGZAG) case 1: zigzag(start[arrPos], end[arrPos], strokes, objects); break; diff --git a/Marlin/src/libs/nozzle.h b/Marlin/src/libs/nozzle.h index 69790f5a67..fb47c867f2 100644 --- a/Marlin/src/libs/nozzle.h +++ b/Marlin/src/libs/nozzle.h @@ -41,7 +41,7 @@ class Nozzle { * @param end xyz_pos_t defining the ending point * @param strokes number of strokes to execute */ - static void stroke(const xyz_pos_t &start, const xyz_pos_t &end, const uint8_t &strokes) __Os; + static void stroke(const xyz_pos_t &start, const xyz_pos_t &end, const uint8_t strokes) __Os; /** * @brief Zig-zag clean pattern @@ -52,7 +52,7 @@ class Nozzle { * @param strokes number of strokes to execute * @param objects number of objects to create */ - static void zigzag(const xyz_pos_t &start, const xyz_pos_t &end, const uint8_t &strokes, const uint8_t &objects) __Os; + static void zigzag(const xyz_pos_t &start, const xyz_pos_t &end, const uint8_t strokes, const uint8_t objects) __Os; /** * @brief Circular clean pattern @@ -62,7 +62,7 @@ class Nozzle { * @param strokes number of strokes to execute * @param radius radius of circle */ - static void circle(const xyz_pos_t &start, const xyz_pos_t &middle, const uint8_t &strokes, const_float_t radius) __Os; + static void circle(const xyz_pos_t &start, const xyz_pos_t &middle, const uint8_t strokes, const_float_t radius) __Os; #endif // NOZZLE_CLEAN_FEATURE @@ -77,7 +77,7 @@ class Nozzle { * @param pattern one of the available patterns * @param argument depends on the cleaning pattern */ - static void clean(const uint8_t &pattern, const uint8_t &strokes, const_float_t radius, const uint8_t &objects, const uint8_t cleans) __Os; + static void clean(const uint8_t pattern, const uint8_t strokes, const_float_t radius, const uint8_t objects, const uint8_t cleans) __Os; #endif // NOZZLE_CLEAN_FEATURE From 137ea434227094f675467a9b34c4220e86aa807c Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Wed, 3 May 2023 09:15:10 +1200 Subject: [PATCH 366/659] =?UTF-8?q?=E2=9C=A8=20Creality=20Ender-2=20(Melzi?= =?UTF-8?q?)=20(#25754)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/boards.h | 13 +-- Marlin/src/pins/pins.h | 2 + .../pins/sanguino/pins_MELZI_CREALITY_E2.h | 96 +++++++++++++++++++ 3 files changed, 105 insertions(+), 6 deletions(-) create mode 100644 Marlin/src/pins/sanguino/pins_MELZI_CREALITY_E2.h diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index a51d9a12e1..da0a4fb121 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -191,12 +191,13 @@ #define BOARD_MELZI_V2 1503 // Melzi V2 #define BOARD_MELZI_MAKR3D 1504 // Melzi with ATmega1284 (MaKr3d version) #define BOARD_MELZI_CREALITY 1505 // Melzi Creality3D (for CR-10 etc) -#define BOARD_MELZI_MALYAN 1506 // Melzi Malyan M150 -#define BOARD_MELZI_TRONXY 1507 // Tronxy X5S -#define BOARD_STB_11 1508 // STB V1.1 -#define BOARD_AZTEEG_X1 1509 // Azteeg X1 -#define BOARD_ANET_10 1510 // Anet 1.0 (Melzi clone) -#define BOARD_ZMIB_V2 1511 // ZoneStar ZMIB V2 +#define BOARD_MELZI_CREALITY_ENDER2 1506 // Melzi Creality3D (for Ender-2) +#define BOARD_MELZI_MALYAN 1507 // Melzi Malyan M150 +#define BOARD_MELZI_TRONXY 1508 // Tronxy X5S +#define BOARD_STB_11 1509 // STB V1.1 +#define BOARD_AZTEEG_X1 1510 // Azteeg X1 +#define BOARD_ANET_10 1511 // Anet 1.0 (Melzi clone) +#define BOARD_ZMIB_V2 1512 // ZoneStar ZMIB V2 // // Other ATmega644P, ATmega644, ATmega1284P diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 67ee0bd08d..a10a884fa7 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -372,6 +372,8 @@ #include "sanguino/pins_MELZI_MAKR3D.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(MELZI_CREALITY) #include "sanguino/pins_MELZI_CREALITY.h" // ATmega1284P env:melzi_optiboot_optimized env:melzi_optiboot env:melzi_optimized env:melzi +#elif MB(MELZI_CREALITY_ENDER2) + #include "sanguino/pins_MELZI_CREALITY_E2.h" // ATmega1284P env:melzi_optiboot_optimized env:melzi_optiboot env:melzi_optimized env:melzi #elif MB(MELZI_MALYAN) #include "sanguino/pins_MELZI_MALYAN.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(MELZI_TRONXY) diff --git a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY_E2.h b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY_E2.h new file mode 100644 index 0000000000..0d021e1bf6 --- /dev/null +++ b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY_E2.h @@ -0,0 +1,96 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#define BOARD_INFO_NAME "Melzi Ender 2 (Creality)" + +/** + * Connectors. + * FAN1 LASER K-FAN B-MOT(A6) E-TEMP(A7) CHECK AVR ISP + * --------- --------- --------- --------- --------- --------- ---------- + * J11 (Power Switch) |12V GND| |12V D4| |12V D4| |GND D25| |GND D24| |D29 GND| |MISO 5V| + * ------ --------- --------- --------- --------- --------- --------- |SCK MOSI| + * |V-IN|(Regulator) BED HOT-END FAN2 OFF X-STOP Y-STOP Z-STOP |RST GND| + * |GND | --------- --------- --------- --------- --------- --------- --------- ---------- + * |12V | |12V D12| |12V D13| |12V GND| |D27 D17| |GND D18| |GND D19| |GND D20| + * ------ --------- --------- --------- --------- --------- --------- --------- + * + * EXP1 EXP1 as ENDER2 STOCKDISPLAY EXP1 as CR10 STOCKDISPLAY + * ------ ------ ------ + * (AVR_SCK) D7 | 1 2 | D16 SCK | 1 2 | BTN_E BEEPER_PIN | 1 2 | BTN_ENC + * D11 | 3 4 | RESET BTN_EN1 | 3 4 | RESET BTN_EN1 | 3 4 | RESET + * D10 5 6 | D30 BTN_EN2 5 6 | LCD_A0 BTN_EN2 5 6 | LCD_D4 (ST9720 CLK) + * D28 | 7 8 | D5 (AVR_MOSI) LCD_CS | 7 8 | MOSI (ST9720 CS) LCD_RS | 7 8 | LCD_EN (ST9720 DAT) + * GND | 9 10 | 5V GND | 9 10 | 5V GND | 9 10 | 5V + * ------ ------ ------ + */ + +#define EXP1_01_PIN 7 +#define EXP1_02_PIN 16 +#define EXP1_03_PIN 11 +#define EXP1_04_PIN -1 // hardware reset line +#define EXP1_05_PIN 10 +#define EXP1_06_PIN 30 +#define EXP1_07_PIN 28 +#define EXP1_08_PIN 5 + +// +// LCD / Controller +// +#if EITHER(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) + #if ENABLED(CR10_STOCKDISPLAY) + #if ENABLED(SDSUPPORT) + #error "Cannot have SDSUPPORT with CR10_STOCKDISPLAY on this motherboard." // Hardware SDCARD SCK and MOSI pins are reallocated. + #endif + #define LCD_PINS_RS EXP1_07_PIN // ST9720 CS + #define LCD_PINS_EN EXP1_08_PIN // ST9720 DAT + #define LCD_PINS_D4 EXP1_06_PIN // ST9720 CLK + #define BEEPER_PIN EXP1_01_PIN + #elif ENABLED(ENDER2_STOCKDISPLAY) + #define DOGLCD_CS EXP1_07_PIN + #define DOGLCD_A0 EXP1_06_PIN + #endif + #define BTN_ENC EXP1_02_PIN + #define BTN_EN1 EXP1_03_PIN + #define BTN_EN2 EXP1_05_PIN + #define LCD_PINS_DEFINED +#endif + +#define LCD_SDSS 31 // Controller's SD card + +#include "pins_MELZI.h" // ... SANGUINOLOLU_12 ... SANGUINOLOLU_11 + +#if ENABLED(BLTOUCH) + #ifndef SERVO0_PIN + #define SERVO0_PIN 27 + #endif + #if SERVO0_PIN == BEEPER_PIN + #undef BEEPER_PIN + #endif +#elif HAS_FILAMENT_SENSOR + #ifndef FIL_RUNOUT_PIN + #define FIL_RUNOUT_PIN 27 + #endif + #if FIL_RUNOUT_PIN == BEEPER_PIN + #undef BEEPER_PIN + #endif +#endif From 21ea9bf50fbde8b5494d92ac28bc6cfb197a7718 Mon Sep 17 00:00:00 2001 From: plampix Date: Tue, 2 May 2023 23:50:07 +0200 Subject: [PATCH 367/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20minimal=20M115,=20?= =?UTF-8?q?Cap:PROGRESS:0=20(#25769)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/gcode/host/M115.cpp | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index 43d37e92ac..239407816b 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -39,22 +39,15 @@ //#define MINIMAL_CAP_LINES // Don't even mention the disabled capabilities #if ENABLED(EXTENDED_CAPABILITIES_REPORT) - #if ENABLED(MINIMAL_CAP_LINES) - #define cap_line(S,C) if (C) _cap_line(S) - static void _cap_line(FSTR_P const name) { - SERIAL_ECHOPGM("Cap:"); - SERIAL_ECHOF(name); - SERIAL_ECHOLNPGM(":1"); - } - #else - #define cap_line(V...) _cap_line(V) - static void _cap_line(FSTR_P const name, bool ena=false) { - SERIAL_ECHOPGM("Cap:"); - SERIAL_ECHOF(name); + inline void cap_line(FSTR_P const name, const bool ena=true) { + #if ENABLED(MINIMAL_CAP_LINES) + if (ena) SERIAL_ECHOLNPGM("Cap:", name, ":1"); + #else + SERIAL_ECHOPGM("Cap:", name); SERIAL_CHAR(':', '0' + ena); SERIAL_EOL(); - } - #endif + #endif + } #endif /** @@ -100,10 +93,10 @@ void GcodeSuite::M115() { serial_index_t port = queue.ring_buffer.command_port(); // PAREN_COMMENTS - TERN_(PAREN_COMMENTS, cap_line(F("PAREN_COMMENTS"), true)); + TERN_(PAREN_COMMENTS, cap_line(F("PAREN_COMMENTS"))); // QUOTED_STRINGS - TERN_(GCODE_QUOTED_STRINGS, cap_line(F("QUOTED_STRINGS"), true)); + TERN_(GCODE_QUOTED_STRINGS, cap_line(F("QUOTED_STRINGS"))); // SERIAL_XON_XOFF cap_line(F("SERIAL_XON_XOFF"), ENABLED(SERIAL_XON_XOFF)); @@ -124,10 +117,10 @@ void GcodeSuite::M115() { cap_line(F("AUTOREPORT_TEMP"), ENABLED(AUTO_REPORT_TEMPERATURES)); // PROGRESS (M530 S L, M531 , M532 X L) - cap_line(F("PROGRESS")); + cap_line(F("PROGRESS"), false); // Print Job timer M75, M76, M77 - cap_line(F("PRINT_JOB"), true); + cap_line(F("PRINT_JOB")); // AUTOLEVEL (G29) cap_line(F("AUTOLEVEL"), ENABLED(HAS_AUTOLEVEL)); @@ -153,9 +146,9 @@ void GcodeSuite::M115() { // SPINDLE AND LASER CONTROL (M3, M4, M5) #if ENABLED(SPINDLE_FEATURE) - cap_line(F("SPINDLE"), true); + cap_line(F("SPINDLE")); #elif ENABLED(LASER_FEATURE) - cap_line(F("LASER"), true); + cap_line(F("LASER")); #endif // EMERGENCY_PARSER (M108, M112, M410, M876) From e1f6435d4410478930ef5fb7d99a311332f3cee8 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 2 May 2023 17:59:27 -0500 Subject: [PATCH 368/659] =?UTF-8?q?=E2=9C=A8=20Creality=20STM32F401RE=20bo?= =?UTF-8?q?ard=20(e.g.,=20Ender-5=20S1)=20(#25773)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 1 + Marlin/src/core/boards.h | 1 + Marlin/src/gcode/gcode.cpp | 4 + Marlin/src/gcode/gcode.h | 5 + Marlin/src/gcode/ota/M936.cpp | 72 +++ Marlin/src/inc/Conditionals_post.h | 4 + Marlin/src/inc/Warnings.cpp | 7 + Marlin/src/module/thermistor/thermistor_1.h | 4 + Marlin/src/module/thermistor/thermistor_14.h | 85 +++ Marlin/src/module/thermistor/thermistors.h | 3 + Marlin/src/pins/pins.h | 2 + Marlin/src/pins/stm32f4/pins_CREALITY_F401.h | 241 +++++++++ .../boards/marlin_CREALITY_STM32F401RE.json | 65 +++ .../share/PlatformIO/ldscripts/creality.ld | 2 +- .../PeripheralPins.c | 252 +++++++++ .../MARLIN_CREALITY_STM32F401RE/PinNamesVar.h | 33 ++ .../hal_conf_custom.h | 495 ++++++++++++++++++ .../MARLIN_CREALITY_STM32F401RE/ldscript.ld | 186 +++++++ .../MARLIN_CREALITY_STM32F401RE/variant.cpp | 238 +++++++++ .../MARLIN_CREALITY_STM32F401RE/variant.h | 151 ++++++ ini/features.ini | 1 + ini/stm32f4.ini | 36 +- 22 files changed, 1881 insertions(+), 7 deletions(-) create mode 100644 Marlin/src/gcode/ota/M936.cpp create mode 100644 Marlin/src/module/thermistor/thermistor_14.h create mode 100644 Marlin/src/pins/stm32f4/pins_CREALITY_F401.h create mode 100644 buildroot/share/PlatformIO/boards/marlin_CREALITY_STM32F401RE.json create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/PeripheralPins.c create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/PinNamesVar.h create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/hal_conf_custom.h create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/ldscript.ld create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/variant.cpp create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/variant.h diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 9ffa5740e3..8818b04a84 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -462,6 +462,7 @@ * 11 : 100kΩ Keenovo AC silicone mats, most Wanhao i3 machines - beta 3950, 1% * 12 : 100kΩ Vishay 0603 SMD NTCS0603E3104FXT (#8) - calibrated for Makibox hot bed * 13 : 100kΩ Hisens up to 300°C - for "Simple ONE" & "All In ONE" hotend - beta 3950, 1% + * 14 : 100kΩ (R25), 4092K (beta25), 4.7kΩ pull-up, bed thermistor as used in Ender-5 S1 * 15 : 100kΩ Calibrated for JGAurora A5 hotend * 18 : 200kΩ ATC Semitec 204GT-2 Dagoma.Fr - MKS_Base_DKU001327 * 22 : 100kΩ GTM32 Pro vB - hotend - 4.7kΩ pullup to 3.3V and 220Ω to analog input diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index da0a4fb121..5a05d2c714 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -449,6 +449,7 @@ #define BOARD_FYSETC_SPIDER_KING407 5243 // FYSETC Spider King407 (STM32F407ZG) #define BOARD_MKS_SKIPR_V1 5244 // MKS SKIPR v1.0 all-in-one board (STM32F407VE) #define BOARD_TRONXY_V10 5245 // TRONXY V10 (STM32F446ZE) +#define BOARD_CREALITY_F401RE 5246 // Creality CR4NS200141C13 (STM32F401RE) as found in the Ender-5 S1 // // ARM Cortex-M7 diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 013a2bfb74..9c24791c82 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -1061,6 +1061,10 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 422: M422(); break; // M422: Set Z Stepper automatic alignment position using probe #endif + #if ENABLED(OTA_FIRMWARE_UPDATE) + case 936: M936(); break; // M936: OTA update firmware. + #endif + #if SPI_FLASH_BACKUP case 993: M993(); break; // M993: Backup SPI Flash to SD case 994: M994(); break; // M994: Load a Backup from SD to SPI Flash diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 05175abd9d..75a60b4dd7 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -300,6 +300,7 @@ * M913 - Set HYBRID_THRESHOLD speed. (Requires HYBRID_THRESHOLD) * M914 - Set StallGuard sensitivity. (Requires SENSORLESS_HOMING or SENSORLESS_PROBING) * M919 - Get or Set motor Chopper Times (time_off, hysteresis_end, hysteresis_start) using axis codes XYZE, etc. If no parameters are given, report. (Requires at least one _DRIVER_TYPE defined as TMC2130/2160/5130/5160/2208/2209/2660) + * M936 - OTA update firmware. (Requires OTA_FIRMWARE_UPDATE) * M951 - Set Magnetic Parking Extruder parameters. (Requires MAGNETIC_PARKING_EXTRUDER) * M3426 - Read MCP3426 ADC over I2C. (Requires HAS_MCP3426_ADC) * M7219 - Control Max7219 Matrix LEDs. (Requires MAX7219_GCODE) @@ -1199,6 +1200,10 @@ private: static void M928(); #endif + #if ENABLED(OTA_FIRMWARE_UPDATE) + static void M936(); + #endif + #if ENABLED(MAGNETIC_PARKING_EXTRUDER) static void M951(); #endif diff --git a/Marlin/src/gcode/ota/M936.cpp b/Marlin/src/gcode/ota/M936.cpp new file mode 100644 index 0000000000..6324b3db43 --- /dev/null +++ b/Marlin/src/gcode/ota/M936.cpp @@ -0,0 +1,72 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#include "../../inc/MarlinConfig.h" + +#if ENABLED(OTA_FIRMWARE_UPDATE) + +#include "../gcode.h" +#include "../../libs/BL24CXX.h" + +#if ENABLED(CREALITY_RTS) + #include "../../lcd/rts/lcd_rts.h" +#endif + +#define OTA_FLAG_EEPROM 90 + +//#define DEBUG_OUT 1 +#include "../../core/debug_out.h" + +/** + * M936: Set one of the OTA update flags. + * V2 = Upgrade the motherboard firmware + * V3 = Upgrade the RTS controller firmware + */ +void GcodeSuite::M936() { + static uint8_t ota_update_flag = 0x00; + const int16_t ota = parser.intval('V', -1); + switch (ota) { + case 2: + // Set the OTA board firmware upgrade flag ahead of reboot. + ota_update_flag = 0x01; + DEBUG_ECHOLNPGM("Motherboard upgrade flag set"); + TERN_(CREALITY_RTS, RTS_Error(Error_205)); + break; + + #if ENABLED(CREALITY_RTS) + case 3: + // Set the OTA screen firmware upgrade flag ahead of reboot. + ota_update_flag = 0x02; + DEBUG_ECHOLNPGM("DWIN upgrade flag set"); + TERN_(CREALITY_RTS, RTS_Error(Error_206)); + break; + #endif + } + + switch (ota) { + case 2: TERN_(CREALITY_RTS, case 3:) + BL24CXX::write(OTA_FLAG_EEPROM, &ota_update_flag, sizeof(ota_update_flag)); + safe_delay(100); + hal.reboot(); + } +} + +#endif // OTA_FIRMWARE_UPDATE diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 2c611099e3..0d74649009 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -65,6 +65,10 @@ #undef IIC_BL24CXX_EEPROM #endif +#if DISABLED(IIC_BL24CXX_EEPROM) + #undef OTA_FIRMWARE_UPDATE +#endif + #ifdef TEENSYDUINO #undef max #define max(a,b) ((a)>(b)?(a):(b)) diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index c7773eaabc..ca72ddc3dc 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -749,3 +749,10 @@ #if SDSORT_CACHE_LPC1768_WARNING #warning "SDCARD_SORT_ALPHA sub-options overridden for LPC1768 with DOGM LCD SCK overlap." #endif + +/** + * Ender-5 S1 bootloader + */ +#ifdef STM32F4_UPDATE_FOLDER + #warning "Place the firmware bin file in a folder named 'STM32F4_UPDATE' on the SD card. Install with 'M936 V2'." +#endif diff --git a/Marlin/src/module/thermistor/thermistor_1.h b/Marlin/src/module/thermistor/thermistor_1.h index 2ebf8da550..e581f1b5cd 100644 --- a/Marlin/src/module/thermistor/thermistor_1.h +++ b/Marlin/src/module/thermistor/thermistor_1.h @@ -23,6 +23,10 @@ // R25 = 100 kOhm, beta25 = 4092 K, 4.7 kOhm pull-up, bed thermistor constexpr temp_entry_t temptable_1[] PROGMEM = { + { OV( 18), 320 }, + { OV( 19), 315 }, + { OV( 20), 310 }, + { OV( 22), 305 }, { OV( 23), 300 }, { OV( 25), 295 }, { OV( 27), 290 }, diff --git a/Marlin/src/module/thermistor/thermistor_14.h b/Marlin/src/module/thermistor/thermistor_14.h new file mode 100644 index 0000000000..f0bc6f606e --- /dev/null +++ b/Marlin/src/module/thermistor/thermistor_14.h @@ -0,0 +1,85 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +// R25 = 100 kOhm, beta25 = 4092 K, 4.7 kOhm pull-up, bed thermistor +const temp_entry_t temptable_14[] PROGMEM = { + { OV( 23), 275 }, + { OV( 25), 270 }, + { OV( 27), 265 }, + { OV( 28), 260 }, + { OV( 31), 255 }, + { OV( 33), 250 }, + { OV( 35), 245 }, + { OV( 38), 240 }, + { OV( 41), 235 }, + { OV( 44), 230 }, + { OV( 47), 225 }, + { OV( 52), 220 }, + { OV( 56), 215 }, + { OV( 62), 210 }, + { OV( 68), 205 }, + { OV( 74), 200 }, + { OV( 81), 195 }, + { OV( 90), 190 }, + { OV( 99), 185 }, + { OV( 108), 180 }, + { OV( 121), 175 }, + { OV( 133), 170 }, + { OV( 147), 165 }, + { OV( 162), 160 }, + { OV( 180), 155 }, + { OV( 199), 150 }, + { OV( 219), 145 }, + { OV( 243), 140 }, + { OV( 268), 135 }, + { OV( 296), 130 }, + { OV( 326), 125 }, + { OV( 358), 120 }, + { OV( 398), 115 }, + { OV( 435), 110 }, + { OV( 476), 105 }, + { OV( 519), 100 }, + { OV( 566), 95 }, + { OV( 610), 90 }, + { OV( 658), 85 }, + { OV( 703), 80 }, + { OV( 742), 75 }, + { OV( 773), 70 }, + { OV( 807), 65 }, + { OV( 841), 60 }, + { OV( 871), 55 }, + { OV( 895), 50 }, + { OV( 918), 45 }, + { OV( 937), 40 }, + { OV( 954), 35 }, + { OV( 968), 30 }, + { OV( 978), 25 }, + { OV( 985), 20 }, + { OV( 993), 15 }, + { OV( 999), 10 }, + { OV(1004), 5 }, + { OV(1008), 0 }, + { OV(1012), -5 }, + { OV(1016), -10 }, + { OV(1020), -15 } +}; diff --git a/Marlin/src/module/thermistor/thermistors.h b/Marlin/src/module/thermistor/thermistors.h index 53ca609f68..5d4a8a7c92 100644 --- a/Marlin/src/module/thermistor/thermistors.h +++ b/Marlin/src/module/thermistor/thermistors.h @@ -109,6 +109,9 @@ typedef struct { raw_adc_t value; celsius_t celsius; } temp_entry_t; #if ANY_THERMISTOR_IS(13) // beta25 = 4100 K, R25 = 100 kOhm, Pull-up = 4.7 kOhm, "Hisens" #include "thermistor_13.h" #endif +#if ANY_THERMISTOR_IS(14) // beta25 = 4092 K, R25 = 100 kOhm, Pull-up = 4.7 kOhm, "EPCOS" for hot bed + #include "thermistor_14.h" +#endif #if ANY_THERMISTOR_IS(15) // JGAurora A5 thermistor calibration #include "thermistor_15.h" #endif diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index a10a884fa7..fe7bc9ed17 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -788,6 +788,8 @@ #include "stm32f4/pins_MKS_SKIPR_V1_0.h" // STM32F4 env:mks_skipr_v1 env:mks_skipr_v1_nobootloader #elif MB(TRONXY_V10) #include "stm32f4/pins_TRONXY_V10.h" // STM32F4 env:STM32F446_tronxy +#elif MB(CREALITY_F401RE) + #include "stm32f4/pins_CREALITY_F401.h" // STM32F4 env:STM32F401RE_creality // // ARM Cortex M7 diff --git a/Marlin/src/pins/stm32f4/pins_CREALITY_F401.h b/Marlin/src/pins/stm32f4/pins_CREALITY_F401.h new file mode 100644 index 0000000000..7f9eba9901 --- /dev/null +++ b/Marlin/src/pins/stm32f4/pins_CREALITY_F401.h @@ -0,0 +1,241 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "env_validate.h" + +#define BOARD_INFO_NAME "STM32F401RET6" +#define DEFAULT_MACHINE_NAME "Ender-5 S1" + +#define IIC_BL24CXX_EEPROM // EEPROM on I2C-0 used only for display settings +#if ENABLED(IIC_BL24CXX_EEPROM) + #define IIC_EEPROM_SDA PA11 + #define IIC_EEPROM_SCL PA12 + #define MARLIN_EEPROM_SIZE 0x800 // 2Kb (24C16) +#else + #define SDCARD_EEPROM_EMULATION // SD EEPROM until all EEPROM is BL24CXX + #define MARLIN_EEPROM_SIZE 0x800 // 2Kb +#endif + +// SPI +//#define SPI_EEPROM // EEPROM on SPI-0 +//#define SPI_CHAN_EEPROM1 ? +//#define SPI_EEPROM1_CS ? + +// 2K EEPROM +//#define SPI_EEPROM2_CS ? + +// 32Mb FLASH +//#define SPI_FLASH_CS ? + +// +// Servos +// +#define SERVO0_PIN PC13 // BLTouch OUT + +// +// Limit Switches +// +#define X_STOP_PIN PA5 +#define Y_STOP_PIN PA6 + +#if ENABLED(BLTOUCH) + #define Z_MAX_PIN PA15 // ROCK_20220730 + #define Z_MIN_PIN PC14 + //#define Z_STOP_PIN_NADD PA15 // Added z-axis limit switch +#elif ENABLED(PROBE_ACTIVATION_SWITCH) + #define Z_MIN_PIN PA15 + #define PROBE_TARE_PIN PC14 + #define PROBE_ACTIVATION_SWITCH_PIN PB2 +#else + #define Z_MIN_PIN PA15 +#endif + +// +// Filament runout +// +#if ENABLED(FILAMENT_RUNOUT_SENSOR) + #define FIL_RUNOUT_PIN PC15 +#endif + +// +// Steppers Motor drive chip power control +// +#define X_ENABLE_PIN PC3 +#define X_STEP_PIN PC2 +#define X_DIR_PIN PB9 + +#define Y_ENABLE_PIN PC3 +#define Y_STEP_PIN PB8 +#define Y_DIR_PIN PB7 + +#define Z_ENABLE_PIN PC3 +#define Z_STEP_PIN PB6 +#define Z_DIR_PIN PB5 + +#define E0_ENABLE_PIN PC3 +#define E0_STEP_PIN PB4 +#define E0_DIR_PIN PB3 + +// +// Temperature Sensors +// +#ifndef TEMP_0_PIN + #define TEMP_0_PIN PC5 // E1_THERMISTOR PA0 -> PT100 +#endif +#define TEMP_BED_PIN PC4 // BED_THERMISTOR_1 + +// +// Heaters / Fans +// +#define HEATER_0_PIN PA1 // E1_HEAT_PWM +#define HEATER_BED_PIN PA7 // BED_HEAT_1 FET + +#define FAN0_PIN PA0 // Part cooling fan FET +//#define FAN1_PIN PE11 // Extruder fan FET +//#define FAN2_PIN PE1 // Controller fan FET + +#ifndef E0_AUTO_FAN_PIN + #define E0_AUTO_FAN_PIN PA1 // FAN1_PIN +#endif + +// +// SD Card +// +#define SD_DETECT_PIN PC7 +#define SDCARD_CONNECTION ONBOARD +#define ONBOARD_SPI_DEVICE 1 +#define ONBOARD_SD_CS_PIN PC12 // SDSS +#define SDIO_SUPPORT +#define NO_SD_HOST_DRIVE // This board's SD is only seen by the printer + +// SPI 2 +#if ENABLED(RET6_12864_LCD) + + #define LCD_PINS_RS PB12 + #define LCD_PINS_ENABLE PB15 + #define LCD_PINS_D4 PB13 + #define BTN_EN2 PB14 +#endif + +//#define LED_CONTROL_PIN PA7 + +// +// WiFI Reset +// +#ifdef MENU_RESET_WIFI + #define RESET_WIFI_PIN PB12 +#endif + +// +// Backpower +// +#ifndef BACKPOWER_CTRL_PIN + #define BACKPOWER_CTRL_PIN PA4 // Pull down on the electricity, When the ADC detects that the 24V power supply is below 20V, Save the continued call data first, PA4 = 1 +#endif + +#ifndef CHECK_24V_PIN + #define POWER_DETECTION_PIN PB0 // Detect ADC input pin of 24V power supply +#endif + +/** + * Logical pin vs. port/pin cross reference + * + * PA0 54 // E1_THERMISTOR PA9 0 // TX + * PA1 55 // E2_THERMISTOR PA10 1 // RX + * PA2 56 // E3_THERMISTOR PD3 2 // CTS + * PA3 53 // BED_THERMISTOR_3 PD4 3 // RTS + * PA4 16 // SPI_CS PD5 4 // TX + * PA5 17 // SPI_SCK PD6 5 // RX + * PA6 18 // SPI_MISO PB5 6 // WIFI_WAKEUP + * PA7 19 // SPI_MOSI PE11 7 // WIFI_RESET + * PA8 43 // V_STOP PE12 8 // WIFI_BOOT + * PA9 0 // TX PE1 9 // STATUS_LED + * PA10 1 // RX PB12 10 // SPI_CS + * PA11 30 // OTG_DM PB15 11 // SPI_MOSI + * PA12 31 // OTG_DP PB14 12 // SPI_MISO + * PA13 20 // JTAG_TMS/SWDIO PB13 13 // SPI_SCK + * PA14 21 // JTAG_TCK/SWCLK PB7 14 // SDA + * PA15 25 // SD_CARD_DETECT PB6 15 // SCL + * PB0 49 // E2_HEAT_PWM PA4 16 // SPI_CS + * PB1 50 // E3_HEAT_PWM PA5 17 // SPI_SCK + * PB3 22 // JTAG_TDO/SWO PA6 18 // SPI_MISO + * PB4 37 // USER4 PA7 19 // SPI_MOSI + * PB5 6 // WIFI_WAKEUP PA13 20 // JTAG_TMS/SWDIO + * PB6 15 // SCL PA14 21 // JTAG_TCK/SWCLK + * PB7 14 // SDA PB3 22 // JTAG_TDO/SWO + * PB8 77 // E3_PWM PC8 23 // SDIO_D0 + * PB9 35 // USER1 PC9 24 // SDIO_D1 + * PB10 64 // Y_PWM PA15 25 // SD_CARD_DETECT + * PB12 10 // SPI_CS PC10 26 // SDIO_D2 + * PB13 13 // SPI_SCK PC11 27 // SDIO_D3 + * PB14 12 // SPI_MISO PC12 28 // SDIO_CK + * PB15 11 // SPI_MOSI PD2 29 // SDIO_CMD + * PC0 68 // Z_DIR PA11 30 // OTG_DM + * PC1 33 // IR_ON PA12 31 // OTG_DP + * PC2 51 // BED_THERMISTOR_1 PD1 32 // IR_OUT + * PC3 52 // BED_THERMISTOR_2 PC1 33 // IR_ON + * PC4 57 // E1_FAN PD7 34 // USER3 + * PC5 58 // E2_FAN PB9 35 // USER1 + * PC6 67 // Z_PWM PE0 36 // USER2 + * PC7 48 // E1_HEAT_PWM PB4 37 // USER4 + * PC8 23 // SDIO_D0 PE7 38 // USER_BUTTON + * PC9 24 // SDIO_D1 PD8 39 // X_STOP + * PC10 26 // SDIO_D2 PD9 40 // Y_STOP + * PC11 27 // SDIO_D3 PD10 41 // Z_STOP + * PC12 28 // SDIO_CK PD11 42 // U_STOP + * PC13 70 // E1_DIR PA8 43 // V_STOP + * PC14 69 // E1_RESET PD0 44 // W_STOP + * PC15 66 // Z_RESET PD13 45 // BED_HEAT_2 + * PD0 44 // W_STOP PD14 46 // BED_HEAT_1 + * PD1 32 // IR_OUT PD15 47 // BED_HEAT_3 + * PD2 29 // SDIO_CMD PC7 48 // E1_HEAT_PWM + * PD3 2 // CTS PB0 49 // E2_HEAT_PWM + * PD4 3 // RTS PB1 50 // E3_HEAT_PWM + * PD5 4 // TX PC2 51 // BED_THERMISTOR_1 + * PD6 5 // RX PC3 52 // BED_THERMISTOR_2 + * PD7 34 // USER3 PA3 53 // BED_THERMISTOR_3 + * PD8 39 // X_STOP PA0 54 // E1_THERMISTOR + * PD9 40 // Y_STOP PA1 55 // E2_THERMISTOR + * PD10 41 // Z_STOP PA2 56 // E3_THERMISTOR + * PD11 42 // U_STOP PC4 57 // E1_FAN + * PD12 71 // E1_PWM PC5 58 // E2_FAN + * PD13 45 // BED_HEAT_2 PE8 59 // E3_FAN + * PD14 46 // BED_HEAT_1 PE13 60 // X_RESET + * PD15 47 // BED_HEAT_3 PE14 61 // X_PWM + * PE0 36 // USER2 PE15 62 // X_DIR + * PE1 9 // STATUS_LED PE10 63 // Y_RESET + * PE2 76 // E3_DIR PB10 64 // Y_PWM + * PE3 75 // E3_RESET PE9 65 // Y_DIR + * PE4 72 // E2_RESET PC15 66 // Z_RESET + * PE5 73 // E2_PWM PC6 67 // Z_PWM + * PE6 74 // E2_DIR PC0 68 // Z_DIR + * PE7 38 // USER_BUTTON PC14 69 // E1_RESET + * PE8 59 // E3_FAN PC13 70 // E1_DIR + * PE9 65 // Y_DIR PD12 71 // E1_PWM + * PE10 63 // Y_RESET PE4 72 // E2_RESET + * PE11 7 // WIFI_RESET PE5 73 // E2_PWM + * PE12 8 // WIFI_BOOT PE6 74 // E2_DIR + * PE13 60 // X_RESET PE3 75 // E3_RESET + * PE14 61 // X_PWM PE2 76 // E3_DIR + * PE15 62 // X_DIR PB8 77 // E3_PWM + */ diff --git a/buildroot/share/PlatformIO/boards/marlin_CREALITY_STM32F401RE.json b/buildroot/share/PlatformIO/boards/marlin_CREALITY_STM32F401RE.json new file mode 100644 index 0000000000..31739c3a38 --- /dev/null +++ b/buildroot/share/PlatformIO/boards/marlin_CREALITY_STM32F401RE.json @@ -0,0 +1,65 @@ +{ + "build": { + "core": "stm32", + "cpu": "cortex-m4", + "extra_flags": "-DSTM32F401xx", + "f_cpu": "84000000L", + "hwids": [ + [ + "0x1EAF", + "0x0003" + ], + [ + "0x0483", + "0x3748" + ] + ], + "ldscript": "ldscript.ld", + "mcu": "stm32f401ret6", + "variant": "MARLIN_CREALITY_STM32F401RE" + }, + "debug": { + "jlink_device": "STM32F401RE", + "openocd_target": "stm32f4x", + "svd_path": "STM32F40x.svd", + "tools": { + "stlink": { + "server": { + "arguments": [ + "-f", + "scripts/interface/stlink.cfg", + "-c", + "transport select hla_swd", + "-f", + "scripts/target/stm32f4x.cfg", + "-c", + "reset_config none" + ], + "executable": "bin/openocd", + "package": "tool-openocd" + } + } + } + }, + "frameworks": [ + "arduino", + "stm32cube" + ], + "name": "STM32F401RE (64k RAM. 512k Flash)", + "upload": { + "disable_flushing": false, + "maximum_ram_size": 65536, + "maximum_size": 514288, + "protocol": "stlink", + "protocols": [ + "stlink", + "dfu", + "jlink" + ], + "require_upload_port": true, + "use_1200bps_touch": false, + "wait_for_upload_port": false + }, + "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32f401re.html", + "vendor": "Generic" +} diff --git a/buildroot/share/PlatformIO/ldscripts/creality.ld b/buildroot/share/PlatformIO/ldscripts/creality.ld index 785345543c..8b330c9457 100644 --- a/buildroot/share/PlatformIO/ldscripts/creality.ld +++ b/buildroot/share/PlatformIO/ldscripts/creality.ld @@ -1,7 +1,7 @@ MEMORY { ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K - 40 - rom (rx) : ORIGIN = 0x08007000, LENGTH = 512K - 28K + rom (rx) : ORIGIN = 0x08007000, LENGTH = 512K - 64K } /* Provide memory region aliases for common.inc */ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/PeripheralPins.c new file mode 100644 index 0000000000..418ef5aa7a --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/PeripheralPins.c @@ -0,0 +1,252 @@ +/* + ******************************************************************************* + * Copyright (c) 2019, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + * Automatically generated from STM32F401R[(B-C)|(D-E)]Tx.xml + */ +#include "Arduino.h" +#include "PeripheralPins.h" + +/* ===== + * Note: Commented lines are alternative possibilities which are not used per default. + * If you change them, you will have to know what you do + * ===== + */ + +//*** ADC *** + +#ifdef HAL_ADC_MODULE_ENABLED +WEAK const PinMap PinMap_ADC[] = { + {PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC1_IN0 + {PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1 + {PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2 + {PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3 + {PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4 + {PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5 + {PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6 + {PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7 + {PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8 + {PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9 + {PC_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10 + {PC_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11 + {PC_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_IN12 + {PC_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13 + {PC_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14 + {PC_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15 + {NC, NP, 0} +}; +#endif + +//*** No DAC *** + +//*** I2C *** + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SDA[] = { + {PB_3, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF9_I2C2)}, + {PB_4, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF9_I2C3)}, + {PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PC_9, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + {NC, NP, 0} +}; + +WEAK const PinMap PinMap_I2C_SCL[] = { + {PA_8, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + {PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {NC, NP, 0} +}; +#endif + +//*** PWM *** + +#ifdef HAL_TIM_MODULE_ENABLED +WEAK const PinMap PinMap_PWM[] = { + //{PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + {PA_0, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1 + //{PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 + {PA_1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2 + //{PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 + {PA_2, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3 + //{PA_2, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 1, 0)}, // TIM9_CH1 + //{PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 + {PA_3, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 4, 0)}, // TIM5_CH4 + //{PA_3, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 2, 0)}, // TIM9_CH2 + {PA_5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + {PA_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + //{PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PA_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 + {PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + {PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + {PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + {PA_15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + //{PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PB_0, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 + //{PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PB_1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 + {PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 + {PB_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PB_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PB_6, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 + {PB_7, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 + {PB_8, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 + //{PB_8, TIM10, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10, 1, 0)}, // TIM10_CH1 + {PB_9, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 + //{PB_9, TIM11, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11, 1, 0)}, // TIM11_CH1 + {PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 + {PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PC_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PC_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PC_8, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 + {PC_9, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 + {NC, NP, 0} +}; +#endif + +//*** SERIAL *** + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_TX[] = { + {PA_2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PA_11, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {PB_6, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PC_6, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {NC, NP, 0} +}; + +WEAK const PinMap PinMap_UART_RX[] = { + {PA_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_10, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PA_12, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {PB_7, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PC_7, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {NC, NP, 0} +}; + +WEAK const PinMap PinMap_UART_RTS[] = { + {PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_12, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {NC, NP, 0} +}; + +WEAK const PinMap PinMap_UART_CTS[] = { + {PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_11, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {NC, NP, 0} +}; +#endif + +//*** SPI *** + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MOSI[] = { + {PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + //{PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_5, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_3, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_12, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {NC, NP, 0} +}; + +WEAK const PinMap PinMap_SPI_MISO[] = { + {PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + //{PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_4, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_2, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_11, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {NC, NP, 0} +}; + +WEAK const PinMap PinMap_SPI_SCLK[] = { + {PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + //{PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_3, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_10, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {NC, NP, 0} +}; + +WEAK const PinMap PinMap_SPI_SSEL[] = { + {PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + //{PA_4, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + //{PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_15, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {NC, NP, 0} +}; +#endif + +//*** No CAN *** + +//*** No ETHERNET *** + +//*** No QUADSPI *** + +//*** USB *** + +#ifdef HAL_PCD_MODULE_ENABLED +WEAK const PinMap PinMap_USB_OTG_FS[] = { +#ifndef ARDUINO_CoreBoard_F401RC + {PA_8, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_SOF + {PA_9, USB_OTG_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_FS_VBUS + {PA_10, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_ID +#endif + {PA_11, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_DM + {PA_12, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_DP + {NC, NP, 0} +}; +#endif + +//*** No USB_OTG_HS *** + +//*** SD *** + +#ifdef HAL_SD_MODULE_ENABLED +WEAK const PinMap PinMap_SD[] = { + {PB_8, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D4 + {PB_9, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D5 + {PC_6, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D6 + {PC_7, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D7 + {PC_8, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D0 + {PC_9, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D1 + {PC_10, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D2 + {PC_11, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDIO)}, // SDIO_D3 + {PC_12, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_SDIO)}, // SDIO_CK + {PD_2, SDIO, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_SDIO)}, // SDIO_CMD + {NC, NP, 0} +}; +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/PinNamesVar.h b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/PinNamesVar.h new file mode 100644 index 0000000000..f5db451e6f --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/PinNamesVar.h @@ -0,0 +1,33 @@ +/* SYS_WKUP */ +#ifdef PWR_WAKEUP_PIN1 + SYS_WKUP1 = PA_0, +#endif +#ifdef PWR_WAKEUP_PIN2 + SYS_WKUP2 = NC, +#endif +#ifdef PWR_WAKEUP_PIN3 + SYS_WKUP3 = NC, +#endif +#ifdef PWR_WAKEUP_PIN4 + SYS_WKUP4 = NC, +#endif +#ifdef PWR_WAKEUP_PIN5 + SYS_WKUP5 = NC, +#endif +#ifdef PWR_WAKEUP_PIN6 + SYS_WKUP6 = NC, +#endif +#ifdef PWR_WAKEUP_PIN7 + SYS_WKUP7 = NC, +#endif +#ifdef PWR_WAKEUP_PIN8 + SYS_WKUP8 = NC, +#endif +/* USB */ +#ifdef USBCON + USB_OTG_FS_SOF = PA_8, + USB_OTG_FS_VBUS = PA_9, + USB_OTG_FS_ID = PA_10, + USB_OTG_FS_DM = PA_11, + USB_OTG_FS_DP = PA_12, +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/hal_conf_custom.h b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/hal_conf_custom.h new file mode 100644 index 0000000000..1dd047bb90 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/hal_conf_custom.h @@ -0,0 +1,495 @@ +/** + ****************************************************************************** + * @file stm32f4xx_hal_conf.h + * @brief HAL configuration file. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F4xx_HAL_CONF_CUSTOM +#define __STM32F4xx_HAL_CONF_CUSTOM + +#ifdef __cplusplus +extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/* ########################## Module Selection ############################## */ + /** + * @brief This is the list of modules to be used in the HAL driver + */ +#define HAL_MODULE_ENABLED +#define HAL_ADC_MODULE_ENABLED +#define HAL_CRC_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_FLASH_MODULE_ENABLED +#define HAL_GPIO_MODULE_ENABLED +#define HAL_I2C_MODULE_ENABLED +#define HAL_IWDG_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED +#define HAL_RTC_MODULE_ENABLED +#define HAL_SPI_MODULE_ENABLED +#define HAL_TIM_MODULE_ENABLED +#define HAL_CORTEX_MODULE_ENABLED +//#define HAL_PCD_MODULE_ENABLED // Automatically added if any type of USB is enabled, as in Arduino IDE. (STM32 v3.10700.191028) + +//#define HAL_CAN_MODULE_ENABLED +//#define HAL_CAN_LEGACY_MODULE_ENABLED +//#define HAL_CEC_MODULE_ENABLED +//#define HAL_CRYP_MODULE_ENABLED +//#define HAL_DAC_MODULE_ENABLED +//#define HAL_DCMI_MODULE_ENABLED +//#define HAL_DMA2D_MODULE_ENABLED +//#define HAL_ETH_MODULE_ENABLED +//#define HAL_NAND_MODULE_ENABLED +//#define HAL_NOR_MODULE_ENABLED +//#define HAL_PCCARD_MODULE_ENABLED +//#define HAL_SRAM_MODULE_ENABLED +//#define HAL_SDRAM_MODULE_ENABLED +//#define HAL_HASH_MODULE_ENABLED +//#define HAL_EXTI_MODULE_ENABLED +//#define HAL_SMBUS_MODULE_ENABLED +//#define HAL_I2S_MODULE_ENABLED +//#define HAL_LTDC_MODULE_ENABLED +//#define HAL_DSI_MODULE_ENABLED +//#define HAL_QSPI_MODULE_ENABLED +//#define HAL_RNG_MODULE_ENABLED +//#define HAL_SAI_MODULE_ENABLED +#define HAL_SD_MODULE_ENABLED +//#define HAL_UART_MODULE_ENABLED +//#define HAL_USART_MODULE_ENABLED +//#define HAL_IRDA_MODULE_ENABLED +//#define HAL_SMARTCARD_MODULE_ENABLED +//#define HAL_WWDG_MODULE_ENABLED +//#define HAL_HCD_MODULE_ENABLED +//#define HAL_FMPI2C_MODULE_ENABLED +//#define HAL_SPDIFRX_MODULE_ENABLED +//#define HAL_DFSDM_MODULE_ENABLED +//#define HAL_LPTIM_MODULE_ENABLED +//#define HAL_MMC_MODULE_ENABLED + +/* ########################## HSE/HSI Values adaptation ##################### */ +/** + * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSE is used as system clock source, directly or through the PLL). + */ +#ifndef HSE_VALUE +#define HSE_VALUE 8000000U /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#ifndef HSE_STARTUP_TIMEOUT +#define HSE_STARTUP_TIMEOUT 100U /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal High Speed oscillator (HSI) value. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSI is used as system clock source, directly or through the PLL). + */ +#ifndef HSI_VALUE +#define HSI_VALUE 16000000U /*!< Value of the Internal oscillator in Hz */ +#endif /* HSI_VALUE */ + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#ifndef LSI_VALUE +#define LSI_VALUE 32000U /*!< LSI Typical Value in Hz */ +#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz +The real value may vary depending on the variations +in voltage and temperature. */ +/** + * @brief External Low Speed oscillator (LSE) value. + */ +#ifndef LSE_VALUE +#define LSE_VALUE 32768U /*!< Value of the External Low Speed oscillator in Hz */ +#endif /* LSE_VALUE */ + +#ifndef LSE_STARTUP_TIMEOUT +#define LSE_STARTUP_TIMEOUT 5000U /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ + +/** + * @brief External clock source for I2S peripheral + * This value is used by the I2S HAL module to compute the I2S clock source + * frequency, this source is inserted directly through I2S_CKIN pad. + */ +#ifndef EXTERNAL_CLOCK_VALUE +#define EXTERNAL_CLOCK_VALUE 12288000U /*!< Value of the External oscillator in Hz*/ +#endif /* EXTERNAL_CLOCK_VALUE */ + +/* Tip: To avoid modifying this file each time you need to use different HSE, + === you can define the HSE value in your toolchain compiler preprocessor. */ + +/* ########################### System Configuration ######################### */ +/** + * @brief This is the HAL system configuration section + */ +#if !defined (VDD_VALUE) +#define VDD_VALUE 3300U /*!< Value of VDD in mv */ +#endif +#if !defined (TICK_INT_PRIORITY) +#define TICK_INT_PRIORITY 0x00U /*!< tick interrupt priority */ +#endif +#if !defined (USE_RTOS) +#define USE_RTOS 0U +#endif +#if !defined (PREFETCH_ENABLE) +#define PREFETCH_ENABLE 1U +#endif +#if !defined (INSTRUCTION_CACHE_ENABLE) +#define INSTRUCTION_CACHE_ENABLE 1U +#endif +#if !defined (DATA_CACHE_ENABLE) +#define DATA_CACHE_ENABLE 1U +#endif + +#define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */ +#define USE_HAL_CAN_REGISTER_CALLBACKS 0U /* CAN register callback disabled */ +#define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */ +#define USE_HAL_CRYP_REGISTER_CALLBACKS 0U /* CRYP register callback disabled */ +#define USE_HAL_DAC_REGISTER_CALLBACKS 0U /* DAC register callback disabled */ +#define USE_HAL_DCMI_REGISTER_CALLBACKS 0U /* DCMI register callback disabled */ +#define USE_HAL_DFSDM_REGISTER_CALLBACKS 0U /* DFSDM register callback disabled */ +#define USE_HAL_DMA2D_REGISTER_CALLBACKS 0U /* DMA2D register callback disabled */ +#define USE_HAL_DSI_REGISTER_CALLBACKS 0U /* DSI register callback disabled */ +#define USE_HAL_ETH_REGISTER_CALLBACKS 0U /* ETH register callback disabled */ +#define USE_HAL_HASH_REGISTER_CALLBACKS 0U /* HASH register callback disabled */ +#define USE_HAL_HCD_REGISTER_CALLBACKS 0U /* HCD register callback disabled */ +#define USE_HAL_I2C_REGISTER_CALLBACKS 0U /* I2C register callback disabled */ +#define USE_HAL_FMPI2C_REGISTER_CALLBACKS 0U /* FMPI2C register callback disabled */ +#define USE_HAL_I2S_REGISTER_CALLBACKS 0U /* I2S register callback disabled */ +#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */ +#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0U /* LPTIM register callback disabled */ +#define USE_HAL_LTDC_REGISTER_CALLBACKS 0U /* LTDC register callback disabled */ +#define USE_HAL_MMC_REGISTER_CALLBACKS 0U /* MMC register callback disabled */ +#define USE_HAL_NAND_REGISTER_CALLBACKS 0U /* NAND register callback disabled */ +#define USE_HAL_NOR_REGISTER_CALLBACKS 0U /* NOR register callback disabled */ +#define USE_HAL_PCCARD_REGISTER_CALLBACKS 0U /* PCCARD register callback disabled */ +#define USE_HAL_PCD_REGISTER_CALLBACKS 0U /* PCD register callback disabled */ +#define USE_HAL_QSPI_REGISTER_CALLBACKS 0U /* QSPI register callback disabled */ +#define USE_HAL_RNG_REGISTER_CALLBACKS 0U /* RNG register callback disabled */ +#define USE_HAL_RTC_REGISTER_CALLBACKS 0U /* RTC register callback disabled */ +#define USE_HAL_SAI_REGISTER_CALLBACKS 0U /* SAI register callback disabled */ +#define USE_HAL_SD_REGISTER_CALLBACKS 0U /* SD register callback disabled */ +#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U /* SMARTCARD register callback disabled */ +#define USE_HAL_SDRAM_REGISTER_CALLBACKS 0U /* SDRAM register callback disabled */ +#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U /* SRAM register callback disabled */ +#define USE_HAL_SPDIFRX_REGISTER_CALLBACKS 0U /* SPDIFRX register callback disabled */ +#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U /* SMBUS register callback disabled */ +#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */ +#define USE_HAL_TIM_REGISTER_CALLBACKS 0U /* TIM register callback disabled */ +#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */ +#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */ +#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */ + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1U */ + +/* ################## Ethernet peripheral configuration ##################### */ + +/* Section 1 : Ethernet peripheral configuration */ + +/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */ +#define MAC_ADDR0 2U +#define MAC_ADDR1 0U +#define MAC_ADDR2 0U +#define MAC_ADDR3 0U +#define MAC_ADDR4 0U +#define MAC_ADDR5 0U + +/* Definition of the Ethernet driver buffers size and count */ +#define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */ +#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */ +#define ETH_RXBUFNB ((uint32_t)4U) /* 4 Rx buffers of size ETH_RX_BUF_SIZE */ +#define ETH_TXBUFNB ((uint32_t)4U) /* 4 Tx buffers of size ETH_TX_BUF_SIZE */ + +/* Section 2: PHY configuration section */ + +/* DP83848_PHY_ADDRESS Address*/ +#define DP83848_PHY_ADDRESS 0x01U +/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ +#define PHY_RESET_DELAY 0x000000FFU +/* PHY Configuration delay */ +#define PHY_CONFIG_DELAY 0x00000FFFU + +#define PHY_READ_TO 0x0000FFFFU +#define PHY_WRITE_TO 0x0000FFFFU + +/* Section 3: Common PHY Registers */ + +#define PHY_BCR ((uint16_t)0x0000) /*!< Transceiver Basic Control Register */ +#define PHY_BSR ((uint16_t)0x0001) /*!< Transceiver Basic Status Register */ + +#define PHY_RESET ((uint16_t)0x8000) /*!< PHY Reset */ +#define PHY_LOOPBACK ((uint16_t)0x4000) /*!< Select loop-back mode */ +#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100) /*!< Set the full-duplex mode at 100 Mb/s */ +#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000) /*!< Set the half-duplex mode at 100 Mb/s */ +#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100) /*!< Set the full-duplex mode at 10 Mb/s */ +#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000) /*!< Set the half-duplex mode at 10 Mb/s */ +#define PHY_AUTONEGOTIATION ((uint16_t)0x1000) /*!< Enable auto-negotiation function */ +#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200) /*!< Restart auto-negotiation function */ +#define PHY_POWERDOWN ((uint16_t)0x0800) /*!< Select the power down mode */ +#define PHY_ISOLATE ((uint16_t)0x0400) /*!< Isolate PHY from MII */ + +#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020) /*!< Auto-Negotiation process completed */ +#define PHY_LINKED_STATUS ((uint16_t)0x0004) /*!< Valid link established */ +#define PHY_JABBER_DETECTION ((uint16_t)0x0002) /*!< Jabber condition detected */ + +/* Section 4: Extended PHY Registers */ +#define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */ + +#define PHY_SPEED_STATUS ((uint16_t)0x0002U) /*!< PHY Speed mask */ +#define PHY_DUPLEX_STATUS ((uint16_t)0x0004U) /*!< PHY Duplex mask */ + +/* ################## SPI peripheral configuration ########################## */ + +/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver + * Activated: CRC code is present inside driver + * Deactivated: CRC code cleaned from driver + */ +#ifndef USE_SPI_CRC +#define USE_SPI_CRC 0U +#endif + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED +#include "stm32f4xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED +#include "stm32f4xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED +#include "stm32f4xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED +#include "stm32f4xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED +#include "stm32f4xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED +#include "stm32f4xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_CAN_MODULE_ENABLED +#include "stm32f4xx_hal_can.h" +#endif /* HAL_CAN_MODULE_ENABLED */ + +#ifdef HAL_CAN_LEGACY_MODULE_ENABLED +#include "stm32f4xx_hal_can_legacy.h" +#endif /* HAL_CAN_LEGACY_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED +#include "stm32f4xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_CRYP_MODULE_ENABLED +#include "stm32f4xx_hal_cryp.h" +#endif /* HAL_CRYP_MODULE_ENABLED */ + +#ifdef HAL_DMA2D_MODULE_ENABLED +#include "stm32f4xx_hal_dma2d.h" +#endif /* HAL_DMA2D_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED +#include "stm32f4xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_DCMI_MODULE_ENABLED +#include "stm32f4xx_hal_dcmi.h" +#endif /* HAL_DCMI_MODULE_ENABLED */ + +#ifdef HAL_ETH_MODULE_ENABLED +#include "stm32f4xx_hal_eth.h" +#endif /* HAL_ETH_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED +#include "stm32f4xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_SRAM_MODULE_ENABLED +#include "stm32f4xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED +#include "stm32f4xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + +#ifdef HAL_NAND_MODULE_ENABLED +#include "stm32f4xx_hal_nand.h" +#endif /* HAL_NAND_MODULE_ENABLED */ + +#ifdef HAL_PCCARD_MODULE_ENABLED +#include "stm32f4xx_hal_pccard.h" +#endif /* HAL_PCCARD_MODULE_ENABLED */ + +#ifdef HAL_SDRAM_MODULE_ENABLED +#include "stm32f4xx_hal_sdram.h" +#endif /* HAL_SDRAM_MODULE_ENABLED */ + +#ifdef HAL_HASH_MODULE_ENABLED +#include "stm32f4xx_hal_hash.h" +#endif /* HAL_HASH_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED +#include "stm32f4xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_SMBUS_MODULE_ENABLED +#include "stm32f4xx_hal_smbus.h" +#endif /* HAL_SMBUS_MODULE_ENABLED */ + +#ifdef HAL_I2S_MODULE_ENABLED +#include "stm32f4xx_hal_i2s.h" +#endif /* HAL_I2S_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED +#include "stm32f4xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_LTDC_MODULE_ENABLED +#include "stm32f4xx_hal_ltdc.h" +#endif /* HAL_LTDC_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED +#include "stm32f4xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_RNG_MODULE_ENABLED +#include "stm32f4xx_hal_rng.h" +#endif /* HAL_RNG_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED +#include "stm32f4xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_SAI_MODULE_ENABLED +#include "stm32f4xx_hal_sai.h" +#endif /* HAL_SAI_MODULE_ENABLED */ + +#ifdef HAL_SD_MODULE_ENABLED +#include "stm32f4xx_hal_sd.h" +#endif /* HAL_SD_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED +#include "stm32f4xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED +#include "stm32f4xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED +#include "stm32f4xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED +#include "stm32f4xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED +#include "stm32f4xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED +#include "stm32f4xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED +#include "stm32f4xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED +#include "stm32f4xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_HCD_MODULE_ENABLED +#include "stm32f4xx_hal_hcd.h" +#endif /* HAL_HCD_MODULE_ENABLED */ + +#ifdef HAL_DSI_MODULE_ENABLED +#include "stm32f4xx_hal_dsi.h" +#endif /* HAL_DSI_MODULE_ENABLED */ + +#ifdef HAL_QSPI_MODULE_ENABLED +#include "stm32f4xx_hal_qspi.h" +#endif /* HAL_QSPI_MODULE_ENABLED */ + +#ifdef HAL_CEC_MODULE_ENABLED +#include "stm32f4xx_hal_cec.h" +#endif /* HAL_CEC_MODULE_ENABLED */ + +#ifdef HAL_FMPI2C_MODULE_ENABLED +#include "stm32f4xx_hal_fmpi2c.h" +#endif /* HAL_FMPI2C_MODULE_ENABLED */ + +#ifdef HAL_SPDIFRX_MODULE_ENABLED +#include "stm32f4xx_hal_spdifrx.h" +#endif /* HAL_SPDIFRX_MODULE_ENABLED */ + +#ifdef HAL_DFSDM_MODULE_ENABLED +#include "stm32f4xx_hal_dfsdm.h" +#endif /* HAL_DFSDM_MODULE_ENABLED */ + +#ifdef HAL_LPTIM_MODULE_ENABLED +#include "stm32f4xx_hal_lptim.h" +#endif /* HAL_LPTIM_MODULE_ENABLED */ + +#ifdef HAL_MMC_MODULE_ENABLED +#include "stm32f4xx_hal_mmc.h" +#endif /* HAL_MMC_MODULE_ENABLED */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ +#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ +void assert_failed(uint8_t *file, uint32_t line); +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F4xx_HAL_CONF_CUSTOM_H */ + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/ldscript.ld b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/ldscript.ld new file mode 100644 index 0000000000..881b72167e --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/ldscript.ld @@ -0,0 +1,186 @@ +/* +***************************************************************************** +** +** File : ldscript.ld +** +** Abstract : Linker script for STM32F401RETx Device with +** 512KByte FLASH, 96KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +***************************************************************************** +** @attention +** +**

© COPYRIGHT(c) 2014 Ac6

+** +** Redistribution and use in source and binary forms, with or without modification, +** are permitted provided that the following conditions are met: +** 1. Redistributions of source code must retain the above copyright notice, +** this list of conditions and the following disclaimer. +** 2. Redistributions in binary form must reproduce the above copyright notice, +** this list of conditions and the following disclaimer in the documentation +** and/or other materials provided with the distribution. +** 3. Neither the name of Ac6 nor the names of its contributors +** may be used to endorse or promote products derived from this software +** without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20010000; /* end of RAM */ + +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ +FLASH (rx) : ORIGIN = 0x8000000 + LD_FLASH_OFFSET, LENGTH = LD_MAX_SIZE - LD_FLASH_OFFSET +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text ALIGN(4): + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM AT> FLASH + + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} \ No newline at end of file diff --git a/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/variant.cpp b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/variant.cpp new file mode 100644 index 0000000000..d603ad6ef1 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/variant.cpp @@ -0,0 +1,238 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "pins_arduino.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// Digital PinName array +const PinName digitalPin[] = { + PA_0, // Digital pin 0 + PA_1, // Digital pin 1 + PA_2, // Digital pin 2 + PA_3, // Digital pin 3 + PA_4, // Digital pin 4 + PA_5, // Digital pin 5 + PA_6, // Digital pin 6 + PA_7, // Digital pin 7 + PA_8, // Digital pin 8 + PA_9, // Digital pin 9 + PA_10, // Digital pin 10 + PA_11, // Digital pin 11 + PA_12, // Digital pin 12 + PA_13, // Digital pin 13 + PA_14, // Digital pin 14 + PA_15, // Digital pin 15 + + PB_0, // Digital pin 16 + PB_1, // Digital pin 17 + PB_2, // Digital pin 18 + PB_3, // Digital pin 19 + PB_4, // Digital pin 20 + PB_5, // Digital pin 21 + PB_6, // Digital pin 22 + PB_7, // Digital pin 23 + PB_8, // Digital pin 24 + PB_9, // Digital pin 25 + PB_10, // Digital pin 26 + PB_12, // Digital pin 27 + PB_13, // Digital pin 28 + PB_14, // Digital pin 29 + PB_15, // Digital pin 30 + + PC_0, // Digital pin 31 + PC_1, // Digital pin 32 + PC_2, // Digital pin 33 + PC_3, // Digital pin 34 + PC_4, // Digital pin 35 + PC_5, // Digital pin 36 + PC_6, // Digital pin 37 + PC_7, // Digital pin 38 + PC_8, // Digital pin 39 + PC_9, // Digital pin 40 + PC_10, // Digital pin 41 + PC_11, // Digital pin 42 + PC_12, // Digital pin 43 + PC_13, // Digital pin 44 + PC_14, // Digital pin 45 + PC_15, // Digital pin 46 + + PD_2, // Digital pin 47 + + PH_0, // Digital pin 48, used by the external oscillator + PH_1 // Digital pin 49, used by the external oscillator +}; + +// Analog (Ax) pin number array +const uint32_t analogInputPin[] = { + 0, // A0, PA0 + 1, // A1, PA1 + 2, // A2, PA2 + 3, // A3, PA3 + 4, // A4, PA4 + 5, // A5, PA5 + 6, // A6, PA6 + 7, // A7, PA7 + 16, // A8, PB0 + 17, // A9, PB1 + 31, // A10, PC0 + 32, // A11, PC1 + 33, // A12, PC2 + 34, // A13, PC3 + 35, // A14, PC4 + 36 // A15, PC5 +}; + +#ifdef __cplusplus +} +#endif + +// ---------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @brief Configures the System clock source, PLL Multiplier and Divider factors, + * AHB/APBx prescalers and Flash settings + * @note This function should be called only once the RCC clock configuration + * is reset to the default reset state (done in SystemInit() function). + * @param None + * @retval None + */ + +/******************************************************************************/ +/* PLL (clocked by HSE) used as System clock source */ +/******************************************************************************/ +static uint8_t SetSysClock_PLL_HSE(uint8_t bypass) +{ + RCC_OscInitTypeDef RCC_OscInitStruct; + RCC_ClkInitTypeDef RCC_ClkInitStruct; + + /* The voltage scaling allows optimizing the power consumption when the device is + clocked below the maximum system frequency, to update the voltage scaling value + regarding system frequency refer to product datasheet. */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); + + // Enable HSE oscillator and activate PLL with HSE as source + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + if (bypass == 0) { + RCC_OscInitStruct.HSEState = RCC_HSE_ON; // External 8 MHz xtal on OSC_IN/OSC_OUT + } else { + RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS; // External 8 MHz clock on OSC_IN + } + + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = HSE_VALUE / 1000000L; // Expects an 8 MHz external clock by default. Redefine HSE_VALUE if not + RCC_OscInitStruct.PLL.PLLN = 336; // VCO output clock = 336 MHz (1 MHz * 336) + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4; // PLLCLK = 84 MHz (336 MHz / 4) + RCC_OscInitStruct.PLL.PLLQ = 7; // USB clock = 48 MHz (336 MHz / 7) --> OK for USB + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { + return 0; // FAIL + } + + // Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 84 MHz + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 84 MHz + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; // 42 MHz + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 84 MHz + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { + return 0; // FAIL + } + + /* Output clock on MCO1 pin(PA8) for debugging purpose */ + /* + if (bypass == 0) + HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_2); // 4 MHz + else + HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_1); // 8 MHz + */ + + return 1; // OK +} + +/******************************************************************************/ +/* PLL (clocked by HSI) used as System clock source */ +/******************************************************************************/ +uint8_t SetSysClock_PLL_HSI(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct; + RCC_ClkInitTypeDef RCC_ClkInitStruct; + + /* The voltage scaling allows optimizing the power consumption when the device is + clocked below the maximum system frequency, to update the voltage scaling value + regarding system frequency refer to product datasheet. */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); + + // Enable HSI oscillator and activate PLL with HSI as source + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.HSEState = RCC_HSE_OFF; + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; + RCC_OscInitStruct.PLL.PLLM = 16; // VCO input clock = 1 MHz (16 MHz / 16) + RCC_OscInitStruct.PLL.PLLN = 336; // VCO output clock = 336 MHz (1 MHz * 336) + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4; // PLLCLK = 84 MHz (336 MHz / 4) + RCC_OscInitStruct.PLL.PLLQ = 7; // USB clock = 48 MHz (336 MHz / 7) --> freq is ok but not precise enough + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { + return 0; // FAIL + } + + /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */ + RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2); + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 84 MHz + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 84 MHz + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; // 42 MHz + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 84 MHz + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { + return 0; // FAIL + } + + /* Output clock on MCO1 pin(PA8) for debugging purpose */ + //HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSI, RCC_MCODIV_1); // 16 MHz + + return 1; // OK +} + +WEAK void SystemClock_Config(void) +{ + /* 1- If fail try to start with HSE and external xtal */ + if (SetSysClock_PLL_HSE(0) == 0) { + /* 2- Try to start with HSE and external clock */ + if (SetSysClock_PLL_HSE(1) == 0) { + /* 3- If fail start with HSI clock */ + if (SetSysClock_PLL_HSI() == 0) { + Error_Handler(); + } + } + } + /* Output clock on MCO2 pin(PC9) for debugging purpose */ + //HAL_RCC_MCOConfig(RCC_MCO2, RCC_MCO2SOURCE_SYSCLK, RCC_MCODIV_4); +} + +#ifdef __cplusplus +} +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/variant.h new file mode 100644 index 0000000000..591571bf2c --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_CREALITY_STM32F401RE/variant.h @@ -0,0 +1,151 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _VARIANT_ARDUINO_STM32_ +#define _VARIANT_ARDUINO_STM32_ + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + + +// | DIGITAL | ANALOG | USART | TWI | SPI | SPECIAL | +// |---------|--------|-----------|----------|------------------------|-----------| +#define PA0 0 // | 0 | A0 | | | | | +#define PA1 1 // | 1 | A1 | | | | | +#define PA2 2 // | 2 | A2 | USART2_TX | | | | +#define PA3 3 // | 3 | A3 | USART2_RX | | | | +#define PA4 4 // | 4 | A4 | | | SPI1_SS, (SPI3_SS) | | +#define PA5 5 // | 5 | A5 | | | SPI1_SCK | | +#define PA6 6 // | 6 | A6 | | | SPI1_MISO | | +#define PA7 7 // | 7 | A7 | | | SPI1_MOSI | | +#define PA8 8 // | 8 | | | TWI3_SCL | | | +#define PA9 9 // | 9 | | USART1_TX | | | | +#define PA10 10 // | 10 | | USART1_RX | | | | +#define PA11 11 // | 11 | | USART6_TX | | | | +#define PA12 12 // | 12 | | USART6_RX | | | | +#define PA13 13 // | 13 | | | | | SWD_SWDIO | +#define PA14 14 // | 14 | | | | | SWD_SWCLK | +#define PA15 15 // | 15 | | | | SPI3_SS, (SPI1_SS) | | +// |---------|--------|-----------|----------|------------------------|-----------| +#define PB0 16 // | 16 | A8 | | | | | +#define PB1 17 // | 17 | A9 | | | | | +#define PB2 18 // | 18 | | | | | BOOT1 | +#define PB3 19 // | 19 | | | TWI2_SDA | SPI3_SCK, (SPI1_SCK) | | +#define PB4 20 // | 20 | | | TWI3_SDA | SPI3_MISO, (SPI1_MISO) | | +#define PB5 21 // | 21 | | | | SPI3_MOSI, (SPI1_MOSI) | | +#define PB6 22 // | 22 | | USART1_TX | TWI1_SCL | | | +#define PB7 23 // | 23 | | USART1_RX | TWI1_SDA | | | +#define PB8 24 // | 24 | | | TWI1_SCL | | | +#define PB9 25 // | 25 | | | TWI1_SDA | SPI2_SS | | +#define PB10 26 // | 26 | | | TWI2_SCL | SPI2_SCK | | +#define PB12 27 // | 27 | | | | SPI2_SS | | +#define PB13 28 // | 28 | | | | SPI2_SCK | | +#define PB14 29 // | 29 | | | | SPI2_MISO | | +#define PB15 30 // | 30 | | | | SPI2_MOSI | | +// |---------|--------|-----------|----------|------------------------|-----------| +#define PC0 31 // | 31 | A10 | | | | | +#define PC1 32 // | 32 | A11 | | | | | +#define PC2 33 // | 33 | A12 | | | SPI2_MISO | | +#define PC3 34 // | 34 | A13 | | | SPI2_MOSI | | +#define PC4 35 // | 35 | A14 | | | | | +#define PC5 36 // | 36 | A15 | | | | | +#define PC6 37 // | 37 | | USART6_TX | | | | +#define PC7 38 // | 38 | | USART6_RX | | | | +#define PC8 39 // | 39 | | | | | | +#define PC9 40 // | 40 | | | TWI3_SDA | | | +#define PC10 41 // | 41 | | | | SPI3_SCK | | +#define PC11 42 // | 42 | | | | SPI3_MISO | | +#define PC12 43 // | 43 | | | | SPI3_MOSI | | +#define PC13 44 // | 44 | | | | | | +#define PC14 45 // | 45 | | | | | OSC32_IN | +#define PC15 46 // | 46 | | | | | OSC32_OUT | +// |---------|--------|-----------|----------|------------------------|-----------| +#define PD2 47 // | 47 | | | | | | +// |---------|--------|-----------|----------|------------------------|-----------| +#define PH0 48 // | 48 | | | | | OSC_IN | +#define PH1 49 // | 49 | | | | | OSC_OUT | +// |---------|--------|-----------|----------|------------------------|-----------| + +// This must be a literal +#define NUM_DIGITAL_PINS 50 +#define NUM_ANALOG_INPUTS 16 + +// SPI definitions +#define PIN_SPI_SS PA4 +#define PIN_SPI_SS1 PA4 +#define PIN_SPI_MOSI PA7 +#define PIN_SPI_MISO PA6 +#define PIN_SPI_SCK PA5 + + +// Timer Definitions +#define TIMER_TONE TIM2 +#define TIMER_SERVO TIM11 +#define TIMER_SERIAL TIM5 + +// UART Definitions +//#define ENABLE_HWSERIAL1 done automatically by the #define SERIAL_UART_INSTANCE below +#define ENABLE_HWSERIAL2 + + +// Define here Serial instance number to map on Serial generic name (if not already used by SerialUSB) +#define SERIAL_UART_INSTANCE 1 //1 for Serial = Serial1 (USART1) + +// Default pin used for 'Serial' instance +// Mandatory for Firmata +#define PIN_SERIAL_RX PA10 +#define PIN_SERIAL_TX PA9 + +// Used when user instanciate a hardware Serial using its peripheral name. +// Example: HardwareSerial mySerial(USART3); +// will use PIN_SERIAL3_RX and PIN_SERIAL3_TX if defined. +#define PIN_SERIAL1_RX PA10 +#define PIN_SERIAL1_TX PA9 +#define PIN_SERIAL2_RX PA3 +#define PIN_SERIAL2_TX PA2 + +#ifdef __cplusplus +} // extern "C" +#endif +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus + // These serial port names are intended to allow libraries and architecture-neutral + // sketches to automatically default to the correct port name for a particular type + // of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, + // the first hardware serial port whose RX/TX pins are not dedicated to another use. + // + // SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor + // + // SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial + // + // SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library + // + // SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. + // + // SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX + // pins are NOT connected to anything by default. + #define SERIAL_PORT_MONITOR Serial + #define SERIAL_PORT_HARDWARE Serial1 + #define SERIAL_PORT_HARDWARE_OPEN Serial2 +#endif + +#endif /* _VARIANT_ARDUINO_STM32_ */ diff --git a/ini/features.ini b/ini/features.ini index 638f3109fc..c8a3cf2908 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -206,6 +206,7 @@ CONTROLLER_FAN_EDITABLE = src_filter=+ GCODE_MACROS = src_filter=+ GRADIENT_MIX = src_filter=+ +OTA_FIRMWARE_UPDATE = src_filter=+ HAS_SAVED_POSITIONS = src_filter=+ + PARK_HEAD_ON_PAUSE = src_filter=+ FILAMENT_LOAD_UNLOAD_GCODES = src_filter=+ diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini index 7060f95db7..f30b5e539d 100644 --- a/ini/stm32f4.ini +++ b/ini/stm32f4.ini @@ -680,14 +680,38 @@ extra_scripts = ${stm32_variant.extra_scripts} monitor_speed = 115200 [env:STM32F401RC_creality_jlink] -extends = env:STM32F401RC_creality -debug_tool = jlink -upload_protocol = jlink +extends = env:STM32F401RC_creality +debug_tool = jlink +upload_protocol = jlink [env:STM32F401RC_creality_stlink] -extends = env:STM32F401RC_creality -debug_tool = stlink -upload_protocol = stlink +extends = env:STM32F401RC_creality +debug_tool = stlink +upload_protocol = stlink + +# +# Ender-5 S1 STM32F401RE_creality (CR4NS200141C13 with STM32F401RET6) +# +[env:STM32F401RE_creality] +extends = stm32_variant +board = marlin_CREALITY_STM32F401RE +board_build.offset = 0x10000 +board_upload.offset_address = 0x08010000 +build_flags = ${stm32_variant.build_flags} -DSTM32F401xE -DSTM32F4 -DSTM32F4_UPDATE_FOLDER +build_unflags = ${stm32_variant.build_unflags} -DUSBCON -DUSBD_USE_CDC +extra_scripts = ${stm32_variant.extra_scripts} + pre:buildroot/share/PlatformIO/scripts/random-bin.py +monitor_speed = 115200 + +[env:STM32F401RE_creality_jlink] +extends = env:STM32F401RE_creality +debug_tool = jlink +upload_protocol = jlink + +[env:STM32F401RE_creality_stlink] +extends = env:STM32F401RC_creality +debug_tool = stlink +upload_protocol = stlink # # BigTree SKR mini E3 V3.0.1 (STM32F401RCT6 ARM Cortex-M4) From dbed3f1c418e1f6edc4d74f5e29659245f6841b0 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 3 May 2023 00:20:18 +0000 Subject: [PATCH 369/659] [cron] Bump distribution date (2023-05-03) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 6a3684ba4a..887eee8e76 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-02" +//#define STRING_DISTRIBUTION_DATE "2023-05-03" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 9283399182..c2f46ff4ff 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-02" + #define STRING_DISTRIBUTION_DATE "2023-05-03" #endif /** From 7642bfbf8b997308e691034aa294a061c5fc5426 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Wed, 3 May 2023 14:19:32 -0700 Subject: [PATCH 370/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20TFT=20Touch=20Cali?= =?UTF-8?q?bration=20overrides=20(#25579)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …and other misc. display-related updates Co-authored-by: Scott Lahteine --- Marlin/src/HAL/STM32/tft/tft_spi.cpp | 1 - Marlin/src/HAL/STM32F1/tft/tft_spi.cpp | 15 +++--- Marlin/src/inc/Conditionals_LCD.h | 41 ++++++--------- Marlin/src/inc/Conditionals_post.h | 21 +++++++- .../dogm/u8g_dev_tft_upscale_from_128x64.cpp | 2 +- .../src/lcd/extui/mks_ui/draw_print_file.cpp | 50 +++++-------------- Marlin/src/lcd/extui/mks_ui/draw_ui.h | 32 ++++++------ .../extui/mks_ui/tft_lvgl_configuration.cpp | 3 +- .../lcd/extui/mks_ui/tft_lvgl_configuration.h | 2 - Marlin/src/lcd/extui/mks_ui/wifi_module.cpp | 1 + Marlin/src/lcd/tft/touch.cpp | 7 ++- Marlin/src/lcd/tft_io/ili9488.h | 10 ---- Marlin/src/lcd/tft_io/tft_io.h | 2 - Marlin/src/lcd/tft_io/tft_orientation.h | 16 ------ Marlin/src/lcd/tft_io/touch_calibration.h | 4 +- Marlin/src/lcd/touch/touch_buttons.cpp | 2 +- Marlin/src/pins/linux/pins_RAMPS_LINUX.h | 2 +- 17 files changed, 80 insertions(+), 131 deletions(-) diff --git a/Marlin/src/HAL/STM32/tft/tft_spi.cpp b/Marlin/src/HAL/STM32/tft/tft_spi.cpp index 6ee4dc3364..dbb93c786b 100644 --- a/Marlin/src/HAL/STM32/tft/tft_spi.cpp +++ b/Marlin/src/HAL/STM32/tft/tft_spi.cpp @@ -245,7 +245,6 @@ void TFT_SPI::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Coun TERN_(TFT_SHARED_IO, while (isBusy())); } - void TFT_SPI::Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { DMAtx.Init.MemInc = MemoryIncrease; HAL_DMA_Init(&DMAtx); diff --git a/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp b/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp index eed52f4e8a..5264aabef6 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp +++ b/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp @@ -94,25 +94,24 @@ uint32_t TFT_SPI::GetID() { } uint32_t TFT_SPI::ReadID(uint16_t Reg) { - #if !PIN_EXISTS(TFT_MISO) - return 0; - #else - uint8_t d = 0; - uint32_t data = 0; + uint32_t data = 0; + + #if PIN_EXISTS(TFT_MISO) SPIx.setClockDivider(SPI_CLOCK_DIV16); DataTransferBegin(DATASIZE_8BIT); WriteReg(Reg); LOOP_L_N(i, 4) { - SPIx.read((uint8_t*)&d, 1); + uint8_t d; + SPIx.read(&d, 1); data = (data << 8) | d; } DataTransferEnd(); SPIx.setClockDivider(SPI_CLOCK_MAX); - - return data >> 7; #endif + + return data >> 7; } bool TFT_SPI::isBusy() { diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index c28a49c8df..44072ef4a2 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -328,24 +328,22 @@ #define IS_ULTIPANEL 1 #endif -// TFT Legacy Compatibility +// TFT Legacy options masquerade as TFT_GENERIC #if ANY(FSMC_GRAPHICAL_TFT, SPI_GRAPHICAL_TFT, TFT_320x240, TFT_480x320, TFT_320x240_SPI, TFT_480x320_SPI, TFT_LVGL_UI_FSMC, TFT_LVGL_UI_SPI) #define IS_LEGACY_TFT 1 #define TFT_GENERIC -#endif - -#if ANY(FSMC_GRAPHICAL_TFT, TFT_320x240, TFT_480x320, TFT_LVGL_UI_FSMC) - #define TFT_INTERFACE_FSMC -#elif ANY(SPI_GRAPHICAL_TFT, TFT_320x240_SPI, TFT_480x320_SPI, TFT_LVGL_UI_SPI) - #define TFT_INTERFACE_SPI -#endif - -#if EITHER(FSMC_GRAPHICAL_TFT, SPI_GRAPHICAL_TFT) - #define TFT_CLASSIC_UI -#elif ANY(TFT_320x240, TFT_480x320, TFT_320x240_SPI, TFT_480x320_SPI) - #define TFT_COLOR_UI -#elif EITHER(TFT_LVGL_UI_FSMC, TFT_LVGL_UI_SPI) - #define TFT_LVGL_UI + #if ANY(FSMC_GRAPHICAL_TFT, TFT_320x240, TFT_480x320, TFT_LVGL_UI_FSMC) + #define TFT_INTERFACE_FSMC + #elif ANY(SPI_GRAPHICAL_TFT, TFT_320x240_SPI, TFT_480x320_SPI, TFT_LVGL_UI_SPI) + #define TFT_INTERFACE_SPI + #endif + #if EITHER(FSMC_GRAPHICAL_TFT, SPI_GRAPHICAL_TFT) + #define TFT_CLASSIC_UI + #elif ANY(TFT_320x240, TFT_480x320, TFT_320x240_SPI, TFT_480x320_SPI) + #define TFT_COLOR_UI + #elif EITHER(TFT_LVGL_UI_FSMC, TFT_LVGL_UI_SPI) + #define TFT_LVGL_UI + #endif #endif // FSMC/SPI TFT Panels (LVGL) @@ -1671,7 +1669,7 @@ #endif #if ANY(HAS_SPI_TFT, HAS_FSMC_TFT, HAS_LTDC_TFT) - #include "../lcd/tft_io/tft_orientation.h" + #include "../lcd/tft_io/tft_orientation.h" // for TFT_COLOR_UI_PORTRAIT #endif #if ENABLED(TFT_RES_320x240) @@ -1775,17 +1773,6 @@ #endif #endif -// XPT2046_** Compatibility -#if !(defined(TOUCH_CALIBRATION_X) || defined(TOUCH_CALIBRATION_Y) || defined(TOUCH_OFFSET_X) || defined(TOUCH_OFFSET_Y) || defined(TOUCH_ORIENTATION)) - #if defined(XPT2046_X_CALIBRATION) && defined(XPT2046_Y_CALIBRATION) && defined(XPT2046_X_OFFSET) && defined(XPT2046_Y_OFFSET) - #define TOUCH_CALIBRATION_X XPT2046_X_CALIBRATION - #define TOUCH_CALIBRATION_Y XPT2046_Y_CALIBRATION - #define TOUCH_OFFSET_X XPT2046_X_OFFSET - #define TOUCH_OFFSET_Y XPT2046_Y_OFFSET - #define TOUCH_ORIENTATION TOUCH_LANDSCAPE - #endif -#endif - #if X_HOME_DIR || (HAS_Y_AXIS && Y_HOME_DIR) || (HAS_Z_AXIS && Z_HOME_DIR) \ || (HAS_I_AXIS && I_HOME_DIR) || (HAS_J_AXIS && J_HOME_DIR) || (HAS_K_AXIS && K_HOME_DIR) \ || (HAS_U_AXIS && U_HOME_DIR) || (HAS_V_AXIS && V_HOME_DIR) || (HAS_W_AXIS && W_HOME_DIR) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 0d74649009..7319905ee6 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -560,7 +560,7 @@ #define REINIT_NOISY_LCD 1 // Have the LCD re-init on SD insertion #endif -#endif +#endif // HAS_MEDIA /** * Power Supply @@ -3153,6 +3153,25 @@ #endif #endif +// Touch Calibration +#if ANY(HAS_SPI_TFT, HAS_FSMC_TFT, HAS_LTDC_TFT) + #ifndef TOUCH_CALIBRATION_X + #define TOUCH_CALIBRATION_X 0 + #endif + #ifndef TOUCH_CALIBRATION_Y + #define TOUCH_CALIBRATION_Y 0 + #endif + #ifndef TOUCH_OFFSET_X + #define TOUCH_OFFSET_X 0 + #endif + #ifndef TOUCH_OFFSET_Y + #define TOUCH_OFFSET_Y 0 + #endif + #ifndef TOUCH_ORIENTATION + #define TOUCH_ORIENTATION TOUCH_LANDSCAPE + #endif +#endif + // Number of VFAT entries used. Each entry has 13 UTF-16 characters #if ANY(SCROLL_LONG_FILENAMES, HAS_DWIN_E3V2, TFT_COLOR_UI) #define VFAT_ENTRIES_LIMIT 5 diff --git a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp index efc010ca89..e51767f96a 100644 --- a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp +++ b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp @@ -556,4 +556,4 @@ U8G_PB_DEV(u8g_dev_tft_320x240_upscale_from_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, #endif // TOUCH_SCREEN_CALIBRATION -#endif // HAS_MARLINUI_U8GLIB && (FSMC_CS_PIN || HAS_SPI_GRAPHICAL_TFT) +#endif // HAS_MARLINUI_U8GLIB && (FSMC_CS_PIN || HAS_SPI_GRAPHICAL_TFT || HAS_LTDC_GRAPHICAL_TFT) diff --git a/Marlin/src/lcd/extui/mks_ui/draw_print_file.cpp b/Marlin/src/lcd/extui/mks_ui/draw_print_file.cpp index 4997641e15..da79cb6174 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_print_file.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_print_file.cpp @@ -120,8 +120,6 @@ bool have_pre_pic(char *path) { static void event_handler(lv_obj_t *obj, lv_event_t event) { if (event != LV_EVENT_RELEASED) return; uint8_t i, file_count = 0; - //switch (obj->mks_obj_id) - //{ if (obj->mks_obj_id == ID_P_UP) { if (dir_offset[curDirLever].curPage > 0) { // 2015.05.19 @@ -130,9 +128,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { if (dir_offset[curDirLever].cur_page_first_offset >= FILE_NUM) list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset - FILE_NUM; - #if HAS_MEDIA - file_count = search_file(); - #endif + TERN_(HAS_MEDIA, file_count = search_file()); if (file_count != 0) { dir_offset[curDirLever].curPage--; lv_clear_print_file(); @@ -144,9 +140,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { if (dir_offset[curDirLever].cur_page_last_offset > 0) { list_file.Sd_file_cnt = 0; list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_last_offset + 1; - #if HAS_MEDIA - file_count = search_file(); - #endif + TERN_(HAS_MEDIA, file_count = search_file()); if (file_count != 0) { dir_offset[curDirLever].curPage++; lv_clear_print_file(); @@ -161,17 +155,13 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { int8_t *ch = (int8_t *)strrchr(list_file.curDirPath, '/'); if (ch) { *ch = 0; - #if HAS_MEDIA - card.cdup(); - #endif + TERN_(HAS_MEDIA, card.cdup()); dir_offset[curDirLever].curPage = 0; dir_offset[curDirLever].cur_page_first_offset = 0; dir_offset[curDirLever].cur_page_last_offset = 0; curDirLever--; list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset; - #if HAS_MEDIA - file_count = search_file(); - #endif + TERN_(HAS_MEDIA, file_count = search_file()); lv_clear_print_file(); disp_gcode_icon(file_count); } @@ -189,9 +179,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { strcpy(list_file.curDirPath, list_file.file_name[i]); curDirLever++; list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset; - #if HAS_MEDIA - file_count = search_file(); - #endif + TERN_(HAS_MEDIA, file_count = search_file()); lv_clear_print_file(); disp_gcode_icon(file_count); } @@ -396,8 +384,7 @@ int ascii2dec_test(char *ascii) { void lv_gcode_file_read(uint8_t *data_buf) { #if HAS_MEDIA - uint16_t i = 0, j = 0, k = 0; - uint16_t row_1 = 0; + uint16_t i = 0, j = 0, k = 0, row_1 = 0; bool ignore_start = true; char temp_test[200]; volatile uint16_t *p_index; @@ -435,24 +422,13 @@ void lv_gcode_file_read(uint8_t *data_buf) { break; } } - #if HAS_TFT_LVGL_UI_SPI - for (i = 0; i < 200;) { - p_index = (uint16_t *)(&public_buf[i]); - - //Color = (*p_index >> 8); - //*p_index = Color | ((*p_index & 0xFF) << 8); - i += 2; - if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full; - } - #else // !HAS_TFT_LVGL_UI_SPI - for (i = 0; i < 200;) { - p_index = (uint16_t *)(&public_buf[i]); - //Color = (*p_index >> 8); - //*p_index = Color | ((*p_index & 0xFF) << 8); - i += 2; - if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full; // 0x18C3; - } - #endif // !HAS_TFT_LVGL_UI_SPI + for (i = 0; i < 200;) { + p_index = (uint16_t *)(&public_buf[i]); + //Color = (*p_index >> 8); + //*p_index = Color | ((*p_index & 0xFF) << 8); + i += 2; + if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full; + } memcpy(data_buf, public_buf, 200); #endif // HAS_MEDIA } diff --git a/Marlin/src/lcd/extui/mks_ui/draw_ui.h b/Marlin/src/lcd/extui/mks_ui/draw_ui.h index 9bc583d3ad..da43f2a490 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_ui.h +++ b/Marlin/src/lcd/extui/mks_ui/draw_ui.h @@ -133,16 +133,16 @@ #define FILE_PRE_PIC_Y_OFFSET 0 #define PREVIEW_LITTLE_PIC_SIZE 40910 // 400*100+9*101+1 - #define PREVIEW_SIZE 202720 // (PREVIEW_LITTLE_PIC_SIZE+800*200+201*9+1) + #define PREVIEW_SIZE 202720 // (PREVIEW_LITTLE_PIC_SIZE+800*200+201*9+1) // machine parameter ui - #define PARA_UI_POS_X 10 - #define PARA_UI_POS_Y 50 + #define PARA_UI_POS_X 10 + #define PARA_UI_POS_Y 50 #define PARA_UI_SIZE_X 450 - #define PARA_UI_SIZE_Y 40 + #define PARA_UI_SIZE_Y 40 - #define PARA_UI_ARROW_V 12 + #define PARA_UI_ARROW_V 12 #define PARA_UI_BACK_POS_X 400 #define PARA_UI_BACK_POS_Y 270 @@ -152,31 +152,31 @@ #define PARA_UI_VALUE_SIZE_X 370 #define PARA_UI_VALUE_POS_X 400 - #define PARA_UI_VALUE_V 5 + #define PARA_UI_VALUE_V 5 #define PARA_UI_STATE_POS_X 380 - #define PARA_UI_STATE_V 2 + #define PARA_UI_STATE_V 2 #define PARA_UI_VALUE_SIZE_X_2 200 #define PARA_UI_VALUE_POS_X_2 320 - #define PARA_UI_VALUE_V_2 5 + #define PARA_UI_VALUE_V_2 5 - #define PARA_UI_VALUE_BTN_X_SIZE 70 - #define PARA_UI_VALUE_BTN_Y_SIZE 28 + #define PARA_UI_VALUE_BTN_X_SIZE 70 + #define PARA_UI_VALUE_BTN_Y_SIZE 28 - #define PARA_UI_BACK_BTN_X_SIZE 70 - #define PARA_UI_BACK_BTN_Y_SIZE 40 + #define PARA_UI_BACK_BTN_X_SIZE 70 + #define PARA_UI_BACK_BTN_Y_SIZE 40 - #define QRCODE_X 20 - #define QRCODE_Y 40 + #define QRCODE_X 20 + #define QRCODE_Y 40 #define QRCODE_WIDTH 160 -#else // ifdef TFT35 +#else // !TFT35 #define TFT_WIDTH 320 #define TFT_HEIGHT 240 -#endif // ifdef TFT35 +#endif #ifdef __cplusplus extern "C" { diff --git a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp index 991754ba96..94c3517e3a 100644 --- a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp @@ -36,10 +36,11 @@ #include #include "../../../MarlinCore.h" +#include "../../marlinui.h" + #include "../../../inc/MarlinConfig.h" #include HAL_PATH(../../.., tft/xpt2046.h) -#include "../../marlinui.h" XPT2046 touch; #if ENABLED(POWER_LOSS_RECOVERY) diff --git a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.h b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.h index 0368140b28..a71bdc9db7 100644 --- a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.h +++ b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.h @@ -32,8 +32,6 @@ #include -//#define TFT_ROTATION TFT_ROTATE_180 - extern uint8_t bmp_public_buf[14 * 1024]; extern uint8_t public_buf[513]; diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp index cf2411ee7e..bf399f70aa 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp @@ -1804,6 +1804,7 @@ void stopEspTransfer() { W25QXX.init(SPI_QUARTER_SPEED); + // ?? Workaround for SPI / Servo issues ?? TERN_(HAS_TFT_LVGL_UI_SPI, SPI_TFT.spi_init(SPI_FULL_SPEED)); TERN_(HAS_SERVOS, servo_init()); TERN_(HAS_Z_SERVO_PROBE, probe.servo_probe_init()); diff --git a/Marlin/src/lcd/tft/touch.cpp b/Marlin/src/lcd/tft/touch.cpp index 9482c85a47..17784ff527 100644 --- a/Marlin/src/lcd/tft/touch.cpp +++ b/Marlin/src/lcd/tft/touch.cpp @@ -266,19 +266,18 @@ void Touch::hold(touch_control_t *control, millis_t delay) { bool Touch::get_point(int16_t *x, int16_t *y) { #if ENABLED(TFT_TOUCH_DEVICE_XPT2046) #if ENABLED(TOUCH_SCREEN_CALIBRATION) - bool is_touched = (touch_calibration.calibration.orientation == TOUCH_PORTRAIT ? io.getRawPoint(y, x) : io.getRawPoint(x, y)); - + const bool is_touched = (touch_calibration.calibration.orientation == TOUCH_PORTRAIT ? io.getRawPoint(y, x) : io.getRawPoint(x, y)); if (is_touched && touch_calibration.calibration.orientation != TOUCH_ORIENTATION_NONE) { *x = int16_t((int32_t(*x) * touch_calibration.calibration.x) >> 16) + touch_calibration.calibration.offset_x; *y = int16_t((int32_t(*y) * touch_calibration.calibration.y) >> 16) + touch_calibration.calibration.offset_y; } #else - bool is_touched = (TOUCH_ORIENTATION == TOUCH_PORTRAIT ? io.getRawPoint(y, x) : io.getRawPoint(x, y)); + const bool is_touched = (TOUCH_ORIENTATION == TOUCH_PORTRAIT ? io.getRawPoint(y, x) : io.getRawPoint(x, y)); *x = uint16_t((uint32_t(*x) * TOUCH_CALIBRATION_X) >> 16) + TOUCH_OFFSET_X; *y = uint16_t((uint32_t(*y) * TOUCH_CALIBRATION_Y) >> 16) + TOUCH_OFFSET_Y; #endif #elif ENABLED(TFT_TOUCH_DEVICE_GT911) - bool is_touched = (TOUCH_ORIENTATION == TOUCH_PORTRAIT ? io.getPoint(y, x) : io.getPoint(x, y)); + const bool is_touched = (TOUCH_ORIENTATION == TOUCH_PORTRAIT ? io.getPoint(y, x) : io.getPoint(x, y)); #endif #if HAS_TOUCH_SLEEP if (is_touched) diff --git a/Marlin/src/lcd/tft_io/ili9488.h b/Marlin/src/lcd/tft_io/ili9488.h index fc2add662d..f28d411bbd 100644 --- a/Marlin/src/lcd/tft_io/ili9488.h +++ b/Marlin/src/lcd/tft_io/ili9488.h @@ -146,16 +146,6 @@ #define ILI9488_ADJCTL6 0xFC // Adjust Control 6 #define ILI9488_ADJCTL7 0xFF // Adjust Control 7 -#if 0 - // https://forum.mikroe.com/viewtopic.php?t=74586 - #if ANY(MKS_ROBIN_TFT35, TFT_TRONXY_X5SA, ANYCUBIC_TFT35) // ILI9488 - #define TFT_DRIVER ILI9488 - #define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y) - #define TFT_RES_480x320 - #define TFT_INTERFACE_FSMC - #endif -#endif - static const uint16_t ili9488_init[] = { DATASIZE_8BIT, ESC_REG(ILI9488_SWRESET), ESC_DELAY(120), diff --git a/Marlin/src/lcd/tft_io/tft_io.h b/Marlin/src/lcd/tft_io/tft_io.h index 226348552d..673bb07d5f 100644 --- a/Marlin/src/lcd/tft_io/tft_io.h +++ b/Marlin/src/lcd/tft_io/tft_io.h @@ -37,8 +37,6 @@ #error "DMA_MAX_SIZE is not configured for this platform." #endif -#include "tft_orientation.h" - #ifndef TFT_DRIVER #define TFT_DRIVER AUTO #endif diff --git a/Marlin/src/lcd/tft_io/tft_orientation.h b/Marlin/src/lcd/tft_io/tft_orientation.h index c2c86435b2..99c6a13c64 100644 --- a/Marlin/src/lcd/tft_io/tft_orientation.h +++ b/Marlin/src/lcd/tft_io/tft_orientation.h @@ -66,19 +66,3 @@ #define TOUCH_ORIENTATION_NONE 0 #define TOUCH_LANDSCAPE 1 #define TOUCH_PORTRAIT 2 - -#ifndef TOUCH_CALIBRATION_X - #define TOUCH_CALIBRATION_X 0 -#endif -#ifndef TOUCH_CALIBRATION_Y - #define TOUCH_CALIBRATION_Y 0 -#endif -#ifndef TOUCH_OFFSET_X - #define TOUCH_OFFSET_X 0 -#endif -#ifndef TOUCH_OFFSET_Y - #define TOUCH_OFFSET_Y 0 -#endif -#ifndef TOUCH_ORIENTATION - #define TOUCH_ORIENTATION TOUCH_LANDSCAPE -#endif diff --git a/Marlin/src/lcd/tft_io/touch_calibration.h b/Marlin/src/lcd/tft_io/touch_calibration.h index 030b4977db..e9d3110c56 100644 --- a/Marlin/src/lcd/tft_io/touch_calibration.h +++ b/Marlin/src/lcd/tft_io/touch_calibration.h @@ -21,13 +21,11 @@ */ #pragma once -#include "../../inc/MarlinConfigPre.h" -#include "tft_io.h" +#include "../../inc/MarlinConfig.h" #ifndef TOUCH_SCREEN_CALIBRATION_PRECISION #define TOUCH_SCREEN_CALIBRATION_PRECISION 80 #endif - #ifndef TOUCH_SCREEN_HOLD_TO_CALIBRATE_MS #define TOUCH_SCREEN_HOLD_TO_CALIBRATE_MS 2500 #endif diff --git a/Marlin/src/lcd/touch/touch_buttons.cpp b/Marlin/src/lcd/touch/touch_buttons.cpp index 032015cdd0..2e996f30ce 100644 --- a/Marlin/src/lcd/touch/touch_buttons.cpp +++ b/Marlin/src/lcd/touch/touch_buttons.cpp @@ -65,7 +65,7 @@ void TouchButtons::init() { } uint8_t TouchButtons::read_buttons() { - #ifdef HAS_WIRED_LCD + #if HAS_WIRED_LCD int16_t x, y; #if ENABLED(TFT_TOUCH_DEVICE_XPT2046) diff --git a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h index b414c0015f..e322af8fec 100644 --- a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h +++ b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h @@ -408,7 +408,7 @@ #ifndef TFT_DRIVER #define TFT_DRIVER ST7796 #endif - #ifndef TOUCH_SCREEN_CALIBRATION + #if DISABLED(TOUCH_SCREEN_CALIBRATION) #if ENABLED(TFT_RES_320x240) #ifndef TOUCH_CALIBRATION_X #define TOUCH_CALIBRATION_X 20525 From cfbd8a2e3665585cecb749de6428c749f833273f Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 4 May 2023 00:20:30 +0000 Subject: [PATCH 371/659] [cron] Bump distribution date (2023-05-04) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 887eee8e76..4a59b3b3a0 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-03" +//#define STRING_DISTRIBUTION_DATE "2023-05-04" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index c2f46ff4ff..c8ed9bc956 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-03" + #define STRING_DISTRIBUTION_DATE "2023-05-04" #endif /** From 6bf789d93f18c9ac6f4ebdbedb629d95bb5f6786 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 4 May 2023 18:05:56 -0500 Subject: [PATCH 372/659] =?UTF-8?q?=F0=9F=8E=A8=20Move=20G28O=20inside=20P?= =?UTF-8?q?roUI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/probe/G30.cpp | 4 +--- Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Marlin/src/gcode/probe/G30.cpp b/Marlin/src/gcode/probe/G30.cpp index 8e64ba7cca..ad797688bb 100644 --- a/Marlin/src/gcode/probe/G30.cpp +++ b/Marlin/src/gcode/probe/G30.cpp @@ -70,9 +70,7 @@ void GcodeSuite::G30() { remember_feedrate_scaling_off(); - #if EITHER(DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI) - process_subcommands_now(F("G28O")); - #endif + TERN_(DWIN_CREALITY_LCD_JYERSUI, process_subcommands_now(F("G28O"))); const ProbePtRaise raise_after = parser.boolval('E', true) ? PROBE_PT_STOW : PROBE_PT_NONE; diff --git a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp index 760582c76a..47b104c5ba 100644 --- a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp +++ b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp @@ -183,7 +183,7 @@ void BedLevelToolsClass::MoveToZ() { } void BedLevelToolsClass::ProbeXY() { const uint16_t Clear = Z_CLEARANCE_DEPLOY_PROBE; - sprintf_P(cmd, PSTR("G0Z%i\nG30X%sY%s"), + sprintf_P(cmd, PSTR("G28O\nG0Z%i\nG30X%sY%s"), Clear, dtostrf(bedlevel.get_mesh_x(bedLevelTools.mesh_x), 1, 2, str_1), dtostrf(bedlevel.get_mesh_y(bedLevelTools.mesh_y), 1, 2, str_2) From 001d1fd7cb86306cf6e25c11a91d0b2e478007bd Mon Sep 17 00:00:00 2001 From: Thomas Niccolo Reyes Date: Fri, 5 May 2023 07:09:36 +0800 Subject: [PATCH 373/659] =?UTF-8?q?=F0=9F=9A=B8=20Improve=20MMU2=20unload?= =?UTF-8?q?=20(like=20original=20MMU2S)=20(#20147)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration_adv.h | 47 +++--- Marlin/src/feature/mmu/mmu2.cpp | 147 ++++++++++--------- Marlin/src/feature/mmu/mmu2.h | 12 +- Marlin/src/gcode/feature/pause/M701_M702.cpp | 2 +- Marlin/src/lcd/menu/menu_mmu2.cpp | 23 ++- buildroot/tests/rambo | 8 + 6 files changed, 125 insertions(+), 114 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 34f5f38ce3..4567d5b4c1 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -4250,30 +4250,29 @@ // Add an LCD menu for MMU2 //#define MMU2_MENUS - #if EITHER(MMU2_MENUS, HAS_PRUSA_MMU2S) - // Settings for filament load / unload from the LCD menu. - // This is for Průša MK3-style extruders. Customize for your hardware. - #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 - #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ - { 7.2, 1145 }, \ - { 14.4, 871 }, \ - { 36.0, 1393 }, \ - { 14.4, 871 }, \ - { 50.0, 198 } - #define MMU2_RAMMING_SEQUENCE \ - { 1.0, 1000 }, \ - { 1.0, 1500 }, \ - { 2.0, 2000 }, \ - { 1.5, 3000 }, \ - { 2.5, 4000 }, \ - { -15.0, 5000 }, \ - { -14.0, 1200 }, \ - { -6.0, 600 }, \ - { 10.0, 700 }, \ - { -10.0, 400 }, \ - { -50.0, 2000 } - #endif + // Settings for filament load / unload from the LCD menu. + // This is for Průša MK3-style extruders. Customize for your hardware. + #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 + #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ + { 7.2, 1145 }, \ + { 14.4, 871 }, \ + { 36.0, 1393 }, \ + { 14.4, 871 }, \ + { 50.0, 198 } + + #define MMU2_RAMMING_SEQUENCE \ + { 1.0, 1000 }, \ + { 1.0, 1500 }, \ + { 2.0, 2000 }, \ + { 1.5, 3000 }, \ + { 2.5, 4000 }, \ + { -15.0, 5000 }, \ + { -14.0, 1200 }, \ + { -6.0, 600 }, \ + { 10.0, 700 }, \ + { -10.0, 400 }, \ + { -50.0, 2000 } /** * Using a sensor like the MMU2S @@ -4296,6 +4295,8 @@ #define MMU2_CAN_LOAD_INCREMENT_SEQUENCE \ { -MMU2_CAN_LOAD_INCREMENT, MMU2_CAN_LOAD_FEEDRATE } + // Continue unloading if sensor detects filament after the initial unload move + //#define MMU_IR_UNLOAD_MOVE #else /** diff --git a/Marlin/src/feature/mmu/mmu2.cpp b/Marlin/src/feature/mmu/mmu2.cpp index ea58c2859b..8aec1dc1db 100644 --- a/Marlin/src/feature/mmu/mmu2.cpp +++ b/Marlin/src/feature/mmu/mmu2.cpp @@ -84,7 +84,7 @@ uint8_t MMU2::cmd, MMU2::cmd_arg, MMU2::last_cmd, MMU2::extruder; int8_t MMU2::state = 0; volatile int8_t MMU2::finda = 1; volatile bool MMU2::finda_runout_valid; -int16_t MMU2::version = -1, MMU2::buildnr = -1; +uint16_t MMU2::version = 0, MMU2::buildnr = 0; millis_t MMU2::prev_request, MMU2::prev_P0_request; char MMU2::rx_buffer[MMU_RX_SIZE], MMU2::tx_buffer[MMU_TX_SIZE]; @@ -93,14 +93,11 @@ struct E_Step { feedRate_t feedRate; //!< feed rate in mm/s }; -static constexpr E_Step - ramming_sequence[] PROGMEM = { MMU2_RAMMING_SEQUENCE } - , load_to_nozzle_sequence[] PROGMEM = { MMU2_LOAD_TO_NOZZLE_SEQUENCE } - #if HAS_PRUSA_MMU2S - , can_load_sequence[] PROGMEM = { MMU2_CAN_LOAD_SEQUENCE } - , can_load_increment_sequence[] PROGMEM = { MMU2_CAN_LOAD_INCREMENT_SEQUENCE } - #endif -; +inline void unscaled_mmu2_e_move(const float &dist, const feedRate_t fr_mm_s, const bool sync=true) { + current_position.e += dist / planner.e_factor[active_extruder]; + line_to_current_position(fr_mm_s); + if (sync) planner.synchronize(); +} MMU2::MMU2() { rx_buffer[0] = '\0'; @@ -136,12 +133,12 @@ void MMU2::reset() { #endif } -uint8_t MMU2::get_current_tool() { - return extruder == MMU2_NO_TOOL ? -1 : extruder; -} +int8_t MMU2::get_current_tool() { return extruder == MMU2_NO_TOOL ? -1 : extruder; } #if EITHER(HAS_PRUSA_MMU2S, MMU_EXTRUDER_SENSOR) #define FILAMENT_PRESENT() (READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE) +#else + #define FILAMENT_PRESENT() true #endif void mmu2_attn_buzz(const bool two=false) { @@ -200,15 +197,15 @@ void MMU2::mmu_loop() { break; #if ENABLED(MMU2_MODE_12V) - case -5: - // response to M1 - if (rx_ok()) { - DEBUG_ECHOLNPGM("MMU => ok"); - DEBUG_ECHOLNPGM("MMU <= 'P0'"); - MMU2_SEND("P0"); // Read FINDA - state = -4; - } - break; + case -5: + // response to M1 + if (rx_ok()) { + DEBUG_ECHOLNPGM("MMU => ok"); + DEBUG_ECHOLNPGM("MMU <= 'P0'"); + MMU2_SEND("P0"); // Read FINDA + state = -4; + } + break; #endif case -4: @@ -458,8 +455,15 @@ static void mmu2_not_responding() { BUZZ(100, 659); } +inline void beep_bad_cmd() { BUZZ(400, 40); } + #if HAS_PRUSA_MMU2S + /** + * Load filament until the sensor at the gears is triggered + * and give up after a number of attempts set with MMU2_C0_RETRY. + * Each try has a timeout before returning a fail state. + */ bool MMU2::load_to_gears() { command(MMU_CMD_C0); manage_response(true, true); @@ -484,6 +488,11 @@ static void mmu2_not_responding() { set_runout_valid(false); if (index != extruder) { + if (ENABLED(MMU_IR_UNLOAD_MOVE) && FILAMENT_PRESENT()) { + DEBUG_ECHOLNPGM("Unloading\n"); + while (FILAMENT_PRESENT()) // Filament present? Keep unloading. + unscaled_mmu2_e_move(-0.25, MMM_TO_MMS(120)); // 0.25mm is a guessed value. Adjust to preference. + } stepper.disable_extruder(); ui.status_printf(0, GET_TEXT_F(MSG_MMU2_LOADING_FILAMENT), int(index + 1)); @@ -520,9 +529,9 @@ static void mmu2_not_responding() { #if ENABLED(MMU2_MENUS) const uint8_t index = mmu2_choose_filament(); while (!thermalManager.wait_for_hotend(active_extruder, false)) safe_delay(100); - load_filament_to_nozzle(index); + load_to_nozzle(index); #else - ERR_BUZZ(); + beep_bad_cmd(); #endif } break; @@ -541,13 +550,13 @@ static void mmu2_not_responding() { active_extruder = 0; } #else - ERR_BUZZ(); + beep_bad_cmd(); #endif } break; case 'c': { while (!thermalManager.wait_for_hotend(active_extruder, false)) safe_delay(100); - load_to_nozzle(); + load_to_nozzle_sequence(); } break; } @@ -608,9 +617,9 @@ static void mmu2_not_responding() { #if ENABLED(MMU2_MENUS) uint8_t index = mmu2_choose_filament(); while (!thermalManager.wait_for_hotend(active_extruder, false)) safe_delay(100); - load_filament_to_nozzle(index); + load_to_nozzle(index); #else - ERR_BUZZ(); + beep_bad_cmd(); #endif } break; @@ -630,14 +639,14 @@ static void mmu2_not_responding() { extruder = index; active_extruder = 0; #else - ERR_BUZZ(); + beep_bad_cmd(); #endif } break; case 'c': { DEBUG_ECHOLNPGM("case c\n"); while (!thermalManager.wait_for_hotend(active_extruder, false)) safe_delay(100); - execute_extruder_sequence((const E_Step *)load_to_nozzle_sequence, COUNT(load_to_nozzle_sequence)); + load_to_nozzle_sequence(); } break; } @@ -723,9 +732,9 @@ static void mmu2_not_responding() { #if ENABLED(MMU2_MENUS) uint8_t index = mmu2_choose_filament(); while (!thermalManager.wait_for_hotend(active_extruder, false)) safe_delay(100); - load_filament_to_nozzle(index); + load_to_nozzle(index); #else - ERR_BUZZ(); + beep_bad_cmd(); #endif } break; @@ -744,14 +753,14 @@ static void mmu2_not_responding() { extruder = index; active_extruder = 0; #else - ERR_BUZZ(); + beep_bad_cmd(); #endif } break; case 'c': { DEBUG_ECHOLNPGM("case c\n"); while (!thermalManager.wait_for_hotend(active_extruder, false)) safe_delay(100); - execute_extruder_sequence((const E_Step *)load_to_nozzle_sequence, COUNT(load_to_nozzle_sequence)); + load_to_nozzle_sequence(); } break; } @@ -823,13 +832,12 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { } } else if (mmu_print_saved) { - SERIAL_ECHOLNPGM("MMU starts responding\n"); + SERIAL_ECHOLNPGM("\nMMU starts responding"); if (turn_off_nozzle && resume_hotend_temp) { thermalManager.setTargetHotend(resume_hotend_temp, active_extruder); LCD_MESSAGE(MSG_HEATING); ERR_BUZZ(); - while (!thermalManager.wait_for_hotend(active_extruder, false)) safe_delay(1000); } @@ -842,7 +850,6 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { if (move_axes && all_axes_homed()) { // Move XY to starting position, then Z do_blocking_move_to_xy(resume_position, feedRate_t(NOZZLE_PARK_XY_FEEDRATE)); - // Move Z_AXIS to saved position do_blocking_move_to_z(resume_position.z, feedRate_t(NOZZLE_PARK_Z_FEEDRATE)); } @@ -877,23 +884,24 @@ void MMU2::filament_runout() { } // Slowly spin the extruder during C0 else { - while (planner.movesplanned() < 3) { - current_position.e += 0.25; - line_to_current_position(MMM_TO_MMS(120)); - } + while (planner.movesplanned() < 3) + unscaled_mmu2_e_move(0.25, MMM_TO_MMS(120), false); } } mmu2s_triggered = present; } bool MMU2::can_load() { - execute_extruder_sequence((const E_Step *)can_load_sequence, COUNT(can_load_sequence)); + static const E_Step can_load_sequence[] PROGMEM = { MMU2_CAN_LOAD_SEQUENCE }, + can_load_increment_sequence[] PROGMEM = { MMU2_CAN_LOAD_INCREMENT_SEQUENCE }; + + execute_extruder_sequence(can_load_sequence, COUNT(can_load_sequence)); int filament_detected_count = 0; const int steps = (MMU2_CAN_LOAD_RETRACT) / (MMU2_CAN_LOAD_INCREMENT); DEBUG_ECHOLNPGM("MMU can_load:"); LOOP_L_N(i, steps) { - execute_extruder_sequence((const E_Step *)can_load_increment_sequence, COUNT(can_load_increment_sequence)); + execute_extruder_sequence(can_load_increment_sequence, COUNT(can_load_increment_sequence)); check_filament(); // Don't trust the idle function DEBUG_CHAR(mmu2s_triggered ? 'O' : 'o'); if (mmu2s_triggered) ++filament_detected_count; @@ -911,7 +919,7 @@ void MMU2::filament_runout() { #endif // Load filament into MMU2 -void MMU2::load_filament(const uint8_t index) { +void MMU2::load_to_feeder(const uint8_t index) { if (!_enabled) return; command(MMU_CMD_L0 + index); @@ -922,8 +930,7 @@ void MMU2::load_filament(const uint8_t index) { /** * Switch material and load to nozzle */ -bool MMU2::load_filament_to_nozzle(const uint8_t index) { - +bool MMU2::load_to_nozzle(const uint8_t index) { if (!_enabled) return false; if (thermalManager.tooColdToExtrude(active_extruder)) { @@ -932,6 +939,13 @@ bool MMU2::load_filament_to_nozzle(const uint8_t index) { return false; } + if (TERN0(MMU_IR_UNLOAD_MOVE, index != extruder) && FILAMENT_PRESENT()) { + DEBUG_ECHOLNPGM("Unloading\n"); + ramming_sequence(); // Unloading instructions from printer side when operating LCD + while (FILAMENT_PRESENT()) // Filament present? Keep unloading. + unscaled_mmu2_e_move(-0.25, MMM_TO_MMS(120)); // 0.25mm is a guessed value. Adjust to preference. + } + stepper.disable_extruder(); command(MMU_CMD_T0 + index); manage_response(true, true); @@ -941,23 +955,12 @@ bool MMU2::load_filament_to_nozzle(const uint8_t index) { mmu_loop(); extruder = index; active_extruder = 0; - load_to_nozzle(); + load_to_nozzle_sequence(); mmu2_attn_buzz(); } return success; } -/** - * Load filament to nozzle of multimaterial printer - * - * This function is used only after T? (user select filament) and M600 (change filament). - * It is not used after T0 .. T4 command (select filament), in such case, G-code is responsible for loading - * filament to nozzle. - */ -void MMU2::load_to_nozzle() { - execute_extruder_sequence((const E_Step *)load_to_nozzle_sequence, COUNT(load_to_nozzle_sequence)); -} - bool MMU2::eject_filament(const uint8_t index, const bool recover) { if (!_enabled) return false; @@ -970,10 +973,7 @@ bool MMU2::eject_filament(const uint8_t index, const bool recover) { LCD_MESSAGE(MSG_MMU2_EJECTING_FILAMENT); - stepper.enable_extruder(); - current_position.e -= MMU2_FILAMENTCHANGE_EJECT_FEED; - line_to_current_position(MMM_TO_MMS(2500)); - planner.synchronize(); + unscaled_mmu2_e_move(-(MMU2_FILAMENTCHANGE_EJECT_FEED), MMM_TO_MMS(2500)); command(MMU_CMD_E0 + index); manage_response(false, false); @@ -983,7 +983,7 @@ bool MMU2::eject_filament(const uint8_t index, const bool recover) { TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(GET_TEXT_F(MSG_MMU2_EJECT_RECOVER))); TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_MMU2_EJECT_RECOVER))); TERN_(HAS_RESUME_CONTINUE, wait_for_user_response()); - mmu2_attn_buzz(true); + mmu2_attn_buzz(); command(MMU_CMD_R0); manage_response(false, false); @@ -1017,7 +1017,7 @@ bool MMU2::unload() { } // Unload sequence to optimize shape of the tip of the unloaded filament - execute_extruder_sequence((const E_Step *)ramming_sequence, sizeof(ramming_sequence) / sizeof(E_Step)); + ramming_sequence(); command(MMU_CMD_U0); manage_response(false, true); @@ -1032,23 +1032,26 @@ bool MMU2::unload() { return true; } +void MMU2::ramming_sequence() { + static const E_Step sequence[] PROGMEM = { MMU2_RAMMING_SEQUENCE }; + execute_extruder_sequence(sequence, COUNT(sequence)); +} + +void MMU2::load_to_nozzle_sequence() { + static const E_Step sequence[] PROGMEM = { MMU2_LOAD_TO_NOZZLE_SEQUENCE }; + execute_extruder_sequence(sequence, COUNT(sequence)); +} + void MMU2::execute_extruder_sequence(const E_Step * sequence, int steps) { - planner.synchronize(); - stepper.enable_extruder(); - const E_Step* step = sequence; + const E_Step *step = sequence; LOOP_L_N(i, steps) { const float es = pgm_read_float(&(step->extrude)); const feedRate_t fr_mm_m = pgm_read_float(&(step->feedRate)); - DEBUG_ECHO_MSG("E step ", es, "/", fr_mm_m); - - current_position.e += es; - line_to_current_position(MMM_TO_MMS(fr_mm_m)); - planner.synchronize(); - + unscaled_mmu2_e_move(es, MMM_TO_MMS(fr_mm_m)); step++; } diff --git a/Marlin/src/feature/mmu/mmu2.h b/Marlin/src/feature/mmu/mmu2.h index 18d6d38a35..bebbae667e 100644 --- a/Marlin/src/feature/mmu/mmu2.h +++ b/Marlin/src/feature/mmu/mmu2.h @@ -47,13 +47,12 @@ public: static void mmu_loop(); static void tool_change(const uint8_t index); static void tool_change(const char *special); - static uint8_t get_current_tool(); + static int8_t get_current_tool(); static void set_filament_type(const uint8_t index, const uint8_t type); static bool unload(); - static void load_filament(uint8_t); - static void load_all(); - static bool load_filament_to_nozzle(const uint8_t index); + static void load_to_feeder(const uint8_t index); + static bool load_to_nozzle(const uint8_t index); static bool eject_filament(const uint8_t index, const bool recover); private: @@ -71,8 +70,9 @@ private: static bool get_response(); static void manage_response(const bool move_axes, const bool turn_off_nozzle); - static void load_to_nozzle(); static void execute_extruder_sequence(const E_Step * sequence, int steps); + static void ramming_sequence(); + static void load_to_nozzle_sequence(); static void filament_runout(); @@ -96,7 +96,7 @@ private: static int8_t state; static volatile int8_t finda; static volatile bool finda_runout_valid; - static int16_t version, buildnr; + static uint16_t version, buildnr; static millis_t prev_request, prev_P0_request; static char rx_buffer[MMU_RX_SIZE], tx_buffer[MMU_TX_SIZE]; diff --git a/Marlin/src/gcode/feature/pause/M701_M702.cpp b/Marlin/src/gcode/feature/pause/M701_M702.cpp index 2afc5c36a0..6ec560f5c6 100644 --- a/Marlin/src/gcode/feature/pause/M701_M702.cpp +++ b/Marlin/src/gcode/feature/pause/M701_M702.cpp @@ -102,7 +102,7 @@ void GcodeSuite::M701() { // Load filament #if HAS_PRUSA_MMU2 - mmu2.load_filament_to_nozzle(target_extruder); + mmu2.load_to_nozzle(target_extruder); #else constexpr float purge_length = ADVANCED_PAUSE_PURGE_LENGTH, slow_load_length = FILAMENT_CHANGE_SLOW_LOAD_LENGTH; diff --git a/Marlin/src/lcd/menu/menu_mmu2.cpp b/Marlin/src/lcd/menu/menu_mmu2.cpp index 22230687e4..a6ce147024 100644 --- a/Marlin/src/lcd/menu/menu_mmu2.cpp +++ b/Marlin/src/lcd/menu/menu_mmu2.cpp @@ -33,20 +33,19 @@ // Load Filament // -inline void action_mmu2_load_filament_to_nozzle(const uint8_t tool) { - ui.reset_status(); +inline void action_mmu2_load_to_nozzle(const uint8_t tool) { ui.return_to_status(); ui.status_printf(0, GET_TEXT_F(MSG_MMU2_LOADING_FILAMENT), int(tool + 1)); - if (mmu2.load_filament_to_nozzle(tool)) ui.reset_status(); - ui.return_to_status(); + if (mmu2.load_to_nozzle(tool)) ui.reset_status(); } -void _mmu2_load_filament(uint8_t index) { +void _mmu2_load_to_feeder(const uint8_t index) { ui.return_to_status(); ui.status_printf(0, GET_TEXT_F(MSG_MMU2_LOADING_FILAMENT), int(index + 1)); - mmu2.load_filament(index); + mmu2.load_to_feeder(index); ui.reset_status(); } + void action_mmu2_load_all() { EXTRUDER_LOOP() _mmu2_load_filament(e); ui.return_to_status(); @@ -56,14 +55,14 @@ void menu_mmu2_load_filament() { START_MENU(); BACK_ITEM(MSG_MMU2_MENU); ACTION_ITEM(MSG_MMU2_ALL, action_mmu2_load_all); - EXTRUDER_LOOP() ACTION_ITEM_N(e, MSG_MMU2_FILAMENT_N, []{ _mmu2_load_filament(MenuItemBase::itemIndex); }); + EXTRUDER_LOOP() ACTION_ITEM_N(e, MSG_MMU2_FILAMENT_N, []{ _mmu2_load_to_feeder(MenuItemBase::itemIndex); }); END_MENU(); } void menu_mmu2_load_to_nozzle() { START_MENU(); BACK_ITEM(MSG_MMU2_MENU); - EXTRUDER_LOOP() ACTION_ITEM_N(e, MSG_MMU2_FILAMENT_N, []{ action_mmu2_load_filament_to_nozzle(MenuItemBase::itemIndex); }); + EXTRUDER_LOOP() ACTION_ITEM_N(e, MSG_MMU2_FILAMENT_N, []{ action_mmu2_load_to_nozzle(MenuItemBase::itemIndex); }); END_MENU(); } @@ -117,7 +116,7 @@ void menu_mmu2() { // T* Choose Filament // -uint8_t feeder_index; +int8_t feeder_index; bool wait_for_mmu_menu; inline void action_mmu2_chosen(const uint8_t index) { @@ -144,10 +143,10 @@ void menu_mmu2_pause() { #if LCD_HEIGHT > 2 STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, SS_DEFAULT|SS_INVERT); #endif - ACTION_ITEM(MSG_MMU2_RESUME, []{ wait_for_mmu_menu = false; }); + ACTION_ITEM(MSG_MMU2_RESUME, []{ wait_for_mmu_menu = false; }); ACTION_ITEM(MSG_MMU2_UNLOAD_FILAMENT, []{ mmu2.unload(); }); - ACTION_ITEM(MSG_MMU2_LOAD_FILAMENT, []{ mmu2.load_filament(feeder_index); }); - ACTION_ITEM(MSG_MMU2_LOAD_TO_NOZZLE, []{ mmu2.load_filament_to_nozzle(feeder_index); }); + ACTION_ITEM(MSG_MMU2_LOAD_FILAMENT, []{ mmu2.load_to_feeder(feeder_index); }); + ACTION_ITEM(MSG_MMU2_LOAD_TO_NOZZLE, []{ mmu2.load_to_nozzle(feeder_index); }); END_MENU(); } diff --git a/buildroot/tests/rambo b/buildroot/tests/rambo index 475b2daf87..c0784b95a0 100755 --- a/buildroot/tests/rambo +++ b/buildroot/tests/rambo @@ -73,6 +73,14 @@ opt_set MOTHERBOARD BOARD_RAMBO EXTRUDERS 0 TEMP_SENSOR_BED 1 TEMP_SENSOR_PROBE opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER FIX_MOUNTED_PROBE Z_SAFE_HOMING exec_test $1 $2 "Rambo heated bed only" "$3" +# +# Rambo with MMU2 +# +restore_configs +opt_set MOTHERBOARD BOARD_RAMBO EXTRUDERS 5 MMU_MODEL PRUSA_MMU2 +opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE EMERGENCY_PARSER MMU2_DEBUG +exec_test $1 $2 "Rambo with PRUSA_MMU2 " "$3" + # # Build with the default configurations # From e5dfb44fe013c4b242efbc0d536b0bb679effdcc Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 5 May 2023 00:19:55 +0000 Subject: [PATCH 374/659] [cron] Bump distribution date (2023-05-05) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 4a59b3b3a0..8bf3b8b0bd 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-04" +//#define STRING_DISTRIBUTION_DATE "2023-05-05" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index c8ed9bc956..ff2447bfd0 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-04" + #define STRING_DISTRIBUTION_DATE "2023-05-05" #endif /** From 4e2b5b2523cc22700b0b71e6dc8c83fbd8a0b52b Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Fri, 5 May 2023 04:30:51 +0200 Subject: [PATCH 375/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20Extensible=20MMU?= =?UTF-8?q?=20for=20>8=20colors=20(#25772)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/MarlinCore.cpp | 42 +++--------------------- Marlin/src/gcode/control/M17_M18_M84.cpp | 2 +- Marlin/src/module/stepper.h | 17 ++++++++-- 3 files changed, 19 insertions(+), 42 deletions(-) diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index e478a35445..5b4d33609d 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -676,28 +676,9 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) { && ELAPSED(ms, gcode.previous_move_ms + SEC_TO_MS(EXTRUDER_RUNOUT_SECONDS)) && !planner.has_blocks_queued() ) { - #if HAS_SWITCHING_EXTRUDER - bool oldstatus; - switch (active_extruder) { - default: oldstatus = stepper.AXIS_IS_ENABLED(E_AXIS, 0); stepper.ENABLE_EXTRUDER(0); break; - #if E_STEPPERS > 1 - case 2: case 3: oldstatus = stepper.AXIS_IS_ENABLED(E_AXIS, 1); stepper.ENABLE_EXTRUDER(1); break; - #if E_STEPPERS > 2 - case 4: case 5: oldstatus = stepper.AXIS_IS_ENABLED(E_AXIS, 2); stepper.ENABLE_EXTRUDER(2); break; - #if E_STEPPERS > 3 - case 6: case 7: oldstatus = stepper.AXIS_IS_ENABLED(E_AXIS, 3); stepper.ENABLE_EXTRUDER(3); break; - #endif // E_STEPPERS > 3 - #endif // E_STEPPERS > 2 - #endif // E_STEPPERS > 1 - } - #else // !HAS_SWITCHING_EXTRUDER - bool oldstatus; - switch (active_extruder) { - default: - #define _CASE_EN(N) case N: oldstatus = stepper.AXIS_IS_ENABLED(E_AXIS, N); stepper.ENABLE_EXTRUDER(N); break; - REPEAT(E_STEPPERS, _CASE_EN); - } - #endif + const int8_t e_stepper = TERN(HAS_SWITCHING_EXTRUDER, active_extruder >> 1, active_extruder); + const bool e_off = !stepper.AXIS_IS_ENABLED(E_AXIS, e_stepper); + if (e_off) stepper.ENABLE_EXTRUDER(e_stepper); const float olde = current_position.e; current_position.e += EXTRUDER_RUNOUT_EXTRUDE; @@ -706,22 +687,7 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) { planner.set_e_position_mm(olde); planner.synchronize(); - #if HAS_SWITCHING_EXTRUDER - switch (active_extruder) { - default: if (oldstatus) stepper.ENABLE_EXTRUDER(0); else stepper.DISABLE_EXTRUDER(0); break; - #if E_STEPPERS > 1 - case 2: case 3: if (oldstatus) stepper.ENABLE_EXTRUDER(1); else stepper.DISABLE_EXTRUDER(1); break; - #if E_STEPPERS > 2 - case 4: case 5: if (oldstatus) stepper.ENABLE_EXTRUDER(2); else stepper.DISABLE_EXTRUDER(2); break; - #endif // E_STEPPERS > 2 - #endif // E_STEPPERS > 1 - } - #else // !HAS_SWITCHING_EXTRUDER - switch (active_extruder) { - #define _CASE_RESTORE(N) case N: if (oldstatus) stepper.ENABLE_EXTRUDER(N); else stepper.DISABLE_EXTRUDER(N); break; - REPEAT(E_STEPPERS, _CASE_RESTORE); - } - #endif // !HAS_SWITCHING_EXTRUDER + if (e_off) stepper.DISABLE_EXTRUDER(e_stepper); gcode.reset_stepper_timeout(ms); } diff --git a/Marlin/src/gcode/control/M17_M18_M84.cpp b/Marlin/src/gcode/control/M17_M18_M84.cpp index 76fc335e25..053497c69c 100644 --- a/Marlin/src/gcode/control/M17_M18_M84.cpp +++ b/Marlin/src/gcode/control/M17_M18_M84.cpp @@ -71,7 +71,7 @@ void do_enable(const stepper_flags_t to_enable) { if (!shall_enable) return; // All specified axes already enabled? - ena_mask_t also_enabled = 0; // Track steppers enabled due to overlap + ena_mask_t also_enabled = 0; // Track steppers enabled due to overlap // Enable all flagged axes LOOP_NUM_AXES(a) { diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 63285398cd..14b8a96daa 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -255,8 +255,19 @@ // This does not account for the possibility of multi-stepping. #define MIN_STEP_ISR_FREQUENCY (MAX_STEP_ISR_FREQUENCY_1X >> 1) +// TODO: Review and ensure proper handling for special E axes with commands like M17/M18, stepper timeout, etc. +#if ENABLED(MIXING_EXTRUDER) + #define E_STATES EXTRUDERS // All steppers are set together for each mixer. (Currently limited to 1.) +#elif HAS_SWITCHING_EXTRUDER + #define E_STATES E_STEPPERS // One stepper for every two EXTRUDERS. The last extruder can be non-switching. +#elif HAS_PRUSA_MMU2 + #define E_STATES E_STEPPERS // One E stepper shared with all EXTRUDERS, so setting any only sets one. +#else + #define E_STATES E_STEPPERS // One stepper for each extruder, so each can be disabled individually. +#endif + // Number of axes that could be enabled/disabled. Dual/multiple steppers are combined. -#define ENABLE_COUNT (NUM_AXES + E_STEPPERS) +#define ENABLE_COUNT (NUM_AXES + E_STATES) typedef bits_t(ENABLE_COUNT) ena_mask_t; // Axis flags type, for enabled state or other simple state @@ -265,8 +276,8 @@ typedef struct { ena_mask_t bits; struct { bool NUM_AXIS_LIST(X:1, Y:1, Z:1, I:1, J:1, K:1, U:1, V:1, W:1); - #if HAS_EXTRUDERS - bool LIST_N(EXTRUDERS, E0:1, E1:1, E2:1, E3:1, E4:1, E5:1, E6:1, E7:1); + #if E_STATES + bool LIST_N(E_STATES, E0:1, E1:1, E2:1, E3:1, E4:1, E5:1, E6:1, E7:1); #endif }; }; From 673e6d5380017f6cb30e75a3cc0c9d7385bf2654 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 4 May 2023 21:32:46 -0500 Subject: [PATCH 376/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Spl?= =?UTF-8?q?it=20up=20stepper.h=20header?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.cpp | 1 + Marlin/src/module/stepper.h | 202 -------------------------- Marlin/src/module/stepper/cycles.h | 223 +++++++++++++++++++++++++++++ 3 files changed, 224 insertions(+), 202 deletions(-) create mode 100644 Marlin/src/module/stepper/cycles.h diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 790b118c6d..bda5319dfc 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -83,6 +83,7 @@ Stepper stepper; // Singleton #define BABYSTEPPING_EXTRA_DIR_WAIT +#include "stepper/cycles.h" #ifdef __AVR__ #include "stepper/speed_lookuptable.h" #endif diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 14b8a96daa..7a591d2954 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -53,208 +53,6 @@ #include "ft_types.h" #endif -// -// Estimate the amount of time the Stepper ISR will take to execute -// - -/** - * The method of calculating these cycle-constants is unclear. - * Most of them are no longer used directly for pulse timing, and exist - * only to estimate a maximum step rate based on the user's configuration. - * As 32-bit processors continue to diverge, maintaining cycle counts - * will become increasingly difficult and error-prone. - */ - -#ifdef CPU_32_BIT - /** - * Duration of START_TIMED_PULSE - * - * ...as measured on an LPC1768 with a scope and converted to cycles. - * Not applicable to other 32-bit processors, but as long as others - * take longer, pulses will be longer. For example the SKR Pro - * (stm32f407zgt6) requires ~60 cyles. - */ - #define TIMER_READ_ADD_AND_STORE_CYCLES 34UL - - // The base ISR - #define ISR_BASE_CYCLES 770UL - - // Linear advance base time is 64 cycles - #if ENABLED(LIN_ADVANCE) - #define ISR_LA_BASE_CYCLES 64UL - #else - #define ISR_LA_BASE_CYCLES 0UL - #endif - - // S curve interpolation adds 40 cycles - #if ENABLED(S_CURVE_ACCELERATION) - #ifdef STM32G0B1xx - #define ISR_S_CURVE_CYCLES 500UL - #else - #define ISR_S_CURVE_CYCLES 40UL - #endif - #else - #define ISR_S_CURVE_CYCLES 0UL - #endif - - // Input shaping base time - #if HAS_ZV_SHAPING - #define ISR_SHAPING_BASE_CYCLES 180UL - #else - #define ISR_SHAPING_BASE_CYCLES 0UL - #endif - - // Stepper Loop base cycles - #define ISR_LOOP_BASE_CYCLES 4UL - - // And each stepper (start + stop pulse) takes in worst case - #define ISR_STEPPER_CYCLES 100UL - -#else - // Cycles to perform actions in START_TIMED_PULSE - #define TIMER_READ_ADD_AND_STORE_CYCLES 13UL - - // The base ISR - #define ISR_BASE_CYCLES 882UL - - // Linear advance base time is 32 cycles - #if ENABLED(LIN_ADVANCE) - #define ISR_LA_BASE_CYCLES 30UL - #else - #define ISR_LA_BASE_CYCLES 0UL - #endif - - // S curve interpolation adds 160 cycles - #if ENABLED(S_CURVE_ACCELERATION) - #define ISR_S_CURVE_CYCLES 160UL - #else - #define ISR_S_CURVE_CYCLES 0UL - #endif - - // Input shaping base time - #if HAS_ZV_SHAPING - #define ISR_SHAPING_BASE_CYCLES 290UL - #else - #define ISR_SHAPING_BASE_CYCLES 0UL - #endif - - // Stepper Loop base cycles - #define ISR_LOOP_BASE_CYCLES 32UL - - // And each stepper (start + stop pulse) takes in worst case - #define ISR_STEPPER_CYCLES 60UL - -#endif - -// If linear advance is disabled, the loop also handles them -#if DISABLED(LIN_ADVANCE) && ENABLED(MIXING_EXTRUDER) - #define ISR_MIXING_STEPPER_CYCLES ((MIXING_STEPPERS) * (ISR_STEPPER_CYCLES)) -#else - #define ISR_MIXING_STEPPER_CYCLES 0UL -#endif - -// Add time for each stepper -#if HAS_X_STEP - #define ISR_X_STEPPER_CYCLES ISR_STEPPER_CYCLES -#endif -#if HAS_Y_STEP - #define ISR_Y_STEPPER_CYCLES ISR_STEPPER_CYCLES -#endif -#if HAS_Z_STEP - #define ISR_Z_STEPPER_CYCLES ISR_STEPPER_CYCLES -#endif -#if HAS_I_STEP - #define ISR_I_STEPPER_CYCLES ISR_STEPPER_CYCLES -#endif -#if HAS_J_STEP - #define ISR_J_STEPPER_CYCLES ISR_STEPPER_CYCLES -#endif -#if HAS_K_STEP - #define ISR_K_STEPPER_CYCLES ISR_STEPPER_CYCLES -#endif -#if HAS_U_STEP - #define ISR_U_STEPPER_CYCLES ISR_STEPPER_CYCLES -#endif -#if HAS_V_STEP - #define ISR_V_STEPPER_CYCLES ISR_STEPPER_CYCLES -#endif -#if HAS_W_STEP - #define ISR_W_STEPPER_CYCLES ISR_STEPPER_CYCLES -#endif -#if HAS_EXTRUDERS - #define ISR_E_STEPPER_CYCLES ISR_STEPPER_CYCLES // E is always interpolated, even for mixing extruders -#endif - -// And the total minimum loop time, not including the base -#define _PLUS_AXIS_CYCLES(A) + (ISR_##A##_STEPPER_CYCLES) -#define MIN_ISR_LOOP_CYCLES (ISR_MIXING_STEPPER_CYCLES LOGICAL_AXIS_MAP(_PLUS_AXIS_CYCLES)) - -// Calculate the minimum MPU cycles needed per pulse to enforce, limited to the max stepper rate -#define _MIN_STEPPER_PULSE_CYCLES(N) _MAX(uint32_t((F_CPU) / (MAXIMUM_STEPPER_RATE)), ((F_CPU) / 500000UL) * (N)) -#if MINIMUM_STEPPER_PULSE - #define MIN_STEPPER_PULSE_CYCLES _MIN_STEPPER_PULSE_CYCLES(uint32_t(MINIMUM_STEPPER_PULSE)) -#elif HAS_DRIVER(LV8729) - #define MIN_STEPPER_PULSE_CYCLES uint32_t((((F_CPU) - 1) / 2000000) + 1) // 0.5µs, aka 500ns -#else - #define MIN_STEPPER_PULSE_CYCLES _MIN_STEPPER_PULSE_CYCLES(1UL) -#endif - -// Calculate the minimum pulse times (high and low) -#if MINIMUM_STEPPER_PULSE && MAXIMUM_STEPPER_RATE - constexpr uint32_t _MIN_STEP_PERIOD_NS = 1000000000UL / MAXIMUM_STEPPER_RATE; - constexpr uint32_t _MIN_PULSE_HIGH_NS = 1000UL * MINIMUM_STEPPER_PULSE; - constexpr uint32_t _MIN_PULSE_LOW_NS = _MAX((_MIN_STEP_PERIOD_NS - _MIN(_MIN_STEP_PERIOD_NS, _MIN_PULSE_HIGH_NS)), _MIN_PULSE_HIGH_NS); -#elif MINIMUM_STEPPER_PULSE - // Assume 50% duty cycle - constexpr uint32_t _MIN_PULSE_HIGH_NS = 1000UL * MINIMUM_STEPPER_PULSE; - constexpr uint32_t _MIN_PULSE_LOW_NS = _MIN_PULSE_HIGH_NS; -#elif MAXIMUM_STEPPER_RATE - // Assume 50% duty cycle - constexpr uint32_t _MIN_PULSE_HIGH_NS = 500000000UL / MAXIMUM_STEPPER_RATE; - constexpr uint32_t _MIN_PULSE_LOW_NS = _MIN_PULSE_HIGH_NS; -#else - #error "Expected at least one of MINIMUM_STEPPER_PULSE or MAXIMUM_STEPPER_RATE to be defined" -#endif - -// The loop takes the base time plus the time for all the bresenham logic for 1 << R pulses plus the time -// between pulses for ((1 << R) - 1) pulses. But the user could be enforcing a minimum time so the loop time is: -#define ISR_LOOP_CYCLES(R) ((ISR_LOOP_BASE_CYCLES + MIN_ISR_LOOP_CYCLES + MIN_STEPPER_PULSE_CYCLES) * ((1UL << R) - 1) + _MAX(MIN_ISR_LOOP_CYCLES, MIN_STEPPER_PULSE_CYCLES)) - -// Model input shaping as an extra loop call -#define ISR_SHAPING_LOOP_CYCLES(R) (TERN0(HAS_ZV_SHAPING, (ISR_LOOP_BASE_CYCLES + TERN0(INPUT_SHAPING_X, ISR_X_STEPPER_CYCLES) + TERN0(INPUT_SHAPING_Y, ISR_Y_STEPPER_CYCLES)) << R)) - -// If linear advance is enabled, then it is handled separately -#if ENABLED(LIN_ADVANCE) - - // Estimate the minimum LA loop time - #if ENABLED(MIXING_EXTRUDER) // ToDo: ??? - // HELP ME: What is what? - // Directions are set up for MIXING_STEPPERS - like before. - // Finding the right stepper may last up to MIXING_STEPPERS loops in get_next_stepper(). - // These loops are a bit faster than advancing a bresenham counter. - // Always only one E stepper is stepped. - #define MIN_ISR_LA_LOOP_CYCLES ((MIXING_STEPPERS) * (ISR_STEPPER_CYCLES)) - #else - #define MIN_ISR_LA_LOOP_CYCLES ISR_STEPPER_CYCLES - #endif - - // And the real loop time - #define ISR_LA_LOOP_CYCLES _MAX(MIN_STEPPER_PULSE_CYCLES, MIN_ISR_LA_LOOP_CYCLES) - -#else - #define ISR_LA_LOOP_CYCLES 0UL -#endif - -// Estimate the total ISR execution time in cycles given a step-per-ISR shift multiplier -#define ISR_EXECUTION_CYCLES(R) ((ISR_BASE_CYCLES + ISR_S_CURVE_CYCLES + ISR_SHAPING_BASE_CYCLES + ISR_LOOP_CYCLES(R) + ISR_SHAPING_LOOP_CYCLES(R) + ISR_LA_BASE_CYCLES + ISR_LA_LOOP_CYCLES) >> R) - -// The maximum allowable stepping frequency when doing 1x stepping (in Hz) -#define MAX_STEP_ISR_FREQUENCY_1X ((F_CPU) / ISR_EXECUTION_CYCLES(0)) - -// The minimum step ISR rate used by ADAPTIVE_STEP_SMOOTHING to target 50% CPU usage -// This does not account for the possibility of multi-stepping. -#define MIN_STEP_ISR_FREQUENCY (MAX_STEP_ISR_FREQUENCY_1X >> 1) - // TODO: Review and ensure proper handling for special E axes with commands like M17/M18, stepper timeout, etc. #if ENABLED(MIXING_EXTRUDER) #define E_STATES EXTRUDERS // All steppers are set together for each mixer. (Currently limited to 1.) diff --git a/Marlin/src/module/stepper/cycles.h b/Marlin/src/module/stepper/cycles.h new file mode 100644 index 0000000000..dae9e7c62c --- /dev/null +++ b/Marlin/src/module/stepper/cycles.h @@ -0,0 +1,223 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * cycles.h - Cycle counting for the Stepper ISR + * + * Estimate the amount of time the Stepper ISR will take to execute. + * + * These cycle counts are rough estimates used to determine whether the ISR + * has enough time to do all its work before it should yield back to userland. + * These constants may be updated as data is gathered from a variety of MCUs. + */ + +#ifdef CPU_32_BIT + /** + * Duration of START_TIMED_PULSE + * + * ...as measured on an LPC1768 with a scope and converted to cycles. + * Not applicable to other 32-bit processors, but as long as others + * take longer, pulses will be longer. For example the SKR Pro + * (stm32f407zgt6) requires ~60 cyles. + */ + #define TIMER_READ_ADD_AND_STORE_CYCLES 34UL + + // The base ISR + #define ISR_BASE_CYCLES 770UL + + // Linear advance base time is 64 cycles + #if ENABLED(LIN_ADVANCE) + #define ISR_LA_BASE_CYCLES 64UL + #else + #define ISR_LA_BASE_CYCLES 0UL + #endif + + // S curve interpolation adds 40 cycles + #if ENABLED(S_CURVE_ACCELERATION) + #ifdef STM32G0B1xx + #define ISR_S_CURVE_CYCLES 500UL + #else + #define ISR_S_CURVE_CYCLES 40UL + #endif + #else + #define ISR_S_CURVE_CYCLES 0UL + #endif + + // Input shaping base time + #if HAS_ZV_SHAPING + #define ISR_SHAPING_BASE_CYCLES 180UL + #else + #define ISR_SHAPING_BASE_CYCLES 0UL + #endif + + // Stepper Loop base cycles + #define ISR_LOOP_BASE_CYCLES 4UL + + // And each stepper (start + stop pulse) takes in worst case + #define ISR_STEPPER_CYCLES 100UL + +#else + + // Cycles to perform actions in START_TIMED_PULSE + #define TIMER_READ_ADD_AND_STORE_CYCLES 13UL + + // The base ISR + #define ISR_BASE_CYCLES 882UL + + // Linear advance base time is 32 cycles + #if ENABLED(LIN_ADVANCE) + #define ISR_LA_BASE_CYCLES 30UL + #else + #define ISR_LA_BASE_CYCLES 0UL + #endif + + // S curve interpolation adds 160 cycles + #if ENABLED(S_CURVE_ACCELERATION) + #define ISR_S_CURVE_CYCLES 160UL + #else + #define ISR_S_CURVE_CYCLES 0UL + #endif + + // Input shaping base time + #if HAS_ZV_SHAPING + #define ISR_SHAPING_BASE_CYCLES 290UL + #else + #define ISR_SHAPING_BASE_CYCLES 0UL + #endif + + // Stepper Loop base cycles + #define ISR_LOOP_BASE_CYCLES 32UL + + // And each stepper (start + stop pulse) takes in worst case + #define ISR_STEPPER_CYCLES 60UL + +#endif + +// If linear advance is disabled, the loop also handles them +#if DISABLED(LIN_ADVANCE) && ENABLED(MIXING_EXTRUDER) + #define ISR_MIXING_STEPPER_CYCLES ((MIXING_STEPPERS) * (ISR_STEPPER_CYCLES)) +#else + #define ISR_MIXING_STEPPER_CYCLES 0UL +#endif + +// Add time for each stepper +#if HAS_X_STEP + #define ISR_X_STEPPER_CYCLES ISR_STEPPER_CYCLES +#endif +#if HAS_Y_STEP + #define ISR_Y_STEPPER_CYCLES ISR_STEPPER_CYCLES +#endif +#if HAS_Z_STEP + #define ISR_Z_STEPPER_CYCLES ISR_STEPPER_CYCLES +#endif +#if HAS_I_STEP + #define ISR_I_STEPPER_CYCLES ISR_STEPPER_CYCLES +#endif +#if HAS_J_STEP + #define ISR_J_STEPPER_CYCLES ISR_STEPPER_CYCLES +#endif +#if HAS_K_STEP + #define ISR_K_STEPPER_CYCLES ISR_STEPPER_CYCLES +#endif +#if HAS_U_STEP + #define ISR_U_STEPPER_CYCLES ISR_STEPPER_CYCLES +#endif +#if HAS_V_STEP + #define ISR_V_STEPPER_CYCLES ISR_STEPPER_CYCLES +#endif +#if HAS_W_STEP + #define ISR_W_STEPPER_CYCLES ISR_STEPPER_CYCLES +#endif +#if HAS_EXTRUDERS + #define ISR_E_STEPPER_CYCLES ISR_STEPPER_CYCLES // E is always interpolated, even for mixing extruders +#endif + +// And the total minimum loop time, not including the base +#define _PLUS_AXIS_CYCLES(A) + (ISR_##A##_STEPPER_CYCLES) +#define MIN_ISR_LOOP_CYCLES (ISR_MIXING_STEPPER_CYCLES LOGICAL_AXIS_MAP(_PLUS_AXIS_CYCLES)) + +// Calculate the minimum MPU cycles needed per pulse to enforce, limited to the max stepper rate +#define _MIN_STEPPER_PULSE_CYCLES(N) _MAX(uint32_t((F_CPU) / (MAXIMUM_STEPPER_RATE)), ((F_CPU) / 500000UL) * (N)) +#if MINIMUM_STEPPER_PULSE + #define MIN_STEPPER_PULSE_CYCLES _MIN_STEPPER_PULSE_CYCLES(uint32_t(MINIMUM_STEPPER_PULSE)) +#elif HAS_DRIVER(LV8729) + #define MIN_STEPPER_PULSE_CYCLES uint32_t((((F_CPU) - 1) / 2000000) + 1) // 0.5µs, aka 500ns +#else + #define MIN_STEPPER_PULSE_CYCLES _MIN_STEPPER_PULSE_CYCLES(1UL) +#endif + +// Calculate the minimum pulse times (high and low) +#if MINIMUM_STEPPER_PULSE && MAXIMUM_STEPPER_RATE + constexpr uint32_t _MIN_STEP_PERIOD_NS = 1000000000UL / MAXIMUM_STEPPER_RATE; + constexpr uint32_t _MIN_PULSE_HIGH_NS = 1000UL * MINIMUM_STEPPER_PULSE; + constexpr uint32_t _MIN_PULSE_LOW_NS = _MAX((_MIN_STEP_PERIOD_NS - _MIN(_MIN_STEP_PERIOD_NS, _MIN_PULSE_HIGH_NS)), _MIN_PULSE_HIGH_NS); +#elif MINIMUM_STEPPER_PULSE + // Assume 50% duty cycle + constexpr uint32_t _MIN_PULSE_HIGH_NS = 1000UL * MINIMUM_STEPPER_PULSE; + constexpr uint32_t _MIN_PULSE_LOW_NS = _MIN_PULSE_HIGH_NS; +#elif MAXIMUM_STEPPER_RATE + // Assume 50% duty cycle + constexpr uint32_t _MIN_PULSE_HIGH_NS = 500000000UL / MAXIMUM_STEPPER_RATE; + constexpr uint32_t _MIN_PULSE_LOW_NS = _MIN_PULSE_HIGH_NS; +#else + #error "Expected at least one of MINIMUM_STEPPER_PULSE or MAXIMUM_STEPPER_RATE to be defined" +#endif + +// The loop takes the base time plus the time for all the bresenham logic for 1 << R pulses plus the time +// between pulses for ((1 << R) - 1) pulses. But the user could be enforcing a minimum time so the loop time is: +#define ISR_LOOP_CYCLES(R) ((ISR_LOOP_BASE_CYCLES + MIN_ISR_LOOP_CYCLES + MIN_STEPPER_PULSE_CYCLES) * ((1UL << R) - 1) + _MAX(MIN_ISR_LOOP_CYCLES, MIN_STEPPER_PULSE_CYCLES)) + +// Model input shaping as an extra loop call +#define ISR_SHAPING_LOOP_CYCLES(R) (TERN0(HAS_ZV_SHAPING, (ISR_LOOP_BASE_CYCLES + TERN0(INPUT_SHAPING_X, ISR_X_STEPPER_CYCLES) + TERN0(INPUT_SHAPING_Y, ISR_Y_STEPPER_CYCLES)) << R)) + +// If linear advance is enabled, then it is handled separately +#if ENABLED(LIN_ADVANCE) + + // Estimate the minimum LA loop time + #if ENABLED(MIXING_EXTRUDER) // ToDo: ??? + // HELP ME: What is what? + // Directions are set up for MIXING_STEPPERS - like before. + // Finding the right stepper may last up to MIXING_STEPPERS loops in get_next_stepper(). + // These loops are a bit faster than advancing a bresenham counter. + // Always only one E stepper is stepped. + #define MIN_ISR_LA_LOOP_CYCLES ((MIXING_STEPPERS) * (ISR_STEPPER_CYCLES)) + #else + #define MIN_ISR_LA_LOOP_CYCLES ISR_STEPPER_CYCLES + #endif + + // And the real loop time + #define ISR_LA_LOOP_CYCLES _MAX(MIN_STEPPER_PULSE_CYCLES, MIN_ISR_LA_LOOP_CYCLES) + +#else + #define ISR_LA_LOOP_CYCLES 0UL +#endif + +// Estimate the total ISR execution time in cycles given a step-per-ISR shift multiplier +#define ISR_EXECUTION_CYCLES(R) ((ISR_BASE_CYCLES + ISR_S_CURVE_CYCLES + ISR_SHAPING_BASE_CYCLES + ISR_LOOP_CYCLES(R) + ISR_SHAPING_LOOP_CYCLES(R) + ISR_LA_BASE_CYCLES + ISR_LA_LOOP_CYCLES) >> R) + +// The maximum allowable stepping frequency when doing 1x stepping (in Hz) +#define MAX_STEP_ISR_FREQUENCY_1X ((F_CPU) / ISR_EXECUTION_CYCLES(0)) + +// The minimum step ISR rate used by ADAPTIVE_STEP_SMOOTHING to target 50% CPU usage +// This does not account for the possibility of multi-stepping. +#define MIN_STEP_ISR_FREQUENCY (MAX_STEP_ISR_FREQUENCY_1X >> 1) From 5abb594f01c5bb6c424eb1d50e1f13a90cc9c8f4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 5 May 2023 02:01:41 -0500 Subject: [PATCH 377/659] =?UTF-8?q?=F0=9F=94=A7=20TMC=20Config=20Inheritan?= =?UTF-8?q?ce?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 58 +++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 4567d5b4c1..6f81aa4051 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2856,10 +2856,10 @@ #endif #if AXIS_IS_TMC_CONFIG(X2) - #define X2_CURRENT 800 + #define X2_CURRENT X_CURRENT #define X2_CURRENT_HOME X2_CURRENT - #define X2_MICROSTEPS X_MICROSTEPS - #define X2_RSENSE 0.11 + #define X2_MICROSTEPS X_MICROSTEPS + #define X2_RSENSE X_RSENSE #define X2_CHAIN_POS -1 //#define X2_INTERPOLATE true //#define X2_HOLD_MULTIPLIER 0.5 @@ -2876,10 +2876,10 @@ #endif #if AXIS_IS_TMC_CONFIG(Y2) - #define Y2_CURRENT 800 + #define Y2_CURRENT Y_CURRENT #define Y2_CURRENT_HOME Y2_CURRENT - #define Y2_MICROSTEPS Y_MICROSTEPS - #define Y2_RSENSE 0.11 + #define Y2_MICROSTEPS Y_MICROSTEPS + #define Y2_RSENSE Y_RSENSE #define Y2_CHAIN_POS -1 //#define Y2_INTERPOLATE true //#define Y2_HOLD_MULTIPLIER 0.5 @@ -2896,30 +2896,30 @@ #endif #if AXIS_IS_TMC_CONFIG(Z2) - #define Z2_CURRENT 800 + #define Z2_CURRENT Z_CURRENT #define Z2_CURRENT_HOME Z2_CURRENT - #define Z2_MICROSTEPS Z_MICROSTEPS - #define Z2_RSENSE 0.11 + #define Z2_MICROSTEPS Z_MICROSTEPS + #define Z2_RSENSE Z_RSENSE #define Z2_CHAIN_POS -1 //#define Z2_INTERPOLATE true //#define Z2_HOLD_MULTIPLIER 0.5 #endif #if AXIS_IS_TMC_CONFIG(Z3) - #define Z3_CURRENT 800 + #define Z3_CURRENT Z_CURRENT #define Z3_CURRENT_HOME Z3_CURRENT - #define Z3_MICROSTEPS Z_MICROSTEPS - #define Z3_RSENSE 0.11 + #define Z3_MICROSTEPS Z_MICROSTEPS + #define Z3_RSENSE Z_RSENSE #define Z3_CHAIN_POS -1 //#define Z3_INTERPOLATE true //#define Z3_HOLD_MULTIPLIER 0.5 #endif #if AXIS_IS_TMC_CONFIG(Z4) - #define Z4_CURRENT 800 + #define Z4_CURRENT Z_CURRENT #define Z4_CURRENT_HOME Z4_CURRENT - #define Z4_MICROSTEPS Z_MICROSTEPS - #define Z4_RSENSE 0.11 + #define Z4_MICROSTEPS Z_MICROSTEPS + #define Z4_RSENSE Z_RSENSE #define Z4_CHAIN_POS -1 //#define Z4_INTERPOLATE true //#define Z4_HOLD_MULTIPLIER 0.5 @@ -2995,63 +2995,63 @@ #endif #if AXIS_IS_TMC_CONFIG(E1) - #define E1_CURRENT 800 + #define E1_CURRENT E0_CURRENT #define E1_MICROSTEPS E0_MICROSTEPS - #define E1_RSENSE 0.11 + #define E1_RSENSE E0_RSENSE #define E1_CHAIN_POS -1 //#define E1_INTERPOLATE true //#define E1_HOLD_MULTIPLIER 0.5 #endif #if AXIS_IS_TMC_CONFIG(E2) - #define E2_CURRENT 800 + #define E2_CURRENT E0_CURRENT #define E2_MICROSTEPS E0_MICROSTEPS - #define E2_RSENSE 0.11 + #define E2_RSENSE E0_RSENSE #define E2_CHAIN_POS -1 //#define E2_INTERPOLATE true //#define E2_HOLD_MULTIPLIER 0.5 #endif #if AXIS_IS_TMC_CONFIG(E3) - #define E3_CURRENT 800 + #define E3_CURRENT E0_CURRENT #define E3_MICROSTEPS E0_MICROSTEPS - #define E3_RSENSE 0.11 + #define E3_RSENSE E0_RSENSE #define E3_CHAIN_POS -1 //#define E3_INTERPOLATE true //#define E3_HOLD_MULTIPLIER 0.5 #endif #if AXIS_IS_TMC_CONFIG(E4) - #define E4_CURRENT 800 + #define E4_CURRENT E0_CURRENT #define E4_MICROSTEPS E0_MICROSTEPS - #define E4_RSENSE 0.11 + #define E4_RSENSE E0_RSENSE #define E4_CHAIN_POS -1 //#define E4_INTERPOLATE true //#define E4_HOLD_MULTIPLIER 0.5 #endif #if AXIS_IS_TMC_CONFIG(E5) - #define E5_CURRENT 800 + #define E5_CURRENT E0_CURRENT #define E5_MICROSTEPS E0_MICROSTEPS - #define E5_RSENSE 0.11 + #define E5_RSENSE E0_RSENSE #define E5_CHAIN_POS -1 //#define E5_INTERPOLATE true //#define E5_HOLD_MULTIPLIER 0.5 #endif #if AXIS_IS_TMC_CONFIG(E6) - #define E6_CURRENT 800 + #define E6_CURRENT E0_CURRENT #define E6_MICROSTEPS E0_MICROSTEPS - #define E6_RSENSE 0.11 + #define E6_RSENSE E0_RSENSE #define E6_CHAIN_POS -1 //#define E6_INTERPOLATE true //#define E6_HOLD_MULTIPLIER 0.5 #endif #if AXIS_IS_TMC_CONFIG(E7) - #define E7_CURRENT 800 + #define E7_CURRENT E0_CURRENT #define E7_MICROSTEPS E0_MICROSTEPS - #define E7_RSENSE 0.11 + #define E7_RSENSE E0_RSENSE #define E7_CHAIN_POS -1 //#define E7_INTERPOLATE true //#define E7_HOLD_MULTIPLIER 0.5 From 573bc7344bcd66c08bf8cccbc90a29faa4d55030 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 29 Apr 2023 20:20:49 -0500 Subject: [PATCH 378/659] =?UTF-8?q?=F0=9F=8E=A8=20NORM=5FE=5FDIR=20=3D>=20?= =?UTF-8?q?FWD=5FE=5FDIR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/endstops.cpp | 72 +++++++++++++------------ Marlin/src/module/stepper.cpp | 8 +-- Marlin/src/module/stepper/indirection.h | 44 +++++++-------- 3 files changed, 63 insertions(+), 61 deletions(-) diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index ca231f1cb2..668be5f1f4 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -866,36 +866,38 @@ void Endstops::update() { // Signal, after validation, if an endstop limit is pressed or not - if (stepper.axis_is_moving(X_AXIS)) { - if (stepper.motor_direction(X_AXIS_HEAD)) { // -direction - #if HAS_X_MIN || (X_SPI_SENSORLESS && X_HOME_TO_MIN) - PROCESS_ENDSTOP_X(MIN); - #if CORE_DIAG(XY, Y, MIN) - PROCESS_CORE_ENDSTOP(Y,MIN,X,MIN); - #elif CORE_DIAG(XY, Y, MAX) - PROCESS_CORE_ENDSTOP(Y,MAX,X,MIN); - #elif CORE_DIAG(XZ, Z, MIN) - PROCESS_CORE_ENDSTOP(Z,MIN,X,MIN); - #elif CORE_DIAG(XZ, Z, MAX) - PROCESS_CORE_ENDSTOP(Z,MAX,X,MIN); + #if HAS_X_AXIS + if (stepper.axis_is_moving(X_AXIS)) { + if (stepper.motor_direction(X_AXIS_HEAD)) { // -direction + #if HAS_X_MIN || (X_SPI_SENSORLESS && X_HOME_TO_MIN) + PROCESS_ENDSTOP_X(MIN); + #if CORE_DIAG(XY, Y, MIN) + PROCESS_CORE_ENDSTOP(Y,MIN,X,MIN); + #elif CORE_DIAG(XY, Y, MAX) + PROCESS_CORE_ENDSTOP(Y,MAX,X,MIN); + #elif CORE_DIAG(XZ, Z, MIN) + PROCESS_CORE_ENDSTOP(Z,MIN,X,MIN); + #elif CORE_DIAG(XZ, Z, MAX) + PROCESS_CORE_ENDSTOP(Z,MAX,X,MIN); + #endif #endif - #endif - } - else { // +direction - #if HAS_X_MAX || (X_SPI_SENSORLESS && X_HOME_TO_MAX) - PROCESS_ENDSTOP_X(MAX); - #if CORE_DIAG(XY, Y, MIN) - PROCESS_CORE_ENDSTOP(Y,MIN,X,MAX); - #elif CORE_DIAG(XY, Y, MAX) - PROCESS_CORE_ENDSTOP(Y,MAX,X,MAX); - #elif CORE_DIAG(XZ, Z, MIN) - PROCESS_CORE_ENDSTOP(Z,MIN,X,MAX); - #elif CORE_DIAG(XZ, Z, MAX) - PROCESS_CORE_ENDSTOP(Z,MAX,X,MAX); + } + else { // +direction + #if HAS_X_MAX || (X_SPI_SENSORLESS && X_HOME_TO_MAX) + PROCESS_ENDSTOP_X(MAX); + #if CORE_DIAG(XY, Y, MIN) + PROCESS_CORE_ENDSTOP(Y,MIN,X,MAX); + #elif CORE_DIAG(XY, Y, MAX) + PROCESS_CORE_ENDSTOP(Y,MAX,X,MAX); + #elif CORE_DIAG(XZ, Z, MIN) + PROCESS_CORE_ENDSTOP(Z,MIN,X,MAX); + #elif CORE_DIAG(XZ, Z, MAX) + PROCESS_CORE_ENDSTOP(Z,MAX,X,MAX); + #endif #endif - #endif + } } - } + #endif // HAS_X_AXIS #if HAS_Y_AXIS if (stepper.axis_is_moving(Y_AXIS)) { @@ -928,7 +930,7 @@ void Endstops::update() { #endif } } - #endif + #endif // HAS_Y_AXIS #if HAS_Z_AXIS if (stepper.axis_is_moving(Z_AXIS)) { @@ -973,7 +975,7 @@ void Endstops::update() { #endif } } - #endif + #endif // HAS_Z_AXIS #if HAS_I_AXIS if (stepper.axis_is_moving(I_AXIS)) { @@ -988,7 +990,7 @@ void Endstops::update() { #endif } } - #endif + #endif // HAS_I_AXIS #if HAS_J_AXIS if (stepper.axis_is_moving(J_AXIS)) { @@ -1003,7 +1005,7 @@ void Endstops::update() { #endif } } - #endif + #endif // HAS_J_AXIS #if HAS_K_AXIS if (stepper.axis_is_moving(K_AXIS)) { @@ -1018,7 +1020,7 @@ void Endstops::update() { #endif } } - #endif + #endif // HAS_K_AXIS #if HAS_U_AXIS if (stepper.axis_is_moving(U_AXIS)) { @@ -1033,7 +1035,7 @@ void Endstops::update() { #endif } } - #endif + #endif // HAS_U_AXIS #if HAS_V_AXIS if (stepper.axis_is_moving(V_AXIS)) { @@ -1048,7 +1050,7 @@ void Endstops::update() { #endif } } - #endif + #endif // HAS_V_AXIS #if HAS_W_AXIS if (stepper.axis_is_moving(W_AXIS)) { @@ -1063,7 +1065,7 @@ void Endstops::update() { #endif } } - #endif + #endif // HAS_W_AXIS } // Endstops::update() #if ENABLED(SPI_ENDSTOPS) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index bda5319dfc..9bb93597e2 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -636,9 +636,9 @@ void Stepper::apply_directions() { } else { #if ENABLED(MIXING_EXTRUDER) - MIXER_STEPPER_LOOP(j) NORM_E_DIR(j); + MIXER_STEPPER_LOOP(j) FWD_E_DIR(j); #else - NORM_E_DIR(stepper_extruder); + FWD_E_DIR(stepper_extruder); #endif count_direction.e = 1; } @@ -2420,9 +2420,9 @@ hal_timer_t Stepper::block_phase_isr() { } else { #if ENABLED(MIXING_EXTRUDER) - MIXER_STEPPER_LOOP(j) NORM_E_DIR(j); + MIXER_STEPPER_LOOP(j) FWD_E_DIR(j); #else - NORM_E_DIR(stepper_extruder); + FWD_E_DIR(stepper_extruder); #endif } diff --git a/Marlin/src/module/stepper/indirection.h b/Marlin/src/module/stepper/indirection.h index 806826b7fc..1bbbccd842 100644 --- a/Marlin/src/module/stepper/indirection.h +++ b/Marlin/src/module/stepper/indirection.h @@ -459,7 +459,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #if HAS_SWITCHING_EXTRUDER // One stepper driver per two extruders, reversed on odd index #if EXTRUDERS > 7 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else if (E < 6) { E2_STEP_WRITE(V); } else { E3_STEP_WRITE(V); } }while(0) - #define NORM_E_DIR(E) do{ switch (E) { \ + #define FWD_E_DIR(E) do{ switch (E) { \ case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ case 4: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; \ @@ -473,7 +473,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset } }while(0) #elif EXTRUDERS > 6 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else if (E < 6) { E2_STEP_WRITE(V); } else { E3_STEP_WRITE(V); } }while(0) - #define NORM_E_DIR(E) do{ switch (E) { \ + #define FWD_E_DIR(E) do{ switch (E) { \ case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ case 4: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; \ @@ -486,7 +486,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 6: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); } }while(0) #elif EXTRUDERS > 5 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else { E2_STEP_WRITE(V); } }while(0) - #define NORM_E_DIR(E) do{ switch (E) { \ + #define FWD_E_DIR(E) do{ switch (E) { \ case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ case 4: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; \ @@ -498,7 +498,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset } }while(0) #elif EXTRUDERS > 4 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else { E2_STEP_WRITE(V); } }while(0) - #define NORM_E_DIR(E) do{ switch (E) { \ + #define FWD_E_DIR(E) do{ switch (E) { \ case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ case 4: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; \ @@ -510,7 +510,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset } }while(0) #elif EXTRUDERS > 3 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0) - #define NORM_E_DIR(E) do{ switch (E) { \ + #define FWD_E_DIR(E) do{ switch (E) { \ case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ } }while(0) @@ -520,7 +520,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset } }while(0) #elif EXTRUDERS > 2 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0) - #define NORM_E_DIR(E) do{ switch (E) { \ + #define FWD_E_DIR(E) do{ switch (E) { \ case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ } }while(0) @@ -530,20 +530,20 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset } }while(0) #else #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V) - #define NORM_E_DIR(E) do{ E0_DIR_WRITE(INVERT_DIR(E0, (E) ? LOW : HIGH)); }while(0) + #define FWD_E_DIR(E) do{ E0_DIR_WRITE(INVERT_DIR(E0, (E) ? LOW : HIGH)); }while(0) #define REV_E_DIR(E) do{ E0_DIR_WRITE(INVERT_DIR(E0, (E) ? HIGH : LOW )); }while(0) #endif #elif HAS_PRUSA_MMU2 // One multiplexed stepper driver #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V) - #define NORM_E_DIR(E) E0_DIR_WRITE(INVERT_DIR(E0, HIGH)) + #define FWD_E_DIR(E) E0_DIR_WRITE(INVERT_DIR(E0, HIGH)) #define REV_E_DIR(E) E0_DIR_WRITE(INVERT_DIR(E0, LOW )) #elif HAS_PRUSA_MMU1 // One multiplexed stepper driver, reversed on odd index #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V) - #define NORM_E_DIR(E) do{ E0_DIR_WRITE(INVERT_DIR(E0, TEST(E, 0) ? HIGH : LOW )); }while(0) + #define FWD_E_DIR(E) do{ E0_DIR_WRITE(INVERT_DIR(E0, TEST(E, 0) ? HIGH : LOW )); }while(0) #define REV_E_DIR(E) do{ E0_DIR_WRITE(INVERT_DIR(E0, TEST(E, 0) ? LOW : HIGH)); }while(0) #elif E_STEPPERS > 1 @@ -554,7 +554,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \ case 4: E4_STEP_WRITE(V); break; case 5: E5_STEP_WRITE(V); break; case 6: E6_STEP_WRITE(V); break; case 7: E7_STEP_WRITE(V); break; \ } }while(0) - #define _NORM_E_DIR(E) do{ switch (E) { \ + #define _FWD_E_DIR(E) do{ switch (E) { \ case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ case 4: E4_DIR_WRITE(INVERT_DIR(E4, HIGH)); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, HIGH)); break; \ @@ -573,7 +573,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \ case 4: E4_STEP_WRITE(V); break; case 5: E5_STEP_WRITE(V); break; case 6: E6_STEP_WRITE(V); break; \ } }while(0) - #define _NORM_E_DIR(E) do{ switch (E) { \ + #define _FWD_E_DIR(E) do{ switch (E) { \ case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ case 4: E4_DIR_WRITE(INVERT_DIR(E4, HIGH)); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, HIGH)); break; \ @@ -592,7 +592,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \ case 4: E4_STEP_WRITE(V); break; case 5: E5_STEP_WRITE(V); break; \ } }while(0) - #define _NORM_E_DIR(E) do{ switch (E) { \ + #define _FWD_E_DIR(E) do{ switch (E) { \ case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ case 4: E4_DIR_WRITE(INVERT_DIR(E4, HIGH)); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, HIGH)); break; \ @@ -609,7 +609,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \ case 4: E4_STEP_WRITE(V); break; \ } }while(0) - #define _NORM_E_DIR(E) do{ switch (E) { \ + #define _FWD_E_DIR(E) do{ switch (E) { \ case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ case 4: E4_DIR_WRITE(INVERT_DIR(E4, HIGH)); break; \ @@ -625,7 +625,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #define _E_STEP_WRITE(E,V) do{ switch (E) { \ case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \ } }while(0) - #define _NORM_E_DIR(E) do{ switch (E) { \ + #define _FWD_E_DIR(E) do{ switch (E) { \ case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ } }while(0) @@ -637,13 +637,13 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #elif E_STEPPERS > 2 #define _E_STEP_WRITE(E,V) do{ switch (E) { case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); } }while(0) - #define _NORM_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); } }while(0) + #define _FWD_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); } }while(0) #define _REV_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; case 2: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); } }while(0) #else #define _E_STEP_WRITE(E,V) do{ if (E == 0) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0) - #define _NORM_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); } else { E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); } }while(0) + #define _FWD_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); } else { E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); } }while(0) #define _REV_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE(INVERT_DIR(E0, LOW )); } else { E1_DIR_WRITE(INVERT_DIR(E1, LOW )); } }while(0) #endif @@ -659,30 +659,30 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #define RDIR(N) DUPE(N,DIR,INVERT_DIR(E, LOW )); #define E_STEP_WRITE(E,V) do{ if (extruder_duplication_enabled) { REPEAT2(E_STEPPERS, DUPE, STEP, V); } else _E_STEP_WRITE(E,V); }while(0) - #define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { REPEAT(E_STEPPERS, NDIR); } else _NORM_E_DIR(E); }while(0) - #define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { REPEAT(E_STEPPERS, RDIR); } else _REV_E_DIR(E); }while(0) + #define FWD_E_DIR(E) do{ if (extruder_duplication_enabled) { REPEAT(E_STEPPERS, NDIR); } else _FWD_E_DIR(E); }while(0) + #define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { REPEAT(E_STEPPERS, RDIR); } else _REV_E_DIR(E); }while(0) #else #define E_STEP_WRITE(E,V) _E_STEP_WRITE(E,V) - #define NORM_E_DIR(E) _NORM_E_DIR(E) + #define FWD_E_DIR(E) _FWD_E_DIR(E) #define REV_E_DIR(E) _REV_E_DIR(E) #endif #elif ENABLED(E_DUAL_STEPPER_DRIVERS) #define E_STEP_WRITE(E,V) do{ E0_STEP_WRITE(V); E1_STEP_WRITE(V); }while(0) - #define NORM_E_DIR(E) do{ constexpr bool d = INVERT_DIR(E0, HIGH); E0_DIR_WRITE(d); E1_DIR_WRITE(INVERT_DIR(E1_VS_E0, d)); }while(0) + #define FWD_E_DIR(E) do{ constexpr bool d = INVERT_DIR(E0, HIGH); E0_DIR_WRITE(d); E1_DIR_WRITE(INVERT_DIR(E1_VS_E0, d)); }while(0) #define REV_E_DIR(E) do{ constexpr bool d = INVERT_DIR(E0, LOW ); E0_DIR_WRITE(d); E1_DIR_WRITE(INVERT_DIR(E1_VS_E0, d)); }while(0) #elif E_STEPPERS #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V) - #define NORM_E_DIR(E) E0_DIR_WRITE(INVERT_DIR(E0, HIGH)) + #define FWD_E_DIR(E) E0_DIR_WRITE(INVERT_DIR(E0, HIGH)) #define REV_E_DIR(E) E0_DIR_WRITE(INVERT_DIR(E0, LOW )) #else #define E_STEP_WRITE(E,V) NOOP - #define NORM_E_DIR(E) NOOP + #define FWD_E_DIR(E) NOOP #define REV_E_DIR(E) NOOP #endif From 1234e6af528710c7be4f0c9878a023d69fb7f3fe Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 30 Apr 2023 18:05:56 -0500 Subject: [PATCH 379/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Axi?= =?UTF-8?q?s=20relative=20flags=20type?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/powerloss.h | 2 +- Marlin/src/gcode/gcode.cpp | 14 +------------- Marlin/src/gcode/gcode.h | 8 +++++++- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/Marlin/src/feature/powerloss.h b/Marlin/src/feature/powerloss.h index d241fdb74c..df46545825 100644 --- a/Marlin/src/feature/powerloss.h +++ b/Marlin/src/feature/powerloss.h @@ -113,7 +113,7 @@ typedef struct { millis_t print_job_elapsed; // Relative axis modes - uint8_t axis_relative; + relative_t axis_relative; // Misc. Marlin flags struct { diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 9c24791c82..2313bbf78f 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -80,19 +80,7 @@ millis_t GcodeSuite::previous_move_ms = 0, #endif // Relative motion mode for each logical axis -static constexpr xyze_bool_t ar_init = AXIS_RELATIVE_MODES; -axis_bits_t GcodeSuite::axis_relative = 0 LOGICAL_AXIS_GANG( - | (ar_init.e << REL_E), - | (ar_init.x << REL_X), - | (ar_init.y << REL_Y), - | (ar_init.z << REL_Z), - | (ar_init.i << REL_I), - | (ar_init.j << REL_J), - | (ar_init.k << REL_K), - | (ar_init.u << REL_U), - | (ar_init.v << REL_V), - | (ar_init.w << REL_W) -); +relative_t GcodeSuite::axis_relative; // Init in constructor #if EITHER(HAS_AUTO_REPORTING, HOST_KEEPALIVE_FEATURE) bool GcodeSuite::autoreport_paused; // = false diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 75a60b4dd7..eb465ea7c3 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -345,14 +345,20 @@ enum AxisRelative : uint8_t { #if HAS_EXTRUDERS , E_MODE_ABS, E_MODE_REL #endif + , NUM_REL_MODES }; +typedef bits_t(NUM_REL_MODES) relative_t; extern const char G28_STR[]; class GcodeSuite { public: - static axis_bits_t axis_relative; + static relative_t axis_relative; + + GcodeSuite() { // Relative motion mode for each logical axis + axis_relative = AxisBits(AXIS_RELATIVE_MODES).bits; + } static bool axis_is_relative(const AxisEnum a) { #if HAS_EXTRUDERS From 2538a7c4d6148d8249f5418a76c58ec483343d2b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 29 Apr 2023 21:28:12 -0500 Subject: [PATCH 380/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Mov?= =?UTF-8?q?e=20DIR=20inverting=20to=20*=5FDIR=5FWRITE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bedlevel/bdl/bdl.cpp | 2 +- Marlin/src/module/planner.h | 2 +- Marlin/src/module/stepper.cpp | 66 +++--- Marlin/src/module/stepper.h | 2 +- Marlin/src/module/stepper/indirection.cpp | 2 +- Marlin/src/module/stepper/indirection.h | 265 ++++++++++++---------- 6 files changed, 186 insertions(+), 153 deletions(-) diff --git a/Marlin/src/feature/bedlevel/bdl/bdl.cpp b/Marlin/src/feature/bedlevel/bdl/bdl.cpp index 5ce5e894ca..064a8ffbd2 100644 --- a/Marlin/src/feature/bedlevel/bdl/bdl.cpp +++ b/Marlin/src/feature/bedlevel/bdl/bdl.cpp @@ -109,7 +109,7 @@ void BDS_Leveling::process() { #endif } else { - babystep.set_mm(Z_AXIS, 0); //if (old_cur_z <= cur_z) Z_DIR_WRITE(INVERT_DIR(Z, HIGH)); + babystep.set_mm(Z_AXIS, 0); //if (old_cur_z <= cur_z) Z_DIR_WRITE(HIGH); stepper.apply_directions(); } #endif diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index 030c1b31db..e072e94dbd 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -246,7 +246,7 @@ typedef struct PlannerBlock { uint32_t acceleration_rate; // The acceleration rate used for acceleration calculation #endif - axis_bits_t direction_bits; // The direction bit set for this block (refers to *_DIRECTION_BIT in config.h) + axis_bits_t direction_bits; // Direction bits set for this block, where 1 is negative motion // Advance extrusion #if ENABLED(LIN_ADVANCE) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 9bb93597e2..8a4d801e76 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -477,6 +477,15 @@ xyze_int8_t Stepper::count_direction{0}; #define W_APPLY_STEP(v,Q) W_STEP_WRITE(v) #endif +#define E0_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(0) : REV_E_DIR(0); }while(0) +#define E1_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(1) : REV_E_DIR(1); }while(0) +#define E2_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(2) : REV_E_DIR(2); }while(0) +#define E3_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(3) : REV_E_DIR(3); }while(0) +#define E4_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(4) : REV_E_DIR(4); }while(0) +#define E5_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(5) : REV_E_DIR(5); }while(0) +#define E6_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(6) : REV_E_DIR(6); }while(0) +#define E7_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(7) : REV_E_DIR(7); }while(0) + #if DISABLED(MIXING_EXTRUDER) #define E_APPLY_STEP(v,Q) E_STEP_WRITE(stepper_extruder, v) #endif @@ -592,14 +601,16 @@ void Stepper::disable_all_steppers() { TERN_(EXTENSIBLE_UI, ExtUI::onSteppersDisabled()); } -#define SET_STEP_DIR(A) \ - if (motor_direction(_AXIS(A))) { \ - A##_APPLY_DIR(INVERT_DIR(A, LOW), false); \ - count_direction[_AXIS(A)] = -1; \ - } \ - else { \ - A##_APPLY_DIR(INVERT_DIR(A, HIGH), false); \ - count_direction[_AXIS(A)] = 1; \ +// Set a single axis direction based on the last set flags. +// A direction bit of "1" indicates reverse or negative motion. +#define SET_STEP_DIR(A) \ + if (motor_direction(_AXIS(A))) { \ + A##_APPLY_DIR(LOW, false); \ + count_direction[_AXIS(A)] = -1; \ + } \ + else { \ + A##_APPLY_DIR(HIGH, false); \ + count_direction[_AXIS(A)] = 1; \ } /** @@ -2402,7 +2413,7 @@ hal_timer_t Stepper::block_phase_isr() { if (la_active) { const uint32_t la_step_rate = la_advance_steps > current_block->final_adv_steps ? current_block->la_advance_rate : 0; if (la_step_rate != step_rate) { - bool reverse_e = la_step_rate > step_rate; + const bool reverse_e = la_step_rate > step_rate; la_interval = calc_timer_interval((reverse_e ? la_step_rate - step_rate : step_rate - la_step_rate) >> current_block->la_scaling); if (reverse_e != motor_direction(E_AXIS)) { @@ -3163,21 +3174,6 @@ void Stepper::init() { sei(); #endif - // Init direction bits for first moves - set_directions(0 - NUM_AXIS_GANG( - | TERN0(INVERT_X_DIR, _BV(X_AXIS)), - | TERN0(INVERT_Y_DIR, _BV(Y_AXIS)), - | TERN0(INVERT_Z_DIR, _BV(Z_AXIS)), - | TERN0(INVERT_I_DIR, _BV(I_AXIS)), - | TERN0(INVERT_J_DIR, _BV(J_AXIS)), - | TERN0(INVERT_K_DIR, _BV(K_AXIS)), - | TERN0(INVERT_U_DIR, _BV(U_AXIS)), - | TERN0(INVERT_V_DIR, _BV(V_AXIS)), - | TERN0(INVERT_W_DIR, _BV(W_AXIS)) - ) - ); - #if HAS_MOTOR_CURRENT_SPI || HAS_MOTOR_CURRENT_PWM initialized = true; digipot_init(); @@ -3472,10 +3468,10 @@ void Stepper::report_positions() { #endif if (applyDir) { - TERN_(HAS_X_AXIS, X_DIR_WRITE(INVERT_DIR(X, TEST(command, FT_BIT_DIR_X)))); - TERN_(HAS_Y_AXIS, Y_DIR_WRITE(INVERT_DIR(Y, TEST(command, FT_BIT_DIR_Y)))); - TERN_(HAS_Z_AXIS, Z_DIR_WRITE(INVERT_DIR(Z, z_dir))); - TERN_(HAS_EXTRUDERS, E0_DIR_WRITE(INVERT_DIR(E0, TEST(command, FT_BIT_DIR_E)))); + TERN_(HAS_X_AXIS, X_DIR_WRITE(TEST(command, FT_BIT_DIR_X))); + TERN_(HAS_Y_AXIS, Y_DIR_WRITE(TEST(command, FT_BIT_DIR_Y))); + TERN_(HAS_Z_AXIS, Z_DIR_WRITE(z_dir)); + TERN_(HAS_EXTRUDERS, E0_DIR_WRITE(TEST(command, FT_BIT_DIR_E))); DIR_WAIT_AFTER(); } @@ -3632,7 +3628,7 @@ void Stepper::report_positions() { const uint8_t old_dir = _READ_DIR(AXIS); \ _ENABLE_AXIS(AXIS); \ DIR_WAIT_BEFORE(); \ - _APPLY_DIR(AXIS, INVERT_DIR(AXIS, (DIR)^(INV))); \ + _APPLY_DIR(AXIS, (DIR)^(INV)); \ DIR_WAIT_AFTER(); \ _SAVE_START(); \ _APPLY_STEP(AXIS, _STEP_STATE(AXIS), true); \ @@ -3651,8 +3647,8 @@ void Stepper::report_positions() { const xy_byte_t old_dir = { _READ_DIR(A), _READ_DIR(B) }; \ _ENABLE_AXIS(A); _ENABLE_AXIS(B); \ DIR_WAIT_BEFORE(); \ - _APPLY_DIR(A, INVERT_DIR(A, (DIR)^(INV))); \ - _APPLY_DIR(B, INVERT_DIR(B, (DIR)^(INV)^(ALT))); \ + _APPLY_DIR(A, (DIR)^(INV)); \ + _APPLY_DIR(B, (DIR)^(INV)^(ALT)); \ DIR_WAIT_AFTER(); \ _SAVE_START(); \ _APPLY_STEP(A, _STEP_STATE(A), true); \ @@ -3710,7 +3706,7 @@ void Stepper::report_positions() { #else // DELTA - const bool z_direction = direction ^ BABYSTEP_INVERT_Z; + const bool z_direction = TERN_(BABYSTEP_INVERT_Z, !) direction; NUM_AXIS_CODE( enable_axis(X_AXIS), enable_axis(Y_AXIS), enable_axis(Z_AXIS), @@ -3727,13 +3723,13 @@ void Stepper::report_positions() { ); #ifdef X_DIR_WRITE - X_DIR_WRITE(INVERT_DIR(X, z_direction)); + X_DIR_WRITE(z_direction); #endif #ifdef Y_DIR_WRITE - Y_DIR_WRITE(INVERT_DIR(Y, z_direction)); + Y_DIR_WRITE(z_direction); #endif #ifdef Z_DIR_WRITE - Z_DIR_WRITE(INVERT_DIR(Z, z_direction)); + Z_DIR_WRITE(z_direction); #endif DIR_WAIT_AFTER(); diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 7a591d2954..532db65dd9 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -522,7 +522,7 @@ class Stepper { // Quickly stop all steppers FORCE_INLINE static void quick_stop() { abort_current_block = true; } - // The direction of a single motor + // The direction of a single motor. A true result indicates reversed or negative motion. FORCE_INLINE static bool motor_direction(const AxisEnum axis) { return TEST(last_direction_bits, axis); } // The last movement direction was not null on the specified axis. Note that motor direction is not necessarily the same. diff --git a/Marlin/src/module/stepper/indirection.cpp b/Marlin/src/module/stepper/indirection.cpp index 427fd71cbe..0290d8135d 100644 --- a/Marlin/src/module/stepper/indirection.cpp +++ b/Marlin/src/module/stepper/indirection.cpp @@ -42,6 +42,6 @@ void reset_stepper_drivers() { } #if ENABLED(SOFTWARE_DRIVER_ENABLE) - // Flags to optimize XYZ Enabled state + // Flags to optimize axis enabled state xyz_bool_t axis_sw_enabled; // = { false, false, false } #endif diff --git a/Marlin/src/module/stepper/indirection.h b/Marlin/src/module/stepper/indirection.h index 1bbbccd842..7669853b2b 100644 --- a/Marlin/src/module/stepper/indirection.h +++ b/Marlin/src/module/stepper/indirection.h @@ -22,14 +22,51 @@ #pragma once /** - * stepper/indirection.h + * stepper/indirection.h - Stepper Indirection Macros * - * Stepper motor driver indirection to allow some stepper functions to - * be done via SPI/I2c instead of direct pin manipulation. + * Each axis in a machine may have between 1 and 4 stepper motors. + * Currently X and Y allow for 1 or 2 steppers. Z can have up to 4. + * Extruders usually have one E stepper per nozzle. + * + * XYZ Special Cases + * - Delta: 3 steppers contribute to X, Y, and Z. + * - SCARA: A and B steppers contribute to X and Y by angular transformation. + * - CoreXY: A and B steppers contribute to X and Y in combination. + * - CoreXZ: A and B steppers contribute to X and Z in combination. + * - CoreYZ: A and B steppers contribute to Y and Z in combination. + * + * E Special Cases + * - SINGLENOZZLE: All Extruders have a single nozzle so there is one heater and no XYZ offset. + * - Switching Extruder: One stepper is used for each pair of nozzles with a switching mechanism. + * - Duplication Mode: Two or more steppers move in sync when `extruder_duplication_enabled` is set. + * With MULTI_NOZZLE_DUPLICATION a `duplication_e_mask` is also used. + * - Průša MMU1: One stepper is used with a switching mechanism. Odd numbered E indexes are reversed. + * - Průša MMU2: One stepper is used with a switching mechanism. + * - E_DUAL_STEPPER_DRIVERS: Two steppers always move in sync, possibly with opposite DIR states. + * + * Direct Stepper Control + * Where "Q" represents X Y Z I J K U V W / X2 Y2 Z2 Z3 Z4 / E0 E1 E2 E3 E4 E5 E6 E7 + * Here each E index corresponds to a single E stepper driver. + * + * Q_ENABLE_INIT() Q_ENABLE_WRITE(S) Q_ENABLE_READ() + * Q_DIR_INIT() Q_DIR_WRITE(S) Q_DIR_READ() + * Q_STEP_INIT() Q_STEP_WRITE(S) Q_STEP_READ() + * + * Steppers may not have an enable state or may be enabled by other methods + * beyond a single pin (SOFTWARE_DRIVER_ENABLE) so these can be overriden: + * ENABLE_STEPPER_Q() DISABLE_STEPPER_Q() + * + * Axis Stepper Control (X Y Z I J K U V W) + * SOFTWARE_DRIVER_ENABLE gives all axes a status flag, so these macros will + * skip sending commands to steppers that are already in the desired state: + * ENABLE_AXIS_Q() DISABLE_AXIS_Q() + * + * E-Axis Stepper Control (0..n) + * For these macros the E index indicates a logical extruder (e.g., active_extruder). + * + * E_STEP_WRITE(E,V) FWD_E_DIR(E) REV_E_DIR(E) * - * Copyright (c) 2015 Dominik Wenger */ - #include "../../inc/MarlinConfig.h" #if HAS_TMC26X @@ -43,6 +80,8 @@ void restore_stepper_drivers(); // Called by powerManager.power_on() void reset_stepper_drivers(); // Called by settings.load / settings.reset +#define INVERT_DIR(AXIS, D) (TERN_(INVERT_## AXIS ##_DIR, !)(D)) + // X Stepper #ifndef X_ENABLE_INIT #define X_ENABLE_INIT() SET_OUTPUT(X_ENABLE_PIN) @@ -51,7 +90,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef X_DIR_INIT #define X_DIR_INIT() SET_OUTPUT(X_DIR_PIN) - #define X_DIR_WRITE(STATE) WRITE(X_DIR_PIN,STATE) + #define X_DIR_WRITE(STATE) WRITE(X_DIR_PIN,INVERT_DIR(X, STATE)) #define X_DIR_READ() bool(READ(X_DIR_PIN)) #endif #define X_STEP_INIT() SET_OUTPUT(X_STEP_PIN) @@ -69,7 +108,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef Y_DIR_INIT #define Y_DIR_INIT() SET_OUTPUT(Y_DIR_PIN) - #define Y_DIR_WRITE(STATE) WRITE(Y_DIR_PIN,STATE) + #define Y_DIR_WRITE(STATE) WRITE(Y_DIR_PIN,INVERT_DIR(Y, STATE)) #define Y_DIR_READ() bool(READ(Y_DIR_PIN)) #endif #define Y_STEP_INIT() SET_OUTPUT(Y_STEP_PIN) @@ -88,7 +127,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef Z_DIR_INIT #define Z_DIR_INIT() SET_OUTPUT(Z_DIR_PIN) - #define Z_DIR_WRITE(STATE) WRITE(Z_DIR_PIN,STATE) + #define Z_DIR_WRITE(STATE) WRITE(Z_DIR_PIN,INVERT_DIR(Z, STATE)) #define Z_DIR_READ() bool(READ(Z_DIR_PIN)) #endif #define Z_STEP_INIT() SET_OUTPUT(Z_STEP_PIN) @@ -107,7 +146,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef X2_DIR_INIT #define X2_DIR_INIT() SET_OUTPUT(X2_DIR_PIN) - #define X2_DIR_WRITE(STATE) WRITE(X2_DIR_PIN,STATE) + #define X2_DIR_WRITE(STATE) WRITE(X2_DIR_PIN,INVERT_DIR(X2, STATE)) #define X2_DIR_READ() bool(READ(X2_DIR_PIN)) #endif #define X2_STEP_INIT() SET_OUTPUT(X2_STEP_PIN) @@ -126,7 +165,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef Y2_DIR_INIT #define Y2_DIR_INIT() SET_OUTPUT(Y2_DIR_PIN) - #define Y2_DIR_WRITE(STATE) WRITE(Y2_DIR_PIN,STATE) + #define Y2_DIR_WRITE(STATE) WRITE(Y2_DIR_PIN,INVERT_DIR(Y2, STATE)) #define Y2_DIR_READ() bool(READ(Y2_DIR_PIN)) #endif #define Y2_STEP_INIT() SET_OUTPUT(Y2_STEP_PIN) @@ -147,7 +186,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef Z2_DIR_INIT #define Z2_DIR_INIT() SET_OUTPUT(Z2_DIR_PIN) - #define Z2_DIR_WRITE(STATE) WRITE(Z2_DIR_PIN,STATE) + #define Z2_DIR_WRITE(STATE) WRITE(Z2_DIR_PIN,INVERT_DIR(Z2, STATE)) #define Z2_DIR_READ() bool(READ(Z2_DIR_PIN)) #endif #define Z2_STEP_INIT() SET_OUTPUT(Z2_STEP_PIN) @@ -168,7 +207,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef Z3_DIR_INIT #define Z3_DIR_INIT() SET_OUTPUT(Z3_DIR_PIN) - #define Z3_DIR_WRITE(STATE) WRITE(Z3_DIR_PIN,STATE) + #define Z3_DIR_WRITE(STATE) WRITE(Z3_DIR_PIN,INVERT_DIR(Z3, STATE)) #define Z3_DIR_READ() bool(READ(Z3_DIR_PIN)) #endif #define Z3_STEP_INIT() SET_OUTPUT(Z3_STEP_PIN) @@ -189,7 +228,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef Z4_DIR_INIT #define Z4_DIR_INIT() SET_OUTPUT(Z4_DIR_PIN) - #define Z4_DIR_WRITE(STATE) WRITE(Z4_DIR_PIN,STATE) + #define Z4_DIR_WRITE(STATE) WRITE(Z4_DIR_PIN,INVERT_DIR(Z4, STATE)) #define Z4_DIR_READ() bool(READ(Z4_DIR_PIN)) #endif #define Z4_STEP_INIT() SET_OUTPUT(Z4_STEP_PIN) @@ -210,7 +249,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef I_DIR_INIT #define I_DIR_INIT() SET_OUTPUT(I_DIR_PIN) - #define I_DIR_WRITE(STATE) WRITE(I_DIR_PIN,STATE) + #define I_DIR_WRITE(STATE) WRITE(I_DIR_PIN,INVERT_DIR(I, STATE)) #define I_DIR_READ() bool(READ(I_DIR_PIN)) #endif #define I_STEP_INIT() SET_OUTPUT(I_STEP_PIN) @@ -229,7 +268,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef J_DIR_INIT #define J_DIR_INIT() SET_OUTPUT(J_DIR_PIN) - #define J_DIR_WRITE(STATE) WRITE(J_DIR_PIN,STATE) + #define J_DIR_WRITE(STATE) WRITE(J_DIR_PIN,INVERT_DIR(J, STATE)) #define J_DIR_READ() bool(READ(J_DIR_PIN)) #endif #define J_STEP_INIT() SET_OUTPUT(J_STEP_PIN) @@ -248,7 +287,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef K_DIR_INIT #define K_DIR_INIT() SET_OUTPUT(K_DIR_PIN) - #define K_DIR_WRITE(STATE) WRITE(K_DIR_PIN,STATE) + #define K_DIR_WRITE(STATE) WRITE(K_DIR_PIN,INVERT_DIR(K, STATE)) #define K_DIR_READ() bool(READ(K_DIR_PIN)) #endif #define K_STEP_INIT() SET_OUTPUT(K_STEP_PIN) @@ -267,7 +306,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef U_DIR_INIT #define U_DIR_INIT() SET_OUTPUT(U_DIR_PIN) - #define U_DIR_WRITE(STATE) WRITE(U_DIR_PIN,STATE) + #define U_DIR_WRITE(STATE) WRITE(U_DIR_PIN,INVERT_DIR(U, STATE)) #define U_DIR_READ() bool(READ(U_DIR_PIN)) #endif #define U_STEP_INIT() SET_OUTPUT(U_STEP_PIN) @@ -286,7 +325,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef V_DIR_INIT #define V_DIR_INIT() SET_OUTPUT(V_DIR_PIN) - #define V_DIR_WRITE(STATE) WRITE(V_DIR_PIN,STATE) + #define V_DIR_WRITE(STATE) WRITE(V_DIR_PIN,INVERT_DIR(V, STATE)) #define V_DIR_READ() bool(READ(V_DIR_PIN)) #endif #define V_STEP_INIT() SET_OUTPUT(V_STEP_PIN) @@ -305,7 +344,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef W_DIR_INIT #define W_DIR_INIT() SET_OUTPUT(W_DIR_PIN) - #define W_DIR_WRITE(STATE) WRITE(W_DIR_PIN,STATE) + #define W_DIR_WRITE(STATE) WRITE(W_DIR_PIN,INVERT_DIR(W, STATE)) #define W_DIR_READ() bool(READ(W_DIR_PIN)) #endif #define W_STEP_INIT() SET_OUTPUT(W_STEP_PIN) @@ -323,7 +362,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef E0_DIR_INIT #define E0_DIR_INIT() SET_OUTPUT(E0_DIR_PIN) - #define E0_DIR_WRITE(STATE) WRITE(E0_DIR_PIN,STATE) + #define E0_DIR_WRITE(STATE) WRITE(E0_DIR_PIN,INVERT_DIR(E0, STATE)) #define E0_DIR_READ() bool(READ(E0_DIR_PIN)) #endif #define E0_STEP_INIT() SET_OUTPUT(E0_STEP_PIN) @@ -340,7 +379,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef E1_DIR_INIT #define E1_DIR_INIT() SET_OUTPUT(E1_DIR_PIN) - #define E1_DIR_WRITE(STATE) WRITE(E1_DIR_PIN,STATE) + #define E1_DIR_WRITE(STATE) WRITE(E1_DIR_PIN,INVERT_DIR(E1, STATE)) #define E1_DIR_READ() bool(READ(E1_DIR_PIN)) #endif #define E1_STEP_INIT() SET_OUTPUT(E1_STEP_PIN) @@ -357,7 +396,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef E2_DIR_INIT #define E2_DIR_INIT() SET_OUTPUT(E2_DIR_PIN) - #define E2_DIR_WRITE(STATE) WRITE(E2_DIR_PIN,STATE) + #define E2_DIR_WRITE(STATE) WRITE(E2_DIR_PIN,INVERT_DIR(E2, STATE)) #define E2_DIR_READ() bool(READ(E2_DIR_PIN)) #endif #define E2_STEP_INIT() SET_OUTPUT(E2_STEP_PIN) @@ -374,7 +413,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef E3_DIR_INIT #define E3_DIR_INIT() SET_OUTPUT(E3_DIR_PIN) - #define E3_DIR_WRITE(STATE) WRITE(E3_DIR_PIN,STATE) + #define E3_DIR_WRITE(STATE) WRITE(E3_DIR_PIN,INVERT_DIR(E3, STATE)) #define E3_DIR_READ() bool(READ(E3_DIR_PIN)) #endif #define E3_STEP_INIT() SET_OUTPUT(E3_STEP_PIN) @@ -391,7 +430,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef E4_DIR_INIT #define E4_DIR_INIT() SET_OUTPUT(E4_DIR_PIN) - #define E4_DIR_WRITE(STATE) WRITE(E4_DIR_PIN,STATE) + #define E4_DIR_WRITE(STATE) WRITE(E4_DIR_PIN,INVERT_DIR(E4, STATE)) #define E4_DIR_READ() bool(READ(E4_DIR_PIN)) #endif #define E4_STEP_INIT() SET_OUTPUT(E4_STEP_PIN) @@ -408,7 +447,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef E5_DIR_INIT #define E5_DIR_INIT() SET_OUTPUT(E5_DIR_PIN) - #define E5_DIR_WRITE(STATE) WRITE(E5_DIR_PIN,STATE) + #define E5_DIR_WRITE(STATE) WRITE(E5_DIR_PIN,INVERT_DIR(E5, STATE)) #define E5_DIR_READ() bool(READ(E5_DIR_PIN)) #endif #define E5_STEP_INIT() SET_OUTPUT(E5_STEP_PIN) @@ -425,7 +464,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef E6_DIR_INIT #define E6_DIR_INIT() SET_OUTPUT(E6_DIR_PIN) - #define E6_DIR_WRITE(STATE) WRITE(E6_DIR_PIN,STATE) + #define E6_DIR_WRITE(STATE) WRITE(E6_DIR_PIN,INVERT_DIR(E6, STATE)) #define E6_DIR_READ() bool(READ(E6_DIR_PIN)) #endif #define E6_STEP_INIT() SET_OUTPUT(E6_STEP_PIN) @@ -442,7 +481,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #ifndef E7_DIR_INIT #define E7_DIR_INIT() SET_OUTPUT(E7_DIR_PIN) - #define E7_DIR_WRITE(STATE) WRITE(E7_DIR_PIN,STATE) + #define E7_DIR_WRITE(STATE) WRITE(E7_DIR_PIN,INVERT_DIR(E7, STATE)) #define E7_DIR_READ() bool(READ(E7_DIR_PIN)) #endif #define E7_STEP_INIT() SET_OUTPUT(E7_STEP_PIN) @@ -451,8 +490,6 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif #define E7_STEP_READ() bool(READ(E7_STEP_PIN)) -#define INVERT_DIR(AXIS, D) (TERN_(INVERT_## AXIS ##_DIR, !)(D)) - /** * Extruder indirection for the single E axis */ @@ -460,91 +497,91 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #if EXTRUDERS > 7 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else if (E < 6) { E2_STEP_WRITE(V); } else { E3_STEP_WRITE(V); } }while(0) #define FWD_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ - case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ - case 4: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; \ - case 6: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; case 7: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); break; \ + case 0: E0_DIR_WRITE(HIGH); break; case 1: E0_DIR_WRITE(LOW ); break; \ + case 2: E1_DIR_WRITE(HIGH); break; case 3: E1_DIR_WRITE(LOW ); break; \ + case 4: E2_DIR_WRITE(HIGH); break; case 5: E2_DIR_WRITE(LOW ); break; \ + case 6: E3_DIR_WRITE(HIGH); break; case 7: E3_DIR_WRITE(LOW ); break; \ } }while(0) #define REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; \ - case 2: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ - case 4: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; \ - case 6: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); break; case 7: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ + case 0: E0_DIR_WRITE(LOW ); break; case 1: E0_DIR_WRITE(HIGH); break; \ + case 2: E1_DIR_WRITE(LOW ); break; case 3: E1_DIR_WRITE(HIGH); break; \ + case 4: E2_DIR_WRITE(LOW ); break; case 5: E2_DIR_WRITE(HIGH); break; \ + case 6: E3_DIR_WRITE(LOW ); break; case 7: E3_DIR_WRITE(HIGH); break; \ } }while(0) #elif EXTRUDERS > 6 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else if (E < 6) { E2_STEP_WRITE(V); } else { E3_STEP_WRITE(V); } }while(0) #define FWD_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ - case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ - case 4: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; \ - case 6: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ + case 0: E0_DIR_WRITE(HIGH); break; case 1: E0_DIR_WRITE(LOW ); break; \ + case 2: E1_DIR_WRITE(HIGH); break; case 3: E1_DIR_WRITE(LOW ); break; \ + case 4: E2_DIR_WRITE(HIGH); break; case 5: E2_DIR_WRITE(LOW ); break; \ + case 6: E3_DIR_WRITE(HIGH); break; \ } }while(0) #define REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; \ - case 2: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ - case 4: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; \ - case 6: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); } }while(0) + case 0: E0_DIR_WRITE(LOW ); break; case 1: E0_DIR_WRITE(HIGH); break; \ + case 2: E1_DIR_WRITE(LOW ); break; case 3: E1_DIR_WRITE(HIGH); break; \ + case 4: E2_DIR_WRITE(LOW ); break; case 5: E2_DIR_WRITE(HIGH); break; \ + case 6: E3_DIR_WRITE(LOW ); } }while(0) #elif EXTRUDERS > 5 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else { E2_STEP_WRITE(V); } }while(0) #define FWD_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ - case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ - case 4: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; \ + case 0: E0_DIR_WRITE(HIGH); break; case 1: E0_DIR_WRITE(LOW ); break; \ + case 2: E1_DIR_WRITE(HIGH); break; case 3: E1_DIR_WRITE(LOW ); break; \ + case 4: E2_DIR_WRITE(HIGH); break; case 5: E2_DIR_WRITE(LOW ); break; \ } }while(0) #define REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; \ - case 2: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ - case 4: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 5: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; \ + case 0: E0_DIR_WRITE(LOW ); break; case 1: E0_DIR_WRITE(HIGH); break; \ + case 2: E1_DIR_WRITE(LOW ); break; case 3: E1_DIR_WRITE(HIGH); break; \ + case 4: E2_DIR_WRITE(LOW ); break; case 5: E2_DIR_WRITE(HIGH); break; \ } }while(0) #elif EXTRUDERS > 4 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else { E2_STEP_WRITE(V); } }while(0) #define FWD_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ - case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ - case 4: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; \ + case 0: E0_DIR_WRITE(HIGH); break; case 1: E0_DIR_WRITE(LOW ); break; \ + case 2: E1_DIR_WRITE(HIGH); break; case 3: E1_DIR_WRITE(LOW ); break; \ + case 4: E2_DIR_WRITE(HIGH); break; \ } }while(0) #define REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; \ - case 2: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ - case 4: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; \ + case 0: E0_DIR_WRITE(LOW ); break; case 1: E0_DIR_WRITE(HIGH); break; \ + case 2: E1_DIR_WRITE(LOW ); break; case 3: E1_DIR_WRITE(HIGH); break; \ + case 4: E2_DIR_WRITE(LOW ); break; \ } }while(0) #elif EXTRUDERS > 3 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0) #define FWD_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ - case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ + case 0: E0_DIR_WRITE(HIGH); break; case 1: E0_DIR_WRITE(LOW ); break; \ + case 2: E1_DIR_WRITE(HIGH); break; case 3: E1_DIR_WRITE(LOW ); break; \ } }while(0) #define REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; \ - case 2: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; case 3: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ + case 0: E0_DIR_WRITE(LOW ); break; case 1: E0_DIR_WRITE(HIGH); break; \ + case 2: E1_DIR_WRITE(LOW ); break; case 3: E1_DIR_WRITE(HIGH); break; \ } }while(0) #elif EXTRUDERS > 2 #define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0) #define FWD_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; \ - case 2: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ + case 0: E0_DIR_WRITE(HIGH); break; case 1: E0_DIR_WRITE(LOW ); break; \ + case 2: E1_DIR_WRITE(HIGH); break; \ } }while(0) #define REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; \ - case 2: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ + case 0: E0_DIR_WRITE(LOW ); break; case 1: E0_DIR_WRITE(HIGH); break; \ + case 2: E1_DIR_WRITE(LOW ); break; \ } }while(0) #else #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V) - #define FWD_E_DIR(E) do{ E0_DIR_WRITE(INVERT_DIR(E0, (E) ? LOW : HIGH)); }while(0) - #define REV_E_DIR(E) do{ E0_DIR_WRITE(INVERT_DIR(E0, (E) ? HIGH : LOW )); }while(0) + #define FWD_E_DIR(E) do{ E0_DIR_WRITE((E) ? LOW : HIGH); }while(0) + #define REV_E_DIR(E) do{ E0_DIR_WRITE((E) ? HIGH : LOW ); }while(0) #endif #elif HAS_PRUSA_MMU2 // One multiplexed stepper driver #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V) - #define FWD_E_DIR(E) E0_DIR_WRITE(INVERT_DIR(E0, HIGH)) - #define REV_E_DIR(E) E0_DIR_WRITE(INVERT_DIR(E0, LOW )) + #define FWD_E_DIR(E) E0_DIR_WRITE(HIGH) + #define REV_E_DIR(E) E0_DIR_WRITE(LOW ) #elif HAS_PRUSA_MMU1 // One multiplexed stepper driver, reversed on odd index #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V) - #define FWD_E_DIR(E) do{ E0_DIR_WRITE(INVERT_DIR(E0, TEST(E, 0) ? HIGH : LOW )); }while(0) - #define REV_E_DIR(E) do{ E0_DIR_WRITE(INVERT_DIR(E0, TEST(E, 0) ? LOW : HIGH)); }while(0) + #define FWD_E_DIR(E) do{ E0_DIR_WRITE(TEST(E, 0) ? HIGH : LOW ); }while(0) + #define REV_E_DIR(E) do{ E0_DIR_WRITE(TEST(E, 0) ? LOW : HIGH); }while(0) #elif E_STEPPERS > 1 @@ -555,16 +592,16 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 4: E4_STEP_WRITE(V); break; case 5: E5_STEP_WRITE(V); break; case 6: E6_STEP_WRITE(V); break; case 7: E7_STEP_WRITE(V); break; \ } }while(0) #define _FWD_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ - case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ - case 4: E4_DIR_WRITE(INVERT_DIR(E4, HIGH)); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, HIGH)); break; \ - case 6: E6_DIR_WRITE(INVERT_DIR(E6, HIGH)); break; case 7: E7_DIR_WRITE(INVERT_DIR(E7, HIGH)); break; \ + case 0: E0_DIR_WRITE(HIGH); break; case 1: E1_DIR_WRITE(HIGH); break; \ + case 2: E2_DIR_WRITE(HIGH); break; case 3: E3_DIR_WRITE(HIGH); break; \ + case 4: E4_DIR_WRITE(HIGH); break; case 5: E5_DIR_WRITE(HIGH); break; \ + case 6: E6_DIR_WRITE(HIGH); break; case 7: E7_DIR_WRITE(HIGH); break; \ } }while(0) #define _REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ - case 2: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); break; \ - case 4: E4_DIR_WRITE(INVERT_DIR(E4, LOW )); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, LOW )); break; \ - case 6: E6_DIR_WRITE(INVERT_DIR(E6, LOW )); break; case 7: E7_DIR_WRITE(INVERT_DIR(E7, LOW )); break; \ + case 0: E0_DIR_WRITE(LOW ); break; case 1: E1_DIR_WRITE(LOW ); break; \ + case 2: E2_DIR_WRITE(LOW ); break; case 3: E3_DIR_WRITE(LOW ); break; \ + case 4: E4_DIR_WRITE(LOW ); break; case 5: E5_DIR_WRITE(LOW ); break; \ + case 6: E6_DIR_WRITE(LOW ); break; case 7: E7_DIR_WRITE(LOW ); break; \ } }while(0) #elif E_STEPPERS > 6 @@ -574,16 +611,16 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 4: E4_STEP_WRITE(V); break; case 5: E5_STEP_WRITE(V); break; case 6: E6_STEP_WRITE(V); break; \ } }while(0) #define _FWD_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ - case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ - case 4: E4_DIR_WRITE(INVERT_DIR(E4, HIGH)); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, HIGH)); break; \ - case 6: E6_DIR_WRITE(INVERT_DIR(E6, HIGH)); break; \ + case 0: E0_DIR_WRITE(HIGH); break; case 1: E1_DIR_WRITE(HIGH); break; \ + case 2: E2_DIR_WRITE(HIGH); break; case 3: E3_DIR_WRITE(HIGH); break; \ + case 4: E4_DIR_WRITE(HIGH); break; case 5: E5_DIR_WRITE(HIGH); break; \ + case 6: E6_DIR_WRITE(HIGH); break; \ } }while(0) #define _REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ - case 2: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); break; \ - case 4: E4_DIR_WRITE(INVERT_DIR(E4, LOW )); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, LOW )); break; \ - case 6: E6_DIR_WRITE(INVERT_DIR(E6, LOW )); break; \ + case 0: E0_DIR_WRITE(LOW ); break; case 1: E1_DIR_WRITE(LOW ); break; \ + case 2: E2_DIR_WRITE(LOW ); break; case 3: E3_DIR_WRITE(LOW ); break; \ + case 4: E4_DIR_WRITE(LOW ); break; case 5: E5_DIR_WRITE(LOW ); break; \ + case 6: E6_DIR_WRITE(LOW ); break; \ } }while(0) #elif E_STEPPERS > 5 @@ -593,14 +630,14 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 4: E4_STEP_WRITE(V); break; case 5: E5_STEP_WRITE(V); break; \ } }while(0) #define _FWD_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ - case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ - case 4: E4_DIR_WRITE(INVERT_DIR(E4, HIGH)); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, HIGH)); break; \ + case 0: E0_DIR_WRITE(HIGH); break; case 1: E1_DIR_WRITE(HIGH); break; \ + case 2: E2_DIR_WRITE(HIGH); break; case 3: E3_DIR_WRITE(HIGH); break; \ + case 4: E4_DIR_WRITE(HIGH); break; case 5: E5_DIR_WRITE(HIGH); break; \ } }while(0) #define _REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ - case 2: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); break; \ - case 4: E4_DIR_WRITE(INVERT_DIR(E4, LOW )); break; case 5: E5_DIR_WRITE(INVERT_DIR(E5, LOW )); break; \ + case 0: E0_DIR_WRITE(LOW ); break; case 1: E1_DIR_WRITE(LOW ); break; \ + case 2: E2_DIR_WRITE(LOW ); break; case 3: E3_DIR_WRITE(LOW ); break; \ + case 4: E4_DIR_WRITE(LOW ); break; case 5: E5_DIR_WRITE(LOW ); break; \ } }while(0) #elif E_STEPPERS > 4 @@ -610,14 +647,14 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 4: E4_STEP_WRITE(V); break; \ } }while(0) #define _FWD_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ - case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ - case 4: E4_DIR_WRITE(INVERT_DIR(E4, HIGH)); break; \ + case 0: E0_DIR_WRITE(HIGH); break; case 1: E1_DIR_WRITE(HIGH); break; \ + case 2: E2_DIR_WRITE(HIGH); break; case 3: E3_DIR_WRITE(HIGH); break; \ + case 4: E4_DIR_WRITE(HIGH); break; \ } }while(0) #define _REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ - case 2: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); break; \ - case 4: E4_DIR_WRITE(INVERT_DIR(E4, LOW )); break; \ + case 0: E0_DIR_WRITE(LOW ); break; case 1: E1_DIR_WRITE(LOW ); break; \ + case 2: E2_DIR_WRITE(LOW ); break; case 3: E3_DIR_WRITE(LOW ); break; \ + case 4: E4_DIR_WRITE(LOW ); break; \ } }while(0) #elif E_STEPPERS > 3 @@ -626,25 +663,25 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \ } }while(0) #define _FWD_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; \ - case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, HIGH)); break; \ + case 0: E0_DIR_WRITE(HIGH); break; case 1: E1_DIR_WRITE(HIGH); break; \ + case 2: E2_DIR_WRITE(HIGH); break; case 3: E3_DIR_WRITE(HIGH); break; \ } }while(0) #define _REV_E_DIR(E) do{ switch (E) { \ - case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; \ - case 2: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); break; case 3: E3_DIR_WRITE(INVERT_DIR(E3, LOW )); break; \ + case 0: E0_DIR_WRITE(LOW ); break; case 1: E1_DIR_WRITE(LOW ); break; \ + case 2: E2_DIR_WRITE(LOW ); break; case 3: E3_DIR_WRITE(LOW ); break; \ } }while(0) #elif E_STEPPERS > 2 #define _E_STEP_WRITE(E,V) do{ switch (E) { case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); } }while(0) - #define _FWD_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); break; case 2: E2_DIR_WRITE(INVERT_DIR(E2, HIGH)); } }while(0) - #define _REV_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(INVERT_DIR(E0, LOW )); break; case 1: E1_DIR_WRITE(INVERT_DIR(E1, LOW )); break; case 2: E2_DIR_WRITE(INVERT_DIR(E2, LOW )); } }while(0) + #define _FWD_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(HIGH); break; case 1: E1_DIR_WRITE(HIGH); break; case 2: E2_DIR_WRITE(HIGH); } }while(0) + #define _REV_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(LOW ); break; case 1: E1_DIR_WRITE(LOW ); break; case 2: E2_DIR_WRITE(LOW ); } }while(0) #else #define _E_STEP_WRITE(E,V) do{ if (E == 0) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0) - #define _FWD_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE(INVERT_DIR(E0, HIGH)); } else { E1_DIR_WRITE(INVERT_DIR(E1, HIGH)); } }while(0) - #define _REV_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE(INVERT_DIR(E0, LOW )); } else { E1_DIR_WRITE(INVERT_DIR(E1, LOW )); } }while(0) + #define _FWD_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE(HIGH); } else { E1_DIR_WRITE(HIGH); } }while(0) + #define _REV_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE(LOW ); } else { E1_DIR_WRITE(LOW ); } }while(0) #endif #if HAS_DUPLICATION_MODE @@ -655,8 +692,8 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #define DUPE(N,T,V) E##N##_##T##_WRITE(V); #endif - #define NDIR(N) DUPE(N,DIR,INVERT_DIR(E, HIGH)); - #define RDIR(N) DUPE(N,DIR,INVERT_DIR(E, LOW )); + #define NDIR(N) DUPE(N,DIR,HIGH); + #define RDIR(N) DUPE(N,DIR,LOW ); #define E_STEP_WRITE(E,V) do{ if (extruder_duplication_enabled) { REPEAT2(E_STEPPERS, DUPE, STEP, V); } else _E_STEP_WRITE(E,V); }while(0) #define FWD_E_DIR(E) do{ if (extruder_duplication_enabled) { REPEAT(E_STEPPERS, NDIR); } else _FWD_E_DIR(E); }while(0) @@ -672,13 +709,13 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #elif ENABLED(E_DUAL_STEPPER_DRIVERS) #define E_STEP_WRITE(E,V) do{ E0_STEP_WRITE(V); E1_STEP_WRITE(V); }while(0) - #define FWD_E_DIR(E) do{ constexpr bool d = INVERT_DIR(E0, HIGH); E0_DIR_WRITE(d); E1_DIR_WRITE(INVERT_DIR(E1_VS_E0, d)); }while(0) - #define REV_E_DIR(E) do{ constexpr bool d = INVERT_DIR(E0, LOW ); E0_DIR_WRITE(d); E1_DIR_WRITE(INVERT_DIR(E1_VS_E0, d)); }while(0) + #define FWD_E_DIR(E) do{ E0_DIR_WRITE(HIGH); E1_DIR_WRITE(INVERT_DIR(E1_VS_E0, HIGH)); }while(0) + #define REV_E_DIR(E) do{ E0_DIR_WRITE(LOW ); E1_DIR_WRITE(INVERT_DIR(E1_VS_E0, LOW )); }while(0) -#elif E_STEPPERS +#elif E_STEPPERS == 1 #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V) - #define FWD_E_DIR(E) E0_DIR_WRITE(INVERT_DIR(E0, HIGH)) - #define REV_E_DIR(E) E0_DIR_WRITE(INVERT_DIR(E0, LOW )) + #define FWD_E_DIR(E) E0_DIR_WRITE(HIGH) + #define REV_E_DIR(E) E0_DIR_WRITE(LOW ) #else #define E_STEP_WRITE(E,V) NOOP From 664b35b77c0ddf9562de6e74dd253f5bb33ce6b0 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 5 May 2023 03:03:33 -0500 Subject: [PATCH 381/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Rep?= =?UTF-8?q?lace=20axis=5Fbits=5Ft=20with=20AxisBits=20class=20(#25761)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/types.h | 152 +++++++++++++++++++++++++++++++- Marlin/src/feature/backlash.cpp | 36 ++++---- Marlin/src/feature/backlash.h | 4 +- Marlin/src/feature/runout.h | 2 +- Marlin/src/module/ft_motion.cpp | 10 +-- Marlin/src/module/planner.cpp | 60 ++++++------- Marlin/src/module/planner.h | 2 +- Marlin/src/module/stepper.cpp | 70 ++++++--------- Marlin/src/module/stepper.h | 16 ++-- 9 files changed, 239 insertions(+), 113 deletions(-) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index af6834c666..c403e7439e 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -199,8 +199,6 @@ enum AxisEnum : uint8_t { , ALL_AXES_ENUM = 0xFE, NO_AXIS_ENUM = 0xFF }; -typedef bits_t(NUM_AXIS_ENUMS) axis_bits_t; - // // Loop over axes // @@ -789,6 +787,156 @@ struct XYZEval { FI bool operator!=(const XYZEval &rs) const { return !operator==(rs); } }; +#include // for memset + +class AxisBits; + +class AxisBits { +public: + typedef bits_t(NUM_AXIS_ENUMS) el; + union { + el bits; + struct { + union { + bool NUM_AXIS_LIST(x:1, y:1, z:1, i:1, j:1, k:1, u:1, v:1, w:1); + bool NUM_AXIS_LIST(X:1, Y:1, Z:1, I:1, J:1, K:1, U:1, V:1, W:1); + bool NUM_AXIS_LIST(a:1, b:1, c:1, _i:1, _j:1, _k:1, _u:1, _v:1, _w:1); + bool NUM_AXIS_LIST(A:1, B:1, C:1, _I:1, _J:1, _K:1, _U:1, _V:1, _W:1); + }; + #if HAS_EXTRUDERS + union { bool e:1; bool e0:1; }; + #define _EN_ITEM(N) bool e##N:1; + REPEAT_S(1,EXTRUDERS,_EN_ITEM) + #undef _EN_ITEM + #endif + #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) + bool hx:1, hy:1, hz:1; + #endif + }; + }; + + AxisBits() { bits = 0; } + + // Constructor, setter, and operator= for bit mask + AxisBits(const el p) { set(p); } + void set(const el p) { bits = el(p); } + FI AxisBits& operator=(const el p) { set(p); return *this; } + + #define MSET(pE,pX,pY,pZ,pI,pJ,pK,pU,pV,pW) LOGICAL_AXIS_CODE(e=pE, x=pX, y=pY, z=pZ, i=pI, j=pJ, k=pK, u=pU, v=pV, w=pW) + + // Constructor, setter, and operator= for XYZE type + AxisBits(const xyze_bool_t &p) { set(p); } + void set(const xyze_bool_t &p) { + MSET(p.e, p.x, p.y, p.z, p.i, p.j, p.k, p.u, p.v, p.w); + } + FI AxisBits& operator=(const xyze_bool_t &p) { set(p); return *this; } + + // Constructor, setter, and operator= for bool array + AxisBits(const bool (&p)[LOGICAL_AXES]) { set(p); } + void set(const bool (&p)[LOGICAL_AXES]) { + MSET(p[E_AXIS], p[X_AXIS], p[Y_AXIS], p[Z_AXIS], + p[I_AXIS], p[J_AXIS], p[K_AXIS], + p[U_AXIS], p[V_AXIS], p[W_AXIS]); + } + FI AxisBits& operator=(const bool (&p)[LOGICAL_AXES]) { set(p); return *this; } + + // Constructor, setter, and operator= for undersized bool arrays + #if LOGICAL_AXES > 1 + AxisBits(const bool (&p)[1]) { set(p); } + FI void set(const bool (&p)[1]) { + MSET(0, p[X_AXIS], 0, 0, 0, 0, 0, 0, 0, 0); + } + FI AxisBits& operator=(const bool (&p)[1]) { set(p); return *this; } + #endif + #if LOGICAL_AXES > 2 + AxisBits(const bool (&p)[2]) { set(p); } + FI void set(const bool (&p)[2]) { + MSET(0, p[X_AXIS], p[Y_AXIS], 0, 0, 0, 0, 0, 0, 0); + } + FI AxisBits& operator=(const bool (&p)[2]) { set(p); return *this; } + #endif + #if LOGICAL_AXES > 3 + AxisBits(const bool (&p)[3]) { set(p); } + FI void set(const bool (&p)[3]) { + MSET(0, p[X_AXIS], p[Y_AXIS], p[Z_AXIS], 0, 0, 0, 0, 0, 0); + } + FI AxisBits& operator=(const bool (&p)[3]) { set(p); return *this; } + #endif + #if LOGICAL_AXES > 4 + AxisBits(const bool (&p)[4]) { set(p); } + FI void set(const bool (&p)[4]) { + MSET(0, p[X_AXIS], p[Y_AXIS], p[Z_AXIS], p[I_AXIS], 0, 0, 0, 0, 0); + } + FI AxisBits& operator=(const bool (&p)[4]) { set(p); return *this; } + #endif + #if LOGICAL_AXES > 5 + AxisBits(const bool (&p)[5]) { set(p); } + FI void set(const bool (&p)[5]) { + MSET(0, p[X_AXIS], p[Y_AXIS], p[Z_AXIS], p[I_AXIS], p[J_AXIS], 0, 0, 0, 0); + } + FI AxisBits& operator=(const bool (&p)[5]) { set(p); return *this; } + #endif + #if LOGICAL_AXES > 6 + AxisBits(const bool (&p)[6]) { set(p); } + FI void set(const bool (&p)[6]) { + MSET(0, p[X_AXIS], p[Y_AXIS], p[Z_AXIS], p[I_AXIS], p[J_AXIS], p[K_AXIS], 0, 0, 0); + } + FI AxisBits& operator=(const bool (&p)[6]) { set(p); return *this; } + #endif + #if LOGICAL_AXES > 7 + AxisBits(const bool (&p)[7]) { set(p); } + FI void set(const bool (&p)[7]) { + MSET(0, p[X_AXIS], p[Y_AXIS], p[Z_AXIS], p[I_AXIS], p[J_AXIS], p[K_AXIS], p[U_AXIS], 0, 0); + } + FI AxisBits& operator=(const bool (&p)[7]) { set(p); return *this; } + #endif + #if LOGICAL_AXES > 8 + AxisBits(const bool (&p)[8]) { set(p); } + FI void set(const bool (&p)[8]) { + MSET(0, p[X_AXIS], p[Y_AXIS], p[Z_AXIS], p[I_AXIS], p[J_AXIS], p[K_AXIS], p[U_AXIS], p[V_AXIS], 0); + } + FI AxisBits& operator=(const bool (&p)[8]) { set(p); return *this; } + #endif + #if LOGICAL_AXES > 9 + AxisBits(const bool (&p)[9]) { set(p); } + FI void set(const bool (&p)[9]) { + MSET(0, p[X_AXIS], p[Y_AXIS], p[Z_AXIS], p[I_AXIS], p[J_AXIS], p[K_AXIS], p[U_AXIS], p[V_AXIS], p[W_AXIS]); + } + FI AxisBits& operator=(const bool (&p)[9]) { set(p); return *this; } + #endif + #undef MSET + + FI const bool toggle(const AxisEnum n) { return TBI(bits, n); } + + // Accessor via an AxisEnum (or any integer) [index] + FI const bool operator[](const int n) const { return TEST(bits, n); } + FI const bool operator[](const AxisEnum n) const { return TEST(bits, n); } + + FI AxisBits& operator|=(const el &p) { bits |= el(p); return *this; } + FI AxisBits& operator&=(const el &p) { bits &= el(p); return *this; } + FI AxisBits& operator^=(const el &p) { bits ^= el(p); return *this; } + + FI AxisBits& operator|=(const AxisBits &p) { bits |= p.bits; return *this; } + FI AxisBits& operator&=(const AxisBits &p) { bits &= p.bits; return *this; } + FI AxisBits& operator^=(const AxisBits &p) { bits ^= p.bits; return *this; } + + FI bool operator==(const AxisBits &p) const { return p.bits == bits; } + FI bool operator!=(const AxisBits &p) const { return p.bits != bits; } + + FI el operator|(const el &p) const { return bits | el(p); } + FI el operator&(const el &p) const { return bits & el(p); } + FI el operator^(const el &p) const { return bits ^ el(p); } + + FI AxisBits operator|(const AxisBits &p) const { return AxisBits(bits | p.bits); } + FI AxisBits operator&(const AxisBits &p) const { return AxisBits(bits & p.bits); } + FI AxisBits operator^(const AxisBits &p) const { return AxisBits(bits ^ p.bits); } + + FI operator bool() const { return !!bits; } + FI operator uint16_t() const { return uint16_t(bits & 0xFFFF); } + FI operator uint32_t() const { return uint32_t(bits); } + +}; + #undef _RECIP #undef _ABS #undef _LS diff --git a/Marlin/src/feature/backlash.cpp b/Marlin/src/feature/backlash.cpp index 13e2cd99ec..256488762a 100644 --- a/Marlin/src/feature/backlash.cpp +++ b/Marlin/src/feature/backlash.cpp @@ -29,7 +29,7 @@ #include "../module/motion.h" #include "../module/planner.h" -axis_bits_t Backlash::last_direction_bits; +AxisBits Backlash::last_direction_bits; xyz_long_t Backlash::residual_error{0}; #ifdef BACKLASH_DISTANCE_MM @@ -63,25 +63,25 @@ Backlash backlash; * spread over multiple segments, smoothing out artifacts even more. */ -void Backlash::add_correction_steps(const int32_t &da, const int32_t &db, const int32_t &dc, const axis_bits_t dm, block_t * const block) { - axis_bits_t changed_dir = last_direction_bits ^ dm; +void Backlash::add_correction_steps(const int32_t &da, const int32_t &db, const int32_t &dc, const AxisBits dm, block_t * const block) { + AxisBits changed_dir = last_direction_bits ^ dm; // Ignore direction change unless steps are taken in that direction #if DISABLED(CORE_BACKLASH) || EITHER(MARKFORGED_XY, MARKFORGED_YX) - if (!da) CBI(changed_dir, X_AXIS); - if (!db) CBI(changed_dir, Y_AXIS); - if (!dc) CBI(changed_dir, Z_AXIS); + if (!da) changed_dir.x = false; + if (!db) changed_dir.y = false; + if (!dc) changed_dir.z = false; #elif CORE_IS_XY - if (!(da + db)) CBI(changed_dir, X_AXIS); - if (!(da - db)) CBI(changed_dir, Y_AXIS); - if (!dc) CBI(changed_dir, Z_AXIS); + if (!(da + db)) changed_dir.x = false; + if (!(da - db)) changed_dir.y = false; + if (!dc) changed_dir.z = false; #elif CORE_IS_XZ - if (!(da + dc)) CBI(changed_dir, X_AXIS); - if (!(da - dc)) CBI(changed_dir, Z_AXIS); - if (!db) CBI(changed_dir, Y_AXIS); + if (!(da + dc)) changed_dir.x = false; + if (!(da - dc)) changed_dir.z = false; + if (!db) changed_dir.y = false; #elif CORE_IS_YZ - if (!(db + dc)) CBI(changed_dir, Y_AXIS); - if (!(db - dc)) CBI(changed_dir, Z_AXIS); - if (!da) CBI(changed_dir, X_AXIS); + if (!(db + dc)) changed_dir.y = false; + if (!(db - dc)) changed_dir.z = false; + if (!da) changed_dir.x = false; #endif last_direction_bits ^= changed_dir; @@ -99,10 +99,10 @@ void Backlash::add_correction_steps(const int32_t &da, const int32_t &db, const LOOP_NUM_AXES(axis) { if (distance_mm[axis]) { - const bool reverse = TEST(dm, axis); + const bool reverse = dm[axis]; // When an axis changes direction, add axis backlash to the residual error - if (TEST(changed_dir, axis)) + if (changed_dir[axis]) residual_error[axis] += (reverse ? -f_corr : f_corr) * distance_mm[axis] * planner.settings.axis_steps_per_mm[axis]; // Decide how much of the residual error to correct in this segment @@ -147,7 +147,7 @@ void Backlash::add_correction_steps(const int32_t &da, const int32_t &db, const int32_t Backlash::get_applied_steps(const AxisEnum axis) { if (axis >= NUM_AXES) return 0; - const bool reverse = TEST(last_direction_bits, axis); + const bool reverse = last_direction_bits[axis]; const int32_t residual_error_axis = residual_error[axis]; diff --git a/Marlin/src/feature/backlash.h b/Marlin/src/feature/backlash.h index 0bace526e5..14c0fe20e3 100644 --- a/Marlin/src/feature/backlash.h +++ b/Marlin/src/feature/backlash.h @@ -29,7 +29,7 @@ public: static constexpr uint8_t all_on = 0xFF, all_off = 0x00; private: - static axis_bits_t last_direction_bits; + static AxisBits last_direction_bits; static xyz_long_t residual_error; #if ENABLED(BACKLASH_GCODE) @@ -72,7 +72,7 @@ public: return has_measurement(X_AXIS) || has_measurement(Y_AXIS) || has_measurement(Z_AXIS); } - static void add_correction_steps(const int32_t &da, const int32_t &db, const int32_t &dc, const axis_bits_t dm, block_t * const block); + static void add_correction_steps(const int32_t &da, const int32_t &db, const int32_t &dc, const AxisBits dm, block_t * const block); static int32_t get_applied_steps(const AxisEnum axis); #if ENABLED(BACKLASH_GCODE) diff --git a/Marlin/src/feature/runout.h b/Marlin/src/feature/runout.h index fb4d0c2694..e6ca9f78cd 100644 --- a/Marlin/src/feature/runout.h +++ b/Marlin/src/feature/runout.h @@ -411,7 +411,7 @@ class FilamentSensorBase { // Only trigger on extrusion with XYZ movement to allow filament change and retract/recover. const uint8_t e = b->extruder; const int32_t steps = b->steps.e; - const float mm = (TEST(b->direction_bits, E_AXIS) ? -steps : steps) * planner.mm_per_step[E_AXIS_N(e)]; + const float mm = (b->direction_bits.e ? -steps : steps) * planner.mm_per_step[E_AXIS_N(e)]; if (e < NUM_RUNOUT_SENSORS) mm_countdown.runout[e] -= mm; #if ENABLED(FILAMENT_SWITCH_AND_MOTION) if (e < NUM_MOTION_SENSORS) mm_countdown.motion[e] -= mm; diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp index dfef961c79..2fe3802529 100644 --- a/Marlin/src/module/ft_motion.cpp +++ b/Marlin/src/module/ft_motion.cpp @@ -484,33 +484,33 @@ void FxdTiCtrl::loadBlockData(block_t * const current_block) { const float totalLength = current_block->millimeters, oneOverLength = 1.0f / totalLength; - const axis_bits_t direction = current_block->direction_bits; + const AxisBits direction = current_block->direction_bits; #if HAS_X_AXIS x_startPosn = x_endPosn_prevBlock; float x_moveDist = current_block->steps.a / planner.settings.axis_steps_per_mm[X_AXIS]; - if (TEST(direction, X_AXIS)) x_moveDist *= -1.0f; + if (direction.x) x_moveDist *= -1.0f; x_Ratio = x_moveDist * oneOverLength; #endif #if HAS_Y_AXIS y_startPosn = y_endPosn_prevBlock; float y_moveDist = current_block->steps.b / planner.settings.axis_steps_per_mm[Y_AXIS]; - if (TEST(direction, Y_AXIS)) y_moveDist *= -1.0f; + if (direction.y) y_moveDist *= -1.0f; y_Ratio = y_moveDist * oneOverLength; #endif #if HAS_Z_AXIS z_startPosn = z_endPosn_prevBlock; float z_moveDist = current_block->steps.c / planner.settings.axis_steps_per_mm[Z_AXIS]; - if (TEST(direction, Z_AXIS)) z_moveDist *= -1.0f; + if (direction.z) z_moveDist *= -1.0f; z_Ratio = z_moveDist * oneOverLength; #endif #if HAS_EXTRUDERS e_startPosn = e_endPosn_prevBlock; float extrusion = current_block->steps.e / planner.settings.axis_steps_per_mm[E_AXIS_N(current_block->extruder)]; - if (TEST(direction, E_AXIS_N(current_block->extruder))) extrusion *= -1.0f; + if (direction.e) extrusion *= -1.0f; e_Ratio = extrusion * oneOverLength; #endif diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index ccf27a502a..52519b805c 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -1968,54 +1968,50 @@ bool Planner::_populate_block( #endif // PREVENT_COLD_EXTRUSION || PREVENT_LENGTHY_EXTRUDE // Compute direction bit-mask for this block - axis_bits_t dm = 0; + AxisBits dm; #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) - if (da < 0) SBI(dm, X_HEAD); // Save the toolhead's true direction in X - if (db < 0) SBI(dm, Y_HEAD); // ...and Y - TERN_(HAS_Z_AXIS, if (dc < 0) SBI(dm, Z_AXIS)); + dm.hx = (da < 0); // Save the toolhead's true direction in X + dm.hy = (db < 0); // ...and Y + TERN_(HAS_Z_AXIS, dm.z = (dc < 0)); #endif #if IS_CORE #if CORE_IS_XY - if (da + db < 0) SBI(dm, A_AXIS); // Motor A direction - if (CORESIGN(da - db) < 0) SBI(dm, B_AXIS); // Motor B direction + dm.a = (da + db < 0); // Motor A direction + dm.b = (CORESIGN(da - db) < 0); // Motor B direction #elif CORE_IS_XZ - if (da < 0) SBI(dm, X_HEAD); // Save the toolhead's true direction in X - if (db < 0) SBI(dm, Y_AXIS); - if (dc < 0) SBI(dm, Z_HEAD); // ...and Z - if (da + dc < 0) SBI(dm, A_AXIS); // Motor A direction - if (CORESIGN(da - dc) < 0) SBI(dm, C_AXIS); // Motor C direction + dm.hx = (da < 0); // Save the toolhead's true direction in X + dm.y = (db < 0); + dm.hz = (dc < 0); // ...and Z + dm.a = (da + dc < 0); // Motor A direction + dm.c = (CORESIGN(da - dc) < 0); // Motor C direction #elif CORE_IS_YZ - if (da < 0) SBI(dm, X_AXIS); - if (db < 0) SBI(dm, Y_HEAD); // Save the toolhead's true direction in Y - if (dc < 0) SBI(dm, Z_HEAD); // ...and Z - if (db + dc < 0) SBI(dm, B_AXIS); // Motor B direction - if (CORESIGN(db - dc) < 0) SBI(dm, C_AXIS); // Motor C direction + dm.x = (da < 0); + dm.hy = (db < 0); // Save the toolhead's true direction in Y + dm.hz = (dc < 0); // ...and Z + dm.b = (db + dc < 0); // Motor B direction + dm.c = (CORESIGN(db - dc) < 0); // Motor C direction #endif #elif ENABLED(MARKFORGED_XY) - if (da + db < 0) SBI(dm, A_AXIS); // Motor A direction - if (db < 0) SBI(dm, B_AXIS); // Motor B direction + dm.a = (da + db < 0); // Motor A direction + dm.b = (db < 0); // Motor B direction #elif ENABLED(MARKFORGED_YX) - if (da < 0) SBI(dm, A_AXIS); // Motor A direction - if (db + da < 0) SBI(dm, B_AXIS); // Motor B direction + dm.a = (da < 0); // Motor A direction + dm.b = (db + da < 0); // Motor B direction #else XYZ_CODE( - if (da < 0) SBI(dm, X_AXIS), - if (db < 0) SBI(dm, Y_AXIS), - if (dc < 0) SBI(dm, Z_AXIS) + dm.x = (da < 0), + dm.y = (db < 0), + dm.z = (dc < 0) ); #endif SECONDARY_AXIS_CODE( - if (di < 0) SBI(dm, I_AXIS), - if (dj < 0) SBI(dm, J_AXIS), - if (dk < 0) SBI(dm, K_AXIS), - if (du < 0) SBI(dm, U_AXIS), - if (dv < 0) SBI(dm, V_AXIS), - if (dw < 0) SBI(dm, W_AXIS) + dm.i = (di < 0), dm.j = (dj < 0), dm.k = (dk < 0), + dm.u = (du < 0), dm.v = (dv < 0), dm.w = (dw < 0) ); #if HAS_EXTRUDERS - if (de < 0) SBI(dm, E_AXIS); + dm.e = (de < 0); const float esteps_float = de * e_factor[extruder]; const uint32_t esteps = ABS(esteps_float) + 0.5f; #else @@ -2435,11 +2431,11 @@ bool Planner::_populate_block( #ifdef XY_FREQUENCY_LIMIT - static axis_bits_t old_direction_bits; // = 0 + static AxisBits old_direction_bits; // = 0 if (xy_freq_limit_hz) { // Check and limit the xy direction change frequency - const axis_bits_t direction_change = block->direction_bits ^ old_direction_bits; + const AxisBits direction_change = block->direction_bits ^ old_direction_bits; old_direction_bits = block->direction_bits; segment_time_us = LROUND(float(segment_time_us) / speed_factor); diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index e072e94dbd..eb0f072f4b 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -246,7 +246,7 @@ typedef struct PlannerBlock { uint32_t acceleration_rate; // The acceleration rate used for acceleration calculation #endif - axis_bits_t direction_bits; // Direction bits set for this block, where 1 is negative motion + AxisBits direction_bits; // Direction bits set for this block, where 1 is negative motion // Advance extrusion #if ENABLED(LIN_ADVANCE) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 8a4d801e76..140a539ef3 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -166,8 +166,8 @@ stepper_flags_t Stepper::axis_enabled; // {0} block_t* Stepper::current_block; // (= nullptr) A pointer to the block currently being traced -axis_bits_t Stepper::last_direction_bits, // = 0 - Stepper::axis_did_move; // = 0 +AxisBits Stepper::last_direction_bits, // = 0 + Stepper::axis_did_move; // = 0 bool Stepper::abort_current_block; @@ -624,15 +624,11 @@ void Stepper::apply_directions() { DIR_WAIT_BEFORE(); - TERN_(HAS_X_DIR, SET_STEP_DIR(X)); // A - TERN_(HAS_Y_DIR, SET_STEP_DIR(Y)); // B - TERN_(HAS_Z_DIR, SET_STEP_DIR(Z)); // C - TERN_(HAS_I_DIR, SET_STEP_DIR(I)); - TERN_(HAS_J_DIR, SET_STEP_DIR(J)); - TERN_(HAS_K_DIR, SET_STEP_DIR(K)); - TERN_(HAS_U_DIR, SET_STEP_DIR(U)); - TERN_(HAS_V_DIR, SET_STEP_DIR(V)); - TERN_(HAS_W_DIR, SET_STEP_DIR(W)); + NUM_AXIS_CODE( + SET_STEP_DIR(X), SET_STEP_DIR(Y), SET_STEP_DIR(Z), // ABC + SET_STEP_DIR(I), SET_STEP_DIR(J), SET_STEP_DIR(K), + SET_STEP_DIR(U), SET_STEP_DIR(V), SET_STEP_DIR(W) + ); #if HAS_EXTRUDERS // Because this is valid for the whole block we don't know @@ -1829,7 +1825,7 @@ void Stepper::pulse_phase_isr() { de += step_fwd ? -128 : 128; \ if ((MAXDIR(AXIS) && step_bak) || (MINDIR(AXIS) && step_fwd)) { \ { USING_TIMED_PULSE(); START_TIMED_PULSE(); AWAIT_LOW_PULSE(); } \ - TBI(last_direction_bits, _AXIS(AXIS)); \ + last_direction_bits.toggle(_AXIS(AXIS)); \ DIR_WAIT_BEFORE(); \ SET_STEP_DIR(AXIS); \ DIR_WAIT_AFTER(); \ @@ -1861,11 +1857,11 @@ void Stepper::pulse_phase_isr() { #if STEPPER_PAGE_FORMAT == SP_4x4D_128 - #define PAGE_SEGMENT_UPDATE(AXIS, VALUE) do{ \ - if ((VALUE) < 7) SBI(dm, _AXIS(AXIS)); \ - else if ((VALUE) > 7) CBI(dm, _AXIS(AXIS)); \ - page_step_state.sd[_AXIS(AXIS)] = VALUE; \ - page_step_state.bd[_AXIS(AXIS)] += VALUE; \ + #define PAGE_SEGMENT_UPDATE(AXIS, VALUE) do{ \ + if ((VALUE) < 7) dm[_AXIS(AXIS)] = true; \ + else if ((VALUE) > 7) dm[_AXIS(AXIS)] = false; \ + page_step_state.sd[_AXIS(AXIS)] = VALUE; \ + page_step_state.bd[_AXIS(AXIS)] += VALUE; \ }while(0) #define PAGE_PULSE_PREP(AXIS) do{ \ @@ -1881,7 +1877,7 @@ void Stepper::pulse_phase_isr() { case 0: { const uint8_t low = page_step_state.page[page_step_state.segment_idx], high = page_step_state.page[page_step_state.segment_idx + 1]; - axis_bits_t dm = last_direction_bits; + const AxisBits dm = last_direction_bits; PAGE_SEGMENT_UPDATE(X, low >> 4); PAGE_SEGMENT_UPDATE(Y, low & 0xF); @@ -2417,7 +2413,7 @@ hal_timer_t Stepper::block_phase_isr() { la_interval = calc_timer_interval((reverse_e ? la_step_rate - step_rate : step_rate - la_step_rate) >> current_block->la_scaling); if (reverse_e != motor_direction(E_AXIS)) { - TBI(last_direction_bits, E_AXIS); + last_direction_bits.toggle(E_AXIS); count_direction.e = -count_direction.e; DIR_WAIT_BEFORE(); @@ -2648,7 +2644,7 @@ hal_timer_t Stepper::block_phase_isr() { #define Z_MOVE_TEST !!current_block->steps.c #endif - axis_bits_t axis_bits = 0; + AxisBits axis_bits; NUM_AXIS_CODE( if (X_MOVE_TEST) SBI(axis_bits, A_AXIS), if (Y_MOVE_TEST) SBI(axis_bits, B_AXIS), @@ -2692,24 +2688,24 @@ hal_timer_t Stepper::block_phase_isr() { #if ENABLED(INPUT_SHAPING_X) if (shaping_x.enabled) { - const int64_t steps = TEST(current_block->direction_bits, X_AXIS) ? -int64_t(current_block->steps.x) : int64_t(current_block->steps.x); + const int64_t steps = current_block->direction_bits.x ? -int64_t(current_block->steps.x) : int64_t(current_block->steps.x); shaping_x.last_block_end_pos += steps; // If there are any remaining echos unprocessed, then direction change must // be delayed and processed in PULSE_PREP_SHAPING. This will cause half a step // to be missed, which will need recovering and this can be done through shaping_x.remainder. - shaping_x.forward = !TEST(current_block->direction_bits, X_AXIS); - if (!ShapingQueue::empty_x()) SET_BIT_TO(current_block->direction_bits, X_AXIS, TEST(last_direction_bits, X_AXIS)); + shaping_x.forward = !current_block->direction_bits.x; + if (!ShapingQueue::empty_x()) current_block->direction_bits.x = last_direction_bits.x; } #endif // Y follows the same logic as X (but the comments aren't repeated) #if ENABLED(INPUT_SHAPING_Y) if (shaping_y.enabled) { - const int64_t steps = TEST(current_block->direction_bits, Y_AXIS) ? -int64_t(current_block->steps.y) : int64_t(current_block->steps.y); + const int64_t steps = current_block->direction_bits.y ? -int64_t(current_block->steps.y) : int64_t(current_block->steps.y); shaping_y.last_block_end_pos += steps; - shaping_y.forward = !TEST(current_block->direction_bits, Y_AXIS); - if (!ShapingQueue::empty_y()) SET_BIT_TO(current_block->direction_bits, Y_AXIS, TEST(last_direction_bits, Y_AXIS)); + shaping_y.forward = !current_block->direction_bits.y; + if (!ShapingQueue::empty_y()) current_block->direction_bits.y = last_direction_bits.y; } #endif @@ -2912,24 +2908,10 @@ void Stepper::init() { Z4_DIR_INIT(); #endif #endif - #if HAS_I_DIR - I_DIR_INIT(); - #endif - #if HAS_J_DIR - J_DIR_INIT(); - #endif - #if HAS_K_DIR - K_DIR_INIT(); - #endif - #if HAS_U_DIR - U_DIR_INIT(); - #endif - #if HAS_V_DIR - V_DIR_INIT(); - #endif - #if HAS_W_DIR - W_DIR_INIT(); - #endif + SECONDARY_AXIS_CODE( + I_DIR_INIT(), J_DIR_INIT(), K_DIR_INIT(), + U_DIR_INIT(), V_DIR_INIT(), W_DIR_INIT() + ); #if HAS_E0_DIR E0_DIR_INIT(); #endif diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 532db65dd9..9e45ffa45f 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -317,17 +317,17 @@ class Stepper { #endif #if ENABLED(FREEZE_FEATURE) - static bool frozen; // Set this flag to instantly freeze motion + static bool frozen; // Set this flag to instantly freeze motion #endif private: - static block_t* current_block; // A pointer to the block currently being traced + static block_t* current_block; // A pointer to the block currently being traced - static axis_bits_t last_direction_bits, // The next stepping-bits to be output - axis_did_move; // Last Movement in the given direction is not null, as computed when the last movement was fetched from planner + static AxisBits last_direction_bits, // The next stepping-bits to be output + axis_did_move; // Last Movement in the given direction is not null, as computed when the last movement was fetched from planner - static bool abort_current_block; // Signals to the stepper that current block should be aborted + static bool abort_current_block; // Signals to the stepper that current block should be aborted #if ENABLED(X_DUAL_ENDSTOPS) static bool locked_X_motor, locked_X2_motor; @@ -523,10 +523,10 @@ class Stepper { FORCE_INLINE static void quick_stop() { abort_current_block = true; } // The direction of a single motor. A true result indicates reversed or negative motion. - FORCE_INLINE static bool motor_direction(const AxisEnum axis) { return TEST(last_direction_bits, axis); } + FORCE_INLINE static bool motor_direction(const AxisEnum axis) { return last_direction_bits[axis]; } // The last movement direction was not null on the specified axis. Note that motor direction is not necessarily the same. - FORCE_INLINE static bool axis_is_moving(const AxisEnum axis) { return TEST(axis_did_move, axis); } + FORCE_INLINE static bool axis_is_moving(const AxisEnum axis) { return axis_did_move[axis]; } // Handle a triggered endstop static void endstop_triggered(const AxisEnum axis); @@ -626,7 +626,7 @@ class Stepper { static void apply_directions(); // Set direction bits and update all stepper DIR states - static void set_directions(const axis_bits_t bits) { + static void set_directions(const AxisBits bits) { last_direction_bits = bits; apply_directions(); } From f8570257f9595cd2c444a66325aefd8396c178f6 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 5 May 2023 15:37:27 -0500 Subject: [PATCH 382/659] =?UTF-8?q?=F0=9F=90=9B=20AxisBits=20union=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/types.h | 47 ++++++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index c403e7439e..e86880674b 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -796,21 +796,48 @@ public: typedef bits_t(NUM_AXIS_ENUMS) el; union { el bits; + // x, y, z ... e0, e1, e2 ... hx, hy, hz struct { - union { - bool NUM_AXIS_LIST(x:1, y:1, z:1, i:1, j:1, k:1, u:1, v:1, w:1); - bool NUM_AXIS_LIST(X:1, Y:1, Z:1, I:1, J:1, K:1, U:1, V:1, W:1); - bool NUM_AXIS_LIST(a:1, b:1, c:1, _i:1, _j:1, _k:1, _u:1, _v:1, _w:1); - bool NUM_AXIS_LIST(A:1, B:1, C:1, _I:1, _J:1, _K:1, _U:1, _V:1, _W:1); - }; - #if HAS_EXTRUDERS - union { bool e:1; bool e0:1; }; - #define _EN_ITEM(N) bool e##N:1; + bool NUM_AXIS_LIST(x:1, y:1, z:1, i:1, j:1, k:1, u:1, v:1, w:1); + #define _EN_ITEM(N) bool e##N:1; + REPEAT(EXTRUDERS,_EN_ITEM) + #undef _EN_ITEM + #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) + bool hx:1, hy:1, hz:1; + #endif + }; + // X, Y, Z ... E0, E1, E2 ... HX, HY, HZ + struct { + bool NUM_AXIS_LIST(X:1, Y:1, Z:1, I:1, J:1, K:1, U:1, V:1, W:1); + #define _EN_ITEM(N) bool E##N:1; + REPEAT(EXTRUDERS,_EN_ITEM) + #undef _EN_ITEM + #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) + bool HX:1, HY:1, HZ:1; + #endif + }; + // a, b, c, e ... ha, hb, hc + struct { + bool LOGICAL_AXIS_LIST(e:1, a:1, b:1, c:1, _i:1, _j:1, _k:1, _u:1, _v:1, _w:1); + #if EXTRUDERS > 1 + #define _EN_ITEM(N) bool _e##N:1; REPEAT_S(1,EXTRUDERS,_EN_ITEM) #undef _EN_ITEM #endif #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) - bool hx:1, hy:1, hz:1; + bool ha:1, hb:1, hc:1; + #endif + }; + // A, B, C, E ... HA, HB, HC + struct { + bool LOGICAL_AXIS_LIST(E:1, A:1, B:1, C:1, _I:1, _J:1, _K:1, _U:1, _V:1, _W:1); + #if EXTRUDERS > 1 + #define _EN_ITEM(N) bool _E##N:1; + REPEAT_S(1,EXTRUDERS,_EN_ITEM) + #undef _EN_ITEM + #endif + #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) + bool HA:1, HB:1, HC:1; #endif }; }; From 9cc16f87e225d4f9f4ca002b2c33a6fda3da5c25 Mon Sep 17 00:00:00 2001 From: Dmitry Plastinin Date: Sat, 6 May 2023 00:05:30 +0300 Subject: [PATCH 383/659] =?UTF-8?q?=F0=9F=9A=B8=20TS35=20portrait=20displa?= =?UTF-8?q?y=20(#25629)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_LCD.h | 11 ++- Marlin/src/lcd/tft/ui_480x320.cpp | 143 +++++++++++++++++------------- Marlin/src/lcd/tft/ui_480x320.h | 65 ++++++++++++++ 3 files changed, 155 insertions(+), 64 deletions(-) diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 44072ef4a2..bee4abf7a7 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -1686,8 +1686,13 @@ #define TFT_HEIGHT 272 #define GRAPHICAL_TFT_UPSCALE 2 #elif ENABLED(TFT_RES_480x320) - #define TFT_WIDTH 480 - #define TFT_HEIGHT 320 + #if ENABLED(TFT_COLOR_UI_PORTRAIT) + #define TFT_WIDTH 320 + #define TFT_HEIGHT 480 + #else + #define TFT_WIDTH 480 + #define TFT_HEIGHT 320 + #endif #define GRAPHICAL_TFT_UPSCALE 3 #elif ENABLED(TFT_RES_1024x600) #define TFT_WIDTH 1024 @@ -1708,7 +1713,7 @@ #elif ENABLED(TFT_INTERFACE_FSMC) #define TFT_320x240 #endif - #elif TFT_HEIGHT == 320 + #elif TFT_HEIGHT == 320 || (TFT_HEIGHT == 480 && ENABLED(TFT_COLOR_UI_PORTRAIT)) #if ENABLED(TFT_INTERFACE_SPI) #define TFT_480x320_SPI #elif ENABLED(TFT_INTERFACE_FSMC) diff --git a/Marlin/src/lcd/tft/ui_480x320.cpp b/Marlin/src/lcd/tft/ui_480x320.cpp index efb58754c7..bc4ea0e5e2 100644 --- a/Marlin/src/lcd/tft/ui_480x320.cpp +++ b/Marlin/src/lcd/tft/ui_480x320.cpp @@ -49,9 +49,9 @@ void MarlinUI::tft_idle() { #if ENABLED(TOUCH_SCREEN) if (TERN0(HAS_TOUCH_SLEEP, lcd_sleep_task())) return; if (draw_menu_navigation) { - add_control(104, TFT_HEIGHT - 34, PAGE_UP, imgPageUp, encoderTopLine > 0); - add_control(344, TFT_HEIGHT - 34, PAGE_DOWN, imgPageDown, encoderTopLine + LCD_HEIGHT < screen_items); - add_control(224, TFT_HEIGHT - 34, BACK, imgBack); + add_control(TFT_WIDTH / 6 - 16, TFT_HEIGHT - 34, PAGE_UP, imgPageUp, encoderTopLine > 0); + add_control(TFT_WIDTH / 2 - 16, TFT_HEIGHT - 34, PAGE_DOWN, imgPageDown, encoderTopLine + LCD_HEIGHT < screen_items); + add_control(5 * TFT_WIDTH / 6 - 16, TFT_HEIGHT - 34, BACK, imgBack); draw_menu_navigation = false; } #endif @@ -222,11 +222,10 @@ void MarlinUI::draw_status_screen() { TERN_(TOUCH_SCREEN, touch.clear()); - // heaters and fan - uint16_t i, x, y = TFT_STATUS_TOP_Y; - - for (i = 0 ; i < ITEMS_COUNT; i++) { - x = (TFT_WIDTH / ITEMS_COUNT - 80) / 2 + (TFT_WIDTH * i / ITEMS_COUNT); + // Statuses of heaters and fans + uint16_t y = STATUS_MARGIN_SIZE; + for (uint16_t i = 0; i < ITEMS_COUNT; i++) { + uint16_t x = (TFT_WIDTH / ITEMS_COUNT - 80) / 2 + (TFT_WIDTH * i / ITEMS_COUNT); switch (i) { #if HAS_EXTRUDERS case ITEM_E0: draw_heater_status(x, y, H_E0); break; @@ -252,12 +251,13 @@ void MarlinUI::draw_status_screen() { } } - y += TERN(HAS_UI_480x272, 120, 128); + y += STATUS_MARGIN_SIZE + 114; - // coordinates - tft.canvas(4, y, TFT_WIDTH - 8, FONT_LINE_HEIGHT); + // Coordinates + constexpr uint16_t coords_width = TFT_WIDTH - 8; + tft.canvas((TFT_WIDTH - coords_width) / 2, y, coords_width, FONT_LINE_HEIGHT); tft.set_background(COLOR_BACKGROUND); - tft.add_rectangle(0, 0, TFT_WIDTH - 8, FONT_LINE_HEIGHT, COLOR_AXIS_HOMED); + tft.add_rectangle(0, 0, coords_width, FONT_LINE_HEIGHT, COLOR_AXIS_HOMED); if (TERN0(LCD_SHOW_E_TOTAL, printingIsActive())) { #if ENABLED(LCD_SHOW_E_TOTAL) @@ -270,67 +270,86 @@ void MarlinUI::draw_status_screen() { #endif } else { - tft.add_text( 16, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED , "X"); + // Coords in mask "X____Y____Z____" + tft_string.set("X"); + tft.add_text(coords_width / 30 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, tft_string); + const bool nhx = axis_should_home(X_AXIS); tft_string.set(blink && nhx ? "?" : ftostr4sign(LOGICAL_X_POSITION(current_position.x))); - tft.add_text(102 - tft_string.width(), tft_string.vcenter(FONT_LINE_HEIGHT), nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + tft_string.ltrim(); + tft.add_text(coords_width / 5 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + + tft_string.set("Y"); + tft.add_text(11 * coords_width / 30 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, tft_string); - tft.add_text(192, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED , "Y"); const bool nhy = axis_should_home(Y_AXIS); tft_string.set(blink && nhy ? "?" : ftostr4sign(LOGICAL_Y_POSITION(current_position.y))); - tft.add_text(280 - tft_string.width(), tft_string.vcenter(FONT_LINE_HEIGHT), nhy ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + tft_string.ltrim(); + tft.add_text(8 * coords_width / 15 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), nhy ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); } - tft.add_text(330, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED , "Z"); - uint16_t offset = 32; - const bool nhz = axis_should_home(Z_AXIS); - if (blink && nhz) - tft_string.set('?'); - else { - const float z = LOGICAL_Z_POSITION(current_position.z); - tft_string.set(ftostr52sp((int16_t)z)); - tft_string.rtrim(); - offset += tft_string.width(); - tft_string.set(ftostr52sp(z)); - offset -= tft_string.width(); - } - tft.add_text(455 - tft_string.width() - offset, tft_string.vcenter(FONT_LINE_HEIGHT), nhz ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + tft_string.set("Z"); + tft.add_text(7 * coords_width / 10 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, tft_string); + + const bool nhz = axis_should_home(Z_AXIS); + tft_string.set(blink && nhz ? "?" : ftostr52sp(LOGICAL_Z_POSITION(current_position.z))); + tft_string.ltrim(); + tft_string.rtrim(); + tft.add_text(13 * coords_width / 15 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), nhz ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + TERN_(TOUCH_SCREEN, touch.add_control(MOVE_AXIS, 4, y, TFT_WIDTH - 8, FONT_LINE_HEIGHT)); - y += TERN(HAS_UI_480x272, 34, 48); - // feed rate - tft.canvas(96, y, 128, 32); - tft.set_background(COLOR_BACKGROUND); - uint16_t color = feedrate_percentage == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; - tft.add_image(0, 0, imgFeedRate, color); - tft_string.set(i16tostr3rj(feedrate_percentage)); - tft_string.add('%'); - tft.add_text(36, tft_string.vcenter(30), color , tft_string); - TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, 96, y, 128, 32)); + y += STATUS_MARGIN_SIZE + 34; - // flow rate - tft.canvas(284, y, 128, 32); + // Feed rate (preparing) + tft_string.set(i16tostr3rj(feedrate_percentage)); + tft_string.add("%"); + uint16_t component_width = 36 + tft_string.width(); // 32px icon size + 4px margin before text + uint16_t color = feedrate_percentage == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; + uint16_t x = FEEDRATE_X(component_width); + + // Feed rate (drawing) + tft.canvas(x, y, component_width, 32); tft.set_background(COLOR_BACKGROUND); - color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; - tft.add_image(0, 0, imgFlowRate, color); + tft.add_image(0, 0, imgFeedRate, color); + tft.add_text(36, tft_string.vcenter(30), color , tft_string); + TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, x, y, component_width, 32)); + + // Flow rate (preparing) tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); tft_string.add('%'); + component_width = 36 + tft_string.width(); + color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; + x = FLOWRATE_X(component_width); + + // Flow rate (drawing) + tft.canvas(x, y, component_width, 32); + tft.set_background(COLOR_BACKGROUND); + tft.add_image(0, 0, imgFlowRate, color); tft.add_text(36, tft_string.vcenter(30), color , tft_string); - TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, 284, y, 128, 32, active_extruder)); + TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, x, y, component_width, 32, active_extruder)); + + #if TFT_COLOR_UI_PORTRAIT || DISABLED(TOUCH_SCREEN) + y += STATUS_MARGIN_SIZE + 32; + #endif #if ENABLED(TOUCH_SCREEN) - add_control(404, y, menu_main, imgSettings); + // Settings button + add_control(SETTINGS_X, y, menu_main, imgSettings); + + // SD-card button / Cancel button #if HAS_MEDIA const bool cm = card.isMounted(), pa = printingIsActive(); if (cm && pa) - add_control(12, y, STOP, imgCancel, true, COLOR_CONTROL_CANCEL); + add_control(SDCARD_X, y, STOP, imgCancel, true, COLOR_CONTROL_CANCEL); else - add_control(12, y, menu_media, imgSD, cm && !pa, COLOR_CONTROL_ENABLED, COLOR_CONTROL_DISABLED); + add_control(SDCARD_X, y, menu_media, imgSD, cm && !pa, COLOR_CONTROL_ENABLED, COLOR_CONTROL_DISABLED); // 64px icon size #endif + + y += STATUS_MARGIN_SIZE + TERN(TFT_COLOR_UI_PORTRAIT, 64, 44); #endif - y += TERN(HAS_UI_480x272, 39, 44); - // print duration + // Print duration char buffer[14]; duration_t elapsed = print_job_timer.duration(); elapsed.toDigital(buffer); @@ -340,8 +359,9 @@ void MarlinUI::draw_status_screen() { tft_string.set(buffer); tft.add_text(tft_string.center(128), tft_string.vcenter(29), COLOR_PRINT_TIME, tft_string); - y += TERN(HAS_UI_480x272, 29, 36); - // progress bar + y += STATUS_MARGIN_SIZE + 29; + + // Progress bar const uint8_t progress = ui.get_progress_percent(); tft.canvas(4, y, TFT_WIDTH - 8, 9); tft.set_background(COLOR_PROGRESS_BG); @@ -349,8 +369,9 @@ void MarlinUI::draw_status_screen() { if (progress) tft.add_bar(1, 1, ((TFT_WIDTH - 10) * progress) / 100, 7, COLOR_PROGRESS_BAR); - y += 15; - // status message + y += STATUS_MARGIN_SIZE + 7; + + // Status message tft.canvas(0, y, TFT_WIDTH, FONT_LINE_HEIGHT); tft.set_background(COLOR_BACKGROUND); tft_string.set(status_message); @@ -397,7 +418,7 @@ void MenuEditItemBase::draw_edit_screen(FSTR_P const fstr, const char * const va if (ui.can_show_slider()) { - #define SLIDER_LENGTH 336 + #define SLIDER_LENGTH TFT_WIDTH * 0.7 #define SLIDER_Y_POSITION 186 tft.canvas((TFT_WIDTH - SLIDER_LENGTH) / 2, SLIDER_Y_POSITION, SLIDER_LENGTH, 16); @@ -420,9 +441,9 @@ void MenuEditItemBase::draw_edit_screen(FSTR_P const fstr, const char * const va void TFT::draw_edit_screen_buttons() { #if ENABLED(TOUCH_SCREEN) - add_control(64, TFT_HEIGHT - 64, DECREASE, imgDecrease); - add_control(352, TFT_HEIGHT - 64, INCREASE, imgIncrease); - add_control(208, TFT_HEIGHT - 64, CLICK, imgConfirm); + add_control((TFT_WIDTH - 3 * 64) / 6, TFT_HEIGHT - 64, DECREASE, imgDecrease); + add_control((TFT_WIDTH - 64) / 2, TFT_HEIGHT - 64, INCREASE, imgIncrease); + add_control((TFT_WIDTH * 5 - 3 * 64) / 6, TFT_HEIGHT - 64, CLICK, imgConfirm); #endif } @@ -451,8 +472,8 @@ void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, con tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); } #if ENABLED(TOUCH_SCREEN) - if (no) add_control( 88, TFT_HEIGHT - 64, CANCEL, imgCancel, true, yesno ? HALF(COLOR_CONTROL_CANCEL) : COLOR_CONTROL_CANCEL); - if (yes) add_control(328, TFT_HEIGHT - 64, CONFIRM, imgConfirm, true, yesno ? COLOR_CONTROL_CONFIRM : HALF(COLOR_CONTROL_CONFIRM)); + if (no) add_control(TFT_WIDTH / 4 - 32, TFT_HEIGHT - 64, CANCEL, imgCancel, true, yesno ? HALF(COLOR_CONTROL_CANCEL) : COLOR_CONTROL_CANCEL); + if (yes) add_control(TFT_WIDTH * 3 / 4 - 32, TFT_HEIGHT - 64, CONFIRM, imgConfirm, true, yesno ? COLOR_CONTROL_CONFIRM : HALF(COLOR_CONTROL_CONFIRM)); #endif } @@ -898,7 +919,7 @@ void MarlinUI::move_axis_screen() { drawAxisValue(Z_AXIS); // ROW 4 -> step_size disable steppers back - y = TFT_HEIGHT - Y_MARGIN - 32; // + y = TFT_HEIGHT - Y_MARGIN - 32; x = TFT_WIDTH / 2 - CUR_STEP_VALUE_WIDTH / 2; motionAxisState.stepValuePos.x = x; motionAxisState.stepValuePos.y = y; diff --git a/Marlin/src/lcd/tft/ui_480x320.h b/Marlin/src/lcd/tft/ui_480x320.h index d63ae02c09..00341650c1 100644 --- a/Marlin/src/lcd/tft/ui_480x320.h +++ b/Marlin/src/lcd/tft/ui_480x320.h @@ -63,4 +63,69 @@ #define MENU_LINE_HEIGHT (MENU_ITEM_HEIGHT + 2) +/** + * Status screen - portrait layout: + * + * | FAN E0 BED .. | - 120px + * | Coordinates | - FONT_LINE_HEIGHT + * | Feedrate Flowrate | - 32px + * | SD Settings | - 64px if ENABLED(TOUCHSCREEN), else 0px + * | Print duration time | - 29px + * | Progress bar | - 7px + * | Status message | - FONT_LINE_HEIGHT + * + * Summary with touchscreen: + * - Total height: 252px + 2 * FONT_LINE_HEIGHT (320px if FONT_LINE_HEIGHT is 34px) + * - Rows count: 7 + * - Margins count: 8 + * + * Summary without touchscreen: + * - Total height: 188px + 2 * FONT_LINE_HEIGHT (256px if FONT_LINE_HEIGHT is 34px) + * - Rows count: 6 + * - Margins count: 7 + * + * Status screen - landscape layout: + * + * | FAN E0 BED ... | - 120px + * | Coordinates | - FONT_LINE_HEIGHT + * | SD Flowrate Feedrate Settings | - 44px for TOUCHSCREEN, else 32px + * | Print duration time | - 29px + * | Progress bar | - 7px + * | Status message | - FONT_LINE_HEIGHT + * + * Summary with touchscreen: + * - Total height: 200px (268px if FONT_LINE_HEIGHT is 34px) + * - Rows count: 6 + * - Margins count: 7 + * + * Summary without touchscreen: + * - Total height: 188px + 2 * FONT_LINE_HEIGHT (256px if FONT_LINE_HEIGHT is 34px) + * - Rows count: 6 + * - Margins count: 7 + */ +#ifdef TFT_COLOR_UI_PORTRAIT + #if ENABLED(TOUCH_SCREEN) + #define STATUS_TOTAL_ROWS_HEIGHT (2 * FONT_LINE_HEIGHT + 120 + 32 + 64 + 29 + 7) + #define STATUS_MARGINS_REGIONS 8 + #else + #define STATUS_TOTAL_ROWS_HEIGHT (2 * FONT_LINE_HEIGHT + 120 + 32 + 29 + 7) + #define STATUS_MARGINS_REGIONS 7 + #endif + + #define FEEDRATE_X(W) ((TFT_WIDTH - 2 * (W)) / 4) + #define FLOWRATE_X(W) ((3 * TFT_WIDTH - 2 * (W)) / 4) + #define SETTINGS_X (3 * TFT_WIDTH / 4 - 32) + #define SDCARD_X (TFT_WIDTH / 4 - 32) +#else + #define STATUS_TOTAL_ROWS_HEIGHT (2 * FONT_LINE_HEIGHT + 120 + TERN(TOUCH_SCREEN, 44, 32) + 29 + 7) + #define STATUS_MARGINS_REGIONS 7 + + #define FEEDRATE_X(W) (3 * TFT_WIDTH / 8 - (W) / 2) + #define FLOWRATE_X(W) (5 * TFT_WIDTH / 8 - (W) / 2) + #define SETTINGS_X (TFT_WIDTH / 8 - 32) + #define SDCARD_X (7 * TFT_WIDTH / 8 - 32) +#endif + +#define STATUS_MARGIN_SIZE ((TFT_HEIGHT - STATUS_TOTAL_ROWS_HEIGHT) / STATUS_MARGINS_REGIONS) + #include "tft_font.h" From 2e06e05d7c2e823ca15bf987331619563577c514 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 6 May 2023 00:19:16 +0000 Subject: [PATCH 384/659] [cron] Bump distribution date (2023-05-06) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 8bf3b8b0bd..acd89bc7e8 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-05" +//#define STRING_DISTRIBUTION_DATE "2023-05-06" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index ff2447bfd0..c52c326374 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-05" + #define STRING_DISTRIBUTION_DATE "2023-05-06" #endif /** From 9b883704bc6a9269ec7bfbc1377050d579abcace Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 5 May 2023 19:31:18 -0500 Subject: [PATCH 385/659] =?UTF-8?q?=F0=9F=9A=B8=20Reorder=20some=20Menu=20?= =?UTF-8?q?Items?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/menu/menu_bed_leveling.cpp | 4 ++ Marlin/src/lcd/menu/menu_motion.cpp | 70 +++++++++++------------ 2 files changed, 39 insertions(+), 35 deletions(-) diff --git a/Marlin/src/lcd/menu/menu_bed_leveling.cpp b/Marlin/src/lcd/menu/menu_bed_leveling.cpp index a7fb54f68d..3d6af0012d 100644 --- a/Marlin/src/lcd/menu/menu_bed_leveling.cpp +++ b/Marlin/src/lcd/menu/menu_bed_leveling.cpp @@ -292,6 +292,10 @@ void menu_bed_leveling() { EDIT_ITEM(LCD_Z_OFFSET_TYPE, MSG_ZPROBE_ZOFFSET, &probe.offset.z, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX); #endif + #if ENABLED(PROBE_OFFSET_WIZARD) + SUBMENU(MSG_PROBE_WIZARD, goto_probe_offset_wizard); + #endif + #if ENABLED(LCD_BED_TRAMMING) SUBMENU(MSG_BED_TRAMMING, _lcd_bed_tramming); #endif diff --git a/Marlin/src/lcd/menu/menu_motion.cpp b/Marlin/src/lcd/menu/menu_motion.cpp index 200d46a8af..4c0b1e55a8 100644 --- a/Marlin/src/lcd/menu/menu_motion.cpp +++ b/Marlin/src/lcd/menu/menu_motion.cpp @@ -337,28 +337,6 @@ void menu_motion() { #endif #endif - // - // Auto-calibration - // - #if ENABLED(CALIBRATION_GCODE) - GCODES_ITEM(MSG_AUTO_CALIBRATE, F("G425")); - #endif - - // - // Auto Z-Align - // - #if EITHER(Z_STEPPER_AUTO_ALIGN, MECHANICAL_GANTRY_CALIBRATION) - GCODES_ITEM(MSG_AUTO_Z_ALIGN, F("G34")); - #endif - - // - // Probe Deploy/Stow - // - #if ENABLED(PROBE_DEPLOY_STOW_MENU) - GCODES_ITEM(MSG_MANUAL_DEPLOY, F("M401")); - GCODES_ITEM(MSG_MANUAL_STOW, F("M402")); - #endif - // // Pen up/down menu // @@ -367,19 +345,6 @@ void menu_motion() { GCODES_ITEM(MSG_MANUAL_PENDOWN, F("M280 P0 S50")); #endif - // Probe Offset Wizard - // - #if ENABLED(PROBE_OFFSET_WIZARD) - SUBMENU(MSG_PROBE_WIZARD, goto_probe_offset_wizard); - #endif - - // - // Assisted Bed Tramming - // - #if ENABLED(ASSISTED_TRAMMING_WIZARD) - SUBMENU(MSG_TRAMMING_WIZARD, goto_tramming_wizard); - #endif - // // Level Bed // @@ -410,14 +375,49 @@ void menu_motion() { #endif + // + // Assisted Bed Tramming + // + #if ENABLED(ASSISTED_TRAMMING_WIZARD) + SUBMENU(MSG_TRAMMING_WIZARD, goto_tramming_wizard); + #endif + + // + // Bed Tramming Submenu + // #if ENABLED(LCD_BED_TRAMMING) && DISABLED(LCD_BED_LEVELING) SUBMENU(MSG_BED_TRAMMING, _lcd_bed_tramming); #endif + // + // Auto Z-Align + // + #if EITHER(Z_STEPPER_AUTO_ALIGN, MECHANICAL_GANTRY_CALIBRATION) + GCODES_ITEM(MSG_AUTO_Z_ALIGN, F("G34")); + #endif + + // + // Probe Deploy/Stow + // + #if ENABLED(PROBE_DEPLOY_STOW_MENU) + GCODES_ITEM(MSG_MANUAL_DEPLOY, F("M401")); + GCODES_ITEM(MSG_MANUAL_STOW, F("M402")); + #endif + + // + // Probe Repeatability Test + // #if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) GCODES_ITEM(MSG_M48_TEST, F("G28O\nM48 P10")); #endif + // + // Auto-calibration with Object + // + #if ENABLED(CALIBRATION_GCODE) + GCODES_ITEM(MSG_AUTO_CALIBRATE, F("G425")); + #endif + // // Disable Steppers // From 85325f585ac4a9bb667423561540b5d58bdc3b6e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 5 May 2023 19:37:13 -0500 Subject: [PATCH 386/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20End?= =?UTF-8?q?stops=20preliminary=20work=20(#25780)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 1 - Marlin/src/HAL/AVR/endstop_interrupts.h | 56 +-- Marlin/src/HAL/DUE/endstop_interrupts.h | 58 +-- Marlin/src/HAL/ESP32/endstop_interrupts.h | 58 +-- Marlin/src/HAL/LPC1768/endstop_interrupts.h | 56 +-- Marlin/src/HAL/LPC1768/inc/SanityCheck.h | 4 +- Marlin/src/HAL/SAMD21/endstop_interrupts.h | 112 +++--- Marlin/src/HAL/SAMD51/endstop_interrupts.h | 104 +++--- Marlin/src/HAL/STM32/endstop_interrupts.h | 58 +-- Marlin/src/HAL/STM32F1/endstop_interrupts.h | 58 +-- .../src/HAL/TEENSY31_32/endstop_interrupts.h | 58 +-- .../src/HAL/TEENSY35_36/endstop_interrupts.h | 58 +-- .../src/HAL/TEENSY40_41/endstop_interrupts.h | 58 +-- Marlin/src/feature/tmc_util.h | 1 + Marlin/src/gcode/calibrate/G28.cpp | 2 +- Marlin/src/gcode/calibrate/G33.cpp | 3 +- Marlin/src/gcode/control/M605.cpp | 29 +- Marlin/src/inc/Conditionals_LCD.h | 6 +- Marlin/src/inc/Conditionals_adv.h | 7 +- Marlin/src/inc/Conditionals_post.h | 244 ++++++------- Marlin/src/inc/SanityCheck.h | 19 +- Marlin/src/inc/Warnings.cpp | 4 + Marlin/src/lcd/e3v2/proui/endstop_diag.cpp | 12 +- .../generic/endstop_state_screen.cpp | 10 +- Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp | 20 +- Marlin/src/lcd/extui/nextion/nextion_tft.cpp | 4 +- Marlin/src/module/endstops.cpp | 342 +++++++++--------- Marlin/src/module/endstops.h | 30 +- Marlin/src/module/motion.h | 2 +- Marlin/src/module/probe.cpp | 6 +- Marlin/src/module/probe.h | 2 +- Marlin/src/module/stepper/trinamic.cpp | 10 +- Marlin/src/pins/pins_postprocess.h | 36 +- 33 files changed, 764 insertions(+), 764 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 6f81aa4051..1a35c324b6 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -815,7 +815,6 @@ #define X1_MAX_POS X_BED_SIZE // A max coordinate so the X1 carriage can't hit the parked X2 carriage #define X2_MIN_POS 80 // A min coordinate so the X2 carriage can't hit the parked X1 carriage #define X2_MAX_POS 353 // The max position of the X2 carriage, typically also the home position - #define X2_HOME_DIR 1 // Set to 1. The X2 carriage always homes to the max endstop position #define X2_HOME_POS X2_MAX_POS // Default X2 home position. Set to X2_MAX_POS. // NOTE: For Dual X Carriage use M218 T1 Xn to override the X2_HOME_POS. // This allows recalibration of endstops distance without a rebuild. diff --git a/Marlin/src/HAL/AVR/endstop_interrupts.h b/Marlin/src/HAL/AVR/endstop_interrupts.h index a67b4493f0..ac827f1842 100644 --- a/Marlin/src/HAL/AVR/endstop_interrupts.h +++ b/Marlin/src/HAL/AVR/endstop_interrupts.h @@ -120,7 +120,7 @@ void pciSetup(const int8_t pin) { void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE) - #if HAS_X_MAX + #if USE_X_MAX #if (digitalPinToInterrupt(X_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(X_MAX_PIN); #else @@ -128,7 +128,7 @@ void setup_endstop_interrupts() { pciSetup(X_MAX_PIN); #endif #endif - #if HAS_X_MIN + #if USE_X_MIN #if (digitalPinToInterrupt(X_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(X_MIN_PIN); #else @@ -136,7 +136,7 @@ void setup_endstop_interrupts() { pciSetup(X_MIN_PIN); #endif #endif - #if HAS_Y_MAX + #if USE_Y_MAX #if (digitalPinToInterrupt(Y_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(Y_MAX_PIN); #else @@ -144,7 +144,7 @@ void setup_endstop_interrupts() { pciSetup(Y_MAX_PIN); #endif #endif - #if HAS_Y_MIN + #if USE_Y_MIN #if (digitalPinToInterrupt(Y_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(Y_MIN_PIN); #else @@ -152,7 +152,7 @@ void setup_endstop_interrupts() { pciSetup(Y_MIN_PIN); #endif #endif - #if HAS_Z_MAX + #if USE_Z_MAX #if (digitalPinToInterrupt(Z_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(Z_MAX_PIN); #else @@ -168,14 +168,14 @@ void setup_endstop_interrupts() { pciSetup(Z_MIN_PIN); #endif #endif - #if HAS_I_MAX + #if USE_I_MAX #if (digitalPinToInterrupt(I_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(I_MAX_PIN); #else static_assert(digitalPinHasPCICR(I_MAX_PIN), "I_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(I_MAX_PIN); #endif - #elif HAS_I_MIN + #elif USE_I_MIN #if (digitalPinToInterrupt(I_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(I_MIN_PIN); #else @@ -183,14 +183,14 @@ void setup_endstop_interrupts() { pciSetup(I_MIN_PIN); #endif #endif - #if HAS_J_MAX + #if USE_J_MAX #if (digitalPinToInterrupt(J_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(J_MAX_PIN); #else static_assert(digitalPinHasPCICR(J_MAX_PIN), "J_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(J_MAX_PIN); #endif - #elif HAS_J_MIN + #elif USE_J_MIN #if (digitalPinToInterrupt(J_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(J_MIN_PIN); #else @@ -198,14 +198,14 @@ void setup_endstop_interrupts() { pciSetup(J_MIN_PIN); #endif #endif - #if HAS_K_MAX + #if USE_K_MAX #if (digitalPinToInterrupt(K_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(K_MAX_PIN); #else static_assert(digitalPinHasPCICR(K_MAX_PIN), "K_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(K_MAX_PIN); #endif - #elif HAS_K_MIN + #elif USE_K_MIN #if (digitalPinToInterrupt(K_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(K_MIN_PIN); #else @@ -213,14 +213,14 @@ void setup_endstop_interrupts() { pciSetup(K_MIN_PIN); #endif #endif - #if HAS_U_MAX + #if USE_U_MAX #if (digitalPinToInterrupt(U_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(U_MAX_PIN); #else static_assert(digitalPinHasPCICR(U_MAX_PIN), "U_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(U_MAX_PIN); #endif - #elif HAS_U_MIN + #elif USE_U_MIN #if (digitalPinToInterrupt(U_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(U_MIN_PIN); #else @@ -228,14 +228,14 @@ void setup_endstop_interrupts() { pciSetup(U_MIN_PIN); #endif #endif - #if HAS_V_MAX + #if USE_V_MAX #if (digitalPinToInterrupt(V_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(V_MAX_PIN); #else static_assert(digitalPinHasPCICR(V_MAX_PIN), "V_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(V_MAX_PIN); #endif - #elif HAS_V_MIN + #elif USE_V_MIN #if (digitalPinToInterrupt(V_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(V_MIN_PIN); #else @@ -243,14 +243,14 @@ void setup_endstop_interrupts() { pciSetup(V_MIN_PIN); #endif #endif - #if HAS_W_MAX + #if USE_W_MAX #if (digitalPinToInterrupt(W_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(W_MAX_PIN); #else static_assert(digitalPinHasPCICR(W_MAX_PIN), "W_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."); pciSetup(W_MAX_PIN); #endif - #elif HAS_W_MIN + #elif USE_W_MIN #if (digitalPinToInterrupt(W_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(W_MIN_PIN); #else @@ -258,7 +258,7 @@ void setup_endstop_interrupts() { pciSetup(W_MIN_PIN); #endif #endif - #if HAS_X2_MAX + #if USE_X2_MAX #if (digitalPinToInterrupt(X2_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(X2_MAX_PIN); #else @@ -266,7 +266,7 @@ void setup_endstop_interrupts() { pciSetup(X2_MAX_PIN); #endif #endif - #if HAS_X2_MIN + #if USE_X2_MIN #if (digitalPinToInterrupt(X2_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(X2_MIN_PIN); #else @@ -274,7 +274,7 @@ void setup_endstop_interrupts() { pciSetup(X2_MIN_PIN); #endif #endif - #if HAS_Y2_MAX + #if USE_Y2_MAX #if (digitalPinToInterrupt(Y2_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(Y2_MAX_PIN); #else @@ -282,7 +282,7 @@ void setup_endstop_interrupts() { pciSetup(Y2_MAX_PIN); #endif #endif - #if HAS_Y2_MIN + #if USE_Y2_MIN #if (digitalPinToInterrupt(Y2_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(Y2_MIN_PIN); #else @@ -290,7 +290,7 @@ void setup_endstop_interrupts() { pciSetup(Y2_MIN_PIN); #endif #endif - #if HAS_Z2_MAX + #if USE_Z2_MAX #if (digitalPinToInterrupt(Z2_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(Z2_MAX_PIN); #else @@ -298,7 +298,7 @@ void setup_endstop_interrupts() { pciSetup(Z2_MAX_PIN); #endif #endif - #if HAS_Z2_MIN + #if USE_Z2_MIN #if (digitalPinToInterrupt(Z2_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(Z2_MIN_PIN); #else @@ -306,7 +306,7 @@ void setup_endstop_interrupts() { pciSetup(Z2_MIN_PIN); #endif #endif - #if HAS_Z3_MAX + #if USE_Z3_MAX #if (digitalPinToInterrupt(Z3_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(Z3_MAX_PIN); #else @@ -314,7 +314,7 @@ void setup_endstop_interrupts() { pciSetup(Z3_MAX_PIN); #endif #endif - #if HAS_Z3_MIN + #if USE_Z3_MIN #if (digitalPinToInterrupt(Z3_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(Z3_MIN_PIN); #else @@ -322,7 +322,7 @@ void setup_endstop_interrupts() { pciSetup(Z3_MIN_PIN); #endif #endif - #if HAS_Z4_MAX + #if USE_Z4_MAX #if (digitalPinToInterrupt(Z4_MAX_PIN) != NOT_AN_INTERRUPT) _ATTACH(Z4_MAX_PIN); #else @@ -330,7 +330,7 @@ void setup_endstop_interrupts() { pciSetup(Z4_MAX_PIN); #endif #endif - #if HAS_Z4_MIN + #if USE_Z4_MIN #if (digitalPinToInterrupt(Z4_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(Z4_MIN_PIN); #else @@ -338,7 +338,7 @@ void setup_endstop_interrupts() { pciSetup(Z4_MIN_PIN); #endif #endif - #if HAS_Z_MIN_PROBE_PIN + #if USE_Z_MIN_PROBE #if (digitalPinToInterrupt(Z_MIN_PROBE_PIN) != NOT_AN_INTERRUPT) _ATTACH(Z_MIN_PROBE_PIN); #else diff --git a/Marlin/src/HAL/DUE/endstop_interrupts.h b/Marlin/src/HAL/DUE/endstop_interrupts.h index 9ce4fcdb2f..28510fb508 100644 --- a/Marlin/src/HAL/DUE/endstop_interrupts.h +++ b/Marlin/src/HAL/DUE/endstop_interrupts.h @@ -47,33 +47,33 @@ void endstop_ISR() { endstops.update(); } void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE) - TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); - TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); - TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); - TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); - TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); - TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); - TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); - TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); - TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); - TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); - TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); - TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); - TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); - TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); - TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); - TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN)); - TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); - TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); - TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); - TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); - TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); - TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); - TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); - TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); - TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); - TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); - TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); - TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); + TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN)); + TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN)); + TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN)); + TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN)); + TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN)); + TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN)); + TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN)); + TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN)); + TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN)); + TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN)); + TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN)); + TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN)); + TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN)); + TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN)); + TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN)); + TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN)); + TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN)); + TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN)); + TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN)); + TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN)); + TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN)); + TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN)); + TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN)); + TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN)); + TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN)); + TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN)); + TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN)); } diff --git a/Marlin/src/HAL/ESP32/endstop_interrupts.h b/Marlin/src/HAL/ESP32/endstop_interrupts.h index f48cda4511..43f4975d46 100644 --- a/Marlin/src/HAL/ESP32/endstop_interrupts.h +++ b/Marlin/src/HAL/ESP32/endstop_interrupts.h @@ -42,33 +42,33 @@ void ICACHE_RAM_ATTR endstop_ISR() { endstops.update(); } void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE) - TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); - TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); - TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); - TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); - TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); - TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); - TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); - TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); - TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); - TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); - TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); - TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); - TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); - TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); - TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); - TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN)); - TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); - TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); - TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); - TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); - TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); - TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); - TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); - TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); - TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); - TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); - TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); - TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); + TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN)); + TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN)); + TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN)); + TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN)); + TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN)); + TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN)); + TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN)); + TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN)); + TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN)); + TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN)); + TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN)); + TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN)); + TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN)); + TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN)); + TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN)); + TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN)); + TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN)); + TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN)); + TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN)); + TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN)); + TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN)); + TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN)); + TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN)); + TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN)); + TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN)); + TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN)); + TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN)); } diff --git a/Marlin/src/HAL/LPC1768/endstop_interrupts.h b/Marlin/src/HAL/LPC1768/endstop_interrupts.h index 2253b92627..cd9de25477 100644 --- a/Marlin/src/HAL/LPC1768/endstop_interrupts.h +++ b/Marlin/src/HAL/LPC1768/endstop_interrupts.h @@ -44,31 +44,31 @@ void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE) #define LPC1768_PIN_INTERRUPT_M(pin) ((pin >> 0x5 & 0x7) == 0 || (pin >> 0x5 & 0x7) == 2) - #if HAS_X_MAX + #if USE_X_MAX #if !LPC1768_PIN_INTERRUPT_M(X_MAX_PIN) #error "X_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(X_MAX_PIN); #endif - #if HAS_X_MIN + #if USE_X_MIN #if !LPC1768_PIN_INTERRUPT_M(X_MIN_PIN) #error "X_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(X_MIN_PIN); #endif - #if HAS_Y_MAX + #if USE_Y_MAX #if !LPC1768_PIN_INTERRUPT_M(Y_MAX_PIN) #error "Y_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Y_MAX_PIN); #endif - #if HAS_Y_MIN + #if USE_Y_MIN #if !LPC1768_PIN_INTERRUPT_M(Y_MIN_PIN) #error "Y_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Y_MIN_PIN); #endif - #if HAS_Z_MAX + #if USE_Z_MAX #if !LPC1768_PIN_INTERRUPT_M(Z_MAX_PIN) #error "Z_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif @@ -80,133 +80,133 @@ void setup_endstop_interrupts() { #endif _ATTACH(Z_MIN_PIN); #endif - #if HAS_X2_MAX + #if USE_X2_MAX #if !LPC1768_PIN_INTERRUPT_M(X2_MAX_PIN) #error "X2_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(X2_MAX_PIN); #endif - #if HAS_X2_MIN + #if USE_X2_MIN #if !LPC1768_PIN_INTERRUPT_M(X2_MIN_PIN) #error "X2_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(X2_MIN_PIN); #endif - #if HAS_Y2_MAX + #if USE_Y2_MAX #if !LPC1768_PIN_INTERRUPT_M(Y2_MAX_PIN) #error "Y2_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Y2_MAX_PIN); #endif - #if HAS_Y2_MIN + #if USE_Y2_MIN #if !LPC1768_PIN_INTERRUPT_M(Y2_MIN_PIN) #error "Y2_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Y2_MIN_PIN); #endif - #if HAS_Z2_MAX + #if USE_Z2_MAX #if !LPC1768_PIN_INTERRUPT_M(Z2_MAX_PIN) #error "Z2_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z2_MAX_PIN); #endif - #if HAS_Z2_MIN + #if USE_Z2_MIN #if !LPC1768_PIN_INTERRUPT_M(Z2_MIN_PIN) #error "Z2_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z2_MIN_PIN); #endif - #if HAS_Z3_MAX + #if USE_Z3_MAX #if !LPC1768_PIN_INTERRUPT_M(Z3_MAX_PIN) #error "Z3_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z3_MAX_PIN); #endif - #if HAS_Z3_MIN + #if USE_Z3_MIN #if !LPC1768_PIN_INTERRUPT_M(Z3_MIN_PIN) #error "Z3_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z3_MIN_PIN); #endif - #if HAS_Z4_MAX + #if USE_Z4_MAX #if !LPC1768_PIN_INTERRUPT_M(Z4_MAX_PIN) #error "Z4_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z4_MAX_PIN); #endif - #if HAS_Z4_MIN + #if USE_Z4_MIN #if !LPC1768_PIN_INTERRUPT_M(Z4_MIN_PIN) #error "Z4_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z4_MIN_PIN); #endif - #if HAS_Z_MIN_PROBE_PIN + #if USE_Z_MIN_PROBE #if !LPC1768_PIN_INTERRUPT_M(Z_MIN_PROBE_PIN) #error "Z_MIN_PROBE_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z_MIN_PROBE_PIN); #endif - #if HAS_I_MAX + #if USE_I_MAX #if !LPC1768_PIN_INTERRUPT_M(I_MAX_PIN) #error "I_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(I_MAX_PIN); - #elif HAS_I_MIN + #elif USE_I_MIN #if !LPC1768_PIN_INTERRUPT_M(I_MIN_PIN) #error "I_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(I_MIN_PIN); #endif - #if HAS_J_MAX + #if USE_J_MAX #if !LPC1768_PIN_INTERRUPT_M(J_MAX_PIN) #error "J_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(J_MAX_PIN); - #elif HAS_J_MIN + #elif USE_J_MIN #if !LPC1768_PIN_INTERRUPT_M(J_MIN_PIN) #error "J_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(J_MIN_PIN); #endif - #if HAS_K_MAX + #if USE_K_MAX #if !LPC1768_PIN_INTERRUPT_M(K_MAX_PIN) #error "K_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(K_MAX_PIN); - #elif HAS_K_MIN + #elif USE_K_MIN #if !LPC1768_PIN_INTERRUPT_M(K_MIN_PIN) #error "K_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(K_MIN_PIN); #endif - #if HAS_U_MAX + #if USE_U_MAX #if !LPC1768_PIN_INTERRUPT_M(U_MAX_PIN) #error "U_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(U_MAX_PIN); - #elif HAS_U_MIN + #elif USE_U_MIN #if !LPC1768_PIN_INTERRUPT_M(U_MIN_PIN) #error "U_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(U_MIN_PIN); #endif - #if HAS_V_MAX + #if USE_V_MAX #if !LPC1768_PIN_INTERRUPT_M(V_MAX_PIN) #error "V_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(V_MAX_PIN); - #elif HAS_V_MIN + #elif USE_V_MIN #if !LPC1768_PIN_INTERRUPT_M(V_MIN_PIN) #error "V_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(V_MIN_PIN); #endif - #if HAS_W_MAX + #if USE_W_MAX #if !LPC1768_PIN_INTERRUPT_M(W_MAX_PIN) #error "W_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(W_MAX_PIN); - #elif HAS_W_MIN + #elif USE_W_MIN #if !LPC1768_PIN_INTERRUPT_M(W_MIN_PIN) #error "W_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif diff --git a/Marlin/src/HAL/LPC1768/inc/SanityCheck.h b/Marlin/src/HAL/LPC1768/inc/SanityCheck.h index f49bc34c92..2782f225b0 100644 --- a/Marlin/src/HAL/LPC1768/inc/SanityCheck.h +++ b/Marlin/src/HAL/LPC1768/inc/SanityCheck.h @@ -150,7 +150,7 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o #error "Serial port pins (2) conflict with other pins!" #elif Y_HOME_TO_MIN && IS_TX2(Y_STOP_PIN) #error "Serial port pins (2) conflict with Y endstop pin!" - #elif USES_Z_MIN_PROBE_PIN && IS_TX2(Z_MIN_PROBE_PIN) + #elif USE_Z_MIN_PROBE && IS_TX2(Z_MIN_PROBE_PIN) #error "Serial port pins (2) conflict with probe pin!" #elif ANY_TX(2, X_ENABLE_PIN, Y_ENABLE_PIN) || ANY_RX(2, X_DIR_PIN, Y_DIR_PIN) #error "Serial port pins (2) conflict with X/Y stepper pins!" @@ -241,7 +241,7 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o #define PIN_IS_SCL2(P) (P##_PIN == P0_11) #if PIN_IS_SDA2(Y_STOP) #error "i2c SDA2 overlaps with Y endstop pin!" - #elif USES_Z_MIN_PROBE_PIN && PIN_IS_SDA2(Z_MIN_PROBE) + #elif USE_Z_MIN_PROBE && PIN_IS_SDA2(Z_MIN_PROBE) #error "i2c SDA2 overlaps with Z probe pin!" #elif PIN_IS_SDA2(X_ENABLE) || PIN_IS_SDA2(Y_ENABLE) #error "i2c SDA2 overlaps with X/Y ENABLE pin!" diff --git a/Marlin/src/HAL/SAMD21/endstop_interrupts.h b/Marlin/src/HAL/SAMD21/endstop_interrupts.h index a277e04097..31414a39e3 100644 --- a/Marlin/src/HAL/SAMD21/endstop_interrupts.h +++ b/Marlin/src/HAL/SAMD21/endstop_interrupts.h @@ -54,35 +54,35 @@ #include "../../module/endstops.h" #define MATCH_EILINE(P1,P2) (P1 != P2 && PIN_TO_EILINE(P1) == PIN_TO_EILINE(P2)) -#define MATCH_X_MAX_EILINE(P) TERN0(HAS_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN)) -#define MATCH_X_MIN_EILINE(P) TERN0(HAS_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN)) -#define MATCH_Y_MAX_EILINE(P) TERN0(HAS_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN)) -#define MATCH_Y_MIN_EILINE(P) TERN0(HAS_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN)) -#define MATCH_Z_MAX_EILINE(P) TERN0(HAS_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN)) +#define MATCH_X_MAX_EILINE(P) TERN0(USE_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN)) +#define MATCH_X_MIN_EILINE(P) TERN0(USE_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN)) +#define MATCH_Y_MAX_EILINE(P) TERN0(USE_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN)) +#define MATCH_Y_MIN_EILINE(P) TERN0(USE_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN)) +#define MATCH_Z_MAX_EILINE(P) TERN0(USE_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN)) #define MATCH_Z_MIN_EILINE(P) TERN0(HAS_Z_MIN_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PIN)) -#define MATCH_I_MAX_EILINE(P) TERN0(HAS_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN)) -#define MATCH_I_MIN_EILINE(P) TERN0(HAS_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN)) -#define MATCH_J_MAX_EILINE(P) TERN0(HAS_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN)) -#define MATCH_J_MIN_EILINE(P) TERN0(HAS_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN)) -#define MATCH_K_MAX_EILINE(P) TERN0(HAS_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN)) -#define MATCH_K_MIN_EILINE(P) TERN0(HAS_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN)) -#define MATCH_U_MAX_EILINE(P) TERN0(HAS_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN)) -#define MATCH_U_MIN_EILINE(P) TERN0(HAS_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN)) -#define MATCH_V_MAX_EILINE(P) TERN0(HAS_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN)) -#define MATCH_V_MIN_EILINE(P) TERN0(HAS_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN)) -#define MATCH_W_MAX_EILINE(P) TERN0(HAS_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN)) -#define MATCH_W_MIN_EILINE(P) TERN0(HAS_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN)) -#define MATCH_X2_MAX_EILINE(P) TERN0(HAS_X2_MAX, DEFER4(MATCH_EILINE)(P, X2_MAX_PIN)) -#define MATCH_X2_MIN_EILINE(P) TERN0(HAS_X2_MIN, DEFER4(MATCH_EILINE)(P, X2_MIN_PIN)) -#define MATCH_Y2_MAX_EILINE(P) TERN0(HAS_Y2_MAX, DEFER4(MATCH_EILINE)(P, Y2_MAX_PIN)) -#define MATCH_Y2_MIN_EILINE(P) TERN0(HAS_Y2_MIN, DEFER4(MATCH_EILINE)(P, Y2_MIN_PIN)) -#define MATCH_Z2_MAX_EILINE(P) TERN0(HAS_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN)) -#define MATCH_Z2_MIN_EILINE(P) TERN0(HAS_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN)) -#define MATCH_Z3_MAX_EILINE(P) TERN0(HAS_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN)) -#define MATCH_Z3_MIN_EILINE(P) TERN0(HAS_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN)) -#define MATCH_Z4_MAX_EILINE(P) TERN0(HAS_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN)) -#define MATCH_Z4_MIN_EILINE(P) TERN0(HAS_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN)) -#define MATCH_Z_MIN_PROBE_EILINE(P) TERN0(HAS_Z_MIN_PROBE_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PROBE_PIN)) +#define MATCH_I_MAX_EILINE(P) TERN0(USE_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN)) +#define MATCH_I_MIN_EILINE(P) TERN0(USE_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN)) +#define MATCH_J_MAX_EILINE(P) TERN0(USE_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN)) +#define MATCH_J_MIN_EILINE(P) TERN0(USE_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN)) +#define MATCH_K_MAX_EILINE(P) TERN0(USE_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN)) +#define MATCH_K_MIN_EILINE(P) TERN0(USE_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN)) +#define MATCH_U_MAX_EILINE(P) TERN0(USE_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN)) +#define MATCH_U_MIN_EILINE(P) TERN0(USE_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN)) +#define MATCH_V_MAX_EILINE(P) TERN0(USE_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN)) +#define MATCH_V_MIN_EILINE(P) TERN0(USE_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN)) +#define MATCH_W_MAX_EILINE(P) TERN0(USE_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN)) +#define MATCH_W_MIN_EILINE(P) TERN0(USE_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN)) +#define MATCH_X2_MAX_EILINE(P) TERN0(USE_X2_MAX, DEFER4(MATCH_EILINE)(P, X2_MAX_PIN)) +#define MATCH_X2_MIN_EILINE(P) TERN0(USE_X2_MIN, DEFER4(MATCH_EILINE)(P, X2_MIN_PIN)) +#define MATCH_Y2_MAX_EILINE(P) TERN0(USE_Y2_MAX, DEFER4(MATCH_EILINE)(P, Y2_MAX_PIN)) +#define MATCH_Y2_MIN_EILINE(P) TERN0(USE_Y2_MIN, DEFER4(MATCH_EILINE)(P, Y2_MIN_PIN)) +#define MATCH_Z2_MAX_EILINE(P) TERN0(USE_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN)) +#define MATCH_Z2_MIN_EILINE(P) TERN0(USE_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN)) +#define MATCH_Z3_MAX_EILINE(P) TERN0(USE_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN)) +#define MATCH_Z3_MIN_EILINE(P) TERN0(USE_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN)) +#define MATCH_Z4_MAX_EILINE(P) TERN0(USE_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN)) +#define MATCH_Z4_MIN_EILINE(P) TERN0(USE_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN)) +#define MATCH_Z_MIN_PROBE_EILINE(P) TERN0(USE_Z_MIN_PROBE, DEFER4(MATCH_EILINE)(P, Z_MIN_PROBE_PIN)) #define AVAILABLE_EILINE(P) ( PIN_TO_EILINE(P) != -1 \ && !MATCH_X_MAX_EILINE(P) && !MATCH_X_MIN_EILINE(P) \ @@ -106,31 +106,31 @@ void endstop_ISR() { endstops.update(); } void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(P, endstop_ISR, CHANGE) - #if HAS_X_MAX + #if USE_X_MAX #if !AVAILABLE_EILINE(X_MAX_PIN) #error "X_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(X_MAX_PIN); #endif - #if HAS_X_MIN + #if USE_X_MIN #if !AVAILABLE_EILINE(X_MIN_PIN) #error "X_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(X_MIN_PIN); #endif - #if HAS_Y_MAX + #if USE_Y_MAX #if !AVAILABLE_EILINE(Y_MAX_PIN) #error "Y_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Y_MAX_PIN); #endif - #if HAS_Y_MIN + #if USE_Y_MIN #if !AVAILABLE_EILINE(Y_MIN_PIN) #error "Y_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Y_MIN_PIN); #endif - #if HAS_Z_MAX + #if USE_Z_MAX #if !AVAILABLE_EILINE(Z_MAX_PIN) #error "Z_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif @@ -142,139 +142,139 @@ void setup_endstop_interrupts() { #endif _ATTACH(Z_MIN_PIN); #endif - #if HAS_X2_MAX + #if USE_X2_MAX #if !AVAILABLE_EILINE(X2_MAX_PIN) #error "X2_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(X2_MAX_PIN); #endif - #if HAS_X2_MIN + #if USE_X2_MIN #if !AVAILABLE_EILINE(X2_MIN_PIN) #error "X2_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(X2_MIN_PIN); #endif - #if HAS_Y2_MAX + #if USE_Y2_MAX #if !AVAILABLE_EILINE(Y2_MAX_PIN) #error "Y2_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Y2_MAX_PIN); #endif - #if HAS_Y2_MIN + #if USE_Y2_MIN #if !AVAILABLE_EILINE(Y2_MIN_PIN) #error "Y2_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Y2_MIN_PIN); #endif - #if HAS_Z2_MAX + #if USE_Z2_MAX #if !AVAILABLE_EILINE(Z2_MAX_PIN) #error "Z2_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z2_MAX_PIN); #endif - #if HAS_Z2_MIN + #if USE_Z2_MIN #if !AVAILABLE_EILINE(Z2_MIN_PIN) #error "Z2_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z2_MIN_PIN); #endif - #if HAS_Z3_MAX + #if USE_Z3_MAX #if !AVAILABLE_EILINE(Z3_MAX_PIN) #error "Z3_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z3_MAX_PIN); #endif - #if HAS_Z3_MIN + #if USE_Z3_MIN #if !AVAILABLE_EILINE(Z3_MIN_PIN) #error "Z3_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z3_MIN_PIN); #endif - #if HAS_Z4_MAX + #if USE_Z4_MAX #if !AVAILABLE_EILINE(Z4_MAX_PIN) #error "Z4_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z4_MAX_PIN); #endif - #if HAS_Z4_MIN + #if USE_Z4_MIN #if !AVAILABLE_EILINE(Z4_MIN_PIN) #error "Z4_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z4_MIN_PIN); #endif - #if HAS_Z_MIN_PROBE_PIN + #if USE_Z_MIN_PROBE #if !AVAILABLE_EILINE(Z_MIN_PROBE_PIN) #error "Z_MIN_PROBE_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z_MIN_PROBE_PIN); #endif - #if HAS_I_MAX + #if USE_I_MAX #if !AVAILABLE_EILINE(I_MAX_PIN) #error "I_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(I_MAX_PIN, endstop_ISR, CHANGE); #endif - #if HAS_I_MIN + #if USE_I_MIN #if !AVAILABLE_EILINE(I_MIN_PIN) #error "I_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(I_MIN_PIN, endstop_ISR, CHANGE); #endif - #if HAS_J_MAX + #if USE_J_MAX #if !AVAILABLE_EILINE(J_MAX_PIN) #error "J_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(J_MAX_PIN, endstop_ISR, CHANGE); #endif - #if HAS_J_MIN + #if USE_J_MIN #if !AVAILABLE_EILINE(J_MIN_PIN) #error "J_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(J_MIN_PIN, endstop_ISR, CHANGE); #endif - #if HAS_K_MAX + #if USE_K_MAX #if !AVAILABLE_EILINE(K_MAX_PIN) #error "K_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(K_MAX_PIN, endstop_ISR, CHANGE); #endif - #if HAS_K_MIN + #if USE_K_MIN #if !AVAILABLE_EILINE(K_MIN_PIN) #error "K_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(K_MIN_PIN, endstop_ISR, CHANGE); #endif - #if HAS_U_MAX + #if USE_U_MAX #if !AVAILABLE_EILINE(U_MAX_PIN) #error "U_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(U_MAX_PIN, endstop_ISR, CHANGE); #endif - #if HAS_U_MIN + #if USE_U_MIN #if !AVAILABLE_EILINE(U_MIN_PIN) #error "U_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(U_MIN_PIN, endstop_ISR, CHANGE); #endif - #if HAS_V_MAX + #if USE_V_MAX #if !AVAILABLE_EILINE(V_MAX_PIN) #error "V_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(V_MAX_PIN, endstop_ISR, CHANGE); #endif - #if HAS_V_MIN + #if USE_V_MIN #if !AVAILABLE_EILINE(V_MIN_PIN) #error "V_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(V_MIN_PIN, endstop_ISR, CHANGE); #endif - #if HAS_W_MAX + #if USE_W_MAX #if !AVAILABLE_EILINE(W_MAX_PIN) #error "W_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(W_MAX_PIN, endstop_ISR, CHANGE); #endif - #if HAS_W_MIN + #if USE_W_MIN #if !AVAILABLE_EILINE(W_MIN_PIN) #error "W_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif diff --git a/Marlin/src/HAL/SAMD51/endstop_interrupts.h b/Marlin/src/HAL/SAMD51/endstop_interrupts.h index b5fead26f4..40f78baf87 100644 --- a/Marlin/src/HAL/SAMD51/endstop_interrupts.h +++ b/Marlin/src/HAL/SAMD51/endstop_interrupts.h @@ -53,35 +53,35 @@ #include "../../module/endstops.h" #define MATCH_EILINE(P1,P2) (P1 != P2 && PIN_TO_EILINE(P1) == PIN_TO_EILINE(P2)) -#define MATCH_X_MAX_EILINE(P) TERN0(HAS_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN)) -#define MATCH_X_MIN_EILINE(P) TERN0(HAS_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN)) -#define MATCH_Y_MAX_EILINE(P) TERN0(HAS_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN)) -#define MATCH_Y_MIN_EILINE(P) TERN0(HAS_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN)) -#define MATCH_Z_MAX_EILINE(P) TERN0(HAS_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN)) +#define MATCH_X_MAX_EILINE(P) TERN0(USE_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN)) +#define MATCH_X_MIN_EILINE(P) TERN0(USE_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN)) +#define MATCH_Y_MAX_EILINE(P) TERN0(USE_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN)) +#define MATCH_Y_MIN_EILINE(P) TERN0(USE_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN)) +#define MATCH_Z_MAX_EILINE(P) TERN0(USE_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN)) #define MATCH_Z_MIN_EILINE(P) TERN0(HAS_Z_MIN_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PIN)) -#define MATCH_I_MAX_EILINE(P) TERN0(HAS_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN)) -#define MATCH_I_MIN_EILINE(P) TERN0(HAS_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN)) -#define MATCH_J_MAX_EILINE(P) TERN0(HAS_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN)) -#define MATCH_J_MIN_EILINE(P) TERN0(HAS_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN)) -#define MATCH_K_MAX_EILINE(P) TERN0(HAS_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN)) -#define MATCH_K_MIN_EILINE(P) TERN0(HAS_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN)) -#define MATCH_U_MAX_EILINE(P) TERN0(HAS_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN)) -#define MATCH_U_MIN_EILINE(P) TERN0(HAS_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN)) -#define MATCH_V_MAX_EILINE(P) TERN0(HAS_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN)) -#define MATCH_V_MIN_EILINE(P) TERN0(HAS_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN)) -#define MATCH_W_MAX_EILINE(P) TERN0(HAS_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN)) -#define MATCH_W_MIN_EILINE(P) TERN0(HAS_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN)) -#define MATCH_X2_MAX_EILINE(P) TERN0(HAS_X2_MAX, DEFER4(MATCH_EILINE)(P, X2_MAX_PIN)) -#define MATCH_X2_MIN_EILINE(P) TERN0(HAS_X2_MIN, DEFER4(MATCH_EILINE)(P, X2_MIN_PIN)) -#define MATCH_Y2_MAX_EILINE(P) TERN0(HAS_Y2_MAX, DEFER4(MATCH_EILINE)(P, Y2_MAX_PIN)) -#define MATCH_Y2_MIN_EILINE(P) TERN0(HAS_Y2_MIN, DEFER4(MATCH_EILINE)(P, Y2_MIN_PIN)) -#define MATCH_Z2_MAX_EILINE(P) TERN0(HAS_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN)) -#define MATCH_Z2_MIN_EILINE(P) TERN0(HAS_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN)) -#define MATCH_Z3_MAX_EILINE(P) TERN0(HAS_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN)) -#define MATCH_Z3_MIN_EILINE(P) TERN0(HAS_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN)) -#define MATCH_Z4_MAX_EILINE(P) TERN0(HAS_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN)) -#define MATCH_Z4_MIN_EILINE(P) TERN0(HAS_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN)) -#define MATCH_Z_MIN_PROBE_EILINE(P) TERN0(HAS_Z_MIN_PROBE_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PROBE_PIN)) +#define MATCH_I_MAX_EILINE(P) TERN0(USE_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN)) +#define MATCH_I_MIN_EILINE(P) TERN0(USE_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN)) +#define MATCH_J_MAX_EILINE(P) TERN0(USE_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN)) +#define MATCH_J_MIN_EILINE(P) TERN0(USE_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN)) +#define MATCH_K_MAX_EILINE(P) TERN0(USE_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN)) +#define MATCH_K_MIN_EILINE(P) TERN0(USE_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN)) +#define MATCH_U_MAX_EILINE(P) TERN0(USE_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN)) +#define MATCH_U_MIN_EILINE(P) TERN0(USE_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN)) +#define MATCH_V_MAX_EILINE(P) TERN0(USE_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN)) +#define MATCH_V_MIN_EILINE(P) TERN0(USE_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN)) +#define MATCH_W_MAX_EILINE(P) TERN0(USE_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN)) +#define MATCH_W_MIN_EILINE(P) TERN0(USE_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN)) +#define MATCH_X2_MAX_EILINE(P) TERN0(USE_X2_MAX, DEFER4(MATCH_EILINE)(P, X2_MAX_PIN)) +#define MATCH_X2_MIN_EILINE(P) TERN0(USE_X2_MIN, DEFER4(MATCH_EILINE)(P, X2_MIN_PIN)) +#define MATCH_Y2_MAX_EILINE(P) TERN0(USE_Y2_MAX, DEFER4(MATCH_EILINE)(P, Y2_MAX_PIN)) +#define MATCH_Y2_MIN_EILINE(P) TERN0(USE_Y2_MIN, DEFER4(MATCH_EILINE)(P, Y2_MIN_PIN)) +#define MATCH_Z2_MAX_EILINE(P) TERN0(USE_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN)) +#define MATCH_Z2_MIN_EILINE(P) TERN0(USE_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN)) +#define MATCH_Z3_MAX_EILINE(P) TERN0(USE_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN)) +#define MATCH_Z3_MIN_EILINE(P) TERN0(USE_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN)) +#define MATCH_Z4_MAX_EILINE(P) TERN0(USE_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN)) +#define MATCH_Z4_MIN_EILINE(P) TERN0(USE_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN)) +#define MATCH_Z_MIN_PROBE_EILINE(P) TERN0(USE_Z_MIN_PROBE, DEFER4(MATCH_EILINE)(P, Z_MIN_PROBE_PIN)) #define AVAILABLE_EILINE(P) ( PIN_TO_EILINE(P) != -1 \ && !MATCH_X_MAX_EILINE(P) && !MATCH_X_MIN_EILINE(P) \ @@ -105,31 +105,31 @@ void endstop_ISR() { endstops.update(); } void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(P, endstop_ISR, CHANGE) - #if HAS_X_MAX + #if USE_X_MAX #if !AVAILABLE_EILINE(X_MAX_PIN) #error "X_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(X_MAX_PIN); #endif - #if HAS_X_MIN + #if USE_X_MIN #if !AVAILABLE_EILINE(X_MIN_PIN) #error "X_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(X_MIN_PIN); #endif - #if HAS_Y_MAX + #if USE_Y_MAX #if !AVAILABLE_EILINE(Y_MAX_PIN) #error "Y_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Y_MAX_PIN); #endif - #if HAS_Y_MIN + #if USE_Y_MIN #if !AVAILABLE_EILINE(Y_MIN_PIN) #error "Y_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Y_MIN_PIN); #endif - #if HAS_Z_MAX + #if USE_Z_MAX #if !AVAILABLE_EILINE(Z_MAX_PIN) #error "Z_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif @@ -141,115 +141,115 @@ void setup_endstop_interrupts() { #endif _ATTACH(Z_MIN_PIN); #endif - #if HAS_Z2_MAX + #if USE_Z2_MAX #if !AVAILABLE_EILINE(Z2_MAX_PIN) #error "Z2_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z2_MAX_PIN); #endif - #if HAS_Z2_MIN + #if USE_Z2_MIN #if !AVAILABLE_EILINE(Z2_MIN_PIN) #error "Z2_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z2_MIN_PIN); #endif - #if HAS_Z3_MAX + #if USE_Z3_MAX #if !AVAILABLE_EILINE(Z3_MAX_PIN) #error "Z3_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z3_MAX_PIN); #endif - #if HAS_Z3_MIN + #if USE_Z3_MIN #if !AVAILABLE_EILINE(Z3_MIN_PIN) #error "Z3_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z3_MIN_PIN); #endif - #if HAS_Z4_MAX + #if USE_Z4_MAX #if !AVAILABLE_EILINE(Z4_MAX_PIN) #error "Z4_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z4_MAX_PIN); #endif - #if HAS_Z4_MIN + #if USE_Z4_MIN #if !AVAILABLE_EILINE(Z4_MIN_PIN) #error "Z4_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z4_MIN_PIN); #endif - #if HAS_Z_MIN_PROBE_PIN + #if USE_Z_MIN_PROBE #if !AVAILABLE_EILINE(Z_MIN_PROBE_PIN) #error "Z_MIN_PROBE_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif _ATTACH(Z_MIN_PROBE_PIN); #endif - #if HAS_I_MAX + #if USE_I_MAX #if !AVAILABLE_EILINE(I_MAX_PIN) #error "I_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(I_MAX_PIN, endstop_ISR, CHANGE); #endif - #if HAS_I_MIN + #if USE_I_MIN #if !AVAILABLE_EILINE(I_MIN_PIN) #error "I_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(I_MIN_PIN, endstop_ISR, CHANGE); #endif - #if HAS_J_MAX + #if USE_J_MAX #if !AVAILABLE_EILINE(J_MAX_PIN) #error "J_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(J_MAX_PIN, endstop_ISR, CHANGE); #endif - #if HAS_J_MIN + #if USE_J_MIN #if !AVAILABLE_EILINE(J_MIN_PIN) #error "J_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(J_MIN_PIN, endstop_ISR, CHANGE); #endif - #if HAS_K_MAX + #if USE_K_MAX #if !AVAILABLE_EILINE(K_MAX_PIN) #error "K_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(K_MAX_PIN, endstop_ISR, CHANGE); #endif - #if HAS_K_MIN + #if USE_K_MIN #if !AVAILABLE_EILINE(K_MIN_PIN) #error "K_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(K_MIN_PIN, endstop_ISR, CHANGE); #endif - #if HAS_U_MAX + #if USE_U_MAX #if !AVAILABLE_EILINE(U_MAX_PIN) #error "U_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(U_MAX_PIN, endstop_ISR, CHANGE); #endif - #if HAS_U_MIN + #if USE_U_MIN #if !AVAILABLE_EILINE(U_MIN_PIN) #error "U_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(U_MIN_PIN, endstop_ISR, CHANGE); #endif - #if HAS_V_MAX + #if USE_V_MAX #if !AVAILABLE_EILINE(V_MAX_PIN) #error "V_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(V_MAX_PIN, endstop_ISR, CHANGE); #endif - #if HAS_V_MIN + #if USE_V_MIN #if !AVAILABLE_EILINE(V_MIN_PIN) #error "V_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(V_MIN_PIN, endstop_ISR, CHANGE); #endif - #if HAS_W_MAX + #if USE_W_MAX #if !AVAILABLE_EILINE(W_MAX_PIN) #error "W_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif attachInterrupt(W_MAX_PIN, endstop_ISR, CHANGE); #endif - #if HAS_W_MIN + #if USE_W_MIN #if !AVAILABLE_EILINE(W_MIN_PIN) #error "W_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif diff --git a/Marlin/src/HAL/STM32/endstop_interrupts.h b/Marlin/src/HAL/STM32/endstop_interrupts.h index ce160d9405..5ae228d3f8 100644 --- a/Marlin/src/HAL/STM32/endstop_interrupts.h +++ b/Marlin/src/HAL/STM32/endstop_interrupts.h @@ -29,33 +29,33 @@ void endstop_ISR() { endstops.update(); } void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(P, endstop_ISR, CHANGE) - TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); - TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); - TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); - TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); - TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); - TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); - TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); - TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); - TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); - TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); - TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); - TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); - TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); - TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); - TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); - TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN)); - TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); - TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); - TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); - TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); - TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); - TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); - TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); - TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); - TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); - TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); - TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); - TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); + TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN)); + TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN)); + TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN)); + TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN)); + TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN)); + TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN)); + TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN)); + TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN)); + TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN)); + TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN)); + TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN)); + TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN)); + TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN)); + TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN)); + TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN)); + TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN)); + TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN)); + TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN)); + TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN)); + TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN)); + TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN)); + TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN)); + TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN)); + TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN)); + TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN)); + TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN)); + TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN)); } diff --git a/Marlin/src/HAL/STM32F1/endstop_interrupts.h b/Marlin/src/HAL/STM32F1/endstop_interrupts.h index b4df5d71f1..6febcec5d0 100644 --- a/Marlin/src/HAL/STM32F1/endstop_interrupts.h +++ b/Marlin/src/HAL/STM32F1/endstop_interrupts.h @@ -54,33 +54,33 @@ void endstop_ISR() { endstops.update(); } void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(P, endstop_ISR, CHANGE) - TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); - TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); - TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); - TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); - TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); - TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); - TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); - TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); - TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); - TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); - TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); - TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); - TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); - TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); - TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); - TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN)); - TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); - TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); - TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); - TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); - TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); - TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); - TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); - TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); - TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); - TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); - TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); - TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); + TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN)); + TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN)); + TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN)); + TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN)); + TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN)); + TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN)); + TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN)); + TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN)); + TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN)); + TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN)); + TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN)); + TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN)); + TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN)); + TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN)); + TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN)); + TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN)); + TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN)); + TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN)); + TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN)); + TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN)); + TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN)); + TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN)); + TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN)); + TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN)); + TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN)); + TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN)); + TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN)); } diff --git a/Marlin/src/HAL/TEENSY31_32/endstop_interrupts.h b/Marlin/src/HAL/TEENSY31_32/endstop_interrupts.h index 9ce4fcdb2f..28510fb508 100644 --- a/Marlin/src/HAL/TEENSY31_32/endstop_interrupts.h +++ b/Marlin/src/HAL/TEENSY31_32/endstop_interrupts.h @@ -47,33 +47,33 @@ void endstop_ISR() { endstops.update(); } void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE) - TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); - TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); - TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); - TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); - TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); - TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); - TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); - TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); - TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); - TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); - TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); - TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); - TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); - TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); - TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); - TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN)); - TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); - TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); - TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); - TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); - TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); - TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); - TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); - TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); - TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); - TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); - TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); - TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); + TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN)); + TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN)); + TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN)); + TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN)); + TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN)); + TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN)); + TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN)); + TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN)); + TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN)); + TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN)); + TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN)); + TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN)); + TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN)); + TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN)); + TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN)); + TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN)); + TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN)); + TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN)); + TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN)); + TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN)); + TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN)); + TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN)); + TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN)); + TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN)); + TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN)); + TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN)); + TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN)); } diff --git a/Marlin/src/HAL/TEENSY35_36/endstop_interrupts.h b/Marlin/src/HAL/TEENSY35_36/endstop_interrupts.h index c9ef278769..505434cd89 100644 --- a/Marlin/src/HAL/TEENSY35_36/endstop_interrupts.h +++ b/Marlin/src/HAL/TEENSY35_36/endstop_interrupts.h @@ -46,33 +46,33 @@ void endstop_ISR() { endstops.update(); } */ void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE) - TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); - TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); - TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); - TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); - TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); - TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); - TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); - TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); - TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); - TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); - TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); - TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); - TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); - TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); - TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); - TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN)); - TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); - TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); - TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); - TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); - TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); - TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); - TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); - TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); - TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); - TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); - TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); - TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); + TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN)); + TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN)); + TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN)); + TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN)); + TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN)); + TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN)); + TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN)); + TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN)); + TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN)); + TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN)); + TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN)); + TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN)); + TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN)); + TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN)); + TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN)); + TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN)); + TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN)); + TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN)); + TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN)); + TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN)); + TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN)); + TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN)); + TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN)); + TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN)); + TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN)); + TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN)); + TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN)); } diff --git a/Marlin/src/HAL/TEENSY40_41/endstop_interrupts.h b/Marlin/src/HAL/TEENSY40_41/endstop_interrupts.h index 1e4ce4cef3..325d97daeb 100644 --- a/Marlin/src/HAL/TEENSY40_41/endstop_interrupts.h +++ b/Marlin/src/HAL/TEENSY40_41/endstop_interrupts.h @@ -46,33 +46,33 @@ void endstop_ISR() { endstops.update(); } */ void setup_endstop_interrupts() { #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE) - TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN)); - TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN)); - TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN)); - TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN)); - TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); - TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN)); - TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN)); - TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN)); - TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN)); - TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN)); - TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN)); - TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN)); - TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN)); - TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN)); - TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN)); - TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN)); - TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN)); - TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN)); - TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN)); - TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN)); - TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN)); - TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN)); - TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN)); - TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN)); - TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN)); - TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN)); - TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN)); - TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN)); + TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN)); + TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN)); + TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN)); + TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN)); + TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN)); + TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN)); + TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN)); + TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN)); + TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN)); + TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN)); + TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN)); + TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN)); + TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN)); + TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN)); + TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN)); + TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN)); + TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN)); + TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN)); + TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN)); + TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN)); + TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN)); + TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN)); + TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN)); + TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN)); + TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN)); + TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN)); + TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN)); + TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN)); } diff --git a/Marlin/src/feature/tmc_util.h b/Marlin/src/feature/tmc_util.h index c10bab6274..fffa748f93 100644 --- a/Marlin/src/feature/tmc_util.h +++ b/Marlin/src/feature/tmc_util.h @@ -378,6 +378,7 @@ void test_tmc_connection(LOGICAL_AXIS_DECL(const bool, true)); return drv_status.stallGuard; } + #endif // SPI_ENDSTOPS #endif // USE_SENSORLESS diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index ed2cda2932..4c654c3509 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -332,7 +332,7 @@ void GcodeSuite::G28() { #if SENSORLESS_STALLGUARD_DELAY safe_delay(SENSORLESS_STALLGUARD_DELAY); // Short delay needed to settle #endif - #endif + #endif // HAS_HOMING_CURRENT #if ENABLED(IMPROVE_HOMING_RELIABILITY) motion_state_t saved_motion_state = begin_slow_homing(); diff --git a/Marlin/src/gcode/calibrate/G33.cpp b/Marlin/src/gcode/calibrate/G33.cpp index 08734073d6..226570acce 100644 --- a/Marlin/src/gcode/calibrate/G33.cpp +++ b/Marlin/src/gcode/calibrate/G33.cpp @@ -476,8 +476,7 @@ void GcodeSuite::G33() { #if HAS_DELTA_SENSORLESS_PROBING if (verbose_level > 0 && do_save_offset_adj) { offset_sensorless_adj.reset(); - - auto caltower = [&](Probe::sense_bool_t s){ + auto caltower = [&](Probe::sense_bool_t s) { float z_at_pt[NPP + 1]; LOOP_CAL_ALL(rad) z_at_pt[rad] = 0.0f; probe.test_sensitivity = s; diff --git a/Marlin/src/gcode/control/M605.cpp b/Marlin/src/gcode/control/M605.cpp index a52c706fa6..6bf99df4c2 100644 --- a/Marlin/src/gcode/control/M605.cpp +++ b/Marlin/src/gcode/control/M605.cpp @@ -127,21 +127,20 @@ case DXC_MIRRORED_MODE: DEBUG_ECHOPGM("MIRRORED"); break; } DEBUG_ECHOPGM("\nActive Ext: ", active_extruder); - if (!active_extruder_parked) DEBUG_ECHOPGM(" NOT "); - DEBUG_ECHOPGM(" parked."); - DEBUG_ECHOPGM("\nactive_extruder_x_pos: ", current_position.x); - DEBUG_ECHOPGM("\ninactive_extruder_x: ", inactive_extruder_x); - DEBUG_ECHOPGM("\nextruder_duplication_enabled: ", extruder_duplication_enabled); - DEBUG_ECHOPGM("\nduplicate_extruder_x_offset: ", duplicate_extruder_x_offset); - DEBUG_ECHOPGM("\nduplicate_extruder_temp_offset: ", duplicate_extruder_temp_offset); - DEBUG_ECHOPGM("\ndelayed_move_time: ", delayed_move_time); - DEBUG_ECHOPGM("\nX1 Home X: ", x_home_pos(0), "\nX1_MIN_POS=", X1_MIN_POS, "\nX1_MAX_POS=", X1_MAX_POS); - DEBUG_ECHOPGM("\nX2 Home X: ", x_home_pos(1), "\nX2_MIN_POS=", X2_MIN_POS, "\nX2_MAX_POS=", X2_MAX_POS); - DEBUG_ECHOPGM("\nX2_HOME_DIR=", X2_HOME_DIR, "\nX2_HOME_POS=", X2_HOME_POS); - DEBUG_ECHOPGM("\nDEFAULT_DUAL_X_CARRIAGE_MODE=", STRINGIFY(DEFAULT_DUAL_X_CARRIAGE_MODE)); - DEBUG_ECHOPGM("\toolchange_settings.z_raise=", toolchange_settings.z_raise); - DEBUG_ECHOPGM("\nDEFAULT_DUPLICATION_X_OFFSET=", DEFAULT_DUPLICATION_X_OFFSET); - DEBUG_EOL(); + if (!active_extruder_parked) DEBUG_ECHOPGM(" NOT ", F(" parked.")); + DEBUG_ECHOLNPGM( + "\nactive_extruder_x_pos: ", current_position.x, + "\ninactive_extruder_x: ", inactive_extruder_x, + "\nextruder_duplication_enabled: ", extruder_duplication_enabled, + "\nduplicate_extruder_x_offset: ", duplicate_extruder_x_offset, + "\nduplicate_extruder_temp_offset: ", duplicate_extruder_temp_offset, + "\ndelayed_move_time: ", delayed_move_time, + "\nX1 Home: ", x_home_pos(0), " X1_MIN_POS=", X1_MIN_POS, " X1_MAX_POS=", X1_MAX_POS, + "\nX2 Home: ", x_home_pos(1), " X2_MIN_POS=", X2_MIN_POS, " X2_MAX_POS=", X2_MAX_POS, + "\nDEFAULT_DUAL_X_CARRIAGE_MODE=", STRINGIFY(DEFAULT_DUAL_X_CARRIAGE_MODE), + "\toolchange_settings.z_raise=", toolchange_settings.z_raise, + "\nDEFAULT_DUPLICATION_X_OFFSET=", DEFAULT_DUPLICATION_X_OFFSET + ); HOTEND_LOOP() { DEBUG_ECHOPGM_P(SP_T_STR, e); diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index bee4abf7a7..8114cb4261 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -1391,9 +1391,9 @@ #define HAS_DELTA_SENSORLESS_PROBING 1 #endif #if NONE(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, HAS_DELTA_SENSORLESS_PROBING) - #define USES_Z_MIN_PROBE_PIN 1 + #define USE_Z_MIN_PROBE 1 #endif - #if Z_HOME_TO_MIN && (DISABLED(USES_Z_MIN_PROBE_PIN) || ENABLED(USE_PROBE_FOR_Z_HOMING)) + #if Z_HOME_TO_MIN && (DISABLED(USE_Z_MIN_PROBE) || ENABLED(USE_PROBE_FOR_Z_HOMING)) #define HOMING_Z_WITH_PROBE 1 #endif #ifndef Z_PROBE_LOW_POINT @@ -1778,7 +1778,7 @@ #endif #endif -#if X_HOME_DIR || (HAS_Y_AXIS && Y_HOME_DIR) || (HAS_Z_AXIS && Z_HOME_DIR) \ +#if (HAS_X_AXIS && X_HOME_DIR) || (HAS_Y_AXIS && Y_HOME_DIR) || (HAS_Z_AXIS && Z_HOME_DIR) \ || (HAS_I_AXIS && I_HOME_DIR) || (HAS_J_AXIS && J_HOME_DIR) || (HAS_K_AXIS && K_HOME_DIR) \ || (HAS_U_AXIS && U_HOME_DIR) || (HAS_V_AXIS && V_HOME_DIR) || (HAS_W_AXIS && W_HOME_DIR) #define HAS_ENDSTOPS 1 diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 1772430dc4..7ea12f0493 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -1044,12 +1044,6 @@ #define POLL_JOG #endif -#if X2_HOME_DIR > 0 - #define X2_HOME_TO_MAX 1 -#elif X2_HOME_DIR < 0 - #define X2_HOME_TO_MIN 1 -#endif - #ifndef HOMING_BUMP_MM #define HOMING_BUMP_MM { 0, 0, 0 } #endif @@ -1156,6 +1150,7 @@ #define SD_CONNECTION_IS(V) (_SDCARD_ID(SDCARD_CONNECTION) == _SDCARD_ID(V)) #else #define SD_CONNECTION_IS(...) 0 + #undef SD_ABORT_ON_ENDSTOP_HIT #endif // Power Monitor sensors diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 7319905ee6..b7ee00def8 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -1398,6 +1398,7 @@ #if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING) #define USE_SENSORLESS 1 #endif + // Disable Z axis sensorless homing if a probe is used to home the Z axis #if HOMING_Z_WITH_PROBE #undef Z_STALL_SENSITIVITY @@ -1481,15 +1482,6 @@ #define Y2_SLAVE_ADDRESS 0 #endif #endif - #if HAS_U_AXIS - #define U_SPI_SENSORLESS U_SENSORLESS - #endif - #if HAS_V_AXIS - #define V_SPI_SENSORLESS V_SENSORLESS - #endif - #if HAS_W_AXIS - #define W_SPI_SENSORLESS W_SENSORLESS - #endif #endif #if AXIS_IS_TMC(Z) @@ -1944,202 +1936,205 @@ // Endstops and bed probe // -#define _HAS_STOP(A,N,M,C) ((A##_HOME_TO_##M || (C+0)) && PIN_EXISTS(A##N##_##M)) +#define _USE_STOP(A,N,M,C) ((A##_HOME_TO_##M || (C+0)) && PIN_EXISTS(A##N##_##M)) -#if _HAS_STOP(X,,MIN,) - #define HAS_X_MIN 1 +#if _USE_STOP(X,,MIN,) + #define USE_X_MIN 1 #endif -#if _HAS_STOP(X,,MAX,ENABLED(DUAL_X_CARRIAGE)) - #define HAS_X_MAX 1 +#if _USE_STOP(X,,MAX,ENABLED(DUAL_X_CARRIAGE)) + #define USE_X_MAX 1 #endif -#if HAS_X_MIN || HAS_X_MAX +#if USE_X_MIN || USE_X_MAX #define HAS_X_ENDSTOP 1 #endif -#if _HAS_STOP(Y,,MIN,) - #define HAS_Y_MIN 1 -#elif _HAS_STOP(Y,,MAX,) - #define HAS_Y_MAX 1 +#if _USE_STOP(Y,,MIN,) + #define USE_Y_MIN 1 +#elif _USE_STOP(Y,,MAX,) + #define USE_Y_MAX 1 #endif -#if HAS_Y_MIN || HAS_Y_MAX +#if USE_Y_MIN || USE_Y_MAX #define HAS_Y_ENDSTOP 1 #endif -#if _HAS_STOP(Z,,MIN,EITHER(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, HAS_DELTA_SENSORLESS_PROBING)) - #define HAS_Z_MIN 1 +#if _USE_STOP(Z,,MIN,EITHER(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, HAS_DELTA_SENSORLESS_PROBING)) + #define USE_Z_MIN 1 #if !HAS_DELTA_SENSORLESS_PROBING #define HAS_Z_MIN_PIN 1 #endif #endif -#if _HAS_STOP(Z,,MAX,) - #define HAS_Z_MAX 1 +#if _USE_STOP(Z,,MAX,) + #define USE_Z_MAX 1 #endif -#if HAS_Z_MIN || HAS_Z_MAX +#if USE_Z_MIN || USE_Z_MAX #define HAS_Z_ENDSTOP 1 #endif -#if _HAS_STOP(I,,MIN,) - #define HAS_I_MIN 1 -#elif _HAS_STOP(I,,MAX,) - #define HAS_I_MAX 1 +#if _USE_STOP(I,,MIN,) + #define USE_I_MIN 1 +#elif _USE_STOP(I,,MAX,) + #define USE_I_MAX 1 #endif -#if HAS_I_MIN || HAS_I_MAX +#if USE_I_MIN || USE_I_MAX #define HAS_I_ENDSTOP 1 #endif -#if _HAS_STOP(J,,MIN,) - #define HAS_J_MIN 1 -#elif _HAS_STOP(J,,MAX,) - #define HAS_J_MAX 1 +#if _USE_STOP(J,,MIN,) + #define USE_J_MIN 1 +#elif _USE_STOP(J,,MAX,) + #define USE_J_MAX 1 #endif -#if HAS_J_MIN || HAS_J_MAX +#if USE_J_MIN || USE_J_MAX #define HAS_J_ENDSTOP 1 #endif -#if _HAS_STOP(K,,MIN,) - #define HAS_K_MIN 1 -#elif _HAS_STOP(K,,MAX,) - #define HAS_K_MAX 1 +#if _USE_STOP(K,,MIN,) + #define USE_K_MIN 1 +#elif _USE_STOP(K,,MAX,) + #define USE_K_MAX 1 #endif -#if HAS_K_MIN || HAS_K_MAX +#if USE_K_MIN || USE_K_MAX #define HAS_K_ENDSTOP 1 #endif -#if _HAS_STOP(U,,MIN,) - #define HAS_U_MIN 1 -#elif _HAS_STOP(U,,MAX,) - #define HAS_U_MAX 1 +#if _USE_STOP(U,,MIN,) + #define USE_U_MIN 1 +#elif _USE_STOP(U,,MAX,) + #define USE_U_MAX 1 #endif -#if HAS_U_MIN || HAS_U_MAX +#if USE_U_MIN || USE_U_MAX #define HAS_U_ENDSTOP 1 #endif -#if _HAS_STOP(V,,MIN,) - #define HAS_V_MIN 1 -#elif _HAS_STOP(V,,MAX,) - #define HAS_V_MAX 1 +#if _USE_STOP(V,,MIN,) + #define USE_V_MIN 1 +#elif _USE_STOP(V,,MAX,) + #define USE_V_MAX 1 #endif -#if HAS_V_MIN || HAS_V_MAX +#if USE_V_MIN || USE_V_MAX #define HAS_V_ENDSTOP 1 #endif -#if _HAS_STOP(W,,MIN,) - #define HAS_W_MIN 1 -#elif _HAS_STOP(W,,MAX,) - #define HAS_W_MAX 1 +#if _USE_STOP(W,,MIN,) + #define USE_W_MIN 1 +#elif _USE_STOP(W,,MAX,) + #define USE_W_MAX 1 #endif -#if HAS_W_MIN || HAS_W_MAX +#if USE_W_MIN || USE_W_MAX #define HAS_W_ENDSTOP 1 #endif #if EITHER(DUAL_X_CARRIAGE, X_DUAL_ENDSTOPS) - #if _HAS_STOP(X,2,MIN,) - #define HAS_X2_MIN 1 - #elif _HAS_STOP(X,2,MAX,) - #define HAS_X2_MAX 1 + #if _USE_STOP(X,2,MIN,) + #define USE_X2_MIN 1 + #elif _USE_STOP(X,2,MAX,) + #define USE_X2_MAX 1 #endif - #if HAS_X2_MIN || HAS_X2_MAX + #if USE_X2_MIN || USE_X2_MAX #define HAS_X2_ENDSTOP 1 #endif #endif #if ENABLED(Y_DUAL_ENDSTOPS) - #if _HAS_STOP(Y,2,MIN,) - #define HAS_Y2_MIN 1 - #elif _HAS_STOP(Y,2,MAX,) - #define HAS_Y2_MAX 1 + #if _USE_STOP(Y,2,MIN,) + #define USE_Y2_MIN 1 + #elif _USE_STOP(Y,2,MAX,) + #define USE_Y2_MAX 1 #endif - #if HAS_Y2_MIN || HAS_Y2_MAX + #if USE_Y2_MIN || USE_Y2_MAX #define HAS_Y2_ENDSTOP 1 #endif #endif #if ENABLED(Z_MULTI_ENDSTOPS) - #if _HAS_STOP(Z,2,MIN,) - #define HAS_Z2_MIN 1 - #elif _HAS_STOP(Z,2,MAX,) - #define HAS_Z2_MAX 1 + #if _USE_STOP(Z,2,MIN,) + #define USE_Z2_MIN 1 + #elif _USE_STOP(Z,2,MAX,) + #define USE_Z2_MAX 1 #endif - #if HAS_Z2_MIN || HAS_Z2_MAX + #if USE_Z2_MIN || USE_Z2_MAX #define HAS_Z2_ENDSTOP 1 #endif #if NUM_Z_STEPPERS >= 3 - #if _HAS_STOP(Z,3,MIN,) - #define HAS_Z3_MIN 1 - #elif _HAS_STOP(Z,3,MAX,) - #define HAS_Z3_MAX 1 + #if _USE_STOP(Z,3,MIN,) + #define USE_Z3_MIN 1 + #elif _USE_STOP(Z,3,MAX,) + #define USE_Z3_MAX 1 #endif - #if HAS_Z3_MIN || HAS_Z3_MAX + #if USE_Z3_MIN || USE_Z3_MAX #define HAS_Z3_ENDSTOP 1 #endif #endif #if NUM_Z_STEPPERS >= 4 - #if _HAS_STOP(Z,4,MIN,) - #define HAS_Z4_MIN 1 - #elif _HAS_STOP(Z,4,MAX,) - #define HAS_Z4_MAX 1 + #if _USE_STOP(Z,4,MIN,) + #define USE_Z4_MIN 1 + #elif _USE_STOP(Z,4,MAX,) + #define USE_Z4_MAX 1 #endif - #if HAS_Z4_MIN || HAS_Z4_MAX + #if USE_Z4_MIN || USE_Z4_MAX #define HAS_Z4_ENDSTOP 1 #endif #endif #endif -#if HAS_BED_PROBE && PIN_EXISTS(Z_MIN_PROBE) - #define HAS_Z_MIN_PROBE_PIN 1 -#endif - -#undef _HAS_STOP +#undef _USE_STOP /** * Set ENDSTOPPULLUPS for active endstop switches */ #if ENABLED(ENDSTOPPULLUPS) - #if HAS_X_MIN + #if USE_X_MIN #define ENDSTOPPULLUP_XMIN #endif - #if HAS_X_MAX + #if USE_X_MAX #define ENDSTOPPULLUP_XMAX #endif - #if HAS_Y_MIN + #if USE_Y_MIN #define ENDSTOPPULLUP_YMIN - #elif HAS_Y_MAX + #endif + #if USE_Y_MAX #define ENDSTOPPULLUP_YMAX #endif #if HAS_Z_MIN_PIN #define ENDSTOPPULLUP_ZMIN #endif - #if HAS_Z_MAX + #if USE_Z_MAX #define ENDSTOPPULLUP_ZMAX #endif - #if HAS_I_MIN + #if USE_I_MIN #define ENDSTOPPULLUP_IMIN - #elif HAS_I_MAX + #endif + #if USE_I_MAX #define ENDSTOPPULLUP_IMAX #endif - #if HAS_J_MIN + #if USE_J_MIN #define ENDSTOPPULLUP_JMIN - #elif HAS_J_MAX + #endif + #if USE_J_MAX #define ENDSTOPPULLUP_JMAX #endif - #if HAS_K_MIN + #if USE_K_MIN #define ENDSTOPPULLUP_KMIN - #elif HAS_K_MAX + #endif + #if USE_K_MAX #define ENDSTOPPULLUP_KMAX #endif - #if HAS_U_MIN + #if USE_U_MIN #define ENDSTOPPULLUP_UMIN - #elif HAS_U_MAX + #endif + #if USE_U_MAX #define ENDSTOPPULLUP_UMAX #endif - #if HAS_V_MIN + #if USE_V_MIN #define ENDSTOPPULLUP_VMIN - #elif HAS_V_MAX + #endif + #if USE_V_MAX #define ENDSTOPPULLUP_VMAX #endif - #if HAS_W_MIN + #if USE_W_MIN #define ENDSTOPPULLUP_WMIN - #elif HAS_W_MAX + #endif + #if USE_W_MAX #define ENDSTOPPULLUP_WMAX #endif #endif @@ -2148,51 +2143,58 @@ * Set ENDSTOPPULLDOWNS for active endstop switches */ #if ENABLED(ENDSTOPPULLDOWNS) - #if HAS_X_MIN + #if USE_X_MIN #define ENDSTOPPULLDOWN_XMIN #endif - #if HAS_X_MAX + #if USE_X_MAX #define ENDSTOPPULLDOWN_XMAX #endif - #if HAS_Y_MIN + #if USE_Y_MIN #define ENDSTOPPULLDOWN_YMIN - #elif HAS_Y_MAX + #endif + #if USE_Y_MAX #define ENDSTOPPULLDOWN_YMAX #endif - #if HAS_Z_MIN_PIN + #if USE_Z_MIN #define ENDSTOPPULLDOWN_ZMIN #endif - #if HAS_Z_MAX + #if USE_Z_MAX #define ENDSTOPPULLDOWN_ZMAX #endif - #if HAS_I_MIN + #if USE_I_MIN #define ENDSTOPPULLDOWN_IMIN - #elif HAS_I_MAX + #endif + #if USE_I_MAX #define ENDSTOPPULLDOWN_IMAX #endif - #if HAS_J_MIN + #if USE_J_MIN #define ENDSTOPPULLDOWN_JMIN - #elif HAS_J_MAX + #endif + #if USE_J_MAX #define ENDSTOPPULLDOWN_JMAX #endif - #if HAS_K_MIN + #if USE_K_MIN #define ENDSTOPPULLDOWN_KMIN - #elif HAS_K_MAX + #endif + #if USE_K_MAX #define ENDSTOPPULLDOWN_KMAX #endif - #if HAS_U_MIN + #if USE_U_MIN #define ENDSTOPPULLDOWN_UMIN - #elif HAS_U_MAX + #endif + #if USE_U_MAX #define ENDSTOPPULLDOWN_UMAX #endif - #if HAS_V_MIN + #if USE_V_MIN #define ENDSTOPPULLDOWN_VMIN - #elif HAS_V_MAX + #endif + #if USE_V_MAX #define ENDSTOPPULLDOWN_VMAX #endif - #if HAS_W_MIN + #if USE_W_MIN #define ENDSTOPPULLDOWN_WMIN - #elif HAS_W_MAX + #endif + #if USE_W_MAX #define ENDSTOPPULLDOWN_WMAX #endif #endif @@ -2817,7 +2819,7 @@ #endif #endif #if HAS_BED_PROBE - #if BOTH(ENDSTOPPULLUPS, HAS_Z_MIN_PROBE_PIN) + #if BOTH(ENDSTOPPULLUPS, USE_Z_MIN_PROBE) #define ENDSTOPPULLUP_ZMIN_PROBE #endif #ifndef XY_PROBE_FEEDRATE diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 74633b9ec4..223baf928d 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1253,7 +1253,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #else #define _IS_5V_TOLERANT(P) 1 // Assume 5V tolerance #endif - #if USES_Z_MIN_PROBE_PIN + #if USE_Z_MIN_PROBE #if !_IS_5V_TOLERANT(Z_MIN_PROBE_PIN) #error "BLTOUCH_SET_5V_MODE is not compatible with the Z_MIN_PROBE_PIN." #endif @@ -1265,7 +1265,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #undef _IS_5V_TOLERANT #undef _5V #elif NONE(ONBOARD_ENDSTOPPULLUPS, ENDSTOPPULLUPS, ENDSTOPPULLUP_ZMIN, ENDSTOPPULLUP_ZMIN_PROBE) - #if USES_Z_MIN_PROBE_PIN + #if USE_Z_MIN_PROBE #error "BLTOUCH on Z_MIN_PROBE_PIN requires ENDSTOPPULLUP_ZMIN_PROBE, ENDSTOPPULLUPS, or BLTOUCH_SET_5V_MODE." #else #error "BLTOUCH on Z_MIN_PIN requires ENDSTOPPULLUP_ZMIN, ENDSTOPPULLUPS, or BLTOUCH_SET_5V_MODE." @@ -1382,7 +1382,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #elif Z_MIN_PROBE_ENDSTOP_HIT_STATE != Z_MIN_ENDSTOP_HIT_STATE #error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires Z_MIN_ENDSTOP_HIT_STATE to match Z_MIN_PROBE_ENDSTOP_HIT_STATE." #endif - #elif !HAS_Z_MIN_PROBE_PIN + #elif !USE_Z_MIN_PROBE #error "Z_MIN_PROBE_PIN must be defined if Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN is not enabled." #endif @@ -1767,12 +1767,12 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "DUAL_X_CARRIAGE cannot be used with COREXY, COREYX, COREXZ, COREZX, MARKFORGED_YX, or MARKFORGED_XY." #elif !GOOD_AXIS_PINS(X2) #error "DUAL_X_CARRIAGE requires X2 stepper pins to be defined." - #elif !HAS_X_MAX + #elif !USE_X_MAX #error "DUAL_X_CARRIAGE requires an X_MAX_PIN in addition to the X_MIN_PIN." #elif !defined(X2_HOME_POS) || !defined(X2_MIN_POS) || !defined(X2_MAX_POS) #error "DUAL_X_CARRIAGE requires X2_HOME_POS, X2_MIN_POS, and X2_MAX_POS." - #elif X_HOME_TO_MAX || X2_HOME_TO_MIN - #error "DUAL_X_CARRIAGE requires X_HOME_DIR -1 and X2_HOME_DIR 1." + #elif X_HOME_TO_MAX + #error "DUAL_X_CARRIAGE requires X_HOME_DIR 1." #endif #endif @@ -3045,13 +3045,12 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_WMIN (or ENDSTOPPULLUPS) for W MIN homing." #elif W_SENSORLESS && W_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_WMAX) #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_WMAX (or ENDSTOPPULLUPS) for W MAX homing." - #endif #endif #if ENABLED(SPI_ENDSTOPS) - #if ENABLED(QUICK_HOME) - #warning "SPI_ENDSTOPS may be unreliable with QUICK_HOME. Adjust back-offs for better results." + #if !ANY_AXIS_HAS(SPI) + #error "SPI_ENDSTOPS requires stepper drivers with SPI support." #endif #else // !SPI_ENDSTOPS // Stall detection DIAG = HIGH : TMC2209 @@ -3228,7 +3227,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "SENSORLESS_HOMING requires a TMC stepper driver with StallGuard on X, Y, Z, I, J, K, U, V, or W axes." #endif -#endif +#endif // SENSORLESS_HOMING // Sensorless probing requirements #if ENABLED(SENSORLESS_PROBING) diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index ca72ddc3dc..cf75f3dd28 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -668,6 +668,10 @@ #endif #endif +#if ENABLED(QUICK_HOME) && (X_SPI_SENSORLESS || Y_SPI_SENSORLESS) + #warning "SPI_ENDSTOPS may be unreliable with QUICK_HOME. Adjust back-offs for better results." +#endif + #if CANNOT_EMBED_CONFIGURATION #warning "Disabled CONFIGURATION_EMBEDDING because the target usually has less flash storage. Define FORCE_CONFIG_EMBED to override." #endif diff --git a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp index 055f26c058..7ec088e240 100644 --- a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp +++ b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp @@ -72,9 +72,9 @@ void ESDiagClass::Draw() { DWINUI::Draw_Button(BTN_Continue, 86, 250); DWINUI::cursor.y = 80; #define ES_LABEL(S) draw_es_label(F(STR_##S)) - TERN_(HAS_X_MIN, ES_LABEL(X_MIN)); TERN_(HAS_X_MAX, ES_LABEL(X_MAX)); - TERN_(HAS_Y_MIN, ES_LABEL(Y_MIN)); TERN_(HAS_Y_MAX, ES_LABEL(Y_MAX)); - TERN_(HAS_Z_MIN_PIN, ES_LABEL(Z_MIN)); TERN_(HAS_Z_MAX, ES_LABEL(Z_MAX)); + TERN_(USE_X_MIN, ES_LABEL(X_MIN)); TERN_(USE_X_MAX, ES_LABEL(X_MAX)); + TERN_(USE_Y_MIN, ES_LABEL(Y_MIN)); TERN_(USE_Y_MAX, ES_LABEL(Y_MAX)); + TERN_(HAS_Z_MIN_PIN, ES_LABEL(Z_MIN)); TERN_(USE_Z_MAX, ES_LABEL(Z_MAX)); TERN_(HAS_FILAMENT_SENSOR, draw_es_label(F(STR_FILAMENT))); Update(); } @@ -82,9 +82,9 @@ void ESDiagClass::Draw() { void ESDiagClass::Update() { DWINUI::cursor.y = 80; #define ES_REPORT(S) draw_es_state(READ(S##_PIN) == S##_ENDSTOP_HIT_STATE) - TERN_(HAS_X_MIN, ES_REPORT(X_MIN)); TERN_(HAS_X_MAX, ES_REPORT(X_MAX)); - TERN_(HAS_Y_MIN, ES_REPORT(Y_MIN)); TERN_(HAS_Y_MAX, ES_REPORT(Y_MAX)); - TERN_(HAS_Z_MIN_PIN, ES_REPORT(Z_MIN)); TERN_(HAS_Z_MAX, ES_REPORT(Z_MAX)); + TERN_(USE_X_MIN, ES_REPORT(X_MIN)); TERN_(USE_X_MAX, ES_REPORT(X_MAX)); + TERN_(USE_Y_MIN, ES_REPORT(Y_MIN)); TERN_(USE_Y_MAX, ES_REPORT(Y_MAX)); + TERN_(HAS_Z_MIN_PIN, ES_REPORT(Z_MIN)); TERN_(USE_Z_MAX, ES_REPORT(Z_MAX)); TERN_(HAS_FILAMENT_SENSOR, draw_es_state(READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE)); DWIN_UpdateLCD(); } diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp index 46d4998591..eae83d070d 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp @@ -54,27 +54,27 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) { cmd.font(TERN(TOUCH_UI_PORTRAIT, font_large, font_medium)) .text(BTN_POS(1,1), BTN_SIZE(6,1), GET_TEXT_F(MSG_LCD_ENDSTOPS)) .font(font_tiny); - #if HAS_X_MAX + #if USE_X_MAX PIN_ENABLED (1, 2, PSTR(STR_X_MAX), X_MAX, X_MAX_ENDSTOP_HIT_STATE) #else PIN_DISABLED(1, 2, PSTR(STR_X_MAX), X_MAX) #endif - #if HAS_Y_MAX + #if USE_Y_MAX PIN_ENABLED (3, 2, PSTR(STR_Y_MAX), Y_MAX, Y_MAX_ENDSTOP_HIT_STATE) #else PIN_DISABLED(3, 2, PSTR(STR_Y_MAX), Y_MAX) #endif - #if HAS_Z_MAX + #if USE_Z_MAX PIN_ENABLED (5, 2, PSTR(STR_Z_MAX), Z_MAX, Z_MAX_ENDSTOP_HIT_STATE) #else PIN_DISABLED(5, 2, PSTR(STR_Z_MAX), Z_MAX) #endif - #if HAS_X_MIN + #if USE_X_MIN PIN_ENABLED (1, 3, PSTR(STR_X_MIN), X_MIN, X_MIN_ENDSTOP_HIT_STATE) #else PIN_DISABLED(1, 3, PSTR(STR_X_MIN), X_MIN) #endif - #if HAS_Y_MIN + #if USE_Y_MIN PIN_ENABLED (3, 3, PSTR(STR_Y_MIN), Y_MIN, Y_MIN_ENDSTOP_HIT_STATE) #else PIN_DISABLED(3, 3, PSTR(STR_Y_MIN), Y_MIN) diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp index 20f069aa49..e021771b13 100644 --- a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp +++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp @@ -87,12 +87,12 @@ #if PIN_EXISTS(MT_DET_2) mt_det2_sta = (READ(MT_DET_2_PIN) == LOW); #endif - TERN_(HAS_X_ENDSTOP, endstopx1_sta = ESTATE(TERN(HAS_X_MIN, X_MIN, X_MAX))); - TERN_(HAS_X2_ENDSTOP, endstopx2_sta = ESTATE(TERN(HAS_X2_MIN, X2_MIN, X2_MAX))); - TERN_(HAS_Y_ENDSTOP, endstopy1_sta = ESTATE(TERN(HAS_Y_MIN, Y_MIN, Y_MAX))); - TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = ESTATE(TERN(HAS_Y2_MIN, Y2_MIN, Y2_MAX))); + TERN_(HAS_X_ENDSTOP, endstopx1_sta = ESTATE(TERN(USE_X_MIN, X_MIN, X_MAX))); + TERN_(HAS_X2_ENDSTOP, endstopx2_sta = ESTATE(TERN(USE_X2_MIN, X2_MIN, X2_MAX))); + TERN_(HAS_Y_ENDSTOP, endstopy1_sta = ESTATE(TERN(USE_Y_MIN, Y_MIN, Y_MAX))); + TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = ESTATE(TERN(USE_Y2_MIN, Y2_MIN, Y2_MAX))); TERN_(HAS_Z_ENDSTOP, endstopz1_sta = ESTATE(TERN(HAS_Z_MIN_PIN, Z_MIN, Z_MAX))); - TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = ESTATE(TERN(HAS_Z2_MIN, Z2_MIN, Z2_MAX))); + TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = ESTATE(TERN(USE_Z2_MIN, Z2_MIN, Z2_MAX))); } void test_gpio_readlevel_H() { @@ -104,12 +104,12 @@ #if PIN_EXISTS(MT_DET_2) mt_det2_sta = (READ(MT_DET_2_PIN) == HIGH); #endif - TERN_(HAS_X_ENDSTOP, endstopx1_sta = !ESTATE(TERN(HAS_X_MIN, X_MIN, X_MAX))); - TERN_(HAS_X2_ENDSTOP, endstopx2_sta = !ESTATE(TERN(HAS_X2_MIN, X2_MIN, X2_MAX))); - TERN_(HAS_Y_ENDSTOP, endstopy1_sta = !ESTATE(TERN(HAS_Y_MIN, Y_MIN, Y_MAX))); - TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = !ESTATE(TERN(HAS_Y2_MIN, Y2_MIN, Y2_MAX))); + TERN_(HAS_X_ENDSTOP, endstopx1_sta = !ESTATE(TERN(USE_X_MIN, X_MIN, X_MAX))); + TERN_(HAS_X2_ENDSTOP, endstopx2_sta = !ESTATE(TERN(USE_X2_MIN, X2_MIN, X2_MAX))); + TERN_(HAS_Y_ENDSTOP, endstopy1_sta = !ESTATE(TERN(USE_Y_MIN, Y_MIN, Y_MAX))); + TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = !ESTATE(TERN(USE_Y2_MIN, Y2_MIN, Y2_MAX))); TERN_(HAS_Z_ENDSTOP, endstopz1_sta = !ESTATE(TERN(HAS_Z_MIN_PIN, Z_MIN, Z_MAX))); - TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = !ESTATE(TERN(HAS_Z2_MIN, Z2_MIN, Z2_MAX))); + TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = !ESTATE(TERN(USE_Z2_MIN, Z2_MIN, Z2_MAX))); } #include "../../../libs/buzzer.h" diff --git a/Marlin/src/lcd/extui/nextion/nextion_tft.cpp b/Marlin/src/lcd/extui/nextion/nextion_tft.cpp index 8b7b36e9ce..788be5ac65 100644 --- a/Marlin/src/lcd/extui/nextion/nextion_tft.cpp +++ b/Marlin/src/lcd/extui/nextion/nextion_tft.cpp @@ -445,9 +445,9 @@ void NextionTFT::PanelInfo(uint8_t req) { #elif Z_HOME_TO_MAX SEND_VALasTXT("z2", READ(Z_MAX_PIN) == Z_MAX_ENDSTOP_HIT_STATE ? "triggered" : "open"); #endif - #if HAS_Z2_MIN + #if USE_Z2_MIN SEND_VALasTXT("z2", READ(Z2_MIN_PIN) == Z2_MIN_ENDSTOP_HIT_STATE ? "triggered" : "open"); - #elif HAS_Z2_MAX + #elif USE_Z2_MAX SEND_VALasTXT("z2", READ(Z2_MAX_PIN) == Z2_MAX_ENDSTOP_HIT_STATE ? "triggered" : "open"); #endif #if HAS_BED_PROBE diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 668be5f1f4..ebe0a64bac 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -38,7 +38,7 @@ #include HAL_PATH(.., endstop_interrupts.h) #endif -#if BOTH(SD_ABORT_ON_ENDSTOP_HIT, HAS_MEDIA) +#if ENABLED(SD_ABORT_ON_ENDSTOP_HIT) #include "printcounter.h" // for print_job_timer #endif @@ -110,88 +110,88 @@ Endstops::endstop_mask_t Endstops::live_state = 0; void Endstops::init() { #define _INIT_ENDSTOP(T,A,N) TERN(ENDSTOPPULLUP_##A##T, SET_INPUT_PULLUP, TERN(ENDSTOPPULLDOWN_##A##T, SET_INPUT_PULLDOWN, SET_INPUT))(A##N##_##T##_PIN) - #if HAS_X_MIN + #if USE_X_MIN _INIT_ENDSTOP(MIN,X,); #endif - #if HAS_X_MAX + #if USE_X_MAX _INIT_ENDSTOP(MAX,X,); #endif - #if HAS_X2_MIN + #if USE_X2_MIN _INIT_ENDSTOP(MIN,X,2); #endif - #if HAS_X2_MAX + #if USE_X2_MAX _INIT_ENDSTOP(MAX,X,2); #endif - #if HAS_Y_MIN + #if USE_Y_MIN _INIT_ENDSTOP(MIN,Y,); #endif - #if HAS_Y_MAX + #if USE_Y_MAX _INIT_ENDSTOP(MAX,Y,); #endif - #if HAS_Y2_MIN + #if USE_Y2_MIN _INIT_ENDSTOP(MIN,Y,2); #endif - #if HAS_Y2_MAX + #if USE_Y2_MAX _INIT_ENDSTOP(MAX,Y,2); #endif #if HAS_Z_MIN_PIN _INIT_ENDSTOP(MIN,Z,); #endif - #if HAS_Z_MAX + #if USE_Z_MAX _INIT_ENDSTOP(MAX,Z,); #endif - #if HAS_Z2_MIN + #if USE_Z2_MIN _INIT_ENDSTOP(MIN,Z,2); #endif - #if HAS_Z2_MAX + #if USE_Z2_MAX _INIT_ENDSTOP(MAX,Z,2); #endif - #if HAS_Z3_MIN + #if USE_Z3_MIN _INIT_ENDSTOP(MIN,Z,3); #endif - #if HAS_Z3_MAX + #if USE_Z3_MAX _INIT_ENDSTOP(MAX,Z,3); #endif - #if HAS_Z4_MIN + #if USE_Z4_MIN _INIT_ENDSTOP(MIN,Z,4); #endif - #if HAS_Z4_MAX + #if USE_Z4_MAX _INIT_ENDSTOP(MAX,Z,4); #endif - #if HAS_I_MIN + #if USE_I_MIN _INIT_ENDSTOP(MIN,I,); #endif - #if HAS_I_MAX + #if USE_I_MAX _INIT_ENDSTOP(MAX,I,); #endif - #if HAS_J_MIN + #if USE_J_MIN _INIT_ENDSTOP(MIN,J,); #endif - #if HAS_J_MAX + #if USE_J_MAX _INIT_ENDSTOP(MAX,J,); #endif - #if HAS_K_MIN + #if USE_K_MIN _INIT_ENDSTOP(MIN,K,); #endif - #if HAS_K_MAX + #if USE_K_MAX _INIT_ENDSTOP(MAX,K,); #endif - #if HAS_U_MIN + #if USE_U_MIN _INIT_ENDSTOP(MIN,U,); #endif - #if HAS_U_MAX + #if USE_U_MAX _INIT_ENDSTOP(MAX,U,); #endif - #if HAS_V_MIN + #if USE_V_MIN _INIT_ENDSTOP(MIN,V,); #endif - #if HAS_V_MAX + #if USE_V_MAX _INIT_ENDSTOP(MAX,V,); #endif - #if HAS_W_MIN + #if USE_W_MIN _INIT_ENDSTOP(MIN,W,); #endif - #if HAS_W_MAX + #if USE_W_MAX _INIT_ENDSTOP(MAX,W,); #endif @@ -205,7 +205,7 @@ void Endstops::init() { #endif #endif - #if USES_Z_MIN_PROBE_PIN + #if USE_Z_MIN_PROBE #if ENABLED(ENDSTOPPULLUP_ZMIN_PROBE) SET_INPUT_PULLUP(Z_MIN_PROBE_PIN); #elif ENABLED(ENDSTOPPULLDOWN_ZMIN_PROBE) @@ -338,7 +338,7 @@ void Endstops::event_handler() { _ENDSTOP_HIT_TEST(W,'W') ); - #if USES_Z_MIN_PROBE_PIN + #if USE_Z_MIN_PROBE #define P_AXIS Z_AXIS if (TEST(hit_state, Z_MIN_PROBE)) _ENDSTOP_HIT_ECHO(P, 'P'); #endif @@ -352,7 +352,7 @@ void Endstops::event_handler() { ) ); - #if BOTH(SD_ABORT_ON_ENDSTOP_HIT, HAS_MEDIA) + #if ENABLED(SD_ABORT_ON_ENDSTOP_HIT) if (planner.abort_on_endstop_hit) { card.abortFilePrintNow(); quickstop_stepper(); @@ -384,94 +384,94 @@ void __O2 Endstops::report_states() { TERN_(BLTOUCH, bltouch._set_SW_mode()); SERIAL_ECHOLNPGM(STR_M119_REPORT); #define ES_REPORT(S) print_es_state(READ_ENDSTOP(S##_PIN) == S##_ENDSTOP_HIT_STATE, F(STR_##S)) - #if HAS_X_MIN + #if USE_X_MIN ES_REPORT(X_MIN); #endif - #if HAS_X2_MIN + #if USE_X2_MIN ES_REPORT(X2_MIN); #endif - #if HAS_X_MAX + #if USE_X_MAX ES_REPORT(X_MAX); #endif - #if HAS_X2_MAX + #if USE_X2_MAX ES_REPORT(X2_MAX); #endif - #if HAS_Y_MIN + #if USE_Y_MIN ES_REPORT(Y_MIN); #endif - #if HAS_Y2_MIN + #if USE_Y2_MIN ES_REPORT(Y2_MIN); #endif - #if HAS_Y_MAX + #if USE_Y_MAX ES_REPORT(Y_MAX); #endif - #if HAS_Y2_MAX + #if USE_Y2_MAX ES_REPORT(Y2_MAX); #endif - #if HAS_Z_MIN + #if USE_Z_MIN ES_REPORT(Z_MIN); #endif - #if HAS_Z2_MIN + #if USE_Z2_MIN ES_REPORT(Z2_MIN); #endif - #if HAS_Z3_MIN + #if USE_Z3_MIN ES_REPORT(Z3_MIN); #endif - #if HAS_Z4_MIN + #if USE_Z4_MIN ES_REPORT(Z4_MIN); #endif - #if HAS_Z_MAX + #if USE_Z_MAX ES_REPORT(Z_MAX); #endif - #if HAS_Z2_MAX + #if USE_Z2_MAX ES_REPORT(Z2_MAX); #endif - #if HAS_Z3_MAX + #if USE_Z3_MAX ES_REPORT(Z3_MAX); #endif - #if HAS_Z4_MAX + #if USE_Z4_MAX ES_REPORT(Z4_MAX); #endif - #if HAS_I_MIN + #if USE_I_MIN ES_REPORT(I_MIN); #endif - #if HAS_I_MAX + #if USE_I_MAX ES_REPORT(I_MAX); #endif - #if HAS_J_MIN + #if USE_J_MIN ES_REPORT(J_MIN); #endif - #if HAS_J_MAX + #if USE_J_MAX ES_REPORT(J_MAX); #endif - #if HAS_K_MIN + #if USE_K_MIN ES_REPORT(K_MIN); #endif - #if HAS_K_MAX + #if USE_K_MAX ES_REPORT(K_MAX); #endif - #if HAS_U_MIN + #if USE_U_MIN ES_REPORT(U_MIN); #endif - #if HAS_U_MAX + #if USE_U_MAX ES_REPORT(U_MAX); #endif - #if HAS_V_MIN + #if USE_V_MIN ES_REPORT(V_MIN); #endif - #if HAS_V_MAX + #if USE_V_MAX ES_REPORT(V_MAX); #endif - #if HAS_W_MIN + #if USE_W_MIN ES_REPORT(W_MIN); #endif - #if HAS_W_MAX + #if USE_W_MAX ES_REPORT(W_MAX); #endif #if ENABLED(PROBE_ACTIVATION_SWITCH) print_es_state(probe_switch_activated(), F(STR_PROBE_EN)); #endif - #if USES_Z_MIN_PROBE_PIN + #if USE_Z_MIN_PROBE print_es_state(PROBE_TRIGGERED(), F(STR_Z_PROBE)); #endif #if MULTI_FILAMENT_SENSOR @@ -519,12 +519,12 @@ void Endstops::update() { #if ENABLED(G38_PROBE_TARGET) // For G38 moves check the probe's pin for ALL movement - if (G38_move) UPDATE_LIVE_STATE(Z, TERN(USES_Z_MIN_PROBE_PIN, MIN_PROBE, MIN)); + if (G38_move) UPDATE_LIVE_STATE(Z, TERN(USE_Z_MIN_PROBE, MIN_PROBE, MIN)); #endif // With Dual X, endstops are only checked in the homing direction for the active extruder - #define X_MIN_TEST() TERN1(DUAL_X_CARRIAGE, TERN0(X_HOME_TO_MIN, stepper.last_moved_extruder == 0) || TERN0(X2_HOME_TO_MIN, stepper.last_moved_extruder != 0)) - #define X_MAX_TEST() TERN1(DUAL_X_CARRIAGE, TERN0(X_HOME_TO_MAX, stepper.last_moved_extruder == 0) || TERN0(X2_HOME_TO_MAX, stepper.last_moved_extruder != 0)) + #define X_MIN_TEST() TERN1(DUAL_X_CARRIAGE, stepper.last_moved_extruder == 0) // Check min for the left carriage + #define X_MAX_TEST() TERN1(DUAL_X_CARRIAGE, stepper.last_moved_extruder != 0) // Check max for the right carriage // Use HEAD for core axes, AXIS for others #if ANY(CORE_IS_XY, CORE_IS_XZ, MARKFORGED_XY, MARKFORGED_YX) @@ -553,10 +553,10 @@ void Endstops::update() { /** * Check and update endstops */ - #if HAS_X_MIN && !X_SPI_SENSORLESS + #if USE_X_MIN && !X_SPI_SENSORLESS UPDATE_LIVE_STATE(X, MIN); #if ENABLED(X_DUAL_ENDSTOPS) - #if HAS_X2_MIN + #if USE_X2_MIN UPDATE_LIVE_STATE(X2, MIN); #else COPY_LIVE_STATE(X_MIN, X2_MIN); @@ -564,10 +564,10 @@ void Endstops::update() { #endif #endif - #if HAS_X_MAX && !X_SPI_SENSORLESS + #if USE_X_MAX && !X_SPI_SENSORLESS UPDATE_LIVE_STATE(X, MAX); #if ENABLED(X_DUAL_ENDSTOPS) - #if HAS_X2_MAX + #if USE_X2_MAX UPDATE_LIVE_STATE(X2, MAX); #else COPY_LIVE_STATE(X_MAX, X2_MAX); @@ -575,10 +575,10 @@ void Endstops::update() { #endif #endif - #if HAS_Y_MIN && !Y_SPI_SENSORLESS + #if USE_Y_MIN && !Y_SPI_SENSORLESS UPDATE_LIVE_STATE(Y, MIN); #if ENABLED(Y_DUAL_ENDSTOPS) - #if HAS_Y2_MIN + #if USE_Y2_MIN UPDATE_LIVE_STATE(Y2, MIN); #else COPY_LIVE_STATE(Y_MIN, Y2_MIN); @@ -586,10 +586,10 @@ void Endstops::update() { #endif #endif - #if HAS_Y_MAX && !Y_SPI_SENSORLESS + #if USE_Y_MAX && !Y_SPI_SENSORLESS UPDATE_LIVE_STATE(Y, MAX); #if ENABLED(Y_DUAL_ENDSTOPS) - #if HAS_Y2_MAX + #if USE_Y2_MAX UPDATE_LIVE_STATE(Y2, MAX); #else COPY_LIVE_STATE(Y_MAX, Y2_MAX); @@ -597,25 +597,25 @@ void Endstops::update() { #endif #endif - #if HAS_Z_MIN && NONE(Z_SPI_SENSORLESS, Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) + #if USE_Z_MIN && NONE(Z_SPI_SENSORLESS, Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) #if HAS_Z_MIN_PIN UPDATE_LIVE_STATE(Z, MIN); #endif #if ENABLED(Z_MULTI_ENDSTOPS) - #if HAS_Z2_MIN + #if USE_Z2_MIN UPDATE_LIVE_STATE(Z2, MIN); #else COPY_LIVE_STATE(Z_MIN, Z2_MIN); #endif #if NUM_Z_STEPPERS >= 3 - #if HAS_Z3_MIN + #if USE_Z3_MIN UPDATE_LIVE_STATE(Z3, MIN); #else COPY_LIVE_STATE(Z_MIN, Z3_MIN); #endif #endif #if NUM_Z_STEPPERS >= 4 - #if HAS_Z4_MIN + #if USE_Z4_MIN UPDATE_LIVE_STATE(Z4, MIN); #else COPY_LIVE_STATE(Z_MIN, Z4_MIN); @@ -627,39 +627,39 @@ void Endstops::update() { #if HAS_BED_PROBE // When closing the gap check the enabled probe if (probe_switch_activated()) - UPDATE_LIVE_STATE(Z, TERN(USES_Z_MIN_PROBE_PIN, MIN_PROBE, MIN)); + UPDATE_LIVE_STATE(Z, TERN(USE_Z_MIN_PROBE, MIN_PROBE, MIN)); #endif - #if HAS_Z_MAX && !Z_SPI_SENSORLESS + #if USE_Z_MAX && !Z_SPI_SENSORLESS // Check both Z dual endstops #if ENABLED(Z_MULTI_ENDSTOPS) UPDATE_LIVE_STATE(Z, MAX); - #if HAS_Z2_MAX + #if USE_Z2_MAX UPDATE_LIVE_STATE(Z2, MAX); #else COPY_LIVE_STATE(Z_MAX, Z2_MAX); #endif #if NUM_Z_STEPPERS >= 3 - #if HAS_Z3_MAX + #if USE_Z3_MAX UPDATE_LIVE_STATE(Z3, MAX); #else COPY_LIVE_STATE(Z_MAX, Z3_MAX); #endif #endif #if NUM_Z_STEPPERS >= 4 - #if HAS_Z4_MAX + #if USE_Z4_MAX UPDATE_LIVE_STATE(Z4, MAX); #else COPY_LIVE_STATE(Z_MAX, Z4_MAX); #endif #endif - #elif TERN1(USES_Z_MIN_PROBE_PIN, Z_MAX_PIN != Z_MIN_PROBE_PIN) + #elif TERN1(USE_Z_MIN_PROBE, Z_MAX_PIN != Z_MIN_PROBE_PIN) // If this pin isn't the bed probe it's the Z endstop UPDATE_LIVE_STATE(Z, MAX); #endif #endif - #if HAS_I_MIN && !I_SPI_SENSORLESS + #if USE_I_MIN && !I_SPI_SENSORLESS #if ENABLED(I_DUAL_ENDSTOPS) UPDATE_LIVE_STATE(I, MIN); #else @@ -667,7 +667,7 @@ void Endstops::update() { #endif #endif - #if HAS_I_MAX && !I_SPI_SENSORLESS + #if USE_I_MAX && !I_SPI_SENSORLESS #if ENABLED(I_DUAL_ENDSTOPS) UPDATE_LIVE_STATE(I, MAX); #else @@ -675,7 +675,7 @@ void Endstops::update() { #endif #endif - #if HAS_J_MIN && !J_SPI_SENSORLESS + #if USE_J_MIN && !J_SPI_SENSORLESS #if ENABLED(J_DUAL_ENDSTOPS) UPDATE_LIVE_STATE(J, MIN); #else @@ -683,7 +683,7 @@ void Endstops::update() { #endif #endif - #if HAS_J_MAX && !J_SPI_SENSORLESS + #if USE_J_MAX && !J_SPI_SENSORLESS #if ENABLED(J_DUAL_ENDSTOPS) UPDATE_LIVE_STATE(J, MAX); #else @@ -691,7 +691,7 @@ void Endstops::update() { #endif #endif - #if HAS_K_MIN && !K_SPI_SENSORLESS + #if USE_K_MIN && !K_SPI_SENSORLESS #if ENABLED(K_DUAL_ENDSTOPS) UPDATE_LIVE_STATE(K, MIN); #else @@ -699,7 +699,7 @@ void Endstops::update() { #endif #endif - #if HAS_K_MAX && !K_SPI_SENSORLESS + #if USE_K_MAX && !K_SPI_SENSORLESS #if ENABLED(K_DUAL_ENDSTOPS) UPDATE_LIVE_STATE(K, MAX); #else @@ -707,7 +707,7 @@ void Endstops::update() { #endif #endif - #if HAS_U_MIN && !U_SPI_SENSORLESS + #if USE_U_MIN && !U_SPI_SENSORLESS #if ENABLED(U_DUAL_ENDSTOPS) UPDATE_LIVE_STATE(U, MIN); #else @@ -715,7 +715,7 @@ void Endstops::update() { #endif #endif - #if HAS_U_MAX && !U_SPI_SENSORLESS + #if USE_U_MAX && !U_SPI_SENSORLESS #if ENABLED(U_DUAL_ENDSTOPS) UPDATE_LIVE_STATE(U, MAX); #else @@ -723,14 +723,14 @@ void Endstops::update() { #endif #endif - #if HAS_V_MIN && !V_SPI_SENSORLESS + #if USE_V_MIN && !V_SPI_SENSORLESS #if ENABLED(V_DUAL_ENDSTOPS) UPDATE_LIVE_STATE(V, MIN); #else UPDATE_LIVE_STATE(V, MIN); #endif #endif - #if HAS_V_MAX && !V_SPI_SENSORLESS + #if USE_V_MAX && !V_SPI_SENSORLESS #if ENABLED(O_DUAL_ENDSTOPS) UPDATE_LIVE_STATE(V, MAX); #else @@ -738,14 +738,14 @@ void Endstops::update() { #endif #endif - #if HAS_W_MIN && !W_SPI_SENSORLESS + #if USE_W_MIN && !W_SPI_SENSORLESS #if ENABLED(W_DUAL_ENDSTOPS) UPDATE_LIVE_STATE(W, MIN); #else UPDATE_LIVE_STATE(W, MIN); #endif #endif - #if HAS_W_MAX && !W_SPI_SENSORLESS + #if USE_W_MAX && !W_SPI_SENSORLESS #if ENABLED(W_DUAL_ENDSTOPS) UPDATE_LIVE_STATE(W, MAX); #else @@ -902,7 +902,7 @@ void Endstops::update() { #if HAS_Y_AXIS if (stepper.axis_is_moving(Y_AXIS)) { if (stepper.motor_direction(Y_AXIS_HEAD)) { // -direction - #if HAS_Y_MIN || (Y_SPI_SENSORLESS && Y_HOME_TO_MIN) + #if USE_Y_MIN || (Y_SPI_SENSORLESS && Y_HOME_TO_MIN) PROCESS_ENDSTOP_Y(MIN); #if CORE_DIAG(XY, X, MIN) PROCESS_CORE_ENDSTOP(X,MIN,Y,MIN); @@ -916,7 +916,7 @@ void Endstops::update() { #endif } else { // +direction - #if HAS_Y_MAX || (Y_SPI_SENSORLESS && Y_HOME_TO_MAX) + #if USE_Y_MAX || (Y_SPI_SENSORLESS && Y_HOME_TO_MAX) PROCESS_ENDSTOP_Y(MAX); #if CORE_DIAG(XY, X, MIN) PROCESS_CORE_ENDSTOP(X,MIN,Y,MAX); @@ -936,9 +936,9 @@ void Endstops::update() { if (stepper.axis_is_moving(Z_AXIS)) { if (stepper.motor_direction(Z_AXIS_HEAD)) { // Z -direction. Gantry down, bed up. - #if HAS_Z_MIN || (Z_SPI_SENSORLESS && Z_HOME_TO_MIN) + #if USE_Z_MIN || (Z_SPI_SENSORLESS && Z_HOME_TO_MIN) if ( TERN1(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, z_probe_enabled) - && TERN1(USES_Z_MIN_PROBE_PIN, !z_probe_enabled) + && TERN1(USE_Z_MIN_PROBE, !z_probe_enabled) ) PROCESS_ENDSTOP_Z(MIN); #if CORE_DIAG(XZ, X, MIN) PROCESS_CORE_ENDSTOP(X,MIN,Z,MIN); @@ -952,15 +952,15 @@ void Endstops::update() { #endif // When closing the gap check the enabled probe - #if USES_Z_MIN_PROBE_PIN + #if USE_Z_MIN_PROBE if (z_probe_enabled) PROCESS_ENDSTOP(Z, MIN_PROBE); #endif } else { // Z +direction. Gantry up, bed down. - #if HAS_Z_MAX || (Z_SPI_SENSORLESS && Z_HOME_TO_MAX) + #if USE_Z_MAX || (Z_SPI_SENSORLESS && Z_HOME_TO_MAX) #if ENABLED(Z_MULTI_ENDSTOPS) PROCESS_ENDSTOP_Z(MAX); - #elif TERN1(USES_Z_MIN_PROBE_PIN, Z_MAX_PIN != Z_MIN_PROBE_PIN) // No probe or probe is Z_MIN || Probe is not Z_MAX + #elif TERN1(USE_Z_MIN_PROBE, Z_MAX_PIN != Z_MIN_PROBE_PIN) // No probe or probe is Z_MIN || Probe is not Z_MAX PROCESS_ENDSTOP(Z, MAX); #endif #if CORE_DIAG(XZ, X, MIN) @@ -980,12 +980,12 @@ void Endstops::update() { #if HAS_I_AXIS if (stepper.axis_is_moving(I_AXIS)) { if (stepper.motor_direction(I_AXIS_HEAD)) { // -direction - #if HAS_I_MIN || (I_SPI_SENSORLESS && I_HOME_TO_MIN) + #if USE_I_MIN || (I_SPI_SENSORLESS && I_HOME_TO_MIN) PROCESS_ENDSTOP(I, MIN); #endif } else { // +direction - #if HAS_I_MAX || (I_SPI_SENSORLESS && I_HOME_TO_MAX) + #if USE_I_MAX || (I_SPI_SENSORLESS && I_HOME_TO_MAX) PROCESS_ENDSTOP(I, MAX); #endif } @@ -995,12 +995,12 @@ void Endstops::update() { #if HAS_J_AXIS if (stepper.axis_is_moving(J_AXIS)) { if (stepper.motor_direction(J_AXIS_HEAD)) { // -direction - #if HAS_J_MIN || (J_SPI_SENSORLESS && J_HOME_TO_MIN) + #if USE_J_MIN || (J_SPI_SENSORLESS && J_HOME_TO_MIN) PROCESS_ENDSTOP(J, MIN); #endif } else { // +direction - #if HAS_J_MAX || (J_SPI_SENSORLESS && J_HOME_TO_MAX) + #if USE_J_MAX || (J_SPI_SENSORLESS && J_HOME_TO_MAX) PROCESS_ENDSTOP(J, MAX); #endif } @@ -1010,12 +1010,12 @@ void Endstops::update() { #if HAS_K_AXIS if (stepper.axis_is_moving(K_AXIS)) { if (stepper.motor_direction(K_AXIS_HEAD)) { // -direction - #if HAS_K_MIN || (K_SPI_SENSORLESS && K_HOME_TO_MIN) + #if USE_K_MIN || (K_SPI_SENSORLESS && K_HOME_TO_MIN) PROCESS_ENDSTOP(K, MIN); #endif } else { // +direction - #if HAS_K_MAX || (K_SPI_SENSORLESS && K_HOME_TO_MAX) + #if USE_K_MAX || (K_SPI_SENSORLESS && K_HOME_TO_MAX) PROCESS_ENDSTOP(K, MAX); #endif } @@ -1025,12 +1025,12 @@ void Endstops::update() { #if HAS_U_AXIS if (stepper.axis_is_moving(U_AXIS)) { if (stepper.motor_direction(U_AXIS_HEAD)) { // -direction - #if HAS_U_MIN || (U_SPI_SENSORLESS && U_HOME_TO_MIN) + #if USE_U_MIN || (U_SPI_SENSORLESS && U_HOME_TO_MIN) PROCESS_ENDSTOP(U, MIN); #endif } else { // +direction - #if HAS_U_MAX || (U_SPI_SENSORLESS && U_HOME_TO_MAX) + #if USE_U_MAX || (U_SPI_SENSORLESS && U_HOME_TO_MAX) PROCESS_ENDSTOP(U, MAX); #endif } @@ -1040,12 +1040,12 @@ void Endstops::update() { #if HAS_V_AXIS if (stepper.axis_is_moving(V_AXIS)) { if (stepper.motor_direction(V_AXIS_HEAD)) { // -direction - #if HAS_V_MIN || (V_SPI_SENSORLESS && V_HOME_TO_MIN) + #if USE_V_MIN || (V_SPI_SENSORLESS && V_HOME_TO_MIN) PROCESS_ENDSTOP(V, MIN); #endif } else { // +direction - #if HAS_V_MAX || (V_SPI_SENSORLESS && V_HOME_TO_MAX) + #if USE_V_MAX || (V_SPI_SENSORLESS && V_HOME_TO_MAX) PROCESS_ENDSTOP(V, MAX); #endif } @@ -1055,12 +1055,12 @@ void Endstops::update() { #if HAS_W_AXIS if (stepper.axis_is_moving(W_AXIS)) { if (stepper.motor_direction(W_AXIS_HEAD)) { // -direction - #if HAS_W_MIN || (W_SPI_SENSORLESS && W_HOME_TO_MIN) + #if USE_W_MIN || (W_SPI_SENSORLESS && W_HOME_TO_MIN) PROCESS_ENDSTOP(W, MIN); #endif } else { // +direction - #if HAS_W_MAX || (W_SPI_SENSORLESS && W_HOME_TO_MAX) + #if USE_W_MAX || (W_SPI_SENSORLESS && W_HOME_TO_MAX) PROCESS_ENDSTOP(W, MAX); #endif } @@ -1171,91 +1171,91 @@ void Endstops::update() { #define ES_GET_STATE(S) if (READ_ENDSTOP(S##_PIN)) SBI(live_state_local, S) - #if HAS_X_MIN + #if USE_X_MIN ES_GET_STATE(X_MIN); #endif - #if HAS_X_MAX + #if USE_X_MAX ES_GET_STATE(X_MAX); #endif - #if HAS_Y_MIN + #if USE_Y_MIN ES_GET_STATE(Y_MIN); #endif - #if HAS_Y_MAX + #if USE_Y_MAX ES_GET_STATE(Y_MAX); #endif #if HAS_Z_MIN_PIN ES_GET_STATE(Z_MIN); #endif - #if HAS_Z_MAX + #if USE_Z_MAX ES_GET_STATE(Z_MAX); #endif - #if HAS_Z_MIN_PROBE_PIN + #if USE_Z_MIN_PROBE ES_GET_STATE(Z_MIN_PROBE); #endif - #if HAS_X2_MIN + #if USE_X2_MIN ES_GET_STATE(X2_MIN); #endif - #if HAS_X2_MAX + #if USE_X2_MAX ES_GET_STATE(X2_MAX); #endif - #if HAS_Y2_MIN + #if USE_Y2_MIN ES_GET_STATE(Y2_MIN); #endif - #if HAS_Y2_MAX + #if USE_Y2_MAX ES_GET_STATE(Y2_MAX); #endif - #if HAS_Z2_MIN + #if USE_Z2_MIN ES_GET_STATE(Z2_MIN); #endif - #if HAS_Z2_MAX + #if USE_Z2_MAX ES_GET_STATE(Z2_MAX); #endif - #if HAS_Z3_MIN + #if USE_Z3_MIN ES_GET_STATE(Z3_MIN); #endif - #if HAS_Z3_MAX + #if USE_Z3_MAX ES_GET_STATE(Z3_MAX); #endif - #if HAS_Z4_MIN + #if USE_Z4_MIN ES_GET_STATE(Z4_MIN); #endif - #if HAS_Z4_MAX + #if USE_Z4_MAX ES_GET_STATE(Z4_MAX); #endif - #if HAS_I_MAX + #if USE_I_MAX ES_GET_STATE(I_MAX); #endif - #if HAS_I_MIN + #if USE_I_MIN ES_GET_STATE(I_MIN); #endif - #if HAS_J_MAX + #if USE_J_MAX ES_GET_STATE(J_MAX); #endif - #if HAS_J_MIN + #if USE_J_MIN ES_GET_STATE(J_MIN); #endif - #if HAS_K_MAX + #if USE_K_MAX ES_GET_STATE(K_MAX); #endif - #if HAS_K_MIN + #if USE_K_MIN ES_GET_STATE(K_MIN); #endif - #if HAS_U_MAX + #if USE_U_MAX ES_GET_STATE(U_MAX); #endif - #if HAS_U_MIN + #if USE_U_MIN ES_GET_STATE(U_MIN); #endif - #if HAS_V_MAX + #if USE_V_MAX ES_GET_STATE(V_MAX); #endif - #if HAS_V_MIN + #if USE_V_MIN ES_GET_STATE(V_MIN); #endif - #if HAS_W_MAX + #if USE_W_MAX ES_GET_STATE(W_MAX); #endif - #if HAS_W_MIN + #if USE_W_MIN ES_GET_STATE(W_MIN); #endif @@ -1263,91 +1263,91 @@ void Endstops::update() { #define ES_REPORT_CHANGE(S) if (TEST(endstop_change, S)) SERIAL_ECHOPGM(" " STRINGIFY(S) ":", TEST(live_state_local, S)) if (endstop_change) { - #if HAS_X_MIN + #if USE_X_MIN ES_REPORT_CHANGE(X_MIN); #endif - #if HAS_X_MAX + #if USE_X_MAX ES_REPORT_CHANGE(X_MAX); #endif - #if HAS_Y_MIN + #if USE_Y_MIN ES_REPORT_CHANGE(Y_MIN); #endif - #if HAS_Y_MAX + #if USE_Y_MAX ES_REPORT_CHANGE(Y_MAX); #endif - #if HAS_Z_MIN + #if USE_Z_MIN ES_REPORT_CHANGE(Z_MIN); #endif - #if HAS_Z_MAX + #if USE_Z_MAX ES_REPORT_CHANGE(Z_MAX); #endif - #if HAS_Z_MIN_PROBE_PIN + #if USE_Z_MIN_PROBE ES_REPORT_CHANGE(Z_MIN_PROBE); #endif - #if HAS_X2_MIN + #if USE_X2_MIN ES_REPORT_CHANGE(X2_MIN); #endif - #if HAS_X2_MAX + #if USE_X2_MAX ES_REPORT_CHANGE(X2_MAX); #endif - #if HAS_Y2_MIN + #if USE_Y2_MIN ES_REPORT_CHANGE(Y2_MIN); #endif - #if HAS_Y2_MAX + #if USE_Y2_MAX ES_REPORT_CHANGE(Y2_MAX); #endif - #if HAS_Z2_MIN + #if USE_Z2_MIN ES_REPORT_CHANGE(Z2_MIN); #endif - #if HAS_Z2_MAX + #if USE_Z2_MAX ES_REPORT_CHANGE(Z2_MAX); #endif - #if HAS_Z3_MIN + #if USE_Z3_MIN ES_REPORT_CHANGE(Z3_MIN); #endif - #if HAS_Z3_MAX + #if USE_Z3_MAX ES_REPORT_CHANGE(Z3_MAX); #endif - #if HAS_Z4_MIN + #if USE_Z4_MIN ES_REPORT_CHANGE(Z4_MIN); #endif - #if HAS_Z4_MAX + #if USE_Z4_MAX ES_REPORT_CHANGE(Z4_MAX); #endif - #if HAS_I_MIN + #if USE_I_MIN ES_REPORT_CHANGE(I_MIN); #endif - #if HAS_I_MAX + #if USE_I_MAX ES_REPORT_CHANGE(I_MAX); #endif - #if HAS_J_MIN + #if USE_J_MIN ES_REPORT_CHANGE(J_MIN); #endif - #if HAS_J_MAX + #if USE_J_MAX ES_REPORT_CHANGE(J_MAX); #endif - #if HAS_K_MIN + #if USE_K_MIN ES_REPORT_CHANGE(K_MIN); #endif - #if HAS_K_MAX + #if USE_K_MAX ES_REPORT_CHANGE(K_MAX); #endif - #if HAS_U_MIN + #if USE_U_MIN ES_REPORT_CHANGE(U_MIN); #endif - #if HAS_U_MAX + #if USE_U_MAX ES_REPORT_CHANGE(U_MAX); #endif - #if HAS_V_MIN + #if USE_V_MIN ES_REPORT_CHANGE(V_MIN); #endif - #if HAS_V_MAX + #if USE_V_MAX ES_REPORT_CHANGE(V_MAX); #endif - #if HAS_W_MIN + #if USE_W_MIN ES_REPORT_CHANGE(W_MIN); #endif - #if HAS_W_MAX + #if USE_W_MAX ES_REPORT_CHANGE(W_MAX); #endif @@ -1419,6 +1419,6 @@ void Endstops::update() { safe_delay(SENSORLESS_STALLGUARD_DELAY); // Short delay needed to settle #endif - #endif // XYZ + #endif } -#endif +#endif // USE_SENSORLESS diff --git a/Marlin/src/module/endstops.h b/Marlin/src/module/endstops.h index 28917697c4..7b662c27ac 100644 --- a/Marlin/src/module/endstops.h +++ b/Marlin/src/module/endstops.h @@ -51,36 +51,36 @@ */ enum EndstopEnum : char { // Common XYZ (ABC) endstops. - ES_ITEM(HAS_X_MIN, X_MIN) ES_ITEM(HAS_X_MAX, X_MAX) - ES_ITEM(HAS_Y_MIN, Y_MIN) ES_ITEM(HAS_Y_MAX, Y_MAX) - ES_ITEM(HAS_Z_MIN, Z_MIN) ES_ITEM(HAS_Z_MAX, Z_MAX) - ES_ITEM(HAS_I_MIN, I_MIN) ES_ITEM(HAS_I_MAX, I_MAX) - ES_ITEM(HAS_J_MIN, J_MIN) ES_ITEM(HAS_J_MAX, J_MAX) - ES_ITEM(HAS_K_MIN, K_MIN) ES_ITEM(HAS_K_MAX, K_MAX) - ES_ITEM(HAS_U_MIN, U_MIN) ES_ITEM(HAS_U_MAX, U_MAX) - ES_ITEM(HAS_V_MIN, V_MIN) ES_ITEM(HAS_V_MAX, V_MAX) - ES_ITEM(HAS_W_MIN, W_MIN) ES_ITEM(HAS_W_MAX, W_MAX) + ES_ITEM(USE_X_MIN, X_MIN) ES_ITEM(USE_X_MAX, X_MAX) + ES_ITEM(USE_Y_MIN, Y_MIN) ES_ITEM(USE_Y_MAX, Y_MAX) + ES_ITEM(USE_Z_MIN, Z_MIN) ES_ITEM(USE_Z_MAX, Z_MAX) + ES_ITEM(USE_I_MIN, I_MIN) ES_ITEM(USE_I_MAX, I_MAX) + ES_ITEM(USE_J_MIN, J_MIN) ES_ITEM(USE_J_MAX, J_MAX) + ES_ITEM(USE_K_MIN, K_MIN) ES_ITEM(USE_K_MAX, K_MAX) + ES_ITEM(USE_U_MIN, U_MIN) ES_ITEM(USE_U_MAX, U_MAX) + ES_ITEM(USE_V_MIN, V_MIN) ES_ITEM(USE_V_MAX, V_MAX) + ES_ITEM(USE_W_MIN, W_MIN) ES_ITEM(USE_W_MAX, W_MAX) // Extra Endstops for XYZ #if ENABLED(X_DUAL_ENDSTOPS) - ES_ITEM(HAS_X_MIN, X2_MIN) ES_ITEM(HAS_X_MAX, X2_MAX) + ES_ITEM(USE_X_MIN, X2_MIN) ES_ITEM(USE_X_MAX, X2_MAX) #endif #if ENABLED(Y_DUAL_ENDSTOPS) - ES_ITEM(HAS_Y_MIN, Y2_MIN) ES_ITEM(HAS_Y_MAX, Y2_MAX) + ES_ITEM(USE_Y_MIN, Y2_MIN) ES_ITEM(USE_Y_MAX, Y2_MAX) #endif #if ENABLED(Z_MULTI_ENDSTOPS) - ES_ITEM(HAS_Z_MIN, Z2_MIN) ES_ITEM(HAS_Z_MAX, Z2_MAX) + ES_ITEM(USE_Z_MIN, Z2_MIN) ES_ITEM(USE_Z_MAX, Z2_MAX) #if NUM_Z_STEPPERS >= 3 - ES_ITEM(HAS_Z_MIN, Z3_MIN) ES_ITEM(HAS_Z_MAX, Z3_MAX) + ES_ITEM(USE_Z_MIN, Z3_MIN) ES_ITEM(USE_Z_MAX, Z3_MAX) #if NUM_Z_STEPPERS >= 4 - ES_ITEM(HAS_Z_MIN, Z4_MIN) ES_ITEM(HAS_Z_MAX, Z4_MAX) + ES_ITEM(USE_Z_MIN, Z4_MIN) ES_ITEM(USE_Z_MAX, Z4_MAX) #endif #endif #endif // Bed Probe state is distinct or shared with Z_MIN (i.e., when the probe is the only Z endstop) #if !HAS_DELTA_SENSORLESS_PROBING - ES_ITEM(HAS_BED_PROBE, Z_MIN_PROBE IF_DISABLED(USES_Z_MIN_PROBE_PIN, = Z_MIN)) + ES_ITEM(HAS_BED_PROBE, Z_MIN_PROBE IF_DISABLED(USE_Z_MIN_PROBE, = Z_MIN)) #endif // The total number of states diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index e899815c0f..394c4748d9 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -608,7 +608,7 @@ void home_if_needed(const bool keeplev=false); float x_home_pos(const uint8_t extruder); - #define TOOL_X_HOME_DIR(T) ((T) ? X2_HOME_DIR : X_HOME_DIR) + #define TOOL_X_HOME_DIR(T) ((T) ? 1 : -1) void set_duplication_enabled(const bool dupe, const int8_t tool_index=-1); void idex_set_mirrored_mode(const bool mirr); diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 96606f30a8..1e01cfd9b6 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -615,7 +615,7 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { if (test_sensitivity.z) stealth_states.z = tmc_enable_stallguard(stepperZ); // All machines will check Z-DIAG for stall endstops.set_homing_current(true); // The "homing" current also applies to probing endstops.enable(true); - #endif + #endif // SENSORLESS_PROBING TERN_(HAS_QUIET_PROBING, set_probing_paused(true)); @@ -623,13 +623,13 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { do_blocking_move_to_z(z, fr_mm_s); // Check to see if the probe was triggered - const bool probe_triggered = + const bool probe_triggered = ( #if HAS_DELTA_SENSORLESS_PROBING endstops.trigger_state() & (_BV(X_MAX) | _BV(Y_MAX) | _BV(Z_MAX)) #else TEST(endstops.trigger_state(), Z_MIN_PROBE) #endif - ; + ); // Offset sensorless probing #if HAS_DELTA_SENSORLESS_PROBING diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 715f3f3a73..eb55ea1b45 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -45,7 +45,7 @@ }; #endif -#if USES_Z_MIN_PROBE_PIN +#if USE_Z_MIN_PROBE #define PROBE_TRIGGERED() (READ(Z_MIN_PROBE_PIN) == Z_MIN_PROBE_ENDSTOP_HIT_STATE) #else #define PROBE_TRIGGERED() (READ(Z_MIN_PIN) == Z_MIN_ENDSTOP_HIT_STATE) diff --git a/Marlin/src/module/stepper/trinamic.cpp b/Marlin/src/module/stepper/trinamic.cpp index 893ce3f8db..3db2c0827e 100644 --- a/Marlin/src/module/stepper/trinamic.cpp +++ b/Marlin/src/module/stepper/trinamic.cpp @@ -991,13 +991,13 @@ void reset_trinamic_drivers() { #if USE_SENSORLESS TERN_(X_SENSORLESS, stepperX.homing_threshold(X_STALL_SENSITIVITY)); - TERN_(X2_SENSORLESS, stepperX2.homing_threshold(CAT(TERN(X2_SENSORLESS, X2, X), _STALL_SENSITIVITY))); + TERN_(X2_SENSORLESS, stepperX2.homing_threshold(X2_STALL_SENSITIVITY)); TERN_(Y_SENSORLESS, stepperY.homing_threshold(Y_STALL_SENSITIVITY)); - TERN_(Y2_SENSORLESS, stepperY2.homing_threshold(CAT(TERN(Y2_SENSORLESS, Y2, Y), _STALL_SENSITIVITY))); + TERN_(Y2_SENSORLESS, stepperY2.homing_threshold(Y2_STALL_SENSITIVITY)); TERN_(Z_SENSORLESS, stepperZ.homing_threshold(Z_STALL_SENSITIVITY)); - TERN_(Z2_SENSORLESS, stepperZ2.homing_threshold(CAT(TERN(Z2_SENSORLESS, Z2, Z), _STALL_SENSITIVITY))); - TERN_(Z3_SENSORLESS, stepperZ3.homing_threshold(CAT(TERN(Z3_SENSORLESS, Z3, Z), _STALL_SENSITIVITY))); - TERN_(Z4_SENSORLESS, stepperZ4.homing_threshold(CAT(TERN(Z4_SENSORLESS, Z4, Z), _STALL_SENSITIVITY))); + TERN_(Z2_SENSORLESS, stepperZ2.homing_threshold(Z2_STALL_SENSITIVITY)); + TERN_(Z3_SENSORLESS, stepperZ3.homing_threshold(Z3_STALL_SENSITIVITY)); + TERN_(Z4_SENSORLESS, stepperZ4.homing_threshold(Z4_STALL_SENSITIVITY)); TERN_(I_SENSORLESS, stepperI.homing_threshold(I_STALL_SENSITIVITY)); TERN_(J_SENSORLESS, stepperJ.homing_threshold(J_STALL_SENSITIVITY)); TERN_(K_SENSORLESS, stepperK.homing_threshold(K_STALL_SENSITIVITY)); diff --git a/Marlin/src/pins/pins_postprocess.h b/Marlin/src/pins/pins_postprocess.h index daf6c03aa3..b0fe6bcb6b 100644 --- a/Marlin/src/pins/pins_postprocess.h +++ b/Marlin/src/pins/pins_postprocess.h @@ -497,7 +497,7 @@ #undef NEEDS_Z_MINMAX // -// Assign endstop pins for boards with only 3 connectors +// Assign endstop pins, with handling for boards that have only 3 connectors // #if HAS_X_AXIS #ifdef X_STOP_PIN @@ -1639,10 +1639,10 @@ /** * X_DUAL_ENDSTOPS endstop reassignment */ -#if ENABLED(X_DUAL_ENDSTOPS) - #if X_HOME_TO_MAX && !defined(X2_MAX_PIN) && PIN_EXISTS(X2_STOP) +#if ENABLED(X_DUAL_ENDSTOPS) && PIN_EXISTS(X2_STOP) + #if X_HOME_TO_MAX && !defined(X2_MAX_PIN) #define X2_MAX_PIN X2_STOP_PIN - #elif X_HOME_TO_MIN && !defined(X2_MIN_PIN) && PIN_EXISTS(X2_STOP) + #elif X_HOME_TO_MIN && !defined(X2_MIN_PIN) #define X2_MIN_PIN X2_STOP_PIN #endif #endif @@ -1650,10 +1650,10 @@ /** * Y_DUAL_ENDSTOPS endstop reassignment */ -#if ENABLED(Y_DUAL_ENDSTOPS) - #if Y_HOME_TO_MAX && !defined(Y2_MAX_PIN) && PIN_EXISTS(Y2_STOP) +#if ENABLED(Y_DUAL_ENDSTOPS) && PIN_EXISTS(Y2_STOP) + #if Y_HOME_TO_MAX && !defined(Y2_MAX_PIN) #define Y2_MAX_PIN Y2_STOP_PIN - #elif Y_HOME_TO_MIN && !defined(Y2_MIN_PIN) && PIN_EXISTS(Y2_STOP) + #elif Y_HOME_TO_MIN && !defined(Y2_MIN_PIN) #define Y2_MIN_PIN Y2_STOP_PIN #endif #endif @@ -1662,22 +1662,24 @@ * Z_MULTI_ENDSTOPS endstop reassignment */ #if ENABLED(Z_MULTI_ENDSTOPS) - #if Z_HOME_TO_MAX && !defined(Z2_MAX_PIN) && PIN_EXISTS(Z2_STOP) - #define Z2_MAX_PIN Z2_STOP_PIN - #elif Z_HOME_TO_MIN && !defined(Z2_MIN_PIN) && PIN_EXISTS(Z2_STOP) - #define Z2_MIN_PIN Z2_STOP_PIN + #if PIN_EXISTS(Z2_STOP) + #if Z_HOME_TO_MAX && !defined(Z2_MAX_PIN) + #define Z2_MAX_PIN Z2_STOP_PIN + #elif Z_HOME_TO_MIN && !defined(Z2_MIN_PIN) + #define Z2_MIN_PIN Z2_STOP_PIN + #endif #endif - #if NUM_Z_STEPPERS >= 3 - #if Z_HOME_TO_MAX && !defined(Z3_MAX_PIN) && PIN_EXISTS(Z3_STOP) + #if NUM_Z_STEPPERS >= 3 && PIN_EXISTS(Z3_STOP) + #if Z_HOME_TO_MAX && !defined(Z3_MAX_PIN) #define Z3_MAX_PIN Z3_STOP_PIN - #elif Z_HOME_TO_MIN && !defined(Z3_MIN_PIN) && PIN_EXISTS(Z3_STOP) + #elif Z_HOME_TO_MIN && !defined(Z3_MIN_PIN) #define Z3_MIN_PIN Z3_STOP_PIN #endif #endif - #if NUM_Z_STEPPERS >= 4 - #if Z_HOME_TO_MAX && !defined(Z4_MAX_PIN) && PIN_EXISTS(Z4_STOP) + #if NUM_Z_STEPPERS >= 4 && PIN_EXISTS(Z4_STOP) + #if Z_HOME_TO_MAX && !defined(Z4_MAX_PIN) #define Z4_MAX_PIN Z4_STOP_PIN - #elif Z_HOME_TO_MIN && !defined(Z4_MIN_PIN) && PIN_EXISTS(Z4_STOP) + #elif Z_HOME_TO_MIN && !defined(Z4_MIN_PIN) #define Z4_MIN_PIN Z4_STOP_PIN #endif #endif From 40895cbcbb284b9d5e7440dc8ad40fdcfd1579bd Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 5 May 2023 20:46:33 -0500 Subject: [PATCH 387/659] =?UTF-8?q?=F0=9F=94=A7=20Allow=20TMC=5FBAUD=5FRAT?= =?UTF-8?q?E=20override?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/esp32/pins_ENWI_ESPNP.h | 4 +++- Marlin/src/pins/gd32f1/pins_SOVOL_V131.h | 4 +++- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h | 7 +++++-- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h | 7 +++++-- Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h | 4 +++- Marlin/src/pins/lpc1768/pins_MKS_SBASE.h | 7 +++++-- Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h | 5 ++++- Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h | 7 +++++-- Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h | 7 +++++-- Marlin/src/pins/lpc1769/pins_FLY_CDY.h | 7 +++++-- Marlin/src/pins/lpc1769/pins_MKS_SGEN.h | 7 +++++-- Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h | 5 ++++- Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h | 7 +++++-- Marlin/src/pins/ramps/pins_RAMPS.h | 5 +++-- Marlin/src/pins/ramps/pins_TRIGORILLA_14.h | 1 + Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h | 7 +++++-- Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h | 7 +++++-- Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h | 7 +++++-- Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h | 4 +++- Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h | 5 +++-- Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h | 7 +++++-- Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH_V12.h | 7 +++++-- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h | 5 ++++- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h | 7 +++++-- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h | 5 ++++- Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h | 7 +++++-- Marlin/src/pins/stm32f4/pins_ARMED.h | 7 +++++-- Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h | 7 +++++-- Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h | 7 +++++-- Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h | 7 +++++-- Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h | 7 +++++-- Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h | 7 +++++-- Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h | 7 +++++-- Marlin/src/pins/stm32f4/pins_LERDGE_K.h | 7 +++++-- Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h | 7 +++++-- .../src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h | 7 +++++-- Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h | 5 ++++- Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h | 7 +++++-- Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h | 6 ++++-- Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h | 6 ++++-- Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h | 11 +++++++---- Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h | 4 +++- Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h | 7 +++++-- Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h | 7 +++++-- Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h | 7 +++++-- Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_0.h | 7 +++++-- Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_1.h | 7 +++++-- Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h | 7 +++++-- Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h | 7 +++++-- Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h | 7 +++++-- Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h | 7 +++++-- 51 files changed, 232 insertions(+), 92 deletions(-) diff --git a/Marlin/src/pins/esp32/pins_ENWI_ESPNP.h b/Marlin/src/pins/esp32/pins_ENWI_ESPNP.h index e911900b1d..360501aa08 100644 --- a/Marlin/src/pins/esp32/pins_ENWI_ESPNP.h +++ b/Marlin/src/pins/esp32/pins_ENWI_ESPNP.h @@ -91,7 +91,9 @@ #define K_CS_PIN 159 // Reduce baud rate to improve software serial reliability -#define TMC_BAUD_RATE 19200 +#ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 +#endif // // Temperature Sensors diff --git a/Marlin/src/pins/gd32f1/pins_SOVOL_V131.h b/Marlin/src/pins/gd32f1/pins_SOVOL_V131.h index 44e5275423..e92c24b86c 100644 --- a/Marlin/src/pins/gd32f1/pins_SOVOL_V131.h +++ b/Marlin/src/pins/gd32f1/pins_SOVOL_V131.h @@ -63,7 +63,9 @@ #define E0_SERIAL_RX_PIN PC14 // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif #endif // HAS_TMC_UART diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h index 90a2ef8afc..ec21a1b39d 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h @@ -186,8 +186,11 @@ #define E1_SERIAL_RX_PIN P1_01 // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART /** * ------ ------ diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h index 41190e644f..9aa6a2b21b 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h @@ -243,8 +243,11 @@ #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART /** ------ ------ * 1.30 | 1 2 | 0.28 0.17 | 1 2 | 0.15 diff --git a/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h b/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h index 92c405b267..a9184073c5 100644 --- a/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h +++ b/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h @@ -106,7 +106,9 @@ #define E2_SERIAL_RX_PIN E2_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif #else #error "TMC2208 UART configuration is required for GMarsh X6." #endif diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h index 09a3075301..6d76fb2c8f 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h @@ -336,8 +336,11 @@ #define E0_SERIAL_RX_PIN P0_26 // TH4 // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // UNUSED //#define PIN_P0_02 P0_02 // AUX1 (Interrupt Capable/ADC/Serial Port 0) diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h index 0994b20a0c..54a91e364d 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h @@ -184,7 +184,10 @@ #define Z2_SERIAL_RX_PIN P1_17 // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + #endif // HAS_TMC_UART // diff --git a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h index 6639053d5e..f5d288fce4 100644 --- a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h +++ b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h @@ -151,8 +151,11 @@ #endif // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h b/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h index 8c32202d4d..2e04f7869a 100644 --- a/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h +++ b/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h @@ -153,8 +153,11 @@ #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // TMC Low Power Standby pins diff --git a/Marlin/src/pins/lpc1769/pins_FLY_CDY.h b/Marlin/src/pins/lpc1769/pins_FLY_CDY.h index fb768ed46a..d5a7a38c23 100644 --- a/Marlin/src/pins/lpc1769/pins_FLY_CDY.h +++ b/Marlin/src/pins/lpc1769/pins_FLY_CDY.h @@ -126,8 +126,11 @@ #define E2_SERIAL_RX_PIN E2_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/lpc1769/pins_MKS_SGEN.h b/Marlin/src/pins/lpc1769/pins_MKS_SGEN.h index 1e71fccfe5..5e552353cd 100644 --- a/Marlin/src/pins/lpc1769/pins_MKS_SGEN.h +++ b/Marlin/src/pins/lpc1769/pins_MKS_SGEN.h @@ -56,5 +56,8 @@ #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART diff --git a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h index 51a8f601ee..e8c48c1b7a 100644 --- a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h +++ b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h @@ -195,7 +195,10 @@ #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + #endif // HAS_TMC_UART // diff --git a/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h b/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h index a55b9fb646..11fa2c9468 100644 --- a/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h +++ b/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h @@ -99,8 +99,11 @@ #define E0_SERIAL_RX_PIN P0_21 // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temp Sensors diff --git a/Marlin/src/pins/ramps/pins_RAMPS.h b/Marlin/src/pins/ramps/pins_RAMPS.h index 0334da2da3..73207593fc 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS.h +++ b/Marlin/src/pins/ramps/pins_RAMPS.h @@ -337,8 +337,9 @@ * Hardware serial communication ports. * If undefined software serial is used according to the pins below * - * Serial2 -- AUX-4 Pin 18 (D16 TX2) and AUX-4 Pin 17 (D17 RX2) - * Serial1 -- Pins D18 and D19 are used for Z-MIN and Z-MAX + * Serial1 -- TX1 = D18 RX1 = D19 (Z-MIN and Z-MAX on RAMPS) + * Serial2 -- TX2 = D16 RX2 = D17 (AUX4-18 and AUX4-17) + * Serial3 -- TX3 = D14 RX3 = D15 (Available on some RAMPS-like boards) */ //#define X_HARDWARE_SERIAL Serial1 //#define X2_HARDWARE_SERIAL Serial1 diff --git a/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h index c2af8f1968..bb74fe421a 100644 --- a/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h +++ b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h @@ -69,6 +69,7 @@ * IIC : 12V GND D21 D20 GND 5V * (SCL SDA) * + * TX2 RX2 RX3 TX3 * END STOPS : D19 D18 D15 D14 D2 D3 * GND GND GND GND GND GND * 5V 5V 5V 5V 5V 5V diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h index aa8795bf3e..5f3dc78150 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h @@ -131,8 +131,11 @@ #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h index 44d4f23435..c345a27b76 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h @@ -46,5 +46,8 @@ #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h index eb2f17f40a..44a98e5af7 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h @@ -93,8 +93,11 @@ #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Heaters / Fans diff --git a/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h b/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h index 5cb2845d9f..015d8c03ee 100644 --- a/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h +++ b/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h @@ -100,7 +100,9 @@ #endif // Reduce baud rate to improve software serial reliability -#define TMC_BAUD_RATE 19200 +#ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 +#endif // // Temperature Sensors diff --git a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h index a02b270337..fd6609f0fc 100644 --- a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h +++ b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h @@ -128,7 +128,9 @@ #define Y_SERIAL_RX_PIN Y_SERIAL_TX_PIN #define Z_SERIAL_TX_PIN PC7 // IO1 #define Z_SERIAL_RX_PIN Z_SERIAL_TX_PIN - #define TMC_BAUD_RATE 19200 + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif #else // Motor current PWM pins #define MOTOR_CURRENT_PWM_XY_PIN PA6 // VREF2/3 CONTROL XY @@ -169,7 +171,6 @@ #if AXIS_DRIVER_TYPE_E0(TMC2208) || AXIS_DRIVER_TYPE_E0(TMC2209) #define E0_SERIAL_TX_PIN PA8 // IO0 #define E0_SERIAL_RX_PIN PA8 // IO0 - #define TMC_BAUD_RATE 19200 #else // Motor current PWM pins #define MOTOR_CURRENT_PWM_E_PIN PB0 // VREF1 CONTROL E diff --git a/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h b/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h index 1c62c461f9..c4fde59c47 100644 --- a/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h +++ b/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h @@ -118,8 +118,11 @@ #endif // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Stepper current PWM diff --git a/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH_V12.h b/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH_V12.h index 120d6d6f0a..96e90b701c 100644 --- a/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH_V12.h +++ b/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH_V12.h @@ -55,5 +55,8 @@ #define E0_SERIAL_RX_PIN PA3 // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h index 3ec2c2cfd9..5cf209e533 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h @@ -156,7 +156,10 @@ #define E0_SERIAL_RX_PIN PD9 // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + #endif // HAS_TMC_UART // diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h index 4d71fcf656..f257ea3bbb 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h @@ -112,8 +112,11 @@ #define E0_SERIAL_RX_PIN PC11 // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Heaters 0,1 / Fans / Bed diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h index 6f641f20dd..d92ea01aa3 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h @@ -163,7 +163,10 @@ #define E1_SERIAL_RX_PIN PD8 // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + #endif // HAS_TMC_UART // diff --git a/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h b/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h index 60211f53f4..2ce878ea59 100644 --- a/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h +++ b/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h @@ -125,8 +125,11 @@ #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/stm32f4/pins_ARMED.h b/Marlin/src/pins/stm32f4/pins_ARMED.h index 357ab1bd3b..9a04c80cdd 100644 --- a/Marlin/src/pins/stm32f4/pins_ARMED.h +++ b/Marlin/src/pins/stm32f4/pins_ARMED.h @@ -223,5 +223,8 @@ #define Z2_SERIAL_RX_PIN EXT4_PIN #define Z2_SERIAL_TX_PIN EXT4_PIN - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART diff --git a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h index f40e6c2d69..ce3d2556bf 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h @@ -152,8 +152,11 @@ #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h b/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h index 0ed0177da8..d737dbdc93 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h @@ -131,8 +131,11 @@ #endif // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h index 6021810f40..0445476490 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h @@ -282,8 +282,11 @@ #endif // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h index bf08aca0fe..29c1e9f984 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h @@ -299,8 +299,11 @@ #define E3_SERIAL_RX_PIN E3_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART /** ------ ------ * (BEEPER) PE8 | 1 2 | PE7 (BTN_ENC) (MISO) PA6 | 1 2 | PA5 (SCK) diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h index ad0f594a24..407d89f60b 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h @@ -222,8 +222,11 @@ #define E2_SERIAL_RX_PIN E2_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h index 183927a5a6..05537ec243 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h @@ -322,8 +322,11 @@ #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // SD Connection diff --git a/Marlin/src/pins/stm32f4/pins_LERDGE_K.h b/Marlin/src/pins/stm32f4/pins_LERDGE_K.h index 04264ea2e7..da11ce05ef 100644 --- a/Marlin/src/pins/stm32f4/pins_LERDGE_K.h +++ b/Marlin/src/pins/stm32f4/pins_LERDGE_K.h @@ -159,8 +159,11 @@ //#define E2_SERIAL_RX_PIN EX_SERIAL_RX_PIN //#define E2_SERIAL_TX_PIN EX_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h index 33dedf7e8e..0940fc5e0c 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h @@ -175,8 +175,11 @@ #define E4_SERIAL_RX_PIN E4_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h index 3b1c773b29..01f2b00b58 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h @@ -108,8 +108,11 @@ #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h index 7d537c9643..952a8e1ec0 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h @@ -160,7 +160,10 @@ #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + #endif // HAS_TMC_UART // diff --git a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h index d26e541d4c..84d5a5f5e0 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h @@ -211,8 +211,11 @@ #define E3_SERIAL_RX_PIN E3_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART /** ------ ------ * (BEEPER) PB2 | 1 2 | PE10 (BTN_ENC) (MISO) PA6 | 1 2 | PA5 (SCK) diff --git a/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h b/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h index eb6edb765e..5802c07241 100644 --- a/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h +++ b/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV3.h @@ -144,9 +144,11 @@ #define K_SERIAL_RX_PIN K_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif -#endif +#endif // HAS_TMC_UART // // Heaters / Fans diff --git a/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h b/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h index b44061a491..1697cf000e 100644 --- a/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h +++ b/Marlin/src/pins/stm32f4/pins_OPULO_LUMEN_REV4.h @@ -141,9 +141,11 @@ #define K_SERIAL_RX_PIN K_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif -#endif +#endif // HAS_TMC_UART // // Heaters / Fans diff --git a/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h b/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h index b74db89f3a..0ab67c1558 100644 --- a/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h +++ b/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h @@ -132,9 +132,6 @@ #define E0_SERIAL_TX_PIN PC10 #define E0_SERIAL_RX_PIN PC11 - // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 - // Default TMC slave addresses #ifndef X_SLAVE_ADDRESS #define X_SLAVE_ADDRESS 0 @@ -148,7 +145,13 @@ #ifndef E0_SLAVE_ADDRESS #define E0_SLAVE_ADDRESS 3 #endif -#endif + + // Reduce baud rate to improve software serial reliability + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temp Sensors diff --git a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h index c79f8ab084..c3110462d1 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h @@ -110,7 +110,9 @@ #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif // Default TMC slave addresses #ifndef E0_SLAVE_ADDRESS diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h index e2e276f89a..25f1b307ca 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h @@ -172,8 +172,11 @@ #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h index 8f3cc618e7..3a18b7864c 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h @@ -138,8 +138,11 @@ #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h index fd926c014f..1d77a6cb07 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h @@ -158,8 +158,11 @@ #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_0.h index 4f8d30b6b7..824e44130f 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_0.h @@ -64,8 +64,11 @@ #define E3_SERIAL_RX_PIN E3_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // NeoPixel LED diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_1.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_1.h index a21bb59e69..d7c15eaa04 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_1.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_V1_1.h @@ -63,8 +63,11 @@ #define E3_SERIAL_RX_PIN E3_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // NeoPixel LED diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h index 792f473d92..8cab6b5357 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h @@ -194,8 +194,11 @@ #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h index 119c6b3929..69723947fd 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h @@ -318,8 +318,11 @@ #define E5_SERIAL_RX_PIN E3_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART /** * ---- diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h index 7f5f5269d1..caa2272f4d 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h @@ -141,8 +141,11 @@ #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // Temperature Sensors diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h index 09b305f700..77f47f8106 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h @@ -310,8 +310,11 @@ #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN // Reduce baud rate to improve software serial reliability - #define TMC_BAUD_RATE 19200 -#endif + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART // // SD Connection From af4ba2b1ced98066b89dde7636b052b075f96621 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 5 May 2023 17:42:56 -0500 Subject: [PATCH 388/659] =?UTF-8?q?=F0=9F=90=9B=20Minor=20Fixed-Time=20Mot?= =?UTF-8?q?ion=20patches?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/MarlinCore.cpp | 5 +++++ Marlin/src/inc/SanityCheck.h | 7 +++++++ Marlin/src/module/ft_motion.cpp | 3 --- Marlin/src/module/stepper.cpp | 2 +- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 5b4d33609d..5000f3673b 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -1624,6 +1624,11 @@ void setup() { SETUP_RUN(bdl.init(I2C_BD_SDA_PIN, I2C_BD_SCL_PIN, I2C_BD_DELAY)); #endif + + #if ENABLED(FT_MOTION) + SETUP_RUN(fxdTiCtrl.init()); + #endif + marlin_state = MF_RUNNING; #ifdef STARTUP_TUNE diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 223baf928d..e495d7a115 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -4030,6 +4030,13 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); #endif #endif +/** + * Fixed-Time Motion limitations + */ +#if ENABLED(FT_MOTION) && (NUM_AXES > 3 || E_STEPPERS > 1 || NUM_Z_STEPPERS > 1 || ANY(DUAL_X_CARRIAGE, HAS_DUAL_X_STEPPERS, HAS_DUAL_Y_STEPPERS, HAS_MULTI_EXTRUDER, MIXING_EXTRUDER)) + #error "FT_MOTION is currently limited to machines with 3 linear axes and a single extruder." +#endif + // Multi-Stepping Limit static_assert(WITHIN(MULTISTEPPING_LIMIT, 1, 128) && IS_POWER_OF_2(MULTISTEPPING_LIMIT), "MULTISTEPPING_LIMIT must be 1, 2, 4, 8, 16, 32, 64, or 128."); diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp index 2fe3802529..bc6ba8d3e3 100644 --- a/Marlin/src/module/ft_motion.cpp +++ b/Marlin/src/module/ft_motion.cpp @@ -211,9 +211,6 @@ void FxdTiCtrl::loop() { if (!cfg_mode) return; - static bool initd = false; - if (!initd) { init(); initd = true; } - // Handle block abort with the following sequence: // 1. Zero out commands in stepper ISR. // 2. Drain the motion buffer, stop processing until they are emptied. diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 140a539ef3..c7c053679a 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -3466,7 +3466,7 @@ void Stepper::report_positions() { #if HAS_Z_AXIS // Update step counts - if (z_step) count_position.z += z_dir ? -1 : 1; + if (z_step) count_position.z += z_dir ? 1 : -1; #endif AWAIT_HIGH_PULSE(); From 53d06be226a175a5a7950356746941a5319b06c5 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 6 May 2023 02:26:54 -0500 Subject: [PATCH 389/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20End?= =?UTF-8?q?stops=20preliminary=20followup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25780 --- Marlin/src/MarlinCore.cpp | 1 - Marlin/src/module/endstops.cpp | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 5000f3673b..08c69aa5b7 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -1624,7 +1624,6 @@ void setup() { SETUP_RUN(bdl.init(I2C_BD_SDA_PIN, I2C_BD_SCL_PIN, I2C_BD_DELAY)); #endif - #if ENABLED(FT_MOTION) SETUP_RUN(fxdTiCtrl.init()); #endif diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index ebe0a64bac..0a01dd2d04 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -869,7 +869,7 @@ void Endstops::update() { #if HAS_X_AXIS if (stepper.axis_is_moving(X_AXIS)) { if (stepper.motor_direction(X_AXIS_HEAD)) { // -direction - #if HAS_X_MIN || (X_SPI_SENSORLESS && X_HOME_TO_MIN) + #if USE_X_MIN || (X_SPI_SENSORLESS && X_HOME_TO_MIN) PROCESS_ENDSTOP_X(MIN); #if CORE_DIAG(XY, Y, MIN) PROCESS_CORE_ENDSTOP(Y,MIN,X,MIN); @@ -883,7 +883,7 @@ void Endstops::update() { #endif } else { // +direction - #if HAS_X_MAX || (X_SPI_SENSORLESS && X_HOME_TO_MAX) + #if USE_X_MAX || (X_SPI_SENSORLESS && X_HOME_TO_MAX) PROCESS_ENDSTOP_X(MAX); #if CORE_DIAG(XY, Y, MIN) PROCESS_CORE_ENDSTOP(Y,MIN,X,MAX); From 97d8a6894903380de76d601be949599b0457f0bb Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 6 May 2023 14:52:58 -0500 Subject: [PATCH 390/659] =?UTF-8?q?=F0=9F=A9=B9=20FT=20Motion=20prelim=20f?= =?UTF-8?q?ollowup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/ft_motion.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/module/ft_motion.h b/Marlin/src/module/ft_motion.h index 6c5b6bf03b..a277f3ac26 100644 --- a/Marlin/src/module/ft_motion.h +++ b/Marlin/src/module/ft_motion.h @@ -53,6 +53,7 @@ class FxdTiCtrl { // Public methods + static void init(); static void startBlockProc(block_t * const current_block); // Set controller states to begin processing a block. static bool getBlockProcDn() { return blockProcDn; } // Return true if the controller no longer needs the current block. static void runoutBlock(); // Move any free data points to the stepper buffer even if a full batch isn't ready. @@ -160,7 +161,6 @@ class FxdTiCtrl { // Private methods static uint32_t stepperCmdBuffItems(); - static void init(); static void loadBlockData(block_t * const current_block); static void makeVector(); static void convertToSteps(const uint32_t idx); From 4528fde7f9255eb90fc9b9a44e35a04efb764742 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 6 May 2023 14:56:22 -0500 Subject: [PATCH 391/659] =?UTF-8?q?=F0=9F=94=A7=20Apply=20bootscreen=20set?= =?UTF-8?q?tings=20to=20ProUI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/e3v2/proui/dwin.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index a372ae5b4d..f3a23ae1e4 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -1225,14 +1225,19 @@ void HMI_WaitForUser() { } void HMI_Init() { - DWINUI::Draw_Box(1, Color_Black, { 5, 220, DWIN_WIDTH - 5, DWINUI::fontHeight() }); - DWINUI::Draw_CenteredString(Color_White, 220, F("Professional Firmware ")); - for (uint16_t t = 15; t <= 257; t += 10) { - DWINUI::Draw_Icon(ICON_Bar, 15, 260); - DWIN_Draw_Rectangle(1, HMI_data.Background_Color, t, 260, 257, 280); - DWIN_UpdateLCD(); - delay(50); - } + #if ENABLED(SHOW_BOOTSCREEN) + #ifndef BOOTSCREEN_TIMEOUT + #define BOOTSCREEN_TIMEOUT 1100 + #endif + DWINUI::Draw_Box(1, Color_Black, { 5, 220, DWIN_WIDTH - 5, DWINUI::fontHeight() }); + DWINUI::Draw_CenteredString(Color_White, 220, F("Professional Firmware ")); + for (uint16_t t = 15; t < 257; t += 11) { + DWINUI::Draw_Icon(ICON_Bar, 15, 260); + DWIN_Draw_Rectangle(1, HMI_data.Background_Color, t, 260, 257, 280); + DWIN_UpdateLCD(); + delay((BOOTSCREEN_TIMEOUT) / 22); + } + #endif HMI_SetLanguage(); } From d93aa0c38449bcbc38aeca7eac506297270546c8 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 6 May 2023 16:42:21 -0500 Subject: [PATCH 392/659] =?UTF-8?q?=F0=9F=90=9B=20Apply=20direction=20bits?= =?UTF-8?q?=20at=20startup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index c7c053679a..ec85db35d6 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -3156,6 +3156,9 @@ void Stepper::init() { sei(); #endif + // Init direction states + apply_directions(); + #if HAS_MOTOR_CURRENT_SPI || HAS_MOTOR_CURRENT_PWM initialized = true; digipot_init(); From 12d8108fc6b77bd6c277c49deb4ac99879d551ef Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 6 May 2023 17:37:47 -0500 Subject: [PATCH 393/659] =?UTF-8?q?=F0=9F=9A=B8=20Faster=20default=20Marli?= =?UTF-8?q?n=20feedrate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/motion.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 9c59195a8c..de512e11fe 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -136,7 +136,10 @@ xyze_pos_t destination; // {0} // no other feedrate is specified. Overridden for special moves. // Set by the last G0 through G5 command's "F" parameter. // Functions that override this for custom moves *must always* restore it! -feedRate_t feedrate_mm_s = MMM_TO_MMS(1500); +#ifndef DEFAULT_FEEDRATE_MM_M + #define DEFAULT_FEEDRATE_MM_M 4000 +#endif +feedRate_t feedrate_mm_s = MMM_TO_MMS(DEFAULT_FEEDRATE_MM_M); int16_t feedrate_percentage = 100; // Cartesian conversion result goes here: From 99a9e265b0b7356b4d3bc5fdef88e2afe1ab0623 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 6 May 2023 19:07:07 -0500 Subject: [PATCH 394/659] =?UTF-8?q?=F0=9F=A9=B9=20Endstops=20prelim.=20fol?= =?UTF-8?q?lowup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/endstops.cpp | 4 ++-- Marlin/src/module/endstops.h | 3 +++ Marlin/src/module/stepper.cpp | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 0a01dd2d04..bf493023d8 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -311,7 +311,7 @@ void Endstops::event_handler() { SERIAL_ECHOPGM(" " STRINGIFY(A) ":", planner.triggered_position_mm(_AXIS(A))); _SET_STOP_CHAR(A,C); }while(0) #define _ENDSTOP_HIT_TEST(A,C) \ - if (TERN0(HAS_##A##_MIN, TEST(hit_state, A##_MIN)) || TERN0(HAS_##A##_MAX, TEST(hit_state, A##_MAX))) \ + if (TERN0(USE_##A##_MIN, TEST(hit_state, ES_ENUM(A,MIN))) || TERN0(USE_##A##_MAX, TEST(hit_state, ES_ENUM(A,MAX)))) \ _ENDSTOP_HIT_ECHO(A,C) #define ENDSTOP_HIT_TEST_X() _ENDSTOP_HIT_TEST(X,'X') @@ -792,7 +792,7 @@ void Endstops::update() { }while(0) // Core Sensorless Homing needs to test an Extra Pin - #define CORE_DIAG(QQ,A,MM) (CORE_IS_##QQ && A##_SENSORLESS && !A##_SPI_SENSORLESS && HAS_##A##_##MM) + #define CORE_DIAG(QQ,A,MM) (CORE_IS_##QQ && A##_SENSORLESS && !A##_SPI_SENSORLESS && USE_##A##_##MM) #define PROCESS_CORE_ENDSTOP(A1,M1,A2,M2) do { \ if (TEST_ENDSTOP(_ENDSTOP(A1,M1))) { \ _ENDSTOP_HIT(A2,M2); \ diff --git a/Marlin/src/module/endstops.h b/Marlin/src/module/endstops.h index 7b662c27ac..d348e58ab7 100644 --- a/Marlin/src/module/endstops.h +++ b/Marlin/src/module/endstops.h @@ -28,6 +28,9 @@ #include "../inc/MarlinConfig.h" #include +#define _ES_ENUM(A,M) A##_##M +#define ES_ENUM(A,M) _ES_ENUM(A,M) + #define _ES_ITEM(N) N, #define ES_ITEM(K,N) TERN_(K,DEFER4(_ES_ITEM)(N)) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index ec85db35d6..a311592540 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -287,7 +287,7 @@ xyze_int8_t Stepper::count_direction{0}; #define MINDIR(A) (count_direction[_AXIS(A)] < 0) #define MAXDIR(A) (count_direction[_AXIS(A)] > 0) -#define STEPTEST(A,M,I) TERN0(HAS_ ##A## ##I## _ ##M, !(TEST(endstops.state(), A## ##I## _ ##M) && M## DIR(A)) && !locked_ ##A## ##I## _motor) +#define STEPTEST(A,M,I) TERN0(USE_##A##I##_##M, !(TEST(endstops.state(), A##I##_##M) && M## DIR(A)) && !locked_ ##A##I##_motor) #define DUAL_ENDSTOP_APPLY_STEP(A,V) \ if (separate_multi_axis) { \ From d36f43d80bac5ca8086bc3ca70eb0c5330f317f2 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 7 May 2023 00:38:13 +0000 Subject: [PATCH 395/659] [cron] Bump distribution date (2023-05-07) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index acd89bc7e8..fce6f273d3 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-06" +//#define STRING_DISTRIBUTION_DATE "2023-05-07" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index c52c326374..e19c882dd6 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-06" + #define STRING_DISTRIBUTION_DATE "2023-05-07" #endif /** From d3ee4eecdf11810ab3da2ff448bfd298e03a740e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 7 May 2023 19:31:20 -0500 Subject: [PATCH 396/659] =?UTF-8?q?=F0=9F=A9=B9=20Use=20AxisBits=20methods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/types.h | 3 +++ Marlin/src/module/stepper.cpp | 40 +++++++++++++++++------------------ 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index e86880674b..6ef23f066c 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -846,6 +846,9 @@ public: // Constructor, setter, and operator= for bit mask AxisBits(const el p) { set(p); } + + void reset() { bits = 0; } + void set(const el p) { bits = el(p); } FI AxisBits& operator=(const el p) { set(p); return *this; } diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index a311592540..750bf11c46 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -2583,7 +2583,7 @@ hal_timer_t Stepper::block_phase_isr() { #if IS_CORE // Define conditions for checking endstops #define S_(N) current_block->steps[CORE_AXIS_##N] - #define D_(N) TEST(current_block->direction_bits, CORE_AXIS_##N) + #define D_(N) current_block->direction_bits[CORE_AXIS_##N] #endif #if CORE_IS_XY || CORE_IS_XZ @@ -2646,20 +2646,20 @@ hal_timer_t Stepper::block_phase_isr() { AxisBits axis_bits; NUM_AXIS_CODE( - if (X_MOVE_TEST) SBI(axis_bits, A_AXIS), - if (Y_MOVE_TEST) SBI(axis_bits, B_AXIS), - if (Z_MOVE_TEST) SBI(axis_bits, C_AXIS), - if (current_block->steps.i) SBI(axis_bits, I_AXIS), - if (current_block->steps.j) SBI(axis_bits, J_AXIS), - if (current_block->steps.k) SBI(axis_bits, K_AXIS), - if (current_block->steps.u) SBI(axis_bits, U_AXIS), - if (current_block->steps.v) SBI(axis_bits, V_AXIS), - if (current_block->steps.w) SBI(axis_bits, W_AXIS) + if (X_MOVE_TEST) axis_bits.a = true, + if (Y_MOVE_TEST) axis_bits.b = true, + if (Z_MOVE_TEST) axis_bits.c = true, + if (current_block->steps.i) axis_bits.i = true, + if (current_block->steps.j) axis_bits.j = true, + if (current_block->steps.k) axis_bits.k = true, + if (current_block->steps.u) axis_bits.u = true, + if (current_block->steps.v) axis_bits.v = true, + if (current_block->steps.w) axis_bits.w = true ); - //if (current_block->steps.e) SBI(axis_bits, E_AXIS); - //if (current_block->steps.a) SBI(axis_bits, X_HEAD); - //if (current_block->steps.b) SBI(axis_bits, Y_HEAD); - //if (current_block->steps.c) SBI(axis_bits, Z_HEAD); + //if (current_block->steps.e) axis_bits.e = true; + //if (current_block->steps.a) axis_bits.x = true; + //if (current_block->steps.b) axis_bits.y = true; + //if (current_block->steps.c) axis_bits.z = true; axis_did_move = axis_bits; // No acceleration / deceleration time elapsed so far @@ -3487,7 +3487,7 @@ void Stepper::report_positions() { // If the current block is not done processing, return right away if (!fxdTiCtrl.getBlockProcDn()) return; - axis_did_move = 0; + axis_did_move.reset(); current_block = nullptr; discard_current_block(); } @@ -3533,25 +3533,25 @@ void Stepper::report_positions() { // or the set conditions should be changed from the block to // the motion trajectory or motor commands. - uint8_t axis_bits = 0U; + AxisBits axis_bits; static uint32_t a_debounce = 0U; if (!!current_block->steps.a) a_debounce = (AXIS_DID_MOVE_DEB) * 400; // divide by 0.0025f - if (a_debounce) { SBI(axis_bits, A_AXIS); a_debounce--; } + if (a_debounce) { axis_bits.a = true; a_debounce--; } #if HAS_Y_AXIS static uint32_t b_debounce = 0U; if (!!current_block->steps.b) b_debounce = (AXIS_DID_MOVE_DEB) * 400; - if (b_debounce) { SBI(axis_bits, B_AXIS); b_debounce--; } + if (b_debounce) { axis_bits.b = true; b_debounce--; } #endif #if HAS_Z_AXIS static uint32_t c_debounce = 0U; if (!!current_block->steps.c) c_debounce = (AXIS_DID_MOVE_DEB) * 400; - if (c_debounce) { SBI(axis_bits, C_AXIS); c_debounce--; } + if (c_debounce) { axis_bits.c = true; c_debounce--; } #endif #if HAS_EXTRUDERS static uint32_t e_debounce = 0U; if (!!current_block->steps.e) e_debounce = (AXIS_DID_MOVE_DEB) * 400; - if (e_debounce) { SBI(axis_bits, E_AXIS); e_debounce--; } + if (e_debounce) { axis_bits.e = true; e_debounce--; } #endif axis_did_move = axis_bits; From f2071770984e393ed524d924ff501fc2cd42849d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 7 May 2023 21:25:53 -0500 Subject: [PATCH 397/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Babystepping=20for?= =?UTF-8?q?=20CoreXZ?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #19988 --- Marlin/src/module/stepper.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 750bf11c46..7517bcd0a6 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -3670,7 +3670,7 @@ void Stepper::report_positions() { case Y_AXIS: #if CORE_IS_XY - BABYSTEP_CORE(X, Y, !direction, 1, (CORESIGN(1)>0)); + BABYSTEP_CORE(X, Y, direction, 0, (CORESIGN(1)>0)); #elif CORE_IS_YZ BABYSTEP_CORE(Y, Z, direction, 0, (CORESIGN(1)<0)); #else @@ -3683,7 +3683,7 @@ void Stepper::report_positions() { case Z_AXIS: { #if CORE_IS_XZ - BABYSTEP_CORE(X, Z, direction, BABYSTEP_INVERT_Z, (CORESIGN(1)<0)); + BABYSTEP_CORE(X, Z, direction, BABYSTEP_INVERT_Z, (CORESIGN(1)>0)); #elif CORE_IS_YZ BABYSTEP_CORE(Y, Z, direction, BABYSTEP_INVERT_Z, (CORESIGN(1)<0)); #elif DISABLED(DELTA) From 1f5b886d121f762603ccaec848014859690a98b8 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 7 May 2023 22:06:46 -0500 Subject: [PATCH 398/659] =?UTF-8?q?=F0=9F=A9=B9=20Creality=20F401=20Follow?= =?UTF-8?q?up?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25773 --- Marlin/src/pins/stm32f4/pins_CREALITY_F401.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/pins/stm32f4/pins_CREALITY_F401.h b/Marlin/src/pins/stm32f4/pins_CREALITY_F401.h index 7f9eba9901..f4b5b7d96a 100644 --- a/Marlin/src/pins/stm32f4/pins_CREALITY_F401.h +++ b/Marlin/src/pins/stm32f4/pins_CREALITY_F401.h @@ -132,7 +132,7 @@ #if ENABLED(RET6_12864_LCD) #define LCD_PINS_RS PB12 - #define LCD_PINS_ENABLE PB15 + #define LCD_PINS_EN PB15 #define LCD_PINS_D4 PB13 #define BTN_EN2 PB14 #endif From 2ee7ed084bd4d68681614b08e60bcd1fe6838003 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 8 May 2023 06:06:01 +0000 Subject: [PATCH 399/659] [cron] Bump distribution date (2023-05-08) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index fce6f273d3..5ec65a5d7f 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-07" +//#define STRING_DISTRIBUTION_DATE "2023-05-08" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index e19c882dd6..5a8a55507c 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-07" + #define STRING_DISTRIBUTION_DATE "2023-05-08" #endif /** From f80e706fad85d6c371bdc7cafafeeed787a790d0 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Mon, 8 May 2023 23:54:46 +1200 Subject: [PATCH 400/659] =?UTF-8?q?=F0=9F=94=A8=20MKS=20Robin2=20PIO=20Env?= =?UTF-8?q?=20(#25792)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/boards.h | 2 +- Marlin/src/pins/pins.h | 2 +- Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h | 36 ++ .../PlatformIO/boards/marlin_MKS_ROBIN2.json | 65 +++ .../MARLIN_MKS_ROBIN2/PeripheralPins.c | 437 ++++++++++++++++ .../variants/MARLIN_MKS_ROBIN2/PinNamesVar.h | 50 ++ .../MARLIN_MKS_ROBIN2/hal_conf_custom.h | 481 ++++++++++++++++++ .../variants/MARLIN_MKS_ROBIN2/ldscript.ld | 206 ++++++++ .../variants/MARLIN_MKS_ROBIN2/variant.cpp | 228 +++++++++ .../variants/MARLIN_MKS_ROBIN2/variant.h | 242 +++++++++ ini/stm32f4.ini | 15 +- 11 files changed, 1761 insertions(+), 3 deletions(-) create mode 100644 buildroot/share/PlatformIO/boards/marlin_MKS_ROBIN2.json create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/PeripheralPins.c create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/PinNamesVar.h create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/hal_conf_custom.h create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/ldscript.ld create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/variant.cpp create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/variant.h diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index 5a05d2c714..ccf877cd24 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -429,7 +429,7 @@ #define BOARD_FYSETC_S6_V2_0 5223 // FYSETC S6 v2.0 (STM32F446VE) #define BOARD_FYSETC_SPIDER 5224 // FYSETC Spider (STM32F446VE) #define BOARD_FLYF407ZG 5225 // FLYmaker FLYF407ZG (STM32F407ZG) -#define BOARD_MKS_ROBIN2 5226 // MKS_ROBIN2 (STM32F407ZE) +#define BOARD_MKS_ROBIN2 5226 // MKS Robin2 V1.0 (STM32F407ZE) #define BOARD_MKS_ROBIN_PRO_V2 5227 // MKS Robin Pro V2 (STM32F407VE) #define BOARD_MKS_ROBIN_NANO_V3 5228 // MKS Robin Nano V3 (STM32F407VG) #define BOARD_MKS_ROBIN_NANO_V3_1 5229 // MKS Robin Nano V3.1 (STM32F407VE) diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index fe7bc9ed17..a177785963 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -751,7 +751,7 @@ #elif MB(FLYF407ZG) #include "stm32f4/pins_FLYF407ZG.h" // STM32F4 env:FLYF407ZG #elif MB(MKS_ROBIN2) - #include "stm32f4/pins_MKS_ROBIN2.h" // STM32F4 env:MKS_ROBIN2 + #include "stm32f4/pins_MKS_ROBIN2.h" // STM32F4 env:mks_robin2 #elif MB(MKS_ROBIN_PRO_V2) #include "stm32f4/pins_MKS_ROBIN_PRO_V2.h" // STM32F4 env:mks_robin_pro2 #elif MB(MKS_ROBIN_NANO_V3) diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h index 15314c9ca6..96f3d95861 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h @@ -99,3 +99,39 @@ #define SD_DETECT_PIN PF9 #define BEEPER_PIN PG2 + +// +// TFT with FSMC interface +// +#if HAS_FSMC_TFT + /** + * Note: MKS Robin TFT screens use various TFT controllers. + * If the screen stays white, disable 'LCD_RESET_PIN' + * to let the bootloader init the screen. + */ + #define LCD_RESET_PIN PD13 + #define LCD_BACKLIGHT_PIN PD12 + + #define TFT_RESET_PIN LCD_RESET_PIN + #define TFT_BACKLIGHT_PIN LCD_BACKLIGHT_PIN + + #define FSMC_CS_PIN PG12 // NE4 + #define FSMC_RS_PIN PF12 // A0 + #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT + #define TFT_CS_PIN FSMC_CS_PIN + #define TFT_RS_PIN FSMC_RS_PIN + + #define TFT_BUFFER_SIZE 14400 + + #define BEEPER_PIN PG2 + + #if NEED_TOUCH_PINS + #define TOUCH_BUTTONS_HW_SPI + #define TOUCH_BUTTONS_HW_SPI_DEVICE 1 + #define TOUCH_CS_PIN PD11 // SPI1_NSS + #define TOUCH_SCK_PIN PB3 // SPI1_SCK + #define TOUCH_MISO_PIN PB4 // SPI1_MISO + #define TOUCH_MOSI_PIN PB5 // SPI1_MOSI + #endif + +#endif diff --git a/buildroot/share/PlatformIO/boards/marlin_MKS_ROBIN2.json b/buildroot/share/PlatformIO/boards/marlin_MKS_ROBIN2.json new file mode 100644 index 0000000000..325001df1b --- /dev/null +++ b/buildroot/share/PlatformIO/boards/marlin_MKS_ROBIN2.json @@ -0,0 +1,65 @@ +{ + "build": { + "cpu": "cortex-m4", + "extra_flags": "-DSTM32F407xx", + "f_cpu": "168000000L", + "hwids": [ + [ + "0x1EAF", + "0x0003" + ], + [ + "0x0483", + "0x3748" + ] + ], + "ldscript": "ldscript.ld", + "mcu": "stm32f407zet6", + "variant": "MARLIN_MKS_ROBIN2" + }, + "debug": { + "jlink_device": "STM32F407ZE", + "openocd_target": "stm32f4x", + "svd_path": "STM32F40x.svd", + "tools": { + "stlink": { + "server": { + "arguments": [ + "-f", + "scripts/interface/stlink.cfg", + "-c", + "transport select hla_swd", + "-f", + "scripts/target/stm32f4x.cfg", + "-c", + "reset_config none" + ], + "executable": "bin/openocd", + "package": "tool-openocd" + } + } + } + }, + "frameworks": [ + "arduino", + "stm32cube" + ], + "name": "STM32F407ZE (192k RAM. 512k Flash)", + "upload": { + "disable_flushing": false, + "maximum_ram_size": 131072, + "maximum_size": 514288, + "protocol": "stlink", + "protocols": [ + "stlink", + "dfu", + "jlink", + "cmsis-dap" + ], + "require_upload_port": true, + "use_1200bps_touch": false, + "wait_for_upload_port": false + }, + "url": "http://www.st.com/en/microcontrollers/stm32f407ze.html", + "vendor": "Generic" +} diff --git a/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/PeripheralPins.c new file mode 100644 index 0000000000..63763e9db7 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/PeripheralPins.c @@ -0,0 +1,437 @@ +/* + ******************************************************************************* + * Copyright (c) 2019, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + * Automatically generated from STM32F407Z(E-G)Tx.xml + */ +#include "Arduino.h" +#include "PeripheralPins.h" + +/* ===== + * Note: Commented lines are alternative possibilities which are not used by default. + * If you change them, you should know what you're doing first. + * ===== + */ + +//*** ADC *** + +#ifdef HAL_ADC_MODULE_ENABLED +const PinMap PinMap_ADC[] = { + {PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC1_IN0 + //{PA_0, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC2_IN0 + //{PA_0, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC3_IN0 + {PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1 + //{PA_1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC2_IN1 + //{PA_1, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_IN1 + {PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2 + //{PA_2, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC2_IN2 + //{PA_2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC3_IN2 + {PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3 + //{PA_3, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC2_IN3 + //{PA_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC3_IN3 + {PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4 + //{PA_4, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC2_IN4 + {PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5 + //{PA_5, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC2_IN5 + {PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6 + //{PA_6, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC2_IN6 + {PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7 + //{PA_7, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC2_IN7 + {PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8 + //{PB_0, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC2_IN8 + {PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9 + //{PB_1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC2_IN9 + {PC_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10 + //{PC_0, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC2_IN10 + //{PC_0, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC3_IN10 + {PC_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11 + //{PC_1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_IN11 + //{PC_1, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC3_IN11 + {PC_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_IN12 + //{PC_2, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC2_IN12 + //{PC_2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC3_IN12 + {PC_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13 + //{PC_3, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC2_IN13 + //{PC_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC3_IN13 + {PC_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14 + //{PC_4, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC2_IN14 + {PC_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15 + //{PC_5, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC2_IN15 + + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio, 24 ADC + {PF_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC3_IN9 + {PF_4, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC3_IN14 + {PF_5, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC3_IN15 + {PF_6, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC3_IN4 + {PF_7, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC3_IN5 + {PF_8, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC3_IN6 + {PF_9, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC3_IN7 + {PF_10, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC3_IN8 + #endif + {NC, NP, 0} +}; +#endif + +//*** DAC *** + +#ifdef HAL_DAC_MODULE_ENABLED +const PinMap PinMap_DAC[] = { + {PA_4, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC_OUT1 + {PA_5, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC_OUT2 + {NC, NP, 0} +}; +#endif + +//*** I2C *** + +#ifdef HAL_I2C_MODULE_ENABLED +const PinMap PinMap_I2C_SDA[] = { + {PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PC_9, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + {PF_0, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + #endif + {NC, NP, 0} +}; +#endif + +#ifdef HAL_I2C_MODULE_ENABLED +const PinMap PinMap_I2C_SCL[] = { + {PA_8, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + {PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + {PF_1, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + #endif + {NC, NP, 0} +}; +#endif + +//*** PWM *** + +#ifdef HAL_TIM_MODULE_ENABLED +const PinMap PinMap_PWM[] = { + {PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + //{PA_0, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1 + {PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 + //{PA_1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2 + {PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 + //{PA_2, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3 + //{PA_2, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 1, 0)}, // TIM9_CH1 + {PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 + //{PA_3, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 4, 0)}, // TIM5_CH4 + //{PA_3, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 2, 0)}, // TIM9_CH2 + {PA_5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + //{PA_5, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N + {PA_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + //{PA_6, TIM13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1 + //{PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PA_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + //{PA_7, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N + //{PA_7, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1 + {PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 + {PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + {PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + {PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + //{PA_15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + //{PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PB_0, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 + //{PB_0, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N + //{PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PB_1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 + //{PB_1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N + //{PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 + {PB_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PB_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + //{PB_6, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 + //{PB_7, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 + //{PB_8, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 + {PB_8, TIM10, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10, 1, 0)}, // TIM10_CH1 + //{PB_9, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 + {PB_9, TIM11, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11, 1, 0)}, // TIM11_CH1 + {PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 + {PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 + {PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PB_14, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N + {PB_14, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM12, 1, 0)}, // TIM12_CH1 + {PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PB_15, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N + {PB_15, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM12, 2, 0)}, // TIM12_CH2 + {PC_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PC_6, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1 + {PC_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PC_7, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2 + {PC_8, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 + {PC_8, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 0)}, // TIM8_CH3 + //{PC_9, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 + //{PC_9, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 4, 0)}, // TIM8_CH4 + {PD_12, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 + {PD_13, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 + {PD_14, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 + {PD_15, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 + {PE_5, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 1, 0)}, // TIM9_CH1 + {PE_6, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 2, 0)}, // TIM9_CH2 + {PE_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PE_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 + {PE_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PE_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + {PE_12, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PE_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + {PE_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + {PF_6, TIM10, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10, 1, 0)}, // TIM10_CH1 + {PF_7, TIM11, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11, 1, 0)}, // TIM11_CH1 + {PF_8, TIM13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1 + {PF_9, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1 + #endif + {NC, NP, 0} +}; +#endif + +//*** SERIAL *** + +#ifdef HAL_UART_MODULE_ENABLED +const PinMap PinMap_UART_TX[] = { + {PA_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PA_2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_6, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PC_6, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {PC_10, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PC_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PC_12, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_5, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_8, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + {PG_14, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + #endif + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +const PinMap PinMap_UART_RX[] = { + {PA_1, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PA_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_10, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_7, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PC_7, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {PC_11, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PC_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_2, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_6, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_9, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + {PG_9, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + #endif + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +const PinMap PinMap_UART_RTS[] = { + {PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_12, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_14, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_4, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_12, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + {PG_8, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {PG_12, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + #endif + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +const PinMap PinMap_UART_CTS[] = { + {PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_11, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_13, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + {PG_13, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + {PG_15, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + #endif + {NC, NP, 0} +}; +#endif + +//*** SPI *** + +#ifdef HAL_SPI_MODULE_ENABLED +const PinMap PinMap_SPI_MOSI[] = { + {PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_5, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_3, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_12, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +const PinMap PinMap_SPI_MISO[] = { + {PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_4, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_2, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_11, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +const PinMap PinMap_SPI_SCLK[] = { + {PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_3, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_10, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +const PinMap PinMap_SPI_SSEL[] = { + {PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_4, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_15, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {NC, NP, 0} +}; +#endif + +//*** CAN *** + +#ifdef HAL_CAN_MODULE_ENABLED +const PinMap PinMap_CAN_RD[] = { + {PA_11, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + {PB_5, CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)}, + {PB_8, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + {PB_12, CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)}, + {PD_0, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_CAN_MODULE_ENABLED +const PinMap PinMap_CAN_TD[] = { + {PA_12, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + {PB_6, CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)}, + {PB_9, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + {PB_13, CAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN2)}, + {PD_1, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, + {NC, NP, 0} +}; +#endif + +//*** ETHERNET *** + +#ifdef HAL_ETH_MODULE_ENABLED +const PinMap PinMap_Ethernet[] = { + {PA_0, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_CRS + {PA_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_REF_CLK|ETH_RX_CLK + {PA_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_MDIO + {PA_3, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_COL + {PA_7, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_CRS_DV|ETH_RX_DV + {PB_0, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD2 + {PB_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD3 + {PB_5, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_PPS_OUT + {PB_8, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD3 + {PB_10, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RX_ER + {PB_11, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_EN + {PB_12, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD0 + {PB_13, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD1 + {PC_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_MDC + {PC_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD2 + {PC_3, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_CLK + {PC_4, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD0 + {PC_5, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD1 + {PE_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD3 + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + {PG_8, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_PPS_OUT + {PG_11, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_EN + {PG_13, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD0 + {PG_14, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD1 + #endif + {NC, NP, 0} +}; +#endif + +//*** No QUADSPI *** + +//*** USB *** + +#ifdef HAL_PCD_MODULE_ENABLED +const PinMap PinMap_USB_OTG_FS[] = { + //{PA_8, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_SOF + //{PA_9, USB_OTG_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_FS_VBUS + //{PA_10, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_ID + {PA_11, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_DM + {PA_12, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_DP + {NC, NP, 0} +}; +#endif + +#ifdef HAL_PCD_MODULE_ENABLED +const PinMap PinMap_USB_OTG_HS[] = { + #ifdef USE_USB_HS_IN_FS + {PA_4, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_SOF + {PB_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_ID + {PB_13, USB_OTG_HS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_HS_VBUS + {PB_14, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_DM + {PB_15, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_DP + #else + {PA_3, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D0 + {PA_5, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_CK + {PB_0, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D1 + {PB_1, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D2 + {PB_5, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D7 + {PB_10, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D3 + {PB_11, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D4 + {PB_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D5 + {PB_13, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D6 + {PC_0, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_STP + {PC_2, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_DIR + {PC_3, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_NXT + #endif /* USE_USB_HS_IN_FS */ + {NC, NP, 0} +}; +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/PinNamesVar.h b/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/PinNamesVar.h new file mode 100644 index 0000000000..2424885937 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/PinNamesVar.h @@ -0,0 +1,50 @@ +/* SYS_WKUP */ +#ifdef PWR_WAKEUP_PIN1 + SYS_WKUP1 = PA_0, +#endif +#ifdef PWR_WAKEUP_PIN2 + SYS_WKUP2 = NC, +#endif +#ifdef PWR_WAKEUP_PIN3 + SYS_WKUP3 = NC, +#endif +#ifdef PWR_WAKEUP_PIN4 + SYS_WKUP4 = NC, +#endif +#ifdef PWR_WAKEUP_PIN5 + SYS_WKUP5 = NC, +#endif +#ifdef PWR_WAKEUP_PIN6 + SYS_WKUP6 = NC, +#endif +#ifdef PWR_WAKEUP_PIN7 + SYS_WKUP7 = NC, +#endif +#ifdef PWR_WAKEUP_PIN8 + SYS_WKUP8 = NC, +#endif +/* USB */ +#ifdef USBCON + USB_OTG_FS_SOF = PA_8, + USB_OTG_FS_VBUS = PA_9, + USB_OTG_FS_ID = PA_10, + USB_OTG_FS_DM = PA_11, + USB_OTG_FS_DP = PA_12, + USB_OTG_HS_ULPI_D0 = PA_3, + USB_OTG_HS_SOF = PA_4, + USB_OTG_HS_ULPI_CK = PA_5, + USB_OTG_HS_ULPI_D1 = PB_0, + USB_OTG_HS_ULPI_D2 = PB_1, + USB_OTG_HS_ULPI_D7 = PB_5, + USB_OTG_HS_ULPI_D3 = PB_10, + USB_OTG_HS_ULPI_D4 = PB_11, + USB_OTG_HS_ID = PB_12, + USB_OTG_HS_ULPI_D5 = PB_12, + USB_OTG_HS_ULPI_D6 = PB_13, + USB_OTG_HS_VBUS = PB_13, + USB_OTG_HS_DM = PB_14, + USB_OTG_HS_DP = PB_15, + USB_OTG_HS_ULPI_STP = PC_0, + USB_OTG_HS_ULPI_DIR = PC_2, + USB_OTG_HS_ULPI_NXT = PC_3, +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/hal_conf_custom.h b/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/hal_conf_custom.h new file mode 100644 index 0000000000..3640bd1616 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/hal_conf_custom.h @@ -0,0 +1,481 @@ +/** + ****************************************************************************** + * @file stm32f4xx_hal_conf.h + * @brief HAL configuration file. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F4xx_HAL_CONF_CUSTOM +#define __STM32F4xx_HAL_CONF_CUSTOM + +#ifdef __cplusplus +extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/* ########################## Module Selection ############################## */ +/** + * @brief This is the list of modules to be used in the HAL driver + */ +#define HAL_MODULE_ENABLED +#define HAL_ADC_MODULE_ENABLED +/* #define HAL_CAN_MODULE_ENABLED */ +/* #define HAL_CAN_LEGACY_MODULE_ENABLED */ +#define HAL_CRC_MODULE_ENABLED +/* #define HAL_CEC_MODULE_ENABLED */ +/* #define HAL_CRYP_MODULE_ENABLED */ +#define HAL_DAC_MODULE_ENABLED +/* #define HAL_DCMI_MODULE_ENABLED */ +#define HAL_DMA_MODULE_ENABLED +/* #define HAL_DMA2D_MODULE_ENABLED */ +/* #define HAL_ETH_MODULE_ENABLED */ +#define HAL_FLASH_MODULE_ENABLED +/* #define HAL_NAND_MODULE_ENABLED */ +/* #define HAL_NOR_MODULE_ENABLED */ +/* #define HAL_PCCARD_MODULE_ENABLED */ +#define HAL_SRAM_MODULE_ENABLED +/* #define HAL_SDRAM_MODULE_ENABLED */ +/* #define HAL_HASH_MODULE_ENABLED */ +#define HAL_GPIO_MODULE_ENABLED +/* #define HAL_EXTI_MODULE_ENABLED */ +#define HAL_I2C_MODULE_ENABLED +/* #define HAL_SMBUS_MODULE_ENABLED */ +/* #define HAL_I2S_MODULE_ENABLED */ +/* #define HAL_IWDG_MODULE_ENABLED */ +/* #define HAL_LTDC_MODULE_ENABLED */ +/* #define HAL_DSI_MODULE_ENABLED */ +#define HAL_PWR_MODULE_ENABLED +/* #define HAL_QSPI_MODULE_ENABLED */ +#define HAL_RCC_MODULE_ENABLED +/* #define HAL_RNG_MODULE_ENABLED */ +#define HAL_RTC_MODULE_ENABLED +/* #define HAL_SAI_MODULE_ENABLED */ +#define HAL_SD_MODULE_ENABLED +#define HAL_SPI_MODULE_ENABLED +#define HAL_TIM_MODULE_ENABLED +/* #define HAL_UART_MODULE_ENABLED */ +/* #define HAL_USART_MODULE_ENABLED */ +/* #define HAL_IRDA_MODULE_ENABLED */ +/* #define HAL_SMARTCARD_MODULE_ENABLED */ +/* #define HAL_WWDG_MODULE_ENABLED */ +#define HAL_CORTEX_MODULE_ENABLED +//#define HAL_PCD_MODULE_ENABLED +/* #define HAL_HCD_MODULE_ENABLED */ +/* #define HAL_FMPI2C_MODULE_ENABLED */ +/* #define HAL_SPDIFRX_MODULE_ENABLED */ +/* #define HAL_DFSDM_MODULE_ENABLED */ +/* #define HAL_LPTIM_MODULE_ENABLED */ +/* #define HAL_MMC_MODULE_ENABLED */ + +/* ########################## HSE/HSI Values adaptation ##################### */ +/** + * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSE is used as system clock source, directly or through the PLL). + */ +#if !defined (HSE_VALUE) +#define HSE_VALUE ((uint32_t)8000000U) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) +#define HSE_STARTUP_TIMEOUT ((uint32_t)100U) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal High Speed oscillator (HSI) value. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSI is used as system clock source, directly or through the PLL). + */ +#if !defined (HSI_VALUE) +#define HSI_VALUE ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#if !defined (LSI_VALUE) +#define LSI_VALUE ((uint32_t)32000U) /*!< LSI Typical Value in Hz*/ +#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz +The real value may vary depending on the variations +in voltage and temperature.*/ +/** + * @brief External Low Speed oscillator (LSE) value. + */ +#if !defined (LSE_VALUE) +#define LSE_VALUE ((uint32_t)32768U) /*!< Value of the External Low Speed oscillator in Hz */ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) +#define LSE_STARTUP_TIMEOUT ((uint32_t)5000U) /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ + +/** + * @brief External clock source for I2S peripheral + * This value is used by the I2S HAL module to compute the I2S clock source + * frequency, this source is inserted directly through I2S_CKIN pad. + */ +#if !defined (EXTERNAL_CLOCK_VALUE) +#define EXTERNAL_CLOCK_VALUE ((uint32_t)12288000U) /*!< Value of the External audio frequency in Hz*/ +#endif /* EXTERNAL_CLOCK_VALUE */ + +/* Tip: To avoid modifying this file each time you need to use different HSE, + === you can define the HSE value in your toolchain compiler preprocessor. */ + +/* ########################### System Configuration ######################### */ +/** + * @brief This is the HAL system configuration section + */ +#define VDD_VALUE ((uint32_t)3300U) /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY ((uint32_t)0U) /*!< tick interrupt priority */ +#define USE_RTOS 0U +#define PREFETCH_ENABLE 1U +#define INSTRUCTION_CACHE_ENABLE 1U +#define DATA_CACHE_ENABLE 1U + +#define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */ +#define USE_HAL_CAN_REGISTER_CALLBACKS 0U /* CAN register callback disabled */ +#define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */ +#define USE_HAL_CRYP_REGISTER_CALLBACKS 0U /* CRYP register callback disabled */ +#define USE_HAL_DAC_REGISTER_CALLBACKS 0U /* DAC register callback disabled */ +#define USE_HAL_DCMI_REGISTER_CALLBACKS 0U /* DCMI register callback disabled */ +#define USE_HAL_DFSDM_REGISTER_CALLBACKS 0U /* DFSDM register callback disabled */ +#define USE_HAL_DMA2D_REGISTER_CALLBACKS 0U /* DMA2D register callback disabled */ +#define USE_HAL_DSI_REGISTER_CALLBACKS 0U /* DSI register callback disabled */ +#define USE_HAL_ETH_REGISTER_CALLBACKS 0U /* ETH register callback disabled */ +#define USE_HAL_HASH_REGISTER_CALLBACKS 0U /* HASH register callback disabled */ +#define USE_HAL_HCD_REGISTER_CALLBACKS 0U /* HCD register callback disabled */ +#define USE_HAL_I2C_REGISTER_CALLBACKS 0U /* I2C register callback disabled */ +#define USE_HAL_FMPI2C_REGISTER_CALLBACKS 0U /* FMPI2C register callback disabled */ +#define USE_HAL_I2S_REGISTER_CALLBACKS 0U /* I2S register callback disabled */ +#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */ +#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0U /* LPTIM register callback disabled */ +#define USE_HAL_LTDC_REGISTER_CALLBACKS 0U /* LTDC register callback disabled */ +#define USE_HAL_MMC_REGISTER_CALLBACKS 0U /* MMC register callback disabled */ +#define USE_HAL_NAND_REGISTER_CALLBACKS 0U /* NAND register callback disabled */ +#define USE_HAL_NOR_REGISTER_CALLBACKS 0U /* NOR register callback disabled */ +#define USE_HAL_PCCARD_REGISTER_CALLBACKS 0U /* PCCARD register callback disabled */ +#define USE_HAL_PCD_REGISTER_CALLBACKS 0U /* PCD register callback disabled */ +#define USE_HAL_QSPI_REGISTER_CALLBACKS 0U /* QSPI register callback disabled */ +#define USE_HAL_RNG_REGISTER_CALLBACKS 0U /* RNG register callback disabled */ +#define USE_HAL_RTC_REGISTER_CALLBACKS 0U /* RTC register callback disabled */ +#define USE_HAL_SAI_REGISTER_CALLBACKS 0U /* SAI register callback disabled */ +#define USE_HAL_SD_REGISTER_CALLBACKS 0U /* SD register callback disabled */ +#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U /* SMARTCARD register callback disabled */ +#define USE_HAL_SDRAM_REGISTER_CALLBACKS 0U /* SDRAM register callback disabled */ +#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U /* SRAM register callback disabled */ +#define USE_HAL_SPDIFRX_REGISTER_CALLBACKS 0U /* SPDIFRX register callback disabled */ +#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U /* SMBUS register callback disabled */ +#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */ +#define USE_HAL_TIM_REGISTER_CALLBACKS 0U /* TIM register callback disabled */ +#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */ +#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */ +#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */ + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1U */ + +/* ################## Ethernet peripheral configuration ##################### */ + +/* Section 1 : Ethernet peripheral configuration */ + +/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */ +#define MAC_ADDR0 2U +#define MAC_ADDR1 0U +#define MAC_ADDR2 0U +#define MAC_ADDR3 0U +#define MAC_ADDR4 0U +#define MAC_ADDR5 0U + +/* Definition of the Ethernet driver buffers size and count */ +#define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */ +#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */ +#define ETH_RXBUFNB ((uint32_t)4U) /* 4 Rx buffers of size ETH_RX_BUF_SIZE */ +#define ETH_TXBUFNB ((uint32_t)4U) /* 4 Tx buffers of size ETH_TX_BUF_SIZE */ + +/* Section 2: PHY configuration section */ + +/* DP83848_PHY_ADDRESS Address*/ +#define DP83848_PHY_ADDRESS 0x01U +/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ +#define PHY_RESET_DELAY ((uint32_t)0x000000FFU) +/* PHY Configuration delay */ +#define PHY_CONFIG_DELAY ((uint32_t)0x00000FFFU) + +#define PHY_READ_TO ((uint32_t)0x0000FFFFU) +#define PHY_WRITE_TO ((uint32_t)0x0000FFFFU) + +/* Section 3: Common PHY Registers */ + +#define PHY_BCR ((uint16_t)0x0000U) /*!< Transceiver Basic Control Register */ +#define PHY_BSR ((uint16_t)0x0001U) /*!< Transceiver Basic Status Register */ + +#define PHY_RESET ((uint16_t)0x8000U) /*!< PHY Reset */ +#define PHY_LOOPBACK ((uint16_t)0x4000U) /*!< Select loop-back mode */ +#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100U) /*!< Set the full-duplex mode at 100 Mb/s */ +#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000U) /*!< Set the half-duplex mode at 100 Mb/s */ +#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100U) /*!< Set the full-duplex mode at 10 Mb/s */ +#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000U) /*!< Set the half-duplex mode at 10 Mb/s */ +#define PHY_AUTONEGOTIATION ((uint16_t)0x1000U) /*!< Enable auto-negotiation function */ +#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200U) /*!< Restart auto-negotiation function */ +#define PHY_POWERDOWN ((uint16_t)0x0800U) /*!< Select the power down mode */ +#define PHY_ISOLATE ((uint16_t)0x0400U) /*!< Isolate PHY from MII */ + +#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020U) /*!< Auto-Negotiation process completed */ +#define PHY_LINKED_STATUS ((uint16_t)0x0004U) /*!< Valid link established */ +#define PHY_JABBER_DETECTION ((uint16_t)0x0002U) /*!< Jabber condition detected */ + +/* Section 4: Extended PHY Registers */ +#define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */ + +#define PHY_SPEED_STATUS ((uint16_t)0x0002U) /*!< PHY Speed mask */ +#define PHY_DUPLEX_STATUS ((uint16_t)0x0004U) /*!< PHY Duplex mask */ + +/* ################## SPI peripheral configuration ########################## */ + +/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver +* Activated: CRC code is present inside driver +* Deactivated: CRC code cleaned from driver +*/ + +#define USE_SPI_CRC 0U + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED +#include "stm32f4xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED +#include "stm32f4xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED +#include "stm32f4xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED +#include "stm32f4xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED +#include "stm32f4xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED +#include "stm32f4xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_CAN_MODULE_ENABLED +#include "stm32f4xx_hal_can.h" +#endif /* HAL_CAN_MODULE_ENABLED */ + +#ifdef HAL_CAN_LEGACY_MODULE_ENABLED +#include "stm32f4xx_hal_can_legacy.h" +#endif /* HAL_CAN_LEGACY_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED +#include "stm32f4xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_CRYP_MODULE_ENABLED +#include "stm32f4xx_hal_cryp.h" +#endif /* HAL_CRYP_MODULE_ENABLED */ + +#ifdef HAL_DMA2D_MODULE_ENABLED +#include "stm32f4xx_hal_dma2d.h" +#endif /* HAL_DMA2D_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED +#include "stm32f4xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_DCMI_MODULE_ENABLED +#include "stm32f4xx_hal_dcmi.h" +#endif /* HAL_DCMI_MODULE_ENABLED */ + +#ifdef HAL_ETH_MODULE_ENABLED +#include "stm32f4xx_hal_eth.h" +#endif /* HAL_ETH_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED +#include "stm32f4xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_SRAM_MODULE_ENABLED +#include "stm32f4xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED +#include "stm32f4xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + +#ifdef HAL_NAND_MODULE_ENABLED +#include "stm32f4xx_hal_nand.h" +#endif /* HAL_NAND_MODULE_ENABLED */ + +#ifdef HAL_PCCARD_MODULE_ENABLED +#include "stm32f4xx_hal_pccard.h" +#endif /* HAL_PCCARD_MODULE_ENABLED */ + +#ifdef HAL_SDRAM_MODULE_ENABLED +#include "stm32f4xx_hal_sdram.h" +#endif /* HAL_SDRAM_MODULE_ENABLED */ + +#ifdef HAL_HASH_MODULE_ENABLED +#include "stm32f4xx_hal_hash.h" +#endif /* HAL_HASH_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED +#include "stm32f4xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_SMBUS_MODULE_ENABLED +#include "stm32f4xx_hal_smbus.h" +#endif /* HAL_SMBUS_MODULE_ENABLED */ + +#ifdef HAL_I2S_MODULE_ENABLED +#include "stm32f4xx_hal_i2s.h" +#endif /* HAL_I2S_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED +#include "stm32f4xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_LTDC_MODULE_ENABLED +#include "stm32f4xx_hal_ltdc.h" +#endif /* HAL_LTDC_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED +#include "stm32f4xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_RNG_MODULE_ENABLED +#include "stm32f4xx_hal_rng.h" +#endif /* HAL_RNG_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED +#include "stm32f4xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_SAI_MODULE_ENABLED +#include "stm32f4xx_hal_sai.h" +#endif /* HAL_SAI_MODULE_ENABLED */ + +#ifdef HAL_SD_MODULE_ENABLED +#include "stm32f4xx_hal_sd.h" +#endif /* HAL_SD_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED +#include "stm32f4xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED +#include "stm32f4xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED +#include "stm32f4xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED +#include "stm32f4xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED +#include "stm32f4xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED +#include "stm32f4xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED +#include "stm32f4xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED +#include "stm32f4xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_HCD_MODULE_ENABLED +#include "stm32f4xx_hal_hcd.h" +#endif /* HAL_HCD_MODULE_ENABLED */ + +#ifdef HAL_DSI_MODULE_ENABLED +#include "stm32f4xx_hal_dsi.h" +#endif /* HAL_DSI_MODULE_ENABLED */ + +#ifdef HAL_QSPI_MODULE_ENABLED +#include "stm32f4xx_hal_qspi.h" +#endif /* HAL_QSPI_MODULE_ENABLED */ + +#ifdef HAL_CEC_MODULE_ENABLED +#include "stm32f4xx_hal_cec.h" +#endif /* HAL_CEC_MODULE_ENABLED */ + +#ifdef HAL_FMPI2C_MODULE_ENABLED +#include "stm32f4xx_hal_fmpi2c.h" +#endif /* HAL_FMPI2C_MODULE_ENABLED */ + +#ifdef HAL_SPDIFRX_MODULE_ENABLED +#include "stm32f4xx_hal_spdifrx.h" +#endif /* HAL_SPDIFRX_MODULE_ENABLED */ + +#ifdef HAL_DFSDM_MODULE_ENABLED +#include "stm32f4xx_hal_dfsdm.h" +#endif /* HAL_DFSDM_MODULE_ENABLED */ + +#ifdef HAL_LPTIM_MODULE_ENABLED +#include "stm32f4xx_hal_lptim.h" +#endif /* HAL_LPTIM_MODULE_ENABLED */ + +#ifdef HAL_MMC_MODULE_ENABLED +#include "stm32f4xx_hal_mmc.h" +#endif /* HAL_MMC_MODULE_ENABLED */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ +#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ +void assert_failed(uint8_t *file, uint32_t line); +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F4xx_HAL_CONF_H */ + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/ldscript.ld b/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/ldscript.ld new file mode 100644 index 0000000000..e83d35496a --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/ldscript.ld @@ -0,0 +1,206 @@ +/* +***************************************************************************** +** + +** File : LinkerScript.ld +** +** Abstract : Linker script for STM32F407ZGTx Device with +** 1024KByte FLASH, 128KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +***************************************************************************** +** @attention +** +**

© COPYRIGHT(c) 2014 Ac6

+** +** Redistribution and use in source and binary forms, with or without modification, +** are permitted provided that the following conditions are met: +** 1. Redistributions of source code must retain the above copyright notice, +** this list of conditions and the following disclaimer. +** 2. Redistributions in binary form must reproduce the above copyright notice, +** this list of conditions and the following disclaimer in the documentation +** and/or other materials provided with the distribution. +** 3. Neither the name of Ac6 nor the names of its contributors +** may be used to endorse or promote products derived from this software +** without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20020000; /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200;; /* required amount of heap */ +_Min_Stack_Size = 0x400;; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ +FLASH (rx) : ORIGIN = 0x800C000, LENGTH = 512K-48K +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K +CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 64K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text ALIGN(4): + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata ALIGN(4): + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM AT> FLASH + + _siccmram = LOADADDR(.ccmram); + + /* CCM-RAM section + * + * IMPORTANT NOTE! + * If initialized variables will be placed in this section, + * the startup code needs to be modified to copy the init-values. + */ + .ccmram : + { + . = ALIGN(4); + _sccmram = .; /* create a global symbol at ccmram start */ + *(.ccmram) + *(.ccmram*) + + . = ALIGN(4); + _eccmram = .; /* create a global symbol at ccmram end */ + } >CCMRAM AT> FLASH + + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(4); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(4); + } >RAM + + + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/variant.cpp b/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/variant.cpp new file mode 100644 index 0000000000..cfc7f0affd --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/variant.cpp @@ -0,0 +1,228 @@ +/* + ******************************************************************************* + * Copyright (c) 2017, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ + +#include "variant.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#include "pins_arduino.h" + + +// Pin number +// This array allows to wrap Arduino pin number(Dx or x) +// to STM32 PinName (PX_n) +const PinName digitalPin[] = { + PC_13, //D0 + PC_14, //D1 - OSC32_IN + PC_15, //D2 - OSC32_OUT + PH_0, //D3 - OSC_IN + PH_1, //D4 - OSC_OUT + PB_2, //D21 - BOOT1 + PB_10, //D22 - 1:SPI2_SCK / I2C2_SCL / USART3_TX / TIM2_CH3 + PB_11, //D23 - 1:I2C2_SDA / USART3_RX / TIM2_CH4 + PB_12, //D24 - 1:SPI2_NSS / OTG_HS_ID + PB_13, //D25 - 1:SPI2_SCK 2:OTG_HS_VBUS + PB_14, //D26 - 1:SPI2_MISO / TIM12_CH1 / OTG_HS_DM + PB_15, //D27 - SPI2_MOSI / TIM12_CH2 / OTG_HS_DP + PC_6, //D28 - 1:TIM8_CH1 / SDIO_D6 / USART6_TX / TIM3_CH1 + PC_7, //D29 - 1:TIM8_CH2 / SDIO_D7 / USART6_RX / TIM3_CH2 + PC_8, //D30 - 1:TIM8_CH3 / SDIO_D0 / TIM3_CH3 + PC_9, //D31 - 1:TIM8_CH4 / SDIO_D1 / TIM3_CH4 + PA_8, //D32 - 1:TIM1_CH1 / I2C3_SCL / OTG_FS_SOF + PA_9, //D33 - 1:USART1_TX / TIM1_CH2 2:OTG_FS_VBUS + PA_10, //34 - 1:USART1_RX / TIM1_CH3 / OTG_FS_ID + PA_11, //D35 - 1:TIM1_CH4 / OTG_FS_DM + PA_12, //D36 - 1:OTG_FS_DP + PA_13, //D37 - 0:JTMS-SWDIO + PA_14, //D38 - 0:JTCK-SWCLK + PA_15, //D39 - 0:JTDI 1:SPI3_NSS / SPI1_NSS + PC_10, //D40 - 1:UART4_TX / SPI3_SCK / SDIO_D2 / USART3_TX + PC_11, //D41 - 1:UART4_RX / SPI3_MISO / SDIO_D3 / USART3_RX + PC_12, //D42 - 1:UART5_TX / SPI3_MOSI / SDIO_CK + PD_2, //D43 - 1:UART5_RX / SDIO_CMD + PB_3, //D44 - 0:JTDO 1:SPI3_SCK / TIM2_CH2 / SPI1_SCK + PB_4, //D45 - 0:NJTRST 1:SPI3_MISO / TIM3_CH1 / SPI1_MISO + PB_5, //D45 - 1:TIM3_CH2 / SPI1_MOSI / SPI3_MOSI + PB_6, //D47 - 1:I2C1_SCL / TIM4_CH1 / USART1_TX + PB_7, //D48 - 1:I2C1_SDA / TIM4_CH2 / USART1_RX + PB_8, //D49 - 1:I2C1_SCL / TIM4_CH3 / SDIO_D4 / TIM10_CH1 + PB_9, //D50 - 1:I2C1_SDA / TIM4_CH4 / SDIO_D5 / TIM11_CH1 / SPI2_NSS + PE_2, //D51 - 1:FSMC_A23 + PE_3, //D52 - 1:FSMC_A19 + PE_4, //D53 - 1:FSMC_A20 + PE_5, //D54 - 1:FSMC_A21 + PE_6, //D55 - 1:FSMC_A22 + PE_7, //D56 - 1:FSMC_D4 + PE_8, //D57 - 1:FSMC_D5 + PE_9, //D58 - 1:FSMC_D6 / TIM1_CH1 + PE_10, //D59 - 1:FSMC_D7 + PE_11, //D60 - 1:FSMC_D8 / TIM1_CH2 + PE_12, //D61 - 1:FSMC_D9 + PE_13, //D62 - 1:FSMC_D10 / TIM1_CH3 + PE_14, //D63 - 1:FSMC_D11 / TIM1_CH4 + PE_15, //D64 - 1:FSMC_D12 + PD_8, //D65 - 1:FSMC_D13 / USART3_TX + PD_9, //D66 - 1:FSMC_D14 / USART3_RX + PD_10, //D67 - 1:FSMC_D15 + PD_11, //D68 - 1:FSMC_A16 + PD_12, //D69 - 1:FSMC_A17 / TIM4_CH1 + PD_13, //D70 - 1:FSMC_A18 / TIM4_CH2 + PD_14, //D71 - 1:FSMC_D0 / TIM4_CH3 + PD_15, //D72 - 1:FSMC_D1 / TIM4_CH4 + PD_0, //D73 - 1:FSMC_D2 + PD_1, //D74 - 1:FSMC_D3 + PD_3, //D75 - 1:FSMC_CLK + PD_4, //D76 - 1:FSMC_NOE + PD_5, //D77 - 1:USART2_TX + PD_6, //D78 - 1:USART2_RX + PD_7, //D79 + PE_0, //D80 + PE_1, //D81 + PF_0, //D82 - 1:FSMC_A0 / I2C2_SDA + PF_1, //D83 - 1:FSMC_A1 / I2C2_SCL + PF_2, //D84 - 1:FSMC_A2 + PF_11, //D93 + PF_12, //D94 - 1:FSMC_A6 + PF_13, //D95 - 1:FSMC_A7 + PF_14, //D96 - 1:FSMC_A8 + PF_15, //D97 - 1:FSMC_A9 + PG_0, //D98 - 1:FSMC_A10 + PG_1, //D99 - 1:FSMC_A11 + PG_2, //D100 - 1:FSMC_A12 + PG_3, //D101 - 1:FSMC_A13 + PG_4, //D102 - 1:FSMC_A14 + PG_5, //D103 - 1:FSMC_A15 + PG_6, //D104 + PG_7, //D105 + PG_8, //D106 + PG_9, //D107 - 1:USART6_RX + PG_10, //D108 - 1:FSMC_NE3 + PG_11, //D109 + PG_12, //D110 - 1:FSMC_NE4 + PG_13, //D111 - 1:FSMC_A24 + PG_14, //D112 - 1:FSMC_A25 / USART6_TX + PG_15, //D113 + PA_0, //D140/A0 = D9 - 1:UART4_TX / TIM5_CH1 2:ADC123_IN0 + PA_1, //D141/A1 = D10 - 1:UART4_RX / TIM5_CH2 / TIM2_CH2 2:ADC123_IN1 + PA_2, //D142/A2 = D11 - 1:USART2_TX /TIM5_CH3 / TIM9_CH1 / TIM2_CH3 2:ADC123_IN2 + PA_3, //D143/A3 = D12 - 1:USART2_RX /TIM5_CH4 / TIM9_CH2 / TIM2_CH4 2:ADC123_IN3 + PA_4, //D144/A4 = D13 - NOT FT 1:SPI1_NSS / SPI3_NSS / USART2_CK 2:ADC12_IN4 / DAC_OUT1 + PA_5, //D145/A5 = D14 - NOT FT 1:SPI1_SCK 2:ADC12_IN5 / DAC_OUT2 + PA_6, //D146/A6 = D15 - 1:SPI1_MISO / TIM13_CH1 / TIM3_CH1 2:ADC12_IN6 + PA_7, //D147/A7 = D16 - 1:SPI1_MOSI / TIM14_CH1 / TIM3_CH2 2:ADC12_IN7 + PB_0, //D148/A8 = D19 - 1:TIM3_CH3 2:ADC12_IN8 + PB_1, //D149/A9 = D20 - 1:TIM3_CH4 2:ADC12_IN9 + PC_0, //D150/A10 = D5 - 1: 2:ADC123_IN10 + PC_1, //D151/A11 = D6 - 1: 2:ADC123_IN11 + PC_2, //D152/A12 = D7 - 1:SPI2_MISO 2:ADC123_IN12 + PC_3, //D153/A13 = D8 - 1:SPI2_MOSI 2:ADC123_IN13 + PC_4, //D154/A14 = D17 - 1: 2:ADC12_IN14 + PC_5, //D155/A15 = D18 - 1: 2:ADC12_IN15 + PF_3, //D156/A16 = D85 - 1:FSMC_A3 2:ADC3_IN9 + PF_4, //D157/A17 = D86 - 1:FSMC_A4 2:ADC3_IN14 + PF_5, //D158/A18 = D87 - 1:FSMC_A5 2:ADC3_IN15 + PF_6, //D159/A19 = D88 - 1:TIM10_CH1 2:ADC3_IN4 + PF_7, //D160/A20 = D89 - 1:TIM11_CH1 2:ADC3_IN5 + PF_8, //D161/A21 = D90 - 1:TIM13_CH1 2:ADC3_IN6 + PF_9, //D162/A22 = D91 - 1;TIM14_CH1 2:ADC3_IN7 + PF_10, //D163/A23 = D92 - 2:ADC3_IN8 +}; + +#ifdef __cplusplus +} +#endif + +// ------------------------ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief System Clock Configuration + * @param None + * @retval None + */ +WEAK void SystemClock_Config(void) +{ + + RCC_OscInitTypeDef RCC_OscInitStruct; + RCC_ClkInitTypeDef RCC_ClkInitStruct; + + /**Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + + /**Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 8; + RCC_OscInitStruct.PLL.PLLN = 336; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 7; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + /**Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK + | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + /**Configure the Systick interrupt time + */ + HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq() / 1000); + + /**Configure the Systick + */ + HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); + + /* SysTick_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); +} + +#ifdef __cplusplus +} +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/variant.h new file mode 100644 index 0000000000..51c2935798 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_MKS_ROBIN2/variant.h @@ -0,0 +1,242 @@ + +/* + ******************************************************************************* + * Copyright (c) 2017, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ + +#ifndef _VARIANT_ARDUINO_STM32_ +#define _VARIANT_ARDUINO_STM32_ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ +// #include "PeripheralPins.h" + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +/*---------------------------------------------------------------------------- + * Pins + *----------------------------------------------------------------------------*/ +//extern const PinName digitalPin[]; + + #define PC13 0 + #define PC14 1 //OSC32_IN + #define PC15 2 //OSC32_OUT + #define PH0 3 //OSC_IN + #define PH1 4 //OSC_OUT + #define PB2 5 //BOOT1 + #define PB10 6 //1:SPI2_SCK / I2C2_SCL / USART3_TX / TIM2_CH3 + #define PB11 7 //1:I2C2_SDA / USART3_RX / TIM2_CH4 + #define PB12 8 //1:SPI2_NSS / OTG_HS_ID + #define PB13 9 //1:SPI2_SCK 2:OTG_HS_VBUS + #define PB14 10 //1:SPI2_MISO / TIM12_CH1 / OTG_HS_DM + #define PB15 11 //SPI2_MOSI / TIM12_CH2 / OTG_HS_DP + #define PC6 12 //1:TIM8_CH1 / SDIO_D6 / USART6_TX / TIM3_CH1 + #define PC7 13 //1:TIM8_CH2 / SDIO_D7 / USART6_RX / TIM3_CH2 + #define PC8 14 //1:TIM8_CH3 / SDIO_D0 / TIM3_CH3 + #define PC9 15 //1:TIM8_CH4 / SDIO_D1 / TIM3_CH4 + #define PA8 16 //1:TIM1_CH1 / I2C3_SCL / OTG_FS_SOF + #define PA9 17 //1:USART1_TX / TIM1_CH2 2:OTG_FS_VBUS + #define PA10 18 //1:USART1_RX / TIM1_CH3 / OTG_FS_ID + #define PA11 19 //1:TIM1_CH4 / OTG_FS_DM + #define PA12 20 //1:OTG_FS_DP + #define PA13 21 //0:JTMS-SWDIO + #define PA14 22 //0:JTCK-SWCLK + #define PA15 23 //0:JTDI 1:SPI3_NSS / SPI1_NSS + #define PC10 24 //1:UART4_TX / SPI3_SCK / SDIO_D2 / USART3_TX + #define PC11 25 //1:UART4_RX / SPI3_MISO / SDIO_D3 / USART3_RX + #define PC12 26 //1:UART5_TX / SPI3_MOSI / SDIO_CK + #define PD2 27 //1:UART5_RX / SDIO_CMD + #define PB3 28 //0:JTDO 1:SPI3_SCK / TIM2_CH2 / SPI1_SCK + #define PB4 29 //0:NJTRST 1:SPI3_MISO / TIM3_CH1 / SPI1_MISO + #define PB5 30 //1:TIM3_CH2 / SPI1_MOSI / SPI3_MOSI + #define PB6 31 //1:I2C1_SCL / TIM4_CH1 / USART1_TX + #define PB7 32 //1:I2C1_SDA / TIM4_CH2 / USART1_RX + #define PB8 33 //1:I2C1_SCL / TIM4_CH3 / SDIO_D4 / TIM10_CH1 + #define PB9 34 //1:I2C1_SDA / TIM4_CH4 / SDIO_D5 / TIM11_CH1 / SPI2_NSS + #define PE2 35 //1:FSMC_A23 + #define PE3 36 //1:FSMC_A19 + #define PE4 37 //1:FSMC_A20 + #define PE5 38 //1:FSMC_A21 + #define PE6 39 //1:FSMC_A22 + #define PE7 40 //1:FSMC_D4 + #define PE8 41 //1:FSMC_D5 + #define PE9 42 //1:FSMC_D6 / TIM1_CH1 + #define PE10 43 //1:FSMC_D7 + #define PE11 44 //1:FSMC_D8 / TIM1_CH2 + #define PE12 45 //1:FSMC_D9 + #define PE13 46 //1:FSMC_D10 / TIM1_CH3 + #define PE14 47 //1:FSMC_D11 / TIM1_CH4 + #define PE15 48 //1:FSMC_D12 + #define PD8 49 //1:FSMC_D13 / USART3_TX + #define PD9 50 //1:FSMC_D14 / USART3_RX + #define PD10 51 //1:FSMC_D15 + #define PD11 52 //1:FSMC_A16 + #define PD12 53 //1:FSMC_A17 / TIM4_CH1 + #define PD13 54 //1:FSMC_A18 / TIM4_CH2 + #define PD14 55 //1:FSMC_D0 / TIM4_CH3 + #define PD15 56 //1:FSMC_D1 / TIM4_CH4 + #define PD0 57 //1:FSMC_D2 + #define PD1 58 //1:FSMC_D3 + #define PD3 59 //1:FSMC_CLK + #define PD4 60 //1:FSMC_NOE + #define PD5 61 //1:USART2_TX + #define PD6 62 //1:USART2_RX + #define PD7 63 + #define PE0 64 + #define PE1 65 + #define PF0 66 //1:FSMC_A0 / I2C2_SDA + #define PF1 67 //1:FSMC_A1 / I2C2_SCL + #define PF2 68 //1:FSMC_A2 + #define PF11 69 + #define PF12 70 //1:FSMC_A6 + #define PF13 71 //1:FSMC_A7 + #define PF14 72 //1:FSMC_A8 + #define PF15 73 //1:FSMC_A9 + #define PG0 74 //1:FSMC_A10 + #define PG1 75 //1:FSMC_A11 + #define PG2 76 //1:FSMC_A12 + #define PG3 77 //1:FSMC_A13 + #define PG4 78 //1:FSMC_A14 + #define PG5 79 //1:FSMC_A15 + #define PG6 80 + #define PG7 81 + #define PG8 82 + #define PG9 83 //1:USART6_RX + #define PG10 84 //1:FSMC_NE3 + #define PG11 85 + #define PG12 86 //1:FSMC_NE4 + #define PG13 87 //1:FSMC_A24 + #define PG14 88 //1:FSMC_A25 / USART6_TX + #define PG15 89 + #define PA0 90 //1:UART4_TX / TIM5_CH1 2:ADC123_IN0 + #define PA1 91 //1:UART4_RX / TIM5_CH2 / TIM2_CH2 2:ADC123_IN1 + #define PA2 92 //1:USART2_TX /TIM5_CH3 / TIM9_CH1 / TIM2_CH3 2:ADC123_IN2 + #define PA3 93 //1:USART2_RX /TIM5_CH4 / TIM9_CH2 / TIM2_CH4 2:ADC123_IN3 + #define PA4 94 //NOT FT 1:SPI1_NSS / SPI3_NSS / USART2_CK 2:ADC12_IN4 / DAC_OUT1 + #define PA5 95 //NOT FT 1:SPI1_SCK 2:ADC12_IN5 / DAC_OUT2 + #define PA6 96 //1:SPI1_MISO / TIM13_CH1 / TIM3_CH1 2:ADC12_IN6 + #define PA7 97 //1:SPI1_MOSI / TIM14_CH1 / TIM3_CH2 2:ADC12_IN7 + #define PB0 98 //1:TIM3_CH3 2:ADC12_IN8 + #define PB1 99 //1:TIM3_CH4 2:ADC12_IN9 + #define PC0 100 //1: 2:ADC123_IN10 + #define PC1 101 //1: 2:ADC123_IN11 + #define PC2 102 //1:SPI2_MISO 2:ADC123_IN12 + #define PC3 103 //1:SPI2_MOSI 2:ADC123_IN13 + #define PC4 104 //1: 2:ADC12_IN14 + #define PC5 105 //1: 2:ADC12_IN15 + #define PF3 106 //1:FSMC_A3 2:ADC3_IN9 + #define PF4 107 //1:FSMC_A4 2:ADC3_IN14 + #define PF5 108 //1:FSMC_A5 2:ADC3_IN15 + #define PF6 109 //1:TIM10_CH1 2:ADC3_IN4 + #define PF7 110 //1:TIM11_CH1 2:ADC3_IN5 + #define PF8 111 //1:TIM13_CH1 2:ADC3_IN6 + #define PF9 112 //1;TIM14_CH1 2:ADC3_IN7 + #define PF10 113 //2:ADC3_IN8 + +// This must be a literal +#define NUM_DIGITAL_PINS 114 +// This must be a literal with a value less than or equal to MAX_ANALOG_INPUTS +#define NUM_ANALOG_INPUTS 24 +#define NUM_ANALOG_FIRST 90 + +// Below ADC, DAC and PWM definitions already done in the core +// Could be redefined here if needed +// ADC resolution is 12bits +//#define ADC_RESOLUTION 12 +//#define DACC_RESOLUTION 12 + +// PWM resolution +#define PWM_RESOLUTION 8 +#define PWM_FREQUENCY 20000 +#define PWM_MAX_DUTY_CYCLE 255 + +// Below SPI and I2C definitions already done in the core +// Could be redefined here if differs from the default one +// SPI Definitions +#define PIN_SPI_MOSI PB15 +#define PIN_SPI_MISO PB14 +#define PIN_SPI_SCK PB13 +#define PIN_SPI_SS PB12 + +// I2C Definitions +#define PIN_WIRE_SDA PB7 +#define PIN_WIRE_SCL PB6 + +// Timer Definitions +//Do not use timer used by PWM pins when possible. See PinMap_PWM in PeripheralPins.c +#define TIMER_TONE TIM6 + +// Do not use basic timer: OC is required +#define TIMER_SERVO TIM2 //TODO: advanced-control timers don't work + +// UART Definitions +// Define here Serial instance number to map on Serial generic name +#define SERIAL_UART_INSTANCE 3 //ex: 2 for Serial2 (USART2) +// DEBUG_UART could be redefined to print on another instance than 'Serial' +//#define DEBUG_UART ((USART_TypeDef *) U(S)ARTX) // ex: USART3 +// DEBUG_UART baudrate, default: 9600 if not defined +//#define DEBUG_UART_BAUDRATE x +// DEBUG_UART Tx pin name, default: the first one found in PinMap_UART_TX for DEBUG_UART +//#define DEBUG_PINNAME_TX PX_n // PinName used for TX + +// Default pin used for 'Serial' instance (ex: ST-Link) +// Mandatory for Firmata +#define PIN_SERIAL_RX PB11//PA10 +#define PIN_SERIAL_TX PB10//PA9 + +#ifdef __cplusplus +} // extern "C" +#endif +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus +// These serial port names are intended to allow libraries and architecture-neutral +// sketches to automatically default to the correct port name for a particular type +// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, +// the first hardware serial port whose RX/TX pins are not dedicated to another use. +// +// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor +// +// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial +// +// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library +// +// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. +// +// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX +// pins are NOT connected to anything by default. +#define SERIAL_PORT_MONITOR Serial +#define SERIAL_PORT_HARDWARE Serial1 +#endif + +#endif /* _VARIANT_ARDUINO_STM32_ */ diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini index f30b5e539d..29c3f5b959 100644 --- a/ini/stm32f4.ini +++ b/ini/stm32f4.ini @@ -419,7 +419,20 @@ monitor_speed = 500000 upload_protocol = dfu # -# MKS Robin Pro V2 +# STM32F407ZET6 ARM Cortex-M4 +# +[env:mks_robin2] +extends = stm32_variant +board = marlin_MKS_ROBIN2 +board_build.offset = 0xC000 +board_upload.offset_address = 0x0800C000 +board_build.encrypt_mks = Robin2.bin +build_flags = ${stm32_variant.build_flags} + -DTARGET_STM32F4 -DSTM32F407_5ZX + -DUSBCON -DUSBD_USE_CDC -DUSBD_VID=0x0483 -DUSBD_PID=0x3748 -DUSB_PRODUCT=\"MKS_Robin2\" + +# +# MKS Robin Pro V2 (No bootloader!) # [env:mks_robin_pro2] extends = stm32_variant From c6ea99f4be9c52d28c535e823da4171a7a89fa31 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 8 May 2023 06:50:21 -0500 Subject: [PATCH 401/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20babystep=20corrupt?= =?UTF-8?q?ing=20DIR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to 2538a7c4 --- Marlin/Configuration_adv.h | 2 +- Marlin/src/module/stepper.cpp | 121 +++++++----------------- Marlin/src/module/stepper/indirection.h | 44 ++++----- buildroot/tests/FYSETC_F6 | 26 ++--- 4 files changed, 71 insertions(+), 122 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 1a35c324b6..0d1b3d79fa 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2188,7 +2188,7 @@ //#define BABYSTEP_WITHOUT_HOMING //#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement). //#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA! - #define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way + //#define BABYSTEP_INVERT_Z // Enable if Z babysteps should go the other way //#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps #define BABYSTEP_MULTIPLICATOR_Z 1 // (steps or mm) Steps or millimeter distance for each Z babystep #define BABYSTEP_MULTIPLICATOR_XY 1 // (steps or mm) Steps or millimeter distance for each XY babystep diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 7517bcd0a6..d7ef76d18a 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -3609,31 +3609,31 @@ void Stepper::report_positions() { #if DISABLED(DELTA) - #define BABYSTEP_AXIS(AXIS, DIR, INV) do{ \ - const uint8_t old_dir = _READ_DIR(AXIS); \ - _ENABLE_AXIS(AXIS); \ - DIR_WAIT_BEFORE(); \ - _APPLY_DIR(AXIS, (DIR)^(INV)); \ - DIR_WAIT_AFTER(); \ - _SAVE_START(); \ - _APPLY_STEP(AXIS, _STEP_STATE(AXIS), true); \ - _PULSE_WAIT(); \ - _APPLY_STEP(AXIS, !_STEP_STATE(AXIS), true); \ - EXTRA_DIR_WAIT_BEFORE(); \ - _APPLY_DIR(AXIS, old_dir); \ - EXTRA_DIR_WAIT_AFTER(); \ + #define BABYSTEP_AXIS(AXIS, FWD, INV) do{ \ + const bool old_fwd = _READ_DIR(AXIS); \ + _ENABLE_AXIS(AXIS); \ + DIR_WAIT_BEFORE(); \ + _APPLY_DIR(AXIS, (FWD)^(INV)); \ + DIR_WAIT_AFTER(); \ + _SAVE_START(); \ + _APPLY_STEP(AXIS, _STEP_STATE(AXIS), true); \ + _PULSE_WAIT(); \ + _APPLY_STEP(AXIS, !_STEP_STATE(AXIS), true); \ + EXTRA_DIR_WAIT_BEFORE(); \ + _APPLY_DIR(AXIS, old_fwd); \ + EXTRA_DIR_WAIT_AFTER(); \ }while(0) #endif #if IS_CORE - #define BABYSTEP_CORE(A, B, DIR, INV, ALT) do{ \ - const xy_byte_t old_dir = { _READ_DIR(A), _READ_DIR(B) }; \ + #define BABYSTEP_CORE(A, B, FWD, INV, ALT) do{ \ + const xy_byte_t old_fwd = { _READ_DIR(A), _READ_DIR(B) }; \ _ENABLE_AXIS(A); _ENABLE_AXIS(B); \ DIR_WAIT_BEFORE(); \ - _APPLY_DIR(A, (DIR)^(INV)); \ - _APPLY_DIR(B, (DIR)^(INV)^(ALT)); \ + _APPLY_DIR(A, (FWD)^(INV)); \ + _APPLY_DIR(B, (FWD)^(INV)^(ALT)); \ DIR_WAIT_AFTER(); \ _SAVE_START(); \ _APPLY_STEP(A, _STEP_STATE(A), true); \ @@ -3642,7 +3642,7 @@ void Stepper::report_positions() { _APPLY_STEP(A, !_STEP_STATE(A), true); \ _APPLY_STEP(B, !_STEP_STATE(B), true); \ EXTRA_DIR_WAIT_BEFORE(); \ - _APPLY_DIR(A, old_dir.a); _APPLY_DIR(B, old_dir.b); \ + _APPLY_DIR(A, old_fwd.a); _APPLY_DIR(B, old_fwd.b); \ EXTRA_DIR_WAIT_AFTER(); \ }while(0) @@ -3683,78 +3683,46 @@ void Stepper::report_positions() { case Z_AXIS: { #if CORE_IS_XZ - BABYSTEP_CORE(X, Z, direction, BABYSTEP_INVERT_Z, (CORESIGN(1)>0)); + BABYSTEP_CORE(X, Z, direction, ENABLED(BABYSTEP_INVERT_Z), (CORESIGN(1)>0)); #elif CORE_IS_YZ - BABYSTEP_CORE(Y, Z, direction, BABYSTEP_INVERT_Z, (CORESIGN(1)<0)); + BABYSTEP_CORE(Y, Z, direction, ENABLED(BABYSTEP_INVERT_Z), (CORESIGN(1)<0)); #elif DISABLED(DELTA) - BABYSTEP_AXIS(Z, direction, BABYSTEP_INVERT_Z); + BABYSTEP_AXIS(Z, direction, ENABLED(BABYSTEP_INVERT_Z)); #else // DELTA const bool z_direction = TERN_(BABYSTEP_INVERT_Z, !) direction; - NUM_AXIS_CODE( - enable_axis(X_AXIS), enable_axis(Y_AXIS), enable_axis(Z_AXIS), - enable_axis(I_AXIS), enable_axis(J_AXIS), enable_axis(K_AXIS), - enable_axis(U_AXIS), enable_axis(V_AXIS), enable_axis(W_AXIS) - ); + enable_axis(A_AXIS); enable_axis(B_AXIS); enable_axis(C_AXIS); DIR_WAIT_BEFORE(); - const xyz_byte_t old_dir = NUM_AXIS_ARRAY( - X_DIR_READ(), Y_DIR_READ(), Z_DIR_READ(), - I_DIR_READ(), J_DIR_READ(), K_DIR_READ(), - U_DIR_READ(), V_DIR_READ(), W_DIR_READ() - ); + const bool old_fwd[3] = { X_DIR_READ(), Y_DIR_READ(), Z_DIR_READ() }; - #ifdef X_DIR_WRITE - X_DIR_WRITE(z_direction); - #endif - #ifdef Y_DIR_WRITE - Y_DIR_WRITE(z_direction); - #endif - #ifdef Z_DIR_WRITE - Z_DIR_WRITE(z_direction); - #endif + X_DIR_WRITE(z_direction); + Y_DIR_WRITE(z_direction); + Z_DIR_WRITE(z_direction); DIR_WAIT_AFTER(); _SAVE_START(); - #ifdef X_STEP_WRITE - X_STEP_WRITE(STEP_STATE_X); - #endif - #ifdef Y_STEP_WRITE - Y_STEP_WRITE(STEP_STATE_Y); - #endif - #ifdef Z_STEP_WRITE - Z_STEP_WRITE(STEP_STATE_Z); - #endif + X_STEP_WRITE(STEP_STATE_X); + Y_STEP_WRITE(STEP_STATE_Y); + Z_STEP_WRITE(STEP_STATE_Z); _PULSE_WAIT(); - #ifdef X_STEP_WRITE - X_STEP_WRITE(!STEP_STATE_X); - #endif - #ifdef Y_STEP_WRITE - Y_STEP_WRITE(!STEP_STATE_Y); - #endif - #ifdef Z_STEP_WRITE - Z_STEP_WRITE(!STEP_STATE_Z); - #endif + X_STEP_WRITE(!STEP_STATE_X); + Y_STEP_WRITE(!STEP_STATE_Y); + Z_STEP_WRITE(!STEP_STATE_Z); // Restore direction bits EXTRA_DIR_WAIT_BEFORE(); - #ifdef X_DIR_WRITE - X_DIR_WRITE(old_dir.x); - #endif - #ifdef Y_DIR_WRITE - Y_DIR_WRITE(old_dir.y); - #endif - #ifdef Z_DIR_WRITE - Z_DIR_WRITE(old_dir.z); - #endif + X_DIR_WRITE(old_fwd[A_AXIS]); + Y_DIR_WRITE(old_fwd[B_AXIS]); + Z_DIR_WRITE(old_fwd[C_AXIS]); EXTRA_DIR_WAIT_AFTER(); @@ -3762,25 +3730,6 @@ void Stepper::report_positions() { } break; - #if HAS_I_AXIS - case I_AXIS: BABYSTEP_AXIS(I, direction, 0); break; - #endif - #if HAS_J_AXIS - case J_AXIS: BABYSTEP_AXIS(J, direction, 0); break; - #endif - #if HAS_K_AXIS - case K_AXIS: BABYSTEP_AXIS(K, direction, 0); break; - #endif - #if HAS_U_AXIS - case U_AXIS: BABYSTEP_AXIS(U, direction, 0); break; - #endif - #if HAS_V_AXIS - case V_AXIS: BABYSTEP_AXIS(V, direction, 0); break; - #endif - #if HAS_W_AXIS - case W_AXIS: BABYSTEP_AXIS(W, direction, 0); break; - #endif - default: break; } diff --git a/Marlin/src/module/stepper/indirection.h b/Marlin/src/module/stepper/indirection.h index 7669853b2b..d60c539be5 100644 --- a/Marlin/src/module/stepper/indirection.h +++ b/Marlin/src/module/stepper/indirection.h @@ -91,7 +91,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef X_DIR_INIT #define X_DIR_INIT() SET_OUTPUT(X_DIR_PIN) #define X_DIR_WRITE(STATE) WRITE(X_DIR_PIN,INVERT_DIR(X, STATE)) - #define X_DIR_READ() bool(READ(X_DIR_PIN)) + #define X_DIR_READ() INVERT_DIR(X, bool(READ(X_DIR_PIN))) #endif #define X_STEP_INIT() SET_OUTPUT(X_STEP_PIN) #ifndef X_STEP_WRITE @@ -109,7 +109,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef Y_DIR_INIT #define Y_DIR_INIT() SET_OUTPUT(Y_DIR_PIN) #define Y_DIR_WRITE(STATE) WRITE(Y_DIR_PIN,INVERT_DIR(Y, STATE)) - #define Y_DIR_READ() bool(READ(Y_DIR_PIN)) + #define Y_DIR_READ() INVERT_DIR(Y, bool(READ(Y_DIR_PIN))) #endif #define Y_STEP_INIT() SET_OUTPUT(Y_STEP_PIN) #ifndef Y_STEP_WRITE @@ -128,7 +128,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef Z_DIR_INIT #define Z_DIR_INIT() SET_OUTPUT(Z_DIR_PIN) #define Z_DIR_WRITE(STATE) WRITE(Z_DIR_PIN,INVERT_DIR(Z, STATE)) - #define Z_DIR_READ() bool(READ(Z_DIR_PIN)) + #define Z_DIR_READ() INVERT_DIR(Z, bool(READ(Z_DIR_PIN))) #endif #define Z_STEP_INIT() SET_OUTPUT(Z_STEP_PIN) #ifndef Z_STEP_WRITE @@ -147,7 +147,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef X2_DIR_INIT #define X2_DIR_INIT() SET_OUTPUT(X2_DIR_PIN) #define X2_DIR_WRITE(STATE) WRITE(X2_DIR_PIN,INVERT_DIR(X2, STATE)) - #define X2_DIR_READ() bool(READ(X2_DIR_PIN)) + #define X2_DIR_READ() INVERT_DIR(X2, bool(READ(X2_DIR_PIN))) #endif #define X2_STEP_INIT() SET_OUTPUT(X2_STEP_PIN) #ifndef X2_STEP_WRITE @@ -166,7 +166,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef Y2_DIR_INIT #define Y2_DIR_INIT() SET_OUTPUT(Y2_DIR_PIN) #define Y2_DIR_WRITE(STATE) WRITE(Y2_DIR_PIN,INVERT_DIR(Y2, STATE)) - #define Y2_DIR_READ() bool(READ(Y2_DIR_PIN)) + #define Y2_DIR_READ() INVERT_DIR(Y2, bool(READ(Y2_DIR_PIN))) #endif #define Y2_STEP_INIT() SET_OUTPUT(Y2_STEP_PIN) #ifndef Y2_STEP_WRITE @@ -187,7 +187,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef Z2_DIR_INIT #define Z2_DIR_INIT() SET_OUTPUT(Z2_DIR_PIN) #define Z2_DIR_WRITE(STATE) WRITE(Z2_DIR_PIN,INVERT_DIR(Z2, STATE)) - #define Z2_DIR_READ() bool(READ(Z2_DIR_PIN)) + #define Z2_DIR_READ() INVERT_DIR(Z2, bool(READ(Z2_DIR_PIN))) #endif #define Z2_STEP_INIT() SET_OUTPUT(Z2_STEP_PIN) #ifndef Z2_STEP_WRITE @@ -208,7 +208,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef Z3_DIR_INIT #define Z3_DIR_INIT() SET_OUTPUT(Z3_DIR_PIN) #define Z3_DIR_WRITE(STATE) WRITE(Z3_DIR_PIN,INVERT_DIR(Z3, STATE)) - #define Z3_DIR_READ() bool(READ(Z3_DIR_PIN)) + #define Z3_DIR_READ() INVERT_DIR(Z3, bool(READ(Z3_DIR_PIN))) #endif #define Z3_STEP_INIT() SET_OUTPUT(Z3_STEP_PIN) #ifndef Z3_STEP_WRITE @@ -229,7 +229,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef Z4_DIR_INIT #define Z4_DIR_INIT() SET_OUTPUT(Z4_DIR_PIN) #define Z4_DIR_WRITE(STATE) WRITE(Z4_DIR_PIN,INVERT_DIR(Z4, STATE)) - #define Z4_DIR_READ() bool(READ(Z4_DIR_PIN)) + #define Z4_DIR_READ() INVERT_DIR(Z4, bool(READ(Z4_DIR_PIN))) #endif #define Z4_STEP_INIT() SET_OUTPUT(Z4_STEP_PIN) #ifndef Z4_STEP_WRITE @@ -250,7 +250,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef I_DIR_INIT #define I_DIR_INIT() SET_OUTPUT(I_DIR_PIN) #define I_DIR_WRITE(STATE) WRITE(I_DIR_PIN,INVERT_DIR(I, STATE)) - #define I_DIR_READ() bool(READ(I_DIR_PIN)) + #define I_DIR_READ() INVERT_DIR(I, bool(READ(I_DIR_PIN))) #endif #define I_STEP_INIT() SET_OUTPUT(I_STEP_PIN) #ifndef I_STEP_WRITE @@ -269,7 +269,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef J_DIR_INIT #define J_DIR_INIT() SET_OUTPUT(J_DIR_PIN) #define J_DIR_WRITE(STATE) WRITE(J_DIR_PIN,INVERT_DIR(J, STATE)) - #define J_DIR_READ() bool(READ(J_DIR_PIN)) + #define J_DIR_READ() INVERT_DIR(J, bool(READ(J_DIR_PIN))) #endif #define J_STEP_INIT() SET_OUTPUT(J_STEP_PIN) #ifndef J_STEP_WRITE @@ -288,7 +288,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef K_DIR_INIT #define K_DIR_INIT() SET_OUTPUT(K_DIR_PIN) #define K_DIR_WRITE(STATE) WRITE(K_DIR_PIN,INVERT_DIR(K, STATE)) - #define K_DIR_READ() bool(READ(K_DIR_PIN)) + #define K_DIR_READ() INVERT_DIR(K, bool(READ(K_DIR_PIN))) #endif #define K_STEP_INIT() SET_OUTPUT(K_STEP_PIN) #ifndef K_STEP_WRITE @@ -307,7 +307,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef U_DIR_INIT #define U_DIR_INIT() SET_OUTPUT(U_DIR_PIN) #define U_DIR_WRITE(STATE) WRITE(U_DIR_PIN,INVERT_DIR(U, STATE)) - #define U_DIR_READ() bool(READ(U_DIR_PIN)) + #define U_DIR_READ() INVERT_DIR(U, bool(READ(U_DIR_PIN))) #endif #define U_STEP_INIT() SET_OUTPUT(U_STEP_PIN) #ifndef U_STEP_WRITE @@ -326,7 +326,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef V_DIR_INIT #define V_DIR_INIT() SET_OUTPUT(V_DIR_PIN) #define V_DIR_WRITE(STATE) WRITE(V_DIR_PIN,INVERT_DIR(V, STATE)) - #define V_DIR_READ() bool(READ(V_DIR_PIN)) + #define V_DIR_READ() INVERT_DIR(V, bool(READ(V_DIR_PIN))) #endif #define V_STEP_INIT() SET_OUTPUT(V_STEP_PIN) #ifndef V_STEP_WRITE @@ -345,7 +345,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef W_DIR_INIT #define W_DIR_INIT() SET_OUTPUT(W_DIR_PIN) #define W_DIR_WRITE(STATE) WRITE(W_DIR_PIN,INVERT_DIR(W, STATE)) - #define W_DIR_READ() bool(READ(W_DIR_PIN)) + #define W_DIR_READ() INVERT_DIR(W, bool(READ(W_DIR_PIN))) #endif #define W_STEP_INIT() SET_OUTPUT(W_STEP_PIN) #ifndef W_STEP_WRITE @@ -363,7 +363,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef E0_DIR_INIT #define E0_DIR_INIT() SET_OUTPUT(E0_DIR_PIN) #define E0_DIR_WRITE(STATE) WRITE(E0_DIR_PIN,INVERT_DIR(E0, STATE)) - #define E0_DIR_READ() bool(READ(E0_DIR_PIN)) + #define E0_DIR_READ() INVERT_DIR(E0, bool(READ(E0_DIR_PIN))) #endif #define E0_STEP_INIT() SET_OUTPUT(E0_STEP_PIN) #ifndef E0_STEP_WRITE @@ -380,7 +380,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef E1_DIR_INIT #define E1_DIR_INIT() SET_OUTPUT(E1_DIR_PIN) #define E1_DIR_WRITE(STATE) WRITE(E1_DIR_PIN,INVERT_DIR(E1, STATE)) - #define E1_DIR_READ() bool(READ(E1_DIR_PIN)) + #define E1_DIR_READ() INVERT_DIR(E1, bool(READ(E1_DIR_PIN))) #endif #define E1_STEP_INIT() SET_OUTPUT(E1_STEP_PIN) #ifndef E1_STEP_WRITE @@ -397,7 +397,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef E2_DIR_INIT #define E2_DIR_INIT() SET_OUTPUT(E2_DIR_PIN) #define E2_DIR_WRITE(STATE) WRITE(E2_DIR_PIN,INVERT_DIR(E2, STATE)) - #define E2_DIR_READ() bool(READ(E2_DIR_PIN)) + #define E2_DIR_READ() INVERT_DIR(E2, bool(READ(E2_DIR_PIN))) #endif #define E2_STEP_INIT() SET_OUTPUT(E2_STEP_PIN) #ifndef E2_STEP_WRITE @@ -414,7 +414,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef E3_DIR_INIT #define E3_DIR_INIT() SET_OUTPUT(E3_DIR_PIN) #define E3_DIR_WRITE(STATE) WRITE(E3_DIR_PIN,INVERT_DIR(E3, STATE)) - #define E3_DIR_READ() bool(READ(E3_DIR_PIN)) + #define E3_DIR_READ() INVERT_DIR(E3, bool(READ(E3_DIR_PIN))) #endif #define E3_STEP_INIT() SET_OUTPUT(E3_STEP_PIN) #ifndef E3_STEP_WRITE @@ -431,7 +431,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef E4_DIR_INIT #define E4_DIR_INIT() SET_OUTPUT(E4_DIR_PIN) #define E4_DIR_WRITE(STATE) WRITE(E4_DIR_PIN,INVERT_DIR(E4, STATE)) - #define E4_DIR_READ() bool(READ(E4_DIR_PIN)) + #define E4_DIR_READ() INVERT_DIR(E4, bool(READ(E4_DIR_PIN))) #endif #define E4_STEP_INIT() SET_OUTPUT(E4_STEP_PIN) #ifndef E4_STEP_WRITE @@ -448,7 +448,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef E5_DIR_INIT #define E5_DIR_INIT() SET_OUTPUT(E5_DIR_PIN) #define E5_DIR_WRITE(STATE) WRITE(E5_DIR_PIN,INVERT_DIR(E5, STATE)) - #define E5_DIR_READ() bool(READ(E5_DIR_PIN)) + #define E5_DIR_READ() INVERT_DIR(E5, bool(READ(E5_DIR_PIN))) #endif #define E5_STEP_INIT() SET_OUTPUT(E5_STEP_PIN) #ifndef E5_STEP_WRITE @@ -465,7 +465,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef E6_DIR_INIT #define E6_DIR_INIT() SET_OUTPUT(E6_DIR_PIN) #define E6_DIR_WRITE(STATE) WRITE(E6_DIR_PIN,INVERT_DIR(E6, STATE)) - #define E6_DIR_READ() bool(READ(E6_DIR_PIN)) + #define E6_DIR_READ() INVERT_DIR(E6, bool(READ(E6_DIR_PIN))) #endif #define E6_STEP_INIT() SET_OUTPUT(E6_STEP_PIN) #ifndef E6_STEP_WRITE @@ -482,7 +482,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #ifndef E7_DIR_INIT #define E7_DIR_INIT() SET_OUTPUT(E7_DIR_PIN) #define E7_DIR_WRITE(STATE) WRITE(E7_DIR_PIN,INVERT_DIR(E7, STATE)) - #define E7_DIR_READ() bool(READ(E7_DIR_PIN)) + #define E7_DIR_READ() INVERT_DIR(E7, bool(READ(E7_DIR_PIN))) #endif #define E7_STEP_INIT() SET_OUTPUT(E7_STEP_PIN) #ifndef E7_STEP_WRITE diff --git a/buildroot/tests/FYSETC_F6 b/buildroot/tests/FYSETC_F6 index dbfb767171..314e207c58 100755 --- a/buildroot/tests/FYSETC_F6 +++ b/buildroot/tests/FYSETC_F6 @@ -11,7 +11,7 @@ set -e # restore_configs opt_set MOTHERBOARD BOARD_FYSETC_F6_13 LCD_SERIAL_PORT 1 DGUS_LCD_UI FYSETC -exec_test $1 $2 "FYSETC F6 1.3 with DGUS (FYSETC)" "$3" +exec_test $1 $2 "DGUS (FYSETC)" "$3" # # Test DGUS_LCD_UI RELOADED @@ -20,7 +20,14 @@ restore_configs opt_set MOTHERBOARD BOARD_FYSETC_F6_13 TEMP_SENSOR_BED 2 LCD_SERIAL_PORT 1 DGUS_LCD_UI RELOADED GRID_MAX_POINTS_X 5 opt_enable ADVANCED_PAUSE_FEATURE LCD_BED_TRAMMING CLASSIC_JERK BABYSTEPPING BABYSTEP_ALWAYS_AVAILABLE BABYSTEP_ZPROBE_OFFSET \ BLTOUCH Z_SAFE_HOMING AUTO_BED_LEVELING_BILINEAR NOZZLE_PARK_FEATURE -exec_test $1 $2 "FYSETC F6 1.3 with DGUS (RELOADED)" "$3" +exec_test $1 $2 "ABL | DGUS (RELOADED)" "$3" + +# +# Delta Config (FLSUN AC because it's complex) +# +use_example_configs delta/FLSUN/auto_calibrate +opt_set MOTHERBOARD BOARD_FYSETC_F6_13 +exec_test $1 $2 "DELTA / FLSUN Auto-Calibrate" "$3" # # Delta Config (generic) + UBL + ALLEN_KEY + EEPROM_SETTINGS + OLED_PANEL_TINYBOY2 @@ -29,8 +36,8 @@ use_example_configs delta/generic opt_set MOTHERBOARD BOARD_FYSETC_F6_13 LCD_LANGUAGE ko_KR opt_enable RESTORE_LEVELING_AFTER_G28 EEPROM_SETTINGS EEPROM_CHITCHAT \ Z_PROBE_ALLEN_KEY AUTO_BED_LEVELING_UBL UBL_MESH_WIZARD \ - OLED_PANEL_TINYBOY2 MESH_EDIT_GFX_OVERLAY DELTA_CALIBRATION_MENU -exec_test $1 $2 "DELTA, FYSETC F6 1.3, UBL, Allen Key, EEPROM, OLED_PANEL_TINYBOY2..." "$3" + OLED_PANEL_TINYBOY2 MESH_EDIT_GFX_OVERLAY DELTA_CALIBRATION_MENU BABYSTEPPING +exec_test $1 $2 "DELTA | UBL | Allen Key | EEPROM | OLED_PANEL_TINYBOY2..." "$3" # # Test mixed TMC config @@ -44,14 +51,7 @@ opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER \ MARLIN_BRICKOUT MARLIN_INVADERS MARLIN_SNAKE \ MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD \ SENSORLESS_HOMING TMC_DEBUG M114_DETAIL -exec_test $1 $2 "RAMPS | Mixed TMC | Sensorless | RRDFGSC | Games" "$3" - -# -# Delta Config (FLSUN AC because it's complex) -# -use_example_configs delta/FLSUN/auto_calibrate -opt_set MOTHERBOARD BOARD_FYSETC_F6_13 -exec_test $1 $2 "RAMPS 1.3 | DELTA | FLSUN AC Config" "$3" +exec_test $1 $2 "Mixed TMC | Sensorless | RRDFGSC | Games" "$3" # # SCARA with Mixed TMC @@ -65,7 +65,7 @@ opt_set MOTHERBOARD BOARD_FYSETC_F6_13 \ opt_enable FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \ FYSETC_242_OLED_12864 EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL Z_SAFE_HOMING \ STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD SENSORLESS_HOMING EDGE_STEPPING -exec_test $1 $2 "FYSETC_F6 | SCARA | Mixed TMC | EEPROM" "$3" +exec_test $1 $2 "SCARA | Mixed TMC | EEPROM" "$3" # clean up restore_configs From 08207fd0869b048a62811aa2b889be0620b7e405 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 8 May 2023 05:26:12 -0500 Subject: [PATCH 402/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Ext?= =?UTF-8?q?end=20AxisBits?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/types.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 6ef23f066c..6d4e5c643e 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -842,28 +842,28 @@ public: }; }; - AxisBits() { bits = 0; } + AxisBits() { reset(); } // Constructor, setter, and operator= for bit mask AxisBits(const el p) { set(p); } - - void reset() { bits = 0; } - - void set(const el p) { bits = el(p); } + FI void set(const el p) { bits = el(p); } FI AxisBits& operator=(const el p) { set(p); return *this; } + FI void reset() { set(0); } + FI void fill() { set(_BV(NUM_AXIS_ENUMS) - 1); } + #define MSET(pE,pX,pY,pZ,pI,pJ,pK,pU,pV,pW) LOGICAL_AXIS_CODE(e=pE, x=pX, y=pY, z=pZ, i=pI, j=pJ, k=pK, u=pU, v=pV, w=pW) // Constructor, setter, and operator= for XYZE type AxisBits(const xyze_bool_t &p) { set(p); } - void set(const xyze_bool_t &p) { + FI void set(const xyze_bool_t &p) { MSET(p.e, p.x, p.y, p.z, p.i, p.j, p.k, p.u, p.v, p.w); } FI AxisBits& operator=(const xyze_bool_t &p) { set(p); return *this; } // Constructor, setter, and operator= for bool array AxisBits(const bool (&p)[LOGICAL_AXES]) { set(p); } - void set(const bool (&p)[LOGICAL_AXES]) { + FI void set(const bool (&p)[LOGICAL_AXES]) { MSET(p[E_AXIS], p[X_AXIS], p[Y_AXIS], p[Z_AXIS], p[I_AXIS], p[J_AXIS], p[K_AXIS], p[U_AXIS], p[V_AXIS], p[W_AXIS]); From 70efb515b16a9c8b5ebd0dae7348a0194841c4e3 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 8 May 2023 05:27:55 -0500 Subject: [PATCH 403/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20PI?= =?UTF-8?q?=20=3D>=20M=5FPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ftdi_eve_lib/extended/circular_progress.cpp | 16 ++++++++-------- Marlin/src/module/ft_motion.cpp | 2 +- Marlin/src/module/planner.cpp | 14 +++++++------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/circular_progress.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/circular_progress.cpp index 32cc37d2e2..7849b1e461 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/circular_progress.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/circular_progress.cpp @@ -27,11 +27,11 @@ namespace FTDI { void draw_circular_progress(CommandProcessor& cmd, int x, int y, int w, int h, float percent, char *text, uint32_t bgcolor, uint32_t fgcolor) { const float rim = 0.3; - const float a = percent/100.0*2.0*PI; - const float a1 = min(PI/2, a); - const float a2 = min(PI/2, a-a1); - const float a3 = min(PI/2, a-a1-a2); - const float a4 = min(PI/2, a-a1-a2-a3); + const float a = percent/100.0*2.0*M_PI; + const float a1 = min(M_PI/2, a); + const float a2 = min(M_PI/2, a-a1); + const float a3 = min(M_PI/2, a-a1-a2); + const float a4 = min(M_PI/2, a-a1-a2-a3); const int ro = min(w,h) * 8; const int rr = ro * rim; @@ -69,21 +69,21 @@ namespace FTDI { cmd.cmd(VERTEX2F(cx + ro*sin(a1) + 16,cy - ro*cos(a1) + 8)); // Paint lower-right quadrant - if (a > PI/2) { + if (a > M_PI/2) { cmd.cmd(BEGIN(EDGE_STRIP_R)); cmd.cmd(VERTEX2F(cx, cy)); cmd.cmd(VERTEX2F(cx + ro*cos(a2),cy + ro*sin(a2) + 16)); } // Paint lower-left quadrant - if (a > PI) { + if (a > M_PI) { cmd.cmd(BEGIN(EDGE_STRIP_B)); cmd.cmd(VERTEX2F(cx, cy)); cmd.cmd(VERTEX2F(cx - ro*sin(a3) - 8,cy + ro*cos(a3))); } // Paint upper-left quadrant - if (a > 1.5*PI) { + if (a > 1.5*M_PI) { cmd.cmd(BEGIN(EDGE_STRIP_L)); cmd.cmd(VERTEX2F(cx, cy)); cmd.cmd(VERTEX2F(cx - ro*cos(a4),cy - ro*sin(a4))); diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp index bc6ba8d3e3..97dae881f8 100644 --- a/Marlin/src/module/ft_motion.cpp +++ b/Marlin/src/module/ft_motion.cpp @@ -288,7 +288,7 @@ void FxdTiCtrl::loop() { // To be called on init or mode or zeta change. void FxdTiCtrl::updateShapingA(const_float_t zeta/*=FTM_SHAPING_ZETA*/, const_float_t vtol/*=FTM_SHAPING_V_TOL*/) { - const float K = exp( -zeta * PI / sqrt(1.0f - sq(zeta)) ), + const float K = exp( -zeta * M_PI / sqrt(1.0f - sq(zeta)) ), K2 = sq(K); switch (cfg_mode) { diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 52519b805c..1b995a3224 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -3173,14 +3173,14 @@ bool Planner::buffer_line(const xyze_pos_t &cart, const_feedRate_t fr_mm_s if (delta.a <= POLAR_FAST_RADIUS ) calculated_feedrate = settings.max_feedrate_mm_s[Y_AXIS]; else { - // Normalized vector of movement - const float diffBLength = ABS((2.0f * PI * diff.a) * (diff.b / 360.0f)), - diffTheta = DEGREES(ATAN2(diff.a, diffBLength)), - normalizedTheta = 1.0f - (ABS(diffTheta > 90.0f ? 180.0f - diffTheta : diffTheta) / 90.0f); + // Normalized vector of movement + const float diffBLength = ABS((2.0f * M_PI * diff.a) * (diff.b / 360.0f)), + diffTheta = DEGREES(ATAN2(diff.a, diffBLength)), + normalizedTheta = 1.0f - (ABS(diffTheta > 90.0f ? 180.0f - diffTheta : diffTheta) / 90.0f); - // Normalized position along the radius - const float radiusRatio = PRINTABLE_RADIUS/delta.a; - calculated_feedrate += (fr_mm_s * radiusRatio * normalizedTheta); + // Normalized position along the radius + const float radiusRatio = (PRINTABLE_RADIUS) / delta.a; + calculated_feedrate += (fr_mm_s * radiusRatio * normalizedTheta); } } const feedRate_t feedrate = calculated_feedrate; From 3e9848f49c6565ea1c630c272e32e27b0858d85a Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 9 May 2023 00:27:27 +0000 Subject: [PATCH 404/659] [cron] Bump distribution date (2023-05-09) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 5ec65a5d7f..ed2f818ecb 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-08" +//#define STRING_DISTRIBUTION_DATE "2023-05-09" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 5a8a55507c..47faccbc25 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-08" + #define STRING_DISTRIBUTION_DATE "2023-05-09" #endif /** From 1f9bfc5c7491d802d242623f8253b1f52c0917a3 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Wed, 10 May 2023 06:59:25 +1200 Subject: [PATCH 405/659] =?UTF-8?q?=F0=9F=9A=B8=20Optional=20X-Axis=20(#25?= =?UTF-8?q?418)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: alextrical <35117191+alextrical@users.noreply.github.com> Co-authored-by: Scott Lahteine --- Marlin/src/core/language.h | 10 +- Marlin/src/core/serial.cpp | 10 +- Marlin/src/core/serial.h | 4 +- Marlin/src/core/types.h | 134 ++-- Marlin/src/feature/fwretract.cpp | 2 - Marlin/src/feature/tmc_util.cpp | 20 +- Marlin/src/feature/tmc_util.h | 2 +- Marlin/src/gcode/calibrate/G28.cpp | 726 +++++++++--------- Marlin/src/gcode/calibrate/G425.cpp | 14 +- Marlin/src/gcode/calibrate/M425.cpp | 24 +- Marlin/src/gcode/config/M200-M205.cpp | 82 +- Marlin/src/gcode/config/M217.cpp | 42 +- Marlin/src/gcode/config/M218.cpp | 12 +- Marlin/src/gcode/config/M92.cpp | 30 +- Marlin/src/gcode/control/M17_M18_M84.cpp | 24 +- Marlin/src/gcode/feature/pause/G60.cpp | 23 +- Marlin/src/gcode/feature/trinamic/M569.cpp | 24 +- .../src/gcode/feature/trinamic/M911-M914.cpp | 2 +- Marlin/src/inc/Conditionals_LCD.h | 35 +- Marlin/src/inc/Conditionals_adv.h | 18 + Marlin/src/inc/Conditionals_post.h | 84 +- Marlin/src/inc/SanityCheck.h | 12 +- Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 20 +- Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp | 16 +- Marlin/src/lcd/dogm/status_screen_DOGM.cpp | 37 +- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 18 +- .../lcd/e3v2/marlinui/ui_status_480x272.cpp | 4 +- .../extui/dgus/fysetc/DGUSScreenHandler.cpp | 10 +- .../extui/dgus/hiprecy/DGUSScreenHandler.cpp | 10 +- .../lcd/extui/dgus/mks/DGUSScreenHandler.cpp | 20 +- .../extui/dgus/origin/DGUSScreenHandler.cpp | 10 +- .../generic/move_axis_screen.cpp | 6 +- .../mks_ui/draw_acceleration_settings.cpp | 6 +- Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp | 8 +- Marlin/src/lcd/extui/ui_api.cpp | 8 +- Marlin/src/lcd/marlinui.cpp | 2 +- Marlin/src/lcd/menu/menu_advanced.cpp | 20 +- Marlin/src/lcd/menu/menu_backlash.cpp | 4 +- Marlin/src/lcd/menu/menu_motion.cpp | 6 +- Marlin/src/libs/vector_3.h | 10 +- Marlin/src/module/endstops.cpp | 30 +- Marlin/src/module/motion.cpp | 260 ++++--- Marlin/src/module/motion.h | 30 +- Marlin/src/module/planner.cpp | 24 +- Marlin/src/module/probe.h | 2 +- Marlin/src/module/settings.cpp | 59 +- Marlin/src/module/stepper.cpp | 30 +- Marlin/src/module/stepper.h | 2 +- Marlin/src/module/stepper/indirection.h | 39 +- Marlin/src/module/stepper/trinamic.cpp | 2 +- Marlin/src/module/stepper/trinamic.h | 2 +- Marlin/src/pins/sensitive_pins.h | 79 +- buildroot/tests/mega2560 | 13 + ini/stm32g0.ini | 5 +- 54 files changed, 1201 insertions(+), 925 deletions(-) diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h index 0c5bc0af9b..c951012b6d 100644 --- a/Marlin/src/core/language.h +++ b/Marlin/src/core/language.h @@ -324,10 +324,12 @@ // // Endstop Names used by Endstops::report_states // -#define STR_X_MIN "x_min" -#define STR_X_MAX "x_max" -#define STR_X2_MIN "x2_min" -#define STR_X2_MAX "x2_max" +#if HAS_X_AXIS + #define STR_X_MIN "x_min" + #define STR_X_MAX "x_max" + #define STR_X2_MIN "x2_min" + #define STR_X2_MAX "x2_max" +#endif #if HAS_Y_AXIS #define STR_Y_MIN "y_min" diff --git a/Marlin/src/core/serial.cpp b/Marlin/src/core/serial.cpp index 64704c1e6c..8f3a59c814 100644 --- a/Marlin/src/core/serial.cpp +++ b/Marlin/src/core/serial.cpp @@ -96,10 +96,12 @@ void print_bin(uint16_t val) { } } -void print_pos(NUM_AXIS_ARGS(const_float_t), FSTR_P const prefix/*=nullptr*/, FSTR_P const suffix/*=nullptr*/) { +void print_pos(NUM_AXIS_ARGS_(const_float_t) FSTR_P const prefix/*=nullptr*/, FSTR_P const suffix/*=nullptr*/) { if (prefix) serial_print(prefix); - SERIAL_ECHOPGM_P( - LIST_N(DOUBLE(NUM_AXES), SP_X_STR, x, SP_Y_STR, y, SP_Z_STR, z, SP_I_STR, i, SP_J_STR, j, SP_K_STR, k, SP_U_STR, u, SP_V_STR, v, SP_W_STR, w) - ); + #if NUM_AXES + SERIAL_ECHOPGM_P( + LIST_N(DOUBLE(NUM_AXES), SP_X_STR, x, SP_Y_STR, y, SP_Z_STR, z, SP_I_STR, i, SP_J_STR, j, SP_K_STR, k, SP_U_STR, u, SP_V_STR, v, SP_W_STR, w) + ); + #endif if (suffix) serial_print(suffix); else SERIAL_EOL(); } diff --git a/Marlin/src/core/serial.h b/Marlin/src/core/serial.h index a741d4b1e4..475761216c 100644 --- a/Marlin/src/core/serial.h +++ b/Marlin/src/core/serial.h @@ -340,10 +340,10 @@ void serial_spaces(uint8_t count); void serial_offset(const_float_t v, const uint8_t sp=0); // For v==0 draw space (sp==1) or plus (sp==2) void print_bin(const uint16_t val); -void print_pos(NUM_AXIS_ARGS(const_float_t), FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr); +void print_pos(NUM_AXIS_ARGS_(const_float_t) FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr); inline void print_pos(const xyze_pos_t &xyze, FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr) { - print_pos(NUM_AXIS_ELEM(xyze), prefix, suffix); + print_pos(NUM_AXIS_ELEM_(xyze) prefix, suffix); } #define SERIAL_POS(SUFFIX,VAR) do { print_pos(VAR, F(" " STRINGIFY(VAR) "="), F(" : " SUFFIX "\n")); }while(0) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 6d4e5c643e..173945a458 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -36,31 +36,47 @@ template struct IF { typedef L type; }; #define ALL_AXIS_NAMES X, X2, Y, Y2, Z, Z2, Z3, Z4, I, J, K, U, V, W, E0, E1, E2, E3, E4, E5, E6, E7 -#define NUM_AXIS_GANG(V...) GANG_N(NUM_AXES, V) -#define NUM_AXIS_CODE(V...) CODE_N(NUM_AXES, V) -#define NUM_AXIS_LIST(V...) LIST_N(NUM_AXES, V) -#define NUM_AXIS_LIST_1(V) LIST_N_1(NUM_AXES, V) -#define NUM_AXIS_ARRAY(V...) { NUM_AXIS_LIST(V) } -#define NUM_AXIS_ARRAY_1(V) { NUM_AXIS_LIST_1(V) } -#define NUM_AXIS_ARGS(T) NUM_AXIS_LIST(T x, T y, T z, T i, T j, T k, T u, T v, T w) -#define NUM_AXIS_ELEM(O) NUM_AXIS_LIST(O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w) -#define NUM_AXIS_DEFS(T,V) NUM_AXIS_LIST(T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V) -#define MAIN_AXIS_NAMES NUM_AXIS_LIST(X, Y, Z, I, J, K, U, V, W) -#define MAIN_AXIS_MAP(F) MAP(F, MAIN_AXIS_NAMES) -#define STR_AXES_MAIN NUM_AXIS_GANG("X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W) +#define NUM_AXIS_GANG(V...) GANG_N(NUM_AXES, V) +#define NUM_AXIS_CODE(V...) CODE_N(NUM_AXES, V) +#define NUM_AXIS_LIST(V...) LIST_N(NUM_AXES, V) +#define NUM_AXIS_LIST_1(V) LIST_N_1(NUM_AXES, V) +#define NUM_AXIS_ARRAY(V...) { NUM_AXIS_LIST(V) } +#define NUM_AXIS_ARRAY_1(V) { NUM_AXIS_LIST_1(V) } +#define NUM_AXIS_ARGS(T) NUM_AXIS_LIST(T x, T y, T z, T i, T j, T k, T u, T v, T w) +#define NUM_AXIS_ELEM(O) NUM_AXIS_LIST(O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w) +#define NUM_AXIS_DEFS(T,V) NUM_AXIS_LIST(T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V) +#define MAIN_AXIS_NAMES NUM_AXIS_LIST(X, Y, Z, I, J, K, U, V, W) +#define STR_AXES_MAIN NUM_AXIS_GANG("X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W) -#define LOGICAL_AXIS_GANG(E,V...) NUM_AXIS_GANG(V) GANG_ITEM_E(E) -#define LOGICAL_AXIS_CODE(E,V...) NUM_AXIS_CODE(V) CODE_ITEM_E(E) -#define LOGICAL_AXIS_LIST(E,V...) NUM_AXIS_LIST(V) LIST_ITEM_E(E) -#define LOGICAL_AXIS_LIST_1(V) NUM_AXIS_LIST_1(V) LIST_ITEM_E(V) +#if NUM_AXES + #define NUM_AXES_SEP , + #define MAIN_AXIS_MAP(F) MAP(F, MAIN_AXIS_NAMES) + #define OPTARGS_LOGICAL(T) , LOGICAL_AXIS_ARGS(T) +#else + #define NUM_AXES_SEP + #define MAIN_AXIS_MAP(F) + #define OPTARGS_LOGICAL(T) +#endif + +#define NUM_AXIS_GANG_(V...) NUM_AXIS_GANG(V) NUM_AXES_SEP +#define NUM_AXIS_LIST_(V...) NUM_AXIS_LIST(V) NUM_AXES_SEP +#define NUM_AXIS_LIST_1_(V...) NUM_AXIS_LIST_1(V) NUM_AXES_SEP +#define NUM_AXIS_ARGS_(T) NUM_AXIS_ARGS(T) NUM_AXES_SEP +#define NUM_AXIS_ELEM_(T) NUM_AXIS_ELEM(T) NUM_AXES_SEP +#define MAIN_AXIS_NAMES_ MAIN_AXIS_NAMES NUM_AXES_SEP + +#define LOGICAL_AXIS_GANG(E,V...) NUM_AXIS_GANG(V) GANG_ITEM_E(E) +#define LOGICAL_AXIS_CODE(E,V...) NUM_AXIS_CODE(V) CODE_ITEM_E(E) +#define LOGICAL_AXIS_LIST(E,V...) NUM_AXIS_LIST(V) LIST_ITEM_E(E) +#define LOGICAL_AXIS_LIST_1(V) NUM_AXIS_LIST_1(V) LIST_ITEM_E(V) #define LOGICAL_AXIS_ARRAY(E,V...) { LOGICAL_AXIS_LIST(E,V) } #define LOGICAL_AXIS_ARRAY_1(V) { LOGICAL_AXIS_LIST_1(V) } -#define LOGICAL_AXIS_ARGS(T) LOGICAL_AXIS_LIST(T e, T x, T y, T z, T i, T j, T k, T u, T v, T w) -#define LOGICAL_AXIS_ELEM(O) LOGICAL_AXIS_LIST(O.e, O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w) -#define LOGICAL_AXIS_DECL(T,V) LOGICAL_AXIS_LIST(T e=V, T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V) -#define LOGICAL_AXIS_NAMES LOGICAL_AXIS_LIST(E, X, Y, Z, I, J, K, U, V, W) -#define LOGICAL_AXIS_MAP(F) MAP(F, LOGICAL_AXIS_NAMES) -#define STR_AXES_LOGICAL LOGICAL_AXIS_GANG("E", "X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W) +#define LOGICAL_AXIS_ARGS(T) LOGICAL_AXIS_LIST(T e, T x, T y, T z, T i, T j, T k, T u, T v, T w) +#define LOGICAL_AXIS_ELEM(O) LOGICAL_AXIS_LIST(O.e, O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w) +#define LOGICAL_AXIS_DECL(T,V) LOGICAL_AXIS_LIST(T e=V, T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V) +#define LOGICAL_AXIS_NAMES LOGICAL_AXIS_LIST(E, X, Y, Z, I, J, K, U, V, W) +#define LOGICAL_AXIS_MAP(F) MAP(F, LOGICAL_AXIS_NAMES) +#define STR_AXES_LOGICAL LOGICAL_AXIS_GANG("E", "X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W) #define XYZ_GANG(V...) GANG_N(PRIMARY_LINEAR_AXES, V) #define XYZ_CODE(V...) CODE_N(PRIMARY_LINEAR_AXES, V) @@ -75,8 +91,13 @@ template struct IF { typedef L type; }; #endif #if HAS_EXTRUDERS - #define LIST_ITEM_E(N) , N - #define CODE_ITEM_E(N) ; N + #if NUM_AXES + #define LIST_ITEM_E(N) , N + #define CODE_ITEM_E(N) ; N + #else + #define LIST_ITEM_E(N) N + #define CODE_ITEM_E(N) N + #endif #define GANG_ITEM_E(N) N #else #define LIST_ITEM_E(N) @@ -166,37 +187,38 @@ typedef struct AxisFlags { enum AxisEnum : uint8_t { // Linear axes may be controlled directly or indirectly - NUM_AXIS_LIST(X_AXIS, Y_AXIS, Z_AXIS, I_AXIS, J_AXIS, K_AXIS, U_AXIS, V_AXIS, W_AXIS) + NUM_AXIS_LIST_(X_AXIS, Y_AXIS, Z_AXIS, I_AXIS, J_AXIS, K_AXIS, U_AXIS, V_AXIS, W_AXIS) - // Extruder axes may be considered distinctly - #define _EN_ITEM(N) , E##N##_AXIS + #define _EN_ITEM(N) E##N##_AXIS, REPEAT(EXTRUDERS, _EN_ITEM) #undef _EN_ITEM // Core also keeps toolhead directions #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) - , X_HEAD, Y_HEAD, Z_HEAD + X_HEAD, Y_HEAD, Z_HEAD, #endif // Distinct axes, including all E and Core - , NUM_AXIS_ENUMS + NUM_AXIS_ENUMS, // Most of the time we refer only to the single E_AXIS #if HAS_EXTRUDERS - , E_AXIS = E0_AXIS + E_AXIS = E0_AXIS, #endif // A, B, and C are for DELTA, SCARA, etc. - , A_AXIS = X_AXIS + #if HAS_X_AXIS + A_AXIS = X_AXIS, + #endif #if HAS_Y_AXIS - , B_AXIS = Y_AXIS + B_AXIS = Y_AXIS, #endif #if HAS_Z_AXIS - , C_AXIS = Z_AXIS + C_AXIS = Z_AXIS, #endif // To refer to all or none - , ALL_AXES_ENUM = 0xFE, NO_AXIS_ENUM = 0xFF + ALL_AXES_ENUM = 0xFE, NO_AXIS_ENUM = 0xFF }; // @@ -336,7 +358,9 @@ struct XYval { FI void reset() { x = y = 0; } // Setters taking struct types and arrays - FI void set(const T px) { x = px; } + #if HAS_X_AXIS + FI void set(const T px) { x = px; } + #endif #if HAS_Y_AXIS FI void set(const T px, const T py) { x = px; y = py; } FI void set(const T (&arr)[XY]) { x = arr[0]; y = arr[1]; } @@ -453,9 +477,9 @@ struct XYval { FI XYval& operator<<=(const int &p) { _LS(x); _LS(y); return *this; } // Exact comparisons. For floats a "NEAR" operation may be better. - FI bool operator==(const XYval &rs) const { return NUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); } - FI bool operator==(const XYZval &rs) const { return NUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); } - FI bool operator==(const XYZEval &rs) const { return NUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); } + FI bool operator==(const XYval &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y,,,,,,, ); } + FI bool operator==(const XYZval &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y,,,,,,, ); } + FI bool operator==(const XYZEval &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y,,,,,,, ); } FI bool operator!=(const XYval &rs) const { return !operator==(rs); } FI bool operator!=(const XYZval &rs) const { return !operator==(rs); } FI bool operator!=(const XYZEval &rs) const { return !operator==(rs); } @@ -467,23 +491,25 @@ struct XYval { template struct XYZval { union { - struct { T NUM_AXIS_ARGS(); }; - struct { T NUM_AXIS_LIST(a, b, c, _i, _j, _k, _u, _v, _w); }; + #if NUM_AXES + struct { T NUM_AXIS_ARGS(); }; + struct { T NUM_AXIS_LIST(a, b, c, _i, _j, _k, _u, _v, _w); }; + #endif T pos[NUM_AXES]; }; // Set all to 0 - FI void reset() { NUM_AXIS_GANG(x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; } + FI void reset() { NUM_AXIS_CODE(x = 0, y = 0, z = 0, i = 0, j = 0, k = 0, u = 0, v = 0, w = 0); } // Setters taking struct types and arrays - FI void set(const XYval pxy) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y,,,,,,,); } - FI void set(const XYval pxy, const T pz) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y, z = pz,,,,,,); } - FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); } + FI void set(const XYval pxy) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y,,,,,,,); } + FI void set(const XYval pxy, const T pz) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y, z = pz,,,,,,); } + FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); } #if LOGICAL_AXES > NUM_AXES - FI void set(const T (&arr)[LOGICAL_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); } - FI void set(LOGICAL_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w ); } + FI void set(const T (&arr)[LOGICAL_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); } + FI void set(LOGICAL_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w ); } #if DISTINCT_AXES > LOGICAL_AXES - FI void set(const T (&arr)[DISTINCT_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); } + FI void set(const T (&arr)[DISTINCT_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); } #endif #endif @@ -517,15 +543,15 @@ struct XYZval { #endif // Length reduced to one dimension - FI T magnitude() const { return (T)sqrtf(NUM_AXIS_GANG(x*x, + y*y, + z*z, + i*i, + j*j, + k*k, + u*u, + v*v, + w*w)); } + FI T magnitude() const { return (T)TERN(HAS_X_AXIS, sqrtf(NUM_AXIS_GANG(x*x, + y*y, + z*z, + i*i, + j*j, + k*k, + u*u, + v*v, + w*w)), 0); } // Pointer to the data as a simple array - FI operator T* () { return pos; } + FI operator T* () { return (T*)this; } // If any element is true then it's true - FI operator bool() { return NUM_AXIS_GANG(x, || y, || z, || i, || j, || k, || u, || v, || w); } + FI operator bool() { return 0 NUM_AXIS_GANG(|| x, || y, || z, || i, || j, || k, || u, || v, || w); } // Smallest element - FI T small() const { return _MIN(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w)); } + FI T small() const { return TERN(HAS_X_AXIS,_MIN(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w));,0;) } // Largest element - FI T large() const { return _MAX(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w)); } + FI T large() const { return TERN(HAS_X_AXIS,_MAX(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w));,0;) } // Explicit copy and copies with conversion FI XYZval copy() const { XYZval o = *this; return o; } @@ -634,10 +660,10 @@ struct XYZEval { T pos[LOGICAL_AXES]; }; // Reset all to 0 - FI void reset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; } + FI void reset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; } // Setters taking struct types and arrays - FI void set(const XYval pxy) { x = pxy.x; OPTCODE(HAS_Y_AXIS, y = pxy.y) } + FI void set(const XYval pxy) { OPTCODE(HAS_X_AXIS, x = pxy.x) OPTCODE(HAS_Y_AXIS, y = pxy.y) } FI void set(const XYZval pxyz) { set(NUM_AXIS_ELEM(pxyz)); } FI void set(const XYval pxy, const T pz) { set(pxy); TERN_(HAS_Z_AXIS, z = pz); } FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); } diff --git a/Marlin/src/feature/fwretract.cpp b/Marlin/src/feature/fwretract.cpp index 28355640d2..b4ef18a9b9 100644 --- a/Marlin/src/feature/fwretract.cpp +++ b/Marlin/src/feature/fwretract.cpp @@ -195,8 +195,6 @@ void FWRetract::retract(const bool retracting E_OPTARG(bool swapping/*=false*/)) //*/ } -//extern const char SP_Z_STR[]; - /** * M207: Set firmware retraction values * diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp index 2e5a5c5585..cc99f34c5b 100644 --- a/Marlin/src/feature/tmc_util.cpp +++ b/Marlin/src/feature/tmc_util.cpp @@ -773,8 +773,8 @@ } } - static void tmc_debug_loop(const TMC_debug_enum n, LOGICAL_AXIS_ARGS(const bool)) { - if (x) { + static void tmc_debug_loop(const TMC_debug_enum n OPTARGS_LOGICAL(const bool)) { + if (TERN0(HAS_X_AXIS, x)) { #if AXIS_IS_TMC(X) tmc_status(stepperX, n); #endif @@ -856,8 +856,8 @@ SERIAL_EOL(); } - static void drv_status_loop(const TMC_drv_status_enum n, LOGICAL_AXIS_ARGS(const bool)) { - if (x) { + static void drv_status_loop(const TMC_drv_status_enum n OPTARGS_LOGICAL(const bool)) { + if (TERN0(HAS_X_AXIS, x)) { #if AXIS_IS_TMC(X) tmc_parse_drv_status(stepperX, n); #endif @@ -944,8 +944,8 @@ */ void tmc_report_all(LOGICAL_AXIS_ARGS(const bool)) { - #define TMC_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); tmc_debug_loop(ITEM, LOGICAL_AXIS_ARGS()); }while(0) - #define DRV_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); drv_status_loop(ITEM, LOGICAL_AXIS_ARGS()); }while(0) + #define TMC_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); tmc_debug_loop(ITEM OPTARGS_LOGICAL()); }while(0) + #define DRV_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); drv_status_loop(ITEM OPTARGS_LOGICAL()); }while(0) TMC_REPORT("\t", TMC_CODES); #if HAS_DRIVER(TMC2209) @@ -1070,8 +1070,8 @@ } #endif - static void tmc_get_registers(TMC_get_registers_enum n, LOGICAL_AXIS_ARGS(const bool)) { - if (x) { + static void tmc_get_registers(TMC_get_registers_enum n OPTARGS_LOGICAL(const bool)) { + if (TERN0(HAS_X_AXIS, x)) { #if AXIS_IS_TMC(X) tmc_get_registers(stepperX, n); #endif @@ -1154,7 +1154,7 @@ } void tmc_get_registers(LOGICAL_AXIS_ARGS(bool)) { - #define _TMC_GET_REG(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); tmc_get_registers(ITEM, LOGICAL_AXIS_ARGS()); }while(0) + #define _TMC_GET_REG(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); tmc_get_registers(ITEM OPTARGS_LOGICAL()); }while(0) #define TMC_GET_REG(NAME, TABS) _TMC_GET_REG(STRINGIFY(NAME) TABS, TMC_GET_##NAME) _TMC_GET_REG("\t", TMC_AXIS_CODES); TMC_GET_REG(GCONF, "\t\t"); @@ -1236,7 +1236,7 @@ static bool test_connection(TMC &st) { void test_tmc_connection(LOGICAL_AXIS_ARGS(const bool)) { uint8_t axis_connection = 0; - if (x) { + if (TERN0(HAS_X_AXIS, x)) { #if AXIS_IS_TMC(X) axis_connection += test_connection(stepperX); #endif diff --git a/Marlin/src/feature/tmc_util.h b/Marlin/src/feature/tmc_util.h index fffa748f93..4ba3835906 100644 --- a/Marlin/src/feature/tmc_util.h +++ b/Marlin/src/feature/tmc_util.h @@ -348,7 +348,7 @@ void test_tmc_connection(LOGICAL_AXIS_DECL(const bool, true)); #if USE_SENSORLESS // Track enabled status of stealthChop and only re-enable where applicable - struct sensorless_t { bool NUM_AXIS_ARGS(), x2, y2, z2, z3, z4; }; + struct sensorless_t { bool NUM_AXIS_ARGS_() x2, y2, z2, z3, z4; }; #if ENABLED(IMPROVE_HOMING_RELIABILITY) extern millis_t sg_guard_period; diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 4c654c3509..be593d0d5b 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -206,20 +206,6 @@ void GcodeSuite::G28() { DEBUG_SECTION(log_G28, "G28", DEBUGGING(LEVELING)); if (DEBUGGING(LEVELING)) log_machine_info(); - TERN_(BD_SENSOR, bdl.config_state = 0); - - /** - * Set the laser power to false to stop the planner from processing the current power setting. - */ - #if ENABLED(LASER_FEATURE) - planner.laser_inline.status.isPowered = false; - #endif - - #if ENABLED(DUAL_X_CARRIAGE) - bool IDEX_saved_duplication_state = extruder_duplication_enabled; - DualXMode IDEX_saved_mode = dual_x_carriage_mode; - #endif - #if ENABLED(MARLIN_DEV_MODE) if (parser.seen_test('S')) { LOOP_NUM_AXES(a) set_axis_is_at_home((AxisEnum)a); @@ -230,12 +216,21 @@ void GcodeSuite::G28() { } #endif + /** + * Set the laser power to false to stop the planner from processing the current power setting. + */ + #if ENABLED(LASER_FEATURE) + planner.laser_inline.status.isPowered = false; + #endif + // Home (O)nly if position is unknown if (!axes_should_home() && parser.seen_test('O')) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("> homing not needed, skip"); return; } + TERN_(BD_SENSOR, bdl.config_state = 0); + #if ENABLED(FULL_REPORT_TO_HOST_FEATURE) const M_StateEnum old_grblstate = M_State_grbl; set_and_report_grblstate(M_HOMING); @@ -246,220 +241,322 @@ void GcodeSuite::G28() { planner.synchronize(); // Wait for planner moves to finish! - SET_SOFT_ENDSTOP_LOOSE(false); // Reset a leftover 'loose' motion state - - // Disable the leveling matrix before homing - #if CAN_SET_LEVELING_AFTER_G28 - const bool leveling_restore_state = parser.boolval('L', TERN1(RESTORE_LEVELING_AFTER_G28, planner.leveling_active)); - #endif - - // Cancel any prior G29 session - TERN_(PROBE_MANUALLY, g29_in_progress = false); - - // Disable leveling before homing - TERN_(HAS_LEVELING, set_bed_leveling_enabled(false)); - - // Reset to the XY plane - TERN_(CNC_WORKSPACE_PLANES, workspace_plane = PLANE_XY); - // Count this command as movement / activity reset_stepper_timeout(); - #define HAS_CURRENT_HOME(N) (defined(N##_CURRENT_HOME) && N##_CURRENT_HOME != N##_CURRENT) - #if HAS_CURRENT_HOME(X) || HAS_CURRENT_HOME(X2) || HAS_CURRENT_HOME(Y) || HAS_CURRENT_HOME(Y2) || (ENABLED(DELTA) && HAS_CURRENT_HOME(Z)) || HAS_CURRENT_HOME(I) || HAS_CURRENT_HOME(J) || HAS_CURRENT_HOME(K) || HAS_CURRENT_HOME(U) || HAS_CURRENT_HOME(V) || HAS_CURRENT_HOME(W) - #define HAS_HOMING_CURRENT 1 - #endif + #if NUM_AXES - #if HAS_HOMING_CURRENT - auto debug_current = [](FSTR_P const s, const int16_t a, const int16_t b) { - DEBUG_ECHOF(s); DEBUG_ECHOLNPGM(" current: ", a, " -> ", b); - }; - #if HAS_CURRENT_HOME(X) - const int16_t tmc_save_current_X = stepperX.getMilliamps(); - stepperX.rms_current(X_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_X), tmc_save_current_X, X_CURRENT_HOME); - #endif - #if HAS_CURRENT_HOME(X2) - const int16_t tmc_save_current_X2 = stepperX2.getMilliamps(); - stepperX2.rms_current(X2_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_X2), tmc_save_current_X2, X2_CURRENT_HOME); - #endif - #if HAS_CURRENT_HOME(Y) - const int16_t tmc_save_current_Y = stepperY.getMilliamps(); - stepperY.rms_current(Y_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_Y), tmc_save_current_Y, Y_CURRENT_HOME); - #endif - #if HAS_CURRENT_HOME(Y2) - const int16_t tmc_save_current_Y2 = stepperY2.getMilliamps(); - stepperY2.rms_current(Y2_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_Y2), tmc_save_current_Y2, Y2_CURRENT_HOME); - #endif - #if HAS_CURRENT_HOME(Z) && ENABLED(DELTA) - const int16_t tmc_save_current_Z = stepperZ.getMilliamps(); - stepperZ.rms_current(Z_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_Z), tmc_save_current_Z, Z_CURRENT_HOME); - #endif - #if HAS_CURRENT_HOME(I) - const int16_t tmc_save_current_I = stepperI.getMilliamps(); - stepperI.rms_current(I_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_I), tmc_save_current_I, I_CURRENT_HOME); - #endif - #if HAS_CURRENT_HOME(J) - const int16_t tmc_save_current_J = stepperJ.getMilliamps(); - stepperJ.rms_current(J_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_J), tmc_save_current_J, J_CURRENT_HOME); - #endif - #if HAS_CURRENT_HOME(K) - const int16_t tmc_save_current_K = stepperK.getMilliamps(); - stepperK.rms_current(K_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_K), tmc_save_current_K, K_CURRENT_HOME); - #endif - #if HAS_CURRENT_HOME(U) - const int16_t tmc_save_current_U = stepperU.getMilliamps(); - stepperU.rms_current(U_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_U), tmc_save_current_U, U_CURRENT_HOME); - #endif - #if HAS_CURRENT_HOME(V) - const int16_t tmc_save_current_V = stepperV.getMilliamps(); - stepperV.rms_current(V_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_V), tmc_save_current_V, V_CURRENT_HOME); - #endif - #if HAS_CURRENT_HOME(W) - const int16_t tmc_save_current_W = stepperW.getMilliamps(); - stepperW.rms_current(W_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_W), tmc_save_current_W, W_CURRENT_HOME); - #endif - #if SENSORLESS_STALLGUARD_DELAY - safe_delay(SENSORLESS_STALLGUARD_DELAY); // Short delay needed to settle - #endif - #endif // HAS_HOMING_CURRENT - - #if ENABLED(IMPROVE_HOMING_RELIABILITY) - motion_state_t saved_motion_state = begin_slow_homing(); - #endif - - // Always home with tool 0 active - #if HAS_MULTI_HOTEND - #if DISABLED(DELTA) || ENABLED(DELTA_HOME_TO_SAFE_ZONE) - const uint8_t old_tool_index = active_extruder; - #endif - // PARKING_EXTRUDER homing requires different handling of movement / solenoid activation, depending on the side of homing - #if ENABLED(PARKING_EXTRUDER) - const bool pe_final_change_must_unpark = parking_extruder_unpark_after_homing(old_tool_index, X_HOME_DIR + 1 == old_tool_index * 2); - #endif - tool_change(0, true); - #endif - - TERN_(HAS_DUPLICATION_MODE, set_duplication_enabled(false)); - - remember_feedrate_scaling_off(); - - endstops.enable(true); // Enable endstops for next homing move - - bool finalRaiseZ = false; - - #if ENABLED(DELTA) - - constexpr bool doZ = true; // for NANODLP_Z_SYNC if your DLP is on a DELTA - - home_delta(); - - TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(saved_motion_state)); - - #elif ENABLED(AXEL_TPARA) - - constexpr bool doZ = true; // for NANODLP_Z_SYNC if your DLP is on a TPARA - - home_TPARA(); - - #else - - #define _UNSAFE(A) (homeZ && TERN0(Z_SAFE_HOMING, axes_should_home(_BV(A##_AXIS)))) - - const bool homeZ = TERN0(HAS_Z_AXIS, parser.seen_test('Z')), - NUM_AXIS_LIST( // Other axes should be homed before Z safe-homing - needX = _UNSAFE(X), needY = _UNSAFE(Y), needZ = false, // UNUSED - needI = _UNSAFE(I), needJ = _UNSAFE(J), needK = _UNSAFE(K), - needU = _UNSAFE(U), needV = _UNSAFE(V), needW = _UNSAFE(W) - ), - NUM_AXIS_LIST( // Home each axis if needed or flagged - homeX = needX || parser.seen_test('X'), - homeY = needY || parser.seen_test('Y'), - homeZZ = homeZ, - homeI = needI || parser.seen_test(AXIS4_NAME), homeJ = needJ || parser.seen_test(AXIS5_NAME), - homeK = needK || parser.seen_test(AXIS6_NAME), homeU = needU || parser.seen_test(AXIS7_NAME), - homeV = needV || parser.seen_test(AXIS8_NAME), homeW = needW || parser.seen_test(AXIS9_NAME) - ), - home_all = NUM_AXIS_GANG( // Home-all if all or none are flagged - homeX == homeX, && homeY == homeX, && homeZ == homeX, - && homeI == homeX, && homeJ == homeX, && homeK == homeX, - && homeU == homeX, && homeV == homeX, && homeW == homeX - ), - NUM_AXIS_LIST( - doX = home_all || homeX, doY = home_all || homeY, doZ = home_all || homeZ, - doI = home_all || homeI, doJ = home_all || homeJ, doK = home_all || homeK, - doU = home_all || homeU, doV = home_all || homeV, doW = home_all || homeW - ); - - #if !HAS_Y_AXIS - constexpr bool doY = false; + #if ENABLED(DUAL_X_CARRIAGE) + bool IDEX_saved_duplication_state = extruder_duplication_enabled; + DualXMode IDEX_saved_mode = dual_x_carriage_mode; #endif - #if HAS_Z_AXIS + SET_SOFT_ENDSTOP_LOOSE(false); // Reset a leftover 'loose' motion state - UNUSED(needZ); UNUSED(homeZZ); + // Disable the leveling matrix before homing + #if CAN_SET_LEVELING_AFTER_G28 + const bool leveling_restore_state = parser.boolval('L', TERN1(RESTORE_LEVELING_AFTER_G28, planner.leveling_active)); + #endif - // Z may home first, e.g., when homing away from the bed. - // This is also permitted when homing with a Z endstop. - if (TERN0(HOME_Z_FIRST, doZ)) homeaxis(Z_AXIS); + // Cancel any prior G29 session + TERN_(PROBE_MANUALLY, g29_in_progress = false); - // 'R' to specify a specific raise. 'R0' indicates no raise, e.g., for recovery.resume - // When 'R0' is used, there should already be adequate clearance, e.g., from homing Z to max. - const bool seenR = parser.seenval('R'); + // Disable leveling before homing + TERN_(HAS_LEVELING, set_bed_leveling_enabled(false)); - // Use raise given by 'R' or Z_CLEARANCE_FOR_HOMING (above the probe trigger point) - float z_homing_height = seenR ? parser.value_linear_units() : Z_CLEARANCE_FOR_HOMING; + // Reset to the XY plane + TERN_(CNC_WORKSPACE_PLANES, workspace_plane = PLANE_XY); - // Check for any lateral motion that might require clearance - const bool may_skate = seenR || NUM_AXIS_GANG(doX, || doY, || TERN0(Z_SAFE_HOMING, doZ), || doI, || doJ, || doK, || doU, || doV, || doW); + #define HAS_CURRENT_HOME(N) (defined(N##_CURRENT_HOME) && N##_CURRENT_HOME != N##_CURRENT) + #if HAS_CURRENT_HOME(X) || HAS_CURRENT_HOME(X2) || HAS_CURRENT_HOME(Y) || HAS_CURRENT_HOME(Y2) || (ENABLED(DELTA) && HAS_CURRENT_HOME(Z)) || HAS_CURRENT_HOME(I) || HAS_CURRENT_HOME(J) || HAS_CURRENT_HOME(K) || HAS_CURRENT_HOME(U) || HAS_CURRENT_HOME(V) || HAS_CURRENT_HOME(W) + #define HAS_HOMING_CURRENT 1 + #endif - if (seenR && z_homing_height == 0) { - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("R0 = No Z raise"); - } - else { - bool with_probe = ENABLED(HOMING_Z_WITH_PROBE); - // Raise above the current Z (which should be synced in the planner) - // The "height" for Z is a coordinate. But if Z is not trusted/homed make it relative. - if (seenR || !TERN(HOME_AFTER_DEACTIVATE, axis_is_trusted, axis_was_homed)(Z_AXIS)) { - z_homing_height += current_position.z; - with_probe = false; + #if HAS_HOMING_CURRENT + auto debug_current = [](FSTR_P const s, const int16_t a, const int16_t b) { + DEBUG_ECHOF(s); DEBUG_ECHOLNPGM(" current: ", a, " -> ", b); + }; + #if HAS_CURRENT_HOME(X) + const int16_t tmc_save_current_X = stepperX.getMilliamps(); + stepperX.rms_current(X_CURRENT_HOME); + if (DEBUGGING(LEVELING)) debug_current(F(STR_X), tmc_save_current_X, X_CURRENT_HOME); + #endif + #if HAS_CURRENT_HOME(X2) + const int16_t tmc_save_current_X2 = stepperX2.getMilliamps(); + stepperX2.rms_current(X2_CURRENT_HOME); + if (DEBUGGING(LEVELING)) debug_current(F(STR_X2), tmc_save_current_X2, X2_CURRENT_HOME); + #endif + #if HAS_CURRENT_HOME(Y) + const int16_t tmc_save_current_Y = stepperY.getMilliamps(); + stepperY.rms_current(Y_CURRENT_HOME); + if (DEBUGGING(LEVELING)) debug_current(F(STR_Y), tmc_save_current_Y, Y_CURRENT_HOME); + #endif + #if HAS_CURRENT_HOME(Y2) + const int16_t tmc_save_current_Y2 = stepperY2.getMilliamps(); + stepperY2.rms_current(Y2_CURRENT_HOME); + if (DEBUGGING(LEVELING)) debug_current(F(STR_Y2), tmc_save_current_Y2, Y2_CURRENT_HOME); + #endif + #if HAS_CURRENT_HOME(Z) && ENABLED(DELTA) + const int16_t tmc_save_current_Z = stepperZ.getMilliamps(); + stepperZ.rms_current(Z_CURRENT_HOME); + if (DEBUGGING(LEVELING)) debug_current(F(STR_Z), tmc_save_current_Z, Z_CURRENT_HOME); + #endif + #if HAS_CURRENT_HOME(I) + const int16_t tmc_save_current_I = stepperI.getMilliamps(); + stepperI.rms_current(I_CURRENT_HOME); + if (DEBUGGING(LEVELING)) debug_current(F(STR_I), tmc_save_current_I, I_CURRENT_HOME); + #endif + #if HAS_CURRENT_HOME(J) + const int16_t tmc_save_current_J = stepperJ.getMilliamps(); + stepperJ.rms_current(J_CURRENT_HOME); + if (DEBUGGING(LEVELING)) debug_current(F(STR_J), tmc_save_current_J, J_CURRENT_HOME); + #endif + #if HAS_CURRENT_HOME(K) + const int16_t tmc_save_current_K = stepperK.getMilliamps(); + stepperK.rms_current(K_CURRENT_HOME); + if (DEBUGGING(LEVELING)) debug_current(F(STR_K), tmc_save_current_K, K_CURRENT_HOME); + #endif + #if HAS_CURRENT_HOME(U) + const int16_t tmc_save_current_U = stepperU.getMilliamps(); + stepperU.rms_current(U_CURRENT_HOME); + if (DEBUGGING(LEVELING)) debug_current(F(STR_U), tmc_save_current_U, U_CURRENT_HOME); + #endif + #if HAS_CURRENT_HOME(V) + const int16_t tmc_save_current_V = stepperV.getMilliamps(); + stepperV.rms_current(V_CURRENT_HOME); + if (DEBUGGING(LEVELING)) debug_current(F(STR_V), tmc_save_current_V, V_CURRENT_HOME); + #endif + #if HAS_CURRENT_HOME(W) + const int16_t tmc_save_current_W = stepperW.getMilliamps(); + stepperW.rms_current(W_CURRENT_HOME); + if (DEBUGGING(LEVELING)) debug_current(F(STR_W), tmc_save_current_W, W_CURRENT_HOME); + #endif + #if SENSORLESS_STALLGUARD_DELAY + safe_delay(SENSORLESS_STALLGUARD_DELAY); // Short delay needed to settle + #endif + #endif // HAS_HOMING_CURRENT + + #if ENABLED(IMPROVE_HOMING_RELIABILITY) + motion_state_t saved_motion_state = begin_slow_homing(); + #endif + + // Always home with tool 0 active + #if HAS_MULTI_HOTEND + #if DISABLED(DELTA) || ENABLED(DELTA_HOME_TO_SAFE_ZONE) + const uint8_t old_tool_index = active_extruder; + #endif + // PARKING_EXTRUDER homing requires different handling of movement / solenoid activation, depending on the side of homing + #if ENABLED(PARKING_EXTRUDER) + const bool pe_final_change_must_unpark = parking_extruder_unpark_after_homing(old_tool_index, X_HOME_DIR + 1 == old_tool_index * 2); + #endif + tool_change(0, true); + #endif + + TERN_(HAS_DUPLICATION_MODE, set_duplication_enabled(false)); + + remember_feedrate_scaling_off(); + + endstops.enable(true); // Enable endstops for next homing move + + bool finalRaiseZ = false; + + #if ENABLED(DELTA) + + constexpr bool doZ = true; // for NANODLP_Z_SYNC if your DLP is on a DELTA + + home_delta(); + + TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(saved_motion_state)); + + #elif ENABLED(AXEL_TPARA) + + constexpr bool doZ = true; // for NANODLP_Z_SYNC if your DLP is on a TPARA + + home_TPARA(); + + #else // !DELTA && !AXEL_TPARA + + #define _UNSAFE(A) (homeZ && TERN0(Z_SAFE_HOMING, axes_should_home(_BV(A##_AXIS)))) + + const bool homeZ = TERN0(HAS_Z_AXIS, parser.seen_test('Z')), + NUM_AXIS_LIST_( // Other axes should be homed before Z safe-homing + needX = _UNSAFE(X), needY = _UNSAFE(Y), needZ = false, // UNUSED + needI = _UNSAFE(I), needJ = _UNSAFE(J), needK = _UNSAFE(K), + needU = _UNSAFE(U), needV = _UNSAFE(V), needW = _UNSAFE(W) + ) + NUM_AXIS_LIST_( // Home each axis if needed or flagged + homeX = needX || parser.seen_test('X'), + homeY = needY || parser.seen_test('Y'), + homeZZ = homeZ, + homeI = needI || parser.seen_test(AXIS4_NAME), homeJ = needJ || parser.seen_test(AXIS5_NAME), + homeK = needK || parser.seen_test(AXIS6_NAME), homeU = needU || parser.seen_test(AXIS7_NAME), + homeV = needV || parser.seen_test(AXIS8_NAME), homeW = needW || parser.seen_test(AXIS9_NAME) + ) + home_all = NUM_AXIS_GANG_( // Home-all if all or none are flagged + homeX == homeX, && homeY == homeX, && homeZ == homeX, + && homeI == homeX, && homeJ == homeX, && homeK == homeX, + && homeU == homeX, && homeV == homeX, && homeW == homeX + ) + NUM_AXIS_LIST( + doX = home_all || homeX, doY = home_all || homeY, doZ = home_all || homeZ, + doI = home_all || homeI, doJ = home_all || homeJ, doK = home_all || homeK, + doU = home_all || homeU, doV = home_all || homeV, doW = home_all || homeW + ); + + #if !HAS_Y_AXIS + constexpr bool doY = false; + #endif + + #if HAS_Z_AXIS + + UNUSED(needZ); UNUSED(homeZZ); + + // Z may home first, e.g., when homing away from the bed. + // This is also permitted when homing with a Z endstop. + if (TERN0(HOME_Z_FIRST, doZ)) homeaxis(Z_AXIS); + + // 'R' to specify a specific raise. 'R0' indicates no raise, e.g., for recovery.resume + // When 'R0' is used, there should already be adequate clearance, e.g., from homing Z to max. + const bool seenR = parser.seenval('R'); + + // Use raise given by 'R' or Z_CLEARANCE_FOR_HOMING (above the probe trigger point) + float z_homing_height = seenR ? parser.value_linear_units() : Z_CLEARANCE_FOR_HOMING; + + // Check for any lateral motion that might require clearance + const bool may_skate = seenR NUM_AXIS_GANG(|| doX, || doY, || TERN0(Z_SAFE_HOMING, doZ), || doI, || doJ, || doK, || doU, || doV, || doW); + + if (seenR && z_homing_height == 0) { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("R0 = No Z raise"); + } + else { + bool with_probe = ENABLED(HOMING_Z_WITH_PROBE); + // Raise above the current Z (which should be synced in the planner) + // The "height" for Z is a coordinate. But if Z is not trusted/homed make it relative. + if (seenR || !TERN(HOME_AFTER_DEACTIVATE, axis_is_trusted, axis_was_homed)(Z_AXIS)) { + z_homing_height += current_position.z; + with_probe = false; + } + + if (may_skate) { + // Apply Z clearance before doing any lateral motion + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Raise Z before homing:"); + do_z_clearance(z_homing_height, with_probe); + } } - if (may_skate) { - // Apply Z clearance before doing any lateral motion - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Raise Z before homing:"); - do_z_clearance(z_homing_height, with_probe); + // Init BLTouch ahead of any lateral motion, even if not homing with the probe + TERN_(BLTOUCH, if (may_skate) bltouch.init()); + + #endif // HAS_Z_AXIS + + // Diagonal move first if both are homing + TERN_(QUICK_HOME, if (doX && doY) quick_home_xy()); + + #if HAS_Y_AXIS + // Home Y (before X) + if (ENABLED(HOME_Y_BEFORE_X) && (doY || TERN0(CODEPENDENT_XY_HOMING, doX))) + homeaxis(Y_AXIS); + #endif + + // Home X + #if HAS_X_AXIS + if (doX || (doY && ENABLED(CODEPENDENT_XY_HOMING) && DISABLED(HOME_Y_BEFORE_X))) { + + #if ENABLED(DUAL_X_CARRIAGE) + + // Always home the 2nd (right) extruder first + active_extruder = 1; + homeaxis(X_AXIS); + + // Remember this extruder's position for later tool change + inactive_extruder_x = current_position.x; + + // Home the 1st (left) extruder + active_extruder = 0; + homeaxis(X_AXIS); + + // Consider the active extruder to be in its "parked" position + idex_set_parked(); + + #else + + homeaxis(X_AXIS); + + #endif } - } + #endif // HAS_X_AXIS - // Init BLTouch ahead of any lateral motion, even if not homing with the probe - TERN_(BLTOUCH, if (may_skate) bltouch.init()); + #if BOTH(FOAMCUTTER_XYUV, HAS_I_AXIS) + // Home I (after X) + if (doI) homeaxis(I_AXIS); + #endif - #endif // HAS_Z_AXIS + #if HAS_Y_AXIS + // Home Y (after X) + if (DISABLED(HOME_Y_BEFORE_X) && doY) + homeaxis(Y_AXIS); + #endif - // Diagonal move first if both are homing - TERN_(QUICK_HOME, if (doX && doY) quick_home_xy()); + #if BOTH(FOAMCUTTER_XYUV, HAS_J_AXIS) + // Home J (after Y) + if (doJ) homeaxis(J_AXIS); + #endif + + TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(saved_motion_state)); + + #if ENABLED(FOAMCUTTER_XYUV) + + // Skip homing of unused Z axis for foamcutters + if (doZ) set_axis_is_at_home(Z_AXIS); + + #elif HAS_Z_AXIS + + // Home Z last if homing towards the bed + #if DISABLED(HOME_Z_FIRST) + if (doZ) { + #if EITHER(Z_MULTI_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) + stepper.set_all_z_lock(false); + stepper.set_separate_multi_axis(false); + #endif + + #if ENABLED(Z_SAFE_HOMING) + if (TERN1(POWER_LOSS_RECOVERY, !parser.seen_test('H'))) home_z_safely(); else homeaxis(Z_AXIS); + #else + homeaxis(Z_AXIS); + #endif + + #if EITHER(Z_HOME_TO_MIN, ALLOW_Z_AFTER_HOMING) + finalRaiseZ = true; + #endif + } + #endif + + SECONDARY_AXIS_CODE( + if (doI) homeaxis(I_AXIS), + if (doJ) homeaxis(J_AXIS), + if (doK) homeaxis(K_AXIS), + if (doU) homeaxis(U_AXIS), + if (doV) homeaxis(V_AXIS), + if (doW) homeaxis(W_AXIS) + ); + + #endif // HAS_Z_AXIS + + sync_plan_position(); - #if HAS_Y_AXIS - // Home Y (before X) - if (ENABLED(HOME_Y_BEFORE_X) && (doY || TERN0(CODEPENDENT_XY_HOMING, doX))) - homeaxis(Y_AXIS); #endif - // Home X - if (doX || (doY && ENABLED(CODEPENDENT_XY_HOMING) && DISABLED(HOME_Y_BEFORE_X))) { + /** + * Preserve DXC mode across a G28 for IDEX printers in DXC_DUPLICATION_MODE. + * This is important because it lets a user use the LCD Panel to set an IDEX Duplication mode, and + * then print a standard GCode file that contains a single print that does a G28 and has no other + * IDEX specific commands in it. + */ + #if ENABLED(DUAL_X_CARRIAGE) - #if ENABLED(DUAL_X_CARRIAGE) + if (idex_is_duplicating()) { + + TERN_(IMPROVE_HOMING_RELIABILITY, saved_motion_state = begin_slow_homing()); // Always home the 2nd (right) extruder first active_extruder = 1; @@ -472,171 +569,83 @@ void GcodeSuite::G28() { active_extruder = 0; homeaxis(X_AXIS); - // Consider the active extruder to be in its "parked" position + // Consider the active extruder to be parked idex_set_parked(); - #else + dual_x_carriage_mode = IDEX_saved_mode; + set_duplication_enabled(IDEX_saved_duplication_state); - homeaxis(X_AXIS); + TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(saved_motion_state)); + } + #endif // DUAL_X_CARRIAGE + + endstops.not_homing(); + + // Clear endstop state for polled stallGuard endstops + TERN_(SPI_ENDSTOPS, endstops.clear_endstop_state()); + + #if HAS_HOMING_CURRENT + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Restore driver current..."); + #if HAS_CURRENT_HOME(X) + stepperX.rms_current(tmc_save_current_X); #endif - } - - #if BOTH(FOAMCUTTER_XYUV, HAS_I_AXIS) - // Home I (after X) - if (doI) homeaxis(I_AXIS); - #endif - - #if HAS_Y_AXIS - // Home Y (after X) - if (DISABLED(HOME_Y_BEFORE_X) && doY) - homeaxis(Y_AXIS); - #endif - - #if BOTH(FOAMCUTTER_XYUV, HAS_J_AXIS) - // Home J (after Y) - if (doJ) homeaxis(J_AXIS); - #endif - - TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(saved_motion_state)); - - #if ENABLED(FOAMCUTTER_XYUV) - - // Skip homing of unused Z axis for foamcutters - if (doZ) set_axis_is_at_home(Z_AXIS); - - #elif HAS_Z_AXIS - - // Home Z last if homing towards the bed - #if DISABLED(HOME_Z_FIRST) - if (doZ) { - #if EITHER(Z_MULTI_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) - stepper.set_all_z_lock(false); - stepper.set_separate_multi_axis(false); - #endif - - #if ENABLED(Z_SAFE_HOMING) - if (TERN1(POWER_LOSS_RECOVERY, !parser.seen_test('H'))) home_z_safely(); else homeaxis(Z_AXIS); - #else - homeaxis(Z_AXIS); - #endif - - #if EITHER(Z_HOME_TO_MIN, ALLOW_Z_AFTER_HOMING) - finalRaiseZ = true; - #endif - } + #if HAS_CURRENT_HOME(X2) + stepperX2.rms_current(tmc_save_current_X2); #endif + #if HAS_CURRENT_HOME(Y) + stepperY.rms_current(tmc_save_current_Y); + #endif + #if HAS_CURRENT_HOME(Y2) + stepperY2.rms_current(tmc_save_current_Y2); + #endif + #if HAS_CURRENT_HOME(Z) && ENABLED(DELTA) + stepperZ.rms_current(tmc_save_current_Z); + #endif + #if HAS_CURRENT_HOME(I) + stepperI.rms_current(tmc_save_current_I); + #endif + #if HAS_CURRENT_HOME(J) + stepperJ.rms_current(tmc_save_current_J); + #endif + #if HAS_CURRENT_HOME(K) + stepperK.rms_current(tmc_save_current_K); + #endif + #if HAS_CURRENT_HOME(U) + stepperU.rms_current(tmc_save_current_U); + #endif + #if HAS_CURRENT_HOME(V) + stepperV.rms_current(tmc_save_current_V); + #endif + #if HAS_CURRENT_HOME(W) + stepperW.rms_current(tmc_save_current_W); + #endif + #if SENSORLESS_STALLGUARD_DELAY + safe_delay(SENSORLESS_STALLGUARD_DELAY); // Short delay needed to settle + #endif + #endif // HAS_HOMING_CURRENT - SECONDARY_AXIS_CODE( - if (doI) homeaxis(I_AXIS), - if (doJ) homeaxis(J_AXIS), - if (doK) homeaxis(K_AXIS), - if (doU) homeaxis(U_AXIS), - if (doV) homeaxis(V_AXIS), - if (doW) homeaxis(W_AXIS) - ); + // Move to a height where we can use the full xy-area + TERN_(DELTA_HOME_TO_SAFE_ZONE, do_blocking_move_to_z(delta_clip_start_height)); - #endif // HAS_Z_AXIS + // Move to the configured Z only if Z was homed to MIN, because machines that + // home to MAX historically expect 'G28 Z' to be safe to use at the end of a + // print, and do_move_after_z_homing is not very nuanced. + if (finalRaiseZ) do_move_after_z_homing(); - sync_plan_position(); + TERN_(CAN_SET_LEVELING_AFTER_G28, if (leveling_restore_state) set_bed_leveling_enabled()); - #endif - - /** - * Preserve DXC mode across a G28 for IDEX printers in DXC_DUPLICATION_MODE. - * This is important because it lets a user use the LCD Panel to set an IDEX Duplication mode, and - * then print a standard GCode file that contains a single print that does a G28 and has no other - * IDEX specific commands in it. - */ - #if ENABLED(DUAL_X_CARRIAGE) - - if (idex_is_duplicating()) { - - TERN_(IMPROVE_HOMING_RELIABILITY, saved_motion_state = begin_slow_homing()); - - // Always home the 2nd (right) extruder first - active_extruder = 1; - homeaxis(X_AXIS); - - // Remember this extruder's position for later tool change - inactive_extruder_x = current_position.x; - - // Home the 1st (left) extruder - active_extruder = 0; - homeaxis(X_AXIS); - - // Consider the active extruder to be parked - idex_set_parked(); - - dual_x_carriage_mode = IDEX_saved_mode; - set_duplication_enabled(IDEX_saved_duplication_state); - - TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(saved_motion_state)); - } - - #endif // DUAL_X_CARRIAGE - - endstops.not_homing(); - - // Clear endstop state for polled stallGuard endstops - TERN_(SPI_ENDSTOPS, endstops.clear_endstop_state()); - - #if HAS_HOMING_CURRENT - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Restore driver current..."); - #if HAS_CURRENT_HOME(X) - stepperX.rms_current(tmc_save_current_X); + // Restore the active tool after homing + #if HAS_MULTI_HOTEND && (DISABLED(DELTA) || ENABLED(DELTA_HOME_TO_SAFE_ZONE)) + tool_change(old_tool_index, TERN(PARKING_EXTRUDER, !pe_final_change_must_unpark, DISABLED(DUAL_X_CARRIAGE))); // Do move if one of these #endif - #if HAS_CURRENT_HOME(X2) - stepperX2.rms_current(tmc_save_current_X2); - #endif - #if HAS_CURRENT_HOME(Y) - stepperY.rms_current(tmc_save_current_Y); - #endif - #if HAS_CURRENT_HOME(Y2) - stepperY2.rms_current(tmc_save_current_Y2); - #endif - #if HAS_CURRENT_HOME(Z) && ENABLED(DELTA) - stepperZ.rms_current(tmc_save_current_Z); - #endif - #if HAS_CURRENT_HOME(I) - stepperI.rms_current(tmc_save_current_I); - #endif - #if HAS_CURRENT_HOME(J) - stepperJ.rms_current(tmc_save_current_J); - #endif - #if HAS_CURRENT_HOME(K) - stepperK.rms_current(tmc_save_current_K); - #endif - #if HAS_CURRENT_HOME(U) - stepperU.rms_current(tmc_save_current_U); - #endif - #if HAS_CURRENT_HOME(V) - stepperV.rms_current(tmc_save_current_V); - #endif - #if HAS_CURRENT_HOME(W) - stepperW.rms_current(tmc_save_current_W); - #endif - #if SENSORLESS_STALLGUARD_DELAY - safe_delay(SENSORLESS_STALLGUARD_DELAY); // Short delay needed to settle - #endif - #endif // HAS_HOMING_CURRENT - // Move to a height where we can use the full xy-area - TERN_(DELTA_HOME_TO_SAFE_ZONE, do_blocking_move_to_z(delta_clip_start_height)); + restore_feedrate_and_scaling(); - // Move to the configured Z only if Z was homed to MIN, because machines that - // home to MAX historically expect 'G28 Z' to be safe to use at the end of a - // print, and do_move_after_z_homing is not very nuanced. - if (finalRaiseZ) do_move_after_z_homing(); + if (ENABLED(NANODLP_Z_SYNC) && (ENABLED(NANODLP_ALL_AXIS) || TERN0(HAS_Z_AXIS, doZ))) + SERIAL_ECHOLNPGM(STR_Z_MOVE_COMP); - TERN_(CAN_SET_LEVELING_AFTER_G28, if (leveling_restore_state) set_bed_leveling_enabled()); - - // Restore the active tool after homing - #if HAS_MULTI_HOTEND && (DISABLED(DELTA) || ENABLED(DELTA_HOME_TO_SAFE_ZONE)) - tool_change(old_tool_index, TERN(PARKING_EXTRUDER, !pe_final_change_must_unpark, DISABLED(DUAL_X_CARRIAGE))); // Do move if one of these - #endif - - restore_feedrate_and_scaling(); + #endif // NUM_AXES ui.refresh(); @@ -645,9 +654,6 @@ void GcodeSuite::G28() { report_current_position(); - if (ENABLED(NANODLP_Z_SYNC) && (ENABLED(NANODLP_ALL_AXIS) || TERN0(HAS_Z_AXIS, doZ))) - SERIAL_ECHOLNPGM(STR_Z_MOVE_COMP); - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(old_grblstate)); } diff --git a/Marlin/src/gcode/calibrate/G425.cpp b/Marlin/src/gcode/calibrate/G425.cpp index e3f8913125..ef055498a9 100644 --- a/Marlin/src/gcode/calibrate/G425.cpp +++ b/Marlin/src/gcode/calibrate/G425.cpp @@ -70,7 +70,7 @@ #define CALIBRATION_MEASUREMENT_CERTAIN 0.5 // mm #endif -#if BOTH(CALIBRATION_MEASURE_LEFT, CALIBRATION_MEASURE_RIGHT) +#if ALL(HAS_X_AXIS, CALIBRATION_MEASURE_LEFT, CALIBRATION_MEASURE_RIGHT) #define HAS_X_CENTER 1 #endif #if ALL(HAS_Y_AXIS, CALIBRATION_MEASURE_FRONT, CALIBRATION_MEASURE_BACK) @@ -398,11 +398,13 @@ inline void probe_sides(measurements_t &m, const float uncertainty) { #if AXIS_CAN_CALIBRATE(Z) SERIAL_ECHOLNPGM(" Top: ", m.obj_side[TOP]); #endif - #if ENABLED(CALIBRATION_MEASURE_LEFT) - SERIAL_ECHOLNPGM(" Left: ", m.obj_side[LEFT]); - #endif - #if ENABLED(CALIBRATION_MEASURE_RIGHT) - SERIAL_ECHOLNPGM(" Right: ", m.obj_side[RIGHT]); + #if HAS_X_AXIS + #if ENABLED(CALIBRATION_MEASURE_LEFT) + SERIAL_ECHOLNPGM(" Left: ", m.obj_side[LEFT]); + #endif + #if ENABLED(CALIBRATION_MEASURE_RIGHT) + SERIAL_ECHOLNPGM(" Right: ", m.obj_side[RIGHT]); + #endif #endif #if HAS_Y_AXIS #if ENABLED(CALIBRATION_MEASURE_FRONT) diff --git a/Marlin/src/gcode/calibrate/M425.cpp b/Marlin/src/gcode/calibrate/M425.cpp index 0432b4c962..cd206ca489 100644 --- a/Marlin/src/gcode/calibrate/M425.cpp +++ b/Marlin/src/gcode/calibrate/M425.cpp @@ -112,17 +112,19 @@ void GcodeSuite::M425_report(const bool forReplay/*=true*/) { #ifdef BACKLASH_SMOOTHING_MM , PSTR(" S"), LINEAR_UNIT(backlash.get_smoothing_mm()) #endif - , LIST_N(DOUBLE(NUM_AXES), - SP_X_STR, LINEAR_UNIT(backlash.get_distance_mm(X_AXIS)), - SP_Y_STR, LINEAR_UNIT(backlash.get_distance_mm(Y_AXIS)), - SP_Z_STR, LINEAR_UNIT(backlash.get_distance_mm(Z_AXIS)), - SP_I_STR, I_AXIS_UNIT(backlash.get_distance_mm(I_AXIS)), - SP_J_STR, J_AXIS_UNIT(backlash.get_distance_mm(J_AXIS)), - SP_K_STR, K_AXIS_UNIT(backlash.get_distance_mm(K_AXIS)), - SP_U_STR, U_AXIS_UNIT(backlash.get_distance_mm(U_AXIS)), - SP_V_STR, V_AXIS_UNIT(backlash.get_distance_mm(V_AXIS)), - SP_W_STR, W_AXIS_UNIT(backlash.get_distance_mm(W_AXIS)) - ) + #if NUM_AXES + , LIST_N(DOUBLE(NUM_AXES), + SP_X_STR, LINEAR_UNIT(backlash.get_distance_mm(X_AXIS)), + SP_Y_STR, LINEAR_UNIT(backlash.get_distance_mm(Y_AXIS)), + SP_Z_STR, LINEAR_UNIT(backlash.get_distance_mm(Z_AXIS)), + SP_I_STR, I_AXIS_UNIT(backlash.get_distance_mm(I_AXIS)), + SP_J_STR, J_AXIS_UNIT(backlash.get_distance_mm(J_AXIS)), + SP_K_STR, K_AXIS_UNIT(backlash.get_distance_mm(K_AXIS)), + SP_U_STR, U_AXIS_UNIT(backlash.get_distance_mm(U_AXIS)), + SP_V_STR, V_AXIS_UNIT(backlash.get_distance_mm(V_AXIS)), + SP_W_STR, W_AXIS_UNIT(backlash.get_distance_mm(W_AXIS)) + ) + #endif ); } diff --git a/Marlin/src/gcode/config/M200-M205.cpp b/Marlin/src/gcode/config/M200-M205.cpp index cda3177d93..8383be6914 100644 --- a/Marlin/src/gcode/config/M200-M205.cpp +++ b/Marlin/src/gcode/config/M200-M205.cpp @@ -143,22 +143,30 @@ void GcodeSuite::M201() { void GcodeSuite::M201_report(const bool forReplay/*=true*/) { report_heading_etc(forReplay, F(STR_MAX_ACCELERATION)); - SERIAL_ECHOLNPGM_P( - LIST_N(DOUBLE(NUM_AXES), - PSTR(" M201 X"), LINEAR_UNIT(planner.settings.max_acceleration_mm_per_s2[X_AXIS]), - SP_Y_STR, LINEAR_UNIT(planner.settings.max_acceleration_mm_per_s2[Y_AXIS]), - SP_Z_STR, LINEAR_UNIT(planner.settings.max_acceleration_mm_per_s2[Z_AXIS]), - SP_I_STR, I_AXIS_UNIT(planner.settings.max_acceleration_mm_per_s2[I_AXIS]), - SP_J_STR, J_AXIS_UNIT(planner.settings.max_acceleration_mm_per_s2[J_AXIS]), - SP_K_STR, K_AXIS_UNIT(planner.settings.max_acceleration_mm_per_s2[K_AXIS]), - SP_U_STR, U_AXIS_UNIT(planner.settings.max_acceleration_mm_per_s2[U_AXIS]), - SP_V_STR, V_AXIS_UNIT(planner.settings.max_acceleration_mm_per_s2[V_AXIS]), - SP_W_STR, W_AXIS_UNIT(planner.settings.max_acceleration_mm_per_s2[W_AXIS]) - ) - #if HAS_EXTRUDERS && DISABLED(DISTINCT_E_FACTORS) - , SP_E_STR, VOLUMETRIC_UNIT(planner.settings.max_acceleration_mm_per_s2[E_AXIS]) - #endif - ); + #if NUM_AXES + SERIAL_ECHOPGM_P( + LIST_N(DOUBLE(NUM_AXES), + PSTR(" M201 X"), LINEAR_UNIT(planner.settings.max_acceleration_mm_per_s2[X_AXIS]), + SP_Y_STR, LINEAR_UNIT(planner.settings.max_acceleration_mm_per_s2[Y_AXIS]), + SP_Z_STR, LINEAR_UNIT(planner.settings.max_acceleration_mm_per_s2[Z_AXIS]), + SP_I_STR, I_AXIS_UNIT(planner.settings.max_acceleration_mm_per_s2[I_AXIS]), + SP_J_STR, J_AXIS_UNIT(planner.settings.max_acceleration_mm_per_s2[J_AXIS]), + SP_K_STR, K_AXIS_UNIT(planner.settings.max_acceleration_mm_per_s2[K_AXIS]), + SP_U_STR, U_AXIS_UNIT(planner.settings.max_acceleration_mm_per_s2[U_AXIS]), + SP_V_STR, V_AXIS_UNIT(planner.settings.max_acceleration_mm_per_s2[V_AXIS]), + SP_W_STR, W_AXIS_UNIT(planner.settings.max_acceleration_mm_per_s2[W_AXIS]) + ) + ); + #endif + + #if HAS_EXTRUDERS && DISABLED(DISTINCT_E_FACTORS) + SERIAL_ECHOPGM_P(SP_E_STR, VOLUMETRIC_UNIT(planner.settings.max_acceleration_mm_per_s2[E_AXIS])); + #endif + + #if NUM_AXES || (HAS_EXTRUDERS && DISABLED(DISTINCT_E_FACTORS)) + SERIAL_EOL(); + #endif + #if ENABLED(DISTINCT_E_FACTORS) LOOP_L_N(i, E_STEPPERS) { report_echo_start(forReplay); @@ -191,22 +199,30 @@ void GcodeSuite::M203() { void GcodeSuite::M203_report(const bool forReplay/*=true*/) { report_heading_etc(forReplay, F(STR_MAX_FEEDRATES)); - SERIAL_ECHOLNPGM_P( - LIST_N(DOUBLE(NUM_AXES), - PSTR(" M203 X"), LINEAR_UNIT(planner.settings.max_feedrate_mm_s[X_AXIS]), - SP_Y_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[Y_AXIS]), - SP_Z_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[Z_AXIS]), - SP_I_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[I_AXIS]), - SP_J_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[J_AXIS]), - SP_K_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[K_AXIS]), - SP_U_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[U_AXIS]), - SP_V_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[V_AXIS]), - SP_W_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[W_AXIS]) - ) - #if HAS_EXTRUDERS && DISABLED(DISTINCT_E_FACTORS) - , SP_E_STR, VOLUMETRIC_UNIT(planner.settings.max_feedrate_mm_s[E_AXIS]) - #endif - ); + #if NUM_AXES + SERIAL_ECHOPGM_P( + LIST_N(DOUBLE(NUM_AXES), + PSTR(" M203 X"), LINEAR_UNIT(planner.settings.max_feedrate_mm_s[X_AXIS]), + SP_Y_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[Y_AXIS]), + SP_Z_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[Z_AXIS]), + SP_I_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[I_AXIS]), + SP_J_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[J_AXIS]), + SP_K_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[K_AXIS]), + SP_U_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[U_AXIS]), + SP_V_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[V_AXIS]), + SP_W_STR, LINEAR_UNIT(planner.settings.max_feedrate_mm_s[W_AXIS]) + ) + ); + #endif + + #if HAS_EXTRUDERS && DISABLED(DISTINCT_E_FACTORS) + SERIAL_ECHOPGM_P(SP_E_STR, VOLUMETRIC_UNIT(planner.settings.max_feedrate_mm_s[E_AXIS])); + #endif + + #if NUM_AXES || (HAS_EXTRUDERS && DISABLED(DISTINCT_E_FACTORS)) + SERIAL_EOL(); + #endif + #if ENABLED(DISTINCT_E_FACTORS) LOOP_L_N(i, E_STEPPERS) { if (!forReplay) SERIAL_ECHO_START(); @@ -336,7 +352,7 @@ void GcodeSuite::M205_report(const bool forReplay/*=true*/) { #if HAS_JUNCTION_DEVIATION , PSTR(" J"), LINEAR_UNIT(planner.junction_deviation_mm) #endif - #if HAS_CLASSIC_JERK + #if HAS_CLASSIC_JERK && NUM_AXES , LIST_N(DOUBLE(NUM_AXES), SP_X_STR, LINEAR_UNIT(planner.max_jerk.x), SP_Y_STR, LINEAR_UNIT(planner.max_jerk.y), diff --git a/Marlin/src/gcode/config/M217.cpp b/Marlin/src/gcode/config/M217.cpp index b360739e21..908a19fae7 100644 --- a/Marlin/src/gcode/config/M217.cpp +++ b/Marlin/src/gcode/config/M217.cpp @@ -95,7 +95,9 @@ void GcodeSuite::M217() { #if ENABLED(TOOLCHANGE_PARK) if (parser.seenval('W')) { toolchange_settings.enable_park = parser.value_linear_units(); } - if (parser.seenval('X')) { const int16_t v = parser.value_linear_units(); toolchange_settings.change_point.x = constrain(v, X_MIN_POS, X_MAX_POS); } + #if HAS_X_AXIS + if (parser.seenval('X')) { const int16_t v = parser.value_linear_units(); toolchange_settings.change_point.x = constrain(v, X_MIN_POS, X_MAX_POS); } + #endif #if HAS_Y_AXIS if (parser.seenval('Y')) { const int16_t v = parser.value_linear_units(); toolchange_settings.change_point.y = constrain(v, Y_MIN_POS, Y_MAX_POS); } #endif @@ -183,25 +185,27 @@ void GcodeSuite::M217_report(const bool forReplay/*=true*/) { #endif #if ENABLED(TOOLCHANGE_PARK) - { SERIAL_ECHOPGM(" W", LINEAR_UNIT(toolchange_settings.enable_park)); - SERIAL_ECHOPGM_P( - SP_X_STR, LINEAR_UNIT(toolchange_settings.change_point.x) - #if HAS_Y_AXIS - , SP_Y_STR, LINEAR_UNIT(toolchange_settings.change_point.y) - #endif - #if SECONDARY_AXES >= 1 - , LIST_N(DOUBLE(SECONDARY_AXES) - , SP_I_STR, I_AXIS_UNIT(toolchange_settings.change_point.i) - , SP_J_STR, J_AXIS_UNIT(toolchange_settings.change_point.j) - , SP_K_STR, K_AXIS_UNIT(toolchange_settings.change_point.k) - , SP_C_STR, U_AXIS_UNIT(toolchange_settings.change_point.u) - , PSTR(" H"), V_AXIS_UNIT(toolchange_settings.change_point.v) - , PSTR(" O"), W_AXIS_UNIT(toolchange_settings.change_point.w) - ) - #endif - ); - } + #if NUM_AXES + { + SERIAL_ECHOPGM_P( + SP_X_STR, LINEAR_UNIT(toolchange_settings.change_point.x) + #if HAS_Y_AXIS + , SP_Y_STR, LINEAR_UNIT(toolchange_settings.change_point.y) + #endif + #if SECONDARY_AXES >= 1 + , LIST_N(DOUBLE(SECONDARY_AXES) + , SP_I_STR, I_AXIS_UNIT(toolchange_settings.change_point.i) + , SP_J_STR, J_AXIS_UNIT(toolchange_settings.change_point.j) + , SP_K_STR, K_AXIS_UNIT(toolchange_settings.change_point.k) + , SP_C_STR, U_AXIS_UNIT(toolchange_settings.change_point.u) + , PSTR(" H"), V_AXIS_UNIT(toolchange_settings.change_point.v) + , PSTR(" O"), W_AXIS_UNIT(toolchange_settings.change_point.w) + ) + #endif + ); + } + #endif #endif #if ENABLED(TOOLCHANGE_FS_PRIME_FIRST_USED) diff --git a/Marlin/src/gcode/config/M218.cpp b/Marlin/src/gcode/config/M218.cpp index c39447a28d..62295f5771 100644 --- a/Marlin/src/gcode/config/M218.cpp +++ b/Marlin/src/gcode/config/M218.cpp @@ -46,9 +46,15 @@ void GcodeSuite::M218() { const int8_t target_extruder = get_target_extruder_from_command(); if (target_extruder < 0) return; - if (parser.seenval('X')) hotend_offset[target_extruder].x = parser.value_linear_units(); - if (parser.seenval('Y')) hotend_offset[target_extruder].y = parser.value_linear_units(); - if (parser.seenval('Z')) hotend_offset[target_extruder].z = parser.value_linear_units(); + #if HAS_X_AXIS + if (parser.seenval('X')) hotend_offset[target_extruder].x = parser.value_linear_units(); + #endif + #if HAS_Y_AXIS + if (parser.seenval('Y')) hotend_offset[target_extruder].y = parser.value_linear_units(); + #endif + #if HAS_Z_AXIS + if (parser.seenval('Z')) hotend_offset[target_extruder].z = parser.value_linear_units(); + #endif #if ENABLED(DELTA) if (target_extruder == active_extruder) diff --git a/Marlin/src/gcode/config/M92.cpp b/Marlin/src/gcode/config/M92.cpp index c7610b83a9..888a7e5c21 100644 --- a/Marlin/src/gcode/config/M92.cpp +++ b/Marlin/src/gcode/config/M92.cpp @@ -92,21 +92,27 @@ void GcodeSuite::M92() { void GcodeSuite::M92_report(const bool forReplay/*=true*/, const int8_t e/*=-1*/) { report_heading_etc(forReplay, F(STR_STEPS_PER_UNIT)); - SERIAL_ECHOPGM_P(LIST_N(DOUBLE(NUM_AXES), - PSTR(" M92 X"), LINEAR_UNIT(planner.settings.axis_steps_per_mm[X_AXIS]), - SP_Y_STR, LINEAR_UNIT(planner.settings.axis_steps_per_mm[Y_AXIS]), - SP_Z_STR, LINEAR_UNIT(planner.settings.axis_steps_per_mm[Z_AXIS]), - SP_I_STR, I_AXIS_UNIT(planner.settings.axis_steps_per_mm[I_AXIS]), - SP_J_STR, J_AXIS_UNIT(planner.settings.axis_steps_per_mm[J_AXIS]), - SP_K_STR, K_AXIS_UNIT(planner.settings.axis_steps_per_mm[K_AXIS]), - SP_U_STR, U_AXIS_UNIT(planner.settings.axis_steps_per_mm[U_AXIS]), - SP_V_STR, V_AXIS_UNIT(planner.settings.axis_steps_per_mm[V_AXIS]), - SP_W_STR, W_AXIS_UNIT(planner.settings.axis_steps_per_mm[W_AXIS]) - )); + #if NUM_AXES + SERIAL_ECHOPGM_P(LIST_N(DOUBLE(NUM_AXES), + PSTR(" M92 X"), LINEAR_UNIT(planner.settings.axis_steps_per_mm[X_AXIS]), + SP_Y_STR, LINEAR_UNIT(planner.settings.axis_steps_per_mm[Y_AXIS]), + SP_Z_STR, LINEAR_UNIT(planner.settings.axis_steps_per_mm[Z_AXIS]), + SP_I_STR, I_AXIS_UNIT(planner.settings.axis_steps_per_mm[I_AXIS]), + SP_J_STR, J_AXIS_UNIT(planner.settings.axis_steps_per_mm[J_AXIS]), + SP_K_STR, K_AXIS_UNIT(planner.settings.axis_steps_per_mm[K_AXIS]), + SP_U_STR, U_AXIS_UNIT(planner.settings.axis_steps_per_mm[U_AXIS]), + SP_V_STR, V_AXIS_UNIT(planner.settings.axis_steps_per_mm[V_AXIS]), + SP_W_STR, W_AXIS_UNIT(planner.settings.axis_steps_per_mm[W_AXIS]) + )); + #endif + #if HAS_EXTRUDERS && DISABLED(DISTINCT_E_FACTORS) SERIAL_ECHOPGM_P(SP_E_STR, VOLUMETRIC_UNIT(planner.settings.axis_steps_per_mm[E_AXIS])); #endif - SERIAL_EOL(); + + #if NUM_AXES || (HAS_EXTRUDERS && DISABLED(DISTINCT_E_FACTORS)) + SERIAL_EOL(); + #endif #if ENABLED(DISTINCT_E_FACTORS) LOOP_L_N(i, E_STEPPERS) { diff --git a/Marlin/src/gcode/control/M17_M18_M84.cpp b/Marlin/src/gcode/control/M17_M18_M84.cpp index 053497c69c..1742d288b3 100644 --- a/Marlin/src/gcode/control/M17_M18_M84.cpp +++ b/Marlin/src/gcode/control/M17_M18_M84.cpp @@ -48,17 +48,19 @@ inline stepper_flags_t selected_axis_bits() { selected.bits = e_axis_mask; } #endif - selected.bits |= NUM_AXIS_GANG( - (parser.seen_test('X') << X_AXIS), - | (parser.seen_test('Y') << Y_AXIS), - | (parser.seen_test('Z') << Z_AXIS), - | (parser.seen_test(AXIS4_NAME) << I_AXIS), - | (parser.seen_test(AXIS5_NAME) << J_AXIS), - | (parser.seen_test(AXIS6_NAME) << K_AXIS), - | (parser.seen_test(AXIS7_NAME) << U_AXIS), - | (parser.seen_test(AXIS8_NAME) << V_AXIS), - | (parser.seen_test(AXIS9_NAME) << W_AXIS) - ); + #if NUM_AXES + selected.bits |= NUM_AXIS_GANG( + (parser.seen_test('X') << X_AXIS), + | (parser.seen_test('Y') << Y_AXIS), + | (parser.seen_test('Z') << Z_AXIS), + | (parser.seen_test(AXIS4_NAME) << I_AXIS), + | (parser.seen_test(AXIS5_NAME) << J_AXIS), + | (parser.seen_test(AXIS6_NAME) << K_AXIS), + | (parser.seen_test(AXIS7_NAME) << U_AXIS), + | (parser.seen_test(AXIS8_NAME) << V_AXIS), + | (parser.seen_test(AXIS9_NAME) << W_AXIS) + ); + #endif return selected; } diff --git a/Marlin/src/gcode/feature/pause/G60.cpp b/Marlin/src/gcode/feature/pause/G60.cpp index b32935b341..aa74a57596 100644 --- a/Marlin/src/gcode/feature/pause/G60.cpp +++ b/Marlin/src/gcode/feature/pause/G60.cpp @@ -50,16 +50,19 @@ void GcodeSuite::G60() { { const xyze_pos_t &pos = stored_position[slot]; DEBUG_ECHOPGM(STR_SAVED_POS " S", slot, " :"); - DEBUG_ECHOLNPGM_P( - LIST_N(DOUBLE(NUM_AXES), - SP_X_LBL, pos.x, SP_Y_LBL, pos.y, SP_Z_LBL, pos.z, - SP_I_LBL, pos.i, SP_J_LBL, pos.j, SP_K_LBL, pos.k, - SP_U_LBL, pos.u, SP_V_LBL, pos.v, SP_W_LBL, pos.w - ) - #if HAS_EXTRUDERS - , SP_E_LBL, pos.e - #endif - ); + #if NUM_AXES + DEBUG_ECHOPGM_P( + LIST_N(DOUBLE(NUM_AXES), + SP_X_LBL, pos.x, SP_Y_LBL, pos.y, SP_Z_LBL, pos.z, + SP_I_LBL, pos.i, SP_J_LBL, pos.j, SP_K_LBL, pos.k, + SP_U_LBL, pos.u, SP_V_LBL, pos.v, SP_W_LBL, pos.w + ) + ); + #endif + #if HAS_EXTRUDERS + DEBUG_ECHOPGM_P(SP_E_LBL, pos.e); + #endif + DEBUG_EOL(); } #endif } diff --git a/Marlin/src/gcode/feature/trinamic/M569.cpp b/Marlin/src/gcode/feature/trinamic/M569.cpp index e0aa182bf2..50ac5c7468 100644 --- a/Marlin/src/gcode/feature/trinamic/M569.cpp +++ b/Marlin/src/gcode/feature/trinamic/M569.cpp @@ -57,10 +57,12 @@ static void set_stealth_status(const bool enable, const int8_t eindex) { LOOP_LOGICAL_AXES(i) if (parser.seen(AXIS_CHAR(i))) { switch (i) { - case X_AXIS: - TERN_(X_HAS_STEALTHCHOP, if (index < 0 || index == 0) TMC_SET_STEALTH(X)); - TERN_(X2_HAS_STEALTHCHOP, if (index < 0 || index == 1) TMC_SET_STEALTH(X2)); - break; + #if HAS_X_AXIS + case X_AXIS: + TERN_(X_HAS_STEALTHCHOP, if (index < 0 || index == 0) TMC_SET_STEALTH(X)); + TERN_(X2_HAS_STEALTHCHOP, if (index < 0 || index == 1) TMC_SET_STEALTH(X2)); + break; + #endif #if HAS_Y_AXIS case Y_AXIS: @@ -198,13 +200,13 @@ void GcodeSuite::M569_report(const bool forReplay/*=true*/) { if (chop_x2 || chop_y2 || chop_z2) { say_M569(forReplay, F("I1")); - if (chop_x2) SERIAL_ECHOPGM_P(SP_X_STR); - #if HAS_Y_AXIS - if (chop_y2) SERIAL_ECHOPGM_P(SP_Y_STR); - #endif - #if HAS_Z_AXIS - if (chop_z2) SERIAL_ECHOPGM_P(SP_Z_STR); - #endif + NUM_AXIS_CODE( + if (chop_x2) SERIAL_ECHOPGM_P(SP_X_STR), + if (chop_y2) SERIAL_ECHOPGM_P(SP_Y_STR), + if (chop_z2) SERIAL_ECHOPGM_P(SP_Z_STR), + NOOP, NOOP, NOOP, + NOOP, NOOP, NOOP + ); SERIAL_EOL(); } diff --git a/Marlin/src/gcode/feature/trinamic/M911-M914.cpp b/Marlin/src/gcode/feature/trinamic/M911-M914.cpp index 0fbf1def67..fa1cc1227c 100644 --- a/Marlin/src/gcode/feature/trinamic/M911-M914.cpp +++ b/Marlin/src/gcode/feature/trinamic/M911-M914.cpp @@ -35,7 +35,7 @@ #define M91x_USE(ST) (AXIS_DRIVER_TYPE(ST, TMC2130) || AXIS_DRIVER_TYPE(ST, TMC2160) || AXIS_DRIVER_TYPE(ST, TMC2208) || AXIS_DRIVER_TYPE(ST, TMC2209) || AXIS_DRIVER_TYPE(ST, TMC2660) || AXIS_DRIVER_TYPE(ST, TMC5130) || AXIS_DRIVER_TYPE(ST, TMC5160)) #define M91x_USE_E(N) (E_STEPPERS > N && M91x_USE(E##N)) - #if M91x_USE(X) || M91x_USE(X2) + #if HAS_X_AXIS && (M91x_USE(X) || M91x_USE(X2)) #define M91x_SOME_X 1 #endif #if HAS_Y_AXIS && (M91x_USE(Y) || M91x_USE(Y2)) diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 8114cb4261..01266354ce 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -796,10 +796,14 @@ #define NUM_AXES 3 #elif defined(Y_DRIVER_TYPE) #define NUM_AXES 2 -#else +#elif defined(X_DRIVER_TYPE) #define NUM_AXES 1 +#else + #define NUM_AXES 0 +#endif +#if NUM_AXES >= 1 + #define HAS_X_AXIS 1 #endif -#define HAS_X_AXIS 1 #if NUM_AXES >= XY #define HAS_Y_AXIS 1 #endif @@ -825,6 +829,23 @@ #define HAS_W_AXIS 1 #endif +#if !HAS_X_AXIS + #undef ENDSTOPPULLUP_XMIN + #undef ENDSTOPPULLUP_XMAX + #undef X_MIN_ENDSTOP_INVERTING + #undef X_MAX_ENDSTOP_INVERTING + #undef X2_DRIVER_TYPE + #undef X_ENABLE_ON + #undef DISABLE_X + #undef INVERT_X_DIR + #undef X_HOME_DIR + #undef X_MIN_POS + #undef X_MAX_POS + #undef MANUAL_X_HOME_POS + #undef MIN_SOFTWARE_ENDSTOPS + #undef MAX_SOFTWARE_ENDSTOPS +#endif + #if !HAS_Y_AXIS #undef AVOID_OBSTACLES #undef ENDSTOPPULLUP_YMIN @@ -1318,10 +1339,12 @@ #endif // FILAMENT_SWITCH_AND_MOTION // Homing to Min or Max -#if X_HOME_DIR > 0 - #define X_HOME_TO_MAX 1 -#elif X_HOME_DIR < 0 - #define X_HOME_TO_MIN 1 +#if HAS_X_AXIS + #if X_HOME_DIR > 0 + #define X_HOME_TO_MAX 1 + #elif X_HOME_DIR < 0 + #define X_HOME_TO_MIN 1 + #endif #endif #if HAS_Y_AXIS #if Y_HOME_DIR > 0 diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 7ea12f0493..7880351c0d 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -94,8 +94,26 @@ #endif // Some options are disallowed without required axes +#if !HAS_X_AXIS + //#define LCD_SHOW_E_TOTAL + #define NO_WORKSPACE_OFFSETS + #undef AUTOTEMP + #undef CALIBRATION_MEASURE_LEFT + #undef CALIBRATION_MEASURE_RIGHT + #undef CALIBRATION_MEASURE_XMAX + #undef CALIBRATION_MEASURE_XMIN + #undef DISABLE_IDLE_X + #undef INPUT_SHAPING_X + #undef SAFE_BED_LEVELING_START_X + #undef SHAPING_BUFFER_X + #undef SHAPING_FREQ_X + #undef STEALTHCHOP_X +#endif + #if !HAS_Y_AXIS #undef ARC_SUPPORT + #undef CALIBRATION_MEASURE_BACK + #undef CALIBRATION_MEASURE_FRONT #undef CALIBRATION_MEASURE_YMAX #undef CALIBRATION_MEASURE_YMIN #undef DISABLE_IDLE_Y diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index b7ee00def8..17f2b909e6 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -105,7 +105,9 @@ #define HAS_ROTATIONAL_AXES 1 #endif -#define X_MAX_LENGTH (X_MAX_POS - (X_MIN_POS)) +#if HAS_X_AXIS + #define X_MAX_LENGTH (X_MAX_POS - (X_MIN_POS)) +#endif #if HAS_Y_AXIS #define Y_MAX_LENGTH (Y_MAX_POS - (Y_MIN_POS)) #endif @@ -134,7 +136,7 @@ #endif // Defined only if the sanity-check is bypassed -#ifndef X_BED_SIZE +#if HAS_X_AXIS && !defined(X_BED_SIZE) #define X_BED_SIZE X_MAX_LENGTH #endif #if HAS_Y_AXIS && !defined(Y_BED_SIZE) @@ -165,7 +167,9 @@ #endif // Define center values for future use -#define _X_HALF_BED ((X_BED_SIZE) / 2) +#if HAS_X_AXIS + #define _X_HALF_BED ((X_BED_SIZE) / 2) +#endif #if HAS_Y_AXIS #define _Y_HALF_BED ((Y_BED_SIZE) / 2) #endif @@ -188,7 +192,9 @@ #define _W_HALF_WMAX ((W_BED_SIZE) / 2) #endif -#define X_CENTER TERN(BED_CENTER_AT_0_0, 0, _X_HALF_BED) +#if HAS_X_AXIS + #define X_CENTER TERN(BED_CENTER_AT_0_0, 0, _X_HALF_BED) +#endif #if HAS_Y_AXIS #define Y_CENTER TERN(BED_CENTER_AT_0_0, 0, _Y_HALF_BED) #define XY_CENTER { X_CENTER, Y_CENTER } @@ -213,8 +219,10 @@ #endif // Get the linear boundaries of the bed -#define X_MIN_BED (X_CENTER - _X_HALF_BED) -#define X_MAX_BED (X_MIN_BED + X_BED_SIZE) +#if HAS_X_AXIS + #define X_MIN_BED (X_CENTER - _X_HALF_BED) + #define X_MAX_BED (X_MIN_BED + X_BED_SIZE) +#endif #if HAS_Y_AXIS #define Y_MIN_BED (Y_CENTER - _Y_HALF_BED) #define Y_MAX_BED (Y_MIN_BED + Y_BED_SIZE) @@ -292,14 +300,16 @@ /** * Set the home position based on settings or manual overrides */ -#ifdef MANUAL_X_HOME_POS - #define X_HOME_POS MANUAL_X_HOME_POS -#else - #define X_END_POS TERN(X_HOME_TO_MIN, X_MIN_POS, X_MAX_POS) - #if ENABLED(BED_CENTER_AT_0_0) - #define X_HOME_POS TERN(DELTA, 0, X_END_POS) +#if HAS_X_AXIS + #ifdef MANUAL_X_HOME_POS + #define X_HOME_POS MANUAL_X_HOME_POS #else - #define X_HOME_POS TERN(DELTA, X_MIN_POS + (X_BED_SIZE) * 0.5, X_END_POS) + #define X_END_POS TERN(X_HOME_TO_MIN, X_MIN_POS, X_MAX_POS) + #if ENABLED(BED_CENTER_AT_0_0) + #define X_HOME_POS TERN(DELTA, 0, X_END_POS) + #else + #define X_HOME_POS TERN(DELTA, X_MIN_POS + (X_BED_SIZE) * 0.5, X_END_POS) + #endif #endif #endif @@ -1021,30 +1031,32 @@ */ // Steppers -#if PIN_EXISTS(X_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(X)) - #define HAS_X_ENABLE 1 -#endif -#if PIN_EXISTS(X_DIR) - #define HAS_X_DIR 1 -#endif -#if PIN_EXISTS(X_STEP) - #define HAS_X_STEP 1 -#endif -#if PIN_EXISTS(X_MS1) - #define HAS_X_MS_PINS 1 -#endif +#if HAS_X_AXIS + #if PIN_EXISTS(X_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(X)) + #define HAS_X_ENABLE 1 + #endif + #if PIN_EXISTS(X_DIR) + #define HAS_X_DIR 1 + #endif + #if PIN_EXISTS(X_STEP) + #define HAS_X_STEP 1 + #endif + #if PIN_EXISTS(X_MS1) + #define HAS_X_MS_PINS 1 + #endif -#if PIN_EXISTS(X2_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(X2)) - #define HAS_X2_ENABLE 1 -#endif -#if PIN_EXISTS(X2_DIR) - #define HAS_X2_DIR 1 -#endif -#if PIN_EXISTS(X2_STEP) - #define HAS_X2_STEP 1 -#endif -#if PIN_EXISTS(X2_MS1) - #define HAS_X2_MS_PINS 1 + #if PIN_EXISTS(X2_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(X2)) + #define HAS_X2_ENABLE 1 + #endif + #if PIN_EXISTS(X2_DIR) + #define HAS_X2_DIR 1 + #endif + #if PIN_EXISTS(X2_STEP) + #define HAS_X2_STEP 1 + #endif + #if PIN_EXISTS(X2_MS1) + #define HAS_X2_MS_PINS 1 + #endif #endif /** diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index e495d7a115..c99297ad46 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -260,7 +260,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L * Validate bed size */ #if !defined(X_BED_SIZE) || !defined(Y_BED_SIZE) - #error "X_BED_SIZE and Y_BED_SIZE are now required!" + #error "X_BED_SIZE and Y_BED_SIZE are required!" #else #if HAS_X_AXIS static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS) are too narrow to contain X_BED_SIZE."); @@ -3372,9 +3372,11 @@ static_assert(COUNT(sanity_arr_3) >= LOGICAL_AXES, "DEFAULT_MAX_ACCELERATION re static_assert(COUNT(sanity_arr_3) <= DISTINCT_AXES, "DEFAULT_MAX_ACCELERATION has too many elements." _EXTRA_NOTE); static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive."); -constexpr float sanity_arr_4[] = HOMING_FEEDRATE_MM_M; -static_assert(COUNT(sanity_arr_4) == NUM_AXES, "HOMING_FEEDRATE_MM_M requires " _NUM_AXES_STR "elements (and no others)."); -static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); +#if NUM_AXES + constexpr float sanity_arr_4[] = HOMING_FEEDRATE_MM_M; + static_assert(COUNT(sanity_arr_4) == NUM_AXES, "HOMING_FEEDRATE_MM_M requires " _NUM_AXES_STR "elements (and no others)."); + static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); +#endif #ifdef MAX_ACCEL_EDIT_VALUES constexpr float sanity_arr_5[] = MAX_ACCEL_EDIT_VALUES; @@ -3571,7 +3573,7 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); #if ENABLED(DUAL_X_CARRIAGE) #error "DUAL_X_CARRIAGE requires both MIN_ and MAX_SOFTWARE_ENDSTOPS." #elif HAS_HOTEND_OFFSET - #error "MIN_ and MAX_SOFTWARE_ENDSTOPS are both required with offset hotends." + #error "Multi-hotends with offset requires both MIN_ and MAX_SOFTWARE_ENDSTOPS." #endif #endif diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index 36831767f3..a0cf5fe46b 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -975,7 +975,7 @@ void MarlinUI::draw_status_screen() { #else // !HAS_DUAL_MIXING - const bool show_e_total = TERN0(LCD_SHOW_E_TOTAL, printingIsActive()); + const bool show_e_total = TERN1(HAS_X_AXIS, TERN0(LCD_SHOW_E_TOTAL, printingIsActive())); if (show_e_total) { #if ENABLED(LCD_SHOW_E_TOTAL) @@ -986,10 +986,14 @@ void MarlinUI::draw_status_screen() { #endif } else { - const xy_pos_t lpos = current_position.asLogical(); - _draw_axis_value(X_AXIS, ftostr4sign(lpos.x), blink); - lcd_put_u8str(F(" ")); - _draw_axis_value(Y_AXIS, ftostr4sign(lpos.y), blink); + #if HAS_X_AXIS + const xy_pos_t lpos = current_position.asLogical(); + _draw_axis_value(X_AXIS, ftostr4sign(lpos.x), blink); + #endif + #if HAS_Y_AXIS + TERN_(HAS_X_AXIS, lcd_put_u8str(F(" "))); + _draw_axis_value(Y_AXIS, ftostr4sign(lpos.y), blink); + #endif } #endif // !HAS_DUAL_MIXING @@ -1065,8 +1069,10 @@ void MarlinUI::draw_status_screen() { // // Z Coordinate // - lcd_moveto(LCD_WIDTH - 9, 0); - _draw_axis_value(Z_AXIS, ftostr52sp(LOGICAL_Z_POSITION(current_position.z)), blink); + #if HAS_Z_AXIS + lcd_moveto(LCD_WIDTH - 9, 0); + _draw_axis_value(Z_AXIS, ftostr52sp(LOGICAL_Z_POSITION(current_position.z)), blink); + #endif #if HAS_LEVELING && (HAS_MULTI_HOTEND || !HAS_HEATED_BED) lcd_put_lchar(LCD_WIDTH - 1, 0, planner.leveling_active || blink ? '_' : ' '); diff --git a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp index 6090b13732..f7e9ff3e45 100644 --- a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp +++ b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp @@ -820,11 +820,17 @@ void MarlinUI::draw_status_screen() { // Line 1 - XYZ coordinates // - lcd_moveto(0, 0); - const xyz_pos_t lpos = current_position.asLogical(); - _draw_axis_value(X_AXIS, ftostr4sign(lpos.x), blink); lcd.write(' '); - _draw_axis_value(Y_AXIS, ftostr4sign(lpos.y), blink); lcd.write(' '); - _draw_axis_value(Z_AXIS, ftostr52sp(lpos.z), blink); + #if NUM_AXES + lcd_moveto(0, 0); + const xyz_pos_t lpos = current_position.asLogical(); + _draw_axis_value(X_AXIS, ftostr4sign(lpos.x), blink); + #if HAS_Y_AXIS + lcd.write(' '); _draw_axis_value(Y_AXIS, ftostr4sign(lpos.y), blink); + #endif + #if HAS_Z_AXIS + lcd.write(' '); _draw_axis_value(Z_AXIS, ftostr52sp(lpos.z), blink); + #endif + #endif #if HAS_LEVELING && !HAS_HEATED_BED lcd.write(planner.leveling_active || blink ? '_' : ' '); diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp index cb3515a694..7d1f090d1e 100644 --- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp +++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp @@ -510,20 +510,24 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const * Use the PAGE_CONTAINS macros to avoid pointless draw calls. */ void MarlinUI::draw_status_screen() { - constexpr int xystorage = TERN(INCH_MODE_SUPPORT, 8, 5); - static char xstring[TERN(LCD_SHOW_E_TOTAL, 12, xystorage)]; - #if HAS_Y_AXIS - static char ystring[xystorage]; - #endif - #if HAS_Z_AXIS - static char zstring[8]; + #if NUM_AXES + constexpr int xystorage = TERN(INCH_MODE_SUPPORT, 8, 5); + #if EITHER(HAS_X_AXIS, LCD_SHOW_E_TOTAL) + static char xstring[TERN(LCD_SHOW_E_TOTAL, 12, xystorage)]; + #endif + #if HAS_Y_AXIS + static char ystring[xystorage]; + #endif + #if HAS_Z_AXIS + static char zstring[8]; + #endif #endif #if ENABLED(FILAMENT_LCD_DISPLAY) static char wstring[5], mstring[4]; #endif - const bool show_e_total = TERN0(LCD_SHOW_E_TOTAL, printingIsActive()); + const bool show_e_total = TERN1(HAS_X_AXIS, TERN0(LCD_SHOW_E_TOTAL, printingIsActive())); #if HAS_PRINT_PROGRESS static u8g_uint_t progress_bar_solid_width = 0; @@ -544,10 +548,9 @@ void MarlinUI::draw_status_screen() { draw_bits = new_bits; #endif - const xyz_pos_t lpos = current_position.asLogical(); - const bool is_inch = parser.using_inch_units(); - #if HAS_Z_AXIS - strcpy(zstring, is_inch ? ftostr42_52(LINEAR_UNIT(lpos.z)) : ftostr52sp(lpos.z)); + #if NUM_AXES + const xyz_pos_t lpos = current_position.asLogical(); + const bool is_inch = parser.using_inch_units(); #endif if (show_e_total) { @@ -557,10 +560,12 @@ void MarlinUI::draw_status_screen() { #endif } else { - strcpy(xstring, is_inch ? ftostr53_63(LINEAR_UNIT(lpos.x)) : ftostr4sign(lpos.x)); + TERN_(HAS_X_AXIS, strcpy(xstring, is_inch ? ftostr53_63(LINEAR_UNIT(lpos.x)) : ftostr4sign(lpos.x))); TERN_(HAS_Y_AXIS, strcpy(ystring, is_inch ? ftostr53_63(LINEAR_UNIT(lpos.y)) : ftostr4sign(lpos.y))); } + TERN_(HAS_Z_AXIS, strcpy(zstring, is_inch ? ftostr42_52(LINEAR_UNIT(lpos.z)) : ftostr52sp(lpos.z))); + #if ENABLED(FILAMENT_LCD_DISPLAY) strcpy(wstring, ftostr12ns(filwidth.measured_mm)); strcpy(mstring, i16tostr3rj(planner.volumetric_percent(parser.volumetric_enabled))); @@ -839,15 +844,13 @@ void MarlinUI::draw_status_screen() { #endif } else { - _draw_axis_value(X_AXIS, xstring, blink); + TERN_(HAS_X_AXIS, _draw_axis_value(X_AXIS, xstring, blink)); TERN_(HAS_Y_AXIS, _draw_axis_value(Y_AXIS, ystring, blink)); } #endif - #if HAS_Z_AXIS - _draw_axis_value(Z_AXIS, zstring, blink); - #endif + TERN_(HAS_Z_AXIS, _draw_axis_value(Z_AXIS, zstring, blink)); #if NONE(XYZ_NO_FRAME, XYZ_HOLLOW_FRAME) u8g.setColorIndex(1); // black on white diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index c4098bdb49..e7f15792f3 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -2365,14 +2365,16 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item else Draw_Menu(Motion, MOTION_SPEED); break; - case SPEED_X: - if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeedX, F("X Axis")); - Draw_Float(planner.settings.max_feedrate_mm_s[X_AXIS], row, false, 1); - } - else - Modify_Value(planner.settings.max_feedrate_mm_s[X_AXIS], 0, default_max_feedrate[X_AXIS] * 2, 1); - break; + #if HAS_X_AXIS + case SPEED_X: + if (draw) { + Draw_Menu_Item(row, ICON_MaxSpeedX, F("X Axis")); + Draw_Float(planner.settings.max_feedrate_mm_s[X_AXIS], row, false, 1); + } + else + Modify_Value(planner.settings.max_feedrate_mm_s[X_AXIS], 0, default_max_feedrate[X_AXIS] * 2, 1); + break; + #endif #if HAS_Y_AXIS case SPEED_Y: diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp index 70c7c2d8f0..5cfeb6488f 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp @@ -308,14 +308,14 @@ void MarlinUI::draw_status_screen() { // Axis values const xyz_pos_t lpos = current_position.asLogical(); - const bool show_e_total = TERN0(LCD_SHOW_E_TOTAL, printingIsActive()); UNUSED(show_e_total); + const bool show_e_total = TERN1(HAS_X_AXIS, TERN0(LCD_SHOW_E_TOTAL, printingIsActive())); constexpr int16_t cpy = TERN(DWIN_MARLINUI_PORTRAIT, 195, 117); if (show_e_total) { TERN_(LCD_SHOW_E_TOTAL, _draw_e_value(e_move_accumulator, TERN(DWIN_MARLINUI_PORTRAIT, 6, 75), cpy)); } else { - _draw_axis_value(X_AXIS, ftostr4sign(lpos.x), blink, TERN(DWIN_MARLINUI_PORTRAIT, 6, 75), cpy); + TERN_(HAS_X_AXIS, _draw_axis_value(X_AXIS, ftostr4sign(lpos.x), blink, TERN(DWIN_MARLINUI_PORTRAIT, 6, 75), cpy)); TERN_(HAS_Y_AXIS, _draw_axis_value(Y_AXIS, ftostr4sign(lpos.y), blink, TERN(DWIN_MARLINUI_PORTRAIT, 95, 184), cpy)); } TERN_(HAS_Z_AXIS, _draw_axis_value(Z_AXIS, ftostr52sp(lpos.z), blink, TERN(DWIN_MARLINUI_PORTRAIT, 165, 300), cpy)); diff --git a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp index 0c76454d74..bdfea5d147 100644 --- a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp @@ -162,10 +162,12 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { switch (var.VP) { default: return; - case VP_MOVE_X: - axiscode = 'X'; - if (!ExtUI::canMove(ExtUI::axis_t::X)) goto cannotmove; - break; + #if HAS_X_AXIS + case VP_MOVE_X: + axiscode = 'X'; + if (!ExtUI::canMove(ExtUI::axis_t::X)) goto cannotmove; + break; + #endif #if HAS_Y_AXIS case VP_MOVE_Y: diff --git a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp index 83658cc8c0..e37718e0a7 100644 --- a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp @@ -162,10 +162,12 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { switch (var.VP) { default: return; - case VP_MOVE_X: - axiscode = 'X'; - if (!ExtUI::canMove(ExtUI::axis_t::X)) goto cannotmove; - break; + #if HAS_X_AXIS + case VP_MOVE_X: + axiscode = 'X'; + if (!ExtUI::canMove(ExtUI::axis_t::X)) goto cannotmove; + break; + #endif #if HAS_Y_AXIS case VP_MOVE_Y: diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp index 8cddcb074e..c06971fb10 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp @@ -743,10 +743,12 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { switch (var.VP) { // switch X Y Z or Home default: return; - case VP_MOVE_X: - axiscode = 'X'; - if (!ExtUI::canMove(ExtUI::axis_t::X)) goto cannotmove; - break; + #if HAS_X_AXIS + case VP_MOVE_X: + axiscode = 'X'; + if (!ExtUI::canMove(ExtUI::axis_t::X)) goto cannotmove; + break; + #endif #if HAS_Y_AXIS case VP_MOVE_Y: @@ -773,10 +775,12 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { movevalue = 0; // ignore value sent from display, this VP is _ONLY_ for homing. break; - case VP_X_HOME: - axiscode = 'X'; - movevalue = 0; - break; + #if HAS_X_AXIS + case VP_X_HOME: + axiscode = 'X'; + movevalue = 0; + break; + #endif #if HAS_Y_AXIS case VP_Y_HOME: diff --git a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp index 6921cdc737..c274d7b431 100644 --- a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp @@ -162,10 +162,12 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { switch (var.VP) { default: return; - case VP_MOVE_X: - axiscode = 'X'; - if (!ExtUI::canMove(ExtUI::axis_t::X)) goto cannotmove; - break; + #if HAS_X_AXIS + case VP_MOVE_X: + axiscode = 'X'; + if (!ExtUI::canMove(ExtUI::axis_t::X)) goto cannotmove; + break; + #endif #if HAS_Y_AXIS case VP_MOVE_Y: diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.cpp index c15ff1173f..c08935f3bc 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.cpp @@ -77,8 +77,10 @@ bool BaseMoveAxisScreen::onTouchHeld(const uint8_t tag) { #define UI_DECREMENT_AXIS(axis) setManualFeedrate(axis, increment); UI_DECREMENT(AxisPosition_mm, axis); const float increment = getIncrement(); switch (tag) { - case 2: UI_DECREMENT_AXIS(X); break; - case 3: UI_INCREMENT_AXIS(X); break; + #if HAS_X_AXIS + case 2: UI_DECREMENT_AXIS(X); break; + case 3: UI_INCREMENT_AXIS(X); break; + #endif #if HAS_EXTRUDERS // For extruders, also update relative distances. case 8: UI_DECREMENT_AXIS(E0); mydata.e_rel[0] -= increment; break; diff --git a/Marlin/src/lcd/extui/mks_ui/draw_acceleration_settings.cpp b/Marlin/src/lcd/extui/mks_ui/draw_acceleration_settings.cpp index ac7d6d3dfb..48455e7e36 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_acceleration_settings.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_acceleration_settings.cpp @@ -124,8 +124,10 @@ void lv_draw_acceleration_settings() { lv_screen_menu_item_1_edit(scr, machine_menu.TravelAcceleration, PARA_UI_POS_X, y, event_handler, ID_ACCE_TRAVEL, 2, public_buf_l); y += PARA_UI_POS_Y; - itoa(planner.settings.max_acceleration_mm_per_s2[X_AXIS], public_buf_l, 10); - lv_screen_menu_item_1_edit(scr, machine_menu.X_Acceleration, PARA_UI_POS_X, y, event_handler, ID_ACCE_X, 3, public_buf_l); + #if HAS_X_AXIS + itoa(planner.settings.max_acceleration_mm_per_s2[X_AXIS], public_buf_l, 10); + lv_screen_menu_item_1_edit(scr, machine_menu.X_Acceleration, PARA_UI_POS_X, y, event_handler, ID_ACCE_X, 3, public_buf_l); + #endif lv_big_button_create(scr, "F:/bmp_back70x40.bin", machine_menu.next, PARA_UI_TURN_PAGE_POS_X, PARA_UI_TURN_PAGE_POS_Y, event_handler, ID_ACCE_DOWN, true); } diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp index e021771b13..6576290496 100644 --- a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp +++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp @@ -194,7 +194,9 @@ void mks_hardware_test() { if (millis() % 2000 < 1000) { thermalManager.fan_speed[0] = 255; - WRITE(X_DIR_PIN, LOW); + #if HAS_X_AXIS + WRITE(X_DIR_PIN, LOW); + #endif #if HAS_Y_AXIS WRITE(Y_DIR_PIN, LOW); #endif @@ -219,7 +221,9 @@ } else { thermalManager.fan_speed[0] = 0; - WRITE(X_DIR_PIN, HIGH); + #if HAS_X_AXIS + WRITE(X_DIR_PIN, HIGH); + #endif #if HAS_Y_AXIS WRITE(Y_DIR_PIN, HIGH); #endif diff --git a/Marlin/src/lcd/extui/ui_api.cpp b/Marlin/src/lcd/extui/ui_api.cpp index a742a82a5b..fb77be94af 100644 --- a/Marlin/src/lcd/extui/ui_api.cpp +++ b/Marlin/src/lcd/extui/ui_api.cpp @@ -375,7 +375,7 @@ namespace ExtUI { bool canMove(const axis_t axis) { switch (axis) { #if IS_KINEMATIC || ENABLED(NO_MOTION_BEFORE_HOMING) - case X: return !axis_should_home(X_AXIS); + OPTCODE(HAS_X_AXIS, case X: return !axis_should_home(X_AXIS)) OPTCODE(HAS_Y_AXIS, case Y: return !axis_should_home(Y_AXIS)) OPTCODE(HAS_Z_AXIS, case Z: return !axis_should_home(Z_AXIS)) #else @@ -773,7 +773,9 @@ namespace ExtUI { bool babystepAxis_steps(const int16_t steps, const axis_t axis) { switch (axis) { #if ENABLED(BABYSTEP_XY) - case X: babystep.add_steps(X_AXIS, steps); break; + #if HAS_X_AXIS + case X: babystep.add_steps(X_AXIS, steps); break; + #endif #if HAS_Y_AXIS case Y: babystep.add_steps(Y_AXIS, steps); break; #endif @@ -818,7 +820,7 @@ namespace ExtUI { if (e != active_extruder) hotend_offset[e][axis] += mm; - normalizeNozzleOffset(X); + TERN_(HAS_X_AXIS, normalizeNozzleOffset(X)); TERN_(HAS_Y_AXIS, normalizeNozzleOffset(Y)); TERN_(HAS_Z_AXIS, normalizeNozzleOffset(Z)); } diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index ec929753ae..638a133184 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -506,7 +506,7 @@ void MarlinUI::init() { ui.manual_move.menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP; ui.encoderPosition = dir; switch (axis) { - case X_AXIS: + TERN_(HAS_X_AXIS, case X_AXIS:) TERN_(HAS_Y_AXIS, case Y_AXIS:) TERN_(HAS_Z_AXIS, case Z_AXIS:) lcd_move_axis(axis); diff --git a/Marlin/src/lcd/menu/menu_advanced.cpp b/Marlin/src/lcd/menu/menu_advanced.cpp index 719838f6be..0be23be71a 100644 --- a/Marlin/src/lcd/menu/menu_advanced.cpp +++ b/Marlin/src/lcd/menu/menu_advanced.cpp @@ -475,9 +475,23 @@ void menu_backlash(); // M201 / M204 Accelerations void menu_advanced_acceleration() { - float max_accel = planner.settings.max_acceleration_mm_per_s2[A_AXIS]; - TERN_(HAS_Y_AXIS, NOLESS(max_accel, planner.settings.max_acceleration_mm_per_s2[B_AXIS])); - TERN_(HAS_Z_AXIS, NOLESS(max_accel, planner.settings.max_acceleration_mm_per_s2[C_AXIS])); + float max_accel = ( + #if NUM_AXES + _MAX(NUM_AXIS_LIST( + planner.settings.max_acceleration_mm_per_s2[A_AXIS], + planner.settings.max_acceleration_mm_per_s2[B_AXIS], + planner.settings.max_acceleration_mm_per_s2[C_AXIS], + planner.settings.max_acceleration_mm_per_s2[I_AXIS], + planner.settings.max_acceleration_mm_per_s2[J_AXIS], + planner.settings.max_acceleration_mm_per_s2[K_AXIS], + planner.settings.max_acceleration_mm_per_s2[U_AXIS], + planner.settings.max_acceleration_mm_per_s2[V_AXIS], + planner.settings.max_acceleration_mm_per_s2[W_AXIS] + )) + #else + 0 + #endif + ); // M201 settings constexpr xyze_ulong_t max_accel_edit = diff --git a/Marlin/src/lcd/menu/menu_backlash.cpp b/Marlin/src/lcd/menu/menu_backlash.cpp index 2b9404b0f6..1f3856918f 100644 --- a/Marlin/src/lcd/menu/menu_backlash.cpp +++ b/Marlin/src/lcd/menu/menu_backlash.cpp @@ -50,7 +50,9 @@ void menu_backlash() { EDIT_ITEM_FAST_N(float43, _AXIS(N), MSG_BACKLASH_N, &editable.decimal, 0.0f, 9.9f, []{ backlash.set_distance_mm(_AXIS(N), editable.decimal); }); \ } while (0); - if (_CAN_CALI(A)) EDIT_BACKLASH_DISTANCE(A); + #if HAS_X_AXIS && _CAN_CALI(A) + EDIT_BACKLASH_DISTANCE(A); + #endif #if HAS_Y_AXIS && _CAN_CALI(B) EDIT_BACKLASH_DISTANCE(B); #endif diff --git a/Marlin/src/lcd/menu/menu_motion.cpp b/Marlin/src/lcd/menu/menu_motion.cpp index 4c0b1e55a8..8caa1e5264 100644 --- a/Marlin/src/lcd/menu/menu_motion.cpp +++ b/Marlin/src/lcd/menu/menu_motion.cpp @@ -28,7 +28,7 @@ #if HAS_MARLINUI_MENU -#define HAS_LARGE_AREA ((X_BED_SIZE) >= 1000 || TERN0(HAS_Y_AXIS, (Y_BED_SIZE) >= 1000) || TERN0(HAS_Z_AXIS, (Z_MAX_POS) >= 1000)) +#define HAS_LARGE_AREA (TERN0(HAS_X_AXIS, (X_BED_SIZE) >= 1000) || TERN0(HAS_Y_AXIS, (Y_BED_SIZE) >= 1000) || TERN0(HAS_Z_AXIS, (Z_MAX_POS) >= 1000)) #if ENABLED(LARGE_MOVE_ITEMS) #define HAS_LARGE_MOVES true #elif ENABLED(SLIM_LCD_MENUS) @@ -214,7 +214,9 @@ void menu_move() { // Move submenu for each axis if (NONE(IS_KINEMATIC, NO_MOTION_BEFORE_HOMING) || all_axes_homed()) { if (TERN1(DELTA, current_position.z <= delta_clip_start_height)) { - SUBMENU_N(X_AXIS, MSG_MOVE_N, []{ _menu_move_distance(X_AXIS, []{ lcd_move_axis(X_AXIS); }); }); + #if HAS_X_AXIS + SUBMENU_N(X_AXIS, MSG_MOVE_N, []{ _menu_move_distance(X_AXIS, []{ lcd_move_axis(X_AXIS); }); }); + #endif #if HAS_Y_AXIS SUBMENU_N(Y_AXIS, MSG_MOVE_N, []{ _menu_move_distance(Y_AXIS, []{ lcd_move_axis(Y_AXIS); }); }); #endif diff --git a/Marlin/src/libs/vector_3.h b/Marlin/src/libs/vector_3.h index 58bdb43c7b..ab719c6a7f 100644 --- a/Marlin/src/libs/vector_3.h +++ b/Marlin/src/libs/vector_3.h @@ -50,9 +50,9 @@ struct vector_3 { float pos[3]; }; vector_3(const_float_t _x, const_float_t _y, const_float_t _z) : x(_x), y(_y), z(_z) {} - vector_3(const xy_float_t &in) { x = in.x; TERN_(HAS_Y_AXIS, y = in.y); } - vector_3(const xyz_float_t &in) { x = in.x; TERN_(HAS_Y_AXIS, y = in.y); TERN_(HAS_Z_AXIS, z = in.z); } - vector_3(const xyze_float_t &in) { x = in.x; TERN_(HAS_Y_AXIS, y = in.y); TERN_(HAS_Z_AXIS, z = in.z); } + vector_3(const xy_float_t &in) { TERN_(HAS_X_AXIS, x = in.x); TERN_(HAS_Y_AXIS, y = in.y); } + vector_3(const xyz_float_t &in) { TERN_(HAS_X_AXIS, x = in.x); TERN_(HAS_Y_AXIS, y = in.y); TERN_(HAS_Z_AXIS, z = in.z); } + vector_3(const xyze_float_t &in) { TERN_(HAS_X_AXIS, x = in.x); TERN_(HAS_Y_AXIS, y = in.y); TERN_(HAS_Z_AXIS, z = in.z); } vector_3() { x = y = z = 0; } // Factory method @@ -75,8 +75,8 @@ struct vector_3 { vector_3 operator-(const vector_3 &v) { return vector_3(x - v.x, y - v.y, z - v.z); } vector_3 operator*(const float &v) { return vector_3(x * v, y * v, z * v); } - operator xy_float_t() { return xy_float_t({ x OPTARG(HAS_Y_AXIS, y) }); } - operator xyz_float_t() { return xyz_float_t({ x OPTARG(HAS_Y_AXIS, y) OPTARG(HAS_Z_AXIS, z) }); } + operator xy_float_t() { return xy_float_t({ TERN_(HAS_X_AXIS, x) OPTARG(HAS_Y_AXIS, y) }); } + operator xyz_float_t() { return xyz_float_t({ TERN_(HAS_X_AXIS, x) OPTARG(HAS_Y_AXIS, y) OPTARG(HAS_Z_AXIS, z) }); } void debug(FSTR_P const title); }; diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index bf493023d8..0a12e1041d 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -300,7 +300,7 @@ void Endstops::event_handler() { prev_hit_state = hit_state; if (hit_state) { #if HAS_STATUS_MESSAGE - char NUM_AXIS_LIST(chrX = ' ', chrY = ' ', chrZ = ' ', chrI = ' ', chrJ = ' ', chrK = ' ', chrU = ' ', chrV = ' ', chrW = ' '), + char NUM_AXIS_LIST_(chrX = ' ', chrY = ' ', chrZ = ' ', chrI = ' ', chrJ = ' ', chrK = ' ', chrU = ' ', chrV = ' ', chrW = ' ') chrP = ' '; #define _SET_STOP_CHAR(A,C) (chr## A = C) #else @@ -348,7 +348,7 @@ void Endstops::event_handler() { ui.status_printf(0, F(S_FMT GANG_N_1(NUM_AXES, " %c") " %c"), GET_TEXT(MSG_LCD_ENDSTOPS), - NUM_AXIS_LIST(chrX, chrY, chrZ, chrI, chrJ, chrK, chrU, chrV, chrW), chrP + NUM_AXIS_LIST_(chrX, chrY, chrZ, chrI, chrJ, chrK, chrU, chrV, chrW) chrP ) ); @@ -367,19 +367,23 @@ void Endstops::event_handler() { } } -#pragma GCC diagnostic push -#if GCC_VERSION <= 50000 - #pragma GCC diagnostic ignored "-Wunused-function" +#if NUM_AXES + + #pragma GCC diagnostic push + #if GCC_VERSION <= 50000 + #pragma GCC diagnostic ignored "-Wunused-function" + #endif + + static void print_es_state(const bool is_hit, FSTR_P const flabel=nullptr) { + if (flabel) SERIAL_ECHOF(flabel); + SERIAL_ECHOPGM(": "); + SERIAL_ECHOLNF(is_hit ? F(STR_ENDSTOP_HIT) : F(STR_ENDSTOP_OPEN)); + } + + #pragma GCC diagnostic pop + #endif -static void print_es_state(const bool is_hit, FSTR_P const flabel=nullptr) { - if (flabel) SERIAL_ECHOF(flabel); - SERIAL_ECHOPGM(": "); - SERIAL_ECHOLNF(is_hit ? F(STR_ENDSTOP_HIT) : F(STR_ENDSTOP_OPEN)); -} - -#pragma GCC diagnostic pop - void __O2 Endstops::report_states() { TERN_(BLTOUCH, bltouch._set_SW_mode()); SERIAL_ECHOLNPGM(STR_M119_REPORT); diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index de512e11fe..a15cfe0796 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -203,22 +203,24 @@ inline void report_more_positions() { // Report the logical position for a given machine position inline void report_logical_position(const xyze_pos_t &rpos) { const xyze_pos_t lpos = rpos.asLogical(); - SERIAL_ECHOPGM_P( - LIST_N(DOUBLE(NUM_AXES), - X_LBL, lpos.x, - SP_Y_LBL, lpos.y, - SP_Z_LBL, lpos.z, - SP_I_LBL, lpos.i, - SP_J_LBL, lpos.j, - SP_K_LBL, lpos.k, - SP_U_LBL, lpos.u, - SP_V_LBL, lpos.v, - SP_W_LBL, lpos.w - ) - #if HAS_EXTRUDERS - , SP_E_LBL, lpos.e - #endif - ); + #if NUM_AXES + SERIAL_ECHOPGM_P( + LIST_N(DOUBLE(NUM_AXES), + X_LBL, lpos.x, + SP_Y_LBL, lpos.y, + SP_Z_LBL, lpos.z, + SP_I_LBL, lpos.i, + SP_J_LBL, lpos.j, + SP_K_LBL, lpos.k, + SP_U_LBL, lpos.u, + SP_V_LBL, lpos.v, + SP_W_LBL, lpos.w + ) + ); + #endif + #if HAS_EXTRUDERS + SERIAL_ECHOPGM_P(SP_E_LBL, lpos.e); + #endif } // Report the real current position according to the steppers. @@ -367,7 +369,7 @@ void report_current_position_projected() { #else // CARTESIAN // Return true if the given position is within the machine bounds. - bool position_is_reachable(const_float_t rx, const_float_t ry) { + bool position_is_reachable(TERN_(HAS_X_AXIS, const_float_t rx) OPTARG(HAS_Y_AXIS, const_float_t ry)) { if (TERN0(HAS_Y_AXIS, !COORDINATE_OKAY(ry, Y_MIN_POS - fslop, Y_MAX_POS + fslop))) return false; #if ENABLED(DUAL_X_CARRIAGE) if (active_extruder) @@ -375,7 +377,8 @@ void report_current_position_projected() { else return COORDINATE_OKAY(rx, X1_MIN_POS - fslop, X1_MAX_POS + fslop); #else - return COORDINATE_OKAY(rx, X_MIN_POS - fslop, X_MAX_POS + fslop); + if (TERN0(HAS_X_AXIS, !COORDINATE_OKAY(rx, X_MIN_POS - fslop, X_MAX_POS + fslop))) return false; + return true; #endif } @@ -567,7 +570,7 @@ void _internal_move_to_destination(const_feedRate_t fr_mm_s/*=0.0f*/ * - Delta may lower Z first to get into the free motion zone. * - Before returning, wait for the planner buffer to empty. */ -void do_blocking_move_to(NUM_AXIS_ARGS(const_float_t), const_feedRate_t fr_mm_s/*=0.0f*/) { +void do_blocking_move_to(NUM_AXIS_ARGS_(const_float_t) const_feedRate_t fr_mm_s/*=0.0f*/) { DEBUG_SECTION(log_move, "do_blocking_move_to", DEBUGGING(LEVELING)); if (DEBUGGING(LEVELING)) DEBUG_XYZ("> ", NUM_AXIS_ARGS()); @@ -642,7 +645,7 @@ void do_blocking_move_to(NUM_AXIS_ARGS(const_float_t), const_feedRate_t fr_mm_s/ if (current_position.z < z) { current_position.z = z; line_to_current_position(z_feedrate); } #endif - current_position.set(x OPTARG(HAS_Y_AXIS, y)); line_to_current_position(xy_feedrate); + current_position.set(TERN_(HAS_X_AXIS, x) OPTARG(HAS_Y_AXIS, y)); line_to_current_position(xy_feedrate); #if SECONDARY_AXES secondary_axis_moves(SECONDARY_AXIS_LIST(i, j, k, u, v, w), fr_mm_s); @@ -659,30 +662,33 @@ void do_blocking_move_to(NUM_AXIS_ARGS(const_float_t), const_feedRate_t fr_mm_s/ } void do_blocking_move_to(const xy_pos_t &raw, const_feedRate_t fr_mm_s/*=0.0f*/) { - do_blocking_move_to(NUM_AXIS_LIST(raw.x, raw.y, current_position.z, current_position.i, current_position.j, current_position.k, - current_position.u, current_position.v, current_position.w), fr_mm_s); + do_blocking_move_to(NUM_AXIS_LIST_(raw.x, raw.y, current_position.z, current_position.i, current_position.j, current_position.k, + current_position.u, current_position.v, current_position.w) fr_mm_s); } void do_blocking_move_to(const xyz_pos_t &raw, const_feedRate_t fr_mm_s/*=0.0f*/) { - do_blocking_move_to(NUM_AXIS_ELEM(raw), fr_mm_s); + do_blocking_move_to(NUM_AXIS_ELEM_(raw) fr_mm_s); } void do_blocking_move_to(const xyze_pos_t &raw, const_feedRate_t fr_mm_s/*=0.0f*/) { - do_blocking_move_to(NUM_AXIS_ELEM(raw), fr_mm_s); -} -void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_blocking_move_to_x(", rx, ", ", fr_mm_s, ")"); - do_blocking_move_to( - NUM_AXIS_LIST(rx, current_position.y, current_position.z, current_position.i, current_position.j, current_position.k, - current_position.u, current_position.v, current_position.w), - fr_mm_s - ); + do_blocking_move_to(NUM_AXIS_ELEM_(raw) fr_mm_s); } +#if HAS_X_AXIS + void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_blocking_move_to_x(", rx, ", ", fr_mm_s, ")"); + do_blocking_move_to( + NUM_AXIS_LIST_(rx, current_position.y, current_position.z, current_position.i, current_position.j, current_position.k, + current_position.u, current_position.v, current_position.w) + fr_mm_s + ); + } +#endif + #if HAS_Y_AXIS void do_blocking_move_to_y(const_float_t ry, const_feedRate_t fr_mm_s/*=0.0*/) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_blocking_move_to_y(", ry, ", ", fr_mm_s, ")"); do_blocking_move_to( - NUM_AXIS_LIST(current_position.x, ry, current_position.z, current_position.i, current_position.j, current_position.k, - current_position.u, current_position.v, current_position.w), + NUM_AXIS_LIST_(current_position.x, ry, current_position.z, current_position.i, current_position.j, current_position.k, + current_position.u, current_position.v, current_position.w) fr_mm_s ); } @@ -701,7 +707,7 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { } void do_blocking_move_to_xyz_i(const xyze_pos_t &raw, const_float_t i, const_feedRate_t fr_mm_s/*=0.0f*/) { do_blocking_move_to( - NUM_AXIS_LIST(raw.x, raw.y, raw.z, i, raw.j, raw.k, raw.u, raw.v, raw.w), + NUM_AXIS_LIST_(raw.x, raw.y, raw.z, i, raw.j, raw.k, raw.u, raw.v, raw.w) fr_mm_s ); } @@ -713,7 +719,7 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { } void do_blocking_move_to_xyzi_j(const xyze_pos_t &raw, const_float_t j, const_feedRate_t fr_mm_s/*=0.0f*/) { do_blocking_move_to( - NUM_AXIS_LIST(raw.x, raw.y, raw.z, raw.i, j, raw.k, raw.u, raw.v, raw.w), + NUM_AXIS_LIST_(raw.x, raw.y, raw.z, raw.i, j, raw.k, raw.u, raw.v, raw.w) fr_mm_s ); } @@ -725,7 +731,7 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { } void do_blocking_move_to_xyzij_k(const xyze_pos_t &raw, const_float_t k, const_feedRate_t fr_mm_s/*=0.0f*/) { do_blocking_move_to( - NUM_AXIS_LIST(raw.x, raw.y, raw.z, raw.i, raw.j, k, raw.u, raw.v, raw.w), + NUM_AXIS_LIST_(raw.x, raw.y, raw.z, raw.i, raw.j, k, raw.u, raw.v, raw.w) fr_mm_s ); } @@ -737,7 +743,7 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { } void do_blocking_move_to_xyzijk_u(const xyze_pos_t &raw, const_float_t u, const_feedRate_t fr_mm_s/*=0.0f*/) { do_blocking_move_to( - NUM_AXIS_LIST(raw.x, raw.y, raw.z, raw.i, raw.j, raw.k, u, raw.v, raw.w), + NUM_AXIS_LIST_(raw.x, raw.y, raw.z, raw.i, raw.j, raw.k, u, raw.v, raw.w) fr_mm_s ); } @@ -749,7 +755,7 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { } void do_blocking_move_to_xyzijku_v(const xyze_pos_t &raw, const_float_t v, const_feedRate_t fr_mm_s/*=0.0f*/) { do_blocking_move_to( - NUM_AXIS_LIST(raw.x, raw.y, raw.z, raw.i, raw.j, raw.k, raw.u, v, raw.w), + NUM_AXIS_LIST_(raw.x, raw.y, raw.z, raw.i, raw.j, raw.k, raw.u, v, raw.w) fr_mm_s ); } @@ -761,7 +767,7 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { } void do_blocking_move_to_xyzijkuv_w(const xyze_pos_t &raw, const_float_t w, const_feedRate_t fr_mm_s/*=0.0f*/) { do_blocking_move_to( - NUM_AXIS_LIST(raw.x, raw.y, raw.z, raw.i, raw.j, raw.k, raw.u, raw.v, w), + NUM_AXIS_LIST_(raw.x, raw.y, raw.z, raw.i, raw.j, raw.k, raw.u, raw.v, w) fr_mm_s ); } @@ -771,8 +777,8 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { void do_blocking_move_to_xy(const_float_t rx, const_float_t ry, const_feedRate_t fr_mm_s/*=0.0*/) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_blocking_move_to_xy(", rx, ", ", ry, ", ", fr_mm_s, ")"); do_blocking_move_to( - NUM_AXIS_LIST(rx, ry, current_position.z, current_position.i, current_position.j, current_position.k, - current_position.u, current_position.v, current_position.w), + NUM_AXIS_LIST_(rx, ry, current_position.z, current_position.i, current_position.j, current_position.k, + current_position.u, current_position.v, current_position.w) fr_mm_s ); } @@ -784,8 +790,8 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) { #if HAS_Z_AXIS void do_blocking_move_to_xy_z(const xy_pos_t &raw, const_float_t z, const_feedRate_t fr_mm_s/*=0.0f*/) { do_blocking_move_to( - NUM_AXIS_LIST(raw.x, raw.y, z, current_position.i, current_position.j, current_position.k, - current_position.u, current_position.v, current_position.w), + NUM_AXIS_LIST_(raw.x, raw.y, z, current_position.i, current_position.j, current_position.k, + current_position.u, current_position.v, current_position.w) fr_mm_s ); } @@ -966,14 +972,16 @@ void restore_feedrate_and_scaling() { #else - if (axis_was_homed(X_AXIS)) { - #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MIN_SOFTWARE_ENDSTOP_X) - NOLESS(target.x, soft_endstop.min.x); - #endif - #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MAX_SOFTWARE_ENDSTOP_X) - NOMORE(target.x, soft_endstop.max.x); - #endif - } + #if HAS_X_AXIS + if (axis_was_homed(X_AXIS)) { + #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MIN_SOFTWARE_ENDSTOP_X) + NOLESS(target.x, soft_endstop.min.x); + #endif + #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MAX_SOFTWARE_ENDSTOP_X) + NOMORE(target.x, soft_endstop.max.x); + #endif + } + #endif #if HAS_Y_AXIS if (axis_was_homed(Y_AXIS)) { @@ -1079,82 +1087,90 @@ FORCE_INLINE void segment_idle(millis_t &next_idle_ms) { * Get distance from displacements along axes and, if required, update move type. */ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool &is_cartesian_move)) { - if (!(NUM_AXIS_GANG(diff.x, || diff.y, /* skip z */, || diff.i, || diff.j, || diff.k, || diff.u, || diff.v, || diff.w))) - return TERN0(HAS_Z_AXIS, ABS(diff.z)); + #if NUM_AXES - #if ENABLED(ARTICULATED_ROBOT_ARM) + if (!(NUM_AXIS_GANG(diff.x, || diff.y, /* skip z */, || diff.i, || diff.j, || diff.k, || diff.u, || diff.v, || diff.w))) + return TERN0(HAS_Z_AXIS, ABS(diff.z)); - // For articulated robots, interpreting feedrate like LinuxCNC would require inverse kinematics. As a workaround, pretend that motors sit on n mutually orthogonal - // axes and assume that we could think of distance as magnitude of an n-vector in an n-dimensional Euclidian space. - const float distance_sqr = NUM_AXIS_GANG( - sq(diff.x), + sq(diff.y), + sq(diff.z), - + sq(diff.i), + sq(diff.j), + sq(diff.k), - + sq(diff.u), + sq(diff.v), + sq(diff.w) - ); + #if ENABLED(ARTICULATED_ROBOT_ARM) - #elif ENABLED(FOAMCUTTER_XYUV) + // For articulated robots, interpreting feedrate like LinuxCNC would require inverse kinematics. As a workaround, pretend that motors sit on n mutually orthogonal + // axes and assume that we could think of distance as magnitude of an n-vector in an n-dimensional Euclidian space. + const float distance_sqr = NUM_AXIS_GANG( + sq(diff.x), + sq(diff.y), + sq(diff.z), + + sq(diff.i), + sq(diff.j), + sq(diff.k), + + sq(diff.u), + sq(diff.v), + sq(diff.w) + ); - const float distance_sqr = ( - #if HAS_J_AXIS - _MAX(sq(diff.x) + sq(diff.y), sq(diff.i) + sq(diff.j)) // Special 5 axis kinematics. Return the larger of plane X/Y or I/J - #else - sq(diff.x) + sq(diff.y) // Foamcutter with only two axes (XY) + #elif ENABLED(FOAMCUTTER_XYUV) + + const float distance_sqr = ( + #if HAS_J_AXIS + _MAX(sq(diff.x) + sq(diff.y), sq(diff.i) + sq(diff.j)) // Special 5 axis kinematics. Return the larger of plane X/Y or I/J + #else + sq(diff.x) + sq(diff.y) // Foamcutter with only two axes (XY) + #endif + ); + + #else + + /** + * Calculate distance for feedrate interpretation in accordance with NIST RS274NGC interpreter - version 3) and its default CANON_XYZ feed reference mode. + * Assume: + * - X, Y, Z are the primary linear axes; + * - U, V, W are secondary linear axes; + * - A, B, C are rotational axes. + * + * Then: + * - dX, dY, dZ are the displacements of the primary linear axes; + * - dU, dV, dW are the displacements of linear axes; + * - dA, dB, dC are the displacements of rotational axes. + * + * The time it takes to execute a move command with feedrate F is t = D/F, + * plus any time for acceleration and deceleration. + * Here, D is the total distance, calculated as follows: + * + * D^2 = dX^2 + dY^2 + dZ^2 + * if D^2 == 0 (none of XYZ move but any secondary linear axes move, whether other axes are moved or not): + * D^2 = dU^2 + dV^2 + dW^2 + * if D^2 == 0 (only rotational axes are moved): + * D^2 = dA^2 + dB^2 + dC^2 + */ + float distance_sqr = XYZ_GANG(sq(diff.x), + sq(diff.y), + sq(diff.z)); + + #if SECONDARY_LINEAR_AXES + if (UNEAR_ZERO(distance_sqr)) { + // Move does not involve any primary linear axes (xyz) but might involve secondary linear axes + distance_sqr = ( + SECONDARY_AXIS_GANG( + IF_DISABLED(AXIS4_ROTATES, + sq(diff.i)), + IF_DISABLED(AXIS5_ROTATES, + sq(diff.j)), + IF_DISABLED(AXIS6_ROTATES, + sq(diff.k)), + IF_DISABLED(AXIS7_ROTATES, + sq(diff.u)), + IF_DISABLED(AXIS8_ROTATES, + sq(diff.v)), + IF_DISABLED(AXIS9_ROTATES, + sq(diff.w)) + ) + ); + } #endif - ); + + #if HAS_ROTATIONAL_AXES + if (UNEAR_ZERO(distance_sqr)) { + // Move involves only rotational axes. Calculate angular distance in accordance with LinuxCNC + is_cartesian_move = false; + distance_sqr = ROTATIONAL_AXIS_GANG(sq(diff.i), + sq(diff.j), + sq(diff.k), + sq(diff.u), + sq(diff.v), + sq(diff.w)); + } + #endif + + #endif + + return SQRT(distance_sqr); #else - /** - * Calculate distance for feedrate interpretation in accordance with NIST RS274NGC interpreter - version 3) and its default CANON_XYZ feed reference mode. - * Assume: - * - X, Y, Z are the primary linear axes; - * - U, V, W are secondary linear axes; - * - A, B, C are rotational axes. - * - * Then: - * - dX, dY, dZ are the displacements of the primary linear axes; - * - dU, dV, dW are the displacements of linear axes; - * - dA, dB, dC are the displacements of rotational axes. - * - * The time it takes to execute a move command with feedrate F is t = D/F, - * plus any time for acceleration and deceleration. - * Here, D is the total distance, calculated as follows: - * - * D^2 = dX^2 + dY^2 + dZ^2 - * if D^2 == 0 (none of XYZ move but any secondary linear axes move, whether other axes are moved or not): - * D^2 = dU^2 + dV^2 + dW^2 - * if D^2 == 0 (only rotational axes are moved): - * D^2 = dA^2 + dB^2 + dC^2 - */ - float distance_sqr = XYZ_GANG(sq(diff.x), + sq(diff.y), + sq(diff.z)); - - #if SECONDARY_LINEAR_AXES - if (UNEAR_ZERO(distance_sqr)) { - // Move does not involve any primary linear axes (xyz) but might involve secondary linear axes - distance_sqr = ( - SECONDARY_AXIS_GANG( - IF_DISABLED(AXIS4_ROTATES, + sq(diff.i)), - IF_DISABLED(AXIS5_ROTATES, + sq(diff.j)), - IF_DISABLED(AXIS6_ROTATES, + sq(diff.k)), - IF_DISABLED(AXIS7_ROTATES, + sq(diff.u)), - IF_DISABLED(AXIS8_ROTATES, + sq(diff.v)), - IF_DISABLED(AXIS9_ROTATES, + sq(diff.w)) - ) - ); - } - #endif - - #if HAS_ROTATIONAL_AXES - if (UNEAR_ZERO(distance_sqr)) { - // Move involves only rotational axes. Calculate angular distance in accordance with LinuxCNC - is_cartesian_move = false; - distance_sqr = ROTATIONAL_AXIS_GANG(sq(diff.i), + sq(diff.j), + sq(diff.k), + sq(diff.u), + sq(diff.v), + sq(diff.w)); - } - #endif + return 0; #endif - - return SQRT(distance_sqr); } #if IS_KINEMATIC @@ -1702,7 +1718,9 @@ void prepare_line_to_destination() { #if ENABLED(SPI_ENDSTOPS) switch (axis) { - case X_AXIS: if (ENABLED(X_SPI_SENSORLESS)) endstops.tmc_spi_homing.x = true; break; + #if HAS_X_AXIS + case X_AXIS: if (ENABLED(X_SPI_SENSORLESS)) endstops.tmc_spi_homing.x = true; break; + #endif #if HAS_Y_AXIS case Y_AXIS: if (ENABLED(Y_SPI_SENSORLESS)) endstops.tmc_spi_homing.y = true; break; #endif @@ -1796,7 +1814,9 @@ void prepare_line_to_destination() { #if ENABLED(SPI_ENDSTOPS) switch (axis) { - case X_AXIS: if (ENABLED(X_SPI_SENSORLESS)) endstops.tmc_spi_homing.x = false; break; + #if HAS_X_AXIS + case X_AXIS: if (ENABLED(X_SPI_SENSORLESS)) endstops.tmc_spi_homing.x = false; break; + #endif #if HAS_Y_AXIS case Y_AXIS: if (ENABLED(Y_SPI_SENSORLESS)) endstops.tmc_spi_homing.y = false; break; #endif diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index 394c4748d9..ae0976b44c 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -153,9 +153,9 @@ inline float home_bump_mm(const AxisEnum axis) { extern xyz_pos_t hotend_offset[HOTENDS]; void reset_hotend_offsets(); #elif HOTENDS - constexpr xyz_pos_t hotend_offset[HOTENDS] = { { 0 } }; + constexpr xyz_pos_t hotend_offset[HOTENDS] = { { TERN_(HAS_X_AXIS, 0) } }; #else - constexpr xyz_pos_t hotend_offset[1] = { { 0 } }; + constexpr xyz_pos_t hotend_offset[1] = { { TERN_(HAS_X_AXIS, 0) } }; #endif #if HAS_SOFTWARE_ENDSTOPS @@ -169,10 +169,12 @@ inline float home_bump_mm(const AxisEnum axis) { amin = -100000; amax = 100000; // "No limits" #if HAS_SOFTWARE_ENDSTOPS if (enabled()) switch (axis) { - case X_AXIS: - TERN_(MIN_SOFTWARE_ENDSTOP_X, amin = min.x); - TERN_(MAX_SOFTWARE_ENDSTOP_X, amax = max.x); - break; + #if HAS_X_AXIS + case X_AXIS: + TERN_(MIN_SOFTWARE_ENDSTOP_X, amin = min.x); + TERN_(MAX_SOFTWARE_ENDSTOP_X, amax = max.x); + break; + #endif #if HAS_Y_AXIS case Y_AXIS: TERN_(MIN_SOFTWARE_ENDSTOP_Y, amin = min.y); @@ -350,12 +352,14 @@ inline void prepare_internal_move_to_destination(const_feedRate_t fr_mm_s=0.0f) /** * Blocking movement and shorthand functions */ -void do_blocking_move_to(NUM_AXIS_ARGS(const_float_t), const_feedRate_t fr_mm_s=0.0f); +void do_blocking_move_to(NUM_AXIS_ARGS_(const_float_t) const_feedRate_t fr_mm_s=0.0f); void do_blocking_move_to(const xy_pos_t &raw, const_feedRate_t fr_mm_s=0.0f); void do_blocking_move_to(const xyz_pos_t &raw, const_feedRate_t fr_mm_s=0.0f); void do_blocking_move_to(const xyze_pos_t &raw, const_feedRate_t fr_mm_s=0.0f); -void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s=0.0f); +#if HAS_X_AXIS + void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s=0.0f); +#endif #if HAS_Y_AXIS void do_blocking_move_to_y(const_float_t ry, const_feedRate_t fr_mm_s=0.0f); #endif @@ -515,8 +519,10 @@ void home_if_needed(const bool keeplev=false); FORCE_INLINE void toNative(xyz_pos_t&) {} FORCE_INLINE void toNative(xyze_pos_t&) {} #endif -#define LOGICAL_X_POSITION(POS) NATIVE_TO_LOGICAL(POS, X_AXIS) -#define RAW_X_POSITION(POS) LOGICAL_TO_NATIVE(POS, X_AXIS) +#if HAS_X_AXIS + #define LOGICAL_X_POSITION(POS) NATIVE_TO_LOGICAL(POS, X_AXIS) + #define RAW_X_POSITION(POS) LOGICAL_TO_NATIVE(POS, X_AXIS) +#endif #if HAS_Y_AXIS #define LOGICAL_Y_POSITION(POS) NATIVE_TO_LOGICAL(POS, Y_AXIS) #define RAW_Y_POSITION(POS) LOGICAL_TO_NATIVE(POS, Y_AXIS) @@ -569,9 +575,9 @@ void home_if_needed(const bool keeplev=false); #else // Return true if the given position is within the machine bounds. - bool position_is_reachable(const_float_t rx, const_float_t ry); + bool position_is_reachable(TERN_(HAS_X_AXIS, const_float_t rx) OPTARG(HAS_Y_AXIS, const_float_t ry)); inline bool position_is_reachable(const xy_pos_t &pos) { - return position_is_reachable(pos.x, pos.y); + return position_is_reachable(TERN_(HAS_X_AXIS, pos.x) OPTARG(HAS_Y_AXIS, pos.y)); } #endif diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 1b995a3224..a9da48df01 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -1903,7 +1903,9 @@ bool Planner::_populate_block( /* <-- add a slash to enable SERIAL_ECHOLNPGM( " _populate_block FR:", fr_mm_s, - " A:", target.a, " (", da, " steps)" + #if HAS_X_AXIS + " A:", target.a, " (", da, " steps)" + #endif #if HAS_Y_AXIS " B:", target.b, " (", db, " steps)" #endif @@ -2204,11 +2206,17 @@ bool Planner::_populate_block( TERN_(HAS_EXTRUDERS, block->steps.e = esteps); - block->step_event_count = _MAX(LOGICAL_AXIS_LIST(esteps, - block->steps.a, block->steps.b, block->steps.c, - block->steps.i, block->steps.j, block->steps.k, - block->steps.u, block->steps.v, block->steps.w - )); + block->step_event_count = ( + #if NUM_AXES + _MAX(LOGICAL_AXIS_LIST(esteps, + block->steps.a, block->steps.b, block->steps.c, + block->steps.i, block->steps.j, block->steps.k, + block->steps.u, block->steps.v, block->steps.w + )) + #elif HAS_EXTRUDERS + esteps + #endif + ); // Bail if this is a zero-length block if (block->step_event_count < MIN_STEPS_PER_SEGMENT) return false; @@ -2474,8 +2482,8 @@ bool Planner::_populate_block( #if ENABLED(LIN_ADVANCE) bool use_advance_lead = false; #endif - if (NUM_AXIS_GANG( - !block->steps.a, && !block->steps.b, && !block->steps.c, + if (true NUM_AXIS_GANG( + && !block->steps.a, && !block->steps.b, && !block->steps.c, && !block->steps.i, && !block->steps.j, && !block->steps.k, && !block->steps.u, && !block->steps.v, && !block->steps.w) ) { // Is this a retract / recover move? diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index eb55ea1b45..98b4b107cd 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -182,7 +182,7 @@ public: static bool set_deployed(const bool, const bool=false) { return false; } - static bool can_reach(const_float_t rx, const_float_t ry, const bool=true) { return position_is_reachable(rx, ry); } + static bool can_reach(const_float_t rx, const_float_t ry, const bool=true) { return position_is_reachable(TERN_(HAS_X_AXIS, rx) OPTARG(HAS_Y_AXIS, ry)); } #endif // !HAS_BED_PROBE diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 8ebc8c61f5..53e98a4626 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -181,10 +181,10 @@ #define _EN_ITEM(N) , E##N #define _EN1_ITEM(N) , E##N:1 -typedef struct { uint16_t MAIN_AXIS_NAMES, X2, Y2, Z2, Z3, Z4 REPEAT(E_STEPPERS, _EN_ITEM); } per_stepper_uint16_t; -typedef struct { uint32_t MAIN_AXIS_NAMES, X2, Y2, Z2, Z3, Z4 REPEAT(E_STEPPERS, _EN_ITEM); } per_stepper_uint32_t; -typedef struct { int16_t MAIN_AXIS_NAMES, X2, Y2, Z2, Z3, Z4; } mot_stepper_int16_t; -typedef struct { bool NUM_AXIS_LIST(X:1, Y:1, Z:1, I:1, J:1, K:1, U:1, V:1, W:1), X2:1, Y2:1, Z2:1, Z3:1, Z4:1 REPEAT(E_STEPPERS, _EN1_ITEM); } per_stepper_bool_t; +typedef struct { uint16_t MAIN_AXIS_NAMES_ X2, Y2, Z2, Z3, Z4 REPEAT(E_STEPPERS, _EN_ITEM); } per_stepper_uint16_t; +typedef struct { uint32_t MAIN_AXIS_NAMES_ X2, Y2, Z2, Z3, Z4 REPEAT(E_STEPPERS, _EN_ITEM); } per_stepper_uint32_t; +typedef struct { int16_t MAIN_AXIS_NAMES_ X2, Y2, Z2, Z3, Z4; } mot_stepper_int16_t; +typedef struct { bool NUM_AXIS_LIST_(X:1, Y:1, Z:1, I:1, J:1, K:1, U:1, V:1, W:1) X2:1, Y2:1, Z2:1, Z3:1, Z4:1 REPEAT(E_STEPPERS, _EN1_ITEM); } per_stepper_bool_t; #undef _EN_ITEM @@ -225,7 +225,9 @@ typedef struct SettingsDataStruct { // // Home Offset // - xyz_pos_t home_offset; // M206 XYZ / M665 TPZ + #if NUM_AXES + xyz_pos_t home_offset; // M206 XYZ / M665 TPZ + #endif // // Hotend Offset @@ -264,8 +266,9 @@ typedef struct SettingsDataStruct { // // HAS_BED_PROBE // - - xyz_pos_t probe_offset; // M851 X Y Z + #if NUM_AXES + xyz_pos_t probe_offset; // M851 X Y Z + #endif // // ABL_PLANAR @@ -475,7 +478,9 @@ typedef struct SettingsDataStruct { // // CNC_COORDINATE_SYSTEMS // - xyz_pos_t coordinate_system[MAX_COORDINATE_SYSTEMS]; // G54-G59.3 + #if NUM_AXES + xyz_pos_t coordinate_system[MAX_COORDINATE_SYSTEMS]; // G54-G59.3 + #endif // // SKEW_CORRECTION @@ -501,9 +506,11 @@ typedef struct SettingsDataStruct { // // BACKLASH_COMPENSATION // - xyz_float_t backlash_distance_mm; // M425 X Y Z - uint8_t backlash_correction; // M425 F - float backlash_smoothing_mm; // M425 S + #if NUM_AXES + xyz_float_t backlash_distance_mm; // M425 X Y Z + uint8_t backlash_correction; // M425 F + float backlash_smoothing_mm; // M425 S + #endif // // EXTENSIBLE_UI @@ -813,6 +820,7 @@ void MarlinSettings::postprocess() { // // Home Offset // + #if NUM_AXES { _FIELD_TEST(home_offset); @@ -825,6 +833,7 @@ void MarlinSettings::postprocess() { EEPROM_WRITE(home_offset); #endif } + #endif // NUM_AXES // // Hotend Offsets, if any @@ -905,6 +914,7 @@ void MarlinSettings::postprocess() { // // Probe XYZ Offsets // + #if NUM_AXES { _FIELD_TEST(probe_offset); #if HAS_BED_PROBE @@ -914,6 +924,7 @@ void MarlinSettings::postprocess() { #endif EEPROM_WRITE(zpo); } + #endif // // Planar Bed Leveling matrix @@ -1364,7 +1375,7 @@ void MarlinSettings::postprocess() { #else #define _EN_ITEM(N) , .E##N = 30 const per_stepper_uint32_t tmc_hybrid_threshold = { - NUM_AXIS_LIST(.X = 100, .Y = 100, .Z = 3, .I = 3, .J = 3, .K = 3, .U = 3, .V = 3, .W = 3), + NUM_AXIS_LIST_(.X = 100, .Y = 100, .Z = 3, .I = 3, .J = 3, .K = 3, .U = 3, .V = 3, .W = 3) .X2 = 100, .Y2 = 100, .Z2 = 3, .Z3 = 3, .Z4 = 3 REPEAT(E_STEPPERS, _EN_ITEM) }; @@ -1462,13 +1473,13 @@ void MarlinSettings::postprocess() { // // CNC Coordinate Systems // - - _FIELD_TEST(coordinate_system); - - #if DISABLED(CNC_COORDINATE_SYSTEMS) - const xyz_pos_t coordinate_system[MAX_COORDINATE_SYSTEMS] = { { 0 } }; + #if NUM_AXES + _FIELD_TEST(coordinate_system); + #if DISABLED(CNC_COORDINATE_SYSTEMS) + const xyz_pos_t coordinate_system[MAX_COORDINATE_SYSTEMS] = { { 0 } }; + #endif + EEPROM_WRITE(TERN(CNC_COORDINATE_SYSTEMS, gcode.coordinate_system, coordinate_system)); #endif - EEPROM_WRITE(TERN(CNC_COORDINATE_SYSTEMS, gcode.coordinate_system, coordinate_system)); // // Skew correction factors @@ -1503,6 +1514,7 @@ void MarlinSettings::postprocess() { // // Backlash Compensation // + #if NUM_AXES { #if ENABLED(BACKLASH_GCODE) xyz_float_t backlash_distance_mm; @@ -1522,6 +1534,7 @@ void MarlinSettings::postprocess() { EEPROM_WRITE(backlash_correction); EEPROM_WRITE(backlash_smoothing_mm); } + #endif // NUM_AXES // // Extensible UI User Data @@ -1775,6 +1788,7 @@ void MarlinSettings::postprocess() { // // Home Offset (M206 / M665) // + #if NUM_AXES { _FIELD_TEST(home_offset); @@ -1787,6 +1801,7 @@ void MarlinSettings::postprocess() { EEPROM_READ(home_offset); #endif } + #endif // NUM_AXES // // Hotend Offsets, if any @@ -1862,6 +1877,7 @@ void MarlinSettings::postprocess() { // // Probe Z Offset // + #if NUM_AXES { _FIELD_TEST(probe_offset); #if HAS_BED_PROBE @@ -1871,6 +1887,7 @@ void MarlinSettings::postprocess() { #endif EEPROM_READ(zpo); } + #endif // // Planar Bed Leveling matrix @@ -2439,6 +2456,7 @@ void MarlinSettings::postprocess() { // // CNC Coordinate System // + #if NUM_AXES { _FIELD_TEST(coordinate_system); #if ENABLED(CNC_COORDINATE_SYSTEMS) @@ -2449,6 +2467,7 @@ void MarlinSettings::postprocess() { EEPROM_READ(coordinate_system); #endif } + #endif // // Skew correction factors @@ -2494,6 +2513,7 @@ void MarlinSettings::postprocess() { // // Backlash Compensation // + #if NUM_AXES { xyz_float_t backlash_distance_mm; uint8_t backlash_correction; @@ -2512,6 +2532,7 @@ void MarlinSettings::postprocess() { #endif #endif } + #endif // NUM_AXES // // Extensible UI User Data @@ -2903,7 +2924,7 @@ void MarlinSettings::reset() { planner.settings.min_travel_feedrate_mm_s = feedRate_t(DEFAULT_MINTRAVELFEEDRATE); #if HAS_CLASSIC_JERK - #ifndef DEFAULT_XJERK + #if HAS_X_AXIS && !defined(DEFAULT_XJERK) #define DEFAULT_XJERK 0 #endif #if HAS_Y_AXIS && !defined(DEFAULT_YJERK) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index d7ef76d18a..3e4f65fd69 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -398,7 +398,7 @@ xyze_int8_t Stepper::count_direction{0}; if (extruder_duplication_enabled || ALWAYS) { X_STEP_WRITE(v); X2_STEP_WRITE(v); } \ else if (last_moved_extruder) X2_STEP_WRITE(v); else X_STEP_WRITE(v); \ }while(0) -#else +#elif HAS_X_AXIS #define X_APPLY_DIR(v,Q) X_DIR_WRITE(v) #define X_APPLY_STEP(v,Q) X_STEP_WRITE(v) #endif @@ -3407,19 +3407,21 @@ int32_t Stepper::triggered_position(const AxisEnum axis) { #endif void Stepper::report_a_position(const xyz_long_t &pos) { - SERIAL_ECHOLNPGM_P( - LIST_N(DOUBLE(NUM_AXES), - TERN(SAYS_A, PSTR(STR_COUNT_A), PSTR(STR_COUNT_X)), pos.x, - TERN(SAYS_B, PSTR("B:"), SP_Y_LBL), pos.y, - TERN(SAYS_C, PSTR("C:"), SP_Z_LBL), pos.z, - SP_I_LBL, pos.i, - SP_J_LBL, pos.j, - SP_K_LBL, pos.k, - SP_U_LBL, pos.u, - SP_V_LBL, pos.v, - SP_W_LBL, pos.w - ) - ); + #if NUM_AXES + SERIAL_ECHOLNPGM_P( + LIST_N(DOUBLE(NUM_AXES), + TERN(SAYS_A, PSTR(STR_COUNT_A), PSTR(STR_COUNT_X)), pos.x, + TERN(SAYS_B, PSTR("B:"), SP_Y_LBL), pos.y, + TERN(SAYS_C, PSTR("C:"), SP_Z_LBL), pos.z, + SP_I_LBL, pos.i, + SP_J_LBL, pos.j, + SP_K_LBL, pos.k, + SP_U_LBL, pos.u, + SP_V_LBL, pos.v, + SP_W_LBL, pos.w + ) + ); + #endif } void Stepper::report_positions() { diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 9e45ffa45f..b6996aa932 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -83,7 +83,7 @@ typedef struct { // All the stepper enable pins constexpr pin_t ena_pins[] = { - NUM_AXIS_LIST(X_ENABLE_PIN, Y_ENABLE_PIN, Z_ENABLE_PIN, I_ENABLE_PIN, J_ENABLE_PIN, K_ENABLE_PIN, U_ENABLE_PIN, V_ENABLE_PIN, W_ENABLE_PIN), + NUM_AXIS_LIST_(X_ENABLE_PIN, Y_ENABLE_PIN, Z_ENABLE_PIN, I_ENABLE_PIN, J_ENABLE_PIN, K_ENABLE_PIN, U_ENABLE_PIN, V_ENABLE_PIN, W_ENABLE_PIN) LIST_N(E_STEPPERS, E0_ENABLE_PIN, E1_ENABLE_PIN, E2_ENABLE_PIN, E3_ENABLE_PIN, E4_ENABLE_PIN, E5_ENABLE_PIN, E6_ENABLE_PIN, E7_ENABLE_PIN) }; diff --git a/Marlin/src/module/stepper/indirection.h b/Marlin/src/module/stepper/indirection.h index d60c539be5..99a677c81f 100644 --- a/Marlin/src/module/stepper/indirection.h +++ b/Marlin/src/module/stepper/indirection.h @@ -83,21 +83,23 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #define INVERT_DIR(AXIS, D) (TERN_(INVERT_## AXIS ##_DIR, !)(D)) // X Stepper -#ifndef X_ENABLE_INIT - #define X_ENABLE_INIT() SET_OUTPUT(X_ENABLE_PIN) - #define X_ENABLE_WRITE(STATE) WRITE(X_ENABLE_PIN,STATE) - #define X_ENABLE_READ() bool(READ(X_ENABLE_PIN)) +#if HAS_X_AXIS + #ifndef X_ENABLE_INIT + #define X_ENABLE_INIT() SET_OUTPUT(X_ENABLE_PIN) + #define X_ENABLE_WRITE(STATE) WRITE(X_ENABLE_PIN,STATE) + #define X_ENABLE_READ() bool(READ(X_ENABLE_PIN)) + #endif + #ifndef X_DIR_INIT + #define X_DIR_INIT() SET_OUTPUT(X_DIR_PIN) + #define X_DIR_WRITE(STATE) WRITE(X_DIR_PIN,INVERT_DIR(X, STATE)) + #define X_DIR_READ() INVERT_DIR(X, bool(READ(X_DIR_PIN))) + #endif + #define X_STEP_INIT() SET_OUTPUT(X_STEP_PIN) + #ifndef X_STEP_WRITE + #define X_STEP_WRITE(STATE) WRITE(X_STEP_PIN,STATE) + #endif + #define X_STEP_READ() bool(READ(X_STEP_PIN)) #endif -#ifndef X_DIR_INIT - #define X_DIR_INIT() SET_OUTPUT(X_DIR_PIN) - #define X_DIR_WRITE(STATE) WRITE(X_DIR_PIN,INVERT_DIR(X, STATE)) - #define X_DIR_READ() INVERT_DIR(X, bool(READ(X_DIR_PIN))) -#endif -#define X_STEP_INIT() SET_OUTPUT(X_STEP_PIN) -#ifndef X_STEP_WRITE - #define X_STEP_WRITE(STATE) WRITE(X_STEP_PIN,STATE) -#endif -#define X_STEP_READ() bool(READ(X_STEP_PIN)) // Y Stepper #if HAS_Y_AXIS @@ -977,8 +979,13 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #define AFTER_CHANGE(N,TF) NOOP #endif -#define ENABLE_AXIS_X() if (SHOULD_ENABLE(x)) { ENABLE_STEPPER_X(); ENABLE_STEPPER_X2(); AFTER_CHANGE(x, true); } -#define DISABLE_AXIS_X() if (SHOULD_DISABLE(x)) { DISABLE_STEPPER_X(); DISABLE_STEPPER_X2(); AFTER_CHANGE(x, false); set_axis_untrusted(X_AXIS); } +#if HAS_X_AXIS + #define ENABLE_AXIS_X() if (SHOULD_ENABLE(x)) { ENABLE_STEPPER_X(); ENABLE_STEPPER_X2(); AFTER_CHANGE(x, true); } + #define DISABLE_AXIS_X() if (SHOULD_DISABLE(x)) { DISABLE_STEPPER_X(); DISABLE_STEPPER_X2(); AFTER_CHANGE(x, false); set_axis_untrusted(X_AXIS); } +#else + #define ENABLE_AXIS_X() NOOP + #define DISABLE_AXIS_X() NOOP +#endif #if HAS_Y_AXIS #define ENABLE_AXIS_Y() if (SHOULD_ENABLE(y)) { ENABLE_STEPPER_Y(); ENABLE_STEPPER_Y2(); AFTER_CHANGE(y, true); } diff --git a/Marlin/src/module/stepper/trinamic.cpp b/Marlin/src/module/stepper/trinamic.cpp index 3db2c0827e..7649c52f5c 100644 --- a/Marlin/src/module/stepper/trinamic.cpp +++ b/Marlin/src/module/stepper/trinamic.cpp @@ -493,7 +493,7 @@ enum StealthIndex : uint8_t { #endif #define _EN_ITEM(N) , E##N - enum TMCAxis : uint8_t { MAIN_AXIS_NAMES, X2, Y2, Z2, Z3, Z4 REPEAT(EXTRUDERS, _EN_ITEM), TOTAL }; + enum TMCAxis : uint8_t { MAIN_AXIS_NAMES_ X2, Y2, Z2, Z3, Z4 REPEAT(EXTRUDERS, _EN_ITEM), TOTAL }; #undef _EN_ITEM void tmc_serial_begin() { diff --git a/Marlin/src/module/stepper/trinamic.h b/Marlin/src/module/stepper/trinamic.h index 88c0686fc3..d6de5cd002 100644 --- a/Marlin/src/module/stepper/trinamic.h +++ b/Marlin/src/module/stepper/trinamic.h @@ -77,7 +77,7 @@ #define TMC_CLASS_E(N) TMC_CLASS(E##N, E) #endif -#ifndef CHOPPER_TIMING_X +#if HAS_X_AXIS && !defined(CHOPPER_TIMING_X) #define CHOPPER_TIMING_X CHOPPER_TIMING #endif #if HAS_Y_AXIS && !defined(CHOPPER_TIMING_Y) diff --git a/Marlin/src/pins/sensitive_pins.h b/Marlin/src/pins/sensitive_pins.h index abccac9dad..b7b5195a89 100644 --- a/Marlin/src/pins/sensitive_pins.h +++ b/Marlin/src/pins/sensitive_pins.h @@ -24,44 +24,51 @@ // // Prepare a list of protected pins for M42/M43 // +#if HAS_X_AXIS -#if PIN_EXISTS(X_MIN) - #define _X_MIN X_MIN_PIN, -#else - #define _X_MIN -#endif -#if PIN_EXISTS(X_MAX) - #define _X_MAX X_MAX_PIN, -#else - #define _X_MAX -#endif -#if PIN_EXISTS(X_CS) && AXIS_HAS_SPI(X) - #define _X_CS X_CS_PIN, -#else - #define _X_CS -#endif -#if PIN_EXISTS(X_MS1) - #define _X_MS1 X_MS1_PIN, -#else - #define _X_MS1 -#endif -#if PIN_EXISTS(X_MS2) - #define _X_MS2 X_MS2_PIN, -#else - #define _X_MS2 -#endif -#if PIN_EXISTS(X_MS3) - #define _X_MS3 X_MS3_PIN, -#else - #define _X_MS3 -#endif -#if PIN_EXISTS(X_ENABLE) - #define _X_ENABLE_PIN X_ENABLE_PIN, -#else - #define _X_ENABLE_PIN -#endif + #if PIN_EXISTS(X_MIN) + #define _X_MIN X_MIN_PIN, + #else + #define _X_MIN + #endif + #if PIN_EXISTS(X_MAX) + #define _X_MAX X_MAX_PIN, + #else + #define _X_MAX + #endif + #if PIN_EXISTS(X_CS) && AXIS_HAS_SPI(X) + #define _X_CS X_CS_PIN, + #else + #define _X_CS + #endif + #if PIN_EXISTS(X_MS1) + #define _X_MS1 X_MS1_PIN, + #else + #define _X_MS1 + #endif + #if PIN_EXISTS(X_MS2) + #define _X_MS2 X_MS2_PIN, + #else + #define _X_MS2 + #endif + #if PIN_EXISTS(X_MS3) + #define _X_MS3 X_MS3_PIN, + #else + #define _X_MS3 + #endif + #if PIN_EXISTS(X_ENABLE) + #define _X_ENABLE_PIN X_ENABLE_PIN, + #else + #define _X_ENABLE_PIN + #endif -#define _X_PINS X_STEP_PIN, X_DIR_PIN, _X_ENABLE_PIN _X_MIN _X_MAX _X_MS1 _X_MS2 _X_MS3 _X_CS + #define _X_PINS X_STEP_PIN, X_DIR_PIN, _X_ENABLE_PIN _X_MIN _X_MAX _X_MS1 _X_MS2 _X_MS3 _X_CS + +#else + + #define _X_PINS + +#endif #if HAS_Y_AXIS diff --git a/buildroot/tests/mega2560 b/buildroot/tests/mega2560 index c2a3452e67..ad9763451f 100755 --- a/buildroot/tests/mega2560 +++ b/buildroot/tests/mega2560 @@ -71,6 +71,19 @@ opt_enable VIKI2 BOOT_MARLIN_LOGO_ANIMATED SDSUPPORT AUTO_REPORT_SD_STATUS \ FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE Z_SAFE_HOMING FIL_RUNOUT3_PULLUP exec_test $1 $2 "Z Servo Probe | Multiple runout sensors (x5)" "$3" +# +# Extruder Only. No XYZ axes at all. +# +restore_configs +opt_set DEFAULT_AXIS_STEPS_PER_UNIT '{ 4000 }' \ + DEFAULT_MAX_FEEDRATE '{ 5 }' \ + DEFAULT_MAX_ACCELERATION '{ 100 }' \ + MANUAL_FEEDRATE '{ 4*60 }' \ + AXIS_RELATIVE_MODES '{ false }' \ + HOMING_BUMP_MM '{}' HOMING_BUMP_DIVISOR '{}' HOMING_FEEDRATE_MM_M '{}' +opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER +opt_disable X_DRIVER_TYPE Y_DRIVER_TYPE Z_DRIVER_TYPE +exec_test $1 $2 "E Axis Only | DOGM MarlinUI" "$3" # # Mixing Extruder with 5 steppers, Greek diff --git a/ini/stm32g0.ini b/ini/stm32g0.ini index 2ffee09790..8d9353f0af 100644 --- a/ini/stm32g0.ini +++ b/ini/stm32g0.ini @@ -36,9 +36,10 @@ platform_packages = framework-arduinoststm32@https://github.com/stm32d board = marlin_BTT_EBB42_V1_1 board_build.offset = 0x0000 board_upload.offset_address = 0x08000000 -build_flags = ${stm32_variant.build_flags} ${stm32g0_I2C2.build_flags} -upload_protocol = stlink +build_flags = ${stm32_variant.build_flags} ${stm32g0_I2C2.build_flags} -flto debug_tool = stlink +upload_protocol = dfu +upload_command = dfu-util -a 0 -s 0x08000000:leave -D "$SOURCE" # # BigTreeTech SKR Mini E3 V3.0 (STM32G0B1RET6 ARM Cortex-M0+) From 3a8809c1a75c9a8986c983c0921b7f7e62e0037e Mon Sep 17 00:00:00 2001 From: Skopus <71988971+skopusdotorg@users.noreply.github.com> Date: Tue, 9 May 2023 23:31:17 +0300 Subject: [PATCH 406/659] =?UTF-8?q?=E2=9C=A8=20KEDI=20(STM32F1)=20and=20GO?= =?UTF-8?q?DI=20(ESP32)=20boards=20(#25796)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/boards.h | 2 + .../pins/esp32/pins_GODI_CONTROLLER_V1_0.h | 141 +++++++++ Marlin/src/pins/pins.h | 4 + .../pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h | 297 ++++++++++++++++++ ini/esp32.ini | 6 + 5 files changed, 450 insertions(+) create mode 100644 Marlin/src/pins/esp32/pins_GODI_CONTROLLER_V1_0.h create mode 100644 Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index ccf877cd24..691b03ed0a 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -391,6 +391,7 @@ #define BOARD_PANDA_PI_V29 5066 // Panda Pi V2.9 - Standalone (STM32F103RC) #define BOARD_SOVOL_V131 5067 // Sovol V1.3.1 (GD32F103RET6) #define BOARD_TRIGORILLA_V006 5068 // Trigorilla V0.0.6 (GD32F103RE) +#define BOARD_KEDI_CONTROLLER_V1_2 5069 // EDUTRONICS Kedi Controller V1.2 (STM32F103RC) // // ARM Cortex-M4F @@ -479,6 +480,7 @@ #define BOARD_PANDA_M4 7007 // Panda_M4 #define BOARD_MKS_TINYBEE 7008 // MKS TinyBee based on ESP32 (with I2S stepper stream) #define BOARD_ENWI_ESPNP 7009 // enwi ESPNP based on ESP32 (with I2S stepper stream) +#define BOARD_GODI_CONTROLLER_V1_0 7010 // Godi Controller based on ESP32 32-Bit V1.0 // // SAMD51 ARM Cortex-M4 diff --git a/Marlin/src/pins/esp32/pins_GODI_CONTROLLER_V1_0.h b/Marlin/src/pins/esp32/pins_GODI_CONTROLLER_V1_0.h new file mode 100644 index 0000000000..35fc4e035d --- /dev/null +++ b/Marlin/src/pins/esp32/pins_GODI_CONTROLLER_V1_0.h @@ -0,0 +1,141 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * Godi Controller 32-Bit V1.0 pin assignments + * + * 3D printer control board based on the ESP32 microcontroller. + * Supports 4 stepper drivers, heated bed, single hotend. + */ + +#include "env_validate.h" + +#if EXTRUDERS > 1 || E_STEPPERS > 1 + #error "Godi Controller only supports 1 E stepper." +#elif HAS_MULTI_HOTEND + #error "Godi Controller only supports 1 hotend." +#endif + +#define BOARD_INFO_NAME "Godi Controller 32-Bit V1.0" + +// +// Disable I2S stepper stream, by default +// +#undef I2S_STEPPER_STREAM +#undef I2S_WS +#undef I2S_BCK +#undef I2S_DATA + +// +// Limit Switches +// +#define X_STOP_PIN 34 +#define Y_STOP_PIN 35 +#define Z_STOP_PIN 15 + +// +// Steppers +// +#define X_STEP_PIN 27 +#define X_DIR_PIN 26 +#define X_ENABLE_PIN 25 + +#define Y_STEP_PIN 33 +#define Y_DIR_PIN 32 +#define Y_ENABLE_PIN X_ENABLE_PIN + +#define Z_STEP_PIN 14 +#define Z_DIR_PIN 12 +#define Z_ENABLE_PIN X_ENABLE_PIN + +#define E0_STEP_PIN 16 +#define E0_DIR_PIN 17 +#define E0_ENABLE_PIN X_ENABLE_PIN + +// +// Temperature Sensors +// +#define TEMP_0_PIN 36 // Analog Input +#define TEMP_BED_PIN 39 // Analog Input + +// +// Heaters / Fans +// +#define HEATER_0_PIN 4 +#define FAN0_PIN 13 +#define HEATER_BED_PIN 2 + +// +// MicroSD card +// +#define SD_MOSI_PIN 23 +#define SD_MISO_PIN 19 +#define SD_SCK_PIN 18 +#define SDSS 5 +#define USES_SHARED_SPI // SPI is shared by SD card with TMC SPI drivers + +#if HAS_TMC_UART + // + // TMC2209 stepper drivers + // + + // + // Hardware serial 1 + // + #define X_HARDWARE_SERIAL Serial1 + #define Y_HARDWARE_SERIAL Serial1 + #define Z_HARDWARE_SERIAL Serial1 + #define E0_HARDWARE_SERIAL Serial1 + + #define TMC_BAUD_RATE 115200 +#endif + +/** + * Hardware serial pins + * + * Override these pins in Configuration.h or Configuration_adv.h if needed. + * + * Note: Serial2 can be defined using HARDWARE_SERIAL2_RX and HARDWARE_SERIAL2_TX + * but Godi Controller 32-Bit does not have enough spare pins for such reassignment. + */ +#ifndef HARDWARE_SERIAL1_RX + #define HARDWARE_SERIAL1_RX 21 +#endif +#ifndef HARDWARE_SERIAL1_TX + #define HARDWARE_SERIAL1_TX 22 +#endif + +// +// Heaters / Fans +// + +#if EITHER(EDUTRONICS_12864OLED_SH1106, EDUTRONICS_12864OLED_SSD1306) + #define LCDSCREEN_NAME "EDUTRONICS 12864 OLED" + #define BTN_EN2 1 + #define BTN_EN1 3 + #define BTN_ENC 0 + #define BEEPER_PIN -1 + #define KILL_PIN -1 + #define DOGLCD_SDA 21 // SDA + #define DOGLCD_SCL 22 // SCL +#endif diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index a177785963..5bf3b08810 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -688,6 +688,8 @@ #include "gd32f1/pins_SOVOL_V131.h" // GD32F1 env:GD32F103RET6_sovol_maple #elif MB(TRIGORILLA_V006) #include "gd32f1/pins_TRIGORILLA_V006.h" // GD32F103 env:trigorilla_v006 +#elif MB(KEDI_CONTROLLER_V1_2) + #include "stm32f1/pins_KEDI_CONTROLLER_V1_2.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple // // ARM Cortex-M4F @@ -838,6 +840,8 @@ #include "esp32/pins_MKS_TINYBEE.h" // ESP32 env:mks_tinybee #elif MB(ENWI_ESPNP) #include "esp32/pins_ENWI_ESPNP.h" // ESP32 env:esp32 +#elif MB(GODI_CONTROLLER_V1_0) + #include "esp32/pins_GODI_CONTROLLER_V1_0.h" // ESP32 env:godi_esp32 // // Adafruit Grand Central M4 (SAMD51 ARM Cortex-M4) diff --git a/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h b/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h new file mode 100644 index 0000000000..9ea36e2f25 --- /dev/null +++ b/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h @@ -0,0 +1,297 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "env_validate.h" + +#define BOARD_INFO_NAME "Kedi Controller 32-Bit V1.2" + +//#define DISABLE_DEBUG +#define DISABLE_JTAG + +// Ignore temp readings during development. +//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 + +#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) + #define FLASH_EEPROM_EMULATION + #define EEPROM_PAGE_SIZE (0x800U) // 2KB + #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) + #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE // 2KB +#endif + +// +// Limit Switches +// +#define X_MIN_PIN PC2 +#define X_MAX_PIN PA2 +#define Y_MIN_PIN PC1 +#define Y_MAX_PIN PA1 +#define Z_MIN_PIN PC0 +#define Z_MAX_PIN PC3 + +// +// Steppers +// + +#define X_STEP_PIN PC6 +#define X_DIR_PIN PC7 +#define X_ENABLE_PIN PB15 + +#define Y_STEP_PIN PB13 +#define Y_DIR_PIN PB14 +#define Y_ENABLE_PIN PB12 + +#define Z_STEP_PIN PB10 +#define Z_DIR_PIN PB11 +#define Z_ENABLE_PIN PB2 + +#define E0_STEP_PIN PC5 +#define E0_DIR_PIN PB0 +#define E0_ENABLE_PIN PC4 + +// Special Drivers + +// L6470 or L6474 on SPI +#if HAS_DRIVER(L6470) || HAS_DRIVER(L6474) // Shared with SPI on EXP2 + #define L6470_CHAIN_SCK_PIN PB3 + #define L6470_CHAIN_MISO_PIN PB4 + #define L6470_CHAIN_MOSI_PIN PB5 + #define L6470_CHAIN_SS_PIN PA15 + #define ENABLE_RESET_L64XX_CHIPS +#endif + +// TMC2130 on SPI +// SPI Pins (Shared for all drivers) +#if ENABLED(TMC_USE_SW_SPI) // Shared with EXP2 + #ifndef TMC_SW_SCK + #define TMC_SW_SCK PB3 + #endif + #ifndef TMC_SW_MISO + #define TMC_SW_MISO PB4 + #endif + #ifndef TMC_SW_MOSI + #define TMC_SW_MOSI PB5 + #endif +#endif + +// CS Pins (One pin for each driver) +#if HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2160) || HAS_DRIVER(TMC2660) || HAS_DRIVER(TMC5130) || HAS_DRIVER(TMC5160) + #ifndef X_CS_PIN + #define X_CS_PIN PC10 + #endif + #ifndef Y_CS_PIN + #define Y_CS_PIN PC11 + #endif + #ifndef Z_CS_PIN + #define Z_CS_PIN PC12 + #endif + #ifndef E0_CS_PIN + #define E0_CS_PIN PC14 + #endif +#endif + +// TMC2208 or TMC2209 on UART +#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209) + +// UART Pins (Single pin for both RX & TX) + #ifndef X_PIN_UART + #define X_PIN_UART PC10 + #endif + #ifndef Y_PIN_UART + #define Y_PIN_UART PC11 + #endif + #ifndef Z_PIN_UART + #define Z_PIN_UART PC12 + #endif + #ifndef E0_PIN_UART + #define E0_PIN_UART PC14 + #endif + +// Configurating Pins +#define X_SERIAL_TX_PIN X_PIN_UART +#define X_SERIAL_RX_PIN X_PIN_UART +#define Y_SERIAL_TX_PIN Y_PIN_UART +#define Y_SERIAL_RX_PIN Y_PIN_UART +#define Z_SERIAL_TX_PIN Z_PIN_UART +#define Z_SERIAL_RX_PIN Z_PIN_UART +#define E0_SERIAL_TX_PIN E0_PIN_UART +#define E0_SERIAL_RX_PIN E0_PIN_UART +#endif + +// +// Heaters / Fans +// +#define HEATER_0_PIN PA8 +#define FAN0_PIN PC8 +#define HEATER_BED_PIN PC9 + +// +// Temperature Sensors +// +#define TEMP_BED_PIN PB1 // Analog Input +#define TEMP_0_PIN PA0 // Analog Input + +/** ------ ------ + * (BEEPER) PC10 |10 9 | PC11 (BTN_ENC) (MISO) PB4 |10 9 | PB3 (SCK) + * (LCD_EN) PB6 | 8 7 | PC12 (LCD_RS) (BTN_EN1) PD2 | 8 7 | PA15 (SD_SS) + * (LCD_D4) PC13 6 5 | PB7 (LCD_D5) (BTN_EN2) PB8 6 5 | PB5 (MOSI) + * (LCD_D6) PC15 | 4 3 | PC14 (LCD_D7) (SD_DETECT) PB9 | 4 3 | RESET + * GND | 2 1 | 5V GND | 2 1 | -- + * ------ ------ + * EXP1 EXP2 + */ +#define EXP1_03_PIN PC14 +#define EXP1_04_PIN PC15 +#define EXP1_05_PIN PB7 +#define EXP1_06_PIN PC13 +#define EXP1_07_PIN PC12 +#define EXP1_08_PIN PB6 +#define EXP1_09_PIN PC11 +#define EXP1_10_PIN PC10 + +#define EXP2_03_PIN -1 // RESET +#define EXP2_04_PIN PB9 +#define EXP2_05_PIN PB5 +#define EXP2_06_PIN PB8 +#define EXP2_07_PIN PA15 +#define EXP2_08_PIN PD2 +#define EXP2_09_PIN PB3 +#define EXP2_10_PIN PB4 + +// +// LCD / Controller +// +#if HAS_WIRED_LCD + #define BEEPER_PIN EXP1_10_PIN + #define BTN_ENC EXP1_09_PIN + + #if ENABLED(CR10_STOCKDISPLAY) + #define LCD_PINS_RS EXP1_04_PIN + + #define BTN_EN1 EXP1_08_PIN + #define BTN_EN2 EXP1_06_PIN + + #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_D4 EXP1_05_PIN + + #elif IS_TFTGLCD_PANEL + + #undef BEEPER_PIN + #undef BTN_ENC + + #if ENABLED(TFTGLCD_PANEL_SPI) + #define TFTGLCD_CS EXP2_08_PIN + #endif + + #define SD_DETECT_PIN EXP2_04_PIN + + #else + + #define LCD_PINS_RS EXP1_07_PIN + + #define BTN_EN1 EXP2_08_PIN + #define BTN_EN2 EXP2_06_PIN + + #define LCD_PINS_ENABLE EXP1_08_PIN + + #if ENABLED(FYSETC_MINI_12864) + + #define LCD_BACKLIGHT_PIN -1 + #define LCD_RESET_PIN EXP1_06_PIN + #define DOGLCD_A0 EXP1_07_PIN + #define DOGLCD_CS EXP1_08_PIN + #define DOGLCD_SCK EXP2_09_PIN + #define DOGLCD_MOSI EXP2_05_PIN + + #define FORCE_SOFT_SPI // SPI MODE3 + + #define LED_PIN EXP1_05_PIN // red pwm + //#define LED_PIN EXP1_04_PIN // green + //#define LED_PIN EXP1_03_PIN // blue + + //#if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + // #ifndef RGB_LED_R_PIN + // #define RGB_LED_R_PIN EXP1_05_PIN + // #endif + // #ifndef RGB_LED_G_PIN + // #define RGB_LED_G_PIN EXP1_04_PIN + // #endif + // #ifndef RGB_LED_B_PIN + // #define RGB_LED_B_PIN EXP1_03_PIN + // #endif + //#elif ENABLED(FYSETC_MINI_12864_2_1) + // #define NEOPIXEL_PIN EXP1_05_PIN + //#endif + + #else // !FYSETC_MINI_12864 + + #define LCD_PINS_D4 EXP1_06_PIN + #if IS_ULTIPANEL + #define LCD_PINS_D5 EXP1_05_PIN + #define LCD_PINS_D6 EXP1_04_PIN + #define LCD_PINS_D7 EXP1_03_PIN + + #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define BTN_ENC_EN LCD_PINS_D7 // Detect the presence of the encoder + #endif + + #endif + + #endif // !FYSETC_MINI_12864 + + // Alter timing for graphical display + #if IS_U8GLIB_ST7920 + #define BOARD_ST7920_DELAY_1 125 + #define BOARD_ST7920_DELAY_2 125 + #define BOARD_ST7920_DELAY_3 125 + #endif + + #endif + +#endif // HAS_WIRED_LCD + +// +// SD Card +// + +// By default the onboard SD is enabled. +// Change SDCARD_CONNECTION from 'ONBOARD' to 'LCD' for an external (LCD module) SD +#ifndef SDCARD_CONNECTION + #define SDCARD_CONNECTION ONBOARD +#endif + +#if SD_CONNECTION_IS(LCD) + #define SPI_DEVICE 3 + #define SD_DETECT_PIN EXP2_04_PIN + #define SD_SCK_PIN EXP2_09_PIN + #define SD_MISO_PIN EXP2_10_PIN + #define SD_MOSI_PIN EXP2_05_PIN + #define SD_SS_PIN EXP2_07_PIN +#elif SD_CONNECTION_IS(ONBOARD) + #define SD_DETECT_PIN PA3 + #define SD_SCK_PIN PA5 + #define SD_MISO_PIN PA6 + #define SD_MOSI_PIN PA7 + #define SD_SS_PIN PA4 +#endif +#define ONBOARD_SPI_DEVICE 1 // SPI1 +#define ONBOARD_SD_CS_PIN PA4 // Chip select for "System" SD card diff --git a/ini/esp32.ini b/ini/esp32.ini index f12ef99759..98c3e06755 100644 --- a/ini/esp32.ini +++ b/ini/esp32.ini @@ -40,3 +40,9 @@ monitor_speed = 115200 [env:mks_tinybee] extends = env:esp32 board_build.partitions = default_8MB.csv + +[env:godi_esp32] +extends = env:esp32 +board_build.partitions = Marlin/src/HAL/ESP32/esp32.csv +upload_speed = 115200 +monitor_speed = 115200 From d52d26b4ef55ebb7ebc56ce5c712e4914f3aeb2a Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Wed, 10 May 2023 08:37:34 +1200 Subject: [PATCH 407/659] =?UTF-8?q?=F0=9F=94=A7=20Update=20multi-stepper?= =?UTF-8?q?=20axis=20conditionals=20(#25798)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration_adv.h | 2 +- Marlin/src/core/drivers.h | 2 +- Marlin/src/inc/Conditionals_LCD.h | 51 +++++----- Marlin/src/inc/Conditionals_adv.h | 38 +++++-- Marlin/src/inc/Conditionals_post.h | 153 +++++++++++++++-------------- Marlin/src/inc/SanityCheck.h | 4 +- Marlin/src/module/stepper.cpp | 10 +- Marlin/src/pins/pins_postprocess.h | 4 +- Marlin/src/pins/sensitive_pins.h | 2 +- 9 files changed, 142 insertions(+), 124 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 0d1b3d79fa..262e1a81ca 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -859,7 +859,7 @@ #endif #endif -#if HAS_DUAL_Y_STEPPERS +#if HAS_Y2_STEPPER //#define INVERT_Y2_VS_Y_DIR // Y2 direction signal is the opposite of Y //#define Y_DUAL_ENDSTOPS // Y2 has its own endstop #if ENABLED(Y_DUAL_ENDSTOPS) diff --git a/Marlin/src/core/drivers.h b/Marlin/src/core/drivers.h index 72a7d1f4b7..fce8a5a9b2 100644 --- a/Marlin/src/core/drivers.h +++ b/Marlin/src/core/drivers.h @@ -64,7 +64,7 @@ #define AXIS_DRIVER_TYPE_W(T) _AXIS_DRIVER_TYPE(W,T) #define AXIS_DRIVER_TYPE_X2(T) (HAS_X2_STEPPER && _AXIS_DRIVER_TYPE(X2,T)) -#define AXIS_DRIVER_TYPE_Y2(T) (HAS_DUAL_Y_STEPPERS && _AXIS_DRIVER_TYPE(Y2,T)) +#define AXIS_DRIVER_TYPE_Y2(T) (HAS_Y2_STEPPER && _AXIS_DRIVER_TYPE(Y2,T)) #define AXIS_DRIVER_TYPE_Z2(T) (NUM_Z_STEPPERS >= 2 && _AXIS_DRIVER_TYPE(Z2,T)) #define AXIS_DRIVER_TYPE_Z3(T) (NUM_Z_STEPPERS >= 3 && _AXIS_DRIVER_TYPE(Z3,T)) #define AXIS_DRIVER_TYPE_Z4(T) (NUM_Z_STEPPERS >= 4 && _AXIS_DRIVER_TYPE(Z4,T)) diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 01266354ce..7c67916765 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -803,33 +803,34 @@ #endif #if NUM_AXES >= 1 #define HAS_X_AXIS 1 -#endif -#if NUM_AXES >= XY - #define HAS_Y_AXIS 1 -#endif -#if NUM_AXES >= XYZ - #define HAS_Z_AXIS 1 -#endif -#if NUM_AXES >= 4 - #define HAS_I_AXIS 1 -#endif -#if NUM_AXES >= 5 - #define HAS_J_AXIS 1 -#endif -#if NUM_AXES >= 6 - #define HAS_K_AXIS 1 -#endif -#if NUM_AXES >= 7 - #define HAS_U_AXIS 1 -#endif -#if NUM_AXES >= 8 - #define HAS_V_AXIS 1 -#endif -#if NUM_AXES >= 9 - #define HAS_W_AXIS 1 + #if NUM_AXES >= XY + #define HAS_Y_AXIS 1 + #if NUM_AXES >= XYZ + #define HAS_Z_AXIS 1 + #if NUM_AXES >= 4 + #define HAS_I_AXIS 1 + #if NUM_AXES >= 5 + #define HAS_J_AXIS 1 + #if NUM_AXES >= 6 + #define HAS_K_AXIS 1 + #if NUM_AXES >= 7 + #define HAS_U_AXIS 1 + #if NUM_AXES >= 8 + #define HAS_V_AXIS 1 + #if NUM_AXES >= 9 + #define HAS_W_AXIS 1 + #endif + #endif + #endif + #endif + #endif + #endif + #endif + #endif #endif #if !HAS_X_AXIS + #undef AVOID_OBSTACLES #undef ENDSTOPPULLUP_XMIN #undef ENDSTOPPULLUP_XMAX #undef X_MIN_ENDSTOP_INVERTING @@ -1001,11 +1002,9 @@ #ifdef X2_DRIVER_TYPE #define HAS_X2_STEPPER 1 - // Dual X Carriage isn't known yet. TODO: Consider moving it to Configuration.h. #endif #ifdef Y2_DRIVER_TYPE #define HAS_Y2_STEPPER 1 - #define HAS_DUAL_Y_STEPPERS 1 #endif /** diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 7880351c0d..d715b1bd12 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -882,17 +882,28 @@ #define HAS_MOTOR_CURRENT_I2C 1 #endif -#if ENABLED(Z_STEPPER_AUTO_ALIGN) - #ifdef Z_STEPPER_ALIGN_STEPPER_XY - #define HAS_Z_STEPPER_ALIGN_STEPPER_XY 1 - #undef Z_STEPPER_ALIGN_AMP - #endif - #ifndef Z_STEPPER_ALIGN_AMP - #define Z_STEPPER_ALIGN_AMP 1.0 - #endif +// X2 but not IDEX => Dual Synchronized X Steppers +#if defined(X2_DRIVER_TYPE) && DISABLED(DUAL_X_CARRIAGE) + #define HAS_SYNCED_X_STEPPERS 1 +#endif + +// Y2 Stepper => Dual Synchronized Y Steppers +#ifdef Y2_DRIVER_TYPE + #define HAS_SYNCED_Y_STEPPERS 1 #endif // Multiple Z steppers +#ifdef INVERT_Z_DIR + #if NUM_Z_STEPPERS >= 2 && !defined(INVERT_Z2_DIR) + #define INVERT_Z2_DIR INVERT_Z_DIR + #if NUM_Z_STEPPERS >= 3 && !defined(INVERT_Z3_DIR) + #define INVERT_Z3_DIR INVERT_Z_DIR + #if NUM_Z_STEPPERS >= 4 && !defined(INVERT_Z4_DIR) + #define INVERT_Z4_DIR INVERT_Z_DIR + #endif + #endif + #endif +#endif #if NUM_Z_STEPPERS < 4 #undef INVERT_Z4_VS_Z_DIR #if NUM_Z_STEPPERS < 3 @@ -903,8 +914,15 @@ #endif #endif -#if defined(X2_DRIVER_TYPE) && DISABLED(DUAL_X_CARRIAGE) - #define HAS_DUAL_X_STEPPERS 1 +// Z Stepper Auto-align +#if ENABLED(Z_STEPPER_AUTO_ALIGN) + #ifdef Z_STEPPER_ALIGN_STEPPER_XY + #define HAS_Z_STEPPER_ALIGN_STEPPER_XY 1 + #undef Z_STEPPER_ALIGN_AMP + #endif + #ifndef Z_STEPPER_ALIGN_AMP + #define Z_STEPPER_ALIGN_AMP 1.0 + #endif #endif // diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 17f2b909e6..8ad4a6161e 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -1077,17 +1077,19 @@ #define HAS_Y_MS_PINS 1 #endif - #if PIN_EXISTS(Y2_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Y2)) - #define HAS_Y2_ENABLE 1 - #endif - #if PIN_EXISTS(Y2_DIR) - #define HAS_Y2_DIR 1 - #endif - #if PIN_EXISTS(Y2_STEP) - #define HAS_Y2_STEP 1 - #endif - #if PIN_EXISTS(Y2_MS1) - #define HAS_Y2_MS_PINS 1 + #if HAS_Y2_STEPPER + #if PIN_EXISTS(Y2_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Y2)) + #define HAS_Y2_ENABLE 1 + #endif + #if PIN_EXISTS(Y2_DIR) + #define HAS_Y2_DIR 1 + #endif + #if PIN_EXISTS(Y2_STEP) + #define HAS_Y2_STEP 1 + #endif + #if PIN_EXISTS(Y2_MS1) + #define HAS_Y2_MS_PINS 1 + #endif #endif #endif @@ -1439,7 +1441,6 @@ #define X_SLAVE_ADDRESS 0 #endif #endif - #if AXIS_IS_TMC(X2) #if defined(X2_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(X2) #define X2_SENSORLESS 1 @@ -1477,22 +1478,22 @@ #ifndef Y_SLAVE_ADDRESS #define Y_SLAVE_ADDRESS 0 #endif - #if HAS_DUAL_Y_STEPPERS - #if defined(Y2_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Y2) - #define Y2_SENSORLESS 1 - #endif - #if AXIS_HAS_STEALTHCHOP(Y2) - #define Y2_HAS_STEALTHCHOP 1 - #endif - #ifndef Y2_INTERPOLATE - #define Y2_INTERPOLATE Y_INTERPOLATE - #endif - #ifndef Y2_HOLD_MULTIPLIER - #define Y2_HOLD_MULTIPLIER Y_HOLD_MULTIPLIER - #endif - #ifndef Y2_SLAVE_ADDRESS - #define Y2_SLAVE_ADDRESS 0 - #endif + #endif + #if AXIS_IS_TMC(Y2) + #if defined(Y2_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Y2) + #define Y2_SENSORLESS 1 + #endif + #if AXIS_HAS_STEALTHCHOP(Y2) + #define Y2_HAS_STEALTHCHOP 1 + #endif + #ifndef Y2_INTERPOLATE + #define Y2_INTERPOLATE Y_INTERPOLATE + #endif + #ifndef Y2_HOLD_MULTIPLIER + #define Y2_HOLD_MULTIPLIER Y_HOLD_MULTIPLIER + #endif + #ifndef Y2_SLAVE_ADDRESS + #define Y2_SLAVE_ADDRESS 0 #endif #endif @@ -1515,56 +1516,56 @@ #ifndef Z_SLAVE_ADDRESS #define Z_SLAVE_ADDRESS 0 #endif - #if NUM_Z_STEPPERS >= 2 - #if defined(Z2_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z2) - #define Z2_SENSORLESS 1 - #endif - #if AXIS_HAS_STEALTHCHOP(Z2) - #define Z2_HAS_STEALTHCHOP 1 - #endif - #ifndef Z2_INTERPOLATE - #define Z2_INTERPOLATE Z_INTERPOLATE - #endif - #ifndef Z2_HOLD_MULTIPLIER - #define Z2_HOLD_MULTIPLIER Z_HOLD_MULTIPLIER - #endif - #ifndef Z2_SLAVE_ADDRESS - #define Z2_SLAVE_ADDRESS 0 - #endif + #endif + #if NUM_Z_STEPPERS >= 2 && AXIS_IS_TMC(Z2) + #if defined(Z2_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z2) + #define Z2_SENSORLESS 1 #endif - #if NUM_Z_STEPPERS >= 3 - #if defined(Z3_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z3) - #define Z3_SENSORLESS 1 - #endif - #if AXIS_HAS_STEALTHCHOP(Z3) - #define Z3_HAS_STEALTHCHOP 1 - #endif - #ifndef Z3_INTERPOLATE - #define Z3_INTERPOLATE Z_INTERPOLATE - #endif - #ifndef Z3_HOLD_MULTIPLIER - #define Z3_HOLD_MULTIPLIER Z_HOLD_MULTIPLIER - #endif - #ifndef Z3_SLAVE_ADDRESS - #define Z3_SLAVE_ADDRESS 0 - #endif + #if AXIS_HAS_STEALTHCHOP(Z2) + #define Z2_HAS_STEALTHCHOP 1 #endif - #if NUM_Z_STEPPERS >= 4 - #if defined(Z4_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z4) - #define Z4_SENSORLESS 1 - #endif - #if AXIS_HAS_STEALTHCHOP(Z4) - #define Z4_HAS_STEALTHCHOP 1 - #endif - #ifndef Z4_INTERPOLATE - #define Z4_INTERPOLATE Z_INTERPOLATE - #endif - #ifndef Z4_HOLD_MULTIPLIER - #define Z4_HOLD_MULTIPLIER Z_HOLD_MULTIPLIER - #endif - #ifndef Z4_SLAVE_ADDRESS - #define Z4_SLAVE_ADDRESS 0 - #endif + #ifndef Z2_INTERPOLATE + #define Z2_INTERPOLATE Z_INTERPOLATE + #endif + #ifndef Z2_HOLD_MULTIPLIER + #define Z2_HOLD_MULTIPLIER Z_HOLD_MULTIPLIER + #endif + #ifndef Z2_SLAVE_ADDRESS + #define Z2_SLAVE_ADDRESS 0 + #endif + #endif + #if NUM_Z_STEPPERS >= 3 && AXIS_IS_TMC(Z3) + #if defined(Z3_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z3) + #define Z3_SENSORLESS 1 + #endif + #if AXIS_HAS_STEALTHCHOP(Z3) + #define Z3_HAS_STEALTHCHOP 1 + #endif + #ifndef Z3_INTERPOLATE + #define Z3_INTERPOLATE Z_INTERPOLATE + #endif + #ifndef Z3_HOLD_MULTIPLIER + #define Z3_HOLD_MULTIPLIER Z_HOLD_MULTIPLIER + #endif + #ifndef Z3_SLAVE_ADDRESS + #define Z3_SLAVE_ADDRESS 0 + #endif + #endif + #if NUM_Z_STEPPERS >= 4 && AXIS_IS_TMC(Z4) + #if defined(Z4_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z4) + #define Z4_SENSORLESS 1 + #endif + #if AXIS_HAS_STEALTHCHOP(Z4) + #define Z4_HAS_STEALTHCHOP 1 + #endif + #ifndef Z4_INTERPOLATE + #define Z4_INTERPOLATE Z_INTERPOLATE + #endif + #ifndef Z4_HOLD_MULTIPLIER + #define Z4_HOLD_MULTIPLIER Z_HOLD_MULTIPLIER + #endif + #ifndef Z4_SLAVE_ADDRESS + #define Z4_SLAVE_ADDRESS 0 #endif #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index c99297ad46..6e3b4e177d 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -243,7 +243,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #if HAS_X2_STEPPER && !GOOD_AXIS_PINS(X2) #error "If X2_DRIVER_TYPE is defined, then X2 ENABLE/STEP/DIR pins are also needed." #endif -#if HAS_DUAL_Y_STEPPERS && !GOOD_AXIS_PINS(Y2) +#if HAS_Y2_STEPPER && !GOOD_AXIS_PINS(Y2) #error "If Y2_DRIVER_TYPE is defined, then Y2 ENABLE/STEP/DIR pins are also needed." #endif #if HAS_Z_AXIS @@ -4035,7 +4035,7 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." /** * Fixed-Time Motion limitations */ -#if ENABLED(FT_MOTION) && (NUM_AXES > 3 || E_STEPPERS > 1 || NUM_Z_STEPPERS > 1 || ANY(DUAL_X_CARRIAGE, HAS_DUAL_X_STEPPERS, HAS_DUAL_Y_STEPPERS, HAS_MULTI_EXTRUDER, MIXING_EXTRUDER)) +#if ENABLED(FT_MOTION) && (NUM_AXES > 3 || E_STEPPERS > 1 || NUM_Z_STEPPERS > 1 || ANY(DUAL_X_CARRIAGE, HAS_SYNCED_X_STEPPERS, HAS_SYNCED_Y_STEPPERS, HAS_MULTI_EXTRUDER, MIXING_EXTRUDER)) #error "FT_MOTION is currently limited to machines with 3 linear axes and a single extruder." #endif diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 3e4f65fd69..c811bf5e38 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -382,7 +382,7 @@ xyze_int8_t Stepper::count_direction{0}; A##4_STEP_WRITE(V); \ } -#if HAS_DUAL_X_STEPPERS +#if HAS_SYNCED_X_STEPPERS #define X_APPLY_DIR(v,Q) do{ X_DIR_WRITE(v); X2_DIR_WRITE(INVERT_DIR(X2_VS_X, v)); }while(0) #if ENABLED(X_DUAL_ENDSTOPS) #define X_APPLY_STEP(v,Q) DUAL_ENDSTOP_APPLY_STEP(X,v) @@ -403,7 +403,7 @@ xyze_int8_t Stepper::count_direction{0}; #define X_APPLY_STEP(v,Q) X_STEP_WRITE(v) #endif -#if HAS_DUAL_Y_STEPPERS +#if HAS_SYNCED_Y_STEPPERS #define Y_APPLY_DIR(v,Q) do{ Y_DIR_WRITE(v); Y2_DIR_WRITE(INVERT_DIR(Y2_VS_Y, v)); }while(0) #if ENABLED(Y_DUAL_ENDSTOPS) #define Y_APPLY_STEP(v,Q) DUAL_ENDSTOP_APPLY_STEP(Y,v) @@ -2892,7 +2892,7 @@ void Stepper::init() { TERN_(HAS_X2_DIR, X2_DIR_INIT()); #if HAS_Y_DIR Y_DIR_INIT(); - #if BOTH(HAS_DUAL_Y_STEPPERS, HAS_Y2_DIR) + #if BOTH(HAS_Y2_STEPPER, HAS_Y2_DIR) Y2_DIR_INIT(); #endif #endif @@ -2955,7 +2955,7 @@ void Stepper::init() { #endif Y_ENABLE_INIT(); if (Y_ENABLE_INIT_STATE) Y_ENABLE_WRITE(Y_ENABLE_INIT_STATE); - #if BOTH(HAS_DUAL_Y_STEPPERS, HAS_Y2_ENABLE) + #if BOTH(HAS_Y2_STEPPER, HAS_Y2_ENABLE) Y2_ENABLE_INIT(); if (Y_ENABLE_INIT_STATE) Y2_ENABLE_WRITE(Y_ENABLE_INIT_STATE); #endif @@ -3084,7 +3084,7 @@ void Stepper::init() { #endif #if HAS_Y_STEP - #if HAS_DUAL_Y_STEPPERS + #if HAS_Y2_STEPPER Y2_STEP_INIT(); Y2_STEP_WRITE(!STEP_STATE_Y); #endif diff --git a/Marlin/src/pins/pins_postprocess.h b/Marlin/src/pins/pins_postprocess.h index b0fe6bcb6b..e5467833e5 100644 --- a/Marlin/src/pins/pins_postprocess.h +++ b/Marlin/src/pins/pins_postprocess.h @@ -794,14 +794,14 @@ #endif // Y2 auto-assignment will use up an E stepper, but not if it's chained -#if HAS_DUAL_Y_STEPPERS && !defined(Y2_STEP_PIN) && !PIN_EXISTS(Y2_CS_PIN) +#if HAS_Y2_STEPPER && !defined(Y2_STEP_PIN) && !PIN_EXISTS(Y2_CS_PIN) #define Z2_E_INDEX INCREMENT(Y2_E_INDEX) #else #define Z2_E_INDEX Y2_E_INDEX #endif // The Y2 axis, if any, should be the next open extruder port -#if HAS_DUAL_Y_STEPPERS +#if HAS_Y2_STEPPER #ifndef Y2_STEP_PIN #define Y2_STEP_PIN _EPIN(Y2_E_INDEX, STEP) #define Y2_DIR_PIN _EPIN(Y2_E_INDEX, DIR) diff --git a/Marlin/src/pins/sensitive_pins.h b/Marlin/src/pins/sensitive_pins.h index b7b5195a89..e655663a73 100644 --- a/Marlin/src/pins/sensitive_pins.h +++ b/Marlin/src/pins/sensitive_pins.h @@ -785,7 +785,7 @@ #define _X2_PINS #endif -#if HAS_DUAL_Y_STEPPERS +#if HAS_Y2_STEPPER #if PIN_EXISTS(Y2_CS) && AXIS_HAS_SPI(Y2) #define _Y2_CS Y2_CS_PIN, #else From a6404aca45ff1e3f09ad7a0702ae95689fd81338 Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Tue, 9 May 2023 22:52:59 +0200 Subject: [PATCH 408/659] =?UTF-8?q?=F0=9F=94=A7=20Move=20SOFT=5FPWM=5FSCAL?= =?UTF-8?q?E=20fallback=20to=20cpp=20(#25800)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/module/temperature.cpp | 4 ++++ Marlin/src/module/temperature.h | 4 ---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index b4b1ba6372..4001ae63bf 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -3479,6 +3479,10 @@ void Temperature::isr() { static int8_t temp_count = -1; static ADCSensorState adc_sensor_state = StartupDelay; + + #ifndef SOFT_PWM_SCALE + #define SOFT_PWM_SCALE 0 + #endif static uint8_t pwm_count = _BV(SOFT_PWM_SCALE); // Avoid multiple loads of pwm_count diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index 2fdd1f02c8..27aef11c7e 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -41,10 +41,6 @@ #include "../feature/fancheck.h" #endif -#ifndef SOFT_PWM_SCALE - #define SOFT_PWM_SCALE 0 -#endif - #define HOTEND_INDEX TERN(HAS_MULTI_HOTEND, e, 0) #define E_NAME TERN_(HAS_MULTI_HOTEND, e) From 21e3e535a6868a84c9e591f6c35e952cc7f9d80f Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 10 May 2023 00:20:07 +0000 Subject: [PATCH 409/659] [cron] Bump distribution date (2023-05-10) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index ed2f818ecb..759b345647 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-09" +//#define STRING_DISTRIBUTION_DATE "2023-05-10" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 47faccbc25..6e50663215 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-09" + #define STRING_DISTRIBUTION_DATE "2023-05-10" #endif /** From 53b79f5f70b04b6e7bcc73dea3f37881acbe5f64 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 10 May 2023 04:02:44 -0500 Subject: [PATCH 410/659] =?UTF-8?q?=F0=9F=A9=B9=20No=20const=20on=20return?= =?UTF-8?q?=20type?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/types.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 173945a458..68bf8c1a87 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -962,11 +962,11 @@ public: #endif #undef MSET - FI const bool toggle(const AxisEnum n) { return TBI(bits, n); } + FI bool toggle(const AxisEnum n) { TBI(bits, n); return TEST(bits, n); } // Accessor via an AxisEnum (or any integer) [index] - FI const bool operator[](const int n) const { return TEST(bits, n); } - FI const bool operator[](const AxisEnum n) const { return TEST(bits, n); } + FI bool operator[](const int n) const { return TEST(bits, n); } + FI bool operator[](const AxisEnum n) const { return TEST(bits, n); } FI AxisBits& operator|=(const el &p) { bits |= el(p); return *this; } FI AxisBits& operator&=(const el &p) { bits &= el(p); return *this; } From 9cf1a8891f79f50627efa67aae85b7e19918eef2 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Wed, 10 May 2023 21:19:05 +1200 Subject: [PATCH 411/659] =?UTF-8?q?=F0=9F=A9=B9=20Optional=20X=20followup?= =?UTF-8?q?=20(#25804)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/types.h | 8 ++++++-- Marlin/src/module/stepper.h | 4 +++- Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h | 11 ----------- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 68bf8c1a87..20f589d60a 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -824,7 +824,9 @@ public: el bits; // x, y, z ... e0, e1, e2 ... hx, hy, hz struct { - bool NUM_AXIS_LIST(x:1, y:1, z:1, i:1, j:1, k:1, u:1, v:1, w:1); + #if NUM_AXES + bool NUM_AXIS_LIST(x:1, y:1, z:1, i:1, j:1, k:1, u:1, v:1, w:1); + #endif #define _EN_ITEM(N) bool e##N:1; REPEAT(EXTRUDERS,_EN_ITEM) #undef _EN_ITEM @@ -834,7 +836,9 @@ public: }; // X, Y, Z ... E0, E1, E2 ... HX, HY, HZ struct { - bool NUM_AXIS_LIST(X:1, Y:1, Z:1, I:1, J:1, K:1, U:1, V:1, W:1); + #if NUM_AXES + bool NUM_AXIS_LIST(X:1, Y:1, Z:1, I:1, J:1, K:1, U:1, V:1, W:1); + #endif #define _EN_ITEM(N) bool E##N:1; REPEAT(EXTRUDERS,_EN_ITEM) #undef _EN_ITEM diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index b6996aa932..134bee7ac6 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -73,7 +73,9 @@ typedef struct { union { ena_mask_t bits; struct { - bool NUM_AXIS_LIST(X:1, Y:1, Z:1, I:1, J:1, K:1, U:1, V:1, W:1); + #if NUM_AXES + bool NUM_AXIS_LIST(X:1, Y:1, Z:1, I:1, J:1, K:1, U:1, V:1, W:1); + #endif #if E_STATES bool LIST_N(E_STATES, E0:1, E1:1, E2:1, E3:1, E4:1, E5:1, E6:1, E7:1); #endif diff --git a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h index c3110462d1..21f27e452d 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h @@ -80,17 +80,6 @@ // // Steppers // -#define X_ENABLE_PIN -1 -#define X_STEP_PIN PA10 // Unused. Assigned so Marlin will compile -#define X_DIR_PIN -1 - -#define Y_ENABLE_PIN -1 -#define Y_STEP_PIN PA10 // Unused. Assigned so Marlin will compile -#define Y_DIR_PIN -1 - -#define Z_ENABLE_PIN -1 -#define Z_STEP_PIN PA10 // Unused. Assigned so Marlin will compile -#define Z_DIR_PIN -1 #define E0_ENABLE_PIN PD2 #define E0_STEP_PIN PD0 From 03bb28c277ce1c8e98c7b418ce607ecd58c58c4f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 14 Jul 2022 02:21:50 -0500 Subject: [PATCH 412/659] =?UTF-8?q?=F0=9F=8E=A8=20Misc.=20temperature=20cl?= =?UTF-8?q?eanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/controllerfan.cpp | 6 ++++- Marlin/src/feature/controllerfan.h | 3 +++ Marlin/src/gcode/control/M42.cpp | 26 ++------------------ Marlin/src/gcode/temp/M106_M107.cpp | 2 +- Marlin/src/module/temperature.cpp | 36 ++++++++++++++-------------- 5 files changed, 29 insertions(+), 44 deletions(-) diff --git a/Marlin/src/feature/controllerfan.cpp b/Marlin/src/feature/controllerfan.cpp index 4b3d9f5501..816ffb23b7 100644 --- a/Marlin/src/feature/controllerfan.cpp +++ b/Marlin/src/feature/controllerfan.cpp @@ -38,6 +38,10 @@ uint8_t ControllerFan::speed; const controllerFan_settings_t &ControllerFan::settings = controllerFan_defaults; #endif +#if ENABLED(FAN_SOFT_PWM) + uint8_t ControllerFan::soft_pwm_speed; +#endif + void ControllerFan::setup() { SET_OUTPUT(CONTROLLER_FAN_PIN); #ifdef CONTROLLER_FAN2_PIN @@ -98,7 +102,7 @@ void ControllerFan::update() { #endif #if ENABLED(FAN_SOFT_PWM) - thermalManager.soft_pwm_controller_speed = speed; + soft_pwm_speed = speed; #else if (PWM_PIN(CONTROLLER_FAN_PIN)) hal.set_pwm_duty(pin_t(CONTROLLER_FAN_PIN), speed); diff --git a/Marlin/src/feature/controllerfan.h b/Marlin/src/feature/controllerfan.h index 55eb2359b0..68502afa66 100644 --- a/Marlin/src/feature/controllerfan.h +++ b/Marlin/src/feature/controllerfan.h @@ -60,6 +60,9 @@ class ControllerFan { #else static const controllerFan_settings_t &settings; #endif + #if ENABLED(FAN_SOFT_PWM) + static uint8_t soft_pwm_speed; + #endif static bool state() { return speed > 0; } static void init() { reset(); } static void reset() { TERN_(CONTROLLER_FAN_EDITABLE, settings = controllerFan_defaults); } diff --git a/Marlin/src/gcode/control/M42.cpp b/Marlin/src/gcode/control/M42.cpp index 55ece67de7..cf2c218e92 100644 --- a/Marlin/src/gcode/control/M42.cpp +++ b/Marlin/src/gcode/control/M42.cpp @@ -87,30 +87,8 @@ void GcodeSuite::M42() { #if HAS_FAN switch (pin) { - #if HAS_FAN0 - case FAN0_PIN: thermalManager.fan_speed[0] = pin_status; return; - #endif - #if HAS_FAN1 - case FAN1_PIN: thermalManager.fan_speed[1] = pin_status; return; - #endif - #if HAS_FAN2 - case FAN2_PIN: thermalManager.fan_speed[2] = pin_status; return; - #endif - #if HAS_FAN3 - case FAN3_PIN: thermalManager.fan_speed[3] = pin_status; return; - #endif - #if HAS_FAN4 - case FAN4_PIN: thermalManager.fan_speed[4] = pin_status; return; - #endif - #if HAS_FAN5 - case FAN5_PIN: thermalManager.fan_speed[5] = pin_status; return; - #endif - #if HAS_FAN6 - case FAN6_PIN: thermalManager.fan_speed[6] = pin_status; return; - #endif - #if HAS_FAN7 - case FAN7_PIN: thermalManager.fan_speed[7] = pin_status; return; - #endif + #define _CASE(N) case FAN##N##_PIN: thermalManager.fan_speed[N] = pin_status; return; + REPEAT(FAN_COUNT, _CASE) } #endif diff --git a/Marlin/src/gcode/temp/M106_M107.cpp b/Marlin/src/gcode/temp/M106_M107.cpp index ae517c977b..6ba64cd7ba 100644 --- a/Marlin/src/gcode/temp/M106_M107.cpp +++ b/Marlin/src/gcode/temp/M106_M107.cpp @@ -85,7 +85,7 @@ void GcodeSuite::M106() { if (!got_preset && parser.seenval('S')) speed = parser.value_ushort(); - TERN_(FOAMCUTTER_XYUV, speed *= 2.55); // Get command in % of max heat + TERN_(FOAMCUTTER_XYUV, speed *= 2.55f); // Get command in % of max heat // Set speed, with constraint thermalManager.set_fan_speed(pfan, speed); diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 4001ae63bf..a92d070183 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -524,7 +524,7 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); #if HAS_TEMP_CHAMBER chamber_info_t Temperature::temp_chamber; // = { 0 } #if HAS_HEATED_CHAMBER - millis_t next_cool_check_ms_2 = 0; + millis_t next_cool_check_ms = 0; celsius_float_t old_temp = 9999; raw_adc_t Temperature::mintemp_raw_CHAMBER = TEMP_SENSOR_CHAMBER_RAW_LO_TEMP, Temperature::maxtemp_raw_CHAMBER = TEMP_SENSOR_CHAMBER_RAW_HI_TEMP; @@ -546,7 +546,7 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); raw_adc_t Temperature::mintemp_raw_COOLER = TEMP_SENSOR_COOLER_RAW_LO_TEMP, Temperature::maxtemp_raw_COOLER = TEMP_SENSOR_COOLER_RAW_HI_TEMP; #if WATCH_COOLER - cooler_watch_t Temperature::watch_cooler{0}; + cooler_watch_t Temperature::watch_cooler; // = { 0 } #endif millis_t Temperature::next_cooler_check_ms, Temperature::cooler_fan_flush_ms; #endif @@ -617,11 +617,11 @@ volatile bool Temperature::raw_temps_ready = false; #if MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED > 1 #define MULTI_MAX_CONSECUTIVE_LOW_TEMP_ERR 1 - uint8_t Temperature::consecutive_low_temperature_error[HOTENDS] = { 0 }; + uint8_t Temperature::consecutive_low_temperature_error[HOTENDS]; // = { 0 } #endif #if PREHEAT_TIME_HOTEND_MS > 0 - millis_t Temperature::preheat_end_ms_hotend[HOTENDS] { 0 }; + millis_t Temperature::preheat_end_ms_hotend[HOTENDS]; // = { 0 }; #endif #if HAS_HEATED_BED && PREHEAT_TIME_BED_MS > 0 millis_t Temperature::preheat_end_ms_bed = 0; @@ -1781,15 +1781,15 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { if (!flag_chamber_excess_heat && temp_chamber.is_above_target((HIGH_EXCESS_HEAT_LIMIT) - 1)) { // Open vent after MIN_COOLING_SLOPE_TIME_CHAMBER_VENT seconds if the // temperature didn't drop at least MIN_COOLING_SLOPE_DEG_CHAMBER_VENT - if (next_cool_check_ms_2 == 0 || ELAPSED(ms, next_cool_check_ms_2)) { + if (next_cool_check_ms == 0 || ELAPSED(ms, next_cool_check_ms)) { if (temp_chamber.celsius - old_temp > MIN_COOLING_SLOPE_DEG_CHAMBER_VENT) flag_chamber_excess_heat = true; // the bed is heating the chamber too much - next_cool_check_ms_2 = ms + SEC_TO_MS(MIN_COOLING_SLOPE_TIME_CHAMBER_VENT); + next_cool_check_ms = ms + SEC_TO_MS(MIN_COOLING_SLOPE_TIME_CHAMBER_VENT); old_temp = temp_chamber.celsius; } } else { - next_cool_check_ms_2 = 0; + next_cool_check_ms = 0; old_temp = 9999; } if (flag_chamber_excess_heat && temp_chamber.is_above_target((LOW_EXCESS_HEAT_LIMIT) - 1)) @@ -2492,7 +2492,7 @@ void Temperature::updateTemperaturesFromRawValues() { /** // DEBUG PREHEATING TIME SERIAL_ECHOLNPGM("\nExtruder = ", e, " Preheat On/Off = ", is_preheating(e)); - const float test_is_preheating = (preheat_end_time[HOTEND_INDEX] - millis()) * 0.001f; + const float test_is_preheating = (preheat_end_ms_hotend[HOTEND_INDEX] - millis()) * 0.001f; if (test_is_preheating < 31) SERIAL_ECHOLNPGM("Extruder = ", e, " Preheat remaining time = ", test_is_preheating, "s", "\n"); //*/ @@ -3551,7 +3551,7 @@ void Temperature::isr() { #if ENABLED(FAN_SOFT_PWM) #if ENABLED(USE_CONTROLLER_FAN) - WRITE(CONTROLLER_FAN_PIN, soft_pwm_controller.add(pwm_mask, soft_pwm_controller_speed)); + WRITE(CONTROLLER_FAN_PIN, soft_pwm_controller.add(pwm_mask, controllerFan.soft_pwm_speed)); #endif #define _FAN_PWM(N) do{ \ @@ -4183,7 +4183,7 @@ void Temperature::isr() { bool wants_to_cool = false; celsius_float_t target_temp = -1.0, old_temp = 9999.0; - millis_t now, next_temp_ms = 0, next_cool_check_ms = 0; + millis_t now, next_temp_ms = 0, cool_check_ms = 0; wait_for_heatup = true; do { // Target temperature might be changed during the loop @@ -4241,9 +4241,9 @@ void Temperature::isr() { if (wants_to_cool) { // Break after MIN_COOLING_SLOPE_TIME seconds // if the temperature did not drop at least MIN_COOLING_SLOPE_DEG - if (!next_cool_check_ms || ELAPSED(now, next_cool_check_ms)) { + if (!cool_check_ms || ELAPSED(now, cool_check_ms)) { if (old_temp - temp < float(MIN_COOLING_SLOPE_DEG)) break; - next_cool_check_ms = now + SEC_TO_MS(MIN_COOLING_SLOPE_TIME); + cool_check_ms = now + SEC_TO_MS(MIN_COOLING_SLOPE_TIME); old_temp = temp; } } @@ -4320,7 +4320,7 @@ void Temperature::isr() { bool wants_to_cool = false; celsius_float_t target_temp = -1, old_temp = 9999; - millis_t now, next_temp_ms = 0, next_cool_check_ms = 0; + millis_t now, next_temp_ms = 0, cool_check_ms = 0; wait_for_heatup = true; do { // Target temperature might be changed during the loop @@ -4376,9 +4376,9 @@ void Temperature::isr() { if (wants_to_cool) { // Break after MIN_COOLING_SLOPE_TIME_BED seconds // if the temperature did not drop at least MIN_COOLING_SLOPE_DEG_BED - if (!next_cool_check_ms || ELAPSED(now, next_cool_check_ms)) { + if (!cool_check_ms || ELAPSED(now, cool_check_ms)) { if (old_temp - temp < float(MIN_COOLING_SLOPE_DEG_BED)) break; - next_cool_check_ms = now + SEC_TO_MS(MIN_COOLING_SLOPE_TIME_BED); + cool_check_ms = now + SEC_TO_MS(MIN_COOLING_SLOPE_TIME_BED); old_temp = temp; } } @@ -4515,7 +4515,7 @@ void Temperature::isr() { bool wants_to_cool = false; float target_temp = -1, old_temp = 9999; - millis_t now, next_temp_ms = 0, next_cool_check_ms = 0; + millis_t now, next_temp_ms = 0, cool_check_ms = 0; wait_for_heatup = true; do { // Target temperature might be changed during the loop @@ -4567,9 +4567,9 @@ void Temperature::isr() { if (wants_to_cool) { // Break after MIN_COOLING_SLOPE_TIME_CHAMBER seconds // if the temperature did not drop at least MIN_COOLING_SLOPE_DEG_CHAMBER - if (!next_cool_check_ms || ELAPSED(now, next_cool_check_ms)) { + if (!cool_check_ms || ELAPSED(now, cool_check_ms)) { if (old_temp - temp < float(MIN_COOLING_SLOPE_DEG_CHAMBER)) break; - next_cool_check_ms = now + SEC_TO_MS(MIN_COOLING_SLOPE_TIME_CHAMBER); + cool_check_ms = now + SEC_TO_MS(MIN_COOLING_SLOPE_TIME_CHAMBER); old_temp = temp; } } From 7707cbf338436d7e0331fc95bc82ead06ca50f90 Mon Sep 17 00:00:00 2001 From: Chris Bagwell Date: Wed, 10 May 2023 05:59:28 -0500 Subject: [PATCH 413/659] =?UTF-8?q?=F0=9F=94=A7=20Fix=20SHAPING=5FMIN=5FFR?= =?UTF-8?q?EQ=20check=20(#25358)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/SanityCheck.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 6e3b4e177d..9c54208c53 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -4008,13 +4008,13 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." #endif #endif + #ifdef SHAPING_MIN_FREQ + static_assert((SHAPING_MIN_FREQ) > 0, "SHAPING_MIN_FREQ must be > 0."); + #else + TERN_(INPUT_SHAPING_X, static_assert((SHAPING_FREQ_X) > 0, "SHAPING_FREQ_X must be > 0 or SHAPING_MIN_FREQ must be set.")); + TERN_(INPUT_SHAPING_Y, static_assert((SHAPING_FREQ_Y) > 0, "SHAPING_FREQ_Y must be > 0 or SHAPING_MIN_FREQ must be set.")); + #endif #ifdef __AVR__ - #ifdef SHAPING_MIN_FREQ - static_assert((SHAPING_MIN_FREQ) > 0, "SHAPING_MIN_FREQ must be > 0."); - #else - TERN_(INPUT_SHAPING_X, static_assert((SHAPING_FREQ_X) > 0, "SHAPING_FREQ_X must be > 0 or SHAPING_MIN_FREQ must be set.")); - TERN_(INPUT_SHAPING_Y, static_assert((SHAPING_FREQ_Y) > 0, "SHAPING_FREQ_Y must be > 0 or SHAPING_MIN_FREQ must be set.")); - #endif #if ENABLED(INPUT_SHAPING_X) #if F_CPU > 16000000 static_assert((SHAPING_FREQ_X) == 0 || (SHAPING_FREQ_X) * 2 * 0x10000 >= (STEPPER_TIMER_RATE), "SHAPING_FREQ_X is below the minimum (20) for AVR 20MHz."); From a07b7161e9acac0bb334e31f06b91725ac1106c1 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 11 May 2023 00:20:08 +0000 Subject: [PATCH 414/659] [cron] Bump distribution date (2023-05-11) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 759b345647..5c696db45c 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-10" +//#define STRING_DISTRIBUTION_DATE "2023-05-11" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 6e50663215..8ab8e76ed7 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-10" + #define STRING_DISTRIBUTION_DATE "2023-05-11" #endif /** From 8fb9b5804e1ff91c4f5d94493db8924a063b0659 Mon Sep 17 00:00:00 2001 From: Muhammad Arslan <55940958+arslan437@users.noreply.github.com> Date: Thu, 11 May 2023 18:18:24 +0500 Subject: [PATCH 415/659] =?UTF-8?q?=E2=9C=A8=20Blackpill-based=20custom=20?= =?UTF-8?q?board=20(#25152)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: striker --- Marlin/src/core/boards.h | 1 + Marlin/src/pins/pins.h | 2 + Marlin/src/pins/stm32f1/pins_CREALITY_V4.h | 8 - .../src/pins/stm32f4/pins_BLACKPILL_CUSTOM.h | 140 ++++++++++++++++++ Marlin/src/pins/stm32f4/pins_TRONXY_V10.h | 7 - ini/stm32f4.ini | 10 ++ 6 files changed, 153 insertions(+), 15 deletions(-) create mode 100644 Marlin/src/pins/stm32f4/pins_BLACKPILL_CUSTOM.h diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index 691b03ed0a..3820ef8a07 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -451,6 +451,7 @@ #define BOARD_MKS_SKIPR_V1 5244 // MKS SKIPR v1.0 all-in-one board (STM32F407VE) #define BOARD_TRONXY_V10 5245 // TRONXY V10 (STM32F446ZE) #define BOARD_CREALITY_F401RE 5246 // Creality CR4NS200141C13 (STM32F401RE) as found in the Ender-5 S1 +#define BOARD_BLACKPILL_CUSTOM 5247 // Custom board based on STM32F401CDU6. // // ARM Cortex-M7 diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 5bf3b08810..369506a748 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -792,6 +792,8 @@ #include "stm32f4/pins_TRONXY_V10.h" // STM32F4 env:STM32F446_tronxy #elif MB(CREALITY_F401RE) #include "stm32f4/pins_CREALITY_F401.h" // STM32F4 env:STM32F401RE_creality +#elif MB(BLACKPILL_CUSTOM) + #include "stm32f4/pins_BLACKPILL_CUSTOM.h" // STM32F4 env:STM32F401CD_blackpill_stlink // // ARM Cortex M7 diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h index 6cb4d48d58..3d0a1885af 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h @@ -299,11 +299,3 @@ #define UART4_RX_PIN PC11 // default uses sdcard SDIO_D3 #define UART5_TX_PIN PC12 // default uses sdcard SDIO_CK #define UART5_RX_PIN PD2 // default uses sdcard SDIO_CMD - -// SDIO pins -#define SDIO_D0_PIN PC8 -#define SDIO_D1_PIN PC9 -#define SDIO_D2_PIN PC10 -#define SDIO_D3_PIN PC11 -#define SDIO_CK_PIN PC12 -#define SDIO_CMD_PIN PD2 diff --git a/Marlin/src/pins/stm32f4/pins_BLACKPILL_CUSTOM.h b/Marlin/src/pins/stm32f4/pins_BLACKPILL_CUSTOM.h new file mode 100644 index 0000000000..9049a553fb --- /dev/null +++ b/Marlin/src/pins/stm32f4/pins_BLACKPILL_CUSTOM.h @@ -0,0 +1,140 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "env_validate.h" + +#ifndef BOARD_INFO_NAME + #define BOARD_INFO_NAME "Custom Blackpill" +#endif + +#ifndef DEFAULT_MACHINE_NAME + #define DEFAULT_MACHINE_NAME "SLA Printer" +#endif + +#define DISABLE_DEBUG false // DISABLE_(DEBUG|JTAG) is not supported for STM32F4. +#define ALLOW_STM32F4 +#define BOARD_NO_NATIVE_USB + +// +// EEPROM +// +#if NO_EEPROM_SELECTED + #define IIC_BL24CXX_EEPROM // EEPROM on I2C-0 + //#define SDCARD_EEPROM_EMULATION +#endif + +// +// Servos +// +#if !defined(SERVO0_PIN) && !defined(HAS_PIN_27_BOARD) + #define SERVO0_PIN PC13 // BLTouch OUT +#endif + +#define LED_PIN PC13 + +// +// Limit Switches +// +#define Z_STOP_PIN PA15 +#define X_STOP_PIN PA11 +#define Y_STOP_PIN PA12 + +// +// Filament Runout Sensor +// +#define FIL_RUNOUT_PIN PB15 // "Pulled-high" + +// +// Steppers +// +#define X_STEP_PIN PB0 +#define X_DIR_PIN PB1 +#define X_ENABLE_PIN PB2 // Shared + +#define Y_STEP_PIN PB3 +#define Y_DIR_PIN PB4 +#define Y_ENABLE_PIN X_ENABLE_PIN + +#define Z_STEP_PIN PB8 +#define Z_DIR_PIN PB5 +#define Z_ENABLE_PIN X_ENABLE_PIN + +#define E0_STEP_PIN PB9 +#define E0_DIR_PIN PB10 +#define E0_ENABLE_PIN X_ENABLE_PIN + +// +// Temperature Sensors +// +#define TEMP_0_PIN PA0 // TH1 +#define TEMP_BED_PIN PA1 // TB1 + +// +// Heaters / Fans +// +#define HEATER_BED_PIN PA2 // HOT BED +#define FAN1_PIN PA8 // extruder fan +#define HEATER_0_PIN PA3 // HEATER1 + +// +// Encoder pins +// +#if ENABLED(OLED_PANEL_TINYBOY2) +#define BTN_EN1 PB12 +#define BTN_EN2 PB13 +#define BTN_ENC PB14 +#define BEEPER_PIN PC15 +#endif + +// +// SD Card +// +#define ONBOARD_SPI_DEVICE 1 +// #define ONBOARD_SD_CS_PIN PA4 // SDSS + +#define SD_DETECT_PIN -1 +#define SDCARD_CONNECTION ONBOARD +//#define SDIO_SUPPORT +#define NO_SD_HOST_DRIVE // This board's SD is only seen by the printer + +#if SD_CONNECTION_IS(ONBOARD) + #define SDSS PA4 + #define SD_SCK_PIN PA5 + #define SD_MISO_PIN PA6 + #define SD_MOSI_PIN PA7 +#endif + +// Pins for documentation and sanity checks only. +// Changing these will not change the pin they are on. + +// Hardware UART pins +#define UART1_TX_PIN PA9 // default uses CH340 RX +#define UART1_RX_PIN PA10 // default uses CH340 TX +#define UART2_TX_PIN PA2 // default uses HEATER_BED_PIN +#define UART2_RX_PIN PA3 // not connected +#define UART3_TX_PIN PB10 // default uses LCD connector +#define UART3_RX_PIN PB11 // default uses LCD connector +#define UART4_TX_PIN PC10 // default uses sdcard SDIO_D2 +#define UART4_RX_PIN PC11 // default uses sdcard SDIO_D3 +#define UART5_TX_PIN PC12 // default uses sdcard SDIO_CK +#define UART5_RX_PIN PD2 // default uses sdcard SDIO_CMD diff --git a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h index 1677b45697..d5752e43dc 100644 --- a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h +++ b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h @@ -255,10 +255,3 @@ #define SD_DETECT_PIN -1 // PF0, but not connected #define SDIO_CLOCK 4500000 #define SDIO_READ_RETRIES 16 - -#define SDIO_D0_PIN PC8 -#define SDIO_D1_PIN PC9 -#define SDIO_D2_PIN PC10 -#define SDIO_D3_PIN PC11 -#define SDIO_CK_PIN PC12 -#define SDIO_CMD_PIN PD2 diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini index 29c3f5b959..7dfffe4764 100644 --- a/ini/stm32f4.ini +++ b/ini/stm32f4.ini @@ -772,3 +772,13 @@ build_flags = ${stm32_variant.build_flags} -DSTM32F4xx build_unflags = ${stm32_variant.build_unflags} -fno-rtti -DUSBCON -DUSBD_USE_CDC + +# +# Blackpill +# +[env:STM32F401CD_blackpill_stlink] +platform = ${common_stm32.platform} +extends = common_stm32 +board = blackpill_f401cc +upload_protocol = stlink +monitor_speed = 115200 From 01f5bd333055e919677d95e05bec1f5f067374a4 Mon Sep 17 00:00:00 2001 From: StevilKnevil Date: Fri, 12 May 2023 01:09:02 +0100 Subject: [PATCH 416/659] =?UTF-8?q?=F0=9F=9A=B8=20Improved=20MPCTEMP=20aut?= =?UTF-8?q?otune=20(#25503)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 62 ++-- Marlin/src/core/millis_t.h | 1 + Marlin/src/gcode/temp/M306.cpp | 14 +- Marlin/src/module/temperature.cpp | 502 +++++++++++++++++++----------- Marlin/src/module/temperature.h | 67 +++- 5 files changed, 425 insertions(+), 221 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 8818b04a84..fee89898a3 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -650,14 +650,18 @@ // @section hotend temp -// Enable PIDTEMP for PID control or MPCTEMP for Predictive Model. -// temperature control. Disable both for bang-bang heating. -#define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning -//#define MPCTEMP // ** EXPERIMENTAL ** +/** + * Temperature Control + * + * (NONE) : Bang-bang heating + * PIDTEMP : PID temperature control (~4.1K) + * MPCTEMP : Predictive Model temperature control. (~1.8K without auto-tune) + */ +#define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning +//#define MPCTEMP // ** EXPERIMENTAL ** See https://marlinfw.org/docs/features/model_predictive_control.html -#define BANG_MAX 255 // Limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#define PID_K1 0.95 // Smoothing factor within any PID loop +#define PID_MAX 255 // Limit hotend current while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current +#define PID_K1 0.95 // Smoothing factor within any PID loop #if ENABLED(PIDTEMP) //#define PID_DEBUG // Print PID debug data to the serial port. Use 'M303 D' to toggle activation. @@ -675,6 +679,8 @@ #define DEFAULT_Ki 1.08 #define DEFAULT_Kd 114.00 #endif +#else + #define BANG_MAX 255 // Limit hotend current while in bang-bang mode; 255=full current #endif /** @@ -686,11 +692,11 @@ * @section mpctemp */ #if ENABLED(MPCTEMP) - //#define MPC_AUTOTUNE // Include a method to do MPC auto-tuning (~5664-5882 bytes of flash) - //#define MPC_EDIT_MENU // Add MPC editing to the "Advanced Settings" menu. (~1300 bytes of flash) + //#define MPC_AUTOTUNE // Include a method to do MPC auto-tuning (~6.3K bytes of flash) + //#define MPC_EDIT_MENU // Add MPC editing to the "Advanced Settings" menu. (~1.3K bytes of flash) //#define MPC_AUTOTUNE_MENU // Add MPC auto-tuning to the "Advanced Settings" menu. (~350 bytes of flash) - #define MPC_MAX BANG_MAX // (0..255) Current to nozzle while MPC is active. + #define MPC_MAX 255 // (0..255) Current to nozzle while MPC is active. #define MPC_HEATER_POWER { 40.0f } // (W) Heat cartridge powers. #define MPC_INCLUDE_FAN // Model the fan speed? @@ -725,23 +731,7 @@ //====================== PID > Bed Temperature Control ====================== //=========================================================================== -/** - * PID Bed Heating - * - * If this option is enabled set PID constants below. - * If this option is disabled, bang-bang will be used and BED_LIMIT_SWITCHING will enable hysteresis. - * - * The PID frequency will be the same as the extruder PWM. - * If PID_dT is the default, and correct for the hardware/configuration, that means 7.689Hz, - * which is fine for driving a square wave into a resistive load and does not significantly - * impact FET heating. This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W - * heater. If your configuration is significantly different than this and you don't understand - * the issues involved, don't use bed PID until someone else verifies that your hardware works. - * @section bed temp - */ -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING +// @section bed temp /** * Max Bed Power @@ -751,6 +741,20 @@ */ #define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current +/** + * PID Bed Heating + * + * The PID frequency will be the same as the extruder PWM. + * If PID_dT is the default, and correct for the hardware/configuration, that means 7.689Hz, + * which is fine for driving a square wave into a resistive load and does not significantly + * impact FET heating. This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W + * heater. If your configuration is significantly different than this and you don't understand + * the issues involved, don't use bed PID until someone else verifies that your hardware works. + * + * With this option disabled, bang-bang will be used. BED_LIMIT_SWITCHING enables hysteresis. + */ +//#define PIDTEMPBED + #if ENABLED(PIDTEMPBED) //#define MIN_BED_POWER 0 //#define PID_BED_DEBUG // Print Bed PID debug data to the serial port. @@ -762,7 +766,9 @@ #define DEFAULT_bedKd 305.4 // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED +#else + //#define BED_LIMIT_SWITCHING // Keep the bed temperature within BED_HYSTERESIS of the target +#endif //=========================================================================== //==================== PID > Chamber Temperature Control ==================== diff --git a/Marlin/src/core/millis_t.h b/Marlin/src/core/millis_t.h index 95bc40e1ec..e7032a2e55 100644 --- a/Marlin/src/core/millis_t.h +++ b/Marlin/src/core/millis_t.h @@ -28,6 +28,7 @@ typedef uint32_t millis_t; #define SEC_TO_MS(N) millis_t((N)*1000UL) #define MIN_TO_MS(N) SEC_TO_MS((N)*60UL) #define MS_TO_SEC(N) millis_t((N)/1000UL) +#define MS_TO_SEC_PRECISE(N) (float(N)/1000.0f) #define PENDING(NOW,SOON) ((int32_t)(NOW-(SOON))<0) #define ELAPSED(NOW,SOON) (!PENDING(NOW,SOON)) diff --git a/Marlin/src/gcode/temp/M306.cpp b/Marlin/src/gcode/temp/M306.cpp index d0c005ea4e..7d2d94952f 100644 --- a/Marlin/src/gcode/temp/M306.cpp +++ b/Marlin/src/gcode/temp/M306.cpp @@ -42,7 +42,10 @@ * R Sensor responsiveness (= transfer coefficient / heat capcity). * * With MPC_AUTOTUNE: - * T Autotune the specified or active extruder. + * T Autotune the extruder specified with 'E' or the active extruder. + * S0 : Autotuning method AUTO (default) + * S1 : Autotuning method DIFFERENTIAL + * S2 : Autotuning method ASYMPTOTIC */ void GcodeSuite::M306() { @@ -54,8 +57,15 @@ void GcodeSuite::M306() { #if ENABLED(MPC_AUTOTUNE) if (parser.seen_test('T')) { + Temperature::MPCTuningType tuning_type; + const uint8_t type = parser.byteval('S', 0); + switch (type) { + case 1: tuning_type = Temperature::MPCTuningType::FORCE_DIFFERENTIAL; break; + case 2: tuning_type = Temperature::MPCTuningType::FORCE_ASYMPTOTIC; break; + default: tuning_type = Temperature::MPCTuningType::AUTO; break; + } LCD_MESSAGE(MSG_MPC_AUTOTUNE); - thermalManager.MPC_autotune(e); + thermalManager.MPC_autotune(e, tuning_type); ui.reset_status(); return; } diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index a92d070183..8bcaf5d83f 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -722,16 +722,14 @@ volatile bool Temperature::raw_temps_ready = false; TERN_(DWIN_PID_TUNE, DWIN_PidTuning(isbed ? PIDTEMPBED_START : PIDTEMP_START)); if (target > GHV(CHAMBER_MAX_TARGET, BED_MAX_TARGET, temp_range[heater_id].maxtemp - (HOTEND_OVERSHOOT))) { - SERIAL_ECHOPGM(STR_PID_AUTOTUNE); - SERIAL_ECHOLNPGM(STR_PID_TEMP_TOO_HIGH); + SERIAL_ECHOPGM(STR_PID_AUTOTUNE); SERIAL_ECHOLNPGM(STR_PID_TEMP_TOO_HIGH); TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_TEMP_TOO_HIGH)); TERN_(DWIN_PID_TUNE, DWIN_PidTuning(PID_TEMP_TOO_HIGH)); TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_PID_TEMP_TOO_HIGH))); return; } - SERIAL_ECHOPGM(STR_PID_AUTOTUNE); - SERIAL_ECHOLNPGM(STR_PID_AUTOTUNE_START); + SERIAL_ECHOPGM(STR_PID_AUTOTUNE); SERIAL_ECHOLNPGM(STR_PID_AUTOTUNE_START); disable_all_heaters(); TERN_(AUTO_POWER_CONTROL, powerManager.power_on()); @@ -816,8 +814,7 @@ volatile bool Temperature::raw_temps_ready = false; #define MAX_OVERSHOOT_PID_AUTOTUNE 30 #endif if (current_temp > target + MAX_OVERSHOOT_PID_AUTOTUNE) { - SERIAL_ECHOPGM(STR_PID_AUTOTUNE); - SERIAL_ECHOLNPGM(STR_PID_TEMP_TOO_HIGH); + SERIAL_ECHOPGM(STR_PID_AUTOTUNE); SERIAL_ECHOLNPGM(STR_PID_TEMP_TOO_HIGH); TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_TEMP_TOO_HIGH)); TERN_(DWIN_PID_TUNE, DWIN_PidTuning(PID_TEMP_TOO_HIGH)); TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_PID_TEMP_TOO_HIGH))); @@ -859,14 +856,12 @@ volatile bool Temperature::raw_temps_ready = false; TERN_(DWIN_PID_TUNE, DWIN_PidTuning(PID_TUNING_TIMEOUT)); TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_TUNING_TIMEOUT)); TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_PID_TIMEOUT))); - SERIAL_ECHOPGM(STR_PID_AUTOTUNE); - SERIAL_ECHOLNPGM(STR_PID_TIMEOUT); + SERIAL_ECHOPGM(STR_PID_AUTOTUNE); SERIAL_ECHOLNPGM(STR_PID_TIMEOUT); break; } if (cycles > ncycles && cycles > 2) { - SERIAL_ECHOPGM(STR_PID_AUTOTUNE); - SERIAL_ECHOLNPGM(STR_PID_AUTOTUNE_FINISHED); + SERIAL_ECHOPGM(STR_PID_AUTOTUNE); SERIAL_ECHOLNPGM(STR_PID_AUTOTUNE_FINISHED); TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_PID_AUTOTUNE_DONE))); #if EITHER(PIDTEMPBED, PIDTEMPCHAMBER) @@ -944,60 +939,266 @@ volatile bool Temperature::raw_temps_ready = false; #define SINGLEFAN 1 #endif - void Temperature::MPC_autotune(const uint8_t e) { - auto housekeeping = [] (millis_t &ms, const uint8_t e, celsius_float_t ¤t_temp, millis_t &next_report_ms) { - ms = millis(); + #define DEBUG_MPC_AUTOTUNE 1 - if (updateTemperaturesIfReady()) { // temp sample ready - current_temp = degHotend(e); - TERN_(HAS_FAN_LOGIC, manage_extruder_fans(ms)); + millis_t Temperature::MPC_autotuner::curr_time_ms, Temperature::MPC_autotuner::next_report_ms; + + celsius_float_t Temperature::MPC_autotuner::temp_samples[16]; + uint8_t Temperature::MPC_autotuner::sample_count; + uint16_t Temperature::MPC_autotuner::sample_distance; + + // Parameters from differential analysis + celsius_float_t Temperature::MPC_autotuner::temp_fastest; + + #if HAS_FAN + float Temperature::MPC_autotuner::power_fan255; + #endif + + Temperature::MPC_autotuner::MPC_autotuner(const uint8_t extruderIdx) : e(extruderIdx) { + TERN_(TEMP_TUNING_MAINTAIN_FAN, adaptive_fan_slowing = false); + } + + Temperature::MPC_autotuner::~MPC_autotuner() { + wait_for_heatup = false; + + ui.reset_status(); + + temp_hotend[e].target = 0.0f; + temp_hotend[e].soft_pwm_amount = 0; + #if HAS_FAN + set_fan_speed(TERN(SINGLEFAN, 0, e), 0); + planner.sync_fan_speeds(fan_speed); + #endif + + do_z_clearance(MPC_TUNING_END_Z, false); + + TERN_(TEMP_TUNING_MAINTAIN_FAN, adaptive_fan_slowing = true); + } + + Temperature::MPC_autotuner::MeasurementState Temperature::MPC_autotuner::measure_ambient_temp() { + init_timers(); + const millis_t test_interval_ms = 10000UL; + millis_t next_test_ms = curr_time_ms + test_interval_ms; + ambient_temp = current_temp = degHotend(e); + wait_for_heatup = true; + + for (;;) { // Can be interrupted with M108 + if (housekeeping() == CANCELLED) return CANCELLED; + + if (ELAPSED(curr_time_ms, next_test_ms)) { + if (current_temp >= ambient_temp) { + ambient_temp = (ambient_temp + current_temp) / 2.0f; + break; + } + ambient_temp = current_temp; + next_test_ms += test_interval_ms; } + } + wait_for_heatup = false; - if (ELAPSED(ms, next_report_ms)) { - next_report_ms += 1000UL; + #if ENABLED(DEBUG_MPC_AUTOTUNE) + SERIAL_ECHOLNPGM("MPC_autotuner::measure_ambient_temp() Completed"); + SERIAL_ECHOLNPGM("====="); + SERIAL_ECHOLNPGM("ambient_temp ", get_ambient_temp()); + #endif - print_heater_states(e); - SERIAL_EOL(); + return SUCCESS; + } + + Temperature::MPC_autotuner::MeasurementState Temperature::MPC_autotuner::measure_heatup() { + init_timers(); + constexpr millis_t test_interval_ms = 1000UL; + millis_t next_test_time_ms = curr_time_ms + test_interval_ms; + MPCHeaterInfo &hotend = temp_hotend[e]; + + current_temp = degHotend(e); + millis_t heat_start_time_ms = curr_time_ms; + sample_count = 0; + sample_distance = 1; + t1_time = 0; + + hotend.target = 200.0f; // So M105 looks nice + hotend.soft_pwm_amount = (MPC_MAX) >> 1; + + // Initialise rate of change to to steady state at current time + temp_samples[0] = temp_samples[1] = temp_samples[2] = current_temp; + time_fastest = rate_fastest = 0; + + wait_for_heatup = true; + for (;;) { // Can be interrupted with M108 + if (housekeeping() == CANCELLED) return CANCELLED; + + if (ELAPSED(curr_time_ms, next_test_time_ms)) { + if (current_temp < 100.0f) { + // Initial regime (below 100deg): Measure rate of change of heating for differential tuning + + // Update the buffer of previous readings + temp_samples[0] = temp_samples[1]; + temp_samples[1] = temp_samples[2]; + temp_samples[2] = current_temp; + + // Measure the rate of change of temperature, https://en.wikipedia.org/wiki/Symmetric_derivative + const float h = MS_TO_SEC_PRECISE(test_interval_ms), + curr_rate = (temp_samples[2] - temp_samples[0]) / 2 * h; + if (curr_rate > rate_fastest) { + // Update fastest values + rate_fastest = curr_rate; + temp_fastest = temp_samples[1]; + time_fastest = get_elapsed_heating_time(); + } + + next_test_time_ms += test_interval_ms; + + } + else if (current_temp < 200.0f) { + // Second regime (after 100deg) measure 3 points to determine asymptotic temperature + + // If there are too many samples, space them more widely + if (sample_count == COUNT(temp_samples)) { + for (uint8_t i = 0; i < COUNT(temp_samples) / 2; i++) + temp_samples[i] = temp_samples[i * 2]; + sample_count /= 2; + sample_distance *= 2; + } + + if (sample_count == 0) t1_time = MS_TO_SEC_PRECISE(curr_time_ms - heat_start_time_ms); + temp_samples[sample_count++] = current_temp; + + if (current_temp >= 200.0f) break; + + next_test_time_ms += test_interval_ms * sample_distance; + + } + else { + // Third regime (after 200deg) finished gathering data so finish + break; + } } + } + wait_for_heatup = false; - hal.idletask(); - TERN(DWIN_CREALITY_LCD, DWIN_Update(), ui.update()); + hotend.soft_pwm_amount = 0; - if (!wait_for_heatup) { - SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_INTERRUPTED); - TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(MPC_INTERRUPTED)); - return true; - } + elapsed_heating_time = MS_TO_SEC_PRECISE(curr_time_ms - heat_start_time_ms); - return false; - }; + // Ensure sample count is odd so that we have 3 equally spaced samples + if (sample_count == 0) return FAILED; + if (sample_count % 2 == 0) sample_count--; - struct OnExit { - uint8_t e; - OnExit(const uint8_t _e) { this->e = _e; } - ~OnExit() { - wait_for_heatup = false; + #if ENABLED(DEBUG_MPC_AUTOTUNE) + SERIAL_ECHOLNPGM("MPC_autotuner::measure_heatup() Completed"); + SERIAL_ECHOLNPGM("====="); + SERIAL_ECHOLNPGM("t1_time ", t1_time); + SERIAL_ECHOLNPGM("sample_count ", sample_count); + SERIAL_ECHOLNPGM("sample_distance ", sample_distance); + for (uint8_t i = 0; i < sample_count; i++) + SERIAL_ECHOLNPGM("sample ", i, " : ", temp_samples[i]); + SERIAL_ECHOLNPGM("t1 ", get_sample_1_temp(), " t2 ", get_sample_2_temp(), " t3 ", get_sample_3_temp()); + #endif - ui.reset_status(); + return SUCCESS; + } - temp_hotend[e].target = 0.0f; - temp_hotend[e].soft_pwm_amount = 0; - #if HAS_FAN - set_fan_speed(TERN(SINGLEFAN, 0, e), 0); - planner.sync_fan_speeds(fan_speed); - #endif - - do_z_clearance(MPC_TUNING_END_Z, false); - - TERN_(TEMP_TUNING_MAINTAIN_FAN, adaptive_fan_slowing = true); - } - } on_exit(e); - - SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_START, e); + Temperature::MPC_autotuner::MeasurementState Temperature::MPC_autotuner::measure_transfer() { + init_timers(); + const millis_t test_interval_ms = SEC_TO_MS(MPC_dT); + millis_t next_test_ms = curr_time_ms + test_interval_ms; MPCHeaterInfo &hotend = temp_hotend[e]; MPC_t &mpc = hotend.mpc; - TERN_(TEMP_TUNING_MAINTAIN_FAN, adaptive_fan_slowing = false); + constexpr millis_t settle_time = 20000UL, test_duration = 20000UL; + millis_t settle_end_ms = curr_time_ms + settle_time, + test_end_ms = settle_end_ms + test_duration; + float total_energy_fan0 = 0.0f; + #if HAS_FAN + bool fan0_done = false; + float total_energy_fan255 = 0.0f; + #endif + float last_temp = current_temp; + + wait_for_heatup = true; + for (;;) { // Can be interrupted with M108 + if (housekeeping() == CANCELLED) return CANCELLED; + + if (ELAPSED(curr_time_ms, next_test_ms)) { + hotend.soft_pwm_amount = (int)get_pid_output_hotend(e) >> 1; + + if (ELAPSED(curr_time_ms, settle_end_ms) && !ELAPSED(curr_time_ms, test_end_ms) && TERN1(HAS_FAN, !fan0_done)) + total_energy_fan0 += mpc.heater_power * hotend.soft_pwm_amount / 127 * MPC_dT + (last_temp - current_temp) * mpc.block_heat_capacity; + #if HAS_FAN + else if (ELAPSED(curr_time_ms, test_end_ms) && !fan0_done) { + set_fan_speed(TERN(SINGLEFAN, 0, e), 255); + planner.sync_fan_speeds(fan_speed); + settle_end_ms = curr_time_ms + settle_time; + test_end_ms = settle_end_ms + test_duration; + fan0_done = true; + } + else if (ELAPSED(curr_time_ms, settle_end_ms) && !ELAPSED(curr_time_ms, test_end_ms)) + total_energy_fan255 += mpc.heater_power * hotend.soft_pwm_amount / 127 * MPC_dT + (last_temp - current_temp) * mpc.block_heat_capacity; + #endif + else if (ELAPSED(curr_time_ms, test_end_ms)) break; + + last_temp = current_temp; + next_test_ms += test_interval_ms; + } + + // Ensure we don't drift too far from the window between the last sampled temp and the target temperature + if (!WITHIN(current_temp, get_sample_3_temp() - 15.0f, hotend.target + 15.0f)) { + SERIAL_ECHOLNPGM(STR_MPC_TEMPERATURE_ERROR); + TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(MPC_TEMP_ERROR)); + wait_for_heatup = false; + return FAILED; + } + } + wait_for_heatup = false; + + power_fan0 = total_energy_fan0 / MS_TO_SEC_PRECISE(test_duration); + TERN_(HAS_FAN, power_fan255 = (total_energy_fan255 * 1000) / test_duration); + + #if ENABLED(DEBUG_MPC_AUTOTUNE) + SERIAL_ECHOLNPGM("MPC_autotuner::measure_transfer() Completed"); + SERIAL_ECHOLNPGM("====="); + SERIAL_ECHOLNPGM("power_fan0 ", power_fan0); + TERN_(HAS_FAN, SERIAL_ECHOLNPGM("power_fan255 ", power_fan255)); + #endif + + return SUCCESS; + } + + Temperature::MPC_autotuner::MeasurementState Temperature::MPC_autotuner::housekeeping() { + const millis_t report_interval_ms = 1000UL; + curr_time_ms = millis(); + + if (updateTemperaturesIfReady()) { // temp sample ready + current_temp = degHotend(e); + TERN_(HAS_FAN_LOGIC, manage_extruder_fans(curr_time_ms)); + } + + if (ELAPSED(curr_time_ms, next_report_ms)) { + next_report_ms += report_interval_ms; + print_heater_states(e); + SERIAL_EOL(); + } + + hal.idletask(); + TERN(DWIN_CREALITY_LCD, DWIN_Update(), ui.update()); + + if (!wait_for_heatup) { + SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_INTERRUPTED); + TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(MPC_INTERRUPTED)); + return MeasurementState::CANCELLED; + } + + return MeasurementState::SUCCESS; + } + + void Temperature::MPC_autotune(const uint8_t e, MPCTuningType tuning_type=AUTO) { + SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_START, e); + + MPC_autotuner tuner(e); + + MPCHeaterInfo &hotend = temp_hotend[e]; + MPC_t &mpc = hotend.mpc; // Move to center of bed, just above bed height and cool with max fan gcode.home_all_axes(true); @@ -1009,6 +1210,7 @@ volatile bool Temperature::raw_temps_ready = false; #endif do_blocking_move_to(xyz_pos_t(MPC_TUNING_POS)); + // Determine ambient temperature. SERIAL_ECHOLNPGM(STR_MPC_COOLING_TO_AMBIENT); #if ENABLED(DWIN_LCD_PROUI) DWIN_MPCTuning(MPCTEMP_START); @@ -1017,164 +1219,92 @@ volatile bool Temperature::raw_temps_ready = false; LCD_MESSAGE(MSG_COOLING); #endif - millis_t ms = millis(), next_report_ms = ms, next_test_ms = ms + 10000UL; - celsius_float_t current_temp = degHotend(e), - ambient_temp = current_temp; - - wait_for_heatup = true; - for (;;) { // Can be interrupted with M108 - if (housekeeping(ms, e, current_temp, next_report_ms)) return; - - if (ELAPSED(ms, next_test_ms)) { - if (current_temp >= ambient_temp) { - ambient_temp = (ambient_temp + current_temp) / 2.0f; - break; - } - ambient_temp = current_temp; - next_test_ms += 10000UL; - } - } - wait_for_heatup = false; + if (tuner.measure_ambient_temp() != MPC_autotuner::MeasurementState::SUCCESS) return; + hotend.modeled_ambient_temp = tuner.get_ambient_temp(); #if HAS_FAN set_fan_speed(TERN(SINGLEFAN, 0, e), 0); planner.sync_fan_speeds(fan_speed); #endif - hotend.modeled_ambient_temp = ambient_temp; - + // Heat to 200 degrees SERIAL_ECHOLNPGM(STR_MPC_HEATING_PAST_200); TERN(DWIN_LCD_PROUI, LCD_ALERTMESSAGE(MSG_MPC_HEATING_PAST_200), LCD_MESSAGE(MSG_HEATING)); - hotend.target = 200.0f; // So M105 looks nice - hotend.soft_pwm_amount = (MPC_MAX) >> 1; - const millis_t heat_start_time = next_test_ms = ms; - celsius_float_t temp_samples[16]; - uint8_t sample_count = 0; - uint16_t sample_distance = 1; - float t1_time = 0; - wait_for_heatup = true; - for (;;) { // Can be interrupted with M108 - if (housekeeping(ms, e, current_temp, next_report_ms)) return; - - if (ELAPSED(ms, next_test_ms)) { - // Record samples between 100C and 200C - if (current_temp >= 100.0f) { - // If there are too many samples, space them more widely - if (sample_count == COUNT(temp_samples)) { - for (uint8_t i = 0; i < COUNT(temp_samples) / 2; i++) - temp_samples[i] = temp_samples[i*2]; - sample_count /= 2; - sample_distance *= 2; - } - - if (sample_count == 0) t1_time = float(ms - heat_start_time) / 1000.0f; - temp_samples[sample_count++] = current_temp; - } - - if (current_temp >= 200.0f) break; - - next_test_ms += 1000UL * sample_distance; - } - } - wait_for_heatup = false; - - hotend.soft_pwm_amount = 0; + if (tuner.measure_heatup() != MPC_autotuner::MeasurementState::SUCCESS) return; // Calculate physical constants from three equally-spaced samples - sample_count = (sample_count + 1) / 2 * 2 - 1; - const float t1 = temp_samples[0], - t2 = temp_samples[(sample_count - 1) >> 1], - t3 = temp_samples[sample_count - 1]; + const float t1 = tuner.get_sample_1_temp(), + t2 = tuner.get_sample_2_temp(), + t3 = tuner.get_sample_3_temp(); float asymp_temp = (t2 * t2 - t1 * t3) / (2 * t2 - t1 - t3), - block_responsiveness = -log((t2 - asymp_temp) / (t1 - asymp_temp)) / (sample_distance * (sample_count >> 1)); + block_responsiveness = -log((t2 - asymp_temp) / (t1 - asymp_temp)) / tuner.get_sample_interval(); - mpc.ambient_xfer_coeff_fan0 = mpc.heater_power * (MPC_MAX) / 255 / (asymp_temp - ambient_temp); - mpc.block_heat_capacity = mpc.ambient_xfer_coeff_fan0 / block_responsiveness; - mpc.sensor_responsiveness = block_responsiveness / (1.0f - (ambient_temp - asymp_temp) * exp(-block_responsiveness * t1_time) / (t1 - asymp_temp)); + #if ENABLED(DEBUG_MPC_AUTOTUNE) + SERIAL_ECHOLNPGM("asymp_temp ", asymp_temp); + SERIAL_ECHOLNPAIR_F("block_responsiveness ", block_responsiveness, 4); + #endif + + // Make initial guess at transfer coefficients + mpc.ambient_xfer_coeff_fan0 = mpc.heater_power * (MPC_MAX) / 255 / (asymp_temp - tuner.get_ambient_temp()); TERN_(MPC_INCLUDE_FAN, mpc.fan255_adjustment = 0.0f); - hotend.modeled_block_temp = asymp_temp + (ambient_temp - asymp_temp) * exp(-block_responsiveness * (ms - heat_start_time) / 1000.0f); - hotend.modeled_sensor_temp = current_temp; + if (tuning_type == AUTO || tuning_type == FORCE_ASYMPTOTIC) { + // Analytic tuning + mpc.block_heat_capacity = mpc.ambient_xfer_coeff_fan0 / block_responsiveness; + mpc.sensor_responsiveness = block_responsiveness / (1.0f - (tuner.get_ambient_temp() - asymp_temp) * exp(-block_responsiveness * tuner.get_sample_1_time()) / (t1 - asymp_temp)); + } + + // If analytic tuning fails, fall back to differential tuning + if (tuning_type == AUTO) { + if (mpc.sensor_responsiveness <= 0 || mpc.block_heat_capacity <= 0) + tuning_type = FORCE_DIFFERENTIAL; + } + + if (tuning_type == FORCE_DIFFERENTIAL) { + // Differential tuning + mpc.block_heat_capacity = mpc.heater_power / tuner.get_rate_fastest(); + mpc.sensor_responsiveness = tuner.get_rate_fastest() / (tuner.get_rate_fastest() * tuner.get_time_fastest() + tuner.get_ambient_temp() - tuner.get_time_fastest()); + } + + hotend.modeled_block_temp = asymp_temp + (tuner.get_ambient_temp() - asymp_temp) * exp(-block_responsiveness * tuner.get_elapsed_heating_time()); + hotend.modeled_sensor_temp = tuner.get_last_measured_temp(); // Allow the system to stabilize under MPC, then get a better measure of ambient loss with and without fan SERIAL_ECHOLNPGM(STR_MPC_MEASURING_AMBIENT, hotend.modeled_block_temp); TERN(DWIN_LCD_PROUI, LCD_ALERTMESSAGE(MSG_MPC_MEASURING_AMBIENT), LCD_MESSAGE(MSG_MPC_MEASURING_AMBIENT)); + + // Use the estimated overshoot of the temperature as the target to achieve. hotend.target = hotend.modeled_block_temp; - next_test_ms = ms + MPC_dT * 1000; - constexpr millis_t settle_time = 20000UL, test_duration = 20000UL; - millis_t settle_end_ms = ms + settle_time, - test_end_ms = settle_end_ms + test_duration; - float total_energy_fan0 = 0.0f; + if (tuner.measure_transfer() != MPC_autotuner::MeasurementState::SUCCESS) return; + + // Update the transfer coefficients + mpc.ambient_xfer_coeff_fan0 = tuner.get_power_fan0() / (hotend.target - tuner.get_ambient_temp()); #if HAS_FAN - bool fan0_done = false; - float total_energy_fan255 = 0.0f; - #endif - float last_temp = current_temp; - - wait_for_heatup = true; - for (;;) { // Can be interrupted with M108 - if (housekeeping(ms, e, current_temp, next_report_ms)) return; - - if (ELAPSED(ms, next_test_ms)) { - hotend.soft_pwm_amount = (int)get_pid_output_hotend(e) >> 1; - - if (ELAPSED(ms, settle_end_ms) && !ELAPSED(ms, test_end_ms) && TERN1(HAS_FAN, !fan0_done)) - total_energy_fan0 += mpc.heater_power * hotend.soft_pwm_amount / 127 * MPC_dT + (last_temp - current_temp) * mpc.block_heat_capacity; - #if HAS_FAN - else if (ELAPSED(ms, test_end_ms) && !fan0_done) { - set_fan_speed(TERN(SINGLEFAN, 0, e), 255); - planner.sync_fan_speeds(fan_speed); - settle_end_ms = ms + settle_time; - test_end_ms = settle_end_ms + test_duration; - fan0_done = true; - } - else if (ELAPSED(ms, settle_end_ms) && !ELAPSED(ms, test_end_ms)) - total_energy_fan255 += mpc.heater_power * hotend.soft_pwm_amount / 127 * MPC_dT + (last_temp - current_temp) * mpc.block_heat_capacity; - #endif - else if (ELAPSED(ms, test_end_ms)) break; - - last_temp = current_temp; - next_test_ms += MPC_dT * 1000; - } - - if (!WITHIN(current_temp, t3 - 15.0f, hotend.target + 15.0f)) { - SERIAL_ECHOLNPGM(STR_MPC_TEMPERATURE_ERROR); - TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(MPC_TEMP_ERROR)); - break; - } - } - wait_for_heatup = false; - - const float power_fan0 = total_energy_fan0 * 1000 / test_duration; - mpc.ambient_xfer_coeff_fan0 = power_fan0 / (hotend.target - ambient_temp); - - #if HAS_FAN - const float power_fan255 = total_energy_fan255 * 1000 / test_duration, - ambient_xfer_coeff_fan255 = power_fan255 / (hotend.target - ambient_temp); + const float ambient_xfer_coeff_fan255 = tuner.get_power_fan255() / (hotend.target - tuner.get_ambient_temp()); mpc.applyFanAdjustment(ambient_xfer_coeff_fan255); #endif - // Calculate a new and better asymptotic temperature and re-evaluate the other constants - asymp_temp = ambient_temp + mpc.heater_power * (MPC_MAX) / 255 / mpc.ambient_xfer_coeff_fan0; - block_responsiveness = -log((t2 - asymp_temp) / (t1 - asymp_temp)) / (sample_distance * (sample_count >> 1)); - mpc.block_heat_capacity = mpc.ambient_xfer_coeff_fan0 / block_responsiveness; - mpc.sensor_responsiveness = block_responsiveness / (1.0f - (ambient_temp - asymp_temp) * exp(-block_responsiveness * t1_time) / (t1 - asymp_temp)); + if (tuning_type == AUTO || tuning_type == FORCE_ASYMPTOTIC) { + // Calculate a new and better asymptotic temperature and re-evaluate the other constants + asymp_temp = tuner.get_ambient_temp() + mpc.heater_power * (MPC_MAX) / 255 / mpc.ambient_xfer_coeff_fan0; + block_responsiveness = -log((t2 - asymp_temp) / (t1 - asymp_temp)) / tuner.get_sample_interval(); + + #if ENABLED(DEBUG_MPC_AUTOTUNE) + SERIAL_ECHOLN("Refining estimates for:"); + SERIAL_ECHOLNPGM("asymp_temp ", asymp_temp); + SERIAL_ECHOLNPAIR_F("block_responsiveness ", block_responsiveness, 4); + #endif + + // Update analytic tuning values based on the above + mpc.block_heat_capacity = mpc.ambient_xfer_coeff_fan0 / block_responsiveness; + mpc.sensor_responsiveness = block_responsiveness / (1.0f - (tuner.get_ambient_temp() - asymp_temp) * exp(-block_responsiveness * tuner.get_sample_1_time()) / (t1 - asymp_temp)); + + } SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_FINISHED); TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(MPC_DONE)); - #if 0 - SERIAL_ECHOLNPGM("t1_time ", t1_time); - SERIAL_ECHOLNPGM("sample_count ", sample_count); - SERIAL_ECHOLNPGM("sample_distance ", sample_distance); - for (uint8_t i = 0; i < sample_count; i++) - SERIAL_ECHOLNPGM("sample ", i, " : ", temp_samples[i]); - SERIAL_ECHOLNPGM("t1 ", t1, " t2 ", t2, " t3 ", t3); - SERIAL_ECHOLNPGM("asymp_temp ", asymp_temp); - SERIAL_ECHOLNPAIR_F("block_responsiveness ", block_responsiveness, 4); - #endif - SERIAL_ECHOLNPGM("MPC_BLOCK_HEAT_CAPACITY ", mpc.block_heat_capacity); SERIAL_ECHOLNPAIR_F("MPC_SENSOR_RESPONSIVENESS ", mpc.sensor_responsiveness, 4); SERIAL_ECHOLNPAIR_F("MPC_AMBIENT_XFER_COEFF ", mpc.ambient_xfer_coeff_fan0, 4); @@ -1702,9 +1832,9 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { // Check if temperature is within the correct band if (WITHIN(temp_bed.celsius, BED_MINTEMP, BED_MAXTEMP)) { #if ENABLED(BED_LIMIT_SWITCHING) - if (temp_bed.is_above_target((BED_HYSTERESIS) - 1)) + if (temp_bed.is_above_target(BED_HYSTERESIS)) temp_bed.soft_pwm_amount = 0; - else if (temp_bed.is_below_target((BED_HYSTERESIS) - 1)) + else if (temp_bed.is_below_target(BED_HYSTERESIS)) temp_bed.soft_pwm_amount = MAX_BED_POWER >> 1; #else // !PIDTEMPBED && !BED_LIMIT_SWITCHING temp_bed.soft_pwm_amount = temp_bed.is_below_target() ? MAX_BED_POWER >> 1 : 0; @@ -1778,7 +1908,7 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { #ifndef MIN_COOLING_SLOPE_DEG_CHAMBER_VENT #define MIN_COOLING_SLOPE_DEG_CHAMBER_VENT 1.5 #endif - if (!flag_chamber_excess_heat && temp_chamber.is_above_target((HIGH_EXCESS_HEAT_LIMIT) - 1)) { + if (!flag_chamber_excess_heat && temp_chamber.is_above_target(HIGH_EXCESS_HEAT_LIMIT)) { // Open vent after MIN_COOLING_SLOPE_TIME_CHAMBER_VENT seconds if the // temperature didn't drop at least MIN_COOLING_SLOPE_DEG_CHAMBER_VENT if (next_cool_check_ms == 0 || ELAPSED(ms, next_cool_check_ms)) { @@ -1792,7 +1922,7 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { next_cool_check_ms = 0; old_temp = 9999; } - if (flag_chamber_excess_heat && temp_chamber.is_above_target((LOW_EXCESS_HEAT_LIMIT) - 1)) + if (flag_chamber_excess_heat && temp_chamber.is_above_target(LOW_EXCESS_HEAT_LIMIT)) flag_chamber_excess_heat = false; #endif } @@ -1824,9 +1954,9 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { } else { #if ENABLED(CHAMBER_LIMIT_SWITCHING) - if (temp_chamber.is_above_target((TEMP_CHAMBER_HYSTERESIS) - 1)) + if (temp_chamber.is_above_target(TEMP_CHAMBER_HYSTERESIS)) temp_chamber.soft_pwm_amount = 0; - else if (temp_chamber.is_below_target((TEMP_CHAMBER_HYSTERESIS) - 1)) + else if (temp_chamber.is_below_target(TEMP_CHAMBER_HYSTERESIS)) temp_chamber.soft_pwm_amount = (MAX_CHAMBER_POWER) >> 1; #else temp_chamber.soft_pwm_amount = temp_chamber.is_below_target() ? (MAX_CHAMBER_POWER) >> 1 : 0; diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index 27aef11c7e..4bd185c425 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -150,7 +150,7 @@ typedef struct { float p, i, d, c, f; } raw_pidcf_t; #if HAS_PID_HEATING - #define PID_K2 (1-float(PID_K1)) + #define PID_K2 (1.0f - float(PID_K1)) #define PID_dT ((OVERSAMPLENR * float(ACTUAL_ADC_SAMPLES)) / (TEMP_TIMER_FREQUENCY)) // Apply the scale factors to the PID values @@ -231,7 +231,7 @@ typedef struct { float p, i, d, c, f; } raw_pidcf_t; }; -#endif +#endif // HAS_PID_HEATING #if ENABLED(PIDTEMP) @@ -1215,11 +1215,68 @@ class Temperature { } #endif - #endif + #endif // HAS_PID_HEATING #if ENABLED(MPC_AUTOTUNE) - void MPC_autotune(const uint8_t e); - #endif + + // Utility class to perform MPCTEMP auto tuning measurements + class MPC_autotuner { + public: + enum MeasurementState { CANCELLED, FAILED, SUCCESS }; + MPC_autotuner(const uint8_t extruderIdx); + ~MPC_autotuner(); + MeasurementState measure_ambient_temp(); + MeasurementState measure_heatup(); + MeasurementState measure_transfer(); + + celsius_float_t get_ambient_temp() { return ambient_temp; } + celsius_float_t get_last_measured_temp() { return current_temp; } + + float get_elapsed_heating_time() { return elapsed_heating_time; } + float get_sample_1_time() { return t1_time; } + static float get_sample_1_temp() { return temp_samples[0]; } + static float get_sample_2_temp() { return temp_samples[(sample_count - 1) >> 1]; } + static float get_sample_3_temp() { return temp_samples[sample_count - 1]; } + static float get_sample_interval() { return sample_distance * (sample_count >> 1); } + + static celsius_float_t get_temp_fastest() { return temp_fastest; } + float get_time_fastest() { return time_fastest; } + float get_rate_fastest() { return rate_fastest; } + + float get_power_fan0() { return power_fan0; } + #if HAS_FAN + static float get_power_fan255() { return power_fan255; } + #endif + + protected: + static void init_timers() { curr_time_ms = next_report_ms = millis(); } + MeasurementState housekeeping(); + + uint8_t e; + + float elapsed_heating_time; + celsius_float_t ambient_temp, current_temp; + float t1_time; + + static millis_t curr_time_ms, next_report_ms; + static celsius_float_t temp_samples[16]; + static uint8_t sample_count; + static uint16_t sample_distance; + + // Parameters from differential analysis + static celsius_float_t temp_fastest; + float time_fastest, rate_fastest; + + float power_fan0; + #if HAS_FAN + static float power_fan255; + #endif + }; + + enum MPCTuningType { AUTO, FORCE_ASYMPTOTIC, FORCE_DIFFERENTIAL }; + static void MPC_autotune(const uint8_t e, MPCTuningType tuning_type); + + #endif // MPC_AUTOTUNE #if ENABLED(PROBING_HEATERS_OFF) static void pause_heaters(const bool p); From 5f89ef99e962a0c8bed7115c87ae4e545ca143ad Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 12 May 2023 00:25:57 +0000 Subject: [PATCH 417/659] [cron] Bump distribution date (2023-05-12) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 5c696db45c..9a13c5ce3e 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-11" +//#define STRING_DISTRIBUTION_DATE "2023-05-12" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 8ab8e76ed7..e4eb143c3d 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-11" + #define STRING_DISTRIBUTION_DATE "2023-05-12" #endif /** From 79b0f3158556933699cab4c5ed4e8e798b4ef4d8 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 11 May 2023 19:39:30 -0500 Subject: [PATCH 418/659] =?UTF-8?q?=F0=9F=94=A8=20Use=20'build=5Fsrc=5Ffil?= =?UTF-8?q?ter'=20(#25810)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PlatformIO/scripts/common-dependencies.py | 22 +- ini/features.ini | 466 +++++++++--------- 2 files changed, 244 insertions(+), 244 deletions(-) diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.py b/buildroot/share/PlatformIO/scripts/common-dependencies.py index 58d9cfcb4d..aa531be296 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.py +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.py @@ -62,7 +62,7 @@ if pioutil.is_pio_build(): for line in atoms: parts = line.split('=') name = parts.pop(0) - if name in ['build_flags', 'extra_scripts', 'src_filter', 'lib_ignore']: + if name in ['build_flags', 'extra_scripts', 'build_src_filter', 'lib_ignore']: feat[name] = '='.join(parts) blab("[%s] %s=%s" % (feature, name, feat[name]), 3) else: @@ -130,7 +130,7 @@ if pioutil.is_pio_build(): def apply_features_config(): load_features() blab("========== Apply enabled features...") - build_filters = ' '.join(env.GetProjectOption('src_filter')) + build_filters = ' '.join(env.GetProjectOption('build_src_filter')) for feature in FEATURE_CONFIG: if not env.MarlinHas(feature): continue @@ -175,9 +175,9 @@ if pioutil.is_pio_build(): blab("Running extra_scripts for %s... " % feature, 2) env.SConscript(feat['extra_scripts'], exports="env") - if 'src_filter' in feat: + if 'build_src_filter' in feat: blab("========== Adding build_src_filter for %s... " % feature, 2) - build_filters = build_filters + ' ' + feat['src_filter'] + build_filters = build_filters + ' ' + feat['build_src_filter'] # Just append the filter in the order that the build environment specifies. # Important here is the order of entries in the "features.ini" file. @@ -186,7 +186,7 @@ if pioutil.is_pio_build(): lib_ignore = env.GetProjectOption('lib_ignore') + [feat['lib_ignore']] set_env_field('lib_ignore', lib_ignore) - src_filter = "" + build_src_filter = "" if True: # Build the actual equivalent build_src_filter list based on the inclusions by the features. # PlatformIO doesn't do it this way, but maybe in the future.... @@ -247,16 +247,16 @@ if pioutil.is_pio_build(): cur_srcs = set(filter(filt, cur_srcs)) # Transform the resulting set into a string. for x in cur_srcs: - if len(src_filter) > 0: src_filter += ' ' - src_filter += "+<" + x + ">" + if len(build_src_filter) > 0: build_src_filter += ' ' + build_src_filter += "+<" + x + ">" - #blab("Final src_filter: " + src_filter) + #blab("Final build_src_filter: " + build_src_filter) else: - src_filter = build_filters + build_src_filter = build_filters # Update in PlatformIO - set_env_field('build_src_filter', [src_filter]) - env.Replace(SRC_FILTER=src_filter) + set_env_field('build_src_filter', [build_src_filter]) + env.Replace(SRC_FILTER=build_src_filter) # # Use the compiler to get a list of all enabled features diff --git a/ini/features.ini b/ini/features.ini index c8a3cf2908..17d2ece04a 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -14,254 +14,254 @@ [features] YHCB2004 = red-scorp/LiquidCrystal_AIP31068@^1.0.4, red-scorp/SoftSPIB@^1.1.1 HAS_TFT_LVGL_UI = lvgl=https://github.com/makerbase-mks/LVGL-6.1.1-MKS/archive/master.zip - src_filter=+ + build_src_filter=+ extra_scripts=download_mks_assets.py -MARLIN_TEST_BUILD = src_filter=+ -POSTMORTEM_DEBUGGING = src_filter=+ + +MARLIN_TEST_BUILD = build_src_filter=+ +POSTMORTEM_DEBUGGING = build_src_filter=+ + build_flags=-funwind-tables MKS_WIFI_MODULE = QRCode=https://github.com/makerbase-mks/QRCode/archive/master.zip HAS_TRINAMIC_CONFIG = TMCStepper@~0.7.3 - src_filter=+ + + + + -HAS_T(RINAMIC_CONFIG|MC_SPI) = src_filter=+ -HAS_STEALTHCHOP = src_filter=+ + build_src_filter=+ + + + + +HAS_T(RINAMIC_CONFIG|MC_SPI) = build_src_filter=+ +HAS_STEALTHCHOP = build_src_filter=+ SR_LCD_3W_NL = SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip -HAS_MOTOR_CURRENT_(I2C|DAC|SPI|PWM) = src_filter=+ +HAS_MOTOR_CURRENT_(I2C|DAC|SPI|PWM) = build_src_filter=+ HAS_MOTOR_CURRENT_I2C = SlowSoftI2CMaster - src_filter=+ + build_src_filter=+ HAS_TMC26X = TMC26XStepper=https://github.com/MarlinFirmware/TMC26XStepper/archive/master.zip - src_filter=+ -LIB_INTERNAL_MAX31865 = src_filter=+ + build_src_filter=+ +LIB_INTERNAL_MAX31865 = build_src_filter=+ NEOPIXEL_LED = adafruit/Adafruit NeoPixel@~1.8.0 - src_filter=+ + build_src_filter=+ I2C_AMMETER = peterus/INA226Lib@1.1.2 - src_filter=+ + build_src_filter=+ USES_LIQUIDCRYSTAL = LiquidCrystal=https://github.com/MarlinFirmware/New-LiquidCrystal/archive/1.5.1.zip USES_LIQUIDCRYSTAL_I2C = marcoschwartz/LiquidCrystal_I2C@1.1.4 USES_LIQUIDTWI2 = LiquidTWI2@1.2.7 -HAS_LCDPRINT = src_filter=+ -HAS_MARLINUI_HD44780 = src_filter=+ +HAS_LCDPRINT = build_src_filter=+ +HAS_MARLINUI_HD44780 = build_src_filter=+ HAS_MARLINUI_U8GLIB = marlinfirmware/U8glib-HAL@~0.5.2 - src_filter=+ -HAS_(FSMC|SPI|LTDC)_TFT = src_filter=+ -HAS_LTDC_TFT = src_filter=+ -HAS_FSMC_TFT = src_filter=+ + -HAS_SPI_TFT = src_filter=+ + + -HAS_TFT_XPT2046 = src_filter=+ + + -TFT_TOUCH_DEVICE_GT911 = src_filter=+ -I2C_EEPROM = src_filter=+ + build_src_filter=+ +HAS_(FSMC|SPI|LTDC)_TFT = build_src_filter=+ +HAS_LTDC_TFT = build_src_filter=+ +HAS_FSMC_TFT = build_src_filter=+ + +HAS_SPI_TFT = build_src_filter=+ + + +HAS_TFT_XPT2046 = build_src_filter=+ + + +TFT_TOUCH_DEVICE_GT911 = build_src_filter=+ +I2C_EEPROM = build_src_filter=+ SOFT_I2C_EEPROM = SlowSoftI2CMaster, SlowSoftWire=https://github.com/felias-fogg/SlowSoftWire/archive/master.zip -SPI_EEPROM = src_filter=+ -HAS_DWIN_E3V2|IS_DWIN_MARLINUI = src_filter=+ -DWIN_CREALITY_LCD = src_filter=+ -DWIN_LCD_PROUI = src_filter=+ -DWIN_CREALITY_LCD_JYERSUI = src_filter=+ -IS_DWIN_MARLINUI = src_filter=+ -HAS_GRAPHICAL_TFT = src_filter=+ - -TFT_FONT_HELVETICA = src_filter=+ -TFT_FONT_NOTOSANS = src_filter=+ -TFT_FONT_UNIFONT = src_filter=+ -IS_TFTGLCD_PANEL = src_filter=+ -HAS_TOUCH_BUTTONS = src_filter=+ -HAS_MARLINUI_MENU = src_filter=+ - -HAS_GAMES = src_filter=+ -MARLIN_BRICKOUT = src_filter=+ -MARLIN_INVADERS = src_filter=+ -MARLIN_MAZE = src_filter=+ -MARLIN_SNAKE = src_filter=+ -HAS_MENU_BACKLASH = src_filter=+ -LCD_BED_LEVELING = src_filter=+ -HAS_MENU_BED_TRAMMING = src_filter=+ -HAS_MENU_CANCELOBJECT = src_filter=+ -HAS_MENU_DELTA_CALIBRATE = src_filter=+ -HAS_MENU_FILAMENT = src_filter=+ -LCD_INFO_MENU = src_filter=+ -HAS_MENU_JOB_RECOVERY = src_filter=+ -HAS_MENU_MULTI_LANGUAGE = src_filter=+ -HAS_MENU_LED = src_filter=+ -HAS_MENU_MEDIA = src_filter=+ -HAS_MENU_MIXER = src_filter=+ -HAS_MENU_MMU2 = src_filter=+ -HAS_MENU_PASSWORD = src_filter=+ -HAS_MENU_POWER_MONITOR = src_filter=+ -HAS_MENU_CUTTER = src_filter=+ -HAS_MENU_TEMPERATURE = src_filter=+ -HAS_MENU_TMC = src_filter=+ -HAS_MENU_TOUCH_SCREEN = src_filter=+ -HAS_MENU_TRAMMING_WIZARD = src_filter=+ -HAS_MENU_UBL = src_filter=+ -EXTENSIBLE_UI = src_filter=+ -ANYCUBIC_LCD_(CHIRON|VYPER) = src_filter=+ -ANYCUBIC_LCD_CHIRON = src_filter=+ -ANYCUBIC_LCD_VYPER = src_filter=+ -ANYCUBIC_LCD_I3MEGA = src_filter=+ -HAS_DGUS_LCD_CLASSIC = src_filter=+ -DGUS_LCD_UI_RELOADED = src_filter=+ -DGUS_LCD_UI_FYSETC = src_filter=+ -DGUS_LCD_UI_HIPRECY = src_filter=+ -DGUS_LCD_UI_MKS = src_filter=+ -DGUS_LCD_UI_ORIGIN = src_filter=+ -DGUS_LCD_UI_IA_CREALITY = src_filter=+ -EXTUI_EXAMPLE = src_filter=+ -TOUCH_UI_FTDI_EVE = src_filter=+ -MALYAN_LCD = src_filter=+ -NEXTION_TFT = src_filter=+ -USE_UHS2_USB = src_filter=+ -USE_UHS3_USB = src_filter=+ -USB_FLASH_DRIVE_SUPPORT = src_filter=+ -HAS_MCP3426_ADC = src_filter=+ + -AUTO_BED_LEVELING_BILINEAR = src_filter=+ -AUTO_BED_LEVELING_(3POINT|(BI)?LINEAR) = src_filter=+ -X_AXIS_TWIST_COMPENSATION = src_filter=+ + + +SPI_EEPROM = build_src_filter=+ +HAS_DWIN_E3V2|IS_DWIN_MARLINUI = build_src_filter=+ +DWIN_CREALITY_LCD = build_src_filter=+ +DWIN_LCD_PROUI = build_src_filter=+ +DWIN_CREALITY_LCD_JYERSUI = build_src_filter=+ +IS_DWIN_MARLINUI = build_src_filter=+ +HAS_GRAPHICAL_TFT = build_src_filter=+ - +TFT_FONT_HELVETICA = build_src_filter=+ +TFT_FONT_NOTOSANS = build_src_filter=+ +TFT_FONT_UNIFONT = build_src_filter=+ +IS_TFTGLCD_PANEL = build_src_filter=+ +HAS_TOUCH_BUTTONS = build_src_filter=+ +HAS_MARLINUI_MENU = build_src_filter=+ - +HAS_GAMES = build_src_filter=+ +MARLIN_BRICKOUT = build_src_filter=+ +MARLIN_INVADERS = build_src_filter=+ +MARLIN_MAZE = build_src_filter=+ +MARLIN_SNAKE = build_src_filter=+ +HAS_MENU_BACKLASH = build_src_filter=+ +LCD_BED_LEVELING = build_src_filter=+ +HAS_MENU_BED_TRAMMING = build_src_filter=+ +HAS_MENU_CANCELOBJECT = build_src_filter=+ +HAS_MENU_DELTA_CALIBRATE = build_src_filter=+ +HAS_MENU_FILAMENT = build_src_filter=+ +LCD_INFO_MENU = build_src_filter=+ +HAS_MENU_JOB_RECOVERY = build_src_filter=+ +HAS_MENU_MULTI_LANGUAGE = build_src_filter=+ +HAS_MENU_LED = build_src_filter=+ +HAS_MENU_MEDIA = build_src_filter=+ +HAS_MENU_MIXER = build_src_filter=+ +HAS_MENU_MMU2 = build_src_filter=+ +HAS_MENU_PASSWORD = build_src_filter=+ +HAS_MENU_POWER_MONITOR = build_src_filter=+ +HAS_MENU_CUTTER = build_src_filter=+ +HAS_MENU_TEMPERATURE = build_src_filter=+ +HAS_MENU_TMC = build_src_filter=+ +HAS_MENU_TOUCH_SCREEN = build_src_filter=+ +HAS_MENU_TRAMMING_WIZARD = build_src_filter=+ +HAS_MENU_UBL = build_src_filter=+ +EXTENSIBLE_UI = build_src_filter=+ +ANYCUBIC_LCD_(CHIRON|VYPER) = build_src_filter=+ +ANYCUBIC_LCD_CHIRON = build_src_filter=+ +ANYCUBIC_LCD_VYPER = build_src_filter=+ +ANYCUBIC_LCD_I3MEGA = build_src_filter=+ +HAS_DGUS_LCD_CLASSIC = build_src_filter=+ +DGUS_LCD_UI_RELOADED = build_src_filter=+ +DGUS_LCD_UI_FYSETC = build_src_filter=+ +DGUS_LCD_UI_HIPRECY = build_src_filter=+ +DGUS_LCD_UI_MKS = build_src_filter=+ +DGUS_LCD_UI_ORIGIN = build_src_filter=+ +DGUS_LCD_UI_IA_CREALITY = build_src_filter=+ +EXTUI_EXAMPLE = build_src_filter=+ +TOUCH_UI_FTDI_EVE = build_src_filter=+ +MALYAN_LCD = build_src_filter=+ +NEXTION_TFT = build_src_filter=+ +USE_UHS2_USB = build_src_filter=+ +USE_UHS3_USB = build_src_filter=+ +USB_FLASH_DRIVE_SUPPORT = build_src_filter=+ +HAS_MCP3426_ADC = build_src_filter=+ + +AUTO_BED_LEVELING_BILINEAR = build_src_filter=+ +AUTO_BED_LEVELING_(3POINT|(BI)?LINEAR) = build_src_filter=+ +X_AXIS_TWIST_COMPENSATION = build_src_filter=+ + + BD_SENSOR = markyue/Panda_SoftMasterI2C - src_filter=+ + -MESH_BED_LEVELING = src_filter=+ + -AUTO_BED_LEVELING_UBL = src_filter=+ + -UBL_HILBERT_CURVE = src_filter=+ -BACKLASH_COMPENSATION = src_filter=+ -BARICUDA = src_filter=+ + -BINARY_FILE_TRANSFER = src_filter=+ + -BLTOUCH = src_filter=+ -CANCEL_OBJECTS = src_filter=+ + -CASE_LIGHT_ENABLE = src_filter=+ + -EXTERNAL_CLOSED_LOOP_CONTROLLER = src_filter=+ + -USE_CONTROLLER_FAN = src_filter=+ -HAS_COOLER|LASER_COOLANT_FLOW_METER = src_filter=+ -HAS_MOTOR_CURRENT_DAC = src_filter=+ -DIRECT_STEPPING = src_filter=+ + -EMERGENCY_PARSER = src_filter=+ - -EASYTHREED_UI = src_filter=+ -I2C_POSITION_ENCODERS = src_filter=+ -IIC_BL24CXX_EEPROM = src_filter=+ -SPI_FLASH = src_filter=+ -HAS_ETHERNET = src_filter=+ + -HAS_FANCHECK = src_filter=+ + -HAS_FANMUX = src_filter=+ -FILAMENT_WIDTH_SENSOR = src_filter=+ + -FWRETRACT = src_filter=+ + -HOST_ACTION_COMMANDS = src_filter=+ -HOTEND_IDLE_TIMEOUT = src_filter=+ -JOYSTICK = src_filter=+ -BLINKM = src_filter=+ -HAS_COLOR_LEDS = src_filter=+ + -PCA9533 = src_filter=+ -PCA9632 = src_filter=+ -PRINTER_EVENT_LEDS = src_filter=+ -TEMP_STAT_LEDS = src_filter=+ -MAX7219_DEBUG = src_filter=+ + -HAS_MEATPACK = src_filter=+ -MIXING_EXTRUDER = src_filter=+ + -HAS_PRUSA_MMU1 = src_filter=+ -HAS_PRUSA_MMU2 = src_filter=+ + -PASSWORD_FEATURE = src_filter=+ + -ADVANCED_PAUSE_FEATURE = src_filter=+ + + -PSU_CONTROL = src_filter=+ -HAS_POWER_MONITOR = src_filter=+ + -POWER_LOSS_RECOVERY = src_filter=+ + -HAS_PTC = src_filter=+ + -HAS_FILAMENT_SENSOR = src_filter=+ + -(EXT|MANUAL)_SOLENOID.* = src_filter=+ + -MK2_MULTIPLEXER = src_filter=+ -HAS_CUTTER = src_filter=+ + -HAS_DRIVER_SAFE_POWER_PROTECT = src_filter=+ -EXPERIMENTAL_I2CBUS = src_filter=+ + -G26_MESH_VALIDATION = src_filter=+ -ASSISTED_TRAMMING = src_filter=+ + -HAS_MESH = src_filter=+ -HAS_LEVELING = src_filter=+ + -MECHANICAL_GANTRY_CAL.+ = src_filter=+ -Z_MULTI_ENDSTOPS|Z_STEPPER_AUTO_ALIGN = src_filter=+ -Z_STEPPER_AUTO_ALIGN = src_filter=+ -DELTA_AUTO_CALIBRATION = src_filter=+ -CALIBRATION_GCODE = src_filter=+ -Z_MIN_PROBE_REPEATABILITY_TEST = src_filter=+ -M100_FREE_MEMORY_WATCHER = src_filter=+ -BACKLASH_GCODE = src_filter=+ -IS_KINEMATIC = src_filter=+ -HAS_EXTRA_ENDSTOPS = src_filter=+ -SKEW_CORRECTION_GCODE = src_filter=+ -DIRECT_PIN_CONTROL = src_filter=+ + -PINS_DEBUGGING = src_filter=+ -HAS_MULTI_EXTRUDER = src_filter=+ -HAS_HOTEND_OFFSET = src_filter=+ -EDITABLE_SERVO_ANGLES = src_filter=+ -PIDTEMP = src_filter=+ -PREVENT_COLD_EXTRUSION = src_filter=+ -PIDTEMPBED = src_filter=+ -HAS_USER_THERMISTORS = src_filter=+ -PIDTEMPCHAMBER = src_filter=+ -SD_ABORT_ON_ENDSTOP_HIT = src_filter=+ -BAUD_RATE_GCODE = src_filter=+ -HAS_SMART_EFF_MOD = src_filter=+ -COOLANT_CONTROL|AIR_ASSIST = src_filter=+ -AIR_EVACUATION = src_filter=+ -HAS_SOFTWARE_ENDSTOPS = src_filter=+ -SERVO_DETACH_GCODE = src_filter=+ -HAS_DUPLICATION_MODE = src_filter=+ -SPI_FLASH_BACKUP = src_filter=+ -PLATFORM_M997_SUPPORT = src_filter=+ -FT_MOTION = src_filter=+ + -LIN_ADVANCE = src_filter=+ -PHOTO_GCODE = src_filter=+ -CONTROLLER_FAN_EDITABLE = src_filter=+ -HAS_ZV_SHAPING = src_filter=+ -GCODE_MACROS = src_filter=+ -GRADIENT_MIX = src_filter=+ -OTA_FIRMWARE_UPDATE = src_filter=+ -HAS_SAVED_POSITIONS = src_filter=+ + -PARK_HEAD_ON_PAUSE = src_filter=+ -FILAMENT_LOAD_UNLOAD_GCODES = src_filter=+ -CNC_WORKSPACE_PLANES = src_filter=+ -CNC_COORDINATE_SYSTEMS = src_filter=+ -HAS_M206_COMMAND = src_filter=+ -EXPECTED_PRINTER_CHECK = src_filter=+ -HOST_KEEPALIVE_FEATURE = src_filter=+ -AUTO_REPORT_POSITION = src_filter=+ -REPETIER_GCODE_M360 = src_filter=+ -HAS_GCODE_M876 = src_filter=+ -HAS_RESUME_CONTINUE = src_filter=+ -SET_PROGRESS_MANUALLY = src_filter=+ -HAS_STATUS_MESSAGE = src_filter=+ -HAS_PREHEAT = src_filter=+ -HAS_LCD_CONTRAST = src_filter=+ -HAS_GCODE_M255 = src_filter=+ -HAS_LCD_BRIGHTNESS = src_filter=+ -HAS_SOUND = src_filter=+ -HAS_MULTI_LANGUAGE = src_filter=+ -TOUCH_SCREEN_CALIBRATION = src_filter=+ -ARC_SUPPORT = src_filter=+ -GCODE_MOTION_MODES = src_filter=+ -BABYSTEPPING = src_filter=+ + -Z_PROBE_SLED = src_filter=+ -G38_PROBE_TARGET = src_filter=+ -MAGNETIC_PARKING_EXTRUDER = src_filter=+ -HAS_MEDIA = src_filter=+ + + + + + + -HAS_MEDIA_SUBCALLS = src_filter=+ -GCODE_REPEAT_MARKERS = src_filter=+ + -HAS_EXTRUDERS = src_filter=+ + -HAS_HOTEND = src_filter=+ -HAS_FAN = src_filter=+ -HAS_HEATED_BED = src_filter=+ -HAS_HEATED_CHAMBER = src_filter=+ -HAS_COOLER = src_filter=+ -AUTO_REPORT_TEMPERATURES = src_filter=+ -HAS_TEMP_PROBE = src_filter=+ -HAS_PID_HEATING = src_filter=+ -MPCTEMP = src_filter=+ -INCH_MODE_SUPPORT = src_filter=+ -TEMPERATURE_UNITS_SUPPORT = src_filter=+ -NEED_HEX_PRINT = src_filter=+ -NEED_LSF = src_filter=+ -NOZZLE_PARK_FEATURE = src_filter=+ + -NOZZLE_CLEAN_FEATURE = src_filter=+ + -DELTA = src_filter=+ + -POLARGRAPH = src_filter=+ -BEZIER_CURVE_SUPPORT = src_filter=+ + -PRINTCOUNTER = src_filter=+ -HAS_BED_PROBE = src_filter=+ + + + -IS_SCARA = src_filter=+ -HAS_SERVOS = src_filter=+ + -MORGAN_SCARA = src_filter=+ -HAS_MICROSTEPS = src_filter=+ + build_src_filter=+ + +MESH_BED_LEVELING = build_src_filter=+ + +AUTO_BED_LEVELING_UBL = build_src_filter=+ + +UBL_HILBERT_CURVE = build_src_filter=+ +BACKLASH_COMPENSATION = build_src_filter=+ +BARICUDA = build_src_filter=+ + +BINARY_FILE_TRANSFER = build_src_filter=+ + +BLTOUCH = build_src_filter=+ +CANCEL_OBJECTS = build_src_filter=+ + +CASE_LIGHT_ENABLE = build_src_filter=+ + +EXTERNAL_CLOSED_LOOP_CONTROLLER = build_src_filter=+ + +USE_CONTROLLER_FAN = build_src_filter=+ +HAS_COOLER|LASER_COOLANT_FLOW_METER = build_src_filter=+ +HAS_MOTOR_CURRENT_DAC = build_src_filter=+ +DIRECT_STEPPING = build_src_filter=+ + +EMERGENCY_PARSER = build_src_filter=+ - +EASYTHREED_UI = build_src_filter=+ +I2C_POSITION_ENCODERS = build_src_filter=+ +IIC_BL24CXX_EEPROM = build_src_filter=+ +SPI_FLASH = build_src_filter=+ +HAS_ETHERNET = build_src_filter=+ + +HAS_FANCHECK = build_src_filter=+ + +HAS_FANMUX = build_src_filter=+ +FILAMENT_WIDTH_SENSOR = build_src_filter=+ + +FWRETRACT = build_src_filter=+ + +HOST_ACTION_COMMANDS = build_src_filter=+ +HOTEND_IDLE_TIMEOUT = build_src_filter=+ +JOYSTICK = build_src_filter=+ +BLINKM = build_src_filter=+ +HAS_COLOR_LEDS = build_src_filter=+ + +PCA9533 = build_src_filter=+ +PCA9632 = build_src_filter=+ +PRINTER_EVENT_LEDS = build_src_filter=+ +TEMP_STAT_LEDS = build_src_filter=+ +MAX7219_DEBUG = build_src_filter=+ + +HAS_MEATPACK = build_src_filter=+ +MIXING_EXTRUDER = build_src_filter=+ + +HAS_PRUSA_MMU1 = build_src_filter=+ +HAS_PRUSA_MMU2 = build_src_filter=+ + +PASSWORD_FEATURE = build_src_filter=+ + +ADVANCED_PAUSE_FEATURE = build_src_filter=+ + + +PSU_CONTROL = build_src_filter=+ +HAS_POWER_MONITOR = build_src_filter=+ + +POWER_LOSS_RECOVERY = build_src_filter=+ + +HAS_PTC = build_src_filter=+ + +HAS_FILAMENT_SENSOR = build_src_filter=+ + +(EXT|MANUAL)_SOLENOID.* = build_src_filter=+ + +MK2_MULTIPLEXER = build_src_filter=+ +HAS_CUTTER = build_src_filter=+ + +HAS_DRIVER_SAFE_POWER_PROTECT = build_src_filter=+ +EXPERIMENTAL_I2CBUS = build_src_filter=+ + +G26_MESH_VALIDATION = build_src_filter=+ +ASSISTED_TRAMMING = build_src_filter=+ + +HAS_MESH = build_src_filter=+ +HAS_LEVELING = build_src_filter=+ + +MECHANICAL_GANTRY_CAL.+ = build_src_filter=+ +Z_MULTI_ENDSTOPS|Z_STEPPER_AUTO_ALIGN = build_src_filter=+ +Z_STEPPER_AUTO_ALIGN = build_src_filter=+ +DELTA_AUTO_CALIBRATION = build_src_filter=+ +CALIBRATION_GCODE = build_src_filter=+ +Z_MIN_PROBE_REPEATABILITY_TEST = build_src_filter=+ +M100_FREE_MEMORY_WATCHER = build_src_filter=+ +BACKLASH_GCODE = build_src_filter=+ +IS_KINEMATIC = build_src_filter=+ +HAS_EXTRA_ENDSTOPS = build_src_filter=+ +SKEW_CORRECTION_GCODE = build_src_filter=+ +DIRECT_PIN_CONTROL = build_src_filter=+ + +PINS_DEBUGGING = build_src_filter=+ +HAS_MULTI_EXTRUDER = build_src_filter=+ +HAS_HOTEND_OFFSET = build_src_filter=+ +EDITABLE_SERVO_ANGLES = build_src_filter=+ +PIDTEMP = build_src_filter=+ +PREVENT_COLD_EXTRUSION = build_src_filter=+ +PIDTEMPBED = build_src_filter=+ +HAS_USER_THERMISTORS = build_src_filter=+ +PIDTEMPCHAMBER = build_src_filter=+ +SD_ABORT_ON_ENDSTOP_HIT = build_src_filter=+ +BAUD_RATE_GCODE = build_src_filter=+ +HAS_SMART_EFF_MOD = build_src_filter=+ +COOLANT_CONTROL|AIR_ASSIST = build_src_filter=+ +AIR_EVACUATION = build_src_filter=+ +HAS_SOFTWARE_ENDSTOPS = build_src_filter=+ +SERVO_DETACH_GCODE = build_src_filter=+ +HAS_DUPLICATION_MODE = build_src_filter=+ +SPI_FLASH_BACKUP = build_src_filter=+ +PLATFORM_M997_SUPPORT = build_src_filter=+ +FT_MOTION = build_src_filter=+ + +LIN_ADVANCE = build_src_filter=+ +PHOTO_GCODE = build_src_filter=+ +CONTROLLER_FAN_EDITABLE = build_src_filter=+ +HAS_ZV_SHAPING = build_src_filter=+ +GCODE_MACROS = build_src_filter=+ +GRADIENT_MIX = build_src_filter=+ +OTA_FIRMWARE_UPDATE = build_src_filter=+ +HAS_SAVED_POSITIONS = build_src_filter=+ + +PARK_HEAD_ON_PAUSE = build_src_filter=+ +FILAMENT_LOAD_UNLOAD_GCODES = build_src_filter=+ +CNC_WORKSPACE_PLANES = build_src_filter=+ +CNC_COORDINATE_SYSTEMS = build_src_filter=+ +HAS_M206_COMMAND = build_src_filter=+ +EXPECTED_PRINTER_CHECK = build_src_filter=+ +HOST_KEEPALIVE_FEATURE = build_src_filter=+ +AUTO_REPORT_POSITION = build_src_filter=+ +REPETIER_GCODE_M360 = build_src_filter=+ +HAS_GCODE_M876 = build_src_filter=+ +HAS_RESUME_CONTINUE = build_src_filter=+ +SET_PROGRESS_MANUALLY = build_src_filter=+ +HAS_STATUS_MESSAGE = build_src_filter=+ +HAS_PREHEAT = build_src_filter=+ +HAS_LCD_CONTRAST = build_src_filter=+ +HAS_GCODE_M255 = build_src_filter=+ +HAS_LCD_BRIGHTNESS = build_src_filter=+ +HAS_SOUND = build_src_filter=+ +HAS_MULTI_LANGUAGE = build_src_filter=+ +TOUCH_SCREEN_CALIBRATION = build_src_filter=+ +ARC_SUPPORT = build_src_filter=+ +GCODE_MOTION_MODES = build_src_filter=+ +BABYSTEPPING = build_src_filter=+ + +Z_PROBE_SLED = build_src_filter=+ +G38_PROBE_TARGET = build_src_filter=+ +MAGNETIC_PARKING_EXTRUDER = build_src_filter=+ +HAS_MEDIA = build_src_filter=+ + + + + + + +HAS_MEDIA_SUBCALLS = build_src_filter=+ +GCODE_REPEAT_MARKERS = build_src_filter=+ + +HAS_EXTRUDERS = build_src_filter=+ + +HAS_HOTEND = build_src_filter=+ +HAS_FAN = build_src_filter=+ +HAS_HEATED_BED = build_src_filter=+ +HAS_HEATED_CHAMBER = build_src_filter=+ +HAS_COOLER = build_src_filter=+ +AUTO_REPORT_TEMPERATURES = build_src_filter=+ +HAS_TEMP_PROBE = build_src_filter=+ +HAS_PID_HEATING = build_src_filter=+ +MPCTEMP = build_src_filter=+ +INCH_MODE_SUPPORT = build_src_filter=+ +TEMPERATURE_UNITS_SUPPORT = build_src_filter=+ +NEED_HEX_PRINT = build_src_filter=+ +NEED_LSF = build_src_filter=+ +NOZZLE_PARK_FEATURE = build_src_filter=+ + +NOZZLE_CLEAN_FEATURE = build_src_filter=+ + +DELTA = build_src_filter=+ + +POLARGRAPH = build_src_filter=+ +BEZIER_CURVE_SUPPORT = build_src_filter=+ + +PRINTCOUNTER = build_src_filter=+ +HAS_BED_PROBE = build_src_filter=+ + + + +IS_SCARA = build_src_filter=+ +HAS_SERVOS = build_src_filter=+ + +MORGAN_SCARA = build_src_filter=+ +HAS_MICROSTEPS = build_src_filter=+ (ESP3D_)?WIFISUPPORT = AsyncTCP, ESP Async WebServer ESP3DLib=https://github.com/luc-github/ESP3DLib/archive/master.zip arduinoWebSockets=links2004/WebSockets@2.3.4 From e7de3b92c9952e160c0b46479437cf5de0e993e8 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 13 May 2023 00:19:22 +0000 Subject: [PATCH 419/659] [cron] Bump distribution date (2023-05-13) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 9a13c5ce3e..f2258b55e7 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-12" +//#define STRING_DISTRIBUTION_DATE "2023-05-13" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index e4eb143c3d..3f3032fe33 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-12" + #define STRING_DISTRIBUTION_DATE "2023-05-13" #endif /** From e41dc273c9d9ee05947ecd66c44c7c7a91868545 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 12 May 2023 20:13:12 -0500 Subject: [PATCH 420/659] =?UTF-8?q?=F0=9F=94=A7=20Update=20config.ini=20an?= =?UTF-8?q?d=20script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/config.ini | 10 +++++----- .../share/PlatformIO/scripts/configuration.py | 20 ++++++++++++++----- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/Marlin/config.ini b/Marlin/config.ini index 6d2a49c2ed..17ff3bec7e 100644 --- a/Marlin/config.ini +++ b/Marlin/config.ini @@ -42,7 +42,7 @@ preheat_1_temp_hotend = 180 bang_max = 255 pidtemp = on pid_k1 = 0.95 -pid_max = BANG_MAX +pid_max = 255 pid_functional_range = 10 default_kp = 22.20 @@ -96,10 +96,10 @@ step_state_x = HIGH step_state_y = HIGH step_state_z = HIGH -disable_x = false -disable_y = false -disable_z = false -disable_e = false +disable_x = off +disable_y = off +disable_z = off +disable_e = off proportional_font_ratio = 1.0 default_nominal_filament_dia = 1.75 diff --git a/buildroot/share/PlatformIO/scripts/configuration.py b/buildroot/share/PlatformIO/scripts/configuration.py index 3fc43ed6d8..250d9bbd7f 100644 --- a/buildroot/share/PlatformIO/scripts/configuration.py +++ b/buildroot/share/PlatformIO/scripts/configuration.py @@ -18,7 +18,16 @@ def apply_opt(name, val, conf=None): if name == "lcd": name, val = val, "on" # Create a regex to match the option and capture parts of the line - regex = re.compile(rf'^(\s*)(//\s*)?(#define\s+)({name}\b)(\s*)(.*?)(\s*)(//.*)?$', re.IGNORECASE) + # 1: Indentation + # 2: Comment + # 3: #define and whitespace + # 4: Option name + # 5: First space after name + # 6: Remaining spaces between name and value + # 7: Option value + # 8: Whitespace after value + # 9: End comment + regex = re.compile(rf'^(\s*)(//\s*)?(#define\s+)({name}\b)(\s?)(\s*)(.*?)(\s*)(//.*)?$', re.IGNORECASE) # Find and enable and/or update all matches for file in ("Configuration.h", "Configuration_adv.h"): @@ -37,10 +46,11 @@ def apply_opt(name, val, conf=None): newline = re.sub(r'^(\s*)(#define)(\s{1,3})?(\s*)', r'\1//\2 \4', line) else: # For options with values, enable and set the value - newline = match[1] + match[3] + match[4] + match[5] + val - if match[8]: - sp = match[7] if match[7] else ' ' - newline += sp + match[8] + addsp = '' if match[5] else ' ' + newline = match[1] + match[3] + match[4] + match[5] + addsp + val + match[6] + if match[9]: + sp = match[8] if match[8] else ' ' + newline += sp + match[9] lines[i] = newline blab(f"Set {name} to {val}") From 18005cb91e6d731b332b0baa29902bdd46a14313 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 13 May 2023 16:12:59 -0500 Subject: [PATCH 421/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Con?= =?UTF-8?q?stexpr=20types.h=20operators=20(#25811)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/types.h | 491 ++++++++++++++++++---------------------- 1 file changed, 225 insertions(+), 266 deletions(-) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 20f589d60a..4c7ebc884f 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -78,14 +78,34 @@ template struct IF { typedef L type; }; #define LOGICAL_AXIS_MAP(F) MAP(F, LOGICAL_AXIS_NAMES) #define STR_AXES_LOGICAL LOGICAL_AXIS_GANG("E", "X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W) -#define XYZ_GANG(V...) GANG_N(PRIMARY_LINEAR_AXES, V) -#define XYZ_CODE(V...) CODE_N(PRIMARY_LINEAR_AXES, V) - #define SECONDARY_AXIS_GANG(V...) GANG_N(SECONDARY_AXES, V) #define SECONDARY_AXIS_CODE(V...) CODE_N(SECONDARY_AXES, V) #define SECONDARY_AXIS_LIST(V...) LIST_N(SECONDARY_AXES, V) #define SECONDARY_AXIS_ARGS(T) SECONDARY_AXIS_LIST(T i, T j, T k, T u, T v, T w) +// Just the XY or XYZ elements +#if HAS_Z_AXIS + #define XYZ_COUNT 3 + #define XY_COUNT 2 +#elif HAS_Y_AXIS + #define XY_COUNT 2 +#elif HAS_X_AXIS + #define XY_COUNT 1 +#else + #define XY_COUNT 0 +#endif +#ifndef XYZ_COUNT + #define XYZ_COUNT XY_COUNT +#endif +#define XY_LIST(V...) LIST_N(XY_COUNT, V) +#define XY_ARRAY(V...) ARRAY_N(XY_COUNT, V) +#define XY_CODE(V...) CODE_N(XY_COUNT, V) +#define XY_GANG(V...) GANG_N(XY_COUNT, V) +#define XYZ_LIST(V...) LIST_N(XYZ_COUNT, V) +#define XYZ_ARRAY(V...) ARRAY_N(XYZ_COUNT, V) +#define XYZ_CODE(V...) CODE_N(XYZ_COUNT, V) +#define XYZ_GANG(V...) GANG_N(XYZ_COUNT, V) + #if HAS_ROTATIONAL_AXES #define ROTATIONAL_AXIS_GANG(V...) GANG_N(ROTATIONAL_AXES, V) #endif @@ -110,8 +130,10 @@ template struct IF { typedef L type; }; // Helpers #define _RECIP(N) ((N) ? 1.0f / static_cast(N) : 0.0f) #define _ABS(N) ((N) < 0 ? -(N) : (N)) -#define _LS(N) (N = (T)(uint32_t(N) << p)) -#define _RS(N) (N = (T)(uint32_t(N) >> p)) +#define _LS(N) T(uint32_t(N) << p) +#define _RS(N) T(uint32_t(N) >> p) +#define _LSE(N) N = T(uint32_t(N) << p) +#define _RSE(N) N = T(uint32_t(N) >> p) #define FI FORCE_INLINE // Define types based on largest bit width stored value required @@ -345,6 +367,7 @@ void toNative(xyze_pos_t &lpos); // // Paired XY coordinates, counters, flags, etc. +// Always has XY elements regardless of the number of configured axes. // template struct XYval { @@ -355,138 +378,116 @@ struct XYval { }; // Set all to 0 - FI void reset() { x = y = 0; } + FI void reset() { x = y = 0; } // Setters taking struct types and arrays #if HAS_X_AXIS - FI void set(const T px) { x = px; } + FI void set(const T px) { x = px; } #endif #if HAS_Y_AXIS - FI void set(const T px, const T py) { x = px; y = py; } - FI void set(const T (&arr)[XY]) { x = arr[0]; y = arr[1]; } + FI void set(const T px, const T py) { x = px; y = py; } + FI void set(const T (&arr)[XY]) { x = arr[0]; y = arr[1]; } #endif #if NUM_AXES > XY - FI void set(const T (&arr)[NUM_AXES]) { x = arr[0]; y = arr[1]; } + FI void set(const T (&arr)[NUM_AXES]) { x = arr[0]; y = arr[1]; } #endif #if LOGICAL_AXES > NUM_AXES - FI void set(const T (&arr)[LOGICAL_AXES]) { x = arr[0]; y = arr[1]; } + FI void set(const T (&arr)[LOGICAL_AXES]) { x = arr[0]; y = arr[1]; } #if DISTINCT_AXES > LOGICAL_AXES - FI void set(const T (&arr)[DISTINCT_AXES]) { x = arr[0]; y = arr[1]; } + FI void set(const T (&arr)[DISTINCT_AXES]) { x = arr[0]; y = arr[1]; } #endif #endif // Length reduced to one dimension - FI T magnitude() const { return (T)sqrtf(x*x + y*y); } + FI constexpr T magnitude() const { return (T)sqrtf(x*x + y*y); } // Pointer to the data as a simple array - FI operator T* () { return pos; } + FI operator T* () { return pos; } // If any element is true then it's true - FI operator bool() { return x || y; } + FI constexpr operator bool() const { return x || y; } // Smallest element - FI T small() const { return _MIN(x, y); } + FI constexpr T small() const { return _MIN(x, y); } // Largest element - FI T large() const { return _MAX(x, y); } + FI constexpr T large() const { return _MAX(x, y); } // Explicit copy and copies with conversion - FI XYval copy() const { return *this; } - FI XYval ABS() const { return { T(_ABS(x)), T(_ABS(y)) }; } - FI XYval asInt() { return { int16_t(x), int16_t(y) }; } - FI XYval asInt() const { return { int16_t(x), int16_t(y) }; } - FI XYval asLong() { return { int32_t(x), int32_t(y) }; } - FI XYval asLong() const { return { int32_t(x), int32_t(y) }; } - FI XYval ROUNDL() { return { int32_t(LROUND(x)), int32_t(LROUND(y)) }; } - FI XYval ROUNDL() const { return { int32_t(LROUND(x)), int32_t(LROUND(y)) }; } - FI XYval asFloat() { return { static_cast(x), static_cast(y) }; } - FI XYval asFloat() const { return { static_cast(x), static_cast(y) }; } - FI XYval reciprocal() const { return { _RECIP(x), _RECIP(y) }; } + FI constexpr XYval copy() const { return *this; } + FI constexpr XYval ABS() const { return { T(_ABS(x)), T(_ABS(y)) }; } + FI constexpr XYval asInt() const { return { int16_t(x), int16_t(y) }; } + FI constexpr XYval asLong() const { return { int32_t(x), int32_t(y) }; } + FI constexpr XYval ROUNDL() const { return { int32_t(LROUND(x)), int32_t(LROUND(y)) }; } + FI constexpr XYval asFloat() const { return { static_cast(x), static_cast(y) }; } + FI constexpr XYval reciprocal() const { return { _RECIP(x), _RECIP(y) }; } // Marlin workspace shifting is done with G92 and M206 - FI XYval asLogical() const { XYval o = asFloat(); toLogical(o); return o; } - FI XYval asNative() const { XYval o = asFloat(); toNative(o); return o; } + FI XYval asLogical() const { XYval o = asFloat(); toLogical(o); return o; } + FI XYval asNative() const { XYval o = asFloat(); toNative(o); return o; } // Cast to a type with more fields by making a new object - FI operator XYZval() { return { x, y }; } - FI operator XYZval() const { return { x, y }; } - FI operator XYZEval() { return { x, y }; } - FI operator XYZEval() const { return { x, y }; } + FI constexpr operator XYZval() const { return { x, y }; } + FI constexpr operator XYZEval() const { return { x, y }; } // Accessor via an AxisEnum (or any integer) [index] - FI T& operator[](const int n) { return pos[n]; } - FI const T& operator[](const int n) const { return pos[n]; } + FI T& operator[](const int n) { return pos[n]; } + FI const T& operator[](const int n) const { return pos[n]; } // Assignment operator overrides do the expected thing - FI XYval& operator= (const T v) { set(v, v ); return *this; } - FI XYval& operator= (const XYZval &rs) { set(rs.x, rs.y); return *this; } - FI XYval& operator= (const XYZEval &rs) { set(rs.x, rs.y); return *this; } + FI XYval& operator= (const T v) { set(v, v); return *this; } + FI XYval& operator= (const XYZval &rs) { set(XY_LIST(rs.x, rs.y)); return *this; } + FI XYval& operator= (const XYZEval &rs) { set(XY_LIST(rs.x, rs.y)); return *this; } // Override other operators to get intuitive behaviors - FI XYval operator+ (const XYval &rs) const { XYval ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; } - FI XYval operator+ (const XYval &rs) { XYval ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; } - FI XYval operator- (const XYval &rs) const { XYval ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; } - FI XYval operator- (const XYval &rs) { XYval ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; } - FI XYval operator* (const XYval &rs) const { XYval ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; } - FI XYval operator* (const XYval &rs) { XYval ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; } - FI XYval operator/ (const XYval &rs) const { XYval ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; } - FI XYval operator/ (const XYval &rs) { XYval ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; } - FI XYval operator+ (const XYZval &rs) const { XYval ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; } - FI XYval operator+ (const XYZval &rs) { XYval ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; } - FI XYval operator- (const XYZval &rs) const { XYval ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; } - FI XYval operator- (const XYZval &rs) { XYval ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; } - FI XYval operator* (const XYZval &rs) const { XYval ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; } - FI XYval operator* (const XYZval &rs) { XYval ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; } - FI XYval operator/ (const XYZval &rs) const { XYval ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; } - FI XYval operator/ (const XYZval &rs) { XYval ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; } - FI XYval operator+ (const XYZEval &rs) const { XYval ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; } - FI XYval operator+ (const XYZEval &rs) { XYval ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; } - FI XYval operator- (const XYZEval &rs) const { XYval ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; } - FI XYval operator- (const XYZEval &rs) { XYval ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; } - FI XYval operator* (const XYZEval &rs) const { XYval ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; } - FI XYval operator* (const XYZEval &rs) { XYval ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; } - FI XYval operator/ (const XYZEval &rs) const { XYval ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; } - FI XYval operator/ (const XYZEval &rs) { XYval ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; } - FI XYval operator* (const float &p) const { XYval ls = *this; ls.x *= p; ls.y *= p; return ls; } - FI XYval operator* (const float &p) { XYval ls = *this; ls.x *= p; ls.y *= p; return ls; } - FI XYval operator* (const int &p) const { XYval ls = *this; ls.x *= p; ls.y *= p; return ls; } - FI XYval operator* (const int &p) { XYval ls = *this; ls.x *= p; ls.y *= p; return ls; } - FI XYval operator/ (const float &p) const { XYval ls = *this; ls.x /= p; ls.y /= p; return ls; } - FI XYval operator/ (const float &p) { XYval ls = *this; ls.x /= p; ls.y /= p; return ls; } - FI XYval operator/ (const int &p) const { XYval ls = *this; ls.x /= p; ls.y /= p; return ls; } - FI XYval operator/ (const int &p) { XYval ls = *this; ls.x /= p; ls.y /= p; return ls; } - FI XYval operator>>(const int &p) const { XYval ls = *this; _RS(ls.x); _RS(ls.y); return ls; } - FI XYval operator>>(const int &p) { XYval ls = *this; _RS(ls.x); _RS(ls.y); return ls; } - FI XYval operator<<(const int &p) const { XYval ls = *this; _LS(ls.x); _LS(ls.y); return ls; } - FI XYval operator<<(const int &p) { XYval ls = *this; _LS(ls.x); _LS(ls.y); return ls; } - FI const XYval operator-() const { XYval o = *this; o.x = -x; o.y = -y; return o; } - FI XYval operator-() { XYval o = *this; o.x = -x; o.y = -y; return o; } + #define XY_OP(OP) { x TERN_(HAS_X_AXIS, OP rs.x), y TERN_(HAS_Y_AXIS, OP rs.y) } + FI constexpr XYval operator+ (const XYval &rs) const { return { x + rs.x, y + rs.y }; } + FI constexpr XYval operator- (const XYval &rs) const { return { x - rs.x, y - rs.y }; } + FI constexpr XYval operator* (const XYval &rs) const { return { x * rs.x, y * rs.y }; } + FI constexpr XYval operator/ (const XYval &rs) const { return { x / rs.x, y / rs.y }; } + FI constexpr XYval operator+ (const XYZval &rs) const { return { XY_OP(+) }; } + FI constexpr XYval operator- (const XYZval &rs) const { return { XY_OP(-) }; } + FI constexpr XYval operator* (const XYZval &rs) const { return { XY_OP(*) }; } + FI constexpr XYval operator/ (const XYZval &rs) const { return { XY_OP(/) }; } + FI constexpr XYval operator+ (const XYZEval &rs) const { return { XY_OP(+) }; } + FI constexpr XYval operator- (const XYZEval &rs) const { return { XY_OP(-) }; } + FI constexpr XYval operator* (const XYZEval &rs) const { return { XY_OP(*) }; } + FI constexpr XYval operator/ (const XYZEval &rs) const { return { XY_OP(/) }; } + FI constexpr XYval operator* (const float &p) const { return { x * p, y * p }; } + FI constexpr XYval operator* (const int &p) const { return { x * p, y * p }; } + FI constexpr XYval operator/ (const float &p) const { return { x / p, y / p }; } + FI constexpr XYval operator/ (const int &p) const { return { x / p, y / p }; } + FI constexpr XYval operator>>(const int &p) const { return { _RS(x), _RS(y) }; } + FI constexpr XYval operator<<(const int &p) const { return { _LS(x), _LS(y) }; } + FI constexpr XYval operator-() const { return { -x, -y }; } + #undef XY_OP // Modifier operators - FI XYval& operator+=(const XYval &rs) { x += rs.x; y += rs.y; return *this; } - FI XYval& operator-=(const XYval &rs) { x -= rs.x; y -= rs.y; return *this; } - FI XYval& operator*=(const XYval &rs) { x *= rs.x; y *= rs.y; return *this; } - FI XYval& operator/=(const XYval &rs) { x /= rs.x; y /= rs.y; return *this; } - FI XYval& operator+=(const XYZval &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; } - FI XYval& operator-=(const XYZval &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; } - FI XYval& operator*=(const XYZval &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; } - FI XYval& operator/=(const XYZval &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; } - FI XYval& operator+=(const XYZEval &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; } - FI XYval& operator-=(const XYZEval &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; } - FI XYval& operator*=(const XYZEval &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; } - FI XYval& operator/=(const XYZEval &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; } - FI XYval& operator*=(const float &p) { x *= p; y *= p; return *this; } - FI XYval& operator*=(const int &p) { x *= p; y *= p; return *this; } - FI XYval& operator>>=(const int &p) { _RS(x); _RS(y); return *this; } - FI XYval& operator<<=(const int &p) { _LS(x); _LS(y); return *this; } + FI XYval& operator+=(const XYval &rs) { x += rs.x; y += rs.y; return *this; } + FI XYval& operator-=(const XYval &rs) { x -= rs.x; y -= rs.y; return *this; } + FI XYval& operator*=(const XYval &rs) { x *= rs.x; y *= rs.y; return *this; } + FI XYval& operator/=(const XYval &rs) { x /= rs.x; y /= rs.y; return *this; } + FI XYval& operator+=(const XYZval &rs) { XY_CODE(x += rs.x, y += rs.y); return *this; } + FI XYval& operator-=(const XYZval &rs) { XY_CODE(x -= rs.x, y -= rs.y); return *this; } + FI XYval& operator*=(const XYZval &rs) { XY_CODE(x *= rs.x, y *= rs.y); return *this; } + FI XYval& operator/=(const XYZval &rs) { XY_CODE(x /= rs.x, y /= rs.y); return *this; } + FI XYval& operator+=(const XYZEval &rs) { XY_CODE(x += rs.x, y += rs.y); return *this; } + FI XYval& operator-=(const XYZEval &rs) { XY_CODE(x -= rs.x, y -= rs.y); return *this; } + FI XYval& operator*=(const XYZEval &rs) { XY_CODE(x *= rs.x, y *= rs.y); return *this; } + FI XYval& operator/=(const XYZEval &rs) { XY_CODE(x /= rs.x, y /= rs.y); return *this; } + FI XYval& operator*=(const float &p) { x *= p; y *= p; return *this; } + FI XYval& operator*=(const int &p) { x *= p; y *= p; return *this; } + FI XYval& operator>>=(const int &p) { _RSE(x); _RSE(y); return *this; } + FI XYval& operator<<=(const int &p) { _LSE(x); _LSE(y); return *this; } // Exact comparisons. For floats a "NEAR" operation may be better. - FI bool operator==(const XYval &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y,,,,,,, ); } - FI bool operator==(const XYZval &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y,,,,,,, ); } - FI bool operator==(const XYZEval &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y,,,,,,, ); } - FI bool operator!=(const XYval &rs) const { return !operator==(rs); } - FI bool operator!=(const XYZval &rs) const { return !operator==(rs); } - FI bool operator!=(const XYZEval &rs) const { return !operator==(rs); } + FI bool operator==(const XYval &rs) const { return x == rs.x && y == rs.y; } + FI bool operator==(const XYZval &rs) const { return ENABLED(HAS_X_AXIS) XY_GANG(&& x == rs.x, && y == rs.y); } + FI bool operator==(const XYZEval &rs) const { return ENABLED(HAS_X_AXIS) XY_GANG(&& x == rs.x, && y == rs.y); } + FI bool operator!=(const XYval &rs) const { return !operator==(rs); } + FI bool operator!=(const XYZval &rs) const { return !operator==(rs); } + FI bool operator!=(const XYZEval &rs) const { return !operator==(rs); } }; // // Linear Axes coordinates, counters, flags, etc. +// May have any number of axes according to configuration, including zero axes. // template struct XYZval { @@ -502,12 +503,12 @@ struct XYZval { FI void reset() { NUM_AXIS_CODE(x = 0, y = 0, z = 0, i = 0, j = 0, k = 0, u = 0, v = 0, w = 0); } // Setters taking struct types and arrays - FI void set(const XYval pxy) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y,,,,,,,); } - FI void set(const XYval pxy, const T pz) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y, z = pz,,,,,,); } + FI void set(const XYval pxy) { XY_CODE(x = pxy.x, y = pxy.y); } + FI void set(const XYval pxy, const T pz) { XYZ_CODE(x = pxy.x, y = pxy.y, z = pz); } FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); } #if LOGICAL_AXES > NUM_AXES FI void set(const T (&arr)[LOGICAL_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); } - FI void set(LOGICAL_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w ); } + FI void set(LOGICAL_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); } #if DISTINCT_AXES > LOGICAL_AXES FI void set(const T (&arr)[DISTINCT_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); } #endif @@ -543,114 +544,93 @@ struct XYZval { #endif // Length reduced to one dimension - FI T magnitude() const { return (T)TERN(HAS_X_AXIS, sqrtf(NUM_AXIS_GANG(x*x, + y*y, + z*z, + i*i, + j*j, + k*k, + u*u, + v*v, + w*w)), 0); } + FI constexpr T magnitude() const { return (T)TERN(HAS_X_AXIS, sqrtf(NUM_AXIS_GANG(x*x, + y*y, + z*z, + i*i, + j*j, + k*k, + u*u, + v*v, + w*w)), 0); } // Pointer to the data as a simple array - FI operator T* () { return (T*)this; } + FI operator T* () { return pos; } // If any element is true then it's true - FI operator bool() { return 0 NUM_AXIS_GANG(|| x, || y, || z, || i, || j, || k, || u, || v, || w); } + FI constexpr operator bool() const { return 0 NUM_AXIS_GANG(|| x, || y, || z, || i, || j, || k, || u, || v, || w); } // Smallest element - FI T small() const { return TERN(HAS_X_AXIS,_MIN(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w));,0;) } + FI constexpr T small() const { return TERN(HAS_X_AXIS, _MIN(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w)), 0); } // Largest element - FI T large() const { return TERN(HAS_X_AXIS,_MAX(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w));,0;) } + FI constexpr T large() const { return TERN(HAS_X_AXIS, _MAX(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w)), 0); } // Explicit copy and copies with conversion - FI XYZval copy() const { XYZval o = *this; return o; } - FI XYZval ABS() const { return NUM_AXIS_ARRAY(T(_ABS(x)), T(_ABS(y)), T(_ABS(z)), T(_ABS(i)), T(_ABS(j)), T(_ABS(k)), T(_ABS(u)), T(_ABS(v)), T(_ABS(w))); } - FI XYZval asInt() { return NUM_AXIS_ARRAY(int16_t(x), int16_t(y), int16_t(z), int16_t(i), int16_t(j), int16_t(k), int16_t(u), int16_t(v), int16_t(w)); } - FI XYZval asInt() const { return NUM_AXIS_ARRAY(int16_t(x), int16_t(y), int16_t(z), int16_t(i), int16_t(j), int16_t(k), int16_t(u), int16_t(v), int16_t(w)); } - FI XYZval asLong() { return NUM_AXIS_ARRAY(int32_t(x), int32_t(y), int32_t(z), int32_t(i), int32_t(j), int32_t(k), int32_t(u), int32_t(v), int32_t(w)); } - FI XYZval asLong() const { return NUM_AXIS_ARRAY(int32_t(x), int32_t(y), int32_t(z), int32_t(i), int32_t(j), int32_t(k), int32_t(u), int32_t(v), int32_t(w)); } - FI XYZval ROUNDL() { return NUM_AXIS_ARRAY(int32_t(LROUND(x)), int32_t(LROUND(y)), int32_t(LROUND(z)), int32_t(LROUND(i)), int32_t(LROUND(j)), int32_t(LROUND(k)), int32_t(LROUND(u)), int32_t(LROUND(v)), int32_t(LROUND(w))); } - FI XYZval ROUNDL() const { return NUM_AXIS_ARRAY(int32_t(LROUND(x)), int32_t(LROUND(y)), int32_t(LROUND(z)), int32_t(LROUND(i)), int32_t(LROUND(j)), int32_t(LROUND(k)), int32_t(LROUND(u)), int32_t(LROUND(v)), int32_t(LROUND(w))); } - FI XYZval asFloat() { return NUM_AXIS_ARRAY(static_cast(x), static_cast(y), static_cast(z), static_cast(i), static_cast(j), static_cast(k), static_cast(u), static_cast(v), static_cast(w)); } - FI XYZval asFloat() const { return NUM_AXIS_ARRAY(static_cast(x), static_cast(y), static_cast(z), static_cast(i), static_cast(j), static_cast(k), static_cast(u), static_cast(v), static_cast(w)); } - FI XYZval reciprocal() const { return NUM_AXIS_ARRAY(_RECIP(x), _RECIP(y), _RECIP(z), _RECIP(i), _RECIP(j), _RECIP(k), _RECIP(u), _RECIP(v), _RECIP(w)); } + FI constexpr XYZval copy() const { XYZval o = *this; return o; } + FI constexpr XYZval ABS() const { return NUM_AXIS_ARRAY(T(_ABS(x)), T(_ABS(y)), T(_ABS(z)), T(_ABS(i)), T(_ABS(j)), T(_ABS(k)), T(_ABS(u)), T(_ABS(v)), T(_ABS(w))); } + FI constexpr XYZval asInt() const { return NUM_AXIS_ARRAY(int16_t(x), int16_t(y), int16_t(z), int16_t(i), int16_t(j), int16_t(k), int16_t(u), int16_t(v), int16_t(w)); } + FI constexpr XYZval asLong() const { return NUM_AXIS_ARRAY(int32_t(x), int32_t(y), int32_t(z), int32_t(i), int32_t(j), int32_t(k), int32_t(u), int32_t(v), int32_t(w)); } + FI constexpr XYZval ROUNDL() const { return NUM_AXIS_ARRAY(int32_t(LROUND(x)), int32_t(LROUND(y)), int32_t(LROUND(z)), int32_t(LROUND(i)), int32_t(LROUND(j)), int32_t(LROUND(k)), int32_t(LROUND(u)), int32_t(LROUND(v)), int32_t(LROUND(w))); } + FI constexpr XYZval asFloat() const { return NUM_AXIS_ARRAY(static_cast(x), static_cast(y), static_cast(z), static_cast(i), static_cast(j), static_cast(k), static_cast(u), static_cast(v), static_cast(w)); } + FI constexpr XYZval reciprocal() const { return NUM_AXIS_ARRAY(_RECIP(x), _RECIP(y), _RECIP(z), _RECIP(i), _RECIP(j), _RECIP(k), _RECIP(u), _RECIP(v), _RECIP(w)); } // Marlin workspace shifting is done with G92 and M206 - FI XYZval asLogical() const { XYZval o = asFloat(); toLogical(o); return o; } - FI XYZval asNative() const { XYZval o = asFloat(); toNative(o); return o; } + FI XYZval asLogical() const { XYZval o = asFloat(); toLogical(o); return o; } + FI XYZval asNative() const { XYZval o = asFloat(); toNative(o); return o; } // In-place cast to types having fewer fields - FI operator XYval&() { return *(XYval*)this; } - FI operator const XYval&() const { return *(const XYval*)this; } + FI operator XYval&() { return *(XYval*)this; } + FI operator const XYval&() const { return *(const XYval*)this; } // Cast to a type with more fields by making a new object - FI operator XYZEval() const { return NUM_AXIS_ARRAY(x, y, z, i, j, k, u, v, w); } + FI constexpr operator XYZEval() const { return NUM_AXIS_ARRAY(x, y, z, i, j, k, u, v, w); } // Accessor via an AxisEnum (or any integer) [index] - FI T& operator[](const int n) { return pos[n]; } - FI const T& operator[](const int n) const { return pos[n]; } + FI T& operator[](const int n) { return pos[n]; } + FI const T& operator[](const int n) const { return pos[n]; } // Assignment operator overrides do the expected thing - FI XYZval& operator= (const T v) { set(ARRAY_N_1(NUM_AXES, v)); return *this; } - FI XYZval& operator= (const XYval &rs) { set(rs.x, rs.y ); return *this; } - FI XYZval& operator= (const XYZEval &rs) { set(NUM_AXIS_ELEM(rs)); return *this; } + FI XYZval& operator= (const T v) { set(ARRAY_N_1(NUM_AXES, v)); return *this; } + FI XYZval& operator= (const XYval &rs) { set(rs.x, rs.y); return *this; } + FI XYZval& operator= (const XYZEval &rs) { set(NUM_AXIS_ELEM(rs)); return *this; } // Override other operators to get intuitive behaviors - FI XYZval operator+ (const XYval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y,,,,,,, ); return ls; } - FI XYZval operator+ (const XYval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y,,,,,,, ); return ls; } - FI XYZval operator- (const XYval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y,,,,,,, ); return ls; } - FI XYZval operator- (const XYval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y,,,,,,, ); return ls; } - FI XYZval operator* (const XYval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y,,,,,,, ); return ls; } - FI XYZval operator* (const XYval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y,,,,,,, ); return ls; } - FI XYZval operator/ (const XYval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y,,,,,,, ); return ls; } - FI XYZval operator/ (const XYval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y,,,,,,, ); return ls; } - FI XYZval operator+ (const XYZval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; } - FI XYZval operator+ (const XYZval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; } - FI XYZval operator- (const XYZval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; } - FI XYZval operator- (const XYZval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; } - FI XYZval operator* (const XYZval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; } - FI XYZval operator* (const XYZval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; } - FI XYZval operator/ (const XYZval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; } - FI XYZval operator/ (const XYZval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; } - FI XYZval operator+ (const XYZEval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; } - FI XYZval operator+ (const XYZEval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; } - FI XYZval operator- (const XYZEval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; } - FI XYZval operator- (const XYZEval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; } - FI XYZval operator* (const XYZEval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; } - FI XYZval operator* (const XYZEval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; } - FI XYZval operator/ (const XYZEval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; } - FI XYZval operator/ (const XYZEval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; } - FI XYZval operator* (const float &p) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; } - FI XYZval operator* (const float &p) { XYZval ls = *this; NUM_AXIS_CODE(ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; } - FI XYZval operator* (const int &p) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; } - FI XYZval operator* (const int &p) { XYZval ls = *this; NUM_AXIS_CODE(ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; } - FI XYZval operator/ (const float &p) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; } - FI XYZval operator/ (const float &p) { XYZval ls = *this; NUM_AXIS_CODE(ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; } - FI XYZval operator/ (const int &p) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; } - FI XYZval operator/ (const int &p) { XYZval ls = *this; NUM_AXIS_CODE(ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; } - FI XYZval operator>>(const int &p) const { XYZval ls = *this; NUM_AXIS_CODE(_RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k), _RS(ls.u), _RS(ls.v), _RS(ls.w) ); return ls; } - FI XYZval operator>>(const int &p) { XYZval ls = *this; NUM_AXIS_CODE(_RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k), _RS(ls.u), _RS(ls.v), _RS(ls.w) ); return ls; } - FI XYZval operator<<(const int &p) const { XYZval ls = *this; NUM_AXIS_CODE(_LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k), _LS(ls.u), _LS(ls.v), _LS(ls.w) ); return ls; } - FI XYZval operator<<(const int &p) { XYZval ls = *this; NUM_AXIS_CODE(_LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k), _LS(ls.u), _LS(ls.v), _LS(ls.w) ); return ls; } - FI const XYZval operator-() const { XYZval o = *this; NUM_AXIS_CODE(o.x = -x, o.y = -y, o.z = -z, o.i = -i, o.j = -j, o.k = -k, o.u = -u, o.v = -v, o.w = -w); return o; } - FI XYZval operator-() { XYZval o = *this; NUM_AXIS_CODE(o.x = -x, o.y = -y, o.z = -z, o.i = -i, o.j = -j, o.k = -k, o.u = -u, o.v = -v, o.w = -w); return o; } + FI constexpr XYZval operator+ (const XYval &rs) const { return NUM_AXIS_ARRAY(x + rs.x, y + rs.y, z, i, j, k, u, v, w ); } + FI constexpr XYZval operator- (const XYval &rs) const { return NUM_AXIS_ARRAY(x - rs.x, y - rs.y, z, i, j, k, u, v, w ); } + FI constexpr XYZval operator* (const XYval &rs) const { return NUM_AXIS_ARRAY(x * rs.x, y * rs.y, z, i, j, k, u, v, w ); } + FI constexpr XYZval operator/ (const XYval &rs) const { return NUM_AXIS_ARRAY(x / rs.x, y / rs.y, z, i, j, k, u, v, w ); } + FI constexpr XYZval operator+ (const XYZval &rs) const { return NUM_AXIS_ARRAY(x + rs.x, y + rs.y, z + rs.z, i + rs.i, j + rs.j, k + rs.k, u + rs.u, v + rs.v, w + rs.w ); } + FI constexpr XYZval operator- (const XYZval &rs) const { return NUM_AXIS_ARRAY(x - rs.x, y - rs.y, z - rs.z, i - rs.i, j - rs.j, k - rs.k, u - rs.u, v - rs.v, w - rs.w ); } + FI constexpr XYZval operator* (const XYZval &rs) const { return NUM_AXIS_ARRAY(x * rs.x, y * rs.y, z * rs.z, i * rs.i, j * rs.j, k * rs.k, u * rs.u, v * rs.v, w * rs.w ); } + FI constexpr XYZval operator/ (const XYZval &rs) const { return NUM_AXIS_ARRAY(x / rs.x, y / rs.y, z / rs.z, i / rs.i, j / rs.j, k / rs.k, u / rs.u, v / rs.v, w / rs.w ); } + FI constexpr XYZval operator+ (const XYZEval &rs) const { return NUM_AXIS_ARRAY(x + rs.x, y + rs.y, z + rs.z, i + rs.i, j + rs.j, k + rs.k, u + rs.u, v + rs.v, w + rs.w ); } + FI constexpr XYZval operator- (const XYZEval &rs) const { return NUM_AXIS_ARRAY(x - rs.x, y - rs.y, z - rs.z, i - rs.i, j - rs.j, k - rs.k, u - rs.u, v - rs.v, w - rs.w ); } + FI constexpr XYZval operator* (const XYZEval &rs) const { return NUM_AXIS_ARRAY(x * rs.x, y * rs.y, z * rs.z, i * rs.i, j * rs.j, k * rs.k, u * rs.u, v * rs.v, w * rs.w ); } + FI constexpr XYZval operator/ (const XYZEval &rs) const { return NUM_AXIS_ARRAY(x / rs.x, y / rs.y, z / rs.z, i / rs.i, j / rs.j, k / rs.k, u / rs.u, v / rs.v, w / rs.w ); } + FI constexpr XYZval operator* (const float &p) const { return NUM_AXIS_ARRAY(x * p, y * p, z * p, i * p, j * p, k * p, u * p, v * p, w * p); } + FI constexpr XYZval operator* (const int &p) const { return NUM_AXIS_ARRAY(x * p, y * p, z * p, i * p, j * p, k * p, u * p, v * p, w * p); } + FI constexpr XYZval operator/ (const float &p) const { return NUM_AXIS_ARRAY(x / p, y / p, z / p, i / p, j / p, k / p, u / p, v / p, w / p); } + FI constexpr XYZval operator/ (const int &p) const { return NUM_AXIS_ARRAY(x / p, y / p, z / p, i / p, j / p, k / p, u / p, v / p, w / p); } + FI constexpr XYZval operator>>(const int &p) const { return NUM_AXIS_ARRAY(_RS(x), _RS(y), _RS(z), _RS(i), _RS(j), _RS(k), _RS(u), _RS(v), _RS(w)); } + FI constexpr XYZval operator<<(const int &p) const { return NUM_AXIS_ARRAY(_LS(x), _LS(y), _LS(z), _LS(i), _LS(j), _LS(k), _LS(u), _LS(v), _LS(w)); } + FI constexpr XYZval operator-() const { return NUM_AXIS_ARRAY(-x, -y, -z, -i, -j, -k, -u, -v, -w); } // Modifier operators - FI XYZval& operator+=(const XYval &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; } - FI XYZval& operator-=(const XYval &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; } - FI XYZval& operator*=(const XYval &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; } - FI XYZval& operator/=(const XYval &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; } - FI XYZval& operator+=(const XYZval &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; } - FI XYZval& operator-=(const XYZval &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; } - FI XYZval& operator*=(const XYZval &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; } - FI XYZval& operator/=(const XYZval &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k, u /= rs.u, v /= rs.v, w /= rs.w); return *this; } - FI XYZval& operator+=(const XYZEval &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; } - FI XYZval& operator-=(const XYZEval &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; } - FI XYZval& operator*=(const XYZEval &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; } - FI XYZval& operator/=(const XYZEval &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k, u /= rs.u, v /= rs.v, w /= rs.w); return *this; } - FI XYZval& operator*=(const float &p) { NUM_AXIS_CODE(x *= p, y *= p, z *= p, i *= p, j *= p, k *= p, u *= p, v *= p, w *= p); return *this; } - FI XYZval& operator*=(const int &p) { NUM_AXIS_CODE(x *= p, y *= p, z *= p, i *= p, j *= p, k *= p, u *= p, v *= p, w *= p); return *this; } - FI XYZval& operator>>=(const int &p) { NUM_AXIS_CODE(_RS(x), _RS(y), _RS(z), _RS(i), _RS(j), _RS(k), _RS(u), _RS(v), _RS(w)); return *this; } - FI XYZval& operator<<=(const int &p) { NUM_AXIS_CODE(_LS(x), _LS(y), _LS(z), _LS(i), _LS(j), _LS(k), _LS(u), _LS(v), _LS(w)); return *this; } + FI XYZval& operator+=(const XYval &rs) { XY_CODE(x += rs.x, y += rs.y); return *this; } + FI XYZval& operator-=(const XYval &rs) { XY_CODE(x -= rs.x, y -= rs.y); return *this; } + FI XYZval& operator*=(const XYval &rs) { XY_CODE(x *= rs.x, y *= rs.y); return *this; } + FI XYZval& operator/=(const XYval &rs) { XY_CODE(x /= rs.x, y /= rs.y); return *this; } + FI XYZval& operator+=(const XYZval &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; } + FI XYZval& operator-=(const XYZval &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; } + FI XYZval& operator*=(const XYZval &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; } + FI XYZval& operator/=(const XYZval &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k, u /= rs.u, v /= rs.v, w /= rs.w); return *this; } + FI XYZval& operator+=(const XYZEval &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; } + FI XYZval& operator-=(const XYZEval &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; } + FI XYZval& operator*=(const XYZEval &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; } + FI XYZval& operator/=(const XYZEval &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k, u /= rs.u, v /= rs.v, w /= rs.w); return *this; } + FI XYZval& operator*=(const float &p) { NUM_AXIS_CODE(x *= p, y *= p, z *= p, i *= p, j *= p, k *= p, u *= p, v *= p, w *= p); return *this; } + FI XYZval& operator*=(const int &p) { NUM_AXIS_CODE(x *= p, y *= p, z *= p, i *= p, j *= p, k *= p, u *= p, v *= p, w *= p); return *this; } + FI XYZval& operator>>=(const int &p) { NUM_AXIS_CODE(_RSE(x), _RSE(y), _RSE(z), _RSE(i), _RSE(j), _RSE(k), _RSE(u), _RSE(v), _RSE(w)); return *this; } + FI XYZval& operator<<=(const int &p) { NUM_AXIS_CODE(_LSE(x), _LSE(y), _LSE(z), _LSE(i), _LSE(j), _LSE(k), _LSE(u), _LSE(v), _LSE(w)); return *this; } // Exact comparisons. For floats a "NEAR" operation may be better. - FI bool operator==(const XYZEval &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k, && u == rs.u, && v == rs.v, && w == rs.w); } - FI bool operator!=(const XYZEval &rs) const { return !operator==(rs); } + FI bool operator==(const XYZEval &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k, && u == rs.u, && v == rs.v, && w == rs.w); } + FI bool operator!=(const XYZEval &rs) const { return !operator==(rs); } }; // // Logical Axes coordinates, counters, etc. +// May have any number of axes according to configuration, including zero axes. +// When there is no extruder, essentially identical to XYZval. // template struct XYZEval { @@ -663,9 +643,9 @@ struct XYZEval { FI void reset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; } // Setters taking struct types and arrays - FI void set(const XYval pxy) { OPTCODE(HAS_X_AXIS, x = pxy.x) OPTCODE(HAS_Y_AXIS, y = pxy.y) } + FI void set(const XYval pxy) { XY_CODE(x = pxy.x, y = pxy.y); } + FI void set(const XYval pxy, const T pz) { XYZ_CODE(x = pxy.x, y = pxy.y, z = pz); } FI void set(const XYZval pxyz) { set(NUM_AXIS_ELEM(pxyz)); } - FI void set(const XYval pxy, const T pz) { set(pxy); TERN_(HAS_Z_AXIS, z = pz); } FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); } #if LOGICAL_AXES > NUM_AXES FI void set(const T (&arr)[LOGICAL_AXES]) { LOGICAL_AXIS_CODE(e = arr[LOGICAL_AXES-1], x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); } @@ -707,32 +687,28 @@ struct XYZEval { #endif // Length reduced to one dimension - FI T magnitude() const { return (T)sqrtf(LOGICAL_AXIS_GANG(+ e*e, + x*x, + y*y, + z*z, + i*i, + j*j, + k*k, + u*u, + v*v, + w*w)); } + FI constexpr T magnitude() const { return (T)sqrtf(LOGICAL_AXIS_GANG(+ e*e, + x*x, + y*y, + z*z, + i*i, + j*j, + k*k, + u*u, + v*v, + w*w)); } // Pointer to the data as a simple array - FI operator T* () { return pos; } + FI operator T* () { return pos; } // If any element is true then it's true - FI operator bool() { return 0 LOGICAL_AXIS_GANG(|| e, || x, || y, || z, || i, || j, || k, || u, || v, || w); } + FI constexpr operator bool() const { return 0 LOGICAL_AXIS_GANG(|| e, || x, || y, || z, || i, || j, || k, || u, || v, || w); } // Smallest element - FI T small() const { return _MIN(LOGICAL_AXIS_LIST(e, x, y, z, i, j, k, u, v, w)); } + FI constexpr T small() const { return _MIN(LOGICAL_AXIS_LIST(e, x, y, z, i, j, k, u, v, w)); } // Largest element - FI T large() const { return _MAX(LOGICAL_AXIS_LIST(e, x, y, z, i, j, k, u, v, w)); } + FI constexpr T large() const { return _MAX(LOGICAL_AXIS_LIST(e, x, y, z, i, j, k, u, v, w)); } // Explicit copy and copies with conversion - FI XYZEval copy() const { XYZEval v = *this; return v; } - FI XYZEval ABS() const { return LOGICAL_AXIS_ARRAY(T(_ABS(e)), T(_ABS(x)), T(_ABS(y)), T(_ABS(z)), T(_ABS(i)), T(_ABS(j)), T(_ABS(k)), T(_ABS(u)), T(_ABS(v)), T(_ABS(w))); } - FI XYZEval asInt() { return LOGICAL_AXIS_ARRAY(int16_t(e), int16_t(x), int16_t(y), int16_t(z), int16_t(i), int16_t(j), int16_t(k), int16_t(u), int16_t(v), int16_t(w)); } - FI XYZEval asInt() const { return LOGICAL_AXIS_ARRAY(int16_t(e), int16_t(x), int16_t(y), int16_t(z), int16_t(i), int16_t(j), int16_t(k), int16_t(u), int16_t(v), int16_t(w)); } - FI XYZEval asLong() { return LOGICAL_AXIS_ARRAY(int32_t(e), int32_t(x), int32_t(y), int32_t(z), int32_t(i), int32_t(j), int32_t(k), int32_t(u), int32_t(v), int32_t(w)); } - FI XYZEval asLong() const { return LOGICAL_AXIS_ARRAY(int32_t(e), int32_t(x), int32_t(y), int32_t(z), int32_t(i), int32_t(j), int32_t(k), int32_t(u), int32_t(v), int32_t(w)); } - FI XYZEval ROUNDL() { return LOGICAL_AXIS_ARRAY(int32_t(LROUND(e)), int32_t(LROUND(x)), int32_t(LROUND(y)), int32_t(LROUND(z)), int32_t(LROUND(i)), int32_t(LROUND(j)), int32_t(LROUND(k)), int32_t(LROUND(u)), int32_t(LROUND(v)), int32_t(LROUND(w))); } - FI XYZEval ROUNDL() const { return LOGICAL_AXIS_ARRAY(int32_t(LROUND(e)), int32_t(LROUND(x)), int32_t(LROUND(y)), int32_t(LROUND(z)), int32_t(LROUND(i)), int32_t(LROUND(j)), int32_t(LROUND(k)), int32_t(LROUND(u)), int32_t(LROUND(v)), int32_t(LROUND(w))); } - FI XYZEval asFloat() { return LOGICAL_AXIS_ARRAY(static_cast(e), static_cast(x), static_cast(y), static_cast(z), static_cast(i), static_cast(j), static_cast(k), static_cast(u), static_cast(v), static_cast(w)); } - FI XYZEval asFloat() const { return LOGICAL_AXIS_ARRAY(static_cast(e), static_cast(x), static_cast(y), static_cast(z), static_cast(i), static_cast(j), static_cast(k), static_cast(u), static_cast(v), static_cast(w)); } - FI XYZEval reciprocal() const { return LOGICAL_AXIS_ARRAY(_RECIP(e), _RECIP(x), _RECIP(y), _RECIP(z), _RECIP(i), _RECIP(j), _RECIP(k), _RECIP(u), _RECIP(v), _RECIP(w)); } + FI constexpr XYZEval copy() const { XYZEval v = *this; return v; } + FI constexpr XYZEval ABS() const { return LOGICAL_AXIS_ARRAY(T(_ABS(e)), T(_ABS(x)), T(_ABS(y)), T(_ABS(z)), T(_ABS(i)), T(_ABS(j)), T(_ABS(k)), T(_ABS(u)), T(_ABS(v)), T(_ABS(w))); } + FI constexpr XYZEval asInt() const { return LOGICAL_AXIS_ARRAY(int16_t(e), int16_t(x), int16_t(y), int16_t(z), int16_t(i), int16_t(j), int16_t(k), int16_t(u), int16_t(v), int16_t(w)); } + FI constexpr XYZEval asLong() const { return LOGICAL_AXIS_ARRAY(int32_t(e), int32_t(x), int32_t(y), int32_t(z), int32_t(i), int32_t(j), int32_t(k), int32_t(u), int32_t(v), int32_t(w)); } + FI constexpr XYZEval ROUNDL() const { return LOGICAL_AXIS_ARRAY(int32_t(LROUND(e)), int32_t(LROUND(x)), int32_t(LROUND(y)), int32_t(LROUND(z)), int32_t(LROUND(i)), int32_t(LROUND(j)), int32_t(LROUND(k)), int32_t(LROUND(u)), int32_t(LROUND(v)), int32_t(LROUND(w))); } + FI constexpr XYZEval asFloat() const { return LOGICAL_AXIS_ARRAY(static_cast(e), static_cast(x), static_cast(y), static_cast(z), static_cast(i), static_cast(j), static_cast(k), static_cast(u), static_cast(v), static_cast(w)); } + FI constexpr XYZEval reciprocal() const { return LOGICAL_AXIS_ARRAY(_RECIP(e), _RECIP(x), _RECIP(y), _RECIP(z), _RECIP(i), _RECIP(j), _RECIP(k), _RECIP(u), _RECIP(v), _RECIP(w)); } // Marlin workspace shifting is done with G92 and M206 - FI XYZEval asLogical() const { XYZEval o = asFloat(); toLogical(o); return o; } - FI XYZEval asNative() const { XYZEval o = asFloat(); toNative(o); return o; } + FI XYZEval asLogical() const { XYZEval o = asFloat(); toLogical(o); return o; } + FI XYZEval asNative() const { XYZEval o = asFloat(); toNative(o); return o; } // In-place cast to types having fewer fields FI operator XYval&() { return *(XYval*)this; } @@ -741,76 +717,57 @@ struct XYZEval { FI operator const XYZval&() const { return *(const XYZval*)this; } // Accessor via an AxisEnum (or any integer) [index] - FI T& operator[](const int n) { return pos[n]; } - FI const T& operator[](const int n) const { return pos[n]; } + FI T& operator[](const int n) { return pos[n]; } + FI const T& operator[](const int n) const { return pos[n]; } // Assignment operator overrides do the expected thing - FI XYZEval& operator= (const T v) { set(LOGICAL_AXIS_LIST_1(v)); return *this; } - FI XYZEval& operator= (const XYval &rs) { set(rs.x, rs.y); return *this; } - FI XYZEval& operator= (const XYZval &rs) { set(NUM_AXIS_ELEM(rs)); return *this; } + FI XYZEval& operator= (const T v) { set(LOGICAL_AXIS_LIST_1(v)); return *this; } + FI XYZEval& operator= (const XYval &rs) { set(rs.x, rs.y); return *this; } + FI XYZEval& operator= (const XYZval &rs) { set(NUM_AXIS_ELEM(rs)); return *this; } // Override other operators to get intuitive behaviors - FI XYZEval operator+ (const XYval &rs) const { XYZEval ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; } - FI XYZEval operator+ (const XYval &rs) { XYZEval ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; } - FI XYZEval operator- (const XYval &rs) const { XYZEval ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; } - FI XYZEval operator- (const XYval &rs) { XYZEval ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; } - FI XYZEval operator* (const XYval &rs) const { XYZEval ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; } - FI XYZEval operator* (const XYval &rs) { XYZEval ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; } - FI XYZEval operator/ (const XYval &rs) const { XYZEval ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; } - FI XYZEval operator/ (const XYval &rs) { XYZEval ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; } - FI XYZEval operator+ (const XYZval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; } - FI XYZEval operator+ (const XYZval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; } - FI XYZEval operator- (const XYZval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; } - FI XYZEval operator- (const XYZval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; } - FI XYZEval operator* (const XYZval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; } - FI XYZEval operator* (const XYZval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; } - FI XYZEval operator/ (const XYZval &rs) const { XYZval ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; } - FI XYZEval operator/ (const XYZval &rs) { XYZval ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; } - FI XYZEval operator+ (const XYZEval &rs) const { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e += rs.e, ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; } - FI XYZEval operator+ (const XYZEval &rs) { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e += rs.e, ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; } - FI XYZEval operator- (const XYZEval &rs) const { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e -= rs.e, ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; } - FI XYZEval operator- (const XYZEval &rs) { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e -= rs.e, ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; } - FI XYZEval operator* (const XYZEval &rs) const { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e *= rs.e, ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; } - FI XYZEval operator* (const XYZEval &rs) { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e *= rs.e, ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k, ls.u *= rs.u, ls.v *= rs.v, ls.w *= rs.w); return ls; } - FI XYZEval operator/ (const XYZEval &rs) const { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e /= rs.e, ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; } - FI XYZEval operator/ (const XYZEval &rs) { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e /= rs.e, ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k, ls.u /= rs.u, ls.v /= rs.v, ls.w /= rs.w); return ls; } - FI XYZEval operator* (const float &p) const { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e *= p, ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; } - FI XYZEval operator* (const float &p) { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e *= p, ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; } - FI XYZEval operator* (const int &p) const { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e *= p, ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; } - FI XYZEval operator* (const int &p) { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e *= p, ls.x *= p, ls.y *= p, ls.z *= p, ls.i *= p, ls.j *= p, ls.k *= p, ls.u *= p, ls.v *= p, ls.w *= p ); return ls; } - FI XYZEval operator/ (const float &p) const { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e /= p, ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; } - FI XYZEval operator/ (const float &p) { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e /= p, ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; } - FI XYZEval operator/ (const int &p) const { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e /= p, ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; } - FI XYZEval operator/ (const int &p) { XYZEval ls = *this; LOGICAL_AXIS_CODE(ls.e /= p, ls.x /= p, ls.y /= p, ls.z /= p, ls.i /= p, ls.j /= p, ls.k /= p, ls.u /= p, ls.v /= p, ls.w /= p ); return ls; } - FI XYZEval operator>>(const int &p) const { XYZEval ls = *this; LOGICAL_AXIS_CODE(_RS(ls.e), _RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k), _RS(ls.u), _RS(ls.v), _RS(ls.w) ); return ls; } - FI XYZEval operator>>(const int &p) { XYZEval ls = *this; LOGICAL_AXIS_CODE(_RS(ls.e), _RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k), _RS(ls.u), _RS(ls.v), _RS(ls.w) ); return ls; } - FI XYZEval operator<<(const int &p) const { XYZEval ls = *this; LOGICAL_AXIS_CODE(_LS(ls.e), _LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k), _LS(ls.u), _LS(ls.v), _LS(ls.w) ); return ls; } - FI XYZEval operator<<(const int &p) { XYZEval ls = *this; LOGICAL_AXIS_CODE(_LS(ls.e), _LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k), _LS(ls.u), _LS(ls.v), _LS(ls.w) ); return ls; } - FI const XYZEval operator-() const { return LOGICAL_AXIS_ARRAY(-e, -x, -y, -z, -i, -j, -k, -u, -v, -w); } - FI XYZEval operator-() { return LOGICAL_AXIS_ARRAY(-e, -x, -y, -z, -i, -j, -k, -u, -v, -w); } + FI constexpr XYZEval operator+ (const XYval &rs) const { return LOGICAL_AXIS_ARRAY(e, x + rs.x, y + rs.y, z, i, j, k, u, v, w); } + FI constexpr XYZEval operator- (const XYval &rs) const { return LOGICAL_AXIS_ARRAY(e, x - rs.x, y - rs.y, z, i, j, k, u, v, w); } + FI constexpr XYZEval operator* (const XYval &rs) const { return LOGICAL_AXIS_ARRAY(e, x * rs.x, y * rs.y, z, i, j, k, u, v, w); } + FI constexpr XYZEval operator/ (const XYval &rs) const { return LOGICAL_AXIS_ARRAY(e, x / rs.x, y / rs.y, z, i, j, k, u, v, w); } + FI constexpr XYZEval operator+ (const XYZval &rs) const { return LOGICAL_AXIS_ARRAY(e, x + rs.x, y + rs.y, z + rs.z, i + rs.i, j + rs.j, k + rs.k, u + rs.u, v + rs.v, w + rs.w); } + FI constexpr XYZEval operator- (const XYZval &rs) const { return LOGICAL_AXIS_ARRAY(e, x - rs.x, y - rs.y, z - rs.z, i - rs.i, j - rs.j, k - rs.k, u - rs.u, v - rs.v, w - rs.w); } + FI constexpr XYZEval operator* (const XYZval &rs) const { return LOGICAL_AXIS_ARRAY(e, x * rs.x, y * rs.y, z * rs.z, i * rs.i, j * rs.j, k * rs.k, u * rs.u, v * rs.v, w * rs.w); } + FI constexpr XYZEval operator/ (const XYZval &rs) const { return LOGICAL_AXIS_ARRAY(e, x / rs.x, y / rs.y, z / rs.z, i / rs.i, j / rs.j, k / rs.k, u / rs.u, v / rs.v, w / rs.w); } + FI constexpr XYZEval operator+ (const XYZEval &rs) const { return LOGICAL_AXIS_ARRAY(e + rs.e, x + rs.x, y + rs.y, z + rs.z, i + rs.i, j + rs.j, k + rs.k, u + rs.u, v + rs.v, w + rs.w); } + FI constexpr XYZEval operator- (const XYZEval &rs) const { return LOGICAL_AXIS_ARRAY(e - rs.e, x - rs.x, y - rs.y, z - rs.z, i - rs.i, j - rs.j, k - rs.k, u - rs.u, v - rs.v, w - rs.w); } + FI constexpr XYZEval operator* (const XYZEval &rs) const { return LOGICAL_AXIS_ARRAY(e * rs.e, x * rs.x, y * rs.y, z * rs.z, i * rs.i, j * rs.j, k * rs.k, u * rs.u, v * rs.v, w * rs.w); } + FI constexpr XYZEval operator/ (const XYZEval &rs) const { return LOGICAL_AXIS_ARRAY(e / rs.e, x / rs.x, y / rs.y, z / rs.z, i / rs.i, j / rs.j, k / rs.k, u / rs.u, v / rs.v, w / rs.w); } + FI constexpr XYZEval operator* (const float &p) const { return LOGICAL_AXIS_ARRAY(e * p, x * p, y * p, z * p, i * p, j * p, k * p, u * p, v * p, w * p); } + FI constexpr XYZEval operator* (const int &p) const { return LOGICAL_AXIS_ARRAY(e * p, x * p, y * p, z * p, i * p, j * p, k * p, u * p, v * p, w * p); } + FI constexpr XYZEval operator/ (const float &p) const { return LOGICAL_AXIS_ARRAY(e / p, x / p, y / p, z / p, i / p, j / p, k / p, u / p, v / p, w / p); } + FI constexpr XYZEval operator/ (const int &p) const { return LOGICAL_AXIS_ARRAY(e / p, x / p, y / p, z / p, i / p, j / p, k / p, u / p, v / p, w / p); } + FI constexpr XYZEval operator>>(const int &p) const { return LOGICAL_AXIS_ARRAY(_RS(e), _RS(x), _RS(y), _RS(z), _RS(i), _RS(j), _RS(k), _RS(u), _RS(v), _RS(w)); } + FI constexpr XYZEval operator<<(const int &p) const { return LOGICAL_AXIS_ARRAY(_LS(e), _LS(x), _LS(y), _LS(z), _LS(i), _LS(j), _LS(k), _LS(u), _LS(v), _LS(w)); } + FI constexpr XYZEval operator-() const { return LOGICAL_AXIS_ARRAY(-e, -x, -y, -z, -i, -j, -k, -u, -v, -w); } // Modifier operators - FI XYZEval& operator+=(const XYval &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; } - FI XYZEval& operator-=(const XYval &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; } - FI XYZEval& operator*=(const XYval &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; } - FI XYZEval& operator/=(const XYval &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; } - FI XYZEval& operator+=(const XYZval &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; } - FI XYZEval& operator-=(const XYZval &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; } - FI XYZEval& operator*=(const XYZval &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; } - FI XYZEval& operator/=(const XYZval &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k, u /= rs.u, v /= rs.v, w /= rs.w); return *this; } - FI XYZEval& operator+=(const XYZEval &rs) { LOGICAL_AXIS_CODE(e += rs.e, x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; } - FI XYZEval& operator-=(const XYZEval &rs) { LOGICAL_AXIS_CODE(e -= rs.e, x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; } - FI XYZEval& operator*=(const XYZEval &rs) { LOGICAL_AXIS_CODE(e *= rs.e, x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; } - FI XYZEval& operator/=(const XYZEval &rs) { LOGICAL_AXIS_CODE(e /= rs.e, x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k, u /= rs.u, v /= rs.v, w /= rs.w); return *this; } - FI XYZEval& operator*=(const T &p) { LOGICAL_AXIS_CODE(e *= p, x *= p, y *= p, z *= p, i *= p, j *= p, k *= p, u *= p, v *= p, w *= p); return *this; } - FI XYZEval& operator>>=(const int &p) { LOGICAL_AXIS_CODE(_RS(e), _RS(x), _RS(y), _RS(z), _RS(i), _RS(j), _RS(k), _RS(u), _RS(v), _RS(w)); return *this; } - FI XYZEval& operator<<=(const int &p) { LOGICAL_AXIS_CODE(_LS(e), _LS(x), _LS(y), _LS(z), _LS(i), _LS(j), _LS(k), _LS(u), _LS(v), _LS(w)); return *this; } + FI XYZEval& operator+=(const XYval &rs) { XY_CODE(x += rs.x, y += rs.y); return *this; } + FI XYZEval& operator-=(const XYval &rs) { XY_CODE(x -= rs.x, y -= rs.y); return *this; } + FI XYZEval& operator*=(const XYval &rs) { XY_CODE(x *= rs.x, y *= rs.y); return *this; } + FI XYZEval& operator/=(const XYval &rs) { XY_CODE(x /= rs.x, y /= rs.y); return *this; } + FI XYZEval& operator+=(const XYZval &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; } + FI XYZEval& operator-=(const XYZval &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; } + FI XYZEval& operator*=(const XYZval &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; } + FI XYZEval& operator/=(const XYZval &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k, u /= rs.u, v /= rs.v, w /= rs.w); return *this; } + FI XYZEval& operator+=(const XYZEval &rs) { LOGICAL_AXIS_CODE(e += rs.e, x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; } + FI XYZEval& operator-=(const XYZEval &rs) { LOGICAL_AXIS_CODE(e -= rs.e, x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; } + FI XYZEval& operator*=(const XYZEval &rs) { LOGICAL_AXIS_CODE(e *= rs.e, x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; } + FI XYZEval& operator/=(const XYZEval &rs) { LOGICAL_AXIS_CODE(e /= rs.e, x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k, u /= rs.u, v /= rs.v, w /= rs.w); return *this; } + FI XYZEval& operator*=(const T &p) { LOGICAL_AXIS_CODE(e *= p, x *= p, y *= p, z *= p, i *= p, j *= p, k *= p, u *= p, v *= p, w *= p); return *this; } + FI XYZEval& operator>>=(const int &p) { LOGICAL_AXIS_CODE(_RSE(e), _RSE(x), _RSE(y), _RSE(z), _RSE(i), _RSE(j), _RSE(k), _RSE(u), _RSE(v), _RSE(w)); return *this; } + FI XYZEval& operator<<=(const int &p) { LOGICAL_AXIS_CODE(_LSE(e), _LSE(x), _LSE(y), _LSE(z), _LSE(i), _LSE(j), _LSE(k), _LSE(u), _LSE(v), _LSE(w)); return *this; } // Exact comparisons. For floats a "NEAR" operation may be better. - FI bool operator==(const XYZval &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k, && u == rs.u, && v == rs.v, && w == rs.w); } - FI bool operator==(const XYZEval &rs) const { return true LOGICAL_AXIS_GANG(&& e == rs.e, && x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k, && u == rs.u, && v == rs.v, && w == rs.w); } - FI bool operator!=(const XYZval &rs) const { return !operator==(rs); } - FI bool operator!=(const XYZEval &rs) const { return !operator==(rs); } + FI bool operator==(const XYZval &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k, && u == rs.u, && v == rs.v, && w == rs.w); } + FI bool operator==(const XYZEval &rs) const { return true LOGICAL_AXIS_GANG(&& e == rs.e, && x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k, && u == rs.u, && v == rs.v, && w == rs.w); } + FI bool operator!=(const XYZval &rs) const { return !operator==(rs); } + FI bool operator!=(const XYZEval &rs) const { return !operator==(rs); } }; #include // for memset @@ -1001,4 +958,6 @@ public: #undef _ABS #undef _LS #undef _RS +#undef _LSE +#undef _RSE #undef FI From 06aed792c08ee2e105b034601a4ea773d0869dfd Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Sat, 13 May 2023 23:23:23 +0200 Subject: [PATCH 422/659] =?UTF-8?q?=F0=9F=A9=B9=20MMU2=20unload=20followup?= =?UTF-8?q?=20(#25825)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #20147 --- Marlin/src/lcd/menu/menu_mmu2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/lcd/menu/menu_mmu2.cpp b/Marlin/src/lcd/menu/menu_mmu2.cpp index a6ce147024..ca3627ce10 100644 --- a/Marlin/src/lcd/menu/menu_mmu2.cpp +++ b/Marlin/src/lcd/menu/menu_mmu2.cpp @@ -47,7 +47,7 @@ void _mmu2_load_to_feeder(const uint8_t index) { } void action_mmu2_load_all() { - EXTRUDER_LOOP() _mmu2_load_filament(e); + EXTRUDER_LOOP() _mmu2_load_to_feeder(e); ui.return_to_status(); } From d5fdbb89ea55a19815c6997d47f1268a96d2cac9 Mon Sep 17 00:00:00 2001 From: "Alexey D. Filimonov" Date: Sun, 14 May 2023 00:25:36 +0300 Subject: [PATCH 423/659] =?UTF-8?q?=F0=9F=9A=B8=20TFT=20optional=20axes/ex?= =?UTF-8?q?truder=20(#25624)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/lcd/tft/touch.cpp | 22 +- Marlin/src/lcd/tft/ui_1024x600.cpp | 336 +++++++++++++--------- Marlin/src/lcd/tft/ui_320x240.cpp | 439 ++++++++++++++++------------- Marlin/src/lcd/tft/ui_480x320.cpp | 352 +++++++++++++---------- 4 files changed, 662 insertions(+), 487 deletions(-) diff --git a/Marlin/src/lcd/tft/touch.cpp b/Marlin/src/lcd/tft/touch.cpp index 17784ff527..1765ae0a8e 100644 --- a/Marlin/src/lcd/tft/touch.cpp +++ b/Marlin/src/lcd/tft/touch.cpp @@ -222,15 +222,19 @@ void Touch::touch(touch_control_t *control) { ui.clear_lcd(); MenuItem_int3::action(GET_TEXT_F(MSG_SPEED), &feedrate_percentage, 10, 999); break; - case FLOWRATE: - ui.clear_lcd(); - MenuItemBase::itemIndex = control->data; - #if EXTRUDERS == 1 - MenuItem_int3::action(GET_TEXT_F(MSG_FLOW), &planner.flow_percentage[MenuItemBase::itemIndex], 10, 999, []{ planner.refresh_e_factor(MenuItemBase::itemIndex); }); - #else - MenuItem_int3::action(GET_TEXT_F(MSG_FLOW_N), &planner.flow_percentage[MenuItemBase::itemIndex], 10, 999, []{ planner.refresh_e_factor(MenuItemBase::itemIndex); }); - #endif - break; + + #if HAS_EXTRUDERS + case FLOWRATE: + ui.clear_lcd(); + MenuItemBase::itemIndex = control->data; + #if EXTRUDERS == 1 + MenuItem_int3::action(GET_TEXT_F(MSG_FLOW), &planner.flow_percentage[MenuItemBase::itemIndex], 10, 999, []{ planner.refresh_e_factor(MenuItemBase::itemIndex); }); + #else + MenuItem_int3::action(GET_TEXT_F(MSG_FLOW_N), &planner.flow_percentage[MenuItemBase::itemIndex], 10, 999, []{ planner.refresh_e_factor(MenuItemBase::itemIndex); }); + #endif + break; + #endif + case STOP: ui.goto_screen([]{ MenuItem_confirm::select_screen(GET_TEXT_F(MSG_BUTTON_STOP), diff --git a/Marlin/src/lcd/tft/ui_1024x600.cpp b/Marlin/src/lcd/tft/ui_1024x600.cpp index cf5911cdc1..460f3a345b 100644 --- a/Marlin/src/lcd/tft/ui_1024x600.cpp +++ b/Marlin/src/lcd/tft/ui_1024x600.cpp @@ -124,8 +124,12 @@ void draw_heater_status(uint16_t x, uint16_t y, const int8_t Heater) { celsius_t currentTemperature, targetTemperature; if (Heater >= 0) { // HotEnd - currentTemperature = thermalManager.wholeDegHotend(Heater); - targetTemperature = thermalManager.degTargetHotend(Heater); + #if HAS_EXTRUDERS + currentTemperature = thermalManager.wholeDegHotend(Heater); + targetTemperature = thermalManager.degTargetHotend(Heater); + #else + return; + #endif } #if HAS_HEATED_BED else if (Heater == H_BED) { @@ -270,37 +274,45 @@ void MarlinUI::draw_status_screen() { #endif } else { - tft.add_text(200, 3, COLOR_AXIS_HOMED , "X"); - const bool nhx = axis_should_home(X_AXIS); - if (blink && nhx) - tft_string.set('?'); - else - tft_string.set(ftostr4sign(LOGICAL_X_POSITION(current_position.x))); - tft.add_text(300 - tft_string.width(), 3, nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + #if HAS_X_AXIS + tft.add_text(200, 3, COLOR_AXIS_HOMED , "X"); + const bool nhx = axis_should_home(X_AXIS); + if (blink && nhx) + tft_string.set('?'); + else + tft_string.set(ftostr4sign(LOGICAL_X_POSITION(current_position.x))); + tft.add_text(300 - tft_string.width(), 3, nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + #endif - tft.add_text(500, 3, COLOR_AXIS_HOMED , "Y"); - const bool nhy = axis_should_home(Y_AXIS); - if (blink && nhy) - tft_string.set('?'); - else - tft_string.set(ftostr4sign(LOGICAL_Y_POSITION(current_position.y))); - tft.add_text(600 - tft_string.width(), 3, nhy ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + #if HAS_Y_AXIS + tft.add_text(500, 3, COLOR_AXIS_HOMED , "Y"); + const bool nhy = axis_should_home(Y_AXIS); + if (blink && nhy) + tft_string.set('?'); + else + tft_string.set(ftostr4sign(LOGICAL_Y_POSITION(current_position.y))); + tft.add_text(600 - tft_string.width(), 3, nhy ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + #endif } - tft.add_text(800, 3, COLOR_AXIS_HOMED , "Z"); - uint16_t offset = 32; - const bool nhz = axis_should_home(Z_AXIS); - if (blink && nhz) - tft_string.set('?'); - else { - const float z = LOGICAL_Z_POSITION(current_position.z); - tft_string.set(ftostr52sp((int16_t)z)); - tft_string.rtrim(); - offset += tft_string.width(); - tft_string.set(ftostr52sp(z)); - offset -= tft_string.width(); - } - tft.add_text(900 - tft_string.width() - offset, 3, nhz ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + #if HAS_Z_AXIS + tft.add_text(800, 3, COLOR_AXIS_HOMED , "Z"); + uint16_t offset = 32; + const bool nhz = axis_should_home(Z_AXIS); + if (blink && nhz) + tft_string.set('?'); + else { + const float z = LOGICAL_Z_POSITION(current_position.z); + tft_string.set(ftostr52sp((int16_t)z)); + tft_string.rtrim(); + offset += tft_string.width(); + + tft_string.set(ftostr52sp(z)); + offset -= tft_string.width(); + } + tft.add_text(900 - tft_string.width() - offset, 3, nhz ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + #endif // HAS_Z_AXIS + TERN_(TOUCH_SCREEN, touch.add_control(MOVE_AXIS, 4, y, TFT_WIDTH - 8, FONT_LINE_HEIGHT)); y += 100; @@ -314,15 +326,17 @@ void MarlinUI::draw_status_screen() { tft.add_text(36, 1, color , tft_string); TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, 274, y, 128, 32)); - // flow rate - tft.canvas(650, y, 128, 32); - tft.set_background(COLOR_BACKGROUND); - color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; - tft.add_image(0, 0, imgFlowRate, color); - tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); - tft_string.add('%'); - tft.add_text(36, 1, color , tft_string); - TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, 650, y, 128, 32, active_extruder)); + // Flow rate + #if HAS_EXTRUDERS + tft.canvas(650, y, 128, 32); + tft.set_background(COLOR_BACKGROUND); + color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; + tft.add_image(0, 0, imgFlowRate, color); + tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); + tft_string.add('%'); + tft.add_text(36, 1, color , tft_string); + TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, 650, y, 128, 32, active_extruder)); + #endif #if ENABLED(TOUCH_SCREEN) add_control(900, y, menu_main, imgSettings); @@ -584,16 +598,26 @@ void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, con #define Z_SELECTION_Z 1 #define Z_SELECTION_Z_PROBE -1 -struct MotionAxisState { - xy_int_t xValuePos, yValuePos, zValuePos, eValuePos, stepValuePos, zTypePos, eNamePos; +struct { + #if HAS_X_AXIS + xy_int_t xValuePos; + #endif + #if HAS_Y_AXIS + xy_int_t yValuePos; + #endif + #if HAS_Z_AXIS + xy_int_t zValuePos, zTypePos; + int z_selection = Z_SELECTION_Z; + #endif + #if HAS_EXTRUDERS + xy_int_t eValuePos, eNamePos; + uint8_t e_selection = 0; + #endif + xy_int_t stepValuePos; float currentStepSize = 10.0; - int z_selection = Z_SELECTION_Z; - uint8_t e_selection = 0; bool blocked = false; char message[32]; -}; - -MotionAxisState motionAxisState; +} motionAxisState; #define BTN_WIDTH 64 #define BTN_HEIGHT 52 @@ -620,27 +644,30 @@ static void drawCurStepValue() { tft.add_text(tft_string.center(CUR_STEP_VALUE_WIDTH), 0, COLOR_AXIS_HOMED, tft_string); } -static void drawCurZSelection() { - tft_string.set('Z'); - tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), 34); - tft.set_background(COLOR_BACKGROUND); - tft.add_text(0, 0, Z_BTN_COLOR, tft_string); - tft.queue.sync(); - tft_string.set(F("Offset")); - tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + 34, tft_string.width(), 34); - tft.set_background(COLOR_BACKGROUND); - if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { +#if HAS_Z_AXIS + static void drawCurZSelection() { + tft_string.set('Z'); + tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), 34); + tft.set_background(COLOR_BACKGROUND); tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + tft.queue.sync(); + tft_string.set(F("Offset")); + tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + 34, tft_string.width(), 34); + tft.set_background(COLOR_BACKGROUND); + if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) + tft.add_text(0, 0, Z_BTN_COLOR, tft_string); } -} +#endif -static void drawCurESelection() { - tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set('E'); - tft.add_text(0, 0, E_BTN_COLOR , tft_string); - tft.add_text(tft_string.width(), 0, E_BTN_COLOR, ui8tostr3rj(motionAxisState.e_selection)); -} +#if HAS_EXTRUDERS + static void drawCurESelection() { + tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft_string.set('E'); + tft.add_text(0, 0, E_BTN_COLOR , tft_string); + tft.add_text(tft_string.width(), 0, E_BTN_COLOR, ui8tostr3rj(motionAxisState.e_selection)); + } +#endif static void drawMessage(PGM_P const msg) { tft.canvas(X_MARGIN, TFT_HEIGHT - Y_MARGIN - 34, TFT_HEIGHT / 2, 34); @@ -658,10 +685,18 @@ static void drawAxisValue(const AxisEnum axis) { xy_int_t pos; uint16_t color; switch (axis) { - case X_AXIS: pos = motionAxisState.xValuePos; color = X_BTN_COLOR; break; - case Y_AXIS: pos = motionAxisState.yValuePos; color = Y_BTN_COLOR; break; - case Z_AXIS: pos = motionAxisState.zValuePos; color = Z_BTN_COLOR; break; - case E_AXIS: pos = motionAxisState.eValuePos; color = E_BTN_COLOR; break; + #if HAS_X_AXIS + case X_AXIS: pos = motionAxisState.xValuePos; color = X_BTN_COLOR; break; + #endif + #if HAS_Y_AXIS + case Y_AXIS: pos = motionAxisState.yValuePos; color = Y_BTN_COLOR; break; + #endif + #if HAS_Z_AXIS + case Z_AXIS: pos = motionAxisState.zValuePos; color = Z_BTN_COLOR; break; + #endif + #if HAS_EXTRUDERS + case E_AXIS: pos = motionAxisState.eValuePos; color = E_BTN_COLOR; break; + #endif default: return; } tft.canvas(pos.x, pos.y, BTN_WIDTH + X_MARGIN, BTN_HEIGHT); @@ -673,53 +708,57 @@ static void drawAxisValue(const AxisEnum axis) { static void moveAxis(const AxisEnum axis, const int8_t direction) { quick_feedback(); - if (axis == E_AXIS && thermalManager.tooColdToExtrude(motionAxisState.e_selection)) { - drawMessage(F("Too cold")); - return; - } + #if HAS_EXTRUDERS + if (axis == E_AXIS && thermalManager.tooColdToExtrude(motionAxisState.e_selection)) { + drawMessage(F("Too cold")); + return; + } + #endif const float diff = motionAxisState.currentStepSize * direction; - if (axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { - #if ENABLED(BABYSTEP_ZPROBE_OFFSET) - const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z; - const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0; - const float bsDiff = planner.mm_per_step[Z_AXIS] * babystep_increment, - new_probe_offset = probe.offset.z + bsDiff, - new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET - , do_probe ? new_probe_offset : hotend_offset[active_extruder].z - bsDiff - , new_probe_offset - ); - if (WITHIN(new_offs, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { - babystep.add_steps(Z_AXIS, babystep_increment); - if (do_probe) - probe.offset.z = new_offs; + #if HAS_Z_AXIS + if (axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { + #if ENABLED(BABYSTEP_ZPROBE_OFFSET) + const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z; + const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0; + const float bsDiff = planner.mm_per_step[Z_AXIS] * babystep_increment, + new_probe_offset = probe.offset.z + bsDiff, + new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET + , do_probe ? new_probe_offset : hotend_offset[active_extruder].z - bsDiff + , new_probe_offset + ); + if (WITHIN(new_offs, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { + babystep.add_steps(Z_AXIS, babystep_increment); + if (do_probe) + probe.offset.z = new_offs; + else + TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); + drawMessage(F("")); // clear the error + drawAxisValue(axis); + } else - TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); - drawMessage(F("")); // clear the error + drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); + + #elif HAS_BED_PROBE + // only change probe.offset.z + probe.offset.z += diff; + if (direction < 0 && current_position[axis] < Z_PROBE_OFFSET_RANGE_MIN) { + current_position[axis] = Z_PROBE_OFFSET_RANGE_MIN; + drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); + } + else if (direction > 0 && current_position[axis] > Z_PROBE_OFFSET_RANGE_MAX) { + current_position[axis] = Z_PROBE_OFFSET_RANGE_MAX; + drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); + } + else + drawMessage(F("")); // clear the error + drawAxisValue(axis); - } - else - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - - #elif HAS_BED_PROBE - // only change probe.offset.z - probe.offset.z += diff; - if (direction < 0 && current_position[axis] < Z_PROBE_OFFSET_RANGE_MIN) { - current_position[axis] = Z_PROBE_OFFSET_RANGE_MIN; - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - else if (direction > 0 && current_position[axis] > Z_PROBE_OFFSET_RANGE_MAX) { - current_position[axis] = Z_PROBE_OFFSET_RANGE_MAX; - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - else - drawMessage(F("")); // clear the error - - drawAxisValue(axis); - #endif - return; - } + #endif + return; + } + #endif // HAS_Z_AXIS if (!ui.manual_move.processing) { // Get motion limit from software endstops, if any @@ -729,7 +768,7 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { // Delta limits XY based on the current offset from center // This assumes the center is 0,0 #if ENABLED(DELTA) - if (axis != Z_AXIS && axis != E_AXIS) { + if (axis != Z_AXIS && TERN1(HAS_EXTRUDERS, axis != E_AXIS)) { max = SQRT(sq(float(PRINTABLE_RADIUS)) - sq(current_position[Y_AXIS - axis])); // (Y_AXIS - axis) == the other axis min = -max; } @@ -750,35 +789,44 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { drawAxisValue(axis); } -static void e_plus() { moveAxis(E_AXIS, 1); } -static void e_minus() { moveAxis(E_AXIS, -1); } -static void x_minus() { moveAxis(X_AXIS, -1); } -static void x_plus() { moveAxis(X_AXIS, 1); } -static void y_plus() { moveAxis(Y_AXIS, 1); } -static void y_minus() { moveAxis(Y_AXIS, -1); } -static void z_plus() { moveAxis(Z_AXIS, 1); } -static void z_minus() { moveAxis(Z_AXIS, -1); } +#if HAS_EXTRUDERS + static void e_plus() { moveAxis(E_AXIS, 1); } + static void e_minus() { moveAxis(E_AXIS, -1); } +#endif +#if HAS_X_AXIS + static void x_minus() { moveAxis(X_AXIS, -1); } + static void x_plus() { moveAxis(X_AXIS, 1); } +#endif +#if HAS_Y_AXIS + static void y_plus() { moveAxis(Y_AXIS, 1); } + static void y_minus() { moveAxis(Y_AXIS, -1); } +#endif +#if HAS_Z_AXIS + static void z_plus() { moveAxis(Z_AXIS, 1); } + static void z_minus() { moveAxis(Z_AXIS, -1); } +#endif #if ENABLED(TOUCH_SCREEN) - static void e_select() { - if (++motionAxisState.e_selection >= EXTRUDERS) - motionAxisState.e_selection = 0; - - quick_feedback(); - drawCurESelection(); - drawAxisValue(E_AXIS); - } + #if HAS_EXTRUDERS + static void e_select() { + if (++motionAxisState.e_selection >= EXTRUDERS) + motionAxisState.e_selection = 0; + quick_feedback(); + drawCurESelection(); + drawAxisValue(E_AXIS); + } + #endif static void do_home() { quick_feedback(); drawMessage(GET_TEXT_F(MSG_LEVEL_BED_HOMING)); queue.inject_P(G28_STR); // Disable touch until home is done - TERN_(TOUCH_SCREEN, touch.disable()); - drawAxisValue(E_AXIS); - drawAxisValue(X_AXIS); - drawAxisValue(Y_AXIS); - drawAxisValue(Z_AXIS); + touch.disable(); + TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); + TERN_(HAS_X_AXIS, drawAxisValue(X_AXIS)); + TERN_(HAS_Y_AXIS, drawAxisValue(Y_AXIS)); + TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); } static void step_size() { @@ -845,7 +893,7 @@ void MarlinUI::move_axis_screen() { // ROW 1 -> E- Y- CurY Z+ int x = X_MARGIN, y = Y_MARGIN, spacing = 0; - drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy); + TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy)); spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; x += BTN_WIDTH + spacing; @@ -858,7 +906,9 @@ void MarlinUI::move_axis_screen() { drawAxisValue(Y_AXIS); x += spacing; - drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #if HAS_Z_AXIS + drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #endif // ROW 2 -> "Ex" X- HOME X+ "Z" y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; @@ -867,8 +917,10 @@ void MarlinUI::move_axis_screen() { motionAxisState.eNamePos.x = x; motionAxisState.eNamePos.y = y; - drawCurESelection(); - TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); + #if HAS_EXTRUDERS + drawCurESelection(); + TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); + #endif x += BTN_WIDTH + spacing; drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy); @@ -883,7 +935,7 @@ void MarlinUI::move_axis_screen() { x += BTN_WIDTH + spacing; motionAxisState.zTypePos.x = x; motionAxisState.zTypePos.y = y; - drawCurZSelection(); + TERN_(HAS_Z_AXIS, drawCurZSelection()); #if BOTH(HAS_BED_PROBE, TOUCH_SCREEN) if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); #endif @@ -893,12 +945,12 @@ void MarlinUI::move_axis_screen() { x = X_MARGIN; spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; - drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); + TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy)); // Cur E motionAxisState.eValuePos.x = x; motionAxisState.eValuePos.y = y + BTN_HEIGHT + 2; - drawAxisValue(E_AXIS); + TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); // Cur X motionAxisState.xValuePos.x = BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; //X- pos @@ -909,12 +961,14 @@ void MarlinUI::move_axis_screen() { drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy); x += BTN_WIDTH + spacing; - drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #if HAS_Z_AXIS + drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #endif // Cur Z motionAxisState.zValuePos.x = x; motionAxisState.zValuePos.y = y + BTN_HEIGHT + 2; - drawAxisValue(Z_AXIS); + TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); // ROW 4 -> step_size disable steppers back y = TFT_HEIGHT - Y_MARGIN - 32; // diff --git a/Marlin/src/lcd/tft/ui_320x240.cpp b/Marlin/src/lcd/tft/ui_320x240.cpp index bac7586a25..c2918711f4 100644 --- a/Marlin/src/lcd/tft/ui_320x240.cpp +++ b/Marlin/src/lcd/tft/ui_320x240.cpp @@ -126,8 +126,12 @@ void draw_heater_status(uint16_t x, uint16_t y, const int8_t Heater) { celsius_t currentTemperature, targetTemperature; if (Heater >= 0) { // HotEnd - currentTemperature = thermalManager.wholeDegHotend(Heater); - targetTemperature = thermalManager.degTargetHotend(Heater); + #if HAS_EXTRUDERS + currentTemperature = thermalManager.wholeDegHotend(Heater); + targetTemperature = thermalManager.degTargetHotend(Heater); + #else + return; + #endif } #if HAS_HEATED_BED else if (Heater == H_BED) { @@ -283,52 +287,59 @@ void MarlinUI::draw_status_screen() { #endif } else { - tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 32, 10), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED , "X"); - const bool nhx = axis_should_home(X_AXIS); - tft_string.set(blink && nhx ? "?" : ftostr4sign(LOGICAL_X_POSITION(current_position.x))); - tft.add_text( - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 32 - tft_string.width() / 2, FONT_LINE_HEIGHT + tft_string.vcenter(FONT_LINE_HEIGHT), - #else - 68 - tft_string.width(), tft_string.vcenter(FONT_LINE_HEIGHT), - #endif - nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string - ); - - tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 110, 127), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED , "Y"); - const bool nhy = axis_should_home(Y_AXIS); - tft_string.set(blink && nhy ? "?" : ftostr4sign(LOGICAL_Y_POSITION(current_position.y))); - tft.add_text( - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 110 - tft_string.width() / 2, FONT_LINE_HEIGHT + tft_string.vcenter(FONT_LINE_HEIGHT), - #else - 185 - tft_string.width(), tft_string.vcenter(FONT_LINE_HEIGHT), - #endif - nhy ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string - ); - } - - tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 192, 219), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED , "Z"); - const bool nhz = axis_should_home(Z_AXIS); - uint16_t offset = 25; - if (blink && nhz) - tft_string.set('?'); - else { - const float z = LOGICAL_Z_POSITION(current_position.z); - tft_string.set(ftostr52sp((int16_t)z)); - tft_string.rtrim(); - offset += tft_string.width(); - - tft_string.set(ftostr52sp(z)); - offset -= tft_string.width(); - } - tft.add_text( - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 192 - tft_string.width() / 2, FONT_LINE_HEIGHT + tft_string.vcenter(FONT_LINE_HEIGHT), - #else - 301 - tft_string.width() - offset, tft_string.vcenter(FONT_LINE_HEIGHT), + #if HAS_X_AXIS + tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 32, 10), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED , "X"); + const bool nhx = axis_should_home(X_AXIS); + tft_string.set(blink && nhx ? "?" : ftostr4sign(LOGICAL_X_POSITION(current_position.x))); + tft.add_text( + #if ENABLED(TFT_COLOR_UI_PORTRAIT) + 32 - tft_string.width() / 2, FONT_LINE_HEIGHT + tft_string.vcenter(FONT_LINE_HEIGHT), + #else + 68 - tft_string.width(), tft_string.vcenter(FONT_LINE_HEIGHT), + #endif + nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string + ); #endif - nhz ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + + #if HAS_Y_AXIS + tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 110, 127), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED , "Y"); + const bool nhy = axis_should_home(Y_AXIS); + tft_string.set(blink && nhy ? "?" : ftostr4sign(LOGICAL_Y_POSITION(current_position.y))); + tft.add_text( + #if ENABLED(TFT_COLOR_UI_PORTRAIT) + 110 - tft_string.width() / 2, FONT_LINE_HEIGHT + tft_string.vcenter(FONT_LINE_HEIGHT), + #else + 185 - tft_string.width(), tft_string.vcenter(FONT_LINE_HEIGHT), + #endif + nhy ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string + ); + #endif + } + + #if HAS_Z_AXIS + tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 192, 219), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED , "Z"); + const bool nhz = axis_should_home(Z_AXIS); + uint16_t offset = 25; + if (blink && nhz) + tft_string.set('?'); + else { + const float z = LOGICAL_Z_POSITION(current_position.z); + tft_string.set(ftostr52sp((int16_t)z)); + tft_string.rtrim(); + offset += tft_string.width(); + + tft_string.set(ftostr52sp(z)); + offset -= tft_string.width(); + } + tft.add_text( + #if ENABLED(TFT_COLOR_UI_PORTRAIT) + 192 - tft_string.width() / 2, FONT_LINE_HEIGHT + tft_string.vcenter(FONT_LINE_HEIGHT), + #else + 301 - tft_string.width() - offset, tft_string.vcenter(FONT_LINE_HEIGHT), + #endif + nhz ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + #endif + TERN_(TOUCH_SCREEN, touch.add_control(MOVE_AXIS, 0, 103, #if ENABLED(TFT_COLOR_UI_PORTRAIT) 232, FONT_LINE_HEIGHT * 2 @@ -361,29 +372,31 @@ void MarlinUI::draw_status_screen() { , 32 )); - // flow rate - tft.canvas( - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 140, 172, 80 - #else - 170, 136, 84 - #endif - , 32 - ); - tft.set_background(COLOR_BACKGROUND); - color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; - tft.add_image(0, 0, imgFlowRate, color); - tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); - tft_string.add('%'); - tft.add_text(32, tft_string.vcenter(30), color , tft_string); - TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 140, 172, 80 - #else - 170, 136, 84 - #endif - , 32, active_extruder - )); + // Flow rate + #if HAS_EXTRUDERS + tft.canvas( + #if ENABLED(TFT_COLOR_UI_PORTRAIT) + 140, 172, 80 + #else + 170, 136, 84 + #endif + , 32 + ); + tft.set_background(COLOR_BACKGROUND); + color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; + tft.add_image(0, 0, imgFlowRate, color); + tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); + tft_string.add('%'); + tft.add_text(32, tft_string.vcenter(30), color , tft_string); + TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, + #if ENABLED(TFT_COLOR_UI_PORTRAIT) + 140, 172, 80 + #else + 170, 136, 84 + #endif + , 32, active_extruder + )); + #endif // HAS_EXTRUDERS // print duration char buffer[14]; @@ -666,16 +679,26 @@ void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, con #define Z_SELECTION_Z 1 #define Z_SELECTION_Z_PROBE -1 -struct MotionAxisState { - xy_int_t xValuePos, yValuePos, zValuePos, eValuePos, stepValuePos, zTypePos, eNamePos; +struct { + #if HAS_X_AXIS + xy_int_t xValuePos; + #endif + #if HAS_Y_AXIS + xy_int_t yValuePos; + #endif + #if HAS_Z_AXIS + xy_int_t zValuePos, zTypePos; + int z_selection = Z_SELECTION_Z; + #endif + #if HAS_EXTRUDERS + xy_int_t eValuePos, eNamePos; + uint8_t e_selection = 0; + #endif + xy_int_t stepValuePos; float currentStepSize = 10.0; - int z_selection = Z_SELECTION_Z; - uint8_t e_selection = 0; bool blocked = false; char message[32]; -}; - -MotionAxisState motionAxisState; +} motionAxisState; #define BTN_WIDTH 48 #define BTN_HEIGHT 39 @@ -706,27 +729,30 @@ static void drawCurStepValue() { tft.add_text(CUR_STEP_VALUE_WIDTH - tft_string.width(), 0, COLOR_AXIS_HOMED, tft_string); } -static void drawCurZSelection() { - tft_string.set('Z'); - tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), 20); - tft.set_background(COLOR_BACKGROUND); - tft.add_text(0, 0, Z_BTN_COLOR, tft_string); - tft.queue.sync(); - tft_string.set(F("Offset")); - tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + 34, tft_string.width(), 20); - tft.set_background(COLOR_BACKGROUND); - if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { +#if HAS_Z_AXIS + static void drawCurZSelection() { + tft_string.set('Z'); + tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), 20); + tft.set_background(COLOR_BACKGROUND); tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + tft.queue.sync(); + tft_string.set(F("Offset")); + tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + 34, tft_string.width(), 20); + tft.set_background(COLOR_BACKGROUND); + if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) + tft.add_text(0, 0, Z_BTN_COLOR, tft_string); } -} +#endif -static void drawCurESelection() { - tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set('E'); - tft.add_text(0, 0, E_BTN_COLOR , tft_string); - tft.add_text(tft_string.width(), 0, E_BTN_COLOR, ui8tostr3rj(motionAxisState.e_selection)); -} +#if HAS_EXTRUDERS + static void drawCurESelection() { + tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft_string.set('E'); + tft.add_text(0, 0, E_BTN_COLOR , tft_string); + tft.add_text(tft_string.width(), 0, E_BTN_COLOR, ui8tostr3rj(motionAxisState.e_selection)); + } +#endif static void drawMessage(PGM_P const msg) { tft.canvas(X_MARGIN, @@ -751,10 +777,18 @@ static void drawAxisValue(const AxisEnum axis) { xy_int_t pos; uint16_t color; switch (axis) { - case X_AXIS: pos = motionAxisState.xValuePos; color = X_BTN_COLOR; break; - case Y_AXIS: pos = motionAxisState.yValuePos; color = Y_BTN_COLOR; break; - case Z_AXIS: pos = motionAxisState.zValuePos; color = Z_BTN_COLOR; break; - case E_AXIS: pos = motionAxisState.eValuePos; color = E_BTN_COLOR; break; + #if HAS_X_AXIS + case X_AXIS: pos = motionAxisState.xValuePos; color = X_BTN_COLOR; break; + #endif + #if HAS_Y_AXIS + case Y_AXIS: pos = motionAxisState.yValuePos; color = Y_BTN_COLOR; break; + #endif + #if HAS_Z_AXIS + case Z_AXIS: pos = motionAxisState.zValuePos; color = Z_BTN_COLOR; break; + #endif + #if HAS_EXTRUDERS + case E_AXIS: pos = motionAxisState.eValuePos; color = E_BTN_COLOR; break; + #endif default: return; } tft.canvas(pos.x, pos.y, BTN_WIDTH + X_MARGIN, FONT_LINE_HEIGHT); @@ -766,53 +800,57 @@ static void drawAxisValue(const AxisEnum axis) { static void moveAxis(const AxisEnum axis, const int8_t direction) { quick_feedback(); - if (axis == E_AXIS && thermalManager.tooColdToExtrude(motionAxisState.e_selection)) { - drawMessage(F("Too cold")); - return; - } + #if HAS_EXTRUDERS + if (axis == E_AXIS && thermalManager.tooColdToExtrude(motionAxisState.e_selection)) { + drawMessage(F("Too cold")); + return; + } + #endif const float diff = motionAxisState.currentStepSize * direction; - if (axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { - #if ENABLED(BABYSTEP_ZPROBE_OFFSET) - const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z; - const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0; - const float bsDiff = planner.mm_per_step[Z_AXIS] * babystep_increment, - new_probe_offset = probe.offset.z + bsDiff, - new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET - , do_probe ? new_probe_offset : hotend_offset[active_extruder].z - bsDiff - , new_probe_offset - ); - if (WITHIN(new_offs, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { - babystep.add_steps(Z_AXIS, babystep_increment); - if (do_probe) - probe.offset.z = new_offs; - else - TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); - drawMessage(NUL_STR); // clear the error + #if HAS_Z_AXIS + if (axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { + #if ENABLED(BABYSTEP_ZPROBE_OFFSET) + const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z; + const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0; + const float bsDiff = planner.mm_per_step[Z_AXIS] * babystep_increment, + new_probe_offset = probe.offset.z + bsDiff, + new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET + , do_probe ? new_probe_offset : hotend_offset[active_extruder].z - bsDiff + , new_probe_offset + ); + if (WITHIN(new_offs, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { + babystep.add_steps(Z_AXIS, babystep_increment); + if (do_probe) + probe.offset.z = new_offs; + else + TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); + drawMessage(NUL_STR); // clear the error + drawAxisValue(axis); + } + else { + drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); + } + #elif HAS_BED_PROBE + // only change probe.offset.z + probe.offset.z += diff; + if (direction < 0 && current_position[axis] < Z_PROBE_OFFSET_RANGE_MIN) { + current_position[axis] = Z_PROBE_OFFSET_RANGE_MIN; + drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); + } + else if (direction > 0 && current_position[axis] > Z_PROBE_OFFSET_RANGE_MAX) { + current_position[axis] = Z_PROBE_OFFSET_RANGE_MAX; + drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); + } + else { + drawMessage(NUL_STR); // clear the error + } drawAxisValue(axis); - } - else { - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - #elif HAS_BED_PROBE - // only change probe.offset.z - probe.offset.z += diff; - if (direction < 0 && current_position[axis] < Z_PROBE_OFFSET_RANGE_MIN) { - current_position[axis] = Z_PROBE_OFFSET_RANGE_MIN; - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - else if (direction > 0 && current_position[axis] > Z_PROBE_OFFSET_RANGE_MAX) { - current_position[axis] = Z_PROBE_OFFSET_RANGE_MAX; - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - else { - drawMessage(NUL_STR); // clear the error - } - drawAxisValue(axis); - #endif - return; - } + #endif + return; + } + #endif // HAS_Z_AXIS if (!ui.manual_move.processing) { // Get motion limit from software endstops, if any @@ -822,7 +860,7 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { // Delta limits XY based on the current offset from center // This assumes the center is 0,0 #if ENABLED(DELTA) - if (axis != Z_AXIS && axis != E_AXIS) { + if (axis != Z_AXIS && TERN1(HAS_EXTRUDERS, axis != E_AXIS)) { max = SQRT(sq(float(PRINTABLE_RADIUS)) - sq(current_position[Y_AXIS - axis])); // (Y_AXIS - axis) == the other axis min = -max; } @@ -843,35 +881,44 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { drawAxisValue(axis); } -static void e_plus() { moveAxis(E_AXIS, 1); } -static void e_minus() { moveAxis(E_AXIS, -1); } -static void x_minus() { moveAxis(X_AXIS, -1); } -static void x_plus() { moveAxis(X_AXIS, 1); } -static void y_plus() { moveAxis(Y_AXIS, 1); } -static void y_minus() { moveAxis(Y_AXIS, -1); } -static void z_plus() { moveAxis(Z_AXIS, 1); } -static void z_minus() { moveAxis(Z_AXIS, -1); } +#if HAS_EXTRUDERS + static void e_plus() { moveAxis(E_AXIS, 1); } + static void e_minus() { moveAxis(E_AXIS, -1); } +#endif +#if HAS_X_AXIS + static void x_minus() { moveAxis(X_AXIS, -1); } + static void x_plus() { moveAxis(X_AXIS, 1); } +#endif +#if HAS_Y_AXIS + static void y_plus() { moveAxis(Y_AXIS, 1); } + static void y_minus() { moveAxis(Y_AXIS, -1); } +#endif +#if HAS_Z_AXIS + static void z_plus() { moveAxis(Z_AXIS, 1); } + static void z_minus() { moveAxis(Z_AXIS, -1); } +#endif #if ENABLED(TOUCH_SCREEN) - static void e_select() { - if (++motionAxisState.e_selection >= EXTRUDERS) - motionAxisState.e_selection = 0; - - quick_feedback(); - drawCurESelection(); - drawAxisValue(E_AXIS); - } + #if HAS_EXTRUDERS + static void e_select() { + if (++motionAxisState.e_selection >= EXTRUDERS) + motionAxisState.e_selection = 0; + quick_feedback(); + drawCurESelection(); + drawAxisValue(E_AXIS); + } + #endif static void do_home() { quick_feedback(); drawMessage(GET_TEXT_F(MSG_LEVEL_BED_HOMING)); queue.inject_P(G28_STR); // Disable touch until home is done - TERN_(HAS_TFT_XPT2046, touch.disable()); - drawAxisValue(E_AXIS); - drawAxisValue(X_AXIS); - drawAxisValue(Y_AXIS); - drawAxisValue(Z_AXIS); + touch.disable(); + TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); + TERN_(HAS_X_AXIS, drawAxisValue(X_AXIS)); + TERN_(HAS_Y_AXIS, drawAxisValue(Y_AXIS)); + TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); } static void step_size() { @@ -916,14 +963,14 @@ static void drawBtn(int x, int y, const char *label, intptr_t data, MarlinImage else tft.add_image(0, 0, img, bgColor, COLOR_BACKGROUND, COLOR_DARKGREY); - TERN_(HAS_TFT_XPT2046, if (enabled) touch.add_control(BUTTON, x, y, width, height, data)); + TERN_(TOUCH_SCREEN, if (enabled) touch.add_control(BUTTON, x, y, width, height, data)); } void MarlinUI::move_axis_screen() { // Reset defer_status_screen(true); motionAxisState.blocked = false; - TERN_(HAS_TFT_XPT2046, touch.enable()); + TERN_(TOUCH_SCREEN, touch.enable()); ui.clear_lcd(); @@ -949,7 +996,9 @@ void MarlinUI::move_axis_screen() { x += BTN_WIDTH + spacing; uint16_t zplus_x = x; - drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #if HAS_Z_AXIS + drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #endif // ROW 2 -> "Ex" CurY "Z" x = X_MARGIN; @@ -957,8 +1006,10 @@ void MarlinUI::move_axis_screen() { motionAxisState.eNamePos.x = x; motionAxisState.eNamePos.y = y; - drawCurESelection(); - TERN_(HAS_TFT_XPT2046, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); + #if HAS_EXTRUDERS + drawCurESelection(); + TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); + #endif motionAxisState.yValuePos.x = yplus_x; motionAxisState.yValuePos.y = y; @@ -966,7 +1017,7 @@ void MarlinUI::move_axis_screen() { motionAxisState.zTypePos.x = zplus_x; motionAxisState.zTypePos.y = y; - drawCurZSelection(); + TERN_(HAS_Z_AXIS, drawCurZSelection()); // ROW 3 -> X- HOME X+ y += (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3 - 2; @@ -974,7 +1025,7 @@ void MarlinUI::move_axis_screen() { drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy); - TERN_(HAS_TFT_XPT2046, add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); drawBtn(zplus_x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy); @@ -993,23 +1044,27 @@ void MarlinUI::move_axis_screen() { y += (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3 - 2; x = X_MARGIN; - drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); + #if HAS_EXTRUDERS + drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); + #endif // Cur E motionAxisState.eValuePos.x = x; motionAxisState.eValuePos.y = y + BTN_HEIGHT + 2; - drawAxisValue(E_AXIS); + TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); x += BTN_WIDTH + spacing; drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy); x += BTN_WIDTH + spacing; - drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #if HAS_Z_AXIS + drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #endif // Cur Z motionAxisState.zValuePos.x = x; motionAxisState.zValuePos.y = y + BTN_HEIGHT + 2; - drawAxisValue(Z_AXIS); + TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); // ROW 6 -> step_size disable steppers back y = TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT; // @@ -1019,7 +1074,7 @@ void MarlinUI::move_axis_screen() { if (!busy) { drawCurStepValue(); - TERN_(HAS_TFT_XPT2046, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); + TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); } // aligned with x+ @@ -1030,7 +1085,7 @@ void MarlinUI::move_axis_screen() { // ROW 1 -> E+ Y+ CurY Z+ int x = X_MARGIN, y = Y_MARGIN, spacing = 0; - drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy); + TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy)); spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; x += BTN_WIDTH + spacing; @@ -1044,7 +1099,9 @@ void MarlinUI::move_axis_screen() { drawAxisValue(Y_AXIS); x += spacing; - drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #if HAS_Z_AXIS + drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #endif // ROW 2 -> "Ex" X- HOME X+ "Z" y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; @@ -1053,14 +1110,16 @@ void MarlinUI::move_axis_screen() { motionAxisState.eNamePos.x = x; motionAxisState.eNamePos.y = y; - drawCurESelection(); - TERN_(HAS_TFT_XPT2046, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); + #if HAS_EXTRUDERS + drawCurESelection(); + TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); + #endif x += BTN_WIDTH + spacing; drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy); x += BTN_WIDTH + spacing; //imgHome is 64x64 - TERN_(HAS_TFT_XPT2046, add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); x += BTN_WIDTH + spacing; uint16_t xplus_x = x; @@ -1069,9 +1128,9 @@ void MarlinUI::move_axis_screen() { x += BTN_WIDTH + spacing; motionAxisState.zTypePos.x = x; motionAxisState.zTypePos.y = y; - drawCurZSelection(); + TERN_(HAS_Z_AXIS, drawCurZSelection()); #if BOTH(HAS_BED_PROBE, TOUCH_SCREEN) - if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); + if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); #endif // ROW 3 -> E- CurX Y- Z- @@ -1079,12 +1138,12 @@ void MarlinUI::move_axis_screen() { x = X_MARGIN; spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; - drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); + TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy)); // Cur E motionAxisState.eValuePos.x = x; motionAxisState.eValuePos.y = y + BTN_HEIGHT + 2; - drawAxisValue(E_AXIS); + TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); // Cur X motionAxisState.xValuePos.x = BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; //X- pos @@ -1095,12 +1154,14 @@ void MarlinUI::move_axis_screen() { drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy); x += BTN_WIDTH + spacing; - drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #if HAS_Z_AXIS + drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #endif // Cur Z motionAxisState.zValuePos.x = x; motionAxisState.zValuePos.y = y + BTN_HEIGHT + 2; - drawAxisValue(Z_AXIS); + TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); // ROW 4 -> step_size disable steppers back y = TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT; // @@ -1109,7 +1170,7 @@ void MarlinUI::move_axis_screen() { motionAxisState.stepValuePos.y = TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT; if (!busy) { drawCurStepValue(); - TERN_(HAS_TFT_XPT2046, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); + TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); } // aligned with x+ @@ -1117,7 +1178,7 @@ void MarlinUI::move_axis_screen() { #endif // !TFT_COLOR_UI_PORTRAIT - TERN_(HAS_TFT_XPT2046, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); } #endif // HAS_UI_320x240 diff --git a/Marlin/src/lcd/tft/ui_480x320.cpp b/Marlin/src/lcd/tft/ui_480x320.cpp index bc4ea0e5e2..e1ddfe5e1a 100644 --- a/Marlin/src/lcd/tft/ui_480x320.cpp +++ b/Marlin/src/lcd/tft/ui_480x320.cpp @@ -124,8 +124,12 @@ void draw_heater_status(uint16_t x, uint16_t y, const int8_t Heater) { celsius_t currentTemperature, targetTemperature; if (Heater >= 0) { // HotEnd - currentTemperature = thermalManager.wholeDegHotend(Heater); - targetTemperature = thermalManager.degTargetHotend(Heater); + #if HAS_EXTRUDERS + currentTemperature = thermalManager.wholeDegHotend(Heater); + targetTemperature = thermalManager.degTargetHotend(Heater); + #else + return; + #endif } #if HAS_HEATED_BED else if (Heater == H_BED) { @@ -271,31 +275,37 @@ void MarlinUI::draw_status_screen() { } else { // Coords in mask "X____Y____Z____" - tft_string.set("X"); - tft.add_text(coords_width / 30 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, tft_string); + #if HAS_X_AXIS + tft_string.set("X"); + tft.add_text(coords_width / 30 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, tft_string); - const bool nhx = axis_should_home(X_AXIS); - tft_string.set(blink && nhx ? "?" : ftostr4sign(LOGICAL_X_POSITION(current_position.x))); - tft_string.ltrim(); - tft.add_text(coords_width / 5 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + const bool nhx = axis_should_home(X_AXIS); + tft_string.set(blink && nhx ? "?" : ftostr4sign(LOGICAL_X_POSITION(current_position.x))); + tft_string.ltrim(); + tft.add_text(coords_width / 5 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + #endif - tft_string.set("Y"); - tft.add_text(11 * coords_width / 30 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, tft_string); + #if HAS_Y_AXIS + tft_string.set("Y"); + tft.add_text(11 * coords_width / 30 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, tft_string); - const bool nhy = axis_should_home(Y_AXIS); - tft_string.set(blink && nhy ? "?" : ftostr4sign(LOGICAL_Y_POSITION(current_position.y))); - tft_string.ltrim(); - tft.add_text(8 * coords_width / 15 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), nhy ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + const bool nhy = axis_should_home(Y_AXIS); + tft_string.set(blink && nhy ? "?" : ftostr4sign(LOGICAL_Y_POSITION(current_position.y))); + tft_string.ltrim(); + tft.add_text(8 * coords_width / 15 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), nhy ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + #endif } - tft_string.set("Z"); - tft.add_text(7 * coords_width / 10 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, tft_string); + #if HAS_Z_AXIS + tft_string.set("Z"); + tft.add_text(7 * coords_width / 10 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, tft_string); - const bool nhz = axis_should_home(Z_AXIS); - tft_string.set(blink && nhz ? "?" : ftostr52sp(LOGICAL_Z_POSITION(current_position.z))); - tft_string.ltrim(); - tft_string.rtrim(); - tft.add_text(13 * coords_width / 15 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), nhz ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + const bool nhz = axis_should_home(Z_AXIS); + tft_string.set(blink && nhz ? "?" : ftostr52sp(LOGICAL_Z_POSITION(current_position.z))); + tft_string.ltrim(); + tft_string.rtrim(); + tft.add_text(13 * coords_width / 15 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), nhz ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + #endif TERN_(TOUCH_SCREEN, touch.add_control(MOVE_AXIS, 4, y, TFT_WIDTH - 8, FONT_LINE_HEIGHT)); @@ -315,19 +325,21 @@ void MarlinUI::draw_status_screen() { tft.add_text(36, tft_string.vcenter(30), color , tft_string); TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, x, y, component_width, 32)); - // Flow rate (preparing) - tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); - tft_string.add('%'); - component_width = 36 + tft_string.width(); - color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; - x = FLOWRATE_X(component_width); + #if HAS_EXTRUDERS + // Flow rate (preparing) + tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); + tft_string.add('%'); + component_width = 36 + tft_string.width(); + color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; + x = FLOWRATE_X(component_width); - // Flow rate (drawing) - tft.canvas(x, y, component_width, 32); - tft.set_background(COLOR_BACKGROUND); - tft.add_image(0, 0, imgFlowRate, color); - tft.add_text(36, tft_string.vcenter(30), color , tft_string); - TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, x, y, component_width, 32, active_extruder)); + // Flow rate (drawing) + tft.canvas(x, y, component_width, 32); + tft.set_background(COLOR_BACKGROUND); + tft.add_image(0, 0, imgFlowRate, color); + tft.add_text(36, tft_string.vcenter(30), color , tft_string); + TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, x, y, component_width, 32, active_extruder)); + #endif #if TFT_COLOR_UI_PORTRAIT || DISABLED(TOUCH_SCREEN) y += STATUS_MARGIN_SIZE + 32; @@ -586,16 +598,26 @@ void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, con #define Z_SELECTION_Z 1 #define Z_SELECTION_Z_PROBE -1 -struct MotionAxisState { - xy_int_t xValuePos, yValuePos, zValuePos, eValuePos, stepValuePos, zTypePos, eNamePos; +struct { + #if HAS_X_AXIS + xy_int_t xValuePos; + #endif + #if HAS_Y_AXIS + xy_int_t yValuePos; + #endif + #if HAS_Z_AXIS + xy_int_t zValuePos, zTypePos; + int z_selection = Z_SELECTION_Z; + #endif + #if HAS_EXTRUDERS + xy_int_t eValuePos, eNamePos; + uint8_t e_selection = 0; + #endif + xy_int_t stepValuePos; float currentStepSize = 10.0; - int z_selection = Z_SELECTION_Z; - uint8_t e_selection = 0; bool blocked = false; char message[32]; -}; - -MotionAxisState motionAxisState; +} motionAxisState; #define BTN_WIDTH 64 #define BTN_HEIGHT 52 @@ -622,27 +644,30 @@ static void drawCurStepValue() { tft.add_text(tft_string.center(CUR_STEP_VALUE_WIDTH), 0, COLOR_AXIS_HOMED, tft_string); } -static void drawCurZSelection() { - tft_string.set('Z'); - tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), 34); - tft.set_background(COLOR_BACKGROUND); - tft.add_text(0, 0, Z_BTN_COLOR, tft_string); - tft.queue.sync(); - tft_string.set(F("Offset")); - tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + 34, tft_string.width(), 34); - tft.set_background(COLOR_BACKGROUND); - if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { +#if HAS_Z_AXIS + static void drawCurZSelection() { + tft_string.set('Z'); + tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), 34); + tft.set_background(COLOR_BACKGROUND); tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + tft.queue.sync(); + tft_string.set(F("Offset")); + tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + 34, tft_string.width(), 34); + tft.set_background(COLOR_BACKGROUND); + if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) + tft.add_text(0, 0, Z_BTN_COLOR, tft_string); } -} +#endif -static void drawCurESelection() { - tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set('E'); - tft.add_text(0, 0, E_BTN_COLOR , tft_string); - tft.add_text(tft_string.width(), 0, E_BTN_COLOR, ui8tostr3rj(motionAxisState.e_selection)); -} +#if HAS_EXTRUDERS + static void drawCurESelection() { + tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft_string.set('E'); + tft.add_text(0, 0, E_BTN_COLOR , tft_string); + tft.add_text(tft_string.width(), 0, E_BTN_COLOR, ui8tostr3rj(motionAxisState.e_selection)); + } +#endif static void drawMessage(PGM_P const msg) { tft.canvas(X_MARGIN, TFT_HEIGHT - Y_MARGIN - 34, TFT_HEIGHT / 2, 34); @@ -660,10 +685,18 @@ static void drawAxisValue(const AxisEnum axis) { xy_int_t pos; uint16_t color; switch (axis) { - case X_AXIS: pos = motionAxisState.xValuePos; color = X_BTN_COLOR; break; - case Y_AXIS: pos = motionAxisState.yValuePos; color = Y_BTN_COLOR; break; - case Z_AXIS: pos = motionAxisState.zValuePos; color = Z_BTN_COLOR; break; - case E_AXIS: pos = motionAxisState.eValuePos; color = E_BTN_COLOR; break; + #if HAS_X_AXIS + case X_AXIS: pos = motionAxisState.xValuePos; color = X_BTN_COLOR; break; + #endif + #if HAS_Y_AXIS + case Y_AXIS: pos = motionAxisState.yValuePos; color = Y_BTN_COLOR; break; + #endif + #if HAS_Z_AXIS + case Z_AXIS: pos = motionAxisState.zValuePos; color = Z_BTN_COLOR; break; + #endif + #if HAS_EXTRUDERS + case E_AXIS: pos = motionAxisState.eValuePos; color = E_BTN_COLOR; break; + #endif default: return; } tft.canvas(pos.x, pos.y, BTN_WIDTH + X_MARGIN, BTN_HEIGHT); @@ -675,53 +708,57 @@ static void drawAxisValue(const AxisEnum axis) { static void moveAxis(const AxisEnum axis, const int8_t direction) { quick_feedback(); - if (axis == E_AXIS && thermalManager.tooColdToExtrude(motionAxisState.e_selection)) { - drawMessage(F("Too cold")); - return; - } + #if HAS_EXTRUDERS + if (axis == E_AXIS && thermalManager.tooColdToExtrude(motionAxisState.e_selection)) { + drawMessage(F("Too cold")); + return; + } + #endif const float diff = motionAxisState.currentStepSize * direction; - if (axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { - #if ENABLED(BABYSTEP_ZPROBE_OFFSET) - const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z; - const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0; - const float bsDiff = planner.mm_per_step[Z_AXIS] * babystep_increment, - new_probe_offset = probe.offset.z + bsDiff, - new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET - , do_probe ? new_probe_offset : hotend_offset[active_extruder].z - bsDiff - , new_probe_offset - ); - if (WITHIN(new_offs, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { - babystep.add_steps(Z_AXIS, babystep_increment); - if (do_probe) - probe.offset.z = new_offs; - else - TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); - drawMessage(NUL_STR); // clear the error + #if HAS_Z_AXIS + if (axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { + #if ENABLED(BABYSTEP_ZPROBE_OFFSET) + const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z; + const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0; + const float bsDiff = planner.mm_per_step[Z_AXIS] * babystep_increment, + new_probe_offset = probe.offset.z + bsDiff, + new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET + , do_probe ? new_probe_offset : hotend_offset[active_extruder].z - bsDiff + , new_probe_offset + ); + if (WITHIN(new_offs, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { + babystep.add_steps(Z_AXIS, babystep_increment); + if (do_probe) + probe.offset.z = new_offs; + else + TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); + drawMessage(NUL_STR); // clear the error + drawAxisValue(axis); + } + else { + drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); + } + #elif HAS_BED_PROBE + // only change probe.offset.z + probe.offset.z += diff; + if (direction < 0 && current_position[axis] < Z_PROBE_OFFSET_RANGE_MIN) { + current_position[axis] = Z_PROBE_OFFSET_RANGE_MIN; + drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); + } + else if (direction > 0 && current_position[axis] > Z_PROBE_OFFSET_RANGE_MAX) { + current_position[axis] = Z_PROBE_OFFSET_RANGE_MAX; + drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); + } + else { + drawMessage(NUL_STR); // clear the error + } drawAxisValue(axis); - } - else { - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - #elif HAS_BED_PROBE - // only change probe.offset.z - probe.offset.z += diff; - if (direction < 0 && current_position[axis] < Z_PROBE_OFFSET_RANGE_MIN) { - current_position[axis] = Z_PROBE_OFFSET_RANGE_MIN; - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - else if (direction > 0 && current_position[axis] > Z_PROBE_OFFSET_RANGE_MAX) { - current_position[axis] = Z_PROBE_OFFSET_RANGE_MAX; - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - else { - drawMessage(NUL_STR); // clear the error - } - drawAxisValue(axis); - #endif - return; - } + #endif + return; + } + #endif // HAS_Z_AXIS if (!ui.manual_move.processing) { // Get motion limit from software endstops, if any @@ -731,7 +768,7 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { // Delta limits XY based on the current offset from center // This assumes the center is 0,0 #if ENABLED(DELTA) - if (axis != Z_AXIS && axis != E_AXIS) { + if (axis != Z_AXIS && TERN1(HAS_EXTRUDERS, axis != E_AXIS)) { max = SQRT(sq(float(PRINTABLE_RADIUS)) - sq(current_position[Y_AXIS - axis])); // (Y_AXIS - axis) == the other axis min = -max; } @@ -752,35 +789,44 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { drawAxisValue(axis); } -static void e_plus() { moveAxis(E_AXIS, 1); } -static void e_minus() { moveAxis(E_AXIS, -1); } -static void x_minus() { moveAxis(X_AXIS, -1); } -static void x_plus() { moveAxis(X_AXIS, 1); } -static void y_plus() { moveAxis(Y_AXIS, 1); } -static void y_minus() { moveAxis(Y_AXIS, -1); } -static void z_plus() { moveAxis(Z_AXIS, 1); } -static void z_minus() { moveAxis(Z_AXIS, -1); } +#if HAS_EXTRUDERS + static void e_plus() { moveAxis(E_AXIS, 1); } + static void e_minus() { moveAxis(E_AXIS, -1); } +#endif +#if HAS_X_AXIS + static void x_minus() { moveAxis(X_AXIS, -1); } + static void x_plus() { moveAxis(X_AXIS, 1); } +#endif +#if HAS_Y_AXIS + static void y_plus() { moveAxis(Y_AXIS, 1); } + static void y_minus() { moveAxis(Y_AXIS, -1); } +#endif +#if HAS_Z_AXIS + static void z_plus() { moveAxis(Z_AXIS, 1); } + static void z_minus() { moveAxis(Z_AXIS, -1); } +#endif #if ENABLED(TOUCH_SCREEN) - static void e_select() { - if (++motionAxisState.e_selection >= EXTRUDERS) - motionAxisState.e_selection = 0; - - quick_feedback(); - drawCurESelection(); - drawAxisValue(E_AXIS); - } + #if HAS_EXTRUDERS + static void e_select() { + if (++motionAxisState.e_selection >= EXTRUDERS) + motionAxisState.e_selection = 0; + quick_feedback(); + drawCurESelection(); + drawAxisValue(E_AXIS); + } + #endif static void do_home() { quick_feedback(); drawMessage(GET_TEXT_F(MSG_LEVEL_BED_HOMING)); queue.inject_P(G28_STR); // Disable touch until home is done - TERN_(HAS_TFT_XPT2046, touch.disable()); - drawAxisValue(E_AXIS); - drawAxisValue(X_AXIS); - drawAxisValue(Y_AXIS); - drawAxisValue(Z_AXIS); + touch.disable(); + TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); + TERN_(HAS_X_AXIS, drawAxisValue(X_AXIS)); + TERN_(HAS_Y_AXIS, drawAxisValue(Y_AXIS)); + TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); } static void step_size() { @@ -789,7 +835,7 @@ static void z_minus() { moveAxis(Z_AXIS, -1); } quick_feedback(); drawCurStepValue(); } -#endif +#endif // TOUCH_SCREEN #if BOTH(HAS_BED_PROBE, TOUCH_SCREEN) static void z_select() { @@ -825,14 +871,14 @@ static void drawBtn(int x, int y, const char *label, intptr_t data, MarlinImage tft.add_image(0, 0, img, bgColor, COLOR_BACKGROUND, COLOR_DARKGREY); } - TERN_(HAS_TFT_XPT2046, if (enabled) touch.add_control(BUTTON, x, y, width, height, data)); + TERN_(TOUCH_SCREEN, if (enabled) touch.add_control(BUTTON, x, y, width, height, data)); } void MarlinUI::move_axis_screen() { // Reset defer_status_screen(true); motionAxisState.blocked = false; - TERN_(HAS_TFT_XPT2046, touch.enable()); + TERN_(TOUCH_SCREEN, touch.enable()); ui.clear_lcd(); @@ -842,25 +888,31 @@ void MarlinUI::move_axis_screen() { // Babysteps during printing? Select babystep for Z probe offset if (busy && ENABLED(BABYSTEP_ZPROBE_OFFSET)) - motionAxisState.z_selection = Z_SELECTION_Z_PROBE; + + TERN_(HAS_Z_AXIS, motionAxisState.z_selection = Z_SELECTION_Z_PROBE); // ROW 1 -> E- Y- CurY Z+ int x = X_MARGIN, y = Y_MARGIN, spacing = 0; - drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy); + TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy)); spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; x += BTN_WIDTH + spacing; - drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy); + + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy)); // Cur Y x += BTN_WIDTH; - motionAxisState.yValuePos.x = x + 2; - motionAxisState.yValuePos.y = y; - drawAxisValue(Y_AXIS); + #if HAS_Y_AXIS + motionAxisState.yValuePos.x = x + 2; + motionAxisState.yValuePos.y = y; + drawAxisValue(Y_AXIS); + #endif x += spacing; - drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #if HAS_Z_AXIS + drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #endif // ROW 2 -> "Ex" X- HOME X+ "Z" y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; @@ -869,14 +921,16 @@ void MarlinUI::move_axis_screen() { motionAxisState.eNamePos.x = x; motionAxisState.eNamePos.y = y; - drawCurESelection(); - TERN_(HAS_TFT_XPT2046, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); + #if HAS_EXTRUDERS + drawCurESelection(); + TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); + #endif x += BTN_WIDTH + spacing; drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy); x += BTN_WIDTH + spacing; //imgHome is 64x64 - TERN_(HAS_TFT_XPT2046, add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); x += BTN_WIDTH + spacing; uint16_t xplus_x = x; @@ -885,7 +939,7 @@ void MarlinUI::move_axis_screen() { x += BTN_WIDTH + spacing; motionAxisState.zTypePos.x = x; motionAxisState.zTypePos.y = y; - drawCurZSelection(); + TERN_(HAS_Z_AXIS, drawCurZSelection()); #if BOTH(HAS_BED_PROBE, TOUCH_SCREEN) if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); #endif @@ -895,28 +949,30 @@ void MarlinUI::move_axis_screen() { x = X_MARGIN; spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; - drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); + TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy)); // Cur E motionAxisState.eValuePos.x = x; motionAxisState.eValuePos.y = y + BTN_HEIGHT + 2; - drawAxisValue(E_AXIS); + TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); // Cur X motionAxisState.xValuePos.x = BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; //X- pos motionAxisState.xValuePos.y = y - 10; - drawAxisValue(X_AXIS); + TERN_(HAS_X_AXIS, drawAxisValue(X_AXIS)); x += BTN_WIDTH + spacing; drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy); x += BTN_WIDTH + spacing; - drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #if HAS_Z_AXIS + drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #endif // Cur Z motionAxisState.zValuePos.x = x; motionAxisState.zValuePos.y = y + BTN_HEIGHT + 2; - drawAxisValue(Z_AXIS); + TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); // ROW 4 -> step_size disable steppers back y = TFT_HEIGHT - Y_MARGIN - 32; @@ -925,13 +981,13 @@ void MarlinUI::move_axis_screen() { motionAxisState.stepValuePos.y = y; if (!busy) { drawCurStepValue(); - TERN_(HAS_TFT_XPT2046, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); + TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); } // aligned with x+ drawBtn(xplus_x, TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT, "off", (intptr_t)disable_steppers, imgCancel, COLOR_WHITE, !busy); - TERN_(HAS_TFT_XPT2046, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); } #endif // HAS_UI_480x320 From 30c3daf03165c2df9966b69ce70ed5e5a75b1fdc Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Sat, 13 May 2023 23:28:17 +0200 Subject: [PATCH 424/659] =?UTF-8?q?=F0=9F=94=A7=20No=20DISABLE=5FOTHER=5FE?= =?UTF-8?q?XTRUDERS=20if=20<=202=20steppers=20(#25818)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_LCD.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 7c67916765..5b64338662 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -681,8 +681,8 @@ #endif -// No inactive extruders with SWITCHING_NOZZLE or Průša MMU1 -#if HAS_SWITCHING_NOZZLE || HAS_PRUSA_MMU1 +// No inactive extruders with SWITCHING_NOZZLE or Průša MMU1 or just 1 E stepper exists +#if HAS_SWITCHING_NOZZLE || HAS_PRUSA_MMU1 || E_STEPPERS < 2 #undef DISABLE_OTHER_EXTRUDERS #endif From de78b60252d83bcf96435c53f1bb2a6c0593c9fd Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Sat, 13 May 2023 23:31:31 +0200 Subject: [PATCH 425/659] =?UTF-8?q?=F0=9F=A9=B9=20Remove=20extraneous=20MP?= =?UTF-8?q?C=20temp=20check=20(#25816)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/temperature.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 8bcaf5d83f..09c5ef0cdf 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -1064,8 +1064,6 @@ volatile bool Temperature::raw_temps_ready = false; if (sample_count == 0) t1_time = MS_TO_SEC_PRECISE(curr_time_ms - heat_start_time_ms); temp_samples[sample_count++] = current_temp; - if (current_temp >= 200.0f) break; - next_test_time_ms += test_interval_ms * sample_distance; } From e89e67fde0d3d745d7d468e5972456f7484f9027 Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Sat, 13 May 2023 23:36:23 +0200 Subject: [PATCH 426/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Ass?= =?UTF-8?q?ume=20Auto=20Fans=20<=20HOTENDS=20(#25815)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/temperature.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 09c5ef0cdf..fa960443ca 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -1428,7 +1428,7 @@ int16_t Temperature::getHeaterPower(const heater_id_t heater_id) { #define AUTOFAN_CASE(N) TERN(HAS_AUTO_FAN_##N, _AUTOFAN_CASE, _AUTOFAN_NOT)(N) switch (f) { - REPEAT(8, AUTOFAN_CASE) + REPEAT(HOTENDS, AUTOFAN_CASE) #if HAS_AUTO_CHAMBER_FAN && !AUTO_CHAMBER_IS_E case CHAMBER_FAN_INDEX: _UPDATE_AUTO_FAN(CHAMBER, fan_on, CHAMBER_AUTO_FAN_SPEED); break; #endif From 40aa39828598108d519a536d6735354a500a31c6 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sun, 14 May 2023 09:43:57 +1200 Subject: [PATCH 427/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20large=20edit=20val?= =?UTF-8?q?ue=20to=20encoder=20conversion=20(#25812)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/menu/menu.cpp | 2 +- Marlin/src/lcd/menu/menu.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/lcd/menu/menu.cpp b/Marlin/src/lcd/menu/menu.cpp index 5c4dc12d26..911a35d482 100644 --- a/Marlin/src/lcd/menu/menu.cpp +++ b/Marlin/src/lcd/menu/menu.cpp @@ -138,7 +138,7 @@ void MenuEditItemBase::goto_edit_screen( void * const ev, // Edit value pointer const int32_t minv, // Encoder minimum const int32_t maxv, // Encoder maximum - const uint16_t ep, // Initial encoder value + const uint32_t ep, // Initial encoder value const screenFunc_t cs, // MenuItem_type::draw_edit_screen => MenuEditItemBase::edit() const screenFunc_t cb, // Callback after edit const bool le // Flag to call cb() during editing diff --git a/Marlin/src/lcd/menu/menu.h b/Marlin/src/lcd/menu/menu.h index 9d824e2a4c..5a70ddd3a2 100644 --- a/Marlin/src/lcd/menu/menu.h +++ b/Marlin/src/lcd/menu/menu.h @@ -168,7 +168,7 @@ class MenuEditItemBase : public MenuItemBase { void * const ev, // Edit value pointer const int32_t minv, // Encoder minimum const int32_t maxv, // Encoder maximum - const uint16_t ep, // Initial encoder value + const uint32_t ep, // Initial encoder value const screenFunc_t cs, // MenuItem_type::draw_edit_screen => MenuEditItemBase::edit() const screenFunc_t cb, // Callback after edit const bool le // Flag to call cb() during editing From 5859ff0280b51b3130e1d13740bfae79eff4d23e Mon Sep 17 00:00:00 2001 From: Vert <45634861+Vertabreak@users.noreply.github.com> Date: Sat, 13 May 2023 17:51:12 -0400 Subject: [PATCH 428/659] =?UTF-8?q?=E2=9C=A8=20NUM=5FREDUNDANT=5FFANS=20(#?= =?UTF-8?q?25808)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration_adv.h | 7 +++++-- Marlin/src/gcode/temp/M106_M107.cpp | 8 ++------ Marlin/src/inc/Conditionals_adv.h | 5 +++++ Marlin/src/inc/SanityCheck.h | 6 ++++-- Marlin/src/lcd/menu/menu_item.h | 4 ++-- Marlin/src/lcd/menu/menu_temperature.cpp | 18 +++++++++--------- Marlin/src/lcd/menu/menu_tune.cpp | 18 +++++++++--------- Marlin/src/module/temperature.cpp | 8 ++++++-- Marlin/src/module/temperature.h | 11 +++++++++++ 9 files changed, 53 insertions(+), 32 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 262e1a81ca..9090eb5a61 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -660,9 +660,12 @@ #endif /** - * Use one of the PWM fans as a redundant part-cooling fan + * Assign more PWM fans for part cooling, synchronized with Fan 0 */ -//#define REDUNDANT_PART_COOLING_FAN 2 // Index of the fan to sync with FAN 0. +//#define REDUNDANT_PART_COOLING_FAN 1 // Index of the first fan to synchronize with Fan 0 +#ifdef REDUNDANT_PART_COOLING_FAN + //#define NUM_REDUNDANT_FANS 1 // Number of sequential fans to synchronize with Fan 0 +#endif // @section extruder diff --git a/Marlin/src/gcode/temp/M106_M107.cpp b/Marlin/src/gcode/temp/M106_M107.cpp index 6ba64cd7ba..afa2ebfc56 100644 --- a/Marlin/src/gcode/temp/M106_M107.cpp +++ b/Marlin/src/gcode/temp/M106_M107.cpp @@ -61,9 +61,7 @@ void GcodeSuite::M106() { const uint8_t pfan = parser.byteval('P', _ALT_P); if (pfan >= _CNT_P) return; - #if REDUNDANT_PART_COOLING_FAN - if (pfan == REDUNDANT_PART_COOLING_FAN) return; - #endif + if (FAN_IS_REDUNDANT(pfan)) return; #if ENABLED(EXTRA_FAN_SPEED) const uint16_t t = parser.intval('T'); @@ -102,9 +100,7 @@ void GcodeSuite::M106() { void GcodeSuite::M107() { const uint8_t pfan = parser.byteval('P', _ALT_P); if (pfan >= _CNT_P) return; - #if REDUNDANT_PART_COOLING_FAN - if (pfan == REDUNDANT_PART_COOLING_FAN) return; - #endif + if (FAN_IS_REDUNDANT(pfan)) return; thermalManager.set_fan_speed(pfan, 0); diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index d715b1bd12..70644ddf0d 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -1280,3 +1280,8 @@ #define MULTISTEPPING_LIMIT 128 #define MULTISTEPPING_LIMIT_WARNING 1 #endif + +// One redundant cooling fan by default +#if defined(REDUNDANT_PART_COOLING_FAN) && !defined(NUM_REDUNDANT_FANS) + #define NUM_REDUNDANT_FANS 1 +#endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 9c54208c53..53333d8727 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1843,8 +1843,10 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #ifdef REDUNDANT_PART_COOLING_FAN #if FAN_COUNT < 2 #error "REDUNDANT_PART_COOLING_FAN requires a board with at least two PWM fans." - #else - static_assert(WITHIN(REDUNDANT_PART_COOLING_FAN, 1, FAN_COUNT - 1), "REDUNDANT_PART_COOLING_FAN must be between 1 and " STRINGIFY(DECREMENT(FAN_COUNT)) "."); + #elif !WITHIN(REDUNDANT_PART_COOLING_FAN, 1, FAN_COUNT - 1) + static_assert(false, "REDUNDANT_PART_COOLING_FAN must be between 1 and " STRINGIFY(DECREMENT(FAN_COUNT)) "."); + #elif !WITHIN(REDUNDANT_PART_COOLING_FAN + NUM_REDUNDANT_FANS - 1, 1, FAN_COUNT - 1) + #error "Not enough fans available for NUM_REDUNDANT_FANS." #endif #endif diff --git a/Marlin/src/lcd/menu/menu_item.h b/Marlin/src/lcd/menu/menu_item.h index 805caa1d90..2005be8b54 100644 --- a/Marlin/src/lcd/menu/menu_item.h +++ b/Marlin/src/lcd/menu/menu_item.h @@ -580,10 +580,10 @@ class MenuItem_bool : public MenuEditItemBase { }while(0) #if FAN_COUNT > 1 - #define FAN_EDIT_ITEMS(F) _FAN_EDIT_ITEMS(F,FAN_SPEED_N) + #define FAN_EDIT_ITEMS(F) _FAN_EDIT_ITEMS(F, FAN_SPEED_N) #endif - #define SNFAN(N) (ENABLED(SINGLENOZZLE_STANDBY_FAN) && !HAS_FAN##N && EXTRUDERS > N) + #define SNFAN(N) (ENABLED(SINGLENOZZLE_STANDBY_FAN) && !HAS_FAN##N && (N) < EXTRUDERS) #if SNFAN(1) || SNFAN(2) || SNFAN(3) || SNFAN(4) || SNFAN(5) || SNFAN(6) || SNFAN(7) #define DEFINE_SINGLENOZZLE_ITEM() \ diff --git a/Marlin/src/lcd/menu/menu_temperature.cpp b/Marlin/src/lcd/menu/menu_temperature.cpp index ec6d49c16f..c534597690 100644 --- a/Marlin/src/lcd/menu/menu_temperature.cpp +++ b/Marlin/src/lcd/menu/menu_temperature.cpp @@ -221,40 +221,40 @@ void menu_temperature() { DEFINE_SINGLENOZZLE_ITEM(); - #if HAS_FAN0 - _FAN_EDIT_ITEMS(0,FIRST_FAN_SPEED); + #if FAN_IS_M106ABLE(0) + _FAN_EDIT_ITEMS(0, FIRST_FAN_SPEED); #endif - #if HAS_FAN1 && REDUNDANT_PART_COOLING_FAN != 1 + #if FAN_IS_M106ABLE(1) FAN_EDIT_ITEMS(1); #elif SNFAN(1) singlenozzle_item(1); #endif - #if HAS_FAN2 && REDUNDANT_PART_COOLING_FAN != 2 + #if FAN_IS_M106ABLE(2) FAN_EDIT_ITEMS(2); #elif SNFAN(2) singlenozzle_item(2); #endif - #if HAS_FAN3 && REDUNDANT_PART_COOLING_FAN != 3 + #if FAN_IS_M106ABLE(3) FAN_EDIT_ITEMS(3); #elif SNFAN(3) singlenozzle_item(3); #endif - #if HAS_FAN4 && REDUNDANT_PART_COOLING_FAN != 4 + #if FAN_IS_M106ABLE(4) FAN_EDIT_ITEMS(4); #elif SNFAN(4) singlenozzle_item(4); #endif - #if HAS_FAN5 && REDUNDANT_PART_COOLING_FAN != 5 + #if FAN_IS_M106ABLE(5) FAN_EDIT_ITEMS(5); #elif SNFAN(5) singlenozzle_item(5); #endif - #if HAS_FAN6 && REDUNDANT_PART_COOLING_FAN != 6 + #if FAN_IS_M106ABLE(6) FAN_EDIT_ITEMS(6); #elif SNFAN(6) singlenozzle_item(6); #endif - #if HAS_FAN7 && REDUNDANT_PART_COOLING_FAN != 7 + #if FAN_IS_M106ABLE(7) FAN_EDIT_ITEMS(7); #elif SNFAN(7) singlenozzle_item(7); diff --git a/Marlin/src/lcd/menu/menu_tune.cpp b/Marlin/src/lcd/menu/menu_tune.cpp index 8a2636ba5d..081b9f58a0 100644 --- a/Marlin/src/lcd/menu/menu_tune.cpp +++ b/Marlin/src/lcd/menu/menu_tune.cpp @@ -153,40 +153,40 @@ void menu_tune() { DEFINE_SINGLENOZZLE_ITEM(); - #if HAS_FAN0 - _FAN_EDIT_ITEMS(0,FIRST_FAN_SPEED); + #if FAN_IS_M106ABLE(0) + _FAN_EDIT_ITEMS(0, FIRST_FAN_SPEED); #endif - #if HAS_FAN1 && REDUNDANT_PART_COOLING_FAN != 1 + #if FAN_IS_M106ABLE(1) FAN_EDIT_ITEMS(1); #elif SNFAN(1) singlenozzle_item(1); #endif - #if HAS_FAN2 && REDUNDANT_PART_COOLING_FAN != 2 + #if FAN_IS_M106ABLE(2) FAN_EDIT_ITEMS(2); #elif SNFAN(2) singlenozzle_item(2); #endif - #if HAS_FAN3 && REDUNDANT_PART_COOLING_FAN != 3 + #if FAN_IS_M106ABLE(3) FAN_EDIT_ITEMS(3); #elif SNFAN(3) singlenozzle_item(3); #endif - #if HAS_FAN4 && REDUNDANT_PART_COOLING_FAN != 4 + #if FAN_IS_M106ABLE(4) FAN_EDIT_ITEMS(4); #elif SNFAN(4) singlenozzle_item(4); #endif - #if HAS_FAN5 && REDUNDANT_PART_COOLING_FAN != 5 + #if FAN_IS_M106ABLE(5) FAN_EDIT_ITEMS(5); #elif SNFAN(5) singlenozzle_item(5); #endif - #if HAS_FAN6 && REDUNDANT_PART_COOLING_FAN != 6 + #if FAN_IS_M106ABLE(6) FAN_EDIT_ITEMS(6); #elif SNFAN(6) singlenozzle_item(6); #endif - #if HAS_FAN7 && REDUNDANT_PART_COOLING_FAN != 7 + #if FAN_IS_M106ABLE(7) FAN_EDIT_ITEMS(7); #elif SNFAN(7) singlenozzle_item(7); diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index fa960443ca..d84b475765 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -467,8 +467,12 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); if (fan >= FAN_COUNT) return; fan_speed[fan] = speed; - #if REDUNDANT_PART_COOLING_FAN - if (fan == 0) fan_speed[REDUNDANT_PART_COOLING_FAN] = speed; + + #if NUM_REDUNDANT_FANS + if (fan == 0) { + for (uint8_t f = REDUNDANT_PART_COOLING_FAN; f < REDUNDANT_PART_COOLING_FAN + NUM_REDUNDANT_FANS; ++f) + thermalManager.set_fan_speed(f, 0); + } #endif TERN_(REPORT_FAN_CHANGE, report_fan_speed(fan)); diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index 4bd185c425..c4dae4c6e5 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -44,6 +44,17 @@ #define HOTEND_INDEX TERN(HAS_MULTI_HOTEND, e, 0) #define E_NAME TERN_(HAS_MULTI_HOTEND, e) +#if HAS_FAN + #if NUM_REDUNDANT_FANS + #define FAN_IS_REDUNDANT(Q) WITHIN(Q, REDUNDANT_PART_COOLING_FAN, REDUNDANT_PART_COOLING_FAN + NUM_REDUNDANT_FANS - 1) + #else + #define FAN_IS_REDUNDANT(Q) false + #endif + #define FAN_IS_M106ABLE(Q) (HAS_FAN##Q && !FAN_IS_REDUNDANT(Q)) +#else + #define FAN_IS_M106ABLE(Q) false +#endif + // Element identifiers. Positive values are hotends. Negative values are other heaters or coolers. typedef enum : int_fast8_t { H_REDUNDANT = HID_REDUNDANT, From 4e1bfc4e0de1cbb09cdca0c2d72d92381688e108 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 23 Apr 2022 09:31:38 -0500 Subject: [PATCH 429/659] =?UTF-8?q?=F0=9F=8E=A8=20Misc.=20tweaks=20to=20HA?= =?UTF-8?q?Ls?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/AVR/pinsDebug.h | 70 ++++++++++------------ Marlin/src/HAL/AVR/pinsDebug_Teensyduino.h | 9 +-- Marlin/src/HAL/DUE/pinsDebug.h | 3 +- Marlin/src/HAL/LINUX/HAL.cpp | 3 +- Marlin/src/HAL/LINUX/pinsDebug.h | 31 +++++----- Marlin/src/HAL/LPC1768/pinsDebug.h | 9 +-- Marlin/src/HAL/NATIVE_SIM/pinsDebug.h | 30 ++++------ Marlin/src/HAL/STM32/pinsDebug.h | 3 +- Marlin/src/HAL/STM32F1/pinsDebug.h | 26 ++++---- Marlin/src/HAL/TEENSY35_36/pinsDebug.h | 8 +-- Marlin/src/HAL/TEENSY40_41/pinsDebug.h | 18 +++--- Marlin/src/pins/pinsDebug.h | 4 +- buildroot/tests/at90usb1286_cdc | 2 +- buildroot/tests/at90usb1286_dfu | 2 +- 14 files changed, 100 insertions(+), 118 deletions(-) diff --git a/Marlin/src/HAL/AVR/pinsDebug.h b/Marlin/src/HAL/AVR/pinsDebug.h index 3fe877cd00..accd3c663f 100644 --- a/Marlin/src/HAL/AVR/pinsDebug.h +++ b/Marlin/src/HAL/AVR/pinsDebug.h @@ -109,7 +109,7 @@ void PRINT_ARRAY_NAME(uint8_t x) { * Print a pin's PWM status. * Return true if it's currently a PWM pin. */ -static bool pwm_status(uint8_t pin) { +bool pwm_status(uint8_t pin) { char buffer[20]; // for the sprintf statements switch (digitalPinToTimer_DEBUG(pin)) { @@ -232,12 +232,12 @@ const volatile uint8_t* const PWM_OCR[][3] PROGMEM = { #define OCR_VAL(T, L) pgm_read_word(&PWM_OCR[T][L]) -static void err_is_counter() { SERIAL_ECHOPGM(" non-standard PWM mode"); } -static void err_is_interrupt() { SERIAL_ECHOPGM(" compare interrupt enabled"); } -static void err_prob_interrupt() { SERIAL_ECHOPGM(" overflow interrupt enabled"); } -static void print_is_also_tied() { SERIAL_ECHOPGM(" is also tied to this pin"); SERIAL_ECHO_SP(14); } +void err_is_counter() { SERIAL_ECHOPGM(" non-standard PWM mode"); } +void err_is_interrupt() { SERIAL_ECHOPGM(" compare interrupt enabled"); } +void err_prob_interrupt() { SERIAL_ECHOPGM(" overflow interrupt enabled"); } +void print_is_also_tied() { SERIAL_ECHOPGM(" is also tied to this pin"); SERIAL_ECHO_SP(14); } -inline void com_print(const uint8_t N, const uint8_t Z) { +void com_print(const uint8_t N, const uint8_t Z) { const uint8_t *TCCRA = (uint8_t*)TCCR_A(N); SERIAL_ECHOPGM(" COM", AS_DIGIT(N)); SERIAL_CHAR(Z); @@ -279,7 +279,7 @@ void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N - if (TEST(*TMSK, TOIE)) err_prob_interrupt(); } -static void pwm_details(uint8_t pin) { +void pwm_details(uint8_t pin) { switch (digitalPinToTimer_DEBUG(pin)) { #if ABTEST(0) @@ -353,47 +353,41 @@ static void pwm_details(uint8_t pin) { } // pwm_details #ifndef digitalRead_mod // Use Teensyduino's version of digitalRead - it doesn't disable the PWMs - int digitalRead_mod(const int8_t pin) { // same as digitalRead except the PWM stop section has been removed + int digitalRead_mod(const pin_t pin) { // same as digitalRead except the PWM stop section has been removed const uint8_t port = digitalPinToPort_DEBUG(pin); return (port != NOT_A_PIN) && (*portInputRegister(port) & digitalPinToBitMask_DEBUG(pin)) ? HIGH : LOW; } #endif -#ifndef PRINT_PORT +void print_port(const pin_t pin) { // print port number + #ifdef digitalPinToPort_DEBUG + uint8_t x; + SERIAL_ECHOPGM(" Port: "); + #if AVR_AT90USB1286_FAMILY + x = (pin == 46 || pin == 47) ? 'E' : digitalPinToPort_DEBUG(pin) + 64; + #else + x = digitalPinToPort_DEBUG(pin) + 64; + #endif + SERIAL_CHAR(x); - void print_port(int8_t pin) { // print port number - #ifdef digitalPinToPort_DEBUG - uint8_t x; - SERIAL_ECHOPGM(" Port: "); - #if AVR_AT90USB1286_FAMILY - x = (pin == 46 || pin == 47) ? 'E' : digitalPinToPort_DEBUG(pin) + 64; - #else - x = digitalPinToPort_DEBUG(pin) + 64; - #endif - SERIAL_CHAR(x); - - #if AVR_AT90USB1286_FAMILY - if (pin == 46) - x = '2'; - else if (pin == 47) - x = '3'; - else { - uint8_t temp = digitalPinToBitMask_DEBUG(pin); - for (x = '0'; x < '9' && temp != 1; x++) temp >>= 1; - } - #else + #if AVR_AT90USB1286_FAMILY + if (pin == 46) + x = '2'; + else if (pin == 47) + x = '3'; + else { uint8_t temp = digitalPinToBitMask_DEBUG(pin); for (x = '0'; x < '9' && temp != 1; x++) temp >>= 1; - #endif - SERIAL_CHAR(x); + } #else - SERIAL_ECHO_SP(10); + uint8_t temp = digitalPinToBitMask_DEBUG(pin); + for (x = '0'; x < '9' && temp != 1; x++) temp >>= 1; #endif - } - - #define PRINT_PORT(p) print_port(p) - -#endif + SERIAL_CHAR(x); + #else + SERIAL_ECHO_SP(10); + #endif +} #define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%3d "), p); SERIAL_ECHO(buffer); }while(0) #define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0) diff --git a/Marlin/src/HAL/AVR/pinsDebug_Teensyduino.h b/Marlin/src/HAL/AVR/pinsDebug_Teensyduino.h index 582ae79ba7..c812d4fb11 100644 --- a/Marlin/src/HAL/AVR/pinsDebug_Teensyduino.h +++ b/Marlin/src/HAL/AVR/pinsDebug_Teensyduino.h @@ -22,11 +22,10 @@ #pragma once // -// some of the pin mapping functions of the Teensduino extension to the Arduino IDE -// do not function the same as the other Arduino extensions +// Some of the pin mapping functions of the Arduino IDE Teensduino extension +// function differently from other Arduino extensions. // - #define TEENSYDUINO_IDE //digitalPinToTimer(pin) function works like Arduino but Timers are not defined @@ -48,8 +47,6 @@ #define PE 5 #define PF 6 -#undef digitalPinToPort - const uint8_t PROGMEM digital_pin_to_port_PGM[] = { PD, // 0 - PD0 - INT0 - PWM PD, // 1 - PD1 - INT1 - PWM @@ -101,7 +98,7 @@ const uint8_t PROGMEM digital_pin_to_port_PGM[] = { PE, // 47 - PE3 (not defined in teensyduino) }; -#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) ) +#define digitalPinToPort(P) pgm_read_byte(digital_pin_to_port_PGM[P]) // digitalPinToBitMask(pin) is OK diff --git a/Marlin/src/HAL/DUE/pinsDebug.h b/Marlin/src/HAL/DUE/pinsDebug.h index 2aafe9be0c..1544853553 100644 --- a/Marlin/src/HAL/DUE/pinsDebug.h +++ b/Marlin/src/HAL/DUE/pinsDebug.h @@ -64,7 +64,6 @@ #define NUMBER_PINS_TOTAL PINS_COUNT #define digitalRead_mod(p) extDigitalRead(p) // AVR digitalRead disabled PWM before it read the pin -#define PRINT_PORT(p) #define PRINT_ARRAY_NAME(x) do{ sprintf_P(buffer, PSTR("%-" STRINGIFY(MAX_NAME_LENGTH) "s"), pin_array[x].name); SERIAL_ECHO(buffer); }while(0) #define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%02d"), p); SERIAL_ECHO(buffer); }while(0) #define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0) @@ -93,6 +92,8 @@ void pwm_details(int32_t pin) { } } +void print_port(const pin_t) {} + /** * DUE Board pin | PORT | Label * ----------------+--------+------- diff --git a/Marlin/src/HAL/LINUX/HAL.cpp b/Marlin/src/HAL/LINUX/HAL.cpp index db43f42eaa..6a767c76e7 100644 --- a/Marlin/src/HAL/LINUX/HAL.cpp +++ b/Marlin/src/HAL/LINUX/HAL.cpp @@ -52,8 +52,7 @@ uint8_t MarlinHAL::active_ch = 0; uint16_t MarlinHAL::adc_value() { const pin_t pin = analogInputToDigitalPin(active_ch); if (!VALID_PIN(pin)) return 0; - const uint16_t data = ((Gpio::get(pin) >> 2) & 0x3FF); - return data; // return 10bit value as Marlin expects + return uint16_t((Gpio::get(pin) >> 2) & 0x3FF); // return 10bit value as Marlin expects } void MarlinHAL::reboot() { /* Reset the application state and GPIO */ } diff --git a/Marlin/src/HAL/LINUX/pinsDebug.h b/Marlin/src/HAL/LINUX/pinsDebug.h index 7bfd97d024..e4ee27e8dd 100644 --- a/Marlin/src/HAL/LINUX/pinsDebug.h +++ b/Marlin/src/HAL/LINUX/pinsDebug.h @@ -28,36 +28,33 @@ * Translation of routines & variables used by pinsDebug.h */ -#define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS -#define pwm_details(pin) NOOP // (do nothing) -#define pwm_status(pin) false // Print a pin's PWM status. Return true if it's currently a PWM pin. +#define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS #define IS_ANALOG(P) (DIGITAL_PIN_TO_ANALOG_PIN(P) >= 0 ? 1 : 0) #define digitalRead_mod(p) digitalRead(p) -#define PRINT_PORT(p) #define GET_ARRAY_PIN(p) pin_array[p].pin #define PRINT_ARRAY_NAME(x) do{ sprintf_P(buffer, PSTR("%-" STRINGIFY(MAX_NAME_LENGTH) "s"), pin_array[x].name); SERIAL_ECHO(buffer); }while(0) #define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%3d "), p); SERIAL_ECHO(buffer); }while(0) #define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0) -#define MULTI_NAME_PAD 16 // space needed to be pretty if not first name assigned to a pin +#define MULTI_NAME_PAD 16 // space needed to be pretty if not first name assigned to a pin // active ADC function/mode/code values for PINSEL registers -constexpr int8_t ADC_pin_mode(pin_t pin) { - return (-1); -} +constexpr int8_t ADC_pin_mode(pin_t pin) { return -1; } -int8_t get_pin_mode(pin_t pin) { - if (!VALID_PIN(pin)) return -1; - return 0; -} +int8_t get_pin_mode(const pin_t pin) { return VALID_PIN(pin) ? 0 : -1; } -bool GET_PINMODE(pin_t pin) { - int8_t pin_mode = get_pin_mode(pin); - if (pin_mode == -1 || pin_mode == ADC_pin_mode(pin)) // found an invalid pin or active analog pin +bool GET_PINMODE(const pin_t pin) { + const int8_t pin_mode = get_pin_mode(pin); + if (pin_mode == -1 || pin_mode == ADC_pin_mode(pin)) // Invalid pin or active analog pin return false; - return (Gpio::getMode(pin) != 0); //input/output state + return (Gpio::getMode(pin) != 0); // Input/output state } -bool GET_ARRAY_IS_DIGITAL(pin_t pin) { +bool GET_ARRAY_IS_DIGITAL(const pin_t pin) { return (!IS_ANALOG(pin) || get_pin_mode(pin) != ADC_pin_mode(pin)); } + +void pwm_details(const pin_t pin) {} +bool pwm_status(const pin_t) { return false; } + +void print_port(const pin_t) {} diff --git a/Marlin/src/HAL/LPC1768/pinsDebug.h b/Marlin/src/HAL/LPC1768/pinsDebug.h index a2f5c123a2..975511be9a 100644 --- a/Marlin/src/HAL/LPC1768/pinsDebug.h +++ b/Marlin/src/HAL/LPC1768/pinsDebug.h @@ -29,11 +29,8 @@ */ #define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS -#define pwm_details(pin) pin = pin // do nothing // print PWM details -#define pwm_status(pin) false //Print a pin's PWM status. Return true if it's currently a PWM pin. #define IS_ANALOG(P) (DIGITAL_PIN_TO_ANALOG_PIN(P) >= 0 ? 1 : 0) #define digitalRead_mod(p) extDigitalRead(p) -#define PRINT_PORT(p) #define GET_ARRAY_PIN(p) pin_array[p].pin #define PRINT_ARRAY_NAME(x) do{ sprintf_P(buffer, PSTR("%-" STRINGIFY(MAX_NAME_LENGTH) "s"), pin_array[x].name); SERIAL_ECHO(buffer); }while(0) #define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("P%d_%02d"), LPC176x::pin_port(p), LPC176x::pin_bit(p)); SERIAL_ECHO(buffer); }while(0) @@ -46,10 +43,14 @@ #endif bool GET_PINMODE(const pin_t pin) { - if (!LPC176x::pin_is_valid(pin) || LPC176x::pin_adc_enabled(pin)) // found an invalid pin or active analog pin + if (!LPC176x::pin_is_valid(pin) || LPC176x::pin_adc_enabled(pin)) // Invalid pin or active analog pin return false; return LPC176x::gpio_direction(pin); } #define GET_ARRAY_IS_DIGITAL(x) ((bool) pin_array[x].is_digital) + +void print_port(const pin_t) {} +void pwm_details(const pin_t) {} +bool pwm_status(const pin_t) { return false; } diff --git a/Marlin/src/HAL/NATIVE_SIM/pinsDebug.h b/Marlin/src/HAL/NATIVE_SIM/pinsDebug.h index aa90eb39a3..eeb8245641 100644 --- a/Marlin/src/HAL/NATIVE_SIM/pinsDebug.h +++ b/Marlin/src/HAL/NATIVE_SIM/pinsDebug.h @@ -27,35 +27,31 @@ */ #define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS -#define pwm_details(pin) pin = pin // do nothing // print PWM details -#define pwm_status(pin) false //Print a pin's PWM status. Return true if it's currently a PWM pin. #define IS_ANALOG(P) (DIGITAL_PIN_TO_ANALOG_PIN(P) >= 0 ? 1 : 0) #define digitalRead_mod(p) digitalRead(p) -#define PRINT_PORT(p) #define GET_ARRAY_PIN(p) pin_array[p].pin #define PRINT_ARRAY_NAME(x) do{ sprintf_P(buffer, PSTR("%-" STRINGIFY(MAX_NAME_LENGTH) "s"), pin_array[x].name); SERIAL_ECHO(buffer); }while(0) #define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%3d "), p); SERIAL_ECHO(buffer); }while(0) #define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0) #define MULTI_NAME_PAD 16 // space needed to be pretty if not first name assigned to a pin -// active ADC function/mode/code values for PINSEL registers -inline constexpr int8_t ADC_pin_mode(pin_t pin) { - return (-1); -} +// Active ADC function/mode/code values for PINSEL registers +constexpr int8_t ADC_pin_mode(pin_t pin) { return -1; } -inline int8_t get_pin_mode(pin_t pin) { - if (!VALID_PIN(pin)) return -1; - return 0; -} +int8_t get_pin_mode(const pin_t pin) { return VALID_PIN(pin) 0 : -1; } -inline bool GET_PINMODE(pin_t pin) { - int8_t pin_mode = get_pin_mode(pin); - if (pin_mode == -1 || pin_mode == ADC_pin_mode(pin)) // found an invalid pin or active analog pin +bool GET_PINMODE(const pin_t pin) { + const int8_t pin_mode = get_pin_mode(pin); + if (pin_mode == -1 || pin_mode == ADC_pin_mode(pin)) // Invalid pin or active analog pin return false; - return (Gpio::getMode(pin) != 0); //input/output state + return (Gpio::getMode(pin) != 0); // Input/output state } -inline bool GET_ARRAY_IS_DIGITAL(pin_t pin) { - return (!IS_ANALOG(pin) || get_pin_mode(pin) != ADC_pin_mode(pin)); +bool GET_ARRAY_IS_DIGITAL(const pin_t pin) { + return !IS_ANALOG(pin) || get_pin_mode(pin) != ADC_pin_mode(pin); } + +void print_port(const pin_t) {} +void pwm_details(const pin_t) {} +bool pwm_status(const pin_t) { return false; } diff --git a/Marlin/src/HAL/STM32/pinsDebug.h b/Marlin/src/HAL/STM32/pinsDebug.h index b12d621e98..13990a69f5 100644 --- a/Marlin/src/HAL/STM32/pinsDebug.h +++ b/Marlin/src/HAL/STM32/pinsDebug.h @@ -119,7 +119,6 @@ const XrefInfo pin_xref[] PROGMEM = { #define digitalRead_mod(Ard_num) extDigitalRead(Ard_num) // must use Arduino pin numbers when doing reads #define PRINT_PIN(Q) #define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0) -#define PRINT_PORT(ANUM) port_print(ANUM) #define DIGITAL_PIN_TO_ANALOG_PIN(ANUM) -1 // will report analog pin number in the print port routine // x is a variable used to search pin_array @@ -187,7 +186,7 @@ bool is_digital(const pin_t Ard_num) { return pin_mode == MODE_PIN_INPUT || pin_mode == MODE_PIN_OUTPUT; } -void port_print(const pin_t Ard_num) { +void print_port(const pin_t Ard_num) { char buffer[16]; pin_t Index; for (Index = 0; Index < NUMBER_PINS_TOTAL; Index++) diff --git a/Marlin/src/HAL/STM32F1/pinsDebug.h b/Marlin/src/HAL/STM32F1/pinsDebug.h index 7828479658..2142f0ebac 100644 --- a/Marlin/src/HAL/STM32F1/pinsDebug.h +++ b/Marlin/src/HAL/STM32F1/pinsDebug.h @@ -41,11 +41,9 @@ extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS]; #define NUMBER_PINS_TOTAL BOARD_NR_GPIO_PINS #define VALID_PIN(pin) (pin >= 0 && pin < BOARD_NR_GPIO_PINS) #define GET_ARRAY_PIN(p) pin_t(pin_array[p].pin) -#define pwm_status(pin) PWM_PIN(pin) #define digitalRead_mod(p) extDigitalRead(p) #define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%3hd "), int16_t(p)); SERIAL_ECHO(buffer); }while(0) #define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0) -#define PRINT_PORT(p) print_port(p) #define PRINT_ARRAY_NAME(x) do{ sprintf_P(buffer, PSTR("%-" STRINGIFY(MAX_NAME_LENGTH) "s"), pin_array[x].name); SERIAL_ECHO(buffer); }while(0) #define MULTI_NAME_PAD 21 // space needed to be pretty if not first name assigned to a pin @@ -54,20 +52,18 @@ extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS]; #define M43_NEVER_TOUCH(Q) (Q >= 9 && Q <= 12) // SERIAL/USB pins PA9(TX) PA10(RX) #endif -static int8_t get_pin_mode(pin_t pin) { - return VALID_PIN(pin) ? _GET_MODE(pin) : -1; -} +int8_t get_pin_mode(const pin_t pin) { return VALID_PIN(pin) ? _GET_MODE(pin) : -1; } -static pin_t DIGITAL_PIN_TO_ANALOG_PIN(pin_t pin) { +pin_t DIGITAL_PIN_TO_ANALOG_PIN(const pin_t pin) { if (!VALID_PIN(pin)) return -1; - int8_t adc_channel = int8_t(PIN_MAP[pin].adc_channel); + pin_t adc_channel = pin_t(PIN_MAP[pin].adc_channel); #ifdef NUM_ANALOG_INPUTS - if (adc_channel >= NUM_ANALOG_INPUTS) adc_channel = ADCx; + if (adc_channel >= NUM_ANALOG_INPUTS) adc_channel = (pin_t)ADCx; #endif - return pin_t(adc_channel); + return adc_channel; } -static bool IS_ANALOG(pin_t pin) { +bool IS_ANALOG(const pin_t pin) { if (!VALID_PIN(pin)) return false; if (PIN_MAP[pin].adc_channel != ADCx) { #ifdef NUM_ANALOG_INPUTS @@ -78,11 +74,11 @@ static bool IS_ANALOG(pin_t pin) { return false; } -static bool GET_PINMODE(const pin_t pin) { +bool GET_PINMODE(const pin_t pin) { return VALID_PIN(pin) && !IS_INPUT(pin); } -static bool GET_ARRAY_IS_DIGITAL(const int16_t array_pin) { +bool GET_ARRAY_IS_DIGITAL(const int16_t array_pin) { const pin_t pin = GET_ARRAY_PIN(array_pin); return (!IS_ANALOG(pin) #ifdef NUM_ANALOG_INPUTS @@ -93,7 +89,7 @@ static bool GET_ARRAY_IS_DIGITAL(const int16_t array_pin) { #include "../../inc/MarlinConfig.h" // Allow pins/pins.h to set density -static void pwm_details(const pin_t pin) { +void pwm_details(const pin_t pin) { if (PWM_PIN(pin)) { timer_dev * const tdev = PIN_MAP[pin].timer_device; const uint8_t channel = PIN_MAP[pin].timer_channel; @@ -113,7 +109,9 @@ static void pwm_details(const pin_t pin) { } } -static void print_port(pin_t pin) { +bool pwm_status(const pin_t pin) { return PWM_PIN(pin); } + +void print_port(const pin_t pin) { const char port = 'A' + char(pin >> 4); // pin div 16 const int16_t gbit = PIN_MAP[pin].gpio_bit; char buffer[8]; diff --git a/Marlin/src/HAL/TEENSY35_36/pinsDebug.h b/Marlin/src/HAL/TEENSY35_36/pinsDebug.h index 235c0e4a48..8526febf10 100644 --- a/Marlin/src/HAL/TEENSY35_36/pinsDebug.h +++ b/Marlin/src/HAL/TEENSY35_36/pinsDebug.h @@ -55,12 +55,12 @@ #define IS_ANALOG(P) ((P) >= analogInputToDigitalPin(0) && (P) <= analogInputToDigitalPin(9)) || ((P) >= analogInputToDigitalPin(12) && (P) <= analogInputToDigitalPin(20)) -void HAL_print_analog_pin(char buffer[], int8_t pin) { +void print_analog_pin(char buffer[], int8_t pin) { if (pin <= 23) sprintf_P(buffer, PSTR("(A%2d) "), int(pin - 14)); else if (pin <= 39) sprintf_P(buffer, PSTR("(A%2d) "), int(pin - 19)); } -void HAL_analog_pin_state(char buffer[], int8_t pin) { +void analog_pin_state(char buffer[], int8_t pin) { if (pin <= 23) sprintf_P(buffer, PSTR("Analog in =% 5d"), analogRead(pin - 14)); else if (pin <= 39) sprintf_P(buffer, PSTR("Analog in =% 5d"), analogRead(pin - 19)); } @@ -77,7 +77,7 @@ void HAL_analog_pin_state(char buffer[], int8_t pin) { * Print a pin's PWM status. * Return true if it's currently a PWM pin. */ -bool HAL_pwm_status(const int8_t pin) { +bool pwm_status(int8_t pin) { char buffer[20]; // for the sprintf statements switch (pin) { FTM_CASE(0,0); @@ -108,4 +108,4 @@ bool HAL_pwm_status(const int8_t pin) { SERIAL_ECHOPGM(" "); } -static void HAL_pwm_details(uint8_t pin) { /* TODO */ } +void pwm_details(uint8_t pin) { /* TODO */ } diff --git a/Marlin/src/HAL/TEENSY40_41/pinsDebug.h b/Marlin/src/HAL/TEENSY40_41/pinsDebug.h index c85a88c9ae..54f3cb5885 100644 --- a/Marlin/src/HAL/TEENSY40_41/pinsDebug.h +++ b/Marlin/src/HAL/TEENSY40_41/pinsDebug.h @@ -30,7 +30,6 @@ #define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS #define digitalRead_mod(p) extDigitalRead(p) // AVR digitalRead disabled PWM before it read the pin -#define PRINT_PORT(p) #define PRINT_ARRAY_NAME(x) do{ sprintf_P(buffer, PSTR("%-" STRINGIFY(MAX_NAME_LENGTH) "s"), pin_array[x].name); SERIAL_ECHO(buffer); }while(0) #define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%02d"), p); SERIAL_ECHO(buffer); }while(0) #define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0) @@ -39,7 +38,6 @@ #define VALID_PIN(pin) (pin >= 0 && pin < int8_t(NUMBER_PINS_TOTAL)) #define DIGITAL_PIN_TO_ANALOG_PIN(p) int(p - analogInputToDigitalPin(0)) #define IS_ANALOG(P) ((P) >= analogInputToDigitalPin(0) && (P) <= analogInputToDigitalPin(13)) || ((P) >= analogInputToDigitalPin(14) && (P) <= analogInputToDigitalPin(17)) -#define pwm_status(pin) HAL_pwm_status(pin) #define GET_PINMODE(PIN) (VALID_PIN(pin) && IS_OUTPUT(pin)) #define MULTI_NAME_PAD 16 // space needed to be pretty if not first name assigned to a pin @@ -120,12 +118,12 @@ const struct pwm_pin_info_struct pwm_pin_info[] = { #endif }; -void HAL_print_analog_pin(char buffer[], int8_t pin) { +void print_analog_pin(char buffer[], const pin_t pin) { if (pin <= 23) sprintf_P(buffer, PSTR("(A%2d) "), int(pin - 14)); else if (pin <= 41) sprintf_P(buffer, PSTR("(A%2d) "), int(pin - 24)); } -void HAL_analog_pin_state(char buffer[], int8_t pin) { +void analog_pin_state(char buffer[], const pin_t pin) { if (pin <= 23) sprintf_P(buffer, PSTR("Analog in =% 5d"), analogRead(pin - 14)); else if (pin <= 41) sprintf_P(buffer, PSTR("Analog in =% 5d"), analogRead(pin - 24)); } @@ -136,14 +134,14 @@ void HAL_analog_pin_state(char buffer[], int8_t pin) { * Print a pin's PWM status. * Return true if it's currently a PWM pin. */ -bool HAL_pwm_status(const int8_t pin) { +bool pwm_status(const pin_t pin) { char buffer[20]; // for the sprintf statements const struct pwm_pin_info_struct *info; - if (pin >= CORE_NUM_DIGITAL) return 0; - info = pwm_pin_info + pin; + if (pin >= CORE_NUM_DIGITAL) return false; - if (info->type == 0) return 0; + info = pwm_pin_info + pin; + if (info->type == 0) return false; /* TODO decode pwm value from timers */ // for now just indicate if output is set as pwm @@ -151,4 +149,6 @@ bool HAL_pwm_status(const int8_t pin) { return (*(portConfigRegister(pin)) == info->muxval); } -static void pwm_details(uint8_t pin) { /* TODO */ } +void pwm_details(const pin_t) { /* TODO */ } + +void print_port(const pin_t) {} diff --git a/Marlin/src/pins/pinsDebug.h b/Marlin/src/pins/pinsDebug.h index 25b883eee6..4a8928c1e5 100644 --- a/Marlin/src/pins/pinsDebug.h +++ b/Marlin/src/pins/pinsDebug.h @@ -206,7 +206,7 @@ inline void report_pin_state_extended(pin_t pin, const bool ignore, const bool e if (start_string) SERIAL_ECHOF(start_string); SERIAL_ECHOPGM("PIN: "); PRINT_PIN(pin); - PRINT_PORT(pin); + print_port(pin); if (int8_t(DIGITAL_PIN_TO_ANALOG_PIN(pin)) >= 0) PRINT_PIN_ANALOG(pin); // analog pin number else SERIAL_ECHO_SP(8); // add padding if not an analog pin } @@ -254,7 +254,7 @@ inline void report_pin_state_extended(pin_t pin, const bool ignore, const bool e if (start_string) SERIAL_ECHOF(start_string); SERIAL_ECHOPGM("PIN: "); PRINT_PIN(pin); - PRINT_PORT(pin); + print_port(pin); if (int8_t(DIGITAL_PIN_TO_ANALOG_PIN(pin)) >= 0) PRINT_PIN_ANALOG(pin); // analog pin number else SERIAL_ECHO_SP(8); // add padding if not an analog pin SERIAL_ECHOPGM(""); diff --git a/buildroot/tests/at90usb1286_cdc b/buildroot/tests/at90usb1286_cdc index 01d752db8b..7dcf8d541a 100755 --- a/buildroot/tests/at90usb1286_cdc +++ b/buildroot/tests/at90usb1286_cdc @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Build tests for AT90USB1286 ARMED +# Build tests for AT90USB1286 (CDC) # # exit on first failure diff --git a/buildroot/tests/at90usb1286_dfu b/buildroot/tests/at90usb1286_dfu index 75672a6a51..a753097694 100755 --- a/buildroot/tests/at90usb1286_dfu +++ b/buildroot/tests/at90usb1286_dfu @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Build tests for AT90USB1286 ARMED +# Build tests for AT90USB1286 (DFU) # # exit on first failure From f97a813a2ac315cd925c3651bd7c32d609e6d70f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 13 May 2023 18:09:48 -0500 Subject: [PATCH 430/659] =?UTF-8?q?=E2=9C=A8=20NUM=5FREDUNDANT=5FFANS=20to?= =?UTF-8?q?o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/temperature.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index d84b475765..685f5dab2f 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -471,7 +471,7 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); #if NUM_REDUNDANT_FANS if (fan == 0) { for (uint8_t f = REDUNDANT_PART_COOLING_FAN; f < REDUNDANT_PART_COOLING_FAN + NUM_REDUNDANT_FANS; ++f) - thermalManager.set_fan_speed(f, 0); + thermalManager.set_fan_speed(f, speed); } #endif From 4a2db0f7060bc95151eb8512266adaa013c57782 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 2 May 2023 18:15:23 -0500 Subject: [PATCH 431/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20ftd?= =?UTF-8?q?i=5Flanguage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/lcd/extui/ftdi_eve_touch_ui/generic/language_menu.cpp | 2 +- Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/language_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/language_menu.cpp index 499f741540..5d797f44df 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/language_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/language_menu.cpp @@ -56,7 +56,7 @@ void LanguageMenu::onRedraw(draw_mode_t) { bool LanguageMenu::onTouchEnd(uint8_t tag) { if (tag > 0 && tag <= NUM_LANGUAGES) { - lang = tag - 1; + ftdi_language = tag - 1; GOTO_SCREEN(StatusScreen); return true; } diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language.cpp index bf684e43f9..9ff738e45c 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language.cpp @@ -23,5 +23,5 @@ #include "../../../../MarlinCore.h" #if ENABLED(TOUCH_UI_FTDI_EVE) #include "language.h" - uint8_t lang = 0; + uint8_t ftdi_language = 0; #endif From 18e63ad880cefc210e4a92657bef389ebef67d49 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 14 May 2023 00:39:01 +0000 Subject: [PATCH 432/659] [cron] Bump distribution date (2023-05-14) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index f2258b55e7..64e5a6a99d 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-13" +//#define STRING_DISTRIBUTION_DATE "2023-05-14" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 3f3032fe33..bcddf2dbd1 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-13" + #define STRING_DISTRIBUTION_DATE "2023-05-14" #endif /** From 5201869a55ae838a24afe7b05cc028e1b4fdd532 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 2 May 2023 18:26:06 -0500 Subject: [PATCH 433/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20IA?= =?UTF-8?q?=20RTS=20refactor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lcd/extui/ia_creality/FileNavigator.cpp | 26 +- .../lcd/extui/ia_creality/creality_extui.cpp | 2094 ----------------- .../extui/ia_creality/ia_creality_extui.cpp | 2094 +++++++++++++++++ .../lcd/extui/ia_creality/ia_creality_extui.h | 184 +- 4 files changed, 2195 insertions(+), 2203 deletions(-) delete mode 100644 Marlin/src/lcd/extui/ia_creality/creality_extui.cpp create mode 100644 Marlin/src/lcd/extui/ia_creality/ia_creality_extui.cpp diff --git a/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp b/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp index 4e2d294a9b..6aa9b7c7c8 100644 --- a/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp +++ b/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp @@ -95,23 +95,23 @@ void FileNavigator::getFiles(uint16_t index) { // Clear currently drawn screen for (int i = 0; i < DISPLAY_FILES; i++) { for (int j = 0; j < 20; j++) - rtscheck.RTS_SndData(0, SDFILE_ADDR + (i * 20) + j); + rts.sendData(0, SDFILE_ADDR + (i * 20) + j); } for (int j = 0; j < 10; j++) { - rtscheck.RTS_SndData(0, Printfilename + j); // clear screen. - rtscheck.RTS_SndData(0, Choosefilename + j); // clear filename + rts.sendData(0, Printfilename + j); // clear screen. + rts.sendData(0, Choosefilename + j); // clear filename } for (int j = 0; j < 8; j++) - rtscheck.RTS_SndData(0, FilenameCount + j); + rts.sendData(0, FilenameCount + j); for (int j = 1; j <= DISPLAY_FILES; j++) { - rtscheck.RTS_SndData(10, FilenameIcon + j); - rtscheck.RTS_SndData(10, FilenameIcon1 + j); + rts.sendData(10, FilenameIcon + j); + rts.sendData(10, FilenameIcon1 + j); } if (currentindex == 0 && folderdepth > 0) { // Add a link to go up a folder files--; - rtscheck.RTS_SndData("Up Directory", SDFILE_ADDR); + rts.sendData("Up Directory", SDFILE_ADDR); fcnt++; } else if (currentindex == DISPLAY_FILES && folderdepth > 0) @@ -123,18 +123,18 @@ void FileNavigator::getFiles(uint16_t index) { if (filelen > 20) { char *buf = (char *)filelist.filename(); buf[18] = '\0'; // cutoff at screen edge - rtscheck.RTS_SndData(buf, (SDFILE_ADDR + (fcnt * 20))); + rts.sendData(buf, (SDFILE_ADDR + (fcnt * 20))); } else - rtscheck.RTS_SndData(filelist.filename(), (SDFILE_ADDR + (fcnt * 20))); + rts.sendData(filelist.filename(), (SDFILE_ADDR + (fcnt * 20))); if (filelist.isDir()) { - rtscheck.RTS_SndData((uint8_t)4, FilenameIcon + (fcnt+1)); - rtscheck.RTS_SndData((unsigned long)0x041F, (FilenameNature + ((1+fcnt) * 16))); // Change BG of selected line to Blue + rts.sendData((uint8_t)4, FilenameIcon + (fcnt+1)); + rts.sendData((unsigned long)0x041F, (FilenameNature + ((1+fcnt) * 16))); // Change BG of selected line to Blue } else { - rtscheck.RTS_SndData((uint8_t)0, FilenameIcon + (fcnt+1)); - rtscheck.RTS_SndData((unsigned long)0xFFFF, (FilenameNature + ((1+fcnt) * 16))); // white + rts.sendData((uint8_t)0, FilenameIcon + (fcnt+1)); + rts.sendData((unsigned long)0xFFFF, (FilenameNature + ((1+fcnt) * 16))); // white } SERIAL_ECHOLNPGM("-", seek, " '", filelist.filename(), "' '", currentfoldername, "", filelist.shortFilename(), "'\n"); fcnt++; diff --git a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp b/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp deleted file mode 100644 index 3ba8322f00..0000000000 --- a/Marlin/src/lcd/extui/ia_creality/creality_extui.cpp +++ /dev/null @@ -1,2094 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/* **************************************** - * lcd/extui/ia_creality/creality_extui.cpp - * **************************************** - * Extensible_UI implementation for Creality DWIN - * 10SPro, Max, CRX, and others - * Based original Creality release, ported to ExtUI for Marlin 2.0 - * Written by Insanity Automation, sponsored by Tiny Machines 3D - * - * ***************************************/ - -#include "../../../inc/MarlinConfigPre.h" - -#if DGUS_LCD_UI_IA_CREALITY - -#include "ia_creality_extui.h" -#include "FileNavigator.h" - -namespace ExtUI { - static uint16_t fileIndex = 0; - uint8_t recordcount = 0; - uint8_t waitway_lock = 0; - const float manual_feedrate_mm_m[] = MANUAL_FEEDRATE; - uint8_t startprogress = 0; - - char waitway = 0; - int16_t recnum = 0; - float ChangeMaterialbuf[2] = {0}; - - char NozzleTempStatus[3] = {0}; - - char PrinterStatusKey[2] = {0}; // PrinterStatusKey[1] value: 0 represents to keep temperature, 1 represents to heating , 2 stands for cooling , 3 stands for printing - // PrinterStatusKey[0] value: 0 reprensents 3D printer ready - - uint8_t AxisPagenum = 0; // 0 for 10mm, 1 for 1mm, 2 for 0.1mm - bool InforShowStatus = true; - bool TPShowStatus = false; // true for only opening time and percentage, false for closing time and percentage. - bool AutohomeKey = false; - uint8_t AutoHomeIconNum; - int16_t userConfValidation = 0; - - uint8_t lastPauseMsgState = 0; - - creality_dwin_settings_t Settings; - uint8_t dwin_settings_version = 1; - - bool reEntryPrevent = false; - uint8_t reEntryCount = 0; - uint16_t idleThrottling = 0; - - bool pause_resume_selected = false; - - #if HAS_PID_HEATING - uint16_t pid_hotendAutoTemp = 150; - uint16_t pid_bedAutoTemp = 70; - #endif - - #ifndef CUSTOM_MACHINE_NAME - #define CUSTOM_MACHINE_NAME MACHINE_NAME - #endif - #ifndef IA_CREALITY_BOOT_DELAY - #define IA_CREALITY_BOOT_DELAY 500 - #endif - - void onStartup() { - DWIN_SERIAL.begin(115200); - rtscheck.recdat.head[0] = rtscheck.snddat.head[0] = FHONE; - rtscheck.recdat.head[1] = rtscheck.snddat.head[1] = FHTWO; - ZERO(rtscheck.databuf); - - delay_ms(IA_CREALITY_BOOT_DELAY); // Delay to allow screen startup - SetTouchScreenConfiguration(); - rtscheck.RTS_SndData(StartSoundSet, SoundAddr); - delay_ms(400); // Delay to allow screen to configure - - onStatusChanged(CUSTOM_MACHINE_NAME " Ready"); - - rtscheck.RTS_SndData(100, FeedrateDisplay); - - /***************turn off motor*****************/ - rtscheck.RTS_SndData(11, FilenameIcon); - - /***************transmit temperature to screen*****************/ - rtscheck.RTS_SndData(0, NozzlePreheat); - rtscheck.RTS_SndData(0, BedPreheat); - rtscheck.RTS_SndData(getActualTemp_celsius(H0), NozzleTemp); - rtscheck.RTS_SndData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); - rtscheck.RTS_SndData(getActualTemp_celsius(BED), Bedtemp); - /***************transmit Fan speed to screen*****************/ - rtscheck.RTS_SndData(getActualFan_percent((fan_t)getActiveTool()), FanKeyIcon); - - /***************transmit Printer information to screen*****************/ - for (int16_t j = 0; j < 20; j++) // clean filename - rtscheck.RTS_SndData(0, MacVersion + j); - char sizebuf[20] = {0}; - sprintf(sizebuf, "%d X %d X %d", Y_BED_SIZE, X_BED_SIZE, Z_MAX_POS); - rtscheck.RTS_SndData(CUSTOM_MACHINE_NAME, MacVersion); - rtscheck.RTS_SndData(SHORT_BUILD_VERSION, SoftVersion); - rtscheck.RTS_SndData(sizebuf, PrinterSize); - rtscheck.RTS_SndData(WEBSITE_URL, CorpWebsite); - - /**************************some info init*******************************/ - rtscheck.RTS_SndData(0, PrintscheduleIcon); - rtscheck.RTS_SndData(0, PrintscheduleIcon + 1); - - /************************clean screen*******************************/ - for (int16_t i = 0; i < MaxFileNumber; i++) - for (int16_t j = 0; j < 10; j++) rtscheck.RTS_SndData(0, SDFILE_ADDR + i * 10 + j); - - for (int16_t j = 0; j < 10; j++) { - rtscheck.RTS_SndData(0, Printfilename + j); // clean screen. - rtscheck.RTS_SndData(0, Choosefilename + j); // clean filename - } - for (int16_t j = 0; j < 8; j++) rtscheck.RTS_SndData(0, FilenameCount + j); - for (int16_t j = 1; j <= MaxFileNumber; j++) { - rtscheck.RTS_SndData(10, FilenameIcon + j); - rtscheck.RTS_SndData(10, FilenameIcon1 + j); - } - } - - void onIdle() { - - while (rtscheck.RTS_RecData() > 0 && (rtscheck.recdat.data[0] != 0 || rtscheck.recdat.addr != 0)) rtscheck.RTS_HandleData(); - - if (reEntryPrevent && reEntryCount < 120) { - reEntryCount++; - return; - } - reEntryCount = 0; - - if (idleThrottling++ < 750) return; - - // Always send temperature data - rtscheck.RTS_SndData(getActualTemp_celsius(getActiveTool()), NozzleTemp); - rtscheck.RTS_SndData(getActualTemp_celsius(BED), Bedtemp); - rtscheck.RTS_SndData(getTargetTemp_celsius(getActiveTool()), NozzlePreheat); - rtscheck.RTS_SndData(getTargetTemp_celsius(BED), BedPreheat); - rtscheck.RTS_SndData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); - rtscheck.RTS_SndData(TERN0(HAS_MULTI_HOTEND, getTargetTemp_celsius(H1)), e2Preheat); - TERN_(HAS_MULTI_HOTEND, rtscheck.RTS_SndData(uint8_t(getActiveTool() + 1), ActiveToolVP)); - - if (awaitingUserConfirm() && (lastPauseMsgState != ExtUI::pauseModeStatus || userConfValidation > 99)) { - switch (ExtUI::pauseModeStatus) { - case PAUSE_MESSAGE_PARKING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_PAUSE_PRINT_PARKING)); break; - case PAUSE_MESSAGE_CHANGING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_INIT)); break; - case PAUSE_MESSAGE_UNLOAD: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_UNLOAD)); break; - case PAUSE_MESSAGE_WAITING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_ADVANCED_PAUSE_WAITING)); break; - case PAUSE_MESSAGE_INSERT: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_INSERT)); break; - case PAUSE_MESSAGE_LOAD: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_LOAD)); break; - case PAUSE_MESSAGE_PURGE: ExtUI::onUserConfirmRequired(GET_TEXT_F(TERN(ADVANCED_PAUSE_CONTINUOUS_PURGE, MSG_FILAMENT_CHANGE_CONT_PURGE, MSG_FILAMENT_CHANGE_PURGE))); break; - case PAUSE_MESSAGE_RESUME: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_RESUME)); break; - case PAUSE_MESSAGE_HEAT: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEAT)); break; - case PAUSE_MESSAGE_HEATING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEATING)); break; - case PAUSE_MESSAGE_OPTION: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_OPTION_HEADER)); break; - case PAUSE_MESSAGE_STATUS: break; - default: onUserConfirmRequired(PSTR("Confirm Continue")); break; - } - userConfValidation = 0; - } - else if (pause_resume_selected && !awaitingUserConfirm()) { - rtscheck.RTS_SndData(ExchangePageBase + 53, ExchangepageAddr); - pause_resume_selected = false; - userConfValidation = 0; - } - else if (awaitingUserConfirm()) { - if (pause_resume_selected) { - pause_resume_selected = false; - userConfValidation = 100; - } - else - userConfValidation++; - } - - reEntryPrevent = true; - idleThrottling = 0; - if (waitway && !commandsInQueue()) - waitway_lock++; - else - waitway_lock = 0; - - if (waitway_lock > 100) { - waitway_lock = 0; - waitway = 0; // clear waitway if nothing is going on - } - - switch (waitway) { - case 1: - if (isPositionKnown()) { - InforShowStatus = true; - rtscheck.RTS_SndData(ExchangePageBase + 54, ExchangepageAddr); - waitway = 0; - } - break; - - case 2: - if (isPositionKnown() && !commandsInQueue()) waitway = 0; - break; - - case 3: - //if(isPositionKnown() && (getActualTemp_celsius(BED) >= (getTargetTemp_celsius(BED)-1))) { - rtscheck.RTS_SndData(ExchangePageBase + 64, ExchangepageAddr); - waitway = 7; - //return; - //} - break; - - case 4: - if (AutohomeKey && isPositionKnown() && !commandsInQueue()) { // Manual Move Home Done - //rtscheck.RTS_SndData(ExchangePageBase + 71 + AxisPagenum, ExchangepageAddr); - AutohomeKey = false; - waitway = 0; - } - break; - case 5: - if (isPositionKnown() && !commandsInQueue()) { - InforShowStatus = true; - waitway = 0; - rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); // exchange to 78 page - } - break; - case 6: - if (!commandsInQueue()) { - setAxisPosition_mm(BED_TRAMMING_HEIGHT, axis_t(Z)); - waitway = 0; - } - break; - case 7: - if (!commandsInQueue()) waitway = 0; - break; - } - - TERN_(HAS_MESH, rtscheck.RTS_SndData(getLevelingActive() ? 3 : 2, AutoLevelIcon)); - TERN_(HAS_FILAMENT_SENSOR, rtscheck.RTS_SndData(getFilamentRunoutEnabled() ? 3 : 2, RunoutToggle)); - TERN_(CASE_LIGHT_ENABLE, rtscheck.RTS_SndData(getCaseLightState() ? 3 : 2, LedToggle)); - TERN_(POWER_LOSS_RECOVERY, rtscheck.RTS_SndData(getPowerLossRecoveryEnabled() ? 3 : 2, PowerLossToggle)); - - if (startprogress == 0) { - startprogress += 25; - delay_ms(3000); // Delay to show bootscreen - } - else if (startprogress < 250) { - if (isMediaInserted()) // Re init media as it happens too early on STM32 boards often - onMediaInserted(); - else - injectCommands(F("M22\nM21")); - startprogress = 254; - InforShowStatus = true; - TPShowStatus = false; - rtscheck.RTS_SndData(ExchangePageBase + 45, ExchangepageAddr); - reEntryPrevent = false; - return; - } - if (startprogress <= 100) - rtscheck.RTS_SndData(startprogress, StartIcon); - else - rtscheck.RTS_SndData(startprogress - 100, StartIcon + 1); - - //rtscheck.RTS_SndData((startprogress++) % 5, ExchFlmntIcon); - - if (isPrinting()) { - rtscheck.RTS_SndData(getActualFan_percent((fan_t)getActiveTool()), FanKeyIcon); - rtscheck.RTS_SndData(getProgress_seconds_elapsed() / 3600, Timehour); - rtscheck.RTS_SndData((getProgress_seconds_elapsed() % 3600) / 60, Timemin); - if (getProgress_percent() > 0) { - const uint16_t perc = getProgress_percent() + 1; - if (perc <= 50) { - rtscheck.RTS_SndData(uint16_t(perc) * 2, PrintscheduleIcon); - rtscheck.RTS_SndData(0, PrintscheduleIcon + 1); - } - else { - rtscheck.RTS_SndData(100, PrintscheduleIcon); - rtscheck.RTS_SndData(uint16_t(perc) * 2 - 100, PrintscheduleIcon + 1); - } - } - else { - rtscheck.RTS_SndData(0, PrintscheduleIcon); - rtscheck.RTS_SndData(0, PrintscheduleIcon + 1); - } - rtscheck.RTS_SndData(uint16_t(getProgress_percent()), Percentage); - } - else { // Not printing settings - rtscheck.RTS_SndData(map(constrain(Settings.display_volume, 0, 255), 0, 255, 0, 100), VolumeDisplay); - rtscheck.RTS_SndData(Settings.screen_brightness, DisplayBrightness); - rtscheck.RTS_SndData(Settings.standby_screen_brightness, DisplayStandbyBrightness); - rtscheck.RTS_SndData(Settings.standby_time_seconds, DisplayStandbySeconds); - if (Settings.display_standby) - rtscheck.RTS_SndData(3, DisplayStandbyEnableIndicator); - else - rtscheck.RTS_SndData(2, DisplayStandbyEnableIndicator); - - rtscheck.RTS_SndData(getAxisSteps_per_mm(X) * 10, StepMM_X); - rtscheck.RTS_SndData(getAxisSteps_per_mm(Y) * 10, StepMM_Y); - rtscheck.RTS_SndData(getAxisSteps_per_mm(Z) * 10, StepMM_Z); - rtscheck.RTS_SndData(getAxisSteps_per_mm(E0) * 10, StepMM_E); - - rtscheck.RTS_SndData(getAxisMaxAcceleration_mm_s2(X) / 100, Accel_X); - rtscheck.RTS_SndData(getAxisMaxAcceleration_mm_s2(Y) / 100, Accel_Y); - rtscheck.RTS_SndData(getAxisMaxAcceleration_mm_s2(Z) / 10, Accel_Z); - rtscheck.RTS_SndData(getAxisMaxAcceleration_mm_s2(E0), Accel_E); - - rtscheck.RTS_SndData(getAxisMaxFeedrate_mm_s(X), Feed_X); - rtscheck.RTS_SndData(getAxisMaxFeedrate_mm_s(Y), Feed_Y); - rtscheck.RTS_SndData(getAxisMaxFeedrate_mm_s(Z), Feed_Z); - rtscheck.RTS_SndData(getAxisMaxFeedrate_mm_s(E0), Feed_E); - - rtscheck.RTS_SndData(getAxisMaxJerk_mm_s(X) * 100, Jerk_X); - rtscheck.RTS_SndData(getAxisMaxJerk_mm_s(Y) * 100, Jerk_Y); - rtscheck.RTS_SndData(getAxisMaxJerk_mm_s(Z) * 100, Jerk_Z); - rtscheck.RTS_SndData(getAxisMaxJerk_mm_s(E0) * 100, Jerk_E); - - #if HAS_HOTEND_OFFSET - rtscheck.RTS_SndData(getNozzleOffset_mm(X, E1) * 10, T2Offset_X); - rtscheck.RTS_SndData(getNozzleOffset_mm(Y, E1) * 10, T2Offset_Y); - rtscheck.RTS_SndData(getNozzleOffset_mm(Z, E1) * 10, T2Offset_Z); - rtscheck.RTS_SndData(getAxisSteps_per_mm(E1) * 10, T2StepMM_E); - #endif - - #if HAS_BED_PROBE - rtscheck.RTS_SndData(getProbeOffset_mm(X) * 100, ProbeOffset_X); - rtscheck.RTS_SndData(getProbeOffset_mm(Y) * 100, ProbeOffset_Y); - #endif - - #if HAS_PID_HEATING - rtscheck.RTS_SndData(pid_hotendAutoTemp, HotendPID_AutoTmp); - rtscheck.RTS_SndData(pid_bedAutoTemp, BedPID_AutoTmp); - rtscheck.RTS_SndData(getPID_Kp(E0) * 10, HotendPID_P); - rtscheck.RTS_SndData(getPID_Ki(E0) * 10, HotendPID_I); - rtscheck.RTS_SndData(getPID_Kd(E0) * 10, HotendPID_D); - #if ENABLED(PIDTEMPBED) - rtscheck.RTS_SndData(getBedPID_Kp() * 10, BedPID_P); - rtscheck.RTS_SndData(getBedPID_Ki() * 10, BedPID_I); - rtscheck.RTS_SndData(getBedPID_Kd() * 10, BedPID_D); - #endif - #endif - } - - rtscheck.RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); - rtscheck.RTS_SndData(uint16_t(getFlow_percent(E0)), Flowrate); - - if (NozzleTempStatus[0] || NozzleTempStatus[2]) { // statuse of loadfilament and unloadfinement when temperature is less than - uint16_t IconTemp = getActualTemp_celsius(getActiveTool()) * 100 / getTargetTemp_celsius(getActiveTool()); - NOMORE(IconTemp, 100U); - rtscheck.RTS_SndData(IconTemp, HeatPercentIcon); - if (getActualTemp_celsius(getActiveTool()) > EXTRUDE_MINTEMP && NozzleTempStatus[0] != 0) { - NozzleTempStatus[0] = 0; - rtscheck.RTS_SndData(10 * ChangeMaterialbuf[0], FilamentUnit1); - rtscheck.RTS_SndData(10 * ChangeMaterialbuf[1], FilamentUnit2); - rtscheck.RTS_SndData(ExchangePageBase + 65, ExchangepageAddr); - } - else if (getActualTemp_celsius(getActiveTool()) >= getTargetTemp_celsius(getActiveTool()) && NozzleTempStatus[2]) { - NozzleTempStatus[2] = 0; - TPShowStatus = true; - rtscheck.RTS_SndData(4, ExchFlmntIcon); - rtscheck.RTS_SndData(ExchangePageBase + 83, ExchangepageAddr); - } - else if (NozzleTempStatus[2]) { - //rtscheck.RTS_SndData((startprogress++) % 5, ExchFlmntIcon); - } - } - - if (AutohomeKey) { - rtscheck.RTS_SndData(AutoHomeIconNum, AutoZeroIcon); - if (++AutoHomeIconNum > 9) AutoHomeIconNum = 0; - } - - if (isMediaInserted()) { - const uint16_t currPage = fileIndex == 0 ? 1 : CEIL(float(fileIndex) / float(DISPLAY_FILES)) + 1, - maxPageAdd = filenavigator.folderdepth ? 1 : 0, - maxPages = CEIL(float(filenavigator.maxFiles() + maxPageAdd) / float(DISPLAY_FILES) ); - - rtscheck.RTS_SndData(currPage, FilesCurentPage); - rtscheck.RTS_SndData(maxPages, FilesMaxPage); - } - else { - rtscheck.RTS_SndData(0, FilesCurentPage); - rtscheck.RTS_SndData(0, FilesMaxPage); - } - - if (rtscheck.recdat.addr != DisplayZaxis && rtscheck.recdat.addr != DisplayYaxis && rtscheck.recdat.addr != DisplayZaxis) { - rtscheck.RTS_SndData(10 * getAxisPosition_mm(axis_t(X)), DisplayXaxis); - rtscheck.RTS_SndData(10 * getAxisPosition_mm(axis_t(Y)), DisplayYaxis); - rtscheck.RTS_SndData(10 * getAxisPosition_mm(axis_t(Z)), DisplayZaxis); - } - reEntryPrevent = false; - } - - rx_datagram_state_t RTSSHOW::rx_datagram_state = DGUS_IDLE; - uint8_t RTSSHOW::rx_datagram_len = 0; - bool RTSSHOW::Initialized = false; - RTSSHOW::RTSSHOW() { - recdat.head[0] = snddat.head[0] = FHONE; - recdat.head[1] = snddat.head[1] = FHTWO; - ZERO(databuf); - } - - int16_t RTSSHOW::RTS_RecData() { - uint8_t receivedbyte; - while (DWIN_SERIAL.available()) - switch (rx_datagram_state) { - - case DGUS_IDLE: // Waiting for the first header byte - receivedbyte = DWIN_SERIAL.read(); - if (FHONE == receivedbyte) rx_datagram_state = DGUS_HEADER1_SEEN; - break; - - case DGUS_HEADER1_SEEN: // Waiting for the second header byte - receivedbyte = DWIN_SERIAL.read(); - rx_datagram_state = (FHTWO == receivedbyte) ? DGUS_HEADER2_SEEN : DGUS_IDLE; - break; - - case DGUS_HEADER2_SEEN: // Waiting for the length byte - rx_datagram_len = DWIN_SERIAL.read(); - //DEBUGLCDCOMM_ECHOPGM(" (", rx_datagram_len, ") "); - - // Telegram min len is 3 (command and one word of payload) - rx_datagram_state = WITHIN(rx_datagram_len, 3, DGUS_RX_BUFFER_SIZE) ? DGUS_WAIT_TELEGRAM : DGUS_IDLE; - break; - - case DGUS_WAIT_TELEGRAM: // wait for complete datagram to arrive. - if (DWIN_SERIAL.available() < rx_datagram_len) return -1; - - Initialized = true; // We've talked to it, so we defined it as initialized. - uint8_t command = DWIN_SERIAL.read(); - - //DEBUGLCDCOMM_ECHOPGM("# ", command); - - uint8_t readlen = rx_datagram_len - 1; // command is part of len. - uint8_t tmp[rx_datagram_len - 1]; - uint8_t *ptmp = tmp; - while (readlen--) { - receivedbyte = DWIN_SERIAL.read(); - //DEBUGLCDCOMM_ECHOPGM(" ", receivedbyte); - *ptmp++ = receivedbyte; - } - //DEBUGLCDCOMM_ECHOPGM(" # "); - // mostly we'll get this: 5A A5 03 82 4F 4B -- ACK on 0x82, so discard it. - if (command == VarAddr_W && 'O' == tmp[0] && 'K' == tmp[1]) { - rx_datagram_state = DGUS_IDLE; - break; - } - - /* AutoUpload, (and answer to) Command 0x83 : - | tmp[0 1 2 3 4 ... ] - | Example 5A A5 06 83 20 01 01 78 01 …… - | / / | | \ / | \ \ - | Header | | | | \_____\_ DATA (Words!) - | DatagramLen / VPAdr | - | Command DataLen (in Words) */ - if (command == VarAddr_R) { - const uint16_t vp = tmp[0] << 8 | tmp[1]; - - const uint8_t dlen = tmp[2] << 1; // Convert to Bytes. (Display works with words) - recdat.addr = vp; - recdat.len = tmp[2]; - for (uint16_t i = 0; i < dlen; i += 2) { - recdat.data[i / 2] = tmp[3 + i]; - recdat.data[i / 2] = (recdat.data[i / 2] << 8 ) | tmp[4 + i]; - } - - rx_datagram_state = DGUS_IDLE; - return 2; - break; - } - - // discard anything else - rx_datagram_state = DGUS_IDLE; - } - return -1; - } - - void RTSSHOW::RTS_SndData() { - if (snddat.head[0] == FHONE && snddat.head[1] == FHTWO && snddat.len >= 3) { - databuf[0] = snddat.head[0]; - databuf[1] = snddat.head[1]; - databuf[2] = snddat.len; - databuf[3] = snddat.command; - if (snddat.command == 0x80) { // to write data to the register - databuf[4] = snddat.addr; - for (int16_t i = 0; i < (snddat.len - 2); i++) databuf[5 + i] = snddat.data[i]; - } - else if (snddat.len == 3 && (snddat.command == 0x81)) { // to read data from the register - databuf[4] = snddat.addr; - databuf[5] = snddat.bytelen; - } - else if (snddat.command == 0x82) { // to write data to the variate - databuf[4] = snddat.addr >> 8; - databuf[5] = snddat.addr & 0xFF; - for (int16_t i = 0; i < (snddat.len - 3); i += 2) { - databuf[6 + i] = snddat.data[i / 2] >> 8; - databuf[7 + i] = snddat.data[i / 2] & 0xFF; - } - } - else if (snddat.len == 4 && (snddat.command == 0x83)) { // to read data from the variate - databuf[4] = snddat.addr >> 8; - databuf[5] = snddat.addr & 0xFF; - databuf[6] = snddat.bytelen; - } - for (int16_t i = 0; i < (snddat.len + 3); i++) { - DWIN_SERIAL.write(databuf[i]); - delay_us(1); - } - - memset(&snddat, 0, sizeof(snddat)); - ZERO(databuf); - snddat.head[0] = FHONE; - snddat.head[1] = FHTWO; - } - } - - void RTSSHOW::RTS_SndData(const String &s, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { - if (s.length() < 1) return; - RTS_SndData(s.c_str(), addr, cmd); - } - - void RTSSHOW::RTS_SndData(const char *str, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { - int16_t len = strlen(str); - constexpr int16_t maxlen = SizeofDatabuf - 6; - if (len > 0) { - if (len > maxlen) len = maxlen; - databuf[0] = FHONE; - databuf[1] = FHTWO; - databuf[2] = 3 + len; - databuf[3] = cmd; - databuf[4] = addr >> 8; - databuf[5] = addr & 0x00FF; - for (int16_t i = 0; i < len; i++) databuf[6 + i] = str[i]; - - for (int16_t i = 0; i < (len + 6); i++) { - DWIN_SERIAL.write(databuf[i]); - delay_us(1); - } - ZERO(databuf); - } - } - - void RTSSHOW::RTS_SndData(const char c, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { - snddat.command = cmd; - snddat.addr = addr; - snddat.data[0] = uint32_t(uint16_t(c) << 8); - snddat.len = 5; - RTS_SndData(); - } - - void RTSSHOW::RTS_SndData(const_float_t f, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { - int16_t n = f; - if (cmd == VarAddr_W) { - snddat.data[0] = n; - snddat.len = 5; - } - else if (cmd == RegAddr_W) { - snddat.data[0] = n; - snddat.len = 3; - } - else if (cmd == VarAddr_R) { - snddat.bytelen = n; - snddat.len = 4; - } - snddat.command = cmd; - snddat.addr = addr; - RTS_SndData(); - } - - void RTSSHOW::RTS_SndData(const int n, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { - if (cmd == VarAddr_W) { - if ((unsigned int)n > 0xFFFF) { - snddat.data[0] = n >> 16; - snddat.data[1] = n & 0xFFFF; - snddat.len = 7; - } - else { - snddat.data[0] = n; - snddat.len = 5; - } - } - else if (cmd == RegAddr_W) { - snddat.data[0] = n; - snddat.len = 3; - } - else if (cmd == VarAddr_R) { - snddat.bytelen = n; - snddat.len = 4; - } - snddat.command = cmd; - snddat.addr = addr; - RTS_SndData(); - } - - void RTSSHOW::RTS_SndData(const unsigned long n, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { - if (cmd == VarAddr_W) { - if (n > 0xFFFF) { - snddat.data[0] = n >> 16; - snddat.data[1] = n & 0xFFFF; - //snddat.data[0] = n >> 24; - //snddat.data[1] = n >> 16; - //snddat.data[2] = n >> 8; - //snddat.data[3] = n; - snddat.len = 7; - } - else { - snddat.data[0] = n; - snddat.len = 5; - } - } - else if (cmd == VarAddr_R) { - snddat.bytelen = n; - snddat.len = 4; - } - snddat.command = cmd; - snddat.addr = addr; - RTS_SndData(); - } - - void RTSSHOW::RTS_HandleData() { - int16_t Checkkey = -1; - if (waitway > 0) { // for waiting - memset(&recdat, 0, sizeof(recdat)); - recdat.head[0] = FHONE; - recdat.head[1] = FHTWO; - return; - } - for (int16_t i = 0; Addrbuf[i] != 0; i++) - if (recdat.addr == Addrbuf[i]) { - if (Addrbuf[i] == NzBdSet || Addrbuf[i] == NozzlePreheat || Addrbuf[i] == BedPreheat || Addrbuf[i] == Flowrate) - Checkkey = ManualSetTemp; - else if (WITHIN(Addrbuf[i], Stopprint, Resumeprint)) - Checkkey = PrintChoice; - else if (WITHIN(Addrbuf[i], AutoZero, DisplayZaxis)) - Checkkey = XYZEaxis; - else if (WITHIN(Addrbuf[i], FilamentUnit1, FilamentUnit2)) - Checkkey = Filament; - else - Checkkey = i; - break; - } - - switch (recdat.addr) { - case Flowrate: - case StepMM_X ... StepMM_E: - case ProbeOffset_X ... ProbeOffset_Y: - case HotendPID_AutoTmp ... BedPID_AutoTmp: - case HotendPID_P ... HotendPID_D: - case BedPID_P ... BedPID_D: - case T2Offset_X ... T2StepMM_E: - case Accel_X ... Accel_E: - case Feed_X ... Feed_E: - case Jerk_X ... Jerk_E: - case RunoutToggle: - case PowerLossToggle: - case FanKeyIcon: - case LedToggle: - case e2Preheat: Checkkey = ManualSetTemp; break; - case ProbeOffset_Z: Checkkey = Zoffset_Value; break; - case VolumeDisplay: Checkkey = VolumeDisplay; break; - case DisplayBrightness: Checkkey = DisplayBrightness; break; - case DisplayStandbyBrightness: Checkkey = DisplayStandbyBrightness; break; - case DisplayStandbySeconds: Checkkey = DisplayStandbySeconds; break; - default: - if (WITHIN(recdat.addr, AutolevelVal, 4400)) // (int16_t(AutolevelVal) + GRID_MAX_POINTS * 2) = 4400 with 5x5 mesh - Checkkey = AutolevelVal; - else if (WITHIN(recdat.addr, SDFILE_ADDR, SDFILE_ADDR + 10 * (FileNum + 1))) - Checkkey = Filename; - break; - } - - if (Checkkey < 0) { - memset(&recdat, 0, sizeof(recdat)); - recdat.head[0] = FHONE; - recdat.head[1] = FHTWO; - return; - } - - constexpr float lfrb[4] = BED_TRAMMING_INSET_LFRB; - - switch (Checkkey) { - case Printfile: - if (recdat.data[0] == 1) { // card - InforShowStatus = false; - filenavigator.getFiles(0); - fileIndex = 0; - recordcount = 0; - RTS_SndData(ExchangePageBase + 46, ExchangepageAddr); - } - else if (recdat.data[0] == 2) { // return after printing result. - InforShowStatus = true; - TPShowStatus = false; - stopPrint(); - injectCommands(F("M84")); - RTS_SndData(11, FilenameIcon); - RTS_SndData(0, PrintscheduleIcon); - RTS_SndData(0, PrintscheduleIcon + 1); - RTS_SndData(0, Percentage); - delay_ms(2); - RTS_SndData(0, Timehour); - RTS_SndData(0, Timemin); - - RTS_SndData(ExchangePageBase + 45, ExchangepageAddr); // exchange to 45 page - } - else if (recdat.data[0] == 3) { // Temperature control - InforShowStatus = true; - TPShowStatus = false; - if (getTargetFan_percent((fan_t)getActiveTool()) == 0) - RTS_SndData(ExchangePageBase + 58, ExchangepageAddr); // exchange to 58 page, the fans off - else - RTS_SndData(ExchangePageBase + 57, ExchangepageAddr); // exchange to 57 page, the fans on - } - else if (recdat.data[0] == 4) { // Settings - InforShowStatus = false; - } - break; - - case Adjust: - if (recdat.data[0] == 1) { - InforShowStatus = false; - } - else if (recdat.data[0] == 2) { - InforShowStatus = true; - if (PrinterStatusKey[1] == 3) // during heating - RTS_SndData(ExchangePageBase + 53, ExchangepageAddr); - else if (PrinterStatusKey[1] == 4) - RTS_SndData(ExchangePageBase + 54, ExchangepageAddr); - else - RTS_SndData(ExchangePageBase + 53, ExchangepageAddr); - } - else if (recdat.data[0] == 3) - setTargetFan_percent(getTargetFan_percent((fan_t)getActiveTool()) != 0 ? 100 : 0, FAN0); - - break; - - case Feedrate: - setFeedrate_percent(recdat.data[0]); - break; - - case PrintChoice: - if (recdat.addr == Stopprint) { - if (recdat.data[0] == 240) { // no - RTS_SndData(ExchangePageBase + 53, ExchangepageAddr); - } - else { - RTS_SndData(ExchangePageBase + 45, ExchangepageAddr); - RTS_SndData(0, Timehour); - RTS_SndData(0, Timemin); - stopPrint(); - } - } - else if (recdat.addr == Pauseprint) { - if (recdat.data[0] != 0xF1) - break; - - RTS_SndData(ExchangePageBase + 54, ExchangepageAddr); - pausePrint(); - } - else if (recdat.addr == Resumeprint && recdat.data[0] == 1) { - resumePrint(); - - PrinterStatusKey[1] = 0; - InforShowStatus = true; - - RTS_SndData(ExchangePageBase + 53, ExchangepageAddr); - } - if (recdat.addr == Resumeprint && recdat.data[0] == 2) { // warming - resumePrint(); - NozzleTempStatus[2] = 1; - PrinterStatusKey[1] = 0; - InforShowStatus = true; - RTS_SndData(ExchangePageBase + 82, ExchangepageAddr); - } - break; - - case Zoffset: - float tmp_zprobe_offset; - if (recdat.data[0] >= 32768) - tmp_zprobe_offset = (float(recdat.data[0]) - 65536) / 100; - else - tmp_zprobe_offset = float(recdat.data[0]) / 100; - if (WITHIN((tmp_zprobe_offset), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { - int16_t tmpSteps = mmToWholeSteps(getZOffset_mm() - tmp_zprobe_offset, axis_t(Z)); - if (tmpSteps == 0) tmpSteps = getZOffset_mm() < tmp_zprobe_offset ? 1 : -1; - smartAdjustAxis_steps(-tmpSteps, axis_t(Z), false); - char zOffs[20], tmp1[11]; - sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); - onStatusChanged(zOffs); - } - else { - onStatusChanged(F("Requested Offset Beyond Limits")); - } - - rtscheck.RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); - break; - - case TempControl: - if (recdat.data[0] == 0) { - InforShowStatus = true; - TPShowStatus = false; - } - else if (recdat.data[0] == 1) { - if (getTargetFan_percent((fan_t)getActiveTool()) == 0) - RTS_SndData(ExchangePageBase + 60, ExchangepageAddr); // exchange to 60 page, the fans off - else - RTS_SndData(ExchangePageBase + 59, ExchangepageAddr); // exchange to 59 page, the fans on - } - else if (recdat.data[0] == 2) { - InforShowStatus = true; - } - else if (recdat.data[0] == 3) { - if (getTargetFan_percent((fan_t)getActiveTool()) == 0) { // turn on the fan - setTargetFan_percent(100, FAN0); - RTS_SndData(ExchangePageBase + 57, ExchangepageAddr); // exchange to 57 page, the fans on - } - else { // turn off the fan - setTargetFan_percent(0, FAN0); - RTS_SndData(ExchangePageBase + 58, ExchangepageAddr); // exchange to 58 page, the fans on - } - } - else if (recdat.data[0] == 5) { // PLA mode - setTargetTemp_celsius(PREHEAT_1_TEMP_HOTEND, getActiveTool()); - setTargetTemp_celsius(PREHEAT_1_TEMP_BED, BED); - RTS_SndData(PREHEAT_1_TEMP_HOTEND, NozzlePreheat); - RTS_SndData(PREHEAT_1_TEMP_BED, BedPreheat); - } - else if (recdat.data[0] == 6) { // ABS mode - setTargetTemp_celsius(PREHEAT_2_TEMP_HOTEND, getActiveTool()); - setTargetTemp_celsius(PREHEAT_2_TEMP_BED, BED); - RTS_SndData(PREHEAT_2_TEMP_HOTEND, NozzlePreheat); - RTS_SndData(PREHEAT_2_TEMP_BED, BedPreheat); - } - else if (recdat.data[0] == 0xF1) { - //InforShowStatus = true; - #if FAN_COUNT > 0 - for (uint8_t i = 0; i < FAN_COUNT; i++) setTargetFan_percent(0, (fan_t)i); - #endif - setTargetTemp_celsius(0.0, H0); - TERN_(HAS_MULTI_HOTEND, setTargetTemp_celsius(0.0, H1)); - setTargetTemp_celsius(0.0, BED); - RTS_SndData(0, NozzlePreheat); delay_ms(1); - RTS_SndData(0, BedPreheat); delay_ms(1); - RTS_SndData(ExchangePageBase + 57, ExchangepageAddr); - PrinterStatusKey[1] = 2; - } - break; - - case ManualSetTemp: - if (recdat.addr == NzBdSet) { - if (recdat.data[0] == 0) { - if (getTargetFan_percent((fan_t)getActiveTool()) == 0) - RTS_SndData(ExchangePageBase + 58, ExchangepageAddr); // exchange to 58 page, the fans off - else - RTS_SndData(ExchangePageBase + 57, ExchangepageAddr); // exchange to 57 page, the fans on - } - else if (recdat.data[0] == 1) { - setTargetTemp_celsius(0.0, getActiveTool()); - RTS_SndData(0, NozzlePreheat); - } - else if (recdat.data[0] == 2) { - setTargetTemp_celsius(0.0, BED); - RTS_SndData(0, BedPreheat); - } - } - else if (recdat.addr == NozzlePreheat) { - setTargetTemp_celsius(float(recdat.data[0]), H0); - } - #if HAS_MULTI_HOTEND - else if (recdat.addr == e2Preheat) { - setTargetTemp_celsius(float(recdat.data[0]), H1); - } - #endif - else if (recdat.addr == BedPreheat) { - setTargetTemp_celsius(float(recdat.data[0]), BED); - } - else if (recdat.addr == Flowrate) { - setFlow_percent(int16_t(recdat.data[0]), getActiveTool()); - } - - #if HAS_PID_HEATING - else if (recdat.addr == HotendPID_AutoTmp) { - pid_hotendAutoTemp = uint16_t(recdat.data[0]); - } - else if (recdat.addr == BedPID_AutoTmp) { - pid_bedAutoTemp = uint16_t(recdat.data[0]); - } - #endif - - else if (recdat.addr == Accel_X) { - setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 100, X); - } - else if (recdat.addr == Accel_Y) { - setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 100, Y); - } - else if (recdat.addr == Accel_Z) { - setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 10, Z); - } - else if (recdat.addr == Accel_E) { - setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]), E0); - setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]), E1); - } - - else if (recdat.addr == Feed_X) { - setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), X); - } - else if (recdat.addr == Feed_Y) { - setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), Y); - } - else if (recdat.addr == Feed_Z) { - setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), Z); - } - else if (recdat.addr == Feed_E) { - setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), E0); - setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), E1); - } - else if (recdat.addr == FanKeyIcon) { - setTargetFan_percent(uint16_t(recdat.data[0]), (fan_t)getActiveTool()); - } - else { - float tmp_float_handling; - if (recdat.data[0] >= 32768) - tmp_float_handling = (float(recdat.data[0]) - 65536) / 100; - else - tmp_float_handling = float(recdat.data[0]) / 100; - if (recdat.addr == StepMM_X) { - setAxisSteps_per_mm(tmp_float_handling * 10, X); - } - else if (recdat.addr == StepMM_Y) { - setAxisSteps_per_mm(tmp_float_handling * 10, Y); - } - else if (recdat.addr == StepMM_Z) { - setAxisSteps_per_mm(tmp_float_handling * 10, Z); - } - else if (recdat.addr == StepMM_E) { - setAxisSteps_per_mm(tmp_float_handling * 10, E0); - #if DISABLED(DUAL_X_CARRIAGE) - setAxisSteps_per_mm(tmp_float_handling * 10, E1); - #endif - } - #if ENABLED(DUAL_X_CARRIAGE) - else if (recdat.addr == T2StepMM_E) { - setAxisSteps_per_mm(tmp_float_handling * 10, E1); - } - else if (recdat.addr == T2Offset_X) { - setNozzleOffset_mm(tmp_float_handling * 10, X, E1); - } - else if (recdat.addr == T2Offset_Y) { - setNozzleOffset_mm(tmp_float_handling * 10, Y, E1); - } - else if (recdat.addr == T2Offset_Z) { - setNozzleOffset_mm(tmp_float_handling * 10, Z, E1); - } - #endif - #if HAS_BED_PROBE - else if (recdat.addr == ProbeOffset_X) { - setProbeOffset_mm(tmp_float_handling, X); - } - else if (recdat.addr == ProbeOffset_Y) { - setProbeOffset_mm(tmp_float_handling, Y); - } - else if (recdat.addr == ProbeOffset_Z) { - setProbeOffset_mm(tmp_float_handling, Z); - } - #endif - - #if ENABLED(CLASSIC_JERK) - else if (recdat.addr == Jerk_X) { - setAxisMaxJerk_mm_s(tmp_float_handling, X); - } - else if (recdat.addr == Jerk_Y) { - setAxisMaxJerk_mm_s(tmp_float_handling, Y); - } - else if (recdat.addr == Jerk_Z) { - setAxisMaxJerk_mm_s(tmp_float_handling, Z); - } - else if (recdat.addr == Jerk_E) { - setAxisMaxJerk_mm_s(tmp_float_handling, E0); - setAxisMaxJerk_mm_s(tmp_float_handling, E1); - } - #endif - - #if HAS_FILAMENT_SENSOR - else if (recdat.addr == RunoutToggle) { - setFilamentRunoutEnabled(!getFilamentRunoutEnabled()); - } - #endif - - #if ENABLED(POWER_LOSS_RECOVERY) - else if (recdat.addr == PowerLossToggle) { - setPowerLossRecoveryEnabled(!getPowerLossRecoveryEnabled()); - } - #endif - - #if ENABLED(CASE_LIGHT_ENABLE) - else if (recdat.addr == LedToggle) { - setCaseLightState(!getCaseLightState()); - } - #endif - - #if HAS_PID_HEATING - else if (recdat.addr == HotendPID_P) { - setPID(tmp_float_handling * 10, getPID_Ki(getActiveTool()), getPID_Kd(getActiveTool()), getActiveTool()); - } - else if (recdat.addr == HotendPID_I) { - setPID(getPID_Kp(getActiveTool()), tmp_float_handling * 10, getPID_Kd(getActiveTool()), getActiveTool()); - } - else if (recdat.addr == HotendPID_D) { - setPID(getPID_Kp(getActiveTool()), getPID_Ki(getActiveTool()), tmp_float_handling * 10, getActiveTool()); - } - #if ENABLED(PIDTEMPBED) - else if (recdat.addr == BedPID_P) { - setBedPID(tmp_float_handling * 10, getBedPID_Ki(), getBedPID_Kd()); - } - else if (recdat.addr == BedPID_I) { - setBedPID(getBedPID_Kp(), tmp_float_handling * 10, getBedPID_Kd()); - } - else if (recdat.addr == BedPID_D) { - setBedPID(getBedPID_Kp(), getBedPID_Ki(), tmp_float_handling * 10); - } - #endif - #endif // HAS_PID_HEATING - } - break; - - case Setting: - if (recdat.data[0] == 0) { // return to main page - InforShowStatus = true; - TPShowStatus = false; - } - else if (recdat.data[0] == 1) { // Bed Autoleveling - #if HAS_MESH - RTS_SndData(getLevelingActive() ? 3 : 2, AutoLevelIcon); - - if (ExtUI::getMeshValid()) { - uint8_t abl_probe_index = 0; - for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) - for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { - const bool zig = outer & 1; - const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; - rtscheck.RTS_SndData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + abl_probe_index * 2); - ++abl_probe_index; - } - } - #endif - RTS_SndData(10, FilenameIcon); // Motor Icon - injectCommands(isPositionKnown() ? F("G1F1000Z0.0") : F("G28\nG1F1000Z0.0")); - waitway = 2; - RTS_SndData(ExchangePageBase + 64, ExchangepageAddr); - } - else if (recdat.data[0] == 2) { // Exchange filament - InforShowStatus = true; - TPShowStatus = false; - ZERO(ChangeMaterialbuf); - ChangeMaterialbuf[1] = ChangeMaterialbuf[0] = 10; - RTS_SndData(10 * ChangeMaterialbuf[0], FilamentUnit1); // It's ChangeMaterialbuf for show, instead of current_position.e in them. - RTS_SndData(10 * ChangeMaterialbuf[1], FilamentUnit2); - RTS_SndData(getActualTemp_celsius(H0), NozzleTemp); - RTS_SndData(getTargetTemp_celsius(H0), NozzlePreheat); - rtscheck.RTS_SndData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); - rtscheck.RTS_SndData(TERN0(HAS_MULTI_HOTEND, getTargetTemp_celsius(H1)), e2Preheat); - delay_ms(2); - RTS_SndData(ExchangePageBase + 65, ExchangepageAddr); - } - else if (recdat.data[0] == 3) { // Move - AxisPagenum = 0; - RTS_SndData(ExchangePageBase + 71, ExchangepageAddr); - } - else if (recdat.data[0] == 4) { // Language - // Just loads language screen, now used for tools - } - else if (recdat.data[0] == 5) { // Printer Information - RTS_SndData(WEBSITE_URL, CorpWebsite); - } - else if (recdat.data[0] == 6) { // Diabalestepper - injectCommands(F("M84")); - RTS_SndData(11, FilenameIcon); - } - break; - - case ReturnBack: - if (recdat.data[0] == 1) { // return to the tool page - InforShowStatus = false; - RTS_SndData(ExchangePageBase + 63, ExchangepageAddr); - } - if (recdat.data[0] == 2) // return to the Level mode page - RTS_SndData(ExchangePageBase + 64, ExchangepageAddr); - break; - - case Bedlevel: - switch (recdat.data[0]) { - case 1: { // Z-axis to home - // Disallow Z homing if X or Y are unknown - injectCommands(isAxisPositionKnown(axis_t(X)) && isAxisPositionKnown(axis_t(Y)) ? F("G28Z\nG1F1500Z0.0") : F("G28\nG1F1500Z0.0")); - RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); - break; - } - case 2: { // Z-axis to Up - if (WITHIN((getZOffset_mm() + 0.1), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { - smartAdjustAxis_steps(getAxisSteps_per_mm(Z) / 10, axis_t(Z), false); - //setZOffset_mm(getZOffset_mm() + 0.1); - RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); - char zOffs[20], tmp1[11]; - sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); - onStatusChanged(zOffs); - } - break; - } - case 3: { // Z-axis to Down - if (WITHIN((getZOffset_mm() - 0.1), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { - smartAdjustAxis_steps(-getAxisSteps_per_mm(Z) / 10, axis_t(Z), false); - //babystepAxis_steps(int16_t(-getAxisSteps_per_mm(Z)) / 10, axis_t(Z)); - //setZOffset_mm(getZOffset_mm() - 0.1); - RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); - char zOffs[20], tmp1[11]; - sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); - onStatusChanged(zOffs); - } - break; - } - case 4: { // Assistant Level - TERN_(HAS_MESH, setLevelingActive(false)); - injectCommands(isPositionKnown() ? F("G1 F1000 Z0.0") : F("G28\nG1 F1000 Z0.0")); - waitway = 2; - RTS_SndData(ExchangePageBase + 84, ExchangepageAddr); - break; - } - case 5: { // AutoLevel "Measuring" Button - #if ENABLED(MESH_BED_LEVELING) - RTS_SndData(ExchangePageBase + 93, ExchangepageAddr); - #else - waitway = 3; // only for prohibiting to receive massage - RTS_SndData(3, AutolevelIcon); - uint8_t abl_probe_index = 0; - while (abl_probe_index < 25) { - rtscheck.RTS_SndData(0, AutolevelVal + abl_probe_index * 2); - ++abl_probe_index; - } - RTS_SndData(ExchangePageBase + 64, ExchangepageAddr); - injectCommands(F(MEASURING_GCODE)); - #endif - break; - } - - case 6: { // Assitant Level , Centre 1 - setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); - setAxisPosition_mm(X_CENTER, axis_t(X)); - setAxisPosition_mm(Y_CENTER, axis_t(Y)); - waitway = 6; - break; - } - case 7: { // Assitant Level , Front Left 2 - setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); - setAxisPosition_mm(X_MIN_BED + lfrb[0], axis_t(X)); - setAxisPosition_mm(Y_MIN_BED + lfrb[1], axis_t(Y)); - waitway = 6; - break; - } - case 8: { // Assitant Level , Front Right 3 - setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); - setAxisPosition_mm(X_MAX_BED - lfrb[2], axis_t(X)); - setAxisPosition_mm(Y_MIN_BED + lfrb[1], axis_t(Y)); - waitway = 6; - break; - } - case 9: { // Assitant Level , Back Right 4 - setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); - setAxisPosition_mm(X_MAX_BED - lfrb[2], axis_t(X)); - setAxisPosition_mm(Y_MAX_BED - lfrb[3], axis_t(Y)); - waitway = 6; - break; - } - case 10: { // Assitant Level , Back Left 5 - setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); - setAxisPosition_mm(X_MIN_BED + lfrb[0], axis_t(X)); - setAxisPosition_mm(Y_MAX_BED - lfrb[3], axis_t(Y)); - waitway = 6; - break; - } - case 11: { // Autolevel switch - #if HAS_MESH - const bool gla = !getLevelingActive(); - setLevelingActive(gla); - RTS_SndData(gla ? 3 : 2, AutoLevelIcon); - #endif - RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); - break; - } - case 12: { - injectCommands(F("G26R255")); - onStatusChanged(F("Beginning G26.. Heating")); - break; - } - case 13: { - injectCommands(F("G29S1")); - onStatusChanged(F("Begin Manual Mesh")); - break; - } - case 14: { - injectCommands(F("G29S2")); - onStatusChanged(F("Moving to Next Mesh Point")); - break; - } - case 15: { - injectCommands(F("M211S0\nG91\nG1Z-0.025\nG90\nM211S1")); - onStatusChanged(F("Moved down 0.025")); - break; - } - case 16: { - injectCommands(F("M211S0\nG91\nG1Z0.025\nG90\nM211S1")); - onStatusChanged(F("Moved up 0.025")); - break; - } - case 17: { - Settings.display_volume = 0; - Settings.display_sound = false; - SetTouchScreenConfiguration(); - break; - } - case 18: { - Settings.display_volume = 255; - Settings.display_sound = true; - SetTouchScreenConfiguration(); - break; - } - case 19: { - Settings.screen_brightness = 10; - SetTouchScreenConfiguration(); - break; - } - case 20: { - Settings.screen_brightness = 100; - SetTouchScreenConfiguration(); - break; - } - case 21: { - Settings.display_standby ^= true; - SetTouchScreenConfiguration(); - break; - } - case 22: { - Settings.screen_rotation = Settings.screen_rotation == 10 ? 0 : 10; - SetTouchScreenConfiguration(); - break; - } - case 23: { // Set IDEX Autopark - injectCommands(F("M605S1\nG28X\nG1X0")); - break; - } - case 24: { // Set IDEX Duplication - injectCommands(F("M605S1\nT0\nG28\nM605S2\nG28X\nG1X0")); - break; - } - case 25: { // Set IDEX Mirrored Duplication - injectCommands(F("M605S1\nT0\nG28\nM605S2\nG28X\nG1X0\nM605S3")); - break; - } - case 26: { // Set IDEX Full Control - injectCommands(F("M605S0\nG28X")); - break; - } - case 27: { // Change Tool - setActiveTool(getActiveTool() == E0 ? E1 : E0, !isAxisPositionKnown(X)); - break; - } - default: break; - } - - RTS_SndData(10, FilenameIcon); - break; - - case XYZEaxis: { - axis_t axis = X; - float min = 0.0f, max = 0.0f; - waitway = 4; - if (recdat.addr == DisplayXaxis) { - axis = X; - min = X_MIN_POS; - max = X_MAX_POS; - } - else if (recdat.addr == DisplayYaxis) { - axis = Y; - min = Y_MIN_POS; - max = Y_MAX_POS; - } - else if (recdat.addr == DisplayZaxis) { - axis = Z; - min = Z_MIN_POS; - max = Z_MAX_POS; - } - else if (recdat.addr == AutoZero) { - if (recdat.data[0] == 3) { // autohome - waitway = 4; - injectCommands(F("G28\nG1 F1000 Z10")); - InforShowStatus = AutohomeKey = true; - AutoHomeIconNum = 0; - RTS_SndData(10, FilenameIcon); - } - else { - AxisPagenum = recdat.data[0]; - waitway = 0; - } - break; - } - - float targetPos = float(recdat.data[0]) / 10; - LIMIT(targetPos, min, max); - setAxisPosition_mm(targetPos, axis); - waitway = 0; - RTS_SndData(10, FilenameIcon); - break; - } - - case Filament: - - uint16_t IconTemp; - if (recdat.addr == Exchfilament) { - if (getActualTemp_celsius(getActiveTool()) < EXTRUDE_MINTEMP && recdat.data[0] < 5) { - RTS_SndData(int16_t(EXTRUDE_MINTEMP), 0x1020); - delay_ms(5); - RTS_SndData(ExchangePageBase + 66, ExchangepageAddr); - break; - } - - switch (recdat.data[0]) { - case 1: { // Unload filament1 - setAxisPosition_mm(getAxisPosition_mm(E0) - ChangeMaterialbuf[0], E0); - break; - } - case 2: { // Load filament1 - setAxisPosition_mm(getAxisPosition_mm(E0) + ChangeMaterialbuf[0], E0); - break; - } - case 3: { // Unload filament2 - setAxisPosition_mm(getAxisPosition_mm(E1) - ChangeMaterialbuf[1], E1); - break; - } - case 4: { // Load filament2 - setAxisPosition_mm(getAxisPosition_mm(E1) + ChangeMaterialbuf[1], E1); - break; - } - case 5: { // sure to heat - NozzleTempStatus[0] = 1; - - setTargetTemp_celsius((PREHEAT_1_TEMP_HOTEND + 10), getActiveTool()); - IconTemp = getActualTemp_celsius(getActiveTool()) * 100 / getTargetTemp_celsius(getActiveTool()); - NOMORE(IconTemp, 100U); - RTS_SndData(IconTemp, HeatPercentIcon); - - RTS_SndData(getActualTemp_celsius(H0), NozzleTemp); - RTS_SndData(getTargetTemp_celsius(H0), NozzlePreheat); - rtscheck.RTS_SndData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); - rtscheck.RTS_SndData(TERN0(HAS_MULTI_HOTEND, getTargetTemp_celsius(H1)), e2Preheat); - delay_ms(5); - RTS_SndData(ExchangePageBase + 68, ExchangepageAddr); - break; - } - case 6: { // cancel to heat - RTS_SndData(ExchangePageBase + 65, ExchangepageAddr); - break; - } - case 0xF1: { // Sure to cancel heating - NozzleTempStatus[0] = 0; - delay_ms(1); - RTS_SndData(ExchangePageBase + 65, ExchangepageAddr); - break; - } - case 0xF0: // not to cancel heating - break; - } - RTS_SndData(10 * ChangeMaterialbuf[0], FilamentUnit1); // It's ChangeMaterialbuf for show, instead of current_position.e in them. - RTS_SndData(10 * ChangeMaterialbuf[1], FilamentUnit2); - } - else if (recdat.addr == FilamentUnit1) { - ChangeMaterialbuf[0] = float(recdat.data[0]) / 10; - } - else if (recdat.addr == FilamentUnit2) { - ChangeMaterialbuf[1] = float(recdat.data[0]) / 10; - } - break; - - case LanguageChoice: - - //if (recdat.data[0] == 1) settings.save(); else injectCommands(F("M300")); - - // may at some point use language change screens to save eeprom explicitly - switch (recdat.data[0]) { - case 0: { - injectCommands(F("M500")); - break; - } - case 1: { - RTS_SndData(ExchangePageBase + 94, ExchangepageAddr); - break; - } - - #if ENABLED(PIDTEMP) - case 2: { - onStatusChanged(F("Hotend PID Started")); - startPIDTune(static_cast(pid_hotendAutoTemp), getActiveTool()); - break; - } - #endif - - case 3: { - injectCommands(F("M502\nM500")); - break; - } - case 4: { - injectCommands(F("M999\nM280P0S160")); - break; - } - - case 5: { - #if ENABLED(PIDTEMPBED) - onStatusChanged(F("Bed PID Started")); - startBedPIDTune(static_cast(pid_bedAutoTemp)); - #endif - break; - } - case 6: { - injectCommands(F("M500")); - break; - } - default: break; - } - break; - - case No_Filament: - if (recdat.data[0] == 1) { // Filament is out, resume / resume selected on screen - if (ExtUI::pauseModeStatus != PAUSE_MESSAGE_PURGE && ExtUI::pauseModeStatus != PAUSE_MESSAGE_OPTION) { - // setPauseMenuResponse(PAUSE_RESPONSE_RESUME_PRINT); - setUserConfirmed(); - // PrinterStatusKey[1] = 3; - // pause_resume_selected = true; - } - else { - #if ENABLED(FILAMENT_RUNOUT_SENSOR) - bool runouton = false; - if (getFilamentRunoutState()) { - #if NUM_RUNOUT_SENSORS > 1 - if ((runouton = getFilamentRunoutEnabled(getActiveTool()))) - ExtUI::setFilamentRunoutEnabled(false, getActiveTool()); - #else - if ((runouton = getFilamentRunoutEnabled())) - ExtUI::setFilamentRunoutEnabled(false); - #endif - } - #else - constexpr bool runouton = false; - #endif - if (!runouton) { - setPauseMenuResponse(PAUSE_RESPONSE_RESUME_PRINT); - setUserConfirmed(); - PrinterStatusKey[1] = 3; - pause_resume_selected = true; - } - } - } - else if (recdat.data[0] == 0) { // Filamet is out, Cancel Selected - if (ExtUI::pauseModeStatus == PAUSE_MESSAGE_PURGE || ExtUI::pauseModeStatus == PAUSE_MESSAGE_OPTION) { - setPauseMenuResponse(PAUSE_RESPONSE_EXTRUDE_MORE); - setUserConfirmed(); - } - } - break; - - #if ENABLED(POWER_LOSS_RECOVERY) - case PwrOffNoF: - if (recdat.data[0] == 1) // Yes: continue to print the 3Dmode during power-off. - injectCommands(F("M1000")); - else if (recdat.data[0] == 2) // No - injectCommands(F("M1000C")); - break; - #endif - - case Volume: - if (recdat.data[0] < 0) - Settings.display_volume = 0; - else if (recdat.data[0] > 255) - Settings.display_volume = 0xFF; - else - Settings.display_volume = recdat.data[0]; - - if (Settings.display_volume == 0) { - RTS_SndData(0, VolumeIcon); - RTS_SndData(9, SoundIcon); - } - else { - RTS_SndData((Settings.display_volume + 1) / 32 - 1, VolumeIcon); - RTS_SndData(8, SoundIcon); - } - RTS_SndData(Settings.display_volume << 8, SoundAddr + 1); - break; - - case Filename: - if (isMediaInserted() && recdat.addr == FilenameChs) { - - recordcount = recdat.data[0] - 1; - if (filenavigator.currentindex == 0 && filenavigator.folderdepth > 0 && (fileIndex + recordcount) == 0) { - filenavigator.upDIR(); - filenavigator.getFiles(0); - fileIndex = 0; - return; - } - - if (filenavigator.currentindex == 0 && filenavigator.folderdepth > 0) - recordcount = recordcount - 1; // account for return dir link in file index - - for (int16_t j = 1; j <= 4; j++) { // Clear filename BG Color and Frame - RTS_SndData(0xFFFFUL, FilenameNature + j * 16); // white - RTS_SndData(10, FilenameIcon1 + j); // clean - } - for (int16_t j = 0; j < 10; j++) // clear current filename - RTS_SndData(0, Choosefilename + j); - - if (filenavigator.getIndexisDir(fileIndex + recordcount)) { - filenavigator.changeDIR((char *)filenavigator.getIndexName(fileIndex + recordcount)); - filenavigator.getFiles(0); - fileIndex = 0; - return; - } - else { - RTS_SndData(filenavigator.getIndexName(fileIndex + recordcount), Choosefilename); - RTS_SndData(0x87F0UL, FilenameNature + recdat.data[0] * 16); // Change BG of selected line to Light Green - RTS_SndData(6, FilenameIcon1 + recdat.data[0]); // show frame - } - } - else if (recdat.addr == FilenamePlay) { - if (recdat.data[0] == 1 && isMediaInserted()) { // for sure - printFile(filenavigator.getIndexName(fileIndex + recordcount)); - - for (int16_t j = 0; j < 10; j++) // clean screen. - RTS_SndData(0, Printfilename + j); - - RTS_SndData(filenavigator.getIndexName(fileIndex + recordcount), Printfilename); - - delay_ms(4); - - RTS_SndData(ExchangePageBase + 53, ExchangepageAddr); - - TPShowStatus = InforShowStatus = true; - PrinterStatusKey[0] = 1; - PrinterStatusKey[1] = 3; - fileIndex = 0; - recordcount = 0; - } - else if (recdat.data[0] == 2) { // Page Down - if ((fileIndex + DISPLAY_FILES) < (filenavigator.maxFiles() + (filenavigator.folderdepth != 0))) { - fileIndex = fileIndex + DISPLAY_FILES; - // if(filenavigator.folderdepth!=0 && fileIndex!=0) //Shift to acknowledge Return DIR button on first page - // filenavigator.getFiles(fileIndex-1); - // else - filenavigator.getFiles(fileIndex); - // filenavigator.getFiles(filenavigator.currentindex+1); - } - } - else if (recdat.data[0] == 3) { // Page Up - if (fileIndex >= DISPLAY_FILES) { - fileIndex = fileIndex - DISPLAY_FILES; - // if(filenavigator.folderdepth!=0 && fileIndex!=0) //Shift to acknowledge Return DIR button on first page - // filenavigator.getFiles(filenavigator.currentindex-DISPLAY_FILES); - // else - filenavigator.getFiles(fileIndex); - } - } - else if (recdat.data[0] == 4) { // Page Up - injectCommands(F("M22\nM21")); - } - else if (recdat.data[0] == 0) { // return to main page - InforShowStatus = true; - TPShowStatus = false; - } - } - break; - - case VolumeDisplay: { - if (recdat.data[0] == 0) { - Settings.display_volume = 0; - Settings.display_sound = false; - } - else if (recdat.data[0] > 100) { - Settings.display_volume = 255; - Settings.display_sound = true; - } - else { - Settings.display_volume = (uint8_t)map(constrain(recdat.data[0], 0, 100), 0, 100, 0, 255); - Settings.display_sound = true; - } - SetTouchScreenConfiguration(); - break; - } - - case DisplayBrightness: { - if (recdat.data[0] < 10) - Settings.screen_brightness = 10; - else if (recdat.data[0] > 100) - Settings.screen_brightness = 100; - else - Settings.screen_brightness = (uint8_t)recdat.data[0]; - SetTouchScreenConfiguration(); - break; - } - - case DisplayStandbyBrightness: { - if (recdat.data[0] < 10) - Settings.standby_screen_brightness = 10; - else if (recdat.data[0] > 100) - Settings.standby_screen_brightness = 100; - else - Settings.standby_screen_brightness = (uint8_t)recdat.data[0]; - SetTouchScreenConfiguration(); - break; - } - - case DisplayStandbySeconds: { - if (recdat.data[0] < 5) - Settings.standby_time_seconds = 5; - else if (recdat.data[0] > 100) - Settings.standby_time_seconds = 100; - else - Settings.standby_time_seconds = (uint8_t)recdat.data[0]; - SetTouchScreenConfiguration(); - break; - } - - case AutolevelVal: { - uint8_t meshPoint = (recdat.addr - AutolevelVal) / 2, - yPnt = floor(meshPoint / GRID_MAX_POINTS_X), - xPnt = meshPoint - (yPnt * GRID_MAX_POINTS_X); - if (yPnt % 2 != 0) xPnt = (GRID_MAX_POINTS_X - 1) - xPnt; // zag row - - float meshVal = float(recdat.data[0] - (recdat.data[0] >= 32768 ? 65536 : 0)) / 1000; - - LIMIT(meshVal, Z_PROBE_LOW_POINT, Z_CLEARANCE_BETWEEN_PROBES); - xy_uint8_t point = { xPnt, yPnt }; - setMeshPoint(point, meshVal); - rtscheck.RTS_SndData(meshVal * 1000, recdat.addr); - break; - } - - default: break; - } - - memset(&recdat, 0, sizeof(recdat)); - recdat.head[0] = FHONE; - recdat.head[1] = FHTWO; - } - - void WriteVariable(uint16_t adr, const void* values, uint8_t valueslen, bool isstr=false, char fillChar=' ') { - const char* myvalues = static_cast(values); - bool strend = !myvalues; - DWIN_SERIAL.write(FHONE); - DWIN_SERIAL.write(FHTWO); - DWIN_SERIAL.write(valueslen + 3); - DWIN_SERIAL.write(0x82); - DWIN_SERIAL.write(adr >> 8); - DWIN_SERIAL.write(adr & 0xFF); - while (valueslen--) { - char x; - if (!strend) x = *myvalues++; - if ((isstr && !x) || strend) { - strend = true; - x = fillChar; - } - DWIN_SERIAL.write(x); - } - } - - void SetTouchScreenConfiguration() { - // Main configuration (System_Config) - LIMIT(Settings.screen_brightness, 10, 100); // Prevent a possible all-dark screen - LIMIT(Settings.standby_time_seconds, 10, 655); // Prevent a possible all-dark screen for standby, yet also don't go higher than the DWIN limitation - - uint8_t cfg_bits = 0x0 - | _BV(7) // 7: Enable Control ... TERN0(DWINOS_4, _BV(7)) - | _BV(5) // 5: load 22 touch file - | _BV(4) // 4: auto-upload should always be enabled - | (Settings.display_sound ? _BV(3) : 0) // 3: audio - | (Settings.display_standby ? _BV(2) : 0) // 2: backlight on standby - | (Settings.screen_rotation == 10 ? _BV(1) : 0) // 1 & 0: Inversion - #if LCD_SCREEN_ROTATE == 90 - | _BV(0) // Portrait Mode or 800x480 display has 0 point rotated 90deg from 480x272 display - #elif LCD_SCREEN_ROTATE - #error "Only 90° rotation is supported for the selected LCD." - #endif - ; - - const uint8_t config_set[] = { 0x5A, 0x00, TERN(DWINOS_4, 0x00, 0xFF), cfg_bits }; - WriteVariable(0x80 /*System_Config*/, config_set, sizeof(config_set)); - - // Standby brightness (LED_Config) - uint16_t dwinStandbyTimeSeconds = 100 * Settings.standby_time_seconds; /* milliseconds, but divided by 10 (not 5 like the docs say) */ - const uint8_t brightness_set[] = { - Settings.screen_brightness /*% active*/, - Settings.standby_screen_brightness /*% standby*/, - static_cast(dwinStandbyTimeSeconds >> 8), - static_cast(dwinStandbyTimeSeconds) - }; - WriteVariable(0x82 /*LED_Config*/, brightness_set, sizeof(brightness_set)); - - if (!Settings.display_sound) { - rtscheck.RTS_SndData(0, VolumeIcon); - rtscheck.RTS_SndData(9, SoundIcon); - } - else { - rtscheck.RTS_SndData((Settings.display_volume + 1) / 32 - 1, VolumeIcon); - rtscheck.RTS_SndData(8, SoundIcon); - } - rtscheck.RTS_SndData(Settings.display_volume, VolumeIcon - 2); - rtscheck.RTS_SndData(Settings.display_volume << 8, SoundAddr + 1); - rtscheck.RTS_SndData(map(constrain(Settings.display_volume, 0, 255), 0, 255, 0, 100), VolumeDisplay); - rtscheck.RTS_SndData(Settings.screen_brightness, DisplayBrightness); - rtscheck.RTS_SndData(Settings.standby_screen_brightness, DisplayStandbyBrightness); - rtscheck.RTS_SndData(Settings.standby_time_seconds, DisplayStandbySeconds); - if (Settings.display_standby) - rtscheck.RTS_SndData(3, DisplayStandbyEnableIndicator); - else - rtscheck.RTS_SndData(2, DisplayStandbyEnableIndicator); - } - - void onPrinterKilled(FSTR_P const error, FSTR_P const component) { - rtscheck.RTS_SndData(ExchangePageBase + 88, ExchangepageAddr); - int16_t j = 0; - char outmsg[40]; - char killMsg[strlen_P(FTOP(error)) + strlen_P(FTOP(component)) + 3]; - sprintf_P(killMsg, PSTR(S_FMT ": " S_FMT), FTOP(error), FTOP(component)); - while (j < 4) { - outmsg[j] = '*'; - j++; - } - while (const char c = killMsg[j - 4]) { - outmsg[j] = c; - j++; - } - while (j < 40) { - outmsg[j] = '*'; - j++; - } - rtscheck.RTS_SndData(outmsg, MacVersion); - delay_ms(10); - } - - void onMediaInserted() { - filenavigator.reset(); - filenavigator.getFiles(0); - fileIndex = 0; - recordcount = 0; - } - - void onMediaError() { - filenavigator.reset(); - for (int16_t i = 0; i < MaxFileNumber; i++) - for (int16_t j = 0; j < 10; j++) rtscheck.RTS_SndData(0, SDFILE_ADDR + i * 10 + j); - - for (int16_t j = 0; j < 10; j++) { - rtscheck.RTS_SndData(0, Printfilename + j); // clean screen. - rtscheck.RTS_SndData(0, Choosefilename + j); // clean filename - } - for (int16_t j = 0; j < 8; j++) rtscheck.RTS_SndData(0, FilenameCount + j); - for (int16_t j = 1; j <= MaxFileNumber; j++) { - rtscheck.RTS_SndData(10, FilenameIcon + j); - rtscheck.RTS_SndData(10, FilenameIcon1 + j); - } - } - - void onMediaRemoved() { - filenavigator.reset(); - for (int16_t i = 0; i < MaxFileNumber; i++) - for (int16_t j = 0; j < 10; j++) rtscheck.RTS_SndData(0, SDFILE_ADDR + i * 10 + j); - - for (int16_t j = 0; j < 10; j++) { - rtscheck.RTS_SndData(0, Printfilename + j); // clean screen. - rtscheck.RTS_SndData(0, Choosefilename + j); // clean filename - } - for (int16_t j = 0; j < 8; j++) rtscheck.RTS_SndData(0, FilenameCount + j); - for (int16_t j = 1; j <= MaxFileNumber; j++) { - rtscheck.RTS_SndData(10, FilenameIcon + j); - rtscheck.RTS_SndData(10, FilenameIcon1 + j); - } - } - - void onPlayTone(const uint16_t frequency, const uint16_t duration) { - rtscheck.RTS_SndData(StartSoundSet, SoundAddr); - } - - void onPrintTimerStarted() { - if (waitway == 7) return; - PrinterStatusKey[1] = 3; - InforShowStatus = true; - delay_ms(1); - rtscheck.RTS_SndData(ExchangePageBase + 53, ExchangepageAddr); - } - - void onPrintTimerPaused() { - rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); // Display Pause Screen - onStatusChanged(F("Pausing...")); - } - void onPrintTimerStopped() { - if (waitway == 3) return; - - #if FAN_COUNT > 0 - for (uint8_t i = 0; i < FAN_COUNT; i++) setTargetFan_percent(FanOff, (fan_t)i); - #endif - - PrinterStatusKey[0] = 0; - InforShowStatus = true; - TPShowStatus = false; - rtscheck.RTS_SndData(ExchangePageBase + 51, ExchangepageAddr); - } - - void onFilamentRunout() { - PrinterStatusKey[1] = 4; - TPShowStatus = false; - rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); - } - void onFilamentRunout(extruder_t extruder) { - PrinterStatusKey[1] = 4; - TPShowStatus = false; - rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); - } - void onUserConfirmRequired(const char *const msg) { - PrinterStatusKey[1] = 4; - TPShowStatus = false; - if (lastPauseMsgState == ExtUI::pauseModeStatus && msg == (const char*)GET_TEXT_F(MSG_FILAMENT_CHANGE_LOAD)) - return; - - switch (ExtUI::pauseModeStatus) { - case PAUSE_MESSAGE_WAITING: { - rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Press Yes to Continue")); - break; - } - case PAUSE_MESSAGE_INSERT: { - rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Load Filament to Continue")); - break; - } - case PAUSE_MESSAGE_HEAT: { - rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Add Filament and Press Yes to Reheat")); - break; - } - - #if DISABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE) - case PAUSE_MESSAGE_PURGE: { - rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); - char newMsg[40] = "Yes to "; - strcat_P(newMsg, TERN1(FILAMENT_RUNOUT_SENSOR, !ExtUI::getFilamentRunoutState() && getFilamentRunoutEnabled()) ? PSTR("Continue") : PSTR("Disable ")); - strcat_P(newMsg, PSTR(" No to Purge")); - onStatusChanged(newMsg); - break; - } - #endif - - case PAUSE_MESSAGE_OPTION: { - rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); - char newMsg[40] = "Yes to "; - strcat_P(newMsg, TERN1(FILAMENT_RUNOUT_SENSOR, !ExtUI::getFilamentRunoutState() && getFilamentRunoutEnabled()) ? PSTR("Continue") : PSTR("Disable ")); - strcat_P(newMsg, PSTR(" No to Purge")); - onStatusChanged(newMsg); - break; - } - - case PAUSE_MESSAGE_PARKING: { - rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Parking...")); - break; - } - case PAUSE_MESSAGE_CHANGING: { - rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Beginning Filament Change")); - break; - } - case PAUSE_MESSAGE_UNLOAD: { - rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Unloading...")); - break; - } - case PAUSE_MESSAGE_LOAD: { - rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Reloading...")); - break; - } - case PAUSE_MESSAGE_RESUME: - #if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE) - case PAUSE_MESSAGE_PURGE: { - rtscheck.RTS_SndData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Press Yes to Stop Purge")); - break; - } - #endif - - case PAUSE_MESSAGE_HEATING: { - rtscheck.RTS_SndData(ExchangePageBase + 68, ExchangepageAddr); - onStatusChanged(F("Reheating")); - break; - } - - case PAUSE_MESSAGE_STATUS: - default: { - setPauseMenuResponse(PAUSE_RESPONSE_RESUME_PRINT); - setUserConfirmed(); - break; - } - } - lastPauseMsgState = ExtUI::pauseModeStatus; - } - - void onStatusChanged(const char *const statMsg) { - for (int16_t j = 0; j < 20; j++) // Clear old message - rtscheck.RTS_SndData(' ', StatusMessageString + j); - rtscheck.RTS_SndData(statMsg, StatusMessageString); - } - void onFactoryReset() { - Settings.settings_size = sizeof(creality_dwin_settings_t); - Settings.settings_version = dwin_settings_version; - Settings.display_standby = true; - Settings.display_sound = true; - Settings.display_volume = 32; - Settings.standby_screen_brightness = 15; - Settings.screen_brightness = 100; - Settings.standby_time_seconds = 60; - Settings.screen_rotation = 0; - onStartup(); - startprogress = 0; - InforShowStatus = true; - } - - void onMeshUpdate(const int8_t xpos, const int8_t ypos, probe_state_t state) {} - - void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval) { - if (waitway == 3) - if (isPositionKnown() && (getActualTemp_celsius(BED) >= (getTargetTemp_celsius(BED) - 1))) - rtscheck.RTS_SndData(ExchangePageBase + 64, ExchangepageAddr); - #if HAS_MESH - uint8_t abl_probe_index = 0; - for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) - for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { - const bool zig = outer & 1; // != ((PR_OUTER_END) & 1); - const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; - if (point.x == xpos && outer == ypos) - rtscheck.RTS_SndData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + (abl_probe_index * 2)); - ++abl_probe_index; - } - #endif - } - - void onStoreSettings(char *buff) { - static_assert( - ExtUI::eeprom_data_size >= sizeof(creality_dwin_settings_t), - "Insufficient space in EEPROM for UI parameters" - ); - - // Write to buffer - memcpy(buff, &Settings, sizeof(creality_dwin_settings_t)); - } - - void onLoadSettings(const char *buff) { - static_assert( - ExtUI::eeprom_data_size >= sizeof(creality_dwin_settings_t), - "Insufficient space in EEPROM for UI parameters" - ); - - creality_dwin_settings_t eepromSettings; - memcpy(&eepromSettings, buff, sizeof(creality_dwin_settings_t)); - - // If size is not the same, discard settings - if (eepromSettings.settings_size != sizeof(creality_dwin_settings_t)) { - onFactoryReset(); - return; - } - - if (eepromSettings.settings_version != dwin_settings_version) { - onFactoryReset(); - return; - } - - // Copy into final location - memcpy(&Settings, &eepromSettings, sizeof(creality_dwin_settings_t)); - - SetTouchScreenConfiguration(); - } - - void onSettingsStored(const bool success) { - // This is called after the entire EEPROM has been written, - // whether successful or not. - } - - void onSettingsLoaded(const bool success) { - #if HAS_MESH - if (ExtUI::getMeshValid()) { - uint8_t abl_probe_index = 0; - for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) - for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { - const bool zig = outer & 1; - const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; - rtscheck.RTS_SndData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + (abl_probe_index * 2)); - ++abl_probe_index; - } - - rtscheck.RTS_SndData(3, AutoLevelIcon); // 2=On, 3=Off - setLevelingActive(true); - } - else { - rtscheck.RTS_SndData(2, AutoLevelIcon); /*Off*/ - setLevelingActive(false); - } - #endif - - rtscheck.RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); - SetTouchScreenConfiguration(); - } - - #if ENABLED(POWER_LOSS_RECOVERY) - void onSetPowerLoss(const bool onoff) { - // Called when power-loss is enabled/disabled - } - void onPowerLoss() { - // Called when power-loss state is detected - } - void onPowerLossResume() { - startprogress = 254; - InforShowStatus = true; - TPShowStatus = false; - reEntryPrevent = false; - rtscheck.RTS_SndData(ExchangePageBase + 76, ExchangepageAddr); - } - #endif - - #if HAS_PID_HEATING - void onPidTuning(const result_t rst) { - // Called for temperature PID tuning result - rtscheck.RTS_SndData(pid_hotendAutoTemp, HotendPID_AutoTmp); - rtscheck.RTS_SndData(pid_bedAutoTemp, BedPID_AutoTmp); - rtscheck.RTS_SndData(uint16_t(getPID_Kp(E0)) * 10, HotendPID_P); - rtscheck.RTS_SndData(uint16_t(getPID_Ki(E0)) * 10, HotendPID_I); - rtscheck.RTS_SndData(uint16_t(getPID_Kd(E0)) * 10, HotendPID_D); - #if ENABLED(PIDTEMPBED) - rtscheck.RTS_SndData(uint16_t(getBedPID_Kp()) * 10, BedPID_P); - rtscheck.RTS_SndData(uint16_t(getBedPID_Ki()) * 10, BedPID_I); - rtscheck.RTS_SndData(uint16_t(getBedPID_Kd()) * 10, BedPID_D); - #endif - onStatusChanged(F("PID Tune Finished")); - } - #endif - - void onLevelingStart() {} - - void onLevelingDone() { - #if HAS_MESH - if (ExtUI::getMeshValid()) { - uint8_t abl_probe_index = 0; - for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) - for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { - const bool zig = outer & 1; - const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; - rtscheck.RTS_SndData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + abl_probe_index * 2); - ++abl_probe_index; - } - - rtscheck.RTS_SndData(3, AutoLevelIcon); // 2=On, 3=Off - setLevelingActive(true); - } - else { - rtscheck.RTS_SndData(2, AutoLevelIcon); /*Off*/ - setLevelingActive(false); - } - #endif - } - - void onSteppersEnabled() {} - void onPrintDone() {} - void onHomingStart() {} - void onHomingDone() {} - void onSteppersDisabled() {} - void onPostprocessSettings() {} - -} // namespace ExtUI - -#endif // DGUS_LCD_UI_IA_CREALITY diff --git a/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.cpp b/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.cpp new file mode 100644 index 0000000000..51180206db --- /dev/null +++ b/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.cpp @@ -0,0 +1,2094 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/* **************************************** + * lcd/extui/ia_creality/ia_creality_extui.cpp + * **************************************** + * Extensible_UI implementation for Creality DWIN + * 10SPro, Max, CRX, and others + * Based original Creality release, ported to ExtUI for Marlin 2.0 + * Written by Insanity Automation, sponsored by Tiny Machines 3D + * + * ***************************************/ + +#include "../../../inc/MarlinConfigPre.h" + +#if DGUS_LCD_UI_IA_CREALITY + +#include "ia_creality_extui.h" +#include "FileNavigator.h" + +// Singleton instance +RTS rts; + +// Static data +DB RTS::recdat, RTS::snddat; +uint8_t RTS::databuf[DATA_BUF_SIZE]; +rx_datagram_state_t RTS::rx_datagram_state = DGUS_IDLE; +uint8_t RTS::rx_datagram_len = 0; + +// Local data +uint16_t fileIndex = 0; +uint8_t recordcount = 0; +uint8_t waitway_lock = 0; +const float manual_feedrate_mm_m[] = MANUAL_FEEDRATE; +uint8_t startprogress = 0; + +char waitway = 0; +int16_t recnum = 0; +float ChangeMaterialbuf[2] = { 0 }; + +char NozzleTempStatus[3] = { 0 }; + +char PrinterStatusKey[2] = { 0 }; // PrinterStatusKey[1] 0:keep temperature, 1:heating, 2:cooling, 3:printing + // PrinterStatusKey[0] 0:ready + +uint8_t AxisPagenum = 0; // 0 for 10mm, 1 for 1mm, 2 for 0.1mm +bool InforShowStatus = true; +bool TPShowStatus = false; // true for only opening time and percentage, false for closing time and percentage. +bool AutohomeKey = false; +uint8_t AutoHomeIconNum; +int16_t userConfValidation = 0; + +uint8_t lastPauseMsgState = 0; + +creality_dwin_settings_t Settings; +uint8_t dwin_settings_version = 1; + +bool reEntryPrevent = false; +uint8_t reEntryCount = 0; +uint16_t idleThrottling = 0; + +bool pause_resume_selected = false; + +#if HAS_PID_HEATING + uint16_t pid_hotendAutoTemp = 150; + uint16_t pid_bedAutoTemp = 70; +#endif + +#ifndef IA_CREALITY_BOOT_DELAY + #define IA_CREALITY_BOOT_DELAY 500 +#endif + +void RTS::onStartup() { + DWIN_SERIAL.begin(115200); + recdat.head[0] = snddat.head[0] = FHONE; + recdat.head[1] = snddat.head[1] = FHTWO; + ZERO(databuf); + + delay_ms(IA_CREALITY_BOOT_DELAY); // Delay to allow screen startup + setTouchScreenConfiguration(); + sendData(StartSoundSet, SoundAddr); + delay_ms(400); // Delay to allow screen to configure + + onStatusChanged(MACHINE_NAME " Ready"); + + sendData(100, FeedrateDisplay); + + /***************turn off motor*****************/ + sendData(11, FilenameIcon); + + /***************transmit temperature to screen*****************/ + sendData(0, NozzlePreheat); + sendData(0, BedPreheat); + sendData(getActualTemp_celsius(H0), NozzleTemp); + sendData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); + sendData(getActualTemp_celsius(BED), Bedtemp); + /***************transmit Fan speed to screen*****************/ + sendData(getActualFan_percent((fan_t)getActiveTool()), FanKeyIcon); + + /***************transmit Printer information to screen*****************/ + for (int16_t j = 0; j < 20; j++) // clean filename + sendData(0, MacVersion + j); + char sizebuf[20] = {0}; + sprintf(sizebuf, "%d X %d X %d", Y_BED_SIZE, X_BED_SIZE, Z_MAX_POS); + sendData(MACHINE_NAME, MacVersion); + sendData(SHORT_BUILD_VERSION, SoftVersion); + sendData(sizebuf, PrinterSize); + sendData(WEBSITE_URL, CorpWebsite); + + /**************************some info init*******************************/ + sendData(0, PrintscheduleIcon); + sendData(0, PrintscheduleIcon + 1); + + /************************clean screen*******************************/ + for (int16_t i = 0; i < MaxFileNumber; i++) + for (int16_t j = 0; j < 10; j++) sendData(0, SDFILE_ADDR + i * 10 + j); + + for (int16_t j = 0; j < 10; j++) { + sendData(0, Printfilename + j); // clean screen. + sendData(0, Choosefilename + j); // clean filename + } + for (int16_t j = 0; j < 8; j++) sendData(0, FilenameCount + j); + for (int16_t j = 1; j <= MaxFileNumber; j++) { + sendData(10, FilenameIcon + j); + sendData(10, FilenameIcon1 + j); + } +} + +void RTS::onIdle() { + while (rts.receiveData() > 0 && (rts.recdat.data[0] != 0 || rts.recdat.addr != 0)) + rts.handleData(); + + if (reEntryPrevent && reEntryCount < 120) { reEntryCount++; return; } + reEntryCount = 0; + + if (idleThrottling++ < 750) return; + + // Always send temperature data + rts.sendData(getActualTemp_celsius(getActiveTool()), NozzleTemp); + rts.sendData(getActualTemp_celsius(BED), Bedtemp); + rts.sendData(getTargetTemp_celsius(getActiveTool()), NozzlePreheat); + rts.sendData(getTargetTemp_celsius(BED), BedPreheat); + rts.sendData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); + rts.sendData(TERN0(HAS_MULTI_HOTEND, getTargetTemp_celsius(H1)), e2Preheat); + TERN_(HAS_MULTI_HOTEND, rts.sendData(uint8_t(getActiveTool() + 1), ActiveToolVP)); + + if (awaitingUserConfirm() && (lastPauseMsgState != ExtUI::pauseModeStatus || userConfValidation > 99)) { + switch (ExtUI::pauseModeStatus) { + case PAUSE_MESSAGE_PARKING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_PAUSE_PRINT_PARKING)); break; + case PAUSE_MESSAGE_CHANGING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_INIT)); break; + case PAUSE_MESSAGE_UNLOAD: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_UNLOAD)); break; + case PAUSE_MESSAGE_WAITING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_ADVANCED_PAUSE_WAITING)); break; + case PAUSE_MESSAGE_INSERT: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_INSERT)); break; + case PAUSE_MESSAGE_LOAD: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_LOAD)); break; + case PAUSE_MESSAGE_PURGE: ExtUI::onUserConfirmRequired(GET_TEXT_F(TERN(ADVANCED_PAUSE_CONTINUOUS_PURGE, MSG_FILAMENT_CHANGE_CONT_PURGE, MSG_FILAMENT_CHANGE_PURGE))); break; + case PAUSE_MESSAGE_RESUME: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_RESUME)); break; + case PAUSE_MESSAGE_HEAT: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEAT)); break; + case PAUSE_MESSAGE_HEATING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEATING)); break; + case PAUSE_MESSAGE_OPTION: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_OPTION_HEADER)); break; + case PAUSE_MESSAGE_STATUS: break; + default: onUserConfirmRequired(PSTR("Confirm Continue")); break; + } + userConfValidation = 0; + } + else if (pause_resume_selected && !awaitingUserConfirm()) { + rts.sendData(ExchangePageBase + 53, ExchangepageAddr); + pause_resume_selected = false; + userConfValidation = 0; + } + else if (awaitingUserConfirm()) { + if (pause_resume_selected) { + pause_resume_selected = false; + userConfValidation = 100; + } + else + userConfValidation++; + } + + reEntryPrevent = true; + idleThrottling = 0; + if (waitway && !commandsInQueue()) + waitway_lock++; + else + waitway_lock = 0; + + if (waitway_lock > 100) { + waitway_lock = 0; + waitway = 0; // clear waitway if nothing is going on + } + + switch (waitway) { + case 1: + if (isPositionKnown()) { + InforShowStatus = true; + rts.sendData(ExchangePageBase + 54, ExchangepageAddr); + waitway = 0; + } + break; + + case 2: + if (isPositionKnown() && !commandsInQueue()) waitway = 0; + break; + + case 3: + //if(isPositionKnown() && (getActualTemp_celsius(BED) >= (getTargetTemp_celsius(BED)-1))) { + rts.sendData(ExchangePageBase + 64, ExchangepageAddr); + waitway = 7; + //return; + //} + break; + + case 4: + if (AutohomeKey && isPositionKnown() && !commandsInQueue()) { // Manual Move Home Done + //rts.sendData(ExchangePageBase + 71 + AxisPagenum, ExchangepageAddr); + AutohomeKey = false; + waitway = 0; + } + break; + case 5: + if (isPositionKnown() && !commandsInQueue()) { + InforShowStatus = true; + waitway = 0; + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); // exchange to 78 page + } + break; + case 6: + if (!commandsInQueue()) { + setAxisPosition_mm(BED_TRAMMING_HEIGHT, axis_t(Z)); + waitway = 0; + } + break; + case 7: + if (!commandsInQueue()) waitway = 0; + break; + } + + TERN_(HAS_MESH, rts.sendData(getLevelingActive() ? 3 : 2, AutoLevelIcon)); + TERN_(HAS_FILAMENT_SENSOR, rts.sendData(getFilamentRunoutEnabled() ? 3 : 2, RunoutToggle)); + TERN_(CASE_LIGHT_ENABLE, rts.sendData(getCaseLightState() ? 3 : 2, LedToggle)); + TERN_(POWER_LOSS_RECOVERY, rts.sendData(getPowerLossRecoveryEnabled() ? 3 : 2, PowerLossToggle)); + + if (startprogress == 0) { + startprogress += 25; + delay_ms(3000); // Delay to show bootscreen + } + else if (startprogress < 250) { + if (isMediaInserted()) // Re init media as it happens too early on STM32 boards often + onMediaInserted(); + else + injectCommands(F("M22\nM21")); + startprogress = 254; + InforShowStatus = true; + TPShowStatus = false; + rts.sendData(ExchangePageBase + 45, ExchangepageAddr); + reEntryPrevent = false; + return; + } + if (startprogress <= 100) + rts.sendData(startprogress, StartIcon); + else + rts.sendData(startprogress - 100, StartIcon + 1); + + //rts.sendData((startprogress++) % 5, ExchFlmntIcon); + + if (isPrinting()) { + rts.sendData(getActualFan_percent((fan_t)getActiveTool()), FanKeyIcon); + rts.sendData(getProgress_seconds_elapsed() / 3600, Timehour); + rts.sendData((getProgress_seconds_elapsed() % 3600) / 60, Timemin); + if (getProgress_percent() > 0) { + const uint16_t perc = getProgress_percent() + 1; + if (perc <= 50) { + rts.sendData(uint16_t(perc) * 2, PrintscheduleIcon); + rts.sendData(0, PrintscheduleIcon + 1); + } + else { + rts.sendData(100, PrintscheduleIcon); + rts.sendData(uint16_t(perc) * 2 - 100, PrintscheduleIcon + 1); + } + } + else { + rts.sendData(0, PrintscheduleIcon); + rts.sendData(0, PrintscheduleIcon + 1); + } + rts.sendData(uint16_t(getProgress_percent()), Percentage); + } + else { // Not printing settings + rts.sendData(map(constrain(Settings.display_volume, 0, 255), 0, 255, 0, 100), VolumeDisplay); + rts.sendData(Settings.screen_brightness, DisplayBrightness); + rts.sendData(Settings.standby_screen_brightness, DisplayStandbyBrightness); + rts.sendData(Settings.standby_time_seconds, DisplayStandbySeconds); + if (Settings.display_standby) + rts.sendData(3, DisplayStandbyEnableIndicator); + else + rts.sendData(2, DisplayStandbyEnableIndicator); + + rts.sendData(getAxisSteps_per_mm(X) * 10, StepMM_X); + rts.sendData(getAxisSteps_per_mm(Y) * 10, StepMM_Y); + rts.sendData(getAxisSteps_per_mm(Z) * 10, StepMM_Z); + rts.sendData(getAxisSteps_per_mm(E0) * 10, StepMM_E); + + rts.sendData(getAxisMaxAcceleration_mm_s2(X) / 100, Accel_X); + rts.sendData(getAxisMaxAcceleration_mm_s2(Y) / 100, Accel_Y); + rts.sendData(getAxisMaxAcceleration_mm_s2(Z) / 10, Accel_Z); + rts.sendData(getAxisMaxAcceleration_mm_s2(E0), Accel_E); + + rts.sendData(getAxisMaxFeedrate_mm_s(X), Feed_X); + rts.sendData(getAxisMaxFeedrate_mm_s(Y), Feed_Y); + rts.sendData(getAxisMaxFeedrate_mm_s(Z), Feed_Z); + rts.sendData(getAxisMaxFeedrate_mm_s(E0), Feed_E); + + rts.sendData(getAxisMaxJerk_mm_s(X) * 100, Jerk_X); + rts.sendData(getAxisMaxJerk_mm_s(Y) * 100, Jerk_Y); + rts.sendData(getAxisMaxJerk_mm_s(Z) * 100, Jerk_Z); + rts.sendData(getAxisMaxJerk_mm_s(E0) * 100, Jerk_E); + + #if HAS_HOTEND_OFFSET + rts.sendData(getNozzleOffset_mm(X, E1) * 10, T2Offset_X); + rts.sendData(getNozzleOffset_mm(Y, E1) * 10, T2Offset_Y); + rts.sendData(getNozzleOffset_mm(Z, E1) * 10, T2Offset_Z); + rts.sendData(getAxisSteps_per_mm(E1) * 10, T2StepMM_E); + #endif + + #if HAS_BED_PROBE + rts.sendData(getProbeOffset_mm(X) * 100, ProbeOffset_X); + rts.sendData(getProbeOffset_mm(Y) * 100, ProbeOffset_Y); + #endif + + #if HAS_PID_HEATING + rts.sendData(pid_hotendAutoTemp, HotendPID_AutoTmp); + rts.sendData(pid_bedAutoTemp, BedPID_AutoTmp); + rts.sendData(getPID_Kp(E0) * 10, HotendPID_P); + rts.sendData(getPID_Ki(E0) * 10, HotendPID_I); + rts.sendData(getPID_Kd(E0) * 10, HotendPID_D); + #if ENABLED(PIDTEMPBED) + rts.sendData(getBedPID_Kp() * 10, BedPID_P); + rts.sendData(getBedPID_Ki() * 10, BedPID_I); + rts.sendData(getBedPID_Kd() * 10, BedPID_D); + #endif + #endif + } + + rts.sendData(getZOffset_mm() * 100, ProbeOffset_Z); + rts.sendData(uint16_t(getFlow_percent(E0)), Flowrate); + + if (NozzleTempStatus[0] || NozzleTempStatus[2]) { // statuse of loadfilament and unloadfinement when temperature is less than + uint16_t IconTemp = getActualTemp_celsius(getActiveTool()) * 100 / getTargetTemp_celsius(getActiveTool()); + NOMORE(IconTemp, 100U); + rts.sendData(IconTemp, HeatPercentIcon); + if (getActualTemp_celsius(getActiveTool()) > EXTRUDE_MINTEMP && NozzleTempStatus[0] != 0) { + NozzleTempStatus[0] = 0; + rts.sendData(10 * ChangeMaterialbuf[0], FilamentUnit1); + rts.sendData(10 * ChangeMaterialbuf[1], FilamentUnit2); + rts.sendData(ExchangePageBase + 65, ExchangepageAddr); + } + else if (getActualTemp_celsius(getActiveTool()) >= getTargetTemp_celsius(getActiveTool()) && NozzleTempStatus[2]) { + NozzleTempStatus[2] = 0; + TPShowStatus = true; + rts.sendData(4, ExchFlmntIcon); + rts.sendData(ExchangePageBase + 83, ExchangepageAddr); + } + else if (NozzleTempStatus[2]) { + //rts.sendData((startprogress++) % 5, ExchFlmntIcon); + } + } + + if (AutohomeKey) { + rts.sendData(AutoHomeIconNum, AutoZeroIcon); + if (++AutoHomeIconNum > 9) AutoHomeIconNum = 0; + } + + if (isMediaInserted()) { + const uint16_t currPage = fileIndex == 0 ? 1 : CEIL(float(fileIndex) / float(DISPLAY_FILES)) + 1, + maxPageAdd = filenavigator.folderdepth ? 1 : 0, + maxPages = CEIL(float(filenavigator.maxFiles() + maxPageAdd) / float(DISPLAY_FILES) ); + + rts.sendData(currPage, FilesCurentPage); + rts.sendData(maxPages, FilesMaxPage); + } + else { + rts.sendData(0, FilesCurentPage); + rts.sendData(0, FilesMaxPage); + } + + if (rts.recdat.addr != DisplayZaxis && rts.recdat.addr != DisplayYaxis && rts.recdat.addr != DisplayZaxis) { + rts.sendData(10 * getAxisPosition_mm(axis_t(X)), DisplayXaxis); + rts.sendData(10 * getAxisPosition_mm(axis_t(Y)), DisplayYaxis); + rts.sendData(10 * getAxisPosition_mm(axis_t(Z)), DisplayZaxis); + } + reEntryPrevent = false; +} + +RTS::RTS() { + recdat.head[0] = snddat.head[0] = FHONE; + recdat.head[1] = snddat.head[1] = FHTWO; + ZERO(databuf); +} + +int16_t RTS::receiveData() { + uint8_t receivedbyte; + while (DWIN_SERIAL.available()) + switch (rx_datagram_state) { + + case DGUS_IDLE: // Waiting for the first header byte + receivedbyte = DWIN_SERIAL.read(); + if (FHONE == receivedbyte) rx_datagram_state = DGUS_HEADER1_SEEN; + break; + + case DGUS_HEADER1_SEEN: // Waiting for the second header byte + receivedbyte = DWIN_SERIAL.read(); + rx_datagram_state = (FHTWO == receivedbyte) ? DGUS_HEADER2_SEEN : DGUS_IDLE; + break; + + case DGUS_HEADER2_SEEN: // Waiting for the length byte + rx_datagram_len = DWIN_SERIAL.read(); + //DEBUGLCDCOMM_ECHOPGM(" (", rx_datagram_len, ") "); + + // Telegram min len is 3 (command and one word of payload) + rx_datagram_state = WITHIN(rx_datagram_len, 3, DGUS_RX_BUFFER_SIZE) ? DGUS_WAIT_TELEGRAM : DGUS_IDLE; + break; + + case DGUS_WAIT_TELEGRAM: // wait for complete datagram to arrive. + if (DWIN_SERIAL.available() < rx_datagram_len) return -1; + + uint8_t command = DWIN_SERIAL.read(); + + //DEBUGLCDCOMM_ECHOPGM("# ", command); + + uint8_t readlen = rx_datagram_len - 1; // command is part of len. + uint8_t tmp[rx_datagram_len - 1]; + uint8_t *ptmp = tmp; + while (readlen--) { + receivedbyte = DWIN_SERIAL.read(); + //DEBUGLCDCOMM_ECHOPGM(" ", receivedbyte); + *ptmp++ = receivedbyte; + } + //DEBUGLCDCOMM_ECHOPGM(" # "); + // mostly we'll get this: 5A A5 03 82 4F 4B -- ACK on 0x82, so discard it. + if (command == VarAddr_W && 'O' == tmp[0] && 'K' == tmp[1]) { + rx_datagram_state = DGUS_IDLE; + break; + } + + /* AutoUpload, (and answer to) Command 0x83 : + | tmp[0 1 2 3 4 ... ] + | Example 5A A5 06 83 20 01 01 78 01 …… + | / / | | \ / | \ \ + | Header | | | | \_____\_ DATA (Words!) + | DatagramLen / VPAdr | + | Command DataLen (in Words) */ + if (command == VarAddr_R) { + const uint16_t vp = tmp[0] << 8 | tmp[1]; + + const uint8_t dlen = tmp[2] << 1; // Convert to Bytes. (Display works with words) + recdat.addr = vp; + recdat.len = tmp[2]; + for (uint16_t i = 0; i < dlen; i += 2) { + recdat.data[i / 2] = tmp[3 + i]; + recdat.data[i / 2] = (recdat.data[i / 2] << 8 ) | tmp[4 + i]; + } + + rx_datagram_state = DGUS_IDLE; + return 2; + break; + } + + // discard anything else + rx_datagram_state = DGUS_IDLE; + } + return -1; +} + +void RTS::sendData() { + if (snddat.head[0] == FHONE && snddat.head[1] == FHTWO && snddat.len >= 3) { + databuf[0] = snddat.head[0]; + databuf[1] = snddat.head[1]; + databuf[2] = snddat.len; + databuf[3] = snddat.command; + if (snddat.command == 0x80) { // to write data to the register + databuf[4] = snddat.addr; + for (int16_t i = 0; i < (snddat.len - 2); i++) databuf[5 + i] = snddat.data[i]; + } + else if (snddat.len == 3 && (snddat.command == 0x81)) { // to read data from the register + databuf[4] = snddat.addr; + databuf[5] = snddat.bytelen; + } + else if (snddat.command == 0x82) { // to write data to the variate + databuf[4] = snddat.addr >> 8; + databuf[5] = snddat.addr & 0xFF; + for (int16_t i = 0; i < (snddat.len - 3); i += 2) { + databuf[6 + i] = snddat.data[i / 2] >> 8; + databuf[7 + i] = snddat.data[i / 2] & 0xFF; + } + } + else if (snddat.len == 4 && (snddat.command == 0x83)) { // to read data from the variate + databuf[4] = snddat.addr >> 8; + databuf[5] = snddat.addr & 0xFF; + databuf[6] = snddat.bytelen; + } + for (int16_t i = 0; i < (snddat.len + 3); i++) { + DWIN_SERIAL.write(databuf[i]); + delay_us(1); + } + + memset(&snddat, 0, sizeof(snddat)); + ZERO(databuf); + snddat.head[0] = FHONE; + snddat.head[1] = FHTWO; + } +} + +void RTS::sendData(const String &s, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { + if (s.length() < 1) return; + sendData(s.c_str(), addr, cmd); +} + +void RTS::sendData(const char *str, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { + int16_t len = strlen(str); + constexpr int16_t maxlen = DATA_BUF_SIZE - 6; + if (len > 0) { + if (len > maxlen) len = maxlen; + databuf[0] = FHONE; + databuf[1] = FHTWO; + databuf[2] = 3 + len; + databuf[3] = cmd; + databuf[4] = addr >> 8; + databuf[5] = addr & 0x00FF; + for (int16_t i = 0; i < len; i++) databuf[6 + i] = str[i]; + + for (int16_t i = 0; i < (len + 6); i++) { + DWIN_SERIAL.write(databuf[i]); + delay_us(1); + } + ZERO(databuf); + } +} + +void RTS::sendData(const char c, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { + snddat.command = cmd; + snddat.addr = addr; + snddat.data[0] = uint32_t(uint16_t(c) << 8); + snddat.len = 5; + sendData(); +} + +void RTS::sendData(const_float_t f, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { + int16_t n = f; + if (cmd == VarAddr_W) { + snddat.data[0] = n; + snddat.len = 5; + } + else if (cmd == RegAddr_W) { + snddat.data[0] = n; + snddat.len = 3; + } + else if (cmd == VarAddr_R) { + snddat.bytelen = n; + snddat.len = 4; + } + snddat.command = cmd; + snddat.addr = addr; + sendData(); +} + +void RTS::sendData(const int n, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { + if (cmd == VarAddr_W) { + if ((unsigned int)n > 0xFFFF) { + snddat.data[0] = n >> 16; + snddat.data[1] = n & 0xFFFF; + snddat.len = 7; + } + else { + snddat.data[0] = n; + snddat.len = 5; + } + } + else if (cmd == RegAddr_W) { + snddat.data[0] = n; + snddat.len = 3; + } + else if (cmd == VarAddr_R) { + snddat.bytelen = n; + snddat.len = 4; + } + snddat.command = cmd; + snddat.addr = addr; + sendData(); +} + +void RTS::sendData(const unsigned long n, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { + if (cmd == VarAddr_W) { + if (n > 0xFFFF) { + snddat.data[0] = n >> 16; + snddat.data[1] = n & 0xFFFF; + //snddat.data[0] = n >> 24; + //snddat.data[1] = n >> 16; + //snddat.data[2] = n >> 8; + //snddat.data[3] = n; + snddat.len = 7; + } + else { + snddat.data[0] = n; + snddat.len = 5; + } + } + else if (cmd == VarAddr_R) { + snddat.bytelen = n; + snddat.len = 4; + } + snddat.command = cmd; + snddat.addr = addr; + sendData(); +} + +void RTS::handleData() { + int16_t Checkkey = -1; + if (waitway > 0) { // for waiting + memset(&recdat, 0, sizeof(recdat)); + recdat.head[0] = FHONE; + recdat.head[1] = FHTWO; + return; + } + for (int16_t i = 0; Addrbuf[i] != 0; i++) + if (recdat.addr == Addrbuf[i]) { + if (Addrbuf[i] == NzBdSet || Addrbuf[i] == NozzlePreheat || Addrbuf[i] == BedPreheat || Addrbuf[i] == Flowrate) + Checkkey = ManualSetTemp; + else if (WITHIN(Addrbuf[i], Stopprint, Resumeprint)) + Checkkey = PrintChoice; + else if (WITHIN(Addrbuf[i], AutoZero, DisplayZaxis)) + Checkkey = XYZEaxis; + else if (WITHIN(Addrbuf[i], FilamentUnit1, FilamentUnit2)) + Checkkey = Filament; + else + Checkkey = i; + break; + } + + switch (recdat.addr) { + case Flowrate: + case StepMM_X ... StepMM_E: + case ProbeOffset_X ... ProbeOffset_Y: + case HotendPID_AutoTmp ... BedPID_AutoTmp: + case HotendPID_P ... HotendPID_D: + case BedPID_P ... BedPID_D: + case T2Offset_X ... T2StepMM_E: + case Accel_X ... Accel_E: + case Feed_X ... Feed_E: + case Jerk_X ... Jerk_E: + case RunoutToggle: + case PowerLossToggle: + case FanKeyIcon: + case LedToggle: + case e2Preheat: Checkkey = ManualSetTemp; break; + case ProbeOffset_Z: Checkkey = Zoffset_Value; break; + case VolumeDisplay: Checkkey = VolumeDisplay; break; + case DisplayBrightness: Checkkey = DisplayBrightness; break; + case DisplayStandbyBrightness: Checkkey = DisplayStandbyBrightness; break; + case DisplayStandbySeconds: Checkkey = DisplayStandbySeconds; break; + default: + if (WITHIN(recdat.addr, AutolevelVal, 4400)) // (int16_t(AutolevelVal) + GRID_MAX_POINTS * 2) = 4400 with 5x5 mesh + Checkkey = AutolevelVal; + else if (WITHIN(recdat.addr, SDFILE_ADDR, SDFILE_ADDR + 10 * (FileNum + 1))) + Checkkey = Filename; + break; + } + + if (Checkkey < 0) { + memset(&recdat, 0, sizeof(recdat)); + recdat.head[0] = FHONE; + recdat.head[1] = FHTWO; + return; + } + + constexpr float lfrb[4] = BED_TRAMMING_INSET_LFRB; + + switch (Checkkey) { + case Printfile: + if (recdat.data[0] == 1) { // card + InforShowStatus = false; + filenavigator.getFiles(0); + fileIndex = 0; + recordcount = 0; + sendData(ExchangePageBase + 46, ExchangepageAddr); + } + else if (recdat.data[0] == 2) { // return after printing result. + InforShowStatus = true; + TPShowStatus = false; + stopPrint(); + injectCommands(F("M84")); + sendData(11, FilenameIcon); + sendData(0, PrintscheduleIcon); + sendData(0, PrintscheduleIcon + 1); + sendData(0, Percentage); + delay_ms(2); + sendData(0, Timehour); + sendData(0, Timemin); + + sendData(ExchangePageBase + 45, ExchangepageAddr); // exchange to 45 page + } + else if (recdat.data[0] == 3) { // Temperature control + InforShowStatus = true; + TPShowStatus = false; + if (getTargetFan_percent((fan_t)getActiveTool()) == 0) + sendData(ExchangePageBase + 58, ExchangepageAddr); // exchange to 58 page, the fans off + else + sendData(ExchangePageBase + 57, ExchangepageAddr); // exchange to 57 page, the fans on + } + else if (recdat.data[0] == 4) { // Settings + InforShowStatus = false; + } + break; + + case Adjust: + if (recdat.data[0] == 1) { + InforShowStatus = false; + } + else if (recdat.data[0] == 2) { + InforShowStatus = true; + if (PrinterStatusKey[1] == 3) // during heating + sendData(ExchangePageBase + 53, ExchangepageAddr); + else if (PrinterStatusKey[1] == 4) + sendData(ExchangePageBase + 54, ExchangepageAddr); + else + sendData(ExchangePageBase + 53, ExchangepageAddr); + } + else if (recdat.data[0] == 3) + setTargetFan_percent(getTargetFan_percent((fan_t)getActiveTool()) != 0 ? 100 : 0, FAN0); + + break; + + case Feedrate: + setFeedrate_percent(recdat.data[0]); + break; + + case PrintChoice: + if (recdat.addr == Stopprint) { + if (recdat.data[0] == 240) { // no + sendData(ExchangePageBase + 53, ExchangepageAddr); + } + else { + sendData(ExchangePageBase + 45, ExchangepageAddr); + sendData(0, Timehour); + sendData(0, Timemin); + stopPrint(); + } + } + else if (recdat.addr == Pauseprint) { + if (recdat.data[0] != 0xF1) + break; + + sendData(ExchangePageBase + 54, ExchangepageAddr); + pausePrint(); + } + else if (recdat.addr == Resumeprint && recdat.data[0] == 1) { + resumePrint(); + + PrinterStatusKey[1] = 0; + InforShowStatus = true; + + sendData(ExchangePageBase + 53, ExchangepageAddr); + } + if (recdat.addr == Resumeprint && recdat.data[0] == 2) { // warming + resumePrint(); + NozzleTempStatus[2] = 1; + PrinterStatusKey[1] = 0; + InforShowStatus = true; + sendData(ExchangePageBase + 82, ExchangepageAddr); + } + break; + + case Zoffset: + float tmp_zprobe_offset; + if (recdat.data[0] >= 32768) + tmp_zprobe_offset = (float(recdat.data[0]) - 65536) / 100; + else + tmp_zprobe_offset = float(recdat.data[0]) / 100; + if (WITHIN((tmp_zprobe_offset), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { + int16_t tmpSteps = mmToWholeSteps(getZOffset_mm() - tmp_zprobe_offset, axis_t(Z)); + if (tmpSteps == 0) tmpSteps = getZOffset_mm() < tmp_zprobe_offset ? 1 : -1; + smartAdjustAxis_steps(-tmpSteps, axis_t(Z), false); + char zOffs[20], tmp1[11]; + sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); + onStatusChanged(zOffs); + } + else { + onStatusChanged(F("Requested Offset Beyond Limits")); + } + + sendData(getZOffset_mm() * 100, ProbeOffset_Z); + break; + + case TempControl: + if (recdat.data[0] == 0) { + InforShowStatus = true; + TPShowStatus = false; + } + else if (recdat.data[0] == 1) { + if (getTargetFan_percent((fan_t)getActiveTool()) == 0) + sendData(ExchangePageBase + 60, ExchangepageAddr); // exchange to 60 page, the fans off + else + sendData(ExchangePageBase + 59, ExchangepageAddr); // exchange to 59 page, the fans on + } + else if (recdat.data[0] == 2) { + InforShowStatus = true; + } + else if (recdat.data[0] == 3) { + if (getTargetFan_percent((fan_t)getActiveTool()) == 0) { // turn on the fan + setTargetFan_percent(100, FAN0); + sendData(ExchangePageBase + 57, ExchangepageAddr); // exchange to 57 page, the fans on + } + else { // turn off the fan + setTargetFan_percent(0, FAN0); + sendData(ExchangePageBase + 58, ExchangepageAddr); // exchange to 58 page, the fans on + } + } + else if (recdat.data[0] == 5) { // PLA mode + setTargetTemp_celsius(PREHEAT_1_TEMP_HOTEND, getActiveTool()); + setTargetTemp_celsius(PREHEAT_1_TEMP_BED, BED); + sendData(PREHEAT_1_TEMP_HOTEND, NozzlePreheat); + sendData(PREHEAT_1_TEMP_BED, BedPreheat); + } + else if (recdat.data[0] == 6) { // ABS mode + setTargetTemp_celsius(PREHEAT_2_TEMP_HOTEND, getActiveTool()); + setTargetTemp_celsius(PREHEAT_2_TEMP_BED, BED); + sendData(PREHEAT_2_TEMP_HOTEND, NozzlePreheat); + sendData(PREHEAT_2_TEMP_BED, BedPreheat); + } + else if (recdat.data[0] == 0xF1) { + //InforShowStatus = true; + #if FAN_COUNT > 0 + for (uint8_t i = 0; i < FAN_COUNT; i++) setTargetFan_percent(0, (fan_t)i); + #endif + setTargetTemp_celsius(0.0, H0); + TERN_(HAS_MULTI_HOTEND, setTargetTemp_celsius(0.0, H1)); + setTargetTemp_celsius(0.0, BED); + sendData(0, NozzlePreheat); delay_ms(1); + sendData(0, BedPreheat); delay_ms(1); + sendData(ExchangePageBase + 57, ExchangepageAddr); + PrinterStatusKey[1] = 2; + } + break; + + case ManualSetTemp: + if (recdat.addr == NzBdSet) { + if (recdat.data[0] == 0) { + if (getTargetFan_percent((fan_t)getActiveTool()) == 0) + sendData(ExchangePageBase + 58, ExchangepageAddr); // exchange to 58 page, the fans off + else + sendData(ExchangePageBase + 57, ExchangepageAddr); // exchange to 57 page, the fans on + } + else if (recdat.data[0] == 1) { + setTargetTemp_celsius(0.0, getActiveTool()); + sendData(0, NozzlePreheat); + } + else if (recdat.data[0] == 2) { + setTargetTemp_celsius(0.0, BED); + sendData(0, BedPreheat); + } + } + else if (recdat.addr == NozzlePreheat) { + setTargetTemp_celsius(float(recdat.data[0]), H0); + } + #if HAS_MULTI_HOTEND + else if (recdat.addr == e2Preheat) { + setTargetTemp_celsius(float(recdat.data[0]), H1); + } + #endif + else if (recdat.addr == BedPreheat) { + setTargetTemp_celsius(float(recdat.data[0]), BED); + } + else if (recdat.addr == Flowrate) { + setFlow_percent(int16_t(recdat.data[0]), getActiveTool()); + } + + #if HAS_PID_HEATING + else if (recdat.addr == HotendPID_AutoTmp) { + pid_hotendAutoTemp = uint16_t(recdat.data[0]); + } + else if (recdat.addr == BedPID_AutoTmp) { + pid_bedAutoTemp = uint16_t(recdat.data[0]); + } + #endif + + else if (recdat.addr == Accel_X) { + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 100, X); + } + else if (recdat.addr == Accel_Y) { + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 100, Y); + } + else if (recdat.addr == Accel_Z) { + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 10, Z); + } + else if (recdat.addr == Accel_E) { + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]), E0); + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]), E1); + } + + else if (recdat.addr == Feed_X) { + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), X); + } + else if (recdat.addr == Feed_Y) { + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), Y); + } + else if (recdat.addr == Feed_Z) { + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), Z); + } + else if (recdat.addr == Feed_E) { + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), E0); + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), E1); + } + else if (recdat.addr == FanKeyIcon) { + setTargetFan_percent(uint16_t(recdat.data[0]), (fan_t)getActiveTool()); + } + else { + float tmp_float_handling; + if (recdat.data[0] >= 32768) + tmp_float_handling = (float(recdat.data[0]) - 65536) / 100; + else + tmp_float_handling = float(recdat.data[0]) / 100; + if (recdat.addr == StepMM_X) { + setAxisSteps_per_mm(tmp_float_handling * 10, X); + } + else if (recdat.addr == StepMM_Y) { + setAxisSteps_per_mm(tmp_float_handling * 10, Y); + } + else if (recdat.addr == StepMM_Z) { + setAxisSteps_per_mm(tmp_float_handling * 10, Z); + } + else if (recdat.addr == StepMM_E) { + setAxisSteps_per_mm(tmp_float_handling * 10, E0); + #if DISABLED(DUAL_X_CARRIAGE) + setAxisSteps_per_mm(tmp_float_handling * 10, E1); + #endif + } + #if ENABLED(DUAL_X_CARRIAGE) + else if (recdat.addr == T2StepMM_E) { + setAxisSteps_per_mm(tmp_float_handling * 10, E1); + } + else if (recdat.addr == T2Offset_X) { + setNozzleOffset_mm(tmp_float_handling * 10, X, E1); + } + else if (recdat.addr == T2Offset_Y) { + setNozzleOffset_mm(tmp_float_handling * 10, Y, E1); + } + else if (recdat.addr == T2Offset_Z) { + setNozzleOffset_mm(tmp_float_handling * 10, Z, E1); + } + #endif + #if HAS_BED_PROBE + else if (recdat.addr == ProbeOffset_X) { + setProbeOffset_mm(tmp_float_handling, X); + } + else if (recdat.addr == ProbeOffset_Y) { + setProbeOffset_mm(tmp_float_handling, Y); + } + else if (recdat.addr == ProbeOffset_Z) { + setProbeOffset_mm(tmp_float_handling, Z); + } + #endif + + #if ENABLED(CLASSIC_JERK) + else if (recdat.addr == Jerk_X) { + setAxisMaxJerk_mm_s(tmp_float_handling, X); + } + else if (recdat.addr == Jerk_Y) { + setAxisMaxJerk_mm_s(tmp_float_handling, Y); + } + else if (recdat.addr == Jerk_Z) { + setAxisMaxJerk_mm_s(tmp_float_handling, Z); + } + else if (recdat.addr == Jerk_E) { + setAxisMaxJerk_mm_s(tmp_float_handling, E0); + setAxisMaxJerk_mm_s(tmp_float_handling, E1); + } + #endif + + #if HAS_FILAMENT_SENSOR + else if (recdat.addr == RunoutToggle) { + setFilamentRunoutEnabled(!getFilamentRunoutEnabled()); + } + #endif + + #if ENABLED(POWER_LOSS_RECOVERY) + else if (recdat.addr == PowerLossToggle) { + setPowerLossRecoveryEnabled(!getPowerLossRecoveryEnabled()); + } + #endif + + #if ENABLED(CASE_LIGHT_ENABLE) + else if (recdat.addr == LedToggle) { + setCaseLightState(!getCaseLightState()); + } + #endif + + #if HAS_PID_HEATING + else if (recdat.addr == HotendPID_P) { + setPID(tmp_float_handling * 10, getPID_Ki(getActiveTool()), getPID_Kd(getActiveTool()), getActiveTool()); + } + else if (recdat.addr == HotendPID_I) { + setPID(getPID_Kp(getActiveTool()), tmp_float_handling * 10, getPID_Kd(getActiveTool()), getActiveTool()); + } + else if (recdat.addr == HotendPID_D) { + setPID(getPID_Kp(getActiveTool()), getPID_Ki(getActiveTool()), tmp_float_handling * 10, getActiveTool()); + } + #if ENABLED(PIDTEMPBED) + else if (recdat.addr == BedPID_P) { + setBedPID(tmp_float_handling * 10, getBedPID_Ki(), getBedPID_Kd()); + } + else if (recdat.addr == BedPID_I) { + setBedPID(getBedPID_Kp(), tmp_float_handling * 10, getBedPID_Kd()); + } + else if (recdat.addr == BedPID_D) { + setBedPID(getBedPID_Kp(), getBedPID_Ki(), tmp_float_handling * 10); + } + #endif + #endif // HAS_PID_HEATING + } + break; + + case Setting: + if (recdat.data[0] == 0) { // return to main page + InforShowStatus = true; + TPShowStatus = false; + } + else if (recdat.data[0] == 1) { // Bed Autoleveling + #if HAS_MESH + sendData(getLevelingActive() ? 3 : 2, AutoLevelIcon); + + if (ExtUI::getMeshValid()) { + uint8_t abl_probe_index = 0; + for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) + for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { + const bool zig = outer & 1; + const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; + sendData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + abl_probe_index * 2); + ++abl_probe_index; + } + } + #endif + sendData(10, FilenameIcon); // Motor Icon + injectCommands(isPositionKnown() ? F("G1F1000Z0.0") : F("G28\nG1F1000Z0.0")); + waitway = 2; + sendData(ExchangePageBase + 64, ExchangepageAddr); + } + else if (recdat.data[0] == 2) { // Exchange filament + InforShowStatus = true; + TPShowStatus = false; + ZERO(ChangeMaterialbuf); + ChangeMaterialbuf[1] = ChangeMaterialbuf[0] = 10; + sendData(10 * ChangeMaterialbuf[0], FilamentUnit1); // It's ChangeMaterialbuf for show, instead of current_position.e in them. + sendData(10 * ChangeMaterialbuf[1], FilamentUnit2); + sendData(getActualTemp_celsius(H0), NozzleTemp); + sendData(getTargetTemp_celsius(H0), NozzlePreheat); + sendData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); + sendData(TERN0(HAS_MULTI_HOTEND, getTargetTemp_celsius(H1)), e2Preheat); + delay_ms(2); + sendData(ExchangePageBase + 65, ExchangepageAddr); + } + else if (recdat.data[0] == 3) { // Move + AxisPagenum = 0; + sendData(ExchangePageBase + 71, ExchangepageAddr); + } + else if (recdat.data[0] == 4) { // Language + // Just loads language screen, now used for tools + } + else if (recdat.data[0] == 5) { // Printer Information + sendData(WEBSITE_URL, CorpWebsite); + } + else if (recdat.data[0] == 6) { // Diabalestepper + injectCommands(F("M84")); + sendData(11, FilenameIcon); + } + break; + + case ReturnBack: + if (recdat.data[0] == 1) { // return to the tool page + InforShowStatus = false; + sendData(ExchangePageBase + 63, ExchangepageAddr); + } + if (recdat.data[0] == 2) // return to the Level mode page + sendData(ExchangePageBase + 64, ExchangepageAddr); + break; + + case Bedlevel: + switch (recdat.data[0]) { + case 1: { // Z-axis to home + // Disallow Z homing if X or Y are unknown + injectCommands(isAxisPositionKnown(axis_t(X)) && isAxisPositionKnown(axis_t(Y)) ? F("G28Z\nG1F1500Z0.0") : F("G28\nG1F1500Z0.0")); + sendData(getZOffset_mm() * 100, ProbeOffset_Z); + break; + } + case 2: { // Z-axis to Up + if (WITHIN((getZOffset_mm() + 0.1), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { + smartAdjustAxis_steps(getAxisSteps_per_mm(Z) / 10, axis_t(Z), false); + //setZOffset_mm(getZOffset_mm() + 0.1); + sendData(getZOffset_mm() * 100, ProbeOffset_Z); + char zOffs[20], tmp1[11]; + sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); + onStatusChanged(zOffs); + } + break; + } + case 3: { // Z-axis to Down + if (WITHIN((getZOffset_mm() - 0.1), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { + smartAdjustAxis_steps(-getAxisSteps_per_mm(Z) / 10, axis_t(Z), false); + //babystepAxis_steps(int16_t(-getAxisSteps_per_mm(Z)) / 10, axis_t(Z)); + //setZOffset_mm(getZOffset_mm() - 0.1); + sendData(getZOffset_mm() * 100, ProbeOffset_Z); + char zOffs[20], tmp1[11]; + sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); + onStatusChanged(zOffs); + } + break; + } + case 4: { // Assistant Level + TERN_(HAS_MESH, setLevelingActive(false)); + injectCommands(isPositionKnown() ? F("G1 F1000 Z0.0") : F("G28\nG1 F1000 Z0.0")); + waitway = 2; + sendData(ExchangePageBase + 84, ExchangepageAddr); + break; + } + case 5: { // AutoLevel "Measuring" Button + #if ENABLED(MESH_BED_LEVELING) + sendData(ExchangePageBase + 93, ExchangepageAddr); + #else + waitway = 3; // only for prohibiting to receive massage + sendData(3, AutolevelIcon); + uint8_t abl_probe_index = 0; + while (abl_probe_index < 25) { + sendData(0, AutolevelVal + abl_probe_index * 2); + ++abl_probe_index; + } + sendData(ExchangePageBase + 64, ExchangepageAddr); + injectCommands(F(MEASURING_GCODE)); + #endif + break; + } + + case 6: { // Assitant Level , Centre 1 + setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); + setAxisPosition_mm(X_CENTER, axis_t(X)); + setAxisPosition_mm(Y_CENTER, axis_t(Y)); + waitway = 6; + break; + } + case 7: { // Assitant Level , Front Left 2 + setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); + setAxisPosition_mm(X_MIN_BED + lfrb[0], axis_t(X)); + setAxisPosition_mm(Y_MIN_BED + lfrb[1], axis_t(Y)); + waitway = 6; + break; + } + case 8: { // Assitant Level , Front Right 3 + setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); + setAxisPosition_mm(X_MAX_BED - lfrb[2], axis_t(X)); + setAxisPosition_mm(Y_MIN_BED + lfrb[1], axis_t(Y)); + waitway = 6; + break; + } + case 9: { // Assitant Level , Back Right 4 + setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); + setAxisPosition_mm(X_MAX_BED - lfrb[2], axis_t(X)); + setAxisPosition_mm(Y_MAX_BED - lfrb[3], axis_t(Y)); + waitway = 6; + break; + } + case 10: { // Assitant Level , Back Left 5 + setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); + setAxisPosition_mm(X_MIN_BED + lfrb[0], axis_t(X)); + setAxisPosition_mm(Y_MAX_BED - lfrb[3], axis_t(Y)); + waitway = 6; + break; + } + case 11: { // Autolevel switch + #if HAS_MESH + const bool gla = !getLevelingActive(); + setLevelingActive(gla); + sendData(gla ? 3 : 2, AutoLevelIcon); + #endif + sendData(getZOffset_mm() * 100, ProbeOffset_Z); + break; + } + case 12: { + injectCommands(F("G26R255")); + onStatusChanged(F("Beginning G26.. Heating")); + break; + } + case 13: { + injectCommands(F("G29S1")); + onStatusChanged(F("Begin Manual Mesh")); + break; + } + case 14: { + injectCommands(F("G29S2")); + onStatusChanged(F("Moving to Next Mesh Point")); + break; + } + case 15: { + injectCommands(F("M211S0\nG91\nG1Z-0.025\nG90\nM211S1")); + onStatusChanged(F("Moved down 0.025")); + break; + } + case 16: { + injectCommands(F("M211S0\nG91\nG1Z0.025\nG90\nM211S1")); + onStatusChanged(F("Moved up 0.025")); + break; + } + case 17: { + Settings.display_volume = 0; + Settings.display_sound = false; + setTouchScreenConfiguration(); + break; + } + case 18: { + Settings.display_volume = 255; + Settings.display_sound = true; + setTouchScreenConfiguration(); + break; + } + case 19: { + Settings.screen_brightness = 10; + setTouchScreenConfiguration(); + break; + } + case 20: { + Settings.screen_brightness = 100; + setTouchScreenConfiguration(); + break; + } + case 21: { + Settings.display_standby ^= true; + setTouchScreenConfiguration(); + break; + } + case 22: { + Settings.screen_rotation = Settings.screen_rotation == 10 ? 0 : 10; + setTouchScreenConfiguration(); + break; + } + case 23: { // Set IDEX Autopark + injectCommands(F("M605S1\nG28X\nG1X0")); + break; + } + case 24: { // Set IDEX Duplication + injectCommands(F("M605S1\nT0\nG28\nM605S2\nG28X\nG1X0")); + break; + } + case 25: { // Set IDEX Mirrored Duplication + injectCommands(F("M605S1\nT0\nG28\nM605S2\nG28X\nG1X0\nM605S3")); + break; + } + case 26: { // Set IDEX Full Control + injectCommands(F("M605S0\nG28X")); + break; + } + case 27: { // Change Tool + setActiveTool(getActiveTool() == E0 ? E1 : E0, !isAxisPositionKnown(X)); + break; + } + default: break; + } + + sendData(10, FilenameIcon); + break; + + case XYZEaxis: { + axis_t axis = X; + float min = 0.0f, max = 0.0f; + waitway = 4; + if (recdat.addr == DisplayXaxis) { + axis = X; + min = X_MIN_POS; + max = X_MAX_POS; + } + else if (recdat.addr == DisplayYaxis) { + axis = Y; + min = Y_MIN_POS; + max = Y_MAX_POS; + } + else if (recdat.addr == DisplayZaxis) { + axis = Z; + min = Z_MIN_POS; + max = Z_MAX_POS; + } + else if (recdat.addr == AutoZero) { + if (recdat.data[0] == 3) { // autohome + waitway = 4; + injectCommands(F("G28\nG1 F1000 Z10")); + InforShowStatus = AutohomeKey = true; + AutoHomeIconNum = 0; + sendData(10, FilenameIcon); + } + else { + AxisPagenum = recdat.data[0]; + waitway = 0; + } + break; + } + + float targetPos = float(recdat.data[0]) / 10; + LIMIT(targetPos, min, max); + setAxisPosition_mm(targetPos, axis); + waitway = 0; + sendData(10, FilenameIcon); + break; + } + + case Filament: + + uint16_t IconTemp; + if (recdat.addr == Exchfilament) { + if (getActualTemp_celsius(getActiveTool()) < EXTRUDE_MINTEMP && recdat.data[0] < 5) { + sendData(int16_t(EXTRUDE_MINTEMP), 0x1020); + delay_ms(5); + sendData(ExchangePageBase + 66, ExchangepageAddr); + break; + } + + switch (recdat.data[0]) { + case 1: { // Unload filament1 + setAxisPosition_mm(getAxisPosition_mm(E0) - ChangeMaterialbuf[0], E0); + break; + } + case 2: { // Load filament1 + setAxisPosition_mm(getAxisPosition_mm(E0) + ChangeMaterialbuf[0], E0); + break; + } + case 3: { // Unload filament2 + setAxisPosition_mm(getAxisPosition_mm(E1) - ChangeMaterialbuf[1], E1); + break; + } + case 4: { // Load filament2 + setAxisPosition_mm(getAxisPosition_mm(E1) + ChangeMaterialbuf[1], E1); + break; + } + case 5: { // sure to heat + NozzleTempStatus[0] = 1; + + setTargetTemp_celsius((PREHEAT_1_TEMP_HOTEND + 10), getActiveTool()); + IconTemp = getActualTemp_celsius(getActiveTool()) * 100 / getTargetTemp_celsius(getActiveTool()); + NOMORE(IconTemp, 100U); + sendData(IconTemp, HeatPercentIcon); + + sendData(getActualTemp_celsius(H0), NozzleTemp); + sendData(getTargetTemp_celsius(H0), NozzlePreheat); + sendData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); + sendData(TERN0(HAS_MULTI_HOTEND, getTargetTemp_celsius(H1)), e2Preheat); + delay_ms(5); + sendData(ExchangePageBase + 68, ExchangepageAddr); + break; + } + case 6: { // cancel to heat + sendData(ExchangePageBase + 65, ExchangepageAddr); + break; + } + case 0xF1: { // Sure to cancel heating + NozzleTempStatus[0] = 0; + delay_ms(1); + sendData(ExchangePageBase + 65, ExchangepageAddr); + break; + } + case 0xF0: // not to cancel heating + break; + } + sendData(10 * ChangeMaterialbuf[0], FilamentUnit1); // It's ChangeMaterialbuf for show, instead of current_position.e in them. + sendData(10 * ChangeMaterialbuf[1], FilamentUnit2); + } + else if (recdat.addr == FilamentUnit1) { + ChangeMaterialbuf[0] = float(recdat.data[0]) / 10; + } + else if (recdat.addr == FilamentUnit2) { + ChangeMaterialbuf[1] = float(recdat.data[0]) / 10; + } + break; + + case LanguageChoice: + + //if (recdat.data[0] == 1) settings.save(); else injectCommands(F("M300")); + + // may at some point use language change screens to save eeprom explicitly + switch (recdat.data[0]) { + case 0: { + injectCommands(F("M500")); + break; + } + case 1: { + sendData(ExchangePageBase + 94, ExchangepageAddr); + break; + } + + #if ENABLED(PIDTEMP) + case 2: { + onStatusChanged(F("Hotend PID Started")); + startPIDTune(static_cast(pid_hotendAutoTemp), getActiveTool()); + break; + } + #endif + + case 3: { + injectCommands(F("M502\nM500")); + break; + } + case 4: { + injectCommands(F("M999\nM280P0S160")); + break; + } + + case 5: { + #if ENABLED(PIDTEMPBED) + onStatusChanged(F("Bed PID Started")); + startBedPIDTune(static_cast(pid_bedAutoTemp)); + #endif + break; + } + case 6: { + injectCommands(F("M500")); + break; + } + default: break; + } + break; + + case No_Filament: + if (recdat.data[0] == 1) { // Filament is out, resume / resume selected on screen + if (ExtUI::pauseModeStatus != PAUSE_MESSAGE_PURGE && ExtUI::pauseModeStatus != PAUSE_MESSAGE_OPTION) { + // setPauseMenuResponse(PAUSE_RESPONSE_RESUME_PRINT); + setUserConfirmed(); + // PrinterStatusKey[1] = 3; + // pause_resume_selected = true; + } + else { + #if ENABLED(FILAMENT_RUNOUT_SENSOR) + bool runouton = false; + if (getFilamentRunoutState()) { + #if NUM_RUNOUT_SENSORS > 1 + if ((runouton = getFilamentRunoutEnabled(getActiveTool()))) + ExtUI::setFilamentRunoutEnabled(false, getActiveTool()); + #else + if ((runouton = getFilamentRunoutEnabled())) + ExtUI::setFilamentRunoutEnabled(false); + #endif + } + #else + constexpr bool runouton = false; + #endif + if (!runouton) { + setPauseMenuResponse(PAUSE_RESPONSE_RESUME_PRINT); + setUserConfirmed(); + PrinterStatusKey[1] = 3; + pause_resume_selected = true; + } + } + } + else if (recdat.data[0] == 0) { // Filamet is out, Cancel Selected + if (ExtUI::pauseModeStatus == PAUSE_MESSAGE_PURGE || ExtUI::pauseModeStatus == PAUSE_MESSAGE_OPTION) { + setPauseMenuResponse(PAUSE_RESPONSE_EXTRUDE_MORE); + setUserConfirmed(); + } + } + break; + + #if ENABLED(POWER_LOSS_RECOVERY) + case PwrOffNoF: + if (recdat.data[0] == 1) // Yes: continue to print the 3Dmode during power-off. + injectCommands(F("M1000")); + else if (recdat.data[0] == 2) // No + injectCommands(F("M1000C")); + break; + #endif + + case Volume: + if (recdat.data[0] < 0) + Settings.display_volume = 0; + else if (recdat.data[0] > 255) + Settings.display_volume = 0xFF; + else + Settings.display_volume = recdat.data[0]; + + if (Settings.display_volume == 0) { + sendData(0, VolumeIcon); + sendData(9, SoundIcon); + } + else { + sendData((Settings.display_volume + 1) / 32 - 1, VolumeIcon); + sendData(8, SoundIcon); + } + sendData(Settings.display_volume << 8, SoundAddr + 1); + break; + + case Filename: + if (isMediaInserted() && recdat.addr == FilenameChs) { + + recordcount = recdat.data[0] - 1; + if (filenavigator.currentindex == 0 && filenavigator.folderdepth > 0 && (fileIndex + recordcount) == 0) { + filenavigator.upDIR(); + filenavigator.getFiles(0); + fileIndex = 0; + return; + } + + if (filenavigator.currentindex == 0 && filenavigator.folderdepth > 0) + recordcount = recordcount - 1; // account for return dir link in file index + + for (int16_t j = 1; j <= 4; j++) { // Clear filename BG Color and Frame + sendData(0xFFFFUL, FilenameNature + j * 16); // white + sendData(10, FilenameIcon1 + j); // clean + } + for (int16_t j = 0; j < 10; j++) // clear current filename + sendData(0, Choosefilename + j); + + if (filenavigator.getIndexisDir(fileIndex + recordcount)) { + filenavigator.changeDIR((char *)filenavigator.getIndexName(fileIndex + recordcount)); + filenavigator.getFiles(0); + fileIndex = 0; + return; + } + else { + sendData(filenavigator.getIndexName(fileIndex + recordcount), Choosefilename); + sendData(0x87F0UL, FilenameNature + recdat.data[0] * 16); // Change BG of selected line to Light Green + sendData(6, FilenameIcon1 + recdat.data[0]); // show frame + } + } + else if (recdat.addr == FilenamePlay) { + if (recdat.data[0] == 1 && isMediaInserted()) { // for sure + printFile(filenavigator.getIndexName(fileIndex + recordcount)); + + for (int16_t j = 0; j < 10; j++) // clean screen. + sendData(0, Printfilename + j); + + sendData(filenavigator.getIndexName(fileIndex + recordcount), Printfilename); + + delay_ms(4); + + sendData(ExchangePageBase + 53, ExchangepageAddr); + + TPShowStatus = InforShowStatus = true; + PrinterStatusKey[0] = 1; + PrinterStatusKey[1] = 3; + fileIndex = 0; + recordcount = 0; + } + else if (recdat.data[0] == 2) { // Page Down + if ((fileIndex + DISPLAY_FILES) < (filenavigator.maxFiles() + (filenavigator.folderdepth != 0))) { + fileIndex = fileIndex + DISPLAY_FILES; + // if(filenavigator.folderdepth!=0 && fileIndex!=0) //Shift to acknowledge Return DIR button on first page + // filenavigator.getFiles(fileIndex-1); + // else + filenavigator.getFiles(fileIndex); + // filenavigator.getFiles(filenavigator.currentindex+1); + } + } + else if (recdat.data[0] == 3) { // Page Up + if (fileIndex >= DISPLAY_FILES) { + fileIndex = fileIndex - DISPLAY_FILES; + // if(filenavigator.folderdepth!=0 && fileIndex!=0) //Shift to acknowledge Return DIR button on first page + // filenavigator.getFiles(filenavigator.currentindex-DISPLAY_FILES); + // else + filenavigator.getFiles(fileIndex); + } + } + else if (recdat.data[0] == 4) { // Page Up + injectCommands(F("M22\nM21")); + } + else if (recdat.data[0] == 0) { // return to main page + InforShowStatus = true; + TPShowStatus = false; + } + } + break; + + case VolumeDisplay: { + if (recdat.data[0] == 0) { + Settings.display_volume = 0; + Settings.display_sound = false; + } + else if (recdat.data[0] > 100) { + Settings.display_volume = 255; + Settings.display_sound = true; + } + else { + Settings.display_volume = (uint8_t)map(constrain(recdat.data[0], 0, 100), 0, 100, 0, 255); + Settings.display_sound = true; + } + setTouchScreenConfiguration(); + break; + } + + case DisplayBrightness: { + if (recdat.data[0] < 10) + Settings.screen_brightness = 10; + else if (recdat.data[0] > 100) + Settings.screen_brightness = 100; + else + Settings.screen_brightness = (uint8_t)recdat.data[0]; + setTouchScreenConfiguration(); + break; + } + + case DisplayStandbyBrightness: { + if (recdat.data[0] < 10) + Settings.standby_screen_brightness = 10; + else if (recdat.data[0] > 100) + Settings.standby_screen_brightness = 100; + else + Settings.standby_screen_brightness = (uint8_t)recdat.data[0]; + setTouchScreenConfiguration(); + break; + } + + case DisplayStandbySeconds: { + if (recdat.data[0] < 5) + Settings.standby_time_seconds = 5; + else if (recdat.data[0] > 100) + Settings.standby_time_seconds = 100; + else + Settings.standby_time_seconds = (uint8_t)recdat.data[0]; + setTouchScreenConfiguration(); + break; + } + + case AutolevelVal: { + uint8_t meshPoint = (recdat.addr - AutolevelVal) / 2, + yPnt = floor(meshPoint / GRID_MAX_POINTS_X), + xPnt = meshPoint - (yPnt * GRID_MAX_POINTS_X); + if (yPnt % 2 != 0) xPnt = (GRID_MAX_POINTS_X - 1) - xPnt; // zag row + + float meshVal = float(recdat.data[0] - (recdat.data[0] >= 32768 ? 65536 : 0)) / 1000; + + LIMIT(meshVal, Z_PROBE_LOW_POINT, Z_CLEARANCE_BETWEEN_PROBES); + xy_uint8_t point = { xPnt, yPnt }; + setMeshPoint(point, meshVal); + sendData(meshVal * 1000, recdat.addr); + break; + } + + default: break; + } + + memset(&recdat, 0, sizeof(recdat)); + recdat.head[0] = FHONE; + recdat.head[1] = FHTWO; +} + +void RTS::writeVariable(const uint16_t adr, const void * const values, uint8_t valueslen, const bool isstr/*=false*/, const char fillChar/*=' '*/) { + const char* myvalues = static_cast(values); + bool strend = !myvalues; + DWIN_SERIAL.write(FHONE); + DWIN_SERIAL.write(FHTWO); + DWIN_SERIAL.write(valueslen + 3); + DWIN_SERIAL.write(0x82); + DWIN_SERIAL.write(adr >> 8); + DWIN_SERIAL.write(adr & 0xFF); + while (valueslen--) { + char x; + if (!strend) x = *myvalues++; + if ((isstr && !x) || strend) { + strend = true; + x = fillChar; + } + DWIN_SERIAL.write(x); + } +} + +void RTS::setTouchScreenConfiguration() { + // Main configuration (System_Config) + LIMIT(Settings.screen_brightness, 10, 100); // Prevent a possible all-dark screen + LIMIT(Settings.standby_time_seconds, 10, 655); // Prevent a possible all-dark screen for standby, yet also don't go higher than the DWIN limitation + + uint8_t cfg_bits = (0x0 + | _BV(7) // 7: Enable Control ... TERN0(DWINOS_4, _BV(7)) + | _BV(5) // 5: load 22 touch file + | _BV(4) // 4: auto-upload should always be enabled + | (Settings.display_sound ? _BV(3) : 0) // 3: audio + | (Settings.display_standby ? _BV(2) : 0) // 2: backlight on standby + | (Settings.screen_rotation == 10 ? _BV(1) : 0) // 1 & 0: Inversion + #if LCD_SCREEN_ROTATE == 90 + | _BV(0) // Portrait Mode or 800x480 display has 0 point rotated 90deg from 480x272 display + #elif LCD_SCREEN_ROTATE + #error "Only 90° rotation is supported for the selected LCD." + #endif + ); + + const uint8_t config_set[] = { 0x5A, 0x00, TERN(DWINOS_4, 0x00, 0xFF), cfg_bits }; + writeVariable(0x80 /*System_Config*/, config_set, sizeof(config_set)); + + // Standby brightness (LED_Config) + uint16_t dwinStandbyTimeSeconds = 100 * Settings.standby_time_seconds; /* milliseconds, but divided by 10 (not 5 like the docs say) */ + const uint8_t brightness_set[] = { + Settings.screen_brightness /*% active*/, + Settings.standby_screen_brightness /*% standby*/, + static_cast(dwinStandbyTimeSeconds >> 8), + static_cast(dwinStandbyTimeSeconds) + }; + writeVariable(0x82 /*LED_Config*/, brightness_set, sizeof(brightness_set)); + + if (!Settings.display_sound) { + sendData(0, VolumeIcon); + sendData(9, SoundIcon); + } + else { + sendData((Settings.display_volume + 1) / 32 - 1, VolumeIcon); + sendData(8, SoundIcon); + } + sendData(Settings.display_volume, VolumeIcon - 2); + sendData(Settings.display_volume << 8, SoundAddr + 1); + sendData(map(constrain(Settings.display_volume, 0, 255), 0, 255, 0, 100), VolumeDisplay); + sendData(Settings.screen_brightness, DisplayBrightness); + sendData(Settings.standby_screen_brightness, DisplayStandbyBrightness); + sendData(Settings.standby_time_seconds, DisplayStandbySeconds); + if (Settings.display_standby) + sendData(3, DisplayStandbyEnableIndicator); + else + sendData(2, DisplayStandbyEnableIndicator); +} + +namespace ExtUI { + + void onStartup() { rts.onStartup(); } + + void onIdle() { rts.onIdle(); } + + void onPrinterKilled(FSTR_P const error, FSTR_P const component) { + rts.sendData(ExchangePageBase + 88, ExchangepageAddr); + int16_t j = 0; + char outmsg[40]; + char killMsg[strlen_P(FTOP(error)) + strlen_P(FTOP(component)) + 3]; + sprintf_P(killMsg, PSTR(S_FMT ": " S_FMT), FTOP(error), FTOP(component)); + while (j < 4) outmsg[j++] = '*'; + while (const char c = killMsg[j - 4]) outmsg[j++] = c; + while (j < 40) outmsg[j++] = '*'; + rts.sendData(outmsg, MacVersion); + delay_ms(10); + } + + void onMediaInserted() { + filenavigator.reset(); + filenavigator.getFiles(0); + fileIndex = 0; + recordcount = 0; + } + + void onMediaError() { + filenavigator.reset(); + for (int16_t i = 0; i < MaxFileNumber; i++) + for (int16_t j = 0; j < 10; j++) rts.sendData(0, SDFILE_ADDR + i * 10 + j); + + for (int16_t j = 0; j < 10; j++) { + rts.sendData(0, Printfilename + j); // clean screen. + rts.sendData(0, Choosefilename + j); // clean filename + } + for (int16_t j = 0; j < 8; j++) rts.sendData(0, FilenameCount + j); + for (int16_t j = 1; j <= MaxFileNumber; j++) { + rts.sendData(10, FilenameIcon + j); + rts.sendData(10, FilenameIcon1 + j); + } + } + + void onMediaRemoved() { + filenavigator.reset(); + for (int16_t i = 0; i < MaxFileNumber; i++) + for (int16_t j = 0; j < 10; j++) rts.sendData(0, SDFILE_ADDR + i * 10 + j); + + for (int16_t j = 0; j < 10; j++) { + rts.sendData(0, Printfilename + j); // clean screen. + rts.sendData(0, Choosefilename + j); // clean filename + } + for (int16_t j = 0; j < 8; j++) rts.sendData(0, FilenameCount + j); + for (int16_t j = 1; j <= MaxFileNumber; j++) { + rts.sendData(10, FilenameIcon + j); + rts.sendData(10, FilenameIcon1 + j); + } + } + + void onPlayTone(const uint16_t frequency, const uint16_t duration) { + rts.sendData(StartSoundSet, SoundAddr); + } + + void onPrintTimerStarted() { + if (waitway == 7) return; + PrinterStatusKey[1] = 3; + InforShowStatus = true; + delay_ms(1); + rts.sendData(ExchangePageBase + 53, ExchangepageAddr); + } + + void onPrintTimerPaused() { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); // Display Pause Screen + onStatusChanged(F("Pausing...")); + } + + void onPrintTimerStopped() { + if (waitway == 3) return; + + #if FAN_COUNT > 0 + for (uint8_t i = 0; i < FAN_COUNT; i++) setTargetFan_percent(FanOff, (fan_t)i); + #endif + + PrinterStatusKey[0] = 0; + InforShowStatus = true; + TPShowStatus = false; + rts.sendData(ExchangePageBase + 51, ExchangepageAddr); + } + + void onFilamentRunout() { + PrinterStatusKey[1] = 4; + TPShowStatus = false; + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + } + + void onFilamentRunout(extruder_t extruder) { + PrinterStatusKey[1] = 4; + TPShowStatus = false; + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + } + + void onUserConfirmRequired(const char *const msg) { + PrinterStatusKey[1] = 4; + TPShowStatus = false; + if (lastPauseMsgState == ExtUI::pauseModeStatus && msg == (const char*)GET_TEXT_F(MSG_FILAMENT_CHANGE_LOAD)) + return; + + switch (ExtUI::pauseModeStatus) { + case PAUSE_MESSAGE_WAITING: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Press Yes to Continue")); + break; + } + case PAUSE_MESSAGE_INSERT: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Load Filament to Continue")); + break; + } + case PAUSE_MESSAGE_HEAT: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Add Filament and Press Yes to Reheat")); + break; + } + + #if DISABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE) + case PAUSE_MESSAGE_PURGE: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + char newMsg[40] = "Yes to "; + strcat_P(newMsg, TERN1(FILAMENT_RUNOUT_SENSOR, !ExtUI::getFilamentRunoutState() && getFilamentRunoutEnabled()) ? PSTR("Continue") : PSTR("Disable ")); + strcat_P(newMsg, PSTR(" No to Purge")); + onStatusChanged(newMsg); + break; + } + #endif + + case PAUSE_MESSAGE_OPTION: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + char newMsg[40] = "Yes to "; + strcat_P(newMsg, TERN1(FILAMENT_RUNOUT_SENSOR, !ExtUI::getFilamentRunoutState() && getFilamentRunoutEnabled()) ? PSTR("Continue") : PSTR("Disable ")); + strcat_P(newMsg, PSTR(" No to Purge")); + onStatusChanged(newMsg); + break; + } + + case PAUSE_MESSAGE_PARKING: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Parking...")); + break; + } + case PAUSE_MESSAGE_CHANGING: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Beginning Filament Change")); + break; + } + case PAUSE_MESSAGE_UNLOAD: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Unloading...")); + break; + } + case PAUSE_MESSAGE_LOAD: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Reloading...")); + break; + } + case PAUSE_MESSAGE_RESUME: + #if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE) + case PAUSE_MESSAGE_PURGE: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Press Yes to Stop Purge")); + break; + } + #endif + + case PAUSE_MESSAGE_HEATING: { + rts.sendData(ExchangePageBase + 68, ExchangepageAddr); + onStatusChanged(F("Reheating")); + break; + } + + case PAUSE_MESSAGE_STATUS: + default: { + setPauseMenuResponse(PAUSE_RESPONSE_RESUME_PRINT); + setUserConfirmed(); + break; + } + } + lastPauseMsgState = ExtUI::pauseModeStatus; + } + + void onStatusChanged(const char *const statMsg) { + for (int16_t j = 0; j < 20; j++) // Clear old message + rts.sendData(' ', StatusMessageString + j); + rts.sendData(statMsg, StatusMessageString); + } + + void onFactoryReset() { + Settings.settings_size = sizeof(creality_dwin_settings_t); + Settings.settings_version = dwin_settings_version; + Settings.display_standby = true; + Settings.display_sound = true; + Settings.display_volume = 32; + Settings.standby_screen_brightness = 15; + Settings.screen_brightness = 100; + Settings.standby_time_seconds = 60; + Settings.screen_rotation = 0; + onStartup(); + startprogress = 0; + InforShowStatus = true; + } + + void onMeshUpdate(const int8_t xpos, const int8_t ypos, probe_state_t state) {} + + void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval) { + if (waitway == 3) + if (isPositionKnown() && (getActualTemp_celsius(BED) >= (getTargetTemp_celsius(BED) - 1))) + rts.sendData(ExchangePageBase + 64, ExchangepageAddr); + #if HAS_MESH + uint8_t abl_probe_index = 0; + for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) + for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { + const bool zig = outer & 1; // != ((PR_OUTER_END) & 1); + const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; + if (point.x == xpos && outer == ypos) + rts.sendData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + (abl_probe_index * 2)); + ++abl_probe_index; + } + #endif + } + + void onStoreSettings(char *buff) { + static_assert( + ExtUI::eeprom_data_size >= sizeof(creality_dwin_settings_t), + "Insufficient space in EEPROM for UI parameters" + ); + + // Write to buffer + memcpy(buff, &Settings, sizeof(creality_dwin_settings_t)); + } + + void onLoadSettings(const char *buff) { + static_assert( + ExtUI::eeprom_data_size >= sizeof(creality_dwin_settings_t), + "Insufficient space in EEPROM for UI parameters" + ); + + creality_dwin_settings_t eepromSettings; + memcpy(&eepromSettings, buff, sizeof(creality_dwin_settings_t)); + + // If size is not the same, discard settings + if (eepromSettings.settings_size != sizeof(creality_dwin_settings_t)) { + onFactoryReset(); + return; + } + + if (eepromSettings.settings_version != dwin_settings_version) { + onFactoryReset(); + return; + } + + // Copy into final location + memcpy(&Settings, &eepromSettings, sizeof(creality_dwin_settings_t)); + + rts.setTouchScreenConfiguration(); + } + + void onSettingsStored(const bool success) { + // This is called after the entire EEPROM has been written, + // whether successful or not. + } + + void onSettingsLoaded(const bool success) { + #if HAS_MESH + if (ExtUI::getMeshValid()) { + uint8_t abl_probe_index = 0; + for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) + for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { + const bool zig = outer & 1; + const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; + rts.sendData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + (abl_probe_index * 2)); + ++abl_probe_index; + } + + rts.sendData(3, AutoLevelIcon); // 2=On, 3=Off + setLevelingActive(true); + } + else { + rts.sendData(2, AutoLevelIcon); /*Off*/ + setLevelingActive(false); + } + #endif + + rts.sendData(getZOffset_mm() * 100, ProbeOffset_Z); + rts.setTouchScreenConfiguration(); + } + + #if ENABLED(POWER_LOSS_RECOVERY) + void onSetPowerLoss(const bool onoff) { + // Called when power-loss is enabled/disabled + } + void onPowerLoss() { + // Called when power-loss state is detected + } + void onPowerLossResume() { + startprogress = 254; + InforShowStatus = true; + TPShowStatus = false; + reEntryPrevent = false; + rts.sendData(ExchangePageBase + 76, ExchangepageAddr); + } + #endif + + #if HAS_PID_HEATING + void onPidTuning(const result_t rst) { + // Called for temperature PID tuning result + rts.sendData(pid_hotendAutoTemp, HotendPID_AutoTmp); + rts.sendData(pid_bedAutoTemp, BedPID_AutoTmp); + rts.sendData(uint16_t(getPID_Kp(E0)) * 10, HotendPID_P); + rts.sendData(uint16_t(getPID_Ki(E0)) * 10, HotendPID_I); + rts.sendData(uint16_t(getPID_Kd(E0)) * 10, HotendPID_D); + #if ENABLED(PIDTEMPBED) + rts.sendData(uint16_t(getBedPID_Kp()) * 10, BedPID_P); + rts.sendData(uint16_t(getBedPID_Ki()) * 10, BedPID_I); + rts.sendData(uint16_t(getBedPID_Kd()) * 10, BedPID_D); + #endif + onStatusChanged(F("PID Tune Finished")); + } + #endif + + void onLevelingStart() {} + + void onLevelingDone() { + #if HAS_MESH + if (ExtUI::getMeshValid()) { + uint8_t abl_probe_index = 0; + for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) + for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { + const bool zig = outer & 1; + const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; + rts.sendData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + abl_probe_index * 2); + ++abl_probe_index; + } + + rts.sendData(3, AutoLevelIcon); // 2=On, 3=Off + setLevelingActive(true); + } + else { + rts.sendData(2, AutoLevelIcon); /*Off*/ + setLevelingActive(false); + } + #endif + } + + void onSteppersEnabled() {} + void onPrintDone() {} + void onHomingStart() {} + void onHomingDone() {} + void onSteppersDisabled() {} + void onPostprocessSettings() {} + +} // namespace ExtUI + +#endif // DGUS_LCD_UI_IA_CREALITY diff --git a/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.h b/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.h index ba5df4fe77..af3824e904 100644 --- a/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.h +++ b/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.h @@ -47,7 +47,7 @@ #define FileNum MaxFileNumber #define FileNameLen TEXTBYTELEN -#define SizeofDatabuf 46 +#define DATA_BUF_SIZE 46 //#define FONT_EEPROM 90 //#define AutoLeve_EEPROM 100 @@ -177,122 +177,114 @@ #define StatusMessageString 0x2064 +// TODO: Use LCD_SERIAL 1 or 3 (?) by configuration, not overriding here #ifdef TARGET_STM32F4 #define DWIN_SERIAL Serial1 #else #define DWIN_SERIAL LCD_SERIAL #endif -namespace ExtUI { +/************struct**************/ - /************struct**************/ +typedef enum : uint8_t { + DGUS_IDLE, //< waiting for DGUS_HEADER1. + DGUS_HEADER1_SEEN, //< DGUS_HEADER1 received + DGUS_HEADER2_SEEN, //< DGUS_HEADER2 received + DGUS_WAIT_TELEGRAM, //< LEN received, Waiting for to receive all bytes. +} rx_datagram_state_t; - typedef enum : uint8_t { - DGUS_IDLE, //< waiting for DGUS_HEADER1. - DGUS_HEADER1_SEEN, //< DGUS_HEADER1 received - DGUS_HEADER2_SEEN, //< DGUS_HEADER2 received - DGUS_WAIT_TELEGRAM, //< LEN received, Waiting for to receive all bytes. - } rx_datagram_state_t; +typedef struct DataBuf { + uint8_t len; + uint8_t head[2]; + uint8_t command; + uint32_t addr; + uint32_t bytelen; + uint16_t data[32]; + uint8_t reserv[4]; +} DB; - typedef struct DataBuf { - uint8_t len; - uint8_t head[2]; - uint8_t command; - uint32_t addr; - uint32_t bytelen; - uint16_t data[32]; - uint8_t reserv[4]; - } DB; +struct creality_dwin_settings_t { + size_t settings_size; + uint8_t settings_version; - struct creality_dwin_settings_t { - size_t settings_size; - uint8_t settings_version; + bool display_standby; + bool display_sound; + int8_t screen_rotation; + int16_t display_volume; + uint8_t standby_screen_brightness; + uint8_t screen_brightness; + int16_t standby_time_seconds; +}; - bool display_standby; - bool display_sound; - int8_t screen_rotation; - int16_t display_volume; - uint8_t standby_screen_brightness; - uint8_t screen_brightness; - int16_t standby_time_seconds; - }; +class RTS { + public: + RTS(); + static void onStartup(); + static void onIdle(); + static int16_t receiveData(); + static void sendData(); + static void sendData(const String&, const uint32_t, const uint8_t=VarAddr_W); + static void sendData(const char[], const uint32_t, const uint8_t=VarAddr_W); + static void sendData(char, const uint32_t, const uint8_t=VarAddr_W); + static void sendData(int, const uint32_t, const uint8_t=VarAddr_W); + static void sendData(unsigned long, const uint32_t, const uint8_t=VarAddr_W); + static void sendData(const_float_t, const uint32_t, const uint8_t=VarAddr_W); - void SetTouchScreenConfiguration(); + static void sendData(uint8_t * const str, const uint32_t addr, const uint8_t cmd=VarAddr_W) { sendData((char *)str, addr, cmd); } + static void sendData(const unsigned int n, uint32_t addr, const uint8_t cmd=VarAddr_W) { sendData(int(n), addr, cmd); } + static void sendData(const long n, const uint32_t addr, const uint8_t cmd=VarAddr_W) { sendData((unsigned long)n, addr, cmd); } - class RTSSHOW { - public: - RTSSHOW(); - int16_t RTS_RecData(); - void RTS_SDCardInit(); - void RTS_SDCardUpate(bool, bool); - int16_t RTS_CheckFilament(int16_t); - void RTS_SndData(); - void RTS_SndData(const String&, const uint32_t, const uint8_t=VarAddr_W); - void RTS_SndData(const char[], const uint32_t, const uint8_t=VarAddr_W); - void RTS_SndData(char, const uint32_t, const uint8_t=VarAddr_W); - void RTS_SndData(int, const uint32_t, const uint8_t=VarAddr_W); - void RTS_SndData(unsigned long, const uint32_t, const uint8_t=VarAddr_W); - void RTS_SndData(const_float_t, const uint32_t, const uint8_t=VarAddr_W); + static void handleData(); - void RTS_SndData(uint8_t * const str, const uint32_t addr, const uint8_t cmd=VarAddr_W) { RTS_SndData((char *)str, addr, cmd); } - void RTS_SndData(const unsigned int n, uint32_t addr, const uint8_t cmd=VarAddr_W) { RTS_SndData(int(n), addr, cmd); } - void RTS_SndData(const long n, const uint32_t addr, const uint8_t cmd=VarAddr_W) { RTS_SndData((unsigned long)n, addr, cmd); } + static void writeVariable(const uint16_t adr, const void * const values, uint8_t valueslen, const bool isstr=false, const char fillChar=' '); + static void setTouchScreenConfiguration(); - void RTS_SDcard_Stop(); - void RTS_HandleData(); - void RTS_Init(); + static DB recdat, snddat; + static uint8_t databuf[DATA_BUF_SIZE]; - DB recdat; - DB snddat; - uint8_t databuf[SizeofDatabuf]; + static rx_datagram_state_t rx_datagram_state; + static uint8_t rx_datagram_len; +}; - static rx_datagram_state_t rx_datagram_state; - static uint8_t rx_datagram_len; - static bool Initialized; - }; +extern RTS rts; - static RTSSHOW rtscheck; +#define Addvalue 3 +#define PrintChoice_Value (0 + Addvalue) +#define Zoffset_Value (3 + Addvalue) +#define Setting_Value (8 + Addvalue) +#define XYZEaxis_Value (12 + Addvalue) +#define Filament_Value (15 + Addvalue) +#define Language_Value (18 + Addvalue) +#define Filename_Value (22 + Addvalue) - #define Addvalue 3 - #define PrintChoice_Value (0 + Addvalue) - #define Zoffset_Value (3 + Addvalue) - #define Setting_Value (8 + Addvalue) - #define XYZEaxis_Value (12 + Addvalue) - #define Filament_Value (15 + Addvalue) - #define Language_Value (18 + Addvalue) - #define Filename_Value (22 + Addvalue) +enum PROC_COM { + Printfile = 0, + Adjust, + Feedrate, + PrintChoice = PrintChoice_Value, + Zoffset = Zoffset_Value, + TempControl, + ManualSetTemp, + Setting = Setting_Value, + ReturnBack, + Bedlevel, + Autohome, + XYZEaxis = XYZEaxis_Value, + Filament = Filament_Value, + LanguageChoice = Language_Value, + No_Filament, + PwrOffNoF, + Volume, + Filename = Filename_Value +}; - enum PROC_COM { - Printfile = 0, - Adjust, - Feedrate, - PrintChoice = PrintChoice_Value, - Zoffset = Zoffset_Value, - TempControl, - ManualSetTemp, - Setting = Setting_Value, - ReturnBack, - Bedlevel, - Autohome, - XYZEaxis = XYZEaxis_Value, - Filament = Filament_Value, - LanguageChoice = Language_Value, - No_Filament, - PwrOffNoF, - Volume, - Filename = Filename_Value - }; +const uint16_t Addrbuf[] = { + 0x1002, 0x1004, 0x1006, 0x1008, 0x100A, 0x100C, 0x1026, 0x1030, 0x1032, 0x1034, 0x103A, + 0x103E, 0x1040, 0x1044, 0x1046, 0x1048, 0x104A, 0x104C, 0x1054, 0x1056, 0x1058, + 0x105C, 0x105E, 0x105F, 0x1088, 0 +}; - const uint16_t Addrbuf[] = { - 0x1002, 0x1004, 0x1006, 0x1008, 0x100A, 0x100C, 0x1026, 0x1030, 0x1032, 0x1034, 0x103A, - 0x103E, 0x1040, 0x1044, 0x1046, 0x1048, 0x104A, 0x104C, 0x1054, 0x1056, 0x1058, - 0x105C, 0x105E, 0x105F, 0x1088, 0 - }; - - void RTSUpdate(); - void RTSInit(); - -} // ExtUI +void RTS_Update(); #ifndef MAIN_MENU_ITEM_1_GCODE #if ENABLED(AUTO_BED_LEVELING_BILINEAR) From e66cd41654a3ca299acd2111daefe50c255f67ac Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Mon, 15 May 2023 09:29:35 +1200 Subject: [PATCH 434/659] =?UTF-8?q?=F0=9F=90=9B=20Safe=20Delay=20for=20Pro?= =?UTF-8?q?UI=20startup=20animation=20(#25827)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Warnings.cpp | 4 ++++ Marlin/src/lcd/e3v2/proui/dwin.cpp | 2 +- buildroot/tests/STM32F103RE_creality | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index cf75f3dd28..f760920854 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -760,3 +760,7 @@ #ifdef STM32F4_UPDATE_FOLDER #warning "Place the firmware bin file in a folder named 'STM32F4_UPDATE' on the SD card. Install with 'M936 V2'." #endif + +#if ENABLED(DWIN_LCD_PROUI) && BOOTSCREEN_TIMEOUT > 2000 + #warning "For ProUI the original BOOTSCREEN_TIMEOUT of 1100 is recommended." +#endif diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index f3a23ae1e4..8bd0a67b9b 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -1235,7 +1235,7 @@ void HMI_Init() { DWINUI::Draw_Icon(ICON_Bar, 15, 260); DWIN_Draw_Rectangle(1, HMI_data.Background_Color, t, 260, 257, 280); DWIN_UpdateLCD(); - delay((BOOTSCREEN_TIMEOUT) / 22); + safe_delay((BOOTSCREEN_TIMEOUT) / 22); } #endif HMI_SetLanguage(); diff --git a/buildroot/tests/STM32F103RE_creality b/buildroot/tests/STM32F103RE_creality index 834580fac8..bf56e12d7d 100755 --- a/buildroot/tests/STM32F103RE_creality +++ b/buildroot/tests/STM32F103RE_creality @@ -29,7 +29,7 @@ opt_enable DWIN_LCD_PROUI INDIVIDUAL_AXIS_HOMING_SUBMENU SET_PROGRESS_MANUALLY S SOUND_MENU_ITEM PRINTCOUNTER NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE FILAMENT_RUNOUT_SENSOR \ BLTOUCH Z_SAFE_HOMING AUTO_BED_LEVELING_UBL MESH_EDIT_MENU \ LIMITED_MAX_FR_EDITING LIMITED_MAX_ACCEL_EDITING LIMITED_JERK_EDITING BAUD_RATE_GCODE -opt_set PREHEAT_3_LABEL '"CUSTOM"' PREHEAT_3_TEMP_HOTEND 240 PREHEAT_3_TEMP_BED 60 PREHEAT_3_FAN_SPEED 128 +opt_set PREHEAT_3_LABEL '"CUSTOM"' PREHEAT_3_TEMP_HOTEND 240 PREHEAT_3_TEMP_BED 60 PREHEAT_3_FAN_SPEED 128 BOOTSCREEN_TIMEOUT 1100 exec_test $1 $2 "Ender-3 S1 - ProUI (PIDTEMP)" "$3" restore_configs From 1c5426d4af5f5a51f814459f54185c64643a2067 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 15 May 2023 00:22:01 +0000 Subject: [PATCH 435/659] [cron] Bump distribution date (2023-05-15) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 64e5a6a99d..1628f16bd2 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-14" +//#define STRING_DISTRIBUTION_DATE "2023-05-15" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index bcddf2dbd1..d8d693d9c4 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-14" + #define STRING_DISTRIBUTION_DATE "2023-05-15" #endif /** From b364e44716d8ba0d08d01c2d61067dd8602271d2 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 14 May 2023 18:08:33 -0500 Subject: [PATCH 436/659] =?UTF-8?q?=F0=9F=93=8C=20TH3D=20EZBoard=20SD=5FDE?= =?UTF-8?q?TECT=5FPIN=2027?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_post.h | 2 +- Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 8ad4a6161e..d137e1d9c1 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -526,7 +526,7 @@ */ #if HAS_MEDIA - #if HAS_SD_HOST_DRIVE && SD_CONNECTION_IS(ONBOARD) + #if HAS_SD_HOST_DRIVE && SD_CONNECTION_IS(ONBOARD) && DISABLED(KEEP_SD_DETECT) // // The external SD card is not used. Hardware SPI is used to access the card. // When sharing the SD card with a PC we want the menu options to diff --git a/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h b/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h index 11fa2c9468..1982652af6 100644 --- a/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h +++ b/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h @@ -141,7 +141,7 @@ #define SDCARD_CONNECTION ONBOARD -//#define SD_DETECT_PIN P0_25 // SD_CD +#define SD_DETECT_PIN P0_27 // SD_CD #define SD_SCK_PIN P0_07 #define SD_MISO_PIN P0_08 #define SD_MOSI_PIN P0_09 From d17d86d6a5a29e29e4d8e811d9bd6e6a030b7597 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 14 May 2023 18:32:59 -0500 Subject: [PATCH 437/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20M43?= =?UTF-8?q?=20updates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/config/M43.cpp | 6 +++--- Marlin/src/pins/pinsDebug.h | 20 ++++++++++++-------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/Marlin/src/gcode/config/M43.cpp b/Marlin/src/gcode/config/M43.cpp index c427fe7a31..6bd78c68ff 100644 --- a/Marlin/src/gcode/config/M43.cpp +++ b/Marlin/src/gcode/config/M43.cpp @@ -372,7 +372,7 @@ void GcodeSuite::M43() { for (;;) { LOOP_S_LE_N(i, first_pin, last_pin) { - pin_t pin = GET_PIN_MAP_PIN_M43(i); + const pin_t pin = GET_PIN_MAP_PIN_M43(i); if (!VALID_PIN(pin)) continue; if (M43_NEVER_TOUCH(i) || (!ignore_protection && pin_is_protected(pin))) continue; const byte val = @@ -383,7 +383,7 @@ void GcodeSuite::M43() { //*/ extDigitalRead(pin); if (val != pin_state[i - first_pin]) { - report_pin_state_extended(pin, ignore_protection, false); + report_pin_state_extended(pin, ignore_protection, true); pin_state[i - first_pin] = val; } } @@ -401,7 +401,7 @@ void GcodeSuite::M43() { else { // Report current state of selected pin(s) LOOP_S_LE_N(i, first_pin, last_pin) { - pin_t pin = GET_PIN_MAP_PIN_M43(i); + const pin_t pin = GET_PIN_MAP_PIN_M43(i); if (VALID_PIN(pin)) report_pin_state_extended(pin, ignore_protection, true); } } diff --git a/Marlin/src/pins/pinsDebug.h b/Marlin/src/pins/pinsDebug.h index 4a8928c1e5..cce3799981 100644 --- a/Marlin/src/pins/pinsDebug.h +++ b/Marlin/src/pins/pinsDebug.h @@ -175,11 +175,15 @@ const PinInfo pin_array[] PROGMEM = { #endif static void print_input_or_output(const bool isout) { - SERIAL_ECHOPGM_P(isout ? PSTR("Output = ") : PSTR("Input = ")); + SERIAL_ECHOF(isout ? F("Output ") : F("Input ")); +} + +static void print_pin_state(const bool state) { + SERIAL_ECHOF(state ? F("HIGH") : F("LOW")); } // pretty report with PWM info -inline void report_pin_state_extended(pin_t pin, const bool ignore, const bool extended=false, FSTR_P const start_string=nullptr) { +inline void report_pin_state_extended(const pin_t pin, const bool ignore, const bool extended=false, FSTR_P const start_string=nullptr) { char buffer[MAX_NAME_LENGTH + 1]; // for the sprintf statements bool found = false, multi_name_pin = false; @@ -188,12 +192,12 @@ inline void report_pin_state_extended(pin_t pin, const bool ignore, const bool e // Use FastIO for pins Teensy doesn't expose if (pin == 46) { print_input_or_output(IS_OUTPUT(46)); - SERIAL_CHAR('0' + READ(46)); + print_pin_state(READ(46)); return false; } else if (pin == 47) { print_input_or_output(IS_OUTPUT(47)); - SERIAL_CHAR('0' + READ(47)); + print_pin_state(READ(47)); return false; } #endif @@ -230,14 +234,14 @@ inline void report_pin_state_extended(pin_t pin, const bool ignore, const bool e // because this could interfere with inductive/capacitive // sensors (high impedance voltage divider) and with Pt100 amplifier print_input_or_output(false); - SERIAL_ECHO(digitalRead_mod(pin)); + print_pin_state(digitalRead_mod(pin)); } else if (pwm_status(pin)) { // do nothing } else { print_input_or_output(true); - SERIAL_ECHO(digitalRead_mod(pin)); + print_pin_state(digitalRead_mod(pin)); } } if (!multi_name_pin && extended) pwm_details(pin); // report PWM capabilities only on the first pass & only if doing an extended report @@ -267,7 +271,7 @@ inline void report_pin_state_extended(pin_t pin, const bool ignore, const bool e else if (GET_PINMODE(pin)) { SERIAL_ECHO_SP(MAX_NAME_LENGTH - 16); print_input_or_output(true); - SERIAL_ECHO(digitalRead_mod(pin)); + print_pin_state(digitalRead_mod(pin)); } else { if (IS_ANALOG(pin)) { @@ -279,7 +283,7 @@ inline void report_pin_state_extended(pin_t pin, const bool ignore, const bool e SERIAL_ECHO_SP(MAX_NAME_LENGTH - 16); // add padding if not an analog pin print_input_or_output(false); - SERIAL_ECHO(digitalRead_mod(pin)); + print_pin_state(digitalRead_mod(pin)); } //if (!pwm_status(pin)) SERIAL_CHAR(' '); // add padding if it's not a PWM pin if (extended) { From 2e24637bd66d725dc07a560cda81b40f67fd1d4a Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Mon, 15 May 2023 13:48:55 +1200 Subject: [PATCH 438/659] "One Click" Print newest file (#25781) Co-authored-by: Scott Lahteine --- Marlin/Configuration_adv.h | 1 + Marlin/src/inc/SanityCheck.h | 13 ++ Marlin/src/lcd/marlinui.cpp | 2 +- Marlin/src/lcd/menu/menu.h | 4 + Marlin/src/lcd/menu/menu_media.cpp | 7 +- Marlin/src/lcd/menu/menu_one_click_print.cpp | 44 +++++++ Marlin/src/sd/cardreader.cpp | 111 ++++++++++++++++-- Marlin/src/sd/cardreader.h | 6 + .../PlatformIO/scripts/common-dependencies.h | 3 + buildroot/tests/mks_tinybee | 4 +- ini/features.ini | 1 + 11 files changed, 176 insertions(+), 20 deletions(-) create mode 100644 Marlin/src/lcd/menu/menu_one_click_print.cpp diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 9090eb5a61..278853ac60 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1675,6 +1675,7 @@ //#define NO_SD_AUTOSTART // Remove auto#.g file support completely to save some Flash, SRAM //#define MENU_ADDAUTOSTART // Add a menu option to run auto#.g files + //#define ONE_CLICK_PRINT // Prompt to print the newest file on inserted media //#define BROWSE_MEDIA_ON_INSERT // Open the file browser when media is inserted //#define MEDIA_MENU_AT_TOP // Force the media menu to be listed on the top of the main menu diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 53333d8727..2a9fdde2dc 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -4044,6 +4044,19 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." // Multi-Stepping Limit static_assert(WITHIN(MULTISTEPPING_LIMIT, 1, 128) && IS_POWER_OF_2(MULTISTEPPING_LIMIT), "MULTISTEPPING_LIMIT must be 1, 2, 4, 8, 16, 32, 64, or 128."); +// One Click Print +#if ENABLED(ONE_CLICK_PRINT) + #if !HAS_MEDIA + #error "SD Card or Flash Drive is required for ONE_CLICK_PRINT." + #elif ENABLED(BROWSE_MEDIA_ON_INSERT) + #error "ONE_CLICK_PRINT is incompatible with BROWSE_MEDIA_ON_INSERT." + #elif DISABLED(NO_SD_AUTOSTART) + #error "NO_SD_AUTOSTART must be enabled for ONE_CLICK_PRINT." + #elif !defined(HAS_MARLINUI_MENU) + #error "ONE_CLICK_PRINT needs a display that has Marlin UI menus." + #endif +#endif + // Misc. Cleanup #undef _TEST_PWM #undef _NUM_AXES_STR diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 638a133184..e8956ab9e1 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -424,7 +424,7 @@ void MarlinUI::init() { #if !HAS_GRAPHICAL_TFT - void _wrap_string(uint8_t &col, uint8_t &row, const char * const string, read_byte_cb_t cb_read_byte, bool wordwrap/*=false*/) { + void _wrap_string(uint8_t &col, uint8_t &row, const char * const string, read_byte_cb_t cb_read_byte, const bool wordwrap/*=false*/) { SETCURSOR(col, row); if (!string) return; diff --git a/Marlin/src/lcd/menu/menu.h b/Marlin/src/lcd/menu/menu.h index 5a70ddd3a2..1face4774b 100644 --- a/Marlin/src/lcd/menu/menu.h +++ b/Marlin/src/lcd/menu/menu.h @@ -259,6 +259,10 @@ void _lcd_draw_homing(); void touch_screen_calibration(); #endif +#if ENABLED(ONE_CLICK_PRINT) + void one_click_print(); +#endif + extern uint8_t screen_history_depth; inline void clear_menu_history() { screen_history_depth = 0; } diff --git a/Marlin/src/lcd/menu/menu_media.cpp b/Marlin/src/lcd/menu/menu_media.cpp index e32f41a9a6..795ac2052b 100644 --- a/Marlin/src/lcd/menu/menu_media.cpp +++ b/Marlin/src/lcd/menu/menu_media.cpp @@ -73,14 +73,11 @@ class MenuItem_sdfile : public MenuItem_sdbase { #endif #if ENABLED(SD_MENU_CONFIRM_START) MenuItem_submenu::action(fstr, []{ - char * const longest = card.longest_filename(); - char buffer[strlen(longest) + 2]; - buffer[0] = ' '; - strcpy(buffer + 1, longest); + char * const filename = card.longest_filename(); MenuItem_confirm::select_screen( GET_TEXT_F(MSG_BUTTON_PRINT), GET_TEXT_F(MSG_BUTTON_CANCEL), sdcard_start_selected_file, nullptr, - GET_TEXT_F(MSG_START_PRINT), buffer, F("?") + GET_TEXT_F(MSG_START_PRINT), filename, F("?") ); }); #else diff --git a/Marlin/src/lcd/menu/menu_one_click_print.cpp b/Marlin/src/lcd/menu/menu_one_click_print.cpp new file mode 100644 index 0000000000..f1ed92d0d5 --- /dev/null +++ b/Marlin/src/lcd/menu/menu_one_click_print.cpp @@ -0,0 +1,44 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../inc/MarlinConfigPre.h" + +#if ENABLED(ONE_CLICK_PRINT) + +#include "menu.h" + +void one_click_print() { + ui.goto_screen([]{ + char * const filename = card.longest_filename(); + MenuItem_confirm::select_screen( + GET_TEXT_F(MSG_BUTTON_PRINT), GET_TEXT_F(MSG_BUTTON_CANCEL), + []{ + card.openAndPrintFile(card.filename); + ui.return_to_status(); + ui.reset_status(); + }, nullptr, + GET_TEXT_F(MSG_START_PRINT), filename, F("?") + ); + }); +} + +#endif // ONE_CLICK_PRINT diff --git a/Marlin/src/sd/cardreader.cpp b/Marlin/src/sd/cardreader.cpp index 4e864e5672..cd3d1d2cd6 100644 --- a/Marlin/src/sd/cardreader.cpp +++ b/Marlin/src/sd/cardreader.cpp @@ -56,6 +56,10 @@ #include "../feature/pause.h" #endif +#if ENABLED(ONE_CLICK_PRINT) + #include "../../src/lcd/menu/menu.h" +#endif + #define DEBUG_OUT EITHER(DEBUG_CARDREADER, MARLIN_DEV_MODE) #include "../core/debug_out.h" #include "../libs/hex_print.h" @@ -290,7 +294,7 @@ void CardReader::printListing(MediaFile parent, const char * const prepend, cons while (parent.readDir(&p, longFilename) > 0) { if (DIR_IS_SUBDIR(&p)) { - size_t lenPrepend = prepend ? strlen(prepend) + 1 : 0; + const size_t lenPrepend = prepend ? strlen(prepend) + 1 : 0; // Allocate enough stack space for the full path including / separator char path[lenPrepend + FILENAME_LENGTH]; if (prepend) { strcpy(path, prepend); path[lenPrepend - 1] = '/'; } @@ -545,20 +549,28 @@ void CardReader::manage_media() { if (!stat) return; // Exit if no media is present - if (old_stat != 2) return; // First mount? - - DEBUG_ECHOLNPGM("First mount."); - - // Load settings the first time media is inserted (not just during init) - TERN_(SDCARD_EEPROM_EMULATION, settings.first_load()); - bool do_auto = true; UNUSED(do_auto); - // Check for PLR file. - TERN_(POWER_LOSS_RECOVERY, if (recovery.check()) do_auto = false); + // First mount on boot? Load emulated EEPROM and look for PLR file. + if (old_stat == 2) { + DEBUG_ECHOLNPGM("First mount."); - // Look for auto0.g on the next idle() - IF_DISABLED(NO_SD_AUTOSTART, if (do_auto) autofile_begin()); + // Load settings the first time media is inserted (not just during init) + TERN_(SDCARD_EEPROM_EMULATION, settings.first_load()); + + // Check for PLR file. Skip One-Click and auto#.g if found + TERN_(POWER_LOSS_RECOVERY, if (recovery.check()) do_auto = false); + } + + // Find the newest file and prompt to print it. + TERN_(ONE_CLICK_PRINT, if (do_auto && one_click_check()) do_auto = false); + + // Also for the first mount run auto#.g for machine init. + // (Skip if PLR or One-Click Print was invoked.) + if (old_stat == 2) { + // Look for auto0.g on the next idle() + IF_DISABLED(NO_SD_AUTOSTART, if (do_auto) autofile_begin()); + } } /** @@ -887,6 +899,81 @@ void CardReader::write_command(char * const buf) { } #endif +#if ENABLED(ONE_CLICK_PRINT) + + /** + * Select the newest file and ask the user if they want to print it. + */ + bool CardReader::one_click_check() { + const bool found = selectNewestFile(); + if (found) { + //SERIAL_ECHO_MSG(" OCP File: ", longest_filename(), "\n"); + //ui.init(); + one_click_print(); + } + return found; + } + + /** + * Recurse the entire directory to find the newest file. + * This may take a very long time so watch out for watchdog reset. + * It may be best to only look at root for reasonable boot and mount times. + */ + void CardReader::diveToNewestFile(MediaFile parent, uint32_t &compareDateTime, MediaFile &outdir, char * const outname) { + // Iterate the given parent dir + parent.rewind(); + for (dir_t p; parent.readDir(&p, longFilename) > 0;) { + + // If the item is a dir, recurse into it + if (DIR_IS_SUBDIR(&p)) { + // Get the name of the dir for opening + char dirname[FILENAME_LENGTH]; + createFilename(dirname, p); + + // Open the item in a new MediaFile + MediaFile child; // child.close() in destructor + if (child.open(&parent, dirname, O_READ)) + diveToNewestFile(child, compareDateTime, outdir, outname); + } + else if (is_visible_entity(p)) { + // Get the newer of the modified/created date and time + const uint32_t modDateTime = uint32_t(p.lastWriteDate) << 16 | p.lastWriteTime, + createDateTime = uint32_t(p.creationDate) << 16 | p.creationTime, + newerDateTime = _MAX(modDateTime, createDateTime); + // If a newer item is found overwrite the outdir and outname + if (newerDateTime > compareDateTime) { + compareDateTime = newerDateTime; + outdir = parent; + createFilename(outname, p); + } + } + } + } + + /** + * Recurse the entire directory to find the newest file. + * Make the found file the current selection. + */ + bool CardReader::selectNewestFile() { + uint32_t dateTimeStorage = 0; + MediaFile foundDir; + char foundName[FILENAME_LENGTH]; + foundName[0] = '\0'; + + diveToNewestFile(root, dateTimeStorage, foundDir, foundName); + + if (foundName[0]) { + workDir = foundDir; + workDir.rewind(); + selectByName(workDir, foundName); + //workDir.close(); // Not needed? + return true; + } + return false; + } + +#endif // ONE_CLICK_PRINT + void CardReader::closefile(const bool store_location/*=false*/) { file.sync(); file.close(); diff --git a/Marlin/src/sd/cardreader.h b/Marlin/src/sd/cardreader.h index 3b7b7debcf..4baaa73e1a 100644 --- a/Marlin/src/sd/cardreader.h +++ b/Marlin/src/sd/cardreader.h @@ -128,6 +128,12 @@ public: static void autofile_cancel() { autofile_index = 0; } #endif + #if ENABLED(ONE_CLICK_PRINT) + static bool one_click_check(); // Check for the newest file and prompt to run it. + static void diveToNewestFile(MediaFile parent, uint32_t &compareDateTime, MediaFile &outdir, char * const outname); + static bool selectNewestFile(); + #endif + // Basic file ops static void openFileRead(const char * const path, const uint8_t subcall=0); static void openFileWrite(const char * const path); diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.h b/buildroot/share/PlatformIO/scripts/common-dependencies.h index 4438b4efe1..c75d9a3d67 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.h +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.h @@ -104,6 +104,9 @@ #if ENABLED(AUTO_BED_LEVELING_UBL) #define HAS_MENU_UBL #endif + #if ENABLED(ONE_CLICK_PRINT) + #define HAS_MENU_ONE_CLICK_PRINT + #endif #endif #if HAS_GRAPHICAL_TFT diff --git a/buildroot/tests/mks_tinybee b/buildroot/tests/mks_tinybee index 9dcc33ede7..0351946d0a 100755 --- a/buildroot/tests/mks_tinybee +++ b/buildroot/tests/mks_tinybee @@ -25,8 +25,8 @@ opt_set MOTHERBOARD BOARD_MKS_TINYBEE \ LCD_INFO_SCREEN_STYLE 0 \ DISPLAY_CHARSET_HD44780 WESTERN \ NEOPIXEL_TYPE NEO_RGB -opt_enable FYSETC_MINI_12864_2_1 SDSUPPORT -opt_enable LED_CONTROL_MENU LED_USER_PRESET_STARTUP LED_COLOR_PRESETS NEOPIXEL_LED +opt_enable FYSETC_MINI_12864_2_1 SDSUPPORT ONE_CLICK_PRINT NO_SD_AUTOSTART \ + NEOPIXEL_LED LED_CONTROL_MENU LED_USER_PRESET_STARTUP LED_COLOR_PRESETS exec_test $1 $2 "MKS TinyBee with NeoPixel LCD, SD and Speaker" "$3" # cleanup diff --git a/ini/features.ini b/ini/features.ini index 17d2ece04a..86e7d2e396 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -81,6 +81,7 @@ HAS_MENU_LED = build_src_filter=+ HAS_MENU_MIXER = build_src_filter=+ HAS_MENU_MMU2 = build_src_filter=+ +HAS_MENU_ONE_CLICK_PRINT = build_src_filter=+ HAS_MENU_PASSWORD = build_src_filter=+ HAS_MENU_POWER_MONITOR = build_src_filter=+ HAS_MENU_CUTTER = build_src_filter=+ From 46e8b9cad918aa24595983d49df8498d5f7b794c Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 14 May 2023 23:58:31 -0500 Subject: [PATCH 439/659] =?UTF-8?q?=F0=9F=94=A7=20Disable=20FT=20Motion=20?= =?UTF-8?q?by=20default?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 278853ac60..587a368301 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1112,7 +1112,7 @@ */ //#define FT_MOTION #if ENABLED(FT_MOTION) - #define FTM_DEFAULT_MODE ftMotionMode_ENABLED // Default mode of fixed time control. (Enums in ft_types.h) + #define FTM_DEFAULT_MODE ftMotionMode_DISABLED // Default mode of fixed time control. (Enums in ft_types.h) #define FTM_DEFAULT_DYNFREQ_MODE dynFreqMode_DISABLED // Default mode of dynamic frequency calculation. (Enums in ft_types.h) #define FTM_SHAPING_DEFAULT_X_FREQ 37.0f // (Hz) Default peak frequency used by input shapers. #define FTM_SHAPING_DEFAULT_Y_FREQ 37.0f // (Hz) Default peak frequency used by input shapers. @@ -1124,26 +1124,26 @@ /** * Advanced configuration */ - #define FTM_BATCH_SIZE 100 // Batch size for trajectory generation; + #define FTM_BATCH_SIZE 100 // Batch size for trajectory generation; // half the window size for Ulendo FBS. - #define FTM_FS 1000 // (Hz) Frequency for trajectory generation. (1 / FTM_TS) - #define FTM_TS 0.001f // (s) Time step for trajectory generation. (1 / FTM_FS) - #define FTM_STEPPER_FS 20000 // (Hz) Frequency for stepper I/O update. + #define FTM_FS 1000 // (Hz) Frequency for trajectory generation. (1 / FTM_TS) + #define FTM_TS 0.001f // (s) Time step for trajectory generation. (1 / FTM_FS) + #define FTM_STEPPER_FS 20000 // (Hz) Frequency for stepper I/O update. #define FTM_MIN_TICKS ((STEPPER_TIMER_RATE) / (FTM_STEPPER_FS)) // Minimum stepper ticks between steps. - #define FTM_MIN_SHAPE_FREQ 10 // Minimum shaping frequency. - #define FTM_ZMAX 100 // Maximum delays for shaping functions (even numbers only!). + #define FTM_MIN_SHAPE_FREQ 10 // Minimum shaping frequency. + #define FTM_ZMAX 100 // Maximum delays for shaping functions (even numbers only!). // Calculate as: // 1/2 * (FTM_FS / FTM_MIN_SHAPE_FREQ) for ZV. // (FTM_FS / FTM_MIN_SHAPE_FREQ) for ZVD, MZV. // 3/2 * (FTM_FS / FTM_MIN_SHAPE_FREQ) for 2HEI. // 2 * (FTM_FS / FTM_MIN_SHAPE_FREQ) for 3HEI. - #define FTM_STEPS_PER_UNIT_TIME 20 // Interpolated stepper commands per unit time. + #define FTM_STEPS_PER_UNIT_TIME 20 // Interpolated stepper commands per unit time. // Calculate as (FTM_STEPPER_FS / FTM_FS). - #define FTM_CTS_COMPARE_VAL 10 // Comparison value used in interpolation algorithm. + #define FTM_CTS_COMPARE_VAL 10 // Comparison value used in interpolation algorithm. // Calculate as (FTM_STEPS_PER_UNIT_TIME / 2). // These values may be configured to adjust duration of loop(). - #define FTM_STEPS_PER_LOOP 60 // Number of stepper commands to generate each loop(). - #define FTM_POINTS_PER_LOOP 100 // Number of trajectory points to generate each loop(). + #define FTM_STEPS_PER_LOOP 60 // Number of stepper commands to generate each loop(). + #define FTM_POINTS_PER_LOOP 100 // Number of trajectory points to generate each loop(). // This value may be configured to adjust duration to consume the command buffer. // Try increasing this value if stepper motion is not smooth. From 99e38c40be66e6e36d05580d80d1bcaf43f71ee6 Mon Sep 17 00:00:00 2001 From: Andrew <18502096+classicrocker883@users.noreply.github.com> Date: Mon, 15 May 2023 17:24:36 -0400 Subject: [PATCH 440/659] =?UTF-8?q?=F0=9F=A9=B9=20Ensure=20pin=5Fis=5Fprot?= =?UTF-8?q?ected=20is=20defined=20(#25829)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/config/M43.cpp | 2 +- Marlin/src/gcode/control/M42.cpp | 3 ++- Marlin/src/pins/pinsDebug.h | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Marlin/src/gcode/config/M43.cpp b/Marlin/src/gcode/config/M43.cpp index 6bd78c68ff..91db87a1d2 100644 --- a/Marlin/src/gcode/config/M43.cpp +++ b/Marlin/src/gcode/config/M43.cpp @@ -25,7 +25,7 @@ #if ENABLED(PINS_DEBUGGING) #include "../gcode.h" -#include "../../MarlinCore.h" // for pin_is_protected +#include "../../MarlinCore.h" // for pin_is_protected, wait_for_user #include "../../pins/pinsDebug.h" #include "../../module/endstops.h" diff --git a/Marlin/src/gcode/control/M42.cpp b/Marlin/src/gcode/control/M42.cpp index cf2c218e92..6e75ffd4e7 100644 --- a/Marlin/src/gcode/control/M42.cpp +++ b/Marlin/src/gcode/control/M42.cpp @@ -25,7 +25,6 @@ #if ENABLED(DIRECT_PIN_CONTROL) #include "../gcode.h" -#include "../../MarlinCore.h" // for pin_is_protected #if HAS_FAN #include "../../module/temperature.h" @@ -38,6 +37,8 @@ #define OUTPUT_OPEN_DRAIN OUTPUT_OPEN_DRAIN #endif +bool pin_is_protected(const pin_t pin); + void protected_pin_err() { SERIAL_ERROR_MSG(STR_ERR_PROTECTED_PIN); } diff --git a/Marlin/src/pins/pinsDebug.h b/Marlin/src/pins/pinsDebug.h index cce3799981..3219b1b7a2 100644 --- a/Marlin/src/pins/pinsDebug.h +++ b/Marlin/src/pins/pinsDebug.h @@ -174,6 +174,8 @@ const PinInfo pin_array[] PROGMEM = { #define M43_NEVER_TOUCH(Q) false #endif +bool pin_is_protected(const pin_t pin); + static void print_input_or_output(const bool isout) { SERIAL_ECHOF(isout ? F("Output ") : F("Input ")); } From dd184cf3c28748b607ba06a6117c4e8425a74e46 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 16 May 2023 00:20:38 +0000 Subject: [PATCH 441/659] [cron] Bump distribution date (2023-05-16) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 1628f16bd2..153a4c3be2 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-15" +//#define STRING_DISTRIBUTION_DATE "2023-05-16" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index d8d693d9c4..22e56dd2f4 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-15" + #define STRING_DISTRIBUTION_DATE "2023-05-16" #endif /** From 6e5f41fe6b996e074b042c6ac521475b8e8aab91 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 15 May 2023 19:48:30 -0500 Subject: [PATCH 442/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Ser?= =?UTF-8?q?ial=20ternary=20args,=20etc.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/serial.h | 4 ++-- Marlin/src/feature/bedlevel/ubl/ubl.cpp | 2 +- Marlin/src/feature/encoder_i2c.cpp | 2 +- Marlin/src/gcode/config/M43.cpp | 2 +- Marlin/src/gcode/feature/trinamic/M906.cpp | 1 - Marlin/src/gcode/host/M114.cpp | 8 ++------ Marlin/src/lcd/e3v2/proui/dwin_defines.h | 1 - Marlin/src/module/planner.cpp | 1 + Marlin/src/module/temperature.cpp | 2 +- 9 files changed, 9 insertions(+), 14 deletions(-) diff --git a/Marlin/src/core/serial.h b/Marlin/src/core/serial.h index 475761216c..62e1294e04 100644 --- a/Marlin/src/core/serial.h +++ b/Marlin/src/core/serial.h @@ -292,7 +292,7 @@ inline void SERIAL_ECHO_F(EnsureDouble x, int digit=2) { SERIAL_IMPL.print(x, di #define SERIAL_ECHO_SP(C) serial_spaces(C) -#define SERIAL_ECHO_TERNARY(TF, PRE, ON, OFF, POST) serial_ternary(TF, F(PRE), F(ON), F(OFF), F(POST)) +#define SERIAL_ECHO_TERNARY(TF, PRE, ON, OFF, POST) serial_ternary(F(PRE), TF, F(ON), F(OFF), F(POST)) #if SERIAL_FLOAT_PRECISION #define SERIAL_DECIMAL(V) SERIAL_PRINT(V, SERIAL_FLOAT_PRECISION) @@ -327,7 +327,7 @@ inline void serial_echolnpair(FSTR_P const fstr, T v) { serial_echolnpair_P(FTOP void serial_echo_start(); void serial_error_start(); -inline void serial_ternary(const bool onoff, FSTR_P const pre, FSTR_P const on, FSTR_P const off, FSTR_P const post=nullptr) { +inline void serial_ternary(FSTR_P const pre, const bool onoff, FSTR_P const on, FSTR_P const off, FSTR_P const post=nullptr) { if (pre) serial_print(pre); if (onoff && on) serial_print(on); if (!onoff && off) serial_print(off); diff --git a/Marlin/src/feature/bedlevel/ubl/ubl.cpp b/Marlin/src/feature/bedlevel/ubl/ubl.cpp index b7ee6aeef8..ca519f86b4 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl.cpp @@ -59,7 +59,7 @@ void unified_bed_leveling::report_current_mesh() { void unified_bed_leveling::report_state() { echo_name(); - serial_ternary(planner.leveling_active, F(" System v" UBL_VERSION " "), nullptr, F("in"), F("active\n")); + serial_ternary(F(" System v" UBL_VERSION " "), planner.leveling_active, nullptr, F("in"), F("active\n")); serial_delay(50); } diff --git a/Marlin/src/feature/encoder_i2c.cpp b/Marlin/src/feature/encoder_i2c.cpp index 092ce0f8b8..b1ff21cf92 100644 --- a/Marlin/src/feature/encoder_i2c.cpp +++ b/Marlin/src/feature/encoder_i2c.cpp @@ -232,7 +232,7 @@ bool I2CPositionEncoder::passes_test(const bool report) { if (report) { if (H != I2CPE_MAG_SIG_GOOD) SERIAL_ECHOPGM("Warning. "); SERIAL_CHAR(AXIS_CHAR(encoderAxis)); - serial_ternary(H == I2CPE_MAG_SIG_BAD, F(" axis "), F("magnetic strip "), F("encoder ")); + serial_ternary(F(" axis "), H == I2CPE_MAG_SIG_BAD, F("magnetic strip "), F("encoder ")); switch (H) { case I2CPE_MAG_SIG_GOOD: case I2CPE_MAG_SIG_MID: diff --git a/Marlin/src/gcode/config/M43.cpp b/Marlin/src/gcode/config/M43.cpp index 91db87a1d2..3b95ccd3bb 100644 --- a/Marlin/src/gcode/config/M43.cpp +++ b/Marlin/src/gcode/config/M43.cpp @@ -149,7 +149,7 @@ inline void servo_probe_test() { #endif SERIAL_ECHOLNPGM(". Probe " _PROBE_PREF "_PIN: ", PROBE_TEST_PIN); - serial_ternary(probe_hit_state, F(". " _PROBE_PREF "_ENDSTOP_HIT_STATE: "), F("HIGH"), F("LOW")); + serial_ternary(F(". " _PROBE_PREF "_ENDSTOP_HIT_STATE: "), probe_hit_state, F("HIGH"), F("LOW")); SERIAL_EOL(); SET_INPUT_PULLUP(PROBE_TEST_PIN); diff --git a/Marlin/src/gcode/feature/trinamic/M906.cpp b/Marlin/src/gcode/feature/trinamic/M906.cpp index b2cab13553..b949200ad7 100644 --- a/Marlin/src/gcode/feature/trinamic/M906.cpp +++ b/Marlin/src/gcode/feature/trinamic/M906.cpp @@ -328,7 +328,6 @@ void GcodeSuite::M906_report(const bool forReplay/*=true*/) { say_M906(forReplay); SERIAL_ECHOLNPGM(" T7 E", stepperE7.getMilliamps()); #endif - SERIAL_EOL(); } #endif // HAS_TRINAMIC_CONFIG diff --git a/Marlin/src/gcode/host/M114.cpp b/Marlin/src/gcode/host/M114.cpp index e6e83ba6e5..3a75e687b8 100644 --- a/Marlin/src/gcode/host/M114.cpp +++ b/Marlin/src/gcode/host/M114.cpp @@ -128,9 +128,7 @@ void GcodeSuite::M114() { #if ENABLED(M114_DETAIL) if (parser.seen_test('D')) { - #if DISABLED(M114_LEGACY) - planner.synchronize(); - #endif + IF_DISABLED(M114_LEGACY, planner.synchronize()); report_current_position(); report_current_position_detail(); return; @@ -143,9 +141,7 @@ void GcodeSuite::M114() { #endif #endif - #if ENABLED(M114_REALTIME) - if (parser.seen_test('R')) { report_real_position(); return; } - #endif + TERN_(M114_REALTIME, if (parser.seen_test('R')) return report_real_position()); TERN_(M114_LEGACY, planner.synchronize()); report_current_position_projected(); diff --git a/Marlin/src/lcd/e3v2/proui/dwin_defines.h b/Marlin/src/lcd/e3v2/proui/dwin_defines.h index e87aedf311..164fd00fe6 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_defines.h +++ b/Marlin/src/lcd/e3v2/proui/dwin_defines.h @@ -29,7 +29,6 @@ */ //#define DEBUG_DWIN 1 -//#define NEED_HEX_PRINT 1 #if defined(__STM32F1__) || defined(STM32F1) #define DASH_REDRAW 1 diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index a9da48df01..a2d7e6843b 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -1929,6 +1929,7 @@ bool Planner::_populate_block( #endif #if HAS_W_AXIS " " STR_W ":", target.w, " (", dw, " steps)" + #endif #if HAS_EXTRUDERS " E:", target.e, " (", de, " steps)" #endif diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 685f5dab2f..f785a683eb 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -3145,7 +3145,7 @@ void Temperature::init() { if (TERN0(REPORT_ADAPTIVE_FAN_SLOWING, DEBUGGING(INFO))) { const uint8_t fss7 = fan_speed_scaler[fan_index] & 0x80; if (fss7 ^ (scale & 0x80)) - serial_ternary(fss7, F("Adaptive Fan Slowing "), nullptr, F("de"), F("activated.\n")); + serial_ternary(F("Adaptive Fan Slowing "), fss7, nullptr, F("de"), F("activated.\n")); } fan_speed_scaler[fan_index] = scale; From 48496dfec14588e646788f5a7099b55093d90ad1 Mon Sep 17 00:00:00 2001 From: lukasradek Date: Tue, 16 May 2023 03:49:45 +0200 Subject: [PATCH 443/659] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Fix=20pin=20debug?= =?UTF-8?q?=20ternary=20(#25832)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/NATIVE_SIM/pinsDebug.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/HAL/NATIVE_SIM/pinsDebug.h b/Marlin/src/HAL/NATIVE_SIM/pinsDebug.h index eeb8245641..9c53b4b0d9 100644 --- a/Marlin/src/HAL/NATIVE_SIM/pinsDebug.h +++ b/Marlin/src/HAL/NATIVE_SIM/pinsDebug.h @@ -38,7 +38,7 @@ // Active ADC function/mode/code values for PINSEL registers constexpr int8_t ADC_pin_mode(pin_t pin) { return -1; } -int8_t get_pin_mode(const pin_t pin) { return VALID_PIN(pin) 0 : -1; } +int8_t get_pin_mode(const pin_t pin) { return VALID_PIN(pin) ? 0 : -1; } bool GET_PINMODE(const pin_t pin) { const int8_t pin_mode = get_pin_mode(pin); From 25ddde0394361c23194c0f4a8f9777d389040af3 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 15 May 2023 22:00:15 -0500 Subject: [PATCH 444/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Cha?= =?UTF-8?q?nge=20Marlin=20DIR=20bits:=201=3DForward,=200=3DReverse=20(#257?= =?UTF-8?q?91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/backlash.cpp | 10 +- Marlin/src/feature/runout.h | 2 +- Marlin/src/gcode/feature/ft_motion/M493.cpp | 13 +- Marlin/src/gcode/motion/G6.cpp | 11 +- Marlin/src/inc/SanityCheck.h | 8 +- Marlin/src/module/endstops.cpp | 18 +- Marlin/src/module/ft_motion.cpp | 57 ++--- Marlin/src/module/planner.cpp | 251 ++++++++------------ Marlin/src/module/planner.h | 2 +- Marlin/src/module/stepper.cpp | 220 +++++++---------- Marlin/src/module/stepper.h | 2 +- 11 files changed, 265 insertions(+), 329 deletions(-) diff --git a/Marlin/src/feature/backlash.cpp b/Marlin/src/feature/backlash.cpp index 256488762a..8d180c7a4a 100644 --- a/Marlin/src/feature/backlash.cpp +++ b/Marlin/src/feature/backlash.cpp @@ -99,15 +99,15 @@ void Backlash::add_correction_steps(const int32_t &da, const int32_t &db, const LOOP_NUM_AXES(axis) { if (distance_mm[axis]) { - const bool reverse = dm[axis]; + const bool forward = dm[axis]; // When an axis changes direction, add axis backlash to the residual error if (changed_dir[axis]) - residual_error[axis] += (reverse ? -f_corr : f_corr) * distance_mm[axis] * planner.settings.axis_steps_per_mm[axis]; + residual_error[axis] += (forward ? f_corr : -f_corr) * distance_mm[axis] * planner.settings.axis_steps_per_mm[axis]; // Decide how much of the residual error to correct in this segment int32_t error_correction = residual_error[axis]; - if (reverse != (error_correction < 0)) + if (forward == (error_correction < 0)) error_correction = 0; // Don't take up any backlash in this segment, as it would subtract steps #ifdef BACKLASH_SMOOTHING_MM @@ -147,14 +147,14 @@ void Backlash::add_correction_steps(const int32_t &da, const int32_t &db, const int32_t Backlash::get_applied_steps(const AxisEnum axis) { if (axis >= NUM_AXES) return 0; - const bool reverse = last_direction_bits[axis]; + const bool forward = last_direction_bits[axis]; const int32_t residual_error_axis = residual_error[axis]; // At startup it is assumed the last move was forwards. So the applied // steps will always be a non-positive number. - if (!reverse) return -residual_error_axis; + if (forward) return -residual_error_axis; const float f_corr = float(correction) / all_on; const int32_t full_error_axis = -f_corr * distance_mm[axis] * planner.settings.axis_steps_per_mm[axis]; diff --git a/Marlin/src/feature/runout.h b/Marlin/src/feature/runout.h index e6ca9f78cd..e160f88905 100644 --- a/Marlin/src/feature/runout.h +++ b/Marlin/src/feature/runout.h @@ -411,7 +411,7 @@ class FilamentSensorBase { // Only trigger on extrusion with XYZ movement to allow filament change and retract/recover. const uint8_t e = b->extruder; const int32_t steps = b->steps.e; - const float mm = (b->direction_bits.e ? -steps : steps) * planner.mm_per_step[E_AXIS_N(e)]; + const float mm = (b->direction_bits.e ? steps : -steps) * planner.mm_per_step[E_AXIS_N(e)]; if (e < NUM_RUNOUT_SENSORS) mm_countdown.runout[e] -= mm; #if ENABLED(FILAMENT_SWITCH_AND_MOTION) if (e < NUM_MOTION_SENSORS) mm_countdown.motion[e] -= mm; diff --git a/Marlin/src/gcode/feature/ft_motion/M493.cpp b/Marlin/src/gcode/feature/ft_motion/M493.cpp index 31e16a194d..f7b8f1e752 100644 --- a/Marlin/src/gcode/feature/ft_motion/M493.cpp +++ b/Marlin/src/gcode/feature/ft_motion/M493.cpp @@ -102,8 +102,10 @@ void GcodeSuite::M493() { } switch (val) { - case ftMotionMode_ENABLED: fxdTiCtrl.reset(); break; #if HAS_X_AXIS + //case ftMotionMode_ULENDO_FBS: + //case ftMotionMode_DISCTF: + // break; case ftMotionMode_ZV: case ftMotionMode_ZVD: case ftMotionMode_EI: @@ -114,9 +116,10 @@ void GcodeSuite::M493() { fxdTiCtrl.updateShapingA(); fxdTiCtrl.reset(); break; - //case ftMotionMode_ULENDO_FBS: - //case ftMotionMode_DISCTF: #endif + case ftMotionMode_ENABLED: + fxdTiCtrl.reset(); + break; default: break; } } @@ -195,7 +198,7 @@ void GcodeSuite::M493() { fxdTiCtrl.reset(); if (fxdTiCtrl.cfg_dynFreqMode) { SERIAL_ECHOPGM("Compensator base dynamic frequency (X/A axis) set to:"); } else { SERIAL_ECHOPGM("Compensator static frequency (X/A axis) set to: "); } - SERIAL_ECHO_F( fxdTiCtrl.cfg_baseFreq[0], 2 ); + SERIAL_ECHO_F(fxdTiCtrl.cfg_baseFreq[0], 2); SERIAL_ECHOLNPGM("."); } else { // Frequency out of range. @@ -243,7 +246,7 @@ void GcodeSuite::M493() { fxdTiCtrl.reset(); if (fxdTiCtrl.cfg_dynFreqMode) { SERIAL_ECHOPGM("Compensator base dynamic frequency (Y/B axis) set to:"); } else { SERIAL_ECHOPGM("Compensator static frequency (Y/B axis) set to: "); } - SERIAL_ECHO_F( fxdTiCtrl.cfg_baseFreq[1], 2 ); + SERIAL_ECHO_F(fxdTiCtrl.cfg_baseFreq[1], 2); SERIAL_ECHOLNPGM("."); } else { // Frequency out of range. diff --git a/Marlin/src/gcode/motion/G6.cpp b/Marlin/src/gcode/motion/G6.cpp index fb6281707b..342741e634 100644 --- a/Marlin/src/gcode/motion/G6.cpp +++ b/Marlin/src/gcode/motion/G6.cpp @@ -38,10 +38,13 @@ void GcodeSuite::G6() { planner.last_page_step_rate = parser.value_ulong(); if (!DirectStepping::Config::DIRECTIONAL) { - if (parser.seen('X')) planner.last_page_dir.x = !!parser.value_byte(); - if (parser.seen('Y')) planner.last_page_dir.y = !!parser.value_byte(); - if (parser.seen('Z')) planner.last_page_dir.z = !!parser.value_byte(); - if (parser.seen('E')) planner.last_page_dir.e = !!parser.value_byte(); + #define PAGE_DIR_SET(N,A) do{ if (parser.seen(N)) planner.last_page_dir.A = !!parser.value_byte(); } while(0) + LOGICAL_AXIS_CODE( + PAGE_DIR_SET('E',E), + PAGE_DIR_SET('X',X), PAGE_DIR_SET('Y',Y), PAGE_DIR_SET('Z',Z), + PAGE_DIR_SET(AXIS4_NAME,I), PAGE_DIR_SET(AXIS5_NAME,J), PAGE_DIR_SET(AXIS6_NAME,K), + PAGE_DIR_SET(AXIS5_NAME,U), PAGE_DIR_SET(AXIS6_NAME,V), PAGE_DIR_SET(AXIS7_NAME,W) + ); } // No index means we just set the state diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 2a9fdde2dc..67d11d93e0 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -4037,8 +4037,12 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." /** * Fixed-Time Motion limitations */ -#if ENABLED(FT_MOTION) && (NUM_AXES > 3 || E_STEPPERS > 1 || NUM_Z_STEPPERS > 1 || ANY(DUAL_X_CARRIAGE, HAS_SYNCED_X_STEPPERS, HAS_SYNCED_Y_STEPPERS, HAS_MULTI_EXTRUDER, MIXING_EXTRUDER)) - #error "FT_MOTION is currently limited to machines with 3 linear axes and a single extruder." +#if ENABLED(FT_MOTION) + #if NUM_AXES > 3 + #error "FT_MOTION is currently limited to machines with 3 linear axes." + #elif ENABLED(MIXING_EXTRUDER) + #error "FT_MOTION is incompatible with MIXING_EXTRUDER." + #endif #endif // Multi-Stepping Limit diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 0a12e1041d..a22c4f0381 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -872,7 +872,7 @@ void Endstops::update() { #if HAS_X_AXIS if (stepper.axis_is_moving(X_AXIS)) { - if (stepper.motor_direction(X_AXIS_HEAD)) { // -direction + if (!stepper.motor_direction(X_AXIS_HEAD)) { // -direction #if USE_X_MIN || (X_SPI_SENSORLESS && X_HOME_TO_MIN) PROCESS_ENDSTOP_X(MIN); #if CORE_DIAG(XY, Y, MIN) @@ -905,7 +905,7 @@ void Endstops::update() { #if HAS_Y_AXIS if (stepper.axis_is_moving(Y_AXIS)) { - if (stepper.motor_direction(Y_AXIS_HEAD)) { // -direction + if (!stepper.motor_direction(Y_AXIS_HEAD)) { // -direction #if USE_Y_MIN || (Y_SPI_SENSORLESS && Y_HOME_TO_MIN) PROCESS_ENDSTOP_Y(MIN); #if CORE_DIAG(XY, X, MIN) @@ -938,7 +938,7 @@ void Endstops::update() { #if HAS_Z_AXIS if (stepper.axis_is_moving(Z_AXIS)) { - if (stepper.motor_direction(Z_AXIS_HEAD)) { // Z -direction. Gantry down, bed up. + if (!stepper.motor_direction(Z_AXIS_HEAD)) { // Z -direction. Gantry down, bed up. #if USE_Z_MIN || (Z_SPI_SENSORLESS && Z_HOME_TO_MIN) if ( TERN1(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, z_probe_enabled) @@ -983,7 +983,7 @@ void Endstops::update() { #if HAS_I_AXIS if (stepper.axis_is_moving(I_AXIS)) { - if (stepper.motor_direction(I_AXIS_HEAD)) { // -direction + if (!stepper.motor_direction(I_AXIS_HEAD)) { // -direction #if USE_I_MIN || (I_SPI_SENSORLESS && I_HOME_TO_MIN) PROCESS_ENDSTOP(I, MIN); #endif @@ -998,7 +998,7 @@ void Endstops::update() { #if HAS_J_AXIS if (stepper.axis_is_moving(J_AXIS)) { - if (stepper.motor_direction(J_AXIS_HEAD)) { // -direction + if (!stepper.motor_direction(J_AXIS_HEAD)) { // -direction #if USE_J_MIN || (J_SPI_SENSORLESS && J_HOME_TO_MIN) PROCESS_ENDSTOP(J, MIN); #endif @@ -1013,7 +1013,7 @@ void Endstops::update() { #if HAS_K_AXIS if (stepper.axis_is_moving(K_AXIS)) { - if (stepper.motor_direction(K_AXIS_HEAD)) { // -direction + if (!stepper.motor_direction(K_AXIS_HEAD)) { // -direction #if USE_K_MIN || (K_SPI_SENSORLESS && K_HOME_TO_MIN) PROCESS_ENDSTOP(K, MIN); #endif @@ -1028,7 +1028,7 @@ void Endstops::update() { #if HAS_U_AXIS if (stepper.axis_is_moving(U_AXIS)) { - if (stepper.motor_direction(U_AXIS_HEAD)) { // -direction + if (!stepper.motor_direction(U_AXIS_HEAD)) { // -direction #if USE_U_MIN || (U_SPI_SENSORLESS && U_HOME_TO_MIN) PROCESS_ENDSTOP(U, MIN); #endif @@ -1043,7 +1043,7 @@ void Endstops::update() { #if HAS_V_AXIS if (stepper.axis_is_moving(V_AXIS)) { - if (stepper.motor_direction(V_AXIS_HEAD)) { // -direction + if (!stepper.motor_direction(V_AXIS_HEAD)) { // -direction #if USE_V_MIN || (V_SPI_SENSORLESS && V_HOME_TO_MIN) PROCESS_ENDSTOP(V, MIN); #endif @@ -1058,7 +1058,7 @@ void Endstops::update() { #if HAS_W_AXIS if (stepper.axis_is_moving(W_AXIS)) { - if (stepper.motor_direction(W_AXIS_HEAD)) { // -direction + if (!stepper.motor_direction(W_AXIS_HEAD)) { // -direction #if USE_W_MIN || (W_SPI_SENSORLESS && W_HOME_TO_MIN) PROCESS_ENDSTOP(W, MIN); #endif diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp index 97dae881f8..407296f030 100644 --- a/Marlin/src/module/ft_motion.cpp +++ b/Marlin/src/module/ft_motion.cpp @@ -422,9 +422,9 @@ void FxdTiCtrl::reset() { stepperCmdBuff_produceIdx = stepperCmdBuff_consumeIdx = 0; for (uint32_t i = 0U; i < (FTM_BATCH_SIZE); i++) { // Reset trajectory history - TERN_(HAS_X_AXIS, xd[i] = 0.0f); - TERN_(HAS_Y_AXIS, yd[i] = 0.0f); - TERN_(HAS_Z_AXIS, zd[i] = 0.0f); + TERN_(HAS_X_AXIS, xd[i] = 0.0f); + TERN_(HAS_Y_AXIS, yd[i] = 0.0f); + TERN_(HAS_Z_AXIS, zd[i] = 0.0f); TERN_(HAS_EXTRUDERS, ed[i] = 0.0f); } @@ -432,23 +432,26 @@ void FxdTiCtrl::reset() { batchRdy = batchRdyForInterp = false; runoutEna = false; - TERN_(HAS_X_AXIS, x_endPosn_prevBlock = 0.0f); - TERN_(HAS_Y_AXIS, y_endPosn_prevBlock = 0.0f); - TERN_(HAS_Z_AXIS, z_endPosn_prevBlock = 0.0f); + TERN_(HAS_X_AXIS, x_endPosn_prevBlock = 0.0f); + TERN_(HAS_Y_AXIS, y_endPosn_prevBlock = 0.0f); + TERN_(HAS_Z_AXIS, z_endPosn_prevBlock = 0.0f); TERN_(HAS_EXTRUDERS, e_endPosn_prevBlock = 0.0f); makeVector_idx = makeVector_idx_z1 = 0; makeVector_batchIdx = FTM_BATCH_SIZE; - TERN_(HAS_X_AXIS, x_steps = 0); - TERN_(HAS_Y_AXIS, y_steps = 0); - TERN_(HAS_Z_AXIS, z_steps = 0); + TERN_(HAS_X_AXIS, x_steps = 0); + TERN_(HAS_Y_AXIS, y_steps = 0); + TERN_(HAS_Z_AXIS, z_steps = 0); TERN_(HAS_EXTRUDERS, e_steps = 0); + interpIdx = interpIdx_z1 = 0; - TERN_(HAS_X_AXIS, x_dirState = stepDirState_NOT_SET); - TERN_(HAS_Y_AXIS, y_dirState = stepDirState_NOT_SET); - TERN_(HAS_Z_AXIS, z_dirState = stepDirState_NOT_SET); + + TERN_(HAS_X_AXIS, x_dirState = stepDirState_NOT_SET); + TERN_(HAS_Y_AXIS, y_dirState = stepDirState_NOT_SET); + TERN_(HAS_Z_AXIS, z_dirState = stepDirState_NOT_SET); TERN_(HAS_EXTRUDERS, e_dirState = stepDirState_NOT_SET); + nextStepTicks = FTM_MIN_TICKS; #if HAS_X_AXIS @@ -486,28 +489,28 @@ void FxdTiCtrl::loadBlockData(block_t * const current_block) { #if HAS_X_AXIS x_startPosn = x_endPosn_prevBlock; float x_moveDist = current_block->steps.a / planner.settings.axis_steps_per_mm[X_AXIS]; - if (direction.x) x_moveDist *= -1.0f; + if (!direction.x) x_moveDist *= -1.0f; x_Ratio = x_moveDist * oneOverLength; #endif #if HAS_Y_AXIS y_startPosn = y_endPosn_prevBlock; float y_moveDist = current_block->steps.b / planner.settings.axis_steps_per_mm[Y_AXIS]; - if (direction.y) y_moveDist *= -1.0f; + if (!direction.y) y_moveDist *= -1.0f; y_Ratio = y_moveDist * oneOverLength; #endif #if HAS_Z_AXIS z_startPosn = z_endPosn_prevBlock; float z_moveDist = current_block->steps.c / planner.settings.axis_steps_per_mm[Z_AXIS]; - if (direction.z) z_moveDist *= -1.0f; + if (!direction.z) z_moveDist *= -1.0f; z_Ratio = z_moveDist * oneOverLength; #endif #if HAS_EXTRUDERS e_startPosn = e_endPosn_prevBlock; float extrusion = current_block->steps.e / planner.settings.axis_steps_per_mm[E_AXIS_N(current_block->extruder)]; - if (direction.e) extrusion *= -1.0f; + if (!direction.e) extrusion *= -1.0f; e_Ratio = extrusion * oneOverLength; #endif @@ -568,31 +571,31 @@ void FxdTiCtrl::loadBlockData(block_t * const current_block) { // One less than (Accel + Coasting + Decel) datapoints max_intervals = N1 + N2 + N3 - 1U; - TERN_(HAS_X_AXIS, x_endPosn_prevBlock += x_moveDist); - TERN_(HAS_Y_AXIS, y_endPosn_prevBlock += y_moveDist); - TERN_(HAS_Z_AXIS, z_endPosn_prevBlock += z_moveDist); + TERN_(HAS_X_AXIS, x_endPosn_prevBlock += x_moveDist); + TERN_(HAS_Y_AXIS, y_endPosn_prevBlock += y_moveDist); + TERN_(HAS_Z_AXIS, z_endPosn_prevBlock += z_moveDist); TERN_(HAS_EXTRUDERS, e_endPosn_prevBlock += extrusion); } // Generate data points of the trajectory. void FxdTiCtrl::makeVector() { - float accel_k = 0.0f; // (mm/s^2) Acceleration K factor - float tau = (makeVector_idx + 1) * (FTM_TS); // (s) Time since start of block - float dist = 0.0f; // (mm) Distance traveled + float accel_k = 0.0f; // (mm/s^2) Acceleration K factor + float tau = (makeVector_idx + 1) * (FTM_TS); // (s) Time since start of block + float dist = 0.0f; // (mm) Distance traveled if (makeVector_idx < N1) { // Acceleration phase - dist = (f_s * tau) + (0.5f * accel_P * sq(tau)); // (mm) Distance traveled for acceleration phase - accel_k = accel_P; // (mm/s^2) Acceleration K factor from Accel phase + dist = (f_s * tau) + (0.5f * accel_P * sq(tau)); // (mm) Distance traveled for acceleration phase + accel_k = accel_P; // (mm/s^2) Acceleration K factor from Accel phase } else if (makeVector_idx >= N1 && makeVector_idx < (N1 + N2)) { // Coasting phase - dist = s_1e + F_P * (tau - N1 * (FTM_TS)); // (mm) Distance traveled for coasting phase + dist = s_1e + F_P * (tau - N1 * (FTM_TS)); // (mm) Distance traveled for coasting phase //accel_k = 0.0f; } else { // Deceleration phase - const float tau_ = tau - (N1 + N2) * (FTM_TS); // (s) Time since start of decel phase + const float tau_ = tau - (N1 + N2) * (FTM_TS); // (s) Time since start of decel phase dist = s_2e + F_P * tau_ + 0.5f * decel_P * sq(tau_); // (mm) Distance traveled for deceleration phase accel_k = decel_P; // (mm/s^2) Acceleration K factor from Decel phase } @@ -614,7 +617,7 @@ void FxdTiCtrl::makeVector() { } else { ed[makeVector_batchIdx] = new_raw_z1; - // Alternatively: coordArray_e[makeVector_batchIdx] = e_startDist + extrusion / (N1 + N2 + N3); + // Alternatively: ed[makeVector_batchIdx] = e_startPosn + (e_Ratio * dist) / (N1 + N2 + N3); } #endif diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index a2d7e6843b..b0d0b3e353 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -169,7 +169,7 @@ float Planner::mm_per_step[DISTINCT_AXES]; // (mm) Millimeters per step #if ENABLED(DIRECT_STEPPING) uint32_t Planner::last_page_step_rate = 0; - xyze_bool_t Planner::last_page_dir{0}; + AxisBits Planner::last_page_dir; // = 0 #endif #if HAS_EXTRUDERS @@ -1887,67 +1887,56 @@ bool Planner::_populate_block( OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm) , feedRate_t fr_mm_s, const uint8_t extruder, const PlannerHints &hints ) { - int32_t LOGICAL_AXIS_LIST( - de = target.e - position.e, - da = target.a - position.a, - db = target.b - position.b, - dc = target.c - position.c, - di = target.i - position.i, - dj = target.j - position.j, - dk = target.k - position.k, - du = target.u - position.u, - dv = target.v - position.v, - dw = target.w - position.w - ); + xyze_long_t dist = target - position; /* <-- add a slash to enable SERIAL_ECHOLNPGM( " _populate_block FR:", fr_mm_s, #if HAS_X_AXIS - " A:", target.a, " (", da, " steps)" + " A:", target.a, " (", dist.a, " steps)" #endif #if HAS_Y_AXIS - " B:", target.b, " (", db, " steps)" + " B:", target.b, " (", dist.b, " steps)" #endif #if HAS_Z_AXIS - " C:", target.c, " (", dc, " steps)" + " C:", target.c, " (", dist.c, " steps)" #endif #if HAS_I_AXIS - " " STR_I ":", target.i, " (", di, " steps)" + " " STR_I ":", target.i, " (", dist.i, " steps)" #endif #if HAS_J_AXIS - " " STR_J ":", target.j, " (", dj, " steps)" + " " STR_J ":", target.j, " (", dist.j, " steps)" #endif #if HAS_K_AXIS - " " STR_K ":", target.k, " (", dk, " steps)" + " " STR_K ":", target.k, " (", dist.k, " steps)" #endif #if HAS_U_AXIS - " " STR_U ":", target.u, " (", du, " steps)" + " " STR_U ":", target.u, " (", dist.u, " steps)" #endif #if HAS_V_AXIS - " " STR_V ":", target.v, " (", dv, " steps)" + " " STR_V ":", target.v, " (", dist.v, " steps)" #endif #if HAS_W_AXIS - " " STR_W ":", target.w, " (", dw, " steps)" + " " STR_W ":", target.w, " (", dist.w, " steps)" #endif #if HAS_EXTRUDERS - " E:", target.e, " (", de, " steps)" + " E:", target.e, " (", dist.e, " steps)" #endif ); //*/ #if EITHER(PREVENT_COLD_EXTRUSION, PREVENT_LENGTHY_EXTRUDE) - if (de) { + if (dist.e) { #if ENABLED(PREVENT_COLD_EXTRUSION) if (thermalManager.tooColdToExtrude(extruder)) { position.e = target.e; // Behave as if the move really took place, but ignore E part TERN_(HAS_POSITION_FLOAT, position_float.e = target_float.e); - de = 0; // no difference + dist.e = 0; // no difference SERIAL_ECHO_MSG(STR_ERR_COLD_EXTRUDE_STOP); } #endif // PREVENT_COLD_EXTRUSION #if ENABLED(PREVENT_LENGTHY_EXTRUDE) - const float e_steps = ABS(de * e_factor[extruder]); + const float e_steps = ABS(dist.e * e_factor[extruder]); const float max_e_steps = settings.axis_steps_per_mm[E_AXIS_N(extruder)] * (EXTRUDE_MAXLENGTH); if (e_steps > max_e_steps) { #if ENABLED(MIXING_EXTRUDER) @@ -1962,7 +1951,7 @@ bool Planner::_populate_block( if (ignore_e) { position.e = target.e; // Behave as if the move really took place, but ignore E part TERN_(HAS_POSITION_FLOAT, position_float.e = target_float.e); - de = 0; // no difference + dist.e = 0; // no difference SERIAL_ECHO_MSG(STR_ERR_LONG_EXTRUDE_STOP); } } @@ -1973,49 +1962,49 @@ bool Planner::_populate_block( // Compute direction bit-mask for this block AxisBits dm; #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) - dm.hx = (da < 0); // Save the toolhead's true direction in X - dm.hy = (db < 0); // ...and Y - TERN_(HAS_Z_AXIS, dm.z = (dc < 0)); + dm.hx = (dist.a > 0); // Save the toolhead's true direction in X + dm.hy = (dist.b > 0); // ...and Y + TERN_(HAS_Z_AXIS, dm.z = (dist.c > 0)); #endif #if IS_CORE #if CORE_IS_XY - dm.a = (da + db < 0); // Motor A direction - dm.b = (CORESIGN(da - db) < 0); // Motor B direction + dm.a = (dist.a + dist.b > 0); // Motor A direction + dm.b = (CORESIGN(dist.a - dist.b) > 0); // Motor B direction #elif CORE_IS_XZ - dm.hx = (da < 0); // Save the toolhead's true direction in X - dm.y = (db < 0); - dm.hz = (dc < 0); // ...and Z - dm.a = (da + dc < 0); // Motor A direction - dm.c = (CORESIGN(da - dc) < 0); // Motor C direction + dm.hx = (dist.a > 0); // Save the toolhead's true direction in X + dm.y = (dist.b > 0); + dm.hz = (dist.c > 0); // ...and Z + dm.a = (dist.a + dist.c > 0); // Motor A direction + dm.c = (CORESIGN(dist.a - dist.c) > 0); // Motor C direction #elif CORE_IS_YZ - dm.x = (da < 0); - dm.hy = (db < 0); // Save the toolhead's true direction in Y - dm.hz = (dc < 0); // ...and Z - dm.b = (db + dc < 0); // Motor B direction - dm.c = (CORESIGN(db - dc) < 0); // Motor C direction + dm.x = (dist.a > 0); + dm.hy = (dist.b > 0); // Save the toolhead's true direction in Y + dm.hz = (dist.c > 0); // ...and Z + dm.b = (dist.b + dist.c > 0); // Motor B direction + dm.c = (CORESIGN(dist.b - dist.c) > 0); // Motor C direction #endif #elif ENABLED(MARKFORGED_XY) - dm.a = (da + db < 0); // Motor A direction - dm.b = (db < 0); // Motor B direction + dm.a = (dist.a + dist.b > 0); // Motor A direction + dm.b = (dist.b > 0); // Motor B direction #elif ENABLED(MARKFORGED_YX) - dm.a = (da < 0); // Motor A direction - dm.b = (db + da < 0); // Motor B direction + dm.a = (dist.a > 0); // Motor A direction + dm.b = (dist.b + dist.a > 0); // Motor B direction #else XYZ_CODE( - dm.x = (da < 0), - dm.y = (db < 0), - dm.z = (dc < 0) + dm.x = (dist.a > 0), + dm.y = (dist.b > 0), + dm.z = (dist.c > 0) ); #endif SECONDARY_AXIS_CODE( - dm.i = (di < 0), dm.j = (dj < 0), dm.k = (dk < 0), - dm.u = (du < 0), dm.v = (dv < 0), dm.w = (dw < 0) + dm.i = (dist.i > 0), dm.j = (dist.j > 0), dm.k = (dist.k > 0), + dm.u = (dist.u > 0), dm.v = (dist.v > 0), dm.w = (dist.w > 0) ); #if HAS_EXTRUDERS - dm.e = (de < 0); - const float esteps_float = de * e_factor[extruder]; + dm.e = (dist.e > 0); + const float esteps_float = dist.e * e_factor[extruder]; const uint32_t esteps = ABS(esteps_float) + 0.5f; #else constexpr uint32_t esteps = 0; @@ -2061,21 +2050,21 @@ bool Planner::_populate_block( // See https://www.corexy.com/theory.html block->steps.set(NUM_AXIS_LIST( #if CORE_IS_XY - ABS(da + db), ABS(da - db), ABS(dc) + ABS(dist.a + dist.b), ABS(dist.a - dist.b), ABS(dist.c) #elif CORE_IS_XZ - ABS(da + dc), ABS(db), ABS(da - dc) + ABS(dist.a + dist.c), ABS(dist.b), ABS(dist.a - dist.c) #elif CORE_IS_YZ - ABS(da), ABS(db + dc), ABS(db - dc) + ABS(dist.a), ABS(dist.b + dist.c), ABS(dist.b - dist.c) #elif ENABLED(MARKFORGED_XY) - ABS(da + db), ABS(db), ABS(dc) + ABS(dist.a + dist.b), ABS(dist.b), ABS(dist.c) #elif ENABLED(MARKFORGED_YX) - ABS(da), ABS(db + da), ABS(dc) + ABS(dist.a), ABS(dist.b + dist.a), ABS(dist.c) #elif IS_SCARA - ABS(da), ABS(db), ABS(dc) + ABS(dist.a), ABS(dist.b), ABS(dist.c) #else // default non-h-bot planning - ABS(da), ABS(db), ABS(dc) + ABS(dist.a), ABS(dist.b), ABS(dist.c) #endif - , ABS(di), ABS(dj), ABS(dk), ABS(du), ABS(dv), ABS(dw) + , ABS(dist.i), ABS(dist.j), ABS(dist.k), ABS(dist.u), ABS(dist.v), ABS(dist.w) )); /** @@ -2090,104 +2079,82 @@ bool Planner::_populate_block( #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) struct { float x, y, z; } head; #endif - } steps_dist_mm; + } dist_mm; #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) - steps_dist_mm.head.x = da * mm_per_step[A_AXIS]; - steps_dist_mm.head.y = db * mm_per_step[B_AXIS]; - TERN_(HAS_Z_AXIS, steps_dist_mm.z = dc * mm_per_step[Z_AXIS]); + dist_mm.head.x = dist.a * mm_per_step[A_AXIS]; + dist_mm.head.y = dist.b * mm_per_step[B_AXIS]; + TERN_(HAS_Z_AXIS, dist_mm.z = dist.c * mm_per_step[Z_AXIS]); #endif #if IS_CORE #if CORE_IS_XY - steps_dist_mm.a = (da + db) * mm_per_step[A_AXIS]; - steps_dist_mm.b = CORESIGN(da - db) * mm_per_step[B_AXIS]; + dist_mm.a = (dist.a + dist.b) * mm_per_step[A_AXIS]; + dist_mm.b = CORESIGN(dist.a - dist.b) * mm_per_step[B_AXIS]; #elif CORE_IS_XZ - steps_dist_mm.head.x = da * mm_per_step[A_AXIS]; - steps_dist_mm.y = db * mm_per_step[Y_AXIS]; - steps_dist_mm.head.z = dc * mm_per_step[C_AXIS]; - steps_dist_mm.a = (da + dc) * mm_per_step[A_AXIS]; - steps_dist_mm.c = CORESIGN(da - dc) * mm_per_step[C_AXIS]; + dist_mm.head.x = dist.a * mm_per_step[A_AXIS]; + dist_mm.y = dist.b * mm_per_step[Y_AXIS]; + dist_mm.head.z = dist.c * mm_per_step[C_AXIS]; + dist_mm.a = (dist.a + dist.c) * mm_per_step[A_AXIS]; + dist_mm.c = CORESIGN(dist.a - dist.c) * mm_per_step[C_AXIS]; #elif CORE_IS_YZ - steps_dist_mm.x = da * mm_per_step[X_AXIS]; - steps_dist_mm.head.y = db * mm_per_step[B_AXIS]; - steps_dist_mm.head.z = dc * mm_per_step[C_AXIS]; - steps_dist_mm.b = (db + dc) * mm_per_step[B_AXIS]; - steps_dist_mm.c = CORESIGN(db - dc) * mm_per_step[C_AXIS]; + dist_mm.x = dist.a * mm_per_step[X_AXIS]; + dist_mm.head.y = dist.b * mm_per_step[B_AXIS]; + dist_mm.head.z = dist.c * mm_per_step[C_AXIS]; + dist_mm.b = (dist.b + dist.c) * mm_per_step[B_AXIS]; + dist_mm.c = CORESIGN(dist.b - dist.c) * mm_per_step[C_AXIS]; #endif #elif ENABLED(MARKFORGED_XY) - steps_dist_mm.a = (da - db) * mm_per_step[A_AXIS]; - steps_dist_mm.b = db * mm_per_step[B_AXIS]; + dist_mm.a = (dist.a - dist.b) * mm_per_step[A_AXIS]; + dist_mm.b = dist.b * mm_per_step[B_AXIS]; #elif ENABLED(MARKFORGED_YX) - steps_dist_mm.a = da * mm_per_step[A_AXIS]; - steps_dist_mm.b = (db - da) * mm_per_step[B_AXIS]; + dist_mm.a = dist.a * mm_per_step[A_AXIS]; + dist_mm.b = (dist.b - dist.a) * mm_per_step[B_AXIS]; #else XYZ_CODE( - steps_dist_mm.a = da * mm_per_step[A_AXIS], - steps_dist_mm.b = db * mm_per_step[B_AXIS], - steps_dist_mm.c = dc * mm_per_step[C_AXIS] + dist_mm.a = dist.a * mm_per_step[A_AXIS], + dist_mm.b = dist.b * mm_per_step[B_AXIS], + dist_mm.c = dist.c * mm_per_step[C_AXIS] ); #endif SECONDARY_AXIS_CODE( - steps_dist_mm.i = di * mm_per_step[I_AXIS], - steps_dist_mm.j = dj * mm_per_step[J_AXIS], - steps_dist_mm.k = dk * mm_per_step[K_AXIS], - steps_dist_mm.u = du * mm_per_step[U_AXIS], - steps_dist_mm.v = dv * mm_per_step[V_AXIS], - steps_dist_mm.w = dw * mm_per_step[W_AXIS] + dist_mm.i = dist.i * mm_per_step[I_AXIS], dist_mm.j = dist.j * mm_per_step[J_AXIS], dist_mm.k = dist.k * mm_per_step[K_AXIS], + dist_mm.u = dist.u * mm_per_step[U_AXIS], dist_mm.v = dist.v * mm_per_step[V_AXIS], dist_mm.w = dist.w * mm_per_step[W_AXIS] ); - TERN_(HAS_EXTRUDERS, steps_dist_mm.e = esteps_float * mm_per_step[E_AXIS_N(extruder)]); + TERN_(HAS_EXTRUDERS, dist_mm.e = esteps_float * mm_per_step[E_AXIS_N(extruder)]); - TERN_(LCD_SHOW_E_TOTAL, e_move_accumulator += steps_dist_mm.e); + TERN_(LCD_SHOW_E_TOTAL, e_move_accumulator += dist_mm.e); #if HAS_ROTATIONAL_AXES bool cartesian_move = hints.cartesian_move; #endif if (true NUM_AXIS_GANG( - && block->steps.a < MIN_STEPS_PER_SEGMENT, - && block->steps.b < MIN_STEPS_PER_SEGMENT, - && block->steps.c < MIN_STEPS_PER_SEGMENT, - && block->steps.i < MIN_STEPS_PER_SEGMENT, - && block->steps.j < MIN_STEPS_PER_SEGMENT, - && block->steps.k < MIN_STEPS_PER_SEGMENT, - && block->steps.u < MIN_STEPS_PER_SEGMENT, - && block->steps.v < MIN_STEPS_PER_SEGMENT, - && block->steps.w < MIN_STEPS_PER_SEGMENT + && block->steps.a < MIN_STEPS_PER_SEGMENT, && block->steps.b < MIN_STEPS_PER_SEGMENT, && block->steps.c < MIN_STEPS_PER_SEGMENT, + && block->steps.i < MIN_STEPS_PER_SEGMENT, && block->steps.j < MIN_STEPS_PER_SEGMENT, && block->steps.k < MIN_STEPS_PER_SEGMENT, + && block->steps.u < MIN_STEPS_PER_SEGMENT, && block->steps.v < MIN_STEPS_PER_SEGMENT, && block->steps.w < MIN_STEPS_PER_SEGMENT ) ) { - block->millimeters = TERN0(HAS_EXTRUDERS, ABS(steps_dist_mm.e)); + block->millimeters = TERN0(HAS_EXTRUDERS, ABS(dist_mm.e)); } else { if (hints.millimeters) block->millimeters = hints.millimeters; else { const xyze_pos_t displacement = LOGICAL_AXIS_ARRAY( - steps_dist_mm.e, + dist_mm.e, #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) - steps_dist_mm.head.x, - steps_dist_mm.head.y, - steps_dist_mm.z, + dist_mm.head.x, dist_mm.head.y, dist_mm.z, #elif CORE_IS_XZ - steps_dist_mm.head.x, - steps_dist_mm.y, - steps_dist_mm.head.z, + dist_mm.head.x, dist_mm.y, dist_mm.head.z, #elif CORE_IS_YZ - steps_dist_mm.x, - steps_dist_mm.head.y, - steps_dist_mm.head.z, + dist_mm.x, dist_mm.head.y, dist_mm.head.z, #else - steps_dist_mm.x, - steps_dist_mm.y, - steps_dist_mm.z, + dist_mm.x, dist_mm.y, dist_mm.z, #endif - steps_dist_mm.i, - steps_dist_mm.j, - steps_dist_mm.k, - steps_dist_mm.u, - steps_dist_mm.v, - steps_dist_mm.w + dist_mm.i, dist_mm.j, dist_mm.k, + dist_mm.u, dist_mm.v, dist_mm.w ); block->millimeters = get_move_distance(displacement OPTARG(HAS_ROTATIONAL_AXES, cartesian_move)); @@ -2202,7 +2169,7 @@ bool Planner::_populate_block( * A correction function is permitted to add steps to an axis, it * should *never* remove steps! */ - TERN_(BACKLASH_COMPENSATION, backlash.add_correction_steps(da, db, dc, dm, block)); + TERN_(BACKLASH_COMPENSATION, backlash.add_correction_steps(dist.a, dist.b, dist.c, dm, block)); } TERN_(HAS_EXTRUDERS, block->steps.e = esteps); @@ -2279,12 +2246,9 @@ bool Planner::_populate_block( #endif #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) SECONDARY_AXIS_CODE( - if (block->steps.i) stepper.enable_axis(I_AXIS), - if (block->steps.j) stepper.enable_axis(J_AXIS), - if (block->steps.k) stepper.enable_axis(K_AXIS), - if (block->steps.u) stepper.enable_axis(U_AXIS), - if (block->steps.v) stepper.enable_axis(V_AXIS), - if (block->steps.w) stepper.enable_axis(W_AXIS) + if (block->steps.i) stepper.enable_axis(I_AXIS), if (block->steps.j) stepper.enable_axis(J_AXIS), + if (block->steps.k) stepper.enable_axis(K_AXIS), if (block->steps.u) stepper.enable_axis(U_AXIS), + if (block->steps.v) stepper.enable_axis(V_AXIS), if (block->steps.w) stepper.enable_axis(W_AXIS) ); #endif @@ -2383,7 +2347,7 @@ bool Planner::_populate_block( #if ENABLED(FILAMENT_WIDTH_SENSOR) if (extruder == FILAMENT_SENSOR_EXTRUDER_NUM) // Only for extruder with filament sensor - filwidth.advance_e(steps_dist_mm.e); + filwidth.advance_e(dist_mm.e); #endif // Calculate and limit speed in mm/sec (linear) or degrees/sec (rotational) @@ -2393,7 +2357,7 @@ bool Planner::_populate_block( // Linear axes first with less logic LOOP_NUM_AXES(i) { - current_speed[i] = steps_dist_mm[i] * inverse_secs; + current_speed[i] = dist_mm[i] * inverse_secs; const feedRate_t cs = ABS(current_speed[i]), max_fr = settings.max_feedrate_mm_s[i]; if (cs > max_fr) NOMORE(speed_factor, max_fr / cs); @@ -2402,7 +2366,7 @@ bool Planner::_populate_block( // Limit speed on extruders, if any #if HAS_EXTRUDERS { - current_speed.e = steps_dist_mm.e * inverse_secs; + current_speed.e = dist_mm.e * inverse_secs; #if HAS_MIXER_SYNC_CHANNEL // Move all mixing extruders at the specified rate if (mixer.get_current_vtool() == MIXER_AUTORETRACT_TOOL) @@ -2519,9 +2483,9 @@ bool Planner::_populate_block( * * extruder_advance_K[extruder] : There is an advance factor set for this extruder. * - * de > 0 : Extruder is running forward (e.g., for "Wipe while retracting" (Slic3r) or "Combing" (Cura) moves) + * dist.e > 0 : Extruder is running forward (e.g., for "Wipe while retracting" (Slic3r) or "Combing" (Cura) moves) */ - use_advance_lead = esteps && extruder_advance_K[E_INDEX_N(extruder)] && de > 0; + use_advance_lead = esteps && extruder_advance_K[E_INDEX_N(extruder)] && dist.e > 0; if (use_advance_lead) { float e_D_ratio = (target_float.e - position_float.e) / @@ -2632,10 +2596,10 @@ bool Planner::_populate_block( #if HAS_DIST_MM_ARG cart_dist_mm #else - LOGICAL_AXIS_ARRAY(steps_dist_mm.e, - steps_dist_mm.x, steps_dist_mm.y, steps_dist_mm.z, - steps_dist_mm.i, steps_dist_mm.j, steps_dist_mm.k, - steps_dist_mm.u, steps_dist_mm.v, steps_dist_mm.w) + LOGICAL_AXIS_ARRAY(dist_mm.e, + dist_mm.x, dist_mm.y, dist_mm.z, + dist_mm.i, dist_mm.j, dist_mm.k, + dist_mm.u, dist_mm.v, dist_mm.w) #endif ; @@ -2804,7 +2768,7 @@ bool Planner::_populate_block( #ifndef TRAVEL_EXTRA_XYJERK #define TRAVEL_EXTRA_XYJERK 0 #endif - const float extra_xyjerk = TERN0(HAS_EXTRUDERS, de <= 0) ? TRAVEL_EXTRA_XYJERK : 0; + const float extra_xyjerk = TERN0(HAS_EXTRUDERS, dist.e <= 0) ? TRAVEL_EXTRA_XYJERK : 0; uint8_t limited = 0; TERN(HAS_LINEAR_E_JERK, LOOP_NUM_AXES, LOOP_LOGICAL_AXES)(i) { @@ -3239,16 +3203,11 @@ bool Planner::buffer_line(const xyze_pos_t &cart, const_feedRate_t fr_mm_s block->decelerate_after = block->step_event_count; // Will be set to last direction later if directional format. - block->direction_bits = 0; - - #define PAGE_UPDATE_DIR(AXIS) \ - if (!last_page_dir[_AXIS(AXIS)]) SBI(block->direction_bits, _AXIS(AXIS)); + block->direction_bits.reset(); if (!DirectStepping::Config::DIRECTIONAL) { - PAGE_UPDATE_DIR(X); - PAGE_UPDATE_DIR(Y); - PAGE_UPDATE_DIR(Z); - PAGE_UPDATE_DIR(E); + #define PAGE_UPDATE_DIR(AXIS) do{ if (last_page_dir.AXIS) block->direction_bits.AXIS = true; }while(0); + LOGICAL_AXIS_MAP(PAGE_UPDATE_DIR); } // If this is the first added movement, reload the delay, otherwise, cancel it. diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index eb0f072f4b..4b68c5f656 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -417,7 +417,7 @@ class Planner { #if ENABLED(DIRECT_STEPPING) static uint32_t last_page_step_rate; // Last page step rate given - static xyze_bool_t last_page_dir; // Last page direction given + static AxisBits last_page_dir; // Last page direction given, where 1 represents forward or positive motion #endif #if HAS_EXTRUDERS diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index c811bf5e38..b23667b820 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -383,111 +383,114 @@ xyze_int8_t Stepper::count_direction{0}; } #if HAS_SYNCED_X_STEPPERS - #define X_APPLY_DIR(v,Q) do{ X_DIR_WRITE(v); X2_DIR_WRITE(INVERT_DIR(X2_VS_X, v)); }while(0) + #define X_APPLY_DIR(FWD,Q) do{ X_DIR_WRITE(FWD); X2_DIR_WRITE(INVERT_DIR(X2_VS_X, FWD)); }while(0) #if ENABLED(X_DUAL_ENDSTOPS) - #define X_APPLY_STEP(v,Q) DUAL_ENDSTOP_APPLY_STEP(X,v) + #define X_APPLY_STEP(FWD,Q) DUAL_ENDSTOP_APPLY_STEP(X,FWD) #else - #define X_APPLY_STEP(v,Q) do{ X_STEP_WRITE(v); X2_STEP_WRITE(v); }while(0) + #define X_APPLY_STEP(FWD,Q) do{ X_STEP_WRITE(FWD); X2_STEP_WRITE(FWD); }while(0) #endif #elif ENABLED(DUAL_X_CARRIAGE) - #define X_APPLY_DIR(v,ALWAYS) do{ \ - if (extruder_duplication_enabled || ALWAYS) { X_DIR_WRITE(v); X2_DIR_WRITE((v) ^ idex_mirrored_mode); } \ - else if (last_moved_extruder) X2_DIR_WRITE(v); else X_DIR_WRITE(v); \ + #define X_APPLY_DIR(FWD,ALWAYS) do{ \ + if (extruder_duplication_enabled || ALWAYS) { X_DIR_WRITE(FWD); X2_DIR_WRITE((FWD) ^ idex_mirrored_mode); } \ + else if (last_moved_extruder) X2_DIR_WRITE(FWD); else X_DIR_WRITE(FWD); \ }while(0) - #define X_APPLY_STEP(v,ALWAYS) do{ \ - if (extruder_duplication_enabled || ALWAYS) { X_STEP_WRITE(v); X2_STEP_WRITE(v); } \ - else if (last_moved_extruder) X2_STEP_WRITE(v); else X_STEP_WRITE(v); \ + #define X_APPLY_STEP(FWD,ALWAYS) do{ \ + if (extruder_duplication_enabled || ALWAYS) { X_STEP_WRITE(FWD); X2_STEP_WRITE(FWD); } \ + else if (last_moved_extruder) X2_STEP_WRITE(FWD); else X_STEP_WRITE(FWD); \ }while(0) #elif HAS_X_AXIS - #define X_APPLY_DIR(v,Q) X_DIR_WRITE(v) - #define X_APPLY_STEP(v,Q) X_STEP_WRITE(v) + #define X_APPLY_DIR(FWD,Q) X_DIR_WRITE(FWD) + #define X_APPLY_STEP(FWD,Q) X_STEP_WRITE(FWD) #endif #if HAS_SYNCED_Y_STEPPERS - #define Y_APPLY_DIR(v,Q) do{ Y_DIR_WRITE(v); Y2_DIR_WRITE(INVERT_DIR(Y2_VS_Y, v)); }while(0) + #define Y_APPLY_DIR(FWD,Q) do{ Y_DIR_WRITE(FWD); Y2_DIR_WRITE(INVERT_DIR(Y2_VS_Y, FWD)); }while(0) #if ENABLED(Y_DUAL_ENDSTOPS) - #define Y_APPLY_STEP(v,Q) DUAL_ENDSTOP_APPLY_STEP(Y,v) + #define Y_APPLY_STEP(FWD,Q) DUAL_ENDSTOP_APPLY_STEP(Y,FWD) #else - #define Y_APPLY_STEP(v,Q) do{ Y_STEP_WRITE(v); Y2_STEP_WRITE(v); }while(0) + #define Y_APPLY_STEP(FWD,Q) do{ Y_STEP_WRITE(FWD); Y2_STEP_WRITE(FWD); }while(0) #endif #elif HAS_Y_AXIS - #define Y_APPLY_DIR(v,Q) Y_DIR_WRITE(v) - #define Y_APPLY_STEP(v,Q) Y_STEP_WRITE(v) + #define Y_APPLY_DIR(FWD,Q) Y_DIR_WRITE(FWD) + #define Y_APPLY_STEP(FWD,Q) Y_STEP_WRITE(FWD) #endif #if NUM_Z_STEPPERS == 4 - #define Z_APPLY_DIR(v,Q) do{ \ - Z_DIR_WRITE(v); Z2_DIR_WRITE(INVERT_DIR(Z2_VS_Z, v)); \ - Z3_DIR_WRITE(INVERT_DIR(Z3_VS_Z, v)); Z4_DIR_WRITE(INVERT_DIR(Z4_VS_Z, v)); \ + #define Z_APPLY_DIR(FWD,Q) do{ \ + Z_DIR_WRITE(FWD); Z2_DIR_WRITE(INVERT_DIR(Z2_VS_Z, FWD)); \ + Z3_DIR_WRITE(INVERT_DIR(Z3_VS_Z, FWD)); Z4_DIR_WRITE(INVERT_DIR(Z4_VS_Z, FWD)); \ }while(0) #if ENABLED(Z_MULTI_ENDSTOPS) - #define Z_APPLY_STEP(v,Q) QUAD_ENDSTOP_APPLY_STEP(Z,v) + #define Z_APPLY_STEP(FWD,Q) QUAD_ENDSTOP_APPLY_STEP(Z,FWD) #elif ENABLED(Z_STEPPER_AUTO_ALIGN) - #define Z_APPLY_STEP(v,Q) QUAD_SEPARATE_APPLY_STEP(Z,v) + #define Z_APPLY_STEP(FWD,Q) QUAD_SEPARATE_APPLY_STEP(Z,FWD) #else - #define Z_APPLY_STEP(v,Q) do{ Z_STEP_WRITE(v); Z2_STEP_WRITE(v); Z3_STEP_WRITE(v); Z4_STEP_WRITE(v); }while(0) + #define Z_APPLY_STEP(FWD,Q) do{ Z_STEP_WRITE(FWD); Z2_STEP_WRITE(FWD); Z3_STEP_WRITE(FWD); Z4_STEP_WRITE(FWD); }while(0) #endif #elif NUM_Z_STEPPERS == 3 - #define Z_APPLY_DIR(v,Q) do{ \ - Z_DIR_WRITE(v); Z2_DIR_WRITE(INVERT_DIR(Z2_VS_Z, v)); Z3_DIR_WRITE(INVERT_DIR(Z3_VS_Z, v)); \ + #define Z_APPLY_DIR(FWD,Q) do{ \ + Z_DIR_WRITE(FWD); Z2_DIR_WRITE(INVERT_DIR(Z2_VS_Z, FWD)); Z3_DIR_WRITE(INVERT_DIR(Z3_VS_Z, FWD)); \ }while(0) #if ENABLED(Z_MULTI_ENDSTOPS) - #define Z_APPLY_STEP(v,Q) TRIPLE_ENDSTOP_APPLY_STEP(Z,v) + #define Z_APPLY_STEP(FWD,Q) TRIPLE_ENDSTOP_APPLY_STEP(Z,FWD) #elif ENABLED(Z_STEPPER_AUTO_ALIGN) - #define Z_APPLY_STEP(v,Q) TRIPLE_SEPARATE_APPLY_STEP(Z,v) + #define Z_APPLY_STEP(FWD,Q) TRIPLE_SEPARATE_APPLY_STEP(Z,FWD) #else - #define Z_APPLY_STEP(v,Q) do{ Z_STEP_WRITE(v); Z2_STEP_WRITE(v); Z3_STEP_WRITE(v); }while(0) + #define Z_APPLY_STEP(FWD,Q) do{ Z_STEP_WRITE(FWD); Z2_STEP_WRITE(FWD); Z3_STEP_WRITE(FWD); }while(0) #endif #elif NUM_Z_STEPPERS == 2 - #define Z_APPLY_DIR(v,Q) do{ Z_DIR_WRITE(v); Z2_DIR_WRITE(INVERT_DIR(Z2_VS_Z, v)); }while(0) + #define Z_APPLY_DIR(FWD,Q) do{ Z_DIR_WRITE(FWD); Z2_DIR_WRITE(INVERT_DIR(Z2_VS_Z, FWD)); }while(0) #if ENABLED(Z_MULTI_ENDSTOPS) - #define Z_APPLY_STEP(v,Q) DUAL_ENDSTOP_APPLY_STEP(Z,v) + #define Z_APPLY_STEP(FWD,Q) DUAL_ENDSTOP_APPLY_STEP(Z,FWD) #elif ENABLED(Z_STEPPER_AUTO_ALIGN) - #define Z_APPLY_STEP(v,Q) DUAL_SEPARATE_APPLY_STEP(Z,v) + #define Z_APPLY_STEP(FWD,Q) DUAL_SEPARATE_APPLY_STEP(Z,FWD) #else - #define Z_APPLY_STEP(v,Q) do{ Z_STEP_WRITE(v); Z2_STEP_WRITE(v); }while(0) + #define Z_APPLY_STEP(FWD,Q) do{ Z_STEP_WRITE(FWD); Z2_STEP_WRITE(FWD); }while(0) #endif #elif HAS_Z_AXIS - #define Z_APPLY_DIR(v,Q) Z_DIR_WRITE(v) - #define Z_APPLY_STEP(v,Q) Z_STEP_WRITE(v) + #define Z_APPLY_DIR(FWD,Q) Z_DIR_WRITE(FWD) + #define Z_APPLY_STEP(FWD,Q) Z_STEP_WRITE(FWD) #endif #if HAS_I_AXIS - #define I_APPLY_DIR(v,Q) I_DIR_WRITE(v) - #define I_APPLY_STEP(v,Q) I_STEP_WRITE(v) + #define I_APPLY_DIR(FWD,Q) I_DIR_WRITE(FWD) + #define I_APPLY_STEP(FWD,Q) I_STEP_WRITE(FWD) #endif #if HAS_J_AXIS - #define J_APPLY_DIR(v,Q) J_DIR_WRITE(v) - #define J_APPLY_STEP(v,Q) J_STEP_WRITE(v) + #define J_APPLY_DIR(FWD,Q) J_DIR_WRITE(FWD) + #define J_APPLY_STEP(FWD,Q) J_STEP_WRITE(FWD) #endif #if HAS_K_AXIS - #define K_APPLY_DIR(v,Q) K_DIR_WRITE(v) - #define K_APPLY_STEP(v,Q) K_STEP_WRITE(v) + #define K_APPLY_DIR(FWD,Q) K_DIR_WRITE(FWD) + #define K_APPLY_STEP(FWD,Q) K_STEP_WRITE(FWD) #endif #if HAS_U_AXIS - #define U_APPLY_DIR(v,Q) U_DIR_WRITE(v) - #define U_APPLY_STEP(v,Q) U_STEP_WRITE(v) + #define U_APPLY_DIR(FWD,Q) U_DIR_WRITE(FWD) + #define U_APPLY_STEP(FWD,Q) U_STEP_WRITE(FWD) #endif #if HAS_V_AXIS - #define V_APPLY_DIR(v,Q) V_DIR_WRITE(v) - #define V_APPLY_STEP(v,Q) V_STEP_WRITE(v) + #define V_APPLY_DIR(FWD,Q) V_DIR_WRITE(FWD) + #define V_APPLY_STEP(FWD,Q) V_STEP_WRITE(FWD) #endif #if HAS_W_AXIS - #define W_APPLY_DIR(v,Q) W_DIR_WRITE(v) - #define W_APPLY_STEP(v,Q) W_STEP_WRITE(v) + #define W_APPLY_DIR(FWD,Q) W_DIR_WRITE(FWD) + #define W_APPLY_STEP(FWD,Q) W_STEP_WRITE(FWD) #endif -#define E0_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(0) : REV_E_DIR(0); }while(0) -#define E1_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(1) : REV_E_DIR(1); }while(0) -#define E2_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(2) : REV_E_DIR(2); }while(0) -#define E3_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(3) : REV_E_DIR(3); }while(0) -#define E4_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(4) : REV_E_DIR(4); }while(0) -#define E5_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(5) : REV_E_DIR(5); }while(0) -#define E6_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(6) : REV_E_DIR(6); }while(0) -#define E7_APPLY_DIR(REV) do{ (REV) ? FWD_E_DIR(7) : REV_E_DIR(7); }while(0) +//#define E0_APPLY_DIR(FWD) do{ (FWD) ? FWD_E_DIR(0) : REV_E_DIR(0); }while(0) +//#define E1_APPLY_DIR(FWD) do{ (FWD) ? FWD_E_DIR(1) : REV_E_DIR(1); }while(0) +//#define E2_APPLY_DIR(FWD) do{ (FWD) ? FWD_E_DIR(2) : REV_E_DIR(2); }while(0) +//#define E3_APPLY_DIR(FWD) do{ (FWD) ? FWD_E_DIR(3) : REV_E_DIR(3); }while(0) +//#define E4_APPLY_DIR(FWD) do{ (FWD) ? FWD_E_DIR(4) : REV_E_DIR(4); }while(0) +//#define E5_APPLY_DIR(FWD) do{ (FWD) ? FWD_E_DIR(5) : REV_E_DIR(5); }while(0) +//#define E6_APPLY_DIR(FWD) do{ (FWD) ? FWD_E_DIR(6) : REV_E_DIR(6); }while(0) +//#define E7_APPLY_DIR(FWD) do{ (FWD) ? FWD_E_DIR(7) : REV_E_DIR(7); }while(0) -#if DISABLED(MIXING_EXTRUDER) - #define E_APPLY_STEP(v,Q) E_STEP_WRITE(stepper_extruder, v) +#if ENABLED(MIXING_EXTRUDER) + #define E_APPLY_DIR(FWD,Q) do{ if (FWD) { MIXER_STEPPER_LOOP(j) FWD_E_DIR(j); } else { MIXER_STEPPER_LOOP(j) REV_E_DIR(j); } }while(0) +#else + #define E_APPLY_STEP(FWD,Q) E_STEP_WRITE(stepper_extruder, FWD) + #define E_APPLY_DIR(FWD,Q) do{ if (FWD) { FWD_E_DIR(stepper_extruder); } else { REV_E_DIR(stepper_extruder); } }while(0) #endif #define CYCLES_TO_NS(CYC) (1000UL * (CYC) / ((F_CPU) / 1000000)) @@ -602,16 +605,12 @@ void Stepper::disable_all_steppers() { } // Set a single axis direction based on the last set flags. -// A direction bit of "1" indicates reverse or negative motion. -#define SET_STEP_DIR(A) \ - if (motor_direction(_AXIS(A))) { \ - A##_APPLY_DIR(LOW, false); \ - count_direction[_AXIS(A)] = -1; \ - } \ - else { \ - A##_APPLY_DIR(HIGH, false); \ - count_direction[_AXIS(A)] = 1; \ - } +// A direction bit of "1" indicates forward or positive motion. +#define SET_STEP_DIR(A) do{ \ + const bool fwd = motor_direction(_AXIS(A)); \ + A##_APPLY_DIR(fwd, false); \ + count_direction[_AXIS(A)] = fwd ? 1 : -1; \ + }while(0) /** * Set the stepper direction of each axis @@ -621,36 +620,15 @@ void Stepper::disable_all_steppers() { * COREYZ: Y_AXIS=B_AXIS and Z_AXIS=C_AXIS */ void Stepper::apply_directions() { - DIR_WAIT_BEFORE(); - NUM_AXIS_CODE( + LOGICAL_AXIS_CODE( + SET_STEP_DIR(E), SET_STEP_DIR(X), SET_STEP_DIR(Y), SET_STEP_DIR(Z), // ABC SET_STEP_DIR(I), SET_STEP_DIR(J), SET_STEP_DIR(K), SET_STEP_DIR(U), SET_STEP_DIR(V), SET_STEP_DIR(W) ); - #if HAS_EXTRUDERS - // Because this is valid for the whole block we don't know - // what E steppers will step. Likely all. Set all. - if (motor_direction(E_AXIS)) { - #if ENABLED(MIXING_EXTRUDER) - MIXER_STEPPER_LOOP(j) REV_E_DIR(j); - #else - REV_E_DIR(stepper_extruder); - #endif - count_direction.e = -1; - } - else { - #if ENABLED(MIXING_EXTRUDER) - MIXER_STEPPER_LOOP(j) FWD_E_DIR(j); - #else - FWD_E_DIR(stepper_extruder); - #endif - count_direction.e = 1; - } - #endif // HAS_EXTRUDERS - DIR_WAIT_AFTER(); } @@ -1858,8 +1836,8 @@ void Stepper::pulse_phase_isr() { #if STEPPER_PAGE_FORMAT == SP_4x4D_128 #define PAGE_SEGMENT_UPDATE(AXIS, VALUE) do{ \ - if ((VALUE) < 7) dm[_AXIS(AXIS)] = true; \ - else if ((VALUE) > 7) dm[_AXIS(AXIS)] = false; \ + if ((VALUE) < 7) dm[_AXIS(AXIS)] = false; \ + else if ((VALUE) > 7) dm[_AXIS(AXIS)] = true; \ page_step_state.sd[_AXIS(AXIS)] = VALUE; \ page_step_state.bd[_AXIS(AXIS)] += VALUE; \ }while(0) @@ -1884,8 +1862,7 @@ void Stepper::pulse_phase_isr() { PAGE_SEGMENT_UPDATE(Z, high >> 4); PAGE_SEGMENT_UPDATE(E, high & 0xF); - if (dm != last_direction_bits) - set_directions(dm); + if (dm != last_direction_bits) set_directions(dm); } break; @@ -2409,29 +2386,16 @@ hal_timer_t Stepper::block_phase_isr() { if (la_active) { const uint32_t la_step_rate = la_advance_steps > current_block->final_adv_steps ? current_block->la_advance_rate : 0; if (la_step_rate != step_rate) { - const bool reverse_e = la_step_rate > step_rate; - la_interval = calc_timer_interval((reverse_e ? la_step_rate - step_rate : step_rate - la_step_rate) >> current_block->la_scaling); + const bool forward_e = la_step_rate < step_rate; + la_interval = calc_timer_interval((forward_e ? step_rate - la_step_rate : la_step_rate - step_rate) >> current_block->la_scaling); - if (reverse_e != motor_direction(E_AXIS)) { + if (forward_e != motor_direction(E_AXIS)) { last_direction_bits.toggle(E_AXIS); count_direction.e = -count_direction.e; DIR_WAIT_BEFORE(); - if (reverse_e) { - #if ENABLED(MIXING_EXTRUDER) - MIXER_STEPPER_LOOP(j) REV_E_DIR(j); - #else - REV_E_DIR(stepper_extruder); - #endif - } - else { - #if ENABLED(MIXING_EXTRUDER) - MIXER_STEPPER_LOOP(j) FWD_E_DIR(j); - #else - FWD_E_DIR(stepper_extruder); - #endif - } + E_APPLY_DIR(forward_e, false); DIR_WAIT_AFTER(); } @@ -2688,13 +2652,13 @@ hal_timer_t Stepper::block_phase_isr() { #if ENABLED(INPUT_SHAPING_X) if (shaping_x.enabled) { - const int64_t steps = current_block->direction_bits.x ? -int64_t(current_block->steps.x) : int64_t(current_block->steps.x); + const int64_t steps = current_block->direction_bits.x ? int64_t(current_block->steps.x) : -int64_t(current_block->steps.x); shaping_x.last_block_end_pos += steps; // If there are any remaining echos unprocessed, then direction change must // be delayed and processed in PULSE_PREP_SHAPING. This will cause half a step // to be missed, which will need recovering and this can be done through shaping_x.remainder. - shaping_x.forward = !current_block->direction_bits.x; + shaping_x.forward = current_block->direction_bits.x; if (!ShapingQueue::empty_x()) current_block->direction_bits.x = last_direction_bits.x; } #endif @@ -2702,9 +2666,9 @@ hal_timer_t Stepper::block_phase_isr() { // Y follows the same logic as X (but the comments aren't repeated) #if ENABLED(INPUT_SHAPING_Y) if (shaping_y.enabled) { - const int64_t steps = current_block->direction_bits.y ? -int64_t(current_block->steps.y) : int64_t(current_block->steps.y); + const int64_t steps = current_block->direction_bits.y ? int64_t(current_block->steps.y) : -int64_t(current_block->steps.y); shaping_y.last_block_end_pos += steps; - shaping_y.forward = !current_block->direction_bits.y; + shaping_y.forward = current_block->direction_bits.y; if (!ShapingQueue::empty_y()) current_block->direction_bits.y = last_direction_bits.y; } #endif @@ -3450,36 +3414,36 @@ void Stepper::report_positions() { #if HAS_Z_AXIS // Z is handled differently to update the stepper // counts (needed by Marlin for bed level probing). - const bool z_dir = TEST(command, FT_BIT_DIR_Z), + const bool z_fwd = TEST(command, FT_BIT_DIR_Z), z_step = TEST(command, FT_BIT_STEP_Z); #endif if (applyDir) { - TERN_(HAS_X_AXIS, X_DIR_WRITE(TEST(command, FT_BIT_DIR_X))); - TERN_(HAS_Y_AXIS, Y_DIR_WRITE(TEST(command, FT_BIT_DIR_Y))); - TERN_(HAS_Z_AXIS, Z_DIR_WRITE(z_dir)); - TERN_(HAS_EXTRUDERS, E0_DIR_WRITE(TEST(command, FT_BIT_DIR_E))); + TERN_(HAS_X_AXIS, X_APPLY_DIR(TEST(command, FT_BIT_DIR_X), false)); + TERN_(HAS_Y_AXIS, Y_APPLY_DIR(TEST(command, FT_BIT_DIR_Y), false)); + TERN_(HAS_Z_AXIS, Z_APPLY_DIR(z_fwd, false)); + TERN_(HAS_EXTRUDERS, E_APPLY_DIR(TEST(command, FT_BIT_DIR_E), false)); DIR_WAIT_AFTER(); } - TERN_(HAS_X_AXIS, X_STEP_WRITE(TEST(command, FT_BIT_STEP_X))); - TERN_(HAS_Y_AXIS, Y_STEP_WRITE(TEST(command, FT_BIT_STEP_Y))); - TERN_(HAS_Z_AXIS, Z_STEP_WRITE(z_step)); - TERN_(HAS_EXTRUDERS, E0_STEP_WRITE(TEST(command, FT_BIT_STEP_E))); + TERN_(HAS_X_AXIS, X_APPLY_STEP(TEST(command, FT_BIT_STEP_X), false)); + TERN_(HAS_Y_AXIS, Y_APPLY_STEP(TEST(command, FT_BIT_STEP_Y), false)); + TERN_(HAS_Z_AXIS, Z_APPLY_STEP(z_step, false)); + TERN_(HAS_EXTRUDERS, E_APPLY_STEP(TEST(command, FT_BIT_STEP_E), false)); START_TIMED_PULSE(); #if HAS_Z_AXIS // Update step counts - if (z_step) count_position.z += z_dir ? 1 : -1; + if (z_step) count_position.z += z_fwd ? 1 : -1; #endif AWAIT_HIGH_PULSE(); - X_STEP_WRITE(0); - TERN_(HAS_Y_AXIS, Y_STEP_WRITE(0)); - TERN_(HAS_Z_AXIS, Z_STEP_WRITE(0)); - TERN_(HAS_EXTRUDERS, E0_STEP_WRITE(0)); + TERN_(HAS_X_AXIS, X_APPLY_STEP(0, false)); + TERN_(HAS_Y_AXIS, Y_APPLY_STEP(0, false)); + TERN_(HAS_Z_AXIS, Z_APPLY_STEP(0, false)); + TERN_(HAS_EXTRUDERS, E_APPLY_STEP(0, false)); } // Stepper::fxdTiCtrl_stepper @@ -3565,7 +3529,7 @@ void Stepper::report_positions() { #define _ENABLE_AXIS(A) enable_axis(_AXIS(A)) #define _READ_DIR(AXIS) AXIS ##_DIR_READ() - #define _APPLY_DIR(AXIS, INVERT) AXIS ##_APPLY_DIR(INVERT, true) + #define _APPLY_DIR(AXIS, FWD) AXIS ##_APPLY_DIR(FWD, true) #if MINIMUM_STEPPER_PULSE #define STEP_PULSE_CYCLES ((MINIMUM_STEPPER_PULSE) * CYCLES_PER_MICROSECOND) diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 134bee7ac6..a2c9861abc 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -524,7 +524,7 @@ class Stepper { // Quickly stop all steppers FORCE_INLINE static void quick_stop() { abort_current_block = true; } - // The direction of a single motor. A true result indicates reversed or negative motion. + // The direction of a single motor. A true result indicates forward or positive motion. FORCE_INLINE static bool motor_direction(const AxisEnum axis) { return last_direction_bits[axis]; } // The last movement direction was not null on the specified axis. Note that motor direction is not necessarily the same. From fadd60441e020e9dcdd53cb592a089e1a06d3189 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 16 May 2023 01:28:04 -0500 Subject: [PATCH 445/659] =?UTF-8?q?=F0=9F=A9=B9=20Improve=20edit=20menu=20?= =?UTF-8?q?rounding?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/menu/menu_item.h | 73 +++++++++++++++++---------------- Marlin/src/libs/numtostr.h | 2 +- 2 files changed, 38 insertions(+), 37 deletions(-) diff --git a/Marlin/src/lcd/menu/menu_item.h b/Marlin/src/lcd/menu/menu_item.h index 2005be8b54..ecc1ac4047 100644 --- a/Marlin/src/lcd/menu/menu_item.h +++ b/Marlin/src/lcd/menu/menu_item.h @@ -79,10 +79,10 @@ template class TMenuEditItem : MenuEditItemBase { private: typedef typename NAME::type_t type_t; - static float scale(const_float_t value) { return NAME::scale(value); } - static float unscale(const_float_t value) { return NAME::unscale(value); } - static const char* to_string(const int32_t value) { return NAME::strfunc(unscale(value)); } - static void load(void *ptr, const int32_t value) { *((type_t*)ptr) = unscale(value); } + static int32_t scaleToEncoder(const type_t &value) { return NAME::scaleToEncoder(value); } + static type_t unscaleEncoder(const int32_t value) { return NAME::unscaleEncoder(value); } + static const char* to_string(const int32_t value) { return NAME::strfunc(unscaleEncoder(value)); } + static void load(void *ptr, const int32_t value) { *((type_t*)ptr) = unscaleEncoder(value); } public: FORCE_INLINE static void draw(const bool sel, const uint8_t row, FSTR_P const fstr, type_t * const data, ...) { MenuEditItemBase::draw(sel, row, fstr, NAME::strfunc(*(data))); @@ -101,9 +101,9 @@ class TMenuEditItem : MenuEditItemBase { const bool live=false // Callback during editing ) { // Make sure minv and maxv fit within int32_t - const int32_t minv = _MAX(scale(minValue), INT32_MIN), - maxv = _MIN(scale(maxValue), INT32_MAX); - goto_edit_screen(fstr, ptr, minv, maxv - minv, scale(*ptr) - minv, + const int32_t minv = _MAX(scaleToEncoder(minValue), INT32_MIN), + maxv = _MIN(scaleToEncoder(maxValue), INT32_MAX); + goto_edit_screen(fstr, ptr, minv, maxv - minv, scaleToEncoder(*ptr) - minv, edit_screen, callback, live); } }; @@ -119,9 +119,9 @@ class TMenuEditItem : MenuEditItemBase { * * struct MenuEditItemInfo_percent { * typedef uint8_t type_t; - * static float scale(const_float_t value) { return value * (100.f/255.f) +0.5f; } - * static float unscale(const_float_t value) { return value / (100.f/255.f) +0.5f; } - * static const char* strfunc(const_float_t value) { return ui8tostr4pctrj(_DOFIX(uint8_t,value)); } + * static int32_t scaleToEncoder(const type_t &value) { return value * (100.f/255.f) +0.5f; } + * static type_t unscaleEncoder(const int32_t value) { return type_t(value) / (100.f/255.f) +0.5f; } + * static const char* strfunc(const type_t &value) { return ui8tostr4pctrj(_DOFIX(uint8_t,value)); } * }; * typedef TMenuEditItem MenuItem_percent */ @@ -130,36 +130,37 @@ class TMenuEditItem : MenuEditItemBase { #define DEFINE_MENU_EDIT_ITEM_TYPE(NAME, TYPE, STRFUNC, SCALE, ETC...) \ struct MenuEditItemInfo_##NAME { \ typedef TYPE type_t; \ - static float scale(const_float_t value) { return value * (SCALE) ETC; } \ - static float unscale(const_float_t value) { return value / (SCALE) ETC; } \ - static const char* strfunc(const_float_t value) { return STRFUNC(_DOFIX(TYPE,value)); } \ + /* scale the given value to the encoder */ \ + static int32_t scaleToEncoder(const type_t &value) { return value * (SCALE) ETC; } \ + static type_t unscaleEncoder(const int32_t value) { return type_t(value) / (SCALE) ETC; } \ + static const char* strfunc(const type_t &value) { return STRFUNC(_DOFIX(TYPE,value)); } \ }; \ typedef TMenuEditItem MenuItem_##NAME // NAME TYPE STRFUNC SCALE ROUND -DEFINE_MENU_EDIT_ITEM_TYPE(percent ,uint8_t ,ui8tostr4pctrj , 100.f/255.f, +0.5f); // 100% right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(percent_3 ,uint8_t ,pcttostrpctrj , 1 ); // 100% right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(int3 ,int16_t ,i16tostr3rj , 1 ); // 123, -12 right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(int4 ,int16_t ,i16tostr4signrj , 1 ); // 1234, -123 right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(int8 ,int8_t ,i8tostr3rj , 1 ); // 123, -12 right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(uint8 ,uint8_t ,ui8tostr3rj , 1 ); // 123 right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(uint16_3 ,uint16_t ,ui16tostr3rj , 1 ); // 123 right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(uint16_4 ,uint16_t ,ui16tostr4rj , 0.1f ); // 1234 right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(uint16_5 ,uint16_t ,ui16tostr5rj , 0.01f ); // 12345 right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(float3 ,float ,ftostr3 , 1 ); // 123 right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(float42_52 ,float ,ftostr42_52 , 100 ); // _2.34, 12.34, -2.34 or 123.45, -23.45 -DEFINE_MENU_EDIT_ITEM_TYPE(float43 ,float ,ftostr43sign ,1000 ); // -1.234, _1.234, +1.234 -DEFINE_MENU_EDIT_ITEM_TYPE(float4 ,float ,ftostr4sign , 1 ); // 1234 right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(float5 ,float ,ftostr5rj , 1 ); // 12345 right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(float5_25 ,float ,ftostr5rj , 0.04f ); // 12345 right-justified (25 increment) -DEFINE_MENU_EDIT_ITEM_TYPE(float61 ,float ,ftostr61rj , 10 ); // 12345.6 right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(float72 ,float ,ftostr72rj , 100 ); // 12345.67 right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(float31sign ,float ,ftostr31sign , 10 ); // +12.3 -DEFINE_MENU_EDIT_ITEM_TYPE(float41sign ,float ,ftostr41sign , 10 ); // +123.4 -DEFINE_MENU_EDIT_ITEM_TYPE(float51sign ,float ,ftostr51sign , 10 ); // +1234.5 -DEFINE_MENU_EDIT_ITEM_TYPE(float52sign ,float ,ftostr52sign , 100 ); // +123.45 -DEFINE_MENU_EDIT_ITEM_TYPE(long5 ,uint32_t ,ftostr5rj , 0.01f ); // 12345 right-justified -DEFINE_MENU_EDIT_ITEM_TYPE(long5_25 ,uint32_t ,ftostr5rj , 0.04f ); // 12345 right-justified (25 increment) +DEFINE_MENU_EDIT_ITEM_TYPE(percent ,uint8_t ,ui8tostr4pctrj , 100.f/255.f, + 0.5f ); // 100% right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(percent_3 ,uint8_t ,pcttostrpctrj , 1 ); // 100% right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(int3 ,int16_t ,i16tostr3rj , 1 ); // 123, -12 right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(int4 ,int16_t ,i16tostr4signrj , 1 ); // 1234, -123 right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(int8 ,int8_t ,i8tostr3rj , 1 ); // 123, -12 right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(uint8 ,uint8_t ,ui8tostr3rj , 1 ); // 123 right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(uint16_3 ,uint16_t ,ui16tostr3rj , 1 ); // 123 right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(uint16_4 ,uint16_t ,ui16tostr4rj , 0.1f ); // 1234 right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(uint16_5 ,uint16_t ,ui16tostr5rj , 0.01f ); // 12345 right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(float3 ,float ,ftostr3rj , 1 ); // 123 right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(float42_52 ,float ,ftostr42_52 , 100 , + 0.001f ); // _2.34, 12.34, -2.34 or 123.45, -23.45 +DEFINE_MENU_EDIT_ITEM_TYPE(float43 ,float ,ftostr43sign ,1000 , + 0.0001f); // -1.234, _1.234, +1.234 +DEFINE_MENU_EDIT_ITEM_TYPE(float4 ,float ,ftostr4sign , 1 ); // 1234 right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(float5 ,float ,ftostr5rj , 1 ); // 12345 right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(float5_25 ,float ,ftostr5rj , 0.04f ); // 12345 right-justified (25 increment) +DEFINE_MENU_EDIT_ITEM_TYPE(float61 ,float ,ftostr61rj , 10 , + 0.01f ); // 12345.6 right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(float72 ,float ,ftostr72rj , 100 , + 0.001f ); // 12345.67 right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(float31sign ,float ,ftostr31sign , 10 , + 0.01f ); // +12.3 +DEFINE_MENU_EDIT_ITEM_TYPE(float41sign ,float ,ftostr41sign , 10 , + 0.01f ); // +123.4 +DEFINE_MENU_EDIT_ITEM_TYPE(float51sign ,float ,ftostr51sign , 10 , + 0.01f ); // +1234.5 +DEFINE_MENU_EDIT_ITEM_TYPE(float52sign ,float ,ftostr52sign , 100 , + 0.001f ); // +123.45 +DEFINE_MENU_EDIT_ITEM_TYPE(long5 ,uint32_t ,ftostr5rj , 0.01f ); // 12345 right-justified +DEFINE_MENU_EDIT_ITEM_TYPE(long5_25 ,uint32_t ,ftostr5rj , 0.04f ); // 12345 right-justified (25 increment) #if HAS_BED_PROBE #if Z_PROBE_OFFSET_RANGE_MIN >= -9 && Z_PROBE_OFFSET_RANGE_MAX <= 9 diff --git a/Marlin/src/libs/numtostr.h b/Marlin/src/libs/numtostr.h index 31e8db0048..f8af09ebee 100644 --- a/Marlin/src/libs/numtostr.h +++ b/Marlin/src/libs/numtostr.h @@ -120,7 +120,7 @@ const char* ftostr61rj(const_float_t x); const char* ftostr72rj(const_float_t x); // Convert float to rj string with 123 or -12 format -FORCE_INLINE const char* ftostr3(const_float_t x) { return i16tostr3rj(int16_t(x + (x < 0 ? -0.5f : 0.5f))); } +FORCE_INLINE const char* ftostr3rj(const_float_t x) { return i16tostr3rj(int16_t(x + (x < 0 ? -0.5f : 0.5f))); } #if ENABLED(LCD_DECIMAL_SMALL_XY) // Convert float to rj string with 1234, _123, 12.3, _1.2, -123, _-12, or -1.2 format From ed66f498eb713f59f14d000f8bfa550b34ce8528 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 16 May 2023 02:38:24 -0500 Subject: [PATCH 446/659] =?UTF-8?q?=F0=9F=9A=B8=20Fixed-Time=20Motion=20EE?= =?UTF-8?q?PROM=20and=20Menu=20(#25835)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 2 + Marlin/src/core/language.h | 1 + Marlin/src/gcode/feature/ft_motion/M493.cpp | 290 +++++++++++------- Marlin/src/gcode/gcode.h | 1 + .../ftdi_eve_touch_ui/language/language_en.h | 1 - Marlin/src/lcd/language/language_en.h | 17 + Marlin/src/lcd/menu/menu_motion.cpp | 136 ++++++++ Marlin/src/module/ft_motion.cpp | 68 ++-- Marlin/src/module/ft_motion.h | 68 +++- Marlin/src/module/ft_types.h | 4 +- Marlin/src/module/planner.cpp | 8 +- Marlin/src/module/settings.cpp | 47 ++- Marlin/src/module/stepper.cpp | 2 +- buildroot/tests/STM32F103RC_btt | 2 +- 14 files changed, 474 insertions(+), 173 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 587a368301..b68557cb28 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1148,6 +1148,8 @@ // This value may be configured to adjust duration to consume the command buffer. // Try increasing this value if stepper motion is not smooth. #define FTM_STEPPERCMD_BUFF_SIZE 1000 // Size of the stepper command buffers. + + //#define FT_MOTION_MENU // Provide a MarlinUI menu to set M493 parameters. #endif /** diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h index c951012b6d..388e7cd820 100644 --- a/Marlin/src/core/language.h +++ b/Marlin/src/core/language.h @@ -277,6 +277,7 @@ // Settings Report Strings #define STR_Z_AUTO_ALIGN "Z Auto-Align" #define STR_BACKLASH_COMPENSATION "Backlash compensation" +#define STR_FT_MOTION "Fixed-Time Motion" #define STR_S_SEG_PER_SEC "S" #define STR_DELTA_SETTINGS "Delta (L R H S XYZ ABC)" #define STR_SCARA_SETTINGS "SCARA" diff --git a/Marlin/src/gcode/feature/ft_motion/M493.cpp b/Marlin/src/gcode/feature/ft_motion/M493.cpp index f7b8f1e752..83c6a9a5da 100644 --- a/Marlin/src/gcode/feature/ft_motion/M493.cpp +++ b/Marlin/src/gcode/feature/ft_motion/M493.cpp @@ -28,26 +28,109 @@ #include "../../../module/ft_motion.h" void say_shaping() { - SERIAL_ECHO_TERNARY(fxdTiCtrl.cfg_mode, "Fixed time controller ", "en", "dis", "abled"); - if (fxdTiCtrl.cfg_mode == ftMotionMode_DISABLED || fxdTiCtrl.cfg_mode == ftMotionMode_ENABLED) { - SERIAL_ECHOLNPGM("."); - return; - } + // FT Enabled + SERIAL_ECHO_TERNARY(fxdTiCtrl.cfg.mode, "Fixed-Time Motion ", "en", "dis", "abled"); + + // FT Shaping #if HAS_X_AXIS - SERIAL_ECHOPGM(" with "); - switch (fxdTiCtrl.cfg_mode) { - default: break; - //case ftMotionMode_ULENDO_FBS: SERIAL_ECHOLNPGM("Ulendo FBS."); return; - case ftMotionMode_ZV: SERIAL_ECHOLNPGM("ZV"); break; - case ftMotionMode_ZVD: SERIAL_ECHOLNPGM("ZVD"); break; - case ftMotionMode_EI: SERIAL_ECHOLNPGM("EI"); break; - case ftMotionMode_2HEI: SERIAL_ECHOLNPGM("2 Hump EI"); break; - case ftMotionMode_3HEI: SERIAL_ECHOLNPGM("3 Hump EI"); break; - case ftMotionMode_MZV: SERIAL_ECHOLNPGM("MZV"); break; - //case ftMotionMode_DISCTF: SERIAL_ECHOLNPGM("discrete transfer functions"); break; + if (fxdTiCtrl.cfg.mode > ftMotionMode_ENABLED) { + SERIAL_ECHOPGM(" with "); + switch (fxdTiCtrl.cfg.mode) { + default: break; + case ftMotionMode_ZV: SERIAL_ECHOPGM("ZV"); break; + case ftMotionMode_ZVD: SERIAL_ECHOPGM("ZVD"); break; + case ftMotionMode_EI: SERIAL_ECHOPGM("EI"); break; + case ftMotionMode_2HEI: SERIAL_ECHOPGM("2 Hump EI"); break; + case ftMotionMode_3HEI: SERIAL_ECHOPGM("3 Hump EI"); break; + case ftMotionMode_MZV: SERIAL_ECHOPGM("MZV"); break; + //case ftMotionMode_DISCTF: SERIAL_ECHOPGM("discrete transfer functions"); break; + //case ftMotionMode_ULENDO_FBS: SERIAL_ECHOPGM("Ulendo FBS."); return; + } + SERIAL_ECHOPGM(" shaping"); } - SERIAL_ECHOLNPGM(" shaping."); #endif + SERIAL_ECHOLNPGM("."); + + const bool z_based = TERN0(HAS_DYNAMIC_FREQ_MM, fxdTiCtrl.cfg.dynFreqMode == dynFreqMode_Z_BASED), + g_based = TERN0(HAS_DYNAMIC_FREQ_G, fxdTiCtrl.cfg.dynFreqMode == dynFreqMode_MASS_BASED), + dynamic = z_based || g_based; + + // FT Dynamic Frequency Mode + if (fxdTiCtrl.cfg.modeHasShaper()) { + #if HAS_DYNAMIC_FREQ + SERIAL_ECHOPGM("Dynamic Frequency Mode "); + switch (fxdTiCtrl.cfg.dynFreqMode) { + default: + case dynFreqMode_DISABLED: SERIAL_ECHOPGM("disabled"); break; + #if HAS_DYNAMIC_FREQ_MM + case dynFreqMode_Z_BASED: SERIAL_ECHOPGM("Z-based"); break; + #endif + #if HAS_DYNAMIC_FREQ_G + case dynFreqMode_MASS_BASED: SERIAL_ECHOPGM("Mass-based"); break; + #endif + } + SERIAL_ECHOLNPGM("."); + #endif + + #if HAS_X_AXIS + SERIAL_ECHO_TERNARY(dynamic, "X/A ", "base dynamic", "static", " compensator frequency: "); + SERIAL_ECHO_F(fxdTiCtrl.cfg.baseFreq[X_AXIS], 2); + SERIAL_ECHOPGM("Hz"); + #if HAS_DYNAMIC_FREQ + if (dynamic) { + SERIAL_ECHOPGM(" scaling: "); + SERIAL_ECHO_F(fxdTiCtrl.cfg.dynFreqK[X_AXIS], 8); + serial_ternary(F("Hz/"), z_based, F("mm"), F("g")); + } + #endif + SERIAL_EOL(); + #endif + + #if HAS_Y_AXIS + SERIAL_ECHO_TERNARY(dynamic, "Y/B ", "base dynamic", "static", " compensator frequency: "); + SERIAL_ECHO_F(fxdTiCtrl.cfg.baseFreq[Y_AXIS], 2); + SERIAL_ECHOLNPGM(" Hz"); + #if HAS_DYNAMIC_FREQ + if (dynamic) { + SERIAL_ECHOPGM(" scaling: "); + SERIAL_ECHO_F(fxdTiCtrl.cfg.dynFreqK[Y_AXIS], 8); + serial_ternary(F("Hz/"), z_based, F("mm"), F("g")); + } + #endif + SERIAL_EOL(); + #endif + } + + #if HAS_EXTRUDERS + SERIAL_ECHO_TERNARY(fxdTiCtrl.cfg.linearAdvEna, "Linear Advance ", "en", "dis", "abled"); + SERIAL_ECHOLNPGM(". Gain: "); SERIAL_ECHO_F(fxdTiCtrl.cfg.linearAdvK, 5); + #endif + +} + +void GcodeSuite::M493_report(const bool forReplay/*=true*/) { + report_heading_etc(forReplay, F(STR_FT_MOTION)); + const ft_config_t &c = fxdTiCtrl.cfg; + SERIAL_ECHOPGM(" M493 S", c.mode); + #if HAS_X_AXIS + SERIAL_ECHOPGM(" A", c.baseFreq[X_AXIS]); + #if HAS_Y_AXIS + SERIAL_ECHOPGM(" B", c.baseFreq[Y_AXIS]); + #endif + #endif + #if HAS_DYNAMIC_FREQ + SERIAL_ECHOPGM(" D", c.dynFreqMode); + #if HAS_X_AXIS + SERIAL_ECHOPGM(" F", c.dynFreqK[X_AXIS]); + #if HAS_Y_AXIS + SERIAL_ECHOPGM(" H", c.dynFreqK[Y_AXIS]); + #endif + #endif + #endif + #if HAS_EXTRUDERS + SERIAL_ECHOPGM(" P", c.linearAdvEna, " K", c.linearAdvK); + #endif + SERIAL_EOL(); } /** @@ -79,29 +162,36 @@ void say_shaping() { * H Set frequency scaling for the Y axis */ void GcodeSuite::M493() { + struct { bool update_n:1, update_a:1, reset_ft:1, report_h:1; } flag = { false }; + + if (!parser.seen_any()) flag.report_h = true; + // Parse 'S' mode parameter. if (parser.seenval('S')) { - const ftMotionMode_t val = (ftMotionMode_t)parser.value_byte(); - switch (val) { - case ftMotionMode_DISABLED: - case ftMotionMode_ENABLED: + const ftMotionMode_t oldmm = fxdTiCtrl.cfg.mode, + newmm = (ftMotionMode_t)parser.value_byte(); + switch (newmm) { #if HAS_X_AXIS + case ftMotionMode_ZV: case ftMotionMode_ZVD: case ftMotionMode_2HEI: case ftMotionMode_3HEI: case ftMotionMode_MZV: //case ftMotionMode_ULENDO_FBS: //case ftMotionMode_DISCTF: - fxdTiCtrl.cfg_mode = val; - say_shaping(); - break; #endif + case ftMotionMode_DISABLED: + case ftMotionMode_ENABLED: + fxdTiCtrl.cfg.mode = newmm; + flag.report_h = true; + break; default: SERIAL_ECHOLNPGM("?Invalid control mode [M] value."); return; } - switch (val) { + if (fxdTiCtrl.cfg.mode != oldmm) switch (newmm) { + default: break; #if HAS_X_AXIS //case ftMotionMode_ULENDO_FBS: //case ftMotionMode_DISCTF: @@ -112,15 +202,11 @@ void GcodeSuite::M493() { case ftMotionMode_2HEI: case ftMotionMode_3HEI: case ftMotionMode_MZV: - fxdTiCtrl.updateShapingN(fxdTiCtrl.cfg_baseFreq[0] OPTARG(HAS_Y_AXIS, fxdTiCtrl.cfg_baseFreq[1])); - fxdTiCtrl.updateShapingA(); - fxdTiCtrl.reset(); - break; + flag.update_n = flag.update_a = true; #endif case ftMotionMode_ENABLED: - fxdTiCtrl.reset(); + flag.reset_ft = true; break; - default: break; } } @@ -129,47 +215,44 @@ void GcodeSuite::M493() { // Pressure control (linear advance) parameter. if (parser.seen('P')) { const bool val = parser.value_bool(); - fxdTiCtrl.cfg_linearAdvEna = val; - SERIAL_ECHO_TERNARY(val, "Pressure control: Linear Advance ", "en", "dis", "abled.\n"); + fxdTiCtrl.cfg.linearAdvEna = val; + SERIAL_ECHO_TERNARY(val, "Linear Advance ", "en", "dis", "abled.\n"); } // Pressure control (linear advance) gain parameter. if (parser.seenval('K')) { const float val = parser.value_float(); if (val >= 0.0f) { - fxdTiCtrl.cfg_linearAdvK = val; - SERIAL_ECHOPGM("Pressure control: Linear Advance gain set to: "); - SERIAL_ECHO_F(val, 5); - SERIAL_ECHOLNPGM("."); - } - else { // Value out of range. - SERIAL_ECHOLNPGM("Pressure control: Linear Advance gain out of range."); + fxdTiCtrl.cfg.linearAdvK = val; + flag.report_h = true; } + else // Value out of range. + SERIAL_ECHOLNPGM("Linear Advance gain out of range."); } #endif // HAS_EXTRUDERS - #if HAS_Z_AXIS || HAS_EXTRUDERS + #if HAS_DYNAMIC_FREQ // Dynamic frequency mode parameter. if (parser.seenval('D')) { - if (WITHIN(fxdTiCtrl.cfg_mode, 10U, 19U)) { + if (fxdTiCtrl.cfg.modeHasShaper()) { const dynFreqMode_t val = dynFreqMode_t(parser.value_byte()); switch (val) { case dynFreqMode_DISABLED: - fxdTiCtrl.cfg_dynFreqMode = val; - SERIAL_ECHOLNPGM("Dynamic frequency mode disabled."); + fxdTiCtrl.cfg.dynFreqMode = val; + flag.report_h = true; break; - #if HAS_Z_AXIS + #if HAS_DYNAMIC_FREQ_MM case dynFreqMode_Z_BASED: - fxdTiCtrl.cfg_dynFreqMode = val; - SERIAL_ECHOLNPGM("Z-based Dynamic Frequency Mode."); + fxdTiCtrl.cfg.dynFreqMode = val; + flag.report_h = true; break; #endif - #if HAS_EXTRUDERS + #if HAS_DYNAMIC_FREQ_G case dynFreqMode_MASS_BASED: - fxdTiCtrl.cfg_dynFreqMode = val; - SERIAL_ECHOLNPGM("Mass-based Dynamic Frequency Mode."); + fxdTiCtrl.cfg.dynFreqMode = val; + flag.report_h = true; break; #endif default: @@ -178,58 +261,46 @@ void GcodeSuite::M493() { } } else { - SERIAL_ECHOLNPGM("Incompatible shaper for [D] Dynamic Frequency mode."); + SERIAL_ECHOLNPGM("?Wrong shaper for [D] Dynamic Frequency mode."); } } - #endif // HAS_Z_AXIS || HAS_EXTRUDERS + const bool modeUsesDynFreq = ( + TERN0(HAS_DYNAMIC_FREQ_MM, fxdTiCtrl.cfg.dynFreqMode == dynFreqMode_Z_BASED) + || TERN0(HAS_DYNAMIC_FREQ_G, fxdTiCtrl.cfg.dynFreqMode == dynFreqMode_MASS_BASED) + ); + + #endif // HAS_DYNAMIC_FREQ #if HAS_X_AXIS // Parse frequency parameter (X axis). if (parser.seenval('A')) { - if (WITHIN(fxdTiCtrl.cfg_mode, 10U, 19U)) { + if (fxdTiCtrl.cfg.modeHasShaper()) { const float val = parser.value_float(); - const bool frequencyInRange = WITHIN(val, FTM_MIN_SHAPE_FREQ, (FTM_FS) / 2); // TODO: Frequency minimum is dependent on the shaper used; the above check isn't always correct. - if (frequencyInRange) { - fxdTiCtrl.cfg_baseFreq[0] = val; - fxdTiCtrl.updateShapingN(fxdTiCtrl.cfg_baseFreq[0] OPTARG(HAS_Y_AXIS, fxdTiCtrl.cfg_baseFreq[1])); - fxdTiCtrl.reset(); - if (fxdTiCtrl.cfg_dynFreqMode) { SERIAL_ECHOPGM("Compensator base dynamic frequency (X/A axis) set to:"); } - else { SERIAL_ECHOPGM("Compensator static frequency (X/A axis) set to: "); } - SERIAL_ECHO_F(fxdTiCtrl.cfg_baseFreq[0], 2); - SERIAL_ECHOLNPGM("."); - } - else { // Frequency out of range. - SERIAL_ECHOLNPGM("Invalid [A] frequency value."); + if (WITHIN(val, FTM_MIN_SHAPE_FREQ, (FTM_FS) / 2)) { + fxdTiCtrl.cfg.baseFreq[X_AXIS] = val; + flag.update_n = flag.reset_ft = flag.report_h = true; } + else // Frequency out of range. + SERIAL_ECHOLNPGM("Invalid [", AS_CHAR('A'), "] frequency value."); } - else { // Mode doesn't use frequency. - SERIAL_ECHOLNPGM("Incompatible mode for [A] frequency."); - } + else // Mode doesn't use frequency. + SERIAL_ECHOLNPGM("Wrong mode for [", AS_CHAR('A'), "] frequency."); } - #if HAS_Z_AXIS || HAS_EXTRUDERS + #if HAS_DYNAMIC_FREQ // Parse frequency scaling parameter (X axis). if (parser.seenval('F')) { - const bool modeUsesDynFreq = ( - TERN0(HAS_Z_AXIS, fxdTiCtrl.cfg_dynFreqMode == dynFreqMode_Z_BASED) - || TERN0(HAS_EXTRUDERS, fxdTiCtrl.cfg_dynFreqMode == dynFreqMode_MASS_BASED) - ); - if (modeUsesDynFreq) { - const float val = parser.value_float(); - fxdTiCtrl.cfg_dynFreqK[0] = val; - SERIAL_ECHOPGM("Frequency scaling (X/A axis) set to: "); - SERIAL_ECHO_F(fxdTiCtrl.cfg_dynFreqK[0], 8); - SERIAL_ECHOLNPGM("."); - } - else { - SERIAL_ECHOLNPGM("Incompatible mode for [F] frequency scaling."); + fxdTiCtrl.cfg.dynFreqK[X_AXIS] = parser.value_float(); + flag.report_h = true; } + else + SERIAL_ECHOLNPGM("Wrong mode for [", AS_CHAR('F'), "] frequency scaling."); } - #endif // HAS_Z_AXIS || HAS_EXTRUDERS + #endif #endif // HAS_X_AXIS @@ -237,49 +308,40 @@ void GcodeSuite::M493() { // Parse frequency parameter (Y axis). if (parser.seenval('B')) { - if (WITHIN(fxdTiCtrl.cfg_mode, 10U, 19U)) { + if (fxdTiCtrl.cfg.modeHasShaper()) { const float val = parser.value_float(); - const bool frequencyInRange = WITHIN(val, FTM_MIN_SHAPE_FREQ, (FTM_FS) / 2); - if (frequencyInRange) { - fxdTiCtrl.cfg_baseFreq[1] = val; - fxdTiCtrl.updateShapingN(fxdTiCtrl.cfg_baseFreq[0] OPTARG(HAS_Y_AXIS, fxdTiCtrl.cfg_baseFreq[1])); - fxdTiCtrl.reset(); - if (fxdTiCtrl.cfg_dynFreqMode) { SERIAL_ECHOPGM("Compensator base dynamic frequency (Y/B axis) set to:"); } - else { SERIAL_ECHOPGM("Compensator static frequency (Y/B axis) set to: "); } - SERIAL_ECHO_F(fxdTiCtrl.cfg_baseFreq[1], 2); - SERIAL_ECHOLNPGM("."); - } - else { // Frequency out of range. - SERIAL_ECHOLNPGM("Invalid frequency [B] value."); + if (WITHIN(val, FTM_MIN_SHAPE_FREQ, (FTM_FS) / 2)) { + fxdTiCtrl.cfg.baseFreq[Y_AXIS] = val; + flag.update_n = flag.reset_ft = flag.report_h = true; } + else // Frequency out of range. + SERIAL_ECHOLNPGM("Invalid frequency [", AS_CHAR('B'), "] value."); } - else { // Mode doesn't use frequency. - SERIAL_ECHOLNPGM("Incompatible mode for [B] frequency."); - } + else // Mode doesn't use frequency. + SERIAL_ECHOLNPGM("Wrong mode for [", AS_CHAR('B'), "] frequency."); } - #if HAS_Z_AXIS || HAS_EXTRUDERS + #if HAS_DYNAMIC_FREQ // Parse frequency scaling parameter (Y axis). if (parser.seenval('H')) { - const bool modeUsesDynFreq = ( - TERN0(HAS_Z_AXIS, fxdTiCtrl.cfg_dynFreqMode == dynFreqMode_Z_BASED) - || TERN0(HAS_EXTRUDERS, fxdTiCtrl.cfg_dynFreqMode == dynFreqMode_MASS_BASED) - ); - if (modeUsesDynFreq) { - const float val = parser.value_float(); - fxdTiCtrl.cfg_dynFreqK[1] = val; - SERIAL_ECHOPGM("Frequency scaling (Y/B axis) set to: "); - SERIAL_ECHO_F(val, 8); - SERIAL_ECHOLNPGM("."); - } - else { - SERIAL_ECHOLNPGM("Incompatible mode for [H] frequency scaling."); + fxdTiCtrl.cfg.dynFreqK[Y_AXIS] = parser.value_float(); + flag.report_h = true; } + else + SERIAL_ECHOLNPGM("Wrong mode for [", AS_CHAR('H'), "] frequency scaling."); } - #endif // HAS_Z_AXIS || HAS_EXTRUDERS + #endif #endif // HAS_Y_AXIS + + #if HAS_X_AXIS + if (flag.update_n) fxdTiCtrl.refreshShapingN(); + if (flag.update_a) fxdTiCtrl.updateShapingA(); + #endif + if (flag.reset_ft) fxdTiCtrl.reset(); + if (flag.report_h) say_shaping(); + } #endif // FT_MOTION diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index eb465ea7c3..9283a92e39 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -1047,6 +1047,7 @@ private: #if ENABLED(FT_MOTION) static void M493(); + static void M493_report(const bool forReplay=true); #endif static void M500(); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h index 05e625842a..9c069d9d24 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h @@ -91,7 +91,6 @@ namespace Language_en { LSTR MSG_IDLE = u8"idle"; LSTR MSG_SET_MAXIMUM = u8"Set Maximum"; LSTR MSG_PRINT_SPEED = u8"Print Speed"; - LSTR MSG_LINEAR_ADVANCE = u8"Linear Advance"; LSTR MSG_LINEAR_ADVANCE_K = u8"K"; LSTR MSG_LINEAR_ADVANCE_K1 = u8"K E1"; LSTR MSG_LINEAR_ADVANCE_K2 = u8"K E2"; diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 0cfd2f8bea..bc97407fc2 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -446,6 +446,7 @@ namespace Language_en { LSTR MSG_DRAW_MIN_Y = _UxGT("Draw Min Y"); LSTR MSG_DRAW_MAX_Y = _UxGT("Draw Max Y"); LSTR MSG_MAX_BELT_LEN = _UxGT("Max Belt Len"); + LSTR MSG_LINEAR_ADVANCE = _UxGT("Linear Advance"); LSTR MSG_ADVANCE_K = _UxGT("Advance K"); LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *"); LSTR MSG_CONTRAST = _UxGT("LCD Contrast"); @@ -836,6 +837,22 @@ namespace Language_en { LSTR MSG_BACKLASH_CORRECTION = _UxGT("Correction"); LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Smoothing"); + LSTR MSG_FIXED_TIME_MOTION = _UxGT("Fixed-Time Motion"); + LSTR MSG_FTM_MODE = _UxGT("Motion Mode:"); + LSTR MSG_FTM_ZV = _UxGT("ZV"); + LSTR MSG_FTM_ZVD = _UxGT("ZVD"); + LSTR MSG_FTM_EI = _UxGT("EI"); + LSTR MSG_FTM_2HEI = _UxGT("2HEI"); + LSTR MSG_FTM_3HEI = _UxGT("3HEI"); + LSTR MSG_FTM_MZV = _UxGT("MZV"); + //LSTR MSG_FTM_ULENDO_FBS = _UxGT("Ulendo FBS"); + //LSTR MSG_FTM_DISCTF = _UxGT("DISCTF"); + LSTR MSG_FTM_DYN_MODE = _UxGT("DF Mode:"); + LSTR MSG_FTM_Z_BASED = _UxGT("Z-based"); + LSTR MSG_FTM_MASS_BASED = _UxGT("Mass-based"); + LSTR MSG_FTM_BASE_FREQ_N = _UxGT("@ Base Freq."); + LSTR MSG_FTM_DFREQ_K_N = _UxGT("@ Dyn. Freq."); + LSTR MSG_LEVEL_X_AXIS = _UxGT("Level X Axis"); LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibrate"); #if ENABLED(TOUCH_UI_FTDI_EVE) diff --git a/Marlin/src/lcd/menu/menu_motion.cpp b/Marlin/src/lcd/menu/menu_motion.cpp index 8caa1e5264..bab03db606 100644 --- a/Marlin/src/lcd/menu/menu_motion.cpp +++ b/Marlin/src/lcd/menu/menu_motion.cpp @@ -313,7 +313,136 @@ void menu_move() { void goto_tramming_wizard(); #endif +#if ENABLED(FT_MOTION_MENU) + + #include "../../module/ft_motion.h" + #include "../../gcode/gcode.h" + + void _M493_S(const ftMotionMode_t s) { + char cmd[10]; + sprintf_P(cmd, PSTR("M493S%i"), int(s)); + gcode.process_subcommands_now(cmd); + ui.go_back(); + } + + inline void menu_ftm_mode() { + const ftMotionMode_t mode = fxdTiCtrl.cfg.mode; + + START_MENU(); + BACK_ITEM(MSG_FIXED_TIME_MOTION); + + if (mode != ftMotionMode_DISABLED) ACTION_ITEM(MSG_LCD_OFF, []{ _M493_S(ftMotionMode_DISABLED); }); + if (mode != ftMotionMode_ENABLED) ACTION_ITEM(MSG_LCD_ON, []{ _M493_S(ftMotionMode_ENABLED); }); + #if HAS_X_AXIS + if (mode != ftMotionMode_ZV) ACTION_ITEM(MSG_FTM_ZV, []{ _M493_S(ftMotionMode_ZV); }); + if (mode != ftMotionMode_ZVD) ACTION_ITEM(MSG_FTM_ZVD, []{ _M493_S(ftMotionMode_ZVD); }); + if (mode != ftMotionMode_EI) ACTION_ITEM(MSG_FTM_EI, []{ _M493_S(ftMotionMode_EI); }); + if (mode != ftMotionMode_2HEI) ACTION_ITEM(MSG_FTM_2HEI, []{ _M493_S(ftMotionMode_2HEI); }); + if (mode != ftMotionMode_3HEI) ACTION_ITEM(MSG_FTM_3HEI, []{ _M493_S(ftMotionMode_3HEI); }); + if (mode != ftMotionMode_MZV) ACTION_ITEM(MSG_FTM_MZV, []{ _M493_S(ftMotionMode_MZV); }); + //if (mode != ftMotionMode_ULENDO_FBS) ACTION_ITEM(MSG_FTM_ULENDO_FBS, []{ _M493_S(ftMotionMode_ULENDO_FBS); }); + //if (mode != ftMotionMode_DISCTF) ACTION_ITEM(MSG_FTM_DISCTF, []{ _M493_S(ftMotionMode_DISCTF); }); + #endif + + END_MENU(); + } + + #if HAS_DYNAMIC_FREQ + + void _M493_D(const dynFreqMode_t d) { + char cmd[10]; + sprintf_P(cmd, PSTR("M493D%i"), int(d)); + gcode.process_subcommands_now(cmd); + ui.go_back(); + } + + inline void menu_ftm_dyn_mode() { + const dynFreqMode_t dmode = fxdTiCtrl.cfg.dynFreqMode; + + START_MENU(); + BACK_ITEM(MSG_FIXED_TIME_MOTION); + + if (dmode != dynFreqMode_DISABLED) ACTION_ITEM(MSG_LCD_OFF, []{ _M493_D(dynFreqMode_DISABLED); }); + #if HAS_DYNAMIC_FREQ_MM + if (dmode != dynFreqMode_Z_BASED) ACTION_ITEM(MSG_FTM_Z_BASED, []{ _M493_D(dynFreqMode_Z_BASED); }); + #endif + #if HAS_DYNAMIC_FREQ_G + if (dmode != dynFreqMode_MASS_BASED) ACTION_ITEM(MSG_FTM_MASS_BASED, []{ _M493_D(dynFreqMode_MASS_BASED); }); + #endif + + END_MENU(); + } + + #endif // HAS_DYNAMIC_FREQ + + void menu_ft_motion() { + ft_config_t &c = fxdTiCtrl.cfg; + + FSTR_P ftmode; + switch (c.mode) { + default: + case ftMotionMode_DISABLED: ftmode = GET_TEXT_F(MSG_LCD_OFF); break; + case ftMotionMode_ENABLED: ftmode = GET_TEXT_F(MSG_LCD_ON); break; + case ftMotionMode_ZV: ftmode = GET_TEXT_F(MSG_FTM_ZV); break; + case ftMotionMode_ZVD: ftmode = GET_TEXT_F(MSG_FTM_ZVD); break; + case ftMotionMode_EI: ftmode = GET_TEXT_F(MSG_FTM_EI); break; + case ftMotionMode_2HEI: ftmode = GET_TEXT_F(MSG_FTM_2HEI); break; + case ftMotionMode_3HEI: ftmode = GET_TEXT_F(MSG_FTM_3HEI); break; + case ftMotionMode_MZV: ftmode = GET_TEXT_F(MSG_FTM_MZV); break; + //case ftMotionMode_ULENDO_FBS: ftmode = GET_TEXT_F(MSG_FTM_ULENDO_FBS); break; + //case ftMotionMode_DISCTF: ftmode = GET_TEXT_F(MSG_FTM_DISCTF); break; + } + + #if HAS_DYNAMIC_FREQ + FSTR_P dmode; + switch (c.dynFreqMode) { + default: + case dynFreqMode_DISABLED: dmode = GET_TEXT_F(MSG_LCD_OFF); break; + case dynFreqMode_Z_BASED: dmode = GET_TEXT_F(MSG_FTM_Z_BASED); break; + case dynFreqMode_MASS_BASED: dmode = GET_TEXT_F(MSG_FTM_MASS_BASED); break; + } + #endif + + START_MENU(); + BACK_ITEM(MSG_ADVANCED_SETTINGS); + + SUBMENU(MSG_FTM_MODE, menu_ftm_mode); + MENU_ITEM_ADDON_START_RJ(5); lcd_put_u8str(ftmode); MENU_ITEM_ADDON_END(); + + #if HAS_X_AXIS + EDIT_ITEM_FAST_N(float42_52, X_AXIS, MSG_FTM_BASE_FREQ_N, &c.baseFreq[X_AXIS], FTM_MIN_SHAPE_FREQ, (FTM_FS) / 2, fxdTiCtrl.refreshShapingN); + #endif + #if HAS_Y_AXIS + EDIT_ITEM_FAST_N(float42_52, Y_AXIS, MSG_FTM_BASE_FREQ_N, &c.baseFreq[Y_AXIS], FTM_MIN_SHAPE_FREQ, (FTM_FS) / 2, fxdTiCtrl.refreshShapingN); + #endif + + #if HAS_DYNAMIC_FREQ + if (c.modeHasShaper()) { + SUBMENU(MSG_FTM_DYN_MODE, menu_ftm_dyn_mode); + MENU_ITEM_ADDON_START_RJ(11); lcd_put_u8str(dmode); MENU_ITEM_ADDON_END(); + #if HAS_X_AXIS + EDIT_ITEM_FAST_N(float42_52, X_AXIS, MSG_FTM_DFREQ_K_N, &c.dynFreqK[X_AXIS], 0.0f, 20.0f); + #endif + #if HAS_Y_AXIS + EDIT_ITEM_FAST_N(float42_52, Y_AXIS, MSG_FTM_DFREQ_K_N, &c.dynFreqK[Y_AXIS], 0.0f, 20.0f); + #endif + } + #endif + #if HAS_EXTRUDERS + EDIT_ITEM(bool, MSG_LINEAR_ADVANCE, &c.linearAdvEna); + EDIT_ITEM(float42_52, MSG_ADVANCE_K, &c.linearAdvK, 0, 10); + #endif + + END_MENU(); + } + +#endif // FT_MOTION_MENU + void menu_motion() { + #if ENABLED(FT_MOTION_MENU) + const bool is_busy = printer_busy(); + #endif + START_MENU(); // @@ -339,6 +468,13 @@ void menu_motion() { #endif #endif + // + // M493 - Fixed-Time Motion + // + #if ENABLED(FT_MOTION_MENU) + if (!is_busy) SUBMENU(MSG_FIXED_TIME_MOTION, menu_ft_motion); + #endif + // // Pen up/down menu // diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp index 407296f030..d6c834cbc4 100644 --- a/Marlin/src/module/ft_motion.cpp +++ b/Marlin/src/module/ft_motion.cpp @@ -29,32 +29,28 @@ FxdTiCtrl fxdTiCtrl; +#if !HAS_X_AXIS + static_assert(FTM_DEFAULT_MODE == ftMotionMode_ZV, "ftMotionMode_ZV requires at least one linear axis."); + static_assert(FTM_DEFAULT_MODE == ftMotionMode_ZVD, "ftMotionMode_ZVD requires at least one linear axis."); + static_assert(FTM_DEFAULT_MODE == ftMotionMode_EI, "ftMotionMode_EI requires at least one linear axis."); + static_assert(FTM_DEFAULT_MODE == ftMotionMode_2HEI, "ftMotionMode_2HEI requires at least one linear axis."); + static_assert(FTM_DEFAULT_MODE == ftMotionMode_3HEI, "ftMotionMode_3HEI requires at least one linear axis."); + static_assert(FTM_DEFAULT_MODE == ftMotionMode_MZV, "ftMotionMode_MZV requires at least one linear axis."); +#endif +#if !HAS_DYNAMIC_FREQ_MM + static_assert(FTM_DEFAULT_DYNFREQ_MODE != dynFreqMode_Z_BASED, "dynFreqMode_Z_BASED requires a Z axis."); +#endif +#if !HAS_DYNAMIC_FREQ_G + static_assert(FTM_DEFAULT_DYNFREQ_MODE != dynFreqMode_MASS_BASED, "dynFreqMode_MASS_BASED requires an X axis and an extruder."); +#endif + //-----------------------------------------------------------------// // Variables. //-----------------------------------------------------------------// // Public variables. -ftMotionMode_t FxdTiCtrl::cfg_mode = FTM_DEFAULT_MODE; // Mode / active compensation mode configuration. - -#if HAS_EXTRUDERS - bool FxdTiCtrl::cfg_linearAdvEna = FTM_LINEAR_ADV_DEFAULT_ENA; // Linear advance enable configuration. - float FxdTiCtrl::cfg_linearAdvK = FTM_LINEAR_ADV_DEFAULT_K; // Linear advance gain. -#endif - -dynFreqMode_t FxdTiCtrl::cfg_dynFreqMode = FTM_DEFAULT_DYNFREQ_MODE; // Dynamic frequency mode configuration. -#if !HAS_Z_AXIS - static_assert(FTM_DEFAULT_DYNFREQ_MODE != dynFreqMode_Z_BASED, "dynFreqMode_Z_BASED requires a Z axis."); -#endif -#if !(HAS_X_AXIS && HAS_EXTRUDERS) - static_assert(FTM_DEFAULT_DYNFREQ_MODE != dynFreqMode_MASS_BASED, "dynFreqMode_MASS_BASED requires an X axis and an extruder."); -#endif - -#if HAS_X_AXIS - float FxdTiCtrl::cfg_baseFreq[] = { FTM_SHAPING_DEFAULT_X_FREQ // Base frequency. [Hz] - OPTARG(HAS_Y_AXIS, FTM_SHAPING_DEFAULT_Y_FREQ) }; - float FxdTiCtrl::cfg_dynFreqK[] = { 0.0f OPTARG(HAS_Y_AXIS, 0.0f) }; // Scaling / gain for dynamic frequency. [Hz/mm] or [Hz/g] -#endif +ft_config_t FxdTiCtrl::cfg; ft_command_t FxdTiCtrl::stepperCmdBuff[FTM_STEPPERCMD_BUFF_SIZE] = {0U}; // Buffer of stepper commands. hal_timer_t FxdTiCtrl::stepperCmdBuff_StepRelativeTi[FTM_STEPPERCMD_BUFF_SIZE] = {0U}; // Buffer of the stepper command timing. uint8_t FxdTiCtrl::stepperCmdBuff_ApplyDir[FTM_STEPPERCMD_DIR_SIZE] = {0U}; // Buffer of whether DIR needs to be updated. @@ -209,7 +205,7 @@ void FxdTiCtrl::runoutBlock() { // Controller main, to be invoked from non-isr task. void FxdTiCtrl::loop() { - if (!cfg_mode) return; + if (!cfg.mode) return; // Handle block abort with the following sequence: // 1. Zero out commands in stepper ISR. @@ -291,7 +287,7 @@ void FxdTiCtrl::loop() { const float K = exp( -zeta * M_PI / sqrt(1.0f - sq(zeta)) ), K2 = sq(K); - switch (cfg_mode) { + switch (cfg.mode) { case ftMotionMode_ZV: xy_max_i = 1U; @@ -363,7 +359,7 @@ void FxdTiCtrl::loop() { const float df = sqrt(1.0f - sq(zeta)); - switch (cfg_mode) { + switch (cfg.mode) { case ftMotionMode_ZV: x_Ni[1] = round((0.5f / xf / df) * (FTM_FS)); #if HAS_Y_AXIS @@ -472,8 +468,8 @@ uint32_t FxdTiCtrl::stepperCmdBuffItems() { // Initializes storage variables before startup. void FxdTiCtrl::init() { #if HAS_X_AXIS - updateShapingN(cfg_baseFreq[0] OPTARG(HAS_Y_AXIS, cfg_baseFreq[1])); - updateShapingA(FTM_SHAPING_ZETA, FTM_SHAPING_V_TOL); + refreshShapingN(); + updateShapingA(); #endif reset(); // Precautionary. } @@ -606,9 +602,9 @@ void FxdTiCtrl::makeVector() { #if HAS_EXTRUDERS const float new_raw_z1 = e_startPosn + e_Ratio * dist; - if (cfg_linearAdvEna) { + if (cfg.linearAdvEna) { float dedt_adj = (new_raw_z1 - e_raw_z1) * (FTM_FS); - if (e_Ratio > 0.0f) dedt_adj += accel_k * cfg_linearAdvK; + if (e_Ratio > 0.0f) dedt_adj += accel_k * cfg.linearAdvK; e_advanced_z1 += dedt_adj * (FTM_TS); ed[makeVector_batchIdx] = e_advanced_z1; @@ -622,28 +618,28 @@ void FxdTiCtrl::makeVector() { #endif // Update shaping parameters if needed. - #if HAS_Z_AXIS + #if HAS_DYNAMIC_FREQ_MM static float zd_z1 = 0.0f; #endif - switch (cfg_dynFreqMode) { + switch (cfg.dynFreqMode) { - #if HAS_Z_AXIS + #if HAS_DYNAMIC_FREQ_MM case dynFreqMode_Z_BASED: if (zd[makeVector_batchIdx] != zd_z1) { // Only update if Z changed. - const float xf = cfg_baseFreq[0] + cfg_dynFreqK[0] * zd[makeVector_batchIdx], - yf = cfg_baseFreq[1] + cfg_dynFreqK[1] * zd[makeVector_batchIdx]; + const float xf = cfg.baseFreq[X_AXIS] + cfg.dynFreqK[X_AXIS] * zd[makeVector_batchIdx], + yf = cfg.baseFreq[Y_AXIS] + cfg.dynFreqK[Y_AXIS] * zd[makeVector_batchIdx]; updateShapingN(_MAX(xf, FTM_MIN_SHAPE_FREQ), _MAX(yf, FTM_MIN_SHAPE_FREQ)); zd_z1 = zd[makeVector_batchIdx]; } break; #endif - #if HAS_X_AXIS && HAS_EXTRUDERS + #if HAS_DYNAMIC_FREQ_G case dynFreqMode_MASS_BASED: // Update constantly. The optimization done for Z value makes // less sense for E, as E is expected to constantly change. - updateShapingN( cfg_baseFreq[0] + cfg_dynFreqK[0] * ed[makeVector_batchIdx] - OPTARG(HAS_Y_AXIS, cfg_baseFreq[1] + cfg_dynFreqK[1] * ed[makeVector_batchIdx]) ); + updateShapingN( cfg.baseFreq[X_AXIS] + cfg.dynFreqK[X_AXIS] * ed[makeVector_batchIdx] + OPTARG(HAS_Y_AXIS, cfg.baseFreq[Y_AXIS] + cfg.dynFreqK[Y_AXIS] * ed[makeVector_batchIdx]) ); break; #endif @@ -652,7 +648,7 @@ void FxdTiCtrl::makeVector() { // Apply shaping if in mode. #if HAS_X_AXIS - if (WITHIN(cfg_mode, 10U, 19U)) { + if (WITHIN(cfg.mode, 10U, 19U)) { xd_zi[xy_zi_idx] = xd[makeVector_batchIdx]; xd[makeVector_batchIdx] *= x_Ai[0]; #if HAS_Y_AXIS diff --git a/Marlin/src/module/ft_motion.h b/Marlin/src/module/ft_motion.h index a277f3ac26..232d191cda 100644 --- a/Marlin/src/module/ft_motion.h +++ b/Marlin/src/module/ft_motion.h @@ -28,20 +28,69 @@ #define FTM_STEPPERCMD_DIR_SIZE ((FTM_STEPPERCMD_BUFF_SIZE + 7) / 8) +#if HAS_X_AXIS && (HAS_Z_AXIS || HAS_EXTRUDERS) + #define HAS_DYNAMIC_FREQ 1 + #if HAS_Z_AXIS + #define HAS_DYNAMIC_FREQ_MM 1 + #endif + #if HAS_EXTRUDERS + #define HAS_DYNAMIC_FREQ_G 1 + #endif +#endif + +typedef struct FTConfig { + ftMotionMode_t mode = FTM_DEFAULT_MODE; // Mode / active compensation mode configuration. + + bool modeHasShaper() { return WITHIN(mode, 10U, 19U); } + + #if HAS_X_AXIS + float baseFreq[1 + ENABLED(HAS_Y_AXIS)] = // Base frequency. [Hz] + { FTM_SHAPING_DEFAULT_X_FREQ OPTARG(HAS_Y_AXIS, FTM_SHAPING_DEFAULT_Y_FREQ) }; + #endif + + #if HAS_DYNAMIC_FREQ + dynFreqMode_t dynFreqMode = FTM_DEFAULT_DYNFREQ_MODE; // Dynamic frequency mode configuration. + float dynFreqK[1 + ENABLED(HAS_Y_AXIS)] = { 0.0f }; // Scaling / gain for dynamic frequency. [Hz/mm] or [Hz/g] + #else + static constexpr dynFreqMode_t dynFreqMode = dynFreqMode_DISABLED; + #endif + + #if HAS_EXTRUDERS + bool linearAdvEna = FTM_LINEAR_ADV_DEFAULT_ENA; // Linear advance enable configuration. + float linearAdvK = FTM_LINEAR_ADV_DEFAULT_K; // Linear advance gain. + #endif +} ft_config_t; + class FxdTiCtrl { public: // Public variables - static ftMotionMode_t cfg_mode; // Mode / active compensation mode configuration. - static bool cfg_linearAdvEna; // Linear advance enable configuration. - static float cfg_linearAdvK; // Linear advance gain. - static dynFreqMode_t cfg_dynFreqMode; // Dynamic frequency mode configuration. + static ft_config_t cfg; - #if HAS_X_AXIS - static float cfg_baseFreq[1 + ENABLED(HAS_Y_AXIS)]; // Base frequency. [Hz] - static float cfg_dynFreqK[1 + ENABLED(HAS_Y_AXIS)]; // Scaling / gain for dynamic frequency. [Hz/mm] or [Hz/g] - #endif + static void set_defaults() { + cfg.mode = FTM_DEFAULT_MODE; + + TERN_(HAS_X_AXIS, cfg.baseFreq[X_AXIS] = FTM_SHAPING_DEFAULT_X_FREQ); + TERN_(HAS_Y_AXIS, cfg.baseFreq[Y_AXIS] = FTM_SHAPING_DEFAULT_Y_FREQ); + + #if HAS_DYNAMIC_FREQ + cfg.dynFreqMode = FTM_DEFAULT_DYNFREQ_MODE; + cfg.dynFreqK[X_AXIS] = TERN_(HAS_Y_AXIS, cfg.dynFreqK[Y_AXIS]) = 0.0f; + #endif + + #if HAS_EXTRUDERS + cfg.linearAdvEna = FTM_LINEAR_ADV_DEFAULT_ENA; + cfg.linearAdvK = FTM_LINEAR_ADV_DEFAULT_K; + #endif + + #if HAS_X_AXIS + refreshShapingN(); + updateShapingA(); + #endif + + reset(); + } static ft_command_t stepperCmdBuff[FTM_STEPPERCMD_BUFF_SIZE]; // Buffer of stepper commands. static hal_timer_t stepperCmdBuff_StepRelativeTi[FTM_STEPPERCMD_BUFF_SIZE]; // Buffer of the stepper command timing. @@ -68,6 +117,9 @@ class FxdTiCtrl { // Refresh the indices used by shaping functions. // To be called when frequencies change. static void updateShapingN(const_float_t xf OPTARG(HAS_Y_AXIS, const_float_t yf), const_float_t zeta=FTM_SHAPING_ZETA); + + static void refreshShapingN() { updateShapingN(cfg.baseFreq[X_AXIS] OPTARG(HAS_Y_AXIS, cfg.baseFreq[Y_AXIS])); } + #endif static void reset(); // Resets all states of the fixed time conversion to defaults. diff --git a/Marlin/src/module/ft_types.h b/Marlin/src/module/ft_types.h index 613e177a39..a3239a9246 100644 --- a/Marlin/src/module/ft_types.h +++ b/Marlin/src/module/ft_types.h @@ -26,14 +26,14 @@ typedef enum FXDTICtrlMode : uint8_t { ftMotionMode_DISABLED = 0U, ftMotionMode_ENABLED = 1U, - ftMotionMode_ULENDO_FBS = 2U, + //ftMotionMode_ULENDO_FBS = 2U, ftMotionMode_ZV = 10U, ftMotionMode_ZVD = 11U, ftMotionMode_EI = 12U, ftMotionMode_2HEI = 13U, ftMotionMode_3HEI = 14U, ftMotionMode_MZV = 15U, - ftMotionMode_DISCTF = 20U + //ftMotionMode_DISCTF = 20U } ftMotionMode_t; enum dynFreqMode_t : uint8_t { diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index b0d0b3e353..02a7d05cae 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -1692,7 +1692,7 @@ void Planner::quick_stop() { // Restart the block delay for the first movement - As the queue was // forced to empty, there's no risk the ISR will touch this. - delay_before_delivering = TERN_(FT_MOTION, fxdTiCtrl.cfg_mode ? BLOCK_DELAY_NONE :) BLOCK_DELAY_FOR_1ST_MOVE; + delay_before_delivering = TERN_(FT_MOTION, fxdTiCtrl.cfg.mode ? BLOCK_DELAY_NONE :) BLOCK_DELAY_FOR_1ST_MOVE; TERN_(HAS_WIRED_LCD, clear_block_buffer_runtime()); // Clear the accumulated runtime @@ -1851,7 +1851,7 @@ bool Planner::_buffer_steps(const xyze_long_t &target // As there are no queued movements, the Stepper ISR will not touch this // variable, so there is no risk setting this here (but it MUST be done // before the following line!!) - delay_before_delivering = TERN_(FT_MOTION, fxdTiCtrl.cfg_mode ? BLOCK_DELAY_NONE :) BLOCK_DELAY_FOR_1ST_MOVE; + delay_before_delivering = TERN_(FT_MOTION, fxdTiCtrl.cfg.mode ? BLOCK_DELAY_NONE :) BLOCK_DELAY_FOR_1ST_MOVE; } // Move buffer head @@ -2924,7 +2924,7 @@ void Planner::buffer_sync_block(const BlockFlagBit sync_flag/*=BLOCK_BIT_SYNC_PO // As there are no queued movements, the Stepper ISR will not touch this // variable, so there is no risk setting this here (but it MUST be done // before the following line!!) - delay_before_delivering = TERN_(FT_MOTION, fxdTiCtrl.cfg_mode ? BLOCK_DELAY_NONE :) BLOCK_DELAY_FOR_1ST_MOVE; + delay_before_delivering = TERN_(FT_MOTION, fxdTiCtrl.cfg.mode ? BLOCK_DELAY_NONE :) BLOCK_DELAY_FOR_1ST_MOVE; } block_buffer_head = next_buffer_head; @@ -3217,7 +3217,7 @@ bool Planner::buffer_line(const xyze_pos_t &cart, const_feedRate_t fr_mm_s // As there are no queued movements, the Stepper ISR will not touch this // variable, so there is no risk setting this here (but it MUST be done // before the following line!!) - delay_before_delivering = TERN_(FT_MOTION, fxdTiCtrl.cfg_mode ? BLOCK_DELAY_NONE :) BLOCK_DELAY_FOR_1ST_MOVE; + delay_before_delivering = TERN_(FT_MOTION, fxdTiCtrl.cfg.mode ? BLOCK_DELAY_NONE :) BLOCK_DELAY_FOR_1ST_MOVE; } // Move buffer head diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 53e98a4626..b6e605e853 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -111,6 +111,10 @@ #include "../feature/backlash.h" #endif +#if ENABLED(FT_MOTION) + #include "../module/ft_motion.h" +#endif + #if HAS_FILAMENT_SENSOR #include "../feature/runout.h" #ifndef FIL_RUNOUT_ENABLED_DEFAULT @@ -594,16 +598,23 @@ typedef struct SettingsDataStruct { MPC_t mpc_constants[HOTENDS]; // M306 #endif + // + // Fixed-Time Motion + // + #if ENABLED(FT_MOTION) + ft_config_t fxdTiCtrl_cfg; // M493 + #endif + // // Input Shaping // #if ENABLED(INPUT_SHAPING_X) - float shaping_x_frequency, // M593 X F - shaping_x_zeta; // M593 X D + float shaping_x_frequency, // M593 X F + shaping_x_zeta; // M593 X D #endif #if ENABLED(INPUT_SHAPING_Y) - float shaping_y_frequency, // M593 Y F - shaping_y_zeta; // M593 Y D + float shaping_y_frequency, // M593 Y F + shaping_y_zeta; // M593 Y D #endif } SettingsData; @@ -1648,6 +1659,14 @@ void MarlinSettings::postprocess() { HOTEND_LOOP() EEPROM_WRITE(thermalManager.temp_hotend[e].mpc); #endif + // + // Fixed-Time Motion + // + #if ENABLED(FT_MOTION) + _FIELD_TEST(fxdTiCtrl_cfg); + EEPROM_WRITE(fxdTiCtrl.cfg); + #endif + // // Input Shaping /// @@ -2646,9 +2665,15 @@ void MarlinSettings::postprocess() { // Model predictive control // #if ENABLED(MPCTEMP) - { HOTEND_LOOP() EEPROM_READ(thermalManager.temp_hotend[e].mpc); - } + #endif + + // + // Fixed-Time Motion + // + #if ENABLED(FT_MOTION) + _FIELD_TEST(fxdTiCtrl_cfg); + EEPROM_READ(fxdTiCtrl.cfg); #endif // @@ -3445,6 +3470,11 @@ void MarlinSettings::reset() { } #endif + // + // Fixed-Time Motion + // + TERN_(FT_MOTION, fxdTiCtrl.set_defaults()); + // // Input Shaping // @@ -3706,6 +3736,11 @@ void MarlinSettings::reset() { // TERN_(HAS_STEALTHCHOP, gcode.M569_report(forReplay)); + // + // Fixed-Time Motion + // + TERN_(FT_MOTION, gcode.M493_report(forReplay)); + // // Input Shaping // diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index b23667b820..3188f77da8 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -1497,7 +1497,7 @@ void Stepper::isr() { #if ENABLED(FT_MOTION) // NOTE STEPPER_TIMER_RATE is equal to 2000000, not what VSCode shows - const bool using_fxtictrl = fxdTiCtrl.cfg_mode; + const bool using_fxtictrl = fxdTiCtrl.cfg.mode; if (using_fxtictrl) { if (!nextMainISR) { if (abort_current_block) { diff --git a/buildroot/tests/STM32F103RC_btt b/buildroot/tests/STM32F103RC_btt index 95a18c615f..d0da6305e5 100755 --- a/buildroot/tests/STM32F103RC_btt +++ b/buildroot/tests/STM32F103RC_btt @@ -12,7 +12,7 @@ set -e restore_configs opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V1_0 SERIAL_PORT 1 SERIAL_PORT_2 -1 \ X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2209 Z_DRIVER_TYPE TMC2209 E0_DRIVER_TYPE TMC2209 -opt_enable PINS_DEBUGGING Z_IDLE_HEIGHT FT_MOTION +opt_enable CR10_STOCKDISPLAY PINS_DEBUGGING Z_IDLE_HEIGHT FT_MOTION FT_MOTION_MENU exec_test $1 $2 "BigTreeTech SKR Mini E3 1.0 - TMC2209 HW Serial, FT_MOTION" "$3" # clean up From df078cac92b3abe774a11f12b609fa8d952f8f9e Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Tue, 16 May 2023 09:39:50 +0200 Subject: [PATCH 447/659] =?UTF-8?q?=F0=9F=94=A7=20TMC=20Config=20Inheritan?= =?UTF-8?q?ce=20followup=20(#25783)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index b68557cb28..c66745d8bf 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2862,7 +2862,7 @@ #if AXIS_IS_TMC_CONFIG(X2) #define X2_CURRENT X_CURRENT - #define X2_CURRENT_HOME X2_CURRENT + #define X2_CURRENT_HOME X_CURRENT_HOME #define X2_MICROSTEPS X_MICROSTEPS #define X2_RSENSE X_RSENSE #define X2_CHAIN_POS -1 @@ -2882,7 +2882,7 @@ #if AXIS_IS_TMC_CONFIG(Y2) #define Y2_CURRENT Y_CURRENT - #define Y2_CURRENT_HOME Y2_CURRENT + #define Y2_CURRENT_HOME Y_CURRENT_HOME #define Y2_MICROSTEPS Y_MICROSTEPS #define Y2_RSENSE Y_RSENSE #define Y2_CHAIN_POS -1 @@ -2902,7 +2902,7 @@ #if AXIS_IS_TMC_CONFIG(Z2) #define Z2_CURRENT Z_CURRENT - #define Z2_CURRENT_HOME Z2_CURRENT + #define Z2_CURRENT_HOME Z_CURRENT_HOME #define Z2_MICROSTEPS Z_MICROSTEPS #define Z2_RSENSE Z_RSENSE #define Z2_CHAIN_POS -1 @@ -2912,7 +2912,7 @@ #if AXIS_IS_TMC_CONFIG(Z3) #define Z3_CURRENT Z_CURRENT - #define Z3_CURRENT_HOME Z3_CURRENT + #define Z3_CURRENT_HOME Z_CURRENT_HOME #define Z3_MICROSTEPS Z_MICROSTEPS #define Z3_RSENSE Z_RSENSE #define Z3_CHAIN_POS -1 @@ -2922,7 +2922,7 @@ #if AXIS_IS_TMC_CONFIG(Z4) #define Z4_CURRENT Z_CURRENT - #define Z4_CURRENT_HOME Z4_CURRENT + #define Z4_CURRENT_HOME Z_CURRENT_HOME #define Z4_MICROSTEPS Z_MICROSTEPS #define Z4_RSENSE Z_RSENSE #define Z4_CHAIN_POS -1 From 060ddf5e950b104b00f5d20adf858a9ad00ab72e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 16 May 2023 02:52:52 -0500 Subject: [PATCH 448/659] =?UTF-8?q?=F0=9F=9A=B8=20Support=20Bed=20Leveling?= =?UTF-8?q?=20Mesh=20>=2016x16?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: raTmole --- Marlin/src/core/types.h | 3 +++ Marlin/src/feature/bedlevel/ubl/ubl.h | 4 ++-- Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 8 ++++---- Marlin/src/gcode/bedlevel/G26.cpp | 2 +- Marlin/src/gcode/bedlevel/abl/G29.cpp | 14 +++++++------- Marlin/src/gcode/bedlevel/mbl/G29.cpp | 2 +- Marlin/src/inc/SanityCheck.h | 6 ++++-- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 2 +- Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp | 4 ++-- .../src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp | 2 +- .../generic/bed_mesh_view_screen.h | 2 +- Marlin/src/lcd/menu/menu_bed_leveling.cpp | 2 +- Marlin/src/module/settings.cpp | 4 ++-- 13 files changed, 30 insertions(+), 25 deletions(-) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 4c7ebc884f..9581558604 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -276,6 +276,9 @@ typedef float celsius_float_t; typedef const_float_t const_feedRate_t; typedef const_float_t const_celsius_float_t; +// Type large enough to count leveling grid points +typedef IF 255)), uint16_t, uint8_t>::type grid_count_t; + // Conversion macros #define MMM_TO_MMS(MM_M) feedRate_t(static_cast(MM_M) / 60.0f) #define MMS_TO_MMM(MM_S) (static_cast(MM_S) * 60.0f) diff --git a/Marlin/src/feature/bedlevel/ubl/ubl.h b/Marlin/src/feature/bedlevel/ubl/ubl.h index 05a937c985..785cb5d883 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl.h +++ b/Marlin/src/feature/bedlevel/ubl/ubl.h @@ -48,8 +48,8 @@ struct mesh_index_pair; typedef struct { bool C_seen; int8_t KLS_storage_slot; - uint8_t R_repetition, - V_verbosity, + grid_count_t R_repetition; + uint8_t V_verbosity, P_phase, T_map_type; float B_shim_thickness, diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index 2fbd3bfbeb..ecbf76ec6e 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -351,7 +351,7 @@ void unified_bed_leveling::G29() { // Invalidate one or more nearby mesh points, possibly all. if (parser.seen('I')) { - uint8_t count = parser.has_value() ? parser.value_byte() : 1; + grid_count_t count = parser.has_value() ? parser.value_ushort() : 1; bool invalidate_all = count >= GRID_MAX_POINTS; if (!invalidate_all) { while (count--) { @@ -760,14 +760,14 @@ void unified_bed_leveling::shift_mesh_height() { TERN_(DWIN_LCD_PROUI, DWIN_LevelingStart()); save_ubl_active_state_and_disable(); // No bed level correction so only raw data is obtained - uint8_t count = GRID_MAX_POINTS; + grid_count_t count = GRID_MAX_POINTS; mesh_index_pair best; TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(best.pos, ExtUI::G29_START)); do { if (do_ubl_mesh_map) display_map(param.T_map_type); - const uint8_t point_num = (GRID_MAX_POINTS - count) + 1; + const grid_count_t point_num = (GRID_MAX_POINTS - count) + 1; SERIAL_ECHOLNPGM("Probing mesh point ", point_num, "/", GRID_MAX_POINTS, "."); TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " %i/%i"), GET_TEXT(MSG_PROBING_POINT), point_num, int(GRID_MAX_POINTS))); @@ -1135,7 +1135,7 @@ bool unified_bed_leveling::G29_parse_parameters() { param.R_repetition = 0; if (parser.seen('R')) { - param.R_repetition = parser.has_value() ? parser.value_byte() : GRID_MAX_POINTS; + param.R_repetition = parser.has_value() ? parser.value_ushort() : GRID_MAX_POINTS; NOMORE(param.R_repetition, GRID_MAX_POINTS); if (param.R_repetition < 1) { SERIAL_ECHOLNPGM("?(R)epetition count invalid (1+).\n"); diff --git a/Marlin/src/gcode/bedlevel/G26.cpp b/Marlin/src/gcode/bedlevel/G26.cpp index fe20423b8d..1b55bdb428 100644 --- a/Marlin/src/gcode/bedlevel/G26.cpp +++ b/Marlin/src/gcode/bedlevel/G26.cpp @@ -628,7 +628,7 @@ void GcodeSuite::G26() { } // Get repeat from 'R', otherwise do one full circuit - int16_t g26_repeats; + grid_count_t g26_repeats; #if HAS_MARLINUI_MENU g26_repeats = parser.intval('R', GRID_MAX_POINTS + 1); #else diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index dd325284af..1fe4a31bee 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -102,11 +102,11 @@ public: #endif #if ENABLED(AUTO_BED_LEVELING_LINEAR) - int abl_points; + grid_count_t abl_points; #elif ENABLED(AUTO_BED_LEVELING_3POINT) - static constexpr int abl_points = 3; + static constexpr grid_count_t abl_points = 3; #elif ABL_USES_GRID - static constexpr int abl_points = GRID_MAX_POINTS; + static constexpr grid_count_t abl_points = GRID_MAX_POINTS; #endif #if ABL_USES_GRID @@ -132,8 +132,8 @@ public: #if ENABLED(AUTO_BED_LEVELING_LINEAR) int indexIntoAB[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y]; - float eqnAMatrix[(GRID_MAX_POINTS) * 3], // "A" matrix of the linear system of equations - eqnBVector[GRID_MAX_POINTS], // "B" vector of Z points + float eqnAMatrix[GRID_MAX_POINTS * 3], // "A" matrix of the linear system of equations + eqnBVector[GRID_MAX_POINTS], // "B" vector of Z points mean; #endif #endif @@ -141,7 +141,7 @@ public: #if ABL_USES_GRID && EITHER(AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_BILINEAR) constexpr xy_uint8_t G29_State::grid_points; - constexpr int G29_State::abl_points; + constexpr grid_count_t G29_State::abl_points; #endif /** @@ -677,7 +677,7 @@ G29_TYPE GcodeSuite::G29() { zig ^= true; // zag // An index to print current state - uint8_t pt_index = (PR_OUTER_VAR) * (PR_INNER_SIZE) + 1; + grid_count_t pt_index = (PR_OUTER_VAR) * (PR_INNER_SIZE) + 1; // Inner loop is Y with PROBE_Y_FIRST enabled // Inner loop is X with PROBE_Y_FIRST disabled diff --git a/Marlin/src/gcode/bedlevel/mbl/G29.cpp b/Marlin/src/gcode/bedlevel/mbl/G29.cpp index 9f902141fb..4bc9ba777a 100644 --- a/Marlin/src/gcode/bedlevel/mbl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/mbl/G29.cpp @@ -173,7 +173,7 @@ void GcodeSuite::G29() { SET_SOFT_ENDSTOP_LOOSE(false); } // If there's another point to sample, move there with optional lift. - if (mbl_probe_index < (GRID_MAX_POINTS)) { + if (mbl_probe_index < GRID_MAX_POINTS) { // Disable software endstops to allow manual adjustment // If G29 is left hanging without completion they won't be re-enabled! SET_SOFT_ENDSTOP_LOOSE(true); diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 67d11d93e0..f77bf7afeb 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1498,8 +1498,8 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "AUTO_BED_LEVELING_UBL does not yet support POLAR printers." #elif DISABLED(EEPROM_SETTINGS) #error "AUTO_BED_LEVELING_UBL requires EEPROM_SETTINGS." - #elif !WITHIN(GRID_MAX_POINTS_X, 3, 15) || !WITHIN(GRID_MAX_POINTS_Y, 3, 15) - #error "GRID_MAX_POINTS_[XY] must be a whole number between 3 and 15." + #elif !WITHIN(GRID_MAX_POINTS_X, 3, 255) || !WITHIN(GRID_MAX_POINTS_Y, 3, 255) + #error "GRID_MAX_POINTS_[XY] must be between 3 and 255." #endif #elif HAS_ABL_NOT_UBL @@ -1513,6 +1513,8 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L */ #if IS_SCARA && DISABLED(AUTO_BED_LEVELING_BILINEAR) #error "SCARA machines can only use the AUTO_BED_LEVELING_BILINEAR leveling option." + #elif ABL_USES_GRID && !(WITHIN(GRID_MAX_POINTS_X, 3, 255) && WITHIN(GRID_MAX_POINTS_Y, 3, 255)) + #error "GRID_MAX_POINTS_[XY] must be between 3 and 255." #endif #elif ENABLED(MESH_BED_LEVELING) diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index e7f15792f3..f430f6d1a9 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -202,7 +202,7 @@ bool livemove = false; bool liveadjust = false; uint8_t preheatmode = 0; float zoffsetvalue = 0; -uint8_t gridpoint; +grid_count_t gridpoint; float corner_avg; float corner_pos; diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp index 387557f2af..e846d65a1f 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp @@ -549,7 +549,7 @@ namespace Anycubic { bool msg_matched = false; #if HAS_LEVELING - static uint8_t probe_cnt = 0; + static grid_count_t probe_cnt = 0; #endif // The only way to get printer status is to parse messages @@ -564,7 +564,7 @@ namespace Anycubic { // If probing completes ok save the mesh and park // Ignore the custom machine name if (strcmp_P(msg + strlen(MACHINE_NAME), MARLIN_msg_ready) == 0) { - if (probe_cnt == GRID_MAX_POINTS_X * GRID_MAX_POINTS_Y) { + if (probe_cnt == GRID_MAX_POINTS) { probe_cnt = 0; injectCommands(F("M500")); // G27 park nozzle //ChangePageOfTFT(PAGE_PreLEVEL); diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp index c06971fb10..f882ba33d0 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp @@ -415,7 +415,7 @@ void DGUSScreenHandlerMKS::LanguageChange(DGUS_VP_Variable &var, void *val_ptr) } #if ENABLED(MESH_BED_LEVELING) - uint8_t mesh_point_count = GRID_MAX_POINTS; + grid_count_t mesh_point_count = GRID_MAX_POINTS; #endif void DGUSScreenHandlerMKS::Level_Ctrl(DGUS_VP_Variable &var, void *val_ptr) { diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_view_screen.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_view_screen.h index b9791fff7a..3ec8e06adf 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_view_screen.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_view_screen.h @@ -26,7 +26,7 @@ struct BedMeshViewScreenData { FSTR_P message; - uint8_t count; + grid_count_t count; xy_uint8_t highlight; }; diff --git a/Marlin/src/lcd/menu/menu_bed_leveling.cpp b/Marlin/src/lcd/menu/menu_bed_leveling.cpp index 3d6af0012d..dcf77cb3eb 100644 --- a/Marlin/src/lcd/menu/menu_bed_leveling.cpp +++ b/Marlin/src/lcd/menu/menu_bed_leveling.cpp @@ -53,7 +53,7 @@ // // LCD probed points are from defaults - constexpr uint8_t total_probe_points = TERN(AUTO_BED_LEVELING_3POINT, 3, GRID_MAX_POINTS); + constexpr grid_count_t total_probe_points = TERN(AUTO_BED_LEVELING_3POINT, 3, GRID_MAX_POINTS); // // Bed leveling is done. Wait for G29 to complete. diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index b6e605e853..58e00b7fb0 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -901,7 +901,7 @@ void MarlinSettings::postprocess() { { #if ENABLED(MESH_BED_LEVELING) static_assert( - sizeof(bedlevel.z_values) == (GRID_MAX_POINTS) * sizeof(bedlevel.z_values[0][0]), + sizeof(bedlevel.z_values) == GRID_MAX_POINTS * sizeof(bedlevel.z_values[0][0]), "MBL Z array is the wrong size." ); #else @@ -955,7 +955,7 @@ void MarlinSettings::postprocess() { { #if ENABLED(AUTO_BED_LEVELING_BILINEAR) static_assert( - sizeof(bedlevel.z_values) == (GRID_MAX_POINTS) * sizeof(bedlevel.z_values[0][0]), + sizeof(bedlevel.z_values) == GRID_MAX_POINTS * sizeof(bedlevel.z_values[0][0]), "Bilinear Z array is the wrong size." ); #endif From 3136435c19d2e06253f01010c2d5ca740a78a79e Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Wed, 17 May 2023 06:50:57 +1200 Subject: [PATCH 449/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20MKS=20Robin=20Nano?= =?UTF-8?q?=201.3=20F4=20pin=20collision=20(#25838)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V1_3_F4.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V1_3_F4.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V1_3_F4.h index 3cba69a7b3..a0a711647b 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V1_3_F4.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V1_3_F4.h @@ -40,6 +40,4 @@ //#define FLASH_EEPROM_EMULATION // Use Flash-based EEPROM emulation #endif -#define LED_PIN PB1 - #include "../stm32f1/pins_MKS_ROBIN_NANO_common.h" From 3b2341fb6127f51dd6b150ea49297b60c364d865 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 17 May 2023 00:22:49 +0000 Subject: [PATCH 450/659] [cron] Bump distribution date (2023-05-17) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 153a4c3be2..1c01b9cc32 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-16" +//#define STRING_DISTRIBUTION_DATE "2023-05-17" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 22e56dd2f4..f3e8162cc8 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-16" + #define STRING_DISTRIBUTION_DATE "2023-05-17" #endif /** From b2f372b20f375852e3e009d490260307e399792c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20B=C5=82a=C5=BCewicz?= Date: Thu, 18 May 2023 07:38:21 +0200 Subject: [PATCH 451/659] =?UTF-8?q?=F0=9F=9A=B8=20Unify=20edit=20limits=20?= =?UTF-8?q?for=20some=20E3V2=20LCDs=20(#25045)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/lcd/e3v2/common/limits.h | 94 +++++++ Marlin/src/lcd/e3v2/creality/dwin.cpp | 29 +- Marlin/src/lcd/e3v2/creality/dwin.h | 1 + Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 162 ++++++----- Marlin/src/lcd/e3v2/jyersui/dwin.h | 1 + Marlin/src/lcd/e3v2/proui/dwin.cpp | 382 +++++++++++++++----------- Marlin/src/lcd/e3v2/proui/dwin.h | 1 + 7 files changed, 410 insertions(+), 260 deletions(-) create mode 100644 Marlin/src/lcd/e3v2/common/limits.h diff --git a/Marlin/src/lcd/e3v2/common/limits.h b/Marlin/src/lcd/e3v2/common/limits.h new file mode 100644 index 0000000000..4ac97b82bb --- /dev/null +++ b/Marlin/src/lcd/e3v2/common/limits.h @@ -0,0 +1,94 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/***************************************************************************** + * @file lcd/e3v2/common/limits.h + * @brief Limits for UI values + ****************************************************************************/ + +#include "../../../inc/MarlinConfig.h" + +// If max edit values are not specified use default * DEFAULT_MAX_MULTIPLIER +#define DEFAULT_MAX_MULTIPLIER 2 + +// +// Feedrate limits +// +#define MIN_FEEDRATE_EDIT_VALUE 1 + +constexpr xyze_float_t min_feedrate_edit_values = LOGICAL_AXIS_ARRAY_1(MIN_FEEDRATE_EDIT_VALUE), + default_max_feedrate = DEFAULT_MAX_FEEDRATE, + max_feedrate_edit_values = + #ifdef MAX_FEEDRATE_EDIT_VALUES + MAX_FEEDRATE_EDIT_VALUES + #else + default_max_feedrate * float(DEFAULT_MAX_MULTIPLIER) + #endif + ; + +// +// Acceleration limits +// +#define MIN_ACCELERATION_EDIT_VALUE 1 + +constexpr xyze_float_t min_acceleration_edit_values = LOGICAL_AXIS_ARRAY_1(MIN_ACCELERATION_EDIT_VALUE), + default_max_acceleration = DEFAULT_MAX_ACCELERATION, + max_acceleration_edit_values = + #ifdef MAX_ACCEL_EDIT_VALUES + MAX_ACCEL_EDIT_VALUES + #else + default_max_acceleration * float(DEFAULT_MAX_MULTIPLIER) + #endif + ; + +// +// Max jerk limits +// +#define MIN_JERK_EDIT_VALUE 0.1 +#define DEFAULT_MAX_JERK_MULTIPLIER 2 + +#if HAS_CLASSIC_JERK + constexpr xyze_float_t min_jerk_edit_values = LOGICAL_AXIS_ARRAY_1(MIN_JERK_EDIT_VALUE), + default_jerk = LOGICAL_AXIS_ARRAY( + DEFAULT_EJERK, + DEFAULT_XJERK, DEFAULT_YJERK, DEFAULT_ZJERK, + DEFAULT_IJERK, DEFAULT_JJERK, DEFAULT_KJERK, + DEFAULT_UJERK, DEFAULT_VJERK, DEFAULT_WJERK + ), + max_jerk_edit_values = + #ifdef MAX_JERK_EDIT_VALUES + MAX_JERK_EDIT_VALUES + #else + default_jerk * float(DEFAULT_MAX_JERK_MULTIPLIER) + #endif + ; +#endif + +// +// Steps per mm limits +// +#define MIN_STEPS_EDIT_VALUE 1 + +constexpr xyze_float_t min_steps_edit_values = LOGICAL_AXIS_ARRAY_1(MIN_STEPS_EDIT_VALUE), + default_steps = DEFAULT_AXIS_STEPS_PER_UNIT, + max_steps_edit_values = default_steps * float(DEFAULT_MAX_MULTIPLIER); diff --git a/Marlin/src/lcd/e3v2/creality/dwin.cpp b/Marlin/src/lcd/e3v2/creality/dwin.cpp index 73621851df..9ae1cf1e06 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.cpp +++ b/Marlin/src/lcd/e3v2/creality/dwin.cpp @@ -101,12 +101,6 @@ #define MIN_PRINT_SPEED 10 #define MAX_PRINT_SPEED 999 -// Feedspeed limit (max feedspeed = DEFAULT_MAX_FEEDRATE * 2) -#define MIN_MAXFEEDSPEED 1 -#define MIN_MAXACCELERATION 1 -#define MIN_MAXJERK 0.1 -#define MIN_STEP 1 - #define FEEDRATE_E (60) // Minimum unit (0.1) : multiple (10) @@ -181,13 +175,6 @@ uint8_t index_file = MROWS, bool dwin_abort_flag = false; // Flag to reset feedrate, return to Home -constexpr float default_max_feedrate[] = DEFAULT_MAX_FEEDRATE; -constexpr float default_max_acceleration[] = DEFAULT_MAX_ACCELERATION; - -#if HAS_CLASSIC_JERK - constexpr float default_max_jerk[] = { DEFAULT_XJERK, DEFAULT_YJERK, DEFAULT_ZJERK, DEFAULT_EJERK }; -#endif - static uint8_t _card_percent = 0; static uint16_t _remain_time = 0; @@ -1568,8 +1555,7 @@ void HMI_MaxFeedspeedXYZE() { } // MaxFeedspeed limit if (WITHIN(HMI_flag.feedspeed_axis, X_AXIS, LAST_AXIS)) - NOMORE(HMI_ValueStruct.Max_Feedspeed, default_max_feedrate[HMI_flag.feedspeed_axis] * 2); - if (HMI_ValueStruct.Max_Feedspeed < MIN_MAXFEEDSPEED) HMI_ValueStruct.Max_Feedspeed = MIN_MAXFEEDSPEED; + LIMIT(HMI_ValueStruct.Max_Feedspeed, min_feedrate_edit_values[HMI_flag.feedspeed_axis], max_feedrate_edit_values[HMI_flag.feedspeed_axis]); // MaxFeedspeed value Draw_Edit_Integer4(select_speed.now, HMI_ValueStruct.Max_Feedspeed, true); } @@ -1587,8 +1573,7 @@ void HMI_MaxAccelerationXYZE() { } // MaxAcceleration limit if (WITHIN(HMI_flag.acc_axis, X_AXIS, LAST_AXIS)) - NOMORE(HMI_ValueStruct.Max_Acceleration, default_max_acceleration[HMI_flag.acc_axis] * 2); - if (HMI_ValueStruct.Max_Acceleration < MIN_MAXACCELERATION) HMI_ValueStruct.Max_Acceleration = MIN_MAXACCELERATION; + LIMIT(HMI_ValueStruct.Max_Acceleration, min_acceleration_edit_values[HMI_flag.acc_axis], max_acceleration_edit_values[HMI_flag.acc_axis]); // MaxAcceleration value Draw_Edit_Integer4(select_acc.now, HMI_ValueStruct.Max_Acceleration, true); } @@ -1602,14 +1587,13 @@ void HMI_MaxAccelerationXYZE() { checkkey = MaxJerk; EncoderRate.enabled = false; if (WITHIN(HMI_flag.jerk_axis, X_AXIS, LAST_AXIS)) - planner.set_max_jerk(HMI_flag.jerk_axis, HMI_ValueStruct.Max_Jerk_scaled / 10); + planner.set_max_jerk(HMI_flag.jerk_axis, HMI_ValueStruct.Max_Jerk_scaled / MINUNITMULT); Draw_Edit_Float3(select_jerk.now, HMI_ValueStruct.Max_Jerk_scaled); return; } // MaxJerk limit if (WITHIN(HMI_flag.jerk_axis, X_AXIS, LAST_AXIS)) - NOMORE(HMI_ValueStruct.Max_Jerk_scaled, default_max_jerk[HMI_flag.jerk_axis] * 2 * MINUNITMULT); - NOLESS(HMI_ValueStruct.Max_Jerk_scaled, (MIN_MAXJERK) * MINUNITMULT); + LIMIT(HMI_ValueStruct.Max_Jerk_scaled, min_jerk_edit_values[HMI_flag.jerk_axis] * MINUNITMULT, max_jerk_edit_values[HMI_flag.jerk_axis] * MINUNITMULT); // MaxJerk value Draw_Edit_Float3(select_jerk.now, HMI_ValueStruct.Max_Jerk_scaled, true); } @@ -1623,14 +1607,13 @@ void HMI_StepXYZE() { checkkey = Step; EncoderRate.enabled = false; if (WITHIN(HMI_flag.step_axis, X_AXIS, LAST_AXIS)) - planner.settings.axis_steps_per_mm[HMI_flag.step_axis] = HMI_ValueStruct.Max_Step_scaled / 10; + planner.settings.axis_steps_per_mm[HMI_flag.step_axis] = HMI_ValueStruct.Max_Step_scaled / MINUNITMULT; Draw_Edit_Float3(select_step.now, HMI_ValueStruct.Max_Step_scaled); return; } // Step limit if (WITHIN(HMI_flag.step_axis, X_AXIS, LAST_AXIS)) - NOMORE(HMI_ValueStruct.Max_Step_scaled, 999.9 * MINUNITMULT); - NOLESS(HMI_ValueStruct.Max_Step_scaled, MIN_STEP); + LIMIT(HMI_ValueStruct.Max_Step_scaled, min_steps_edit_values[HMI_flag.step_axis] * MINUNITMULT, max_steps_edit_values[HMI_flag.step_axis] * MINUNITMULT); // Step value Draw_Edit_Float3(select_step.now, HMI_ValueStruct.Max_Step_scaled, true); } diff --git a/Marlin/src/lcd/e3v2/creality/dwin.h b/Marlin/src/lcd/e3v2/creality/dwin.h index 487f309ed9..854a011c5e 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.h +++ b/Marlin/src/lcd/e3v2/creality/dwin.h @@ -27,6 +27,7 @@ #include "dwin_lcd.h" #include "../common/encoder.h" +#include "../common/limits.h" #include "../../../libs/BL24CXX.h" #include "../../../inc/MarlinConfigPre.h" diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index f430f6d1a9..ceaf147c3b 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -127,6 +127,11 @@ #define MIN_BED_TEMP 0 #endif +#define FEEDRATE_UNIT 1 +#define ACCELERATION_UNIT 1 +#define JERK_UNIT 10 +#define STEPS_UNIT 10 + /** * Custom menu items with jyersLCD */ @@ -155,13 +160,6 @@ constexpr uint16_t TROWS = 6, MROWS = TROWS - 1, #define MBASE(L) (49 + MLINE * (L)) -constexpr float default_max_feedrate[] = DEFAULT_MAX_FEEDRATE; -constexpr float default_max_acceleration[] = DEFAULT_MAX_ACCELERATION; -constexpr float default_steps[] = DEFAULT_AXIS_STEPS_PER_UNIT; -#if HAS_CLASSIC_JERK - constexpr float default_max_jerk[] = { DEFAULT_XJERK, DEFAULT_YJERK, DEFAULT_ZJERK, DEFAULT_EJERK }; -#endif - enum SelectItem : uint8_t { PAGE_PRINT = 0, PAGE_PREPARE, @@ -2369,10 +2367,10 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item case SPEED_X: if (draw) { Draw_Menu_Item(row, ICON_MaxSpeedX, F("X Axis")); - Draw_Float(planner.settings.max_feedrate_mm_s[X_AXIS], row, false, 1); + Draw_Float(planner.settings.max_feedrate_mm_s[X_AXIS], row, false, FEEDRATE_UNIT); } else - Modify_Value(planner.settings.max_feedrate_mm_s[X_AXIS], 0, default_max_feedrate[X_AXIS] * 2, 1); + Modify_Value(planner.settings.max_feedrate_mm_s[X_AXIS], min_feedrate_edit_values.x, max_feedrate_edit_values.x, FEEDRATE_UNIT); break; #endif @@ -2380,10 +2378,10 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item case SPEED_Y: if (draw) { Draw_Menu_Item(row, ICON_MaxSpeedY, F("Y Axis")); - Draw_Float(planner.settings.max_feedrate_mm_s[Y_AXIS], row, false, 1); + Draw_Float(planner.settings.max_feedrate_mm_s[Y_AXIS], row, false, FEEDRATE_UNIT); } else - Modify_Value(planner.settings.max_feedrate_mm_s[Y_AXIS], 0, default_max_feedrate[Y_AXIS] * 2, 1); + Modify_Value(planner.settings.max_feedrate_mm_s[Y_AXIS], min_feedrate_edit_values.y, max_feedrate_edit_values.y, FEEDRATE_UNIT); break; #endif @@ -2391,10 +2389,10 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item case SPEED_Z: if (draw) { Draw_Menu_Item(row, ICON_MaxSpeedZ, F("Z Axis")); - Draw_Float(planner.settings.max_feedrate_mm_s[Z_AXIS], row, false, 1); + Draw_Float(planner.settings.max_feedrate_mm_s[Z_AXIS], row, false, FEEDRATE_UNIT); } else - Modify_Value(planner.settings.max_feedrate_mm_s[Z_AXIS], 0, default_max_feedrate[Z_AXIS] * 2, 1); + Modify_Value(planner.settings.max_feedrate_mm_s[Z_AXIS], min_feedrate_edit_values.z, max_feedrate_edit_values.z, FEEDRATE_UNIT); break; #endif @@ -2402,10 +2400,10 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item case SPEED_E: if (draw) { Draw_Menu_Item(row, ICON_MaxSpeedE, F("Extruder")); - Draw_Float(planner.settings.max_feedrate_mm_s[E_AXIS], row, false, 1); + Draw_Float(planner.settings.max_feedrate_mm_s[E_AXIS], row, false, FEEDRATE_UNIT); } else - Modify_Value(planner.settings.max_feedrate_mm_s[E_AXIS], 0, default_max_feedrate[E_AXIS] * 2, 1); + Modify_Value(planner.settings.max_feedrate_mm_s[E_AXIS], min_feedrate_edit_values.e, max_feedrate_edit_values.e, FEEDRATE_UNIT); break; #endif } @@ -2430,35 +2428,35 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item case ACCEL_X: if (draw) { Draw_Menu_Item(row, ICON_MaxAccX, F("X Axis")); - Draw_Float(planner.settings.max_acceleration_mm_per_s2[X_AXIS], row, false, 1); + Draw_Float(planner.settings.max_acceleration_mm_per_s2[X_AXIS], row, false, ACCELERATION_UNIT); } else - Modify_Value(planner.settings.max_acceleration_mm_per_s2[X_AXIS], 0, default_max_acceleration[X_AXIS] * 2, 1); + Modify_Value(planner.settings.max_acceleration_mm_per_s2[X_AXIS], min_acceleration_edit_values.x, max_acceleration_edit_values.x, ACCELERATION_UNIT); break; case ACCEL_Y: if (draw) { Draw_Menu_Item(row, ICON_MaxAccY, F("Y Axis")); - Draw_Float(planner.settings.max_acceleration_mm_per_s2[Y_AXIS], row, false, 1); + Draw_Float(planner.settings.max_acceleration_mm_per_s2[Y_AXIS], row, false, ACCELERATION_UNIT); } else - Modify_Value(planner.settings.max_acceleration_mm_per_s2[Y_AXIS], 0, default_max_acceleration[Y_AXIS] * 2, 1); + Modify_Value(planner.settings.max_acceleration_mm_per_s2[Y_AXIS], min_acceleration_edit_values.y, max_acceleration_edit_values.y, ACCELERATION_UNIT); break; case ACCEL_Z: if (draw) { Draw_Menu_Item(row, ICON_MaxAccZ, F("Z Axis")); - Draw_Float(planner.settings.max_acceleration_mm_per_s2[Z_AXIS], row, false, 1); + Draw_Float(planner.settings.max_acceleration_mm_per_s2[Z_AXIS], row, false, ACCELERATION_UNIT); } else - Modify_Value(planner.settings.max_acceleration_mm_per_s2[Z_AXIS], 0, default_max_acceleration[Z_AXIS] * 2, 1); + Modify_Value(planner.settings.max_acceleration_mm_per_s2[Z_AXIS], min_acceleration_edit_values.z, max_acceleration_edit_values.z, ACCELERATION_UNIT); break; #if HAS_HOTEND case ACCEL_E: if (draw) { Draw_Menu_Item(row, ICON_MaxAccE, F("Extruder")); - Draw_Float(planner.settings.max_acceleration_mm_per_s2[E_AXIS], row, false, 1); + Draw_Float(planner.settings.max_acceleration_mm_per_s2[E_AXIS], row, false, ACCELERATION_UNIT); } else - Modify_Value(planner.settings.max_acceleration_mm_per_s2[E_AXIS], 0, default_max_acceleration[E_AXIS] * 2, 1); + Modify_Value(planner.settings.max_acceleration_mm_per_s2[E_AXIS], min_acceleration_edit_values.e, max_acceleration_edit_values.e, ACCELERATION_UNIT); break; #endif } @@ -2480,38 +2478,44 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item else Draw_Menu(Motion, MOTION_JERK); break; - case JERK_X: - if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeedJerkX, F("X Axis")); - Draw_Float(planner.max_jerk.x, row, false, 10); - } - else - Modify_Value(planner.max_jerk.x, 0, default_max_jerk[X_AXIS] * 2, 10); - break; - case JERK_Y: - if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeedJerkY, F("Y Axis")); - Draw_Float(planner.max_jerk.y, row, false, 10); - } - else - Modify_Value(planner.max_jerk.y, 0, default_max_jerk[Y_AXIS] * 2, 10); - break; - case JERK_Z: - if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeedJerkZ, F("Z Axis")); - Draw_Float(planner.max_jerk.z, row, false, 10); - } - else - Modify_Value(planner.max_jerk.z, 0, default_max_jerk[Z_AXIS] * 2, 10); - break; + #if HAS_X_AXIS + case JERK_X: + if (draw) { + Draw_Menu_Item(row, ICON_MaxSpeedJerkX, F("X Axis")); + Draw_Float(planner.max_jerk.x, row, false, JERK_UNIT); + } + else + Modify_Value(planner.max_jerk.x, min_jerk_edit_values.x, max_jerk_edit_values.x, JERK_UNIT); + break; + #endif + #if HAS_Y_AXIS + case JERK_Y: + if (draw) { + Draw_Menu_Item(row, ICON_MaxSpeedJerkY, F("Y Axis")); + Draw_Float(planner.max_jerk.y, row, false, JERK_UNIT); + } + else + Modify_Value(planner.max_jerk.y, min_jerk_edit_values.y, max_jerk_edit_values.y, JERK_UNIT); + break; + #endif + #if HAS_Z_AXIS + case JERK_Z: + if (draw) { + Draw_Menu_Item(row, ICON_MaxSpeedJerkZ, F("Z Axis")); + Draw_Float(planner.max_jerk.z, row, false, JERK_UNIT); + } + else + Modify_Value(planner.max_jerk.z, min_jerk_edit_values.z, max_jerk_edit_values.z, JERK_UNIT); + break; + #endif #if HAS_HOTEND case JERK_E: if (draw) { Draw_Menu_Item(row, ICON_MaxSpeedJerkE, F("Extruder")); - Draw_Float(planner.max_jerk.e, row, false, 10); + Draw_Float(planner.max_jerk.e, row, false, JERK_UNIT); } else - Modify_Value(planner.max_jerk.e, 0, default_max_jerk[E_AXIS] * 2, 10); + Modify_Value(planner.max_jerk.e, min_jerk_edit_values.e, max_jerk_edit_values.e, JERK_UNIT); break; #endif } @@ -2532,39 +2536,45 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item Draw_Menu_Item(row, ICON_Back, F("Back")); else Draw_Menu(Motion, MOTION_STEPS); - break; - case STEPS_X: - if (draw) { - Draw_Menu_Item(row, ICON_StepX, F("X Axis")); - Draw_Float(planner.settings.axis_steps_per_mm[X_AXIS], row, false, 10); - } - else - Modify_Value(planner.settings.axis_steps_per_mm[X_AXIS], 0, default_steps[X_AXIS] * 2, 10); - break; - case STEPS_Y: - if (draw) { - Draw_Menu_Item(row, ICON_StepY, F("Y Axis")); - Draw_Float(planner.settings.axis_steps_per_mm[Y_AXIS], row, false, 10); - } - else - Modify_Value(planner.settings.axis_steps_per_mm[Y_AXIS], 0, default_steps[Y_AXIS] * 2, 10); - break; - case STEPS_Z: - if (draw) { - Draw_Menu_Item(row, ICON_StepZ, F("Z Axis")); - Draw_Float(planner.settings.axis_steps_per_mm[Z_AXIS], row, false, 10); - } - else - Modify_Value(planner.settings.axis_steps_per_mm[Z_AXIS], 0, default_steps[Z_AXIS] * 2, 10); - break; + break; + #if HAS_X_AXIS + case STEPS_X: + if (draw) { + Draw_Menu_Item(row, ICON_StepX, F("X Axis")); + Draw_Float(planner.settings.axis_steps_per_mm[X_AXIS], row, false, STEPS_UNIT); + } + else + Modify_Value(planner.settings.axis_steps_per_mm[X_AXIS], min_steps_edit_values.x, max_steps_edit_values.x, STEPS_UNIT); + break; + #endif + #if HAS_Y_AXIS + case STEPS_Y: + if (draw) { + Draw_Menu_Item(row, ICON_StepY, F("Y Axis")); + Draw_Float(planner.settings.axis_steps_per_mm[Y_AXIS], row, false, STEPS_UNIT); + } + else + Modify_Value(planner.settings.axis_steps_per_mm[Y_AXIS], min_steps_edit_values.y, max_steps_edit_values.y, STEPS_UNIT); + break; + #endif + #if HAS_Z_AXIS + case STEPS_Z: + if (draw) { + Draw_Menu_Item(row, ICON_StepZ, F("Z Axis")); + Draw_Float(planner.settings.axis_steps_per_mm[Z_AXIS], row, false, STEPS_UNIT); + } + else + Modify_Value(planner.settings.axis_steps_per_mm[Z_AXIS], min_steps_edit_values.z, max_steps_edit_values.z, STEPS_UNIT); + break; + #endif #if HAS_HOTEND case STEPS_E: if (draw) { Draw_Menu_Item(row, ICON_StepE, F("Extruder")); - Draw_Float(planner.settings.axis_steps_per_mm[E_AXIS], row, false, 10); + Draw_Float(planner.settings.axis_steps_per_mm[E_AXIS], row, false, STEPS_UNIT); } else - Modify_Value(planner.settings.axis_steps_per_mm[E_AXIS], 0, 1000, 10); + Modify_Value(planner.settings.axis_steps_per_mm[E_AXIS], min_steps_edit_values.e, max_steps_edit_values.e, STEPS_UNIT); break; #endif } diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.h b/Marlin/src/lcd/e3v2/jyersui/dwin.h index 71db445aa8..2f5369d4a6 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.h +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.h @@ -30,6 +30,7 @@ #include "../common/dwin_font.h" #include "../common/dwin_color.h" #include "../common/encoder.h" +#include "../common/limits.h" #include "../../../libs/BL24CXX.h" #include "../../../inc/MarlinConfigPre.h" diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index 8bd0a67b9b..6730c026c5 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -143,13 +143,6 @@ // Load and Unload limits #define MAX_LOAD_UNLOAD 500 -// Feedspeed limit (max feedspeed = MAX_FEEDRATE_EDIT_VALUES) -#define MIN_MAXFEEDSPEED 1 -#define MIN_MAXACCELERATION 1 -#define MIN_MAXJERK 0.1 -#define MIN_STEP 1 -#define MAX_STEP 999.9 - // Editable temperature limits #define MIN_ETEMP 0 #define MAX_ETEMP (thermalManager.hotend_maxtemp[0] - (HOTEND_OVERSHOOT)) @@ -195,32 +188,6 @@ typedef struct { } select_t; select_t select_page{0}, select_print{0}; -constexpr float max_feedrate_edit_values[] = - #ifdef MAX_FEEDRATE_EDIT_VALUES - MAX_FEEDRATE_EDIT_VALUES - #else - { 1000, 1000, 10, 50 } - #endif -; - -constexpr float max_acceleration_edit_values[] = - #ifdef MAX_ACCEL_EDIT_VALUES - MAX_ACCEL_EDIT_VALUES - #else - { 1000, 1000, 200, 2000 } - #endif -; - -#if HAS_CLASSIC_JERK - constexpr float max_jerk_edit_values[] = - #ifdef MAX_JERK_EDIT_VALUES - MAX_JERK_EDIT_VALUES - #else - { DEFAULT_XJERK * 2, DEFAULT_YJERK * 2, DEFAULT_ZJERK * 2, DEFAULT_EJERK * 2 } - #endif - ; -#endif - #if HAS_HOTEND float last_E = 0; #define E_MIN_POS (last_E - (EXTRUDE_MAXLENGTH)) @@ -1301,8 +1268,8 @@ void EachMomentUpdate() { if (card.isPrinting() && !HMI_flag.percent_flag) { uint8_t percentDone = card.percentDone(); if (_percent_done != percentDone) { // print percent - _percent_done = percentDone; - Draw_Print_ProgressBar(); + _percent_done = percentDone; + Draw_Print_ProgressBar(); } // Estimate remaining time every 20 seconds @@ -2537,36 +2504,60 @@ void TramC () { Tram(4); } #endif void ApplyMaxSpeed() { planner.set_max_feedrate(HMI_value.axis, MenuData.Value / MINUNITMULT); } -void SetMaxSpeedX() { HMI_value.axis = X_AXIS, SetFloatOnClick(MIN_MAXFEEDSPEED, max_feedrate_edit_values[X_AXIS], UNITFDIGITS, planner.settings.max_feedrate_mm_s[X_AXIS], ApplyMaxSpeed); } -void SetMaxSpeedY() { HMI_value.axis = Y_AXIS, SetFloatOnClick(MIN_MAXFEEDSPEED, max_feedrate_edit_values[Y_AXIS], UNITFDIGITS, planner.settings.max_feedrate_mm_s[Y_AXIS], ApplyMaxSpeed); } -void SetMaxSpeedZ() { HMI_value.axis = Z_AXIS, SetFloatOnClick(MIN_MAXFEEDSPEED, max_feedrate_edit_values[Z_AXIS], UNITFDIGITS, planner.settings.max_feedrate_mm_s[Z_AXIS], ApplyMaxSpeed); } +#if HAS_X_AXIS + void SetMaxSpeedX() { HMI_value.axis = X_AXIS, SetFloatOnClick(min_feedrate_edit_values.x, max_feedrate_edit_values.x, UNITFDIGITS, planner.settings.max_feedrate_mm_s[X_AXIS], ApplyMaxSpeed); } +#endif +#if HAS_Y_AXIS + void SetMaxSpeedY() { HMI_value.axis = Y_AXIS, SetFloatOnClick(min_feedrate_edit_values.y, max_feedrate_edit_values.y, UNITFDIGITS, planner.settings.max_feedrate_mm_s[Y_AXIS], ApplyMaxSpeed); } +#endif +#if HAS_Z_AXIS + void SetMaxSpeedZ() { HMI_value.axis = Z_AXIS, SetFloatOnClick(min_feedrate_edit_values.z, max_feedrate_edit_values.z, UNITFDIGITS, planner.settings.max_feedrate_mm_s[Z_AXIS], ApplyMaxSpeed); } +#endif #if HAS_HOTEND - void SetMaxSpeedE() { HMI_value.axis = E_AXIS; SetFloatOnClick(MIN_MAXFEEDSPEED, max_feedrate_edit_values[E_AXIS], UNITFDIGITS, planner.settings.max_feedrate_mm_s[E_AXIS], ApplyMaxSpeed); } + void SetMaxSpeedE() { HMI_value.axis = E_AXIS; SetFloatOnClick(min_feedrate_edit_values.e, max_feedrate_edit_values.e, UNITFDIGITS, planner.settings.max_feedrate_mm_s[E_AXIS], ApplyMaxSpeed); } #endif void ApplyMaxAccel() { planner.set_max_acceleration(HMI_value.axis, MenuData.Value); } -void SetMaxAccelX() { HMI_value.axis = X_AXIS, SetIntOnClick(MIN_MAXACCELERATION, max_acceleration_edit_values[X_AXIS], planner.settings.max_acceleration_mm_per_s2[X_AXIS], ApplyMaxAccel); } -void SetMaxAccelY() { HMI_value.axis = Y_AXIS, SetIntOnClick(MIN_MAXACCELERATION, max_acceleration_edit_values[Y_AXIS], planner.settings.max_acceleration_mm_per_s2[Y_AXIS], ApplyMaxAccel); } -void SetMaxAccelZ() { HMI_value.axis = Z_AXIS, SetIntOnClick(MIN_MAXACCELERATION, max_acceleration_edit_values[Z_AXIS], planner.settings.max_acceleration_mm_per_s2[Z_AXIS], ApplyMaxAccel); } +#if HAS_X_AXIS + void SetMaxAccelX() { HMI_value.axis = X_AXIS, SetIntOnClick(min_acceleration_edit_values.x, max_acceleration_edit_values.x, planner.settings.max_acceleration_mm_per_s2[X_AXIS], ApplyMaxAccel); } +#endif +#if HAS_Y_AXIS + void SetMaxAccelY() { HMI_value.axis = Y_AXIS, SetIntOnClick(min_acceleration_edit_values.y, max_acceleration_edit_values.y, planner.settings.max_acceleration_mm_per_s2[Y_AXIS], ApplyMaxAccel); } +#endif +#if HAS_Z_AXIS + void SetMaxAccelZ() { HMI_value.axis = Z_AXIS, SetIntOnClick(min_acceleration_edit_values.z, max_acceleration_edit_values.z, planner.settings.max_acceleration_mm_per_s2[Z_AXIS], ApplyMaxAccel); } +#endif #if HAS_HOTEND - void SetMaxAccelE() { HMI_value.axis = E_AXIS; SetIntOnClick(MIN_MAXACCELERATION, max_acceleration_edit_values[E_AXIS], planner.settings.max_acceleration_mm_per_s2[E_AXIS], ApplyMaxAccel); } + void SetMaxAccelE() { HMI_value.axis = E_AXIS; SetIntOnClick(min_acceleration_edit_values.e, max_acceleration_edit_values.e, planner.settings.max_acceleration_mm_per_s2[E_AXIS], ApplyMaxAccel); } #endif #if HAS_CLASSIC_JERK void ApplyMaxJerk() { planner.set_max_jerk(HMI_value.axis, MenuData.Value / MINUNITMULT); } - void SetMaxJerkX() { HMI_value.axis = X_AXIS, SetFloatOnClick(MIN_MAXJERK, max_jerk_edit_values[X_AXIS], UNITFDIGITS, planner.max_jerk.x, ApplyMaxJerk); } - void SetMaxJerkY() { HMI_value.axis = Y_AXIS, SetFloatOnClick(MIN_MAXJERK, max_jerk_edit_values[Y_AXIS], UNITFDIGITS, planner.max_jerk.y, ApplyMaxJerk); } - void SetMaxJerkZ() { HMI_value.axis = Z_AXIS, SetFloatOnClick(MIN_MAXJERK, max_jerk_edit_values[Z_AXIS], UNITFDIGITS, planner.max_jerk.z, ApplyMaxJerk); } + #if HAS_X_AXIS + void SetMaxJerkX() { HMI_value.axis = X_AXIS, SetFloatOnClick(min_jerk_edit_values.x, max_jerk_edit_values.x, UNITFDIGITS, planner.max_jerk.x, ApplyMaxJerk); } + #endif + #if HAS_Y_AXIS + void SetMaxJerkY() { HMI_value.axis = Y_AXIS, SetFloatOnClick(min_jerk_edit_values.y, max_jerk_edit_values.y, UNITFDIGITS, planner.max_jerk.y, ApplyMaxJerk); } + #endif + #if HAS_Z_AXIS + void SetMaxJerkZ() { HMI_value.axis = Z_AXIS, SetFloatOnClick(min_jerk_edit_values.z, max_jerk_edit_values.z, UNITFDIGITS, planner.max_jerk.z, ApplyMaxJerk); } + #endif #if HAS_HOTEND - void SetMaxJerkE() { HMI_value.axis = E_AXIS; SetFloatOnClick(MIN_MAXJERK, max_jerk_edit_values[E_AXIS], UNITFDIGITS, planner.max_jerk.e, ApplyMaxJerk); } + void SetMaxJerkE() { HMI_value.axis = E_AXIS; SetFloatOnClick(min_jerk_edit_values.e, max_jerk_edit_values.e, UNITFDIGITS, planner.max_jerk.e, ApplyMaxJerk); } #endif #endif -void SetStepsX() { HMI_value.axis = X_AXIS, SetPFloatOnClick( MIN_STEP, MAX_STEP, UNITFDIGITS); } -void SetStepsY() { HMI_value.axis = Y_AXIS, SetPFloatOnClick( MIN_STEP, MAX_STEP, UNITFDIGITS); } -void SetStepsZ() { HMI_value.axis = Z_AXIS, SetPFloatOnClick( MIN_STEP, MAX_STEP, UNITFDIGITS); } +#if HAS_X_AXIS + void SetStepsX() { HMI_value.axis = X_AXIS, SetPFloatOnClick( min_steps_edit_values.x, max_steps_edit_values.x, UNITFDIGITS); } +#endif +#if HAS_Y_AXIS + void SetStepsY() { HMI_value.axis = Y_AXIS, SetPFloatOnClick( min_steps_edit_values.y, max_steps_edit_values.y, UNITFDIGITS); } +#endif +#if HAS_Z_AXIS + void SetStepsZ() { HMI_value.axis = Z_AXIS, SetPFloatOnClick( min_steps_edit_values.z, max_steps_edit_values.z, UNITFDIGITS); } +#endif #if HAS_HOTEND - void SetStepsE() { HMI_value.axis = E_AXIS; SetPFloatOnClick( MIN_STEP, MAX_STEP, UNITFDIGITS); } + void SetStepsE() { HMI_value.axis = E_AXIS; SetPFloatOnClick( min_steps_edit_values.e, max_steps_edit_values.e, UNITFDIGITS); } #if ENABLED(PIDTEMP) void SetHotendPidT() { SetPIntOnClick(MIN_ETEMP, MAX_ETEMP); } #endif @@ -2816,29 +2807,35 @@ void onDrawSpeed(MenuItemClass* menuitem, int8_t line) { onDrawSubMenu(menuitem, line); } -void onDrawMaxSpeedX(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 228, 147); - DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 58, MBASE(line)); // X +#if HAS_X_AXIS + void onDrawMaxSpeedX(MenuItemClass* menuitem, int8_t line) { + if (HMI_IsChinese()) { + menuitem->SetFrame(1, 173, 133, 228, 147); + DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 58, MBASE(line)); // X + } + onDrawPFloatMenu(menuitem, line); } - onDrawPFloatMenu(menuitem, line); -} +#endif -void onDrawMaxSpeedY(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 228, 147); - DWIN_Frame_AreaCopy(1, 1, 150, 7, 160, LBLX + 58, MBASE(line)); // Y +#if HAS_Y_AXIS + void onDrawMaxSpeedY(MenuItemClass* menuitem, int8_t line) { + if (HMI_IsChinese()) { + menuitem->SetFrame(1, 173, 133, 228, 147); + DWIN_Frame_AreaCopy(1, 1, 150, 7, 160, LBLX + 58, MBASE(line)); // Y + } + onDrawPFloatMenu(menuitem, line); } - onDrawPFloatMenu(menuitem, line); -} +#endif -void onDrawMaxSpeedZ(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 228, 147); - DWIN_Frame_AreaCopy(1, 9, 150, 16, 160, LBLX + 58, MBASE(line) + 3); // Z +#if HAS_Z_AXIS + void onDrawMaxSpeedZ(MenuItemClass* menuitem, int8_t line) { + if (HMI_IsChinese()) { + menuitem->SetFrame(1, 173, 133, 228, 147); + DWIN_Frame_AreaCopy(1, 9, 150, 16, 160, LBLX + 58, MBASE(line) + 3); // Z + } + onDrawPFloatMenu(menuitem, line); } - onDrawPFloatMenu(menuitem, line); -} +#endif #if HAS_HOTEND void onDrawMaxSpeedE(MenuItemClass* menuitem, int8_t line) { @@ -2858,32 +2855,38 @@ void onDrawAcc(MenuItemClass* menuitem, int8_t line) { onDrawSubMenu(menuitem, line); } -void onDrawMaxAccelX(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line)); - DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 71, MBASE(line)); // X +#if HAS_X_AXIS + void onDrawMaxAccelX(MenuItemClass* menuitem, int8_t line) { + if (HMI_IsChinese()) { + menuitem->SetFrame(1, 173, 133, 200, 147); + DWIN_Frame_AreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line)); + DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 71, MBASE(line)); // X + } + onDrawPInt32Menu(menuitem, line); } - onDrawPInt32Menu(menuitem, line); -} +#endif -void onDrawMaxAccelY(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line)); - DWIN_Frame_AreaCopy(1, 1, 150, 7, 160, LBLX + 71, MBASE(line)); // Y +#if HAS_Y_AXIS + void onDrawMaxAccelY(MenuItemClass* menuitem, int8_t line) { + if (HMI_IsChinese()) { + menuitem->SetFrame(1, 173, 133, 200, 147); + DWIN_Frame_AreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line)); + DWIN_Frame_AreaCopy(1, 1, 150, 7, 160, LBLX + 71, MBASE(line)); // Y + } + onDrawPInt32Menu(menuitem, line); } - onDrawPInt32Menu(menuitem, line); -} +#endif -void onDrawMaxAccelZ(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line)); - DWIN_Frame_AreaCopy(1, 9, 150, 16, 160, LBLX + 71, MBASE(line)); // Z +#if HAS_Z_AXIS + void onDrawMaxAccelZ(MenuItemClass* menuitem, int8_t line) { + if (HMI_IsChinese()) { + menuitem->SetFrame(1, 173, 133, 200, 147); + DWIN_Frame_AreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line)); + DWIN_Frame_AreaCopy(1, 9, 150, 16, 160, LBLX + 71, MBASE(line)); // Z + } + onDrawPInt32Menu(menuitem, line); } - onDrawPInt32Menu(menuitem, line); -} +#endif #if HAS_HOTEND void onDrawMaxAccelE(MenuItemClass* menuitem, int8_t line) { @@ -2907,35 +2910,41 @@ void onDrawMaxAccelZ(MenuItemClass* menuitem, int8_t line) { onDrawSubMenu(menuitem, line); } - void onDrawMaxJerkX(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line)); - DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line)); - DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 83, MBASE(line)); + #if HAS_X_AXIS + void onDrawMaxJerkX(MenuItemClass* menuitem, int8_t line) { + if (HMI_IsChinese()) { + menuitem->SetFrame(1, 173, 133, 200, 147); + DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line)); + DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line)); + DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 83, MBASE(line)); + } + onDrawPFloatMenu(menuitem, line); } - onDrawPFloatMenu(menuitem, line); - } + #endif - void onDrawMaxJerkY(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line)); - DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line)); - DWIN_Frame_AreaCopy(1, 1, 150, 7, 160, LBLX + 83, MBASE(line)); + #if HAS_Y_AXIS + void onDrawMaxJerkY(MenuItemClass* menuitem, int8_t line) { + if (HMI_IsChinese()) { + menuitem->SetFrame(1, 173, 133, 200, 147); + DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line)); + DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line)); + DWIN_Frame_AreaCopy(1, 1, 150, 7, 160, LBLX + 83, MBASE(line)); + } + onDrawPFloatMenu(menuitem, line); } - onDrawPFloatMenu(menuitem, line); - } + #endif - void onDrawMaxJerkZ(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line)); - DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line)); - DWIN_Frame_AreaCopy(1, 9, 150, 16, 160, LBLX + 83, MBASE(line)); + #if HAS_Z_AXIS + void onDrawMaxJerkZ(MenuItemClass* menuitem, int8_t line) { + if (HMI_IsChinese()) { + menuitem->SetFrame(1, 173, 133, 200, 147); + DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line)); + DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line)); + DWIN_Frame_AreaCopy(1, 9, 150, 16, 160, LBLX + 83, MBASE(line)); + } + onDrawPFloatMenu(menuitem, line); } - onDrawPFloatMenu(menuitem, line); - } + #endif #if HAS_HOTEND @@ -2953,29 +2962,35 @@ void onDrawMaxAccelZ(MenuItemClass* menuitem, int8_t line) { #endif // HAS_CLASSIC_JERK -void onDrawStepsX(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 153, 148, 194, 161); - DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 44, MBASE(line)); // X +#if HAS_X_AXIS + void onDrawStepsX(MenuItemClass* menuitem, int8_t line) { + if (HMI_IsChinese()) { + menuitem->SetFrame(1, 153, 148, 194, 161); + DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 44, MBASE(line)); // X + } + onDrawPFloatMenu(menuitem, line); } - onDrawPFloatMenu(menuitem, line); -} +#endif -void onDrawStepsY(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 153, 148, 194, 161); - DWIN_Frame_AreaCopy(1, 1, 150, 7, 160, LBLX + 44, MBASE(line)); // Y +#if HAS_Y_AXIS + void onDrawStepsY(MenuItemClass* menuitem, int8_t line) { + if (HMI_IsChinese()) { + menuitem->SetFrame(1, 153, 148, 194, 161); + DWIN_Frame_AreaCopy(1, 1, 150, 7, 160, LBLX + 44, MBASE(line)); // Y + } + onDrawPFloatMenu(menuitem, line); } - onDrawPFloatMenu(menuitem, line); -} +#endif -void onDrawStepsZ(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 153, 148, 194, 161); - DWIN_Frame_AreaCopy(1, 9, 150, 16, 160, LBLX + 44, MBASE(line)); // Z +#if HAS_Z_AXIS + void onDrawStepsZ(MenuItemClass* menuitem, int8_t line) { + if (HMI_IsChinese()) { + menuitem->SetFrame(1, 153, 148, 194, 161); + DWIN_Frame_AreaCopy(1, 9, 150, 16, 160, LBLX + 44, MBASE(line)); // Z + } + onDrawPFloatMenu(menuitem, line); } - onDrawPFloatMenu(menuitem, line); -} +#endif #if HAS_HOTEND @@ -2996,10 +3011,7 @@ void onDrawStepsZ(MenuItemClass* menuitem, int8_t line) { // Menu Creation and Drawing functions ====================================================== frame_rect_t selrect(frame_rect_t) { - if (HMI_IsChinese()) - return {133, 1, 28, 13}; - else - return{0}; + return HMI_IsChinese() ? frame_rect_t({ 133, 1, 28, 13 }) : frame_rect_t({ 0 }); } void Draw_Prepare_Menu() { @@ -3147,9 +3159,15 @@ void Draw_Move_Menu() { if (SET_MENU_R(MoveMenu, selrect({192, 1, 42, 14}), MSG_MOVE_AXIS, 6)) { BACK_ITEM(Draw_Prepare_Menu); EDIT_ITEM(ICON_Axis, MSG_LIVE_MOVE, onDrawChkbMenu, SetLiveMove, &EnableLiveMove); - EDIT_ITEM(ICON_MoveX, MSG_MOVE_X, onDrawMoveX, SetMoveX, ¤t_position.x); - EDIT_ITEM(ICON_MoveY, MSG_MOVE_Y, onDrawMoveY, SetMoveY, ¤t_position.y); - EDIT_ITEM(ICON_MoveZ, MSG_MOVE_Z, onDrawMoveZ, SetMoveZ, ¤t_position.z); + #if HAS_X_AXIS + EDIT_ITEM(ICON_MoveX, MSG_MOVE_X, onDrawMoveX, SetMoveX, ¤t_position.x); + #endif + #if HAS_Y_AXIS + EDIT_ITEM(ICON_MoveY, MSG_MOVE_Y, onDrawMoveY, SetMoveY, ¤t_position.y); + #endif + #if HAS_Z_AXIS + EDIT_ITEM(ICON_MoveZ, MSG_MOVE_Z, onDrawMoveZ, SetMoveZ, ¤t_position.z); + #endif #if HAS_HOTEND gcode.process_subcommands_now(F("G92E0")); // reset extruder position EDIT_ITEM(ICON_Extruder, MSG_MOVE_E, onDrawMoveE, SetMoveE, ¤t_position.e); @@ -3165,9 +3183,15 @@ void Draw_Move_Menu() { checkkey = Menu; if (SET_MENU(HomeOffMenu, MSG_SET_HOME_OFFSETS, 4)) { BACK_ITEM(Draw_PhySet_Menu); - EDIT_ITEM(ICON_HomeOffsetX, MSG_HOME_OFFSET_X, onDrawPFloatMenu, SetHomeOffsetX, &home_offset.x); - EDIT_ITEM(ICON_HomeOffsetY, MSG_HOME_OFFSET_Y, onDrawPFloatMenu, SetHomeOffsetY, &home_offset.y); - EDIT_ITEM(ICON_HomeOffsetZ, MSG_HOME_OFFSET_Z, onDrawPFloatMenu, SetHomeOffsetZ, &home_offset.z); + #if HAS_X_AXIS + EDIT_ITEM(ICON_HomeOffsetX, MSG_HOME_OFFSET_X, onDrawPFloatMenu, SetHomeOffsetX, &home_offset.x); + #endif + #if HAS_Y_AXIS + EDIT_ITEM(ICON_HomeOffsetY, MSG_HOME_OFFSET_Y, onDrawPFloatMenu, SetHomeOffsetY, &home_offset.y); + #endif + #if HAS_Z_AXIS + EDIT_ITEM(ICON_HomeOffsetZ, MSG_HOME_OFFSET_Z, onDrawPFloatMenu, SetHomeOffsetZ, &home_offset.z); + #endif } UpdateMenu(HomeOffMenu); } @@ -3180,9 +3204,15 @@ void Draw_Move_Menu() { checkkey = Menu; if (SET_MENU(ProbeSetMenu, MSG_ZPROBE_SETTINGS, 9)) { BACK_ITEM(Draw_AdvancedSettings_Menu); - EDIT_ITEM(ICON_ProbeOffsetX, MSG_ZPROBE_XOFFSET, onDrawPFloatMenu, SetProbeOffsetX, &probe.offset.x); - EDIT_ITEM(ICON_ProbeOffsetY, MSG_ZPROBE_YOFFSET, onDrawPFloatMenu, SetProbeOffsetY, &probe.offset.y); - EDIT_ITEM(ICON_ProbeOffsetZ, MSG_ZPROBE_ZOFFSET, onDrawPFloat2Menu, SetProbeOffsetZ, &probe.offset.z); + #if HAS_X_AXIS + EDIT_ITEM(ICON_ProbeOffsetX, MSG_ZPROBE_XOFFSET, onDrawPFloatMenu, SetProbeOffsetX, &probe.offset.x); + #endif + #if HAS_Y_AXIS + EDIT_ITEM(ICON_ProbeOffsetY, MSG_ZPROBE_YOFFSET, onDrawPFloatMenu, SetProbeOffsetY, &probe.offset.y); + #endif + #if HAS_Z_AXIS + EDIT_ITEM(ICON_ProbeOffsetZ, MSG_ZPROBE_ZOFFSET, onDrawPFloat2Menu, SetProbeOffsetZ, &probe.offset.z); + #endif #if ENABLED(BLTOUCH) MENU_ITEM(ICON_ProbeStow, MSG_MANUAL_STOW, onDrawMenuItem, ProbeStow); MENU_ITEM(ICON_ProbeDeploy, MSG_MANUAL_DEPLOY, onDrawMenuItem, ProbeDeploy); @@ -3431,7 +3461,7 @@ void Draw_Motion_Menu() { #define _Preheat_Menu(N) \ void Draw_Preheat## N ##_Menu() { \ - HMI_value.Select = N-1; \ + HMI_value.Select = (N) - 1; \ Draw_Preheat_Menu(SET_MENU(PreheatMenu, MSG_PREHEAT_## N ##_SETTINGS, 5)); \ } REPEAT_1(PREHEAT_COUNT, _Preheat_Menu) @@ -3463,9 +3493,15 @@ void Draw_MaxSpeed_Menu() { checkkey = Menu; if (SET_MENU_R(MaxSpeedMenu, selrect({1, 16, 28, 13}), MSG_MAX_SPEED, 5)) { BACK_ITEM(Draw_Motion_Menu); - EDIT_ITEM(ICON_MaxSpeedX, MSG_VMAX_A, onDrawMaxSpeedX, SetMaxSpeedX, &planner.settings.max_feedrate_mm_s[X_AXIS]); - EDIT_ITEM(ICON_MaxSpeedY, MSG_VMAX_B, onDrawMaxSpeedY, SetMaxSpeedY, &planner.settings.max_feedrate_mm_s[Y_AXIS]); - EDIT_ITEM(ICON_MaxSpeedZ, MSG_VMAX_C, onDrawMaxSpeedZ, SetMaxSpeedZ, &planner.settings.max_feedrate_mm_s[Z_AXIS]); + #if HAS_X_AXIS + EDIT_ITEM(ICON_MaxSpeedX, MSG_VMAX_A, onDrawMaxSpeedX, SetMaxSpeedX, &planner.settings.max_feedrate_mm_s[X_AXIS]); + #endif + #if HAS_Y_AXIS + EDIT_ITEM(ICON_MaxSpeedY, MSG_VMAX_B, onDrawMaxSpeedY, SetMaxSpeedY, &planner.settings.max_feedrate_mm_s[Y_AXIS]); + #endif + #if HAS_Z_AXIS + EDIT_ITEM(ICON_MaxSpeedZ, MSG_VMAX_C, onDrawMaxSpeedZ, SetMaxSpeedZ, &planner.settings.max_feedrate_mm_s[Z_AXIS]); + #endif #if HAS_HOTEND EDIT_ITEM(ICON_MaxSpeedE, MSG_VMAX_E, onDrawMaxSpeedE, SetMaxSpeedE, &planner.settings.max_feedrate_mm_s[E_AXIS]); #endif @@ -3477,9 +3513,15 @@ void Draw_MaxAccel_Menu() { checkkey = Menu; if (SET_MENU_R(MaxAccelMenu, selrect({1, 16, 28, 13}), MSG_AMAX_EN, 5)) { BACK_ITEM(Draw_Motion_Menu); - EDIT_ITEM(ICON_MaxAccX, MSG_AMAX_A, onDrawMaxAccelX, SetMaxAccelX, &planner.settings.max_acceleration_mm_per_s2[X_AXIS]); - EDIT_ITEM(ICON_MaxAccY, MSG_AMAX_B, onDrawMaxAccelY, SetMaxAccelY, &planner.settings.max_acceleration_mm_per_s2[Y_AXIS]); - EDIT_ITEM(ICON_MaxAccZ, MSG_AMAX_C, onDrawMaxAccelZ, SetMaxAccelZ, &planner.settings.max_acceleration_mm_per_s2[Z_AXIS]); + #if HAS_X_AXIS + EDIT_ITEM(ICON_MaxAccX, MSG_AMAX_A, onDrawMaxAccelX, SetMaxAccelX, &planner.settings.max_acceleration_mm_per_s2[X_AXIS]); + #endif + #if HAS_Y_AXIS + EDIT_ITEM(ICON_MaxAccY, MSG_AMAX_B, onDrawMaxAccelY, SetMaxAccelY, &planner.settings.max_acceleration_mm_per_s2[Y_AXIS]); + #endif + #if HAS_Z_AXIS + EDIT_ITEM(ICON_MaxAccZ, MSG_AMAX_C, onDrawMaxAccelZ, SetMaxAccelZ, &planner.settings.max_acceleration_mm_per_s2[Z_AXIS]); + #endif #if HAS_HOTEND EDIT_ITEM(ICON_MaxAccE, MSG_AMAX_E, onDrawMaxAccelE, SetMaxAccelE, &planner.settings.max_acceleration_mm_per_s2[E_AXIS]); #endif @@ -3493,9 +3535,15 @@ void Draw_MaxAccel_Menu() { checkkey = Menu; if (SET_MENU_R(MaxJerkMenu, selrect({1, 16, 28, 13}), MSG_JERK, 5)) { BACK_ITEM(Draw_Motion_Menu); - EDIT_ITEM(ICON_MaxSpeedJerkX, MSG_VA_JERK, onDrawMaxJerkX, SetMaxJerkX, &planner.max_jerk.x); - EDIT_ITEM(ICON_MaxSpeedJerkY, MSG_VB_JERK, onDrawMaxJerkY, SetMaxJerkY, &planner.max_jerk.y); - EDIT_ITEM(ICON_MaxSpeedJerkZ, MSG_VC_JERK, onDrawMaxJerkZ, SetMaxJerkZ, &planner.max_jerk.z); + #if HAS_X_AXIS + EDIT_ITEM(ICON_MaxSpeedJerkX, MSG_VA_JERK, onDrawMaxJerkX, SetMaxJerkX, &planner.max_jerk.x); + #endif + #if HAS_Y_AXIS + EDIT_ITEM(ICON_MaxSpeedJerkY, MSG_VB_JERK, onDrawMaxJerkY, SetMaxJerkY, &planner.max_jerk.y); + #endif + #if HAS_Z_AXIS + EDIT_ITEM(ICON_MaxSpeedJerkZ, MSG_VC_JERK, onDrawMaxJerkZ, SetMaxJerkZ, &planner.max_jerk.z); + #endif #if HAS_HOTEND EDIT_ITEM(ICON_MaxSpeedJerkE, MSG_VE_JERK, onDrawMaxJerkE, SetMaxJerkE, &planner.max_jerk.e); #endif @@ -3509,9 +3557,15 @@ void Draw_Steps_Menu() { checkkey = Menu; if (SET_MENU_R(StepsMenu, selrect({1, 16, 28, 13}), MSG_STEPS_PER_MM, 5)) { BACK_ITEM(Draw_Motion_Menu); - EDIT_ITEM(ICON_StepX, MSG_A_STEPS, onDrawStepsX, SetStepsX, &planner.settings.axis_steps_per_mm[X_AXIS]); - EDIT_ITEM(ICON_StepY, MSG_B_STEPS, onDrawStepsY, SetStepsY, &planner.settings.axis_steps_per_mm[Y_AXIS]); - EDIT_ITEM(ICON_StepZ, MSG_C_STEPS, onDrawStepsZ, SetStepsZ, &planner.settings.axis_steps_per_mm[Z_AXIS]); + #if HAS_X_AXIS + EDIT_ITEM(ICON_StepX, MSG_A_STEPS, onDrawStepsX, SetStepsX, &planner.settings.axis_steps_per_mm[X_AXIS]); + #endif + #if HAS_Y_AXIS + EDIT_ITEM(ICON_StepY, MSG_B_STEPS, onDrawStepsY, SetStepsY, &planner.settings.axis_steps_per_mm[Y_AXIS]); + #endif + #if HAS_Z_AXIS + EDIT_ITEM(ICON_StepZ, MSG_C_STEPS, onDrawStepsZ, SetStepsZ, &planner.settings.axis_steps_per_mm[Z_AXIS]); + #endif #if HAS_HOTEND EDIT_ITEM(ICON_StepE, MSG_E_STEPS, onDrawStepsE, SetStepsE, &planner.settings.axis_steps_per_mm[E_AXIS]); #endif @@ -3624,9 +3678,15 @@ void Draw_Steps_Menu() { if (SET_MENU(HomingMenu, MSG_HOMING, 6)) { BACK_ITEM(Draw_Prepare_Menu); MENU_ITEM(ICON_Homing, MSG_AUTO_HOME, onDrawMenuItem, AutoHome); - MENU_ITEM(ICON_HomeX, MSG_AUTO_HOME_X, onDrawMenuItem, HomeX); - MENU_ITEM(ICON_HomeY, MSG_AUTO_HOME_Y, onDrawMenuItem, HomeY); - MENU_ITEM(ICON_HomeZ, MSG_AUTO_HOME_Z, onDrawMenuItem, HomeZ); + #if HAS_X_AXIS + MENU_ITEM(ICON_HomeX, MSG_AUTO_HOME_X, onDrawMenuItem, HomeX); + #endif + #if HAS_Y_AXIS + MENU_ITEM(ICON_HomeY, MSG_AUTO_HOME_Y, onDrawMenuItem, HomeY); + #endif + #if HAS_Z_AXIS + MENU_ITEM(ICON_HomeZ, MSG_AUTO_HOME_Z, onDrawMenuItem, HomeZ); + #endif #if ENABLED(MESH_BED_LEVELING) EDIT_ITEM(ICON_ZAfterHome, MSG_Z_AFTER_HOME, onDrawPInt8Menu, SetZAfterHoming, &HMI_data.z_after_homing); #endif diff --git a/Marlin/src/lcd/e3v2/proui/dwin.h b/Marlin/src/lcd/e3v2/proui/dwin.h index 26b77da5fb..0057a86392 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.h +++ b/Marlin/src/lcd/e3v2/proui/dwin.h @@ -33,6 +33,7 @@ #include "dwin_defines.h" #include "dwinui.h" #include "../common/encoder.h" +#include "../common/limits.h" #include "../../../libs/BL24CXX.h" #if EITHER(BABYSTEPPING, HAS_BED_PROBE) From 51fbe03016ffab690c336f814ff39ad0cb3b2164 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 18 May 2023 06:06:02 +0000 Subject: [PATCH 452/659] [cron] Bump distribution date (2023-05-18) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 1c01b9cc32..d750fb9fa4 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-17" +//#define STRING_DISTRIBUTION_DATE "2023-05-18" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index f3e8162cc8..f1b231143e 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-17" + #define STRING_DISTRIBUTION_DATE "2023-05-18" #endif /** From 74a6f5961bc82ef5887ddb7407a8798dc282b2c5 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 18 May 2023 03:03:54 -0500 Subject: [PATCH 453/659] =?UTF-8?q?=F0=9F=94=A8=20Fix=20Windows=20path=20b?= =?UTF-8?q?ackslash=20treated=20as=20escape?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Luc <8822552+luc-github@users.noreply.github.com> --- .../share/PlatformIO/scripts/common-dependencies.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.py b/buildroot/share/PlatformIO/scripts/common-dependencies.py index aa531be296..e90ba24dd3 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.py +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.py @@ -55,10 +55,11 @@ if pioutil.is_pio_build(): # Get a reference to the FEATURE_CONFIG under construction feat = FEATURE_CONFIG[feature] - # Split up passed lines on commas or newlines and iterate - # Add common options to the features config under construction - # For lib_deps replace a previous instance of the same library - atoms = re.sub(r',\s*', '\n', flines).strip().split('\n') + # Split up passed lines on commas or newlines and iterate. + # Take care to convert Windows '\' paths to Unix-style '/'. + # Add common options to the features config under construction. + # For lib_deps replace a previous instance of the same library. + atoms = re.sub(r',\s*', '\n', flines.replace('\\', '/')).strip().split('\n') for line in atoms: parts = line.split('=') name = parts.pop(0) From a886906f01d44e56d249de1f37a11342697b465c Mon Sep 17 00:00:00 2001 From: I3DBeeTech <129617321+I3DBeeTech@users.noreply.github.com> Date: Thu, 18 May 2023 13:53:29 +0530 Subject: [PATCH 454/659] =?UTF-8?q?=E2=9C=A8=20I3DBEEZ9=20board=20(#25614)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test-builds.yml | 3 +- Marlin/src/core/boards.h | 1 + Marlin/src/pins/pins.h | 2 + Marlin/src/pins/stm32f4/pins_I3DBEEZ9.h | 626 ++++++++++++++++++ .../PlatformIO/boards/marlin_I3DBEEZ9.json | 46 ++ .../variants/MARLIN_I3DBEEZ9/PeripheralPins.c | 370 +++++++++++ .../variants/MARLIN_I3DBEEZ9/PinNamesVar.h | 50 ++ .../variants/MARLIN_I3DBEEZ9/hal_conf_extra.h | 52 ++ .../variants/MARLIN_I3DBEEZ9/ldscript.ld | 204 ++++++ .../variants/MARLIN_I3DBEEZ9/variant.cpp | 260 ++++++++ .../variants/MARLIN_I3DBEEZ9/variant.h | 323 +++++++++ buildroot/tests/I3DBEEZ9_V1 | 33 + ini/stm32f4.ini | 11 + 13 files changed, 1980 insertions(+), 1 deletion(-) create mode 100644 Marlin/src/pins/stm32f4/pins_I3DBEEZ9.h create mode 100644 buildroot/share/PlatformIO/boards/marlin_I3DBEEZ9.json create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/PeripheralPins.c create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/PinNamesVar.h create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/hal_conf_extra.h create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/ldscript.ld create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/variant.cpp create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/variant.h create mode 100755 buildroot/tests/I3DBEEZ9_V1 diff --git a/.github/workflows/test-builds.yml b/.github/workflows/test-builds.yml index fcda1111cb..dea1a4e176 100644 --- a/.github/workflows/test-builds.yml +++ b/.github/workflows/test-builds.yml @@ -39,11 +39,11 @@ jobs: # AVR - mega2560 + - mega1280 - at90usb1286_dfu # AVR Extended - FYSETC_F6 - - mega1280 - melzi_optiboot - rambo - sanguino1284p @@ -109,6 +109,7 @@ jobs: - rumba32 - STM32F401RC_creality - STM32F407VE_black + - I3DBEEZ9_V1 # STM32F7 - NUCLEO_F767ZI diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index 3820ef8a07..742cf8f236 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -452,6 +452,7 @@ #define BOARD_TRONXY_V10 5245 // TRONXY V10 (STM32F446ZE) #define BOARD_CREALITY_F401RE 5246 // Creality CR4NS200141C13 (STM32F401RE) as found in the Ender-5 S1 #define BOARD_BLACKPILL_CUSTOM 5247 // Custom board based on STM32F401CDU6. +#define BOARD_I3DBEEZ9_V1 5248 // I3DBEEZ9 V1 (STM32F407ZG) // // ARM Cortex-M7 diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 369506a748..5118700533 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -794,6 +794,8 @@ #include "stm32f4/pins_CREALITY_F401.h" // STM32F4 env:STM32F401RE_creality #elif MB(BLACKPILL_CUSTOM) #include "stm32f4/pins_BLACKPILL_CUSTOM.h" // STM32F4 env:STM32F401CD_blackpill_stlink +#elif MB(I3DBEEZ9_V1) + #include "stm32f4/pins_I3DBEEZ9.h" // STM32F4 env:I3DBEEZ9_V1 // // ARM Cortex M7 diff --git a/Marlin/src/pins/stm32f4/pins_I3DBEEZ9.h b/Marlin/src/pins/stm32f4/pins_I3DBEEZ9.h new file mode 100644 index 0000000000..a7ad18c8dc --- /dev/null +++ b/Marlin/src/pins/stm32f4/pins_I3DBEEZ9.h @@ -0,0 +1,626 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "env_validate.h" + +#if HOTENDS > 3 || E_STEPPERS > 3 + #error "I3DBEEZ9 supports up to 3 hotends / E-steppers." +#endif + +#define BOARD_INFO_NAME "3DBEE_Z9 V1.0" + +#define USES_DIAG_JUMPERS + +//#define MOTOR_EXPANSION + +#if BOTH(HAS_WIRED_LCD, MOTOR_EXPANSION) + #if EITHER(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) + #define EXP_MOT_USE_EXP2_ONLY 1 + #else + #error "You can't use both an LCD and a Motor Expansion Module on EXP1/EXP2 at the same time." + #endif +#endif + +// Use one of these or SDCard-based Emulation will be used +#if NO_EEPROM_SELECTED + //#define SRAM_EEPROM_EMULATION // Use BackSRAM-based EEPROM emulation + #define FLASH_EEPROM_EMULATION // Use Flash-based EEPROM emulation +#endif + +#if ENABLED(FLASH_EEPROM_EMULATION) + // Decrease delays and flash wear by spreading writes across the + // 128 kB sector allocated for EEPROM emulation. + #define FLASH_EEPROM_LEVELING +#endif + +#define HAS_OTG_USB_HOST_SUPPORT // USB Flash Drive support + +// +// Servos +// +#define SERVO0_PIN PA1 +#define SERVO1_PIN PC9 + +// +// Trinamic Stallguard pins +// +#define X_DIAG_PIN PB10 // X- +#define Y_DIAG_PIN PE12 // Y- +#define Z_DIAG_PIN PG8 // Z- +#define E0_DIAG_PIN PE15 // E0 +#define E1_DIAG_PIN PE10 // E1 +#define E2_DIAG_PIN PG5 // E2 +#define E3_DIAG_PIN PD0 // E3 +#define E4_DIAG_PIN PD6 // E4 +#define E5_DIAG_PIN PD1 // E5 + +// +// Limit Switches +// +#ifdef X_STALL_SENSITIVITY + #define X_STOP_PIN X_DIAG_PIN + #if X_HOME_TO_MIN + #define X_MAX_PIN PE15 // E0 + #else + #define X_MIN_PIN PE15 // E0 + #endif +#else + #define X_MIN_PIN PB10 // X- + #define X_MAX_PIN PE15 // E0 +#endif + +#ifdef Y_STALL_SENSITIVITY + #define Y_STOP_PIN Y_DIAG_PIN + #if Y_HOME_TO_MIN + #define Y_MAX_PIN PE10 // E1 + #else + #define Y_MIN_PIN PE10 // E1 + #endif +#else + #define Y_MIN_PIN PE12 // Y- + #define Y_MAX_PIN PE10 // E1 +#endif + +#ifdef Z_STALL_SENSITIVITY + #define Z_STOP_PIN Z_DIAG_PIN + #if Z_HOME_TO_MIN + #define Z_MAX_PIN PG5 // E2 + #else + #define Z_MIN_PIN PG5 // E2 + #endif +#else + #define Z_MIN_PIN PG8 // Z- + #define Z_MAX_PIN PG5 // E2 +#endif + +#ifdef Z2_STALL_SENSITIVITY + #define Z2_STOP_PIN E1_DIAG_PIN + #if Z2_HOME_TO_MIN + #define Z2_MAX_PIN PD0 // E3 + #else + #define Z2_MIN_PIN PD0 // E3 + #endif +#else + #define Z2_MIN_PIN PD0 // Z2- [E3] + #define Z2_MAX_PIN PD6 // E4 +#endif + +// +// Z Probe must be this pin +// +#ifndef Z_MIN_PROBE_PIN + #define Z_MIN_PROBE_PIN PA2 +#endif + +// +// Filament Runout Sensor +// +#ifndef FIL_RUNOUT_PIN + #define FIL_RUNOUT_PIN PE15 +#endif +#ifndef FIL_RUNOUT2_PIN + #define FIL_RUNOUT2_PIN PE10 +#endif +#ifndef FIL_RUNOUT3_PIN + #define FIL_RUNOUT3_PIN PG5 +#endif +#ifndef FIL_RUNOUT4_PIN + #define FIL_RUNOUT4_PIN PD0 +#endif +#ifndef FIL_RUNOUT5_PIN + #define FIL_RUNOUT5_PIN PD6 +#endif +#ifndef FIL_RUNOUT6_PIN + #define FIL_RUNOUT6_PIN PD1 +#endif + +// +// Steppers +// +#define X_STEP_PIN PE9 +#define X_DIR_PIN PF1 +#define X_ENABLE_PIN PF2 +#ifndef X_CS_PIN + #define X_CS_PIN PA15 +#endif + +#define Y_STEP_PIN PE11 +#define Y_DIR_PIN PE1 +#define Y_ENABLE_PIN PD7 +#ifndef Y_CS_PIN + #define Y_CS_PIN PB8 +#endif + +#define Z_STEP_PIN PE13 +#define Z_DIR_PIN PC2 +#define Z_ENABLE_PIN PC0 +#ifndef Z_CS_PIN + #define Z_CS_PIN PB9 +#endif + +#define E0_STEP_PIN PE14 +#define E0_DIR_PIN PA0 +#define E0_ENABLE_PIN PC3 +#ifndef E0_CS_PIN + #define E0_CS_PIN PB3 +#endif + +#define E1_STEP_PIN PD15 +#define E1_DIR_PIN PE7 +#define E1_ENABLE_PIN PA3 +#ifndef E1_CS_PIN + #define E1_CS_PIN PG15 +#endif + +#define E2_STEP_PIN PD13 +#define E2_DIR_PIN PG9 +#define E2_ENABLE_PIN PF0 +#ifndef E2_CS_PIN + #define E2_CS_PIN PG12 +#endif + +#define E3_STEP_PIN PE4 +#define E3_DIR_PIN PE3 +#define E3_ENABLE_PIN PC13 +#ifndef E3_CS_PIN + #define E3_CS_PIN PE2 +#endif + +#define E4_STEP_PIN PG14 +#define E4_DIR_PIN PG13 +#define E4_ENABLE_PIN PE0 +#ifndef E4_CS_PIN + #define E4_CS_PIN PG11 +#endif + +#define E5_STEP_PIN PD4 +#define E5_DIR_PIN PD3 +#define E5_ENABLE_PIN PD5 +#ifndef E5_CS_PIN + #define E5_CS_PIN PD2 +#endif + +// +// SPI pins for TMC2130 stepper drivers +// +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PC12 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PC11 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PC10 +#endif + +#if HAS_TMC_UART + /** + * TMC2208/TMC2209 stepper drivers + * + * Hardware serial communication ports. + * If undefined software serial is used according to the pins below + */ + //#define X_HARDWARE_SERIAL Serial1 + //#define X2_HARDWARE_SERIAL Serial1 + //#define Y_HARDWARE_SERIAL Serial1 + //#define Y2_HARDWARE_SERIAL Serial1 + //#define Z_HARDWARE_SERIAL Serial1 + //#define Z2_HARDWARE_SERIAL Serial1 + //#define E0_HARDWARE_SERIAL Serial1 + //#define E1_HARDWARE_SERIAL Serial1 + //#define E2_HARDWARE_SERIAL Serial1 + //#define E3_HARDWARE_SERIAL Serial1 + //#define E4_HARDWARE_SERIAL Serial1 + + #define X_SERIAL_TX_PIN PA15 + #define X_SERIAL_RX_PIN X_SERIAL_TX_PIN + + #define Y_SERIAL_TX_PIN PB8 + #define Y_SERIAL_RX_PIN Y_SERIAL_TX_PIN + + #define Z_SERIAL_TX_PIN PB9 + #define Z_SERIAL_RX_PIN Z_SERIAL_TX_PIN + + #define E0_SERIAL_TX_PIN PB3 + #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN + + #define E1_SERIAL_TX_PIN PG15 + #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN + + #define E2_SERIAL_TX_PIN PG12 + #define E2_SERIAL_RX_PIN E2_SERIAL_TX_PIN + + #define E3_SERIAL_TX_PIN PE2 + #define E3_SERIAL_RX_PIN E3_SERIAL_TX_PIN + + #define E4_SERIAL_TX_PIN PG11 + #define E4_SERIAL_RX_PIN E4_SERIAL_TX_PIN + + #define E5_SERIAL_TX_PIN PD2 + #define E5_SERIAL_RX_PIN E5_SERIAL_TX_PIN + + // Reduce baud rate to improve software serial reliability + #define TMC_BAUD_RATE 19200 +#endif + +// +// Temperature Sensors +// Use ADC pins without pullup for sensors that don't need a pullup. +// +#if TEMP_SENSOR_0_IS_AD8495 || TEMP_SENSOR_0 == 20 + #define TEMP_0_PIN PF8 +#else + #define TEMP_0_PIN PF4 // T1 <-> E0 +#endif +#if TEMP_SENSOR_1_IS_AD8495 || TEMP_SENSOR_1 == 20 + #define TEMP_1_PIN PF9 +#else + #define TEMP_1_PIN PF5 // T2 <-> E1 +#endif +#if TEMP_SENSOR_2_IS_AD8495 || TEMP_SENSOR_2 == 20 + #define TEMP_2_PIN PF10 +#else + #define TEMP_2_PIN PF6 // T3 <-> E2 +#endif +#if TEMP_SENSOR_BED_IS_AD8495 || TEMP_SENSOR_BED == 20 + #define TEMP_BED_PIN PF7 +#else + #define TEMP_BED_PIN PF3 // T0 <-> Bed +#endif + +#if TEMP_SENSOR_PROBE && !defined(TEMP_PROBE_PIN) + #if TEMP_SENSOR_PROBE_IS_AD8495 || TEMP_SENSOR_PROBE == 20 + #if HOTENDS == 2 + #define TEMP_PROBE_PIN PF10 + #elif HOTENDS < 2 + #define TEMP_PROBE_PIN PF9 + #endif + #else + #if HOTENDS == 2 + #define TEMP_PROBE_PIN TEMP_2_PIN + #elif HOTENDS < 2 + #define TEMP_PROBE_PIN TEMP_1_PIN + #endif + #endif +#endif + +#if TEMP_SENSOR_CHAMBER && !defined(TEMP_CHAMBER_PIN) + #if TEMP_SENSOR_CHAMBER_IS_AD8495 || TEMP_SENSOR_CHAMBER == 20 + #define TEMP_CHAMBER_PIN PF10 + #else + #define TEMP_CHAMBER_PIN TEMP_2_PIN + #endif +#endif + +// +// Heaters +// +#define HEATER_0_PIN PB1 // Heater0 +#define HEATER_1_PIN PD14 // Heater1 +#if TEMP_SENSOR_CHAMBER && HOTENDS < 3 + #define HEATER_CHAMBER_PIN PB0 // Heater2 +#else + #define HEATER_2_PIN PB0 // Heater2 +#endif +#define HEATER_BED_PIN PD12 // Hotbed + +// +// Fans +// +#define FAN0_PIN PC8 // Fan0 +#define FAN1_PIN PE5 // Fan1 + +#ifndef E0_AUTO_FAN_PIN + #define E0_AUTO_FAN_PIN FAN1_PIN +#endif + +#if !defined(CONTROLLER_FAN_PIN) && ENABLED(USE_CONTROLLER_FAN) && HOTENDS < 2 + #define CONTROLLER_FAN_PIN PE6 // Fan2 +#else + #define FAN2_PIN PE6 // Fan2 +#endif + +// +// Misc. Functions +// + +#ifndef SDCARD_CONNECTION + #define SDCARD_CONNECTION ONBOARD +#endif + +/** ------ ------ + * (BEEPER) PG4 | 1 2 | PA8 (BTN_ENC) (MISO) PB14 | 1 2 | PB13 (SCK) + * (LCD_EN) PD11 | 3 4 | PD10 (LCD_RS) (BTN_EN1) PG10 | 3 4 | PB12 (SD_SS) + * (LCD_D4) PG2 5 6 | PG3 (LCD_D5) (BTN_EN2) PF11 5 6 | PB15 (MOSI) + * (LCD_D6) PG6 | 7 8 | PG7 (LCD_D7) (SD_DETECT) PF12 | 7 8 | RESET + * GND | 9 10 | 5V GND | 9 10 | -- + * ------ ------ + * EXP1 EXP2 + */ +#define EXP1_01_PIN PG4 +#define EXP1_02_PIN PA8 +#define EXP1_03_PIN PD11 +#define EXP1_04_PIN PD10 +#define EXP1_05_PIN PG2 +#define EXP1_06_PIN PG3 +#define EXP1_07_PIN PG6 +#define EXP1_08_PIN PG7 + +#define EXP2_01_PIN PB14 +#define EXP2_02_PIN PB13 +#define EXP2_03_PIN PG10 +#define EXP2_04_PIN PB12 +#define EXP2_05_PIN PF11 +#define EXP2_06_PIN PB15 +#define EXP2_07_PIN PF12 +#define EXP2_08_PIN -1 + +// +// Onboard SD card +// Must use soft SPI because Marlin's default hardware SPI is tied to LCD's EXP2 +// +#if SD_CONNECTION_IS(LCD) + + #define SD_DETECT_PIN EXP2_07_PIN + #define SDSS EXP2_04_PIN + +#elif SD_CONNECTION_IS(ONBOARD) + + // The I3DBEEZ9's ONBOARD SD interface is on SPI1. + // Due to a pull resistor on the clock line, it needs to use SPI Data Mode 3 to + // function with Hardware SPI. This is not currently configurable in the HAL, + // so force Software SPI to work around this issue. + #define SOFTWARE_SPI + #define SDSS PA4 + #define SD_SCK_PIN PA5 + #define SD_MISO_PIN PA6 + #define SD_MOSI_PIN PB5 + #define SD_DETECT_PIN PB11 + +#elif SD_CONNECTION_IS(CUSTOM_CABLE) + #error "CUSTOM_CABLE is not a supported SDCARD_CONNECTION for this board" +#endif + +#if ENABLED(MOTOR_EXPANSION) + /** ----- ----- + * -- | . . | GND -- | . . | GND + * -- | . . | M1EN M2EN | . . | M3EN + * M1STP | . . M1DIR M1RX | . . M1DIAG + * M2DIR | . . | M2STP M2RX | . . | M2DIAG + * M3DIR | . . | M3STP M3RX | . . | M3DIAG + * ----- ----- + * EXP2 EXP1 + * + * NB In EXP_MOT_USE_EXP2_ONLY mode EXP1 is not used and M2EN and M3EN need to be jumpered to M1EN + */ + + // M1 on Driver Expansion Module + #define E6_STEP_PIN EXP2_06_PIN + #define E6_DIR_PIN EXP2_05_PIN + #define E6_ENABLE_PIN EXP2_07_PIN + #if !EXP_MOT_USE_EXP2_ONLY + #define E6_DIAG_PIN EXP1_05_PIN + #define E6_CS_PIN EXP1_06_PIN + #if HAS_TMC_UART + #define E6_SERIAL_TX_PIN EXP1_06_PIN + #define E6_SERIAL_RX_PIN EXP1_06_PIN + #endif + #endif + + // M2 on Driver Expansion Module + #define E7_STEP_PIN EXP2_03_PIN + #define E7_DIR_PIN EXP2_04_PIN + #if !EXP_MOT_USE_EXP2_ONLY + #define E7_ENABLE_PIN EXP1_08_PIN + #define E7_DIAG_PIN EXP1_03_PIN + #define E7_CS_PIN EXP1_04_PIN + #if HAS_TMC_UART + #define E7_SERIAL_TX_PIN EXP1_04_PIN + #define E7_SERIAL_RX_PIN EXP1_04_PIN + #endif + #else + #define E7_ENABLE_PIN EXP2_07_PIN + #endif + + // M3 on Driver Expansion Module + #define E8_STEP_PIN EXP2_01_PIN + #define E8_DIR_PIN EXP2_02_PIN + #if !EXP_MOT_USE_EXP2_ONLY + #define E8_ENABLE_PIN EXP1_07_PIN + #define E8_DIAG_PIN EXP1_01_PIN + #define E8_CS_PIN EXP1_02_PIN + #if HAS_TMC_UART + #define E8_SERIAL_TX_PIN EXP1_02_PIN + #define E8_SERIAL_RX_PIN EXP1_02_PIN + #endif + #else + #define E8_ENABLE_PIN EXP2_07_PIN + #endif + +#endif + +// +// LCDs and Controllers +// +#if IS_TFTGLCD_PANEL + + #if ENABLED(TFTGLCD_PANEL_SPI) + #define TFTGLCD_CS EXP2_03_PIN + #endif + +#elif HAS_WIRED_LCD + + #define BEEPER_PIN EXP1_01_PIN + #define BTN_ENC EXP1_02_PIN + + #if ENABLED(CR10_STOCKDISPLAY) + + #define LCD_PINS_RS EXP1_07_PIN + + #define BTN_EN1 EXP1_03_PIN + #define BTN_EN2 EXP1_05_PIN + + #define LCD_PINS_EN EXP1_08_PIN + #define LCD_PINS_D4 EXP1_06_PIN + + #elif ENABLED(MKS_MINI_12864) + + #define DOGLCD_A0 EXP1_07_PIN + #define DOGLCD_CS EXP1_06_PIN + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #elif ENABLED(WYH_L12864) + + #ifndef NO_CONTROLLER_CUSTOM_WIRING_WARNING + #error "CAUTION! WYH_L12864 requires wiring modifications. See 'pins_I3DBEEZ9.h' for details. (Define NO_CONTROLLER_CUSTOM_WIRING_WARNING to suppress this warning.)" + #endif + + /** + * 1. Cut the tab off the LCD connector so it can be plugged into the "EXP1" connector the other way. + * 2. Swap the LCD's +5V (Pin2) and GND (Pin1) wires. + * + * !!! If you are unsure, ask for help! Your motherboard may be damaged in some circumstances !!! + * + * The WYH_L12864 connector plug: + * + * BEFORE AFTER + * ------ ------ + * -- | 1 2 | MOSI -- | 1 2 | MOSI + * BTN_ENC | 3 4 | SCK BTN_ENC | 3 4 | SCK + * BTN_EN1 | 5 6 SID BTN_EN1 | 5 6 SID + * BTN_EN2 | 7 8 | CS BTN_EN2 | 7 8 | CS + * 5V | 9 10 | GND GND | 9 10 | 5V + * ------ ------ + * LCD LCD + */ + #undef BEEPER_PIN + #undef BTN_ENC + #define BTN_EN1 EXP1_05_PIN + #define BTN_EN2 EXP1_07_PIN + #define BTN_ENC EXP1_03_PIN + #define DOGLCD_CS EXP1_08_PIN + #define DOGLCD_A0 EXP1_06_PIN + #define DOGLCD_SCK EXP1_04_PIN + #define DOGLCD_MOSI EXP1_02_PIN + #define LCD_BACKLIGHT_PIN -1 + + #else + + #define LCD_PINS_RS EXP1_04_PIN + + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #define LCD_PINS_EN EXP1_03_PIN + #define LCD_PINS_D4 EXP1_05_PIN + + #if ENABLED(FYSETC_MINI_12864) + #define DOGLCD_CS EXP1_03_PIN + #define DOGLCD_A0 EXP1_04_PIN + //#define LCD_BACKLIGHT_PIN -1 + #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. + #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #ifndef RGB_LED_R_PIN + #define RGB_LED_R_PIN EXP1_06_PIN + #endif + #ifndef RGB_LED_G_PIN + #define RGB_LED_G_PIN EXP1_07_PIN + #endif + #ifndef RGB_LED_B_PIN + #define RGB_LED_B_PIN EXP1_08_PIN + #endif + #elif ENABLED(FYSETC_MINI_12864_2_1) + #define NEOPIXEL_PIN EXP1_06_PIN + #endif + #endif // !FYSETC_MINI_12864 + + #if IS_ULTIPANEL + #define LCD_PINS_D5 EXP1_06_PIN + #define LCD_PINS_D6 EXP1_07_PIN + #define LCD_PINS_D7 EXP1_08_PIN + + #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define BTN_ENC_EN LCD_PINS_D7 // Detect the presence of the encoder + #endif + + #endif + + #endif + +#endif // HAS_WIRED_LCD + +// Alter timing for graphical display +#if IS_U8GLIB_ST7920 + #ifndef BOARD_ST7920_DELAY_1 + #define BOARD_ST7920_DELAY_1 125 + #endif + #ifndef BOARD_ST7920_DELAY_2 + #define BOARD_ST7920_DELAY_2 90 + #endif + #ifndef BOARD_ST7920_DELAY_3 + #define BOARD_ST7920_DELAY_3 600 + #endif +#endif + +#if ENABLED(WIFISUPPORT) + // + // WIFI + // + + /** + * ------ + * RX | 8 7 | 3.3V GPIO0 PF14 ... Leave as unused (ESP3D software configures this with a pullup so OK to leave as floating) + * GPIO0 | 6 5 | Reset GPIO2 PF15 ... must be high (ESP3D software configures this with a pullup so OK to leave as floating) + * GPIO2 | 4 3 | Enable Reset PG0 ... active low, probably OK to leave floating + * GND | 2 1 | TX Enable PG1 ... Must be high for module to run + * ------ + * W1 + */ + #define ESP_WIFI_MODULE_COM 6 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this + #define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 + #define ESP_WIFI_MODULE_RESET_PIN PG0 + #define ESP_WIFI_MODULE_ENABLE_PIN PG1 + #define ESP_WIFI_MODULE_GPIO0_PIN PF14 + #define ESP_WIFI_MODULE_GPIO2_PIN PF15 +#endif diff --git a/buildroot/share/PlatformIO/boards/marlin_I3DBEEZ9.json b/buildroot/share/PlatformIO/boards/marlin_I3DBEEZ9.json new file mode 100644 index 0000000000..0f0927d28e --- /dev/null +++ b/buildroot/share/PlatformIO/boards/marlin_I3DBEEZ9.json @@ -0,0 +1,46 @@ +{ + "build": { + "core": "stm32", + "cpu": "cortex-m4", + "extra_flags": "-DSTM32F4 -DSTM32F407xx -DSTM32F40_41xxx", + "f_cpu": "168000000L", + "hwids": [ + [ + "0x1EAF", + "0x0003" + ], + [ + "0x0483", + "0x3748" + ] + ], + "mcu": "stm32f407zgt6", + "variant": "MARLIN_I3DBEEZ9" + }, + "debug": { + "jlink_device": "STM32F407ZG", + "openocd_target": "stm32f4x", + "svd_path": "STM32F40x.svd" + }, + "frameworks": [ + "arduino" + ], + "name": "STM32F407ZG (192k RAM. 1024k Flash)", + "upload": { + "disable_flushing": false, + "maximum_ram_size": 196608, + "maximum_size": 1048576, + "protocol": "stlink", + "protocols": [ + "stlink", + "dfu", + "jlink" + ], + "offset_address": "0x8008000", + "require_upload_port": true, + "use_1200bps_touch": false, + "wait_for_upload_port": false + }, + "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32f407zg.html", + "vendor": "Generic" +} diff --git a/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/PeripheralPins.c new file mode 100644 index 0000000000..4ea275d4cf --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/PeripheralPins.c @@ -0,0 +1,370 @@ +/* + ******************************************************************************* + * Copyright (c) 2019, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + * Automatically generated from STM32F407Z(E-G)Tx.xml + */ +#include +#include + +/* ===== + * Note: Commented lines are alternative possibilities which are not used by default. + * If you change them, you should know what you're doing first. + * ===== + */ + +//*** ADC *** + +#ifdef HAL_ADC_MODULE_ENABLED +const PinMap PinMap_ADC[] = { + {PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC1_IN0 E0_DIR + {PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1 BLTOUCH_2 + {PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2 BLTOUCH_4 + {PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3 E1_EN + {PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4 TF_SS + {PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5 TF_SCLK + {PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6 TF_MISO + {PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7 LED + {PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8 HEATER2 + {PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9 HEATER0 + {PC_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10 Z_EN + {PC_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11 EXP_14 + {PC_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_IN12 Z_DIR + {PC_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13 E0_EN + {PC_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14 EXP_8 + {PC_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15 EXP_7 + + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio, 24 ADC + {PF_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC3_IN9 TH_0 + {PF_4, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC3_IN14 TH_1 + {PF_5, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC3_IN15 TH_2 + {PF_6, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC3_IN4 TH_3 + {PF_7, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC3_IN5 EXP_13 + {PF_8, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC3_IN6 EXP_3 + {PF_9, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC3_IN7 EXP_6 + {PF_10, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC3_IN8 EXP_5 + #endif + {NC, NP, 0} +}; +#endif + +//*** DAC *** + +#ifdef HAL_DAC_MODULE_ENABLED +const PinMap PinMap_DAC[] = { + {PA_4, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC_OUT1 + {PA_5, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC_OUT2 + {NC, NP, 0} +}; +#endif + +//*** I2C *** + +#ifdef HAL_I2C_MODULE_ENABLED +const PinMap PinMap_I2C_SDA[] = { + {PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PC_9, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + #if STM32F4X_PIN_NUM >= 144 // 144 pins mcu, 114 gpio + #if STM32F4X_PIN_NUM >= 176 + {PH_5, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PH_8, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + #else + {PF_0, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + #endif + #endif + {NC, NP, 0} +}; + +const PinMap PinMap_I2C_SCL[] = { + {PA_8, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + {PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + #if STM32F4X_PIN_NUM >= 144 // 144 pins mcu, 114 gpio + #if STM32F4X_PIN_NUM >= 176 + //{PF_1, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PH_4, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PH_7, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + #else + {PF_1, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + #endif + #endif + {NC, NP, 0} +}; +#endif + +//*** PWM *** + +#ifdef HAL_TIM_MODULE_ENABLED +const PinMap PinMap_PWM[] = { + {PB_1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 HEATER0 + {PD_14, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 HEATER1 + {PB_0, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 HEATER2 + {PD_12, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 BED + {PC_8, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 0)}, // TIM8_CH3 FAN0 + {PE_5, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 1, 0)}, // TIM9_CH1 FAN1 + {PE_6, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 2, 0)}, // TIM9_CH2 FAN2 + {PC_9, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 4, 0)}, // TIM8_CH4 EXTENSION1-4 + {PA_1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2 BL-TOUCH-SERVO + + // These pins have been defined for something else on the board but they MIGHT be + // used by the user as PWM pins if they aren't used for their primary purpose. + {PC_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 ESP8266 connector. Available if 8266 isn't used + {PC_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 ESP8266 connector. Available if 8266 isn't used + {PB_7, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 I2C connector, SDA pin. Available if I2C isn't used. + // TIM5_CH1 is used by the Servo Library + {PA_2, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3 BL-TOUCH port. Available if Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN + + /** + * Unused by specifications on SKR-Pro. + * Uncomment the corresponding line if you want to have HardwarePWM on some pins. + * WARNING: check timers' usage first to avoid conflicts. + * If you don't know what you're doing leave things as they are or you WILL break something (including hardware) + * If you alter this section DO NOT report bugs to Marlin team since they are most likely caused by you. Thank you. + */ + //{PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + //{PA_0, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1 + //{PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 BLTOUCH is a "servo" + //{PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 BLTOUCH is a "servo" + //{PA_1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2 + //{PA_2, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3 + //{PA_2, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 1, 0)}, // TIM9_CH1 + //{PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 + //{PA_3, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 4, 0)}, // TIM5_CH4 + //{PA_3, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 2, 0)}, // TIM9_CH2 + //{PA_5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + //{PA_5, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N + //{PA_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + //{PA_6, TIM13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1 + //{PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + //{PA_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + //{PA_7, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N + //{PA_7, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1 + //{PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 + //{PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + //{PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + //{PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + //{PA_15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + //{PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + //{PB_0, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N + //{PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + //{PB_1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N + //{PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 + //{PB_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + //{PB_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + //{PB_6, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 + //{PB_8, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 + //{PB_8, TIM10, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10, 1, 0)}, // TIM10_CH1 + //{PB_9, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 + //{PB_9, TIM11, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11, 1, 0)}, // TIM11_CH1 + //{PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 + //{PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 + //{PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + //{PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + //{PB_14, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N + //{PB_14, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM12, 1, 0)}, // TIM12_CH1 + //{PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + //{PB_15, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N + //{PB_15, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM12, 2, 0)}, // TIM12_CH2 + //{PC_6, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1 + //{PC_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + //{PC_7, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2 + //{PC_8, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 + //{PC_9, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 + //{PD_13, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 + //{PD_15, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 + //{PE_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + //{PE_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 + //{PE_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + //{PE_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + //{PE_12, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + //{PE_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + //{PE_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + //{PF_6, TIM10, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10, 1, 0)}, // TIM10_CH1 + //{PF_7, TIM11, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11, 1, 0)}, // TIM11_CH1 + //{PF_8, TIM13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1 + //{PF_9, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1 + #endif + #if STM32F4X_PIN_NUM >= 176 //176 pins mcu, 140 gpio + {PH_10, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1 + {PH_6, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM12, 1, 0)}, // TIM12_CH1 + //{PH_11, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2 + {PI_5, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1 + {PI_6, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2 + #endif + {NC, NP, 0} +}; +#endif + +//*** SERIAL *** + +#ifdef HAL_UART_MODULE_ENABLED +const PinMap PinMap_UART_TX[] = { + {PA_9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PD_8, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PC_6, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + //{PG_14, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + #endif + //{PB_6, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + //{PA_2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + //{PD_5, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + //{PB_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + //{PC_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + //{PA_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + //{PC_10, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + //{PC_12, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {NC, NP, 0} +}; + +const PinMap PinMap_UART_RX[] = { + {PA_10, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PD_9, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PC_7, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + //{PA_1, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + //{PA_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + //{PB_7, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + //{PB_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + //{PC_11, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + //{PC_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + //{PD_2, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + //{PD_6, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + //{PG_9, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + #endif + {NC, NP, 0} +}; + +const PinMap PinMap_UART_RTS[] = { + //{PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + //{PA_12, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + //{PB_14, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + //{PD_4, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + //{PD_12, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + //{PG_8, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + //{PG_12, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + #endif + {NC, NP, 0} +}; + +const PinMap PinMap_UART_CTS[] = { + //{PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + //{PA_11, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + //{PB_13, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + //{PD_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + //{PD_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + #if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + //{PG_13, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + //{PG_15, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)}, + #endif + {NC, NP, 0} +}; +#endif + +//*** SPI *** + +#ifdef HAL_SPI_MODULE_ENABLED +const PinMap PinMap_SPI_MOSI[] = { + {PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, + {PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_12, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {NC, NP, 0} +}; + +const PinMap PinMap_SPI_MISO[] = { + {PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, + {PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_11, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {NC, NP, 0} +}; + +const PinMap PinMap_SPI_SCLK[] = { + {PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, + {PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_10, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {NC, NP, 0} +}; + +const PinMap PinMap_SPI_SSEL[] = { + {PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, + {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PA_15, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {NC, NP, 0} +}; +#endif + +//*** CAN *** + +#ifdef HAL_CAN_MODULE_ENABLED +#error "CAN bus isn't available on this board. Driver should be disabled." +#endif + +//*** ETHERNET *** +#ifdef HAL_ETH_MODULE_ENABLED +#error "Ethernet port isn't available on this board. Driver should be disabled." +#endif + +//*** No QUADSPI *** + +//*** USB *** +#ifdef HAL_PCD_MODULE_ENABLED +const PinMap PinMap_USB_OTG_FS[] = { + //{PA_8, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_SOF used by LCD + //{PA_9, USB_OTG_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_FS_VBUS available on wifi port, if empty + //{PA_10, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_ID available on UART1_RX if not used + {PA_11, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_DM + {PA_12, USB_OTG_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_FS)}, // USB_OTG_FS_DP + {NC, NP, 0} +}; + +const PinMap PinMap_USB_OTG_HS[] = { /* + #ifdef USE_USB_HS_IN_FS + {PB_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_ID + {PB_13, USB_OTG_HS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_HS_VBUS + {PB_14, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_DM + {PB_15, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)}, // USB_OTG_HS_DP + #else + #error "USB in HS mode isn't supported by the board" + {PA_3, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D0 + {PB_0, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D1 + {PB_1, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D2 + {PB_5, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D7 + {PB_10, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D3 + {PB_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D5 + {PB_13, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_D6 + {PC_0, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_STP + {PC_2, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_DIR + {PC_3, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG_HS)}, // USB_OTG_HS_ULPI_NXT + #endif // USE_USB_HS_IN_FS + */ + {NC, NP, 0} +}; +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/PinNamesVar.h b/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/PinNamesVar.h new file mode 100644 index 0000000000..b4bb9d45f8 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/PinNamesVar.h @@ -0,0 +1,50 @@ +/* SYS_WKUP */ +#ifdef PWR_WAKEUP_PIN1 + SYS_WKUP1 = PA_0, +#endif +#ifdef PWR_WAKEUP_PIN2 + SYS_WKUP2 = NC, +#endif +#ifdef PWR_WAKEUP_PIN3 + SYS_WKUP3 = NC, +#endif +#ifdef PWR_WAKEUP_PIN4 + SYS_WKUP4 = NC, +#endif +#ifdef PWR_WAKEUP_PIN5 + SYS_WKUP5 = NC, +#endif +#ifdef PWR_WAKEUP_PIN6 + SYS_WKUP6 = NC, +#endif +#ifdef PWR_WAKEUP_PIN7 + SYS_WKUP7 = NC, +#endif +#ifdef PWR_WAKEUP_PIN8 + SYS_WKUP8 = NC, +#endif +/* USB */ +#ifdef USBCON + USB_OTG_FS_SOF = PA_8, + USB_OTG_FS_VBUS = PA_9, + USB_OTG_FS_ID = PA_10, + USB_OTG_FS_DM = PA_11, + USB_OTG_FS_DP = PA_12, + USB_OTG_HS_ULPI_D0 = PA_3, + USB_OTG_HS_SOF = PA_4, + USB_OTG_HS_ULPI_CK = PA_5, + USB_OTG_HS_ULPI_D1 = PB_0, + USB_OTG_HS_ULPI_D2 = PB_1, + USB_OTG_HS_ULPI_D7 = PB_5, + USB_OTG_HS_ULPI_D3 = PB_10, + USB_OTG_HS_ULPI_D4 = PB_11, + USB_OTG_HS_ID = PB_12, + USB_OTG_HS_ULPI_D5 = PB_12, + USB_OTG_HS_ULPI_D6 = PB_13, + USB_OTG_HS_VBUS = PB_13, + USB_OTG_HS_DM = PB_14, + USB_OTG_HS_DP = PB_15, + USB_OTG_HS_ULPI_STP = PC_0, + USB_OTG_HS_ULPI_DIR = PC_2, + USB_OTG_HS_ULPI_NXT = PC_3, +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/hal_conf_extra.h b/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/hal_conf_extra.h new file mode 100644 index 0000000000..ef621d57bf --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/hal_conf_extra.h @@ -0,0 +1,52 @@ +#pragma once + +#define HAL_MODULE_ENABLED +#define HAL_ADC_MODULE_ENABLED +#define HAL_CRC_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_EXTI_MODULE_ENABLED // Needed for Endstop (and other external) Interrupts +#define HAL_GPIO_MODULE_ENABLED +#define HAL_I2C_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED +//#define HAL_RTC_MODULE_ENABLED // Real Time Clock...do we use it? +#define HAL_SPI_MODULE_ENABLED +#define HAL_TIM_MODULE_ENABLED +#define HAL_USART_MODULE_ENABLED +#define HAL_CORTEX_MODULE_ENABLED +//#define HAL_UART_MODULE_ENABLED // by default +//#define HAL_PCD_MODULE_ENABLED // Automatically added if any type of USB is enabled, as in Arduino IDE. (STM32 v3.10700.191028) + +//#define HAL_SD_MODULE_ENABLED +//#define HAL_DAC_MODULE_ENABLED +//#define HAL_FLASH_MODULE_ENABLED +//#define HAL_CAN_MODULE_ENABLED +//#define HAL_CAN_LEGACY_MODULE_ENABLED +//#define HAL_CEC_MODULE_ENABLED +//#define HAL_CRYP_MODULE_ENABLED +//#define HAL_DCMI_MODULE_ENABLED +//#define HAL_DMA2D_MODULE_ENABLED +//#define HAL_ETH_MODULE_ENABLED +//#define HAL_NAND_MODULE_ENABLED +//#define HAL_NOR_MODULE_ENABLED +//#define HAL_PCCARD_MODULE_ENABLED +//#define HAL_SRAM_MODULE_ENABLED +//#define HAL_SDRAM_MODULE_ENABLED +//#define HAL_HASH_MODULE_ENABLED +//#define HAL_SMBUS_MODULE_ENABLED +//#define HAL_I2S_MODULE_ENABLED +//#define HAL_IWDG_MODULE_ENABLED +//#define HAL_LTDC_MODULE_ENABLED +//#define HAL_DSI_MODULE_ENABLED +//#define HAL_QSPI_MODULE_ENABLED +//#define HAL_RNG_MODULE_ENABLED +//#define HAL_SAI_MODULE_ENABLED +//#define HAL_IRDA_MODULE_ENABLED +//#define HAL_SMARTCARD_MODULE_ENABLED +//#define HAL_WWDG_MODULE_ENABLED +//#define HAL_HCD_MODULE_ENABLED +//#define HAL_FMPI2C_MODULE_ENABLED +//#define HAL_SPDIFRX_MODULE_ENABLED +//#define HAL_DFSDM_MODULE_ENABLED +//#define HAL_LPTIM_MODULE_ENABLED +//#define HAL_MMC_MODULE_ENABLED diff --git a/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/ldscript.ld b/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/ldscript.ld new file mode 100644 index 0000000000..f7e09b8ef0 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/ldscript.ld @@ -0,0 +1,204 @@ +/* +***************************************************************************** +** + +** File : LinkerScript.ld +** +** Abstract : Linker script for STM32F407ZGTx Device with +** 1024KByte FLASH, 128KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +***************************************************************************** +** @attention +** +** Copyright (c) 2014 Ac6 +** +** Redistribution and use in source and binary forms, with or without modification, +** are permitted provided that the following conditions are met: +** 1. Redistributions of source code must retain the above copyright notice, +** this list of conditions and the following disclaimer. +** 2. Redistributions in binary form must reproduce the above copyright notice, +** this list of conditions and the following disclaimer in the documentation +** and/or other materials provided with the distribution. +** 3. Neither the name of Ac6 nor the names of its contributors +** may be used to endorse or promote products derived from this software +** without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20020000; /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200;; /* required amount of heap */ +_Min_Stack_Size = 0x400;; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ +FLASH (rx) : ORIGIN = 0x8008000, LENGTH = 1024K +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K +CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 64K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text ALIGN(4): + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata ALIGN(4): + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM AT> FLASH + + _siccmram = LOADADDR(.ccmram); + + /* CCM-RAM section + * + * IMPORTANT NOTE! + * If initialized variables will be placed in this section, + * the startup code needs to be modified to copy the init-values. + */ + .ccmram : + { + . = ALIGN(4); + _sccmram = .; /* create a global symbol at ccmram start */ + *(.ccmram) + *(.ccmram*) + + . = ALIGN(4); + _eccmram = .; /* create a global symbol at ccmram end */ + } >CCMRAM AT> FLASH + + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss section */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(4); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(4); + } >RAM + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/variant.cpp b/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/variant.cpp new file mode 100644 index 0000000000..1486b21830 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/variant.cpp @@ -0,0 +1,260 @@ +/* + ******************************************************************************* + * Copyright (c) 2017, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ + +#include "pins_arduino.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// Pin number +// This array allows to wrap Arduino pin number(Dx or x) +// to STM32 PinName (PX_n) +const PinName digitalPin[] = { +#if STM32F4X_PIN_NUM >= 64 //64 pins mcu, 51 gpio + PC_13, //D0 + PC_14, //D1 - OSC32_IN + PC_15, //D2 - OSC32_OUT + PH_0, //D3 - OSC_IN + PH_1, //D4 - OSC_OUT + PB_2, //D5 - BOOT1 + PB_10, //D6 - 1:SPI2_SCK / I2C2_SCL / USART3_TX / TIM2_CH3 + PB_11, //D7 - 1:I2C2_SDA / USART3_RX / TIM2_CH4 + PB_12, //D8 - 1:SPI2_NSS / OTG_HS_ID + PB_13, //D9 - 1:SPI2_SCK 2:OTG_HS_VBUS + PB_14, //D10 - 1:SPI2_MISO / TIM12_CH1 / OTG_HS_DM + PB_15, //D11 - SPI2_MOSI / TIM12_CH2 / OTG_HS_DP + PC_6, //D12 - 1:TIM8_CH1 / SDIO_D6 / USART6_TX / TIM3_CH1 + PC_7, //D13 - 1:TIM8_CH2 / SDIO_D7 / USART6_RX / TIM3_CH2 + PC_8, //D14 - 1:TIM8_CH3 / SDIO_D0 / TIM3_CH3 + PC_9, //D15 - 1:TIM8_CH4 / SDIO_D1 / TIM3_CH4 + PA_8, //D16 - 1:TIM1_CH1 / I2C3_SCL / OTG_FS_SOF + PA_9, //D17 - 1:USART1_TX / TIM1_CH2 2:OTG_FS_VBUS + PA_10, //D18 - 1:USART1_RX / TIM1_CH3 / OTG_FS_ID + PA_11, //D19 - 1:TIM1_CH4 / OTG_FS_DM + PA_12, //D20 - 1:OTG_FS_DP + PA_13, //D21 - 0:JTMS-SWDIO + PA_14, //D22 - 0:JTCK-SWCLK + PA_15, //D23 - 0:JTDI 1:SPI3_NSS / SPI1_NSS + PC_10, //D24 - 1:UART4_TX / SPI3_SCK / SDIO_D2 / USART3_TX + PC_11, //D25 - 1:UART4_RX / SPI3_MISO / SDIO_D3 / USART3_RX + PC_12, //D26 - 1:UART5_TX / SPI3_MOSI / SDIO_CK + PD_2, //D27 - 1:UART5_RX / SDIO_CMD + PB_3, //D28 - 0:JTDO 1:SPI3_SCK / TIM2_CH2 / SPI1_SCK + PB_4, //D29 - 0:NJTRST 1:SPI3_MISO / TIM3_CH1 / SPI1_MISO + PB_5, //D30 - 1:TIM3_CH2 / SPI1_MOSI / SPI3_MOSI + PB_6, //D31 - 1:I2C1_SCL / TIM4_CH1 / USART1_TX + PB_7, //D32 - 1:I2C1_SDA / TIM4_CH2 / USART1_RX + PB_8, //D33 - 1:I2C1_SCL / TIM4_CH3 / SDIO_D4 / TIM10_CH1 + PB_9, //D34 - 1:I2C1_SDA / TIM4_CH4 / SDIO_D5 / TIM11_CH1 / SPI2_NSS + PA_0, //D35/A0 - 1:UART4_TX / TIM5_CH1 2:ADC123_IN0 + PA_1, //D36/A1 - 1:UART4_RX / TIM5_CH2 / TIM2_CH2 2:ADC123_IN1 + PA_2, //D37/A2 - 1:USART2_TX /TIM5_CH3 / TIM9_CH1 / TIM2_CH3 2:ADC123_IN2 + PA_3, //D38/A3 - 1:USART2_RX /TIM5_CH4 / TIM9_CH2 / TIM2_CH4 2:ADC123_IN3 + PA_4, //D39/A4 - NOT FT 1:SPI1_NSS / SPI3_NSS / USART2_CK 2:ADC12_IN4 / DAC_OUT1 + PA_5, //D40/A5 - NOT FT 1:SPI1_SCK 2:ADC12_IN5 / DAC_OUT2 + PA_6, //D41/A6 - 1:SPI1_MISO / TIM13_CH1 / TIM3_CH1 2:ADC12_IN6 + PA_7, //D42/A7 - 1:SPI1_MOSI / TIM14_CH1 / TIM3_CH2 2:ADC12_IN7 + PB_0, //D43/A8 - 1:TIM3_CH3 2:ADC12_IN8 + PB_1, //D44/A9 - 1:TIM3_CH4 2:ADC12_IN9 + PC_0, //D45/A10 - 1: 2:ADC123_IN10 + PC_1, //D46/A11 - 1: 2:ADC123_IN11 + PC_2, //D47/A12 - 1:SPI2_MISO 2:ADC123_IN12 + PC_3, //D48/A13 - 1:SPI2_MOSI 2:ADC123_IN13 + PC_4, //D49/A14 - 1: 2:ADC12_IN14 + PC_5, //D50/A15 - 1: 2:ADC12_IN15 + #if STM32F4X_PIN_NUM >= 144 + PF_3, //D51/A16 - 1:FSMC_A3 2:ADC3_IN9 + PF_4, //D52/A17 - 1:FSMC_A4 2:ADC3_IN14 + PF_5, //D53/A18 - 1:FSMC_A5 2:ADC3_IN15 + PF_6, //D54/A19 - 1:TIM10_CH1 2:ADC3_IN4 + PF_7, //D55/A20 - 1:TIM11_CH1 2:ADC3_IN5 + PF_8, //D56/A21 - 1:TIM13_CH1 2:ADC3_IN6 + PF_9, //D57/A22 - 1;TIM14_CH1 2:ADC3_IN7 + PF_10, //D58/A23 - 2:ADC3_IN8 + #endif +#endif +#if STM32F4X_PIN_NUM >= 100 //100 pins mcu, 82 gpio + PE_2, //D59 - 1:FSMC_A23 + PE_3, //D60 - 1:FSMC_A19 + PE_4, //D61 - 1:FSMC_A20 + PE_5, //D62 - 1:FSMC_A21 + PE_6, //D63 - 1:FSMC_A22 + PE_7, //D64 - 1:FSMC_D4 + PE_8, //D65 - 1:FSMC_D5 + PE_9, //D66 - 1:FSMC_D6 / TIM1_CH1 + PE_10, //D67 - 1:FSMC_D7 + PE_11, //D68 - 1:FSMC_D8 / TIM1_CH2 + PE_12, //D69 - 1:FSMC_D9 + PE_13, //D70 - 1:FSMC_D10 / TIM1_CH3 + PE_14, //D71 - 1:FSMC_D11 / TIM1_CH4 + PE_15, //D72 - 1:FSMC_D12 + PD_8, //D73 - 1:FSMC_D13 / USART3_TX + PD_9, //D74 - 1:FSMC_D14 / USART3_RX + PD_10, //D75 - 1:FSMC_D15 + PD_11, //D76 - 1:FSMC_A16 + PD_12, //D77 - 1:FSMC_A17 / TIM4_CH1 + PD_13, //D78 - 1:FSMC_A18 / TIM4_CH2 + PD_14, //D79 - 1:FSMC_D0 / TIM4_CH3 + PD_15, //D80 - 1:FSMC_D1 / TIM4_CH4 + PD_0, //D81 - 1:FSMC_D2 + PD_1, //D82 - 1:FSMC_D3 + PD_3, //D83 - 1:FSMC_CLK + PD_4, //D84 - 1:FSMC_NOE + PD_5, //D85 - 1:USART2_TX + PD_6, //D86 - 1:USART2_RX + PD_7, //D87 + PE_0, //D88 + PE_1, //D89 +#endif +#if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + PF_0, //D90 - 1:FSMC_A0 / I2C2_SDA + PF_1, //D91 - 1:FSMC_A1 / I2C2_SCL + PF_2, //D92 - 1:FSMC_A2 + PF_11, //D93 + PF_12, //D94 - 1:FSMC_A6 + PF_13, //D95 - 1:FSMC_A7 + PF_14, //D96 - 1:FSMC_A8 + PF_15, //D97 - 1:FSMC_A9 + PG_0, //D98 - 1:FSMC_A10 + PG_1, //D99 - 1:FSMC_A11 + PG_2, //D100 - 1:FSMC_A12 + PG_3, //D101 - 1:FSMC_A13 + PG_4, //D102 - 1:FSMC_A14 + PG_5, //D103 - 1:FSMC_A15 + PG_6, //D104 + PG_7, //D105 + PG_8, //D106 + PG_9, //D107 - 1:USART6_RX + PG_10, //D108 - 1:FSMC_NE3 + PG_11, //D109 + PG_12, //D110 - 1:FSMC_NE4 + PG_13, //D111 - 1:FSMC_A24 + PG_14, //D112 - 1:FSMC_A25 / USART6_TX + PG_15, //D113 +#endif +#if STM32F4X_PIN_NUM >= 176 //176 pins mcu, 140 gpio + PI_8, //D114 + PI_9, //D115 + PI_10, //D116 + PI_11, //D117 + PH_2, //D118 + PH_3, //D119 + PH_4, //D120 - 1:I2C2_SCL + PH_5, //D121 - 1:I2C2_SDA + PH_6, //D122 - 1:TIM12_CH1 + PH_7, //D123 - 1:I2C3_SCL + PH_8, //D124 - 1:I2C3_SDA + PH_9, //D125 - 1:TIM12_CH2 + PH_10, //D126 - 1:TIM5_CH1 + PH_11, //D127 - 1:TIM5_CH2 + PH_12, //D128 - 1:TIM5_CH3 + PH_13, //D129 + PH_14, //D130 + PH_15, //D131 + PI_0, //D132 - 1:TIM5_CH4 / SPI2_NSS + PI_1, //D133 - 1:SPI2_SCK + PI_2, //D134 - 1:TIM8_CH4 /SPI2_MISO + PI_3, //D135 - 1:SPI2_MOS + PI_4, //D136 + PI_5, //D137 - 1:TIM8_CH1 + PI_6, //D138 - 1:TIM8_CH2 + PI_7, //D139 - 1:TIM8_CH3 +#endif +}; + +#ifdef __cplusplus +} +#endif + +// ------------------------ + +#ifdef __cplusplus +extern "C" { +#endif + + /** + * @brief System Clock Configuration + * @param None + * @retval None + */ +WEAK void SystemClock_Config() { + + RCC_OscInitTypeDef RCC_OscInitStruct; + RCC_ClkInitTypeDef RCC_ClkInitStruct; + + /**Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + + /**Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 8; + RCC_OscInitStruct.PLL.PLLN = 336; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 7; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + /**Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK + | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + /**Configure the Systick interrupt time + */ + HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq() / 1000); + + /**Configure the Systick + */ + HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); + + /* SysTick_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); +} + +#ifdef __cplusplus +} +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/variant.h new file mode 100644 index 0000000000..cdb0dc2677 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_I3DBEEZ9/variant.h @@ -0,0 +1,323 @@ +/* + ******************************************************************************* + * Copyright (c) 2017, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +/*---------------------------------------------------------------------------- + * Pins + *----------------------------------------------------------------------------*/ + +#ifdef STM32F405RX + #define STM32F4X_PIN_NUM 64 //64 pins mcu, 51 gpio + #define STM32F4X_GPIO_NUM 51 + #define STM32F4X_ADC_NUM 16 +#elif defined(STM32F407_5VX) + #define STM32F4X_PIN_NUM 100 //100 pins mcu, 82 gpio + #define STM32F4X_GPIO_NUM 82 + #define STM32F4X_ADC_NUM 16 +#elif defined(STM32F407_5ZX) + #define STM32F4X_PIN_NUM 144 //144 pins mcu, 114 gpio + #define STM32F4X_GPIO_NUM 114 + #define STM32F4X_ADC_NUM 24 +#elif defined(STM32F407IX) + #define STM32F4X_PIN_NUM 176 //176 pins mcu, 140 gpio + #define STM32F4X_GPIO_NUM 140 + #define STM32F4X_ADC_NUM 24 +#else + #error "no match MCU defined" +#endif + +#if STM32F4X_PIN_NUM >= 64 //64 pins mcu, 51 gpio + #define PC13 0 + #define PC14 1 //OSC32_IN + #define PC15 2 //OSC32_OUT + #define PH0 3 //OSC_IN + #define PH1 4 //OSC_OUT + #define PB2 5 //BOOT1 + #define PB10 6 //1:SPI2_SCK / I2C2_SCL / USART3_TX / TIM2_CH3 + #define PB11 7 //1:I2C2_SDA / USART3_RX / TIM2_CH4 + #define PB12 8 //1:SPI2_NSS / OTG_HS_ID + #define PB13 9 //1:SPI2_SCK 2:OTG_HS_VBUS + #define PB14 10 //1:SPI2_MISO / TIM12_CH1 / OTG_HS_DM + #define PB15 11 //SPI2_MOSI / TIM12_CH2 / OTG_HS_DP + #define PC6 12 //1:TIM8_CH1 / SDIO_D6 / USART6_TX / TIM3_CH1 + #define PC7 13 //1:TIM8_CH2 / SDIO_D7 / USART6_RX / TIM3_CH2 + #define PC8 14 //1:TIM8_CH3 / SDIO_D0 / TIM3_CH3 + #define PC9 15 //1:TIM8_CH4 / SDIO_D1 / TIM3_CH4 + #define PA8 16 //1:TIM1_CH1 / I2C3_SCL / OTG_FS_SOF + #define PA9 17 //1:USART1_TX / TIM1_CH2 2:OTG_FS_VBUS + #define PA10 18 //1:USART1_RX / TIM1_CH3 / OTG_FS_ID + #define PA11 19 //1:TIM1_CH4 / OTG_FS_DM + #define PA12 20 //1:OTG_FS_DP + #define PA13 21 //0:JTMS-SWDIO + #define PA14 22 //0:JTCK-SWCLK + #define PA15 23 //0:JTDI 1:SPI3_NSS / SPI1_NSS + #define PC10 24 //1:UART4_TX / SPI3_SCK / SDIO_D2 / USART3_TX + #define PC11 25 //1:UART4_RX / SPI3_MISO / SDIO_D3 / USART3_RX + #define PC12 26 //1:UART5_TX / SPI3_MOSI / SDIO_CK + #define PD2 27 //1:UART5_RX / SDIO_CMD + #define PB3 28 //0:JTDO 1:SPI3_SCK / TIM2_CH2 / SPI1_SCK + #define PB4 29 //0:NJTRST 1:SPI3_MISO / TIM3_CH1 / SPI1_MISO + #define PB5 30 //1:TIM3_CH2 / SPI1_MOSI / SPI3_MOSI + #define PB6 31 //1:I2C1_SCL / TIM4_CH1 / USART1_TX + #define PB7 32 //1:I2C1_SDA / TIM4_CH2 / USART1_RX + #define PB8 33 //1:I2C1_SCL / TIM4_CH3 / SDIO_D4 / TIM10_CH1 + #define PB9 34 //1:I2C1_SDA / TIM4_CH4 / SDIO_D5 / TIM11_CH1 / SPI2_NSS + #define PA0 35 //1:UART4_TX / TIM5_CH1 2:ADC123_IN0 + #define PA1 36 //1:UART4_RX / TIM5_CH2 / TIM2_CH2 2:ADC123_IN1 + #define PA2 37 //1:USART2_TX /TIM5_CH3 / TIM9_CH1 / TIM2_CH3 2:ADC123_IN2 + #define PA3 38 //1:USART2_RX /TIM5_CH4 / TIM9_CH2 / TIM2_CH4 2:ADC123_IN3 + #define PA4 39 //NOT FT 1:SPI1_NSS / SPI3_NSS / USART2_CK 2:ADC12_IN4 / DAC_OUT1 + #define PA5 40 //NOT FT 1:SPI1_SCK 2:ADC12_IN5 / DAC_OUT2 + #define PA6 41 //1:SPI1_MISO / TIM13_CH1 / TIM3_CH1 2:ADC12_IN6 + #define PA7 42 //1:SPI1_MOSI / TIM14_CH1 / TIM3_CH2 2:ADC12_IN7 + #define PB0 43 //1:TIM3_CH3 2:ADC12_IN8 + #define PB1 44 //1:TIM3_CH4 2:ADC12_IN9 + #define PC0 45 //1: 2:ADC123_IN10 + #define PC1 46 //1: 2:ADC123_IN11 + #define PC2 47 //1:SPI2_MISO 2:ADC123_IN12 + #define PC3 48 //1:SPI2_MOSI 2:ADC123_IN13 + #define PC4 49 //1: 2:ADC12_IN14 + #define PC5 50 //1: 2:ADC12_IN15 + #if STM32F4X_PIN_NUM >= 144 + #define PF3 51 //1:FSMC_A3 2:ADC3_IN9 + #define PF4 52 //1:FSMC_A4 2:ADC3_IN14 + #define PF5 53 //1:FSMC_A5 2:ADC3_IN15 + #define PF6 54 //1:TIM10_CH1 2:ADC3_IN4 + #define PF7 55 //1:TIM11_CH1 2:ADC3_IN5 + #define PF8 56 //1:TIM13_CH1 2:ADC3_IN6 + #define PF9 57 //1;TIM14_CH1 2:ADC3_IN7 + #define PF10 58 //2:ADC3_IN8 + #endif +#endif +#if STM32F4X_PIN_NUM >= 100 //100 pins mcu, 82 gpio + #define PE2 (35+STM32F4X_ADC_NUM) //1:FSMC_A23 + #define PE3 (36+STM32F4X_ADC_NUM) //1:FSMC_A19 + #define PE4 (37+STM32F4X_ADC_NUM) //1:FSMC_A20 + #define PE5 (38+STM32F4X_ADC_NUM) //1:FSMC_A21 + #define PE6 (39+STM32F4X_ADC_NUM) //1:FSMC_A22 + #define PE7 (40+STM32F4X_ADC_NUM) //1:FSMC_D4 + #define PE8 (41+STM32F4X_ADC_NUM) //1:FSMC_D5 + #define PE9 (42+STM32F4X_ADC_NUM) //1:FSMC_D6 / TIM1_CH1 + #define PE10 (43+STM32F4X_ADC_NUM) //1:FSMC_D7 + #define PE11 (44+STM32F4X_ADC_NUM) //1:FSMC_D8 / TIM1_CH2 + #define PE12 (45+STM32F4X_ADC_NUM) //1:FSMC_D9 + #define PE13 (46+STM32F4X_ADC_NUM) //1:FSMC_D10 / TIM1_CH3 + #define PE14 (47+STM32F4X_ADC_NUM) //1:FSMC_D11 / TIM1_CH4 + #define PE15 (48+STM32F4X_ADC_NUM) //1:FSMC_D12 + #define PD8 (49+STM32F4X_ADC_NUM) //1:FSMC_D13 / USART3_TX + #define PD9 (50+STM32F4X_ADC_NUM) //1:FSMC_D14 / USART3_RX + #define PD10 (51+STM32F4X_ADC_NUM) //1:FSMC_D15 + #define PD11 (52+STM32F4X_ADC_NUM) //1:FSMC_A16 + #define PD12 (53+STM32F4X_ADC_NUM) //1:FSMC_A17 / TIM4_CH1 + #define PD13 (54+STM32F4X_ADC_NUM) //1:FSMC_A18 / TIM4_CH2 + #define PD14 (55+STM32F4X_ADC_NUM) //1:FSMC_D0 / TIM4_CH3 + #define PD15 (56+STM32F4X_ADC_NUM) //1:FSMC_D1 / TIM4_CH4 + #define PD0 (57+STM32F4X_ADC_NUM) //1:FSMC_D2 + #define PD1 (58+STM32F4X_ADC_NUM) //1:FSMC_D3 + #define PD3 (59+STM32F4X_ADC_NUM) //1:FSMC_CLK + #define PD4 (60+STM32F4X_ADC_NUM) //1:FSMC_NOE + #define PD5 (61+STM32F4X_ADC_NUM) //1:USART2_TX + #define PD6 (62+STM32F4X_ADC_NUM) //1:USART2_RX + #define PD7 (63+STM32F4X_ADC_NUM) + #define PE0 (64+STM32F4X_ADC_NUM) + #define PE1 (65+STM32F4X_ADC_NUM) +#endif +#if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio + #define PF0 (66+STM32F4X_ADC_NUM) //1:FSMC_A0 / I2C2_SDA + #define PF1 (67+STM32F4X_ADC_NUM) //1:FSMC_A1 / I2C2_SCL + #define PF2 (68+STM32F4X_ADC_NUM) //1:FSMC_A2 + #define PF11 (69+STM32F4X_ADC_NUM) + #define PF12 (70+STM32F4X_ADC_NUM) //1:FSMC_A6 + #define PF13 (71+STM32F4X_ADC_NUM) //1:FSMC_A7 + #define PF14 (72+STM32F4X_ADC_NUM) //1:FSMC_A8 + #define PF15 (73+STM32F4X_ADC_NUM) //1:FSMC_A9 + #define PG0 (74+STM32F4X_ADC_NUM) //1:FSMC_A10 + #define PG1 (75+STM32F4X_ADC_NUM) //1:FSMC_A11 + #define PG2 (76+STM32F4X_ADC_NUM) //1:FSMC_A12 + #define PG3 (77+STM32F4X_ADC_NUM) //1:FSMC_A13 + #define PG4 (78+STM32F4X_ADC_NUM) //1:FSMC_A14 + #define PG5 (79+STM32F4X_ADC_NUM) //1:FSMC_A15 + #define PG6 (80+STM32F4X_ADC_NUM) + #define PG7 (81+STM32F4X_ADC_NUM) + #define PG8 (82+STM32F4X_ADC_NUM) + #define PG9 (83+STM32F4X_ADC_NUM) //1:USART6_RX + #define PG10 (84+STM32F4X_ADC_NUM) //1:FSMC_NE3 + #define PG11 (85+STM32F4X_ADC_NUM) + #define PG12 (86+STM32F4X_ADC_NUM) //1:FSMC_NE4 + #define PG13 (87+STM32F4X_ADC_NUM) //1:FSMC_A24 + #define PG14 (88+STM32F4X_ADC_NUM) //1:FSMC_A25 / USART6_TX + #define PG15 (89+STM32F4X_ADC_NUM) +#endif +#if STM32F4X_PIN_NUM >= 176 //176 pins mcu, 140 gpio + #define PI8 (90+STM32F4X_ADC_NUM) + #define PI9 (91+STM32F4X_ADC_NUM) + #define PI10 (92+STM32F4X_ADC_NUM) + #define PI11 (93+STM32F4X_ADC_NUM) + #define PH2 (94+STM32F4X_ADC_NUM) + #define PH3 (95+STM32F4X_ADC_NUM) + #define PH4 (96+STM32F4X_ADC_NUM) //1:I2C2_SCL + #define PH5 (97+STM32F4X_ADC_NUM) //1:I2C2_SDA + #define PH6 (98+STM32F4X_ADC_NUM) //1:TIM12_CH1 + #define PH7 (99+STM32F4X_ADC_NUM) //1:I2C3_SCL + #define PH8 (100+STM32F4X_ADC_NUM) //1:I2C3_SDA + #define PH9 (101+STM32F4X_ADC_NUM) //1:TIM12_CH2 + #define PH10 (102+STM32F4X_ADC_NUM) //1:TIM5_CH1 + #define PH11 (103+STM32F4X_ADC_NUM) //1:TIM5_CH2 + #define PH12 (104+STM32F4X_ADC_NUM) //1:TIM5_CH3 + #define PH13 (105+STM32F4X_ADC_NUM) + #define PH14 (106+STM32F4X_ADC_NUM) + #define PH15 (107+STM32F4X_ADC_NUM) + #define PI0 (108+STM32F4X_ADC_NUM) //1:TIM5_CH4 / SPI2_NSS + #define PI1 (109+STM32F4X_ADC_NUM) //1:SPI2_SCK + #define PI2 (110+STM32F4X_ADC_NUM) //1:TIM8_CH4 /SPI2_MISO + #define PI3 (111+STM32F4X_ADC_NUM) //1:SPI2_MOS + #define PI4 (112+STM32F4X_ADC_NUM) + #define PI5 (113+STM32F4X_ADC_NUM) //1:TIM8_CH1 + #define PI6 (114+STM32F4X_ADC_NUM) //1:TIM8_CH2 + #define PI7 (115+STM32F4X_ADC_NUM) //1:TIM8_CH3 +#endif + + +// This must be a literal +#define NUM_DIGITAL_PINS (STM32F4X_GPIO_NUM) +// This must be a literal with a value less than or equal to MAX_ANALOG_INPUTS +#define NUM_ANALOG_INPUTS (STM32F4X_ADC_NUM) +#define NUM_ANALOG_FIRST 35 + +// Below ADC, DAC and PWM definitions already done in the core +// Could be redefined here if needed +// ADC resolution is 12bits +//#define ADC_RESOLUTION 12 +//#define DACC_RESOLUTION 12 + +// PWM resolution +/* + * BEWARE: + * Changing this value from the default (1000) will affect the PWM output value of analogWrite (to a PWM pin) + * Since the pin is toggled on capture, if you change the frequency of the timer you have to adapt the compare value (analogWrite thinks you did) + */ +//#define PWM_FREQUENCY 20000 +//The bottom values are the default and don't need to be redefined +//#define PWM_RESOLUTION 8 +//#define PWM_MAX_DUTY_CYCLE 255 + +// On-board LED pin number +#define LED_BUILTIN PA7 +#define LED_GREEN LED_BUILTIN + +// Below SPI and I2C definitions already done in the core +// Could be redefined here if differs from the default one +// SPI Definitions +#define PIN_SPI_MOSI PB15 +#define PIN_SPI_MISO PB14 +#define PIN_SPI_SCK PB13 +#define PIN_SPI_SS PB12 + +// I2C Definitions +#if STM32F4X_PIN_NUM >= 176 + #define PIN_WIRE_SDA PH5 + #define PIN_WIRE_SCL PH4 +#else + #define PIN_WIRE_SDA PB7 + #define PIN_WIRE_SCL PB6 +#endif + +// Timer Definitions +// Do not use timer used by PWM pins when possible. See PinMap_PWM in PeripheralPins.c +#define TIMER_TONE TIM2 // TIMER_TONE must be defined in this file +#define TIMER_SERVO TIM5 // Only 1 Servo PIN on BEEZ9, so use the same timer as defined in PeripheralPins +#define TIMER_SERIAL TIM7 // TIMER_SERIAL must be defined in this file + +// UART Definitions +//#define ENABLE_HWSERIAL1 done automatically by the #define SERIAL_UART_INSTANCE below +#define ENABLE_HWSERIAL3 +#define ENABLE_HWSERIAL6 + +// Define here Serial instance number to map on Serial generic name (if not already used by SerialUSB) +#define SERIAL_UART_INSTANCE 1 //1 for Serial = Serial1 (USART1) + +// DEBUG_UART could be redefined to print on another instance than 'Serial' +//#define DEBUG_UART ((USART_TypeDef *) U(S)ARTX) // ex: USART3 +// DEBUG_UART baudrate, default: 9600 if not defined +//#define DEBUG_UART_BAUDRATE x +// DEBUG_UART Tx pin name, default: the first one found in PinMap_UART_TX for DEBUG_UART +//#define DEBUG_PINNAME_TX PX_n // PinName used for TX + +// Default pin used for 'Serial' instance (ex: ST-Link) +// Mandatory for Firmata +#define PIN_SERIAL_RX PA10 +#define PIN_SERIAL_TX PA9 + +// Optional PIN_SERIALn_RX and PIN_SERIALn_TX where 'n' is the U(S)ART number +// Used when user instantiate a hardware Serial using its peripheral name. +// Example: HardwareSerial mySerial(USART3); +// will use PIN_SERIAL3_RX and PIN_SERIAL3_TX if defined. +#define PIN_SERIAL1_RX PA10 +#define PIN_SERIAL1_TX PA9 +#define PIN_SERIAL3_RX PD9 +#define PIN_SERIAL3_TX PD8 +#define PIN_SERIAL6_RX PC7 +#define PIN_SERIAL6_TX PC6 +//#define PIN_SERIALLP1_RX x // For LPUART1 RX +//#define PIN_SERIALLP1_TX x // For LPUART1 TX + +#ifdef __cplusplus +} // extern "C" +#endif + +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus +// These serial port names are intended to allow libraries and architecture-neutral +// sketches to automatically default to the correct port name for a particular type +// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, +// the first hardware serial port whose RX/TX pins are not dedicated to another use. +// +// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor +// +// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial +// +// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library +// +// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. +// +// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX +// pins are NOT connected to anything by default. +#define SERIAL_PORT_MONITOR Serial +#define SERIAL_PORT_HARDWARE Serial1 +#define SERIAL_PORT_HARDWARE_OPEN Serial3 +#define SERIAL_PORT_HARDWARE_OPEN1 Serial6 +#endif diff --git a/buildroot/tests/I3DBEEZ9_V1 b/buildroot/tests/I3DBEEZ9_V1 new file mode 100755 index 0000000000..7c11d2e6c8 --- /dev/null +++ b/buildroot/tests/I3DBEEZ9_V1 @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# +# Build tests for STM32F407ZG I3DBEEZ9 Board +# + +# exit on first failure +set -e + +# +# Build with the default configurations +# +restore_configs +opt_set MOTHERBOARD BOARD_I3DBEEZ9_V1 SERIAL_PORT 1 +exec_test $1 $2 "I3DBEE Z9 Board | Default Configuration" "$3" + +restore_configs +opt_set MOTHERBOARD BOARD_I3DBEEZ9_V1 SERIAL_PORT -1 \ + EXTRUDERS 3 TEMP_SENSOR_1 1 TEMP_SENSOR_2 1 \ + E0_AUTO_FAN_PIN PC10 E1_AUTO_FAN_PIN PC11 E2_AUTO_FAN_PIN PC12 \ + X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2130 +opt_enable BLTOUCH EEPROM_SETTINGS AUTO_BED_LEVELING_3POINT Z_SAFE_HOMING PINS_DEBUGGING +exec_test $1 $2 "I3DBEE Z9 Board | 3 Extruders | Auto-Fan | BLTOUCH | Mixed TMC" "$3" + +restore_configs +opt_set MOTHERBOARD BOARD_I3DBEEZ9_V1 SERIAL_PORT -1 \ + CUTTER_POWER_UNIT PERCENT \ + SPINDLE_LASER_PWM_PIN HEATER_1_PIN SPINDLE_LASER_ENA_PIN HEATER_2_PIN \ + TEMP_SENSOR_COOLER 1000 TEMP_COOLER_PIN PD13 +opt_enable LASER_FEATURE LASER_SAFETY_TIMEOUT_MS REPRAP_DISCOUNT_SMART_CONTROLLER +exec_test $1 $2 "I3DBEE Z9 Board | HD44780 | Laser (Percent) | Cooling | LCD" "$3" + +# clean up +restore_configs diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini index 7dfffe4764..2889a88863 100644 --- a/ini/stm32f4.ini +++ b/ini/stm32f4.ini @@ -782,3 +782,14 @@ extends = common_stm32 board = blackpill_f401cc upload_protocol = stlink monitor_speed = 115200 + +# +# I3Dbeez9 (STM32F407ZGT6 ARM Cortex-M4) +# +[env:I3DBEEZ9_V1] +extends = stm32_variant +board = marlin_I3DBEEZ9 +board_build.offset = 0x8000 +build_flags = ${stm32_variant.build_flags} -DSTM32F407_5ZX +debug_tool = stlink +upload_protocol = stlink From 7249c3c46ffb3d6ae00236691b3c7ff4123424d4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 18 May 2023 15:44:04 -0500 Subject: [PATCH 455/659] =?UTF-8?q?=F0=9F=A9=B9=20M493=20report=20followup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/feature/ft_motion/M493.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Marlin/src/gcode/feature/ft_motion/M493.cpp b/Marlin/src/gcode/feature/ft_motion/M493.cpp index 83c6a9a5da..9469f1575b 100644 --- a/Marlin/src/gcode/feature/ft_motion/M493.cpp +++ b/Marlin/src/gcode/feature/ft_motion/M493.cpp @@ -103,7 +103,8 @@ void say_shaping() { #if HAS_EXTRUDERS SERIAL_ECHO_TERNARY(fxdTiCtrl.cfg.linearAdvEna, "Linear Advance ", "en", "dis", "abled"); - SERIAL_ECHOLNPGM(". Gain: "); SERIAL_ECHO_F(fxdTiCtrl.cfg.linearAdvK, 5); + SERIAL_ECHOPGM(". Gain: "); SERIAL_ECHO_F(fxdTiCtrl.cfg.linearAdvK, 5); + SERIAL_EOL(); #endif } From 48c14f110998e066e0db3b82956fcc0b3af1f1f7 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 19 May 2023 00:20:49 +0000 Subject: [PATCH 456/659] [cron] Bump distribution date (2023-05-19) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index d750fb9fa4..20d39cad45 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-18" +//#define STRING_DISTRIBUTION_DATE "2023-05-19" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index f1b231143e..ae6f5a88cc 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-18" + #define STRING_DISTRIBUTION_DATE "2023-05-19" #endif /** From 7d5bd4dfbc029c1be10a3de42c0eb6508965a22d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 19 May 2023 04:48:11 -0500 Subject: [PATCH 457/659] =?UTF-8?q?=F0=9F=8E=A8=20Cutter=20pins=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/tmc_util.cpp | 2 +- Marlin/src/module/motion.h | 2 +- Marlin/src/pins/linux/pins_RAMPS_LINUX.h | 4 ++-- Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h | 2 +- Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h | 2 +- Marlin/src/pins/mega/pins_HJC2560C_REV2.h | 4 ++-- Marlin/src/pins/mega/pins_MEGACONTROLLER.h | 8 +++++--- Marlin/src/pins/mega/pins_MEGATRONICS.h | 8 +++++--- Marlin/src/pins/mega/pins_MEGATRONICS_2.h | 8 +++++--- Marlin/src/pins/mega/pins_MINITRONICS.h | 2 +- Marlin/src/pins/rambo/pins_EINSY_RAMBO.h | 10 ++++++---- Marlin/src/pins/rambo/pins_EINSY_RETRO.h | 10 ++++++---- Marlin/src/pins/rambo/pins_MINIRAMBO.h | 10 ++++++---- Marlin/src/pins/rambo/pins_RAMBO.h | 8 +++++--- Marlin/src/pins/ramps/pins_BAM_DICE_DUE.h | 8 +++++--- Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h | 8 +++++--- Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h | 4 ++-- Marlin/src/pins/ramps/pins_RAMPS.h | 2 +- Marlin/src/pins/ramps/pins_RAMPS_OLD.h | 8 +++++--- Marlin/src/pins/ramps/pins_RAMPS_S_12.h | 2 +- Marlin/src/pins/ramps/pins_TT_OSCAR.h | 4 ++-- Marlin/src/pins/ramps/pins_ULTIMAIN_2.h | 4 ++-- Marlin/src/pins/ramps/pins_ULTIMAKER.h | 8 +++++--- Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h | 6 +++--- Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h | 4 ++-- Marlin/src/pins/sam/pins_RAMPS_FD_V1.h | 2 +- Marlin/src/pins/samd/pins_RAMPS_144.h | 2 +- Marlin/src/pins/sanguino/pins_GEN6.h | 8 +++++--- Marlin/src/pins/sanguino/pins_GEN7_14.h | 8 +++++--- Marlin/src/pins/sanguino/pins_GEN7_CUSTOM.h | 8 +++++--- Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h | 2 +- Marlin/src/pins/teensy2/pins_TEENSY2.h | 8 +++++--- Marlin/src/pins/teensy2/pins_TEENSYLU.h | 8 +++++--- 34 files changed, 109 insertions(+), 77 deletions(-) diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp index cc99f34c5b..095e14fe15 100644 --- a/Marlin/src/feature/tmc_util.cpp +++ b/Marlin/src/feature/tmc_util.cpp @@ -1236,7 +1236,7 @@ static bool test_connection(TMC &st) { void test_tmc_connection(LOGICAL_AXIS_ARGS(const bool)) { uint8_t axis_connection = 0; - if (TERN0(HAS_X_AXIS, x)) { + if (TERN0(HAS_X_AXIS, x)) { #if AXIS_IS_TMC(X) axis_connection += test_connection(stepperX); #endif diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index ae0976b44c..71d80f954e 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -358,7 +358,7 @@ void do_blocking_move_to(const xyz_pos_t &raw, const_feedRate_t fr_mm_s=0.0f); void do_blocking_move_to(const xyze_pos_t &raw, const_feedRate_t fr_mm_s=0.0f); #if HAS_X_AXIS - void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s=0.0f); + void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s=0.0f); #endif #if HAS_Y_AXIS void do_blocking_move_to_y(const_float_t ry, const_feedRate_t fr_mm_s=0.0f); diff --git a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h index e322af8fec..950eb8d88f 100644 --- a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h +++ b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h @@ -221,12 +221,12 @@ // #if HAS_CUTTER && !PIN_EXISTS(SPINDLE_LASER_ENA) #if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // Prefer the servo connector - #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown! #define SPINDLE_LASER_PWM_PIN 6 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown! #define SPINDLE_DIR_PIN 5 #elif HAS_FREE_AUX2_PINS // try to use AUX 2 - #define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown! #define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown! #define SPINDLE_DIR_PIN 65 #endif #endif diff --git a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h index f5d288fce4..a6341ec529 100644 --- a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h +++ b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h @@ -252,8 +252,8 @@ #error "LASER_FEATURE requires 3 free servo pins." #endif #endif - #define SPINDLE_LASER_ENA_PIN SERVO1_PIN // (6) Pin should have a pullup/pulldown! #define SPINDLE_LASER_PWM_PIN SERVO3_PIN // (4) MUST BE HARDWARE PWM + #define SPINDLE_LASER_ENA_PIN SERVO1_PIN // (6) Pin should have a pullup/pulldown! #define SPINDLE_DIR_PIN SERVO2_PIN // (5) #endif diff --git a/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h b/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h index 4dc275eee7..f86cd5d3c6 100644 --- a/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h +++ b/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h @@ -153,8 +153,8 @@ #undef HEATER_0_PIN #undef HEATER_BED_PIN #undef FAN0_PIN - #define SPINDLE_LASER_ENA_PIN P2_07 // FET 1 #define SPINDLE_LASER_PWM_PIN P2_05 // Bed FET + #define SPINDLE_LASER_ENA_PIN P2_07 // FET 1 #define SPINDLE_DIR_PIN P2_06 // FET 4 #endif diff --git a/Marlin/src/pins/mega/pins_HJC2560C_REV2.h b/Marlin/src/pins/mega/pins_HJC2560C_REV2.h index 79eef14366..512da02834 100644 --- a/Marlin/src/pins/mega/pins_HJC2560C_REV2.h +++ b/Marlin/src/pins/mega/pins_HJC2560C_REV2.h @@ -114,9 +114,9 @@ // M3/M4/M5 - Spindle/Laser Control // #if HAS_CUTTER - #define SPINDLE_DIR_PIN 16 - #define SPINDLE_LASER_ENA_PIN 17 // Pin should have a pullup! #define SPINDLE_LASER_PWM_PIN 9 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 17 // Pin should have a pullup! + #define SPINDLE_DIR_PIN 16 #endif // diff --git a/Marlin/src/pins/mega/pins_MEGACONTROLLER.h b/Marlin/src/pins/mega/pins_MEGACONTROLLER.h index 19808817c9..049917b6b6 100644 --- a/Marlin/src/pins/mega/pins_MEGACONTROLLER.h +++ b/Marlin/src/pins/mega/pins_MEGACONTROLLER.h @@ -162,6 +162,8 @@ // // M3/M4/M5 - Spindle/Laser Control // -#define SPINDLE_LASER_PWM_PIN 6 // Hardware PWM -#define SPINDLE_LASER_ENA_PIN 7 // Pullup! -#define SPINDLE_DIR_PIN 8 +#if HAS_CUTTER + #define SPINDLE_LASER_PWM_PIN 6 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 7 // Pullup! + #define SPINDLE_DIR_PIN 8 +#endif diff --git a/Marlin/src/pins/mega/pins_MEGATRONICS.h b/Marlin/src/pins/mega/pins_MEGATRONICS.h index 0e2ac291b2..066b577c62 100644 --- a/Marlin/src/pins/mega/pins_MEGATRONICS.h +++ b/Marlin/src/pins/mega/pins_MEGATRONICS.h @@ -130,6 +130,8 @@ // // M3/M4/M5 - Spindle/Laser Control // -#define SPINDLE_LASER_PWM_PIN 3 // Hardware PWM -#define SPINDLE_LASER_ENA_PIN 4 // Pullup! -#define SPINDLE_DIR_PIN 11 +#if HAS_CUTTER + #define SPINDLE_LASER_PWM_PIN 3 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 4 // Pullup! + #define SPINDLE_DIR_PIN 11 +#endif diff --git a/Marlin/src/pins/mega/pins_MEGATRONICS_2.h b/Marlin/src/pins/mega/pins_MEGATRONICS_2.h index d6840de8d0..ff118e7323 100644 --- a/Marlin/src/pins/mega/pins_MEGATRONICS_2.h +++ b/Marlin/src/pins/mega/pins_MEGATRONICS_2.h @@ -122,9 +122,11 @@ // // M3/M4/M5 - Spindle/Laser Control // -#define SPINDLE_LASER_PWM_PIN 3 // Hardware PWM -#define SPINDLE_LASER_ENA_PIN 16 // Pullup! -#define SPINDLE_DIR_PIN 11 +#if HAS_CUTTER + #define SPINDLE_LASER_PWM_PIN 3 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 16 // Pullup! + #define SPINDLE_DIR_PIN 11 +#endif // // LCD / Controller diff --git a/Marlin/src/pins/mega/pins_MINITRONICS.h b/Marlin/src/pins/mega/pins_MINITRONICS.h index 6d0309c4c1..c8828faea7 100644 --- a/Marlin/src/pins/mega/pins_MINITRONICS.h +++ b/Marlin/src/pins/mega/pins_MINITRONICS.h @@ -141,7 +141,7 @@ #define HEATER_BED_PIN 4 // won't compile #define TEMP_BED_PIN 50 #define TEMP_0_PIN 51 - #define SPINDLE_LASER_ENA_PIN 52 // using A6 because it already has a pullup #define SPINDLE_LASER_PWM_PIN 3 // WARNING - LED & resistor pull up to +12/+24V stepper voltage + #define SPINDLE_LASER_ENA_PIN 52 // using A6 because it already has a pullup #define SPINDLE_DIR_PIN 53 #endif diff --git a/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h index 531739ca16..d73092c2f6 100644 --- a/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h +++ b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h @@ -189,10 +189,12 @@ // // M3/M4/M5 - Spindle/Laser Control // -// use P1 connector for spindle pins -#define SPINDLE_LASER_PWM_PIN EXP1_02_PIN // Hardware PWM -#define SPINDLE_LASER_ENA_PIN 18 // Pullup! -#define SPINDLE_DIR_PIN 19 +#if HAS_CUTTER + // Use P1 connector for spindle pins + #define SPINDLE_LASER_PWM_PIN EXP1_02_PIN // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 18 // Pullup! + #define SPINDLE_DIR_PIN 19 +#endif // // Průša i3 MK2 Multiplexer Support diff --git a/Marlin/src/pins/rambo/pins_EINSY_RETRO.h b/Marlin/src/pins/rambo/pins_EINSY_RETRO.h index 10736d34a9..b4f09b7136 100644 --- a/Marlin/src/pins/rambo/pins_EINSY_RETRO.h +++ b/Marlin/src/pins/rambo/pins_EINSY_RETRO.h @@ -153,10 +153,12 @@ // // M3/M4/M5 - Spindle/Laser Control // -// use P1 connector for spindle pins -#define SPINDLE_LASER_PWM_PIN 9 // Hardware PWM -#define SPINDLE_LASER_ENA_PIN 18 // Pullup! -#define SPINDLE_DIR_PIN 19 +#if HAS_CUTTER + // Use P1 connector for spindle pins + #define SPINDLE_LASER_PWM_PIN 9 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 18 // Pullup! + #define SPINDLE_DIR_PIN 19 +#endif // // Průša i3 MK2 Multiplexer Support diff --git a/Marlin/src/pins/rambo/pins_MINIRAMBO.h b/Marlin/src/pins/rambo/pins_MINIRAMBO.h index 6e1a460838..32a74515d9 100644 --- a/Marlin/src/pins/rambo/pins_MINIRAMBO.h +++ b/Marlin/src/pins/rambo/pins_MINIRAMBO.h @@ -126,10 +126,12 @@ // // M3/M4/M5 - Spindle/Laser Control // -// use P1 connector for spindle pins -#define SPINDLE_LASER_PWM_PIN 9 // Hardware PWM -#define SPINDLE_LASER_ENA_PIN 18 // Pullup! -#define SPINDLE_DIR_PIN 19 +#if HAS_CUTTER + // Use P1 connector for spindle pins + #define SPINDLE_LASER_PWM_PIN 9 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 18 // Pullup! + #define SPINDLE_DIR_PIN 19 +#endif // // Průša i3 MK2 Multiplexer Support diff --git a/Marlin/src/pins/rambo/pins_RAMBO.h b/Marlin/src/pins/rambo/pins_RAMBO.h index 1e9b9938a5..e1ddf972d9 100644 --- a/Marlin/src/pins/rambo/pins_RAMBO.h +++ b/Marlin/src/pins/rambo/pins_RAMBO.h @@ -168,9 +168,11 @@ // // M3/M4/M5 - Spindle/Laser Control // -#define SPINDLE_LASER_PWM_PIN 45 // Hardware PWM -#define SPINDLE_LASER_ENA_PIN 31 // Pullup! -#define SPINDLE_DIR_PIN 32 +#if HAS_CUTTER + #define SPINDLE_LASER_PWM_PIN 45 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 31 // Pullup! + #define SPINDLE_DIR_PIN 32 +#endif // // SPI for MAX Thermocouple diff --git a/Marlin/src/pins/ramps/pins_BAM_DICE_DUE.h b/Marlin/src/pins/ramps/pins_BAM_DICE_DUE.h index f3439aa6bb..cf237fb9c1 100644 --- a/Marlin/src/pins/ramps/pins_BAM_DICE_DUE.h +++ b/Marlin/src/pins/ramps/pins_BAM_DICE_DUE.h @@ -37,9 +37,11 @@ // // M3/M4/M5 - Spindle/Laser Control // -#define SPINDLE_LASER_ENA_PIN 66 // Pullup or pulldown! -#define SPINDLE_DIR_PIN 67 -#define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM +#if HAS_CUTTER + #define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 66 // Pullup or pulldown! + #define SPINDLE_DIR_PIN 67 +#endif // // Temperature Sensors diff --git a/Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h b/Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h index efedb8ffaf..08d4492ccb 100644 --- a/Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h +++ b/Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h @@ -95,9 +95,11 @@ // // M3/M4/M5 - Spindle/Laser Control // -#define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown! -#define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM -#define SPINDLE_DIR_PIN 42 +#if HAS_CUTTER + #define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown! + #define SPINDLE_DIR_PIN 42 +#endif // // Misc. Functions diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h index d79eb8041c..65828fd4fb 100644 --- a/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h +++ b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h @@ -44,12 +44,12 @@ // #if HAS_CUTTER && !PIN_EXISTS(SPINDLE_LASER_ENA) #if !NUM_SERVOS // Try to use servo connector first - #define SPINDLE_LASER_ENA_PIN 6 // Pullup or pulldown! #define SPINDLE_LASER_PWM_PIN 4 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 6 // Pullup or pulldown! #define SPINDLE_DIR_PIN 5 #elif !GREEDY_PANEL // Try to use AUX2 - #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown! #define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown! #define SPINDLE_DIR_PIN 65 #endif #endif diff --git a/Marlin/src/pins/ramps/pins_RAMPS.h b/Marlin/src/pins/ramps/pins_RAMPS.h index 73207593fc..422991aba4 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS.h +++ b/Marlin/src/pins/ramps/pins_RAMPS.h @@ -309,8 +309,8 @@ #endif #define SPINDLE_DIR_PIN 5 #elif HAS_FREE_AUX2_PINS - #define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown! #define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown! #define SPINDLE_DIR_PIN 65 #else #error "No auto-assignable Spindle/Laser pins available." diff --git a/Marlin/src/pins/ramps/pins_RAMPS_OLD.h b/Marlin/src/pins/ramps/pins_RAMPS_OLD.h index 19b048ec81..df24a7f19e 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_OLD.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_OLD.h @@ -113,6 +113,8 @@ // // M3/M4/M5 - Spindle/Laser Control // -#define SPINDLE_LASER_ENA_PIN 41 // Pullup or pulldown! -#define SPINDLE_LASER_PWM_PIN 45 // Hardware PWM -#define SPINDLE_DIR_PIN 43 +#if HAS_CUTTER + #define SPINDLE_LASER_PWM_PIN 45 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 41 // Pullup or pulldown! + #define SPINDLE_DIR_PIN 43 +#endif diff --git a/Marlin/src/pins/ramps/pins_RAMPS_S_12.h b/Marlin/src/pins/ramps/pins_RAMPS_S_12.h index 87535a7de8..542b3cb816 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_S_12.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_S_12.h @@ -211,8 +211,8 @@ // M3/M4/M5 - Spindle/Laser Control // #if HAS_CUTTER && !defined(SPINDLE_LASER_ENA_PIN) - #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown! #define SPINDLE_LASER_PWM_PIN 6 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown! #define SPINDLE_DIR_PIN 5 #endif diff --git a/Marlin/src/pins/ramps/pins_TT_OSCAR.h b/Marlin/src/pins/ramps/pins_TT_OSCAR.h index 7078b11b6b..d9c79f5da8 100644 --- a/Marlin/src/pins/ramps/pins_TT_OSCAR.h +++ b/Marlin/src/pins/ramps/pins_TT_OSCAR.h @@ -228,12 +228,12 @@ // #if HAS_CUTTER && !PIN_EXISTS(SPINDLE_LASER_ENA) #if !NUM_SERVOS // Prefer the servo connector - #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown! #define SPINDLE_LASER_PWM_PIN 6 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown! #define SPINDLE_DIR_PIN 5 #elif HAS_FREE_AUX2_PINS // Try to use AUX 2 - #define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown! #define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown! #define SPINDLE_DIR_PIN 65 #endif #endif diff --git a/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h b/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h index dc06963289..049e8bc5d8 100644 --- a/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h +++ b/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h @@ -151,9 +151,9 @@ // #if HAS_CUTTER // use the LED_PIN for spindle speed control or case light #undef LED_PIN - #define SPINDLE_DIR_PIN 16 - #define SPINDLE_LASER_ENA_PIN 17 // Pullup! #define SPINDLE_LASER_PWM_PIN 8 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 17 // Pullup! + #define SPINDLE_DIR_PIN 16 #else #undef LED_PIN #define CASE_LIGHT_PIN 8 diff --git a/Marlin/src/pins/ramps/pins_ULTIMAKER.h b/Marlin/src/pins/ramps/pins_ULTIMAKER.h index c822a62faf..10adeb1891 100644 --- a/Marlin/src/pins/ramps/pins_ULTIMAKER.h +++ b/Marlin/src/pins/ramps/pins_ULTIMAKER.h @@ -162,6 +162,8 @@ // // M3/M4/M5 - Spindle/Laser Control // -#define SPINDLE_LASER_PWM_PIN 9 // Hardware PWM -#define SPINDLE_LASER_ENA_PIN 10 // Pullup! -#define SPINDLE_DIR_PIN 11 // use the EXP3 PWM header +#if HAS_CUTTER + #define SPINDLE_LASER_PWM_PIN 9 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 10 // Pullup! + #define SPINDLE_DIR_PIN 11 // use the EXP3 PWM header +#endif diff --git a/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h b/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h index 5f5cb6cb12..a1b02aa06c 100644 --- a/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h +++ b/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h @@ -226,9 +226,9 @@ // #if HAS_CUTTER #if EITHER(BOARD_REV_1_0, BOARD_REV_1_5) // Use the last three SW positions - #define SPINDLE_DIR_PIN 10 // 1.0: SW4 1.5: EXP3-6 ("10") #define SPINDLE_LASER_PWM_PIN 9 // 1.0: SW5 1.5: EXP3-7 ( "9") .. MUST BE HARDWARE PWM #define SPINDLE_LASER_ENA_PIN 8 // 1.0: SW6 1.5: EXP3-8 ( "8") .. Pin should have a pullup! + #define SPINDLE_DIR_PIN 10 // 1.0: SW4 1.5: EXP3-6 ("10") #elif ENABLED(BOARD_REV_1_1_TO_1_3) /** * Only four hardware PWMs physically connected to anything on these boards: @@ -242,14 +242,14 @@ * They have an LED and resistor pullup to +24V which could damage 3.3V-5V ICs. */ #if EXTRUDERS == 1 - #define SPINDLE_DIR_PIN 43 #define SPINDLE_LASER_PWM_PIN 45 // Hardware PWM #define SPINDLE_LASER_ENA_PIN 41 // Pullup! + #define SPINDLE_DIR_PIN 43 #elif TEMP_SENSOR_BED == 0 // Can't use E0 so see if HEATER_BED_PIN is available #undef HEATER_BED_PIN - #define SPINDLE_DIR_PIN 38 // Probably pin 4 on 10 pin connector closest to the E0 socket #define SPINDLE_LASER_PWM_PIN 4 // Hardware PWM - Special precautions usually needed. #define SPINDLE_LASER_ENA_PIN 40 // Pullup! (Probably pin 6 on the 10-pin + #define SPINDLE_DIR_PIN 38 // Probably pin 4 on 10 pin connector closest to the E0 socket // connector closest to the E0 socket) #endif #endif diff --git a/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h b/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h index e4603591d1..f63ca83723 100644 --- a/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h +++ b/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h @@ -170,12 +170,12 @@ // #if HAS_CUTTER && !PIN_EXISTS(SPINDLE_LASER_ENA) #if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // Prefer the servo connector - #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown! #define SPINDLE_LASER_PWM_PIN 6 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown! #define SPINDLE_DIR_PIN 5 #elif HAS_FREE_AUX2_PINS - #define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown! #define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown! #define SPINDLE_DIR_PIN 65 #endif #endif diff --git a/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h b/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h index c84d84105c..8f206d9f87 100644 --- a/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h +++ b/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h @@ -260,7 +260,7 @@ // M3/M4/M5 - Spindle/Laser Control // #if HOTENDS < 3 && HAS_CUTTER && !PIN_EXISTS(SPINDLE_LASER_ENA) - #define SPINDLE_LASER_ENA_PIN 45 // Use E2 ENA #define SPINDLE_LASER_PWM_PIN 12 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 45 // Use E2 ENA #define SPINDLE_DIR_PIN 47 // Use E2 DIR #endif diff --git a/Marlin/src/pins/samd/pins_RAMPS_144.h b/Marlin/src/pins/samd/pins_RAMPS_144.h index aa262f5a60..a762d3cdbd 100644 --- a/Marlin/src/pins/samd/pins_RAMPS_144.h +++ b/Marlin/src/pins/samd/pins_RAMPS_144.h @@ -155,8 +155,8 @@ // #if HAS_CUTTER && !defined(SPINDLE_LASER_ENA_PIN) #if !NUM_SERVOS // Use servo connector if possible - #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown! #define SPINDLE_LASER_PWM_PIN 6 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown! #define SPINDLE_DIR_PIN 5 #else #error "No auto-assignable Spindle/Laser pins available." diff --git a/Marlin/src/pins/sanguino/pins_GEN6.h b/Marlin/src/pins/sanguino/pins_GEN6.h index 75138845f4..4a6136e081 100644 --- a/Marlin/src/pins/sanguino/pins_GEN6.h +++ b/Marlin/src/pins/sanguino/pins_GEN6.h @@ -117,6 +117,8 @@ // // M3/M4/M5 - Spindle/Laser Control // -#define SPINDLE_LASER_ENA_PIN 5 // Pullup or pulldown! -#define SPINDLE_LASER_PWM_PIN 16 // Hardware PWM -#define SPINDLE_DIR_PIN 6 +#if HAS_CUTTER + #define SPINDLE_LASER_PWM_PIN 16 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 5 // Pullup or pulldown! + #define SPINDLE_DIR_PIN 6 +#endif diff --git a/Marlin/src/pins/sanguino/pins_GEN7_14.h b/Marlin/src/pins/sanguino/pins_GEN7_14.h index 698bd06606..db80c45eee 100644 --- a/Marlin/src/pins/sanguino/pins_GEN7_14.h +++ b/Marlin/src/pins/sanguino/pins_GEN7_14.h @@ -118,6 +118,8 @@ // // M3/M4/M5 - Spindle/Laser Control // -#define SPINDLE_LASER_ENA_PIN 20 // Pullup or pulldown! -#define SPINDLE_LASER_PWM_PIN 16 // Hardware PWM -#define SPINDLE_DIR_PIN 21 +#if HAS_CUTTER + #define SPINDLE_LASER_PWM_PIN 16 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 20 // Pullup or pulldown! + #define SPINDLE_DIR_PIN 21 +#endif diff --git a/Marlin/src/pins/sanguino/pins_GEN7_CUSTOM.h b/Marlin/src/pins/sanguino/pins_GEN7_CUSTOM.h index 3927250b15..154e26725f 100644 --- a/Marlin/src/pins/sanguino/pins_GEN7_CUSTOM.h +++ b/Marlin/src/pins/sanguino/pins_GEN7_CUSTOM.h @@ -134,6 +134,8 @@ // // M3/M4/M5 - Spindle/Laser Control // -#define SPINDLE_LASER_ENA_PIN 5 // Pullup or pulldown! -#define SPINDLE_LASER_PWM_PIN 16 // Hardware PWM -#define SPINDLE_DIR_PIN 6 +#if HAS_CUTTER + #define SPINDLE_LASER_PWM_PIN 16 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 5 // Pullup or pulldown! + #define SPINDLE_DIR_PIN 6 +#endif diff --git a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h index 45b326e74e..9a80ca2e63 100644 --- a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h +++ b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h @@ -272,8 +272,8 @@ #if HAS_CUTTER #if !MB(AZTEEG_X1) && ENABLED(SANGUINOLOLU_V_1_2) && !BOTH(HAS_WIRED_LCD, IS_NEWPANEL) // try to use IO Header - #define SPINDLE_LASER_ENA_PIN 10 // Pullup or pulldown! #define SPINDLE_LASER_PWM_PIN 4 // Hardware PWM + #define SPINDLE_LASER_ENA_PIN 10 // Pullup or pulldown! #define SPINDLE_DIR_PIN 11 #elif !MB(MELZI) // use X stepper motor socket diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h index f2450ffcb4..af9a6d891e 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h @@ -86,8 +86,8 @@ //#define HEATER_0_PIN -1 //#define HEATER_BED_PIN -1 #define FAN0_PIN -1 - #define SPINDLE_LASER_ENA_PIN PC0 // FET 1 #define SPINDLE_LASER_PWM_PIN PC0 // Bed FET + #define SPINDLE_LASER_ENA_PIN PC0 // FET 1 #define SPINDLE_DIR_PIN PC0 // FET 4 #define LASER_SOFT_PWM_PIN PC0 #endif diff --git a/Marlin/src/pins/teensy2/pins_TEENSY2.h b/Marlin/src/pins/teensy2/pins_TEENSY2.h index 2b65f17bc5..9c8c6ce628 100644 --- a/Marlin/src/pins/teensy2/pins_TEENSY2.h +++ b/Marlin/src/pins/teensy2/pins_TEENSY2.h @@ -182,6 +182,8 @@ // // M3/M4/M5 - Spindle/Laser Control // -#define SPINDLE_LASER_ENA_PIN 5 // D5 Pin should have a pullup! -#define SPINDLE_LASER_PWM_PIN 0 // D0 PWM0B MUST BE HARDWARE PWM -#define SPINDLE_DIR_PIN 7 // D7 +#if HAS_CUTTER + #define SPINDLE_LASER_PWM_PIN 0 // D0 PWM0B MUST BE HARDWARE PWM + #define SPINDLE_LASER_ENA_PIN 5 // D5 Pin should have a pullup! + #define SPINDLE_DIR_PIN 7 // D7 +#endif diff --git a/Marlin/src/pins/teensy2/pins_TEENSYLU.h b/Marlin/src/pins/teensy2/pins_TEENSYLU.h index 81bb56349f..deeffe9038 100644 --- a/Marlin/src/pins/teensy2/pins_TEENSYLU.h +++ b/Marlin/src/pins/teensy2/pins_TEENSYLU.h @@ -167,6 +167,8 @@ // // M3/M4/M5 - Spindle/Laser Control // -#define SPINDLE_LASER_PWM_PIN 24 // B4 IO-3 PWM2A - MUST BE HARDWARE PWM -#define SPINDLE_LASER_ENA_PIN 39 // F1 IO-11 - Pin should have a pullup! -#define SPINDLE_DIR_PIN 40 // F2 IO-9 +#if HAS_CUTTER + #define SPINDLE_LASER_PWM_PIN 24 // B4 IO-3 PWM2A - MUST BE HARDWARE PWM + #define SPINDLE_LASER_ENA_PIN 39 // F1 IO-11 - Pin should have a pullup! + #define SPINDLE_DIR_PIN 40 // F2 IO-9 +#endif From 26dfbd0660c10328847698b021e8ac9101810056 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 20 May 2023 00:19:33 +0000 Subject: [PATCH 458/659] [cron] Bump distribution date (2023-05-20) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 20d39cad45..8ea8917f48 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-19" +//#define STRING_DISTRIBUTION_DATE "2023-05-20" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index ae6f5a88cc..8d6d94c448 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-19" + #define STRING_DISTRIBUTION_DATE "2023-05-20" #endif /** From 5bc84bf08cb47741537fe705dbfe19eee5396d4e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 19 May 2023 23:30:48 -0500 Subject: [PATCH 459/659] =?UTF-8?q?=F0=9F=9A=B8=20Improve=20EEPROM=20valid?= =?UTF-8?q?ation=20(#25860)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/language.h | 1 + Marlin/src/lcd/language/language_de.h | 2 +- Marlin/src/lcd/language/language_en.h | 7 +- Marlin/src/lcd/language/language_es.h | 2 +- Marlin/src/lcd/language/language_gl.h | 2 +- Marlin/src/lcd/language/language_hu.h | 2 +- Marlin/src/lcd/language/language_it.h | 2 +- Marlin/src/lcd/language/language_ro.h | 6 +- Marlin/src/lcd/language/language_ru.h | 2 +- Marlin/src/lcd/language/language_sk.h | 2 +- Marlin/src/lcd/language/language_sv.h | 2 +- Marlin/src/lcd/language/language_tr.h | 2 +- Marlin/src/lcd/language/language_uk.h | 2 +- Marlin/src/lcd/language/language_zh_CN.h | 6 +- Marlin/src/lcd/language/language_zh_TW.h | 4 +- Marlin/src/lcd/marlinui.cpp | 24 +-- Marlin/src/lcd/marlinui.h | 11 +- Marlin/src/module/settings.cpp | 213 +++++++++++++++++------ Marlin/src/module/settings.h | 19 +- 19 files changed, 210 insertions(+), 101 deletions(-) diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h index 388e7cd820..521fcfca3e 100644 --- a/Marlin/src/core/language.h +++ b/Marlin/src/core/language.h @@ -193,6 +193,7 @@ #define STR_ERR_LONG_EXTRUDE_STOP " too long extrusion prevented" #define STR_ERR_HOTEND_TOO_COLD "Hotend too cold" #define STR_ERR_EEPROM_WRITE "Error writing to EEPROM!" +#define STR_ERR_EEPROM_CORRUPT "EEPROM Corrupt" #define STR_FILAMENT_CHANGE_HEAT_LCD "Press button to heat nozzle" #define STR_FILAMENT_CHANGE_INSERT_LCD "Insert filament and press button" diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h index 534d49ade9..359afd8ad2 100644 --- a/Marlin/src/lcd/language/language_de.h +++ b/Marlin/src/lcd/language/language_de.h @@ -414,7 +414,7 @@ namespace Language_de { LSTR MSG_RESTORE_DEFAULTS = _UxGT("Standardwerte laden"); LSTR MSG_INIT_EEPROM = _UxGT("Werkseinstellungen"); LSTR MSG_ERR_EEPROM_CRC = _UxGT("EEPROM CRC Fehler"); - LSTR MSG_ERR_EEPROM_INDEX = _UxGT("EEPROM Index Fehler"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("EEPROM Größe Fehler"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("EEPROM Version Fehler"); LSTR MSG_SETTINGS_STORED = _UxGT("Einstell. gespei."); LSTR MSG_MEDIA_UPDATE = _UxGT("FW Update vom Medium"); diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index bc97407fc2..568ad49df0 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -457,9 +457,10 @@ namespace Language_en { LSTR MSG_LOAD_EEPROM = _UxGT("Load Settings"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restore Defaults"); LSTR MSG_INIT_EEPROM = _UxGT("Initialize EEPROM"); - LSTR MSG_ERR_EEPROM_CRC = _UxGT("EEPROM CRC Error"); - LSTR MSG_ERR_EEPROM_INDEX = _UxGT("EEPROM Index Error"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("EEPROM Version Error"); + LSTR MSG_ERR_EEPROM_CRC = _UxGT("Err: EEPROM CRC"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: EEPROM Size"); + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: EEPROM Version"); + LSTR MSG_ERR_EEPROM_CORRUPT = _UxGT("Err: EEPROM Corrupt"); LSTR MSG_SETTINGS_STORED = _UxGT("Settings Stored"); LSTR MSG_MEDIA_UPDATE = MEDIA_TYPE_EN _UxGT(" Update"); LSTR MSG_RESET_PRINTER = _UxGT("Reset Printer"); diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h index f3d6fc577d..b2e5af70f5 100644 --- a/Marlin/src/lcd/language/language_es.h +++ b/Marlin/src/lcd/language/language_es.h @@ -315,7 +315,7 @@ namespace Language_es { LSTR MSG_RESTORE_DEFAULTS = _UxGT("Rest. fábrica"); LSTR MSG_INIT_EEPROM = _UxGT("Inicializar EEPROM"); LSTR MSG_ERR_EEPROM_CRC = _UxGT("Err: EEPROM CRC"); - LSTR MSG_ERR_EEPROM_INDEX = _UxGT("Err: Índice EEPROM"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: EEPROM Tamaño"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: Versión EEPROM"); LSTR MSG_MEDIA_UPDATE = _UxGT("Actualizar SD/FD"); LSTR MSG_RESET_PRINTER = _UxGT("Resetear Impresora"); diff --git a/Marlin/src/lcd/language/language_gl.h b/Marlin/src/lcd/language/language_gl.h index 83855dd56d..fcdee2405c 100644 --- a/Marlin/src/lcd/language/language_gl.h +++ b/Marlin/src/lcd/language/language_gl.h @@ -317,7 +317,7 @@ namespace Language_gl { LSTR MSG_RESTORE_DEFAULTS = _UxGT("Rest. Defecto"); LSTR MSG_INIT_EEPROM = _UxGT("Inicializar EEPROM"); LSTR MSG_ERR_EEPROM_CRC = _UxGT("Erro: CRC EEPROM"); - LSTR MSG_ERR_EEPROM_INDEX = _UxGT("Erro: Índice EEPROM"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Erro: Tamaño EEPROM"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Erro: Versión EEPROM"); LSTR MSG_SETTINGS_STORED = _UxGT("Config Gardada"); LSTR MSG_MEDIA_UPDATE = _UxGT("Actualizar SD/FD"); diff --git a/Marlin/src/lcd/language/language_hu.h b/Marlin/src/lcd/language/language_hu.h index 99062ca5c3..8a6f66f994 100644 --- a/Marlin/src/lcd/language/language_hu.h +++ b/Marlin/src/lcd/language/language_hu.h @@ -363,7 +363,7 @@ namespace Language_hu { LSTR MSG_RESTORE_DEFAULTS = _UxGT("Alapértelmezett"); LSTR MSG_INIT_EEPROM = _UxGT("EEPROM inicializálás"); LSTR MSG_ERR_EEPROM_CRC = _UxGT("Hiba: EEPROM CRC"); - LSTR MSG_ERR_EEPROM_INDEX = _UxGT("Hiba: EEPROM index"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Hiba: EEPROM mérete"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Hiba: EEPROM verzió"); LSTR MSG_SETTINGS_STORED = _UxGT("Beállítások mentve"); LSTR MSG_MEDIA_UPDATE = _UxGT("Tároló frissítés"); diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index bd0d2f2257..96c1499f55 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -451,7 +451,7 @@ namespace Language_it { LSTR MSG_RESTORE_DEFAULTS = _UxGT("Ripristina imp."); LSTR MSG_INIT_EEPROM = _UxGT("Inizializza EEPROM"); LSTR MSG_ERR_EEPROM_CRC = _UxGT("Err: CRC EEPROM"); - LSTR MSG_ERR_EEPROM_INDEX = _UxGT("Err: Indice EEPROM"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: Taglia EEPROM"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: Versione EEPROM"); LSTR MSG_SETTINGS_STORED = _UxGT("Impostazioni mem."); LSTR MSG_MEDIA_UPDATE = _UxGT("Aggiorna media"); diff --git a/Marlin/src/lcd/language/language_ro.h b/Marlin/src/lcd/language/language_ro.h index 327ba7ad81..75f27c1ecf 100644 --- a/Marlin/src/lcd/language/language_ro.h +++ b/Marlin/src/lcd/language/language_ro.h @@ -317,9 +317,9 @@ namespace Language_ro { LSTR MSG_LOAD_EEPROM = _UxGT("Load Settings"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restore Defaults"); LSTR MSG_INIT_EEPROM = _UxGT("Initialize EEPROM"); - LSTR MSG_ERR_EEPROM_CRC = _UxGT("EEPROM CRC Error"); - LSTR MSG_ERR_EEPROM_INDEX = _UxGT("EEPROM Index Error"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("EEPROM Version Error"); + LSTR MSG_ERR_EEPROM_CRC = _UxGT("Err: EEPROM CRC"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: Mărimea EEPROM"); + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: Versiunea EEPROM"); LSTR MSG_SETTINGS_STORED = _UxGT("Settings Stored"); LSTR MSG_MEDIA_UPDATE = _UxGT("Media Update"); LSTR MSG_RESET_PRINTER = _UxGT("Reset Imprimanta"); diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index b5815be1bd..25f62173f3 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -452,7 +452,7 @@ namespace Language_ru { LSTR MSG_INIT_EEPROM = _UxGT("Инициализ. EEPROM"); #endif LSTR MSG_ERR_EEPROM_CRC = _UxGT("Сбой EEPROM: CRC"); - LSTR MSG_ERR_EEPROM_INDEX = _UxGT("Сбой EEPROM: индекс"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Сбой EEPROM: размер"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Сбой EEPROM: версия"); LSTR MSG_SETTINGS_STORED = _UxGT("Параметры сохранены"); LSTR MSG_MEDIA_UPDATE = _UxGT("Обновление прошивки"); diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h index 907b865bd9..572e7fe9ea 100644 --- a/Marlin/src/lcd/language/language_sk.h +++ b/Marlin/src/lcd/language/language_sk.h @@ -452,7 +452,7 @@ namespace Language_sk { LSTR MSG_RESTORE_DEFAULTS = _UxGT("Obnoviť nastavenie"); LSTR MSG_INIT_EEPROM = _UxGT("Inicializ. EEPROM"); LSTR MSG_ERR_EEPROM_CRC = _UxGT("Chyba: EEPROM CRC"); - LSTR MSG_ERR_EEPROM_INDEX = _UxGT("Chyba: EEPROM Index"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Chyba: Veľkosť EEPROM"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Chyba: Verzia EEPROM"); LSTR MSG_SETTINGS_STORED = _UxGT("Nastavenie uložené"); LSTR MSG_MEDIA_UPDATE = _UxGT("Aktualiz. z karty"); diff --git a/Marlin/src/lcd/language/language_sv.h b/Marlin/src/lcd/language/language_sv.h index 570bc3df8d..d264c1e6e2 100644 --- a/Marlin/src/lcd/language/language_sv.h +++ b/Marlin/src/lcd/language/language_sv.h @@ -348,7 +348,7 @@ namespace Language_sv { LSTR MSG_RESTORE_DEFAULTS = _UxGT("Återställ Standard"); LSTR MSG_INIT_EEPROM = _UxGT("Initiera EEPROM"); LSTR MSG_ERR_EEPROM_CRC = _UxGT("EEPROM CRC Fel"); - LSTR MSG_ERR_EEPROM_INDEX = _UxGT("EEPROM Index Fel"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("EEPROM Storlek Fel"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("EEPROM Version Fel"); LSTR MSG_SETTINGS_STORED = _UxGT("Inställningar Lagrad"); LSTR MSG_MEDIA_UPDATE = _UxGT("Media Uppdatera"); diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h index 1054137230..5fc78758d4 100644 --- a/Marlin/src/lcd/language/language_tr.h +++ b/Marlin/src/lcd/language/language_tr.h @@ -431,7 +431,7 @@ namespace Language_tr { LSTR MSG_RESTORE_DEFAULTS = _UxGT("Fabrika Ayarları"); LSTR MSG_INIT_EEPROM = _UxGT("EEPROM'u başlat"); LSTR MSG_ERR_EEPROM_CRC = _UxGT("Hata: EEPROM CRC"); - LSTR MSG_ERR_EEPROM_INDEX = _UxGT("Hata: EEPROM Indeks"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Hata: EEPROM Boyutu"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Hata: EEPROM Sürümü"); LSTR MSG_SETTINGS_STORED = _UxGT("Ayarlar Kaydedildi"); LSTR MSG_MEDIA_UPDATE = _UxGT("SD Güncellemesi"); diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h index 4ee32fe4bc..3a644a0b34 100644 --- a/Marlin/src/lcd/language/language_uk.h +++ b/Marlin/src/lcd/language/language_uk.h @@ -465,7 +465,7 @@ namespace Language_uk { LSTR MSG_INIT_EEPROM = _UxGT("Ініціаліз. EEPROM"); #endif LSTR MSG_ERR_EEPROM_CRC = _UxGT("Збій EEPROM: CRC"); - LSTR MSG_ERR_EEPROM_INDEX = _UxGT("Збій EEPROM: індекс"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Збій EEPROM: розмір"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Збій EEPROM: версія"); LSTR MSG_SETTINGS_STORED = _UxGT("Параметри збережені"); LSTR MSG_MEDIA_UPDATE = _UxGT("Оновити SD-картку"); diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h index 27f2a597c6..7acd0d8e8f 100644 --- a/Marlin/src/lcd/language/language_zh_CN.h +++ b/Marlin/src/lcd/language/language_zh_CN.h @@ -317,9 +317,9 @@ namespace Language_zh_CN { LSTR MSG_LOAD_EEPROM = _UxGT("装载设置"); // "Load memory" LSTR MSG_RESTORE_DEFAULTS = _UxGT("恢复安全值"); // "Restore Defaults" LSTR MSG_INIT_EEPROM = _UxGT("初始化设置"); // "Initialize EEPROM" - LSTR MSG_ERR_EEPROM_CRC = _UxGT("EEPROM CRC 错误"); - LSTR MSG_ERR_EEPROM_INDEX = _UxGT("EEPROM Index 错误"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("EEPROM Version 错误"); + LSTR MSG_ERR_EEPROM_CRC = _UxGT("EEPROM 校验和 错误"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("EEPROM 尺寸 错误"); + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("EEPROM 版本 错误"); LSTR MSG_SETTINGS_STORED = _UxGT("设置已保存"); LSTR MSG_MEDIA_UPDATE = _UxGT("存储器更新"); LSTR MSG_RESET_PRINTER = _UxGT("复位打印机"); diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h index 570dc292c5..9365225cae 100644 --- a/Marlin/src/lcd/language/language_zh_TW.h +++ b/Marlin/src/lcd/language/language_zh_TW.h @@ -299,8 +299,8 @@ namespace Language_zh_TW { LSTR MSG_RESTORE_DEFAULTS = _UxGT("恢復安全值"); // "Restore failsafe" LSTR MSG_INIT_EEPROM = _UxGT("初始化設置"); // "Initialize EEPROM" LSTR MSG_ERR_EEPROM_CRC = _UxGT("錯誤: EEPROM CRC"); // "Err: EEPROM CRC" - LSTR MSG_ERR_EEPROM_INDEX = _UxGT("錯誤: EEPROM Index"); // "Err: EEPROM Index" - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("錯誤: EEPROM Version"); // "EEPROM Version" + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("錯誤: EEPROM 尺寸"); // "Err: EEPROM Index" + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("錯誤: EEPROM 版本"); // "EEPROM Version" LSTR MSG_MEDIA_UPDATE = _UxGT("媒體更新"); // "Media Update" LSTR MSG_RESET_PRINTER = _UxGT("重置打印機"); // "Reset Printer LSTR MSG_REFRESH = _UxGT("刷新"); // "Refresh" diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index e8956ab9e1..1c4bbe5fa9 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -1913,18 +1913,22 @@ void MarlinUI::init() { #if DISABLED(EEPROM_AUTO_INIT) - static inline FSTR_P eeprom_err(const uint8_t msgid) { - switch (msgid) { - default: - case 0: return GET_TEXT_F(MSG_ERR_EEPROM_CRC); - case 1: return GET_TEXT_F(MSG_ERR_EEPROM_INDEX); - case 2: return GET_TEXT_F(MSG_ERR_EEPROM_VERSION); + static inline FSTR_P eeprom_err(const EEPROM_Error err) { + switch (err) { + case ERR_EEPROM_VERSION: return GET_TEXT_F(MSG_ERR_EEPROM_VERSION); + case ERR_EEPROM_SIZE: return GET_TEXT_F(MSG_ERR_EEPROM_SIZE); + case ERR_EEPROM_CRC: return GET_TEXT_F(MSG_ERR_EEPROM_CRC); + case ERR_EEPROM_CORRUPT: return GET_TEXT_F(MSG_ERR_EEPROM_CORRUPT); + default: return nullptr; } } - void MarlinUI::eeprom_alert(const uint8_t msgid) { + void MarlinUI::eeprom_alert(const EEPROM_Error err) { + FSTR_P const err_msg = eeprom_err(err); + set_status(err_msg); + TERN_(HOST_PROMPT_SUPPORT, hostui.notify(err_msg)); #if HAS_MARLINUI_MENU - editable.uint8 = msgid; + editable.uint8 = err; goto_screen([]{ FSTR_P const restore_msg = GET_TEXT_F(MSG_INIT_EEPROM); char msg[utf8_strlen(restore_msg) + 1]; @@ -1932,11 +1936,9 @@ void MarlinUI::init() { MenuItem_confirm::select_screen( GET_TEXT_F(MSG_BUTTON_RESET), GET_TEXT_F(MSG_BUTTON_IGNORE), init_eeprom, return_to_status, - eeprom_err(editable.uint8), msg, F("?") + eeprom_err((EEPROM_Error)editable.uint8), msg, F("?") ); }); - #else - set_status(eeprom_err(msgid)); #endif } diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index 9c5e192fb2..ccdbd64322 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -27,6 +27,10 @@ #include "../libs/buzzer.h" #include "buttons.h" +#if ENABLED(EEPROM_SETTINGS) + #include "../module/settings.h" +#endif + #if ENABLED(TOUCH_SCREEN_CALIBRATION) #include "tft_io/touch_calibration.h" #endif @@ -674,12 +678,7 @@ public: static void load_settings(); static void store_settings(); #endif - #if DISABLED(EEPROM_AUTO_INIT) - static void eeprom_alert(const uint8_t msgid); - static void eeprom_alert_crc() { eeprom_alert(0); } - static void eeprom_alert_index() { eeprom_alert(1); } - static void eeprom_alert_version() { eeprom_alert(2); } - #endif + static void eeprom_alert(const EEPROM_Error) TERN_(EEPROM_AUTO_INIT, {}); #endif // diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 58e00b7fb0..28eee57c08 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -36,12 +36,13 @@ */ // Change EEPROM version if the structure changes -#define EEPROM_VERSION "V87" +#define EEPROM_VERSION "V88" #define EEPROM_OFFSET 100 // Check the integrity of data offsets. // Can be disabled for production build. //#define DEBUG_EEPROM_READWRITE +//#define DEBUG_EEPROM_OBSERVE #include "settings.h" @@ -211,7 +212,8 @@ typedef struct SettingsDataStruct { #if ENABLED(EEPROM_INIT_NOW) uint32_t build_hash; // Unique build hash #endif - uint16_t crc; // Data Checksum + uint16_t crc; // Data Checksum for validation + uint16_t data_size; // Data Size for validation // // DISTINCT_E_FACTORS @@ -264,6 +266,7 @@ typedef struct SettingsDataStruct { // float mbl_z_offset; // bedlevel.z_offset uint8_t mesh_num_x, mesh_num_y; // GRID_MAX_POINTS_X, GRID_MAX_POINTS_Y + uint16_t mesh_check; // Hash to check against X/Y float mbl_z_values[TERN(MESH_BED_LEVELING, GRID_MAX_POINTS_X, 3)] // bedlevel.z_values [TERN(MESH_BED_LEVELING, GRID_MAX_POINTS_Y, 3)]; @@ -283,6 +286,7 @@ typedef struct SettingsDataStruct { // AUTO_BED_LEVELING_BILINEAR // uint8_t grid_max_x, grid_max_y; // GRID_MAX_POINTS_X, GRID_MAX_POINTS_Y + uint16_t grid_check; // Hash to check against X/Y xy_pos_t bilinear_grid_spacing, bilinear_start; // G29 L F #if ENABLED(AUTO_BED_LEVELING_BILINEAR) bed_mesh_t z_values; // G29 @@ -744,10 +748,13 @@ void MarlinSettings::postprocess() { #if ENABLED(EEPROM_SETTINGS) - #define EEPROM_ASSERT(TST,ERR) do{ if (!(TST)) { SERIAL_ERROR_MSG(ERR); eeprom_error = true; } }while(0) + #define EEPROM_ASSERT(TST,ERR) do{ if (!(TST)) { SERIAL_ERROR_MSG(ERR); eeprom_error = ERR_EEPROM_SIZE; } }while(0) + + #define TWO_BYTE_HASH(A,B) uint16_t((uint16_t(A ^ 0xC3) << 4) ^ (uint16_t(B ^ 0xC3) << 12)) #if ENABLED(DEBUG_EEPROM_READWRITE) #define _FIELD_TEST(FIELD) \ + SERIAL_ECHOLNPGM("Field: " STRINGIFY(FIELD)); \ EEPROM_ASSERT( \ eeprom_error || eeprom_index == offsetof(SettingsData, FIELD) + EEPROM_OFFSET, \ "Field " STRINGIFY(FIELD) " mismatch." \ @@ -756,6 +763,14 @@ void MarlinSettings::postprocess() { #define _FIELD_TEST(FIELD) NOOP #endif + #if ENABLED(DEBUG_EEPROM_OBSERVE) + #define EEPROM_READ(V...) do{ SERIAL_ECHOLNPGM("READ: ", F(STRINGIFY(FIRST(V)))); EEPROM_READ_(V); }while(0) + #define EEPROM_READ_ALWAYS(V...) do{ SERIAL_ECHOLNPGM("READ: ", F(STRINGIFY(FIRST(V)))); EEPROM_READ_ALWAYS_(V); }while(0) + #else + #define EEPROM_READ(V...) EEPROM_READ_(V) + #define EEPROM_READ_ALWAYS(V...) EEPROM_READ_ALWAYS_(V) + #endif + const char version[4] = EEPROM_VERSION; #if ENABLED(EEPROM_INIT_NOW) @@ -765,20 +780,20 @@ void MarlinSettings::postprocess() { constexpr uint32_t build_hash = strhash32(__DATE__ __TIME__); #endif - bool MarlinSettings::eeprom_error, MarlinSettings::validating; + bool MarlinSettings::validating; int MarlinSettings::eeprom_index; uint16_t MarlinSettings::working_crc; - bool MarlinSettings::size_error(const uint16_t size) { + EEPROM_Error MarlinSettings::size_error(const uint16_t size) { if (size != datasize()) { DEBUG_ERROR_MSG("EEPROM datasize error." #if ENABLED(MARLIN_DEV_MODE) " (Actual:", size, " Expected:", datasize(), ")" #endif ); - return true; + return ERR_EEPROM_SIZE; } - return false; + return ERR_EEPROM_NOERR; } /** @@ -790,18 +805,25 @@ void MarlinSettings::postprocess() { if (!EEPROM_START(EEPROM_OFFSET)) return false; - eeprom_error = false; + EEPROM_Error eeprom_error = ERR_EEPROM_NOERR; // Write or Skip version. (Flash doesn't allow rewrite without erase.) TERN(FLASH_EEPROM_EMULATION, EEPROM_SKIP, EEPROM_WRITE)(ver); #if ENABLED(EEPROM_INIT_NOW) - EEPROM_SKIP(build_hash); // Skip the hash slot + EEPROM_SKIP(build_hash); // Skip the hash slot which will be written later #endif EEPROM_SKIP(working_crc); // Skip the checksum slot - working_crc = 0; // clear before first "real data" + // + // Clear after skipping CRC and before writing the CRC'ed data + // + working_crc = 0; + + // Write the size of the data structure for use in validation + const uint16_t data_size = datasize(); + EEPROM_WRITE(data_size); const uint8_t e_factors = DISTINCT_AXES - (NUM_AXES); _FIELD_TEST(e_factors); @@ -915,6 +937,10 @@ void MarlinSettings::postprocess() { EEPROM_WRITE(mesh_num_x); EEPROM_WRITE(mesh_num_y); + // Check value for the X/Y values + const uint16_t mesh_check = TWO_BYTE_HASH(mesh_num_x, mesh_num_y); + EEPROM_WRITE(mesh_check); + #if ENABLED(MESH_BED_LEVELING) EEPROM_WRITE(bedlevel.z_values); #else @@ -964,6 +990,11 @@ void MarlinSettings::postprocess() { grid_max_y = TERN(AUTO_BED_LEVELING_BILINEAR, GRID_MAX_POINTS_Y, 3); EEPROM_WRITE(grid_max_x); EEPROM_WRITE(grid_max_y); + + // Check value for the X/Y values + const uint16_t grid_check = TWO_BYTE_HASH(grid_max_x, grid_max_y); + EEPROM_WRITE(grid_check); + #if ENABLED(AUTO_BED_LEVELING_BILINEAR) EEPROM_WRITE(bedlevel.grid_spacing); EEPROM_WRITE(bedlevel.grid_start); @@ -1684,7 +1715,7 @@ void MarlinSettings::postprocess() { // // Report final CRC and Data Size // - if (!eeprom_error) { + if (eeprom_error == ERR_EEPROM_NOERR) { const uint16_t eeprom_size = eeprom_index - (EEPROM_OFFSET), final_crc = working_crc; @@ -1700,7 +1731,7 @@ void MarlinSettings::postprocess() { // Report storage size DEBUG_ECHO_MSG("Settings Stored (", eeprom_size, " bytes; crc ", (uint32_t)final_crc, ")"); - eeprom_error |= size_error(eeprom_size); + eeprom_error = size_error(eeprom_size); } EEPROM_FINISH(); @@ -1712,56 +1743,82 @@ void MarlinSettings::postprocess() { store_mesh(bedlevel.storage_slot); #endif - if (!eeprom_error) { + const bool success = (eeprom_error == ERR_EEPROM_NOERR); + if (success) { LCD_MESSAGE(MSG_SETTINGS_STORED); TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_SETTINGS_STORED))); } - TERN_(EXTENSIBLE_UI, ExtUI::onSettingsStored(!eeprom_error)); + TERN_(EXTENSIBLE_UI, ExtUI::onSettingsStored(success)); - return !eeprom_error; + return success; } /** * M501 - Retrieve Configuration */ - bool MarlinSettings::_load() { - if (!EEPROM_START(EEPROM_OFFSET)) return false; + EEPROM_Error MarlinSettings::_load() { + EEPROM_Error eeprom_error = ERR_EEPROM_NOERR; + + if (!EEPROM_START(EEPROM_OFFSET)) return eeprom_error; char stored_ver[4]; EEPROM_READ_ALWAYS(stored_ver); - // Version has to match or defaults are used - if (strncmp(version, stored_ver, 3) != 0) { - if (stored_ver[3] != '\0') { - stored_ver[0] = '?'; - stored_ver[1] = '\0'; + uint16_t stored_crc; + + do { // A block to break out of on error + + // Version has to match or defaults are used + if (strncmp(version, stored_ver, 3) != 0) { + if (stored_ver[3] != '\0') { + stored_ver[0] = '?'; + stored_ver[1] = '\0'; + } + DEBUG_ECHO_MSG("EEPROM version mismatch (EEPROM=", stored_ver, " Marlin=" EEPROM_VERSION ")"); + eeprom_error = ERR_EEPROM_VERSION; + break; } - DEBUG_ECHO_MSG("EEPROM version mismatch (EEPROM=", stored_ver, " Marlin=" EEPROM_VERSION ")"); - LCD_MESSAGE(MSG_ERR_EEPROM_VERSION); - TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_ERR_EEPROM_VERSION))); - IF_DISABLED(EEPROM_AUTO_INIT, ui.eeprom_alert_version()); - eeprom_error = true; - } - else { - - // Optionally reset on the first boot after flashing + // + // Optionally reset on first boot after flashing + // #if ENABLED(EEPROM_INIT_NOW) uint32_t stored_hash; EEPROM_READ_ALWAYS(stored_hash); - if (stored_hash != build_hash) { EEPROM_FINISH(); return false; } + if (stored_hash != build_hash) { + eeprom_error = ERR_EEPROM_CORRUPT; + break; + } #endif - uint16_t stored_crc; + // + // Get the stored CRC to compare at the end + // EEPROM_READ_ALWAYS(stored_crc); + // + // A temporary float for safe storage + // float dummyf = 0; - working_crc = 0; // Init to 0. Accumulated by EEPROM_READ - _FIELD_TEST(e_factors); + // + // Init to 0. Accumulated by EEPROM_READ + // + working_crc = 0; + // + // Validate the stored size against the current data structure size + // + uint16_t stored_size; + EEPROM_READ_ALWAYS(stored_size); + if ((eeprom_error = size_error(stored_size))) break; + + // + // Extruder Parameter Count // Number of e_factors may change + // + _FIELD_TEST(e_factors); uint8_t e_factors; EEPROM_READ_ALWAYS(e_factors); @@ -1872,16 +1929,28 @@ void MarlinSettings::postprocess() { // { uint8_t mesh_num_x, mesh_num_y; + uint16_t mesh_check; EEPROM_READ(dummyf); EEPROM_READ_ALWAYS(mesh_num_x); EEPROM_READ_ALWAYS(mesh_num_y); + // Check value must correspond to the X/Y values + EEPROM_READ_ALWAYS(mesh_check); + if (mesh_check != TWO_BYTE_HASH(mesh_num_x, mesh_num_y)) { + eeprom_error = ERR_EEPROM_CORRUPT; + break; + } + #if ENABLED(MESH_BED_LEVELING) if (!validating) bedlevel.z_offset = dummyf; if (mesh_num_x == (GRID_MAX_POINTS_X) && mesh_num_y == (GRID_MAX_POINTS_Y)) { // EEPROM data fits the current mesh EEPROM_READ(bedlevel.z_values); } + else if (mesh_num_x > (GRID_MAX_POINTS_X) || mesh_num_y > (GRID_MAX_POINTS_Y)) { + eeprom_error = ERR_EEPROM_CORRUPT; + break; + } else { // EEPROM data is stale if (!validating) bedlevel.reset(); @@ -1926,6 +1995,15 @@ void MarlinSettings::postprocess() { uint8_t grid_max_x, grid_max_y; EEPROM_READ_ALWAYS(grid_max_x); // 1 byte EEPROM_READ_ALWAYS(grid_max_y); // 1 byte + + // Check value must correspond to the X/Y values + uint16_t grid_check; + EEPROM_READ_ALWAYS(grid_check); + if (grid_check != TWO_BYTE_HASH(grid_max_x, grid_max_y)) { + eeprom_error = ERR_EEPROM_CORRUPT; + break; + } + xy_pos_t spacing, start; EEPROM_READ(spacing); // 2 ints EEPROM_READ(start); // 2 ints @@ -1935,6 +2013,10 @@ void MarlinSettings::postprocess() { bedlevel.set_grid(spacing, start); EEPROM_READ(bedlevel.z_values); // 9 to 256 floats } + else if (grid_max_x > (GRID_MAX_POINTS_X) || grid_max_y > (GRID_MAX_POINTS_Y)) { + eeprom_error = ERR_EEPROM_CORRUPT; + break; + } else // EEPROM data is stale #endif // AUTO_BED_LEVELING_BILINEAR { @@ -2700,27 +2782,22 @@ void MarlinSettings::postprocess() { // // Validate Final Size and CRC // - eeprom_error = size_error(eeprom_index - (EEPROM_OFFSET)); - if (eeprom_error) { - DEBUG_ECHO_MSG("Index: ", eeprom_index - (EEPROM_OFFSET), " Size: ", datasize()); - IF_DISABLED(EEPROM_AUTO_INIT, ui.eeprom_alert_index()); + const uint16_t eeprom_total = eeprom_index - (EEPROM_OFFSET); + if ((eeprom_error = size_error(eeprom_total))) { + // Handle below and on return + break; } else if (working_crc != stored_crc) { - eeprom_error = true; - DEBUG_ERROR_MSG("EEPROM CRC mismatch - (stored) ", stored_crc, " != ", working_crc, " (calculated)!"); - LCD_MESSAGE(MSG_ERR_EEPROM_CRC); - TERN_(HOST_EEPROM_CHITCHAT, hostui.notify(GET_TEXT_F(MSG_ERR_EEPROM_CRC))); - IF_DISABLED(EEPROM_AUTO_INIT, ui.eeprom_alert_crc()); + eeprom_error = ERR_EEPROM_CRC; + break; } else if (!validating) { DEBUG_ECHO_START(); DEBUG_ECHO(version); - DEBUG_ECHOLNPGM(" stored settings retrieved (", eeprom_index - (EEPROM_OFFSET), " bytes; crc ", (uint32_t)working_crc, ")"); + DEBUG_ECHOLNPGM(" stored settings retrieved (", eeprom_total, " bytes; crc ", working_crc, ")"); TERN_(HOST_EEPROM_CHITCHAT, hostui.notify(F("Stored settings retrieved"))); } - if (!validating && !eeprom_error) postprocess(); - #if ENABLED(AUTO_BED_LEVELING_UBL) if (!validating) { bedlevel.report_state(); @@ -2732,7 +2809,7 @@ void MarlinSettings::postprocess() { #endif } else { - eeprom_error = true; + eeprom_error = ERR_EEPROM_CORRUPT; #if BOTH(EEPROM_CHITCHAT, DEBUG_LEVELING_FEATURE) DEBUG_ECHOPGM("?Can't enable "); bedlevel.echo_name(); @@ -2751,6 +2828,26 @@ void MarlinSettings::postprocess() { } } #endif + + } while(0); + + EEPROM_FINISH(); + + switch (eeprom_error) { + case ERR_EEPROM_NOERR: + if (!validating) postprocess(); + break; + case ERR_EEPROM_SIZE: + DEBUG_ECHO_MSG("Index: ", eeprom_index - (EEPROM_OFFSET), " Size: ", datasize()); + break; + case ERR_EEPROM_CORRUPT: + DEBUG_ERROR_MSG(STR_ERR_EEPROM_CORRUPT); + break; + case ERR_EEPROM_CRC: + DEBUG_ERROR_MSG("EEPROM CRC mismatch - (stored) ", stored_crc, " != ", working_crc, " (calculated)!"); + TERN_(HOST_EEPROM_CHITCHAT, hostui.notify(GET_TEXT_F(MSG_ERR_EEPROM_CRC))); + break; + default: break; } #if ENABLED(EEPROM_CHITCHAT) && DISABLED(DISABLE_M503) @@ -2758,9 +2855,7 @@ void MarlinSettings::postprocess() { if (!validating && TERN1(EEPROM_BOOT_SILENT, IsRunning())) report(); #endif - EEPROM_FINISH(); - - return !eeprom_error; + return eeprom_error; } #ifdef ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE @@ -2770,21 +2865,25 @@ void MarlinSettings::postprocess() { bool MarlinSettings::validate() { validating = true; #ifdef ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE - bool success = _load(); - if (!success && restoreEEPROM()) { + EEPROM_Error err = _load(); + if (err != ERR_EEPROM_NOERR && restoreEEPROM()) { SERIAL_ECHOLNPGM("Recovered backup EEPROM settings from SPI Flash"); - success = _load(); + err = _load(); } #else - const bool success = _load(); + const EEPROM_Error err = _load(); #endif validating = false; - return success; + + if (err) ui.eeprom_alert(err); + + return (err == ERR_EEPROM_NOERR); } bool MarlinSettings::load() { if (validate()) { - const bool success = _load(); + const EEPROM_Error err = _load(); + const bool success = (err == ERR_EEPROM_NOERR); TERN_(EXTENSIBLE_UI, ExtUI::onSettingsLoaded(success)); return success; } diff --git a/Marlin/src/module/settings.h b/Marlin/src/module/settings.h index a8fca60baa..b7c5210db5 100644 --- a/Marlin/src/module/settings.h +++ b/Marlin/src/module/settings.h @@ -29,6 +29,13 @@ #if ENABLED(EEPROM_SETTINGS) #include "../HAL/shared/eeprom_api.h" + enum EEPROM_Error : uint8_t { + ERR_EEPROM_NOERR, + ERR_EEPROM_VERSION, + ERR_EEPROM_SIZE, + ERR_EEPROM_CRC, + ERR_EEPROM_CORRUPT + }; #endif class MarlinSettings { @@ -98,7 +105,7 @@ class MarlinSettings { #if ENABLED(EEPROM_SETTINGS) - static bool eeprom_error, validating; + static bool validating; #if ENABLED(AUTO_BED_LEVELING_UBL) // Eventually make these available if any leveling system // That can store is enabled @@ -106,8 +113,8 @@ class MarlinSettings { // live at the very end of the eeprom #endif - static bool _load(); - static bool size_error(const uint16_t size); + static EEPROM_Error _load(); + static EEPROM_Error size_error(const uint16_t size); static int eeprom_index; static uint16_t working_crc; @@ -130,16 +137,16 @@ class MarlinSettings { } template - static void EEPROM_READ(T &VAR) { + static void EEPROM_READ_(T &VAR) { persistentStore.read_data(eeprom_index, (uint8_t *) &VAR, sizeof(VAR), &working_crc, !validating); } - static void EEPROM_READ(uint8_t *VAR, size_t sizeof_VAR) { + static void EEPROM_READ_(uint8_t *VAR, size_t sizeof_VAR) { persistentStore.read_data(eeprom_index, VAR, sizeof_VAR, &working_crc, !validating); } template - static void EEPROM_READ_ALWAYS(T &VAR) { + static void EEPROM_READ_ALWAYS_(T &VAR) { persistentStore.read_data(eeprom_index, (uint8_t *) &VAR, sizeof(VAR), &working_crc); } From 5ed307ceb807e745441da4c23888a6c7f53f934b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 20 May 2023 04:28:33 -0500 Subject: [PATCH 460/659] =?UTF-8?q?=F0=9F=93=9D=20MKS=20TinyBee=20pins=20h?= =?UTF-8?q?eader?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/esp32/pins_MKS_TINYBEE.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h b/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h index cfb682df54..546fa82c0d 100644 --- a/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h +++ b/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h @@ -22,10 +22,8 @@ #pragma once /** - * MRR ESPE pin assignments - * MRR ESPE is a 3D printer control board based on the ESP32 microcontroller. - * Supports 5 stepper drivers (using I2S stepper stream), heated bed, - * single hotend, and LCD controller. + * MKS TinyBee pin assignments + * https://github.com/makerbase-mks/MKS-TinyBee */ #include "env_validate.h" From 06b1f85514d9e738fa19d406f7cbc2a6c7240429 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 21 May 2023 00:23:00 +0000 Subject: [PATCH 461/659] [cron] Bump distribution date (2023-05-21) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 8ea8917f48..1986b74a02 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-20" +//#define STRING_DISTRIBUTION_DATE "2023-05-21" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 8d6d94c448..8c1880c6ff 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-20" + #define STRING_DISTRIBUTION_DATE "2023-05-21" #endif /** From ea63ac8f4d2a5fc9d0501ebf979d115adcd42910 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 21 May 2023 08:38:42 -0500 Subject: [PATCH 462/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20TFT=20LVGL=20compi?= =?UTF-8?q?le=20error=20(#25865)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes regression from #24302 --- .github/workflows/test-builds.yml | 1 + Marlin/src/inc/SanityCheck.h | 6 +- .../extui/mks_ui/tft_lvgl_configuration.cpp | 5 +- Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h | 2 +- Marlin/src/pins/linux/pins_RAMPS_LINUX.h | 8 +- .../src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h | 2 +- Marlin/src/pins/stm32f1/pins_CHITU3D_common.h | 16 ++-- Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h | 18 ++-- Marlin/src/pins/stm32f1/pins_FLY_MINI.h | 2 +- .../pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h | 2 +- Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h | 92 +++++++++---------- .../pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h | 6 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h | 8 +- .../pins/stm32f1/pins_MKS_ROBIN_E3_common.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h | 2 +- .../src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h | 6 +- .../src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h | 8 +- .../pins/stm32f1/pins_MKS_ROBIN_NANO_common.h | 6 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h | 14 +-- Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h | 2 +- .../stm32f4/pins_MKS_ROBIN_NANO_V3_common.h | 11 +-- .../src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h | 14 +-- Marlin/src/pins/stm32f4/pins_TRONXY_V10.h | 4 +- .../PlatformIO/scripts/download_mks_assets.py | 4 +- buildroot/tests/mks_robin_pro2 | 20 ++++ 27 files changed, 145 insertions(+), 120 deletions(-) create mode 100755 buildroot/tests/mks_robin_pro2 diff --git a/.github/workflows/test-builds.yml b/.github/workflows/test-builds.yml index dea1a4e176..7ebbcd0066 100644 --- a/.github/workflows/test-builds.yml +++ b/.github/workflows/test-builds.yml @@ -105,6 +105,7 @@ jobs: - FYSETC_S6 - LERDGEK - LERDGEX + - mks_robin_pro2 - Opulo_Lumen_REV3 - rumba32 - STM32F401RC_creality diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index f77bf7afeb..78630051b6 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2629,10 +2629,8 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #if ENABLED(TFT_GENERIC) && NONE(TFT_INTERFACE_FSMC, TFT_INTERFACE_SPI) #error "TFT_GENERIC requires either TFT_INTERFACE_FSMC or TFT_INTERFACE_SPI interface." -#endif - -#if BOTH(TFT_INTERFACE_FSMC, TFT_INTERFACE_SPI) - #error "Please enable only one of TFT_INTERFACE_SPI or TFT_INTERFACE_SPI." +#elif BOTH(TFT_INTERFACE_FSMC, TFT_INTERFACE_SPI) + #error "Please enable only one of TFT_INTERFACE_FSMC or TFT_INTERFACE_SPI." #endif #if defined(LCD_SCREEN_ROTATE) && LCD_SCREEN_ROTATE != 0 && LCD_SCREEN_ROTATE != 90 && LCD_SCREEN_ROTATE != 180 && LCD_SCREEN_ROTATE != 270 diff --git a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp index 94c3517e3a..be4682f68f 100644 --- a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp @@ -138,7 +138,10 @@ void tft_lvgl_init() { uint16_t usb_flash_loop = 1000; #if ENABLED(MULTI_VOLUME) && !HAS_SD_HOST_DRIVE SET_INPUT_PULLUP(SD_DETECT_PIN); - card.changeMedia(IS_SD_INSERTED() ? &card.media_driver_sdcard : &card.media_driver_usbFlash); + if (IS_SD_INSERTED()) + card.changeMedia(&card.media_driver_sdcard); + else + card.changeMedia(&card.media_driver_usbFlash); #endif do { card.media_driver_usbFlash.idle(); diff --git a/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h b/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h index ee4376c50a..abdd35f058 100644 --- a/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h +++ b/Marlin/src/pins/gd32f1/pins_TRIGORILLA_V006.h @@ -122,7 +122,7 @@ // // SPI // - #define SPI_DEVICE -1 + #define SPI_DEVICE -1 // Maple #define SCK_PIN -1 #define MISO_PIN -1 #define MOSI_PIN -1 diff --git a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h index 950eb8d88f..4f32304dde 100644 --- a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h +++ b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h @@ -381,8 +381,8 @@ #define TFT_CS_PIN 49 #define TFT_DC_PIN 43 #define TFT_SCK_PIN SD_SCK_PIN - #define TFT_MOSI_PIN SD_MOSI_PIN #define TFT_MISO_PIN SD_MISO_PIN + #define TFT_MOSI_PIN SD_MOSI_PIN #define LCD_USE_DMA_SPI #define BTN_EN1 40 @@ -396,12 +396,12 @@ #define SPI_FLASH #if ENABLED(SPI_FLASH) - #define SPI_DEVICE 1 + #define SPI_DEVICE 1 // Maple #define SPI_FLASH_SIZE 0x1000000 // 16MB #define SPI_FLASH_CS_PIN 31 - #define SPI_FLASH_MOSI_PIN SD_MOSI_PIN - #define SPI_FLASH_MISO_PIN SD_MISO_PIN #define SPI_FLASH_SCK_PIN SD_SCK_PIN + #define SPI_FLASH_MISO_PIN SD_MISO_PIN + #define SPI_FLASH_MOSI_PIN SD_MOSI_PIN #endif #define TFT_BUFFER_SIZE 0xFFFF diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h index 44a98e5af7..851eee8296 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h @@ -273,7 +273,7 @@ #endif #if SD_CONNECTION_IS(LCD) - #define SPI_DEVICE 3 + #define SPI_DEVICE 3 // Maple #define SD_DETECT_PIN EXP2_07_PIN #define SD_SCK_PIN EXP2_02_PIN #define SD_MISO_PIN EXP2_01_PIN diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h index 22f78350cf..7452562c83 100644 --- a/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h +++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h @@ -113,18 +113,18 @@ #define FIL_RUNOUT_PIN PA15 // MT_DET #endif -// SPI Flash +// +// SPI Flash (SPI 2) +// #define SPI_FLASH #if ENABLED(SPI_FLASH) #define SPI_FLASH_SIZE 0x200000 // 2MB + #define SPI_FLASH_CS_PIN PB12 + #define SPI_FLASH_SCK_PIN PB13 + #define SPI_FLASH_MISO_PIN PB14 + #define SPI_FLASH_MOSI_PIN PB15 #endif -// SPI 2 -#define SPI_FLASH_CS_PIN PB12 -#define SPI_FLASH_MOSI_PIN PB15 -#define SPI_FLASH_MISO_PIN PB14 -#define SPI_FLASH_SCK_PIN PB13 - // // TFT with FSMC interface // @@ -160,7 +160,7 @@ // SPI1(PA7)=LCD & SPI3(PB5)=STUFF, are not available // so SPI2 is required. -#define SPI_DEVICE 2 +#define SPI_DEVICE 2 // Maple #define SD_SCK_PIN PB13 #define SD_MISO_PIN PB14 #define SD_MOSI_PIN PB15 diff --git a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h index fd6609f0fc..bdfe24cad0 100644 --- a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h +++ b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h @@ -60,22 +60,26 @@ // // SPI -// Note: FLSun Hispeed (clone MKS_Robin_miniV2) board is using SPI2 interface. +// +#define SPI_DEVICE 2 // Maple + +// +// SD Card SPI // #define SD_SCK_PIN PB13 // SPI2 #define SD_MISO_PIN PB14 // SPI2 #define SD_MOSI_PIN PB15 // SPI2 -#define SPI_DEVICE 2 +// // SPI Flash +// #define SPI_FLASH #if ENABLED(SPI_FLASH) - // SPI 2 - #define SPI_FLASH_CS_PIN PB12 // SPI2_NSS / Flash chip-select - #define SPI_FLASH_MOSI_PIN PB15 - #define SPI_FLASH_MISO_PIN PB14 - #define SPI_FLASH_SCK_PIN PB13 #define SPI_FLASH_SIZE 0x1000000 // 16MB + #define SPI_FLASH_CS_PIN PB12 // SPI2_NSS / Flash chip-select + #define SPI_FLASH_SCK_PIN PB13 + #define SPI_FLASH_MISO_PIN PB14 + #define SPI_FLASH_MOSI_PIN PB15 #endif // diff --git a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h index e723845a2a..f7ef25419f 100644 --- a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h @@ -152,7 +152,7 @@ // #if HAS_WIRED_LCD - #define SPI_DEVICE 2 + #define SPI_DEVICE 2 // Maple #define SD_SS_PIN EXP2_04_PIN #define SD_SCK_PIN EXP2_02_PIN #define SD_MISO_PIN EXP2_01_PIN diff --git a/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h b/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h index 9ea36e2f25..494af83f59 100644 --- a/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h +++ b/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h @@ -280,7 +280,7 @@ #endif #if SD_CONNECTION_IS(LCD) - #define SPI_DEVICE 3 + #define SPI_DEVICE 3 // Maple #define SD_DETECT_PIN EXP2_04_PIN #define SD_SCK_PIN EXP2_09_PIN #define SD_MISO_PIN EXP2_10_PIN diff --git a/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h b/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h index 168317d8b5..d4f0ea7fd2 100644 --- a/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h +++ b/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h @@ -35,18 +35,18 @@ #define BOARD_NO_NATIVE_USB -//#define DISABLE_DEBUG // We still want to debug with STLINK... -#define DISABLE_JTAG // We free the jtag pins (PA15) but keep STLINK - // Release PB4 (STEP_X_PIN) from JTAG NRST role. +//#define DISABLE_DEBUG // Allow debug with STLINK... +#define DISABLE_JTAG // We free the JTAG pins (PA15) but keep STLINK + // Release PB4 (STEP_X_PIN) from JTAG NRST role. // // Limit Switches // -#define X_MIN_PIN PC1 // pin 16 -#define X_MAX_PIN PC0 // pin 15 (Filament sensor on Alfawise setup) -#define Y_MIN_PIN PC15 // pin 9 -#define Y_MAX_PIN PC14 // pin 8 (Unused in stock Alfawise setup) -#define Z_MIN_PIN PE6 // pin 5 Standard Endstop or Z_Probe endstop function -#define Z_MAX_PIN PE5 // pin 4 (Unused in stock Alfawise setup) +#define X_MIN_PIN PC1 +#define X_MAX_PIN PC0 // (Filament sensor on Alfawise setup) +#define Y_MIN_PIN PC15 +#define Y_MAX_PIN PC14 // (Unused in stock Alfawise setup) +#define Z_MIN_PIN PE6 // Standard Endstop or Z_Probe endstop function +#define Z_MAX_PIN PE5 // (Unused in stock Alfawise setup) // May be used for BLTouch Servo function on older variants (<= V08) #define ONBOARD_ENDSTOPPULLUPS @@ -60,35 +60,35 @@ // // Steppers // -#define X_ENABLE_PIN PB5 // pin 91 -#define X_STEP_PIN PB4 // pin 90 -#define X_DIR_PIN PB3 // pin 89 +#define X_ENABLE_PIN PB5 +#define X_STEP_PIN PB4 +#define X_DIR_PIN PB3 -#define Y_ENABLE_PIN PB8 // pin 95 -#define Y_STEP_PIN PB7 // pin 93 -#define Y_DIR_PIN PB6 // pin 92 +#define Y_ENABLE_PIN PB8 +#define Y_STEP_PIN PB7 +#define Y_DIR_PIN PB6 -#define Z_ENABLE_PIN PE1 // pin 98 -#define Z_STEP_PIN PE0 // pin 97 -#define Z_DIR_PIN PB9 // pin 96 +#define Z_ENABLE_PIN PE1 +#define Z_STEP_PIN PE0 +#define Z_DIR_PIN PB9 -#define E0_ENABLE_PIN PE4 // pin 3 -#define E0_STEP_PIN PE3 // pin 2 -#define E0_DIR_PIN PE2 // pin 1 +#define E0_ENABLE_PIN PE4 +#define E0_STEP_PIN PE3 +#define E0_DIR_PIN PE2 // // Temperature Sensors // -#define TEMP_0_PIN PA0 // pin 23 (Nozzle 100K/3950 thermistor) -#define TEMP_BED_PIN PA1 // pin 24 (Hot Bed 100K/3950 thermistor) +#define TEMP_0_PIN PA0 // (Nozzle 100K/3950 thermistor) +#define TEMP_BED_PIN PA1 // (Hot Bed 100K/3950 thermistor) // // Heaters / Fans // -#define HEATER_0_PIN PD3 // pin 84 (Nozzle Heat Mosfet) -#define HEATER_BED_PIN PA8 // pin 67 (Hot Bed Mosfet) +#define HEATER_0_PIN PD3 // (Nozzle Heat Mosfet) +#define HEATER_BED_PIN PA8 // (Hot Bed Mosfet) -#define FAN0_PIN PA15 // pin 77 (4cm Fan) +#define FAN0_PIN PA15 // (4cm Fan) #if TERN(MAPLE_STM32F1, ENABLED(FAN_SOFT_PWM), ENABLED(FAST_PWM_FAN)) && FAN_MIN_PWM < 5 // Required to avoid issues with heating or STLink #error "FAN_MIN_PWM must be 5 or higher." // Fan will not start in 1-30 range @@ -104,10 +104,10 @@ #endif #endif -//#define BEEPER_PIN PD13 // pin 60 (Servo PWM output 5V/GND on Board V0G+) made for BL-Touch sensor +//#define BEEPER_PIN PD13 // (Servo PWM output 5V/GND on Board V0G+) made for BL-Touch sensor // Can drive a PC Buzzer, if connected between PWM and 5V pins -#define LED_PIN PC2 // pin 17 +#define LED_PIN PC2 // Longer3D board mosfets are passing by default // Avoid nozzle heat and fan start before serial init @@ -136,14 +136,14 @@ // #if HAS_FSMC_TFT #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT - #define FSMC_CS_PIN PD7 // pin 88 = FSMC_NE1 - #define FSMC_RS_PIN PD11 // pin 58 A16 Register. Only one address needed + #define FSMC_CS_PIN PD7 // FSMC_NE1 + #define FSMC_RS_PIN PD11 // A16 Register. Only one address needed #define TFT_CS_PIN FSMC_CS_PIN #define TFT_RS_PIN FSMC_RS_PIN - #define TFT_RESET_PIN PC4 // pin 33 - #define TFT_BACKLIGHT_PIN PD12 // pin 59 + #define TFT_RESET_PIN PC4 + #define TFT_BACKLIGHT_PIN PD12 #define TFT_BACKLIGHT_PWM 150 // Brightness with alt. TIM4 chan 1 (1-255) #define DOGLCD_MOSI -1 // Prevent auto-define by Conditionals_post.h @@ -168,11 +168,11 @@ * declared below. */ #if NEED_TOUCH_PINS - #define TOUCH_CS_PIN PB12 // pin 51 SPI2_NSS - #define TOUCH_SCK_PIN PB13 // pin 52 - #define TOUCH_MOSI_PIN PB14 // pin 53 (Inverted MOSI/MISO = No HW SPI2) - #define TOUCH_MISO_PIN PB15 // pin 54 - #define TOUCH_INT_PIN PC6 // pin 63 (PenIRQ coming from ADS7843) + #define TOUCH_CS_PIN PB12 // SPI2_NSS + #define TOUCH_SCK_PIN PB13 + #define TOUCH_MISO_PIN PB15 // (Swapped MOSI/MISO = No HW SPI2) + #define TOUCH_MOSI_PIN PB14 + #define TOUCH_INT_PIN PC6 // (PenIRQ coming from ADS7843) #endif // @@ -181,25 +181,25 @@ // #if NO_EEPROM_SELECTED //#define SPI_EEPROM - //#define SPI_FLASH // need MARLIN_DEV_MODE for M993/M994 EEPROM backup tests + //#define SPI_FLASH // Use MARLIN_DEV_MODE for M993/M994 EEPROM backup tests #define FLASH_EEPROM_EMULATION #endif #if ENABLED(SPI_EEPROM) // SPI1 EEPROM Winbond W25Q64 (8MB/64Mbits) #define SPI_CHAN_EEPROM1 1 - #define SPI_EEPROM1_CS_PIN PC5 // pin 34 - #define EEPROM_SCK_PIN BOARD_SPI1_SCK_PIN // PA5 pin 30 - #define EEPROM_MISO_PIN BOARD_SPI1_MISO_PIN // PA6 pin 31 - #define EEPROM_MOSI_PIN BOARD_SPI1_MOSI_PIN // PA7 pin 32 + #define SPI_EEPROM1_CS_PIN PC5 + #define EEPROM_SCK_PIN BOARD_SPI1_SCK_PIN // PA5 + #define EEPROM_MISO_PIN BOARD_SPI1_MISO_PIN // PA6 + #define EEPROM_MOSI_PIN BOARD_SPI1_MOSI_PIN // PA7 #define EEPROM_PAGE_SIZE 0x1000U // 4K (from datasheet) - #define MARLIN_EEPROM_SIZE 16UL * (EEPROM_PAGE_SIZE) // Limit to 64K for now... + #define MARLIN_EEPROM_SIZE 16UL * (EEPROM_PAGE_SIZE) // Limit to 64K for now... #elif ENABLED(SPI_FLASH) - #define SPI_FLASH_SIZE 0x40000U // limit to 256K (M993 will reboot with 512) + #define SPI_FLASH_SIZE 0x40000U // Limit to 256K (M993 will reboot with 512) #define SPI_FLASH_CS_PIN PC5 - #define SPI_FLASH_MOSI_PIN PA7 - #define SPI_FLASH_MISO_PIN PA6 #define SPI_FLASH_SCK_PIN PA5 + #define SPI_FLASH_MISO_PIN PA6 + #define SPI_FLASH_MOSI_PIN PA7 #elif ENABLED(FLASH_EEPROM_EMULATION) // SoC Flash (framework-arduinoststm32-maple/STM32F1/libraries/EEPROM/EEPROM.h) #define EEPROM_PAGE_SIZE (0x800U) // 2K diff --git a/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h b/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h index a7fc323ba0..c86552ba12 100644 --- a/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h @@ -58,7 +58,7 @@ #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE // 2K #endif -#define SPI_DEVICE 2 +#define SPI_DEVICE 2 // Maple // // Limit Switches diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h index e53ffa008b..d456974e9e 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h @@ -195,7 +195,7 @@ // SPI2 is shared by LCD touch driver and flash // SPI1(PA7) & SPI3(PB5) not available -#define SPI_DEVICE 2 +#define SPI_DEVICE 2 // Maple #define ONBOARD_SDIO #define SDIO_CLOCK 4500000 @@ -274,7 +274,7 @@ #if ENABLED(SPI_FLASH) #define SPI_FLASH_SIZE 0x800000 // 8MB #define SPI_FLASH_CS_PIN PG9 - #define SPI_FLASH_MOSI_PIN PB15 - #define SPI_FLASH_MISO_PIN PB14 #define SPI_FLASH_SCK_PIN PB13 + #define SPI_FLASH_MISO_PIN PB14 + #define SPI_FLASH_MOSI_PIN PB15 #endif diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h index 5cf209e533..6892655e46 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h @@ -58,9 +58,9 @@ #endif // -// Note: MKS Robin board is using SPI2 interface. +// SPI // -#define SPI_DEVICE 2 +#define SPI_DEVICE 2 // Maple // // Servos @@ -382,9 +382,9 @@ #if ENABLED(SPI_FLASH) #define SPI_FLASH_SIZE 0x1000000 // 16MB #define SPI_FLASH_CS_PIN PB12 - #define SPI_FLASH_MOSI_PIN PB15 - #define SPI_FLASH_MISO_PIN PB14 #define SPI_FLASH_SCK_PIN PB13 + #define SPI_FLASH_MISO_PIN PB14 + #define SPI_FLASH_MOSI_PIN PB15 #endif #ifndef BEEPER_PIN diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h index f257ea3bbb..a8583e92d7 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h @@ -253,7 +253,7 @@ // SD Card // #define SDCARD_CONNECTION ONBOARD -#define SPI_DEVICE 2 +#define SPI_DEVICE 2 // Maple #define ONBOARD_SPI_DEVICE 2 #define SDSS SD_SS_PIN #define ONBOARD_SD_CS_PIN SD_SS_PIN diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h index af4e121100..53f31c2784 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h @@ -156,7 +156,7 @@ // // SPI // -#define SPI_DEVICE 2 +#define SPI_DEVICE 2 // Maple #define SD_SCK_PIN PB13 #define SD_MISO_PIN PB14 #define SD_MOSI_PIN PB15 diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h index 6835ec3b56..0651bcebf2 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE3.h @@ -152,7 +152,7 @@ // // SPI // -#define SPI_DEVICE 2 +#define SPI_DEVICE 2 // Maple #define SD_SCK_PIN PB13 #define SD_MISO_PIN PB14 #define SD_MOSI_PIN PB15 diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h index 3a50465a9a..372da38c62 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h @@ -50,7 +50,7 @@ #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE // 2K #endif -#define SPI_DEVICE 2 +#define SPI_DEVICE 2 // Maple // // Servos @@ -199,7 +199,7 @@ #if ENABLED(SPI_FLASH) #define SPI_FLASH_SIZE 0x1000000 // 16MB #define SPI_FLASH_CS_PIN PB12 // Flash chip-select - #define SPI_FLASH_MOSI_PIN PB15 - #define SPI_FLASH_MISO_PIN PB14 #define SPI_FLASH_SCK_PIN PB13 + #define SPI_FLASH_MISO_PIN PB14 + #define SPI_FLASH_MOSI_PIN PB15 #endif diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h index d92ea01aa3..956e9dc72e 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h @@ -60,9 +60,9 @@ #endif // -// Note: MKS Robin board is using SPI2 interface. +// SPI // -#define SPI_DEVICE 2 +#define SPI_DEVICE 2 // Maple // // Servos @@ -384,9 +384,9 @@ #if ENABLED(SPI_FLASH) #define SPI_FLASH_SIZE 0x1000000 // 16MB #define SPI_FLASH_CS_PIN PB12 - #define SPI_FLASH_MOSI_PIN PB15 - #define SPI_FLASH_MISO_PIN PB14 #define SPI_FLASH_SCK_PIN PB13 + #define SPI_FLASH_MISO_PIN PB14 + #define SPI_FLASH_MOSI_PIN PB15 #endif #ifndef BEEPER_PIN diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h index a329b8a4bb..69eee63007 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h @@ -49,7 +49,7 @@ #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE // 2K #endif -#define SPI_DEVICE 2 +#define SPI_DEVICE 2 // Maple // // Servos @@ -210,7 +210,7 @@ #if ENABLED(SPI_FLASH) #define SPI_FLASH_SIZE 0x1000000 // 16MB #define SPI_FLASH_CS_PIN PB12 - #define SPI_FLASH_MOSI_PIN PB15 - #define SPI_FLASH_MISO_PIN PB14 #define SPI_FLASH_SCK_PIN PB13 + #define SPI_FLASH_MISO_PIN PB14 + #define SPI_FLASH_MOSI_PIN PB15 #endif diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h index 922caa556e..114c224b1e 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h @@ -41,9 +41,9 @@ #define DISABLE_DEBUG // -// Note: MKS Robin board is using SPI2 interface. +// SPI // -#define SPI_DEVICE 2 +#define SPI_DEVICE 2 // Maple // // Servos @@ -167,9 +167,9 @@ #define HEATER_BED_PIN PA0 // +HOT-BED- #define FAN0_PIN PB1 // +FAN- -/** - * Note: MKS Robin Pro board is using SPI2 interface. Make sure your stm32duino library is configured accordingly - */ +// +// Note: Using SPI2 interface. Make sure stm32duino is configured accordingly +// //#define TEMP_0_CS_PIN PE5 // TC1 - CS1 //#define TEMP_0_CS_PIN PF11 // TC2 - CS2 @@ -308,7 +308,7 @@ #if ENABLED(SPI_FLASH) #define SPI_FLASH_SIZE 0x1000000 // 16MB #define SPI_FLASH_CS_PIN PB12 // Flash chip-select - #define SPI_FLASH_MOSI_PIN PB15 - #define SPI_FLASH_MISO_PIN PB14 #define SPI_FLASH_SCK_PIN PB13 + #define SPI_FLASH_MISO_PIN PB14 + #define SPI_FLASH_MOSI_PIN PB15 #endif diff --git a/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h b/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h index ff2bf5fd8e..d6a5ef3c17 100644 --- a/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h +++ b/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h @@ -184,7 +184,7 @@ #endif // SPI1(PA7) & SPI3(PB5) not available -#define SPI_DEVICE 2 +#define SPI_DEVICE 2 // Maple #if ENABLED(ONBOARD_SDIO) #define SD_SCK_PIN PB13 // SPI2 ok diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h index 01f2b00b58..04c4009529 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h @@ -213,8 +213,8 @@ // // Onboard SD card +// Detect pin doesn't work when ONBOARD and NO_SD_HOST_DRIVE disabled // -// detect pin doesn't work when ONBOARD and NO_SD_HOST_DRIVE disabled #if SD_CONNECTION_IS(ONBOARD) #define ENABLE_SPI3 #define SD_SS_PIN -1 @@ -227,13 +227,12 @@ #define SPI_FLASH #if ENABLED(SPI_FLASH) - #define SPI_FLASH - #define SPI_DEVICE 2 - #define SPI_FLASH_SIZE 0x1000000 + #define SPI_DEVICE 2 // Maple + #define SPI_FLASH_SIZE 0x1000000 // 16MB #define SPI_FLASH_CS_PIN PB12 - #define SPI_FLASH_MOSI_PIN PC3 - #define SPI_FLASH_MISO_PIN PC2 #define SPI_FLASH_SCK_PIN PB13 + #define SPI_FLASH_MISO_PIN PC2 + #define SPI_FLASH_MOSI_PIN PC3 #endif /** diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h index 952a8e1ec0..60fe6fa66d 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h @@ -271,19 +271,19 @@ #endif */ -// -// LCD / Controller #define SPI_FLASH -#define SPI_FLASH -#define SPI_DEVICE 2 -#define SPI_FLASH_SIZE 0x1000000 #if ENABLED(SPI_FLASH) + #define SPI_DEVICE 2 // Maple + #define SPI_FLASH_SIZE 0x1000000 // 16MB #define SPI_FLASH_CS_PIN PB12 - #define SPI_FLASH_MOSI_PIN PB15 - #define SPI_FLASH_MISO_PIN PB14 #define SPI_FLASH_SCK_PIN PB13 + #define SPI_FLASH_MISO_PIN PB14 + #define SPI_FLASH_MOSI_PIN PB15 #endif +// +// LCD / Controller +// #if ANY(TFT_COLOR_UI, TFT_LVGL_UI, TFT_CLASSIC_UI) #ifndef TOUCH_CALIBRATION_X #define TOUCH_CALIBRATION_X -17253 diff --git a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h index d5752e43dc..dbf8ddc5d5 100644 --- a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h +++ b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h @@ -73,9 +73,9 @@ #if ENABLED(SPI_FLASH) #define SPI_FLASH_SIZE 0x200000 // 2MB #define SPI_FLASH_CS_PIN PG15 // SPI2 - #define SPI_FLASH_MOSI_PIN PB5 - #define SPI_FLASH_MISO_PIN PB4 #define SPI_FLASH_SCK_PIN PB3 + #define SPI_FLASH_MISO_PIN PB4 + #define SPI_FLASH_MOSI_PIN PB5 #endif // diff --git a/buildroot/share/PlatformIO/scripts/download_mks_assets.py b/buildroot/share/PlatformIO/scripts/download_mks_assets.py index 661fb2e438..0186f59896 100644 --- a/buildroot/share/PlatformIO/scripts/download_mks_assets.py +++ b/buildroot/share/PlatformIO/scripts/download_mks_assets.py @@ -14,7 +14,7 @@ if pioutil.is_pio_build(): assets_path = Path(env.Dictionary("PROJECT_BUILD_DIR"), env.Dictionary("PIOENV"), "assets") def download_mks_assets(): - print("Downloading MKS Assets") + print("Downloading MKS Assets for TFT_LVGL_UI") r = requests.get(url, stream=True) # the user may have a very clean workspace, # so create the PROJECT_LIBDEPS_DIR directory if not exits @@ -25,7 +25,7 @@ if pioutil.is_pio_build(): fd.write(chunk) def copy_mks_assets(): - print("Copying MKS Assets") + print("Copying MKS Assets for TFT_LVGL_UI") output_path = Path(tempfile.mkdtemp()) zip_obj = zipfile.ZipFile(zip_path, 'r') zip_obj.extractall(output_path) diff --git a/buildroot/tests/mks_robin_pro2 b/buildroot/tests/mks_robin_pro2 new file mode 100755 index 0000000000..3919437433 --- /dev/null +++ b/buildroot/tests/mks_robin_pro2 @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# +# Build tests for mks_robin_pro2 (STM32F407VE) +# + +# exit on first failure +set -e + +# +# Robin Pro v2 with LVGL TFT +# +restore_configs +opt_set MOTHERBOARD BOARD_MKS_ROBIN_PRO_V2 SERIAL_PORT 1 +opt_enable SDSUPPORT USB_FLASH_DRIVE_SUPPORT USE_OTG_USB_HOST MULTI_VOLUME \ + TFT_GENERIC TFT_INTERFACE_SPI TFT_RES_480x320 TFT_LVGL_UI TOUCH_SCREEN \ + BLTOUCH Z_SAFE_HOMING LCD_BED_TRAMMING BED_TRAMMING_USE_PROBE +exec_test $1 $2 "MKS Robin Pro v2 | TFT_LVGL_UI | SD/FD Multi-Volume" "$3" + +# cleanup +restore_configs From d22ce55cd5b88d50dd67818c5e44db91575e4d60 Mon Sep 17 00:00:00 2001 From: Andrew <18502096+classicrocker883@users.noreply.github.com> Date: Sun, 21 May 2023 18:34:19 -0400 Subject: [PATCH 463/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20ProUI=20Manual=20M?= =?UTF-8?q?esh=20/=20UBL=20Viewer=20(#25858)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/e3v2/proui/meshviewer.cpp | 2 +- Marlin/src/module/motion.cpp | 4 ---- Marlin/src/module/motion.h | 4 ++++ 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Marlin/src/lcd/e3v2/proui/meshviewer.cpp b/Marlin/src/lcd/e3v2/proui/meshviewer.cpp index 18cdffd00d..69d21c044c 100644 --- a/Marlin/src/lcd/e3v2/proui/meshviewer.cpp +++ b/Marlin/src/lcd/e3v2/proui/meshviewer.cpp @@ -40,7 +40,7 @@ #include "../../../feature/bedlevel/bedlevel.h" #include "meshviewer.h" -#if ENABLED(AUTO_BED_LEVELING_UBL) +#if ENABLED(USE_UBL_VIEWER) #include "bedlevel_tools.h" #endif diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index a15cfe0796..e6df20a998 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -38,10 +38,6 @@ #include "../lcd/marlinui.h" #endif -#if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) - #include "../lcd/e3v2/proui/dwin.h" -#endif - #if ENABLED(POLAR) #include "polar.h" #endif diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index 71d80f954e..b7e37f6b70 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -30,6 +30,10 @@ #include "../inc/MarlinConfig.h" +#if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) + #include "../lcd/e3v2/proui/dwin.h" +#endif + #if IS_SCARA #include "scara.h" #elif ENABLED(POLAR) From ae3b00db74c63e51e6e73e4a452468dda9abab1f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 21 May 2023 17:35:41 -0500 Subject: [PATCH 464/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Fal?= =?UTF-8?q?l=20back=20to=20SPI0=20with=20YHCB2004=20(#25856)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/AVR/fastio/fastio_1280.h | 49 +++++++++---------- Marlin/src/HAL/AVR/fastio/fastio_1281.h | 35 ++++++------- Marlin/src/HAL/AVR/fastio/fastio_168.h | 26 +++++----- Marlin/src/HAL/AVR/fastio/fastio_644.h | 38 +++++++------- Marlin/src/HAL/AVR/fastio/fastio_AT90USB.h | 11 ++--- Marlin/src/HAL/DUE/fastio.h | 8 +-- Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 18 ++++++- Marlin/src/pins/mega/pins_GT2560_V3.h | 16 ++---- Marlin/src/pins/mega/pins_GT2560_V3_A20.h | 14 ++++-- Marlin/src/pins/mega/pins_GT2560_V4_A20.h | 14 ++++-- Marlin/src/pins/pins.h | 2 +- .../src/pins/stm32f4/pins_BLACKPILL_CUSTOM.h | 2 +- 12 files changed, 118 insertions(+), 115 deletions(-) diff --git a/Marlin/src/HAL/AVR/fastio/fastio_1280.h b/Marlin/src/HAL/AVR/fastio/fastio_1280.h index 6f074cf911..633774dda9 100644 --- a/Marlin/src/HAL/AVR/fastio/fastio_1280.h +++ b/Marlin/src/HAL/AVR/fastio/fastio_1280.h @@ -35,39 +35,36 @@ #include "../fastio.h" -// change for your board -#define DEBUG_LED DIO21 - // UART -#define RXD DIO0 -#define TXD DIO1 +#define RXD 0 +#define TXD 1 // SPI -#define SCK DIO52 -#define MISO DIO50 -#define MOSI DIO51 -#define SS DIO53 +#define MISO 50 +#define MOSI 51 +#define SCK 52 +#define SS 53 // TWI (I2C) -#define SCL DIO21 -#define SDA DIO20 +#define SCL 21 +#define SDA 20 // Timers and PWM -#define OC0A DIO13 -#define OC0B DIO4 -#define OC1A DIO11 -#define OC1B DIO12 -#define OC2A DIO10 -#define OC2B DIO9 -#define OC3A DIO5 -#define OC3B DIO2 -#define OC3C DIO3 -#define OC4A DIO6 -#define OC4B DIO7 -#define OC4C DIO8 -#define OC5A DIO46 -#define OC5B DIO45 -#define OC5C DIO44 +#define OC0A 13 +#define OC0B 4 +#define OC1A 11 +#define OC1B 12 +#define OC2A 10 +#define OC2B 9 +#define OC3A 5 +#define OC3B 2 +#define OC3C 3 +#define OC4A 6 +#define OC4B 7 +#define OC4C 8 +#define OC5A 46 +#define OC5B 45 +#define OC5C 44 // Digital I/O diff --git a/Marlin/src/HAL/AVR/fastio/fastio_1281.h b/Marlin/src/HAL/AVR/fastio/fastio_1281.h index 812586225d..6067248978 100644 --- a/Marlin/src/HAL/AVR/fastio/fastio_1281.h +++ b/Marlin/src/HAL/AVR/fastio/fastio_1281.h @@ -33,32 +33,29 @@ #include "../fastio.h" -// change for your board -#define DEBUG_LED DIO46 - // UART -#define RXD DIO0 -#define TXD DIO1 +#define RXD 0 +#define TXD 1 // SPI -#define SCK DIO10 -#define MISO DIO12 -#define MOSI DIO11 -#define SS DIO16 +#define SCK 10 +#define MISO 12 +#define MOSI 11 +#define SS 16 // TWI (I2C) -#define SCL DIO17 -#define SDA DIO18 +#define SCL 17 +#define SDA 18 // Timers and PWM -#define OC0A DIO9 -#define OC0B DIO4 -#define OC1A DIO7 -#define OC1B DIO8 -#define OC2A DIO6 -#define OC3A DIO5 -#define OC3B DIO2 -#define OC3C DIO3 +#define OC0A 9 +#define OC0B 4 +#define OC1A 7 +#define OC1B 8 +#define OC2A 6 +#define OC3A 5 +#define OC3B 2 +#define OC3C 3 // Digital I/O diff --git a/Marlin/src/HAL/AVR/fastio/fastio_168.h b/Marlin/src/HAL/AVR/fastio/fastio_168.h index 4f591b37b9..cc55979740 100644 --- a/Marlin/src/HAL/AVR/fastio/fastio_168.h +++ b/Marlin/src/HAL/AVR/fastio/fastio_168.h @@ -33,29 +33,27 @@ #include "../fastio.h" -#define DEBUG_LED AIO5 - // UART -#define RXD DIO0 -#define TXD DIO1 +#define RXD 0 +#define TXD 1 // SPI -#define SCK DIO13 -#define MISO DIO12 -#define MOSI DIO11 -#define SS DIO10 +#define SS 10 +#define MOSI 11 +#define MISO 12 +#define SCK 13 // TWI (I2C) #define SCL AIO5 #define SDA AIO4 // Timers and PWM -#define OC0A DIO6 -#define OC0B DIO5 -#define OC1A DIO9 -#define OC1B DIO10 -#define OC2A DIO11 -#define OC2B DIO3 +#define OC0A 6 +#define OC0B 5 +#define OC1A 9 +#define OC1B 10 +#define OC2A 11 +#define OC2B 3 // Digital I/O diff --git a/Marlin/src/HAL/AVR/fastio/fastio_644.h b/Marlin/src/HAL/AVR/fastio/fastio_644.h index 16bdc6a23d..94b322a819 100644 --- a/Marlin/src/HAL/AVR/fastio/fastio_644.h +++ b/Marlin/src/HAL/AVR/fastio/fastio_644.h @@ -59,34 +59,32 @@ #include "../fastio.h" -#define DEBUG_LED DIO0 - // UART -#define RXD DIO8 -#define TXD DIO9 -#define RXD0 DIO8 -#define TXD0 DIO9 +#define RXD 8 +#define TXD 9 +#define RXD0 8 +#define TXD0 9 -#define RXD1 DIO10 -#define TXD1 DIO11 +#define RXD1 10 +#define TXD1 11 // SPI -#define SCK DIO7 -#define MISO DIO6 -#define MOSI DIO5 -#define SS DIO4 +#define SS 4 +#define MOSI 5 +#define MISO 6 +#define SCK 7 // TWI (I2C) -#define SCL DIO16 -#define SDA DIO17 +#define SCL 16 +#define SDA 17 // Timers and PWM -#define OC0A DIO3 -#define OC0B DIO4 -#define OC1A DIO13 -#define OC1B DIO12 -#define OC2A DIO15 -#define OC2B DIO14 +#define OC0A 3 +#define OC0B 4 +#define OC1A 13 +#define OC1B 12 +#define OC2A 15 +#define OC2B 14 // Digital I/O diff --git a/Marlin/src/HAL/AVR/fastio/fastio_AT90USB.h b/Marlin/src/HAL/AVR/fastio/fastio_AT90USB.h index d2a8aca6f3..0c434b157c 100644 --- a/Marlin/src/HAL/AVR/fastio/fastio_AT90USB.h +++ b/Marlin/src/HAL/AVR/fastio/fastio_AT90USB.h @@ -34,14 +34,11 @@ #include "../fastio.h" -// change for your board -#define DEBUG_LED DIO31 /* led D5 red */ - // SPI -#define SCK DIO21 // 9 -#define MISO DIO23 // 11 -#define MOSI DIO22 // 10 -#define SS DIO20 // 8 +#define SS 20 // 8 +#define SCK 21 // 9 +#define MOSI 22 // 10 +#define MISO 23 // 11 // Digital I/O diff --git a/Marlin/src/HAL/DUE/fastio.h b/Marlin/src/HAL/DUE/fastio.h index a609210d81..77bc1911d8 100644 --- a/Marlin/src/HAL/DUE/fastio.h +++ b/Marlin/src/HAL/DUE/fastio.h @@ -189,12 +189,12 @@ */ // UART -#define RXD DIO0 -#define TXD DIO1 +#define RXD 0 +#define TXD 1 // TWI (I2C) -#define SCL DIO21 -#define SDA DIO20 +#define SCL 21 +#define SDA 20 /** * pins diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index a0cf5fe46b..b03ff8a9f5 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -103,7 +103,23 @@ #elif ENABLED(YHCB2004) - LCD_CLASS lcd(YHCB2004_CLK, 20, 4, YHCB2004_MOSI, YHCB2004_MISO); // CLK, cols, rows, MOSI, MISO + #ifndef YHCB2004_SS_PIN + #define YHCB2004_SS_PIN SS + #endif + #ifndef YHCB2004_SCK_PIN + #define YHCB2004_SCK_PIN SCK + #endif + #ifndef YHCB2004_MOSI_PIN + #define YHCB2004_MOSI_PIN MOSI + #endif + #ifndef YHCB2004_MISO_PIN + #define YHCB2004_MISO_PIN MISO + #endif + #if !PINS_EXIST(YHCB2004_SS, YHCB2004_SCK, YHCB2004_MOSI, YHCB2004_MISO) + #error "YHCB2004 display requires YHCB2004_SS_PIN, YHCB2004_SCK_PIN, YHCB2004_MOSI_PIN, and YHCB2004_MISO_PIN." + #endif + + LCD_CLASS lcd(YHCB2004_SS_PIN, 20, 4, YHCB2004_SCK_PIN, YHCB2004_MOSI_PIN, YHCB2004_MISO_PIN); // SS, cols, rows, SCK, MOSI, MISO #else diff --git a/Marlin/src/pins/mega/pins_GT2560_V3.h b/Marlin/src/pins/mega/pins_GT2560_V3.h index 61f30fc7d4..0c588e6516 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V3.h +++ b/Marlin/src/pins/mega/pins_GT2560_V3.h @@ -168,18 +168,10 @@ #define BEEPER_PIN 18 #if ENABLED(YHCB2004) - #ifndef YHCB2004_CLK - #define YHCB2004_CLK 5 - #define DIO52 YHCB2004_CLK - #endif - #ifndef YHCB2004_MOSI - #define YHCB2004_MOSI 21 - #define DIO50 YHCB2004_MOSI - #endif - #ifndef YHCB2004_MISO - #define YHCB2004_MISO 36 - #define DIO51 YHCB2004_MISO - #endif + #define YHCB2004_MOSI_PIN 21 + #define YHCB2004_MISO_PIN 36 + #define YHCB2004_SCK_PIN 5 + #define YHCB2004_SS_PIN SS #elif HAS_WIRED_LCD #ifndef LCD_PINS_RS #define LCD_PINS_RS 20 diff --git a/Marlin/src/pins/mega/pins_GT2560_V3_A20.h b/Marlin/src/pins/mega/pins_GT2560_V3_A20.h index 772a45a918..2422dfdd73 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V3_A20.h +++ b/Marlin/src/pins/mega/pins_GT2560_V3_A20.h @@ -26,12 +26,16 @@ * ATmega2560 */ -#define LCD_PINS_RS 5 -#define LCD_PINS_EN 36 -#define LCD_PINS_D4 21 -#define LCD_PINS_D7 6 +#if HAS_WIRED_LCD + #define LCD_PINS_RS 5 + #define LCD_PINS_EN 36 + #define LCD_PINS_D4 21 + #define LCD_PINS_D7 6 +#endif -#define SPEAKER // The speaker can produce tones +#ifndef SPEAKER + #define SPEAKER // The speaker can produce tones +#endif #if IS_NEWPANEL #define BTN_EN1 16 diff --git a/Marlin/src/pins/mega/pins_GT2560_V4_A20.h b/Marlin/src/pins/mega/pins_GT2560_V4_A20.h index 3b3a80caa8..405a3aba5b 100644 --- a/Marlin/src/pins/mega/pins_GT2560_V4_A20.h +++ b/Marlin/src/pins/mega/pins_GT2560_V4_A20.h @@ -28,12 +28,16 @@ #define BOARD_INFO_NAME "GT2560 4.x" -#define LCD_PINS_RS 5 -#define LCD_PINS_EN 36 -#define LCD_PINS_D4 21 -#define LCD_PINS_D7 6 +#if HAS_WIRED_LCD + #define LCD_PINS_RS 5 + #define LCD_PINS_EN 36 + #define LCD_PINS_D4 21 + #define LCD_PINS_D7 6 +#endif -#define SPEAKER // The speaker can produce tones +#ifndef SPEAKER + #define SPEAKER // The speaker can produce tones +#endif #if IS_NEWPANEL #define BTN_EN1 16 diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 5118700533..6ee6401bad 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -795,7 +795,7 @@ #elif MB(BLACKPILL_CUSTOM) #include "stm32f4/pins_BLACKPILL_CUSTOM.h" // STM32F4 env:STM32F401CD_blackpill_stlink #elif MB(I3DBEEZ9_V1) - #include "stm32f4/pins_I3DBEEZ9.h" // STM32F4 env:I3DBEEZ9_V1 + #include "stm32f4/pins_I3DBEEZ9.h" // STM32F4 env:I3DBEEZ9_V1 // // ARM Cortex M7 diff --git a/Marlin/src/pins/stm32f4/pins_BLACKPILL_CUSTOM.h b/Marlin/src/pins/stm32f4/pins_BLACKPILL_CUSTOM.h index 9049a553fb..039333adfa 100644 --- a/Marlin/src/pins/stm32f4/pins_BLACKPILL_CUSTOM.h +++ b/Marlin/src/pins/stm32f4/pins_BLACKPILL_CUSTOM.h @@ -117,7 +117,7 @@ //#define SDIO_SUPPORT #define NO_SD_HOST_DRIVE // This board's SD is only seen by the printer -#if SD_CONNECTION_IS(ONBOARD) +#if SD_CONNECTION_IS(ONBOARD) #define SDSS PA4 #define SD_SCK_PIN PA5 #define SD_MISO_PIN PA6 From 8cd2b0976a0c021a87af07876cedde9101682f0e Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 22 May 2023 00:27:46 +0000 Subject: [PATCH 465/659] [cron] Bump distribution date (2023-05-22) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 1986b74a02..6c3f8122f5 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-21" +//#define STRING_DISTRIBUTION_DATE "2023-05-22" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 8c1880c6ff..64baed6a41 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-21" + #define STRING_DISTRIBUTION_DATE "2023-05-22" #endif /** From 9ceecefae222e624039eea67dcb478130cb0273c Mon Sep 17 00:00:00 2001 From: alextrical <35117191+alextrical@users.noreply.github.com> Date: Mon, 22 May 2023 02:38:28 +0100 Subject: [PATCH 466/659] =?UTF-8?q?=F0=9F=94=A8=20Fix=20BTT=20EBB42=20V1.1?= =?UTF-8?q?=20compile=20with=20-flto=20(#25849)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h | 3 ++- ini/stm32g0.ini | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h index 21f27e452d..07c68dc780 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h @@ -125,7 +125,8 @@ // // Heaters / Fans // -#define HEATER_0_PIN PA2 // "HE" +#define HEATER_0_PIN PA2 // "HE" V1.1 +#define HEATER_1_PIN PB13 // "HE" V1.2 #define FAN0_PIN PA0 // "FAN0" #define FAN1_PIN PA1 // "FAN1" diff --git a/ini/stm32g0.ini b/ini/stm32g0.ini index 8d9353f0af..17403292b7 100644 --- a/ini/stm32g0.ini +++ b/ini/stm32g0.ini @@ -33,6 +33,7 @@ build_flags = -DPIN_WIRE_SCL=PB3 -DPIN_WIRE_SDA=PB4 extends = stm32_variant platform = ststm32@~14.1.0 platform_packages = framework-arduinoststm32@https://github.com/stm32duino/Arduino_Core_STM32/archive/main.zip + toolchain-gccarmnoneeabi@1.100301.220327 board = marlin_BTT_EBB42_V1_1 board_build.offset = 0x0000 board_upload.offset_address = 0x08000000 From e82ec734d9a102ca21cfd0f8ad47a7e988579aed Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 23 May 2023 00:21:34 +0000 Subject: [PATCH 467/659] [cron] Bump distribution date (2023-05-23) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 6c3f8122f5..d1fe945715 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-22" +//#define STRING_DISTRIBUTION_DATE "2023-05-23" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 64baed6a41..5c35e0550f 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-22" + #define STRING_DISTRIBUTION_DATE "2023-05-23" #endif /** From e7a5d4d4169dfd55bc1f0c6e34a527c3f4c17e7a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 23 May 2023 03:15:02 -0500 Subject: [PATCH 468/659] =?UTF-8?q?=E2=9C=85=20Update=20checkout=20actions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/bump-date.yml | 4 ++-- .github/workflows/clean-closed.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/bump-date.yml b/.github/workflows/bump-date.yml index 482fbbbb40..a08eeea561 100644 --- a/.github/workflows/bump-date.yml +++ b/.github/workflows/bump-date.yml @@ -19,7 +19,7 @@ jobs: steps: - name: Check out bugfix-2.0.x - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: ref: bugfix-2.0.x @@ -39,7 +39,7 @@ jobs: exit 0 - name: Check out bugfix-2.1.x - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: ref: bugfix-2.1.x diff --git a/.github/workflows/clean-closed.yml b/.github/workflows/clean-closed.yml index befec4498f..2eab285aee 100644 --- a/.github/workflows/clean-closed.yml +++ b/.github/workflows/clean-closed.yml @@ -31,7 +31,7 @@ jobs: - "Needs: Work" steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Remove Labels uses: actions-ecosystem/action-remove-labels@v1 with: From 9036cec562a4ae1b8d54a31c9cf296fdbb5a5cba Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 24 May 2023 00:21:21 +0000 Subject: [PATCH 469/659] [cron] Bump distribution date (2023-05-24) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index d1fe945715..5b26bfa8ab 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-23" +//#define STRING_DISTRIBUTION_DATE "2023-05-24" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 5c35e0550f..2864463068 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-23" + #define STRING_DISTRIBUTION_DATE "2023-05-24" #endif /** From 37d0f49a82cd2e4d91dce4e62671b266924eb2a7 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 24 May 2023 01:05:55 -0500 Subject: [PATCH 470/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Mis?= =?UTF-8?q?c.=20ExtUI=20LCD=20cleanup=20(#25872)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/AVR/HAL.h | 2 +- Marlin/src/HAL/LPC1768/HAL.h | 2 +- Marlin/src/HAL/STM32/HAL.h | 2 +- Marlin/src/HAL/STM32F1/HAL.h | 2 +- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 2 +- .../extui/anycubic_chiron/FileNavigator.cpp | 30 +- .../lcd/extui/anycubic_chiron/FileNavigator.h | 4 +- .../extui/anycubic_chiron/chiron_extui.cpp | 26 +- .../lcd/extui/anycubic_chiron/chiron_tft.cpp | 310 +-- .../lcd/extui/anycubic_chiron/chiron_tft.h | 48 +- .../extui/anycubic_i3mega/anycubic_extui.cpp | 22 +- .../anycubic_i3mega/anycubic_i3mega_lcd.cpp | 1154 ++++---- .../anycubic_i3mega/anycubic_i3mega_lcd.h | 69 +- .../extui/anycubic_vyper/FileNavigator.cpp | 22 +- .../lcd/extui/anycubic_vyper/FileNavigator.h | 4 +- .../src/lcd/extui/anycubic_vyper/dgus_tft.cpp | 271 +- .../src/lcd/extui/anycubic_vyper/dgus_tft.h | 38 +- .../lcd/extui/anycubic_vyper/vyper_extui.cpp | 26 +- Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp | 2 +- .../extui/dgus/fysetc/DGUSScreenHandler.cpp | 6 +- .../extui/dgus/hiprecy/DGUSScreenHandler.cpp | 6 +- .../lcd/extui/dgus/mks/DGUSScreenHandler.cpp | 6 +- .../extui/dgus/origin/DGUSScreenHandler.cpp | 6 +- .../lcd/extui/dgus_reloaded/DGUSRxHandler.cpp | 2 +- .../lcd/extui/dgus_reloaded/DGUSRxHandler.h | 2 +- .../extui/dgus_reloaded/DGUSScreenHandler.cpp | 4 +- .../extui/dgus_reloaded/DGUSScreenHandler.h | 4 +- .../dgus_reloaded/definition/DGUS_VPList.cpp | 2 +- .../dgus_reloaded/dgus_reloaded_extui.cpp | 4 +- .../lcd/extui/ia_creality/FileNavigator.cpp | 24 +- .../src/lcd/extui/ia_creality/FileNavigator.h | 11 +- .../extui/ia_creality/ia_creality_extui.cpp | 2333 +++-------------- .../lcd/extui/ia_creality/ia_creality_rts.cpp | 1730 ++++++++++++ ...{ia_creality_extui.h => ia_creality_rts.h} | 26 +- .../extui/mks_ui/tft_lvgl_configuration.cpp | 1 - .../src/lcd/extui/nextion/FileNavigator.cpp | 62 +- Marlin/src/lcd/extui/nextion/FileNavigator.h | 4 +- .../src/lcd/extui/nextion/nextion_extui.cpp | 12 +- Marlin/src/lcd/extui/nextion/nextion_tft.cpp | 46 +- Marlin/src/lcd/extui/nextion/nextion_tft.h | 26 +- .../src/lcd/extui/nextion/nextion_tft_defs.h | 14 +- Marlin/src/lcd/language/language_en.h | 6 +- 42 files changed, 3173 insertions(+), 3200 deletions(-) create mode 100644 Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp rename Marlin/src/lcd/extui/ia_creality/{ia_creality_extui.h => ia_creality_rts.h} (92%) diff --git a/Marlin/src/HAL/AVR/HAL.h b/Marlin/src/HAL/AVR/HAL.h index d458790979..6d98dff080 100644 --- a/Marlin/src/HAL/AVR/HAL.h +++ b/Marlin/src/HAL/AVR/HAL.h @@ -140,7 +140,7 @@ typedef Servo hal_servo_t; #endif #define LCD_SERIAL lcdSerial #if HAS_DGUS_LCD - #define SERIAL_GET_TX_BUFFER_FREE() LCD_SERIAL.get_tx_buffer_free() + #define LCD_SERIAL_TX_BUFFER_FREE() LCD_SERIAL.get_tx_buffer_free() #endif #endif diff --git a/Marlin/src/HAL/LPC1768/HAL.h b/Marlin/src/HAL/LPC1768/HAL.h index 6d5824f7a1..be4d59ada7 100644 --- a/Marlin/src/HAL/LPC1768/HAL.h +++ b/Marlin/src/HAL/LPC1768/HAL.h @@ -101,7 +101,7 @@ extern DefaultSerial1 USBSerial; #error "LCD_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB." #endif #if HAS_DGUS_LCD - #define SERIAL_GET_TX_BUFFER_FREE() LCD_SERIAL.available() + #define LCD_SERIAL_TX_BUFFER_FREE() LCD_SERIAL.available() #endif #endif diff --git a/Marlin/src/HAL/STM32/HAL.h b/Marlin/src/HAL/STM32/HAL.h index 54359c5b09..dc36cc1eca 100644 --- a/Marlin/src/HAL/STM32/HAL.h +++ b/Marlin/src/HAL/STM32/HAL.h @@ -114,7 +114,7 @@ #error "LCD_SERIAL_PORT must be from 1 to 6, or -1 for Native USB." #endif #if HAS_DGUS_LCD - #define SERIAL_GET_TX_BUFFER_FREE() LCD_SERIAL.availableForWrite() + #define LCD_SERIAL_TX_BUFFER_FREE() LCD_SERIAL.availableForWrite() #endif #endif diff --git a/Marlin/src/HAL/STM32F1/HAL.h b/Marlin/src/HAL/STM32F1/HAL.h index 954281a4be..8ed525bfb7 100644 --- a/Marlin/src/HAL/STM32F1/HAL.h +++ b/Marlin/src/HAL/STM32F1/HAL.h @@ -140,7 +140,7 @@ static_assert(false, "LCD_SERIAL_PORT must be from 1 to " STRINGIFY(NUM_UARTS) ". You can also use -1 if the board supports Native USB.") #endif #if HAS_DGUS_LCD - #define SERIAL_GET_TX_BUFFER_FREE() LCD_SERIAL.availableForWrite() + #define LCD_SERIAL_TX_BUFFER_FREE() LCD_SERIAL.availableForWrite() #endif #endif diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index ceaf147c3b..53e4466bf8 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -2536,7 +2536,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item Draw_Menu_Item(row, ICON_Back, F("Back")); else Draw_Menu(Motion, MOTION_STEPS); - break; + break; #if HAS_X_AXIS case STEPS_X: if (draw) { diff --git a/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp b/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp index 6e77b2b2fd..ffc485a3dc 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp +++ b/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp @@ -60,21 +60,21 @@ using namespace ExtUI; namespace Anycubic { FileNavigator filenavigator; -FileList FileNavigator::filelist; // Instance of the Marlin file API +FileList FileNavigator::filelist; // ExtUI file API uint16_t FileNavigator::lastpanelindex; uint16_t FileNavigator::currentindex; // override the panel request uint8_t FileNavigator::folderdepth; -uint16_t FileNavigator::currentfolderindex[MAX_FOLDER_DEPTH]; // track folder pos for iteration -char FileNavigator::currentfoldername[MAX_PATH_LEN + 1]; // Current folder path +uint16_t FileNavigator::currentDirIndex[MAX_FOLDER_DEPTH]; // track folder pos for iteration +char FileNavigator::currentDirPath[MAX_PATH_LEN + 1]; // Current folder path FileNavigator::FileNavigator() { reset(); } void FileNavigator::reset() { - currentfoldername[0] = '\0'; + currentDirPath[0] = '\0'; folderdepth = 0; currentindex = 0; lastpanelindex = 0; - ZERO(currentfolderindex); + ZERO(currentDirIndex); // Start at root folder while (!filelist.isAtRootDir()) filelist.upDir(); @@ -85,9 +85,9 @@ void FileNavigator::refresh() { filelist.refresh(); } void FileNavigator::changeDIR(const char *folder) { if (folderdepth >= MAX_FOLDER_DEPTH) return; // limit the folder depth - currentfolderindex[folderdepth] = currentindex; - strcat(currentfoldername, folder); - strcat(currentfoldername, "/"); + currentDirIndex[folderdepth] = currentindex; + strcat(currentDirPath, folder); + strcat(currentDirPath, "/"); filelist.changeDir(folder); folderdepth++; currentindex = 0; @@ -97,15 +97,15 @@ void FileNavigator::upDIR() { if (!filelist.isAtRootDir()) { filelist.upDir(); folderdepth--; - currentindex = currentfolderindex[folderdepth]; // restore last position in the folder + currentindex = currentDirIndex[folderdepth]; // restore last position in the folder filelist.seek(currentindex); // restore file information } // Remove the child folder from the stored path if (folderdepth == 0) - currentfoldername[0] = '\0'; + currentDirPath[0] = '\0'; else { - char * const pos = strchr(currentfoldername, '/'); + char * const pos = strchr(currentDirPath, '/'); *(pos + 1) = '\0'; } } @@ -151,7 +151,7 @@ void FileNavigator::skiptofileindex(uint16_t skip) { // The new panel ignores entries that don't end in .GCO or .gcode so add and pad them. if (paneltype <= AC_panel_new) { TFTSer.println("<<.GCO"); - Chiron.SendtoTFTLN(F(".. .gcode")); + chiron.tftSendLn(F(".. .gcode")); } else { TFTSer.println("<<"); @@ -186,7 +186,7 @@ void FileNavigator::skiptofileindex(uint16_t skip) { } else { // Not DIR TFTSer.write('/'); - if (folderdepth > 0) TFTSer.print(currentfoldername); + if (folderdepth > 0) TFTSer.print(currentDirPath); TFTSer.println(filelist.shortFilename()); TFTSer.print(filelist.longFilename()); @@ -233,9 +233,9 @@ void FileNavigator::skiptofileindex(uint16_t skip) { void FileNavigator::sendFile(panel_type_t paneltype) { TFTSer.write('/'); - if (folderdepth > 0) TFTSer.print(currentfoldername); + if (folderdepth > 0) TFTSer.print(currentDirPath); TFTSer.println(filelist.shortFilename()); - if (folderdepth > 0) TFTSer.print(currentfoldername); + if (folderdepth > 0) TFTSer.print(currentDirPath); TFTSer.println(filelist.longFilename()); } diff --git a/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.h b/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.h index 71236c4df9..f4fad96653 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.h +++ b/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.h @@ -52,8 +52,8 @@ namespace Anycubic { static uint16_t lastpanelindex; static uint16_t currentindex; static uint8_t folderdepth; - static uint16_t currentfolderindex[MAX_FOLDER_DEPTH]; - static char currentfoldername[MAX_PATH_LEN + 1]; + static uint16_t currentDirIndex[MAX_FOLDER_DEPTH]; + static char currentDirPath[MAX_PATH_LEN + 1]; }; extern FileNavigator filenavigator; diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp b/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp index 520ca587e3..27ee4689ba 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp @@ -37,17 +37,17 @@ using namespace Anycubic; namespace ExtUI { - void onStartup() { Chiron.Startup(); } + void onStartup() { chiron.startup(); } - void onIdle() { Chiron.IdleLoop(); } + void onIdle() { chiron.idleLoop(); } void onPrinterKilled(FSTR_P const error, FSTR_P const component) { - Chiron.PrinterKilled(error, component); + chiron.printerKilled(error, component); } - void onMediaInserted() { Chiron.MediaEvent(AC_media_inserted); } - void onMediaError() { Chiron.MediaEvent(AC_media_error); } - void onMediaRemoved() { Chiron.MediaEvent(AC_media_removed); } + void onMediaInserted() { chiron.mediaEvent(AC_media_inserted); } + void onMediaError() { chiron.mediaEvent(AC_media_error); } + void onMediaRemoved() { chiron.mediaEvent(AC_media_removed); } void onPlayTone(const uint16_t frequency, const uint16_t duration) { #if ENABLED(SPEAKER) @@ -55,15 +55,15 @@ namespace ExtUI { #endif } - void onPrintTimerStarted() { Chiron.TimerEvent(AC_timer_started); } - void onPrintTimerPaused() { Chiron.TimerEvent(AC_timer_paused); } - void onPrintTimerStopped() { Chiron.TimerEvent(AC_timer_stopped); } + void onPrintTimerStarted() { chiron.timerEvent(AC_timer_started); } + void onPrintTimerPaused() { chiron.timerEvent(AC_timer_paused); } + void onPrintTimerStopped() { chiron.timerEvent(AC_timer_stopped); } void onPrintDone() {} - void onFilamentRunout(const extruder_t) { Chiron.FilamentRunout(); } + void onFilamentRunout(const extruder_t) { chiron.filamentRunout(); } - void onUserConfirmRequired(const char * const msg) { Chiron.ConfirmationRequest(msg); } - void onStatusChanged(const char * const msg) { Chiron.StatusChange(msg); } + void onUserConfirmRequired(const char * const msg) { chiron.confirmationRequest(msg); } + void onStatusChanged(const char * const msg) { chiron.statusChange(msg); } void onHomingStart() {} void onHomingDone() {} @@ -127,7 +127,7 @@ namespace ExtUI { // Called when power-loss state is detected } // Called on resume from power-loss - void onPowerLossResume() { Chiron.PowerLossRecovery(); } + void onPowerLossResume() { chiron.powerLossRecovery(); } #endif #if HAS_PID_HEATING diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp index f3bc64a024..bcf78746a2 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp @@ -42,9 +42,13 @@ #include "../../../libs/numtostr.h" #include "../../../MarlinCore.h" +#define DEBUG_OUT ACDEBUGLEVEL +#include "../../../core/debug_out.h" + namespace Anycubic { -ChironTFT Chiron; +ChironTFT chiron; + #if AUTO_DETECT_CHIRON_TFT panel_type_t ChironTFT::panel_type = AC_panel_unknown; #endif @@ -60,7 +64,7 @@ uint8_t ChironTFT::command_len; float ChironTFT::live_Zoffset; file_menu_t ChironTFT::file_menu; -void ChironTFT::Startup() { +void ChironTFT::startup() { selectedfile[0] = '\0'; panel_command[0] = '\0'; command_len = 0; @@ -92,73 +96,73 @@ void ChironTFT::Startup() { break; default: SERIAL_ECHOLNF(AC_msg_auto_panel_detection); - DetectPanelType(); + detectPanelType(); break; } // Signal Board has reset - SendtoTFTLN(AC_msg_main_board_has_reset); + tftSendLn(AC_msg_main_board_has_reset); // Enable leveling and Disable end stops during print // as Z home places nozzle above the bed so we need to allow it past the end stops injectCommands(AC_cmnd_enable_leveling); - // Startup tunes are defined in Tunes.h + // startup tunes are defined in Tunes.h PlayTune(TERN(AC_DEFAULT_STARTUP_TUNE, Anycubic_PowerOn, GB_PowerOn)); #if ACDEBUGLEVEL - SERIAL_ECHOLNPGM("AC Debug Level ", ACDEBUGLEVEL); + DEBUG_ECHOLNPGM("AC Debug Level ", ACDEBUGLEVEL); #endif - SendtoTFTLN(AC_msg_ready); + tftSendLn(AC_msg_ready); } -void ChironTFT::DetectPanelType() { +void ChironTFT::detectPanelType() { #if AUTO_DETECT_CHIRON_TFT // Send a query to the TFT - SendtoTFTLN(AC_Test_for_OldPanel); // The panel will respond with 'SXY 480 320' - SendtoTFTLN(AC_Test_for_NewPanel); // the panel will respond with '[0]=0 ' to '[19]=0 ' + tftSendLn(AC_Test_for_OldPanel); // The panel will respond with 'SXY 480 320' + tftSendLn(AC_Test_for_NewPanel); // the panel will respond with '[0]=0 ' to '[19]=0 ' #endif } -void ChironTFT::IdleLoop() { - if (ReadTFTCommand()) { - ProcessPanelRequest(); +void ChironTFT::idleLoop() { + if (readTFTCommand()) { + processPanelRequest(); command_len = 0; } - CheckHeaters(); + checkHeaters(); } -void ChironTFT::PrinterKilled(FSTR_P const error, FSTR_P const component) { - SendtoTFTLN(AC_msg_kill_lcd); +void ChironTFT::printerKilled(FSTR_P const error, FSTR_P const component) { + tftSendLn(AC_msg_kill_lcd); #if ACDEBUG(AC_MARLIN) - SERIAL_ECHOLNPGM("PrinterKilled()\nerror: ", error , "\ncomponent: ", component); + DEBUG_ECHOLNPGM("printerKilled()\nerror: ", error , "\ncomponent: ", component); #endif } -void ChironTFT::MediaEvent(media_event_t event) { +void ChironTFT::mediaEvent(media_event_t event) { #if ACDEBUG(AC_MARLIN) - SERIAL_ECHOLNPGM("ProcessMediaStatus() ", event); + DEBUG_ECHOLNPGM("ProcessMediaStatus() ", event); #endif switch (event) { case AC_media_inserted: - SendtoTFTLN(AC_msg_sd_card_inserted); + tftSendLn(AC_msg_sd_card_inserted); break; case AC_media_removed: - SendtoTFTLN(AC_msg_sd_card_removed); + tftSendLn(AC_msg_sd_card_removed); break; case AC_media_error: last_error = AC_error_noSD; - SendtoTFTLN(AC_msg_no_sd_card); + tftSendLn(AC_msg_no_sd_card); break; } } -void ChironTFT::TimerEvent(timer_event_t event) { +void ChironTFT::timerEvent(timer_event_t event) { #if ACDEBUG(AC_MARLIN) - SERIAL_ECHOLNPGM("TimerEvent() ", event); - SERIAL_ECHOLNPGM("Printer State: ", printer_state); + DEBUG_ECHOLNPGM("timerEvent() ", event); + DEBUG_ECHOLNPGM("Printer State: ", printer_state); #endif switch (event) { @@ -166,44 +170,44 @@ void ChironTFT::TimerEvent(timer_event_t event) { live_Zoffset = 0.0; // reset print offset setSoftEndstopState(false); // disable endstops to print printer_state = AC_printer_printing; - SendtoTFTLN(AC_msg_print_from_sd_card); + tftSendLn(AC_msg_print_from_sd_card); } break; case AC_timer_paused: { printer_state = AC_printer_paused; pause_state = AC_paused_idle; - SendtoTFTLN(AC_msg_paused); + tftSendLn(AC_msg_paused); } break; case AC_timer_stopped: { if (printer_state != AC_printer_idle) { printer_state = AC_printer_stopping; - SendtoTFTLN(AC_msg_print_complete); + tftSendLn(AC_msg_print_complete); } setSoftEndstopState(true); // enable endstops } break; } } -void ChironTFT::FilamentRunout() { +void ChironTFT::filamentRunout() { #if ACDEBUG(AC_MARLIN) - SERIAL_ECHOLNPGM("FilamentRunout() printer_state ", printer_state); + DEBUG_ECHOLNPGM("filamentRunout() printer_state ", printer_state); #endif // 1 Signal filament out last_error = AC_error_filament_runout; - SendtoTFTLN(isPrintingFromMedia() ? AC_msg_filament_out_alert : AC_msg_filament_out_block); + tftSendLn(isPrintingFromMedia() ? AC_msg_filament_out_alert : AC_msg_filament_out_block); PlayTune(FilamentOut); } -void ChironTFT::ConfirmationRequest(const char * const msg) { +void ChironTFT::confirmationRequest(const char * const msg) { // M108 continue #if ACDEBUG(AC_MARLIN) - SERIAL_ECHOLNPGM("ConfirmationRequest() ", msg, " printer_state:", printer_state); + DEBUG_ECHOLNPGM("confirmationRequest() ", msg, " printer_state:", printer_state); #endif switch (printer_state) { case AC_printer_pausing: { if (strcmp_P(msg, MARLIN_msg_print_paused) == 0 || strcmp_P(msg, MARLIN_msg_nozzle_parked) == 0) { - SendtoTFTLN(AC_msg_paused); // enable continue button + tftSendLn(AC_msg_paused); // enable continue button printer_state = AC_printer_paused; } } break; @@ -214,18 +218,18 @@ void ChironTFT::ConfirmationRequest(const char * const msg) { // Heater timeout, send acknowledgement if (strcmp_P(msg, MARLIN_msg_heater_timeout) == 0) { pause_state = AC_paused_heater_timed_out; - SendtoTFTLN(AC_msg_paused); // enable continue button + tftSendLn(AC_msg_paused); // enable continue button PlayTune(HeaterTimeout); } // Reheat finished, send acknowledgement else if (strcmp_P(msg, MARLIN_msg_reheat_done) == 0) { pause_state = AC_paused_idle; - SendtoTFTLN(AC_msg_paused); // enable continue button + tftSendLn(AC_msg_paused); // enable continue button } // Filament Purging, send acknowledgement enter run mode else if (strcmp_P(msg, MARLIN_msg_filament_purging) == 0) { pause_state = AC_paused_purging_filament; - SendtoTFTLN(AC_msg_paused); // enable continue button + tftSendLn(AC_msg_paused); // enable continue button } } break; default: @@ -233,10 +237,10 @@ void ChironTFT::ConfirmationRequest(const char * const msg) { } } -void ChironTFT::StatusChange(const char * const msg) { +void ChironTFT::statusChange(const char * const msg) { #if ACDEBUG(AC_MARLIN) - SERIAL_ECHOLNPGM("StatusChange() ", msg); - SERIAL_ECHOLNPGM("printer_state:", printer_state); + DEBUG_ECHOLNPGM("statusChange() ", msg); + DEBUG_ECHOLNPGM("printer_state:", printer_state); #endif bool msg_matched = false; // The only way to get printer status is to parse messages @@ -247,7 +251,7 @@ void ChironTFT::StatusChange(const char * const msg) { // Ignore the custom machine name if (strcmp_P(msg + strlen(MACHINE_NAME), MARLIN_msg_ready) == 0) { injectCommands(F("M500\nG27")); - SendtoTFTLN(AC_msg_probing_complete); + tftSendLn(AC_msg_probing_complete); printer_state = AC_printer_idle; msg_matched = true; } @@ -255,7 +259,7 @@ void ChironTFT::StatusChange(const char * const msg) { if (strcmp_P(msg, MARLIN_msg_probing_failed) == 0) { PlayTune(BeepBeepBeeep); injectCommands(F("G1 Z50 F500")); - SendtoTFTLN(AC_msg_probing_complete); + tftSendLn(AC_msg_probing_complete); printer_state = AC_printer_idle; msg_matched = true; } @@ -263,14 +267,14 @@ void ChironTFT::StatusChange(const char * const msg) { case AC_printer_printing: { if (strcmp_P(msg, MARLIN_msg_reheating) == 0) { - SendtoTFTLN(AC_msg_paused); // enable continue button + tftSendLn(AC_msg_paused); // enable continue button msg_matched = true; } } break; case AC_printer_pausing: { if (strcmp_P(msg, MARLIN_msg_print_paused) == 0) { - SendtoTFTLN(AC_msg_paused); + tftSendLn(AC_msg_paused); printer_state = AC_printer_paused; pause_state = AC_paused_idle; msg_matched = true; @@ -279,7 +283,7 @@ void ChironTFT::StatusChange(const char * const msg) { case AC_printer_stopping: { if (strcmp_P(msg, MARLIN_msg_print_aborted) == 0) { - SendtoTFTLN(AC_msg_stop); + tftSendLn(AC_msg_stop); printer_state = AC_printer_idle; msg_matched = true; } @@ -291,11 +295,11 @@ void ChironTFT::StatusChange(const char * const msg) { // If not matched earlier see if this was a heater message if (!msg_matched) { if (strcmp_P(msg, MARLIN_msg_extruder_heating) == 0) { - SendtoTFTLN(AC_msg_nozzle_heating); + tftSendLn(AC_msg_nozzle_heating); hotend_state = AC_heater_temp_set; } else if (strcmp_P(msg, MARLIN_msg_bed_heating) == 0) { - SendtoTFTLN(AC_msg_bed_heating); + tftSendLn(AC_msg_bed_heating); hotbed_state = AC_heater_temp_set; } else if (strcmp_P(msg, MARLIN_msg_EEPROM_version) == 0) { @@ -304,33 +308,33 @@ void ChironTFT::StatusChange(const char * const msg) { } } -void ChironTFT::PowerLossRecovery() { +void ChironTFT::powerLossRecovery() { printer_state = AC_printer_resuming_from_power_outage; // Play tune to notify user we can recover. last_error = AC_error_powerloss; PlayTune(SOS); SERIAL_ECHOLNF(AC_msg_powerloss_recovery); } -void ChironTFT::PrintComplete() { - SendtoTFT(AC_msg_print_complete); +void ChironTFT::printComplete() { + tftSend(AC_msg_print_complete); printer_state = AC_printer_idle; setSoftEndstopState(true); // enable endstops } -void ChironTFT::SendtoTFT(FSTR_P const fstr/*=nullptr*/) { // A helper to print PROGMEM string to the panel +void ChironTFT::tftSend(FSTR_P const fstr/*=nullptr*/) { // A helper to print PROGMEM string to the panel #if ACDEBUG(AC_SOME) - SERIAL_ECHOF(fstr); + DEBUG_ECHOF(fstr); #endif PGM_P str = FTOP(fstr); while (const char c = pgm_read_byte(str++)) TFTSer.write(c); } -void ChironTFT::SendtoTFTLN(FSTR_P const fstr/*=nullptr*/) { +void ChironTFT::tftSendLn(FSTR_P const fstr/*=nullptr*/) { if (fstr) { #if ACDEBUG(AC_SOME) - SERIAL_ECHOPGM("> "); + DEBUG_ECHOPGM("> "); #endif - SendtoTFT(fstr); + tftSend(fstr); #if ACDEBUG(AC_SOME) SERIAL_EOL(); #endif @@ -338,7 +342,7 @@ void ChironTFT::SendtoTFTLN(FSTR_P const fstr/*=nullptr*/) { TFTSer.println(); } -bool ChironTFT::ReadTFTCommand() { +bool ChironTFT::readTFTCommand() { bool command_ready = false; while (TFTSer.available() > 0 && command_len < MAX_CMND_LEN) { panel_command[command_len] = TFTSer.read(); @@ -352,29 +356,29 @@ bool ChironTFT::ReadTFTCommand() { if (command_ready || command_len == MAX_CMND_LEN) { panel_command[command_len] = '\0'; #if ACDEBUG(AC_ALL) - SERIAL_ECHOLNPGM("len(",command_len,") < ", panel_command); + DEBUG_ECHOLNPGM("len(",command_len,") < ", panel_command); #endif command_ready = true; } return command_ready; } -int8_t ChironTFT::FindToken(char c) { +int8_t ChironTFT::findToken(char c) { for (int8_t pos = 0; pos < command_len; pos++) { if (panel_command[pos] == c) { #if ACDEBUG(AC_INFO) - SERIAL_ECHOLNPGM("Tpos:", pos, " ", c); + DEBUG_ECHOLNPGM("Tpos:", pos, " ", c); #endif return pos; } } #if ACDEBUG(AC_INFO) - SERIAL_ECHOLNPGM("Not found: ", c); + DEBUG_ECHOLNPGM("Not found: ", c); #endif return -1; } -void ChironTFT::CheckHeaters() { +void ChironTFT::checkHeaters() { uint8_t faultDuration = 0; // if the hotend temp is abnormal, confirm state before signalling panel @@ -382,7 +386,7 @@ void ChironTFT::CheckHeaters() { while (!WITHIN(temp, HEATER_0_MINTEMP, HEATER_0_MAXTEMP)) { faultDuration++; if (faultDuration >= AC_HEATER_FAULT_VALIDATION_TIME) { - SendtoTFTLN(AC_msg_nozzle_temp_abnormal); + tftSendLn(AC_msg_nozzle_temp_abnormal); last_error = AC_error_abnormal_temp_t0; SERIAL_ECHOLNPGM("Extruder temp abnormal! : ", temp); break; @@ -397,7 +401,7 @@ void ChironTFT::CheckHeaters() { while (!WITHIN(temp, BED_MINTEMP, BED_MAXTEMP)) { faultDuration++; if (faultDuration >= AC_HEATER_FAULT_VALIDATION_TIME) { - SendtoTFTLN(AC_msg_nozzle_temp_abnormal); + tftSendLn(AC_msg_nozzle_temp_abnormal); last_error = AC_error_abnormal_temp_bed; SERIAL_ECHOLNPGM("Bed temp abnormal! : ", temp); break; @@ -409,7 +413,7 @@ void ChironTFT::CheckHeaters() { // Update panel with hotend heater status if (hotend_state != AC_heater_temp_reached) { if (WITHIN(getActualTemp_celsius(E0) - getTargetTemp_celsius(E0), -(TEMP_WINDOW), TEMP_WINDOW)) { - SendtoTFTLN(AC_msg_nozzle_heating_done); + tftSendLn(AC_msg_nozzle_heating_done); hotend_state = AC_heater_temp_reached; } } @@ -417,23 +421,23 @@ void ChironTFT::CheckHeaters() { // Update panel with bed heater status if (hotbed_state != AC_heater_temp_reached) { if (WITHIN(getActualTemp_celsius(BED) - getTargetTemp_celsius(BED), -(TEMP_BED_WINDOW), TEMP_BED_WINDOW)) { - SendtoTFTLN(AC_msg_bed_heating_done); + tftSendLn(AC_msg_bed_heating_done); hotbed_state = AC_heater_temp_reached; } } } -void ChironTFT::SendFileList(int8_t startindex) { +void ChironTFT::sendFileList(int8_t startindex) { // Respond to panel request for 4 files starting at index #if ACDEBUG(AC_INFO) - SERIAL_ECHOLNPGM("## SendFileList ## ", startindex); + DEBUG_ECHOLNPGM("## sendFileList ## ", startindex); #endif - SendtoTFTLN(F("FN ")); + tftSendLn(F("FN ")); filenavigator.getFiles(startindex, panel_type, 4); - SendtoTFTLN(F("END")); + tftSendLn(F("END")); } -void ChironTFT::SelectFile() { +void ChironTFT::selectFile() { if (panel_type <= AC_panel_new) { strncpy(selectedfile, panel_command + 4, command_len - 3); selectedfile[command_len - 4] = '\0'; @@ -443,50 +447,50 @@ void ChironTFT::SelectFile() { selectedfile[command_len - 5] = '\0'; } #if ACDEBUG(AC_FILE) - SERIAL_ECHOLNPGM(" Selected File: ",selectedfile); + DEBUG_ECHOLNPGM(" Selected File: ",selectedfile); #endif switch (selectedfile[0]) { case '/': // Valid file selected - SendtoTFTLN(AC_msg_sd_file_open_success); + tftSendLn(AC_msg_sd_file_open_success); break; case '<': // .. (go up folder level) filenavigator.upDIR(); - SendtoTFTLN(AC_msg_sd_file_open_failed); - SendFileList( 0 ); + tftSendLn(AC_msg_sd_file_open_failed); + sendFileList( 0 ); break; default: // enter sub folder // for new panel remove the '.GCO' tag that was added to the end of the path if (panel_type <= AC_panel_new) selectedfile[strlen(selectedfile) - 4] = '\0'; filenavigator.changeDIR(selectedfile); - SendtoTFTLN(AC_msg_sd_file_open_failed); - SendFileList( 0 ); + tftSendLn(AC_msg_sd_file_open_failed); + sendFileList( 0 ); break; } } -void ChironTFT::ProcessPanelRequest() { +void ChironTFT::processPanelRequest() { // Break these up into logical blocks // as its easier to navigate than one huge switch case! - int8_t tpos = FindToken('A'); + int8_t tpos = findToken('A'); // Panel request are 'A0' - 'A36' if (tpos >= 0) { const int8_t req = atoi(&panel_command[tpos + 1]); // Information requests A0 - A8 and A33 - if (req <= 8 || req == 33) PanelInfo(req); + if (req <= 8 || req == 33) panelInfo(req); // Simple Actions A9 - A28 - else if (req <= 28) PanelAction(req); + else if (req <= 28) panelAction(req); // Process Initiation - else if (req <= 36) PanelProcess(req); + else if (req <= 36) panelProcess(req); } else { #if AUTO_DETECT_CHIRON_TFT // This may be a response to a panel type detection query if (panel_type == AC_panel_unknown) { - tpos = FindToken('S'); // old panel will respond to 'SIZE' with 'SXY 480 320' + tpos = findToken('S'); // old panel will respond to 'SIZE' with 'SXY 480 320' if (tpos >= 0) { if (panel_command[tpos + 1] == 'X' && panel_command[tpos + 2] =='Y') { panel_type = AC_panel_standard; @@ -496,7 +500,7 @@ void ChironTFT::ProcessPanelRequest() { else { // new panel will respond to 'J200' with '[0]=0' // it seems only after a power cycle so detection assumes a new panel - tpos = FindToken('['); + tpos = findToken('['); if (tpos >= 0) { if (panel_command[tpos + 1] == '0' && panel_command[tpos + 2] ==']') { panel_type = AC_panel_new; @@ -508,94 +512,94 @@ void ChironTFT::ProcessPanelRequest() { } #endif - SendtoTFTLN(); // Ignore unknown requests + tftSendLn(); // Ignore unknown requests } } -void ChironTFT::PanelInfo(uint8_t req) { +void ChironTFT::panelInfo(uint8_t req) { // information requests A0-A8 and A33 switch (req) { case 0: // A0 Get HOTEND Temp - SendtoTFT(F("A0V ")); + tftSend(F("A0V ")); TFTSer.println(getActualTemp_celsius(E0)); break; case 1: // A1 Get HOTEND Target Temp - SendtoTFT(F("A1V ")); + tftSend(F("A1V ")); TFTSer.println(getTargetTemp_celsius(E0)); break; case 2: // A2 Get BED Temp - SendtoTFT(F("A2V ")); + tftSend(F("A2V ")); TFTSer.println(getActualTemp_celsius(BED)); break; case 3: // A3 Get BED Target Temp - SendtoTFT(F("A3V ")); + tftSend(F("A3V ")); TFTSer.println(getTargetTemp_celsius(BED)); break; case 4: // A4 Get FAN Speed - SendtoTFT(F("A4V ")); + tftSend(F("A4V ")); TFTSer.println(getActualFan_percent(FAN0)); break; case 5: // A5 Get Current Coordinates - SendtoTFT(F("A5V X: ")); + tftSend(F("A5V X: ")); TFTSer.print(getAxisPosition_mm(X)); - SendtoTFT(F(" Y: ")); + tftSend(F(" Y: ")); TFTSer.print(getAxisPosition_mm(Y)); - SendtoTFT(F(" Z: ")); + tftSend(F(" Z: ")); TFTSer.println(getAxisPosition_mm(Z)); break; case 6: // A6 Get printing progress if (isPrintingFromMedia()) { - SendtoTFT(F("A6V ")); + tftSend(F("A6V ")); TFTSer.println(ui8tostr2(getProgress_percent())); } else - SendtoTFTLN(F("A6V ---")); + tftSendLn(F("A6V ---")); break; case 7: { // A7 Get Printing Time uint32_t time = getProgress_seconds_elapsed() / 60; - SendtoTFT(F("A7V ")); + tftSend(F("A7V ")); TFTSer.print(ui8tostr2(time / 60)); - SendtoTFT(F(" H ")); + tftSend(F(" H ")); TFTSer.print(ui8tostr2(time % 60)); - SendtoTFT(F(" M")); + tftSend(F(" M")); #if ACDEBUG(AC_ALL) - SERIAL_ECHOLNPGM("Print time ", ui8tostr2(time / 60), ":", ui8tostr2(time % 60)); + DEBUG_ECHOLNPGM("Print time ", ui8tostr2(time / 60), ":", ui8tostr2(time % 60)); #endif } break; case 8: // A8 Get SD Card list A8 S0 if (!isMediaInserted()) safe_delay(500); if (!isMediaInserted()) // Make sure the card is removed - SendtoTFTLN(AC_msg_no_sd_card); + tftSendLn(AC_msg_no_sd_card); else if (panel_command[3] == 'S') - SendFileList( atoi( &panel_command[4] ) ); + sendFileList( atoi( &panel_command[4] ) ); break; case 33: // A33 Get firmware info - SendtoTFT(F("J33 ")); + tftSend(F("J33 ")); // If there is an error recorded, show that instead of the FW version - if (!GetLastError()) SendtoTFTLN(F(SHORT_BUILD_VERSION)); + if (!getLastError()) tftSendLn(F(SHORT_BUILD_VERSION)); break; } } -void ChironTFT::PanelAction(uint8_t req) { +void ChironTFT::panelAction(uint8_t req) { switch (req) { case 9: // A9 Pause SD print if (isPrintingFromMedia()) { - SendtoTFTLN(AC_msg_pause); + tftSendLn(AC_msg_pause); pausePrint(); printer_state = AC_printer_pausing; } else - SendtoTFTLN(AC_msg_stop); + tftSendLn(AC_msg_stop); break; case 10: // A10 Resume SD Print @@ -613,7 +617,7 @@ void ChironTFT::PanelAction(uint8_t req) { else { if (printer_state == AC_printer_resuming_from_power_outage) injectCommands(F("M1000 C")); // Cancel recovery - SendtoTFTLN(AC_msg_stop); + tftSendLn(AC_msg_stop); printer_state = AC_printer_idle; } break; @@ -623,7 +627,7 @@ void ChironTFT::PanelAction(uint8_t req) { break; case 13: // A13 Select file - SelectFile(); + selectFile(); break; case 14: // A14 Start Printing @@ -632,11 +636,9 @@ void ChironTFT::PanelAction(uint8_t req) { injectCommands(F("M1000 C")); // Cancel recovery printer_state = AC_printer_idle; } - #if ACDebugLevel >= 1 - SERIAL_ECHOLNPGM("Print: ", selectedfile); - #endif + DEBUG_ECHOLNPGM("Print: ", selectedfile); printFile(selectedfile); - SendtoTFTLN(AC_msg_print_from_sd_card); + tftSendLn(AC_msg_print_from_sd_card); break; case 15: // A15 Resuming from outage @@ -671,7 +673,7 @@ void ChironTFT::PanelAction(uint8_t req) { case 19: // A19 Motors off if (!isPrinting()) { stepper.disable_all_steppers(); - SendtoTFTLN(AC_msg_ready); + tftSendLn(AC_msg_ready); } break; @@ -679,7 +681,7 @@ void ChironTFT::PanelAction(uint8_t req) { if (panel_command[4] == 'S') setFeedrate_percent(atoi(&panel_command[5])); else { - SendtoTFT(F("A20V ")); + tftSend(F("A20V ")); TFTSer.println(getFeedrate_percent()); } break; @@ -707,7 +709,7 @@ void ChironTFT::PanelAction(uint8_t req) { char MoveCmnd[30]; sprintf_P(MoveCmnd, PSTR("G91\nG0%s\nG90"), panel_command + 3); #if ACDEBUG(AC_ACTION) - SERIAL_ECHOLNPGM("Move: ", MoveCmnd); + DEBUG_ECHOLNPGM("Move: ", MoveCmnd); #endif setSoftEndstopState(true); // enable endstops injectCommands(MoveCmnd); @@ -720,7 +722,7 @@ void ChironTFT::PanelAction(uint8_t req) { // Temps defined in configuration.h setTargetTemp_celsius(PREHEAT_1_TEMP_BED, BED); setTargetTemp_celsius(PREHEAT_1_TEMP_HOTEND, E0); - SendtoTFTLN(); + tftSendLn(); hotbed_state = AC_heater_temp_set; hotend_state = AC_heater_temp_set; } @@ -731,7 +733,7 @@ void ChironTFT::PanelAction(uint8_t req) { if (!isPrinting()) { setTargetTemp_celsius(PREHEAT_2_TEMP_BED, BED); setTargetTemp_celsius(PREHEAT_2_TEMP_HOTEND, E0); - SendtoTFTLN(); + tftSendLn(); hotbed_state = AC_heater_temp_set; hotend_state = AC_heater_temp_set; } @@ -742,7 +744,7 @@ void ChironTFT::PanelAction(uint8_t req) { if (!isPrinting()) { setTargetTemp_celsius(0, E0); setTargetTemp_celsius(0, BED); - SendtoTFTLN(AC_msg_ready); + tftSendLn(AC_msg_ready); hotbed_state = AC_heater_off; hotend_state = AC_heater_off; } @@ -761,21 +763,21 @@ void ChironTFT::PanelAction(uint8_t req) { case 28: // A28 Filament set A28 O/C // Ignore request if printing if (isPrinting()) break; - SendtoTFTLN(); + tftSendLn(); break; } } -void ChironTFT::PanelProcess(uint8_t req) { +void ChironTFT::panelProcess(uint8_t req) { switch (req) { case 29: { // A29 Read Mesh Point A29 X1 Y1 xy_uint8_t pos; float pos_z; - pos.x = atoi(&panel_command[FindToken('X')+1]); - pos.y = atoi(&panel_command[FindToken('Y')+1]); + pos.x = atoi(&panel_command[findToken('X')+1]); + pos.y = atoi(&panel_command[findToken('Y')+1]); pos_z = getMeshPoint(pos); - SendtoTFT(F("A29V ")); + tftSend(F("A29V ")); TFTSer.println(pos_z * 100); if (!isPrinting()) { setSoftEndstopState(true); // disable endstops @@ -786,7 +788,7 @@ void ChironTFT::PanelProcess(uint8_t req) { if (isPositionKnown()) { #if ACDEBUG(AC_INFO) - SERIAL_ECHOLNPGM("Moving to mesh point at x: ", pos.x, " y: ", pos.y, " z: ", pos_z); + DEBUG_ECHOLNPGM("Moving to mesh point at x: ", pos.x, " y: ", pos.y, " z: ", pos_z); #endif // Go up before moving setAxisPosition_mm(3.0,Z); @@ -795,7 +797,7 @@ void ChironTFT::PanelProcess(uint8_t req) { setAxisPosition_mm(20 + (93 * pos.y), Y); setAxisPosition_mm(0.0, Z); #if ACDEBUG(AC_INFO) - SERIAL_ECHOLNPGM("Current Z: ", getAxisPosition_mm(Z)); + DEBUG_ECHOLNPGM("Current Z: ", getAxisPosition_mm(Z)); #endif } } @@ -805,24 +807,24 @@ void ChironTFT::PanelProcess(uint8_t req) { } break; case 30: // A30 Auto leveling - if (FindToken('S') >= 0) { // Start probing New panel adds spaces.. + if (findToken('S') >= 0) { // Start probing New panel adds spaces.. // Ignore request if printing if (isPrinting()) - SendtoTFTLN(AC_msg_probing_not_allowed); // forbid auto leveling + tftSendLn(AC_msg_probing_not_allowed); // forbid auto leveling else { - SendtoTFTLN(AC_msg_start_probing); + tftSendLn(AC_msg_start_probing); injectCommands(F("G28\nG29")); printer_state = AC_printer_probing; } } else - SendtoTFTLN(AC_msg_start_probing); // Just enter levelling menu + tftSendLn(AC_msg_start_probing); // Just enter levelling menu break; case 31: // A31 Adjust all Probe Points // The tokens can occur in different places on the new panel so we need to find it. - if (FindToken('C') >= 0) { // Restore and apply original offsets + if (findToken('C') >= 0) { // Restore and apply original offsets if (!isPrinting()) { injectCommands(F("M501\nM420 S1")); selectedmeshpoint.x = selectedmeshpoint.y = 99; @@ -830,7 +832,7 @@ void ChironTFT::PanelProcess(uint8_t req) { } } - else if (FindToken('D') >= 0) { // Save Z Offset tables and restore leveling state + else if (findToken('D') >= 0) { // Save Z Offset tables and restore leveling state if (!isPrinting()) { setAxisPosition_mm(1.0,Z); // Lift nozzle before any further movements are made injectCommands(F("M500")); @@ -839,8 +841,8 @@ void ChironTFT::PanelProcess(uint8_t req) { } } - else if (FindToken('G') >= 0) { // Get current offset - SendtoTFT(F("A31V ")); + else if (findToken('G') >= 0) { // Get current offset + tftSend(F("A31V ")); // When printing use the live z Offset position // we will use babystepping to move the print head if (isPrinting()) @@ -852,7 +854,7 @@ void ChironTFT::PanelProcess(uint8_t req) { } else { - int8_t tokenpos = FindToken('S'); + int8_t tokenpos = findToken('S'); if (tokenpos >= 0) { // Set offset (adjusts all points by value) float Zshift = atof(&panel_command[tokenpos+1]); setSoftEndstopState(false); // disable endstops @@ -860,22 +862,22 @@ void ChironTFT::PanelProcess(uint8_t req) { // From the leveling panel use the all points UI to adjust the print pos. if (isPrinting()) { #if ACDEBUG(AC_INFO) - SERIAL_ECHOLNPGM("Change Zoffset from:", live_Zoffset, " to ", live_Zoffset + Zshift); + DEBUG_ECHOLNPGM("Change Zoffset from:", live_Zoffset, " to ", live_Zoffset + Zshift); #endif if (isAxisPositionKnown(Z)) { #if ACDEBUG(AC_INFO) const float currZpos = getAxisPosition_mm(Z); - SERIAL_ECHOLNPGM("Nudge Z pos from ", currZpos, " to ", currZpos + constrain(Zshift, -0.05, 0.05)); + DEBUG_ECHOLNPGM("Nudge Z pos from ", currZpos, " to ", currZpos + constrain(Zshift, -0.05, 0.05)); #endif // Use babystepping to adjust the head position int16_t steps = mmToWholeSteps(constrain(Zshift,-0.05,0.05), Z); #if ACDEBUG(AC_INFO) - SERIAL_ECHOLNPGM("Steps to move Z: ", steps); + DEBUG_ECHOLNPGM("Steps to move Z: ", steps); #endif babystepAxis_steps(steps, Z); live_Zoffset += Zshift; } - SendtoTFT(F("A31V ")); + tftSend(F("A31V ")); TFTSer.println(live_Zoffset); } else { @@ -884,23 +886,23 @@ void ChironTFT::PanelProcess(uint8_t req) { const float currval = getMeshPoint(pos); setMeshPoint(pos, constrain(currval + Zshift, AC_LOWEST_MESHPOINT_VAL, 2)); #if ACDEBUG(AC_INFO) - SERIAL_ECHOLNPGM("Change mesh point X", x," Y",y ," from ", currval, " to ", getMeshPoint(pos) ); + DEBUG_ECHOLNPGM("Change mesh point X", x," Y",y ," from ", currval, " to ", getMeshPoint(pos) ); #endif } const float currZOffset = getZOffset_mm(); #if ACDEBUG(AC_INFO) - SERIAL_ECHOLNPGM("Change probe offset from ", currZOffset, " to ", currZOffset + Zshift); + DEBUG_ECHOLNPGM("Change probe offset from ", currZOffset, " to ", currZOffset + Zshift); #endif setZOffset_mm(currZOffset + Zshift); - SendtoTFT(F("A31V ")); + tftSend(F("A31V ")); TFTSer.println(getZOffset_mm()); if (isAxisPositionKnown(Z)) { // Move Z axis const float currZpos = getAxisPosition_mm(Z); #if ACDEBUG(AC_INFO) - SERIAL_ECHOLNPGM("Move Z pos from ", currZpos, " to ", currZpos + constrain(Zshift, -0.05, 0.05)); + DEBUG_ECHOLNPGM("Move Z pos from ", currZpos, " to ", currZpos + constrain(Zshift, -0.05, 0.05)); #endif setAxisPosition_mm(currZpos+constrain(Zshift,-0.05,0.05),Z); } @@ -916,7 +918,7 @@ void ChironTFT::PanelProcess(uint8_t req) { //TFTSer.println(); break; - // A33 firmware info request see PanelInfo() + // A33 firmware info request see panelInfo() case 34: // A34 Adjust single mesh point A34 C/S X1 Y1 V123 if (panel_command[3] == 'C') { // Restore original offsets @@ -932,8 +934,8 @@ void ChironTFT::PanelProcess(uint8_t req) { float currmesh = getMeshPoint(pos); float newval = atof(&panel_command[11])/100; #if ACDEBUG(AC_INFO) - SERIAL_ECHOLNPGM("Change mesh point x:", pos.x, " y:", pos.y); - SERIAL_ECHOLNPGM("from ", currmesh, " to ", newval); + DEBUG_ECHOLNPGM("Change mesh point x:", pos.x, " y:", pos.y); + DEBUG_ECHOLNPGM("from ", currmesh, " to ", newval); #endif // Update Meshpoint setMeshPoint(pos,newval); @@ -944,7 +946,7 @@ void ChironTFT::PanelProcess(uint8_t req) { setSoftEndstopState(false); float currZpos = getAxisPosition_mm(Z); #if ACDEBUG(AC_INFO) - SERIAL_ECHOLNPGM("Move Z pos from ", currZpos, " to ", currZpos + constrain(newval - currmesh, -0.05, 0.05)); + DEBUG_ECHOLNPGM("Move Z pos from ", currZpos, " to ", currZpos + constrain(newval - currmesh, -0.05, 0.05)); #endif setAxisPosition_mm(currZpos + constrain(newval - currmesh, -0.05, 0.05), Z); } @@ -953,19 +955,19 @@ void ChironTFT::PanelProcess(uint8_t req) { break; case 36: // A36 Auto leveling for new TFT bet that was a typo in the panel code! - SendtoTFTLN(AC_msg_start_probing); + tftSendLn(AC_msg_start_probing); break; } } -bool ChironTFT::GetLastError() { +bool ChironTFT::getLastError() { switch (last_error) { - case AC_error_abnormal_temp_bed: SendtoTFTLN(AC_msg_error_bed_temp); break; - case AC_error_abnormal_temp_t0: SendtoTFTLN(AC_msg_error_hotend_temp); break; - case AC_error_noSD: SendtoTFTLN(AC_msg_error_sd_card); break; - case AC_error_powerloss: SendtoTFTLN(AC_msg_power_loss); break; - case AC_error_EEPROM: SendtoTFTLN(AC_msg_eeprom_version); break; - case AC_error_filament_runout: SendtoTFTLN(AC_msg_filament_out); break; + case AC_error_abnormal_temp_bed: tftSendLn(AC_msg_error_bed_temp); break; + case AC_error_abnormal_temp_t0: tftSendLn(AC_msg_error_hotend_temp); break; + case AC_error_noSD: tftSendLn(AC_msg_error_sd_card); break; + case AC_error_powerloss: tftSendLn(AC_msg_power_loss); break; + case AC_error_EEPROM: tftSendLn(AC_msg_eeprom_version); break; + case AC_error_filament_runout: tftSendLn(AC_msg_filament_out); break; default: return false; } last_error = AC_error_none; diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.h b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.h index e0517ec640..25b8145b13 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.h +++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.h @@ -57,32 +57,32 @@ class ChironTFT { static float live_Zoffset; static file_menu_t file_menu; public: - static void Startup(); - static void IdleLoop(); - static void PrinterKilled(FSTR_P, FSTR_P); - static void MediaEvent(media_event_t); - static void TimerEvent(timer_event_t); - static void FilamentRunout(); - static void ConfirmationRequest(const char * const); - static void StatusChange(const char * const); - static void PowerLossRecovery(); - static void PrintComplete(); - static void SendtoTFT(FSTR_P const=nullptr); - static void SendtoTFTLN(FSTR_P const=nullptr); + static void startup(); + static void idleLoop(); + static void printerKilled(FSTR_P, FSTR_P); + static void mediaEvent(media_event_t); + static void timerEvent(timer_event_t); + static void filamentRunout(); + static void confirmationRequest(const char * const); + static void statusChange(const char * const); + static void powerLossRecovery(); + static void printComplete(); + static void tftSend(FSTR_P const=nullptr); + static void tftSendLn(FSTR_P const=nullptr); private: - static void DetectPanelType(); - static bool ReadTFTCommand(); - static int8_t FindToken(char); - static void CheckHeaters(); - static void SendFileList(int8_t); - static void SelectFile(); - static void ProcessPanelRequest(); - static void PanelInfo(uint8_t); - static void PanelAction(uint8_t); - static void PanelProcess(uint8_t); - static bool GetLastError(); + static void detectPanelType(); + static bool readTFTCommand(); + static int8_t findToken(char); + static void checkHeaters(); + static void sendFileList(int8_t); + static void selectFile(); + static void processPanelRequest(); + static void panelInfo(uint8_t); + static void panelAction(uint8_t); + static void panelProcess(uint8_t); + static bool getLastError(); }; -extern ChironTFT Chiron; +extern ChironTFT chiron; } // Anycubic namespace diff --git a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp index a2ad678ac6..0df3bde89d 100644 --- a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp @@ -35,20 +35,20 @@ namespace ExtUI { - void onStartup() { AnycubicTFT.OnSetup(); } - void onIdle() { AnycubicTFT.OnCommandScan(); } - void onPrinterKilled(FSTR_P const error, FSTR_P const component) { AnycubicTFT.OnKillTFT(); } - void onMediaInserted() { AnycubicTFT.OnSDCardStateChange(true); } - void onMediaError() { AnycubicTFT.OnSDCardError(); } - void onMediaRemoved() { AnycubicTFT.OnSDCardStateChange(false); } + void onStartup() { anycubicTFT.onSetup(); } + void onIdle() { anycubicTFT.onCommandScan(); } + void onPrinterKilled(FSTR_P const error, FSTR_P const component) { anycubicTFT.onKillTFT(); } + void onMediaInserted() { anycubicTFT.onSDCardStateChange(true); } + void onMediaError() { anycubicTFT.onSDCardError(); } + void onMediaRemoved() { anycubicTFT.onSDCardStateChange(false); } void onPlayTone(const uint16_t frequency, const uint16_t duration) { TERN_(SPEAKER, ::tone(BEEPER_PIN, frequency, duration)); } - void onPrintTimerStarted() { AnycubicTFT.OnPrintTimerStarted(); } - void onPrintTimerPaused() { AnycubicTFT.OnPrintTimerPaused(); } - void onPrintTimerStopped() { AnycubicTFT.OnPrintTimerStopped(); } - void onFilamentRunout(const extruder_t extruder) { AnycubicTFT.OnFilamentRunout(); } - void onUserConfirmRequired(const char * const msg) { AnycubicTFT.OnUserConfirmRequired(msg); } + void onPrintTimerStarted() { anycubicTFT.onPrintTimerStarted(); } + void onPrintTimerPaused() { anycubicTFT.onPrintTimerPaused(); } + void onPrintTimerStopped() { anycubicTFT.onPrintTimerStopped(); } + void onFilamentRunout(const extruder_t extruder) { anycubicTFT.onFilamentRunout(); } + void onUserConfirmRequired(const char * const msg) { anycubicTFT.onUserConfirmRequired(msg); } void onStatusChanged(const char * const msg) {} void onHomingStart() {} diff --git a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp index 36b24861fe..dca0f2e85d 100644 --- a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp +++ b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp @@ -24,6 +24,8 @@ #if ENABLED(ANYCUBIC_LCD_I3MEGA) //#define ANYCUBIC_LCD_DEBUG +#define DEBUG_OUT ANYCUBIC_LCD_DEBUG +#include "../../../core/debug_out.h" #include "anycubic_i3mega_lcd.h" #include "../ui_api.h" @@ -40,13 +42,8 @@ #define SEND_PGM_VAL(x,y) (send_P(PSTR(x)), sendLine(i16tostr3rj(y))) #define SEND(x) send(x) #define SENDLINE(x) sendLine(x) -#if ENABLED(ANYCUBIC_LCD_DEBUG) - #define SENDLINE_DBG_PGM(x,y) do{ sendLine_P(PSTR(x)); SERIAL_ECHOLNPGM(y); }while(0) - #define SENDLINE_DBG_PGM_VAL(x,y,z) do{ sendLine_P(PSTR(x)); SERIAL_ECHOLNPGM(y, z); }while(0) -#else - #define SENDLINE_DBG_PGM(x,y) sendLine_P(PSTR(x)) - #define SENDLINE_DBG_PGM_VAL(x,y,z) sendLine_P(PSTR(x)) -#endif +#define SENDLINE_DBG_PGM(x,y) do{ sendLine_P(PSTR(x)); DEBUG_ECHOLNPGM(y); }while(0) +#define SENDLINE_DBG_PGM_VAL(x,y,z) do{ sendLine_P(PSTR(x)); DEBUG_ECHOLNPGM(y, z); }while(0) // Append ".gcode" to filename, if requested. Used for some DGUS-clone displays with built-in filter. // Filenames are limited to 26 characters, so the actual name for the FILENAME can be 20 characters at most. @@ -54,21 +51,20 @@ #define SPECIAL_MENU_FILENAME(A) A TERN_(ANYCUBIC_LCD_GCODE_EXT, ".gcode") #define SPECIAL_MENU_ALTNAME(A, B) TERN(ANYCUBIC_LCD_GCODE_EXT, A ".gcode", B) -AnycubicTFTClass AnycubicTFT; +AnycubicTFTClass anycubicTFT; -char AnycubicTFTClass::TFTcmdbuffer[TFTBUFSIZE][TFT_MAX_CMD_SIZE]; -int AnycubicTFTClass::TFTbuflen = 0, - AnycubicTFTClass::TFTbufindr = 0, - AnycubicTFTClass::TFTbufindw = 0; +char AnycubicTFTClass::tftCommands[TFTBUFSIZE][TFT_MAX_CMD_SIZE]; +int AnycubicTFTClass::tftBufLen = 0, + AnycubicTFTClass::tftBufIndR = 0, + AnycubicTFTClass::tftBufIndW = 0; char AnycubicTFTClass::serial3_char; -int AnycubicTFTClass::serial3_count = 0; -char* AnycubicTFTClass::TFTstrchr_pointer; -uint8_t AnycubicTFTClass::SpecialMenu = false; +char* AnycubicTFTClass::tftStrchrPtr; +uint8_t AnycubicTFTClass::specialMenu = false; AnycubicMediaPrintState AnycubicTFTClass::mediaPrintingState = AMPRINTSTATE_NOT_PRINTING; AnycubicMediaPauseState AnycubicTFTClass::mediaPauseState = AMPAUSESTATE_NOT_PAUSED; -char AnycubicTFTClass::SelectedDirectory[30]; -char AnycubicTFTClass::SelectedFile[FILENAME_LENGTH]; +char AnycubicTFTClass::selectedDirectory[30]; +char AnycubicTFTClass::selectedFile[FILENAME_LENGTH]; // Serial helpers static void sendNewLine() { LCD_SERIAL.write('\r'); LCD_SERIAL.write('\n'); } @@ -84,7 +80,7 @@ using namespace ExtUI; AnycubicTFTClass::AnycubicTFTClass() {} -void AnycubicTFTClass::OnSetup() { +void AnycubicTFTClass::onSetup() { #ifndef LCD_BAUDRATE #define LCD_BAUDRATE 115200 #endif @@ -94,9 +90,6 @@ void AnycubicTFTClass::OnSetup() { delay_ms(10); // Init the state of the key pins running on the TFT - #if BOTH(HAS_MEDIA, HAS_SD_DETECT) - SET_INPUT_PULLUP(SD_DETECT_PIN); - #endif #if ENABLED(FILAMENT_RUNOUT_SENSOR) SET_INPUT_PULLUP(FIL_RUNOUT1_PIN); #endif @@ -104,30 +97,26 @@ void AnycubicTFTClass::OnSetup() { mediaPrintingState = AMPRINTSTATE_NOT_PRINTING; mediaPauseState = AMPAUSESTATE_NOT_PAUSED; - // DoSDCardStateCheck(); + // doSDCardStateCheck(); SENDLINE_DBG_PGM("J12", "TFT Serial Debug: Ready... J12"); // J12 Ready delay_ms(10); - DoFilamentRunoutCheck(); - SelectedFile[0] = 0; + doFilamentRunoutCheck(); + selectedFile[0] = 0; #if ENABLED(STARTUP_CHIME) injectCommands(F("M300 P250 S554\nM300 P250 S554\nM300 P250 S740\nM300 P250 S554\nM300 P250 S740\nM300 P250 S554\nM300 P500 S831")); #endif - #if ENABLED(ANYCUBIC_LCD_DEBUG) - SERIAL_ECHOLNPGM("TFT Serial Debug: Finished startup"); - #endif + DEBUG_ECHOLNPGM("TFT Serial Debug: Finished startup"); } -void AnycubicTFTClass::OnCommandScan() { +void AnycubicTFTClass::onCommandScan() { static millis_t nextStopCheck = 0; // used to slow the stopped print check down to reasonable times const millis_t ms = millis(); if (ELAPSED(ms, nextStopCheck)) { nextStopCheck = ms + 1000UL; - if (mediaPrintingState == AMPRINTSTATE_STOP_REQUESTED && IsNozzleHomed()) { - #if ENABLED(ANYCUBIC_LCD_DEBUG) - SERIAL_ECHOLNPGM("TFT Serial Debug: Finished stopping print, releasing motors ..."); - #endif + if (mediaPrintingState == AMPRINTSTATE_STOP_REQUESTED && isNozzleHomed()) { + DEBUG_ECHOLNPGM("TFT Serial Debug: Finished stopping print, releasing motors ..."); mediaPrintingState = AMPRINTSTATE_NOT_PRINTING; mediaPauseState = AMPAUSESTATE_NOT_PAUSED; injectCommands(F("M84\nM27")); // disable stepper motors and force report of SD status @@ -137,44 +126,36 @@ void AnycubicTFTClass::OnCommandScan() { } } - if (TFTbuflen < (TFTBUFSIZE - 1)) - GetCommandFromTFT(); + if (tftBufLen < (TFTBUFSIZE) - 1) + getCommandFromTFT(); - if (TFTbuflen) { - TFTbuflen = (TFTbuflen - 1); - TFTbufindr = (TFTbufindr + 1) % TFTBUFSIZE; + if (tftBufLen) { + --tftBufLen; + tftBufIndR = (tftBufIndR + 1) % (TFTBUFSIZE); } } -void AnycubicTFTClass::OnKillTFT() { +void AnycubicTFTClass::onKillTFT() { SENDLINE_DBG_PGM("J11", "TFT Serial Debug: Kill command... J11"); } -void AnycubicTFTClass::OnSDCardStateChange(bool isInserted) { - #if ENABLED(ANYCUBIC_LCD_DEBUG) - SERIAL_ECHOLNPGM("TFT Serial Debug: OnSDCardStateChange event triggered...", isInserted); - #endif - DoSDCardStateCheck(); +void AnycubicTFTClass::onSDCardStateChange(bool isInserted) { + DEBUG_ECHOLNPGM("TFT Serial Debug: onSDCardStateChange event triggered...", isInserted); + doSDCardStateCheck(); } -void AnycubicTFTClass::OnSDCardError() { - #if ENABLED(ANYCUBIC_LCD_DEBUG) - SERIAL_ECHOLNPGM("TFT Serial Debug: OnSDCardError event triggered..."); - #endif +void AnycubicTFTClass::onSDCardError() { + DEBUG_ECHOLNPGM("TFT Serial Debug: onSDCardError event triggered..."); SENDLINE_DBG_PGM("J21", "TFT Serial Debug: On SD Card Error ... J21"); } -void AnycubicTFTClass::OnFilamentRunout() { - #if ENABLED(ANYCUBIC_LCD_DEBUG) - SERIAL_ECHOLNPGM("TFT Serial Debug: FilamentRunout triggered..."); - #endif - DoFilamentRunoutCheck(); +void AnycubicTFTClass::onFilamentRunout() { + DEBUG_ECHOLNPGM("TFT Serial Debug: onFilamentRunout triggered..."); + doFilamentRunoutCheck(); } -void AnycubicTFTClass::OnUserConfirmRequired(const char * const msg) { - #if ENABLED(ANYCUBIC_LCD_DEBUG) - SERIAL_ECHOLNPGM("TFT Serial Debug: OnUserConfirmRequired triggered... ", msg); - #endif +void AnycubicTFTClass::onUserConfirmRequired(const char * const msg) { + DEBUG_ECHOLNPGM("TFT Serial Debug: onUserConfirmRequired triggered... ", msg); #if HAS_MEDIA /** @@ -225,190 +206,188 @@ void AnycubicTFTClass::OnUserConfirmRequired(const char * const msg) { #endif } -float AnycubicTFTClass::CodeValue() { - return (strtod(&TFTcmdbuffer[TFTbufindr][TFTstrchr_pointer - TFTcmdbuffer[TFTbufindr] + 1], nullptr)); +float AnycubicTFTClass::codeValue() { + return (strtod(&tftCommands[tftBufIndR][tftStrchrPtr - tftCommands[tftBufIndR] + 1], nullptr)); } -bool AnycubicTFTClass::CodeSeen(char code) { - TFTstrchr_pointer = strchr(TFTcmdbuffer[TFTbufindr], code); - return !!TFTstrchr_pointer; // Return True if a character was found +bool AnycubicTFTClass::codeSeen(char code) { + tftStrchrPtr = strchr(tftCommands[tftBufIndR], code); + return !!tftStrchrPtr; // Return True if a character was found } -bool AnycubicTFTClass::IsNozzleHomed() { +bool AnycubicTFTClass::isNozzleHomed() { const float xPosition = getAxisPosition_mm((axis_t) X); const float yPosition = getAxisPosition_mm((axis_t) Y); return WITHIN(xPosition, X_MIN_POS - 0.1, X_MIN_POS + 0.1) && WITHIN(yPosition, Y_MIN_POS - 0.1, Y_MIN_POS + 0.1); } -void AnycubicTFTClass::HandleSpecialMenu() { +void AnycubicTFTClass::handleSpecialMenu() { /** * NOTE: that the file selection command actual lowercases the entire selected file/foldername, so charracter comparisons need to be lowercase. */ - if (SelectedDirectory[0] == '<') { - switch (SelectedDirectory[1]) { - case 'e': // "" - SpecialMenu = false; - return; + if (selectedDirectory[0] != '<') { + DEBUG_ECHOLNPGM("TFT Serial Debug: Attempted to handleSpecialMenu on non-special menu... ", selectedDirectory); + return; + } + + switch (selectedDirectory[1]) { + default: break; + + case 'e': specialMenu = false; return; // "" + + #if ENABLED(PROBE_MANUALLY) + + case '0': + switch (selectedDirectory[2]) { + default: break; + + case '1': // "<01ZUp0.1>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Z Up 0.1")); + injectCommands(F("G91\nG1 Z+0.1\nG90")); + break; + + case '2': // "<02ZUp0.02>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Z Up 0.02")); + injectCommands(F("G91\nG1 Z+0.02\nG90")); + break; + + case '3': // "<03ZDn0.02>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Z Down 0.02")); + injectCommands(F("G91\nG1 Z-0.02\nG90")); + break; + + case '4': // "<04ZDn0.1>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Z Down 0.1")); + injectCommands(F("G91\nG1 Z-0.1\nG90")); + break; + + case '5': // "<05PrehtBed>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Preheat Bed")); + injectCommands(F("M140 S65")); + break; + + case '6': // "<06SMeshLvl>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Start Mesh Leveling")); + injectCommands(F("G29S1")); + break; + + case '7': // "<07MeshNPnt>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Next Mesh Point")); + injectCommands(F("G29S2")); + break; + + case '8': // "<08HtEndPID>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Auto Tune Hotend PID")); + // need to dwell for half a second to give the fan a chance to start before the pid tuning starts + injectCommands(F("M106 S204\nG4 P500\nM303 E0 S215 C15 U1")); + break; + + case '9': // "<09HtBedPID>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Auto Tune Hotbed Pid")); + injectCommands(F("M303 E-1 S65 C6 U1")); + break; + } break; - #if ENABLED(PROBE_MANUALLY) - case '0': - switch (SelectedDirectory[2]) { - case '1': // "<01ZUp0.1>" - SERIAL_ECHOLNPGM("Special Menu: Z Up 0.1"); - injectCommands(F("G91\nG1 Z+0.1\nG90")); - break; + case '1': + switch (selectedDirectory[2]) { + default: break; - case '2': // "<02ZUp0.02>" - SERIAL_ECHOLNPGM("Special Menu: Z Up 0.02"); - injectCommands(F("G91\nG1 Z+0.02\nG90")); - break; - - case '3': // "<03ZDn0.02>" - SERIAL_ECHOLNPGM("Special Menu: Z Down 0.02"); - injectCommands(F("G91\nG1 Z-0.02\nG90")); - break; - - case '4': // "<04ZDn0.1>" - SERIAL_ECHOLNPGM("Special Menu: Z Down 0.1"); - injectCommands(F("G91\nG1 Z-0.1\nG90")); - break; - - case '5': // "<05PrehtBed>" - SERIAL_ECHOLNPGM("Special Menu: Preheat Bed"); - injectCommands(F("M140 S65")); - break; - - case '6': // "<06SMeshLvl>" - SERIAL_ECHOLNPGM("Special Menu: Start Mesh Leveling"); - injectCommands(F("G29S1")); - break; - - case '7': // "<07MeshNPnt>" - SERIAL_ECHOLNPGM("Special Menu: Next Mesh Point"); - injectCommands(F("G29S2")); - break; - - case '8': // "<08HtEndPID>" - SERIAL_ECHOLNPGM("Special Menu: Auto Tune Hotend PID"); - // need to dwell for half a second to give the fan a chance to start before the pid tuning starts - injectCommands(F("M106 S204\nG4 P500\nM303 E0 S215 C15 U1")); - break; - - case '9': // "<09HtBedPID>" - SERIAL_ECHOLNPGM("Special Menu: Auto Tune Hotbed Pid"); - injectCommands(F("M303 E-1 S65 C6 U1")); - break; - - default: - break; - } + case '0': // "<10FWDeflts>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Load FW Defaults")); + injectCommands(F("M502\nM300 P105 S1661\nM300 P210 S1108")); break; - case '1': - switch (SelectedDirectory[2]) { - case '0': // "<10FWDeflts>" - SERIAL_ECHOLNPGM("Special Menu: Load FW Defaults"); - injectCommands(F("M502\nM300 P105 S1661\nM300 P210 S1108")); - break; - - case '1': // "<11SvEEPROM>" - SERIAL_ECHOLNPGM("Special Menu: Save EEPROM"); - injectCommands(F("M500\nM300 P105 S1108\nM300 P210 S1661")); - break; - - default: - break; - } + case '1': // "<11SvEEPROM>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Save EEPROM")); + injectCommands(F("M500\nM300 P105 S1108\nM300 P210 S1661")); break; - #else // if ENABLED(PROBE_MANUALLY) - case '0': - switch (SelectedDirectory[2]) { - case '1': // "<01PrehtBed>" - SERIAL_ECHOLNPGM("Special Menu: Preheat Bed"); - injectCommands(F("M140 S65")); - break; + } + break; - case '2': // "<02ABL>" - SERIAL_ECHOLNPGM("Special Menu: Auto Bed Leveling"); - injectCommands(F("G29N")); - break; + #else // !PROBE_MANUALLY - case '3': // "<03HtendPID>" - SERIAL_ECHOLNPGM("Special Menu: Auto Tune Hotend PID"); - // need to dwell for half a second to give the fan a chance to start before the pid tuning starts - injectCommands(F("M106 S204\nG4 P500\nM303 E0 S215 C15 U1")); - break; + case '0': + switch (selectedDirectory[2]) { + default: break; - case '4': // "<04HtbedPID>" - SERIAL_ECHOLNPGM("Special Menu: Auto Tune Hotbed Pid"); - injectCommands(F("M303 E-1 S65 C6 U1")); - break; - - case '5': // "<05FWDeflts>" - SERIAL_ECHOLNPGM("Special Menu: Load FW Defaults"); - injectCommands(F("M502\nM300 P105 S1661\nM300 P210 S1108")); - break; - - case '6': // "<06SvEEPROM>" - SERIAL_ECHOLNPGM("Special Menu: Save EEPROM"); - injectCommands(F("M500\nM300 P105 S1108\nM300 P210 S1661")); - break; - - case '7': // <07SendM108> - SERIAL_ECHOLNPGM("Special Menu: Send User Confirmation"); - injectCommands(F("M108")); - break; - - default: - break; - } + case '1': // "<01PrehtBed>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Preheat Bed")); + injectCommands(F("M140 S65")); break; - #endif // PROBE_MANUALLY - default: + case '2': // "<02ABL>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Auto Bed Leveling")); + injectCommands(F("G29N")); break; - } - #if ENABLED(ANYCUBIC_LCD_DEBUG) - } - else { - SERIAL_ECHOPGM("TFT Serial Debug: Attempted to HandleSpecialMenu on non-special menu... "); - SERIAL_ECHOLN(SelectedDirectory); - #endif + + case '3': // "<03HtendPID>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Auto Tune Hotend PID")); + // need to dwell for half a second to give the fan a chance to start before the pid tuning starts + injectCommands(F("M106 S204\nG4 P500\nM303 E0 S215 C15 U1")); + break; + + case '4': // "<04HtbedPID>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Auto Tune Hotbed Pid")); + injectCommands(F("M303 E-1 S65 C6 U1")); + break; + + case '5': // "<05FWDeflts>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Load FW Defaults")); + injectCommands(F("M502\nM300 P105 S1661\nM300 P210 S1108")); + break; + + case '6': // "<06SvEEPROM>" + SERIAL_ECHOLNPGM("Special Menu: ", F("Save EEPROM")); + injectCommands(F("M500\nM300 P105 S1108\nM300 P210 S1661")); + break; + + case '7': // <07SendM108> + SERIAL_ECHOLNPGM("Special Menu: ", F("Send User Confirmation")); + injectCommands(F("M108")); + break; + } + break; + + #endif // !PROBE_MANUALLY } + } -void AnycubicTFTClass::RenderCurrentFileList() { +void AnycubicTFTClass::renderCurrentFileList() { #if HAS_MEDIA uint16_t selectedNumber = 0; - SelectedDirectory[0] = 0; - SelectedFile[0] = 0; + selectedDirectory[0] = 0; + selectedFile[0] = 0; FileList currentFileList; SENDLINE_PGM("FN "); // Filelist start - if (!isMediaInserted() && !SpecialMenu) { + if (!isMediaInserted() && !specialMenu) { SENDLINE_DBG_PGM("J02", "TFT Serial Debug: No SD Card mounted to render Current File List... J02"); SENDLINE_PGM("")); } else { - if (CodeSeen('S')) - selectedNumber = CodeValue(); + if (codeSeen('S')) + selectedNumber = codeValue(); - if (SpecialMenu) - RenderSpecialMenu(selectedNumber); + if (specialMenu) + renderSpecialMenu(selectedNumber); else if (selectedNumber <= currentFileList.count()) - RenderCurrentFolder(selectedNumber); + renderCurrentFolder(selectedNumber); } SENDLINE_PGM("END"); // Filelist stop #endif // HAS_MEDIA } -void AnycubicTFTClass::RenderSpecialMenu(uint16_t selectedNumber) { +void AnycubicTFTClass::renderSpecialMenu(uint16_t selectedNumber) { + switch (selectedNumber) { + default: break; + #if ENABLED(PROBE_MANUALLY) case 0: // First Page SENDLINE_PGM("<01ZUP~1.GCO"); @@ -442,7 +421,9 @@ void AnycubicTFTClass::RenderSpecialMenu(uint16_t selectedNumber) { SENDLINE_PGM("")); break; - #else + + #else // !PROBE_MANUALLY + case 0: // First Page SENDLINE_PGM("<01PRE~1.GCO"); SENDLINE_PGM(SPECIAL_MENU_FILENAME("")); @@ -465,25 +446,16 @@ void AnycubicTFTClass::RenderSpecialMenu(uint16_t selectedNumber) { SENDLINE_PGM(SPECIAL_MENU_FILENAME("")); break; - #endif // PROBE_MANUALLY - - default: - break; + #endif // !PROBE_MANUALLY } } -void AnycubicTFTClass::RenderCurrentFolder(uint16_t selectedNumber) { +void AnycubicTFTClass::renderCurrentFolder(uint16_t selectedNumber) { FileList currentFileList; - uint16_t cnt = selectedNumber; - uint16_t max_files; - uint16_t dir_files = currentFileList.count(); + const uint16_t dir_files = currentFileList.count(), + max_files = (dir_files - selectedNumber) < 4 ? dir_files : selectedNumber + 3; - if ((dir_files - selectedNumber) < 4) - max_files = dir_files; - else - max_files = selectedNumber + 3; - - for (cnt = selectedNumber; cnt <= max_files; cnt++) { + for (uint16_t cnt = selectedNumber; cnt <= max_files; cnt++) { if (cnt == 0) { // Special Entry if (currentFileList.isAtRootDir()) { SENDLINE_PGM(" 0 && TFTbuflen < TFTBUFSIZE) { - serial3_char = LCD_SERIAL.read(); - if (serial3_char == '\n' || - serial3_char == '\r' || - serial3_char == ':' || - serial3_count >= (TFT_MAX_CMD_SIZE - 1) - ) { + while (LCD_SERIAL.available() > 0 && tftBufLen < (TFTBUFSIZE)) { + char c = LCD_SERIAL.read(); + if (c != '\n' && c != '\r' && c != ':' && serial_count < (TFT_MAX_CMD_SIZE - 1)) { + tftCommands[tftBufIndW][serial_count++] = c; + continue; + } - if (!serial3_count) return; // if empty line + if (!serial_count) return; // if empty line - TFTcmdbuffer[TFTbufindw][serial3_count] = 0; // terminate string + tftCommands[tftBufIndW][serial_count] = 0; // terminate string - if ((strchr(TFTcmdbuffer[TFTbufindw], 'A') != nullptr)) { - int16_t a_command; - TFTstrchr_pointer = strchr(TFTcmdbuffer[TFTbufindw], 'A'); - a_command = ((int)((strtod(&TFTcmdbuffer[TFTbufindw][TFTstrchr_pointer - TFTcmdbuffer[TFTbufindw] + 1], nullptr)))); + if ((strchr(tftCommands[tftBufIndW], 'A') != nullptr)) { + int16_t a_command; + tftStrchrPtr = strchr(tftCommands[tftBufIndW], 'A'); + a_command = ((int)((strtod(&tftCommands[tftBufIndW][tftStrchrPtr - tftCommands[tftBufIndW] + 1], nullptr)))); - #if ENABLED(ANYCUBIC_LCD_DEBUG) - if ((a_command > 7) && (a_command != 20)) // No debugging of status polls, please! - SERIAL_ECHOLNPGM("TFT Serial Command: ", TFTcmdbuffer[TFTbufindw]); - #endif - - switch (a_command) { - case 0: { // A0 GET HOTEND TEMP - const celsius_float_t hotendActualTemp = getActualTemp_celsius(E0); - SEND_PGM_VAL("A0V ", ROUND(hotendActualTemp)); - } - break; - - case 1: { // A1 GET HOTEND TARGET TEMP - const celsius_float_t hotendTargetTemp = getTargetTemp_celsius(E0); - SEND_PGM_VAL("A1V ", ROUND(hotendTargetTemp)); - } - break; - - case 2: { // A2 GET HOTBED TEMP - const celsius_float_t heatedBedActualTemp = getActualTemp_celsius(BED); - SEND_PGM_VAL("A2V ", ROUND(heatedBedActualTemp)); - } - break; - - case 3: { // A3 GET HOTBED TARGET TEMP - const celsius_float_t heatedBedTargetTemp = getTargetTemp_celsius(BED); - SEND_PGM_VAL("A3V ", ROUND(heatedBedTargetTemp)); - } break; - - case 4: { // A4 GET FAN SPEED - SEND_PGM_VAL("A4V ", int(getActualFan_percent(FAN0))); - } break; - - case 5: { // A5 GET CURRENT COORDINATE - const float xPosition = getAxisPosition_mm(X), - yPosition = getAxisPosition_mm(Y), - zPosition = getAxisPosition_mm(Z); - SEND_PGM("A5V X: "); LCD_SERIAL.print(xPosition); - SEND_PGM( " Y: "); LCD_SERIAL.print(yPosition); - SEND_PGM( " Z: "); LCD_SERIAL.print(zPosition); - SENDLINE_PGM(""); - } break; - - case 6: // A6 GET SD CARD PRINTING STATUS - #if HAS_MEDIA - if (isPrintingFromMedia()) { - SEND_PGM("A6V "); - if (isMediaInserted()) - SENDLINE(ui8tostr3rj(getProgress_percent())); - else - SENDLINE_DBG_PGM("J02", "TFT Serial Debug: No SD Card mounted to return printing status... J02"); - } - else - SENDLINE_PGM("A6V ---"); - #endif - break; - - case 7: { // A7 GET PRINTING TIME - const uint32_t elapsedSeconds = getProgress_seconds_elapsed(); - SEND_PGM("A7V "); - if (elapsedSeconds != 0) { // print time - const uint32_t elapsedMinutes = elapsedSeconds / 60; - SEND(ui8tostr2(elapsedMinutes / 60)); - SEND_PGM(" H "); - SEND(ui8tostr2(elapsedMinutes % 60)); - SENDLINE_PGM(" M"); - } - else - SENDLINE_PGM(" 999:999"); - } - break; - - case 8: // A8 GET SD LIST - #if HAS_MEDIA - SelectedFile[0] = 0; - RenderCurrentFileList(); - #endif - break; - - case 9: // A9 pause sd print - #if HAS_MEDIA - if (isPrintingFromMedia()) - PausePrint(); - #endif - break; - - case 10: // A10 resume sd print - #if HAS_MEDIA - if (isPrintingFromMediaPaused()) - ResumePrint(); - #endif - break; - - case 11: // A11 STOP SD PRINT - TERN_(HAS_MEDIA, StopPrint()); - break; - - case 12: // A12 kill - kill(F(STR_ERR_KILLED)); - break; - - case 13: // A13 SELECTION FILE - #if HAS_MEDIA - if (isMediaInserted()) { - starpos = (strchr(TFTstrchr_pointer + 4, '*')); - if (TFTstrchr_pointer[4] == '/') { - strcpy(SelectedDirectory, TFTstrchr_pointer + 5); - SelectedFile[0] = 0; - SENDLINE_DBG_PGM("J21", "TFT Serial Debug: Clear file selection... J21 "); // J21 Not File Selected - SENDLINE_PGM(""); - } - else if (TFTstrchr_pointer[4] == '<') { - strcpy(SelectedDirectory, TFTstrchr_pointer + 4); - SpecialMenu = true; - SelectedFile[0] = 0; - SENDLINE_DBG_PGM("J21", "TFT Serial Debug: Clear file selection... J21 "); // J21 Not File Selected - SENDLINE_PGM(""); - } - else { - SelectedDirectory[0] = 0; - - if (starpos) *(starpos - 1) = '\0'; - - strcpy(SelectedFile, TFTstrchr_pointer + 4); - SENDLINE_DBG_PGM_VAL("J20", "TFT Serial Debug: File Selected... J20 ", SelectedFile); // J20 File Selected - } - } - #endif - break; - - case 14: // A14 START PRINTING - #if HAS_MEDIA - if (!isPrinting() && strlen(SelectedFile) > 0) - StartPrint(); - #endif - break; - - case 15: // A15 RESUMING FROM OUTAGE - // TODO: JBA implement resume form outage - break; - - case 16: { // A16 set hotend temp - uint16_t tempvalue; - if (CodeSeen('S')) { - tempvalue = constrain(CodeValue(), 0, 275); - setTargetTemp_celsius(tempvalue, (extruder_t)E0); - } - else if (CodeSeen('C') && !isPrinting()) { - if (getAxisPosition_mm(Z) < 10) - injectCommands(F("G1 Z10")); // RASE Z AXIS - tempvalue = constrain(CodeValue(), 0, 275); - setTargetTemp_celsius(tempvalue, (extruder_t)E0); - } - } - break; - - case 17: { // A17 set heated bed temp - uint16_t tempbed; - if (CodeSeen('S')) { - tempbed = constrain(CodeValue(), 0, 100); - setTargetTemp_celsius(tempbed, (heater_t)BED); - } - } - break; - - case 18: { // A18 set fan speed - float fanPercent; - if (CodeSeen('S')) { - fanPercent = CodeValue(); - fanPercent = constrain(fanPercent, 0, 100); - setTargetFan_percent(fanPercent, FAN0); - } - else - fanPercent = 100; - - setTargetFan_percent(fanPercent, FAN0); - SENDLINE_PGM(""); - } - break; - - case 19: // A19 stop stepper drivers - sent on stop extrude command and on turn motors off command - if (!isPrinting()) { - quickstop_stepper(); - stepper.disable_all_steppers(); - } - - SENDLINE_PGM(""); - break; - - case 20: // A20 read printing speed - if (CodeSeen('S')) - feedrate_percentage = constrain(CodeValue(), 40, 999); - else - SEND_PGM_VAL("A20V ", feedrate_percentage); - break; - - case 21: // A21 all home - if (!isPrinting() && !isPrintingFromMediaPaused()) { - if (CodeSeen('X') || CodeSeen('Y') || CodeSeen('Z')) { - if (CodeSeen('X')) - injectCommands(F("G28X")); - if (CodeSeen('Y')) - injectCommands(F("G28Y")); - if (CodeSeen('Z')) - injectCommands(F("G28Z")); - } - else if (CodeSeen('C')) { - injectCommands_P(G28_STR); - } - } - break; - - case 22: // A22 move X/Y/Z or extrude - if (!isPrinting()) { - float coorvalue; - uint16_t movespeed = 0; - char commandStr[30]; - char fullCommandStr[38]; - - commandStr[0] = 0; // empty string - if (CodeSeen('F')) // Set feedrate - movespeed = CodeValue(); - - if (CodeSeen('X')) { // Move in X direction - coorvalue = CodeValue(); - if ((coorvalue <= 0.2) && coorvalue > 0) - sprintf_P(commandStr, PSTR("G1 X0.1F%i"), movespeed); - else if ((coorvalue <= -0.1) && coorvalue > -1) - sprintf_P(commandStr, PSTR("G1 X-0.1F%i"), movespeed); - else - sprintf_P(commandStr, PSTR("G1 X%iF%i"), int(coorvalue), movespeed); - } - else if (CodeSeen('Y')) { // Move in Y direction - coorvalue = CodeValue(); - if ((coorvalue <= 0.2) && coorvalue > 0) - sprintf_P(commandStr, PSTR("G1 Y0.1F%i"), movespeed); - else if ((coorvalue <= -0.1) && coorvalue > -1) - sprintf_P(commandStr, PSTR("G1 Y-0.1F%i"), movespeed); - else - sprintf_P(commandStr, PSTR("G1 Y%iF%i"), int(coorvalue), movespeed); - } - else if (CodeSeen('Z')) { // Move in Z direction - coorvalue = CodeValue(); - if ((coorvalue <= 0.2) && coorvalue > 0) - sprintf_P(commandStr, PSTR("G1 Z0.1F%i"), movespeed); - else if ((coorvalue <= -0.1) && coorvalue > -1) - sprintf_P(commandStr, PSTR("G1 Z-0.1F%i"), movespeed); - else - sprintf_P(commandStr, PSTR("G1 Z%iF%i"), int(coorvalue), movespeed); - } - else if (CodeSeen('E')) { // Extrude - coorvalue = CodeValue(); - if ((coorvalue <= 0.2) && coorvalue > 0) - sprintf_P(commandStr, PSTR("G1 E0.1F%i"), movespeed); - else if ((coorvalue <= -0.1) && coorvalue > -1) - sprintf_P(commandStr, PSTR("G1 E-0.1F%i"), movespeed); - else - sprintf_P(commandStr, PSTR("G1 E%iF500"), int(coorvalue)); - } - - if (strlen(commandStr) > 0) { - sprintf_P(fullCommandStr, PSTR("G91\n%s\nG90"), commandStr); - #if ENABLED(ANYCUBIC_LCD_DEBUG) - SERIAL_ECHOPGM("TFT Serial Debug: A22 Move final request with gcode... "); - SERIAL_ECHOLN(fullCommandStr); - #endif - injectCommands(fullCommandStr); - } - } - SENDLINE_PGM(""); - break; - - case 23: // A23 preheat pla - if (!isPrinting()) { - if (getAxisPosition_mm(Z) < 10) - injectCommands(F("G1 Z10")); // RASE Z AXIS - - setTargetTemp_celsius(PREHEAT_1_TEMP_BED, (heater_t)BED); - setTargetTemp_celsius(PREHEAT_1_TEMP_HOTEND, (extruder_t)E0); - SENDLINE_PGM("OK"); - } - break; - - case 24:// A24 preheat abs - if (!isPrinting()) { - if (getAxisPosition_mm(Z) < 10) - injectCommands(F("G1 Z10")); // RASE Z AXIS - - setTargetTemp_celsius(PREHEAT_2_TEMP_BED, (heater_t)BED); - setTargetTemp_celsius(PREHEAT_2_TEMP_HOTEND, (extruder_t)E0); - SENDLINE_PGM("OK"); - } - break; - - case 25: // A25 cool down - if (!isPrinting()) { - setTargetTemp_celsius(0, (heater_t) BED); - setTargetTemp_celsius(0, (extruder_t) E0); - - SENDLINE_DBG_PGM("J12", "TFT Serial Debug: Cooling down... J12"); // J12 cool down - } - break; - - case 26: // A26 refresh SD - #if HAS_MEDIA - if (isMediaInserted()) { - if (strlen(SelectedDirectory) > 0) { - FileList currentFileList; - if ((SelectedDirectory[0] == '.') && (SelectedDirectory[1] == '.')) { - currentFileList.upDir(); - } - else { - if (SelectedDirectory[0] == '<') - HandleSpecialMenu(); - else - currentFileList.changeDir(SelectedDirectory); - } - } - } - else { - SENDLINE_DBG_PGM("J02", "TFT Serial Debug: No SD Card mounted to refresh SD A26... J02"); - } - - SelectedDirectory[0] = 0; - #endif - break; - - #if ENABLED(SERVO_ENDSTOPS) - case 27: break; // A27 servos angles adjust - #endif - - case 28: // A28 filament test - if (CodeSeen('O')) - NOOP; - else if (CodeSeen('C')) - NOOP; - SENDLINE_PGM(""); - break; - - case 33: // A33 get version info - SEND_PGM("J33 "); - SENDLINE_PGM(DETAILED_BUILD_VERSION); - break; - - default: - break; - } + if (a_command > 7 && a_command != 20) { // No debugging of status polls, please! + DEBUG_ECHOLNPGM("TFT Serial Command: ", tftCommands[tftBufIndW]); } - TFTbufindw = (TFTbufindw + 1) % TFTBUFSIZE; - TFTbuflen += 1; - serial3_count = 0; // clear buffer + switch (a_command) { + case 0: { // A0 GET HOTEND TEMP + const celsius_float_t hotendActualTemp = getActualTemp_celsius(E0); + SEND_PGM_VAL("A0V ", ROUND(hotendActualTemp)); + } + break; + + case 1: { // A1 GET HOTEND TARGET TEMP + const celsius_float_t hotendTargetTemp = getTargetTemp_celsius(E0); + SEND_PGM_VAL("A1V ", ROUND(hotendTargetTemp)); + } + break; + + case 2: { // A2 GET HOTBED TEMP + const celsius_float_t heatedBedActualTemp = getActualTemp_celsius(BED); + SEND_PGM_VAL("A2V ", ROUND(heatedBedActualTemp)); + } + break; + + case 3: { // A3 GET HOTBED TARGET TEMP + const celsius_float_t heatedBedTargetTemp = getTargetTemp_celsius(BED); + SEND_PGM_VAL("A3V ", ROUND(heatedBedTargetTemp)); + } break; + + case 4: { // A4 GET FAN SPEED + SEND_PGM_VAL("A4V ", int(getActualFan_percent(FAN0))); + } break; + + case 5: { // A5 GET CURRENT COORDINATE + const float xPosition = getAxisPosition_mm(X), + yPosition = getAxisPosition_mm(Y), + zPosition = getAxisPosition_mm(Z); + SEND_PGM("A5V X: "); LCD_SERIAL.print(xPosition); + SEND_PGM( " Y: "); LCD_SERIAL.print(yPosition); + SEND_PGM( " Z: "); LCD_SERIAL.print(zPosition); + SENDLINE_PGM(""); + } break; + + case 6: // A6 GET SD CARD PRINTING STATUS + #if HAS_MEDIA + if (isPrintingFromMedia()) { + SEND_PGM("A6V "); + if (isMediaInserted()) + SENDLINE(ui8tostr3rj(getProgress_percent())); + else + SENDLINE_DBG_PGM("J02", "TFT Serial Debug: No SD Card mounted to return printing status... J02"); + } + else + SENDLINE_PGM("A6V ---"); + #endif + break; + + case 7: { // A7 GET PRINTING TIME + const uint32_t elapsedSeconds = getProgress_seconds_elapsed(); + SEND_PGM("A7V "); + if (elapsedSeconds != 0) { // print time + const uint32_t elapsedMinutes = elapsedSeconds / 60; + SEND(ui8tostr2(elapsedMinutes / 60)); + SEND_PGM(" H "); + SEND(ui8tostr2(elapsedMinutes % 60)); + SENDLINE_PGM(" M"); + } + else + SENDLINE_PGM(" 999:999"); + } + break; + + case 8: // A8 GET SD LIST + #if HAS_MEDIA + selectedFile[0] = 0; + renderCurrentFileList(); + #endif + break; + + case 9: // A9 pause sd print + TERN_(HAS_MEDIA, if (isPrintingFromMedia()) pausePrint()); + break; + + case 10: // A10 resume sd print + #if HAS_MEDIA + if (isPrintingFromMediaPaused()) + resumePrint(); + #endif + break; + + case 11: // A11 STOP SD PRINT + TERN_(HAS_MEDIA, stopPrint()); + break; + + case 12: // A12 kill + kill(F(STR_ERR_KILLED)); + break; + + case 13: // A13 SELECTION FILE + #if HAS_MEDIA + if (isMediaInserted()) { + starpos = (strchr(tftStrchrPtr + 4, '*')); + if (tftStrchrPtr[4] == '/') { + strcpy(selectedDirectory, tftStrchrPtr + 5); + selectedFile[0] = 0; + SENDLINE_DBG_PGM("J21", "TFT Serial Debug: Clear file selection... J21 "); // J21 Not File Selected + SENDLINE_PGM(""); + } + else if (tftStrchrPtr[4] == '<') { + strcpy(selectedDirectory, tftStrchrPtr + 4); + specialMenu = true; + selectedFile[0] = 0; + SENDLINE_DBG_PGM("J21", "TFT Serial Debug: Clear file selection... J21 "); // J21 Not File Selected + SENDLINE_PGM(""); + } + else { + selectedDirectory[0] = 0; + + if (starpos) *(starpos - 1) = '\0'; + + strcpy(selectedFile, tftStrchrPtr + 4); + SENDLINE_DBG_PGM_VAL("J20", "TFT Serial Debug: File Selected... J20 ", selectedFile); // J20 File Selected + } + } + #endif + break; + + case 14: // A14 START PRINTING + #if HAS_MEDIA + if (!isPrinting() && strlen(selectedFile) > 0) + startPrint(); + #endif + break; + + case 15: // A15 RESUMING FROM OUTAGE + // TODO: JBA implement resume form outage + break; + + case 16: { // A16 set hotend temp + uint16_t tempvalue; + if (codeSeen('S')) { + tempvalue = constrain(codeValue(), 0, 275); + setTargetTemp_celsius(tempvalue, (extruder_t)E0); + } + else if (codeSeen('C') && !isPrinting()) { + if (getAxisPosition_mm(Z) < 10) + injectCommands(F("G1 Z10")); // RASE Z AXIS + tempvalue = constrain(codeValue(), 0, 275); + setTargetTemp_celsius(tempvalue, (extruder_t)E0); + } + } + break; + + case 17: { // A17 set heated bed temp + uint16_t tempbed; + if (codeSeen('S')) { + tempbed = constrain(codeValue(), 0, 100); + setTargetTemp_celsius(tempbed, (heater_t)BED); + } + } + break; + + case 18: { // A18 set fan speed + float fanPercent; + if (codeSeen('S')) { + fanPercent = codeValue(); + fanPercent = constrain(fanPercent, 0, 100); + setTargetFan_percent(fanPercent, FAN0); + } + else + fanPercent = 100; + + setTargetFan_percent(fanPercent, FAN0); + SENDLINE_PGM(""); + } + break; + + case 19: // A19 stop stepper drivers - sent on stop extrude command and on turn motors off command + if (!isPrinting()) { + quickstop_stepper(); + stepper.disable_all_steppers(); + } + + SENDLINE_PGM(""); + break; + + case 20: // A20 read printing speed + if (codeSeen('S')) + feedrate_percentage = constrain(codeValue(), 40, 999); + else + SEND_PGM_VAL("A20V ", feedrate_percentage); + break; + + case 21: // A21 all home + if (!isPrinting() && !isPrintingFromMediaPaused()) { + if (codeSeen('X') || codeSeen('Y') || codeSeen('Z')) { + if (codeSeen('X')) + injectCommands(F("G28X")); + if (codeSeen('Y')) + injectCommands(F("G28Y")); + if (codeSeen('Z')) + injectCommands(F("G28Z")); + } + else if (codeSeen('C')) { + injectCommands_P(G28_STR); + } + } + break; + + case 22: // A22 move X/Y/Z or extrude + if (!isPrinting()) { + float coorvalue; + uint16_t movespeed = 0; + char commandStr[30]; + char fullCommandStr[38]; + + commandStr[0] = 0; // empty string + if (codeSeen('F')) // Set feedrate + movespeed = codeValue(); + + if (codeSeen('X')) { // Move in X direction + coorvalue = codeValue(); + if ((coorvalue <= 0.2) && coorvalue > 0) + sprintf_P(commandStr, PSTR("G1 X0.1F%i"), movespeed); + else if ((coorvalue <= -0.1) && coorvalue > -1) + sprintf_P(commandStr, PSTR("G1 X-0.1F%i"), movespeed); + else + sprintf_P(commandStr, PSTR("G1 X%iF%i"), int(coorvalue), movespeed); + } + else if (codeSeen('Y')) { // Move in Y direction + coorvalue = codeValue(); + if ((coorvalue <= 0.2) && coorvalue > 0) + sprintf_P(commandStr, PSTR("G1 Y0.1F%i"), movespeed); + else if ((coorvalue <= -0.1) && coorvalue > -1) + sprintf_P(commandStr, PSTR("G1 Y-0.1F%i"), movespeed); + else + sprintf_P(commandStr, PSTR("G1 Y%iF%i"), int(coorvalue), movespeed); + } + else if (codeSeen('Z')) { // Move in Z direction + coorvalue = codeValue(); + if ((coorvalue <= 0.2) && coorvalue > 0) + sprintf_P(commandStr, PSTR("G1 Z0.1F%i"), movespeed); + else if ((coorvalue <= -0.1) && coorvalue > -1) + sprintf_P(commandStr, PSTR("G1 Z-0.1F%i"), movespeed); + else + sprintf_P(commandStr, PSTR("G1 Z%iF%i"), int(coorvalue), movespeed); + } + else if (codeSeen('E')) { // Extrude + coorvalue = codeValue(); + if ((coorvalue <= 0.2) && coorvalue > 0) + sprintf_P(commandStr, PSTR("G1 E0.1F%i"), movespeed); + else if ((coorvalue <= -0.1) && coorvalue > -1) + sprintf_P(commandStr, PSTR("G1 E-0.1F%i"), movespeed); + else + sprintf_P(commandStr, PSTR("G1 E%iF500"), int(coorvalue)); + } + + if (strlen(commandStr) > 0) { + sprintf_P(fullCommandStr, PSTR("G91\n%s\nG90"), commandStr); + DEBUG_ECHOPGM("TFT Serial Debug: A22 Move final request with gcode... "); + DEBUG_ECHOLN(fullCommandStr); + injectCommands(fullCommandStr); + } + } + SENDLINE_PGM(""); + break; + + case 23: // A23 preheat pla + if (!isPrinting()) { + if (getAxisPosition_mm(Z) < 10) + injectCommands(F("G1 Z10")); // RASE Z AXIS + + setTargetTemp_celsius(PREHEAT_1_TEMP_BED, (heater_t)BED); + setTargetTemp_celsius(PREHEAT_1_TEMP_HOTEND, (extruder_t)E0); + SENDLINE_PGM("OK"); + } + break; + + case 24:// A24 preheat abs + if (!isPrinting()) { + if (getAxisPosition_mm(Z) < 10) + injectCommands(F("G1 Z10")); // RASE Z AXIS + + setTargetTemp_celsius(PREHEAT_2_TEMP_BED, (heater_t)BED); + setTargetTemp_celsius(PREHEAT_2_TEMP_HOTEND, (extruder_t)E0); + SENDLINE_PGM("OK"); + } + break; + + case 25: // A25 cool down + if (!isPrinting()) { + setTargetTemp_celsius(0, (heater_t) BED); + setTargetTemp_celsius(0, (extruder_t) E0); + + SENDLINE_DBG_PGM("J12", "TFT Serial Debug: Cooling down... J12"); // J12 cool down + } + break; + + case 26: // A26 refresh SD + #if HAS_MEDIA + if (isMediaInserted()) { + if (strlen(selectedDirectory) > 0) { + FileList currentFileList; + if ((selectedDirectory[0] == '.') && (selectedDirectory[1] == '.')) { + currentFileList.upDir(); + } + else { + if (selectedDirectory[0] == '<') + handleSpecialMenu(); + else + currentFileList.changeDir(selectedDirectory); + } + } + } + else { + SENDLINE_DBG_PGM("J02", "TFT Serial Debug: No SD Card mounted to refresh SD A26... J02"); + } + + selectedDirectory[0] = 0; + #endif + break; + + #if ENABLED(SERVO_ENDSTOPS) + case 27: break; // A27 servos angles adjust + #endif + + case 28: // A28 filament test + if (codeSeen('O')) + NOOP; + else if (codeSeen('C')) + NOOP; + SENDLINE_PGM(""); + break; + + case 33: // A33 get version info + SEND_PGM("J33 "); + SENDLINE_PGM(DETAILED_BUILD_VERSION); + break; + + default: + break; + } } - else { - TFTcmdbuffer[TFTbufindw][serial3_count++] = serial3_char; - } - } + + tftBufIndW = (tftBufIndW + 1) % (TFTBUFSIZE); + tftBufLen++; + serial_count = 0; // clear buffer + + } // while } -void AnycubicTFTClass::DoSDCardStateCheck() { +void AnycubicTFTClass::doSDCardStateCheck() { #if BOTH(HAS_MEDIA, HAS_SD_DETECT) bool isInserted = isMediaInserted(); if (isInserted) @@ -934,7 +895,7 @@ void AnycubicTFTClass::DoSDCardStateCheck() { #endif } -void AnycubicTFTClass::DoFilamentRunoutCheck() { +void AnycubicTFTClass::doFilamentRunoutCheck() { #if ENABLED(FILAMENT_RUNOUT_SENSOR) // NOTE: getFilamentRunoutState() only returns the runout state if the job is printing // we want to actually check the status of the pin here, regardless of printstate @@ -953,23 +914,18 @@ void AnycubicTFTClass::DoFilamentRunoutCheck() { #endif // FILAMENT_RUNOUT_SENSOR } -void AnycubicTFTClass::StartPrint() { +void AnycubicTFTClass::startPrint() { #if HAS_MEDIA - if (!isPrinting() && strlen(SelectedFile) > 0) { - #if ENABLED(ANYCUBIC_LCD_DEBUG) - SERIAL_ECHOPGM("TFT Serial Debug: About to print file ... "); - SERIAL_ECHO(isPrinting()); - SERIAL_ECHOPGM(" "); - SERIAL_ECHOLN(SelectedFile); - #endif + if (!isPrinting() && strlen(selectedFile) > 0) { + DEBUG_ECHOLNPGM("TFT Serial Debug: About to print file ... ", isPrinting(), " ", selectedFile); mediaPrintingState = AMPRINTSTATE_PRINTING; mediaPauseState = AMPAUSESTATE_NOT_PAUSED; - printFile(SelectedFile); + printFile(selectedFile); } #endif // SDUPPORT } -void AnycubicTFTClass::PausePrint() { +void AnycubicTFTClass::pausePrint() { #if HAS_MEDIA if (isPrintingFromMedia() && mediaPrintingState != AMPRINTSTATE_STOP_REQUESTED && mediaPauseState == AMPAUSESTATE_NOT_PAUSED) { mediaPrintingState = AMPRINTSTATE_PAUSE_REQUESTED; @@ -983,16 +939,14 @@ void AnycubicTFTClass::PausePrint() { #endif } -void AnycubicTFTClass::ResumePrint() { +void AnycubicTFTClass::resumePrint() { #if HAS_MEDIA #if ENABLED(FILAMENT_RUNOUT_SENSOR) if (READ(FIL_RUNOUT1_PIN)) { - #if ENABLED(ANYCUBIC_LCD_DEBUG) - SERIAL_ECHOLNPGM("TFT Serial Debug: Resume Print with filament sensor still tripped... "); - #endif + DEBUG_ECHOLNPGM("TFT Serial Debug: Resume Print with filament sensor still tripped... "); // trigger the user message box - DoFilamentRunoutCheck(); + doFilamentRunoutCheck(); // re-enable the continue button SENDLINE_DBG_PGM("J18", "TFT Serial Debug: Resume Print with filament sensor still tripped... J18"); @@ -1019,7 +973,7 @@ void AnycubicTFTClass::ResumePrint() { #endif } -void AnycubicTFTClass::StopPrint() { +void AnycubicTFTClass::stopPrint() { #if HAS_MEDIA mediaPrintingState = AMPRINTSTATE_STOP_REQUESTED; mediaPauseState = AMPAUSESTATE_NOT_PAUSED; diff --git a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.h b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.h index 8fcadc1553..7316c5fc04 100644 --- a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.h +++ b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.h @@ -48,48 +48,45 @@ enum AnycubicMediaPauseState { class AnycubicTFTClass { public: AnycubicTFTClass(); - static void OnSetup(); - static void OnCommandScan(); - static void OnKillTFT(); - static void OnSDCardStateChange(bool); - static void OnSDCardError(); - static void OnFilamentRunout(); - static void OnUserConfirmRequired(const char *); - static void OnPrintTimerStarted(); - static void OnPrintTimerPaused(); - static void OnPrintTimerStopped(); + static void onSetup(); + static void onCommandScan(); + static void onKillTFT(); + static void onSDCardStateChange(bool); + static void onSDCardError(); + static void onFilamentRunout(); + static void onUserConfirmRequired(const char *); + static void onPrintTimerStarted(); + static void onPrintTimerPaused(); + static void onPrintTimerStopped(); private: - static char TFTcmdbuffer[TFTBUFSIZE][TFT_MAX_CMD_SIZE]; - static int TFTbuflen, TFTbufindr, TFTbufindw; - static char serial3_char; - static int serial3_count; - static char *TFTstrchr_pointer; - static uint8_t SpecialMenu; + static char tftCommands[TFTBUFSIZE][TFT_MAX_CMD_SIZE]; + static int tftBufLen, tftBufIndR, tftBufIndW; + static char *tftStrchrPtr; + static uint8_t specialMenu; static AnycubicMediaPrintState mediaPrintingState; static AnycubicMediaPauseState mediaPauseState; - static float CodeValue(); - static bool CodeSeen(char); - static bool IsNozzleHomed(); - static void RenderCurrentFileList(); - static void RenderSpecialMenu(uint16_t); - static void RenderCurrentFolder(uint16_t); - static void GetCommandFromTFT(); - static void CheckSDCardChange(); - static void CheckPauseState(); - static void CheckPrintCompletion(); - static void HandleSpecialMenu(); - static void DoSDCardStateCheck(); - static void DoFilamentRunoutCheck(); - static void StartPrint(); - static void PausePrint(); - static void ResumePrint(); - static void StopPrint(); + static float codeValue(); + static bool codeSeen(char); + static bool isNozzleHomed(); + static void renderCurrentFileList(); + static void renderSpecialMenu(uint16_t); + static void renderCurrentFolder(uint16_t); + static void getCommandFromTFT(); + static void checkSDCardChange(); + static void checkPauseState(); + static void handleSpecialMenu(); + static void doSDCardStateCheck(); + static void doFilamentRunoutCheck(); + static void startPrint(); + static void pausePrint(); + static void resumePrint(); + static void stopPrint(); - static char SelectedDirectory[30]; - static char SelectedFile[FILENAME_LENGTH]; + static char selectedDirectory[30]; + static char selectedFile[FILENAME_LENGTH]; }; -extern AnycubicTFTClass AnycubicTFT; +extern AnycubicTFTClass anycubicTFT; extern const char G28_STR[]; diff --git a/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp index 03eba4c5b3..da88acc725 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp @@ -40,8 +40,8 @@ using namespace ExtUI; namespace Anycubic { - FileList FileNavigator::filelist; // Instance of the Marlin file API - char FileNavigator::currentfoldername[MAX_PATH_LEN + 1]; // Current folder path + FileList FileNavigator::filelist; // ExtUI file API + char FileNavigator::currentDirPath[MAX_PATH_LEN + 1]; // Current folder path uint16_t FileNavigator::lastindex; uint8_t FileNavigator::folderdepth; uint16_t FileNavigator::currentindex; // override the panel request @@ -51,7 +51,7 @@ namespace Anycubic { FileNavigator::FileNavigator() { reset(); } void FileNavigator::reset() { - currentfoldername[0] = '\0'; + currentDirPath[0] = '\0'; folderdepth = 0; currentindex = 0; lastindex = 0; @@ -94,7 +94,7 @@ namespace Anycubic { DgusTFT::SendTxtToTFT(filelist.longFilename(), TXT_FILE_0 + file_num*0x30); #if ACDEBUG(AC_FILE) - SERIAL_ECHOLNPGM("seek: ", _seek, " '", filelist.longFilename(), "' '", currentfoldername, "", filelist.shortFilename(), "'\n"); + SERIAL_ECHOLNPGM("seek: ", _seek, " '", filelist.longFilename(), "' '", currentDirPath, "", filelist.shortFilename(), "'\n"); #endif } else { @@ -120,11 +120,11 @@ namespace Anycubic { void FileNavigator::changeDIR(char *folder) { #if ACDEBUG(AC_FILE) - SERIAL_ECHOLNPGM("currentfolder: ", currentfoldername, " New: ", folder); + SERIAL_ECHOLNPGM("currentfolder: ", currentDirPath, " New: ", folder); #endif if (folderdepth >= MAX_FOLDER_DEPTH) return; // limit the folder depth - strcat(currentfoldername, folder); - strcat(currentfoldername, "/"); + strcat(currentDirPath, folder); + strcat(currentDirPath, "/"); filelist.changeDir(folder); refresh(); folderdepth++; @@ -138,22 +138,22 @@ namespace Anycubic { currentindex = 0; // Remove the last child folder from the stored path if (folderdepth == 0) { - currentfoldername[0] = '\0'; + currentDirPath[0] = '\0'; reset(); } else { char *pos = nullptr; for (uint8_t f = 0; f < folderdepth; f++) - pos = strchr(currentfoldername, '/'); + pos = strchr(currentDirPath, '/'); *(pos + 1) = '\0'; } #if ACDEBUG(AC_FILE) - SERIAL_ECHOLNPGM("depth: ", folderdepth, " currentfoldername: ", currentfoldername); + SERIAL_ECHOLNPGM("depth: ", folderdepth, " currentDirPath: ", currentDirPath); #endif } - char* FileNavigator::getCurrentFolderName() { return currentfoldername; } + char* FileNavigator::getCurrentDirPath() { return currentDirPath; } uint16_t FileNavigator::getFileNum() { return filelist.count(); } } diff --git a/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h index dd4b0b0f74..2505ae7c4c 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h +++ b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h @@ -43,13 +43,13 @@ namespace Anycubic { static void changeDIR(char *); static void sendFile(); static void refresh(); - static char* getCurrentFolderName(); + static char* getCurrentDirPath(); static uint16_t getFileNum(); private: static uint16_t lastindex; static uint16_t currentindex; static uint8_t folderdepth; - static char currentfoldername[MAX_PATH_LEN + 1]; + static char currentDirPath[MAX_PATH_LEN + 1]; }; extern FileNavigator filenavigator; diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp index e846d65a1f..49609ada32 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp @@ -111,10 +111,10 @@ namespace Anycubic { uint8_t pop_up_index_saved; uint32_t key_value_saved; - void DEBUG_PRINT_PAUSED_STATE(FSTR_P const msg, paused_state_t state); - void DEBUG_PRINT_PRINTER_STATE(FSTR_P const msg, printer_state_t state); - void DEBUG_PRINT_TIMER_EVENT(FSTR_P const msg, timer_event_t event); - void DEBUG_PRINT_MEDIA_EVENT(FSTR_P const msg, media_event_t event); + void DEBUG_PRINT_PAUSED_STATE(const paused_state_t state, FSTR_P const msg=nullptr); + void DEBUG_PRINT_PRINTER_STATE(const printer_state_t state, FSTR_P const msg=nullptr); + void DEBUG_PRINT_TIMER_EVENT(const timer_event_t event, FSTR_P const msg=nullptr); + void DEBUG_PRINT_MEDIA_EVENT(const media_event_t event, FSTR_P const msg=nullptr); DgusTFT Dgus; @@ -127,9 +127,9 @@ namespace Anycubic { feedrate_back = -1; } - void DgusTFT::Startup() { + void DgusTFT::startup() { #if ACDEBUG(AC_MARLIN) - DEBUG_ECHOLNPGM("DgusTFT::Startup()"); + DEBUG_ECHOLNPGM("DgusTFT::startup()"); #endif selectedfile[0] = '\0'; panel_command[0] = '\0'; @@ -148,16 +148,16 @@ namespace Anycubic { TFTSer.begin(115200); // Signal Board has reset - SendtoTFTLN(AC_msg_main_board_has_reset); + tftSendLn(AC_msg_main_board_has_reset); // Enable levelling and Disable end stops during print // as Z home places nozzle above the bed so we need to allow it past the end stops injectCommands(AC_cmnd_enable_leveling); #if ACDEBUGLEVEL - DEBUG_ECHOLNPGM("Startup AC Debug Level ", ACDEBUGLEVEL); + DEBUG_ECHOLNPGM("startup AC Debug Level ", ACDEBUGLEVEL); #endif - SendtoTFTLN(AC_msg_ready); + tftSendLn(AC_msg_ready); } void DgusTFT::ParamInit() { @@ -188,15 +188,15 @@ namespace Anycubic { RequestValueFromTFT(0x14); // get page ID } - void DgusTFT::IdleLoop() { - if (ReadTFTCommand()) { - ProcessPanelRequest(); + void DgusTFT::idleLoop() { + if (readTFTCommand()) { + processPanelRequest(); command_len = 0; } #if ACDEBUG(AC_MARLIN) if (key_value) { - DEBUG_ECHOLNPGM("IdleLoop page: ", page_index_now); + DEBUG_ECHOLNPGM("idleLoop page: ", page_index_now); DEBUG_ECHOLNPGM("key: ", key_value); } #endif @@ -266,7 +266,7 @@ namespace Anycubic { pop_up_manager(); key_value = 0; - CheckHeaters(); + checkHeaters(); } uint8_t FSHlength(FSTR_P FSHinput) { @@ -276,7 +276,7 @@ namespace Anycubic { return stringLength; } - void DgusTFT::PrinterKilled(FSTR_P error_p, FSTR_P component_p) { + void DgusTFT::printerKilled(FSTR_P error_p, FSTR_P component_p) { // copy string in FLASH to RAM for strcmp_P @@ -288,9 +288,9 @@ namespace Anycubic { char component[FSHlength(component_p) + 1]; memcpy_P(component, component_p, textLength + 1); // +1 for the null terminator - SendtoTFTLN(AC_msg_kill_lcd); + tftSendLn(AC_msg_kill_lcd); #if ACDEBUG(AC_MARLIN) - DEBUG_ECHOLNPGM("PrinterKilled()\nerror: ", error, "\ncomponent: ", component); + DEBUG_ECHOLNPGM("printerKilled()\nerror: ", error, "\ncomponent: ", component); #endif if (strcmp_P(error, PSTR("Heating Failed")) == 0) { @@ -364,9 +364,9 @@ namespace Anycubic { SendColorToTFT(color, TXT_DESCRIPT_0 + 0x30 * (index - 1)); } - void DgusTFT::MediaEvent(media_event_t event) { + void DgusTFT::mediaEvent(media_event_t event) { #if ACDEBUG(AC_MARLIN) - DEBUG_PRINT_MEDIA_EVENT(F("ProcessMediaStatus() "), event); + DEBUG_PRINT_MEDIA_EVENT(event); #endif switch (event) { case AC_media_inserted: @@ -379,12 +379,12 @@ namespace Anycubic { lcd_txtbox_index = 0; } - SendFileList(lcd_txtbox_index); + sendFileList(lcd_txtbox_index); break; case AC_media_removed: - SendtoTFTLN(AC_msg_sd_card_removed); + tftSendLn(AC_msg_sd_card_removed); filenavigator.reset(); @@ -394,33 +394,33 @@ namespace Anycubic { lcd_txtbox_index = 0; } - SendFileList(lcd_txtbox_index); + sendFileList(lcd_txtbox_index); break; case AC_media_error: - SendtoTFTLN(AC_msg_no_sd_card); + tftSendLn(AC_msg_no_sd_card); break; } } - void DgusTFT::TimerEvent(timer_event_t event) { + void DgusTFT::timerEvent(timer_event_t event) { #if ACDEBUG(AC_MARLIN) - DEBUG_PRINT_TIMER_EVENT(F("TimerEvent() "), event); - DEBUG_PRINT_PRINTER_STATE(F("Printer State: "), printer_state); + DEBUG_PRINT_TIMER_EVENT(event); + DEBUG_PRINT_PRINTER_STATE(printer_state); #endif switch (event) { case AC_timer_started: setSoftEndstopState(false); // disable endstops to print printer_state = AC_printer_printing; - SendtoTFTLN(AC_msg_print_from_sd_card); + tftSendLn(AC_msg_print_from_sd_card); break; case AC_timer_paused: //printer_state = AC_printer_paused; //pause_state = AC_paused_idle; - SendtoTFTLN(AC_msg_paused); + tftSendLn(AC_msg_paused); break; case AC_timer_stopped: @@ -438,7 +438,7 @@ namespace Anycubic { sprintf(str_buf + strlen(str_buf), "%s M", utostr3(time % 60)); SendTxtToTFT(str_buf, TXT_FINISH_TIME); ChangePageOfTFT(PAGE_PRINT_FINISH); - SendtoTFTLN(AC_msg_print_complete); + tftSendLn(AC_msg_print_complete); pop_up_index = 100; } } @@ -449,12 +449,12 @@ namespace Anycubic { #if ENABLED(FILAMENT_RUNOUT_SENSOR) - void DgusTFT::FilamentRunout() { + void DgusTFT::filamentRunout() { #if ACDEBUG(AC_MARLIN) - DEBUG_PRINT_PRINTER_STATE(F("FilamentRunout() printer_state "), printer_state); + DEBUG_PRINT_PRINTER_STATE(printer_state, F("filamentRunout() ")); // 1 Signal filament out - SendtoTFTLN(isPrintingFromMedia() ? AC_msg_filament_out_alert : AC_msg_filament_out_block); + tftSendLn(isPrintingFromMedia() ? AC_msg_filament_out_alert : AC_msg_filament_out_block); //printer_state = AC_printer_filament_out; DEBUG_ECHOLNPGM("getFilamentRunoutState: ", getFilamentRunoutState()); @@ -477,13 +477,13 @@ namespace Anycubic { #endif // FILAMENT_RUNOUT_SENSOR - void DgusTFT::ConfirmationRequest(const char * const msg) { + void DgusTFT::confirmationRequest(const char * const msg) { // M108 continue #if ACDEBUG(AC_MARLIN) DEBUG_ECHOLNPGM("HomingComplete, line: ", __LINE__); - DEBUG_ECHOLNPGM("ConfirmationRequest() ", msg); - DEBUG_PRINT_PRINTER_STATE(F("printer_state: " ), printer_state); - DEBUG_PRINT_PAUSED_STATE(F("pause_state: "), pause_state); + DEBUG_ECHOLNPGM("confirmationRequest() ", msg); + DEBUG_PRINT_PRINTER_STATE(printer_state); + DEBUG_PRINT_PAUSED_STATE(pause_state); #endif switch (printer_state) { @@ -504,7 +504,7 @@ namespace Anycubic { // Heater timout, send acknowledgement if (strcmp_P(msg, MARLIN_msg_heater_timeout) == 0) { pause_state = AC_paused_heater_timed_out; - SendtoTFTLN(AC_msg_paused); // enable continue button + tftSendLn(AC_msg_paused); // enable continue button PlayTune(HeaterTimeout); } // Reheat finished, send acknowledgement @@ -517,12 +517,12 @@ namespace Anycubic { if (pause_state != AC_paused_filament_lack) pause_state = AC_paused_idle; - SendtoTFTLN(AC_msg_paused); // enable continue button + tftSendLn(AC_msg_paused); // enable continue button } // Filament Purging, send acknowledgement enter run mode else if (strcmp_P(msg, MARLIN_msg_filament_purging) == 0) { pause_state = AC_paused_purging_filament; - SendtoTFTLN(AC_msg_paused); // enable continue button + tftSendLn(AC_msg_paused); // enable continue button } else if (strcmp_P(msg, MARLIN_msg_nozzle_parked) == 0) { #if ACDEBUG(AC_MARLIN) @@ -540,11 +540,11 @@ namespace Anycubic { } } - void DgusTFT::StatusChange(const char * const msg) { + void DgusTFT::statusChange(const char * const msg) { #if ACDEBUG(AC_MARLIN) - DEBUG_ECHOLNPGM("StatusChange() ", msg); - DEBUG_PRINT_PRINTER_STATE(F("printer_state: "), printer_state); - DEBUG_PRINT_PAUSED_STATE(F("pause_state: "), pause_state); + DEBUG_ECHOLNPGM("statusChange() ", msg); + DEBUG_PRINT_PRINTER_STATE(printer_state); + DEBUG_PRINT_PAUSED_STATE(pause_state); #endif bool msg_matched = false; @@ -579,7 +579,7 @@ namespace Anycubic { PlayTune(BeepBeepBeeep); injectCommands(F("G1 Z50 F500")); ChangePageOfTFT(PAGE_CHS_ABNORMAL_LEVELING_SENSOR); - SendtoTFTLN(AC_msg_probing_complete); + tftSendLn(AC_msg_probing_complete); printer_state = AC_printer_idle; msg_matched = true; } @@ -595,7 +595,7 @@ namespace Anycubic { case AC_printer_printing: if (strcmp_P(msg, MARLIN_msg_reheating) == 0) { - SendtoTFTLN(AC_msg_paused); // enable continue button + tftSendLn(AC_msg_paused); // enable continue button ChangePageOfTFT(PAGE_STATUS2); msg_matched = true; } @@ -652,14 +652,14 @@ namespace Anycubic { if (!msg_matched) { #if HAS_HOTEND if (strcmp_P(msg, MARLIN_msg_extruder_heating) == 0) { - SendtoTFTLN(AC_msg_nozzle_heating); + tftSendLn(AC_msg_nozzle_heating); hotend_state = AC_heater_temp_set; return; } #endif #if HAS_HEATED_BED if (strcmp_P(msg, MARLIN_msg_bed_heating) == 0) { - SendtoTFTLN(AC_msg_bed_heating); + tftSendLn(AC_msg_bed_heating); hotbed_state = AC_heater_temp_set; } #endif @@ -675,7 +675,7 @@ namespace Anycubic { LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); } - void DgusTFT::PowerLossRecovery() { + void DgusTFT::powerLossRecovery() { printer_state = AC_printer_resuming_from_power_outage; // Play tune to notify user we can recover. } @@ -699,7 +699,7 @@ namespace Anycubic { ChangePageOfTFT(page_index_last); } - void DgusTFT::SendtoTFT(FSTR_P const fstr/*=nullptr*/) { // A helper to print PROGMEM string to the panel + void DgusTFT::tftSend(FSTR_P const fstr/*=nullptr*/) { // A helper to print PROGMEM string to the panel #if ACDEBUG(AC_SOME) DEBUG_ECHOF(fstr); #endif @@ -707,12 +707,12 @@ namespace Anycubic { while (const char c = pgm_read_byte(str++)) TFTSer.write(c); } - void DgusTFT::SendtoTFTLN(FSTR_P const fstr/*=nullptr*/) { + void DgusTFT::tftSendLn(FSTR_P const fstr/*=nullptr*/) { if (fstr) { #if ACDEBUG(AC_SOME) DEBUG_ECHOPGM("> "); #endif - SendtoTFT(fstr); + tftSend(fstr); #if ACDEBUG(AC_SOME) SERIAL_EOL(); #endif @@ -804,7 +804,7 @@ namespace Anycubic { LOOP_L_N(i, 10) TFTSer.write(data[i]); } - bool DgusTFT::ReadTFTCommand() { + bool DgusTFT::readTFTCommand() { static uint8_t length = 0, cnt = 0, tft_receive_steps = 0; uint8_t data; @@ -858,7 +858,7 @@ namespace Anycubic { #if 0 { - //SERIAL_ECHOLNPGM("ReadTFTCommand: ", millis()); + //SERIAL_ECHOLNPGM("readTFTCommand: ", millis()); //return -1; bool command_ready = false; @@ -888,7 +888,7 @@ namespace Anycubic { uint8_t req = atoi(&panel_command[1]); if (req > 7 && req != 20) { DEBUG_ECHOLNPGM("> ", panel_command); - DEBUG_PRINT_PRINTER_STATE(F("printer_state: "), printer_state); + DEBUG_PRINT_PRINTER_STATE(printer_state); } #endif } @@ -902,7 +902,7 @@ namespace Anycubic { return -1; } - void DgusTFT::CheckHeaters() { + void DgusTFT::checkHeaters() { static uint32_t time_last = 0; if (PENDING(millis(), time_last)) return; time_last = millis() + 500; @@ -916,7 +916,7 @@ namespace Anycubic { if (!WITHIN(temp, HEATER_0_MINTEMP, HEATER_0_MAXTEMP)) { faultE0Duration++; if (faultE0Duration >= AC_HEATER_FAULT_VALIDATION_TIME) { - SendtoTFTLN(AC_msg_nozzle_temp_abnormal); + tftSendLn(AC_msg_nozzle_temp_abnormal); #if ACDEBUG(AC_MARLIN) DEBUG_ECHOLNPGM("Extruder temp abnormal! : ", temp); #endif @@ -931,7 +931,7 @@ namespace Anycubic { if (!WITHIN(temp, BED_MINTEMP, BED_MAXTEMP)) { faultBedDuration++; if (faultBedDuration >= AC_HEATER_FAULT_VALIDATION_TIME) { - SendtoTFTLN(AC_msg_bed_temp_abnormal); + tftSendLn(AC_msg_bed_temp_abnormal); #if ACDEBUG(AC_MARLIN) DEBUG_ECHOLNPGM("Bed temp abnormal! : ", temp); #endif @@ -944,7 +944,7 @@ namespace Anycubic { // Update panel with hotend heater status if (hotend_state != AC_heater_temp_reached) { if (WITHIN(getActualTemp_celsius(E0) - getTargetTemp_celsius(E0), -1, 1)) { - SendtoTFTLN(AC_msg_nozzle_heating_done); + tftSendLn(AC_msg_nozzle_heating_done); hotend_state = AC_heater_temp_reached; } } @@ -952,22 +952,22 @@ namespace Anycubic { // Update panel with bed heater status if (hotbed_state != AC_heater_temp_reached) { if (WITHIN(getActualTemp_celsius(BED) - getTargetTemp_celsius(BED), -0.5, 0.5)) { - SendtoTFTLN(AC_msg_bed_heating_done); + tftSendLn(AC_msg_bed_heating_done); hotbed_state = AC_heater_temp_reached; } } #endif } - void DgusTFT::SendFileList(int8_t startindex) { + void DgusTFT::sendFileList(int8_t startindex) { // Respond to panel request for 4 files starting at index #if ACDEBUG(AC_INFO) - DEBUG_ECHOLNPGM("## SendFileList ## ", startindex); + DEBUG_ECHOLNPGM("## sendFileList ## ", startindex); #endif filenavigator.getFiles(startindex); } - void DgusTFT::SelectFile() { + void DgusTFT::selectFile() { strncpy(selectedfile, panel_command + 4, command_len - 4); selectedfile[command_len - 5] = '\0'; #if ACDEBUG(AC_FILE) @@ -975,22 +975,22 @@ namespace Anycubic { #endif switch (selectedfile[0]) { case '/': // Valid file selected - SendtoTFTLN(AC_msg_sd_file_open_success); + tftSendLn(AC_msg_sd_file_open_success); break; case '<': // .. (go up folder level) filenavigator.upDIR(); - SendtoTFTLN(AC_msg_sd_file_open_failed); - SendFileList(0); + tftSendLn(AC_msg_sd_file_open_failed); + sendFileList(0); break; default: // enter sub folder filenavigator.changeDIR(selectedfile); - SendtoTFTLN(AC_msg_sd_file_open_failed); - SendFileList(0); + tftSendLn(AC_msg_sd_file_open_failed); + sendFileList(0); break; } } - void DgusTFT::ProcessPanelRequest() { + void DgusTFT::processPanelRequest() { uint16_t control_index = 0; uint32_t control_value; uint16_t temp; @@ -1080,7 +1080,7 @@ namespace Anycubic { } else if (control_value == 0x010000) { // startup first gif - // Startup tunes are defined in Tunes.h + // startup tunes are defined in Tunes.h PlayTune(Anycubic_PowerOn); // takes 3500 ms } } @@ -1112,15 +1112,15 @@ namespace Anycubic { int8_t req = atoi(&panel_command[1]); // Information requests A0 - A8 and A33 - if (req <= 8 || req == 33) PanelInfo(req); + if (req <= 8 || req == 33) panelInfo(req); // Simple Actions A9 - A28 - else if (req <= 28) PanelAction(req); + else if (req <= 28) panelAction(req); // Process Initiation - else if (req <= 34) PanelProcess(req); + else if (req <= 34) panelProcess(req); - else SendtoTFTLN(); + else tftSendLn(); } #endif @@ -1187,7 +1187,7 @@ namespace Anycubic { lcd_txtbox_index = 0; } ChangePageOfTFT(PAGE_FILE); - SendFileList(0); + sendFileList(0); } break; case 2: { // tool @@ -1249,7 +1249,7 @@ namespace Anycubic { set_descript_color(COLOR_BLUE); lcd_txtbox_index = 0; - SendFileList(lcd_txtbox_page * 5); + sendFileList(lcd_txtbox_page * 5); } break; @@ -1260,7 +1260,7 @@ namespace Anycubic { set_descript_color(COLOR_BLUE); lcd_txtbox_index = 0; - SendFileList(lcd_txtbox_page * 5); + sendFileList(lcd_txtbox_page * 5); } break; @@ -1274,12 +1274,12 @@ namespace Anycubic { set_descript_color(COLOR_BLUE); lcd_txtbox_index = 0; } - SendFileList(lcd_txtbox_index); + sendFileList(lcd_txtbox_index); break; case 5: // resume of outage(last power off) #if ACDEBUG(AC_MARLIN) - DEBUG_PRINT_PRINTER_STATE(F("printer_state: "), printer_state); + DEBUG_PRINT_PRINTER_STATE(printer_state); #endif if (lcd_txtbox_index > 0 && lcd_txtbox_index < 6) { // 1~5 @@ -1398,8 +1398,8 @@ namespace Anycubic { case 2: // resume print #if ACDEBUG(AC_MARLIN) - DEBUG_PRINT_PRINTER_STATE(F("printer_state: "), printer_state); - DEBUG_PRINT_PAUSED_STATE(F("pause_state :"), pause_state); + DEBUG_PRINT_PRINTER_STATE(printer_state); + DEBUG_PRINT_PAUSED_STATE(pause_state); #endif if ( pause_state == AC_paused_idle || pause_state == AC_paused_filament_lack @@ -2418,8 +2418,8 @@ namespace Anycubic { case 1: // return #if ACDEBUG(AC_MARLIN) - DEBUG_PRINT_PRINTER_STATE(F("printer_state: "), printer_state); - DEBUG_PRINT_PAUSED_STATE(F("pause_state: "), pause_state); + DEBUG_PRINT_PRINTER_STATE(printer_state); + DEBUG_PRINT_PAUSED_STATE(pause_state); #endif if (AC_printer_printing == printer_state) ChangePageOfTFT(PAGE_STATUS2); // show pause @@ -3179,6 +3179,7 @@ namespace Anycubic { break; case 15: // filament lack + case 23: if (page_index_now != PAGE_FILAMENT_LACK) ChangePageOfTFT(PAGE_FILAMENT_LACK); pop_up_index = 100; @@ -3194,12 +3195,6 @@ namespace Anycubic { pop_up_index = 100; break; - case 23: // - if (page_index_now != PAGE_FILAMENT_LACK) - ChangePageOfTFT(PAGE_FILAMENT_LACK); - pop_up_index = 100; - break; - case 24: { // uint32_t time = getProgress_seconds_elapsed() / 60; char str_buf[20]; @@ -3207,7 +3202,7 @@ namespace Anycubic { sprintf(str_buf + strlen(str_buf), "%s M", utostr3(time % 60)); SendTxtToTFT(str_buf, TXT_FINISH_TIME); ChangePageOfTFT(PAGE_PRINT_FINISH); - //SendtoTFTLN(AC_msg_print_complete); // no idea why this causes a compile error + //tftSendLn(AC_msg_print_complete); // no idea why this causes a compile error pop_up_index = 100; } break; @@ -3218,84 +3213,56 @@ namespace Anycubic { } } - void DEBUG_PRINT_PAUSED_STATE(FSTR_P const msg, paused_state_t state) { - DEBUG_ECHOPGM(msg, state); + void DEBUG_PRINT_PAUSED_STATE(const paused_state_t state, FSTR_P const msg/*=nullptr*/) { + if (msg) DEBUG_ECHOF(msg); + DEBUG_ECHOPGM("Paused state: ", state, " "); switch (state) { - case AC_paused_heater_timed_out: - DEBUG_ECHOLNPGM(" AC_paused_heater_timed_out"); - break; - case AC_paused_filament_lack: - DEBUG_ECHOLNPGM(" AC_paused_filament_lack"); - break; - case AC_paused_purging_filament: - DEBUG_ECHOLNPGM(" AC_paused_purging_filament"); - break; - case AC_paused_idle: - DEBUG_ECHOLNPGM(" AC_paused_idle"); - break; + case AC_paused_heater_timed_out: DEBUG_ECHOPGM("AC_paused_heater_timed_out"); break; + case AC_paused_filament_lack: DEBUG_ECHOPGM("AC_paused_filament_lack"); break; + case AC_paused_purging_filament: DEBUG_ECHOPGM("AC_paused_purging_filament"); break; + case AC_paused_idle: DEBUG_ECHOPGM("AC_paused_idle"); break; } + DEBUG_EOL(); } -// routines to make the debug outputs human readable + // Human-readable debugging - void DEBUG_PRINT_PRINTER_STATE(FSTR_P const msg, printer_state_t state) { - DEBUG_ECHOPGM(msg, state); + void DEBUG_PRINT_PRINTER_STATE(const printer_state_t state, FSTR_P const msg/*=nullptr*/) { + if (msg) DEBUG_ECHOF(msg); + DEBUG_ECHOPGM("Printer State: ", state, " "); switch (state) { - case AC_printer_idle: - DEBUG_ECHOLNPGM(" AC_printer_idle"); - break; - case AC_printer_probing: - DEBUG_ECHOLNPGM(" AC_printer_probing"); - break; - case AC_printer_printing: - DEBUG_ECHOLNPGM(" AC_printer_printing"); - break; - case AC_printer_pausing: - DEBUG_ECHOLNPGM(" AC_printer_pausing"); - break; - case AC_printer_paused: - DEBUG_ECHOLNPGM(" AC_printer_paused"); - break; - case AC_printer_stopping: - DEBUG_ECHOLNPGM(" AC_printer_stopping"); - break; - case AC_printer_stopping_from_media_remove: - DEBUG_ECHOLNPGM(" AC_printer_stopping_from_media_remove"); - break; - case AC_printer_resuming_from_power_outage: - DEBUG_ECHOLNPGM(" AC_printer_resuming_from_power_outage"); - break; + case AC_printer_idle: DEBUG_ECHOPGM("AC_printer_idle"); break; + case AC_printer_probing: DEBUG_ECHOPGM("AC_printer_probing"); break; + case AC_printer_printing: DEBUG_ECHOPGM("AC_printer_printing"); break; + case AC_printer_pausing: DEBUG_ECHOPGM("AC_printer_pausing"); break; + case AC_printer_paused: DEBUG_ECHOPGM("AC_printer_paused"); break; + case AC_printer_stopping: DEBUG_ECHOPGM("AC_printer_stopping"); break; + case AC_printer_stopping_from_media_remove: DEBUG_ECHOPGM("AC_printer_stopping_from_media_remove"); break; + case AC_printer_resuming_from_power_outage: DEBUG_ECHOPGM("AC_printer_resuming_from_power_outage"); break; } + DEBUG_EOL(); } - void DEBUG_PRINT_TIMER_EVENT(FSTR_P const msg, timer_event_t event) { - DEBUG_ECHOPGM(msg, event); + void DEBUG_PRINT_TIMER_EVENT(const timer_event_t event, FSTR_P const msg/*=nullptr*/) { + if (msg) DEBUG_ECHOPGM(msg, event); + DEBUG_ECHOPGM("timerEvent() ", event, " "); switch (event) { - case AC_timer_started: - DEBUG_ECHOLNPGM(" AC_timer_started"); - break; - case AC_timer_paused: - DEBUG_ECHOLNPGM(" AC_timer_paused"); - break; - case AC_timer_stopped: - DEBUG_ECHOLNPGM(" AC_timer_stopped"); - break; + case AC_timer_started: DEBUG_ECHOPGM("AC_timer_started"); break; + case AC_timer_paused: DEBUG_ECHOPGM("AC_timer_paused"); break; + case AC_timer_stopped: DEBUG_ECHOPGM("AC_timer_stopped"); break; } + DEBUG_EOL(); } - void DEBUG_PRINT_MEDIA_EVENT(FSTR_P const msg, media_event_t event) { - DEBUG_ECHOPGM(msg, event); + void DEBUG_PRINT_MEDIA_EVENT(const media_event_t event, FSTR_P const msg/*=nullptr*/) { + if (msg) DEBUG_ECHOPGM(msg, event); + DEBUG_ECHOPGM("ProcessMediaStatus() ", event, " "); switch (event) { - case AC_media_inserted: - DEBUG_ECHOLNPGM(" AC_media_inserted"); - break; - case AC_media_removed: - DEBUG_ECHOLNPGM(" AC_media_removed"); - break; - case AC_media_error: - DEBUG_ECHOLNPGM(" AC_media_error"); - break; + case AC_media_inserted: DEBUG_ECHOPGM("AC_media_inserted"); break; + case AC_media_removed: DEBUG_ECHOPGM("AC_media_removed"); break; + case AC_media_error: DEBUG_ECHOPGM("AC_media_error"); break; } + DEBUG_EOL(); } } // namespace diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h index 1903fa1183..747193dd77 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h @@ -356,17 +356,17 @@ namespace Anycubic { static lcd_info_t lcd_info, lcd_info_back; static uint16_t page_index_now; - static void Startup(); + static void startup(); static void ParamInit(); - static void IdleLoop(); - static void PrinterKilled(FSTR_P,FSTR_P); - static void MediaEvent(media_event_t); - static void TimerEvent(timer_event_t); - static void FilamentRunout(); - static void ConfirmationRequest(const char * const); - static void StatusChange(const char * const); + static void idleLoop(); + static void printerKilled(FSTR_P,FSTR_P); + static void mediaEvent(media_event_t); + static void timerEvent(timer_event_t); + static void filamentRunout(); + static void confirmationRequest(const char * const); + static void statusChange(const char * const); static void PowerLoss(); - static void PowerLossRecovery(); + static void powerLossRecovery(); static void HomingStart(); static void HomingComplete(); @@ -450,17 +450,17 @@ namespace Anycubic { static void pop_up_manager(); - static void SendtoTFT(FSTR_P const=nullptr); - static void SendtoTFTLN(FSTR_P const=nullptr); - static bool ReadTFTCommand(); + static void tftSend(FSTR_P const=nullptr); + static void tftSendLn(FSTR_P const=nullptr); + static bool readTFTCommand(); static int8_t Findcmndpos(const char *, const char); - static void CheckHeaters(); - static void SendFileList(int8_t); - static void SelectFile(); - static void ProcessPanelRequest(); - static void PanelInfo(uint8_t); - static void PanelAction(uint8_t); - static void PanelProcess(uint8_t); + static void checkHeaters(); + static void sendFileList(int8_t); + static void selectFile(); + static void processPanelRequest(); + static void panelInfo(uint8_t); + static void panelAction(uint8_t); + static void panelProcess(uint8_t); static void SendValueToTFT(const uint16_t value, const uint16_t address); static void RequestValueFromTFT(const uint16_t address); diff --git a/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp b/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp index 142f438861..80e1746a2f 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp @@ -37,17 +37,17 @@ using namespace Anycubic; namespace ExtUI { - void onStartup() { Dgus.Startup(); } + void onStartup() { Dgus.startup(); } - void onIdle() { Dgus.IdleLoop(); } + void onIdle() { Dgus.idleLoop(); } void onPrinterKilled(FSTR_P const error, FSTR_P const component) { - Dgus.PrinterKilled(error, component); + Dgus.printerKilled(error, component); } - void onMediaInserted() { Dgus.MediaEvent(AC_media_inserted); } - void onMediaError() { Dgus.MediaEvent(AC_media_error); } - void onMediaRemoved() { Dgus.MediaEvent(AC_media_removed); } + void onMediaInserted() { Dgus.mediaEvent(AC_media_inserted); } + void onMediaError() { Dgus.mediaEvent(AC_media_error); } + void onMediaRemoved() { Dgus.mediaEvent(AC_media_removed); } void onPlayTone(const uint16_t frequency, const uint16_t duration) { #if ENABLED(SPEAKER) @@ -55,15 +55,15 @@ namespace ExtUI { #endif } - void onPrintTimerStarted() { Dgus.TimerEvent(AC_timer_started); } - void onPrintTimerPaused() { Dgus.TimerEvent(AC_timer_paused); } - void onPrintTimerStopped() { Dgus.TimerEvent(AC_timer_stopped); } + void onPrintTimerStarted() { Dgus.timerEvent(AC_timer_started); } + void onPrintTimerPaused() { Dgus.timerEvent(AC_timer_paused); } + void onPrintTimerStopped() { Dgus.timerEvent(AC_timer_stopped); } void onPrintDone() {} - void onFilamentRunout(const extruder_t) { Dgus.FilamentRunout(); } + void onFilamentRunout(const extruder_t) { Dgus.filamentRunout(); } - void onUserConfirmRequired(const char * const msg) { Dgus.ConfirmationRequest(msg); } - void onStatusChanged(const char * const msg) { Dgus.StatusChange(msg); } + void onUserConfirmRequired(const char * const msg) { Dgus.confirmationRequest(msg); } + void onStatusChanged(const char * const msg) { Dgus.statusChange(msg); } void onHomingStart() { Dgus.HomingStart(); } void onHomingDone() { Dgus.HomingComplete(); } @@ -129,7 +129,7 @@ namespace ExtUI { // Called when power-loss state is detected void onPowerLoss() { /* handled internally */ } // Called on resume from power-loss - void onPowerLossResume() { Dgus.PowerLossRecovery(); } + void onPowerLossResume() { Dgus.powerLossRecovery(); } #endif #if HAS_PID_HEATING diff --git a/Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp b/Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp index 2a7d635c6d..876a888918 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp +++ b/Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp @@ -220,7 +220,7 @@ void DGUSDisplay::ProcessRx() { } } -size_t DGUSDisplay::GetFreeTxBuffer() { return SERIAL_GET_TX_BUFFER_FREE(); } +size_t DGUSDisplay::GetFreeTxBuffer() { return LCD_SERIAL_TX_BUFFER_FREE(); } void DGUSDisplay::WriteHeader(uint16_t adr, uint8_t cmd, uint8_t payloadlen) { LCD_SERIAL.write(DGUS_HEADER1); diff --git a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp index bdfea5d147..aa83ee2a4e 100644 --- a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp @@ -157,7 +157,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } #endif char axiscode; - uint16_t speed = manual_feedrate_mm_m[X_AXIS]; // Default feedrate for manual moves + uint16_t speed = manual_feedrate_mm_m.x; // Default feedrate for manual moves switch (var.VP) { default: return; @@ -172,7 +172,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Y_AXIS case VP_MOVE_Y: axiscode = 'Y'; - speed = manual_feedrate_mm_m[Y_AXIS]; + speed = manual_feedrate_mm_m.y; if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; break; #endif @@ -180,7 +180,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Z_AXIS case VP_MOVE_Z: axiscode = 'Z'; - speed = manual_feedrate_mm_m[Z_AXIS]; + speed = manual_feedrate_mm_m.z; if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; break; #endif diff --git a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp index e37718e0a7..d0119d494f 100644 --- a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp @@ -157,7 +157,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } #endif char axiscode; - uint16_t speed = manual_feedrate_mm_m[X_AXIS]; // Default feedrate for manual moves + uint16_t speed = manual_feedrate_mm_m.x; // Default feedrate for manual moves switch (var.VP) { default: return; @@ -172,7 +172,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Y_AXIS case VP_MOVE_Y: axiscode = 'Y'; - speed = manual_feedrate_mm_m[Y_AXIS]; + speed = manual_feedrate_mm_m.y; if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; break; #endif @@ -180,7 +180,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Z_AXIS case VP_MOVE_Z: axiscode = 'Z'; - speed = manual_feedrate_mm_m[Z_AXIS]; + speed = manual_feedrate_mm_m.z; if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; break; #endif diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp index f882ba33d0..ad89a715c3 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp @@ -739,7 +739,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { return; char axiscode; - uint16_t speed = manual_feedrate_mm_m[X_AXIS]; // Default feedrate for manual moves + uint16_t speed = manual_feedrate_mm_m.x; // Default feedrate for manual moves switch (var.VP) { // switch X Y Z or Home default: return; @@ -753,7 +753,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Y_AXIS case VP_MOVE_Y: axiscode = 'Y'; - speed = manual_feedrate_mm_m[Y_AXIS]; + speed = manual_feedrate_mm_m.y; if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; break; #endif @@ -761,7 +761,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Z_AXIS case VP_MOVE_Z: axiscode = 'Z'; - speed = manual_feedrate_mm_m[Z_AXIS]; + speed = manual_feedrate_mm_m.z; if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; break; #endif diff --git a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp index c274d7b431..44f4a95cad 100644 --- a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp @@ -157,7 +157,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } #endif char axiscode; - uint16_t speed = manual_feedrate_mm_m[X_AXIS]; // Default feedrate for manual moves + uint16_t speed = manual_feedrate_mm_m.x; // Default feedrate for manual moves switch (var.VP) { default: return; @@ -172,7 +172,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Y_AXIS case VP_MOVE_Y: axiscode = 'Y'; - speed = manual_feedrate_mm_m[Y_AXIS]; + speed = manual_feedrate_mm_m.y; if (!ExtUI::canMove(ExtUI::axis_t::Y)) goto cannotmove; break; #endif @@ -180,7 +180,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_Z_AXIS case VP_MOVE_Z: axiscode = 'Z'; - speed = manual_feedrate_mm_m[Z_AXIS]; + speed = manual_feedrate_mm_m.z; if (!ExtUI::canMove(ExtUI::axis_t::Z)) goto cannotmove; break; #endif diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp index 40f3bbf1d5..97ae7638c9 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp @@ -111,7 +111,7 @@ void DGUSRxHandler::ScreenChange(DGUS_VP &vp, void *data_ptr) { dgus_screen_handler.TriggerFullUpdate(); } - void DGUSRxHandler::SelectFile(DGUS_VP &vp, void *data_ptr) { + void DGUSRxHandler::selectFile(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const uint8_t index = ((uint8_t*)data_ptr)[1]; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.h index d6d5855b9d..b81b142d84 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.h @@ -30,7 +30,7 @@ namespace DGUSRxHandler { #if HAS_MEDIA void Scroll(DGUS_VP &, void *); - void SelectFile(DGUS_VP &, void *); + void selectFile(DGUS_VP &, void *); void PrintFile(DGUS_VP &, void *); #endif diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp index e8c23b3226..6a430e74a6 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp @@ -148,7 +148,7 @@ void DGUSScreenHandler::Loop() { dgus_display.Loop(); } -void DGUSScreenHandler::PrinterKilled(FSTR_P const error, FSTR_P const component) { +void DGUSScreenHandler::printerKilled(FSTR_P const error, FSTR_P const component) { SetMessageLine(error, 1); SetMessageLine(component, 2); SetMessageLinePGM(NUL_STR, 3); @@ -271,7 +271,7 @@ void DGUSScreenHandler::PrintTimerStopped() { TriggerScreenChange(DGUS_Screen::PRINT_FINISHED); } -void DGUSScreenHandler::FilamentRunout(const ExtUI::extruder_t extruder) { +void DGUSScreenHandler::filamentRunout(const ExtUI::extruder_t extruder) { char buffer[21]; snprintf_P(buffer, sizeof(buffer), GET_TEXT(DGUS_MSG_FILAMENT_RUNOUT), extruder); diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h index 0f71ebdc3d..2ecf7192fe 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h @@ -37,7 +37,7 @@ public: static void Ready(); static void Loop(); - static void PrinterKilled(FSTR_P const error, FSTR_P const component); + static void printerKilled(FSTR_P const error, FSTR_P const component); static void UserConfirmRequired(const char * const msg); static void SettingsReset(); static void StoreSettings(char *buff); @@ -50,7 +50,7 @@ public: static void PrintTimerStarted(); static void PrintTimerPaused(); static void PrintTimerStopped(); - static void FilamentRunout(const ExtUI::extruder_t extruder); + static void filamentRunout(const ExtUI::extruder_t extruder); #if HAS_MEDIA /// Marlin informed us that a new SD has been inserted. diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp index cd5408e190..69f792c45d 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp @@ -81,7 +81,7 @@ const struct DGUS_VP vp_list[] PROGMEM = { VP_HELPER_RX(DGUS_Addr::SCREENCHANGE_Printing, &DGUSRxHandler::ScreenChange), #if HAS_MEDIA - VP_HELPER_RX(DGUS_Addr::SD_SelectFile, &DGUSRxHandler::SelectFile), + VP_HELPER_RX(DGUS_Addr::SD_SelectFile, &DGUSRxHandler::selectFile), VP_HELPER_RX(DGUS_Addr::SD_Scroll, &DGUSRxHandler::Scroll), VP_HELPER_RX_NODATA(DGUS_Addr::SD_Print, &DGUSRxHandler::PrintFile), #endif diff --git a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp index 75ef5f5d66..73dead1b56 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp @@ -47,7 +47,7 @@ namespace ExtUI { } void onPrinterKilled(FSTR_P const error, FSTR_P const component) { - dgus_screen_handler.PrinterKilled(error, component); + dgus_screen_handler.printerKilled(error, component); } void onMediaInserted() { TERN_(HAS_MEDIA, dgus_screen_handler.SDCardInserted()); } @@ -71,7 +71,7 @@ namespace ExtUI { } void onFilamentRunout(const extruder_t extruder) { - dgus_screen_handler.FilamentRunout(extruder); + dgus_screen_handler.filamentRunout(extruder); } void onUserConfirmRequired(const char * const msg) { diff --git a/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp b/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp index 6aa9b7c7c8..f16bdde29a 100644 --- a/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp +++ b/Marlin/src/lcd/extui/ia_creality/FileNavigator.cpp @@ -33,23 +33,23 @@ #if DGUS_LCD_UI_IA_CREALITY -#include "ia_creality_extui.h" +#include "ia_creality_rts.h" #include "FileNavigator.h" -using namespace ExtUI; +#include -FileList FileNavigator::filelist; // Instance of the Marlin file API -char FileNavigator::currentfoldername[MAX_PATH_LEN]; // Current folder path +ExtUI::FileList FileNavigator::filelist; // ExtUI file API +char FileNavigator::currentDirPath[MAX_PATH_LEN]; // Current folder path uint16_t FileNavigator::lastindex; uint8_t FileNavigator::folderdepth; -uint16_t FileNavigator::currentindex; // override the panel request +uint16_t FileNavigator::currentindex; // override the panel request FileNavigator filenavigator; FileNavigator::FileNavigator() { reset(); } void FileNavigator::reset() { - currentfoldername[0] = '\0'; + currentDirPath[0] = '\0'; folderdepth = 0; currentindex = 0; lastindex = 0; @@ -136,7 +136,7 @@ void FileNavigator::getFiles(uint16_t index) { rts.sendData((uint8_t)0, FilenameIcon + (fcnt+1)); rts.sendData((unsigned long)0xFFFF, (FilenameNature + ((1+fcnt) * 16))); // white } - SERIAL_ECHOLNPGM("-", seek, " '", filelist.filename(), "' '", currentfoldername, "", filelist.shortFilename(), "'\n"); + SERIAL_ECHOLNPGM("-", seek, " '", filelist.filename(), "' '", currentDirPath, "", filelist.shortFilename(), "'\n"); fcnt++; } } @@ -144,8 +144,8 @@ void FileNavigator::getFiles(uint16_t index) { void FileNavigator::changeDIR(char *folder) { if (folderdepth >= MAX_FOLDER_DEPTH) return; // limit the folder depth - strcat(currentfoldername, folder); - strcat(currentfoldername, "/"); + strcat(currentDirPath, folder); + strcat(currentDirPath, "/"); filelist.changeDir(folder); refresh(); folderdepth++; @@ -159,17 +159,17 @@ void FileNavigator::upDIR() { currentindex = 0; // Remove the last child folder from the stored path if (folderdepth == 0) { - currentfoldername[0] = '\0'; + currentDirPath[0] = '\0'; reset(); } else { char *pos = nullptr; for (uint8_t f = 0; f < folderdepth; f++) - pos = strchr(currentfoldername, '/'); + pos = strchr(currentDirPath, '/'); pos[1] = '\0'; } } -char* FileNavigator::getCurrentFolderName() { return currentfoldername; } +char* FileNavigator::getCurrentDirPath() { return currentDirPath; } #endif // DGUS_LCD_UI_IA_CREALITY diff --git a/Marlin/src/lcd/extui/ia_creality/FileNavigator.h b/Marlin/src/lcd/extui/ia_creality/FileNavigator.h index 28d97c6746..af98210a9f 100644 --- a/Marlin/src/lcd/extui/ia_creality/FileNavigator.h +++ b/Marlin/src/lcd/extui/ia_creality/FileNavigator.h @@ -30,13 +30,12 @@ * Written by Insanity Automation * ***************************************/ +#include "../ui_api.h" + #define MAX_FOLDER_DEPTH 4 // Limit folder depth TFT has a limit for the file path -#define MAX_CMND_LEN 16 * MAX_FOLDER_DEPTH // Maximum Length for a Panel command #define MAX_PATH_LEN 16 * MAX_FOLDER_DEPTH // Maximum number of characters in a SD file path #define DISPLAY_FILES 4 -using namespace ExtUI; - class FileNavigator { public: FileNavigator(); @@ -45,15 +44,15 @@ class FileNavigator { static void upDIR(); static void changeDIR(char *); static void refresh(); - static char* getCurrentFolderName(); + static char* getCurrentDirPath(); static uint8_t folderdepth; static uint16_t currentindex; static bool getIndexisDir(uint16_t); const char *getIndexName(uint16_t); static uint16_t maxFiles(); private: - static FileList filelist; - static char currentfoldername[MAX_PATH_LEN]; + static ExtUI::FileList filelist; + static char currentDirPath[MAX_PATH_LEN]; static uint16_t lastindex; }; diff --git a/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.cpp b/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.cpp index 51180206db..4bfdfc6ec3 100644 --- a/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.cpp +++ b/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.cpp @@ -25,7 +25,7 @@ * **************************************** * Extensible_UI implementation for Creality DWIN * 10SPro, Max, CRX, and others - * Based original Creality release, ported to ExtUI for Marlin 2.0 + * Based original Creality release, ported to Marlin ExtUI * Written by Insanity Automation, sponsored by Tiny Machines 3D * * ***************************************/ @@ -34,1838 +34,137 @@ #if DGUS_LCD_UI_IA_CREALITY -#include "ia_creality_extui.h" +#include "ia_creality_rts.h" #include "FileNavigator.h" - -// Singleton instance -RTS rts; - -// Static data -DB RTS::recdat, RTS::snddat; -uint8_t RTS::databuf[DATA_BUF_SIZE]; -rx_datagram_state_t RTS::rx_datagram_state = DGUS_IDLE; -uint8_t RTS::rx_datagram_len = 0; - -// Local data -uint16_t fileIndex = 0; -uint8_t recordcount = 0; -uint8_t waitway_lock = 0; -const float manual_feedrate_mm_m[] = MANUAL_FEEDRATE; -uint8_t startprogress = 0; - -char waitway = 0; -int16_t recnum = 0; -float ChangeMaterialbuf[2] = { 0 }; - -char NozzleTempStatus[3] = { 0 }; - -char PrinterStatusKey[2] = { 0 }; // PrinterStatusKey[1] 0:keep temperature, 1:heating, 2:cooling, 3:printing - // PrinterStatusKey[0] 0:ready - -uint8_t AxisPagenum = 0; // 0 for 10mm, 1 for 1mm, 2 for 0.1mm -bool InforShowStatus = true; -bool TPShowStatus = false; // true for only opening time and percentage, false for closing time and percentage. -bool AutohomeKey = false; -uint8_t AutoHomeIconNum; -int16_t userConfValidation = 0; - -uint8_t lastPauseMsgState = 0; - -creality_dwin_settings_t Settings; -uint8_t dwin_settings_version = 1; - -bool reEntryPrevent = false; -uint8_t reEntryCount = 0; -uint16_t idleThrottling = 0; - -bool pause_resume_selected = false; - -#if HAS_PID_HEATING - uint16_t pid_hotendAutoTemp = 150; - uint16_t pid_bedAutoTemp = 70; -#endif - -#ifndef IA_CREALITY_BOOT_DELAY - #define IA_CREALITY_BOOT_DELAY 500 -#endif - -void RTS::onStartup() { - DWIN_SERIAL.begin(115200); - recdat.head[0] = snddat.head[0] = FHONE; - recdat.head[1] = snddat.head[1] = FHTWO; - ZERO(databuf); - - delay_ms(IA_CREALITY_BOOT_DELAY); // Delay to allow screen startup - setTouchScreenConfiguration(); - sendData(StartSoundSet, SoundAddr); - delay_ms(400); // Delay to allow screen to configure - - onStatusChanged(MACHINE_NAME " Ready"); - - sendData(100, FeedrateDisplay); - - /***************turn off motor*****************/ - sendData(11, FilenameIcon); - - /***************transmit temperature to screen*****************/ - sendData(0, NozzlePreheat); - sendData(0, BedPreheat); - sendData(getActualTemp_celsius(H0), NozzleTemp); - sendData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); - sendData(getActualTemp_celsius(BED), Bedtemp); - /***************transmit Fan speed to screen*****************/ - sendData(getActualFan_percent((fan_t)getActiveTool()), FanKeyIcon); - - /***************transmit Printer information to screen*****************/ - for (int16_t j = 0; j < 20; j++) // clean filename - sendData(0, MacVersion + j); - char sizebuf[20] = {0}; - sprintf(sizebuf, "%d X %d X %d", Y_BED_SIZE, X_BED_SIZE, Z_MAX_POS); - sendData(MACHINE_NAME, MacVersion); - sendData(SHORT_BUILD_VERSION, SoftVersion); - sendData(sizebuf, PrinterSize); - sendData(WEBSITE_URL, CorpWebsite); - - /**************************some info init*******************************/ - sendData(0, PrintscheduleIcon); - sendData(0, PrintscheduleIcon + 1); - - /************************clean screen*******************************/ - for (int16_t i = 0; i < MaxFileNumber; i++) - for (int16_t j = 0; j < 10; j++) sendData(0, SDFILE_ADDR + i * 10 + j); - - for (int16_t j = 0; j < 10; j++) { - sendData(0, Printfilename + j); // clean screen. - sendData(0, Choosefilename + j); // clean filename - } - for (int16_t j = 0; j < 8; j++) sendData(0, FilenameCount + j); - for (int16_t j = 1; j <= MaxFileNumber; j++) { - sendData(10, FilenameIcon + j); - sendData(10, FilenameIcon1 + j); - } -} - -void RTS::onIdle() { - while (rts.receiveData() > 0 && (rts.recdat.data[0] != 0 || rts.recdat.addr != 0)) - rts.handleData(); - - if (reEntryPrevent && reEntryCount < 120) { reEntryCount++; return; } - reEntryCount = 0; - - if (idleThrottling++ < 750) return; - - // Always send temperature data - rts.sendData(getActualTemp_celsius(getActiveTool()), NozzleTemp); - rts.sendData(getActualTemp_celsius(BED), Bedtemp); - rts.sendData(getTargetTemp_celsius(getActiveTool()), NozzlePreheat); - rts.sendData(getTargetTemp_celsius(BED), BedPreheat); - rts.sendData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); - rts.sendData(TERN0(HAS_MULTI_HOTEND, getTargetTemp_celsius(H1)), e2Preheat); - TERN_(HAS_MULTI_HOTEND, rts.sendData(uint8_t(getActiveTool() + 1), ActiveToolVP)); - - if (awaitingUserConfirm() && (lastPauseMsgState != ExtUI::pauseModeStatus || userConfValidation > 99)) { - switch (ExtUI::pauseModeStatus) { - case PAUSE_MESSAGE_PARKING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_PAUSE_PRINT_PARKING)); break; - case PAUSE_MESSAGE_CHANGING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_INIT)); break; - case PAUSE_MESSAGE_UNLOAD: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_UNLOAD)); break; - case PAUSE_MESSAGE_WAITING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_ADVANCED_PAUSE_WAITING)); break; - case PAUSE_MESSAGE_INSERT: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_INSERT)); break; - case PAUSE_MESSAGE_LOAD: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_LOAD)); break; - case PAUSE_MESSAGE_PURGE: ExtUI::onUserConfirmRequired(GET_TEXT_F(TERN(ADVANCED_PAUSE_CONTINUOUS_PURGE, MSG_FILAMENT_CHANGE_CONT_PURGE, MSG_FILAMENT_CHANGE_PURGE))); break; - case PAUSE_MESSAGE_RESUME: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_RESUME)); break; - case PAUSE_MESSAGE_HEAT: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEAT)); break; - case PAUSE_MESSAGE_HEATING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEATING)); break; - case PAUSE_MESSAGE_OPTION: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_OPTION_HEADER)); break; - case PAUSE_MESSAGE_STATUS: break; - default: onUserConfirmRequired(PSTR("Confirm Continue")); break; - } - userConfValidation = 0; - } - else if (pause_resume_selected && !awaitingUserConfirm()) { - rts.sendData(ExchangePageBase + 53, ExchangepageAddr); - pause_resume_selected = false; - userConfValidation = 0; - } - else if (awaitingUserConfirm()) { - if (pause_resume_selected) { - pause_resume_selected = false; - userConfValidation = 100; - } - else - userConfValidation++; - } - - reEntryPrevent = true; - idleThrottling = 0; - if (waitway && !commandsInQueue()) - waitway_lock++; - else - waitway_lock = 0; - - if (waitway_lock > 100) { - waitway_lock = 0; - waitway = 0; // clear waitway if nothing is going on - } - - switch (waitway) { - case 1: - if (isPositionKnown()) { - InforShowStatus = true; - rts.sendData(ExchangePageBase + 54, ExchangepageAddr); - waitway = 0; - } - break; - - case 2: - if (isPositionKnown() && !commandsInQueue()) waitway = 0; - break; - - case 3: - //if(isPositionKnown() && (getActualTemp_celsius(BED) >= (getTargetTemp_celsius(BED)-1))) { - rts.sendData(ExchangePageBase + 64, ExchangepageAddr); - waitway = 7; - //return; - //} - break; - - case 4: - if (AutohomeKey && isPositionKnown() && !commandsInQueue()) { // Manual Move Home Done - //rts.sendData(ExchangePageBase + 71 + AxisPagenum, ExchangepageAddr); - AutohomeKey = false; - waitway = 0; - } - break; - case 5: - if (isPositionKnown() && !commandsInQueue()) { - InforShowStatus = true; - waitway = 0; - rts.sendData(ExchangePageBase + 78, ExchangepageAddr); // exchange to 78 page - } - break; - case 6: - if (!commandsInQueue()) { - setAxisPosition_mm(BED_TRAMMING_HEIGHT, axis_t(Z)); - waitway = 0; - } - break; - case 7: - if (!commandsInQueue()) waitway = 0; - break; - } - - TERN_(HAS_MESH, rts.sendData(getLevelingActive() ? 3 : 2, AutoLevelIcon)); - TERN_(HAS_FILAMENT_SENSOR, rts.sendData(getFilamentRunoutEnabled() ? 3 : 2, RunoutToggle)); - TERN_(CASE_LIGHT_ENABLE, rts.sendData(getCaseLightState() ? 3 : 2, LedToggle)); - TERN_(POWER_LOSS_RECOVERY, rts.sendData(getPowerLossRecoveryEnabled() ? 3 : 2, PowerLossToggle)); - - if (startprogress == 0) { - startprogress += 25; - delay_ms(3000); // Delay to show bootscreen - } - else if (startprogress < 250) { - if (isMediaInserted()) // Re init media as it happens too early on STM32 boards often - onMediaInserted(); - else - injectCommands(F("M22\nM21")); - startprogress = 254; - InforShowStatus = true; - TPShowStatus = false; - rts.sendData(ExchangePageBase + 45, ExchangepageAddr); - reEntryPrevent = false; - return; - } - if (startprogress <= 100) - rts.sendData(startprogress, StartIcon); - else - rts.sendData(startprogress - 100, StartIcon + 1); - - //rts.sendData((startprogress++) % 5, ExchFlmntIcon); - - if (isPrinting()) { - rts.sendData(getActualFan_percent((fan_t)getActiveTool()), FanKeyIcon); - rts.sendData(getProgress_seconds_elapsed() / 3600, Timehour); - rts.sendData((getProgress_seconds_elapsed() % 3600) / 60, Timemin); - if (getProgress_percent() > 0) { - const uint16_t perc = getProgress_percent() + 1; - if (perc <= 50) { - rts.sendData(uint16_t(perc) * 2, PrintscheduleIcon); - rts.sendData(0, PrintscheduleIcon + 1); - } - else { - rts.sendData(100, PrintscheduleIcon); - rts.sendData(uint16_t(perc) * 2 - 100, PrintscheduleIcon + 1); - } - } - else { - rts.sendData(0, PrintscheduleIcon); - rts.sendData(0, PrintscheduleIcon + 1); - } - rts.sendData(uint16_t(getProgress_percent()), Percentage); - } - else { // Not printing settings - rts.sendData(map(constrain(Settings.display_volume, 0, 255), 0, 255, 0, 100), VolumeDisplay); - rts.sendData(Settings.screen_brightness, DisplayBrightness); - rts.sendData(Settings.standby_screen_brightness, DisplayStandbyBrightness); - rts.sendData(Settings.standby_time_seconds, DisplayStandbySeconds); - if (Settings.display_standby) - rts.sendData(3, DisplayStandbyEnableIndicator); - else - rts.sendData(2, DisplayStandbyEnableIndicator); - - rts.sendData(getAxisSteps_per_mm(X) * 10, StepMM_X); - rts.sendData(getAxisSteps_per_mm(Y) * 10, StepMM_Y); - rts.sendData(getAxisSteps_per_mm(Z) * 10, StepMM_Z); - rts.sendData(getAxisSteps_per_mm(E0) * 10, StepMM_E); - - rts.sendData(getAxisMaxAcceleration_mm_s2(X) / 100, Accel_X); - rts.sendData(getAxisMaxAcceleration_mm_s2(Y) / 100, Accel_Y); - rts.sendData(getAxisMaxAcceleration_mm_s2(Z) / 10, Accel_Z); - rts.sendData(getAxisMaxAcceleration_mm_s2(E0), Accel_E); - - rts.sendData(getAxisMaxFeedrate_mm_s(X), Feed_X); - rts.sendData(getAxisMaxFeedrate_mm_s(Y), Feed_Y); - rts.sendData(getAxisMaxFeedrate_mm_s(Z), Feed_Z); - rts.sendData(getAxisMaxFeedrate_mm_s(E0), Feed_E); - - rts.sendData(getAxisMaxJerk_mm_s(X) * 100, Jerk_X); - rts.sendData(getAxisMaxJerk_mm_s(Y) * 100, Jerk_Y); - rts.sendData(getAxisMaxJerk_mm_s(Z) * 100, Jerk_Z); - rts.sendData(getAxisMaxJerk_mm_s(E0) * 100, Jerk_E); - - #if HAS_HOTEND_OFFSET - rts.sendData(getNozzleOffset_mm(X, E1) * 10, T2Offset_X); - rts.sendData(getNozzleOffset_mm(Y, E1) * 10, T2Offset_Y); - rts.sendData(getNozzleOffset_mm(Z, E1) * 10, T2Offset_Z); - rts.sendData(getAxisSteps_per_mm(E1) * 10, T2StepMM_E); - #endif - - #if HAS_BED_PROBE - rts.sendData(getProbeOffset_mm(X) * 100, ProbeOffset_X); - rts.sendData(getProbeOffset_mm(Y) * 100, ProbeOffset_Y); - #endif - - #if HAS_PID_HEATING - rts.sendData(pid_hotendAutoTemp, HotendPID_AutoTmp); - rts.sendData(pid_bedAutoTemp, BedPID_AutoTmp); - rts.sendData(getPID_Kp(E0) * 10, HotendPID_P); - rts.sendData(getPID_Ki(E0) * 10, HotendPID_I); - rts.sendData(getPID_Kd(E0) * 10, HotendPID_D); - #if ENABLED(PIDTEMPBED) - rts.sendData(getBedPID_Kp() * 10, BedPID_P); - rts.sendData(getBedPID_Ki() * 10, BedPID_I); - rts.sendData(getBedPID_Kd() * 10, BedPID_D); - #endif - #endif - } - - rts.sendData(getZOffset_mm() * 100, ProbeOffset_Z); - rts.sendData(uint16_t(getFlow_percent(E0)), Flowrate); - - if (NozzleTempStatus[0] || NozzleTempStatus[2]) { // statuse of loadfilament and unloadfinement when temperature is less than - uint16_t IconTemp = getActualTemp_celsius(getActiveTool()) * 100 / getTargetTemp_celsius(getActiveTool()); - NOMORE(IconTemp, 100U); - rts.sendData(IconTemp, HeatPercentIcon); - if (getActualTemp_celsius(getActiveTool()) > EXTRUDE_MINTEMP && NozzleTempStatus[0] != 0) { - NozzleTempStatus[0] = 0; - rts.sendData(10 * ChangeMaterialbuf[0], FilamentUnit1); - rts.sendData(10 * ChangeMaterialbuf[1], FilamentUnit2); - rts.sendData(ExchangePageBase + 65, ExchangepageAddr); - } - else if (getActualTemp_celsius(getActiveTool()) >= getTargetTemp_celsius(getActiveTool()) && NozzleTempStatus[2]) { - NozzleTempStatus[2] = 0; - TPShowStatus = true; - rts.sendData(4, ExchFlmntIcon); - rts.sendData(ExchangePageBase + 83, ExchangepageAddr); - } - else if (NozzleTempStatus[2]) { - //rts.sendData((startprogress++) % 5, ExchFlmntIcon); - } - } - - if (AutohomeKey) { - rts.sendData(AutoHomeIconNum, AutoZeroIcon); - if (++AutoHomeIconNum > 9) AutoHomeIconNum = 0; - } - - if (isMediaInserted()) { - const uint16_t currPage = fileIndex == 0 ? 1 : CEIL(float(fileIndex) / float(DISPLAY_FILES)) + 1, - maxPageAdd = filenavigator.folderdepth ? 1 : 0, - maxPages = CEIL(float(filenavigator.maxFiles() + maxPageAdd) / float(DISPLAY_FILES) ); - - rts.sendData(currPage, FilesCurentPage); - rts.sendData(maxPages, FilesMaxPage); - } - else { - rts.sendData(0, FilesCurentPage); - rts.sendData(0, FilesMaxPage); - } - - if (rts.recdat.addr != DisplayZaxis && rts.recdat.addr != DisplayYaxis && rts.recdat.addr != DisplayZaxis) { - rts.sendData(10 * getAxisPosition_mm(axis_t(X)), DisplayXaxis); - rts.sendData(10 * getAxisPosition_mm(axis_t(Y)), DisplayYaxis); - rts.sendData(10 * getAxisPosition_mm(axis_t(Z)), DisplayZaxis); - } - reEntryPrevent = false; -} - -RTS::RTS() { - recdat.head[0] = snddat.head[0] = FHONE; - recdat.head[1] = snddat.head[1] = FHTWO; - ZERO(databuf); -} - -int16_t RTS::receiveData() { - uint8_t receivedbyte; - while (DWIN_SERIAL.available()) - switch (rx_datagram_state) { - - case DGUS_IDLE: // Waiting for the first header byte - receivedbyte = DWIN_SERIAL.read(); - if (FHONE == receivedbyte) rx_datagram_state = DGUS_HEADER1_SEEN; - break; - - case DGUS_HEADER1_SEEN: // Waiting for the second header byte - receivedbyte = DWIN_SERIAL.read(); - rx_datagram_state = (FHTWO == receivedbyte) ? DGUS_HEADER2_SEEN : DGUS_IDLE; - break; - - case DGUS_HEADER2_SEEN: // Waiting for the length byte - rx_datagram_len = DWIN_SERIAL.read(); - //DEBUGLCDCOMM_ECHOPGM(" (", rx_datagram_len, ") "); - - // Telegram min len is 3 (command and one word of payload) - rx_datagram_state = WITHIN(rx_datagram_len, 3, DGUS_RX_BUFFER_SIZE) ? DGUS_WAIT_TELEGRAM : DGUS_IDLE; - break; - - case DGUS_WAIT_TELEGRAM: // wait for complete datagram to arrive. - if (DWIN_SERIAL.available() < rx_datagram_len) return -1; - - uint8_t command = DWIN_SERIAL.read(); - - //DEBUGLCDCOMM_ECHOPGM("# ", command); - - uint8_t readlen = rx_datagram_len - 1; // command is part of len. - uint8_t tmp[rx_datagram_len - 1]; - uint8_t *ptmp = tmp; - while (readlen--) { - receivedbyte = DWIN_SERIAL.read(); - //DEBUGLCDCOMM_ECHOPGM(" ", receivedbyte); - *ptmp++ = receivedbyte; - } - //DEBUGLCDCOMM_ECHOPGM(" # "); - // mostly we'll get this: 5A A5 03 82 4F 4B -- ACK on 0x82, so discard it. - if (command == VarAddr_W && 'O' == tmp[0] && 'K' == tmp[1]) { - rx_datagram_state = DGUS_IDLE; - break; - } - - /* AutoUpload, (and answer to) Command 0x83 : - | tmp[0 1 2 3 4 ... ] - | Example 5A A5 06 83 20 01 01 78 01 …… - | / / | | \ / | \ \ - | Header | | | | \_____\_ DATA (Words!) - | DatagramLen / VPAdr | - | Command DataLen (in Words) */ - if (command == VarAddr_R) { - const uint16_t vp = tmp[0] << 8 | tmp[1]; - - const uint8_t dlen = tmp[2] << 1; // Convert to Bytes. (Display works with words) - recdat.addr = vp; - recdat.len = tmp[2]; - for (uint16_t i = 0; i < dlen; i += 2) { - recdat.data[i / 2] = tmp[3 + i]; - recdat.data[i / 2] = (recdat.data[i / 2] << 8 ) | tmp[4 + i]; - } - - rx_datagram_state = DGUS_IDLE; - return 2; - break; - } - - // discard anything else - rx_datagram_state = DGUS_IDLE; - } - return -1; -} - -void RTS::sendData() { - if (snddat.head[0] == FHONE && snddat.head[1] == FHTWO && snddat.len >= 3) { - databuf[0] = snddat.head[0]; - databuf[1] = snddat.head[1]; - databuf[2] = snddat.len; - databuf[3] = snddat.command; - if (snddat.command == 0x80) { // to write data to the register - databuf[4] = snddat.addr; - for (int16_t i = 0; i < (snddat.len - 2); i++) databuf[5 + i] = snddat.data[i]; - } - else if (snddat.len == 3 && (snddat.command == 0x81)) { // to read data from the register - databuf[4] = snddat.addr; - databuf[5] = snddat.bytelen; - } - else if (snddat.command == 0x82) { // to write data to the variate - databuf[4] = snddat.addr >> 8; - databuf[5] = snddat.addr & 0xFF; - for (int16_t i = 0; i < (snddat.len - 3); i += 2) { - databuf[6 + i] = snddat.data[i / 2] >> 8; - databuf[7 + i] = snddat.data[i / 2] & 0xFF; - } - } - else if (snddat.len == 4 && (snddat.command == 0x83)) { // to read data from the variate - databuf[4] = snddat.addr >> 8; - databuf[5] = snddat.addr & 0xFF; - databuf[6] = snddat.bytelen; - } - for (int16_t i = 0; i < (snddat.len + 3); i++) { - DWIN_SERIAL.write(databuf[i]); - delay_us(1); - } - - memset(&snddat, 0, sizeof(snddat)); - ZERO(databuf); - snddat.head[0] = FHONE; - snddat.head[1] = FHTWO; - } -} - -void RTS::sendData(const String &s, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { - if (s.length() < 1) return; - sendData(s.c_str(), addr, cmd); -} - -void RTS::sendData(const char *str, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { - int16_t len = strlen(str); - constexpr int16_t maxlen = DATA_BUF_SIZE - 6; - if (len > 0) { - if (len > maxlen) len = maxlen; - databuf[0] = FHONE; - databuf[1] = FHTWO; - databuf[2] = 3 + len; - databuf[3] = cmd; - databuf[4] = addr >> 8; - databuf[5] = addr & 0x00FF; - for (int16_t i = 0; i < len; i++) databuf[6 + i] = str[i]; - - for (int16_t i = 0; i < (len + 6); i++) { - DWIN_SERIAL.write(databuf[i]); - delay_us(1); - } - ZERO(databuf); - } -} - -void RTS::sendData(const char c, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { - snddat.command = cmd; - snddat.addr = addr; - snddat.data[0] = uint32_t(uint16_t(c) << 8); - snddat.len = 5; - sendData(); -} - -void RTS::sendData(const_float_t f, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { - int16_t n = f; - if (cmd == VarAddr_W) { - snddat.data[0] = n; - snddat.len = 5; - } - else if (cmd == RegAddr_W) { - snddat.data[0] = n; - snddat.len = 3; - } - else if (cmd == VarAddr_R) { - snddat.bytelen = n; - snddat.len = 4; - } - snddat.command = cmd; - snddat.addr = addr; - sendData(); -} - -void RTS::sendData(const int n, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { - if (cmd == VarAddr_W) { - if ((unsigned int)n > 0xFFFF) { - snddat.data[0] = n >> 16; - snddat.data[1] = n & 0xFFFF; - snddat.len = 7; - } - else { - snddat.data[0] = n; - snddat.len = 5; - } - } - else if (cmd == RegAddr_W) { - snddat.data[0] = n; - snddat.len = 3; - } - else if (cmd == VarAddr_R) { - snddat.bytelen = n; - snddat.len = 4; - } - snddat.command = cmd; - snddat.addr = addr; - sendData(); -} - -void RTS::sendData(const unsigned long n, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { - if (cmd == VarAddr_W) { - if (n > 0xFFFF) { - snddat.data[0] = n >> 16; - snddat.data[1] = n & 0xFFFF; - //snddat.data[0] = n >> 24; - //snddat.data[1] = n >> 16; - //snddat.data[2] = n >> 8; - //snddat.data[3] = n; - snddat.len = 7; - } - else { - snddat.data[0] = n; - snddat.len = 5; - } - } - else if (cmd == VarAddr_R) { - snddat.bytelen = n; - snddat.len = 4; - } - snddat.command = cmd; - snddat.addr = addr; - sendData(); -} - -void RTS::handleData() { - int16_t Checkkey = -1; - if (waitway > 0) { // for waiting - memset(&recdat, 0, sizeof(recdat)); - recdat.head[0] = FHONE; - recdat.head[1] = FHTWO; - return; - } - for (int16_t i = 0; Addrbuf[i] != 0; i++) - if (recdat.addr == Addrbuf[i]) { - if (Addrbuf[i] == NzBdSet || Addrbuf[i] == NozzlePreheat || Addrbuf[i] == BedPreheat || Addrbuf[i] == Flowrate) - Checkkey = ManualSetTemp; - else if (WITHIN(Addrbuf[i], Stopprint, Resumeprint)) - Checkkey = PrintChoice; - else if (WITHIN(Addrbuf[i], AutoZero, DisplayZaxis)) - Checkkey = XYZEaxis; - else if (WITHIN(Addrbuf[i], FilamentUnit1, FilamentUnit2)) - Checkkey = Filament; - else - Checkkey = i; - break; - } - - switch (recdat.addr) { - case Flowrate: - case StepMM_X ... StepMM_E: - case ProbeOffset_X ... ProbeOffset_Y: - case HotendPID_AutoTmp ... BedPID_AutoTmp: - case HotendPID_P ... HotendPID_D: - case BedPID_P ... BedPID_D: - case T2Offset_X ... T2StepMM_E: - case Accel_X ... Accel_E: - case Feed_X ... Feed_E: - case Jerk_X ... Jerk_E: - case RunoutToggle: - case PowerLossToggle: - case FanKeyIcon: - case LedToggle: - case e2Preheat: Checkkey = ManualSetTemp; break; - case ProbeOffset_Z: Checkkey = Zoffset_Value; break; - case VolumeDisplay: Checkkey = VolumeDisplay; break; - case DisplayBrightness: Checkkey = DisplayBrightness; break; - case DisplayStandbyBrightness: Checkkey = DisplayStandbyBrightness; break; - case DisplayStandbySeconds: Checkkey = DisplayStandbySeconds; break; - default: - if (WITHIN(recdat.addr, AutolevelVal, 4400)) // (int16_t(AutolevelVal) + GRID_MAX_POINTS * 2) = 4400 with 5x5 mesh - Checkkey = AutolevelVal; - else if (WITHIN(recdat.addr, SDFILE_ADDR, SDFILE_ADDR + 10 * (FileNum + 1))) - Checkkey = Filename; - break; - } - - if (Checkkey < 0) { - memset(&recdat, 0, sizeof(recdat)); - recdat.head[0] = FHONE; - recdat.head[1] = FHTWO; - return; - } - - constexpr float lfrb[4] = BED_TRAMMING_INSET_LFRB; - - switch (Checkkey) { - case Printfile: - if (recdat.data[0] == 1) { // card - InforShowStatus = false; - filenavigator.getFiles(0); - fileIndex = 0; - recordcount = 0; - sendData(ExchangePageBase + 46, ExchangepageAddr); - } - else if (recdat.data[0] == 2) { // return after printing result. - InforShowStatus = true; - TPShowStatus = false; - stopPrint(); - injectCommands(F("M84")); - sendData(11, FilenameIcon); - sendData(0, PrintscheduleIcon); - sendData(0, PrintscheduleIcon + 1); - sendData(0, Percentage); - delay_ms(2); - sendData(0, Timehour); - sendData(0, Timemin); - - sendData(ExchangePageBase + 45, ExchangepageAddr); // exchange to 45 page - } - else if (recdat.data[0] == 3) { // Temperature control - InforShowStatus = true; - TPShowStatus = false; - if (getTargetFan_percent((fan_t)getActiveTool()) == 0) - sendData(ExchangePageBase + 58, ExchangepageAddr); // exchange to 58 page, the fans off - else - sendData(ExchangePageBase + 57, ExchangepageAddr); // exchange to 57 page, the fans on - } - else if (recdat.data[0] == 4) { // Settings - InforShowStatus = false; - } - break; - - case Adjust: - if (recdat.data[0] == 1) { - InforShowStatus = false; - } - else if (recdat.data[0] == 2) { - InforShowStatus = true; - if (PrinterStatusKey[1] == 3) // during heating - sendData(ExchangePageBase + 53, ExchangepageAddr); - else if (PrinterStatusKey[1] == 4) - sendData(ExchangePageBase + 54, ExchangepageAddr); - else - sendData(ExchangePageBase + 53, ExchangepageAddr); - } - else if (recdat.data[0] == 3) - setTargetFan_percent(getTargetFan_percent((fan_t)getActiveTool()) != 0 ? 100 : 0, FAN0); - - break; - - case Feedrate: - setFeedrate_percent(recdat.data[0]); - break; - - case PrintChoice: - if (recdat.addr == Stopprint) { - if (recdat.data[0] == 240) { // no - sendData(ExchangePageBase + 53, ExchangepageAddr); - } - else { - sendData(ExchangePageBase + 45, ExchangepageAddr); - sendData(0, Timehour); - sendData(0, Timemin); - stopPrint(); - } - } - else if (recdat.addr == Pauseprint) { - if (recdat.data[0] != 0xF1) - break; - - sendData(ExchangePageBase + 54, ExchangepageAddr); - pausePrint(); - } - else if (recdat.addr == Resumeprint && recdat.data[0] == 1) { - resumePrint(); - - PrinterStatusKey[1] = 0; - InforShowStatus = true; - - sendData(ExchangePageBase + 53, ExchangepageAddr); - } - if (recdat.addr == Resumeprint && recdat.data[0] == 2) { // warming - resumePrint(); - NozzleTempStatus[2] = 1; - PrinterStatusKey[1] = 0; - InforShowStatus = true; - sendData(ExchangePageBase + 82, ExchangepageAddr); - } - break; - - case Zoffset: - float tmp_zprobe_offset; - if (recdat.data[0] >= 32768) - tmp_zprobe_offset = (float(recdat.data[0]) - 65536) / 100; - else - tmp_zprobe_offset = float(recdat.data[0]) / 100; - if (WITHIN((tmp_zprobe_offset), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { - int16_t tmpSteps = mmToWholeSteps(getZOffset_mm() - tmp_zprobe_offset, axis_t(Z)); - if (tmpSteps == 0) tmpSteps = getZOffset_mm() < tmp_zprobe_offset ? 1 : -1; - smartAdjustAxis_steps(-tmpSteps, axis_t(Z), false); - char zOffs[20], tmp1[11]; - sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); - onStatusChanged(zOffs); - } - else { - onStatusChanged(F("Requested Offset Beyond Limits")); - } - - sendData(getZOffset_mm() * 100, ProbeOffset_Z); - break; - - case TempControl: - if (recdat.data[0] == 0) { - InforShowStatus = true; - TPShowStatus = false; - } - else if (recdat.data[0] == 1) { - if (getTargetFan_percent((fan_t)getActiveTool()) == 0) - sendData(ExchangePageBase + 60, ExchangepageAddr); // exchange to 60 page, the fans off - else - sendData(ExchangePageBase + 59, ExchangepageAddr); // exchange to 59 page, the fans on - } - else if (recdat.data[0] == 2) { - InforShowStatus = true; - } - else if (recdat.data[0] == 3) { - if (getTargetFan_percent((fan_t)getActiveTool()) == 0) { // turn on the fan - setTargetFan_percent(100, FAN0); - sendData(ExchangePageBase + 57, ExchangepageAddr); // exchange to 57 page, the fans on - } - else { // turn off the fan - setTargetFan_percent(0, FAN0); - sendData(ExchangePageBase + 58, ExchangepageAddr); // exchange to 58 page, the fans on - } - } - else if (recdat.data[0] == 5) { // PLA mode - setTargetTemp_celsius(PREHEAT_1_TEMP_HOTEND, getActiveTool()); - setTargetTemp_celsius(PREHEAT_1_TEMP_BED, BED); - sendData(PREHEAT_1_TEMP_HOTEND, NozzlePreheat); - sendData(PREHEAT_1_TEMP_BED, BedPreheat); - } - else if (recdat.data[0] == 6) { // ABS mode - setTargetTemp_celsius(PREHEAT_2_TEMP_HOTEND, getActiveTool()); - setTargetTemp_celsius(PREHEAT_2_TEMP_BED, BED); - sendData(PREHEAT_2_TEMP_HOTEND, NozzlePreheat); - sendData(PREHEAT_2_TEMP_BED, BedPreheat); - } - else if (recdat.data[0] == 0xF1) { - //InforShowStatus = true; - #if FAN_COUNT > 0 - for (uint8_t i = 0; i < FAN_COUNT; i++) setTargetFan_percent(0, (fan_t)i); - #endif - setTargetTemp_celsius(0.0, H0); - TERN_(HAS_MULTI_HOTEND, setTargetTemp_celsius(0.0, H1)); - setTargetTemp_celsius(0.0, BED); - sendData(0, NozzlePreheat); delay_ms(1); - sendData(0, BedPreheat); delay_ms(1); - sendData(ExchangePageBase + 57, ExchangepageAddr); - PrinterStatusKey[1] = 2; - } - break; - - case ManualSetTemp: - if (recdat.addr == NzBdSet) { - if (recdat.data[0] == 0) { - if (getTargetFan_percent((fan_t)getActiveTool()) == 0) - sendData(ExchangePageBase + 58, ExchangepageAddr); // exchange to 58 page, the fans off - else - sendData(ExchangePageBase + 57, ExchangepageAddr); // exchange to 57 page, the fans on - } - else if (recdat.data[0] == 1) { - setTargetTemp_celsius(0.0, getActiveTool()); - sendData(0, NozzlePreheat); - } - else if (recdat.data[0] == 2) { - setTargetTemp_celsius(0.0, BED); - sendData(0, BedPreheat); - } - } - else if (recdat.addr == NozzlePreheat) { - setTargetTemp_celsius(float(recdat.data[0]), H0); - } - #if HAS_MULTI_HOTEND - else if (recdat.addr == e2Preheat) { - setTargetTemp_celsius(float(recdat.data[0]), H1); - } - #endif - else if (recdat.addr == BedPreheat) { - setTargetTemp_celsius(float(recdat.data[0]), BED); - } - else if (recdat.addr == Flowrate) { - setFlow_percent(int16_t(recdat.data[0]), getActiveTool()); - } - - #if HAS_PID_HEATING - else if (recdat.addr == HotendPID_AutoTmp) { - pid_hotendAutoTemp = uint16_t(recdat.data[0]); - } - else if (recdat.addr == BedPID_AutoTmp) { - pid_bedAutoTemp = uint16_t(recdat.data[0]); - } - #endif - - else if (recdat.addr == Accel_X) { - setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 100, X); - } - else if (recdat.addr == Accel_Y) { - setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 100, Y); - } - else if (recdat.addr == Accel_Z) { - setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 10, Z); - } - else if (recdat.addr == Accel_E) { - setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]), E0); - setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]), E1); - } - - else if (recdat.addr == Feed_X) { - setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), X); - } - else if (recdat.addr == Feed_Y) { - setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), Y); - } - else if (recdat.addr == Feed_Z) { - setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), Z); - } - else if (recdat.addr == Feed_E) { - setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), E0); - setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), E1); - } - else if (recdat.addr == FanKeyIcon) { - setTargetFan_percent(uint16_t(recdat.data[0]), (fan_t)getActiveTool()); - } - else { - float tmp_float_handling; - if (recdat.data[0] >= 32768) - tmp_float_handling = (float(recdat.data[0]) - 65536) / 100; - else - tmp_float_handling = float(recdat.data[0]) / 100; - if (recdat.addr == StepMM_X) { - setAxisSteps_per_mm(tmp_float_handling * 10, X); - } - else if (recdat.addr == StepMM_Y) { - setAxisSteps_per_mm(tmp_float_handling * 10, Y); - } - else if (recdat.addr == StepMM_Z) { - setAxisSteps_per_mm(tmp_float_handling * 10, Z); - } - else if (recdat.addr == StepMM_E) { - setAxisSteps_per_mm(tmp_float_handling * 10, E0); - #if DISABLED(DUAL_X_CARRIAGE) - setAxisSteps_per_mm(tmp_float_handling * 10, E1); - #endif - } - #if ENABLED(DUAL_X_CARRIAGE) - else if (recdat.addr == T2StepMM_E) { - setAxisSteps_per_mm(tmp_float_handling * 10, E1); - } - else if (recdat.addr == T2Offset_X) { - setNozzleOffset_mm(tmp_float_handling * 10, X, E1); - } - else if (recdat.addr == T2Offset_Y) { - setNozzleOffset_mm(tmp_float_handling * 10, Y, E1); - } - else if (recdat.addr == T2Offset_Z) { - setNozzleOffset_mm(tmp_float_handling * 10, Z, E1); - } - #endif - #if HAS_BED_PROBE - else if (recdat.addr == ProbeOffset_X) { - setProbeOffset_mm(tmp_float_handling, X); - } - else if (recdat.addr == ProbeOffset_Y) { - setProbeOffset_mm(tmp_float_handling, Y); - } - else if (recdat.addr == ProbeOffset_Z) { - setProbeOffset_mm(tmp_float_handling, Z); - } - #endif - - #if ENABLED(CLASSIC_JERK) - else if (recdat.addr == Jerk_X) { - setAxisMaxJerk_mm_s(tmp_float_handling, X); - } - else if (recdat.addr == Jerk_Y) { - setAxisMaxJerk_mm_s(tmp_float_handling, Y); - } - else if (recdat.addr == Jerk_Z) { - setAxisMaxJerk_mm_s(tmp_float_handling, Z); - } - else if (recdat.addr == Jerk_E) { - setAxisMaxJerk_mm_s(tmp_float_handling, E0); - setAxisMaxJerk_mm_s(tmp_float_handling, E1); - } - #endif - - #if HAS_FILAMENT_SENSOR - else if (recdat.addr == RunoutToggle) { - setFilamentRunoutEnabled(!getFilamentRunoutEnabled()); - } - #endif - - #if ENABLED(POWER_LOSS_RECOVERY) - else if (recdat.addr == PowerLossToggle) { - setPowerLossRecoveryEnabled(!getPowerLossRecoveryEnabled()); - } - #endif - - #if ENABLED(CASE_LIGHT_ENABLE) - else if (recdat.addr == LedToggle) { - setCaseLightState(!getCaseLightState()); - } - #endif - - #if HAS_PID_HEATING - else if (recdat.addr == HotendPID_P) { - setPID(tmp_float_handling * 10, getPID_Ki(getActiveTool()), getPID_Kd(getActiveTool()), getActiveTool()); - } - else if (recdat.addr == HotendPID_I) { - setPID(getPID_Kp(getActiveTool()), tmp_float_handling * 10, getPID_Kd(getActiveTool()), getActiveTool()); - } - else if (recdat.addr == HotendPID_D) { - setPID(getPID_Kp(getActiveTool()), getPID_Ki(getActiveTool()), tmp_float_handling * 10, getActiveTool()); - } - #if ENABLED(PIDTEMPBED) - else if (recdat.addr == BedPID_P) { - setBedPID(tmp_float_handling * 10, getBedPID_Ki(), getBedPID_Kd()); - } - else if (recdat.addr == BedPID_I) { - setBedPID(getBedPID_Kp(), tmp_float_handling * 10, getBedPID_Kd()); - } - else if (recdat.addr == BedPID_D) { - setBedPID(getBedPID_Kp(), getBedPID_Ki(), tmp_float_handling * 10); - } - #endif - #endif // HAS_PID_HEATING - } - break; - - case Setting: - if (recdat.data[0] == 0) { // return to main page - InforShowStatus = true; - TPShowStatus = false; - } - else if (recdat.data[0] == 1) { // Bed Autoleveling - #if HAS_MESH - sendData(getLevelingActive() ? 3 : 2, AutoLevelIcon); - - if (ExtUI::getMeshValid()) { - uint8_t abl_probe_index = 0; - for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) - for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { - const bool zig = outer & 1; - const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; - sendData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + abl_probe_index * 2); - ++abl_probe_index; - } - } - #endif - sendData(10, FilenameIcon); // Motor Icon - injectCommands(isPositionKnown() ? F("G1F1000Z0.0") : F("G28\nG1F1000Z0.0")); - waitway = 2; - sendData(ExchangePageBase + 64, ExchangepageAddr); - } - else if (recdat.data[0] == 2) { // Exchange filament - InforShowStatus = true; - TPShowStatus = false; - ZERO(ChangeMaterialbuf); - ChangeMaterialbuf[1] = ChangeMaterialbuf[0] = 10; - sendData(10 * ChangeMaterialbuf[0], FilamentUnit1); // It's ChangeMaterialbuf for show, instead of current_position.e in them. - sendData(10 * ChangeMaterialbuf[1], FilamentUnit2); - sendData(getActualTemp_celsius(H0), NozzleTemp); - sendData(getTargetTemp_celsius(H0), NozzlePreheat); - sendData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); - sendData(TERN0(HAS_MULTI_HOTEND, getTargetTemp_celsius(H1)), e2Preheat); - delay_ms(2); - sendData(ExchangePageBase + 65, ExchangepageAddr); - } - else if (recdat.data[0] == 3) { // Move - AxisPagenum = 0; - sendData(ExchangePageBase + 71, ExchangepageAddr); - } - else if (recdat.data[0] == 4) { // Language - // Just loads language screen, now used for tools - } - else if (recdat.data[0] == 5) { // Printer Information - sendData(WEBSITE_URL, CorpWebsite); - } - else if (recdat.data[0] == 6) { // Diabalestepper - injectCommands(F("M84")); - sendData(11, FilenameIcon); - } - break; - - case ReturnBack: - if (recdat.data[0] == 1) { // return to the tool page - InforShowStatus = false; - sendData(ExchangePageBase + 63, ExchangepageAddr); - } - if (recdat.data[0] == 2) // return to the Level mode page - sendData(ExchangePageBase + 64, ExchangepageAddr); - break; - - case Bedlevel: - switch (recdat.data[0]) { - case 1: { // Z-axis to home - // Disallow Z homing if X or Y are unknown - injectCommands(isAxisPositionKnown(axis_t(X)) && isAxisPositionKnown(axis_t(Y)) ? F("G28Z\nG1F1500Z0.0") : F("G28\nG1F1500Z0.0")); - sendData(getZOffset_mm() * 100, ProbeOffset_Z); - break; - } - case 2: { // Z-axis to Up - if (WITHIN((getZOffset_mm() + 0.1), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { - smartAdjustAxis_steps(getAxisSteps_per_mm(Z) / 10, axis_t(Z), false); - //setZOffset_mm(getZOffset_mm() + 0.1); - sendData(getZOffset_mm() * 100, ProbeOffset_Z); - char zOffs[20], tmp1[11]; - sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); - onStatusChanged(zOffs); - } - break; - } - case 3: { // Z-axis to Down - if (WITHIN((getZOffset_mm() - 0.1), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { - smartAdjustAxis_steps(-getAxisSteps_per_mm(Z) / 10, axis_t(Z), false); - //babystepAxis_steps(int16_t(-getAxisSteps_per_mm(Z)) / 10, axis_t(Z)); - //setZOffset_mm(getZOffset_mm() - 0.1); - sendData(getZOffset_mm() * 100, ProbeOffset_Z); - char zOffs[20], tmp1[11]; - sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); - onStatusChanged(zOffs); - } - break; - } - case 4: { // Assistant Level - TERN_(HAS_MESH, setLevelingActive(false)); - injectCommands(isPositionKnown() ? F("G1 F1000 Z0.0") : F("G28\nG1 F1000 Z0.0")); - waitway = 2; - sendData(ExchangePageBase + 84, ExchangepageAddr); - break; - } - case 5: { // AutoLevel "Measuring" Button - #if ENABLED(MESH_BED_LEVELING) - sendData(ExchangePageBase + 93, ExchangepageAddr); - #else - waitway = 3; // only for prohibiting to receive massage - sendData(3, AutolevelIcon); - uint8_t abl_probe_index = 0; - while (abl_probe_index < 25) { - sendData(0, AutolevelVal + abl_probe_index * 2); - ++abl_probe_index; - } - sendData(ExchangePageBase + 64, ExchangepageAddr); - injectCommands(F(MEASURING_GCODE)); - #endif - break; - } - - case 6: { // Assitant Level , Centre 1 - setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); - setAxisPosition_mm(X_CENTER, axis_t(X)); - setAxisPosition_mm(Y_CENTER, axis_t(Y)); - waitway = 6; - break; - } - case 7: { // Assitant Level , Front Left 2 - setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); - setAxisPosition_mm(X_MIN_BED + lfrb[0], axis_t(X)); - setAxisPosition_mm(Y_MIN_BED + lfrb[1], axis_t(Y)); - waitway = 6; - break; - } - case 8: { // Assitant Level , Front Right 3 - setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); - setAxisPosition_mm(X_MAX_BED - lfrb[2], axis_t(X)); - setAxisPosition_mm(Y_MIN_BED + lfrb[1], axis_t(Y)); - waitway = 6; - break; - } - case 9: { // Assitant Level , Back Right 4 - setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); - setAxisPosition_mm(X_MAX_BED - lfrb[2], axis_t(X)); - setAxisPosition_mm(Y_MAX_BED - lfrb[3], axis_t(Y)); - waitway = 6; - break; - } - case 10: { // Assitant Level , Back Left 5 - setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); - setAxisPosition_mm(X_MIN_BED + lfrb[0], axis_t(X)); - setAxisPosition_mm(Y_MAX_BED - lfrb[3], axis_t(Y)); - waitway = 6; - break; - } - case 11: { // Autolevel switch - #if HAS_MESH - const bool gla = !getLevelingActive(); - setLevelingActive(gla); - sendData(gla ? 3 : 2, AutoLevelIcon); - #endif - sendData(getZOffset_mm() * 100, ProbeOffset_Z); - break; - } - case 12: { - injectCommands(F("G26R255")); - onStatusChanged(F("Beginning G26.. Heating")); - break; - } - case 13: { - injectCommands(F("G29S1")); - onStatusChanged(F("Begin Manual Mesh")); - break; - } - case 14: { - injectCommands(F("G29S2")); - onStatusChanged(F("Moving to Next Mesh Point")); - break; - } - case 15: { - injectCommands(F("M211S0\nG91\nG1Z-0.025\nG90\nM211S1")); - onStatusChanged(F("Moved down 0.025")); - break; - } - case 16: { - injectCommands(F("M211S0\nG91\nG1Z0.025\nG90\nM211S1")); - onStatusChanged(F("Moved up 0.025")); - break; - } - case 17: { - Settings.display_volume = 0; - Settings.display_sound = false; - setTouchScreenConfiguration(); - break; - } - case 18: { - Settings.display_volume = 255; - Settings.display_sound = true; - setTouchScreenConfiguration(); - break; - } - case 19: { - Settings.screen_brightness = 10; - setTouchScreenConfiguration(); - break; - } - case 20: { - Settings.screen_brightness = 100; - setTouchScreenConfiguration(); - break; - } - case 21: { - Settings.display_standby ^= true; - setTouchScreenConfiguration(); - break; - } - case 22: { - Settings.screen_rotation = Settings.screen_rotation == 10 ? 0 : 10; - setTouchScreenConfiguration(); - break; - } - case 23: { // Set IDEX Autopark - injectCommands(F("M605S1\nG28X\nG1X0")); - break; - } - case 24: { // Set IDEX Duplication - injectCommands(F("M605S1\nT0\nG28\nM605S2\nG28X\nG1X0")); - break; - } - case 25: { // Set IDEX Mirrored Duplication - injectCommands(F("M605S1\nT0\nG28\nM605S2\nG28X\nG1X0\nM605S3")); - break; - } - case 26: { // Set IDEX Full Control - injectCommands(F("M605S0\nG28X")); - break; - } - case 27: { // Change Tool - setActiveTool(getActiveTool() == E0 ? E1 : E0, !isAxisPositionKnown(X)); - break; - } - default: break; - } - - sendData(10, FilenameIcon); - break; - - case XYZEaxis: { - axis_t axis = X; - float min = 0.0f, max = 0.0f; - waitway = 4; - if (recdat.addr == DisplayXaxis) { - axis = X; - min = X_MIN_POS; - max = X_MAX_POS; - } - else if (recdat.addr == DisplayYaxis) { - axis = Y; - min = Y_MIN_POS; - max = Y_MAX_POS; - } - else if (recdat.addr == DisplayZaxis) { - axis = Z; - min = Z_MIN_POS; - max = Z_MAX_POS; - } - else if (recdat.addr == AutoZero) { - if (recdat.data[0] == 3) { // autohome - waitway = 4; - injectCommands(F("G28\nG1 F1000 Z10")); - InforShowStatus = AutohomeKey = true; - AutoHomeIconNum = 0; - sendData(10, FilenameIcon); - } - else { - AxisPagenum = recdat.data[0]; - waitway = 0; - } - break; - } - - float targetPos = float(recdat.data[0]) / 10; - LIMIT(targetPos, min, max); - setAxisPosition_mm(targetPos, axis); - waitway = 0; - sendData(10, FilenameIcon); - break; - } - - case Filament: - - uint16_t IconTemp; - if (recdat.addr == Exchfilament) { - if (getActualTemp_celsius(getActiveTool()) < EXTRUDE_MINTEMP && recdat.data[0] < 5) { - sendData(int16_t(EXTRUDE_MINTEMP), 0x1020); - delay_ms(5); - sendData(ExchangePageBase + 66, ExchangepageAddr); - break; - } - - switch (recdat.data[0]) { - case 1: { // Unload filament1 - setAxisPosition_mm(getAxisPosition_mm(E0) - ChangeMaterialbuf[0], E0); - break; - } - case 2: { // Load filament1 - setAxisPosition_mm(getAxisPosition_mm(E0) + ChangeMaterialbuf[0], E0); - break; - } - case 3: { // Unload filament2 - setAxisPosition_mm(getAxisPosition_mm(E1) - ChangeMaterialbuf[1], E1); - break; - } - case 4: { // Load filament2 - setAxisPosition_mm(getAxisPosition_mm(E1) + ChangeMaterialbuf[1], E1); - break; - } - case 5: { // sure to heat - NozzleTempStatus[0] = 1; - - setTargetTemp_celsius((PREHEAT_1_TEMP_HOTEND + 10), getActiveTool()); - IconTemp = getActualTemp_celsius(getActiveTool()) * 100 / getTargetTemp_celsius(getActiveTool()); - NOMORE(IconTemp, 100U); - sendData(IconTemp, HeatPercentIcon); - - sendData(getActualTemp_celsius(H0), NozzleTemp); - sendData(getTargetTemp_celsius(H0), NozzlePreheat); - sendData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); - sendData(TERN0(HAS_MULTI_HOTEND, getTargetTemp_celsius(H1)), e2Preheat); - delay_ms(5); - sendData(ExchangePageBase + 68, ExchangepageAddr); - break; - } - case 6: { // cancel to heat - sendData(ExchangePageBase + 65, ExchangepageAddr); - break; - } - case 0xF1: { // Sure to cancel heating - NozzleTempStatus[0] = 0; - delay_ms(1); - sendData(ExchangePageBase + 65, ExchangepageAddr); - break; - } - case 0xF0: // not to cancel heating - break; - } - sendData(10 * ChangeMaterialbuf[0], FilamentUnit1); // It's ChangeMaterialbuf for show, instead of current_position.e in them. - sendData(10 * ChangeMaterialbuf[1], FilamentUnit2); - } - else if (recdat.addr == FilamentUnit1) { - ChangeMaterialbuf[0] = float(recdat.data[0]) / 10; - } - else if (recdat.addr == FilamentUnit2) { - ChangeMaterialbuf[1] = float(recdat.data[0]) / 10; - } - break; - - case LanguageChoice: - - //if (recdat.data[0] == 1) settings.save(); else injectCommands(F("M300")); - - // may at some point use language change screens to save eeprom explicitly - switch (recdat.data[0]) { - case 0: { - injectCommands(F("M500")); - break; - } - case 1: { - sendData(ExchangePageBase + 94, ExchangepageAddr); - break; - } - - #if ENABLED(PIDTEMP) - case 2: { - onStatusChanged(F("Hotend PID Started")); - startPIDTune(static_cast(pid_hotendAutoTemp), getActiveTool()); - break; - } - #endif - - case 3: { - injectCommands(F("M502\nM500")); - break; - } - case 4: { - injectCommands(F("M999\nM280P0S160")); - break; - } - - case 5: { - #if ENABLED(PIDTEMPBED) - onStatusChanged(F("Bed PID Started")); - startBedPIDTune(static_cast(pid_bedAutoTemp)); - #endif - break; - } - case 6: { - injectCommands(F("M500")); - break; - } - default: break; - } - break; - - case No_Filament: - if (recdat.data[0] == 1) { // Filament is out, resume / resume selected on screen - if (ExtUI::pauseModeStatus != PAUSE_MESSAGE_PURGE && ExtUI::pauseModeStatus != PAUSE_MESSAGE_OPTION) { - // setPauseMenuResponse(PAUSE_RESPONSE_RESUME_PRINT); - setUserConfirmed(); - // PrinterStatusKey[1] = 3; - // pause_resume_selected = true; - } - else { - #if ENABLED(FILAMENT_RUNOUT_SENSOR) - bool runouton = false; - if (getFilamentRunoutState()) { - #if NUM_RUNOUT_SENSORS > 1 - if ((runouton = getFilamentRunoutEnabled(getActiveTool()))) - ExtUI::setFilamentRunoutEnabled(false, getActiveTool()); - #else - if ((runouton = getFilamentRunoutEnabled())) - ExtUI::setFilamentRunoutEnabled(false); - #endif - } - #else - constexpr bool runouton = false; - #endif - if (!runouton) { - setPauseMenuResponse(PAUSE_RESPONSE_RESUME_PRINT); - setUserConfirmed(); - PrinterStatusKey[1] = 3; - pause_resume_selected = true; - } - } - } - else if (recdat.data[0] == 0) { // Filamet is out, Cancel Selected - if (ExtUI::pauseModeStatus == PAUSE_MESSAGE_PURGE || ExtUI::pauseModeStatus == PAUSE_MESSAGE_OPTION) { - setPauseMenuResponse(PAUSE_RESPONSE_EXTRUDE_MORE); - setUserConfirmed(); - } - } - break; - - #if ENABLED(POWER_LOSS_RECOVERY) - case PwrOffNoF: - if (recdat.data[0] == 1) // Yes: continue to print the 3Dmode during power-off. - injectCommands(F("M1000")); - else if (recdat.data[0] == 2) // No - injectCommands(F("M1000C")); - break; - #endif - - case Volume: - if (recdat.data[0] < 0) - Settings.display_volume = 0; - else if (recdat.data[0] > 255) - Settings.display_volume = 0xFF; - else - Settings.display_volume = recdat.data[0]; - - if (Settings.display_volume == 0) { - sendData(0, VolumeIcon); - sendData(9, SoundIcon); - } - else { - sendData((Settings.display_volume + 1) / 32 - 1, VolumeIcon); - sendData(8, SoundIcon); - } - sendData(Settings.display_volume << 8, SoundAddr + 1); - break; - - case Filename: - if (isMediaInserted() && recdat.addr == FilenameChs) { - - recordcount = recdat.data[0] - 1; - if (filenavigator.currentindex == 0 && filenavigator.folderdepth > 0 && (fileIndex + recordcount) == 0) { - filenavigator.upDIR(); - filenavigator.getFiles(0); - fileIndex = 0; - return; - } - - if (filenavigator.currentindex == 0 && filenavigator.folderdepth > 0) - recordcount = recordcount - 1; // account for return dir link in file index - - for (int16_t j = 1; j <= 4; j++) { // Clear filename BG Color and Frame - sendData(0xFFFFUL, FilenameNature + j * 16); // white - sendData(10, FilenameIcon1 + j); // clean - } - for (int16_t j = 0; j < 10; j++) // clear current filename - sendData(0, Choosefilename + j); - - if (filenavigator.getIndexisDir(fileIndex + recordcount)) { - filenavigator.changeDIR((char *)filenavigator.getIndexName(fileIndex + recordcount)); - filenavigator.getFiles(0); - fileIndex = 0; - return; - } - else { - sendData(filenavigator.getIndexName(fileIndex + recordcount), Choosefilename); - sendData(0x87F0UL, FilenameNature + recdat.data[0] * 16); // Change BG of selected line to Light Green - sendData(6, FilenameIcon1 + recdat.data[0]); // show frame - } - } - else if (recdat.addr == FilenamePlay) { - if (recdat.data[0] == 1 && isMediaInserted()) { // for sure - printFile(filenavigator.getIndexName(fileIndex + recordcount)); - - for (int16_t j = 0; j < 10; j++) // clean screen. - sendData(0, Printfilename + j); - - sendData(filenavigator.getIndexName(fileIndex + recordcount), Printfilename); - - delay_ms(4); - - sendData(ExchangePageBase + 53, ExchangepageAddr); - - TPShowStatus = InforShowStatus = true; - PrinterStatusKey[0] = 1; - PrinterStatusKey[1] = 3; - fileIndex = 0; - recordcount = 0; - } - else if (recdat.data[0] == 2) { // Page Down - if ((fileIndex + DISPLAY_FILES) < (filenavigator.maxFiles() + (filenavigator.folderdepth != 0))) { - fileIndex = fileIndex + DISPLAY_FILES; - // if(filenavigator.folderdepth!=0 && fileIndex!=0) //Shift to acknowledge Return DIR button on first page - // filenavigator.getFiles(fileIndex-1); - // else - filenavigator.getFiles(fileIndex); - // filenavigator.getFiles(filenavigator.currentindex+1); - } - } - else if (recdat.data[0] == 3) { // Page Up - if (fileIndex >= DISPLAY_FILES) { - fileIndex = fileIndex - DISPLAY_FILES; - // if(filenavigator.folderdepth!=0 && fileIndex!=0) //Shift to acknowledge Return DIR button on first page - // filenavigator.getFiles(filenavigator.currentindex-DISPLAY_FILES); - // else - filenavigator.getFiles(fileIndex); - } - } - else if (recdat.data[0] == 4) { // Page Up - injectCommands(F("M22\nM21")); - } - else if (recdat.data[0] == 0) { // return to main page - InforShowStatus = true; - TPShowStatus = false; - } - } - break; - - case VolumeDisplay: { - if (recdat.data[0] == 0) { - Settings.display_volume = 0; - Settings.display_sound = false; - } - else if (recdat.data[0] > 100) { - Settings.display_volume = 255; - Settings.display_sound = true; - } - else { - Settings.display_volume = (uint8_t)map(constrain(recdat.data[0], 0, 100), 0, 100, 0, 255); - Settings.display_sound = true; - } - setTouchScreenConfiguration(); - break; - } - - case DisplayBrightness: { - if (recdat.data[0] < 10) - Settings.screen_brightness = 10; - else if (recdat.data[0] > 100) - Settings.screen_brightness = 100; - else - Settings.screen_brightness = (uint8_t)recdat.data[0]; - setTouchScreenConfiguration(); - break; - } - - case DisplayStandbyBrightness: { - if (recdat.data[0] < 10) - Settings.standby_screen_brightness = 10; - else if (recdat.data[0] > 100) - Settings.standby_screen_brightness = 100; - else - Settings.standby_screen_brightness = (uint8_t)recdat.data[0]; - setTouchScreenConfiguration(); - break; - } - - case DisplayStandbySeconds: { - if (recdat.data[0] < 5) - Settings.standby_time_seconds = 5; - else if (recdat.data[0] > 100) - Settings.standby_time_seconds = 100; - else - Settings.standby_time_seconds = (uint8_t)recdat.data[0]; - setTouchScreenConfiguration(); - break; - } - - case AutolevelVal: { - uint8_t meshPoint = (recdat.addr - AutolevelVal) / 2, - yPnt = floor(meshPoint / GRID_MAX_POINTS_X), - xPnt = meshPoint - (yPnt * GRID_MAX_POINTS_X); - if (yPnt % 2 != 0) xPnt = (GRID_MAX_POINTS_X - 1) - xPnt; // zag row - - float meshVal = float(recdat.data[0] - (recdat.data[0] >= 32768 ? 65536 : 0)) / 1000; - - LIMIT(meshVal, Z_PROBE_LOW_POINT, Z_CLEARANCE_BETWEEN_PROBES); - xy_uint8_t point = { xPnt, yPnt }; - setMeshPoint(point, meshVal); - sendData(meshVal * 1000, recdat.addr); - break; - } - - default: break; - } - - memset(&recdat, 0, sizeof(recdat)); - recdat.head[0] = FHONE; - recdat.head[1] = FHTWO; -} - -void RTS::writeVariable(const uint16_t adr, const void * const values, uint8_t valueslen, const bool isstr/*=false*/, const char fillChar/*=' '*/) { - const char* myvalues = static_cast(values); - bool strend = !myvalues; - DWIN_SERIAL.write(FHONE); - DWIN_SERIAL.write(FHTWO); - DWIN_SERIAL.write(valueslen + 3); - DWIN_SERIAL.write(0x82); - DWIN_SERIAL.write(adr >> 8); - DWIN_SERIAL.write(adr & 0xFF); - while (valueslen--) { - char x; - if (!strend) x = *myvalues++; - if ((isstr && !x) || strend) { - strend = true; - x = fillChar; - } - DWIN_SERIAL.write(x); - } -} - -void RTS::setTouchScreenConfiguration() { - // Main configuration (System_Config) - LIMIT(Settings.screen_brightness, 10, 100); // Prevent a possible all-dark screen - LIMIT(Settings.standby_time_seconds, 10, 655); // Prevent a possible all-dark screen for standby, yet also don't go higher than the DWIN limitation - - uint8_t cfg_bits = (0x0 - | _BV(7) // 7: Enable Control ... TERN0(DWINOS_4, _BV(7)) - | _BV(5) // 5: load 22 touch file - | _BV(4) // 4: auto-upload should always be enabled - | (Settings.display_sound ? _BV(3) : 0) // 3: audio - | (Settings.display_standby ? _BV(2) : 0) // 2: backlight on standby - | (Settings.screen_rotation == 10 ? _BV(1) : 0) // 1 & 0: Inversion - #if LCD_SCREEN_ROTATE == 90 - | _BV(0) // Portrait Mode or 800x480 display has 0 point rotated 90deg from 480x272 display - #elif LCD_SCREEN_ROTATE - #error "Only 90° rotation is supported for the selected LCD." - #endif - ); - - const uint8_t config_set[] = { 0x5A, 0x00, TERN(DWINOS_4, 0x00, 0xFF), cfg_bits }; - writeVariable(0x80 /*System_Config*/, config_set, sizeof(config_set)); - - // Standby brightness (LED_Config) - uint16_t dwinStandbyTimeSeconds = 100 * Settings.standby_time_seconds; /* milliseconds, but divided by 10 (not 5 like the docs say) */ - const uint8_t brightness_set[] = { - Settings.screen_brightness /*% active*/, - Settings.standby_screen_brightness /*% standby*/, - static_cast(dwinStandbyTimeSeconds >> 8), - static_cast(dwinStandbyTimeSeconds) - }; - writeVariable(0x82 /*LED_Config*/, brightness_set, sizeof(brightness_set)); - - if (!Settings.display_sound) { - sendData(0, VolumeIcon); - sendData(9, SoundIcon); - } - else { - sendData((Settings.display_volume + 1) / 32 - 1, VolumeIcon); - sendData(8, SoundIcon); - } - sendData(Settings.display_volume, VolumeIcon - 2); - sendData(Settings.display_volume << 8, SoundAddr + 1); - sendData(map(constrain(Settings.display_volume, 0, 255), 0, 255, 0, 100), VolumeDisplay); - sendData(Settings.screen_brightness, DisplayBrightness); - sendData(Settings.standby_screen_brightness, DisplayStandbyBrightness); - sendData(Settings.standby_time_seconds, DisplayStandbySeconds); - if (Settings.display_standby) - sendData(3, DisplayStandbyEnableIndicator); - else - sendData(2, DisplayStandbyEnableIndicator); -} +#include "../ui_api.h" namespace ExtUI { - void onStartup() { rts.onStartup(); } +uint8_t dwin_settings_version = 1; - void onIdle() { rts.onIdle(); } +void onStartup() { rts.onStartup(); } - void onPrinterKilled(FSTR_P const error, FSTR_P const component) { - rts.sendData(ExchangePageBase + 88, ExchangepageAddr); - int16_t j = 0; - char outmsg[40]; - char killMsg[strlen_P(FTOP(error)) + strlen_P(FTOP(component)) + 3]; - sprintf_P(killMsg, PSTR(S_FMT ": " S_FMT), FTOP(error), FTOP(component)); - while (j < 4) outmsg[j++] = '*'; - while (const char c = killMsg[j - 4]) outmsg[j++] = c; - while (j < 40) outmsg[j++] = '*'; - rts.sendData(outmsg, MacVersion); - delay_ms(10); +void onIdle() { rts.onIdle(); } + +void onPrinterKilled(FSTR_P const error, FSTR_P const component) { + rts.sendData(ExchangePageBase + 88, ExchangepageAddr); + int16_t j = 0; + char outmsg[40]; + char killMsg[strlen_P(FTOP(error)) + strlen_P(FTOP(component)) + 3]; + sprintf_P(killMsg, PSTR(S_FMT ": " S_FMT), FTOP(error), FTOP(component)); + while (j < 4) outmsg[j++] = '*'; + while (const char c = killMsg[j - 4]) outmsg[j++] = c; + while (j < 40) outmsg[j++] = '*'; + rts.sendData(outmsg, MacVersion); + delay_ms(10); +} + +void onMediaInserted() { + filenavigator.reset(); + filenavigator.getFiles(0); + fileIndex = 0; + recordcount = 0; +} + +void onMediaError() { + filenavigator.reset(); + for (int16_t i = 0; i < MaxFileNumber; i++) + for (int16_t j = 0; j < 10; j++) rts.sendData(0, SDFILE_ADDR + i * 10 + j); + + for (int16_t j = 0; j < 10; j++) { + rts.sendData(0, Printfilename + j); // clean screen. + rts.sendData(0, Choosefilename + j); // clean filename } - - void onMediaInserted() { - filenavigator.reset(); - filenavigator.getFiles(0); - fileIndex = 0; - recordcount = 0; + for (int16_t j = 0; j < 8; j++) rts.sendData(0, FilenameCount + j); + for (int16_t j = 1; j <= MaxFileNumber; j++) { + rts.sendData(10, FilenameIcon + j); + rts.sendData(10, FilenameIcon1 + j); } +} - void onMediaError() { - filenavigator.reset(); - for (int16_t i = 0; i < MaxFileNumber; i++) - for (int16_t j = 0; j < 10; j++) rts.sendData(0, SDFILE_ADDR + i * 10 + j); +void onMediaRemoved() { + filenavigator.reset(); + for (int16_t i = 0; i < MaxFileNumber; i++) + for (int16_t j = 0; j < 10; j++) rts.sendData(0, SDFILE_ADDR + i * 10 + j); - for (int16_t j = 0; j < 10; j++) { - rts.sendData(0, Printfilename + j); // clean screen. - rts.sendData(0, Choosefilename + j); // clean filename + for (int16_t j = 0; j < 10; j++) { + rts.sendData(0, Printfilename + j); // clean screen. + rts.sendData(0, Choosefilename + j); // clean filename + } + for (int16_t j = 0; j < 8; j++) rts.sendData(0, FilenameCount + j); + for (int16_t j = 1; j <= MaxFileNumber; j++) { + rts.sendData(10, FilenameIcon + j); + rts.sendData(10, FilenameIcon1 + j); + } +} + +void onPlayTone(const uint16_t frequency, const uint16_t duration) { + rts.sendData(StartSoundSet, SoundAddr); +} + +void onPrintTimerStarted() { + if (waitway == 7) return; + printerStatusKey[1] = 3; + show_status = true; + delay_ms(1); + rts.sendData(ExchangePageBase + 53, ExchangepageAddr); +} + +void onPrintTimerPaused() { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); // Display Pause Screen + onStatusChanged(F("Pausing...")); +} + +void onPrintTimerStopped() { + if (waitway == 3) return; + + #if FAN_COUNT > 0 + for (uint8_t i = 0; i < FAN_COUNT; i++) setTargetFan_percent(FanOff, (fan_t)i); + #endif + + printerStatusKey[0] = 0; + show_status = true; + tpShowStatus = false; + rts.sendData(ExchangePageBase + 51, ExchangepageAddr); +} + +void onFilamentRunout() { + printerStatusKey[1] = 4; + tpShowStatus = false; + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); +} + +void onFilamentRunout(extruder_t extruder) { + printerStatusKey[1] = 4; + tpShowStatus = false; + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); +} + +void onUserConfirmRequired(const char *const msg) { + printerStatusKey[1] = 4; + tpShowStatus = false; + if (lastPauseMsgState == ExtUI::pauseModeStatus && msg == (const char*)GET_TEXT_F(MSG_FILAMENT_CHANGE_LOAD)) + return; + + switch (ExtUI::pauseModeStatus) { + case PAUSE_MESSAGE_WAITING: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Press Yes to Continue")); + break; } - for (int16_t j = 0; j < 8; j++) rts.sendData(0, FilenameCount + j); - for (int16_t j = 1; j <= MaxFileNumber; j++) { - rts.sendData(10, FilenameIcon + j); - rts.sendData(10, FilenameIcon1 + j); + case PAUSE_MESSAGE_INSERT: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Load Filament to Continue")); + break; } - } - - void onMediaRemoved() { - filenavigator.reset(); - for (int16_t i = 0; i < MaxFileNumber; i++) - for (int16_t j = 0; j < 10; j++) rts.sendData(0, SDFILE_ADDR + i * 10 + j); - - for (int16_t j = 0; j < 10; j++) { - rts.sendData(0, Printfilename + j); // clean screen. - rts.sendData(0, Choosefilename + j); // clean filename + case PAUSE_MESSAGE_HEAT: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Add Filament and Press Yes to Reheat")); + break; } - for (int16_t j = 0; j < 8; j++) rts.sendData(0, FilenameCount + j); - for (int16_t j = 1; j <= MaxFileNumber; j++) { - rts.sendData(10, FilenameIcon + j); - rts.sendData(10, FilenameIcon1 + j); - } - } - void onPlayTone(const uint16_t frequency, const uint16_t duration) { - rts.sendData(StartSoundSet, SoundAddr); - } - - void onPrintTimerStarted() { - if (waitway == 7) return; - PrinterStatusKey[1] = 3; - InforShowStatus = true; - delay_ms(1); - rts.sendData(ExchangePageBase + 53, ExchangepageAddr); - } - - void onPrintTimerPaused() { - rts.sendData(ExchangePageBase + 78, ExchangepageAddr); // Display Pause Screen - onStatusChanged(F("Pausing...")); - } - - void onPrintTimerStopped() { - if (waitway == 3) return; - - #if FAN_COUNT > 0 - for (uint8_t i = 0; i < FAN_COUNT; i++) setTargetFan_percent(FanOff, (fan_t)i); - #endif - - PrinterStatusKey[0] = 0; - InforShowStatus = true; - TPShowStatus = false; - rts.sendData(ExchangePageBase + 51, ExchangepageAddr); - } - - void onFilamentRunout() { - PrinterStatusKey[1] = 4; - TPShowStatus = false; - rts.sendData(ExchangePageBase + 78, ExchangepageAddr); - } - - void onFilamentRunout(extruder_t extruder) { - PrinterStatusKey[1] = 4; - TPShowStatus = false; - rts.sendData(ExchangePageBase + 78, ExchangepageAddr); - } - - void onUserConfirmRequired(const char *const msg) { - PrinterStatusKey[1] = 4; - TPShowStatus = false; - if (lastPauseMsgState == ExtUI::pauseModeStatus && msg == (const char*)GET_TEXT_F(MSG_FILAMENT_CHANGE_LOAD)) - return; - - switch (ExtUI::pauseModeStatus) { - case PAUSE_MESSAGE_WAITING: { - rts.sendData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Press Yes to Continue")); - break; - } - case PAUSE_MESSAGE_INSERT: { - rts.sendData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Load Filament to Continue")); - break; - } - case PAUSE_MESSAGE_HEAT: { - rts.sendData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Add Filament and Press Yes to Reheat")); - break; - } - - #if DISABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE) - case PAUSE_MESSAGE_PURGE: { - rts.sendData(ExchangePageBase + 78, ExchangepageAddr); - char newMsg[40] = "Yes to "; - strcat_P(newMsg, TERN1(FILAMENT_RUNOUT_SENSOR, !ExtUI::getFilamentRunoutState() && getFilamentRunoutEnabled()) ? PSTR("Continue") : PSTR("Disable ")); - strcat_P(newMsg, PSTR(" No to Purge")); - onStatusChanged(newMsg); - break; - } - #endif - - case PAUSE_MESSAGE_OPTION: { + #if DISABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE) + case PAUSE_MESSAGE_PURGE: { rts.sendData(ExchangePageBase + 78, ExchangepageAddr); char newMsg[40] = "Yes to "; strcat_P(newMsg, TERN1(FILAMENT_RUNOUT_SENSOR, !ExtUI::getFilamentRunoutState() && getFilamentRunoutEnabled()) ? PSTR("Continue") : PSTR("Disable ")); @@ -1873,221 +172,231 @@ namespace ExtUI { onStatusChanged(newMsg); break; } + #endif - case PAUSE_MESSAGE_PARKING: { - rts.sendData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Parking...")); - break; - } - case PAUSE_MESSAGE_CHANGING: { - rts.sendData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Beginning Filament Change")); - break; - } - case PAUSE_MESSAGE_UNLOAD: { - rts.sendData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Unloading...")); - break; - } - case PAUSE_MESSAGE_LOAD: { - rts.sendData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Reloading...")); - break; - } - case PAUSE_MESSAGE_RESUME: - #if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE) - case PAUSE_MESSAGE_PURGE: { - rts.sendData(ExchangePageBase + 78, ExchangepageAddr); - onStatusChanged(F("Press Yes to Stop Purge")); - break; - } - #endif - - case PAUSE_MESSAGE_HEATING: { - rts.sendData(ExchangePageBase + 68, ExchangepageAddr); - onStatusChanged(F("Reheating")); - break; - } - - case PAUSE_MESSAGE_STATUS: - default: { - setPauseMenuResponse(PAUSE_RESPONSE_RESUME_PRINT); - setUserConfirmed(); - break; - } + case PAUSE_MESSAGE_OPTION: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + char newMsg[40] = "Yes to "; + strcat_P(newMsg, TERN1(FILAMENT_RUNOUT_SENSOR, !ExtUI::getFilamentRunoutState() && getFilamentRunoutEnabled()) ? PSTR("Continue") : PSTR("Disable ")); + strcat_P(newMsg, PSTR(" No to Purge")); + onStatusChanged(newMsg); + break; } - lastPauseMsgState = ExtUI::pauseModeStatus; + + case PAUSE_MESSAGE_PARKING: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Parking...")); + break; + } + case PAUSE_MESSAGE_CHANGING: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Beginning Filament Change")); + break; + } + case PAUSE_MESSAGE_UNLOAD: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Unloading...")); + break; + } + case PAUSE_MESSAGE_LOAD: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Reloading...")); + break; + } + case PAUSE_MESSAGE_RESUME: + #if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE) + case PAUSE_MESSAGE_PURGE: { + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); + onStatusChanged(F("Press Yes to Stop Purge")); + break; + } + #endif + + case PAUSE_MESSAGE_HEATING: { + rts.sendData(ExchangePageBase + 68, ExchangepageAddr); + onStatusChanged(F("Reheating")); + break; + } + + case PAUSE_MESSAGE_STATUS: + default: { + setPauseMenuResponse(PAUSE_RESPONSE_RESUME_PRINT); + setUserConfirmed(); + break; + } + } + lastPauseMsgState = ExtUI::pauseModeStatus; +} + +void onStatusChanged(const char *const statMsg) { + for (int16_t j = 0; j < 20; j++) // Clear old message + rts.sendData(' ', StatusMessageString + j); + rts.sendData(statMsg, StatusMessageString); +} + +void onFactoryReset() { + dwin_settings.settings_size = sizeof(creality_dwin_settings_t); + dwin_settings.settings_version = dwin_settings_version; + dwin_settings.display_standby = true; + dwin_settings.display_sound = true; + dwin_settings.display_volume = 32; + dwin_settings.standby_brightness = 15; + dwin_settings.screen_brightness = 100; + dwin_settings.standby_time_seconds = 60; + dwin_settings.screen_rotation = 0; + onStartup(); + startprogress = 0; + show_status = true; +} + +void onMeshUpdate(const int8_t xpos, const int8_t ypos, probe_state_t state) {} + +void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval) { + if (waitway == 3) + if (isPositionKnown() && (getActualTemp_celsius(BED) >= (getTargetTemp_celsius(BED) - 1))) + rts.sendData(ExchangePageBase + 64, ExchangepageAddr); + #if HAS_MESH + uint8_t abl_probe_index = 0; + for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) + for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { + const bool zig = outer & 1; // != ((PR_OUTER_END) & 1); + const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; + if (point.x == xpos && outer == ypos) + rts.sendData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + (abl_probe_index * 2)); + ++abl_probe_index; + } + #endif +} + +void onStoreSettings(char *buff) { + static_assert( + ExtUI::eeprom_data_size >= sizeof(creality_dwin_settings_t), + "Insufficient space in EEPROM for UI parameters" + ); + + // Write to buffer + memcpy(buff, &dwin_settings, sizeof(creality_dwin_settings_t)); +} + +void onLoadSettings(const char *buff) { + static_assert( + ExtUI::eeprom_data_size >= sizeof(creality_dwin_settings_t), + "Insufficient space in EEPROM for UI parameters" + ); + + creality_dwin_settings_t eepromSettings; + memcpy(&eepromSettings, buff, sizeof(creality_dwin_settings_t)); + + // If size is not the same, discard settings + if (eepromSettings.settings_size != sizeof(creality_dwin_settings_t)) { + onFactoryReset(); + return; } - void onStatusChanged(const char *const statMsg) { - for (int16_t j = 0; j < 20; j++) // Clear old message - rts.sendData(' ', StatusMessageString + j); - rts.sendData(statMsg, StatusMessageString); + if (eepromSettings.settings_version != dwin_settings_version) { + onFactoryReset(); + return; } - void onFactoryReset() { - Settings.settings_size = sizeof(creality_dwin_settings_t); - Settings.settings_version = dwin_settings_version; - Settings.display_standby = true; - Settings.display_sound = true; - Settings.display_volume = 32; - Settings.standby_screen_brightness = 15; - Settings.screen_brightness = 100; - Settings.standby_time_seconds = 60; - Settings.screen_rotation = 0; - onStartup(); - startprogress = 0; - InforShowStatus = true; - } + // Copy into final location + memcpy(&dwin_settings, &eepromSettings, sizeof(creality_dwin_settings_t)); - void onMeshUpdate(const int8_t xpos, const int8_t ypos, probe_state_t state) {} + rts.setTouchScreenConfiguration(); +} - void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval) { - if (waitway == 3) - if (isPositionKnown() && (getActualTemp_celsius(BED) >= (getTargetTemp_celsius(BED) - 1))) - rts.sendData(ExchangePageBase + 64, ExchangepageAddr); - #if HAS_MESH +void onSettingsStored(const bool success) { + // This is called after the entire EEPROM has been written, + // whether successful or not. +} + +void onSettingsLoaded(const bool success) { + #if HAS_MESH + if (ExtUI::getMeshValid()) { uint8_t abl_probe_index = 0; for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { - const bool zig = outer & 1; // != ((PR_OUTER_END) & 1); + const bool zig = outer & 1; const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; - if (point.x == xpos && outer == ypos) - rts.sendData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + (abl_probe_index * 2)); + rts.sendData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + (abl_probe_index * 2)); ++abl_probe_index; } - #endif - } - void onStoreSettings(char *buff) { - static_assert( - ExtUI::eeprom_data_size >= sizeof(creality_dwin_settings_t), - "Insufficient space in EEPROM for UI parameters" - ); - - // Write to buffer - memcpy(buff, &Settings, sizeof(creality_dwin_settings_t)); - } - - void onLoadSettings(const char *buff) { - static_assert( - ExtUI::eeprom_data_size >= sizeof(creality_dwin_settings_t), - "Insufficient space in EEPROM for UI parameters" - ); - - creality_dwin_settings_t eepromSettings; - memcpy(&eepromSettings, buff, sizeof(creality_dwin_settings_t)); - - // If size is not the same, discard settings - if (eepromSettings.settings_size != sizeof(creality_dwin_settings_t)) { - onFactoryReset(); - return; + rts.sendData(3, AutoLevelIcon); // 2=On, 3=Off + setLevelingActive(true); } - - if (eepromSettings.settings_version != dwin_settings_version) { - onFactoryReset(); - return; - } - - // Copy into final location - memcpy(&Settings, &eepromSettings, sizeof(creality_dwin_settings_t)); - - rts.setTouchScreenConfiguration(); - } - - void onSettingsStored(const bool success) { - // This is called after the entire EEPROM has been written, - // whether successful or not. - } - - void onSettingsLoaded(const bool success) { - #if HAS_MESH - if (ExtUI::getMeshValid()) { - uint8_t abl_probe_index = 0; - for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) - for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { - const bool zig = outer & 1; - const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; - rts.sendData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + (abl_probe_index * 2)); - ++abl_probe_index; - } - - rts.sendData(3, AutoLevelIcon); // 2=On, 3=Off - setLevelingActive(true); - } - else { - rts.sendData(2, AutoLevelIcon); /*Off*/ - setLevelingActive(false); - } - #endif - - rts.sendData(getZOffset_mm() * 100, ProbeOffset_Z); - rts.setTouchScreenConfiguration(); - } - - #if ENABLED(POWER_LOSS_RECOVERY) - void onSetPowerLoss(const bool onoff) { - // Called when power-loss is enabled/disabled - } - void onPowerLoss() { - // Called when power-loss state is detected - } - void onPowerLossResume() { - startprogress = 254; - InforShowStatus = true; - TPShowStatus = false; - reEntryPrevent = false; - rts.sendData(ExchangePageBase + 76, ExchangepageAddr); + else { + rts.sendData(2, AutoLevelIcon); /*Off*/ + setLevelingActive(false); } #endif - #if HAS_PID_HEATING - void onPidTuning(const result_t rst) { - // Called for temperature PID tuning result - rts.sendData(pid_hotendAutoTemp, HotendPID_AutoTmp); - rts.sendData(pid_bedAutoTemp, BedPID_AutoTmp); - rts.sendData(uint16_t(getPID_Kp(E0)) * 10, HotendPID_P); - rts.sendData(uint16_t(getPID_Ki(E0)) * 10, HotendPID_I); - rts.sendData(uint16_t(getPID_Kd(E0)) * 10, HotendPID_D); - #if ENABLED(PIDTEMPBED) - rts.sendData(uint16_t(getBedPID_Kp()) * 10, BedPID_P); - rts.sendData(uint16_t(getBedPID_Ki()) * 10, BedPID_I); - rts.sendData(uint16_t(getBedPID_Kd()) * 10, BedPID_D); - #endif - onStatusChanged(F("PID Tune Finished")); + rts.sendData(getZOffset_mm() * 100, ProbeOffset_Z); + rts.setTouchScreenConfiguration(); +} + +#if ENABLED(POWER_LOSS_RECOVERY) + void onSetPowerLoss(const bool onoff) { + // Called when power-loss is enabled/disabled + } + void onPowerLoss() { + // Called when power-loss state is detected + } + void onPowerLossResume() { + startprogress = 254; + show_status = true; + tpShowStatus = false; + no_reentry = false; + rts.sendData(ExchangePageBase + 76, ExchangepageAddr); + } +#endif + +#if HAS_PID_HEATING + void onPidTuning(const result_t rst) { + // Called for temperature PID tuning result + rts.sendData(pid_hotendAutoTemp, HotendPID_AutoTmp); + rts.sendData(pid_bedAutoTemp, BedPID_AutoTmp); + rts.sendData(uint16_t(getPID_Kp(E0)) * 10, HotendPID_P); + rts.sendData(uint16_t(getPID_Ki(E0)) * 10, HotendPID_I); + rts.sendData(uint16_t(getPID_Kd(E0)) * 10, HotendPID_D); + #if ENABLED(PIDTEMPBED) + rts.sendData(uint16_t(getBedPID_Kp()) * 10, BedPID_P); + rts.sendData(uint16_t(getBedPID_Ki()) * 10, BedPID_I); + rts.sendData(uint16_t(getBedPID_Kd()) * 10, BedPID_D); + #endif + onStatusChanged(F("PID Tune Finished")); + } +#endif + +void onLevelingStart() {} + +void onLevelingDone() { + #if HAS_MESH + if (ExtUI::getMeshValid()) { + uint8_t abl_probe_index = 0; + for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) + for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { + const bool zig = outer & 1; + const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; + rts.sendData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + abl_probe_index * 2); + ++abl_probe_index; + } + + rts.sendData(3, AutoLevelIcon); // 2=On, 3=Off + setLevelingActive(true); + } + else { + rts.sendData(2, AutoLevelIcon); /*Off*/ + setLevelingActive(false); } #endif +} - void onLevelingStart() {} - - void onLevelingDone() { - #if HAS_MESH - if (ExtUI::getMeshValid()) { - uint8_t abl_probe_index = 0; - for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) - for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { - const bool zig = outer & 1; - const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; - rts.sendData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + abl_probe_index * 2); - ++abl_probe_index; - } - - rts.sendData(3, AutoLevelIcon); // 2=On, 3=Off - setLevelingActive(true); - } - else { - rts.sendData(2, AutoLevelIcon); /*Off*/ - setLevelingActive(false); - } - #endif - } - - void onSteppersEnabled() {} - void onPrintDone() {} - void onHomingStart() {} - void onHomingDone() {} - void onSteppersDisabled() {} - void onPostprocessSettings() {} +void onSteppersEnabled() {} +void onPrintDone() {} +void onHomingStart() {} +void onHomingDone() {} +void onSteppersDisabled() {} +void onPostprocessSettings() {} } // namespace ExtUI diff --git a/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp b/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp new file mode 100644 index 0000000000..37ba539ff1 --- /dev/null +++ b/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp @@ -0,0 +1,1730 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/* **************************************** + * lcd/extui/ia_creality/ia_creality_rts.cpp + * **************************************** + * Creality DWIN Resistive Touch Screen + * 10SPro, Max, CRX, and others + * Based original Creality release + * Written by Insanity Automation, sponsored by Tiny Machines 3D + * + * ***************************************/ + +#include "../../../inc/MarlinConfigPre.h" + +#if DGUS_LCD_UI_IA_CREALITY + +#include "ia_creality_rts.h" +#include "FileNavigator.h" +#include "../ui_api.h" + +using namespace ExtUI; + +#include // for memset + +// Singleton instance +RTS rts; + +// Static data +DB RTS::recdat, RTS::snddat; +uint8_t RTS::databuf[DATA_BUF_SIZE]; +rx_datagram_state_t RTS::rx_datagram_state = DGUS_IDLE; +uint8_t RTS::rx_datagram_len = 0; + +// Local data +uint16_t fileIndex = 0; +uint8_t recordcount = 0; +uint8_t waitway_lock = 0; +uint8_t startprogress = 0; + +char waitway = 0; +int16_t recnum = 0; +float changeMaterialBuf[2] = { 0 }; +char nozzleTempStatus[3] = { 0 }; +char printerStatusKey[2] = { 0 }; + +uint8_t axisPageNum = 0; // 0 for 10mm, 1 for 1mm, 2 for 0.1mm +bool show_status = true; +bool tpShowStatus = false; // true for only opening time and percentage, false for closing time and percentage. +bool autoHomeKey = false; +uint8_t autoHomeIconNum; +int16_t userConfValidation = 0; +uint8_t lastPauseMsgState = 0; + +creality_dwin_settings_t dwin_settings; + +bool no_reentry = false; +uint8_t reentryCount = 0; +uint16_t idleThrottling = 0; + +bool pause_resume_selected = false; + +#if HAS_PID_HEATING + uint16_t pid_hotendAutoTemp = 150; + uint16_t pid_bedAutoTemp = 70; +#endif + +#ifndef IA_CREALITY_BOOT_DELAY + #define IA_CREALITY_BOOT_DELAY 500 +#endif + +void RTS::onStartup() { + DWIN_SERIAL.begin(115200); + recdat.head[0] = snddat.head[0] = FHONE; + recdat.head[1] = snddat.head[1] = FHTWO; + ZERO(databuf); + + delay_ms(IA_CREALITY_BOOT_DELAY); // Delay to allow screen startup + setTouchScreenConfiguration(); + sendData(StartSoundSet, SoundAddr); + delay_ms(400); // Delay to allow screen to configure + + onStatusChanged(MACHINE_NAME " Ready"); + + sendData(100, FeedrateDisplay); + + /***************turn off motor*****************/ + sendData(11, FilenameIcon); + + /***************transmit temperature to screen*****************/ + sendData(0, NozzlePreheat); + sendData(0, BedPreheat); + sendData(getActualTemp_celsius(H0), NozzleTemp); + sendData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); + sendData(getActualTemp_celsius(BED), Bedtemp); + /***************transmit Fan speed to screen*****************/ + sendData(getActualFan_percent((fan_t)getActiveTool()), FanKeyIcon); + + /***************transmit Printer information to screen*****************/ + for (int16_t j = 0; j < 20; j++) // clean filename + sendData(0, MacVersion + j); + char sizebuf[20] = {0}; + sprintf(sizebuf, "%d X %d X %d", Y_BED_SIZE, X_BED_SIZE, Z_MAX_POS); + sendData(MACHINE_NAME, MacVersion); + sendData(SHORT_BUILD_VERSION, SoftVersion); + sendData(sizebuf, PrinterSize); + sendData(WEBSITE_URL, CorpWebsite); + + /**************************some info init*******************************/ + sendData(0, PrintscheduleIcon); + sendData(0, PrintscheduleIcon + 1); + + /************************clean screen*******************************/ + for (int16_t i = 0; i < MaxFileNumber; i++) + for (int16_t j = 0; j < 10; j++) sendData(0, SDFILE_ADDR + i * 10 + j); + + for (int16_t j = 0; j < 10; j++) { + sendData(0, Printfilename + j); // clean screen. + sendData(0, Choosefilename + j); // clean filename + } + for (int16_t j = 0; j < 8; j++) sendData(0, FilenameCount + j); + for (int16_t j = 1; j <= MaxFileNumber; j++) { + sendData(10, FilenameIcon + j); + sendData(10, FilenameIcon1 + j); + } +} + +void RTS::onIdle() { + while (rts.receiveData() > 0 && (rts.recdat.data[0] != 0 || rts.recdat.addr != 0)) + rts.handleData(); + + if (no_reentry && reentryCount < 120) { reentryCount++; return; } + reentryCount = 0; + + if (idleThrottling++ < 750) return; + + // Always send temperature data + rts.sendData(getActualTemp_celsius(getActiveTool()), NozzleTemp); + rts.sendData(getActualTemp_celsius(BED), Bedtemp); + rts.sendData(getTargetTemp_celsius(getActiveTool()), NozzlePreheat); + rts.sendData(getTargetTemp_celsius(BED), BedPreheat); + rts.sendData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); + rts.sendData(TERN0(HAS_MULTI_HOTEND, getTargetTemp_celsius(H1)), e2Preheat); + TERN_(HAS_MULTI_HOTEND, rts.sendData(uint8_t(getActiveTool() + 1), ActiveToolVP)); + + if (awaitingUserConfirm() && (lastPauseMsgState != ExtUI::pauseModeStatus || userConfValidation > 99)) { + switch (ExtUI::pauseModeStatus) { + case PAUSE_MESSAGE_PARKING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_PAUSE_PRINT_PARKING)); break; + case PAUSE_MESSAGE_CHANGING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_INIT)); break; + case PAUSE_MESSAGE_UNLOAD: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_UNLOAD)); break; + case PAUSE_MESSAGE_WAITING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_ADVANCED_PAUSE_WAITING)); break; + case PAUSE_MESSAGE_INSERT: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_INSERT)); break; + case PAUSE_MESSAGE_LOAD: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_LOAD)); break; + case PAUSE_MESSAGE_PURGE: ExtUI::onUserConfirmRequired(GET_TEXT_F(TERN(ADVANCED_PAUSE_CONTINUOUS_PURGE, MSG_FILAMENT_CHANGE_CONT_PURGE, MSG_FILAMENT_CHANGE_PURGE))); break; + case PAUSE_MESSAGE_RESUME: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_RESUME)); break; + case PAUSE_MESSAGE_HEAT: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEAT)); break; + case PAUSE_MESSAGE_HEATING: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEATING)); break; + case PAUSE_MESSAGE_OPTION: ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_OPTION_HEADER)); break; + case PAUSE_MESSAGE_STATUS: break; + default: onUserConfirmRequired(PSTR("Confirm Continue")); break; + } + userConfValidation = 0; + } + else if (pause_resume_selected && !awaitingUserConfirm()) { + rts.sendData(ExchangePageBase + 53, ExchangepageAddr); + pause_resume_selected = false; + userConfValidation = 0; + } + else if (awaitingUserConfirm()) { + if (pause_resume_selected) { + pause_resume_selected = false; + userConfValidation = 100; + } + else + userConfValidation++; + } + + no_reentry = true; + idleThrottling = 0; + if (waitway && !commandsInQueue()) + waitway_lock++; + else + waitway_lock = 0; + + if (waitway_lock > 100) { + waitway_lock = 0; + waitway = 0; // clear waitway if nothing is going on + } + + switch (waitway) { + case 1: + if (isPositionKnown()) { + show_status = true; + rts.sendData(ExchangePageBase + 54, ExchangepageAddr); + waitway = 0; + } + break; + + case 2: + if (isPositionKnown() && !commandsInQueue()) waitway = 0; + break; + + case 3: + //if(isPositionKnown() && (getActualTemp_celsius(BED) >= (getTargetTemp_celsius(BED)-1))) { + rts.sendData(ExchangePageBase + 64, ExchangepageAddr); + waitway = 7; + //return; + //} + break; + + case 4: + if (autoHomeKey && isPositionKnown() && !commandsInQueue()) { // Manual Move Home Done + //rts.sendData(ExchangePageBase + 71 + axisPageNum, ExchangepageAddr); + autoHomeKey = false; + waitway = 0; + } + break; + case 5: + if (isPositionKnown() && !commandsInQueue()) { + show_status = true; + waitway = 0; + rts.sendData(ExchangePageBase + 78, ExchangepageAddr); // exchange to 78 page + } + break; + case 6: + if (!commandsInQueue()) { + setAxisPosition_mm(BED_TRAMMING_HEIGHT, axis_t(Z)); + waitway = 0; + } + break; + case 7: + if (!commandsInQueue()) waitway = 0; + break; + } + + TERN_(HAS_MESH, rts.sendData(getLevelingActive() ? 3 : 2, AutoLevelIcon)); + TERN_(HAS_FILAMENT_SENSOR, rts.sendData(getFilamentRunoutEnabled() ? 3 : 2, RunoutToggle)); + TERN_(CASE_LIGHT_ENABLE, rts.sendData(getCaseLightState() ? 3 : 2, LedToggle)); + TERN_(POWER_LOSS_RECOVERY, rts.sendData(getPowerLossRecoveryEnabled() ? 3 : 2, PowerLossToggle)); + + if (startprogress == 0) { + startprogress += 25; + delay_ms(3000); // Delay to show bootscreen + } + else if (startprogress < 250) { + if (isMediaInserted()) // Re init media as it happens too early on STM32 boards often + onMediaInserted(); + else + injectCommands(F("M22\nM21")); + startprogress = 254; + show_status = true; + tpShowStatus = false; + rts.sendData(ExchangePageBase + 45, ExchangepageAddr); + no_reentry = false; + return; + } + if (startprogress <= 100) + rts.sendData(startprogress, StartIcon); + else + rts.sendData(startprogress - 100, StartIcon + 1); + + //rts.sendData((startprogress++) % 5, ExchFlmntIcon); + + if (isPrinting()) { + rts.sendData(getActualFan_percent((fan_t)getActiveTool()), FanKeyIcon); + rts.sendData(getProgress_seconds_elapsed() / 3600, Timehour); + rts.sendData((getProgress_seconds_elapsed() % 3600) / 60, Timemin); + if (getProgress_percent() > 0) { + const uint16_t perc = getProgress_percent() + 1; + if (perc <= 50) { + rts.sendData(uint16_t(perc) * 2, PrintscheduleIcon); + rts.sendData(0, PrintscheduleIcon + 1); + } + else { + rts.sendData(100, PrintscheduleIcon); + rts.sendData(uint16_t(perc) * 2 - 100, PrintscheduleIcon + 1); + } + } + else { + rts.sendData(0, PrintscheduleIcon); + rts.sendData(0, PrintscheduleIcon + 1); + } + rts.sendData(uint16_t(getProgress_percent()), Percentage); + } + else { // Not printing settings + rts.sendData(map(constrain(dwin_settings.display_volume, 0, 255), 0, 255, 0, 100), VolumeDisplay); + rts.sendData(dwin_settings.screen_brightness, DisplayBrightness); + rts.sendData(dwin_settings.standby_brightness, DisplayStandbyBrightness); + rts.sendData(dwin_settings.standby_time_seconds, DisplayStandbySeconds); + if (dwin_settings.display_standby) + rts.sendData(3, DisplayStandbyEnableIndicator); + else + rts.sendData(2, DisplayStandbyEnableIndicator); + + rts.sendData(getAxisSteps_per_mm(X) * 10, StepMM_X); + rts.sendData(getAxisSteps_per_mm(Y) * 10, StepMM_Y); + rts.sendData(getAxisSteps_per_mm(Z) * 10, StepMM_Z); + rts.sendData(getAxisSteps_per_mm(E0) * 10, StepMM_E); + + rts.sendData(getAxisMaxAcceleration_mm_s2(X) / 100, Accel_X); + rts.sendData(getAxisMaxAcceleration_mm_s2(Y) / 100, Accel_Y); + rts.sendData(getAxisMaxAcceleration_mm_s2(Z) / 10, Accel_Z); + rts.sendData(getAxisMaxAcceleration_mm_s2(E0), Accel_E); + + rts.sendData(getAxisMaxFeedrate_mm_s(X), Feed_X); + rts.sendData(getAxisMaxFeedrate_mm_s(Y), Feed_Y); + rts.sendData(getAxisMaxFeedrate_mm_s(Z), Feed_Z); + rts.sendData(getAxisMaxFeedrate_mm_s(E0), Feed_E); + + rts.sendData(getAxisMaxJerk_mm_s(X) * 100, Jerk_X); + rts.sendData(getAxisMaxJerk_mm_s(Y) * 100, Jerk_Y); + rts.sendData(getAxisMaxJerk_mm_s(Z) * 100, Jerk_Z); + rts.sendData(getAxisMaxJerk_mm_s(E0) * 100, Jerk_E); + + #if HAS_HOTEND_OFFSET + rts.sendData(getNozzleOffset_mm(X, E1) * 10, T2Offset_X); + rts.sendData(getNozzleOffset_mm(Y, E1) * 10, T2Offset_Y); + rts.sendData(getNozzleOffset_mm(Z, E1) * 10, T2Offset_Z); + rts.sendData(getAxisSteps_per_mm(E1) * 10, T2StepMM_E); + #endif + + #if HAS_BED_PROBE + rts.sendData(getProbeOffset_mm(X) * 100, ProbeOffset_X); + rts.sendData(getProbeOffset_mm(Y) * 100, ProbeOffset_Y); + #endif + + #if HAS_PID_HEATING + rts.sendData(pid_hotendAutoTemp, HotendPID_AutoTmp); + rts.sendData(pid_bedAutoTemp, BedPID_AutoTmp); + rts.sendData(getPID_Kp(E0) * 10, HotendPID_P); + rts.sendData(getPID_Ki(E0) * 10, HotendPID_I); + rts.sendData(getPID_Kd(E0) * 10, HotendPID_D); + #if ENABLED(PIDTEMPBED) + rts.sendData(getBedPID_Kp() * 10, BedPID_P); + rts.sendData(getBedPID_Ki() * 10, BedPID_I); + rts.sendData(getBedPID_Kd() * 10, BedPID_D); + #endif + #endif + } + + rts.sendData(getZOffset_mm() * 100, ProbeOffset_Z); + rts.sendData(uint16_t(getFlow_percent(E0)), Flowrate); + + if (nozzleTempStatus[0] || nozzleTempStatus[2]) { // statuse of loadfilament and unloadfinement when temperature is less than + uint16_t IconTemp = getActualTemp_celsius(getActiveTool()) * 100 / getTargetTemp_celsius(getActiveTool()); + NOMORE(IconTemp, 100U); + rts.sendData(IconTemp, HeatPercentIcon); + if (getActualTemp_celsius(getActiveTool()) > EXTRUDE_MINTEMP && nozzleTempStatus[0] != 0) { + nozzleTempStatus[0] = 0; + rts.sendData(10 * changeMaterialBuf[0], FilamentUnit1); + rts.sendData(10 * changeMaterialBuf[1], FilamentUnit2); + rts.sendData(ExchangePageBase + 65, ExchangepageAddr); + } + else if (getActualTemp_celsius(getActiveTool()) >= getTargetTemp_celsius(getActiveTool()) && nozzleTempStatus[2]) { + nozzleTempStatus[2] = 0; + tpShowStatus = true; + rts.sendData(4, ExchFlmntIcon); + rts.sendData(ExchangePageBase + 83, ExchangepageAddr); + } + else if (nozzleTempStatus[2]) { + //rts.sendData((startprogress++) % 5, ExchFlmntIcon); + } + } + + if (autoHomeKey) { + rts.sendData(autoHomeIconNum, AutoZeroIcon); + if (++autoHomeIconNum > 9) autoHomeIconNum = 0; + } + + if (isMediaInserted()) { + const uint16_t currPage = fileIndex == 0 ? 1 : CEIL(float(fileIndex) / float(DISPLAY_FILES)) + 1, + maxPageAdd = filenavigator.folderdepth ? 1 : 0, + maxPages = CEIL(float(filenavigator.maxFiles() + maxPageAdd) / float(DISPLAY_FILES) ); + + rts.sendData(currPage, FilesCurentPage); + rts.sendData(maxPages, FilesMaxPage); + } + else { + rts.sendData(0, FilesCurentPage); + rts.sendData(0, FilesMaxPage); + } + + if (rts.recdat.addr != DisplayZaxis && rts.recdat.addr != DisplayYaxis && rts.recdat.addr != DisplayZaxis) { + rts.sendData(10 * getAxisPosition_mm(axis_t(X)), DisplayXaxis); + rts.sendData(10 * getAxisPosition_mm(axis_t(Y)), DisplayYaxis); + rts.sendData(10 * getAxisPosition_mm(axis_t(Z)), DisplayZaxis); + } + no_reentry = false; +} + +RTS::RTS() { + recdat.head[0] = snddat.head[0] = FHONE; + recdat.head[1] = snddat.head[1] = FHTWO; + ZERO(databuf); +} + +int16_t RTS::receiveData() { + uint8_t receivedbyte; + while (DWIN_SERIAL.available()) + switch (rx_datagram_state) { + + case DGUS_IDLE: // Waiting for the first header byte + receivedbyte = DWIN_SERIAL.read(); + if (FHONE == receivedbyte) rx_datagram_state = DGUS_HEADER1_SEEN; + break; + + case DGUS_HEADER1_SEEN: // Waiting for the second header byte + receivedbyte = DWIN_SERIAL.read(); + rx_datagram_state = (FHTWO == receivedbyte) ? DGUS_HEADER2_SEEN : DGUS_IDLE; + break; + + case DGUS_HEADER2_SEEN: // Waiting for the length byte + rx_datagram_len = DWIN_SERIAL.read(); + //DEBUGLCDCOMM_ECHOPGM(" (", rx_datagram_len, ") "); + + // Telegram min len is 3 (command and one word of payload) + rx_datagram_state = WITHIN(rx_datagram_len, 3, DGUS_RX_BUFFER_SIZE) ? DGUS_WAIT_TELEGRAM : DGUS_IDLE; + break; + + case DGUS_WAIT_TELEGRAM: // wait for complete datagram to arrive. + if (DWIN_SERIAL.available() < rx_datagram_len) return -1; + + uint8_t command = DWIN_SERIAL.read(); + + //DEBUGLCDCOMM_ECHOPGM("# ", command); + + uint8_t readlen = rx_datagram_len - 1; // command is part of len. + uint8_t tmp[rx_datagram_len - 1]; + uint8_t *ptmp = tmp; + while (readlen--) { + receivedbyte = DWIN_SERIAL.read(); + //DEBUGLCDCOMM_ECHOPGM(" ", receivedbyte); + *ptmp++ = receivedbyte; + } + //DEBUGLCDCOMM_ECHOPGM(" # "); + // mostly we'll get this: 5A A5 03 82 4F 4B -- ACK on 0x82, so discard it. + if (command == VarAddr_W && 'O' == tmp[0] && 'K' == tmp[1]) { + rx_datagram_state = DGUS_IDLE; + break; + } + + /* AutoUpload, (and answer to) Command 0x83 : + | tmp[0 1 2 3 4 ... ] + | Example 5A A5 06 83 20 01 01 78 01 …… + | / / | | \ / | \ \ + | Header | | | | \_____\_ DATA (Words!) + | DatagramLen / VPAdr | + | Command DataLen (in Words) */ + if (command == VarAddr_R) { + const uint16_t vp = tmp[0] << 8 | tmp[1]; + + const uint8_t dlen = tmp[2] << 1; // Convert to Bytes. (Display works with words) + recdat.addr = vp; + recdat.len = tmp[2]; + for (uint16_t i = 0; i < dlen; i += 2) { + recdat.data[i / 2] = tmp[3 + i]; + recdat.data[i / 2] = (recdat.data[i / 2] << 8 ) | tmp[4 + i]; + } + + rx_datagram_state = DGUS_IDLE; + return 2; + break; + } + + // discard anything else + rx_datagram_state = DGUS_IDLE; + } + return -1; +} + +void RTS::sendData() { + if (snddat.head[0] == FHONE && snddat.head[1] == FHTWO && snddat.len >= 3) { + databuf[0] = snddat.head[0]; + databuf[1] = snddat.head[1]; + databuf[2] = snddat.len; + databuf[3] = snddat.command; + if (snddat.command == 0x80) { // to write data to the register + databuf[4] = snddat.addr; + for (int16_t i = 0; i < (snddat.len - 2); i++) databuf[5 + i] = snddat.data[i]; + } + else if (snddat.len == 3 && (snddat.command == 0x81)) { // to read data from the register + databuf[4] = snddat.addr; + databuf[5] = snddat.bytelen; + } + else if (snddat.command == 0x82) { // to write data to the variate + databuf[4] = snddat.addr >> 8; + databuf[5] = snddat.addr & 0xFF; + for (int16_t i = 0; i < (snddat.len - 3); i += 2) { + databuf[6 + i] = snddat.data[i / 2] >> 8; + databuf[7 + i] = snddat.data[i / 2] & 0xFF; + } + } + else if (snddat.len == 4 && (snddat.command == 0x83)) { // to read data from the variate + databuf[4] = snddat.addr >> 8; + databuf[5] = snddat.addr & 0xFF; + databuf[6] = snddat.bytelen; + } + for (int16_t i = 0; i < (snddat.len + 3); i++) { + DWIN_SERIAL.write(databuf[i]); + delay_us(1); + } + + memset(&snddat, 0, sizeof(snddat)); + ZERO(databuf); + snddat.head[0] = FHONE; + snddat.head[1] = FHTWO; + } +} + +void RTS::sendData(const String &s, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { + if (s.length() < 1) return; + sendData(s.c_str(), addr, cmd); +} + +void RTS::sendData(const char *str, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { + int16_t len = strlen(str); + constexpr int16_t maxlen = DATA_BUF_SIZE - 6; + if (len > 0) { + if (len > maxlen) len = maxlen; + databuf[0] = FHONE; + databuf[1] = FHTWO; + databuf[2] = 3 + len; + databuf[3] = cmd; + databuf[4] = addr >> 8; + databuf[5] = addr & 0x00FF; + for (int16_t i = 0; i < len; i++) databuf[6 + i] = str[i]; + + for (int16_t i = 0; i < (len + 6); i++) { + DWIN_SERIAL.write(databuf[i]); + delay_us(1); + } + ZERO(databuf); + } +} + +void RTS::sendData(const char c, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { + snddat.command = cmd; + snddat.addr = addr; + snddat.data[0] = uint32_t(uint16_t(c) << 8); + snddat.len = 5; + sendData(); +} + +void RTS::sendData(const_float_t f, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { + int16_t n = f; + if (cmd == VarAddr_W) { + snddat.data[0] = n; + snddat.len = 5; + } + else if (cmd == RegAddr_W) { + snddat.data[0] = n; + snddat.len = 3; + } + else if (cmd == VarAddr_R) { + snddat.bytelen = n; + snddat.len = 4; + } + snddat.command = cmd; + snddat.addr = addr; + sendData(); +} + +void RTS::sendData(const int n, const uint32_t addr, const uint8_t cmd/*=VarAddr_W*/) { + if (cmd == VarAddr_W) { + if ((unsigned int)n > 0xFFFF) { + snddat.data[0] = n >> 16; + snddat.data[1] = n & 0xFFFF; + snddat.len = 7; + } + else { + snddat.data[0] = n; + snddat.len = 5; + } + } + else if (cmd == RegAddr_W) { + snddat.data[0] = n; + snddat.len = 3; + } + else if (cmd == VarAddr_R) { + snddat.bytelen = n; + snddat.len = 4; + } + snddat.command = cmd; + snddat.addr = addr; + sendData(); +} + +void RTS::sendData(const unsigned long n, uint32_t addr, uint8_t cmd/*=VarAddr_W*/) { + if (cmd == VarAddr_W) { + if (n > 0xFFFF) { + snddat.data[0] = n >> 16; + snddat.data[1] = n & 0xFFFF; + //snddat.data[0] = n >> 24; + //snddat.data[1] = n >> 16; + //snddat.data[2] = n >> 8; + //snddat.data[3] = n; + snddat.len = 7; + } + else { + snddat.data[0] = n; + snddat.len = 5; + } + } + else if (cmd == VarAddr_R) { + snddat.bytelen = n; + snddat.len = 4; + } + snddat.command = cmd; + snddat.addr = addr; + sendData(); +} + +void RTS::handleData() { + int16_t Checkkey = -1; + if (waitway > 0) { // for waiting + memset(&recdat, 0, sizeof(recdat)); + recdat.head[0] = FHONE; + recdat.head[1] = FHTWO; + return; + } + for (int16_t i = 0; Addrbuf[i] != 0; i++) + if (recdat.addr == Addrbuf[i]) { + if (Addrbuf[i] == NzBdSet || Addrbuf[i] == NozzlePreheat || Addrbuf[i] == BedPreheat || Addrbuf[i] == Flowrate) + Checkkey = ManualSetTemp; + else if (WITHIN(Addrbuf[i], Stopprint, Resumeprint)) + Checkkey = PrintChoice; + else if (WITHIN(Addrbuf[i], AutoZero, DisplayZaxis)) + Checkkey = XYZEaxis; + else if (WITHIN(Addrbuf[i], FilamentUnit1, FilamentUnit2)) + Checkkey = Filament; + else + Checkkey = i; + break; + } + + switch (recdat.addr) { + case Flowrate: + case StepMM_X ... StepMM_E: + case ProbeOffset_X ... ProbeOffset_Y: + case HotendPID_AutoTmp ... BedPID_AutoTmp: + case HotendPID_P ... HotendPID_D: + case BedPID_P ... BedPID_D: + case T2Offset_X ... T2StepMM_E: + case Accel_X ... Accel_E: + case Feed_X ... Feed_E: + case Jerk_X ... Jerk_E: + case RunoutToggle: + case PowerLossToggle: + case FanKeyIcon: + case LedToggle: + case e2Preheat: Checkkey = ManualSetTemp; break; + case ProbeOffset_Z: Checkkey = Zoffset_Value; break; + case VolumeDisplay: Checkkey = VolumeDisplay; break; + case DisplayBrightness: Checkkey = DisplayBrightness; break; + case DisplayStandbyBrightness: Checkkey = DisplayStandbyBrightness; break; + case DisplayStandbySeconds: Checkkey = DisplayStandbySeconds; break; + default: + if (WITHIN(recdat.addr, AutolevelVal, 4400)) // (int16_t(AutolevelVal) + GRID_MAX_POINTS * 2) = 4400 with 5x5 mesh + Checkkey = AutolevelVal; + else if (WITHIN(recdat.addr, SDFILE_ADDR, SDFILE_ADDR + 10 * (FileNum + 1))) + Checkkey = Filename; + break; + } + + if (Checkkey < 0) { + memset(&recdat, 0, sizeof(recdat)); + recdat.head[0] = FHONE; + recdat.head[1] = FHTWO; + return; + } + + constexpr float lfrb[4] = BED_TRAMMING_INSET_LFRB; + + switch (Checkkey) { + case Printfile: + if (recdat.data[0] == 1) { // card + show_status = false; + filenavigator.getFiles(0); + fileIndex = 0; + recordcount = 0; + sendData(ExchangePageBase + 46, ExchangepageAddr); + } + else if (recdat.data[0] == 2) { // return after printing result. + show_status = true; + tpShowStatus = false; + stopPrint(); + injectCommands(F("M84")); + sendData(11, FilenameIcon); + sendData(0, PrintscheduleIcon); + sendData(0, PrintscheduleIcon + 1); + sendData(0, Percentage); + delay_ms(2); + sendData(0, Timehour); + sendData(0, Timemin); + + sendData(ExchangePageBase + 45, ExchangepageAddr); // exchange to 45 page + } + else if (recdat.data[0] == 3) { // Temperature control + show_status = true; + tpShowStatus = false; + if (getTargetFan_percent((fan_t)getActiveTool()) == 0) + sendData(ExchangePageBase + 58, ExchangepageAddr); // exchange to 58 page, the fans off + else + sendData(ExchangePageBase + 57, ExchangepageAddr); // exchange to 57 page, the fans on + } + else if (recdat.data[0] == 4) { // Settings + show_status = false; + } + break; + + case Adjust: + if (recdat.data[0] == 1) { + show_status = false; + } + else if (recdat.data[0] == 2) { + show_status = true; + if (printerStatusKey[1] == 3) // during heating + sendData(ExchangePageBase + 53, ExchangepageAddr); + else if (printerStatusKey[1] == 4) + sendData(ExchangePageBase + 54, ExchangepageAddr); + else + sendData(ExchangePageBase + 53, ExchangepageAddr); + } + else if (recdat.data[0] == 3) + setTargetFan_percent(getTargetFan_percent((fan_t)getActiveTool()) != 0 ? 100 : 0, FAN0); + + break; + + case Feedrate: + setFeedrate_percent(recdat.data[0]); + break; + + case PrintChoice: + if (recdat.addr == Stopprint) { + if (recdat.data[0] == 240) { // no + sendData(ExchangePageBase + 53, ExchangepageAddr); + } + else { + sendData(ExchangePageBase + 45, ExchangepageAddr); + sendData(0, Timehour); + sendData(0, Timemin); + stopPrint(); + } + } + else if (recdat.addr == Pauseprint) { + if (recdat.data[0] != 0xF1) + break; + + sendData(ExchangePageBase + 54, ExchangepageAddr); + pausePrint(); + } + else if (recdat.addr == Resumeprint && recdat.data[0] == 1) { + resumePrint(); + + printerStatusKey[1] = 0; + show_status = true; + + sendData(ExchangePageBase + 53, ExchangepageAddr); + } + if (recdat.addr == Resumeprint && recdat.data[0] == 2) { // warming + resumePrint(); + nozzleTempStatus[2] = 1; + printerStatusKey[1] = 0; + show_status = true; + sendData(ExchangePageBase + 82, ExchangepageAddr); + } + break; + + case Zoffset: + float tmp_zprobe_offset; + if (recdat.data[0] >= 32768) + tmp_zprobe_offset = (float(recdat.data[0]) - 65536) / 100; + else + tmp_zprobe_offset = float(recdat.data[0]) / 100; + if (WITHIN((tmp_zprobe_offset), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { + int16_t tmpSteps = mmToWholeSteps(getZOffset_mm() - tmp_zprobe_offset, axis_t(Z)); + if (tmpSteps == 0) tmpSteps = getZOffset_mm() < tmp_zprobe_offset ? 1 : -1; + smartAdjustAxis_steps(-tmpSteps, axis_t(Z), false); + char zOffs[20], tmp1[11]; + sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); + onStatusChanged(zOffs); + } + else { + onStatusChanged(F("Requested Offset Beyond Limits")); + } + + sendData(getZOffset_mm() * 100, ProbeOffset_Z); + break; + + case TempControl: + if (recdat.data[0] == 0) { + show_status = true; + tpShowStatus = false; + } + else if (recdat.data[0] == 1) { + if (getTargetFan_percent((fan_t)getActiveTool()) == 0) + sendData(ExchangePageBase + 60, ExchangepageAddr); // exchange to 60 page, the fans off + else + sendData(ExchangePageBase + 59, ExchangepageAddr); // exchange to 59 page, the fans on + } + else if (recdat.data[0] == 2) { + show_status = true; + } + else if (recdat.data[0] == 3) { + if (getTargetFan_percent((fan_t)getActiveTool()) == 0) { // turn on the fan + setTargetFan_percent(100, FAN0); + sendData(ExchangePageBase + 57, ExchangepageAddr); // exchange to 57 page, the fans on + } + else { // turn off the fan + setTargetFan_percent(0, FAN0); + sendData(ExchangePageBase + 58, ExchangepageAddr); // exchange to 58 page, the fans on + } + } + else if (recdat.data[0] == 5) { // PLA mode + setTargetTemp_celsius(PREHEAT_1_TEMP_HOTEND, getActiveTool()); + setTargetTemp_celsius(PREHEAT_1_TEMP_BED, BED); + sendData(PREHEAT_1_TEMP_HOTEND, NozzlePreheat); + sendData(PREHEAT_1_TEMP_BED, BedPreheat); + } + else if (recdat.data[0] == 6) { // ABS mode + setTargetTemp_celsius(PREHEAT_2_TEMP_HOTEND, getActiveTool()); + setTargetTemp_celsius(PREHEAT_2_TEMP_BED, BED); + sendData(PREHEAT_2_TEMP_HOTEND, NozzlePreheat); + sendData(PREHEAT_2_TEMP_BED, BedPreheat); + } + else if (recdat.data[0] == 0xF1) { + //show_status = true; + #if FAN_COUNT > 0 + for (uint8_t i = 0; i < FAN_COUNT; i++) setTargetFan_percent(0, (fan_t)i); + #endif + setTargetTemp_celsius(0.0, H0); + TERN_(HAS_MULTI_HOTEND, setTargetTemp_celsius(0.0, H1)); + setTargetTemp_celsius(0.0, BED); + sendData(0, NozzlePreheat); delay_ms(1); + sendData(0, BedPreheat); delay_ms(1); + sendData(ExchangePageBase + 57, ExchangepageAddr); + printerStatusKey[1] = 2; + } + break; + + case ManualSetTemp: + if (recdat.addr == NzBdSet) { + if (recdat.data[0] == 0) { + if (getTargetFan_percent((fan_t)getActiveTool()) == 0) + sendData(ExchangePageBase + 58, ExchangepageAddr); // exchange to 58 page, the fans off + else + sendData(ExchangePageBase + 57, ExchangepageAddr); // exchange to 57 page, the fans on + } + else if (recdat.data[0] == 1) { + setTargetTemp_celsius(0.0, getActiveTool()); + sendData(0, NozzlePreheat); + } + else if (recdat.data[0] == 2) { + setTargetTemp_celsius(0.0, BED); + sendData(0, BedPreheat); + } + } + else if (recdat.addr == NozzlePreheat) { + setTargetTemp_celsius(float(recdat.data[0]), H0); + } + #if HAS_MULTI_HOTEND + else if (recdat.addr == e2Preheat) { + setTargetTemp_celsius(float(recdat.data[0]), H1); + } + #endif + else if (recdat.addr == BedPreheat) { + setTargetTemp_celsius(float(recdat.data[0]), BED); + } + else if (recdat.addr == Flowrate) { + setFlow_percent(int16_t(recdat.data[0]), getActiveTool()); + } + + #if HAS_PID_HEATING + else if (recdat.addr == HotendPID_AutoTmp) { + pid_hotendAutoTemp = uint16_t(recdat.data[0]); + } + else if (recdat.addr == BedPID_AutoTmp) { + pid_bedAutoTemp = uint16_t(recdat.data[0]); + } + #endif + + else if (recdat.addr == Accel_X) { + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 100, X); + } + else if (recdat.addr == Accel_Y) { + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 100, Y); + } + else if (recdat.addr == Accel_Z) { + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]) * 10, Z); + } + else if (recdat.addr == Accel_E) { + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]), E0); + setAxisMaxAcceleration_mm_s2(uint16_t(recdat.data[0]), E1); + } + + else if (recdat.addr == Feed_X) { + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), X); + } + else if (recdat.addr == Feed_Y) { + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), Y); + } + else if (recdat.addr == Feed_Z) { + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), Z); + } + else if (recdat.addr == Feed_E) { + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), E0); + setAxisMaxFeedrate_mm_s(uint16_t(recdat.data[0]), E1); + } + else if (recdat.addr == FanKeyIcon) { + setTargetFan_percent(uint16_t(recdat.data[0]), (fan_t)getActiveTool()); + } + else { + float tmp_float_handling; + if (recdat.data[0] >= 32768) + tmp_float_handling = (float(recdat.data[0]) - 65536) / 100; + else + tmp_float_handling = float(recdat.data[0]) / 100; + if (recdat.addr == StepMM_X) { + setAxisSteps_per_mm(tmp_float_handling * 10, X); + } + else if (recdat.addr == StepMM_Y) { + setAxisSteps_per_mm(tmp_float_handling * 10, Y); + } + else if (recdat.addr == StepMM_Z) { + setAxisSteps_per_mm(tmp_float_handling * 10, Z); + } + else if (recdat.addr == StepMM_E) { + setAxisSteps_per_mm(tmp_float_handling * 10, E0); + #if DISABLED(DUAL_X_CARRIAGE) + setAxisSteps_per_mm(tmp_float_handling * 10, E1); + #endif + } + #if ENABLED(DUAL_X_CARRIAGE) + else if (recdat.addr == T2StepMM_E) { + setAxisSteps_per_mm(tmp_float_handling * 10, E1); + } + else if (recdat.addr == T2Offset_X) { + setNozzleOffset_mm(tmp_float_handling * 10, X, E1); + } + else if (recdat.addr == T2Offset_Y) { + setNozzleOffset_mm(tmp_float_handling * 10, Y, E1); + } + else if (recdat.addr == T2Offset_Z) { + setNozzleOffset_mm(tmp_float_handling * 10, Z, E1); + } + #endif + #if HAS_BED_PROBE + else if (recdat.addr == ProbeOffset_X) { + setProbeOffset_mm(tmp_float_handling, X); + } + else if (recdat.addr == ProbeOffset_Y) { + setProbeOffset_mm(tmp_float_handling, Y); + } + else if (recdat.addr == ProbeOffset_Z) { + setProbeOffset_mm(tmp_float_handling, Z); + } + #endif + + #if ENABLED(CLASSIC_JERK) + else if (recdat.addr == Jerk_X) { + setAxisMaxJerk_mm_s(tmp_float_handling, X); + } + else if (recdat.addr == Jerk_Y) { + setAxisMaxJerk_mm_s(tmp_float_handling, Y); + } + else if (recdat.addr == Jerk_Z) { + setAxisMaxJerk_mm_s(tmp_float_handling, Z); + } + else if (recdat.addr == Jerk_E) { + setAxisMaxJerk_mm_s(tmp_float_handling, E0); + setAxisMaxJerk_mm_s(tmp_float_handling, E1); + } + #endif + + #if HAS_FILAMENT_SENSOR + else if (recdat.addr == RunoutToggle) { + setFilamentRunoutEnabled(!getFilamentRunoutEnabled()); + } + #endif + + #if ENABLED(POWER_LOSS_RECOVERY) + else if (recdat.addr == PowerLossToggle) { + setPowerLossRecoveryEnabled(!getPowerLossRecoveryEnabled()); + } + #endif + + #if ENABLED(CASE_LIGHT_ENABLE) + else if (recdat.addr == LedToggle) { + setCaseLightState(!getCaseLightState()); + } + #endif + + #if HAS_PID_HEATING + else if (recdat.addr == HotendPID_P) { + setPID(tmp_float_handling * 10, getPID_Ki(getActiveTool()), getPID_Kd(getActiveTool()), getActiveTool()); + } + else if (recdat.addr == HotendPID_I) { + setPID(getPID_Kp(getActiveTool()), tmp_float_handling * 10, getPID_Kd(getActiveTool()), getActiveTool()); + } + else if (recdat.addr == HotendPID_D) { + setPID(getPID_Kp(getActiveTool()), getPID_Ki(getActiveTool()), tmp_float_handling * 10, getActiveTool()); + } + #if ENABLED(PIDTEMPBED) + else if (recdat.addr == BedPID_P) { + setBedPID(tmp_float_handling * 10, getBedPID_Ki(), getBedPID_Kd()); + } + else if (recdat.addr == BedPID_I) { + setBedPID(getBedPID_Kp(), tmp_float_handling * 10, getBedPID_Kd()); + } + else if (recdat.addr == BedPID_D) { + setBedPID(getBedPID_Kp(), getBedPID_Ki(), tmp_float_handling * 10); + } + #endif + #endif // HAS_PID_HEATING + } + break; + + case Setting: + if (recdat.data[0] == 0) { // return to main page + show_status = true; + tpShowStatus = false; + } + else if (recdat.data[0] == 1) { // Bed Autoleveling + #if HAS_MESH + sendData(getLevelingActive() ? 3 : 2, AutoLevelIcon); + + if (ExtUI::getMeshValid()) { + uint8_t abl_probe_index = 0; + for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) + for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { + const bool zig = outer & 1; + const xy_uint8_t point = { uint8_t(zig ? (GRID_MAX_POINTS_X - 1) - inner : inner), outer }; + sendData(ExtUI::getMeshPoint(point) * 1000, AutolevelVal + abl_probe_index * 2); + ++abl_probe_index; + } + } + #endif + sendData(10, FilenameIcon); // Motor Icon + injectCommands(isPositionKnown() ? F("G1F1000Z0.0") : F("G28\nG1F1000Z0.0")); + waitway = 2; + sendData(ExchangePageBase + 64, ExchangepageAddr); + } + else if (recdat.data[0] == 2) { // Exchange filament + show_status = true; + tpShowStatus = false; + ZERO(changeMaterialBuf); + changeMaterialBuf[1] = changeMaterialBuf[0] = 10; + sendData(10 * changeMaterialBuf[0], FilamentUnit1); // It's changeMaterialBuf for show, instead of current_position.e in them. + sendData(10 * changeMaterialBuf[1], FilamentUnit2); + sendData(getActualTemp_celsius(H0), NozzleTemp); + sendData(getTargetTemp_celsius(H0), NozzlePreheat); + sendData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); + sendData(TERN0(HAS_MULTI_HOTEND, getTargetTemp_celsius(H1)), e2Preheat); + delay_ms(2); + sendData(ExchangePageBase + 65, ExchangepageAddr); + } + else if (recdat.data[0] == 3) { // Move + axisPageNum = 0; + sendData(ExchangePageBase + 71, ExchangepageAddr); + } + else if (recdat.data[0] == 4) { // Language + // Just loads language screen, now used for tools + } + else if (recdat.data[0] == 5) { // Printer Information + sendData(WEBSITE_URL, CorpWebsite); + } + else if (recdat.data[0] == 6) { // Diabalestepper + injectCommands(F("M84")); + sendData(11, FilenameIcon); + } + break; + + case ReturnBack: + if (recdat.data[0] == 1) { // return to the tool page + show_status = false; + sendData(ExchangePageBase + 63, ExchangepageAddr); + } + if (recdat.data[0] == 2) // return to the Level mode page + sendData(ExchangePageBase + 64, ExchangepageAddr); + break; + + case Bedlevel: + switch (recdat.data[0]) { + case 1: { // Z-axis to home + // Disallow Z homing if X or Y are unknown + injectCommands(isAxisPositionKnown(axis_t(X)) && isAxisPositionKnown(axis_t(Y)) ? F("G28Z\nG1F1500Z0.0") : F("G28\nG1F1500Z0.0")); + sendData(getZOffset_mm() * 100, ProbeOffset_Z); + break; + } + case 2: { // Z-axis to Up + if (WITHIN((getZOffset_mm() + 0.1), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { + smartAdjustAxis_steps(getAxisSteps_per_mm(Z) / 10, axis_t(Z), false); + //setZOffset_mm(getZOffset_mm() + 0.1); + sendData(getZOffset_mm() * 100, ProbeOffset_Z); + char zOffs[20], tmp1[11]; + sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); + onStatusChanged(zOffs); + } + break; + } + case 3: { // Z-axis to Down + if (WITHIN((getZOffset_mm() - 0.1), Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { + smartAdjustAxis_steps(-getAxisSteps_per_mm(Z) / 10, axis_t(Z), false); + //babystepAxis_steps(int16_t(-getAxisSteps_per_mm(Z)) / 10, axis_t(Z)); + //setZOffset_mm(getZOffset_mm() - 0.1); + sendData(getZOffset_mm() * 100, ProbeOffset_Z); + char zOffs[20], tmp1[11]; + sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); + onStatusChanged(zOffs); + } + break; + } + case 4: { // Assistant Level + TERN_(HAS_MESH, setLevelingActive(false)); + injectCommands(isPositionKnown() ? F("G1 F1000 Z0.0") : F("G28\nG1 F1000 Z0.0")); + waitway = 2; + sendData(ExchangePageBase + 84, ExchangepageAddr); + break; + } + case 5: { // AutoLevel "Measuring" Button + #if ENABLED(MESH_BED_LEVELING) + sendData(ExchangePageBase + 93, ExchangepageAddr); + #else + waitway = 3; // only for prohibiting to receive massage + sendData(3, AutolevelIcon); + uint8_t abl_probe_index = 0; + while (abl_probe_index < 25) { + sendData(0, AutolevelVal + abl_probe_index * 2); + ++abl_probe_index; + } + sendData(ExchangePageBase + 64, ExchangepageAddr); + injectCommands(F(MEASURING_GCODE)); + #endif + break; + } + + case 6: { // Assitant Level , Centre 1 + setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); + setAxisPosition_mm(X_CENTER, axis_t(X)); + setAxisPosition_mm(Y_CENTER, axis_t(Y)); + waitway = 6; + break; + } + case 7: { // Assitant Level , Front Left 2 + setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); + setAxisPosition_mm(X_MIN_BED + lfrb[0], axis_t(X)); + setAxisPosition_mm(Y_MIN_BED + lfrb[1], axis_t(Y)); + waitway = 6; + break; + } + case 8: { // Assitant Level , Front Right 3 + setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); + setAxisPosition_mm(X_MAX_BED - lfrb[2], axis_t(X)); + setAxisPosition_mm(Y_MIN_BED + lfrb[1], axis_t(Y)); + waitway = 6; + break; + } + case 9: { // Assitant Level , Back Right 4 + setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); + setAxisPosition_mm(X_MAX_BED - lfrb[2], axis_t(X)); + setAxisPosition_mm(Y_MAX_BED - lfrb[3], axis_t(Y)); + waitway = 6; + break; + } + case 10: { // Assitant Level , Back Left 5 + setAxisPosition_mm(BED_TRAMMING_Z_HOP, axis_t(Z)); + setAxisPosition_mm(X_MIN_BED + lfrb[0], axis_t(X)); + setAxisPosition_mm(Y_MAX_BED - lfrb[3], axis_t(Y)); + waitway = 6; + break; + } + case 11: { // Autolevel switch + #if HAS_MESH + const bool gla = !getLevelingActive(); + setLevelingActive(gla); + sendData(gla ? 3 : 2, AutoLevelIcon); + #endif + sendData(getZOffset_mm() * 100, ProbeOffset_Z); + break; + } + case 12: { + injectCommands(F("G26R255")); + onStatusChanged(F("Beginning G26.. Heating")); + break; + } + case 13: { + injectCommands(F("G29S1")); + onStatusChanged(F("Begin Manual Mesh")); + break; + } + case 14: { + injectCommands(F("G29S2")); + onStatusChanged(F("Moving to Next Mesh Point")); + break; + } + case 15: { + injectCommands(F("M211S0\nG91\nG1Z-0.025\nG90\nM211S1")); + onStatusChanged(F("Moved down 0.025")); + break; + } + case 16: { + injectCommands(F("M211S0\nG91\nG1Z0.025\nG90\nM211S1")); + onStatusChanged(F("Moved up 0.025")); + break; + } + case 17: { + dwin_settings.display_volume = 0; + dwin_settings.display_sound = false; + setTouchScreenConfiguration(); + break; + } + case 18: { + dwin_settings.display_volume = 255; + dwin_settings.display_sound = true; + setTouchScreenConfiguration(); + break; + } + case 19: { + dwin_settings.screen_brightness = 10; + setTouchScreenConfiguration(); + break; + } + case 20: { + dwin_settings.screen_brightness = 100; + setTouchScreenConfiguration(); + break; + } + case 21: { + dwin_settings.display_standby ^= true; + setTouchScreenConfiguration(); + break; + } + case 22: { + dwin_settings.screen_rotation = dwin_settings.screen_rotation == 10 ? 0 : 10; + setTouchScreenConfiguration(); + break; + } + case 23: { // Set IDEX Autopark + injectCommands(F("M605S1\nG28X\nG1X0")); + break; + } + case 24: { // Set IDEX Duplication + injectCommands(F("M605S1\nT0\nG28\nM605S2\nG28X\nG1X0")); + break; + } + case 25: { // Set IDEX Mirrored Duplication + injectCommands(F("M605S1\nT0\nG28\nM605S2\nG28X\nG1X0\nM605S3")); + break; + } + case 26: { // Set IDEX Full Control + injectCommands(F("M605S0\nG28X")); + break; + } + case 27: { // Change Tool + setActiveTool(getActiveTool() == E0 ? E1 : E0, !isAxisPositionKnown(X)); + break; + } + default: break; + } + + sendData(10, FilenameIcon); + break; + + case XYZEaxis: { + axis_t axis = X; + float min = 0.0f, max = 0.0f; + waitway = 4; + if (recdat.addr == DisplayXaxis) { + axis = X; + min = X_MIN_POS; + max = X_MAX_POS; + } + else if (recdat.addr == DisplayYaxis) { + axis = Y; + min = Y_MIN_POS; + max = Y_MAX_POS; + } + else if (recdat.addr == DisplayZaxis) { + axis = Z; + min = Z_MIN_POS; + max = Z_MAX_POS; + } + else if (recdat.addr == AutoZero) { + if (recdat.data[0] == 3) { // autohome + waitway = 4; + injectCommands(F("G28\nG1 F1000 Z10")); + show_status = autoHomeKey = true; + autoHomeIconNum = 0; + sendData(10, FilenameIcon); + } + else { + axisPageNum = recdat.data[0]; + waitway = 0; + } + break; + } + + float targetPos = float(recdat.data[0]) / 10; + LIMIT(targetPos, min, max); + setAxisPosition_mm(targetPos, axis); + waitway = 0; + sendData(10, FilenameIcon); + break; + } + + case Filament: + + uint16_t IconTemp; + if (recdat.addr == Exchfilament) { + if (getActualTemp_celsius(getActiveTool()) < EXTRUDE_MINTEMP && recdat.data[0] < 5) { + sendData(int16_t(EXTRUDE_MINTEMP), 0x1020); + delay_ms(5); + sendData(ExchangePageBase + 66, ExchangepageAddr); + break; + } + + switch (recdat.data[0]) { + case 1: { // Unload filament1 + setAxisPosition_mm(getAxisPosition_mm(E0) - changeMaterialBuf[0], E0); + break; + } + case 2: { // Load filament1 + setAxisPosition_mm(getAxisPosition_mm(E0) + changeMaterialBuf[0], E0); + break; + } + case 3: { // Unload filament2 + setAxisPosition_mm(getAxisPosition_mm(E1) - changeMaterialBuf[1], E1); + break; + } + case 4: { // Load filament2 + setAxisPosition_mm(getAxisPosition_mm(E1) + changeMaterialBuf[1], E1); + break; + } + case 5: { // sure to heat + nozzleTempStatus[0] = 1; + + setTargetTemp_celsius((PREHEAT_1_TEMP_HOTEND + 10), getActiveTool()); + IconTemp = getActualTemp_celsius(getActiveTool()) * 100 / getTargetTemp_celsius(getActiveTool()); + NOMORE(IconTemp, 100U); + sendData(IconTemp, HeatPercentIcon); + + sendData(getActualTemp_celsius(H0), NozzleTemp); + sendData(getTargetTemp_celsius(H0), NozzlePreheat); + sendData(TERN0(HAS_MULTI_HOTEND, getActualTemp_celsius(H1)), e2Temp); + sendData(TERN0(HAS_MULTI_HOTEND, getTargetTemp_celsius(H1)), e2Preheat); + delay_ms(5); + sendData(ExchangePageBase + 68, ExchangepageAddr); + break; + } + case 6: { // cancel to heat + sendData(ExchangePageBase + 65, ExchangepageAddr); + break; + } + case 0xF1: { // Sure to cancel heating + nozzleTempStatus[0] = 0; + delay_ms(1); + sendData(ExchangePageBase + 65, ExchangepageAddr); + break; + } + case 0xF0: // not to cancel heating + break; + } + sendData(10 * changeMaterialBuf[0], FilamentUnit1); // It's changeMaterialBuf for show, instead of current_position.e in them. + sendData(10 * changeMaterialBuf[1], FilamentUnit2); + } + else if (recdat.addr == FilamentUnit1) { + changeMaterialBuf[0] = float(recdat.data[0]) / 10; + } + else if (recdat.addr == FilamentUnit2) { + changeMaterialBuf[1] = float(recdat.data[0]) / 10; + } + break; + + case LanguageChoice: + + //if (recdat.data[0] == 1) settings.save(); else injectCommands(F("M300")); + + // may at some point use language change screens to save eeprom explicitly + switch (recdat.data[0]) { + case 0: { + injectCommands(F("M500")); + break; + } + case 1: { + sendData(ExchangePageBase + 94, ExchangepageAddr); + break; + } + + #if ENABLED(PIDTEMP) + case 2: { + onStatusChanged(F("Hotend PID Started")); + startPIDTune(static_cast(pid_hotendAutoTemp), getActiveTool()); + break; + } + #endif + + case 3: { + injectCommands(F("M502\nM500")); + break; + } + case 4: { + injectCommands(F("M999\nM280P0S160")); + break; + } + + case 5: { + #if ENABLED(PIDTEMPBED) + onStatusChanged(F("Bed PID Started")); + startBedPIDTune(static_cast(pid_bedAutoTemp)); + #endif + break; + } + case 6: { + injectCommands(F("M500")); + break; + } + default: break; + } + break; + + case No_Filament: + if (recdat.data[0] == 1) { // Filament is out, resume / resume selected on screen + if (ExtUI::pauseModeStatus != PAUSE_MESSAGE_PURGE && ExtUI::pauseModeStatus != PAUSE_MESSAGE_OPTION) { + // setPauseMenuResponse(PAUSE_RESPONSE_RESUME_PRINT); + setUserConfirmed(); + // printerStatusKey[1] = 3; + // pause_resume_selected = true; + } + else { + #if ENABLED(FILAMENT_RUNOUT_SENSOR) + bool runouton = false; + if (getFilamentRunoutState()) { + #if NUM_RUNOUT_SENSORS > 1 + if ((runouton = getFilamentRunoutEnabled(getActiveTool()))) + ExtUI::setFilamentRunoutEnabled(false, getActiveTool()); + #else + if ((runouton = getFilamentRunoutEnabled())) + ExtUI::setFilamentRunoutEnabled(false); + #endif + } + #else + constexpr bool runouton = false; + #endif + if (!runouton) { + setPauseMenuResponse(PAUSE_RESPONSE_RESUME_PRINT); + setUserConfirmed(); + printerStatusKey[1] = 3; + pause_resume_selected = true; + } + } + } + else if (recdat.data[0] == 0) { // Filamet is out, Cancel Selected + if (ExtUI::pauseModeStatus == PAUSE_MESSAGE_PURGE || ExtUI::pauseModeStatus == PAUSE_MESSAGE_OPTION) { + setPauseMenuResponse(PAUSE_RESPONSE_EXTRUDE_MORE); + setUserConfirmed(); + } + } + break; + + #if ENABLED(POWER_LOSS_RECOVERY) + case PwrOffNoF: + if (recdat.data[0] == 1) // Yes: continue to print the 3Dmode during power-off. + injectCommands(F("M1000")); + else if (recdat.data[0] == 2) // No + injectCommands(F("M1000C")); + break; + #endif + + case Volume: + if (recdat.data[0] < 0) + dwin_settings.display_volume = 0; + else if (recdat.data[0] > 255) + dwin_settings.display_volume = 0xFF; + else + dwin_settings.display_volume = recdat.data[0]; + + if (dwin_settings.display_volume == 0) { + sendData(0, VolumeIcon); + sendData(9, SoundIcon); + } + else { + sendData((dwin_settings.display_volume + 1) / 32 - 1, VolumeIcon); + sendData(8, SoundIcon); + } + sendData(dwin_settings.display_volume << 8, SoundAddr + 1); + break; + + case Filename: + if (isMediaInserted() && recdat.addr == FilenameChs) { + + recordcount = recdat.data[0] - 1; + if (filenavigator.currentindex == 0 && filenavigator.folderdepth > 0 && (fileIndex + recordcount) == 0) { + filenavigator.upDIR(); + filenavigator.getFiles(0); + fileIndex = 0; + return; + } + + if (filenavigator.currentindex == 0 && filenavigator.folderdepth > 0) + recordcount = recordcount - 1; // account for return dir link in file index + + for (int16_t j = 1; j <= 4; j++) { // Clear filename BG Color and Frame + sendData(0xFFFFUL, FilenameNature + j * 16); // white + sendData(10, FilenameIcon1 + j); // clean + } + for (int16_t j = 0; j < 10; j++) // clear current filename + sendData(0, Choosefilename + j); + + if (filenavigator.getIndexisDir(fileIndex + recordcount)) { + filenavigator.changeDIR((char *)filenavigator.getIndexName(fileIndex + recordcount)); + filenavigator.getFiles(0); + fileIndex = 0; + return; + } + else { + sendData(filenavigator.getIndexName(fileIndex + recordcount), Choosefilename); + sendData(0x87F0UL, FilenameNature + recdat.data[0] * 16); // Change BG of selected line to Light Green + sendData(6, FilenameIcon1 + recdat.data[0]); // show frame + } + } + else if (recdat.addr == FilenamePlay) { + if (recdat.data[0] == 1 && isMediaInserted()) { // for sure + printFile(filenavigator.getIndexName(fileIndex + recordcount)); + + for (int16_t j = 0; j < 10; j++) // clean screen. + sendData(0, Printfilename + j); + + sendData(filenavigator.getIndexName(fileIndex + recordcount), Printfilename); + + delay_ms(4); + + sendData(ExchangePageBase + 53, ExchangepageAddr); + + tpShowStatus = show_status = true; + printerStatusKey[0] = 1; + printerStatusKey[1] = 3; + fileIndex = 0; + recordcount = 0; + } + else if (recdat.data[0] == 2) { // Page Down + if ((fileIndex + DISPLAY_FILES) < (filenavigator.maxFiles() + (filenavigator.folderdepth != 0))) { + fileIndex = fileIndex + DISPLAY_FILES; + // if(filenavigator.folderdepth!=0 && fileIndex!=0) //Shift to acknowledge Return DIR button on first page + // filenavigator.getFiles(fileIndex-1); + // else + filenavigator.getFiles(fileIndex); + // filenavigator.getFiles(filenavigator.currentindex+1); + } + } + else if (recdat.data[0] == 3) { // Page Up + if (fileIndex >= DISPLAY_FILES) { + fileIndex = fileIndex - DISPLAY_FILES; + // if(filenavigator.folderdepth!=0 && fileIndex!=0) //Shift to acknowledge Return DIR button on first page + // filenavigator.getFiles(filenavigator.currentindex-DISPLAY_FILES); + // else + filenavigator.getFiles(fileIndex); + } + } + else if (recdat.data[0] == 4) { // Page Up + injectCommands(F("M22\nM21")); + } + else if (recdat.data[0] == 0) { // return to main page + show_status = true; + tpShowStatus = false; + } + } + break; + + case VolumeDisplay: { + if (recdat.data[0] == 0) { + dwin_settings.display_volume = 0; + dwin_settings.display_sound = false; + } + else if (recdat.data[0] > 100) { + dwin_settings.display_volume = 255; + dwin_settings.display_sound = true; + } + else { + dwin_settings.display_volume = (uint8_t)map(constrain(recdat.data[0], 0, 100), 0, 100, 0, 255); + dwin_settings.display_sound = true; + } + setTouchScreenConfiguration(); + break; + } + + case DisplayBrightness: { + if (recdat.data[0] < 10) + dwin_settings.screen_brightness = 10; + else if (recdat.data[0] > 100) + dwin_settings.screen_brightness = 100; + else + dwin_settings.screen_brightness = (uint8_t)recdat.data[0]; + setTouchScreenConfiguration(); + break; + } + + case DisplayStandbyBrightness: { + if (recdat.data[0] < 10) + dwin_settings.standby_brightness = 10; + else if (recdat.data[0] > 100) + dwin_settings.standby_brightness = 100; + else + dwin_settings.standby_brightness = (uint8_t)recdat.data[0]; + setTouchScreenConfiguration(); + break; + } + + case DisplayStandbySeconds: { + if (recdat.data[0] < 5) + dwin_settings.standby_time_seconds = 5; + else if (recdat.data[0] > 100) + dwin_settings.standby_time_seconds = 100; + else + dwin_settings.standby_time_seconds = (uint8_t)recdat.data[0]; + setTouchScreenConfiguration(); + break; + } + + case AutolevelVal: { + uint8_t meshPoint = (recdat.addr - AutolevelVal) / 2, + yPnt = floor(meshPoint / GRID_MAX_POINTS_X), + xPnt = meshPoint - (yPnt * GRID_MAX_POINTS_X); + if (yPnt % 2 != 0) xPnt = (GRID_MAX_POINTS_X - 1) - xPnt; // zag row + + float meshVal = float(recdat.data[0] - (recdat.data[0] >= 32768 ? 65536 : 0)) / 1000; + + LIMIT(meshVal, Z_PROBE_LOW_POINT, Z_CLEARANCE_BETWEEN_PROBES); + xy_uint8_t point = { xPnt, yPnt }; + setMeshPoint(point, meshVal); + sendData(meshVal * 1000, recdat.addr); + break; + } + + default: break; + } + + memset(&recdat, 0, sizeof(recdat)); + recdat.head[0] = FHONE; + recdat.head[1] = FHTWO; +} + +void RTS::writeVariable(const uint16_t adr, const void * const values, uint8_t valueslen, const bool isstr/*=false*/, const char fillChar/*=' '*/) { + const char* myvalues = static_cast(values); + bool strend = !myvalues; + DWIN_SERIAL.write(FHONE); + DWIN_SERIAL.write(FHTWO); + DWIN_SERIAL.write(valueslen + 3); + DWIN_SERIAL.write(0x82); + DWIN_SERIAL.write(adr >> 8); + DWIN_SERIAL.write(adr & 0xFF); + while (valueslen--) { + char x; + if (!strend) x = *myvalues++; + if ((isstr && !x) || strend) { + strend = true; + x = fillChar; + } + DWIN_SERIAL.write(x); + } +} + +void RTS::setTouchScreenConfiguration() { + // Main configuration (System_Config) + LIMIT(dwin_settings.screen_brightness, 10, 100); // Prevent a possible all-dark screen + LIMIT(dwin_settings.standby_time_seconds, 10, 655); // Prevent a possible all-dark screen for standby, yet also don't go higher than the DWIN limitation + + uint8_t cfg_bits = (0x0 + | _BV(7) // 7: Enable Control ... TERN0(DWINOS_4, _BV(7)) + | _BV(5) // 5: load 22 touch file + | _BV(4) // 4: auto-upload should always be enabled + | (dwin_settings.display_sound ? _BV(3) : 0) // 3: audio + | (dwin_settings.display_standby ? _BV(2) : 0) // 2: backlight on standby + | (dwin_settings.screen_rotation == 10 ? _BV(1) : 0) // 1 & 0: Inversion + #if LCD_SCREEN_ROTATE == 90 + | _BV(0) // Portrait Mode or 800x480 display has 0 point rotated 90deg from 480x272 display + #elif LCD_SCREEN_ROTATE + #error "Only 90° rotation is supported for the selected LCD." + #endif + ); + + const uint8_t config_set[] = { 0x5A, 0x00, TERN(DWINOS_4, 0x00, 0xFF), cfg_bits }; + writeVariable(0x80 /*System_Config*/, config_set, sizeof(config_set)); + + // Standby brightness (LED_Config) + uint16_t dwinStandbyTimeSeconds = 100 * dwin_settings.standby_time_seconds; /* milliseconds, but divided by 10 (not 5 like the docs say) */ + const uint8_t brightness_set[] = { + dwin_settings.screen_brightness /*% active*/, + dwin_settings.standby_brightness /*% standby*/, + static_cast(dwinStandbyTimeSeconds >> 8), + static_cast(dwinStandbyTimeSeconds) + }; + writeVariable(0x82 /*LED_Config*/, brightness_set, sizeof(brightness_set)); + + if (!dwin_settings.display_sound) { + sendData(0, VolumeIcon); + sendData(9, SoundIcon); + } + else { + sendData((dwin_settings.display_volume + 1) / 32 - 1, VolumeIcon); + sendData(8, SoundIcon); + } + sendData(dwin_settings.display_volume, VolumeIcon - 2); + sendData(dwin_settings.display_volume << 8, SoundAddr + 1); + sendData(map(constrain(dwin_settings.display_volume, 0, 255), 0, 255, 0, 100), VolumeDisplay); + sendData(dwin_settings.screen_brightness, DisplayBrightness); + sendData(dwin_settings.standby_brightness, DisplayStandbyBrightness); + sendData(dwin_settings.standby_time_seconds, DisplayStandbySeconds); + sendData(dwin_settings.display_standby ? 3 : 2, DisplayStandbyEnableIndicator); +} + +#endif // DGUS_LCD_UI_IA_CREALITY diff --git a/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.h b/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.h similarity index 92% rename from Marlin/src/lcd/extui/ia_creality/ia_creality_extui.h rename to Marlin/src/lcd/extui/ia_creality/ia_creality_rts.h index af3824e904..9ec7d7872f 100644 --- a/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.h +++ b/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.h @@ -22,18 +22,18 @@ #pragma once /* **************************************** - * lcd/extui/ia_creality/ia_creality_extui.h + * lcd/extui/ia_creality/ia_creality_rts.h * **************************************** * Extensible_UI implementation for Creality DWIN * 10SPro, Max, CRX, and others - * Based original Creality release, ported to ExtUI for Marlin 2.0 + * Based original Creality release * Written by Insanity Automation, sponsored by Tiny Machines 3D * * ***************************************/ -#include "../ui_api.h" +#include "../../../inc/MarlinConfig.h" -#include +#include /*********************************/ #define FHONE (0x5A) @@ -211,7 +211,7 @@ struct creality_dwin_settings_t { bool display_sound; int8_t screen_rotation; int16_t display_volume; - uint8_t standby_screen_brightness; + uint8_t standby_brightness; uint8_t screen_brightness; int16_t standby_time_seconds; }; @@ -297,3 +297,19 @@ void RTS_Update(); #else #define MEASURING_GCODE MAIN_MENU_ITEM_1_GCODE #endif + +// Data shared by RTS and ExtUI +extern uint16_t fileIndex; +extern uint8_t recordcount; +extern uint8_t startprogress; +extern char waitway; +extern char printerStatusKey[2]; // [0] = 0:ready [1] = 0:keep temperature, 1:heating, 2:cooling, 3:printing +extern bool show_status; +extern bool tpShowStatus; // true: opening time/percentage, false: closing time/percentage +extern uint8_t lastPauseMsgState; +extern creality_dwin_settings_t dwin_settings; +extern bool no_reentry; +#if HAS_PID_HEATING + extern uint16_t pid_hotendAutoTemp; + extern uint16_t pid_bedAutoTemp; +#endif diff --git a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp index be4682f68f..71f4166ca8 100644 --- a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp @@ -137,7 +137,6 @@ void tft_lvgl_init() { #if ENABLED(USB_FLASH_DRIVE_SUPPORT) uint16_t usb_flash_loop = 1000; #if ENABLED(MULTI_VOLUME) && !HAS_SD_HOST_DRIVE - SET_INPUT_PULLUP(SD_DETECT_PIN); if (IS_SD_INSERTED()) card.changeMedia(&card.media_driver_sdcard); else diff --git a/Marlin/src/lcd/extui/nextion/FileNavigator.cpp b/Marlin/src/lcd/extui/nextion/FileNavigator.cpp index 6730370a94..c00ccb4e36 100644 --- a/Marlin/src/lcd/extui/nextion/FileNavigator.cpp +++ b/Marlin/src/lcd/extui/nextion/FileNavigator.cpp @@ -39,18 +39,18 @@ using namespace ExtUI; #define DEBUG_OUT NEXDEBUGLEVEL #include "../../../core/debug_out.h" -FileList FileNavigator::filelist; // Instance of the Marlin file API -char FileNavigator::currentfoldername[MAX_PATH_LEN]; // Current folder path +FileList FileNavigator::filelist; // ExtUI file API +char FileNavigator::currentDirPath[MAX_PATH_LEN]; // Current folder path uint16_t FileNavigator::lastindex; uint8_t FileNavigator::folderdepth; -uint16_t FileNavigator::currentindex; // override the panel request +uint16_t FileNavigator::currentindex; // override the panel request FileNavigator filenavigator; FileNavigator::FileNavigator() { reset(); } void FileNavigator::reset() { - currentfoldername[0] = '\0'; + currentDirPath[0] = '\0'; folderdepth = 0; currentindex = 0; lastindex = 0; @@ -83,51 +83,51 @@ void FileNavigator::getFiles(uint16_t index) { #endif if (currentindex == 0 && folderdepth > 0) { // Add a link to go up a folder - nextion.SendtoTFT(F("vis p0,1")); - nextion.SendtoTFT(F("\xFF\xFF\xFF")); + nextion.tftSend(F("vis p0,1")); + nextion.tftSend(F("\xFF\xFF\xFF")); SEND_VAL("tmpUP", "0"); files--; } else { - nextion.SendtoTFT(F("vis p0,0")); - nextion.SendtoTFT(F("\xFF\xFF\xFF")); + nextion.tftSend(F("vis p0,0")); + nextion.tftSend(F("\xFF\xFF\xFF")); } for (uint16_t seek = currentindex; seek < currentindex + files; seek++) { if (filelist.seek(seek)) { - nextion.SendtoTFT(F("s")); + nextion.tftSend(F("s")); LCD_SERIAL.print(fcnt); - nextion.SendtoTFT(F(".txt=\"")); + nextion.tftSend(F(".txt=\"")); if (filelist.isDir()) { LCD_SERIAL.print(filelist.shortFilename()); - nextion.SendtoTFT(F("/\"")); - nextion.SendtoTFT(F("\xFF\xFF\xFF")); + nextion.tftSend(F("/\"")); + nextion.tftSend(F("\xFF\xFF\xFF")); - nextion.SendtoTFT(F("l")); + nextion.tftSend(F("l")); LCD_SERIAL.print(fcnt); - nextion.SendtoTFT(F(".txt=\"")); + nextion.tftSend(F(".txt=\"")); LCD_SERIAL.print(filelist.filename()); - nextion.SendtoTFT(F("\"")); - nextion.SendtoTFT(F("\xFF\xFF\xFF")); + nextion.tftSend(F("\"")); + nextion.tftSend(F("\xFF\xFF\xFF")); SEND_PCO2("l", fcnt, "1055"); } else { - LCD_SERIAL.print(currentfoldername); + LCD_SERIAL.print(currentDirPath); LCD_SERIAL.print(filelist.shortFilename()); - nextion.SendtoTFT(F("\"")); - nextion.SendtoTFT(F("\xFF\xFF\xFF")); + nextion.tftSend(F("\"")); + nextion.tftSend(F("\xFF\xFF\xFF")); - nextion.SendtoTFT(F("l")); + nextion.tftSend(F("l")); LCD_SERIAL.print(fcnt); - nextion.SendtoTFT(F(".txt=\"")); + nextion.tftSend(F(".txt=\"")); LCD_SERIAL.print(filelist.longFilename()); - nextion.SendtoTFT(F("\"")); - nextion.SendtoTFT(F("\xFF\xFF\xFF")); + nextion.tftSend(F("\"")); + nextion.tftSend(F("\xFF\xFF\xFF")); } fcnt++; fseek = seek; #if NEXDEBUG(AC_FILE) - DEBUG_ECHOLNPGM("-", seek, " '", filelist.longFilename(), "' '", currentfoldername, "", filelist.shortFilename(), "'\n"); + DEBUG_ECHOLNPGM("-", seek, " '", filelist.longFilename(), "' '", currentDirPath, "", filelist.shortFilename(), "'\n"); #endif } } @@ -137,11 +137,11 @@ void FileNavigator::getFiles(uint16_t index) { void FileNavigator::changeDIR(char *folder) { #if NEXDEBUG(AC_FILE) - DEBUG_ECHOLNPGM("currentfolder: ", currentfoldername, " New: ", folder); + DEBUG_ECHOLNPGM("currentfolder: ", currentDirPath, " New: ", folder); #endif if (folderdepth >= MAX_FOLDER_DEPTH) return; // limit the folder depth - strcat(currentfoldername, folder); - strcat(currentfoldername, "/"); + strcat(currentDirPath, folder); + strcat(currentDirPath, "/"); filelist.changeDir(folder); refresh(); folderdepth++; @@ -155,20 +155,20 @@ void FileNavigator::upDIR() { currentindex = 0; // Remove the last child folder from the stored path if (folderdepth == 0) { - currentfoldername[0] = '\0'; + currentDirPath[0] = '\0'; reset(); } else { char *pos = nullptr; for (uint8_t f = 0; f < folderdepth; f++) - pos = strchr(currentfoldername, '/'); + pos = strchr(currentDirPath, '/'); pos[1] = '\0'; } #if NEXDEBUG(AC_FILE) - DEBUG_ECHOLNPGM("depth: ", folderdepth, " currentfoldername: ", currentfoldername); + DEBUG_ECHOLNPGM("depth: ", folderdepth, " currentDirPath: ", currentDirPath); #endif } -char* FileNavigator::getCurrentFolderName() { return currentfoldername; } +char* FileNavigator::getCurrentDirPath() { return currentDirPath; } #endif // NEXTION_TFT diff --git a/Marlin/src/lcd/extui/nextion/FileNavigator.h b/Marlin/src/lcd/extui/nextion/FileNavigator.h index fd29bceade..57773fab5e 100644 --- a/Marlin/src/lcd/extui/nextion/FileNavigator.h +++ b/Marlin/src/lcd/extui/nextion/FileNavigator.h @@ -41,10 +41,10 @@ class FileNavigator { static void upDIR(); static void changeDIR(char *); static void refresh(); - static char* getCurrentFolderName(); + static char* getCurrentDirPath(); private: static FileList filelist; - static char currentfoldername[MAX_PATH_LEN]; + static char currentDirPath[MAX_PATH_LEN]; static uint16_t lastindex; static uint8_t folderdepth; static uint16_t currentindex; diff --git a/Marlin/src/lcd/extui/nextion/nextion_extui.cpp b/Marlin/src/lcd/extui/nextion/nextion_extui.cpp index bf40fe97ac..da3e344a35 100644 --- a/Marlin/src/lcd/extui/nextion/nextion_extui.cpp +++ b/Marlin/src/lcd/extui/nextion/nextion_extui.cpp @@ -35,9 +35,9 @@ namespace ExtUI { - void onStartup() { nextion.Startup(); } - void onIdle() { nextion.IdleLoop(); } - void onPrinterKilled(FSTR_P const error, FSTR_P const component) { nextion.PrinterKilled(error, component); } + void onStartup() { nextion.startup(); } + void onIdle() { nextion.idleLoop(); } + void onPrinterKilled(FSTR_P const error, FSTR_P const component) { nextion.printerKilled(error, component); } void onMediaInserted() {} void onMediaError() {} void onMediaRemoved() {} @@ -46,8 +46,8 @@ namespace ExtUI { void onPrintTimerPaused() {} void onPrintTimerStopped() {} void onFilamentRunout(const extruder_t) {} - void onUserConfirmRequired(const char * const msg) { nextion.ConfirmationRequest(msg); } - void onStatusChanged(const char * const msg) { nextion.StatusChange(msg); } + void onUserConfirmRequired(const char * const msg) { nextion.confirmationRequest(msg); } + void onStatusChanged(const char * const msg) { nextion.statusChange(msg); } void onHomingStart() {} void onHomingDone() {} @@ -117,7 +117,7 @@ namespace ExtUI { #if HAS_PID_HEATING void onPidTuning(const result_t rst) { // Called for temperature PID tuning result - nextion.PanelInfo(37); + nextion.panelInfo(37); } #endif diff --git a/Marlin/src/lcd/extui/nextion/nextion_tft.cpp b/Marlin/src/lcd/extui/nextion/nextion_tft.cpp index 788be5ac65..15c384808f 100644 --- a/Marlin/src/lcd/extui/nextion/nextion_tft.cpp +++ b/Marlin/src/lcd/extui/nextion/nextion_tft.cpp @@ -53,7 +53,7 @@ NextionTFT nextion; NextionTFT::NextionTFT() {} -void NextionTFT::Startup() { +void NextionTFT::startup() { selectedfile[0] = '\0'; nextion_command[0] = '\0'; command_len = 0; @@ -76,15 +76,15 @@ void NextionTFT::Startup() { DEBUG_ECHOLNPGM("Nextion Debug Level ", NEXDEBUGLEVEL); } -void NextionTFT::IdleLoop() { - if (ReadTFTCommand()) { - ProcessPanelRequest(); +void NextionTFT::idleLoop() { + if (readTFTCommand()) { + processPanelRequest(); command_len = 0; } UpdateOnChange(); } -void NextionTFT::PrinterKilled(FSTR_P const error, FSTR_P const component) { +void NextionTFT::printerKilled(FSTR_P const error, FSTR_P const component) { SEND_TXT_END("page error"); SEND_TXT_F("t3", F("Error")); SEND_TXT_F("t4", component); @@ -96,21 +96,21 @@ void NextionTFT::PrintFinished() { SEND_TXT_END("page printfinished"); } -void NextionTFT::ConfirmationRequest(const char * const msg) { +void NextionTFT::confirmationRequest(const char * const msg) { SEND_VALasTXT("tmppage.M117", msg); #if NEXDEBUG(N_MARLIN) - DEBUG_ECHOLNPGM("ConfirmationRequest() ", msg, " printer_state:", printer_state); + DEBUG_ECHOLNPGM("confirmationRequest() ", msg, " printer_state:", printer_state); #endif } -void NextionTFT::StatusChange(const char * const msg) { +void NextionTFT::statusChange(const char * const msg) { #if NEXDEBUG(N_MARLIN) - DEBUG_ECHOLNPGM("StatusChange() ", msg, "\nprinter_state:", printer_state); + DEBUG_ECHOLNPGM("statusChange() ", msg, "\nprinter_state:", printer_state); #endif SEND_VALasTXT("tmppage.M117", msg); } -void NextionTFT::SendtoTFT(FSTR_P const fstr/*=nullptr*/) { // A helper to print PROGMEM string to the panel +void NextionTFT::tftSend(FSTR_P const fstr/*=nullptr*/) { // A helper to print PROGMEM string to the panel #if NEXDEBUG(N_SOME) DEBUG_ECHOF(fstr); #endif @@ -118,7 +118,7 @@ void NextionTFT::SendtoTFT(FSTR_P const fstr/*=nullptr*/) { // A helper to print while (const char c = pgm_read_byte(str++)) LCD_SERIAL.write(c); } -bool NextionTFT::ReadTFTCommand() { +bool NextionTFT::readTFTCommand() { bool command_ready = false; while ((LCD_SERIAL.available() > 0) && (command_len < MAX_CMND_LEN)) { nextion_command[command_len] = LCD_SERIAL.read(); @@ -149,15 +149,15 @@ bool NextionTFT::ReadTFTCommand() { return command_ready; } -void NextionTFT::SendFileList(int8_t startindex) { +void NextionTFT::sendFileList(int8_t startindex) { // respond to panel request for 7 files starting at index #if NEXDEBUG(N_INFO) - DEBUG_ECHOLNPGM("## SendFileList ## ", startindex); + DEBUG_ECHOLNPGM("## sendFileList ## ", startindex); #endif filenavigator.getFiles(startindex); } -void NextionTFT::SelectFile() { +void NextionTFT::selectFile() { strncpy(selectedfile, nextion_command + 4, command_len - 4); selectedfile[command_len - 5] = '\0'; #if NEXDEBUG(N_FILE) @@ -169,11 +169,11 @@ void NextionTFT::SelectFile() { break; case '<': // .. (go up folder level) filenavigator.upDIR(); - SendFileList(0); + sendFileList(0); break; default: // enter sub folder filenavigator.changeDIR(selectedfile); - SendFileList(0); + sendFileList(0); break; } } @@ -188,24 +188,24 @@ void NextionTFT::_format_time(char *outstr, uint32_t time) { sprintf_P(outstr, PSTR("%02d:%02ds"), min, sec); } -void NextionTFT::ProcessPanelRequest() { +void NextionTFT::processPanelRequest() { // Break these up into logical blocks as its easier to navigate than one huge switch case! if (nextion_command[0] == 'X') { int8_t req = atoi(&nextion_command[1]); // Information requests if (req <= 49) - PanelInfo(req); + panelInfo(req); // Simple Actions else if (req >= 50) - PanelAction(req); + panelAction(req); } } #define SEND_NA(A) SEND_TXT(A, "n/a") -void NextionTFT::PanelInfo(uint8_t req) { +void NextionTFT::panelInfo(uint8_t req) { switch (req) { case 0: break; @@ -216,7 +216,7 @@ void NextionTFT::PanelInfo(uint8_t req) { //SEND_TXT("tmppage.M117", msg_no_sd_card); } else if (nextion_command[3] == 'S') - SendFileList(atoi(&nextion_command[4])); + sendFileList(atoi(&nextion_command[4])); } break; @@ -488,7 +488,7 @@ void NextionTFT::PanelInfo(uint8_t req) { } } -void NextionTFT::PanelAction(uint8_t req) { +void NextionTFT::panelAction(uint8_t req) { switch (req) { case 50: // Pause SD print @@ -512,7 +512,7 @@ void NextionTFT::PanelAction(uint8_t req) { break; case 54: // A13 Select file - SelectFile(); + selectFile(); break; case 65: // Cool Down diff --git a/Marlin/src/lcd/extui/nextion/nextion_tft.h b/Marlin/src/lcd/extui/nextion/nextion_tft.h index 806630485c..9e085b0f72 100644 --- a/Marlin/src/lcd/extui/nextion/nextion_tft.h +++ b/Marlin/src/lcd/extui/nextion/nextion_tft.h @@ -40,23 +40,23 @@ class NextionTFT { public: NextionTFT(); - static void Startup(); - static void IdleLoop(); - static void PrinterKilled(FSTR_P const, FSTR_P const); - static void ConfirmationRequest(const char * const); - static void StatusChange(const char * const); - static void SendtoTFT(FSTR_P const=nullptr); - //static void SendtoTFTLN(FSTR_P const=nullptr); + static void startup(); + static void idleLoop(); + static void printerKilled(FSTR_P const, FSTR_P const); + static void confirmationRequest(const char * const); + static void statusChange(const char * const); + static void tftSend(FSTR_P const=nullptr); + //static void tftSendLn(FSTR_P const=nullptr); static void UpdateOnChange(); static void PrintFinished(); - static void PanelInfo(uint8_t); + static void panelInfo(uint8_t); private: - static bool ReadTFTCommand(); - static void SendFileList(int8_t); - static void SelectFile(); - static void ProcessPanelRequest(); - static void PanelAction(uint8_t); + static bool readTFTCommand(); + static void sendFileList(int8_t); + static void selectFile(); + static void processPanelRequest(); + static void panelAction(uint8_t); static void _format_time(char *, uint32_t); }; diff --git a/Marlin/src/lcd/extui/nextion/nextion_tft_defs.h b/Marlin/src/lcd/extui/nextion/nextion_tft_defs.h index cdd91bf2a3..061d29559c 100644 --- a/Marlin/src/lcd/extui/nextion/nextion_tft_defs.h +++ b/Marlin/src/lcd/extui/nextion/nextion_tft_defs.h @@ -54,10 +54,10 @@ // TFT panel commands #define msg_welcome MACHINE_NAME " Ready." -#define SEND_TEMP(x,y,t,z) (nextion.SendtoTFT(F(x)), nextion.SendtoTFT(F(".txt=\"")), LCD_SERIAL.print(y), nextion.SendtoTFT(F(t)), LCD_SERIAL.print(z), nextion.SendtoTFT(F("\"\xFF\xFF\xFF"))) -#define SEND_VAL(x,y) (nextion.SendtoTFT(F(x)), nextion.SendtoTFT(F(".val=")), LCD_SERIAL.print(y), nextion.SendtoTFT(F("\xFF\xFF\xFF"))) -#define SEND_TXT(x,y) (nextion.SendtoTFT(F(x)), nextion.SendtoTFT(F(".txt=\"")), nextion.SendtoTFT(F(y)), nextion.SendtoTFT(F("\"\xFF\xFF\xFF"))) -#define SEND_TXT_F(x,y) (nextion.SendtoTFT(F(x)), nextion.SendtoTFT(F(".txt=\"")), nextion.SendtoTFT(y), nextion.SendtoTFT(F("\"\xFF\xFF\xFF"))) -#define SEND_VALasTXT(x,y) (nextion.SendtoTFT(F(x)), nextion.SendtoTFT(F(".txt=\"")), LCD_SERIAL.print(y), nextion.SendtoTFT(F("\"\xFF\xFF\xFF"))) -#define SEND_TXT_END(x) (nextion.SendtoTFT(F(x)), nextion.SendtoTFT(F("\xFF\xFF\xFF"))) -#define SEND_PCO2(x,y,z) (nextion.SendtoTFT(F(x)), LCD_SERIAL.print(y), nextion.SendtoTFT(F(".pco=")), nextion.SendtoTFT(F(z)), nextion.SendtoTFT(F("\xFF\xFF\xFF"))) +#define SEND_TEMP(x,y,t,z) (nextion.tftSend(F(x)), nextion.tftSend(F(".txt=\"")), LCD_SERIAL.print(y), nextion.tftSend(F(t)), LCD_SERIAL.print(z), nextion.tftSend(F("\"\xFF\xFF\xFF"))) +#define SEND_VAL(x,y) (nextion.tftSend(F(x)), nextion.tftSend(F(".val=")), LCD_SERIAL.print(y), nextion.tftSend(F("\xFF\xFF\xFF"))) +#define SEND_TXT(x,y) (nextion.tftSend(F(x)), nextion.tftSend(F(".txt=\"")), nextion.tftSend(F(y)), nextion.tftSend(F("\"\xFF\xFF\xFF"))) +#define SEND_TXT_F(x,y) (nextion.tftSend(F(x)), nextion.tftSend(F(".txt=\"")), nextion.tftSend(y), nextion.tftSend(F("\"\xFF\xFF\xFF"))) +#define SEND_VALasTXT(x,y) (nextion.tftSend(F(x)), nextion.tftSend(F(".txt=\"")), LCD_SERIAL.print(y), nextion.tftSend(F("\"\xFF\xFF\xFF"))) +#define SEND_TXT_END(x) (nextion.tftSend(F(x)), nextion.tftSend(F("\xFF\xFF\xFF"))) +#define SEND_PCO2(x,y,z) (nextion.tftSend(F(x)), LCD_SERIAL.print(y), nextion.tftSend(F(".pco=")), nextion.tftSend(F(z)), nextion.tftSend(F("\xFF\xFF\xFF"))) diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 568ad49df0..f74e24e93a 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -748,9 +748,9 @@ namespace Language_en { LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("MMU Eject"); LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("MMU Eject ~"); LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("MMU Unload"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Loading Fil. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Ejecting Fil. ..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Unloading Fil...."); + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Filament %i Load..."); + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Filament Eject..."); + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Filament Unload..."); LSTR MSG_MMU2_ALL = _UxGT("All"); LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); LSTR MSG_MMU2_RESET = _UxGT("Reset MMU"); From 317450af3226cc4a1647404cbe31a6ab82cc318e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 24 May 2023 02:53:12 -0500 Subject: [PATCH 471/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Upd?= =?UTF-8?q?ated=20toolchain=20for=20ststm32@~14.1.0=20(#25846)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ini/stm32f4.ini | 1 + ini/stm32g0.ini | 20 +++++++++++--------- ini/stm32h7.ini | 26 +++++++++++++------------- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini index 2889a88863..34a5c4d607 100644 --- a/ini/stm32f4.ini +++ b/ini/stm32f4.ini @@ -733,6 +733,7 @@ upload_protocol = stlink extends = stm32_variant platform = ststm32@~14.1.0 platform_packages = framework-arduinoststm32@https://github.com/stm32duino/Arduino_Core_STM32/archive/main.zip + toolchain-gccarmnoneeabi@1.100301.220327 board = marlin_STM32F401RC board_build.offset = 0x4000 board_upload.offset_address = 0x08004000 diff --git a/ini/stm32g0.ini b/ini/stm32g0.ini index 17403292b7..f67002fa5c 100644 --- a/ini/stm32g0.ini +++ b/ini/stm32g0.ini @@ -49,14 +49,15 @@ upload_command = dfu-util -a 0 -s 0x08000000:leave -D "$SOURCE" extends = stm32_variant platform = ststm32@~14.1.0 platform_packages = framework-arduinoststm32@https://github.com/stm32duino/Arduino_Core_STM32/archive/main.zip + toolchain-gccarmnoneeabi@1.100301.220327 board = marlin_STM32G0B1RE board_build.offset = 0x2000 board_upload.offset_address = 0x08002000 build_flags = ${stm32_variant.build_flags} - -DPIN_SERIAL4_RX=PC_11 -DPIN_SERIAL4_TX=PC_10 - -DSERIAL_RX_BUFFER_SIZE=1024 -DSERIAL_TX_BUFFER_SIZE=1024 - -DTIMER_SERVO=TIM3 -DTIMER_TONE=TIM4 - -DSTEP_TIMER_IRQ_PRIO=0 + -DPIN_SERIAL4_RX=PC_11 -DPIN_SERIAL4_TX=PC_10 + -DSERIAL_RX_BUFFER_SIZE=1024 -DSERIAL_TX_BUFFER_SIZE=1024 + -DTIMER_SERVO=TIM3 -DTIMER_TONE=TIM4 + -DSTEP_TIMER_IRQ_PRIO=0 upload_protocol = stlink debug_tool = stlink @@ -103,15 +104,16 @@ upload_protocol = custom extends = stm32_variant platform = ststm32@~14.1.0 platform_packages = framework-arduinoststm32@https://github.com/stm32duino/Arduino_Core_STM32/archive/main.zip + toolchain-gccarmnoneeabi@1.100301.220327 board = marlin_STM32G0B1VE board_build.offset = 0x2000 board_upload.offset_address = 0x08002000 build_flags = ${stm32_variant.build_flags} - -DPIN_SERIAL4_RX=PE_9 -DPIN_SERIAL4_TX=PE_8 - -DPIN_SERIAL5_RX=PE_11 -DPIN_SERIAL5_TX=PE_10 - -DSERIAL_RX_BUFFER_SIZE=1024 -DSERIAL_TX_BUFFER_SIZE=1024 - -DTIMER_SERVO=TIM3 -DTIMER_TONE=TIM4 - -DSTEP_TIMER_IRQ_PRIO=0 + -DPIN_SERIAL4_RX=PE_9 -DPIN_SERIAL4_TX=PE_8 + -DPIN_SERIAL5_RX=PE_11 -DPIN_SERIAL5_TX=PE_10 + -DSERIAL_RX_BUFFER_SIZE=1024 -DSERIAL_TX_BUFFER_SIZE=1024 + -DTIMER_SERVO=TIM3 -DTIMER_TONE=TIM4 + -DSTEP_TIMER_IRQ_PRIO=0 upload_protocol = stlink debug_tool = stlink diff --git a/ini/stm32h7.ini b/ini/stm32h7.ini index 5733d35bf0..e7617b1c96 100644 --- a/ini/stm32h7.ini +++ b/ini/stm32h7.ini @@ -50,9 +50,9 @@ board = marlin_STM32H743Vx board_build.offset = 0x20000 board_upload.offset_address = 0x08020000 build_flags = ${stm32_variant.build_flags} - -DPIN_SERIAL1_RX=PA_10 -DPIN_SERIAL1_TX=PA_9 - -DPIN_SERIAL3_RX=PD_9 -DPIN_SERIAL3_TX=PD_8 - -DPIN_SERIAL4_RX=PA_1 -DPIN_SERIAL4_TX=PA_0 + -DPIN_SERIAL1_TX=PA_9 -DPIN_SERIAL1_RX=PA_10 + -DPIN_SERIAL3_TX=PD_8 -DPIN_SERIAL3_RX=PD_9 + -DPIN_SERIAL4_TX=PA_0 -DPIN_SERIAL4_RX=PA_1 -DSERIAL_RX_BUFFER_SIZE=1024 -DSERIAL_TX_BUFFER_SIZE=1024 -DTIMER_SERVO=TIM5 -DTIMER_TONE=TIM2 -DSTEP_TIMER_IRQ_PRIO=0 @@ -72,11 +72,11 @@ board = marlin_STM32H723Vx board_build.offset = 0x20000 board_upload.offset_address = 0x08020000 build_flags = ${stm32_variant.build_flags} - -DPIN_SERIAL1_RX=PA_10 -DPIN_SERIAL1_TX=PA_9 - -DPIN_SERIAL2_RX=PD_6 -DPIN_SERIAL2_TX=PD_5 - -DPIN_SERIAL3_RX=PD_9 -DPIN_SERIAL3_TX=PD_8 - -DPIN_SERIAL4_RX=PA_1 -DPIN_SERIAL4_TX=PA_0 - -DPIN_SERIAL7_RX=PE_7 -DPIN_SERIAL7_TX=PE_8 + -DPIN_SERIAL1_TX=PA_9 -DPIN_SERIAL1_RX=PA_10 + -DPIN_SERIAL2_TX=PD_5 -DPIN_SERIAL2_RX=PD_6 + -DPIN_SERIAL3_TX=PD_8 -DPIN_SERIAL3_RX=PD_9 + -DPIN_SERIAL4_TX=PA_0 -DPIN_SERIAL4_RX=PA_1 + -DPIN_SERIAL7_TX=PE_8 -DPIN_SERIAL7_RX=PE_7 -DSERIAL_RX_BUFFER_SIZE=1024 -DSERIAL_TX_BUFFER_SIZE=1024 -DTIMER_SERVO=TIM5 -DTIMER_TONE=TIM2 -DSTEP_TIMER_IRQ_PRIO=0 @@ -98,11 +98,11 @@ board = marlin_STM32H723Zx board_build.offset = 0x20000 board_upload.offset_address = 0x08020000 build_flags = ${stm32_variant.build_flags} - -DPIN_SERIAL1_RX=PA_10 -DPIN_SERIAL1_TX=PA_9 - -DPIN_SERIAL2_RX=PD_6 -DPIN_SERIAL2_TX=PD_5 - -DPIN_SERIAL3_RX=PD_9 -DPIN_SERIAL3_TX=PD_8 - -DPIN_SERIAL4_RX=PA_1 -DPIN_SERIAL4_TX=PA_0 - -DPIN_SERIAL7_RX=PE_7 -DPIN_SERIAL7_TX=PE_8 + -DPIN_SERIAL1_TX=PA_9 -DPIN_SERIAL1_RX=PA_10 + -DPIN_SERIAL2_TX=PD_5 -DPIN_SERIAL2_RX=PD_6 + -DPIN_SERIAL3_TX=PD_8 -DPIN_SERIAL3_RX=PD_9 + -DPIN_SERIAL4_TX=PA_0 -DPIN_SERIAL4_RX=PA_1 + -DPIN_SERIAL7_TX=PE_8 -DPIN_SERIAL7_RX=PE_7 -DSERIAL_RX_BUFFER_SIZE=1024 -DSERIAL_TX_BUFFER_SIZE=1024 -DTIMER_SERVO=TIM5 -DTIMER_TONE=TIM2 -DSTEP_TIMER_IRQ_PRIO=0 From eb439b93a57ca6676c02635f6395fd9e733d0afe Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Wed, 24 May 2023 19:58:11 +1200 Subject: [PATCH 472/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20ESP32=20compile=20?= =?UTF-8?q?error=20(#25873)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bedlevel/hilbert_curve.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/feature/bedlevel/hilbert_curve.cpp b/Marlin/src/feature/bedlevel/hilbert_curve.cpp index 7474123e3f..57cbdfb34d 100644 --- a/Marlin/src/feature/bedlevel/hilbert_curve.cpp +++ b/Marlin/src/feature/bedlevel/hilbert_curve.cpp @@ -28,8 +28,8 @@ constexpr int8_t to_fix(int8_t v) { return v * 2; } constexpr int8_t to_int(int8_t v) { return v / 2; } -constexpr uint8_t log2(uint8_t n) { return (n > 1) ? 1 + log2(n >> 1) : 0; } -constexpr uint8_t order(uint8_t n) { return uint8_t(log2(n - 1)) + 1; } +constexpr uint8_t log2(uint8_t n) { return (n > 1) ? 1 + log2(uint8_t(n >> 1)) : 0; } +constexpr uint8_t order(uint8_t n) { return uint8_t(log2(uint8_t(n - 1))) + 1; } constexpr uint8_t ord = order(_MAX(GRID_MAX_POINTS_X, GRID_MAX_POINTS_Y)); constexpr uint8_t dim = _BV(ord); From e2a724990762dab554ce5bab092327eb604d3d83 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 25 May 2023 00:20:08 +0000 Subject: [PATCH 473/659] [cron] Bump distribution date (2023-05-25) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 5b26bfa8ab..4a4d913781 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-24" +//#define STRING_DISTRIBUTION_DATE "2023-05-25" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 2864463068..be7fa43375 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-24" + #define STRING_DISTRIBUTION_DATE "2023-05-25" #endif /** From 1a4e208c6901cf3727940e98f12748aa14a52f5d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 24 May 2023 21:22:54 -0500 Subject: [PATCH 474/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20card.ls=20call=20(?= =?UTF-8?q?in=20easythreed=5Fui)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix regression in #24679 --- Marlin/src/sd/SdBaseFile.cpp | 4 ++-- Marlin/src/sd/SdBaseFile.h | 2 +- Marlin/src/sd/cardreader.cpp | 2 +- Marlin/src/sd/cardreader.h | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Marlin/src/sd/SdBaseFile.cpp b/Marlin/src/sd/SdBaseFile.cpp index cf403d4b3a..98cbe9ba9d 100644 --- a/Marlin/src/sd/SdBaseFile.cpp +++ b/Marlin/src/sd/SdBaseFile.cpp @@ -322,12 +322,12 @@ void SdBaseFile::getpos(filepos_t * const pos) { * \param[in] indent Amount of space before file name. Used for recursive * list to indicate subdirectory level. */ -void SdBaseFile::ls(uint8_t flags, uint8_t indent) { +void SdBaseFile::ls(const uint8_t flags/*=0*/, const uint8_t indent/*=0*/) { rewind(); int8_t status; while ((status = lsPrintNext(flags, indent))) { if (status > 1 && (flags & LS_R)) { - uint16_t index = curPosition() / 32 - 1; + const uint16_t index = curPosition() / 32 - 1; SdBaseFile s; if (s.open(this, index, O_READ)) s.ls(flags, indent + 2); seekSet(32 * (index + 1)); diff --git a/Marlin/src/sd/SdBaseFile.h b/Marlin/src/sd/SdBaseFile.h index 3ac23138b1..b806a3cd70 100644 --- a/Marlin/src/sd/SdBaseFile.h +++ b/Marlin/src/sd/SdBaseFile.h @@ -283,7 +283,7 @@ class SdBaseFile { bool isRoot() const { return type_ == FAT_FILE_TYPE_ROOT_FIXED || type_ == FAT_FILE_TYPE_ROOT32; } bool getDosName(char * const name); - void ls(uint8_t flags=0, uint8_t indent=0); + void ls(const uint8_t flags=0, const uint8_t indent=0); bool mkdir(SdBaseFile *parent, const char *path, const bool pFlag=true); bool open(SdBaseFile * const dirFile, uint16_t index, const uint8_t oflag); diff --git a/Marlin/src/sd/cardreader.cpp b/Marlin/src/sd/cardreader.cpp index cd3d1d2cd6..a4a10b3169 100644 --- a/Marlin/src/sd/cardreader.cpp +++ b/Marlin/src/sd/cardreader.cpp @@ -353,7 +353,7 @@ void CardReader::printListing(MediaFile parent, const char * const prepend, cons // // List all files on the SD card // -void CardReader::ls(const uint8_t lsflags) { +void CardReader::ls(const uint8_t lsflags/*=0*/) { if (flag.mounted) { root.rewind(); printListing(root, nullptr, lsflags); diff --git a/Marlin/src/sd/cardreader.h b/Marlin/src/sd/cardreader.h index 4baaa73e1a..832d79efe4 100644 --- a/Marlin/src/sd/cardreader.h +++ b/Marlin/src/sd/cardreader.h @@ -209,7 +209,7 @@ public: } #endif - static void ls(const uint8_t lsflags); + static void ls(const uint8_t lsflags=0); #if ENABLED(POWER_LOSS_RECOVERY) static bool jobRecoverFileExists(); From 772e19aab988b5d6466bdf2e8948c8c7eee3cafd Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 24 May 2023 22:10:40 -0500 Subject: [PATCH 475/659] =?UTF-8?q?=E2=9C=A8=20EP=5FBABYSTEPPING=20(#25869?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 7 +- Marlin/src/MarlinCore.cpp | 9 ++ Marlin/src/feature/babystep.cpp | 12 +- Marlin/src/feature/babystep.h | 19 ++++ Marlin/src/feature/e_parser.cpp | 185 ++++++++++++++++++++++++++++++- Marlin/src/feature/e_parser.h | 165 +-------------------------- Marlin/src/gcode/gcode.cpp | 4 + Marlin/src/gcode/gcode.h | 4 + Marlin/src/gcode/host/M115.cpp | 6 + Marlin/src/gcode/motion/M290.cpp | 6 + Marlin/src/inc/Warnings.cpp | 7 ++ Marlin/src/lcd/menu/menu.h | 11 -- Marlin/src/module/planner.h | 12 ++ buildroot/tests/LPC1768 | 2 +- buildroot/tests/mega2560 | 2 +- ini/native.ini | 2 +- 16 files changed, 273 insertions(+), 180 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index c66745d8bf..a635e4a302 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1543,7 +1543,7 @@ */ #define SHOW_BOOTSCREEN // Show the Marlin bootscreen on startup. ** ENABLE FOR PRODUCTION ** #if ENABLED(SHOW_BOOTSCREEN) - #define BOOTSCREEN_TIMEOUT 4000 // (ms) Total Duration to display the boot screen(s) + #define BOOTSCREEN_TIMEOUT 3000 // (ms) Total Duration to display the boot screen(s) #if EITHER(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI) #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) #endif @@ -2190,9 +2190,10 @@ */ //#define BABYSTEPPING #if ENABLED(BABYSTEPPING) - //#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR + //#define INTEGRATED_BABYSTEPPING // Integration of babystepping into the Stepper ISR + //#define EP_BABYSTEPPING // M293/M294 babystepping with EMERGENCY_PARSER support //#define BABYSTEP_WITHOUT_HOMING - //#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement). + //#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement) //#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA! //#define BABYSTEP_INVERT_Z // Enable if Z babysteps should go the other way //#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 08c69aa5b7..f1d43e7b60 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -726,6 +726,10 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) { #endif } +#if BOTH(EP_BABYSTEPPING, EMERGENCY_PARSER) + #include "feature/babystep.h" +#endif + /** * Standard idle routine keeps the machine alive: * - Core Marlin activities @@ -848,6 +852,11 @@ void idle(const bool no_stepper_sleep/*=false*/) { // Handle Joystick jogging TERN_(POLL_JOG, joystick.inject_jog_moves()); + // Async Babystepping via the Emergency Parser + #if BOTH(EP_BABYSTEPPING, EMERGENCY_PARSER) + babystep.do_ep_steps(); + #endif + // Direct Stepping TERN_(DIRECT_STEPPING, page_manager.write_responses()); diff --git a/Marlin/src/feature/babystep.cpp b/Marlin/src/feature/babystep.cpp index 2e3d6a9fd2..c8c1d42f88 100644 --- a/Marlin/src/feature/babystep.cpp +++ b/Marlin/src/feature/babystep.cpp @@ -26,7 +26,7 @@ #include "babystep.h" #include "../MarlinCore.h" -#include "../module/motion.h" // for axes_should_home() +#include "../module/motion.h" // for axes_should_home(), BABYSTEP_ALLOWED #include "../module/planner.h" // for axis_steps_per_mm[] #include "../module/stepper.h" @@ -42,6 +42,10 @@ volatile int16_t Babystep::steps[BS_AXIS_IND(Z_AXIS) + 1]; #endif int16_t Babystep::accum; +#if BOTH(EP_BABYSTEPPING, EMERGENCY_PARSER) + int16_t Babystep::ep_babysteps; +#endif + void Babystep::step_axis(const AxisEnum axis) { const int16_t curTodo = steps[BS_AXIS_IND(axis)]; // get rid of volatile for performance if (curTodo) { @@ -76,4 +80,10 @@ void Babystep::add_steps(const AxisEnum axis, const int16_t distance) { TERN_(INTEGRATED_BABYSTEPPING, if (has_steps()) stepper.initiateBabystepping()); } +#if ENABLED(EP_BABYSTEPPING) + // Step Z for M293 / M294 + void Babystep::z_up() { if (BABYSTEP_ALLOWED()) add_steps(Z_AXIS, +BABYSTEP_SIZE_Z); } + void Babystep::z_down() { if (BABYSTEP_ALLOWED()) add_steps(Z_AXIS, -BABYSTEP_SIZE_Z); } +#endif + #endif // BABYSTEPPING diff --git a/Marlin/src/feature/babystep.h b/Marlin/src/feature/babystep.h index bbf0c5a260..1e319ec544 100644 --- a/Marlin/src/feature/babystep.h +++ b/Marlin/src/feature/babystep.h @@ -52,6 +52,10 @@ public: static volatile int16_t steps[BS_AXIS_IND(Z_AXIS) + 1]; static int16_t accum; // Total babysteps in current edit + #if BOTH(EP_BABYSTEPPING, EMERGENCY_PARSER) + static int16_t ep_babysteps; + #endif + #if ENABLED(BABYSTEP_DISPLAY_TOTAL) static int16_t axis_total[BS_TOTAL_IND(Z_AXIS) + 1]; // Total babysteps since G28 static void reset_total(const AxisEnum axis) { @@ -63,6 +67,21 @@ public: static void add_steps(const AxisEnum axis, const int16_t distance); static void add_mm(const AxisEnum axis, const_float_t mm); + #if ENABLED(EP_BABYSTEPPING) + // Step Z for M293 / M294 + static void z_up(); + static void z_down(); + #if ENABLED(EMERGENCY_PARSER) + // Step Z according to steps accumulated by the EP + FORCE_INLINE static void do_ep_steps() { + if (ep_babysteps) { + if (ep_babysteps > 0) { z_up(); ep_babysteps--; } + else { z_down(); ep_babysteps++; } + } + } + #endif + #endif // EP_BABYSTEPPING + #if ENABLED(BD_SENSOR) static void set_mm(const AxisEnum axis, const_float_t mm); #endif diff --git a/Marlin/src/feature/e_parser.cpp b/Marlin/src/feature/e_parser.cpp index b50a12d1af..da193ed30a 100644 --- a/Marlin/src/feature/e_parser.cpp +++ b/Marlin/src/feature/e_parser.cpp @@ -24,7 +24,7 @@ * e_parser.cpp - Intercept special commands directly in the serial stream */ -#include "../inc/MarlinConfigPre.h" +#include "../inc/MarlinConfig.h" #if ENABLED(EMERGENCY_PARSER) @@ -39,10 +39,193 @@ bool EmergencyParser::killed_by_M112, // = false EmergencyParser::enabled; #if ENABLED(HOST_PROMPT_SUPPORT) + #include "host_actions.h" uint8_t EmergencyParser::M876_reason; // = 0 #endif // Global instance EmergencyParser emergency_parser; +// External references +extern bool wait_for_user, wait_for_heatup; + +#if ENABLED(EP_BABYSTEPPING) + #include "babystep.h" +#endif + +#if ENABLED(REALTIME_REPORTING_COMMANDS) + // From motion.h, which cannot be included here + void report_current_position_moving(); + void quickpause_stepper(); + void quickresume_stepper(); +#endif + +void EmergencyParser::update(EmergencyParser::State &state, const uint8_t c) { + switch (state) { + case EP_RESET: + switch (c) { + case ' ': case '\n': case '\r': break; + case 'N': state = EP_N; break; + case 'M': state = EP_M; break; + #if ENABLED(REALTIME_REPORTING_COMMANDS) + case 'S': state = EP_S; break; + case 'P': state = EP_P; break; + case 'R': state = EP_R; break; + #endif + #if ENABLED(SOFT_RESET_VIA_SERIAL) + case '^': state = EP_ctrl; break; + case 'K': state = EP_K; break; + #endif + default: state = EP_IGNORE; + } + break; + + case EP_N: + switch (c) { + case '0' ... '9': + case '-': case ' ': break; + case 'M': state = EP_M; break; + #if ENABLED(REALTIME_REPORTING_COMMANDS) + case 'S': state = EP_S; break; + case 'P': state = EP_P; break; + case 'R': state = EP_R; break; + #endif + default: state = EP_IGNORE; + } + break; + + #if ENABLED(REALTIME_REPORTING_COMMANDS) + case EP_S: state = (c == '0') ? EP_S0 : EP_IGNORE; break; + case EP_S0: state = (c == '0') ? EP_S00 : EP_IGNORE; break; + case EP_S00: state = (c == '0') ? EP_GRBL_STATUS : EP_IGNORE; break; + + case EP_R: state = (c == '0') ? EP_R0 : EP_IGNORE; break; + case EP_R0: state = (c == '0') ? EP_R00 : EP_IGNORE; break; + case EP_R00: state = (c == '0') ? EP_GRBL_RESUME : EP_IGNORE; break; + + case EP_P: state = (c == '0') ? EP_P0 : EP_IGNORE; break; + case EP_P0: state = (c == '0') ? EP_P00 : EP_IGNORE; break; + case EP_P00: state = (c == '0') ? EP_GRBL_PAUSE : EP_IGNORE; break; + #endif + + #if ENABLED(SOFT_RESET_VIA_SERIAL) + case EP_ctrl: state = (c == 'X') ? EP_KILL : EP_IGNORE; break; + case EP_K: state = (c == 'I') ? EP_KI : EP_IGNORE; break; + case EP_KI: state = (c == 'L') ? EP_KIL : EP_IGNORE; break; + case EP_KIL: state = (c == 'L') ? EP_KILL : EP_IGNORE; break; + #endif + + case EP_M: + switch (c) { + case ' ': break; + case '1': state = EP_M1; break; + #if ENABLED(EP_BABYSTEPPING) + case '2': state = EP_M2; break; + #endif + case '4': state = EP_M4; break; + #if HAS_MEDIA + case '5': state = EP_M5; break; + #endif + #if ENABLED(HOST_PROMPT_SUPPORT) + case '8': state = EP_M8; break; + #endif + default: state = EP_IGNORE; + } + break; + + case EP_M1: + switch (c) { + case '0': state = EP_M10; break; + case '1': state = EP_M11; break; + default: state = EP_IGNORE; + } + break; + + case EP_M10: state = (c == '8') ? EP_M108 : EP_IGNORE; break; + case EP_M11: state = (c == '2') ? EP_M112 : EP_IGNORE; break; + case EP_M4: state = (c == '1') ? EP_M41 : EP_IGNORE; break; + case EP_M41: state = (c == '0') ? EP_M410 : EP_IGNORE; break; + + #if HAS_MEDIA + case EP_M5: state = (c == '2') ? EP_M52 : EP_IGNORE; break; + case EP_M52: state = (c == '4') ? EP_M524 : EP_IGNORE; break; + #endif + + #if ENABLED(EP_BABYSTEPPING) + case EP_M2: + switch (c) { + case '9': state = EP_M29; break; + default: state = EP_IGNORE; + } + break; + + case EP_M29: + switch (c) { + case '3': state = EP_M293; break; + case '4': state = EP_M294; break; + default: state = EP_IGNORE; + } + break; + #endif + + #if ENABLED(HOST_PROMPT_SUPPORT) + + case EP_M8: state = (c == '7') ? EP_M87 : EP_IGNORE; break; + case EP_M87: state = (c == '6') ? EP_M876 : EP_IGNORE; break; + + case EP_M876: + switch (c) { + case ' ': break; + case 'S': state = EP_M876S; break; + default: state = EP_IGNORE; break; + } + break; + + case EP_M876S: + switch (c) { + case ' ': break; + case '0' ... '9': + state = EP_M876SN; + M876_reason = uint8_t(c - '0'); + break; + } + break; + + #endif + + case EP_IGNORE: + if (ISEOL(c)) state = EP_RESET; + break; + + default: + if (ISEOL(c)) { + if (enabled) switch (state) { + case EP_M108: wait_for_user = wait_for_heatup = false; break; + case EP_M112: killed_by_M112 = true; break; + case EP_M410: quickstop_by_M410 = true; break; + #if ENABLED(EP_BABYSTEPPING) + case EP_M293: babystep.ep_babysteps++; break; + case EP_M294: babystep.ep_babysteps--; break; + #endif + #if HAS_MEDIA + case EP_M524: sd_abort_by_M524 = true; break; + #endif + #if ENABLED(HOST_PROMPT_SUPPORT) + case EP_M876SN: hostui.handle_response(M876_reason); break; + #endif + #if ENABLED(REALTIME_REPORTING_COMMANDS) + case EP_GRBL_STATUS: report_current_position_moving(); break; + case EP_GRBL_PAUSE: quickpause_stepper(); break; + case EP_GRBL_RESUME: quickresume_stepper(); break; + #endif + #if ENABLED(SOFT_RESET_VIA_SERIAL) + case EP_KILL: hal.reboot(); break; + #endif + default: break; + } + state = EP_RESET; + } + } +} + #endif // EMERGENCY_PARSER diff --git a/Marlin/src/feature/e_parser.h b/Marlin/src/feature/e_parser.h index df4456d8d3..8dacb0581c 100644 --- a/Marlin/src/feature/e_parser.h +++ b/Marlin/src/feature/e_parser.h @@ -27,24 +27,6 @@ #include "../inc/MarlinConfigPre.h" -#if ENABLED(HOST_PROMPT_SUPPORT) - #include "host_actions.h" -#endif - -// External references -extern bool wait_for_user, wait_for_heatup; - -#if ENABLED(REALTIME_REPORTING_COMMANDS) - // From motion.h, which cannot be included here - void report_current_position_moving(); - void quickpause_stepper(); - void quickresume_stepper(); -#endif - -#if ENABLED(SOFT_RESET_VIA_SERIAL) - void HAL_reboot(); -#endif - class EmergencyParser { public: @@ -61,6 +43,9 @@ public: #if HAS_MEDIA EP_M5, EP_M52, EP_M524, #endif + #if ENABLED(EP_BABYSTEPPING) + EP_M2, EP_M29, EP_M293, EP_M294, + #endif #if ENABLED(HOST_PROMPT_SUPPORT) EP_M8, EP_M87, EP_M876, EP_M876S, EP_M876SN, #endif @@ -92,149 +77,7 @@ public: FORCE_INLINE static void enable() { enabled = true; } FORCE_INLINE static void disable() { enabled = false; } - FORCE_INLINE static void update(State &state, const uint8_t c) { - switch (state) { - case EP_RESET: - switch (c) { - case ' ': case '\n': case '\r': break; - case 'N': state = EP_N; break; - case 'M': state = EP_M; break; - #if ENABLED(REALTIME_REPORTING_COMMANDS) - case 'S': state = EP_S; break; - case 'P': state = EP_P; break; - case 'R': state = EP_R; break; - #endif - #if ENABLED(SOFT_RESET_VIA_SERIAL) - case '^': state = EP_ctrl; break; - case 'K': state = EP_K; break; - #endif - default: state = EP_IGNORE; - } - break; - - case EP_N: - switch (c) { - case '0' ... '9': - case '-': case ' ': break; - case 'M': state = EP_M; break; - #if ENABLED(REALTIME_REPORTING_COMMANDS) - case 'S': state = EP_S; break; - case 'P': state = EP_P; break; - case 'R': state = EP_R; break; - #endif - default: state = EP_IGNORE; - } - break; - - #if ENABLED(REALTIME_REPORTING_COMMANDS) - case EP_S: state = (c == '0') ? EP_S0 : EP_IGNORE; break; - case EP_S0: state = (c == '0') ? EP_S00 : EP_IGNORE; break; - case EP_S00: state = (c == '0') ? EP_GRBL_STATUS : EP_IGNORE; break; - - case EP_R: state = (c == '0') ? EP_R0 : EP_IGNORE; break; - case EP_R0: state = (c == '0') ? EP_R00 : EP_IGNORE; break; - case EP_R00: state = (c == '0') ? EP_GRBL_RESUME : EP_IGNORE; break; - - case EP_P: state = (c == '0') ? EP_P0 : EP_IGNORE; break; - case EP_P0: state = (c == '0') ? EP_P00 : EP_IGNORE; break; - case EP_P00: state = (c == '0') ? EP_GRBL_PAUSE : EP_IGNORE; break; - #endif - - #if ENABLED(SOFT_RESET_VIA_SERIAL) - case EP_ctrl: state = (c == 'X') ? EP_KILL : EP_IGNORE; break; - case EP_K: state = (c == 'I') ? EP_KI : EP_IGNORE; break; - case EP_KI: state = (c == 'L') ? EP_KIL : EP_IGNORE; break; - case EP_KIL: state = (c == 'L') ? EP_KILL : EP_IGNORE; break; - #endif - - case EP_M: - switch (c) { - case ' ': break; - case '1': state = EP_M1; break; - case '4': state = EP_M4; break; - #if HAS_MEDIA - case '5': state = EP_M5; break; - #endif - #if ENABLED(HOST_PROMPT_SUPPORT) - case '8': state = EP_M8; break; - #endif - default: state = EP_IGNORE; - } - break; - - case EP_M1: - switch (c) { - case '0': state = EP_M10; break; - case '1': state = EP_M11; break; - default: state = EP_IGNORE; - } - break; - - case EP_M10: state = (c == '8') ? EP_M108 : EP_IGNORE; break; - case EP_M11: state = (c == '2') ? EP_M112 : EP_IGNORE; break; - case EP_M4: state = (c == '1') ? EP_M41 : EP_IGNORE; break; - case EP_M41: state = (c == '0') ? EP_M410 : EP_IGNORE; break; - - #if HAS_MEDIA - case EP_M5: state = (c == '2') ? EP_M52 : EP_IGNORE; break; - case EP_M52: state = (c == '4') ? EP_M524 : EP_IGNORE; break; - #endif - - #if ENABLED(HOST_PROMPT_SUPPORT) - - case EP_M8: state = (c == '7') ? EP_M87 : EP_IGNORE; break; - case EP_M87: state = (c == '6') ? EP_M876 : EP_IGNORE; break; - - case EP_M876: - switch (c) { - case ' ': break; - case 'S': state = EP_M876S; break; - default: state = EP_IGNORE; break; - } - break; - - case EP_M876S: - switch (c) { - case ' ': break; - case '0' ... '9': - state = EP_M876SN; - M876_reason = uint8_t(c - '0'); - break; - } - break; - - #endif - - case EP_IGNORE: - if (ISEOL(c)) state = EP_RESET; - break; - - default: - if (ISEOL(c)) { - if (enabled) switch (state) { - case EP_M108: wait_for_user = wait_for_heatup = false; break; - case EP_M112: killed_by_M112 = true; break; - case EP_M410: quickstop_by_M410 = true; break; - #if HAS_MEDIA - case EP_M524: sd_abort_by_M524 = true; break; - #endif - #if ENABLED(HOST_PROMPT_SUPPORT) - case EP_M876SN: hostui.handle_response(M876_reason); break; - #endif - #if ENABLED(REALTIME_REPORTING_COMMANDS) - case EP_GRBL_STATUS: report_current_position_moving(); break; - case EP_GRBL_PAUSE: quickpause_stepper(); break; - case EP_GRBL_RESUME: quickresume_stepper(); break; - #endif - #if ENABLED(SOFT_RESET_VIA_SERIAL) - case EP_KILL: HAL_reboot(); break; - #endif - default: break; - } - state = EP_RESET; - } - } - } + static void update(State &state, const uint8_t c); private: static bool enabled; diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 2313bbf78f..530cde7901 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -757,6 +757,10 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { #if ENABLED(BABYSTEPPING) case 290: M290(); break; // M290: Babystepping + #if ENABLED(EP_BABYSTEPPING) + case 293: IF_DISABLED(EMERGENCY_PARSER, M293()); break; // M293: Babystep up + case 294: IF_DISABLED(EMERGENCY_PARSER, M294()); break; // M294: Babystep down + #endif #endif #if HAS_SOUND diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 9283a92e39..52e8fbf802 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -930,6 +930,10 @@ private: #if ENABLED(BABYSTEPPING) static void M290(); + #if ENABLED(EP_BABYSTEPPING) + static void M293(); + static void M294(); + #endif #endif #if HAS_SOUND diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index 239407816b..8ca6d07ce2 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -54,6 +54,9 @@ * M115: Capabilities string and extended capabilities report * If a capability is not reported, hosts should assume * the capability is not present. + * + * NOTE: Always make sure to add new capabilities to the RepRap Wiki + * at https://reprap.org/wiki/Firmware_Capabilities_Protocol */ void GcodeSuite::M115() { SERIAL_ECHOPGM("FIRMWARE_NAME:Marlin" @@ -201,6 +204,9 @@ void GcodeSuite::M115() { // BABYSTEPPING (M290) cap_line(F("BABYSTEPPING"), ENABLED(BABYSTEPPING)); + // EP_BABYSTEP (M293, M294) + cap_line(F("EP_BABYSTEP"), ENABLED(EP_BABYSTEPPING)); + // CHAMBER_TEMPERATURE (M141, M191) cap_line(F("CHAMBER_TEMPERATURE"), ENABLED(HAS_HEATED_CHAMBER)); diff --git a/Marlin/src/gcode/motion/M290.cpp b/Marlin/src/gcode/motion/M290.cpp index 4fe83ccd40..d10f9ee73c 100644 --- a/Marlin/src/gcode/motion/M290.cpp +++ b/Marlin/src/gcode/motion/M290.cpp @@ -131,4 +131,10 @@ void GcodeSuite::M290() { } } +#if ENABLED(EP_BABYSTEPPING) && DISABLED(EMERGENCY_PARSER) + // Without Emergency Parser M293/M294 will be added to the queue + void GcodeSuite::M293() { babystep.z_up(); } + void GcodeSuite::M294() { babystep.z_down(); } +#endif + #endif // BABYSTEPPING diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index f760920854..5c6297ba60 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -729,6 +729,13 @@ #warning "BABYSTEPPING is recommended with BD_SENSOR." #endif +/** + * EP Babystepping works best with EMERGENCY_PARSER + */ +#if ENABLED(EP_BABYSTEPPING) && DISABLED(EMERGENCY_PARSER) + #warning "EMERGENCY_PARSER is recommended for EP_BABYSTEPPING." +#endif + /** * POLAR warnings */ diff --git a/Marlin/src/lcd/menu/menu.h b/Marlin/src/lcd/menu/menu.h index 1face4774b..d4cbfd7a73 100644 --- a/Marlin/src/lcd/menu/menu.h +++ b/Marlin/src/lcd/menu/menu.h @@ -242,17 +242,6 @@ void _lcd_draw_homing(); #else void lcd_babystep_z(); #endif - - #if ENABLED(BABYSTEP_MILLIMETER_UNITS) - #define BABYSTEP_SIZE_X int32_t((BABYSTEP_MULTIPLICATOR_XY) * planner.settings.axis_steps_per_mm[X_AXIS]) - #define BABYSTEP_SIZE_Y int32_t((BABYSTEP_MULTIPLICATOR_XY) * planner.settings.axis_steps_per_mm[Y_AXIS]) - #define BABYSTEP_SIZE_Z int32_t((BABYSTEP_MULTIPLICATOR_Z) * planner.settings.axis_steps_per_mm[Z_AXIS]) - #else - #define BABYSTEP_SIZE_X BABYSTEP_MULTIPLICATOR_XY - #define BABYSTEP_SIZE_Y BABYSTEP_MULTIPLICATOR_XY - #define BABYSTEP_SIZE_Z BABYSTEP_MULTIPLICATOR_Z - #endif - #endif #if ENABLED(TOUCH_SCREEN_CALIBRATION) diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index 4b68c5f656..ee79c913af 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -88,6 +88,18 @@ MMM_TO_MMS(manual_feedrate_mm_m.u), MMM_TO_MMS(manual_feedrate_mm_m.v), MMM_TO_MMS(manual_feedrate_mm_m.w)); #endif +#if ENABLED(BABYSTEPPING) + #if ENABLED(BABYSTEP_MILLIMETER_UNITS) + #define BABYSTEP_SIZE_X int32_t((BABYSTEP_MULTIPLICATOR_XY) * planner.settings.axis_steps_per_mm[X_AXIS]) + #define BABYSTEP_SIZE_Y int32_t((BABYSTEP_MULTIPLICATOR_XY) * planner.settings.axis_steps_per_mm[Y_AXIS]) + #define BABYSTEP_SIZE_Z int32_t((BABYSTEP_MULTIPLICATOR_Z) * planner.settings.axis_steps_per_mm[Z_AXIS]) + #else + #define BABYSTEP_SIZE_X BABYSTEP_MULTIPLICATOR_XY + #define BABYSTEP_SIZE_Y BABYSTEP_MULTIPLICATOR_XY + #define BABYSTEP_SIZE_Z BABYSTEP_MULTIPLICATOR_Z + #endif +#endif + #if IS_KINEMATIC && HAS_JUNCTION_DEVIATION #define HAS_DIST_MM_ARG 1 #endif diff --git a/buildroot/tests/LPC1768 b/buildroot/tests/LPC1768 index ee01bb621f..d616f7f48f 100755 --- a/buildroot/tests/LPC1768 +++ b/buildroot/tests/LPC1768 @@ -44,7 +44,7 @@ opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER ADAPTIVE_FAN_SLOWING TE FILAMENT_WIDTH_SENSOR FILAMENT_LCD_DISPLAY PID_EXTRUSION_SCALING SOUND_MENU_ITEM \ NOZZLE_AS_PROBE AUTO_BED_LEVELING_BILINEAR PREHEAT_BEFORE_LEVELING G29_RETRY_AND_RECOVER Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \ ASSISTED_TRAMMING ASSISTED_TRAMMING_WIZARD REPORT_TRAMMING_MM ASSISTED_TRAMMING_WAIT_POSITION \ - BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET BABYSTEP_GFX_OVERLAY \ + BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET EP_BABYSTEPPING BABYSTEP_GFX_OVERLAY \ PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE SLOW_PWM_HEATERS PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT \ Z_SAFE_HOMING ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE \ HOST_KEEPALIVE_FEATURE HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT \ diff --git a/buildroot/tests/mega2560 b/buildroot/tests/mega2560 index ad9763451f..1490c9e4aa 100755 --- a/buildroot/tests/mega2560 +++ b/buildroot/tests/mega2560 @@ -30,7 +30,7 @@ opt_enable AUTO_BED_LEVELING_UBL AVOID_OBSTACLES RESTORE_LEVELING_AFTER_G28 DEBU REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER LIGHTWEIGHT_UI STATUS_MESSAGE_SCROLLING SHOW_CUSTOM_BOOTSCREEN BOOT_MARLIN_LOGO_SMALL \ SDSUPPORT SDCARD_SORT_ALPHA USB_FLASH_DRIVE_SUPPORT AUTO_REPORT_SD_STATUS SCROLL_LONG_FILENAMES MEDIA_MENU_AT_TOP \ EEPROM_SETTINGS EEPROM_CHITCHAT GCODE_MACROS CUSTOM_MENU_MAIN FREEZE_FEATURE CANCEL_OBJECTS SOUND_MENU_ITEM \ - MULTI_NOZZLE_DUPLICATION CLASSIC_JERK LIN_ADVANCE ADVANCE_K_EXTRA QUICK_HOME \ + EMERGENCY_PARSER MULTI_NOZZLE_DUPLICATION CLASSIC_JERK LIN_ADVANCE ADVANCE_K_EXTRA QUICK_HOME \ SET_PROGRESS_MANUALLY SET_PROGRESS_PERCENT PRINT_PROGRESS_SHOW_DECIMALS SHOW_REMAINING_TIME \ ENCODER_NOISE_FILTER BABYSTEPPING BABYSTEP_XY NANODLP_Z_SYNC I2C_POSITION_ENCODERS M114_DETAIL exec_test $1 $2 "Azteeg X3 Pro | EXTRUDERS 5 | RRDFGSC | UBL | LIN_ADVANCE ..." "$3" diff --git a/ini/native.ini b/ini/native.ini index 481dac1777..03c6c59265 100644 --- a/ini/native.ini +++ b/ini/native.ini @@ -43,7 +43,7 @@ debug_build_flags = -fstack-protector-strong -g -g3 -ggdb lib_compat_mode = off build_src_filter = ${common.default_src_filter} + lib_deps = ${common.lib_deps} - MarlinSimUI=https://github.com/p3p/MarlinSimUI/archive/refs/heads/bugfix-2.1.x.zip + MarlinSimUI=https://github.com/p3p/MarlinSimUI/archive/bugfix-2.1.x.zip Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/marlin_sim_native.zip LiquidCrystal=https://github.com/p3p/LiquidCrystal/archive/master.zip extra_scripts = ${common.extra_scripts} From a3eace117ced5ad72227046465a6d878f66261d9 Mon Sep 17 00:00:00 2001 From: EvilGremlin <22657714+EvilGremlin@users.noreply.github.com> Date: Thu, 25 May 2023 10:32:04 +0300 Subject: [PATCH 476/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Imp?= =?UTF-8?q?rove=20missing=20translations=20script=20(#25841)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- .../share/scripts/findMissingTranslations.sh | 69 +++++++++++++++++-- 1 file changed, 63 insertions(+), 6 deletions(-) diff --git a/buildroot/share/scripts/findMissingTranslations.sh b/buildroot/share/scripts/findMissingTranslations.sh index 24a2a910a2..ece3a1fe59 100755 --- a/buildroot/share/scripts/findMissingTranslations.sh +++ b/buildroot/share/scripts/findMissingTranslations.sh @@ -9,6 +9,29 @@ # If no language codes are specified then all languages will be checked # +langname() { + case "$1" in + an ) echo "Aragonese" ;; bg ) echo "Bulgarian" ;; + ca ) echo "Catalan" ;; cz ) echo "Czech" ;; + da ) echo "Danish" ;; de ) echo "German" ;; + el ) echo "Greek" ;; el_CY ) echo "Greek (Cyprus)" ;; + el_gr) echo "Greek (Greece)" ;; en ) echo "English" ;; + es ) echo "Spanish" ;; eu ) echo "Basque-Euskera" ;; + fi ) echo "Finnish" ;; fr ) echo "French" ;; + fr_na) echo "French (no accent)" ;; gl ) echo "Galician" ;; + hr ) echo "Croatian (Hrvatski)" ;; hu ) echo "Hungarian / Magyar" ;; + it ) echo "Italian" ;; jp_kana) echo "Japanese (Kana)" ;; + ko_KR) echo "Korean" ;; nl ) echo "Dutch" ;; + pl ) echo "Polish" ;; pt ) echo "Portuguese" ;; + pt_br) echo "Portuguese (Brazil)" ;; ru ) echo "Russian" ;; + sk ) echo "Slovak" ;; sv ) echo "Swedish" ;; + test ) echo "TEST" ;; tr ) echo "Turkish" ;; + uk ) echo "Ukrainian" ;; vi ) echo "Vietnamese" ;; + zh_CN) echo "Simplified Chinese" ;; zh_TW ) echo "Traditional Chinese" ;; + * ) echo "" ;; + esac +} + LANGHOME="Marlin/src/lcd/language" [ -d $LANGHOME ] && cd $LANGHOME @@ -20,7 +43,7 @@ TEST_LANGS="" if [[ -n $@ ]]; then for K in "$@"; do for F in $FILES; do - [[ "$F" != "${F%$K*}" ]] && TEST_LANGS+="$F " + [[ $F == $K ]] && TEST_LANGS+="$F " done done [[ -z $TEST_LANGS ]] && { echo "No languages matching $@." ; exit 0 ; } @@ -28,20 +51,54 @@ else TEST_LANGS=$FILES fi -echo "Missing strings for $TEST_LANGS..." +echo "Finding all missing strings for $TEST_LANGS..." +WORD_LINES=() # Complete lines for all words (or, grep out of en at the end instead) +ALL_MISSING=() # All missing languages for each missing word +#NEED_WORDS=() # All missing words across all specified languages + +WORD_COUNT=0 + +# Go through all strings in the English language file +# For each word, query all specified languages for the word +# If the word is missing, add its language to the list for WORD in $(awk '/LSTR/{print $2}' language_en.h); do + # Skip MSG_MARLIN [[ $WORD == "MSG_MARLIN" ]] && break - LANG_LIST="" + + ((WORD_COUNT++)) + + # Find all selected languages that lack the string + LANG_MISSING=" " for LANG in $TEST_LANGS; do if [[ $(grep -c -E "^ *LSTR +$WORD\b" language_${LANG}.h) -eq 0 ]]; then INHERIT=$(awk '/using namespace/{print $3}' language_${LANG}.h | sed -E 's/Language_([a-zA-Z_]+)\s*;/\1/') if [[ -z $INHERIT || $INHERIT == "en" ]]; then - LANG_LIST+=" $LANG" + LANG_MISSING+="$LANG " elif [[ $(grep -c -E "^ *LSTR +$WORD\b" language_${INHERIT}.h) -eq 0 ]]; then - LANG_LIST+=" $LANG" + LANG_MISSING+="$LANG " fi fi done - [[ -n $LANG_LIST ]] && printf "%-38s :%s\n" "$WORD" "$LANG_LIST" + # For each word store all the missing languages + if [[ $LANG_MISSING != " " ]]; then + WORD_LINES+=("$(grep -m 1 -E "$WORD\b" language_en.h)") + ALL_MISSING+=("$LANG_MISSING") + #NEED_WORDS+=($WORD) + fi +done + +echo +echo "${#WORD_LINES[@]} out of $WORD_COUNT LCD strings need translation" + +for LANG in $TEST_LANGS; do + HED=0 ; IND=0 + for WORDLANGS in "${ALL_MISSING[@]}"; do + # If the current word is missing from the current language then print it + if [[ $WORDLANGS =~ " $LANG " ]]; then + [[ $HED == 0 ]] && { echo ; echo "Missing strings for language_$LANG.h ($(langname $LANG)):" ; HED=1 ; } + echo "${WORD_LINES[$IND]}" + fi + ((IND++)) + done done From d20ce5ff0a4d45e2ac7091832c86d4441f0356a9 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 26 May 2023 00:21:31 +0000 Subject: [PATCH 477/659] [cron] Bump distribution date (2023-05-26) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 4a4d913781..bb0da06648 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-25" +//#define STRING_DISTRIBUTION_DATE "2023-05-26" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index be7fa43375..a203e9267c 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-25" + #define STRING_DISTRIBUTION_DATE "2023-05-26" #endif /** From f73fe76b6c5f9088222265e47494611e9d8bc379 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 26 May 2023 17:50:42 -0500 Subject: [PATCH 478/659] =?UTF-8?q?=F0=9F=8C=90=20Language=20export=20to?= =?UTF-8?q?=20CSV?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + Marlin/src/lcd/language/language_el_gr.h | 2 +- buildroot/share/scripts/exportTranslations.py | 193 ++++++++++++++++++ .../share/scripts/findMissingTranslations.sh | 6 +- 4 files changed, 199 insertions(+), 4 deletions(-) create mode 100755 buildroot/share/scripts/exportTranslations.py diff --git a/.gitignore b/.gitignore index a7f8a091aa..cff637d36e 100755 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,8 @@ bdf2u8g.exe genpages.exe marlin_config.json mczip.h +language*.csv +csv-out/ *.gen *.sublime-workspace diff --git a/Marlin/src/lcd/language/language_el_gr.h b/Marlin/src/lcd/language/language_el_gr.h index d4eabb70ce..696b1d055d 100644 --- a/Marlin/src/lcd/language/language_el_gr.h +++ b/Marlin/src/lcd/language/language_el_gr.h @@ -147,7 +147,7 @@ namespace Language_el_gr { LSTR MSG_STORE_EEPROM = _UxGT("Αποθήκευση"); LSTR MSG_LOAD_EEPROM = _UxGT("Φόρτωση"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("Επαναφορά ασφαλούς αντιγράφου"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ανανέωση"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ανανέωση"); LSTR MSG_INFO_SCREEN = _UxGT("Οθόνη πληροφόρησης"); LSTR MSG_PREPARE = _UxGT("Προετοιμασία"); LSTR MSG_TUNE = _UxGT("Συντονισμός"); diff --git a/buildroot/share/scripts/exportTranslations.py b/buildroot/share/scripts/exportTranslations.py new file mode 100755 index 0000000000..620c2e77b1 --- /dev/null +++ b/buildroot/share/scripts/exportTranslations.py @@ -0,0 +1,193 @@ +#!/usr/bin/env python3 +# +# exportTranslations.py +# +# Export LCD language strings to CSV files for easier translation. +# Use importTranslations.py to import CSV into the language files. +# + +import re +from pathlib import Path + +# Write multiple sheets if true, otherwise write one giant sheet +MULTISHEET = True + +# Where to look for the language files +LANGHOME = "Marlin/src/lcd/language" + +# Check for the path to the language files +if not Path(LANGHOME).is_dir(): + print("Error: Couldn't find the '%s' directory." % LANGHOME) + print("Edit LANGHOME or cd to the root of the repo before running.") + exit(1) + +# A dictionary to contain language names +LANGNAME = { + 'an': "Aragonese", + 'bg': "Bulgarian", + 'ca': "Catalan", + 'cz': "Czech", + 'da': "Danish", + 'de': "German", + 'el': "Greek", 'el_CY': "Greek (Cyprus)", 'el_gr': "Greek (Greece)", + 'en': "English", + 'es': "Spanish", + 'eu': "Basque-Euskera", + 'fi': "Finnish", + 'fr': "French", 'fr_na': "French (no accent)", + 'gl': "Galician", + 'hr': "Croatian (Hrvatski)", + 'hu': "Hungarian / Magyar", + 'it': "Italian", + 'jp_kana': "Japanese (Kana)", + 'ko_KR': "Korean", + 'nl': "Dutch", + 'pl': "Polish", + 'pt': "Portuguese", 'pt_br': "Portuguese (Brazil)", + 'ro': "Romanian", + 'ru': "Russian", + 'sk': "Slovak", + 'sv': "Swedish", + 'tr': "Turkish", + 'uk': "Ukrainian", + 'vi': "Vietnamese", + 'zh_CN': "Simplified Chinese", 'zh_TW': "Traditional Chinese" +} + +# A limit just for testing +LIMIT = 0 + +# A dictionary to contain strings for each language. +# Init with 'en' so English will always be first. +language_strings = { 'en': 0 } + +# A dictionary to contain all distinct LCD string names +names = {} + +# Get all "language_*.h" files +langfiles = sorted(list(Path(LANGHOME).glob('language_*.h'))) + +# Read each language file +for langfile in langfiles: + # Get the language code from the filename + langcode = langfile.name.replace('language_', '').replace('.h', '') + + # Skip 'test' and any others that we don't want + if langcode in ['test']: continue + + # Open the file + f = open(langfile, 'r', encoding='utf-8') + if not f: continue + + # Flags to indicate a wide or tall section + wideflag = False + tallflag = False + # A counter for the number of strings in the file + stringcount = 0 + # A dictionary to hold all the strings + strings = { 'narrow': {}, 'wide': {}, 'tall': {} } + # Read each line in the file + for line in f: + # Clean up the line for easier parsing + line = line.split("//")[0].strip() + if line.endswith(';'): line = line[:-1].strip() + + # Check for wide or tall sections, assume no complicated nesting + if line.startswith("#endif") or line.startswith("#else"): + wideflag = False + tallflag = False + elif re.match(r'#if.*WIDTH\s*>=?\s*2[01].*', line): wideflag = True + elif re.match(r'#if.*LCD_HEIGHT\s*>=?\s*4.*', line): tallflag = True + + # For string-defining lines capture the string data + match = re.match(r'LSTR\s+([A-Z0-9_]+)\s*=\s*(.+)\s*', line) + if match: + # The name is the first captured group + name = match.group(1) + # The value is the second captured group + value = match.group(2) + # Replace escaped quotes temporarily + value = value.replace('\\"', '__Q__') + + # Remove all _UxGT wrappers from the value in a non-greedy way + value = re.sub(r'_UxGT\((".*?")\)', r'\1', value) + + # Multi-line strings will get one or more bars | for identification + multiline = 0 + multimatch = re.match(r'.*MSG_(\d)_LINE\s*\(\s*(.+?)\s*\).*', value) + if multimatch: + multiline = int(multimatch.group(1)) + value = '|' + re.sub(r'"\s*,\s*"', '|', multimatch.group(2)) + + # Wrap inline defines in parentheses + value = re.sub(r' *([A-Z0-9]+_[A-Z0-9_]+) *', r'(\1)', value) + # Remove quotes around strings + value = re.sub(r'"(.*?)"', r'\1', value).replace('__Q__', '"') + # Store all unique names as dictionary keys + names[name] = 1 + # Store the string as narrow or wide + strings['tall' if tallflag else 'wide' if wideflag else 'narrow'][name] = value + + # Increment the string counter + stringcount += 1 + # Break for testing + if LIMIT and stringcount >= LIMIT: break + + # Close the file + f.close() + # Store the array in the dict + language_strings[langcode] = strings + +# Get the language codes from the dictionary +langcodes = list(language_strings.keys()) + +# Print the array +#print(language_strings) + +# Write a single language entry to the CSV file with narrow, wide, and tall strings +def write_csv_lang(f, strings, name): + f.write(',') + if name in strings['narrow']: f.write('"%s"' % strings['narrow'][name]) + f.write(',') + if name in strings['wide']: f.write('"%s"' % strings['wide'][name]) + f.write(',') + if name in strings['tall']: f.write('"%s"' % strings['tall'][name]) + +if MULTISHEET: + # + # Export a separate sheet for each language + # + OUTDIR = 'csv-out' + Path.mkdir(Path(OUTDIR), exist_ok=True) + + for lang in langcodes: + f = open("%s/language_%s.csv" % (OUTDIR, lang), 'w', encoding='utf-8') + if not f: continue + + lname = lang + ' ' + LANGNAME[lang] + header = ['name', lname, lname + ' (wide)', lname + ' (tall)'] + f.write('"' + '","'.join(header) + '"\n') + + for name in names.keys(): + f.write('"' + name + '"') + write_csv_lang(f, language_strings[lang], name) + f.write('\n') + f.close() + +else: + # + # Export one large sheet containing all languages + # + f = open("languages.csv", 'w', encoding='utf-8') + if f: + header = ['name'] + for lang in langcodes: + lname = lang + ' ' + LANGNAME[lang] + header += [lname, lname + ' (wide)', lname + ' (tall)'] + f.write('"' + '","'.join(header) + '"\n') + + for name in names.keys(): + f.write('"' + name + '"') + for lang in langcodes: write_csv_lang(f, language_strings[lang], name) + f.write('\n') + f.close() diff --git a/buildroot/share/scripts/findMissingTranslations.sh b/buildroot/share/scripts/findMissingTranslations.sh index ece3a1fe59..366075d5b9 100755 --- a/buildroot/share/scripts/findMissingTranslations.sh +++ b/buildroot/share/scripts/findMissingTranslations.sh @@ -23,9 +23,9 @@ langname() { it ) echo "Italian" ;; jp_kana) echo "Japanese (Kana)" ;; ko_KR) echo "Korean" ;; nl ) echo "Dutch" ;; pl ) echo "Polish" ;; pt ) echo "Portuguese" ;; - pt_br) echo "Portuguese (Brazil)" ;; ru ) echo "Russian" ;; - sk ) echo "Slovak" ;; sv ) echo "Swedish" ;; - test ) echo "TEST" ;; tr ) echo "Turkish" ;; + pt_br) echo "Portuguese (Brazil)" ;; ro ) echo "Romanian" ;; + ru ) echo "Russian" ;; sk ) echo "Slovak" ;; + sv ) echo "Swedish" ;; tr ) echo "Turkish" ;; uk ) echo "Ukrainian" ;; vi ) echo "Vietnamese" ;; zh_CN) echo "Simplified Chinese" ;; zh_TW ) echo "Traditional Chinese" ;; * ) echo "" ;; From 154e48ba22ceedb01e9058a7f8da9457a445ee19 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 26 May 2023 18:54:50 -0500 Subject: [PATCH 479/659] =?UTF-8?q?=F0=9F=8E=A8=20Misc.=20spacing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/language/language_ca.h | 2 +- Marlin/src/lcd/language/language_da.h | 8 +- Marlin/src/lcd/language/language_de.h | 2 +- Marlin/src/lcd/language/language_el.h | 14 +- Marlin/src/lcd/language/language_es.h | 2 +- Marlin/src/lcd/language/language_eu.h | 2 +- Marlin/src/lcd/language/language_fi.h | 2 +- Marlin/src/lcd/language/language_fr.h | 2 +- Marlin/src/lcd/language/language_fr_na.h | 2 +- Marlin/src/lcd/language/language_gl.h | 2 +- Marlin/src/lcd/language/language_hr.h | 2 +- Marlin/src/lcd/language/language_hu.h | 2 +- Marlin/src/lcd/language/language_it.h | 16 +- Marlin/src/lcd/language/language_jp_kana.h | 328 ++++---- Marlin/src/lcd/language/language_ko_KR.h | 2 +- Marlin/src/lcd/language/language_nl.h | 10 +- Marlin/src/lcd/language/language_pl.h | 2 +- Marlin/src/lcd/language/language_pt_br.h | 2 +- Marlin/src/lcd/language/language_ro.h | 2 +- Marlin/src/lcd/language/language_sk.h | 2 +- Marlin/src/lcd/language/language_tr.h | 2 +- Marlin/src/lcd/language/language_uk.h | 2 +- Marlin/src/lcd/language/language_vi.h | 341 ++++---- Marlin/src/lcd/language/language_zh_CN.h | 606 +++++++------- Marlin/src/lcd/language/language_zh_TW.h | 768 +++++++++--------- .../pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h | 10 +- 26 files changed, 1068 insertions(+), 1067 deletions(-) diff --git a/Marlin/src/lcd/language/language_ca.h b/Marlin/src/lcd/language/language_ca.h index ac6d4388e1..b750ff1551 100644 --- a/Marlin/src/lcd/language/language_ca.h +++ b/Marlin/src/lcd/language/language_ca.h @@ -122,7 +122,7 @@ namespace Language_ca { LSTR MSG_STORE_EEPROM = _UxGT("Desa memoria"); LSTR MSG_LOAD_EEPROM = _UxGT("Carrega memoria"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restaura valors"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualitza"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualitza"); LSTR MSG_INFO_SCREEN = _UxGT("Pantalla Info."); LSTR MSG_PREPARE = _UxGT("Prepara"); LSTR MSG_TUNE = _UxGT("Ajusta"); diff --git a/Marlin/src/lcd/language/language_da.h b/Marlin/src/lcd/language/language_da.h index a424883000..91dc3513f7 100644 --- a/Marlin/src/lcd/language/language_da.h +++ b/Marlin/src/lcd/language/language_da.h @@ -92,9 +92,9 @@ namespace Language_da { LSTR MSG_FAN_SPEED = _UxGT("Blæser hastighed"); LSTR MSG_FAN_SPEED_N = _UxGT("Blæser hastighed ~"); LSTR MSG_CONTROL = _UxGT("Kontrol"); - LSTR MSG_MIN = _UxGT(" \002 Min"); - LSTR MSG_MAX = _UxGT(" \002 Max"); - LSTR MSG_FACTOR = _UxGT(" \002 Fact"); + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); LSTR MSG_AUTOTEMP = _UxGT("Autotemp"); LSTR MSG_LCD_ON = _UxGT("Til"); LSTR MSG_LCD_OFF = _UxGT("Fra"); @@ -111,7 +111,7 @@ namespace Language_da { LSTR MSG_STORE_EEPROM = _UxGT("Gem i EEPROM"); LSTR MSG_LOAD_EEPROM = _UxGT("Hent fra EEPROM"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("Gendan Defaults"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Genopfrisk"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Genopfrisk"); LSTR MSG_INFO_SCREEN = _UxGT("Info skærm"); LSTR MSG_PREPARE = _UxGT("Forbered"); LSTR MSG_PAUSE_PRINT = _UxGT("Pause printet"); diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h index 359afd8ad2..2e75c2668b 100644 --- a/Marlin/src/lcd/language/language_de.h +++ b/Marlin/src/lcd/language/language_de.h @@ -513,7 +513,7 @@ namespace Language_de { LSTR MSG_FILAMENTUNLOAD = _UxGT("Filament entladen"); LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Filament entladen *"); LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Alles entladen"); - LSTR MSG_ATTACH_MEDIA = _UxGT("Medium initial."); // Manually initialize the SD-card via user interface + LSTR MSG_ATTACH_MEDIA = _UxGT("Medium initial."); // Manually initialize the SD-card via user interface LSTR MSG_CHANGE_MEDIA = _UxGT("Medium getauscht"); // SD-card changed by user. For machines with no autocarddetect. Both send "M21" LSTR MSG_RELEASE_MEDIA = _UxGT("Medium freigeben"); // if Marlin gets confused - M22 LSTR MSG_ZPROBE_OUT = _UxGT("Z-Sonde außerhalb"); diff --git a/Marlin/src/lcd/language/language_el.h b/Marlin/src/lcd/language/language_el.h index e18bda4edf..aab74cc494 100644 --- a/Marlin/src/lcd/language/language_el.h +++ b/Marlin/src/lcd/language/language_el.h @@ -70,16 +70,16 @@ namespace Language_el { LSTR MSG_PREHEAT_1_END = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End"); LSTR MSG_PREHEAT_1_END_E = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~"); LSTR MSG_PREHEAT_1_ALL = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" bed"); //SHORTEN - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); //SHORTEN + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" bed"); // SHORTEN + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); // SHORTEN LSTR MSG_PREHEAT_M = _UxGT("Προθέρμανση $"); LSTR MSG_PREHEAT_M_H = _UxGT("Προθέρμανση $ ~"); LSTR MSG_PREHEAT_M_END = _UxGT("Προθέρμανση $ End"); LSTR MSG_PREHEAT_M_END_E = _UxGT("Προθέρμανση $ End ~"); LSTR MSG_PREHEAT_M_ALL = _UxGT("Προθέρμανση $ όλα"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Προθέρμανση $ bed"); //SHORTEN - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Προθέρμανση $ επιβεβαίωση"); //SHORTEN + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Προθέρμανση $ bed"); // SHORTEN + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Προθέρμανση $ επιβεβαίωση"); // SHORTEN #endif LSTR MSG_COOLDOWN = _UxGT("Αποθέρμανση"); LSTR MSG_SWITCH_PS_ON = _UxGT("Ενεργοποίηση"); @@ -157,7 +157,7 @@ namespace Language_el { LSTR MSG_STORE_EEPROM = _UxGT("Αποθήκευση σε EEPROM"); LSTR MSG_LOAD_EEPROM = _UxGT("Φόρτωση από EEPROM"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("Επαναφορά προεπιλογών"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ανανέωση"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ανανέωση"); LSTR MSG_INFO_SCREEN = _UxGT("Οθόνη πληροφόρησης"); LSTR MSG_PREPARE = _UxGT("Προετοιμασία"); LSTR MSG_TUNE = _UxGT("Συντονισμός"); @@ -173,7 +173,7 @@ namespace Language_el { LSTR MSG_KILLED = _UxGT("ΤΕΡΜΑΤΙΣΜΟΣ. "); LSTR MSG_STOPPED = _UxGT("ΔΙΑΚΟΠΗ. "); LSTR MSG_CONTROL_RETRACT = _UxGT("Ανάσυρση μμ"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Εναλλαγή ανάσυρσης mm"); //SHORTEN + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Εναλλαγή ανάσυρσης mm"); // SHORTEN LSTR MSG_CONTROL_RETRACTF = _UxGT("Ανάσυρση V"); LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Μεταπήδηση mm"); LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); @@ -184,7 +184,7 @@ namespace Language_el { LSTR MSG_FILAMENTCHANGE_E = _UxGT("Αλλαγή νήματος *"); LSTR MSG_ATTACH_MEDIA = _UxGT("Προετοιμασία SD"); LSTR MSG_CHANGE_MEDIA = _UxGT("Αλλαγή κάρτας SD"); - LSTR MSG_ZPROBE_OUT = _UxGT("Διερεύνηση Z εκτός Επ.Εκτύπωσης"); //SHORTEN + LSTR MSG_ZPROBE_OUT = _UxGT("Διερεύνηση Z εκτός Επ.Εκτύπωσης"); // SHORTEN LSTR MSG_YX_UNHOMED = _UxGT("Επαναφορά Χ/Υ πρώτα"); LSTR MSG_XYZ_UNHOMED = _UxGT("Επαναφορά ΧΥΖ πρώτα"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Μετατόπιση Ζ"); diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h index b2e5af70f5..a487c7d289 100644 --- a/Marlin/src/lcd/language/language_es.h +++ b/Marlin/src/lcd/language/language_es.h @@ -319,7 +319,7 @@ namespace Language_es { LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: Versión EEPROM"); LSTR MSG_MEDIA_UPDATE = _UxGT("Actualizar SD/FD"); LSTR MSG_RESET_PRINTER = _UxGT("Resetear Impresora"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Recargar"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Recargar"); LSTR MSG_INFO_SCREEN = _UxGT("Pantalla de Inf."); LSTR MSG_PREPARE = _UxGT("Preparar"); LSTR MSG_TUNE = _UxGT("Ajustar"); diff --git a/Marlin/src/lcd/language/language_eu.h b/Marlin/src/lcd/language/language_eu.h index 9b969762d5..6433fde99f 100644 --- a/Marlin/src/lcd/language/language_eu.h +++ b/Marlin/src/lcd/language/language_eu.h @@ -194,7 +194,7 @@ namespace Language_eu { LSTR MSG_LOAD_EEPROM = _UxGT("Kargatu memoria"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("Larri. berriz."); LSTR MSG_INIT_EEPROM = _UxGT("EEPROM-a hasieratu"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Berriz kargatu"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Berriz kargatu"); LSTR MSG_INFO_SCREEN = _UxGT("Pantaila info"); LSTR MSG_PREPARE = _UxGT("Prestatu"); LSTR MSG_TUNE = _UxGT("Doitu"); diff --git a/Marlin/src/lcd/language/language_fi.h b/Marlin/src/lcd/language/language_fi.h index 57fc0a7c21..8d5e4c7143 100644 --- a/Marlin/src/lcd/language/language_fi.h +++ b/Marlin/src/lcd/language/language_fi.h @@ -102,7 +102,7 @@ namespace Language_fi { LSTR MSG_STORE_EEPROM = _UxGT("Tallenna muistiin"); LSTR MSG_LOAD_EEPROM = _UxGT("Lataa muistista"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("Palauta oletus"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Päivitä"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Päivitä"); LSTR MSG_INFO_SCREEN = _UxGT("Seuraa"); LSTR MSG_PREPARE = _UxGT("Valmistele"); LSTR MSG_TUNE = _UxGT("Säädä"); diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h index 01422f5c76..4f04345252 100644 --- a/Marlin/src/lcd/language/language_fr.h +++ b/Marlin/src/lcd/language/language_fr.h @@ -331,7 +331,7 @@ namespace Language_fr { LSTR MSG_SETTINGS_STORED = _UxGT("Config. enregistrée"); LSTR MSG_MEDIA_UPDATE = _UxGT("MaJ Firmware SD"); LSTR MSG_RESET_PRINTER = _UxGT("RaZ imprimante"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualiser"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualiser"); LSTR MSG_INFO_SCREEN = _UxGT("Surveiller"); LSTR MSG_PREPARE = _UxGT("Préparer"); LSTR MSG_TUNE = _UxGT("Régler"); diff --git a/Marlin/src/lcd/language/language_fr_na.h b/Marlin/src/lcd/language/language_fr_na.h index 12fa0295ea..4441a7970a 100644 --- a/Marlin/src/lcd/language/language_fr_na.h +++ b/Marlin/src/lcd/language/language_fr_na.h @@ -331,7 +331,7 @@ namespace Language_fr_na { LSTR MSG_SETTINGS_STORED = _UxGT("Config. enregistree"); LSTR MSG_MEDIA_UPDATE = _UxGT("MaJ Firmware SD"); LSTR MSG_RESET_PRINTER = _UxGT("RaZ imprimante"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualiser"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualiser"); LSTR MSG_INFO_SCREEN = _UxGT("Surveiller"); LSTR MSG_PREPARE = _UxGT("Preparer"); LSTR MSG_TUNE = _UxGT("Regler"); diff --git a/Marlin/src/lcd/language/language_gl.h b/Marlin/src/lcd/language/language_gl.h index fcdee2405c..25b30f71eb 100644 --- a/Marlin/src/lcd/language/language_gl.h +++ b/Marlin/src/lcd/language/language_gl.h @@ -322,7 +322,7 @@ namespace Language_gl { LSTR MSG_SETTINGS_STORED = _UxGT("Config Gardada"); LSTR MSG_MEDIA_UPDATE = _UxGT("Actualizar SD/FD"); LSTR MSG_RESET_PRINTER = _UxGT("Reiniciar Impresora"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Recargar"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Recargar"); LSTR MSG_INFO_SCREEN = _UxGT("Información"); LSTR MSG_PREPARE = _UxGT("Preparar"); LSTR MSG_TUNE = _UxGT("Axustar"); diff --git a/Marlin/src/lcd/language/language_hr.h b/Marlin/src/lcd/language/language_hr.h index 1f51c5c539..a857fb3619 100644 --- a/Marlin/src/lcd/language/language_hr.h +++ b/Marlin/src/lcd/language/language_hr.h @@ -105,7 +105,7 @@ namespace Language_hr { LSTR MSG_STORE_EEPROM = _UxGT("Pohrani u memoriju"); LSTR MSG_LOAD_EEPROM = _UxGT("Učitaj memoriju"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("Učitaj Defaults"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Osvježi"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Osvježi"); LSTR MSG_INFO_SCREEN = _UxGT("Info screen"); LSTR MSG_PREPARE = _UxGT("Pripremi"); LSTR MSG_PAUSE_PRINT = _UxGT("Pauziraj print"); diff --git a/Marlin/src/lcd/language/language_hu.h b/Marlin/src/lcd/language/language_hu.h index 8a6f66f994..f3880a31a6 100644 --- a/Marlin/src/lcd/language/language_hu.h +++ b/Marlin/src/lcd/language/language_hu.h @@ -368,7 +368,7 @@ namespace Language_hu { LSTR MSG_SETTINGS_STORED = _UxGT("Beállítások mentve"); LSTR MSG_MEDIA_UPDATE = _UxGT("Tároló frissítés"); LSTR MSG_RESET_PRINTER = _UxGT("Nyomtató újraindítása"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Frissítés"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Frissítés"); LSTR MSG_INFO_SCREEN = _UxGT(""); LSTR MSG_PREPARE = _UxGT("Vezérlés"); LSTR MSG_TUNE = _UxGT("Hangolás"); diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index 96c1499f55..a6b48b0d0a 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -338,11 +338,11 @@ namespace Language_it { LSTR MSG_FLOWMETER_SAFETY = _UxGT("Sicurezza flusso"); LSTR MSG_CUTTER = _UxGT("Taglio"); LSTR MSG_LASER = _UxGT("Laser"); - LSTR MSG_FAN_SPEED = _UxGT("Vel. ventola"); // Max 15 characters - LSTR MSG_FAN_SPEED_N = _UxGT("Vel. ventola ~"); // Max 15 characters - LSTR MSG_STORED_FAN_N = _UxGT("Ventola mem. ~"); // Max 15 characters - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra vel.vent."); // Max 15 characters - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra v.vent. ~"); // Max 15 characters + LSTR MSG_FAN_SPEED = _UxGT("Vel. ventola"); // Max 15 characters + LSTR MSG_FAN_SPEED_N = _UxGT("Vel. ventola ~"); // Max 15 characters + LSTR MSG_STORED_FAN_N = _UxGT("Ventola mem. ~"); // Max 15 characters + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra vel.vent."); // Max 15 characters + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra v.vent. ~"); // Max 15 characters LSTR MSG_CONTROLLER_FAN = _UxGT("Controller vent."); LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Vel. inattivo"); LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Modo autom."); @@ -597,7 +597,7 @@ namespace Language_it { LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); LSTR MSG_BABYSTEP_TOTAL = _UxGT("Totali"); LSTR MSG_ENDSTOP_ABORT = _UxGT("Interrompi se FC"); - LSTR MSG_HEATING_FAILED_LCD = _UxGT("Risc.Fallito"); // Max 12 characters + LSTR MSG_HEATING_FAILED_LCD = _UxGT("Risc.Fallito"); // Max 12 characters LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: TEMP RIDONDANTE"); LSTR MSG_THERMAL_RUNAWAY = _UxGT("TEMP FUORI CONTROLLO"); LSTR MSG_TEMP_MALFUNCTION = _UxGT("MALFUNZIONAMENTO TEMP"); @@ -702,13 +702,13 @@ namespace Language_it { LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Riprendi stampa"); LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Spurga o continua?"); LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Ugello: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Sens.filo termin."); // Max 17 characters + LSTR MSG_RUNOUT_SENSOR = _UxGT("Sens.filo termin."); // Max 17 characters LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Dist mm filo term."); LSTR MSG_RUNOUT_ENABLE = _UxGT("Abil.filo termin."); LSTR MSG_RUNOUT_ACTIVE = _UxGT("Filo termin. attivo"); LSTR MSG_INVERT_EXTRUDER = _UxGT("Inverti estrusore"); LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Temp.min estrusore"); - LSTR MSG_FANCHECK = _UxGT("Verif.tacho vent."); // Max 17 characters + LSTR MSG_FANCHECK = _UxGT("Verif.tacho vent."); // Max 17 characters LSTR MSG_KILL_HOMING_FAILED = _UxGT("Home fallito"); LSTR MSG_LCD_PROBING_FAILED = _UxGT("Sondaggio fallito"); diff --git a/Marlin/src/lcd/language/language_jp_kana.h b/Marlin/src/lcd/language/language_jp_kana.h index 7570710838..950ddcb5e5 100644 --- a/Marlin/src/lcd/language/language_jp_kana.h +++ b/Marlin/src/lcd/language/language_jp_kana.h @@ -42,188 +42,188 @@ namespace Language_jp_kana { // 片仮名表示定義 LSTR WELCOME_MSG = MACHINE_NAME _UxGT(" ジュンビカンリョウ"); - LSTR MSG_MEDIA_INSERTED = _UxGT("メディアガソウニュウサレマシタ"); // "Card inserted" - LSTR MSG_MEDIA_REMOVED = _UxGT("メディアガアリマセン"); // "Card removed" + LSTR MSG_MEDIA_INSERTED = _UxGT("メディアガソウニュウサレマシタ"); // "Card inserted" + LSTR MSG_MEDIA_REMOVED = _UxGT("メディアガアリマセン"); // "Card removed" LSTR MSG_RELEASE_MEDIA = _UxGT("メディアノトリダシ"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("エンドストップ"); // "Endstops" // Max length 8 characters - LSTR MSG_MAIN_MENU = _UxGT("メイン"); // "Main" - LSTR MSG_RUN_AUTO_FILES = _UxGT("ジドウカイシ"); // "Autostart" - LSTR MSG_DISABLE_STEPPERS = _UxGT("モーターデンゲン オフ"); // "Disable steppers" - LSTR MSG_DEBUG_MENU = _UxGT("デバッグメニュー"); // "Debug Menu" - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("プログレスバー テスト"); // "Progress Bar Test" - LSTR MSG_AUTO_HOME = _UxGT("ゲンテンフッキ"); // "Auto home" - LSTR MSG_AUTO_HOME_X = _UxGT("Xジク ゲンテンフッキ"); // "Home X" - LSTR MSG_AUTO_HOME_Y = _UxGT("Yジク ゲンテンフッキ"); // "Home Y" - LSTR MSG_AUTO_HOME_Z = _UxGT("Zジク ゲンテンフッキ"); // "Home Z" - LSTR MSG_LEVEL_BED_HOMING = _UxGT("ゲンテンフッキチュウ"); // "Homing XYZ" - LSTR MSG_LEVEL_BED_WAITING = _UxGT("レベリングカイシ"); // "Click to Begin" - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("ツギノソクテイテンヘ"); // "Next Point" - LSTR MSG_LEVEL_BED_DONE = _UxGT("レベリングカンリョウ"); // "Leveling Done!" - LSTR MSG_SET_HOME_OFFSETS = _UxGT("キジュンオフセットセッテイ"); // "Set home offsets" - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("オフセットガテキヨウサレマシタ"); // "Offsets applied" + LSTR MSG_LCD_ENDSTOPS = _UxGT("エンドストップ"); // "Endstops" // Max length 8 characters + LSTR MSG_MAIN_MENU = _UxGT("メイン"); // "Main" + LSTR MSG_RUN_AUTO_FILES = _UxGT("ジドウカイシ"); // "Autostart" + LSTR MSG_DISABLE_STEPPERS = _UxGT("モーターデンゲン オフ"); // "Disable steppers" + LSTR MSG_DEBUG_MENU = _UxGT("デバッグメニュー"); // "Debug Menu" + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("プログレスバー テスト"); // "Progress Bar Test" + LSTR MSG_AUTO_HOME = _UxGT("ゲンテンフッキ"); // "Auto home" + LSTR MSG_AUTO_HOME_X = _UxGT("Xジク ゲンテンフッキ"); // "Home X" + LSTR MSG_AUTO_HOME_Y = _UxGT("Yジク ゲンテンフッキ"); // "Home Y" + LSTR MSG_AUTO_HOME_Z = _UxGT("Zジク ゲンテンフッキ"); // "Home Z" + LSTR MSG_LEVEL_BED_HOMING = _UxGT("ゲンテンフッキチュウ"); // "Homing XYZ" + LSTR MSG_LEVEL_BED_WAITING = _UxGT("レベリングカイシ"); // "Click to Begin" + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("ツギノソクテイテンヘ"); // "Next Point" + LSTR MSG_LEVEL_BED_DONE = _UxGT("レベリングカンリョウ"); // "Leveling Done!" + LSTR MSG_SET_HOME_OFFSETS = _UxGT("キジュンオフセットセッテイ"); // "Set home offsets" + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("オフセットガテキヨウサレマシタ"); // "Offsets applied" #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" ヨネツ"); // "Preheat " PREHEAT_1_LABEL - LSTR MSG_PREHEAT_1_H = PREHEAT_1_LABEL _UxGT(" ヨネツ ~"); // "Preheat " PREHEAT_1_LABEL - LSTR MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" ヨネツノズル"); // " Nozzle" - LSTR MSG_PREHEAT_1_END_E = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ~"); // " Nozzle" - LSTR MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" スベテヨネツ"); // " All" - LSTR MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" ベッドヨネツ"); // " Bed" - LSTR MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" ヨネツセッテイ"); // " conf" + LSTR MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" ヨネツ"); // "Preheat " PREHEAT_1_LABEL + LSTR MSG_PREHEAT_1_H = PREHEAT_1_LABEL _UxGT(" ヨネツ ~"); // "Preheat " PREHEAT_1_LABEL + LSTR MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" ヨネツノズル"); // " Nozzle" + LSTR MSG_PREHEAT_1_END_E = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ~"); // " Nozzle" + LSTR MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" スベテヨネツ"); // " All" + LSTR MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" ベッドヨネツ"); // " Bed" + LSTR MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" ヨネツセッテイ"); // " conf" - LSTR MSG_PREHEAT_M = _UxGT("$ ヨネツ"); // "Preheat " PREHEAT_1_LABEL - LSTR MSG_PREHEAT_M_H = _UxGT("$ ヨネツ ~"); // "Preheat " PREHEAT_1_LABEL - LSTR MSG_PREHEAT_M_END = _UxGT("$ ヨネツノズル"); // " Nozzle" - LSTR MSG_PREHEAT_M_END_E = _UxGT("$ ヨネツノズル ~"); // " Nozzle" - LSTR MSG_PREHEAT_M_ALL = _UxGT("$ スベテヨネツ"); // " All" - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("$ ベッドヨネツ"); // " Bed" - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("$ ヨネツセッテイ"); // " conf" + LSTR MSG_PREHEAT_M = _UxGT("$ ヨネツ"); // "Preheat " PREHEAT_1_LABEL + LSTR MSG_PREHEAT_M_H = _UxGT("$ ヨネツ ~"); // "Preheat " PREHEAT_1_LABEL + LSTR MSG_PREHEAT_M_END = _UxGT("$ ヨネツノズル"); // " Nozzle" + LSTR MSG_PREHEAT_M_END_E = _UxGT("$ ヨネツノズル ~"); // " Nozzle" + LSTR MSG_PREHEAT_M_ALL = _UxGT("$ スベテヨネツ"); // " All" + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("$ ベッドヨネツ"); // " Bed" + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("$ ヨネツセッテイ"); // " conf" #endif - LSTR MSG_COOLDOWN = _UxGT("カネツテイシ"); // "Cooldown" - LSTR MSG_SWITCH_PS_ON = _UxGT("デンゲン オン"); // "Switch power on" - LSTR MSG_SWITCH_PS_OFF = _UxGT("デンゲン オフ"); // "Switch power off" - LSTR MSG_EXTRUDE = _UxGT("オシダシ"); // "Extrude" - LSTR MSG_RETRACT = _UxGT("ヒキコミセッテイ"); // "Retract" - LSTR MSG_MOVE_AXIS = _UxGT("ジクイドウ"); // "Move axis" - LSTR MSG_BED_LEVELING = _UxGT("ベッドレベリング"); // "Bed leveling" - LSTR MSG_LEVEL_BED = _UxGT("ベッドレベリング"); // "Level bed" + LSTR MSG_COOLDOWN = _UxGT("カネツテイシ"); // "Cooldown" + LSTR MSG_SWITCH_PS_ON = _UxGT("デンゲン オン"); // "Switch power on" + LSTR MSG_SWITCH_PS_OFF = _UxGT("デンゲン オフ"); // "Switch power off" + LSTR MSG_EXTRUDE = _UxGT("オシダシ"); // "Extrude" + LSTR MSG_RETRACT = _UxGT("ヒキコミセッテイ"); // "Retract" + LSTR MSG_MOVE_AXIS = _UxGT("ジクイドウ"); // "Move axis" + LSTR MSG_BED_LEVELING = _UxGT("ベッドレベリング"); // "Bed leveling" + LSTR MSG_LEVEL_BED = _UxGT("ベッドレベリング"); // "Level bed" - LSTR MSG_MOVING = _UxGT("イドウチュウ"); // "Moving..." - LSTR MSG_FREE_XY = _UxGT("XYジク カイホウ"); // "Free XY" - LSTR MSG_MOVE_X = _UxGT("Xジク イドウ"); // "Move X" - LSTR MSG_MOVE_Y = _UxGT("Yジク イドウ"); // "Move Y" - LSTR MSG_MOVE_Z = _UxGT("Zジク イドウ"); // "Move Z" - LSTR MSG_MOVE_N = _UxGT("@ジク イドウ"); // "Move @" - LSTR MSG_MOVE_E = _UxGT("エクストルーダー"); // "Extruder" - LSTR MSG_MOVE_EN = _UxGT("* エクストルーダー"); // "En" - LSTR MSG_MOVE_N_MM = _UxGT("$mm イドウ"); // "Move 0.025mm" - LSTR MSG_MOVE_01MM = _UxGT("0.1mm イドウ"); // "Move 0.1mm" - LSTR MSG_MOVE_1MM = _UxGT(" 1mm イドウ"); // "Move 1mm" - LSTR MSG_MOVE_10MM = _UxGT(" 10mm イドウ"); // "Move 10mm" - LSTR MSG_MOVE_50MM = _UxGT(" 50mm イドウ"); // "Move 50mm" - LSTR MSG_MOVE_100MM = _UxGT(" 100mm イドウ"); // "Move 100mm" - LSTR MSG_SPEED = _UxGT("ソクド"); // "Speed" - LSTR MSG_MESH_Z_OFFSET = _UxGT("Zオフセット"); // "Bed Z" - LSTR MSG_NOZZLE = _UxGT("ノズル"); // "Nozzle" - LSTR MSG_BED = _UxGT("ベッド"); // "Bed" - LSTR MSG_FAN_SPEED = _UxGT("ファンソクド"); // "Fan speed" - LSTR MSG_FLOW = _UxGT("トシュツリョウ"); // "Flow" - LSTR MSG_CONTROL = _UxGT("セイギョ"); // "Control" + LSTR MSG_MOVING = _UxGT("イドウチュウ"); // "Moving..." + LSTR MSG_FREE_XY = _UxGT("XYジク カイホウ"); // "Free XY" + LSTR MSG_MOVE_X = _UxGT("Xジク イドウ"); // "Move X" + LSTR MSG_MOVE_Y = _UxGT("Yジク イドウ"); // "Move Y" + LSTR MSG_MOVE_Z = _UxGT("Zジク イドウ"); // "Move Z" + LSTR MSG_MOVE_N = _UxGT("@ジク イドウ"); // "Move @" + LSTR MSG_MOVE_E = _UxGT("エクストルーダー"); // "Extruder" + LSTR MSG_MOVE_EN = _UxGT("* エクストルーダー"); // "En" + LSTR MSG_MOVE_N_MM = _UxGT("$mm イドウ"); // "Move 0.025mm" + LSTR MSG_MOVE_01MM = _UxGT("0.1mm イドウ"); // "Move 0.1mm" + LSTR MSG_MOVE_1MM = _UxGT(" 1mm イドウ"); // "Move 1mm" + LSTR MSG_MOVE_10MM = _UxGT(" 10mm イドウ"); // "Move 10mm" + LSTR MSG_MOVE_50MM = _UxGT(" 50mm イドウ"); // "Move 50mm" + LSTR MSG_MOVE_100MM = _UxGT(" 100mm イドウ"); // "Move 100mm" + LSTR MSG_SPEED = _UxGT("ソクド"); // "Speed" + LSTR MSG_MESH_Z_OFFSET = _UxGT("Zオフセット"); // "Bed Z" + LSTR MSG_NOZZLE = _UxGT("ノズル"); // "Nozzle" + LSTR MSG_BED = _UxGT("ベッド"); // "Bed" + LSTR MSG_FAN_SPEED = _UxGT("ファンソクド"); // "Fan speed" + LSTR MSG_FLOW = _UxGT("トシュツリョウ"); // "Flow" + LSTR MSG_CONTROL = _UxGT("セイギョ"); // "Control" LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" サイテイ"); // " Min" LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" サイコウ"); // " Max" LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" ファクター"); // " Fact" - LSTR MSG_AUTOTEMP = _UxGT("ジドウオンドセイギョ"); // "Autotemp" - LSTR MSG_LCD_ON = _UxGT("オン"); // "On" - LSTR MSG_LCD_OFF = _UxGT("オフ"); // "Off" + LSTR MSG_AUTOTEMP = _UxGT("ジドウオンドセイギョ"); // "Autotemp" + LSTR MSG_LCD_ON = _UxGT("オン"); // "On" + LSTR MSG_LCD_OFF = _UxGT("オフ"); // "Off" LSTR MSG_SELECT_E = _UxGT("センタク *"); - LSTR MSG_ACC = _UxGT("カソクド mm/s") SUPERSCRIPT_TWO; // "Accel" - LSTR MSG_JERK = _UxGT("ヤクドウ mm/s"); // "Jerk" - LSTR MSG_VA_JERK = _UxGT("ジク ヤクドウ mm/s") STR_A; // "Va-jerk" - LSTR MSG_VB_JERK = _UxGT("ジク ヤクドウ mm/s") STR_B; // "Vb-jerk" - LSTR MSG_VC_JERK = _UxGT("ジク ヤクドウ mm/s") STR_C; // "Vc-jerk" - LSTR MSG_VN_JERK = _UxGT("ジク ヤクドウ mm/s@"); // "V@-jerk" + LSTR MSG_ACC = _UxGT("カソクド mm/s") SUPERSCRIPT_TWO; // "Accel" + LSTR MSG_JERK = _UxGT("ヤクドウ mm/s"); // "Jerk" + LSTR MSG_VA_JERK = _UxGT("ジク ヤクドウ mm/s") STR_A; // "Va-jerk" + LSTR MSG_VB_JERK = _UxGT("ジク ヤクドウ mm/s") STR_B; // "Vb-jerk" + LSTR MSG_VC_JERK = _UxGT("ジク ヤクドウ mm/s") STR_C; // "Vc-jerk" + LSTR MSG_VN_JERK = _UxGT("ジク ヤクドウ mm/s@"); // "V@-jerk" LSTR MSG_A_STEPS = STR_A _UxGT("ステップ/mm"); LSTR MSG_B_STEPS = STR_B _UxGT("ステップ/mm"); LSTR MSG_C_STEPS = STR_C _UxGT("ステップ/mm"); LSTR MSG_N_STEPS = _UxGT("@ステップ/mm"); - LSTR MSG_VE_JERK = _UxGT("エクストルーダー ヤクド"); // "Ve-jerk" - LSTR MSG_VMAX_A = _UxGT("サイダイオクリソクド ") STR_A; // "Vmax A" - LSTR MSG_VMAX_B = _UxGT("サイダイオクリソクド ") STR_B; // "Vmax B" - LSTR MSG_VMAX_C = _UxGT("サイダイオクリソクド ") STR_C; // "Vmax C" - LSTR MSG_VMAX_E = _UxGT("サイダイオクリソクド E"); // "Vmax E" - LSTR MSG_VMAX_EN = _UxGT("サイダイオクリソクド *"); // "Vmax E1" - LSTR MSG_VMIN = _UxGT("サイショウオクリソクド"); // "Vmin" - LSTR MSG_VTRAV_MIN = _UxGT("サイショウイドウソクド"); // "VTrav min" - LSTR MSG_ACCELERATION = _UxGT("カソクド mm/s") SUPERSCRIPT_TWO; // "Accel" - LSTR MSG_A_RETRACT = _UxGT("ヒキコミカソクド"); // "A-retract" - LSTR MSG_A_TRAVEL = _UxGT("イドウカソクド"); // "A-travel" - LSTR MSG_TEMPERATURE = _UxGT("オンド"); // "Temperature" - LSTR MSG_MOTION = _UxGT("ウゴキセッテイ"); // "Motion" - LSTR MSG_FILAMENT = _UxGT("フィラメント"); // "Filament" + LSTR MSG_VE_JERK = _UxGT("エクストルーダー ヤクド"); // "Ve-jerk" + LSTR MSG_VMAX_A = _UxGT("サイダイオクリソクド ") STR_A; // "Vmax A" + LSTR MSG_VMAX_B = _UxGT("サイダイオクリソクド ") STR_B; // "Vmax B" + LSTR MSG_VMAX_C = _UxGT("サイダイオクリソクド ") STR_C; // "Vmax C" + LSTR MSG_VMAX_E = _UxGT("サイダイオクリソクド E"); // "Vmax E" + LSTR MSG_VMAX_EN = _UxGT("サイダイオクリソクド *"); // "Vmax E1" + LSTR MSG_VMIN = _UxGT("サイショウオクリソクド"); // "Vmin" + LSTR MSG_VTRAV_MIN = _UxGT("サイショウイドウソクド"); // "VTrav min" + LSTR MSG_ACCELERATION = _UxGT("カソクド mm/s") SUPERSCRIPT_TWO; // "Accel" + LSTR MSG_A_RETRACT = _UxGT("ヒキコミカソクド"); // "A-retract" + LSTR MSG_A_TRAVEL = _UxGT("イドウカソクド"); // "A-travel" + LSTR MSG_TEMPERATURE = _UxGT("オンド"); // "Temperature" + LSTR MSG_MOTION = _UxGT("ウゴキセッテイ"); // "Motion" + LSTR MSG_FILAMENT = _UxGT("フィラメント"); // "Filament" LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("フィラメントチョッケイ"); // "Fil. Dia." + LSTR MSG_FILAMENT_DIAM = _UxGT("フィラメントチョッケイ"); // "Fil. Dia." LSTR MSG_FILAMENT_DIAM_E = _UxGT("フィラメントチョッケイ *"); - LSTR MSG_CONTRAST = _UxGT("LCDコントラスト"); // "LCD contrast" - LSTR MSG_STORE_EEPROM = _UxGT("EEPROMヘホゾン"); // "Store memory" - LSTR MSG_LOAD_EEPROM = _UxGT("EEPROMカラヨミコミ"); // "Load memory" - LSTR MSG_RESTORE_DEFAULTS = _UxGT("セッテイリセット"); // "Restore Defaults" - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("リフレッシュ"); // "Refresh" - LSTR MSG_INFO_SCREEN = _UxGT("ジョウホウガメン"); // "Info screen" - LSTR MSG_PREPARE = _UxGT("ジュンビセッテイ"); // "Prepare" - LSTR MSG_TUNE = _UxGT("チョウセイ"); // "Tune" - LSTR MSG_PAUSE_PRINT = _UxGT("イチジテイシ"); // "Pause print" - LSTR MSG_RESUME_PRINT = _UxGT("プリントサイカイ"); // "Resume print" - LSTR MSG_STOP_PRINT = _UxGT("プリントテイシ"); // "Stop print" - LSTR MSG_MEDIA_MENU = _UxGT("メディアカラプリント"); // "Print from SD" - LSTR MSG_NO_MEDIA = _UxGT("メディアガアリマセン"); // "Card removed" - LSTR MSG_DWELL = _UxGT("キュウシ"); // "Sleep..." - LSTR MSG_USERWAIT = _UxGT("ツヅケルニハクリックシテクダサイ"); // "Wait for user..." - LSTR MSG_PRINT_ABORTED = _UxGT("プリントガチュウシサレマシタ"); // "Print aborted" - LSTR MSG_NO_MOVE = _UxGT("ウゴキマセン"); // "No move." - LSTR MSG_KILLED = _UxGT("ヒジョウテイシ"); // "KILLED. " - LSTR MSG_STOPPED = _UxGT("テイシシマシタ"); // "STOPPED. " - LSTR MSG_CONTROL_RETRACT = _UxGT("ヒキコミリョウ mm"); // "Retract mm" - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("ヒキコミリョウS mm"); // "Swap Re.mm" - LSTR MSG_CONTROL_RETRACTF = _UxGT("ヒキコミソクド mm/s"); // "Retract V" - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("ノズルタイヒ mm"); // "Hop mm" - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("ホショウリョウ mm"); // "Unretr. mm" - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("ホショウリョウS mm"); // "S Unretr. mm" - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("ホショウソクド mm/s"); // "Unretract V" - LSTR MSG_AUTORETRACT = _UxGT("ジドウヒキコミ"); // "Auto-Retract" - LSTR MSG_FILAMENTCHANGE = _UxGT("フィラメントコウカン"); // "Change filament" - LSTR MSG_ATTACH_MEDIA = _UxGT("メディアサイヨミコミ"); // "Init. SD card" - LSTR MSG_CHANGE_MEDIA = _UxGT("メディアコウカン"); // "Change SD card" - LSTR MSG_ZPROBE_OUT = _UxGT("Zプローブ ベッドガイ"); // "Z probe out. bed" - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch ジコシンダン"); // "BLTouch Self-Test" - LSTR MSG_BLTOUCH_RESET = _UxGT("BLTouch リセット"); // "Reset BLTouch" + LSTR MSG_CONTRAST = _UxGT("LCDコントラスト"); // "LCD contrast" + LSTR MSG_STORE_EEPROM = _UxGT("EEPROMヘホゾン"); // "Store memory" + LSTR MSG_LOAD_EEPROM = _UxGT("EEPROMカラヨミコミ"); // "Load memory" + LSTR MSG_RESTORE_DEFAULTS = _UxGT("セッテイリセット"); // "Restore Defaults" + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("リフレッシュ"); // "Refresh" + LSTR MSG_INFO_SCREEN = _UxGT("ジョウホウガメン"); // "Info screen" + LSTR MSG_PREPARE = _UxGT("ジュンビセッテイ"); // "Prepare" + LSTR MSG_TUNE = _UxGT("チョウセイ"); // "Tune" + LSTR MSG_PAUSE_PRINT = _UxGT("イチジテイシ"); // "Pause print" + LSTR MSG_RESUME_PRINT = _UxGT("プリントサイカイ"); // "Resume print" + LSTR MSG_STOP_PRINT = _UxGT("プリントテイシ"); // "Stop print" + LSTR MSG_MEDIA_MENU = _UxGT("メディアカラプリント"); // "Print from SD" + LSTR MSG_NO_MEDIA = _UxGT("メディアガアリマセン"); // "Card removed" + LSTR MSG_DWELL = _UxGT("キュウシ"); // "Sleep..." + LSTR MSG_USERWAIT = _UxGT("ツヅケルニハクリックシテクダサイ"); // "Wait for user..." + LSTR MSG_PRINT_ABORTED = _UxGT("プリントガチュウシサレマシタ"); // "Print aborted" + LSTR MSG_NO_MOVE = _UxGT("ウゴキマセン"); // "No move." + LSTR MSG_KILLED = _UxGT("ヒジョウテイシ"); // "KILLED. " + LSTR MSG_STOPPED = _UxGT("テイシシマシタ"); // "STOPPED. " + LSTR MSG_CONTROL_RETRACT = _UxGT("ヒキコミリョウ mm"); // "Retract mm" + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("ヒキコミリョウS mm"); // "Swap Re.mm" + LSTR MSG_CONTROL_RETRACTF = _UxGT("ヒキコミソクド mm/s"); // "Retract V" + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("ノズルタイヒ mm"); // "Hop mm" + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("ホショウリョウ mm"); // "Unretr. mm" + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("ホショウリョウS mm"); // "S Unretr. mm" + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("ホショウソクド mm/s"); // "Unretract V" + LSTR MSG_AUTORETRACT = _UxGT("ジドウヒキコミ"); // "Auto-Retract" + LSTR MSG_FILAMENTCHANGE = _UxGT("フィラメントコウカン"); // "Change filament" + LSTR MSG_ATTACH_MEDIA = _UxGT("メディアサイヨミコミ"); // "Init. SD card" + LSTR MSG_CHANGE_MEDIA = _UxGT("メディアコウカン"); // "Change SD card" + LSTR MSG_ZPROBE_OUT = _UxGT("Zプローブ ベッドガイ"); // "Z probe out. bed" + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch ジコシンダン"); // "BLTouch Self-Test" + LSTR MSG_BLTOUCH_RESET = _UxGT("BLTouch リセット"); // "Reset BLTouch" LSTR MSG_HOME_FIRST = _UxGT("サキニ %s ヲフッキサセテクダサイ"); // "Home ... first" - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Zオフセット"); // "Z Offset" - LSTR MSG_BABYSTEP_X = _UxGT("Xジク ビドウ"); // "Babystep X" - LSTR MSG_BABYSTEP_Y = _UxGT("Yジク ビドウ"); // "Babystep Y" - LSTR MSG_BABYSTEP_Z = _UxGT("Zジク ビドウ"); // "Babystep Z" - LSTR MSG_ENDSTOP_ABORT = _UxGT("イドウゲンカイケンチキノウ"); // "Endstop abort" - LSTR MSG_HEATING_FAILED_LCD = _UxGT("カネツシッパイ"); // "Heating failed" - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("エラー:ジョウチョウサーミスターキノウ"); // "Err: REDUNDANT TEMP" - LSTR MSG_THERMAL_RUNAWAY = _UxGT("ネツボウソウ"); // "THERMAL RUNAWAY" - LSTR MSG_ERR_MAXTEMP = _UxGT("エラー:サイコウオンチョウカ"); // "Err: MAXTEMP" - LSTR MSG_ERR_MINTEMP = _UxGT("エラー:サイテイオンミマン"); // "Err: MINTEMP" - LSTR MSG_HALTED = _UxGT("プリンターハテイシシマシタ"); // "PRINTER HALTED" - LSTR MSG_PLEASE_RESET = _UxGT("リセットシテクダサイ"); // "Please reset" - LSTR MSG_HEATING = _UxGT("カネツチュウ"); // "Heating..." - LSTR MSG_BED_HEATING = _UxGT("ベッド カネツチュウ"); // "Bed Heating..." - LSTR MSG_DELTA_CALIBRATE = _UxGT("デルタ コウセイ"); // "Delta Calibration" - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Xジク コウセイ"); // "Calibrate X" - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Yジク コウセイ"); // "Calibrate Y" - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Zジク コウセイ"); // "Calibrate Z" - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("チュウシン コウセイ"); // "Calibrate Center" - LSTR MSG_INFO_MENU = _UxGT("コノプリンターニツイテ"); // "About Printer" - LSTR MSG_INFO_PRINTER_MENU = _UxGT("プリンタージョウホウ"); // "Printer Info" - LSTR MSG_INFO_STATS_MENU = _UxGT("プリントジョウキョウ"); // "Printer Stats" - LSTR MSG_INFO_BOARD_MENU = _UxGT("セイギョケイジョウホウ"); // "Board Info" - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("サーミスター"); // "Thermistors" - LSTR MSG_INFO_EXTRUDERS = _UxGT("エクストルーダースウ"); // "Extruders" - LSTR MSG_INFO_BAUDRATE = _UxGT("ボーレート"); // "Baud" - LSTR MSG_INFO_PROTOCOL = _UxGT("プロトコル"); // "Protocol" - LSTR MSG_CASE_LIGHT = _UxGT("キョウタイナイショウメイ"); // "Case light" - LSTR MSG_INFO_PRINT_COUNT = _UxGT("プリントスウ "); // "Print Count" - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("カンリョウスウ"); // "Completed" - LSTR MSG_INFO_PRINT_TIME = _UxGT("プリントジカンルイケイ"); // "Total print time" - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("サイチョウプリントジカン"); // "Longest job time" - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("フィラメントシヨウリョウルイケイ"); // "Extruded total" - LSTR MSG_INFO_MIN_TEMP = _UxGT("セッテイサイテイオン"); // "Min Temp" - LSTR MSG_INFO_MAX_TEMP = _UxGT("セッテイサイコウオン"); // "Max Temp" - LSTR MSG_INFO_PSU = _UxGT("デンゲンシュベツ"); // "Power Supply" - LSTR MSG_DRIVE_STRENGTH = _UxGT("モータークドウリョク"); // "Drive Strength" - LSTR MSG_DAC_PERCENT_N = _UxGT("@ DACシュツリョク %"); // "@ Driver %" - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("EEPROMヘホゾン"); // "Store memory" + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Zオフセット"); // "Z Offset" + LSTR MSG_BABYSTEP_X = _UxGT("Xジク ビドウ"); // "Babystep X" + LSTR MSG_BABYSTEP_Y = _UxGT("Yジク ビドウ"); // "Babystep Y" + LSTR MSG_BABYSTEP_Z = _UxGT("Zジク ビドウ"); // "Babystep Z" + LSTR MSG_ENDSTOP_ABORT = _UxGT("イドウゲンカイケンチキノウ"); // "Endstop abort" + LSTR MSG_HEATING_FAILED_LCD = _UxGT("カネツシッパイ"); // "Heating failed" + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("エラー:ジョウチョウサーミスターキノウ"); // "Err: REDUNDANT TEMP" + LSTR MSG_THERMAL_RUNAWAY = _UxGT("ネツボウソウ"); // "THERMAL RUNAWAY" + LSTR MSG_ERR_MAXTEMP = _UxGT("エラー:サイコウオンチョウカ"); // "Err: MAXTEMP" + LSTR MSG_ERR_MINTEMP = _UxGT("エラー:サイテイオンミマン"); // "Err: MINTEMP" + LSTR MSG_HALTED = _UxGT("プリンターハテイシシマシタ"); // "PRINTER HALTED" + LSTR MSG_PLEASE_RESET = _UxGT("リセットシテクダサイ"); // "Please reset" + LSTR MSG_HEATING = _UxGT("カネツチュウ"); // "Heating..." + LSTR MSG_BED_HEATING = _UxGT("ベッド カネツチュウ"); // "Bed Heating..." + LSTR MSG_DELTA_CALIBRATE = _UxGT("デルタ コウセイ"); // "Delta Calibration" + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Xジク コウセイ"); // "Calibrate X" + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Yジク コウセイ"); // "Calibrate Y" + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Zジク コウセイ"); // "Calibrate Z" + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("チュウシン コウセイ"); // "Calibrate Center" + LSTR MSG_INFO_MENU = _UxGT("コノプリンターニツイテ"); // "About Printer" + LSTR MSG_INFO_PRINTER_MENU = _UxGT("プリンタージョウホウ"); // "Printer Info" + LSTR MSG_INFO_STATS_MENU = _UxGT("プリントジョウキョウ"); // "Printer Stats" + LSTR MSG_INFO_BOARD_MENU = _UxGT("セイギョケイジョウホウ"); // "Board Info" + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("サーミスター"); // "Thermistors" + LSTR MSG_INFO_EXTRUDERS = _UxGT("エクストルーダースウ"); // "Extruders" + LSTR MSG_INFO_BAUDRATE = _UxGT("ボーレート"); // "Baud" + LSTR MSG_INFO_PROTOCOL = _UxGT("プロトコル"); // "Protocol" + LSTR MSG_CASE_LIGHT = _UxGT("キョウタイナイショウメイ"); // "Case light" + LSTR MSG_INFO_PRINT_COUNT = _UxGT("プリントスウ "); // "Print Count" + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("カンリョウスウ"); // "Completed" + LSTR MSG_INFO_PRINT_TIME = _UxGT("プリントジカンルイケイ"); // "Total print time" + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("サイチョウプリントジカン"); // "Longest job time" + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("フィラメントシヨウリョウルイケイ"); // "Extruded total" + LSTR MSG_INFO_MIN_TEMP = _UxGT("セッテイサイテイオン"); // "Min Temp" + LSTR MSG_INFO_MAX_TEMP = _UxGT("セッテイサイコウオン"); // "Max Temp" + LSTR MSG_INFO_PSU = _UxGT("デンゲンシュベツ"); // "Power Supply" + LSTR MSG_DRIVE_STRENGTH = _UxGT("モータークドウリョク"); // "Drive Strength" + LSTR MSG_DAC_PERCENT_N = _UxGT("@ DACシュツリョク %"); // "@ Driver %" + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("EEPROMヘホゾン"); // "Store memory" LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("イチジテイシ"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("プリントサイカイ"); // "Resume print" - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("コウカンヲカイシシマス", "シバラクオマチクダサイ")); // "Wait for start of the filament" - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("フィラメントヌキダシチュウ", "シバラクオマチクダサイ")); // "Wait for filament unload" - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("フィラメントヲソウニュウシ,", "クリックスルトゾッコウシマス")); // "Insert filament and press button" - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("フィラメントソウテンチュウ", "シバラクオマチクダサイ")); // "Wait for filament load" - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("プリントヲサイカイシマス", "シバラクオマチクダサイ")); // "Wait for print to resume" + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("プリントサイカイ"); // "Resume print" + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("コウカンヲカイシシマス", "シバラクオマチクダサイ")); // "Wait for start of the filament" + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("フィラメントヌキダシチュウ", "シバラクオマチクダサイ")); // "Wait for filament unload" + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("フィラメントヲソウニュウシ,", "クリックスルトゾッコウシマス")); // "Insert filament and press button" + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("フィラメントソウテンチュウ", "シバラクオマチクダサイ")); // "Wait for filament load" + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("プリントヲサイカイシマス", "シバラクオマチクダサイ")); // "Wait for print to resume" - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("マチガッタプリンター"); // "Wrong printer" + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("マチガッタプリンター"); // "Wrong printer" LSTR MSG_CONFIGURATION = _UxGT("セッテイカンリ"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("ショウサイセッテイ"); diff --git a/Marlin/src/lcd/language/language_ko_KR.h b/Marlin/src/lcd/language/language_ko_KR.h index e52ced2dad..27be037344 100644 --- a/Marlin/src/lcd/language/language_ko_KR.h +++ b/Marlin/src/lcd/language/language_ko_KR.h @@ -88,7 +88,7 @@ namespace Language_ko_KR { LSTR MSG_LOAD_EEPROM = _UxGT("설정 읽어오기"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("설정 되돌리기"); LSTR MSG_INIT_EEPROM = _UxGT("EEPROM 초기화"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("새로고침"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("새로고침"); LSTR MSG_INFO_SCREEN = _UxGT("처음으로"); LSTR MSG_PREPARE = _UxGT("준비하기"); LSTR MSG_PAUSE_PRINT = _UxGT("일시정지"); diff --git a/Marlin/src/lcd/language/language_nl.h b/Marlin/src/lcd/language/language_nl.h index d708135fac..bc60d19946 100644 --- a/Marlin/src/lcd/language/language_nl.h +++ b/Marlin/src/lcd/language/language_nl.h @@ -113,7 +113,7 @@ namespace Language_nl { LSTR MSG_TEMPERATURE = _UxGT("Temperatuur"); LSTR MSG_MOTION = _UxGT("Beweging"); LSTR MSG_FILAMENT = _UxGT("Filament"); - LSTR MSG_ADVANCE_K = _UxGT("Advance K"); // accepted english dutch + LSTR MSG_ADVANCE_K = _UxGT("Advance K"); // accepted english dutch LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *"); // accepted english dutch LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Dia."); @@ -122,7 +122,7 @@ namespace Language_nl { LSTR MSG_STORE_EEPROM = _UxGT("Geheugen opslaan"); LSTR MSG_LOAD_EEPROM = _UxGT("Geheugen laden"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("Noodstop reset"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ververs"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ververs"); LSTR MSG_INFO_SCREEN = _UxGT("Info scherm"); LSTR MSG_PREPARE = _UxGT("Voorbereiden"); LSTR MSG_TUNE = _UxGT("Afstellen"); @@ -137,7 +137,7 @@ namespace Language_nl { LSTR MSG_NO_MOVE = _UxGT("Geen beweging."); LSTR MSG_KILLED = _UxGT("Afgebroken. "); LSTR MSG_STOPPED = _UxGT("Gestopt. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Retract mm"); // accepted English term in Dutch + LSTR MSG_CONTROL_RETRACT = _UxGT("Retract mm"); // accepted English term in Dutch LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Ruil Retract mm"); LSTR MSG_CONTROL_RETRACTF = _UxGT("Retract F"); LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); @@ -153,7 +153,7 @@ namespace Language_nl { LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Zelf-Test"); LSTR MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch"); LSTR MSG_HOME_FIRST = _UxGT("Home %s Eerst"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Offset"); // accepted English term in Dutch + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Offset"); // accepted English term in Dutch LSTR MSG_BABYSTEP_X = _UxGT("Babystap X"); LSTR MSG_BABYSTEP_Y = _UxGT("Babystap Y"); LSTR MSG_BABYSTEP_Z = _UxGT("Babystap Z"); @@ -196,7 +196,7 @@ namespace Language_nl { LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Temp"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Max Temp"); - LSTR MSG_INFO_PSU = _UxGT("PSU"); // accepted English term in Dutch + LSTR MSG_INFO_PSU = _UxGT("PSU"); // accepted English term in Dutch LSTR MSG_DRIVE_STRENGTH = _UxGT("Motorstroom"); diff --git a/Marlin/src/lcd/language/language_pl.h b/Marlin/src/lcd/language/language_pl.h index 855a1e3bd1..8aa12d903d 100644 --- a/Marlin/src/lcd/language/language_pl.h +++ b/Marlin/src/lcd/language/language_pl.h @@ -306,7 +306,7 @@ namespace Language_pl { LSTR MSG_INIT_EEPROM = _UxGT("Initializuj EEPROM"); LSTR MSG_MEDIA_UPDATE = _UxGT("Uaktualnij kartę"); LSTR MSG_RESET_PRINTER = _UxGT("Resetuj drukarkę"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Odswież"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Odswież"); LSTR MSG_INFO_SCREEN = _UxGT("Ekran główny"); LSTR MSG_PREPARE = _UxGT("Przygotuj"); LSTR MSG_TUNE = _UxGT("Strojenie"); diff --git a/Marlin/src/lcd/language/language_pt_br.h b/Marlin/src/lcd/language/language_pt_br.h index 4ace61e116..81344b60c4 100644 --- a/Marlin/src/lcd/language/language_pt_br.h +++ b/Marlin/src/lcd/language/language_pt_br.h @@ -274,7 +274,7 @@ namespace Language_pt_br { LSTR MSG_INIT_EEPROM = _UxGT("Iniciar EEPROM"); LSTR MSG_MEDIA_UPDATE = _UxGT("Atualiz. SD"); LSTR MSG_RESET_PRINTER = _UxGT("Resetar Impressora"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Atualização"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Atualização"); LSTR MSG_INFO_SCREEN = _UxGT("Informações"); LSTR MSG_PREPARE = _UxGT("Preparar"); LSTR MSG_TUNE = _UxGT("Ajustar"); diff --git a/Marlin/src/lcd/language/language_ro.h b/Marlin/src/lcd/language/language_ro.h index 75f27c1ecf..b4f7550a7f 100644 --- a/Marlin/src/lcd/language/language_ro.h +++ b/Marlin/src/lcd/language/language_ro.h @@ -323,7 +323,7 @@ namespace Language_ro { LSTR MSG_SETTINGS_STORED = _UxGT("Settings Stored"); LSTR MSG_MEDIA_UPDATE = _UxGT("Media Update"); LSTR MSG_RESET_PRINTER = _UxGT("Reset Imprimanta"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Refresh"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Refresh"); LSTR MSG_INFO_SCREEN = _UxGT("Info Screen"); LSTR MSG_PREPARE = _UxGT("Prepare"); LSTR MSG_TUNE = _UxGT("Tune"); diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h index 572e7fe9ea..c7b2cef0d1 100644 --- a/Marlin/src/lcd/language/language_sk.h +++ b/Marlin/src/lcd/language/language_sk.h @@ -457,7 +457,7 @@ namespace Language_sk { LSTR MSG_SETTINGS_STORED = _UxGT("Nastavenie uložené"); LSTR MSG_MEDIA_UPDATE = _UxGT("Aktualiz. z karty"); LSTR MSG_RESET_PRINTER = _UxGT("Reštart. tlačiar."); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Obnoviť"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Obnoviť"); LSTR MSG_INFO_SCREEN = _UxGT("Info. obrazovka"); LSTR MSG_INFO_MACHINENAME = _UxGT("Názov stroja"); LSTR MSG_INFO_SIZE = _UxGT("Rozmer"); diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h index 5fc78758d4..5be21c9c56 100644 --- a/Marlin/src/lcd/language/language_tr.h +++ b/Marlin/src/lcd/language/language_tr.h @@ -436,7 +436,7 @@ namespace Language_tr { LSTR MSG_SETTINGS_STORED = _UxGT("Ayarlar Kaydedildi"); LSTR MSG_MEDIA_UPDATE = _UxGT("SD Güncellemesi"); LSTR MSG_RESET_PRINTER = _UxGT("Yazıcıyı Resetle"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Yenile"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Yenile"); LSTR MSG_INFO_SCREEN = _UxGT("Bilgi Ekranı"); LSTR MSG_INFO_MACHINENAME = _UxGT("Makine Adı"); LSTR MSG_INFO_SIZE = _UxGT("Boyut"); diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h index 3a644a0b34..7a7f4a5f44 100644 --- a/Marlin/src/lcd/language/language_uk.h +++ b/Marlin/src/lcd/language/language_uk.h @@ -480,7 +480,7 @@ namespace Language_uk { LSTR MSG_POWER = _UxGT("Потужність"); LSTR MSG_START_PRINT = _UxGT("Почати друк"); - LSTR MSG_BUTTON_NEXT = _UxGT("Далі"); //short text for buttons + LSTR MSG_BUTTON_NEXT = _UxGT("Далі"); //short text for buttons LSTR MSG_BUTTON_INIT = _UxGT("Ініц-я"); LSTR MSG_BUTTON_STOP = _UxGT("Зупинка"); LSTR MSG_BUTTON_PRINT = _UxGT("Друк"); diff --git a/Marlin/src/lcd/language/language_vi.h b/Marlin/src/lcd/language/language_vi.h index 5795c58a1e..2ce22961ca 100644 --- a/Marlin/src/lcd/language/language_vi.h +++ b/Marlin/src/lcd/language/language_vi.h @@ -43,7 +43,7 @@ namespace Language_vi { LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB được rút ra"); LSTR MSG_MEDIA_USB_FAILED = _UxGT("USB khởi thất bại"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Công tắc"); // Endstops - công tắc hành trình - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Công tắc mềm"); // soft Endstops + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Công tắc mềm"); // Soft Endstops LSTR MSG_MAIN_MENU = _UxGT("Chính"); // Main LSTR MSG_ADVANCED_SETTINGS = _UxGT("Thiết lập cấp cao"); // Advanced Settings LSTR MSG_CONFIGURATION = _UxGT("Cấu hình"); // Configuration @@ -52,9 +52,9 @@ namespace Language_vi { LSTR MSG_DEBUG_MENU = _UxGT("Menu gỡ lỗi"); // Debug Menu LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Kiểm tra tiến độ"); // Progress bar test LSTR MSG_AUTO_HOME = _UxGT("Về nhà tự động"); // Auto home - LSTR MSG_AUTO_HOME_X = _UxGT("Về nhà X"); // home X - LSTR MSG_AUTO_HOME_Y = _UxGT("Về nhà Y"); // home Y - LSTR MSG_AUTO_HOME_Z = _UxGT("Về nhà Z"); // home Z + LSTR MSG_AUTO_HOME_X = _UxGT("Về nhà X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Về nhà Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Về nhà Z"); // Home Z LSTR MSG_AUTO_Z_ALIGN = _UxGT("Chỉnh canh Z tự động"); LSTR MSG_LEVEL_BED_HOMING = _UxGT("Đang về nhà XYZ"); // Homing XYZ LSTR MSG_LEVEL_BED_WAITING = _UxGT("Nhấn để bắt đầu"); // Click to Begin @@ -68,17 +68,17 @@ namespace Language_vi { LSTR MSG_PREHEAT_1_H = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ~"); // Preheat LSTR MSG_PREHEAT_1_END = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu"); LSTR MSG_PREHEAT_1_END_E = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Tất cả"); // all - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Bàn"); // bed -- using vietnamese term for 'table' instead - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Cấu hình"); // conf + LSTR MSG_PREHEAT_1_ALL = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Tất cả"); // All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Bàn"); // Bed -- using vietnamese term for 'table' instead + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Cấu hình"); // Conf - LSTR MSG_PREHEAT_M = _UxGT("Làm nóng $ trước"); // Preheat - LSTR MSG_PREHEAT_M_H = _UxGT("Làm nóng $ trước ~"); // Preheat + LSTR MSG_PREHEAT_M = _UxGT("Làm nóng $ trước"); // Preheat + LSTR MSG_PREHEAT_M_H = _UxGT("Làm nóng $ trước ~"); // Preheat LSTR MSG_PREHEAT_M_END = _UxGT("Làm nóng $ Đầu"); LSTR MSG_PREHEAT_M_END_E = _UxGT("Làm nóng $ Đầu ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Làm nóng $ Tất cả"); // all - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Làm nóng $ Bàn"); // bed -- using vietnamese term for 'table' instead - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Làm nóng $ Cấu hình"); // conf + LSTR MSG_PREHEAT_M_ALL = _UxGT("Làm nóng $ Tất cả"); // All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Làm nóng $ Bàn"); // Bed -- using vietnamese term for 'table' instead + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Làm nóng $ Cấu hình"); // Conf #endif LSTR MSG_PREHEAT_CUSTOM = _UxGT("Sự nóng trước tự chọn"); // Preheat Custom LSTR MSG_COOLDOWN = _UxGT("Nguội xuống"); // Cooldown @@ -112,7 +112,7 @@ namespace Language_vi { LSTR MSG_UBL_BC_INSERT = _UxGT("Đặt chêm và đo"); // Place shim & measure LSTR MSG_UBL_BC_INSERT2 = _UxGT("Đo"); // Measure LSTR MSG_UBL_BC_REMOVE = _UxGT("Tháo và đo bàn"); // Remove & measure bed - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Chuyển sang tiếp theo"); // moving to next + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Chuyển sang tiếp theo"); // Moving to next LSTR MSG_UBL_ACTIVATE_MESH = _UxGT("Bật UBL"); LSTR MSG_UBL_DEACTIVATE_MESH = _UxGT("Tắt UBL"); LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Nhiệt độ bàn"); // Bed Temp @@ -133,7 +133,7 @@ namespace Language_vi { LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Điều chỉnh chiều cao lưới"); // Adjust Mesh Height LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Số lượng chiều cao"); // Height Amount LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Thẩm tra lưới"); // Validate Mesh - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Thẩm tra lưới tự chọn"); // validate custom mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Thẩm tra lưới tự chọn"); // Validate custom mesh LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Tiếp tục xây lưới bàn"); // Continue Bed Mesh LSTR MSG_UBL_MESH_LEVELING = _UxGT("Đang san lấp lưới"); // Mesh Leveling LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Đang san lấp 3-điểm"); // 3-Point Leveling @@ -210,20 +210,20 @@ namespace Language_vi { LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Bàn"); LSTR MSG_NOZZLE = _UxGT("Đầu phun"); // Nozzle LSTR MSG_NOZZLE_N = _UxGT("Đầu phun ~"); - LSTR MSG_BED = _UxGT("Bàn"); // bed - LSTR MSG_FAN_SPEED = _UxGT("Tốc độ quạt"); // fan speed + LSTR MSG_BED = _UxGT("Bàn"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Tốc độ quạt"); // Fan speed LSTR MSG_FAN_SPEED_N = _UxGT("Tốc độ quạt ~"); LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Tốc độ quạt phụ"); // Extra fan speed LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Tốc độ quạt phụ ~"); LSTR MSG_FLOW = _UxGT("Lưu Lượng"); LSTR MSG_FLOW_N = _UxGT("Lưu Lượng ~"); LSTR MSG_CONTROL = _UxGT("Điều khiển"); // Control - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Đa"); // min - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Thiểu"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Hệ Số"); // factor + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Đa"); // Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Thiểu"); // Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Hệ Số"); // Factor LSTR MSG_AUTOTEMP = _UxGT("Nhiệt độ tự động"); // Autotemp - LSTR MSG_LCD_ON = _UxGT("Bật"); // on - LSTR MSG_LCD_OFF = _UxGT("Tắt"); // off + LSTR MSG_LCD_ON = _UxGT("Bật"); // On + LSTR MSG_LCD_OFF = _UxGT("Tắt"); // Off LSTR MSG_SELECT_E = _UxGT("Lựa *"); LSTR MSG_ACC = _UxGT("Tăng Tốc"); LSTR MSG_JERK = _UxGT("Giật"); @@ -233,8 +233,8 @@ namespace Language_vi { LSTR MSG_VN_JERK = _UxGT("Giật-V@"); LSTR MSG_VE_JERK = _UxGT("Giật-Ve"); LSTR MSG_JUNCTION_DEVIATION = _UxGT("Độ Lệch Chỗ Giao"); // Junction Dev - LSTR MSG_MAX_SPEED = _UxGT("Vận tốc"); // velocity - LSTR MSG_VMAX_A = _UxGT("Vđa") STR_A; // Vmax + LSTR MSG_MAX_SPEED = _UxGT("Vận tốc"); // Velocity + LSTR MSG_VMAX_A = _UxGT("Vđa") STR_A; // Vmax LSTR MSG_VMAX_B = _UxGT("Vđa") STR_B; LSTR MSG_VMAX_C = _UxGT("Vđa") STR_C; LSTR MSG_VMAX_N = _UxGT("Vđa@"); @@ -243,162 +243,162 @@ namespace Language_vi { LSTR MSG_VMIN = _UxGT("Vthiểu"); // Vmin LSTR MSG_VTRAV_MIN = _UxGT("Vchuyển thiểu"); // VTrav min LSTR MSG_ACCELERATION = _UxGT("Sự tăng tốc"); // Acceleration - LSTR MSG_AMAX_A = _UxGT("Tăng tốc ca") STR_A; // Amax + LSTR MSG_AMAX_A = _UxGT("Tăng tốc ca") STR_A; // Amax LSTR MSG_AMAX_B = _UxGT("Tăng tốc ca") STR_B; LSTR MSG_AMAX_C = _UxGT("Tăng tốc ca") STR_C; LSTR MSG_AMAX_N = _UxGT("Tăng tốc ca@"); LSTR MSG_AMAX_E = _UxGT("Tăng tốc caE"); LSTR MSG_AMAX_EN = _UxGT("Tăng tốc ca *"); - LSTR MSG_A_RETRACT = _UxGT("TT-Rút"); // A-retract - LSTR MSG_A_TRAVEL = _UxGT("TT-Chuyển"); // A-travel - LSTR MSG_STEPS_PER_MM = _UxGT("Bước/mm"); // Steps - LSTR MSG_A_STEPS = _UxGT("Bước") STR_A _UxGT("/mm"); // Steps/mm + LSTR MSG_A_RETRACT = _UxGT("TT-Rút"); // A-retract + LSTR MSG_A_TRAVEL = _UxGT("TT-Chuyển"); // A-travel + LSTR MSG_STEPS_PER_MM = _UxGT("Bước/mm"); // Steps + LSTR MSG_A_STEPS = _UxGT("Bước") STR_A _UxGT("/mm"); // Steps/mm LSTR MSG_B_STEPS = _UxGT("Bước") STR_B _UxGT("/mm"); LSTR MSG_C_STEPS = _UxGT("Bước") STR_C _UxGT("/mm"); LSTR MSG_N_STEPS = _UxGT("Bước@/mm"); LSTR MSG_E_STEPS = _UxGT("BướcE/mm"); LSTR MSG_EN_STEPS = _UxGT("Bước */mm"); - LSTR MSG_TEMPERATURE = _UxGT("Nhiệt độ"); // Temperature - LSTR MSG_MOTION = _UxGT("Chuyển động"); // Motion - LSTR MSG_FILAMENT = _UxGT("Vật liệu in"); // dây nhựa - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E bằng mm") SUPERSCRIPT_THREE; // E in mm - LSTR MSG_FILAMENT_DIAM = _UxGT("Đường kính nhựa"); // Fil. Dai. + LSTR MSG_TEMPERATURE = _UxGT("Nhiệt độ"); // Temperature + LSTR MSG_MOTION = _UxGT("Chuyển động"); // Motion + LSTR MSG_FILAMENT = _UxGT("Vật liệu in"); // Dây nhựa + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E bằng mm") SUPERSCRIPT_THREE; // E in mm + LSTR MSG_FILAMENT_DIAM = _UxGT("Đường kính nhựa"); // Fil. Dai. LSTR MSG_FILAMENT_DIAM_E = _UxGT("Đường kính nhựa *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Dỡ mm"); // unload mm + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Dỡ mm"); // Unload mm LSTR MSG_FILAMENT_LOAD = _UxGT("Nạp mm"); - LSTR MSG_ADVANCE_K = _UxGT("K Cấp Cao"); // Advance K - LSTR MSG_ADVANCE_K_E = _UxGT("K Cấp Cao *"); // Advance K - LSTR MSG_CONTRAST = _UxGT("Độ tương phản LCD"); // LCD contrast - LSTR MSG_STORE_EEPROM = _UxGT("Lưu các thiết lập"); // Store settings - LSTR MSG_LOAD_EEPROM = _UxGT("Tải các cài đặt"); // Load settings - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Khôi phục phòng hư"); // Restore Defaults - LSTR MSG_INIT_EEPROM = _UxGT("Khởi Tạo EEPROM"); // Initialize EEPROM - LSTR MSG_MEDIA_UPDATE = _UxGT("Cập Nhật phương tiện"); // Update media + LSTR MSG_ADVANCE_K = _UxGT("K Cấp Cao"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("K Cấp Cao *"); // Advance K + LSTR MSG_CONTRAST = _UxGT("Độ tương phản LCD"); // LCD contrast + LSTR MSG_STORE_EEPROM = _UxGT("Lưu các thiết lập"); // Store settings + LSTR MSG_LOAD_EEPROM = _UxGT("Tải các cài đặt"); // Load settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Khôi phục phòng hư"); // Restore Defaults + LSTR MSG_INIT_EEPROM = _UxGT("Khởi Tạo EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Cập Nhật phương tiện"); // Update media LSTR MSG_RESET_PRINTER = _UxGT("Bặt Lại Máy In"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Cập Nhật"); // Refresh - LSTR MSG_INFO_SCREEN = _UxGT("Màn Hình Thông Tin"); // Info screen - LSTR MSG_PREPARE = _UxGT("Chuẩn bị"); // Prepare - LSTR MSG_TUNE = _UxGT("Điều Chỉnh"); // Tune - LSTR MSG_PAUSE_PRINT = _UxGT("Tạm dừng in"); // Pause print - LSTR MSG_RESUME_PRINT = _UxGT("Tiếp tục in"); // Resume print - LSTR MSG_STOP_PRINT = _UxGT("Ngừng in"); // Stop print - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Phục Hồi Mất Điện"); // Outage Recovery - LSTR MSG_MEDIA_MENU = _UxGT("In từ phương tiện"); // Print from media - LSTR MSG_NO_MEDIA = _UxGT("Không có phương tiện"); // No media - LSTR MSG_DWELL = _UxGT("Ngủ..."); // Sleep - LSTR MSG_USERWAIT = _UxGT("Nhấn để tiếp tục..."); // Click to resume (same as 'continue') - LSTR MSG_PRINT_PAUSED = _UxGT("In tạm dừng"); // print paused - LSTR MSG_PRINTING = _UxGT("Đang in..."); // printing - LSTR MSG_PRINT_ABORTED = _UxGT("In đã hủy bỏ"); // Print aborted - LSTR MSG_NO_MOVE = _UxGT("Không di chuyển."); // No move. + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Cập Nhật"); // Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Màn Hình Thông Tin"); // Info screen + LSTR MSG_PREPARE = _UxGT("Chuẩn bị"); // Prepare + LSTR MSG_TUNE = _UxGT("Điều Chỉnh"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Tạm dừng in"); // Pause print + LSTR MSG_RESUME_PRINT = _UxGT("Tiếp tục in"); // Resume print + LSTR MSG_STOP_PRINT = _UxGT("Ngừng in"); // Stop print + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Phục Hồi Mất Điện"); // Outage Recovery + LSTR MSG_MEDIA_MENU = _UxGT("In từ phương tiện"); // Print from media + LSTR MSG_NO_MEDIA = _UxGT("Không có phương tiện"); // No media + LSTR MSG_DWELL = _UxGT("Ngủ..."); // Sleep + LSTR MSG_USERWAIT = _UxGT("Nhấn để tiếp tục..."); // Click to resume (same as 'continue') + LSTR MSG_PRINT_PAUSED = _UxGT("In tạm dừng"); // Print paused + LSTR MSG_PRINTING = _UxGT("Đang in..."); // Printing + LSTR MSG_PRINT_ABORTED = _UxGT("In đã hủy bỏ"); // Print aborted + LSTR MSG_NO_MOVE = _UxGT("Không di chuyển."); // No move. LSTR MSG_KILLED = _UxGT("ĐÃ CHẾT. "); LSTR MSG_STOPPED = _UxGT("ĐÃ NGỪNG. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Rút mm"); // Retract mm - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Rút Trao.mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACT = _UxGT("Rút mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Rút Trao.mm"); // Swap Re.mm LSTR MSG_CONTROL_RETRACTF = _UxGT("Rút V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Nhảy mm"); // hop - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("BỏRút mm"); // Unretr. mm - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("BỏRút T mm"); // S Unretr. mm - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("BỏRút V"); // UnRet V - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("BỏRút T V"); // S UnRet V - LSTR MSG_AUTORETRACT = _UxGT("RútTựĐộng"); // Auto-Retract - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Khoảng Cách Rút"); // Retract Distance - LSTR MSG_TOOL_CHANGE = _UxGT("Thay Đổi Công Cụ"); // Tool Change - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Đưa Lên Z"); // Z Raise - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Tốc Độ Tuôn Ra"); // Prime Speed - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Tốc Độ Rút Lại"); // Retract Speed - LSTR MSG_FILAMENTCHANGE = _UxGT("Thay dây nhựa"); // change filament - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Thay dây nhựa *"); // change filament - LSTR MSG_FILAMENTLOAD = _UxGT("Nạp dây nhựa"); // load filament - LSTR MSG_FILAMENTLOAD_E = _UxGT("Nạp dây nhựa *"); // load filament - LSTR MSG_FILAMENTUNLOAD = _UxGT("Dỡ dây nhựa"); // unload filament - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Dỡ dây nhựa *"); // unload filament - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Dỡ tất cả"); // Unload All - LSTR MSG_ATTACH_MEDIA = _UxGT("Khởi tạo phương tiện"); // Attach media - LSTR MSG_CHANGE_MEDIA = _UxGT("Thay phương tiện"); // Change midea + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Nhảy mm"); // Hop + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("BỏRút mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("BỏRút T mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("BỏRút V"); // UnRet V + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("BỏRút T V"); // S UnRet V + LSTR MSG_AUTORETRACT = _UxGT("RútTựĐộng"); // Auto-Retract + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Khoảng Cách Rút"); // Retract Distance + LSTR MSG_TOOL_CHANGE = _UxGT("Thay Đổi Công Cụ"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Đưa Lên Z"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Tốc Độ Tuôn Ra"); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Tốc Độ Rút Lại"); // Retract Speed + LSTR MSG_FILAMENTCHANGE = _UxGT("Thay dây nhựa"); // Change filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Thay dây nhựa *"); // Change filament + LSTR MSG_FILAMENTLOAD = _UxGT("Nạp dây nhựa"); // Load filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Nạp dây nhựa *"); // Load filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Dỡ dây nhựa"); // Unload filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Dỡ dây nhựa *"); // Unload filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Dỡ tất cả"); // Unload All + LSTR MSG_ATTACH_MEDIA = _UxGT("Khởi tạo phương tiện"); // Attach media + LSTR MSG_CHANGE_MEDIA = _UxGT("Thay phương tiện"); // Change midea LSTR MSG_RELEASE_MEDIA = _UxGT("Phát hành phương tiện"); - LSTR MSG_ZPROBE_OUT = _UxGT("Đầu Dò Z qua bàn"); // Z Probe past bed - LSTR MSG_SKEW_FACTOR = _UxGT("Hệ số nghiêng"); // Skew Factor - LSTR MSG_BLTOUCH = _UxGT("BLTOUCH"); // BLTouch - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Tự kiểm tra BLTOUCH "); // BLTouch Self-Test - LSTR MSG_BLTOUCH_RESET = _UxGT("Bặt lại BLTouch"); // Reset BLTouch - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Đem BLTouch"); // Deploy BLTouch - LSTR MSG_BLTOUCH_STOW = _UxGT("Cất BLTouch"); // Stow BLTouch - LSTR MSG_MANUAL_DEPLOY = _UxGT("Đem Đầu Dò-Z"); // Deploy Z-Probe - LSTR MSG_MANUAL_STOW = _UxGT("Cất Đầu Dò-Z"); // Stow Z-Probe + LSTR MSG_ZPROBE_OUT = _UxGT("Đầu Dò Z qua bàn"); // Z Probe past bed + LSTR MSG_SKEW_FACTOR = _UxGT("Hệ số nghiêng"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTOUCH"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Tự kiểm tra BLTOUCH "); // BLTouch Self-Test + LSTR MSG_BLTOUCH_RESET = _UxGT("Bặt lại BLTouch"); // Reset BLTouch + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Đem BLTouch"); // Deploy BLTouch + LSTR MSG_BLTOUCH_STOW = _UxGT("Cất BLTouch"); // Stow BLTouch + LSTR MSG_MANUAL_DEPLOY = _UxGT("Đem Đầu Dò-Z"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Cất Đầu Dò-Z"); // Stow Z-Probe LSTR MSG_HOME_FIRST = _UxGT("Về nhà %s Trước"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Đầu Dò Bù Đắp Z"); // Probe Z Offset - LSTR MSG_BABYSTEP_X = _UxGT("Nhít X"); // Babystep X + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Đầu Dò Bù Đắp Z"); // Probe Z Offset + LSTR MSG_BABYSTEP_X = _UxGT("Nhít X"); // Babystep X LSTR MSG_BABYSTEP_Y = _UxGT("Nhít Y"); LSTR MSG_BABYSTEP_Z = _UxGT("Nhít Z"); LSTR MSG_BABYSTEP_N = _UxGT("Nhít @"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Hủy bỏ công tắc"); // Endstop abort - LSTR MSG_HEATING_FAILED_LCD = _UxGT("Sưởi đầu phun không thành công"); // Heating failed - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Điều sai: nhiệt độ dư"); // Err: REDUNDANT TEMP - LSTR MSG_THERMAL_RUNAWAY = _UxGT("Vấn đề nhiệt"); // THERMAL RUNAWAY | problem - LSTR MSG_THERMAL_RUNAWAY_BED = _UxGT("Vấn đề nhiệt bàn"); // BED THERMAL RUNAWAY - LSTR MSG_ERR_MAXTEMP = _UxGT("Điều sai: nhiệt độ tối đa"); // Err: MAXTEMP - LSTR MSG_ERR_MINTEMP = _UxGT("Điều sai: nhiệt độ tối thiểu"); // Err: MINTEMP - LSTR MSG_HALTED = _UxGT("MÁY IN ĐÃ DỪNG LẠI"); // PRINTER HALTED - LSTR MSG_PLEASE_RESET = _UxGT("Xin bặt lại"); // Please reset - LSTR MSG_HEATING = _UxGT("Đang sưởi nóng..."); // heating - LSTR MSG_COOLING = _UxGT("Đang làm nguội..."); // cooling - LSTR MSG_BED_HEATING = _UxGT("Đang sưởi nong bàn..."); // bed heating - LSTR MSG_BED_COOLING = _UxGT("Đang làm nguội bàn..."); // bed cooling - LSTR MSG_DELTA_CALIBRATE = _UxGT("Cân Chỉnh Delta"); // Delta calibration + LSTR MSG_ENDSTOP_ABORT = _UxGT("Hủy bỏ công tắc"); // Endstop abort + LSTR MSG_HEATING_FAILED_LCD = _UxGT("Sưởi đầu phun không thành công"); // Heating failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Điều sai: nhiệt độ dư"); // Err: REDUNDANT TEMP + LSTR MSG_THERMAL_RUNAWAY = _UxGT("Vấn đề nhiệt"); // THERMAL RUNAWAY | problem + LSTR MSG_THERMAL_RUNAWAY_BED = _UxGT("Vấn đề nhiệt bàn"); // BED THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Điều sai: nhiệt độ tối đa"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Điều sai: nhiệt độ tối thiểu"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("MÁY IN ĐÃ DỪNG LẠI"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Xin bặt lại"); // Please reset + LSTR MSG_HEATING = _UxGT("Đang sưởi nóng..."); // Heating + LSTR MSG_COOLING = _UxGT("Đang làm nguội..."); // Cooling + LSTR MSG_BED_HEATING = _UxGT("Đang sưởi nong bàn..."); // Bed heating + LSTR MSG_BED_COOLING = _UxGT("Đang làm nguội bàn..."); // Bed cooling + LSTR MSG_DELTA_CALIBRATE = _UxGT("Cân Chỉnh Delta"); // Delta calibration LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Chỉnh X lại"); LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Chỉnh Y lại"); LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Chỉnh Z lại"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Chỉnh Z Center"); // Calibrate Center - LSTR MSG_DELTA_SETTINGS = _UxGT("Cài Đặt Delta"); // Delta Settings - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Cân Chỉnh Tự Động"); // Auto Calibration - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Gậy Chéo"); // Diag Rod - LSTR MSG_DELTA_HEIGHT = _UxGT("Chiều Cao"); // Height - LSTR MSG_DELTA_RADIUS = _UxGT("Bán Kính"); // Radius + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Chỉnh Z Center"); // Calibrate Center + LSTR MSG_DELTA_SETTINGS = _UxGT("Cài Đặt Delta"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Cân Chỉnh Tự Động"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Gậy Chéo"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Chiều Cao"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Bán Kính"); // Radius LSTR MSG_INFO_MENU = _UxGT("Về Máy In"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Thông Tin Máy In"); // Printer Info - LSTR MSG_3POINT_LEVELING = _UxGT("San lấp 3-Điểm"); // 3-Point Leveling - LSTR MSG_LINEAR_LEVELING = _UxGT("San Lấp Tuyến Tính"); // Linear Leveling - LSTR MSG_BILINEAR_LEVELING = _UxGT("San Lấp Song Tuyến"); // Bilinear Leveling - LSTR MSG_UBL_LEVELING = _UxGT("San Lấp Bàn Thống Nhất"); // Unified Bed Leveling - LSTR MSG_MESH_LEVELING = _UxGT("Lưới San Lấp"); // Mesh Leveling - LSTR MSG_INFO_STATS_MENU = _UxGT("Thống Kê Máy In"); // Printer Stats - LSTR MSG_INFO_BOARD_MENU = _UxGT("Thông Tin Bo Mạch"); // Board Info - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Điện Trở Nhiệt"); // Thermistors - LSTR MSG_INFO_EXTRUDERS = _UxGT("Máy đùn"); // Extruders - LSTR MSG_INFO_BAUDRATE = _UxGT("Baud"); // Baud - LSTR MSG_INFO_PROTOCOL = _UxGT("Giao Thức"); // Protocol - LSTR MSG_CASE_LIGHT = _UxGT("Đèn Khuông"); // Case light - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Độ Sáng"); // Light Brightness + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Thông Tin Máy In"); // Printer Info + LSTR MSG_3POINT_LEVELING = _UxGT("San lấp 3-Điểm"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("San Lấp Tuyến Tính"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("San Lấp Song Tuyến"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("San Lấp Bàn Thống Nhất"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Lưới San Lấp"); // Mesh Leveling + LSTR MSG_INFO_STATS_MENU = _UxGT("Thống Kê Máy In"); // Printer Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Thông Tin Bo Mạch"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Điện Trở Nhiệt"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Máy đùn"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Baud"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Giao Thức"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Đèn Khuông"); // Case light + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Độ Sáng"); // Light Brightness #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Số In"); // Print Count + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Số In"); // Print Count LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Đã hoàn thành"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tổng số thời gian in"); // Total print time - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Thời gian việc lâu nhất"); // Longest job time - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Tổng số đùn"); // Extruded total + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tổng số thời gian in"); // Total print time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Thời gian việc lâu nhất"); // Longest job time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Tổng số đùn"); // Extruded total #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("In"); // prints - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Đã hoàn thành"); // Completed - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tổng số"); // total - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Dài nhất"); // Longest + LSTR MSG_INFO_PRINT_COUNT = _UxGT("In"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Đã hoàn thành"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tổng số"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Dài nhất"); // Longest LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Đã ép đùn"); #endif - LSTR MSG_INFO_MIN_TEMP = _UxGT("Nhiệt độ tối thiểu"); // Min Temp - LSTR MSG_INFO_MAX_TEMP = _UxGT("Nhiệt độ tối đa"); // Max temp - LSTR MSG_INFO_PSU = _UxGT("Bộ nguồn"); // PSU - LSTR MSG_DRIVE_STRENGTH = _UxGT("Sức mạnh ổ đĩa"); // Drive Strength + LSTR MSG_INFO_MIN_TEMP = _UxGT("Nhiệt độ tối thiểu"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Nhiệt độ tối đa"); // Max temp + LSTR MSG_INFO_PSU = _UxGT("Bộ nguồn"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Sức mạnh ổ đĩa"); // Drive Strength LSTR MSG_DAC_PERCENT_N = _UxGT("@ % trình điều khiển"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Ghi DAC EEPROM"); // DAC EEPROM Write - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("In tạm dừng"); // PRINT PAUSED + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Ghi DAC EEPROM"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("In tạm dừng"); // PRINT PAUSED LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("Nạp dây nhựa"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("Dỡ dây nhựa"); // unload filament - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("Tùy chọn hồi phục:"); // RESUME OPTIONS - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Xả thêm"); // Purge more - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Tiếp tục"); // continue - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Đầu Phun: "); // Nozzle - LSTR MSG_RUNOUT_SENSOR_ENABLE = _UxGT("Cảm Biến Hết"); // Runout Sensor - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Sự nhà không thành công"); // Homing failed - LSTR MSG_LCD_PROBING_FAILED = _UxGT(" không thành công"); // Probing failed + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("Dỡ dây nhựa"); // Unload filament + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("Tùy chọn hồi phục:"); // RESUME OPTIONS + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Xả thêm"); // Purge more + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Tiếp tục"); // Continue + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Đầu Phun: "); // Nozzle + LSTR MSG_RUNOUT_SENSOR_ENABLE = _UxGT("Cảm Biến Hết"); // Runout Sensor + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Sự nhà không thành công"); // Homing failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT(" không thành công"); // Probing failed // // Filament Change screens show up to 3 lines on a 4-line display @@ -406,36 +406,37 @@ namespace Language_vi { // #if LCD_HEIGHT >= 4 LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Nhấn nút", "để tiếp tục in")); // Press button to resume print - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Chờ cho sự", "thay đổi dây nhựa", "bắt đầu")); // wait for filament change to start - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Đút dây nhựa vào", "và nhấn nút", "để tiếp tục")); // insert filament and press button to continue // + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Chờ cho sự", "thay đổi dây nhựa", "bắt đầu")); // Wait for filament change to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Đút dây nhựa vào", "và nhấn nút", "để tiếp tục")); // Insert filament and press button to continue // LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Nhấn nút", "để làm nóng đầu phun")); // Press button to heat nozzle LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Đầu phun đang nóng lên", "Xin chờ...")); // Nozzle heating Please wait - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Chờ tro", "dây nhựa ra")); // Wait for filament unload - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Chờ tro", "dây nhựa vào")); // Wait for filament load - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Chờ tro", "xả dây nhựa")); // wait for filament purge + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Chờ tro", "dây nhựa ra")); // Wait for filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Chờ tro", "dây nhựa vào")); // Wait for filament load + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Chờ tro", "xả dây nhựa")); // Wait for filament purge LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Nhấn nút để kết thúc", "xả dây nhựa")); // Click to finish dây nhựa purge LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Chờ tro in", "tiếp tục...")); // Wait for print to resume #else // LCD_HEIGHT < 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Nhấn nút để tiếp tục")); // Click to continue + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Nhấn nút để tiếp tục")); // Click to continue LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Xin chờ...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Chèn và nhấn")); // Insert and Click - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Nhấn để sưởi")); // Click to heat - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Đang sưởi nóng")); // Heating - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Đang dỡ ra...")); // Ejecting - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Đang nạp...")); // Loading - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Đang xả...")); // Purging - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Nhấn nút để kết thúc")); // Click to finish - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Đang tiếp tục...")); // Resuming + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Chèn và nhấn")); // Insert and Click + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Nhấn để sưởi")); // Click to heat + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Đang sưởi nóng")); // Heating + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Đang dỡ ra...")); // Ejecting + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Đang nạp...")); // Loading + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Đang xả...")); // Purging + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Nhấn nút để kết thúc")); // Click to finish + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Đang tiếp tục...")); // Resuming #endif // LCD_HEIGHT < 4 - LSTR MSG_TMC_DRIVERS = _UxGT("Trình điều khiển TMC"); // TMC drivers - LSTR MSG_TMC_CURRENT = _UxGT("Dòng điện trình điều khiển"); // Driver current - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Ngưỡng Hỗn Hợp"); // Hybrid threshold - LSTR MSG_TMC_HOMING_THRS = _UxGT("Vô cảm biến"); // Sensorless homing - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Chế độ từng bước"); // Stepping mode - LSTR MSG_TMC_STEALTH_ENABLED = _UxGT("CắtTàngHình được kích hoạt"); // StealthChop enabled + LSTR MSG_TMC_DRIVERS = _UxGT("Trình điều khiển TMC"); // TMC drivers + LSTR MSG_TMC_CURRENT = _UxGT("Dòng điện trình điều khiển"); // Driver current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Ngưỡng Hỗn Hợp"); // Hybrid threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Vô cảm biến"); // Sensorless homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Chế độ từng bước"); // Stepping mode + LSTR MSG_TMC_STEALTH_ENABLED = _UxGT("CắtTàngHình được kích hoạt"); // StealthChop enabled - LSTR MSG_SHORT_DAY = _UxGT("n"); // d - ngày - One character only - LSTR MSG_SHORT_HOUR = _UxGT("g"); // h - giờ - One character only - LSTR MSG_SHORT_MINUTE = _UxGT("p"); // m - phút - One character only + LSTR MSG_SHORT_DAY = _UxGT("n"); // d - ngày - One character only + LSTR MSG_SHORT_HOUR = _UxGT("g"); // h - giờ - One character only + LSTR MSG_SHORT_MINUTE = _UxGT("p"); // m - phút - One character only + LSTR MSG_SHORT_MINUTE = _UxGT("p"); // M - phút - One character only } diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h index 7acd0d8e8f..03c8d80bca 100644 --- a/Marlin/src/lcd/language/language_zh_CN.h +++ b/Marlin/src/lcd/language/language_zh_CN.h @@ -28,88 +28,88 @@ * See also https://marlinfw.org/docs/development/lcd_language.html */ namespace Language_zh_CN { - using namespace Language_en; // Inherit undefined strings from English + using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 3; LSTR LANGUAGE = _UxGT("Simplified Chinese"); - LSTR WELCOME_MSG = MACHINE_NAME _UxGT("已就绪."); // " ready." + LSTR WELCOME_MSG = MACHINE_NAME _UxGT("已就绪."); // " ready." LSTR MSG_MARLIN = _UxGT("马林"); LSTR MSG_YES = _UxGT("是"); LSTR MSG_NO = _UxGT("否"); - LSTR MSG_BACK = _UxGT("返回"); // ”Back“ + LSTR MSG_BACK = _UxGT("返回"); // ”Back“ LSTR MSG_MEDIA_ABORTING = _UxGT("放弃中..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("存储卡已插入"); // "Card inserted" - LSTR MSG_MEDIA_REMOVED = _UxGT("存储卡被拔出"); // "Card removed" + LSTR MSG_MEDIA_INSERTED = _UxGT("存储卡已插入"); // "Card inserted" + LSTR MSG_MEDIA_REMOVED = _UxGT("存储卡被拔出"); // "Card removed" LSTR MSG_MEDIA_WAITING = _UxGT("等待存储器"); LSTR MSG_MEDIA_READ_ERROR = _UxGT("存储器读取错误"); LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB设备已弹出"); LSTR MSG_MEDIA_USB_FAILED = _UxGT("USB启动错误"); LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("子响应溢出"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("挡块"); // "Endstops" // Max length 8 characters + LSTR MSG_LCD_ENDSTOPS = _UxGT("挡块"); // "Endstops" // Max length 8 characters LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("软挡块"); - LSTR MSG_MAIN_MENU = _UxGT("主菜单"); // "Main" + LSTR MSG_MAIN_MENU = _UxGT("主菜单"); // "Main" LSTR MSG_ADVANCED_SETTINGS = _UxGT("高级设置"); LSTR MSG_CONFIGURATION = _UxGT("配置"); - LSTR MSG_RUN_AUTO_FILES = _UxGT("自动开始"); // "Autostart" - LSTR MSG_DISABLE_STEPPERS = _UxGT("关闭步进电机"); // "Disable steppers" - LSTR MSG_DEBUG_MENU = _UxGT("调试菜单"); // "Debug Menu" - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("进度条测试"); // "Progress Bar Test" + LSTR MSG_RUN_AUTO_FILES = _UxGT("自动开始"); // "Autostart" + LSTR MSG_DISABLE_STEPPERS = _UxGT("关闭步进电机"); // "Disable steppers" + LSTR MSG_DEBUG_MENU = _UxGT("调试菜单"); // "Debug Menu" + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("进度条测试"); // "Progress Bar Test" LSTR MSG_HOMING = _UxGT("回原点"); - LSTR MSG_AUTO_HOME = _UxGT("自动回原点"); // "Auto home" - LSTR MSG_AUTO_HOME_X = _UxGT("回X原位"); // "Home X" - LSTR MSG_AUTO_HOME_Y = _UxGT("回Y原位"); // "Home Y" - LSTR MSG_AUTO_HOME_Z = _UxGT("回Z原位"); // "Home Z" + LSTR MSG_AUTO_HOME = _UxGT("自动回原点"); // "Auto home" + LSTR MSG_AUTO_HOME_X = _UxGT("回X原位"); // "Home X" + LSTR MSG_AUTO_HOME_Y = _UxGT("回Y原位"); // "Home Y" + LSTR MSG_AUTO_HOME_Z = _UxGT("回Z原位"); // "Home Z" LSTR MSG_AUTO_Z_ALIGN = _UxGT("自动Z对齐"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("平台调平XYZ归原位"); // "Homing XYZ" - LSTR MSG_LEVEL_BED_WAITING = _UxGT("单击开始热床调平"); // "Click to Begin" - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("下个热床调平点"); // "Next Point" - LSTR MSG_LEVEL_BED_DONE = _UxGT("完成热床调平"); // "Leveling Done!" - LSTR MSG_Z_FADE_HEIGHT = _UxGT("淡出高度"); // "Fade Height" - LSTR MSG_SET_HOME_OFFSETS = _UxGT("设置原点偏移"); // "Set home offsets" - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("偏移已启用"); // "Offsets applied" + LSTR MSG_LEVEL_BED_HOMING = _UxGT("平台调平XYZ归原位"); // "Homing XYZ" + LSTR MSG_LEVEL_BED_WAITING = _UxGT("单击开始热床调平"); // "Click to Begin" + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("下个热床调平点"); // "Next Point" + LSTR MSG_LEVEL_BED_DONE = _UxGT("完成热床调平"); // "Leveling Done!" + LSTR MSG_Z_FADE_HEIGHT = _UxGT("淡出高度"); // "Fade Height" + LSTR MSG_SET_HOME_OFFSETS = _UxGT("设置原点偏移"); // "Set home offsets" + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("偏移已启用"); // "Offsets applied" #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("预热 ") PREHEAT_1_LABEL; // "Preheat PREHEAT_2_LABEL" - LSTR MSG_PREHEAT_1_H = _UxGT("预热 ") PREHEAT_1_LABEL " ~"; // "Preheat PREHEAT_2_LABEL" - LSTR MSG_PREHEAT_1_END = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_1_END_E = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ~"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_1_ALL = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All" - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 热床"); //MSG_PREHEAT_1 " Bed" - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 设置"); //MSG_PREHEAT_1 " conf" + LSTR MSG_PREHEAT_1 = _UxGT("预热 ") PREHEAT_1_LABEL; // "Preheat PREHEAT_2_LABEL" + LSTR MSG_PREHEAT_1_H = _UxGT("预热 ") PREHEAT_1_LABEL " ~"; // "Preheat PREHEAT_2_LABEL" + LSTR MSG_PREHEAT_1_END = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_1_END_E = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ~"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_1_ALL = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All" + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 热床"); //MSG_PREHEAT_1 " Bed" + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 设置"); //MSG_PREHEAT_1 " conf" - LSTR MSG_PREHEAT_M = _UxGT("预热 $"); // "Preheat PREHEAT_2_LABEL" - LSTR MSG_PREHEAT_M_H = _UxGT("预热 $ ~"); // "Preheat PREHEAT_2_LABEL" - LSTR MSG_PREHEAT_M_END = _UxGT("预热 $ 喷嘴"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_M_END_E = _UxGT("预热 $ 喷嘴 ~"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_M_ALL = _UxGT("预热 $ 全部"); //MSG_PREHEAT_1 " All" - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("预热 $ 热床"); //MSG_PREHEAT_1 " Bed" - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("预热 $ 设置"); //MSG_PREHEAT_1 " conf" + LSTR MSG_PREHEAT_M = _UxGT("预热 $"); // "Preheat PREHEAT_2_LABEL" + LSTR MSG_PREHEAT_M_H = _UxGT("预热 $ ~"); // "Preheat PREHEAT_2_LABEL" + LSTR MSG_PREHEAT_M_END = _UxGT("预热 $ 喷嘴"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_M_END_E = _UxGT("预热 $ 喷嘴 ~"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_M_ALL = _UxGT("预热 $ 全部"); //MSG_PREHEAT_1 " All" + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("预热 $ 热床"); //MSG_PREHEAT_1 " Bed" + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("预热 $ 设置"); //MSG_PREHEAT_1 " conf" #endif LSTR MSG_PREHEAT_CUSTOM = _UxGT("预热自定义"); - LSTR MSG_COOLDOWN = _UxGT("降温"); // "Cooldown" + LSTR MSG_COOLDOWN = _UxGT("降温"); // "Cooldown" LSTR MSG_CUTTER_FREQUENCY = _UxGT("切割频率"); LSTR MSG_LASER_MENU = _UxGT("激光控制"); LSTR MSG_LASER_POWER = _UxGT("激光电源"); LSTR MSG_SPINDLE_MENU = _UxGT("主轴控制"); LSTR MSG_SPINDLE_POWER = _UxGT("主轴电源"); LSTR MSG_SPINDLE_REVERSE = _UxGT("主轴反转"); - LSTR MSG_SWITCH_PS_ON = _UxGT("开启电源"); // "Switch power on" - LSTR MSG_SWITCH_PS_OFF = _UxGT("关闭电源"); // "Switch power off" - LSTR MSG_EXTRUDE = _UxGT("挤出"); // "Extrude" - LSTR MSG_RETRACT = _UxGT("回抽"); // "Retract" - LSTR MSG_MOVE_AXIS = _UxGT("移动轴"); // "Move axis" - LSTR MSG_BED_LEVELING = _UxGT("调平热床"); // "Bed leveling" - LSTR MSG_LEVEL_BED = _UxGT("调平热床"); // "Level bed" - LSTR MSG_BED_TRAMMING = _UxGT("调平边角"); // "Bed Tramming" - LSTR MSG_NEXT_CORNER = _UxGT("下个边角"); // "Next corner" + LSTR MSG_SWITCH_PS_ON = _UxGT("开启电源"); // "Switch power on" + LSTR MSG_SWITCH_PS_OFF = _UxGT("关闭电源"); // "Switch power off" + LSTR MSG_EXTRUDE = _UxGT("挤出"); // "Extrude" + LSTR MSG_RETRACT = _UxGT("回抽"); // "Retract" + LSTR MSG_MOVE_AXIS = _UxGT("移动轴"); // "Move axis" + LSTR MSG_BED_LEVELING = _UxGT("调平热床"); // "Bed leveling" + LSTR MSG_LEVEL_BED = _UxGT("调平热床"); // "Level bed" + LSTR MSG_BED_TRAMMING = _UxGT("调平边角"); // "Bed Tramming" + LSTR MSG_NEXT_CORNER = _UxGT("下个边角"); // "Next corner" LSTR MSG_MESH_EDITOR = _UxGT("网格编辑器"); - LSTR MSG_EDIT_MESH = _UxGT("编辑网格"); // "Edit Mesh" - LSTR MSG_EDITING_STOPPED = _UxGT("网格编辑已停止"); // "Mesh Editing Stopped" + LSTR MSG_EDIT_MESH = _UxGT("编辑网格"); // "Edit Mesh" + LSTR MSG_EDITING_STOPPED = _UxGT("网格编辑已停止"); // "Mesh Editing Stopped" LSTR MSG_PROBING_POINT = _UxGT("探测点"); LSTR MSG_MESH_X = _UxGT("索引X"); LSTR MSG_MESH_Y = _UxGT("索引Y"); LSTR MSG_MESH_EDIT_Z = _UxGT("Z 值"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("定制命令"); // "Custom Commands" + LSTR MSG_CUSTOM_COMMANDS = _UxGT("定制命令"); // "Custom Commands" LSTR MSG_M48_TEST = _UxGT("M48探测"); LSTR MSG_M48_POINT = _UxGT("M48点"); LSTR MSG_M48_DEVIATION = _UxGT("M48偏差"); @@ -121,36 +121,36 @@ namespace Language_zh_CN { LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("完全控制"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("第二喷头是Z"); LSTR MSG_HOTEND_OFFSET_A = _UxGT("第二喷头是@"); - LSTR MSG_UBL_DOING_G29 = _UxGT("执行G29"); // "Doing G29" - LSTR MSG_UBL_TOOLS = _UxGT("UBL工具"); // "UBL Tools" - LSTR MSG_UBL_LEVEL_BED = _UxGT("统一热床调平(UBL)"); // "Unified Bed Leveling" + LSTR MSG_UBL_DOING_G29 = _UxGT("执行G29"); // "Doing G29" + LSTR MSG_UBL_TOOLS = _UxGT("UBL工具"); // "UBL Tools" + LSTR MSG_UBL_LEVEL_BED = _UxGT("统一热床调平(UBL)"); // "Unified Bed Leveling" LSTR MSG_LCD_TILTING_MESH = _UxGT("倾斜點"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("手工创设网格"); // "Manually Build Mesh" - LSTR MSG_UBL_BC_INSERT = _UxGT("放置垫片并测量"); // "Place shim & measure" - LSTR MSG_UBL_BC_INSERT2 = _UxGT("测量"); // "Measure" - LSTR MSG_UBL_BC_REMOVE = _UxGT("移除并测量热床"); // "Remove & measure bed" - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("移动到下一个"); // "Moving to next" - LSTR MSG_UBL_ACTIVATE_MESH = _UxGT("激活UBL"); // "Activate UBL" - LSTR MSG_UBL_DEACTIVATE_MESH = _UxGT("关闭UBL"); // "Deactivate UBL" - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("热床温度"); // "Bed Temp" + LSTR MSG_UBL_MANUAL_MESH = _UxGT("手工创设网格"); // "Manually Build Mesh" + LSTR MSG_UBL_BC_INSERT = _UxGT("放置垫片并测量"); // "Place shim & measure" + LSTR MSG_UBL_BC_INSERT2 = _UxGT("测量"); // "Measure" + LSTR MSG_UBL_BC_REMOVE = _UxGT("移除并测量热床"); // "Remove & measure bed" + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("移动到下一个"); // "Moving to next" + LSTR MSG_UBL_ACTIVATE_MESH = _UxGT("激活UBL"); // "Activate UBL" + LSTR MSG_UBL_DEACTIVATE_MESH = _UxGT("关闭UBL"); // "Deactivate UBL" + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("热床温度"); // "Bed Temp" LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("热床温度"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("热端温度"); // "Hotend Temp" + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("热端温度"); // "Hotend Temp" LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("热端温度"); - LSTR MSG_UBL_MESH_EDIT = _UxGT("网格编辑"); // "Mesh Edit" - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("编辑客户网格"); // "Edit Custom Mesh" - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("细调网格"); // "Fine Tuning Mesh" - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("完成编辑网格"); // "Done Editing Mesh" - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("创设客户网格"); // "Build Custom Mesh" - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("创设网格"); // "Build Mesh" + LSTR MSG_UBL_MESH_EDIT = _UxGT("网格编辑"); // "Mesh Edit" + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("编辑客户网格"); // "Edit Custom Mesh" + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("细调网格"); // "Fine Tuning Mesh" + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("完成编辑网格"); // "Done Editing Mesh" + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("创设客户网格"); // "Build Custom Mesh" + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("创设网格"); // "Build Mesh" #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("创设 $ 网格"); // "Build PREHEAT_1_LABEL Mesh" - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("批准 $ 网格"); // "Validate PREHEAT_1_LABEL Mesh" + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("创设 $ 网格"); // "Build PREHEAT_1_LABEL Mesh" + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("批准 $ 网格"); // "Validate PREHEAT_1_LABEL Mesh" #endif - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("创设冷网格"); // "Build Cold Mesh" - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("调整网格高度"); // "Adjust Mesh Height" - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("高度合计"); // "Height Amount" - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("批准网格"); // "Validate Mesh" - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("批准客户网格"); // "Validate Custom Mesh" + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("创设冷网格"); // "Build Cold Mesh" + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("调整网格高度"); // "Adjust Mesh Height" + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("高度合计"); // "Height Amount" + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("批准网格"); // "Validate Mesh" + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("批准客户网格"); // "Validate Custom Mesh" LSTR MSG_G26_HEATING_BED = _UxGT("G26加热热床"); LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26加热喷嘴"); LSTR MSG_G26_MANUAL_PRIME = _UxGT("手动填装中..."); @@ -158,38 +158,38 @@ namespace Language_zh_CN { LSTR MSG_G26_PRIME_DONE = _UxGT("填装完成"); LSTR MSG_G26_CANCELED = _UxGT("G26已取消"); LSTR MSG_G26_LEAVING = _UxGT("离开G26"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("继续热床网格"); // "Continue Bed Mesh" - LSTR MSG_UBL_MESH_LEVELING = _UxGT("网格调平"); // "Mesh Leveling" - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("三点调平"); // "3-Point Leveling" - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("格子网格调平"); // "Grid Mesh Leveling" - LSTR MSG_UBL_MESH_LEVEL = _UxGT("调平网格"); // "Level Mesh" - LSTR MSG_UBL_SIDE_POINTS = _UxGT("边点"); // "Side Points" - LSTR MSG_UBL_MAP_TYPE = _UxGT("图类型"); // "Map Type" - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("输出网格图"); // "Output Mesh Map" - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("输出到主机"); // "Output for Host" - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("输出到CSV"); // "Output for CSV" - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("输出到备份"); // "Off Printer Backup" - LSTR MSG_UBL_INFO_UBL = _UxGT("输出UBL信息"); // "Output UBL Info" - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("填充合计"); // "Fill-in Amount" - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("手工填充"); // "Manual Fill-in" - LSTR MSG_UBL_SMART_FILLIN = _UxGT("聪明填充"); // "Smart Fill-in" - LSTR MSG_UBL_FILLIN_MESH = _UxGT("填充网格"); // "Fill-in Mesh" - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("作废所有的"); // "Invalidate All" - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("作废最近的"); // "Invalidate Closest" - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("细调所有的"); // "Fine Tune All" - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("细调最近的"); // "Fine Tune Closest" - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("网格存储"); // "Mesh Storage" - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("存储槽"); // "Memory Slot" - LSTR MSG_UBL_LOAD_MESH = _UxGT("装载热床网格"); // "Load Bed Mesh" - LSTR MSG_UBL_SAVE_MESH = _UxGT("保存热床网格"); // "Save Bed Mesh" - LSTR MSG_MESH_LOADED = _UxGT("网格 %i 已装载"); // "Mesh %i loaded" - LSTR MSG_MESH_SAVED = _UxGT("网格 %i 已保存"); // "Mesh %i saved" - LSTR MSG_UBL_NO_STORAGE = _UxGT("没有存储"); // "No storage" - LSTR MSG_UBL_SAVE_ERROR = _UxGT("错误: UBL保存"); // "Err: UBL Save" - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("错误: UBL还原"); // "Err: UBL Restore" + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("继续热床网格"); // "Continue Bed Mesh" + LSTR MSG_UBL_MESH_LEVELING = _UxGT("网格调平"); // "Mesh Leveling" + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("三点调平"); // "3-Point Leveling" + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("格子网格调平"); // "Grid Mesh Leveling" + LSTR MSG_UBL_MESH_LEVEL = _UxGT("调平网格"); // "Level Mesh" + LSTR MSG_UBL_SIDE_POINTS = _UxGT("边点"); // "Side Points" + LSTR MSG_UBL_MAP_TYPE = _UxGT("图类型"); // "Map Type" + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("输出网格图"); // "Output Mesh Map" + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("输出到主机"); // "Output for Host" + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("输出到CSV"); // "Output for CSV" + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("输出到备份"); // "Off Printer Backup" + LSTR MSG_UBL_INFO_UBL = _UxGT("输出UBL信息"); // "Output UBL Info" + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("填充合计"); // "Fill-in Amount" + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("手工填充"); // "Manual Fill-in" + LSTR MSG_UBL_SMART_FILLIN = _UxGT("聪明填充"); // "Smart Fill-in" + LSTR MSG_UBL_FILLIN_MESH = _UxGT("填充网格"); // "Fill-in Mesh" + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("作废所有的"); // "Invalidate All" + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("作废最近的"); // "Invalidate Closest" + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("细调所有的"); // "Fine Tune All" + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("细调最近的"); // "Fine Tune Closest" + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("网格存储"); // "Mesh Storage" + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("存储槽"); // "Memory Slot" + LSTR MSG_UBL_LOAD_MESH = _UxGT("装载热床网格"); // "Load Bed Mesh" + LSTR MSG_UBL_SAVE_MESH = _UxGT("保存热床网格"); // "Save Bed Mesh" + LSTR MSG_MESH_LOADED = _UxGT("网格 %i 已装载"); // "Mesh %i loaded" + LSTR MSG_MESH_SAVED = _UxGT("网格 %i 已保存"); // "Mesh %i saved" + LSTR MSG_UBL_NO_STORAGE = _UxGT("没有存储"); // "No storage" + LSTR MSG_UBL_SAVE_ERROR = _UxGT("错误: UBL保存"); // "Err: UBL Save" + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("错误: UBL还原"); // "Err: UBL Restore" LSTR MSG_UBL_Z_OFFSET = _UxGT("Z偏移量: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z偏移已停止"); // "Z-Offset Stopped" - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("一步步UBL"); // "Step-By-Step UBL" + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z偏移已停止"); // "Z-Offset Stopped" + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("一步步UBL"); // "Step-By-Step UBL" LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. 创设冷网格"); LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. 聪明填充"); LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. 批准网格"); @@ -198,66 +198,66 @@ namespace Language_zh_CN { LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. 细调所有的"); LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. 保存热床网格"); - LSTR MSG_LED_CONTROL = _UxGT("LED控制"); // "LED Control" - LSTR MSG_LEDS = _UxGT("灯"); // "Lights" - LSTR MSG_LED_PRESETS = _UxGT("灯预置"); // "Light Presets" - LSTR MSG_SET_LEDS_RED = _UxGT("红"); // "Red" - LSTR MSG_SET_LEDS_ORANGE = _UxGT("橙"); // "Orange" - LSTR MSG_SET_LEDS_YELLOW = _UxGT("黄"); // "Yellow" - LSTR MSG_SET_LEDS_GREEN = _UxGT("绿"); // "Green" - LSTR MSG_SET_LEDS_BLUE = _UxGT("蓝"); // "Blue" - LSTR MSG_SET_LEDS_INDIGO = _UxGT("青"); // "Indigo" - LSTR MSG_SET_LEDS_VIOLET = _UxGT("紫"); // "Violet" - LSTR MSG_SET_LEDS_WHITE = _UxGT("白"); // "White" - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("缺省"); // "Default" - LSTR MSG_CUSTOM_LEDS = _UxGT("定制灯"); // "Custom Lights" - LSTR MSG_INTENSITY_R = _UxGT("红饱和度"); // "Red Intensity" - LSTR MSG_INTENSITY_G = _UxGT("绿饱和度"); // "Green Intensity" - LSTR MSG_INTENSITY_B = _UxGT("蓝饱和度"); // "Blue Intensity" - LSTR MSG_INTENSITY_W = _UxGT("白饱和度"); // "White Intensity" - LSTR MSG_LED_BRIGHTNESS = _UxGT("亮度"); // "Brightness" + LSTR MSG_LED_CONTROL = _UxGT("LED控制"); // "LED Control" + LSTR MSG_LEDS = _UxGT("灯"); // "Lights" + LSTR MSG_LED_PRESETS = _UxGT("灯预置"); // "Light Presets" + LSTR MSG_SET_LEDS_RED = _UxGT("红"); // "Red" + LSTR MSG_SET_LEDS_ORANGE = _UxGT("橙"); // "Orange" + LSTR MSG_SET_LEDS_YELLOW = _UxGT("黄"); // "Yellow" + LSTR MSG_SET_LEDS_GREEN = _UxGT("绿"); // "Green" + LSTR MSG_SET_LEDS_BLUE = _UxGT("蓝"); // "Blue" + LSTR MSG_SET_LEDS_INDIGO = _UxGT("青"); // "Indigo" + LSTR MSG_SET_LEDS_VIOLET = _UxGT("紫"); // "Violet" + LSTR MSG_SET_LEDS_WHITE = _UxGT("白"); // "White" + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("缺省"); // "Default" + LSTR MSG_CUSTOM_LEDS = _UxGT("定制灯"); // "Custom Lights" + LSTR MSG_INTENSITY_R = _UxGT("红饱和度"); // "Red Intensity" + LSTR MSG_INTENSITY_G = _UxGT("绿饱和度"); // "Green Intensity" + LSTR MSG_INTENSITY_B = _UxGT("蓝饱和度"); // "Blue Intensity" + LSTR MSG_INTENSITY_W = _UxGT("白饱和度"); // "White Intensity" + LSTR MSG_LED_BRIGHTNESS = _UxGT("亮度"); // "Brightness" - LSTR MSG_MOVING = _UxGT("移动..."); // "Moving..." - LSTR MSG_FREE_XY = _UxGT("释放 XY"); // "Free XY" - LSTR MSG_MOVE_X = _UxGT("移动X"); // "Move X" - LSTR MSG_MOVE_Y = _UxGT("移动Y"); // "Move Y" - LSTR MSG_MOVE_Z = _UxGT("移动Z"); // "Move Z" - LSTR MSG_MOVE_N = _UxGT("移动@"); // "Move @" - LSTR MSG_MOVE_E = _UxGT("挤出机"); // "Extruder" - LSTR MSG_MOVE_EN = _UxGT("挤出机 *"); // "Extruder" + LSTR MSG_MOVING = _UxGT("移动..."); // "Moving..." + LSTR MSG_FREE_XY = _UxGT("释放 XY"); // "Free XY" + LSTR MSG_MOVE_X = _UxGT("移动X"); // "Move X" + LSTR MSG_MOVE_Y = _UxGT("移动Y"); // "Move Y" + LSTR MSG_MOVE_Z = _UxGT("移动Z"); // "Move Z" + LSTR MSG_MOVE_N = _UxGT("移动@"); // "Move @" + LSTR MSG_MOVE_E = _UxGT("挤出机"); // "Extruder" + LSTR MSG_MOVE_EN = _UxGT("挤出机 *"); // "Extruder" LSTR MSG_HOTEND_TOO_COLD = _UxGT("热端太冷"); - LSTR MSG_MOVE_N_MM = _UxGT("移动 $ mm"); // "Move 0.025mm" - LSTR MSG_MOVE_01MM = _UxGT("移动 0.1 mm"); // "Move 0.1mm" - LSTR MSG_MOVE_1MM = _UxGT("移动 1 mm"); // "Move 1mm" - LSTR MSG_MOVE_10MM = _UxGT("移动 10 mm"); // "Move 10mm" - LSTR MSG_MOVE_100MM = _UxGT("移动 100 mm"); // "Move 100mm" - LSTR MSG_SPEED = _UxGT("速率"); // "Speed" - LSTR MSG_MESH_Z_OFFSET = _UxGT("热床Z"); // "Bed Z" - LSTR MSG_NOZZLE = _UxGT("喷嘴"); // "Nozzle" 噴嘴 - LSTR MSG_NOZZLE_N = _UxGT("喷嘴 ~"); // "Nozzle" 噴嘴 + LSTR MSG_MOVE_N_MM = _UxGT("移动 $ mm"); // "Move 0.025mm" + LSTR MSG_MOVE_01MM = _UxGT("移动 0.1 mm"); // "Move 0.1mm" + LSTR MSG_MOVE_1MM = _UxGT("移动 1 mm"); // "Move 1mm" + LSTR MSG_MOVE_10MM = _UxGT("移动 10 mm"); // "Move 10mm" + LSTR MSG_MOVE_100MM = _UxGT("移动 100 mm"); // "Move 100mm" + LSTR MSG_SPEED = _UxGT("速率"); // "Speed" + LSTR MSG_MESH_Z_OFFSET = _UxGT("热床Z"); // "Bed Z" + LSTR MSG_NOZZLE = _UxGT("喷嘴"); // "Nozzle" 噴嘴 + LSTR MSG_NOZZLE_N = _UxGT("喷嘴 ~"); // "Nozzle" 噴嘴 LSTR MSG_NOZZLE_PARKED = _UxGT("喷嘴已停靠"); LSTR MSG_NOZZLE_STANDBY = _UxGT("喷嘴待命中"); - LSTR MSG_BED = _UxGT("热床"); // "Bed" + LSTR MSG_BED = _UxGT("热床"); // "Bed" LSTR MSG_CHAMBER = _UxGT("机箱壳"); - LSTR MSG_FAN_SPEED = _UxGT("风扇速率"); // "Fan speed" - LSTR MSG_FAN_SPEED_N = _UxGT("风扇速率 ~"); // "Fan speed" + LSTR MSG_FAN_SPEED = _UxGT("风扇速率"); // "Fan speed" + LSTR MSG_FAN_SPEED_N = _UxGT("风扇速率 ~"); // "Fan speed" LSTR MSG_STORED_FAN_N = _UxGT("存储的风扇 ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("额外风扇速率"); // "Extra fan speed" - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("额外风扇速率 ~"); // "Extra fan speed" + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("额外风扇速率"); // "Extra fan speed" + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("额外风扇速率 ~"); // "Extra fan speed" LSTR MSG_CONTROLLER_FAN = _UxGT("控制器风扇"); LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("空闲速度"); LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("自动模式"); LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("工作速度"); LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("空闲周期"); - LSTR MSG_FLOW = _UxGT("挤出速率"); // "Flow" - LSTR MSG_FLOW_N = _UxGT("挤出速率 ~"); // "Flow" - LSTR MSG_CONTROL = _UxGT("控制"); // "Control" - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" 最小"); // " " LCD_STR_THERMOMETER " Min" - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" 最大"); // " " LCD_STR_THERMOMETER " Max" - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" 因数"); // " " LCD_STR_THERMOMETER " Fact" - LSTR MSG_AUTOTEMP = _UxGT("自动控温"); // "Autotemp" - LSTR MSG_LCD_ON = _UxGT("开"); // "On" - LSTR MSG_LCD_OFF = _UxGT("关"); // "Off" + LSTR MSG_FLOW = _UxGT("挤出速率"); // "Flow" + LSTR MSG_FLOW_N = _UxGT("挤出速率 ~"); // "Flow" + LSTR MSG_CONTROL = _UxGT("控制"); // "Control" + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" 最小"); // " " LCD_STR_THERMOMETER " Min" + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" 最大"); // " " LCD_STR_THERMOMETER " Max" + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" 因数"); // " " LCD_STR_THERMOMETER " Fact" + LSTR MSG_AUTOTEMP = _UxGT("自动控温"); // "Autotemp" + LSTR MSG_LCD_ON = _UxGT("开"); // "On" + LSTR MSG_LCD_OFF = _UxGT("关"); // "Off" LSTR MSG_PID_AUTOTUNE = _UxGT("自动PID"); LSTR MSG_PID_AUTOTUNE_E = _UxGT("自动PID *"); LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID调整完成"); @@ -265,58 +265,58 @@ namespace Language_zh_CN { LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("自动调失败! 温度太高"); LSTR MSG_PID_TIMEOUT = _UxGT("自动调失败! 超时"); LSTR MSG_SELECT_E = _UxGT("选择 *"); - LSTR MSG_ACC = _UxGT("加速度"); // "Accel" acceleration - LSTR MSG_JERK = _UxGT("抖动速率"); // "Jerk" - LSTR MSG_VA_JERK = _UxGT("轴抖动速率") STR_A; // "Va-jerk" - LSTR MSG_VB_JERK = _UxGT("轴抖动速率") STR_B; // "Vb-jerk" - LSTR MSG_VC_JERK = _UxGT("轴抖动速率") STR_C; // "Vc-jerk" - LSTR MSG_VN_JERK = _UxGT("轴抖动速率@"); // "V@-jerk" - LSTR MSG_VE_JERK = _UxGT("挤出机抖动速率"); // "Ve-jerk" + LSTR MSG_ACC = _UxGT("加速度"); // "Accel" acceleration + LSTR MSG_JERK = _UxGT("抖动速率"); // "Jerk" + LSTR MSG_VA_JERK = _UxGT("轴抖动速率") STR_A; // "Va-jerk" + LSTR MSG_VB_JERK = _UxGT("轴抖动速率") STR_B; // "Vb-jerk" + LSTR MSG_VC_JERK = _UxGT("轴抖动速率") STR_C; // "Vc-jerk" + LSTR MSG_VN_JERK = _UxGT("轴抖动速率@"); // "V@-jerk" + LSTR MSG_VE_JERK = _UxGT("挤出机抖动速率"); // "Ve-jerk" LSTR MSG_JUNCTION_DEVIATION = _UxGT("接点差"); - LSTR MSG_MAX_SPEED = _UxGT("速度"); // "Velocity" - LSTR MSG_VMAX_A = _UxGT("最大进料速率") STR_A; // "Vmax " max_feedrate_mm_s + LSTR MSG_MAX_SPEED = _UxGT("速度"); // "Velocity" + LSTR MSG_VMAX_A = _UxGT("最大进料速率") STR_A; // "Vmax " max_feedrate_mm_s LSTR MSG_VMAX_B = _UxGT("最大进料速率") STR_B; LSTR MSG_VMAX_C = _UxGT("最大进料速率") STR_C; LSTR MSG_VMAX_N = _UxGT("最大进料速率@"); LSTR MSG_VMAX_E = _UxGT("最大进料速率E"); LSTR MSG_VMAX_EN = _UxGT("最大进料速率 *"); - LSTR MSG_VMIN = _UxGT("最小进料速率"); // "Vmin" min_feedrate_mm_s - LSTR MSG_VTRAV_MIN = _UxGT("最小移动速率"); // "VTrav min" min_travel_feedrate_mm_s, (target) speed of the move - LSTR MSG_ACCELERATION = _UxGT("加速度"); // "Acceleration" - LSTR MSG_AMAX_A = _UxGT("最大打印加速度") STR_A; // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves + LSTR MSG_VMIN = _UxGT("最小进料速率"); // "Vmin" min_feedrate_mm_s + LSTR MSG_VTRAV_MIN = _UxGT("最小移动速率"); // "VTrav min" min_travel_feedrate_mm_s, (target) speed of the move + LSTR MSG_ACCELERATION = _UxGT("加速度"); // "Acceleration" + LSTR MSG_AMAX_A = _UxGT("最大打印加速度") STR_A; // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves LSTR MSG_AMAX_B = _UxGT("最大打印加速度") STR_B; LSTR MSG_AMAX_C = _UxGT("最大打印加速度") STR_C; LSTR MSG_AMAX_N = _UxGT("最大打印加速度@"); LSTR MSG_AMAX_E = _UxGT("最大打印加速度E"); LSTR MSG_AMAX_EN = _UxGT("最大打印加速度 *"); - LSTR MSG_A_RETRACT = _UxGT("收进加速度"); // "A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts - LSTR MSG_A_TRAVEL = _UxGT("非打印移动加速度"); // "A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves + LSTR MSG_A_RETRACT = _UxGT("收进加速度"); // "A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts + LSTR MSG_A_TRAVEL = _UxGT("非打印移动加速度"); // "A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("频率最大"); LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("进给速度"); - LSTR MSG_STEPS_PER_MM = _UxGT("轴步数/mm"); // "Steps/mm" axis_steps_per_mm, axis steps-per-unit G92 - LSTR MSG_A_STEPS = STR_A _UxGT(" 步数/mm"); // "Asteps/mm" + LSTR MSG_STEPS_PER_MM = _UxGT("轴步数/mm"); // "Steps/mm" axis_steps_per_mm, axis steps-per-unit G92 + LSTR MSG_A_STEPS = STR_A _UxGT(" 步数/mm"); // "Asteps/mm" LSTR MSG_B_STEPS = STR_B _UxGT(" 步数/mm"); LSTR MSG_C_STEPS = STR_C _UxGT(" 步数/mm"); LSTR MSG_N_STEPS = _UxGT("@ 步数/mm"); - LSTR MSG_E_STEPS = _UxGT("E 步数/mm"); // "Esteps/mm" + LSTR MSG_E_STEPS = _UxGT("E 步数/mm"); // "Esteps/mm" LSTR MSG_EN_STEPS = _UxGT("* 步数/mm"); - LSTR MSG_TEMPERATURE = _UxGT("温度"); // "Temperature" - LSTR MSG_MOTION = _UxGT("运动"); // "Motion" - LSTR MSG_FILAMENT = _UxGT("料丝"); // "Filament" menu_advanced_filament - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E 在 mm") SUPERSCRIPT_THREE; // "E in mm3" volumetric_enabled + LSTR MSG_TEMPERATURE = _UxGT("温度"); // "Temperature" + LSTR MSG_MOTION = _UxGT("运动"); // "Motion" + LSTR MSG_FILAMENT = _UxGT("料丝"); // "Filament" menu_advanced_filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E 在 mm") SUPERSCRIPT_THREE; // "E in mm3" volumetric_enabled LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E 限制 在 mm") SUPERSCRIPT_THREE; LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E 限制 *"); - LSTR MSG_FILAMENT_DIAM = _UxGT("丝料直径"); // "Fil. Dia." + LSTR MSG_FILAMENT_DIAM = _UxGT("丝料直径"); // "Fil. Dia." LSTR MSG_FILAMENT_DIAM_E = _UxGT("丝料直径 *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("卸载 mm"); // "Unload mm" - LSTR MSG_FILAMENT_LOAD = _UxGT("装载 mm"); // "Load mm" + LSTR MSG_FILAMENT_UNLOAD = _UxGT("卸载 mm"); // "Unload mm" + LSTR MSG_FILAMENT_LOAD = _UxGT("装载 mm"); // "Load mm" LSTR MSG_ADVANCE_K = _UxGT("Advance K"); LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *"); - LSTR MSG_CONTRAST = _UxGT("LCD对比度"); // "LCD contrast" - LSTR MSG_STORE_EEPROM = _UxGT("保存设置"); // "Store memory" - LSTR MSG_LOAD_EEPROM = _UxGT("装载设置"); // "Load memory" - LSTR MSG_RESTORE_DEFAULTS = _UxGT("恢复安全值"); // "Restore Defaults" - LSTR MSG_INIT_EEPROM = _UxGT("初始化设置"); // "Initialize EEPROM" + LSTR MSG_CONTRAST = _UxGT("LCD对比度"); // "LCD contrast" + LSTR MSG_STORE_EEPROM = _UxGT("保存设置"); // "Store memory" + LSTR MSG_LOAD_EEPROM = _UxGT("装载设置"); // "Load memory" + LSTR MSG_RESTORE_DEFAULTS = _UxGT("恢复安全值"); // "Restore Defaults" + LSTR MSG_INIT_EEPROM = _UxGT("初始化设置"); // "Initialize EEPROM" LSTR MSG_ERR_EEPROM_CRC = _UxGT("EEPROM 校验和 错误"); LSTR MSG_ERR_EEPROM_SIZE = _UxGT("EEPROM 尺寸 错误"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("EEPROM 版本 错误"); @@ -324,9 +324,9 @@ namespace Language_zh_CN { LSTR MSG_MEDIA_UPDATE = _UxGT("存储器更新"); LSTR MSG_RESET_PRINTER = _UxGT("复位打印机"); LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("刷新"); - LSTR MSG_INFO_SCREEN = _UxGT("信息屏"); // "Info screen" - LSTR MSG_PREPARE = _UxGT("准备"); // "Prepare" - LSTR MSG_TUNE = _UxGT("调整"); // "Tune" + LSTR MSG_INFO_SCREEN = _UxGT("信息屏"); // "Info screen" + LSTR MSG_PREPARE = _UxGT("准备"); // "Prepare" + LSTR MSG_TUNE = _UxGT("调整"); // "Tune" LSTR MSG_POWER_MONITOR = _UxGT("电源监控"); LSTR MSG_CURRENT = _UxGT("电流"); LSTR MSG_VOLTAGE = _UxGT("电压"); @@ -343,33 +343,33 @@ namespace Language_zh_CN { LSTR MSG_BUTTON_BACK = _UxGT("返回"); LSTR MSG_BUTTON_PROCEED = _UxGT("继续"); LSTR MSG_PAUSING = _UxGT("暂停中..."); - LSTR MSG_PAUSE_PRINT = _UxGT("暂停打印"); // "Pause print" - LSTR MSG_RESUME_PRINT = _UxGT("恢复打印"); // "Resume print" - LSTR MSG_STOP_PRINT = _UxGT("停止打印"); // "Stop print" + LSTR MSG_PAUSE_PRINT = _UxGT("暂停打印"); // "Pause print" + LSTR MSG_RESUME_PRINT = _UxGT("恢复打印"); // "Resume print" + LSTR MSG_STOP_PRINT = _UxGT("停止打印"); // "Stop print" LSTR MSG_PRINTING_OBJECT = _UxGT("打印物体"); LSTR MSG_CANCEL_OBJECT = _UxGT("取消物体"); LSTR MSG_CANCEL_OBJECT_N = _UxGT("取消物体 {"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("中断恢复"); - LSTR MSG_MEDIA_MENU = _UxGT("从存储卡上打印"); // "Print from SD" - LSTR MSG_NO_MEDIA = _UxGT("无存储卡"); // "No SD card" - LSTR MSG_DWELL = _UxGT("休眠中 ..."); // "Sleep..." - LSTR MSG_USERWAIT = _UxGT("点击继续 ..."); // "Click to resume..." - LSTR MSG_PRINT_PAUSED = _UxGT("暫停打印"); // "Print paused" + LSTR MSG_MEDIA_MENU = _UxGT("从存储卡上打印"); // "Print from SD" + LSTR MSG_NO_MEDIA = _UxGT("无存储卡"); // "No SD card" + LSTR MSG_DWELL = _UxGT("休眠中 ..."); // "Sleep..." + LSTR MSG_USERWAIT = _UxGT("点击继续 ..."); // "Click to resume..." + LSTR MSG_PRINT_PAUSED = _UxGT("暫停打印"); // "Print paused" LSTR MSG_PRINTING = _UxGT("打印中..."); - LSTR MSG_PRINT_ABORTED = _UxGT("已取消打印"); // "Print aborted" + LSTR MSG_PRINT_ABORTED = _UxGT("已取消打印"); // "Print aborted" LSTR MSG_PRINT_DONE = _UxGT("打印已完成"); - LSTR MSG_NO_MOVE = _UxGT("无移动"); // "No move." - LSTR MSG_KILLED = _UxGT("已杀掉"); // "KILLED. " - LSTR MSG_STOPPED = _UxGT("已停止"); // "STOPPED. " - LSTR MSG_CONTROL_RETRACT = _UxGT("回抽长度mm"); // "Retract mm" retract_length, retract length (positive mm) - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("换手回抽长度mm"); // "Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change - LSTR MSG_CONTROL_RETRACTF = _UxGT("回抽速率mm/s"); // "Retract V" retract_feedrate_mm_s, feedrate for retracting (mm/s) - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); // "Hop mm" retract_zraise, retract Z-lift - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("回抽恢复长度mm"); // "UnRet +mm" retract_recover_extra, additional recover length (mm, added to retract length when recovering) - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("换手回抽恢复长度mm"); // "S UnRet+mm" swap_retract_recover_extra, additional swap recover length (mm, added to retract length when recovering from extruder change) - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("回抽恢复后进料速率mm/s"); // "Unretract V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s) - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // "S UnRet V" - LSTR MSG_AUTORETRACT = _UxGT("自动抽回"); // "Auto-Retract" autoretract_enabled, + LSTR MSG_NO_MOVE = _UxGT("无移动"); // "No move." + LSTR MSG_KILLED = _UxGT("已杀掉"); // "KILLED. " + LSTR MSG_STOPPED = _UxGT("已停止"); // "STOPPED. " + LSTR MSG_CONTROL_RETRACT = _UxGT("回抽长度mm"); // "Retract mm" retract_length, retract length (positive mm) + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("换手回抽长度mm"); // "Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change + LSTR MSG_CONTROL_RETRACTF = _UxGT("回抽速率mm/s"); // "Retract V" retract_feedrate_mm_s, feedrate for retracting (mm/s) + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); // "Hop mm" retract_zraise, retract Z-lift + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("回抽恢复长度mm"); // "UnRet +mm" retract_recover_extra, additional recover length (mm, added to retract length when recovering) + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("换手回抽恢复长度mm"); // "S UnRet+mm" swap_retract_recover_extra, additional swap recover length (mm, added to retract length when recovering from extruder change) + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("回抽恢复后进料速率mm/s"); // "Unretract V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s) + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // "S UnRet V" + LSTR MSG_AUTORETRACT = _UxGT("自动抽回"); // "Auto-Retract" autoretract_enabled, LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("交换长度"); LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("额外的交换"); LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("清洗长度"); @@ -387,19 +387,19 @@ namespace Language_zh_CN { LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("自动迁移"); LSTR MSG_TOOL_MIGRATION_END = _UxGT("上一个挤出机"); LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("迁移至 *"); - LSTR MSG_FILAMENTCHANGE = _UxGT("更换丝料"); // "Change filament" - LSTR MSG_FILAMENTCHANGE_E = _UxGT("更换丝料 *"); // "Change filament" - LSTR MSG_FILAMENTLOAD = _UxGT("装载丝料"); // "Load filament" - LSTR MSG_FILAMENTLOAD_E = _UxGT("装载丝料 *"); // "Load filament" - LSTR MSG_FILAMENTUNLOAD = _UxGT("卸载丝料"); // "Unload filament" - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("卸载丝料 *"); // "Unload filament" - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("卸载全部"); // "Unload All" - LSTR MSG_ATTACH_MEDIA = _UxGT("初始化存储卡"); // "Init. SD card" - LSTR MSG_CHANGE_MEDIA = _UxGT("更换存储卡"); // "Change SD card" + LSTR MSG_FILAMENTCHANGE = _UxGT("更换丝料"); // "Change filament" + LSTR MSG_FILAMENTCHANGE_E = _UxGT("更换丝料 *"); // "Change filament" + LSTR MSG_FILAMENTLOAD = _UxGT("装载丝料"); // "Load filament" + LSTR MSG_FILAMENTLOAD_E = _UxGT("装载丝料 *"); // "Load filament" + LSTR MSG_FILAMENTUNLOAD = _UxGT("卸载丝料"); // "Unload filament" + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("卸载丝料 *"); // "Unload filament" + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("卸载全部"); // "Unload All" + LSTR MSG_ATTACH_MEDIA = _UxGT("初始化存储卡"); // "Init. SD card" + LSTR MSG_CHANGE_MEDIA = _UxGT("更换存储卡"); // "Change SD card" LSTR MSG_RELEASE_MEDIA = _UxGT("释放存储卡"); - LSTR MSG_ZPROBE_OUT = _UxGT("Z探针在热床之外"); // "Z probe out. bed" Z probe is not within the physical limits - LSTR MSG_SKEW_FACTOR = _UxGT("偏斜因数"); // "Skew Factor" - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // "BLTouch" + LSTR MSG_ZPROBE_OUT = _UxGT("Z探针在热床之外"); // "Z probe out. bed" Z probe is not within the physical limits + LSTR MSG_SKEW_FACTOR = _UxGT("偏斜因数"); // "Skew Factor" + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // "BLTouch" LSTR MSG_BLTOUCH_SELFTEST = _UxGT("自检"); LSTR MSG_BLTOUCH_RESET = _UxGT("重置"); LSTR MSG_BLTOUCH_STOW = _UxGT("装载"); @@ -419,96 +419,96 @@ namespace Language_zh_CN { LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("部署TouchMI"); LSTR MSG_MANUAL_DEPLOY = _UxGT("部署Z探针"); LSTR MSG_MANUAL_STOW = _UxGT("收好Z探针"); - LSTR MSG_HOME_FIRST = _UxGT("归位 %s 先"); // "Home ... first" + LSTR MSG_HOME_FIRST = _UxGT("归位 %s 先"); // "Home ... first" LSTR MSG_ZPROBE_OFFSETS = _UxGT("探针偏移量"); LSTR MSG_ZPROBE_XOFFSET = _UxGT("探针X偏移"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("探针Y偏移"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("探针Z偏移"); // "Z Offset" - LSTR MSG_BABYSTEP_X = _UxGT("微量调整X轴"); // "Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts - LSTR MSG_BABYSTEP_Y = _UxGT("微量调整Y轴"); // "Babystep Y" - LSTR MSG_BABYSTEP_Z = _UxGT("微量调整Z轴"); // "Babystep Z" + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("探针Z偏移"); // "Z Offset" + LSTR MSG_BABYSTEP_X = _UxGT("微量调整X轴"); // "Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts + LSTR MSG_BABYSTEP_Y = _UxGT("微量调整Y轴"); // "Babystep Y" + LSTR MSG_BABYSTEP_Z = _UxGT("微量调整Z轴"); // "Babystep Z" LSTR MSG_BABYSTEP_TOTAL = _UxGT("总计"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("挡块终止"); // "Endstop abort" - LSTR MSG_HEATING_FAILED_LCD = _UxGT("加热失败"); // "Heating failed" - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("错误:冗余温度"); // "Err: REDUNDANT TEMP" - LSTR MSG_THERMAL_RUNAWAY = _UxGT("温控失控"); // "THERMAL RUNAWAY" + LSTR MSG_ENDSTOP_ABORT = _UxGT("挡块终止"); // "Endstop abort" + LSTR MSG_HEATING_FAILED_LCD = _UxGT("加热失败"); // "Heating failed" + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("错误:冗余温度"); // "Err: REDUNDANT TEMP" + LSTR MSG_THERMAL_RUNAWAY = _UxGT("温控失控"); // "THERMAL RUNAWAY" LSTR MSG_THERMAL_RUNAWAY_BED = _UxGT("热床热量失控"); LSTR MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("机箱热量失控"); - LSTR MSG_ERR_MAXTEMP = _UxGT("错误:最高温度"); // "Err: MAXTEMP" - LSTR MSG_ERR_MINTEMP = _UxGT("错误:最低温度"); // "Err: MINTEMP" - LSTR MSG_HALTED = _UxGT("打印停机"); // "PRINTER HALTED" - LSTR MSG_PLEASE_RESET = _UxGT("请重置"); // "Please reset" - LSTR MSG_HEATING = _UxGT("加热中 ..."); // "Heating..." + LSTR MSG_ERR_MAXTEMP = _UxGT("错误:最高温度"); // "Err: MAXTEMP" + LSTR MSG_ERR_MINTEMP = _UxGT("错误:最低温度"); // "Err: MINTEMP" + LSTR MSG_HALTED = _UxGT("打印停机"); // "PRINTER HALTED" + LSTR MSG_PLEASE_RESET = _UxGT("请重置"); // "Please reset" + LSTR MSG_HEATING = _UxGT("加热中 ..."); // "Heating..." LSTR MSG_COOLING = _UxGT("冷却中 ..."); - LSTR MSG_BED_HEATING = _UxGT("加热热床中 ..."); // "Bed Heating..." + LSTR MSG_BED_HEATING = _UxGT("加热热床中 ..."); // "Bed Heating..." LSTR MSG_BED_COOLING = _UxGT("热床冷却中 ..."); LSTR MSG_CHAMBER_HEATING = _UxGT("机箱加热中 ..."); LSTR MSG_CHAMBER_COOLING = _UxGT("机箱冷却中 ..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("⊿校准"); // "Delta Calibration" - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("⊿校准X"); // "Calibrate X" - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("⊿校准Y"); // "Calibrate Y" - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("⊿校准Z"); // "Calibrate Z" - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("⊿校准中心"); // "Calibrate Center" - LSTR MSG_DELTA_SETTINGS = _UxGT("⊿设置"); // "Delta Settings" - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("⊿自动校准"); // "Auto Calibration" - LSTR MSG_DELTA_DIAG_ROD = _UxGT("⊿斜柱"); // "Diag Rod" - LSTR MSG_DELTA_HEIGHT = _UxGT("⊿高度"); // "Height" - LSTR MSG_DELTA_RADIUS = _UxGT("⊿半径"); // "Radius" - LSTR MSG_INFO_MENU = _UxGT("关于打印机"); // "About Printer" - LSTR MSG_INFO_PRINTER_MENU = _UxGT("打印机信息"); // "Printer Info" - LSTR MSG_3POINT_LEVELING = _UxGT("三点调平"); // "3-Point Leveling" - LSTR MSG_LINEAR_LEVELING = _UxGT("线性调平"); // "Linear Leveling" - LSTR MSG_BILINEAR_LEVELING = _UxGT("双线性调平"); // "Bilinear Leveling" - LSTR MSG_UBL_LEVELING = _UxGT("统一热床调平(UBL)"); // "Unified Bed Leveling" - LSTR MSG_MESH_LEVELING = _UxGT("网格调平"); // "Mesh Leveling" - LSTR MSG_INFO_STATS_MENU = _UxGT("打印机统计"); // "Printer Stats" - LSTR MSG_INFO_BOARD_MENU = _UxGT("主板信息"); // "Board Info" - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("温度计"); // "Thermistors" - LSTR MSG_INFO_EXTRUDERS = _UxGT("挤出机"); // "Extruders" - LSTR MSG_INFO_BAUDRATE = _UxGT("波特率"); // "Baud" - LSTR MSG_INFO_PROTOCOL = _UxGT("协议"); // "Protocol" + LSTR MSG_DELTA_CALIBRATE = _UxGT("⊿校准"); // "Delta Calibration" + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("⊿校准X"); // "Calibrate X" + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("⊿校准Y"); // "Calibrate Y" + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("⊿校准Z"); // "Calibrate Z" + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("⊿校准中心"); // "Calibrate Center" + LSTR MSG_DELTA_SETTINGS = _UxGT("⊿设置"); // "Delta Settings" + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("⊿自动校准"); // "Auto Calibration" + LSTR MSG_DELTA_DIAG_ROD = _UxGT("⊿斜柱"); // "Diag Rod" + LSTR MSG_DELTA_HEIGHT = _UxGT("⊿高度"); // "Height" + LSTR MSG_DELTA_RADIUS = _UxGT("⊿半径"); // "Radius" + LSTR MSG_INFO_MENU = _UxGT("关于打印机"); // "About Printer" + LSTR MSG_INFO_PRINTER_MENU = _UxGT("打印机信息"); // "Printer Info" + LSTR MSG_3POINT_LEVELING = _UxGT("三点调平"); // "3-Point Leveling" + LSTR MSG_LINEAR_LEVELING = _UxGT("线性调平"); // "Linear Leveling" + LSTR MSG_BILINEAR_LEVELING = _UxGT("双线性调平"); // "Bilinear Leveling" + LSTR MSG_UBL_LEVELING = _UxGT("统一热床调平(UBL)"); // "Unified Bed Leveling" + LSTR MSG_MESH_LEVELING = _UxGT("网格调平"); // "Mesh Leveling" + LSTR MSG_INFO_STATS_MENU = _UxGT("打印机统计"); // "Printer Stats" + LSTR MSG_INFO_BOARD_MENU = _UxGT("主板信息"); // "Board Info" + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("温度计"); // "Thermistors" + LSTR MSG_INFO_EXTRUDERS = _UxGT("挤出机"); // "Extruders" + LSTR MSG_INFO_BAUDRATE = _UxGT("波特率"); // "Baud" + LSTR MSG_INFO_PROTOCOL = _UxGT("协议"); // "Protocol" LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("监控温度失控:关"); LSTR MSG_INFO_RUNAWAY_ON = _UxGT("监控温度失控:开"); LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("热端空闲超时"); - LSTR MSG_CASE_LIGHT = _UxGT("外壳灯"); // "Case light" - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("灯亮度"); // "Light BRIGHTNESS" + LSTR MSG_CASE_LIGHT = _UxGT("外壳灯"); // "Case light" + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("灯亮度"); // "Light BRIGHTNESS" - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("打印机不正确"); // "The printer is incorrect" + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("打印机不正确"); // "The printer is incorrect" #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("打印计数"); // "Print Count" - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成了"); // "Completed" - LSTR MSG_INFO_PRINT_TIME = _UxGT("总打印时间"); // "Total print time" - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最长工作时间"); // "Longest job time" - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("总计挤出"); // "Extruded total" + LSTR MSG_INFO_PRINT_COUNT = _UxGT("打印计数"); // "Print Count" + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成了"); // "Completed" + LSTR MSG_INFO_PRINT_TIME = _UxGT("总打印时间"); // "Total print time" + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最长工作时间"); // "Longest job time" + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("总计挤出"); // "Extruded total" #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("打印数"); // "Prints" - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成"); // "Completed" - LSTR MSG_INFO_PRINT_TIME = _UxGT("总共"); // "Total" - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最长"); // "Longest" - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("已挤出"); // "Extruded" + LSTR MSG_INFO_PRINT_COUNT = _UxGT("打印数"); // "Prints" + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成"); // "Completed" + LSTR MSG_INFO_PRINT_TIME = _UxGT("总共"); // "Total" + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最长"); // "Longest" + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("已挤出"); // "Extruded" #endif - LSTR MSG_INFO_MIN_TEMP = _UxGT("最低温度"); // "Min Temp" - LSTR MSG_INFO_MAX_TEMP = _UxGT("最高温度"); // "Max Temp" - LSTR MSG_INFO_PSU = _UxGT("电源供应"); // "Power Supply" - LSTR MSG_DRIVE_STRENGTH = _UxGT("驱动力度"); // "Drive Strength" - LSTR MSG_DAC_PERCENT_N = _UxGT("@ 驱动 %"); // "E Driver %" + LSTR MSG_INFO_MIN_TEMP = _UxGT("最低温度"); // "Min Temp" + LSTR MSG_INFO_MAX_TEMP = _UxGT("最高温度"); // "Max Temp" + LSTR MSG_INFO_PSU = _UxGT("电源供应"); // "Power Supply" + LSTR MSG_DRIVE_STRENGTH = _UxGT("驱动力度"); // "Drive Strength" + LSTR MSG_DAC_PERCENT_N = _UxGT("@ 驱动 %"); // "E Driver %" LSTR MSG_ERROR_TMC = _UxGT("TMC 连接错误"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("保存驱动设置"); // "DAC EEPROM Write" + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("保存驱动设置"); // "DAC EEPROM Write" LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("更换料"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("打印已暂停"); // "PRINT PAUSED" - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("装载丝料"); // "LOAD FILAMENT" - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("卸载丝料"); // "UNLOAD FILAMENT" - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("恢复选项:"); // "RESUME OPTIONS:" - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("清除更多"); // "Purge more" - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("恢复打印"); // "Resume print" - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" 喷嘴: "); // " Nozzle: " + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("打印已暂停"); // "PRINT PAUSED" + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("装载丝料"); // "LOAD FILAMENT" + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("卸载丝料"); // "UNLOAD FILAMENT" + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("恢复选项:"); // "RESUME OPTIONS:" + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("清除更多"); // "Purge more" + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("恢复打印"); // "Resume print" + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" 喷嘴: "); // " Nozzle: " LSTR MSG_RUNOUT_SENSOR = _UxGT("断料传感器"); LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("断料距离mm"); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("归原位失败"); // "Homing failed" - LSTR MSG_LCD_PROBING_FAILED = _UxGT("探针探测失败"); // "Probing failed" + LSTR MSG_KILL_HOMING_FAILED = _UxGT("归原位失败"); // "Homing failed" + LSTR MSG_LCD_PROBING_FAILED = _UxGT("探针探测失败"); // "Probing failed" LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("选择料"); LSTR MSG_MMU2_MENU = _UxGT("MMU"); @@ -566,27 +566,27 @@ namespace Language_zh_CN { #if LCD_HEIGHT >= 4 LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("按下按钮", "恢复打印")); LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停靠中...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("等待开始", "丝料", "变更")); // "Wait for start of the filament change" + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("等待开始", "丝料", "变更")); // "Wait for start of the filament change" LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("插入料", "并按下", "以继续")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("按下按钮来", "加热喷嘴.")); // "Press button to heat nozzle." - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("加热喷嘴", "请等待 ...")); // "Heating nozzle Please wait..." - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("等待", "卸下丝料")); // "Wait for filament unload" - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("等待", "进料")); // "Wait for filament load" - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("等待", "丝料清除")); // "Wait for filament purge" + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("按下按钮来", "加热喷嘴.")); // "Press button to heat nozzle." + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("加热喷嘴", "请等待 ...")); // "Heating nozzle Please wait..." + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("等待", "卸下丝料")); // "Wait for filament unload" + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("等待", "进料")); // "Wait for filament load" + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("等待", "丝料清除")); // "Wait for filament purge" LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("按下已完成", "料的清洗")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("等待打印", "恢复")); // "Wait for print to resume" + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("等待打印", "恢复")); // "Wait for print to resume" #else LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("按下继续")); LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停靠中...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("请等待 ...")); // "Please wait..." - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("插入并单击")); // "Insert and Click" + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("请等待 ...")); // "Please wait..." + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("插入并单击")); // "Insert and Click" LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("按下加热")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("加热中 ...")); // "Heating..." - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("退出中 ...")); // "Ejecting..." - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("装载中 ...")); // "Loading..." - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("清除中 ...")); // "Purging..." + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("加热中 ...")); // "Heating..." + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("退出中 ...")); // "Ejecting..." + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("装载中 ...")); // "Loading..." + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("清除中 ...")); // "Purging..." LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("按下完成")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢复中 ...")); // "Resuming..." + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢复中 ...")); // "Resuming..." #endif LSTR MSG_TMC_DRIVERS = _UxGT("TMC驱动器"); LSTR MSG_TMC_CURRENT = _UxGT("驱动电流"); @@ -606,7 +606,7 @@ namespace Language_zh_CN { LSTR MSG_REHEAT = _UxGT("重新加热"); LSTR MSG_REHEATING = _UxGT("重新加热中..."); - LSTR MSG_SHORT_DAY = _UxGT("天"); // "d" // One character only - LSTR MSG_SHORT_HOUR = _UxGT("时"); // "h" // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("分"); // "m" // One character only + LSTR MSG_SHORT_DAY = _UxGT("天"); // "d" // One character only + LSTR MSG_SHORT_HOUR = _UxGT("时"); // "h" // One character only + LSTR MSG_SHORT_MINUTE = _UxGT("分"); // "m" // One character only } diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h index 9365225cae..968ad4424e 100644 --- a/Marlin/src/lcd/language/language_zh_TW.h +++ b/Marlin/src/lcd/language/language_zh_TW.h @@ -28,87 +28,87 @@ * See also https://marlinfw.org/docs/development/lcd_language.html */ namespace Language_zh_TW { - using namespace Language_en; // Inherit undefined strings from English + using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 3; LSTR LANGUAGE = _UxGT("Traditional Chinese"); - LSTR WELCOME_MSG = MACHINE_NAME _UxGT("已就緒."); // " ready." - LSTR MSG_YES = _UxGT("是"); // "YES" - LSTR MSG_NO = _UxGT("否"); // "NO" - LSTR MSG_BACK = _UxGT("返回"); // "Back" - LSTR MSG_MEDIA_ABORTING = _UxGT("正在中止..."); // "Aborting..." - LSTR MSG_MEDIA_INSERTED = _UxGT("記憶卡已插入"); // "Card inserted" - LSTR MSG_MEDIA_REMOVED = _UxGT("記憶卡被拔出"); // "Card removed" - LSTR MSG_MEDIA_WAITING = _UxGT("等待記憶卡"); // "Waiting for media" + LSTR WELCOME_MSG = MACHINE_NAME _UxGT("已就緒."); // " ready." + LSTR MSG_YES = _UxGT("是"); // "YES" + LSTR MSG_NO = _UxGT("否"); // "NO" + LSTR MSG_BACK = _UxGT("返回"); // "Back" + LSTR MSG_MEDIA_ABORTING = _UxGT("正在中止..."); // "Aborting..." + LSTR MSG_MEDIA_INSERTED = _UxGT("記憶卡已插入"); // "Card inserted" + LSTR MSG_MEDIA_REMOVED = _UxGT("記憶卡被拔出"); // "Card removed" + LSTR MSG_MEDIA_WAITING = _UxGT("等待記憶卡"); // "Waiting for media" LSTR MSG_MEDIA_READ_ERROR = _UxGT("記憶卡讀取錯誤"); //"Media read error" - LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB裝置已移除"); // "USB device removed" - LSTR MSG_MEDIA_USB_FAILED = _UxGT("USB啟動失敗"); // "USB start failed" - LSTR MSG_LCD_ENDSTOPS = _UxGT("擋塊"); // "Endstops" // Max length 8 characters - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("軟體擋塊"); // "Soft Endstops" - LSTR MSG_MAIN_MENU = _UxGT("主選單"); // "Main" - LSTR MSG_ADVANCED_SETTINGS = _UxGT("進階設置"); // "Advanced Settings" - LSTR MSG_CONFIGURATION = _UxGT("設置"); //Configuration - LSTR MSG_RUN_AUTO_FILES = _UxGT("自動開始"); // "Autostart" - LSTR MSG_DISABLE_STEPPERS = _UxGT("關閉步進馬達"); // "Disable steppers" - LSTR MSG_DEBUG_MENU = _UxGT("除錯選單"); // "Debug Menu" - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("進度條測試"); // "Progress Bar Test" - LSTR MSG_AUTO_HOME = _UxGT("自動回原點"); // "Auto home" - LSTR MSG_AUTO_HOME_X = _UxGT("回X原點"); // "Home X" - LSTR MSG_AUTO_HOME_Y = _UxGT("回Y原點"); // "Home Y" - LSTR MSG_AUTO_HOME_Z = _UxGT("回Z原點"); // "Home Z" - LSTR MSG_AUTO_Z_ALIGN = _UxGT("自動Z對齊"); // "Auto Z-Align" - LSTR MSG_LEVEL_BED_HOMING = _UxGT("平台調平XYZ歸原點"); // "Homing XYZ" - LSTR MSG_LEVEL_BED_WAITING = _UxGT("單擊開始熱床調平"); // "Click to Begin" - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("下個熱床調平點"); // "Next Point" - LSTR MSG_LEVEL_BED_DONE = _UxGT("完成熱床調平"); // "Leveling Done!" - LSTR MSG_Z_FADE_HEIGHT = _UxGT("淡出高度"); // "Fade Height" - LSTR MSG_SET_HOME_OFFSETS = _UxGT("設置原點偏移"); // "Set home offsets" - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("偏移已啟用"); // "Offsets applied" + LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB裝置已移除"); // "USB device removed" + LSTR MSG_MEDIA_USB_FAILED = _UxGT("USB啟動失敗"); // "USB start failed" + LSTR MSG_LCD_ENDSTOPS = _UxGT("擋塊"); // "Endstops" // Max length 8 characters + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("軟體擋塊"); // "Soft Endstops" + LSTR MSG_MAIN_MENU = _UxGT("主選單"); // "Main" + LSTR MSG_ADVANCED_SETTINGS = _UxGT("進階設置"); // "Advanced Settings" + LSTR MSG_CONFIGURATION = _UxGT("設置"); //Configuration + LSTR MSG_RUN_AUTO_FILES = _UxGT("自動開始"); // "Autostart" + LSTR MSG_DISABLE_STEPPERS = _UxGT("關閉步進馬達"); // "Disable steppers" + LSTR MSG_DEBUG_MENU = _UxGT("除錯選單"); // "Debug Menu" + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("進度條測試"); // "Progress Bar Test" + LSTR MSG_AUTO_HOME = _UxGT("自動回原點"); // "Auto home" + LSTR MSG_AUTO_HOME_X = _UxGT("回X原點"); // "Home X" + LSTR MSG_AUTO_HOME_Y = _UxGT("回Y原點"); // "Home Y" + LSTR MSG_AUTO_HOME_Z = _UxGT("回Z原點"); // "Home Z" + LSTR MSG_AUTO_Z_ALIGN = _UxGT("自動Z對齊"); // "Auto Z-Align" + LSTR MSG_LEVEL_BED_HOMING = _UxGT("平台調平XYZ歸原點"); // "Homing XYZ" + LSTR MSG_LEVEL_BED_WAITING = _UxGT("單擊開始熱床調平"); // "Click to Begin" + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("下個熱床調平點"); // "Next Point" + LSTR MSG_LEVEL_BED_DONE = _UxGT("完成熱床調平"); // "Leveling Done!" + LSTR MSG_Z_FADE_HEIGHT = _UxGT("淡出高度"); // "Fade Height" + LSTR MSG_SET_HOME_OFFSETS = _UxGT("設置原點偏移"); // "Set home offsets" + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("偏移已啟用"); // "Offsets applied" #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("預熱 ") PREHEAT_1_LABEL; // "Preheat PREHEAT_1_LABEL" - LSTR MSG_PREHEAT_1_H = _UxGT("預熱 ") PREHEAT_1_LABEL " ~"; // "Preheat PREHEAT_1_LABEL" - LSTR MSG_PREHEAT_1_END = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_1_END_E = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ~"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_1_ALL = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All" - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 熱床"); //MSG_PREHEAT_1 " Bed" - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 設置"); //MSG_PREHEAT_1 " conf" + LSTR MSG_PREHEAT_1 = _UxGT("預熱 ") PREHEAT_1_LABEL; // "Preheat PREHEAT_1_LABEL" + LSTR MSG_PREHEAT_1_H = _UxGT("預熱 ") PREHEAT_1_LABEL " ~"; // "Preheat PREHEAT_1_LABEL" + LSTR MSG_PREHEAT_1_END = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_1_END_E = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ~"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_1_ALL = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All" + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 熱床"); //MSG_PREHEAT_1 " Bed" + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 設置"); //MSG_PREHEAT_1 " conf" - LSTR MSG_PREHEAT_M = _UxGT("預熱 $"); // "Preheat PREHEAT_1_LABEL" - LSTR MSG_PREHEAT_M_H = _UxGT("預熱 $ ~"); // "Preheat PREHEAT_1_LABEL" - LSTR MSG_PREHEAT_M_END = _UxGT("預熱 $ 噴嘴"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_M_END_E = _UxGT("預熱 $ 噴嘴 ~"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_M_ALL = _UxGT("預熱 $ 全部"); //MSG_PREHEAT_1 " All" - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("預熱 $ 熱床"); //MSG_PREHEAT_1 " Bed" - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("預熱 $ 設置"); //MSG_PREHEAT_1 " conf" + LSTR MSG_PREHEAT_M = _UxGT("預熱 $"); // "Preheat PREHEAT_1_LABEL" + LSTR MSG_PREHEAT_M_H = _UxGT("預熱 $ ~"); // "Preheat PREHEAT_1_LABEL" + LSTR MSG_PREHEAT_M_END = _UxGT("預熱 $ 噴嘴"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_M_END_E = _UxGT("預熱 $ 噴嘴 ~"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_M_ALL = _UxGT("預熱 $ 全部"); //MSG_PREHEAT_1 " All" + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("預熱 $ 熱床"); //MSG_PREHEAT_1 " Bed" + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("預熱 $ 設置"); //MSG_PREHEAT_1 " conf" #endif - LSTR MSG_PREHEAT_CUSTOM = _UxGT("自定預熱"); // "Preheat Custom" - LSTR MSG_COOLDOWN = _UxGT("降溫"); // "Cooldown" - LSTR MSG_LASER_MENU = _UxGT("激光控制"); // "Laser Control" - LSTR MSG_LASER_POWER = _UxGT("激光電源"); // "Laser Power" - LSTR MSG_SPINDLE_MENU = _UxGT("主軸控告制"); // "Spindle Control" - LSTR MSG_SPINDLE_POWER = _UxGT("主軸電源"); // "Spindle Power" - LSTR MSG_SPINDLE_REVERSE = _UxGT("主軸反轉"); // "Spindle Reverse" - LSTR MSG_SWITCH_PS_ON = _UxGT("電源打開"); // "Switch power on" - LSTR MSG_SWITCH_PS_OFF = _UxGT("電源關閉"); // "Switch power off" - LSTR MSG_EXTRUDE = _UxGT("擠出"); // "Extrude" - LSTR MSG_RETRACT = _UxGT("回縮"); // "Retract" - LSTR MSG_MOVE_AXIS = _UxGT("移動軸"); // "Move axis" - LSTR MSG_BED_LEVELING = _UxGT("調平熱床"); // "Bed leveling" - LSTR MSG_LEVEL_BED = _UxGT("調平熱床"); // "Level bed" - LSTR MSG_BED_TRAMMING = _UxGT("調平邊角"); // "Bed Tramming" - LSTR MSG_NEXT_CORNER = _UxGT("下個邊角"); // "Next corner" - LSTR MSG_MESH_EDITOR = _UxGT("網格編輯器"); // "Mesh Editor" - LSTR MSG_EDIT_MESH = _UxGT("編輯網格"); // "Edit Mesh" - LSTR MSG_EDITING_STOPPED = _UxGT("網格編輯已停止"); // "Mesh Editing Stopped" - LSTR MSG_PROBING_POINT = _UxGT("探測點"); // "Probing Point" - LSTR MSG_MESH_X = _UxGT("索引 X"); // "Index X" - LSTR MSG_MESH_Y = _UxGT("索引 Y"); // "Index Y" - LSTR MSG_MESH_EDIT_Z = _UxGT("Z 值"); // "Z Value" - LSTR MSG_CUSTOM_COMMANDS = _UxGT("自定命令"); // "Custom Commands" - LSTR MSG_M48_TEST = _UxGT("M48 探測測試"); // "M48 Probe Test" - LSTR MSG_M48_POINT = _UxGT("M48 探測點"); // "M48 Point" - LSTR MSG_M48_DEVIATION = _UxGT("偏差"); // "Deviation" + LSTR MSG_PREHEAT_CUSTOM = _UxGT("自定預熱"); // "Preheat Custom" + LSTR MSG_COOLDOWN = _UxGT("降溫"); // "Cooldown" + LSTR MSG_LASER_MENU = _UxGT("激光控制"); // "Laser Control" + LSTR MSG_LASER_POWER = _UxGT("激光電源"); // "Laser Power" + LSTR MSG_SPINDLE_MENU = _UxGT("主軸控告制"); // "Spindle Control" + LSTR MSG_SPINDLE_POWER = _UxGT("主軸電源"); // "Spindle Power" + LSTR MSG_SPINDLE_REVERSE = _UxGT("主軸反轉"); // "Spindle Reverse" + LSTR MSG_SWITCH_PS_ON = _UxGT("電源打開"); // "Switch power on" + LSTR MSG_SWITCH_PS_OFF = _UxGT("電源關閉"); // "Switch power off" + LSTR MSG_EXTRUDE = _UxGT("擠出"); // "Extrude" + LSTR MSG_RETRACT = _UxGT("回縮"); // "Retract" + LSTR MSG_MOVE_AXIS = _UxGT("移動軸"); // "Move axis" + LSTR MSG_BED_LEVELING = _UxGT("調平熱床"); // "Bed leveling" + LSTR MSG_LEVEL_BED = _UxGT("調平熱床"); // "Level bed" + LSTR MSG_BED_TRAMMING = _UxGT("調平邊角"); // "Bed Tramming" + LSTR MSG_NEXT_CORNER = _UxGT("下個邊角"); // "Next corner" + LSTR MSG_MESH_EDITOR = _UxGT("網格編輯器"); // "Mesh Editor" + LSTR MSG_EDIT_MESH = _UxGT("編輯網格"); // "Edit Mesh" + LSTR MSG_EDITING_STOPPED = _UxGT("網格編輯已停止"); // "Mesh Editing Stopped" + LSTR MSG_PROBING_POINT = _UxGT("探測點"); // "Probing Point" + LSTR MSG_MESH_X = _UxGT("索引 X"); // "Index X" + LSTR MSG_MESH_Y = _UxGT("索引 Y"); // "Index Y" + LSTR MSG_MESH_EDIT_Z = _UxGT("Z 值"); // "Z Value" + LSTR MSG_CUSTOM_COMMANDS = _UxGT("自定命令"); // "Custom Commands" + LSTR MSG_M48_TEST = _UxGT("M48 探測測試"); // "M48 Probe Test" + LSTR MSG_M48_POINT = _UxGT("M48 探測點"); // "M48 Point" + LSTR MSG_M48_DEVIATION = _UxGT("偏差"); // "Deviation" LSTR MSG_IDEX_MENU = _UxGT("IDEX Mode"); LSTR MSG_OFFSETS_MENU = _UxGT("Tool Offsets"); LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); @@ -117,75 +117,75 @@ namespace Language_zh_TW { LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Full Control"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2nd Nozzle Z"); LSTR MSG_HOTEND_OFFSET_A = _UxGT("2nd Nozzle @"); - LSTR MSG_UBL_DOING_G29 = _UxGT("執行G29"); // "Doing G29" - LSTR MSG_UBL_TOOLS = _UxGT("UBL工具"); // "UBL Tools" - LSTR MSG_UBL_LEVEL_BED = _UxGT("統一熱床調平(UBL)"); // "Unified Bed Leveling" - LSTR MSG_LCD_TILTING_MESH = _UxGT("傾斜點"); // "Tilting Point" - LSTR MSG_UBL_MANUAL_MESH = _UxGT("手工建網"); // "Manually Build Mesh" - LSTR MSG_UBL_BC_INSERT = _UxGT("放置墊片並測量"); // "Place shim & measure" - LSTR MSG_UBL_BC_INSERT2 = _UxGT("測量"); // "Measure" - LSTR MSG_UBL_BC_REMOVE = _UxGT("移除並測量熱床"); // "Remove & measure bed" - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("移動到下一個"); // "Moving to next" - LSTR MSG_UBL_ACTIVATE_MESH = _UxGT("啟動UBL"); // "Activate UBL" - LSTR MSG_UBL_DEACTIVATE_MESH = _UxGT("關閉UBL"); // "Deactivate UBL" - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("置設熱床溫度"); // "Bed Temp" - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("置設熱床溫度"); // "Bed Temp" - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("置設噴嘴溫度"); // "Hotend Temp" - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("熱端溫度"); // "Hotend Temp" - LSTR MSG_UBL_MESH_EDIT = _UxGT("網格編輯"); // "Mesh Edit" - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("編輯客戶網格"); // "Edit Custom Mesh" - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("細調網格"); // "Fine Tuning Mesh" - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("完成編輯網格"); // "Done Editing Mesh" - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("創設客戶網格"); // "Build Custom Mesh" - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("創設網格"); // "Build Mesh" + LSTR MSG_UBL_DOING_G29 = _UxGT("執行G29"); // "Doing G29" + LSTR MSG_UBL_TOOLS = _UxGT("UBL工具"); // "UBL Tools" + LSTR MSG_UBL_LEVEL_BED = _UxGT("統一熱床調平(UBL)"); // "Unified Bed Leveling" + LSTR MSG_LCD_TILTING_MESH = _UxGT("傾斜點"); // "Tilting Point" + LSTR MSG_UBL_MANUAL_MESH = _UxGT("手工建網"); // "Manually Build Mesh" + LSTR MSG_UBL_BC_INSERT = _UxGT("放置墊片並測量"); // "Place shim & measure" + LSTR MSG_UBL_BC_INSERT2 = _UxGT("測量"); // "Measure" + LSTR MSG_UBL_BC_REMOVE = _UxGT("移除並測量熱床"); // "Remove & measure bed" + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("移動到下一個"); // "Moving to next" + LSTR MSG_UBL_ACTIVATE_MESH = _UxGT("啟動UBL"); // "Activate UBL" + LSTR MSG_UBL_DEACTIVATE_MESH = _UxGT("關閉UBL"); // "Deactivate UBL" + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("置設熱床溫度"); // "Bed Temp" + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("置設熱床溫度"); // "Bed Temp" + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("置設噴嘴溫度"); // "Hotend Temp" + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("熱端溫度"); // "Hotend Temp" + LSTR MSG_UBL_MESH_EDIT = _UxGT("網格編輯"); // "Mesh Edit" + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("編輯客戶網格"); // "Edit Custom Mesh" + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("細調網格"); // "Fine Tuning Mesh" + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("完成編輯網格"); // "Done Editing Mesh" + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("創設客戶網格"); // "Build Custom Mesh" + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("創設網格"); // "Build Mesh" #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("創設 $ 網格"); // "Build PREHEAT_1_LABEL Mesh" - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("批准 $ 網格"); // "Validate PREHEAT_1_LABEL Mesh" + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("創設 $ 網格"); // "Build PREHEAT_1_LABEL Mesh" + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("批准 $ 網格"); // "Validate PREHEAT_1_LABEL Mesh" #endif - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("創設冷網格"); // "Build Cold Mesh" - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("調整網格高度"); // "Adjust Mesh Height" - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("高度合計"); // "Height Amount" - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("批准網格"); // "Validate Mesh" - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("批准客戶網格"); // "Validate Custom Mesh" - LSTR MSG_G26_HEATING_BED = _UxGT("G26 加熱熱床"); // "G26 Heating Bed" + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("創設冷網格"); // "Build Cold Mesh" + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("調整網格高度"); // "Adjust Mesh Height" + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("高度合計"); // "Height Amount" + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("批准網格"); // "Validate Mesh" + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("批准客戶網格"); // "Validate Custom Mesh" + LSTR MSG_G26_HEATING_BED = _UxGT("G26 加熱熱床"); // "G26 Heating Bed" LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 加熱噴嘴"); //"G26 Heating Nozzle" - LSTR MSG_G26_MANUAL_PRIME = _UxGT("手動填裝"); // "Manual priming..." - LSTR MSG_G26_FIXED_LENGTH = _UxGT("固定距離填裝"); // "Fixed Length Prime" - LSTR MSG_G26_PRIME_DONE = _UxGT("完成填裝"); // "Done Priming" - LSTR MSG_G26_CANCELED = _UxGT("G26已取消"); // "G26 Canceled" - LSTR MSG_G26_LEAVING = _UxGT("離開 G26"); // "Leaving G26" - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("繼續熱床網格"); // "Continue Bed Mesh" - LSTR MSG_UBL_MESH_LEVELING = _UxGT("網格調平"); // "Mesh Leveling" - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("三點調平"); // "3-Point Leveling" - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("格子網格調平"); // "Grid Mesh Leveling" - LSTR MSG_UBL_MESH_LEVEL = _UxGT("調平網格"); // "Level Mesh" - LSTR MSG_UBL_SIDE_POINTS = _UxGT("邊點"); // "Side Points" - LSTR MSG_UBL_MAP_TYPE = _UxGT("圖類型"); // "Map Type" - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("輸出網格圖"); // "Output Mesh Map" - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("輸出到主機"); // "Output for Host" - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("輸出到CSV"); // "Output for CSV" - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("輸出到備份"); // "Off Printer Backup" - LSTR MSG_UBL_INFO_UBL = _UxGT("輸出UBL信息"); // "Output UBL Info" - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("填充合計"); // "Fill-in Amount" - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("手工填充"); // "Manual Fill-in" - LSTR MSG_UBL_SMART_FILLIN = _UxGT("聰明填充"); // "Smart Fill-in" - LSTR MSG_UBL_FILLIN_MESH = _UxGT("填充網格"); // "Fill-in Mesh" - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("作廢所有的"); // "Invalidate All" - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("作廢最近的"); // "Invalidate Closest" - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("細調所有的"); // "Fine Tune All" - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("細調最近的"); // "Fine Tune Closest" - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("網格存儲"); // "Mesh Storage" - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("存儲槽"); // "Memory Slot" - LSTR MSG_UBL_LOAD_MESH = _UxGT("裝載熱床網格"); // "Load Bed Mesh" - LSTR MSG_UBL_SAVE_MESH = _UxGT("保存熱床網格"); // "Save Bed Mesh" - LSTR MSG_MESH_LOADED = _UxGT("網格 %i 已裝載"); // "Mesh %i loaded" - LSTR MSG_MESH_SAVED = _UxGT("網格 %i 已保存"); // "Mesh %i saved" - LSTR MSG_UBL_NO_STORAGE = _UxGT("沒有存儲"); // "No storage" - LSTR MSG_UBL_SAVE_ERROR = _UxGT("錯誤: UBL保存"); // "Err: UBL Save" - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("錯誤: UBL還原"); // "Err: UBL Restore" - LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-偏移:"); // "Z-Offset: " - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z偏移已停止"); // "Z-Offset Stopped" - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("一步步UBL"); // "Step-By-Step UBL" + LSTR MSG_G26_MANUAL_PRIME = _UxGT("手動填裝"); // "Manual priming..." + LSTR MSG_G26_FIXED_LENGTH = _UxGT("固定距離填裝"); // "Fixed Length Prime" + LSTR MSG_G26_PRIME_DONE = _UxGT("完成填裝"); // "Done Priming" + LSTR MSG_G26_CANCELED = _UxGT("G26已取消"); // "G26 Canceled" + LSTR MSG_G26_LEAVING = _UxGT("離開 G26"); // "Leaving G26" + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("繼續熱床網格"); // "Continue Bed Mesh" + LSTR MSG_UBL_MESH_LEVELING = _UxGT("網格調平"); // "Mesh Leveling" + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("三點調平"); // "3-Point Leveling" + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("格子網格調平"); // "Grid Mesh Leveling" + LSTR MSG_UBL_MESH_LEVEL = _UxGT("調平網格"); // "Level Mesh" + LSTR MSG_UBL_SIDE_POINTS = _UxGT("邊點"); // "Side Points" + LSTR MSG_UBL_MAP_TYPE = _UxGT("圖類型"); // "Map Type" + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("輸出網格圖"); // "Output Mesh Map" + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("輸出到主機"); // "Output for Host" + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("輸出到CSV"); // "Output for CSV" + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("輸出到備份"); // "Off Printer Backup" + LSTR MSG_UBL_INFO_UBL = _UxGT("輸出UBL信息"); // "Output UBL Info" + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("填充合計"); // "Fill-in Amount" + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("手工填充"); // "Manual Fill-in" + LSTR MSG_UBL_SMART_FILLIN = _UxGT("聰明填充"); // "Smart Fill-in" + LSTR MSG_UBL_FILLIN_MESH = _UxGT("填充網格"); // "Fill-in Mesh" + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("作廢所有的"); // "Invalidate All" + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("作廢最近的"); // "Invalidate Closest" + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("細調所有的"); // "Fine Tune All" + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("細調最近的"); // "Fine Tune Closest" + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("網格存儲"); // "Mesh Storage" + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("存儲槽"); // "Memory Slot" + LSTR MSG_UBL_LOAD_MESH = _UxGT("裝載熱床網格"); // "Load Bed Mesh" + LSTR MSG_UBL_SAVE_MESH = _UxGT("保存熱床網格"); // "Save Bed Mesh" + LSTR MSG_MESH_LOADED = _UxGT("網格 %i 已裝載"); // "Mesh %i loaded" + LSTR MSG_MESH_SAVED = _UxGT("網格 %i 已保存"); // "Mesh %i saved" + LSTR MSG_UBL_NO_STORAGE = _UxGT("沒有存儲"); // "No storage" + LSTR MSG_UBL_SAVE_ERROR = _UxGT("錯誤: UBL保存"); // "Err: UBL Save" + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("錯誤: UBL還原"); // "Err: UBL Restore" + LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-偏移:"); // "Z-Offset: " + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z偏移已停止"); // "Z-Offset Stopped" + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("一步步UBL"); // "Step-By-Step UBL" LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. 創設冷網格"); LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. 聰明填充"); LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. 批准網格"); @@ -194,269 +194,269 @@ namespace Language_zh_TW { LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. 細調所有的"); LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. 保存熱床網格"); - LSTR MSG_LED_CONTROL = _UxGT("燈管控制"); // "LED Control" - LSTR MSG_LEDS = _UxGT("燈"); // "Lights" - LSTR MSG_LED_PRESETS = _UxGT("燈預置"); // "Light Presets" - LSTR MSG_SET_LEDS_RED = _UxGT("红"); // "Red" - LSTR MSG_SET_LEDS_ORANGE = _UxGT("橙"); // "Orange" - LSTR MSG_SET_LEDS_YELLOW = _UxGT("黃"); // "Yellow" - LSTR MSG_SET_LEDS_GREEN = _UxGT("綠"); // "Green" - LSTR MSG_SET_LEDS_BLUE = _UxGT("藍"); // "Blue" - LSTR MSG_SET_LEDS_INDIGO = _UxGT("青"); // "Indigo" - LSTR MSG_SET_LEDS_VIOLET = _UxGT("紫"); // "Violet" - LSTR MSG_SET_LEDS_WHITE = _UxGT("白"); // "White" - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("復歸"); // "Default" - LSTR MSG_CUSTOM_LEDS = _UxGT("定制燈"); // "Custom Lights" - LSTR MSG_INTENSITY_R = _UxGT("紅飽和度"); // "Red Intensity" - LSTR MSG_INTENSITY_G = _UxGT("綠飽和度"); // "Green Intensity" - LSTR MSG_INTENSITY_B = _UxGT("藍飽和度"); // "Blue Intensity" - LSTR MSG_INTENSITY_W = _UxGT("白飽和度"); // "White Intensity" - LSTR MSG_LED_BRIGHTNESS = _UxGT("亮度"); // "Brightness" + LSTR MSG_LED_CONTROL = _UxGT("燈管控制"); // "LED Control" + LSTR MSG_LEDS = _UxGT("燈"); // "Lights" + LSTR MSG_LED_PRESETS = _UxGT("燈預置"); // "Light Presets" + LSTR MSG_SET_LEDS_RED = _UxGT("红"); // "Red" + LSTR MSG_SET_LEDS_ORANGE = _UxGT("橙"); // "Orange" + LSTR MSG_SET_LEDS_YELLOW = _UxGT("黃"); // "Yellow" + LSTR MSG_SET_LEDS_GREEN = _UxGT("綠"); // "Green" + LSTR MSG_SET_LEDS_BLUE = _UxGT("藍"); // "Blue" + LSTR MSG_SET_LEDS_INDIGO = _UxGT("青"); // "Indigo" + LSTR MSG_SET_LEDS_VIOLET = _UxGT("紫"); // "Violet" + LSTR MSG_SET_LEDS_WHITE = _UxGT("白"); // "White" + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("復歸"); // "Default" + LSTR MSG_CUSTOM_LEDS = _UxGT("定制燈"); // "Custom Lights" + LSTR MSG_INTENSITY_R = _UxGT("紅飽和度"); // "Red Intensity" + LSTR MSG_INTENSITY_G = _UxGT("綠飽和度"); // "Green Intensity" + LSTR MSG_INTENSITY_B = _UxGT("藍飽和度"); // "Blue Intensity" + LSTR MSG_INTENSITY_W = _UxGT("白飽和度"); // "White Intensity" + LSTR MSG_LED_BRIGHTNESS = _UxGT("亮度"); // "Brightness" - LSTR MSG_MOVING = _UxGT("移動 ..."); // "Moving..." - LSTR MSG_FREE_XY = _UxGT("釋放 XY"); // "Free XY" - LSTR MSG_MOVE_X = _UxGT("移動X"); // "Move X" - LSTR MSG_MOVE_Y = _UxGT("移動Y"); // "Move Y" - LSTR MSG_MOVE_Z = _UxGT("移動Z"); // "Move Z" - LSTR MSG_MOVE_N = _UxGT("移動Q"); // "Move @" - LSTR MSG_MOVE_E = _UxGT("擠出機"); // "Extruder" - LSTR MSG_MOVE_EN = _UxGT("擠出機 *"); // "Extruder *" - LSTR MSG_HOTEND_TOO_COLD = _UxGT("噴嘴溫度不夠"); // "Hotend too cold" - LSTR MSG_MOVE_N_MM = _UxGT("移動 $ mm"); // "Move 0.025mm" - LSTR MSG_MOVE_01MM = _UxGT("移動 0.1 mm"); // "Move 0.1mm" - LSTR MSG_MOVE_1MM = _UxGT("移動 1 mm"); // "Move 1mm" - LSTR MSG_MOVE_10MM = _UxGT("移動 10 mm"); // "Move 10mm" - LSTR MSG_MOVE_50MM = _UxGT("移動 50 mm"); // "Move 50mm" - LSTR MSG_MOVE_100MM = _UxGT("移動 100 mm"); // "Move 100mm" - LSTR MSG_SPEED = _UxGT("速率"); // "Speed" - LSTR MSG_MESH_Z_OFFSET = _UxGT("熱床Z"); // "Bed Z" - LSTR MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴"); // "Nozzle" 噴嘴 + LSTR MSG_MOVING = _UxGT("移動 ..."); // "Moving..." + LSTR MSG_FREE_XY = _UxGT("釋放 XY"); // "Free XY" + LSTR MSG_MOVE_X = _UxGT("移動X"); // "Move X" + LSTR MSG_MOVE_Y = _UxGT("移動Y"); // "Move Y" + LSTR MSG_MOVE_Z = _UxGT("移動Z"); // "Move Z" + LSTR MSG_MOVE_N = _UxGT("移動Q"); // "Move @" + LSTR MSG_MOVE_E = _UxGT("擠出機"); // "Extruder" + LSTR MSG_MOVE_EN = _UxGT("擠出機 *"); // "Extruder *" + LSTR MSG_HOTEND_TOO_COLD = _UxGT("噴嘴溫度不夠"); // "Hotend too cold" + LSTR MSG_MOVE_N_MM = _UxGT("移動 $ mm"); // "Move 0.025mm" + LSTR MSG_MOVE_01MM = _UxGT("移動 0.1 mm"); // "Move 0.1mm" + LSTR MSG_MOVE_1MM = _UxGT("移動 1 mm"); // "Move 1mm" + LSTR MSG_MOVE_10MM = _UxGT("移動 10 mm"); // "Move 10mm" + LSTR MSG_MOVE_50MM = _UxGT("移動 50 mm"); // "Move 50mm" + LSTR MSG_MOVE_100MM = _UxGT("移動 100 mm"); // "Move 100mm" + LSTR MSG_SPEED = _UxGT("速率"); // "Speed" + LSTR MSG_MESH_Z_OFFSET = _UxGT("熱床Z"); // "Bed Z" + LSTR MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴"); // "Nozzle" 噴嘴 LSTR MSG_NOZZLE_N = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ~"); - LSTR MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" 熱床"); // "Bed" + LSTR MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" 熱床"); // "Bed" LSTR MSG_CHAMBER = _UxGT("Enclosure"); - LSTR MSG_FAN_SPEED = _UxGT("風扇速率"); // "Fan speed" + LSTR MSG_FAN_SPEED = _UxGT("風扇速率"); // "Fan speed" LSTR MSG_FAN_SPEED_N = _UxGT("風扇速率 {"); LSTR MSG_STORED_FAN_N = _UxGT("Stored Fan {"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("額外風扇速率"); // "Extra fan speed" + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("額外風扇速率"); // "Extra fan speed" LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("額外風扇速率 {"); LSTR MSG_FLOW = _UxGT("擠出速率"); - LSTR MSG_FLOW_N = _UxGT("擠出速率 ~"); // "Flow" - LSTR MSG_CONTROL = _UxGT("控制"); // "Control" - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" 最小"); // " " LCD_STR_THERMOMETER " Min" - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" 最大"); // " " LCD_STR_THERMOMETER " Max" - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" 系數"); // " " LCD_STR_THERMOMETER " Fact" - LSTR MSG_AUTOTEMP = _UxGT("自動控溫"); // "Autotemp" - LSTR MSG_LCD_ON = _UxGT("開 "); // "On" - LSTR MSG_LCD_OFF = _UxGT("關 "); // "Off" + LSTR MSG_FLOW_N = _UxGT("擠出速率 ~"); // "Flow" + LSTR MSG_CONTROL = _UxGT("控制"); // "Control" + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" 最小"); // " " LCD_STR_THERMOMETER " Min" + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" 最大"); // " " LCD_STR_THERMOMETER " Max" + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" 系數"); // " " LCD_STR_THERMOMETER " Fact" + LSTR MSG_AUTOTEMP = _UxGT("自動控溫"); // "Autotemp" + LSTR MSG_LCD_ON = _UxGT("開 "); // "On" + LSTR MSG_LCD_OFF = _UxGT("關 "); // "Off" LSTR MSG_SELECT_E = _UxGT("選擇 *"); - LSTR MSG_ACC = _UxGT("加速度"); // "Accel" acceleration - LSTR MSG_JERK = _UxGT("抖動速率"); // "Jerk" - LSTR MSG_VA_JERK = _UxGT("軸抖動速率") STR_A; // "Va-jerk" + LSTR MSG_ACC = _UxGT("加速度"); // "Accel" acceleration + LSTR MSG_JERK = _UxGT("抖動速率"); // "Jerk" + LSTR MSG_VA_JERK = _UxGT("軸抖動速率") STR_A; // "Va-jerk" LSTR MSG_VB_JERK = _UxGT("軸抖動速率") STR_B; LSTR MSG_VC_JERK = _UxGT("軸抖動速率") STR_C; LSTR MSG_VN_JERK = _UxGT("軸抖動速率@"); LSTR MSG_VE_JERK = _UxGT("擠出機抖動速率"); - LSTR MSG_MAX_SPEED = _UxGT("速度"); // "Velocity" - LSTR MSG_VMAX_A = _UxGT("最大進料速率") STR_A; // "Vmax " max_feedrate_mm_s + LSTR MSG_MAX_SPEED = _UxGT("速度"); // "Velocity" + LSTR MSG_VMAX_A = _UxGT("最大進料速率") STR_A; // "Vmax " max_feedrate_mm_s LSTR MSG_VMAX_B = _UxGT("最大進料速率") STR_B; LSTR MSG_VMAX_C = _UxGT("最大進料速率") STR_C; LSTR MSG_VMAX_N = _UxGT("最大進料速率@"); LSTR MSG_VMAX_E = _UxGT("最大進料速率E"); - LSTR MSG_VMAX_EN = _UxGT("最大進料速率 *"); // "Vmax " max_feedrate_mm_s - LSTR MSG_VMIN = _UxGT("最小進料速率"); // "Vmin" min_feedrate_mm_s - LSTR MSG_VTRAV_MIN = _UxGT("最小移動速率"); // "VTrav min" min_travel_feedrate_mm_s, (target) speed of the move - LSTR MSG_ACCELERATION = _UxGT("加速度"); // "Acceleration" - LSTR MSG_AMAX_A = _UxGT("最大列印加速度") STR_A; // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves + LSTR MSG_VMAX_EN = _UxGT("最大進料速率 *"); // "Vmax " max_feedrate_mm_s + LSTR MSG_VMIN = _UxGT("最小進料速率"); // "Vmin" min_feedrate_mm_s + LSTR MSG_VTRAV_MIN = _UxGT("最小移動速率"); // "VTrav min" min_travel_feedrate_mm_s, (target) speed of the move + LSTR MSG_ACCELERATION = _UxGT("加速度"); // "Acceleration" + LSTR MSG_AMAX_A = _UxGT("最大列印加速度") STR_A; // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves LSTR MSG_AMAX_B = _UxGT("最大列印加速度") STR_B; LSTR MSG_AMAX_C = _UxGT("最大列印加速度") STR_C; LSTR MSG_AMAX_N = _UxGT("最大列印加速度@"); LSTR MSG_AMAX_E = _UxGT("最大列印加速度E"); - LSTR MSG_AMAX_EN = _UxGT("最大列印加速度 *"); // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves - LSTR MSG_A_RETRACT = _UxGT("回縮加速度"); // "A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts - LSTR MSG_A_TRAVEL = _UxGT("非列印移動加速度"); // "A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - LSTR MSG_STEPS_PER_MM = _UxGT("軸步數/mm"); // "Steps/mm" axis_steps_per_mm, axis steps-per-unit G92 - LSTR MSG_A_STEPS = STR_A _UxGT(" 軸步數/mm"); // "Asteps/mm" axis_steps_per_mm, axis steps-per-unit G92 + LSTR MSG_AMAX_EN = _UxGT("最大列印加速度 *"); // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves + LSTR MSG_A_RETRACT = _UxGT("回縮加速度"); // "A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts + LSTR MSG_A_TRAVEL = _UxGT("非列印移動加速度"); // "A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves + LSTR MSG_STEPS_PER_MM = _UxGT("軸步數/mm"); // "Steps/mm" axis_steps_per_mm, axis steps-per-unit G92 + LSTR MSG_A_STEPS = STR_A _UxGT(" 軸步數/mm"); // "Asteps/mm" axis_steps_per_mm, axis steps-per-unit G92 LSTR MSG_B_STEPS = STR_B _UxGT(" 軸步數/mm"); LSTR MSG_C_STEPS = STR_C _UxGT(" 軸步數/mm"); LSTR MSG_N_STEPS = _UxGT("@ 軸步數/mm"); - LSTR MSG_E_STEPS = _UxGT("擠出機步數/mm"); // "Esteps/mm" + LSTR MSG_E_STEPS = _UxGT("擠出機步數/mm"); // "Esteps/mm" LSTR MSG_EN_STEPS = _UxGT("擠出機~步數/mm"); - LSTR MSG_TEMPERATURE = _UxGT("溫度"); // "Temperature" - LSTR MSG_MOTION = _UxGT("運作"); // "Motion" - LSTR MSG_FILAMENT = _UxGT("絲料測容"); // "Filament" menu_control_volumetric - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("測容積mm") SUPERSCRIPT_THREE; // "E in mm3" volumetric_enabled - LSTR MSG_FILAMENT_DIAM = _UxGT("絲料直徑"); // "Fil. Dia." + LSTR MSG_TEMPERATURE = _UxGT("溫度"); // "Temperature" + LSTR MSG_MOTION = _UxGT("運作"); // "Motion" + LSTR MSG_FILAMENT = _UxGT("絲料測容"); // "Filament" menu_control_volumetric + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("測容積mm") SUPERSCRIPT_THREE; // "E in mm3" volumetric_enabled + LSTR MSG_FILAMENT_DIAM = _UxGT("絲料直徑"); // "Fil. Dia." LSTR MSG_FILAMENT_DIAM_E = _UxGT("絲料直徑 *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("卸載 mm"); // "Unload mm" - LSTR MSG_FILAMENT_LOAD = _UxGT("装載 mm"); // "Load mm" + LSTR MSG_FILAMENT_UNLOAD = _UxGT("卸載 mm"); // "Unload mm" + LSTR MSG_FILAMENT_LOAD = _UxGT("装載 mm"); // "Load mm" LSTR MSG_ADVANCE_K = _UxGT("Advance K"); LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *"); - LSTR MSG_CONTRAST = _UxGT("LCD對比度"); // "LCD contrast" - LSTR MSG_STORE_EEPROM = _UxGT("保存設置"); // "Store memory" - LSTR MSG_LOAD_EEPROM = _UxGT("載入設置"); // "Load memory" - LSTR MSG_RESTORE_DEFAULTS = _UxGT("恢復安全值"); // "Restore failsafe" - LSTR MSG_INIT_EEPROM = _UxGT("初始化設置"); // "Initialize EEPROM" - LSTR MSG_ERR_EEPROM_CRC = _UxGT("錯誤: EEPROM CRC"); // "Err: EEPROM CRC" - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("錯誤: EEPROM 尺寸"); // "Err: EEPROM Index" - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("錯誤: EEPROM 版本"); // "EEPROM Version" - LSTR MSG_MEDIA_UPDATE = _UxGT("媒體更新"); // "Media Update" - LSTR MSG_RESET_PRINTER = _UxGT("重置打印機"); // "Reset Printer - LSTR MSG_REFRESH = _UxGT("刷新"); // "Refresh" - LSTR MSG_INFO_SCREEN = _UxGT("資訊界面"); // "Info screen" - LSTR MSG_PREPARE = _UxGT("準備"); // "Prepare" - LSTR MSG_TUNE = _UxGT("調整"); // "Tune" - LSTR MSG_START_PRINT = _UxGT("開始列印"); // "Start Print" - LSTR MSG_BUTTON_NEXT = _UxGT("下一個"); // "Next" - LSTR MSG_BUTTON_INIT = _UxGT("初始 "); // "Init" - LSTR MSG_BUTTON_STOP = _UxGT("停止 "); // "Stop" - LSTR MSG_BUTTON_PRINT = _UxGT("列印 "); // "Print" - LSTR MSG_BUTTON_RESET = _UxGT("復歸 "); // "Reset" - LSTR MSG_BUTTON_CANCEL = _UxGT("放棄 "); // "Cancel" - LSTR MSG_BUTTON_DONE = _UxGT("確認 "); // "Done" - LSTR MSG_BUTTON_BACK = _UxGT("返回 "); // "Back" - LSTR MSG_BUTTON_PROCEED = _UxGT("繼續 "); // "Proceed" - LSTR MSG_PAUSE_PRINT = _UxGT("暫停列印"); // "Pause print" - LSTR MSG_RESUME_PRINT = _UxGT("恢復列印"); // "Resume print" - LSTR MSG_STOP_PRINT = _UxGT("停止列印"); // "Stop print" - LSTR MSG_PRINTING_OBJECT = _UxGT("列印物件"); // "Printing Object" - LSTR MSG_CANCEL_OBJECT = _UxGT("中止物件"); // "Cancel Object" - LSTR MSG_CANCEL_OBJECT_N = _UxGT("中止物件 {"); // "Cancel Object {" - LSTR MSG_OUTAGE_RECOVERY = _UxGT("中斷恢復"); // "Outage Recovery" - LSTR MSG_MEDIA_MENU = _UxGT("從記憶卡上列印"); // "Print from SD" - LSTR MSG_NO_MEDIA = _UxGT("無記憶卡"); // "No SD card" - LSTR MSG_DWELL = _UxGT("休眠 ..."); // "Sleep..." - LSTR MSG_USERWAIT = _UxGT("點擊繼續 ..."); // "Click to resume..." - LSTR MSG_PRINT_PAUSED = _UxGT("列印已暫停"); // "Print paused" - LSTR MSG_PRINTING = _UxGT("列印中 ..."); // "Printing..." - LSTR MSG_PRINT_ABORTED = _UxGT("已取消列印"); // "Print aborted" - LSTR MSG_NO_MOVE = _UxGT("無移動"); // "No move." - LSTR MSG_KILLED = _UxGT("已砍掉"); // "KILLED. " - LSTR MSG_STOPPED = _UxGT("已停止"); // "STOPPED. " - LSTR MSG_CONTROL_RETRACT = _UxGT("回縮長度mm"); // "Retract mm" retract_length, retract length (positive mm) - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("換手回抽長度mm"); // "Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change - LSTR MSG_CONTROL_RETRACTF = _UxGT("回縮速率mm/s"); // "Retract V" retract_feedrate_mm_s, feedrate for retracting (mm/s) - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); // "Hop mm" retract_zraise, retract Z-lift - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("回縮恢復長度mm"); // "UnRet +mm" retract_recover_extra, additional recover length (mm, added to retract length when recovering) - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("換手回縮恢復長度mm"); // "S UnRet+mm" swap_retract_recover_extra, additional swap recover length (mm, added to retract length when recovering from extruder change) - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("回縮恢復後進料速率mm/s"); // "Unretract V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s) - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // "S UnRet V" - LSTR MSG_AUTORETRACT = _UxGT("自動回縮"); // "Auto-Retract" autoretract_enabled, - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("交換長度"); // "Swap Length" - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("清除長度"); // "Purge Length" + LSTR MSG_CONTRAST = _UxGT("LCD對比度"); // "LCD contrast" + LSTR MSG_STORE_EEPROM = _UxGT("保存設置"); // "Store memory" + LSTR MSG_LOAD_EEPROM = _UxGT("載入設置"); // "Load memory" + LSTR MSG_RESTORE_DEFAULTS = _UxGT("恢復安全值"); // "Restore failsafe" + LSTR MSG_INIT_EEPROM = _UxGT("初始化設置"); // "Initialize EEPROM" + LSTR MSG_ERR_EEPROM_CRC = _UxGT("錯誤: EEPROM CRC"); // "Err: EEPROM CRC" + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("錯誤: EEPROM 尺寸"); // "Err: EEPROM Index" + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("錯誤: EEPROM 版本"); // "EEPROM Version" + LSTR MSG_MEDIA_UPDATE = _UxGT("媒體更新"); // "Media Update" + LSTR MSG_RESET_PRINTER = _UxGT("重置打印機"); // "Reset Printer + LSTR MSG_REFRESH = _UxGT("刷新"); // "Refresh" + LSTR MSG_INFO_SCREEN = _UxGT("資訊界面"); // "Info screen" + LSTR MSG_PREPARE = _UxGT("準備"); // "Prepare" + LSTR MSG_TUNE = _UxGT("調整"); // "Tune" + LSTR MSG_START_PRINT = _UxGT("開始列印"); // "Start Print" + LSTR MSG_BUTTON_NEXT = _UxGT("下一個"); // "Next" + LSTR MSG_BUTTON_INIT = _UxGT("初始 "); // "Init" + LSTR MSG_BUTTON_STOP = _UxGT("停止 "); // "Stop" + LSTR MSG_BUTTON_PRINT = _UxGT("列印 "); // "Print" + LSTR MSG_BUTTON_RESET = _UxGT("復歸 "); // "Reset" + LSTR MSG_BUTTON_CANCEL = _UxGT("放棄 "); // "Cancel" + LSTR MSG_BUTTON_DONE = _UxGT("確認 "); // "Done" + LSTR MSG_BUTTON_BACK = _UxGT("返回 "); // "Back" + LSTR MSG_BUTTON_PROCEED = _UxGT("繼續 "); // "Proceed" + LSTR MSG_PAUSE_PRINT = _UxGT("暫停列印"); // "Pause print" + LSTR MSG_RESUME_PRINT = _UxGT("恢復列印"); // "Resume print" + LSTR MSG_STOP_PRINT = _UxGT("停止列印"); // "Stop print" + LSTR MSG_PRINTING_OBJECT = _UxGT("列印物件"); // "Printing Object" + LSTR MSG_CANCEL_OBJECT = _UxGT("中止物件"); // "Cancel Object" + LSTR MSG_CANCEL_OBJECT_N = _UxGT("中止物件 {"); // "Cancel Object {" + LSTR MSG_OUTAGE_RECOVERY = _UxGT("中斷恢復"); // "Outage Recovery" + LSTR MSG_MEDIA_MENU = _UxGT("從記憶卡上列印"); // "Print from SD" + LSTR MSG_NO_MEDIA = _UxGT("無記憶卡"); // "No SD card" + LSTR MSG_DWELL = _UxGT("休眠 ..."); // "Sleep..." + LSTR MSG_USERWAIT = _UxGT("點擊繼續 ..."); // "Click to resume..." + LSTR MSG_PRINT_PAUSED = _UxGT("列印已暫停"); // "Print paused" + LSTR MSG_PRINTING = _UxGT("列印中 ..."); // "Printing..." + LSTR MSG_PRINT_ABORTED = _UxGT("已取消列印"); // "Print aborted" + LSTR MSG_NO_MOVE = _UxGT("無移動"); // "No move." + LSTR MSG_KILLED = _UxGT("已砍掉"); // "KILLED. " + LSTR MSG_STOPPED = _UxGT("已停止"); // "STOPPED. " + LSTR MSG_CONTROL_RETRACT = _UxGT("回縮長度mm"); // "Retract mm" retract_length, retract length (positive mm) + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("換手回抽長度mm"); // "Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change + LSTR MSG_CONTROL_RETRACTF = _UxGT("回縮速率mm/s"); // "Retract V" retract_feedrate_mm_s, feedrate for retracting (mm/s) + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); // "Hop mm" retract_zraise, retract Z-lift + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("回縮恢復長度mm"); // "UnRet +mm" retract_recover_extra, additional recover length (mm, added to retract length when recovering) + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("換手回縮恢復長度mm"); // "S UnRet+mm" swap_retract_recover_extra, additional swap recover length (mm, added to retract length when recovering from extruder change) + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("回縮恢復後進料速率mm/s"); // "Unretract V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s) + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // "S UnRet V" + LSTR MSG_AUTORETRACT = _UxGT("自動回縮"); // "Auto-Retract" autoretract_enabled, + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("交換長度"); // "Swap Length" + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("清除長度"); // "Purge Length" LSTR MSG_TOOL_CHANGE = _UxGT("交換工具"); //"Tool Change" - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z軸提昇"); // "Z Raise" - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("最高速度"); // "Prime Speed" - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("收回速度"); // "Retract Speed" + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z軸提昇"); // "Z Raise" + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("最高速度"); // "Prime Speed" + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("收回速度"); // "Retract Speed" LSTR MSG_NOZZLE_STANDBY = _UxGT("噴嘴待機"); //"Nozzle Standby" - LSTR MSG_FILAMENTCHANGE = _UxGT("更換絲料"); // "Change filament" + LSTR MSG_FILAMENTCHANGE = _UxGT("更換絲料"); // "Change filament" LSTR MSG_FILAMENTCHANGE_E = _UxGT("更換絲料 *"); - LSTR MSG_FILAMENTLOAD = _UxGT("裝載絲料"); // "Load filament" + LSTR MSG_FILAMENTLOAD = _UxGT("裝載絲料"); // "Load filament" LSTR MSG_FILAMENTLOAD_E = _UxGT("裝載絲料 *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("卸載絲料"); // "Unload filament" - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("卸載絲料 *"); // "Unload filament" - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("卸載全部"); // "Unload All" - LSTR MSG_INIT_MEDIA = _UxGT("初始化記憶卡"); // "Init. SD card" - LSTR MSG_ATTACH_MEDIA = _UxGT("連接記憶卡"); // "Attach Media - LSTR MSG_CHANGE_MEDIA = _UxGT("更換記憶卡"); // "Change SD card" - LSTR MSG_RELEASE_MEDIA = _UxGT("釋放媒體"); // "Release Media" - LSTR MSG_ZPROBE_OUT = _UxGT("Z探針在熱床之外"); // "Z probe out. bed" Z probe is not within the physical limits - LSTR MSG_SKEW_FACTOR = _UxGT("偏斜因數"); // "Skew Factor" + LSTR MSG_FILAMENTUNLOAD = _UxGT("卸載絲料"); // "Unload filament" + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("卸載絲料 *"); // "Unload filament" + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("卸載全部"); // "Unload All" + LSTR MSG_INIT_MEDIA = _UxGT("初始化記憶卡"); // "Init. SD card" + LSTR MSG_ATTACH_MEDIA = _UxGT("連接記憶卡"); // "Attach Media + LSTR MSG_CHANGE_MEDIA = _UxGT("更換記憶卡"); // "Change SD card" + LSTR MSG_RELEASE_MEDIA = _UxGT("釋放媒體"); // "Release Media" + LSTR MSG_ZPROBE_OUT = _UxGT("Z探針在熱床之外"); // "Z probe out. bed" Z probe is not within the physical limits + LSTR MSG_SKEW_FACTOR = _UxGT("偏斜因數"); // "Skew Factor" - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch 自檢"); // "BLTouch Self-Test" - LSTR MSG_BLTOUCH_RESET = _UxGT("重置BLTouch"); // "Reset BLTouch" - LSTR MSG_BLTOUCH_STOW = _UxGT("裝載BLTouch"); // "Stow BLTouch" - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("部署BLTouch"); // "Deploy BLTouch" + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch 自檢"); // "BLTouch Self-Test" + LSTR MSG_BLTOUCH_RESET = _UxGT("重置BLTouch"); // "Reset BLTouch" + LSTR MSG_BLTOUCH_STOW = _UxGT("裝載BLTouch"); // "Stow BLTouch" + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("部署BLTouch"); // "Deploy BLTouch" - LSTR MSG_HOME_FIRST = _UxGT("歸位 %s 先"); // "Home ... first" - LSTR MSG_ZPROBE_OFFSETS = _UxGT("探針偏移"); //Probe Offsets - LSTR MSG_ZPROBE_XOFFSET = _UxGT("探針X偏移量"); //Probe X Offset - LSTR MSG_ZPROBE_YOFFSET = _UxGT("探針Y偏移量"); //Probe Y Offset - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("探針Z偏移量"); //Probe Z Offset - LSTR MSG_BABYSTEP_X = _UxGT("微量調整X軸"); // "Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts - LSTR MSG_BABYSTEP_Y = _UxGT("微量調整Y軸"); // "Babystep Y" - LSTR MSG_BABYSTEP_Z = _UxGT("微量調整Z軸"); // "Babystep Z" - LSTR MSG_BABYSTEP_TOTAL = _UxGT("總計"); // "Total" - LSTR MSG_ENDSTOP_ABORT = _UxGT("擋塊終止"); // "Endstop abort" - LSTR MSG_HEATING_FAILED_LCD = _UxGT("加熱失敗"); // "Heating failed" - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("錯誤:冗餘溫度"); // "Err: REDUNDANT TEMP" - LSTR MSG_THERMAL_RUNAWAY = _UxGT("溫度失控"); // "THERMAL RUNAWAY" - LSTR MSG_THERMAL_RUNAWAY_BED = _UxGT("熱床溫度失控"); // "BED THERMAL RUNAWAY" - LSTR MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("機箱溫度失控"); // "CHAMBER T. RUNAWAY" - LSTR MSG_ERR_MAXTEMP = _UxGT("錯誤:最高溫度"); // "Err: MAXTEMP" - LSTR MSG_ERR_MINTEMP = _UxGT("錯誤:最低溫度"); // "Err: MINTEMP" - LSTR MSG_HALTED = _UxGT("印表機停機"); // "PRINTER HALTED" - LSTR MSG_PLEASE_RESET = _UxGT("請重置"); // "Please reset" - LSTR MSG_HEATING = _UxGT("加熱中 ..."); // "Heating..." - LSTR MSG_COOLING = _UxGT("冷卻中 ..."); // "Cooling..." - LSTR MSG_BED_HEATING = _UxGT("加熱熱床中 ..."); // "Bed Heating..." - LSTR MSG_BED_COOLING = _UxGT("熱床冷卻中 ..."); // "Bed Cooling..." - LSTR MSG_CHAMBER_HEATING = _UxGT("機箱加熱中 .."); // "Chamber Heating..." - LSTR MSG_CHAMBER_COOLING = _UxGT("機箱冷卻中 ..."); //Chamber Cooling... - LSTR MSG_DELTA_CALIBRATE = _UxGT("⊿校準"); // "Delta Calibration" - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("⊿校準X"); // "Calibrate X" - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("⊿校準Y"); // "Calibrate Y" - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("⊿校準Z"); // "Calibrate Z" - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("⊿校準中心"); // "Calibrate Center" - LSTR MSG_DELTA_SETTINGS = _UxGT("⊿設置"); // "Delta Settings" - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("⊿自動校準"); // "Auto Calibration" - LSTR MSG_DELTA_DIAG_ROD = _UxGT("⊿斜柱"); // "Diag Rod" - LSTR MSG_DELTA_HEIGHT = _UxGT("⊿高度"); // "Height" - LSTR MSG_DELTA_RADIUS = _UxGT("⊿半徑"); // "Radius" - LSTR MSG_INFO_MENU = _UxGT("關於印表機"); // "About Printer" - LSTR MSG_INFO_PRINTER_MENU = _UxGT("印表機訊息"); // "Printer Info" - LSTR MSG_3POINT_LEVELING = _UxGT("三點調平"); // "3-Point Leveling" - LSTR MSG_LINEAR_LEVELING = _UxGT("線性調平"); // "Linear Leveling" - LSTR MSG_BILINEAR_LEVELING = _UxGT(" 雙線性調平"); // "Bilinear Leveling" - LSTR MSG_UBL_LEVELING = _UxGT("統一熱床調平(UBL)"); // "Unified Bed Leveling" - LSTR MSG_MESH_LEVELING = _UxGT("網格調平"); // "Mesh Leveling" - LSTR MSG_INFO_STATS_MENU = _UxGT("印表機統計"); // "Printer Stats" - LSTR MSG_INFO_BOARD_MENU = _UxGT("主板訊息"); // "Board Info" - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("溫度計"); // "Thermistors" - LSTR MSG_INFO_EXTRUDERS = _UxGT(" 擠出機"); // "Extruders" - LSTR MSG_INFO_BAUDRATE = _UxGT("傳輸率"); // "Baud" - LSTR MSG_INFO_PROTOCOL = _UxGT("協議"); // "Protocol" - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("監測溫度失控:關"); // "Runaway Watch: OFF" - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("監測溫度失控:開"); // "Runaway Watch: ON" + LSTR MSG_HOME_FIRST = _UxGT("歸位 %s 先"); // "Home ... first" + LSTR MSG_ZPROBE_OFFSETS = _UxGT("探針偏移"); //Probe Offsets + LSTR MSG_ZPROBE_XOFFSET = _UxGT("探針X偏移量"); //Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("探針Y偏移量"); //Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("探針Z偏移量"); //Probe Z Offset + LSTR MSG_BABYSTEP_X = _UxGT("微量調整X軸"); // "Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts + LSTR MSG_BABYSTEP_Y = _UxGT("微量調整Y軸"); // "Babystep Y" + LSTR MSG_BABYSTEP_Z = _UxGT("微量調整Z軸"); // "Babystep Z" + LSTR MSG_BABYSTEP_TOTAL = _UxGT("總計"); // "Total" + LSTR MSG_ENDSTOP_ABORT = _UxGT("擋塊終止"); // "Endstop abort" + LSTR MSG_HEATING_FAILED_LCD = _UxGT("加熱失敗"); // "Heating failed" + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("錯誤:冗餘溫度"); // "Err: REDUNDANT TEMP" + LSTR MSG_THERMAL_RUNAWAY = _UxGT("溫度失控"); // "THERMAL RUNAWAY" + LSTR MSG_THERMAL_RUNAWAY_BED = _UxGT("熱床溫度失控"); // "BED THERMAL RUNAWAY" + LSTR MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("機箱溫度失控"); // "CHAMBER T. RUNAWAY" + LSTR MSG_ERR_MAXTEMP = _UxGT("錯誤:最高溫度"); // "Err: MAXTEMP" + LSTR MSG_ERR_MINTEMP = _UxGT("錯誤:最低溫度"); // "Err: MINTEMP" + LSTR MSG_HALTED = _UxGT("印表機停機"); // "PRINTER HALTED" + LSTR MSG_PLEASE_RESET = _UxGT("請重置"); // "Please reset" + LSTR MSG_HEATING = _UxGT("加熱中 ..."); // "Heating..." + LSTR MSG_COOLING = _UxGT("冷卻中 ..."); // "Cooling..." + LSTR MSG_BED_HEATING = _UxGT("加熱熱床中 ..."); // "Bed Heating..." + LSTR MSG_BED_COOLING = _UxGT("熱床冷卻中 ..."); // "Bed Cooling..." + LSTR MSG_CHAMBER_HEATING = _UxGT("機箱加熱中 .."); // "Chamber Heating..." + LSTR MSG_CHAMBER_COOLING = _UxGT("機箱冷卻中 ..."); //Chamber Cooling... + LSTR MSG_DELTA_CALIBRATE = _UxGT("⊿校準"); // "Delta Calibration" + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("⊿校準X"); // "Calibrate X" + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("⊿校準Y"); // "Calibrate Y" + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("⊿校準Z"); // "Calibrate Z" + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("⊿校準中心"); // "Calibrate Center" + LSTR MSG_DELTA_SETTINGS = _UxGT("⊿設置"); // "Delta Settings" + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("⊿自動校準"); // "Auto Calibration" + LSTR MSG_DELTA_DIAG_ROD = _UxGT("⊿斜柱"); // "Diag Rod" + LSTR MSG_DELTA_HEIGHT = _UxGT("⊿高度"); // "Height" + LSTR MSG_DELTA_RADIUS = _UxGT("⊿半徑"); // "Radius" + LSTR MSG_INFO_MENU = _UxGT("關於印表機"); // "About Printer" + LSTR MSG_INFO_PRINTER_MENU = _UxGT("印表機訊息"); // "Printer Info" + LSTR MSG_3POINT_LEVELING = _UxGT("三點調平"); // "3-Point Leveling" + LSTR MSG_LINEAR_LEVELING = _UxGT("線性調平"); // "Linear Leveling" + LSTR MSG_BILINEAR_LEVELING = _UxGT(" 雙線性調平"); // "Bilinear Leveling" + LSTR MSG_UBL_LEVELING = _UxGT("統一熱床調平(UBL)"); // "Unified Bed Leveling" + LSTR MSG_MESH_LEVELING = _UxGT("網格調平"); // "Mesh Leveling" + LSTR MSG_INFO_STATS_MENU = _UxGT("印表機統計"); // "Printer Stats" + LSTR MSG_INFO_BOARD_MENU = _UxGT("主板訊息"); // "Board Info" + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("溫度計"); // "Thermistors" + LSTR MSG_INFO_EXTRUDERS = _UxGT(" 擠出機"); // "Extruders" + LSTR MSG_INFO_BAUDRATE = _UxGT("傳輸率"); // "Baud" + LSTR MSG_INFO_PROTOCOL = _UxGT("協議"); // "Protocol" + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("監測溫度失控:關"); // "Runaway Watch: OFF" + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("監測溫度失控:開"); // "Runaway Watch: ON" - LSTR MSG_CASE_LIGHT = _UxGT("外殼燈"); // "Case light" - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("燈亮度"); // "Light BRIGHTNESS" - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("打印機不正確"); // "The printer is incorrect" + LSTR MSG_CASE_LIGHT = _UxGT("外殼燈"); // "Case light" + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("燈亮度"); // "Light BRIGHTNESS" + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("打印機不正確"); // "The printer is incorrect" #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("列印計數"); // "Print Count" - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("已完成"); // "Completed" - LSTR MSG_INFO_PRINT_TIME = _UxGT("總列印時間"); // "Total print time" - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最長工作時間"); // "Longest job time" - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("總計擠出"); // "Extruded total" + LSTR MSG_INFO_PRINT_COUNT = _UxGT("列印計數"); // "Print Count" + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("已完成"); // "Completed" + LSTR MSG_INFO_PRINT_TIME = _UxGT("總列印時間"); // "Total print time" + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最長工作時間"); // "Longest job time" + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("總計擠出"); // "Extruded total" #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("列印數"); // "Prints" - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成"); // "Completed" - LSTR MSG_INFO_PRINT_TIME = _UxGT("總共"); // "Total" - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最長"); // "Longest" - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("已擠出"); // "Extruded" + LSTR MSG_INFO_PRINT_COUNT = _UxGT("列印數"); // "Prints" + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成"); // "Completed" + LSTR MSG_INFO_PRINT_TIME = _UxGT("總共"); // "Total" + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最長"); // "Longest" + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("已擠出"); // "Extruded" #endif - LSTR MSG_INFO_MIN_TEMP = _UxGT("最低溫度"); // "Min Temp" - LSTR MSG_INFO_MAX_TEMP = _UxGT("最高溫度"); // "Max Temp" - LSTR MSG_INFO_PSU = _UxGT("電源供應"); // "Power Supply" - LSTR MSG_DRIVE_STRENGTH = _UxGT("驅動力度"); // "Drive Strength" - LSTR MSG_DAC_PERCENT_N = _UxGT("@ 驅動 %"); //E Driver % - LSTR MSG_ERROR_TMC = _UxGT("TMC連接錯誤"); // "TMC CONNECTION ERROR" - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("保存驅動設置"); // "DAC EEPROM Write" - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("更換絲料"); // "FILAMENT CHANGE" - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("列印已暫停"); // "PRINT PAUSED" - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("裝載絲料"); // "LOAD FILAMENT" - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("卸載絲料"); // "UNLOAD FILAMENT" - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("恢複選項:"); // "RESUME OPTIONS:" - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("清除更多"); // "Purge more" - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("恢復列印"); // "Resume print" - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" 噴嘴: "); // " Nozzle: " - LSTR MSG_RUNOUT_SENSOR = _UxGT("斷絲偵測"); // "Runout Sensor" - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("絲距離mm"); // "Runout Dist mm" - LSTR MSG_KILL_HOMING_FAILED = _UxGT("歸原位失敗"); // "Homing failed" - LSTR MSG_LCD_PROBING_FAILED = _UxGT("探針探測失敗"); // "Probing failed" + LSTR MSG_INFO_MIN_TEMP = _UxGT("最低溫度"); // "Min Temp" + LSTR MSG_INFO_MAX_TEMP = _UxGT("最高溫度"); // "Max Temp" + LSTR MSG_INFO_PSU = _UxGT("電源供應"); // "Power Supply" + LSTR MSG_DRIVE_STRENGTH = _UxGT("驅動力度"); // "Drive Strength" + LSTR MSG_DAC_PERCENT_N = _UxGT("@ 驅動 %"); //E Driver % + LSTR MSG_ERROR_TMC = _UxGT("TMC連接錯誤"); // "TMC CONNECTION ERROR" + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("保存驅動設置"); // "DAC EEPROM Write" + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("更換絲料"); // "FILAMENT CHANGE" + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("列印已暫停"); // "PRINT PAUSED" + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("裝載絲料"); // "LOAD FILAMENT" + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("卸載絲料"); // "UNLOAD FILAMENT" + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("恢複選項:"); // "RESUME OPTIONS:" + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("清除更多"); // "Purge more" + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("恢復列印"); // "Resume print" + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" 噴嘴: "); // " Nozzle: " + LSTR MSG_RUNOUT_SENSOR = _UxGT("斷絲偵測"); // "Runout Sensor" + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("絲距離mm"); // "Runout Dist mm" + LSTR MSG_KILL_HOMING_FAILED = _UxGT("歸原位失敗"); // "Homing failed" + LSTR MSG_LCD_PROBING_FAILED = _UxGT("探針探測失敗"); // "Probing failed" // // Filament Change screens show up to 3 lines on a 4-line display @@ -464,31 +464,31 @@ namespace Language_zh_TW { // #if LCD_HEIGHT >= 4 LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("按下按鈕", "恢復列印")); //"Press Button to resume print" - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停車中 ...")); // "Parking..." - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("等待開始", "絲料", "變更")); // "Wait for start of the filament change" - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("等待", "卸下絲料")); // "Wait for filament unload" - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("插入絲料", "並按鍵", "繼續 ...")); // "Insert filament and press button to continue..." - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("按下按鈕", "加熱噴嘴.")); // "Press button to heat nozzle." - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("加熱噴嘴", "請等待 ...")); // "Heating nozzle Please wait..." - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("等待", "進料")); // "Wait for filament load" - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("等待", "絲料清除")); // "Wait for filament purge" + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停車中 ...")); // "Parking..." + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("等待開始", "絲料", "變更")); // "Wait for start of the filament change" + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("等待", "卸下絲料")); // "Wait for filament unload" + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("插入絲料", "並按鍵", "繼續 ...")); // "Insert filament and press button to continue..." + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("按下按鈕", "加熱噴嘴.")); // "Press button to heat nozzle." + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("加熱噴嘴", "請等待 ...")); // "Heating nozzle Please wait..." + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("等待", "進料")); // "Wait for filament load" + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("等待", "絲料清除")); // "Wait for filament purge" LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("按下完成","絲料清除")); //"Press button to filament purge" - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("等待列印", "恢復")); // "Wait for print to resume" + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("等待列印", "恢復")); // "Wait for print to resume" #else // LCD_HEIGHT < 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("按下繼續..")); // "Click to continue" - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停車中 ...")); // "Parking..." - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("請等待 ...")); // "Please wait..." - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("插入並點擊")); // "Insert and Click" - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("按下加熱..")); // "Click to heat" - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("加熱中 ...")); // "Heating..." - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("退出中 ...")); // "Ejecting..." - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("載入中 ...")); // "Loading..." - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("清除中 ...")); // "Purging..." - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("按下完成..")); // "Click to finish" - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢復中 ...")); // "Resuming..." + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("按下繼續..")); // "Click to continue" + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停車中 ...")); // "Parking..." + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("請等待 ...")); // "Please wait..." + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("插入並點擊")); // "Insert and Click" + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("按下加熱..")); // "Click to heat" + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("加熱中 ...")); // "Heating..." + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("退出中 ...")); // "Ejecting..." + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("載入中 ...")); // "Loading..." + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("清除中 ...")); // "Purging..." + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("按下完成..")); // "Click to finish" + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢復中 ...")); // "Resuming..." #endif // LCD_HEIGHT < 4 - LSTR MSG_SHORT_DAY = _UxGT("天"); // "d" // One character only - LSTR MSG_SHORT_HOUR = _UxGT("時"); // "h" // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("分"); // "m" // One character only + LSTR MSG_SHORT_DAY = _UxGT("天"); // "d" // One character only + LSTR MSG_SHORT_HOUR = _UxGT("時"); // "h" // One character only + LSTR MSG_SHORT_MINUTE = _UxGT("分"); // "m" // One character only } diff --git a/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h b/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h index 494af83f59..c2865372c5 100644 --- a/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h +++ b/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h @@ -72,11 +72,11 @@ // L6470 or L6474 on SPI #if HAS_DRIVER(L6470) || HAS_DRIVER(L6474) // Shared with SPI on EXP2 - #define L6470_CHAIN_SCK_PIN PB3 - #define L6470_CHAIN_MISO_PIN PB4 - #define L6470_CHAIN_MOSI_PIN PB5 - #define L6470_CHAIN_SS_PIN PA15 - #define ENABLE_RESET_L64XX_CHIPS + #define L6470_CHAIN_SCK_PIN PB3 + #define L6470_CHAIN_MISO_PIN PB4 + #define L6470_CHAIN_MOSI_PIN PB5 + #define L6470_CHAIN_SS_PIN PA15 + #define ENABLE_RESET_L64XX_CHIPS #endif // TMC2130 on SPI From ef93b401c38eb1748721be74c9fdbae77f375792 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 27 May 2023 00:22:42 +0000 Subject: [PATCH 480/659] [cron] Bump distribution date (2023-05-27) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index bb0da06648..cac9dbda5d 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-26" +//#define STRING_DISTRIBUTION_DATE "2023-05-27" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index a203e9267c..0bb7faffe2 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-26" + #define STRING_DISTRIBUTION_DATE "2023-05-27" #endif /** From 0b4500155e8c61aecf41090b41f34a3452593b78 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Sun, 28 May 2023 13:24:45 -0700 Subject: [PATCH 481/659] =?UTF-8?q?=F0=9F=A9=B9=20Update=20KEDI=20/=20GODI?= =?UTF-8?q?=20LCD=5FPINS=5FEN=20pin=20(#25886)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/language/language_vi.h | 1 - Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Marlin/src/lcd/language/language_vi.h b/Marlin/src/lcd/language/language_vi.h index 2ce22961ca..69b58f71f0 100644 --- a/Marlin/src/lcd/language/language_vi.h +++ b/Marlin/src/lcd/language/language_vi.h @@ -438,5 +438,4 @@ namespace Language_vi { LSTR MSG_SHORT_DAY = _UxGT("n"); // d - ngày - One character only LSTR MSG_SHORT_HOUR = _UxGT("g"); // h - giờ - One character only LSTR MSG_SHORT_MINUTE = _UxGT("p"); // m - phút - One character only - LSTR MSG_SHORT_MINUTE = _UxGT("p"); // M - phút - One character only } diff --git a/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h b/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h index c2865372c5..c18085755c 100644 --- a/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h +++ b/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h @@ -190,7 +190,7 @@ #define BTN_EN1 EXP1_08_PIN #define BTN_EN2 EXP1_06_PIN - #define LCD_PINS_ENABLE EXP1_03_PIN + #define LCD_PINS_EN EXP1_03_PIN #define LCD_PINS_D4 EXP1_05_PIN #elif IS_TFTGLCD_PANEL @@ -211,7 +211,7 @@ #define BTN_EN1 EXP2_08_PIN #define BTN_EN2 EXP2_06_PIN - #define LCD_PINS_ENABLE EXP1_08_PIN + #define LCD_PINS_EN EXP1_08_PIN #if ENABLED(FYSETC_MINI_12864) From b4ba3dd7f37a6214ed8a3e62f45f9d2aac3917c9 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 29 May 2023 00:21:30 +0000 Subject: [PATCH 482/659] [cron] Bump distribution date (2023-05-29) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index cac9dbda5d..4c3f7ed262 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-27" +//#define STRING_DISTRIBUTION_DATE "2023-05-29" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 0bb7faffe2..5fc2b732c3 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-27" + #define STRING_DISTRIBUTION_DATE "2023-05-29" #endif /** From d926d4dea413f70303ae38a74bc627aaaf21d97e Mon Sep 17 00:00:00 2001 From: DejitaruJin Date: Sun, 28 May 2023 21:22:00 -0400 Subject: [PATCH 483/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20and=20improve=20GT?= =?UTF-8?q?2560=20pins=20(#25890)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/pins/mega/pins_GT2560_REV_A.h | 120 +++++++++++------- Marlin/src/pins/mega/pins_GT2560_REV_A_PLUS.h | 6 +- .../stm32f1/pins_BTT_SKR_MINI_E3_common.h | 8 +- 3 files changed, 83 insertions(+), 51 deletions(-) diff --git a/Marlin/src/pins/mega/pins_GT2560_REV_A.h b/Marlin/src/pins/mega/pins_GT2560_REV_A.h index 61c61f94ff..783a93a85b 100644 --- a/Marlin/src/pins/mega/pins_GT2560_REV_A.h +++ b/Marlin/src/pins/mega/pins_GT2560_REV_A.h @@ -47,14 +47,12 @@ #define Y_MAX_PIN 28 #define Z_MIN_PIN 30 -#if ENABLED(BLTOUCH) - #if MB(GT2560_REV_A_PLUS) - #define SERVO0_PIN 11 - #define Z_MAX_PIN 32 - #else - #define SERVO0_PIN 32 - #define Z_MAX_PIN -1 - #endif +#if ENABLED(BLTOUCH) && !defined(SERVO0_PIN) + #define SERVO0_PIN 32 +#endif + +#if SERVO0_PIN == 32 + #define Z_MAX_PIN -1 #else #define Z_MAX_PIN 32 #endif @@ -102,64 +100,100 @@ // // Misc. Functions // -#define SDSS 53 + +// Power monitoring pins - set to 0 for main VIN, 1 for dedicated bed supply rail. +// Don't forget to enable POWER_MONITOR_VOLTAGE in Configuration_adv.h +// and set POWER_MONITOR_VOLTS_PER_VOLT to 0.090909. +#define POWER_MONITOR_VOLTAGE_PIN 0 + +/** LCD SDCARD + * ------ ------ + * (TX1) 18 | 1 2 | 19 (RX1) (MISO) 50 | 1 2 | 52 (SCK) + * (RX2) 17 | 3 4 | 20 (SDA) 42 | 3 4 | 53 (SS) + * (TX2) 16 | 5 6 21 (SCL) 40 | 5 6 51 (MOSI) + * 5 | 7 8 | 6 38 | 7 8 | RESET + * GND | 9 10 | 5V GND | 9 10 | 5V/3V3 + * ------ ------ + * SV1 SV3 + * + * GT2560 LCD & SD headers follow typical EXP1 & EXP2 format. + * SD header voltage pin set by link pads beneath the header; R25 for 5V, R44 for 3.3V (default) + * Pins 20 (SDA) and 21 (SCL) have external 10K pull-ups on the board. + */ + +#define EXP1_01_PIN 18 // TX1 / BEEPER +#define EXP1_02_PIN 19 // RX1 / ENC +#define EXP1_03_PIN 17 // RX2 / CS +#define EXP1_04_PIN 20 // SDA / A0 +#define EXP1_05_PIN 16 // TX2 / LCD_RS +#define EXP1_06_PIN 21 // SCL / CS +#define EXP1_07_PIN 5 // D6 / A0 +#define EXP1_08_PIN 6 // D7 / D4 + +#define EXP2_01_PIN 50 // MISO +#define EXP2_02_PIN 52 // SCK +#define EXP2_03_PIN 42 // EN2 +#define EXP2_04_PIN 53 // SDSS +#define EXP2_05_PIN 40 // EN1 +#define EXP2_06_PIN 51 // MOSI +#define EXP2_07_PIN 38 // SD_DET +#define EXP2_08_PIN -1 // RESET + +#define SDSS EXP2_04_PIN #define LED_PIN 13 -#define PS_ON_PIN 12 -#define SUICIDE_PIN 54 // Must be enabled at startup to keep power flowing -#define KILL_PIN -1 #if HAS_WIRED_LCD - #define BEEPER_PIN 18 + #define BEEPER_PIN EXP1_01_PIN #if IS_NEWPANEL #if ENABLED(MKS_MINI_12864) - #define DOGLCD_A0 5 - #define DOGLCD_CS 21 - #define BTN_EN1 40 - #define BTN_EN2 42 + #define DOGLCD_CS EXP1_06_PIN + #define DOGLCD_A0 EXP1_07_PIN + #define BTN_EN1 EXP2_05_PIN + #define BTN_EN2 EXP2_03_PIN #elif ENABLED(FYSETC_MINI_12864) // Disconnect EXP2-1 and EXP2-2, otherwise future firmware upload won't work. - #define DOGLCD_A0 20 - #define DOGLCD_CS 17 + #define DOGLCD_CS EXP1_03_PIN + #define DOGLCD_A0 EXP1_04_PIN - #define NEOPIXEL_PIN 21 - #define BTN_EN1 42 - #define BTN_EN2 40 + #define NEOPIXEL_PIN EXP1_06_PIN + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN - #define LCD_RESET_PIN 16 + #define LCD_RESET_PIN EXP1_05_PIN #define LCD_CONTRAST_INIT 220 #define LCD_BACKLIGHT_PIN -1 #else - #define LCD_PINS_RS 20 - #define LCD_PINS_EN 17 - #define LCD_PINS_D4 16 - #define LCD_PINS_D5 21 - #define LCD_PINS_D6 5 - #define LCD_PINS_D7 6 - #define BTN_EN1 42 - #define BTN_EN2 40 + #define LCD_PINS_RS EXP1_04_PIN + #define LCD_PINS_EN EXP1_03_PIN + #define LCD_PINS_D4 EXP1_05_PIN + #define LCD_PINS_D5 EXP1_06_PIN + #define LCD_PINS_D6 EXP1_07_PIN + #define LCD_PINS_D7 EXP1_08_PIN + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN #endif - #define BTN_ENC 19 - #define SD_DETECT_PIN 38 + #define BTN_ENC EXP1_02_PIN + #define SD_DETECT_PIN EXP2_07_PIN #else // !IS_NEWPANEL - #define SHIFT_CLK_PIN 38 - #define SHIFT_LD_PIN 42 - #define SHIFT_OUT_PIN 40 - #define SHIFT_EN_PIN 17 + #define SHIFT_CLK_PIN EXP2_07_PIN + #define SHIFT_LD_PIN EXP2_03_PIN + #define SHIFT_OUT_PIN EXP2_05_PIN + #define SHIFT_EN_PIN EXP1_03_PIN - #define LCD_PINS_RS 16 - #define LCD_PINS_EN 5 - #define LCD_PINS_D4 6 - #define LCD_PINS_D5 21 - #define LCD_PINS_D6 20 - #define LCD_PINS_D7 19 + #define LCD_PINS_RS EXP1_05_PIN + #define LCD_PINS_EN EXP1_07_PIN + #define LCD_PINS_D4 EXP1_08_PIN + #define LCD_PINS_D5 EXP1_06_PIN + #define LCD_PINS_D6 EXP1_04_PIN + #define LCD_PINS_D7 EXP1_02_PIN #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) #define BTN_ENC_EN LCD_PINS_D7 // Detect the presence of the encoder diff --git a/Marlin/src/pins/mega/pins_GT2560_REV_A_PLUS.h b/Marlin/src/pins/mega/pins_GT2560_REV_A_PLUS.h index a982a0e00e..1905f58108 100644 --- a/Marlin/src/pins/mega/pins_GT2560_REV_A_PLUS.h +++ b/Marlin/src/pins/mega/pins_GT2560_REV_A_PLUS.h @@ -30,8 +30,6 @@ #define BOARD_INFO_NAME "GT2560 Rev.A+" -#include "pins_GT2560_REV_A.h" +#define SERVO0_PIN 11 -#if DISABLED(BLTOUCH) - #define SERVO0_PIN 32 -#endif +#include "pins_GT2560_REV_A.h" diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h index 689e73c4f3..45829d2ede 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h @@ -114,15 +114,15 @@ #define USB_CONNECT_INVERTING false /** - * SKR Mini E3 V1.0, V1.2 - * ------ + * SKR Mini E3 V1.0, V1.2 + * ------ * (BEEPER) PB5 | 1 2 | PB6 (BTN_ENC) * (BTN_EN1) PA9 | 3 4 | RESET * (BTN_EN2) PA10 5 6 | PB9 (LCD_D4) * (LCD_RS) PB8 | 7 8 | PB7 (LCD_EN) * GND | 9 10 | 5V - * ------ - * EXP1 + * ------ + * EXP1 */ #ifndef EXP1_02_PIN #define EXP1_02_PIN PB6 From 47616c7dfa7f3f7fddd8fa8d207929d65d2291a6 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 29 May 2023 19:00:09 -0500 Subject: [PATCH 484/659] =?UTF-8?q?=F0=9F=94=A8=20Install=20'heatshrink'?= =?UTF-8?q?=20if=20needed=20(#25896)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../share/scripts/MarlinBinaryProtocol.py | 28 +++++++++++-------- buildroot/share/scripts/upload.py | 26 +++++++++-------- 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/buildroot/share/scripts/MarlinBinaryProtocol.py b/buildroot/share/scripts/MarlinBinaryProtocol.py index ecf9df35e2..dca5e167f7 100644 --- a/buildroot/share/scripts/MarlinBinaryProtocol.py +++ b/buildroot/share/scripts/MarlinBinaryProtocol.py @@ -11,11 +11,14 @@ import sys import datetime import random try: - import heatshrink + import heatshrink2 as heatshrink heatshrink_exists = True except ImportError: - heatshrink_exists = False - + try: + import heatshrink + heatshrink_exists = True + except ImportError: + heatshrink_exists = False def millis(): return time.perf_counter() * 1000 @@ -393,18 +396,19 @@ class FileTransferProtocol(object): def copy(self, filename, dest_filename, compression, dummy): self.connect() - compression_support = heatshrink_exists and self.compression['algorithm'] == 'heatshrink' and compression - if compression and (not heatshrink_exists or not self.compression['algorithm'] == 'heatshrink'): - print("Compression not supported by client") - #compression_support = False + has_heatshrink = heatshrink_exists and self.compression['algorithm'] == 'heatshrink' + if compression and not has_heatshrink: + hs = '2' if sys.version_info[0] > 2 else '' + print("Compression not supported by client. Use 'pip install heatshrink%s' to fix." % hs) + compression = False data = open(filename, "rb").read() filesize = len(data) - self.open(dest_filename, compression_support, dummy) + self.open(dest_filename, compression, dummy) block_size = self.protocol.block_size - if compression_support: + if compression: data = heatshrink.encode(data, window_sz2=self.compression['window'], lookahead_sz2=self.compression['lookahead']) cratio = filesize / len(data) @@ -419,17 +423,17 @@ class FileTransferProtocol(object): self.write(data[start:end]) kibs = (( (i+1) * block_size) / 1024) / (millis() + 1 - start_time) * 1000 if (i / blocks) >= dump_pctg: - print("\r{0:2.0f}% {1:4.2f}KiB/s {2} Errors: {3}".format((i / blocks) * 100, kibs, "[{0:4.2f}KiB/s]".format(kibs * cratio) if compression_support else "", self.protocol.errors), end='') + print("\r{0:2.0f}% {1:4.2f}KiB/s {2} Errors: {3}".format((i / blocks) * 100, kibs, "[{0:4.2f}KiB/s]".format(kibs * cratio) if compression else "", self.protocol.errors), end='') dump_pctg += 0.1 if self.protocol.errors > 0: # Dump last status (errors may not be visible) - print("\r{0:2.0f}% {1:4.2f}KiB/s {2} Errors: {3} - Aborting...".format((i / blocks) * 100, kibs, "[{0:4.2f}KiB/s]".format(kibs * cratio) if compression_support else "", self.protocol.errors), end='') + print("\r{0:2.0f}% {1:4.2f}KiB/s {2} Errors: {3} - Aborting...".format((i / blocks) * 100, kibs, "[{0:4.2f}KiB/s]".format(kibs * cratio) if compression else "", self.protocol.errors), end='') print("") # New line to break the transfer speed line self.close() print("Transfer aborted due to protocol errors") #raise Exception("Transfer aborted due to protocol errors") return False; - print("\r{0:2.0f}% {1:4.2f}KiB/s {2} Errors: {3}".format(100, kibs, "[{0:4.2f}KiB/s]".format(kibs * cratio) if compression_support else "", self.protocol.errors)) # no one likes transfers finishing at 99.8% + print("\r{0:2.0f}% {1:4.2f}KiB/s {2} Errors: {3}".format(100, kibs, "[{0:4.2f}KiB/s]".format(kibs * cratio) if compression else "", self.protocol.errors)) # no one likes transfers finishing at 99.8% if not self.close(): print("Transfer failed") diff --git a/buildroot/share/scripts/upload.py b/buildroot/share/scripts/upload.py index af15a82590..c97605e3f4 100644 --- a/buildroot/share/scripts/upload.py +++ b/buildroot/share/scripts/upload.py @@ -7,17 +7,6 @@ import serial Import("env") -# Needed (only) for compression, but there are problems with pip install heatshrink -#try: -# import heatshrink -#except ImportError: -# # Install heatshrink -# print("Installing 'heatshrink' python module...") -# env.Execute(env.subst("$PYTHONEXE -m pip install heatshrink")) -# -# Not tested: If it's safe to install python libraries in PIO python try: -# env.Execute(env.subst("$PYTHONEXE -m pip install https://github.com/p3p/pyheatshrink/releases/download/0.3.3/pyheatshrink-pip.zip")) - import MarlinBinaryProtocol #-----------------# @@ -191,6 +180,21 @@ def Upload(source, target, env): # "upload_random_name": generate a random 8.3 firmware filename to upload upload_random_filename = upload_delete_old_bins and not marlin_long_filename_host_support + # Heatshrink module is needed (only) for compression + if upload_compression: + if sys.version_info[0] > 2: + try: + import heatshrink2 + except ImportError: + print("Installing 'heatshrink2' python module...") + env.Execute(env.subst("$PYTHONEXE -m pip install heatshrink2")) + else: + try: + import heatshrink + except ImportError: + print("Installing 'heatshrink' python module...") + env.Execute(env.subst("$PYTHONEXE -m pip install heatshrink")) + try: # Start upload job From 67f0d6ae5ea89fe1cdfc7ac4b25ea2947df1772b Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 30 May 2023 00:33:07 +0000 Subject: [PATCH 485/659] [cron] Bump distribution date (2023-05-30) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 4c3f7ed262..745b738b3b 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-29" +//#define STRING_DISTRIBUTION_DATE "2023-05-30" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 5fc2b732c3..47b8fecd57 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-29" + #define STRING_DISTRIBUTION_DATE "2023-05-30" #endif /** From 3999d67e514c1e752128df2a6dc80ec0579ee504 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Thu, 1 Jun 2023 12:44:19 -0700 Subject: [PATCH 486/659] =?UTF-8?q?=F0=9F=94=A7=20Default=20has=20Heated?= =?UTF-8?q?=20Bed=20(#25895)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration.h | 2 +- Marlin/src/inc/Conditionals_adv.h | 2 -- Marlin/src/inc/Conditionals_post.h | 18 ++++++++++++------ Marlin/src/inc/SanityCheck.h | 11 +++++++++++ buildroot/tests/DUE | 2 +- buildroot/tests/mega2560 | 2 +- buildroot/tests/rumba32 | 2 +- 7 files changed, 27 insertions(+), 12 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index fee89898a3..61377189a8 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -547,7 +547,7 @@ #define TEMP_SENSOR_5 0 #define TEMP_SENSOR_6 0 #define TEMP_SENSOR_7 0 -#define TEMP_SENSOR_BED 0 +#define TEMP_SENSOR_BED 1 #define TEMP_SENSOR_PROBE 0 #define TEMP_SENSOR_CHAMBER 0 #define TEMP_SENSOR_COOLER 0 diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 70644ddf0d..343ebae1ff 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -688,8 +688,6 @@ #define TEMP_SENSOR_BED_IS_CUSTOM 1 #endif #else - #undef THERMAL_PROTECTION_BED - #undef THERMAL_PROTECTION_BED_PERIOD #undef BED_MINTEMP #undef BED_MAXTEMP #endif diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index d137e1d9c1..5794a96b8b 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -2240,8 +2240,11 @@ #if HOTENDS > 7 && HAS_ADC_TEST(7) #define HAS_TEMP_ADC_7 1 #endif -#if HAS_ADC_TEST(BED) - #define HAS_TEMP_ADC_BED 1 +#if TEMP_SENSOR_BED + #define HAS_HEATED_BED 1 + #if HAS_ADC_TEST(BED) + #define HAS_TEMP_ADC_BED 1 + #endif #endif #if HAS_ADC_TEST(PROBE) #define HAS_TEMP_ADC_PROBE 1 @@ -2262,7 +2265,7 @@ #define HAS_TEMP_ADC_REDUNDANT 1 #endif -#define HAS_TEMP(N) (TEMP_SENSOR_IS_MAX_TC(N) || EITHER(HAS_TEMP_ADC_##N, TEMP_SENSOR_##N##_IS_DUMMY)) +#define HAS_TEMP(N) (TEMP_SENSOR_IS_MAX_TC(N) || HAS_TEMP_ADC_##N || TEMP_SENSOR_##N##_IS_DUMMY) #if HAS_HOTEND && HAS_TEMP(0) #define HAS_TEMP_HOTEND 1 #endif @@ -2331,10 +2334,12 @@ #if PIN_EXISTS(HEATER_BED) #define HAS_HEATER_BED 1 #endif +#if PIN_EXISTS(HEATER_CHAMBER) + #define HAS_HEATER_CHAMBER 1 +#endif // Shorthand for common combinations -#if HAS_TEMP_BED && HAS_HEATER_BED - #define HAS_HEATED_BED 1 +#if HAS_HEATED_BED #ifndef BED_OVERSHOOT #define BED_OVERSHOOT 10 #endif @@ -2361,7 +2366,7 @@ #define HAS_TEMP_SENSOR 1 #endif -#if HAS_TEMP_CHAMBER && PIN_EXISTS(HEATER_CHAMBER) +#if HAS_TEMP_CHAMBER && HAS_HEATER_CHAMBER #define HAS_HEATED_CHAMBER 1 #ifndef CHAMBER_OVERSHOOT #define CHAMBER_OVERSHOOT 10 @@ -2388,6 +2393,7 @@ // Thermal protection #if !HAS_HEATED_BED #undef THERMAL_PROTECTION_BED + #undef THERMAL_PROTECTION_BED_PERIOD #endif #if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0 #define WATCH_HOTENDS 1 diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 78630051b6..89cf8c5198 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -127,6 +127,17 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #undef _ISMAX_1 #undef _ISSNS_1 +/** + * Heated Bed requirements + */ +#if HAS_HEATED_BED + #if !HAS_TEMP_BED + #error "The Heated Bed requires a TEMP_BED_PIN or Thermocouple." + #elif !HAS_HEATER_BED + #error "The Heated Bed requires HEATER_BED_PIN." + #endif +#endif + /** * Hephestos 2 Heated Bed Kit requirements */ diff --git a/buildroot/tests/DUE b/buildroot/tests/DUE index c43d30c76e..81e60c9623 100755 --- a/buildroot/tests/DUE +++ b/buildroot/tests/DUE @@ -47,6 +47,6 @@ exec_test $1 $2 "RADDS with ABL (Bilinear), Triple Z Axis, Z_STEPPER_AUTO_ALIGN, # Test SWITCHING_EXTRUDER # restore_configs -opt_set MOTHERBOARD BOARD_RAMPS4DUE_EEF LCD_LANGUAGE fi EXTRUDERS 2 NUM_SERVOS 1 +opt_set MOTHERBOARD BOARD_RAMPS4DUE_EEF LCD_LANGUAGE fi EXTRUDERS 2 TEMP_SENSOR_BED 0 NUM_SERVOS 1 opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER BEEP_ON_FEEDRATE_CHANGE POWER_LOSS_RECOVERY exec_test $1 $2 "RAMPS4DUE_EEF with SWITCHING_EXTRUDER, POWER_LOSS_RECOVERY" "$3" diff --git a/buildroot/tests/mega2560 b/buildroot/tests/mega2560 index 1490c9e4aa..46de664e43 100755 --- a/buildroot/tests/mega2560 +++ b/buildroot/tests/mega2560 @@ -90,7 +90,7 @@ exec_test $1 $2 "E Axis Only | DOGM MarlinUI" "$3" # restore_configs opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO MIXING_STEPPERS 5 LCD_LANGUAGE ru \ - NUM_RUNOUT_SENSORS E_STEPPERS REDUNDANT_PART_COOLING_FAN 1 \ + NUM_RUNOUT_SENSORS E_STEPPERS TEMP_SENSOR_BED 0 REDUNDANT_PART_COOLING_FAN 1 \ FIL_RUNOUT2_PIN 16 FIL_RUNOUT3_PIN 17 FIL_RUNOUT4_PIN 4 FIL_RUNOUT5_PIN 5 opt_enable MIXING_EXTRUDER GRADIENT_MIX GRADIENT_VTOOL CR10_STOCKDISPLAY \ USE_CONTROLLER_FAN CONTROLLER_FAN_EDITABLE CONTROLLER_FAN_IGNORE_Z \ diff --git a/buildroot/tests/rumba32 b/buildroot/tests/rumba32 index 833769d0b9..c3d7603e4e 100755 --- a/buildroot/tests/rumba32 +++ b/buildroot/tests/rumba32 @@ -13,7 +13,7 @@ opt_set MOTHERBOARD BOARD_RUMBA32_V1_0 SERIAL_PORT -1 \ opt_disable PIDTEMP opt_enable PIDTEMPBED FAN_SOFT_PWM opt_disable THERMAL_PROTECTION_BED -exec_test $1 $2 "RUMBA32 V1.0 with TMC2130, PID Bed, and bed thermal protection disabled" "$3" +exec_test $1 $2 "RUMBA32 V1.0 with TMC2130, PID Bed, no Bed Thermal Protection" "$3" # Build examples restore_configs From ad23b8c559d55bfbc81d077a129c256c9ef9a585 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 1 Jun 2023 14:54:23 -0500 Subject: [PATCH 487/659] =?UTF-8?q?=F0=9F=9A=B8=20Probe=20Wizard=20display?= =?UTF-8?q?=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/menu/menu_probe_offset.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/lcd/menu/menu_probe_offset.cpp b/Marlin/src/lcd/menu/menu_probe_offset.cpp index 0dd118ed22..82bf23ca84 100644 --- a/Marlin/src/lcd/menu/menu_probe_offset.cpp +++ b/Marlin/src/lcd/menu/menu_probe_offset.cpp @@ -59,7 +59,7 @@ void probe_offset_wizard_menu() { STATIC_ITEM(MSG_MOVE_NOZZLE_TO_BED, SS_CENTER|SS_INVERT); STATIC_ITEM_F(F("Z"), SS_CENTER, ftostr42_52(current_position.z)); - STATIC_ITEM(MSG_ZPROBE_ZOFFSET, SS_LEFT, ftostr42_52(calculated_z_offset)); + STATIC_ITEM(MSG_ZPROBE_ZOFFSET, SS_FULL, ftostr42_52(calculated_z_offset)); SUBMENU(MSG_MOVE_1MM, []{ _goto_manual_move_z( 1); }); SUBMENU(MSG_MOVE_01MM, []{ _goto_manual_move_z( 0.1f); }); From 9e0dcd4a2b6d0262ee2b09170aff0c1f21d9175e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 1 Jun 2023 16:53:02 -0500 Subject: [PATCH 488/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Ext?= =?UTF-8?q?UI::onLevelingStart/Done=20for=20all=20leveling=20(#25913)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp | 4 +++- .../src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp | 5 +++-- Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp | 4 +++- Marlin/src/lcd/extui/dgus/dgus_extui.cpp | 4 +++- .../src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp | 11 +++++------ .../src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp | 2 +- .../lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp | 4 +++- Marlin/src/lcd/extui/example/example.cpp | 4 +++- .../lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp | 5 ++++- .../generic/bed_mesh_edit_screen.cpp | 2 +- .../generic/bed_mesh_view_screen.cpp | 2 +- .../src/lcd/extui/ia_creality/ia_creality_extui.cpp | 4 ++-- Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp | 2 +- Marlin/src/lcd/extui/malyan/malyan_extui.cpp | 9 ++++++--- Marlin/src/lcd/extui/nextion/nextion_extui.cpp | 4 +++- Marlin/src/lcd/extui/ui_api.cpp | 2 +- Marlin/src/lcd/extui/ui_api.h | 6 +++--- 17 files changed, 46 insertions(+), 28 deletions(-) diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp b/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp index 27ee4689ba..4ed0461afe 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp @@ -104,10 +104,12 @@ namespace ExtUI { // whether successful or not. } - #if HAS_MESH + #if HAS_LEVELING void onLevelingStart() {} void onLevelingDone() {} + #endif + #if HAS_MESH void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval) { // Called when any mesh points are updated //SERIAL_ECHOLNPGM("onMeshUpdate() x:", xpos, " y:", ypos, " z:", zval); diff --git a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp index 0df3bde89d..2bd2a458b8 100644 --- a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp @@ -91,11 +91,12 @@ namespace ExtUI { // whether successful or not. } - #if HAS_MESH - + #if HAS_LEVELING void onLevelingStart() {} void onLevelingDone() {} + #endif + #if HAS_MESH void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval) { // Called when any mesh points are updated } diff --git a/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp b/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp index 80e1746a2f..6990a23f7b 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp @@ -108,10 +108,12 @@ namespace ExtUI { // whether successful or not. } - #if HAS_MESH + #if HAS_LEVELING void onLevelingStart() {} void onLevelingDone() {} + #endif + #if HAS_MESH void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval) { // Called when any mesh points are updated //SERIAL_ECHOLNPGM("onMeshUpdate() x:", xpos, " y:", ypos, " z:", zval); diff --git a/Marlin/src/lcd/extui/dgus/dgus_extui.cpp b/Marlin/src/lcd/extui/dgus/dgus_extui.cpp index 1d86d8bd55..ede627c3da 100644 --- a/Marlin/src/lcd/extui/dgus/dgus_extui.cpp +++ b/Marlin/src/lcd/extui/dgus/dgus_extui.cpp @@ -112,10 +112,12 @@ namespace ExtUI { // whether successful or not. } - #if HAS_MESH + #if HAS_LEVELING void onLevelingStart() {} void onLevelingDone() {} + #endif + #if HAS_MESH void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval) { // Called when any mesh points are updated } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp index 6a430e74a6..c0f8576045 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp @@ -118,8 +118,7 @@ void DGUSScreenHandler::Loop() { } if (current_screen == DGUS_Screen::WAIT - && ((wait_continue && !wait_for_user) - || (!wait_continue && IsPrinterIdle())) + && ((wait_continue && !wait_for_user) || (!wait_continue && IsPrinterIdle())) ) { MoveToScreen(wait_return_screen, true); return; @@ -128,7 +127,7 @@ void DGUSScreenHandler::Loop() { if (current_screen == DGUS_Screen::LEVELING_PROBING && IsPrinterIdle()) { dgus_display.PlaySound(3); - SetStatusMessage(ExtUI::getMeshValid() ? GET_TEXT_F(DGUS_MSG_PROBING_SUCCESS) : GET_TEXT_F(DGUS_MSG_PROBING_FAILED)); + SetStatusMessage(ExtUI::getLevelingIsValid() ? GET_TEXT_F(DGUS_MSG_PROBING_SUCCESS) : GET_TEXT_F(DGUS_MSG_PROBING_FAILED)); MoveToScreen(DGUS_Screen::LEVELING_AUTOMATIC); return; @@ -190,7 +189,7 @@ void DGUSScreenHandler::StoreSettings(char *buff) { data.initialized = true; data.volume = dgus_display.GetVolume(); data.brightness = dgus_display.GetBrightness(); - data.abl_okay = (ExtUI::getLevelingActive() && ExtUI::getMeshValid()); + data.abl_okay = (ExtUI::getLevelingActive() && ExtUI::getLevelingIsValid()); memcpy(buff, &data, sizeof(data)); } @@ -206,7 +205,7 @@ void DGUSScreenHandler::LoadSettings(const char *buff) { dgus_display.SetBrightness(data.initialized ? data.brightness : DGUS_DEFAULT_BRIGHTNESS); if (data.initialized) { - leveling_active = (data.abl_okay && ExtUI::getMeshValid()); + leveling_active = (data.abl_okay && ExtUI::getLevelingIsValid()); ExtUI::setLevelingActive(leveling_active); } } @@ -247,7 +246,7 @@ void DGUSScreenHandler::MeshUpdate(const int8_t xpos, const int8_t ypos) { uint8_t point = ypos * GRID_MAX_POINTS_X + xpos; probing_icons[point < 16 ? 0 : 1] |= (1U << (point % 16)); - if (xpos >= GRID_MAX_POINTS_X - 1 && ypos >= GRID_MAX_POINTS_Y - 1 && !ExtUI::getMeshValid()) + if (xpos >= GRID_MAX_POINTS_X - 1 && ypos >= GRID_MAX_POINTS_Y - 1 && !ExtUI::getLevelingIsValid()) probing_icons[0] = probing_icons[1] = 0; TriggerFullUpdate(); diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp index 3b1a38502d..c3b4bad88a 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp @@ -136,7 +136,7 @@ bool DGUSSetupHandler::LevelingOffset() { } bool DGUSSetupHandler::LevelingAutomatic() { - if (ExtUI::getMeshValid()) { + if (ExtUI::getLevelingIsValid()) { dgus_screen_handler.leveling_active = true; ExtUI::setLevelingActive(true); diff --git a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp index 73dead1b56..6e8f2b0100 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp @@ -108,10 +108,12 @@ namespace ExtUI { dgus_screen_handler.ConfigurationStoreRead(success); } - #if HAS_MESH + #if HAS_LEVELING void onLevelingStart() {} void onLevelingDone() {} + #endif + #if HAS_MESH void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval) { dgus_screen_handler.MeshUpdate(xpos, ypos); } diff --git a/Marlin/src/lcd/extui/example/example.cpp b/Marlin/src/lcd/extui/example/example.cpp index 83b7a0a3ca..b295434d84 100644 --- a/Marlin/src/lcd/extui/example/example.cpp +++ b/Marlin/src/lcd/extui/example/example.cpp @@ -98,10 +98,12 @@ namespace ExtUI { // whether successful or not. } - #if HAS_MESH + #if HAS_LEVELING void onLevelingStart() {} void onLevelingDone() {} + #endif + #if HAS_MESH void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval) { // Called when any mesh points are updated } diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp index 86f470ee19..dc49a77ff8 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_extui.cpp @@ -117,9 +117,12 @@ namespace ExtUI { ConfirmUserRequestAlertBox::hide(); } - #if HAS_LEVELING && HAS_MESH + #if HAS_LEVELING void onLevelingStart() {} void onLevelingDone() {} + #endif + + #if HAS_MESH void onMeshUpdate(const int8_t x, const int8_t y, const_float_t val) { BedMeshViewScreen::onMeshUpdate(x, y, val); } void onMeshUpdate(const int8_t x, const int8_t y, const ExtUI::probe_state_t state) { BedMeshViewScreen::onMeshUpdate(x, y, state); } #endif diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_edit_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_edit_screen.cpp index 37eb29a99d..ab6d8a8902 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_edit_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_edit_screen.cpp @@ -95,7 +95,7 @@ void BedMeshEditScreen::setHighlightedValue(float value) { } void BedMeshEditScreen::moveToHighlightedValue() { - if (ExtUI::getMeshValid()) { + if (ExtUI::getLevelingIsValid()) { ExtUI::setLevelingActive(true); ExtUI::setSoftEndstopState(false); ExtUI::moveToMeshPoint(mydata.highlight, gaugeThickness + mydata.zAdjustment); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_view_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_view_screen.cpp index 7b4195ff5c..86eab54d85 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_view_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_view_screen.cpp @@ -125,7 +125,7 @@ void BedMeshViewScreen::onMeshUpdate(const int8_t x, const int8_t y, const ExtUI mydata.count = 0; break; case ExtUI::G29_FINISH: - if (mydata.count == GRID_MAX_POINTS && ExtUI::getMeshValid()) + if (mydata.count == GRID_MAX_POINTS && ExtUI::getLevelingIsValid()) mydata.message = GET_TEXT_F(MSG_BED_MAPPING_DONE); else mydata.message = GET_TEXT_F(MSG_BED_MAPPING_INCOMPLETE); diff --git a/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.cpp b/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.cpp index 4bfdfc6ec3..2d6c2aa96e 100644 --- a/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.cpp +++ b/Marlin/src/lcd/extui/ia_creality/ia_creality_extui.cpp @@ -311,7 +311,7 @@ void onSettingsStored(const bool success) { void onSettingsLoaded(const bool success) { #if HAS_MESH - if (ExtUI::getMeshValid()) { + if (ExtUI::getLevelingIsValid()) { uint8_t abl_probe_index = 0; for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { @@ -371,7 +371,7 @@ void onLevelingStart() {} void onLevelingDone() { #if HAS_MESH - if (ExtUI::getMeshValid()) { + if (ExtUI::getLevelingIsValid()) { uint8_t abl_probe_index = 0; for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { diff --git a/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp b/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp index 37ba539ff1..3eac438bb1 100644 --- a/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp +++ b/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp @@ -1043,7 +1043,7 @@ void RTS::handleData() { #if HAS_MESH sendData(getLevelingActive() ? 3 : 2, AutoLevelIcon); - if (ExtUI::getMeshValid()) { + if (ExtUI::getLevelingIsValid()) { uint8_t abl_probe_index = 0; for (uint8_t outer = 0; outer < GRID_MAX_POINTS_Y; outer++) for (uint8_t inner = 0; inner < GRID_MAX_POINTS_X; inner++) { diff --git a/Marlin/src/lcd/extui/malyan/malyan_extui.cpp b/Marlin/src/lcd/extui/malyan/malyan_extui.cpp index 042062b7c9..f82f1f06a7 100644 --- a/Marlin/src/lcd/extui/malyan/malyan_extui.cpp +++ b/Marlin/src/lcd/extui/malyan/malyan_extui.cpp @@ -150,11 +150,14 @@ namespace ExtUI { void onSettingsStored(const bool) {} void onSettingsLoaded(const bool) {} - #if HAS_MESH + #if HAS_LEVELING void onLevelingStart() {} void onLevelingDone() {} - void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval) {} - void onMeshUpdate(const int8_t xpos, const int8_t ypos, const ExtUI::probe_state_t state) {} + #endif + + #if HAS_MESH + void onMeshUpdate(const int8_t, const int8_t, const_float_t) {} + void onMeshUpdate(const int8_t, const int8_t, const ExtUI::probe_state_t) {} #endif #if ENABLED(POWER_LOSS_RECOVERY) diff --git a/Marlin/src/lcd/extui/nextion/nextion_extui.cpp b/Marlin/src/lcd/extui/nextion/nextion_extui.cpp index da3e344a35..b1e1997a3a 100644 --- a/Marlin/src/lcd/extui/nextion/nextion_extui.cpp +++ b/Marlin/src/lcd/extui/nextion/nextion_extui.cpp @@ -89,10 +89,12 @@ namespace ExtUI { // whether successful or not. } - #if HAS_MESH + #if HAS_LEVELING void onLevelingStart() {} void onLevelingDone() {} + #endif + #if HAS_MESH void onMeshUpdate(const int8_t xpos, const int8_t ypos, const float zval) { // Called when any mesh points are updated } diff --git a/Marlin/src/lcd/extui/ui_api.cpp b/Marlin/src/lcd/extui/ui_api.cpp index fb77be94af..1d917df7cd 100644 --- a/Marlin/src/lcd/extui/ui_api.cpp +++ b/Marlin/src/lcd/extui/ui_api.cpp @@ -919,7 +919,7 @@ namespace ExtUI { bool getLevelingActive() { return planner.leveling_active; } void setLevelingActive(const bool state) { set_bed_leveling_enabled(state); } - bool getMeshValid() { return leveling_is_valid(); } + bool getLevelingIsValid() { return leveling_is_valid(); } #if HAS_MESH diff --git a/Marlin/src/lcd/extui/ui_api.h b/Marlin/src/lcd/extui/ui_api.h index 209635ea09..125c85ffa2 100644 --- a/Marlin/src/lcd/extui/ui_api.h +++ b/Marlin/src/lcd/extui/ui_api.h @@ -172,14 +172,14 @@ namespace ExtUI { #if HAS_LEVELING bool getLevelingActive(); void setLevelingActive(const bool); - bool getMeshValid(); + bool getLevelingIsValid(); + void onLevelingStart(); + void onLevelingDone(); #if HAS_MESH bed_mesh_t& getMeshArray(); float getMeshPoint(const xy_uint8_t &pos); void setMeshPoint(const xy_uint8_t &pos, const_float_t zval); void moveToMeshPoint(const xy_uint8_t &pos, const_float_t z); - void onLevelingStart(); - void onLevelingDone(); void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval); inline void onMeshUpdate(const xy_int8_t &pos, const_float_t zval) { onMeshUpdate(pos.x, pos.y, zval); } From ded810cebfbde80ebbb64afe1f4fd277c94e12f1 Mon Sep 17 00:00:00 2001 From: EvilGremlin <22657714+EvilGremlin@users.noreply.github.com> Date: Fri, 2 Jun 2023 01:35:42 +0300 Subject: [PATCH 489/659] =?UTF-8?q?=F0=9F=8C=90=20Update=20Russian=20trans?= =?UTF-8?q?lation=20(#25840)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/language/language_ru.h | 347 ++++++++++++++++++++------ 1 file changed, 265 insertions(+), 82 deletions(-) diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index 25f62173f3..4594a1046f 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -52,6 +52,8 @@ namespace Language_ru { LSTR MSG_ADVANCED_SETTINGS = _UxGT("Расшир. настройки"); LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переполн. вызова"); #endif + LSTR MSG_TOOLBAR_SETUP = _UxGT("Настр. инструменты"); + LSTR MSG_OPTION_DISABLED = _UxGT("Опция отключена"); LSTR MSG_MEDIA_READ_ERROR = _UxGT("Ошибка чтения"); LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB диск удалён"); LSTR MSG_MEDIA_USB_FAILED = _UxGT("Ошибка USB диска"); @@ -91,42 +93,49 @@ namespace Language_ru { LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Смещения применены"); LSTR MSG_SELECT_ORIGIN = _UxGT("Выберите ноль"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_LAST_VALUE_SP = _UxGT("Последнее знач. "); + LSTR MSG_LAST_VALUE_SP = _UxGT("Последнее значение "); #else LSTR MSG_LAST_VALUE_SP = _UxGT("Послед. знач. "); #endif #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Преднагрев ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Нагреть ~ ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_END = _UxGT("Нагреть сопло ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_END_E = _UxGT("Нагреть сопло ~") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_ALL = _UxGT("Нагреть всё ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Нагреть стол ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Правка предн. ") PREHEAT_1_LABEL; - - LSTR MSG_PREHEAT_M = _UxGT("Преднагрев $"); + LSTR MSG_PREHEAT_1 = _UxGT("Нагрев ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Нагреть ~ ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Нагреть сопло ") PREHEAT_1_LABEL _UxGT(" сопло"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Нагреть сопло ~") PREHEAT_1_LABEL _UxGT(" сопло ~");; + LSTR MSG_PREHEAT_1_ALL = _UxGT("Нагреть всё ") PREHEAT_1_LABEL _UxGT(" всё"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Нагреть стол ") PREHEAT_1_LABEL _UxGT(" стол"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Правка предн. ") PREHEAT_1_LABEL _UxGT(" наст."); + #ifdef PREHEAT_2_LABEL + LSTR MSG_PREHEAT_2 = _UxGT("Нагрев ") PREHEAT_2_LABEL; + LSTR MSG_PREHEAT_2_SETTINGS = _UxGT("Нагрев ") PREHEAT_2_LABEL _UxGT(" настр."); + #endif + #ifdef PREHEAT_3_LABEL + LSTR MSG_PREHEAT_3 = _UxGT("Нагрев ") PREHEAT_3_LABEL; + LSTR MSG_PREHEAT_3_SETTINGS = _UxGT("Нагрев ") PREHEAT_3_LABEL _UxGT(" настр."); + #endif + LSTR MSG_PREHEAT_M = _UxGT("Нагрев $"); LSTR MSG_PREHEAT_M_H = _UxGT("Нагреть ~ $"); LSTR MSG_PREHEAT_M_END = _UxGT("Нагреть сопло $"); LSTR MSG_PREHEAT_M_END_E = _UxGT("Нагреть сопло ~ $"); LSTR MSG_PREHEAT_M_ALL = _UxGT("Нагреть всё $"); LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Нагреть стол $"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Правка преднаг. $"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Настр.нагрева $"); #endif LSTR MSG_PREHEAT_CUSTOM = _UxGT("Нагрев Свой"); LSTR MSG_COOLDOWN = _UxGT("Охлаждение"); LSTR MSG_CUTTER_FREQUENCY = _UxGT("Частота"); LSTR MSG_LASER_MENU = _UxGT("Управление лазером"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_SPINDLE_MENU = _UxGT("Управление шпинделем"); + LSTR MSG_SPINDLE_MENU = _UxGT("Управлен.шпинделем"); LSTR MSG_LASER_TOGGLE = _UxGT("Переключить лазер"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Переключ.шпиндель"); + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Переключ. шпиндель"); LSTR MSG_SPINDLE_POWER = _UxGT("Мощность шпинделя"); LSTR MSG_LASER_POWER = _UxGT("Мощность лазера"); LSTR MSG_LASER_PULSE_MS = _UxGT("Тестовый импульс мс"); LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Переключить обдув"); LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Переключить вакуум"); #else - LSTR MSG_SPINDLE_MENU = _UxGT("Управление шпинд."); + LSTR MSG_SPINDLE_MENU = _UxGT("Управл. шпинд."); LSTR MSG_LASER_TOGGLE = _UxGT("Переключ.лазер"); LSTR MSG_SPINDLE_TOGGLE = _UxGT("Переключ.шпинд"); LSTR MSG_SPINDLE_POWER = _UxGT("Мощн.шпинделя"); @@ -339,6 +348,11 @@ namespace Language_ru { LSTR MSG_MOVE_1MM = _UxGT("Движение 1мм"); LSTR MSG_MOVE_10MM = _UxGT("Движение 10мм"); LSTR MSG_MOVE_100MM = _UxGT("Движение 100mm"); + LSTR MSG_MOVE_0001IN = _UxGT("Движение 0.001in"); + LSTR MSG_MOVE_001IN = _UxGT("Движение 0.01in"); + LSTR MSG_MOVE_01IN = _UxGT("Движение 0.1in"); + LSTR MSG_MOVE_05IN = _UxGT("Движение 0.5in"); + LSTR MSG_MOVE_1IN = _UxGT("Движение 1.0in"); LSTR MSG_SPEED = _UxGT("Скорость"); LSTR MSG_MESH_Z_OFFSET = _UxGT("Z стола"); LSTR MSG_NOZZLE = _UxGT("Сопло, ") LCD_STR_DEGREE _UxGT("C"); @@ -454,10 +468,11 @@ namespace Language_ru { LSTR MSG_ERR_EEPROM_CRC = _UxGT("Сбой EEPROM: CRC"); LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Сбой EEPROM: размер"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Сбой EEPROM: версия"); + LSTR MSG_ERR_EEPROM_CORRUPT = _UxGT("Сбой EEPROM: данные"); LSTR MSG_SETTINGS_STORED = _UxGT("Параметры сохранены"); LSTR MSG_MEDIA_UPDATE = _UxGT("Обновление прошивки"); LSTR MSG_RESET_PRINTER = _UxGT("Сброс принтера"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT(" Обновить"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT(" Обновить"); LSTR MSG_INFO_SCREEN = _UxGT("Главный экран"); LSTR MSG_PREPARE = _UxGT("Подготовить"); LSTR MSG_TUNE = _UxGT("Настроить"); @@ -777,93 +792,261 @@ namespace Language_ru { LSTR MSG_BAD_PAGE_SPEED = _UxGT("Плохая скор.стран."); #endif - LSTR MSG_EDIT_PASSWORD = _UxGT("Редактировать пароль"); - LSTR MSG_LOGIN_REQUIRED = _UxGT("Нужен логин"); - LSTR MSG_PASSWORD_SETTINGS = _UxGT("Настройки пароля"); - LSTR MSG_ENTER_DIGIT = _UxGT("Введите цифру"); - LSTR MSG_CHANGE_PASSWORD = _UxGT("Смените пароль"); - LSTR MSG_REMOVE_PASSWORD = _UxGT("Удалить пароль"); - LSTR MSG_PASSWORD_SET = _UxGT("Пароль это "); - LSTR MSG_START_OVER = _UxGT("Старт через"); + LSTR MSG_EDIT_PASSWORD = _UxGT("Редактировать пароль"); + LSTR MSG_LOGIN_REQUIRED = _UxGT("Нужен логин"); + LSTR MSG_PASSWORD_SETTINGS = _UxGT("Настройки пароля"); + LSTR MSG_ENTER_DIGIT = _UxGT("Введите цифру"); + LSTR MSG_CHANGE_PASSWORD = _UxGT("Смените пароль"); + LSTR MSG_REMOVE_PASSWORD = _UxGT("Удалить пароль"); + LSTR MSG_PASSWORD_SET = _UxGT("Пароль это "); + LSTR MSG_START_OVER = _UxGT("Старт через"); #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь сохранить!"); + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь сохранить!"); #else - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь сохранить"); + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь сохранить"); #endif - LSTR MSG_PASSWORD_REMOVED = _UxGT("Пароль удалён"); + LSTR MSG_PASSWORD_REMOVED = _UxGT("Пароль удалён"); // // Filament Change screens show up to 3 lines on a 4-line display // ...or up to 2 lines on a 3-line display // - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Парковка...")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Парковка...")); #if LCD_HEIGHT >= 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Нажмите кнопку", "для продолжения", "печати")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Ожидайте начала", "смены филамента")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Вставьте филамент", "и нажмите кнопку", "для продолжения")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_3_LINE("Нажмите кнопку", "для нагрева", "сопла...")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Нагрев сопла", "Ждите...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Ожидайте", "выгрузки", "филамента")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Ожидайте", "загрузки", "филамента")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Ожидайте", "экструзии", "филамента")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Нажмите кнопку", "для завершения", "прочистки филамента")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Ожидайте", "возобновления", "печати")); + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Нажмите кнопку", "для продолжения", "печати")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Ожидайте начала", "смены филамента")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Вставьте филамент", "и нажмите кнопку", "для продолжения")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_3_LINE("Нажмите кнопку", "для нагрева", "сопла...")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Нагрев сопла", "Ждите...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Ожидайте", "выгрузки", "филамента")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Ожидайте", "загрузки", "филамента")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Ожидайте", "экструзии", "филамента")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Нажмите кнопку", "для завершения", "прочистки филамента")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Ожидайте", "возобновления", "печати")); #else - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Продолжить печать")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Ожидайте...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Вставь и нажми")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Нагреть сопло")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Нагрев...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Выгрузка...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Загрузка...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Прочистка...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Завершить прочистку")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Возобновление...")); + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Продолжить печать")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Ожидайте...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Вставь и нажми")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Нагреть сопло")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Нагрев...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Выгрузка...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Загрузка...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Прочистка...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Завершить прочистку")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Возобновление...")); #endif - LSTR MSG_TMC_DRIVERS = _UxGT("Драйвера TMC"); - LSTR MSG_TMC_CURRENT = _UxGT("Ток двигателей"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Гибридный режим"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Чувствительность"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Режим драйвера"); - LSTR MSG_TMC_STEALTH_ENABLED = _UxGT("Тихий режим вкл"); + LSTR MSG_TMC_DRIVERS = _UxGT("Драйвера TMC"); + LSTR MSG_TMC_CURRENT = _UxGT("Ток двигателей"); + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Гибридный режим"); + LSTR MSG_TMC_HOMING_THRS = _UxGT("Чувствительность"); + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Режим драйвера"); + LSTR MSG_TMC_STEALTH_ENABLED = _UxGT("Тихий режим вкл"); - LSTR MSG_SERVICE_RESET = _UxGT("Сброс"); - LSTR MSG_SERVICE_IN = _UxGT(" в:"); - LSTR MSG_BACKLASH = _UxGT("Люфт"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Исправление"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Сглаживание"); + LSTR MSG_SERVICE_RESET = _UxGT("Сброс"); + LSTR MSG_SERVICE_IN = _UxGT(" в:"); + LSTR MSG_BACKLASH = _UxGT("Люфт"); + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Исправление"); + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Сглаживание"); - LSTR MSG_LEVEL_X_AXIS = _UxGT("Выровнять ось X"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Автокалибровка"); - LSTR MSG_HEATER_TIMEOUT = _UxGT("Таймаут нагрева"); - LSTR MSG_REHEAT = _UxGT("Возобновить нагрев"); - LSTR MSG_REHEATING = _UxGT("Нагрев..."); + LSTR MSG_LEVEL_X_AXIS = _UxGT("Выровнять ось X"); + LSTR MSG_AUTO_CALIBRATE = _UxGT("Автокалибровка"); + LSTR MSG_HEATER_TIMEOUT = _UxGT("Таймаут нагрева"); + LSTR MSG_REHEAT = _UxGT("Возобновить нагрев"); + LSTR MSG_REHEATING = _UxGT("Нагрев..."); - LSTR MSG_PROBE_WIZARD = _UxGT("Мастер Z-зонда"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондиров. контр. точки Z"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Движение к точке зондиров."); + LSTR MSG_PROBE_WIZARD = _UxGT("Мастер Z-зонда"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондиров. контр. точки Z"); + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Движение к точке зондиров."); #else - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондир.контр.точки Z"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Движ. к точке зондир."); + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондир.контр.точки Z"); + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Движ.к точке зондир."); #endif - LSTR MSG_SOUND = _UxGT("Звук"); + LSTR MSG_SOUND = _UxGT("Звук"); - LSTR MSG_TOP_LEFT = _UxGT("Верхний левый"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Нижний левый"); - LSTR MSG_TOP_RIGHT = _UxGT("Верхний правый"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Нижний правый"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Калибровка успешна"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Ошибка калибровки"); + LSTR MSG_TOP_LEFT = _UxGT("Верхний левый"); + LSTR MSG_BOTTOM_LEFT = _UxGT("Нижний левый"); + LSTR MSG_TOP_RIGHT = _UxGT("Верхний правый"); + LSTR MSG_BOTTOM_RIGHT = _UxGT("Нижний правый"); + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Калибровка успешна"); + LSTR MSG_CALIBRATION_FAILED = _UxGT("Ошибка калибровки"); - LSTR MSG_DRIVER_BACKWARD = _UxGT(" драйвер наоборот"); + LSTR MSG_DRIVER_BACKWARD = _UxGT(" драйвер наоборот"); - LSTR MSG_SD_CARD = _UxGT("SD Карта"); - LSTR MSG_USB_DISK = _UxGT("USB Диск"); + LSTR MSG_SD_CARD = _UxGT("SD Карта"); + LSTR MSG_USB_DISK = _UxGT("USB Диск"); - LSTR MSG_SHORT_DAY = _UxGT("д"); // One character only - LSTR MSG_SHORT_HOUR = _UxGT("ч"); // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("м"); // One character only + LSTR MSG_SHORT_DAY = _UxGT("д"); // One character only + LSTR MSG_SHORT_HOUR = _UxGT("ч"); // One character only + LSTR MSG_SHORT_MINUTE = _UxGT("м"); // One character only + + LSTR MSG_HIGH = _UxGT("ВЫСОКИЙ"); + LSTR MSG_LOW = _UxGT("НИЗКИЙ"); + LSTR MSG_ERROR = _UxGT("Ошибка"); + LSTR MSG_ENDSTOP_TEST = _UxGT("Тест концевиков"); + LSTR MSG_Z_PROBE = _UxGT("Z-зонд"); + LSTR MSG_HOMING = _UxGT("Парковка"); + LSTR MSG_Z_AFTER_HOME = _UxGT("Z после парковки"); + LSTR MSG_FILAMENT_SET = _UxGT("Настройки филамента"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_FILAMENT_MAN = _UxGT("Управление филаментом"); + #else + LSTR MSG_FILAMENT_MAN = _UxGT("Управл.филаментом"); + #endif + LSTR MSG_MANUAL_LEVELING = _UxGT("Ручное выравнивание"); + LSTR MSG_LEVBED_FL = _UxGT("Передний левый"); + LSTR MSG_LEVBED_FR = _UxGT("Передний правый"); + LSTR MSG_LEVBED_C = _UxGT("Центр"); + LSTR MSG_LEVBED_BL = _UxGT("Задний левый"); + LSTR MSG_LEVBED_BR = _UxGT("Задний правый"); + LSTR MSG_MANUAL_MESH = _UxGT("Сетка вручную"); + LSTR MSG_AUTO_MESH = _UxGT("Сетка автоматически"); + LSTR MSG_ERR_M428_TOO_FAR = _UxGT("Ошибка: слишком далеко!"); + LSTR MSG_TRAMMING_WIZARD = _UxGT("Помощник выравнив."); + LSTR MSG_PREHEAT_HOTEND = _UxGT("Нагреть сопло"); + LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Ручное выравнив."); + LSTR MSG_MESH_VIEWER = _UxGT("Просмотр сетки"); + LSTR MSG_MESH_VIEW = _UxGT("Смотреть сетку"); + LSTR MSG_NO_VALID_MESH = _UxGT("Нет годной сетки"); + LSTR MSG_ACTIVATE_MESH = _UxGT("Включить сетку"); + LSTR MSG_MESH_INSET = _UxGT("Отступы сетки"); + LSTR MSG_MESH_MIN_X = _UxGT("Сетка X минимум"); + LSTR MSG_MESH_MAX_X = _UxGT("Сетка X максимум"); + LSTR MSG_MESH_MIN_Y = _UxGT("Сетка Y минимум"); + LSTR MSG_MESH_MAX_Y = _UxGT("Сетка Y максимум"); + LSTR MSG_MESH_AMAX = _UxGT("Максимальная зона"); + LSTR MSG_MESH_CENTER = _UxGT("Центрировать зону"); + LSTR MSG_MESH_CANCEL = _UxGT("Сетка отменена"); + LSTR MSG_UBL_TILT_MESH = _UxGT("Наколнить сетку"); + LSTR MSG_UBL_TILTING_GRID = _UxGT("Величина наклона"); + LSTR MSG_UBL_MESH_TILTED = _UxGT("Сетка наклонена"); + LSTR MSG_UBL_MESH_FILLED = _UxGT("Попущенные точки заполнены"); + LSTR MSG_UBL_MESH_INVALID = _UxGT("Негодная сетка"); + LSTR MSG_UBL_INVALID_SLOT = _UxGT("Сперва выберите слот сетки"); + LSTR MSG_MESH_ACTIVE = _UxGT("Сетка %i активна"); + LSTR MSG_MOVE_50MM = _UxGT("Двигать 50mm"); + LSTR MSG_LIVE_MOVE = _UxGT("Живое перемещение"); + LSTR MSG_CUTTER = _UxGT("Резак"); + LSTR MSG_PID_CYCLE = _UxGT("Циклы PID"); + LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Автонастройка PID не удалась!"); + LSTR MSG_BAD_HEATER_ID = _UxGT("Неверный экструдер."); + LSTR MSG_TEMP_TOO_HIGH = _UxGT("Слишком высокая температура."); + LSTR MSG_TIMEOUT = _UxGT("Таймаут."); + LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Тест потери тепла"); + LSTR MSG_MPC_HEATING_PAST_200 = _UxGT("Нагрев выше >200C"); + LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Охлаждение до окружающей"); + LSTR MSG_MPC_AUTOTUNE = _UxGT("Автонастройка MPC"); + LSTR MSG_MPC_EDIT = _UxGT("Изменить * MPC"); + LSTR MSG_MPC_POWER = _UxGT("Мощность нагревателя"); + LSTR MSG_MPC_POWER_E = _UxGT("Мощность *"); + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY = _UxGT("Теплоёмкость"); + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Теплоёмк. *"); + LSTR MSG_SENSOR_RESPONSIVENESS = _UxGT("Отклик датчика"); + LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Отклик датч. *"); + LSTR MSG_MPC_AMBIENT_XFER_COEFF = _UxGT("Коэфф.окружения"); + LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Коэфф.окруж *"); + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN = _UxGT("Коэфф.кулера"); + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Коэфф.кулер *"); + LSTR MSG_INPUT_SHAPING = _UxGT("Input Shaping"); + LSTR MSG_SHAPING_ENABLE = _UxGT("Включить шейпинг @"); + LSTR MSG_SHAPING_DISABLE = _UxGT("Выключить шейпинг @"); + LSTR MSG_SHAPING_FREQ = _UxGT("@ частота"); + LSTR MSG_SHAPING_ZETA = _UxGT("@ подавление"); + LSTR MSG_FILAMENT_EN = _UxGT("Филамент *"); + LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Сегментов/сек"); + LSTR MSG_DRAW_MIN_X = _UxGT("Рисовать мин X"); + LSTR MSG_DRAW_MAX_X = _UxGT("Рисовать макс X"); + LSTR MSG_DRAW_MIN_Y = _UxGT("Рисовать мин Y"); + LSTR MSG_DRAW_MAX_Y = _UxGT("Рисовать макс Y"); + LSTR MSG_MAX_BELT_LEN = _UxGT("Макс.длина ремня"); + LSTR MSG_LINEAR_ADVANCE = _UxGT("Linear Advance"); + LSTR MSG_BRIGHTNESS = _UxGT("Яркость LCD"); + LSTR MSG_SCREEN_TIMEOUT = _UxGT("Таймаут LCD (м)"); + LSTR MSG_BRIGHTNESS_OFF = _UxGT("Выкл.подсветку"); + LSTR MSG_INFO_MACHINENAME = _UxGT("Название машины"); + LSTR MSG_INFO_SIZE = _UxGT("Размер"); + LSTR MSG_INFO_FWVERSION = _UxGT("Версия прошивки"); + LSTR MSG_INFO_BUILD = _UxGT("Дата сборки"); + LSTR MSG_BUTTON_CONFIRM = _UxGT("Подтвердить"); + LSTR MSG_BUTTON_CONTINUE = _UxGT("Продолжить"); + LSTR MSG_BUTTON_INFO = _UxGT("Инфо"); + LSTR MSG_BUTTON_LEVEL = _UxGT("Выровнять"); + LSTR MSG_BUTTON_PAUSE = _UxGT("Пауза"); + LSTR MSG_BUTTON_RESUME = _UxGT("Продолжить"); + LSTR MSG_BUTTON_ADVANCED = _UxGT("Расширанные"); + LSTR MSG_BUTTON_SAVE = _UxGT("Сохранить"); + LSTR MSG_BUTTON_PURGE = _UxGT("Прочистить"); + LSTR MSG_PAUSING = _UxGT("Пауза..."); + LSTR MSG_ADVANCED_PAUSE = _UxGT("Расширенная пауза"); + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Продолжить печать"); + LSTR MSG_TURN_OFF = _UxGT("Выключить принтер"); + LSTR MSG_END_LOOPS = _UxGT("Завершить петлю"); + LSTR MSG_STOPPING = _UxGT("Остановка..."); + LSTR MSG_REMAINING_TIME = _UxGT("Осталось"); + LSTR MSG_PRINTER_KILLED = _UxGT("Принтер убит!"); + LSTR MSG_FWRETRACT = _UxGT("Откат принтера"); + LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Вытирание при откате"); + LSTR MSG_PARK_FAILED = _UxGT("Не удалось запарковать"); + LSTR MSG_FILAMENTUNLOAD = _UxGT("Выгрузить филамент"); + LSTR MSG_ATTACH_USB_MEDIA = _UxGT("Монтировать USB"); + LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("Высокая скорость"); + LSTR MSG_MANUAL_PENUP = _UxGT("Поднять перо"); + LSTR MSG_MANUAL_PENDOWN = _UxGT("Опустить перо"); + LSTR MSG_ZPROBE_SETTINGS = _UxGT("Наторойки зонда"); + LSTR MSG_ZPROBE_MARGIN = _UxGT("Отступы зонда"); + LSTR MSG_Z_FEED_RATE = _UxGT("Скорость Z"); + LSTR MSG_ENABLE_HS_MODE = _UxGT("Включить режим ВС"); + LSTR MSG_TEMP_MALFUNCTION = _UxGT("СБОЙ ТЕМПЕРАТУРЫ"); + LSTR MSG_PLEASE_WAIT = _UxGT("Ожидайте..."); + LSTR MSG_PREHEATING = _UxGT("Нагреваю..."); + LSTR MSG_DELTA_CALIBRATION_IN_PROGRESS = _UxGT("Делаю дельта-калибровку"); + LSTR MSG_RESET_STATS = _UxGT("Сбросить статистику печати?"); + LSTR MSG_FAN_SPEED_FAULT = _UxGT("Сбой скорости кулера"); + LSTR MSG_COLORS_GET = _UxGT("Получить цвет"); + LSTR MSG_COLORS_SELECT = _UxGT("Выбрать цвета"); + LSTR MSG_COLORS_APPLIED = _UxGT("Цвета применены"); + LSTR MSG_COLORS_RED = _UxGT("Красный"); + LSTR MSG_COLORS_GREEN = _UxGT("Зелёный"); + LSTR MSG_COLORS_BLUE = _UxGT("Синий"); + LSTR MSG_COLORS_WHITE = _UxGT("Белый"); + LSTR MSG_UI_LANGUAGE = _UxGT("UI Language"); + LSTR MSG_SOUND_ENABLE = _UxGT("Включить звук"); + LSTR MSG_LOCKSCREEN = _UxGT("Блокировать экран"); + LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Принтер заблокирован,"); + LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Крутить для разблокировки."); + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Ждите перезагрузки."); + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Нет носителя."); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Нагрейте сопло."); + LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Сбросить счетчик"); + LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Прочистить или продолжить?"); + LSTR MSG_RUNOUT_ENABLE = _UxGT("Включить датч.филамента"); + LSTR MSG_RUNOUT_ACTIVE = _UxGT("Датч.филам. активен"); + LSTR MSG_INVERT_EXTRUDER = _UxGT("Инвертировать экструдер"); + LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Миню темп. экструдера."); + LSTR MSG_FANCHECK = _UxGT("Пров.тахометра кулера"); + LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Уберите и кликните..."); + LSTR MSG_REHEATDONE = _UxGT("Нагрето"); + LSTR MSG_XATC = _UxGT("Помощник перекоса X"); + LSTR MSG_XATC_DONE = _UxGT("Перекос Х настроен!"); + LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Новое смещение Z-зонда "); + LSTR MSG_HOST_SHUTDOWN = _UxGT("Выключить хост"); + + // did not translate as there is no local terms/slang yet + LSTR MSG_FIXED_TIME_MOTION = _UxGT("Fixed-Time Motion"); + LSTR MSG_FTM_MODE = _UxGT("Motion Mode:"); + LSTR MSG_FTM_ZV = _UxGT("ZV"); + LSTR MSG_FTM_ZVD = _UxGT("ZVD"); + LSTR MSG_FTM_EI = _UxGT("EI"); + LSTR MSG_FTM_2HEI = _UxGT("2HEI"); + LSTR MSG_FTM_3HEI = _UxGT("3HEI"); + LSTR MSG_FTM_MZV = _UxGT("MZV"); + //LSTR MSG_FTM_ULENDO_FBS = _UxGT("Ulendo ФBС"); + //LSTR MSG_FTM_DISCTF = _UxGT("DISCTF"); + LSTR MSG_FTM_DYN_MODE = _UxGT("DF Mode:"); + LSTR MSG_FTM_Z_BASED = _UxGT("Z-based"); + LSTR MSG_FTM_MASS_BASED = _UxGT("Mass-based"); + LSTR MSG_FTM_BASE_FREQ_N = _UxGT("@ Base Freq."); + LSTR MSG_FTM_DFREQ_K_N = _UxGT("@ Dyn. Freq."); } From 6044cb99559e0bb29a697f346fd1507c59ffbba5 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 1 Jun 2023 17:39:08 -0500 Subject: [PATCH 490/659] =?UTF-8?q?=F0=9F=8C=90=20Remove=20unused=20string?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/language/language_de.h | 2 -- Marlin/src/lcd/language/language_en.h | 2 -- Marlin/src/lcd/language/language_it.h | 2 -- Marlin/src/lcd/language/language_ru.h | 2 -- Marlin/src/lcd/language/language_sk.h | 2 -- Marlin/src/lcd/language/language_tr.h | 2 -- 6 files changed, 12 deletions(-) diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h index 2e75c2668b..3f17ca1453 100644 --- a/Marlin/src/lcd/language/language_de.h +++ b/Marlin/src/lcd/language/language_de.h @@ -54,8 +54,6 @@ namespace Language_de { LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Software-Endstopp"); LSTR MSG_MAIN_MENU = _UxGT("Hauptmenü"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Erw. Einstellungen"); - LSTR MSG_TOOLBAR_SETUP = _UxGT("Toolbar Einstellung"); - LSTR MSG_OPTION_DISABLED = _UxGT("Option Deaktiviert"); LSTR MSG_CONFIGURATION = _UxGT("Konfiguration"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Autostart"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Motoren deaktivieren"); // M84 :: Max length 19 characters diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index f74e24e93a..1876b26038 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -69,8 +69,6 @@ namespace Language_en { LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops"); LSTR MSG_MAIN_MENU = _UxGT("Main Menu"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Advanced Settings"); - LSTR MSG_TOOLBAR_SETUP = _UxGT("Toolbar Setup"); - LSTR MSG_OPTION_DISABLED = _UxGT("Option Disabled"); LSTR MSG_CONFIGURATION = _UxGT("Configuration"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Run Auto Files"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Disable Steppers"); diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index a6b48b0d0a..e4f95bf72c 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -64,8 +64,6 @@ namespace Language_it { LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Finecorsa Soft"); LSTR MSG_MAIN_MENU = _UxGT("Menu principale"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Impostaz. avanzate"); - LSTR MSG_TOOLBAR_SETUP = _UxGT("Cnf barra strumenti"); - LSTR MSG_OPTION_DISABLED = _UxGT("Opzione disab."); LSTR MSG_CONFIGURATION = _UxGT("Configurazione"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Esegui files auto"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Disabilita Motori"); diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index 4594a1046f..a8db7852cc 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -52,8 +52,6 @@ namespace Language_ru { LSTR MSG_ADVANCED_SETTINGS = _UxGT("Расшир. настройки"); LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переполн. вызова"); #endif - LSTR MSG_TOOLBAR_SETUP = _UxGT("Настр. инструменты"); - LSTR MSG_OPTION_DISABLED = _UxGT("Опция отключена"); LSTR MSG_MEDIA_READ_ERROR = _UxGT("Ошибка чтения"); LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB диск удалён"); LSTR MSG_MEDIA_USB_FAILED = _UxGT("Ошибка USB диска"); diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h index c7b2cef0d1..cea40d2406 100644 --- a/Marlin/src/lcd/language/language_sk.h +++ b/Marlin/src/lcd/language/language_sk.h @@ -67,8 +67,6 @@ namespace Language_sk { LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft. endstopy"); LSTR MSG_MAIN_MENU = _UxGT("Hlavná ponuka"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Pokročilé nastav."); - LSTR MSG_TOOLBAR_SETUP = _UxGT("Panel nástrojov"); - LSTR MSG_OPTION_DISABLED = _UxGT("Možnosť vypnutá"); LSTR MSG_CONFIGURATION = _UxGT("Konfigurácia"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Auto-štart"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Uvolniť motory"); diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h index 5be21c9c56..63c4185447 100644 --- a/Marlin/src/lcd/language/language_tr.h +++ b/Marlin/src/lcd/language/language_tr.h @@ -57,8 +57,6 @@ namespace Language_tr { LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Yazılımsal Endstops"); LSTR MSG_MAIN_MENU = _UxGT("Ana"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Gelişmiş Ayarlar"); - LSTR MSG_TOOLBAR_SETUP = _UxGT("Araç Çubuğu Kurulumu"); - LSTR MSG_OPTION_DISABLED = _UxGT("Seçenek Devre Dışı"); LSTR MSG_CONFIGURATION = _UxGT("Yapılandırma"); LSTR MSG_RUN_AUTO_FILES = _UxGT("Oto. Başlat"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Motorları Durdur"); From 49134a9467f79037cc6ea643b8ac9634e5f7eb36 Mon Sep 17 00:00:00 2001 From: I3DBeeTech <129617321+I3DBeeTech@users.noreply.github.com> Date: Fri, 2 Jun 2023 04:58:34 +0530 Subject: [PATCH 491/659] =?UTF-8?q?=F0=9F=94=A7=20Update=20LCD=20with=20Ne?= =?UTF-8?q?oPixel=20Contrast=20(#25893)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_post.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 5794a96b8b..92b4463556 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -472,8 +472,8 @@ #elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) #define _LCD_CONTRAST_MIN 120 #define _LCD_CONTRAST_INIT 195 -#elif EITHER(MKS_MINI_12864_V3, BTT_MINI_12864_V1) - #define _LCD_CONTRAST_MIN 255 +#elif ENABLED(FYSETC_MINI_12864_2_1) + #define _LCD_CONTRAST_MIN 230 #define _LCD_CONTRAST_INIT 255 #elif ENABLED(FYSETC_MINI_12864) #define _LCD_CONTRAST_MIN 180 From 2de2185d970ce63dab078bfdd7eb9e49a64a39c2 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 2 Jun 2023 01:38:48 +0000 Subject: [PATCH 492/659] [cron] Bump distribution date (2023-06-02) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 745b738b3b..dbb481833c 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-05-30" +//#define STRING_DISTRIBUTION_DATE "2023-06-02" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 47b8fecd57..e1e4a9a8af 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-05-30" + #define STRING_DISTRIBUTION_DATE "2023-06-02" #endif /** From d9659d3177ff3ffd3530fac2db850a5384b67af9 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 1 Jun 2023 22:58:17 -0500 Subject: [PATCH 493/659] =?UTF-8?q?=F0=9F=93=9D=20M122=20comment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/feature/trinamic/M122.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Marlin/src/gcode/feature/trinamic/M122.cpp b/Marlin/src/gcode/feature/trinamic/M122.cpp index 61786d51ad..a1765bfb43 100644 --- a/Marlin/src/gcode/feature/trinamic/M122.cpp +++ b/Marlin/src/gcode/feature/trinamic/M122.cpp @@ -30,6 +30,14 @@ /** * M122: Debug TMC drivers + * + * I - Flag to re-initialize stepper drivers with current settings. + * X, Y, Z, E - Flags to only report the specified axes. + * + * With TMC_DEBUG: + * V - Report raw register data. Refer to the datasheet to decipher the report. + * S - Flag to enable/disable continuous debug reporting. + * P - Interval between continuous debug reports, in milliseconds. */ void GcodeSuite::M122() { xyze_bool_t print_axis = ARRAY_N_1(LOGICAL_AXES, false); From 500415955051a3295756668b3aae3c383bc1b4bf Mon Sep 17 00:00:00 2001 From: alextrical <35117191+alextrical@users.noreply.github.com> Date: Fri, 2 Jun 2023 17:32:43 +0100 Subject: [PATCH 494/659] =?UTF-8?q?=F0=9F=94=A8=20Clarify=20env=20error=20?= =?UTF-8?q?(#25915)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/share/PlatformIO/scripts/preflight-checks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot/share/PlatformIO/scripts/preflight-checks.py b/buildroot/share/PlatformIO/scripts/preflight-checks.py index 3f7c97af9d..54d7f3db55 100644 --- a/buildroot/share/PlatformIO/scripts/preflight-checks.py +++ b/buildroot/share/PlatformIO/scripts/preflight-checks.py @@ -72,7 +72,7 @@ if pioutil.is_pio_build(): result = check_envs("env:"+build_env, board_envs, config) if not result: - err = "Error: Build environment '%s' is incompatible with %s. Use one of these: %s" % \ + err = "Error: Build environment '%s' is incompatible with %s. Use one of these environments: %s" % \ ( build_env, motherboard, ", ".join([ e[4:] for e in board_envs if e.startswith("env:") ]) ) raise SystemExit(err) From e45eddfd6c4008d82b3aefe4764793b0669dc60a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 2 Jun 2023 12:46:23 -0500 Subject: [PATCH 495/659] =?UTF-8?q?=F0=9F=94=A8=20Fix=20pins=20debugging?= =?UTF-8?q?=20for=20Simulator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/NATIVE_SIM/pinsDebug.cpp | 45 +++++++++++++++++++++++++ Marlin/src/HAL/NATIVE_SIM/pinsDebug.h | 26 ++++---------- 2 files changed, 52 insertions(+), 19 deletions(-) create mode 100644 Marlin/src/HAL/NATIVE_SIM/pinsDebug.cpp diff --git a/Marlin/src/HAL/NATIVE_SIM/pinsDebug.cpp b/Marlin/src/HAL/NATIVE_SIM/pinsDebug.cpp new file mode 100644 index 0000000000..e75826c58a --- /dev/null +++ b/Marlin/src/HAL/NATIVE_SIM/pinsDebug.cpp @@ -0,0 +1,45 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#ifdef __PLAT_NATIVE_SIM__ + +#include "../../inc/MarlinConfig.h" +#include "pinsDebug.h" + +int8_t ADC_pin_mode(pin_t pin) { return -1; } + +int8_t get_pin_mode(const pin_t pin) { return VALID_PIN(pin) ? 0 : -1; } + +bool GET_PINMODE(const pin_t pin) { + const int8_t pin_mode = get_pin_mode(pin); + if (pin_mode == -1 || pin_mode == ADC_pin_mode(pin)) // Invalid pin or active analog pin + return false; + + return (Gpio::getMode(pin) != 0); // Input/output state +} + +bool GET_ARRAY_IS_DIGITAL(const pin_t pin) { + return !IS_ANALOG(pin) || get_pin_mode(pin) != ADC_pin_mode(pin); +} + +void print_port(const pin_t) {} +void pwm_details(const pin_t) {} +bool pwm_status(const pin_t) { return false; } + +#endif diff --git a/Marlin/src/HAL/NATIVE_SIM/pinsDebug.h b/Marlin/src/HAL/NATIVE_SIM/pinsDebug.h index 9c53b4b0d9..28821acbd0 100644 --- a/Marlin/src/HAL/NATIVE_SIM/pinsDebug.h +++ b/Marlin/src/HAL/NATIVE_SIM/pinsDebug.h @@ -36,22 +36,10 @@ #define MULTI_NAME_PAD 16 // space needed to be pretty if not first name assigned to a pin // Active ADC function/mode/code values for PINSEL registers -constexpr int8_t ADC_pin_mode(pin_t pin) { return -1; } - -int8_t get_pin_mode(const pin_t pin) { return VALID_PIN(pin) ? 0 : -1; } - -bool GET_PINMODE(const pin_t pin) { - const int8_t pin_mode = get_pin_mode(pin); - if (pin_mode == -1 || pin_mode == ADC_pin_mode(pin)) // Invalid pin or active analog pin - return false; - - return (Gpio::getMode(pin) != 0); // Input/output state -} - -bool GET_ARRAY_IS_DIGITAL(const pin_t pin) { - return !IS_ANALOG(pin) || get_pin_mode(pin) != ADC_pin_mode(pin); -} - -void print_port(const pin_t) {} -void pwm_details(const pin_t) {} -bool pwm_status(const pin_t) { return false; } +int8_t ADC_pin_mode(pin_t pin); +int8_t get_pin_mode(const pin_t pin); +bool GET_PINMODE(const pin_t pin); +bool GET_ARRAY_IS_DIGITAL(const pin_t pin); +void print_port(const pin_t); +void pwm_details(const pin_t); +bool pwm_status(const pin_t); From bc385122e94d7eda79bdf1573a7c2071c4589da2 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 2 Jun 2023 13:34:13 -0500 Subject: [PATCH 496/659] =?UTF-8?q?=F0=9F=8E=A8=20Lowercase=20method=20/?= =?UTF-8?q?=20data=20member=20names=20(#25914)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/MarlinCore.cpp | 2 +- .../src/lcd/extui/anycubic_vyper/dgus_tft.cpp | 24 +- .../src/lcd/extui/anycubic_vyper/dgus_tft.h | 24 +- Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp | 56 +- Marlin/src/lcd/extui/dgus/DGUSDisplay.h | 46 +- .../src/lcd/extui/dgus/DGUSScreenHandler.cpp | 226 +++--- Marlin/src/lcd/extui/dgus/DGUSScreenHandler.h | 2 +- .../lcd/extui/dgus/DGUSScreenHandlerBase.h | 148 ++-- Marlin/src/lcd/extui/dgus/dgus_extui.cpp | 46 +- .../lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp | 212 +++--- .../lcd/extui/dgus/fysetc/DGUSDisplayDef.h | 58 +- .../extui/dgus/fysetc/DGUSScreenHandler.cpp | 88 +-- .../lcd/extui/dgus/fysetc/DGUSScreenHandler.h | 4 +- .../lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp | 208 +++--- .../lcd/extui/dgus/hiprecy/DGUSDisplayDef.h | 58 +- .../extui/dgus/hiprecy/DGUSScreenHandler.cpp | 88 +-- .../extui/dgus/hiprecy/DGUSScreenHandler.h | 4 +- .../src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp | 312 ++++---- .../src/lcd/extui/dgus/mks/DGUSDisplayDef.h | 60 +- .../lcd/extui/dgus/mks/DGUSScreenHandler.cpp | 664 +++++++++--------- .../lcd/extui/dgus/mks/DGUSScreenHandler.h | 102 +-- .../lcd/extui/dgus/origin/DGUSDisplayDef.cpp | 182 ++--- .../lcd/extui/dgus/origin/DGUSDisplayDef.h | 48 +- .../extui/dgus/origin/DGUSScreenHandler.cpp | 88 +-- .../lcd/extui/dgus/origin/DGUSScreenHandler.h | 4 +- .../lcd/extui/dgus_reloaded/DGUSDisplay.cpp | 78 +- .../src/lcd/extui/dgus_reloaded/DGUSDisplay.h | 62 +- .../lcd/extui/dgus_reloaded/DGUSRxHandler.cpp | 376 +++++----- .../lcd/extui/dgus_reloaded/DGUSRxHandler.h | 90 +-- .../extui/dgus_reloaded/DGUSScreenHandler.cpp | 294 ++++---- .../extui/dgus_reloaded/DGUSScreenHandler.h | 80 +-- .../extui/dgus_reloaded/DGUSSetupHandler.cpp | 64 +- .../lcd/extui/dgus_reloaded/DGUSTxHandler.cpp | 228 +++--- .../lcd/extui/dgus_reloaded/DGUSTxHandler.h | 88 +-- .../config/{DGUS_Screen.h => DGUS_ScreenID.h} | 2 +- .../definition/DGUS_ScreenAddrList.cpp | 50 +- .../definition/DGUS_ScreenAddrList.h | 6 +- .../definition/DGUS_ScreenSetup.cpp | 32 +- .../definition/DGUS_ScreenSetup.h | 4 +- .../dgus_reloaded/definition/DGUS_VPList.cpp | 224 +++--- .../dgus_reloaded/dgus_reloaded_extui.cpp | 44 +- Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp | 92 +-- Marlin/src/lcd/tft/canvas.cpp | 50 +- Marlin/src/lcd/tft/canvas.h | 32 +- Marlin/src/lcd/tft/tft_queue.cpp | 22 +- Marlin/src/lcd/tft/tft_queue.h | 2 +- Marlin/src/libs/duration_t.h | 14 +- 47 files changed, 2345 insertions(+), 2343 deletions(-) rename Marlin/src/lcd/extui/dgus_reloaded/config/{DGUS_Screen.h => DGUS_ScreenID.h} (97%) diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index f1d43e7b60..779dea4ca2 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -393,7 +393,7 @@ void startOrResumeJob() { if (queue.enqueue_one(F("M1001"))) { // Keep trying until it gets queued marlin_state = MF_RUNNING; // Signal to stop trying TERN_(PASSWORD_AFTER_SD_PRINT_END, password.lock_machine()); - TERN_(DGUS_LCD_UI_MKS, ScreenHandler.SDPrintingFinished()); + TERN_(DGUS_LCD_UI_MKS, screen.sdPrintingFinished()); } } diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp index 49609ada32..2ccc3a37f8 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp @@ -160,7 +160,7 @@ namespace Anycubic { tftSendLn(AC_msg_ready); } - void DgusTFT::ParamInit() { + void DgusTFT::paramInit() { #if ACDEBUG(AC_MARLIN) DEBUG_ECHOLNPGM("DgusTFT::ParamInit()"); @@ -668,7 +668,7 @@ namespace Anycubic { #if ENABLED(POWER_LOSS_RECOVERY) - void DgusTFT::PowerLoss() { + void DgusTFT::powerLoss() { // On: 5A A5 05 82 00 82 00 00 // Off: 5A A5 05 82 00 82 00 64 uint8_t data[] = { 0x5A, 0xA5, 0x05, 0x82, 0x00, 0x82, 0x00, uint8_t(recovery.enabled ? 0x00 : 0x64) }; @@ -681,12 +681,12 @@ namespace Anycubic { #endif // POWER_LOSS_RECOVERY - void DgusTFT::HomingStart() { + void DgusTFT::homingStart() { if (!isPrintingFromMedia()) ChangePageOfTFT(PAGE_CHS_HOMING); } - void DgusTFT::HomingComplete() { + void DgusTFT::homingComplete() { if (lcd_info.language == ENG && page_index_last > 120) page_index_last -= 120; @@ -720,17 +720,17 @@ namespace Anycubic { TFTSer.println(); } - void DgusTFT::SendValueToTFT(const uint16_t value, const uint16_t address) { + void DgusTFT::sendValueToTFT(const uint16_t value, const uint16_t address) { uint8_t data[] = { 0x5A, 0xA5, 0x05, 0x82, uint8_t(address >> 8), uint8_t(address & 0xFF), uint8_t(value >> 8), uint8_t(value & 0xFF) }; LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); } - void DgusTFT::RequestValueFromTFT(const uint16_t address) { + void DgusTFT::requestValueFromTFT(const uint16_t address) { uint8_t data[] = { 0x5A, 0xA5, 0x04, 0x83, uint8_t(address >> 8), uint8_t(address & 0xFF), 0x01 }; LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); } - void DgusTFT::SendTxtToTFT(const char *pdata, const uint16_t address) { + void DgusTFT::sendTxtToTFT(const char *pdata, const uint16_t address) { uint8_t data_len = strlen(pdata); uint8_t data[] = { 0x5A, 0xA5, uint8_t(data_len + 5), 0x82, uint8_t(address >> 8), uint8_t(address & 0xFF) }; LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); @@ -738,17 +738,17 @@ namespace Anycubic { TFTSer.write(0xFF); TFTSer.write(0xFF); } - void DgusTFT::SendColorToTFT(const uint16_t color, const uint16_t address) { + void DgusTFT::sendColorToTFT(const uint16_t color, const uint16_t address) { uint8_t data[] = { 0x5A, 0xA5, 0x05, 0x82, uint8_t(address >> 8), uint8_t(address & 0xFF), uint8_t(color >> 8), uint8_t(color & 0xFF) }; LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); } - void DgusTFT::SendReadNumOfTxtToTFT(const uint8_t number, const uint16_t address) { + void DgusTFT::sendReadNumOfTxtToTFT(const uint8_t number, const uint16_t address) { uint8_t data[] = { 0x5A, 0xA5, 0x04, 0x83, uint8_t(address >> 8), uint8_t(address & 0xFF), number }; LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); } - void DgusTFT::ChangePageOfTFT(const uint16_t page_index, const bool no_send/*=false*/) { + void DgusTFT::changePageOfTFT(const uint16_t page_index, const bool no_send/*=false*/) { #if ACDEBUG(AC_MARLIN) DEBUG_ECHOLNPGM("ChangePageOfTFT: ", page_index); #endif @@ -789,7 +789,7 @@ namespace Anycubic { #endif } - void DgusTFT::FakeChangePageOfTFT(const uint16_t page_index) { + void DgusTFT::fakeChangePageOfTFT(const uint16_t page_index) { #if ACDEBUG(AC_MARLIN) if (page_index_saved != page_index_now) DEBUG_ECHOLNPGM("FakeChangePageOfTFT: ", page_index); @@ -797,7 +797,7 @@ namespace Anycubic { ChangePageOfTFT(page_index, true); } - void DgusTFT::LcdAudioSet(const bool audio_on) { + void DgusTFT::lcdAudioSet(const bool audio_on) { // On: 5A A5 07 82 00 80 5A 00 00 1A // Off: 5A A5 07 82 00 80 5A 00 00 12 uint8_t data[] = { 0x5A, 0xA5, 0x07, 0x82, 0x00, 0x80, 0x5A, 0x00, 0x00, uint8_t(audio_on ? 0x1A : 0x12) }; diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h index 747193dd77..63803d209f 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h @@ -357,7 +357,7 @@ namespace Anycubic { static uint16_t page_index_now; static void startup(); - static void ParamInit(); + static void paramInit(); static void idleLoop(); static void printerKilled(FSTR_P,FSTR_P); static void mediaEvent(media_event_t); @@ -365,10 +365,10 @@ namespace Anycubic { static void filamentRunout(); static void confirmationRequest(const char * const); static void statusChange(const char * const); - static void PowerLoss(); + static void powerLoss(); static void powerLossRecovery(); - static void HomingStart(); - static void HomingComplete(); + static void homingStart(); + static void homingComplete(); static void set_descript_color(const uint16_t color, const uint8_t index=lcd_txtbox_index); static void set_language(language_t); @@ -462,14 +462,14 @@ namespace Anycubic { static void panelAction(uint8_t); static void panelProcess(uint8_t); - static void SendValueToTFT(const uint16_t value, const uint16_t address); - static void RequestValueFromTFT(const uint16_t address); - static void SendTxtToTFT(const char *pdata, const uint16_t address); - static void SendColorToTFT(const uint16_t color, const uint16_t address); - static void SendReadNumOfTxtToTFT(const uint8_t number, const uint16_t address); - static void ChangePageOfTFT(const uint16_t page_index, const bool no_send=false); - static void FakeChangePageOfTFT(const uint16_t page_index); - static void LcdAudioSet(const bool audio_on); + static void sendValueToTFT(const uint16_t value, const uint16_t address); + static void requestValueFromTFT(const uint16_t address); + static void sendTxtToTFT(const char *pdata, const uint16_t address); + static void sendColorToTFT(const uint16_t color, const uint16_t address); + static void sendReadNumOfTxtToTFT(const uint8_t number, const uint16_t address); + static void changePageOfTFT(const uint16_t page_index, const bool no_send=false); + static void fakeChangePageOfTFT(const uint16_t page_index); + static void lcdAudioSet(const bool audio_on); private: diff --git a/Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp b/Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp index 876a888918..8e54b20d99 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp +++ b/Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp @@ -44,9 +44,9 @@ #include "DGUSVPVariable.h" #include "DGUSDisplayDef.h" -DGUSDisplay dgusdisplay; +DGUSDisplay dgus; -#ifdef DEBUG_DGUSLCD_COMM +#ifdef DEBUG_DGUS_COMM #define DEBUGLCDCOMM_ECHOPGM DEBUG_ECHOPGM #else #define DEBUGLCDCOMM_ECHOPGM(...) NOOP @@ -63,7 +63,7 @@ constexpr uint8_t DGUS_CMD_READVAR = 0x83; bool dguslcd_local_debug; // = false; #endif -void DGUSDisplay::InitDisplay() { +void DGUSDisplay::initDisplay() { #ifndef LCD_BAUDRATE #define LCD_BAUDRATE 115200 #endif @@ -73,13 +73,13 @@ void DGUSDisplay::InitDisplay() { TERN_(DGUS_LCD_UI_MKS, delay(LOGO_TIME_DELAY)); // Show the logo for a little while } - RequestScreen(TERN(SHOW_BOOTSCREEN, DGUSLCD_SCREEN_BOOT, DGUSLCD_SCREEN_MAIN)); + requestScreen(TERN(SHOW_BOOTSCREEN, DGUS_SCREEN_BOOT, DGUS_SCREEN_MAIN)); } -void DGUSDisplay::WriteVariable(uint16_t adr, const void *values, uint8_t valueslen, bool isstr) { +void DGUSDisplay::writeVariable(uint16_t adr, const void *values, uint8_t valueslen, bool isstr) { const char* myvalues = static_cast(values); bool strend = !myvalues; - WriteHeader(adr, DGUS_CMD_WRITEVAR, valueslen); + writeHeader(adr, DGUS_CMD_WRITEVAR, valueslen); while (valueslen--) { char x; if (!strend) x = *myvalues++; @@ -91,25 +91,25 @@ void DGUSDisplay::WriteVariable(uint16_t adr, const void *values, uint8_t values } } -void DGUSDisplay::WriteVariable(uint16_t adr, uint16_t value) { +void DGUSDisplay::writeVariable(uint16_t adr, uint16_t value) { value = (value & 0xFFU) << 8U | (value >> 8U); - WriteVariable(adr, static_cast(&value), sizeof(uint16_t)); + writeVariable(adr, static_cast(&value), sizeof(uint16_t)); } -void DGUSDisplay::WriteVariable(uint16_t adr, int16_t value) { +void DGUSDisplay::writeVariable(uint16_t adr, int16_t value) { value = (value & 0xFFU) << 8U | (value >> 8U); - WriteVariable(adr, static_cast(&value), sizeof(uint16_t)); + writeVariable(adr, static_cast(&value), sizeof(uint16_t)); } -void DGUSDisplay::WriteVariable(uint16_t adr, uint8_t value) { - WriteVariable(adr, static_cast(&value), sizeof(uint8_t)); +void DGUSDisplay::writeVariable(uint16_t adr, uint8_t value) { + writeVariable(adr, static_cast(&value), sizeof(uint8_t)); } -void DGUSDisplay::WriteVariable(uint16_t adr, int8_t value) { - WriteVariable(adr, static_cast(&value), sizeof(int8_t)); +void DGUSDisplay::writeVariable(uint16_t adr, int8_t value) { + writeVariable(adr, static_cast(&value), sizeof(int8_t)); } -void DGUSDisplay::WriteVariable(uint16_t adr, long value) { +void DGUSDisplay::writeVariable(uint16_t adr, long value) { union { long l; char lb[4]; } endian; char tmp[4]; endian.l = value; @@ -117,13 +117,13 @@ void DGUSDisplay::WriteVariable(uint16_t adr, long value) { tmp[1] = endian.lb[2]; tmp[2] = endian.lb[1]; tmp[3] = endian.lb[0]; - WriteVariable(adr, static_cast(&tmp), sizeof(long)); + writeVariable(adr, static_cast(&tmp), sizeof(long)); } -void DGUSDisplay::WriteVariablePGM(uint16_t adr, const void *values, uint8_t valueslen, bool isstr) { +void DGUSDisplay::writeVariablePGM(uint16_t adr, const void *values, uint8_t valueslen, bool isstr) { const char* myvalues = static_cast(values); bool strend = !myvalues; - WriteHeader(adr, DGUS_CMD_WRITEVAR, valueslen); + writeHeader(adr, DGUS_CMD_WRITEVAR, valueslen); while (valueslen--) { char x; if (!strend) x = pgm_read_byte(myvalues++); @@ -135,7 +135,7 @@ void DGUSDisplay::WriteVariablePGM(uint16_t adr, const void *values, uint8_t val } } -void DGUSDisplay::ProcessRx() { +void DGUSDisplay::processRx() { #if ENABLED(SERIAL_STATS_RX_BUFFER_OVERRUNS) if (!LCD_SERIAL.available() && LCD_SERIAL.buffer_overruns()) { @@ -174,8 +174,8 @@ void DGUSDisplay::ProcessRx() { case DGUS_WAIT_TELEGRAM: // wait for complete datagram to arrive. if (LCD_SERIAL.available() < rx_datagram_len) return; - Initialized = true; // We've talked to it, so we defined it as initialized. - uint8_t command = LCD_SERIAL.read(); + initialized = true; // We've talked to it, so we defined it as initialized. + const uint8_t command = LCD_SERIAL.read(); //DEBUGLCDCOMM_ECHOPGM("# ", command); @@ -220,9 +220,9 @@ void DGUSDisplay::ProcessRx() { } } -size_t DGUSDisplay::GetFreeTxBuffer() { return LCD_SERIAL_TX_BUFFER_FREE(); } +size_t DGUSDisplay::getFreeTxBuffer() { return LCD_SERIAL_TX_BUFFER_FREE(); } -void DGUSDisplay::WriteHeader(uint16_t adr, uint8_t cmd, uint8_t payloadlen) { +void DGUSDisplay::writeHeader(uint16_t adr, uint8_t cmd, uint8_t payloadlen) { LCD_SERIAL.write(DGUS_HEADER1); LCD_SERIAL.write(DGUS_HEADER2); LCD_SERIAL.write(payloadlen + 3); @@ -231,29 +231,29 @@ void DGUSDisplay::WriteHeader(uint16_t adr, uint8_t cmd, uint8_t payloadlen) { LCD_SERIAL.write(adr & 0xFF); } -void DGUSDisplay::WritePGM(const char str[], uint8_t len) { +void DGUSDisplay::writePGM(const char str[], uint8_t len) { while (len--) LCD_SERIAL.write(pgm_read_byte(str++)); } void DGUSDisplay::loop() { - // Protect against recursion. ProcessRx() may indirectly call idle() when injecting G-code commands. + // Protect against recursion. processRx() may indirectly call idle() when injecting G-code commands. if (!no_reentrance) { no_reentrance = true; - ProcessRx(); + processRx(); no_reentrance = false; } } rx_datagram_state_t DGUSDisplay::rx_datagram_state = DGUS_IDLE; uint8_t DGUSDisplay::rx_datagram_len = 0; -bool DGUSDisplay::Initialized = false, +bool DGUSDisplay::initialized = false, DGUSDisplay::no_reentrance = false; // A SW memory barrier, to ensure GCC does not overoptimize loops #define sw_barrier() asm volatile("": : :"memory"); bool populate_VPVar(const uint16_t VP, DGUS_VP_Variable * const ramcopy) { - const DGUS_VP_Variable *pvp = DGUSLCD_FindVPVar(VP); + const DGUS_VP_Variable *pvp = findVPVar(VP); if (!pvp) return false; memcpy_P(ramcopy, pvp, sizeof(DGUS_VP_Variable)); return true; diff --git a/Marlin/src/lcd/extui/dgus/DGUSDisplay.h b/Marlin/src/lcd/extui/dgus/DGUSDisplay.h index c307ff4478..d65c30fc16 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSDisplay.h +++ b/Marlin/src/lcd/extui/dgus/DGUSDisplay.h @@ -30,14 +30,14 @@ #include // size_t //#define DEBUG_DGUSLCD -//#define DEBUG_DGUSLCD_COMM +//#define DEBUG_DGUS_COMM #if HAS_BED_PROBE #include "../../../module/probe.h" #endif #include "DGUSVPVariable.h" -enum DGUSLCD_Screens : uint8_t; +enum DGUS_ScreenID : uint8_t; #define DEBUG_OUT ENABLED(DEBUG_DGUSLCD) #include "../../../core/debug_out.h" @@ -57,25 +57,25 @@ public: DGUSDisplay() = default; - static void InitDisplay(); + static void initDisplay(); // Variable access. - static void WriteVariable(uint16_t adr, const void *values, uint8_t valueslen, bool isstr=false); - static void WriteVariablePGM(uint16_t adr, const void *values, uint8_t valueslen, bool isstr=false); - static void WriteVariable(uint16_t adr, int16_t value); - static void WriteVariable(uint16_t adr, uint16_t value); - static void WriteVariable(uint16_t adr, uint8_t value); - static void WriteVariable(uint16_t adr, int8_t value); - static void WriteVariable(uint16_t adr, long value); + static void writeVariable(uint16_t adr, const void *values, uint8_t valueslen, bool isstr=false); + static void writeVariablePGM(uint16_t adr, const void *values, uint8_t valueslen, bool isstr=false); + static void writeVariable(uint16_t adr, int16_t value); + static void writeVariable(uint16_t adr, uint16_t value); + static void writeVariable(uint16_t adr, uint8_t value); + static void writeVariable(uint16_t adr, int8_t value); + static void writeVariable(uint16_t adr, long value); // Utility functions for bridging ui_api and dbus template - static void SetVariable(DGUS_VP_Variable &var) { - WriteVariable(var.VP, (WireType)Getter(selector)); + static void setVariable(DGUS_VP_Variable &var) { + writeVariable(var.VP, (WireType)Getter(selector)); } template - static void GetVariable(DGUS_VP_Variable &var, void *val_ptr) { + static void getVariable(DGUS_VP_Variable &var, void *val_ptr) { uint16_t newvalue = swap16(*(uint16_t*)val_ptr); Setter(newvalue, selector); } @@ -86,39 +86,39 @@ public: // Force display into another screen. // (And trigger update of containing VPs) // (to implement a pop up message, which may not be nested) - static void RequestScreen(DGUSLCD_Screens screen); + static void requestScreen(const DGUS_ScreenID screenID); // Periodic tasks, eg. Rx-Queue handling. static void loop(); public: // Helper for users of this class to estimate if an interaction would be blocking. - static size_t GetFreeTxBuffer(); + static size_t getFreeTxBuffer(); // Checks two things: Can we confirm the presence of the display and has we initialized it. // (both boils down that the display answered to our chatting) - static bool isInitialized() { return Initialized; } + static bool isInitialized() { return initialized; } private: - static void WriteHeader(uint16_t adr, uint8_t cmd, uint8_t payloadlen); - static void WritePGM(const char str[], uint8_t len); - static void ProcessRx(); + static void writeHeader(uint16_t adr, uint8_t cmd, uint8_t payloadlen); + static void writePGM(const char str[], uint8_t len); + static void processRx(); static rx_datagram_state_t rx_datagram_state; static uint8_t rx_datagram_len; - static bool Initialized, no_reentrance; + static bool initialized, no_reentrance; }; -extern DGUSDisplay dgusdisplay; +extern DGUSDisplay dgus; // compile-time x^y constexpr float cpow(const float x, const int y) { return y == 0 ? 1.0 : x * cpow(x, y - 1); } /// -const uint16_t* DGUSLCD_FindScreenVPMapList(uint8_t screen); +const uint16_t* findScreenVPMapList(uint8_t screen); /// Find the flash address of a DGUS_VP_Variable for the VP. -const DGUS_VP_Variable* DGUSLCD_FindVPVar(const uint16_t vp); +const DGUS_VP_Variable* findVPVar(const uint16_t vp); /// Helper to populate a DGUS_VP_Variable for a given VP. Return false if not found. bool populate_VPVar(const uint16_t VP, DGUS_VP_Variable * const ramcopy); diff --git a/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp index e8abc259a2..d440ea5375 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp @@ -40,15 +40,15 @@ #include "../../../feature/powerloss.h" #endif -DGUSScreenHandlerClass ScreenHandler; +DGUSScreenHandlerClass screen; -uint16_t DGUSScreenHandler::ConfirmVP; +uint16_t DGUSScreenHandler::confirmVP; -DGUSLCD_Screens DGUSScreenHandler::current_screen; -DGUSLCD_Screens DGUSScreenHandler::past_screens[NUM_PAST_SCREENS]; +DGUS_ScreenID DGUSScreenHandler::current_screenID; +DGUS_ScreenID DGUSScreenHandler::past_screenIDs[NUM_PAST_SCREENS]; uint8_t DGUSScreenHandler::update_ptr; uint16_t DGUSScreenHandler::skipVP; -bool DGUSScreenHandler::ScreenComplete; +bool DGUSScreenHandler::screenComplete; void (*DGUSScreenHandler::confirm_action_cb)() = nullptr; @@ -62,42 +62,42 @@ void (*DGUSScreenHandler::confirm_action_cb)() = nullptr; filament_data_t filament_data; #endif -void DGUSScreenHandler::sendinfoscreen(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool l4inflash) { +void DGUSScreenHandler::sendInfoScreen(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool l4inflash) { DGUS_VP_Variable ramcopy; if (populate_VPVar(VP_MSGSTR1, &ramcopy)) { ramcopy.memadr = (void*) line1; - l1inflash ? DGUSScreenHandler::DGUSLCD_SendStringToDisplayPGM(ramcopy) : DGUSScreenHandler::DGUSLCD_SendStringToDisplay(ramcopy); + l1inflash ? DGUSScreenHandler::sendStringToDisplayPGM(ramcopy) : DGUSScreenHandler::sendStringToDisplay(ramcopy); } if (populate_VPVar(VP_MSGSTR2, &ramcopy)) { ramcopy.memadr = (void*) line2; - l2inflash ? DGUSScreenHandler::DGUSLCD_SendStringToDisplayPGM(ramcopy) : DGUSScreenHandler::DGUSLCD_SendStringToDisplay(ramcopy); + l2inflash ? DGUSScreenHandler::sendStringToDisplayPGM(ramcopy) : DGUSScreenHandler::sendStringToDisplay(ramcopy); } if (populate_VPVar(VP_MSGSTR3, &ramcopy)) { ramcopy.memadr = (void*) line3; - l3inflash ? DGUSScreenHandler::DGUSLCD_SendStringToDisplayPGM(ramcopy) : DGUSScreenHandler::DGUSLCD_SendStringToDisplay(ramcopy); + l3inflash ? DGUSScreenHandler::sendStringToDisplayPGM(ramcopy) : DGUSScreenHandler::sendStringToDisplay(ramcopy); } #ifdef VP_MSGSTR4 if (populate_VPVar(VP_MSGSTR4, &ramcopy)) { ramcopy.memadr = (void*) line4; - l4inflash ? DGUSScreenHandler::DGUSLCD_SendStringToDisplayPGM(ramcopy) : DGUSScreenHandler::DGUSLCD_SendStringToDisplay(ramcopy); + l4inflash ? DGUSScreenHandler::sendStringToDisplayPGM(ramcopy) : DGUSScreenHandler::sendStringToDisplay(ramcopy); } #endif } -void DGUSScreenHandler::HandleUserConfirmationPopUp(uint16_t VP, PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1, bool l2, bool l3, bool l4) { - if (current_screen == DGUSLCD_SCREEN_CONFIRM) // Already showing a pop up, so we need to cancel that first. - PopToOldScreen(); +void DGUSScreenHandler::handleUserConfirmationPopUp(uint16_t VP, PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1, bool l2, bool l3, bool l4) { + if (current_screenID == DGUS_SCREEN_CONFIRM) // Already showing a pop up, so we need to cancel that first. + popToOldScreen(); - ConfirmVP = VP; - sendinfoscreen(line1, line2, line3, line4, l1, l2, l3, l4); - GotoScreen(DGUSLCD_SCREEN_CONFIRM); + confirmVP = VP; + sendInfoScreen(line1, line2, line3, line4, l1, l2, l3, l4); + gotoScreen(DGUS_SCREEN_CONFIRM); } -void DGUSScreenHandler::setstatusmessage(const char *msg) { +void DGUSScreenHandler::setStatusMessage(const char *msg) { DGUS_VP_Variable ramcopy; if (populate_VPVar(VP_M117, &ramcopy)) { ramcopy.memadr = (void*) msg; - DGUSLCD_SendStringToDisplay(ramcopy); + sendStringToDisplay(ramcopy); } } @@ -105,46 +105,46 @@ void DGUSScreenHandler::setstatusmessagePGM(PGM_P const msg) { DGUS_VP_Variable ramcopy; if (populate_VPVar(VP_M117, &ramcopy)) { ramcopy.memadr = (void*) msg; - DGUSLCD_SendStringToDisplayPGM(ramcopy); + sendStringToDisplayPGM(ramcopy); } } // Send an 8 bit or 16 bit value to the display. -void DGUSScreenHandler::DGUSLCD_SendWordValueToDisplay(DGUS_VP_Variable &var) { +void DGUSScreenHandler::sendWordValueToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { if (var.size > 1) - dgusdisplay.WriteVariable(var.VP, *(int16_t*)var.memadr); + dgus.writeVariable(var.VP, *(int16_t*)var.memadr); else - dgusdisplay.WriteVariable(var.VP, *(int8_t*)var.memadr); + dgus.writeVariable(var.VP, *(int8_t*)var.memadr); } } // Send an uint8_t between 0 and 255 to the display, but scale to a percentage (0..100) -void DGUSScreenHandler::DGUSLCD_SendPercentageToDisplay(DGUS_VP_Variable &var) { +void DGUSScreenHandler::sendPercentageToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { uint16_t tmp = *(uint8_t *) var.memadr + 1; // +1 -> avoid rounding issues for the display. tmp = map(tmp, 0, 255, 0, 100); - dgusdisplay.WriteVariable(var.VP, tmp); + dgus.writeVariable(var.VP, tmp); } } // Send the current print progress to the display. -void DGUSScreenHandler::DGUSLCD_SendPrintProgressToDisplay(DGUS_VP_Variable &var) { +void DGUSScreenHandler::sendPrintProgressToDisplay(DGUS_VP_Variable &var) { uint16_t tmp = ExtUI::getProgress_percent(); - dgusdisplay.WriteVariable(var.VP, tmp); + dgus.writeVariable(var.VP, tmp); } // Send the current print time to the display. // It is using a hex display for that: It expects BSD coded data in the format xxyyzz -void DGUSScreenHandler::DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var) { +void DGUSScreenHandler::sendPrintTimeToDisplay(DGUS_VP_Variable &var) { duration_t elapsed = print_job_timer.duration(); char buf[32]; elapsed.toString(buf); - dgusdisplay.WriteVariable(VP_PrintTime, buf, var.size, true); + dgus.writeVariable(VP_PrintTime, buf, var.size, true); } // Send an uint8_t between 0 and 100 to a variable scale to 0..255 -void DGUSScreenHandler::DGUSLCD_PercentageToUint8(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::percentageToUint8(DGUS_VP_Variable &var, void *val_ptr) { if (var.memadr) { const uint16_t value = BE16_P(val_ptr); *(uint8_t*)var.memadr = map(constrain(value, 0, 100), 0, 100, 0, 255); @@ -154,21 +154,21 @@ void DGUSScreenHandler::DGUSLCD_PercentageToUint8(DGUS_VP_Variable &var, void *v // Sends a (RAM located) string to the DGUS Display // (Note: The DGUS Display does not clear after the \0, you have to // overwrite the remainings with spaces.// var.size has the display buffer size! -void DGUSScreenHandler::DGUSLCD_SendStringToDisplay(DGUS_VP_Variable &var) { +void DGUSScreenHandler::sendStringToDisplay(DGUS_VP_Variable &var) { char *tmp = (char*) var.memadr; - dgusdisplay.WriteVariable(var.VP, tmp, var.size, true); + dgus.writeVariable(var.VP, tmp, var.size, true); } // Sends a (flash located) string to the DGUS Display // (Note: The DGUS Display does not clear after the \0, you have to // overwrite the remainings with spaces.// var.size has the display buffer size! -void DGUSScreenHandler::DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var) { +void DGUSScreenHandler::sendStringToDisplayPGM(DGUS_VP_Variable &var) { char *tmp = (char*) var.memadr; - dgusdisplay.WriteVariablePGM(var.VP, tmp, var.size, true); + dgus.writeVariablePGM(var.VP, tmp, var.size, true); } #if HAS_PID_HEATING - void DGUSScreenHandler::DGUSLCD_SendTemperaturePID(DGUS_VP_Variable &var) { + void DGUSScreenHandler::sendTemperaturePID(DGUS_VP_Variable &var) { float value = *(float *)var.memadr; value /= 10; float valuesend = 0; @@ -198,7 +198,7 @@ void DGUSScreenHandler::DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var) { endian.i = valuesend; tmp[0] = endian.lb[1]; tmp[1] = endian.lb[0]; - dgusdisplay.WriteVariable(var.VP, tmp, 2); + dgus.writeVariable(var.VP, tmp, 2); } #endif @@ -206,19 +206,19 @@ void DGUSScreenHandler::DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var) { // Send the accumulate print time to the display. // It is using a hex display for that: It expects BSD coded data in the format xxyyzz - void DGUSScreenHandler::DGUSLCD_SendPrintAccTimeToDisplay(DGUS_VP_Variable &var) { + void DGUSScreenHandler::sendPrintAccTimeToDisplay(DGUS_VP_Variable &var) { printStatistics state = print_job_timer.getStats(); char buf[22]; duration_t elapsed = state.printTime; elapsed.toString(buf); - dgusdisplay.WriteVariable(VP_PrintAccTime, buf, var.size, true); + dgus.writeVariable(VP_PrintAccTime, buf, var.size, true); } - void DGUSScreenHandler::DGUSLCD_SendPrintsTotalToDisplay(DGUS_VP_Variable &var) { + void DGUSScreenHandler::sendPrintsTotalToDisplay(DGUS_VP_Variable &var) { printStatistics state = print_job_timer.getStats(); char buf[10]; sprintf_P(buf, PSTR("%u"), state.totalPrints); - dgusdisplay.WriteVariable(VP_PrintsTotal, buf, var.size, true); + dgus.writeVariable(VP_PrintsTotal, buf, var.size, true); } #endif @@ -226,33 +226,33 @@ void DGUSScreenHandler::DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var) { // Send fan status value to the display. #if HAS_FAN - void DGUSScreenHandler::DGUSLCD_SendFanStatusToDisplay(DGUS_VP_Variable &var) { + void DGUSScreenHandler::sendFanStatusToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { uint16_t data_to_send = 0; if (*(uint8_t *) var.memadr) data_to_send = 1; - dgusdisplay.WriteVariable(var.VP, data_to_send); + dgus.writeVariable(var.VP, data_to_send); } } #endif // Send heater status value to the display. -void DGUSScreenHandler::DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var) { +void DGUSScreenHandler::sendHeaterStatusToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { uint16_t data_to_send = 0; if (*(int16_t *) var.memadr) data_to_send = 1; - dgusdisplay.WriteVariable(var.VP, data_to_send); + dgus.writeVariable(var.VP, data_to_send); } } #if ENABLED(DGUS_UI_WAITING) - void DGUSScreenHandler::DGUSLCD_SendWaitingStatusToDisplay(DGUS_VP_Variable &var) { + void DGUSScreenHandler::sendWaitingStatusToDisplay(DGUS_VP_Variable &var) { // In FYSETC UI design there are 10 statuses to loop static uint16_t period = 0; static uint16_t index = 0; if (period++ > DGUS_UI_WAITING_STATUS_PERIOD) { - dgusdisplay.WriteVariable(var.VP, index); + dgus.writeVariable(var.VP, index); if (++index >= DGUS_UI_WAITING_STATUS) index = 0; period = 0; } @@ -262,11 +262,11 @@ void DGUSScreenHandler::DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var) #if HAS_MEDIA - void DGUSScreenHandler::ScreenChangeHookIfSD(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::screenChangeHookIfSD(DGUS_VP_Variable &var, void *val_ptr) { // default action executed when there is a SD card, but not printing if (ExtUI::isMediaInserted() && !ExtUI::isPrintingFromMedia()) { - ScreenChangeHook(var, val_ptr); - dgusdisplay.RequestScreen(current_screen); + screenChangeHook(var, val_ptr); + dgus.requestScreen(current_screenID); return; } @@ -274,22 +274,22 @@ void DGUSScreenHandler::DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var) // This should host e.g a print pause / print abort / print resume dialog. // This concept allows to recycle this hook for other file if (ExtUI::isPrintingFromMedia() && !card.flag.abort_sd_printing) { - GotoScreen(DGUSLCD_SCREEN_SDPRINTMANIPULATION); + gotoScreen(DGUS_SCREEN_SDPRINTMANIPULATION); return; } // Don't let the user in the dark why there is no reaction. if (!ExtUI::isMediaInserted()) { - setstatusmessage(GET_TEXT_F(MSG_NO_MEDIA)); + setStatusMessage(GET_TEXT_F(MSG_NO_MEDIA)); return; } if (card.flag.abort_sd_printing) { - setstatusmessage(GET_TEXT_F(MSG_MEDIA_ABORTING)); + setStatusMessage(GET_TEXT_F(MSG_MEDIA_ABORTING)); return; } } - void DGUSScreenHandler::DGUSLCD_SD_ScrollFilelist(DGUS_VP_Variable& var, void *val_ptr) { + void DGUSScreenHandler::sdScrollFilelist(DGUS_VP_Variable& var, void *val_ptr) { auto old_top = top_file; const int16_t scroll = (int16_t)BE16_P(val_ptr); if (scroll) { @@ -306,38 +306,38 @@ void DGUSScreenHandler::DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var) else if (!filelist.isAtRootDir()) { IF_DISABLED(DGUS_LCD_UI_MKS, filelist.upDir()); top_file = 0; - ForceCompleteUpdate(); + forceCompleteUpdate(); } - if (old_top != top_file) ForceCompleteUpdate(); + if (old_top != top_file) forceCompleteUpdate(); } - void DGUSScreenHandler::DGUSLCD_SD_ReallyAbort(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::sdReallyAbort(DGUS_VP_Variable &var, void *val_ptr) { ExtUI::stopPrint(); - GotoScreen(DGUSLCD_SCREEN_MAIN); + gotoScreen(DGUS_SCREEN_MAIN); } - void DGUSScreenHandler::DGUSLCD_SD_PrintTune(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::sdPrintTune(DGUS_VP_Variable &var, void *val_ptr) { if (!ExtUI::isPrintingFromMedia()) return; // avoid race condition when user stays in this menu and printer finishes. - GotoScreen(DGUSLCD_SCREEN_SDPRINTTUNE); + gotoScreen(DGUS_SCREEN_SDPRINTTUNE); } - void DGUSScreenHandler::SDCardError() { - DGUSScreenHandler::SDCardRemoved(); - sendinfoscreen(F("NOTICE"), nullptr, F("SD card error"), nullptr, true, true, true, true); - SetupConfirmAction(nullptr); - GotoScreen(DGUSLCD_SCREEN_POPUP); + void DGUSScreenHandler::sdCardError() { + DGUSScreenHandler::sdCardRemoved(); + sendInfoScreen(F("NOTICE"), nullptr, F("SD card error"), nullptr, true, true, true, true); + setupConfirmAction(nullptr); + gotoScreen(DGUS_SCREEN_POPUP); } #endif // HAS_MEDIA -void DGUSScreenHandler::ScreenConfirmedOK(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::screenConfirmedOK(DGUS_VP_Variable &var, void *val_ptr) { DGUS_VP_Variable ramcopy; - if (!populate_VPVar(ConfirmVP, &ramcopy)) return; + if (!populate_VPVar(confirmVP, &ramcopy)) return; if (ramcopy.set_by_display_handler) ramcopy.set_by_display_handler(ramcopy, val_ptr); } -const uint16_t* DGUSLCD_FindScreenVPMapList(uint8_t screen) { +const uint16_t* findScreenVPMapList(uint8_t screen) { const uint16_t *ret; const struct VPMapping *map = VPMap; while ((ret = (uint16_t*) pgm_read_ptr(&(map->VPList)))) { @@ -347,7 +347,7 @@ const uint16_t* DGUSLCD_FindScreenVPMapList(uint8_t screen) { return nullptr; } -const DGUS_VP_Variable* DGUSLCD_FindVPVar(const uint16_t vp) { +const DGUS_VP_Variable* findVPVar(const uint16_t vp) { const DGUS_VP_Variable *ret = ListOfVP; do { const uint16_t vpcheck = pgm_read_word(&(ret->VP)); @@ -359,19 +359,19 @@ const DGUS_VP_Variable* DGUSLCD_FindVPVar(const uint16_t vp) { return nullptr; } -void DGUSScreenHandler::ScreenChangeHookIfIdle(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::screenChangeHookIfIdle(DGUS_VP_Variable &var, void *val_ptr) { if (!ExtUI::isPrinting()) { - ScreenChangeHook(var, val_ptr); - dgusdisplay.RequestScreen(current_screen); + screenChangeHook(var, val_ptr); + dgus.requestScreen(current_screenID); } } -void DGUSScreenHandler::HandleAllHeatersOff(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::handleAllHeatersOff(DGUS_VP_Variable &var, void *val_ptr) { thermalManager.disable_all_heaters(); - ForceCompleteUpdate(); // hint to send all data. + forceCompleteUpdate(); // hint to send all data. } -void DGUSScreenHandler::HandleTemperatureChanged(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::handleTemperatureChanged(DGUS_VP_Variable &var, void *val_ptr) { celsius_t newvalue = BE16_P(val_ptr); celsius_t acceptedvalue; @@ -405,7 +405,7 @@ void DGUSScreenHandler::HandleTemperatureChanged(DGUS_VP_Variable &var, void *va skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandler::HandleFlowRateChanged(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::handleFlowRateChanged(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_EXTRUDERS const uint16_t newvalue = BE16_P(val_ptr); uint8_t target_extruder; @@ -424,7 +424,7 @@ void DGUSScreenHandler::HandleFlowRateChanged(DGUS_VP_Variable &var, void *val_p #endif } -void DGUSScreenHandler::HandleManualExtrude(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::handleManualExtrude(DGUS_VP_Variable &var, void *val_ptr) { const int16_t movevalue = BE16_P(val_ptr); float target = movevalue * 0.01f; ExtUI::extruder_t target_extruder; @@ -445,17 +445,17 @@ void DGUSScreenHandler::HandleManualExtrude(DGUS_VP_Variable &var, void *val_ptr } #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) - void DGUSScreenHandler::HandleManualMoveOption(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleManualMoveOption(DGUS_VP_Variable &var, void *val_ptr) { *(uint16_t*)var.memadr = BE16_P(val_ptr); } #endif -void DGUSScreenHandler::HandleMotorLockUnlock(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::handleMotorLockUnlock(DGUS_VP_Variable &var, void *val_ptr) { const int16_t lock = BE16_P(val_ptr); queue.enqueue_one_now(lock ? F("M18") : F("M17")); } -void DGUSScreenHandler::HandleSettings(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::handleSettings(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t value = BE16_P(val_ptr); switch (value) { default: break; @@ -469,7 +469,7 @@ void DGUSScreenHandler::HandleSettings(DGUS_VP_Variable &var, void *val_ptr) { } } -void DGUSScreenHandler::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::handleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t value_raw = BE16_P(val_ptr); const float value = (float)value_raw / 10; ExtUI::axis_t axis; @@ -483,7 +483,7 @@ void DGUSScreenHandler::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandler::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::handleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t value_raw = BE16_P(val_ptr); const float value = (float)value_raw / 10; ExtUI::extruder_t extruder; @@ -501,7 +501,7 @@ void DGUSScreenHandler::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, vo } #if HAS_PID_HEATING - void DGUSScreenHandler::HandlePIDAutotune(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handlePIDAutotune(DGUS_VP_Variable &var, void *val_ptr) { char buf[32] = {0}; switch (var.VP) { @@ -528,14 +528,14 @@ void DGUSScreenHandler::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, vo } #if ENABLED(DGUS_UI_WAITING) - sendinfoscreen(F("PID is autotuning"), F("please wait"), NUL_STR, NUL_STR, true, true, true, true); - GotoScreen(DGUSLCD_SCREEN_WAITING); + sendInfoScreen(F("PID is autotuning"), F("please wait"), NUL_STR, NUL_STR, true, true, true, true); + gotoScreen(DGUS_SCREEN_WAITING); #endif } #endif // HAS_PID_HEATING #if HAS_BED_PROBE - void DGUSScreenHandler::HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr) { const float offset = float(int16_t(BE16_P(val_ptr))) / 100.0f; ExtUI::setZOffset_mm(offset); skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel @@ -544,12 +544,12 @@ void DGUSScreenHandler::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, vo #endif #if HAS_FAN - void DGUSScreenHandler::HandleFanControl(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleFanControl(DGUS_VP_Variable &var, void *val_ptr) { *(uint8_t*)var.memadr = *(uint8_t*)var.memadr > 0 ? 0 : 255; } #endif -void DGUSScreenHandler::HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::handleHeaterControl(DGUS_VP_Variable &var, void *val_ptr) { uint8_t preheat_temp = 0; switch (var.VP) { #if HAS_HOTEND @@ -576,7 +576,7 @@ void DGUSScreenHandler::HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr #if ENABLED(DGUS_PREHEAT_UI) - void DGUSScreenHandler::HandlePreheat(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handlePreheat(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t preheat_option = BE16_P(val_ptr); switch (preheat_option) { default: @@ -592,48 +592,48 @@ void DGUSScreenHandler::HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr } // Go to the preheat screen to show the heating progress - GotoScreen(DGUSLCD_SCREEN_PREHEAT); + gotoScreen(DGUS_SCREEN_PREHEAT); } #endif // DGUS_PREHEAT_UI #if ENABLED(POWER_LOSS_RECOVERY) - void DGUSScreenHandler::HandlePowerLossRecovery(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handlePowerLossRecovery(DGUS_VP_Variable &var, void *val_ptr) { uint16_t value = BE16_P(val_ptr); if (value) { queue.inject(F("M1000")); - dgusdisplay.WriteVariable(VP_SD_Print_Filename, filelist.filename(), 32, true); - GotoScreen(PLR_SCREEN_RECOVER); + dgus.writeVariable(VP_SD_Print_Filename, filelist.filename(), 32, true); + gotoScreen(PLR_SCREEN_RECOVER); } else { recovery.cancel(); - GotoScreen(PLR_SCREEN_CANCEL); + gotoScreen(PLR_SCREEN_CANCEL); } } #endif -void DGUSScreenHandler::UpdateNewScreen(DGUSLCD_Screens newscreen, bool popup) { +void DGUSScreenHandler::updateNewScreen(const DGUS_ScreenID screenID, const bool popup) { if (!popup) { - memmove(&past_screens[1], &past_screens[0], sizeof(past_screens) - 1); - past_screens[0] = current_screen; + memmove(&past_screenIDs[1], &past_screenIDs[0], sizeof(past_screenIDs) - 1); + past_screenIDs[0] = current_screenID; } - current_screen = newscreen; + current_screenID = screenID; skipVP = 0; - ForceCompleteUpdate(); + forceCompleteUpdate(); } -void DGUSScreenHandler::PopToOldScreen() { - GotoScreen(past_screens[0], true); - memmove(&past_screens[0], &past_screens[1], sizeof(past_screens) - 1); - past_screens[sizeof(past_screens) - 1] = DGUSLCD_SCREEN_MAIN; +void DGUSScreenHandler::popToOldScreen() { + gotoScreen(past_screenIDs[0], true); + memmove(&past_screenIDs[0], &past_screenIDs[1], sizeof(past_screenIDs) - 1); + past_screenIDs[sizeof(past_screenIDs) - 1] = DGUS_SCREEN_MAIN; } -void DGUSScreenHandler::UpdateScreenVPData() { - const uint16_t *VPList = DGUSLCD_FindScreenVPMapList(current_screen); +void DGUSScreenHandler::updateScreenVPData() { + const uint16_t *VPList = findScreenVPMapList(current_screenID); if (!VPList) { - ScreenComplete = true; + screenComplete = true; return; // nothing to do, likely a bug or boring screen. } @@ -645,7 +645,7 @@ void DGUSScreenHandler::UpdateScreenVPData() { uint16_t VP = pgm_read_word(VPList); if (!VP) { update_ptr = 0; - ScreenComplete = true; + screenComplete = true; return; // Screen completed. } @@ -656,12 +656,12 @@ void DGUSScreenHandler::UpdateScreenVPData() { uint8_t expected_tx = 6 + rcpy.size; // expected overhead is 6 bytes + payload. // Send the VP to the display, but try to avoid overrunning the Tx Buffer. // But send at least one VP, to avoid getting stalled. - if (rcpy.send_to_display_handler && (!sent_one || expected_tx <= dgusdisplay.GetFreeTxBuffer())) { + if (rcpy.send_to_display_handler && (!sent_one || expected_tx <= dgus.getFreeTxBuffer())) { sent_one = true; rcpy.send_to_display_handler(rcpy); } else { - ScreenComplete = false; + screenComplete = false; return; // please call again! } } @@ -669,14 +669,14 @@ void DGUSScreenHandler::UpdateScreenVPData() { } while (++update_ptr, ++VPList, true); } -void DGUSScreenHandler::GotoScreen(DGUSLCD_Screens screen, bool ispopup) { - dgusdisplay.RequestScreen(screen); - UpdateNewScreen(screen, ispopup); +void DGUSScreenHandler::gotoScreen(const DGUS_ScreenID screenID, const bool popup/*=false*/) { + dgus.requestScreen(screenID); + updateNewScreen(screenID, popup); } -void DGUSDisplay::RequestScreen(DGUSLCD_Screens screen) { - const unsigned char gotoscreen[] = { 0x5A, 0x01, (unsigned char) (screen >> 8U), (unsigned char) (screen & 0xFFU) }; - WriteVariable(0x84, gotoscreen, sizeof(gotoscreen)); +void DGUSDisplay::requestScreen(const DGUS_ScreenID screenID) { + const unsigned char gotoscreen[] = { 0x5A, 0x01, (unsigned char) (screenID >> 8U), (unsigned char) (screenID & 0xFFU) }; + writeVariable(0x84, gotoscreen, sizeof(gotoscreen)); } #endif // HAS_DGUS_LCD_CLASSIC diff --git a/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.h b/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.h index 4486105d3c..cb403dbdad 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.h +++ b/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.h @@ -56,7 +56,7 @@ #include "hiprecy/DGUSScreenHandler.h" #endif -extern DGUSScreenHandlerClass ScreenHandler; +extern DGUSScreenHandlerClass screen; // Helper to define a DGUS_VP_Variable for common use-cases. #define VPHELPER(VPADR, VPADRVAR, RXFPTR, TXFPTR) { \ diff --git a/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h b/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h index 9ebca87be1..e2405bf2ef 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h +++ b/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h @@ -27,7 +27,7 @@ #include "../../../inc/MarlinConfig.h" -enum DGUSLCD_Screens : uint8_t; +enum DGUS_ScreenID : uint8_t; class DGUSScreenHandler { public: @@ -37,150 +37,150 @@ public: // Send all 4 strings that are displayed on the infoscreen, confirmation screen and kill screen // The bools specifying whether the strings are in RAM or FLASH. - static void sendinfoscreen(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash); - static void sendinfoscreen(FSTR_P const line1, FSTR_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash) { - sendinfoscreen(FTOP(line1), FTOP(line2), line3, line4, l1inflash, l2inflash, l3inflash, liinflash); + static void sendInfoScreen(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash); + static void sendInfoScreen(FSTR_P const line1, FSTR_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash) { + sendInfoScreen(FTOP(line1), FTOP(line2), line3, line4, l1inflash, l2inflash, l3inflash, liinflash); } - static void sendinfoscreen(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, FSTR_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash) { - sendinfoscreen(FTOP(line1), FTOP(line2), FTOP(line3), FTOP(line4), l1inflash, l2inflash, l3inflash, liinflash); + static void sendInfoScreen(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, FSTR_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash) { + sendInfoScreen(FTOP(line1), FTOP(line2), FTOP(line3), FTOP(line4), l1inflash, l2inflash, l3inflash, liinflash); } - static void HandleUserConfirmationPopUp(uint16_t ConfirmVP, PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash); + static void handleUserConfirmationPopUp(uint16_t confirmVP, PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash); // "M117" Message -- msg is a RAM ptr. - static void setstatusmessage(const char *msg); + static void setStatusMessage(const char *msg); // The same for messages from Flash static void setstatusmessagePGM(PGM_P const msg); - static void setstatusmessage(FSTR_P const fmsg) { setstatusmessagePGM(FTOP(fmsg)); } + static void setStatusMessage(FSTR_P const fmsg) { setstatusmessagePGM(FTOP(fmsg)); } // Callback for VP "Display wants to change screen on idle printer" - static void ScreenChangeHookIfIdle(DGUS_VP_Variable &var, void *val_ptr); + static void screenChangeHookIfIdle(DGUS_VP_Variable &var, void *val_ptr); // Callback for VP "Screen has been changed" - static void ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr); + static void screenChangeHook(DGUS_VP_Variable &var, void *val_ptr); // Callback for VP "All Heaters Off" - static void HandleAllHeatersOff(DGUS_VP_Variable &var, void *val_ptr); + static void handleAllHeatersOff(DGUS_VP_Variable &var, void *val_ptr); // Hook for "Change this temperature" - static void HandleTemperatureChanged(DGUS_VP_Variable &var, void *val_ptr); + static void handleTemperatureChanged(DGUS_VP_Variable &var, void *val_ptr); // Hook for "Change Flowrate" - static void HandleFlowRateChanged(DGUS_VP_Variable &var, void *val_ptr); + static void handleFlowRateChanged(DGUS_VP_Variable &var, void *val_ptr); #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) // Hook for manual move option - static void HandleManualMoveOption(DGUS_VP_Variable &var, void *val_ptr); + static void handleManualMoveOption(DGUS_VP_Variable &var, void *val_ptr); #endif // Hook for manual move. - static void HandleManualMove(DGUS_VP_Variable &var, void *val_ptr); + static void handleManualMove(DGUS_VP_Variable &var, void *val_ptr); // Hook for manual extrude. - static void HandleManualExtrude(DGUS_VP_Variable &var, void *val_ptr); + static void handleManualExtrude(DGUS_VP_Variable &var, void *val_ptr); // Hook for motor lock and unlook - static void HandleMotorLockUnlock(DGUS_VP_Variable &var, void *val_ptr); + static void handleMotorLockUnlock(DGUS_VP_Variable &var, void *val_ptr); #if ENABLED(POWER_LOSS_RECOVERY) // Hook for power loss recovery. - static void HandlePowerLossRecovery(DGUS_VP_Variable &var, void *val_ptr); + static void handlePowerLossRecovery(DGUS_VP_Variable &var, void *val_ptr); #endif // Hook for settings - static void HandleSettings(DGUS_VP_Variable &var, void *val_ptr); - static void HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr); - static void HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr); + static void handleSettings(DGUS_VP_Variable &var, void *val_ptr); + static void handleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr); + static void handleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr); #if HAS_PID_HEATING // Hook for "Change this temperature PID para" - static void HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr); + static void handleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr); // Hook for PID autotune - static void HandlePIDAutotune(DGUS_VP_Variable &var, void *val_ptr); + static void handlePIDAutotune(DGUS_VP_Variable &var, void *val_ptr); #endif #if HAS_BED_PROBE // Hook for "Change probe offset z" - static void HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr); + static void handleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr); #endif #if ENABLED(BABYSTEPPING) // Hook for live z adjust action - static void HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr); + static void handleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr); #endif #if HAS_FAN // Hook for fan control - static void HandleFanControl(DGUS_VP_Variable &var, void *val_ptr); + static void handleFanControl(DGUS_VP_Variable &var, void *val_ptr); #endif // Hook for heater control - static void HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr); + static void handleHeaterControl(DGUS_VP_Variable &var, void *val_ptr); #if ENABLED(DGUS_PREHEAT_UI) // Hook for preheat - static void HandlePreheat(DGUS_VP_Variable &var, void *val_ptr); + static void handlePreheat(DGUS_VP_Variable &var, void *val_ptr); #endif #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) // Hook for filament load and unload filament option - static void HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr); + static void handleFilamentOption(DGUS_VP_Variable &var, void *val_ptr); // Hook for filament load and unload - static void HandleFilamentLoadUnload(DGUS_VP_Variable &var); + static void handleFilamentLoadUnload(DGUS_VP_Variable &var); #endif #if HAS_MEDIA // Callback for VP "Display wants to change screen when there is a SD card" - static void ScreenChangeHookIfSD(DGUS_VP_Variable &var, void *val_ptr); + static void screenChangeHookIfSD(DGUS_VP_Variable &var, void *val_ptr); // Scroll buttons on the file listing screen. - static void DGUSLCD_SD_ScrollFilelist(DGUS_VP_Variable &var, void *val_ptr); + static void sdScrollFilelist(DGUS_VP_Variable &var, void *val_ptr); // File touched. - static void DGUSLCD_SD_FileSelected(DGUS_VP_Variable &var, void *val_ptr); + static void sdFileSelected(DGUS_VP_Variable &var, void *val_ptr); // start print after confirmation received. - static void DGUSLCD_SD_StartPrint(DGUS_VP_Variable &var, void *val_ptr); + static void sdStartPrint(DGUS_VP_Variable &var, void *val_ptr); // User hit the pause, resume or abort button. - static void DGUSLCD_SD_ResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr); + static void sdResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr); // User confirmed the abort action - static void DGUSLCD_SD_ReallyAbort(DGUS_VP_Variable &var, void *val_ptr); + static void sdReallyAbort(DGUS_VP_Variable &var, void *val_ptr); // User hit the tune button - static void DGUSLCD_SD_PrintTune(DGUS_VP_Variable &var, void *val_ptr); + static void sdPrintTune(DGUS_VP_Variable &var, void *val_ptr); // Send a single filename to the display. - static void DGUSLCD_SD_SendFilename(DGUS_VP_Variable &var); + static void sdSendFilename(DGUS_VP_Variable &var); // Marlin informed us that a new SD has been inserted. - static void SDCardInserted(); + static void sdCardInserted(); // Marlin informed us that the SD Card has been removed(). - static void SDCardRemoved(); + static void sdCardRemoved(); // Marlin informed us about a bad SD Card. - static void SDCardError(); + static void sdCardError(); #endif // OK Button on the Confirm screen. - static void ScreenConfirmedOK(DGUS_VP_Variable &var, void *val_ptr); + static void screenConfirmedOK(DGUS_VP_Variable &var, void *val_ptr); - // Update data after going to a new screen (by display or by GotoScreen) + // Update data after going to a new screen (by display or by gotoScreen) // remember to store the last-displayed screen so it can be restored. // (e.g., for popup messages) - static void UpdateNewScreen(DGUSLCD_Screens newscreen, bool popup=false); + static void updateNewScreen(const DGUS_ScreenID screenID, const bool popup=false); // Recall the remembered screen. - static void PopToOldScreen(); + static void popToOldScreen(); // Make the display show the screen and update all VPs in it. - static void GotoScreen(DGUSLCD_Screens screen, bool ispopup = false); + static void gotoScreen(const DGUS_ScreenID screenID, const bool popup=false); - static void UpdateScreenVPData(); + static void updateScreenVPData(); // Helpers to convert and transfer data to the display. - static void DGUSLCD_SendWordValueToDisplay(DGUS_VP_Variable &var); - static void DGUSLCD_SendStringToDisplay(DGUS_VP_Variable &var); - static void DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var); - static void DGUSLCD_SendTemperaturePID(DGUS_VP_Variable &var); - static void DGUSLCD_SendPercentageToDisplay(DGUS_VP_Variable &var); - static void DGUSLCD_SendPrintProgressToDisplay(DGUS_VP_Variable &var); - static void DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var); + static void sendWordValueToDisplay(DGUS_VP_Variable &var); + static void sendStringToDisplay(DGUS_VP_Variable &var); + static void sendStringToDisplayPGM(DGUS_VP_Variable &var); + static void sendTemperaturePID(DGUS_VP_Variable &var); + static void sendPercentageToDisplay(DGUS_VP_Variable &var); + static void sendPrintProgressToDisplay(DGUS_VP_Variable &var); + static void sendPrintTimeToDisplay(DGUS_VP_Variable &var); #if ENABLED(PRINTCOUNTER) - static void DGUSLCD_SendPrintAccTimeToDisplay(DGUS_VP_Variable &var); - static void DGUSLCD_SendPrintsTotalToDisplay(DGUS_VP_Variable &var); + static void sendPrintAccTimeToDisplay(DGUS_VP_Variable &var); + static void sendPrintsTotalToDisplay(DGUS_VP_Variable &var); #endif #if HAS_FAN - static void DGUSLCD_SendFanStatusToDisplay(DGUS_VP_Variable &var); + static void sendFanStatusToDisplay(DGUS_VP_Variable &var); #endif - static void DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var); + static void sendHeaterStatusToDisplay(DGUS_VP_Variable &var); #if ENABLED(DGUS_UI_WAITING) - static void DGUSLCD_SendWaitingStatusToDisplay(DGUS_VP_Variable &var); + static void sendWaitingStatusToDisplay(DGUS_VP_Variable &var); #endif // Send a value from 0..100 to a variable with a range from 0..255 - static void DGUSLCD_PercentageToUint8(DGUS_VP_Variable &var, void *val_ptr); + static void percentageToUint8(DGUS_VP_Variable &var, void *val_ptr); template - static void DGUSLCD_SetValueDirectly(DGUS_VP_Variable &var, void *val_ptr) { + static void setValueDirectly(DGUS_VP_Variable &var, void *val_ptr) { if (!var.memadr) return; union { unsigned char tmp[sizeof(T)]; T t; } x; unsigned char *ptr = (unsigned char*)val_ptr; @@ -192,11 +192,11 @@ public: // Display will get a 4-byte integer scaled to the number of digits: // Tell the display the number of digits and it cheats by displaying a dot between... template - static void DGUSLCD_SendFloatAsLongValueToDisplay(DGUS_VP_Variable &var) { + static void sendFloatAsLongValueToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { float f = *(float *)var.memadr; f *= cpow(10, decimals); - dgusdisplay.WriteVariable(var.VP, (long)f); + dgus.writeVariable(var.VP, (long)f); } } @@ -204,34 +204,34 @@ public: // Display will get a 2-byte integer scaled to the number of digits: // Tell the display the number of digits and it cheats by displaying a dot between... template - static void DGUSLCD_SendFloatAsIntValueToDisplay(DGUS_VP_Variable &var) { + static void sendFloatAsIntValueToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { float f = *(float *)var.memadr; DEBUG_ECHOLNPAIR_F(" >> ", f, 6); f *= cpow(10, decimals); - dgusdisplay.WriteVariable(var.VP, (int16_t)f); + dgus.writeVariable(var.VP, (int16_t)f); } } // Force an update of all VP on the current screen. - static void ForceCompleteUpdate() { update_ptr = 0; ScreenComplete = false; } + static void forceCompleteUpdate() { update_ptr = 0; screenComplete = false; } // Has all VPs sent to the screen - static bool IsScreenComplete() { return ScreenComplete; } + static bool isScreenComplete() { return screenComplete; } - static DGUSLCD_Screens getCurrentScreen() { return current_screen; } + static DGUS_ScreenID getCurrentScreen() { return current_screenID; } - static void SetupConfirmAction( void (*f)()) { confirm_action_cb = f; } + static void setupConfirmAction( void (*f)()) { confirm_action_cb = f; } protected: - static DGUSLCD_Screens current_screen; //< currently on screen + static DGUS_ScreenID current_screenID; //< currently on screen static constexpr uint8_t NUM_PAST_SCREENS = 4; - static DGUSLCD_Screens past_screens[NUM_PAST_SCREENS]; //< LIFO with past screens for the "back" button. + static DGUS_ScreenID past_screenIDs[NUM_PAST_SCREENS]; //< LIFO with past screens for the "back" button. static uint8_t update_ptr; //< Last sent entry in the VPList for the actual screen. static uint16_t skipVP; //< When updating the screen data, skip this one, because the user is interacting with it. - static bool ScreenComplete; //< All VPs sent to screen? + static bool screenComplete; //< All VPs sent to screen? - static uint16_t ConfirmVP; //< context for confirm screen (VP that will be emulated-sent on "OK"). + static uint16_t confirmVP; //< context for confirm screen (VP that will be emulated-sent on "OK"). #if HAS_MEDIA static int16_t top_file; //< file on top of file chooser diff --git a/Marlin/src/lcd/extui/dgus/dgus_extui.cpp b/Marlin/src/lcd/extui/dgus/dgus_extui.cpp index ede627c3da..30d1c710b2 100644 --- a/Marlin/src/lcd/extui/dgus/dgus_extui.cpp +++ b/Marlin/src/lcd/extui/dgus/dgus_extui.cpp @@ -36,21 +36,21 @@ namespace ExtUI { void onStartup() { - dgusdisplay.InitDisplay(); - ScreenHandler.UpdateScreenVPData(); + dgus.initDisplay(); + screen.updateScreenVPData(); } - void onIdle() { ScreenHandler.loop(); } + void onIdle() { screen.loop(); } void onPrinterKilled(FSTR_P const error, FSTR_P const) { - ScreenHandler.sendinfoscreen(GET_TEXT_F(MSG_HALTED), error, FPSTR(NUL_STR), GET_TEXT_F(MSG_PLEASE_RESET), true, true, true, true); - ScreenHandler.GotoScreen(DGUSLCD_SCREEN_KILL); - while (!ScreenHandler.loop()); // Wait while anything is left to be sent + screen.sendInfoScreen(GET_TEXT_F(MSG_HALTED), error, FPSTR(NUL_STR), GET_TEXT_F(MSG_PLEASE_RESET), true, true, true, true); + screen.gotoScreen(DGUS_SCREEN_KILL); + while (!screen.loop()); // Wait while anything is left to be sent } - void onMediaInserted() { TERN_(HAS_MEDIA, ScreenHandler.SDCardInserted()); } - void onMediaError() { TERN_(HAS_MEDIA, ScreenHandler.SDCardError()); } - void onMediaRemoved() { TERN_(HAS_MEDIA, ScreenHandler.SDCardRemoved()); } + void onMediaInserted() { TERN_(HAS_MEDIA, screen.sdCardInserted()); } + void onMediaError() { TERN_(HAS_MEDIA, screen.sdCardError()); } + void onMediaRemoved() { TERN_(HAS_MEDIA, screen.sdCardRemoved()); } void onPlayTone(const uint16_t frequency, const uint16_t duration) {} void onPrintTimerStarted() {} @@ -60,17 +60,17 @@ namespace ExtUI { void onUserConfirmRequired(const char * const msg) { if (msg) { - ScreenHandler.sendinfoscreen(F("Please confirm."), nullptr, msg, nullptr, true, true, false, true); - ScreenHandler.SetupConfirmAction(setUserConfirmed); - ScreenHandler.GotoScreen(DGUSLCD_SCREEN_POPUP); + screen.sendInfoScreen(F("Please confirm."), nullptr, msg, nullptr, true, true, false, true); + screen.setupConfirmAction(setUserConfirmed); + screen.gotoScreen(DGUS_SCREEN_POPUP); } - else if (ScreenHandler.getCurrentScreen() == DGUSLCD_SCREEN_POPUP) { - ScreenHandler.SetupConfirmAction(nullptr); - ScreenHandler.PopToOldScreen(); + else if (screen.getCurrentScreen() == DGUS_SCREEN_POPUP) { + screen.setupConfirmAction(nullptr); + screen.popToOldScreen(); } } - void onStatusChanged(const char * const msg) { ScreenHandler.setstatusmessage(msg); } + void onStatusChanged(const char * const msg) { screen.setStatusMessage(msg); } void onHomingStart() {} void onHomingDone() {} @@ -136,7 +136,7 @@ namespace ExtUI { } void onPowerLossResume() { // Called on resume from power-loss - IF_DISABLED(DGUS_LCD_UI_MKS, ScreenHandler.GotoScreen(DGUSLCD_SCREEN_POWER_LOSS)); + IF_DISABLED(DGUS_LCD_UI_MKS, screen.gotoScreen(DGUS_SCREEN_POWER_LOSS)); } #endif @@ -145,22 +145,22 @@ namespace ExtUI { // Called for temperature PID tuning result switch (rst) { case PID_STARTED: - ScreenHandler.setstatusmessage(GET_TEXT_F(MSG_PID_AUTOTUNE)); + screen.setStatusMessage(GET_TEXT_F(MSG_PID_AUTOTUNE)); break; case PID_BAD_HEATER_ID: - ScreenHandler.setstatusmessage(GET_TEXT_F(MSG_PID_BAD_HEATER_ID)); + screen.setStatusMessage(GET_TEXT_F(MSG_PID_BAD_HEATER_ID)); break; case PID_TEMP_TOO_HIGH: - ScreenHandler.setstatusmessage(GET_TEXT_F(MSG_PID_TEMP_TOO_HIGH)); + screen.setStatusMessage(GET_TEXT_F(MSG_PID_TEMP_TOO_HIGH)); break; case PID_TUNING_TIMEOUT: - ScreenHandler.setstatusmessage(GET_TEXT_F(MSG_PID_TIMEOUT)); + screen.setStatusMessage(GET_TEXT_F(MSG_PID_TIMEOUT)); break; case PID_DONE: - ScreenHandler.setstatusmessage(GET_TEXT_F(MSG_PID_AUTOTUNE_DONE)); + screen.setStatusMessage(GET_TEXT_F(MSG_PID_AUTOTUNE_DONE)); break; } - ScreenHandler.GotoScreen(DGUSLCD_SCREEN_MAIN); + screen.gotoScreen(DGUS_SCREEN_MAIN); } #endif diff --git a/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp b/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp index 6b670368b6..08d5387cef 100644 --- a/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp +++ b/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp @@ -289,28 +289,28 @@ const uint16_t VPList_Z_Offset[] PROGMEM = { }; const struct VPMapping VPMap[] PROGMEM = { - { DGUSLCD_SCREEN_BOOT, VPList_Boot }, - { DGUSLCD_SCREEN_MAIN, VPList_Main }, - { DGUSLCD_SCREEN_TEMPERATURE, VPList_Temp }, - { DGUSLCD_SCREEN_STATUS, VPList_Status }, - { DGUSLCD_SCREEN_STATUS2, VPList_Status2 }, - { DGUSLCD_SCREEN_PREHEAT, VPList_Preheat }, - { DGUSLCD_SCREEN_MANUALMOVE, VPList_ManualMove }, - { DGUSLCD_SCREEN_MANUALEXTRUDE, VPList_ManualExtrude }, - { DGUSLCD_SCREEN_FILAMENT_HEATING, VPList_Filament_heating }, - { DGUSLCD_SCREEN_FILAMENT_LOADING, VPList_Filament_load_unload }, - { DGUSLCD_SCREEN_FILAMENT_UNLOADING, VPList_Filament_load_unload }, - { DGUSLCD_SCREEN_SDPRINTMANIPULATION, VPList_SD_PrintManipulation }, - { DGUSLCD_SCREEN_SDFILELIST, VPList_SDFileList }, - { DGUSLCD_SCREEN_SDPRINTTUNE, VPList_SDPrintTune }, - { DGUSLCD_SCREEN_WAITING, VPList_PIDTuningWaiting }, - { DGUSLCD_SCREEN_FLC_PREHEAT, VPList_FLCPreheat }, - { DGUSLCD_SCREEN_FLC_PRINTING, VPList_FLCPrinting }, - { DGUSLCD_SCREEN_Z_OFFSET, VPList_Z_Offset }, - { DGUSLCD_SCREEN_STEPPERMM, VPList_StepPerMM }, - { DGUSLCD_SCREEN_PID_E, VPList_PIDE0 }, - { DGUSLCD_SCREEN_PID_BED, VPList_PIDBED }, - { DGUSLCD_SCREEN_INFOS, VPList_Infos }, + { DGUS_SCREEN_BOOT, VPList_Boot }, + { DGUS_SCREEN_MAIN, VPList_Main }, + { DGUS_SCREEN_TEMPERATURE, VPList_Temp }, + { DGUS_SCREEN_STATUS, VPList_Status }, + { DGUS_SCREEN_STATUS2, VPList_Status2 }, + { DGUS_SCREEN_PREHEAT, VPList_Preheat }, + { DGUS_SCREEN_MANUALMOVE, VPList_ManualMove }, + { DGUS_SCREEN_MANUALEXTRUDE, VPList_ManualExtrude }, + { DGUS_SCREEN_FILAMENT_HEATING, VPList_Filament_heating }, + { DGUS_SCREEN_FILAMENT_LOADING, VPList_Filament_load_unload }, + { DGUS_SCREEN_FILAMENT_UNLOADING, VPList_Filament_load_unload }, + { DGUS_SCREEN_SDPRINTMANIPULATION, VPList_SD_PrintManipulation }, + { DGUS_SCREEN_SDFILELIST, VPList_SDFileList }, + { DGUS_SCREEN_SDPRINTTUNE, VPList_SDPrintTune }, + { DGUS_SCREEN_WAITING, VPList_PIDTuningWaiting }, + { DGUS_SCREEN_FLC_PREHEAT, VPList_FLCPreheat }, + { DGUS_SCREEN_FLC_PRINTING, VPList_FLCPrinting }, + { DGUS_SCREEN_Z_OFFSET, VPList_Z_Offset }, + { DGUS_SCREEN_STEPPERMM, VPList_StepPerMM }, + { DGUS_SCREEN_PID_E, VPList_PIDE0 }, + { DGUS_SCREEN_PID_BED, VPList_PIDBED }, + { DGUS_SCREEN_INFOS, VPList_Infos }, { 0 , nullptr } // List is terminated with an nullptr as table entry. }; @@ -318,159 +318,159 @@ const char MarlinVersion[] PROGMEM = SHORT_BUILD_VERSION; const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { // Helper to detect touch events - VPHELPER(VP_SCREENCHANGE, nullptr, ScreenHandler.ScreenChangeHook, nullptr), - VPHELPER(VP_SCREENCHANGE_ASK, nullptr, ScreenHandler.ScreenChangeHookIfIdle, nullptr), + VPHELPER(VP_SCREENCHANGE, nullptr, screen.screenChangeHook, nullptr), + VPHELPER(VP_SCREENCHANGE_ASK, nullptr, screen.screenChangeHookIfIdle, nullptr), #if HAS_MEDIA - VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, ScreenHandler.ScreenChangeHookIfSD, nullptr), + VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, screen.screenChangeHookIfSD, nullptr), #endif - VPHELPER(VP_CONFIRMED, nullptr, ScreenHandler.ScreenConfirmedOK, nullptr), + VPHELPER(VP_CONFIRMED, nullptr, screen.screenConfirmedOK, nullptr), - VPHELPER(VP_TEMP_ALL_OFF, nullptr, ScreenHandler.HandleAllHeatersOff, nullptr), + VPHELPER(VP_TEMP_ALL_OFF, nullptr, screen.handleAllHeatersOff, nullptr), #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) - VPHELPER(VP_MOVE_OPTION, &distanceToMove, ScreenHandler.HandleManualMoveOption, nullptr), + VPHELPER(VP_MOVE_OPTION, &distanceToMove, screen.handleManualMoveOption, nullptr), #endif #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) - VPHELPER(VP_MOVE_X, &distanceToMove, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_MOVE_Y, &distanceToMove, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_MOVE_Z, &distanceToMove, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_HOME_ALL, &distanceToMove, ScreenHandler.HandleManualMove, nullptr), + VPHELPER(VP_MOVE_X, &distanceToMove, screen.handleManualMove, nullptr), + VPHELPER(VP_MOVE_Y, &distanceToMove, screen.handleManualMove, nullptr), + VPHELPER(VP_MOVE_Z, &distanceToMove, screen.handleManualMove, nullptr), + VPHELPER(VP_HOME_ALL, &distanceToMove, screen.handleManualMove, nullptr), #else - VPHELPER(VP_MOVE_X, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_MOVE_Y, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_MOVE_Z, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_HOME_ALL, nullptr, ScreenHandler.HandleManualMove, nullptr), + VPHELPER(VP_MOVE_X, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_MOVE_Y, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_MOVE_Z, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_HOME_ALL, nullptr, screen.handleManualMove, nullptr), #endif - VPHELPER(VP_MOTOR_LOCK_UNLOK, nullptr, ScreenHandler.HandleMotorLockUnlock, nullptr), + VPHELPER(VP_MOTOR_LOCK_UNLOK, nullptr, screen.handleMotorLockUnlock, nullptr), #if ENABLED(POWER_LOSS_RECOVERY) - VPHELPER(VP_POWER_LOSS_RECOVERY, nullptr, ScreenHandler.HandlePowerLossRecovery, nullptr), + VPHELPER(VP_POWER_LOSS_RECOVERY, nullptr, screen.handlePowerLossRecovery, nullptr), #endif - VPHELPER(VP_SETTINGS, nullptr, ScreenHandler.HandleSettings, nullptr), + VPHELPER(VP_SETTINGS, nullptr, screen.handleSettings, nullptr), #if ENABLED(SINGLE_Z_CALIBRATION) - VPHELPER(VP_Z_CALIBRATE, nullptr, ScreenHandler.HandleZCalibration, nullptr), + VPHELPER(VP_Z_CALIBRATE, nullptr, screen.handleZCalibration, nullptr), #endif #if ENABLED(FIRST_LAYER_CAL) - VPHELPER(VP_Z_FIRST_LAYER_CAL, nullptr, ScreenHandler.HandleFirstLayerCal, nullptr), + VPHELPER(VP_Z_FIRST_LAYER_CAL, nullptr, screen.handleFirstLayerCal, nullptr), #endif - { .VP = VP_MARLIN_VERSION, .memadr = (void*)MarlinVersion, .size = VP_MARLIN_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, + { .VP = VP_MARLIN_VERSION, .memadr = (void*)MarlinVersion, .size = VP_MARLIN_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, // M117 LCD String (We don't need the string in memory but "just" push it to the display on demand, hence the nullptr - { .VP = VP_M117, .memadr = nullptr, .size = VP_M117_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay }, + { .VP = VP_M117, .memadr = nullptr, .size = VP_M117_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplay }, // Temperature Data #if HAS_HOTEND - VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<0>), - VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Flowrate_E0, &planner.flow_percentage[ExtUI::extruder_t::E0], ScreenHandler.HandleFlowRateChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_EPos, &destination.e, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_MOVE_E0, nullptr, ScreenHandler.HandleManualExtrude, nullptr), - VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, ScreenHandler.HandleHeaterControl, nullptr), - VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, ScreenHandler.DGUSLCD_SendHeaterStatusToDisplay), + VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, screen.sendFloatAsLongValueToDisplay<0>), + VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, screen.handleTemperatureChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_Flowrate_E0, &planner.flow_percentage[ExtUI::extruder_t::E0], screen.handleFlowRateChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_EPos, &destination.e, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_MOVE_E0, nullptr, screen.handleManualExtrude, nullptr), + VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, screen.handleHeaterControl, nullptr), + VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, screen.sendHeaterStatusToDisplay), #if ENABLED(DGUS_PREHEAT_UI) - VPHELPER(VP_E0_BED_PREHEAT, nullptr, ScreenHandler.HandlePreheat, nullptr), + VPHELPER(VP_E0_BED_PREHEAT, nullptr, screen.handlePreheat, nullptr), #endif #if ENABLED(PIDTEMP) - VPHELPER(VP_E0_PID_P, &thermalManager.temp_hotend[0].pid.Kp, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_E0_PID_I, &thermalManager.temp_hotend[0].pid.Ki, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_E0_PID_D, &thermalManager.temp_hotend[0].pid.Kd, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_PID_AUTOTUNE_E0, nullptr, ScreenHandler.HandlePIDAutotune, nullptr), + VPHELPER(VP_E0_PID_P, &thermalManager.temp_hotend[0].pid.Kp, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_E0_PID_I, &thermalManager.temp_hotend[0].pid.Ki, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_E0_PID_D, &thermalManager.temp_hotend[0].pid.Kd, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_PID_AUTOTUNE_E0, nullptr, screen.handlePIDAutotune, nullptr), #endif #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) - VPHELPER(VP_E0_FILAMENT_LOAD_UNLOAD, nullptr, ScreenHandler.HandleFilamentOption, ScreenHandler.HandleFilamentLoadUnload), + VPHELPER(VP_E0_FILAMENT_LOAD_UNLOAD, nullptr, screen.handleFilamentOption, screen.handleFilamentLoadUnload), #endif #endif #if HAS_MULTI_HOTEND - VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<0>), - VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Flowrate_E1, &planner.flow_percentage[ExtUI::extruder_t::E1], ScreenHandler.HandleFlowRateChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), // ERROR: Flow is per-extruder, not per-hotend - VPHELPER(VP_MOVE_E1, nullptr, ScreenHandler.HandleManualExtrude, nullptr), - VPHELPER(VP_E1_CONTROL, &thermalManager.temp_hotend[1].target, ScreenHandler.HandleHeaterControl, nullptr), - VPHELPER(VP_E1_STATUS, &thermalManager.temp_hotend[1].target, nullptr, ScreenHandler.DGUSLCD_SendHeaterStatusToDisplay), + VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, screen.sendFloatAsLongValueToDisplay<0>), + VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, screen.handleTemperatureChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_Flowrate_E1, &planner.flow_percentage[ExtUI::extruder_t::E1], screen.handleFlowRateChanged, screen.sendWordValueToDisplay), // ERROR: Flow is per-extruder, not per-hotend + VPHELPER(VP_MOVE_E1, nullptr, screen.handleManualExtrude, nullptr), + VPHELPER(VP_E1_CONTROL, &thermalManager.temp_hotend[1].target, screen.handleHeaterControl, nullptr), + VPHELPER(VP_E1_STATUS, &thermalManager.temp_hotend[1].target, nullptr, screen.sendHeaterStatusToDisplay), #if ENABLED(PIDTEMP) - VPHELPER(VP_PID_AUTOTUNE_E1, nullptr, ScreenHandler.HandlePIDAutotune, nullptr), + VPHELPER(VP_PID_AUTOTUNE_E1, nullptr, screen.handlePIDAutotune, nullptr), #endif - VPHELPER(VP_E1_FILAMENT_LOAD_UNLOAD, nullptr, ScreenHandler.HandleFilamentOption, ScreenHandler.HandleFilamentLoadUnload), + VPHELPER(VP_E1_FILAMENT_LOAD_UNLOAD, nullptr, screen.handleFilamentOption, screen.handleFilamentLoadUnload), #endif #if HAS_HEATED_BED - VPHELPER(VP_T_Bed_Is, &thermalManager.temp_bed.celsius, nullptr, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_T_Bed_Set, &thermalManager.temp_bed.target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_BED_CONTROL, &thermalManager.temp_bed.target, ScreenHandler.HandleHeaterControl, nullptr), - VPHELPER(VP_BED_STATUS, &thermalManager.temp_bed.target, nullptr, ScreenHandler.DGUSLCD_SendHeaterStatusToDisplay), + VPHELPER(VP_T_Bed_Is, &thermalManager.temp_bed.celsius, nullptr, screen.sendWordValueToDisplay), + VPHELPER(VP_T_Bed_Set, &thermalManager.temp_bed.target, screen.handleTemperatureChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_BED_CONTROL, &thermalManager.temp_bed.target, screen.handleHeaterControl, nullptr), + VPHELPER(VP_BED_STATUS, &thermalManager.temp_bed.target, nullptr, screen.sendHeaterStatusToDisplay), #if ENABLED(PIDTEMPBED) - VPHELPER(VP_BED_PID_P, &thermalManager.temp_bed.pid.Kp, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_BED_PID_I, &thermalManager.temp_bed.pid.Ki, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_BED_PID_D, &thermalManager.temp_bed.pid.Kd, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_PID_AUTOTUNE_BED, nullptr, ScreenHandler.HandlePIDAutotune, nullptr), + VPHELPER(VP_BED_PID_P, &thermalManager.temp_bed.pid.Kp, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_BED_PID_I, &thermalManager.temp_bed.pid.Ki, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_BED_PID_D, &thermalManager.temp_bed.pid.Kd, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_PID_AUTOTUNE_BED, nullptr, screen.handlePIDAutotune, nullptr), #endif #endif // Fan Data #if HAS_FAN #define FAN_VPHELPER(N) \ - VPHELPER(VP_Fan##N##_Percentage, &thermalManager.fan_speed[N], ScreenHandler.DGUSLCD_PercentageToUint8, ScreenHandler.DGUSLCD_SendPercentageToDisplay), \ - VPHELPER(VP_FAN##N##_CONTROL, &thermalManager.fan_speed[N], ScreenHandler.HandleFanControl, nullptr), \ - VPHELPER(VP_FAN##N##_STATUS, &thermalManager.fan_speed[N], nullptr, ScreenHandler.DGUSLCD_SendFanStatusToDisplay), + VPHELPER(VP_Fan##N##_Percentage, &thermalManager.fan_speed[N], screen.percentageToUint8, screen.sendPercentageToDisplay), \ + VPHELPER(VP_FAN##N##_CONTROL, &thermalManager.fan_speed[N], screen.handleFanControl, nullptr), \ + VPHELPER(VP_FAN##N##_STATUS, &thermalManager.fan_speed[N], nullptr, screen.sendFanStatusToDisplay), REPEAT(FAN_COUNT, FAN_VPHELPER) #endif // Feedrate - VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, ScreenHandler.DGUSLCD_SetValueDirectly, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, screen.setValueDirectly, screen.sendWordValueToDisplay), // Position Data - VPHELPER(VP_XPos, ¤t_position.x, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_YPos, ¤t_position.y, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_ZPos, ¤t_position.z, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_XPos, ¤t_position.x, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_YPos, ¤t_position.y, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_ZPos, ¤t_position.z, nullptr, screen.sendFloatAsLongValueToDisplay<2>), // Print Progress - VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, ScreenHandler.DGUSLCD_SendPrintProgressToDisplay), + VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, screen.sendPrintProgressToDisplay), // Print Time - VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintTimeToDisplay), + VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, screen.sendPrintTimeToDisplay), #if ENABLED(PRINTCOUNTER) - VPHELPER_STR(VP_PrintAccTime, nullptr, VP_PrintAccTime_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintAccTimeToDisplay), - VPHELPER_STR(VP_PrintsTotal, nullptr, VP_PrintsTotal_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintsTotalToDisplay), + VPHELPER_STR(VP_PrintAccTime, nullptr, VP_PrintAccTime_LEN, nullptr, screen.sendPrintAccTimeToDisplay), + VPHELPER_STR(VP_PrintsTotal, nullptr, VP_PrintsTotal_LEN, nullptr, screen.sendPrintsTotalToDisplay), #endif - VPHELPER(VP_X_STEP_PER_MM, &planner.settings.axis_steps_per_mm[X_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), - VPHELPER(VP_Y_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Y_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), - VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_X_STEP_PER_MM, &planner.settings.axis_steps_per_mm[X_AXIS], screen.handleStepPerMMChanged, screen.sendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_Y_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Y_AXIS], screen.handleStepPerMMChanged, screen.sendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], screen.handleStepPerMMChanged, screen.sendFloatAsIntValueToDisplay<1>), #if HAS_EXTRUDERS - VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], ScreenHandler.HandleStepPerMMExtruderChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], screen.handleStepPerMMExtruderChanged, screen.sendFloatAsIntValueToDisplay<1>), #if HAS_MULTI_EXTRUDER - VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], ScreenHandler.HandleStepPerMMExtruderChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], screen.handleStepPerMMExtruderChanged, screen.sendFloatAsIntValueToDisplay<1>), #endif #endif // SDCard File listing. #if HAS_MEDIA - VPHELPER(VP_SD_ScrollEvent, nullptr, ScreenHandler.DGUSLCD_SD_ScrollFilelist, nullptr), - VPHELPER(VP_SD_FileSelected, nullptr, ScreenHandler.DGUSLCD_SD_FileSelected, nullptr), - VPHELPER(VP_SD_FileSelectConfirm, nullptr, ScreenHandler.DGUSLCD_SD_StartPrint, nullptr), - VPHELPER_STR(VP_SD_FileName0, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName1, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName2, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName3, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName4, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER(VP_SD_ResumePauseAbort, nullptr, ScreenHandler.DGUSLCD_SD_ResumePauseAbort, nullptr), - VPHELPER(VP_SD_AbortPrintConfirmed, nullptr, ScreenHandler.DGUSLCD_SD_ReallyAbort, nullptr), - VPHELPER(VP_SD_Print_Setting, nullptr, ScreenHandler.DGUSLCD_SD_PrintTune, nullptr), + VPHELPER(VP_SD_ScrollEvent, nullptr, screen.sdScrollFilelist, nullptr), + VPHELPER(VP_SD_FileSelected, nullptr, screen.sdFileSelected, nullptr), + VPHELPER(VP_SD_FileSelectConfirm, nullptr, screen.sdStartPrint, nullptr), + VPHELPER_STR(VP_SD_FileName0, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName1, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName2, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName3, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName4, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER(VP_SD_ResumePauseAbort, nullptr, screen.sdResumePauseAbort, nullptr), + VPHELPER(VP_SD_AbortPrintConfirmed, nullptr, screen.sdReallyAbort, nullptr), + VPHELPER(VP_SD_Print_Setting, nullptr, screen.sdPrintTune, nullptr), #if HAS_BED_PROBE - VPHELPER(VP_SD_Print_ProbeOffsetZ, &probe.offset.z, ScreenHandler.HandleProbeOffsetZChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<2>), + VPHELPER(VP_SD_Print_ProbeOffsetZ, &probe.offset.z, screen.handleProbeOffsetZChanged, screen.sendFloatAsIntValueToDisplay<2>), #if ENABLED(BABYSTEPPING) - VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, ScreenHandler.HandleLiveAdjustZ, nullptr), + VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, screen.handleLiveAdjustZ, nullptr), #endif #endif #endif #if ENABLED(DGUS_UI_WAITING) - VPHELPER(VP_WAITING_STATUS, nullptr, nullptr, ScreenHandler.DGUSLCD_SendWaitingStatusToDisplay), + VPHELPER(VP_WAITING_STATUS, nullptr, nullptr, screen.sendWaitingStatusToDisplay), #endif // Messages for the User, shared by the popup and the kill screen. They can't be autouploaded as we do not buffer content. - { .VP = VP_MSGSTR1, .memadr = nullptr, .size = VP_MSGSTR1_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, - { .VP = VP_MSGSTR2, .memadr = nullptr, .size = VP_MSGSTR2_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, - { .VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, - { .VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, + { .VP = VP_MSGSTR1, .memadr = nullptr, .size = VP_MSGSTR1_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, + { .VP = VP_MSGSTR2, .memadr = nullptr, .size = VP_MSGSTR2_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, + { .VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, + { .VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, VPHELPER(0, 0, 0, 0) // must be last entry. }; diff --git a/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.h b/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.h index 5deedc0450..70559f9031 100644 --- a/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.h +++ b/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.h @@ -23,35 +23,35 @@ #include "../DGUSDisplayDef.h" -enum DGUSLCD_Screens : uint8_t { - DGUSLCD_SCREEN_BOOT = 0, - DGUSLCD_SCREEN_MAIN = 1, - DGUSLCD_SCREEN_STATUS = 1, - DGUSLCD_SCREEN_STATUS2 = 1, - DGUSLCD_SCREEN_TEMPERATURE = 10, - DGUSLCD_SCREEN_PREHEAT = 18, - DGUSLCD_SCREEN_POWER_LOSS = 100, - DGUSLCD_SCREEN_MANUALMOVE = 192, - DGUSLCD_SCREEN_UTILITY = 120, - DGUSLCD_SCREEN_FILAMENT_HEATING = 146, - DGUSLCD_SCREEN_FILAMENT_LOADING = 148, - DGUSLCD_SCREEN_FILAMENT_UNLOADING = 158, - DGUSLCD_SCREEN_MANUALEXTRUDE = 160, - DGUSLCD_SCREEN_SDFILELIST = 71, - DGUSLCD_SCREEN_SDPRINTMANIPULATION = 73, - DGUSLCD_SCREEN_SDPRINTTUNE = 75, - DGUSLCD_SCREEN_FLC_PREHEAT = 94, - DGUSLCD_SCREEN_FLC_PRINTING = 96, - DGUSLCD_SCREEN_STEPPERMM = 212, - DGUSLCD_SCREEN_PID_E = 214, - DGUSLCD_SCREEN_PID_BED = 218, - DGUSLCD_SCREEN_Z_OFFSET = 222, - DGUSLCD_SCREEN_INFOS = 36, - DGUSLCD_SCREEN_CONFIRM = 240, - DGUSLCD_SCREEN_KILL = 250, ///< Kill Screen. Must always be 250 (to be able to display "Error wrong LCD Version") - DGUSLCD_SCREEN_WAITING = 251, - DGUSLCD_SCREEN_POPUP = 252, ///< special target, popup screen will also return this code to say "return to previous screen" - DGUSLCD_SCREEN_UNUSED = 255 +enum DGUS_ScreenID : uint8_t { + DGUS_SCREEN_BOOT = 0, + DGUS_SCREEN_MAIN = 1, + DGUS_SCREEN_STATUS = 1, + DGUS_SCREEN_STATUS2 = 1, + DGUS_SCREEN_TEMPERATURE = 10, + DGUS_SCREEN_PREHEAT = 18, + DGUS_SCREEN_POWER_LOSS = 100, + DGUS_SCREEN_MANUALMOVE = 192, + DGUS_SCREEN_UTILITY = 120, + DGUS_SCREEN_FILAMENT_HEATING = 146, + DGUS_SCREEN_FILAMENT_LOADING = 148, + DGUS_SCREEN_FILAMENT_UNLOADING = 158, + DGUS_SCREEN_MANUALEXTRUDE = 160, + DGUS_SCREEN_SDFILELIST = 71, + DGUS_SCREEN_SDPRINTMANIPULATION = 73, + DGUS_SCREEN_SDPRINTTUNE = 75, + DGUS_SCREEN_FLC_PREHEAT = 94, + DGUS_SCREEN_FLC_PRINTING = 96, + DGUS_SCREEN_STEPPERMM = 212, + DGUS_SCREEN_PID_E = 214, + DGUS_SCREEN_PID_BED = 218, + DGUS_SCREEN_Z_OFFSET = 222, + DGUS_SCREEN_INFOS = 36, + DGUS_SCREEN_CONFIRM = 240, + DGUS_SCREEN_KILL = 250, ///< Kill Screen. Must always be 250 (to be able to display "Error wrong LCD Version") + DGUS_SCREEN_WAITING = 251, + DGUS_SCREEN_POPUP = 252, ///< special target, popup screen will also return this code to say "return to previous screen" + DGUS_SCREEN_UNUSED = 255 }; // Display Memory layout used (T5UID) diff --git a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp index aa83ee2a4e..768092633e 100644 --- a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp @@ -44,7 +44,7 @@ extern ExtUI::FileList filelist; - void DGUSScreenHandler::DGUSLCD_SD_FileSelected(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::sdFileSelected(DGUS_VP_Variable &var, void *val_ptr) { uint16_t touched_nr = (int16_t)swap16(*(uint16_t*)val_ptr) + top_file; if (touched_nr > filelist.count()) return; if (!filelist.seek(touched_nr)) return; @@ -52,28 +52,28 @@ if (filelist.isDir()) { filelist.changeDir(filelist.filename()); top_file = 0; - ForceCompleteUpdate(); + forceCompleteUpdate(); return; } #if ENABLED(DGUS_PRINT_FILENAME) // Send print filename - dgusdisplay.WriteVariable(VP_SD_Print_Filename, filelist.filename(), VP_SD_FileName_LEN, true); + dgus.writeVariable(VP_SD_Print_Filename, filelist.filename(), VP_SD_FileName_LEN, true); #endif // Setup Confirmation screen file_to_print = touched_nr; - HandleUserConfirmationPopUp(VP_SD_FileSelectConfirm, nullptr, PSTR("Print file"), filelist.filename(), PSTR("from SD Card?"), true, true, false, true); + handleUserConfirmationPopUp(VP_SD_FileSelectConfirm, nullptr, PSTR("Print file"), filelist.filename(), PSTR("from SD Card?"), true, true, false, true); } - void DGUSScreenHandler::DGUSLCD_SD_StartPrint(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::sdStartPrint(DGUS_VP_Variable &var, void *val_ptr) { if (!filelist.seek(file_to_print)) return; ExtUI::printFile(filelist.shortFilename()); - GotoScreen(DGUSLCD_SCREEN_SDPRINTMANIPULATION); + gotoScreen(DGUS_SCREEN_SDPRINTMANIPULATION); } - void DGUSScreenHandler::DGUSLCD_SD_ResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::sdResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr) { if (!ExtUI::isPrintingFromMedia()) return; // avoid race condition when user stays in this menu and printer finishes. switch (swap16(*(uint16_t*)val_ptr)) { @@ -85,19 +85,19 @@ case 1: // Pause - GotoScreen(DGUSLCD_SCREEN_SDPRINTMANIPULATION); + gotoScreen(DGUS_SCREEN_SDPRINTMANIPULATION); if (!ExtUI::isPrintingFromMediaPaused()) { ExtUI::pausePrint(); //ExtUI::mks_pausePrint(); } break; case 2: // Abort - HandleUserConfirmationPopUp(VP_SD_AbortPrintConfirmed, nullptr, PSTR("Abort printing"), filelist.filename(), PSTR("?"), true, true, false, true); + handleUserConfirmationPopUp(VP_SD_AbortPrintConfirmed, nullptr, PSTR("Abort printing"), filelist.filename(), PSTR("?"), true, true, false, true); break; } } - void DGUSScreenHandler::DGUSLCD_SD_SendFilename(DGUS_VP_Variable& var) { + void DGUSScreenHandler::sdSendFilename(DGUS_VP_Variable& var) { uint16_t target_line = (var.VP - VP_SD_FileName0) / VP_SD_FileName_LEN; if (target_line > DGUS_SD_FILESPERSCREEN) return; char tmpfilename[VP_SD_FileName_LEN + 1] = ""; @@ -106,49 +106,49 @@ if (filelist.seek(top_file + target_line)) { snprintf_P(tmpfilename, VP_SD_FileName_LEN, PSTR("%s%c"), filelist.filename(), filelist.isDir() ? '/' : 0); // snprintf_P(tmpfilename, VP_SD_FileName_LEN, PSTR("%s"), filelist.filename()); } - DGUSLCD_SendStringToDisplay(var); + sendStringToDisplay(var); } - void DGUSScreenHandler::SDCardInserted() { + void DGUSScreenHandler::sdCardInserted() { top_file = 0; filelist.refresh(); auto cs = getCurrentScreen(); - if (cs == DGUSLCD_SCREEN_MAIN || cs == DGUSLCD_SCREEN_STATUS) - GotoScreen(DGUSLCD_SCREEN_SDFILELIST); + if (cs == DGUS_SCREEN_MAIN || cs == DGUS_SCREEN_STATUS) + gotoScreen(DGUS_SCREEN_SDFILELIST); } - void DGUSScreenHandler::SDCardRemoved() { - if (current_screen == DGUSLCD_SCREEN_SDFILELIST - || (current_screen == DGUSLCD_SCREEN_CONFIRM && (ConfirmVP == VP_SD_AbortPrintConfirmed || ConfirmVP == VP_SD_FileSelectConfirm)) - || current_screen == DGUSLCD_SCREEN_SDPRINTMANIPULATION - ) GotoScreen(DGUSLCD_SCREEN_MAIN); + void DGUSScreenHandler::sdCardRemoved() { + if (current_screenID == DGUS_SCREEN_SDFILELIST + || (current_screenID == DGUS_SCREEN_CONFIRM && (confirmVP == VP_SD_AbortPrintConfirmed || confirmVP == VP_SD_FileSelectConfirm)) + || current_screenID == DGUS_SCREEN_SDPRINTMANIPULATION + ) gotoScreen(DGUS_SCREEN_MAIN); } #endif // HAS_MEDIA -void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::screenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { uint8_t *tmp = (uint8_t*)val_ptr; // The keycode in target is coded as , so 0x0100A means - // from screen 1 (main) to 10 (temperature). DGUSLCD_SCREEN_POPUP is special, + // from screen 1 (main) to 10 (temperature). DGUS_SCREEN_POPUP is special, // meaning "return to previous screen" - DGUSLCD_Screens target = (DGUSLCD_Screens)tmp[1]; + DGUS_ScreenID target = (DGUS_ScreenID)tmp[1]; - if (target == DGUSLCD_SCREEN_POPUP) { + if (target == DGUS_SCREEN_POPUP) { // Special handling for popup is to return to previous menu - if (current_screen == DGUSLCD_SCREEN_POPUP && confirm_action_cb) confirm_action_cb(); - PopToOldScreen(); + if (current_screenID == DGUS_SCREEN_POPUP && confirm_action_cb) confirm_action_cb(); + popToOldScreen(); return; } - UpdateNewScreen(target); + updateNewScreen(target); #ifdef DEBUG_DGUSLCD - if (!DGUSLCD_FindScreenVPMapList(target)) DEBUG_ECHOLNPGM("WARNING: No screen Mapping found for ", target); + if (!findScreenVPMapList(target)) DEBUG_ECHOLNPGM("WARNING: No screen Mapping found for ", target); #endif } -void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::handleManualMove(DGUS_VP_Variable &var, void *val_ptr) { int16_t movevalue = swap16(*(uint16_t*)val_ptr); #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) if (movevalue) { @@ -196,7 +196,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { char buf[6] = "G28 X"; buf[4] = axiscode; queue.enqueue_one_now(buf); - ForceCompleteUpdate(); + forceCompleteUpdate(); return; } else { @@ -219,14 +219,14 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { if (!old_relative_mode) queue.enqueue_now(F("G90")); } - ForceCompleteUpdate(); + forceCompleteUpdate(); cannotmove: return; } #if HAS_PID_HEATING - void DGUSScreenHandler::HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr) { uint16_t rawvalue = swap16(*(uint16_t*)val_ptr); float value = (float)rawvalue / 10; float newvalue = 0; @@ -257,17 +257,17 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #endif // HAS_PID_HEATING #if ENABLED(BABYSTEPPING) - void DGUSScreenHandler::HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr) { int16_t flag = swap16(*(uint16_t*)val_ptr), steps = flag ? -20 : 20; ExtUI::smartAdjustAxis_steps(steps, ExtUI::axis_t::Z, true); - ForceCompleteUpdate(); + forceCompleteUpdate(); } #endif #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) - void DGUSScreenHandler::HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleFilamentOption(DGUS_VP_Variable &var, void *val_ptr) { uint8_t e_temp = 0; filament_data.heated = false; uint16_t preheat_option = swap16(*(uint16_t*)val_ptr); @@ -315,7 +315,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E1); #endif #endif - GotoScreen(DGUSLCD_SCREEN_UTILITY); + gotoScreen(DGUS_SCREEN_UTILITY); } else { // Go to the preheat screen to show the heating progress switch (var.VP) { @@ -333,11 +333,11 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { break; #endif } - GotoScreen(DGUSLCD_SCREEN_FILAMENT_HEATING); + gotoScreen(DGUS_SCREEN_FILAMENT_HEATING); } } - void DGUSScreenHandler::HandleFilamentLoadUnload(DGUS_VP_Variable &var) { + void DGUSScreenHandler::handleFilamentLoadUnload(DGUS_VP_Variable &var) { if (filament_data.action <= 0) return; // If we close to the target temperature, we can start load or unload the filament @@ -347,14 +347,14 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { if (filament_data.action == 1) { // load filament if (!filament_data.heated) { - //GotoScreen(DGUSLCD_SCREEN_FILAMENT_LOADING); + //gotoScreen(DGUS_SCREEN_FILAMENT_LOADING); filament_data.heated = true; } movevalue = ExtUI::getAxisPosition_mm(filament_data.extruder) + movevalue; } else { // unload filament if (!filament_data.heated) { - GotoScreen(DGUSLCD_SCREEN_FILAMENT_UNLOADING); + gotoScreen(DGUS_SCREEN_FILAMENT_UNLOADING); filament_data.heated = true; } // Before unloading extrude to prevent jamming @@ -372,14 +372,14 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #endif // DGUS_FILAMENT_LOADUNLOAD bool DGUSScreenHandler::loop() { - dgusdisplay.loop(); + dgus.loop(); const millis_t ms = millis(); static millis_t next_event_ms = 0; - if (!IsScreenComplete() || ELAPSED(ms, next_event_ms)) { + if (!isScreenComplete() || ELAPSED(ms, next_event_ms)) { next_event_ms = ms + DGUS_UPDATE_INTERVAL_MS; - UpdateScreenVPData(); + updateScreenVPData(); } #if ENABLED(SHOW_BOOTSCREEN) @@ -390,11 +390,11 @@ bool DGUSScreenHandler::loop() { if (!booted && ELAPSED(ms, BOOTSCREEN_TIMEOUT)) { booted = true; - GotoScreen(TERN0(POWER_LOSS_RECOVERY, recovery.valid()) ? DGUSLCD_SCREEN_POWER_LOSS : DGUSLCD_SCREEN_MAIN); + gotoScreen(TERN0(POWER_LOSS_RECOVERY, recovery.valid()) ? DGUS_SCREEN_POWER_LOSS : DGUS_SCREEN_MAIN); } #endif - return IsScreenComplete(); + return isScreenComplete(); } #endif // DGUS_LCD_UI_FYSETC diff --git a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.h b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.h index 73e3527d7e..16c5dec408 100644 --- a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.h +++ b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.h @@ -26,6 +26,6 @@ typedef DGUSScreenHandler DGUSScreenHandlerClass; #if ENABLED(POWER_LOSS_RECOVERY) - #define PLR_SCREEN_RECOVER DGUSLCD_SCREEN_SDPRINTMANIPULATION - #define PLR_SCREEN_CANCEL DGUSLCD_SCREEN_STATUS + #define PLR_SCREEN_RECOVER DGUS_SCREEN_SDPRINTMANIPULATION + #define PLR_SCREEN_CANCEL DGUS_SCREEN_STATUS #endif diff --git a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp index c278179e3f..d99a4fe4f6 100644 --- a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp +++ b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp @@ -286,28 +286,28 @@ const uint16_t VPList_Z_Offset[] PROGMEM = { }; const struct VPMapping VPMap[] PROGMEM = { - { DGUSLCD_SCREEN_BOOT, VPList_Boot }, - { DGUSLCD_SCREEN_MAIN, VPList_Main }, - { DGUSLCD_SCREEN_TEMPERATURE, VPList_Temp }, - { DGUSLCD_SCREEN_STATUS, VPList_Status }, - { DGUSLCD_SCREEN_STATUS2, VPList_Status2 }, - { DGUSLCD_SCREEN_PREHEAT, VPList_Preheat }, - { DGUSLCD_SCREEN_MANUALMOVE, VPList_ManualMove }, - { DGUSLCD_SCREEN_Z_OFFSET, VPList_Z_Offset }, - { DGUSLCD_SCREEN_MANUALEXTRUDE, VPList_ManualExtrude }, - { DGUSLCD_SCREEN_FILAMENT_HEATING, VPList_Filament_heating }, - { DGUSLCD_SCREEN_FILAMENT_LOADING, VPList_Filament_load_unload }, - { DGUSLCD_SCREEN_FILAMENT_UNLOADING, VPList_Filament_load_unload }, - { DGUSLCD_SCREEN_SDPRINTMANIPULATION, VPList_SD_PrintManipulation }, - { DGUSLCD_SCREEN_SDFILELIST, VPList_SDFileList }, - { DGUSLCD_SCREEN_SDPRINTTUNE, VPList_SDPrintTune }, - { DGUSLCD_SCREEN_WAITING, VPList_PIDTuningWaiting }, - { DGUSLCD_SCREEN_FLC_PREHEAT, VPList_FLCPreheat }, - { DGUSLCD_SCREEN_FLC_PRINTING, VPList_FLCPrinting }, - { DGUSLCD_SCREEN_STEPPERMM, VPList_StepPerMM }, - { DGUSLCD_SCREEN_PID_E, VPList_PIDE0 }, - { DGUSLCD_SCREEN_PID_BED, VPList_PIDBED }, - { DGUSLCD_SCREEN_INFOS, VPList_Infos }, + { DGUS_SCREEN_BOOT, VPList_Boot }, + { DGUS_SCREEN_MAIN, VPList_Main }, + { DGUS_SCREEN_TEMPERATURE, VPList_Temp }, + { DGUS_SCREEN_STATUS, VPList_Status }, + { DGUS_SCREEN_STATUS2, VPList_Status2 }, + { DGUS_SCREEN_PREHEAT, VPList_Preheat }, + { DGUS_SCREEN_MANUALMOVE, VPList_ManualMove }, + { DGUS_SCREEN_Z_OFFSET, VPList_Z_Offset }, + { DGUS_SCREEN_MANUALEXTRUDE, VPList_ManualExtrude }, + { DGUS_SCREEN_FILAMENT_HEATING, VPList_Filament_heating }, + { DGUS_SCREEN_FILAMENT_LOADING, VPList_Filament_load_unload }, + { DGUS_SCREEN_FILAMENT_UNLOADING, VPList_Filament_load_unload }, + { DGUS_SCREEN_SDPRINTMANIPULATION, VPList_SD_PrintManipulation }, + { DGUS_SCREEN_SDFILELIST, VPList_SDFileList }, + { DGUS_SCREEN_SDPRINTTUNE, VPList_SDPrintTune }, + { DGUS_SCREEN_WAITING, VPList_PIDTuningWaiting }, + { DGUS_SCREEN_FLC_PREHEAT, VPList_FLCPreheat }, + { DGUS_SCREEN_FLC_PRINTING, VPList_FLCPrinting }, + { DGUS_SCREEN_STEPPERMM, VPList_StepPerMM }, + { DGUS_SCREEN_PID_E, VPList_PIDE0 }, + { DGUS_SCREEN_PID_BED, VPList_PIDBED }, + { DGUS_SCREEN_INFOS, VPList_Infos }, { 0 , nullptr } // List is terminated with an nullptr as table entry. }; @@ -315,155 +315,155 @@ const char MarlinVersion[] PROGMEM = SHORT_BUILD_VERSION; const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { // Helper to detect touch events - VPHELPER(VP_SCREENCHANGE, nullptr, ScreenHandler.ScreenChangeHook, nullptr), - VPHELPER(VP_SCREENCHANGE_ASK, nullptr, ScreenHandler.ScreenChangeHookIfIdle, nullptr), + VPHELPER(VP_SCREENCHANGE, nullptr, screen.screenChangeHook, nullptr), + VPHELPER(VP_SCREENCHANGE_ASK, nullptr, screen.screenChangeHookIfIdle, nullptr), #if HAS_MEDIA - VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, ScreenHandler.ScreenChangeHookIfSD, nullptr), + VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, screen.screenChangeHookIfSD, nullptr), #endif - VPHELPER(VP_CONFIRMED, nullptr, ScreenHandler.ScreenConfirmedOK, nullptr), + VPHELPER(VP_CONFIRMED, nullptr, screen.screenConfirmedOK, nullptr), - VPHELPER(VP_TEMP_ALL_OFF, nullptr, ScreenHandler.HandleAllHeatersOff, nullptr), + VPHELPER(VP_TEMP_ALL_OFF, nullptr, screen.handleAllHeatersOff, nullptr), #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) - VPHELPER(VP_MOVE_OPTION, &distanceToMove, ScreenHandler.HandleManualMoveOption, nullptr), + VPHELPER(VP_MOVE_OPTION, &distanceToMove, screen.handleManualMoveOption, nullptr), #endif #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) - VPHELPER(VP_MOVE_X, &distanceToMove, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_MOVE_Y, &distanceToMove, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_MOVE_Z, &distanceToMove, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_HOME_ALL, &distanceToMove, ScreenHandler.HandleManualMove, nullptr), + VPHELPER(VP_MOVE_X, &distanceToMove, screen.handleManualMove, nullptr), + VPHELPER(VP_MOVE_Y, &distanceToMove, screen.handleManualMove, nullptr), + VPHELPER(VP_MOVE_Z, &distanceToMove, screen.handleManualMove, nullptr), + VPHELPER(VP_HOME_ALL, &distanceToMove, screen.handleManualMove, nullptr), #else - VPHELPER(VP_MOVE_X, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_MOVE_Y, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_MOVE_Z, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_HOME_ALL, nullptr, ScreenHandler.HandleManualMove, nullptr), + VPHELPER(VP_MOVE_X, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_MOVE_Y, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_MOVE_Z, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_HOME_ALL, nullptr, screen.handleManualMove, nullptr), #endif - VPHELPER(VP_MOTOR_LOCK_UNLOK, nullptr, ScreenHandler.HandleMotorLockUnlock, nullptr), + VPHELPER(VP_MOTOR_LOCK_UNLOK, nullptr, screen.handleMotorLockUnlock, nullptr), #if ENABLED(POWER_LOSS_RECOVERY) - VPHELPER(VP_POWER_LOSS_RECOVERY, nullptr, ScreenHandler.HandlePowerLossRecovery, nullptr), + VPHELPER(VP_POWER_LOSS_RECOVERY, nullptr, screen.handlePowerLossRecovery, nullptr), #endif - VPHELPER(VP_SETTINGS, nullptr, ScreenHandler.HandleSettings, nullptr), + VPHELPER(VP_SETTINGS, nullptr, screen.handleSettings, nullptr), #if ENABLED(SINGLE_Z_CALIBRATION) - VPHELPER(VP_Z_CALIBRATE, nullptr, ScreenHandler.HandleZCalibration, nullptr), + VPHELPER(VP_Z_CALIBRATE, nullptr, screen.handleZCalibration, nullptr), #endif #if ENABLED(FIRST_LAYER_CAL) - VPHELPER(VP_Z_FIRST_LAYER_CAL, nullptr, ScreenHandler.HandleFirstLayerCal, nullptr), + VPHELPER(VP_Z_FIRST_LAYER_CAL, nullptr, screen.handleFirstLayerCal, nullptr), #endif - { .VP = VP_MARLIN_VERSION, .memadr = (void*)MarlinVersion, .size = VP_MARLIN_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, + { .VP = VP_MARLIN_VERSION, .memadr = (void*)MarlinVersion, .size = VP_MARLIN_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, // M117 LCD String (We don't need the string in memory but "just" push it to the display on demand, hence the nullptr - { .VP = VP_M117, .memadr = nullptr, .size = VP_M117_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay }, + { .VP = VP_M117, .memadr = nullptr, .size = VP_M117_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplay }, // Temperature Data #if HAS_HOTEND - VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<0>), - VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Flowrate_E0, &planner.flow_percentage[ExtUI::extruder_t::E0], ScreenHandler.HandleFlowRateChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_EPos, &destination.e, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_MOVE_E0, nullptr, ScreenHandler.HandleManualExtrude, nullptr), - VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, ScreenHandler.HandleHeaterControl, nullptr), - VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, ScreenHandler.DGUSLCD_SendHeaterStatusToDisplay), + VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, screen.sendFloatAsLongValueToDisplay<0>), + VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, screen.handleTemperatureChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_Flowrate_E0, &planner.flow_percentage[ExtUI::extruder_t::E0], screen.handleFlowRateChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_EPos, &destination.e, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_MOVE_E0, nullptr, screen.handleManualExtrude, nullptr), + VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, screen.handleHeaterControl, nullptr), + VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, screen.sendHeaterStatusToDisplay), #if ENABLED(DGUS_PREHEAT_UI) - VPHELPER(VP_E0_BED_PREHEAT, nullptr, ScreenHandler.HandlePreheat, nullptr), + VPHELPER(VP_E0_BED_PREHEAT, nullptr, screen.handlePreheat, nullptr), #endif #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) - VPHELPER(VP_E0_FILAMENT_LOAD_UNLOAD, nullptr, ScreenHandler.HandleFilamentOption, ScreenHandler.HandleFilamentLoadUnload), + VPHELPER(VP_E0_FILAMENT_LOAD_UNLOAD, nullptr, screen.handleFilamentOption, screen.handleFilamentLoadUnload), #endif #if ENABLED(PIDTEMP) - VPHELPER(VP_E0_PID_P, &thermalManager.temp_hotend[0].pid.Kp, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_E0_PID_I, &thermalManager.temp_hotend[0].pid.Ki, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_E0_PID_D, &thermalManager.temp_hotend[0].pid.Kd, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_PID_AUTOTUNE_E0, nullptr, ScreenHandler.HandlePIDAutotune, nullptr), + VPHELPER(VP_E0_PID_P, &thermalManager.temp_hotend[0].pid.Kp, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_E0_PID_I, &thermalManager.temp_hotend[0].pid.Ki, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_E0_PID_D, &thermalManager.temp_hotend[0].pid.Kd, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_PID_AUTOTUNE_E0, nullptr, screen.handlePIDAutotune, nullptr), #endif #endif #if HAS_MULTI_HOTEND - VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<0>), - VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Flowrate_E1, nullptr, ScreenHandler.HandleFlowRateChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_MOVE_E1, nullptr, ScreenHandler.HandleManualExtrude, nullptr), - VPHELPER(VP_E1_CONTROL, &thermalManager.temp_hotend[1].target, ScreenHandler.HandleHeaterControl, nullptr), - VPHELPER(VP_E1_STATUS, &thermalManager.temp_hotend[1].target, nullptr, ScreenHandler.DGUSLCD_SendHeaterStatusToDisplay), + VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, screen.sendFloatAsLongValueToDisplay<0>), + VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, screen.handleTemperatureChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_Flowrate_E1, nullptr, screen.handleFlowRateChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_MOVE_E1, nullptr, screen.handleManualExtrude, nullptr), + VPHELPER(VP_E1_CONTROL, &thermalManager.temp_hotend[1].target, screen.handleHeaterControl, nullptr), + VPHELPER(VP_E1_STATUS, &thermalManager.temp_hotend[1].target, nullptr, screen.sendHeaterStatusToDisplay), #endif #if HAS_HEATED_BED - VPHELPER(VP_T_Bed_Is, &thermalManager.temp_bed.celsius, nullptr, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_T_Bed_Set, &thermalManager.temp_bed.target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_BED_CONTROL, &thermalManager.temp_bed.target, ScreenHandler.HandleHeaterControl, nullptr), - VPHELPER(VP_BED_STATUS, &thermalManager.temp_bed.target, nullptr, ScreenHandler.DGUSLCD_SendHeaterStatusToDisplay), + VPHELPER(VP_T_Bed_Is, &thermalManager.temp_bed.celsius, nullptr, screen.sendWordValueToDisplay), + VPHELPER(VP_T_Bed_Set, &thermalManager.temp_bed.target, screen.handleTemperatureChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_BED_CONTROL, &thermalManager.temp_bed.target, screen.handleHeaterControl, nullptr), + VPHELPER(VP_BED_STATUS, &thermalManager.temp_bed.target, nullptr, screen.sendHeaterStatusToDisplay), #if ENABLED(PIDTEMPBED) - VPHELPER(VP_BED_PID_P, &thermalManager.temp_bed.pid.Kp, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_BED_PID_I, &thermalManager.temp_bed.pid.Ki, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_BED_PID_D, &thermalManager.temp_bed.pid.Kd, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_PID_AUTOTUNE_BED, nullptr, ScreenHandler.HandlePIDAutotune, nullptr), + VPHELPER(VP_BED_PID_P, &thermalManager.temp_bed.pid.Kp, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_BED_PID_I, &thermalManager.temp_bed.pid.Ki, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_BED_PID_D, &thermalManager.temp_bed.pid.Kd, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_PID_AUTOTUNE_BED, nullptr, screen.handlePIDAutotune, nullptr), #endif #endif // Fan Data #if HAS_FAN #define FAN_VPHELPER(N) \ - VPHELPER(VP_Fan##N##_Percentage, &thermalManager.fan_speed[N], ScreenHandler.DGUSLCD_PercentageToUint8, ScreenHandler.DGUSLCD_SendPercentageToDisplay), \ - VPHELPER(VP_FAN##N##_CONTROL, &thermalManager.fan_speed[N], ScreenHandler.HandleFanControl, nullptr), \ - VPHELPER(VP_FAN##N##_STATUS, &thermalManager.fan_speed[N], nullptr, ScreenHandler.DGUSLCD_SendFanStatusToDisplay), + VPHELPER(VP_Fan##N##_Percentage, &thermalManager.fan_speed[N], screen.percentageToUint8, screen.sendPercentageToDisplay), \ + VPHELPER(VP_FAN##N##_CONTROL, &thermalManager.fan_speed[N], screen.handleFanControl, nullptr), \ + VPHELPER(VP_FAN##N##_STATUS, &thermalManager.fan_speed[N], nullptr, screen.sendFanStatusToDisplay), REPEAT(FAN_COUNT, FAN_VPHELPER) #endif // Feedrate - VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, ScreenHandler.DGUSLCD_SetValueDirectly, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, screen.setValueDirectly, screen.sendWordValueToDisplay), // Position Data - VPHELPER(VP_XPos, ¤t_position.x, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_YPos, ¤t_position.y, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_ZPos, ¤t_position.z, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_XPos, ¤t_position.x, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_YPos, ¤t_position.y, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_ZPos, ¤t_position.z, nullptr, screen.sendFloatAsLongValueToDisplay<2>), // Print Progress - VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, ScreenHandler.DGUSLCD_SendPrintProgressToDisplay), + VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, screen.sendPrintProgressToDisplay), // Print Time - VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintTimeToDisplay), + VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, screen.sendPrintTimeToDisplay), #if ENABLED(PRINTCOUNTER) - VPHELPER_STR(VP_PrintAccTime, nullptr, VP_PrintAccTime_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintAccTimeToDisplay), - VPHELPER_STR(VP_PrintsTotal, nullptr, VP_PrintsTotal_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintsTotalToDisplay), + VPHELPER_STR(VP_PrintAccTime, nullptr, VP_PrintAccTime_LEN, nullptr, screen.sendPrintAccTimeToDisplay), + VPHELPER_STR(VP_PrintsTotal, nullptr, VP_PrintsTotal_LEN, nullptr, screen.sendPrintsTotalToDisplay), #endif - VPHELPER(VP_X_STEP_PER_MM, &planner.settings.axis_steps_per_mm[X_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), - VPHELPER(VP_Y_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Y_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), - VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_X_STEP_PER_MM, &planner.settings.axis_steps_per_mm[X_AXIS], screen.handleStepPerMMChanged, screen.sendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_Y_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Y_AXIS], screen.handleStepPerMMChanged, screen.sendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], screen.handleStepPerMMChanged, screen.sendFloatAsIntValueToDisplay<1>), #if HAS_HOTEND - VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], ScreenHandler.HandleStepPerMMExtruderChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], screen.handleStepPerMMExtruderChanged, screen.sendFloatAsIntValueToDisplay<1>), #if HAS_MULTI_HOTEND - VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], ScreenHandler.HandleStepPerMMExtruderChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], screen.handleStepPerMMExtruderChanged, screen.sendFloatAsIntValueToDisplay<1>), #endif #endif // SDCard File listing. #if HAS_MEDIA - VPHELPER(VP_SD_ScrollEvent, nullptr, ScreenHandler.DGUSLCD_SD_ScrollFilelist, nullptr), - VPHELPER(VP_SD_FileSelected, nullptr, ScreenHandler.DGUSLCD_SD_FileSelected, nullptr), - VPHELPER(VP_SD_FileSelectConfirm, nullptr, ScreenHandler.DGUSLCD_SD_StartPrint, nullptr), - VPHELPER_STR(VP_SD_FileName0, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName1, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName2, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName3, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName4, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER(VP_SD_ResumePauseAbort, nullptr, ScreenHandler.DGUSLCD_SD_ResumePauseAbort, nullptr), - VPHELPER(VP_SD_AbortPrintConfirmed, nullptr, ScreenHandler.DGUSLCD_SD_ReallyAbort, nullptr), - VPHELPER(VP_SD_Print_Setting, nullptr, ScreenHandler.DGUSLCD_SD_PrintTune, nullptr), + VPHELPER(VP_SD_ScrollEvent, nullptr, screen.sdScrollFilelist, nullptr), + VPHELPER(VP_SD_FileSelected, nullptr, screen.sdFileSelected, nullptr), + VPHELPER(VP_SD_FileSelectConfirm, nullptr, screen.sdStartPrint, nullptr), + VPHELPER_STR(VP_SD_FileName0, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName1, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName2, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName3, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName4, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER(VP_SD_ResumePauseAbort, nullptr, screen.sdResumePauseAbort, nullptr), + VPHELPER(VP_SD_AbortPrintConfirmed, nullptr, screen.sdReallyAbort, nullptr), + VPHELPER(VP_SD_Print_Setting, nullptr, screen.sdPrintTune, nullptr), #if HAS_BED_PROBE - VPHELPER(VP_SD_Print_ProbeOffsetZ, &probe.offset.z, ScreenHandler.HandleProbeOffsetZChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<2>), + VPHELPER(VP_SD_Print_ProbeOffsetZ, &probe.offset.z, screen.handleProbeOffsetZChanged, screen.sendFloatAsIntValueToDisplay<2>), #if ENABLED(BABYSTEPPING) - VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, ScreenHandler.HandleLiveAdjustZ, nullptr), + VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, screen.handleLiveAdjustZ, nullptr), #endif #endif #endif #if ENABLED(DGUS_UI_WAITING) - VPHELPER(VP_WAITING_STATUS, nullptr, nullptr, ScreenHandler.DGUSLCD_SendWaitingStatusToDisplay), + VPHELPER(VP_WAITING_STATUS, nullptr, nullptr, screen.sendWaitingStatusToDisplay), #endif // Messages for the User, shared by the popup and the kill screen. They can't be autouploaded as we do not buffer content. - { .VP = VP_MSGSTR1, .memadr = nullptr, .size = VP_MSGSTR1_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, - { .VP = VP_MSGSTR2, .memadr = nullptr, .size = VP_MSGSTR2_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, - { .VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, - { .VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, + { .VP = VP_MSGSTR1, .memadr = nullptr, .size = VP_MSGSTR1_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, + { .VP = VP_MSGSTR2, .memadr = nullptr, .size = VP_MSGSTR2_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, + { .VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, + { .VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, VPHELPER(0, 0, 0, 0) // must be last entry. }; diff --git a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.h b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.h index 3b7199f07e..6270207990 100644 --- a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.h +++ b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.h @@ -23,35 +23,35 @@ #include "../DGUSDisplayDef.h" -enum DGUSLCD_Screens : uint8_t { - DGUSLCD_SCREEN_BOOT = 160, - DGUSLCD_SCREEN_MAIN = 1, - DGUSLCD_SCREEN_STATUS = 1, - DGUSLCD_SCREEN_STATUS2 = 1, - DGUSLCD_SCREEN_POWER_LOSS = 17, - DGUSLCD_SCREEN_TEMPERATURE = 40, - DGUSLCD_SCREEN_MANUALMOVE = 86, - DGUSLCD_SCREEN_PREHEAT = 48, - DGUSLCD_SCREEN_UTILITY = 70, - DGUSLCD_SCREEN_FILAMENT_HEATING = 80, - DGUSLCD_SCREEN_FILAMENT_LOADING = 76, - DGUSLCD_SCREEN_FILAMENT_UNLOADING = 82, - DGUSLCD_SCREEN_MANUALEXTRUDE = 84, - DGUSLCD_SCREEN_Z_OFFSET = 88, - DGUSLCD_SCREEN_SDFILELIST = 3, - DGUSLCD_SCREEN_SDPRINTMANIPULATION = 7, - DGUSLCD_SCREEN_SDPRINTTUNE = 9, - DGUSLCD_SCREEN_FLC_PREHEAT = 94, - DGUSLCD_SCREEN_FLC_PRINTING = 96, - DGUSLCD_SCREEN_STEPPERMM = 122, - DGUSLCD_SCREEN_PID_E = 126, - DGUSLCD_SCREEN_PID_BED = 128, - DGUSLCD_SCREEN_INFOS = 131, - DGUSLCD_SCREEN_CONFIRM = 240, - DGUSLCD_SCREEN_KILL = 250, ///< Kill Screen. Must always be 250 (to be able to display "Error wrong LCD Version") - DGUSLCD_SCREEN_WAITING = 251, - DGUSLCD_SCREEN_POPUP = 252, ///< special target, popup screen will also return this code to say "return to previous screen" - DGUSLCD_SCREEN_UNUSED = 255 +enum DGUS_ScreenID : uint8_t { + DGUS_SCREEN_BOOT = 160, + DGUS_SCREEN_MAIN = 1, + DGUS_SCREEN_STATUS = 1, + DGUS_SCREEN_STATUS2 = 1, + DGUS_SCREEN_POWER_LOSS = 17, + DGUS_SCREEN_TEMPERATURE = 40, + DGUS_SCREEN_MANUALMOVE = 86, + DGUS_SCREEN_PREHEAT = 48, + DGUS_SCREEN_UTILITY = 70, + DGUS_SCREEN_FILAMENT_HEATING = 80, + DGUS_SCREEN_FILAMENT_LOADING = 76, + DGUS_SCREEN_FILAMENT_UNLOADING = 82, + DGUS_SCREEN_MANUALEXTRUDE = 84, + DGUS_SCREEN_Z_OFFSET = 88, + DGUS_SCREEN_SDFILELIST = 3, + DGUS_SCREEN_SDPRINTMANIPULATION = 7, + DGUS_SCREEN_SDPRINTTUNE = 9, + DGUS_SCREEN_FLC_PREHEAT = 94, + DGUS_SCREEN_FLC_PRINTING = 96, + DGUS_SCREEN_STEPPERMM = 122, + DGUS_SCREEN_PID_E = 126, + DGUS_SCREEN_PID_BED = 128, + DGUS_SCREEN_INFOS = 131, + DGUS_SCREEN_CONFIRM = 240, + DGUS_SCREEN_KILL = 250, ///< Kill Screen. Must always be 250 (to be able to display "Error wrong LCD Version") + DGUS_SCREEN_WAITING = 251, + DGUS_SCREEN_POPUP = 252, ///< special target, popup screen will also return this code to say "return to previous screen" + DGUS_SCREEN_UNUSED = 255 }; // Display Memory layout used (T5UID) diff --git a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp index d0119d494f..f817453f1b 100644 --- a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp @@ -44,7 +44,7 @@ extern ExtUI::FileList filelist; - void DGUSScreenHandler::DGUSLCD_SD_FileSelected(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::sdFileSelected(DGUS_VP_Variable &var, void *val_ptr) { uint16_t touched_nr = (int16_t)swap16(*(uint16_t*)val_ptr) + top_file; if (touched_nr > filelist.count()) return; if (!filelist.seek(touched_nr)) return; @@ -52,28 +52,28 @@ if (filelist.isDir()) { filelist.changeDir(filelist.filename()); top_file = 0; - ForceCompleteUpdate(); + forceCompleteUpdate(); return; } #if ENABLED(DGUS_PRINT_FILENAME) // Send print filename - dgusdisplay.WriteVariable(VP_SD_Print_Filename, filelist.filename(), VP_SD_FileName_LEN, true); + dgus.writeVariable(VP_SD_Print_Filename, filelist.filename(), VP_SD_FileName_LEN, true); #endif // Setup Confirmation screen file_to_print = touched_nr; - HandleUserConfirmationPopUp(VP_SD_FileSelectConfirm, nullptr, PSTR("Print file"), filelist.filename(), PSTR("from SD Card?"), true, true, false, true); + handleUserConfirmationPopUp(VP_SD_FileSelectConfirm, nullptr, PSTR("Print file"), filelist.filename(), PSTR("from SD Card?"), true, true, false, true); } - void DGUSScreenHandler::DGUSLCD_SD_StartPrint(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::sdStartPrint(DGUS_VP_Variable &var, void *val_ptr) { if (!filelist.seek(file_to_print)) return; ExtUI::printFile(filelist.shortFilename()); - GotoScreen(DGUSLCD_SCREEN_SDPRINTMANIPULATION); + gotoScreen(DGUS_SCREEN_SDPRINTMANIPULATION); } - void DGUSScreenHandler::DGUSLCD_SD_ResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::sdResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr) { if (!ExtUI::isPrintingFromMedia()) return; // avoid race condition when user stays in this menu and printer finishes. switch (swap16(*(uint16_t*)val_ptr)) { @@ -85,19 +85,19 @@ case 1: // Pause - GotoScreen(MKSLCD_SCREEN_PAUSE); + gotoScreen(MKSLCD_SCREEN_PAUSE); if (!ExtUI::isPrintingFromMediaPaused()) { ExtUI::pausePrint(); //ExtUI::mks_pausePrint(); } break; case 2: // Abort - HandleUserConfirmationPopUp(VP_SD_AbortPrintConfirmed, nullptr, PSTR("Abort printing"), filelist.filename(), PSTR("?"), true, true, false, true); + handleUserConfirmationPopUp(VP_SD_AbortPrintConfirmed, nullptr, PSTR("Abort printing"), filelist.filename(), PSTR("?"), true, true, false, true); break; } } - void DGUSScreenHandler::DGUSLCD_SD_SendFilename(DGUS_VP_Variable& var) { + void DGUSScreenHandler::sdSendFilename(DGUS_VP_Variable& var) { uint16_t target_line = (var.VP - VP_SD_FileName0) / VP_SD_FileName_LEN; if (target_line > DGUS_SD_FILESPERSCREEN) return; char tmpfilename[VP_SD_FileName_LEN + 1] = ""; @@ -106,49 +106,49 @@ if (filelist.seek(top_file + target_line)) { snprintf_P(tmpfilename, VP_SD_FileName_LEN, PSTR("%s%c"), filelist.filename(), filelist.isDir() ? '/' : 0); // snprintf_P(tmpfilename, VP_SD_FileName_LEN, PSTR("%s"), filelist.filename()); } - DGUSLCD_SendStringToDisplay(var); + sendStringToDisplay(var); } - void DGUSScreenHandler::SDCardInserted() { + void DGUSScreenHandler::sdCardInserted() { top_file = 0; filelist.refresh(); auto cs = getCurrentScreen(); - if (cs == DGUSLCD_SCREEN_MAIN || cs == DGUSLCD_SCREEN_STATUS) - GotoScreen(DGUSLCD_SCREEN_SDFILELIST); + if (cs == DGUS_SCREEN_MAIN || cs == DGUS_SCREEN_STATUS) + gotoScreen(DGUS_SCREEN_SDFILELIST); } - void DGUSScreenHandler::SDCardRemoved() { - if (current_screen == DGUSLCD_SCREEN_SDFILELIST - || (current_screen == DGUSLCD_SCREEN_CONFIRM && (ConfirmVP == VP_SD_AbortPrintConfirmed || ConfirmVP == VP_SD_FileSelectConfirm)) - || current_screen == DGUSLCD_SCREEN_SDPRINTMANIPULATION - ) GotoScreen(DGUSLCD_SCREEN_MAIN); + void DGUSScreenHandler::sdCardRemoved() { + if (current_screenID == DGUS_SCREEN_SDFILELIST + || (current_screenID == DGUS_SCREEN_CONFIRM && (confirmVP == VP_SD_AbortPrintConfirmed || confirmVP == VP_SD_FileSelectConfirm)) + || current_screenID == DGUS_SCREEN_SDPRINTMANIPULATION + ) gotoScreen(DGUS_SCREEN_MAIN); } #endif // HAS_MEDIA -void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::screenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { uint8_t *tmp = (uint8_t*)val_ptr; // The keycode in target is coded as , so 0x0100A means - // from screen 1 (main) to 10 (temperature). DGUSLCD_SCREEN_POPUP is special, + // from screen 1 (main) to 10 (temperature). DGUS_SCREEN_POPUP is special, // meaning "return to previous screen" - DGUSLCD_Screens target = (DGUSLCD_Screens)tmp[1]; + DGUS_ScreenID target = (DGUS_ScreenID)tmp[1]; - if (target == DGUSLCD_SCREEN_POPUP) { + if (target == DGUS_SCREEN_POPUP) { // Special handling for popup is to return to previous menu - if (current_screen == DGUSLCD_SCREEN_POPUP && confirm_action_cb) confirm_action_cb(); - PopToOldScreen(); + if (current_screenID == DGUS_SCREEN_POPUP && confirm_action_cb) confirm_action_cb(); + popToOldScreen(); return; } - UpdateNewScreen(target); + updateNewScreen(target); #ifdef DEBUG_DGUSLCD - if (!DGUSLCD_FindScreenVPMapList(target)) DEBUG_ECHOLNPGM("WARNING: No screen Mapping found for ", target); + if (!findScreenVPMapList(target)) DEBUG_ECHOLNPGM("WARNING: No screen Mapping found for ", target); #endif } -void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::handleManualMove(DGUS_VP_Variable &var, void *val_ptr) { int16_t movevalue = swap16(*(uint16_t*)val_ptr); #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) if (movevalue) { @@ -196,7 +196,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { char buf[6] = "G28 X"; buf[4] = axiscode; queue.enqueue_one_now(buf); - ForceCompleteUpdate(); + forceCompleteUpdate(); return; } else { @@ -219,14 +219,14 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { if (!old_relative_mode) queue.enqueue_now(F("G90")); } - ForceCompleteUpdate(); + forceCompleteUpdate(); cannotmove: return; } #if HAS_PID_HEATING - void DGUSScreenHandler::HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr) { uint16_t rawvalue = swap16(*(uint16_t*)val_ptr); float value = (float)rawvalue / 10; float newvalue = 0; @@ -257,17 +257,17 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #endif // HAS_PID_HEATING #if ENABLED(BABYSTEPPING) - void DGUSScreenHandler::HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr) { int16_t flag = swap16(*(uint16_t*)val_ptr), steps = flag ? -20 : 20; ExtUI::smartAdjustAxis_steps(steps, ExtUI::axis_t::Z, true); - ForceCompleteUpdate(); + forceCompleteUpdate(); } #endif #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) - void DGUSScreenHandler::HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleFilamentOption(DGUS_VP_Variable &var, void *val_ptr) { uint8_t e_temp = 0; filament_data.heated = false; uint16_t preheat_option = swap16(*(uint16_t*)val_ptr); @@ -315,7 +315,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E1); #endif #endif - GotoScreen(DGUSLCD_SCREEN_UTILITY); + gotoScreen(DGUS_SCREEN_UTILITY); } else { // Go to the preheat screen to show the heating progress switch (var.VP) { @@ -333,11 +333,11 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { break; #endif } - GotoScreen(DGUSLCD_SCREEN_FILAMENT_HEATING); + gotoScreen(DGUS_SCREEN_FILAMENT_HEATING); } } - void DGUSScreenHandler::HandleFilamentLoadUnload(DGUS_VP_Variable &var) { + void DGUSScreenHandler::handleFilamentLoadUnload(DGUS_VP_Variable &var) { if (filament_data.action <= 0) return; // If we close to the target temperature, we can start load or unload the filament @@ -347,14 +347,14 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { if (filament_data.action == 1) { // load filament if (!filament_data.heated) { - //GotoScreen(DGUSLCD_SCREEN_FILAMENT_LOADING); + //gotoScreen(DGUS_SCREEN_FILAMENT_LOADING); filament_data.heated = true; } movevalue = ExtUI::getAxisPosition_mm(filament_data.extruder) + movevalue; } else { // unload filament if (!filament_data.heated) { - GotoScreen(DGUSLCD_SCREEN_FILAMENT_UNLOADING); + gotoScreen(DGUS_SCREEN_FILAMENT_UNLOADING); filament_data.heated = true; } // Before unloading extrude to prevent jamming @@ -372,14 +372,14 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #endif // DGUS_FILAMENT_LOADUNLOAD bool DGUSScreenHandler::loop() { - dgusdisplay.loop(); + dgus.loop(); const millis_t ms = millis(); static millis_t next_event_ms = 0; - if (!IsScreenComplete() || ELAPSED(ms, next_event_ms)) { + if (!isScreenComplete() || ELAPSED(ms, next_event_ms)) { next_event_ms = ms + DGUS_UPDATE_INTERVAL_MS; - UpdateScreenVPData(); + updateScreenVPData(); } #if ENABLED(SHOW_BOOTSCREEN) @@ -390,11 +390,11 @@ bool DGUSScreenHandler::loop() { if (!booted && ELAPSED(ms, BOOTSCREEN_TIMEOUT)) { booted = true; - GotoScreen(TERN0(POWER_LOSS_RECOVERY, recovery.valid()) ? DGUSLCD_SCREEN_POWER_LOSS : DGUSLCD_SCREEN_MAIN); + gotoScreen(TERN0(POWER_LOSS_RECOVERY, recovery.valid()) ? DGUS_SCREEN_POWER_LOSS : DGUS_SCREEN_MAIN); } #endif - return IsScreenComplete(); + return isScreenComplete(); } #endif // DGUS_LCD_UI_HIPRECY diff --git a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.h b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.h index 73e3527d7e..16c5dec408 100644 --- a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.h +++ b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.h @@ -26,6 +26,6 @@ typedef DGUSScreenHandler DGUSScreenHandlerClass; #if ENABLED(POWER_LOSS_RECOVERY) - #define PLR_SCREEN_RECOVER DGUSLCD_SCREEN_SDPRINTMANIPULATION - #define PLR_SCREEN_CANCEL DGUSLCD_SCREEN_STATUS + #define PLR_SCREEN_RECOVER DGUS_SCREEN_SDPRINTMANIPULATION + #define PLR_SCREEN_CANCEL DGUS_SCREEN_STATUS #endif diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp index 8dee8e26d7..2b5b6d956e 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp @@ -500,301 +500,301 @@ const char Updata_Time[] PROGMEM = STRING_DISTRIBUTION_DATE; const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { // Helper to detect touch events - VPHELPER(VP_SCREENCHANGE, nullptr, ScreenHandler.ScreenChangeHook, nullptr), - VPHELPER(VP_SCREENCHANGE_ASK, nullptr, ScreenHandler.ScreenChangeHookIfIdle, nullptr), + VPHELPER(VP_SCREENCHANGE, nullptr, screen.screenChangeHook, nullptr), + VPHELPER(VP_SCREENCHANGE_ASK, nullptr, screen.screenChangeHookIfIdle, nullptr), #if HAS_MEDIA - VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, ScreenHandler.ScreenChangeHookIfSD, nullptr), + VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, screen.screenChangeHookIfSD, nullptr), #endif - VPHELPER(VP_CONFIRMED, nullptr, ScreenHandler.ScreenConfirmedOK, nullptr), + VPHELPER(VP_CONFIRMED, nullptr, screen.screenConfirmedOK, nullptr), // Back Button - VPHELPER(VP_BACK_PAGE, nullptr, ScreenHandler.ScreenBackChange, nullptr), - VPHELPER(VP_TEMP_ALL_OFF, nullptr, ScreenHandler.HandleAllHeatersOff, nullptr), + VPHELPER(VP_BACK_PAGE, nullptr, screen.screenBackChange, nullptr), + VPHELPER(VP_TEMP_ALL_OFF, nullptr, screen.handleAllHeatersOff, nullptr), - VPHELPER(VP_MOVE_X, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_MOVE_Y, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_MOVE_Z, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_HOME_ALL, nullptr, ScreenHandler.HandleManualMove, nullptr), + VPHELPER(VP_MOVE_X, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_MOVE_Y, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_MOVE_Z, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_HOME_ALL, nullptr, screen.handleManualMove, nullptr), - VPHELPER(VP_X_HOME, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_Y_HOME, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_Z_HOME, nullptr, ScreenHandler.HandleManualMove, nullptr), + VPHELPER(VP_X_HOME, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_Y_HOME, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_Z_HOME, nullptr, screen.handleManualMove, nullptr), - VPHELPER(VP_MOVE_DISTANCE, &manualMoveStep, ScreenHandler.GetManualMovestep, nullptr), + VPHELPER(VP_MOVE_DISTANCE, &manualMoveStep, screen.getManualMovestep, nullptr), - VPHELPER(VP_MOTOR_LOCK_UNLOK, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_LEVEL_POINT, nullptr, ScreenHandler.ManualAssistLeveling, nullptr), + VPHELPER(VP_MOTOR_LOCK_UNLOK, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_LEVEL_POINT, nullptr, screen.manualAssistLeveling, nullptr), #if ENABLED(POWER_LOSS_RECOVERY) - VPHELPER(VP_POWER_LOSS_RECOVERY, nullptr, ScreenHandler.HandlePowerLossRecovery, nullptr), + VPHELPER(VP_POWER_LOSS_RECOVERY, nullptr, screen.handlePowerLossRecovery, nullptr), #endif - VPHELPER(VP_SETTINGS, nullptr, ScreenHandler.HandleSettings, nullptr), + VPHELPER(VP_SETTINGS, nullptr, screen.handleSettings, nullptr), #if ENABLED(SINGLE_Z_CALIBRATION) - VPHELPER(VP_Z_CALIBRATE, nullptr, ScreenHandler.HandleZCalibration, nullptr), + VPHELPER(VP_Z_CALIBRATE, nullptr, screen.handleZCalibration, nullptr), #endif #if ENABLED(FIRST_LAYER_CAL) - VPHELPER(VP_Z_FIRST_LAYER_CAL, nullptr, ScreenHandler.HandleFirstLayerCal, nullptr), + VPHELPER(VP_Z_FIRST_LAYER_CAL, nullptr, screen.handleFirstLayerCal, nullptr), #endif - {.VP = VP_MARLIN_VERSION, .memadr = (void *)MarlinVersion, .size = VP_MARLIN_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM}, + {.VP = VP_MARLIN_VERSION, .memadr = (void *)MarlinVersion, .size = VP_MARLIN_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM}, // M117 LCD String (We don't need the string in memory but "just" push it to the display on demand, hence the nullptr - {.VP = VP_M117, .memadr = nullptr, .size = VP_M117_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay}, - {.VP = VP_MKS_H43_VERSION, .memadr = (void *)H43Version, .size = VP_MKS_H43_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM}, - {.VP = VP_MKS_H43_UpdataVERSION, .memadr = (void *)Updata_Time, .size = VP_MKS_H43_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM}, + {.VP = VP_M117, .memadr = nullptr, .size = VP_M117_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplay}, + {.VP = VP_MKS_H43_VERSION, .memadr = (void *)H43Version, .size = VP_MKS_H43_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM}, + {.VP = VP_MKS_H43_UpdataVERSION, .memadr = (void *)Updata_Time, .size = VP_MKS_H43_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM}, // Temperature Data #if HAS_HOTEND - VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<0>), - VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Flowrate_E0, &planner.flow_percentage[ExtUI::extruder_t::E0], ScreenHandler.HandleFlowRateChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_EPos, &destination.e, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_MOVE_E0, nullptr, ScreenHandler.HandleManualExtrude, nullptr), - VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, ScreenHandler.HandleHeaterControl, nullptr), - VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, ScreenHandler.DGUSLCD_SendHeaterStatusToDisplay), + VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, screen.sendFloatAsLongValueToDisplay<0>), + VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, screen.handleTemperatureChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_Flowrate_E0, &planner.flow_percentage[ExtUI::extruder_t::E0], screen.handleFlowRateChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_EPos, &destination.e, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_MOVE_E0, nullptr, screen.handleManualExtrude, nullptr), + VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, screen.handleHeaterControl, nullptr), + VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, screen.sendHeaterStatusToDisplay), #if ENABLED(DGUS_PREHEAT_UI) - VPHELPER(VP_E0_BED_PREHEAT, nullptr, ScreenHandler.HandlePreheat, nullptr), + VPHELPER(VP_E0_BED_PREHEAT, nullptr, screen.handlePreheat, nullptr), #endif #if ENABLED(PIDTEMP) - VPHELPER(VP_E0_PID_P, &thermalManager.temp_hotend[0].pid.Kp, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_E0_PID_I, &thermalManager.temp_hotend[0].pid.Ki, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_E0_PID_D, &thermalManager.temp_hotend[0].pid.Kd, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_PID_AUTOTUNE_E0, nullptr, ScreenHandler.HandlePIDAutotune, nullptr), + VPHELPER(VP_E0_PID_P, &thermalManager.temp_hotend[0].pid.Kp, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_E0_PID_I, &thermalManager.temp_hotend[0].pid.Ki, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_E0_PID_D, &thermalManager.temp_hotend[0].pid.Kd, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_PID_AUTOTUNE_E0, nullptr, screen.handlePIDAutotune, nullptr), #endif #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) - VPHELPER(VP_LOAD_Filament, nullptr, ScreenHandler.FilamentLoad, nullptr), - VPHELPER(VP_UNLOAD_Filament, nullptr, ScreenHandler.FilamentUnLoad, nullptr), - VPHELPER(VP_Filament_distance, &distanceFilament, ScreenHandler.GetManualFilament, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Filament_speed, &filamentSpeed_mm_s, ScreenHandler.GetManualFilamentSpeed, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_LOAD_Filament, nullptr, screen.filamentLoad, nullptr), + VPHELPER(VP_UNLOAD_Filament, nullptr, screen.filamentUnload, nullptr), + VPHELPER(VP_Filament_distance, &distanceFilament, screen.getManualFilament, screen.sendWordValueToDisplay), + VPHELPER(VP_Filament_speed, &filamentSpeed_mm_s, screen.getManualFilamentSpeed, screen.sendWordValueToDisplay), #endif #endif #if HAS_MULTI_HOTEND - VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<0>), - VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Flowrate_E1, &planner.flow_percentage[ExtUI::extruder_t::E1], ScreenHandler.HandleFlowRateChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_MOVE_E1, nullptr, ScreenHandler.HandleManualExtrude, nullptr), - VPHELPER(VP_E1_CONTROL, &thermalManager.temp_hotend[1].target, ScreenHandler.HandleHeaterControl, nullptr), - VPHELPER(VP_E1_STATUS, &thermalManager.temp_hotend[1].target, nullptr, ScreenHandler.DGUSLCD_SendHeaterStatusToDisplay), + VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, screen.sendFloatAsLongValueToDisplay<0>), + VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, screen.handleTemperatureChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_Flowrate_E1, &planner.flow_percentage[ExtUI::extruder_t::E1], screen.handleFlowRateChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_MOVE_E1, nullptr, screen.handleManualExtrude, nullptr), + VPHELPER(VP_E1_CONTROL, &thermalManager.temp_hotend[1].target, screen.handleHeaterControl, nullptr), + VPHELPER(VP_E1_STATUS, &thermalManager.temp_hotend[1].target, nullptr, screen.sendHeaterStatusToDisplay), #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) - VPHELPER(VP_Filament_distance, &distanceFilament, ScreenHandler.GetManualFilament, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>), - VPHELPER(VP_Filament_speed, &filamentSpeed_mm_s, ScreenHandler.GetManualFilamentSpeed, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_Filament_distance, &distanceFilament, screen.getManualFilament, screen.sendFloatAsIntValueToDisplay<0>), + VPHELPER(VP_Filament_speed, &filamentSpeed_mm_s, screen.getManualFilamentSpeed, screen.sendWordValueToDisplay), #endif #if ENABLED(PIDTEMP) - VPHELPER(VP_PID_AUTOTUNE_E1, nullptr, ScreenHandler.HandlePIDAutotune, nullptr), + VPHELPER(VP_PID_AUTOTUNE_E1, nullptr, screen.handlePIDAutotune, nullptr), #endif - VPHELPER(VP_E1_FILAMENT_LOAD_UNLOAD, nullptr, ScreenHandler.HandleFilamentOption, ScreenHandler.HandleFilamentLoadUnload), + VPHELPER(VP_E1_FILAMENT_LOAD_UNLOAD, nullptr, screen.handleFilamentOption, screen.handleFilamentLoadUnload), #endif #if HAS_HEATED_BED - VPHELPER(VP_T_Bed_Is, &thermalManager.temp_bed.celsius, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<0>), - VPHELPER(VP_T_Bed_Set, &thermalManager.temp_bed.target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_BED_CONTROL, &thermalManager.temp_bed.target, ScreenHandler.HandleHeaterControl, nullptr), - VPHELPER(VP_BED_STATUS, &thermalManager.temp_bed.target, nullptr, ScreenHandler.DGUSLCD_SendHeaterStatusToDisplay), + VPHELPER(VP_T_Bed_Is, &thermalManager.temp_bed.celsius, nullptr, screen.sendFloatAsLongValueToDisplay<0>), + VPHELPER(VP_T_Bed_Set, &thermalManager.temp_bed.target, screen.handleTemperatureChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_BED_CONTROL, &thermalManager.temp_bed.target, screen.handleHeaterControl, nullptr), + VPHELPER(VP_BED_STATUS, &thermalManager.temp_bed.target, nullptr, screen.sendHeaterStatusToDisplay), #if ENABLED(PIDTEMPBED) - VPHELPER(VP_BED_PID_P, &thermalManager.temp_bed.pid.Kp, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_BED_PID_I, &thermalManager.temp_bed.pid.Ki, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_BED_PID_D, &thermalManager.temp_bed.pid.Kd, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_PID_AUTOTUNE_BED, nullptr, ScreenHandler.HandlePIDAutotune, nullptr), + VPHELPER(VP_BED_PID_P, &thermalManager.temp_bed.pid.Kp, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_BED_PID_I, &thermalManager.temp_bed.pid.Ki, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_BED_PID_D, &thermalManager.temp_bed.pid.Kd, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_PID_AUTOTUNE_BED, nullptr, screen.handlePIDAutotune, nullptr), #endif #endif // Fan Data #if HAS_FAN #define FAN_VPHELPER(N) \ - VPHELPER(VP_Fan##N##_Percentage, &thermalManager.fan_speed[N], ScreenHandler.DGUSLCD_SetUint8, ScreenHandler.DGUSLCD_SendFanToDisplay), \ - VPHELPER(VP_FAN##N##_CONTROL, &thermalManager.fan_speed[N], ScreenHandler.HandleFanControl, nullptr), \ - VPHELPER(VP_FAN##N##_STATUS, &thermalManager.fan_speed[N], nullptr, ScreenHandler.DGUSLCD_SendFanStatusToDisplay), + VPHELPER(VP_Fan##N##_Percentage, &thermalManager.fan_speed[N], screen.setUint8, screen.sendFanToDisplay), \ + VPHELPER(VP_FAN##N##_CONTROL, &thermalManager.fan_speed[N], screen.handleFanControl, nullptr), \ + VPHELPER(VP_FAN##N##_STATUS, &thermalManager.fan_speed[N], nullptr, screen.sendFanStatusToDisplay), REPEAT(FAN_COUNT, FAN_VPHELPER) #endif // Feedrate - VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, ScreenHandler.DGUSLCD_SetValueDirectly, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, screen.setValueDirectly, screen.sendWordValueToDisplay), // Position Data - VPHELPER(VP_XPos, ¤t_position.x, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_YPos, ¤t_position.y, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_ZPos, ¤t_position.z, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_XPos, ¤t_position.x, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_YPos, ¤t_position.y, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_ZPos, ¤t_position.z, nullptr, screen.sendFloatAsLongValueToDisplay<2>), // Level Point Set - VPHELPER(VP_Level_Point_One_X, &mks_corner_offsets[0].x, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Level_Point_One_Y, &mks_corner_offsets[0].y, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Level_Point_Two_X, &mks_corner_offsets[1].x, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Level_Point_Two_Y, &mks_corner_offsets[1].y, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Level_Point_Three_X, &mks_corner_offsets[2].x, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Level_Point_Three_Y, &mks_corner_offsets[2].y, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Level_Point_Four_X, &mks_corner_offsets[3].x, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Level_Point_Four_Y, &mks_corner_offsets[3].y, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Level_Point_Five_X, &mks_corner_offsets[4].x, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Level_Point_Five_Y, &mks_corner_offsets[4].y, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_Level_Point_One_X, &mks_corner_offsets[0].x, screen.handleChangeLevelPoint, screen.sendWordValueToDisplay), + VPHELPER(VP_Level_Point_One_Y, &mks_corner_offsets[0].y, screen.handleChangeLevelPoint, screen.sendWordValueToDisplay), + VPHELPER(VP_Level_Point_Two_X, &mks_corner_offsets[1].x, screen.handleChangeLevelPoint, screen.sendWordValueToDisplay), + VPHELPER(VP_Level_Point_Two_Y, &mks_corner_offsets[1].y, screen.handleChangeLevelPoint, screen.sendWordValueToDisplay), + VPHELPER(VP_Level_Point_Three_X, &mks_corner_offsets[2].x, screen.handleChangeLevelPoint, screen.sendWordValueToDisplay), + VPHELPER(VP_Level_Point_Three_Y, &mks_corner_offsets[2].y, screen.handleChangeLevelPoint, screen.sendWordValueToDisplay), + VPHELPER(VP_Level_Point_Four_X, &mks_corner_offsets[3].x, screen.handleChangeLevelPoint, screen.sendWordValueToDisplay), + VPHELPER(VP_Level_Point_Four_Y, &mks_corner_offsets[3].y, screen.handleChangeLevelPoint, screen.sendWordValueToDisplay), + VPHELPER(VP_Level_Point_Five_X, &mks_corner_offsets[4].x, screen.handleChangeLevelPoint, screen.sendWordValueToDisplay), + VPHELPER(VP_Level_Point_Five_Y, &mks_corner_offsets[4].y, screen.handleChangeLevelPoint, screen.sendWordValueToDisplay), // Print Progress - VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, ScreenHandler.DGUSLCD_SendPrintProgressToDisplay), + VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, screen.sendPrintProgressToDisplay), // LCD Control - VPHELPER(VP_LCD_BLK, &lcd_default_light, ScreenHandler.LCD_BLK_Adjust, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_LCD_BLK, &lcd_default_light, screen.lcdBLKAdjust, screen.sendWordValueToDisplay), // SD File - Back - VPHELPER(VP_SD_FileSelect_Back, nullptr, ScreenHandler.SD_FileBack, nullptr), + VPHELPER(VP_SD_FileSelect_Back, nullptr, screen.sdFileBack, nullptr), // Print Time - VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintTimeToDisplay), + VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, screen.sendPrintTimeToDisplay), #if ENABLED(PRINTCOUNTER) - VPHELPER_STR(VP_PrintAccTime, nullptr, VP_PrintAccTime_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintAccTimeToDisplay), - VPHELPER_STR(VP_PrintsTotal, nullptr, VP_PrintsTotal_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintsTotalToDisplay), + VPHELPER_STR(VP_PrintAccTime, nullptr, VP_PrintAccTime_LEN, nullptr, screen.sendPrintAccTimeToDisplay), + VPHELPER_STR(VP_PrintsTotal, nullptr, VP_PrintsTotal_LEN, nullptr, screen.sendPrintsTotalToDisplay), #endif - VPHELPER(VP_X_STEP_PER_MM, &planner.settings.axis_steps_per_mm[X_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>), - VPHELPER(VP_Y_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Y_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>), - VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>), + VPHELPER(VP_X_STEP_PER_MM, &planner.settings.axis_steps_per_mm[X_AXIS], screen.handleStepPerMMChanged, screen.sendFloatAsIntValueToDisplay<0>), + VPHELPER(VP_Y_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Y_AXIS], screen.handleStepPerMMChanged, screen.sendFloatAsIntValueToDisplay<0>), + VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], screen.handleStepPerMMChanged, screen.sendFloatAsIntValueToDisplay<0>), - VPHELPER(VP_X_MAX_SPEED, &planner.settings.max_feedrate_mm_s[X_AXIS], ScreenHandler.HandleMaxSpeedChange, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>), - VPHELPER(VP_Y_MAX_SPEED, &planner.settings.max_feedrate_mm_s[Y_AXIS], ScreenHandler.HandleMaxSpeedChange, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>), - VPHELPER(VP_Z_MAX_SPEED, &planner.settings.max_feedrate_mm_s[Z_AXIS], ScreenHandler.HandleMaxSpeedChange, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>), + VPHELPER(VP_X_MAX_SPEED, &planner.settings.max_feedrate_mm_s[X_AXIS], screen.handleMaxSpeedChange, screen.sendFloatAsIntValueToDisplay<0>), + VPHELPER(VP_Y_MAX_SPEED, &planner.settings.max_feedrate_mm_s[Y_AXIS], screen.handleMaxSpeedChange, screen.sendFloatAsIntValueToDisplay<0>), + VPHELPER(VP_Z_MAX_SPEED, &planner.settings.max_feedrate_mm_s[Z_AXIS], screen.handleMaxSpeedChange, screen.sendFloatAsIntValueToDisplay<0>), #if HAS_HOTEND - VPHELPER(VP_E0_MAX_SPEED, &planner.settings.max_feedrate_mm_s[E_AXIS_N(0)], ScreenHandler.HandleExtruderMaxSpeedChange, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>), + VPHELPER(VP_E0_MAX_SPEED, &planner.settings.max_feedrate_mm_s[E_AXIS_N(0)], screen.handleExtruderMaxSpeedChange, screen.sendFloatAsIntValueToDisplay<0>), #if HAS_MULTI_HOTEND - VPHELPER(VP_E1_MAX_SPEED, &planner.settings.max_feedrate_mm_s[E_AXIS_N(1)], ScreenHandler.HandleExtruderMaxSpeedChange, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>), + VPHELPER(VP_E1_MAX_SPEED, &planner.settings.max_feedrate_mm_s[E_AXIS_N(1)], screen.handleExtruderMaxSpeedChange, screen.sendFloatAsIntValueToDisplay<0>), #endif #endif - VPHELPER(VP_X_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[X_AXIS], ScreenHandler.HandleMaxAccChange, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Y_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[Y_AXIS], ScreenHandler.HandleMaxAccChange, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Z_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[Z_AXIS], ScreenHandler.HandleMaxAccChange, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_X_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[X_AXIS], screen.handleMaxAccChange, screen.sendWordValueToDisplay), + VPHELPER(VP_Y_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[Y_AXIS], screen.handleMaxAccChange, screen.sendWordValueToDisplay), + VPHELPER(VP_Z_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[Z_AXIS], screen.handleMaxAccChange, screen.sendWordValueToDisplay), #if HAS_HOTEND - VPHELPER(VP_E0_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(0)], ScreenHandler.HandleExtruderAccChange, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_E0_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(0)], screen.handleExtruderAccChange, screen.sendWordValueToDisplay), #if HAS_MULTI_HOTEND - VPHELPER(VP_E1_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(1)], ScreenHandler.HandleExtruderAccChange, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_E1_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(1)], screen.handleExtruderAccChange, screen.sendWordValueToDisplay), #endif #endif - VPHELPER(VP_TRAVEL_SPEED, (uint16_t *)&planner.settings.travel_acceleration, ScreenHandler.HandleTravelAccChange, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>), - VPHELPER(VP_FEEDRATE_MIN_SPEED, (uint16_t *)&planner.settings.min_feedrate_mm_s, ScreenHandler.HandleFeedRateMinChange, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>), - VPHELPER(VP_T_F_SPEED, (uint16_t *)&planner.settings.min_travel_feedrate_mm_s, ScreenHandler.HandleMin_T_F, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>), - VPHELPER(VP_ACC_SPEED, (uint16_t *)&planner.settings.acceleration, ScreenHandler.HandleAccChange, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_TRAVEL_SPEED, (uint16_t *)&planner.settings.travel_acceleration, screen.handleTravelAccChange, screen.sendFloatAsIntValueToDisplay<0>), + VPHELPER(VP_FEEDRATE_MIN_SPEED, (uint16_t *)&planner.settings.min_feedrate_mm_s, screen.handleFeedRateMinChange, screen.sendFloatAsIntValueToDisplay<0>), + VPHELPER(VP_T_F_SPEED, (uint16_t *)&planner.settings.min_travel_feedrate_mm_s, screen.handleMin_T_F, screen.sendFloatAsIntValueToDisplay<0>), + VPHELPER(VP_ACC_SPEED, (uint16_t *)&planner.settings.acceleration, screen.handleAccChange, screen.sendWordValueToDisplay), - VPHELPER(VP_X_PARK_POS, &mks_park_pos.x, ScreenHandler.GetParkPos, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Y_PARK_POS, &mks_park_pos.y, ScreenHandler.GetParkPos, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Z_PARK_POS, &mks_park_pos.z, ScreenHandler.GetParkPos, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_X_PARK_POS, &mks_park_pos.x, screen.getParkPos, screen.sendWordValueToDisplay), + VPHELPER(VP_Y_PARK_POS, &mks_park_pos.y, screen.getParkPos, screen.sendWordValueToDisplay), + VPHELPER(VP_Z_PARK_POS, &mks_park_pos.z, screen.getParkPos, screen.sendWordValueToDisplay), #if ENABLED(PREVENT_COLD_EXTRUSION) - VPHELPER(VP_MIN_EX_T, &thermalManager.extrude_min_temp, ScreenHandler.HandleGetExMinTemp, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_MIN_EX_T, &thermalManager.extrude_min_temp, screen.handleGetExMinTemp, screen.sendWordValueToDisplay), #endif #if ENABLED(SENSORLESS_HOMING) // TMC SENSORLESS Setting #if X_HAS_STEALTHCHOP - VPHELPER(VP_TMC_X_STEP, &tmc_step.x, ScreenHandler.TMC_ChangeConfig, ScreenHandler.DGUSLCD_SendTMCStepValue), + VPHELPER(VP_TMC_X_STEP, &tmc_step.x, screen.tmcChangeConfig, screen.sendTMCStepValue), #endif #if Y_HAS_STEALTHCHOP - VPHELPER(VP_TMC_Y_STEP, &tmc_step.y, ScreenHandler.TMC_ChangeConfig, ScreenHandler.DGUSLCD_SendTMCStepValue), + VPHELPER(VP_TMC_Y_STEP, &tmc_step.y, screen.tmcChangeConfig, screen.sendTMCStepValue), #endif #if Z_HAS_STEALTHCHOP - VPHELPER(VP_TMC_Z_STEP, &tmc_step.z, ScreenHandler.TMC_ChangeConfig, ScreenHandler.DGUSLCD_SendTMCStepValue), + VPHELPER(VP_TMC_Z_STEP, &tmc_step.z, screen.tmcChangeConfig, screen.sendTMCStepValue), #endif #endif #if HAS_TRINAMIC_CONFIG // TMC Current Setting #if AXIS_IS_TMC(X) - VPHELPER(VP_TMC_X_Current, &stepperX.val_mA, ScreenHandler.TMC_ChangeConfig, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_TMC_X_Current, &stepperX.val_mA, screen.tmcChangeConfig, screen.sendWordValueToDisplay), #endif #if AXIS_IS_TMC(Y) - VPHELPER(VP_TMC_Y_Current, &stepperY.val_mA, ScreenHandler.TMC_ChangeConfig, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_TMC_Y_Current, &stepperY.val_mA, screen.tmcChangeConfig, screen.sendWordValueToDisplay), #endif #if AXIS_IS_TMC(Z) - VPHELPER(VP_TMC_Z_Current, &stepperZ.val_mA, ScreenHandler.TMC_ChangeConfig, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_TMC_Z_Current, &stepperZ.val_mA, screen.tmcChangeConfig, screen.sendWordValueToDisplay), #endif #if AXIS_IS_TMC(E0) - VPHELPER(VP_TMC_E0_Current, &stepperE0.val_mA, ScreenHandler.TMC_ChangeConfig, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_TMC_E0_Current, &stepperE0.val_mA, screen.tmcChangeConfig, screen.sendWordValueToDisplay), #endif #if AXIS_IS_TMC(E1) - VPHELPER(VP_TMC_E1_Current, &stepperE1.val_mA, ScreenHandler.TMC_ChangeConfig, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_TMC_E1_Current, &stepperE1.val_mA, screen.tmcChangeConfig, screen.sendWordValueToDisplay), #endif #if AXIS_IS_TMC(X2) - VPHELPER(VP_TMC_X1_Current, &stepperX2.val_mA, ScreenHandler.TMC_ChangeConfig, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_TMC_X1_Current, &stepperX2.val_mA, screen.tmcChangeConfig, screen.sendWordValueToDisplay), #endif #if AXIS_IS_TMC(Y2) - VPHELPER(VP_TMC_Y1_Current, &stepperY2.val_mA, ScreenHandler.TMC_ChangeConfig, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_TMC_Y1_Current, &stepperY2.val_mA, screen.tmcChangeConfig, screen.sendWordValueToDisplay), #endif #if AXIS_IS_TMC(Z2) - VPHELPER(VP_TMC_Z1_Current, &stepperZ2.val_mA, ScreenHandler.TMC_ChangeConfig, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_TMC_Z1_Current, &stepperZ2.val_mA, screen.tmcChangeConfig, screen.sendWordValueToDisplay), #endif #endif - VPHELPER(VP_EEPROM_CTRL, nullptr, ScreenHandler.EEPROM_CTRL, nullptr), - VPHELPER(VP_LEVEL_BUTTON, nullptr, ScreenHandler.Level_Ctrl, nullptr), - VPHELPER(VP_LANGUAGE_CHANGE, nullptr, ScreenHandler.LanguageChange, nullptr), + VPHELPER(VP_EEPROM_CTRL, nullptr, screen.eepromControl, nullptr), + VPHELPER(VP_LEVEL_BUTTON, nullptr, screen.levelControl, nullptr), + VPHELPER(VP_LANGUAGE_CHANGE, nullptr, screen.languageChange, nullptr), - //VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, ScreenHandler.HandleLiveAdjustZ, nullptr), + //VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, screen.handleLiveAdjustZ, nullptr), - VPHELPER(VP_SD_Print_LiveAdjustZ_Confirm, nullptr, ScreenHandler.ZoffsetConfirm, nullptr), + VPHELPER(VP_SD_Print_LiveAdjustZ_Confirm, nullptr, screen.zOffsetConfirm, nullptr), - VPHELPER(VP_ZOffset_Distance,nullptr ,ScreenHandler.GetZoffsetDistance, nullptr), - VPHELPER(VP_MESH_LEVEL_ADJUST, nullptr, ScreenHandler.MeshLevelDistanceConfig, nullptr), - VPHELPER(VP_MESH_LEVEL_POINT,nullptr, ScreenHandler.MeshLevel,nullptr), + VPHELPER(VP_ZOffset_Distance,nullptr ,screen.getZoffsetDistance, nullptr), + VPHELPER(VP_MESH_LEVEL_ADJUST, nullptr, screen.meshLevelDistanceConfig, nullptr), + VPHELPER(VP_MESH_LEVEL_POINT,nullptr, screen.meshLevel, nullptr), #if ENABLED(PREVENT_COLD_EXTRUSION) - VPHELPER(VP_Min_EX_T_E, &thermalManager.extrude_min_temp, ScreenHandler.GetMinExtrudeTemp, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_Min_EX_T_E, &thermalManager.extrude_min_temp, screen.getMinExtrudeTemp, screen.sendWordValueToDisplay), #endif - VPHELPER(VP_AutoTurnOffSw, nullptr, ScreenHandler.GetTurnOffCtrl, nullptr), + VPHELPER(VP_AutoTurnOffSw, nullptr, screen.getTurnOffCtrl, nullptr), #if HAS_HOTEND - VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], ScreenHandler.HandleStepPerMMExtruderChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>), + VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], screen.handleStepPerMMExtruderChanged, screen.sendFloatAsIntValueToDisplay<0>), #if HAS_MULTI_HOTEND - VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], ScreenHandler.HandleStepPerMMExtruderChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>), + VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], screen.handleStepPerMMExtruderChanged, screen.sendFloatAsIntValueToDisplay<0>), #endif #endif // SDCard File listing #if HAS_MEDIA - VPHELPER(VP_SD_FileSelected, nullptr, ScreenHandler.DGUSLCD_SD_FileSelected, nullptr), - VPHELPER(VP_SD_ScrollEvent, nullptr, ScreenHandler.DGUSLCD_SD_ScrollFilelist, nullptr), - VPHELPER(VP_SD_FileSelectConfirm, nullptr, ScreenHandler.DGUSLCD_SD_StartPrint, nullptr), - VPHELPER_STR(VP_SD_FileName0, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName1, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName2, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName3, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName4, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName5, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName6, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName7, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName8, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName9, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER(VP_SD_ResumePauseAbort, nullptr, ScreenHandler.DGUSLCD_SD_ResumePauseAbort, nullptr), - VPHELPER(VP_SD_AbortPrintConfirmed, nullptr, ScreenHandler.DGUSLCD_SD_ReallyAbort, nullptr), - VPHELPER(VP_SD_Print_Setting, nullptr, ScreenHandler.DGUSLCD_SD_PrintTune, nullptr), + VPHELPER(VP_SD_FileSelected, nullptr, screen.sdFileSelected, nullptr), + VPHELPER(VP_SD_ScrollEvent, nullptr, screen.sdScrollFilelist, nullptr), + VPHELPER(VP_SD_FileSelectConfirm, nullptr, screen.sdStartPrint, nullptr), + VPHELPER_STR(VP_SD_FileName0, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName1, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName2, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName3, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName4, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName5, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName6, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName7, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName8, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName9, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER(VP_SD_ResumePauseAbort, nullptr, screen.sdResumePauseAbort, nullptr), + VPHELPER(VP_SD_AbortPrintConfirmed, nullptr, screen.sdReallyAbort, nullptr), + VPHELPER(VP_SD_Print_Setting, nullptr, screen.sdPrintTune, nullptr), #if ENABLED(BABYSTEPPING) - VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, ScreenHandler.HandleLiveAdjustZ, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<2>), - VPHELPER(VP_ZOffset_DE_DIS, &z_offset_add, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, screen.handleLiveAdjustZ, screen.sendFloatAsIntValueToDisplay<2>), + VPHELPER(VP_ZOffset_DE_DIS, &z_offset_add, nullptr, screen.sendFloatAsLongValueToDisplay<2>), #endif #if HAS_BED_PROBE - VPHELPER(VP_OFFSET_X, &probe.offset.x, ScreenHandler.GetOffsetValue,ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_OFFSET_Y, &probe.offset.y, ScreenHandler.GetOffsetValue,ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_OFFSET_Z, &probe.offset.z, ScreenHandler.GetOffsetValue,ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_OFFSET_X, &probe.offset.x, screen.getOffsetValue,screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_OFFSET_Y, &probe.offset.y, screen.getOffsetValue,screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_OFFSET_Z, &probe.offset.z, screen.getOffsetValue,screen.sendFloatAsLongValueToDisplay<2>), #endif #else - VPHELPER(VP_SD_FileSelected, nullptr, ScreenHandler.PrintReturn, nullptr), + VPHELPER(VP_SD_FileSelected, nullptr, screen.printReturn, nullptr), #endif #if ENABLED(DGUS_UI_WAITING) - VPHELPER(VP_WAITING_STATUS, nullptr, nullptr, ScreenHandler.DGUSLCD_SendWaitingStatusToDisplay), + VPHELPER(VP_WAITING_STATUS, nullptr, nullptr, screen.sendWaitingStatusToDisplay), #endif // Messages for the User, shared by the popup and the kill screen. They can't be autouploaded as we do not buffer content. - //{.VP = VP_MSGSTR1, .memadr = nullptr, .size = VP_MSGSTR1_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM}, - //{.VP = VP_MSGSTR2, .memadr = nullptr, .size = VP_MSGSTR2_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM}, - //{.VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM}, - //{.VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM}, + //{.VP = VP_MSGSTR1, .memadr = nullptr, .size = VP_MSGSTR1_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM}, + //{.VP = VP_MSGSTR2, .memadr = nullptr, .size = VP_MSGSTR2_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM}, + //{.VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM}, + //{.VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM}, - {.VP = VP_MSGSTR1, .memadr = nullptr, .size = VP_MSGSTR1_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay_Language}, - {.VP = VP_MSGSTR2, .memadr = nullptr, .size = VP_MSGSTR2_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay_Language}, - {.VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay_Language}, - {.VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay_Language}, + {.VP = VP_MSGSTR1, .memadr = nullptr, .size = VP_MSGSTR1_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplay_Language}, + {.VP = VP_MSGSTR2, .memadr = nullptr, .size = VP_MSGSTR2_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplay_Language}, + {.VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplay_Language}, + {.VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplay_Language}, VPHELPER(0, 0, 0, 0) // must be last entry. }; diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.h b/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.h index 63586e7fe5..53e57e1c65 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.h +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.h @@ -124,21 +124,21 @@ typedef struct { extern NOZZLE_PARK_DEF nozzle_park_mks; -enum DGUSLCD_Screens : uint8_t { +enum DGUS_ScreenID : uint8_t { #if ENABLED(USE_MKS_GREEN_UI) - DGUSLCD_SCREEN_BOOT = 33, - DGUSLCD_SCREEN_MAIN = 60, - DGUSLCD_SCREEN_STATUS = 60, - DGUSLCD_SCREEN_STATUS2 = 60, - DGUSLCD_SCREEN_PREHEAT = 18, - DGUSLCD_SCREEN_POWER_LOSS = 100, - DGUSLCD_SCREEN_MANUALMOVE = 192, - DGUSLCD_SCREEN_UTILITY = 120, - DGUSLCD_SCREEN_FILAMENT_UNLOADING = 158, - DGUSLCD_SCREEN_SDFILELIST = 15, - DGUSLCD_SCREEN_SDPRINTMANIPULATION = 15, - DGUSLCD_SCREEN_SDPRINTTUNE = 17, + DGUS_SCREEN_BOOT = 33, + DGUS_SCREEN_MAIN = 60, + DGUS_SCREEN_STATUS = 60, + DGUS_SCREEN_STATUS2 = 60, + DGUS_SCREEN_PREHEAT = 18, + DGUS_SCREEN_POWER_LOSS = 100, + DGUS_SCREEN_MANUALMOVE = 192, + DGUS_SCREEN_UTILITY = 120, + DGUS_SCREEN_FILAMENT_UNLOADING = 158, + DGUS_SCREEN_SDFILELIST = 15, + DGUS_SCREEN_SDPRINTMANIPULATION = 15, + DGUS_SCREEN_SDPRINTTUNE = 17, MKSLCD_SCREEN_BOOT = 33, MKSLCD_SCREEN_HOME = 60, // MKS main page @@ -178,19 +178,19 @@ enum DGUSLCD_Screens : uint8_t { #else - DGUSLCD_SCREEN_BOOT = 120, - DGUSLCD_SCREEN_MAIN = 1, + DGUS_SCREEN_BOOT = 120, + DGUS_SCREEN_MAIN = 1, - DGUSLCD_SCREEN_STATUS = 1, - DGUSLCD_SCREEN_STATUS2 = 1, - DGUSLCD_SCREEN_PREHEAT = 18, - DGUSLCD_SCREEN_POWER_LOSS = 100, - DGUSLCD_SCREEN_MANUALMOVE = 192, - DGUSLCD_SCREEN_UTILITY = 120, - DGUSLCD_SCREEN_FILAMENT_UNLOADING = 158, - DGUSLCD_SCREEN_SDFILELIST = 15, - DGUSLCD_SCREEN_SDPRINTMANIPULATION = 15, - DGUSLCD_SCREEN_SDPRINTTUNE = 17, + DGUS_SCREEN_STATUS = 1, + DGUS_SCREEN_STATUS2 = 1, + DGUS_SCREEN_PREHEAT = 18, + DGUS_SCREEN_POWER_LOSS = 100, + DGUS_SCREEN_MANUALMOVE = 192, + DGUS_SCREEN_UTILITY = 120, + DGUS_SCREEN_FILAMENT_UNLOADING = 158, + DGUS_SCREEN_SDFILELIST = 15, + DGUS_SCREEN_SDPRINTMANIPULATION = 15, + DGUS_SCREEN_SDPRINTTUNE = 17, MKSLCD_SCREEN_BOOT = 0, MKSLCD_SCREEN_HOME = 1, // MKS main page @@ -234,11 +234,11 @@ enum DGUSLCD_Screens : uint8_t { #endif - DGUSLCD_SCREEN_CONFIRM = 240, - DGUSLCD_SCREEN_KILL = 250, ///< Kill Screen. Must always be 250 (to be able to display "Error wrong LCD Version") - DGUSLCD_SCREEN_WAITING = 251, - DGUSLCD_SCREEN_POPUP = 252, ///< special target, popup screen will also return this code to say "return to previous screen" - DGUSLCD_SCREEN_UNUSED = 255 + DGUS_SCREEN_CONFIRM = 240, + DGUS_SCREEN_KILL = 250, ///< Kill Screen. Must always be 250 (to be able to display "Error wrong LCD Version") + DGUS_SCREEN_WAITING = 251, + DGUS_SCREEN_POPUP = 252, ///< special target, popup screen will also return this code to say "return to previous screen" + DGUS_SCREEN_UNUSED = 255 }; diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp index ad89a715c3..16aeeab1a1 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp @@ -56,20 +56,20 @@ MKS_Language mks_language_index; // Initialized by settings.load() #if 0 void DGUSScreenHandlerMKS::sendinfoscreen_ch(const uint16_t *line1, const uint16_t *line2, const uint16_t *line3, const uint16_t *line4) { - dgusdisplay.WriteVariable(VP_MSGSTR1, line1, 32, true); - dgusdisplay.WriteVariable(VP_MSGSTR2, line2, 32, true); - dgusdisplay.WriteVariable(VP_MSGSTR3, line3, 32, true); - dgusdisplay.WriteVariable(VP_MSGSTR4, line4, 32, true); + dgus.writeVariable(VP_MSGSTR1, line1, 32, true); + dgus.writeVariable(VP_MSGSTR2, line2, 32, true); + dgus.writeVariable(VP_MSGSTR3, line3, 32, true); + dgus.writeVariable(VP_MSGSTR4, line4, 32, true); } void DGUSScreenHandlerMKS::sendinfoscreen_en(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4) { - dgusdisplay.WriteVariable(VP_MSGSTR1, line1, 32, true); - dgusdisplay.WriteVariable(VP_MSGSTR2, line2, 32, true); - dgusdisplay.WriteVariable(VP_MSGSTR3, line3, 32, true); - dgusdisplay.WriteVariable(VP_MSGSTR4, line4, 32, true); + dgus.writeVariable(VP_MSGSTR1, line1, 32, true); + dgus.writeVariable(VP_MSGSTR2, line2, 32, true); + dgus.writeVariable(VP_MSGSTR3, line3, 32, true); + dgus.writeVariable(VP_MSGSTR4, line4, 32, true); } -void DGUSScreenHandlerMKS::sendinfoscreen(const void *line1, const void *line2, const void *line3, const void *line4, uint16_t language) { +void DGUSScreenHandlerMKS::sendInfoScreen(const void *line1, const void *line2, const void *line3, const void *line4, uint16_t language) { if (language == MKS_English) DGUSScreenHandlerMKS::sendinfoscreen_en((char *)line1, (char *)line2, (char *)line3, (char *)line4); else if (language == MKS_SimpleChinese) @@ -78,78 +78,78 @@ void DGUSScreenHandlerMKS::sendinfoscreen(const void *line1, const void *line2, #endif -void DGUSScreenHandlerMKS::DGUSLCD_SendFanToDisplay(DGUS_VP_Variable &var) { +void DGUSScreenHandlerMKS::sendFanToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { uint16_t tmp = *(uint8_t *) var.memadr; // +1 -> avoid rounding issues for the display. // tmp = map(tmp, 0, 255, 0, 100); - dgusdisplay.WriteVariable(var.VP, tmp); + dgus.writeVariable(var.VP, tmp); } } -void DGUSScreenHandlerMKS::DGUSLCD_SendBabyStepToDisplay(DGUS_VP_Variable &var) { +void DGUSScreenHandlerMKS::sendBabyStepToDisplay(DGUS_VP_Variable &var) { float value = current_position.z; value *= cpow(10, 2); - dgusdisplay.WriteVariable(VP_SD_Print_Baby, (uint16_t)value); + dgus.writeVariable(VP_SD_Print_Baby, (uint16_t)value); } -void DGUSScreenHandlerMKS::DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var) { +void DGUSScreenHandlerMKS::sendPrintTimeToDisplay(DGUS_VP_Variable &var) { duration_t elapsed = print_job_timer.duration(); uint32_t time = elapsed.value; - dgusdisplay.WriteVariable(VP_PrintTime_H, uint16_t(time / 3600)); - dgusdisplay.WriteVariable(VP_PrintTime_M, uint16_t(time % 3600 / 60)); - dgusdisplay.WriteVariable(VP_PrintTime_S, uint16_t((time % 3600) % 60)); + dgus.writeVariable(VP_PrintTime_H, uint16_t(time / 3600)); + dgus.writeVariable(VP_PrintTime_M, uint16_t(time % 3600 / 60)); + dgus.writeVariable(VP_PrintTime_S, uint16_t((time % 3600) % 60)); } -void DGUSScreenHandlerMKS::DGUSLCD_SetUint8(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::setUint8(DGUS_VP_Variable &var, void *val_ptr) { if (var.memadr) { const uint16_t value = BE16_P(val_ptr); *(uint8_t*)var.memadr = map(constrain(value, 0, 255), 0, 255, 0, 255); } } -void DGUSScreenHandlerMKS::DGUSLCD_SendGbkToDisplay(DGUS_VP_Variable &var) { +void DGUSScreenHandlerMKS::sendGbkToDisplay(DGUS_VP_Variable &var) { uint16_t *tmp = (uint16_t*) var.memadr; - dgusdisplay.WriteVariable(var.VP, tmp, var.size, true); + dgus.writeVariable(var.VP, tmp, var.size, true); } -void DGUSScreenHandlerMKS::DGUSLCD_SendStringToDisplay_Language(DGUS_VP_Variable &var) { +void DGUSScreenHandlerMKS::sendStringToDisplay_Language(DGUS_VP_Variable &var) { if (mks_language_index == MKS_English) { char *tmp = (char*) var.memadr; - dgusdisplay.WriteVariable(var.VP, tmp, var.size, true); + dgus.writeVariable(var.VP, tmp, var.size, true); } else if (mks_language_index == MKS_SimpleChinese) { uint16_t *tmp = (uint16_t *)var.memadr; - dgusdisplay.WriteVariable(var.VP, tmp, var.size, true); + dgus.writeVariable(var.VP, tmp, var.size, true); } } -void DGUSScreenHandlerMKS::DGUSLCD_SendTMCStepValue(DGUS_VP_Variable &var) { +void DGUSScreenHandlerMKS::sendTMCStepValue(DGUS_VP_Variable &var) { #if ENABLED(SENSORLESS_HOMING) #if X_HAS_STEALTHCHOP tmc_step.x = stepperX.homing_threshold(); - dgusdisplay.WriteVariable(var.VP, *(int16_t*)var.memadr); + dgus.writeVariable(var.VP, *(int16_t*)var.memadr); #endif #if Y_HAS_STEALTHCHOP tmc_step.y = stepperY.homing_threshold(); - dgusdisplay.WriteVariable(var.VP, *(int16_t*)var.memadr); + dgus.writeVariable(var.VP, *(int16_t*)var.memadr); #endif #if Z_HAS_STEALTHCHOP tmc_step.z = stepperZ.homing_threshold(); - dgusdisplay.WriteVariable(var.VP, *(int16_t*)var.memadr); + dgus.writeVariable(var.VP, *(int16_t*)var.memadr); #endif #endif } #if HAS_MEDIA - void DGUSScreenHandler::DGUSLCD_SD_FileSelected(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::sdFileSelected(DGUS_VP_Variable &var, void *val_ptr) { uint16_t touched_nr = (int16_t)BE16_P(val_ptr) + top_file; if (touched_nr != 0x0F && touched_nr > filelist.count()) return; if (!filelist.seek(touched_nr) && touched_nr != 0x0F) return; if (touched_nr == 0x0F) { if (filelist.isAtRootDir()) - GotoScreen(DGUSLCD_SCREEN_MAIN); + gotoScreen(DGUS_SCREEN_MAIN); else filelist.upDir(); return; @@ -158,28 +158,28 @@ void DGUSScreenHandlerMKS::DGUSLCD_SendTMCStepValue(DGUS_VP_Variable &var) { if (filelist.isDir()) { filelist.changeDir(filelist.filename()); top_file = 0; - ForceCompleteUpdate(); + forceCompleteUpdate(); return; } #if ENABLED(DGUS_PRINT_FILENAME) // Send print filename - dgusdisplay.WriteVariable(VP_SD_Print_Filename, filelist.filename(), VP_SD_FileName_LEN, true); + dgus.writeVariable(VP_SD_Print_Filename, filelist.filename(), VP_SD_FileName_LEN, true); #endif // Setup Confirmation screen file_to_print = touched_nr; - GotoScreen(MKSLCD_SCREEN_PRINT_CONFIRM); + gotoScreen(MKSLCD_SCREEN_PRINT_CONFIRM); } - void DGUSScreenHandler::DGUSLCD_SD_StartPrint(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::sdStartPrint(DGUS_VP_Variable &var, void *val_ptr) { if (!filelist.seek(file_to_print)) return; ExtUI::printFile(filelist.shortFilename()); - GotoScreen(MKSLCD_SCREEN_PRINT); + gotoScreen(MKSLCD_SCREEN_PRINT); z_offset_add = 0; } - void DGUSScreenHandler::DGUSLCD_SD_ResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::sdResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr) { if (!ExtUI::isPrintingFromMedia()) return; // avoid race condition when user stays in this menu and printer finishes. switch (BE16_P(val_ptr)) { @@ -187,13 +187,13 @@ void DGUSScreenHandlerMKS::DGUSLCD_SendTMCStepValue(DGUS_VP_Variable &var) { auto cs = getCurrentScreen(); if (runout_mks.runout_status != RUNOUT_WAITING_STATUS && runout_mks.runout_status != UNRUNOUT_STATUS) { if (cs == MKSLCD_SCREEN_PRINT || cs == MKSLCD_SCREEN_PAUSE) - GotoScreen(MKSLCD_SCREEN_PAUSE); + gotoScreen(MKSLCD_SCREEN_PAUSE); return; } else runout_mks.runout_status = UNRUNOUT_STATUS; - GotoScreen(MKSLCD_SCREEN_PRINT); + gotoScreen(MKSLCD_SCREEN_PRINT); if (ExtUI::isPrintingFromMediaPaused()) { nozzle_park_mks.print_pause_start_flag = 0; @@ -203,7 +203,7 @@ void DGUSScreenHandlerMKS::DGUSLCD_SendTMCStepValue(DGUS_VP_Variable &var) { } break; case 1: // Pause - GotoScreen(MKSLCD_SCREEN_PAUSE); + gotoScreen(MKSLCD_SCREEN_PAUSE); if (!ExtUI::isPrintingFromMediaPaused()) { nozzle_park_mks.print_pause_start_flag = 1; nozzle_park_mks.blstatus = true; @@ -213,12 +213,12 @@ void DGUSScreenHandlerMKS::DGUSLCD_SendTMCStepValue(DGUS_VP_Variable &var) { break; case 2: // Abort - HandleUserConfirmationPopUp(VP_SD_AbortPrintConfirmed, nullptr, PSTR("Abort printing"), filelist.filename(), PSTR("?"), true, true, false, true); + handleUserConfirmationPopUp(VP_SD_AbortPrintConfirmed, nullptr, PSTR("Abort printing"), filelist.filename(), PSTR("?"), true, true, false, true); break; } } - void DGUSScreenHandler::DGUSLCD_SD_SendFilename(DGUS_VP_Variable& var) { + void DGUSScreenHandler::sdSendFilename(DGUS_VP_Variable& var) { uint16_t target_line = (var.VP - VP_SD_FileName0) / VP_SD_FileName_LEN; if (target_line > DGUS_SD_FILESPERSCREEN) return; char tmpfilename[VP_SD_FileName_LEN + 1] = ""; @@ -229,50 +229,50 @@ void DGUSScreenHandlerMKS::DGUSLCD_SendTMCStepValue(DGUS_VP_Variable &var) { snprintf_P(tmpfilename, VP_SD_FileName_LEN, PSTR("%s%c"), filelist.filename(), filelist.isDir() ? '/' : 0); // snprintf_P(tmpfilename, VP_SD_FileName_LEN, PSTR("%s"), filelist.filename()); dir_icon_val = filelist.isDir() ? 0 : 1; } - DGUSLCD_SendStringToDisplay(var); + sendStringToDisplay(var); - dgusdisplay.WriteVariable(VP_File_Pictutr0 + target_line * 2, dir_icon_val); + dgus.writeVariable(VP_File_Pictutr0 + target_line * 2, dir_icon_val); } - void DGUSScreenHandler::SDCardInserted() { + void DGUSScreenHandler::sdCardInserted() { top_file = 0; filelist.refresh(); auto cs = getCurrentScreen(); - if (cs == DGUSLCD_SCREEN_MAIN || cs == DGUSLCD_SCREEN_STATUS) - GotoScreen(MKSLCD_SCREEN_CHOOSE_FILE); + if (cs == DGUS_SCREEN_MAIN || cs == DGUS_SCREEN_STATUS) + gotoScreen(MKSLCD_SCREEN_CHOOSE_FILE); } - void DGUSScreenHandler::SDCardRemoved() { - if (current_screen == DGUSLCD_SCREEN_SDFILELIST - || (current_screen == DGUSLCD_SCREEN_CONFIRM && (ConfirmVP == VP_SD_AbortPrintConfirmed || ConfirmVP == VP_SD_FileSelectConfirm)) - || current_screen == DGUSLCD_SCREEN_SDPRINTMANIPULATION + void DGUSScreenHandler::sdCardRemoved() { + if (current_screenID == DGUS_SCREEN_SDFILELIST + || (current_screenID == DGUS_SCREEN_CONFIRM && (confirmVP == VP_SD_AbortPrintConfirmed || confirmVP == VP_SD_FileSelectConfirm)) + || current_screenID == DGUS_SCREEN_SDPRINTMANIPULATION ) filelist.refresh(); } - void DGUSScreenHandlerMKS::SDPrintingFinished() { + void DGUSScreenHandlerMKS::sdPrintingFinished() { if (DGUSAutoTurnOff) { queue.exhaust(); gcode.process_subcommands_now(F("M81")); } - GotoScreen(MKSLCD_SCREEN_PrintDone); + gotoScreen(MKSLCD_SCREEN_PrintDone); } #else - void DGUSScreenHandlerMKS::PrintReturn(DGUS_VP_Variable& var, void *val_ptr) { + void DGUSScreenHandlerMKS::printReturn(DGUS_VP_Variable& var, void *val_ptr) { const uint16_t value = BE16_P(val_ptr); - if (value == 0x0F) GotoScreen(DGUSLCD_SCREEN_MAIN); + if (value == 0x0F) gotoScreen(DGUS_SCREEN_MAIN); } #endif // HAS_MEDIA -void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::screenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { uint8_t *tmp = (uint8_t*)val_ptr; // The keycode in target is coded as , so 0x0100A means - // from screen 1 (main) to 10 (temperature). DGUSLCD_SCREEN_POPUP is special, + // from screen 1 (main) to 10 (temperature). DGUS_SCREEN_POPUP is special, // meaning "return to previous screen" - DGUSLCD_Screens target = (DGUSLCD_Screens)tmp[1]; + DGUS_ScreenID target = (DGUS_ScreenID)tmp[1]; - // when the dgus had reboot, it will enter the DGUSLCD_SCREEN_MAIN page, + // when the dgus had reboot, it will enter the DGUS_SCREEN_MAIN page, // so user can change any page to use this function, an it will check // if robin nano is printing. when it is, dgus will enter the printing // page to continue print; @@ -283,41 +283,41 @@ void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { // ) { // } // else - // GotoScreen(MKSLCD_SCREEN_PRINT); + // gotoScreen(MKSLCD_SCREEN_PRINT); // return; //} - if (target == DGUSLCD_SCREEN_POPUP) { - SetupConfirmAction(ExtUI::setUserConfirmed); + if (target == DGUS_SCREEN_POPUP) { + setupConfirmAction(ExtUI::setUserConfirmed); // Special handling for popup is to return to previous menu - if (current_screen == DGUSLCD_SCREEN_POPUP && confirm_action_cb) confirm_action_cb(); - PopToOldScreen(); + if (current_screenID == DGUS_SCREEN_POPUP && confirm_action_cb) confirm_action_cb(); + popToOldScreen(); return; } - UpdateNewScreen(target); + updateNewScreen(target); #ifdef DEBUG_DGUSLCD - if (!DGUSLCD_FindScreenVPMapList(target)) DEBUG_ECHOLNPGM("WARNING: No screen Mapping found for ", target); + if (!findScreenVPMapList(target)) DEBUG_ECHOLNPGM("WARNING: No screen Mapping found for ", target); #endif } -void DGUSScreenHandlerMKS::ScreenBackChange(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::screenBackChange(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t target = BE16_P(val_ptr); switch (target) { } } -void DGUSScreenHandlerMKS::ZoffsetConfirm(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::zOffsetConfirm(DGUS_VP_Variable &var, void *val_ptr) { settings.save(); if (printJobOngoing()) - GotoScreen(MKSLCD_SCREEN_PRINT); + gotoScreen(MKSLCD_SCREEN_PRINT); else if (print_job_timer.isPaused) - GotoScreen(MKSLCD_SCREEN_PAUSE); + gotoScreen(MKSLCD_SCREEN_PAUSE); } -void DGUSScreenHandlerMKS::GetTurnOffCtrl(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::getTurnOffCtrl(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t value = BE16_P(val_ptr); switch (value) { case 0 ... 1: DGUSAutoTurnOff = (bool)value; break; @@ -325,14 +325,14 @@ void DGUSScreenHandlerMKS::GetTurnOffCtrl(DGUS_VP_Variable &var, void *val_ptr) } } -void DGUSScreenHandlerMKS::GetMinExtrudeTemp(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::getMinExtrudeTemp(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t value = BE16_P(val_ptr); TERN_(PREVENT_COLD_EXTRUSION, thermalManager.extrude_min_temp = value); mks_min_extrusion_temp = value; settings.save(); } -void DGUSScreenHandlerMKS::GetZoffsetDistance(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::getZoffsetDistance(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t value = BE16_P(val_ptr); float val_distance = 0; switch (value) { @@ -345,29 +345,29 @@ void DGUSScreenHandlerMKS::GetZoffsetDistance(DGUS_VP_Variable &var, void *val_p ZOffset_distance = val_distance; } -void DGUSScreenHandlerMKS::GetManualMovestep(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::getManualMovestep(DGUS_VP_Variable &var, void *val_ptr) { *(uint16_t *)var.memadr = BE16_P(val_ptr); } -void DGUSScreenHandlerMKS::EEPROM_CTRL(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::eepromControl(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t eep_flag = BE16_P(val_ptr); switch (eep_flag) { case 0: settings.save(); settings.load(); // load eeprom data to check the data is right - GotoScreen(MKSLCD_SCREEN_EEP_Config); + gotoScreen(MKSLCD_SCREEN_EEP_Config); break; case 1: settings.reset(); - GotoScreen(MKSLCD_SCREEN_EEP_Config); + gotoScreen(MKSLCD_SCREEN_EEP_Config); break; default: break; } } -void DGUSScreenHandlerMKS::Z_offset_select(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::zOffsetSelect(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t z = BE16_P(val_ptr); switch (z) { case 0: Z_distance = 0.01; break; @@ -377,7 +377,7 @@ void DGUSScreenHandlerMKS::Z_offset_select(DGUS_VP_Variable &var, void *val_ptr) } } -void DGUSScreenHandlerMKS::GetOffsetValue(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::getOffsetValue(DGUS_VP_Variable &var, void *val_ptr) { #if HAS_BED_PROBE const int32_t value = BE32_P(val_ptr); @@ -393,21 +393,21 @@ void DGUSScreenHandlerMKS::GetOffsetValue(DGUS_VP_Variable &var, void *val_ptr) #endif } -void DGUSScreenHandlerMKS::LanguageChange(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::languageChange(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t lag_flag = BE16_P(val_ptr); switch (lag_flag) { case MKS_SimpleChinese: - DGUS_LanguageDisplay(MKS_SimpleChinese); + languageDisplay(MKS_SimpleChinese); mks_language_index = MKS_SimpleChinese; - dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE1, (uint8_t)MKS_Language_Choose); - dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE2, (uint8_t)MKS_Language_NoChoose); + dgus.writeVariable(VP_LANGUAGE_CHANGE1, (uint8_t)MKS_Language_Choose); + dgus.writeVariable(VP_LANGUAGE_CHANGE2, (uint8_t)MKS_Language_NoChoose); settings.save(); break; case MKS_English: - DGUS_LanguageDisplay(MKS_English); + languageDisplay(MKS_English); mks_language_index = MKS_English; - dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE1, (uint8_t)MKS_Language_NoChoose); - dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE2, (uint8_t)MKS_Language_Choose); + dgus.writeVariable(VP_LANGUAGE_CHANGE1, (uint8_t)MKS_Language_NoChoose); + dgus.writeVariable(VP_LANGUAGE_CHANGE2, (uint8_t)MKS_Language_Choose); settings.save(); break; default: break; @@ -418,7 +418,7 @@ void DGUSScreenHandlerMKS::LanguageChange(DGUS_VP_Variable &var, void *val_ptr) grid_count_t mesh_point_count = GRID_MAX_POINTS; #endif -void DGUSScreenHandlerMKS::Level_Ctrl(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::levelControl(DGUS_VP_Variable &var, void *val_ptr) { #if ENABLED(MESH_BED_LEVELING) auto cs = getCurrentScreen(); #endif @@ -440,32 +440,32 @@ void DGUSScreenHandlerMKS::Level_Ctrl(DGUS_VP_Variable &var, void *val_ptr) { if (mks_language_index == MKS_English) { const char level_buf_en[] = "Start Level"; - dgusdisplay.WriteVariable(VP_AutoLevel_1_Dis, level_buf_en, 32, true); + dgus.writeVariable(VP_AutoLevel_1_Dis, level_buf_en, 32, true); } else if (mks_language_index == MKS_SimpleChinese) { const uint16_t level_buf_ch[] = {0xAABF, 0xBCCA, 0xF7B5, 0xBDC6, 0x2000}; - dgusdisplay.WriteVariable(VP_AutoLevel_1_Dis, level_buf_ch, 32, true); + dgus.writeVariable(VP_AutoLevel_1_Dis, level_buf_ch, 32, true); } cs = getCurrentScreen(); - if (cs != MKSLCD_AUTO_LEVEL) GotoScreen(MKSLCD_AUTO_LEVEL); + if (cs != MKSLCD_AUTO_LEVEL) gotoScreen(MKSLCD_AUTO_LEVEL); #else - GotoScreen(MKSLCD_SCREEN_LEVEL); + gotoScreen(MKSLCD_SCREEN_LEVEL); #endif break; case 1: soft_endstop._enabled = true; - GotoScreen(MKSLCD_SCREEM_TOOL); + gotoScreen(MKSLCD_SCREEM_TOOL); break; default: break; } } -void DGUSScreenHandlerMKS::MeshLevelDistanceConfig(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::meshLevelDistanceConfig(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t mesh_dist = BE16_P(val_ptr); switch (mesh_dist) { case 0: mesh_adj_distance = 0.01; break; @@ -475,7 +475,7 @@ void DGUSScreenHandlerMKS::MeshLevelDistanceConfig(DGUS_VP_Variable &var, void * } } -void DGUSScreenHandlerMKS::MeshLevel(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::meshLevel(DGUS_VP_Variable &var, void *val_ptr) { #if ENABLED(MESH_BED_LEVELING) const uint16_t mesh_val = BE16_P(val_ptr); // static uint8_t a_first_level = 1; @@ -524,11 +524,11 @@ void DGUSScreenHandlerMKS::MeshLevel(DGUS_VP_Variable &var, void *val_ptr) { if (mks_language_index == MKS_English) { const char level_buf_en1[] = "Next Point"; - dgusdisplay.WriteVariable(VP_AutoLevel_1_Dis, level_buf_en1, 32, true); + dgus.writeVariable(VP_AutoLevel_1_Dis, level_buf_en1, 32, true); } else if (mks_language_index == MKS_SimpleChinese) { const uint16_t level_buf_ch1[] = {0xC2CF, 0xBBD2, 0xE3B5, 0x2000}; - dgusdisplay.WriteVariable(VP_AutoLevel_1_Dis, level_buf_ch1, 32, true); + dgus.writeVariable(VP_AutoLevel_1_Dis, level_buf_ch1, 32, true); } } else if (mesh_point_count > 1) { // 倒数第二个点 @@ -536,11 +536,11 @@ void DGUSScreenHandlerMKS::MeshLevel(DGUS_VP_Variable &var, void *val_ptr) { mesh_point_count--; if (mks_language_index == MKS_English) { const char level_buf_en2[] = "Next Point"; - dgusdisplay.WriteVariable(VP_AutoLevel_1_Dis, level_buf_en2, 32, true); + dgus.writeVariable(VP_AutoLevel_1_Dis, level_buf_en2, 32, true); } else if (mks_language_index == MKS_SimpleChinese) { const uint16_t level_buf_ch2[] = {0xC2CF, 0xBBD2, 0xE3B5, 0x2000}; - dgusdisplay.WriteVariable(VP_AutoLevel_1_Dis, level_buf_ch2, 32, true); + dgus.writeVariable(VP_AutoLevel_1_Dis, level_buf_ch2, 32, true); } } else if (mesh_point_count == 1) { @@ -548,11 +548,11 @@ void DGUSScreenHandlerMKS::MeshLevel(DGUS_VP_Variable &var, void *val_ptr) { mesh_point_count--; if (mks_language_index == MKS_English) { const char level_buf_en2[] = "Leveling Done"; - dgusdisplay.WriteVariable(VP_AutoLevel_1_Dis, level_buf_en2, 32, true); + dgus.writeVariable(VP_AutoLevel_1_Dis, level_buf_en2, 32, true); } else if (mks_language_index == MKS_SimpleChinese) { const uint16_t level_buf_ch2[] = {0xF7B5, 0xBDC6, 0xEACD, 0xC9B3, 0x2000}; - dgusdisplay.WriteVariable(VP_AutoLevel_1_Dis, level_buf_ch2, 32, true); + dgus.writeVariable(VP_AutoLevel_1_Dis, level_buf_ch2, 32, true); } settings.save(); } @@ -560,7 +560,7 @@ void DGUSScreenHandlerMKS::MeshLevel(DGUS_VP_Variable &var, void *val_ptr) { mesh_point_count = GRID_MAX_POINTS; soft_endstop._enabled = true; settings.save(); - GotoScreen(MKSLCD_SCREEM_TOOL); + gotoScreen(MKSLCD_SCREEM_TOOL); } break; @@ -570,19 +570,19 @@ void DGUSScreenHandlerMKS::MeshLevel(DGUS_VP_Variable &var, void *val_ptr) { #endif // MESH_BED_LEVELING } -void DGUSScreenHandlerMKS::SD_FileBack(DGUS_VP_Variable&, void*) { - GotoScreen(MKSLCD_SCREEN_HOME); +void DGUSScreenHandlerMKS::sdFileBack(DGUS_VP_Variable&, void*) { + gotoScreen(MKSLCD_SCREEN_HOME); } -void DGUSScreenHandlerMKS::LCD_BLK_Adjust(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::lcdBLKAdjust(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t lcd_val = BE16_P(val_ptr); lcd_default_light = constrain(lcd_val, 10, 100); const uint16_t lcd_data[2] = { lcd_default_light, lcd_default_light }; - dgusdisplay.WriteVariable(0x0082, &lcd_data, 5, true); + dgus.writeVariable(0x0082, &lcd_data, 5, true); } -void DGUSScreenHandlerMKS::ManualAssistLeveling(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::manualAssistLeveling(DGUS_VP_Variable &var, void *val_ptr) { const int16_t point_val = BE16_P(val_ptr); // Insist on leveling first time at this screen @@ -635,7 +635,7 @@ void DGUSScreenHandlerMKS::ManualAssistLeveling(DGUS_VP_Variable &var, void *val #define mks_min(a, b) ((a) < (b)) ? (a) : (b) #define mks_max(a, b) ((a) > (b)) ? (a) : (b) -void DGUSScreenHandlerMKS::TMC_ChangeConfig(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::tmcChangeConfig(DGUS_VP_Variable &var, void *val_ptr) { #if EITHER(HAS_TRINAMIC_CONFIG, HAS_STEALTHCHOP) const uint16_t tmc_val = BE16_P(val_ptr); #endif @@ -727,7 +727,7 @@ void DGUSScreenHandlerMKS::TMC_ChangeConfig(DGUS_VP_Variable &var, void *val_ptr #endif } -void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::handleManualMove(DGUS_VP_Variable &var, void *val_ptr) { int16_t movevalue = BE16_P(val_ptr); // Choose Move distance @@ -812,14 +812,14 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { char buf[6]; sprintf(buf, "G28 %c", axiscode); queue.enqueue_one_now(buf); - ForceCompleteUpdate(); + forceCompleteUpdate(); return; } else if (movevalue == 5) { char buf[6]; snprintf_P(buf,6,PSTR("M84 %c"), axiscode); queue.enqueue_one_now(buf); - ForceCompleteUpdate(); + forceCompleteUpdate(); return; } else { @@ -845,13 +845,13 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { if (!old_relative_mode) queue.enqueue_now(F("G90")); } - ForceCompleteUpdate(); + forceCompleteUpdate(); cannotmove: return; } -void DGUSScreenHandlerMKS::GetParkPos(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::getParkPos(DGUS_VP_Variable &var, void *val_ptr) { const int16_t pos = BE16_P(val_ptr); switch (var.VP) { @@ -863,7 +863,7 @@ void DGUSScreenHandlerMKS::GetParkPos(DGUS_VP_Variable &var, void *val_ptr) { skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandlerMKS::HandleChangeLevelPoint(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::handleChangeLevelPoint(DGUS_VP_Variable &var, void *val_ptr) { const int16_t raw = BE16_P(val_ptr); *(int16_t*)var.memadr = raw; @@ -872,7 +872,7 @@ void DGUSScreenHandlerMKS::HandleChangeLevelPoint(DGUS_VP_Variable &var, void *v skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandlerMKS::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::handleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t raw = BE16_P(val_ptr); const float value = (float)raw; @@ -888,7 +888,7 @@ void DGUSScreenHandlerMKS::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *v skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandlerMKS::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::handleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t raw = BE16_P(val_ptr); const float value = (float)raw; @@ -907,7 +907,7 @@ void DGUSScreenHandlerMKS::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandlerMKS::HandleMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::handleMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t raw = BE16_P(val_ptr); const float value = (float)raw; @@ -923,7 +923,7 @@ void DGUSScreenHandlerMKS::HandleMaxSpeedChange(DGUS_VP_Variable &var, void *val skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandlerMKS::HandleExtruderMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::handleExtruderMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t raw = BE16_P(val_ptr); const float value = (float)raw; @@ -942,7 +942,7 @@ void DGUSScreenHandlerMKS::HandleExtruderMaxSpeedChange(DGUS_VP_Variable &var, v skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandlerMKS::HandleMaxAccChange(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::handleMaxAccChange(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t raw = BE16_P(val_ptr); const float value = (float)raw; @@ -958,7 +958,7 @@ void DGUSScreenHandlerMKS::HandleMaxAccChange(DGUS_VP_Variable &var, void *val_p skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandlerMKS::HandleExtruderAccChange(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::handleExtruderAccChange(DGUS_VP_Variable &var, void *val_ptr) { uint16_t raw = BE16_P(val_ptr); float value = (float)raw; ExtUI::extruder_t extruder; @@ -976,32 +976,32 @@ void DGUSScreenHandlerMKS::HandleExtruderAccChange(DGUS_VP_Variable &var, void * skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandlerMKS::HandleTravelAccChange(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::handleTravelAccChange(DGUS_VP_Variable &var, void *val_ptr) { uint16_t travel = BE16_P(val_ptr); planner.settings.travel_acceleration = (float)travel; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandlerMKS::HandleFeedRateMinChange(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::handleFeedRateMinChange(DGUS_VP_Variable &var, void *val_ptr) { uint16_t t = BE16_P(val_ptr); planner.settings.min_feedrate_mm_s = (float)t; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandlerMKS::HandleMin_T_F(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::handleMin_T_F(DGUS_VP_Variable &var, void *val_ptr) { uint16_t t_f = BE16_P(val_ptr); planner.settings.min_travel_feedrate_mm_s = (float)t_f; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandlerMKS::HandleAccChange(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::handleAccChange(DGUS_VP_Variable &var, void *val_ptr) { uint16_t acc = BE16_P(val_ptr); planner.settings.acceleration = (float)acc; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } #if ENABLED(PREVENT_COLD_EXTRUSION) - void DGUSScreenHandlerMKS::HandleGetExMinTemp(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandlerMKS::handleGetExMinTemp(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t ex_min_temp = BE16_P(val_ptr); thermalManager.extrude_min_temp = ex_min_temp; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel @@ -1009,7 +1009,7 @@ void DGUSScreenHandlerMKS::HandleAccChange(DGUS_VP_Variable &var, void *val_ptr) #endif #if HAS_PID_HEATING - void DGUSScreenHandler::HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t rawvalue = BE16_P(val_ptr); const float value = float(rawvalue); float newvalue = 0; @@ -1041,7 +1041,7 @@ void DGUSScreenHandlerMKS::HandleAccChange(DGUS_VP_Variable &var, void *val_ptr) #endif // HAS_PID_HEATING #if ENABLED(BABYSTEPPING) - void DGUSScreenHandler::HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr) { const float step = ZOffset_distance; const uint16_t flag = BE16_P(val_ptr); @@ -1078,11 +1078,11 @@ void DGUSScreenHandlerMKS::HandleAccChange(DGUS_VP_Variable &var, void *val_ptr) default: break; } - ForceCompleteUpdate(); + forceCompleteUpdate(); } #endif // BABYSTEPPING -void DGUSScreenHandlerMKS::GetManualFilament(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::getManualFilament(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t len = BE16_P(val_ptr); const float value = (float)len; @@ -1091,14 +1091,14 @@ void DGUSScreenHandlerMKS::GetManualFilament(DGUS_VP_Variable &var, void *val_pt skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandlerMKS::GetManualFilamentSpeed(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandlerMKS::getManualFilamentSpeed(DGUS_VP_Variable &var, void *val_ptr) { const uint16_t len = BE16_P(val_ptr); filamentSpeed_mm_s = len; skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel } -void DGUSScreenHandlerMKS::FilamentLoadUnload(DGUS_VP_Variable &var, void *val_ptr, const int filamentDir) { +void DGUSScreenHandlerMKS::filamentLoadUnload(DGUS_VP_Variable &var, void *val_ptr, const int filamentDir) { #if EITHER(HAS_MULTI_HOTEND, SINGLENOZZLE) uint8_t swap_tool = 0; #else @@ -1138,9 +1138,9 @@ void DGUSScreenHandlerMKS::FilamentLoadUnload(DGUS_VP_Variable &var, void *val_p #if BOTH(HAS_HOTEND, PREVENT_COLD_EXTRUSION) if (hotend_too_cold) { if (thermalManager.targetTooColdToExtrude(hotend_too_cold - 1)) thermalManager.setTargetHotend(thermalManager.extrude_min_temp, hotend_too_cold - 1); - sendinfoscreen(F("NOTICE"), nullptr, F("Please wait."), F("Nozzle heating!"), true, true, true, true); - SetupConfirmAction(nullptr); - GotoScreen(DGUSLCD_SCREEN_POPUP); + sendInfoScreen(F("NOTICE"), nullptr, F("Please wait."), F("Nozzle heating!"), true, true, true, true); + setupConfirmAction(nullptr); + gotoScreen(DGUS_SCREEN_POPUP); } #endif @@ -1159,7 +1159,7 @@ void DGUSScreenHandlerMKS::FilamentLoadUnload(DGUS_VP_Variable &var, void *val_p } /** - * M1002: Do a tool-change and relative move for FilamentLoadUnload + * M1002: Do a tool-change and relative move for filamentLoadUnload * within the G-code execution window for best concurrency. */ void GcodeSuite::M1002() { @@ -1181,17 +1181,17 @@ void GcodeSuite::M1002() { axis_relative = old_axis_relative; } -void DGUSScreenHandlerMKS::FilamentLoad(DGUS_VP_Variable &var, void *val_ptr) { - FilamentLoadUnload(var, val_ptr, 1); +void DGUSScreenHandlerMKS::filamentLoad(DGUS_VP_Variable &var, void *val_ptr) { + filamentLoadUnload(var, val_ptr, 1); } -void DGUSScreenHandlerMKS::FilamentUnLoad(DGUS_VP_Variable &var, void *val_ptr) { - FilamentLoadUnload(var, val_ptr, -1); +void DGUSScreenHandlerMKS::filamentUnload(DGUS_VP_Variable &var, void *val_ptr) { + filamentLoadUnload(var, val_ptr, -1); } #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) - void DGUSScreenHandler::HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleFilamentOption(DGUS_VP_Variable &var, void *val_ptr) { uint8_t e_temp = 0; filament_data.heated = false; uint16_t preheat_option = BE16_P(val_ptr); @@ -1237,7 +1237,7 @@ void DGUSScreenHandlerMKS::FilamentUnLoad(DGUS_VP_Variable &var, void *val_ptr) #if HAS_MULTI_HOTEND thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E1); #endif - GotoScreen(DGUSLCD_SCREEN_UTILITY); + gotoScreen(DGUS_SCREEN_UTILITY); } else { // Go to the preheat screen to show the heating progress switch (var.VP) { @@ -1258,7 +1258,7 @@ void DGUSScreenHandlerMKS::FilamentUnLoad(DGUS_VP_Variable &var, void *val_ptr) } } - void DGUSScreenHandler::HandleFilamentLoadUnload(DGUS_VP_Variable &var) { + void DGUSScreenHandler::handleFilamentLoadUnload(DGUS_VP_Variable &var) { if (filament_data.action <= 0) return; // If we close to the target temperature, we can start load or unload the filament @@ -1274,7 +1274,7 @@ void DGUSScreenHandlerMKS::FilamentUnLoad(DGUS_VP_Variable &var, void *val_ptr) } else { // unload filament if (!filament_data.heated) { - GotoScreen(DGUSLCD_SCREEN_FILAMENT_UNLOADING); + gotoScreen(DGUS_SCREEN_FILAMENT_UNLOADING); filament_data.heated = true; } // Before unloading extrude to prevent jamming @@ -1293,21 +1293,21 @@ void DGUSScreenHandlerMKS::FilamentUnLoad(DGUS_VP_Variable &var, void *val_ptr) #endif // DGUS_FILAMENT_LOADUNLOAD bool DGUSScreenHandlerMKS::loop() { - dgusdisplay.loop(); + dgus.loop(); const millis_t ms = millis(); static millis_t next_event_ms = 0; static uint8_t language_times = 2; - if (!IsScreenComplete() || ELAPSED(ms, next_event_ms)) { + if (!isScreenComplete() || ELAPSED(ms, next_event_ms)) { next_event_ms = ms + DGUS_UPDATE_INTERVAL_MS; - UpdateScreenVPData(); + updateScreenVPData(); } if (language_times != 0) { - LanguagePInit(); - DGUS_LanguageDisplay(mks_language_index); + languagePInit(); + languageDisplay(mks_language_index); language_times--; } @@ -1326,40 +1326,40 @@ bool DGUSScreenHandlerMKS::loop() { thermalManager.extrude_min_temp = mks_min_extrusion_temp; #endif - DGUS_ExtrudeLoadInit(); + extrudeLoadInit(); - TERN_(DGUS_MKS_RUNOUT_SENSOR, DGUS_RunoutInit()); + TERN_(DGUS_MKS_RUNOUT_SENSOR, runoutInit()); if (TERN0(POWER_LOSS_RECOVERY, recovery.valid())) - GotoScreen(DGUSLCD_SCREEN_POWER_LOSS); + gotoScreen(DGUS_SCREEN_POWER_LOSS); else - GotoScreen(DGUSLCD_SCREEN_MAIN); + gotoScreen(DGUS_SCREEN_MAIN); } #if ENABLED(DGUS_MKS_RUNOUT_SENSOR) - if (booted && printingIsActive()) DGUS_Runout_Idle(); + if (booted && printingIsActive()) runoutIdle(); #endif #endif // SHOW_BOOTSCREEN - return IsScreenComplete(); + return isScreenComplete(); } -void DGUSScreenHandlerMKS::LanguagePInit() { +void DGUSScreenHandlerMKS::languagePInit() { switch (mks_language_index) { case MKS_SimpleChinese: - dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE1, (uint8_t)MKS_Language_Choose); - dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE2, (uint8_t)MKS_Language_NoChoose); + dgus.writeVariable(VP_LANGUAGE_CHANGE1, (uint8_t)MKS_Language_Choose); + dgus.writeVariable(VP_LANGUAGE_CHANGE2, (uint8_t)MKS_Language_NoChoose); break; case MKS_English: - dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE1, (uint8_t)MKS_Language_NoChoose); - dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE2, (uint8_t)MKS_Language_Choose); + dgus.writeVariable(VP_LANGUAGE_CHANGE1, (uint8_t)MKS_Language_NoChoose); + dgus.writeVariable(VP_LANGUAGE_CHANGE2, (uint8_t)MKS_Language_Choose); break; default: break; } } -void DGUSScreenHandlerMKS::DGUS_ExtrudeLoadInit() { +void DGUSScreenHandlerMKS::extrudeLoadInit() { ex_filament.ex_length = distanceFilament; ex_filament.ex_load_unload_flag = 0; ex_filament.ex_need_time = filamentSpeed_mm_s; @@ -1369,7 +1369,7 @@ void DGUSScreenHandlerMKS::DGUS_ExtrudeLoadInit() { ex_filament.ex_tick_start = 0; } -void DGUSScreenHandlerMKS::DGUS_RunoutInit() { +void DGUSScreenHandlerMKS::runoutInit() { #if PIN_EXISTS(MT_DET_1) SET_INPUT_PULLUP(MT_DET_1_PIN); #endif @@ -1379,7 +1379,7 @@ void DGUSScreenHandlerMKS::DGUS_RunoutInit() { runout_mks.runout_status = UNRUNOUT_STATUS; } -void DGUSScreenHandlerMKS::DGUS_Runout_Idle() { +void DGUSScreenHandlerMKS::runoutIdle() { #if ENABLED(DGUS_MKS_RUNOUT_SENSOR) // scanf runout pin switch (runout_mks.runout_status) { @@ -1387,11 +1387,11 @@ void DGUSScreenHandlerMKS::DGUS_Runout_Idle() { case RUNOUT_STATUS: runout_mks.runout_status = RUNOUT_BEGIN_STATUS; queue.inject(F("M25")); - GotoScreen(MKSLCD_SCREEN_PAUSE); + gotoScreen(MKSLCD_SCREEN_PAUSE); - sendinfoscreen(F("NOTICE"), nullptr, F("Please change filament!"), nullptr, true, true, true, true); - //SetupConfirmAction(nullptr); - GotoScreen(DGUSLCD_SCREEN_POPUP); + sendInfoScreen(F("NOTICE"), nullptr, F("Please change filament!"), nullptr, true, true, true, true); + //setupConfirmAction(nullptr); + gotoScreen(DGUS_SCREEN_POPUP); break; case UNRUNOUT_STATUS: @@ -1414,516 +1414,516 @@ void DGUSScreenHandlerMKS::DGUS_Runout_Idle() { #endif } -void DGUSScreenHandlerMKS::DGUS_LanguageDisplay(uint8_t var) { +void DGUSScreenHandlerMKS::languageDisplay(uint8_t var) { if (var == MKS_English) { const char home_buf_en[] = "Home"; - dgusdisplay.WriteVariable(VP_HOME_Dis, home_buf_en, 32, true); + dgus.writeVariable(VP_HOME_Dis, home_buf_en, 32, true); const char setting_buf_en[] = "Setting"; - dgusdisplay.WriteVariable(VP_Setting_Dis, setting_buf_en, 32, true); + dgus.writeVariable(VP_Setting_Dis, setting_buf_en, 32, true); const char Tool_buf_en[] = "Tool"; - dgusdisplay.WriteVariable(VP_Tool_Dis, Tool_buf_en, 32, true); + dgus.writeVariable(VP_Tool_Dis, Tool_buf_en, 32, true); const char Print_buf_en[] = "Print"; - dgusdisplay.WriteVariable(VP_Print_Dis, Print_buf_en, 32, true); + dgus.writeVariable(VP_Print_Dis, Print_buf_en, 32, true); const char Language_buf_en[] = "Language"; - dgusdisplay.WriteVariable(VP_Language_Dis, Language_buf_en, 32, true); + dgus.writeVariable(VP_Language_Dis, Language_buf_en, 32, true); const char About_buf_en[] = "About"; - dgusdisplay.WriteVariable(VP_About_Dis, About_buf_en, 32, true); + dgus.writeVariable(VP_About_Dis, About_buf_en, 32, true); const char Config_buf_en[] = "Config"; - dgusdisplay.WriteVariable(VP_Config_Dis, Config_buf_en, 32, true); + dgus.writeVariable(VP_Config_Dis, Config_buf_en, 32, true); const char MotorConfig_buf_en[] = "MotorConfig"; - dgusdisplay.WriteVariable(VP_MotorConfig_Dis, MotorConfig_buf_en, 32, true); + dgus.writeVariable(VP_MotorConfig_Dis, MotorConfig_buf_en, 32, true); const char LevelConfig_buf_en[] = "LevelConfig"; - dgusdisplay.WriteVariable(VP_LevelConfig_Dis, LevelConfig_buf_en, 32, true); + dgus.writeVariable(VP_LevelConfig_Dis, LevelConfig_buf_en, 32, true); const char TemperatureConfig_buf_en[] = "Temperature"; - dgusdisplay.WriteVariable(VP_TemperatureConfig_Dis, TemperatureConfig_buf_en, 32, true); + dgus.writeVariable(VP_TemperatureConfig_Dis, TemperatureConfig_buf_en, 32, true); const char Advance_buf_en[] = "Advance"; - dgusdisplay.WriteVariable(VP_Advance_Dis, Advance_buf_en, 32, true); + dgus.writeVariable(VP_Advance_Dis, Advance_buf_en, 32, true); const char Filament_buf_en[] = "Extrude"; - dgusdisplay.WriteVariable(VP_Filament_Dis, Filament_buf_en, 32, true); + dgus.writeVariable(VP_Filament_Dis, Filament_buf_en, 32, true); const char Move_buf_en[] = "Move"; - dgusdisplay.WriteVariable(VP_Move_Dis, Move_buf_en, 32, true); + dgus.writeVariable(VP_Move_Dis, Move_buf_en, 32, true); #if ENABLED(AUTO_BED_LEVELING_BILINEAR) const char Level_buf_en[] = "AutoLevel"; - dgusdisplay.WriteVariable(VP_Level_Dis, Level_buf_en, 32, true); + dgus.writeVariable(VP_Level_Dis, Level_buf_en, 32, true); #elif ENABLED(MESH_BED_LEVELING) const char Level_buf_en[] = "MeshLevel"; - dgusdisplay.WriteVariable(VP_Level_Dis, Level_buf_en, 32, true); + dgus.writeVariable(VP_Level_Dis, Level_buf_en, 32, true); #else const char Level_buf_en[] = "Level"; - dgusdisplay.WriteVariable(VP_Level_Dis, Level_buf_en, 32, true); + dgus.writeVariable(VP_Level_Dis, Level_buf_en, 32, true); #endif const char MotorPluse_buf_en[] = "MotorPluse"; - dgusdisplay.WriteVariable(VP_MotorPluse_Dis, MotorPluse_buf_en, 32, true); + dgus.writeVariable(VP_MotorPluse_Dis, MotorPluse_buf_en, 32, true); const char MotorMaxSpeed_buf_en[] = "MotorMaxSpeed"; - dgusdisplay.WriteVariable(VP_MotorMaxSpeed_Dis, MotorMaxSpeed_buf_en, 32, true); + dgus.writeVariable(VP_MotorMaxSpeed_Dis, MotorMaxSpeed_buf_en, 32, true); const char MotorMaxAcc_buf_en[] = "MotorAcc"; - dgusdisplay.WriteVariable(VP_MotorMaxAcc_Dis, MotorMaxAcc_buf_en, 32, true); + dgus.writeVariable(VP_MotorMaxAcc_Dis, MotorMaxAcc_buf_en, 32, true); const char TravelAcc_buf_en[] = "TravelAcc"; - dgusdisplay.WriteVariable(VP_TravelAcc_Dis, TravelAcc_buf_en, 32, true); + dgus.writeVariable(VP_TravelAcc_Dis, TravelAcc_buf_en, 32, true); const char FeedRateMin_buf_en[] = "FeedRateMin"; - dgusdisplay.WriteVariable(VP_FeedRateMin_Dis, FeedRateMin_buf_en, 32, true); + dgus.writeVariable(VP_FeedRateMin_Dis, FeedRateMin_buf_en, 32, true); const char TravelFeeRateMin_buf_en[] = "TravelFeedRateMin"; - dgusdisplay.WriteVariable(VP_TravelFeeRateMin_Dis, TravelFeeRateMin_buf_en, 32, true); + dgus.writeVariable(VP_TravelFeeRateMin_Dis, TravelFeeRateMin_buf_en, 32, true); const char Acc_buf_en[] = "Acc"; - dgusdisplay.WriteVariable(VP_ACC_Dis, Acc_buf_en, 32, true); + dgus.writeVariable(VP_ACC_Dis, Acc_buf_en, 32, true); const char Point_One_buf_en[] = "Point_First"; - dgusdisplay.WriteVariable(VP_Point_One_Dis, Point_One_buf_en, 32, true); + dgus.writeVariable(VP_Point_One_Dis, Point_One_buf_en, 32, true); const char Point_Two_buf_en[] = "Point_Second"; - dgusdisplay.WriteVariable(VP_Point_Two_Dis, Point_Two_buf_en, 32, true); + dgus.writeVariable(VP_Point_Two_Dis, Point_Two_buf_en, 32, true); const char Point_Three_buf_en[] = "Point_Third"; - dgusdisplay.WriteVariable(VP_Point_Three_Dis, Point_Three_buf_en, 32, true); + dgus.writeVariable(VP_Point_Three_Dis, Point_Three_buf_en, 32, true); const char Point_Four_buf_en[] = "Point_Fourth"; - dgusdisplay.WriteVariable(VP_Point_Four_Dis, Point_Four_buf_en, 32, true); + dgus.writeVariable(VP_Point_Four_Dis, Point_Four_buf_en, 32, true); const char Point_Five_buf_en[] = "Point_Fifth"; - dgusdisplay.WriteVariable(VP_Point_Five_Dis, Point_Five_buf_en, 32, true); + dgus.writeVariable(VP_Point_Five_Dis, Point_Five_buf_en, 32, true); const char Extrusion_buf_en[] = "Extrusion"; - dgusdisplay.WriteVariable(VP_Extrusion_Dis, Extrusion_buf_en, 32, true); + dgus.writeVariable(VP_Extrusion_Dis, Extrusion_buf_en, 32, true); const char HeatBed_buf_en[] = "HeatBed"; - dgusdisplay.WriteVariable(VP_HeatBed_Dis, HeatBed_buf_en, 32, true); + dgus.writeVariable(VP_HeatBed_Dis, HeatBed_buf_en, 32, true); const char FactoryDefaults_buf_en[] = "FactoryDefaults"; - dgusdisplay.WriteVariable(VP_FactoryDefaults_Dis, FactoryDefaults_buf_en, 32, true); + dgus.writeVariable(VP_FactoryDefaults_Dis, FactoryDefaults_buf_en, 32, true); const char StoreSetting_buf_en[] = "StoreSetting"; - dgusdisplay.WriteVariable(VP_StoreSetting_Dis, StoreSetting_buf_en, 32, true); + dgus.writeVariable(VP_StoreSetting_Dis, StoreSetting_buf_en, 32, true); const char PrintPauseConfig_buf_en[] = "PrintPauseConfig"; - dgusdisplay.WriteVariable(VP_PrintPauseConfig_Dis, PrintPauseConfig_buf_en, 32, true); + dgus.writeVariable(VP_PrintPauseConfig_Dis, PrintPauseConfig_buf_en, 32, true); const char X_Pluse_buf_en[] = "X_Pluse"; - dgusdisplay.WriteVariable(VP_X_Pluse_Dis, X_Pluse_buf_en, 32, true); + dgus.writeVariable(VP_X_Pluse_Dis, X_Pluse_buf_en, 32, true); const char Y_Pluse_buf_en[] = "Y_Pluse"; - dgusdisplay.WriteVariable(VP_Y_Pluse_Dis, Y_Pluse_buf_en, 32, true); + dgus.writeVariable(VP_Y_Pluse_Dis, Y_Pluse_buf_en, 32, true); const char Z_Pluse_buf_en[] = "Z_Pluse"; - dgusdisplay.WriteVariable(VP_Z_Pluse_Dis, Z_Pluse_buf_en, 32, true); + dgus.writeVariable(VP_Z_Pluse_Dis, Z_Pluse_buf_en, 32, true); const char E0_Pluse_buf_en[] = "E0_Pluse"; - dgusdisplay.WriteVariable(VP_E0_Pluse_Dis, E0_Pluse_buf_en, 32, true); + dgus.writeVariable(VP_E0_Pluse_Dis, E0_Pluse_buf_en, 32, true); const char E1_Pluse_buf_en[] = "E1_Pluse"; - dgusdisplay.WriteVariable(VP_E1_Pluse_Dis, E1_Pluse_buf_en, 32, true); + dgus.writeVariable(VP_E1_Pluse_Dis, E1_Pluse_buf_en, 32, true); const char X_Max_Speed_buf_en[] = "X_Max_Speed"; - dgusdisplay.WriteVariable(VP_X_Max_Speed_Dis, X_Max_Speed_buf_en, 32, true); + dgus.writeVariable(VP_X_Max_Speed_Dis, X_Max_Speed_buf_en, 32, true); const char Y_Max_Speed_buf_en[] = "Y_Max_Speed"; - dgusdisplay.WriteVariable(VP_Y_Max_Speed_Dis, Y_Max_Speed_buf_en, 32, true); + dgus.writeVariable(VP_Y_Max_Speed_Dis, Y_Max_Speed_buf_en, 32, true); const char Z_Max_Speed_buf_en[] = "Z_Max_Speed"; - dgusdisplay.WriteVariable(VP_Z_Max_Speed_Dis, Z_Max_Speed_buf_en, 32, true); + dgus.writeVariable(VP_Z_Max_Speed_Dis, Z_Max_Speed_buf_en, 32, true); const char E0_Max_Speed_buf_en[] = "E0_Max_Speed"; - dgusdisplay.WriteVariable(VP_E0_Max_Speed_Dis, E0_Max_Speed_buf_en, 32, true); + dgus.writeVariable(VP_E0_Max_Speed_Dis, E0_Max_Speed_buf_en, 32, true); const char E1_Max_Speed_buf_en[] = "E1_Max_Speed"; - dgusdisplay.WriteVariable(VP_E1_Max_Speed_Dis, E1_Max_Speed_buf_en, 32, true); + dgus.writeVariable(VP_E1_Max_Speed_Dis, E1_Max_Speed_buf_en, 32, true); const char X_Max_Acc_Speed_buf_en[] = "X_Max_Acc_Speed"; - dgusdisplay.WriteVariable(VP_X_Max_Acc_Speed_Dis, X_Max_Acc_Speed_buf_en, 32, true); + dgus.writeVariable(VP_X_Max_Acc_Speed_Dis, X_Max_Acc_Speed_buf_en, 32, true); const char Y_Max_Acc_Speed_buf_en[] = "Y_Max_Acc_Speed"; - dgusdisplay.WriteVariable(VP_Y_Max_Acc_Speed_Dis, Y_Max_Acc_Speed_buf_en, 32, true); + dgus.writeVariable(VP_Y_Max_Acc_Speed_Dis, Y_Max_Acc_Speed_buf_en, 32, true); const char Z_Max_Acc_Speed_buf_en[] = "Z_Max_Acc_Speed"; - dgusdisplay.WriteVariable(VP_Z_Max_Acc_Speed_Dis, Z_Max_Acc_Speed_buf_en, 32, true); + dgus.writeVariable(VP_Z_Max_Acc_Speed_Dis, Z_Max_Acc_Speed_buf_en, 32, true); const char E0_Max_Acc_Speed_buf_en[] = "E0_Max_Acc_Speed"; - dgusdisplay.WriteVariable(VP_E0_Max_Acc_Speed_Dis, E0_Max_Acc_Speed_buf_en, 32, true); + dgus.writeVariable(VP_E0_Max_Acc_Speed_Dis, E0_Max_Acc_Speed_buf_en, 32, true); const char E1_Max_Acc_Speed_buf_en[] = "E1_Max_Acc_Speed"; - dgusdisplay.WriteVariable(VP_E1_Max_Acc_Speed_Dis, E1_Max_Acc_Speed_buf_en, 32, true); + dgus.writeVariable(VP_E1_Max_Acc_Speed_Dis, E1_Max_Acc_Speed_buf_en, 32, true); const char X_PARK_POS_buf_en[] = "X_PARK_POS"; - dgusdisplay.WriteVariable(VP_X_PARK_POS_Dis, X_PARK_POS_buf_en, 32, true); + dgus.writeVariable(VP_X_PARK_POS_Dis, X_PARK_POS_buf_en, 32, true); const char Y_PARK_POS_buf_en[] = "Y_PARK_POS"; - dgusdisplay.WriteVariable(VP_Y_PARK_POS_Dis, Y_PARK_POS_buf_en, 32, true); + dgus.writeVariable(VP_Y_PARK_POS_Dis, Y_PARK_POS_buf_en, 32, true); const char Z_PARK_POS_buf_en[] = "Z_PARK_POS"; - dgusdisplay.WriteVariable(VP_Z_PARK_POS_Dis, Z_PARK_POS_buf_en, 32, true); + dgus.writeVariable(VP_Z_PARK_POS_Dis, Z_PARK_POS_buf_en, 32, true); const char Length_buf_en[] = "Length"; - dgusdisplay.WriteVariable(VP_Length_Dis, Length_buf_en, 32, true); + dgus.writeVariable(VP_Length_Dis, Length_buf_en, 32, true); const char Speed_buf_en[] = "Speed"; - dgusdisplay.WriteVariable(VP_Speed_Dis, Speed_buf_en, 32, true); + dgus.writeVariable(VP_Speed_Dis, Speed_buf_en, 32, true); const char InOut_buf_en[] = "InOut"; - dgusdisplay.WriteVariable(VP_InOut_Dis, InOut_buf_en, 32, true); + dgus.writeVariable(VP_InOut_Dis, InOut_buf_en, 32, true); const char PrintTimet_buf_en[] = "PrintTime"; - dgusdisplay.WriteVariable(VP_PrintTime_Dis, PrintTimet_buf_en, 32, true); + dgus.writeVariable(VP_PrintTime_Dis, PrintTimet_buf_en, 32, true); const char E0_Temp_buf_en[] = "E0_Temp"; - dgusdisplay.WriteVariable(VP_E0_Temp_Dis, E0_Temp_buf_en, 32, true); + dgus.writeVariable(VP_E0_Temp_Dis, E0_Temp_buf_en, 32, true); const char E1_Temp_buf_en[] = "E1_Temp"; - dgusdisplay.WriteVariable(VP_E1_Temp_Dis, E1_Temp_buf_en, 32, true); + dgus.writeVariable(VP_E1_Temp_Dis, E1_Temp_buf_en, 32, true); const char HB_Temp_buf_en[] = "HB_Temp"; - dgusdisplay.WriteVariable(VP_HB_Temp_Dis, HB_Temp_buf_en, 32, true); + dgus.writeVariable(VP_HB_Temp_Dis, HB_Temp_buf_en, 32, true); const char Feedrate_buf_en[] = "Feedrate"; - dgusdisplay.WriteVariable(VP_Feedrate_Dis, Feedrate_buf_en, 32, true); + dgus.writeVariable(VP_Feedrate_Dis, Feedrate_buf_en, 32, true); const char PrintAcc_buf_en[] = "PrintSpeed"; - dgusdisplay.WriteVariable(VP_PrintAcc_Dis, PrintAcc_buf_en, 32, true); + dgus.writeVariable(VP_PrintAcc_Dis, PrintAcc_buf_en, 32, true); const char FAN_Speed_buf_en[] = "FAN_Speed"; - dgusdisplay.WriteVariable(VP_Fan_Speed_Dis, FAN_Speed_buf_en, 32, true); + dgus.writeVariable(VP_Fan_Speed_Dis, FAN_Speed_buf_en, 32, true); const char Printing_buf_en[] = "Printing"; - dgusdisplay.WriteVariable(VP_Printing_Dis, Printing_buf_en, 32, true); + dgus.writeVariable(VP_Printing_Dis, Printing_buf_en, 32, true); const char Info_EEPROM_1_buf_en[] = "Store setting?"; - dgusdisplay.WriteVariable(VP_Info_EEPROM_1_Dis, Info_EEPROM_1_buf_en, 32, true); + dgus.writeVariable(VP_Info_EEPROM_1_Dis, Info_EEPROM_1_buf_en, 32, true); const char Info_EEPROM_2_buf_en[] = "Revert setting?"; - dgusdisplay.WriteVariable(VP_Info_EEPROM_2_Dis, Info_EEPROM_2_buf_en, 32, true); + dgus.writeVariable(VP_Info_EEPROM_2_Dis, Info_EEPROM_2_buf_en, 32, true); const char Info_PrintFinish_1_buf_en[] = "Print Done"; - dgusdisplay.WriteVariable(VP_Info_PrintFinish_1_Dis, Info_PrintFinish_1_buf_en, 32, true); + dgus.writeVariable(VP_Info_PrintFinish_1_Dis, Info_PrintFinish_1_buf_en, 32, true); const char TMC_X_Step_buf_en[] = "X_SenSitivity"; - dgusdisplay.WriteVariable(VP_TMC_X_Step_Dis, TMC_X_Step_buf_en, 32, true); + dgus.writeVariable(VP_TMC_X_Step_Dis, TMC_X_Step_buf_en, 32, true); const char TMC_Y_Step_buf_en[] = "Y_SenSitivity"; - dgusdisplay.WriteVariable(VP_TMC_Y_Step_Dis, TMC_Y_Step_buf_en, 32, true); + dgus.writeVariable(VP_TMC_Y_Step_Dis, TMC_Y_Step_buf_en, 32, true); const char TMC_Z_Step_buf_en[] = "Z_SenSitivity"; - dgusdisplay.WriteVariable(VP_TMC_Z_Step_Dis, TMC_Z_Step_buf_en, 32, true); + dgus.writeVariable(VP_TMC_Z_Step_Dis, TMC_Z_Step_buf_en, 32, true); const char TMC_X_Current_buf_en[] = "X_Current"; - dgusdisplay.WriteVariable(VP_TMC_X_Current_Dis, TMC_X_Current_buf_en, 32, true); + dgus.writeVariable(VP_TMC_X_Current_Dis, TMC_X_Current_buf_en, 32, true); const char TMC_Y_Current_buf_en[] = "Y_Current"; - dgusdisplay.WriteVariable(VP_TMC_Y_Current_Dis, TMC_Y_Current_buf_en, 32, true); + dgus.writeVariable(VP_TMC_Y_Current_Dis, TMC_Y_Current_buf_en, 32, true); const char TMC_Z_Current_buf_en[] = "Z_Current"; - dgusdisplay.WriteVariable(VP_TMC_Z_Current_Dis, TMC_Z_Current_buf_en, 32, true); + dgus.writeVariable(VP_TMC_Z_Current_Dis, TMC_Z_Current_buf_en, 32, true); const char TMC_E0_Current_buf_en[] = "E0_Current"; - dgusdisplay.WriteVariable(VP_TMC_E0_Current_Dis, TMC_E0_Current_buf_en, 32, true); + dgus.writeVariable(VP_TMC_E0_Current_Dis, TMC_E0_Current_buf_en, 32, true); const char TMC_X1_Current_buf_en[] = "X1_Current"; - dgusdisplay.WriteVariable(VP_TMC_X1_Current_Dis, TMC_X1_Current_buf_en, 32, true); + dgus.writeVariable(VP_TMC_X1_Current_Dis, TMC_X1_Current_buf_en, 32, true); const char TMC_Y1_Current_buf_en[] = "Y1_Current"; - dgusdisplay.WriteVariable(VP_TMC_Y1_Current_Dis, TMC_Y1_Current_buf_en, 32, true); + dgus.writeVariable(VP_TMC_Y1_Current_Dis, TMC_Y1_Current_buf_en, 32, true); const char TMC_Z1_Current_buf_en[] = "Z1_Current"; - dgusdisplay.WriteVariable(VP_TMC_Z1_Current_Dis, TMC_Z1_Current_buf_en, 32, true); + dgus.writeVariable(VP_TMC_Z1_Current_Dis, TMC_Z1_Current_buf_en, 32, true); const char TMC_E1_Current_buf_en[] = "E1_Current"; - dgusdisplay.WriteVariable(VP_TMC_E1_Current_Dis, TMC_E1_Current_buf_en, 32, true); + dgus.writeVariable(VP_TMC_E1_Current_Dis, TMC_E1_Current_buf_en, 32, true); const char Min_Ex_Temp_buf_en[] = "Min_Ex_Temp"; - dgusdisplay.WriteVariable(VP_Min_Ex_Temp_Dis, Min_Ex_Temp_buf_en, 32, true); + dgus.writeVariable(VP_Min_Ex_Temp_Dis, Min_Ex_Temp_buf_en, 32, true); const char AutoLEVEL_INFO1_buf_en[] = "Please Press Button!"; - dgusdisplay.WriteVariable(VP_AutoLEVEL_INFO1, AutoLEVEL_INFO1_buf_en, 32, true); + dgus.writeVariable(VP_AutoLEVEL_INFO1, AutoLEVEL_INFO1_buf_en, 32, true); const char EX_TEMP_INFO2_buf_en[] = "Please wait a monent"; - dgusdisplay.WriteVariable(VP_EX_TEMP_INFO2_Dis, EX_TEMP_INFO2_buf_en, 32, true); + dgus.writeVariable(VP_EX_TEMP_INFO2_Dis, EX_TEMP_INFO2_buf_en, 32, true); const char EX_TEMP_INFO3_buf_en[] = "Cancle"; - dgusdisplay.WriteVariable(VP_EX_TEMP_INFO3_Dis, EX_TEMP_INFO3_buf_en, 32, true); + dgus.writeVariable(VP_EX_TEMP_INFO3_Dis, EX_TEMP_INFO3_buf_en, 32, true); const char PrintConfrim_Info_buf_en[] = "Start Print?"; - dgusdisplay.WriteVariable(VP_PrintConfrim_Info_Dis, PrintConfrim_Info_buf_en, 32, true); + dgus.writeVariable(VP_PrintConfrim_Info_Dis, PrintConfrim_Info_buf_en, 32, true); const char StopPrintConfrim_Info_buf_en[] = "Stop Print?"; - dgusdisplay.WriteVariable(VP_StopPrintConfrim_Info_Dis, StopPrintConfrim_Info_buf_en, 32, true); + dgus.writeVariable(VP_StopPrintConfrim_Info_Dis, StopPrintConfrim_Info_buf_en, 32, true); const char Printting_buf_en[] = "Printing"; - dgusdisplay.WriteVariable(VP_Printting_Dis, Printting_buf_en, 32, true); + dgus.writeVariable(VP_Printting_Dis, Printting_buf_en, 32, true); const char LCD_BLK_buf_en[] = "Backlight"; - dgusdisplay.WriteVariable(VP_LCD_BLK_Dis, LCD_BLK_buf_en, 32, true); + dgus.writeVariable(VP_LCD_BLK_Dis, LCD_BLK_buf_en, 32, true); } else if (var == MKS_SimpleChinese) { uint16_t home_buf_ch[] = { 0xF7D6, 0xB3D2 }; - dgusdisplay.WriteVariable(VP_HOME_Dis, home_buf_ch, 4, true); + dgus.writeVariable(VP_HOME_Dis, home_buf_ch, 4, true); const uint16_t Setting_Dis[] = { 0xE8C9, 0xC3D6, 0x2000, 0x2000, 0x2000 }; - dgusdisplay.WriteVariable(VP_Setting_Dis, Setting_Dis, 7, true); + dgus.writeVariable(VP_Setting_Dis, Setting_Dis, 7, true); const uint16_t Tool_Dis[] = { 0xA4B9, 0xDFBE }; - dgusdisplay.WriteVariable(VP_Tool_Dis, Tool_Dis, 4, true); + dgus.writeVariable(VP_Tool_Dis, Tool_Dis, 4, true); const uint16_t Print_buf_ch[] = { 0xF2B4, 0xA1D3, 0x2000 }; - dgusdisplay.WriteVariable(VP_Print_Dis, Print_buf_ch, 6, true); + dgus.writeVariable(VP_Print_Dis, Print_buf_ch, 6, true); const uint16_t Language_buf_ch[] = { 0xEFD3, 0xD4D1, 0x2000, 0x2000 }; - dgusdisplay.WriteVariable(VP_Language_Dis, Language_buf_ch, 8, true); + dgus.writeVariable(VP_Language_Dis, Language_buf_ch, 8, true); const uint16_t About_buf_ch[] = { 0xD8B9, 0xDAD3, 0x2000 }; - dgusdisplay.WriteVariable(VP_About_Dis, About_buf_ch, 6, true); + dgus.writeVariable(VP_About_Dis, About_buf_ch, 6, true); const uint16_t Config_buf_ch[] = { 0xE4C5, 0xC3D6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Config_Dis, Config_buf_ch, 6, true); + dgus.writeVariable(VP_Config_Dis, Config_buf_ch, 6, true); const uint16_t MotorConfig_buf_ch[] = { 0xE7B5, 0xFABB, 0xE4C5, 0xC3D6, 0x2000 }; - dgusdisplay.WriteVariable(VP_MotorConfig_Dis, MotorConfig_buf_ch, 12, true); + dgus.writeVariable(VP_MotorConfig_Dis, MotorConfig_buf_ch, 12, true); const uint16_t LevelConfig_buf_ch[] = { 0xD6CA, 0xAFB6, 0xF7B5, 0xBDC6, 0xE8C9, 0xC3D6, 0x2000 }; - dgusdisplay.WriteVariable(VP_LevelConfig_Dis, LevelConfig_buf_ch, 32, true); + dgus.writeVariable(VP_LevelConfig_Dis, LevelConfig_buf_ch, 32, true); const uint16_t TemperatureConfig_buf_ch[] = { 0xC2CE, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_TemperatureConfig_Dis, TemperatureConfig_buf_ch, 11, true); + dgus.writeVariable(VP_TemperatureConfig_Dis, TemperatureConfig_buf_ch, 11, true); const uint16_t Advance_buf_ch[] = { 0xDFB8, 0xB6BC, 0xE8C9, 0xC3D6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Advance_Dis, Advance_buf_ch, 16, true); + dgus.writeVariable(VP_Advance_Dis, Advance_buf_ch, 16, true); const uint16_t Filament_buf_ch[] = { 0xB7BC, 0xF6B3, 0x2000 }; - dgusdisplay.WriteVariable(VP_Filament_Dis, Filament_buf_ch, 8, true); + dgus.writeVariable(VP_Filament_Dis, Filament_buf_ch, 8, true); const uint16_t Move_buf_ch[] = { 0xC6D2, 0xAFB6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Move_Dis, Move_buf_ch, 4, true); + dgus.writeVariable(VP_Move_Dis, Move_buf_ch, 4, true); #if ENABLED(AUTO_BED_LEVELING_BILINEAR) const uint16_t Level_buf_ch[] = { 0xD4D7, 0xAFB6, 0xF7B5, 0xBDC6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Level_Dis, Level_buf_ch, 32, true); + dgus.writeVariable(VP_Level_Dis, Level_buf_ch, 32, true); #elif ENABLED(MESH_BED_LEVELING) const uint16_t Level_buf_ch[] = { 0xF8CD, 0xF1B8, 0xF7B5, 0xBDC6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Level_Dis, Level_buf_ch, 32, true); + dgus.writeVariable(VP_Level_Dis, Level_buf_ch, 32, true); #else const uint16_t Level_buf_ch[] = { 0xD6CA, 0xAFB6, 0xF7B5, 0xBDC6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Level_Dis, Level_buf_ch, 32, true); + dgus.writeVariable(VP_Level_Dis, Level_buf_ch, 32, true); #endif const uint16_t MotorPluse_buf_ch[] = { 0xF6C2, 0xE5B3, 0x2000 }; - dgusdisplay.WriteVariable(VP_MotorPluse_Dis, MotorPluse_buf_ch, 16, true); + dgus.writeVariable(VP_MotorPluse_Dis, MotorPluse_buf_ch, 16, true); const uint16_t MotorMaxSpeed_buf_ch[] = { 0xEED7, 0xF3B4, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_MotorMaxSpeed_Dis, MotorMaxSpeed_buf_ch, 16, true); + dgus.writeVariable(VP_MotorMaxSpeed_Dis, MotorMaxSpeed_buf_ch, 16, true); const uint16_t MotorMaxAcc_buf_ch[] = { 0xEED7, 0xF3B4, 0xD3BC, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_MotorMaxAcc_Dis, MotorMaxAcc_buf_ch, 16, true); + dgus.writeVariable(VP_MotorMaxAcc_Dis, MotorMaxAcc_buf_ch, 16, true); const uint16_t TravelAcc_buf_ch[] = { 0xD5BF, 0xD0D0, 0xD3BC, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_TravelAcc_Dis, TravelAcc_buf_ch, 16, true); + dgus.writeVariable(VP_TravelAcc_Dis, TravelAcc_buf_ch, 16, true); const uint16_t FeedRateMin_buf_ch[] = { 0xEED7, 0xA1D0, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_FeedRateMin_Dis, FeedRateMin_buf_ch, 12, true); + dgus.writeVariable(VP_FeedRateMin_Dis, FeedRateMin_buf_ch, 12, true); const uint16_t TravelFeeRateMin_buf_ch[] = { 0xD5BF, 0xD0D0, 0xEED7, 0xA1D0, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_TravelFeeRateMin_Dis, TravelFeeRateMin_buf_ch, 24, true); + dgus.writeVariable(VP_TravelFeeRateMin_Dis, TravelFeeRateMin_buf_ch, 24, true); const uint16_t Acc_buf_ch[] = { 0xD3BC, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_ACC_Dis, Acc_buf_ch, 16, true); + dgus.writeVariable(VP_ACC_Dis, Acc_buf_ch, 16, true); const uint16_t Point_One_buf_ch[] = { 0xDAB5, 0xBBD2, 0xE3B5, 0x2000 }; - dgusdisplay.WriteVariable(VP_Point_One_Dis, Point_One_buf_ch, 12, true); + dgus.writeVariable(VP_Point_One_Dis, Point_One_buf_ch, 12, true); const uint16_t Point_Two_buf_ch[] = { 0xDAB5, 0xFEB6, 0xE3B5, 0x2000 }; - dgusdisplay.WriteVariable(VP_Point_Two_Dis, Point_Two_buf_ch, 12, true); + dgus.writeVariable(VP_Point_Two_Dis, Point_Two_buf_ch, 12, true); const uint16_t Point_Three_buf_ch[] = { 0xDAB5, 0xFDC8, 0xE3B5, 0x2000 }; - dgusdisplay.WriteVariable(VP_Point_Three_Dis, Point_Three_buf_ch, 12, true); + dgus.writeVariable(VP_Point_Three_Dis, Point_Three_buf_ch, 12, true); const uint16_t Point_Four_buf_ch[] = { 0xDAB5, 0xC4CB, 0xE3B5, 0x2000 }; - dgusdisplay.WriteVariable(VP_Point_Four_Dis, Point_Four_buf_ch, 12, true); + dgus.writeVariable(VP_Point_Four_Dis, Point_Four_buf_ch, 12, true); const uint16_t Point_Five_buf_ch[] = { 0xDAB5, 0xE5CE, 0xE3B5, 0x2000 }; - dgusdisplay.WriteVariable(VP_Point_Five_Dis, Point_Five_buf_ch, 12, true); + dgus.writeVariable(VP_Point_Five_Dis, Point_Five_buf_ch, 12, true); const uint16_t Extrusion_buf_ch[] = { 0xB7BC, 0xF6B3, 0xB7CD, 0x2000 }; - dgusdisplay.WriteVariable(VP_Extrusion_Dis, Extrusion_buf_ch, 12, true); + dgus.writeVariable(VP_Extrusion_Dis, Extrusion_buf_ch, 12, true); const uint16_t HeatBed_buf_ch[] = { 0xC8C8, 0xB2B4, 0x2000 }; - dgusdisplay.WriteVariable(VP_HeatBed_Dis, HeatBed_buf_ch, 12, true); + dgus.writeVariable(VP_HeatBed_Dis, HeatBed_buf_ch, 12, true); const uint16_t FactoryDefaults_buf_ch[] = { 0xD6BB, 0xB4B8, 0xF6B3, 0xA7B3, 0xE8C9, 0xC3D6, 0x2000 }; - dgusdisplay.WriteVariable(VP_FactoryDefaults_Dis, FactoryDefaults_buf_ch, 16, true); + dgus.writeVariable(VP_FactoryDefaults_Dis, FactoryDefaults_buf_ch, 16, true); const uint16_t StoreSetting_buf_ch[] = { 0xA3B1, 0xE6B4, 0xE8C9, 0xC3D6, 0x2000 }; - dgusdisplay.WriteVariable(VP_StoreSetting_Dis, StoreSetting_buf_ch, 16, true); + dgus.writeVariable(VP_StoreSetting_Dis, StoreSetting_buf_ch, 16, true); const uint16_t PrintPauseConfig_buf_ch[] = { 0xDDD4, 0xA3CD, 0xBBCE, 0xC3D6, 0x2000 }; - dgusdisplay.WriteVariable(VP_PrintPauseConfig_Dis, PrintPauseConfig_buf_ch, 32, true); + dgus.writeVariable(VP_PrintPauseConfig_Dis, PrintPauseConfig_buf_ch, 32, true); const uint16_t X_Pluse_buf_ch[] = { 0x2058, 0xE1D6, 0xF6C2, 0xE5B3, 0x2000 }; - dgusdisplay.WriteVariable(VP_X_Pluse_Dis, X_Pluse_buf_ch, 16, true); + dgus.writeVariable(VP_X_Pluse_Dis, X_Pluse_buf_ch, 16, true); const uint16_t Y_Pluse_buf_ch[] = { 0x2059, 0xE1D6, 0xF6C2, 0xE5B3, 0x2000 }; - dgusdisplay.WriteVariable(VP_Y_Pluse_Dis, Y_Pluse_buf_ch, 16, true); + dgus.writeVariable(VP_Y_Pluse_Dis, Y_Pluse_buf_ch, 16, true); const uint16_t Z_Pluse_buf_ch[] = { 0x205A, 0xE1D6, 0xF6C2, 0xE5B3, 0x2000 }; - dgusdisplay.WriteVariable(VP_Z_Pluse_Dis, Z_Pluse_buf_ch, 16, true); + dgus.writeVariable(VP_Z_Pluse_Dis, Z_Pluse_buf_ch, 16, true); const uint16_t E0_Pluse_buf_ch[] = { 0x3045, 0xE1D6, 0xF6C2, 0xE5B3, 0x2000 }; - dgusdisplay.WriteVariable(VP_E0_Pluse_Dis, E0_Pluse_buf_ch, 16, true); + dgus.writeVariable(VP_E0_Pluse_Dis, E0_Pluse_buf_ch, 16, true); const uint16_t E1_Pluse_buf_ch[] = { 0x3145, 0xE1D6, 0xF6C2, 0xE5B3, 0x2000 }; - dgusdisplay.WriteVariable(VP_E1_Pluse_Dis, E1_Pluse_buf_ch, 16, true); + dgus.writeVariable(VP_E1_Pluse_Dis, E1_Pluse_buf_ch, 16, true); const uint16_t X_Max_Speed_buf_ch[] = { 0x2058, 0xEED7, 0xF3B4, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_X_Max_Speed_Dis, X_Max_Speed_buf_ch, 16, true); + dgus.writeVariable(VP_X_Max_Speed_Dis, X_Max_Speed_buf_ch, 16, true); const uint16_t Y_Max_Speed_buf_ch[] = { 0x2059, 0xEED7, 0xF3B4, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Y_Max_Speed_Dis, Y_Max_Speed_buf_ch, 16, true); + dgus.writeVariable(VP_Y_Max_Speed_Dis, Y_Max_Speed_buf_ch, 16, true); const uint16_t Z_Max_Speed_buf_ch[] = { 0x205A, 0xEED7, 0xF3B4, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Z_Max_Speed_Dis, Z_Max_Speed_buf_ch, 16, true); + dgus.writeVariable(VP_Z_Max_Speed_Dis, Z_Max_Speed_buf_ch, 16, true); const uint16_t E0_Max_Speed_buf_ch[] = { 0x3045, 0xEED7, 0xF3B4, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_E0_Max_Speed_Dis, E0_Max_Speed_buf_ch, 16, true); + dgus.writeVariable(VP_E0_Max_Speed_Dis, E0_Max_Speed_buf_ch, 16, true); const uint16_t E1_Max_Speed_buf_ch[] = { 0x3145, 0xEED7, 0xF3B4, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_E1_Max_Speed_Dis, E1_Max_Speed_buf_ch, 16, true); + dgus.writeVariable(VP_E1_Max_Speed_Dis, E1_Max_Speed_buf_ch, 16, true); const uint16_t X_Max_Acc_Speed_buf_ch[] = { 0x2058, 0xEED7, 0xF3B4, 0xD3BC, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_X_Max_Acc_Speed_Dis, X_Max_Acc_Speed_buf_ch, 16, true); + dgus.writeVariable(VP_X_Max_Acc_Speed_Dis, X_Max_Acc_Speed_buf_ch, 16, true); const uint16_t Y_Max_Acc_Speed_buf_ch[] = { 0x2059, 0xEED7, 0xF3B4, 0xD3BC, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Y_Max_Acc_Speed_Dis, Y_Max_Acc_Speed_buf_ch, 16, true); + dgus.writeVariable(VP_Y_Max_Acc_Speed_Dis, Y_Max_Acc_Speed_buf_ch, 16, true); const uint16_t Z_Max_Acc_Speed_buf_ch[] = { 0x205A, 0xEED7, 0xF3B4, 0xD3BC, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Z_Max_Acc_Speed_Dis, Z_Max_Acc_Speed_buf_ch, 16, true); + dgus.writeVariable(VP_Z_Max_Acc_Speed_Dis, Z_Max_Acc_Speed_buf_ch, 16, true); const uint16_t E0_Max_Acc_Speed_buf_ch[] = { 0x3045, 0xEED7, 0xF3B4, 0xD3BC, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_E0_Max_Acc_Speed_Dis, E0_Max_Acc_Speed_buf_ch, 16, true); + dgus.writeVariable(VP_E0_Max_Acc_Speed_Dis, E0_Max_Acc_Speed_buf_ch, 16, true); const uint16_t E1_Max_Acc_Speed_buf_ch[] = { 0x3145, 0xEED7, 0xF3B4, 0xD3BC, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_E1_Max_Acc_Speed_Dis, E1_Max_Acc_Speed_buf_ch, 16, true); + dgus.writeVariable(VP_E1_Max_Acc_Speed_Dis, E1_Max_Acc_Speed_buf_ch, 16, true); const uint16_t X_PARK_POS_buf_ch[] = { 0x2058, 0xDDD4, 0xA3CD, 0xBBCE, 0xC3D6, 0x2000 }; - dgusdisplay.WriteVariable(VP_X_PARK_POS_Dis, X_PARK_POS_buf_ch, 16, true); + dgus.writeVariable(VP_X_PARK_POS_Dis, X_PARK_POS_buf_ch, 16, true); const uint16_t Y_PARK_POS_buf_ch[] = { 0x2059, 0xDDD4, 0xA3CD, 0xBBCE, 0xC3D6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Y_PARK_POS_Dis, Y_PARK_POS_buf_ch, 16, true); + dgus.writeVariable(VP_Y_PARK_POS_Dis, Y_PARK_POS_buf_ch, 16, true); const uint16_t Z_PARK_POS_buf_ch[] = { 0x205A, 0xDDD4, 0xA3CD, 0xBBCE, 0xC3D6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Z_PARK_POS_Dis, Z_PARK_POS_buf_ch, 16, true); + dgus.writeVariable(VP_Z_PARK_POS_Dis, Z_PARK_POS_buf_ch, 16, true); const uint16_t Length_buf_ch[] = { 0xBDB2, 0xA4B3, 0x2000 }; - dgusdisplay.WriteVariable(VP_Length_Dis, Length_buf_ch, 8, true); + dgus.writeVariable(VP_Length_Dis, Length_buf_ch, 8, true); const uint16_t Speed_buf_ch[] = { 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Speed_Dis, Speed_buf_ch, 8, true); + dgus.writeVariable(VP_Speed_Dis, Speed_buf_ch, 8, true); const uint16_t InOut_buf_ch[] = { 0xF8BD, 0xF6B3, 0x2000 }; - dgusdisplay.WriteVariable(VP_InOut_Dis, InOut_buf_ch, 8, true); + dgus.writeVariable(VP_InOut_Dis, InOut_buf_ch, 8, true); const uint16_t PrintTimet_buf_en[] = { 0xF2B4, 0xA1D3, 0xB1CA, 0xE4BC, 0x2000 }; - dgusdisplay.WriteVariable(VP_PrintTime_Dis, PrintTimet_buf_en, 16, true); + dgus.writeVariable(VP_PrintTime_Dis, PrintTimet_buf_en, 16, true); const uint16_t E0_Temp_buf_ch[] = { 0x3045, 0xC2CE, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_E0_Temp_Dis, E0_Temp_buf_ch, 16, true); + dgus.writeVariable(VP_E0_Temp_Dis, E0_Temp_buf_ch, 16, true); const uint16_t E1_Temp_buf_ch[] = { 0x3145, 0xC2CE, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_E1_Temp_Dis, E1_Temp_buf_ch, 16, true); + dgus.writeVariable(VP_E1_Temp_Dis, E1_Temp_buf_ch, 16, true); const uint16_t HB_Temp_buf_ch[] = { 0xC8C8, 0xB2B4, 0xC2CE, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_HB_Temp_Dis, HB_Temp_buf_ch, 16, true); + dgus.writeVariable(VP_HB_Temp_Dis, HB_Temp_buf_ch, 16, true); const uint16_t Feedrate_buf_ch[] = { 0xB7BC, 0xF6B3, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Feedrate_Dis, Feedrate_buf_ch, 16, true); + dgus.writeVariable(VP_Feedrate_Dis, Feedrate_buf_ch, 16, true); const uint16_t PrintAcc_buf_ch[] = { 0xF2B4, 0xA1D3, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_PrintAcc_Dis, PrintAcc_buf_ch, 16, true); + dgus.writeVariable(VP_PrintAcc_Dis, PrintAcc_buf_ch, 16, true); const uint16_t FAN_Speed_buf_ch[] = { 0xE7B7, 0xC8C9, 0xD9CB, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Fan_Speed_Dis, FAN_Speed_buf_ch, 16, true); + dgus.writeVariable(VP_Fan_Speed_Dis, FAN_Speed_buf_ch, 16, true); const uint16_t Printing_buf_ch[] = { 0xF2B4, 0xA1D3, 0xD0D6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Printing_Dis, Printing_buf_ch, 16, true); + dgus.writeVariable(VP_Printing_Dis, Printing_buf_ch, 16, true); const uint16_t Info_EEPROM_1_buf_ch[] = { 0xC7CA, 0xF1B7, 0xA3B1, 0xE6B4, 0xE8C9, 0xC3D6, 0xBFA3, 0x2000 }; - dgusdisplay.WriteVariable(VP_Info_EEPROM_1_Dis, Info_EEPROM_1_buf_ch, 32, true); + dgus.writeVariable(VP_Info_EEPROM_1_Dis, Info_EEPROM_1_buf_ch, 32, true); const uint16_t Info_EEPROM_2_buf_ch[] = { 0xC7CA, 0xF1B7, 0xD6BB, 0xB4B8, 0xF6B3, 0xA7B3, 0xE8C9, 0xC3D6, 0xBFA3, 0x2000 }; - dgusdisplay.WriteVariable(VP_Info_EEPROM_2_Dis, Info_EEPROM_2_buf_ch, 32, true); + dgus.writeVariable(VP_Info_EEPROM_2_Dis, Info_EEPROM_2_buf_ch, 32, true); const uint16_t TMC_X_Step_buf_ch[] = { 0x2058, 0xE9C1, 0xF4C3, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_TMC_X_Step_Dis, TMC_X_Step_buf_ch, 16, true); + dgus.writeVariable(VP_TMC_X_Step_Dis, TMC_X_Step_buf_ch, 16, true); const uint16_t TMC_Y_Step_buf_ch[] = { 0x2059, 0xE9C1, 0xF4C3, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_TMC_Y_Step_Dis, TMC_Y_Step_buf_ch, 16, true); + dgus.writeVariable(VP_TMC_Y_Step_Dis, TMC_Y_Step_buf_ch, 16, true); const uint16_t TMC_Z_Step_buf_ch[] = { 0x205A, 0xE9C1, 0xF4C3, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_TMC_Z_Step_Dis, TMC_Z_Step_buf_ch, 16, true); + dgus.writeVariable(VP_TMC_Z_Step_Dis, TMC_Z_Step_buf_ch, 16, true); const uint16_t Info_PrintFinish_1_buf_ch[] = { 0xF2B4, 0xA1D3, 0xEACD, 0xC9B3, 0x2000 }; - dgusdisplay.WriteVariable(VP_Info_PrintFinish_1_Dis, Info_PrintFinish_1_buf_ch, 32, true); + dgus.writeVariable(VP_Info_PrintFinish_1_Dis, Info_PrintFinish_1_buf_ch, 32, true); const uint16_t TMC_X_Current_buf_ch[] = { 0x2058, 0xE1D6, 0xE7B5, 0xF7C1, 0x2000 }; - dgusdisplay.WriteVariable(VP_TMC_X_Current_Dis, TMC_X_Current_buf_ch, 16, true); + dgus.writeVariable(VP_TMC_X_Current_Dis, TMC_X_Current_buf_ch, 16, true); const uint16_t TMC_Y_Current_buf_ch[] = { 0x2059, 0xE1D6, 0xE7B5, 0xF7C1, 0x2000 }; - dgusdisplay.WriteVariable(VP_TMC_Y_Current_Dis, TMC_Y_Current_buf_ch, 16, true); + dgus.writeVariable(VP_TMC_Y_Current_Dis, TMC_Y_Current_buf_ch, 16, true); const uint16_t TMC_Z_Current_buf_ch[] = { 0x205A, 0xE1D6, 0xE7B5, 0xF7C1, 0x2000 }; - dgusdisplay.WriteVariable(VP_TMC_Z_Current_Dis, TMC_Z_Current_buf_ch, 16, true); + dgus.writeVariable(VP_TMC_Z_Current_Dis, TMC_Z_Current_buf_ch, 16, true); const uint16_t TMC_E0_Current_buf_ch[] = { 0x3045, 0xE1D6, 0xE7B5, 0xF7C1, 0x2000 }; - dgusdisplay.WriteVariable(VP_TMC_E0_Current_Dis, TMC_E0_Current_buf_ch, 16, true); + dgus.writeVariable(VP_TMC_E0_Current_Dis, TMC_E0_Current_buf_ch, 16, true); const uint16_t TMC_X1_Current_buf_ch[] = { 0x3158, 0xE1D6, 0xE7B5, 0xF7C1, 0x2000 }; - dgusdisplay.WriteVariable(VP_TMC_X1_Current_Dis, TMC_X1_Current_buf_ch, 16, true); + dgus.writeVariable(VP_TMC_X1_Current_Dis, TMC_X1_Current_buf_ch, 16, true); const uint16_t TMC_Y1_Current_buf_ch[] = { 0x3159, 0xE1D6, 0xE7B5, 0xF7C1, 0x2000 }; - dgusdisplay.WriteVariable(VP_TMC_Y1_Current_Dis, TMC_Y1_Current_buf_ch, 16, true); + dgus.writeVariable(VP_TMC_Y1_Current_Dis, TMC_Y1_Current_buf_ch, 16, true); const uint16_t TMC_Z1_Current_buf_ch[] = { 0x315A, 0xE1D6, 0xE7B5, 0xF7C1, 0x2000 }; - dgusdisplay.WriteVariable(VP_TMC_Z1_Current_Dis, TMC_Z1_Current_buf_ch, 16, true); + dgus.writeVariable(VP_TMC_Z1_Current_Dis, TMC_Z1_Current_buf_ch, 16, true); const uint16_t TMC_E1_Current_buf_ch[] = { 0x3145, 0xE1D6, 0xE7B5, 0xF7C1, 0x2000 }; - dgusdisplay.WriteVariable(VP_TMC_E1_Current_Dis, TMC_E1_Current_buf_ch, 16, true); + dgus.writeVariable(VP_TMC_E1_Current_Dis, TMC_E1_Current_buf_ch, 16, true); const uint16_t Min_Ex_Temp_buf_ch[] = { 0xEED7, 0xA1D0, 0xB7BC, 0xF6B3, 0xC2CE, 0xC8B6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Min_Ex_Temp_Dis, Min_Ex_Temp_buf_ch, 32, true); + dgus.writeVariable(VP_Min_Ex_Temp_Dis, Min_Ex_Temp_buf_ch, 32, true); const uint16_t AutoLEVEL_INFO1_buf_ch[] = { 0xEBC7, 0xB4B0, 0xC2CF, 0xB4B0, 0xA5C5, 0x2000 }; - dgusdisplay.WriteVariable(VP_AutoLEVEL_INFO1, AutoLEVEL_INFO1_buf_ch, 32, true); + dgus.writeVariable(VP_AutoLEVEL_INFO1, AutoLEVEL_INFO1_buf_ch, 32, true); const uint16_t EX_TEMP_INFO2_buf_ch[] = { 0xEBC7, 0xD4C9, 0xC8B5, 0x2000 }; - dgusdisplay.WriteVariable(VP_EX_TEMP_INFO2_Dis, EX_TEMP_INFO2_buf_ch, 32, true); + dgus.writeVariable(VP_EX_TEMP_INFO2_Dis, EX_TEMP_INFO2_buf_ch, 32, true); const uint16_t EX_TEMP_INFO3_buf_ch[] = { 0xA1C8, 0xFBCF, 0xD3BC, 0xC8C8, 0x2000 }; - dgusdisplay.WriteVariable(VP_EX_TEMP_INFO3_Dis, EX_TEMP_INFO3_buf_ch, 32, true); + dgus.writeVariable(VP_EX_TEMP_INFO3_Dis, EX_TEMP_INFO3_buf_ch, 32, true); const uint16_t PrintConfrim_Info_buf_ch[] = { 0xC7CA, 0xF1B7, 0xAABF, 0xBCCA, 0xF2B4, 0xA1D3, 0x2000 }; - dgusdisplay.WriteVariable(VP_PrintConfrim_Info_Dis, PrintConfrim_Info_buf_ch, 32, true); + dgus.writeVariable(VP_PrintConfrim_Info_Dis, PrintConfrim_Info_buf_ch, 32, true); const uint16_t StopPrintConfrim_Info_buf_ch[] = { 0xC7CA, 0xF1B7, 0xA3CD, 0xB9D6, 0xF2B4, 0xA1D3, 0x2000 }; - dgusdisplay.WriteVariable(VP_StopPrintConfrim_Info_Dis, StopPrintConfrim_Info_buf_ch, 32, true); + dgus.writeVariable(VP_StopPrintConfrim_Info_Dis, StopPrintConfrim_Info_buf_ch, 32, true); const uint16_t Printting_buf_ch[] = { 0xF2B4, 0xA1D3, 0xD0D6, 0x2000 }; - dgusdisplay.WriteVariable(VP_Printting_Dis, Printting_buf_ch, 32, true); + dgus.writeVariable(VP_Printting_Dis, Printting_buf_ch, 32, true); const uint16_t LCD_BLK_buf_ch[] = { 0xB3B1, 0xE2B9, 0xE8C9, 0xC3D6, 0x2000 }; - dgusdisplay.WriteVariable(VP_LCD_BLK_Dis, LCD_BLK_buf_ch, 32, true); + dgus.writeVariable(VP_LCD_BLK_Dis, LCD_BLK_buf_ch, 32, true); } } diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.h b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.h index 69ded29ffb..9527badb5a 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.h +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.h @@ -23,7 +23,7 @@ #include "../DGUSScreenHandlerBase.h" -enum DGUSLCD_Screens : uint8_t; +enum DGUS_ScreenID : uint8_t; class DGUSScreenHandlerMKS : public DGUSScreenHandler { public: @@ -32,72 +32,72 @@ public: #if 0 static void sendinfoscreen_ch(const uint16_t *line1, const uint16_t *line2, const uint16_t *line3, const uint16_t *line4); static void sendinfoscreen_en(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4); - static void sendinfoscreen(const void *line1, const void *line2, const void *line3, const void *line4, uint16_t language); + static void sendInfoScreen(const void *line1, const void *line2, const void *line3, const void *line4, uint16_t language); #endif - static void ScreenBackChange(DGUS_VP_Variable &var, void *val_ptr); + static void screenBackChange(DGUS_VP_Variable &var, void *val_ptr); - static void EEPROM_CTRL(DGUS_VP_Variable &var, void *val_ptr); - static void LanguageChange(DGUS_VP_Variable &var, void *val_ptr); - static void GetOffsetValue(DGUS_VP_Variable &var, void *val_ptr); - static void Level_Ctrl(DGUS_VP_Variable &var, void *val_ptr); - static void MeshLevel(DGUS_VP_Variable &var, void *val_ptr); - static void MeshLevelDistanceConfig(DGUS_VP_Variable &var, void *val_ptr); - static void ManualAssistLeveling(DGUS_VP_Variable &var, void *val_ptr); - static void ZoffsetConfirm(DGUS_VP_Variable &var, void *val_ptr); - static void Z_offset_select(DGUS_VP_Variable &var, void *val_ptr); - static void GetManualMovestep(DGUS_VP_Variable &var, void *val_ptr); - static void GetZoffsetDistance(DGUS_VP_Variable &var, void *val_ptr); - static void GetMinExtrudeTemp(DGUS_VP_Variable &var, void *val_ptr); - static void GetParkPos(DGUS_VP_Variable &var, void *val_ptr); + static void eepromControl(DGUS_VP_Variable &var, void *val_ptr); + static void languageChange(DGUS_VP_Variable &var, void *val_ptr); + static void getOffsetValue(DGUS_VP_Variable &var, void *val_ptr); + static void levelControl(DGUS_VP_Variable &var, void *val_ptr); + static void meshLevel(DGUS_VP_Variable &var, void *val_ptr); + static void meshLevelDistanceConfig(DGUS_VP_Variable &var, void *val_ptr); + static void manualAssistLeveling(DGUS_VP_Variable &var, void *val_ptr); + static void zOffsetConfirm(DGUS_VP_Variable &var, void *val_ptr); + static void zOffsetSelect(DGUS_VP_Variable &var, void *val_ptr); + static void getManualMovestep(DGUS_VP_Variable &var, void *val_ptr); + static void getZoffsetDistance(DGUS_VP_Variable &var, void *val_ptr); + static void getMinExtrudeTemp(DGUS_VP_Variable &var, void *val_ptr); + static void getParkPos(DGUS_VP_Variable &var, void *val_ptr); #if ENABLED(PREVENT_COLD_EXTRUSION) - static void HandleGetExMinTemp(DGUS_VP_Variable &var, void *val_ptr); + static void handleGetExMinTemp(DGUS_VP_Variable &var, void *val_ptr); #endif - static void DGUS_LanguageDisplay(uint8_t var); - static void TMC_ChangeConfig(DGUS_VP_Variable &var, void *val_ptr); - static void GetTurnOffCtrl(DGUS_VP_Variable &var, void *val_ptr); - static void LanguagePInit(); - static void DGUS_Runout_Idle(); - static void DGUS_RunoutInit(); - static void DGUS_ExtrudeLoadInit(); - static void LCD_BLK_Adjust(DGUS_VP_Variable &var, void *val_ptr); - static void SD_FileBack(DGUS_VP_Variable &var, void *val_ptr); + static void languageDisplay(uint8_t var); + static void tmcChangeConfig(DGUS_VP_Variable &var, void *val_ptr); + static void getTurnOffCtrl(DGUS_VP_Variable &var, void *val_ptr); + static void languagePInit(); + static void runoutIdle(); + static void runoutInit(); + static void extrudeLoadInit(); + static void lcdBLKAdjust(DGUS_VP_Variable &var, void *val_ptr); + static void sdFileBack(DGUS_VP_Variable &var, void *val_ptr); - static void HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr); - static void HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr); - static void HandleMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr); - static void HandleExtruderMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr); - static void HandleAccChange(DGUS_VP_Variable &var, void *val_ptr); - static void HandleMaxAccChange(DGUS_VP_Variable &var, void *val_ptr); - static void HandleExtruderAccChange(DGUS_VP_Variable &var, void *val_ptr); - static void HandleChangeLevelPoint(DGUS_VP_Variable &var, void *val_ptr); - static void HandleTravelAccChange(DGUS_VP_Variable &var, void *val_ptr); - static void HandleFeedRateMinChange(DGUS_VP_Variable &var, void *val_ptr); - static void HandleMin_T_F(DGUS_VP_Variable &var, void *val_ptr); + static void handleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr); + static void handleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr); + static void handleMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr); + static void handleExtruderMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr); + static void handleAccChange(DGUS_VP_Variable &var, void *val_ptr); + static void handleMaxAccChange(DGUS_VP_Variable &var, void *val_ptr); + static void handleExtruderAccChange(DGUS_VP_Variable &var, void *val_ptr); + static void handleChangeLevelPoint(DGUS_VP_Variable &var, void *val_ptr); + static void handleTravelAccChange(DGUS_VP_Variable &var, void *val_ptr); + static void handleFeedRateMinChange(DGUS_VP_Variable &var, void *val_ptr); + static void handleMin_T_F(DGUS_VP_Variable &var, void *val_ptr); #if HAS_PID_HEATING - static void FilamentLoadUnload(DGUS_VP_Variable &var, void *val_ptr, const int filamentDir); - static void FilamentLoad(DGUS_VP_Variable &var, void *val_ptr); - static void FilamentUnLoad(DGUS_VP_Variable &var, void *val_ptr); - static void GetManualFilament(DGUS_VP_Variable &var, void *val_ptr); - static void GetManualFilamentSpeed(DGUS_VP_Variable &var, void *val_ptr); + static void filamentLoadUnload(DGUS_VP_Variable &var, void *val_ptr, const int filamentDir); + static void filamentLoad(DGUS_VP_Variable &var, void *val_ptr); + static void filamentUnload(DGUS_VP_Variable &var, void *val_ptr); + static void getManualFilament(DGUS_VP_Variable &var, void *val_ptr); + static void getManualFilamentSpeed(DGUS_VP_Variable &var, void *val_ptr); #endif #if HAS_MEDIA // Marlin informed us about SD print completion. - static void SDPrintingFinished(); + static void sdPrintingFinished(); #else - static void PrintReturn(DGUS_VP_Variable &var, void *val_ptr); + static void printReturn(DGUS_VP_Variable &var, void *val_ptr); #endif - static void DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var); - static void DGUSLCD_SendBabyStepToDisplay(DGUS_VP_Variable &var); - static void DGUSLCD_SendFanToDisplay(DGUS_VP_Variable &var); - static void DGUSLCD_SendGbkToDisplay(DGUS_VP_Variable &var); - static void DGUSLCD_SendStringToDisplay_Language(DGUS_VP_Variable &var); - static void DGUSLCD_SendTMCStepValue(DGUS_VP_Variable &var); + static void sendPrintTimeToDisplay(DGUS_VP_Variable &var); + static void sendBabyStepToDisplay(DGUS_VP_Variable &var); + static void sendFanToDisplay(DGUS_VP_Variable &var); + static void sendGbkToDisplay(DGUS_VP_Variable &var); + static void sendStringToDisplay_Language(DGUS_VP_Variable &var); + static void sendTMCStepValue(DGUS_VP_Variable &var); - static void DGUSLCD_SetUint8(DGUS_VP_Variable &var, void *val_ptr); + static void setUint8(DGUS_VP_Variable &var, void *val_ptr); static bool loop(); }; diff --git a/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.cpp b/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.cpp index c5711320ec..d69041ebc5 100644 --- a/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.cpp +++ b/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.cpp @@ -108,17 +108,17 @@ const uint16_t VPList_SDFileList[] PROGMEM = { VP_SD_FileName0, VP_SD_ const uint16_t VPList_SD_PrintManipulation[] PROGMEM = { VP_PrintProgress_Percentage, VP_PrintTime, 0x0000 }; const struct VPMapping VPMap[] PROGMEM = { - { DGUSLCD_SCREEN_BOOT, VPList_Boot }, - { DGUSLCD_SCREEN_MAIN, VPList_Main }, - { DGUSLCD_SCREEN_TEMPERATURE, VPList_Temp }, - { DGUSLCD_SCREEN_STATUS, VPList_Status }, - { DGUSLCD_SCREEN_STATUS2, VPList_Status2 }, - { DGUSLCD_SCREEN_MANUALMOVE, VPList_ManualMove }, - { DGUSLCD_SCREEN_MANUALEXTRUDE, VPList_ManualExtrude }, - { DGUSLCD_SCREEN_FANANDFEEDRATE, VPList_FanAndFeedrate }, - { DGUSLCD_SCREEN_FLOWRATES, VPList_SD_FlowRates }, - { DGUSLCD_SCREEN_SDPRINTMANIPULATION, VPList_SD_PrintManipulation }, - { DGUSLCD_SCREEN_SDFILELIST, VPList_SDFileList }, + { DGUS_SCREEN_BOOT, VPList_Boot }, + { DGUS_SCREEN_MAIN, VPList_Main }, + { DGUS_SCREEN_TEMPERATURE, VPList_Temp }, + { DGUS_SCREEN_STATUS, VPList_Status }, + { DGUS_SCREEN_STATUS2, VPList_Status2 }, + { DGUS_SCREEN_MANUALMOVE, VPList_ManualMove }, + { DGUS_SCREEN_MANUALEXTRUDE, VPList_ManualExtrude }, + { DGUS_SCREEN_FANANDFEEDRATE, VPList_FanAndFeedrate }, + { DGUS_SCREEN_FLOWRATES, VPList_SD_FlowRates }, + { DGUS_SCREEN_SDPRINTMANIPULATION, VPList_SD_PrintManipulation }, + { DGUS_SCREEN_SDFILELIST, VPList_SDFileList }, { 0 , nullptr } // List is terminated with an nullptr as table entry. }; @@ -126,152 +126,152 @@ const char MarlinVersion[] PROGMEM = SHORT_BUILD_VERSION; const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { // Helper to detect touch events - VPHELPER(VP_SCREENCHANGE, nullptr, ScreenHandler.ScreenChangeHook, nullptr), - VPHELPER(VP_SCREENCHANGE_ASK, nullptr, ScreenHandler.ScreenChangeHookIfIdle, nullptr), + VPHELPER(VP_SCREENCHANGE, nullptr, screen.screenChangeHook, nullptr), + VPHELPER(VP_SCREENCHANGE_ASK, nullptr, screen.screenChangeHookIfIdle, nullptr), #if HAS_MEDIA - VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, ScreenHandler.ScreenChangeHookIfSD, nullptr), + VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, screen.screenChangeHookIfSD, nullptr), #endif - VPHELPER(VP_CONFIRMED, nullptr, ScreenHandler.ScreenConfirmedOK, nullptr), + VPHELPER(VP_CONFIRMED, nullptr, screen.screenConfirmedOK, nullptr), - VPHELPER(VP_TEMP_ALL_OFF, nullptr, ScreenHandler.HandleAllHeatersOff, nullptr), + VPHELPER(VP_TEMP_ALL_OFF, nullptr, screen.handleAllHeatersOff, nullptr), #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) - VPHELPER(VP_MOVE_OPTION, &distanceToMove, ScreenHandler.HandleManualMoveOption, nullptr), + VPHELPER(VP_MOVE_OPTION, &distanceToMove, screen.handleManualMoveOption, nullptr), #endif #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) - VPHELPER(VP_MOVE_X, &distanceToMove, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_MOVE_Y, &distanceToMove, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_MOVE_Z, &distanceToMove, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_HOME_ALL, &distanceToMove, ScreenHandler.HandleManualMove, nullptr), + VPHELPER(VP_MOVE_X, &distanceToMove, screen.handleManualMove, nullptr), + VPHELPER(VP_MOVE_Y, &distanceToMove, screen.handleManualMove, nullptr), + VPHELPER(VP_MOVE_Z, &distanceToMove, screen.handleManualMove, nullptr), + VPHELPER(VP_HOME_ALL, &distanceToMove, screen.handleManualMove, nullptr), #else - VPHELPER(VP_MOVE_X, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_MOVE_Y, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_MOVE_Z, nullptr, ScreenHandler.HandleManualMove, nullptr), - VPHELPER(VP_HOME_ALL, nullptr, ScreenHandler.HandleManualMove, nullptr), + VPHELPER(VP_MOVE_X, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_MOVE_Y, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_MOVE_Z, nullptr, screen.handleManualMove, nullptr), + VPHELPER(VP_HOME_ALL, nullptr, screen.handleManualMove, nullptr), #endif - VPHELPER(VP_MOTOR_LOCK_UNLOK, nullptr, ScreenHandler.HandleMotorLockUnlock, nullptr), + VPHELPER(VP_MOTOR_LOCK_UNLOK, nullptr, screen.handleMotorLockUnlock, nullptr), #if ENABLED(POWER_LOSS_RECOVERY) - VPHELPER(VP_POWER_LOSS_RECOVERY, nullptr, ScreenHandler.HandlePowerLossRecovery, nullptr), + VPHELPER(VP_POWER_LOSS_RECOVERY, nullptr, screen.handlePowerLossRecovery, nullptr), #endif - VPHELPER(VP_SETTINGS, nullptr, ScreenHandler.HandleSettings, nullptr), + VPHELPER(VP_SETTINGS, nullptr, screen.handleSettings, nullptr), - { .VP = VP_MARLIN_VERSION, .memadr = (void*)MarlinVersion, .size = VP_MARLIN_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, + { .VP = VP_MARLIN_VERSION, .memadr = (void*)MarlinVersion, .size = VP_MARLIN_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, // M117 LCD String (We don't need the string in memory but "just" push it to the display on demand, hence the nullptr - { .VP = VP_M117, .memadr = nullptr, .size = VP_M117_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay }, + { .VP = VP_M117, .memadr = nullptr, .size = VP_M117_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplay }, // Temperature Data #if HAS_HOTEND - VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<0>), - VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, ScreenHandler.HandleTemperatureChanged, &ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Flowrate_E0, nullptr, ScreenHandler.HandleFlowRateChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_EPos, &destination.e, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_MOVE_E0, nullptr, ScreenHandler.HandleManualExtrude, nullptr), - VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, ScreenHandler.HandleHeaterControl, nullptr), - VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, ScreenHandler.DGUSLCD_SendHeaterStatusToDisplay), + VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, screen.sendFloatAsLongValueToDisplay<0>), + VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, screen.handleTemperatureChanged, &screen.sendWordValueToDisplay), + VPHELPER(VP_Flowrate_E0, nullptr, screen.handleFlowRateChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_EPos, &destination.e, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_MOVE_E0, nullptr, screen.handleManualExtrude, nullptr), + VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, screen.handleHeaterControl, nullptr), + VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, screen.sendHeaterStatusToDisplay), #if ENABLED(DGUS_PREHEAT_UI) - VPHELPER(VP_E0_BED_PREHEAT, nullptr, ScreenHandler.HandlePreheat, nullptr), + VPHELPER(VP_E0_BED_PREHEAT, nullptr, screen.handlePreheat, nullptr), #endif #if ENABLED(PIDTEMP) - VPHELPER(VP_E0_PID_P, &thermalManager.temp_hotend[0].pid.Kp, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_E0_PID_I, &thermalManager.temp_hotend[0].pid.Ki, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_E0_PID_D, &thermalManager.temp_hotend[0].pid.Kd, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_PID_AUTOTUNE_E0, nullptr, ScreenHandler.HandlePIDAutotune, nullptr), + VPHELPER(VP_E0_PID_P, &thermalManager.temp_hotend[0].pid.Kp, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_E0_PID_I, &thermalManager.temp_hotend[0].pid.Ki, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_E0_PID_D, &thermalManager.temp_hotend[0].pid.Kd, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_PID_AUTOTUNE_E0, nullptr, screen.handlePIDAutotune, nullptr), #endif #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) - VPHELPER(VP_E0_FILAMENT_LOAD_UNLOAD, nullptr, ScreenHandler.HandleFilamentOption, ScreenHandler.HandleFilamentLoadUnload), + VPHELPER(VP_E0_FILAMENT_LOAD_UNLOAD, nullptr, screen.handleFilamentOption, screen.handleFilamentLoadUnload), #endif #endif #if HAS_MULTI_HOTEND - VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<0>), - VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_Flowrate_E1, nullptr, ScreenHandler.HandleFlowRateChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_MOVE_E1, nullptr, ScreenHandler.HandleManualExtrude, nullptr), - VPHELPER(VP_E1_CONTROL, &thermalManager.temp_hotend[1].target, ScreenHandler.HandleHeaterControl, nullptr), - VPHELPER(VP_E1_STATUS, &thermalManager.temp_hotend[1].target, nullptr, ScreenHandler.DGUSLCD_SendHeaterStatusToDisplay), + VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, screen.sendFloatAsLongValueToDisplay<0>), + VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, screen.handleTemperatureChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_Flowrate_E1, nullptr, screen.handleFlowRateChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_MOVE_E1, nullptr, screen.handleManualExtrude, nullptr), + VPHELPER(VP_E1_CONTROL, &thermalManager.temp_hotend[1].target, screen.handleHeaterControl, nullptr), + VPHELPER(VP_E1_STATUS, &thermalManager.temp_hotend[1].target, nullptr, screen.sendHeaterStatusToDisplay), #if ENABLED(PIDTEMP) - VPHELPER(VP_PID_AUTOTUNE_E1, nullptr, ScreenHandler.HandlePIDAutotune, nullptr), + VPHELPER(VP_PID_AUTOTUNE_E1, nullptr, screen.handlePIDAutotune, nullptr), #endif #endif #if HAS_HEATED_BED - VPHELPER(VP_T_Bed_Is, &thermalManager.temp_bed.celsius, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<0>), - VPHELPER(VP_T_Bed_Set, &thermalManager.temp_bed.target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), - VPHELPER(VP_BED_CONTROL, &thermalManager.temp_bed.target, ScreenHandler.HandleHeaterControl, nullptr), - VPHELPER(VP_BED_STATUS, &thermalManager.temp_bed.target, nullptr, ScreenHandler.DGUSLCD_SendHeaterStatusToDisplay), + VPHELPER(VP_T_Bed_Is, &thermalManager.temp_bed.celsius, nullptr, screen.sendFloatAsLongValueToDisplay<0>), + VPHELPER(VP_T_Bed_Set, &thermalManager.temp_bed.target, screen.handleTemperatureChanged, screen.sendWordValueToDisplay), + VPHELPER(VP_BED_CONTROL, &thermalManager.temp_bed.target, screen.handleHeaterControl, nullptr), + VPHELPER(VP_BED_STATUS, &thermalManager.temp_bed.target, nullptr, screen.sendHeaterStatusToDisplay), #if ENABLED(PIDTEMPBED) - VPHELPER(VP_BED_PID_P, &thermalManager.temp_bed.pid.Kp, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_BED_PID_I, &thermalManager.temp_bed.pid.Ki, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), - VPHELPER(VP_BED_PID_D, &thermalManager.temp_bed.pid.Kd, ScreenHandler.HandleTemperaturePIDChanged, ScreenHandler.DGUSLCD_SendTemperaturePID), + VPHELPER(VP_BED_PID_P, &thermalManager.temp_bed.pid.Kp, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_BED_PID_I, &thermalManager.temp_bed.pid.Ki, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), + VPHELPER(VP_BED_PID_D, &thermalManager.temp_bed.pid.Kd, screen.handleTemperaturePIDChanged, screen.sendTemperaturePID), #endif #endif // Fan Data #if HAS_FAN #define FAN_VPHELPER(N) \ - VPHELPER(VP_Fan##N##_Percentage, &thermalManager.fan_speed[N], ScreenHandler.DGUSLCD_PercentageToUint8, ScreenHandler.DGUSLCD_SendPercentageToDisplay), \ - VPHELPER(VP_FAN##N##_CONTROL, &thermalManager.fan_speed[N], ScreenHandler.HandleFanControl, nullptr), \ - VPHELPER(VP_FAN##N##_STATUS, &thermalManager.fan_speed[N], nullptr, ScreenHandler.DGUSLCD_SendFanStatusToDisplay), + VPHELPER(VP_Fan##N##_Percentage, &thermalManager.fan_speed[N], screen.percentageToUint8, screen.sendPercentageToDisplay), \ + VPHELPER(VP_FAN##N##_CONTROL, &thermalManager.fan_speed[N], screen.handleFanControl, nullptr), \ + VPHELPER(VP_FAN##N##_STATUS, &thermalManager.fan_speed[N], nullptr, screen.sendFanStatusToDisplay), REPEAT(FAN_COUNT, FAN_VPHELPER) #endif // Feedrate - VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, ScreenHandler.DGUSLCD_SetValueDirectly, ScreenHandler.DGUSLCD_SendWordValueToDisplay), + VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, screen.setValueDirectly, screen.sendWordValueToDisplay), // Position Data - VPHELPER(VP_XPos, ¤t_position.x, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_YPos, ¤t_position.y, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_ZPos, ¤t_position.z, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_XPos, ¤t_position.x, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_YPos, ¤t_position.y, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_ZPos, ¤t_position.z, nullptr, screen.sendFloatAsLongValueToDisplay<2>), // Print Progress - VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, ScreenHandler.DGUSLCD_SendPrintProgressToDisplay), + VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, screen.sendPrintProgressToDisplay), // Print Time - VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintTimeToDisplay), + VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, screen.sendPrintTimeToDisplay), #if ENABLED(PRINTCOUNTER) - VPHELPER_STR(VP_PrintAccTime, nullptr, VP_PrintAccTime_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintAccTimeToDisplay), - VPHELPER_STR(VP_PrintsTotal, nullptr, VP_PrintsTotal_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintsTotalToDisplay), + VPHELPER_STR(VP_PrintAccTime, nullptr, VP_PrintAccTime_LEN, nullptr, screen.sendPrintAccTimeToDisplay), + VPHELPER_STR(VP_PrintsTotal, nullptr, VP_PrintsTotal_LEN, nullptr, screen.sendPrintsTotalToDisplay), #endif - VPHELPER(VP_X_STEP_PER_MM, &planner.settings.axis_steps_per_mm[X_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), - VPHELPER(VP_Y_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Y_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), - VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_X_STEP_PER_MM, &planner.settings.axis_steps_per_mm[X_AXIS], screen.handleStepPerMMChanged, screen.sendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_Y_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Y_AXIS], screen.handleStepPerMMChanged, screen.sendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], screen.handleStepPerMMChanged, screen.sendFloatAsIntValueToDisplay<1>), #if HAS_HOTEND - VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], ScreenHandler.HandleStepPerMMExtruderChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], screen.handleStepPerMMExtruderChanged, screen.sendFloatAsIntValueToDisplay<1>), #if HAS_MULTI_HOTEND - VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], ScreenHandler.HandleStepPerMMExtruderChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>), + VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], screen.handleStepPerMMExtruderChanged, screen.sendFloatAsIntValueToDisplay<1>), #endif #endif // SDCard File listing. #if HAS_MEDIA - VPHELPER(VP_SD_ScrollEvent, nullptr, ScreenHandler.DGUSLCD_SD_ScrollFilelist, nullptr), - VPHELPER(VP_SD_FileSelected, nullptr, ScreenHandler.DGUSLCD_SD_FileSelected, nullptr), - VPHELPER(VP_SD_FileSelectConfirm, nullptr, ScreenHandler.DGUSLCD_SD_StartPrint, nullptr), - VPHELPER_STR(VP_SD_FileName0, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName1, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName2, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName3, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER_STR(VP_SD_FileName4, nullptr, VP_SD_FileName_LEN, nullptr, ScreenHandler.DGUSLCD_SD_SendFilename), - VPHELPER(VP_SD_ResumePauseAbort, nullptr, ScreenHandler.DGUSLCD_SD_ResumePauseAbort, nullptr), - VPHELPER(VP_SD_AbortPrintConfirmed, nullptr, ScreenHandler.DGUSLCD_SD_ReallyAbort, nullptr), - VPHELPER(VP_SD_Print_Setting, nullptr, ScreenHandler.DGUSLCD_SD_PrintTune, nullptr), + VPHELPER(VP_SD_ScrollEvent, nullptr, screen.sdScrollFilelist, nullptr), + VPHELPER(VP_SD_FileSelected, nullptr, screen.sdFileSelected, nullptr), + VPHELPER(VP_SD_FileSelectConfirm, nullptr, screen.sdStartPrint, nullptr), + VPHELPER_STR(VP_SD_FileName0, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName1, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName2, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName3, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER_STR(VP_SD_FileName4, nullptr, VP_SD_FileName_LEN, nullptr, screen.sdSendFilename), + VPHELPER(VP_SD_ResumePauseAbort, nullptr, screen.sdResumePauseAbort, nullptr), + VPHELPER(VP_SD_AbortPrintConfirmed, nullptr, screen.sdReallyAbort, nullptr), + VPHELPER(VP_SD_Print_Setting, nullptr, screen.sdPrintTune, nullptr), #if HAS_BED_PROBE - VPHELPER(VP_SD_Print_ProbeOffsetZ, &probe.offset.z, ScreenHandler.HandleProbeOffsetZChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<2>), + VPHELPER(VP_SD_Print_ProbeOffsetZ, &probe.offset.z, screen.handleProbeOffsetZChanged, screen.sendFloatAsIntValueToDisplay<2>), #if ENABLED(BABYSTEPPING) - VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, ScreenHandler.HandleLiveAdjustZ, nullptr), + VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, screen.handleLiveAdjustZ, nullptr), #endif #endif #endif #if ENABLED(DGUS_UI_WAITING) - VPHELPER(VP_WAITING_STATUS, nullptr, nullptr, ScreenHandler.DGUSLCD_SendWaitingStatusToDisplay), + VPHELPER(VP_WAITING_STATUS, nullptr, nullptr, screen.sendWaitingStatusToDisplay), #endif // Messages for the User, shared by the popup and the kill screen. They can't be autouploaded as we do not buffer content. - { .VP = VP_MSGSTR1, .memadr = nullptr, .size = VP_MSGSTR1_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, - { .VP = VP_MSGSTR2, .memadr = nullptr, .size = VP_MSGSTR2_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, - { .VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, - { .VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM }, + { .VP = VP_MSGSTR1, .memadr = nullptr, .size = VP_MSGSTR1_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, + { .VP = VP_MSGSTR2, .memadr = nullptr, .size = VP_MSGSTR2_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, + { .VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, + { .VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = screen.sendStringToDisplayPGM }, VPHELPER(0, 0, 0, 0) // must be last entry. }; diff --git a/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.h b/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.h index d529b0adfe..e601abd255 100644 --- a/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.h +++ b/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.h @@ -23,30 +23,30 @@ #include "../DGUSDisplayDef.h" -enum DGUSLCD_Screens : uint8_t { - DGUSLCD_SCREEN_BOOT = 0, - DGUSLCD_SCREEN_MAIN = 10, - DGUSLCD_SCREEN_TEMPERATURE = 20, - DGUSLCD_SCREEN_STATUS = 30, - DGUSLCD_SCREEN_STATUS2 = 32, - DGUSLCD_SCREEN_MANUALMOVE = 40, - DGUSLCD_SCREEN_MANUALEXTRUDE = 42, - DGUSLCD_SCREEN_FANANDFEEDRATE = 44, - DGUSLCD_SCREEN_FLOWRATES = 46, - DGUSLCD_SCREEN_SDFILELIST = 50, - DGUSLCD_SCREEN_SDPRINTMANIPULATION = 52, - DGUSLCD_SCREEN_POWER_LOSS = 100, - DGUSLCD_SCREEN_PREHEAT = 120, - DGUSLCD_SCREEN_UTILITY = 110, - DGUSLCD_SCREEN_FILAMENT_HEATING = 146, - DGUSLCD_SCREEN_FILAMENT_LOADING = 148, - DGUSLCD_SCREEN_FILAMENT_UNLOADING = 158, - DGUSLCD_SCREEN_SDPRINTTUNE = 170, - DGUSLCD_SCREEN_CONFIRM = 240, - DGUSLCD_SCREEN_KILL = 250, ///< Kill Screen. Must always be 250 (to be able to display "Error wrong LCD Version") - DGUSLCD_SCREEN_WAITING = 251, - DGUSLCD_SCREEN_POPUP = 252, ///< special target, popup screen will also return this code to say "return to previous screen" - DGUSLCD_SCREEN_UNUSED = 255 +enum DGUS_ScreenID : uint8_t { + DGUS_SCREEN_BOOT = 0, + DGUS_SCREEN_MAIN = 10, + DGUS_SCREEN_TEMPERATURE = 20, + DGUS_SCREEN_STATUS = 30, + DGUS_SCREEN_STATUS2 = 32, + DGUS_SCREEN_MANUALMOVE = 40, + DGUS_SCREEN_MANUALEXTRUDE = 42, + DGUS_SCREEN_FANANDFEEDRATE = 44, + DGUS_SCREEN_FLOWRATES = 46, + DGUS_SCREEN_SDFILELIST = 50, + DGUS_SCREEN_SDPRINTMANIPULATION = 52, + DGUS_SCREEN_POWER_LOSS = 100, + DGUS_SCREEN_PREHEAT = 120, + DGUS_SCREEN_UTILITY = 110, + DGUS_SCREEN_FILAMENT_HEATING = 146, + DGUS_SCREEN_FILAMENT_LOADING = 148, + DGUS_SCREEN_FILAMENT_UNLOADING = 158, + DGUS_SCREEN_SDPRINTTUNE = 170, + DGUS_SCREEN_CONFIRM = 240, + DGUS_SCREEN_KILL = 250, ///< Kill Screen. Must always be 250 (to be able to display "Error wrong LCD Version") + DGUS_SCREEN_WAITING = 251, + DGUS_SCREEN_POPUP = 252, ///< special target, popup screen will also return this code to say "return to previous screen" + DGUS_SCREEN_UNUSED = 255 }; // Display Memory layout used (T5UID) diff --git a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp index 44f4a95cad..943d8c50a5 100644 --- a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp @@ -44,7 +44,7 @@ extern ExtUI::FileList filelist; - void DGUSScreenHandler::DGUSLCD_SD_FileSelected(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::sdFileSelected(DGUS_VP_Variable &var, void *val_ptr) { uint16_t touched_nr = (int16_t)swap16(*(uint16_t*)val_ptr) + top_file; if (touched_nr > filelist.count()) return; if (!filelist.seek(touched_nr)) return; @@ -52,28 +52,28 @@ if (filelist.isDir()) { filelist.changeDir(filelist.filename()); top_file = 0; - ForceCompleteUpdate(); + forceCompleteUpdate(); return; } #if ENABLED(DGUS_PRINT_FILENAME) // Send print filename - dgusdisplay.WriteVariable(VP_SD_Print_Filename, filelist.filename(), VP_SD_FileName_LEN, true); + dgus.writeVariable(VP_SD_Print_Filename, filelist.filename(), VP_SD_FileName_LEN, true); #endif // Setup Confirmation screen file_to_print = touched_nr; - HandleUserConfirmationPopUp(VP_SD_FileSelectConfirm, nullptr, PSTR("Print file"), filelist.filename(), PSTR("from SD Card?"), true, true, false, true); + handleUserConfirmationPopUp(VP_SD_FileSelectConfirm, nullptr, PSTR("Print file"), filelist.filename(), PSTR("from SD Card?"), true, true, false, true); } - void DGUSScreenHandler::DGUSLCD_SD_StartPrint(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::sdStartPrint(DGUS_VP_Variable &var, void *val_ptr) { if (!filelist.seek(file_to_print)) return; ExtUI::printFile(filelist.shortFilename()); - GotoScreen(DGUSLCD_SCREEN_STATUS); + gotoScreen(DGUS_SCREEN_STATUS); } - void DGUSScreenHandler::DGUSLCD_SD_ResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::sdResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr) { if (!ExtUI::isPrintingFromMedia()) return; // avoid race condition when user stays in this menu and printer finishes. switch (swap16(*(uint16_t*)val_ptr)) { @@ -85,19 +85,19 @@ case 1: // Pause - GotoScreen(DGUSLCD_SCREEN_SDPRINTMANIPULATION); + gotoScreen(DGUS_SCREEN_SDPRINTMANIPULATION); if (!ExtUI::isPrintingFromMediaPaused()) { ExtUI::pausePrint(); //ExtUI::mks_pausePrint(); } break; case 2: // Abort - HandleUserConfirmationPopUp(VP_SD_AbortPrintConfirmed, nullptr, PSTR("Abort printing"), filelist.filename(), PSTR("?"), true, true, false, true); + handleUserConfirmationPopUp(VP_SD_AbortPrintConfirmed, nullptr, PSTR("Abort printing"), filelist.filename(), PSTR("?"), true, true, false, true); break; } } - void DGUSScreenHandler::DGUSLCD_SD_SendFilename(DGUS_VP_Variable& var) { + void DGUSScreenHandler::sdSendFilename(DGUS_VP_Variable& var) { uint16_t target_line = (var.VP - VP_SD_FileName0) / VP_SD_FileName_LEN; if (target_line > DGUS_SD_FILESPERSCREEN) return; char tmpfilename[VP_SD_FileName_LEN + 1] = ""; @@ -106,49 +106,49 @@ if (filelist.seek(top_file + target_line)) { snprintf_P(tmpfilename, VP_SD_FileName_LEN, PSTR("%s%c"), filelist.filename(), filelist.isDir() ? '/' : 0); // snprintf_P(tmpfilename, VP_SD_FileName_LEN, PSTR("%s"), filelist.filename()); } - DGUSLCD_SendStringToDisplay(var); + sendStringToDisplay(var); } - void DGUSScreenHandler::SDCardInserted() { + void DGUSScreenHandler::sdCardInserted() { top_file = 0; filelist.refresh(); auto cs = getCurrentScreen(); - if (cs == DGUSLCD_SCREEN_MAIN || cs == DGUSLCD_SCREEN_STATUS) - GotoScreen(DGUSLCD_SCREEN_SDFILELIST); + if (cs == DGUS_SCREEN_MAIN || cs == DGUS_SCREEN_STATUS) + gotoScreen(DGUS_SCREEN_SDFILELIST); } - void DGUSScreenHandler::SDCardRemoved() { - if (current_screen == DGUSLCD_SCREEN_SDFILELIST - || (current_screen == DGUSLCD_SCREEN_CONFIRM && (ConfirmVP == VP_SD_AbortPrintConfirmed || ConfirmVP == VP_SD_FileSelectConfirm)) - || current_screen == DGUSLCD_SCREEN_SDPRINTMANIPULATION - ) GotoScreen(DGUSLCD_SCREEN_MAIN); + void DGUSScreenHandler::sdCardRemoved() { + if (current_screenID == DGUS_SCREEN_SDFILELIST + || (current_screenID == DGUS_SCREEN_CONFIRM && (confirmVP == VP_SD_AbortPrintConfirmed || confirmVP == VP_SD_FileSelectConfirm)) + || current_screenID == DGUS_SCREEN_SDPRINTMANIPULATION + ) gotoScreen(DGUS_SCREEN_MAIN); } #endif // HAS_MEDIA -void DGUSScreenHandler::ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::screenChangeHook(DGUS_VP_Variable &var, void *val_ptr) { uint8_t *tmp = (uint8_t*)val_ptr; // The keycode in target is coded as , so 0x0100A means - // from screen 1 (main) to 10 (temperature). DGUSLCD_SCREEN_POPUP is special, + // from screen 1 (main) to 10 (temperature). DGUS_SCREEN_POPUP is special, // meaning "return to previous screen" - DGUSLCD_Screens target = (DGUSLCD_Screens)tmp[1]; + DGUS_ScreenID target = (DGUS_ScreenID)tmp[1]; - if (target == DGUSLCD_SCREEN_POPUP) { + if (target == DGUS_SCREEN_POPUP) { // Special handling for popup is to return to previous menu - if (current_screen == DGUSLCD_SCREEN_POPUP && confirm_action_cb) confirm_action_cb(); - PopToOldScreen(); + if (current_screenID == DGUS_SCREEN_POPUP && confirm_action_cb) confirm_action_cb(); + popToOldScreen(); return; } - UpdateNewScreen(target); + updateNewScreen(target); #ifdef DEBUG_DGUSLCD - if (!DGUSLCD_FindScreenVPMapList(target)) DEBUG_ECHOLNPGM("WARNING: No screen Mapping found for ", target); + if (!findScreenVPMapList(target)) DEBUG_ECHOLNPGM("WARNING: No screen Mapping found for ", target); #endif } -void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { +void DGUSScreenHandler::handleManualMove(DGUS_VP_Variable &var, void *val_ptr) { int16_t movevalue = swap16(*(uint16_t*)val_ptr); #if ENABLED(DGUS_UI_MOVE_DIS_OPTION) if (movevalue) { @@ -196,7 +196,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { char buf[6] = "G28 X"; buf[4] = axiscode; queue.enqueue_one_now(buf); - ForceCompleteUpdate(); + forceCompleteUpdate(); return; } else { @@ -219,14 +219,14 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { if (!old_relative_mode) queue.enqueue_now(F("G90")); } - ForceCompleteUpdate(); + forceCompleteUpdate(); cannotmove: return; } #if HAS_PID_HEATING - void DGUSScreenHandler::HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr) { uint16_t rawvalue = swap16(*(uint16_t*)val_ptr); float value = (float)rawvalue / 10; float newvalue = 0; @@ -257,17 +257,17 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #endif // HAS_PID_HEATING #if ENABLED(BABYSTEPPING) - void DGUSScreenHandler::HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr) { int16_t flag = swap16(*(uint16_t*)val_ptr), steps = flag ? -20 : 20; ExtUI::smartAdjustAxis_steps(steps, ExtUI::axis_t::Z, true); - ForceCompleteUpdate(); + forceCompleteUpdate(); } #endif #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) - void DGUSScreenHandler::HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr) { + void DGUSScreenHandler::handleFilamentOption(DGUS_VP_Variable &var, void *val_ptr) { uint8_t e_temp = 0; filament_data.heated = false; uint16_t preheat_option = swap16(*(uint16_t*)val_ptr); @@ -315,7 +315,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E1); #endif #endif - GotoScreen(DGUSLCD_SCREEN_UTILITY); + gotoScreen(DGUS_SCREEN_UTILITY); } else { // Go to the preheat screen to show the heating progress switch (var.VP) { @@ -333,11 +333,11 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { break; #endif } - GotoScreen(DGUSLCD_SCREEN_FILAMENT_HEATING); + gotoScreen(DGUS_SCREEN_FILAMENT_HEATING); } } - void DGUSScreenHandler::HandleFilamentLoadUnload(DGUS_VP_Variable &var) { + void DGUSScreenHandler::handleFilamentLoadUnload(DGUS_VP_Variable &var) { if (filament_data.action <= 0) return; // If we close to the target temperature, we can start load or unload the filament @@ -347,14 +347,14 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { if (filament_data.action == 1) { // load filament if (!filament_data.heated) { - //GotoScreen(DGUSLCD_SCREEN_FILAMENT_LOADING); + //gotoScreen(DGUS_SCREEN_FILAMENT_LOADING); filament_data.heated = true; } movevalue = ExtUI::getAxisPosition_mm(filament_data.extruder) + movevalue; } else { // unload filament if (!filament_data.heated) { - GotoScreen(DGUSLCD_SCREEN_FILAMENT_UNLOADING); + gotoScreen(DGUS_SCREEN_FILAMENT_UNLOADING); filament_data.heated = true; } // Before unloading extrude to prevent jamming @@ -372,14 +372,14 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) { #endif // DGUS_FILAMENT_LOADUNLOAD bool DGUSScreenHandler::loop() { - dgusdisplay.loop(); + dgus.loop(); const millis_t ms = millis(); static millis_t next_event_ms = 0; - if (!IsScreenComplete() || ELAPSED(ms, next_event_ms)) { + if (!isScreenComplete() || ELAPSED(ms, next_event_ms)) { next_event_ms = ms + DGUS_UPDATE_INTERVAL_MS; - UpdateScreenVPData(); + updateScreenVPData(); } #if ENABLED(SHOW_BOOTSCREEN) @@ -390,11 +390,11 @@ bool DGUSScreenHandler::loop() { if (!booted && ELAPSED(ms, BOOTSCREEN_TIMEOUT)) { booted = true; - GotoScreen(TERN0(POWER_LOSS_RECOVERY, recovery.valid()) ? DGUSLCD_SCREEN_POWER_LOSS : DGUSLCD_SCREEN_MAIN); + gotoScreen(TERN0(POWER_LOSS_RECOVERY, recovery.valid()) ? DGUS_SCREEN_POWER_LOSS : DGUS_SCREEN_MAIN); } #endif - return IsScreenComplete(); + return isScreenComplete(); } #endif // DGUS_LCD_UI_ORIGIN diff --git a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.h b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.h index 73e3527d7e..16c5dec408 100644 --- a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.h +++ b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.h @@ -26,6 +26,6 @@ typedef DGUSScreenHandler DGUSScreenHandlerClass; #if ENABLED(POWER_LOSS_RECOVERY) - #define PLR_SCREEN_RECOVER DGUSLCD_SCREEN_SDPRINTMANIPULATION - #define PLR_SCREEN_CANCEL DGUSLCD_SCREEN_STATUS + #define PLR_SCREEN_RECOVER DGUS_SCREEN_SDPRINTMANIPULATION + #define PLR_SCREEN_CANCEL DGUS_SCREEN_STATUS #endif diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.cpp index 7e215f887c..3127268180 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.cpp @@ -50,26 +50,26 @@ uint8_t DGUSDisplay::rx_datagram_len = 0; bool DGUSDisplay::initialized = false; -void DGUSDisplay::Loop() { - ProcessRx(); +void DGUSDisplay::loop() { + processRx(); } -void DGUSDisplay::Init() { +void DGUSDisplay::init() { LCD_SERIAL.begin(LCD_BAUDRATE); - ReadVersions(); + readVersions(); } -void DGUSDisplay::Read(uint16_t addr, uint8_t size) { - WriteHeader(addr, DGUS_READVAR, size); +void DGUSDisplay::read(uint16_t addr, uint8_t size) { + writeHeader(addr, DGUS_READVAR, size); LCD_SERIAL.write(size); } -void DGUSDisplay::Write(uint16_t addr, const void* data_ptr, uint8_t size) { +void DGUSDisplay::write(uint16_t addr, const void* data_ptr, uint8_t size) { if (!data_ptr) return; - WriteHeader(addr, DGUS_WRITEVAR, size); + writeHeader(addr, DGUS_WRITEVAR, size); const char* data = static_cast(data_ptr); @@ -78,10 +78,10 @@ void DGUSDisplay::Write(uint16_t addr, const void* data_ptr, uint8_t size) { } } -void DGUSDisplay::WriteString(uint16_t addr, const void* data_ptr, uint8_t size, bool left, bool right, bool use_space) { +void DGUSDisplay::writeString(uint16_t addr, const void* data_ptr, uint8_t size, bool left, bool right, bool use_space) { if (!data_ptr) return; - WriteHeader(addr, DGUS_WRITEVAR, size); + writeHeader(addr, DGUS_WRITEVAR, size); const char* data = static_cast(data_ptr); size_t len = strlen(data); @@ -118,10 +118,10 @@ void DGUSDisplay::WriteString(uint16_t addr, const void* data_ptr, uint8_t size, } } -void DGUSDisplay::WriteStringPGM(uint16_t addr, const void* data_ptr, uint8_t size, bool left, bool right, bool use_space) { +void DGUSDisplay::writeStringPGM(uint16_t addr, const void* data_ptr, uint8_t size, bool left, bool right, bool use_space) { if (!data_ptr) return; - WriteHeader(addr, DGUS_WRITEVAR, size); + writeHeader(addr, DGUS_WRITEVAR, size); const char* data = static_cast(data_ptr); size_t len = strlen_P(data); @@ -151,61 +151,61 @@ void DGUSDisplay::WriteStringPGM(uint16_t addr, const void* data_ptr, uint8_t si while (right_spaces--) LCD_SERIAL.write(use_space ? ' ' : '\0'); } -void DGUSDisplay::ReadVersions() { +void DGUSDisplay::readVersions() { if (gui_version != 0 && os_version != 0) return; - Read(DGUS_VERSION, 1); + read(DGUS_VERSION, 1); } -void DGUSDisplay::SwitchScreen(DGUS_Screen screen) { - const uint8_t command[] = { 0x5A, 0x01, 0x00, (uint8_t)screen }; - Write(0x84, command, sizeof(command)); +void DGUSDisplay::switchScreen(const DGUS_ScreenID screenID) { + const uint8_t command[] = { 0x5A, 0x01, 0x00, (uint8_t)screenID }; + write(0x84, command, sizeof(command)); } -void DGUSDisplay::PlaySound(uint8_t start, uint8_t len, uint8_t volume) { +void DGUSDisplay::playSound(uint8_t start, uint8_t len, uint8_t volume) { if (volume == 0) volume = DGUSDisplay::volume; if (volume == 0) return; const uint8_t command[] = { start, len, volume, 0x00 }; - Write(0xA0, command, sizeof(command)); + write(0xA0, command, sizeof(command)); } -void DGUSDisplay::EnableControl(DGUS_Screen screen, DGUS_ControlType type, DGUS_Control control) { - const uint8_t command[] = { 0x5A, 0xA5, 0x00, (uint8_t)screen, (uint8_t)control, type, 0x00, 0x01 }; - Write(0xB0, command, sizeof(command)); +void DGUSDisplay::enableControl(const DGUS_ScreenID screenID, DGUS_ControlType type, DGUS_Control control) { + const uint8_t command[] = { 0x5A, 0xA5, 0x00, (uint8_t)screenID, (uint8_t)control, type, 0x00, 0x01 }; + write(0xB0, command, sizeof(command)); - FlushTx(); + flushTx(); delay(50); } -void DGUSDisplay::DisableControl(DGUS_Screen screen, DGUS_ControlType type, DGUS_Control control) { - const uint8_t command[] = { 0x5A, 0xA5, 0x00, (uint8_t)screen, (uint8_t)control, type, 0x00, 0x00 }; - Write(0xB0, command, sizeof(command)); +void DGUSDisplay::disableControl(const DGUS_ScreenID screenID, DGUS_ControlType type, DGUS_Control control) { + const uint8_t command[] = { 0x5A, 0xA5, 0x00, (uint8_t)screenID, (uint8_t)control, type, 0x00, 0x00 }; + write(0xB0, command, sizeof(command)); - FlushTx(); + flushTx(); delay(50); } -uint8_t DGUSDisplay::GetBrightness() { +uint8_t DGUSDisplay::getBrightness() { return brightness; } -uint8_t DGUSDisplay::GetVolume() { +uint8_t DGUSDisplay::getVolume() { return map_precise(volume, 0, 255, 0, 100); } -void DGUSDisplay::SetBrightness(uint8_t new_brightness) { +void DGUSDisplay::setBrightness(uint8_t new_brightness) { brightness = constrain(new_brightness, 0, 100); new_brightness = map_precise(brightness, 0, 100, 5, 100); const uint8_t command[] = { new_brightness, new_brightness }; - Write(0x82, command, sizeof(command)); + write(0x82, command, sizeof(command)); } -void DGUSDisplay::SetVolume(uint8_t new_volume) { +void DGUSDisplay::setVolume(uint8_t new_volume) { volume = map_precise(constrain(new_volume, 0, 100), 0, 100, 0, 255); const uint8_t command[] = { volume, 0x00 }; - Write(0xA1, command, sizeof(command)); + write(0xA1, command, sizeof(command)); } -void DGUSDisplay::ProcessRx() { +void DGUSDisplay::processRx() { #if ENABLED(LCD_SERIAL_STATS_RX_BUFFER_OVERRUNS) if (!LCD_SERIAL.available() && LCD_SERIAL.buffer_overruns()) { @@ -274,7 +274,7 @@ void DGUSDisplay::ProcessRx() { } DGUS_VP vp; - if (!DGUS_PopulateVP((DGUS_Addr)addr, &vp)) { + if (!populateVP((DGUS_Addr)addr, &vp)) { rx_datagram_state = DGUS_IDLE; break; } @@ -332,7 +332,7 @@ void DGUSDisplay::ProcessRx() { } } -size_t DGUSDisplay::GetFreeTxBuffer() { +size_t DGUSDisplay::getFreeTxBuffer() { return ( #ifdef LCD_SERIAL_GET_TX_BUFFER_FREE LCD_SERIAL_GET_TX_BUFFER_FREE() @@ -342,7 +342,7 @@ size_t DGUSDisplay::GetFreeTxBuffer() { ); } -void DGUSDisplay::FlushTx() { +void DGUSDisplay::flushTx() { #ifdef ARDUINO_ARCH_STM32 LCD_SERIAL.flush(); #else @@ -350,7 +350,7 @@ void DGUSDisplay::FlushTx() { #endif } -void DGUSDisplay::WriteHeader(uint16_t addr, uint8_t command, uint8_t len) { +void DGUSDisplay::writeHeader(uint16_t addr, uint8_t command, uint8_t len) { LCD_SERIAL.write(DGUS_HEADER1); LCD_SERIAL.write(DGUS_HEADER2); LCD_SERIAL.write(len + 3); @@ -359,7 +359,7 @@ void DGUSDisplay::WriteHeader(uint16_t addr, uint8_t command, uint8_t len) { LCD_SERIAL.write(addr & 0xFF); } -bool DGUS_PopulateVP(const DGUS_Addr addr, DGUS_VP * const buffer) { +bool populateVP(const DGUS_Addr addr, DGUS_VP * const buffer) { const DGUS_VP *ret = vp_list; do { diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.h index bfea5780a1..88fed7a3b8 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.h @@ -26,7 +26,7 @@ * Updated for STM32G0B1RE by Protomosh in 2022. */ -#include "config/DGUS_Screen.h" +#include "config/DGUS_ScreenID.h" #include "config/DGUS_Control.h" #include "definition/DGUS_VP.h" @@ -58,58 +58,58 @@ public: DGUSDisplay() = default; - static void Init(); + static void init(); - static void Read(uint16_t addr, uint8_t size); - static void Write(uint16_t addr, const void* data_ptr, uint8_t size); + static void read(uint16_t addr, uint8_t size); + static void write(uint16_t addr, const void* data_ptr, uint8_t size); - static void WriteString(uint16_t addr, const void* data_ptr, uint8_t size, bool left=true, bool right=false, bool use_space=true); - static void WriteStringPGM(uint16_t addr, const void* data_ptr, uint8_t size, bool left=true, bool right=false, bool use_space=true); - static void WriteString(uint16_t addr, FSTR_P const fstr, uint8_t size, bool left=true, bool right=false, bool use_space=true) { - WriteStringPGM(addr, FTOP(fstr), size, left, right, use_space); + static void writeString(uint16_t addr, const void* data_ptr, uint8_t size, bool left=true, bool right=false, bool use_space=true); + static void writeStringPGM(uint16_t addr, const void* data_ptr, uint8_t size, bool left=true, bool right=false, bool use_space=true); + static void writeString(uint16_t addr, FSTR_P const fstr, uint8_t size, bool left=true, bool right=false, bool use_space=true) { + writeStringPGM(addr, FTOP(fstr), size, left, right, use_space); } template - static void Write(uint16_t addr, T data) { - Write(addr, static_cast(&data), sizeof(T)); + static void write(uint16_t addr, T data) { + write(addr, static_cast(&data), sizeof(T)); } // Until now I did not need to actively read from the display. That's why there is no ReadVariable // (I extensively use the auto upload of the display) // Read GUI and OS version from screen - static void ReadVersions(); + static void readVersions(); // Force display into another screen. - static void SwitchScreen(DGUS_Screen screen); + static void switchScreen(const DGUS_ScreenID screenID); // Play sounds using the display speaker. // start: position at which the sound was stored on the display. // len: how many sounds to play. Sounds will play consecutively from start to start+len-1. // volume: playback volume. 0 keeps the current volume. - static void PlaySound(uint8_t start, uint8_t len=1, uint8_t volume=0); + static void playSound(uint8_t start, uint8_t len=1, uint8_t volume=0); // Enable/disable a specific touch control. // type: control type. // control: index of the control on the page (set during screen development). - static void EnableControl(DGUS_Screen screen, DGUS_ControlType type, DGUS_Control control); - static void DisableControl(DGUS_Screen screen, DGUS_ControlType type, DGUS_Control control); + static void enableControl(const DGUS_ScreenID screenID, DGUS_ControlType type, DGUS_Control control); + static void disableControl(const DGUS_ScreenID screenID, DGUS_ControlType type, DGUS_Control control); - static uint8_t GetBrightness(); - static uint8_t GetVolume(); + static uint8_t getBrightness(); + static uint8_t getVolume(); // Set the display brightness/volume, ranging 0 - 100 - static void SetBrightness(uint8_t brightness); - static void SetVolume(uint8_t volume); + static void setBrightness(uint8_t brightness); + static void setVolume(uint8_t volume); // Periodic tasks, eg. Rx-Queue handling. - static void Loop(); + static void loop(); // Helper for users of this class to estimate if an interaction would be blocking. - static size_t GetFreeTxBuffer(); - static void FlushTx(); + static size_t getFreeTxBuffer(); + static void flushTx(); // Checks two things: Can we confirm the presence of the display and has we initialized it. // (both boils down that the display answered to our chatting) - static bool IsInitialized() { + static bool isInitialized() { return initialized; } @@ -117,7 +117,7 @@ public: static uint8_t os_version; template - static T SwapBytes(const T value) { + static T swapBytes(const T value) { union { T val; char byte[sizeof(T)]; @@ -129,12 +129,12 @@ public: } template - T_out FromFixedPoint(const T_in value) { + T_out fromFixedPoint(const T_in value) { return (T_out)((float)value / POW(10, decimals)); } template - T_out ToFixedPoint(const T_in value) { + T_out toFixedPoint(const T_in value) { return (T_out)LROUND((float)value * POW(10, decimals)); } @@ -160,8 +160,8 @@ private: DGUS_VERSION = 0x000F // OS/GUI version }; - static void WriteHeader(uint16_t addr, uint8_t command, uint8_t len); - static void ProcessRx(); + static void writeHeader(uint16_t addr, uint8_t command, uint8_t len); + static void processRx(); static uint8_t volume; static uint8_t brightness; @@ -172,11 +172,11 @@ private: static bool initialized; }; -template<> inline uint16_t DGUSDisplay::SwapBytes(const uint16_t value) { +template<> inline uint16_t DGUSDisplay::swapBytes(const uint16_t value) { return ((value << 8) | (value >> 8)); } -extern DGUSDisplay dgus_display; +extern DGUSDisplay dgus; /// Helper to populate a DGUS_VP for a given VP. Return false if not found. -extern bool DGUS_PopulateVP(const DGUS_Addr addr, DGUS_VP * const buffer); +extern bool populateVP(const DGUS_Addr addr, DGUS_VP * const buffer); diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp index 97ae7638c9..aa58e85692 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp @@ -27,7 +27,7 @@ #include "DGUSRxHandler.h" #include "DGUSScreenHandler.h" -#include "config/DGUS_Screen.h" +#include "config/DGUS_ScreenID.h" #include "../ui_api.h" #include "../../../core/language.h" @@ -42,73 +42,73 @@ #include "../../../feature/powerloss.h" #endif -void DGUSRxHandler::ScreenChange(DGUS_VP &vp, void *data_ptr) { - const DGUS_Screen screen = (DGUS_Screen)((uint8_t*)data_ptr)[1]; +void DGUSRxHandler::screenChange(DGUS_VP &vp, void *data_ptr) { + const DGUS_ScreenID screenID = (DGUS_ScreenID)((uint8_t*)data_ptr)[1]; if (vp.addr == DGUS_Addr::SCREENCHANGE_SD) { #if HAS_MEDIA IF_DISABLED(HAS_SD_DETECT, card.mount()); if (!ExtUI::isMediaInserted()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(MSG_NO_MEDIA)); + screen.setStatusMessage(GET_TEXT_F(MSG_NO_MEDIA)); return; } card.cdroot(); #else - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(MSG_NO_MEDIA)); + screen.setStatusMessage(GET_TEXT_F(MSG_NO_MEDIA)); return; #endif } if (vp.addr == DGUS_Addr::SCREENCHANGE_Idle && (ExtUI::isPrinting() || ExtUI::isPrintingPaused())) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_NOT_WHILE_PRINTING)); + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_NOT_WHILE_PRINTING)); return; } if (vp.addr == DGUS_Addr::SCREENCHANGE_Printing && (!ExtUI::isPrinting() && !ExtUI::isPrintingPaused())) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_NOT_WHILE_IDLE)); + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_NOT_WHILE_IDLE)); return; } - dgus_screen_handler.TriggerScreenChange(screen); + screen.triggerScreenChange(screenID); } #if HAS_MEDIA - void DGUSRxHandler::Scroll(DGUS_VP &vp, void *data_ptr) { + void DGUSRxHandler::scroll(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::Scroll scroll = (DGUS_Data::Scroll)((uint8_t*)data_ptr)[1]; switch (scroll) { case DGUS_Data::Scroll::GO_BACK: - if (dgus_screen_handler.filelist.isAtRootDir()) { + if (screen.filelist.isAtRootDir()) { return; } - dgus_screen_handler.filelist_offset = 0; - dgus_screen_handler.filelist_selected = -1; - dgus_screen_handler.filelist.upDir(); + screen.filelist_offset = 0; + screen.filelist_selected = -1; + screen.filelist.upDir(); break; case DGUS_Data::Scroll::UP: - if (dgus_screen_handler.filelist_offset < 1) { + if (screen.filelist_offset < 1) { return; } - --dgus_screen_handler.filelist_offset; + --screen.filelist_offset; break; case DGUS_Data::Scroll::DOWN: - if (dgus_screen_handler.filelist_offset + 1 + DGUS_FILE_COUNT > dgus_screen_handler.filelist.count()) { + if (screen.filelist_offset + 1 + DGUS_FILE_COUNT > screen.filelist.count()) { return; } - ++dgus_screen_handler.filelist_offset; + ++screen.filelist_offset; break; } - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } void DGUSRxHandler::selectFile(DGUS_VP &vp, void *data_ptr) { @@ -116,47 +116,47 @@ void DGUSRxHandler::ScreenChange(DGUS_VP &vp, void *data_ptr) { const uint8_t index = ((uint8_t*)data_ptr)[1]; - if (!dgus_screen_handler.filelist.seek(dgus_screen_handler.filelist_offset + index)) { + if (!screen.filelist.seek(screen.filelist_offset + index)) { return; } - if (dgus_screen_handler.filelist.isDir()) { - dgus_screen_handler.filelist_offset = 0; - dgus_screen_handler.filelist_selected = -1; - dgus_screen_handler.filelist.changeDir(dgus_screen_handler.filelist.filename()); + if (screen.filelist.isDir()) { + screen.filelist_offset = 0; + screen.filelist_selected = -1; + screen.filelist.changeDir(screen.filelist.filename()); } else { - dgus_screen_handler.filelist_selected = dgus_screen_handler.filelist_offset + index; + screen.filelist_selected = screen.filelist_offset + index; } - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } - void DGUSRxHandler::PrintFile(DGUS_VP &vp, void *data_ptr) { + void DGUSRxHandler::printFile(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); UNUSED(data_ptr); - if (dgus_screen_handler.filelist_selected < 0) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_NO_FILE_SELECTED)); + if (screen.filelist_selected < 0) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_NO_FILE_SELECTED)); return; } - if (!dgus_screen_handler.filelist.seek(dgus_screen_handler.filelist_selected) - || dgus_screen_handler.filelist.isDir()) { + if (!screen.filelist.seek(screen.filelist_selected) + || screen.filelist.isDir()) { return; } - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } - ExtUI::printFile(dgus_screen_handler.filelist.shortFilename()); - dgus_screen_handler.TriggerScreenChange(DGUS_Screen::PRINT_STATUS); + ExtUI::printFile(screen.filelist.shortFilename()); + screen.triggerScreenChange(DGUS_ScreenID::PRINT_STATUS); } #endif // HAS_MEDIA -void DGUSRxHandler::PrintAbort(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::printAbort(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::Popup result = (DGUS_Data::Popup)((uint8_t*)data_ptr)[1]; @@ -166,14 +166,14 @@ void DGUSRxHandler::PrintAbort(DGUS_VP &vp, void *data_ptr) { } if (!ExtUI::isPrinting() && !ExtUI::isPrintingPaused()) { - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); return; } ExtUI::stopPrint(); } -void DGUSRxHandler::PrintPause(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::printPause(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::Popup result = (DGUS_Data::Popup)((uint8_t*)data_ptr)[1]; @@ -183,14 +183,14 @@ void DGUSRxHandler::PrintPause(DGUS_VP &vp, void *data_ptr) { } if (!ExtUI::isPrinting()) { - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); return; } ExtUI::pausePrint(); } -void DGUSRxHandler::PrintResume(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::printResume(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::Popup result = (DGUS_Data::Popup)((uint8_t*)data_ptr)[1]; @@ -200,29 +200,29 @@ void DGUSRxHandler::PrintResume(DGUS_VP &vp, void *data_ptr) { } if (!ExtUI::isPrintingPaused()) { - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); return; } - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } ExtUI::resumePrint(); } -void DGUSRxHandler::Feedrate(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::feedrate(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const int16_t feedrate = BE16_P(data_ptr); ExtUI::setFeedrate_percent(feedrate); - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::Flowrate(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::flowrate(DGUS_VP &vp, void *data_ptr) { const int16_t flowrate = BE16_P(data_ptr); switch (vp.addr) { @@ -240,24 +240,24 @@ void DGUSRxHandler::Flowrate(DGUS_VP &vp, void *data_ptr) { #endif } - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::BabystepSet(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::babystepSet(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const int16_t data = BE16_P(data_ptr); - const float offset = dgus_display.FromFixedPoint(data); + const float offset = dgus.fromFixedPoint(data); const int16_t steps = ExtUI::mmToWholeSteps(offset - ExtUI::getZOffset_mm(), ExtUI::Z); ExtUI::smartAdjustAxis_steps(steps, ExtUI::Z, true); - dgus_screen_handler.TriggerEEPROMSave(); - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerEEPROMSave(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::Babystep(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::babystep(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::Adjust adjust = (DGUS_Data::Adjust)((uint8_t*)data_ptr)[1]; @@ -275,11 +275,11 @@ void DGUSRxHandler::Babystep(DGUS_VP &vp, void *data_ptr) { ExtUI::smartAdjustAxis_steps(steps, ExtUI::Z, true); - dgus_screen_handler.TriggerEEPROMSave(); - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerEEPROMSave(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::TempPreset(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::tempPreset(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::TempPreset preset = (DGUS_Data::TempPreset)((uint8_t*)data_ptr)[1]; @@ -311,10 +311,10 @@ void DGUSRxHandler::TempPreset(DGUS_VP &vp, void *data_ptr) { break; } - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::TempTarget(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::tempTarget(DGUS_VP &vp, void *data_ptr) { const int16_t temp = BE16_P(data_ptr); switch (vp.addr) { @@ -332,10 +332,10 @@ void DGUSRxHandler::TempTarget(DGUS_VP &vp, void *data_ptr) { #endif } - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::TempCool(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::tempCool(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::Heater heater = (DGUS_Data::Heater)BE16_P(data_ptr); @@ -362,12 +362,12 @@ void DGUSRxHandler::TempCool(DGUS_VP &vp, void *data_ptr) { #endif } - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(MSG_COOLING)); + screen.setStatusMessage(GET_TEXT_F(MSG_COOLING)); - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::Steppers(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::steppers(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::Control control = (DGUS_Data::Control)((uint8_t*)data_ptr)[1]; @@ -381,50 +381,50 @@ void DGUSRxHandler::Steppers(DGUS_VP &vp, void *data_ptr) { break; } - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::ZOffset(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::zOffset(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); if (TERN0(NO_MOTION_BEFORE_HOMING, !ExtUI::isAxisPositionKnown(ExtUI::Z))) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } const int16_t data = BE16_P(data_ptr); - const float offset = dgus_display.FromFixedPoint(data); + const float offset = dgus.fromFixedPoint(data); const int16_t steps = ExtUI::mmToWholeSteps(offset - ExtUI::getZOffset_mm(), ExtUI::Z); ExtUI::smartAdjustAxis_steps(steps, ExtUI::Z, true); - dgus_screen_handler.TriggerEEPROMSave(); - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerEEPROMSave(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::ZOffsetStep(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::zOffsetStep(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); if (TERN0(NO_MOTION_BEFORE_HOMING, !ExtUI::isAxisPositionKnown(ExtUI::Z))) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } const DGUS_Data::Adjust adjust = (DGUS_Data::Adjust)((uint8_t*)data_ptr)[1]; int16_t steps; - switch (dgus_screen_handler.offset_steps) { + switch (screen.offset_steps) { default: return; case DGUS_Data::StepSize::MMP1: steps = ExtUI::mmToWholeSteps((adjust == DGUS_Data::Adjust::INCREMENT ? 0.1f : -0.1f), ExtUI::Z); @@ -436,30 +436,30 @@ void DGUSRxHandler::ZOffsetStep(DGUS_VP &vp, void *data_ptr) { ExtUI::smartAdjustAxis_steps(steps, ExtUI::Z, true); - dgus_screen_handler.TriggerEEPROMSave(); - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerEEPROMSave(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::ZOffsetSetStep(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::zOffsetSetStep(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::StepSize size = (DGUS_Data::StepSize)((uint8_t*)data_ptr)[1]; - dgus_screen_handler.offset_steps = size; + screen.offset_steps = size; - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::MoveToPoint(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::moveToPoint(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); if (!ExtUI::isPositionKnown()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -499,26 +499,26 @@ void DGUSRxHandler::MoveToPoint(DGUS_VP &vp, void *data_ptr) { ExtUI::setAxisPosition_mm(Z_MIN_POS + BED_TRAMMING_HEIGHT, ExtUI::Z); } -void DGUSRxHandler::Probe(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::probe(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); UNUSED(data_ptr); #if ENABLED(MESH_BED_LEVELING) - dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_ABL_REQUIRED)); + screen.setStatusMessage(FPSTR(DGUS_MSG_ABL_REQUIRED)); return; #endif if (!ExtUI::isPositionKnown()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } - dgus_screen_handler.TriggerScreenChange(DGUS_Screen::LEVELING_PROBING); + screen.triggerScreenChange(DGUS_ScreenID::LEVELING_PROBING); #if ENABLED(AUTO_BED_LEVELING_UBL) queue.enqueue_now(F("G29P1\nG29P3\nG29P5C")); @@ -528,22 +528,22 @@ void DGUSRxHandler::Probe(DGUS_VP &vp, void *data_ptr) { queue.enqueue_now(F("M500")); } -void DGUSRxHandler::DisableABL(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::disableABL(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); UNUSED(data_ptr); - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } ExtUI::setLevelingActive(false); - dgus_screen_handler.TriggerEEPROMSave(); - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerEEPROMSave(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::FilamentSelect(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::filamentSelect(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::Extruder extruder = (DGUS_Data::Extruder)BE16_P(data_ptr); @@ -553,34 +553,34 @@ void DGUSRxHandler::FilamentSelect(DGUS_VP &vp, void *data_ptr) { case DGUS_Data::Extruder::CURRENT: case DGUS_Data::Extruder::E0: E_TERN_(case DGUS_Data::Extruder::E1:) - dgus_screen_handler.filament_extruder = extruder; + screen.filament_extruder = extruder; break; } - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::FilamentLength(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::filamentLength(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const uint16_t length = BE16_P(data_ptr); - dgus_screen_handler.filament_length = constrain(length, 0, EXTRUDE_MAXLENGTH); + screen.filament_length = constrain(length, 0, EXTRUDE_MAXLENGTH); - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::FilamentMove(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::filamentMove(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } ExtUI::extruder_t extruder; - switch (dgus_screen_handler.filament_extruder) { + switch (screen.filament_extruder) { default: return; case DGUS_Data::Extruder::CURRENT: #if HAS_MULTI_EXTRUDER @@ -598,7 +598,7 @@ void DGUSRxHandler::FilamentMove(DGUS_VP &vp, void *data_ptr) { } if (ExtUI::getActualTemp_celsius(extruder) < (float)EXTRUDE_MINTEMP) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_TEMP_TOO_LOW)); + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_TEMP_TOO_LOW)); return; } @@ -606,25 +606,25 @@ void DGUSRxHandler::FilamentMove(DGUS_VP &vp, void *data_ptr) { switch (move) { case DGUS_Data::FilamentMove::RETRACT: - UI_DECREMENT_BY(AxisPosition_mm, (float)dgus_screen_handler.filament_length, extruder); + UI_DECREMENT_BY(AxisPosition_mm, (float)screen.filament_length, extruder); break; case DGUS_Data::FilamentMove::EXTRUDE: - UI_INCREMENT_BY(AxisPosition_mm, (float)dgus_screen_handler.filament_length, extruder); + UI_INCREMENT_BY(AxisPosition_mm, (float)screen.filament_length, extruder); break; } } -void DGUSRxHandler::Home(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::home(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } DGUS_Data::Axis axis = (DGUS_Data::Axis)((uint8_t*)data_ptr)[1]; - dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), dgus_screen_handler.GetCurrentScreen()); + screen.showWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), screen.getCurrentScreen()); switch (axis) { case DGUS_Data::Axis::X_Y_Z: @@ -639,9 +639,9 @@ void DGUSRxHandler::Home(DGUS_VP &vp, void *data_ptr) { } } -void DGUSRxHandler::Move(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::move(DGUS_VP &vp, void *data_ptr) { const int16_t data = BE16_P(data_ptr); - const float position = dgus_display.FromFixedPoint(data); + const float position = dgus.fromFixedPoint(data); ExtUI::axis_t axis; switch (vp.addr) { @@ -652,20 +652,20 @@ void DGUSRxHandler::Move(DGUS_VP &vp, void *data_ptr) { } if (TERN0(NO_MOTION_BEFORE_HOMING, !ExtUI::isAxisPositionKnown(axis))) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } ExtUI::setAxisPosition_mm(position, axis); - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::MoveStep(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::moveStep(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); float offset; - switch (dgus_screen_handler.move_steps) { + switch (screen.move_steps) { default: return; case DGUS_Data::StepSize::MM10: offset = 10.0f; break; case DGUS_Data::StepSize::MM1: offset = 1.0f; break; @@ -686,58 +686,58 @@ void DGUSRxHandler::MoveStep(DGUS_VP &vp, void *data_ptr) { } if (TERN0(NO_MOTION_BEFORE_HOMING, !ExtUI::isAxisPositionKnown(axis))) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); return; } UI_INCREMENT_BY(AxisPosition_mm, offset, axis); - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::MoveSetStep(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::moveSetStep(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::StepSize size = (DGUS_Data::StepSize)((uint8_t*)data_ptr)[1]; - dgus_screen_handler.move_steps = size; + screen.move_steps = size; - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::GcodeClear(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::gcodeClear(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); UNUSED(data_ptr); - ZERO(dgus_screen_handler.gcode); + ZERO(screen.gcode); - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::GcodeExecute(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::gcodeExecute(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); UNUSED(data_ptr); - if (!strlen(dgus_screen_handler.gcode)) return; + if (!strlen(screen.gcode)) return; - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } - dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_EXECUTING_COMMAND), DGUS_Screen::GCODE); + screen.showWaitScreen(GET_TEXT_F(DGUS_MSG_EXECUTING_COMMAND), DGUS_ScreenID::GCODE); - queue.enqueue_one_now(dgus_screen_handler.gcode); + queue.enqueue_one_now(screen.gcode); } -void DGUSRxHandler::ResetEEPROM(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::resetEEPROM(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::Popup result = (DGUS_Data::Popup)((uint8_t*)data_ptr)[1]; if (result != DGUS_Data::Popup::CONFIRMED) return; - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } @@ -745,7 +745,7 @@ void DGUSRxHandler::ResetEEPROM(DGUS_VP &vp, void *data_ptr) { queue.enqueue_now(F("M500")); } -void DGUSRxHandler::SettingsExtra(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::settingsExtra(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::Extra extra = (DGUS_Data::Extra)((uint8_t*)data_ptr)[1]; @@ -754,25 +754,25 @@ void DGUSRxHandler::SettingsExtra(DGUS_VP &vp, void *data_ptr) { default: return; case DGUS_Data::Extra::BUTTON1: #if ENABLED(BLTOUCH) - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } queue.enqueue_now(F(DGUS_RESET_BLTOUCH)); #else - dgus_screen_handler.TriggerScreenChange(DGUS_Screen::INFOS); + screen.triggerScreenChange(DGUS_ScreenID::INFOS); #endif break; #if ENABLED(BLTOUCH) case DGUS_Data::Extra::BUTTON2: - dgus_screen_handler.TriggerScreenChange(DGUS_Screen::INFOS); + screen.triggerScreenChange(DGUS_ScreenID::INFOS); break; #endif } } -void DGUSRxHandler::PIDSelect(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::pidSelect(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::Heater heater = (DGUS_Data::Heater)BE16_P(data_ptr); @@ -780,34 +780,34 @@ void DGUSRxHandler::PIDSelect(DGUS_VP &vp, void *data_ptr) { switch (heater) { default: return; case DGUS_Data::Heater::BED: - dgus_screen_handler.pid_temp = DGUS_PLA_TEMP_BED; - dgus_screen_handler.pid_heater = heater; + screen.pid_temp = DGUS_PLA_TEMP_BED; + screen.pid_heater = heater; break; case DGUS_Data::Heater::H0: #if HAS_MULTI_HOTEND case DGUS_Data::Heater::H1: #endif - dgus_screen_handler.pid_temp = DGUS_PLA_TEMP_HOTEND; - dgus_screen_handler.pid_heater = heater; + screen.pid_temp = DGUS_PLA_TEMP_HOTEND; + screen.pid_heater = heater; break; } - dgus_screen_handler.pid_cycles = 5; + screen.pid_cycles = 5; - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::PIDSetTemp(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::pidSetTemp(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } uint16_t temp = BE16_P(data_ptr); - switch (dgus_screen_handler.pid_heater) { + switch (screen.pid_heater) { default: return; case DGUS_Data::Heater::BED: temp = constrain(temp, BED_MINTEMP, BED_MAX_TARGET); @@ -822,31 +822,31 @@ void DGUSRxHandler::PIDSetTemp(DGUS_VP &vp, void *data_ptr) { #endif } - dgus_screen_handler.pid_temp = temp; + screen.pid_temp = temp; - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::pidRun(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); UNUSED(data_ptr); - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } heater_id_t heater; - uint8_t cycles = constrain(dgus_screen_handler.pid_cycles, 3, 10); + uint8_t cycles = constrain(screen.pid_cycles, 3, 10); - switch (dgus_screen_handler.pid_heater) { + switch (screen.pid_heater) { default: return; case DGUS_Data::Heater::BED: #if ENABLED(PIDTEMPBED) heater = H_BED; break; #else - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BED_PID_DISABLED)); + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BED_PID_DISABLED)); return; #endif case DGUS_Data::Heater::H0: @@ -854,7 +854,7 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) { heater = H_E0; break; #else - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_PID_DISABLED)); + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_PID_DISABLED)); return; #endif #if HAS_MULTI_HOTEND @@ -863,23 +863,23 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) { heater = H_E1; break; #else - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_PID_DISABLED)); + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_PID_DISABLED)); return; #endif #endif } char buffer[24]; - snprintf_P(buffer, sizeof(buffer), PSTR("M303C%dE%dS%dU1"), cycles, heater, dgus_screen_handler.pid_temp); + snprintf_P(buffer, sizeof(buffer), PSTR("M303C%dE%dS%dU1"), cycles, heater, screen.pid_temp); - dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_PID_AUTOTUNING), DGUS_Screen::PID); + screen.showWaitScreen(GET_TEXT_F(DGUS_MSG_PID_AUTOTUNING), DGUS_ScreenID::PID); queue.enqueue_one_now(buffer); queue.enqueue_now(F("M500")); } #if ENABLED(POWER_LOSS_RECOVERY) - void DGUSRxHandler::PowerLossAbort(DGUS_VP &vp, void *data_ptr) { + void DGUSRxHandler::powerLossAbort(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::Popup result = (DGUS_Data::Popup)((uint8_t*)data_ptr)[1]; @@ -888,17 +888,17 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) { return; } - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } - dgus_screen_handler.TriggerScreenChange(DGUS_Screen::HOME); + screen.triggerScreenChange(DGUS_ScreenID::HOME); queue.enqueue_now(F("M1000C")); } - void DGUSRxHandler::PowerLossResume(DGUS_VP &vp, void *data_ptr) { + void DGUSRxHandler::powerLossResume(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::Popup result = (DGUS_Data::Popup)((uint8_t*)data_ptr)[1]; @@ -907,23 +907,23 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) { return; } - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return; } if (!recovery.valid()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_INVALID_RECOVERY_DATA)); + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_INVALID_RECOVERY_DATA)); return; } - dgus_screen_handler.TriggerScreenChange(DGUS_Screen::PRINT_STATUS); + screen.triggerScreenChange(DGUS_ScreenID::PRINT_STATUS); queue.enqueue_now(F("M1000")); } #endif // POWER_LOSS_RECOVERY -void DGUSRxHandler::WaitAbort(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::waitAbort(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); const DGUS_Data::Popup result = (DGUS_Data::Popup)((uint8_t*)data_ptr)[1]; @@ -933,25 +933,25 @@ void DGUSRxHandler::WaitAbort(DGUS_VP &vp, void *data_ptr) { } if (!ExtUI::isPrintingPaused()) { - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); return; } ExtUI::stopPrint(); - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::WaitContinue(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::waitContinue(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); UNUSED(data_ptr); ExtUI::setUserConfirmed(); - dgus_screen_handler.TriggerFullUpdate(); + screen.triggerFullUpdate(); } -void DGUSRxHandler::FanSpeed(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::fanSpeed(DGUS_VP &vp, void *data_ptr) { uint8_t speed = ((uint8_t*)data_ptr)[1]; switch (vp.addr) { default: return; @@ -961,36 +961,36 @@ void DGUSRxHandler::FanSpeed(DGUS_VP &vp, void *data_ptr) { } } -void DGUSRxHandler::Volume(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::volume(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); uint8_t volume = ((uint8_t*)data_ptr)[1]; - dgus_display.SetVolume(volume); + dgus.setVolume(volume); - dgus_screen_handler.TriggerEEPROMSave(); + screen.triggerEEPROMSave(); } -void DGUSRxHandler::Brightness(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::brightness(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); uint8_t brightness = ((uint8_t*)data_ptr)[1]; - dgus_display.SetBrightness(brightness); + dgus.setBrightness(brightness); - dgus_screen_handler.TriggerEEPROMSave(); + screen.triggerEEPROMSave(); } -void DGUSRxHandler::Debug(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::debug(DGUS_VP &vp, void *data_ptr) { UNUSED(vp); UNUSED(data_ptr); - ++dgus_screen_handler.debug_count; + ++screen.debug_count; - if (dgus_screen_handler.debug_count >= 10) { - dgus_screen_handler.TriggerScreenChange(DGUS_Screen::DEBUG); + if (screen.debug_count >= 10) { + screen.triggerScreenChange(DGUS_ScreenID::DEBUG); } } -void DGUSRxHandler::StringToExtra(DGUS_VP &vp, void *data_ptr) { +void DGUSRxHandler::stringToExtra(DGUS_VP &vp, void *data_ptr) { if (!vp.size || !vp.extra) return; memcpy(vp.extra, data_ptr, vp.size); } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.h index b81b142d84..9143b83554 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.h @@ -26,78 +26,78 @@ namespace DGUSRxHandler { - void ScreenChange(DGUS_VP &, void *); + void screenChange(DGUS_VP &, void *); #if HAS_MEDIA - void Scroll(DGUS_VP &, void *); + void scroll(DGUS_VP &, void *); void selectFile(DGUS_VP &, void *); - void PrintFile(DGUS_VP &, void *); + void printFile(DGUS_VP &, void *); #endif - void PrintAbort(DGUS_VP &, void *); - void PrintPause(DGUS_VP &, void *); - void PrintResume(DGUS_VP &, void *); + void printAbort(DGUS_VP &, void *); + void printPause(DGUS_VP &, void *); + void printResume(DGUS_VP &, void *); - void Feedrate(DGUS_VP &, void *); - void Flowrate(DGUS_VP &, void *); - void BabystepSet(DGUS_VP &, void *); - void Babystep(DGUS_VP &, void *); + void feedrate(DGUS_VP &, void *); + void flowrate(DGUS_VP &, void *); + void babystepSet(DGUS_VP &, void *); + void babystep(DGUS_VP &, void *); - void TempPreset(DGUS_VP &, void *); - void TempTarget(DGUS_VP &, void *); - void TempCool(DGUS_VP &, void *); + void tempPreset(DGUS_VP &, void *); + void tempTarget(DGUS_VP &, void *); + void tempCool(DGUS_VP &, void *); - void Steppers(DGUS_VP &, void *); + void steppers(DGUS_VP &, void *); - void ZOffset(DGUS_VP &, void *); - void ZOffsetStep(DGUS_VP &, void *); - void ZOffsetSetStep(DGUS_VP &, void *); + void zOffset(DGUS_VP &, void *); + void zOffsetStep(DGUS_VP &, void *); + void zOffsetSetStep(DGUS_VP &, void *); - void MoveToPoint(DGUS_VP &, void *); + void moveToPoint(DGUS_VP &, void *); - void Probe(DGUS_VP &, void *); - void DisableABL(DGUS_VP &, void *); + void probe(DGUS_VP &, void *); + void disableABL(DGUS_VP &, void *); - void FilamentSelect(DGUS_VP &, void *); - void FilamentLength(DGUS_VP &, void *); - void FilamentMove(DGUS_VP &, void *); + void filamentSelect(DGUS_VP &, void *); + void filamentLength(DGUS_VP &, void *); + void filamentMove(DGUS_VP &, void *); - void Home(DGUS_VP &, void *); - void Move(DGUS_VP &, void *); - void MoveStep(DGUS_VP &, void *); - void MoveSetStep(DGUS_VP &, void *); + void home(DGUS_VP &, void *); + void move(DGUS_VP &, void *); + void moveStep(DGUS_VP &, void *); + void moveSetStep(DGUS_VP &, void *); - void GcodeClear(DGUS_VP &, void *); - void GcodeExecute(DGUS_VP &, void *); + void gcodeClear(DGUS_VP &, void *); + void gcodeExecute(DGUS_VP &, void *); - void ResetEEPROM(DGUS_VP &, void *); + void resetEEPROM(DGUS_VP &, void *); - void SettingsExtra(DGUS_VP &, void *); + void settingsExtra(DGUS_VP &, void *); - void PIDSelect(DGUS_VP &, void *); - void PIDSetTemp(DGUS_VP &, void *); - void PIDRun(DGUS_VP &, void *); + void pidSelect(DGUS_VP &, void *); + void pidSetTemp(DGUS_VP &, void *); + void pidRun(DGUS_VP &, void *); #if ENABLED(POWER_LOSS_RECOVERY) - void PowerLossAbort(DGUS_VP &, void *); - void PowerLossResume(DGUS_VP &, void *); + void powerLossAbort(DGUS_VP &, void *); + void powerLossResume(DGUS_VP &, void *); #endif - void WaitAbort(DGUS_VP &, void *); - void WaitContinue(DGUS_VP &, void *); + void waitAbort(DGUS_VP &, void *); + void waitContinue(DGUS_VP &, void *); - void FanSpeed(DGUS_VP &, void *); + void fanSpeed(DGUS_VP &, void *); - void Volume(DGUS_VP &, void *); + void volume(DGUS_VP &, void *); - void Brightness(DGUS_VP &, void *); + void brightness(DGUS_VP &, void *); - void Debug(DGUS_VP &, void *); + void debug(DGUS_VP &, void *); - void StringToExtra(DGUS_VP &, void *); + void stringToExtra(DGUS_VP &, void *); template - void IntegerToExtra(DGUS_VP &vp, void *data_ptr) { + void integerToExtra(DGUS_VP &vp, void *data_ptr) { if (!vp.size || !vp.extra) return; switch (vp.size) { default: return; @@ -112,7 +112,7 @@ namespace DGUSRxHandler { break; } case 4: { - const uint32_t data = dgus_display.SwapBytes(*(uint32_t*)data_ptr); + const uint32_t data = dgus.swapBytes(*(uint32_t*)data_ptr); *(T*)vp.extra = (T)data; break; } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp index c0f8576045..793a2c1579 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp @@ -57,11 +57,11 @@ uint8_t DGUSScreenHandler::pid_cycles = 5; bool DGUSScreenHandler::settings_ready = false; bool DGUSScreenHandler::booted = false; -DGUS_Screen DGUSScreenHandler::current_screen = DGUS_Screen::BOOT; -DGUS_Screen DGUSScreenHandler::new_screen = DGUS_Screen::BOOT; +DGUS_ScreenID DGUSScreenHandler::current_screenID = DGUS_ScreenID::BOOT; +DGUS_ScreenID DGUSScreenHandler::new_screenID = DGUS_ScreenID::BOOT; bool DGUSScreenHandler::full_update = false; -DGUS_Screen DGUSScreenHandler::wait_return_screen = DGUS_Screen::HOME; +DGUS_ScreenID DGUSScreenHandler::wait_return_screenID = DGUS_ScreenID::HOME; bool DGUSScreenHandler::wait_continue = false; bool DGUSScreenHandler::leveling_active = false; @@ -69,41 +69,41 @@ bool DGUSScreenHandler::leveling_active = false; millis_t DGUSScreenHandler::status_expire = 0; millis_t DGUSScreenHandler::eeprom_save = 0; -void DGUSScreenHandler::Init() { - dgus_display.Init(); +void DGUSScreenHandler::init() { + dgus.init(); - MoveToScreen(DGUS_Screen::BOOT, true); + moveToScreen(DGUS_ScreenID::BOOT, true); } -void DGUSScreenHandler::Ready() { - dgus_display.PlaySound(1); +void DGUSScreenHandler::ready() { + dgus.playSound(1); } -void DGUSScreenHandler::Loop() { - if (!settings_ready || current_screen == DGUS_Screen::KILL) { +void DGUSScreenHandler::loop() { + if (!settings_ready || current_screenID == DGUS_ScreenID::KILL) { return; } const millis_t ms = ExtUI::safe_millis(); static millis_t next_event_ms = 0; - if (new_screen != DGUS_Screen::BOOT) { - const DGUS_Screen screen = new_screen; - new_screen = DGUS_Screen::BOOT; - if (current_screen == screen) - TriggerFullUpdate(); + if (new_screenID != DGUS_ScreenID::BOOT) { + const DGUS_ScreenID screenID = new_screenID; + new_screenID = DGUS_ScreenID::BOOT; + if (current_screenID == screenID) + triggerFullUpdate(); else - MoveToScreen(screen); + moveToScreen(screenID); return; } if (!booted && ELAPSED(ms, 3000)) { booted = true; - dgus_display.ReadVersions(); + dgus.readVersions(); - if (current_screen == DGUS_Screen::BOOT) - MoveToScreen(DGUS_Screen::HOME); + if (current_screenID == DGUS_ScreenID::BOOT) + moveToScreen(DGUS_ScreenID::HOME); return; } @@ -111,98 +111,98 @@ void DGUSScreenHandler::Loop() { if (ELAPSED(ms, next_event_ms) || full_update) { next_event_ms = ms + DGUS_UPDATE_INTERVAL_MS; - if (!SendScreenVPData(current_screen, full_update)) - DEBUG_ECHOLNPGM("SendScreenVPData failed"); + if (!sendScreenVPData(current_screenID, full_update)) + DEBUG_ECHOLNPGM("sendScreenVPData failed"); return; } - if (current_screen == DGUS_Screen::WAIT - && ((wait_continue && !wait_for_user) || (!wait_continue && IsPrinterIdle())) + if (current_screenID == DGUS_ScreenID::WAIT + && ((wait_continue && !wait_for_user) || (!wait_continue && isPrinterIdle())) ) { - MoveToScreen(wait_return_screen, true); + moveToScreen(wait_return_screenID, true); return; } - if (current_screen == DGUS_Screen::LEVELING_PROBING && IsPrinterIdle()) { - dgus_display.PlaySound(3); + if (current_screenID == DGUS_ScreenID::LEVELING_PROBING && isPrinterIdle()) { + dgus.playSound(3); - SetStatusMessage(ExtUI::getLevelingIsValid() ? GET_TEXT_F(DGUS_MSG_PROBING_SUCCESS) : GET_TEXT_F(DGUS_MSG_PROBING_FAILED)); + setStatusMessage(ExtUI::getLevelingIsValid() ? GET_TEXT_F(DGUS_MSG_PROBING_SUCCESS) : GET_TEXT_F(DGUS_MSG_PROBING_FAILED)); - MoveToScreen(DGUS_Screen::LEVELING_AUTOMATIC); + moveToScreen(DGUS_ScreenID::LEVELING_AUTOMATIC); return; } if (status_expire > 0 && ELAPSED(ms, status_expire)) { - SetStatusMessage(FPSTR(NUL_STR), 0); + setStatusMessage(FPSTR(NUL_STR), 0); return; } - if (eeprom_save > 0 && ELAPSED(ms, eeprom_save) && IsPrinterIdle()) { + if (eeprom_save > 0 && ELAPSED(ms, eeprom_save) && isPrinterIdle()) { eeprom_save = 0; queue.enqueue_now(F("M500")); return; } - dgus_display.Loop(); + dgus.loop(); } void DGUSScreenHandler::printerKilled(FSTR_P const error, FSTR_P const component) { - SetMessageLine(error, 1); - SetMessageLine(component, 2); - SetMessageLinePGM(NUL_STR, 3); - SetMessageLine(GET_TEXT_F(MSG_PLEASE_RESET), 4); + setMessageLine(error, 1); + setMessageLine(component, 2); + setMessageLinePGM(NUL_STR, 3); + setMessageLine(GET_TEXT_F(MSG_PLEASE_RESET), 4); - dgus_display.PlaySound(3, 1, 200); + dgus.playSound(3, 1, 200); - MoveToScreen(DGUS_Screen::KILL, true); + moveToScreen(DGUS_ScreenID::KILL, true); } -void DGUSScreenHandler::UserConfirmRequired(const char * const msg) { - SetMessageLinePGM(NUL_STR, 1); - SetMessageLine(msg, 2); - SetMessageLinePGM(NUL_STR, 3); - SetMessageLinePGM(NUL_STR, 4); +void DGUSScreenHandler::userConfirmRequired(const char * const msg) { + setMessageLinePGM(NUL_STR, 1); + setMessageLine(msg, 2); + setMessageLinePGM(NUL_STR, 3); + setMessageLinePGM(NUL_STR, 4); - dgus_display.PlaySound(3); + dgus.playSound(3); - ShowWaitScreen(current_screen, true); + showWaitScreen(current_screenID, true); } -void DGUSScreenHandler::SettingsReset() { - dgus_display.SetVolume(DGUS_DEFAULT_VOLUME); - dgus_display.SetBrightness(DGUS_DEFAULT_BRIGHTNESS); +void DGUSScreenHandler::settingsReset() { + dgus.setVolume(DGUS_DEFAULT_VOLUME); + dgus.setBrightness(DGUS_DEFAULT_BRIGHTNESS); if (!settings_ready) { settings_ready = true; - Ready(); + ready(); } - SetStatusMessage(GET_TEXT_F(DGUS_MSG_RESET_EEPROM)); + setStatusMessage(GET_TEXT_F(DGUS_MSG_RESET_EEPROM)); } -void DGUSScreenHandler::StoreSettings(char *buff) { +void DGUSScreenHandler::storeSettings(char *buff) { eeprom_data_t data; static_assert(sizeof(data) <= ExtUI::eeprom_data_size, "sizeof(eeprom_data_t) > eeprom_data_size."); data.initialized = true; - data.volume = dgus_display.GetVolume(); - data.brightness = dgus_display.GetBrightness(); + data.volume = dgus.getVolume(); + data.brightness = dgus.getBrightness(); data.abl_okay = (ExtUI::getLevelingActive() && ExtUI::getLevelingIsValid()); memcpy(buff, &data, sizeof(data)); } -void DGUSScreenHandler::LoadSettings(const char *buff) { +void DGUSScreenHandler::loadSettings(const char *buff) { eeprom_data_t data; static_assert(sizeof(data) <= ExtUI::eeprom_data_size, "sizeof(eeprom_data_t) > eeprom_data_size."); memcpy(&data, buff, sizeof(data)); - dgus_display.SetVolume(data.initialized ? data.volume : DGUS_DEFAULT_VOLUME); - dgus_display.SetBrightness(data.initialized ? data.brightness : DGUS_DEFAULT_BRIGHTNESS); + dgus.setVolume(data.initialized ? data.volume : DGUS_DEFAULT_VOLUME); + dgus.setBrightness(data.initialized ? data.brightness : DGUS_DEFAULT_BRIGHTNESS); if (data.initialized) { leveling_active = (data.abl_okay && ExtUI::getLevelingIsValid()); @@ -210,36 +210,36 @@ void DGUSScreenHandler::LoadSettings(const char *buff) { } } -void DGUSScreenHandler::ConfigurationStoreWritten(bool success) { +void DGUSScreenHandler::configurationStoreWritten(bool success) { if (!success) - SetStatusMessage(GET_TEXT_F(DGUS_MSG_WRITE_EEPROM_FAILED)); + setStatusMessage(GET_TEXT_F(DGUS_MSG_WRITE_EEPROM_FAILED)); } -void DGUSScreenHandler::ConfigurationStoreRead(bool success) { +void DGUSScreenHandler::configurationStoreRead(bool success) { if (!success) { - SetStatusMessage(GET_TEXT_F(DGUS_MSG_READ_EEPROM_FAILED)); + setStatusMessage(GET_TEXT_F(DGUS_MSG_READ_EEPROM_FAILED)); } else if (!settings_ready) { settings_ready = true; - Ready(); + ready(); } } -void DGUSScreenHandler::PlayTone(const uint16_t frequency, const uint16_t duration) { +void DGUSScreenHandler::playTone(const uint16_t frequency, const uint16_t duration) { UNUSED(duration); if (frequency >= 1 && frequency <= 255) { if (duration >= 1 && duration <= 255) - dgus_display.PlaySound((uint8_t)frequency, (uint8_t)duration); + dgus.playSound((uint8_t)frequency, (uint8_t)duration); else - dgus_display.PlaySound((uint8_t)frequency); + dgus.playSound((uint8_t)frequency); } } -void DGUSScreenHandler::MeshUpdate(const int8_t xpos, const int8_t ypos) { - if (current_screen != DGUS_Screen::LEVELING_PROBING) { - if (current_screen == DGUS_Screen::LEVELING_AUTOMATIC) - TriggerFullUpdate(); +void DGUSScreenHandler::meshUpdate(const int8_t xpos, const int8_t ypos) { + if (current_screenID != DGUS_ScreenID::LEVELING_PROBING) { + if (current_screenID == DGUS_ScreenID::LEVELING_AUTOMATIC) + triggerFullUpdate(); return; } @@ -249,25 +249,25 @@ void DGUSScreenHandler::MeshUpdate(const int8_t xpos, const int8_t ypos) { if (xpos >= GRID_MAX_POINTS_X - 1 && ypos >= GRID_MAX_POINTS_Y - 1 && !ExtUI::getLevelingIsValid()) probing_icons[0] = probing_icons[1] = 0; - TriggerFullUpdate(); + triggerFullUpdate(); } -void DGUSScreenHandler::PrintTimerStarted() { - TriggerScreenChange(DGUS_Screen::PRINT_STATUS); +void DGUSScreenHandler::printTimerStarted() { + triggerScreenChange(DGUS_ScreenID::PRINT_STATUS); } -void DGUSScreenHandler::PrintTimerPaused() { - dgus_display.PlaySound(3); - TriggerFullUpdate(); +void DGUSScreenHandler::printTimerPaused() { + dgus.playSound(3); + triggerFullUpdate(); } -void DGUSScreenHandler::PrintTimerStopped() { - if (current_screen != DGUS_Screen::PRINT_STATUS && current_screen != DGUS_Screen::PRINT_ADJUST) +void DGUSScreenHandler::printTimerStopped() { + if (current_screenID != DGUS_ScreenID::PRINT_STATUS && current_screenID != DGUS_ScreenID::PRINT_ADJUST) return; - dgus_display.PlaySound(3); + dgus.playSound(3); - TriggerScreenChange(DGUS_Screen::PRINT_FINISHED); + triggerScreenChange(DGUS_ScreenID::PRINT_FINISHED); } void DGUSScreenHandler::filamentRunout(const ExtUI::extruder_t extruder) { @@ -275,161 +275,161 @@ void DGUSScreenHandler::filamentRunout(const ExtUI::extruder_t extruder) { snprintf_P(buffer, sizeof(buffer), GET_TEXT(DGUS_MSG_FILAMENT_RUNOUT), extruder); - SetStatusMessage(buffer); + setStatusMessage(buffer); - dgus_display.PlaySound(3); + dgus.playSound(3); } #if HAS_MEDIA - void DGUSScreenHandler::SDCardInserted() { - if (current_screen == DGUS_Screen::HOME) - TriggerScreenChange(DGUS_Screen::PRINT); + void DGUSScreenHandler::sdCardInserted() { + if (current_screenID == DGUS_ScreenID::HOME) + triggerScreenChange(DGUS_ScreenID::PRINT); } - void DGUSScreenHandler::SDCardRemoved() { - if (current_screen == DGUS_Screen::PRINT) - TriggerScreenChange(DGUS_Screen::HOME); + void DGUSScreenHandler::sdCardRemoved() { + if (current_screenID == DGUS_ScreenID::PRINT) + triggerScreenChange(DGUS_ScreenID::HOME); } - void DGUSScreenHandler::SDCardError() { - SetStatusMessage(GET_TEXT_F(MSG_MEDIA_READ_ERROR)); - if (current_screen == DGUS_Screen::PRINT) - TriggerScreenChange(DGUS_Screen::HOME); + void DGUSScreenHandler::sdCardError() { + setStatusMessage(GET_TEXT_F(MSG_MEDIA_READ_ERROR)); + if (current_screenID == DGUS_ScreenID::PRINT) + triggerScreenChange(DGUS_ScreenID::HOME); } #endif // HAS_MEDIA #if ENABLED(POWER_LOSS_RECOVERY) - void DGUSScreenHandler::PowerLossResume() { - MoveToScreen(DGUS_Screen::POWERLOSS, true); + void DGUSScreenHandler::powerLossResume() { + moveToScreen(DGUS_ScreenID::POWERLOSS, true); } #endif // POWER_LOSS_RECOVERY #if HAS_PID_HEATING - void DGUSScreenHandler::PidTuning(const ExtUI::result_t rst) { + void DGUSScreenHandler::pidTuning(const ExtUI::result_t rst) { switch (rst) { case ExtUI::PID_STARTED: - SetStatusMessage(GET_TEXT_F(MSG_PID_AUTOTUNE)); + setStatusMessage(GET_TEXT_F(MSG_PID_AUTOTUNE)); break; case ExtUI::PID_BAD_HEATER_ID: - SetStatusMessage(GET_TEXT_F(MSG_PID_BAD_HEATER_ID)); + setStatusMessage(GET_TEXT_F(MSG_PID_BAD_HEATER_ID)); break; case ExtUI::PID_TEMP_TOO_HIGH: - SetStatusMessage(GET_TEXT_F(MSG_PID_TEMP_TOO_HIGH)); + setStatusMessage(GET_TEXT_F(MSG_PID_TEMP_TOO_HIGH)); break; case ExtUI::PID_TUNING_TIMEOUT: - SetStatusMessage(GET_TEXT_F(MSG_PID_TIMEOUT)); + setStatusMessage(GET_TEXT_F(MSG_PID_TIMEOUT)); break; case ExtUI::PID_DONE: - SetStatusMessage(GET_TEXT_F(MSG_PID_AUTOTUNE_DONE)); + setStatusMessage(GET_TEXT_F(MSG_PID_AUTOTUNE_DONE)); break; default: return; } - dgus_display.PlaySound(3); + dgus.playSound(3); } #endif // HAS_PID_HEATING -void DGUSScreenHandler::SetMessageLine(const char * const msg, const uint8_t line) { +void DGUSScreenHandler::setMessageLine(const char * const msg, const uint8_t line) { switch (line) { default: return; case 1: - dgus_display.WriteString((uint16_t)DGUS_Addr::MESSAGE_Line1, msg, DGUS_LINE_LEN, true, true); + dgus.writeString((uint16_t)DGUS_Addr::MESSAGE_Line1, msg, DGUS_LINE_LEN, true, true); break; case 2: - dgus_display.WriteString((uint16_t)DGUS_Addr::MESSAGE_Line2, msg, DGUS_LINE_LEN, true, true); + dgus.writeString((uint16_t)DGUS_Addr::MESSAGE_Line2, msg, DGUS_LINE_LEN, true, true); break; case 3: - dgus_display.WriteString((uint16_t)DGUS_Addr::MESSAGE_Line3, msg, DGUS_LINE_LEN, true, true); + dgus.writeString((uint16_t)DGUS_Addr::MESSAGE_Line3, msg, DGUS_LINE_LEN, true, true); break; case 4: - dgus_display.WriteString((uint16_t)DGUS_Addr::MESSAGE_Line4, msg, DGUS_LINE_LEN, true, true); + dgus.writeString((uint16_t)DGUS_Addr::MESSAGE_Line4, msg, DGUS_LINE_LEN, true, true); break; } } -void DGUSScreenHandler::SetMessageLinePGM(PGM_P const msg, const uint8_t line) { +void DGUSScreenHandler::setMessageLinePGM(PGM_P const msg, const uint8_t line) { switch (line) { default: return; case 1: - dgus_display.WriteStringPGM((uint16_t)DGUS_Addr::MESSAGE_Line1, msg, DGUS_LINE_LEN, true, true); + dgus.writeStringPGM((uint16_t)DGUS_Addr::MESSAGE_Line1, msg, DGUS_LINE_LEN, true, true); break; case 2: - dgus_display.WriteStringPGM((uint16_t)DGUS_Addr::MESSAGE_Line2, msg, DGUS_LINE_LEN, true, true); + dgus.writeStringPGM((uint16_t)DGUS_Addr::MESSAGE_Line2, msg, DGUS_LINE_LEN, true, true); break; case 3: - dgus_display.WriteStringPGM((uint16_t)DGUS_Addr::MESSAGE_Line3, msg, DGUS_LINE_LEN, true, true); + dgus.writeStringPGM((uint16_t)DGUS_Addr::MESSAGE_Line3, msg, DGUS_LINE_LEN, true, true); break; case 4: - dgus_display.WriteStringPGM((uint16_t)DGUS_Addr::MESSAGE_Line4, msg, DGUS_LINE_LEN, true, true); + dgus.writeStringPGM((uint16_t)DGUS_Addr::MESSAGE_Line4, msg, DGUS_LINE_LEN, true, true); break; } } -void DGUSScreenHandler::SetStatusMessage(const char* msg, const millis_t duration) { - dgus_display.WriteString((uint16_t)DGUS_Addr::MESSAGE_Status, msg, DGUS_STATUS_LEN, false, true); +void DGUSScreenHandler::setStatusMessage(const char* msg, const millis_t duration) { + dgus.writeString((uint16_t)DGUS_Addr::MESSAGE_Status, msg, DGUS_STATUS_LEN, false, true); status_expire = (duration > 0 ? ExtUI::safe_millis() + duration : 0); } -void DGUSScreenHandler::SetStatusMessage(FSTR_P const fmsg, const millis_t duration) { - dgus_display.WriteString((uint16_t)DGUS_Addr::MESSAGE_Status, fmsg, DGUS_STATUS_LEN, false, true); +void DGUSScreenHandler::setStatusMessage(FSTR_P const fmsg, const millis_t duration) { + dgus.writeString((uint16_t)DGUS_Addr::MESSAGE_Status, fmsg, DGUS_STATUS_LEN, false, true); status_expire = (duration > 0 ? ExtUI::safe_millis() + duration : 0); } -void DGUSScreenHandler::ShowWaitScreen(const DGUS_Screen return_screen, const bool has_continue/*=false*/) { - if (return_screen != DGUS_Screen::WAIT) { - wait_return_screen = return_screen; +void DGUSScreenHandler::showWaitScreen(const DGUS_ScreenID return_screenID, const bool has_continue/*=false*/) { + if (return_screenID != DGUS_ScreenID::WAIT) { + wait_return_screenID = return_screenID; } wait_continue = has_continue; - TriggerScreenChange(DGUS_Screen::WAIT); + triggerScreenChange(DGUS_ScreenID::WAIT); } -void DGUSScreenHandler::ShowWaitScreen(FSTR_P const msg, const DGUS_Screen return_screen, const bool has_continue/*=false*/) { - SetMessageLinePGM(NUL_STR, 1); - SetMessageLine(msg, 2); - SetMessageLinePGM(NUL_STR, 3); - SetMessageLinePGM(NUL_STR, 4); - ShowWaitScreen(return_screen, has_continue); +void DGUSScreenHandler::showWaitScreen(FSTR_P const msg, const DGUS_ScreenID return_screenID, const bool has_continue/*=false*/) { + setMessageLinePGM(NUL_STR, 1); + setMessageLine(msg, 2); + setMessageLinePGM(NUL_STR, 3); + setMessageLinePGM(NUL_STR, 4); + showWaitScreen(return_screenID, has_continue); } -DGUS_Screen DGUSScreenHandler::GetCurrentScreen() { - return current_screen; +DGUS_ScreenID DGUSScreenHandler::getCurrentScreen() { + return current_screenID; } -void DGUSScreenHandler::TriggerScreenChange(DGUS_Screen screen) { - new_screen = screen; +void DGUSScreenHandler::triggerScreenChange(const DGUS_ScreenID screenID) { + new_screenID = screenID; } -void DGUSScreenHandler::TriggerFullUpdate() { +void DGUSScreenHandler::triggerFullUpdate() { full_update = true; } -void DGUSScreenHandler::TriggerEEPROMSave() { +void DGUSScreenHandler::triggerEEPROMSave() { eeprom_save = ExtUI::safe_millis() + 500; } -bool DGUSScreenHandler::IsPrinterIdle() { +bool DGUSScreenHandler::isPrinterIdle() { return (!ExtUI::commandsInQueue() && !ExtUI::isMoving()); } -const DGUS_Addr* DGUSScreenHandler::FindScreenAddrList(DGUS_Screen screen) { +const DGUS_Addr* DGUSScreenHandler::findScreenAddrList(const DGUS_ScreenID screenID) { DGUS_ScreenAddrList list; const DGUS_ScreenAddrList *map = screen_addr_list_map; do { memcpy_P(&list, map, sizeof(*map)); if (!list.addr_list) break; - if (list.screen == screen) { + if (list.screenID == screenID) { return list.addr_list; } } while (++map); @@ -437,14 +437,14 @@ const DGUS_Addr* DGUSScreenHandler::FindScreenAddrList(DGUS_Screen screen) { return nullptr; } -bool DGUSScreenHandler::CallScreenSetup(DGUS_Screen screen) { +bool DGUSScreenHandler::callScreenSetup(const DGUS_ScreenID screenID) { DGUS_ScreenSetup setup; const DGUS_ScreenSetup *list = screen_setup_list; do { memcpy_P(&setup, list, sizeof(*list)); if (!setup.setup_fn) break; - if (setup.screen == screen) { + if (setup.screenID == screenID) { return setup.setup_fn(); } } while (++list); @@ -452,14 +452,14 @@ bool DGUSScreenHandler::CallScreenSetup(DGUS_Screen screen) { return true; } -void DGUSScreenHandler::MoveToScreen(DGUS_Screen screen, bool abort_wait) { - if (current_screen == DGUS_Screen::KILL) { +void DGUSScreenHandler::moveToScreen(const DGUS_ScreenID screenID, bool abort_wait) { + if (current_screenID == DGUS_ScreenID::KILL) { return; } - if (current_screen == DGUS_Screen::WAIT) { - if (screen != DGUS_Screen::WAIT) { - wait_return_screen = screen; + if (current_screenID == DGUS_ScreenID::WAIT) { + if (screenID != DGUS_ScreenID::WAIT) { + wait_return_screenID = screenID; } if (!abort_wait) return; @@ -469,18 +469,18 @@ void DGUSScreenHandler::MoveToScreen(DGUS_Screen screen, bool abort_wait) { } } - if (!CallScreenSetup(screen)) return; + if (!callScreenSetup(screenID)) return; - if (!SendScreenVPData(screen, true)) return; + if (!sendScreenVPData(screenID, true)) return; - current_screen = screen; - dgus_display.SwitchScreen(current_screen); + current_screenID = screenID; + dgus.switchScreen(current_screenID); } -bool DGUSScreenHandler::SendScreenVPData(DGUS_Screen screen, bool complete_update) { +bool DGUSScreenHandler::sendScreenVPData(const DGUS_ScreenID screenID, bool complete_update) { if (complete_update) full_update = false; - const DGUS_Addr *list = FindScreenAddrList(screen); + const DGUS_Addr *list = findScreenAddrList(screenID); while (true) { if (!list) return true; // Nothing left to send @@ -489,17 +489,17 @@ bool DGUSScreenHandler::SendScreenVPData(DGUS_Screen screen, bool complete_updat if (!addr) return true; // Nothing left to send DGUS_VP vp; - if (!DGUS_PopulateVP((DGUS_Addr)addr, &vp)) continue; // Invalid VP + if (!populateVP((DGUS_Addr)addr, &vp)) continue; // Invalid VP if (!vp.tx_handler) continue; // Nothing to send if (!complete_update && !(vp.flags & VPFLAG_AUTOUPLOAD)) continue; // Unnecessary VP uint8_t expected_tx = 6 + vp.size; // 6 bytes header + payload. const millis_t try_until = ExtUI::safe_millis() + 1000; - while (expected_tx > dgus_display.GetFreeTxBuffer()) { + while (expected_tx > dgus.getFreeTxBuffer()) { if (ELAPSED(ExtUI::safe_millis(), try_until)) return false; // Stop trying after 1 second - dgus_display.FlushTx(); // Flush the TX buffer + dgus.flushTx(); // Flush the TX buffer delay(50); } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h index 2ecf7192fe..27f7f92517 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.h @@ -23,7 +23,7 @@ #include "config/DGUS_Addr.h" #include "config/DGUS_Data.h" -#include "config/DGUS_Screen.h" +#include "config/DGUS_ScreenID.h" #include "config/DGUS_Constants.h" #include "../ui_api.h" @@ -33,59 +33,59 @@ class DGUSScreenHandler { public: DGUSScreenHandler() = default; - static void Init(); - static void Ready(); - static void Loop(); + static void init(); + static void ready(); + static void loop(); static void printerKilled(FSTR_P const error, FSTR_P const component); - static void UserConfirmRequired(const char * const msg); - static void SettingsReset(); - static void StoreSettings(char *buff); - static void LoadSettings(const char *buff); - static void ConfigurationStoreWritten(bool success); - static void ConfigurationStoreRead(bool success); + static void userConfirmRequired(const char * const msg); + static void settingsReset(); + static void storeSettings(char *buff); + static void loadSettings(const char *buff); + static void configurationStoreWritten(bool success); + static void configurationStoreRead(bool success); - static void PlayTone(const uint16_t frequency, const uint16_t duration); - static void MeshUpdate(const int8_t xpos, const int8_t ypos); - static void PrintTimerStarted(); - static void PrintTimerPaused(); - static void PrintTimerStopped(); + static void playTone(const uint16_t frequency, const uint16_t duration); + static void meshUpdate(const int8_t xpos, const int8_t ypos); + static void printTimerStarted(); + static void printTimerPaused(); + static void printTimerStopped(); static void filamentRunout(const ExtUI::extruder_t extruder); #if HAS_MEDIA /// Marlin informed us that a new SD has been inserted. - static void SDCardInserted(); + static void sdCardInserted(); /// Marlin informed us that the SD Card has been removed(). - static void SDCardRemoved(); + static void sdCardRemoved(); /// Marlin informed us about a bad SD Card. - static void SDCardError(); + static void sdCardError(); #endif #if ENABLED(POWER_LOSS_RECOVERY) - static void PowerLossResume(); + static void powerLossResume(); #endif #if HAS_PID_HEATING - static void PidTuning(const ExtUI::result_t rst); + static void pidTuning(const ExtUI::result_t rst); #endif - static void SetMessageLine(const char * const msg, const uint8_t line); - static void SetMessageLinePGM(PGM_P const msg, const uint8_t line); - static void SetMessageLine(FSTR_P const msg, const uint8_t line) { SetMessageLinePGM(FTOP(msg), line); } + static void setMessageLine(const char * const msg, const uint8_t line); + static void setMessageLinePGM(PGM_P const msg, const uint8_t line); + static void setMessageLine(FSTR_P const msg, const uint8_t line) { setMessageLinePGM(FTOP(msg), line); } - static void SetStatusMessage(const char* msg, const millis_t duration=DGUS_STATUS_EXPIRATION_MS); - static void SetStatusMessage(FSTR_P const msg, const millis_t duration=DGUS_STATUS_EXPIRATION_MS); + static void setStatusMessage(const char* msg, const millis_t duration=DGUS_STATUS_EXPIRATION_MS); + static void setStatusMessage(FSTR_P const msg, const millis_t duration=DGUS_STATUS_EXPIRATION_MS); - static void ShowWaitScreen(const DGUS_Screen return_screen, const bool has_continue=false); - static void ShowWaitScreen(FSTR_P const msg, const DGUS_Screen return_screen, const bool has_continue=false); + static void showWaitScreen(const DGUS_ScreenID return_screenID, const bool has_continue=false); + static void showWaitScreen(FSTR_P const msg, const DGUS_ScreenID return_screenID, const bool has_continue=false); - static DGUS_Screen GetCurrentScreen(); - static void TriggerScreenChange(DGUS_Screen screen); - static void TriggerFullUpdate(); + static DGUS_ScreenID getCurrentScreen(); + static void triggerScreenChange(const DGUS_ScreenID screenID); + static void triggerFullUpdate(); - static void TriggerEEPROMSave(); + static void triggerEEPROMSave(); - static bool IsPrinterIdle(); + static bool isPrinterIdle(); static uint8_t debug_count; @@ -114,20 +114,20 @@ public: static bool leveling_active; private: - static const DGUS_Addr* FindScreenAddrList(DGUS_Screen screen); - static bool CallScreenSetup(DGUS_Screen screen); + static const DGUS_Addr* findScreenAddrList(const DGUS_ScreenID screenID); + static bool callScreenSetup(const DGUS_ScreenID screenID); - static void MoveToScreen(DGUS_Screen screen, bool abort_wait=false); - static bool SendScreenVPData(DGUS_Screen screen, bool complete_update); + static void moveToScreen(const DGUS_ScreenID screenID, bool abort_wait=false); + static bool sendScreenVPData(const DGUS_ScreenID screenID, bool complete_update); static bool settings_ready; static bool booted; - static DGUS_Screen current_screen; - static DGUS_Screen new_screen; + static DGUS_ScreenID current_screenID; + static DGUS_ScreenID new_screenID; static bool full_update; - static DGUS_Screen wait_return_screen; + static DGUS_ScreenID wait_return_screenID; static millis_t status_expire; static millis_t eeprom_save; @@ -140,4 +140,4 @@ private: } eeprom_data_t; }; -extern DGUSScreenHandler dgus_screen_handler; +extern DGUSScreenHandler screen; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp index c3b4bad88a..b0aeacbfdf 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp @@ -33,14 +33,14 @@ #if HAS_MEDIA bool DGUSSetupHandler::Print() { - dgus_screen_handler.filelist.refresh(); + screen.filelist.refresh(); - while (!dgus_screen_handler.filelist.isAtRootDir()) { - dgus_screen_handler.filelist.upDir(); + while (!screen.filelist.isAtRootDir()) { + screen.filelist.upDir(); } - dgus_screen_handler.filelist_offset = 0; - dgus_screen_handler.filelist_selected = -1; + screen.filelist_offset = 0; + screen.filelist_selected = -1; return true; } @@ -51,7 +51,7 @@ bool DGUSSetupHandler::PrintStatus() { return true; } - dgus_screen_handler.TriggerScreenChange(DGUS_Screen::PRINT_FINISHED); + screen.triggerScreenChange(DGUS_ScreenID::PRINT_FINISHED); return false; } @@ -60,15 +60,15 @@ bool DGUSSetupHandler::PrintAdjust() { return true; } - dgus_screen_handler.TriggerScreenChange(DGUS_Screen::PRINT_FINISHED); + screen.triggerScreenChange(DGUS_ScreenID::PRINT_FINISHED); return false; } bool DGUSSetupHandler::LevelingMenu() { - ExtUI::setLevelingActive(dgus_screen_handler.leveling_active); + ExtUI::setLevelingActive(screen.leveling_active); - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return false; } @@ -80,7 +80,7 @@ bool DGUSSetupHandler::LevelingMenu() { return true; } - dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_MENU); + screen.showWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_ScreenID::LEVELING_MENU); queue.enqueue_now(F("G28")); @@ -94,12 +94,12 @@ bool DGUSSetupHandler::LevelingManual() { return true; } - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return false; } - dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_MANUAL); + screen.showWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_ScreenID::LEVELING_MANUAL); queue.enqueue_now(F("G28")); @@ -107,10 +107,10 @@ bool DGUSSetupHandler::LevelingManual() { } bool DGUSSetupHandler::LevelingOffset() { - dgus_screen_handler.offset_steps = DGUS_Data::StepSize::MMP1; + screen.offset_steps = DGUS_Data::StepSize::MMP1; - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return false; } @@ -128,7 +128,7 @@ bool DGUSSetupHandler::LevelingOffset() { return true; } - dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_OFFSET); + screen.showWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_ScreenID::LEVELING_OFFSET); queue.enqueue_now(F("G28")); @@ -137,7 +137,7 @@ bool DGUSSetupHandler::LevelingOffset() { bool DGUSSetupHandler::LevelingAutomatic() { if (ExtUI::getLevelingIsValid()) { - dgus_screen_handler.leveling_active = true; + screen.leveling_active = true; ExtUI::setLevelingActive(true); } @@ -146,24 +146,24 @@ bool DGUSSetupHandler::LevelingAutomatic() { } bool DGUSSetupHandler::LevelingProbing() { - dgus_screen_handler.probing_icons[0] = 0; - dgus_screen_handler.probing_icons[1] = 0; + screen.probing_icons[0] = 0; + screen.probing_icons[1] = 0; return true; } bool DGUSSetupHandler::Filament() { - dgus_screen_handler.filament_extruder = DGUS_Data::Extruder::CURRENT; - dgus_screen_handler.filament_length = DGUS_DEFAULT_FILAMENT_LEN; + screen.filament_extruder = DGUS_Data::Extruder::CURRENT; + screen.filament_length = DGUS_DEFAULT_FILAMENT_LEN; return true; } bool DGUSSetupHandler::Move() { - dgus_screen_handler.move_steps = DGUS_Data::StepSize::MM10; + screen.move_steps = DGUS_Data::StepSize::MM10; - if (!dgus_screen_handler.IsPrinterIdle()) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); + if (!screen.isPrinterIdle()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); return false; } @@ -171,10 +171,10 @@ bool DGUSSetupHandler::Move() { } bool DGUSSetupHandler::Gcode() { - ZERO(dgus_screen_handler.gcode); + ZERO(screen.gcode); - if (dgus_display.gui_version < 0x30 || dgus_display.os_version < 0x21) { - dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_FW_OUTDATED)); + if (dgus.gui_version < 0x30 || dgus.os_version < 0x21) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_FW_OUTDATED)); return false; } @@ -182,14 +182,14 @@ bool DGUSSetupHandler::Gcode() { } bool DGUSSetupHandler::PID() { - dgus_screen_handler.pid_heater = DGUS_Data::Heater::H0; - dgus_screen_handler.pid_temp = DGUS_PLA_TEMP_HOTEND; + screen.pid_heater = DGUS_Data::Heater::H0; + screen.pid_temp = DGUS_PLA_TEMP_HOTEND; return true; } bool DGUSSetupHandler::Infos() { - dgus_screen_handler.debug_count = 0; + screen.debug_count = 0; return true; } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp index c7d650c03e..037eafcc94 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp @@ -37,7 +37,7 @@ #endif #if HAS_MEDIA - void DGUSTxHandler::SetFileControlState(int16_t file, bool state) { + void DGUSTxHandler::setFileControlState(int16_t file, bool state) { DGUS_Control control; switch (file) { @@ -60,40 +60,40 @@ } if (state) { - dgus_display.EnableControl(DGUS_Screen::PRINT, + dgus.enableControl(DGUS_ScreenID::PRINT, DGUSDisplay::RETURN_KEY_CODE, control); } else { - dgus_display.DisableControl(DGUS_Screen::PRINT, + dgus.disableControl(DGUS_ScreenID::PRINT, DGUSDisplay::RETURN_KEY_CODE, control); } } - void DGUSTxHandler::FileType(DGUS_VP &vp) { + void DGUSTxHandler::fileType(DGUS_VP &vp) { // Batch send uint16_t data[DGUS_FILE_COUNT]; for (int16_t i = 0; i < DGUS_FILE_COUNT; i++) { - if (!dgus_screen_handler.filelist.seek(dgus_screen_handler.filelist_offset + i)) { + if (!screen.filelist.seek(screen.filelist_offset + i)) { data[i] = Swap16(DGUS_Data::SDType::NONE); - SetFileControlState(i, false); + setFileControlState(i, false); continue; } - data[i] = dgus_screen_handler.filelist.isDir() ? + data[i] = screen.filelist.isDir() ? Swap16(DGUS_Data::SDType::DIRECTORY) : Swap16(DGUS_Data::SDType::FILE); - SetFileControlState(i, true); + setFileControlState(i, true); } - dgus_display.Write((uint16_t)vp.addr, data, sizeof(*data) * DGUS_FILE_COUNT); + dgus.write((uint16_t)vp.addr, data, sizeof(*data) * DGUS_FILE_COUNT); } - void DGUSTxHandler::FileName(DGUS_VP &vp) { + void DGUSTxHandler::fileName(DGUS_VP &vp) { uint8_t offset; switch (vp.addr) { @@ -115,84 +115,84 @@ break; } - if (dgus_screen_handler.filelist.seek(dgus_screen_handler.filelist_offset + offset)) { - dgus_display.WriteString((uint16_t)vp.addr, dgus_screen_handler.filelist.filename(), vp.size); + if (screen.filelist.seek(screen.filelist_offset + offset)) { + dgus.writeString((uint16_t)vp.addr, screen.filelist.filename(), vp.size); } else { - dgus_display.WriteStringPGM((uint16_t)vp.addr, NUL_STR, vp.size); + dgus.writeStringPGM((uint16_t)vp.addr, NUL_STR, vp.size); } } - void DGUSTxHandler::ScrollIcons(DGUS_VP &vp) { + void DGUSTxHandler::scrollIcons(DGUS_VP &vp) { uint16_t icons = 0; - if (!dgus_screen_handler.filelist.isAtRootDir()) { + if (!screen.filelist.isAtRootDir()) { icons |= (uint16_t)DGUS_Data::ScrollIcon::GO_BACK; - dgus_display.EnableControl(DGUS_Screen::PRINT, + dgus.enableControl(DGUS_ScreenID::PRINT, DGUSDisplay::RETURN_KEY_CODE, DGUS_Control::GO_BACK); } else { - dgus_display.DisableControl(DGUS_Screen::PRINT, + dgus.disableControl(DGUS_ScreenID::PRINT, DGUSDisplay::RETURN_KEY_CODE, DGUS_Control::GO_BACK); } - if (dgus_screen_handler.filelist_offset > 0) { + if (screen.filelist_offset > 0) { icons |= (uint16_t)DGUS_Data::ScrollIcon::UP; - dgus_display.EnableControl(DGUS_Screen::PRINT, + dgus.enableControl(DGUS_ScreenID::PRINT, DGUSDisplay::RETURN_KEY_CODE, DGUS_Control::SCROLL_UP); } else { - dgus_display.DisableControl(DGUS_Screen::PRINT, + dgus.disableControl(DGUS_ScreenID::PRINT, DGUSDisplay::RETURN_KEY_CODE, DGUS_Control::SCROLL_UP); } - if (dgus_screen_handler.filelist_offset + DGUS_FILE_COUNT < dgus_screen_handler.filelist.count()) { + if (screen.filelist_offset + DGUS_FILE_COUNT < screen.filelist.count()) { icons |= (uint16_t)DGUS_Data::ScrollIcon::DOWN; - dgus_display.EnableControl(DGUS_Screen::PRINT, + dgus.enableControl(DGUS_ScreenID::PRINT, DGUSDisplay::RETURN_KEY_CODE, DGUS_Control::SCROLL_DOWN); } else { - dgus_display.DisableControl(DGUS_Screen::PRINT, + dgus.disableControl(DGUS_ScreenID::PRINT, DGUSDisplay::RETURN_KEY_CODE, DGUS_Control::SCROLL_DOWN); } - dgus_display.Write((uint16_t)vp.addr, Swap16(icons)); + dgus.write((uint16_t)vp.addr, Swap16(icons)); } - void DGUSTxHandler::SelectedFileName(DGUS_VP &vp) { - if (dgus_screen_handler.filelist_selected < 0 - || !dgus_screen_handler.filelist.seek(dgus_screen_handler.filelist_selected)) { - dgus_display.WriteStringPGM((uint16_t)vp.addr, NUL_STR, vp.size); + void DGUSTxHandler::selectedFileName(DGUS_VP &vp) { + if (screen.filelist_selected < 0 + || !screen.filelist.seek(screen.filelist_selected)) { + dgus.writeStringPGM((uint16_t)vp.addr, NUL_STR, vp.size); return; } - dgus_display.WriteString((uint16_t)vp.addr, dgus_screen_handler.filelist.filename(), vp.size); + dgus.writeString((uint16_t)vp.addr, screen.filelist.filename(), vp.size); } #endif // HAS_MEDIA -void DGUSTxHandler::PositionZ(DGUS_VP &vp) { +void DGUSTxHandler::zPosition(DGUS_VP &vp) { const float position = ExtUI::isAxisPositionKnown(ExtUI::Z) ? planner.get_axis_position_mm(Z_AXIS) : 0; - const int32_t data = dgus_display.ToFixedPoint(int32_t(position * 50.0f) / 50.0f); // Round to 0.02 - dgus_display.Write((uint16_t)vp.addr, dgus_display.SwapBytes(data)); + const int32_t data = dgus.toFixedPoint(int32_t(position * 50.0f) / 50.0f); // Round to 0.02 + dgus.write((uint16_t)vp.addr, dgus.swapBytes(data)); } -void DGUSTxHandler::Elapsed(DGUS_VP &vp) { +void DGUSTxHandler::elapsed(DGUS_VP &vp) { char buffer[21]; duration_t(print_job_timer.duration()).toString(buffer); - dgus_display.WriteString((uint16_t)vp.addr, buffer, vp.size); + dgus.writeString((uint16_t)vp.addr, buffer, vp.size); } -void DGUSTxHandler::Percent(DGUS_VP &vp) { +void DGUSTxHandler::percent(DGUS_VP &vp) { uint16_t progress; switch (vp.addr) { @@ -205,21 +205,21 @@ void DGUSTxHandler::Percent(DGUS_VP &vp) { break; } - dgus_display.Write((uint16_t)DGUS_Addr::STATUS_Percent, Swap16(progress)); + dgus.write((uint16_t)DGUS_Addr::STATUS_Percent, Swap16(progress)); } -void DGUSTxHandler::StatusIcons(DGUS_VP &vp) { +void DGUSTxHandler::statusIcons(DGUS_VP &vp) { uint16_t icons = 0; if (ExtUI::isPrinting()) { icons |= (uint16_t)DGUS_Data::StatusIcon::PAUSE; - dgus_display.EnableControl(DGUS_Screen::PRINT_STATUS, + dgus.enableControl(DGUS_ScreenID::PRINT_STATUS, DGUSDisplay::POPUP_WINDOW, DGUS_Control::PAUSE); } else { - dgus_display.DisableControl(DGUS_Screen::PRINT_STATUS, + dgus.disableControl(DGUS_ScreenID::PRINT_STATUS, DGUSDisplay::POPUP_WINDOW, DGUS_Control::PAUSE); } @@ -227,20 +227,20 @@ void DGUSTxHandler::StatusIcons(DGUS_VP &vp) { if (ExtUI::isPrintingPaused()) { icons |= (uint16_t)DGUS_Data::StatusIcon::RESUME; - dgus_display.EnableControl(DGUS_Screen::PRINT_STATUS, + dgus.enableControl(DGUS_ScreenID::PRINT_STATUS, DGUSDisplay::POPUP_WINDOW, DGUS_Control::RESUME); } else { - dgus_display.DisableControl(DGUS_Screen::PRINT_STATUS, + dgus.disableControl(DGUS_ScreenID::PRINT_STATUS, DGUSDisplay::POPUP_WINDOW, DGUS_Control::RESUME); } - dgus_display.Write((uint16_t)vp.addr, Swap16(icons)); + dgus.write((uint16_t)vp.addr, Swap16(icons)); } -void DGUSTxHandler::Flowrate(DGUS_VP &vp) { +void DGUSTxHandler::flowrate(DGUS_VP &vp) { int16_t flowrate; switch (vp.addr) { @@ -258,10 +258,10 @@ void DGUSTxHandler::Flowrate(DGUS_VP &vp) { #endif } - dgus_display.Write((uint16_t)vp.addr, Swap16(flowrate)); + dgus.write((uint16_t)vp.addr, Swap16(flowrate)); } -void DGUSTxHandler::TempMax(DGUS_VP &vp) { +void DGUSTxHandler::tempMax(DGUS_VP &vp) { uint16_t temp; switch (vp.addr) { @@ -279,15 +279,15 @@ void DGUSTxHandler::TempMax(DGUS_VP &vp) { #endif } - dgus_display.Write((uint16_t)vp.addr, Swap16(temp)); + dgus.write((uint16_t)vp.addr, Swap16(temp)); } -void DGUSTxHandler::StepperStatus(DGUS_VP &vp) { +void DGUSTxHandler::stepperStatus(DGUS_VP &vp) { const bool motor_on = stepper.axis_enabled.bits & (_BV(NUM_AXES) - 1); - dgus_display.Write((uint16_t)vp.addr, Swap16(motor_on ? DGUS_Data::Status::ENABLED : DGUS_Data::Status::DISABLED)); + dgus.write((uint16_t)vp.addr, Swap16(motor_on ? DGUS_Data::Status::ENABLED : DGUS_Data::Status::DISABLED)); } -void DGUSTxHandler::StepIcons(DGUS_VP &vp) { +void DGUSTxHandler::stepIcons(DGUS_VP &vp) { if (!vp.extra) return; uint16_t icons = 0; DGUS_Data::StepSize size = *(DGUS_Data::StepSize*)vp.extra; @@ -307,31 +307,31 @@ void DGUSTxHandler::StepIcons(DGUS_VP &vp) { break; } - dgus_display.Write((uint16_t)vp.addr, Swap16(icons)); + dgus.write((uint16_t)vp.addr, Swap16(icons)); } -void DGUSTxHandler::ABLDisableIcon(DGUS_VP &vp) { +void DGUSTxHandler::ablDisableIcon(DGUS_VP &vp) { uint16_t data; if (ExtUI::getLevelingActive()) { data = (uint16_t)DGUS_Data::Status::ENABLED; - dgus_display.EnableControl(DGUS_Screen::LEVELING_AUTOMATIC, + dgus.enableControl(DGUS_ScreenID::LEVELING_AUTOMATIC, DGUSDisplay::RETURN_KEY_CODE, DGUS_Control::DISABLE); } else { data = (uint16_t)DGUS_Data::Status::DISABLED; - dgus_display.DisableControl(DGUS_Screen::LEVELING_AUTOMATIC, + dgus.disableControl(DGUS_ScreenID::LEVELING_AUTOMATIC, DGUSDisplay::RETURN_KEY_CODE, DGUS_Control::DISABLE); } - dgus_display.Write((uint16_t)vp.addr, Swap16(data)); + dgus.write((uint16_t)vp.addr, Swap16(data)); } -void DGUSTxHandler::ABLGrid(DGUS_VP &vp) { +void DGUSTxHandler::ablGrid(DGUS_VP &vp) { // Batch send int16_t data[DGUS_LEVEL_GRID_SIZE]; xy_uint8_t point; @@ -340,17 +340,17 @@ void DGUSTxHandler::ABLGrid(DGUS_VP &vp) { for (int16_t i = 0; i < DGUS_LEVEL_GRID_SIZE; i++) { point.x = i % (GRID_MAX_POINTS_X); point.y = i / (GRID_MAX_POINTS_X); - fixed = dgus_display.ToFixedPoint(ExtUI::getMeshPoint(point)); + fixed = dgus.toFixedPoint(ExtUI::getMeshPoint(point)); data[i] = Swap16(fixed); } - dgus_display.Write((uint16_t)vp.addr, data, sizeof(*data) * DGUS_LEVEL_GRID_SIZE); + dgus.write((uint16_t)vp.addr, data, sizeof(*data) * DGUS_LEVEL_GRID_SIZE); } -void DGUSTxHandler::FilamentIcons(DGUS_VP &vp) { +void DGUSTxHandler::filamentIcons(DGUS_VP &vp) { uint16_t icons = 0; - switch (dgus_screen_handler.filament_extruder) { + switch (screen.filament_extruder) { default: return; case DGUS_Data::Extruder::CURRENT: #if HAS_MULTI_EXTRUDER @@ -373,29 +373,29 @@ void DGUSTxHandler::FilamentIcons(DGUS_VP &vp) { break; } - dgus_display.Write((uint16_t)vp.addr, Swap16(icons)); + dgus.write((uint16_t)vp.addr, Swap16(icons)); } -void DGUSTxHandler::BLTouch(DGUS_VP &vp) { +void DGUSTxHandler::blTouch(DGUS_VP &vp) { #if ENABLED(BLTOUCH) - dgus_display.EnableControl(DGUS_Screen::SETTINGS_MENU2, + dgus.enableControl(DGUS_ScreenID::SETTINGS_MENU2, DGUSDisplay::RETURN_KEY_CODE, DGUS_Control::EXTRA2); - dgus_display.Write((uint16_t)vp.addr, Swap16(DGUS_Data::Status::ENABLED)); + dgus.write((uint16_t)vp.addr, Swap16(DGUS_Data::Status::ENABLED)); #else - dgus_display.DisableControl(DGUS_Screen::SETTINGS_MENU2, + dgus.disableControl(DGUS_ScreenID::SETTINGS_MENU2, DGUSDisplay::RETURN_KEY_CODE, DGUS_Control::EXTRA2); - dgus_display.Write((uint16_t)vp.addr, Swap16(DGUS_Data::Status::DISABLED)); + dgus.write((uint16_t)vp.addr, Swap16(DGUS_Data::Status::DISABLED)); #endif } -void DGUSTxHandler::PIDIcons(DGUS_VP &vp) { +void DGUSTxHandler::pidIcons(DGUS_VP &vp) { uint16_t icons = 0; - switch (dgus_screen_handler.pid_heater) { + switch (screen.pid_heater) { default: return; case DGUS_Data::Heater::BED: icons |= (uint16_t)DGUS_Data::HeaterIcon::BED; @@ -408,13 +408,13 @@ void DGUSTxHandler::PIDIcons(DGUS_VP &vp) { break; } - dgus_display.Write((uint16_t)vp.addr, Swap16(icons)); + dgus.write((uint16_t)vp.addr, Swap16(icons)); } -void DGUSTxHandler::PIDKp(DGUS_VP &vp) { +void DGUSTxHandler::pidKp(DGUS_VP &vp) { float value; - switch (dgus_screen_handler.pid_heater) { + switch (screen.pid_heater) { default: return; #if ENABLED(PIDTEMPBED) case DGUS_Data::Heater::BED: @@ -433,14 +433,14 @@ void DGUSTxHandler::PIDKp(DGUS_VP &vp) { #endif } - const int32_t data = dgus_display.ToFixedPoint(value); - dgus_display.Write((uint16_t)vp.addr, dgus_display.SwapBytes(data)); + const int32_t data = dgus.toFixedPoint(value); + dgus.write((uint16_t)vp.addr, dgus.swapBytes(data)); } -void DGUSTxHandler::PIDKi(DGUS_VP &vp) { +void DGUSTxHandler::pidKi(DGUS_VP &vp) { float value; - switch (dgus_screen_handler.pid_heater) { + switch (screen.pid_heater) { default: return; #if ENABLED(PIDTEMPBED) case DGUS_Data::Heater::BED: @@ -459,14 +459,14 @@ void DGUSTxHandler::PIDKi(DGUS_VP &vp) { #endif } - const int32_t data = dgus_display.ToFixedPoint(value); - dgus_display.Write((uint16_t)vp.addr, dgus_display.SwapBytes(data)); + const int32_t data = dgus.toFixedPoint(value); + dgus.write((uint16_t)vp.addr, dgus.swapBytes(data)); } -void DGUSTxHandler::PIDKd(DGUS_VP &vp) { +void DGUSTxHandler::pidKd(DGUS_VP &vp) { float value; - switch (dgus_screen_handler.pid_heater) { + switch (screen.pid_heater) { default: return; #if ENABLED(PIDTEMPBED) case DGUS_Data::Heater::BED: @@ -485,99 +485,99 @@ void DGUSTxHandler::PIDKd(DGUS_VP &vp) { #endif } - const int32_t data = dgus_display.ToFixedPoint(value); - dgus_display.Write((uint16_t)vp.addr, dgus_display.SwapBytes(data)); + const int32_t data = dgus.toFixedPoint(value); + dgus.write((uint16_t)vp.addr, dgus.swapBytes(data)); } -void DGUSTxHandler::BuildVolume(DGUS_VP &vp) { +void DGUSTxHandler::buildVolume(DGUS_VP &vp) { char buffer[vp.size]; snprintf_P(buffer, vp.size, PSTR("%dx%dx%d"), X_BED_SIZE, Y_BED_SIZE, (Z_MAX_POS - Z_MIN_POS)); - dgus_display.WriteString((uint16_t)vp.addr, buffer, vp.size); + dgus.writeString((uint16_t)vp.addr, buffer, vp.size); } -void DGUSTxHandler::TotalPrints(DGUS_VP &vp) { +void DGUSTxHandler::totalPrints(DGUS_VP &vp) { #if ENABLED(PRINTCOUNTER) - dgus_display.Write((uint16_t)vp.addr, dgus_display.SwapBytes(print_job_timer.getStats().totalPrints)); + dgus.write((uint16_t)vp.addr, dgus.swapBytes(print_job_timer.getStats().totalPrints)); #else UNUSED(vp); #endif } -void DGUSTxHandler::FinishedPrints(DGUS_VP &vp) { +void DGUSTxHandler::finishedPrints(DGUS_VP &vp) { #if ENABLED(PRINTCOUNTER) - dgus_display.Write((uint16_t)vp.addr, dgus_display.SwapBytes(print_job_timer.getStats().finishedPrints)); + dgus.write((uint16_t)vp.addr, dgus.swapBytes(print_job_timer.getStats().finishedPrints)); #else UNUSED(vp); #endif } -void DGUSTxHandler::PrintTime(DGUS_VP &vp) { +void DGUSTxHandler::printTime(DGUS_VP &vp) { #if ENABLED(PRINTCOUNTER) char buffer[21]; ExtUI::getTotalPrintTime_str(buffer); - dgus_display.WriteString((uint16_t)vp.addr, buffer, vp.size); + dgus.writeString((uint16_t)vp.addr, buffer, vp.size); #else - dgus_display.WriteString((uint16_t)vp.addr, F("-"), vp.size); + dgus.writeString((uint16_t)vp.addr, F("-"), vp.size); #endif } -void DGUSTxHandler::LongestPrint(DGUS_VP &vp) { +void DGUSTxHandler::longestPrint(DGUS_VP &vp) { #if ENABLED(PRINTCOUNTER) char buffer[21]; ExtUI::getLongestPrint_str(buffer); - dgus_display.WriteString((uint16_t)vp.addr, buffer, vp.size); + dgus.writeString((uint16_t)vp.addr, buffer, vp.size); #else - dgus_display.WriteString((uint16_t)vp.addr, F("-"), vp.size); + dgus.writeString((uint16_t)vp.addr, F("-"), vp.size); #endif } -void DGUSTxHandler::FilamentUsed(DGUS_VP &vp) { +void DGUSTxHandler::filamentUsed(DGUS_VP &vp) { #if ENABLED(PRINTCOUNTER) char buffer[21]; ExtUI::getFilamentUsed_str(buffer); - dgus_display.WriteString((uint16_t)vp.addr, buffer, vp.size); + dgus.writeString((uint16_t)vp.addr, buffer, vp.size); #else - dgus_display.WriteString((uint16_t)vp.addr, F("-"), vp.size); + dgus.writeString((uint16_t)vp.addr, F("-"), vp.size); #endif } -void DGUSTxHandler::WaitIcons(DGUS_VP &vp) { +void DGUSTxHandler::waitIcons(DGUS_VP &vp) { uint16_t icons = 0; if (ExtUI::isPrintingPaused()) { icons |= (uint16_t)DGUS_Data::WaitIcon::ABORT; - dgus_display.EnableControl(DGUS_Screen::WAIT, + dgus.enableControl(DGUS_ScreenID::WAIT, DGUSDisplay::POPUP_WINDOW, DGUS_Control::ABORT); } else { - dgus_display.DisableControl(DGUS_Screen::WAIT, + dgus.disableControl(DGUS_ScreenID::WAIT, DGUSDisplay::POPUP_WINDOW, DGUS_Control::ABORT); } - if (dgus_screen_handler.wait_continue) { + if (screen.wait_continue) { icons |= (uint16_t)DGUS_Data::WaitIcon::CONTINUE; - dgus_display.EnableControl(DGUS_Screen::WAIT, + dgus.enableControl(DGUS_ScreenID::WAIT, DGUSDisplay::RETURN_KEY_CODE, DGUS_Control::CONTINUE); } else { - dgus_display.DisableControl(DGUS_Screen::WAIT, + dgus.disableControl(DGUS_ScreenID::WAIT, DGUSDisplay::RETURN_KEY_CODE, DGUS_Control::CONTINUE); } - dgus_display.Write((uint16_t)vp.addr, Swap16(icons)); + dgus.write((uint16_t)vp.addr, Swap16(icons)); } -void DGUSTxHandler::FanSpeed(DGUS_VP &vp) { +void DGUSTxHandler::fanSpeed(DGUS_VP &vp) { uint16_t fan_speed; switch (vp.addr) { @@ -585,31 +585,31 @@ void DGUSTxHandler::FanSpeed(DGUS_VP &vp) { case DGUS_Addr::FAN0_Speed: fan_speed = ExtUI::getTargetFan_percent(ExtUI::FAN0); break; } - dgus_display.Write((uint16_t)vp.addr, Swap16(fan_speed)); + dgus.write((uint16_t)vp.addr, Swap16(fan_speed)); } -void DGUSTxHandler::Volume(DGUS_VP &vp) { - const uint16_t volume = dgus_display.GetVolume(); +void DGUSTxHandler::volume(DGUS_VP &vp) { + const uint16_t volume = dgus.getVolume(); - dgus_display.Write((uint16_t)vp.addr, Swap16(volume)); + dgus.write((uint16_t)vp.addr, Swap16(volume)); } -void DGUSTxHandler::Brightness(DGUS_VP &vp) { - const uint16_t brightness = dgus_display.GetBrightness(); +void DGUSTxHandler::brightness(DGUS_VP &vp) { + const uint16_t brightness = dgus.getBrightness(); - dgus_display.Write((uint16_t)vp.addr, Swap16(brightness)); + dgus.write((uint16_t)vp.addr, Swap16(brightness)); } -void DGUSTxHandler::ExtraToString(DGUS_VP &vp) { +void DGUSTxHandler::extraToString(DGUS_VP &vp) { if (!vp.size || !vp.extra) return; - dgus_display.WriteString((uint16_t)vp.addr, vp.extra, vp.size, true, false, false); + dgus.writeString((uint16_t)vp.addr, vp.extra, vp.size, true, false, false); } -void DGUSTxHandler::ExtraPGMToString(DGUS_VP &vp) { +void DGUSTxHandler::extraPGMToString(DGUS_VP &vp) { if (!vp.size || !vp.extra) return; - dgus_display.WriteStringPGM((uint16_t)vp.addr, vp.extra, vp.size, true, false, false); + dgus.writeStringPGM((uint16_t)vp.addr, vp.extra, vp.size, true, false, false); } #endif // DGUS_LCD_UI_RELOADED diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h index 6e4f1db5dc..c82f4c80da 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h @@ -29,97 +29,97 @@ namespace DGUSTxHandler { #if HAS_MEDIA - void SetFileControlState(int16_t, bool); - void FileType(DGUS_VP &); - void FileName(DGUS_VP &); - void ScrollIcons(DGUS_VP &); - void SelectedFileName(DGUS_VP &); + void setFileControlState(int16_t, bool); + void fileType(DGUS_VP &); + void fileName(DGUS_VP &); + void scrollIcons(DGUS_VP &); + void selectedFileName(DGUS_VP &); #endif - void PositionZ(DGUS_VP &); - void Elapsed(DGUS_VP &); - void Percent(DGUS_VP &); - void StatusIcons(DGUS_VP &); + void zPosition(DGUS_VP &); + void elapsed(DGUS_VP &); + void percent(DGUS_VP &); + void statusIcons(DGUS_VP &); - void Flowrate(DGUS_VP &); + void flowrate(DGUS_VP &); - void TempMax(DGUS_VP &); + void tempMax(DGUS_VP &); - void StepperStatus(DGUS_VP &); + void stepperStatus(DGUS_VP &); - void StepIcons(DGUS_VP &); + void stepIcons(DGUS_VP &); - void ABLDisableIcon(DGUS_VP &); - void ABLGrid(DGUS_VP &); + void ablDisableIcon(DGUS_VP &); + void ablGrid(DGUS_VP &); - void FilamentIcons(DGUS_VP &); + void filamentIcons(DGUS_VP &); - void BLTouch(DGUS_VP &); + void blTouch(DGUS_VP &); - void PIDIcons(DGUS_VP &); - void PIDKp(DGUS_VP &); - void PIDKi(DGUS_VP &); - void PIDKd(DGUS_VP &); + void pidIcons(DGUS_VP &); + void pidKp(DGUS_VP &); + void pidKi(DGUS_VP &); + void pidKd(DGUS_VP &); - void BuildVolume(DGUS_VP &); - void TotalPrints(DGUS_VP &); - void FinishedPrints(DGUS_VP &); - void PrintTime(DGUS_VP &); - void LongestPrint(DGUS_VP &); - void FilamentUsed(DGUS_VP &); + void buildVolume(DGUS_VP &); + void totalPrints(DGUS_VP &); + void finishedPrints(DGUS_VP &); + void printTime(DGUS_VP &); + void longestPrint(DGUS_VP &); + void filamentUsed(DGUS_VP &); - void WaitIcons(DGUS_VP &); + void waitIcons(DGUS_VP &); - void FanSpeed(DGUS_VP &); + void fanSpeed(DGUS_VP &); - void Volume(DGUS_VP &); + void volume(DGUS_VP &); - void Brightness(DGUS_VP &); + void brightness(DGUS_VP &); - void ExtraToString(DGUS_VP &); - void ExtraPGMToString(DGUS_VP &); + void extraToString(DGUS_VP &); + void extraPGMToString(DGUS_VP &); template - void ExtraToInteger(DGUS_VP &vp) { + void extraToInteger(DGUS_VP &vp) { if (!vp.size || !vp.extra) return; switch (vp.size) { default: return; case 1: { const uint8_t data = uint8_t(*(T*)vp.extra); - dgus_display.Write(uint16_t(vp.addr), data); + dgus.write(uint16_t(vp.addr), data); break; } case 2: { const uint16_t data = uint16_t(*(T*)vp.extra); - dgus_display.Write(uint16_t(vp.addr), Swap16(data)); + dgus.write(uint16_t(vp.addr), Swap16(data)); break; } case 4: { const uint32_t data = uint32_t(*(T*)vp.extra); - dgus_display.Write(uint16_t(vp.addr), dgus_display.SwapBytes(data)); + dgus.write(uint16_t(vp.addr), dgus.swapBytes(data)); break; } } } template - void ExtraToFixedPoint(DGUS_VP &vp) { + void extraToFixedPoint(DGUS_VP &vp) { if (!vp.size || !vp.extra) return; switch (vp.size) { default: return; case 1: { - const uint8_t data = dgus_display.ToFixedPoint(*(T*)vp.extra); - dgus_display.Write(uint16_t(vp.addr), data); + const uint8_t data = dgus.toFixedPoint(*(T*)vp.extra); + dgus.write(uint16_t(vp.addr), data); break; } case 2: { - const uint16_t data = dgus_display.ToFixedPoint(*(T*)vp.extra); - dgus_display.Write(uint16_t(vp.addr), Swap16(data)); + const uint16_t data = dgus.toFixedPoint(*(T*)vp.extra); + dgus.write(uint16_t(vp.addr), Swap16(data)); break; } case 4: { - const uint32_t data = dgus_display.ToFixedPoint(*(T*)vp.extra); - dgus_display.Write(uint16_t(vp.addr), dgus_display.SwapBytes(data)); + const uint32_t data = dgus.toFixedPoint(*(T*)vp.extra); + dgus.write(uint16_t(vp.addr), dgus.swapBytes(data)); break; } } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Screen.h b/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_ScreenID.h similarity index 97% rename from Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Screen.h rename to Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_ScreenID.h index 0a738223ce..546ebb4666 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Screen.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_ScreenID.h @@ -21,7 +21,7 @@ */ #pragma once -enum class DGUS_Screen : uint8_t { +enum class DGUS_ScreenID : uint8_t { BOOT = 0, HOME = 1, PRINT = 2, diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp index 4c99ff6a00..1a99eceeff 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp @@ -204,37 +204,35 @@ constexpr DGUS_Addr LIST_WAIT[] PROGMEM = { (DGUS_Addr)0 }; -#define MAP_HELPER(SCREEN, LIST) \ - { .screen = SCREEN, \ - .addr_list = LIST } +#define MAP_HELPER(SCREEN, LIST) { .screenID = SCREEN, .addr_list = LIST } const struct DGUS_ScreenAddrList screen_addr_list_map[] PROGMEM = { - MAP_HELPER(DGUS_Screen::HOME, LIST_HOME), + MAP_HELPER(DGUS_ScreenID::HOME, LIST_HOME), #if HAS_MEDIA - MAP_HELPER(DGUS_Screen::PRINT, LIST_PRINT), + MAP_HELPER(DGUS_ScreenID::PRINT, LIST_PRINT), #endif - MAP_HELPER(DGUS_Screen::PRINT_STATUS, LIST_PRINT_STATUS), - MAP_HELPER(DGUS_Screen::PRINT_ADJUST, LIST_PRINT_ADJUST), - MAP_HELPER(DGUS_Screen::PRINT_FINISHED, LIST_PRINT_FINISHED), - MAP_HELPER(DGUS_Screen::TEMP_MENU, LIST_TEMP_MENU), - MAP_HELPER(DGUS_Screen::TEMP_MANUAL, LIST_TEMP_MANUAL), - MAP_HELPER(DGUS_Screen::FAN, LIST_FAN), - MAP_HELPER(DGUS_Screen::SETTINGS_MENU, LIST_SETTINGS_MENU), - MAP_HELPER(DGUS_Screen::LEVELING_OFFSET, LIST_LEVELING_OFFSET), - MAP_HELPER(DGUS_Screen::LEVELING_MANUAL, LIST_LEVELING_MANUAL), - MAP_HELPER(DGUS_Screen::LEVELING_AUTOMATIC, LIST_LEVELING_AUTOMATIC), - MAP_HELPER(DGUS_Screen::LEVELING_PROBING, LIST_LEVELING_PROBING), - MAP_HELPER(DGUS_Screen::FILAMENT, LIST_FILAMENT), - MAP_HELPER(DGUS_Screen::MOVE, LIST_MOVE), - MAP_HELPER(DGUS_Screen::GCODE, LIST_GCODE), - MAP_HELPER(DGUS_Screen::SETTINGS_MENU2, LIST_SETTINGS_MENU2), - MAP_HELPER(DGUS_Screen::PID, LIST_PID), - MAP_HELPER(DGUS_Screen::VOLUME, LIST_VOLUME), - MAP_HELPER(DGUS_Screen::BRIGHTNESS, LIST_BRIGHTNESS), - MAP_HELPER(DGUS_Screen::INFOS, LIST_INFOS), - MAP_HELPER(DGUS_Screen::WAIT, LIST_WAIT), + MAP_HELPER(DGUS_ScreenID::PRINT_STATUS, LIST_PRINT_STATUS), + MAP_HELPER(DGUS_ScreenID::PRINT_ADJUST, LIST_PRINT_ADJUST), + MAP_HELPER(DGUS_ScreenID::PRINT_FINISHED, LIST_PRINT_FINISHED), + MAP_HELPER(DGUS_ScreenID::TEMP_MENU, LIST_TEMP_MENU), + MAP_HELPER(DGUS_ScreenID::TEMP_MANUAL, LIST_TEMP_MANUAL), + MAP_HELPER(DGUS_ScreenID::FAN, LIST_FAN), + MAP_HELPER(DGUS_ScreenID::SETTINGS_MENU, LIST_SETTINGS_MENU), + MAP_HELPER(DGUS_ScreenID::LEVELING_OFFSET, LIST_LEVELING_OFFSET), + MAP_HELPER(DGUS_ScreenID::LEVELING_MANUAL, LIST_LEVELING_MANUAL), + MAP_HELPER(DGUS_ScreenID::LEVELING_AUTOMATIC, LIST_LEVELING_AUTOMATIC), + MAP_HELPER(DGUS_ScreenID::LEVELING_PROBING, LIST_LEVELING_PROBING), + MAP_HELPER(DGUS_ScreenID::FILAMENT, LIST_FILAMENT), + MAP_HELPER(DGUS_ScreenID::MOVE, LIST_MOVE), + MAP_HELPER(DGUS_ScreenID::GCODE, LIST_GCODE), + MAP_HELPER(DGUS_ScreenID::SETTINGS_MENU2, LIST_SETTINGS_MENU2), + MAP_HELPER(DGUS_ScreenID::PID, LIST_PID), + MAP_HELPER(DGUS_ScreenID::VOLUME, LIST_VOLUME), + MAP_HELPER(DGUS_ScreenID::BRIGHTNESS, LIST_BRIGHTNESS), + MAP_HELPER(DGUS_ScreenID::INFOS, LIST_INFOS), + MAP_HELPER(DGUS_ScreenID::WAIT, LIST_WAIT), - MAP_HELPER((DGUS_Screen)0, nullptr) + MAP_HELPER((DGUS_ScreenID)0, nullptr) }; #endif // DGUS_LCD_UI_RELOADED diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.h b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.h index 1e481ef3cc..dea39ed145 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.h @@ -21,12 +21,12 @@ */ #pragma once -#include "../config/DGUS_Screen.h" +#include "../config/DGUS_ScreenID.h" #include "../config/DGUS_Addr.h" struct DGUS_ScreenAddrList { - DGUS_Screen screen; - const DGUS_Addr *addr_list; + DGUS_ScreenID screenID; + const DGUS_Addr *addr_list; }; extern const struct DGUS_ScreenAddrList screen_addr_list_map[]; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.cpp b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.cpp index e3ba393af2..e01f6ab3a6 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.cpp @@ -30,28 +30,26 @@ #include "../../ui_api.h" -#define SETUP_HELPER(SCREEN, SETUP) \ - { .screen = SCREEN, \ - .setup_fn = SETUP } +#define SETUP_HELPER(SCREEN, SETUP) { .screenID = SCREEN, .setup_fn = SETUP } const struct DGUS_ScreenSetup screen_setup_list[] PROGMEM = { #if HAS_MEDIA - SETUP_HELPER(DGUS_Screen::PRINT, &DGUSSetupHandler::Print), + SETUP_HELPER(DGUS_ScreenID::PRINT, &DGUSSetupHandler::Print), #endif - SETUP_HELPER(DGUS_Screen::PRINT_STATUS, &DGUSSetupHandler::PrintStatus), - SETUP_HELPER(DGUS_Screen::PRINT_ADJUST, &DGUSSetupHandler::PrintAdjust), - SETUP_HELPER(DGUS_Screen::LEVELING_MENU, &DGUSSetupHandler::LevelingMenu), - SETUP_HELPER(DGUS_Screen::LEVELING_OFFSET, &DGUSSetupHandler::LevelingOffset), - SETUP_HELPER(DGUS_Screen::LEVELING_MANUAL, &DGUSSetupHandler::LevelingManual), - SETUP_HELPER(DGUS_Screen::LEVELING_AUTOMATIC, &DGUSSetupHandler::LevelingAutomatic), - SETUP_HELPER(DGUS_Screen::LEVELING_PROBING, &DGUSSetupHandler::LevelingProbing), - SETUP_HELPER(DGUS_Screen::FILAMENT, &DGUSSetupHandler::Filament), - SETUP_HELPER(DGUS_Screen::MOVE, &DGUSSetupHandler::Move), - SETUP_HELPER(DGUS_Screen::GCODE, &DGUSSetupHandler::Gcode), - SETUP_HELPER(DGUS_Screen::PID, &DGUSSetupHandler::PID), - SETUP_HELPER(DGUS_Screen::INFOS, &DGUSSetupHandler::Infos), + SETUP_HELPER(DGUS_ScreenID::PRINT_STATUS, &DGUSSetupHandler::PrintStatus), + SETUP_HELPER(DGUS_ScreenID::PRINT_ADJUST, &DGUSSetupHandler::PrintAdjust), + SETUP_HELPER(DGUS_ScreenID::LEVELING_MENU, &DGUSSetupHandler::LevelingMenu), + SETUP_HELPER(DGUS_ScreenID::LEVELING_OFFSET, &DGUSSetupHandler::LevelingOffset), + SETUP_HELPER(DGUS_ScreenID::LEVELING_MANUAL, &DGUSSetupHandler::LevelingManual), + SETUP_HELPER(DGUS_ScreenID::LEVELING_AUTOMATIC, &DGUSSetupHandler::LevelingAutomatic), + SETUP_HELPER(DGUS_ScreenID::LEVELING_PROBING, &DGUSSetupHandler::LevelingProbing), + SETUP_HELPER(DGUS_ScreenID::FILAMENT, &DGUSSetupHandler::Filament), + SETUP_HELPER(DGUS_ScreenID::MOVE, &DGUSSetupHandler::Move), + SETUP_HELPER(DGUS_ScreenID::GCODE, &DGUSSetupHandler::Gcode), + SETUP_HELPER(DGUS_ScreenID::PID, &DGUSSetupHandler::PID), + SETUP_HELPER(DGUS_ScreenID::INFOS, &DGUSSetupHandler::Infos), - SETUP_HELPER((DGUS_Screen)0, nullptr) + SETUP_HELPER((DGUS_ScreenID)0, nullptr) }; #endif // DGUS_LCD_UI_RELOADED diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.h b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.h index 93df5ad90a..e740997ad4 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.h @@ -21,10 +21,10 @@ */ #pragma once -#include "../config/DGUS_Screen.h" +#include "../config/DGUS_ScreenID.h" struct DGUS_ScreenSetup { - DGUS_Screen screen; + DGUS_ScreenID screenID; bool (*setup_fn)(void); }; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp index 69f792c45d..172cf98fe6 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp @@ -75,248 +75,248 @@ const struct DGUS_VP vp_list[] PROGMEM = { // READ-ONLY VARIABLES - VP_HELPER_RX(DGUS_Addr::SCREENCHANGE, &DGUSRxHandler::ScreenChange), - VP_HELPER_RX(DGUS_Addr::SCREENCHANGE_SD, &DGUSRxHandler::ScreenChange), - VP_HELPER_RX(DGUS_Addr::SCREENCHANGE_Idle, &DGUSRxHandler::ScreenChange), - VP_HELPER_RX(DGUS_Addr::SCREENCHANGE_Printing, &DGUSRxHandler::ScreenChange), + VP_HELPER_RX(DGUS_Addr::SCREENCHANGE, &DGUSRxHandler::screenChange), + VP_HELPER_RX(DGUS_Addr::SCREENCHANGE_SD, &DGUSRxHandler::screenChange), + VP_HELPER_RX(DGUS_Addr::SCREENCHANGE_Idle, &DGUSRxHandler::screenChange), + VP_HELPER_RX(DGUS_Addr::SCREENCHANGE_Printing, &DGUSRxHandler::screenChange), #if HAS_MEDIA VP_HELPER_RX(DGUS_Addr::SD_SelectFile, &DGUSRxHandler::selectFile), - VP_HELPER_RX(DGUS_Addr::SD_Scroll, &DGUSRxHandler::Scroll), - VP_HELPER_RX_NODATA(DGUS_Addr::SD_Print, &DGUSRxHandler::PrintFile), + VP_HELPER_RX(DGUS_Addr::SD_Scroll, &DGUSRxHandler::scroll), + VP_HELPER_RX_NODATA(DGUS_Addr::SD_Print, &DGUSRxHandler::printFile), #endif - VP_HELPER_RX(DGUS_Addr::STATUS_Abort, &DGUSRxHandler::PrintAbort), - VP_HELPER_RX(DGUS_Addr::STATUS_Pause, &DGUSRxHandler::PrintPause), - VP_HELPER_RX(DGUS_Addr::STATUS_Resume, &DGUSRxHandler::PrintResume), + VP_HELPER_RX(DGUS_Addr::STATUS_Abort, &DGUSRxHandler::printAbort), + VP_HELPER_RX(DGUS_Addr::STATUS_Pause, &DGUSRxHandler::printPause), + VP_HELPER_RX(DGUS_Addr::STATUS_Resume, &DGUSRxHandler::printResume), - VP_HELPER_RX(DGUS_Addr::ADJUST_SetFeedrate, &DGUSRxHandler::Feedrate), - VP_HELPER_RX(DGUS_Addr::ADJUST_SetFlowrate_CUR, &DGUSRxHandler::Flowrate), + VP_HELPER_RX(DGUS_Addr::ADJUST_SetFeedrate, &DGUSRxHandler::feedrate), + VP_HELPER_RX(DGUS_Addr::ADJUST_SetFlowrate_CUR, &DGUSRxHandler::flowrate), #if HAS_MULTI_EXTRUDER - VP_HELPER_RX(DGUS_Addr::ADJUST_SetFlowrate_E0, &DGUSRxHandler::Flowrate), - VP_HELPER_RX(DGUS_Addr::ADJUST_SetFlowrate_E1, &DGUSRxHandler::Flowrate), + VP_HELPER_RX(DGUS_Addr::ADJUST_SetFlowrate_E0, &DGUSRxHandler::flowrate), + VP_HELPER_RX(DGUS_Addr::ADJUST_SetFlowrate_E1, &DGUSRxHandler::flowrate), #endif - VP_HELPER_RX(DGUS_Addr::ADJUST_SetBabystep, &DGUSRxHandler::BabystepSet), - VP_HELPER_RX(DGUS_Addr::ADJUST_Babystep, &DGUSRxHandler::Babystep), + VP_HELPER_RX(DGUS_Addr::ADJUST_SetBabystep, &DGUSRxHandler::babystepSet), + VP_HELPER_RX(DGUS_Addr::ADJUST_Babystep, &DGUSRxHandler::babystep), - VP_HELPER_RX(DGUS_Addr::TEMP_Preset, &DGUSRxHandler::TempPreset), - VP_HELPER_RX(DGUS_Addr::TEMP_SetTarget_Bed, &DGUSRxHandler::TempTarget), - VP_HELPER_RX(DGUS_Addr::TEMP_SetTarget_H0, &DGUSRxHandler::TempTarget), + VP_HELPER_RX(DGUS_Addr::TEMP_Preset, &DGUSRxHandler::tempPreset), + VP_HELPER_RX(DGUS_Addr::TEMP_SetTarget_Bed, &DGUSRxHandler::tempTarget), + VP_HELPER_RX(DGUS_Addr::TEMP_SetTarget_H0, &DGUSRxHandler::tempTarget), #if HAS_MULTI_HOTEND - VP_HELPER_RX(DGUS_Addr::TEMP_SetTarget_H1, &DGUSRxHandler::TempTarget), + VP_HELPER_RX(DGUS_Addr::TEMP_SetTarget_H1, &DGUSRxHandler::tempTarget), #endif - VP_HELPER_RX(DGUS_Addr::TEMP_Cool, &DGUSRxHandler::TempCool), + VP_HELPER_RX(DGUS_Addr::TEMP_Cool, &DGUSRxHandler::tempCool), - VP_HELPER_RX(DGUS_Addr::STEPPER_Control, &DGUSRxHandler::Steppers), + VP_HELPER_RX(DGUS_Addr::STEPPER_Control, &DGUSRxHandler::steppers), - VP_HELPER_RX(DGUS_Addr::LEVEL_OFFSET_Set, &DGUSRxHandler::ZOffset), - VP_HELPER_RX(DGUS_Addr::LEVEL_OFFSET_Step, &DGUSRxHandler::ZOffsetStep), - VP_HELPER_RX(DGUS_Addr::LEVEL_OFFSET_SetStep, &DGUSRxHandler::ZOffsetSetStep), + VP_HELPER_RX(DGUS_Addr::LEVEL_OFFSET_Set, &DGUSRxHandler::zOffset), + VP_HELPER_RX(DGUS_Addr::LEVEL_OFFSET_Step, &DGUSRxHandler::zOffsetStep), + VP_HELPER_RX(DGUS_Addr::LEVEL_OFFSET_SetStep, &DGUSRxHandler::zOffsetSetStep), - VP_HELPER_RX(DGUS_Addr::LEVEL_MANUAL_Point, &DGUSRxHandler::MoveToPoint), + VP_HELPER_RX(DGUS_Addr::LEVEL_MANUAL_Point, &DGUSRxHandler::moveToPoint), - VP_HELPER_RX_NODATA(DGUS_Addr::LEVEL_AUTO_Probe, &DGUSRxHandler::Probe), - VP_HELPER_RX_NODATA(DGUS_Addr::LEVEL_AUTO_Disable, &DGUSRxHandler::DisableABL), + VP_HELPER_RX_NODATA(DGUS_Addr::LEVEL_AUTO_Probe, &DGUSRxHandler::probe), + VP_HELPER_RX_NODATA(DGUS_Addr::LEVEL_AUTO_Disable, &DGUSRxHandler::disableABL), - VP_HELPER_RX(DGUS_Addr::FILAMENT_Select, &DGUSRxHandler::FilamentSelect), - VP_HELPER_RX(DGUS_Addr::FILAMENT_SetLength, &DGUSRxHandler::FilamentLength), - VP_HELPER_RX(DGUS_Addr::FILAMENT_Move, &DGUSRxHandler::FilamentMove), + VP_HELPER_RX(DGUS_Addr::FILAMENT_Select, &DGUSRxHandler::filamentSelect), + VP_HELPER_RX(DGUS_Addr::FILAMENT_SetLength, &DGUSRxHandler::filamentLength), + VP_HELPER_RX(DGUS_Addr::FILAMENT_Move, &DGUSRxHandler::filamentMove), - VP_HELPER_RX(DGUS_Addr::MOVE_Home, &DGUSRxHandler::Home), - VP_HELPER_RX(DGUS_Addr::MOVE_SetX, &DGUSRxHandler::Move), - VP_HELPER_RX(DGUS_Addr::MOVE_SetY, &DGUSRxHandler::Move), - VP_HELPER_RX(DGUS_Addr::MOVE_SetZ, &DGUSRxHandler::Move), - VP_HELPER_RX(DGUS_Addr::MOVE_Step, &DGUSRxHandler::MoveStep), - VP_HELPER_RX(DGUS_Addr::MOVE_SetStep, &DGUSRxHandler::MoveSetStep), + VP_HELPER_RX(DGUS_Addr::MOVE_Home, &DGUSRxHandler::home), + VP_HELPER_RX(DGUS_Addr::MOVE_SetX, &DGUSRxHandler::move), + VP_HELPER_RX(DGUS_Addr::MOVE_SetY, &DGUSRxHandler::move), + VP_HELPER_RX(DGUS_Addr::MOVE_SetZ, &DGUSRxHandler::move), + VP_HELPER_RX(DGUS_Addr::MOVE_Step, &DGUSRxHandler::moveStep), + VP_HELPER_RX(DGUS_Addr::MOVE_SetStep, &DGUSRxHandler::moveSetStep), - VP_HELPER_RX_NODATA(DGUS_Addr::GCODE_Clear, &DGUSRxHandler::GcodeClear), - VP_HELPER_RX_NODATA(DGUS_Addr::GCODE_Execute, &DGUSRxHandler::GcodeExecute), + VP_HELPER_RX_NODATA(DGUS_Addr::GCODE_Clear, &DGUSRxHandler::gcodeClear), + VP_HELPER_RX_NODATA(DGUS_Addr::GCODE_Execute, &DGUSRxHandler::gcodeExecute), - VP_HELPER_RX(DGUS_Addr::EEPROM_Reset, &DGUSRxHandler::ResetEEPROM), + VP_HELPER_RX(DGUS_Addr::EEPROM_Reset, &DGUSRxHandler::resetEEPROM), - VP_HELPER_RX(DGUS_Addr::SETTINGS2_Extra, &DGUSRxHandler::SettingsExtra), + VP_HELPER_RX(DGUS_Addr::SETTINGS2_Extra, &DGUSRxHandler::settingsExtra), - VP_HELPER_RX(DGUS_Addr::PID_Select, &DGUSRxHandler::PIDSelect), - VP_HELPER_RX(DGUS_Addr::PID_SetTemp, &DGUSRxHandler::PIDSetTemp), - VP_HELPER_RX_NODATA(DGUS_Addr::PID_Run, &DGUSRxHandler::PIDRun), + VP_HELPER_RX(DGUS_Addr::PID_Select, &DGUSRxHandler::pidSelect), + VP_HELPER_RX(DGUS_Addr::PID_SetTemp, &DGUSRxHandler::pidSetTemp), + VP_HELPER_RX_NODATA(DGUS_Addr::PID_Run, &DGUSRxHandler::pidRun), #if ENABLED(POWER_LOSS_RECOVERY) - VP_HELPER_RX(DGUS_Addr::POWERLOSS_Abort, &DGUSRxHandler::PowerLossAbort), - VP_HELPER_RX(DGUS_Addr::POWERLOSS_Resume, &DGUSRxHandler::PowerLossResume), + VP_HELPER_RX(DGUS_Addr::POWERLOSS_Abort, &DGUSRxHandler::powerLossAbort), + VP_HELPER_RX(DGUS_Addr::POWERLOSS_Resume, &DGUSRxHandler::powerLossResume), #endif - VP_HELPER_RX(DGUS_Addr::WAIT_Abort, &DGUSRxHandler::WaitAbort), - VP_HELPER_RX_NODATA(DGUS_Addr::WAIT_Continue, &DGUSRxHandler::WaitContinue), + VP_HELPER_RX(DGUS_Addr::WAIT_Abort, &DGUSRxHandler::waitAbort), + VP_HELPER_RX_NODATA(DGUS_Addr::WAIT_Continue, &DGUSRxHandler::waitContinue), // WRITE-ONLY VARIABLES #if HAS_MEDIA - VP_HELPER_TX(DGUS_Addr::SD_Type, &DGUSTxHandler::FileType), + VP_HELPER_TX(DGUS_Addr::SD_Type, &DGUSTxHandler::fileType), VP_HELPER_TX_SIZE(DGUS_Addr::SD_FileName0, DGUS_FILENAME_LEN, - &DGUSTxHandler::FileName), + &DGUSTxHandler::fileName), VP_HELPER_TX_SIZE(DGUS_Addr::SD_FileName1, DGUS_FILENAME_LEN, - &DGUSTxHandler::FileName), + &DGUSTxHandler::fileName), VP_HELPER_TX_SIZE(DGUS_Addr::SD_FileName2, DGUS_FILENAME_LEN, - &DGUSTxHandler::FileName), + &DGUSTxHandler::fileName), VP_HELPER_TX_SIZE(DGUS_Addr::SD_FileName3, DGUS_FILENAME_LEN, - &DGUSTxHandler::FileName), + &DGUSTxHandler::fileName), VP_HELPER_TX_SIZE(DGUS_Addr::SD_FileName4, DGUS_FILENAME_LEN, - &DGUSTxHandler::FileName), - VP_HELPER_TX(DGUS_Addr::SD_ScrollIcons, &DGUSTxHandler::ScrollIcons), + &DGUSTxHandler::fileName), + VP_HELPER_TX(DGUS_Addr::SD_ScrollIcons, &DGUSTxHandler::scrollIcons), VP_HELPER_TX_SIZE(DGUS_Addr::SD_SelectedFileName, DGUS_FILENAME_LEN, - &DGUSTxHandler::SelectedFileName), + &DGUSTxHandler::selectedFileName), #endif VP_HELPER_TX_AUTO(DGUS_Addr::STATUS_PositionZ, nullptr, - &DGUSTxHandler::PositionZ), + &DGUSTxHandler::zPosition), VP_HELPER(DGUS_Addr::STATUS_Elapsed, DGUS_ELAPSED_LEN, VPFLAG_AUTOUPLOAD, nullptr, nullptr, - &DGUSTxHandler::Elapsed), + &DGUSTxHandler::elapsed), VP_HELPER_TX_AUTO(DGUS_Addr::STATUS_Percent, nullptr, - &DGUSTxHandler::Percent), - VP_HELPER_TX(DGUS_Addr::STATUS_Icons, &DGUSTxHandler::StatusIcons), + &DGUSTxHandler::percent), + VP_HELPER_TX(DGUS_Addr::STATUS_Icons, &DGUSTxHandler::statusIcons), VP_HELPER_TX_AUTO(DGUS_Addr::ADJUST_Feedrate, &feedrate_percentage, - &DGUSTxHandler::ExtraToInteger), + &DGUSTxHandler::extraToInteger), VP_HELPER_TX_AUTO(DGUS_Addr::ADJUST_Flowrate_CUR, nullptr, - &DGUSTxHandler::Flowrate), + &DGUSTxHandler::flowrate), #if HAS_MULTI_EXTRUDER VP_HELPER_TX_AUTO(DGUS_Addr::ADJUST_Flowrate_E0, nullptr, - &DGUSTxHandler::Flowrate), + &DGUSTxHandler::flowrate), VP_HELPER_TX_AUTO(DGUS_Addr::ADJUST_Flowrate_E1, nullptr, - &DGUSTxHandler::Flowrate), + &DGUSTxHandler::flowrate), #endif VP_HELPER_TX_AUTO(DGUS_Addr::TEMP_Current_Bed, &thermalManager.temp_bed.celsius, - (&DGUSTxHandler::ExtraToFixedPoint)), + (&DGUSTxHandler::extraToFixedPoint)), VP_HELPER_TX_AUTO(DGUS_Addr::TEMP_Target_Bed, &thermalManager.temp_bed.target, - &DGUSTxHandler::ExtraToInteger), - VP_HELPER_TX(DGUS_Addr::TEMP_Max_Bed, &DGUSTxHandler::TempMax), + &DGUSTxHandler::extraToInteger), + VP_HELPER_TX(DGUS_Addr::TEMP_Max_Bed, &DGUSTxHandler::tempMax), VP_HELPER_TX_AUTO(DGUS_Addr::TEMP_Current_H0, &thermalManager.temp_hotend[ExtUI::heater_t::H0].celsius, - (&DGUSTxHandler::ExtraToFixedPoint)), + (&DGUSTxHandler::extraToFixedPoint)), VP_HELPER_TX_AUTO(DGUS_Addr::TEMP_Target_H0, &thermalManager.temp_hotend[ExtUI::heater_t::H0].target, - &DGUSTxHandler::ExtraToInteger), - VP_HELPER_TX(DGUS_Addr::TEMP_Max_H0, &DGUSTxHandler::TempMax), + &DGUSTxHandler::extraToInteger), + VP_HELPER_TX(DGUS_Addr::TEMP_Max_H0, &DGUSTxHandler::tempMax), #if HAS_MULTI_HOTEND VP_HELPER_TX_AUTO(DGUS_Addr::TEMP_Current_H1, &thermalManager.temp_hotend[ExtUI::heater_t::H1].celsius, - (&DGUSTxHandler::ExtraToFixedPoint)), + (&DGUSTxHandler::extraToFixedPoint)), VP_HELPER_TX_AUTO(DGUS_Addr::TEMP_Target_H1, &thermalManager.temp_hotend[ExtUI::heater_t::H1].target, - &DGUSTxHandler::ExtraToInteger), - VP_HELPER_TX(DGUS_Addr::TEMP_Max_H1, &DGUSTxHandler::TempMax), + &DGUSTxHandler::extraToInteger), + VP_HELPER_TX(DGUS_Addr::TEMP_Max_H1, &DGUSTxHandler::tempMax), #endif VP_HELPER_TX_AUTO(DGUS_Addr::STEPPER_Status, nullptr, - &DGUSTxHandler::StepperStatus), + &DGUSTxHandler::stepperStatus), VP_HELPER_TX_AUTO(DGUS_Addr::LEVEL_OFFSET_Current, &probe.offset.z, - (&DGUSTxHandler::ExtraToFixedPoint)), + (&DGUSTxHandler::extraToFixedPoint)), VP_HELPER_TX_EXTRA(DGUS_Addr::LEVEL_OFFSET_StepIcons, &DGUSScreenHandler::offset_steps, - &DGUSTxHandler::StepIcons), + &DGUSTxHandler::stepIcons), VP_HELPER_TX_AUTO(DGUS_Addr::LEVEL_AUTO_DisableIcon, nullptr, - &DGUSTxHandler::ABLDisableIcon), - VP_HELPER_TX(DGUS_Addr::LEVEL_AUTO_Grid, &DGUSTxHandler::ABLGrid), + &DGUSTxHandler::ablDisableIcon), + VP_HELPER_TX(DGUS_Addr::LEVEL_AUTO_Grid, &DGUSTxHandler::ablGrid), VP_HELPER_TX_EXTRA(DGUS_Addr::LEVEL_PROBING_Icons1, &DGUSScreenHandler::probing_icons[0], - &DGUSTxHandler::ExtraToInteger), + &DGUSTxHandler::extraToInteger), VP_HELPER_TX_EXTRA(DGUS_Addr::LEVEL_PROBING_Icons2, &DGUSScreenHandler::probing_icons[1], - &DGUSTxHandler::ExtraToInteger), + &DGUSTxHandler::extraToInteger), - VP_HELPER_TX(DGUS_Addr::FILAMENT_ExtruderIcons, &DGUSTxHandler::FilamentIcons), + VP_HELPER_TX(DGUS_Addr::FILAMENT_ExtruderIcons, &DGUSTxHandler::filamentIcons), VP_HELPER_TX_EXTRA(DGUS_Addr::FILAMENT_Length, &DGUSScreenHandler::filament_length, - &DGUSTxHandler::ExtraToInteger), + &DGUSTxHandler::extraToInteger), VP_HELPER_TX_AUTO(DGUS_Addr::MOVE_CurrentX, ¤t_position.x, - (&DGUSTxHandler::ExtraToFixedPoint)), + (&DGUSTxHandler::extraToFixedPoint)), VP_HELPER_TX_AUTO(DGUS_Addr::MOVE_CurrentY, ¤t_position.y, - (&DGUSTxHandler::ExtraToFixedPoint)), + (&DGUSTxHandler::extraToFixedPoint)), VP_HELPER_TX_AUTO(DGUS_Addr::MOVE_CurrentZ, ¤t_position.z, - (&DGUSTxHandler::ExtraToFixedPoint)), + (&DGUSTxHandler::extraToFixedPoint)), VP_HELPER_TX_EXTRA(DGUS_Addr::MOVE_StepIcons, &DGUSScreenHandler::move_steps, - &DGUSTxHandler::StepIcons), + &DGUSTxHandler::stepIcons), - VP_HELPER_TX(DGUS_Addr::SETTINGS2_BLTouch, &DGUSTxHandler::BLTouch), + VP_HELPER_TX(DGUS_Addr::SETTINGS2_BLTouch, &DGUSTxHandler::blTouch), - VP_HELPER_TX(DGUS_Addr::PID_HeaterIcons, &DGUSTxHandler::PIDIcons), + VP_HELPER_TX(DGUS_Addr::PID_HeaterIcons, &DGUSTxHandler::pidIcons), VP_HELPER_TX_EXTRA(DGUS_Addr::PID_Temp, &DGUSScreenHandler::pid_temp, - &DGUSTxHandler::ExtraToInteger), + &DGUSTxHandler::extraToInteger), VP_HELPER_DWORD(DGUS_Addr::PID_Kp, VPFLAG_AUTOUPLOAD, nullptr, nullptr, - &DGUSTxHandler::PIDKp), + &DGUSTxHandler::pidKp), VP_HELPER_DWORD(DGUS_Addr::PID_Ki, VPFLAG_AUTOUPLOAD, nullptr, nullptr, - &DGUSTxHandler::PIDKi), + &DGUSTxHandler::pidKi), VP_HELPER_DWORD(DGUS_Addr::PID_Kd, VPFLAG_AUTOUPLOAD, nullptr, nullptr, - &DGUSTxHandler::PIDKd), + &DGUSTxHandler::pidKd), VP_HELPER(DGUS_Addr::INFOS_Machine, DGUS_MACHINE_LEN, VPFLAG_NONE, (void*)DGUS_MACHINENAME, nullptr, - &DGUSTxHandler::ExtraPGMToString), + &DGUSTxHandler::extraPGMToString), VP_HELPER_TX_SIZE(DGUS_Addr::INFOS_BuildVolume, DGUS_BUILDVOLUME_LEN, - &DGUSTxHandler::BuildVolume), + &DGUSTxHandler::buildVolume), VP_HELPER(DGUS_Addr::INFOS_Version, DGUS_VERSION_LEN, VPFLAG_NONE, (void*)DGUS_MARLINVERSION, nullptr, - &DGUSTxHandler::ExtraPGMToString), - VP_HELPER_TX(DGUS_Addr::INFOS_TotalPrints, &DGUSTxHandler::TotalPrints), - VP_HELPER_TX(DGUS_Addr::INFOS_FinishedPrints, &DGUSTxHandler::FinishedPrints), + &DGUSTxHandler::extraPGMToString), + VP_HELPER_TX(DGUS_Addr::INFOS_TotalPrints, &DGUSTxHandler::totalPrints), + VP_HELPER_TX(DGUS_Addr::INFOS_FinishedPrints, &DGUSTxHandler::finishedPrints), VP_HELPER_TX_SIZE(DGUS_Addr::INFOS_PrintTime, DGUS_PRINTTIME_LEN, - &DGUSTxHandler::PrintTime), + &DGUSTxHandler::printTime), VP_HELPER_TX_SIZE(DGUS_Addr::INFOS_LongestPrint, DGUS_LONGESTPRINT_LEN, - &DGUSTxHandler::LongestPrint), + &DGUSTxHandler::longestPrint), VP_HELPER_TX_SIZE(DGUS_Addr::INFOS_FilamentUsed, DGUS_FILAMENTUSED_LEN, - &DGUSTxHandler::FilamentUsed), + &DGUSTxHandler::filamentUsed), - VP_HELPER_TX(DGUS_Addr::WAIT_Icons, &DGUSTxHandler::WaitIcons), + VP_HELPER_TX(DGUS_Addr::WAIT_Icons, &DGUSTxHandler::waitIcons), // READ-WRITE VARIABLES @@ -324,41 +324,41 @@ const struct DGUS_VP vp_list[] PROGMEM = { 2, VPFLAG_AUTOUPLOAD, nullptr, - &DGUSRxHandler::FanSpeed, - &DGUSTxHandler::FanSpeed), + &DGUSRxHandler::fanSpeed, + &DGUSTxHandler::fanSpeed), VP_HELPER(DGUS_Addr::GCODE_Data, DGUS_GCODE_LEN, VPFLAG_RXSTRING, (void*)DGUSScreenHandler::gcode, - &DGUSRxHandler::StringToExtra, - &DGUSTxHandler::ExtraToString), + &DGUSRxHandler::stringToExtra, + &DGUSTxHandler::extraToString), VP_HELPER(DGUS_Addr::PID_Cycles, 2, VPFLAG_NONE, &DGUSScreenHandler::pid_cycles, - &DGUSRxHandler::IntegerToExtra, - &DGUSTxHandler::ExtraToInteger), + &DGUSRxHandler::integerToExtra, + &DGUSTxHandler::extraToInteger), VP_HELPER(DGUS_Addr::VOLUME_Level, 2, VPFLAG_NONE, nullptr, - &DGUSRxHandler::Volume, - &DGUSTxHandler::Volume), + &DGUSRxHandler::volume, + &DGUSTxHandler::volume), VP_HELPER(DGUS_Addr::BRIGHTNESS_Level, 2, VPFLAG_NONE, nullptr, - &DGUSRxHandler::Brightness, - &DGUSTxHandler::Brightness), + &DGUSRxHandler::brightness, + &DGUSTxHandler::brightness), // SPECIAL CASES - VP_HELPER_TX(DGUS_Addr::STATUS_Percent_Complete, &DGUSTxHandler::Percent), - VP_HELPER_RX_NODATA(DGUS_Addr::INFOS_Debug, &DGUSRxHandler::Debug), + VP_HELPER_TX(DGUS_Addr::STATUS_Percent_Complete, &DGUSTxHandler::percent), + VP_HELPER_RX_NODATA(DGUS_Addr::INFOS_Debug, &DGUSRxHandler::debug), VP_HELPER((DGUS_Addr)0, 0, VPFLAG_NONE, nullptr, nullptr, nullptr) diff --git a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp index 6e8f2b0100..e9e3940a08 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp @@ -33,7 +33,7 @@ namespace ExtUI { - void onStartup() { dgus_screen_handler.Init(); } + void onStartup() { screen.init(); } void onIdle() { static bool processing = false; @@ -41,45 +41,45 @@ namespace ExtUI { // Prevent recursion if (!processing) { processing = true; - dgus_screen_handler.Loop(); + screen.loop(); processing = false; } } void onPrinterKilled(FSTR_P const error, FSTR_P const component) { - dgus_screen_handler.printerKilled(error, component); + screen.printerKilled(error, component); } - void onMediaInserted() { TERN_(HAS_MEDIA, dgus_screen_handler.SDCardInserted()); } - void onMediaError() { TERN_(HAS_MEDIA, dgus_screen_handler.SDCardError()); } - void onMediaRemoved() { TERN_(HAS_MEDIA, dgus_screen_handler.SDCardRemoved()); } + void onMediaInserted() { TERN_(HAS_MEDIA, screen.sDCardInserted()); } + void onMediaError() { TERN_(HAS_MEDIA, screen.sdCardError()); } + void onMediaRemoved() { TERN_(HAS_MEDIA, screen.sdCardRemoved()); } void onPlayTone(const uint16_t frequency, const uint16_t duration) { - dgus_screen_handler.PlayTone(frequency, duration); + screen.playTone(frequency, duration); } void onPrintTimerStarted() { - dgus_screen_handler.PrintTimerStarted(); + screen.printTimerStarted(); } void onPrintTimerPaused() { - dgus_screen_handler.PrintTimerPaused(); + screen.printTimerPaused(); } void onPrintTimerStopped() { - dgus_screen_handler.PrintTimerStopped(); + screen.printTimerStopped(); } void onFilamentRunout(const extruder_t extruder) { - dgus_screen_handler.filamentRunout(extruder); + screen.filamentRunout(extruder); } void onUserConfirmRequired(const char * const msg) { - dgus_screen_handler.UserConfirmRequired(msg); + screen.userConfirmRequired(msg); } void onStatusChanged(const char * const msg) { - dgus_screen_handler.SetStatusMessage(msg); + screen.setStatusMessage(msg); } void onHomingStart() {} @@ -87,25 +87,25 @@ namespace ExtUI { void onPrintDone() {} void onFactoryReset() { - dgus_screen_handler.SettingsReset(); + screen.settingsReset(); } void onStoreSettings(char *buff) { - dgus_screen_handler.StoreSettings(buff); + screen.storeSettings(buff); } void onLoadSettings(const char *buff) { - dgus_screen_handler.LoadSettings(buff); + screen.loadSettings(buff); } void onPostprocessSettings() {} void onSettingsStored(const bool success) { - dgus_screen_handler.ConfigurationStoreWritten(success); + screen.configurationStoreWritten(success); } void onSettingsLoaded(const bool success) { - dgus_screen_handler.ConfigurationStoreRead(success); + screen.configurationStoreRead(success); } #if HAS_LEVELING @@ -115,12 +115,12 @@ namespace ExtUI { #if HAS_MESH void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval) { - dgus_screen_handler.MeshUpdate(xpos, ypos); + screen.meshUpdate(xpos, ypos); } void onMeshUpdate(const int8_t xpos, const int8_t ypos, const probe_state_t state) { if (state == G29_POINT_FINISH) - dgus_screen_handler.MeshUpdate(xpos, ypos); + screen.meshUpdate(xpos, ypos); } #endif @@ -133,14 +133,14 @@ namespace ExtUI { } void onPowerLossResume() { // Called on resume from power-loss - dgus_screen_handler.PowerLossResume(); + screen.powerLossResume(); } #endif #if HAS_PID_HEATING void onPidTuning(const result_t rst) { // Called for temperature PID tuning result - dgus_screen_handler.PidTuning(rst); + screen.pidTuning(rst); } #endif diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp index 398d35fdc3..eaf41526e5 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp @@ -101,15 +101,17 @@ const char *resultMessages[] = { "slip data" }; -// A note on baud rates. -// The ESP8266 supports 921600, 460800, 230400, 115200, 74880 and some lower baud rates. -// 921600b is not reliable because even though it sometimes succeeds in connecting, we get a bad response during uploading after a few blocks. -// Probably our UART ISR cannot receive bytes fast enough, perhaps because of the latency of the system tick ISR. -// 460800b doesn't always manage to connect, but if it does then uploading appears to be reliable. -// 230400b always manages to connect. +/** + * Baud Rate Notes: + * The ESP8266 supports 921600, 460800, 230400, 115200, 74880 and some lower baud rates. + * 921600b is not reliable because even though it sometimes succeeds in connecting, we get a bad response during uploading after a few blocks. + * Probably our UART ISR cannot receive bytes fast enough, perhaps because of the latency of the system tick ISR. + * 460800b doesn't always manage to connect, but if it does then uploading appears to be reliable. + * 230400b always manages to connect. + */ static const uint32_t uploadBaudRates[] = { 460800, 230400, 115200, 74880 }; -signed char IsReady() { +signed char isReady() { return esp_upload.state == upload_idle; } @@ -170,15 +172,17 @@ void putData(uint32_t val, unsigned byteCnt, uint8_t *buf, int ofst) { } } -// Read a byte optionally performing SLIP decoding. The return values are: -// -// 2 - an escaped byte was read successfully -// 1 - a non-escaped byte was read successfully -// 0 - no data was available -// -1 - the value 0xC0 was encountered (shouldn't happen) -// -2 - a SLIP escape byte was found but the following byte wasn't available -// -3 - a SLIP escape byte was followed by an invalid byte -int ReadByte(uint8_t *data, signed char slipDecode) { +/** + * Read a byte optionally performing SLIP decoding. The return values are: + * + * 2 - an escaped byte was read successfully + * 1 - a non-escaped byte was read successfully + * 0 - no data was available + * -1 - the value 0xC0 was encountered (shouldn't happen) + * -2 - a SLIP escape byte was found but the following byte wasn't available + * -3 - a SLIP escape byte was followed by an invalid byte + */ +int readByte(uint8_t *data, signed char slipDecode) { if (uploadPort_available() == 0) return 0; // At least one byte is available @@ -206,31 +210,33 @@ void _writePacketRaw(const uint8_t *buf, size_t len) { } // Write a byte to the serial port optionally SLIP encoding. Return the number of bytes actually written. -void WriteByteRaw(uint8_t b) { +void writeByteRaw(uint8_t b) { uploadPort_write((const uint8_t *)&b, 1); } // Write a byte to the serial port optionally SLIP encoding. Return the number of bytes actually written. -void WriteByteSlip(const uint8_t b) { +void writeByteSlip(const uint8_t b) { if (b == 0xC0) { - WriteByteRaw(0xDB); - WriteByteRaw(0xDC); + writeByteRaw(0xDB); + writeByteRaw(0xDC); } else if (b == 0xDB) { - WriteByteRaw(0xDB); - WriteByteRaw(0xDD); + writeByteRaw(0xDB); + writeByteRaw(0xDD); } else uploadPort_write((const uint8_t *)&b, 1); } -// Wait for a data packet to be returned. If the body of the packet is -// non-zero length, return an allocated buffer indirectly containing the -// data and return the data length. Note that if the pointer for returning -// the data buffer is nullptr, the response is expected to be two bytes of zero. -// -// If an error occurs, return a negative value. Otherwise, return the number -// of bytes in the response (or zero if the response was not the standard "two bytes of zero"). +/** + * Wait for a data packet to be returned. If the body of the packet is + * non-zero length, return an allocated buffer indirectly containing the + * data and return the data length. Note that if the pointer for returning + * the data buffer is nullptr, the response is expected to be two bytes of zero. + * + * If an error occurs, return a negative value. Otherwise, return the number + * of bytes in the response (or zero if the response was not the standard "two bytes of zero"). + */ EspUploadResult readPacket(uint8_t op, uint32_t *valp, size_t *bodyLen, uint32_t msTimeout) { typedef enum { begin = 0, @@ -292,7 +298,7 @@ EspUploadResult readPacket(uint8_t op, uint32_t *valp, size_t *bodyLen, uint32_t case body: { // reading the response body int rslt; // retrieve a byte with SLIP decoding - rslt = ReadByte(&c, 1); + rslt = readByte(&c, 1); if (rslt != 1 && rslt != 2) { // some error occurred stat = (rslt == 0 || rslt == -2) ? slipData : slipFrame; @@ -370,19 +376,19 @@ void _writePacket(const uint8_t *data, size_t len) { // 0xC0 and 0xDB replaced by the two-byte sequences {0xDB, 0xDC} and {0xDB, 0xDD} respectively. void writePacket(const uint8_t *hdr, size_t hdrLen, const uint8_t *data, size_t dataLen) { - WriteByteRaw(0xC0); // send the packet start character + writeByteRaw(0xC0); // send the packet start character _writePacket(hdr, hdrLen); // send the header _writePacket(data, dataLen); // send the data block - WriteByteRaw(0xC0); // send the packet end character + writeByteRaw(0xC0); // send the packet end character } // Send a packet to the serial port while performing SLIP framing. The packet data comprises a header and an optional data block. // This is like writePacket except that it does a fast block write for both the header and the main data with no SLIP encoding. Used to send sync commands. void writePacketRaw(const uint8_t *hdr, size_t hdrLen, const uint8_t *data, size_t dataLen) { - WriteByteRaw(0xC0); // send the packet start character + writeByteRaw(0xC0); // send the packet start character _writePacketRaw(hdr, hdrLen); // send the header _writePacketRaw(data, dataLen); // send the data block in raw mode - WriteByteRaw(0xC0); // send the packet end character + writeByteRaw(0xC0); // send the packet end character } // Send a command to the attached device together with the supplied data, if any. @@ -418,7 +424,7 @@ EspUploadResult doCommand(uint8_t op, const uint8_t *data, size_t dataLen, uint3 // Send a synchronising packet to the serial port in an attempt to induce // the ESP8266 to auto-baud lock on the baud rate. -EspUploadResult Sync(uint16_t timeout) { +EspUploadResult sync(uint16_t timeout) { uint8_t buf[36]; EspUploadResult stat; int i; @@ -553,7 +559,7 @@ void upload_spin() { case connecting: if ((getWifiTickDiff(esp_upload.lastAttemptTime, getWifiTick()) >= connectAttemptInterval) && (getWifiTickDiff(esp_upload.lastResetTime, getWifiTick()) >= 500)) { - EspUploadResult res = Sync(5000); + EspUploadResult res = sync(5000); esp_upload.lastAttemptTime = getWifiTick(); if (res == success) esp_upload.state = erasing; @@ -622,7 +628,7 @@ void upload_spin() { } // Try to upload the given file at the given address -void SendUpdateFile(const char *file, uint32_t address) { +void sendUpdateFile(const char *file, uint32_t address) { const char * const fname = card.diveToFile(false, update_curDir, ESP_FIRMWARE_FILE); if (!update_file.open(update_curDir, fname, O_READ)) return; @@ -640,7 +646,7 @@ void SendUpdateFile(const char *file, uint32_t address) { static const uint32_t FirmwareAddress = 0x00000000, WebFilesAddress = 0x00100000; -void ResetWiFiForUpload(int begin_or_end) { +void resetWiFiForUpload(int begin_or_end) { //#if 0 uint32_t start = getWifiTick(); @@ -660,12 +666,12 @@ void ResetWiFiForUpload(int begin_or_end) { int32_t wifi_upload(int type) { esp_upload.retriesPerBaudRate = 9; - ResetWiFiForUpload(0); + resetWiFiForUpload(0); switch (type) { - case 0: SendUpdateFile(ESP_FIRMWARE_FILE, FirmwareAddress); break; - case 1: SendUpdateFile(ESP_WEB_FIRMWARE_FILE, FirmwareAddress); break; - case 2: SendUpdateFile(ESP_WEB_FILE, WebFilesAddress); break; + case 0: sendUpdateFile(ESP_FIRMWARE_FILE, FirmwareAddress); break; + case 1: sendUpdateFile(ESP_WEB_FIRMWARE_FILE, FirmwareAddress); break; + case 2: sendUpdateFile(ESP_WEB_FILE, WebFilesAddress); break; default: return -1; } @@ -674,7 +680,7 @@ int32_t wifi_upload(int type) { hal.watchdog_refresh(); } - ResetWiFiForUpload(1); + resetWiFiForUpload(1); return esp_upload.uploadResult == success ? 0 : -1; } diff --git a/Marlin/src/lcd/tft/canvas.cpp b/Marlin/src/lcd/tft/canvas.cpp index 3fb500e8e2..0894f7afb9 100644 --- a/Marlin/src/lcd/tft/canvas.cpp +++ b/Marlin/src/lcd/tft/canvas.cpp @@ -26,31 +26,31 @@ #include "canvas.h" -uint16_t CANVAS::width, CANVAS::height; -uint16_t CANVAS::startLine, CANVAS::endLine; -uint16_t CANVAS::background_color; -uint16_t *CANVAS::buffer = TFT::buffer; +uint16_t Canvas::width, Canvas::height; +uint16_t Canvas::startLine, Canvas::endLine; +uint16_t Canvas::background_color; +uint16_t *Canvas::buffer = TFT::buffer; -void CANVAS::New(uint16_t x, uint16_t y, uint16_t width, uint16_t height) { - CANVAS::width = width; - CANVAS::height = height; +void Canvas::instantiate(uint16_t x, uint16_t y, uint16_t width, uint16_t height) { + Canvas::width = width; + Canvas::height = height; startLine = 0; endLine = 0; tft.set_window(x, y, x + width - 1, y + height - 1); } -void CANVAS::Continue() { +void Canvas::next() { startLine = endLine; endLine = TFT_BUFFER_SIZE < width * (height - startLine) ? startLine + TFT_BUFFER_SIZE / width : height; } -bool CANVAS::ToScreen() { +bool Canvas::toScreen() { tft.write_sequence(buffer, width * (endLine - startLine)); return endLine == height; } -void CANVAS::SetBackground(uint16_t color) { +void Canvas::setBackground(uint16_t color) { /* TODO: test and optimize performance */ /* uint32_t count = (endLine - startLine) * width; @@ -67,35 +67,35 @@ void CANVAS::SetBackground(uint16_t color) { extern uint16_t gradient(uint16_t colorA, uint16_t colorB, uint16_t factor); -void CANVAS::AddText(uint16_t x, uint16_t y, uint16_t color, uint16_t *string, uint16_t maxWidth) { - if (endLine < y || startLine > y + GetFontHeight()) return; +void Canvas::addText(uint16_t x, uint16_t y, uint16_t color, uint16_t *string, uint16_t maxWidth) { + if (endLine < y || startLine > y + getFontHeight()) return; if (maxWidth == 0) maxWidth = width - x; uint16_t colors[16]; uint16_t stringWidth = 0; - if (GetFontType() == FONT_MARLIN_GLYPHS_2BPP) { + if (getFontType() == FONT_MARLIN_GLYPHS_2BPP) { for (uint8_t i = 0; i < 3; i++) { colors[i] = gradient(ENDIAN_COLOR(color), ENDIAN_COLOR(background_color), ((i+1) << 8) / 3); colors[i] = ENDIAN_COLOR(colors[i]); } } for (uint16_t i = 0 ; *(string + i) ; i++) { - glyph_t *glyph = Glyph(string + i); - if (stringWidth + glyph->BBXWidth > maxWidth) break; - switch (GetFontType()) { + glyph_t *pGlyph = glyph(string + i); + if (stringWidth + pGlyph->BBXWidth > maxWidth) break; + switch (getFontType()) { case FONT_MARLIN_GLYPHS_1BPP: - AddImage(x + stringWidth + glyph->BBXOffsetX, y + GetFontAscent() - glyph->BBXHeight - glyph->BBXOffsetY, glyph->BBXWidth, glyph->BBXHeight, GREYSCALE1, ((uint8_t *)glyph) + sizeof(glyph_t), &color); + addImage(x + stringWidth + pGlyph->BBXOffsetX, y + getFontAscent() - pGlyph->BBXHeight - pGlyph->BBXOffsetY, pGlyph->BBXWidth, pGlyph->BBXHeight, GREYSCALE1, ((uint8_t *)glyph) + sizeof(glyph_t), &color); break; case FONT_MARLIN_GLYPHS_2BPP: - AddImage(x + stringWidth + glyph->BBXOffsetX, y + GetFontAscent() - glyph->BBXHeight - glyph->BBXOffsetY, glyph->BBXWidth, glyph->BBXHeight, GREYSCALE2, ((uint8_t *)glyph) + sizeof(glyph_t), colors); + addImage(x + stringWidth + pGlyph->BBXOffsetX, y + getFontAscent() - pGlyph->BBXHeight - pGlyph->BBXOffsetY, pGlyph->BBXWidth, pGlyph->BBXHeight, GREYSCALE2, ((uint8_t *)glyph) + sizeof(glyph_t), colors); break; } - stringWidth += glyph->DWidth; + stringWidth += pGlyph->DWidth; } } -void CANVAS::AddImage(int16_t x, int16_t y, MarlinImage image, uint16_t *colors) { +void Canvas::addImage(int16_t x, int16_t y, MarlinImage image, uint16_t *colors) { uint16_t *data = (uint16_t *)Images[image].data; if (!data) return; @@ -104,7 +104,7 @@ void CANVAS::AddImage(int16_t x, int16_t y, MarlinImage image, uint16_t *colors) colorMode_t color_mode = Images[image].colorMode; if (color_mode != HIGHCOLOR) - return AddImage(x, y, image_width, image_height, color_mode, (uint8_t *)data, colors); + return addImage(x, y, image_width, image_height, color_mode, (uint8_t *)data, colors); // HIGHCOLOR - 16 bits per pixel @@ -123,7 +123,7 @@ void CANVAS::AddImage(int16_t x, int16_t y, MarlinImage image, uint16_t *colors) } } -void CANVAS::AddImage(int16_t x, int16_t y, uint8_t image_width, uint8_t image_height, colorMode_t color_mode, uint8_t *data, uint16_t *colors) { +void Canvas::addImage(int16_t x, int16_t y, uint8_t image_width, uint8_t image_height, colorMode_t color_mode, uint8_t *data, uint16_t *colors) { uint8_t bitsPerPixel; switch (color_mode) { case GREYSCALE1: bitsPerPixel = 1; break; @@ -161,7 +161,7 @@ void CANVAS::AddImage(int16_t x, int16_t y, uint8_t image_width, uint8_t image_h } } -void CANVAS::AddRectangle(uint16_t x, uint16_t y, uint16_t rectangleWidth, uint16_t rectangleHeight, uint16_t color) { +void Canvas::addRect(uint16_t x, uint16_t y, uint16_t rectangleWidth, uint16_t rectangleHeight, uint16_t color) { if (endLine < y || startLine > y + rectangleHeight) return; for (uint16_t i = 0; i < rectangleHeight; i++) { @@ -180,7 +180,7 @@ void CANVAS::AddRectangle(uint16_t x, uint16_t y, uint16_t rectangleWidth, uint1 } } -void CANVAS::AddBar(uint16_t x, uint16_t y, uint16_t barWidth, uint16_t barHeight, uint16_t color) { +void Canvas::addBar(uint16_t x, uint16_t y, uint16_t barWidth, uint16_t barHeight, uint16_t color) { if (endLine < y || startLine > y + barHeight) return; for (uint16_t i = 0; i < barHeight; i++) { @@ -192,6 +192,6 @@ void CANVAS::AddBar(uint16_t x, uint16_t y, uint16_t barWidth, uint16_t barHeigh } } -CANVAS Canvas; +Canvas tftCanvas; #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/canvas.h b/Marlin/src/lcd/tft/canvas.h index 1c9c7bb13a..d271ae7af3 100644 --- a/Marlin/src/lcd/tft/canvas.h +++ b/Marlin/src/lcd/tft/canvas.h @@ -28,32 +28,32 @@ #include "../../inc/MarlinConfig.h" -class CANVAS { +class Canvas { private: static uint16_t background_color; static uint16_t width, height; static uint16_t startLine, endLine; static uint16_t *buffer; - inline static glyph_t *Glyph(uint16_t *character) { return TFT_String::glyph(character); } - inline static uint16_t GetFontType() { return TFT_String::font_type(); } - inline static uint16_t GetFontAscent() { return TFT_String::font_ascent(); } - inline static uint16_t GetFontHeight() { return TFT_String::font_height(); } + inline static glyph_t *glyph(uint16_t *character) { return TFT_String::glyph(character); } + inline static uint16_t getFontType() { return TFT_String::font_type(); } + inline static uint16_t getFontAscent() { return TFT_String::font_ascent(); } + inline static uint16_t getFontHeight() { return TFT_String::font_height(); } - static void AddImage(int16_t x, int16_t y, uint8_t image_width, uint8_t image_height, colorMode_t color_mode, uint8_t *data, uint16_t *colors); - static void AddImage(uint16_t x, uint16_t y, uint16_t imageWidth, uint16_t imageHeight, uint16_t color, uint16_t bgColor, uint8_t *image); + static void addImage(int16_t x, int16_t y, uint8_t image_width, uint8_t image_height, colorMode_t color_mode, uint8_t *data, uint16_t *colors); + static void addImage(uint16_t x, uint16_t y, uint16_t imageWidth, uint16_t imageHeight, uint16_t color, uint16_t bgColor, uint8_t *image); public: - static void New(uint16_t x, uint16_t y, uint16_t width, uint16_t height); - static void Continue(); - static bool ToScreen(); + static void instantiate(uint16_t x, uint16_t y, uint16_t width, uint16_t height); + static void next(); + static bool toScreen(); - static void SetBackground(uint16_t color); - static void AddText(uint16_t x, uint16_t y, uint16_t color, uint16_t *string, uint16_t maxWidth); - static void AddImage(int16_t x, int16_t y, MarlinImage image, uint16_t *colors); + static void setBackground(uint16_t color); + static void addText(uint16_t x, uint16_t y, uint16_t color, uint16_t *string, uint16_t maxWidth); + static void addImage(int16_t x, int16_t y, MarlinImage image, uint16_t *colors); - static void AddRectangle(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color); - static void AddBar(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color); + static void addRect(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color); + static void addBar(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color); }; -extern CANVAS Canvas; +extern Canvas tftCanvas; diff --git a/Marlin/src/lcd/tft/tft_queue.cpp b/Marlin/src/lcd/tft/tft_queue.cpp index 1cec4a7159..fb96a440ea 100644 --- a/Marlin/src/lcd/tft/tft_queue.cpp +++ b/Marlin/src/lcd/tft/tft_queue.cpp @@ -107,17 +107,17 @@ void TFT_Queue::canvas(queueTask_t *task) { if (task->state == TASK_STATE_READY) { task->state = TASK_STATE_IN_PROGRESS; - Canvas.New(task_parameters->x, task_parameters->y, task_parameters->width, task_parameters->height); + tftCanvas.instantiate(task_parameters->x, task_parameters->y, task_parameters->width, task_parameters->height); } - Canvas.Continue(); + tftCanvas.next(); for (i = 0; i < task_parameters->count; i++) { switch (*item) { case CANVAS_SET_BACKGROUND: - Canvas.SetBackground(((parametersCanvasBackground_t *)item)->color); + tftCanvas.setBackground(((parametersCanvasBackground_t *)item)->color); break; case CANVAS_ADD_TEXT: - Canvas.AddText(((parametersCanvasText_t *)item)->x, ((parametersCanvasText_t *)item)->y, ((parametersCanvasText_t *)item)->color, (uint16_t*)(item + sizeof(parametersCanvasText_t)), ((parametersCanvasText_t *)item)->maxWidth); + tftCanvas.addText(((parametersCanvasText_t *)item)->x, ((parametersCanvasText_t *)item)->y, ((parametersCanvasText_t *)item)->color, (uint16_t*)(item + sizeof(parametersCanvasText_t)), ((parametersCanvasText_t *)item)->maxWidth); break; case CANVAS_ADD_IMAGE: @@ -126,20 +126,20 @@ void TFT_Queue::canvas(queueTask_t *task) { image = ((parametersCanvasImage_t *)item)->image; colors = (uint16_t *)(item + sizeof(parametersCanvasImage_t)); - Canvas.AddImage(((parametersCanvasImage_t *)item)->x, ((parametersCanvasImage_t *)item)->y, image, colors); + tftCanvas.addImage(((parametersCanvasImage_t *)item)->x, ((parametersCanvasImage_t *)item)->y, image, colors); break; case CANVAS_ADD_BAR: - Canvas.AddBar(((parametersCanvasBar_t *)item)->x, ((parametersCanvasBar_t *)item)->y, ((parametersCanvasBar_t *)item)->width, ((parametersCanvasBar_t *)item)->height, ((parametersCanvasBar_t *)item)->color); + tftCanvas.addBar(((parametersCanvasBar_t *)item)->x, ((parametersCanvasBar_t *)item)->y, ((parametersCanvasBar_t *)item)->width, ((parametersCanvasBar_t *)item)->height, ((parametersCanvasBar_t *)item)->color); break; - case CANVAS_ADD_RECTANGLE: - Canvas.AddRectangle(((parametersCanvasRectangle_t *)item)->x, ((parametersCanvasRectangle_t *)item)->y, ((parametersCanvasRectangle_t *)item)->width, ((parametersCanvasRectangle_t *)item)->height, ((parametersCanvasRectangle_t *)item)->color); + case CANVAS_ADD_RECT: + tftCanvas.addRect(((parametersCanvasRectangle_t *)item)->x, ((parametersCanvasRectangle_t *)item)->y, ((parametersCanvasRectangle_t *)item)->width, ((parametersCanvasRectangle_t *)item)->height, ((parametersCanvasRectangle_t *)item)->color); break; } item = ((parametersCanvasBackground_t *)item)->nextParameter; } - if (Canvas.ToScreen()) task->state = TASK_STATE_COMPLETED; + if (tftCanvas.toScreen()) task->state = TASK_STATE_COMPLETED; } void TFT_Queue::fill(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color) { @@ -265,7 +265,7 @@ void TFT_Queue::add_text(uint16_t x, uint16_t y, uint16_t color, const uint16_t end_of_queue += sizeof(parametersCanvasText_t); uint16_t *character = (uint16_t *)end_of_queue; - /* TODO: Deal with maxWidth */ + // TODO: Deal with maxWidth while ((*character++ = *pointer++) != 0); end_of_queue = (uint8_t *)character; @@ -373,7 +373,7 @@ void TFT_Queue::add_rectangle(uint16_t x, uint16_t y, uint16_t width, uint16_t h parametersCanvasRectangle_t *parameters = (parametersCanvasRectangle_t *)end_of_queue; last_parameter = end_of_queue; - parameters->type = CANVAS_ADD_RECTANGLE; + parameters->type = CANVAS_ADD_RECT; parameters->x = x; parameters->y = y; parameters->width = width; diff --git a/Marlin/src/lcd/tft/tft_queue.h b/Marlin/src/lcd/tft/tft_queue.h index ed929166cb..59a13dd43a 100644 --- a/Marlin/src/lcd/tft/tft_queue.h +++ b/Marlin/src/lcd/tft/tft_queue.h @@ -47,7 +47,7 @@ enum CanvasSubtype : uint8_t { CANVAS_ADD_TEXT, CANVAS_ADD_IMAGE, CANVAS_ADD_BAR, - CANVAS_ADD_RECTANGLE, + CANVAS_ADD_RECT, }; typedef struct __attribute__((__packed__)) { diff --git a/Marlin/src/libs/duration_t.h b/Marlin/src/libs/duration_t.h index 69a648441f..e45ce01496 100644 --- a/Marlin/src/libs/duration_t.h +++ b/Marlin/src/libs/duration_t.h @@ -67,7 +67,7 @@ struct duration_t { } /** - * @brief Formats the duration as years + * @brief Format the duration as years * @return The number of years */ inline uint8_t year() const { @@ -75,7 +75,7 @@ struct duration_t { } /** - * @brief Formats the duration as days + * @brief Format the duration as days * @return The number of days */ inline uint16_t day() const { @@ -83,7 +83,7 @@ struct duration_t { } /** - * @brief Formats the duration as hours + * @brief Format the duration as hours * @return The number of hours */ inline uint32_t hour() const { @@ -91,7 +91,7 @@ struct duration_t { } /** - * @brief Formats the duration as minutes + * @brief Format the duration as minutes * @return The number of minutes */ inline uint32_t minute() const { @@ -99,7 +99,7 @@ struct duration_t { } /** - * @brief Formats the duration as seconds + * @brief Format the duration as seconds * @return The number of seconds */ inline uint32_t second() const { @@ -112,7 +112,7 @@ struct duration_t { #endif /** - * @brief Formats the duration as a string + * @brief Format the duration as a string * @details String will be formatted using a "full" representation of duration * * @param buffer The array pointed to must be able to accommodate 22 bytes @@ -142,7 +142,7 @@ struct duration_t { } /** - * @brief Formats the duration as a string + * @brief Format the duration as a string * @details String will be formatted using a "digital" representation of duration * * @param buffer The array pointed to must be able to accommodate 10 bytes From 32be4065efeafe781e007ca6ff47bd5a3fc22184 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 31 May 2023 16:47:05 -0500 Subject: [PATCH 497/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20num?= =?UTF-8?q?tostr=20use=20functions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/libs/numtostr.cpp | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/Marlin/src/libs/numtostr.cpp b/Marlin/src/libs/numtostr.cpp index 2938229a7a..c34faf68ff 100644 --- a/Marlin/src/libs/numtostr.cpp +++ b/Marlin/src/libs/numtostr.cpp @@ -25,14 +25,25 @@ #include "../inc/MarlinConfigPre.h" #include "../core/utility.h" -char conv[9] = { 0 }; +constexpr char DIGIT(const uint8_t n) { return '0' + n; } -#define DIGIT(n) ('0' + (n)) -#define DIGIMOD(n, f) DIGIT(((n)/(f)) % 10) -#define RJDIGIT(n, f) ((n) >= (f) ? DIGIMOD(n, f) : ' ') -#define MINUSOR(n, alt) (n >= 0 ? (alt) : (n = -n, '-')) -#define INTFLOAT(V,N) (((V) * 10 * pow(10, N) + ((V) < 0 ? -5: 5)) / 10) // pow10? -#define UINTFLOAT(V,N) INTFLOAT((V) < 0 ? -(V) : (V), N) +template +constexpr char DIGIMOD(const T1 n, const T2 f) { return DIGIT((n / f) % 10); } + +template +constexpr char RJDIGIT(const T1 n, const T2 f) { return (n >= f ? DIGIMOD(n, f) : ' '); } + +template +constexpr char MINUSOR(T &n, const char alt) { return (n >= 0) ? alt : (n = -n) ? '-' : '-'; } + +constexpr long INTFLOAT(const float V, const int N) { + return long((V * 10.0f * pow(10.0f, N) + (V < 0.0f ? -5.0f : 5.0f)) / 10.0f); +} +constexpr long UINTFLOAT(const float V, const int N) { + return INTFLOAT(V < 0.0f ? -V : V, N); +} + +char conv[9] = { 0 }; // Format uint8_t (0-100) as rj string with 123% / _12% / __1% format const char* pcttostrpctrj(const uint8_t i) { From 2691167afe02fbbe74b0fdca2c28a49fac635741 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 2 Jun 2023 14:26:02 -0500 Subject: [PATCH 498/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Dum?= =?UTF-8?q?p=20BOTH=20and=20EITHER=20macros=20(#25908)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 16 +- Marlin/Configuration_adv.h | 38 ++-- Marlin/src/HAL/AVR/MarlinSerial.h | 2 +- Marlin/src/HAL/AVR/eeprom.cpp | 2 +- Marlin/src/HAL/AVR/inc/SanityCheck.h | 4 +- Marlin/src/HAL/DUE/HAL_SPI.cpp | 2 +- Marlin/src/HAL/DUE/inc/Conditionals_post.h | 2 +- Marlin/src/HAL/ESP32/HAL.cpp | 2 +- Marlin/src/HAL/ESP32/inc/SanityCheck.h | 8 +- Marlin/src/HAL/ESP32/ota.cpp | 2 +- Marlin/src/HAL/ESP32/spiffs.cpp | 2 +- Marlin/src/HAL/ESP32/u8g_esp32_spi.cpp | 4 +- Marlin/src/HAL/ESP32/web.cpp | 2 +- Marlin/src/HAL/LINUX/spi_pins.h | 2 +- .../src/HAL/LPC1768/inc/Conditionals_post.h | 2 +- Marlin/src/HAL/LPC1768/spi_pins.h | 2 +- .../u8g/u8g_com_HAL_LPC1768_sw_spi.cpp | 10 +- Marlin/src/HAL/NATIVE_SIM/spi_pins.h | 2 +- .../src/HAL/NATIVE_SIM/u8g/u8g_com_sw_spi.cpp | 10 +- Marlin/src/HAL/SAMD21/HAL_SPI.cpp | 2 +- Marlin/src/HAL/SAMD21/inc/Conditionals_post.h | 2 +- Marlin/src/HAL/SAMD51/HAL_SPI.cpp | 2 +- Marlin/src/HAL/SAMD51/inc/Conditionals_post.h | 2 +- Marlin/src/HAL/STM32/inc/Conditionals_adv.h | 2 +- Marlin/src/HAL/STM32/inc/Conditionals_post.h | 2 +- Marlin/src/HAL/STM32/timers.cpp | 6 +- Marlin/src/HAL/STM32/usb_host.cpp | 2 +- Marlin/src/HAL/STM32F1/HAL.cpp | 2 +- Marlin/src/HAL/STM32F1/HAL.h | 2 +- Marlin/src/HAL/STM32F1/MarlinSerial.cpp | 2 +- Marlin/src/HAL/STM32F1/MarlinSerial.h | 2 +- .../STM32F1/dogm/u8g_com_stm32duino_swspi.cpp | 2 +- .../src/HAL/STM32F1/inc/Conditionals_post.h | 2 +- Marlin/src/HAL/STM32F1/pinsDebug.h | 2 +- Marlin/src/HAL/STM32F1/sdio.cpp | 2 +- Marlin/src/HAL/shared/HAL_ST7920.h | 2 +- Marlin/src/HAL/shared/eeprom_api.cpp | 2 +- Marlin/src/MarlinCore.cpp | 22 +-- Marlin/src/core/language.h | 2 +- Marlin/src/core/macros.h | 12 +- Marlin/src/feature/babystep.cpp | 2 +- Marlin/src/feature/babystep.h | 4 +- Marlin/src/feature/backlash.cpp | 2 +- Marlin/src/feature/bedlevel/bedlevel.cpp | 6 +- Marlin/src/feature/bedlevel/bedlevel.h | 6 +- Marlin/src/feature/cancel_object.cpp | 2 +- Marlin/src/feature/cooler.cpp | 2 +- Marlin/src/feature/host_actions.cpp | 6 +- Marlin/src/feature/leds/leds.cpp | 14 +- Marlin/src/feature/leds/leds.h | 4 +- Marlin/src/feature/leds/neopixel.cpp | 2 +- Marlin/src/feature/leds/neopixel.h | 2 +- Marlin/src/feature/mixing.cpp | 4 +- Marlin/src/feature/mixing.h | 2 +- Marlin/src/feature/mmu/mmu2.cpp | 2 +- Marlin/src/feature/pause.cpp | 12 +- Marlin/src/feature/pause.h | 2 +- Marlin/src/feature/power.cpp | 14 +- Marlin/src/feature/power.h | 4 +- Marlin/src/feature/powerloss.cpp | 2 +- Marlin/src/feature/solenoid.cpp | 2 +- Marlin/src/gcode/bedlevel/G35.cpp | 2 +- Marlin/src/gcode/bedlevel/abl/G29.cpp | 14 +- Marlin/src/gcode/calibrate/G28.cpp | 8 +- Marlin/src/gcode/calibrate/G34_M422.cpp | 4 +- Marlin/src/gcode/calibrate/G76_M871.cpp | 2 +- Marlin/src/gcode/calibrate/M100.cpp | 2 +- Marlin/src/gcode/calibrate/M666.cpp | 2 +- Marlin/src/gcode/control/M380_M381.cpp | 2 +- Marlin/src/gcode/control/M7-M9.cpp | 2 +- Marlin/src/gcode/control/M80_M81.cpp | 2 +- Marlin/src/gcode/control/T.cpp | 2 +- Marlin/src/gcode/feature/pause/M125.cpp | 2 +- Marlin/src/gcode/feature/pause/M701_M702.cpp | 2 +- Marlin/src/gcode/gcode.cpp | 22 +-- Marlin/src/gcode/gcode.h | 18 +- Marlin/src/gcode/geometry/G92.cpp | 14 +- Marlin/src/gcode/motion/G0_G1.cpp | 6 +- Marlin/src/gcode/parser.cpp | 2 +- Marlin/src/gcode/probe/G30.cpp | 2 +- Marlin/src/gcode/sd/M1001.cpp | 2 +- Marlin/src/gcode/sd/M34.cpp | 2 +- Marlin/src/inc/Conditionals_LCD.h | 88 ++++----- Marlin/src/inc/Conditionals_adv.h | 36 ++-- Marlin/src/inc/Conditionals_post.h | 61 +++--- Marlin/src/inc/SanityCheck.h | 186 +++++++++--------- Marlin/src/inc/Warnings.cpp | 10 +- Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 14 +- Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp | 12 +- Marlin/src/lcd/buttons.h | 4 +- Marlin/src/lcd/dogm/dogm_Statusscreen.h | 16 +- Marlin/src/lcd/dogm/marlinui_DOGM.cpp | 2 +- Marlin/src/lcd/dogm/marlinui_DOGM.h | 4 +- Marlin/src/lcd/dogm/status_screen_DOGM.cpp | 14 +- Marlin/src/lcd/e3v2/creality/dwin.cpp | 20 +- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 6 +- Marlin/src/lcd/e3v2/marlinui/ui_common.cpp | 2 +- .../lcd/e3v2/marlinui/ui_status_480x272.cpp | 2 +- Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp | 2 +- Marlin/src/lcd/e3v2/proui/dwin.cpp | 36 ++-- Marlin/src/lcd/e3v2/proui/dwin.h | 16 +- Marlin/src/lcd/e3v2/proui/dwin_defines.h | 2 +- Marlin/src/lcd/e3v2/proui/endstop_diag.cpp | 2 +- Marlin/src/lcd/e3v2/proui/gcode_preview.cpp | 2 +- Marlin/src/lcd/e3v2/proui/lockscreen.cpp | 2 +- Marlin/src/lcd/e3v2/proui/meshviewer.cpp | 2 +- Marlin/src/lcd/e3v2/proui/plot.cpp | 2 +- Marlin/src/lcd/e3v2/proui/printstats.cpp | 2 +- Marlin/src/lcd/extui/anycubic/Tunes.cpp | 2 +- .../anycubic_i3mega/anycubic_i3mega_lcd.cpp | 2 +- .../lcd/extui/dgus/mks/DGUSScreenHandler.cpp | 12 +- Marlin/src/lcd/extui/example/example.cpp | 2 +- .../cocoa_press/leveling_menu.cpp | 2 +- .../cocoa_press/main_menu.cpp | 4 +- .../ftdi_eve_lib/basic/commands.cpp | 2 +- .../ftdi_eve_touch_ui/ftdi_eve_lib/compat.h | 7 +- .../extended/unicode/font_size_t.cpp | 2 +- .../extended/unicode/standard_char_set.cpp | 2 +- .../ftdi_eve_lib/extended/unicode/unicode.cpp | 2 +- .../generic/about_screen.cpp | 8 +- .../generic/advanced_settings_menu.cpp | 8 +- .../generic/endstop_state_screen.cpp | 2 +- .../generic/leveling_menu.cpp | 6 +- .../extui/ftdi_eve_touch_ui/generic/screens.h | 4 +- .../ftdi_eve_touch_ui/generic/tune_menu.cpp | 8 +- .../extui/ftdi_eve_touch_ui/theme/colors.h | 4 +- .../draw_auto_level_offset_settings.cpp | 2 +- .../src/lcd/extui/mks_ui/draw_cloud_bind.cpp | 2 +- .../lcd/extui/mks_ui/draw_jerk_settings.cpp | 2 +- .../lcd/extui/mks_ui/draw_media_select.cpp | 2 +- .../lcd/extui/mks_ui/draw_pause_message.cpp | 2 +- .../mks_ui/draw_tmc_current_settings.cpp | 2 +- .../mks_ui/draw_tmc_step_mode_settings.cpp | 2 +- .../extui/mks_ui/draw_touch_calibration.cpp | 2 +- Marlin/src/lcd/extui/mks_ui/draw_ui.cpp | 2 +- .../lcd/extui/mks_ui/draw_z_offset_wizard.cpp | 2 +- Marlin/src/lcd/extui/mks_ui/irq_overrid.cpp | 2 +- Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp | 2 +- Marlin/src/lcd/extui/mks_ui/mks_hardware.h | 2 +- .../extui/mks_ui/tft_lvgl_configuration.cpp | 4 +- .../src/lcd/extui/mks_ui/wifiSerial_STM32.cpp | 2 +- .../lcd/extui/mks_ui/wifiSerial_STM32F1.cpp | 2 +- Marlin/src/lcd/extui/mks_ui/wifi_module.cpp | 2 +- Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp | 2 +- Marlin/src/lcd/extui/nextion/nextion_tft.cpp | 4 +- Marlin/src/lcd/extui/ui_api.cpp | 2 +- Marlin/src/lcd/marlinui.cpp | 42 ++-- Marlin/src/lcd/marlinui.h | 28 +-- Marlin/src/lcd/menu/menu.cpp | 2 +- Marlin/src/lcd/menu/menu_advanced.cpp | 10 +- Marlin/src/lcd/menu/menu_backlash.cpp | 4 +- Marlin/src/lcd/menu/menu_bed_leveling.cpp | 6 +- Marlin/src/lcd/menu/menu_bed_tramming.cpp | 10 +- Marlin/src/lcd/menu/menu_cancelobject.cpp | 2 +- Marlin/src/lcd/menu/menu_configuration.cpp | 6 +- Marlin/src/lcd/menu/menu_delta_calibrate.cpp | 2 +- Marlin/src/lcd/menu/menu_filament.cpp | 2 +- Marlin/src/lcd/menu/menu_info.cpp | 2 +- Marlin/src/lcd/menu/menu_job_recovery.cpp | 2 +- Marlin/src/lcd/menu/menu_led.cpp | 2 +- Marlin/src/lcd/menu/menu_main.cpp | 10 +- Marlin/src/lcd/menu/menu_media.cpp | 2 +- Marlin/src/lcd/menu/menu_mixer.cpp | 2 +- Marlin/src/lcd/menu/menu_mmu2.cpp | 2 +- Marlin/src/lcd/menu/menu_motion.cpp | 6 +- Marlin/src/lcd/menu/menu_password.cpp | 2 +- Marlin/src/lcd/menu/menu_temperature.cpp | 2 +- Marlin/src/lcd/menu/menu_touch_screen.cpp | 2 +- Marlin/src/lcd/menu/menu_tramming_wizard.cpp | 2 +- Marlin/src/lcd/menu/menu_tune.cpp | 2 +- Marlin/src/lcd/menu/menu_ubl.cpp | 2 +- Marlin/src/lcd/menu/menu_x_twist.cpp | 2 +- Marlin/src/lcd/tft/ui_1024x600.cpp | 8 +- Marlin/src/lcd/tft/ui_320x240.cpp | 8 +- Marlin/src/lcd/tft/ui_480x320.cpp | 8 +- Marlin/src/libs/nozzle.cpp | 4 +- Marlin/src/module/endstops.cpp | 6 +- Marlin/src/module/motion.cpp | 26 +-- Marlin/src/module/motion.h | 2 +- Marlin/src/module/planner.cpp | 16 +- Marlin/src/module/planner.h | 4 +- Marlin/src/module/printcounter.h | 2 +- Marlin/src/module/probe.cpp | 20 +- Marlin/src/module/probe.h | 2 +- Marlin/src/module/scara.cpp | 2 +- Marlin/src/module/settings.cpp | 18 +- Marlin/src/module/stepper.cpp | 20 +- Marlin/src/module/stepper.h | 10 +- Marlin/src/module/temperature.cpp | 52 ++--- Marlin/src/module/temperature.h | 22 +-- Marlin/src/module/tool_change.cpp | 8 +- .../pins/esp32/pins_GODI_CONTROLLER_V1_0.h | 2 +- Marlin/src/pins/esp32/pins_MKS_TINYBEE.h | 2 +- Marlin/src/pins/linux/pins_RAMPS_LINUX.h | 6 +- Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h | 2 +- Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h | 2 +- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h | 2 +- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h | 2 +- Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h | 4 +- Marlin/src/pins/lpc1768/pins_MKS_SBASE.h | 4 +- Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h | 2 +- Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h | 8 +- Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h | 2 +- Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h | 2 +- .../src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h | 2 +- .../src/pins/lpc1769/pins_COHESION3D_REMIX.h | 2 +- Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h | 2 +- Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h | 2 +- Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h | 2 +- Marlin/src/pins/pins.h | 4 +- Marlin/src/pins/pinsDebug.h | 8 +- Marlin/src/pins/rambo/pins_RAMBO.h | 2 +- Marlin/src/pins/rambo/pins_SCOOVO_X9H.h | 2 +- Marlin/src/pins/ramps/pins_3DRAG.h | 2 +- Marlin/src/pins/ramps/pins_AZTEEG_X3.h | 2 +- Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h | 4 +- Marlin/src/pins/ramps/pins_FYSETC_F6_13.h | 2 +- Marlin/src/pins/ramps/pins_K8400.h | 2 +- Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h | 2 +- Marlin/src/pins/ramps/pins_MKS_GEN_13.h | 2 +- Marlin/src/pins/ramps/pins_RAMPS.h | 20 +- Marlin/src/pins/ramps/pins_RUMBA.h | 4 +- Marlin/src/pins/ramps/pins_TRIGORILLA_14.h | 6 +- Marlin/src/pins/ramps/pins_TT_OSCAR.h | 6 +- Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h | 10 +- Marlin/src/pins/ramps/pins_ZRIB_V53.h | 4 +- Marlin/src/pins/sam/env_validate.h | 2 +- Marlin/src/pins/sam/pins_KRATOS32.h | 2 +- Marlin/src/pins/sam/pins_RADDS.h | 2 +- Marlin/src/pins/sam/pins_RAMPS_DUO.h | 2 +- Marlin/src/pins/sam/pins_RAMPS_FD_V1.h | 4 +- Marlin/src/pins/sam/pins_RURAMPS4D_11.h | 4 +- Marlin/src/pins/sam/pins_RURAMPS4D_13.h | 4 +- .../src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h | 10 +- Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h | 10 +- Marlin/src/pins/samd/pins_MINITRONICS20.h | 10 +- Marlin/src/pins/samd/pins_RAMPS_144.h | 10 +- .../pins/sanguino/pins_MELZI_CREALITY_E2.h | 2 +- Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h | 2 +- .../src/pins/sanguino/pins_SANGUINOLOLU_11.h | 4 +- Marlin/src/pins/sanguino/pins_ZMIB_V2.h | 10 +- Marlin/src/pins/sensitive_pins.h | 2 +- Marlin/src/pins/stm32f1/pins_BEAST.h | 2 +- Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h | 8 +- .../stm32f1/pins_BTT_SKR_MINI_E3_common.h | 8 +- .../src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h | 6 +- .../src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h | 2 +- Marlin/src/pins/stm32f1/pins_CHITU3D.h | 4 +- .../pins/stm32f1/pins_CREALITY_V24S1_301.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V4.h | 4 +- Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V521.h | 2 +- .../src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h | 8 +- Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h | 2 +- Marlin/src/pins/stm32f1/pins_FLY_MINI.h | 2 +- Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h | 2 +- Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h | 4 +- Marlin/src/pins/stm32f1/pins_GTM32_MINI.h | 2 +- Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h | 2 +- Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h | 2 +- Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h | 2 +- .../pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h | 4 +- .../pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h | 2 +- .../pins/stm32f1/pins_MKS_ROBIN_E3_common.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h | 2 +- .../src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h | 2 +- .../pins/stm32f1/pins_MKS_ROBIN_NANO_common.h | 2 +- Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h | 6 +- Marlin/src/pins/stm32f1/pins_STM32F1R.h | 2 +- Marlin/src/pins/stm32f1/pins_STM3R_MINI.h | 2 +- Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h | 2 +- Marlin/src/pins/stm32f4/pins_ARMED.h | 2 +- Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h | 4 +- .../src/pins/stm32f4/pins_BTT_BTT002_V1_0.h | 2 +- Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h | 6 +- Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h | 2 +- .../pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h | 4 +- .../stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h | 8 +- .../pins/stm32f4/pins_BTT_SKR_PRO_common.h | 6 +- .../pins/stm32f4/pins_BTT_SKR_V2_0_common.h | 6 +- .../pins/stm32f4/pins_FYSETC_CHEETAH_V20.h | 4 +- Marlin/src/pins/stm32f4/pins_FYSETC_S6.h | 2 +- Marlin/src/pins/stm32f4/pins_I3DBEEZ9.h | 6 +- .../pins/stm32f4/pins_MKS_MONSTER8_common.h | 2 +- .../stm32f4/pins_MKS_ROBIN_NANO_V3_common.h | 2 +- Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h | 2 +- .../src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h | 4 +- Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h | 2 +- .../pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h | 6 +- .../pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h | 4 +- .../pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h | 4 +- .../pins/stm32g0/pins_BTT_MANTA_M8P_common.h | 4 +- .../pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h | 8 +- .../pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h | 4 +- .../pins/stm32h7/pins_BTT_SKR_V3_0_common.h | 8 +- Marlin/src/pins/teensy2/pins_PRINTRBOARD.h | 2 +- .../src/pins/teensy2/pins_PRINTRBOARD_REVF.h | 2 +- Marlin/src/pins/teensy2/pins_SAV_MKI.h | 2 +- Marlin/src/sd/Sd2Card.h | 2 +- Marlin/src/sd/cardreader.cpp | 8 +- Marlin/src/sd/cardreader.h | 2 +- .../sd/usb_flashdrive/Sd2Card_FlashDrive.h | 2 +- .../PlatformIO/scripts/common-dependencies.h | 6 +- 305 files changed, 946 insertions(+), 952 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 61377189a8..b905b24688 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -266,7 +266,7 @@ */ //#define MAGNETIC_PARKING_EXTRUDER -#if EITHER(PARKING_EXTRUDER, MAGNETIC_PARKING_EXTRUDER) +#if ANY(PARKING_EXTRUDER, MAGNETIC_PARKING_EXTRUDER) #define PARKING_EXTRUDER_PARKING_X { -78, 184 } // X positions for parking the extruders #define PARKING_EXTRUDER_GRAB_DISTANCE 1 // (mm) Distance to move beyond the parking point to grab the extruder @@ -419,7 +419,7 @@ #define POWER_TIMEOUT 30 // (s) Turn off power if the machine is idle for this duration //#define POWER_OFF_DELAY 60 // (s) Delay of poweroff after M81 command. Useful to let fans run for extra time. #endif - #if EITHER(AUTO_POWER_CONTROL, POWER_OFF_WAIT_FOR_COOLDOWN) + #if ANY(AUTO_POWER_CONTROL, POWER_OFF_WAIT_FOR_COOLDOWN) //#define AUTO_POWER_E_TEMP 50 // (°C) PSU on if any extruder is over this temperature //#define AUTO_POWER_CHAMBER_TEMP 30 // (°C) PSU on if the chamber is over this temperature //#define AUTO_POWER_COOLER_TEMP 26 // (°C) PSU on if the cooler is over this temperature @@ -921,7 +921,7 @@ #define DELTA_CALIBRATION_DEFAULT_POINTS 4 #endif - #if EITHER(DELTA_AUTO_CALIBRATION, DELTA_CALIBRATION_MENU) + #if ANY(DELTA_AUTO_CALIBRATION, DELTA_CALIBRATION_MENU) // Step size for paper-test probing #define PROBE_MANUALLY_STEP 0.05 // (mm) #endif @@ -965,7 +965,7 @@ */ //#define MORGAN_SCARA //#define MP_SCARA -#if EITHER(MORGAN_SCARA, MP_SCARA) +#if ANY(MORGAN_SCARA, MP_SCARA) // If movement is choppy try lowering this value #define DEFAULT_SEGMENTS_PER_SECOND 200 @@ -1809,7 +1809,7 @@ #define MAX_SOFTWARE_ENDSTOP_W #endif -#if EITHER(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS) +#if ANY(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS) //#define SOFT_ENDSTOPS_MENU_ITEM // Enable/Disable software endstops from the LCD #endif @@ -2046,7 +2046,7 @@ #endif -#if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR) +#if ANY(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR) // Set the number of grid points per dimension. #define GRID_MAX_POINTS_X 3 @@ -3340,7 +3340,7 @@ //#define TOUCH_OFFSET_Y 257 //#define TOUCH_ORIENTATION TOUCH_LANDSCAPE - #if BOTH(TOUCH_SCREEN_CALIBRATION, EEPROM_SETTINGS) + #if ALL(TOUCH_SCREEN_CALIBRATION, EEPROM_SETTINGS) #define TOUCH_CALIBRATION_AUTO_SAVE // Auto save successful calibration values to EEPROM #endif @@ -3437,7 +3437,7 @@ //#define RGB_LED //#define RGBW_LED -#if EITHER(RGB_LED, RGBW_LED) +#if ANY(RGB_LED, RGBW_LED) //#define RGB_LED_R_PIN 34 //#define RGB_LED_G_PIN 43 //#define RGB_LED_B_PIN 35 diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index a635e4a302..eee111a541 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -310,7 +310,7 @@ //#define ADAPTIVE_FAN_SLOWING // Slow down the part-cooling fan if the temperature drops #if ENABLED(ADAPTIVE_FAN_SLOWING) //#define REPORT_ADAPTIVE_FAN_SLOWING // Report fan slowing activity to the console - #if EITHER(MPCTEMP, PIDTEMP) + #if ANY(MPCTEMP, PIDTEMP) //#define TEMP_TUNING_MAINTAIN_FAN // Don't slow down the fan speed during M303 or M306 T #endif #endif @@ -759,10 +759,10 @@ #if ENABLED(NEOPIXEL_LED) //#define CASE_LIGHT_USE_NEOPIXEL // Use NeoPixel LED as case light #endif - #if EITHER(RGB_LED, RGBW_LED) + #if ANY(RGB_LED, RGBW_LED) //#define CASE_LIGHT_USE_RGB_LED // Use RGB / RGBW LED as case light #endif - #if EITHER(CASE_LIGHT_USE_NEOPIXEL, CASE_LIGHT_USE_RGB_LED) + #if ANY(CASE_LIGHT_USE_NEOPIXEL, CASE_LIGHT_USE_RGB_LED) #define CASE_LIGHT_DEFAULT_COLOR { 255, 255, 255, 255 } // { Red, Green, Blue, White } #endif #endif @@ -1175,7 +1175,7 @@ */ //#define INPUT_SHAPING_X //#define INPUT_SHAPING_Y -#if EITHER(INPUT_SHAPING_X, INPUT_SHAPING_Y) +#if ANY(INPUT_SHAPING_X, INPUT_SHAPING_Y) #if ENABLED(INPUT_SHAPING_X) #define SHAPING_FREQ_X 40 // (Hz) The default dominant resonant frequency on the X axis. #define SHAPING_ZETA_X 0.15f // Damping ratio of the X axis (range: 0.0 = no damping to 1.0 = critical damping). @@ -1417,7 +1417,7 @@ */ //#define DIGIPOT_MCP4018 // Requires https://github.com/felias-fogg/SlowSoftI2CMaster //#define DIGIPOT_MCP4451 -#if EITHER(DIGIPOT_MCP4018, DIGIPOT_MCP4451) +#if ANY(DIGIPOT_MCP4018, DIGIPOT_MCP4451) #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT:4 AZTEEG_X3_PRO:8 MKS_SBASE:5 MIGHTYBOARD_REVE:5 // Actual motor currents in Amps. The number of entries must match DIGIPOT_I2C_NUM_CHANNELS. @@ -1474,7 +1474,7 @@ // //#define LCD_BACKLIGHT_TIMEOUT_MINS 1 // (minutes) Timeout before turning off the backlight -#if HAS_BED_PROBE && EITHER(HAS_MARLINUI_MENU, HAS_TFT_LVGL_UI) +#if HAS_BED_PROBE && ANY(HAS_MARLINUI_MENU, HAS_TFT_LVGL_UI) //#define PROBE_OFFSET_WIZARD // Add a Probe Z Offset calibration option to the LCD menu #if ENABLED(PROBE_OFFSET_WIZARD) /** @@ -1544,13 +1544,13 @@ #define SHOW_BOOTSCREEN // Show the Marlin bootscreen on startup. ** ENABLE FOR PRODUCTION ** #if ENABLED(SHOW_BOOTSCREEN) #define BOOTSCREEN_TIMEOUT 3000 // (ms) Total Duration to display the boot screen(s) - #if EITHER(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI) + #if ANY(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI) #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) #endif #if HAS_MARLINUI_U8GLIB //#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash. #endif - #if EITHER(HAS_MARLINUI_U8GLIB, TOUCH_UI_FTDI_EVE) + #if ANY(HAS_MARLINUI_U8GLIB, TOUCH_UI_FTDI_EVE) //#define SHOW_CUSTOM_BOOTSCREEN // Show the bitmap in Marlin/_Bootscreen.h on startup. #endif #endif @@ -1615,13 +1615,13 @@ #define SET_REMAINING_TIME // Add 'R' parameter to set remaining time //#define SET_INTERACTION_TIME // Add 'C' parameter to set time until next filament change or other user interaction //#define M73_REPORT // Report M73 values to host - #if BOTH(M73_REPORT, HAS_MEDIA) + #if ALL(M73_REPORT, HAS_MEDIA) #define M73_REPORT_SD_ONLY // Report only when printing from SD #endif #endif // LCD Print Progress options. Multiple times may be displayed in turn. -#if HAS_DISPLAY && EITHER(HAS_MEDIA, SET_PROGRESS_MANUALLY) +#if HAS_DISPLAY && ANY(HAS_MEDIA, SET_PROGRESS_MANUALLY) #define SHOW_PROGRESS_PERCENT // Show print progress percentage (doesn't affect progress bar) #define SHOW_ELAPSED_TIME // Display elapsed printing time (prefix 'E') //#define SHOW_REMAINING_TIME // Display estimated time to completion (prefix 'R') @@ -1630,7 +1630,7 @@ #endif //#define PRINT_PROGRESS_SHOW_DECIMALS // Show/report progress with decimal digits, not all UIs support this - #if EITHER(HAS_MARLINUI_HD44780, IS_TFTGLCD_PANEL) + #if ANY(HAS_MARLINUI_HD44780, IS_TFTGLCD_PANEL) //#define LCD_PROGRESS_BAR // Show a progress bar on HD44780 LCDs for SD printing #if ENABLED(LCD_PROGRESS_BAR) #define PROGRESS_BAR_BAR_TIME 2000 // (ms) Amount of time to show the bar @@ -2302,7 +2302,7 @@ //#define PROBING_MARGIN_BACK PROBING_MARGIN #endif -#if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL) +#if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL) // Override the mesh area if the automatic (max) area is too large //#define MESH_MIN_X MESH_INSET //#define MESH_MIN_Y MESH_INSET @@ -2310,7 +2310,7 @@ //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET) #endif -#if BOTH(AUTO_BED_LEVELING_UBL, EEPROM_SETTINGS) +#if ALL(AUTO_BED_LEVELING_UBL, EEPROM_SETTINGS) //#define OPTIMIZED_MESH_STORAGE // Store mesh with less precision to save EEPROM space #endif @@ -2380,7 +2380,7 @@ #endif // G76 options - #if BOTH(PTC_PROBE, PTC_BED) + #if ALL(PTC_PROBE, PTC_BED) // Park position to wait for probe cooldown #define PTC_PARK_POS { 0, 0, 100 } @@ -2422,7 +2422,7 @@ // G5 Bézier Curve Support with XYZE destination and IJPQ offsets //#define BEZIER_CURVE_SUPPORT // Requires ~2666 bytes -#if EITHER(ARC_SUPPORT, BEZIER_CURVE_SUPPORT) +#if ANY(ARC_SUPPORT, BEZIER_CURVE_SUPPORT) //#define CNC_WORKSPACE_PLANES // Allow G2/G3/G5 to operate in XY, ZX, or YZ planes #endif @@ -2508,7 +2508,7 @@ // The number of linear moves that can be in the planner at once. // The value of BLOCK_BUFFER_SIZE must be a power of 2 (e.g., 8, 16, 32) -#if BOTH(HAS_MEDIA, DIRECT_STEPPING) +#if ALL(HAS_MEDIA, DIRECT_STEPPING) #define BLOCK_BUFFER_SIZE 8 #elif HAS_MEDIA #define BLOCK_BUFFER_SIZE 16 @@ -3290,7 +3290,7 @@ */ //#define SENSORLESS_HOMING // StallGuard capable drivers only - #if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING) + #if ANY(SENSORLESS_HOMING, SENSORLESS_PROBING) // TMC2209: 0...255. TMC2130: -64...63 #define X_STALL_SENSITIVITY 8 #define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY @@ -3453,7 +3453,7 @@ */ //#define SPINDLE_FEATURE //#define LASER_FEATURE -#if EITHER(SPINDLE_FEATURE, LASER_FEATURE) +#if ANY(SPINDLE_FEATURE, LASER_FEATURE) #define SPINDLE_LASER_ACTIVE_STATE LOW // Set to "HIGH" if SPINDLE_LASER_ENA_PIN is active HIGH #define SPINDLE_LASER_USE_PWM // Enable if your controller supports setting the speed/power @@ -4205,7 +4205,7 @@ //#define WIFISUPPORT // Marlin embedded WiFi management //#define ESP3D_WIFISUPPORT // ESP3D Library WiFi management (https://github.com/luc-github/ESP3DLib) -#if EITHER(WIFISUPPORT, ESP3D_WIFISUPPORT) +#if ANY(WIFISUPPORT, ESP3D_WIFISUPPORT) //#define WEBSUPPORT // Start a webserver (which may include auto-discovery) //#define OTASUPPORT // Support over-the-air firmware updates //#define WIFI_CUSTOM_COMMAND // Accept feature config commands (e.g., WiFi ESP3D) from the host diff --git a/Marlin/src/HAL/AVR/MarlinSerial.h b/Marlin/src/HAL/AVR/MarlinSerial.h index 7dd208e54e..f47541f12d 100644 --- a/Marlin/src/HAL/AVR/MarlinSerial.h +++ b/Marlin/src/HAL/AVR/MarlinSerial.h @@ -280,7 +280,7 @@ static constexpr bool DROPPED_RX = false; static constexpr bool RX_FRAMING_ERRORS = false; static constexpr bool MAX_RX_QUEUED = false; - static constexpr bool RX_OVERRUNS = BOTH(HAS_DGUS_LCD, SERIAL_STATS_RX_BUFFER_OVERRUNS); + static constexpr bool RX_OVERRUNS = ALL(HAS_DGUS_LCD, SERIAL_STATS_RX_BUFFER_OVERRUNS); }; typedef Serial1Class< MarlinSerial< LCDSerialCfg > > MSerialLCD; diff --git a/Marlin/src/HAL/AVR/eeprom.cpp b/Marlin/src/HAL/AVR/eeprom.cpp index 8d084dec7f..6465e47025 100644 --- a/Marlin/src/HAL/AVR/eeprom.cpp +++ b/Marlin/src/HAL/AVR/eeprom.cpp @@ -23,7 +23,7 @@ #include "../../inc/MarlinConfig.h" -#if EITHER(EEPROM_SETTINGS, SD_FIRMWARE_UPDATE) +#if ANY(EEPROM_SETTINGS, SD_FIRMWARE_UPDATE) /** * PersistentStore for Arduino-style EEPROM interface diff --git a/Marlin/src/HAL/AVR/inc/SanityCheck.h b/Marlin/src/HAL/AVR/inc/SanityCheck.h index 665e68043a..6a7e172889 100644 --- a/Marlin/src/HAL/AVR/inc/SanityCheck.h +++ b/Marlin/src/HAL/AVR/inc/SanityCheck.h @@ -95,11 +95,11 @@ /** * The Trinamic library includes SoftwareSerial.h, leading to a compile error. */ -#if BOTH(HAS_TRINAMIC_CONFIG, ENDSTOP_INTERRUPTS_FEATURE) +#if ALL(HAS_TRINAMIC_CONFIG, ENDSTOP_INTERRUPTS_FEATURE) #error "TMCStepper includes SoftwareSerial.h which is incompatible with ENDSTOP_INTERRUPTS_FEATURE. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif -#if BOTH(HAS_TMC_SW_SERIAL, MONITOR_DRIVER_STATUS) +#if ALL(HAS_TMC_SW_SERIAL, MONITOR_DRIVER_STATUS) #error "MONITOR_DRIVER_STATUS causes performance issues when used with SoftwareSerial-connected drivers. Disable MONITOR_DRIVER_STATUS or use hardware serial to continue." #endif diff --git a/Marlin/src/HAL/DUE/HAL_SPI.cpp b/Marlin/src/HAL/DUE/HAL_SPI.cpp index f5bcaacee5..63ebf164f2 100644 --- a/Marlin/src/HAL/DUE/HAL_SPI.cpp +++ b/Marlin/src/HAL/DUE/HAL_SPI.cpp @@ -42,7 +42,7 @@ // Public functions // ------------------------ -#if EITHER(DUE_SOFTWARE_SPI, FORCE_SOFT_SPI) +#if ANY(DUE_SOFTWARE_SPI, FORCE_SOFT_SPI) // ------------------------ // Software SPI diff --git a/Marlin/src/HAL/DUE/inc/Conditionals_post.h b/Marlin/src/HAL/DUE/inc/Conditionals_post.h index ce6d3fdde2..295596b78b 100644 --- a/Marlin/src/HAL/DUE/inc/Conditionals_post.h +++ b/Marlin/src/HAL/DUE/inc/Conditionals_post.h @@ -23,6 +23,6 @@ #if USE_FALLBACK_EEPROM #define FLASH_EEPROM_EMULATION -#elif EITHER(I2C_EEPROM, SPI_EEPROM) +#elif ANY(I2C_EEPROM, SPI_EEPROM) #define USE_SHARED_EEPROM 1 #endif diff --git a/Marlin/src/HAL/ESP32/HAL.cpp b/Marlin/src/HAL/ESP32/HAL.cpp index 46dd4e761b..27f6516f9a 100644 --- a/Marlin/src/HAL/ESP32/HAL.cpp +++ b/Marlin/src/HAL/ESP32/HAL.cpp @@ -165,7 +165,7 @@ void MarlinHAL::init_board() { } void MarlinHAL::idletask() { - #if BOTH(WIFISUPPORT, OTASUPPORT) + #if ALL(WIFISUPPORT, OTASUPPORT) OTA_handle(); #endif TERN_(ESP3D_WIFISUPPORT, esp3dlib.idletask()); diff --git a/Marlin/src/HAL/ESP32/inc/SanityCheck.h b/Marlin/src/HAL/ESP32/inc/SanityCheck.h index 910918b9ea..e6c364a6fe 100644 --- a/Marlin/src/HAL/ESP32/inc/SanityCheck.h +++ b/Marlin/src/HAL/ESP32/inc/SanityCheck.h @@ -40,7 +40,7 @@ #error "TMC220x Software Serial is not supported on ESP32." #endif -#if BOTH(WIFISUPPORT, ESP3D_WIFISUPPORT) +#if ALL(WIFISUPPORT, ESP3D_WIFISUPPORT) #error "Only enable one WiFi option, either WIFISUPPORT or ESP3D_WIFISUPPORT." #endif @@ -52,7 +52,7 @@ #error "FAST_PWM_FAN is not available on TinyBee." #endif -#if BOTH(I2S_STEPPER_STREAM, BABYSTEPPING) && DISABLED(INTEGRATED_BABYSTEPPING) +#if ALL(I2S_STEPPER_STREAM, BABYSTEPPING) && DISABLED(INTEGRATED_BABYSTEPPING) #error "BABYSTEPPING on I2S stream requires INTEGRATED_BABYSTEPPING." #endif @@ -60,10 +60,10 @@ #error "PULLDOWN pin mode is not available on ESP32 boards." #endif -#if BOTH(I2S_STEPPER_STREAM, LIN_ADVANCE) && DISABLED(EXPERIMENTAL_I2S_LA) +#if ALL(I2S_STEPPER_STREAM, LIN_ADVANCE) && DISABLED(EXPERIMENTAL_I2S_LA) #error "I2S stream is currently incompatible with LIN_ADVANCE." #endif -#if BOTH(I2S_STEPPER_STREAM, PRINTCOUNTER) && PRINTCOUNTER_SAVE_INTERVAL > 0 && DISABLED(PRINTCOUNTER_SYNC) +#if ALL(I2S_STEPPER_STREAM, PRINTCOUNTER) && PRINTCOUNTER_SAVE_INTERVAL > 0 && DISABLED(PRINTCOUNTER_SYNC) #error "PRINTCOUNTER_SAVE_INTERVAL may cause issues on ESP32 with an I2S expander. Define PRINTCOUNTER_SYNC in Configuration.h for an imperfect solution." #endif diff --git a/Marlin/src/HAL/ESP32/ota.cpp b/Marlin/src/HAL/ESP32/ota.cpp index f31a78c2c5..c5c3082c30 100644 --- a/Marlin/src/HAL/ESP32/ota.cpp +++ b/Marlin/src/HAL/ESP32/ota.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(WIFISUPPORT, OTASUPPORT) +#if ALL(WIFISUPPORT, OTASUPPORT) #include #include diff --git a/Marlin/src/HAL/ESP32/spiffs.cpp b/Marlin/src/HAL/ESP32/spiffs.cpp index a0e713bff0..043ad7849a 100644 --- a/Marlin/src/HAL/ESP32/spiffs.cpp +++ b/Marlin/src/HAL/ESP32/spiffs.cpp @@ -23,7 +23,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(WIFISUPPORT, WEBSUPPORT) +#if ALL(WIFISUPPORT, WEBSUPPORT) #include "../../core/serial.h" diff --git a/Marlin/src/HAL/ESP32/u8g_esp32_spi.cpp b/Marlin/src/HAL/ESP32/u8g_esp32_spi.cpp index 955c751e48..012604dbfb 100644 --- a/Marlin/src/HAL/ESP32/u8g_esp32_spi.cpp +++ b/Marlin/src/HAL/ESP32/u8g_esp32_spi.cpp @@ -25,7 +25,7 @@ #include "../../inc/MarlinConfig.h" -#if EITHER(MKS_MINI_12864, FYSETC_MINI_12864_2_1) +#if ANY(MKS_MINI_12864, FYSETC_MINI_12864_2_1) #include #include "../shared/HAL_SPI.h" @@ -101,6 +101,6 @@ uint8_t u8g_eps_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_pt return 1; } -#endif // EITHER(MKS_MINI_12864, FYSETC_MINI_12864_2_1) +#endif // MKS_MINI_12864 || FYSETC_MINI_12864_2_1 #endif // ARDUINO_ARCH_ESP32 diff --git a/Marlin/src/HAL/ESP32/web.cpp b/Marlin/src/HAL/ESP32/web.cpp index 7a27707a3e..63a101595f 100644 --- a/Marlin/src/HAL/ESP32/web.cpp +++ b/Marlin/src/HAL/ESP32/web.cpp @@ -23,7 +23,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(WIFISUPPORT, WEBSUPPORT) +#if ALL(WIFISUPPORT, WEBSUPPORT) #include "../../inc/MarlinConfig.h" diff --git a/Marlin/src/HAL/LINUX/spi_pins.h b/Marlin/src/HAL/LINUX/spi_pins.h index f09d1decb8..7bd2498be7 100644 --- a/Marlin/src/HAL/LINUX/spi_pins.h +++ b/Marlin/src/HAL/LINUX/spi_pins.h @@ -24,7 +24,7 @@ #include "../../core/macros.h" #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_U8GLIB, HAS_MEDIA) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) +#if ALL(HAS_MARLINUI_U8GLIB, HAS_MEDIA) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) #define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently // needed due to the speed and mode required for communicating with each device being different. // This requirement can be removed if the SPI access to these devices is updated to use diff --git a/Marlin/src/HAL/LPC1768/inc/Conditionals_post.h b/Marlin/src/HAL/LPC1768/inc/Conditionals_post.h index a0bf421538..0b03cb2aea 100644 --- a/Marlin/src/HAL/LPC1768/inc/Conditionals_post.h +++ b/Marlin/src/HAL/LPC1768/inc/Conditionals_post.h @@ -23,7 +23,7 @@ #if USE_FALLBACK_EEPROM #define FLASH_EEPROM_EMULATION -#elif EITHER(I2C_EEPROM, SPI_EEPROM) +#elif ANY(I2C_EEPROM, SPI_EEPROM) #define USE_SHARED_EEPROM 1 #endif diff --git a/Marlin/src/HAL/LPC1768/spi_pins.h b/Marlin/src/HAL/LPC1768/spi_pins.h index 33a5b369ad..babe8a11d7 100644 --- a/Marlin/src/HAL/LPC1768/spi_pins.h +++ b/Marlin/src/HAL/LPC1768/spi_pins.h @@ -23,7 +23,7 @@ #include "../../core/macros.h" -#if BOTH(HAS_MEDIA, HAS_MARLINUI_U8GLIB) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) +#if ALL(HAS_MEDIA, HAS_MARLINUI_U8GLIB) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) #define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently // needed due to the speed and mode required for communicating with each device being different. // This requirement can be removed if the SPI access to these devices is updated to use diff --git a/Marlin/src/HAL/LPC1768/u8g/u8g_com_HAL_LPC1768_sw_spi.cpp b/Marlin/src/HAL/LPC1768/u8g/u8g_com_HAL_LPC1768_sw_spi.cpp index f116a9b80a..785b4ef5c4 100644 --- a/Marlin/src/HAL/LPC1768/u8g/u8g_com_HAL_LPC1768_sw_spi.cpp +++ b/Marlin/src/HAL/LPC1768/u8g/u8g_com_HAL_LPC1768_sw_spi.cpp @@ -132,7 +132,7 @@ uint8_t swSpiTransfer_mode_3(uint8_t b, const uint8_t spi_speed, const pin_t sck static uint8_t SPI_speed = 0; static void u8g_sw_spi_HAL_LPC1768_shift_out(uint8_t dataPin, uint8_t clockPin, uint8_t val) { - #if EITHER(FYSETC_MINI_12864, MKS_MINI_12864) + #if ANY(FYSETC_MINI_12864, MKS_MINI_12864) swSpiTransfer_mode_3(val, SPI_speed, clockPin, -1, dataPin); #else swSpiTransfer_mode_0(val, SPI_speed, clockPin, -1, dataPin); @@ -160,10 +160,10 @@ uint8_t u8g_com_HAL_LPC1768_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, break; case U8G_COM_MSG_CHIP_SELECT: - #if EITHER(FYSETC_MINI_12864, MKS_MINI_12864) // LCD SPI is running mode 3 while SD card is running mode 0 - if (arg_val) { // SCK idle state needs to be set to the proper idle state before - // the next chip select goes active - u8g_SetPILevel(u8g, U8G_PI_SCK, 1); // Set SCK to mode 3 idle state before CS goes active + #if ANY(FYSETC_MINI_12864, MKS_MINI_12864) // LCD SPI is running mode 3 while SD card is running mode 0 + if (arg_val) { // SCK idle state needs to be set to the proper idle state before + // the next chip select goes active + u8g_SetPILevel(u8g, U8G_PI_SCK, 1); // Set SCK to mode 3 idle state before CS goes active u8g_SetPILevel(u8g, U8G_PI_CS, LOW); } else { diff --git a/Marlin/src/HAL/NATIVE_SIM/spi_pins.h b/Marlin/src/HAL/NATIVE_SIM/spi_pins.h index 02fb359238..9b1bae9a58 100644 --- a/Marlin/src/HAL/NATIVE_SIM/spi_pins.h +++ b/Marlin/src/HAL/NATIVE_SIM/spi_pins.h @@ -24,7 +24,7 @@ #include "../../core/macros.h" #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_U8GLIB, HAS_MEDIA) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) +#if ALL(HAS_MARLINUI_U8GLIB, HAS_MEDIA) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_EN == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN) #define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently // needed due to the speed and mode required for communicating with each device being different. // This requirement can be removed if the SPI access to these devices is updated to use diff --git a/Marlin/src/HAL/NATIVE_SIM/u8g/u8g_com_sw_spi.cpp b/Marlin/src/HAL/NATIVE_SIM/u8g/u8g_com_sw_spi.cpp index 7be84580b1..5187a49583 100644 --- a/Marlin/src/HAL/NATIVE_SIM/u8g/u8g_com_sw_spi.cpp +++ b/Marlin/src/HAL/NATIVE_SIM/u8g/u8g_com_sw_spi.cpp @@ -131,7 +131,7 @@ static uint8_t swSpiInit(const uint8_t spi_speed, const uint8_t clk_pin, const u } static void u8g_sw_spi_shift_out(uint8_t dataPin, uint8_t clockPin, uint8_t val) { - #if EITHER(FYSETC_MINI_12864, MKS_MINI_12864) + #if ANY(FYSETC_MINI_12864, MKS_MINI_12864) swSpiTransfer_mode_3(val, SPI_speed, clockPin, -1, dataPin); #else swSpiTransfer_mode_0(val, SPI_speed, clockPin, -1, dataPin); @@ -159,10 +159,10 @@ uint8_t u8g_com_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_pt break; case U8G_COM_MSG_CHIP_SELECT: - #if EITHER(FYSETC_MINI_12864, MKS_MINI_12864) // LCD SPI is running mode 3 while SD card is running mode 0 - if (arg_val) { // SCK idle state needs to be set to the proper idle state before - // the next chip select goes active - u8g_SetPILevel(u8g, U8G_PI_SCK, 1); // Set SCK to mode 3 idle state before CS goes active + #if ANY(FYSETC_MINI_12864, MKS_MINI_12864) // LCD SPI is running mode 3 while SD card is running mode 0 + if (arg_val) { // SCK idle state needs to be set to the proper idle state before + // the next chip select goes active + u8g_SetPILevel(u8g, U8G_PI_SCK, 1); // Set SCK to mode 3 idle state before CS goes active u8g_SetPILevel(u8g, U8G_PI_CS, LOW); } else { diff --git a/Marlin/src/HAL/SAMD21/HAL_SPI.cpp b/Marlin/src/HAL/SAMD21/HAL_SPI.cpp index 69c6a43af8..e01f540cf8 100644 --- a/Marlin/src/HAL/SAMD21/HAL_SPI.cpp +++ b/Marlin/src/HAL/SAMD21/HAL_SPI.cpp @@ -45,7 +45,7 @@ // Public functions // -------------------------------------------------------------------------- -#if EITHER(SOFTWARE_SPI, FORCE_SOFT_SPI) +#if ANY(SOFTWARE_SPI, FORCE_SOFT_SPI) // ------------------------ // Software SPI diff --git a/Marlin/src/HAL/SAMD21/inc/Conditionals_post.h b/Marlin/src/HAL/SAMD21/inc/Conditionals_post.h index 7315dc12a7..87d3350c94 100644 --- a/Marlin/src/HAL/SAMD21/inc/Conditionals_post.h +++ b/Marlin/src/HAL/SAMD21/inc/Conditionals_post.h @@ -28,6 +28,6 @@ #if USE_FALLBACK_EEPROM #define FLASH_EEPROM_EMULATION -#elif EITHER(I2C_EEPROM, SPI_EEPROM) +#elif ANY(I2C_EEPROM, SPI_EEPROM) #define USE_SHARED_EEPROM 1 #endif diff --git a/Marlin/src/HAL/SAMD51/HAL_SPI.cpp b/Marlin/src/HAL/SAMD51/HAL_SPI.cpp index 58fdfe9499..63d3971965 100644 --- a/Marlin/src/HAL/SAMD51/HAL_SPI.cpp +++ b/Marlin/src/HAL/SAMD51/HAL_SPI.cpp @@ -44,7 +44,7 @@ // Public functions // -------------------------------------------------------------------------- -#if EITHER(SOFTWARE_SPI, FORCE_SOFT_SPI) +#if ANY(SOFTWARE_SPI, FORCE_SOFT_SPI) // ------------------------ // Software SPI diff --git a/Marlin/src/HAL/SAMD51/inc/Conditionals_post.h b/Marlin/src/HAL/SAMD51/inc/Conditionals_post.h index ce6d3fdde2..295596b78b 100644 --- a/Marlin/src/HAL/SAMD51/inc/Conditionals_post.h +++ b/Marlin/src/HAL/SAMD51/inc/Conditionals_post.h @@ -23,6 +23,6 @@ #if USE_FALLBACK_EEPROM #define FLASH_EEPROM_EMULATION -#elif EITHER(I2C_EEPROM, SPI_EEPROM) +#elif ANY(I2C_EEPROM, SPI_EEPROM) #define USE_SHARED_EEPROM 1 #endif diff --git a/Marlin/src/HAL/STM32/inc/Conditionals_adv.h b/Marlin/src/HAL/STM32/inc/Conditionals_adv.h index ee8c49e4e0..032716a294 100644 --- a/Marlin/src/HAL/STM32/inc/Conditionals_adv.h +++ b/Marlin/src/HAL/STM32/inc/Conditionals_adv.h @@ -21,7 +21,7 @@ */ #pragma once -#if BOTH(HAS_MEDIA, USBD_USE_CDC_MSC) && DISABLED(NO_SD_HOST_DRIVE) +#if ALL(HAS_MEDIA, USBD_USE_CDC_MSC) && DISABLED(NO_SD_HOST_DRIVE) #define HAS_SD_HOST_DRIVE 1 #endif diff --git a/Marlin/src/HAL/STM32/inc/Conditionals_post.h b/Marlin/src/HAL/STM32/inc/Conditionals_post.h index 83ce077c75..6c97a635b3 100644 --- a/Marlin/src/HAL/STM32/inc/Conditionals_post.h +++ b/Marlin/src/HAL/STM32/inc/Conditionals_post.h @@ -24,7 +24,7 @@ // If no real or emulated EEPROM selected, fall back to SD emulation #if USE_FALLBACK_EEPROM #define SDCARD_EEPROM_EMULATION -#elif EITHER(I2C_EEPROM, SPI_EEPROM) +#elif ANY(I2C_EEPROM, SPI_EEPROM) #define USE_SHARED_EEPROM 1 #endif diff --git a/Marlin/src/HAL/STM32/timers.cpp b/Marlin/src/HAL/STM32/timers.cpp index e68b59c46f..27ced33db2 100644 --- a/Marlin/src/HAL/STM32/timers.cpp +++ b/Marlin/src/HAL/STM32/timers.cpp @@ -292,9 +292,9 @@ static constexpr int get_timer_num_from_base_address(uintptr_t base_address) { // constexpr doesn't like using the base address pointers that timers evaluate to. // We can get away with casting them to uintptr_t, if we do so inside an array. // GCC will not currently do it directly to a uintptr_t. -IF_ENABLED(HAS_TMC_SW_SERIAL, static constexpr uintptr_t timer_serial[] = {uintptr_t(TIMER_SERIAL)}); -IF_ENABLED(SPEAKER, static constexpr uintptr_t timer_tone[] = {uintptr_t(TIMER_TONE)}); -IF_ENABLED(HAS_SERVOS, static constexpr uintptr_t timer_servo[] = {uintptr_t(TIMER_SERVO)}); +TERN_(HAS_TMC_SW_SERIAL, static constexpr uintptr_t timer_serial[] = {uintptr_t(TIMER_SERIAL)}); +TERN_(SPEAKER, static constexpr uintptr_t timer_tone[] = {uintptr_t(TIMER_TONE)}); +TERN_(HAS_SERVOS, static constexpr uintptr_t timer_servo[] = {uintptr_t(TIMER_SERVO)}); enum TimerPurpose { TP_SERIAL, TP_TONE, TP_SERVO, TP_STEP, TP_TEMP }; diff --git a/Marlin/src/HAL/STM32/usb_host.cpp b/Marlin/src/HAL/STM32/usb_host.cpp index f378467004..afafe1d4f3 100644 --- a/Marlin/src/HAL/STM32/usb_host.cpp +++ b/Marlin/src/HAL/STM32/usb_host.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfig.h" -#if BOTH(USE_OTG_USB_HOST, USBHOST) +#if ALL(USE_OTG_USB_HOST, USBHOST) #include "usb_host.h" #include "../shared/Marduino.h" diff --git a/Marlin/src/HAL/STM32F1/HAL.cpp b/Marlin/src/HAL/STM32F1/HAL.cpp index a0cdda3b4f..373116ba39 100644 --- a/Marlin/src/HAL/STM32F1/HAL.cpp +++ b/Marlin/src/HAL/STM32F1/HAL.cpp @@ -224,7 +224,7 @@ void MarlinHAL::init() { #endif #if HAS_SD_HOST_DRIVE MSC_SD_init(); - #elif BOTH(SERIAL_USB, EMERGENCY_PARSER) + #elif ALL(SERIAL_USB, EMERGENCY_PARSER) usb_cdcacm_set_hooks(USB_CDCACM_HOOK_RX, my_rx_callback); #endif #if PIN_EXISTS(USB_CONNECT) diff --git a/Marlin/src/HAL/STM32F1/HAL.h b/Marlin/src/HAL/STM32F1/HAL.h index 8ed525bfb7..b5f4d6fe8b 100644 --- a/Marlin/src/HAL/STM32F1/HAL.h +++ b/Marlin/src/HAL/STM32F1/HAL.h @@ -82,7 +82,7 @@ #define _MSERIAL(X) MSerial##X #define MSERIAL(X) _MSERIAL(X) -#if EITHER(STM32_HIGH_DENSITY, STM32_XL_DENSITY) +#if ANY(STM32_HIGH_DENSITY, STM32_XL_DENSITY) #define NUM_UARTS 5 #else #define NUM_UARTS 3 diff --git a/Marlin/src/HAL/STM32F1/MarlinSerial.cpp b/Marlin/src/HAL/STM32F1/MarlinSerial.cpp index 7898e9f2bc..568fc05d41 100644 --- a/Marlin/src/HAL/STM32F1/MarlinSerial.cpp +++ b/Marlin/src/HAL/STM32F1/MarlinSerial.cpp @@ -116,7 +116,7 @@ constexpr bool serial_handles_emergency(int port) { #endif DEFINE_HWSERIAL_MARLIN(MSerial2, 2); DEFINE_HWSERIAL_MARLIN(MSerial3, 3); -#if EITHER(STM32_HIGH_DENSITY, STM32_XL_DENSITY) +#if ANY(STM32_HIGH_DENSITY, STM32_XL_DENSITY) DEFINE_HWSERIAL_UART_MARLIN(MSerial4, 4); DEFINE_HWSERIAL_UART_MARLIN(MSerial5, 5); #endif diff --git a/Marlin/src/HAL/STM32F1/MarlinSerial.h b/Marlin/src/HAL/STM32F1/MarlinSerial.h index dda32fe7a2..53bcd48476 100644 --- a/Marlin/src/HAL/STM32F1/MarlinSerial.h +++ b/Marlin/src/HAL/STM32F1/MarlinSerial.h @@ -52,7 +52,7 @@ typedef Serial1Class MSerialT; extern MSerialT MSerial1; extern MSerialT MSerial2; extern MSerialT MSerial3; -#if EITHER(STM32_HIGH_DENSITY, STM32_XL_DENSITY) +#if ANY(STM32_HIGH_DENSITY, STM32_XL_DENSITY) extern MSerialT MSerial4; extern MSerialT MSerial5; #endif diff --git a/Marlin/src/HAL/STM32F1/dogm/u8g_com_stm32duino_swspi.cpp b/Marlin/src/HAL/STM32F1/dogm/u8g_com_stm32duino_swspi.cpp index 26ea1ea19a..db9b6f0b1c 100644 --- a/Marlin/src/HAL/STM32F1/dogm/u8g_com_stm32duino_swspi.cpp +++ b/Marlin/src/HAL/STM32F1/dogm/u8g_com_stm32duino_swspi.cpp @@ -24,7 +24,7 @@ #include "../../../inc/MarlinConfig.h" -#if BOTH(HAS_MARLINUI_U8GLIB, FORCE_SOFT_SPI) +#if ALL(HAS_MARLINUI_U8GLIB, FORCE_SOFT_SPI) #include #include "../../shared/HAL_SPI.h" diff --git a/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h b/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h index 5a4bde16a5..f130f5cad8 100644 --- a/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h +++ b/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h @@ -24,7 +24,7 @@ // If no real EEPROM, Flash emulation, or SRAM emulation is available fall back to SD emulation #if USE_FALLBACK_EEPROM #define SDCARD_EEPROM_EMULATION -#elif EITHER(I2C_EEPROM, SPI_EEPROM) +#elif ANY(I2C_EEPROM, SPI_EEPROM) #define USE_SHARED_EEPROM 1 #endif diff --git a/Marlin/src/HAL/STM32F1/pinsDebug.h b/Marlin/src/HAL/STM32F1/pinsDebug.h index 2142f0ebac..6f8e48f455 100644 --- a/Marlin/src/HAL/STM32F1/pinsDebug.h +++ b/Marlin/src/HAL/STM32F1/pinsDebug.h @@ -94,7 +94,7 @@ void pwm_details(const pin_t pin) { timer_dev * const tdev = PIN_MAP[pin].timer_device; const uint8_t channel = PIN_MAP[pin].timer_channel; const char num = ( - #if EITHER(STM32_HIGH_DENSITY, STM32_XL_DENSITY) + #if ANY(STM32_HIGH_DENSITY, STM32_XL_DENSITY) tdev == &timer8 ? '8' : tdev == &timer5 ? '5' : #endif diff --git a/Marlin/src/HAL/STM32F1/sdio.cpp b/Marlin/src/HAL/STM32F1/sdio.cpp index b00be30217..1ab76440b7 100644 --- a/Marlin/src/HAL/STM32F1/sdio.cpp +++ b/Marlin/src/HAL/STM32F1/sdio.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfig.h" // Allow pins/pins.h to set density -#if EITHER(STM32_HIGH_DENSITY, STM32_XL_DENSITY) +#if ANY(STM32_HIGH_DENSITY, STM32_XL_DENSITY) #include "sdio.h" diff --git a/Marlin/src/HAL/shared/HAL_ST7920.h b/Marlin/src/HAL/shared/HAL_ST7920.h index 4e362f96ba..305736c3a5 100644 --- a/Marlin/src/HAL/shared/HAL_ST7920.h +++ b/Marlin/src/HAL/shared/HAL_ST7920.h @@ -27,7 +27,7 @@ * (bypassing U8G), it will allow the LIGHTWEIGHT_UI to operate. */ -#if BOTH(HAS_MARLINUI_U8GLIB, LIGHTWEIGHT_UI) +#if ALL(HAS_MARLINUI_U8GLIB, LIGHTWEIGHT_UI) void ST7920_cs(); void ST7920_ncs(); void ST7920_set_cmd(); diff --git a/Marlin/src/HAL/shared/eeprom_api.cpp b/Marlin/src/HAL/shared/eeprom_api.cpp index 47cfa5a2db..083ccc70d7 100644 --- a/Marlin/src/HAL/shared/eeprom_api.cpp +++ b/Marlin/src/HAL/shared/eeprom_api.cpp @@ -22,7 +22,7 @@ */ #include "../../inc/MarlinConfigPre.h" -#if EITHER(EEPROM_SETTINGS, SD_FIRMWARE_UPDATE) +#if ANY(EEPROM_SETTINGS, SD_FIRMWARE_UPDATE) #include "eeprom_api.h" PersistentStore persistentStore; diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 779dea4ca2..6184109030 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -199,7 +199,7 @@ #include "feature/runout.h" #endif -#if EITHER(PROBE_TARE, HAS_Z_SERVO_PROBE) +#if ANY(PROBE_TARE, HAS_Z_SERVO_PROBE) #include "module/probe.h" #endif @@ -726,7 +726,7 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) { #endif } -#if BOTH(EP_BABYSTEPPING, EMERGENCY_PARSER) +#if ALL(EP_BABYSTEPPING, EMERGENCY_PARSER) #include "feature/babystep.h" #endif @@ -853,7 +853,7 @@ void idle(const bool no_stepper_sleep/*=false*/) { TERN_(POLL_JOG, joystick.inject_jog_moves()); // Async Babystepping via the Emergency Parser - #if BOTH(EP_BABYSTEPPING, EMERGENCY_PARSER) + #if ALL(EP_BABYSTEPPING, EMERGENCY_PARSER) babystep.do_ep_steps(); #endif @@ -924,7 +924,7 @@ void minkill(const bool steppers_off/*=false*/) { TERN_(HAS_SUICIDE, suicide()); - #if EITHER(HAS_KILL, SOFT_RESET_ON_KILL) + #if ANY(HAS_KILL, SOFT_RESET_ON_KILL) // Wait for both KILL and ENC to be released while (TERN0(HAS_KILL, kill_state()) || TERN0(SOFT_RESET_ON_KILL, ui.button_pressed())) @@ -953,7 +953,7 @@ void stop() { print_job_timer.stop(); - #if EITHER(PROBING_FANS_OFF, ADVANCED_PAUSE_FANS_PAUSE) + #if ANY(PROBING_FANS_OFF, ADVANCED_PAUSE_FANS_PAUSE) thermalManager.set_fans_paused(false); // Un-pause fans for safety #endif @@ -1315,14 +1315,14 @@ void setup() { #endif #endif - #if BOTH(HAS_MEDIA, SDCARD_EEPROM_EMULATION) + #if ALL(HAS_MEDIA, SDCARD_EEPROM_EMULATION) SETUP_RUN(card.mount()); // Mount media with settings before first_load #endif SETUP_RUN(settings.first_load()); // Load data from EEPROM if available (or use defaults) // This also updates variables in the planner, elsewhere - #if BOTH(HAS_WIRED_LCD, SHOW_BOOTSCREEN) + #if ALL(HAS_WIRED_LCD, SHOW_BOOTSCREEN) SETUP_RUN(ui.show_bootscreen()); const millis_t bootscreen_ms = millis(); #endif @@ -1397,7 +1397,7 @@ void setup() { SETUP_RUN(stepper_dac.init()); #endif - #if EITHER(Z_PROBE_SLED, SOLENOID_PROBE) && HAS_SOLENOID_1 + #if ANY(Z_PROBE_SLED, SOLENOID_PROBE) && HAS_SOLENOID_1 OUT_WRITE(SOL1_PIN, LOW); // OFF #endif @@ -1605,7 +1605,7 @@ void setup() { SETUP_RUN(tft_lvgl_init()); #endif - #if BOTH(HAS_WIRED_LCD, SHOW_BOOTSCREEN) + #if ALL(HAS_WIRED_LCD, SHOW_BOOTSCREEN) const millis_t elapsed = millis() - bootscreen_ms; #if ENABLED(MARLIN_DEV_MODE) SERIAL_ECHOLNPGM("elapsed=", elapsed); @@ -1617,7 +1617,7 @@ void setup() { SETUP_RUN(password.lock_machine()); // Will not proceed until correct password provided #endif - #if BOTH(HAS_MARLINUI_MENU, TOUCH_SCREEN_CALIBRATION) && EITHER(TFT_CLASSIC_UI, TFT_COLOR_UI) + #if ALL(HAS_MARLINUI_MENU, TOUCH_SCREEN_CALIBRATION) && ANY(TFT_CLASSIC_UI, TFT_COLOR_UI) SETUP_RUN(ui.check_touch_calibration()); #endif @@ -1674,7 +1674,7 @@ void loop() { queue.advance(); - #if EITHER(POWER_OFF_TIMER, POWER_OFF_WAIT_FOR_COOLDOWN) + #if ANY(POWER_OFF_TIMER, POWER_OFF_WAIT_FOR_COOLDOWN) powerManager.checkAutoPowerOff(); #endif diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h index 521fcfca3e..b76a3d301c 100644 --- a/Marlin/src/core/language.h +++ b/Marlin/src/core/language.h @@ -508,7 +508,7 @@ #define STR_W "" #endif -#if EITHER(HAS_MARLINUI_HD44780, IS_TFTGLCD_PANEL) +#if ANY(HAS_MARLINUI_HD44780, IS_TFTGLCD_PANEL) // Custom characters defined in the first 8 characters of the LCD #define LCD_STR_BEDTEMP "\x00" // Print only as a char. This will have 'unexpected' results when used in a string! diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h index 7e20f83803..c44d60843a 100644 --- a/Marlin/src/core/macros.h +++ b/Marlin/src/core/macros.h @@ -192,7 +192,11 @@ #define _DIS_1(O) NOT(_ENA_1(O)) #define ENABLED(V...) DO(ENA,&&,V) #define DISABLED(V...) DO(DIS,&&,V) +#define ANY(V...) !DISABLED(V) +#define ALL ENABLED +#define NONE DISABLED #define COUNT_ENABLED(V...) DO(ENA,+,V) +#define MANY(V...) (COUNT_ENABLED(V) > 1) #define TERN(O,A,B) _TERN(_ENA_1(O),B,A) // OPTION ? 'A' : 'B' #define TERN0(O,A) _TERN(_ENA_1(O),0,A) // OPTION ? 'A' : '0' @@ -216,16 +220,8 @@ #define SUM_TERN(O,B,A) ((B) PLUS_TERN0(O,A)) // ((B) (OPTION ? '+ (A)' : '')) #define DIFF_TERN(O,B,A) ((B) MINUS_TERN0(O,A)) // ((B) (OPTION ? '- (A)' : '')) -#define IF_ENABLED TERN_ #define IF_DISABLED(O,A) TERN(O,,A) -#define ANY(V...) !DISABLED(V) -#define NONE(V...) DISABLED(V) -#define ALL(V...) ENABLED(V) -#define BOTH(V1,V2) ALL(V1,V2) -#define EITHER(V1,V2) ANY(V1,V2) -#define MANY(V...) (COUNT_ENABLED(V) > 1) - // Macros to support pins/buttons exist testing #define PIN_EXISTS(PN) (defined(PN##_PIN) && PN##_PIN >= 0) #define _PINEX_1 PIN_EXISTS diff --git a/Marlin/src/feature/babystep.cpp b/Marlin/src/feature/babystep.cpp index c8c1d42f88..e431e40165 100644 --- a/Marlin/src/feature/babystep.cpp +++ b/Marlin/src/feature/babystep.cpp @@ -42,7 +42,7 @@ volatile int16_t Babystep::steps[BS_AXIS_IND(Z_AXIS) + 1]; #endif int16_t Babystep::accum; -#if BOTH(EP_BABYSTEPPING, EMERGENCY_PARSER) +#if ALL(EP_BABYSTEPPING, EMERGENCY_PARSER) int16_t Babystep::ep_babysteps; #endif diff --git a/Marlin/src/feature/babystep.h b/Marlin/src/feature/babystep.h index 1e319ec544..70a529a0c3 100644 --- a/Marlin/src/feature/babystep.h +++ b/Marlin/src/feature/babystep.h @@ -31,7 +31,7 @@ #define BABYSTEP_TICKS ((TEMP_TIMER_RATE) / (BABYSTEPS_PER_SEC)) #endif -#if IS_CORE || EITHER(BABYSTEP_XY, I2C_POSITION_ENCODERS) +#if ANY(IS_CORE, BABYSTEP_XY, I2C_POSITION_ENCODERS) #define BS_AXIS_IND(A) A #define BS_AXIS(I) AxisEnum(I) #else @@ -52,7 +52,7 @@ public: static volatile int16_t steps[BS_AXIS_IND(Z_AXIS) + 1]; static int16_t accum; // Total babysteps in current edit - #if BOTH(EP_BABYSTEPPING, EMERGENCY_PARSER) + #if ALL(EP_BABYSTEPPING, EMERGENCY_PARSER) static int16_t ep_babysteps; #endif diff --git a/Marlin/src/feature/backlash.cpp b/Marlin/src/feature/backlash.cpp index 8d180c7a4a..c6eb0d33f3 100644 --- a/Marlin/src/feature/backlash.cpp +++ b/Marlin/src/feature/backlash.cpp @@ -66,7 +66,7 @@ Backlash backlash; void Backlash::add_correction_steps(const int32_t &da, const int32_t &db, const int32_t &dc, const AxisBits dm, block_t * const block) { AxisBits changed_dir = last_direction_bits ^ dm; // Ignore direction change unless steps are taken in that direction - #if DISABLED(CORE_BACKLASH) || EITHER(MARKFORGED_XY, MARKFORGED_YX) + #if DISABLED(CORE_BACKLASH) || ANY(MARKFORGED_XY, MARKFORGED_YX) if (!da) changed_dir.x = false; if (!db) changed_dir.y = false; if (!dc) changed_dir.z = false; diff --git a/Marlin/src/feature/bedlevel/bedlevel.cpp b/Marlin/src/feature/bedlevel/bedlevel.cpp index 03b67745ec..0bb8b8191a 100644 --- a/Marlin/src/feature/bedlevel/bedlevel.cpp +++ b/Marlin/src/feature/bedlevel/bedlevel.cpp @@ -27,7 +27,7 @@ #include "bedlevel.h" #include "../../module/planner.h" -#if EITHER(MESH_BED_LEVELING, PROBE_MANUALLY) +#if ANY(MESH_BED_LEVELING, PROBE_MANUALLY) #include "../../module/motion.h" #endif @@ -120,7 +120,7 @@ void reset_bed_level() { TERN_(ABL_PLANAR, planner.bed_level_matrix.set_to_identity()); } -#if EITHER(AUTO_BED_LEVELING_BILINEAR, MESH_BED_LEVELING) +#if ANY(AUTO_BED_LEVELING_BILINEAR, MESH_BED_LEVELING) /** * Enable to produce output in JSON format suitable @@ -188,7 +188,7 @@ void reset_bed_level() { #endif // AUTO_BED_LEVELING_BILINEAR || MESH_BED_LEVELING -#if EITHER(MESH_BED_LEVELING, PROBE_MANUALLY) +#if ANY(MESH_BED_LEVELING, PROBE_MANUALLY) void _manual_goto_xy(const xy_pos_t &pos) { diff --git a/Marlin/src/feature/bedlevel/bedlevel.h b/Marlin/src/feature/bedlevel/bedlevel.h index aeafec10d6..ccb9543e72 100644 --- a/Marlin/src/feature/bedlevel/bedlevel.h +++ b/Marlin/src/feature/bedlevel/bedlevel.h @@ -23,7 +23,7 @@ #include "../../inc/MarlinConfigPre.h" -#if EITHER(RESTORE_LEVELING_AFTER_G28, ENABLE_LEVELING_AFTER_G28) +#if ANY(RESTORE_LEVELING_AFTER_G28, ENABLE_LEVELING_AFTER_G28) #define CAN_SET_LEVELING_AFTER_G28 1 #endif @@ -41,7 +41,7 @@ void reset_bed_level(); void set_z_fade_height(const_float_t zfh, const bool do_report=true); #endif -#if EITHER(MESH_BED_LEVELING, PROBE_MANUALLY) +#if ANY(MESH_BED_LEVELING, PROBE_MANUALLY) void _manual_goto_xy(const xy_pos_t &pos); #endif @@ -69,7 +69,7 @@ class TemporaryBedLevelingState { #include "mbl/mesh_bed_leveling.h" #endif - #if EITHER(AUTO_BED_LEVELING_BILINEAR, MESH_BED_LEVELING) + #if ANY(AUTO_BED_LEVELING_BILINEAR, MESH_BED_LEVELING) #include diff --git a/Marlin/src/feature/cancel_object.cpp b/Marlin/src/feature/cancel_object.cpp index bffd2bb720..9b658315ed 100644 --- a/Marlin/src/feature/cancel_object.cpp +++ b/Marlin/src/feature/cancel_object.cpp @@ -44,7 +44,7 @@ void CancelObject::set_active_object(const int8_t obj) { else skipping = false; - #if BOTH(HAS_STATUS_MESSAGE, CANCEL_OBJECTS_REPORTING) + #if ALL(HAS_STATUS_MESSAGE, CANCEL_OBJECTS_REPORTING) if (active_object >= 0) ui.status_printf(0, F(S_FMT " %i"), GET_TEXT(MSG_PRINTING_OBJECT), int(active_object)); else diff --git a/Marlin/src/feature/cooler.cpp b/Marlin/src/feature/cooler.cpp index e0f99777d1..6c45e99226 100644 --- a/Marlin/src/feature/cooler.cpp +++ b/Marlin/src/feature/cooler.cpp @@ -22,7 +22,7 @@ #include "../inc/MarlinConfig.h" -#if EITHER(HAS_COOLER, LASER_COOLANT_FLOW_METER) +#if ANY(HAS_COOLER, LASER_COOLANT_FLOW_METER) #include "cooler.h" Cooler cooler; diff --git a/Marlin/src/feature/host_actions.cpp b/Marlin/src/feature/host_actions.cpp index a1c1bad5bb..235253b5a3 100644 --- a/Marlin/src/feature/host_actions.cpp +++ b/Marlin/src/feature/host_actions.cpp @@ -187,13 +187,13 @@ void HostUI::action(FSTR_P const fstr, const bool eol) { switch (response) { case 0: // "Purge More" button - #if BOTH(M600_PURGE_MORE_RESUMABLE, ADVANCED_PAUSE_FEATURE) + #if ALL(M600_PURGE_MORE_RESUMABLE, ADVANCED_PAUSE_FEATURE) pause_menu_response = PAUSE_RESPONSE_EXTRUDE_MORE; // Simulate menu selection (menu exits, doesn't extrude more) #endif break; case 1: // "Continue" / "Disable Runout" button - #if BOTH(M600_PURGE_MORE_RESUMABLE, ADVANCED_PAUSE_FEATURE) + #if ALL(M600_PURGE_MORE_RESUMABLE, ADVANCED_PAUSE_FEATURE) pause_menu_response = PAUSE_RESPONSE_RESUME_PRINT; // Simulate menu selection #endif #if HAS_FILAMENT_SENSOR @@ -209,7 +209,7 @@ void HostUI::action(FSTR_P const fstr, const bool eol) { TERN_(HAS_RESUME_CONTINUE, wait_for_user = false); break; case PROMPT_PAUSE_RESUME: - #if BOTH(ADVANCED_PAUSE_FEATURE, HAS_MEDIA) + #if ALL(ADVANCED_PAUSE_FEATURE, HAS_MEDIA) extern const char M24_STR[]; queue.inject_P(M24_STR); #endif diff --git a/Marlin/src/feature/leds/leds.cpp b/Marlin/src/feature/leds/leds.cpp index 94900445dc..45810a31ab 100644 --- a/Marlin/src/feature/leds/leds.cpp +++ b/Marlin/src/feature/leds/leds.cpp @@ -30,7 +30,7 @@ #include "leds.h" -#if EITHER(CASE_LIGHT_USE_RGB_LED, CASE_LIGHT_USE_NEOPIXEL) +#if ANY(CASE_LIGHT_USE_RGB_LED, CASE_LIGHT_USE_NEOPIXEL) #include "../../feature/caselight.h" #endif @@ -50,7 +50,7 @@ LEDLights leds; void LEDLights::setup() { - #if EITHER(RGB_LED, RGBW_LED) + #if ANY(RGB_LED, RGBW_LED) if (PWM_PIN(RGB_LED_R_PIN)) SET_PWM(RGB_LED_R_PIN); else SET_OUTPUT(RGB_LED_R_PIN); if (PWM_PIN(RGB_LED_G_PIN)) SET_PWM(RGB_LED_G_PIN); else SET_OUTPUT(RGB_LED_G_PIN); if (PWM_PIN(RGB_LED_B_PIN)) SET_PWM(RGB_LED_B_PIN); else SET_OUTPUT(RGB_LED_B_PIN); @@ -96,7 +96,7 @@ void LEDLights::setup() { } #endif // RGB_STARTUP_TEST - #elif BOTH(PCA9632, RGB_STARTUP_TEST) // PCA9632 RGB_STARTUP_TEST + #elif ALL(PCA9632, RGB_STARTUP_TEST) // PCA9632 RGB_STARTUP_TEST constexpr int8_t led_pin_count = TERN(HAS_WHITE_LED, 4, 3); @@ -176,7 +176,7 @@ void LEDLights::set_color(const LEDColor &incol #endif #endif - #if BOTH(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL) + #if ALL(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL) // Update brightness only if caselight is ON or switching leds off if (caselight.on || incol.is_off()) #endif @@ -191,7 +191,7 @@ void LEDLights::set_color(const LEDColor &incol } #endif - #if BOTH(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL) + #if ALL(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL) // Update color only if caselight is ON or switching leds off if (caselight.on || incol.is_off()) #endif @@ -206,7 +206,7 @@ void LEDLights::set_color(const LEDColor &incol #endif - #if EITHER(RGB_LED, RGBW_LED) + #if ANY(RGB_LED, RGBW_LED) // This variant uses 3-4 separate pins for the RGB(W) components. // If the pins can do PWM then their intensity will be set. @@ -228,7 +228,7 @@ void LEDLights::set_color(const LEDColor &incol TERN_(PCA9632, PCA9632_set_led_color(incol)); TERN_(PCA9533, PCA9533_set_rgb(incol.r, incol.g, incol.b)); - #if EITHER(LED_CONTROL_MENU, PRINTER_EVENT_LEDS) + #if ANY(LED_CONTROL_MENU, PRINTER_EVENT_LEDS) // Don't update the color when OFF lights_on = !incol.is_off(); if (lights_on) color = incol; diff --git a/Marlin/src/feature/leds/leds.h b/Marlin/src/feature/leds/leds.h index c6137b45c3..7a31ca685d 100644 --- a/Marlin/src/feature/leds/leds.h +++ b/Marlin/src/feature/leds/leds.h @@ -30,7 +30,7 @@ #include // A white component can be passed -#if EITHER(RGBW_LED, PCA9632_RGBW) +#if ANY(RGBW_LED, PCA9632_RGBW) #define HAS_WHITE_LED 1 #endif @@ -164,7 +164,7 @@ public: #if ENABLED(LED_CONTROL_MENU) static void toggle(); // swap "off" with color #endif - #if EITHER(LED_CONTROL_MENU, CASE_LIGHT_USE_RGB_LED) || LED_POWEROFF_TIMEOUT > 0 + #if ANY(LED_CONTROL_MENU, CASE_LIGHT_USE_RGB_LED) || LED_POWEROFF_TIMEOUT > 0 static void update() { set_color(color); } #endif diff --git a/Marlin/src/feature/leds/neopixel.cpp b/Marlin/src/feature/leds/neopixel.cpp index 2193217df0..1b0772c2f9 100644 --- a/Marlin/src/feature/leds/neopixel.cpp +++ b/Marlin/src/feature/leds/neopixel.cpp @@ -30,7 +30,7 @@ #include "leds.h" -#if EITHER(NEOPIXEL_STARTUP_TEST, NEOPIXEL2_STARTUP_TEST) +#if ANY(NEOPIXEL_STARTUP_TEST, NEOPIXEL2_STARTUP_TEST) #include "../../core/utility.h" #endif diff --git a/Marlin/src/feature/leds/neopixel.h b/Marlin/src/feature/leds/neopixel.h index 3801ded6aa..6cc8b6157e 100644 --- a/Marlin/src/feature/leds/neopixel.h +++ b/Marlin/src/feature/leds/neopixel.h @@ -58,7 +58,7 @@ #define MULTIPLE_NEOPIXEL_TYPES 1 #endif -#if EITHER(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES) +#if ANY(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES) #define CONJOINED_NEOPIXEL 1 #endif diff --git a/Marlin/src/feature/mixing.cpp b/Marlin/src/feature/mixing.cpp index cf88b806f5..7c9c54a314 100644 --- a/Marlin/src/feature/mixing.cpp +++ b/Marlin/src/feature/mixing.cpp @@ -42,7 +42,7 @@ int_fast8_t Mixer::runner = 0; mixer_comp_t Mixer::s_color[MIXING_STEPPERS]; mixer_accu_t Mixer::accu[MIXING_STEPPERS] = { 0 }; -#if EITHER(HAS_DUAL_MIXING, GRADIENT_MIX) +#if ANY(HAS_DUAL_MIXING, GRADIENT_MIX) mixer_perc_t Mixer::mix[MIXING_STEPPERS]; #endif @@ -138,7 +138,7 @@ void Mixer::init() { color[MIXER_AUTORETRACT_TOOL][i] = COLOR_A_MASK; #endif - #if EITHER(HAS_DUAL_MIXING, GRADIENT_MIX) + #if ANY(HAS_DUAL_MIXING, GRADIENT_MIX) update_mix_from_vtool(); #endif diff --git a/Marlin/src/feature/mixing.h b/Marlin/src/feature/mixing.h index 3a14fdad59..a43b059944 100644 --- a/Marlin/src/feature/mixing.h +++ b/Marlin/src/feature/mixing.h @@ -122,7 +122,7 @@ class Mixer { MIXER_STEPPER_LOOP(i) s_color[i] = b_color[i]; } - #if EITHER(HAS_DUAL_MIXING, GRADIENT_MIX) + #if ANY(HAS_DUAL_MIXING, GRADIENT_MIX) static mixer_perc_t mix[MIXING_STEPPERS]; // Scratch array for the Mix in proportion to 100 diff --git a/Marlin/src/feature/mmu/mmu2.cpp b/Marlin/src/feature/mmu/mmu2.cpp index 8aec1dc1db..fbfcf3fd3f 100644 --- a/Marlin/src/feature/mmu/mmu2.cpp +++ b/Marlin/src/feature/mmu/mmu2.cpp @@ -135,7 +135,7 @@ void MMU2::reset() { int8_t MMU2::get_current_tool() { return extruder == MMU2_NO_TOOL ? -1 : extruder; } -#if EITHER(HAS_PRUSA_MMU2S, MMU_EXTRUDER_SENSOR) +#if ANY(HAS_PRUSA_MMU2S, MMU_EXTRUDER_SENSOR) #define FILAMENT_PRESENT() (READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE) #else #define FILAMENT_PRESENT() true diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp index 504a9f61c7..6e57f6e2dc 100644 --- a/Marlin/src/feature/pause.cpp +++ b/Marlin/src/feature/pause.cpp @@ -210,7 +210,7 @@ bool load_filament(const_float_t slow_load_length/*=0*/, const_float_t fast_load while (wait_for_user) { impatient_beep(max_beep_count); - #if BOTH(FILAMENT_CHANGE_RESUME_ON_INSERT, FILAMENT_RUNOUT_SENSOR) + #if ALL(FILAMENT_CHANGE_RESUME_ON_INSERT, FILAMENT_RUNOUT_SENSOR) #if MULTI_FILAMENT_SENSOR #define _CASE_INSERTED(N) case N-1: if (READ(FIL_RUNOUT##N##_PIN) != FIL_RUNOUT##N##_STATE) wait_for_user = false; break; switch (active_extruder) { @@ -286,7 +286,7 @@ bool load_filament(const_float_t slow_load_length/*=0*/, const_float_t fast_load // Show "Purge More" / "Resume" menu and wait for reply KEEPALIVE_STATE(PAUSED_FOR_USER); wait_for_user = false; - #if EITHER(HAS_MARLINUI_MENU, DWIN_LCD_PROUI) + #if ANY(HAS_MARLINUI_MENU, DWIN_LCD_PROUI) ui.pause_show_message(PAUSE_MESSAGE_OPTION); // Also sets PAUSE_RESPONSE_WAIT_FOR #else pause_menu_response = PAUSE_RESPONSE_WAIT_FOR; @@ -331,18 +331,18 @@ inline void disable_active_extruder() { */ bool unload_filament(const_float_t unload_length, const bool show_lcd/*=false*/, const PauseMode mode/*=PAUSE_MODE_PAUSE_PRINT*/ - #if BOTH(FILAMENT_UNLOAD_ALL_EXTRUDERS, MIXING_EXTRUDER) + #if ALL(FILAMENT_UNLOAD_ALL_EXTRUDERS, MIXING_EXTRUDER) , const_float_t mix_multiplier/*=1.0*/ #endif ) { DEBUG_SECTION(uf, "unload_filament", true); DEBUG_ECHOLNPGM("... unloadlen:", unload_length, " showlcd:", show_lcd, " mode:", mode - #if BOTH(FILAMENT_UNLOAD_ALL_EXTRUDERS, MIXING_EXTRUDER) + #if ALL(FILAMENT_UNLOAD_ALL_EXTRUDERS, MIXING_EXTRUDER) , " mixmult:", mix_multiplier #endif ); - #if !BOTH(FILAMENT_UNLOAD_ALL_EXTRUDERS, MIXING_EXTRUDER) + #if !ALL(FILAMENT_UNLOAD_ALL_EXTRUDERS, MIXING_EXTRUDER) constexpr float mix_multiplier = 1.0f; #endif @@ -445,7 +445,7 @@ bool pause_print(const_float_t retract, const xyz_pos_t &park_point, const bool // Wait for buffered blocks to complete planner.synchronize(); - #if BOTH(ADVANCED_PAUSE_FANS_PAUSE, HAS_FAN) + #if ALL(ADVANCED_PAUSE_FANS_PAUSE, HAS_FAN) thermalManager.set_fans_paused(true); #endif diff --git a/Marlin/src/feature/pause.h b/Marlin/src/feature/pause.h index 134b1d1b32..7ea0c03b6b 100644 --- a/Marlin/src/feature/pause.h +++ b/Marlin/src/feature/pause.h @@ -117,7 +117,7 @@ bool unload_filament( const_float_t unload_length, // (mm) Filament Unload Length - 0 to skip const bool show_lcd=false, // Set LCD status messages? const PauseMode mode=PAUSE_MODE_PAUSE_PRINT // Pause Mode to apply - #if BOTH(FILAMENT_UNLOAD_ALL_EXTRUDERS, MIXING_EXTRUDER) + #if ALL(FILAMENT_UNLOAD_ALL_EXTRUDERS, MIXING_EXTRUDER) , const_float_t mix_multiplier=1.0f // Extrusion multiplier (for a Mixing Extruder) #endif ); diff --git a/Marlin/src/feature/power.cpp b/Marlin/src/feature/power.cpp index 8a16628bac..d0f8a66fec 100644 --- a/Marlin/src/feature/power.cpp +++ b/Marlin/src/feature/power.cpp @@ -26,7 +26,7 @@ #include "../inc/MarlinConfigPre.h" -#if EITHER(PSU_CONTROL, AUTO_POWER_CONTROL) +#if ANY(PSU_CONTROL, AUTO_POWER_CONTROL) #include "power.h" #include "../module/planner.h" @@ -49,7 +49,7 @@ bool Power::psu_on; #include "../module/stepper.h" #include "../module/temperature.h" - #if BOTH(USE_CONTROLLER_FAN, AUTO_POWER_CONTROLLERFAN) + #if ALL(USE_CONTROLLER_FAN, AUTO_POWER_CONTROLLERFAN) #include "controllerfan.h" #endif @@ -78,7 +78,7 @@ void Power::power_on() { if (psu_on) return; - #if EITHER(POWER_OFF_TIMER, POWER_OFF_WAIT_FOR_COOLDOWN) + #if ANY(POWER_OFF_TIMER, POWER_OFF_WAIT_FOR_COOLDOWN) cancelAutoPowerOff(); #endif @@ -115,12 +115,12 @@ void Power::power_off() { OUT_WRITE(PS_ON_PIN, !PSU_ACTIVE_STATE); psu_on = false; - #if EITHER(POWER_OFF_TIMER, POWER_OFF_WAIT_FOR_COOLDOWN) + #if ANY(POWER_OFF_TIMER, POWER_OFF_WAIT_FOR_COOLDOWN) cancelAutoPowerOff(); #endif } -#if EITHER(AUTO_POWER_CONTROL, POWER_OFF_WAIT_FOR_COOLDOWN) +#if ANY(AUTO_POWER_CONTROL, POWER_OFF_WAIT_FOR_COOLDOWN) bool Power::is_cooling_needed() { #if HAS_HOTEND && AUTO_POWER_E_TEMP @@ -140,7 +140,7 @@ void Power::power_off() { #endif -#if EITHER(POWER_OFF_TIMER, POWER_OFF_WAIT_FOR_COOLDOWN) +#if ANY(POWER_OFF_TIMER, POWER_OFF_WAIT_FOR_COOLDOWN) #if ENABLED(POWER_OFF_TIMER) millis_t Power::power_off_time = 0; @@ -192,7 +192,7 @@ void Power::power_off() { HOTEND_LOOP() if (thermalManager.autofan_speed[e]) return true; #endif - #if BOTH(USE_CONTROLLER_FAN, AUTO_POWER_CONTROLLERFAN) + #if ALL(USE_CONTROLLER_FAN, AUTO_POWER_CONTROLLERFAN) if (controllerFan.state()) return true; #endif diff --git a/Marlin/src/feature/power.h b/Marlin/src/feature/power.h index 839366ca60..fdbb7126ce 100644 --- a/Marlin/src/feature/power.h +++ b/Marlin/src/feature/power.h @@ -25,7 +25,7 @@ * power.h - power control */ -#if EITHER(AUTO_POWER_CONTROL, POWER_OFF_TIMER) +#if ANY(AUTO_POWER_CONTROL, POWER_OFF_TIMER) #include "../core/millis_t.h" #endif @@ -37,7 +37,7 @@ class Power { static void power_on(); static void power_off(); - #if EITHER(POWER_OFF_TIMER, POWER_OFF_WAIT_FOR_COOLDOWN) + #if ANY(POWER_OFF_TIMER, POWER_OFF_WAIT_FOR_COOLDOWN) #if ENABLED(POWER_OFF_TIMER) static millis_t power_off_time; static void setPowerOffTimer(const millis_t delay_ms); diff --git a/Marlin/src/feature/powerloss.cpp b/Marlin/src/feature/powerloss.cpp index 29c4695ca4..24ff2b2195 100644 --- a/Marlin/src/feature/powerloss.cpp +++ b/Marlin/src/feature/powerloss.cpp @@ -699,7 +699,7 @@ void PrintJobRecovery::resume() { #endif // Mixing extruder and gradient - #if BOTH(MIXING_EXTRUDER, GRADIENT_MIX) + #if ALL(MIXING_EXTRUDER, GRADIENT_MIX) DEBUG_ECHOLNPGM("gradient: ", info.gradient.enabled ? "ON" : "OFF"); #endif diff --git a/Marlin/src/feature/solenoid.cpp b/Marlin/src/feature/solenoid.cpp index 861e44ed05..46364eaf8f 100644 --- a/Marlin/src/feature/solenoid.cpp +++ b/Marlin/src/feature/solenoid.cpp @@ -22,7 +22,7 @@ #include "../inc/MarlinConfig.h" -#if EITHER(EXT_SOLENOID, MANUAL_SOLENOID_CONTROL) +#if ANY(EXT_SOLENOID, MANUAL_SOLENOID_CONTROL) #include "solenoid.h" diff --git a/Marlin/src/gcode/bedlevel/G35.cpp b/Marlin/src/gcode/bedlevel/G35.cpp index f5f395ee2e..901e97ab75 100644 --- a/Marlin/src/gcode/bedlevel/G35.cpp +++ b/Marlin/src/gcode/bedlevel/G35.cpp @@ -144,7 +144,7 @@ void GcodeSuite::G35() { // Restore the active tool after homing probe.use_probing_tool(false); - #if BOTH(HAS_LEVELING, RESTORE_LEVELING_AFTER_G35) + #if ALL(HAS_LEVELING, RESTORE_LEVELING_AFTER_G35) set_bed_leveling_enabled(leveling_was_active); #endif diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index 1fe4a31bee..5c86f4b991 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -97,7 +97,7 @@ public: bool dryrun, reenable; - #if EITHER(PROBE_MANUALLY, AUTO_BED_LEVELING_LINEAR) + #if ANY(PROBE_MANUALLY, AUTO_BED_LEVELING_LINEAR) int abl_probe_index; #endif @@ -139,7 +139,7 @@ public: #endif }; -#if ABL_USES_GRID && EITHER(AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_BILINEAR) +#if ABL_USES_GRID && ANY(AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_BILINEAR) constexpr xy_uint8_t G29_State::grid_points; constexpr grid_count_t G29_State::abl_points; #endif @@ -231,7 +231,7 @@ G29_TYPE GcodeSuite::G29() { reset_stepper_timeout(); // Q = Query leveling and G29 state - const bool seenQ = EITHER(DEBUG_LEVELING_FEATURE, PROBE_MANUALLY) && parser.seen_test('Q'); + const bool seenQ = ANY(DEBUG_LEVELING_FEATURE, PROBE_MANUALLY) && parser.seen_test('Q'); // G29 Q is also available if debugging #if ENABLED(DEBUG_LEVELING_FEATURE) @@ -279,7 +279,7 @@ G29_TYPE GcodeSuite::G29() { probe.use_probing_tool(); - #if EITHER(PROBE_MANUALLY, AUTO_BED_LEVELING_LINEAR) + #if ANY(PROBE_MANUALLY, AUTO_BED_LEVELING_LINEAR) abl.abl_probe_index = -1; #endif @@ -436,7 +436,7 @@ G29_TYPE GcodeSuite::G29() { #if ENABLED(PREHEAT_BEFORE_LEVELING) if (!abl.dryrun) probe.preheat_for_probing(LEVELING_NOZZLE_TEMP, - #if BOTH(DWIN_LCD_PROUI, HAS_HEATED_BED) + #if ALL(DWIN_LCD_PROUI, HAS_HEATED_BED) HMI_data.BedLevT #else LEVELING_BED_TEMP @@ -484,7 +484,7 @@ G29_TYPE GcodeSuite::G29() { if (!no_action) set_bed_leveling_enabled(false); // Deploy certain probes before starting probing - #if ENABLED(BLTOUCH) || BOTH(HAS_Z_SERVO_PROBE, Z_SERVO_INTERMEDIATE_STOW) + #if ENABLED(BLTOUCH) || ALL(HAS_Z_SERVO_PROBE, Z_SERVO_INTERMEDIATE_STOW) do_z_clearance(Z_CLEARANCE_DEPLOY_PROBE); #elif HAS_BED_PROBE if (probe.deploy()) { // (returns true on deploy failure) @@ -542,7 +542,7 @@ G29_TYPE GcodeSuite::G29() { } else { - #if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT) + #if ANY(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT) const uint16_t index = abl.abl_probe_index - 1; #endif diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index be593d0d5b..fde640fe98 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -486,7 +486,7 @@ void GcodeSuite::G28() { } #endif // HAS_X_AXIS - #if BOTH(FOAMCUTTER_XYUV, HAS_I_AXIS) + #if ALL(FOAMCUTTER_XYUV, HAS_I_AXIS) // Home I (after X) if (doI) homeaxis(I_AXIS); #endif @@ -497,7 +497,7 @@ void GcodeSuite::G28() { homeaxis(Y_AXIS); #endif - #if BOTH(FOAMCUTTER_XYUV, HAS_J_AXIS) + #if ALL(FOAMCUTTER_XYUV, HAS_J_AXIS) // Home J (after Y) if (doJ) homeaxis(J_AXIS); #endif @@ -514,7 +514,7 @@ void GcodeSuite::G28() { // Home Z last if homing towards the bed #if DISABLED(HOME_Z_FIRST) if (doZ) { - #if EITHER(Z_MULTI_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) + #if ANY(Z_MULTI_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) stepper.set_all_z_lock(false); stepper.set_separate_multi_axis(false); #endif @@ -525,7 +525,7 @@ void GcodeSuite::G28() { homeaxis(Z_AXIS); #endif - #if EITHER(Z_HOME_TO_MIN, ALLOW_Z_AFTER_HOMING) + #if ANY(Z_HOME_TO_MIN, ALLOW_Z_AFTER_HOMING) finalRaiseZ = true; #endif } diff --git a/Marlin/src/gcode/calibrate/G34_M422.cpp b/Marlin/src/gcode/calibrate/G34_M422.cpp index 3e7ed08b6c..a878db2edf 100644 --- a/Marlin/src/gcode/calibrate/G34_M422.cpp +++ b/Marlin/src/gcode/calibrate/G34_M422.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfigPre.h" -#if EITHER(Z_MULTI_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) +#if ANY(Z_MULTI_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) #include "../../feature/z_stepper_align.h" @@ -431,7 +431,7 @@ void GcodeSuite::G34() { probe.use_probing_tool(false); - #if BOTH(HAS_LEVELING, RESTORE_LEVELING_AFTER_G34) + #if ALL(HAS_LEVELING, RESTORE_LEVELING_AFTER_G34) set_bed_leveling_enabled(leveling_was_active); #endif diff --git a/Marlin/src/gcode/calibrate/G76_M871.cpp b/Marlin/src/gcode/calibrate/G76_M871.cpp index f25c848f2f..34b72ecdf3 100644 --- a/Marlin/src/gcode/calibrate/G76_M871.cpp +++ b/Marlin/src/gcode/calibrate/G76_M871.cpp @@ -81,7 +81,7 @@ * - `P` - Run probe temperature calibration. */ -#if BOTH(PTC_PROBE, PTC_BED) +#if ALL(PTC_PROBE, PTC_BED) static void say_waiting_for() { SERIAL_ECHOPGM("Waiting for "); } static void say_waiting_for_probe_heating() { say_waiting_for(); SERIAL_ECHOLNPGM("probe heating."); } diff --git a/Marlin/src/gcode/calibrate/M100.cpp b/Marlin/src/gcode/calibrate/M100.cpp index 338392b597..9141d360e1 100644 --- a/Marlin/src/gcode/calibrate/M100.cpp +++ b/Marlin/src/gcode/calibrate/M100.cpp @@ -60,7 +60,7 @@ #define TEST_BYTE ((char) 0xE5) -#if EITHER(__AVR__, IS_32BIT_TEENSY) +#if ANY(__AVR__, IS_32BIT_TEENSY) extern char __bss_end; char *end_bss = &__bss_end, diff --git a/Marlin/src/gcode/calibrate/M666.cpp b/Marlin/src/gcode/calibrate/M666.cpp index 546aa7fcb5..dbee73f394 100644 --- a/Marlin/src/gcode/calibrate/M666.cpp +++ b/Marlin/src/gcode/calibrate/M666.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if EITHER(DELTA, HAS_EXTRA_ENDSTOPS) +#if ANY(DELTA, HAS_EXTRA_ENDSTOPS) #include "../gcode.h" diff --git a/Marlin/src/gcode/control/M380_M381.cpp b/Marlin/src/gcode/control/M380_M381.cpp index 6bcec891e2..20d24484ed 100644 --- a/Marlin/src/gcode/control/M380_M381.cpp +++ b/Marlin/src/gcode/control/M380_M381.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if EITHER(EXT_SOLENOID, MANUAL_SOLENOID_CONTROL) +#if ANY(EXT_SOLENOID, MANUAL_SOLENOID_CONTROL) #include "../gcode.h" #include "../../feature/solenoid.h" diff --git a/Marlin/src/gcode/control/M7-M9.cpp b/Marlin/src/gcode/control/M7-M9.cpp index ccde4f552c..837bb114b2 100644 --- a/Marlin/src/gcode/control/M7-M9.cpp +++ b/Marlin/src/gcode/control/M7-M9.cpp @@ -37,7 +37,7 @@ } #endif -#if EITHER(COOLANT_FLOOD, AIR_ASSIST) +#if ANY(COOLANT_FLOOD, AIR_ASSIST) #if ENABLED(AIR_ASSIST) #include "../../feature/spindle_laser.h" diff --git a/Marlin/src/gcode/control/M80_M81.cpp b/Marlin/src/gcode/control/M80_M81.cpp index 90b25e7ed3..94dd5e3dd9 100644 --- a/Marlin/src/gcode/control/M80_M81.cpp +++ b/Marlin/src/gcode/control/M80_M81.cpp @@ -79,7 +79,7 @@ void GcodeSuite::M81() { print_job_timer.stop(); - #if BOTH(HAS_FAN, PROBING_FANS_OFF) + #if ALL(HAS_FAN, PROBING_FANS_OFF) thermalManager.fans_paused = false; ZERO(thermalManager.saved_fan_speed); #endif diff --git a/Marlin/src/gcode/control/T.cpp b/Marlin/src/gcode/control/T.cpp index 5e8f6b5436..5e1579ec12 100644 --- a/Marlin/src/gcode/control/T.cpp +++ b/Marlin/src/gcode/control/T.cpp @@ -23,7 +23,7 @@ #include "../gcode.h" #include "../../module/tool_change.h" -#if EITHER(HAS_MULTI_EXTRUDER, DEBUG_LEVELING_FEATURE) +#if ANY(HAS_MULTI_EXTRUDER, DEBUG_LEVELING_FEATURE) #include "../../module/motion.h" #endif diff --git a/Marlin/src/gcode/feature/pause/M125.cpp b/Marlin/src/gcode/feature/pause/M125.cpp index d6e6cb9315..079ae6c1ba 100644 --- a/Marlin/src/gcode/feature/pause/M125.cpp +++ b/Marlin/src/gcode/feature/pause/M125.cpp @@ -96,7 +96,7 @@ void GcodeSuite::M125() { const bool show_lcd = TERN0(HAS_MARLINUI_MENU, parser.boolval('P')); if (pause_print(retract, park_point, show_lcd, 0)) { - if (ENABLED(EXTENSIBLE_UI) || BOTH(EMERGENCY_PARSER, HOST_PROMPT_SUPPORT) || !sd_printing || show_lcd) { + if (ENABLED(EXTENSIBLE_UI) || ALL(EMERGENCY_PARSER, HOST_PROMPT_SUPPORT) || !sd_printing || show_lcd) { wait_for_confirmation(false, 0); resume_print(0, 0, -retract, 0); } diff --git a/Marlin/src/gcode/feature/pause/M701_M702.cpp b/Marlin/src/gcode/feature/pause/M701_M702.cpp index 6ec560f5c6..aec3a16a2a 100644 --- a/Marlin/src/gcode/feature/pause/M701_M702.cpp +++ b/Marlin/src/gcode/feature/pause/M701_M702.cpp @@ -199,7 +199,7 @@ void GcodeSuite::M702() { #if HAS_PRUSA_MMU2 mmu2.unload(); #else - #if BOTH(HAS_MULTI_EXTRUDER, FILAMENT_UNLOAD_ALL_EXTRUDERS) + #if ALL(HAS_MULTI_EXTRUDER, FILAMENT_UNLOAD_ALL_EXTRUDERS) if (!parser.seenval('T')) { HOTEND_LOOP() { if (e != active_extruder) tool_change(e); diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 530cde7901..01b48a4af9 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -82,7 +82,7 @@ millis_t GcodeSuite::previous_move_ms = 0, // Relative motion mode for each logical axis relative_t GcodeSuite::axis_relative; // Init in constructor -#if EITHER(HAS_AUTO_REPORTING, HOST_KEEPALIVE_FEATURE) +#if ANY(HAS_AUTO_REPORTING, HOST_KEEPALIVE_FEATURE) bool GcodeSuite::autoreport_paused; // = false #endif @@ -204,13 +204,13 @@ void GcodeSuite::get_destination_from_command() { TERN_(LASER_FEATURE, cutter.feedrate_mm_m = MMS_TO_MMM(feedrate_mm_s)); } - #if BOTH(PRINTCOUNTER, HAS_EXTRUDERS) + #if ALL(PRINTCOUNTER, HAS_EXTRUDERS) if (!DEBUGGING(DRYRUN) && !skip_move) print_job_timer.incFilamentUsed(destination.e - current_position.e); #endif // Get ABCDHI mixing factors - #if BOTH(MIXING_EXTRUDER, DIRECT_MIXING_IN_G1) + #if ALL(MIXING_EXTRUDER, DIRECT_MIXING_IN_G1) M165(); #endif @@ -442,7 +442,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 61: G61(); break; // G61: Apply/restore saved coordinates. #endif - #if BOTH(PTC_PROBE, PTC_BED) + #if ALL(PTC_PROBE, PTC_BED) case 76: G76(); break; // G76: Calibrate first layer compensation values #endif @@ -484,11 +484,11 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 7: M7(); break; // M7: Coolant Mist ON #endif - #if EITHER(AIR_ASSIST, COOLANT_FLOOD) + #if ANY(AIR_ASSIST, COOLANT_FLOOD) case 8: M8(); break; // M8: Air Assist / Coolant Flood ON #endif - #if EITHER(AIR_ASSIST, COOLANT_CONTROL) + #if ANY(AIR_ASSIST, COOLANT_CONTROL) case 9: M9(); break; // M9: Air Assist / Coolant OFF #endif @@ -528,7 +528,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 33: M33(); break; // M33: Get the long full path to a file or folder #endif - #if BOTH(SDCARD_SORT_ALPHA, SDSORT_GCODE) + #if ALL(SDCARD_SORT_ALPHA, SDSORT_GCODE) case 34: M34(); break; // M34: Set SD card sorting options #endif @@ -628,7 +628,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 154: M154(); break; // M154: Set position auto-report interval #endif - #if BOTH(AUTO_REPORT_TEMPERATURES, HAS_TEMP_SENSOR) + #if ALL(AUTO_REPORT_TEMPERATURES, HAS_TEMP_SENSOR) case 155: M155(); break; // M155: Set temperature auto-report interval #endif @@ -828,7 +828,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 364: if (M364()) return; break; // M364: SCARA Psi pos3 (90 deg to Theta) #endif - #if EITHER(EXT_SOLENOID, MANUAL_SOLENOID_CONTROL) + #if ANY(EXT_SOLENOID, MANUAL_SOLENOID_CONTROL) case 380: M380(); break; // M380: Activate solenoid on active (or specified) extruder case 381: M381(); break; // M381: Disable all solenoids or, if MANUAL_SOLENOID_CONTROL, active (or specified) solenoid #endif @@ -946,7 +946,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 665: M665(); break; // M665: Set Kinematics parameters #endif - #if EITHER(DELTA, HAS_EXTRA_ENDSTOPS) + #if ANY(DELTA, HAS_EXTRA_ENDSTOPS) case 666: M666(); break; // M666: Set delta or multiple endstop adjustment #endif @@ -987,7 +987,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { #if ANY(HAS_MOTOR_CURRENT_SPI, HAS_MOTOR_CURRENT_PWM, HAS_MOTOR_CURRENT_I2C, HAS_MOTOR_CURRENT_DAC) case 907: M907(); break; // M907: Set digital trimpot motor current using axis codes. - #if EITHER(HAS_MOTOR_CURRENT_SPI, HAS_MOTOR_CURRENT_DAC) + #if ANY(HAS_MOTOR_CURRENT_SPI, HAS_MOTOR_CURRENT_DAC) case 908: M908(); break; // M908: Control digital trimpot directly. #if HAS_MOTOR_CURRENT_DAC case 909: M909(); break; // M909: Print digipot/DAC current value diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 52e8fbf802..73729491ad 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -336,7 +336,7 @@ #include "../feature/encoder_i2c.h" #endif -#if EITHER(IS_SCARA, POLAR) || defined(G0_FEEDRATE) +#if ANY(IS_SCARA, POLAR) || defined(G0_FEEDRATE) #define HAS_FAST_MOVES 1 #endif @@ -442,7 +442,7 @@ public: process_subcommands_now(keep_leveling ? FPSTR(G28_STR) : TERN(CAN_SET_LEVELING_AFTER_G28, F("G28L0"), FPSTR(G28_STR))); } - #if EITHER(HAS_AUTO_REPORTING, HOST_KEEPALIVE_FEATURE) + #if ANY(HAS_AUTO_REPORTING, HOST_KEEPALIVE_FEATURE) static bool autoreport_paused; static bool set_autoreport_paused(const bool p) { const bool was = autoreport_paused; @@ -592,7 +592,7 @@ private: static void G59(); #endif - #if BOTH(PTC_PROBE, PTC_BED) + #if ALL(PTC_PROBE, PTC_BED) static void G76(); #endif @@ -624,11 +624,11 @@ private: static void M7(); #endif - #if EITHER(AIR_ASSIST, COOLANT_FLOOD) + #if ANY(AIR_ASSIST, COOLANT_FLOOD) static void M8(); #endif - #if EITHER(AIR_ASSIST, COOLANT_CONTROL) + #if ANY(AIR_ASSIST, COOLANT_CONTROL) static void M9(); #endif @@ -672,7 +672,7 @@ private: #if ENABLED(LONG_FILENAME_HOST_SUPPORT) static void M33(); #endif - #if BOTH(SDCARD_SORT_ALPHA, SDSORT_GCODE) + #if ALL(SDCARD_SORT_ALPHA, SDSORT_GCODE) static void M34(); #endif #endif @@ -821,7 +821,7 @@ private: static void M154(); #endif - #if BOTH(AUTO_REPORT_TEMPERATURES, HAS_TEMP_SENSOR) + #if ALL(AUTO_REPORT_TEMPERATURES, HAS_TEMP_SENSOR) static void M155(); #endif @@ -993,7 +993,7 @@ private: static bool M364(); #endif - #if EITHER(EXT_SOLENOID, MANUAL_SOLENOID_CONTROL) + #if ANY(EXT_SOLENOID, MANUAL_SOLENOID_CONTROL) static void M380(); static void M381(); #endif @@ -1120,7 +1120,7 @@ private: static void M665_report(const bool forReplay=true); #endif - #if EITHER(DELTA, HAS_EXTRA_ENDSTOPS) + #if ANY(DELTA, HAS_EXTRA_ENDSTOPS) static void M666(); static void M666_report(const bool forReplay=true); #endif diff --git a/Marlin/src/gcode/geometry/G92.cpp b/Marlin/src/gcode/geometry/G92.cpp index b36f21d3c0..dfe4170620 100644 --- a/Marlin/src/gcode/geometry/G92.cpp +++ b/Marlin/src/gcode/geometry/G92.cpp @@ -88,28 +88,28 @@ void GcodeSuite::G92() { case 0: LOOP_LOGICAL_AXES(i) { if (parser.seenval(AXIS_CHAR(i))) { - const float l = parser.value_axis_units((AxisEnum)i), // Given axis coordinate value, converted to millimeters + const float l = parser.value_axis_units((AxisEnum)i), // Given axis coordinate value, converted to millimeters v = TERN0(HAS_EXTRUDERS, i == E_AXIS) ? l : LOGICAL_TO_NATIVE(l, i), // Axis position in NATIVE space (applying the existing offset) - d = v - current_position[i]; // How much is the current axis position altered by? + d = v - current_position[i]; // How much is the current axis position altered by? if (!NEAR_ZERO(d)) { - #if HAS_POSITION_SHIFT && NONE(IS_SCARA, POLARGRAPH) // When using workspaces... + #if HAS_POSITION_SHIFT && NONE(IS_SCARA, POLARGRAPH) // When using workspaces... if (TERN1(HAS_EXTRUDERS, i != E_AXIS)) { - position_shift[i] += d; // ...most axes offset the workspace... + position_shift[i] += d; // ...most axes offset the workspace... update_workspace_offset((AxisEnum)i); } else { #if HAS_EXTRUDERS sync_E = true; - current_position.e = v; // ...but E is set directly + current_position.e = v; // ...but E is set directly #endif } - #else // Without workspaces... + #else // Without workspaces... if (TERN1(HAS_EXTRUDERS, i != E_AXIS)) sync_XYZE = true; else { TERN_(HAS_EXTRUDERS, sync_E = true); } - current_position[i] = v; // ...set Current Position directly (like Marlin 1.0) + current_position[i] = v; // ...set Current Position directly (like Marlin 1.0) #endif } } diff --git a/Marlin/src/gcode/motion/G0_G1.cpp b/Marlin/src/gcode/motion/G0_G1.cpp index 88551f5eb6..957541a361 100644 --- a/Marlin/src/gcode/motion/G0_G1.cpp +++ b/Marlin/src/gcode/motion/G0_G1.cpp @@ -25,7 +25,7 @@ #include "../../MarlinCore.h" -#if BOTH(FWRETRACT, FWRETRACT_AUTORETRACT) +#if ALL(FWRETRACT, FWRETRACT_AUTORETRACT) #include "../../feature/fwretract.h" #endif @@ -72,7 +72,7 @@ void GcodeSuite::G0_G1(TERN_(HAS_FAST_MOVES, const bool fast_move/*=false*/)) { } #endif - #if BOTH(FWRETRACT, FWRETRACT_AUTORETRACT) + #if ALL(FWRETRACT, FWRETRACT_AUTORETRACT) if (MIN_AUTORETRACT <= MAX_AUTORETRACT) { // When M209 Autoretract is enabled, convert E-only moves to firmware retract/recover moves @@ -91,7 +91,7 @@ void GcodeSuite::G0_G1(TERN_(HAS_FAST_MOVES, const bool fast_move/*=false*/)) { #endif // FWRETRACT - #if EITHER(IS_SCARA, POLAR) + #if ANY(IS_SCARA, POLAR) fast_move ? prepare_fast_move_to_destination() : prepare_line_to_destination(); #else prepare_line_to_destination(); diff --git a/Marlin/src/gcode/parser.cpp b/Marlin/src/gcode/parser.cpp index 3fc1fc1625..90586e371f 100644 --- a/Marlin/src/gcode/parser.cpp +++ b/Marlin/src/gcode/parser.cpp @@ -233,7 +233,7 @@ void GCodeParser::parse(char *p) { #if ENABLED(GCODE_MOTION_MODES) - #if EITHER(BEZIER_CURVE_SUPPORT, ARC_SUPPORT) + #if ANY(BEZIER_CURVE_SUPPORT, ARC_SUPPORT) case 'I' ... 'J': case 'P': if (TERN1(BEZIER_CURVE_SUPPORT, motion_mode_codenum != 5) && TERN1(ARC_P_CIRCLES, !WITHIN(motion_mode_codenum, 2, 3)) diff --git a/Marlin/src/gcode/probe/G30.cpp b/Marlin/src/gcode/probe/G30.cpp index ad797688bb..4c044af9d6 100644 --- a/Marlin/src/gcode/probe/G30.cpp +++ b/Marlin/src/gcode/probe/G30.cpp @@ -79,7 +79,7 @@ void GcodeSuite::G30() { TERN_(HAS_PTC, ptc.set_enabled(true)); if (!isnan(measured_z)) { SERIAL_ECHOLNPGM("Bed X: ", probepos.asLogical().x, " Y: ", probepos.asLogical().y, " Z: ", measured_z); - #if EITHER(DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI) + #if ANY(DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI) char msg[31], str_1[6], str_2[6], str_3[6]; sprintf_P(msg, PSTR("X:%s, Y:%s, Z:%s"), dtostrf(probepos.x, 1, 1, str_1), diff --git a/Marlin/src/gcode/sd/M1001.cpp b/Marlin/src/gcode/sd/M1001.cpp index 3c8f38a144..c49909646e 100644 --- a/Marlin/src/gcode/sd/M1001.cpp +++ b/Marlin/src/gcode/sd/M1001.cpp @@ -34,7 +34,7 @@ #include "../queue.h" #endif -#if EITHER(SET_PROGRESS_MANUALLY, SD_REPRINT_LAST_SELECTED_FILE) +#if ANY(SET_PROGRESS_MANUALLY, SD_REPRINT_LAST_SELECTED_FILE) #include "../../lcd/marlinui.h" #endif diff --git a/Marlin/src/gcode/sd/M34.cpp b/Marlin/src/gcode/sd/M34.cpp index 2dd7dc580c..0a7d4d8c62 100644 --- a/Marlin/src/gcode/sd/M34.cpp +++ b/Marlin/src/gcode/sd/M34.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if BOTH(SDCARD_SORT_ALPHA, SDSORT_GCODE) +#if ALL(SDCARD_SORT_ALPHA, SDSORT_GCODE) #include "../gcode.h" #include "../../sd/cardreader.h" diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 5b64338662..e5cbc83459 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -31,12 +31,12 @@ #endif // MKS_LCD12864A/B is a variant of MKS_MINI_12864 -#if EITHER(MKS_LCD12864A, MKS_LCD12864B) +#if ANY(MKS_LCD12864A, MKS_LCD12864B) #define MKS_MINI_12864 #endif // MKS_MINI_12864_V3 and BTT_MINI_12864_V1 are identical to FYSETC_MINI_12864_2_1 -#if EITHER(MKS_MINI_12864_V3, BTT_MINI_12864_V1) +#if ANY(MKS_MINI_12864_V3, BTT_MINI_12864_V1) #define FYSETC_MINI_12864_2_1 #endif @@ -70,7 +70,7 @@ * IS_U8GLIB_ST7565_64128N : ST7565 128x64 LCD with SPI interface via U8GLib * IS_U8GLIB_LM6059_AF : LM6059 with Hardware SPI via U8GLib */ -#if EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) +#if ANY(MKS_MINI_12864, ENDER2_STOCKDISPLAY) #define MINIPANEL @@ -83,7 +83,7 @@ #define DOGLCD #define IS_ULTIPANEL 1 -#elif EITHER(DWIN_MARLINUI_PORTRAIT, DWIN_MARLINUI_LANDSCAPE) +#elif ANY(DWIN_MARLINUI_PORTRAIT, DWIN_MARLINUI_LANDSCAPE) #define IS_DWIN_MARLINUI 1 #define IS_ULTIPANEL 1 @@ -216,7 +216,7 @@ #define LCD_WIDTH 16 #define LCD_HEIGHT 2 -#elif EITHER(TFTGLCD_PANEL_SPI, TFTGLCD_PANEL_I2C) +#elif ANY(TFTGLCD_PANEL_SPI, TFTGLCD_PANEL_I2C) #define IS_TFTGLCD_PANEL 1 #define IS_ULTIPANEL 1 // Note that IS_ULTIPANEL leads to HAS_WIRED_LCD @@ -246,7 +246,7 @@ #define LCD_ST7920_DELAY_2 125 #define LCD_ST7920_DELAY_3 125 -#elif EITHER(ANET_FULL_GRAPHICS_LCD, ANET_FULL_GRAPHICS_LCD_ALT_WIRING) +#elif ANY(ANET_FULL_GRAPHICS_LCD, ANET_FULL_GRAPHICS_LCD_ALT_WIRING) #define IS_RRD_FG_SC 1 #define LCD_ST7920_DELAY_1 150 @@ -276,7 +276,7 @@ #endif // ST7565 / 64128N graphical displays -#if EITHER(MAKRPANEL, MINIPANEL) +#if ANY(MAKRPANEL, MINIPANEL) #define IS_ULTIPANEL 1 #define DOGLCD #if ENABLED(MAKRPANEL) @@ -337,11 +337,11 @@ #elif ANY(SPI_GRAPHICAL_TFT, TFT_320x240_SPI, TFT_480x320_SPI, TFT_LVGL_UI_SPI) #define TFT_INTERFACE_SPI #endif - #if EITHER(FSMC_GRAPHICAL_TFT, SPI_GRAPHICAL_TFT) + #if ANY(FSMC_GRAPHICAL_TFT, SPI_GRAPHICAL_TFT) #define TFT_CLASSIC_UI #elif ANY(TFT_320x240, TFT_480x320, TFT_320x240_SPI, TFT_480x320_SPI) #define TFT_COLOR_UI - #elif EITHER(TFT_LVGL_UI_FSMC, TFT_LVGL_UI_SPI) + #elif ANY(TFT_LVGL_UI_FSMC, TFT_LVGL_UI_SPI) #define TFT_LVGL_UI #endif #endif @@ -387,7 +387,7 @@ #define IS_ULTIPANEL 1 #endif -#elif EITHER(LCD_SAINSMART_I2C_1602, LCD_SAINSMART_I2C_2004) +#elif ANY(LCD_SAINSMART_I2C_1602, LCD_SAINSMART_I2C_2004) #define LCD_I2C_TYPE_PCF8575 // I2C Character-based 12864 display #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander @@ -425,7 +425,7 @@ #endif -#if EITHER(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008) && DISABLED(NO_LCD_DETECT) +#if ANY(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008) && DISABLED(NO_LCD_DETECT) #define DETECT_I2C_LCD_DEVICE 1 #endif @@ -463,15 +463,15 @@ #define IS_ULTIPANEL 1 #endif -#if EITHER(IS_ULTIPANEL, ULTRA_LCD) +#if ANY(IS_ULTIPANEL, ULTRA_LCD) #define HAS_WIRED_LCD 1 #endif -#if EITHER(IS_ULTIPANEL, REPRAPWORLD_KEYPAD) +#if ANY(IS_ULTIPANEL, REPRAPWORLD_KEYPAD) #define IS_NEWPANEL 1 #endif -#if EITHER(ZONESTAR_LCD, REPRAPWORLD_KEYPAD) +#if ANY(ZONESTAR_LCD, REPRAPWORLD_KEYPAD) #define IS_RRW_KEYPAD 1 #ifndef REPRAPWORLD_KEYPAD_MOVE_STEP #define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 @@ -493,10 +493,10 @@ #endif // Aliases for LCD features -#if EITHER(DWIN_CREALITY_LCD, DWIN_LCD_PROUI) +#if ANY(DWIN_CREALITY_LCD, DWIN_LCD_PROUI) #define HAS_DWIN_E3V2_BASIC 1 #endif -#if EITHER(HAS_DWIN_E3V2_BASIC, DWIN_CREALITY_LCD_JYERSUI) +#if ANY(HAS_DWIN_E3V2_BASIC, DWIN_CREALITY_LCD_JYERSUI) #define HAS_DWIN_E3V2 1 #endif @@ -639,10 +639,10 @@ #define E_TERN_(N) TERN_(HAS_MULTI_EXTRUDER, N) #define E_TERN0(N) TERN0(HAS_MULTI_EXTRUDER, N) -#if EITHER(SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_EXTRUDER) +#if ANY(SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_EXTRUDER) #define HAS_SWITCHING_EXTRUDER 1 #endif -#if EITHER(SWITCHING_NOZZLE, MECHANICAL_SWITCHING_NOZZLE) +#if ANY(SWITCHING_NOZZLE, MECHANICAL_SWITCHING_NOZZLE) #define HAS_SWITCHING_NOZZLE 1 #endif @@ -700,14 +700,14 @@ #endif // Number of hotends... -#if EITHER(SINGLENOZZLE, MIXING_EXTRUDER) // Only one for singlenozzle or mixing extruder +#if ANY(SINGLENOZZLE, MIXING_EXTRUDER) // Only one for singlenozzle or mixing extruder #define HOTENDS 1 -#elif HAS_SWITCHING_EXTRUDER && !HAS_SWITCHING_NOZZLE // One for each pair of abstract "extruders" +#elif HAS_SWITCHING_EXTRUDER && !HAS_SWITCHING_NOZZLE // One for each pair of abstract "extruders" #define HOTENDS E_STEPPERS #elif TEMP_SENSOR_0 - #define HOTENDS EXTRUDERS // One per extruder if at least one heater exists + #define HOTENDS EXTRUDERS // One per extruder if at least one heater exists #else - #define HOTENDS 0 // A machine with no hotends at all can still extrude + #define HOTENDS 0 // A machine with no hotends at all can still extrude #endif // More than one hotend... @@ -1104,7 +1104,7 @@ #if DISABLED(SINGLENOZZLE) #undef SINGLENOZZLE_STANDBY_TEMP #endif -#if !BOTH(HAS_FAN, SINGLENOZZLE) +#if !ALL(HAS_FAN, SINGLENOZZLE) #undef SINGLENOZZLE_STANDBY_FAN #endif @@ -1409,7 +1409,7 @@ #if DISABLED(NOZZLE_AS_PROBE) #define HAS_PROBE_XY_OFFSET 1 #endif - #if BOTH(DELTA, SENSORLESS_PROBING) + #if ALL(DELTA, SENSORLESS_PROBING) #define HAS_DELTA_SENSORLESS_PROBING 1 #endif #if NONE(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, HAS_DELTA_SENSORLESS_PROBING) @@ -1421,7 +1421,7 @@ #ifndef Z_PROBE_LOW_POINT #define Z_PROBE_LOW_POINT -5 #endif - #if EITHER(Z_PROBE_ALLEN_KEY, MAG_MOUNTED_PROBE) + #if ANY(Z_PROBE_ALLEN_KEY, MAG_MOUNTED_PROBE) #define PROBE_TRIGGERED_WHEN_STOWED_TEST 1 // Extra test for Allen Key Probe #endif #if MULTIPLE_PROBING > 1 @@ -1451,14 +1451,14 @@ */ #if ENABLED(AUTO_BED_LEVELING_UBL) #undef LCD_BED_LEVELING - #if EITHER(DELTA, SEGMENT_LEVELED_MOVES) + #if ANY(DELTA, SEGMENT_LEVELED_MOVES) #define UBL_SEGMENTED 1 #endif #endif -#if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT) +#if ANY(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT) #define ABL_PLANAR 1 #endif -#if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR) +#if ANY(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR) #define ABL_USES_GRID 1 #endif #if ANY(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_3POINT) @@ -1467,16 +1467,16 @@ #if ANY(AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_UBL, MESH_BED_LEVELING) #define HAS_MESH 1 #endif -#if EITHER(AUTO_BED_LEVELING_UBL, AUTO_BED_LEVELING_3POINT) +#if ANY(AUTO_BED_LEVELING_UBL, AUTO_BED_LEVELING_3POINT) #define NEEDS_THREE_PROBE_POINTS 1 #endif -#if EITHER(HAS_ABL_NOT_UBL, AUTO_BED_LEVELING_UBL) +#if ANY(HAS_ABL_NOT_UBL, AUTO_BED_LEVELING_UBL) #define HAS_ABL_OR_UBL 1 #if DISABLED(PROBE_MANUALLY) #define HAS_AUTOLEVEL 1 #endif #endif -#if EITHER(HAS_ABL_OR_UBL, MESH_BED_LEVELING) +#if ANY(HAS_ABL_OR_UBL, MESH_BED_LEVELING) #define HAS_LEVELING 1 #if DISABLED(AUTO_BED_LEVELING_UBL) #define PLANNER_LEVELING 1 @@ -1487,7 +1487,7 @@ #undef ENABLE_LEVELING_AFTER_G28 #undef G29_RETRY_AND_RECOVER #endif -#if !HAS_LEVELING || EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL) +#if !HAS_LEVELING || ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL) #undef PROBE_MANUALLY #endif #if ANY(HAS_BED_PROBE, PROBE_MANUALLY, MESH_BED_LEVELING) @@ -1507,13 +1507,13 @@ /** * CoreXY, CoreXZ, and CoreYZ - and their reverse */ -#if EITHER(COREXY, COREYX) +#if ANY(COREXY, COREYX) #define CORE_IS_XY 1 #endif -#if EITHER(COREXZ, COREZX) +#if ANY(COREXZ, COREZX) #define CORE_IS_XZ 1 #endif -#if EITHER(COREYZ, COREZY) +#if ANY(COREYZ, COREZY) #define CORE_IS_YZ 1 #endif #if CORE_IS_XY || CORE_IS_XZ || CORE_IS_YZ @@ -1534,7 +1534,7 @@ #define CORE_AXIS_2 C_AXIS #endif #define CORESIGN(n) (ANY(COREYX, COREZX, COREZY) ? (-(n)) : (n)) -#elif EITHER(MARKFORGED_XY, MARKFORGED_YX) +#elif ANY(MARKFORGED_XY, MARKFORGED_YX) // Markforged kinematics #define CORE_AXIS_1 A_AXIS #define CORE_AXIS_2 B_AXIS @@ -1558,7 +1558,7 @@ #endif // This flag indicates some kind of jerk storage is needed -#if EITHER(CLASSIC_JERK, IS_KINEMATIC) +#if ANY(CLASSIC_JERK, IS_KINEMATIC) #define HAS_CLASSIC_JERK 1 #endif @@ -1622,12 +1622,12 @@ * - TFT_COLOR * - GRAPHICAL_TFT_UPSCALE */ -#if EITHER(MKS_TS35_V2_0, BTT_TFT35_SPI_V1_0) // ST7796 +#if ANY(MKS_TS35_V2_0, BTT_TFT35_SPI_V1_0) // ST7796 #define TFT_DEFAULT_DRIVER ST7796 #define TFT_DEFAULT_ORIENTATION TFT_EXCHANGE_XY #define TFT_RES_480x320 #define TFT_INTERFACE_SPI -#elif EITHER(LERDGE_TFT35, ANET_ET5_TFT35) // ST7796 +#elif ANY(LERDGE_TFT35, ANET_ET5_TFT35) // ST7796 #define TFT_DEFAULT_ORIENTATION TFT_EXCHANGE_XY #define TFT_RES_480x320 #define TFT_INTERFACE_FSMC @@ -1645,7 +1645,7 @@ #define TFT_DEFAULT_ORIENTATION 0 #define TFT_RES_480x272 #define TFT_INTERFACE_FSMC -#elif EITHER(MKS_ROBIN_TFT_V1_1R, LONGER_LK_TFT28) // ILI9328 or R61505 +#elif ANY(MKS_ROBIN_TFT_V1_1R, LONGER_LK_TFT28) // ILI9328 or R61505 #define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y) #define TFT_RES_320x240 #define TFT_INTERFACE_FSMC @@ -1756,13 +1756,13 @@ #endif #endif -#if EITHER(TFT_320x240, TFT_320x240_SPI) +#if ANY(TFT_320x240, TFT_320x240_SPI) #define HAS_UI_320x240 1 -#elif EITHER(TFT_480x320, TFT_480x320_SPI) +#elif ANY(TFT_480x320, TFT_480x320_SPI) #define HAS_UI_480x320 1 -#elif EITHER(TFT_480x272, TFT_480x272_SPI) +#elif ANY(TFT_480x272, TFT_480x272_SPI) #define HAS_UI_480x272 1 -#elif EITHER(TFT_1024x600_LTDC, TFT_1024x600_SIM) +#elif ANY(TFT_1024x600_LTDC, TFT_1024x600_SIM) #define HAS_UI_1024x600 1 #endif #if ANY(HAS_UI_320x240, HAS_UI_480x320, HAS_UI_480x272) diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 343ebae1ff..683eeb3da2 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -245,8 +245,8 @@ #define DISABLE_IDLE_E #endif -#define _OR_HAS_DI(A) || BOTH(HAS_##A##_AXIS, DISABLE_IDLE_##A) -#if BOTH(HAS_EXTRUDERS, DISABLE_IDLE_E) MAP(_OR_HAS_DI, X, Y, Z, I, J, K, U, V, W) +#define _OR_HAS_DI(A) || ALL(HAS_##A##_AXIS, DISABLE_IDLE_##A) +#if ALL(HAS_EXTRUDERS, DISABLE_IDLE_E) MAP(_OR_HAS_DI, X, Y, Z, I, J, K, U, V, W) #define HAS_DISABLE_IDLE_AXES 1 #endif #undef _OR_HAS_DI @@ -768,11 +768,11 @@ #endif #endif -#if ENABLED(MIXING_EXTRUDER) && (ENABLED(RETRACT_SYNC_MIXING) || BOTH(FILAMENT_LOAD_UNLOAD_GCODES, FILAMENT_UNLOAD_ALL_EXTRUDERS)) +#if ENABLED(MIXING_EXTRUDER) && (ENABLED(RETRACT_SYNC_MIXING) || ALL(FILAMENT_LOAD_UNLOAD_GCODES, FILAMENT_UNLOAD_ALL_EXTRUDERS)) #define HAS_MIXER_SYNC_CHANNEL 1 #endif -#if EITHER(DUAL_X_CARRIAGE, MULTI_NOZZLE_DUPLICATION) +#if ANY(DUAL_X_CARRIAGE, MULTI_NOZZLE_DUPLICATION) #define HAS_DUPLICATION_MODE 1 #endif @@ -810,7 +810,7 @@ #undef MENU_ADDAUTOSTART #endif -#if EITHER(HAS_MEDIA, SET_PROGRESS_MANUALLY) +#if ANY(HAS_MEDIA, SET_PROGRESS_MANUALLY) #define HAS_PRINT_PROGRESS 1 #endif @@ -836,7 +836,7 @@ #define HAS_EXTRA_PROGRESS 1 #endif -#if HAS_PRINT_PROGRESS && EITHER(PRINT_PROGRESS_SHOW_DECIMALS, SHOW_REMAINING_TIME) +#if HAS_PRINT_PROGRESS && ANY(PRINT_PROGRESS_SHOW_DECIMALS, SHOW_REMAINING_TIME) #define HAS_PRINT_PROGRESS_PERMYRIAD 1 #endif @@ -854,7 +854,7 @@ #if ANY(X_DUAL_ENDSTOPS, Y_DUAL_ENDSTOPS, Z_MULTI_ENDSTOPS) #define HAS_EXTRA_ENDSTOPS 1 #endif -#if EITHER(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS) +#if ANY(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS) #define HAS_SOFTWARE_ENDSTOPS 1 #endif #if ANY(EXTENSIBLE_UI, IS_NEWPANEL, EMERGENCY_PARSER, HAS_ADC_BUTTONS, HAS_DWIN_E3V2) @@ -876,7 +876,7 @@ #define HAS_GCODE_M255 1 #endif -#if EITHER(DIGIPOT_MCP4018, DIGIPOT_MCP4451) +#if ANY(DIGIPOT_MCP4018, DIGIPOT_MCP4451) #define HAS_MOTOR_CURRENT_I2C 1 #endif @@ -927,7 +927,7 @@ // Spindle/Laser power display types // Defined here so sanity checks can use them // -#if EITHER(SPINDLE_FEATURE, LASER_FEATURE) +#if ANY(SPINDLE_FEATURE, LASER_FEATURE) #define HAS_CUTTER 1 #define _CUTTER_POWER_PWM255 1 #define _CUTTER_POWER_PERCENT 2 @@ -1000,7 +1000,7 @@ #endif #endif -#if EITHER(FYSETC_MINI_12864_2_1, FYSETC_242_OLED_12864) +#if ANY(FYSETC_MINI_12864_2_1, FYSETC_242_OLED_12864) #ifndef LED_USER_PRESET_GREEN #define LED_USER_PRESET_GREEN 128 #endif @@ -1035,7 +1035,7 @@ #endif #endif -#if BOTH(LED_CONTROL_MENU, NEOPIXEL2_SEPARATE) +#if ALL(LED_CONTROL_MENU, NEOPIXEL2_SEPARATE) #ifndef LED2_USER_PRESET_RED #define LED2_USER_PRESET_RED 255 #endif @@ -1058,7 +1058,7 @@ #endif // Full Touch Screen needs 'tft/xpt2046' -#if EITHER(TFT_TOUCH_DEVICE_XPT2046, HAS_TFT_LVGL_UI) +#if ANY(TFT_TOUCH_DEVICE_XPT2046, HAS_TFT_LVGL_UI) #define HAS_TFT_XPT2046 1 #endif @@ -1188,7 +1188,7 @@ #endif // Power Monitor sensors -#if EITHER(POWER_MONITOR_CURRENT, POWER_MONITOR_VOLTAGE) +#if ANY(POWER_MONITOR_CURRENT, POWER_MONITOR_VOLTAGE) #define HAS_POWER_MONITOR 1 #if ENABLED(POWER_MONITOR_CURRENT) && (ENABLED(POWER_MONITOR_VOLTAGE) || defined(POWER_MONITOR_FIXED_VOLTAGE)) #define HAS_POWER_MONITOR_WATTS 1 @@ -1207,7 +1207,7 @@ // Flags for Case Light having a color property or a single pin #if ENABLED(CASE_LIGHT_ENABLE) - #if EITHER(CASE_LIGHT_USE_NEOPIXEL, CASE_LIGHT_USE_RGB_LED) + #if ANY(CASE_LIGHT_USE_NEOPIXEL, CASE_LIGHT_USE_RGB_LED) #define CASE_LIGHT_IS_COLOR_LED 1 #else #define NEED_CASE_LIGHT_PIN 1 @@ -1224,7 +1224,7 @@ #define NEED_LSF 1 #endif -#if BOTH(HAS_TFT_LVGL_UI, CUSTOM_MENU_MAIN) +#if ALL(HAS_TFT_LVGL_UI, CUSTOM_MENU_MAIN) #define _HAS_1(N) (defined(MAIN_MENU_ITEM_##N##_DESC) && defined(MAIN_MENU_ITEM_##N##_GCODE)) #define HAS_USER_ITEM(V...) DO(HAS,||,V) #else @@ -1251,18 +1251,18 @@ #if !HAS_MULTI_SERIAL #undef MEATPACK_ON_SERIAL_PORT_2 #endif -#if EITHER(MEATPACK_ON_SERIAL_PORT_1, MEATPACK_ON_SERIAL_PORT_2) +#if ANY(MEATPACK_ON_SERIAL_PORT_1, MEATPACK_ON_SERIAL_PORT_2) #define HAS_MEATPACK 1 #endif // AVR are (usually) too limited in resources to store the configuration into the binary -#if ENABLED(CONFIGURATION_EMBEDDING) && !defined(FORCE_CONFIG_EMBED) && (defined(__AVR__) || !HAS_MEDIA || EITHER(SDCARD_READONLY, DISABLE_M503)) +#if ENABLED(CONFIGURATION_EMBEDDING) && !defined(FORCE_CONFIG_EMBED) && (defined(__AVR__) || !HAS_MEDIA || ANY(SDCARD_READONLY, DISABLE_M503)) #undef CONFIGURATION_EMBEDDING #define CANNOT_EMBED_CONFIGURATION defined(__AVR__) #endif // Input shaping -#if EITHER(INPUT_SHAPING_X, INPUT_SHAPING_Y) +#if ANY(INPUT_SHAPING_X, INPUT_SHAPING_Y) #define HAS_ZV_SHAPING 1 #endif diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 92b4463556..588484ff3e 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -38,7 +38,7 @@ #endif // Linear advance uses Jerk since E is an isolated axis -#if BOTH(HAS_JUNCTION_DEVIATION, LIN_ADVANCE) +#if ALL(HAS_JUNCTION_DEVIATION, LIN_ADVANCE) #define HAS_LINEAR_E_JERK 1 #endif @@ -48,7 +48,7 @@ // Set additional flags to let HALs choose in their Conditionals_post.h #if ANY(FLASH_EEPROM_EMULATION, SRAM_EEPROM_EMULATION, SDCARD_EEPROM_EMULATION, QSPI_EEPROM) #define USE_EMULATED_EEPROM 1 - #elif EITHER(I2C_EEPROM, SPI_EEPROM) + #elif ANY(I2C_EEPROM, SPI_EEPROM) #define USE_WIRED_EEPROM 1 #elif ENABLED(IIC_BL24CXX_EEPROM) // nothing @@ -265,7 +265,7 @@ #endif // Calibration codes only for non-core axes -#if EITHER(BACKLASH_GCODE, CALIBRATION_GCODE) +#if ANY(BACKLASH_GCODE, CALIBRATION_GCODE) #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) #define CAN_CALIBRATE(A,B) TERN0(HAS_##A##_AXIS, (_AXIS(A) == B)) #else @@ -466,14 +466,15 @@ #elif ENABLED(AZSMZ_12864) #define _LCD_CONTRAST_MIN 120 #define _LCD_CONTRAST_INIT 190 -#elif EITHER(MKS_LCD12864A, MKS_LCD12864B) +#elif ANY(MKS_LCD12864A, MKS_LCD12864B) #define _LCD_CONTRAST_MIN 120 #define _LCD_CONTRAST_INIT 205 -#elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) +#elif ANY(MKS_MINI_12864, ENDER2_STOCKDISPLAY) #define _LCD_CONTRAST_MIN 120 #define _LCD_CONTRAST_INIT 195 #elif ENABLED(FYSETC_MINI_12864_2_1) #define _LCD_CONTRAST_MIN 230 + #define _LCD_CONTRAST_MIN 255 #define _LCD_CONTRAST_INIT 255 #elif ENABLED(FYSETC_MINI_12864) #define _LCD_CONTRAST_MIN 180 @@ -558,7 +559,7 @@ #endif #endif - #if DISABLED(USB_FLASH_DRIVE_SUPPORT) || BOTH(MULTI_VOLUME, VOLUME_SD_ONBOARD) + #if DISABLED(USB_FLASH_DRIVE_SUPPORT) || ALL(MULTI_VOLUME, VOLUME_SD_ONBOARD) #if ENABLED(ONBOARD_SDIO) #define NEED_SD2CARD_SDIO 1 #else @@ -731,13 +732,13 @@ // Add LIB_MAX6675 / LIB_MAX31855 / LIB_MAX31865 to the build_flags // to select a USER library for MAX6675, MAX31855, MAX31865 // - #if BOTH(HAS_MAX6675, LIB_MAX6675) + #if ALL(HAS_MAX6675, LIB_MAX6675) #define USE_LIB_MAX6675 1 #endif - #if BOTH(HAS_MAX31855, LIB_MAX31855) + #if ALL(HAS_MAX31855, LIB_MAX31855) #define USE_ADAFRUIT_MAX31855 1 #endif - #if BOTH(HAS_MAX31865, LIB_MAX31865) + #if ALL(HAS_MAX31865, LIB_MAX31865) #define USE_ADAFRUIT_MAX31865 1 #elif HAS_MAX31865 #define LIB_INTERNAL_MAX31865 1 @@ -1375,7 +1376,7 @@ * - Z_PROBE_SLED uses SOL1_PIN, when defined (unless EXT_SOLENOID is enabled) */ #if ANY(EXT_SOLENOID, MANUAL_SOLENOID_CONTROL, PARKING_EXTRUDER, SOLENOID_PROBE, Z_PROBE_SLED) - #if PIN_EXISTS(SOL0) && (EITHER(MANUAL_SOLENOID_CONTROL, PARKING_EXTRUDER) || BOTH(EXT_SOLENOID, HAS_EXTRUDERS)) + #if PIN_EXISTS(SOL0) && (ANY(MANUAL_SOLENOID_CONTROL, PARKING_EXTRUDER) || ALL(EXT_SOLENOID, HAS_EXTRUDERS)) #define HAS_SOLENOID_0 1 #endif #if PIN_EXISTS(SOL1) && (ANY(MANUAL_SOLENOID_CONTROL, PARKING_EXTRUDER, SOLENOID_PROBE, Z_PROBE_SLED) || TERN0(EXT_SOLENOID, E_STEPPERS > 1)) @@ -1409,7 +1410,7 @@ #if ANY(STEALTHCHOP_E, STEALTHCHOP_XY, STEALTHCHOP_Z, STEALTHCHOP_I, STEALTHCHOP_J, STEALTHCHOP_K, STEALTHCHOP_U, STEALTHCHOP_V, STEALTHCHOP_W) #define STEALTHCHOP_ENABLED 1 #endif - #if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING) + #if ANY(SENSORLESS_HOMING, SENSORLESS_PROBING) #define USE_SENSORLESS 1 #endif @@ -1970,7 +1971,7 @@ #define HAS_Y_ENDSTOP 1 #endif -#if _USE_STOP(Z,,MIN,EITHER(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, HAS_DELTA_SENSORLESS_PROBING)) +#if _USE_STOP(Z,,MIN,ANY(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, HAS_DELTA_SENSORLESS_PROBING)) #define USE_Z_MIN 1 #if !HAS_DELTA_SENSORLESS_PROBING #define HAS_Z_MIN_PIN 1 @@ -2037,7 +2038,7 @@ #define HAS_W_ENDSTOP 1 #endif -#if EITHER(DUAL_X_CARRIAGE, X_DUAL_ENDSTOPS) +#if ANY(DUAL_X_CARRIAGE, X_DUAL_ENDSTOPS) #if _USE_STOP(X,2,MIN,) #define USE_X2_MIN 1 #elif _USE_STOP(X,2,MAX,) @@ -2382,10 +2383,10 @@ #endif #if ENABLED(DWIN_LCD_PROUI) - #if EITHER(PIDTEMP, PIDTEMPBED) + #if ANY(PIDTEMP, PIDTEMPBED) #define DWIN_PID_TUNE 1 #endif - #if EITHER(DWIN_PID_TUNE, MPC_AUTOTUNE) && DISABLED(DISABLE_TUNING_GRAPH) + #if ANY(DWIN_PID_TUNE, MPC_AUTOTUNE) && DISABLED(DISABLE_TUNING_GRAPH) #define SHOW_TUNING_GRAPH 1 #endif #endif @@ -2401,10 +2402,10 @@ #if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0 #define WATCH_BED 1 #endif -#if BOTH(HAS_HEATED_CHAMBER, THERMAL_PROTECTION_CHAMBER) && WATCH_CHAMBER_TEMP_PERIOD > 0 +#if ALL(HAS_HEATED_CHAMBER, THERMAL_PROTECTION_CHAMBER) && WATCH_CHAMBER_TEMP_PERIOD > 0 #define WATCH_CHAMBER 1 #endif -#if BOTH(HAS_COOLER, THERMAL_PROTECTION_COOLER) && WATCH_COOLER_TEMP_PERIOD > 0 +#if ALL(HAS_COOLER, THERMAL_PROTECTION_COOLER) && WATCH_COOLER_TEMP_PERIOD > 0 #define WATCH_COOLER 1 #endif #if NONE(THERMAL_PROTECTION_HOTENDS, THERMAL_PROTECTION_CHAMBER, THERMAL_PROTECTION_BED, THERMAL_PROTECTION_COOLER) @@ -2616,7 +2617,7 @@ /** * MIN/MAX fan PWM scaling */ -#if EITHER(HAS_FAN, USE_CONTROLLER_FAN) +#if ANY(HAS_FAN, USE_CONTROLLER_FAN) #ifndef FAN_OFF_PWM #define FAN_OFF_PWM 0 #endif @@ -2716,7 +2717,7 @@ * Helper Macros for heaters and extruder fan */ #define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, (v) ^ ENABLED(HEATER_0_INVERTING)) -#if EITHER(HAS_MULTI_HOTEND, HEATERS_PARALLEL) +#if ANY(HAS_MULTI_HOTEND, HEATERS_PARALLEL) #define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, (v) ^ ENABLED(HEATER_1_INVERTING)) #if HOTENDS > 2 #define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, (v) ^ ENABLED(HEATER_2_INVERTING)) @@ -2829,7 +2830,7 @@ /** * Bed Probe dependencies */ -#if EITHER(MESH_BED_LEVELING, HAS_BED_PROBE) +#if ANY(MESH_BED_LEVELING, HAS_BED_PROBE) #ifndef Z_PROBE_OFFSET_RANGE_MIN #define Z_PROBE_OFFSET_RANGE_MIN -20 #endif @@ -2838,7 +2839,7 @@ #endif #endif #if HAS_BED_PROBE - #if BOTH(ENDSTOPPULLUPS, USE_Z_MIN_PROBE) + #if ALL(ENDSTOPPULLUPS, USE_Z_MIN_PROBE) #define ENDSTOPPULLUP_ZMIN_PROBE #endif #ifndef XY_PROBE_FEEDRATE @@ -2896,16 +2897,16 @@ #undef ADAPTIVE_FAN_SLOWING #undef TEMP_TUNING_MAINTAIN_FAN #endif -#if !BOTH(HAS_BED_PROBE, HAS_FAN) +#if !ALL(HAS_BED_PROBE, HAS_FAN) #undef PROBING_FANS_OFF #endif -#if !BOTH(HAS_BED_PROBE, HAS_EXTRUDERS) +#if !ALL(HAS_BED_PROBE, HAS_EXTRUDERS) #undef PROBING_ESTEPPERS_OFF #elif ENABLED(PROBING_STEPPERS_OFF) // PROBING_STEPPERS_OFF implies PROBING_ESTEPPERS_OFF, make sure it is defined #define PROBING_ESTEPPERS_OFF #endif -#if EITHER(ADVANCED_PAUSE_FEATURE, PROBING_HEATERS_OFF) +#if ANY(ADVANCED_PAUSE_FEATURE, PROBING_HEATERS_OFF) #define HEATER_IDLE_HANDLER 1 #endif #if HAS_BED_PROBE && (ANY(PROBING_HEATERS_OFF, PROBING_STEPPERS_OFF, PROBING_ESTEPPERS_OFF, PROBING_FANS_OFF) || DELAY_BEFORE_PROBING > 0) @@ -2916,7 +2917,7 @@ * Advanced Pause - Filament Change */ #if ENABLED(ADVANCED_PAUSE_FEATURE) - #if ANY(HAS_MARLINUI_MENU, EXTENSIBLE_UI, DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI) || BOTH(EMERGENCY_PARSER, HOST_PROMPT_SUPPORT) + #if ANY(HAS_MARLINUI_MENU, EXTENSIBLE_UI, DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI) || ALL(EMERGENCY_PARSER, HOST_PROMPT_SUPPORT) #define M600_PURGE_MORE_RESUMABLE 1 #endif #ifndef FILAMENT_CHANGE_SLOW_LOAD_LENGTH @@ -3002,7 +3003,7 @@ /** * Default mesh area is an area with an inset margin on the print area. */ -#if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL) +#if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL) #if IS_KINEMATIC // Probing points may be verified at compile time within the radius // using static_assert(HYPOT2(X2-X1,Y2-Y1)<=sq(PRINTABLE_RADIUS),"bad probe point!") @@ -3052,7 +3053,7 @@ #if ANY(IS_TFTGLCD_PANEL, PCA9632_BUZZER, LCD_USE_I2C_BUZZER) #define USE_MARLINUI_BUZZER 1 #endif -#if EITHER(HAS_BEEPER, USE_MARLINUI_BUZZER) +#if ANY(HAS_BEEPER, USE_MARLINUI_BUZZER) #define HAS_SOUND 1 #endif @@ -3123,7 +3124,7 @@ // Define a starting height for measuring manual probe points #ifndef MANUAL_PROBE_START_Z - #if EITHER(MESH_BED_LEVELING, PROBE_MANUALLY) + #if ANY(MESH_BED_LEVELING, PROBE_MANUALLY) // Leave MANUAL_PROBE_START_Z undefined so the prior Z height will be used. // Note: If Z_CLEARANCE_BETWEEN_MANUAL_PROBES is 0 there will be no raise between points #elif ENABLED(AUTO_BED_LEVELING_UBL) && defined(Z_CLEARANCE_BETWEEN_PROBES) @@ -3149,7 +3150,7 @@ #endif #endif -#if EITHER(HAS_MARLINUI_MENU, TOUCH_UI_FTDI_EVE) +#if ANY(HAS_MARLINUI_MENU, TOUCH_UI_FTDI_EVE) // LCD timeout to status screen default is 15s #ifndef LCD_TIMEOUT_TO_STATUS #define LCD_TIMEOUT_TO_STATUS 15000 @@ -3202,7 +3203,7 @@ #define MAX_VFAT_ENTRIES 20 // by VFAT specs to fit LFN of length 255 // Nozzle park for Delta -#if BOTH(NOZZLE_PARK_FEATURE, DELTA) +#if ALL(NOZZLE_PARK_FEATURE, DELTA) #undef NOZZLE_PARK_Z_FEEDRATE #define NOZZLE_PARK_Z_FEEDRATE NOZZLE_PARK_XY_FEEDRATE #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 89cf8c5198..00b5321205 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -46,8 +46,8 @@ #if ENABLED(TEST0) || !ENABLED(TEST2) || ENABLED(TEST3) || !ENABLED(TEST1, TEST2, TEST4) #error "ENABLED is borked!" #endif -#if BOTH(TEST0, TEST1) - #error "BOTH is borked!" +#if ALL(TEST0, TEST1) + #error "ALL is borked!" #endif #if DISABLED(TEST1) || !DISABLED(TEST3) || DISABLED(TEST4) || DISABLED(TEST0, TEST1, TEST2, TEST4) || !DISABLED(TEST0, TEST3) #error "DISABLED is borked!" @@ -300,45 +300,45 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #endif #endif -#if BOTH(ENDSTOPPULLUPS, ENDSTOPPULLDOWNS) +#if ALL(ENDSTOPPULLUPS, ENDSTOPPULLDOWNS) #error "Enable only one of ENDSTOPPULLUPS or ENDSTOPPULLDOWNS." -#elif BOTH(FIL_RUNOUT_PULLUP, FIL_RUNOUT_PULLDOWN) +#elif ALL(FIL_RUNOUT_PULLUP, FIL_RUNOUT_PULLDOWN) #error "Enable only one of FIL_RUNOUT_PULLUP or FIL_RUNOUT_PULLDOWN." -#elif BOTH(ENDSTOPPULLUP_XMAX, ENDSTOPPULLDOWN_XMAX) +#elif ALL(ENDSTOPPULLUP_XMAX, ENDSTOPPULLDOWN_XMAX) #error "Enable only one of ENDSTOPPULLUP_X_MAX or ENDSTOPPULLDOWN_X_MAX." -#elif BOTH(ENDSTOPPULLUP_YMAX, ENDSTOPPULLDOWN_YMAX) +#elif ALL(ENDSTOPPULLUP_YMAX, ENDSTOPPULLDOWN_YMAX) #error "Enable only one of ENDSTOPPULLUP_Y_MAX or ENDSTOPPULLDOWN_Y_MAX." -#elif BOTH(ENDSTOPPULLUP_ZMAX, ENDSTOPPULLDOWN_ZMAX) +#elif ALL(ENDSTOPPULLUP_ZMAX, ENDSTOPPULLDOWN_ZMAX) #error "Enable only one of ENDSTOPPULLUP_Z_MAX or ENDSTOPPULLDOWN_Z_MAX." -#elif BOTH(ENDSTOPPULLUP_IMAX, ENDSTOPPULLDOWN_IMAX) +#elif ALL(ENDSTOPPULLUP_IMAX, ENDSTOPPULLDOWN_IMAX) #error "Enable only one of ENDSTOPPULLUP_I_MAX or ENDSTOPPULLDOWN_I_MAX." -#elif BOTH(ENDSTOPPULLUP_JMAX, ENDSTOPPULLDOWN_JMAX) +#elif ALL(ENDSTOPPULLUP_JMAX, ENDSTOPPULLDOWN_JMAX) #error "Enable only one of ENDSTOPPULLUP_J_MAX or ENDSTOPPULLDOWN_J_MAX." -#elif BOTH(ENDSTOPPULLUP_KMAX, ENDSTOPPULLDOWN_KMAX) +#elif ALL(ENDSTOPPULLUP_KMAX, ENDSTOPPULLDOWN_KMAX) #error "Enable only one of ENDSTOPPULLUP_K_MAX or ENDSTOPPULLDOWN_K_MAX." -#elif BOTH(ENDSTOPPULLUP_UMAX, ENDSTOPPULLDOWN_UMAX) +#elif ALL(ENDSTOPPULLUP_UMAX, ENDSTOPPULLDOWN_UMAX) #error "Enable only one of ENDSTOPPULLUP_U_MAX or ENDSTOPPULLDOWN_U_MAX." -#elif BOTH(ENDSTOPPULLUP_VMAX, ENDSTOPPULLDOWN_VMAX) +#elif ALL(ENDSTOPPULLUP_VMAX, ENDSTOPPULLDOWN_VMAX) #error "Enable only one of ENDSTOPPULLUP_V_MAX or ENDSTOPPULLDOWN_V_MAX." -#elif BOTH(ENDSTOPPULLUP_WMAX, ENDSTOPPULLDOWN_WMAX) +#elif ALL(ENDSTOPPULLUP_WMAX, ENDSTOPPULLDOWN_WMAX) #error "Enable only one of ENDSTOPPULLUP_W_MAX or ENDSTOPPULLDOWN_W_MAX." -#elif BOTH(ENDSTOPPULLUP_XMIN, ENDSTOPPULLDOWN_XMIN) +#elif ALL(ENDSTOPPULLUP_XMIN, ENDSTOPPULLDOWN_XMIN) #error "Enable only one of ENDSTOPPULLUP_X_MIN or ENDSTOPPULLDOWN_X_MIN." -#elif BOTH(ENDSTOPPULLUP_YMIN, ENDSTOPPULLDOWN_YMIN) +#elif ALL(ENDSTOPPULLUP_YMIN, ENDSTOPPULLDOWN_YMIN) #error "Enable only one of ENDSTOPPULLUP_Y_MIN or ENDSTOPPULLDOWN_Y_MIN." -#elif BOTH(ENDSTOPPULLUP_ZMIN, ENDSTOPPULLDOWN_ZMIN) +#elif ALL(ENDSTOPPULLUP_ZMIN, ENDSTOPPULLDOWN_ZMIN) #error "Enable only one of ENDSTOPPULLUP_Z_MIN or ENDSTOPPULLDOWN_Z_MIN." -#elif BOTH(ENDSTOPPULLUP_IMIN, ENDSTOPPULLDOWN_IMIN) +#elif ALL(ENDSTOPPULLUP_IMIN, ENDSTOPPULLDOWN_IMIN) #error "Enable only one of ENDSTOPPULLUP_I_MIN or ENDSTOPPULLDOWN_I_MIN." -#elif BOTH(ENDSTOPPULLUP_JMIN, ENDSTOPPULLDOWN_JMIN) +#elif ALL(ENDSTOPPULLUP_JMIN, ENDSTOPPULLDOWN_JMIN) #error "Enable only one of ENDSTOPPULLUP_J_MIN or ENDSTOPPULLDOWN_J_MIN." -#elif BOTH(ENDSTOPPULLUP_KMIN, ENDSTOPPULLDOWN_KMIN) +#elif ALL(ENDSTOPPULLUP_KMIN, ENDSTOPPULLDOWN_KMIN) #error "Enable only one of ENDSTOPPULLUP_K_MIN or ENDSTOPPULLDOWN_K_MIN." -#elif BOTH(ENDSTOPPULLUP_UMIN, ENDSTOPPULLDOWN_UMIN) +#elif ALL(ENDSTOPPULLUP_UMIN, ENDSTOPPULLDOWN_UMIN) #error "Enable only one of ENDSTOPPULLUP_U_MIN or ENDSTOPPULLDOWN_U_MIN." -#elif BOTH(ENDSTOPPULLUP_VMIN, ENDSTOPPULLDOWN_VMIN) +#elif ALL(ENDSTOPPULLUP_VMIN, ENDSTOPPULLDOWN_VMIN) #error "Enable only one of ENDSTOPPULLUP_V_MIN or ENDSTOPPULLDOWN_V_MIN." -#elif BOTH(ENDSTOPPULLUP_WMIN, ENDSTOPPULLDOWN_WMIN) +#elif ALL(ENDSTOPPULLUP_WMIN, ENDSTOPPULLDOWN_WMIN) #error "Enable only one of ENDSTOPPULLUP_W_MIN or ENDSTOPPULLDOWN_W_MIN." #endif @@ -455,7 +455,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L * I2C Position Encoders */ #if ENABLED(I2C_POSITION_ENCODERS) - #if !BOTH(BABYSTEPPING, BABYSTEP_XY) + #if !ALL(BABYSTEPPING, BABYSTEP_XY) #error "I2C_POSITION_ENCODERS requires BABYSTEPPING and BABYSTEP_XY." #elif !WITHIN(I2CPE_ENCODER_CNT, 1, 5) #error "I2CPE_ENCODER_CNT must be between 1 and 5." @@ -468,11 +468,11 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #if ENABLED(BABYSTEPPING) #if ENABLED(SCARA) #error "BABYSTEPPING is not implemented for SCARA yet." - #elif ENABLED(BABYSTEP_XY) && EITHER(MARKFORGED_XY, MARKFORGED_YX) + #elif ENABLED(BABYSTEP_XY) && ANY(MARKFORGED_XY, MARKFORGED_YX) #error "BABYSTEPPING only implemented for Z axis on MarkForged." - #elif BOTH(DELTA, BABYSTEP_XY) + #elif ALL(DELTA, BABYSTEP_XY) #error "BABYSTEPPING only implemented for Z axis on deltabots." - #elif BOTH(BABYSTEP_ZPROBE_OFFSET, MESH_BED_LEVELING) + #elif ALL(BABYSTEP_ZPROBE_OFFSET, MESH_BED_LEVELING) #error "MESH_BED_LEVELING and BABYSTEP_ZPROBE_OFFSET is not a valid combination" #elif ENABLED(BABYSTEP_ZPROBE_OFFSET) && !HAS_BED_PROBE #error "BABYSTEP_ZPROBE_OFFSET requires a probe." @@ -482,7 +482,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "BABYSTEP_GFX_OVERLAY requires a BABYSTEP_ZPROBE_OFFSET." #elif ENABLED(BABYSTEP_HOTEND_Z_OFFSET) && !HAS_HOTEND_OFFSET #error "BABYSTEP_HOTEND_Z_OFFSET requires 2 or more HOTENDS." - #elif BOTH(BABYSTEP_ALWAYS_AVAILABLE, MOVE_Z_WHEN_IDLE) + #elif ALL(BABYSTEP_ALWAYS_AVAILABLE, MOVE_Z_WHEN_IDLE) #error "BABYSTEP_ALWAYS_AVAILABLE and MOVE_Z_WHEN_IDLE are incompatible." #elif !defined(BABYSTEP_MULTIPLICATOR_Z) #error "BABYSTEPPING requires BABYSTEP_MULTIPLICATOR_Z." @@ -520,21 +520,21 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "FIL_RUNOUT3_PIN is required with NUM_RUNOUT_SENSORS >= 3." #elif NUM_RUNOUT_SENSORS >= 2 && !PIN_EXISTS(FIL_RUNOUT2) #error "FIL_RUNOUT2_PIN is required with NUM_RUNOUT_SENSORS >= 2." - #elif BOTH(FIL_RUNOUT1_PULLUP, FIL_RUNOUT1_PULLDOWN) + #elif ALL(FIL_RUNOUT1_PULLUP, FIL_RUNOUT1_PULLDOWN) #error "You can't enable FIL_RUNOUT1_PULLUP and FIL_RUNOUT1_PULLDOWN at the same time." - #elif BOTH(FIL_RUNOUT2_PULLUP, FIL_RUNOUT2_PULLDOWN) + #elif ALL(FIL_RUNOUT2_PULLUP, FIL_RUNOUT2_PULLDOWN) #error "You can't enable FIL_RUNOUT2_PULLUP and FIL_RUNOUT2_PULLDOWN at the same time." - #elif BOTH(FIL_RUNOUT3_PULLUP, FIL_RUNOUT3_PULLDOWN) + #elif ALL(FIL_RUNOUT3_PULLUP, FIL_RUNOUT3_PULLDOWN) #error "You can't enable FIL_RUNOUT3_PULLUP and FIL_RUNOUT3_PULLDOWN at the same time." - #elif BOTH(FIL_RUNOUT4_PULLUP, FIL_RUNOUT4_PULLDOWN) + #elif ALL(FIL_RUNOUT4_PULLUP, FIL_RUNOUT4_PULLDOWN) #error "You can't enable FIL_RUNOUT4_PULLUP and FIL_RUNOUT4_PULLDOWN at the same time." - #elif BOTH(FIL_RUNOUT5_PULLUP, FIL_RUNOUT5_PULLDOWN) + #elif ALL(FIL_RUNOUT5_PULLUP, FIL_RUNOUT5_PULLDOWN) #error "You can't enable FIL_RUNOUT5_PULLUP and FIL_RUNOUT5_PULLDOWN at the same time." - #elif BOTH(FIL_RUNOUT6_PULLUP, FIL_RUNOUT6_PULLDOWN) + #elif ALL(FIL_RUNOUT6_PULLUP, FIL_RUNOUT6_PULLDOWN) #error "You can't enable FIL_RUNOUT6_PULLUP and FIL_RUNOUT6_PULLDOWN at the same time." - #elif BOTH(FIL_RUNOUT7_PULLUP, FIL_RUNOUT7_PULLDOWN) + #elif ALL(FIL_RUNOUT7_PULLUP, FIL_RUNOUT7_PULLDOWN) #error "You can't enable FIL_RUNOUT7_PULLUP and FIL_RUNOUT7_PULLDOWN at the same time." - #elif BOTH(FIL_RUNOUT8_PULLUP, FIL_RUNOUT8_PULLDOWN) + #elif ALL(FIL_RUNOUT8_PULLUP, FIL_RUNOUT8_PULLDOWN) #error "You can't enable FIL_RUNOUT8_PULLUP and FIL_RUNOUT8_PULLDOWN at the same time." #elif FILAMENT_RUNOUT_DISTANCE_MM < 0 #error "FILAMENT_RUNOUT_DISTANCE_MM must be greater than or equal to zero." @@ -587,7 +587,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Individual axis homing is useless for DELTAS */ -#if BOTH(INDIVIDUAL_AXIS_HOMING_MENU, DELTA) +#if ALL(INDIVIDUAL_AXIS_HOMING_MENU, DELTA) #error "INDIVIDUAL_AXIS_HOMING_MENU is incompatible with DELTA kinematics." #endif @@ -691,7 +691,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * A Dual Nozzle carriage with switching servo */ -#if BOTH(SWITCHING_NOZZLE, MECHANICAL_SWITCHING_NOZZLE) +#if ALL(SWITCHING_NOZZLE, MECHANICAL_SWITCHING_NOZZLE) #error "Enable only one of SWITCHING_NOZZLE or MECHANICAL_SWITCHING_NOZZLE." #elif ENABLED(MECHANICAL_SWITCHING_NOZZLE) #if EXTRUDERS != 2 @@ -747,7 +747,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Single Stepper Dual Extruder with switching servo */ -#if BOTH(SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_EXTRUDER) +#if ALL(SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_EXTRUDER) #error "Enable only one of SWITCHING_EXTRUDER or MECHANICAL_SWITCHING_EXTRUDER." #elif ENABLED(MECHANICAL_SWITCHING_EXTRUDER) #if EXTRUDERS < 2 @@ -855,7 +855,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * (Magnetic) Parking Extruder requirements */ -#if EITHER(PARKING_EXTRUDER, MAGNETIC_PARKING_EXTRUDER) +#if ANY(PARKING_EXTRUDER, MAGNETIC_PARKING_EXTRUDER) #if ENABLED(EXT_SOLENOID) #error "(MAGNETIC_)PARKING_EXTRUDER and EXT_SOLENOID are incompatible. (Pins are used twice.)" #elif EXTRUDERS != 2 @@ -913,7 +913,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Magnetic / Electromagnetic Switching Toolhead requirements */ -#if EITHER(MAGNETIC_SWITCHING_TOOLHEAD, ELECTROMAGNETIC_SWITCHING_TOOLHEAD) +#if ANY(MAGNETIC_SWITCHING_TOOLHEAD, ELECTROMAGNETIC_SWITCHING_TOOLHEAD) #ifndef SWITCHING_TOOLHEAD_Y_POS #error "(ELECTRO)?MAGNETIC_SWITCHING_TOOLHEAD requires SWITCHING_TOOLHEAD_Y_POS" #elif !defined(SWITCHING_TOOLHEAD_X_POS) @@ -983,7 +983,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Extruder temperature control algorithm - There can be only one! */ -#if BOTH(PIDTEMP, MPCTEMP) +#if ALL(PIDTEMP, MPCTEMP) #error "Only enable PIDTEMP or MPCTEMP, but not both." #undef MPCTEMP #undef MPC_AUTOTUNE @@ -1007,7 +1007,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Bed Heating Options - PID vs Limit Switching */ -#if BOTH(PIDTEMPBED, BED_LIMIT_SWITCHING) +#if ALL(PIDTEMPBED, BED_LIMIT_SWITCHING) #error "To use BED_LIMIT_SWITCHING you must disable PIDTEMPBED." #endif @@ -1030,7 +1030,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Chamber Heating Options - PID vs Limit Switching */ -#if BOTH(PIDTEMPCHAMBER, CHAMBER_LIMIT_SWITCHING) +#if ALL(PIDTEMPCHAMBER, CHAMBER_LIMIT_SWITCHING) #error "To use CHAMBER_LIMIT_SWITCHING you must disable PIDTEMPCHAMBER." #endif @@ -1196,7 +1196,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Some things should not be used on Belt Printers */ -#if BOTH(BELTPRINTER, HAS_LEVELING) +#if ALL(BELTPRINTER, HAS_LEVELING) #error "Bed Leveling is not compatible with BELTPRINTER." #endif @@ -1218,7 +1218,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Z_PROBE_SLED is incompatible with DELTA */ - #if BOTH(Z_PROBE_SLED, DELTA) + #if ALL(Z_PROBE_SLED, DELTA) #error "You cannot use Z_PROBE_SLED with DELTA." #endif @@ -1361,7 +1361,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Mag mounted probe requirements */ - #if BOTH(MAG_MOUNTED_PROBE, USE_PROBE_FOR_Z_HOMING) && DISABLED(Z_SAFE_HOMING) + #if ALL(MAG_MOUNTED_PROBE, USE_PROBE_FOR_Z_HOMING) && DISABLED(Z_SAFE_HOMING) #error "MAG_MOUNTED_PROBE requires Z_SAFE_HOMING if it's being used to home Z." #endif @@ -1586,7 +1586,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #endif #endif -#if BOTH(PREHEAT_BEFORE_PROBING, PREHEAT_BEFORE_LEVELING) +#if ALL(PREHEAT_BEFORE_PROBING, PREHEAT_BEFORE_LEVELING) #error "Disable PREHEAT_BEFORE_LEVELING when using PREHEAT_BEFORE_PROBING." #endif @@ -1703,7 +1703,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Make sure DISABLE_[XYZ] compatible with selected homing options */ -#if HAS_DISABLE_MAIN_AXES && EITHER(HOME_AFTER_DEACTIVATE, Z_SAFE_HOMING) +#if HAS_DISABLE_MAIN_AXES && ANY(HOME_AFTER_DEACTIVATE, Z_SAFE_HOMING) #error "DISABLE_[XYZIJKUVW] is not compatible with HOME_AFTER_DEACTIVATE or Z_SAFE_HOMING." #endif @@ -1725,7 +1725,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "POWER_MONITOR_CURRENT requires a valid POWER_MONITOR_CURRENT_PIN." #elif ENABLED(POWER_MONITOR_VOLTAGE) && !PIN_EXISTS(POWER_MONITOR_VOLTAGE) #error "POWER_MONITOR_VOLTAGE requires POWER_MONITOR_VOLTAGE_PIN to be defined." -#elif BOTH(POWER_MONITOR_CURRENT, POWER_MONITOR_VOLTAGE) && POWER_MONITOR_CURRENT_PIN == POWER_MONITOR_VOLTAGE_PIN +#elif ALL(POWER_MONITOR_CURRENT, POWER_MONITOR_VOLTAGE) && POWER_MONITOR_CURRENT_PIN == POWER_MONITOR_VOLTAGE_PIN #error "POWER_MONITOR_CURRENT_PIN and POWER_MONITOR_VOLTAGE_PIN must be different." #endif @@ -1757,7 +1757,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #if ENABLED(SAV_3DGLCD) #if NONE(U8GLIB_SSD1306, U8GLIB_SH1106) #error "Enable a SAV_3DGLCD display type: U8GLIB_SSD1306 or U8GLIB_SH1106." - #elif BOTH(U8GLIB_SSD1306, U8GLIB_SH1106) + #elif ALL(U8GLIB_SSD1306, U8GLIB_SH1106) #error "Only enable one SAV_3DGLCD display type: U8GLIB_SSD1306 or U8GLIB_SH1106." #endif #endif @@ -1841,7 +1841,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Make sure FAN_*_PWM values are sensible */ -#if EITHER(HAS_FAN, USE_CONTROLLER_FAN) +#if ANY(HAS_FAN, USE_CONTROLLER_FAN) #if !WITHIN(FAN_MIN_PWM, 0, 255) #error "FAN_MIN_PWM must be a value from 0 to 255." #elif !WITHIN(FAN_MAX_PWM, 0, 255) @@ -2047,7 +2047,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #elif !ANY_PIN(TEMP_0, TEMP_0_CS) && !TEMP_SENSOR_0_IS_DUMMY #error "TEMP_0_PIN or TEMP_0_CS_PIN not defined for this board." #endif - #if EITHER(HAS_MULTI_HOTEND, HEATERS_PARALLEL) && !HAS_HEATER_1 + #if ANY(HAS_MULTI_HOTEND, HEATERS_PARALLEL) && !HAS_HEATER_1 #error "HEATER_1_PIN is not defined. TEMP_SENSOR_1 might not be set, or the board (not EEB / EEF?) doesn't define a pin." #endif #if HAS_MULTI_HOTEND @@ -2230,7 +2230,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * FYSETC/MKS/BTT Mini Panel Requirements */ -#if EITHER(FYSETC_242_OLED_12864, FYSETC_MINI_12864_2_1) +#if ANY(FYSETC_242_OLED_12864, FYSETC_MINI_12864_2_1) #ifndef NEO_RGB #define NEO_RGB 123 #define FAUX_RGB 1 @@ -2244,7 +2244,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #undef NEO_RGB #undef FAUX_RGB #endif -#elif EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) && DISABLED(RGB_LED) +#elif ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) && DISABLED(RGB_LED) #error "Your FYSETC Mini Panel requires RGB_LED." #endif @@ -2354,12 +2354,12 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L // Z homing requirements #if Z_HOME_TO_MAX && ENABLED(USE_PROBE_FOR_Z_HOMING) #error "Z_HOME_DIR must be -1 when homing Z with the probe." - #elif BOTH(HOMING_Z_WITH_PROBE, Z_MULTI_ENDSTOPS) + #elif ALL(HOMING_Z_WITH_PROBE, Z_MULTI_ENDSTOPS) #error "Z_MULTI_ENDSTOPS is incompatible with USE_PROBE_FOR_Z_HOMING." #endif #endif -#if BOTH(HOME_Z_FIRST, USE_PROBE_FOR_Z_HOMING) +#if ALL(HOME_Z_FIRST, USE_PROBE_FOR_Z_HOMING) #error "HOME_Z_FIRST can't be used when homing Z with a probe." #endif @@ -2498,21 +2498,21 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L * Fan check */ #if HAS_FANCHECK - #if BOTH(E0_FAN_TACHO_PULLUP, E0_FAN_TACHO_PULLDOWN) + #if ALL(E0_FAN_TACHO_PULLUP, E0_FAN_TACHO_PULLDOWN) #error "Enable only one of E0_FAN_TACHO_PULLUP or E0_FAN_TACHO_PULLDOWN." - #elif BOTH(E1_FAN_TACHO_PULLUP, E1_FAN_TACHO_PULLDOWN) + #elif ALL(E1_FAN_TACHO_PULLUP, E1_FAN_TACHO_PULLDOWN) #error "Enable only one of E1_FAN_TACHO_PULLUP or E1_FAN_TACHO_PULLDOWN." - #elif BOTH(E2_FAN_TACHO_PULLUP, E2_FAN_TACHO_PULLDOWN) + #elif ALL(E2_FAN_TACHO_PULLUP, E2_FAN_TACHO_PULLDOWN) #error "Enable only one of E2_FAN_TACHO_PULLUP or E2_FAN_TACHO_PULLDOWN." - #elif BOTH(E3_FAN_TACHO_PULLUP, E3_FAN_TACHO_PULLDOWN) + #elif ALL(E3_FAN_TACHO_PULLUP, E3_FAN_TACHO_PULLDOWN) #error "Enable only one of E3_FAN_TACHO_PULLUP or E3_FAN_TACHO_PULLDOWN." - #elif BOTH(E4_FAN_TACHO_PULLUP, E4_FAN_TACHO_PULLDOWN) + #elif ALL(E4_FAN_TACHO_PULLUP, E4_FAN_TACHO_PULLDOWN) #error "Enable only one of E4_FAN_TACHO_PULLUP or E4_FAN_TACHO_PULLDOWN." - #elif BOTH(E5_FAN_TACHO_PULLUP, E5_FAN_TACHO_PULLDOWN) + #elif ALL(E5_FAN_TACHO_PULLUP, E5_FAN_TACHO_PULLDOWN) #error "Enable only one of E5_FAN_TACHO_PULLUP or E5_FAN_TACHO_PULLDOWN." - #elif BOTH(E6_FAN_TACHO_PULLUP, E6_FAN_TACHO_PULLDOWN) + #elif ALL(E6_FAN_TACHO_PULLUP, E6_FAN_TACHO_PULLDOWN) #error "Enable only one of E6_FAN_TACHO_PULLUP or E6_FAN_TACHO_PULLDOWN." - #elif BOTH(E7_FAN_TACHO_PULLUP, E7_FAN_TACHO_PULLDOWN) + #elif ALL(E7_FAN_TACHO_PULLUP, E7_FAN_TACHO_PULLDOWN) #error "Enable only one of E7_FAN_TACHO_PULLUP or E7_FAN_TACHO_PULLDOWN." #endif #elif ENABLED(AUTO_REPORT_FANS) @@ -2640,7 +2640,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #if ENABLED(TFT_GENERIC) && NONE(TFT_INTERFACE_FSMC, TFT_INTERFACE_SPI) #error "TFT_GENERIC requires either TFT_INTERFACE_FSMC or TFT_INTERFACE_SPI interface." -#elif BOTH(TFT_INTERFACE_FSMC, TFT_INTERFACE_SPI) +#elif ALL(TFT_INTERFACE_FSMC, TFT_INTERFACE_SPI) #error "Please enable only one of TFT_INTERFACE_FSMC or TFT_INTERFACE_SPI." #endif @@ -2664,7 +2664,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "GRAPHICAL_TFT_UPSCALE must be between 2 and 8." #endif -#if BOTH(CHIRON_TFT_STANDARD, CHIRON_TFT_NEW) +#if ALL(CHIRON_TFT_STANDARD, CHIRON_TFT_NEW) #error "Please select only one of CHIRON_TFT_STANDARD or CHIRON_TFT_NEW." #endif @@ -2686,7 +2686,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L static_assert(strcmp(STRINGIFY(LCD_LANGUAGE_2), "zh_CN") == 0, "LCD_LANGUAGE_2 must be set to zh_CN for ANYCUBIC_LCD_VYPER."); #endif -#if EITHER(MKS_TS35_V2_0, BTT_TFT35_SPI_V1_0) && SD_CONNECTION_IS(LCD) +#if ANY(MKS_TS35_V2_0, BTT_TFT35_SPI_V1_0) && SD_CONNECTION_IS(LCD) #error "SDCARD_CONNECTION cannot be set to LCD for the enabled TFT. No available SD card reader." #endif @@ -2696,25 +2696,25 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #if ENABLED(DWIN_CREALITY_LCD) #if !HAS_MEDIA #error "DWIN_CREALITY_LCD requires SDSUPPORT to be enabled." - #elif EITHER(PID_EDIT_MENU, PID_AUTOTUNE_MENU) + #elif ANY(PID_EDIT_MENU, PID_AUTOTUNE_MENU) #error "DWIN_CREALITY_LCD does not support PID_EDIT_MENU or PID_AUTOTUNE_MENU." - #elif EITHER(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) + #elif ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) #error "DWIN_CREALITY_LCD does not support MPC_EDIT_MENU or MPC_AUTOTUNE_MENU." #elif ENABLED(LCD_BED_TRAMMING) #error "DWIN_CREALITY_LCD does not support LCD_BED_TRAMMING." - #elif BOTH(LCD_BED_LEVELING, PROBE_MANUALLY) + #elif ALL(LCD_BED_LEVELING, PROBE_MANUALLY) #error "DWIN_CREALITY_LCD does not support LCD_BED_LEVELING with PROBE_MANUALLY." #endif #elif ENABLED(DWIN_LCD_PROUI) #if !HAS_MEDIA #error "DWIN_LCD_PROUI requires SDSUPPORT to be enabled." - #elif EITHER(PID_EDIT_MENU, PID_AUTOTUNE_MENU) + #elif ANY(PID_EDIT_MENU, PID_AUTOTUNE_MENU) #error "DWIN_LCD_PROUI does not support PID_EDIT_MENU or PID_AUTOTUNE_MENU." - #elif EITHER(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) + #elif ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) #error "DWIN_LCD_PROUI does not support MPC_EDIT_MENU or MPC_AUTOTUNE_MENU." #elif ENABLED(LCD_BED_TRAMMING) #error "DWIN_LCD_PROUI does not support LCD_BED_TRAMMING." - #elif BOTH(LCD_BED_LEVELING, PROBE_MANUALLY) + #elif ALL(LCD_BED_LEVELING, PROBE_MANUALLY) #error "DWIN_LCD_PROUI does not support LCD_BED_LEVELING with PROBE_MANUALLY." #endif #endif @@ -2735,9 +2735,9 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L // Startup Tune requirements #ifdef STARTUP_TUNE - #if EITHER(ANYCUBIC_LCD_CHIRON, ANYCUBIC_LCD_VYPER) + #if ANY(ANYCUBIC_LCD_CHIRON, ANYCUBIC_LCD_VYPER) #error "STARTUP_TUNE should be disabled with ANYCUBIC_LCD_CHIRON or ANYCUBIC_LCD_VYPER." - #elif !(BOTH(HAS_BEEPER, SPEAKER) || USE_MARLINUI_BUZZER) + #elif !(ALL(HAS_BEEPER, SPEAKER) || USE_MARLINUI_BUZZER) #error "STARTUP_TUNE requires a BEEPER_PIN with SPEAKER or USE_MARLINUI_BUZZER." #undef STARTUP_TUNE #endif @@ -3232,7 +3232,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #endif // !SPI_ENDSTOPS - #if ENABLED(DELTA) && !BOTH(STEALTHCHOP_XY, STEALTHCHOP_Z) + #if ENABLED(DELTA) && !ALL(STEALTHCHOP_XY, STEALTHCHOP_Z) #error "SENSORLESS_HOMING on DELTA currently requires STEALTHCHOP_XY and STEALTHCHOP_Z." #elif ENDSTOP_NOISE_THRESHOLD #error "SENSORLESS_HOMING is incompatible with ENDSTOP_NOISE_THRESHOLD." @@ -3262,7 +3262,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "CoreXZ requires both X and Z to use sensorless homing if either one does." #elif CORE_IS_YZ && Y_SENSORLESS != Z_SENSORLESS && !HOMING_Z_WITH_PROBE #error "CoreYZ requires both Y and Z to use sensorless homing if either one does." -#elif EITHER(MARKFORGED_XY, MARKFORGED_YX) && X_SENSORLESS != Y_SENSORLESS +#elif ANY(MARKFORGED_XY, MARKFORGED_YX) && X_SENSORLESS != Y_SENSORLESS #error "MARKFORGED requires both X and Y to use sensorless homing if either one does." #endif @@ -3350,7 +3350,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L * Digipot requirement */ #if HAS_MOTOR_CURRENT_I2C - #if BOTH(DIGIPOT_MCP4018, DIGIPOT_MCP4451) + #if ALL(DIGIPOT_MCP4018, DIGIPOT_MCP4451) #error "Enable only one of DIGIPOT_MCP4018 or DIGIPOT_MCP4451." #elif !MB(MKS_SBASE, AZTEEG_X5_GT, AZTEEG_X5_MINI, AZTEEG_X5_MINI_WIFI) \ && (!defined(DIGIPOTS_I2C_SDA_X) || !defined(DIGIPOTS_I2C_SDA_Y) || !defined(DIGIPOTS_I2C_SDA_Z) || !defined(DIGIPOTS_I2C_SDA_E0) || !defined(DIGIPOTS_I2C_SDA_E1)) @@ -3423,7 +3423,7 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." #undef _PLUS_TEST #undef _EXTRA_NOTE -#if BOTH(CNC_COORDINATE_SYSTEMS, NO_WORKSPACE_OFFSETS) +#if ALL(CNC_COORDINATE_SYSTEMS, NO_WORKSPACE_OFFSETS) #error "CNC_COORDINATE_SYSTEMS is incompatible with NO_WORKSPACE_OFFSETS." #endif @@ -3459,18 +3459,18 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." #endif #endif -#if BOTH(X_AXIS_TWIST_COMPENSATION, NOZZLE_AS_PROBE) +#if ALL(X_AXIS_TWIST_COMPENSATION, NOZZLE_AS_PROBE) #error "X_AXIS_TWIST_COMPENSATION is incompatible with NOZZLE_AS_PROBE." #endif #if ENABLED(POWER_LOSS_RECOVERY) #if ENABLED(BACKUP_POWER_SUPPLY) && !PIN_EXISTS(POWER_LOSS) #error "BACKUP_POWER_SUPPLY requires a POWER_LOSS_PIN." - #elif BOTH(POWER_LOSS_PULLUP, POWER_LOSS_PULLDOWN) + #elif ALL(POWER_LOSS_PULLUP, POWER_LOSS_PULLDOWN) #error "You can't enable POWER_LOSS_PULLUP and POWER_LOSS_PULLDOWN at the same time." #elif ENABLED(POWER_LOSS_RECOVER_ZHOME) && Z_HOME_TO_MAX #error "POWER_LOSS_RECOVER_ZHOME is not needed on a machine that homes to ZMAX." - #elif BOTH(IS_CARTESIAN, POWER_LOSS_RECOVER_ZHOME) && Z_HOME_TO_MIN && !defined(POWER_LOSS_ZHOME_POS) + #elif ALL(IS_CARTESIAN, POWER_LOSS_RECOVER_ZHOME) && Z_HOME_TO_MIN && !defined(POWER_LOSS_ZHOME_POS) #error "POWER_LOSS_RECOVER_ZHOME requires POWER_LOSS_ZHOME_POS for a Cartesian that homes to ZMIN." #endif #endif @@ -3532,7 +3532,7 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." #error "BACKLASH_COMPENSATION requires BACKLASH_DISTANCE_MM." #elif !defined(BACKLASH_CORRECTION) #error "BACKLASH_COMPENSATION requires BACKLASH_CORRECTION." - #elif EITHER(MARKFORGED_XY, MARKFORGED_YX) + #elif ANY(MARKFORGED_XY, MARKFORGED_YX) constexpr float backlash_arr[] = BACKLASH_DISTANCE_MM; static_assert(!backlash_arr[CORE_AXIS_1] && !backlash_arr[CORE_AXIS_2], "BACKLASH_COMPENSATION can only apply to " STRINGIFY(NORMAL_AXIS) " on a MarkForged system."); @@ -3582,7 +3582,7 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." /** * Require soft endstops for certain setups */ -#if !BOTH(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS) +#if !ALL(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS) #if ENABLED(DUAL_X_CARRIAGE) #error "DUAL_X_CARRIAGE requires both MIN_ and MAX_SOFTWARE_ENDSTOPS." #elif HAS_HOTEND_OFFSET @@ -3643,7 +3643,7 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." #endif #define _PIN_CONFLICT(P) (PIN_EXISTS(P) && P##_PIN == SPINDLE_LASER_PWM_PIN) - #if BOTH(SPINDLE_FEATURE, LASER_FEATURE) + #if ALL(SPINDLE_FEATURE, LASER_FEATURE) #error "Enable only one of SPINDLE_FEATURE or LASER_FEATURE." #elif NONE(SPINDLE_SERVO, SPINDLE_LASER_USE_PWM) && !PIN_EXISTS(SPINDLE_LASER_ENA) #error "(SPINDLE|LASER)_FEATURE requires SPINDLE_LASER_ENA_PIN, SPINDLE_LASER_USE_PWM, or SPINDLE_SERVO to control the power." @@ -3792,7 +3792,7 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." #error "ESP3D_WIFISUPPORT requires an ESP32 MOTHERBOARD." #elif ENABLED(WEBSUPPORT) && NONE(ARDUINO_ARCH_ESP32, WIFISUPPORT) #error "WEBSUPPORT requires WIFISUPPORT and an ESP32 MOTHERBOARD." -#elif BOTH(ESP3D_WIFISUPPORT, WIFISUPPORT) +#elif ALL(ESP3D_WIFISUPPORT, WIFISUPPORT) #error "Enable only one of ESP3D_WIFISUPPORT or WIFISUPPORT." #endif @@ -3810,14 +3810,14 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." /** * Sanity Check for MEATPACK and BINARY_FILE_TRANSFER Features */ -#if BOTH(HAS_MEATPACK, BINARY_FILE_TRANSFER) +#if ALL(HAS_MEATPACK, BINARY_FILE_TRANSFER) #error "Either enable MEATPACK_ON_SERIAL_PORT_* or BINARY_FILE_TRANSFER, not both." #endif /** * Sanity Check for Slim LCD Menus and Probe Offset Wizard */ -#if BOTH(SLIM_LCD_MENUS, PROBE_OFFSET_WIZARD) +#if ALL(SLIM_LCD_MENUS, PROBE_OFFSET_WIZARD) #error "SLIM_LCD_MENUS disables \"Advanced Settings > Probe Offsets > PROBE_OFFSET_WIZARD.\"" #endif @@ -3854,7 +3854,7 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." /** * Sanity check for MIXING_EXTRUDER & DISTINCT_E_FACTORS these are not compatible */ -#if BOTH(MIXING_EXTRUDER, DISTINCT_E_FACTORS) +#if ALL(MIXING_EXTRUDER, DISTINCT_E_FACTORS) #error "MIXING_EXTRUDER can't be used with DISTINCT_E_FACTORS. But you may use SINGLENOZZLE with DISTINCT_E_FACTORS." #endif @@ -3988,7 +3988,7 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." #endif // Check requirements for upload.py -#if ENABLED(XFER_BUILD) && !BOTH(BINARY_FILE_TRANSFER, CUSTOM_FIRMWARE_UPLOAD) +#if ENABLED(XFER_BUILD) && !ALL(BINARY_FILE_TRANSFER, CUSTOM_FIRMWARE_UPLOAD) #error "BINARY_FILE_TRANSFER and CUSTOM_FIRMWARE_UPLOAD are required for custom upload." #endif @@ -4008,12 +4008,12 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." #error "Input Shaping is not compatible with POLARGRAPH kinematics." #elif ENABLED(DIRECT_STEPPING) #error "Input Shaping is not compatible with DIRECT_STEPPING." - #elif BOTH(INPUT_SHAPING_X, CORE_IS_XZ) + #elif ALL(INPUT_SHAPING_X, CORE_IS_XZ) #error "INPUT_SHAPING_X is not supported with COREXZ." - #elif BOTH(INPUT_SHAPING_Y, CORE_IS_YZ) + #elif ALL(INPUT_SHAPING_Y, CORE_IS_YZ) #error "INPUT_SHAPING_Y is not supported with COREYZ." #elif ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) - #if !BOTH(INPUT_SHAPING_X, INPUT_SHAPING_Y) + #if !ALL(INPUT_SHAPING_X, INPUT_SHAPING_Y) #error "INPUT_SHAPING_X and INPUT_SHAPING_Y must both be enabled for COREXY, COREYX, or MARKFORGED_*." #else static_assert(SHAPING_FREQ_X == SHAPING_FREQ_Y, "SHAPING_FREQ_X and SHAPING_FREQ_Y must be the same for COREXY / COREYX / MARKFORGED_*."); diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 5c6297ba60..34c63239e5 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -687,17 +687,17 @@ /** * FYSETC/MKS/BTT Mini Panel backlighting */ -#if EITHER(FYSETC_242_OLED_12864, FYSETC_MINI_12864_2_1) && !ALL(NEOPIXEL_LED, LED_CONTROL_MENU, LED_USER_PRESET_STARTUP, LED_COLOR_PRESETS) +#if ANY(FYSETC_242_OLED_12864, FYSETC_MINI_12864_2_1) && !ALL(NEOPIXEL_LED, LED_CONTROL_MENU, LED_USER_PRESET_STARTUP, LED_COLOR_PRESETS) #warning "Your FYSETC/MKS/BTT Mini Panel works best with NEOPIXEL_LED, LED_CONTROL_MENU, LED_USER_PRESET_STARTUP, and LED_COLOR_PRESETS." #endif -#if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) && DISABLED(RGB_LED) +#if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) && DISABLED(RGB_LED) #warning "Your FYSETC Mini Panel works best with RGB_LED." -#elif EITHER(FYSETC_MINI_12864_2_0, FYSETC_MINI_12864_2_1) && DISABLED(LED_USER_PRESET_STARTUP) +#elif ANY(FYSETC_MINI_12864_2_0, FYSETC_MINI_12864_2_1) && DISABLED(LED_USER_PRESET_STARTUP) #warning "Your FYSETC Mini Panel works best with LED_USER_PRESET_STARTUP." #endif -#if EITHER(FYSETC_242_OLED_12864, FYSETC_MINI_12864) && BOTH(PSU_CONTROL, HAS_COLOR_LEDS) && !LED_POWEROFF_TIMEOUT +#if ANY(FYSETC_242_OLED_12864, FYSETC_MINI_12864) && ALL(PSU_CONTROL, HAS_COLOR_LEDS) && !LED_POWEROFF_TIMEOUT #warning "Your FYSETC display with PSU_CONTROL works best with LED_POWEROFF_TIMEOUT." #endif @@ -739,7 +739,7 @@ /** * POLAR warnings */ -#if BOTH(POLAR, S_CURVE_ACCELERATION) +#if ALL(POLAR, S_CURVE_ACCELERATION) #warning "POLAR kinematics may not work well with S_CURVE_ACCELERATION." #endif diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index b03ff8a9f5..55e4d156ea 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -41,12 +41,12 @@ #include "../../module/planner.h" #include "../../module/motion.h" -#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) +#if DISABLED(LCD_PROGRESS_BAR) && ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) #include "../../feature/filwidth.h" #include "../../gcode/parser.h" #endif -#if EITHER(HAS_COOLER, LASER_COOLANT_FLOW_METER) +#if ANY(HAS_COOLER, LASER_COOLANT_FLOW_METER) #include "../../feature/cooler.h" #endif @@ -70,7 +70,7 @@ LCD_CLASS lcd(LCD_I2C_ADDRESS, LCD_I2C_PIN_EN, LCD_I2C_PIN_RW, LCD_I2C_PIN_RS, LCD_I2C_PIN_D4, LCD_I2C_PIN_D5, LCD_I2C_PIN_D6, LCD_I2C_PIN_D7); -#elif EITHER(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008) +#elif ANY(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008) LCD_CLASS lcd(LCD_I2C_ADDRESS OPTARG(DETECT_I2C_LCD_DEVICE, 1)); @@ -305,7 +305,7 @@ void MarlinUI::set_custom_characters(const HD44780CharSet screen_charset/*=CHARS #endif // LCD_PROGRESS_BAR - #if BOTH(HAS_MEDIA, HAS_MARLINUI_MENU) + #if ALL(HAS_MEDIA, HAS_MARLINUI_MENU) // CHARSET_MENU const static PROGMEM byte refresh[8] = { @@ -355,7 +355,7 @@ void MarlinUI::set_custom_characters(const HD44780CharSet screen_charset/*=CHARS #endif { createChar_P(LCD_STR_UPLEVEL[0], uplevel); - #if BOTH(HAS_MEDIA, HAS_MARLINUI_MENU) + #if ALL(HAS_MEDIA, HAS_MARLINUI_MENU) // SD Card sub-menu special characters createChar_P(LCD_STR_REFRESH[0], refresh); createChar_P(LCD_STR_FOLDER[0], folder); @@ -713,7 +713,7 @@ void MarlinUI::draw_status_message(const bool blink) { if (progress > 2) return draw_progress_bar(progress); } - #elif BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) + #elif ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) // Alternate Status message and Filament display if (ELAPSED(millis(), next_filament_display)) { @@ -1046,7 +1046,7 @@ void MarlinUI::draw_status_screen() { uint16_t per; #if HAS_FAN0 if (true - #if BOTH(HAS_EXTRUDERS, ADAPTIVE_FAN_SLOWING) + #if ALL(HAS_EXTRUDERS, ADAPTIVE_FAN_SLOWING) && (blink || thermalManager.fan_speed_scaler[0] < 128) #endif ) { diff --git a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp index f7e9ff3e45..dfb685f096 100644 --- a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp +++ b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp @@ -52,12 +52,12 @@ #include "../../module/planner.h" #include "../../module/motion.h" -#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) +#if DISABLED(LCD_PROGRESS_BAR) && ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) #include "../../feature/filwidth.h" #include "../../gcode/parser.h" #endif -#if EITHER(HAS_COOLER, LASER_COOLANT_FLOW_METER) +#if ANY(HAS_COOLER, LASER_COOLANT_FLOW_METER) #include "../../feature/cooler.h" #endif @@ -141,7 +141,7 @@ static uint8_t PanelDetected = 0; #if ANY(__AVR__, TARGET_LPC1768, __STM32F1__, ARDUINO_ARCH_SAM, __SAMD51__, __MK20DX256__, __MK64FX512__) #define SPI_SEND_ONE(V) SPI.transfer(V); #define SPI_SEND_TWO(V) SPI.transfer16(V); -#elif EITHER(STM32F4xx, STM32F1xx) +#elif ANY(STM32F4xx, STM32F1xx) #define SPI_SEND_ONE(V) SPI.transfer(V, SPI_CONTINUE); #define SPI_SEND_TWO(V) SPI.transfer16(V, SPI_CONTINUE); #elif defined(ARDUINO_ARCH_ESP32) @@ -151,7 +151,7 @@ static uint8_t PanelDetected = 0; #if ANY(__AVR__, ARDUINO_ARCH_SAM, __SAMD51__, __MK20DX256__, __MK64FX512__) #define SPI_SEND_SOME(V,L,Z) SPI.transfer(&V[Z], L); -#elif EITHER(STM32F4xx, STM32F1xx) +#elif ANY(STM32F4xx, STM32F1xx) #define SPI_SEND_SOME(V,L,Z) SPI.transfer(&V[Z], L, SPI_CONTINUE); #elif ANY(TARGET_LPC1768, __STM32F1__, ARDUINO_ARCH_ESP32) #define SPI_SEND_SOME(V,L,Z) do{ for (uint16_t i = 0; i < L; i++) SPI_SEND_ONE(V[(Z)+i]); }while(0) @@ -290,7 +290,7 @@ uint8_t MarlinUI::read_slow_buttons() { Wire.requestFrom((uint8_t)LCD_I2C_ADDRESS, 2, 0, 0, 1); #elif defined(STM32F1) Wire.requestFrom((uint8_t)LCD_I2C_ADDRESS, (uint8_t)2); - #elif EITHER(STM32F4xx, TARGET_LPC1768) + #elif ANY(STM32F4xx, TARGET_LPC1768) Wire.requestFrom(LCD_I2C_ADDRESS, 2); #endif encoderDiff += Wire.read(); @@ -672,7 +672,7 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const void MarlinUI::draw_status_message(const bool blink) { if (!PanelDetected) return; lcd_moveto(0, 3); - #if BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) + #if ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) // Alternate Status message and Filament display if (ELAPSED(millis(), next_filament_display)) { diff --git a/Marlin/src/lcd/buttons.h b/Marlin/src/lcd/buttons.h index 58471239bb..601e8a70ae 100644 --- a/Marlin/src/lcd/buttons.h +++ b/Marlin/src/lcd/buttons.h @@ -38,7 +38,7 @@ #define HAS_SLOW_BUTTONS 1 #endif -#if EITHER(HAS_DIGITAL_BUTTONS, HAS_DWIN_E3V2) +#if ANY(HAS_DIGITAL_BUTTONS, HAS_DWIN_E3V2) // Wheel spin pins where BA is 00, 10, 11, 01 (1 bit always changes) #define BLEN_A 0 #define BLEN_B 1 @@ -149,7 +149,7 @@ #ifndef EN_C #define EN_C 0 #endif -#if BUTTON_EXISTS(BACK) || EITHER(HAS_TOUCH_BUTTONS, IS_TFTGLCD_PANEL) +#if BUTTON_EXISTS(BACK) || ANY(HAS_TOUCH_BUTTONS, IS_TFTGLCD_PANEL) #define BLEN_D 3 #define EN_D _BV(BLEN_D) #else diff --git a/Marlin/src/lcd/dogm/dogm_Statusscreen.h b/Marlin/src/lcd/dogm/dogm_Statusscreen.h index 8d0ab4efbe..9eec9d1987 100644 --- a/Marlin/src/lcd/dogm/dogm_Statusscreen.h +++ b/Marlin/src/lcd/dogm/dogm_Statusscreen.h @@ -143,7 +143,7 @@ // Can also be overridden in Configuration_adv.h // If you can afford it, try the 3-frame fan animation! // Don't compile in the fan animation with no fan -#if !HAS_FAN0 || (HOTENDS == 5 || (HOTENDS == 4 && BED_OR_CHAMBER) || BOTH(STATUS_COMBINE_HEATERS, HAS_HEATED_CHAMBER)) +#if !HAS_FAN0 || (HOTENDS == 5 || (HOTENDS == 4 && BED_OR_CHAMBER) || ALL(STATUS_COMBINE_HEATERS, HAS_HEATED_CHAMBER)) #undef STATUS_FAN_FRAMES #elif !STATUS_FAN_FRAMES #define STATUS_FAN_FRAMES 2 @@ -253,7 +253,7 @@ ((STATUS_CHAMBER_WIDTH || STATUS_FAN_WIDTH || STATUS_BED_WIDTH) && STATUS_HOTEND_BITMAPS == 4) #define STATUS_HEATERS_X 5 #else - #if BOTH(STATUS_COMBINE_HEATERS, HAS_HEATED_BED) && HOTENDS <= 4 + #if ALL(STATUS_COMBINE_HEATERS, HAS_HEATED_BED) && HOTENDS <= 4 #define STATUS_HEATERS_X 5 #else #define STATUS_HEATERS_X 8 // Like the included bitmaps @@ -742,22 +742,22 @@ #if HAS_FAN0 && STATUS_FAN_WIDTH && HOTENDS <= 4 && defined(STATUS_FAN_FRAMES) #define DO_DRAW_FAN 1 #endif -#if BOTH(HAS_HOTEND, STATUS_HOTEND_ANIM) +#if ALL(HAS_HOTEND, STATUS_HOTEND_ANIM) #define ANIM_HOTEND 1 #endif -#if BOTH(DO_DRAW_BED, STATUS_BED_ANIM) +#if ALL(DO_DRAW_BED, STATUS_BED_ANIM) #define ANIM_BED 1 #endif -#if BOTH(DO_DRAW_CHAMBER, STATUS_CHAMBER_ANIM) +#if ALL(DO_DRAW_CHAMBER, STATUS_CHAMBER_ANIM) #define ANIM_CHAMBER 1 #endif -#if BOTH(DO_DRAW_CUTTER, STATUS_CUTTER_ANIM) +#if ALL(DO_DRAW_CUTTER, STATUS_CUTTER_ANIM) #define ANIM_CUTTER 1 #endif -#if BOTH(DO_DRAW_COOLER, STATUS_COOLER_ANIM) +#if ALL(DO_DRAW_COOLER, STATUS_COOLER_ANIM) #define ANIM_COOLER 1 #endif -#if BOTH(DO_DRAW_FLOWMETER, STATUS_FLOWMETER_ANIM) +#if ALL(DO_DRAW_FLOWMETER, STATUS_FLOWMETER_ANIM) #define ANIM_FLOWMETER 1 #endif #if ANIM_HOTEND || ANIM_BED || ANIM_CHAMBER || ANIM_CUTTER diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp index 2552df3b88..185d3488db 100644 --- a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp +++ b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp @@ -645,7 +645,7 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop #endif // AUTO_BED_LEVELING_UBL - #if EITHER(BABYSTEP_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) + #if ANY(BABYSTEP_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) // // Draw knob rotation => Z motion key for: diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.h b/Marlin/src/lcd/dogm/marlinui_DOGM.h index afdda5ac5b..414508b129 100644 --- a/Marlin/src/lcd/dogm/marlinui_DOGM.h +++ b/Marlin/src/lcd/dogm/marlinui_DOGM.h @@ -127,7 +127,7 @@ #define U8G_CLASS U8GLIB_SSD1306_128X64 // 8 stripes #endif -#elif EITHER(FYSETC_242_OLED_12864, K3D_242_OLED_CONTROLLER) +#elif ANY(FYSETC_242_OLED_12864, K3D_242_OLED_CONTROLLER) // FYSETC OLED 2.42" 128 × 64 Full Graphics Controller // or K3D OLED 2.42" 128 × 64 Full Graphics Controller @@ -151,7 +151,7 @@ #define U8G_CLASS U8GLIB_SH1306_128X64 // 8 stripes #endif -#elif EITHER(MKS_12864OLED, ZONESTAR_12864OLED) +#elif ANY(MKS_12864OLED, ZONESTAR_12864OLED) // MKS 128x64 (SH1106) OLED I2C LCD // - or - diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp index 7d1f090d1e..61181f9a00 100644 --- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp +++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp @@ -55,7 +55,7 @@ #include "../../feature/spindle_laser.h" #endif -#if EITHER(HAS_COOLER, LASER_COOLANT_FLOW_METER) +#if ANY(HAS_COOLER, LASER_COOLANT_FLOW_METER) #include "../../feature/cooler.h" #endif @@ -127,7 +127,7 @@ #define MAX_HOTEND_DRAW _MIN(HOTENDS, ((LCD_PIXEL_WIDTH - (STATUS_LOGO_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8) / (STATUS_HEATERS_XSPACE))) #endif -#if EITHER(DO_DRAW_BED, DO_DRAW_HOTENDS) +#if ANY(DO_DRAW_BED, DO_DRAW_HOTENDS) #define STATUS_HEATERS_BOT (STATUS_HEATERS_Y + STATUS_HEATERS_HEIGHT - 1) #endif @@ -457,7 +457,7 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const } // Prepare strings for progress display -#if EITHER(HAS_EXTRA_PROGRESS, HAS_PRINT_PROGRESS) +#if ANY(HAS_EXTRA_PROGRESS, HAS_PRINT_PROGRESS) static MarlinUI::progress_t progress = 0; static char bufferc[13]; #endif @@ -512,7 +512,7 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const void MarlinUI::draw_status_screen() { #if NUM_AXES constexpr int xystorage = TERN(INCH_MODE_SUPPORT, 8, 5); - #if EITHER(HAS_X_AXIS, LCD_SHOW_E_TOTAL) + #if ANY(HAS_X_AXIS, LCD_SHOW_E_TOTAL) static char xstring[TERN(LCD_SHOW_E_TOTAL, 12, xystorage)]; #endif #if HAS_Y_AXIS @@ -612,7 +612,7 @@ void MarlinUI::draw_status_screen() { #if DO_DRAW_BED && DISABLED(STATUS_COMBINE_HEATERS) #if ANIM_BED - #if BOTH(HAS_LEVELING, STATUS_ALT_BED_BITMAP) + #if ALL(HAS_LEVELING, STATUS_ALT_BED_BITMAP) #define BED_BITMAP(S) ((S) \ ? (planner.leveling_active ? status_bed_leveled_on_bmp : status_bed_on_bmp) \ : (planner.leveling_active ? status_bed_leveled_bmp : status_bed_bmp)) @@ -783,7 +783,7 @@ void MarlinUI::draw_status_screen() { // XYZ Coordinates // - #if EITHER(XYZ_NO_FRAME, XYZ_HOLLOW_FRAME) + #if ANY(XYZ_NO_FRAME, XYZ_HOLLOW_FRAME) #define XYZ_FRAME_TOP 29 #define XYZ_FRAME_HEIGHT INFO_FONT_ASCENT + 3 #else @@ -890,7 +890,7 @@ void MarlinUI::draw_status_screen() { if (PAGE_CONTAINS(STATUS_BASELINE - INFO_FONT_ASCENT, STATUS_BASELINE + INFO_FONT_DESCENT)) { lcd_moveto(0, STATUS_BASELINE); - #if BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) + #if ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) // Alternate Status message and Filament display if (ELAPSED(millis(), next_filament_display)) { lcd_put_u8str(F(LCD_STR_FILAM_DIA)); diff --git a/Marlin/src/lcd/e3v2/creality/dwin.cpp b/Marlin/src/lcd/e3v2/creality/dwin.cpp index 9ae1cf1e06..3c259e5bf4 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.cpp +++ b/Marlin/src/lcd/e3v2/creality/dwin.cpp @@ -76,7 +76,7 @@ #include "../../../module/probe.h" #endif -#if EITHER(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) +#if ANY(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) #include "../../../feature/babystep.h" #endif @@ -201,7 +201,7 @@ void HMI_SetLanguageCache() { } void HMI_SetLanguage() { - #if BOTH(EEPROM_SETTINGS, IIC_BL24CXX_EEPROM) + #if ALL(EEPROM_SETTINGS, IIC_BL24CXX_EEPROM) BL24CXX::read(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language, sizeof(HMI_flag.language)); #endif HMI_SetLanguageCache(); @@ -210,7 +210,7 @@ void HMI_SetLanguage() { void HMI_ToggleLanguage() { HMI_flag.language = HMI_IsChinese() ? DWIN_ENGLISH : DWIN_CHINESE; HMI_SetLanguageCache(); - #if BOTH(EEPROM_SETTINGS, IIC_BL24CXX_EEPROM) + #if ALL(EEPROM_SETTINGS, IIC_BL24CXX_EEPROM) BL24CXX::write(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language, sizeof(HMI_flag.language)); #endif } @@ -475,7 +475,7 @@ void Draw_Back_First(const bool is_sel=true) { #define PREPARE_CASE_ZOFF (PREPARE_CASE_HOME + ENABLED(HAS_ZOFFSET_ITEM)) #define PREPARE_CASE_PLA (PREPARE_CASE_ZOFF + ENABLED(HAS_PREHEAT)) #define PREPARE_CASE_ABS (PREPARE_CASE_PLA + (TERN0(HAS_PREHEAT, PREHEAT_COUNT > 1))) -#define PREPARE_CASE_COOL (PREPARE_CASE_ABS + EITHER(HAS_HOTEND, HAS_HEATED_BED)) +#define PREPARE_CASE_COOL (PREPARE_CASE_ABS + ANY(HAS_HOTEND, HAS_HEATED_BED)) #define PREPARE_CASE_LANG (PREPARE_CASE_COOL + 1) #define PREPARE_CASE_TOTAL PREPARE_CASE_LANG @@ -1375,7 +1375,7 @@ void HMI_Move_Z() { LIMIT(HMI_ValueStruct.offset_value, (Z_PROBE_OFFSET_RANGE_MIN) * 100, (Z_PROBE_OFFSET_RANGE_MAX) * 100); last_zoffset = dwin_zoffset; dwin_zoffset = HMI_ValueStruct.offset_value / 100.0f; - #if EITHER(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) + #if ANY(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) if (BABYSTEP_ALLOWED()) babystep.add_mm(Z_AXIS, dwin_zoffset - last_zoffset); #endif Draw_Edit_Signed_Float2(zoff_line, HMI_ValueStruct.offset_value, true); @@ -2291,10 +2291,10 @@ void HMI_Printing() { char cmd[40]; cmd[0] = '\0'; - #if BOTH(HAS_HEATED_BED, PAUSE_HEAT) + #if ALL(HAS_HEATED_BED, PAUSE_HEAT) if (resume_bed_temp) sprintf_P(cmd, PSTR("M190 S%i\n"), resume_bed_temp); #endif - #if BOTH(HAS_HOTEND, PAUSE_HEAT) + #if ALL(HAS_HOTEND, PAUSE_HEAT) if (resume_hotend_temp) sprintf_P(&cmd[strlen(cmd)], PSTR("M109 S%i\n"), resume_hotend_temp); #endif @@ -2701,7 +2701,7 @@ void HMI_Prepare() { #if HAS_ZOFFSET_ITEM case PREPARE_CASE_ZOFF: - #if EITHER(HAS_BED_PROBE, BABYSTEPPING) + #if ANY(HAS_BED_PROBE, BABYSTEPPING) checkkey = Homeoffset; HMI_ValueStruct.show_mode = -4; HMI_ValueStruct.offset_value = BABY_Z_VAR * 100; @@ -3780,7 +3780,7 @@ void HMI_Tune() { #endif #if HAS_ZOFFSET_ITEM case TUNE_CASE_ZOFF: // Z-offset - #if EITHER(HAS_BED_PROBE, BABYSTEPPING) + #if ANY(HAS_BED_PROBE, BABYSTEPPING) checkkey = Homeoffset; HMI_ValueStruct.offset_value = BABY_Z_VAR * 100; Draw_Edit_Signed_Float2(TUNE_CASE_ZOFF + MROWS - index_tune, HMI_ValueStruct.offset_value, true); @@ -4240,7 +4240,7 @@ void DWIN_HandleScreen() { case Extruder: HMI_Move_E(); break; case ETemp: HMI_ETemp(); break; #endif - #if EITHER(HAS_BED_PROBE, BABYSTEPPING) + #if ANY(HAS_BED_PROBE, BABYSTEPPING) case Homeoffset: HMI_Zoffset(); break; #endif #if HAS_HEATED_BED diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 53e4466bf8..81478887ce 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -1104,7 +1104,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #define PREPARE_MANUALLEVEL (PREPARE_HOME + 1) #define PREPARE_ZOFFSET (PREPARE_MANUALLEVEL + ENABLED(HAS_ZOFFSET_ITEM)) #define PREPARE_PREHEAT (PREPARE_ZOFFSET + ENABLED(HAS_PREHEAT)) - #define PREPARE_COOLDOWN (PREPARE_PREHEAT + EITHER(HAS_HOTEND, HAS_HEATED_BED)) + #define PREPARE_COOLDOWN (PREPARE_PREHEAT + ANY(HAS_HOTEND, HAS_HEATED_BED)) #define PREPARE_CHANGEFIL (PREPARE_COOLDOWN + ENABLED(ADVANCED_PAUSE_FEATURE)) #define PREPARE_CUSTOM_MENU (PREPARE_CHANGEFIL + ENABLED(HAS_CUSTOM_MENU)) #define PREPARE_TOTAL PREPARE_CUSTOM_MENU @@ -3081,7 +3081,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #define LEVELING_BACK 0 #define LEVELING_ACTIVE (LEVELING_BACK + 1) - #define LEVELING_GET_TILT (LEVELING_ACTIVE + BOTH(HAS_BED_PROBE, AUTO_BED_LEVELING_UBL)) + #define LEVELING_GET_TILT (LEVELING_ACTIVE + ALL(HAS_BED_PROBE, AUTO_BED_LEVELING_UBL)) #define LEVELING_GET_MESH (LEVELING_GET_TILT + 1) #define LEVELING_MANUAL (LEVELING_GET_MESH + 1) #define LEVELING_VIEW (LEVELING_MANUAL + 1) @@ -3116,7 +3116,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item Draw_Checkbox(row, planner.leveling_active); } break; - #if BOTH(HAS_BED_PROBE, AUTO_BED_LEVELING_UBL) + #if ALL(HAS_BED_PROBE, AUTO_BED_LEVELING_UBL) case LEVELING_GET_TILT: if (draw) Draw_Menu_Item(row, ICON_Tilt, F("Autotilt Current Mesh")); diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp index 58a84ac34e..5d6e238fe1 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp @@ -582,7 +582,7 @@ void MarlinUI::draw_status_message(const bool blink) { #endif // AUTO_BED_LEVELING_UBL - #if EITHER(BABYSTEP_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) + #if ANY(BABYSTEP_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) void MarlinUI::zoffset_overlay(const int8_t dir) { const int rot_up = TERN(OVERLAY_GFX_REVERSE, ICON_RotateCCW, ICON_RotateCW), diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp index 5cfeb6488f..b66750bd88 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp @@ -192,7 +192,7 @@ FORCE_INLINE void _draw_heater_status(const heater_id_t heater, const uint16_t x #endif celsius_float_t tc = 0, tt = 0; - bool isBed = (DISABLED(HAS_HOTEND) && ENABLED(HAS_HEATED_BED)) || (BOTH(HAS_HOTEND, HAS_HEATED_BED) && heater < 0), + bool isBed = (DISABLED(HAS_HOTEND) && ENABLED(HAS_HEATED_BED)) || (ALL(HAS_HOTEND, HAS_HEATED_BED) && heater < 0), ta = false, c_draw, t_draw, i_draw; c_draw = t_draw = i_draw = !ui.did_first_redraw; if (isBed) { diff --git a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp index 47b104c5ba..48e07cc207 100644 --- a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp +++ b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp @@ -46,7 +46,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(DWIN_LCD_PROUI, HAS_LEVELING) +#if ALL(DWIN_LCD_PROUI, HAS_LEVELING) #include "../../marlinui.h" #include "../../../core/types.h" diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index 6730c026c5..807f1915f6 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -233,7 +233,7 @@ MenuClass *MaxAccelMenu = nullptr; MenuClass *MaxJerkMenu = nullptr; #endif MenuClass *StepsMenu = nullptr; -#if EITHER(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) +#if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) MenuClass *HotendMPCMenu = nullptr; #endif #if ENABLED(PIDTEMP) @@ -285,7 +285,7 @@ void HMI_SetLanguageCache() { } void HMI_SetLanguage() { - #if BOTH(EEPROM_SETTINGS, IIC_BL24CXX_EEPROM) + #if ALL(EEPROM_SETTINGS, IIC_BL24CXX_EEPROM) BL24CXX::read(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language, sizeof(HMI_flag.language)); #endif HMI_SetLanguageCache(); @@ -294,7 +294,7 @@ void HMI_SetLanguage() { void HMI_ToggleLanguage() { HMI_flag.language = HMI_IsChinese() ? DWIN_ENGLISH : DWIN_CHINESE; HMI_SetLanguageCache(); - #if BOTH(EEPROM_SETTINGS, IIC_BL24CXX_EEPROM) + #if ALL(EEPROM_SETTINGS, IIC_BL24CXX_EEPROM) BL24CXX::write(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language, sizeof(HMI_flag.language)); #endif } @@ -1410,7 +1410,7 @@ void DWIN_LevelingStart() { HMI_SaveProcessID(Leveling); Title.ShowCaption(GET_TEXT_F(MSG_BED_LEVELING)); DWIN_Show_Popup(ICON_AutoLeveling, GET_TEXT_F(MSG_BED_LEVELING), GET_TEXT_F(MSG_PLEASE_WAIT)); - #if BOTH(AUTO_BED_LEVELING_UBL, PREHEAT_BEFORE_LEVELING) + #if ALL(AUTO_BED_LEVELING_UBL, PREHEAT_BEFORE_LEVELING) #if HAS_HOTEND if (thermalManager.degTargetHotend(0) < LEVELING_NOZZLE_TEMP) thermalManager.setTargetHotend(LEVELING_NOZZLE_TEMP, 0); @@ -1460,7 +1460,7 @@ void DWIN_LevelingDone() { DWINUI::Draw_String(HMI_data.PopupTxt_Color, gfrm.x, gfrm.y - DWINUI::fontHeight() - 4, F("MPC target: Celsius")); break; #endif - #if EITHER(PIDTEMP, PIDTEMPBED) + #if ANY(PIDTEMP, PIDTEMPBED) TERN_(PIDTEMP, case PIDTEMP_START:) TERN_(PIDTEMPBED, case PIDTEMPBED_START:) DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 100, GET_TEXT_F(MSG_PID_AUTOTUNE)); @@ -1471,7 +1471,7 @@ void DWIN_LevelingDone() { switch (HMI_value.pidresult) { default: break; - #if EITHER(PIDTEMP, MPC_AUTOTUNE) + #if ANY(PIDTEMP, MPC_AUTOTUNE) TERN_(PIDTEMP, case PIDTEMP_START:) TERN_(MPC_AUTOTUNE, case MPCTEMP_START:) DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for Nozzle is running.")); @@ -1705,10 +1705,10 @@ void DWIN_SetDataDefaults() { TERN_(BAUD_RATE_GCODE, SetBaud250K()); HMI_data.FullManualTramming = false; HMI_data.MediaAutoMount = ENABLED(HAS_SD_EXTENDER); - #if BOTH(INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) + #if ALL(INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) HMI_data.z_after_homing = DEF_Z_AFTER_HOMING; #endif - #if BOTH(LED_CONTROL_MENU, HAS_COLOR_LEDS) + #if ALL(LED_CONTROL_MENU, HAS_COLOR_LEDS) TERN_(LED_COLOR_PRESETS, leds.set_default()); ApplyLEDColor(); #endif @@ -1725,7 +1725,7 @@ void DWIN_CopySettingsFrom(const char * const buff) { TERN_(PREVENT_COLD_EXTRUSION, ApplyExtMinT()); feedrate_percentage = 100; TERN_(BAUD_RATE_GCODE, HMI_SetBaudRate()); - #if BOTH(LED_CONTROL_MENU, HAS_COLOR_LEDS) + #if ALL(LED_CONTROL_MENU, HAS_COLOR_LEDS) leds.set_color( HMI_data.Led_Color.r, HMI_data.Led_Color.g, @@ -1983,7 +1983,7 @@ void AutoHome() { queue.inject_P(G28_STR); } void HomeX() { queue.inject(F("G28X")); } void HomeY() { queue.inject(F("G28Y")); } void HomeZ() { queue.inject(F("G28Z")); } - #if BOTH(INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) + #if ALL(INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) void ApplyZAfterHoming() { HMI_data.z_after_homing = MenuData.Value; }; void SetZAfterHoming() { SetIntOnClick(0, 20, HMI_data.z_after_homing, ApplyZAfterHoming); } #endif @@ -2001,13 +2001,13 @@ void AutoHome() { queue.inject_P(G28_STR); } void ApplyZOffset() { TERN_(EEPROM_SETTINGS, settings.save()); } void LiveZOffset() { - #if EITHER(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) + #if ANY(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) const_float_t step_zoffset = round((MenuData.Value / 100.0f) * planner.settings.axis_steps_per_mm[Z_AXIS]) - babystep.accum; if (BABYSTEP_ALLOWED()) babystep.add_steps(Z_AXIS, step_zoffset); #endif } void SetZOffset() { - #if EITHER(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) + #if ANY(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) babystep.accum = round(planner.settings.axis_steps_per_mm[Z_AXIS] * BABY_Z_VAR); #endif SetPFloatOnClick(Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX, 2, ApplyZOffset, LiveZOffset); @@ -2135,7 +2135,7 @@ void SetMoveZ() { HMI_value.axis = Z_AXIS; SetPFloatOnClick(Z_MIN_POS, Z_MAX_POS #endif #if ENABLED(LED_CONTROL_MENU) - #if !BOTH(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL) + #if !ALL(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL) void SetLedStatus() { leds.toggle(); Show_Chkb_Line(leds.lights_on); @@ -2675,7 +2675,7 @@ void onDrawAutoHome(MenuItemClass* menuitem, int8_t line) { } #if HAS_ZOFFSET_ITEM - #if EITHER(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) + #if ANY(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) void onDrawZOffset(MenuItemClass* menuitem, int8_t line) { if (HMI_IsChinese()) menuitem->SetFrame(1, 174, 164, 223, 177); onDrawPFloat2Menu(menuitem, line); @@ -3118,7 +3118,7 @@ void Draw_AdvancedSettings_Menu() { #if ENABLED(PIDTEMP) MENU_ITEM_F(ICON_PIDNozzle, STR_HOTEND_PID " Settings", onDrawSubMenu, Draw_HotendPID_Menu); #endif - #if EITHER(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) + #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) MENU_ITEM_F(ICON_MPCNozzle, "MPC Settings", onDrawSubMenu, Draw_HotendMPC_Menu); #endif #if ENABLED(PIDTEMPBED) @@ -3292,7 +3292,7 @@ void Draw_GetColor_Menu() { DWIN_Draw_Rectangle(1, *MenuData.P_Int, 20, 315, DWIN_WIDTH - 20, 335); } -#if BOTH(CASE_LIGHT_MENU, CASELIGHT_USES_BRIGHTNESS) +#if ALL(CASE_LIGHT_MENU, CASELIGHT_USES_BRIGHTNESS) void Draw_CaseLight_Menu() { checkkey = Menu; @@ -3312,7 +3312,7 @@ void Draw_GetColor_Menu() { checkkey = Menu; if (SET_MENU(LedControlMenu, MSG_LED_CONTROL, 10)) { BACK_ITEM(Draw_Control_Menu); - #if !BOTH(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL) + #if !ALL(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL) EDIT_ITEM(ICON_LedControl, MSG_LEDS, onDrawChkbMenu, SetLedStatus, &leds.lights_on); #endif #if HAS_COLOR_LEDS @@ -3594,7 +3594,7 @@ void Draw_Steps_Menu() { #endif -#if EITHER(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) +#if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) #if ENABLED(MPC_AUTOTUNE_MENU) void HotendMPC() { thermalManager.MPC_autotune(active_extruder); } diff --git a/Marlin/src/lcd/e3v2/proui/dwin.h b/Marlin/src/lcd/e3v2/proui/dwin.h index 0057a86392..2e967bc15f 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.h +++ b/Marlin/src/lcd/e3v2/proui/dwin.h @@ -36,7 +36,7 @@ #include "../common/limits.h" #include "../../../libs/BL24CXX.h" -#if EITHER(BABYSTEPPING, HAS_BED_PROBE) +#if ANY(BABYSTEPPING, HAS_BED_PROBE) #define HAS_ZOFFSET_ITEM 1 #if !HAS_BED_PROBE #define JUST_BABYSTEP 1 @@ -75,7 +75,7 @@ enum processID : uint8_t { NothingToDo }; -#if EITHER(DWIN_PID_TUNE, MPC_AUTOTUNE) +#if ANY(DWIN_PID_TUNE, MPC_AUTOTUNE) enum tempcontrol_t : uint8_t { #if DWIN_PID_TUNE @@ -142,10 +142,10 @@ typedef struct { bool FullManualTramming = false; bool MediaAutoMount = ENABLED(HAS_SD_EXTENDER); - #if BOTH(INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) + #if ALL(INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) uint8_t z_after_homing = DEF_Z_AFTER_HOMING; #endif - #if BOTH(LED_CONTROL_MENU, HAS_COLOR_LEDS) + #if ALL(LED_CONTROL_MENU, HAS_COLOR_LEDS) LEDColor Led_Color = Def_Leds_Color; #endif } HMI_data_t; @@ -225,7 +225,7 @@ void ParkHead(); #if HAS_ONESTEP_LEVELING void Trammingwizard(); #endif -#if BOTH(LED_CONTROL_MENU, HAS_COLOR_LEDS) +#if ALL(LED_CONTROL_MENU, HAS_COLOR_LEDS) void ApplyLEDColor(); #endif #if ENABLED(AUTO_BED_LEVELING_UBL) @@ -333,7 +333,7 @@ void Draw_FilSet_Menu(); void Draw_PhySet_Menu(); void Draw_SelectColors_Menu(); void Draw_GetColor_Menu(); -#if BOTH(CASE_LIGHT_MENU, CASELIGHT_USES_BRIGHTNESS) +#if ALL(CASE_LIGHT_MENU, CASELIGHT_USES_BRIGHTNESS) void Draw_CaseLight_Menu(); #endif #if ENABLED(LED_CONTROL_MENU) @@ -354,7 +354,7 @@ void Draw_MaxAccel_Menu(); void Draw_MaxJerk_Menu(); #endif void Draw_Steps_Menu(); -#if EITHER(HAS_BED_PROBE, BABYSTEPPING) +#if ANY(HAS_BED_PROBE, BABYSTEPPING) void Draw_ZOffsetWiz_Menu(); #endif #if ENABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU) @@ -384,7 +384,7 @@ void Draw_Steps_Menu(); #endif // MPC -#if EITHER(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) +#if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) void Draw_HotendMPC_Menu(); #endif #if ENABLED(MPC_AUTOTUNE) diff --git a/Marlin/src/lcd/e3v2/proui/dwin_defines.h b/Marlin/src/lcd/e3v2/proui/dwin_defines.h index 164fd00fe6..6f4520e23b 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_defines.h +++ b/Marlin/src/lcd/e3v2/proui/dwin_defines.h @@ -65,7 +65,7 @@ #define Def_Indicator_Color Color_White #define Def_Coordinate_Color Color_White #define Def_Button_Color RGB( 0, 23, 16) -#if BOTH(LED_CONTROL_MENU, HAS_COLOR_LEDS) +#if ALL(LED_CONTROL_MENU, HAS_COLOR_LEDS) #define Def_Leds_Color LEDColorWhite() #endif #if ENABLED(CASELIGHT_USES_BRIGHTNESS) diff --git a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp index 7ec088e240..860bad74f3 100644 --- a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp +++ b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp @@ -29,7 +29,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(DWIN_LCD_PROUI, HAS_ESDIAG) +#if ALL(DWIN_LCD_PROUI, HAS_ESDIAG) #include "endstop_diag.h" diff --git a/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp b/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp index f8bcda8353..6cf3e9e135 100644 --- a/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp +++ b/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp @@ -29,7 +29,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(DWIN_LCD_PROUI, HAS_GCODE_PREVIEW) +#if ALL(DWIN_LCD_PROUI, HAS_GCODE_PREVIEW) #include "../../../core/types.h" #include "../../marlinui.h" diff --git a/Marlin/src/lcd/e3v2/proui/lockscreen.cpp b/Marlin/src/lcd/e3v2/proui/lockscreen.cpp index 85f35582b2..abf67ad9af 100644 --- a/Marlin/src/lcd/e3v2/proui/lockscreen.cpp +++ b/Marlin/src/lcd/e3v2/proui/lockscreen.cpp @@ -29,7 +29,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(DWIN_LCD_PROUI, HAS_LOCKSCREEN) +#if ALL(DWIN_LCD_PROUI, HAS_LOCKSCREEN) #include "dwin_defines.h" #include "dwinui.h" diff --git a/Marlin/src/lcd/e3v2/proui/meshviewer.cpp b/Marlin/src/lcd/e3v2/proui/meshviewer.cpp index 69d21c044c..c0ca216c32 100644 --- a/Marlin/src/lcd/e3v2/proui/meshviewer.cpp +++ b/Marlin/src/lcd/e3v2/proui/meshviewer.cpp @@ -29,7 +29,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(DWIN_LCD_PROUI, HAS_MESH) +#if ALL(DWIN_LCD_PROUI, HAS_MESH) #include "../../../core/types.h" #include "../../marlinui.h" diff --git a/Marlin/src/lcd/e3v2/proui/plot.cpp b/Marlin/src/lcd/e3v2/proui/plot.cpp index fddaf3963a..627dc39223 100644 --- a/Marlin/src/lcd/e3v2/proui/plot.cpp +++ b/Marlin/src/lcd/e3v2/proui/plot.cpp @@ -29,7 +29,7 @@ #include "../../../inc/MarlinConfig.h" -#if BOTH(DWIN_LCD_PROUI, SHOW_TUNING_GRAPH) +#if ALL(DWIN_LCD_PROUI, SHOW_TUNING_GRAPH) #include "plot.h" #include "../../../core/types.h" diff --git a/Marlin/src/lcd/e3v2/proui/printstats.cpp b/Marlin/src/lcd/e3v2/proui/printstats.cpp index 638cd34208..7f45fa71ef 100644 --- a/Marlin/src/lcd/e3v2/proui/printstats.cpp +++ b/Marlin/src/lcd/e3v2/proui/printstats.cpp @@ -29,7 +29,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(DWIN_LCD_PROUI, PRINTCOUNTER) +#if ALL(DWIN_LCD_PROUI, PRINTCOUNTER) #include "printstats.h" diff --git a/Marlin/src/lcd/extui/anycubic/Tunes.cpp b/Marlin/src/lcd/extui/anycubic/Tunes.cpp index d1fb888d17..8a9e84f000 100644 --- a/Marlin/src/lcd/extui/anycubic/Tunes.cpp +++ b/Marlin/src/lcd/extui/anycubic/Tunes.cpp @@ -31,7 +31,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if EITHER(ANYCUBIC_LCD_CHIRON, ANYCUBIC_LCD_VYPER) +#if ANY(ANYCUBIC_LCD_CHIRON, ANYCUBIC_LCD_VYPER) #include "Tunes.h" #include "../../../libs/buzzer.h" diff --git a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp index dca0f2e85d..a560e5e9a0 100644 --- a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp +++ b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp @@ -885,7 +885,7 @@ void AnycubicTFTClass::getCommandFromTFT() { } void AnycubicTFTClass::doSDCardStateCheck() { - #if BOTH(HAS_MEDIA, HAS_SD_DETECT) + #if ALL(HAS_MEDIA, HAS_SD_DETECT) bool isInserted = isMediaInserted(); if (isInserted) SENDLINE_DBG_PGM("J00", "TFT Serial Debug: SD card state changed... isInserted"); diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp index 16aeeab1a1..4c1995cebc 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp @@ -636,7 +636,7 @@ void DGUSScreenHandlerMKS::manualAssistLeveling(DGUS_VP_Variable &var, void *val #define mks_min(a, b) ((a) < (b)) ? (a) : (b) #define mks_max(a, b) ((a) > (b)) ? (a) : (b) void DGUSScreenHandlerMKS::tmcChangeConfig(DGUS_VP_Variable &var, void *val_ptr) { - #if EITHER(HAS_TRINAMIC_CONFIG, HAS_STEALTHCHOP) + #if ANY(HAS_TRINAMIC_CONFIG, HAS_STEALTHCHOP) const uint16_t tmc_val = BE16_P(val_ptr); #endif @@ -1099,7 +1099,7 @@ void DGUSScreenHandlerMKS::getManualFilamentSpeed(DGUS_VP_Variable &var, void *v } void DGUSScreenHandlerMKS::filamentLoadUnload(DGUS_VP_Variable &var, void *val_ptr, const int filamentDir) { - #if EITHER(HAS_MULTI_HOTEND, SINGLENOZZLE) + #if ANY(HAS_MULTI_HOTEND, SINGLENOZZLE) uint8_t swap_tool = 0; #else constexpr uint8_t swap_tool = 1; // T0 (or none at all) @@ -1120,7 +1120,7 @@ void DGUSScreenHandlerMKS::filamentLoadUnload(DGUS_VP_Variable &var, void *val_p if (thermalManager.tooColdToExtrude(0)) hotend_too_cold = 1; else { - #if EITHER(HAS_MULTI_HOTEND, SINGLENOZZLE) + #if ANY(HAS_MULTI_HOTEND, SINGLENOZZLE) swap_tool = 1; #endif } @@ -1135,7 +1135,7 @@ void DGUSScreenHandlerMKS::filamentLoadUnload(DGUS_VP_Variable &var, void *val_p break; } - #if BOTH(HAS_HOTEND, PREVENT_COLD_EXTRUSION) + #if ALL(HAS_HOTEND, PREVENT_COLD_EXTRUSION) if (hotend_too_cold) { if (thermalManager.targetTooColdToExtrude(hotend_too_cold - 1)) thermalManager.setTargetHotend(thermalManager.extrude_min_temp, hotend_too_cold - 1); sendInfoScreen(F("NOTICE"), nullptr, F("Please wait."), F("Nozzle heating!"), true, true, true, true); @@ -1147,7 +1147,7 @@ void DGUSScreenHandlerMKS::filamentLoadUnload(DGUS_VP_Variable &var, void *val_p if (swap_tool) { char buf[30]; snprintf_P(buf, 30 - #if EITHER(HAS_MULTI_HOTEND, SINGLENOZZLE) + #if ANY(HAS_MULTI_HOTEND, SINGLENOZZLE) , PSTR("M1002T%cE%dF%d"), char('0' + swap_tool - 1) #else , PSTR("M1002E%dF%d") @@ -1163,7 +1163,7 @@ void DGUSScreenHandlerMKS::filamentLoadUnload(DGUS_VP_Variable &var, void *val_p * within the G-code execution window for best concurrency. */ void GcodeSuite::M1002() { - #if EITHER(HAS_MULTI_HOTEND, SINGLENOZZLE) + #if ANY(HAS_MULTI_HOTEND, SINGLENOZZLE) { char buf[3]; sprintf_P(buf, PSTR("T%c"), char('0' + parser.intval('T'))); diff --git a/Marlin/src/lcd/extui/example/example.cpp b/Marlin/src/lcd/extui/example/example.cpp index b295434d84..e78e4b9679 100644 --- a/Marlin/src/lcd/extui/example/example.cpp +++ b/Marlin/src/lcd/extui/example/example.cpp @@ -21,7 +21,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(EXTUI_EXAMPLE, EXTENSIBLE_UI) +#if ALL(EXTUI_EXAMPLE, EXTENSIBLE_UI) #include "../ui_api.h" diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp index be18c03483..fa31ce1553 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp @@ -25,7 +25,7 @@ #if ENABLED(COCOA_LEVELING_MENU) -#if BOTH(HAS_BED_PROBE, BLTOUCH) +#if ALL(HAS_BED_PROBE, BLTOUCH) #include "../../../../feature/bltouch.h" #endif diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/main_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/main_menu.cpp index ee299a7f64..2f231278f2 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/main_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/main_menu.cpp @@ -57,7 +57,7 @@ void MainMenu::onRedraw(draw_mode_t what) { .font(Theme::font_medium) .tag( 2).button(MOVE_XYZ_POS, GET_TEXT_F(MSG_XYZ_MOVE)) .tag( 3).button(TEMPERATURE_POS, GET_TEXT_F(MSG_TEMPERATURE)) - .enabled(BOTH(HAS_LEVELING, HAS_BED_PROBE)) + .enabled(ALL(HAS_LEVELING, HAS_BED_PROBE)) .tag( 4).button(ZPROBE_ZOFFSET_POS, GET_TEXT_F(MSG_ZPROBE_ZOFFSET)) .tag( 5).button(MOVE_E_POS, GET_TEXT_F(MSG_E_MOVE)) .tag( 6).button(SPEED_POS, GET_TEXT_F(MSG_PRINT_SPEED)) @@ -79,7 +79,7 @@ bool MainMenu::onTouchEnd(uint8_t tag) { case 1: SaveSettingsDialogBox::promptToSaveSettings(); break; case 2: GOTO_SCREEN(MoveXYZScreen); break; case 3: GOTO_SCREEN(TemperatureScreen); break; - #if BOTH(HAS_LEVELING, HAS_BED_PROBE) + #if ALL(HAS_LEVELING, HAS_BED_PROBE) case 4: GOTO_SCREEN(ZOffsetScreen); break; #endif case 5: GOTO_SCREEN(MoveEScreen); break; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/basic/commands.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/basic/commands.cpp index 662753a154..a796c8edcf 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/basic/commands.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/basic/commands.cpp @@ -1208,7 +1208,7 @@ void CLCD::default_display_orientation() { + ENABLED(TOUCH_UI_INVERTED) * 1 ); cmd.execute(); - #elif EITHER(TOUCH_UI_PORTRAIT, TOUCH_UI_MIRRORED) + #elif ANY(TOUCH_UI_PORTRAIT, TOUCH_UI_MIRRORED) #error "PORTRAIT or MIRRORED orientation not supported on the FT800." #elif ENABLED(TOUCH_UI_INVERTED) mem_write_32(REG::ROTATE, 1); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/compat.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/compat.h index 6b2dc9eb44..a9f77a518b 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/compat.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/compat.h @@ -305,14 +305,11 @@ #define __TERN(T,V...) ___TERN(_CAT(_NO,T),V) // Prepend '_NO' to get '_NOT_0' or '_NOT_1' #define ___TERN(P,V...) THIRD(P,V) // If first argument has a comma, A. Else B. - #define IF_ENABLED TERN_ #define IF_DISABLED(O,A) _TERN(_ENA_1(O),,A) #define ANY(V...) !DISABLED(V) - #define NONE(V...) DISABLED(V) - #define ALL(V...) ENABLED(V) - #define BOTH(V1,V2) ALL(V1,V2) - #define EITHER(V1,V2) ANY(V1,V2) + #define NONE DISABLED + #define ALL ENABLED // Remove compiler warning on an unused variable #ifndef UNUSED diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/font_size_t.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/font_size_t.cpp index 0e251f7bb1..b229154e82 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/font_size_t.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/font_size_t.cpp @@ -21,7 +21,7 @@ #include "../ftdi_extended.h" -#if BOTH(FTDI_EXTENDED, TOUCH_UI_USE_UTF8) +#if ALL(FTDI_EXTENDED, TOUCH_UI_USE_UTF8) namespace FTDI { // Returns the height of a standard FTDI romfont diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/standard_char_set.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/standard_char_set.cpp index d12bf97119..5171ee508a 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/standard_char_set.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/standard_char_set.cpp @@ -21,7 +21,7 @@ #include "../ftdi_extended.h" -#if BOTH(FTDI_EXTENDED, TOUCH_UI_USE_UTF8) +#if ALL(FTDI_EXTENDED, TOUCH_UI_USE_UTF8) constexpr static uint8_t std_font = 31; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/unicode.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/unicode.cpp index 6f189155f5..d7f4d31bdc 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/unicode.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/unicode.cpp @@ -21,7 +21,7 @@ #include "../ftdi_extended.h" -#if BOTH(FTDI_EXTENDED, TOUCH_UI_USE_UTF8) +#if ALL(FTDI_EXTENDED, TOUCH_UI_USE_UTF8) using namespace FTDI; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/about_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/about_screen.cpp index 43e5c33365..698f0d47b7 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/about_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/about_screen.cpp @@ -76,7 +76,7 @@ void AboutScreen::onRedraw(draw_mode_t) { #endif , OPT_CENTER, font_xlarge ); - #if BOTH(TOUCH_UI_DEVELOPER_MENU, FTDI_DEVELOPER_MENU) + #if ALL(TOUCH_UI_DEVELOPER_MENU, FTDI_DEVELOPER_MENU) cmd.tag(3); #endif draw_text_box(cmd, FW_VERS_POS, @@ -91,7 +91,7 @@ void AboutScreen::onRedraw(draw_mode_t) { draw_text_box(cmd, LICENSE_POS, GET_TEXT_F(MSG_LICENSE), OPT_CENTER, font_tiny); cmd.font(font_medium); - #if BOTH(PRINTCOUNTER, FTDI_STATISTICS_SCREEN) + #if ALL(PRINTCOUNTER, FTDI_STATISTICS_SCREEN) cmd.colors(normal_btn) .tag(2).button(STATS_POS, GET_TEXT_F(MSG_INFO_STATS_MENU)); #endif @@ -102,10 +102,10 @@ void AboutScreen::onRedraw(draw_mode_t) { bool AboutScreen::onTouchEnd(uint8_t tag) { switch (tag) { case 1: GOTO_PREVIOUS(); break; - #if BOTH(PRINTCOUNTER, FTDI_STATISTICS_SCREEN) + #if ALL(PRINTCOUNTER, FTDI_STATISTICS_SCREEN) case 2: GOTO_SCREEN(StatisticsScreen); break; #endif - #if BOTH(TOUCH_UI_DEVELOPER_MENU, FTDI_DEVELOPER_MENU) + #if ALL(TOUCH_UI_DEVELOPER_MENU, FTDI_DEVELOPER_MENU) case 3: GOTO_SCREEN(DeveloperMenu); break; #endif default: return false; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp index 8753b44e70..4745ff99dc 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp @@ -37,7 +37,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) { } #if ENABLED(TOUCH_UI_PORTRAIT) - #if EITHER(HAS_MULTI_HOTEND, SENSORLESS_HOMING) + #if ANY(HAS_MULTI_HOTEND, SENSORLESS_HOMING) #define GRID_ROWS 9 #else #define GRID_ROWS 8 @@ -58,7 +58,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) { #define BACKLASH_POS BTN_POS(2,7), BTN_SIZE(1,1) #define OFFSETS_POS BTN_POS(1,8), BTN_SIZE(1,1) #define TMC_HOMING_THRS_POS BTN_POS(2,8), BTN_SIZE(1,1) - #if EITHER(HAS_MULTI_HOTEND, SENSORLESS_HOMING) + #if ANY(HAS_MULTI_HOTEND, SENSORLESS_HOMING) #define BACK_POS BTN_POS(1,9), BTN_SIZE(2,1) #else #define BACK_POS BTN_POS(1,8), BTN_SIZE(2,1) @@ -99,7 +99,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) { .tag(14).button(TMC_HOMING_THRS_POS, GET_TEXT_F(MSG_TMC_HOMING_THRS)) .enabled(ENABLED(HAS_MULTI_HOTEND)) .tag(4) .button(OFFSETS_POS, GET_TEXT_F(MSG_OFFSETS_MENU)) - .enabled(EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)) + .enabled(ANY(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)) .tag(11).button(FILAMENT_POS, GET_TEXT_F(MSG_FILAMENT)) .tag(12).button(ENDSTOPS_POS, GET_TEXT_F(MSG_LCD_ENDSTOPS)) .tag(15).button(DISPLAY_POS, GET_TEXT_F(MSG_DISPLAY_MENU)) @@ -133,7 +133,7 @@ bool AdvancedSettingsMenu::onTouchEnd(uint8_t tag) { #endif case 9: GOTO_SCREEN(InterfaceSettingsScreen); LockScreen::check_passcode(); break; case 10: GOTO_SCREEN(RestoreFailsafeDialogBox); LockScreen::check_passcode(); break; - #if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR) + #if ANY(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR) case 11: GOTO_SCREEN(FilamentMenu); break; #endif case 12: GOTO_SCREEN(EndstopStatesScreen); break; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp index eae83d070d..1d81649444 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp @@ -89,7 +89,7 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) { #else PIN_DISABLED(1, 4, GET_TEXT_F(MSG_RUNOUT_1), FIL_RUNOUT) #endif - #if BOTH(HAS_MULTI_EXTRUDER, FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT2) + #if ALL(HAS_MULTI_EXTRUDER, FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT2) PIN_ENABLED (3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2, FIL_RUNOUT2_STATE) #else PIN_DISABLED(3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2) diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/leveling_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/leveling_menu.cpp index 2fb9d18498..47540b0f55 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/leveling_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/leveling_menu.cpp @@ -25,7 +25,7 @@ #ifdef FTDI_LEVELING_MENU -#if BOTH(HAS_BED_PROBE,BLTOUCH) +#if ALL(HAS_BED_PROBE,BLTOUCH) #include "../../../../feature/bltouch.h" #endif @@ -81,7 +81,7 @@ void LevelingMenu::onRedraw(draw_mode_t what) { .text(BLTOUCH_TITLE_POS, GET_TEXT_F(MSG_BLTOUCH)) #endif .font(font_medium).colors(normal_btn) - .enabled(EITHER(Z_STEPPER_AUTO_ALIGN,MECHANICAL_GANTRY_CALIBRATION)) + .enabled(ANY(Z_STEPPER_AUTO_ALIGN,MECHANICAL_GANTRY_CALIBRATION)) .tag(2).button(LEVEL_AXIS_POS, GET_TEXT_F(MSG_LEVEL_X_AXIS)) .enabled(ENABLED(HAS_BED_PROBE)) .tag(3).button(PROBE_BED_POS, GET_TEXT_F(MSG_PROBE_BED)) @@ -103,7 +103,7 @@ void LevelingMenu::onRedraw(draw_mode_t what) { bool LevelingMenu::onTouchEnd(uint8_t tag) { switch (tag) { case 1: GOTO_PREVIOUS(); break; - #if EITHER(Z_STEPPER_AUTO_ALIGN,MECHANICAL_GANTRY_CALIBRATION) + #if ANY(Z_STEPPER_AUTO_ALIGN,MECHANICAL_GANTRY_CALIBRATION) case 2: SpinnerDialogBox::enqueueAndWait(F("G34")); break; #endif #if HAS_BED_PROBE diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/screens.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/screens.h index e2df29cb83..c200931eec 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/screens.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/screens.h @@ -74,7 +74,7 @@ enum { #if ENABLED(CASE_LIGHT_ENABLE) CASE_LIGHT_SCREEN_CACHE, #endif - #if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR) + #if ANY(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR) FILAMENT_MENU_CACHE, #endif #if ENABLED(LIN_ADVANCE) @@ -192,7 +192,7 @@ enum { #include "case_light_screen.h" #endif -#if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR) +#if ANY(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR) #include "filament_menu.h" #endif diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/tune_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/tune_menu.cpp index 0370c44174..259f6d5b89 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/tune_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/tune_menu.cpp @@ -74,11 +74,11 @@ void TuneMenu::onRedraw(draw_mode_t what) { .tag(2).button(TEMPERATURE_POS, GET_TEXT_F(MSG_TEMPERATURE)) .enabled(!sdOrHostPrinting || sdOrHostPaused) .tag(3).button(FIL_CHANGE_POS, GET_TEXT_F(MSG_FILAMENTCHANGE)) - .enabled(EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)) + .enabled(ANY(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)) .tag(9).button(FILAMENT_POS, GET_TEXT_F(MSG_FILAMENT)) #if ENABLED(BABYSTEPPING) && HAS_MULTI_HOTEND .tag(4).button(NUDGE_NOZ_POS, GET_TEXT_F(MSG_NUDGE_NOZZLE)) - #elif BOTH(HAS_LEVELING, HAS_BED_PROBE) + #elif ALL(HAS_LEVELING, HAS_BED_PROBE) .tag(4).button(NUDGE_NOZ_POS, GET_TEXT_F(MSG_ZPROBE_ZOFFSET)) #endif .tag(5).button(SPEED_POS, GET_TEXT_F(MSG_PRINT_SPEED)) @@ -105,7 +105,7 @@ bool TuneMenu::onTouchEnd(uint8_t tag) { case 4: #if ENABLED(BABYSTEPPING) && HAS_MULTI_HOTEND GOTO_SCREEN(NudgeNozzleScreen); - #elif BOTH(HAS_LEVELING, HAS_BED_PROBE) + #elif ALL(HAS_LEVELING, HAS_BED_PROBE) GOTO_SCREEN(ZOffsetScreen); #endif break; @@ -117,7 +117,7 @@ bool TuneMenu::onTouchEnd(uint8_t tag) { current_screen.forget(); PUSH_SCREEN(StatusScreen); break; - #if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR) + #if ANY(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR) case 9: GOTO_SCREEN(FilamentMenu); break; #endif #if ENABLED(CASE_LIGHT_ENABLE) diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/colors.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/colors.h index 70c2be4ec2..0e145e39f2 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/colors.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/colors.h @@ -37,7 +37,7 @@ namespace Theme { #else // Use linear accent colors - #if EITHER(TOUCH_UI_ROYAL_THEME, TOUCH_UI_FROZEN_THEME) + #if ANY(TOUCH_UI_ROYAL_THEME, TOUCH_UI_FROZEN_THEME) // Dark blue accent colors constexpr int accent_hue = 216; constexpr float accent_sat = 0.7; @@ -88,7 +88,7 @@ namespace Theme { constexpr uint32_t bed_mesh_lines_rgb = 0xFFFFFF; constexpr uint32_t bed_mesh_shadow_rgb = 0x444444; - #elif EITHER(TOUCH_UI_COCOA_THEME, TOUCH_UI_FROZEN_THEME) + #elif ANY(TOUCH_UI_COCOA_THEME, TOUCH_UI_FROZEN_THEME) constexpr uint32_t theme_darkest = accent_color_1; constexpr uint32_t theme_dark = accent_color_4; diff --git a/Marlin/src/lcd/extui/mks_ui/draw_auto_level_offset_settings.cpp b/Marlin/src/lcd/extui/mks_ui/draw_auto_level_offset_settings.cpp index fd14585e70..5a5d457b08 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_auto_level_offset_settings.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_auto_level_offset_settings.cpp @@ -22,7 +22,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(HAS_TFT_LVGL_UI, HAS_BED_PROBE) +#if ALL(HAS_TFT_LVGL_UI, HAS_BED_PROBE) #include "draw_ui.h" #include diff --git a/Marlin/src/lcd/extui/mks_ui/draw_cloud_bind.cpp b/Marlin/src/lcd/extui/mks_ui/draw_cloud_bind.cpp index 1dae0ebe22..0798db1cc9 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_cloud_bind.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_cloud_bind.cpp @@ -22,7 +22,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(HAS_TFT_LVGL_UI, MKS_WIFI_MODULE) +#if ALL(HAS_TFT_LVGL_UI, MKS_WIFI_MODULE) #include "lv_conf.h" #include "draw_ui.h" diff --git a/Marlin/src/lcd/extui/mks_ui/draw_jerk_settings.cpp b/Marlin/src/lcd/extui/mks_ui/draw_jerk_settings.cpp index a070cae15f..5b22103e8f 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_jerk_settings.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_jerk_settings.cpp @@ -22,7 +22,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(HAS_TFT_LVGL_UI, HAS_CLASSIC_JERK) +#if ALL(HAS_TFT_LVGL_UI, HAS_CLASSIC_JERK) #include "draw_ui.h" #include diff --git a/Marlin/src/lcd/extui/mks_ui/draw_media_select.cpp b/Marlin/src/lcd/extui/mks_ui/draw_media_select.cpp index 81c82dc02d..085a008acd 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_media_select.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_media_select.cpp @@ -21,7 +21,7 @@ */ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(HAS_TFT_LVGL_UI, MULTI_VOLUME) +#if ALL(HAS_TFT_LVGL_UI, MULTI_VOLUME) #include "draw_ui.h" #include diff --git a/Marlin/src/lcd/extui/mks_ui/draw_pause_message.cpp b/Marlin/src/lcd/extui/mks_ui/draw_pause_message.cpp index e5f6a5963a..b753a57801 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_pause_message.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_pause_message.cpp @@ -22,7 +22,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(HAS_TFT_LVGL_UI, ADVANCED_PAUSE_FEATURE) +#if ALL(HAS_TFT_LVGL_UI, ADVANCED_PAUSE_FEATURE) #include "draw_ui.h" #include diff --git a/Marlin/src/lcd/extui/mks_ui/draw_tmc_current_settings.cpp b/Marlin/src/lcd/extui/mks_ui/draw_tmc_current_settings.cpp index 9ec8f1501a..b243c88705 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_tmc_current_settings.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_tmc_current_settings.cpp @@ -22,7 +22,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(HAS_TFT_LVGL_UI, HAS_TRINAMIC_CONFIG) +#if ALL(HAS_TFT_LVGL_UI, HAS_TRINAMIC_CONFIG) #include "draw_ui.h" #include diff --git a/Marlin/src/lcd/extui/mks_ui/draw_tmc_step_mode_settings.cpp b/Marlin/src/lcd/extui/mks_ui/draw_tmc_step_mode_settings.cpp index 990cdda7e6..d09c823b59 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_tmc_step_mode_settings.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_tmc_step_mode_settings.cpp @@ -22,7 +22,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(HAS_TFT_LVGL_UI, HAS_STEALTHCHOP) +#if ALL(HAS_TFT_LVGL_UI, HAS_STEALTHCHOP) #include "draw_ui.h" #include diff --git a/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp b/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp index a9a25db118..74902a30dd 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp @@ -22,7 +22,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(HAS_TFT_LVGL_UI, TOUCH_SCREEN_CALIBRATION) +#if ALL(HAS_TFT_LVGL_UI, TOUCH_SCREEN_CALIBRATION) #include "draw_ui.h" #include "draw_touch_calibration.h" diff --git a/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp b/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp index 102109a136..708ad77fca 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp @@ -1377,7 +1377,7 @@ void LV_TASK_HANDLER() { if (TERN1(USE_SPI_DMA_TC, !get_lcd_dma_lock())) lv_task_handler(); - #if BOTH(MKS_TEST, HAS_MEDIA) + #if ALL(MKS_TEST, HAS_MEDIA) if (mks_test_flag == 0x1E) mks_hardware_test(); #endif diff --git a/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp b/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp index 69e547a68c..9d16c9dff2 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp @@ -22,7 +22,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(HAS_TFT_LVGL_UI, PROBE_OFFSET_WIZARD) +#if ALL(HAS_TFT_LVGL_UI, PROBE_OFFSET_WIZARD) #include "draw_ui.h" #include diff --git a/Marlin/src/lcd/extui/mks_ui/irq_overrid.cpp b/Marlin/src/lcd/extui/mks_ui/irq_overrid.cpp index aca1db0039..b2615ac24b 100644 --- a/Marlin/src/lcd/extui/mks_ui/irq_overrid.cpp +++ b/Marlin/src/lcd/extui/mks_ui/irq_overrid.cpp @@ -23,7 +23,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(HAS_TFT_LVGL_UI, MKS_WIFI_MODULE) +#if ALL(HAS_TFT_LVGL_UI, MKS_WIFI_MODULE) #include "tft_lvgl_configuration.h" diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp index 6576290496..53f31b1c40 100644 --- a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp +++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp @@ -681,7 +681,7 @@ void disp_assets_update_progress(FSTR_P const fmsg) { #endif } -#if BOTH(MKS_TEST, HAS_MEDIA) +#if ALL(MKS_TEST, HAS_MEDIA) uint8_t mks_test_flag = 0; const char *MKSTestPath = "MKS_TEST"; void mks_test_get() { diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware.h b/Marlin/src/lcd/extui/mks_ui/mks_hardware.h index 6a2574e3b0..f73f4e6459 100644 --- a/Marlin/src/lcd/extui/mks_ui/mks_hardware.h +++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.h @@ -26,7 +26,7 @@ #include // Functions for MKS_TEST -#if BOTH(MKS_TEST, HAS_MEDIA) +#if ALL(MKS_TEST, HAS_MEDIA) void mks_hardware_test(); void mks_test_get(); void mks_gpio_test(); diff --git a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp index 71f4166ca8..5dfb02bfac 100644 --- a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp @@ -51,7 +51,7 @@ XPT2046 touch; #include "../../../module/servo.h" #endif -#if EITHER(PROBE_TARE, HAS_Z_SERVO_PROBE) +#if ANY(PROBE_TARE, HAS_Z_SERVO_PROBE) #include "../../../module/probe.h" #endif @@ -249,7 +249,7 @@ void tft_lvgl_init() { if (ready) lv_draw_ready_print(); - #if BOTH(MKS_TEST, HAS_MEDIA) + #if ALL(MKS_TEST, HAS_MEDIA) if (mks_test_flag == 0x1E) mks_gpio_test(); #endif } diff --git a/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32.cpp b/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32.cpp index 9d7f5e2032..cb5b7f0b68 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32.cpp @@ -25,7 +25,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(HAS_TFT_LVGL_UI, MKS_WIFI_MODULE) +#if ALL(HAS_TFT_LVGL_UI, MKS_WIFI_MODULE) #include "tft_lvgl_configuration.h" diff --git a/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32F1.cpp b/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32F1.cpp index 654fca6cb3..92fd139dfa 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32F1.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifiSerial_STM32F1.cpp @@ -23,7 +23,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(HAS_TFT_LVGL_UI, MKS_WIFI_MODULE) +#if ALL(HAS_TFT_LVGL_UI, MKS_WIFI_MODULE) #include "tft_lvgl_configuration.h" diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp index bf399f70aa..f3967a3ec3 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp @@ -22,7 +22,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(HAS_TFT_LVGL_UI, MKS_WIFI_MODULE) +#if ALL(HAS_TFT_LVGL_UI, MKS_WIFI_MODULE) #include "draw_ui.h" #include "wifi_module.h" diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp index eaf41526e5..2d4d19e7a2 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_upload.cpp @@ -22,7 +22,7 @@ #include "../../../inc/MarlinConfigPre.h" -#if BOTH(HAS_TFT_LVGL_UI, MKS_WIFI_MODULE) +#if ALL(HAS_TFT_LVGL_UI, MKS_WIFI_MODULE) #include "draw_ui.h" #include "wifi_module.h" diff --git a/Marlin/src/lcd/extui/nextion/nextion_tft.cpp b/Marlin/src/lcd/extui/nextion/nextion_tft.cpp index 15c384808f..e5e3a74be2 100644 --- a/Marlin/src/lcd/extui/nextion/nextion_tft.cpp +++ b/Marlin/src/lcd/extui/nextion/nextion_tft.cpp @@ -294,7 +294,7 @@ void NextionTFT::panelInfo(uint8_t req) { break; case 26: // TMC Hybrid Threshold Speed - #if 0 && BOTH(HAS_TRINAMIC_CONFIG, HYBRID_THRESHOLD) + #if 0 && ALL(HAS_TRINAMIC_CONFIG, HYBRID_THRESHOLD) #define SEND_TRINAMIC_THRS(A, B) SEND_VALasTXT(A, getAxisPWMthrs(B)) #else #define SEND_TRINAMIC_THRS(A, B) SEND_NA(A) @@ -463,7 +463,7 @@ void NextionTFT::panelInfo(uint8_t req) { #else #define SEND_PID_INFO_0(A, B) SEND_NA(A) #endif - #if BOTH(PIDTEMP, HAS_MULTI_EXTRUDER) + #if ALL(PIDTEMP, HAS_MULTI_EXTRUDER) #define SEND_PID_INFO_1(A, B) SEND_VALasTXT(A, getPID_K##B(E1)) #else #define SEND_PID_INFO_1(A, B) SEND_NA(A) diff --git a/Marlin/src/lcd/extui/ui_api.cpp b/Marlin/src/lcd/extui/ui_api.cpp index 1d917df7cd..7f21610728 100644 --- a/Marlin/src/lcd/extui/ui_api.cpp +++ b/Marlin/src/lcd/extui/ui_api.cpp @@ -933,7 +933,7 @@ namespace ExtUI { } void moveToMeshPoint(const xy_uint8_t &pos, const_float_t z) { - #if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL) + #if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL) REMEMBER(fr, feedrate_mm_s); const float x_target = MESH_MIN_X + pos.x * (MESH_X_DIST), y_target = MESH_MIN_Y + pos.y * (MESH_Y_DIST); diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 1c4bbe5fa9..a812dff556 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -24,7 +24,7 @@ #include "../MarlinCore.h" // for printingIsPaused -#if LED_POWEROFF_TIMEOUT > 0 || BOTH(HAS_WIRED_LCD, PRINTER_EVENT_LEDS) || (defined(LCD_BACKLIGHT_TIMEOUT_MINS) && defined(NEOPIXEL_BKGD_INDEX_FIRST)) +#if LED_POWEROFF_TIMEOUT > 0 || ALL(HAS_WIRED_LCD, PRINTER_EVENT_LEDS) || (defined(LCD_BACKLIGHT_TIMEOUT_MINS) && defined(NEOPIXEL_BKGD_INDEX_FIRST)) #include "../feature/leds/leds.h" #endif @@ -32,7 +32,7 @@ #include "../feature/host_actions.h" #endif -#if BOTH(BROWSE_MEDIA_ON_INSERT, PASSWORD_ON_SD_PRINT_MENU) +#if ALL(BROWSE_MEDIA_ON_INSERT, PASSWORD_ON_SD_PRINT_MENU) #include "../feature/password/password.h" #endif @@ -68,7 +68,7 @@ MarlinUI ui; constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; #if HAS_STATUS_MESSAGE - #if ENABLED(STATUS_MESSAGE_SCROLLING) && EITHER(HAS_WIRED_LCD, DWIN_LCD_PROUI) + #if ENABLED(STATUS_MESSAGE_SCROLLING) && ANY(HAS_WIRED_LCD, DWIN_LCD_PROUI) uint8_t MarlinUI::status_scroll_offset; // = 0 #endif char MarlinUI::status_message[MAX_MESSAGE_LENGTH + 1]; @@ -154,7 +154,7 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; } #endif -#if EITHER(HAS_MARLINUI_MENU, EXTENSIBLE_UI) +#if ANY(HAS_MARLINUI_MENU, EXTENSIBLE_UI) bool MarlinUI::lcd_clicked; #endif @@ -270,7 +270,7 @@ void MarlinUI::init() { #endif // HAS_SHIFT_ENCODER - #if BOTH(HAS_ENCODER_ACTION, HAS_SLOW_BUTTONS) + #if ALL(HAS_ENCODER_ACTION, HAS_SLOW_BUTTONS) slow_buttons = 0; #endif @@ -339,7 +339,7 @@ void MarlinUI::init() { uint8_t MarlinUI::lcd_status_update_delay = 1; // First update one loop delayed - #if BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) + #if ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) millis_t MarlinUI::next_filament_display; // = 0 #endif @@ -402,7 +402,7 @@ void MarlinUI::init() { } #endif - #if EITHER(REVERSE_MENU_DIRECTION, REVERSE_SELECT_DIRECTION) + #if ANY(REVERSE_MENU_DIRECTION, REVERSE_SELECT_DIRECTION) int8_t MarlinUI::encoderDirection = ENCODERBASE; #endif @@ -411,7 +411,7 @@ void MarlinUI::init() { uint8_t MarlinUI::repeat_delay; #endif - #if EITHER(AUTO_BED_LEVELING_UBL, G26_MESH_VALIDATION) + #if ANY(AUTO_BED_LEVELING_UBL, G26_MESH_VALIDATION) bool MarlinUI::external_control; // = false @@ -574,7 +574,7 @@ void MarlinUI::init() { #endif if (homed) { - #if EITHER(DELTA, Z_HOME_TO_MAX) + #if ANY(DELTA, Z_HOME_TO_MAX) if (RRK(EN_KEYPAD_F2)) _reprapworld_keypad_move(Z_AXIS, 1); #endif if (RRK(EN_KEYPAD_F3)) _reprapworld_keypad_move(Z_AXIS, -1); @@ -670,7 +670,7 @@ void MarlinUI::init() { #if HAS_MARLINUI_MENU if (use_click()) { - #if BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) + #if ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) pause_filament_display(); #endif goto_screen(menu_main); @@ -702,7 +702,7 @@ void MarlinUI::init() { if (old_frm != new_frm) { feedrate_percentage = new_frm; encoderPosition = 0; - #if BOTH(HAS_SOUND, BEEP_ON_FEEDRATE_CHANGE) + #if ALL(HAS_SOUND, BEEP_ON_FEEDRATE_CHANGE) static millis_t next_beep; #ifndef GOT_MS const millis_t ms = millis(); @@ -1046,7 +1046,7 @@ void MarlinUI::init() { if (encoderPastThreshold || lcd_clicked) { if (encoderPastThreshold && TERN1(IS_TFTGLCD_PANEL, !external_control)) { - #if BOTH(HAS_MARLINUI_MENU, ENCODER_RATE_MULTIPLIER) + #if ALL(HAS_MARLINUI_MENU, ENCODER_RATE_MULTIPLIER) int32_t encoderMultiplier = 1; @@ -1112,7 +1112,7 @@ void MarlinUI::init() { refresh(LCDVIEW_REDRAW_NOW); } - #if BOTH(HAS_MARLINUI_MENU, SCROLL_LONG_FILENAMES) + #if ALL(HAS_MARLINUI_MENU, SCROLL_LONG_FILENAMES) // If scrolling of long file names is enabled and we are in the sd card menu, // cause a refresh to occur until all the text has scrolled into view. if (currentScreen == menu_media && !lcd_status_update_delay--) { @@ -1353,7 +1353,7 @@ void MarlinUI::init() { #endif // UP || DOWN || LEFT || RIGHT buttons = (newbutton | TERN0(HAS_SLOW_BUTTONS, slow_buttons) - #if BOTH(HAS_TOUCH_BUTTONS, HAS_ENCODER_ACTION) + #if ALL(HAS_TOUCH_BUTTONS, HAS_ENCODER_ACTION) | (touch_buttons & TERN(HAS_ENCODER_WHEEL, ~(EN_A | EN_B), 0xFF)) #endif ); @@ -1413,7 +1413,7 @@ void MarlinUI::init() { case 3: ENCODER_SPIN(2, 1); break; case 1: ENCODER_SPIN(3, 0); break; } - #if BOTH(HAS_MARLINUI_MENU, AUTO_BED_LEVELING_UBL) + #if ALL(HAS_MARLINUI_MENU, AUTO_BED_LEVELING_UBL) external_encoder(); #endif lastEncoderBits = enc; @@ -1587,7 +1587,7 @@ void MarlinUI::init() { #if HAS_WIRED_LCD - #if BASIC_PROGRESS_BAR || BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) + #if BASIC_PROGRESS_BAR || ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) const millis_t ms = millis(); #endif @@ -1598,13 +1598,13 @@ void MarlinUI::init() { #endif #endif - #if BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) + #if ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) pause_filament_display(ms); // Show status message for 5s #endif #endif - #if ENABLED(STATUS_MESSAGE_SCROLLING) && EITHER(HAS_WIRED_LCD, DWIN_LCD_PROUI) + #if ENABLED(STATUS_MESSAGE_SCROLLING) && ANY(HAS_WIRED_LCD, DWIN_LCD_PROUI) status_scroll_offset = 0; #endif @@ -1670,7 +1670,7 @@ void MarlinUI::init() { TERN_(DWIN_LCD_PROUI, HMI_flag.abort_flag = true); } - #if BOTH(HAS_MARLINUI_MENU, PSU_CONTROL) + #if ALL(HAS_MARLINUI_MENU, PSU_CONTROL) void MarlinUI::poweroff() { queue.inject(F("M81" TERN_(POWER_OFF_WAIT_FOR_COOLDOWN, "S"))); @@ -1848,7 +1848,7 @@ void MarlinUI::init() { #endif } - #if EITHER(BABYSTEP_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) + #if ANY(BABYSTEP_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) void MarlinUI::zoffset_overlay(const_float_t zvalue) { // Determine whether the user is raising or lowering the nozzle. static int8_t dir; @@ -1863,7 +1863,7 @@ void MarlinUI::init() { #endif -#if BOTH(EXTENSIBLE_UI, ADVANCED_PAUSE_FEATURE) +#if ALL(EXTENSIBLE_UI, ADVANCED_PAUSE_FEATURE) void MarlinUI::pause_show_message( const PauseMessage message, diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index ccdbd64322..7819afe978 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -88,7 +88,7 @@ typedef bool (*statusResetFunc_t)(); #endif // HAS_WIRED_LCD -#if EITHER(HAS_WIRED_LCD, DWIN_CREALITY_LCD_JYERSUI) +#if ANY(HAS_WIRED_LCD, DWIN_CREALITY_LCD_JYERSUI) #define LCD_WITH_BLINK 1 #define LCD_UPDATE_INTERVAL TERN(HAS_TOUCH_BUTTONS, 50, 100) #endif @@ -246,7 +246,7 @@ public: // LCD implementations static void clear_lcd(); - #if BOTH(HAS_MARLINUI_MENU, TOUCH_SCREEN_CALIBRATION) + #if ALL(HAS_MARLINUI_MENU, TOUCH_SCREEN_CALIBRATION) static void check_touch_calibration() { if (touch_calibration.need_calibration()) currentScreen = touch_calibration_screen; } @@ -313,7 +313,7 @@ public: static void set_progress_done() { progress_override = (PROGRESS_MASK + 1U) + 100U * (PROGRESS_SCALE); } static void progress_reset() { if (progress_override & (PROGRESS_MASK + 1U)) set_progress(0); } #endif - #if EITHER(SHOW_REMAINING_TIME, SET_PROGRESS_MANUALLY) + #if ANY(SHOW_REMAINING_TIME, SET_PROGRESS_MANUALLY) static uint32_t _calculated_remaining_time() { const duration_t elapsed = print_job_timer.duration(); const progress_t progress = _get_progress(); @@ -361,7 +361,7 @@ public: #if HAS_STATUS_MESSAGE - #if EITHER(HAS_WIRED_LCD, DWIN_LCD_PROUI) + #if ANY(HAS_WIRED_LCD, DWIN_LCD_PROUI) #if ENABLED(STATUS_MESSAGE_SCROLLING) #define MAX_MESSAGE_LENGTH _MAX(LONG_FILENAME_LENGTH, MAX_LANG_CHARSIZE * 2 * (LCD_WIDTH)) #else @@ -412,7 +412,7 @@ public: static void resume_print(); static void flow_fault(); - #if BOTH(HAS_MARLINUI_MENU, PSU_CONTROL) + #if ALL(HAS_MARLINUI_MENU, PSU_CONTROL) static void poweroff(); #endif @@ -471,7 +471,7 @@ public: FORCE_INLINE static void refresh_contrast() { set_contrast(contrast); } #endif - #if BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) + #if ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) static millis_t next_filament_display; static void pause_filament_display(const millis_t ms=millis()) { next_filament_display = ms + 5000UL; } #endif @@ -510,7 +510,7 @@ public: static bool did_first_redraw; #endif - #if EITHER(BABYSTEP_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) + #if ANY(BABYSTEP_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY) static void zoffset_overlay(const int8_t dir); static void zoffset_overlay(const_float_t zvalue); #endif @@ -534,7 +534,7 @@ public: #endif #if HAS_MEDIA - #if BOTH(SCROLL_LONG_FILENAMES, HAS_MARLINUI_MENU) + #if ALL(SCROLL_LONG_FILENAMES, HAS_MARLINUI_MENU) #define MARLINUI_SCROLL_NAME 1 #endif #if MARLINUI_SCROLL_NAME @@ -646,7 +646,7 @@ public: #endif - #if EITHER(HAS_MARLINUI_MENU, EXTENSIBLE_UI) + #if ANY(HAS_MARLINUI_MENU, EXTENSIBLE_UI) static bool lcd_clicked; static bool use_click() { const bool click = lcd_clicked; @@ -684,7 +684,7 @@ public: // // Special handling if a move is underway // - #if ANY(DELTA_CALIBRATION_MENU, DELTA_AUTO_CALIBRATION, PROBE_OFFSET_WIZARD, X_AXIS_TWIST_COMPENSATION) || (ENABLED(LCD_BED_LEVELING) && EITHER(PROBE_MANUALLY, MESH_BED_LEVELING)) + #if ANY(DELTA_CALIBRATION_MENU, DELTA_AUTO_CALIBRATION, PROBE_OFFSET_WIZARD, X_AXIS_TWIST_COMPENSATION) || (ENABLED(LCD_BED_LEVELING) && ANY(PROBE_MANUALLY, MESH_BED_LEVELING)) #define LCD_HAS_WAIT_FOR_MOVE 1 static bool wait_for_move; #else @@ -694,7 +694,7 @@ public: // // Block interaction while under external control // - #if HAS_MARLINUI_MENU && EITHER(AUTO_BED_LEVELING_UBL, G26_MESH_VALIDATION) + #if HAS_MARLINUI_MENU && ANY(AUTO_BED_LEVELING_UBL, G26_MESH_VALIDATION) static bool external_control; FORCE_INLINE static void capture() { external_control = true; } FORCE_INLINE static void release() { external_control = false; } @@ -737,7 +737,7 @@ public: static bool hw_button_pressed() { return BUTTON_CLICK(); } #endif - #if EITHER(AUTO_BED_LEVELING_UBL, G26_MESH_VALIDATION) + #if ANY(AUTO_BED_LEVELING_UBL, G26_MESH_VALIDATION) static void wait_for_release(); #endif @@ -745,14 +745,14 @@ public: #define ENCODERBASE (TERN(REVERSE_ENCODER_DIRECTION, -1, +1)) - #if EITHER(REVERSE_MENU_DIRECTION, REVERSE_SELECT_DIRECTION) + #if ANY(REVERSE_MENU_DIRECTION, REVERSE_SELECT_DIRECTION) static int8_t encoderDirection; #else static constexpr int8_t encoderDirection = ENCODERBASE; #endif FORCE_INLINE static void encoder_direction_normal() { - #if EITHER(REVERSE_MENU_DIRECTION, REVERSE_SELECT_DIRECTION) + #if ANY(REVERSE_MENU_DIRECTION, REVERSE_SELECT_DIRECTION) encoderDirection = ENCODERBASE; #endif } diff --git a/Marlin/src/lcd/menu/menu.cpp b/Marlin/src/lcd/menu/menu.cpp index 911a35d482..a9574dd4d9 100644 --- a/Marlin/src/lcd/menu/menu.cpp +++ b/Marlin/src/lcd/menu/menu.cpp @@ -176,7 +176,7 @@ void MarlinUI::goto_screen(screenFunc_t screen, const uint16_t encoder/*=0*/, co TERN_(SET_PROGRESS_PERCENT, progress_reset()); - #if BOTH(DOUBLECLICK_FOR_Z_BABYSTEPPING, BABYSTEPPING) + #if ALL(DOUBLECLICK_FOR_Z_BABYSTEPPING, BABYSTEPPING) static millis_t doubleclick_expire_ms = 0; // Going to menu_main from status screen? Remember first click time. // Going back to status screen within a very short time? Go to Z babystepping. diff --git a/Marlin/src/lcd/menu/menu_advanced.cpp b/Marlin/src/lcd/menu/menu_advanced.cpp index 0be23be71a..370ea56402 100644 --- a/Marlin/src/lcd/menu/menu_advanced.cpp +++ b/Marlin/src/lcd/menu/menu_advanced.cpp @@ -268,7 +268,7 @@ void menu_backlash(); } #endif -#if BOTH(AUTOTEMP, HAS_TEMP_HOTEND) || ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU, MPC_AUTOTUNE_MENU, MPC_EDIT_MENU) +#if ALL(AUTOTEMP, HAS_TEMP_HOTEND) || ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU, MPC_AUTOTUNE_MENU, MPC_EDIT_MENU) #define SHOW_MENU_ADVANCED_TEMPERATURE 1 #endif @@ -277,7 +277,7 @@ void menu_backlash(); // #if SHOW_MENU_ADVANCED_TEMPERATURE - #if BOTH(MPC_EDIT_MENU, MPC_INCLUDE_FAN) + #if ALL(MPC_EDIT_MENU, MPC_INCLUDE_FAN) #define MPC_EDIT_DEFS(N) editable.decimal = thermalManager.temp_hotend[N].fanCoefficient() #else #define MPC_EDIT_DEFS(...) @@ -294,7 +294,7 @@ void menu_backlash(); // // Autotemp, Min, Max, Fact // - #if BOTH(AUTOTEMP, HAS_TEMP_HOTEND) + #if ALL(AUTOTEMP, HAS_TEMP_HOTEND) EDIT_ITEM(int3, MSG_MIN, &planner.autotemp.min, 0, thermalManager.hotend_max_target(0)); EDIT_ITEM(int3, MSG_MAX, &planner.autotemp.max, 0, thermalManager.hotend_max_target(0)); EDIT_ITEM(float42_52, MSG_FACTOR, &planner.autotemp.factor, 0, 10); @@ -309,7 +309,7 @@ void menu_backlash(); // PID-P E5, PID-I E5, PID-D E5, PID-C E5, PID Autotune E5 // - #if BOTH(PIDTEMP, PID_EDIT_MENU) + #if ALL(PIDTEMP, PID_EDIT_MENU) #define __PID_HOTEND_MENU_ITEMS(N) \ raw_Kp = thermalManager.temp_hotend[N].pid.p(); \ raw_Ki = thermalManager.temp_hotend[N].pid.i(); \ @@ -342,7 +342,7 @@ void menu_backlash(); #endif - #if ENABLED(PID_EDIT_MENU) && EITHER(PIDTEMPBED, PIDTEMPCHAMBER) + #if ENABLED(PID_EDIT_MENU) && ANY(PIDTEMPBED, PIDTEMPCHAMBER) #define _PID_EDIT_ITEMS_TMPL(N,T) \ raw_Kp = T.pid.p(); \ raw_Ki = T.pid.i(); \ diff --git a/Marlin/src/lcd/menu/menu_backlash.cpp b/Marlin/src/lcd/menu/menu_backlash.cpp index 1f3856918f..a5f1f3746b 100644 --- a/Marlin/src/lcd/menu/menu_backlash.cpp +++ b/Marlin/src/lcd/menu/menu_backlash.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_MENU, BACKLASH_GCODE) +#if ALL(HAS_MARLINUI_MENU, BACKLASH_GCODE) #include "menu_item.h" @@ -39,7 +39,7 @@ void menu_backlash() { editable.uint8 = backlash.get_correction_uint8(); EDIT_ITEM_FAST(percent, MSG_BACKLASH_CORRECTION, &editable.uint8, backlash.all_off, backlash.all_on, []{ backlash.set_correction_uint8(editable.uint8); }); - #if DISABLED(CORE_BACKLASH) || EITHER(MARKFORGED_XY, MARKFORGED_YX) + #if DISABLED(CORE_BACKLASH) || ANY(MARKFORGED_XY, MARKFORGED_YX) #define _CAN_CALI AXIS_CAN_CALIBRATE #else #define _CAN_CALI(A) true diff --git a/Marlin/src/lcd/menu/menu_bed_leveling.cpp b/Marlin/src/lcd/menu/menu_bed_leveling.cpp index dcf77cb3eb..efc05aabde 100644 --- a/Marlin/src/lcd/menu/menu_bed_leveling.cpp +++ b/Marlin/src/lcd/menu/menu_bed_leveling.cpp @@ -43,7 +43,7 @@ #endif #endif -#if EITHER(PROBE_MANUALLY, MESH_BED_LEVELING) +#if ANY(PROBE_MANUALLY, MESH_BED_LEVELING) #include "../../module/motion.h" #include "../../gcode/queue.h" @@ -169,7 +169,7 @@ if (ui.should_draw()) { MenuItem_static::draw(1, GET_TEXT_F(MSG_LEVEL_BED_WAITING)); // Color UI needs a control to detect a touch - #if BOTH(TOUCH_SCREEN, HAS_GRAPHICAL_TFT) + #if ALL(TOUCH_SCREEN, HAS_GRAPHICAL_TFT) touch.add_control(CLICK, 0, 0, TFT_WIDTH, TFT_HEIGHT); #endif } @@ -249,7 +249,7 @@ void menu_bed_leveling() { #endif // Level Bed - #if EITHER(PROBE_MANUALLY, MESH_BED_LEVELING) + #if ANY(PROBE_MANUALLY, MESH_BED_LEVELING) // Manual leveling uses a guided procedure SUBMENU(MSG_LEVEL_BED, _lcd_level_bed_continue); #else diff --git a/Marlin/src/lcd/menu/menu_bed_tramming.cpp b/Marlin/src/lcd/menu/menu_bed_tramming.cpp index 8129a347c3..b6b3e72124 100644 --- a/Marlin/src/lcd/menu/menu_bed_tramming.cpp +++ b/Marlin/src/lcd/menu/menu_bed_tramming.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_MENU, LCD_BED_TRAMMING) +#if ALL(HAS_MARLINUI_MENU, LCD_BED_TRAMMING) #include "menu_item.h" #include "../../module/motion.h" @@ -43,7 +43,7 @@ #define BED_TRAMMING_HEIGHT 0.0 #endif -#if BOTH(HAS_STOWABLE_PROBE, BED_TRAMMING_USE_PROBE) && DISABLED(BLTOUCH) +#if ALL(HAS_STOWABLE_PROBE, BED_TRAMMING_USE_PROBE) && DISABLED(BLTOUCH) #define NEEDS_PROBE_DEPLOY 1 #endif @@ -152,7 +152,7 @@ static void _lcd_goto_next_corner() { } float z = BED_TRAMMING_Z_HOP; - #if BOTH(BED_TRAMMING_USE_PROBE, BLTOUCH) + #if ALL(BED_TRAMMING_USE_PROBE, BLTOUCH) z += bltouch.z_extra_clearance(); #endif line_to_z(z); @@ -187,7 +187,7 @@ static void _lcd_goto_next_corner() { if (PAGE_CONTAINS(y - (MENU_FONT_HEIGHT), y)) { SETCURSOR(TERN(TFT_COLOR_UI, 2, 0), cy); lcd_put_u8str(GET_TEXT_F(MSG_BED_TRAMMING_GOOD_POINTS)); - IF_ENABLED(TFT_COLOR_UI, lcd_moveto(12, cy)); + TERN_(TFT_COLOR_UI, lcd_moveto(12, cy)); lcd_put_u8str(GOOD_POINTS_TO_STR(good_points)); lcd_put_u8str(F("/")); lcd_put_u8str(GOOD_POINTS_TO_STR(nr_edge_points)); @@ -200,7 +200,7 @@ static void _lcd_goto_next_corner() { if (PAGE_CONTAINS(y - (MENU_FONT_HEIGHT), y)) { SETCURSOR(TERN(TFT_COLOR_UI, 2, 0), cy); lcd_put_u8str(GET_TEXT_F(MSG_BED_TRAMMING_LAST_Z)); - IF_ENABLED(TFT_COLOR_UI, lcd_moveto(12, 2)); + TERN_(TFT_COLOR_UI, lcd_moveto(12, 2)); lcd_put_u8str(LAST_Z_TO_STR(last_z)); } } diff --git a/Marlin/src/lcd/menu/menu_cancelobject.cpp b/Marlin/src/lcd/menu/menu_cancelobject.cpp index b2784bcd41..bcbd90ee3a 100644 --- a/Marlin/src/lcd/menu/menu_cancelobject.cpp +++ b/Marlin/src/lcd/menu/menu_cancelobject.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_MENU, CANCEL_OBJECTS) +#if ALL(HAS_MARLINUI_MENU, CANCEL_OBJECTS) #include "menu_item.h" #include "menu_addon.h" diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index 0611bda84b..0622eb98d4 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -59,7 +59,7 @@ #include "../../libs/buzzer.h" #endif -#if EITHER(LCD_PROGRESS_BAR_TEST, LCD_ENDSTOP_TEST) +#if ANY(LCD_PROGRESS_BAR_TEST, LCD_ENDSTOP_TEST) #include "../lcdprint.h" #define HAS_DEBUG_MENU 1 #endif @@ -68,7 +68,7 @@ #include "../../core/debug_out.h" void menu_advanced_settings(); -#if EITHER(DELTA_CALIBRATION_MENU, DELTA_AUTO_CALIBRATION) +#if ANY(DELTA_CALIBRATION_MENU, DELTA_AUTO_CALIBRATION) void menu_delta_calibrate(); #endif @@ -592,7 +592,7 @@ void menu_configuration() { #endif if (!busy) { - #if EITHER(DELTA_CALIBRATION_MENU, DELTA_AUTO_CALIBRATION) + #if ANY(DELTA_CALIBRATION_MENU, DELTA_AUTO_CALIBRATION) SUBMENU(MSG_DELTA_CALIBRATE, menu_delta_calibrate); #endif diff --git a/Marlin/src/lcd/menu/menu_delta_calibrate.cpp b/Marlin/src/lcd/menu/menu_delta_calibrate.cpp index fe0be04398..c7da12a61e 100644 --- a/Marlin/src/lcd/menu/menu_delta_calibrate.cpp +++ b/Marlin/src/lcd/menu/menu_delta_calibrate.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfigPre.h" -#if HAS_MARLINUI_MENU && EITHER(DELTA_CALIBRATION_MENU, DELTA_AUTO_CALIBRATION) +#if HAS_MARLINUI_MENU && ANY(DELTA_CALIBRATION_MENU, DELTA_AUTO_CALIBRATION) #include "menu_item.h" #include "../../module/delta.h" diff --git a/Marlin/src/lcd/menu/menu_filament.cpp b/Marlin/src/lcd/menu/menu_filament.cpp index 6fdcc2b488..bdcd20fae3 100644 --- a/Marlin/src/lcd/menu/menu_filament.cpp +++ b/Marlin/src/lcd/menu/menu_filament.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_MENU, ADVANCED_PAUSE_FEATURE) +#if ALL(HAS_MARLINUI_MENU, ADVANCED_PAUSE_FEATURE) #include "menu_item.h" #include "../../module/temperature.h" diff --git a/Marlin/src/lcd/menu/menu_info.cpp b/Marlin/src/lcd/menu/menu_info.cpp index e2dd6c6475..59ed52e6f1 100644 --- a/Marlin/src/lcd/menu/menu_info.cpp +++ b/Marlin/src/lcd/menu/menu_info.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_MENU, LCD_INFO_MENU) +#if ALL(HAS_MARLINUI_MENU, LCD_INFO_MENU) #include "menu_item.h" diff --git a/Marlin/src/lcd/menu/menu_job_recovery.cpp b/Marlin/src/lcd/menu/menu_job_recovery.cpp index 6329c58397..b2276aeb0c 100644 --- a/Marlin/src/lcd/menu/menu_job_recovery.cpp +++ b/Marlin/src/lcd/menu/menu_job_recovery.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_MENU, POWER_LOSS_RECOVERY) +#if ALL(HAS_MARLINUI_MENU, POWER_LOSS_RECOVERY) #include "menu_item.h" #include "../../gcode/queue.h" diff --git a/Marlin/src/lcd/menu/menu_led.cpp b/Marlin/src/lcd/menu/menu_led.cpp index dea5ecceeb..c7390b98cb 100644 --- a/Marlin/src/lcd/menu/menu_led.cpp +++ b/Marlin/src/lcd/menu/menu_led.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfigPre.h" -#if HAS_MARLINUI_MENU && EITHER(LED_CONTROL_MENU, CASE_LIGHT_MENU) +#if HAS_MARLINUI_MENU && ANY(LED_CONTROL_MENU, CASE_LIGHT_MENU) #include "menu_item.h" diff --git a/Marlin/src/lcd/menu/menu_main.cpp b/Marlin/src/lcd/menu/menu_main.cpp index a202f624f7..4ccdb60bf1 100644 --- a/Marlin/src/lcd/menu/menu_main.cpp +++ b/Marlin/src/lcd/menu/menu_main.cpp @@ -43,7 +43,7 @@ #include "game/game.h" #endif -#if EITHER(HAS_MEDIA, HOST_PROMPT_SUPPORT) || defined(ACTION_ON_CANCEL) +#if ANY(HAS_MEDIA, HOST_PROMPT_SUPPORT) || defined(ACTION_ON_CANCEL) #define MACHINE_CAN_STOP 1 #endif #if ANY(HAS_MEDIA, HOST_PROMPT_SUPPORT, PARK_HEAD_ON_PAUSE) || defined(ACTION_ON_PAUSE) @@ -88,7 +88,7 @@ void menu_configuration(); void menu_info(); #endif -#if EITHER(LED_CONTROL_MENU, CASE_LIGHT_MENU) +#if ANY(LED_CONTROL_MENU, CASE_LIGHT_MENU) void menu_led(); #endif @@ -273,7 +273,7 @@ void menu_main() { #endif } else { - #if BOTH(HAS_MEDIA, MEDIA_MENU_AT_TOP) + #if ALL(HAS_MEDIA, MEDIA_MENU_AT_TOP) // BEGIN MEDIA MENU #if ENABLED(MENU_ADDAUTOSTART) ACTION_ITEM(MSG_RUN_AUTO_FILES, card.autofile_begin); // Run Auto Files @@ -326,7 +326,7 @@ void menu_main() { SUBMENU(MSG_MOTION, menu_motion); } - #if BOTH(ADVANCED_PAUSE_FEATURE, DISABLE_ENCODER) + #if ALL(ADVANCED_PAUSE_FEATURE, DISABLE_ENCODER) FILAMENT_CHANGE_ITEM(); #endif @@ -366,7 +366,7 @@ void menu_main() { SUBMENU(MSG_INFO_MENU, menu_info); #endif - #if EITHER(LED_CONTROL_MENU, CASE_LIGHT_MENU) + #if ANY(LED_CONTROL_MENU, CASE_LIGHT_MENU) SUBMENU(MSG_LEDS, menu_led); #endif diff --git a/Marlin/src/lcd/menu/menu_media.cpp b/Marlin/src/lcd/menu/menu_media.cpp index 795ac2052b..26f7a0517d 100644 --- a/Marlin/src/lcd/menu/menu_media.cpp +++ b/Marlin/src/lcd/menu/menu_media.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_MENU, HAS_MEDIA) +#if ALL(HAS_MARLINUI_MENU, HAS_MEDIA) #include "menu_item.h" #include "../../sd/cardreader.h" diff --git a/Marlin/src/lcd/menu/menu_mixer.cpp b/Marlin/src/lcd/menu/menu_mixer.cpp index 478792479c..b3be5e6336 100644 --- a/Marlin/src/lcd/menu/menu_mixer.cpp +++ b/Marlin/src/lcd/menu/menu_mixer.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_MENU, MIXING_EXTRUDER) +#if ALL(HAS_MARLINUI_MENU, MIXING_EXTRUDER) #include "menu_item.h" #include "menu_addon.h" diff --git a/Marlin/src/lcd/menu/menu_mmu2.cpp b/Marlin/src/lcd/menu/menu_mmu2.cpp index ca3627ce10..c9d163357b 100644 --- a/Marlin/src/lcd/menu/menu_mmu2.cpp +++ b/Marlin/src/lcd/menu/menu_mmu2.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if BOTH(HAS_MARLINUI_MENU, MMU2_MENUS) +#if ALL(HAS_MARLINUI_MENU, MMU2_MENUS) #include "../../MarlinCore.h" #include "../../feature/mmu/mmu2.h" diff --git a/Marlin/src/lcd/menu/menu_motion.cpp b/Marlin/src/lcd/menu/menu_motion.cpp index bab03db606..67fcbdd851 100644 --- a/Marlin/src/lcd/menu/menu_motion.cpp +++ b/Marlin/src/lcd/menu/menu_motion.cpp @@ -119,7 +119,7 @@ void lcd_move_axis(const AxisEnum axis) { #endif // E_MANUAL -#if EITHER(PROBE_OFFSET_WIZARD, X_AXIS_TWIST_COMPENSATION) +#if ANY(PROBE_OFFSET_WIZARD, X_AXIS_TWIST_COMPENSATION) void _goto_manual_move_z(const_float_t scale) { ui.manual_move.menu_scale = scale; @@ -207,7 +207,7 @@ void menu_move() { START_MENU(); BACK_ITEM(MSG_MOTION); - #if BOTH(HAS_SOFTWARE_ENDSTOPS, SOFT_ENDSTOPS_MENU_ITEM) + #if ALL(HAS_SOFTWARE_ENDSTOPS, SOFT_ENDSTOPS_MENU_ITEM) EDIT_ITEM(bool, MSG_LCD_SOFT_ENDSTOPS, &soft_endstop._enabled); #endif @@ -530,7 +530,7 @@ void menu_motion() { // // Auto Z-Align // - #if EITHER(Z_STEPPER_AUTO_ALIGN, MECHANICAL_GANTRY_CALIBRATION) + #if ANY(Z_STEPPER_AUTO_ALIGN, MECHANICAL_GANTRY_CALIBRATION) GCODES_ITEM(MSG_AUTO_Z_ALIGN, F("G34")); #endif diff --git a/Marlin/src/lcd/menu/menu_password.cpp b/Marlin/src/lcd/menu/menu_password.cpp index b50194d60d..6ca4202f6c 100644 --- a/Marlin/src/lcd/menu/menu_password.cpp +++ b/Marlin/src/lcd/menu/menu_password.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_MENU, PASSWORD_FEATURE) +#if ALL(HAS_MARLINUI_MENU, PASSWORD_FEATURE) #include "../../feature/password/password.h" diff --git a/Marlin/src/lcd/menu/menu_temperature.cpp b/Marlin/src/lcd/menu/menu_temperature.cpp index c534597690..82b358623f 100644 --- a/Marlin/src/lcd/menu/menu_temperature.cpp +++ b/Marlin/src/lcd/menu/menu_temperature.cpp @@ -35,7 +35,7 @@ #include "../../module/motion.h" #endif -#if EITHER(HAS_COOLER, LASER_COOLANT_FLOW_METER) +#if ANY(HAS_COOLER, LASER_COOLANT_FLOW_METER) #include "../../feature/cooler.h" #endif diff --git a/Marlin/src/lcd/menu/menu_touch_screen.cpp b/Marlin/src/lcd/menu/menu_touch_screen.cpp index 130308dadf..93380cb0e0 100644 --- a/Marlin/src/lcd/menu/menu_touch_screen.cpp +++ b/Marlin/src/lcd/menu/menu_touch_screen.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_MENU, TOUCH_SCREEN_CALIBRATION) +#if ALL(HAS_MARLINUI_MENU, TOUCH_SCREEN_CALIBRATION) #include "menu_item.h" #include "../marlinui.h" diff --git a/Marlin/src/lcd/menu/menu_tramming_wizard.cpp b/Marlin/src/lcd/menu/menu_tramming_wizard.cpp index 8fb251c238..e0f88ea1bb 100644 --- a/Marlin/src/lcd/menu/menu_tramming_wizard.cpp +++ b/Marlin/src/lcd/menu/menu_tramming_wizard.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_MENU, ASSISTED_TRAMMING_WIZARD) +#if ALL(HAS_MARLINUI_MENU, ASSISTED_TRAMMING_WIZARD) #include "menu_item.h" diff --git a/Marlin/src/lcd/menu/menu_tune.cpp b/Marlin/src/lcd/menu/menu_tune.cpp index 081b9f58a0..5247c714c6 100644 --- a/Marlin/src/lcd/menu/menu_tune.cpp +++ b/Marlin/src/lcd/menu/menu_tune.cpp @@ -119,7 +119,7 @@ void menu_tune() { // // Manual bed leveling, Bed Z: // - #if BOTH(MESH_BED_LEVELING, LCD_BED_LEVELING) + #if ALL(MESH_BED_LEVELING, LCD_BED_LEVELING) EDIT_ITEM(float43, MSG_MESH_Z_OFFSET, &bedlevel.z_offset, -1, 1); #endif diff --git a/Marlin/src/lcd/menu/menu_ubl.cpp b/Marlin/src/lcd/menu/menu_ubl.cpp index d6f42faa55..c8fd33d26d 100644 --- a/Marlin/src/lcd/menu/menu_ubl.cpp +++ b/Marlin/src/lcd/menu/menu_ubl.cpp @@ -26,7 +26,7 @@ #include "../../inc/MarlinConfigPre.h" -#if BOTH(HAS_MARLINUI_MENU, AUTO_BED_LEVELING_UBL) +#if ALL(HAS_MARLINUI_MENU, AUTO_BED_LEVELING_UBL) #include "menu_item.h" #include "../../gcode/gcode.h" diff --git a/Marlin/src/lcd/menu/menu_x_twist.cpp b/Marlin/src/lcd/menu/menu_x_twist.cpp index 86ef3be7b9..5339e8e6e5 100644 --- a/Marlin/src/lcd/menu/menu_x_twist.cpp +++ b/Marlin/src/lcd/menu/menu_x_twist.cpp @@ -170,7 +170,7 @@ void xatc_wizard_homing_done() { MenuItem_static::draw(1, GET_TEXT_F(MSG_LEVEL_BED_WAITING)); // Color UI needs a control to detect a touch - #if BOTH(TOUCH_SCREEN, HAS_GRAPHICAL_TFT) + #if ALL(TOUCH_SCREEN, HAS_GRAPHICAL_TFT) touch.add_control(CLICK, 0, 0, TFT_WIDTH, TFT_HEIGHT); #endif } diff --git a/Marlin/src/lcd/tft/ui_1024x600.cpp b/Marlin/src/lcd/tft/ui_1024x600.cpp index 460f3a345b..e43ccf7450 100644 --- a/Marlin/src/lcd/tft/ui_1024x600.cpp +++ b/Marlin/src/lcd/tft/ui_1024x600.cpp @@ -36,7 +36,7 @@ #include "../../module/planner.h" #include "../../module/motion.h" -#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) +#if DISABLED(LCD_PROGRESS_BAR) && ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) #include "../../feature/filwidth.h" #include "../../gcode/parser.h" #endif @@ -627,7 +627,7 @@ struct { static void quick_feedback() { #if HAS_CHIRP ui.chirp(); // Buzz and wait. Is the delay needed for buttons to settle? - #if BOTH(HAS_MARLINUI_MENU, HAS_BEEPER) + #if ALL(HAS_MARLINUI_MENU, HAS_BEEPER) for (int8_t i = 5; i--;) { buzzer.tick(); delay(2); } #elif HAS_MARLINUI_MENU delay(10); @@ -837,7 +837,7 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { } #endif -#if BOTH(HAS_BED_PROBE, TOUCH_SCREEN) +#if ALL(HAS_BED_PROBE, TOUCH_SCREEN) static void z_select() { motionAxisState.z_selection *= -1; quick_feedback(); @@ -936,7 +936,7 @@ void MarlinUI::move_axis_screen() { motionAxisState.zTypePos.x = x; motionAxisState.zTypePos.y = y; TERN_(HAS_Z_AXIS, drawCurZSelection()); - #if BOTH(HAS_BED_PROBE, TOUCH_SCREEN) + #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); #endif diff --git a/Marlin/src/lcd/tft/ui_320x240.cpp b/Marlin/src/lcd/tft/ui_320x240.cpp index c2918711f4..0d145f10eb 100644 --- a/Marlin/src/lcd/tft/ui_320x240.cpp +++ b/Marlin/src/lcd/tft/ui_320x240.cpp @@ -36,7 +36,7 @@ #include "../../module/planner.h" #include "../../module/motion.h" -#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) +#if DISABLED(LCD_PROGRESS_BAR) && ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) #include "../../feature/filwidth.h" #include "../../gcode/parser.h" #endif @@ -708,7 +708,7 @@ struct { static void quick_feedback() { #if HAS_CHIRP ui.chirp(); // Buzz and wait. Is the delay needed for buttons to settle? - #if BOTH(HAS_MARLINUI_MENU, HAS_BEEPER) + #if ALL(HAS_MARLINUI_MENU, HAS_BEEPER) for (int8_t i = 5; i--;) { buzzer.tick(); delay(2); } #elif HAS_MARLINUI_MENU delay(10); @@ -1029,7 +1029,7 @@ void MarlinUI::move_axis_screen() { drawBtn(zplus_x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy); - #if BOTH(HAS_BED_PROBE, TOUCH_SCREEN) + #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); #endif @@ -1129,7 +1129,7 @@ void MarlinUI::move_axis_screen() { motionAxisState.zTypePos.x = x; motionAxisState.zTypePos.y = y; TERN_(HAS_Z_AXIS, drawCurZSelection()); - #if BOTH(HAS_BED_PROBE, TOUCH_SCREEN) + #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); #endif diff --git a/Marlin/src/lcd/tft/ui_480x320.cpp b/Marlin/src/lcd/tft/ui_480x320.cpp index e1ddfe5e1a..75ec50adc2 100644 --- a/Marlin/src/lcd/tft/ui_480x320.cpp +++ b/Marlin/src/lcd/tft/ui_480x320.cpp @@ -36,7 +36,7 @@ #include "../../module/planner.h" #include "../../module/motion.h" -#if DISABLED(LCD_PROGRESS_BAR) && BOTH(FILAMENT_LCD_DISPLAY, HAS_MEDIA) +#if DISABLED(LCD_PROGRESS_BAR) && ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) #include "../../feature/filwidth.h" #include "../../gcode/parser.h" #endif @@ -627,7 +627,7 @@ struct { static void quick_feedback() { #if HAS_CHIRP ui.chirp(); // Buzz and wait. Is the delay needed for buttons to settle? - #if BOTH(HAS_MARLINUI_MENU, HAS_BEEPER) + #if ALL(HAS_MARLINUI_MENU, HAS_BEEPER) for (int8_t i = 5; i--;) { buzzer.tick(); delay(2); } #elif HAS_MARLINUI_MENU delay(10); @@ -837,7 +837,7 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { } #endif // TOUCH_SCREEN -#if BOTH(HAS_BED_PROBE, TOUCH_SCREEN) +#if ALL(HAS_BED_PROBE, TOUCH_SCREEN) static void z_select() { motionAxisState.z_selection *= -1; quick_feedback(); @@ -940,7 +940,7 @@ void MarlinUI::move_axis_screen() { motionAxisState.zTypePos.x = x; motionAxisState.zTypePos.y = y; TERN_(HAS_Z_AXIS, drawCurZSelection()); - #if BOTH(HAS_BED_PROBE, TOUCH_SCREEN) + #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); #endif diff --git a/Marlin/src/libs/nozzle.cpp b/Marlin/src/libs/nozzle.cpp index e675c53cb1..58c097e316 100644 --- a/Marlin/src/libs/nozzle.cpp +++ b/Marlin/src/libs/nozzle.cpp @@ -22,7 +22,7 @@ #include "../inc/MarlinConfig.h" -#if EITHER(NOZZLE_CLEAN_FEATURE, NOZZLE_PARK_FEATURE) +#if ANY(NOZZLE_CLEAN_FEATURE, NOZZLE_PARK_FEATURE) #include "nozzle.h" @@ -170,7 +170,7 @@ Nozzle nozzle; xyz_pos_t middle[HOTENDS] = NOZZLE_CLEAN_CIRCLE_MIDDLE; #endif - const uint8_t arrPos = EITHER(SINGLENOZZLE, MIXING_EXTRUDER) ? 0 : active_extruder; + const uint8_t arrPos = ANY(SINGLENOZZLE, MIXING_EXTRUDER) ? 0 : active_extruder; switch (pattern) { #if DISABLED(NOZZLE_CLEAN_PATTERN_LINE) diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index a22c4f0381..f73d0f1e6b 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -31,7 +31,7 @@ #include "temperature.h" #include "../lcd/marlinui.h" -#define DEBUG_OUT BOTH(USE_SENSORLESS, DEBUG_LEVELING_FEATURE) +#define DEBUG_OUT ALL(USE_SENSORLESS, DEBUG_LEVELING_FEATURE) #include "../core/debug_out.h" #if ENABLED(ENDSTOP_INTERRUPTS_FEATURE) @@ -1136,11 +1136,11 @@ void Endstops::update() { void Endstops::clear_endstop_state() { TERN_(X_SPI_SENSORLESS, CBI(live_state, X_ENDSTOP)); - #if BOTH(X_SPI_SENSORLESS, X_DUAL_ENDSTOPS) + #if ALL(X_SPI_SENSORLESS, X_DUAL_ENDSTOPS) CBI(live_state, X2_ENDSTOP); #endif TERN_(Y_SPI_SENSORLESS, CBI(live_state, Y_ENDSTOP)); - #if BOTH(Y_SPI_SENSORLESS, Y_DUAL_ENDSTOPS) + #if ALL(Y_SPI_SENSORLESS, Y_DUAL_ENDSTOPS) CBI(live_state, Y2_ENDSTOP); #endif TERN_(Z_SPI_SENSORLESS, CBI(live_state, Z_ENDSTOP)); diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index e6df20a998..d7b6d76fae 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -257,7 +257,7 @@ void report_current_position_projected() { AutoReporter position_auto_reporter; #endif -#if EITHER(FULL_REPORT_TO_HOST_FEATURE, REALTIME_REPORTING_COMMANDS) +#if ANY(FULL_REPORT_TO_HOST_FEATURE, REALTIME_REPORTING_COMMANDS) M_StateEnum M_State_grbl = M_INIT; @@ -941,7 +941,7 @@ void restore_feedrate_and_scaling() { if (TERN0(DELTA, !all_axes_homed())) return; - #if BOTH(HAS_HOTEND_OFFSET, DELTA) + #if ALL(HAS_HOTEND_OFFSET, DELTA) // The effector center position will be the target minus the hotend offset. const xy_pos_t offs = hotend_offset[active_extruder]; #elif ENABLED(POLARGRAPH) @@ -1232,7 +1232,7 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool // Minimum number of seconds to move the given distance const float seconds = cartesian_mm / ( - #if BOTH(HAS_ROTATIONAL_AXES, INCH_MODE_SUPPORT) + #if ALL(HAS_ROTATIONAL_AXES, INCH_MODE_SUPPORT) cartes_move ? scaled_fr_mm_s : LINEAR_UNIT(scaled_fr_mm_s) #else scaled_fr_mm_s @@ -1542,7 +1542,7 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool void prepare_line_to_destination() { apply_motion_limits(destination); - #if EITHER(PREVENT_COLD_EXTRUSION, PREVENT_LENGTHY_EXTRUDE) + #if ANY(PREVENT_COLD_EXTRUSION, PREVENT_LENGTHY_EXTRUDE) if (!DEBUGGING(DRYRUN) && destination.e != current_position.e) { bool ignore_e = thermalManager.tooColdToExtrude(active_extruder); @@ -1873,12 +1873,12 @@ void prepare_line_to_destination() { if (is_home_dir) { if (TERN0(HOMING_Z_WITH_PROBE, axis == Z_AXIS)) { - #if BOTH(HAS_HEATED_BED, WAIT_FOR_BED_HEATER) + #if ALL(HAS_HEATED_BED, WAIT_FOR_BED_HEATER) // Wait for bed to heat back up between probing points thermalManager.wait_for_bed_heating(); #endif - #if BOTH(HAS_HOTEND, WAIT_FOR_HOTEND) + #if ALL(HAS_HOTEND, WAIT_FOR_HOTEND) // Wait for the hotend to heat back up between probing points thermalManager.wait_for_hotend_heating(active_extruder); #endif @@ -1895,7 +1895,7 @@ void prepare_line_to_destination() { #endif } - #if EITHER(MORGAN_SCARA, MP_SCARA) + #if ANY(MORGAN_SCARA, MP_SCARA) // Tell the planner the axis is at 0 current_position[axis] = 0; sync_plan_position(); @@ -2093,11 +2093,11 @@ void prepare_line_to_destination() { void homeaxis(const AxisEnum axis) { - #if EITHER(MORGAN_SCARA, MP_SCARA) + #if ANY(MORGAN_SCARA, MP_SCARA) // Only Z homing (with probe) is permitted if (axis != Z_AXIS) { BUZZ(100, 880); return; } #else - #define _CAN_HOME(A) (axis == _AXIS(A) && (EITHER(A##_SPI_SENSORLESS, HAS_##A##_ENDSTOP) || TERN0(HOMING_Z_WITH_PROBE, _AXIS(A) == Z_AXIS))) + #define _CAN_HOME(A) (axis == _AXIS(A) && (ANY(A##_SPI_SENSORLESS, HAS_##A##_ENDSTOP) || TERN0(HOMING_Z_WITH_PROBE, _AXIS(A) == Z_AXIS))) #define _ANDCANT(N) && !_CAN_HOME(N) if (true MAIN_AXIS_MAP(_ANDCANT)) return; #endif @@ -2173,7 +2173,7 @@ void prepare_line_to_destination() { // If a second homing move is configured... if (bump) { - #if BOTH(HOMING_Z_WITH_PROBE, BLTOUCH) + #if ALL(HOMING_Z_WITH_PROBE, BLTOUCH) if (axis == Z_AXIS && !bltouch.high_speed_mode) bltouch.stow(); // Intermediate STOW (in LOW SPEED MODE) #endif @@ -2195,7 +2195,7 @@ void prepare_line_to_destination() { } #endif - #if BOTH(HOMING_Z_WITH_PROBE, BLTOUCH) + #if ALL(HOMING_Z_WITH_PROBE, BLTOUCH) if (axis == Z_AXIS && !bltouch.high_speed_mode && bltouch.deploy()) return; // Intermediate DEPLOY (in LOW SPEED MODE) #endif @@ -2206,7 +2206,7 @@ void prepare_line_to_destination() { do_homing_move(axis, rebump, get_homing_bump_feedrate(axis), true); } - #if BOTH(HOMING_Z_WITH_PROBE, BLTOUCH) + #if ALL(HOMING_Z_WITH_PROBE, BLTOUCH) if (axis == Z_AXIS) bltouch.stow(); // The final STOW #endif @@ -2443,7 +2443,7 @@ void set_axis_is_at_home(const AxisEnum axis) { } #endif - #if EITHER(MORGAN_SCARA, AXEL_TPARA) + #if ANY(MORGAN_SCARA, AXEL_TPARA) scara_set_axis_is_at_home(axis); #elif ENABLED(DELTA) current_position[axis] = (axis == Z_AXIS) ? DIFF_TERN(HAS_BED_PROBE, delta_height, probe.offset.z) : base_home_pos(axis); diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index b7e37f6b70..ce05c82c77 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -271,7 +271,7 @@ void report_current_position_projected(); extern AutoReporter position_auto_reporter; #endif -#if EITHER(FULL_REPORT_TO_HOST_FEATURE, REALTIME_REPORTING_COMMANDS) +#if ANY(FULL_REPORT_TO_HOST_FEATURE, REALTIME_REPORTING_COMMANDS) #define HAS_GRBL_STATE 1 /** * Machine states for GRBL or TinyG diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 02a7d05cae..1d3bb268ef 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -795,7 +795,7 @@ void Planner::calculate_trapezoid_for_block(block_t * const block, const_float_t NOLESS(initial_rate, uint32_t(MINIMAL_STEP_RATE)); NOLESS(final_rate, uint32_t(MINIMAL_STEP_RATE)); - #if EITHER(S_CURVE_ACCELERATION, LIN_ADVANCE) + #if ANY(S_CURVE_ACCELERATION, LIN_ADVANCE) // If we have some plateau time, the cruise rate will be the nominal rate uint32_t cruise_rate = block->nominal_rate; #endif @@ -829,7 +829,7 @@ void Planner::calculate_trapezoid_for_block(block_t * const block, const_float_t accelerate_steps = _MIN(uint32_t(_MAX(accelerate_steps_float, 0)), block->step_event_count); decelerate_steps = block->step_event_count - accelerate_steps; - #if EITHER(S_CURVE_ACCELERATION, LIN_ADVANCE) + #if ANY(S_CURVE_ACCELERATION, LIN_ADVANCE) // We won't reach the cruising rate. Let's calculate the speed we will reach cruise_rate = final_speed(initial_rate, accel, accelerate_steps); #endif @@ -1349,7 +1349,7 @@ void Planner::check_axes_activity() { if (has_blocks_queued()) { - #if EITHER(HAS_TAIL_FAN_SPEED, BARICUDA) + #if ANY(HAS_TAIL_FAN_SPEED, BARICUDA) block_t *block = &block_buffer[block_buffer_tail]; #endif @@ -1773,7 +1773,7 @@ float Planner::get_axis_position_mm(const AxisEnum axis) { else axis_steps = DIFF_TERN(BACKLASH_COMPENSATION, stepper.position(axis), backlash.get_applied_steps(axis)); - #elif EITHER(MARKFORGED_XY, MARKFORGED_YX) + #elif ANY(MARKFORGED_XY, MARKFORGED_YX) // Requesting one of the joined axes? if (axis == CORE_AXIS_1 || axis == CORE_AXIS_2) { @@ -1925,7 +1925,7 @@ bool Planner::_populate_block( ); //*/ - #if EITHER(PREVENT_COLD_EXTRUSION, PREVENT_LENGTHY_EXTRUDE) + #if ANY(PREVENT_COLD_EXTRUSION, PREVENT_LENGTHY_EXTRUDE) if (dist.e) { #if ENABLED(PREVENT_COLD_EXTRUSION) if (thermalManager.tooColdToExtrude(extruder)) { @@ -2299,7 +2299,7 @@ bool Planner::_populate_block( // Example: At 120mm/s a 60mm move involving XYZ axes takes 0.5s. So this will give 2.0. // Example 2: At 120°/s a 60° move involving only rotational axes takes 0.5s. So this will give 2.0. float inverse_secs = inverse_millimeters * ( - #if BOTH(HAS_ROTATIONAL_AXES, INCH_MODE_SUPPORT) + #if ALL(HAS_ROTATIONAL_AXES, INCH_MODE_SUPPORT) cartesian_move ? fr_mm_s : LINEAR_UNIT(fr_mm_s) #else fr_mm_s @@ -2310,7 +2310,7 @@ bool Planner::_populate_block( const uint8_t moves_queued = nonbusy_movesplanned(); // Slow down when the buffer starts to empty, rather than wait at the corner for a buffer refill - #if EITHER(SLOWDOWN, HAS_WIRED_LCD) || defined(XY_FREQUENCY_LIMIT) + #if ANY(SLOWDOWN, HAS_WIRED_LCD) || defined(XY_FREQUENCY_LIMIT) // Segment time in microseconds int32_t segment_time_us = LROUND(1000000.0f / inverse_secs); #endif @@ -2907,7 +2907,7 @@ void Planner::buffer_sync_block(const BlockFlagBit sync_flag/*=BLOCK_BIT_SYNC_PO #if ENABLED(BACKLASH_COMPENSATION) LOOP_NUM_AXES(axis) block->position[axis] += backlash.get_applied_steps((AxisEnum)axis); #endif - #if BOTH(HAS_FAN, LASER_SYNCHRONOUS_M106_M107) + #if ALL(HAS_FAN, LASER_SYNCHRONOUS_M106_M107) FANS_LOOP(i) block->fan_speed[i] = thermalManager.fan_speed[i]; #endif diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index ee79c913af..e74aea56a5 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -938,7 +938,7 @@ class Planner { } // SCARA AB and Polar YB axes are in degrees, not mm - #if EITHER(IS_SCARA, POLAR) + #if ANY(IS_SCARA, POLAR) FORCE_INLINE static float get_axis_position_degrees(const AxisEnum axis) { return get_axis_position_mm(axis); } #endif @@ -1041,7 +1041,7 @@ class Planner { return target_velocity_sqr - 2 * accel * distance; } - #if EITHER(S_CURVE_ACCELERATION, LIN_ADVANCE) + #if ANY(S_CURVE_ACCELERATION, LIN_ADVANCE) /** * Calculate the speed reached given initial speed, acceleration and distance */ diff --git a/Marlin/src/module/printcounter.h b/Marlin/src/module/printcounter.h index 63cc1da158..ebf61a3a1c 100644 --- a/Marlin/src/module/printcounter.h +++ b/Marlin/src/module/printcounter.h @@ -54,7 +54,7 @@ struct printStatistics { // 16 bytes class PrintCounter: public Stopwatch { private: typedef Stopwatch super; - typedef IF::type eeprom_address_t; + typedef IF::type eeprom_address_t; static printStatistics data; diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 1e01cfd9b6..c3ea161cb4 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -57,9 +57,9 @@ float largest_sensorless_adj = 0; #endif -#if EITHER(HAS_QUIET_PROBING, USE_SENSORLESS) +#if ANY(HAS_QUIET_PROBING, USE_SENSORLESS) #include "stepper/indirection.h" - #if BOTH(HAS_QUIET_PROBING, PROBING_ESTEPPERS_OFF) + #if ALL(HAS_QUIET_PROBING, PROBING_ESTEPPERS_OFF) #include "stepper.h" #endif #if USE_SENSORLESS @@ -429,7 +429,7 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { #endif } -#if EITHER(PREHEAT_BEFORE_PROBING, PREHEAT_BEFORE_LEVELING) +#if ANY(PREHEAT_BEFORE_PROBING, PREHEAT_BEFORE_LEVELING) #if ENABLED(PREHEAT_BEFORE_PROBING) #ifndef PROBING_NOZZLE_TEMP @@ -490,7 +490,7 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { void Probe::probe_error_stop() { SERIAL_ERROR_START(); SERIAL_ECHOPGM(STR_STOP_PRE); - #if EITHER(Z_PROBE_SLED, Z_PROBE_ALLEN_KEY) + #if ANY(Z_PROBE_SLED, Z_PROBE_ALLEN_KEY) SERIAL_ECHOPGM(STR_STOP_UNHOMED); #elif ENABLED(BLTOUCH) SERIAL_ECHOPGM(STR_STOP_BLTOUCH); @@ -515,7 +515,7 @@ bool Probe::set_deployed(const bool deploy, const bool no_return/*=false*/) { // Make room for probe to deploy (or stow) // Fix-mounted probe should only raise for deploy // unless PAUSE_BEFORE_DEPLOY_STOW is enabled - #if EITHER(FIX_MOUNTED_PROBE, NOZZLE_AS_PROBE) && DISABLED(PAUSE_BEFORE_DEPLOY_STOW) + #if ANY(FIX_MOUNTED_PROBE, NOZZLE_AS_PROBE) && DISABLED(PAUSE_BEFORE_DEPLOY_STOW) const bool z_raise_wanted = deploy; #else constexpr bool z_raise_wanted = true; @@ -527,7 +527,7 @@ bool Probe::set_deployed(const bool deploy, const bool no_return/*=false*/) { do_z_clearance(zdest); } - #if EITHER(Z_PROBE_SLED, Z_PROBE_ALLEN_KEY) + #if ANY(Z_PROBE_SLED, Z_PROBE_ALLEN_KEY) if (homing_needed_error(TERN_(Z_PROBE_SLED, _BV(X_AXIS)))) { probe_error_stop(); return true; @@ -588,11 +588,11 @@ bool Probe::set_deployed(const bool deploy, const bool no_return/*=false*/) { bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { DEBUG_SECTION(log_probe, "Probe::probe_down_to_z", DEBUGGING(LEVELING)); - #if BOTH(HAS_HEATED_BED, WAIT_FOR_BED_HEATER) + #if ALL(HAS_HEATED_BED, WAIT_FOR_BED_HEATER) thermalManager.wait_for_bed_heating(); #endif - #if BOTH(HAS_TEMP_HOTEND, WAIT_FOR_HOTEND) + #if ALL(HAS_TEMP_HOTEND, WAIT_FOR_HOTEND) thermalManager.wait_for_hotend_heating(active_extruder); #endif @@ -654,7 +654,7 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { return true; // Stow in LOW SPEED MODE on every trigger #endif - #if BOTH(HAS_Z_SERVO_PROBE, Z_SERVO_INTERMEDIATE_STOW) + #if ALL(HAS_Z_SERVO_PROBE, Z_SERVO_INTERMEDIATE_STOW) probe_specific_action(false); // Always stow #endif @@ -689,7 +689,7 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { * @return TRUE if the tare cold not be completed */ bool Probe::tare() { - #if BOTH(PROBE_ACTIVATION_SWITCH, PROBE_TARE_ONLY_WHILE_INACTIVE) + #if ALL(PROBE_ACTIVATION_SWITCH, PROBE_TARE_ONLY_WHILE_INACTIVE) if (endstops.probe_switch_activated()) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Cannot tare an active probe"); return true; diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 98b4b107cd..05a97d9470 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -79,7 +79,7 @@ public: static xyz_pos_t offset; - #if EITHER(PREHEAT_BEFORE_PROBING, PREHEAT_BEFORE_LEVELING) + #if ANY(PREHEAT_BEFORE_PROBING, PREHEAT_BEFORE_LEVELING) static void preheat_for_probing(const celsius_t hotend_temp, const celsius_t bed_temp, const bool early=false); #endif diff --git a/Marlin/src/module/scara.cpp b/Marlin/src/module/scara.cpp index 4c42ace884..9c149670e9 100644 --- a/Marlin/src/module/scara.cpp +++ b/Marlin/src/module/scara.cpp @@ -39,7 +39,7 @@ float segments_per_second = DEFAULT_SEGMENTS_PER_SECOND; -#if EITHER(MORGAN_SCARA, MP_SCARA) +#if ANY(MORGAN_SCARA, MP_SCARA) static constexpr xy_pos_t scara_offset = { SCARA_OFFSET_X, SCARA_OFFSET_Y }; diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 28eee57c08..f9dff24656 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -56,7 +56,7 @@ #include "../gcode/gcode.h" #include "../MarlinCore.h" -#if EITHER(EEPROM_SETTINGS, SD_FIRMWARE_UPDATE) +#if ANY(EEPROM_SETTINGS, SD_FIRMWARE_UPDATE) #include "../HAL/shared/eeprom_api.h" #endif @@ -695,7 +695,7 @@ void MarlinSettings::postprocess() { #endif } -#if BOTH(PRINTCOUNTER, EEPROM_SETTINGS) +#if ALL(PRINTCOUNTER, EEPROM_SETTINGS) #include "printcounter.h" static_assert( !WITHIN(STATS_EEPROM_ADDRESS, EEPROM_OFFSET, EEPROM_OFFSET + sizeof(SettingsData)) && @@ -739,10 +739,10 @@ void MarlinSettings::postprocess() { // This file simply uses the DEBUG_ECHO macros to implement EEPROM_CHITCHAT. // For deeper debugging of EEPROM issues enable DEBUG_EEPROM_READWRITE. // -#define DEBUG_OUT EITHER(EEPROM_CHITCHAT, DEBUG_LEVELING_FEATURE) +#define DEBUG_OUT ANY(EEPROM_CHITCHAT, DEBUG_LEVELING_FEATURE) #include "../core/debug_out.h" -#if BOTH(EEPROM_CHITCHAT, HOST_PROMPT_SUPPORT) +#if ALL(EEPROM_CHITCHAT, HOST_PROMPT_SUPPORT) #define HOST_EEPROM_CHITCHAT 1 #endif @@ -2803,14 +2803,14 @@ void MarlinSettings::postprocess() { bedlevel.report_state(); if (!bedlevel.sanity_check()) { - #if BOTH(EEPROM_CHITCHAT, DEBUG_LEVELING_FEATURE) + #if ALL(EEPROM_CHITCHAT, DEBUG_LEVELING_FEATURE) bedlevel.echo_name(); DEBUG_ECHOLNPGM(" initialized.\n"); #endif } else { eeprom_error = ERR_EEPROM_CORRUPT; - #if BOTH(EEPROM_CHITCHAT, DEBUG_LEVELING_FEATURE) + #if ALL(EEPROM_CHITCHAT, DEBUG_LEVELING_FEATURE) DEBUG_ECHOPGM("?Can't enable "); bedlevel.echo_name(); DEBUG_ECHOLNPGM("."); @@ -2888,7 +2888,7 @@ void MarlinSettings::postprocess() { return success; } reset(); - #if EITHER(EEPROM_AUTO_INIT, EEPROM_INIT_NOW) + #if ANY(EEPROM_AUTO_INIT, EEPROM_INIT_NOW) (void)save(); SERIAL_ECHO_MSG("EEPROM Initialized"); #endif @@ -3590,7 +3590,7 @@ void MarlinSettings::reset() { postprocess(); - #if EITHER(EEPROM_CHITCHAT, DEBUG_LEVELING_FEATURE) + #if ANY(EEPROM_CHITCHAT, DEBUG_LEVELING_FEATURE) FSTR_P const hdsl = F("Hardcoded Default Settings Loaded"); TERN_(HOST_EEPROM_CHITCHAT, hostui.notify(hdsl)); DEBUG_ECHO_START(); DEBUG_ECHOLNF(hdsl); @@ -3743,7 +3743,7 @@ void MarlinSettings::reset() { // // M666 Endstops Adjustment // - #if EITHER(DELTA, HAS_EXTRA_ENDSTOPS) + #if ANY(DELTA, HAS_EXTRA_ENDSTOPS) gcode.M666_report(forReplay); #endif diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 3188f77da8..eb977793ef 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -148,7 +148,7 @@ Stepper stepper; // Singleton // public: -#if EITHER(HAS_EXTRA_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) +#if ANY(HAS_EXTRA_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) bool Stepper::separate_multi_axis = false; #endif @@ -182,7 +182,7 @@ bool Stepper::abort_current_block; bool Stepper::locked_Y_motor = false, Stepper::locked_Y2_motor = false; #endif -#if EITHER(Z_MULTI_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) +#if ANY(Z_MULTI_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) bool Stepper::locked_Z_motor = false, Stepper::locked_Z2_motor = false #if NUM_Z_STEPPERS >= 3 , Stepper::locked_Z3_motor = false @@ -218,7 +218,7 @@ uint32_t Stepper::advance_divisor = 0, Stepper::decelerate_after, // The count at which to start decelerating Stepper::step_event_count; // The total event count for the current block -#if EITHER(HAS_MULTI_EXTRUDER, MIXING_EXTRUDER) +#if ANY(HAS_MULTI_EXTRUDER, MIXING_EXTRUDER) uint8_t Stepper::stepper_extruder; #else constexpr uint8_t Stepper::stepper_extruder; @@ -1967,7 +1967,7 @@ void Stepper::pulse_phase_isr() { PULSE_PREP(W); #endif - #if EITHER(HAS_E0_STEP, MIXING_EXTRUDER) + #if ANY(HAS_E0_STEP, MIXING_EXTRUDER) PULSE_PREP(E); #if ENABLED(LIN_ADVANCE) @@ -2558,7 +2558,7 @@ hal_timer_t Stepper::block_phase_isr() { * If DeltaA == -DeltaB, the movement is only in the 2nd axis (Y or Z, handled below) * If DeltaA == DeltaB, the movement is only in the 1st axis (X) */ - #if EITHER(COREXY, COREXZ) + #if ANY(COREXY, COREXZ) #define X_CMP(A,B) ((A)==(B)) #else #define X_CMP(A,B) ((A)!=(B)) @@ -2578,7 +2578,7 @@ hal_timer_t Stepper::block_phase_isr() { * If DeltaA == DeltaB, the movement is only in the 1st axis (X or Y) * If DeltaA == -DeltaB, the movement is only in the 2nd axis (Y or Z) */ - #if EITHER(COREYX, COREYZ) + #if ANY(COREYX, COREYZ) #define Y_CMP(A,B) ((A)==(B)) #else #define Y_CMP(A,B) ((A)!=(B)) @@ -2598,7 +2598,7 @@ hal_timer_t Stepper::block_phase_isr() { * If DeltaA == DeltaB, the movement is only in the 1st axis (X or Y, already handled above) * If DeltaA == -DeltaB, the movement is only in the 2nd axis (Z) */ - #if EITHER(COREZX, COREZY) + #if ANY(COREZX, COREZY) #define Z_CMP(A,B) ((A)==(B)) #else #define Z_CMP(A,B) ((A)!=(B)) @@ -2856,7 +2856,7 @@ void Stepper::init() { TERN_(HAS_X2_DIR, X2_DIR_INIT()); #if HAS_Y_DIR Y_DIR_INIT(); - #if BOTH(HAS_Y2_STEPPER, HAS_Y2_DIR) + #if ALL(HAS_Y2_STEPPER, HAS_Y2_DIR) Y2_DIR_INIT(); #endif #endif @@ -2908,7 +2908,7 @@ void Stepper::init() { #endif X_ENABLE_INIT(); if (X_ENABLE_INIT_STATE) X_ENABLE_WRITE(X_ENABLE_INIT_STATE); - #if BOTH(HAS_X2_STEPPER, HAS_X2_ENABLE) + #if ALL(HAS_X2_STEPPER, HAS_X2_ENABLE) X2_ENABLE_INIT(); if (X_ENABLE_INIT_STATE) X2_ENABLE_WRITE(X_ENABLE_INIT_STATE); #endif @@ -2919,7 +2919,7 @@ void Stepper::init() { #endif Y_ENABLE_INIT(); if (Y_ENABLE_INIT_STATE) Y_ENABLE_WRITE(Y_ENABLE_INIT_STATE); - #if BOTH(HAS_Y2_STEPPER, HAS_Y2_ENABLE) + #if ALL(HAS_Y2_STEPPER, HAS_Y2_ENABLE) Y2_ENABLE_INIT(); if (Y_ENABLE_INIT_STATE) Y2_ENABLE_WRITE(Y_ENABLE_INIT_STATE); #endif diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index a2c9861abc..9799319368 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -290,7 +290,7 @@ class Stepper { public: - #if EITHER(HAS_EXTRA_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) + #if ANY(HAS_EXTRA_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) static bool separate_multi_axis; #endif @@ -337,7 +337,7 @@ class Stepper { #if ENABLED(Y_DUAL_ENDSTOPS) static bool locked_Y_motor, locked_Y2_motor; #endif - #if EITHER(Z_MULTI_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) + #if ANY(Z_MULTI_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) static bool locked_Z_motor, locked_Z2_motor #if NUM_Z_STEPPERS >= 3 , locked_Z3_motor @@ -375,7 +375,7 @@ class Stepper { decelerate_after, // The point from where we need to start decelerating step_event_count; // The total event count for the current block - #if EITHER(HAS_MULTI_EXTRUDER, MIXING_EXTRUDER) + #if ANY(HAS_MULTI_EXTRUDER, MIXING_EXTRUDER) static uint8_t stepper_extruder; #else static constexpr uint8_t stepper_extruder = 0; @@ -547,7 +547,7 @@ class Stepper { static void microstep_readings(); #endif - #if EITHER(HAS_EXTRA_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) + #if ANY(HAS_EXTRA_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) FORCE_INLINE static void set_separate_multi_axis(const bool state) { separate_multi_axis = state; } #endif #if ENABLED(X_DUAL_ENDSTOPS) @@ -558,7 +558,7 @@ class Stepper { FORCE_INLINE static void set_y_lock(const bool state) { locked_Y_motor = state; } FORCE_INLINE static void set_y2_lock(const bool state) { locked_Y2_motor = state; } #endif - #if EITHER(Z_MULTI_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) + #if ANY(Z_MULTI_ENDSTOPS, Z_STEPPER_AUTO_ALIGN) FORCE_INLINE static void set_z1_lock(const bool state) { locked_Z_motor = state; } FORCE_INLINE static void set_z2_lock(const bool state) { locked_Z2_motor = state; } #if NUM_Z_STEPPERS >= 3 diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index f785a683eb..315cf88830 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -37,7 +37,7 @@ #include "planner.h" #include "printcounter.h" -#if EITHER(HAS_COOLER, LASER_COOLANT_FLOW_METER) +#if ANY(HAS_COOLER, LASER_COOLANT_FLOW_METER) #include "../feature/cooler.h" #include "../feature/spindle_laser.h" #endif @@ -156,7 +156,7 @@ #include "probe.h" #endif -#if EITHER(MPCTEMP, PID_EXTRUSION_SCALING) +#if ANY(MPCTEMP, PID_EXTRUSION_SCALING) #include "stepper.h" #endif @@ -373,7 +373,7 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); redundant_info_t Temperature::temp_redundant; #endif -#if EITHER(AUTO_POWER_E_FANS, HAS_FANCHECK) +#if ANY(AUTO_POWER_E_FANS, HAS_FANCHECK) uint8_t Temperature::autofan_speed[HOTENDS] = ARRAY_N_1(HOTENDS, FAN_OFF_PWM); #endif @@ -385,7 +385,7 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); uint8_t Temperature::coolerfan_speed = FAN_OFF_PWM; #endif -#if BOTH(FAN_SOFT_PWM, USE_CONTROLLER_FAN) +#if ALL(FAN_SOFT_PWM, USE_CONTROLLER_FAN) uint8_t Temperature::soft_pwm_controller_speed = FAN_OFF_PWM; #endif @@ -439,7 +439,7 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); #endif - #if EITHER(PROBING_FANS_OFF, ADVANCED_PAUSE_FANS_PAUSE) + #if ANY(PROBING_FANS_OFF, ADVANCED_PAUSE_FANS_PAUSE) bool Temperature::fans_paused; // = false; uint8_t Temperature::saved_fan_speed[FAN_COUNT] = ARRAY_N_1(FAN_COUNT, FAN_OFF_PWM); #endif @@ -489,7 +489,7 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); } #endif - #if EITHER(PROBING_FANS_OFF, ADVANCED_PAUSE_FANS_PAUSE) + #if ANY(PROBING_FANS_OFF, ADVANCED_PAUSE_FANS_PAUSE) void Temperature::set_fans_paused(const bool p) { if (p != fans_paused) { @@ -573,7 +573,7 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); raw_adc_t Temperature::maxtemp_raw_SOC = TEMP_SENSOR_SOC_RAW_HI_TEMP; #endif -#if BOTH(HAS_MARLINUI_MENU, PREVENT_COLD_EXTRUSION) && E_MANUAL > 0 +#if ALL(HAS_MARLINUI_MENU, PREVENT_COLD_EXTRUSION) && E_MANUAL > 0 bool Temperature::allow_cold_extrude_override = false; #else constexpr bool Temperature::allow_cold_extrude_override; @@ -698,15 +698,15 @@ volatile bool Temperature::raw_temps_ready = false; #define ONHEATINGSTART() C_TERN(ischamber, printerEventLEDs.onChamberHeatingStart(), B_TERN(isbed, printerEventLEDs.onBedHeatingStart(), printerEventLEDs.onHotendHeatingStart())) #define ONHEATING(S,C,T) C_TERN(ischamber, printerEventLEDs.onChamberHeating(S,C,T), B_TERN(isbed, printerEventLEDs.onBedHeating(S,C,T), printerEventLEDs.onHotendHeating(S,C,T))) - #define WATCH_PID DISABLED(NO_WATCH_PID_TUNING) && (BOTH(WATCH_CHAMBER, PIDTEMPCHAMBER) || BOTH(WATCH_BED, PIDTEMPBED) || BOTH(WATCH_HOTENDS, PIDTEMP)) + #define WATCH_PID DISABLED(NO_WATCH_PID_TUNING) && (ALL(WATCH_CHAMBER, PIDTEMPCHAMBER) || ALL(WATCH_BED, PIDTEMPBED) || ALL(WATCH_HOTENDS, PIDTEMP)) #if WATCH_PID - #if BOTH(THERMAL_PROTECTION_CHAMBER, PIDTEMPCHAMBER) + #if ALL(THERMAL_PROTECTION_CHAMBER, PIDTEMPCHAMBER) #define C_GTV(T,A,B) ((T) ? (A) : (B)) #else #define C_GTV(T,A,B) (B) #endif - #if BOTH(THERMAL_PROTECTION_BED, PIDTEMPBED) + #if ALL(THERMAL_PROTECTION_BED, PIDTEMPBED) #define B_GTV(T,A,B) ((T) ? (A) : (B)) #else #define B_GTV(T,A,B) (B) @@ -835,7 +835,7 @@ volatile bool Temperature::raw_temps_ready = false; // Make sure heating is actually working #if WATCH_PID - if (BOTH(WATCH_BED, WATCH_HOTENDS) || isbed == DISABLED(WATCH_HOTENDS) || ischamber == DISABLED(WATCH_HOTENDS)) { + if (ALL(WATCH_BED, WATCH_HOTENDS) || isbed == DISABLED(WATCH_HOTENDS) || ischamber == DISABLED(WATCH_HOTENDS)) { if (!heated) { // If not yet reached target... if (current_temp > next_watch_temp) { // Over the watch temp? next_watch_temp = current_temp + watch_temp_increase; // - set the next temp to watch for @@ -868,7 +868,7 @@ volatile bool Temperature::raw_temps_ready = false; SERIAL_ECHOPGM(STR_PID_AUTOTUNE); SERIAL_ECHOLNPGM(STR_PID_AUTOTUNE_FINISHED); TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_PID_AUTOTUNE_DONE))); - #if EITHER(PIDTEMPBED, PIDTEMPCHAMBER) + #if ANY(PIDTEMPBED, PIDTEMPCHAMBER) FSTR_P const estring = GHV(F("chamber"), F("bed"), FPSTR(NUL_STR)); say_default_(); SERIAL_ECHOF(estring); SERIAL_ECHOLNPGM("Kp ", tune_pid.p); say_default_(); SERIAL_ECHOF(estring); SERIAL_ECHOLNPGM("Ki ", tune_pid.i); @@ -939,7 +939,7 @@ volatile bool Temperature::raw_temps_ready = false; #if ENABLED(MPC_AUTOTUNE) - #if EITHER(MPC_FAN_0_ALL_HOTENDS, MPC_FAN_0_ACTIVE_HOTEND) + #if ANY(MPC_FAN_0_ALL_HOTENDS, MPC_FAN_0_ACTIVE_HOTEND) #define SINGLEFAN 1 #endif @@ -1416,13 +1416,13 @@ int16_t Temperature::getHeaterPower(const heater_id_t heater_id) { break; #endif default: - #if EITHER(AUTO_POWER_E_FANS, HAS_FANCHECK) + #if ANY(AUTO_POWER_E_FANS, HAS_FANCHECK) autofan_speed[realFan] = fan_on ? EXTRUDER_AUTO_FAN_SPEED : 0; #endif break; } - #if BOTH(HAS_FANCHECK, HAS_PWMFANCHECK) + #if ALL(HAS_FANCHECK, HAS_PWMFANCHECK) #define _AUTOFAN_SPEED() fan_check.is_measuring() ? 255 : EXTRUDER_AUTO_FAN_SPEED #else #define _AUTOFAN_SPEED() EXTRUDER_AUTO_FAN_SPEED @@ -1789,7 +1789,7 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { } #endif // WATCH_BED - #if BOTH(PROBING_HEATERS_OFF, BED_LIMIT_SWITCHING) + #if ALL(PROBING_HEATERS_OFF, BED_LIMIT_SWITCHING) #define PAUSE_CHANGE_REQD 1 #endif @@ -1877,11 +1877,11 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { } #endif - #if EITHER(CHAMBER_FAN, CHAMBER_VENT) || DISABLED(PIDTEMPCHAMBER) + #if ANY(CHAMBER_FAN, CHAMBER_VENT) || DISABLED(PIDTEMPCHAMBER) static bool flag_chamber_excess_heat; // = false; #endif - #if EITHER(CHAMBER_FAN, CHAMBER_VENT) + #if ANY(CHAMBER_FAN, CHAMBER_VENT) static bool flag_chamber_off; // = false if (temp_chamber.target > CHAMBER_MINTEMP) { @@ -2646,22 +2646,22 @@ void Temperature::updateTemperaturesFromRawValues() { if (temp_bed.target > 0 && !is_bed_preheating() && TP_CMP(BED, mintemp_raw_BED, temp_bed.getraw())) mintemp_error(H_BED); #endif - #if BOTH(HAS_HEATED_CHAMBER, THERMAL_PROTECTION_CHAMBER) + #if ALL(HAS_HEATED_CHAMBER, THERMAL_PROTECTION_CHAMBER) if (TP_CMP(CHAMBER, temp_chamber.getraw(), maxtemp_raw_CHAMBER)) maxtemp_error(H_CHAMBER); if (temp_chamber.target > 0 && TP_CMP(CHAMBER, mintemp_raw_CHAMBER, temp_chamber.getraw())) mintemp_error(H_CHAMBER); #endif - #if BOTH(HAS_COOLER, THERMAL_PROTECTION_COOLER) + #if ALL(HAS_COOLER, THERMAL_PROTECTION_COOLER) if (cutter.unitPower > 0 && TP_CMP(COOLER, temp_cooler.getraw(), maxtemp_raw_COOLER)) maxtemp_error(H_COOLER); if (TP_CMP(COOLER, mintemp_raw_COOLER, temp_cooler.getraw())) mintemp_error(H_COOLER); #endif - #if BOTH(HAS_TEMP_BOARD, THERMAL_PROTECTION_BOARD) + #if ALL(HAS_TEMP_BOARD, THERMAL_PROTECTION_BOARD) if (TP_CMP(BOARD, temp_board.getraw(), maxtemp_raw_BOARD)) maxtemp_error(H_BOARD); if (TP_CMP(BOARD, mintemp_raw_BOARD, temp_board.getraw())) mintemp_error(H_BOARD); #endif - #if BOTH(HAS_TEMP_SOC, THERMAL_PROTECTION_SOC) + #if ALL(HAS_TEMP_SOC, THERMAL_PROTECTION_SOC) if (TP_CMP(SOC, temp_soc.getraw(), maxtemp_raw_SOC)) maxtemp_error(H_SOC); #endif #undef TP_CMP @@ -3011,12 +3011,12 @@ void Temperature::init() { while (analog_to_celsius_cooler(maxtemp_raw_COOLER) < COOLER_MAXTEMP) maxtemp_raw_COOLER -= TEMPDIR(COOLER) * (OVERSAMPLENR); #endif - #if BOTH(HAS_TEMP_BOARD, THERMAL_PROTECTION_BOARD) + #if ALL(HAS_TEMP_BOARD, THERMAL_PROTECTION_BOARD) while (analog_to_celsius_board(mintemp_raw_BOARD) < BOARD_MINTEMP) mintemp_raw_BOARD += TEMPDIR(BOARD) * (OVERSAMPLENR); while (analog_to_celsius_board(maxtemp_raw_BOARD) > BOARD_MAXTEMP) maxtemp_raw_BOARD -= TEMPDIR(BOARD) * (OVERSAMPLENR); #endif - #if BOTH(HAS_TEMP_SOC, THERMAL_PROTECTION_SOC) + #if ALL(HAS_TEMP_SOC, THERMAL_PROTECTION_SOC) while (analog_to_celsius_soc(maxtemp_raw_SOC) > SOC_MAXTEMP) maxtemp_raw_SOC -= OVERSAMPLENR; #endif @@ -3272,7 +3272,7 @@ void Temperature::disable_all_heaters() { #endif // PROBING_HEATERS_OFF -#if EITHER(SINGLENOZZLE_STANDBY_TEMP, SINGLENOZZLE_STANDBY_FAN) +#if ANY(SINGLENOZZLE_STANDBY_TEMP, SINGLENOZZLE_STANDBY_FAN) void Temperature::singlenozzle_change(const uint8_t old_tool, const uint8_t new_tool) { #if ENABLED(SINGLENOZZLE_STANDBY_FAN) @@ -3641,7 +3641,7 @@ void Temperature::isr() { static SoftPWM soft_pwm_cooler; #endif - #if BOTH(FAN_SOFT_PWM, USE_CONTROLLER_FAN) + #if ALL(FAN_SOFT_PWM, USE_CONTROLLER_FAN) static SoftPWM soft_pwm_controller; #endif diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index c4dae4c6e5..9d1d68cf0b 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -369,7 +369,7 @@ typedef struct { float p, i, d, c, f; } raw_pidcf_t; }; typedef - #if BOTH(PID_EXTRUSION_SCALING, PID_FAN_SCALING) + #if ALL(PID_EXTRUSION_SCALING, PID_FAN_SCALING) PIDCF_t<0, PID_MAX, LPQ_MAX_LEN, PID_FAN_SCALING_MIN_SPEED, PID_FAN_SCALING_LIN_FACTOR> #elif ENABLED(PID_EXTRUSION_SCALING) PIDC_t<0, PID_MAX, LPQ_MAX_LEN> @@ -409,7 +409,7 @@ typedef struct { float p, i, d, c, f; } raw_pidcf_t; #endif -#if ENABLED(G26_MESH_VALIDATION) && EITHER(HAS_MARLINUI_MENU, EXTENSIBLE_UI) +#if ENABLED(G26_MESH_VALIDATION) && ANY(HAS_MARLINUI_MENU, EXTENSIBLE_UI) #define G26_CLICK_CAN_CANCEL 1 #endif @@ -485,7 +485,7 @@ struct PIDHeaterInfo : public HeaterInfo { #if HAS_TEMP_PROBE typedef temp_info_t probe_info_t; #endif -#if EITHER(HAS_COOLER, HAS_TEMP_COOLER) +#if ANY(HAS_COOLER, HAS_TEMP_COOLER) typedef heater_info_t cooler_info_t; #endif #if HAS_TEMP_BOARD @@ -628,7 +628,7 @@ class Temperature { static redundant_info_t temp_redundant; #endif - #if EITHER(AUTO_POWER_E_FANS, HAS_FANCHECK) + #if ANY(AUTO_POWER_E_FANS, HAS_FANCHECK) static uint8_t autofan_speed[HOTENDS]; #endif #if ENABLED(AUTO_POWER_CHAMBER_FAN) @@ -643,11 +643,11 @@ class Temperature { soft_pwm_count_fan[FAN_COUNT]; #endif - #if BOTH(FAN_SOFT_PWM, USE_CONTROLLER_FAN) + #if ALL(FAN_SOFT_PWM, USE_CONTROLLER_FAN) static uint8_t soft_pwm_controller_speed; #endif - #if BOTH(HAS_MARLINUI_MENU, PREVENT_COLD_EXTRUSION) && E_MANUAL > 0 + #if ALL(HAS_MARLINUI_MENU, PREVENT_COLD_EXTRUSION) && E_MANUAL > 0 static bool allow_cold_extrude_override; static void set_menu_cold_override(const bool allow) { allow_cold_extrude_override = allow; } #else @@ -671,7 +671,7 @@ class Temperature { static bool hotEnoughToExtrude(const uint8_t e) { return !tooColdToExtrude(e); } static bool targetHotEnoughToExtrude(const uint8_t e) { return !targetTooColdToExtrude(e); } - #if EITHER(SINGLENOZZLE_STANDBY_TEMP, SINGLENOZZLE_STANDBY_FAN) + #if ANY(SINGLENOZZLE_STANDBY_TEMP, SINGLENOZZLE_STANDBY_FAN) #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) static celsius_t singlenozzle_temp[EXTRUDERS]; #endif @@ -767,11 +767,11 @@ class Temperature { static raw_adc_t mintemp_raw_COOLER, maxtemp_raw_COOLER; #endif - #if BOTH(HAS_TEMP_BOARD, THERMAL_PROTECTION_BOARD) + #if ALL(HAS_TEMP_BOARD, THERMAL_PROTECTION_BOARD) static raw_adc_t mintemp_raw_BOARD, maxtemp_raw_BOARD; #endif - #if BOTH(HAS_TEMP_SOC, THERMAL_PROTECTION_SOC) + #if ALL(HAS_TEMP_SOC, THERMAL_PROTECTION_SOC) static raw_adc_t maxtemp_raw_SOC; #endif @@ -885,7 +885,7 @@ class Temperature { static void report_fan_speed(const uint8_t fan); #endif - #if EITHER(PROBING_FANS_OFF, ADVANCED_PAUSE_FANS_PAUSE) + #if ANY(PROBING_FANS_OFF, ADVANCED_PAUSE_FANS_PAUSE) static bool fans_paused; static uint8_t saved_fan_speed[FAN_COUNT]; #endif @@ -913,7 +913,7 @@ class Temperature { static void set_temp_fan_speed(const uint8_t fan, const uint16_t command_or_speed); #endif - #if EITHER(PROBING_FANS_OFF, ADVANCED_PAUSE_FANS_PAUSE) + #if ANY(PROBING_FANS_OFF, ADVANCED_PAUSE_FANS_PAUSE) void set_fans_paused(const bool p); #endif diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index cce3669355..d4c2fcb675 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -1165,7 +1165,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { if (new_tool != old_tool || TERN0(PARKING_EXTRUDER, extruder_parked)) { // PARKING_EXTRUDER may need to attach old_tool when homing destination = current_position; - #if BOTH(TOOLCHANGE_FILAMENT_SWAP, HAS_FAN) && TOOLCHANGE_FS_FAN >= 0 + #if ALL(TOOLCHANGE_FILAMENT_SWAP, HAS_FAN) && TOOLCHANGE_FS_FAN >= 0 // Store and stop fan. Restored on any exit. REMEMBER(fan, thermalManager.fan_speed[TOOLCHANGE_FS_FAN], 0); #endif @@ -1277,7 +1277,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { fast_line_to_current(Z_AXIS); } move_nozzle_servo(new_tool); - #elif EITHER(MECHANICAL_SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_NOZZLE) + #elif ANY(MECHANICAL_SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_NOZZLE) if (!no_move) { current_position.z = _MIN(current_position.z + toolchange_settings.z_raise, _MIN(TERN(HAS_SOFTWARE_ENDSTOPS, soft_endstop.max.z, Z_MAX_POS), Z_MAX_POS)); fast_line_to_current(Z_AXIS); @@ -1308,7 +1308,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { const bool should_move = safe_to_move && !no_move && IsRunning(); if (should_move) { - #if EITHER(SINGLENOZZLE_STANDBY_TEMP, SINGLENOZZLE_STANDBY_FAN) + #if ANY(SINGLENOZZLE_STANDBY_TEMP, SINGLENOZZLE_STANDBY_FAN) thermalManager.singlenozzle_change(old_tool, new_tool); #endif @@ -1469,7 +1469,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { // If using MECHANICAL_SWITCHING extruder/nozzle, set HOTEND_OFFSET in Z axis after running EVENT_GCODE_TOOLCHANGE // so that nozzle does not lower below print surface if new hotend Z offset is higher than old hotend Z offset. - #if EITHER(MECHANICAL_SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_NOZZLE) + #if ANY(MECHANICAL_SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_NOZZLE) #if HAS_HOTEND_OFFSET xyz_pos_t diff = hotend_offset[new_tool] - hotend_offset[old_tool]; TERN_(DUAL_X_CARRIAGE, diff.x = 0); diff --git a/Marlin/src/pins/esp32/pins_GODI_CONTROLLER_V1_0.h b/Marlin/src/pins/esp32/pins_GODI_CONTROLLER_V1_0.h index 35fc4e035d..6f8046988e 100644 --- a/Marlin/src/pins/esp32/pins_GODI_CONTROLLER_V1_0.h +++ b/Marlin/src/pins/esp32/pins_GODI_CONTROLLER_V1_0.h @@ -129,7 +129,7 @@ // Heaters / Fans // -#if EITHER(EDUTRONICS_12864OLED_SH1106, EDUTRONICS_12864OLED_SSD1306) +#if ANY(EDUTRONICS_12864OLED_SH1106, EDUTRONICS_12864OLED_SSD1306) #define LCDSCREEN_NAME "EDUTRONICS 12864 OLED" #define BTN_EN2 1 #define BTN_EN1 3 diff --git a/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h b/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h index 546fa82c0d..2dea1edacc 100644 --- a/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h +++ b/Marlin/src/pins/esp32/pins_MKS_TINYBEE.h @@ -177,7 +177,7 @@ #if SD_CONNECTION_IS(ONBOARD) #define FORCE_SOFT_SPI #endif - #if BOTH(MKS_MINI_12864_V3, HAS_MEDIA) + #if ALL(MKS_MINI_12864_V3, HAS_MEDIA) #define PAUSE_LCD_FOR_BUSY_SD #endif #else diff --git a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h index 4f32304dde..19ea927531 100644 --- a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h +++ b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h @@ -477,7 +477,7 @@ #define LCD_PINS_EN 51 // SID (MOSI) #define LCD_PINS_D4 52 // SCK (CLK) clock - #elif BOTH(IS_NEWPANEL, PANEL_ONE) + #elif ALL(IS_NEWPANEL, PANEL_ONE) #define LCD_PINS_RS 40 #define LCD_PINS_EN 42 @@ -509,7 +509,7 @@ #else - #if EITHER(MKS_12864OLED, MKS_12864OLED_SSD1306) + #if ANY(MKS_12864OLED, MKS_12864OLED_SSD1306) #define LCD_PINS_DC 25 // Set as output on init #define LCD_PINS_RS 27 // Pull low for 1s to init // DOGM SPI LCD Support @@ -593,7 +593,7 @@ #define LCD_SDSS SDSS #define SD_DETECT_PIN 49 - #elif EITHER(VIKI2, miniVIKI) + #elif ANY(VIKI2, miniVIKI) #define DOGLCD_CS 45 #define DOGLCD_A0 44 diff --git a/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h b/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h index 423c89b8c9..c498af3a64 100644 --- a/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h +++ b/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h @@ -130,7 +130,7 @@ #define LCD_PINS_EN P0_18 // (MOSI) EXP1-3 #define LCD_PINS_D4 P0_15 // (SCK) EXP1-5 - #if BOTH(HAS_MARLINUI_HD44780, IS_RRD_SC) + #if ALL(HAS_MARLINUI_HD44780, IS_RRD_SC) #error "REPRAP_DISCOUNT_SMART_CONTROLLER displays aren't supported by the BIQU B300 v1.0" #endif diff --git a/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h b/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h index 278ba12dd5..3fb29b9092 100644 --- a/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h +++ b/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h @@ -107,7 +107,7 @@ #define LCD_PINS_EN P0_18 // (MOSI) EXP1-3 #define LCD_PINS_D4 P0_15 // (SCK) EXP1-5 - #if BOTH(HAS_MARLINUI_HD44780, IS_RRD_SC) + #if ALL(HAS_MARLINUI_HD44780, IS_RRD_SC) #error "REPRAP_DISCOUNT_SMART_CONTROLLER displays aren't supported by the BIQU BQ111-A4" #endif diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h index ec21a1b39d..8cca8ec440 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h @@ -407,7 +407,7 @@ #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h index 9aa6a2b21b..a3fb8f6488 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h @@ -450,7 +450,7 @@ #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h index 2b01b4ce6f..75eea8e0f6 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h @@ -27,8 +27,8 @@ // https://github.com/bigtreetech/BTT-Expansion-module/tree/master/BTT%20EXP-MOT //#define BTT_MOTOR_EXPANSION -#if BOTH(HAS_WIRED_LCD, BTT_MOTOR_EXPANSION) - #if EITHER(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) +#if ALL(HAS_WIRED_LCD, BTT_MOTOR_EXPANSION) + #if ANY(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) #define EXP_MOT_USE_EXP2_ONLY 1 #else #error "You can't use both an LCD and a Motor Expansion Module on EXP1/EXP2 at the same time." diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h index 6d76fb2c8f..a4150aa22f 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h @@ -240,7 +240,7 @@ #define LCD_SDSS P0_28 // EXP2.4 #define LCD_PINS_EN P0_18 // EXP1.3 #define LCD_PINS_D4 P0_15 // EXP1.5 - #if EITHER(VIKI2, miniVIKI) + #if ANY(VIKI2, miniVIKI) #define DOGLCD_SCK SD_SCK_PIN #define DOGLCD_MOSI SD_MOSI_PIN #endif @@ -265,7 +265,7 @@ //#define FORCE_SOFT_SPI // Use this if default of hardware SPI causes display problems // results in LCD soft SPI mode 3, SD soft SPI mode 0 - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN P2_12 // J8-4 (LCD_D6 on FYSETC schematic) #endif diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h index 54a91e364d..42a0155471 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h @@ -371,7 +371,7 @@ #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h index a6341ec529..f3b134cd36 100644 --- a/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h +++ b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h @@ -207,9 +207,9 @@ #endif #ifndef FAN0_PIN - #if EITHER(FET_ORDER_EFB, FET_ORDER_EFF) // Hotend, Fan, Bed or Hotend, Fan, Fan + #if ANY(FET_ORDER_EFB, FET_ORDER_EFF) // Hotend, Fan, Bed or Hotend, Fan, Fan #define FAN0_PIN MOSFET_B_PIN - #elif EITHER(FET_ORDER_EEF, FET_ORDER_SF) // Hotend, Hotend, Fan or Spindle, Fan + #elif ANY(FET_ORDER_EEF, FET_ORDER_SF) // Hotend, Hotend, Fan or Spindle, Fan #define FAN0_PIN MOSFET_C_PIN #elif FET_ORDER_EEB // Hotend, Hotend, Bed #define FAN0_PIN P1_18 // (4) IO pin. Buffer needed @@ -353,7 +353,7 @@ //#define SHIFT_EN_PIN P1_22 // (41) J5-4 & AUX-4 #endif - #if EITHER(VIKI2, miniVIKI) + #if ANY(VIKI2, miniVIKI) #define DOGLCD_CS P0_16 // (16) #define DOGLCD_A0 P2_06 // (59) J3-8 & AUX-2 #define DOGLCD_SCK P0_15 // (52) (SCK) J3-9 & AUX-3 @@ -378,7 +378,7 @@ #define LCD_RESET_PIN P0_16 // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN P1_00 #endif diff --git a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h index 5899cb0f50..8412f1c12d 100644 --- a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h +++ b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h @@ -108,7 +108,7 @@ // // Display // -#if EITHER(VIKI2, miniVIKI) +#if ANY(VIKI2, miniVIKI) #define BEEPER_PIN P1_31 #define DOGLCD_A0 P2_06 #define DOGLCD_CS P0_16 diff --git a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h index 1a8192bafe..92e97ca875 100644 --- a/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h +++ b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h @@ -158,7 +158,7 @@ //#define SHIFT_EN_PIN P1_22 // (41) J5-4 & AUX-4 #endif - #if EITHER(VIKI2, miniVIKI) + #if ANY(VIKI2, miniVIKI) #define BEEPER_PIN P1_30 // (37) may change if cable changes #define DOGLCD_CS P0_26 // (63) J5-3 & AUX-2 #define DOGLCD_SCK SD_SCK_PIN diff --git a/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h b/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h index 2e04f7869a..966ff5ef95 100644 --- a/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h +++ b/Marlin/src/pins/lpc1769/pins_BTT_SKR_E3_TURBO.h @@ -260,7 +260,7 @@ #define LCD_PINS_D7 EXP1_01_PIN #define ADC_KEYPAD_PIN P1_23 // Repurpose servo pin for ADC - CONNECTING TO 5V WILL DAMAGE THE BOARD! - #elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) + #elif ANY(MKS_MINI_12864, ENDER2_STOCKDISPLAY) #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN diff --git a/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h b/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h index f86cd5d3c6..362aafe12e 100644 --- a/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h +++ b/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h @@ -190,7 +190,7 @@ // A custom EXP1 cable is required colored LEDs. Pins 1-5, 9, 10 of the cable go to pins 1-5, 9, 10 // on the board's EXP1 connector. Pins 6, 7, and 8 of the EXP1 cable go to the Ethernet connector. // Rev 1.2 displays do NOT require the RGB LEDs. 2.0 and 2.1 displays do require RGB. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN P1_16 // EXP1-6 => Ethernet pin 6 (top row, 3 from left) #endif diff --git a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h index e8c48c1b7a..ba78146623 100644 --- a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h +++ b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h @@ -389,7 +389,7 @@ #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h b/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h index 3e7e784b59..3db18e4acf 100644 --- a/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h +++ b/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h @@ -93,7 +93,7 @@ // // LCD / Controller // -#if EITHER(VIKI2, miniVIKI) +#if ANY(VIKI2, miniVIKI) #define BEEPER_PIN P1_31 #define DOGLCD_A0 P2_11 diff --git a/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h b/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h index 1982652af6..634e50c223 100644 --- a/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h +++ b/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h @@ -217,7 +217,7 @@ #endif -#if EITHER(CR10_STOCKDISPLAY, MKS_MINI_12864) +#if ANY(CR10_STOCKDISPLAY, MKS_MINI_12864) #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN #define BTN_ENC EXP1_02_PIN diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 6ee6401bad..77c2fc8037 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -61,7 +61,7 @@ #endif #endif -#if !(BOTH(HAS_WIRED_LCD, IS_NEWPANEL) && ANY(PANEL_ONE, VIKI2, miniVIKI, WYH_L12864, MINIPANEL, REPRAPWORLD_KEYPAD)) +#if !(ALL(HAS_WIRED_LCD, IS_NEWPANEL) && ANY(PANEL_ONE, VIKI2, miniVIKI, WYH_L12864, MINIPANEL, REPRAPWORLD_KEYPAD)) #define HAS_FREE_AUX2_PINS 1 #endif @@ -93,7 +93,7 @@ #if _ENDSTOP_IS_ANY(Y_MIN_PIN) || _ENDSTOP_IS_ANY(Y_MAX_PIN) #define NEEDS_Y_MINMAX 1 #endif -#if _ENDSTOP_IS_ANY(Z_MIN_PIN) || _ENDSTOP_IS_ANY(Z_MAX_PIN) || BOTH(Z_HOME_TO_MAX, Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) +#if _ENDSTOP_IS_ANY(Z_MIN_PIN) || _ENDSTOP_IS_ANY(Z_MAX_PIN) || ALL(Z_HOME_TO_MAX, Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) #define NEEDS_Z_MINMAX 1 #endif #undef _ENDSTOP_IS_ANY diff --git a/Marlin/src/pins/pinsDebug.h b/Marlin/src/pins/pinsDebug.h index 3219b1b7a2..a342d546c4 100644 --- a/Marlin/src/pins/pinsDebug.h +++ b/Marlin/src/pins/pinsDebug.h @@ -100,7 +100,7 @@ const PinInfo pin_array[] PROGMEM = { */ #if SERIAL_IN_USE(0) - #if EITHER(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM) + #if ANY(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM) { RXD_NAME_0, 0, true }, { TXD_NAME_0, 1, true }, #elif AVR_ATmega1284_FAMILY @@ -113,7 +113,7 @@ const PinInfo pin_array[] PROGMEM = { #endif #if SERIAL_IN_USE(1) - #if EITHER(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM) + #if ANY(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM) { RXD_NAME_1, 19, true }, { TXD_NAME_1, 18, true }, #elif AVR_ATmega1284_FAMILY @@ -131,7 +131,7 @@ const PinInfo pin_array[] PROGMEM = { #endif #if SERIAL_IN_USE(2) - #if EITHER(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM) + #if ANY(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM) { RXD_NAME_2, 17, true }, { TXD_NAME_2, 16, true }, #elif defined(TARGET_LPC1768) @@ -146,7 +146,7 @@ const PinInfo pin_array[] PROGMEM = { #endif #if SERIAL_IN_USE(3) - #if EITHER(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM) + #if ANY(AVR_ATmega2560_FAMILY, ARDUINO_ARCH_SAM) { RXD_NAME_3, 15, true }, { TXD_NAME_3, 14, true }, #elif defined(TARGET_LPC1768) diff --git a/Marlin/src/pins/rambo/pins_RAMBO.h b/Marlin/src/pins/rambo/pins_RAMBO.h index e1ddf972d9..ba8046d6d0 100644 --- a/Marlin/src/pins/rambo/pins_RAMBO.h +++ b/Marlin/src/pins/rambo/pins_RAMBO.h @@ -212,7 +212,7 @@ #define LCD_PINS_D6 74 #define LCD_PINS_D7 75 - #if EITHER(VIKI2, miniVIKI) + #if ANY(VIKI2, miniVIKI) #define BEEPER_PIN 44 // NB: Panucatt's Viki 2.0 wiring diagram (v1.2) indicates that the // beeper/buzzer is connected to pin 33; however, the pin used in the diff --git a/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h b/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h index f0e107f398..0d212010e0 100644 --- a/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h +++ b/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h @@ -143,7 +143,7 @@ #define HOME_PIN BTN_HOME -#if EITHER(VIKI2, miniVIKI) +#if ANY(VIKI2, miniVIKI) #define BEEPER_PIN 44 // Pins for DOGM SPI LCD Support #define DOGLCD_A0 70 diff --git a/Marlin/src/pins/ramps/pins_3DRAG.h b/Marlin/src/pins/ramps/pins_3DRAG.h index 6f57b0eca6..2d419e1321 100644 --- a/Marlin/src/pins/ramps/pins_3DRAG.h +++ b/Marlin/src/pins/ramps/pins_3DRAG.h @@ -117,7 +117,7 @@ #define SPINDLE_LASER_PWM_PIN 46 // Hardware PWM #define SPINDLE_LASER_ENA_PIN 62 // Pullup! #define SPINDLE_DIR_PIN 48 - #elif !BOTH(HAS_WIRED_LCD, IS_NEWPANEL) // Use expansion header if no LCD in use + #elif !ALL(HAS_WIRED_LCD, IS_NEWPANEL) // Use expansion header if no LCD in use #define SPINDLE_LASER_ENA_PIN 16 // Pullup or pulldown! #define SPINDLE_DIR_PIN 17 #if !NUM_SERVOS // Use servo connector if possible diff --git a/Marlin/src/pins/ramps/pins_AZTEEG_X3.h b/Marlin/src/pins/ramps/pins_AZTEEG_X3.h index 4d3722655d..17581dca62 100644 --- a/Marlin/src/pins/ramps/pins_AZTEEG_X3.h +++ b/Marlin/src/pins/ramps/pins_AZTEEG_X3.h @@ -54,7 +54,7 @@ #undef STAT_LED_RED_PIN #undef STAT_LED_BLUE_PIN -#if EITHER(VIKI2, miniVIKI) +#if ANY(VIKI2, miniVIKI) #undef DOGLCD_A0 #undef DOGLCD_CS diff --git a/Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h b/Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h index b0eee92c72..ddd56b28e8 100644 --- a/Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h +++ b/Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h @@ -145,7 +145,7 @@ #undef BEEPER_PIN #define BEEPER_PIN 33 -#if EITHER(VIKI2, miniVIKI) +#if ANY(VIKI2, miniVIKI) #undef SD_DETECT_PIN #define SD_DETECT_PIN 49 // For easy adapter board #undef BEEPER_PIN @@ -172,7 +172,7 @@ #undef SPINDLE_DIR_PIN #if HAS_CUTTER // EXP2 header - #if EITHER(VIKI2, miniVIKI) + #if ANY(VIKI2, miniVIKI) #define BTN_EN2 31 // Pin 7 needed for Spindle PWM #endif #define SPINDLE_LASER_PWM_PIN 7 // Hardware PWM diff --git a/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h b/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h index fa5bbb5b9e..824dbd9f2d 100644 --- a/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h +++ b/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h @@ -249,7 +249,7 @@ #define LCD_RESET_PIN 23 // Must be high or open for LCD to operate normally. // Seems to work best if left open. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN 25 #endif diff --git a/Marlin/src/pins/ramps/pins_K8400.h b/Marlin/src/pins/ramps/pins_K8400.h index 56ec66191b..bcb145825b 100644 --- a/Marlin/src/pins/ramps/pins_K8400.h +++ b/Marlin/src/pins/ramps/pins_K8400.h @@ -53,7 +53,7 @@ #define X_STOP_PIN 3 #define Y_STOP_PIN 14 -#if EITHER(BLTOUCH, TOUCH_MI_PROBE) +#if ANY(BLTOUCH, TOUCH_MI_PROBE) #define INVERTED_PROBE_STATE #endif diff --git a/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h b/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h index 89da25d074..cb28762adc 100644 --- a/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h +++ b/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h @@ -127,7 +127,7 @@ // Aux-1 | D19 D18 GND 5V | J21 | D4 D5 D6 GND | J17 | D11 GND 24V | J18 | D7 GND 5V | // ------------------ ---------------- --------------- ------------- -#if BOTH(CR10_STOCKDISPLAY, LONGER_LK5) +#if ALL(CR10_STOCKDISPLAY, LONGER_LK5) /** CR-10 Stock Display * ------ * BEEPER D11 | 1 2 | D15 ENC diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_13.h b/Marlin/src/pins/ramps/pins_MKS_GEN_13.h index 4cf66ed2cd..9afdc62a53 100644 --- a/Marlin/src/pins/ramps/pins_MKS_GEN_13.h +++ b/Marlin/src/pins/ramps/pins_MKS_GEN_13.h @@ -63,7 +63,7 @@ // // LCD / Controller // -#if EITHER(VIKI2, miniVIKI) +#if ANY(VIKI2, miniVIKI) /** * VIKI2 Has two groups of wires with... * diff --git a/Marlin/src/pins/ramps/pins_RAMPS.h b/Marlin/src/pins/ramps/pins_RAMPS.h index 422991aba4..8b15f82736 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS.h +++ b/Marlin/src/pins/ramps/pins_RAMPS.h @@ -250,7 +250,7 @@ #ifndef HEATER_BED_PIN #define HEATER_BED_PIN MOSFET_C_PIN #endif - #if EITHER(HAS_MULTI_HOTEND, HEATERS_PARALLEL) + #if ANY(HAS_MULTI_HOTEND, HEATERS_PARALLEL) #define HEATER_1_PIN MOSFET_D_PIN #else #define FAN1_PIN MOSFET_D_PIN @@ -258,9 +258,9 @@ #endif #ifndef FAN0_PIN - #if EITHER(FET_ORDER_EFB, FET_ORDER_EFF) // Hotend, Fan, Bed or Hotend, Fan, Fan + #if ANY(FET_ORDER_EFB, FET_ORDER_EFF) // Hotend, Fan, Bed or Hotend, Fan, Fan #define FAN0_PIN MOSFET_B_PIN - #elif EITHER(FET_ORDER_EEF, FET_ORDER_SF) // Hotend, Hotend, Fan or Spindle, Fan + #elif ANY(FET_ORDER_EEF, FET_ORDER_SF) // Hotend, Hotend, Fan or Spindle, Fan #define FAN0_PIN MOSFET_C_PIN #elif FET_ORDER_EEB // Hotend, Hotend, Bed #define FAN0_PIN 4 // IO pin. Buffer needed @@ -567,7 +567,7 @@ #define EXP1_01_PIN AUX4_09_PIN #define EXP1_02_PIN AUX4_10_PIN - #if BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) + #if ALL(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) #define EXP2_03_PIN AUX4_11_PIN #define EXP2_05_PIN AUX4_12_PIN #define EXP2_08_PIN -1 // RESET @@ -598,7 +598,7 @@ #define LCD_PINS_EN EXP2_06_PIN // SID (MOSI) #define LCD_PINS_D4 EXP2_02_PIN // SCK (CLK) clock - #elif BOTH(IS_NEWPANEL, PANEL_ONE) + #elif ALL(IS_NEWPANEL, PANEL_ONE) #define LCD_PINS_RS AUX2_06_PIN #define LCD_PINS_EN AUX2_08_PIN @@ -642,7 +642,7 @@ #else - #if EITHER(MKS_12864OLED, MKS_12864OLED_SSD1306) + #if ANY(MKS_12864OLED, MKS_12864OLED_SSD1306) #define LCD_PINS_DC EXP1_06_PIN // Set as output on init #define LCD_PINS_RS EXP1_07_PIN // Pull low for 1s to init // DOGM SPI LCD Support @@ -736,7 +736,7 @@ #define SD_DETECT_PIN EXP2_07_PIN #endif - #elif EITHER(VIKI2, miniVIKI) + #elif ANY(VIKI2, miniVIKI) #define DOGLCD_CS AUX4_05_PIN #define DOGLCD_A0 AUX2_07_PIN @@ -777,7 +777,7 @@ #endif #define KILL_PIN EXP2_08_PIN - #elif EITHER(MKS_MINI_12864, FYSETC_MINI_12864) + #elif ANY(MKS_MINI_12864, FYSETC_MINI_12864) #define BTN_ENC EXP1_02_PIN #ifndef SD_DETECT_PIN @@ -814,7 +814,7 @@ #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif @@ -914,7 +914,7 @@ #endif #endif -#if BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) +#if ALL(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) #ifndef NO_CONTROLLER_CUSTOM_WIRING_WARNING #error "CAUTION! LCD_FYSETC_TFT81050 requires wiring modifications. See 'pins_RAMPS.h' for details. (Define NO_CONTROLLER_CUSTOM_WIRING_WARNING to suppress this warning.)" diff --git a/Marlin/src/pins/ramps/pins_RUMBA.h b/Marlin/src/pins/ramps/pins_RUMBA.h index 20c804367a..1d2aeb4f0f 100644 --- a/Marlin/src/pins/ramps/pins_RUMBA.h +++ b/Marlin/src/pins/ramps/pins_RUMBA.h @@ -190,7 +190,7 @@ // // LCD / Controller // -#if EITHER(MKS_12864OLED, MKS_12864OLED_SSD1306) +#if ANY(MKS_12864OLED, MKS_12864OLED_SSD1306) #define LCD_PINS_DC 38 // Set as output on init #define LCD_PINS_RS 41 // Pull low for 1s to init // DOGM SPI LCD Support @@ -209,7 +209,7 @@ #define LCD_RESET_PIN 18 // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN 41 #endif diff --git a/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h index bb74fe421a..7306272127 100644 --- a/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h +++ b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h @@ -115,7 +115,7 @@ #if ENABLED(ANYCUBIC_4_MAX_PRO_ENDSTOPS) #define X_MAX_PIN 43 // AUX (2) #define Y_STOP_PIN 19 // Z+ -#elif EITHER(TRIGORILLA_MAPPING_CHIRON, TRIGORILLA_MAPPING_I3MEGA) +#elif ANY(TRIGORILLA_MAPPING_CHIRON, TRIGORILLA_MAPPING_I3MEGA) // Chiron uses AUX header for Y and Z endstops #define Y_STOP_PIN 42 // AUX (1) #define Z_STOP_PIN 43 // AUX (2) @@ -145,7 +145,7 @@ #define FIL_RUNOUT_PIN 19 // Z+ #endif - #if EITHER(TRIGORILLA_MAPPING_CHIRON, SWAP_Z_MOTORS) + #if ANY(TRIGORILLA_MAPPING_CHIRON, SWAP_Z_MOTORS) // Chiron and some Anycubic i3 MEGAs swap Z steppers #define Z_STEP_PIN 36 #define Z_DIR_PIN 34 @@ -159,7 +159,7 @@ #endif #endif -#if EITHER(ANYCUBIC_LCD_CHIRON, ANYCUBIC_LCD_I3MEGA) +#if ANY(ANYCUBIC_LCD_CHIRON, ANYCUBIC_LCD_I3MEGA) #ifndef BEEPER_PIN #define BEEPER_PIN EXP2_03_PIN // Chiron Standard Adapter #endif diff --git a/Marlin/src/pins/ramps/pins_TT_OSCAR.h b/Marlin/src/pins/ramps/pins_TT_OSCAR.h index d9c79f5da8..1edeb6b8fe 100644 --- a/Marlin/src/pins/ramps/pins_TT_OSCAR.h +++ b/Marlin/src/pins/ramps/pins_TT_OSCAR.h @@ -279,7 +279,7 @@ #define LCD_PINS_EN 51 // SID (MOSI) #define LCD_PINS_D4 52 // SCK (CLK) clock - #elif BOTH(IS_NEWPANEL, PANEL_ONE) + #elif ALL(IS_NEWPANEL, PANEL_ONE) #define LCD_PINS_RS 40 #define LCD_PINS_EN 42 @@ -312,7 +312,7 @@ #else - #if EITHER(MKS_12864OLED, MKS_12864OLED_SSD1306) + #if ANY(MKS_12864OLED, MKS_12864OLED_SSD1306) #define LCD_PINS_DC 25 // Set as output on init #define LCD_PINS_RS 27 // Pull low for 1s to init // DOGM SPI LCD Support @@ -400,7 +400,7 @@ #define LCD_SDSS 53 #define SD_DETECT_PIN 49 - #elif EITHER(VIKI2, miniVIKI) + #elif ANY(VIKI2, miniVIKI) #define DOGLCD_CS 45 #define DOGLCD_A0 44 diff --git a/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h b/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h index a1b02aa06c..0e3b25b4f6 100644 --- a/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h +++ b/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h @@ -116,7 +116,7 @@ // // Z Probe (when not Z_MIN_PIN) // -#if !defined(Z_MIN_PROBE_PIN) && !BOTH(HAS_CUTTER, BOARD_REV_1_0) +#if !defined(Z_MIN_PROBE_PIN) && !ALL(HAS_CUTTER, BOARD_REV_1_0) #define Z_MIN_PROBE_PIN Z_MAX_PIN #endif @@ -135,7 +135,7 @@ #define Z_DIR_PIN 39 #define Z_ENABLE_PIN 35 -#if BOTH(HAS_CUTTER, BOARD_REV_1_1_TO_1_3) && EXTRUDERS == 1 +#if ALL(HAS_CUTTER, BOARD_REV_1_1_TO_1_3) && EXTRUDERS == 1 // Move E0 to the spare and get Spindle/Laser signals from E0 #define E0_STEP_PIN 49 #define E0_DIR_PIN 47 @@ -166,7 +166,7 @@ // // LCD / Controller // -#if EITHER(BOARD_REV_1_0, BOARD_REV_1_1_TO_1_3) +#if ANY(BOARD_REV_1_0, BOARD_REV_1_1_TO_1_3) #define LCD_PINS_RS 24 #define LCD_PINS_EN 22 @@ -175,7 +175,7 @@ #define LCD_PINS_D6 32 #define LCD_PINS_D7 30 -#elif BOTH(BOARD_REV_1_5, HAS_WIRED_LCD) +#elif ALL(BOARD_REV_1_5, HAS_WIRED_LCD) #define BEEPER_PIN 18 @@ -225,7 +225,7 @@ // M3/M4/M5 - Spindle/Laser Control // #if HAS_CUTTER - #if EITHER(BOARD_REV_1_0, BOARD_REV_1_5) // Use the last three SW positions + #if ANY(BOARD_REV_1_0, BOARD_REV_1_5) // Use the last three SW positions #define SPINDLE_LASER_PWM_PIN 9 // 1.0: SW5 1.5: EXP3-7 ( "9") .. MUST BE HARDWARE PWM #define SPINDLE_LASER_ENA_PIN 8 // 1.0: SW6 1.5: EXP3-8 ( "8") .. Pin should have a pullup! #define SPINDLE_DIR_PIN 10 // 1.0: SW4 1.5: EXP3-6 ("10") diff --git a/Marlin/src/pins/ramps/pins_ZRIB_V53.h b/Marlin/src/pins/ramps/pins_ZRIB_V53.h index 2b8b583075..8d59eeb1f7 100644 --- a/Marlin/src/pins/ramps/pins_ZRIB_V53.h +++ b/Marlin/src/pins/ramps/pins_ZRIB_V53.h @@ -361,7 +361,7 @@ // OLED 128x64 //================================================================================ -#if EITHER(ZONESTAR_12864OLED, ZONESTAR_12864OLED_SSD1306) +#if ANY(ZONESTAR_12864OLED, ZONESTAR_12864OLED_SSD1306) #define LCDSCREEN_NAME "ZONESTAR 12864OLED" #define LCD_SDSS 16 #define LCD_PINS_RS 23 // RESET Pull low for 1s to init @@ -372,7 +372,7 @@ #define BTN_ENC 29 #define BEEPER_PIN -1 #define KILL_PIN -1 - #if EITHER(OLED_HW_IIC, OLED_HW_SPI) + #if ANY(OLED_HW_IIC, OLED_HW_SPI) #error "Oops! You must choose SW SPI for ZRIB V53 board and connect the OLED screen to EXP1 connector." #else // SW_SPI #define DOGLCD_A0 LCD_PINS_DC diff --git a/Marlin/src/pins/sam/env_validate.h b/Marlin/src/pins/sam/env_validate.h index c6f4d76894..c51583f0a1 100644 --- a/Marlin/src/pins/sam/env_validate.h +++ b/Marlin/src/pins/sam/env_validate.h @@ -22,7 +22,7 @@ #ifndef ENV_VALIDATE_H #define ENV_VALIDATE_H -#if BOTH(ALLOW_MEGA1280, ALLOW_MEGA2560) && NOT_TARGET(__SAM3X8E__, __AVR_ATmega1280__, __AVR_ATmega2560__) +#if ALL(ALLOW_MEGA1280, ALLOW_MEGA2560) && NOT_TARGET(__SAM3X8E__, __AVR_ATmega1280__, __AVR_ATmega2560__) #error "Oops! Select 'Arduino Due or Mega' in 'Tools > Board.'" #elif ENABLED(ALLOW_MEGA2560) && NOT_TARGET(__SAM3X8E__, __AVR_ATmega2560__) #error "Oops! Select 'Arduino Due or Mega' in 'Tools > Board.'" diff --git a/Marlin/src/pins/sam/pins_KRATOS32.h b/Marlin/src/pins/sam/pins_KRATOS32.h index f4e3eb479c..74da7a78f6 100644 --- a/Marlin/src/pins/sam/pins_KRATOS32.h +++ b/Marlin/src/pins/sam/pins_KRATOS32.h @@ -32,7 +32,7 @@ // // EEPROM // -#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM) +#if ANY(NO_EEPROM_SELECTED, I2C_EEPROM) #define I2C_EEPROM #define MARLIN_EEPROM_SIZE 0x1F400 // 16K #endif diff --git a/Marlin/src/pins/sam/pins_RADDS.h b/Marlin/src/pins/sam/pins_RADDS.h index 9301167959..9a3edff0c9 100644 --- a/Marlin/src/pins/sam/pins_RADDS.h +++ b/Marlin/src/pins/sam/pins_RADDS.h @@ -32,7 +32,7 @@ // // EEPROM // -#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM) +#if ANY(NO_EEPROM_SELECTED, I2C_EEPROM) #define I2C_EEPROM #define MARLIN_EEPROM_SIZE 0x2000 // 8K #endif diff --git a/Marlin/src/pins/sam/pins_RAMPS_DUO.h b/Marlin/src/pins/sam/pins_RAMPS_DUO.h index 92de79bd7f..b00d215cc7 100644 --- a/Marlin/src/pins/sam/pins_RAMPS_DUO.h +++ b/Marlin/src/pins/sam/pins_RAMPS_DUO.h @@ -68,7 +68,7 @@ // #if HAS_WIRED_LCD - #if BOTH(IS_NEWPANEL, PANEL_ONE) + #if ALL(IS_NEWPANEL, PANEL_ONE) #undef LCD_PINS_D4 #define LCD_PINS_D4 68 diff --git a/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h b/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h index 8f206d9f87..f5587a6cba 100644 --- a/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h +++ b/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h @@ -191,7 +191,7 @@ #define LCD_RESET_PIN EXP1_06_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_05_PIN #endif @@ -219,7 +219,7 @@ #endif - #if EITHER(VIKI2, miniVIKI) + #if ANY(VIKI2, miniVIKI) #define DOGLCD_A0 EXP1_07_PIN #define KILL_PIN 51 #define STAT_LED_BLUE_PIN EXP1_03_PIN diff --git a/Marlin/src/pins/sam/pins_RURAMPS4D_11.h b/Marlin/src/pins/sam/pins_RURAMPS4D_11.h index 516063d158..64fad0e081 100644 --- a/Marlin/src/pins/sam/pins_RURAMPS4D_11.h +++ b/Marlin/src/pins/sam/pins_RURAMPS4D_11.h @@ -227,7 +227,7 @@ #define SD_DETECT_PIN EXP2_07_PIN #endif - #if EITHER(RADDS_DISPLAY, IS_RRD_SC) + #if ANY(RADDS_DISPLAY, IS_RRD_SC) #define LCD_PINS_RS EXP1_04_PIN #define LCD_PINS_EN EXP1_03_PIN @@ -254,7 +254,7 @@ #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN // D5 #endif diff --git a/Marlin/src/pins/sam/pins_RURAMPS4D_13.h b/Marlin/src/pins/sam/pins_RURAMPS4D_13.h index 9e9aeb9fec..1b66b766db 100644 --- a/Marlin/src/pins/sam/pins_RURAMPS4D_13.h +++ b/Marlin/src/pins/sam/pins_RURAMPS4D_13.h @@ -217,7 +217,7 @@ #define SD_DETECT_PIN EXP2_07_PIN #endif - #if EITHER(RADDS_DISPLAY, IS_RRD_SC) + #if ANY(RADDS_DISPLAY, IS_RRD_SC) #define LCD_PINS_RS EXP1_04_PIN #define LCD_PINS_EN EXP1_03_PIN @@ -244,7 +244,7 @@ #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN // D5 #endif diff --git a/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h b/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h index 8af1054a2c..6f41bd6848 100644 --- a/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h +++ b/Marlin/src/pins/samd/pins_BRICOLEMON_LITE_V1_0.h @@ -238,7 +238,7 @@ //#define LCD_PINS_EN EXP2_06_PIN // SID (MOSI) //#define LCD_PINS_D4 EXP2_02_PIN // SCK (CLK) clock - #elif BOTH(IS_NEWPANEL, PANEL_ONE) + #elif ALL(IS_NEWPANEL, PANEL_ONE) // TO TEST //#define LCD_PINS_RS EXP1_02_PIN @@ -274,7 +274,7 @@ #else - #if EITHER(MKS_12864OLED, MKS_12864OLED_SSD1306) + #if ANY(MKS_12864OLED, MKS_12864OLED_SSD1306) // TO TEST //#define LCD_PINS_DC 25 // Set as output on init //#define LCD_PINS_RS 27 // Pull low for 1s to init @@ -372,7 +372,7 @@ //#define LCD_SDSS SDSS //#define SD_DETECT_PIN EXP2_10_PIN - #elif EITHER(VIKI2, miniVIKI) + #elif ANY(VIKI2, miniVIKI) // TO TEST //#define DOGLCD_CS 45 @@ -407,7 +407,7 @@ //#define SD_DETECT_PIN EXP2_10_PIN //#define KILL_PIN EXP1_01_PIN - #elif EITHER(MKS_MINI_12864, FYSETC_MINI_12864) + #elif ANY(MKS_MINI_12864, FYSETC_MINI_12864) // TO TEST //#define BEEPER_PIN EXP1_06_PIN @@ -452,7 +452,7 @@ //#define LCD_RESET_PIN 23 // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN // TO TEST //#define RGB_LED_R_PIN 25 diff --git a/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h b/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h index 7378731c90..699f10ed48 100644 --- a/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h +++ b/Marlin/src/pins/samd/pins_BRICOLEMON_V1_0.h @@ -291,7 +291,7 @@ //#define LCD_PINS_EN EXP2_06_PIN // SID (MOSI) //#define LCD_PINS_D4 EXP2_02_PIN // SCK (CLK) clock - #elif BOTH(IS_NEWPANEL, PANEL_ONE) + #elif ALL(IS_NEWPANEL, PANEL_ONE) // TO TEST //#define LCD_PINS_RS EXP1_02_PIN @@ -327,7 +327,7 @@ #else - #if EITHER(MKS_12864OLED, MKS_12864OLED_SSD1306) + #if ANY(MKS_12864OLED, MKS_12864OLED_SSD1306) // TO TEST //#define LCD_PINS_DC 25 // Set as output on init //#define LCD_PINS_RS 27 // Pull low for 1s to init @@ -424,7 +424,7 @@ //#define LCD_SDSS SDSS //#define SD_DETECT_PIN EXP2_10_PIN - #elif EITHER(VIKI2, miniVIKI) + #elif ANY(VIKI2, miniVIKI) // TO TEST //#define DOGLCD_CS 45 @@ -459,7 +459,7 @@ //#define SD_DETECT_PIN EXP2_10_PIN //#define KILL_PIN EXP1_01_PIN - #elif EITHER(MKS_MINI_12864, FYSETC_MINI_12864) + #elif ANY(MKS_MINI_12864, FYSETC_MINI_12864) // TO TEST //#define BEEPER_PIN EXP1_06_PIN @@ -504,7 +504,7 @@ //#define LCD_RESET_PIN 23 // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN // TO TEST //#define RGB_LED_R_PIN 25 diff --git a/Marlin/src/pins/samd/pins_MINITRONICS20.h b/Marlin/src/pins/samd/pins_MINITRONICS20.h index 804750b69a..8c0daa497b 100644 --- a/Marlin/src/pins/samd/pins_MINITRONICS20.h +++ b/Marlin/src/pins/samd/pins_MINITRONICS20.h @@ -197,7 +197,7 @@ #define BTN_EN1 27 #define BTN_EN2 33 - #elif BOTH(IS_NEWPANEL, PANEL_ONE) + #elif ALL(IS_NEWPANEL, PANEL_ONE) // TO TEST //#define LCD_PINS_RS EXP1_02_PIN @@ -233,7 +233,7 @@ #else - #if EITHER(MKS_12864OLED, MKS_12864OLED_SSD1306) + #if ANY(MKS_12864OLED, MKS_12864OLED_SSD1306) // TO TEST //#define LCD_PINS_DC 25 // Set as output on init //#define LCD_PINS_RS 27 // Pull low for 1s to init @@ -322,7 +322,7 @@ //#define LCD_SDSS SDSS //#define SD_DETECT_PIN EXP2_10_PIN - #elif EITHER(VIKI2, miniVIKI) + #elif ANY(VIKI2, miniVIKI) // TO TEST //#define DOGLCD_CS 45 @@ -357,7 +357,7 @@ //#define SD_DETECT_PIN EXP2_10_PIN //#define KILL_PIN EXP1_01_PIN - #elif EITHER(MKS_MINI_12864, FYSETC_MINI_12864) + #elif ANY(MKS_MINI_12864, FYSETC_MINI_12864) // TO TEST //#define BEEPER_PIN EXP1_06_PIN @@ -402,7 +402,7 @@ //#define LCD_RESET_PIN 23 // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN // TO TEST //#define RGB_LED_R_PIN 25 diff --git a/Marlin/src/pins/samd/pins_RAMPS_144.h b/Marlin/src/pins/samd/pins_RAMPS_144.h index a762d3cdbd..3e5d563929 100644 --- a/Marlin/src/pins/samd/pins_RAMPS_144.h +++ b/Marlin/src/pins/samd/pins_RAMPS_144.h @@ -276,7 +276,7 @@ //#define LCD_PINS_EN 51 // SID (MOSI) //#define LCD_PINS_D4 52 // SCK (CLK) clock - #elif BOTH(IS_NEWPANEL, PANEL_ONE) + #elif ALL(IS_NEWPANEL, PANEL_ONE) // TO TEST //#define LCD_PINS_RS 40 @@ -312,7 +312,7 @@ #else - #if EITHER(MKS_12864OLED, MKS_12864OLED_SSD1306) + #if ANY(MKS_12864OLED, MKS_12864OLED_SSD1306) // TO TEST //#define LCD_PINS_DC 25 // Set as output on init //#define LCD_PINS_RS 27 // Pull low for 1s to init @@ -406,7 +406,7 @@ //#define LCD_SDSS SDSS //#define SD_DETECT_PIN 49 - #elif EITHER(VIKI2, miniVIKI) + #elif ANY(VIKI2, miniVIKI) // TO TEST //#define DOGLCD_CS 45 @@ -442,7 +442,7 @@ //#define SD_DETECT_PIN 49 //#define KILL_PIN 41 - #elif EITHER(MKS_MINI_12864, FYSETC_MINI_12864) + #elif ANY(MKS_MINI_12864, FYSETC_MINI_12864) // TO TEST //#define BEEPER_PIN 37 @@ -483,7 +483,7 @@ //#define LCD_RESET_PIN 23 // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN // TO TEST //#define RGB_LED_R_PIN 25 diff --git a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY_E2.h b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY_E2.h index 0d021e1bf6..4ded3294b9 100644 --- a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY_E2.h +++ b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY_E2.h @@ -56,7 +56,7 @@ // // LCD / Controller // -#if EITHER(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) +#if ANY(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) #if ENABLED(CR10_STOCKDISPLAY) #if ENABLED(SDSUPPORT) #error "Cannot have SDSUPPORT with CR10_STOCKDISPLAY on this motherboard." // Hardware SDCARD SCK and MOSI pins are reallocated. diff --git a/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h b/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h index 6b47d9186c..7e4cc22bbe 100644 --- a/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h +++ b/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h @@ -32,7 +32,7 @@ #define LCD_SDSS -1 -#if EITHER(CR10_STOCKDISPLAY, LCD_FOR_MELZI) +#if ANY(CR10_STOCKDISPLAY, LCD_FOR_MELZI) #define LCD_PINS_RS 30 #define LCD_PINS_EN 28 #define LCD_PINS_D4 16 diff --git a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h index 9a80ca2e63..b99437ac93 100644 --- a/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h +++ b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h @@ -133,7 +133,7 @@ #define LCD_BACKLIGHT_PIN 17 // LCD backlight LED #endif -#if !HAS_CUTTER && ENABLED(SANGUINOLOLU_V_1_2) && !BOTH(HAS_WIRED_LCD, IS_NEWPANEL) // try to use IO Header +#if !HAS_CUTTER && ENABLED(SANGUINOLOLU_V_1_2) && !ALL(HAS_WIRED_LCD, IS_NEWPANEL) // try to use IO Header #define CASE_LIGHT_PIN 4 // Hardware PWM - see if IO Header is available #endif @@ -270,7 +270,7 @@ // M3/M4/M5 - Spindle/Laser Control // #if HAS_CUTTER - #if !MB(AZTEEG_X1) && ENABLED(SANGUINOLOLU_V_1_2) && !BOTH(HAS_WIRED_LCD, IS_NEWPANEL) // try to use IO Header + #if !MB(AZTEEG_X1) && ENABLED(SANGUINOLOLU_V_1_2) && !ALL(HAS_WIRED_LCD, IS_NEWPANEL) // try to use IO Header #define SPINDLE_LASER_PWM_PIN 4 // Hardware PWM #define SPINDLE_LASER_ENA_PIN 10 // Pullup or pulldown! diff --git a/Marlin/src/pins/sanguino/pins_ZMIB_V2.h b/Marlin/src/pins/sanguino/pins_ZMIB_V2.h index 1e449579cf..438acb79c7 100644 --- a/Marlin/src/pins/sanguino/pins_ZMIB_V2.h +++ b/Marlin/src/pins/sanguino/pins_ZMIB_V2.h @@ -92,7 +92,7 @@ #define X_MIN_PIN 21 #define Y_MIN_PIN 18 -#if EITHER(Z6S_ZFAULT, Z6BS_ZFAULT) +#if ANY(Z6S_ZFAULT, Z6BS_ZFAULT) #define Z_MIN_PIN 25 #else #define Z_MIN_PIN 13 @@ -109,7 +109,7 @@ #define Y_DIR_PIN 19 #define Y_ENABLE_PIN 24 -#if EITHER(Z6S_ZFAULT, Z6BS_ZFAULT) +#if ANY(Z6S_ZFAULT, Z6BS_ZFAULT) #define Z_STEP_PIN 27 #define Z_DIR_PIN 26 #else @@ -119,7 +119,7 @@ #define Z_ENABLE_PIN 24 -#if EITHER(Z6S_ZFAULT, Z6BS_ZFAULT) +#if ANY(Z6S_ZFAULT, Z6BS_ZFAULT) #define E0_STEP_PIN 15 #define E0_DIR_PIN 14 #else @@ -150,7 +150,7 @@ // // Filament Runout Sensor // -#if EITHER(Z6S_ZFAULT, Z6BS_ZFAULT) +#if ANY(Z6S_ZFAULT, Z6BS_ZFAULT) #define FIL_RUNOUT_PIN 13 #else #define FIL_RUNOUT_PIN 25 // Z-MIN @@ -201,7 +201,7 @@ #define BOARD_ST7920_DELAY_2 DELAY_2_NOP #define BOARD_ST7920_DELAY_3 DELAY_2_NOP -#elif EITHER(ZONESTAR_12864OLED, ZONESTAR_12864OLED_SSD1306) +#elif ANY(ZONESTAR_12864OLED, ZONESTAR_12864OLED_SSD1306) // // OLED 128x64 // diff --git a/Marlin/src/pins/sensitive_pins.h b/Marlin/src/pins/sensitive_pins.h index e655663a73..7264a26539 100644 --- a/Marlin/src/pins/sensitive_pins.h +++ b/Marlin/src/pins/sensitive_pins.h @@ -650,7 +650,7 @@ #endif #endif -#elif EITHER(HAS_MULTI_EXTRUDER, MIXING_EXTRUDER) +#elif ANY(HAS_MULTI_EXTRUDER, MIXING_EXTRUDER) #undef _E1_PINS #define _E1_PINS E1_STEP_PIN, E1_DIR_PIN, E1_ENABLE_PIN, _E1_CS _E1_MS1 _E1_MS2 _E1_MS3 diff --git a/Marlin/src/pins/stm32f1/pins_BEAST.h b/Marlin/src/pins/stm32f1/pins_BEAST.h index eca4529636..b136ca52cd 100644 --- a/Marlin/src/pins/stm32f1/pins_BEAST.h +++ b/Marlin/src/pins/stm32f1/pins_BEAST.h @@ -131,7 +131,7 @@ #error "LCD_I2C_PANELOLU2 is not supported." #elif ENABLED(LCD_I2C_VIKI) #error "LCD_I2C_VIKI is not supported." - #elif EITHER(VIKI2, miniVIKI) + #elif ANY(VIKI2, miniVIKI) #error "VIKI2 / miniVIKI is not supported." #elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) #error "ELB_FULL_GRAPHIC_CONTROLLER is not supported." diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h index 5f3dc78150..8be66eedb5 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h @@ -31,7 +31,7 @@ // Ignore temp readings during development. //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE (0x800U) // 2K #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) @@ -204,7 +204,7 @@ #define LCD_PINS_D7 EXP1_01_PIN #define ADC_KEYPAD_PIN PA1 // Repurpose servo pin for ADC - CONNECTING TO 5V WILL DAMAGE THE BOARD! - #elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) + #elif ANY(MKS_MINI_12864, ENDER2_STOCKDISPLAY) /** Creality Ender-2 display pinout * ------ @@ -296,7 +296,7 @@ #endif // HAS_WIRED_LCD -#if BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) +#if ALL(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) #ifndef NO_CONTROLLER_CUSTOM_WIRING_WARNING #error "CAUTION! LCD_FYSETC_TFT81050 requires wiring modifications. See 'pins_BTT_SKR_E3_DIP.h' for details. (Define NO_CONTROLLER_CUSTOM_WIRING_WARNING to suppress this warning.)" @@ -352,7 +352,7 @@ #define SD_SCK_PIN PA5 #define SD_MISO_PIN PA6 #define SD_MOSI_PIN PA7 -#elif SD_CONNECTION_IS(LCD) && BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) +#elif SD_CONNECTION_IS(LCD) && ALL(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) #define SD_DETECT_PIN EXP1_01_PIN #define SD_SS_PIN EXP1_05_PIN #elif SD_CONNECTION_IS(CUSTOM_CABLE) diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h index 45829d2ede..c86e2f7504 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h @@ -31,7 +31,7 @@ // Ignore temp readings during development. //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE (0x800U) // 2K #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) @@ -217,7 +217,7 @@ #define LCD_PINS_D7 EXP1_01_PIN #define ADC_KEYPAD_PIN PA1 // Repurpose servo pin for ADC - CONNECTING TO 5V WILL DAMAGE THE BOARD! - #elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) + #elif ANY(MKS_MINI_12864, ENDER2_STOCKDISPLAY) #define BTN_ENC EXP1_02_PIN #define BTN_EN1 EXP1_03_PIN @@ -342,7 +342,7 @@ #endif // HAS_WIRED_LCD -#if BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) +#if ALL(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) #ifndef NO_CONTROLLER_CUSTOM_WIRING_WARNING #error "CAUTION! LCD_FYSETC_TFT81050 requires wiring modifications. See 'pins_BTT_SKR_MINI_E3_common.h' for details. (Define NO_CONTROLLER_CUSTOM_WIRING_WARNING to suppress this warning.)" @@ -396,7 +396,7 @@ #if SD_CONNECTION_IS(ONBOARD) #define SD_DETECT_PIN PC4 -#elif SD_CONNECTION_IS(LCD) && (BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) || IS_TFTGLCD_PANEL) +#elif SD_CONNECTION_IS(LCD) && (ALL(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) || IS_TFTGLCD_PANEL) #define SD_DETECT_PIN EXP1_01_PIN #define SD_SS_PIN EXP1_05_PIN #elif SD_CONNECTION_IS(CUSTOM_CABLE) diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h index 851eee8296..6719b09049 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h @@ -31,7 +31,7 @@ // Ignore temp readings during development. //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE (0x800U) // 2K #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) @@ -142,7 +142,7 @@ // // LCD / Controller // -#if EITHER(TFT_COLOR_UI, TFT_CLASSIC_UI) +#if ANY(TFT_COLOR_UI, TFT_CLASSIC_UI) #define BEEPER_PIN EXP1_01_PIN #define BTN_ENC EXP1_02_PIN #define BTN_EN1 EXP2_03_PIN @@ -221,7 +221,7 @@ //#define LED_PIN EXP1_07_PIN // green //#define LED_PIN EXP1_08_PIN // blue - //#if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + //#if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) // #ifndef RGB_LED_R_PIN // #define RGB_LED_R_PIN EXP1_06_PIN // #endif diff --git a/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h b/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h index 015d8c03ee..1d501e512b 100644 --- a/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h +++ b/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h @@ -41,7 +41,7 @@ // // EEPROM // -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE 0x800U // 2K #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D.h b/Marlin/src/pins/stm32f1/pins_CHITU3D.h index 73030c8ef6..2074bbecce 100644 --- a/Marlin/src/pins/stm32f1/pins_CHITU3D.h +++ b/Marlin/src/pins/stm32f1/pins_CHITU3D.h @@ -104,7 +104,7 @@ #define LCD_PINS_RS PD1 // 49 // CS chip select /SS chip slave select #define LCD_PINS_EN PD3 // 51 // SID (MOSI) #define LCD_PINS_D4 PD4 // 52 // SCK (CLK) clock - #elif BOTH(IS_NEWPANEL, PANEL_ONE) + #elif ALL(IS_NEWPANEL, PANEL_ONE) #define LCD_PINS_RS PB8 #define LCD_PINS_EN PD2 #define LCD_PINS_D4 PB12 @@ -171,7 +171,7 @@ #define LCD_SDSS PD5 // 53 #define SD_DETECT_PIN PD1 // 49 - #elif EITHER(VIKI2, miniVIKI) + #elif ANY(VIKI2, miniVIKI) #define BEEPER_PIN PC1 // 33 diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h index af9a6d891e..ce942ba545 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V24S1_301.h @@ -33,7 +33,7 @@ #define E_ERROR 1 #endif -#if BOTH(BLTOUCH, Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) +#if ALL(BLTOUCH, Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) #error "Disable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN when using BLTOUCH with Creality V24S1-301." #endif diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h index f78bad624d..5657a79950 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h @@ -52,7 +52,7 @@ #define IIC_EEPROM_SDA PA11 #define IIC_EEPROM_SCL PA12 #define MARLIN_EEPROM_SIZE 0x800 // 2K (24C16) -#elif EITHER(SDCARD_EEPROM_EMULATION, FLASH_EEPROM_EMULATION) +#elif ANY(SDCARD_EEPROM_EMULATION, FLASH_EEPROM_EMULATION) #define MARLIN_EEPROM_SIZE 0x800 // 2K #endif diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h index 3d0a1885af..96b3007ca6 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h @@ -183,7 +183,7 @@ #define EXP3_07_PIN PB12 #define EXP3_08_PIN PB15 -#elif EITHER(VET6_12864_LCD, DWIN_VET6_CREALITY_LCD) +#elif ANY(VET6_12864_LCD, DWIN_VET6_CREALITY_LCD) /** * VET6 12864 LCD @@ -204,7 +204,7 @@ #define EXP3_07_PIN PA4 #define EXP3_08_PIN PA7 -#elif EITHER(CR10_STOCKDISPLAY, FYSETC_MINI_12864_2_1) +#elif ANY(CR10_STOCKDISPLAY, FYSETC_MINI_12864_2_1) #error "Define RET6_12864_LCD or VET6_12864_LCD to select pins for the LCD with the Creality V4 controller." #endif diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h index 7a7ec35508..2e0de87641 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h @@ -164,7 +164,7 @@ #define EXP3_07_PIN PB12 #define EXP3_08_PIN PB15 -#elif EITHER(VET6_12864_LCD, DWIN_VET6_CREALITY_LCD) +#elif ANY(VET6_12864_LCD, DWIN_VET6_CREALITY_LCD) /** * VET6 12864 LCD diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h index 81cb1e1f79..d555c0aaa1 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V521.h @@ -168,7 +168,7 @@ #define EXP3_07_PIN PB12 #define EXP3_08_PIN PB15 -#elif EITHER(VET6_12864_LCD, DWIN_VET6_CREALITY_LCD) +#elif ANY(VET6_12864_LCD, DWIN_VET6_CREALITY_LCD) /** * VET6 12864 LCD diff --git a/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h b/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h index 7a1f1e6cce..b18bd09de8 100644 --- a/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_ERYONE_ERY32_MINI.h @@ -39,7 +39,7 @@ #define DISABLE_JTAG //#define ENABLE_SPI3 -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE (0x800U) // 2K #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) @@ -98,7 +98,7 @@ #define FAN1_PIN PD12 #elif DISABLED(FET_ORDER_SF) // Not Spindle, Fan (i.e., "EFBF" or "EFBE") #define HEATER_BED_PIN PD12 - #if EITHER(HAS_MULTI_HOTEND, HEATERS_PARALLEL) + #if ANY(HAS_MULTI_HOTEND, HEATERS_PARALLEL) #define HEATER_1_PIN PB9 #else #define FAN1_PIN PB9 @@ -106,9 +106,9 @@ #endif #ifndef FAN0_PIN - #if EITHER(FET_ORDER_EFB, FET_ORDER_EFF) // Hotend, Fan, Bed or Hotend, Fan, Fan + #if ANY(FET_ORDER_EFB, FET_ORDER_EFF) // Hotend, Fan, Bed or Hotend, Fan, Fan #define FAN0_PIN PB5 - #elif EITHER(FET_ORDER_EEF, FET_ORDER_SF) // Hotend, Hotend, Fan or Spindle, Fan + #elif ANY(FET_ORDER_EEF, FET_ORDER_SF) // Hotend, Hotend, Fan or Spindle, Fan #define FAN0_PIN PD12 #elif ENABLED(FET_ORDER_EEB) // Hotend, Hotend, Bed #define FAN0_PIN -1 // IO pin. Buffer needed diff --git a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h index bdfe24cad0..a0c2ed1dc8 100644 --- a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h +++ b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h @@ -51,7 +51,7 @@ // // EEPROM // -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE (0x800U) // 2K #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) diff --git a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h index f7ef25419f..69e11be20c 100644 --- a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h @@ -30,7 +30,7 @@ // // Flash EEPROM Emulation // -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE 0x800 // 2K #define EEPROM_START_ADDRESS (0x8000000 + 256 * 1024 - 2 * EEPROM_PAGE_SIZE) // 256K firmware space diff --git a/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h b/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h index c4fde59c47..93ef7b75d4 100644 --- a/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h +++ b/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h @@ -38,7 +38,7 @@ // // Flash EEPROM Emulation // -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE (0x800U) // 2K #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) diff --git a/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h b/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h index 47bea172a8..49b6f25a47 100644 --- a/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h +++ b/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h @@ -35,7 +35,7 @@ #define RESET_STEPPERS_ON_MEDIA_INSERT #define DISABLE_JTAG -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE (0x800U) // 2K #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) @@ -164,7 +164,7 @@ #define DOGLCD_SCK EXP1_06_PIN #define DOGLCD_MOSI EXP1_08_PIN - #if EITHER(FYSETC_MINI_12864, U8GLIB_ST7920) + #if ANY(FYSETC_MINI_12864, U8GLIB_ST7920) #define FORCE_SOFT_SPI #endif //#define LCD_SCREEN_ROTATE 180 // 0, 90, 180, 270 diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h b/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h index 9c136c11f6..b97ccc8ec7 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h @@ -51,7 +51,7 @@ //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 // Enable EEPROM Emulation for this board as it doesn't have EEPROM -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define MARLIN_EEPROM_SIZE 0x1000 // 4K #endif diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h b/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h index 2cd77f42b2..4bb8c5dee6 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h @@ -51,7 +51,7 @@ //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 // Enable EEPROM Emulation for this board as it doesn't have EEPROM -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define MARLIN_EEPROM_SIZE 0x1000 // 4K #endif diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h b/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h index 5e012c177d..57abf7aca7 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h @@ -56,7 +56,7 @@ //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 // Enable EEPROM Emulation for this board as it doesn't have EEPROM -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define MARLIN_EEPROM_SIZE 0x1000 // 4K #endif diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h b/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h index 8a0f15806e..34f7dba91f 100644 --- a/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h +++ b/Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h @@ -51,7 +51,7 @@ //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 // Enable EEPROM Emulation for this board as it doesn't have EEPROM -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define MARLIN_EEPROM_SIZE 0x1000 // 4K #endif diff --git a/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h b/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h index c18085755c..9b20700adb 100644 --- a/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h +++ b/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h @@ -31,7 +31,7 @@ // Ignore temp readings during development. //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE (0x800U) // 2KB #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) @@ -228,7 +228,7 @@ //#define LED_PIN EXP1_04_PIN // green //#define LED_PIN EXP1_03_PIN // blue - //#if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + //#if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) // #ifndef RGB_LED_R_PIN // #define RGB_LED_R_PIN EXP1_05_PIN // #endif diff --git a/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h b/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h index c86552ba12..6add3ca01c 100644 --- a/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h @@ -51,7 +51,7 @@ #define E2END 0xFFFF // EEPROM end address AT24C256 (32kB) */ -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE 0x800U // 2K #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h index 6892655e46..c7a8da2ddc 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h @@ -52,7 +52,7 @@ //#define FLASH_EEPROM_EMULATION //#define SDCARD_EEPROM_EMULATION -#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM) +#if ANY(NO_EEPROM_SELECTED, I2C_EEPROM) #define I2C_EEPROM // EEPROM on I2C-0 #define MARLIN_EEPROM_SIZE 0x1000 // 4K #endif diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h index a8583e92d7..c3becd3fa1 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h @@ -38,7 +38,7 @@ // // EEPROM // -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE (0x800U) // 2K #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h index 372da38c62..85c8de26ad 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h @@ -43,7 +43,7 @@ // // EEPROM // -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE (0x800U) // 2K #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h index 956e9dc72e..983cb6aded 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h @@ -54,7 +54,7 @@ //#define FLASH_EEPROM_EMULATION //#define SDCARD_EEPROM_EMULATION -#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM) +#if ANY(NO_EEPROM_SELECTED, I2C_EEPROM) #define I2C_EEPROM // EEPROM on I2C-0 #define MARLIN_EEPROM_SIZE 0x1000 // 4K #endif diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h index 69eee63007..16ee7757b9 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h @@ -42,7 +42,7 @@ #if ENABLED(SRAM_EEPROM_EMULATION) #undef NO_EEPROM_SELECTED #endif -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE (0x800U) // 2K #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) diff --git a/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h b/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h index 2ce878ea59..4c65ce9f64 100644 --- a/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h +++ b/Marlin/src/pins/stm32f1/pins_PANDA_PI_V29.h @@ -31,7 +31,7 @@ // Ignore temp readings during development. //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define EEPROM_PAGE_SIZE (0x800U) // 2K #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL) @@ -178,7 +178,7 @@ #define LCD_PINS_D4 PC1 #endif -#if BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) +#if ALL(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) #ifndef NO_CONTROLLER_CUSTOM_WIRING_WARNING #error "CAUTION! LCD_FYSETC_TFT81050 requires wiring modifications. See 'pins_PANDA_PI_V29.h' for details. (Define NO_CONTROLLER_CUSTOM_WIRING_WARNING to suppress this warning.)" @@ -219,7 +219,7 @@ #define CLCD_MOD_RESET PA9 #define CLCD_SPI_CS PB8 - #if SD_CONNECTION_IS(LCD) && BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) + #if SD_CONNECTION_IS(LCD) && ALL(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) #define SD_DETECT_PIN PA15 #define SD_SS_PIN PA10 #endif diff --git a/Marlin/src/pins/stm32f1/pins_STM32F1R.h b/Marlin/src/pins/stm32f1/pins_STM32F1R.h index 46bd48f93f..a2efa632f8 100644 --- a/Marlin/src/pins/stm32f1/pins_STM32F1R.h +++ b/Marlin/src/pins/stm32f1/pins_STM32F1R.h @@ -120,7 +120,7 @@ #error "LCD_I2C_PANELOLU2 is not supported." #elif ENABLED(LCD_I2C_VIKI) #error "LCD_I2C_VIKI is not supported." - #elif EITHER(VIKI2, miniVIKI) + #elif ANY(VIKI2, miniVIKI) #error "VIKI2 / miniVIKI is not supported." #elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) #error "ELB_FULL_GRAPHIC_CONTROLLER is not supported." diff --git a/Marlin/src/pins/stm32f1/pins_STM3R_MINI.h b/Marlin/src/pins/stm32f1/pins_STM3R_MINI.h index 4cf464aaee..b4cf21ee7f 100644 --- a/Marlin/src/pins/stm32f1/pins_STM3R_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_STM3R_MINI.h @@ -144,7 +144,7 @@ #error "LCD_I2C_PANELOLU2 is not supported." #elif ENABLED(LCD_I2C_VIKI) #error "LCD_I2C_VIKI is not supported." - #elif EITHER(VIKI2, miniVIKI) + #elif ANY(VIKI2, miniVIKI) #error "VIKI2 / miniVIKI is not supported." #elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) #error "ELB_FULL_GRAPHIC_CONTROLLER is not supported." diff --git a/Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h b/Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h index 08491fc21c..8ce0f48839 100644 --- a/Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h +++ b/Marlin/src/pins/stm32f1/pins_ZM3E2_V1_0.h @@ -205,7 +205,7 @@ #define BOARD_ST7920_DELAY_2 200 #define BOARD_ST7920_DELAY_3 125 -#elif EITHER(ZONESTAR_12864OLED, ZONESTAR_12864OLED_SSD1306) +#elif ANY(ZONESTAR_12864OLED, ZONESTAR_12864OLED_SSD1306) //================================================================================ // OLED 128x64 diff --git a/Marlin/src/pins/stm32f4/pins_ARMED.h b/Marlin/src/pins/stm32f4/pins_ARMED.h index 9a04c80cdd..b466122638 100644 --- a/Marlin/src/pins/stm32f4/pins_ARMED.h +++ b/Marlin/src/pins/stm32f4/pins_ARMED.h @@ -158,7 +158,7 @@ #define LCD_RESET_PIN PB12 // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN PB13 #endif diff --git a/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h b/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h index 8510e81482..02ad9bb4ad 100644 --- a/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h +++ b/Marlin/src/pins/stm32f4/pins_ARTILLERY_RUBY.h @@ -126,7 +126,7 @@ // LCD / Controller // #if HAS_WIRED_LCD - #if EITHER(MKS_12864OLED, MKS_12864OLED_SSD1306) + #if ANY(MKS_12864OLED, MKS_12864OLED_SSD1306) #define LCD_PINS_DC PB8 // Set as output on init #define LCD_PINS_RS PB9 // Pull low for 1s to init // DOGM SPI LCD Support @@ -143,7 +143,7 @@ #define LCD_RESET_PIN PB5 // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN PB9 #endif diff --git a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h index ce3d2556bf..bc80720916 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h @@ -287,7 +287,7 @@ #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h b/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h index d737dbdc93..4350fad7f7 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_E3_RRF.h @@ -196,7 +196,7 @@ #if HAS_WIRED_LCD - #if EITHER(CR10_STOCKDISPLAY, LCD_FOR_MELZI) + #if ANY(CR10_STOCKDISPLAY, LCD_FOR_MELZI) #define BEEPER_PIN PE8 @@ -258,7 +258,7 @@ #define LCD_PINS_D7 PE8 #define ADC_KEYPAD_PIN PB0 // Repurpose servo pin for ADC - CONNECTING TO 5V WILL DAMAGE THE BOARD! - #elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) + #elif ANY(MKS_MINI_12864, ENDER2_STOCKDISPLAY) #define BTN_ENC PE9 #define BTN_EN1 PE7 @@ -330,7 +330,7 @@ #endif // HAS_WIRED_LCD -#if BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) +#if ALL(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) #ifndef NO_CONTROLLER_CUSTOM_WIRING_WARNING #error "CAUTION! LCD_FYSETC_TFT81050 requires wiring modifications. See 'pins_BTT_E3_RRF.h' for details. (Define NO_CONTROLLER_CUSTOM_WIRING_WARNING to suppress this warning.)" diff --git a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h index 0445476490..2414c07ae3 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h @@ -464,7 +464,7 @@ //#define LCD_BACKLIGHT_PIN -1 #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h index 29c1e9f984..4cfb8e7b7e 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h @@ -27,7 +27,7 @@ #define USES_DIAG_JUMPERS // Onboard I2C EEPROM -#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM) +#if ANY(NO_EEPROM_SELECTED, I2C_EEPROM) #undef NO_EEPROM_SELECTED #define I2C_EEPROM #define MARLIN_EEPROM_SIZE 0x1000 // 4K (AT24C32) @@ -467,7 +467,7 @@ #define DOGLCD_A0 EXP1_04_PIN //#define LCD_BACKLIGHT_PIN -1 #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h index 6f2de83b51..64ab2dd6c9 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h @@ -43,7 +43,7 @@ #endif // Onboard I2C EEPROM -#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM) +#if ANY(NO_EEPROM_SELECTED, I2C_EEPROM) #undef NO_EEPROM_SELECTED #define I2C_EEPROM #define SOFT_I2C_EEPROM // Force the use of Software I2C @@ -219,7 +219,7 @@ #define LCD_PINS_D7 EXP1_01_PIN #define ADC_KEYPAD_PIN PA1 // Repurpose servo pin for ADC - CONNECTING TO 5V WILL DAMAGE THE BOARD! - #elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) + #elif ANY(MKS_MINI_12864, ENDER2_STOCKDISPLAY) #define BTN_ENC EXP1_02_PIN #define BTN_EN1 EXP1_03_PIN @@ -280,7 +280,7 @@ #endif // HAS_WIRED_LCD -#if BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) +#if ALL(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) #ifndef NO_CONTROLLER_CUSTOM_WIRING_WARNING #error "CAUTION! LCD_FYSETC_TFT81050 requires wiring modifications. See 'pins_BTT_SKR_MINI_E3_common.h' for details. (Define NO_CONTROLLER_CUSTOM_WIRING_WARNING to suppress this warning.)" @@ -332,7 +332,7 @@ #define SDCARD_CONNECTION ONBOARD #endif -#if SD_CONNECTION_IS(LCD) && (BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) || IS_TFTGLCD_PANEL) +#if SD_CONNECTION_IS(LCD) && (ALL(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) || IS_TFTGLCD_PANEL) #define SD_DETECT_PIN EXP1_01_PIN #define SD_SS_PIN EXP1_05_PIN #elif SD_CONNECTION_IS(CUSTOM_CABLE) diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h index 407d89f60b..f2fbdb9ece 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h @@ -29,8 +29,8 @@ // https://github.com/bigtreetech/BTT-Expansion-module/tree/master/BTT%20EXP-MOT //#define BTT_MOTOR_EXPANSION -#if BOTH(HAS_WIRED_LCD, BTT_MOTOR_EXPANSION) - #if EITHER(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) +#if ALL(HAS_WIRED_LCD, BTT_MOTOR_EXPANSION) + #if ANY(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) #define EXP_MOT_USE_EXP2_ONLY 1 #else #error "You can't use both an LCD and a Motor Expansion Module on EXP1/EXP2 at the same time." @@ -505,7 +505,7 @@ #define DOGLCD_A0 EXP1_04_PIN //#define LCD_BACKLIGHT_PIN -1 #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h index 05537ec243..055338f45b 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h @@ -29,8 +29,8 @@ // https://github.com/bigtreetech/BTT-Expansion-module/tree/master/BTT%20EXP-MOT //#define BTT_MOTOR_EXPANSION -#if BOTH(HAS_WIRED_LCD, BTT_MOTOR_EXPANSION) - #if EITHER(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) +#if ALL(HAS_WIRED_LCD, BTT_MOTOR_EXPANSION) + #if ANY(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) #define EXP_MOT_USE_EXP2_ONLY 1 #else #error "You can't use both an LCD and a Motor Expansion Module on EXP1/EXP2 at the same time." @@ -484,7 +484,7 @@ #define DOGLCD_A0 EXP1_04_PIN //#define LCD_BACKLIGHT_PIN -1 #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h b/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h index 626bdcde76..16973b344f 100644 --- a/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h +++ b/Marlin/src/pins/stm32f4/pins_FYSETC_CHEETAH_V20.h @@ -34,7 +34,7 @@ // Ignore temp readings during development. //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #define FLASH_EEPROM_EMULATION #define FLASH_EEPROM_LEVELING @@ -224,7 +224,7 @@ #define DOGLCD_A0 EXP1_04_PIN //#define LCD_BACKLIGHT_PIN -1 #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h b/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h index 7780490799..3daa813952 100644 --- a/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h +++ b/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h @@ -291,7 +291,7 @@ #define LCD_BACKLIGHT_PIN EXP1_07_PIN #endif #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/stm32f4/pins_I3DBEEZ9.h b/Marlin/src/pins/stm32f4/pins_I3DBEEZ9.h index a7ad18c8dc..f63f4adeec 100644 --- a/Marlin/src/pins/stm32f4/pins_I3DBEEZ9.h +++ b/Marlin/src/pins/stm32f4/pins_I3DBEEZ9.h @@ -33,8 +33,8 @@ //#define MOTOR_EXPANSION -#if BOTH(HAS_WIRED_LCD, MOTOR_EXPANSION) - #if EITHER(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) +#if ALL(HAS_WIRED_LCD, MOTOR_EXPANSION) + #if ANY(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) #define EXP_MOT_USE_EXP2_ONLY 1 #else #error "You can't use both an LCD and a Motor Expansion Module on EXP1/EXP2 at the same time." @@ -560,7 +560,7 @@ #define DOGLCD_A0 EXP1_04_PIN //#define LCD_BACKLIGHT_PIN -1 #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h index 0940fc5e0c..05c938037d 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h @@ -263,7 +263,7 @@ #endif #endif -#if EITHER(TFT_COLOR_UI, TFT_CLASSIC_UI) +#if ANY(TFT_COLOR_UI, TFT_CLASSIC_UI) #define TFT_CS_PIN EXP1_07_PIN #define TFT_SCK_PIN EXP2_02_PIN #define TFT_MISO_PIN EXP2_01_PIN diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h index 04c4009529..cdb9f5edec 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h @@ -33,7 +33,7 @@ // Use one of these or SDCard-based Emulation will be used //#define SRAM_EEPROM_EMULATION // Use BackSRAM-based EEPROM emulation //#define FLASH_EEPROM_EMULATION // Use Flash-based EEPROM emulation -#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM) +#if ANY(NO_EEPROM_SELECTED, I2C_EEPROM) #define I2C_EEPROM #define MARLIN_EEPROM_SIZE 0x1000 // 4K #define I2C_SCL_PIN PB6 diff --git a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h index 84d5a5f5e0..f7b9fb4674 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_SKIPR_V1_0.h @@ -311,7 +311,7 @@ #define DOGLCD_A0 EXP1_04_PIN //#define LCD_BACKLIGHT_PIN -1 #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h b/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h index 0ab67c1558..6149000598 100644 --- a/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h +++ b/Marlin/src/pins/stm32f4/pins_TH3D_EZBOARD_V2.h @@ -61,7 +61,7 @@ // // Limit Switches // -#if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING) +#if ANY(SENSORLESS_HOMING, SENSORLESS_PROBING) // Sensorless homing pins #if ENABLED(X_AXIS_SENSORLESS_HOMING) #define X_STOP_PIN PB4 @@ -269,7 +269,7 @@ #endif -#if EITHER(CR10_STOCKDISPLAY, MKS_MINI_12864) +#if ANY(CR10_STOCKDISPLAY, MKS_MINI_12864) #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN #define BTN_ENC EXP1_02_PIN diff --git a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h index 07c68dc780..6c31fdc572 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_EBB42_V1_1.h @@ -38,7 +38,7 @@ // // EEPROM // -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #undef NO_EEPROM_SELECTED #ifndef FLASH_EEPROM_EMULATION #define FLASH_EEPROM_EMULATION diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h index 25f1b307ca..156698f424 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h @@ -35,7 +35,7 @@ // // EEPROM // -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #undef NO_EEPROM_SELECTED #ifndef FLASH_EEPROM_EMULATION #define FLASH_EEPROM_EMULATION @@ -286,7 +286,7 @@ #define LCD_PINS_D7 EXP1_01_PIN #define ADC_KEYPAD_PIN PA7 // Repurpose default SERVO0_PIN for ADC - CONNECTING TO 5V WILL DAMAGE THE BOARD! - #elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) + #elif ANY(MKS_MINI_12864, ENDER2_STOCKDISPLAY) #define BTN_EN1 EXP1_03_PIN #define BTN_EN2 EXP1_05_PIN @@ -317,7 +317,7 @@ #define SD_DETECT_PIN -1 -#if SD_CONNECTION_IS(LCD) && (BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) || IS_TFTGLCD_PANEL) +#if SD_CONNECTION_IS(LCD) && (ALL(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) || IS_TFTGLCD_PANEL) #define SD_SS_PIN EXP1_05_PIN #elif SD_CONNECTION_IS(CUSTOM_CABLE) #error "SD CUSTOM_CABLE is not compatible with Manta E3 EZ." diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h index 3a18b7864c..33b957f53a 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h @@ -37,7 +37,7 @@ // // EEPROM // -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #undef NO_EEPROM_SELECTED #ifndef FLASH_EEPROM_EMULATION #define FLASH_EEPROM_EMULATION @@ -259,7 +259,7 @@ // results in LCD soft SPI mode 3, SD soft SPI mode 0 #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h index 1d77a6cb07..286a59a00b 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h @@ -35,7 +35,7 @@ // // EEPROM // -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #undef NO_EEPROM_SELECTED #ifndef FLASH_EEPROM_EMULATION #define FLASH_EEPROM_EMULATION @@ -287,7 +287,7 @@ // results in LCD soft SPI mode 3, SD soft SPI mode 0 #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h index 8cab6b5357..d4a21ba2f2 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h @@ -33,7 +33,7 @@ // // EEPROM // -#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) +#if ANY(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION) #undef NO_EEPROM_SELECTED #ifndef FLASH_EEPROM_EMULATION #define FLASH_EEPROM_EMULATION @@ -337,7 +337,7 @@ // results in LCD soft SPI mode 3, SD soft SPI mode 0 #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h b/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h index 0f7da52572..ef6a22b88f 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h @@ -37,7 +37,7 @@ #define LED_PIN PD8 // Onboard I2C EEPROM -#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM) +#if ANY(NO_EEPROM_SELECTED, I2C_EEPROM) #undef NO_EEPROM_SELECTED #define I2C_EEPROM #define SOFT_I2C_EEPROM // Force the use of Software I2C @@ -255,7 +255,7 @@ #define LCD_PINS_D7 EXP1_01_PIN #define ADC_KEYPAD_PIN PA1 // Repurpose servo pin for ADC - CONNECTING TO 5V WILL DAMAGE THE BOARD! - #elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY) + #elif ANY(MKS_MINI_12864, ENDER2_STOCKDISPLAY) #define BTN_ENC EXP1_02_PIN #define BTN_EN1 EXP1_03_PIN @@ -363,7 +363,7 @@ #endif // HAS_WIRED_LCD -#if BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) +#if ALL(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) #ifndef NO_CONTROLLER_CUSTOM_WIRING_WARNING #error "CAUTION! LCD_FYSETC_TFT81050 requires wiring modifications. See 'pins_BTT_SKR_MINI_E3_common.h' for details. (Define NO_CONTROLLER_CUSTOM_WIRING_WARNING to suppress this warning.)" @@ -416,7 +416,7 @@ #if SD_CONNECTION_IS(ONBOARD) #define SD_DETECT_PIN PC3 -#elif SD_CONNECTION_IS(LCD) && (BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) || IS_TFTGLCD_PANEL) +#elif SD_CONNECTION_IS(LCD) && (ALL(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) || IS_TFTGLCD_PANEL) #define SD_DETECT_PIN EXP1_01_PIN #define SD_SS_PIN EXP1_05_PIN #elif SD_CONNECTION_IS(CUSTOM_CABLE) diff --git a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h index 69723947fd..ee92372b5a 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h @@ -28,7 +28,7 @@ #define USES_DIAG_JUMPERS // Onboard I2C EEPROM -#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM) +#if ANY(NO_EEPROM_SELECTED, I2C_EEPROM) #undef NO_EEPROM_SELECTED #define I2C_EEPROM #define SOFT_I2C_EEPROM // Force the use of Software I2C @@ -440,7 +440,7 @@ // results in LCD soft SPI mode 3, SD soft SPI mode 0 //#define LCD_BACKLIGHT_PIN -1 #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h index 77f47f8106..85fd24da0f 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h @@ -27,8 +27,8 @@ // https://github.com/bigtreetech/BTT-Expansion-module/tree/master/BTT%20EXP-MOT //#define BTT_MOTOR_EXPANSION -#if BOTH(HAS_WIRED_LCD, BTT_MOTOR_EXPANSION) - #if EITHER(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) +#if ALL(HAS_WIRED_LCD, BTT_MOTOR_EXPANSION) + #if ANY(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) #define EXP_MOT_USE_EXP2_ONLY 1 #else #error "You can't use both an LCD and a Motor Expansion Module on EXP1/EXP2 at the same time." @@ -38,7 +38,7 @@ #define USES_DIAG_JUMPERS // Onboard I2C EEPROM -#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM) +#if ANY(NO_EEPROM_SELECTED, I2C_EEPROM) #undef NO_EEPROM_SELECTED #define I2C_EEPROM #define SOFT_I2C_EEPROM // Force the use of Software I2C @@ -473,7 +473,7 @@ #define DOGLCD_A0 EXP1_04_PIN //#define LCD_BACKLIGHT_PIN -1 #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) #ifndef RGB_LED_R_PIN #define RGB_LED_R_PIN EXP1_06_PIN #endif diff --git a/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h b/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h index 124faa7691..c1eee00c2d 100644 --- a/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h +++ b/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h @@ -139,7 +139,7 @@ #define LCD_PINS_D6 5 // D5 JP11-6 #define LCD_PINS_D7 4 // D4 JP11-5 - #if EITHER(VIKI2, miniVIKI) + #if ANY(VIKI2, miniVIKI) #define BEEPER_PIN 8 // E0 JP11-10 #define DOGLCD_A0 40 // F2 JP2-2 diff --git a/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h b/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h index b208b08826..62922399d8 100644 --- a/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h +++ b/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h @@ -220,7 +220,7 @@ #define LCD_PINS_D6 5 // D5 JP11-6 #define LCD_PINS_D7 4 // D4 JP11-5 - #if EITHER(VIKI2, miniVIKI) + #if ANY(VIKI2, miniVIKI) #define BEEPER_PIN 8 // E0 JP11-10 #define DOGLCD_A0 40 // F2 JP2-2 diff --git a/Marlin/src/pins/teensy2/pins_SAV_MKI.h b/Marlin/src/pins/teensy2/pins_SAV_MKI.h index c1809eed6b..28b0aebe42 100644 --- a/Marlin/src/pins/teensy2/pins_SAV_MKI.h +++ b/Marlin/src/pins/teensy2/pins_SAV_MKI.h @@ -163,7 +163,7 @@ #define SR_CLK_PIN EXT_AUX_SCL_D0 #endif -#if EITHER(SAV_3DLCD, SAV_3DGLCD) +#if ANY(SAV_3DLCD, SAV_3DGLCD) #define BTN_EN1 EXT_AUX_A1_IO #define BTN_EN2 EXT_AUX_A0_IO diff --git a/Marlin/src/sd/Sd2Card.h b/Marlin/src/sd/Sd2Card.h index 23677b24fa..71e31ac614 100644 --- a/Marlin/src/sd/Sd2Card.h +++ b/Marlin/src/sd/Sd2Card.h @@ -83,7 +83,7 @@ uint8_t const SD_CARD_TYPE_SD1 = 1, // Standard capacity V1 SD card /** * Define SOFTWARE_SPI to use bit-bang SPI */ -#if EITHER(MEGA_SOFT_SPI, USE_SOFTWARE_SPI) +#if ANY(MEGA_SOFT_SPI, USE_SOFTWARE_SPI) #define SOFTWARE_SPI #endif diff --git a/Marlin/src/sd/cardreader.cpp b/Marlin/src/sd/cardreader.cpp index a4a10b3169..811351ec8c 100644 --- a/Marlin/src/sd/cardreader.cpp +++ b/Marlin/src/sd/cardreader.cpp @@ -60,7 +60,7 @@ #include "../../src/lcd/menu/menu.h" #endif -#define DEBUG_OUT EITHER(DEBUG_CARDREADER, MARLIN_DEV_MODE) +#define DEBUG_OUT ANY(DEBUG_CARDREADER, MARLIN_DEV_MODE) #include "../core/debug_out.h" #include "../libs/hex_print.h" @@ -176,7 +176,7 @@ CardReader::CardReader() { workDirDepth = 0; ZERO(workDirParents); - #if BOTH(HAS_MEDIA, HAS_SD_DETECT) + #if ALL(HAS_MEDIA, HAS_SD_DETECT) SET_INPUT_PULLUP(SD_DETECT_PIN); #endif @@ -499,7 +499,7 @@ void CardReader::mount() { if (flag.mounted) cdroot(); else { - #if EITHER(HAS_SD_DETECT, USB_FLASH_DRIVE_SUPPORT) + #if ANY(HAS_SD_DETECT, USB_FLASH_DRIVE_SUPPORT) if (marlin_state != MF_INITIALIZING) LCD_ALERTMESSAGE(MSG_MEDIA_INIT_FAIL); #endif } @@ -1355,7 +1355,7 @@ void CardReader::cdroot() { } else { sort_order[0] = 0; - #if BOTH(SDSORT_USES_RAM, SDSORT_CACHE_NAMES) + #if ALL(SDSORT_USES_RAM, SDSORT_CACHE_NAMES) #if ENABLED(SDSORT_DYNAMIC_RAM) sortnames = new char*[1]; sortshort = new char*[1]; diff --git a/Marlin/src/sd/cardreader.h b/Marlin/src/sd/cardreader.h index 832d79efe4..80e317ebcf 100644 --- a/Marlin/src/sd/cardreader.h +++ b/Marlin/src/sd/cardreader.h @@ -284,7 +284,7 @@ private: static uint8_t sort_order[SDSORT_LIMIT]; #endif - #if BOTH(SDSORT_USES_RAM, SDSORT_CACHE_NAMES) && DISABLED(SDSORT_DYNAMIC_RAM) + #if ALL(SDSORT_USES_RAM, SDSORT_CACHE_NAMES) && DISABLED(SDSORT_DYNAMIC_RAM) #define SORTED_LONGNAME_MAXLEN (SDSORT_CACHE_VFATS) * (FILENAME_LENGTH) #define SORTED_LONGNAME_STORAGE (SORTED_LONGNAME_MAXLEN + 1) #else diff --git a/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.h b/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.h index 3390bc51be..f722c873ae 100644 --- a/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.h +++ b/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.h @@ -33,7 +33,7 @@ /** * Define SOFTWARE_SPI to use bit-bang SPI */ - #if EITHER(MEGA_SOFT_SPI, USE_SOFTWARE_SPI) + #if ANY(MEGA_SOFT_SPI, USE_SOFTWARE_SPI) #define SOFTWARE_SPI #endif diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.h b/buildroot/share/PlatformIO/scripts/common-dependencies.h index c75d9a3d67..b37a377df9 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.h +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.h @@ -33,7 +33,7 @@ // #if ENABLED(SR_LCD_3W_NL) // Feature checks for SR_LCD_3W_NL -#elif EITHER(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008) +#elif ANY(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008) #define USES_LIQUIDTWI2 #elif ENABLED(LCD_I2C_TYPE_PCA8574) #define USES_LIQUIDCRYSTAL_I2C @@ -59,10 +59,10 @@ #if ENABLED(CANCEL_OBJECTS) #define HAS_MENU_CANCELOBJECT #endif - #if EITHER(DELTA_CALIBRATION_MENU, DELTA_AUTO_CALIBRATION) + #if ANY(DELTA_CALIBRATION_MENU, DELTA_AUTO_CALIBRATION) #define HAS_MENU_DELTA_CALIBRATE #endif - #if EITHER(LED_CONTROL_MENU, CASE_LIGHT_MENU) + #if ANY(LED_CONTROL_MENU, CASE_LIGHT_MENU) #define HAS_MENU_LED #endif #if ENABLED(ADVANCED_PAUSE_FEATURE) From 86c811660ebf0b3fcbae2f34273d4c9d0c22abc4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 2 Jun 2023 14:30:34 -0500 Subject: [PATCH 499/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Rem?= =?UTF-8?q?ove=20LOOP=20macros=20(#25917)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/AVR/HAL_SPI.cpp | 4 ++-- Marlin/src/HAL/AVR/fast_pwm.cpp | 4 ++-- Marlin/src/HAL/AVR/pinsDebug.h | 4 ++-- Marlin/src/HAL/AVR/u8g_com_HAL_AVR_sw_spi.cpp | 4 ++-- .../dogm/u8g_com_HAL_DUE_sw_spi_shared.cpp | 4 ++-- Marlin/src/HAL/DUE/fastio/G2_PWM.h | 2 +- Marlin/src/HAL/ESP32/i2s.cpp | 2 +- Marlin/src/HAL/LPC1768/main.cpp | 2 +- Marlin/src/HAL/LPC1768/tft/tft_spi.cpp | 2 +- .../u8g/u8g_com_HAL_LPC1768_sw_spi.cpp | 16 ++++++------- .../src/HAL/NATIVE_SIM/u8g/u8g_com_sw_spi.cpp | 16 ++++++------- Marlin/src/HAL/SAMD51/HAL.cpp | 6 ++--- Marlin/src/HAL/STM32/fastio.cpp | 2 +- Marlin/src/HAL/STM32/tft/gt911.cpp | 12 +++++----- Marlin/src/HAL/STM32/timers.cpp | 4 ++-- .../STM32F1/dogm/u8g_com_stm32duino_swspi.cpp | 16 ++++++------- Marlin/src/HAL/STM32F1/tft/tft_spi.cpp | 2 +- Marlin/src/HAL/shared/servo.cpp | 2 +- Marlin/src/MarlinCore.cpp | 4 ++-- Marlin/src/core/macros.h | 5 ---- Marlin/src/core/serial_base.h | 2 +- Marlin/src/core/types.h | 10 ++++---- Marlin/src/feature/babystep.h | 2 +- Marlin/src/feature/bedlevel/abl/bbl.cpp | 16 ++++++------- Marlin/src/feature/bedlevel/bedlevel.cpp | 8 +++---- .../bedlevel/mbl/mesh_bed_leveling.cpp | 4 ++-- Marlin/src/feature/bedlevel/ubl/ubl.cpp | 4 ++-- Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 24 +++++++++---------- .../src/feature/digipot/digipot_mcp4018.cpp | 4 ++-- .../src/feature/digipot/digipot_mcp4451.cpp | 2 +- Marlin/src/feature/encoder_i2c.cpp | 6 ++--- Marlin/src/feature/encoder_i2c.h | 2 +- Marlin/src/feature/fancheck.cpp | 10 ++++---- Marlin/src/feature/filwidth.cpp | 2 +- Marlin/src/feature/leds/leds.cpp | 8 +++---- Marlin/src/feature/max7219.cpp | 22 ++++++++--------- Marlin/src/feature/mixing.cpp | 4 ++-- Marlin/src/feature/mmu/mmu2.cpp | 10 ++++---- Marlin/src/feature/powerloss.cpp | 2 +- Marlin/src/feature/probe_temp_comp.cpp | 12 +++++----- Marlin/src/feature/repeat.cpp | 2 +- Marlin/src/feature/repeat.h | 2 +- Marlin/src/feature/runout.h | 24 +++++++++---------- Marlin/src/feature/twibus.cpp | 2 +- Marlin/src/feature/x_twist.cpp | 4 ++-- Marlin/src/gcode/bedlevel/G26.cpp | 2 +- Marlin/src/gcode/bedlevel/G35.cpp | 4 ++-- Marlin/src/gcode/bedlevel/abl/G29.cpp | 4 ++-- Marlin/src/gcode/bedlevel/abl/M421.cpp | 4 ++-- Marlin/src/gcode/calibrate/G34_M422.cpp | 16 ++++++------- Marlin/src/gcode/calibrate/G425.cpp | 4 ++-- Marlin/src/gcode/calibrate/M100.cpp | 4 ++-- Marlin/src/gcode/calibrate/M48.cpp | 6 ++--- Marlin/src/gcode/config/M200-M205.cpp | 4 ++-- Marlin/src/gcode/config/M218.cpp | 2 +- Marlin/src/gcode/config/M281.cpp | 2 +- Marlin/src/gcode/config/M305.cpp | 2 +- Marlin/src/gcode/config/M43.cpp | 10 ++++---- Marlin/src/gcode/config/M672.cpp | 2 +- Marlin/src/gcode/config/M92.cpp | 2 +- Marlin/src/gcode/control/M111.cpp | 2 +- Marlin/src/gcode/feature/camera/M240.cpp | 2 +- .../src/gcode/feature/digipot/M907-M910.cpp | 6 ++--- Marlin/src/gcode/feature/leds/M7219.cpp | 2 +- .../src/gcode/feature/network/M552-M554.cpp | 4 ++-- Marlin/src/gcode/host/M114.cpp | 2 +- Marlin/src/gcode/host/M115.cpp | 2 +- Marlin/src/gcode/lcd/M145.cpp | 2 +- Marlin/src/gcode/probe/M423.cpp | 2 +- Marlin/src/gcode/queue.cpp | 6 ++--- Marlin/src/inc/Conditionals_LCD.h | 2 +- Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 4 ++-- Marlin/src/lcd/dogm/marlinui_DOGM.cpp | 4 ++-- Marlin/src/lcd/dogm/status_screen_DOGM.cpp | 2 +- .../lcd/dogm/status_screen_lite_ST7920.cpp | 8 +++---- .../lcd/dogm/u8g_dev_st7920_128x64_HAL.cpp | 4 ++-- .../dogm/u8g_dev_tft_upscale_from_128x64.cpp | 12 +++++----- Marlin/src/lcd/e3v2/common/dwin_api.cpp | 4 ++-- Marlin/src/lcd/e3v2/creality/dwin.cpp | 14 +++++------ Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 12 +++++----- Marlin/src/lcd/e3v2/proui/dwin.cpp | 14 +++++------ Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp | 4 ++-- Marlin/src/lcd/e3v2/proui/meshviewer.cpp | 10 ++++---- .../src/lcd/extui/anycubic_vyper/dgus_tft.cpp | 18 +++++++------- .../lcd/extui/dgus/DGUSScreenHandlerBase.h | 2 +- .../src/lcd/extui/dgus_reloaded/DGUSDisplay.h | 2 +- .../extended/unicode/cyrillic_char_set.cpp | 4 ++-- .../extended/unicode/western_char_set.cpp | 4 ++-- .../generic/move_axis_screen.cpp | 2 +- Marlin/src/lcd/extui/malyan/malyan.cpp | 4 ++-- Marlin/src/lcd/extui/mks_ui/pic_manager.cpp | 2 +- Marlin/src/lcd/marlinui.cpp | 4 ++-- Marlin/src/lcd/marlinui.h | 2 +- Marlin/src/lcd/menu/game/brickout.cpp | 8 +++---- Marlin/src/lcd/menu/game/invaders.cpp | 20 ++++++++-------- Marlin/src/lcd/menu/game/maze.cpp | 2 +- Marlin/src/lcd/menu/game/snake.cpp | 14 +++++------ Marlin/src/lcd/menu/menu_advanced.cpp | 6 ++--- Marlin/src/lcd/menu/menu_configuration.cpp | 2 +- Marlin/src/lcd/menu/menu_filament.cpp | 8 +++---- Marlin/src/lcd/menu/menu_mixer.cpp | 2 +- Marlin/src/lcd/menu/menu_password.cpp | 2 +- Marlin/src/lcd/menu/menu_temperature.cpp | 6 ++--- Marlin/src/lcd/menu/menu_tune.cpp | 2 +- Marlin/src/lcd/menu/menu_x_twist.cpp | 4 ++-- Marlin/src/libs/BL24CXX.cpp | 8 +++---- Marlin/src/libs/nozzle.cpp | 8 +++---- Marlin/src/libs/vector_3.cpp | 12 +++++----- Marlin/src/module/endstops.cpp | 2 +- Marlin/src/module/planner.cpp | 4 ++-- Marlin/src/module/planner.h | 2 +- Marlin/src/module/probe.cpp | 4 ++-- Marlin/src/module/settings.cpp | 24 +++++++++---------- Marlin/src/module/stepper.cpp | 6 ++--- Marlin/src/module/stepper/trinamic.cpp | 2 +- Marlin/src/module/temperature.cpp | 2 +- Marlin/src/module/temperature.h | 4 ++-- Marlin/src/module/tool_change.cpp | 2 +- Marlin/src/pins/pinsDebug.h | 2 +- Marlin/src/sd/Sd2Card.cpp | 10 ++++---- Marlin/src/sd/SdBaseFile.cpp | 18 +++++++------- Marlin/src/sd/cardreader.cpp | 6 ++--- 122 files changed, 362 insertions(+), 367 deletions(-) diff --git a/Marlin/src/HAL/AVR/HAL_SPI.cpp b/Marlin/src/HAL/AVR/HAL_SPI.cpp index dc98f2f79e..32c0361d03 100644 --- a/Marlin/src/HAL/AVR/HAL_SPI.cpp +++ b/Marlin/src/HAL/AVR/HAL_SPI.cpp @@ -198,7 +198,7 @@ void spiBegin() { // output pin high - like sending 0xFF WRITE(SD_MOSI_PIN, HIGH); - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { WRITE(SD_SCK_PIN, HIGH); nop; // adjust so SCK is nice @@ -225,7 +225,7 @@ void spiBegin() { void spiSend(uint8_t data) { // no interrupts during byte send - about 8µs cli(); - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { WRITE(SD_SCK_PIN, LOW); WRITE(SD_MOSI_PIN, data & 0x80); data <<= 1; diff --git a/Marlin/src/HAL/AVR/fast_pwm.cpp b/Marlin/src/HAL/AVR/fast_pwm.cpp index 0b2b8fd0b3..6da68e6245 100644 --- a/Marlin/src/HAL/AVR/fast_pwm.cpp +++ b/Marlin/src/HAL/AVR/fast_pwm.cpp @@ -132,7 +132,7 @@ void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) { DEBUG_ECHOLNPGM("f=", f); DEBUG_ECHOLNPGM("(prescaler loop)"); - LOOP_L_N(i, COUNT(prescaler)) { // Loop through all prescaler values + for (uint8_t i = 0; i < COUNT(prescaler); ++i) { // Loop through all prescaler values const uint32_t p = prescaler[i]; // Extend to 32 bits for calculations DEBUG_ECHOLNPGM("prescaler[", i, "]=", p); uint16_t res_fast_temp, res_pc_temp; @@ -232,7 +232,7 @@ void MarlinHAL::init_pwm_timers() { #endif }; - LOOP_L_N(i, COUNT(pwm_pin)) + for (uint8_t i = 0; i < COUNT(pwm_pin); ++i) set_pwm_frequency(pwm_pin[i], 1000); } diff --git a/Marlin/src/HAL/AVR/pinsDebug.h b/Marlin/src/HAL/AVR/pinsDebug.h index accd3c663f..fc51f41ef8 100644 --- a/Marlin/src/HAL/AVR/pinsDebug.h +++ b/Marlin/src/HAL/AVR/pinsDebug.h @@ -77,12 +77,12 @@ void PRINT_ARRAY_NAME(uint8_t x) { PGM_P const name_mem_pointer = (PGM_P)pgm_read_ptr(&pin_array[x].name); - LOOP_L_N(y, MAX_NAME_LENGTH) { + for (uint8_t y = 0; y < MAX_NAME_LENGTH; ++y) { char temp_char = pgm_read_byte(name_mem_pointer + y); if (temp_char != 0) SERIAL_CHAR(temp_char); else { - LOOP_L_N(i, MAX_NAME_LENGTH - y) SERIAL_CHAR(' '); + for (uint8_t i = 0; i < MAX_NAME_LENGTH - y; ++i) SERIAL_CHAR(' '); break; } } diff --git a/Marlin/src/HAL/AVR/u8g_com_HAL_AVR_sw_spi.cpp b/Marlin/src/HAL/AVR/u8g_com_HAL_AVR_sw_spi.cpp index 45b54379db..79bafe2939 100644 --- a/Marlin/src/HAL/AVR/u8g_com_HAL_AVR_sw_spi.cpp +++ b/Marlin/src/HAL/AVR/u8g_com_HAL_AVR_sw_spi.cpp @@ -88,7 +88,7 @@ void u8g_spiSend_sw_AVR_mode_0(uint8_t val) { volatile uint8_t *outData = u8g_outData, *outClock = u8g_outClock; U8G_ATOMIC_START(); - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { if (val & 0x80) *outData |= bitData; else @@ -108,7 +108,7 @@ void u8g_spiSend_sw_AVR_mode_3(uint8_t val) { volatile uint8_t *outData = u8g_outData, *outClock = u8g_outClock; U8G_ATOMIC_START(); - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { *outClock &= bitNotClock; if (val & 0x80) *outData |= bitData; diff --git a/Marlin/src/HAL/DUE/dogm/u8g_com_HAL_DUE_sw_spi_shared.cpp b/Marlin/src/HAL/DUE/dogm/u8g_com_HAL_DUE_sw_spi_shared.cpp index 904924793b..86c8a48470 100644 --- a/Marlin/src/HAL/DUE/dogm/u8g_com_HAL_DUE_sw_spi_shared.cpp +++ b/Marlin/src/HAL/DUE/dogm/u8g_com_HAL_DUE_sw_spi_shared.cpp @@ -81,7 +81,7 @@ Pio *SCK_pPio, *MOSI_pPio; uint32_t SCK_dwMask, MOSI_dwMask; void u8g_spiSend_sw_DUE_mode_0(uint8_t val) { // 3MHz - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { if (val & 0x80) MOSI_pPio->PIO_SODR = MOSI_dwMask; else @@ -95,7 +95,7 @@ void u8g_spiSend_sw_DUE_mode_0(uint8_t val) { // 3MHz } void u8g_spiSend_sw_DUE_mode_3(uint8_t val) { // 3.5MHz - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { SCK_pPio->PIO_CODR = SCK_dwMask; DELAY_NS(50); if (val & 0x80) diff --git a/Marlin/src/HAL/DUE/fastio/G2_PWM.h b/Marlin/src/HAL/DUE/fastio/G2_PWM.h index dc4edffff8..2afe246cea 100644 --- a/Marlin/src/HAL/DUE/fastio/G2_PWM.h +++ b/Marlin/src/HAL/DUE/fastio/G2_PWM.h @@ -63,7 +63,7 @@ extern PWM_map ISR_table[NUM_PWMS]; extern uint32_t motor_current_setting[3]; #define IR_BIT(p) (WITHIN(p, 0, 3) ? (p) : (p) + 4) -#define COPY_ACTIVE_TABLE() do{ LOOP_L_N(i, 6) work_table[i] = active_table[i]; }while(0) +#define COPY_ACTIVE_TABLE() do{ for (uint8_t i = 0; i < 6; ++i) work_table[i] = active_table[i]; }while(0) #define PWM_MR0 19999 // base repetition rate minus one count - 20mS #define PWM_PR 24 // prescaler value - prescaler divide by 24 + 1 - 1 MHz output diff --git a/Marlin/src/HAL/ESP32/i2s.cpp b/Marlin/src/HAL/ESP32/i2s.cpp index 63ceed4c9d..69f8ca9845 100644 --- a/Marlin/src/HAL/ESP32/i2s.cpp +++ b/Marlin/src/HAL/ESP32/i2s.cpp @@ -356,7 +356,7 @@ void i2s_push_sample() { // Every 4µs (when space in DMA buffer) toggle each expander PWM output using // the current duty cycle/frequency so they sync with any steps (once // through the DMA/FIFO buffers). PWM signal inversion handled by other functions - LOOP_L_N(p, MAX_EXPANDER_BITS) { + for (uint8_t p = 0; p < MAX_EXPANDER_BITS; ++p) { if (hal.pwm_pin_data[p].pwm_duty_ticks > 0) { // pin has active pwm? if (hal.pwm_pin_data[p].pwm_tick_count == 0) { if (TEST32(i2s_port_data, p)) { // hi->lo diff --git a/Marlin/src/HAL/LPC1768/main.cpp b/Marlin/src/HAL/LPC1768/main.cpp index 419c99793f..15518c3d86 100644 --- a/Marlin/src/HAL/LPC1768/main.cpp +++ b/Marlin/src/HAL/LPC1768/main.cpp @@ -68,7 +68,7 @@ void MarlinHAL::init() { #endif // Flash status LED 3 times to indicate Marlin has started booting - LOOP_L_N(i, 6) { + for (uint8_t i = 0; i < 6; ++i) { TOGGLE(LED_PIN); delay(100); } diff --git a/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp b/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp index 10555762b1..c148617785 100644 --- a/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp +++ b/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp @@ -74,7 +74,7 @@ uint32_t TFT_SPI::ReadID(uint16_t Reg) { WRITE(TFT_CS_PIN, LOW); WriteReg(Reg); - LOOP_L_N(i, 4) { + for (uint8_t i = 0; i < 4; ++i) { SPIx.read((uint8_t*)&d, 1); data = (data << 8) | d; } diff --git a/Marlin/src/HAL/LPC1768/u8g/u8g_com_HAL_LPC1768_sw_spi.cpp b/Marlin/src/HAL/LPC1768/u8g/u8g_com_HAL_LPC1768_sw_spi.cpp index 785b4ef5c4..f6ed7b0e7e 100644 --- a/Marlin/src/HAL/LPC1768/u8g/u8g_com_HAL_LPC1768_sw_spi.cpp +++ b/Marlin/src/HAL/LPC1768/u8g/u8g_com_HAL_LPC1768_sw_spi.cpp @@ -75,7 +75,7 @@ uint8_t swSpiTransfer_mode_0(uint8_t b, const uint8_t spi_speed, const pin_t sck_pin, const pin_t miso_pin, const pin_t mosi_pin ) { - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { if (spi_speed == 0) { LPC176x::gpio_set(mosi_pin, !!(b & 0x80)); LPC176x::gpio_set(sck_pin, HIGH); @@ -85,16 +85,16 @@ uint8_t swSpiTransfer_mode_0(uint8_t b, const uint8_t spi_speed, const pin_t sck } else { const uint8_t state = (b & 0x80) ? HIGH : LOW; - LOOP_L_N(j, spi_speed) + for (uint8_t j = 0; j < spi_speed; ++j) LPC176x::gpio_set(mosi_pin, state); - LOOP_L_N(j, spi_speed + (miso_pin >= 0 ? 0 : 1)) + for (uint8_t j = 0; j < spi_speed + (miso_pin >= 0 ? 0 : 1); ++j) LPC176x::gpio_set(sck_pin, HIGH); b <<= 1; if (miso_pin >= 0 && LPC176x::gpio_get(miso_pin)) b |= 1; - LOOP_L_N(j, spi_speed) + for (uint8_t j = 0; j < spi_speed; ++j) LPC176x::gpio_set(sck_pin, LOW); } } @@ -104,7 +104,7 @@ uint8_t swSpiTransfer_mode_0(uint8_t b, const uint8_t spi_speed, const pin_t sck uint8_t swSpiTransfer_mode_3(uint8_t b, const uint8_t spi_speed, const pin_t sck_pin, const pin_t miso_pin, const pin_t mosi_pin ) { - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { const uint8_t state = (b & 0x80) ? HIGH : LOW; if (spi_speed == 0) { LPC176x::gpio_set(sck_pin, LOW); @@ -113,13 +113,13 @@ uint8_t swSpiTransfer_mode_3(uint8_t b, const uint8_t spi_speed, const pin_t sck LPC176x::gpio_set(sck_pin, HIGH); } else { - LOOP_L_N(j, spi_speed + (miso_pin >= 0 ? 0 : 1)) + for (uint8_t j = 0; j < spi_speed + (miso_pin >= 0 ? 0 : 1); ++j) LPC176x::gpio_set(sck_pin, LOW); - LOOP_L_N(j, spi_speed) + for (uint8_t j = 0; j < spi_speed; ++j) LPC176x::gpio_set(mosi_pin, state); - LOOP_L_N(j, spi_speed) + for (uint8_t j = 0; j < spi_speed; ++j) LPC176x::gpio_set(sck_pin, HIGH); } b <<= 1; diff --git a/Marlin/src/HAL/NATIVE_SIM/u8g/u8g_com_sw_spi.cpp b/Marlin/src/HAL/NATIVE_SIM/u8g/u8g_com_sw_spi.cpp index 5187a49583..9184e2f618 100644 --- a/Marlin/src/HAL/NATIVE_SIM/u8g/u8g_com_sw_spi.cpp +++ b/Marlin/src/HAL/NATIVE_SIM/u8g/u8g_com_sw_spi.cpp @@ -70,7 +70,7 @@ #endif uint8_t swSpiTransfer_mode_0(uint8_t b, const uint8_t spi_speed, const pin_t sck_pin, const pin_t miso_pin, const pin_t mosi_pin ) { - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { if (spi_speed == 0) { WRITE_PIN(mosi_pin, !!(b & 0x80)); WRITE_PIN(sck_pin, HIGH); @@ -80,16 +80,16 @@ uint8_t swSpiTransfer_mode_0(uint8_t b, const uint8_t spi_speed, const pin_t sck } else { const uint8_t state = (b & 0x80) ? HIGH : LOW; - LOOP_L_N(j, spi_speed) + for (uint8_t j = 0; j < spi_speed; ++j) WRITE_PIN(mosi_pin, state); - LOOP_L_N(j, spi_speed + (miso_pin >= 0 ? 0 : 1)) + for (uint8_t j = 0; j < spi_speed + (miso_pin >= 0 ? 0 : 1); ++j) WRITE_PIN(sck_pin, HIGH); b <<= 1; if (miso_pin >= 0 && READ_PIN(miso_pin)) b |= 1; - LOOP_L_N(j, spi_speed) + for (uint8_t j = 0; j < spi_speed; ++j) WRITE_PIN(sck_pin, LOW); } } @@ -99,7 +99,7 @@ uint8_t swSpiTransfer_mode_0(uint8_t b, const uint8_t spi_speed, const pin_t sck uint8_t swSpiTransfer_mode_3(uint8_t b, const uint8_t spi_speed, const pin_t sck_pin, const pin_t miso_pin, const pin_t mosi_pin ) { - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { const uint8_t state = (b & 0x80) ? HIGH : LOW; if (spi_speed == 0) { WRITE_PIN(sck_pin, LOW); @@ -108,13 +108,13 @@ uint8_t swSpiTransfer_mode_3(uint8_t b, const uint8_t spi_speed, const pin_t sck WRITE_PIN(sck_pin, HIGH); } else { - LOOP_L_N(j, spi_speed + (miso_pin >= 0 ? 0 : 1)) + for (uint8_t j = 0; j < spi_speed + (miso_pin >= 0 ? 0 : 1); ++j) WRITE_PIN(sck_pin, LOW); - LOOP_L_N(j, spi_speed) + for (uint8_t j = 0; j < spi_speed; ++j) WRITE_PIN(mosi_pin, state); - LOOP_L_N(j, spi_speed) + for (uint8_t j = 0; j < spi_speed; ++j) WRITE_PIN(sck_pin, HIGH); } b <<= 1; diff --git a/Marlin/src/HAL/SAMD51/HAL.cpp b/Marlin/src/HAL/SAMD51/HAL.cpp index bc7a9b6d91..8ec5d5a86c 100644 --- a/Marlin/src/HAL/SAMD51/HAL.cpp +++ b/Marlin/src/HAL/SAMD51/HAL.cpp @@ -650,10 +650,10 @@ void MarlinHAL::adc_init() { #if ADC_IS_REQUIRED memset(adc_results, 0xFF, sizeof(adc_results)); // Fill result with invalid values - LOOP_L_N(pi, COUNT(adc_pins)) + for (uint8_t pi = 0; pi < COUNT(adc_pins); ++pi) pinPeripheral(adc_pins[pi], PIO_ANALOG); - LOOP_S_LE_N(ai, FIRST_ADC, LAST_ADC) { + for (uint8_t ai = FIRST_ADC; ai <= LAST_ADC; ++ai) { Adc* adc = ((Adc*[])ADC_INSTS)[ai]; // ADC clock setup @@ -685,7 +685,7 @@ void MarlinHAL::adc_init() { void MarlinHAL::adc_start(const pin_t pin) { #if ADC_IS_REQUIRED - LOOP_L_N(pi, COUNT(adc_pins)) + for (uint8_t pi = 0; pi < COUNT(adc_pins); ++pi) if (pin == adc_pins[pi]) { adc_result = adc_results[pi]; return; } #endif diff --git a/Marlin/src/HAL/STM32/fastio.cpp b/Marlin/src/HAL/STM32/fastio.cpp index b34555b8c8..a4b3ba70c9 100644 --- a/Marlin/src/HAL/STM32/fastio.cpp +++ b/Marlin/src/HAL/STM32/fastio.cpp @@ -29,7 +29,7 @@ GPIO_TypeDef* FastIOPortMap[LastPort + 1] = { 0 }; void FastIO_init() { - LOOP_L_N(i, NUM_DIGITAL_PINS) + for (uint8_t i = 0; i < NUM_DIGITAL_PINS; ++i) FastIOPortMap[STM_PORT(digitalPin[i])] = get_GPIO_Port(STM_PORT(digitalPin[i])); } diff --git a/Marlin/src/HAL/STM32/tft/gt911.cpp b/Marlin/src/HAL/STM32/tft/gt911.cpp index 82b7c5b103..6809f66200 100644 --- a/Marlin/src/HAL/STM32/tft/gt911.cpp +++ b/Marlin/src/HAL/STM32/tft/gt911.cpp @@ -90,7 +90,7 @@ bool SW_IIC::read_ack() { } void SW_IIC::send_byte(uint8_t txd) { - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { write_sda(txd & 0x80); // write data bit txd <<= 1; iic_delay(1); @@ -107,7 +107,7 @@ uint8_t SW_IIC::read_byte(bool ack) { uint8_t data = 0; set_sda_in(); - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { write_scl(HIGH); // SCL = 1 iic_delay(1); data <<= 1; @@ -128,12 +128,12 @@ SW_IIC GT911::sw_iic = SW_IIC(GT911_SW_I2C_SDA_PIN, GT911_SW_I2C_SCL_PIN); void GT911::write_reg(uint16_t reg, uint8_t reg_len, uint8_t* w_data, uint8_t w_len) { sw_iic.start(); sw_iic.send_byte(gt911_slave_address); // Set IIC Slave address - LOOP_L_N(i, reg_len) { // Set reg address + for (uint8_t i = 0; i < reg_len; ++i) { // Set reg address uint8_t r = (reg >> (8 * (reg_len - 1 - i))) & 0xFF; sw_iic.send_byte(r); } - LOOP_L_N(i, w_len) { // Write data to reg + for (uint8_t i = 0; i < w_len; ++i) { // Write data to reg sw_iic.send_byte(w_data[i]); } sw_iic.stop(); @@ -142,7 +142,7 @@ void GT911::write_reg(uint16_t reg, uint8_t reg_len, uint8_t* w_data, uint8_t w_ void GT911::read_reg(uint16_t reg, uint8_t reg_len, uint8_t* r_data, uint8_t r_len) { sw_iic.start(); sw_iic.send_byte(gt911_slave_address); // Set IIC Slave address - LOOP_L_N(i, reg_len) { // Set reg address + for (uint8_t i = 0; i < reg_len; ++i) { // Set reg address uint8_t r = (reg >> (8 * (reg_len - 1 - i))) & 0xFF; sw_iic.send_byte(r); } @@ -150,7 +150,7 @@ void GT911::read_reg(uint16_t reg, uint8_t reg_len, uint8_t* r_data, uint8_t r_l sw_iic.start(); sw_iic.send_byte(gt911_slave_address + 1); // Set read mode - LOOP_L_N(i, r_len) + for (uint8_t i = 0; i < r_len; ++i) r_data[i] = sw_iic.read_byte(1); // Read data from reg sw_iic.stop(); diff --git a/Marlin/src/HAL/STM32/timers.cpp b/Marlin/src/HAL/STM32/timers.cpp index 27ced33db2..54506cb451 100644 --- a/Marlin/src/HAL/STM32/timers.cpp +++ b/Marlin/src/HAL/STM32/timers.cpp @@ -316,8 +316,8 @@ static constexpr struct { TimerPurpose p; int t; } timers_in_use[] = { }; static constexpr bool verify_no_timer_conflicts() { - LOOP_L_N(i, COUNT(timers_in_use)) - LOOP_S_L_N(j, i + 1, COUNT(timers_in_use)) + for (uint8_t i = 0; i < COUNT(timers_in_use); ++i) + for (uint8_t j = i + 1; j < COUNT(timers_in_use); ++j) if (timers_in_use[i].t == timers_in_use[j].t) return false; return true; } diff --git a/Marlin/src/HAL/STM32F1/dogm/u8g_com_stm32duino_swspi.cpp b/Marlin/src/HAL/STM32F1/dogm/u8g_com_stm32duino_swspi.cpp index db9b6f0b1c..c57350aa2e 100644 --- a/Marlin/src/HAL/STM32F1/dogm/u8g_com_stm32duino_swspi.cpp +++ b/Marlin/src/HAL/STM32F1/dogm/u8g_com_stm32duino_swspi.cpp @@ -37,7 +37,7 @@ static uint8_t SPI_speed = LCD_SPI_SPEED; static inline uint8_t swSpiTransfer_mode_0(uint8_t b, const uint8_t spi_speed, const pin_t miso_pin=-1) { - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { if (spi_speed == 0) { WRITE(DOGLCD_MOSI, !!(b & 0x80)); WRITE(DOGLCD_SCK, HIGH); @@ -47,16 +47,16 @@ static inline uint8_t swSpiTransfer_mode_0(uint8_t b, const uint8_t spi_speed, c } else { const uint8_t state = (b & 0x80) ? HIGH : LOW; - LOOP_L_N(j, spi_speed) + for (uint8_t j = 0; j < spi_speed; ++j) WRITE(DOGLCD_MOSI, state); - LOOP_L_N(j, spi_speed + (miso_pin >= 0 ? 0 : 1)) + for (uint8_t j = 0; j < spi_speed + (miso_pin >= 0 ? 0 : 1); ++j) WRITE(DOGLCD_SCK, HIGH); b <<= 1; if (miso_pin >= 0 && READ(miso_pin)) b |= 1; - LOOP_L_N(j, spi_speed) + for (uint8_t j = 0; j < spi_speed; ++j) WRITE(DOGLCD_SCK, LOW); } } @@ -64,7 +64,7 @@ static inline uint8_t swSpiTransfer_mode_0(uint8_t b, const uint8_t spi_speed, c } static inline uint8_t swSpiTransfer_mode_3(uint8_t b, const uint8_t spi_speed, const pin_t miso_pin=-1) { - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { const uint8_t state = (b & 0x80) ? HIGH : LOW; if (spi_speed == 0) { WRITE(DOGLCD_SCK, LOW); @@ -73,13 +73,13 @@ static inline uint8_t swSpiTransfer_mode_3(uint8_t b, const uint8_t spi_speed, c WRITE(DOGLCD_SCK, HIGH); } else { - LOOP_L_N(j, spi_speed + (miso_pin >= 0 ? 0 : 1)) + for (uint8_t j = 0; j < spi_speed + (miso_pin >= 0 ? 0 : 1); ++j) WRITE(DOGLCD_SCK, LOW); - LOOP_L_N(j, spi_speed) + for (uint8_t j = 0; j < spi_speed; ++j) WRITE(DOGLCD_MOSI, state); - LOOP_L_N(j, spi_speed) + for (uint8_t j = 0; j < spi_speed; ++j) WRITE(DOGLCD_SCK, HIGH); } b <<= 1; diff --git a/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp b/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp index 5264aabef6..a68b2b98f8 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp +++ b/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp @@ -101,7 +101,7 @@ uint32_t TFT_SPI::ReadID(uint16_t Reg) { DataTransferBegin(DATASIZE_8BIT); WriteReg(Reg); - LOOP_L_N(i, 4) { + for (uint8_t i = 0; i < 4; ++i) { uint8_t d; SPIx.read(&d, 1); data = (data << 8) | d; diff --git a/Marlin/src/HAL/shared/servo.cpp b/Marlin/src/HAL/shared/servo.cpp index b838800de6..bb9d618018 100644 --- a/Marlin/src/HAL/shared/servo.cpp +++ b/Marlin/src/HAL/shared/servo.cpp @@ -67,7 +67,7 @@ uint8_t ServoCount = 0; // the total number of attached static bool anyTimerChannelActive(const timer16_Sequence_t timer) { // returns true if any servo is active on this timer - LOOP_L_N(channel, SERVOS_PER_TIMER) { + for (uint8_t channel = 0; channel < SERVOS_PER_TIMER; ++channel) { if (SERVO(timer, channel).Pin.isActive) return true; } diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 6184109030..ac5a6b7ff9 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -321,7 +321,7 @@ bool pin_is_protected(const pin_t pin) { static constexpr size_t pincount = OnlyPins::size; static const pin_t (&sensitive_pins)[pincount] PROGMEM = OnlyPins::table; #endif - LOOP_L_N(i, pincount) { + for (uint8_t i = 0; i < pincount; ++i) { const pin_t * const pptr = &sensitive_pins[i]; if (pin == (sizeof(pin_t) == 2 ? (pin_t)pgm_read_word(pptr) : (pin_t)pgm_read_byte(pptr))) return true; } @@ -800,7 +800,7 @@ void idle(const bool no_stepper_sleep/*=false*/) { // Run StallGuard endstop checks #if ENABLED(SPI_ENDSTOPS) if (endstops.tmc_spi_homing.any && TERN1(IMPROVE_HOMING_RELIABILITY, ELAPSED(millis(), sg_guard_period))) - LOOP_L_N(i, 4) if (endstops.tmc_spi_homing_check()) break; // Read SGT 4 times per idle loop + for (uint8_t i = 0; i < 4; ++i) if (endstops.tmc_spi_homing_check()) break; // Read SGT 4 times per idle loop #endif // Handle SD Card insert / remove diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h index c44d60843a..565de2436c 100644 --- a/Marlin/src/core/macros.h +++ b/Marlin/src/core/macros.h @@ -326,11 +326,6 @@ #define _JOIN_1(O) (O) #define JOIN_N(N,C,V...) (DO(JOIN,C,LIST_N(N,V))) -#define LOOP_S_LE_N(VAR, S, N) for (uint8_t VAR=(S); VAR<=(N); VAR++) -#define LOOP_S_L_N(VAR, S, N) for (uint8_t VAR=(S); VAR<(N); VAR++) -#define LOOP_LE_N(VAR, N) LOOP_S_LE_N(VAR, 0, N) -#define LOOP_L_N(VAR, N) LOOP_S_L_N(VAR, 0, N) - #define NOOP (void(0)) #define CEILING(x,y) (((x) + (y) - 1) / (y)) diff --git a/Marlin/src/core/serial_base.h b/Marlin/src/core/serial_base.h index 059b424284..fa0a2298f7 100644 --- a/Marlin/src/core/serial_base.h +++ b/Marlin/src/core/serial_base.h @@ -234,7 +234,7 @@ struct SerialBase { // Round correctly so that print(1.999, 2) prints as "2.00" double rounding = 0.5; - LOOP_L_N(i, digits) rounding *= 0.1; + for (uint8_t i = 0; i < digits; ++i) rounding *= 0.1; number += rounding; // Extract the integer part of the number and print it diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 9581558604..7b5837efb8 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -246,11 +246,11 @@ enum AxisEnum : uint8_t { // // Loop over axes // -#define LOOP_ABC(VAR) LOOP_S_LE_N(VAR, A_AXIS, C_AXIS) -#define LOOP_NUM_AXES(VAR) LOOP_S_L_N(VAR, 0, NUM_AXES) -#define LOOP_LOGICAL_AXES(VAR) LOOP_S_L_N(VAR, 0, LOGICAL_AXES) -#define LOOP_DISTINCT_AXES(VAR) LOOP_S_L_N(VAR, 0, DISTINCT_AXES) -#define LOOP_DISTINCT_E(VAR) LOOP_L_N(VAR, DISTINCT_E) +#define LOOP_ABC(VAR) for (uint8_t VAR = A_AXIS; VAR <= C_AXIS; ++VAR) +#define LOOP_NUM_AXES(VAR) for (uint8_t VAR = 0; VAR < NUM_AXES; ++VAR) +#define LOOP_LOGICAL_AXES(VAR) for (uint8_t VAR = 0; VAR < LOGICAL_AXES; ++VAR) +#define LOOP_DISTINCT_AXES(VAR) for (uint8_t VAR = 0; VAR < DISTINCT_AXES; ++VAR) +#define LOOP_DISTINCT_E(VAR) for (uint8_t VAR = 0; VAR < DISTINCT_E; ++VAR) // // feedRate_t is just a humble float diff --git a/Marlin/src/feature/babystep.h b/Marlin/src/feature/babystep.h index 70a529a0c3..df88da6e14 100644 --- a/Marlin/src/feature/babystep.h +++ b/Marlin/src/feature/babystep.h @@ -95,7 +95,7 @@ public: // apply accumulated babysteps to the axes. // static void task() { - LOOP_LE_N(i, BS_AXIS_IND(Z_AXIS)) step_axis(BS_AXIS(i)); + for (uint8_t i = 0; i <= BS_AXIS_IND(Z_AXIS); ++i) step_axis(BS_AXIS(i)); } private: diff --git a/Marlin/src/feature/bedlevel/abl/bbl.cpp b/Marlin/src/feature/bedlevel/abl/bbl.cpp index 6ef3945fa5..14c4bd24bc 100644 --- a/Marlin/src/feature/bedlevel/abl/bbl.cpp +++ b/Marlin/src/feature/bedlevel/abl/bbl.cpp @@ -133,8 +133,8 @@ void LevelingBilinear::extrapolate_unprobed_bed_level() { yend = ctry1; #endif - LOOP_LE_N(xo, xend) - LOOP_LE_N(yo, yend) { + for (uint8_t xo = 0; xo <= xend; ++xo) + for (uint8_t yo = 0; yo <= yend; ++yo) { uint8_t x2 = ctrx2 + xo, y2 = ctry2 + yo; #ifndef HALF_IN_X const uint8_t x1 = ctrx1 - xo; @@ -231,8 +231,8 @@ void LevelingBilinear::print_leveling_grid(const bed_mesh_t* _z_values/*=nullptr float LevelingBilinear::virt_2cmr(const uint8_t x, const uint8_t y, const_float_t tx, const_float_t ty) { float row[4], column[4]; - LOOP_L_N(i, 4) { - LOOP_L_N(j, 4) { + for (uint8_t i = 0; i < 4; ++i) { + for (uint8_t j = 0; j < 4; ++j) { column[j] = virt_coord(i + x - 1, j + y - 1); } row[i] = virt_cmr(column, 1, ty); @@ -243,10 +243,10 @@ void LevelingBilinear::print_leveling_grid(const bed_mesh_t* _z_values/*=nullptr void LevelingBilinear::subdivide_mesh() { grid_spacing_virt = grid_spacing / (BILINEAR_SUBDIVISIONS); grid_factor_virt = grid_spacing_virt.reciprocal(); - LOOP_L_N(y, GRID_MAX_POINTS_Y) - LOOP_L_N(x, GRID_MAX_POINTS_X) - LOOP_L_N(ty, BILINEAR_SUBDIVISIONS) - LOOP_L_N(tx, BILINEAR_SUBDIVISIONS) { + for (uint8_t y = 0; y < GRID_MAX_POINTS_Y; ++y) + for (uint8_t x = 0; x < GRID_MAX_POINTS_X; ++x) + for (uint8_t ty = 0; ty < BILINEAR_SUBDIVISIONS; ++ty) + for (uint8_t tx = 0; tx < BILINEAR_SUBDIVISIONS; ++tx) { if ((ty && y == (GRID_MAX_POINTS_Y) - 1) || (tx && x == (GRID_MAX_POINTS_X) - 1)) continue; z_values_virt[x * (BILINEAR_SUBDIVISIONS) + tx][y * (BILINEAR_SUBDIVISIONS) + ty] = diff --git a/Marlin/src/feature/bedlevel/bedlevel.cpp b/Marlin/src/feature/bedlevel/bedlevel.cpp index 0bb8b8191a..17407eafb9 100644 --- a/Marlin/src/feature/bedlevel/bedlevel.cpp +++ b/Marlin/src/feature/bedlevel/bedlevel.cpp @@ -137,7 +137,7 @@ void reset_bed_level() { */ void print_2d_array(const uint8_t sx, const uint8_t sy, const uint8_t precision, const float *values) { #ifndef SCAD_MESH_OUTPUT - LOOP_L_N(x, sx) { + for (uint8_t x = 0; x < sx; ++x) { serial_spaces(precision + (x < 10 ? 3 : 2)); SERIAL_ECHO(x); } @@ -146,14 +146,14 @@ void reset_bed_level() { #ifdef SCAD_MESH_OUTPUT SERIAL_ECHOLNPGM("measured_z = ["); // open 2D array #endif - LOOP_L_N(y, sy) { + for (uint8_t y = 0; y < sy; ++y) { #ifdef SCAD_MESH_OUTPUT SERIAL_ECHOPGM(" ["); // open sub-array #else if (y < 10) SERIAL_CHAR(' '); SERIAL_ECHO(y); #endif - LOOP_L_N(x, sx) { + for (uint8_t x = 0; x < sx; ++x) { SERIAL_CHAR(' '); const float offset = values[x * sy + y]; if (!isnan(offset)) { @@ -166,7 +166,7 @@ void reset_bed_level() { SERIAL_CHAR(' '); SERIAL_ECHOPGM("NAN"); #else - LOOP_L_N(i, precision + 3) + for (uint8_t i = 0; i < precision + 3; ++i) SERIAL_CHAR(i ? '=' : ' '); #endif } diff --git a/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.cpp b/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.cpp index 193cbbf765..787827bb9b 100644 --- a/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.cpp +++ b/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.cpp @@ -40,9 +40,9 @@ mesh_bed_leveling::index_to_ypos[GRID_MAX_POINTS_Y]; mesh_bed_leveling::mesh_bed_leveling() { - LOOP_L_N(i, GRID_MAX_POINTS_X) + for (uint8_t i = 0; i < GRID_MAX_POINTS_X; ++i) index_to_xpos[i] = MESH_MIN_X + i * (MESH_X_DIST); - LOOP_L_N(i, GRID_MAX_POINTS_Y) + for (uint8_t i = 0; i < GRID_MAX_POINTS_Y; ++i) index_to_ypos[i] = MESH_MIN_Y + i * (MESH_Y_DIST); reset(); } diff --git a/Marlin/src/feature/bedlevel/ubl/ubl.cpp b/Marlin/src/feature/bedlevel/ubl/ubl.cpp index ca519f86b4..b99334795d 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl.cpp @@ -149,7 +149,7 @@ static void serial_echo_xy(const uint8_t sp, const int16_t x, const int16_t y) { static void serial_echo_column_labels(const uint8_t sp) { SERIAL_ECHO_SP(7); - LOOP_L_N(i, GRID_MAX_POINTS_X) { + for (uint8_t i = 0; i < GRID_MAX_POINTS_X; ++i) { if (i < 10) SERIAL_CHAR(' '); SERIAL_ECHO(i); SERIAL_ECHO_SP(sp); @@ -199,7 +199,7 @@ void unified_bed_leveling::display_map(const uint8_t map_type) { } // Row Values (I indexes) - LOOP_L_N(i, GRID_MAX_POINTS_X) { + for (uint8_t i = 0; i < GRID_MAX_POINTS_X; ++i) { // Opening Brace or Space const bool is_current = i == curr.x && j == curr.y; diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index ecbf76ec6e..551277c35d 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -396,7 +396,7 @@ void unified_bed_leveling::G29() { break; case 1: - LOOP_L_N(x, GRID_MAX_POINTS_X) { // Create a diagonal line several Mesh cells thick that is raised + for (uint8_t x = 0; x < GRID_MAX_POINTS_X; ++x) { // Create a diagonal line several Mesh cells thick that is raised const uint8_t x2 = x + (x < (GRID_MAX_POINTS_Y) - 1 ? 1 : -1); z_values[x][x] += 9.999f; z_values[x][x2] += 9.999f; // We want the altered line several mesh points thick @@ -1445,7 +1445,7 @@ void unified_bed_leveling::smart_fill_mesh() { info3 PROGMEM = { (GRID_MAX_POINTS_X) - 1, 0, 0, GRID_MAX_POINTS_Y, true }; // Right side of the mesh looking left static const smart_fill_info * const info[] PROGMEM = { &info0, &info1, &info2, &info3 }; - LOOP_L_N(i, COUNT(info)) { + for (uint8_t i = 0; i < COUNT(info); ++i) { const smart_fill_info *f = (smart_fill_info*)pgm_read_ptr(&info[i]); const int8_t sx = pgm_read_byte(&f->sx), sy = pgm_read_byte(&f->sy), ex = pgm_read_byte(&f->ex), ey = pgm_read_byte(&f->ey); @@ -1484,7 +1484,7 @@ void unified_bed_leveling::smart_fill_mesh() { #if ENABLED(UBL_TILT_ON_MESH_POINTS_3POINT) mesh_index_pair cpos[3]; - LOOP_L_N(ix, 3) { // Convert points to coordinates of mesh points + for (uint8_t ix = 0; ix < 3; ++ix) { // Convert points to coordinates of mesh points cpos[ix] = find_closest_mesh_point_of_type(REAL, points[ix], true); points[ix] = cpos[ix].meshpos(); } @@ -1494,7 +1494,7 @@ void unified_bed_leveling::smart_fill_mesh() { float gotz[3]; // Used for algorithm validation below #endif - LOOP_L_N(i, 3) { + for (uint8_t i = 0; i < 3; ++i) { SERIAL_ECHOLNPGM("Tilting mesh (", i + 1, "/3)"); TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " %i/3"), GET_TEXT(MSG_LCD_TILTING_MESH), i + 1)); @@ -1534,10 +1534,10 @@ void unified_bed_leveling::smart_fill_mesh() { const uint16_t total_points = sq(param.J_grid_size); uint16_t point_num = 1; - LOOP_L_N(ix, param.J_grid_size) { + for (uint8_t ix = 0; ix < param.J_grid_size; ++ix) { xy_pos_t rpos; rpos.x = x_min + ix * dx; - LOOP_L_N(iy, param.J_grid_size) { + for (uint8_t iy = 0; iy < param.J_grid_size; ++iy) { rpos.y = y_min + dy * (zig_zag ? param.J_grid_size - 1 - iy : iy); #if ENABLED(UBL_TILT_ON_MESH_POINTS) @@ -1714,17 +1714,17 @@ void unified_bed_leveling::smart_fill_mesh() { GRID_LOOP(jx, jy) if (!isnan(z_values[jx][jy])) SBI(bitmap[jx], jy); xy_pos_t ppos; - LOOP_L_N(ix, GRID_MAX_POINTS_X) { + for (uint8_t ix = 0; ix < GRID_MAX_POINTS_X; ++ix) { ppos.x = get_mesh_x(ix); - LOOP_L_N(iy, GRID_MAX_POINTS_Y) { + for (uint8_t iy = 0; iy < GRID_MAX_POINTS_Y; ++iy) { ppos.y = get_mesh_y(iy); if (isnan(z_values[ix][iy])) { // undefined mesh point at (ppos.x,ppos.y), compute weighted LSF from original valid mesh points. incremental_LSF_reset(&lsf_results); xy_pos_t rpos; - LOOP_L_N(jx, GRID_MAX_POINTS_X) { + for (uint8_t jx = 0; jx < GRID_MAX_POINTS_X; ++jx) { rpos.x = get_mesh_x(jx); - LOOP_L_N(jy, GRID_MAX_POINTS_Y) { + for (uint8_t jy = 0; jy < GRID_MAX_POINTS_Y; ++jy) { if (TEST(bitmap[jx], jy)) { rpos.y = get_mesh_y(jy); const float rz = z_values[jx][jy], @@ -1784,7 +1784,7 @@ void unified_bed_leveling::smart_fill_mesh() { SERIAL_ECHOLNPGM("MESH_Y_DIST ", MESH_Y_DIST); serial_delay(50); SERIAL_ECHOPGM("X-Axis Mesh Points at: "); - LOOP_L_N(i, GRID_MAX_POINTS_X) { + for (uint8_t i = 0; i < GRID_MAX_POINTS_X; ++i) { SERIAL_ECHO_F(LOGICAL_X_POSITION(get_mesh_x(i)), 3); SERIAL_ECHOPGM(" "); serial_delay(25); @@ -1792,7 +1792,7 @@ void unified_bed_leveling::smart_fill_mesh() { SERIAL_EOL(); SERIAL_ECHOPGM("Y-Axis Mesh Points at: "); - LOOP_L_N(i, GRID_MAX_POINTS_Y) { + for (uint8_t i = 0; i < GRID_MAX_POINTS_Y; ++i) { SERIAL_ECHO_F(LOGICAL_Y_POSITION(get_mesh_y(i)), 3); SERIAL_ECHOPGM(" "); serial_delay(25); diff --git a/Marlin/src/feature/digipot/digipot_mcp4018.cpp b/Marlin/src/feature/digipot/digipot_mcp4018.cpp index 3f2ecbfcdc..f776c5a339 100644 --- a/Marlin/src/feature/digipot/digipot_mcp4018.cpp +++ b/Marlin/src/feature/digipot/digipot_mcp4018.cpp @@ -89,7 +89,7 @@ void DigipotI2C::set_current(const uint8_t channel, const float current) { } void DigipotI2C::init() { - LOOP_L_N(i, DIGIPOT_I2C_NUM_CHANNELS) pots[i].i2c_init(); + for (uint8_t i = 0; i < DIGIPOT_I2C_NUM_CHANNELS; ++i) pots[i].i2c_init(); // Init currents according to Configuration_adv.h static const float digipot_motor_current[] PROGMEM = @@ -99,7 +99,7 @@ void DigipotI2C::init() { DIGIPOT_I2C_MOTOR_CURRENTS #endif ; - LOOP_L_N(i, COUNT(digipot_motor_current)) + for (uint8_t i = 0; i < COUNT(digipot_motor_current); ++i) set_current(i, pgm_read_float(&digipot_motor_current[i])); } diff --git a/Marlin/src/feature/digipot/digipot_mcp4451.cpp b/Marlin/src/feature/digipot/digipot_mcp4451.cpp index ba5ecdad05..7416fe9f8d 100644 --- a/Marlin/src/feature/digipot/digipot_mcp4451.cpp +++ b/Marlin/src/feature/digipot/digipot_mcp4451.cpp @@ -94,7 +94,7 @@ void DigipotI2C::init() { DIGIPOT_I2C_MOTOR_CURRENTS #endif ; - LOOP_L_N(i, COUNT(digipot_motor_current)) + for (uint8_t i = 0; i < COUNT(digipot_motor_current); ++i) set_current(i, pgm_read_float(&digipot_motor_current[i])); } diff --git a/Marlin/src/feature/encoder_i2c.cpp b/Marlin/src/feature/encoder_i2c.cpp index b1ff21cf92..1c01e1c23b 100644 --- a/Marlin/src/feature/encoder_i2c.cpp +++ b/Marlin/src/feature/encoder_i2c.cpp @@ -138,7 +138,7 @@ void I2CPositionEncoder::update() { errIdx = (errIdx >= I2CPE_ERR_ARRAY_SIZE - 1) ? 0 : errIdx + 1; err[errIdx] = get_axis_error_steps(false); - LOOP_L_N(i, I2CPE_ERR_ARRAY_SIZE) { + for (uint8_t i = 0; i < I2CPE_ERR_ARRAY_SIZE; ++i) { sum += err[i]; if (i) diffSum += ABS(err[i-1] - err[i]); } @@ -170,7 +170,7 @@ void I2CPositionEncoder::update() { errPrst[errPrstIdx++] = error; // Error must persist for I2CPE_ERR_PRST_ARRAY_SIZE error cycles. This also serves to improve the average accuracy if (errPrstIdx >= I2CPE_ERR_PRST_ARRAY_SIZE) { float sumP = 0; - LOOP_L_N(i, I2CPE_ERR_PRST_ARRAY_SIZE) sumP += errPrst[i]; + for (uint8_t i = 0; i < I2CPE_ERR_PRST_ARRAY_SIZE; ++i) sumP += errPrst[i]; const int32_t errorP = int32_t(sumP * RECIPROCAL(I2CPE_ERR_PRST_ARRAY_SIZE)); SERIAL_CHAR(AXIS_CHAR(encoderAxis)); SERIAL_ECHOLNPGM(" : CORRECT ERR ", errorP * planner.mm_per_step[encoderAxis], "mm"); @@ -404,7 +404,7 @@ void I2CPositionEncoder::calibrate_steps_mm(const uint8_t iter) { planner.synchronize(); - LOOP_L_N(i, iter) { + for (uint8_t i = 0; i < iter; ++i) { TERN_(HAS_EXTRUDERS, startCoord.e = planner.get_axis_position_mm(E_AXIS)); planner.buffer_line(startCoord, fr_mm_s, 0); planner.synchronize(); diff --git a/Marlin/src/feature/encoder_i2c.h b/Marlin/src/feature/encoder_i2c.h index f25fe2ea6b..1ae05d1433 100644 --- a/Marlin/src/feature/encoder_i2c.h +++ b/Marlin/src/feature/encoder_i2c.h @@ -90,7 +90,7 @@ #define I2CPE_PARSE_ERR 1 #define I2CPE_PARSE_OK 0 -#define LOOP_PE(VAR) LOOP_L_N(VAR, I2CPE_ENCODER_CNT) +#define LOOP_PE(VAR) for (uint8_t VAR = 0; VAR < I2CPE_ENCODER_CNT; ++VAR) #define CHECK_IDX() do{ if (!WITHIN(idx, 0, I2CPE_ENCODER_CNT - 1)) return; }while(0) typedef union { diff --git a/Marlin/src/feature/fancheck.cpp b/Marlin/src/feature/fancheck.cpp index 126b79b0a4..844191e7e4 100644 --- a/Marlin/src/feature/fancheck.cpp +++ b/Marlin/src/feature/fancheck.cpp @@ -72,7 +72,7 @@ void FanCheck::update_tachometers() { bool status; #define _TACHO_CASE(N) case N: status = READ(E##N##_FAN_TACHO_PIN); break; - LOOP_L_N(f, TACHO_COUNT) { + for (uint8_t f = 0; f < TACHO_COUNT; ++f) { switch (f) { #if HAS_E0_FAN_TACHO _TACHO_CASE(0) @@ -113,7 +113,7 @@ void FanCheck::compute_speed(uint16_t elapsedTime) { static uint8_t fan_reported_errors_msk = 0; uint8_t fan_error_msk = 0; - LOOP_L_N(f, TACHO_COUNT) { + for (uint8_t f = 0; f < TACHO_COUNT; ++f) { switch (f) { TERN_(HAS_E0_FAN_TACHO, case 0:) TERN_(HAS_E1_FAN_TACHO, case 1:) @@ -150,7 +150,7 @@ void FanCheck::compute_speed(uint16_t elapsedTime) { if (fan_error_msk & ~fan_reported_errors_msk) { // Handle new faults only - LOOP_L_N(f, TACHO_COUNT) if (TEST(fan_error_msk, f)) report_speed_error(f); + for (uint8_t f = 0; f < TACHO_COUNT; ++f) if (TEST(fan_error_msk, f)) report_speed_error(f); } fan_reported_errors_msk = fan_error_msk; } @@ -176,8 +176,8 @@ void FanCheck::report_speed_error(uint8_t fan) { } void FanCheck::print_fan_states() { - LOOP_L_N(s, 2) { - LOOP_L_N(f, TACHO_COUNT) { + for (uint8_t s = 0; s < 2; ++s) { + for (uint8_t f = 0; f < TACHO_COUNT; ++f) { switch (f) { TERN_(HAS_E0_FAN_TACHO, case 0:) TERN_(HAS_E1_FAN_TACHO, case 1:) diff --git a/Marlin/src/feature/filwidth.cpp b/Marlin/src/feature/filwidth.cpp index 2bd9c78980..3befd7752a 100644 --- a/Marlin/src/feature/filwidth.cpp +++ b/Marlin/src/feature/filwidth.cpp @@ -42,7 +42,7 @@ int8_t FilamentWidthSensor::ratios[MAX_MEASUREMENT_DELAY + 1], // Ring void FilamentWidthSensor::init() { const int8_t ratio = sample_to_size_ratio(); - LOOP_L_N(i, COUNT(ratios)) ratios[i] = ratio; + for (uint8_t i = 0; i < COUNT(ratios); ++i) ratios[i] = ratio; index_r = index_w = 0; } diff --git a/Marlin/src/feature/leds/leds.cpp b/Marlin/src/feature/leds/leds.cpp index 45810a31ab..7305581cd0 100644 --- a/Marlin/src/feature/leds/leds.cpp +++ b/Marlin/src/feature/leds/leds.cpp @@ -76,8 +76,8 @@ void LEDLights::setup() { #endif delay(200); - LOOP_L_N(i, led_pin_count) { - LOOP_LE_N(b, 200) { + for (uint8_t i = 0; i < led_pin_count; ++i) { + for (uint8_t b = 0; b <= 200; ++b) { const uint16_t led_pwm = b <= 100 ? b : 200 - b; if (i == 0 && PWM_PIN(RGB_LED_R_PIN)) hal.set_pwm_duty(pin_t(RGB_LED_R_PIN), led_pwm); else WRITE(RGB_LED_R_PIN, b < 100 ? HIGH : LOW); if (i == 1 && PWM_PIN(RGB_LED_G_PIN)) hal.set_pwm_duty(pin_t(RGB_LED_G_PIN), led_pwm); else WRITE(RGB_LED_G_PIN, b < 100 ? HIGH : LOW); @@ -118,7 +118,7 @@ void LEDLights::setup() { while (led_pin_counters[0] != 99 || !canEnd) { if (led_pin_counters[0] == 99) // End loop next time pin0 counter is 99 canEnd = true; - LOOP_L_N(i, led_pin_count) { + for (uint8_t i = 0; i < led_pin_count; ++i) { if (led_pin_counters[i] > 0) { if (++led_pin_counters[i] == 400) // turn off current pin counter in led_pin_counters led_pin_counters[i] = 0; @@ -140,7 +140,7 @@ void LEDLights::setup() { } // Fade to white - LOOP_LE_N(led_pwm, 100) { + for (uint8_t led_pwm = 0; led_pwm <= 100; ++led_pwm) { NOLESS(curColor.r, led_pwm); NOLESS(curColor.g, led_pwm); NOLESS(curColor.b, led_pwm); diff --git a/Marlin/src/feature/max7219.cpp b/Marlin/src/feature/max7219.cpp index efc992f80f..d3328855f4 100644 --- a/Marlin/src/feature/max7219.cpp +++ b/Marlin/src/feature/max7219.cpp @@ -156,7 +156,7 @@ void Max7219::error(FSTR_P const func, const int32_t v1, const int32_t v2/*=-1*/ */ inline uint32_t flipped(const uint32_t bits, const uint8_t n_bytes) { uint32_t mask = 1, outbits = 0; - LOOP_L_N(b, n_bytes * 8) { + for (uint8_t b = 0; b < n_bytes * 8; ++b) { outbits <<= 1; if (bits & mask) outbits |= 1; mask <<= 1; @@ -339,13 +339,13 @@ void Max7219::fill() { void Max7219::clear_row(const uint8_t row) { if (row >= MAX7219_Y_LEDS) return error(F("clear_row"), row); - LOOP_L_N(x, MAX7219_X_LEDS) CLR_7219(x, row); + for (uint8_t x = 0; x < MAX7219_X_LEDS; ++x) CLR_7219(x, row); send_row(row); } void Max7219::clear_column(const uint8_t col) { if (col >= MAX7219_X_LEDS) return error(F("set_column"), col); - LOOP_L_N(y, MAX7219_Y_LEDS) CLR_7219(col, y); + for (uint8_t y = 0; y < MAX7219_Y_LEDS; ++y) CLR_7219(col, y); send_column(col); } @@ -357,7 +357,7 @@ void Max7219::clear_column(const uint8_t col) { void Max7219::set_row(const uint8_t row, const uint32_t val) { if (row >= MAX7219_Y_LEDS) return error(F("set_row"), row); uint32_t mask = _BV32(MAX7219_X_LEDS - 1); - LOOP_L_N(x, MAX7219_X_LEDS) { + for (uint8_t x = 0; x < MAX7219_X_LEDS; ++x) { if (val & mask) SET_7219(x, row); else CLR_7219(x, row); mask >>= 1; } @@ -372,7 +372,7 @@ void Max7219::set_row(const uint8_t row, const uint32_t val) { void Max7219::set_column(const uint8_t col, const uint32_t val) { if (col >= MAX7219_X_LEDS) return error(F("set_column"), col); uint32_t mask = _BV32(MAX7219_Y_LEDS - 1); - LOOP_L_N(y, MAX7219_Y_LEDS) { + for (uint8_t y = 0; y < MAX7219_Y_LEDS; ++y) { if (val & mask) SET_7219(col, y); else CLR_7219(col, y); mask >>= 1; } @@ -437,23 +437,23 @@ void Max7219::set_columns_32bits(const uint8_t x, uint32_t val) { // Initialize the Max7219 void Max7219::register_setup() { - LOOP_L_N(i, MAX7219_NUMBER_UNITS) + for (uint8_t i = 0; i < MAX7219_NUMBER_UNITS; ++i) send(max7219_reg_scanLimit, 0x07); pulse_load(); // Tell the chips to load the clocked out data - LOOP_L_N(i, MAX7219_NUMBER_UNITS) + for (uint8_t i = 0; i < MAX7219_NUMBER_UNITS; ++i) send(max7219_reg_decodeMode, 0x00); // Using an led matrix (not digits) pulse_load(); // Tell the chips to load the clocked out data - LOOP_L_N(i, MAX7219_NUMBER_UNITS) + for (uint8_t i = 0; i < MAX7219_NUMBER_UNITS; ++i) send(max7219_reg_shutdown, 0x01); // Not in shutdown mode pulse_load(); // Tell the chips to load the clocked out data - LOOP_L_N(i, MAX7219_NUMBER_UNITS) + for (uint8_t i = 0; i < MAX7219_NUMBER_UNITS; ++i) send(max7219_reg_displayTest, 0x00); // No display test pulse_load(); // Tell the chips to load the clocked out data - LOOP_L_N(i, MAX7219_NUMBER_UNITS) + for (uint8_t i = 0; i < MAX7219_NUMBER_UNITS; ++i) send(max7219_reg_intensity, 0x01 & 0x0F); // The first 0x0F is the value you can set // Range: 0x00 to 0x0F pulse_load(); // Tell the chips to load the clocked out data @@ -740,7 +740,7 @@ void Max7219::idle_tasks() { // batch line updates suspended--; if (!suspended) - LOOP_L_N(i, 8) if (row_change_mask & _BV(i)) + for (uint8_t i = 0; i < 8; ++i) if (row_change_mask & _BV(i)) refresh_line(i); // After resume() automatically do a refresh() diff --git a/Marlin/src/feature/mixing.cpp b/Marlin/src/feature/mixing.cpp index 7c9c54a314..1ce4892248 100644 --- a/Marlin/src/feature/mixing.cpp +++ b/Marlin/src/feature/mixing.cpp @@ -94,13 +94,13 @@ void Mixer::normalize(const uint8_t tool_index) { void Mixer::reset_vtools() { // Virtual Tools 0, 1, 2, 3 = Filament 1, 2, 3, 4, etc. // Every virtual tool gets a pure filament - LOOP_L_N(t, _MIN(MIXING_VIRTUAL_TOOLS, MIXING_STEPPERS)) + for (uint8_t t = 0; t < _MIN(MIXING_VIRTUAL_TOOLS, MIXING_STEPPERS); ++t) MIXER_STEPPER_LOOP(i) color[t][i] = (t == i) ? COLOR_A_MASK : 0; // Remaining virtual tools are 100% filament 1 #if MIXING_VIRTUAL_TOOLS > MIXING_STEPPERS - LOOP_S_L_N(t, MIXING_STEPPERS, MIXING_VIRTUAL_TOOLS) + for (uint8_t t = MIXING_STEPPERS; t < MIXING_VIRTUAL_TOOLS; ++t) MIXER_STEPPER_LOOP(i) color[t][i] = (i == 0) ? COLOR_A_MASK : 0; #endif diff --git a/Marlin/src/feature/mmu/mmu2.cpp b/Marlin/src/feature/mmu/mmu2.cpp index fbfcf3fd3f..ea1a33ddaa 100644 --- a/Marlin/src/feature/mmu/mmu2.cpp +++ b/Marlin/src/feature/mmu/mmu2.cpp @@ -403,7 +403,7 @@ void MMU2::tx_str(FSTR_P fstr) { void MMU2::tx_printf(FSTR_P format, int argument = -1) { clear_rx_buffer(); const uint8_t len = sprintf_P(tx_buffer, FTOP(format), argument); - LOOP_L_N(i, len) MMU2_SERIAL.write(tx_buffer[i]); + for (uint8_t i = 0; i < len; ++i) MMU2_SERIAL.write(tx_buffer[i]); prev_request = millis(); } @@ -413,7 +413,7 @@ void MMU2::tx_printf(FSTR_P format, int argument = -1) { void MMU2::tx_printf(FSTR_P format, int argument1, int argument2) { clear_rx_buffer(); const uint8_t len = sprintf_P(tx_buffer, FTOP(format), argument1, argument2); - LOOP_L_N(i, len) MMU2_SERIAL.write(tx_buffer[i]); + for (uint8_t i = 0; i < len; ++i) MMU2_SERIAL.write(tx_buffer[i]); prev_request = millis(); } @@ -467,7 +467,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); } bool MMU2::load_to_gears() { command(MMU_CMD_C0); manage_response(true, true); - LOOP_L_N(i, MMU2_C0_RETRY) { // Keep loading until filament reaches gears + for (uint8_t i = 0; i < MMU2_C0_RETRY; ++i) { // Keep loading until filament reaches gears if (mmu2s_triggered) break; command(MMU_CMD_C0); manage_response(true, true); @@ -900,7 +900,7 @@ void MMU2::filament_runout() { int filament_detected_count = 0; const int steps = (MMU2_CAN_LOAD_RETRACT) / (MMU2_CAN_LOAD_INCREMENT); DEBUG_ECHOLNPGM("MMU can_load:"); - LOOP_L_N(i, steps) { + for (uint8_t i = 0; i < steps; ++i) { execute_extruder_sequence(can_load_increment_sequence, COUNT(can_load_increment_sequence)); check_filament(); // Don't trust the idle function DEBUG_CHAR(mmu2s_triggered ? 'O' : 'o'); @@ -1047,7 +1047,7 @@ void MMU2::execute_extruder_sequence(const E_Step * sequence, int steps) { const E_Step *step = sequence; - LOOP_L_N(i, steps) { + for (uint8_t i = 0; i < steps; ++i) { const float es = pgm_read_float(&(step->extrude)); const feedRate_t fr_mm_m = pgm_read_float(&(step->feedRate)); DEBUG_ECHO_MSG("E step ", es, "/", fr_mm_m); diff --git a/Marlin/src/feature/powerloss.cpp b/Marlin/src/feature/powerloss.cpp index 24ff2b2195..af85a16448 100644 --- a/Marlin/src/feature/powerloss.cpp +++ b/Marlin/src/feature/powerloss.cpp @@ -630,7 +630,7 @@ void PrintJobRecovery::resume() { #if ENABLED(GCODE_REPEAT_MARKERS) DEBUG_ECHOLNPGM("repeat index: ", info.stored_repeat.index); - LOOP_L_N(i, info.stored_repeat.index) + for (uint8_t i = 0; i < info.stored_repeat.index; ++i) DEBUG_ECHOLNPGM("..... sdpos: ", info.stored_repeat.marker.sdpos, " count: ", info.stored_repeat.marker.counter); #endif diff --git a/Marlin/src/feature/probe_temp_comp.cpp b/Marlin/src/feature/probe_temp_comp.cpp index b5f636e698..2b362a2186 100644 --- a/Marlin/src/feature/probe_temp_comp.cpp +++ b/Marlin/src/feature/probe_temp_comp.cpp @@ -66,13 +66,13 @@ float ProbeTempComp::init_measurement; // = 0.0 bool ProbeTempComp::enabled = true; void ProbeTempComp::reset() { - TERN_(PTC_PROBE, LOOP_L_N(i, PTC_PROBE_COUNT) z_offsets_probe[i] = z_offsets_probe_default[i]); - TERN_(PTC_BED, LOOP_L_N(i, PTC_BED_COUNT) z_offsets_bed[i] = z_offsets_bed_default[i]); - TERN_(PTC_HOTEND, LOOP_L_N(i, PTC_HOTEND_COUNT) z_offsets_hotend[i] = z_offsets_hotend_default[i]); + TERN_(PTC_PROBE, for (uint8_t i = 0; i < PTC_PROBE_COUNT; ++i) z_offsets_probe[i] = z_offsets_probe_default[i]); + TERN_(PTC_BED, for (uint8_t i = 0; i < PTC_BED_COUNT; ++i) z_offsets_bed[i] = z_offsets_bed_default[i]); + TERN_(PTC_HOTEND, for (uint8_t i = 0; i < PTC_HOTEND_COUNT; ++i) z_offsets_hotend[i] = z_offsets_hotend_default[i]); } void ProbeTempComp::clear_offsets(const TempSensorID tsi) { - LOOP_L_N(i, cali_info[tsi].measurements) + for (uint8_t i = 0; i < cali_info[tsi].measurements; ++i) sensor_z_offsets[tsi][i] = 0; calib_idx = 0; } @@ -84,7 +84,7 @@ bool ProbeTempComp::set_offset(const TempSensorID tsi, const uint8_t idx, const } void ProbeTempComp::print_offsets() { - LOOP_L_N(s, TSI_COUNT) { + for (uint8_t s = 0; s < TSI_COUNT; ++s) { celsius_t temp = cali_info[s].start_temp; for (int16_t i = -1; i < cali_info[s].measurements; ++i) { SERIAL_ECHOF( @@ -232,7 +232,7 @@ bool ProbeTempComp::linear_regression(const TempSensorID tsi, float &k, float &d sum_xy = 0, sum_y = 0; float xi = static_cast(start_temp); - LOOP_L_N(i, calib_idx) { + for (uint8_t i = 0; i < calib_idx; ++i) { const float yi = static_cast(data[i]); xi += res_temp; sum_x += xi; diff --git a/Marlin/src/feature/repeat.cpp b/Marlin/src/feature/repeat.cpp index fed7ac0908..4484dab95b 100644 --- a/Marlin/src/feature/repeat.cpp +++ b/Marlin/src/feature/repeat.cpp @@ -66,7 +66,7 @@ void Repeat::loop() { } } -void Repeat::cancel() { LOOP_L_N(i, index) marker[i].counter = 0; } +void Repeat::cancel() { for (uint8_t i = 0; i < index; ++i) marker[i].counter = 0; } void Repeat::early_parse_M808(char * const cmd) { if (is_command_M808(cmd)) { diff --git a/Marlin/src/feature/repeat.h b/Marlin/src/feature/repeat.h index fc11e4a9e2..8a54149b3d 100644 --- a/Marlin/src/feature/repeat.h +++ b/Marlin/src/feature/repeat.h @@ -40,7 +40,7 @@ private: public: static void reset() { index = 0; } static bool is_active() { - LOOP_L_N(i, index) if (marker[i].counter) return true; + for (uint8_t i = 0; i < index; ++i) if (marker[i].counter) return true; return false; } static bool is_command_M808(char * const cmd) { return cmd[0] == 'M' && cmd[1] == '8' && cmd[2] == '0' && cmd[3] == '8' && !NUMERIC(cmd[4]); } diff --git a/Marlin/src/feature/runout.h b/Marlin/src/feature/runout.h index e160f88905..ea17cbc442 100644 --- a/Marlin/src/feature/runout.h +++ b/Marlin/src/feature/runout.h @@ -155,7 +155,7 @@ class TFilamentMonitor : public FilamentMonitorBase { #if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG) if (runout_flags) { SERIAL_ECHOPGM("Runout Sensors: "); - LOOP_L_N(i, 8) SERIAL_ECHO('0' + TEST(runout_flags, i)); + for (uint8_t i = 0; i < 8; ++i) SERIAL_ECHO('0' + TEST(runout_flags, i)); SERIAL_ECHOPGM(" -> ", extruder); if (ran_out) SERIAL_ECHOPGM(" RUN OUT"); SERIAL_EOL(); @@ -255,7 +255,7 @@ class FilamentSensorBase { #if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG) if (change) { SERIAL_ECHOPGM("Motion detected:"); - LOOP_L_N(e, TERN(FILAMENT_SWITCH_AND_MOTION, NUM_MOTION_SENSORS, NUM_RUNOUT_SENSORS)) + for (uint8_t e = 0; e < TERN(FILAMENT_SWITCH_AND_MOTION, NUM_MOTION_SENSORS, NUM_RUNOUT_SENSORS); ++e) if (TEST(change, e)) SERIAL_CHAR(' ', '0' + e); SERIAL_EOL(); } @@ -304,7 +304,7 @@ class FilamentSensorBase { static void block_completed(const block_t * const) {} static void run() { - LOOP_L_N(s, NUM_RUNOUT_SENSORS) { + for (uint8_t s = 0; s < NUM_RUNOUT_SENSORS; ++s) { const bool out = poll_runout_state(s); if (!out) filament_present(s); #if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG) @@ -364,9 +364,9 @@ class FilamentSensorBase { static float runout_distance_mm; static void reset() { - LOOP_L_N(i, NUM_RUNOUT_SENSORS) filament_present(i); + for (uint8_t i = 0; i < NUM_RUNOUT_SENSORS; ++i) filament_present(i); #if ENABLED(FILAMENT_SWITCH_AND_MOTION) - LOOP_L_N(i, NUM_MOTION_SENSORS) filament_motion_present(i); + for (uint8_t i = 0; i < NUM_MOTION_SENSORS; ++i) filament_motion_present(i); #endif } @@ -376,10 +376,10 @@ class FilamentSensorBase { const millis_t ms = millis(); if (ELAPSED(ms, t)) { t = millis() + 1000UL; - LOOP_L_N(i, NUM_RUNOUT_SENSORS) + for (uint8_t i = 0; i < NUM_RUNOUT_SENSORS; ++i) SERIAL_ECHOF(i ? F(", ") : F("Runout remaining mm: "), mm_countdown.runout[i]); #if ENABLED(FILAMENT_SWITCH_AND_MOTION) - LOOP_L_N(i, NUM_MOTION_SENSORS) + for (uint8_t i = 0; i < NUM_MOTION_SENSORS; ++i) SERIAL_ECHOF(i ? F(", ") : F("Motion remaining mm: "), mm_countdown.motion[i]); #endif SERIAL_EOL(); @@ -389,9 +389,9 @@ class FilamentSensorBase { static uint8_t has_run_out() { uint8_t runout_flags = 0; - LOOP_L_N(i, NUM_RUNOUT_SENSORS) if (mm_countdown.runout[i] < 0) SBI(runout_flags, i); + for (uint8_t i = 0; i < NUM_RUNOUT_SENSORS; ++i) if (mm_countdown.runout[i] < 0) SBI(runout_flags, i); #if ENABLED(FILAMENT_SWITCH_AND_MOTION) - LOOP_L_N(i, NUM_MOTION_SENSORS) if (mm_countdown.motion[i] < 0) SBI(runout_flags, i); + for (uint8_t i = 0; i < NUM_MOTION_SENSORS; ++i) if (mm_countdown.motion[i] < 0) SBI(runout_flags, i); #endif return runout_flags; } @@ -432,16 +432,16 @@ class FilamentSensorBase { public: static void reset() { - LOOP_L_N(i, NUM_RUNOUT_SENSORS) filament_present(i); + for (uint8_t i = 0; i < NUM_RUNOUT_SENSORS; ++i) filament_present(i); } static void run() { - LOOP_L_N(i, NUM_RUNOUT_SENSORS) if (runout_count[i] >= 0) runout_count[i]--; + for (uint8_t i = 0; i < NUM_RUNOUT_SENSORS; ++i) if (runout_count[i] >= 0) runout_count[i]--; } static uint8_t has_run_out() { uint8_t runout_flags = 0; - LOOP_L_N(i, NUM_RUNOUT_SENSORS) if (runout_count[i] < 0) SBI(runout_flags, i); + for (uint8_t i = 0; i < NUM_RUNOUT_SENSORS; ++i) if (runout_count[i] < 0) SBI(runout_flags, i); return runout_flags; } diff --git a/Marlin/src/feature/twibus.cpp b/Marlin/src/feature/twibus.cpp index 9aec6b0305..4aedb4b5f3 100644 --- a/Marlin/src/feature/twibus.cpp +++ b/Marlin/src/feature/twibus.cpp @@ -145,7 +145,7 @@ void TWIBus::echodata(uint8_t bytes, FSTR_P const pref, uint8_t adr, const uint8 void TWIBus::echobuffer(FSTR_P const prefix, uint8_t adr) { echoprefix(buffer_s, prefix, adr); - LOOP_L_N(i, buffer_s) SERIAL_CHAR(buffer[i]); + for (uint8_t i = 0; i < buffer_s; ++i) SERIAL_CHAR(buffer[i]); SERIAL_EOL(); } diff --git a/Marlin/src/feature/x_twist.cpp b/Marlin/src/feature/x_twist.cpp index b5ad25cba8..b8f7e52ab6 100644 --- a/Marlin/src/feature/x_twist.cpp +++ b/Marlin/src/feature/x_twist.cpp @@ -43,12 +43,12 @@ void XATC::reset() { void XATC::print_points() { SERIAL_ECHOLNPGM(" X-Twist Correction:"); - LOOP_L_N(x, XATC_MAX_POINTS) { + for (uint8_t x = 0; x < XATC_MAX_POINTS; ++x) { SERIAL_CHAR(' '); if (!isnan(z_offset[x])) serial_offset(z_offset[x]); else - LOOP_L_N(i, 6) SERIAL_CHAR(i ? '=' : ' '); + for (uint8_t i = 0; i < 6; ++i) SERIAL_CHAR(i ? '=' : ' '); } SERIAL_EOL(); } diff --git a/Marlin/src/gcode/bedlevel/G26.cpp b/Marlin/src/gcode/bedlevel/G26.cpp index 1b55bdb428..30643cb84e 100644 --- a/Marlin/src/gcode/bedlevel/G26.cpp +++ b/Marlin/src/gcode/bedlevel/G26.cpp @@ -707,7 +707,7 @@ void GcodeSuite::G26() { #error "A_CNT must be a positive value. Please change A_INT." #endif float trig_table[A_CNT]; - LOOP_L_N(i, A_CNT) + for (uint8_t i = 0; i < A_CNT; ++i) trig_table[i] = INTERSECTION_CIRCLE_RADIUS * cos(RADIANS(i * A_INT)); #endif // !ARC_SUPPORT diff --git a/Marlin/src/gcode/bedlevel/G35.cpp b/Marlin/src/gcode/bedlevel/G35.cpp index 901e97ab75..9c1ee472ec 100644 --- a/Marlin/src/gcode/bedlevel/G35.cpp +++ b/Marlin/src/gcode/bedlevel/G35.cpp @@ -97,7 +97,7 @@ void GcodeSuite::G35() { bool err_break = false; // Probe all positions - LOOP_L_N(i, G35_PROBE_COUNT) { + for (uint8_t i = 0; i < G35_PROBE_COUNT; ++i) { const float z_probed_height = probe.probe_at_point(tramming_points[i], PROBE_PT_RAISE); if (isnan(z_probed_height)) { SERIAL_ECHOPGM("G35 failed at point ", i + 1, " ("); @@ -122,7 +122,7 @@ void GcodeSuite::G35() { const float threads_factor[] = { 0.5, 0.7, 0.8 }; // Calculate adjusts - LOOP_S_L_N(i, 1, G35_PROBE_COUNT) { + for (uint8_t i = 1; i < G35_PROBE_COUNT; ++i) { const float diff = z_measured[0] - z_measured[i], adjust = ABS(diff) < 0.001f ? 0 : diff / threads_factor[(screw_thread - 30) / 10]; diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index 5c86f4b991..ca02fc9765 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -728,7 +728,7 @@ G29_TYPE GcodeSuite::G29() { // Probe at 3 arbitrary points - LOOP_L_N(i, 3) { + for (uint8_t i = 0; i < 3; ++i) { if (abl.verbose_level) SERIAL_ECHOLNPGM("Probing point ", i + 1, "/3."); TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " %i/3"), GET_TEXT(MSG_PROBING_POINT), int(i + 1))); @@ -839,7 +839,7 @@ G29_TYPE GcodeSuite::G29() { auto print_topo_map = [&](FSTR_P const title, const bool get_min) { SERIAL_ECHOF(title); for (int8_t yy = abl.grid_points.y - 1; yy >= 0; yy--) { - LOOP_L_N(xx, abl.grid_points.x) { + for (uint8_t xx = 0; xx < abl.grid_points.x; ++xx) { const int ind = abl.indexIntoAB[xx][yy]; xyz_float_t tmp = { abl.eqnAMatrix[ind + 0 * abl.abl_points], abl.eqnAMatrix[ind + 1 * abl.abl_points], 0 }; diff --git a/Marlin/src/gcode/bedlevel/abl/M421.cpp b/Marlin/src/gcode/bedlevel/abl/M421.cpp index 3272ea1bd2..f66d023190 100644 --- a/Marlin/src/gcode/bedlevel/abl/M421.cpp +++ b/Marlin/src/gcode/bedlevel/abl/M421.cpp @@ -56,8 +56,8 @@ void GcodeSuite::M421() { const float zval = parser.value_linear_units(); uint8_t sx = ix >= 0 ? ix : 0, ex = ix >= 0 ? ix : GRID_MAX_POINTS_X - 1, sy = iy >= 0 ? iy : 0, ey = iy >= 0 ? iy : GRID_MAX_POINTS_Y - 1; - LOOP_S_LE_N(x, sx, ex) { - LOOP_S_LE_N(y, sy, ey) { + for (uint8_t x = sx; x <= ex; ++x) { + for (uint8_t y = sy; y <= ey; ++y) { bedlevel.z_values[x][y] = zval + (hasQ ? bedlevel.z_values[x][y] : 0); TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(x, y, bedlevel.z_values[x][y])); } diff --git a/Marlin/src/gcode/calibrate/G34_M422.cpp b/Marlin/src/gcode/calibrate/G34_M422.cpp index a878db2edf..7650443de8 100644 --- a/Marlin/src/gcode/calibrate/G34_M422.cpp +++ b/Marlin/src/gcode/calibrate/G34_M422.cpp @@ -204,7 +204,7 @@ void GcodeSuite::G34() { float z_measured_max = -100000.0f; // Probe all positions (one per Z-Stepper) - LOOP_L_N(i, NUM_Z_STEPPERS) { + for (uint8_t i = 0; i < NUM_Z_STEPPERS; ++i) { // iteration odd/even --> downward / upward stepper sequence const uint8_t iprobe = (iteration & 1) ? NUM_Z_STEPPERS - 1 - i : i; @@ -255,14 +255,14 @@ void GcodeSuite::G34() { // This allows the actual adjustment logic to be shared by both algorithms. linear_fit_data lfd; incremental_LSF_reset(&lfd); - LOOP_L_N(i, NUM_Z_STEPPERS) { + for (uint8_t i = 0; i < NUM_Z_STEPPERS; ++i) { SERIAL_ECHOLNPGM("PROBEPT_", i, ": ", z_measured[i]); incremental_LSF(&lfd, z_stepper_align.xy[i], z_measured[i]); } finish_incremental_LSF(&lfd); z_measured_min = 100000.0f; - LOOP_L_N(i, NUM_Z_STEPPERS) { + for (uint8_t i = 0; i < NUM_Z_STEPPERS; ++i) { z_measured[i] = -(lfd.A * z_stepper_align.stepper_xy[i].x + lfd.B * z_stepper_align.stepper_xy[i].y + lfd.D); z_measured_min = _MIN(z_measured_min, z_measured[i]); } @@ -330,12 +330,12 @@ void GcodeSuite::G34() { // Calculate mean value as a reference float z_measured_mean = 0.0f; - LOOP_L_N(zstepper, NUM_Z_STEPPERS) z_measured_mean += z_measured[zstepper]; + for (uint8_t zstepper = 0; zstepper < NUM_Z_STEPPERS; ++zstepper) z_measured_mean += z_measured[zstepper]; z_measured_mean /= NUM_Z_STEPPERS; // Calculate the sum of the absolute deviations from the mean value float z_align_level_indicator = 0.0f; - LOOP_L_N(zstepper, NUM_Z_STEPPERS) + for (uint8_t zstepper = 0; zstepper < NUM_Z_STEPPERS; ++zstepper) z_align_level_indicator += ABS(z_measured[zstepper] - z_measured_mean); // If it's getting worse, stop and throw an error @@ -350,7 +350,7 @@ void GcodeSuite::G34() { bool success_break = true; // Correct the individual stepper offsets - LOOP_L_N(zstepper, NUM_Z_STEPPERS) { + for (uint8_t zstepper = 0; zstepper < NUM_Z_STEPPERS; ++zstepper) { // Calculate current stepper move float z_align_move = z_measured[zstepper] - z_measured_min; const float z_align_abs = ABS(z_align_move); @@ -529,7 +529,7 @@ void GcodeSuite::M422() { void GcodeSuite::M422_report(const bool forReplay/*=true*/) { report_heading(forReplay, F(STR_Z_AUTO_ALIGN)); - LOOP_L_N(i, NUM_Z_STEPPERS) { + for (uint8_t i = 0; i < NUM_Z_STEPPERS; ++i) { report_echo_start(forReplay); SERIAL_ECHOLNPGM_P( PSTR(" M422 S"), i + 1, @@ -538,7 +538,7 @@ void GcodeSuite::M422_report(const bool forReplay/*=true*/) { ); } #if HAS_Z_STEPPER_ALIGN_STEPPER_XY - LOOP_L_N(i, NUM_Z_STEPPERS) { + for (uint8_t i = 0; i < NUM_Z_STEPPERS; ++i) { report_echo_start(forReplay); SERIAL_ECHOLNPGM_P( PSTR(" M422 W"), i + 1, diff --git a/Marlin/src/gcode/calibrate/G425.cpp b/Marlin/src/gcode/calibrate/G425.cpp index ef055498a9..fb211ad88c 100644 --- a/Marlin/src/gcode/calibrate/G425.cpp +++ b/Marlin/src/gcode/calibrate/G425.cpp @@ -171,7 +171,7 @@ inline void park_above_object(measurements_t &m, const float uncertainty) { #if HAS_HOTEND_OFFSET inline void normalize_hotend_offsets() { - LOOP_S_L_N(e, 1, HOTENDS) + for (uint8_t e = 1; e < HOTENDS; ++e) hotend_offset[e] -= hotend_offset[0]; hotend_offset[0].reset(); } @@ -618,7 +618,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) { // This function requires normalize_hotend_offsets() to be called // inline void report_hotend_offsets() { - LOOP_S_L_N(e, 1, HOTENDS) + for (uint8_t e = 1; e < HOTENDS; ++e) SERIAL_ECHOLNPGM_P(PSTR("T"), e, PSTR(" Hotend Offset X"), hotend_offset[e].x, SP_Y_STR, hotend_offset[e].y, SP_Z_STR, hotend_offset[e].z); } #endif diff --git a/Marlin/src/gcode/calibrate/M100.cpp b/Marlin/src/gcode/calibrate/M100.cpp index 9141d360e1..3791c69f88 100644 --- a/Marlin/src/gcode/calibrate/M100.cpp +++ b/Marlin/src/gcode/calibrate/M100.cpp @@ -163,14 +163,14 @@ inline int32_t count_test_bytes(const char * const start_free_memory) { while (start_free_memory < end_free_memory) { print_hex_address(start_free_memory); // Print the address SERIAL_CHAR(':'); - LOOP_L_N(i, 16) { // and 16 data bytes + for (uint8_t i = 0; i < 16; ++i) { // and 16 data bytes if (i == 8) SERIAL_CHAR('-'); print_hex_byte(start_free_memory[i]); SERIAL_CHAR(' '); } serial_delay(25); SERIAL_CHAR('|'); // Point out non test bytes - LOOP_L_N(i, 16) { + for (uint8_t i = 0; i < 16; ++i) { char ccc = (char)start_free_memory[i]; // cast to char before automatically casting to char on assignment, in case the compiler is broken ccc = (ccc == TEST_BYTE) ? ' ' : '?'; SERIAL_CHAR(ccc); diff --git a/Marlin/src/gcode/calibrate/M48.cpp b/Marlin/src/gcode/calibrate/M48.cpp index 701e938697..2748d4e7ba 100644 --- a/Marlin/src/gcode/calibrate/M48.cpp +++ b/Marlin/src/gcode/calibrate/M48.cpp @@ -148,7 +148,7 @@ void GcodeSuite::M48() { float sample_sum = 0.0; - LOOP_L_N(n, n_samples) { + for (uint8_t n = 0; n < n_samples; ++n) { #if HAS_STATUS_MESSAGE // Display M48 progress in the status bar ui.status_printf(0, F(S_FMT ": %d/%d"), GET_TEXT(MSG_M48_POINT), int(n + 1), int(n_samples)); @@ -175,7 +175,7 @@ void GcodeSuite::M48() { } // Move from leg to leg in rapid succession - LOOP_L_N(l, n_legs - 1) { + for (uint8_t l = 0; l < n_legs - 1; ++l) { // Move some distance around the perimeter float delta_angle; @@ -243,7 +243,7 @@ void GcodeSuite::M48() { // Calculate the standard deviation so far. // The value after the last sample will be the final output. float dev_sum = 0.0; - LOOP_LE_N(j, n) dev_sum += sq(sample_set[j] - mean); + for (uint8_t j = 0; j <= n; ++j) dev_sum += sq(sample_set[j] - mean); sigma = SQRT(dev_sum / (n + 1)); if (verbose_level > 1) { diff --git a/Marlin/src/gcode/config/M200-M205.cpp b/Marlin/src/gcode/config/M200-M205.cpp index 8383be6914..e5e1edf326 100644 --- a/Marlin/src/gcode/config/M200-M205.cpp +++ b/Marlin/src/gcode/config/M200-M205.cpp @@ -168,7 +168,7 @@ void GcodeSuite::M201_report(const bool forReplay/*=true*/) { #endif #if ENABLED(DISTINCT_E_FACTORS) - LOOP_L_N(i, E_STEPPERS) { + for (uint8_t i = 0; i < E_STEPPERS; ++i) { report_echo_start(forReplay); SERIAL_ECHOLNPGM_P( PSTR(" M201 T"), i @@ -224,7 +224,7 @@ void GcodeSuite::M203_report(const bool forReplay/*=true*/) { #endif #if ENABLED(DISTINCT_E_FACTORS) - LOOP_L_N(i, E_STEPPERS) { + for (uint8_t i = 0; i < E_STEPPERS; ++i) { if (!forReplay) SERIAL_ECHO_START(); SERIAL_ECHOLNPGM_P( PSTR(" M203 T"), i diff --git a/Marlin/src/gcode/config/M218.cpp b/Marlin/src/gcode/config/M218.cpp index 62295f5771..d645685701 100644 --- a/Marlin/src/gcode/config/M218.cpp +++ b/Marlin/src/gcode/config/M218.cpp @@ -64,7 +64,7 @@ void GcodeSuite::M218() { void GcodeSuite::M218_report(const bool forReplay/*=true*/) { report_heading_etc(forReplay, F(STR_HOTEND_OFFSETS)); - LOOP_S_L_N(e, 1, HOTENDS) { + for (uint8_t e = 1; e < HOTENDS; ++e) { report_echo_start(forReplay); SERIAL_ECHOPGM_P( PSTR(" M218 T"), e, diff --git a/Marlin/src/gcode/config/M281.cpp b/Marlin/src/gcode/config/M281.cpp index e4ef3ab40b..2e7f08fe86 100644 --- a/Marlin/src/gcode/config/M281.cpp +++ b/Marlin/src/gcode/config/M281.cpp @@ -56,7 +56,7 @@ void GcodeSuite::M281() { void GcodeSuite::M281_report(const bool forReplay/*=true*/) { report_heading_etc(forReplay, F(STR_SERVO_ANGLES)); - LOOP_L_N(i, NUM_SERVOS) { + for (uint8_t i = 0; i < NUM_SERVOS; ++i) { switch (i) { default: break; #if ENABLED(SWITCHING_EXTRUDER) diff --git a/Marlin/src/gcode/config/M305.cpp b/Marlin/src/gcode/config/M305.cpp index e7746923b3..48d7cf1882 100644 --- a/Marlin/src/gcode/config/M305.cpp +++ b/Marlin/src/gcode/config/M305.cpp @@ -69,7 +69,7 @@ void GcodeSuite::M305() { SERIAL_ECHO_MSG("!Invalid Steinhart-Hart C coeff. (-0.01 < C < +0.01)"); } // If not setting then report parameters else if (t_index < 0) { // ...all user thermistors - LOOP_L_N(i, USER_THERMISTORS) + for (uint8_t i = 0; i < USER_THERMISTORS; ++i) thermalManager.M305_report(i); } else // ...one user thermistor diff --git a/Marlin/src/gcode/config/M43.cpp b/Marlin/src/gcode/config/M43.cpp index 3b95ccd3bb..7daf8afab8 100644 --- a/Marlin/src/gcode/config/M43.cpp +++ b/Marlin/src/gcode/config/M43.cpp @@ -61,7 +61,7 @@ inline void toggle_pins() { end = PARSED_PIN_INDEX('L', NUM_DIGITAL_PINS - 1), wait = parser.intval('W', 500); - LOOP_S_LE_N(i, start, end) { + for (uint8_t i = start; i <= end; ++i) { pin_t pin = GET_PIN_MAP_PIN_M43(i); if (!VALID_PIN(pin)) continue; if (M43_NEVER_TOUCH(i) || (!ignore_protection && pin_is_protected(pin))) { @@ -189,7 +189,7 @@ inline void servo_probe_test() { // DEPLOY and STOW 4 times and see if the signal follows // Then it is a mechanical switch SERIAL_ECHOLNPGM(". Deploy & stow 4 times"); - LOOP_L_N(i, 4) { + for (uint8_t i = 0; i < 4; ++i) { servo[probe_index].move(servo_angles[Z_PROBE_SERVO_NR][0]); // Deploy safe_delay(500); deploy_state = READ(PROBE_TEST_PIN); @@ -328,7 +328,7 @@ void GcodeSuite::M43() { const uint8_t pin_count = last_pin - first_pin + 1; uint8_t pin_state[pin_count]; bool can_watch = false; - LOOP_S_LE_N(i, first_pin, last_pin) { + for (uint8_t i = first_pin; i <= last_pin; ++i) { pin_t pin = GET_PIN_MAP_PIN_M43(i); if (!VALID_PIN(pin)) continue; if (M43_NEVER_TOUCH(i) || (!ignore_protection && pin_is_protected(pin))) continue; @@ -371,7 +371,7 @@ void GcodeSuite::M43() { #endif for (;;) { - LOOP_S_LE_N(i, first_pin, last_pin) { + for (uint8_t i = first_pin; i <= last_pin; ++i) { const pin_t pin = GET_PIN_MAP_PIN_M43(i); if (!VALID_PIN(pin)) continue; if (M43_NEVER_TOUCH(i) || (!ignore_protection && pin_is_protected(pin))) continue; @@ -400,7 +400,7 @@ void GcodeSuite::M43() { } else { // Report current state of selected pin(s) - LOOP_S_LE_N(i, first_pin, last_pin) { + for (uint8_t i = first_pin; i <= last_pin; ++i) { const pin_t pin = GET_PIN_MAP_PIN_M43(i); if (VALID_PIN(pin)) report_pin_state_extended(pin, ignore_protection, true); } diff --git a/Marlin/src/gcode/config/M672.cpp b/Marlin/src/gcode/config/M672.cpp index 257b49471f..064d05d0b6 100644 --- a/Marlin/src/gcode/config/M672.cpp +++ b/Marlin/src/gcode/config/M672.cpp @@ -54,7 +54,7 @@ // b3 b2 b1 b0 ~b0 ... lo bits, NOT last bit // void M672_send(uint8_t b) { // bit rate requirement: 1kHz +/- 30% - LOOP_L_N(bits, 14) { + for (uint8_t bits = 0; bits < 14; ++bits) { switch (bits) { default: { OUT_WRITE(SMART_EFFECTOR_MOD_PIN, !!(b & 0x80)); b <<= 1; break; } // send bit, shift next into place case 7: diff --git a/Marlin/src/gcode/config/M92.cpp b/Marlin/src/gcode/config/M92.cpp index 888a7e5c21..e848665e6b 100644 --- a/Marlin/src/gcode/config/M92.cpp +++ b/Marlin/src/gcode/config/M92.cpp @@ -115,7 +115,7 @@ void GcodeSuite::M92_report(const bool forReplay/*=true*/, const int8_t e/*=-1*/ #endif #if ENABLED(DISTINCT_E_FACTORS) - LOOP_L_N(i, E_STEPPERS) { + for (uint8_t i = 0; i < E_STEPPERS; ++i) { if (e >= 0 && i != e) continue; report_echo_start(forReplay); SERIAL_ECHOLNPGM_P( diff --git a/Marlin/src/gcode/control/M111.cpp b/Marlin/src/gcode/control/M111.cpp index a92d334ae9..02f37f8497 100644 --- a/Marlin/src/gcode/control/M111.cpp +++ b/Marlin/src/gcode/control/M111.cpp @@ -46,7 +46,7 @@ void GcodeSuite::M111() { SERIAL_ECHOPGM(STR_DEBUG_PREFIX); if (marlin_debug_flags) { uint8_t comma = 0; - LOOP_L_N(i, COUNT(debug_strings)) { + for (uint8_t i = 0; i < COUNT(debug_strings); ++i) { if (TEST(marlin_debug_flags, i)) { if (comma++) SERIAL_CHAR(','); SERIAL_ECHOPGM_P((PGM_P)pgm_read_ptr(&debug_strings[i])); diff --git a/Marlin/src/gcode/feature/camera/M240.cpp b/Marlin/src/gcode/feature/camera/M240.cpp index cf2e47ef6d..f79e80bcc2 100644 --- a/Marlin/src/gcode/feature/camera/M240.cpp +++ b/Marlin/src/gcode/feature/camera/M240.cpp @@ -84,7 +84,7 @@ inline void spin_photo_pin() { static constexpr uint32_t sequence[] = PHOTO_PULSES_US; - LOOP_L_N(i, COUNT(sequence)) + for (uint8_t i = 0; i < COUNT(sequence); ++i) pulse_photo_pin(sequence[i], !(i & 1)); } diff --git a/Marlin/src/gcode/feature/digipot/M907-M910.cpp b/Marlin/src/gcode/feature/digipot/M907-M910.cpp index 9ebe713cde..8869f8d494 100644 --- a/Marlin/src/gcode/feature/digipot/M907-M910.cpp +++ b/Marlin/src/gcode/feature/digipot/M907-M910.cpp @@ -51,7 +51,7 @@ void GcodeSuite::M907() { if (!parser.seen("BS" STR_AXES_LOGICAL)) return M907_report(); - if (parser.seenval('S')) LOOP_L_N(i, MOTOR_CURRENT_COUNT) stepper.set_digipot_current(i, parser.value_int()); + if (parser.seenval('S')) for (uint8_t i = 0; i < MOTOR_CURRENT_COUNT; ++i) stepper.set_digipot_current(i, parser.value_int()); LOOP_LOGICAL_AXES(i) if (parser.seenval(IAXIS_CHAR(i))) stepper.set_digipot_current(i, parser.value_int()); // X Y Z (I J K U V W) E (map to drivers according to DIGIPOT_CHANNELS. Default with NUM_AXES 3: map X Y Z E to X Y Z E0) // Additional extruders use B,C. // TODO: Change these parameters because 'E' is used and D should be reserved for debugging. B? @@ -82,7 +82,7 @@ void GcodeSuite::M907() { #endif )) return M907_report(); - if (parser.seenval('S')) LOOP_L_N(a, MOTOR_CURRENT_COUNT) stepper.set_digipot_current(a, parser.value_int()); + if (parser.seenval('S')) for (uint8_t a = 0; a < MOTOR_CURRENT_COUNT; ++a) stepper.set_digipot_current(a, parser.value_int()); #if HAS_X_Y_XY_I_J_K_U_V_W if (NUM_AXIS_GANG( @@ -104,7 +104,7 @@ void GcodeSuite::M907() { #if HAS_MOTOR_CURRENT_I2C // this one uses actual amps in floating point - if (parser.seenval('S')) LOOP_L_N(q, DIGIPOT_I2C_NUM_CHANNELS) digipot_i2c.set_current(q, parser.value_float()); + if (parser.seenval('S')) for (uint8_t q = 0; q < DIGIPOT_I2C_NUM_CHANNELS; ++q) digipot_i2c.set_current(q, parser.value_float()); LOOP_LOGICAL_AXES(i) if (parser.seenval(IAXIS_CHAR(i))) digipot_i2c.set_current(i, parser.value_float()); // X Y Z (I J K U V W) E (map to drivers according to pots adresses. Default with NUM_AXES 3 X Y Z E: map to X Y Z E0) // Additional extruders use B,C,D. // TODO: Change these parameters because 'E' is used and because 'D' should be reserved for debugging. B? diff --git a/Marlin/src/gcode/feature/leds/M7219.cpp b/Marlin/src/gcode/feature/leds/M7219.cpp index 40d3554dfe..1f74217be3 100644 --- a/Marlin/src/gcode/feature/leds/M7219.cpp +++ b/Marlin/src/gcode/feature/leds/M7219.cpp @@ -79,7 +79,7 @@ void GcodeSuite::M7219() { } if (parser.seen('P')) { - LOOP_L_N(r, MAX7219_LINES) { + for (uint8_t r = 0; r < MAX7219_LINES; ++r) { SERIAL_ECHOPGM("led_line["); if (r < 10) SERIAL_CHAR(' '); SERIAL_ECHO(r); diff --git a/Marlin/src/gcode/feature/network/M552-M554.cpp b/Marlin/src/gcode/feature/network/M552-M554.cpp index 0973fb87bf..ca7ddd0d36 100644 --- a/Marlin/src/gcode/feature/network/M552-M554.cpp +++ b/Marlin/src/gcode/feature/network/M552-M554.cpp @@ -46,7 +46,7 @@ void MAC_report() { if (ethernet.hardware_enabled) { Ethernet.MACAddress(mac); SERIAL_ECHOPGM(" MAC: "); - LOOP_L_N(i, 6) { + for (uint8_t i = 0; i < 6; ++i) { if (mac[i] < 16) SERIAL_CHAR('0'); SERIAL_PRINT(mac[i], PrintBase::Hex); if (i < 5) SERIAL_CHAR(':'); @@ -59,7 +59,7 @@ void MAC_report() { // otherwise show the stored values void ip_report(const uint16_t cmd, FSTR_P const post, const IPAddress &ipo) { SERIAL_CHAR('M'); SERIAL_ECHO(cmd); SERIAL_CHAR(' '); - LOOP_L_N(i, 4) { + for (uint8_t i = 0; i < 4; ++i) { SERIAL_ECHO(ipo[i]); if (i < 3) SERIAL_CHAR('.'); } diff --git a/Marlin/src/gcode/host/M114.cpp b/Marlin/src/gcode/host/M114.cpp index 3a75e687b8..979764f75e 100644 --- a/Marlin/src/gcode/host/M114.cpp +++ b/Marlin/src/gcode/host/M114.cpp @@ -30,7 +30,7 @@ void report_all_axis_pos(const xyze_pos_t &pos, const uint8_t n=LOGICAL_AXES, const uint8_t precision=3) { char str[12]; - LOOP_L_N(a, n) { + for (uint8_t a = 0; a < n; ++a) { SERIAL_ECHOPGM_P((PGM_P)pgm_read_ptr(&SP_AXIS_LBL[a])); if (pos[a] >= 0) SERIAL_CHAR(' '); SERIAL_ECHO(dtostrf(pos[a], 1, precision, str)); diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index 8ca6d07ce2..806e593fcb 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -81,7 +81,7 @@ void GcodeSuite::M115() { // Although this code should work on all STM32 based boards SERIAL_ECHOPGM(" UUID:"); uint32_t *uid_address = (uint32_t*)UID_BASE; - LOOP_L_N(i, 3) { + for (uint8_t i = 0; i < 3; ++i) { const uint32_t UID = uint32_t(READ_REG(*(uid_address))); uid_address += 4U; for (int B = 24; B >= 0; B -= 8) print_hex_byte(UID >> B); diff --git a/Marlin/src/gcode/lcd/M145.cpp b/Marlin/src/gcode/lcd/M145.cpp index 942d20afd2..d72d5d6789 100644 --- a/Marlin/src/gcode/lcd/M145.cpp +++ b/Marlin/src/gcode/lcd/M145.cpp @@ -62,7 +62,7 @@ void GcodeSuite::M145() { void GcodeSuite::M145_report(const bool forReplay/*=true*/) { report_heading(forReplay, F(STR_MATERIAL_HEATUP)); - LOOP_L_N(i, PREHEAT_COUNT) { + for (uint8_t i = 0; i < PREHEAT_COUNT; ++i) { report_echo_start(forReplay); SERIAL_ECHOLNPGM_P( PSTR(" M145 S"), i diff --git a/Marlin/src/gcode/probe/M423.cpp b/Marlin/src/gcode/probe/M423.cpp index fde5aaaf87..7c82a4f8af 100644 --- a/Marlin/src/gcode/probe/M423.cpp +++ b/Marlin/src/gcode/probe/M423.cpp @@ -88,7 +88,7 @@ void GcodeSuite::M423() { void GcodeSuite::M423_report(const bool forReplay/*=true*/) { report_heading(forReplay, F("X-Twist Correction")); SERIAL_ECHOLNPGM(" M423 A", xatc.start, " I", xatc.spacing); - LOOP_L_N(x, XATC_MAX_POINTS) { + for (uint8_t x = 0; x < XATC_MAX_POINTS; ++x) { const float z = xatc.z_offset[x]; SERIAL_ECHOPGM(" M423 X", x, " Z"); serial_offset(isnan(z) ? 0 : z); diff --git a/Marlin/src/gcode/queue.cpp b/Marlin/src/gcode/queue.cpp index b64aa95112..156436b7dd 100644 --- a/Marlin/src/gcode/queue.cpp +++ b/Marlin/src/gcode/queue.cpp @@ -294,7 +294,7 @@ static bool serial_data_available(serial_index_t index) { #if NO_TIMEOUTS > 0 // Multiserial already handles dispatch to/from multiple ports static bool any_serial_data_available() { - LOOP_L_N(p, NUM_SERIAL) + for (uint8_t p = 0; p < NUM_SERIAL; ++p) if (serial_data_available(p)) return true; return false; @@ -313,7 +313,7 @@ inline int read_serial(const serial_index_t index) { return SERIAL_IMPL.read(ind */ void GCodeQueue::flush_rx() { // Flush receive buffer - LOOP_L_N(p, NUM_SERIAL) { + for (uint8_t p = 0; p < NUM_SERIAL; ++p) { if (!serial_data_available(p)) continue; // No data for this port? Skip. while (SERIAL_IMPL.available(p)) (void)read_serial(p); } @@ -441,7 +441,7 @@ void GCodeQueue::get_serial_commands() { // Unless a serial port has data, this will exit on next iteration hadData = false; - LOOP_L_N(p, NUM_SERIAL) { + for (uint8_t p = 0; p < NUM_SERIAL; ++p) { // Check if the queue is full and exit if it is. if (ring_buffer.full()) return; diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index e5cbc83459..f2b5016272 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -1496,7 +1496,7 @@ #ifdef GRID_MAX_POINTS_X #define GRID_MAX_POINTS ((GRID_MAX_POINTS_X) * (GRID_MAX_POINTS_Y)) - #define GRID_LOOP(A,B) LOOP_L_N(A, GRID_MAX_POINTS_X) LOOP_L_N(B, GRID_MAX_POINTS_Y) + #define GRID_LOOP(A,B) for (uint8_t A = 0; A < GRID_MAX_POINTS_X; ++A) for (uint8_t B = 0; B < GRID_MAX_POINTS_Y; ++B) #endif // Slim menu optimizations diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index 55e4d156ea..51b3fbd3c4 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -130,7 +130,7 @@ static void createChar_P(const char c, const byte * const ptr) { byte temp[8]; - LOOP_L_N(i, 8) + for (uint8_t i = 0; i < 8; ++i) temp[i] = pgm_read_byte(&ptr[i]); lcd.createChar(c, temp); } @@ -440,7 +440,7 @@ void MarlinUI::clear_lcd() { lcd.clear(); } else { PGM_P p = FTOP(ftxt); int dly = time / _MAX(slen, 1); - LOOP_LE_N(i, slen) { + for (uint8_t i = 0; i <= slen; ++i) { // Print the text at the correct place lcd_put_u8str_max_P(col, line, p, len); diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp index 185d3488db..5b2db31fbb 100644 --- a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp +++ b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp @@ -155,7 +155,7 @@ bool MarlinUI::detected() { return true; } #if DISABLED(CUSTOM_BOOTSCREEN_ANIMATED_FRAME_TIME) constexpr millis_t frame_time = CUSTOM_BOOTSCREEN_FRAME_TIME; #endif - LOOP_L_N(f, COUNT(custom_bootscreen_animation)) + for (uint8_t f = 0; f < COUNT(custom_bootscreen_animation); ++f) #endif { #if ENABLED(CUSTOM_BOOTSCREEN_ANIMATED_FRAME_TIME) @@ -228,7 +228,7 @@ bool MarlinUI::detected() { return true; } draw_bootscreen_bmp(start_bmp); #else constexpr millis_t frame_time = MARLIN_BOOTSCREEN_FRAME_TIME; - LOOP_L_N(f, COUNT(marlin_bootscreen_animation)) { + for (uint8_t f = 0; f < COUNT(marlin_bootscreen_animation); ++f) { draw_bootscreen_bmp((uint8_t*)pgm_read_ptr(&marlin_bootscreen_animation[f])); if (frame_time) safe_delay(frame_time); } diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp index 61181f9a00..12cee1fc80 100644 --- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp +++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp @@ -672,7 +672,7 @@ void MarlinUI::draw_status_screen() { if (PAGE_UNDER(6 + 1 + 12 + 1 + 6 + 1)) { // Extruders #if DO_DRAW_HOTENDS - LOOP_L_N(e, MAX_HOTEND_DRAW) _draw_hotend_status((heater_id_t)e, blink); + for (uint8_t e = 0; e < MAX_HOTEND_DRAW; ++e) _draw_hotend_status((heater_id_t)e, blink); #endif // Laser / Spindle diff --git a/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp index bc961dbf15..8e70941628 100644 --- a/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp +++ b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp @@ -237,7 +237,7 @@ void ST7920_Lite_Status_Screen::clear_ddram() { /* This fills the entire graphics buffer with zeros */ void ST7920_Lite_Status_Screen::clear_gdram() { - LOOP_L_N(y, BUFFER_HEIGHT) { + for (uint8_t y = 0; y < BUFFER_HEIGHT; ++y) { set_gdram_address(0, y); begin_data(); for (uint8_t i = (BUFFER_WIDTH) / 16; i--;) write_word(0); @@ -435,7 +435,7 @@ void ST7920_Lite_Status_Screen::draw_degree_symbol(uint8_t x, uint8_t y, const b const uint8_t x_word = x >> 1, y_top = degree_symbol_y_top, y_bot = y_top + COUNT(degree_symbol); - LOOP_S_L_N(i, y_top, y_bot) { + for (uint8_t i = y_top; i < y_bot; ++i) { uint8_t byte = pgm_read_byte(p_bytes++); set_gdram_address(x_word, i + y * 16); begin_data(); @@ -754,10 +754,10 @@ bool ST7920_Lite_Status_Screen::indicators_changed() { // This drawing is a mess and only produce readable result around 25% steps // i.e. 74-76% look fine [|||||||||||||||||||||||| ], but 73% look like this: [|||||||||||||||| | ] // meaning partially filled bytes produce only single vertical line, and i bet they're not supposed to! - LOOP_S_LE_N(y, top, bottom) { + for (uint8_t y = top; y <= bottom; ++y) { set_gdram_address(left, y); begin_data(); - LOOP_L_N(x, width) { + for (uint8_t x = 0; x < width; ++x) { uint16_t gfx_word = 0x0000; if ((x + 1) * char_pcnt <= value) gfx_word = 0xFFFF; // Draw completely filled bytes diff --git a/Marlin/src/lcd/dogm/u8g_dev_st7920_128x64_HAL.cpp b/Marlin/src/lcd/dogm/u8g_dev_st7920_128x64_HAL.cpp index fde6e41792..ae1531e9f8 100644 --- a/Marlin/src/lcd/dogm/u8g_dev_st7920_128x64_HAL.cpp +++ b/Marlin/src/lcd/dogm/u8g_dev_st7920_128x64_HAL.cpp @@ -87,11 +87,11 @@ void clear_graphics_DRAM(u8g_t *u8g, u8g_dev_t *dev) { u8g_SetAddress(u8g, dev, 0); // cmd mode u8g_WriteByte(u8g, dev, 0x08); //display off, cursor+blink off u8g_WriteByte(u8g, dev, 0x3E); //extended mode + GDRAM active - LOOP_L_N(y, (LCD_PIXEL_HEIGHT) / 2) { //clear GDRAM + for (uint8_t y = 0; y < (LCD_PIXEL_HEIGHT) / 2; ++y) { //clear GDRAM u8g_WriteByte(u8g, dev, 0x80 | y); //set y u8g_WriteByte(u8g, dev, 0x80); //set x = 0 u8g_SetAddress(u8g, dev, 1); /* data mode */ - LOOP_L_N(i, 2 * (LCD_PIXEL_WIDTH) / 8) //2x width clears both segments + for (uint8_t i = 0; i < 2 * (LCD_PIXEL_WIDTH) / 8; ++i) //2x width clears both segments u8g_WriteByte(u8g, dev, 0); u8g_SetAddress(u8g, dev, 0); /* cmd mode */ } diff --git a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp index e51767f96a..3e173aab6c 100644 --- a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp +++ b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp @@ -298,10 +298,10 @@ static void setWindow(u8g_t *u8g, u8g_dev_t *dev, uint16_t Xmin, uint16_t Ymin, v = color; else v = TFT_MARLINBG_COLOR; - LOOP_L_N(n, GRAPHICAL_TFT_UPSCALE) buffer[k++] = v; + for (uint8_t n = 0; n < GRAPHICAL_TFT_UPSCALE; ++n) buffer[k++] = v; } #if HAS_LCD_IO - LOOP_S_L_N(n, 1, GRAPHICAL_TFT_UPSCALE) + for (uint8_t n = 1; n < GRAPHICAL_TFT_UPSCALE; ++n) for (uint16_t l = 0; l < UPSCALE0(length); l++) buffer[l + n * UPSCALE0(length)] = buffer[l]; @@ -412,16 +412,16 @@ uint8_t u8g_dev_tft_320x240_upscale_from_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, u if (TERN0(HAS_TOUCH_BUTTONS_SLEEP, touchBt.isSleeping())) break; if (++page > (HEIGHT / PAGE_HEIGHT)) return 1; - LOOP_L_N(y, PAGE_HEIGHT) { + for (uint8_t y = 0; y < PAGE_HEIGHT; ++y) { uint32_t k = 0; TERN_(HAS_LCD_IO, buffer = (y & 1) ? bufferB : bufferA); for (uint16_t i = 0; i < (uint32_t)pb->width; i++) { const uint8_t b = *(((uint8_t *)pb->buf) + i); const uint16_t c = TEST(b, y) ? TFT_MARLINUI_COLOR : TFT_MARLINBG_COLOR; - LOOP_L_N(n, GRAPHICAL_TFT_UPSCALE) buffer[k++] = c; + for (uint8_t n = 0; n < GRAPHICAL_TFT_UPSCALE; ++n) buffer[k++] = c; } #if HAS_LCD_IO - LOOP_S_L_N(n, 1, GRAPHICAL_TFT_UPSCALE) + for (uint8_t n = 1; n < GRAPHICAL_TFT_UPSCALE; ++n) for (uint16_t l = 0; l < UPSCALE0(WIDTH); l++) buffer[l + n * UPSCALE0(WIDTH)] = buffer[l]; @@ -429,7 +429,7 @@ uint8_t u8g_dev_tft_320x240_upscale_from_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, u #else uint8_t *bufptr = (uint8_t*) buffer; for (uint8_t i = GRAPHICAL_TFT_UPSCALE; i--;) { - LOOP_S_L_N(n, 0, GRAPHICAL_TFT_UPSCALE * 2) { + for (uint8_t n = 0; n < GRAPHICAL_TFT_UPSCALE * 2; ++n) { u8g_WriteSequence(u8g, dev, WIDTH, &bufptr[WIDTH * n]); } } diff --git a/Marlin/src/lcd/e3v2/common/dwin_api.cpp b/Marlin/src/lcd/e3v2/common/dwin_api.cpp index f3abaf25c9..319c861ea4 100644 --- a/Marlin/src/lcd/e3v2/common/dwin_api.cpp +++ b/Marlin/src/lcd/e3v2/common/dwin_api.cpp @@ -38,8 +38,8 @@ uint8_t databuf[26] = { 0 }; // Send the data in the buffer plus the packet tail void DWIN_Send(size_t &i) { ++i; - LOOP_L_N(n, i) { LCD_SERIAL.write(DWIN_SendBuf[n]); delayMicroseconds(1); } - LOOP_L_N(n, 4) { LCD_SERIAL.write(DWIN_BufTail[n]); delayMicroseconds(1); } + for (uint8_t n = 0; n < i; ++n) { LCD_SERIAL.write(DWIN_SendBuf[n]); delayMicroseconds(1); } + for (uint8_t n = 0; n < 4; ++n) { LCD_SERIAL.write(DWIN_BufTail[n]); delayMicroseconds(1); } } /*-------------------------------------- System variable function --------------------------------------*/ diff --git a/Marlin/src/lcd/e3v2/creality/dwin.cpp b/Marlin/src/lcd/e3v2/creality/dwin.cpp index 3c259e5bf4..af3d1eaeb8 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.cpp +++ b/Marlin/src/lcd/e3v2/creality/dwin.cpp @@ -1891,7 +1891,7 @@ void Redraw_SD_List() { if (card.isMounted()) { // As many files as will fit - LOOP_L_N(i, _MIN(nr_sd_menu_items(), MROWS)) + for (uint8_t i = 0; i < _MIN(nr_sd_menu_items(), MROWS); ++i) Draw_SDItem(i, i + 1); TERN_(SCROLL_LONG_FILENAMES, Init_SDItem_Shift()); @@ -2038,7 +2038,7 @@ void Draw_Info_Menu() { DWIN_Draw_String(false, font8x16, Color_White, Color_Bg_Black, (DWIN_WIDTH - strlen(CORP_WEBSITE) * MENU_CHR_W) / 2, 268, F(CORP_WEBSITE)); Draw_Back_First(); - LOOP_L_N(i, 3) { + for (uint8_t i = 0; i < 3; ++i) { DWIN_ICON_Show(ICON, ICON_PrintSize + i, 26, 99 + i * 73); DWIN_Draw_Line(Line_Color, 16, MBASE(2) + i * 73, 256, 156 + i * 73); } @@ -2390,7 +2390,7 @@ void Draw_Move_Menu() { if (select_axis.now != CASE_BACK) Draw_Menu_Cursor(select_axis.now); // Draw separators and icons - LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_MoveX + i); + for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) Draw_Menu_Line(i + 1, ICON_MoveX + i); } void Item_Adv_HomeOffsets(const uint8_t row) { @@ -3264,7 +3264,7 @@ void Draw_Max_Speed_Menu() { } Draw_Back_First(); - LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_MaxSpeedX + i); + for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) Draw_Menu_Line(i + 1, ICON_MaxSpeedX + i); Draw_Edit_Integer4(1, planner.settings.max_feedrate_mm_s[X_AXIS]); Draw_Edit_Integer4(2, planner.settings.max_feedrate_mm_s[Y_AXIS]); Draw_Edit_Integer4(3, planner.settings.max_feedrate_mm_s[Z_AXIS]); @@ -3318,7 +3318,7 @@ void Draw_Max_Accel_Menu() { } Draw_Back_First(); - LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_MaxAccX + i); + for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) Draw_Menu_Line(i + 1, ICON_MaxAccX + i); Draw_Edit_Integer4(1, planner.settings.max_acceleration_mm_per_s2[X_AXIS]); Draw_Edit_Integer4(2, planner.settings.max_acceleration_mm_per_s2[Y_AXIS]); Draw_Edit_Integer4(3, planner.settings.max_acceleration_mm_per_s2[Z_AXIS]); @@ -3377,7 +3377,7 @@ void Draw_Max_Accel_Menu() { } Draw_Back_First(); - LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_MaxSpeedJerkX + i); + for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) Draw_Menu_Line(i + 1, ICON_MaxSpeedJerkX + i); Draw_Edit_Float3(1, planner.max_jerk.x * MINUNITMULT); Draw_Edit_Float3(2, planner.max_jerk.y * MINUNITMULT); Draw_Edit_Float3(3, planner.max_jerk.z * MINUNITMULT); @@ -3428,7 +3428,7 @@ void Draw_Steps_Menu() { } Draw_Back_First(); - LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_StepX + i); + for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) Draw_Menu_Line(i + 1, ICON_StepX + i); Draw_Edit_Float3(1, planner.settings.axis_steps_per_mm[X_AXIS] * MINUNITMULT); Draw_Edit_Float3(2, planner.settings.axis_steps_per_mm[Y_AXIS] * MINUNITMULT); Draw_Edit_Float3(3, planner.settings.axis_steps_per_mm[Z_AXIS] * MINUNITMULT); diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 81478887ce..b453bc2031 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -594,7 +594,7 @@ void CrealityDWINClass::Draw_Menu(const uint8_t menu, const uint8_t select/*=0*/ active_menu = menu; Clear_Screen(); Draw_Title(Get_Menu_Title(menu)); - LOOP_L_N(i, TROWS) Menu_Item_Handler(menu, i + scrollpos); + for (uint8_t i = 0; i < TROWS; ++i) Menu_Item_Handler(menu, i + scrollpos); DWIN_Draw_Rectangle(1, GetColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); } @@ -814,9 +814,9 @@ void CrealityDWINClass::Draw_SD_Item(const uint8_t item, const uint8_t row) { len = pos; if (len > max) len = max; char name[len + 1]; - LOOP_L_N(i, len) name[i] = filename[i]; + for (uint8_t i = 0; i < len; ++i) name[i] = filename[i]; if (pos > max) - LOOP_S_L_N(i, len - 3, len) name[i] = '.'; + for (uint8_t i = len - 3; i < len; ++i) name[i] = '.'; name[len] = '\0'; Draw_Menu_Item(row, card.flag.filenameIsDir ? ICON_More : ICON_File, name); } @@ -829,7 +829,7 @@ void CrealityDWINClass::Draw_SD_List(const bool removed/*=false*/) { scrollpos = 0; process = File; if (card.isMounted() && !removed) { - LOOP_L_N(i, _MIN(card.get_num_items() + 1, TROWS)) + for (uint8_t i = 0; i < _MIN(card.get_num_items() + 1, TROWS); ++i) Draw_SD_Item(i, i); } else { @@ -4664,12 +4664,12 @@ void CrealityDWINClass::Modify_Option(const uint8_t value, const char * const * void CrealityDWINClass::Update_Status(const char * const text) { if (strncmp_P(text, PSTR(""), 3) == 0) { - LOOP_L_N(i, _MIN((size_t)LONG_FILENAME_LENGTH, strlen(text))) filename[i] = text[i + 3]; + for (uint8_t i = 0; i < _MIN((size_t)LONG_FILENAME_LENGTH, strlen(text)); ++i) filename[i] = text[i + 3]; filename[_MIN((size_t)LONG_FILENAME_LENGTH - 1, strlen(text))] = '\0'; Draw_Print_Filename(true); } else { - LOOP_L_N(i, _MIN((size_t)64, strlen(text))) statusmsg[i] = text[i]; + for (uint8_t i = 0; i < _MIN((size_t)64, strlen(text)); ++i) statusmsg[i] = text[i]; statusmsg[_MIN((size_t)64, strlen(text))] = '\0'; } } diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index 807f1915f6..293e6c2d5c 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -569,7 +569,7 @@ void DWIN_Print_Header(const char *text = nullptr) { static char headertxt[31] = ""; // Print header text if (text) { const int8_t size = _MIN(30U, strlen_P(text)); - LOOP_L_N(i, size) headertxt[i] = text[i]; + for (uint8_t i = 0; i < size; ++i) headertxt[i] = text[i]; headertxt[size] = '\0'; } if (checkkey == PrintProcess || checkkey == PrintDone) { @@ -938,7 +938,7 @@ void Draw_Print_File_Menu() { if (card.isMounted()) { if (SET_MENU(FileMenu, MSG_MEDIA_MENU, nr_sd_menu_items() + 1)) { BACK_ITEM(Goto_Main_Menu); - LOOP_L_N(i, nr_sd_menu_items()) { + for (uint8_t i = 0; i < nr_sd_menu_items(); ++i) { MenuItemAdd(onDrawFileName, onClickSDItem); } } @@ -1040,7 +1040,7 @@ void Draw_Info_Menu() { DWINUI::Draw_CenteredString(122, F(MACHINE_SIZE)); DWINUI::Draw_CenteredString(195, F(SHORT_BUILD_VERSION)); - LOOP_L_N(i, 3) { + for (uint8_t i = 0; i < 3; ++i) { DWINUI::Draw_Icon(ICON_PrintSize + i, ICOX, 99 + i * 73); DWIN_Draw_HLine(HMI_data.SplitLine_Color, 16, MBASE(2) + i * 73, 240); } @@ -2413,9 +2413,9 @@ void TramC () { Tram(4); } DWINUI::Draw_CenteredString(160, F("and relative heights")); safe_delay(1000); float avg = 0.0f; - LOOP_L_N(x, 2) LOOP_L_N(y, 2) avg += zval[x][y]; + for (uint8_t x = 0; x < 2; ++x) for (uint8_t y = 0; y < 2; ++y) avg += zval[x][y]; avg /= 4.0f; - LOOP_L_N(x, 2) LOOP_L_N(y, 2) zval[x][y] -= avg; + for (uint8_t x = 0; x < 2; ++x) for (uint8_t y = 0; y < 2; ++y) zval[x][y] -= avg; MeshViewer.DrawMesh(zval, 2, 2); ui.reset_status(); @@ -2428,7 +2428,7 @@ void TramC () { Tram(4); } float max = 0; FSTR_P plabel; bool s = true; - LOOP_L_N(x, 2) LOOP_L_N(y, 2) { + for (uint8_t x = 0; x < 2; ++x) for (uint8_t y = 0; y < 2; ++y) { const float d = ABS(zval[x][y]); if (max < d) { s = (zval[x][y] >= 0); @@ -3771,7 +3771,7 @@ void Draw_Steps_Menu() { } void UBLSmartFillMesh() { - LOOP_L_N(x, GRID_MAX_POINTS_Y) bedlevel.smart_fill_mesh(); + for (uint8_t x = 0; x < GRID_MAX_POINTS_Y; ++x) bedlevel.smart_fill_mesh(); LCD_MESSAGE(MSG_UBL_MESH_FILLED); } diff --git a/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp b/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp index 6cdafc8a93..ad2cd27093 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp @@ -126,9 +126,9 @@ void DWIN_WriteToMem(uint8_t mem, uint16_t addr, uint16_t length, uint8_t *data) DWIN_Byte(i, mem); DWIN_Word(i, addr + indx); // start address of the data block ++i; - LOOP_L_N(j, i) { LCD_SERIAL.write(DWIN_SendBuf[j]); delayMicroseconds(1); } // Buf header + for (uint8_t j = 0; j < i; ++j) { LCD_SERIAL.write(DWIN_SendBuf[j]); delayMicroseconds(1); } // Buf header for (uint16_t j = indx; j <= indx + to_send - 1; j++) LCD_SERIAL.write(*(data + j)); delayMicroseconds(1); // write block of data - LOOP_L_N(j, 4) { LCD_SERIAL.write(DWIN_BufTail[j]); delayMicroseconds(1); } + for (uint8_t j = 0; j < 4; ++j) { LCD_SERIAL.write(DWIN_BufTail[j]); delayMicroseconds(1); } block++; pending -= to_send; } diff --git a/Marlin/src/lcd/e3v2/proui/meshviewer.cpp b/Marlin/src/lcd/e3v2/proui/meshviewer.cpp index c0ca216c32..80f1d35f40 100644 --- a/Marlin/src/lcd/e3v2/proui/meshviewer.cpp +++ b/Marlin/src/lcd/e3v2/proui/meshviewer.cpp @@ -60,7 +60,7 @@ void MeshViewerClass::DrawMesh(bed_mesh_t zval, const uint8_t sizex, const uint8 #define DrawMeshHLine(yp) DWIN_Draw_HLine(HMI_data.SplitLine_Color, px(0), py(yp), DWIN_WIDTH - 2 * mx) #define DrawMeshVLine(xp) DWIN_Draw_VLine(HMI_data.SplitLine_Color, px(xp), py(sizey - 1), DWIN_WIDTH - 2 * my) int16_t maxz =-32000; int16_t minz = 32000; - LOOP_L_N(y, sizey) LOOP_L_N(x, sizex) { + for (uint8_t y = 0; y < sizey; ++y) for (uint8_t x = 0; x < sizex; ++x) { const float v = isnan(zval[x][y]) ? 0 : round(zval[x][y] * 100); zmesh[x][y] = v; NOLESS(maxz, v); @@ -70,11 +70,11 @@ void MeshViewerClass::DrawMesh(bed_mesh_t zval, const uint8_t sizex, const uint8 min = (float)minz / 100; DWINUI::ClearMainArea(); DWIN_Draw_Rectangle(0, HMI_data.SplitLine_Color, px(0), py(0), px(sizex - 1), py(sizey - 1)); - LOOP_S_L_N(x, 1, sizex - 1) DrawMeshVLine(x); - LOOP_S_L_N(y, 1, sizey - 1) DrawMeshHLine(y); - LOOP_L_N(y, sizey) { + for (uint8_t x = 1; x < sizex - 1; ++x) DrawMeshVLine(x); + for (uint8_t y = 1; y < sizey - 1; ++y) DrawMeshHLine(y); + for (uint8_t y = 0; y < sizey; ++y) { hal.watchdog_refresh(); - LOOP_L_N(x, sizex) { + for (uint8_t x = 0; x < sizex; ++x) { uint16_t color = DWINUI::RainbowInt(zmesh[x][y], _MIN(-5, minz), _MAX(5, maxz)); uint8_t radius = rm(zmesh[x][y]); DWINUI::Draw_FillCircle(color, px(x), py(y), radius); diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp index 2ccc3a37f8..518bda73f3 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp @@ -672,7 +672,7 @@ namespace Anycubic { // On: 5A A5 05 82 00 82 00 00 // Off: 5A A5 05 82 00 82 00 64 uint8_t data[] = { 0x5A, 0xA5, 0x05, 0x82, 0x00, 0x82, 0x00, uint8_t(recovery.enabled ? 0x00 : 0x64) }; - LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); + for (uint8_t i = 0; i < COUNT(data); ++i) TFTSer.write(data[i]); } void DgusTFT::powerLossRecovery() { @@ -722,30 +722,30 @@ namespace Anycubic { void DgusTFT::sendValueToTFT(const uint16_t value, const uint16_t address) { uint8_t data[] = { 0x5A, 0xA5, 0x05, 0x82, uint8_t(address >> 8), uint8_t(address & 0xFF), uint8_t(value >> 8), uint8_t(value & 0xFF) }; - LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); + for (uint8_t i = 0; i < COUNT(data); ++i) TFTSer.write(data[i]); } void DgusTFT::requestValueFromTFT(const uint16_t address) { uint8_t data[] = { 0x5A, 0xA5, 0x04, 0x83, uint8_t(address >> 8), uint8_t(address & 0xFF), 0x01 }; - LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); + for (uint8_t i = 0; i < COUNT(data); ++i) TFTSer.write(data[i]); } void DgusTFT::sendTxtToTFT(const char *pdata, const uint16_t address) { uint8_t data_len = strlen(pdata); uint8_t data[] = { 0x5A, 0xA5, uint8_t(data_len + 5), 0x82, uint8_t(address >> 8), uint8_t(address & 0xFF) }; - LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); - LOOP_L_N(i, data_len) TFTSer.write(pdata[i]); + for (uint8_t i = 0; i < COUNT(data); ++i) TFTSer.write(data[i]); + for (uint8_t i = 0; i < data_len; ++i) TFTSer.write(pdata[i]); TFTSer.write(0xFF); TFTSer.write(0xFF); } void DgusTFT::sendColorToTFT(const uint16_t color, const uint16_t address) { uint8_t data[] = { 0x5A, 0xA5, 0x05, 0x82, uint8_t(address >> 8), uint8_t(address & 0xFF), uint8_t(color >> 8), uint8_t(color & 0xFF) }; - LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); + for (uint8_t i = 0; i < COUNT(data); ++i) TFTSer.write(data[i]); } void DgusTFT::sendReadNumOfTxtToTFT(const uint8_t number, const uint16_t address) { uint8_t data[] = { 0x5A, 0xA5, 0x04, 0x83, uint8_t(address >> 8), uint8_t(address & 0xFF), number }; - LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); + for (uint8_t i = 0; i < COUNT(data); ++i) TFTSer.write(data[i]); } void DgusTFT::changePageOfTFT(const uint16_t page_index, const bool no_send/*=false*/) { @@ -775,7 +775,7 @@ namespace Anycubic { if (!no_send) { uint8_t data[] = { 0x5A, 0xA5, 0x07, 0x82, 0x00, 0x84, 0x5A, 0x01, uint8_t(data_temp >> 8), uint8_t(data_temp & 0xFF) }; - LOOP_L_N(i, COUNT(data)) TFTSer.write(data[i]); + for (uint8_t i = 0; i < COUNT(data); ++i) TFTSer.write(data[i]); } page_index_last_2 = page_index_last; @@ -801,7 +801,7 @@ namespace Anycubic { // On: 5A A5 07 82 00 80 5A 00 00 1A // Off: 5A A5 07 82 00 80 5A 00 00 12 uint8_t data[] = { 0x5A, 0xA5, 0x07, 0x82, 0x00, 0x80, 0x5A, 0x00, 0x00, uint8_t(audio_on ? 0x1A : 0x12) }; - LOOP_L_N(i, 10) TFTSer.write(data[i]); + for (uint8_t i = 0; i < 10; ++i) TFTSer.write(data[i]); } bool DgusTFT::readTFTCommand() { diff --git a/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h b/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h index e2405bf2ef..c6dd270edf 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h +++ b/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h @@ -184,7 +184,7 @@ public: if (!var.memadr) return; union { unsigned char tmp[sizeof(T)]; T t; } x; unsigned char *ptr = (unsigned char*)val_ptr; - LOOP_L_N(i, sizeof(T)) x.tmp[i] = ptr[sizeof(T) - i - 1]; + for (uint8_t i = 0; i < sizeof(T); ++i) x.tmp[i] = ptr[sizeof(T) - i - 1]; *(T*)var.memadr = x.t; } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.h index 88fed7a3b8..7c27162ce6 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.h @@ -124,7 +124,7 @@ public: } src, dst; src.val = value; - LOOP_L_N(i, sizeof(T)) dst.byte[i] = src.byte[sizeof(T) - i - 1]; + for (uint8_t i = 0; i < sizeof(T); ++i) dst.byte[i] = src.byte[sizeof(T) - i - 1]; return dst.val; } diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/cyrillic_char_set.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/cyrillic_char_set.cpp index 1c193ade4b..2faa1c72e6 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/cyrillic_char_set.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/cyrillic_char_set.cpp @@ -58,11 +58,11 @@ cyrillic_fm.stride = 20; cyrillic_fm.width = 40; cyrillic_fm.height = 49; - LOOP_L_N(i, 127) + for (uint8_t i = 0; i < 127; ++i) cyrillic_fm.char_widths[i] = 0; // For cyrillic characters, copy the character widths from the widths tables - LOOP_L_N(i, NUM_ELEMENTS(cyrillic_font_widths)) { + for (uint8_t i = 0; i < NUM_ELEMENTS(cyrillic_font_widths); ++i) { cyrillic_fm.char_widths[i] = cyrillic_font_widths[i]; } CLCD::mem_write_bulk(addr, &cyrillic_fm, 148); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/western_char_set.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/western_char_set.cpp index 4fb2f8fdbf..02a39cd01c 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/western_char_set.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/western_char_set.cpp @@ -342,11 +342,11 @@ alt_fm.stride = 19; alt_fm.width = 38; alt_fm.height = 49; - LOOP_L_N(i, 127) + for (uint8_t i = 0; i < 127; ++i) alt_fm.char_widths[i] = 0; // For special characters, copy the character widths from the char tables - LOOP_L_N(i, NUM_ELEMENTS(char_recipe)) { + for (uint8_t i = 0; i < NUM_ELEMENTS(char_recipe); ++i) { uint8_t std_char, alt_char, alt_data; get_char_data(i, std_char, alt_char, alt_data); if (std_char == 0) diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.cpp index c08935f3bc..95fe023cda 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/move_axis_screen.cpp @@ -37,7 +37,7 @@ void BaseMoveAxisScreen::onEntry() { // ourselves. The relative distances are reset to zero whenever this // screen is entered. - LOOP_L_N(i, ExtUI::extruderCount) { + for (uint8_t i = 0; i < ExtUI::extruderCount; ++i) { mydata.e_rel[i] = 0; } BaseNumericAdjustmentScreen::onEntry(); diff --git a/Marlin/src/lcd/extui/malyan/malyan.cpp b/Marlin/src/lcd/extui/malyan/malyan.cpp index 1c051f4504..d1c2387682 100644 --- a/Marlin/src/lcd/extui/malyan/malyan.cpp +++ b/Marlin/src/lcd/extui/malyan/malyan.cpp @@ -79,7 +79,7 @@ void write_to_lcd(FSTR_P const fmsg) { char encoded_message[MAX_CURLY_COMMAND]; uint8_t message_length = _MIN(strlen_P(pmsg), sizeof(encoded_message)); - LOOP_L_N(i, message_length) + for (uint8_t i = 0; i < message_length; ++i) encoded_message[i] = pgm_read_byte(&pmsg[i]) | 0x80; LCD_SERIAL.Print::write(encoded_message, message_length); @@ -89,7 +89,7 @@ void write_to_lcd(const char * const cmsg) { char encoded_message[MAX_CURLY_COMMAND]; const uint8_t message_length = _MIN(strlen(cmsg), sizeof(encoded_message)); - LOOP_L_N(i, message_length) + for (uint8_t i = 0; i < message_length; ++i) encoded_message[i] = cmsg[i] | 0x80; LCD_SERIAL.Print::write(encoded_message, message_length); diff --git a/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp b/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp index 6e39c9a36e..7c0ec802c3 100644 --- a/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp +++ b/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp @@ -379,7 +379,7 @@ uint32_t Pic_Info_Write(uint8_t *P_name, uint32_t P_size) { static void dosName2LongName(const char dosName[11], char *longName) { uint8_t j = 0; - LOOP_L_N(i, 11) { + for (uint8_t i = 0; i < 11; ++i) { if (i == 8) longName[j++] = '.'; if (dosName[i] == '\0' || dosName[i] == ' ') continue; longName[j++] = dosName[i]; diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index a812dff556..8d27ee8f7e 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -1289,7 +1289,7 @@ void MarlinUI::init() { thermalManager.current_ADCKey_raw = HAL_ADC_RANGE; thermalManager.ADCKey_count = 0; if (currentkpADCValue < adc_other_button) - LOOP_L_N(i, ADC_KEY_NUM) { + for (uint8_t i = 0; i < ADC_KEY_NUM; ++i) { const raw_adc_t lo = pgm_read_word(&stADCKeyTable[i].ADCKeyValueMin), hi = pgm_read_word(&stADCKeyTable[i].ADCKeyValueMax); if (WITHIN(currentkpADCValue, lo, hi)) return pgm_read_byte(&stADCKeyTable[i].ADCKeyNo); @@ -1380,7 +1380,7 @@ void MarlinUI::init() { uint8_t val = 0; WRITE(SHIFT_LD_PIN, LOW); WRITE(SHIFT_LD_PIN, HIGH); - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { val >>= 1; if (READ(SHIFT_OUT_PIN)) SBI(val, 7); WRITE(SHIFT_CLK_PIN, HIGH); diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index 7819afe978..f811545ef6 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -727,7 +727,7 @@ public: * printer unusable in practice. */ static bool hw_button_pressed() { - LOOP_L_N(s, ENCODER_SAMPLES) { + for (uint8_t s = 0; s < ENCODER_SAMPLES; ++s) { if (!BUTTON_CLICK()) return false; safe_delay(1); } diff --git a/Marlin/src/lcd/menu/game/brickout.cpp b/Marlin/src/lcd/menu/game/brickout.cpp index fc4d19b1d9..078cbbccee 100644 --- a/Marlin/src/lcd/menu/game/brickout.cpp +++ b/Marlin/src/lcd/menu/game/brickout.cpp @@ -44,7 +44,7 @@ brickout_data_t &bdat = marlin_game_data.brickout; inline void reset_bricks(const uint16_t v) { bdat.brick_count = (BRICK_COLS) * (BRICK_ROWS); - LOOP_L_N(i, BRICK_ROWS) bdat.bricks[i] = v; + for (uint8_t i = 0; i < BRICK_ROWS; ++i) bdat.bricks[i] = v; } void reset_ball() { @@ -138,13 +138,13 @@ void BrickoutGame::game_screen() { // Draw bricks if (PAGE_CONTAINS(BRICK_TOP, BRICK_BOT)) { - LOOP_L_N(y, BRICK_ROWS) { + for (uint8_t y = 0; y < BRICK_ROWS; ++y) { const uint8_t yy = y * BRICK_H + BRICK_TOP; if (PAGE_CONTAINS(yy, yy + BRICK_H - 1)) { - LOOP_L_N(x, BRICK_COLS) { + for (uint8_t x = 0; x < BRICK_COLS; ++x) { if (TEST(bdat.bricks[y], x)) { const uint8_t xx = x * BRICK_W; - LOOP_L_N(v, BRICK_H - 1) + for (uint8_t v = 0; v < BRICK_H - 1; ++v) if (PAGE_CONTAINS(yy + v, yy + v)) u8g.drawHLine(xx, yy + v, BRICK_W - 1); } diff --git a/Marlin/src/lcd/menu/game/invaders.cpp b/Marlin/src/lcd/menu/game/invaders.cpp index 56e4c224dd..1cb3e5bf3f 100644 --- a/Marlin/src/lcd/menu/game/invaders.cpp +++ b/Marlin/src/lcd/menu/game/invaders.cpp @@ -166,29 +166,29 @@ inline void update_invader_data() { uint8_t inv_mask = 0; // Get a list of all active invaders uint8_t sc = 0; - LOOP_L_N(y, INVADER_ROWS) { + for (uint8_t y = 0; y < INVADER_ROWS; ++y) { uint8_t m = idat.bugs[y]; if (m) idat.botmost = y + 1; inv_mask |= m; - LOOP_L_N(x, INVADER_COLS) + for (uint8_t x = 0; x < INVADER_COLS; ++x) if (TEST(m, x)) idat.shooters[sc++] = (y << 4) | x; } idat.leftmost = 0; - LOOP_L_N(i, INVADER_COLS) { if (TEST(inv_mask, i)) break; idat.leftmost -= INVADER_COL_W; } + for (uint8_t i = 0; i < INVADER_COLS; ++i) { if (TEST(inv_mask, i)) break; idat.leftmost -= INVADER_COL_W; } idat.rightmost = LCD_PIXEL_WIDTH - (INVADERS_WIDE); for (uint8_t i = INVADER_COLS; i--;) { if (TEST(inv_mask, i)) break; idat.rightmost += INVADER_COL_W; } if (idat.count == 2) idat.dir = idat.dir > 0 ? INVADER_VEL + 1 : -(INVADER_VEL + 1); } inline void reset_bullets() { - LOOP_L_N(i, COUNT(idat.bullet)) idat.bullet[i].v = 0; + for (uint8_t i = 0; i < COUNT(idat.bullet); ++i) idat.bullet[i].v = 0; } inline void reset_invaders() { idat.pos.x = 0; idat.pos.y = INVADER_TOP; idat.dir = INVADER_VEL; idat.count = (INVADER_COLS) * (INVADER_ROWS); - LOOP_L_N(i, INVADER_ROWS) idat.bugs[i] = _BV(INVADER_COLS) - 1; + for (uint8_t i = 0; i < INVADER_ROWS; ++i) idat.bugs[i] = _BV(INVADER_COLS) - 1; update_invader_data(); reset_bullets(); } @@ -274,7 +274,7 @@ void InvadersGame::game_screen() { // Find a free bullet laser_t *b = nullptr; - LOOP_L_N(i, COUNT(idat.bullet)) if (!idat.bullet[i].v) { b = &idat.bullet[i]; break; } + for (uint8_t i = 0; i < COUNT(idat.bullet); ++i) if (!idat.bullet[i].v) { b = &idat.bullet[i]; break; } if (b) { // Pick a random shooter and update the bullet //SERIAL_ECHOLNPGM("free bullet found"); @@ -322,7 +322,7 @@ void InvadersGame::game_screen() { } // laser in invader zone // Handle alien bullets - LOOP_L_N(s, COUNT(idat.bullet)) { + for (uint8_t s = 0; s < COUNT(idat.bullet); ++s) { laser_t *b = &idat.bullet[s]; if (b->v) { // Update alien bullet position @@ -371,11 +371,11 @@ void InvadersGame::game_screen() { // Draw invaders if (PAGE_CONTAINS(idat.pos.y, idat.pos.y + idat.botmost * (INVADER_ROW_H) - 2 - 1)) { int8_t yy = idat.pos.y; - LOOP_L_N(y, INVADER_ROWS) { + for (uint8_t y = 0; y < INVADER_ROWS; ++y) { const uint8_t type = inv_type[y]; if (PAGE_CONTAINS(yy, yy + INVADER_H - 1)) { int8_t xx = idat.pos.x; - LOOP_L_N(x, INVADER_COLS) { + for (uint8_t x = 0; x < INVADER_COLS; ++x) { if (TEST(idat.bugs[y], x)) u8g.drawBitmapP(xx, yy, 2, INVADER_H, invader[type][idat.game_blink]); xx += INVADER_COL_W; @@ -398,7 +398,7 @@ void InvadersGame::game_screen() { u8g.drawVLine(idat.laser.x, idat.laser.y, LASER_H); // Draw invader bullets - LOOP_L_N (i, COUNT(idat.bullet)) { + for (uint8_t i = 0; i < COUNT(idat.bullet); ++i) { if (idat.bullet[i].v && PAGE_CONTAINS(idat.bullet[i].y - (SHOT_H - 1), idat.bullet[i].y)) u8g.drawVLine(idat.bullet[i].x, idat.bullet[i].y - (SHOT_H - 1), SHOT_H); } diff --git a/Marlin/src/lcd/menu/game/maze.cpp b/Marlin/src/lcd/menu/game/maze.cpp index 85f752ee7d..0c77f69e1e 100644 --- a/Marlin/src/lcd/menu/game/maze.cpp +++ b/Marlin/src/lcd/menu/game/maze.cpp @@ -83,7 +83,7 @@ void MazeGame::game_screen() { if (PAGE_UNDER(HEADER_H)) lcd_put_int(0, HEADER_H - 1, score); // Draw the maze - // LOOP_L_N(n, head_ind) { + // for (uint8_t n = 0; n < head_ind; ++n) { // const pos_t &p = maze_walls[n], &q = maze_walls[n + 1]; // if (p.x == q.x) { // const int8_t y1 = GAMEY(_MIN(p.y, q.y)), y2 = GAMEY(_MAX(p.y, q.y)); diff --git a/Marlin/src/lcd/menu/game/snake.cpp b/Marlin/src/lcd/menu/game/snake.cpp index c88893a6e6..2a78c089cf 100644 --- a/Marlin/src/lcd/menu/game/snake.cpp +++ b/Marlin/src/lcd/menu/game/snake.cpp @@ -84,14 +84,14 @@ void shorten_tail() { } if (shift) { sdat.head_ind--; - LOOP_LE_N(i, sdat.head_ind) + for (uint8_t i = 0; i <= sdat.head_ind; ++i) sdat.snake_tail[i] = sdat.snake_tail[i + 1]; } } // The food is on a line inline bool food_on_line() { - LOOP_L_N(n, sdat.head_ind) { + for (uint8_t n = 0; n < sdat.head_ind; ++n) { pos_t &p = sdat.snake_tail[n], &q = sdat.snake_tail[n + 1]; if (p.x == q.x) { if ((sdat.foodx == p.x - 1 || sdat.foodx == p.x) && WITHIN(sdat.foody, _MIN(p.y, q.y), _MAX(p.y, q.y))) @@ -151,7 +151,7 @@ bool snake_overlap() { // VERTICAL head segment? if (h1.x == h2.x) { // Loop from oldest to segment two away from head - LOOP_L_N(n, sdat.head_ind - 2) { + for (uint8_t n = 0; n < sdat.head_ind - 2; ++n) { // Segment p to q const pos_t &p = sdat.snake_tail[n], &q = sdat.snake_tail[n + 1]; if (p.x != q.x) { @@ -163,7 +163,7 @@ bool snake_overlap() { } else { // Loop from oldest to segment two away from head - LOOP_L_N(n, sdat.head_ind - 2) { + for (uint8_t n = 0; n < sdat.head_ind - 2; ++n) { // Segment p to q const pos_t &p = sdat.snake_tail[n], &q = sdat.snake_tail[n + 1]; if (p.y != q.y) { @@ -240,7 +240,7 @@ void SnakeGame::game_screen() { #if SNAKE_WH < 2 // At this scale just draw a line - LOOP_L_N(n, sdat.head_ind) { + for (uint8_t n = 0; n < sdat.head_ind; ++n) { const pos_t &p = sdat.snake_tail[n], &q = sdat.snake_tail[n + 1]; if (p.x == q.x) { const int8_t y1 = GAMEY(_MIN(p.y, q.y)), y2 = GAMEY(_MAX(p.y, q.y)); @@ -256,7 +256,7 @@ void SnakeGame::game_screen() { #elif SNAKE_WH == 2 // At this scale draw two lines - LOOP_L_N(n, sdat.head_ind) { + for (uint8_t n = 0; n < sdat.head_ind; ++n) { const pos_t &p = sdat.snake_tail[n], &q = sdat.snake_tail[n + 1]; if (p.x == q.x) { const int8_t y1 = GAMEY(_MIN(p.y, q.y)), y2 = GAMEY(_MAX(p.y, q.y)); @@ -275,7 +275,7 @@ void SnakeGame::game_screen() { #else // Draw a series of boxes - LOOP_L_N(n, sdat.head_ind) { + for (uint8_t n = 0; n < sdat.head_ind; ++n) { const pos_t &p = sdat.snake_tail[n], &q = sdat.snake_tail[n + 1]; if (p.x == q.x) { const int8_t y1 = _MIN(p.y, q.y), y2 = _MAX(p.y, q.y); diff --git a/Marlin/src/lcd/menu/menu_advanced.cpp b/Marlin/src/lcd/menu/menu_advanced.cpp index 370ea56402..7ef11d0e06 100644 --- a/Marlin/src/lcd/menu/menu_advanced.cpp +++ b/Marlin/src/lcd/menu/menu_advanced.cpp @@ -460,7 +460,7 @@ void menu_backlash(); EDIT_ITEM_FAST_N(float5, E_AXIS, MSG_VMAX_N, &planner.settings.max_feedrate_mm_s[E_AXIS_N(active_extruder)], 1, max_fr_edit_scaled.e); #endif #if ENABLED(DISTINCT_E_FACTORS) - LOOP_L_N(n, E_STEPPERS) + for (uint8_t n = 0; n < E_STEPPERS; ++n) EDIT_ITEM_FAST_N(float5, n, MSG_VMAX_EN, &planner.settings.max_feedrate_mm_s[E_AXIS_N(n)], 1, max_fr_edit_scaled.e); #endif @@ -532,7 +532,7 @@ void menu_backlash(); #if ENABLED(DISTINCT_E_FACTORS) EDIT_ITEM_FAST(long5_25, MSG_AMAX_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(active_extruder)], 100, max_accel_edit_scaled.e, []{ planner.refresh_acceleration_rates(); }); - LOOP_L_N(n, E_STEPPERS) + for (uint8_t n = 0; n < E_STEPPERS; ++n) EDIT_ITEM_FAST_N(long5_25, n, MSG_AMAX_EN, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(n)], 100, max_accel_edit_scaled.e, []{ if (MenuItemBase::itemIndex == active_extruder) planner.refresh_acceleration_rates(); @@ -656,7 +656,7 @@ void menu_advanced_steps_per_mm() { EDIT_ITEM_FAST_N(float72, a, MSG_N_STEPS, &planner.settings.axis_steps_per_mm[a], 5, 9999, []{ planner.refresh_positioning(); }); #if ENABLED(DISTINCT_E_FACTORS) - LOOP_L_N(n, E_STEPPERS) + for (uint8_t n = 0; n < E_STEPPERS; ++n) EDIT_ITEM_FAST_N(float72, n, MSG_EN_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS_N(n)], 5, 9999, []{ const uint8_t e = MenuItemBase::itemIndex; if (e == active_extruder) diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index 0622eb98d4..6440cae033 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -657,7 +657,7 @@ void menu_configuration() { // Preheat configurations #if HAS_PREHEAT && DISABLED(SLIM_LCD_MENUS) - LOOP_L_N(m, PREHEAT_COUNT) + for (uint8_t m = 0; m < PREHEAT_COUNT; ++m) SUBMENU_N_f(m, ui.get_preheat_label(m), MSG_PREHEAT_M_SETTINGS, _menu_configuration_preheat_settings); #endif diff --git a/Marlin/src/lcd/menu/menu_filament.cpp b/Marlin/src/lcd/menu/menu_filament.cpp index bdcd20fae3..073ffc1838 100644 --- a/Marlin/src/lcd/menu/menu_filament.cpp +++ b/Marlin/src/lcd/menu/menu_filament.cpp @@ -96,7 +96,7 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) { if (LCD_HEIGHT >= 4) STATIC_ITEM_F(change_filament_header(mode), SS_DEFAULT|SS_INVERT); BACK_ITEM(MSG_BACK); #if HAS_PREHEAT - LOOP_L_N(m, PREHEAT_COUNT) + for (uint8_t m = 0; m < PREHEAT_COUNT; ++m) ACTION_ITEM_N_f(m, ui.get_preheat_label(m), MSG_PREHEAT_M, _change_filament_with_preset); #endif EDIT_ITEM_FAST_N(int3, extruder, MSG_PREHEAT_CUSTOM, &thermalManager.temp_hotend[extruder].target, @@ -141,7 +141,7 @@ void menu_change_filament() { GCODES_ITEM_F(fmsg, F("M600 B0")); #else FSTR_P const fmsg = GET_TEXT_F(MSG_FILAMENTCHANGE_E); - LOOP_L_N(s, E_STEPPERS) { + for (uint8_t s = 0; s < E_STEPPERS; ++s) { if (thermalManager.targetTooColdToExtrude(s)) SUBMENU_N_F(s, fmsg, []{ _menu_temp_filament_op(PAUSE_MODE_CHANGE_FILAMENT, MenuItemBase::itemIndex); }); else { @@ -166,7 +166,7 @@ void menu_change_filament() { GCODES_ITEM_F(msg_load, F("M701")); #else FSTR_P const msg_load = GET_TEXT_F(MSG_FILAMENTLOAD_E); - LOOP_L_N(s, E_STEPPERS) { + for (uint8_t s = 0; s < E_STEPPERS; ++s) { if (thermalManager.targetTooColdToExtrude(s)) SUBMENU_N_F(s, msg_load, []{ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, MenuItemBase::itemIndex); }); else { @@ -194,7 +194,7 @@ void menu_change_filament() { GCODES_ITEM(MSG_FILAMENTUNLOAD_ALL, F("M702")); #endif FSTR_P const msg_unload = GET_TEXT_F(MSG_FILAMENTUNLOAD_E); - LOOP_L_N(s, E_STEPPERS) { + for (uint8_t s = 0; s < E_STEPPERS; ++s) { if (thermalManager.targetTooColdToExtrude(s)) SUBMENU_N_F(s, msg_unload, []{ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, MenuItemBase::itemIndex); }); else { diff --git a/Marlin/src/lcd/menu/menu_mixer.cpp b/Marlin/src/lcd/menu/menu_mixer.cpp index b3be5e6336..21c18c8209 100644 --- a/Marlin/src/lcd/menu/menu_mixer.cpp +++ b/Marlin/src/lcd/menu/menu_mixer.cpp @@ -170,7 +170,7 @@ void lcd_mixer_mix_edit() { #if CHANNEL_MIX_EDITING - LOOP_S_LE_N(n, 1, MIXING_STEPPERS) + for (uint8_t n = 1; n <= MIXING_STEPPERS; ++n) EDIT_ITEM_FAST_N(float42_52, n, MSG_MIX_COMPONENT_N, &mixer.collector[n-1], 0, 10); ACTION_ITEM(MSG_CYCLE_MIX, _lcd_mixer_cycle_mix); diff --git a/Marlin/src/lcd/menu/menu_password.cpp b/Marlin/src/lcd/menu/menu_password.cpp index 6ca4202f6c..33d4231cd5 100644 --- a/Marlin/src/lcd/menu/menu_password.cpp +++ b/Marlin/src/lcd/menu/menu_password.cpp @@ -85,7 +85,7 @@ void Password::authentication_done() { // A single digit was completed void Password::digit_entered() { uint32_t multiplier = CAT(1e, PASSWORD_LENGTH); // 1e5 = 100000 - LOOP_LE_N(i, digit_no) multiplier /= 10; + for (uint8_t i = 0; i <= digit_no; ++i) multiplier /= 10; value_entry += editable.uint8 * multiplier; string[digit_no++] = '0' + editable.uint8; diff --git a/Marlin/src/lcd/menu/menu_temperature.cpp b/Marlin/src/lcd/menu/menu_temperature.cpp index 82b358623f..710cef6468 100644 --- a/Marlin/src/lcd/menu/menu_temperature.cpp +++ b/Marlin/src/lcd/menu/menu_temperature.cpp @@ -179,7 +179,7 @@ void menu_temperature() { #endif #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) - LOOP_S_L_N(e, 1, EXTRUDERS) + for (uint8_t e = 1; e < EXTRUDERS; ++e) EDIT_ITEM_FAST_N(int3, e, MSG_NOZZLE_STANDBY, &thermalManager.singlenozzle_temp[e], 0, thermalManager.hotend_max_target(0)); #endif @@ -266,7 +266,7 @@ void menu_temperature() { // // Preheat for all Materials // - LOOP_L_N(m, PREHEAT_COUNT) { + for (uint8_t m = 0; m < PREHEAT_COUNT; ++m) { editable.int8 = m; #if HAS_MULTI_HOTEND || HAS_HEATED_BED SUBMENU_f(ui.get_preheat_label(m), MSG_PREHEAT_M, menu_preheat_m); @@ -293,7 +293,7 @@ void menu_temperature() { START_MENU(); BACK_ITEM(MSG_MAIN_MENU); - LOOP_L_N(m, PREHEAT_COUNT) { + for (uint8_t m = 0; m < PREHEAT_COUNT; ++m) { editable.int8 = m; #if HAS_MULTI_HOTEND || HAS_HEATED_BED SUBMENU_f(ui.get_preheat_label(m), MSG_PREHEAT_M, menu_preheat_m); diff --git a/Marlin/src/lcd/menu/menu_tune.cpp b/Marlin/src/lcd/menu/menu_tune.cpp index 5247c714c6..c36ac013b8 100644 --- a/Marlin/src/lcd/menu/menu_tune.cpp +++ b/Marlin/src/lcd/menu/menu_tune.cpp @@ -135,7 +135,7 @@ void menu_tune() { #endif #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) - LOOP_S_L_N(e, 1, EXTRUDERS) + for (uint8_t e = 1; e < EXTRUDERS; ++e) EDIT_ITEM_FAST_N(int3, e, MSG_NOZZLE_STANDBY, &thermalManager.singlenozzle_temp[e], 0, thermalManager.hotend_max_target(0)); #endif diff --git a/Marlin/src/lcd/menu/menu_x_twist.cpp b/Marlin/src/lcd/menu/menu_x_twist.cpp index 5339e8e6e5..56872b73ee 100644 --- a/Marlin/src/lcd/menu/menu_x_twist.cpp +++ b/Marlin/src/lcd/menu/menu_x_twist.cpp @@ -150,12 +150,12 @@ void xatc_wizard_goto_next_point() { else { // Compute the z-offset by averaging the values found with this wizard z_offset = 0; - LOOP_L_N(i, XATC_MAX_POINTS) z_offset += xatc.z_offset[i]; + for (uint8_t i = 0; i < XATC_MAX_POINTS; ++i) z_offset += xatc.z_offset[i]; z_offset /= XATC_MAX_POINTS; // Subtract the average from the values found with this wizard. // This way they are indipendent from the z-offset - LOOP_L_N(i, XATC_MAX_POINTS) xatc.z_offset[i] -= z_offset; + for (uint8_t i = 0; i < XATC_MAX_POINTS; ++i) xatc.z_offset[i] -= z_offset; ui.goto_screen(xatc_wizard_update_z_offset); } diff --git a/Marlin/src/libs/BL24CXX.cpp b/Marlin/src/libs/BL24CXX.cpp index 4b5a23e4c5..adfdc1387c 100644 --- a/Marlin/src/libs/BL24CXX.cpp +++ b/Marlin/src/libs/BL24CXX.cpp @@ -141,7 +141,7 @@ void IIC::nAck() { void IIC::send_byte(uint8_t txd) { SDA_OUT(); IIC_SCL_0(); // Pull down the clock to start data transmission - LOOP_L_N(t, 8) { + for (uint8_t t = 0; t < 8; ++t) { // IIC_SDA = (txd & 0x80) >> 7; if (txd & 0x80) IIC_SDA_1(); else IIC_SDA_0(); txd <<= 1; @@ -157,7 +157,7 @@ void IIC::send_byte(uint8_t txd) { uint8_t IIC::read_byte(unsigned char ack_chr) { unsigned char receive = 0; SDA_IN(); // SDA is set as input - LOOP_L_N(i, 8) { + for (uint8_t i = 0; i < 8; ++i) { IIC_SCL_0(); delay_us(2); IIC_SCL_1(); @@ -228,7 +228,7 @@ void BL24CXX::writeOneByte(uint16_t WriteAddr, uint8_t DataToWrite) { // DataToWrite: the first address of the data array // Len: The length of the data to be written 2, 4 void BL24CXX::writeLenByte(uint16_t WriteAddr, uint32_t DataToWrite, uint8_t Len) { - LOOP_L_N(t, Len) + for (uint8_t t = 0; t < Len; ++t) writeOneByte(WriteAddr + t, (DataToWrite >> (8 * t)) & 0xFF); } @@ -239,7 +239,7 @@ void BL24CXX::writeLenByte(uint16_t WriteAddr, uint32_t DataToWrite, uint8_t Len // Len: The length of the data to be read 2,4 uint32_t BL24CXX::readLenByte(uint16_t ReadAddr, uint8_t Len) { uint32_t temp = 0; - LOOP_L_N(t, Len) { + for (uint8_t t = 0; t < Len; ++t) { temp <<= 8; temp += readOneByte(ReadAddr + Len - t - 1); } diff --git a/Marlin/src/libs/nozzle.cpp b/Marlin/src/libs/nozzle.cpp index 58c097e316..10ebd71efd 100644 --- a/Marlin/src/libs/nozzle.cpp +++ b/Marlin/src/libs/nozzle.cpp @@ -63,7 +63,7 @@ Nozzle nozzle; #endif // Start the stroke pattern - LOOP_L_N(i, strokes >> 1) { + for (uint8_t i = 0; i < strokes >> 1; ++i) { #if ENABLED(NOZZLE_CLEAN_NO_Y) do_blocking_move_to_x(end.x); do_blocking_move_to_x(start.x); @@ -105,7 +105,7 @@ Nozzle nozzle; const bool horiz = ABS(diff.x) >= ABS(diff.y); // Do a horizontal wipe? const float P = (horiz ? diff.x : diff.y) / zigs; // Period of each zig / zag const xyz_pos_t *side; - LOOP_L_N(j, strokes) { + for (uint8_t j = 0; j < strokes; ++j) { for (int8_t i = 0; i < zigs; i++) { side = (i & 1) ? &end : &start; if (horiz) @@ -143,8 +143,8 @@ Nozzle nozzle; #endif TERN(NOZZLE_CLEAN_NO_Z, do_blocking_move_to_xy, do_blocking_move_to)(start); - LOOP_L_N(s, strokes) - LOOP_L_N(i, NOZZLE_CLEAN_CIRCLE_FN) + for (uint8_t s = 0; s < strokes; ++s) + for (uint8_t i = 0; i < NOZZLE_CLEAN_CIRCLE_FN; ++i) do_blocking_move_to_xy( middle.x + sin((RADIANS(360) / NOZZLE_CLEAN_CIRCLE_FN) * i) * radius, middle.y + cos((RADIANS(360) / NOZZLE_CLEAN_CIRCLE_FN) * i) * radius diff --git a/Marlin/src/libs/vector_3.cpp b/Marlin/src/libs/vector_3.cpp index 02945fe687..a222b5cc2e 100644 --- a/Marlin/src/libs/vector_3.cpp +++ b/Marlin/src/libs/vector_3.cpp @@ -93,8 +93,8 @@ void matrix_3x3::apply_rotation_xyz(float &_x, float &_y, float &_z) { // Reset to identity. No rotate or translate. void matrix_3x3::set_to_identity() { - LOOP_L_N(i, 3) - LOOP_L_N(j, 3) + for (uint8_t i = 0; i < 3; ++i) + for (uint8_t j = 0; j < 3; ++j) vectors[i][j] = float(i == j); } @@ -131,16 +131,16 @@ matrix_3x3 matrix_3x3::create_look_at(const vector_3 &target) { // Get a transposed copy of the matrix matrix_3x3 matrix_3x3::transpose(const matrix_3x3 &original) { matrix_3x3 new_matrix; - LOOP_L_N(i, 3) - LOOP_L_N(j, 3) + for (uint8_t i = 0; i < 3; ++i) + for (uint8_t j = 0; j < 3; ++j) new_matrix.vectors[i][j] = original.vectors[j][i]; return new_matrix; } void matrix_3x3::debug(FSTR_P const title) { if (title) SERIAL_ECHOLNF(title); - LOOP_L_N(i, 3) { - LOOP_L_N(j, 3) { + for (uint8_t i = 0; i < 3; ++i) { + for (uint8_t j = 0; j < 3; ++j) { serial_offset(vectors[i][j], 2); SERIAL_CHAR(' '); } diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index f73d0f1e6b..3031e7d694 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -480,7 +480,7 @@ void __O2 Endstops::report_states() { #endif #if MULTI_FILAMENT_SENSOR #define _CASE_RUNOUT(N) case N: pin = FIL_RUNOUT##N##_PIN; state = FIL_RUNOUT##N##_STATE; break; - LOOP_S_LE_N(i, 1, NUM_RUNOUT_SENSORS) { + for (uint8_t i = 1; i <= NUM_RUNOUT_SENSORS; ++i) { pin_t pin; uint8_t state; switch (i) { diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 1d3bb268ef..10b8ca8670 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -1520,7 +1520,7 @@ void Planner::check_axes_activity() { * The multiplier converts a given E value into a length. */ void Planner::calculate_volumetric_multipliers() { - LOOP_L_N(i, COUNT(filament_size)) { + for (uint8_t i = 0; i < COUNT(filament_size); ++i) { volumetric_multiplier[i] = calculate_volumetric_multiplier(filament_size[i]); refresh_e_factor(i); } @@ -2260,7 +2260,7 @@ bool Planner::_populate_block( #if ENABLED(DISABLE_OTHER_EXTRUDERS) // Enable only the selected extruder // Count down all steppers that were recently moved - LOOP_L_N(i, E_STEPPERS) + for (uint8_t i = 0; i < E_STEPPERS; ++i) if (extruder_last_move[i]) extruder_last_move[i]--; // Switching Extruder uses one E stepper motor per two nozzles diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index e74aea56a5..c45ff6ad1d 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -650,7 +650,7 @@ class Planner { filament_size[e] = v; if (v > 0) volumetric_area_nominal = CIRCLE_AREA(v * 0.5); //TODO: should it be per extruder // make sure all extruders have some sane value for the filament size - LOOP_L_N(i, COUNT(filament_size)) + for (uint8_t i = 0; i < COUNT(filament_size); ++i) if (!filament_size[i]) filament_size[i] = DEFAULT_NOMINAL_FILAMENT_DIA; } diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index c3ea161cb4..0bece02c15 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -811,7 +811,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/, const_float_t z_min_p #if EXTRA_PROBING > 0 // Insert Z measurement into probes[]. Keep it sorted ascending. - LOOP_LE_N(i, p) { // Iterate the saved Zs to insert the new Z + for (uint8_t i = 0; i <= p; ++i) { // Iterate the saved Zs to insert the new Z if (i == p || probes[i] > z) { // Last index or new Z is smaller than this Z for (int8_t m = p; --m >= i;) probes[m + 1] = probes[m]; // Shift items down after the insertion point probes[i] = z; // Insert the new Z measurement @@ -849,7 +849,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/, const_float_t z_min_p max_avg_idx--; else min_avg_idx++; // Return the average value of all remaining probes. - LOOP_S_LE_N(i, min_avg_idx, max_avg_idx) + for (uint8_t i = min_avg_idx; i <= max_avg_idx; ++i) probes_z_sum += probes[i]; #endif diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index f9dff24656..62b03a1b9c 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -874,7 +874,7 @@ void MarlinSettings::postprocess() { { #if HAS_HOTEND_OFFSET // Skip hotend 0 which must be 0 - LOOP_S_L_N(e, 1, HOTENDS) + for (uint8_t e = 1; e < HOTENDS; ++e) EEPROM_WRITE(hotend_offset[e]); #endif } @@ -1885,7 +1885,7 @@ void MarlinSettings::postprocess() { { #if HAS_HOTEND_OFFSET // Skip hotend 0 which must be 0 - LOOP_S_L_N(e, 1, HOTENDS) + for (uint8_t e = 1; e < HOTENDS; ++e) EEPROM_READ(hotend_offset[e]); #endif } @@ -3294,7 +3294,7 @@ void MarlinSettings::reset() { #if HAS_FAN constexpr uint8_t fpre[] = { REPEAT2_S(1, INCREMENT(PREHEAT_COUNT), _PITEM, FAN_SPEED) }; #endif - LOOP_L_N(i, PREHEAT_COUNT) { + for (uint8_t i = 0; i < PREHEAT_COUNT; ++i) { TERN_(HAS_HOTEND, ui.material_preset[i].hotend_temp = hpre[i]); TERN_(HAS_HEATED_BED, ui.material_preset[i].bed_temp = bpre[i]); TERN_(HAS_FAN, ui.material_preset[i].fan_speed = fpre[i]); @@ -3435,10 +3435,10 @@ void MarlinSettings::reset() { #if DISABLED(NO_VOLUMETRICS) parser.volumetric_enabled = ENABLED(VOLUMETRIC_DEFAULT_ON); - LOOP_L_N(q, COUNT(planner.filament_size)) + for (uint8_t q = 0; q < COUNT(planner.filament_size); ++q) planner.filament_size[q] = DEFAULT_NOMINAL_FILAMENT_DIA; #if ENABLED(VOLUMETRIC_EXTRUDER_LIMIT) - LOOP_L_N(q, COUNT(planner.volumetric_extruder_limit)) + for (uint8_t q = 0; q < COUNT(planner.volumetric_extruder_limit); ++q) planner.volumetric_extruder_limit[q] = DEFAULT_VOLUMETRIC_EXTRUDER_LIMIT; #endif #endif @@ -3469,7 +3469,7 @@ void MarlinSettings::reset() { #if HAS_MOTOR_CURRENT_PWM constexpr uint32_t tmp_motor_current_setting[MOTOR_CURRENT_COUNT] = PWM_MOTOR_CURRENT; - LOOP_L_N(q, MOTOR_CURRENT_COUNT) + for (uint8_t q = 0; q < MOTOR_CURRENT_COUNT; ++q) stepper.set_digipot_current(q, (stepper.motor_current_setting[q] = tmp_motor_current_setting[q])); #endif @@ -3479,7 +3479,7 @@ void MarlinSettings::reset() { #if HAS_MOTOR_CURRENT_SPI static constexpr uint32_t tmp_motor_current_setting[] = DIGIPOT_MOTOR_CURRENT; DEBUG_ECHOLNPGM("Writing Digipot"); - LOOP_L_N(q, COUNT(tmp_motor_current_setting)) + for (uint8_t q = 0; q < COUNT(tmp_motor_current_setting); ++q) stepper.set_digipot_current(q, tmp_motor_current_setting[q]); DEBUG_ECHOLNPGM("Digipot Written"); #endif @@ -3686,8 +3686,8 @@ void MarlinSettings::reset() { #if ENABLED(MESH_BED_LEVELING) if (leveling_is_valid()) { - LOOP_L_N(py, GRID_MAX_POINTS_Y) { - LOOP_L_N(px, GRID_MAX_POINTS_X) { + for (uint8_t py = 0; py < GRID_MAX_POINTS_Y; ++py) { + for (uint8_t px = 0; px < GRID_MAX_POINTS_X; ++px) { CONFIG_ECHO_START(); SERIAL_ECHOPGM(" G29 S3 I", px, " J", py); SERIAL_ECHOLNPAIR_F_P(SP_Z_STR, LINEAR_UNIT(bedlevel.z_values[px][py]), 5); @@ -3712,8 +3712,8 @@ void MarlinSettings::reset() { #elif ENABLED(AUTO_BED_LEVELING_BILINEAR) if (leveling_is_valid()) { - LOOP_L_N(py, GRID_MAX_POINTS_Y) { - LOOP_L_N(px, GRID_MAX_POINTS_X) { + for (uint8_t py = 0; py < GRID_MAX_POINTS_Y; ++py) { + for (uint8_t px = 0; px < GRID_MAX_POINTS_X; ++px) { CONFIG_ECHO_START(); SERIAL_ECHOPGM(" G29 W I", px, " J", py); SERIAL_ECHOLNPAIR_F_P(SP_Z_STR, LINEAR_UNIT(bedlevel.z_values[px][py]), 5); @@ -3765,7 +3765,7 @@ void MarlinSettings::reset() { TERN_(PIDTEMPCHAMBER, gcode.M309_report(forReplay)); #if HAS_USER_THERMISTORS - LOOP_L_N(i, USER_THERMISTORS) + for (uint8_t i = 0; i < USER_THERMISTORS; ++i) thermalManager.M305_report(i, forReplay); #endif diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index eb977793ef..66dd114616 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -2842,7 +2842,7 @@ void Stepper::init() { #if MB(ALLIGATOR) const float motor_current[] = MOTOR_CURRENT; unsigned int digipot_motor = 0; - LOOP_L_N(i, 3 + EXTRUDERS) { + for (uint8_t i = 0; i < 3 + EXTRUDERS; ++i) { digipot_motor = 255 * (motor_current[i] / 2.5); dac084s085::setValue(i, digipot_motor); } @@ -3725,7 +3725,7 @@ void Stepper::report_positions() { void Stepper::refresh_motor_power() { if (!initialized) return; - LOOP_L_N(i, COUNT(motor_current_setting)) { + for (uint8_t i = 0; i < COUNT(motor_current_setting); ++i) { switch (i) { #if ANY_PIN(MOTOR_CURRENT_PWM_XY, MOTOR_CURRENT_PWM_X, MOTOR_CURRENT_PWM_Y, MOTOR_CURRENT_PWM_I, MOTOR_CURRENT_PWM_J, MOTOR_CURRENT_PWM_K, MOTOR_CURRENT_PWM_U, MOTOR_CURRENT_PWM_V, MOTOR_CURRENT_PWM_W) case 0: @@ -3821,7 +3821,7 @@ void Stepper::report_positions() { SPI.begin(); SET_OUTPUT(DIGIPOTSS_PIN); - LOOP_L_N(i, COUNT(motor_current_setting)) + for (uint8_t i = 0; i < COUNT(motor_current_setting); ++i) set_digipot_current(i, motor_current_setting[i]); #elif HAS_MOTOR_CURRENT_PWM diff --git a/Marlin/src/module/stepper/trinamic.cpp b/Marlin/src/module/stepper/trinamic.cpp index 7649c52f5c..1e8782753a 100644 --- a/Marlin/src/module/stepper/trinamic.cpp +++ b/Marlin/src/module/stepper/trinamic.cpp @@ -501,7 +501,7 @@ enum StealthIndex : uint8_t { struct { const void *ptr[TMCAxis::TOTAL]; bool began(const TMCAxis a, const void * const p) { - LOOP_L_N(i, a) if (p == ptr[i]) return true; + for (uint8_t i = 0; i < a; ++i) if (p == ptr[i]) return true; ptr[a] = p; return false; }; } sp_helper; diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 315cf88830..7383f6a1c3 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -1400,7 +1400,7 @@ int16_t Temperature::getHeaterPower(const heater_id_t heater_id) { }while(0) uint8_t fanDone = 0; - LOOP_L_N(f, COUNT(fanBit)) { + for (uint8_t f = 0; f < COUNT(fanBit); ++f) { const uint8_t realFan = pgm_read_byte(&fanBit[f]); if (TEST(fanDone, realFan)) continue; const bool fan_on = TEST(fanState, realFan); diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index 9d1d68cf0b..b0cb3d778e 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -273,7 +273,7 @@ typedef struct { float p, i, d, c, f; } raw_pidcf_t; base::reset(); prev_e_pos = 0; lpq_ptr = 0; - LOOP_L_N(i, LPQ_ARR_SZ) lpq[i] = 0; + for (uint8_t i = 0; i < LPQ_ARR_SZ; ++i) lpq[i] = 0; } float get_extrusion_scale_output(const bool is_active, const int32_t e_position, const float e_mm_per_step, const int16_t lpq_len) { @@ -877,7 +877,7 @@ class Temperature { #if HAS_FAN static uint8_t fan_speed[FAN_COUNT]; - #define FANS_LOOP(I) LOOP_L_N(I, FAN_COUNT) + #define FANS_LOOP(I) for (uint8_t I = 0; I < FAN_COUNT; ++I) static void set_fan_speed(const uint8_t fan, const uint16_t speed); diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index d4c2fcb675..21f5ce80b5 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -250,7 +250,7 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. #elif ENABLED(PARKING_EXTRUDER) void pe_solenoid_init() { - LOOP_LE_N(n, 1) pe_solenoid_set_pin_state(n, !PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE); + for (uint8_t n = 0; n <= 1; ++n) pe_solenoid_set_pin_state(n, !PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE); } void pe_solenoid_set_pin_state(const uint8_t extruder_num, const uint8_t state) { diff --git a/Marlin/src/pins/pinsDebug.h b/Marlin/src/pins/pinsDebug.h index a342d546c4..4d51de52c8 100644 --- a/Marlin/src/pins/pinsDebug.h +++ b/Marlin/src/pins/pinsDebug.h @@ -206,7 +206,7 @@ inline void report_pin_state_extended(const pin_t pin, const bool ignore, const return true; }; - LOOP_L_N(x, COUNT(pin_array)) { // scan entire array and report all instances of this pin + for (uint8_t x = 0; x < COUNT(pin_array); ++x) { // scan entire array and report all instances of this pin if (GET_ARRAY_PIN(x) == pin) { if (!found) { // report digital and analog pin number only on the first time through if (start_string) SERIAL_ECHOF(start_string); diff --git a/Marlin/src/sd/Sd2Card.cpp b/Marlin/src/sd/Sd2Card.cpp index 81cc032304..7deebd4776 100644 --- a/Marlin/src/sd/Sd2Card.cpp +++ b/Marlin/src/sd/Sd2Card.cpp @@ -74,7 +74,7 @@ #else static uint8_t CRC7(const uint8_t *data, uint8_t n) { uint8_t crc = 0; - LOOP_L_N(i, n) { + for (uint8_t i = 0; i < n; ++i) { uint8_t d = data[i]; d ^= crc << 1; if (d & 0x80) d ^= 9; @@ -111,7 +111,7 @@ uint8_t DiskIODriver_SPI_SD::cardCommand(const uint8_t cmd, const uint32_t arg) d[5] = CRC7(d, 5); // Send message - LOOP_L_N(k, 6) spiSend(d[k]); + for (uint8_t k = 0; k < 6; ++k) spiSend(d[k]); #else // Send command @@ -268,7 +268,7 @@ bool DiskIODriver_SPI_SD::init(const uint8_t sckRateID, const pin_t chipSelectPi spiInit(spiRate_); // Must supply min of 74 clock cycles with CS high. - LOOP_L_N(i, 10) spiSend(0xFF); + for (uint8_t i = 0; i < 10; ++i) spiSend(0xFF); hal.watchdog_refresh(); // In case init takes too long @@ -294,7 +294,7 @@ bool DiskIODriver_SPI_SD::init(const uint8_t sckRateID, const pin_t chipSelectPi } // Get the last byte of r7 response - LOOP_L_N(i, 4) status_ = spiRec(); + for (uint8_t i = 0; i < 4; ++i) status_ = spiRec(); if (status_ == 0xAA) { type(SD_CARD_TYPE_SD2); break; @@ -325,7 +325,7 @@ bool DiskIODriver_SPI_SD::init(const uint8_t sckRateID, const pin_t chipSelectPi } if ((spiRec() & 0xC0) == 0xC0) type(SD_CARD_TYPE_SDHC); // Discard rest of ocr - contains allowed voltage range - LOOP_L_N(i, 3) spiRec(); + for (uint8_t i = 0; i < 3; ++i) spiRec(); } chipDeselect(); diff --git a/Marlin/src/sd/SdBaseFile.cpp b/Marlin/src/sd/SdBaseFile.cpp index 98cbe9ba9d..46312bca82 100644 --- a/Marlin/src/sd/SdBaseFile.cpp +++ b/Marlin/src/sd/SdBaseFile.cpp @@ -209,7 +209,7 @@ bool SdBaseFile::dirEntry(dir_t *dir) { */ void SdBaseFile::dirName(const dir_t &dir, char *name) { uint8_t j = 0; - LOOP_L_N(i, 11) { + for (uint8_t i = 0; i < 11; ++i) { if (dir.name[i] == ' ')continue; if (i == 8) name[j++] = '.'; name[j++] = dir.name[i]; @@ -350,10 +350,10 @@ int8_t SdBaseFile::lsPrintNext(const uint8_t flags, const uint8_t indent) { && DIR_IS_FILE_OR_SUBDIR(&dir)) break; } // indent for dir level - LOOP_L_N(i, indent) SERIAL_CHAR(' '); + for (uint8_t i = 0; i < indent; ++i) SERIAL_CHAR(' '); // print name - LOOP_L_N(i, 11) { + for (uint8_t i = 0; i < 11; ++i) { if (dir.name[i] == ' ')continue; if (i == 8) { SERIAL_CHAR('.'); @@ -504,7 +504,7 @@ bool SdBaseFile::mkdir(SdBaseFile * const parent, const uint8_t dname[11] dir_t d; memcpy(&d, p, sizeof(d)); d.name[0] = '.'; - LOOP_S_L_N(i, 1, 11) d.name[i] = ' '; + for (uint8_t i = 1; i < 11; ++i) d.name[i] = ' '; // cache block for '.' and '..' uint32_t block = vol_->clusterStartBlock(firstCluster_); @@ -771,7 +771,7 @@ bool SdBaseFile::open(SdBaseFile * const dirFile, const uint8_t dname[11] if (!dirFile->seekSet(32 * index)) return false; // Dir entries write loop: [LFN] + SFN(1) - LOOP_L_N(dirWriteIdx, reqEntriesNum) { + for (uint8_t dirWriteIdx = 0; dirWriteIdx < reqEntriesNum; ++dirWriteIdx) { index = (dirFile->curPosition_ / 32) & 0xF; p = dirFile->readDirCache(); // LFN or SFN Entry? @@ -1137,7 +1137,7 @@ bool SdBaseFile::openNext(SdBaseFile *dirFile, const uint8_t oflag) { */ void SdBaseFile::getLFNName(vfat_t *pFatDir, char *lname, const uint8_t sequenceNumber) { const uint8_t startOffset = (sequenceNumber - 1) * FILENAME_LENGTH; - LOOP_L_N(i, FILENAME_LENGTH) { + for (uint8_t i = 0; i < FILENAME_LENGTH; ++i) { const uint16_t utf16_ch = (i >= 11) ? pFatDir->name3[i - 11] : (i >= 5) ? pFatDir->name2[i - 5] : pFatDir->name1[i]; #if ENABLED(UTF_FILENAME_SUPPORT) // We can't reconvert to UTF-8 here as UTF-8 is variable-size encoding, but joining LFN blocks @@ -1158,7 +1158,7 @@ bool SdBaseFile::openNext(SdBaseFile *dirFile, const uint8_t oflag) { void SdBaseFile::setLFNName(vfat_t *pFatDir, char *lname, const uint8_t sequenceNumber) { const uint8_t startOffset = (sequenceNumber - 1) * FILENAME_LENGTH, nameLength = strlen(lname); - LOOP_L_N(i, FILENAME_LENGTH) { + for (uint8_t i = 0; i < FILENAME_LENGTH; ++i) { uint16_t ch = 0; if ((startOffset + i) < nameLength) ch = lname[startOffset + i]; @@ -1479,7 +1479,7 @@ int8_t SdBaseFile::readDir(dir_t * const dir, char * const longFilename) { n = (seq - 1) * (FILENAME_LENGTH); - LOOP_L_N(i, FILENAME_LENGTH) { + for (uint8_t i = 0; i < FILENAME_LENGTH; ++i) { const uint16_t utf16_ch = (i >= 11) ? VFAT->name3[i - 11] : (i >= 5) ? VFAT->name2[i - 5] : VFAT->name1[i]; #if ENABLED(UTF_FILENAME_SUPPORT) // We can't reconvert to UTF-8 here as UTF-8 is variable-size encoding, but joining LFN blocks @@ -1627,7 +1627,7 @@ bool SdBaseFile::remove() { // Check if the entry has a LFN bool lastEntry = false; // loop back to search for any LFN entries related to this file - LOOP_S_LE_N(sequenceNumber, 1, VFAT_ENTRIES_LIMIT) { + for (uint8_t sequenceNumber = 1; sequenceNumber <= VFAT_ENTRIES_LIMIT; ++sequenceNumber) { dirIndex_ = (dirIndex_ - 1) & 0xF; if (dirBlock_ == 0) break; if (dirIndex_ == 0xF) dirBlock_--; diff --git a/Marlin/src/sd/cardreader.cpp b/Marlin/src/sd/cardreader.cpp index 811351ec8c..40c1f09f11 100644 --- a/Marlin/src/sd/cardreader.cpp +++ b/Marlin/src/sd/cardreader.cpp @@ -190,7 +190,7 @@ CardReader::CardReader() { // char *createFilename(char * const buffer, const dir_t &p) { char *pos = buffer; - LOOP_L_N(i, 11) { + for (uint8_t i = 0; i < 11; ++i) { if (p.name[i] == ' ') continue; if (i == 8) *pos++ = '.'; *pos++ = p.name[i]; @@ -650,7 +650,7 @@ void CardReader::getAbsFilenameInCWD(char *dst) { if (cnt < MAXPATHNAMELENGTH) { *dst = '/'; dst++; cnt++; } }; - LOOP_L_N(i, workDirDepth) // Loop down to current work dir + for (uint8_t i = 0; i < workDirDepth; ++i) // Loop down to current work dir appendAtom(workDirParents[i]); if (cnt < MAXPATHNAMELENGTH - (FILENAME_LENGTH) - 1) { // Leave room for filename and nul @@ -1377,7 +1377,7 @@ void CardReader::cdroot() { #if ENABLED(SDSORT_DYNAMIC_RAM) delete [] sort_order; #if ENABLED(SDSORT_CACHE_NAMES) - LOOP_L_N(i, sort_count) { + for (uint8_t i = 0; i < sort_count; ++i) { free(sortshort[i]); // strdup free(sortnames[i]); // strdup } From ad0d700a3e783943a722fec00ee3ac24020691ba Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 3 Jun 2023 00:22:16 +0000 Subject: [PATCH 500/659] [cron] Bump distribution date (2023-06-03) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index dbb481833c..361b1035d0 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-02" +//#define STRING_DISTRIBUTION_DATE "2023-06-03" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index e1e4a9a8af..69937ac7fc 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-02" + #define STRING_DISTRIBUTION_DATE "2023-06-03" #endif /** From a6b56d171d855429d1f0249fcc1ffe64881994f4 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sat, 3 Jun 2023 15:37:29 +1200 Subject: [PATCH 501/659] =?UTF-8?q?=F0=9F=8E=A8=20Lowercase=20followup=20(?= =?UTF-8?q?#25923)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25914 --- Marlin/src/lcd/tft/canvas.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/lcd/tft/canvas.cpp b/Marlin/src/lcd/tft/canvas.cpp index 0894f7afb9..ac3a2d76c3 100644 --- a/Marlin/src/lcd/tft/canvas.cpp +++ b/Marlin/src/lcd/tft/canvas.cpp @@ -85,10 +85,10 @@ void Canvas::addText(uint16_t x, uint16_t y, uint16_t color, uint16_t *string, u if (stringWidth + pGlyph->BBXWidth > maxWidth) break; switch (getFontType()) { case FONT_MARLIN_GLYPHS_1BPP: - addImage(x + stringWidth + pGlyph->BBXOffsetX, y + getFontAscent() - pGlyph->BBXHeight - pGlyph->BBXOffsetY, pGlyph->BBXWidth, pGlyph->BBXHeight, GREYSCALE1, ((uint8_t *)glyph) + sizeof(glyph_t), &color); + addImage(x + stringWidth + pGlyph->BBXOffsetX, y + getFontAscent() - pGlyph->BBXHeight - pGlyph->BBXOffsetY, pGlyph->BBXWidth, pGlyph->BBXHeight, GREYSCALE1, ((uint8_t *)pGlyph) + sizeof(glyph_t), &color); break; case FONT_MARLIN_GLYPHS_2BPP: - addImage(x + stringWidth + pGlyph->BBXOffsetX, y + getFontAscent() - pGlyph->BBXHeight - pGlyph->BBXOffsetY, pGlyph->BBXWidth, pGlyph->BBXHeight, GREYSCALE2, ((uint8_t *)glyph) + sizeof(glyph_t), colors); + addImage(x + stringWidth + pGlyph->BBXOffsetX, y + getFontAscent() - pGlyph->BBXHeight - pGlyph->BBXOffsetY, pGlyph->BBXWidth, pGlyph->BBXHeight, GREYSCALE2, ((uint8_t *)pGlyph) + sizeof(glyph_t), colors); break; } stringWidth += pGlyph->DWidth; From 739f1027f8e12da28d15e1de78a5b7ecc49c3b12 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sat, 3 Jun 2023 15:47:57 +1200 Subject: [PATCH 502/659] =?UTF-8?q?=F0=9F=94=A8=20STM32H723VG=20(1024KB)?= =?UTF-8?q?=20(#25921)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/pins.h | 6 +- ...M32H723Vx.json => marlin_STM32H723VE.json} | 4 +- .../PlatformIO/boards/marlin_STM32H723VG.json | 61 ++ .../PeripheralPins.c | 0 .../PinNamesVar.h | 0 .../ldscript.ld | 0 .../variant_MARLIN_STM32H723VE.cpp} | 0 .../variant_MARLIN_STM32H723VE.h} | 0 .../variants/MARLIN_H723VG/PeripheralPins.c | 590 ++++++++++++++++++ .../variants/MARLIN_H723VG/PinNamesVar.h | 108 ++++ .../variants/MARLIN_H723VG/ldscript.ld | 174 ++++++ .../variant_MARLIN_STM32H723VG.cpp | 273 ++++++++ .../variant_MARLIN_STM32H723VG.h | 269 ++++++++ ini/renamed.ini | 3 + ini/stm32h7.ini | 24 +- 15 files changed, 1501 insertions(+), 11 deletions(-) rename buildroot/share/PlatformIO/boards/{marlin_STM32H723Vx.json => marlin_STM32H723VE.json} (96%) create mode 100644 buildroot/share/PlatformIO/boards/marlin_STM32H723VG.json rename buildroot/share/PlatformIO/variants/{MARLIN_H723Vx => MARLIN_H723VE}/PeripheralPins.c (100%) rename buildroot/share/PlatformIO/variants/{MARLIN_H723Vx => MARLIN_H723VE}/PinNamesVar.h (100%) rename buildroot/share/PlatformIO/variants/{MARLIN_H723Vx => MARLIN_H723VE}/ldscript.ld (100%) rename buildroot/share/PlatformIO/variants/{MARLIN_H723Vx/variant_MARLIN_STM32H723VX.cpp => MARLIN_H723VE/variant_MARLIN_STM32H723VE.cpp} (100%) rename buildroot/share/PlatformIO/variants/{MARLIN_H723Vx/variant_MARLIN_STM32H723VX.h => MARLIN_H723VE/variant_MARLIN_STM32H723VE.h} (100%) create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723VG/PeripheralPins.c create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723VG/PinNamesVar.h create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723VG/ldscript.ld create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723VG/variant_MARLIN_STM32H723VG.cpp create mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723VG/variant_MARLIN_STM32H723VG.h diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 77c2fc8037..0ae0312dae 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -810,11 +810,11 @@ #elif MB(BTT_SKR_SE_BX_V3) #include "stm32h7/pins_BTT_SKR_SE_BX_V3.h" // STM32H7 env:BTT_SKR_SE_BX #elif MB(BTT_SKR_V3_0) - #include "stm32h7/pins_BTT_SKR_V3_0.h" // STM32H7 env:STM32H723Vx_btt env:STM32H743Vx_btt + #include "stm32h7/pins_BTT_SKR_V3_0.h" // STM32H743Vx/STM32H723VG env:STM32H743Vx_btt env:STM32H723VG_btt #elif MB(BTT_SKR_V3_0_EZ) - #include "stm32h7/pins_BTT_SKR_V3_0_EZ.h" // STM32H7 env:STM32H723Vx_btt env:STM32H743Vx_btt + #include "stm32h7/pins_BTT_SKR_V3_0_EZ.h" // STM32H743Vx/STM32H723VG env:STM32H743Vx_btt env:STM32H723VG_btt #elif MB(BTT_OCTOPUS_MAX_EZ_V1_0) - #include "stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h" // STM32H7 env:STM32H723Vx_btt env:STM32H723Zx_btt + #include "stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h" // STM32H723Zx/STM32H723VE env:STM32H723Zx_btt env:STM32H723VE_btt #elif MB(TEENSY41) #include "teensy4/pins_TEENSY41.h" // Teensy-4.x env:teensy41 #elif MB(T41U5XBB) diff --git a/buildroot/share/PlatformIO/boards/marlin_STM32H723Vx.json b/buildroot/share/PlatformIO/boards/marlin_STM32H723VE.json similarity index 96% rename from buildroot/share/PlatformIO/boards/marlin_STM32H723Vx.json rename to buildroot/share/PlatformIO/boards/marlin_STM32H723VE.json index a2154d448a..3941b3d00a 100644 --- a/buildroot/share/PlatformIO/boards/marlin_STM32H723Vx.json +++ b/buildroot/share/PlatformIO/boards/marlin_STM32H723VE.json @@ -6,7 +6,7 @@ "f_cpu": "550000000L", "mcu": "stm32h723vet6", "product_line": "STM32H723xx", - "variant": "MARLIN_H723Vx" + "variant": "MARLIN_H723VE" }, "connectivity": [ "can", @@ -56,6 +56,6 @@ "use_1200bps_touch": false, "wait_for_upload_port": false }, - "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32h723ze.html", + "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32h723ve.html", "vendor": "ST" } diff --git a/buildroot/share/PlatformIO/boards/marlin_STM32H723VG.json b/buildroot/share/PlatformIO/boards/marlin_STM32H723VG.json new file mode 100644 index 0000000000..bf1fc961af --- /dev/null +++ b/buildroot/share/PlatformIO/boards/marlin_STM32H723VG.json @@ -0,0 +1,61 @@ +{ + "build": { + "core": "stm32", + "cpu": "cortex-m7", + "extra_flags": "-DSTM32H7xx -DSTM32H723xx", + "f_cpu": "550000000L", + "mcu": "stm32h723vzt6", + "product_line": "STM32H723xx", + "variant": "MARLIN_H723VG" + }, + "connectivity": [ + "can", + "ethernet" + ], + "debug": { + "jlink_device": "STM32H723VG", + "openocd_target": "stm32h7x", + "svd_path": "STM32H7x3.svd", + "tools": { + "stlink": { + "server": { + "arguments": [ + "-f", + "scripts/interface/stlink.cfg", + "-c", + "transport select hla_swd", + "-f", + "scripts/target/stm32h7x.cfg", + "-c", + "reset_config none" + ], + "executable": "bin/openocd", + "package": "tool-openocd" + } + } + } + }, + "frameworks": [ + "arduino", + "stm32cube" + ], + "name": "STM32H723VG (564k RAM. 1024k Flash)", + "upload": { + "disable_flushing": false, + "maximum_ram_size": 577536, + "maximum_size": 1048576, + "protocol": "stlink", + "protocols": [ + "stlink", + "dfu", + "jlink", + "cmsis-dap" + ], + "offset_address": "0x8020000", + "require_upload_port": true, + "use_1200bps_touch": false, + "wait_for_upload_port": false + }, + "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32h723vg.html", + "vendor": "ST" +} diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_H723VE/PeripheralPins.c similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H723Vx/PeripheralPins.c rename to buildroot/share/PlatformIO/variants/MARLIN_H723VE/PeripheralPins.c diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/PinNamesVar.h b/buildroot/share/PlatformIO/variants/MARLIN_H723VE/PinNamesVar.h similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H723Vx/PinNamesVar.h rename to buildroot/share/PlatformIO/variants/MARLIN_H723VE/PinNamesVar.h diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/ldscript.ld b/buildroot/share/PlatformIO/variants/MARLIN_H723VE/ldscript.ld similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H723Vx/ldscript.ld rename to buildroot/share/PlatformIO/variants/MARLIN_H723VE/ldscript.ld diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/variant_MARLIN_STM32H723VX.cpp b/buildroot/share/PlatformIO/variants/MARLIN_H723VE/variant_MARLIN_STM32H723VE.cpp similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H723Vx/variant_MARLIN_STM32H723VX.cpp rename to buildroot/share/PlatformIO/variants/MARLIN_H723VE/variant_MARLIN_STM32H723VE.cpp diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Vx/variant_MARLIN_STM32H723VX.h b/buildroot/share/PlatformIO/variants/MARLIN_H723VE/variant_MARLIN_STM32H723VE.h similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H723Vx/variant_MARLIN_STM32H723VX.h rename to buildroot/share/PlatformIO/variants/MARLIN_H723VE/variant_MARLIN_STM32H723VE.h diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723VG/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_H723VG/PeripheralPins.c new file mode 100644 index 0000000000..e484edd1ad --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723VG/PeripheralPins.c @@ -0,0 +1,590 @@ +/* + ******************************************************************************* + * Copyright (c) 2020, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ +/* + * Automatically generated from STM32H723VEHx.xml, STM32H723VETx.xml + * STM32H723VGHx.xml, STM32H723VGTx.xml + * STM32H730VBHx.xml, STM32H730VBTx.xml + * STM32H733VGHx.xml, STM32H733VGTx.xml + * CubeMX DB release 6.0.60 + */ +#if !defined(CUSTOM_PERIPHERAL_PINS) +#include "Arduino.h" +#include "PeripheralPins.h" + +/* ===== + * Notes: + * - The pins mentioned Px_y_ALTz are alternative possibilities which use other + * HW peripheral instances. You can use them the same way as any other "normal" + * pin (i.e. analogWrite(PA7_ALT1, 128);). + * + * - Commented lines are alternative possibilities which are not used per default. + * If you change them, you will have to know what you do + * ===== + */ + +//*** ADC *** + +#ifdef HAL_ADC_MODULE_ENABLED +WEAK const PinMap PinMap_ADC[] = { + {PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_INP16 + {PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_INP17 + {PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_INP14 + {PA_2_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC2_INP14 + {PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_INP15 + {PA_3_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC2_INP15 + {PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_INP18 + {PA_4_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC2_INP18 + {PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 19, 0)}, // ADC1_INP19 + {PA_5_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 19, 0)}, // ADC2_INP19 + {PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_INP3 + {PA_6_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC2_INP3 + {PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_INP7 + {PA_7_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC2_INP7 + {PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_INP9 + {PB_0_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC2_INP9 + {PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_INP5 + {PB_1_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC2_INP5 + {PC_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_INP10 + {PC_0_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC2_INP10 + {PC_0_ALT2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC3_INP10 + {PC_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_INP11 + {PC_1_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_INP11 + {PC_1_ALT2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC3_INP11 + {PC_2_C, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC3_INP0 + {PC_3_C, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_INP1 + {PC_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_INP4 + {PC_4_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC2_INP4 + {PC_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_INP8 + {PC_5_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC2_INP8 + {NC, NP, 0} +}; +#endif + +//*** DAC *** + +#ifdef HAL_DAC_MODULE_ENABLED +WEAK const PinMap PinMap_DAC[] = { + {PA_4, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC1_OUT1 + {PA_5, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC1_OUT2 + {NC, NP, 0} +}; +#endif + +//*** I2C *** + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SDA[] = { + {PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_7_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, + {PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_9_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, + {PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PC_9, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + {PC_9_ALT1, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C5)}, + {PC_10, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C5)}, + {PD_13, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SCL[] = { + {PA_8, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + {PA_8_ALT1, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C5)}, + {PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_6_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, + {PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, + {PB_8_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, + {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PC_11, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C5)}, + {PD_12, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, + {NC, NP, 0} +}; +#endif + +//*** TIM *** + +#ifdef HAL_TIM_MODULE_ENABLED +WEAK const PinMap PinMap_TIM[] = { + {PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + {PA_0_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1 + {PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 + {PA_1_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2 + {PA_1_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 1)}, // TIM15_CH1N + {PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 + {PA_2_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3 + {PA_2_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 0)}, // TIM15_CH1 + {PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 + {PA_3_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 4, 0)}, // TIM5_CH4 + {PA_3_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 2, 0)}, // TIM15_CH2 + {PA_5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + {PA_5_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N + {PA_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PA_6_ALT1, TIM13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1 + {PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PA_7_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PA_7_ALT2, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N + {PA_7_ALT3, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1 + {PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 + {PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + {PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + {PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + {PA_15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + {PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PB_0_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 + {PB_0_ALT2, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N + {PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PB_1_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 + {PB_1_ALT2, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N + {PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 + {PB_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PB_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PB_6, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 + {PB_6_ALT1, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 1)}, // TIM16_CH1N + {PB_7, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 + {PB_7_ALT1, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17, 1, 1)}, // TIM17_CH1N + {PB_8, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 + {PB_8_ALT1, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 0)}, // TIM16_CH1 + {PB_9, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 + {PB_9_ALT1, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17, 1, 0)}, // TIM17_CH1 + {PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 + {PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 + {PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PB_14_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N + {PB_14_ALT2, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM12, 1, 0)}, // TIM12_CH1 + {PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PB_15_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N + {PB_15_ALT2, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM12, 2, 0)}, // TIM12_CH2 + {PC_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 + {PC_6_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1 + {PC_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 + {PC_7_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2 + {PC_8, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 + {PC_8_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 0)}, // TIM8_CH3 + {PC_9, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 + {PC_9_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 4, 0)}, // TIM8_CH4 + {PC_12, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM15, 1, 0)}, // TIM15_CH1 + {PD_12, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 + {PD_13, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 + {PD_14, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 + {PD_15, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 + {PE_4, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 1)}, // TIM15_CH1N + {PE_5, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 0)}, // TIM15_CH1 + {PE_6, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 2, 0)}, // TIM15_CH2 + {PE_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PE_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 + {PE_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {PE_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 + {PE_12, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N + {PE_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + {PE_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + {NC, NP, 0} +}; +#endif + +//*** UART *** + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_TX[] = { + {PA_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PA_2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_9, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, + {PA_9_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PA_12, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_UART4)}, + {PA_15, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, + {PB_4, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, + {PB_6, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART)}, + {PB_6_ALT1, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, + {PB_6_ALT2, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_9, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PB_13, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, + {PB_14, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)}, + {PC_6, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, + {PC_10, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PC_10_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PC_12, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_1, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PD_5, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_8, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_15, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, + {PE_1, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, + {PE_3, USART10, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_USART10)}, + {PE_8, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_RX[] = { + {PA_1, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PA_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_8, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, + {PA_10, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, + {PA_10_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PA_11, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_UART4)}, + {PB_3, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, + {PB_5, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, + {PB_7, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART)}, + {PB_7_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_8, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PB_12, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, + {PB_15, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)}, + {PC_7, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, + {PC_11, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PC_11_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PD_2, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_6, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_9, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_14, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, + {PE_0, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, + {PE_2, USART10, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART10)}, + {PE_7, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_RTS[] = { + {PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_12, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, + {PA_12_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PA_15, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_14, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_14_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PC_8, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_4, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_12, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_13, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, + {PD_15, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, + {PE_9, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_CTS[] = { + {PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_11, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, + {PA_11_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PB_13, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PB_15, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, + {PC_9, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, + {PD_0, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, + {PD_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PD_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, + {PD_14, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, + {PE_10, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, + {NC, NP, 0} +}; +#endif + +//*** SPI *** + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MOSI[] = { + {PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_7_ALT1, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_2, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI3)}, + {PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_5_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI3)}, + {PB_5_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_1, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_3_C, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_12, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PD_6, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI3)}, + {PD_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PE_6, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PE_14, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MISO[] = { + {PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_6_ALT1, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_4_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_2_C, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_11, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PE_5, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PE_13, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_SCLK[] = { + {PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_5_ALT1, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PA_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PA_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PB_3_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PB_3_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PB_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PC_10, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PC_12, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI6)}, + {PD_3, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PE_2, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PE_12, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_SSEL[] = { + {PA_0, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI6)}, + {PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PA_4_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, + {PA_11, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_15_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, + {PA_15_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI6)}, + {PB_4, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI2)}, + {PB_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, + {PE_4, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {PE_11, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, + {NC, NP, 0} +}; +#endif + +//*** FDCAN *** + +#ifdef HAL_FDCAN_MODULE_ENABLED +WEAK const PinMap PinMap_CAN_RD[] = { + {PA_11, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PB_5, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, + {PB_8, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PB_12, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, + {PD_0, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PD_12, FDCAN3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_FDCAN3)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_FDCAN_MODULE_ENABLED +WEAK const PinMap PinMap_CAN_TD[] = { + {PA_12, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PB_6, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, + {PB_9, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PB_13, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, + {PD_1, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, + {PD_13, FDCAN3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_FDCAN3)}, + {NC, NP, 0} +}; +#endif + +//*** ETHERNET *** + +#if defined(HAL_ETH_MODULE_ENABLED) || defined(HAL_ETH_LEGACY_MODULE_ENABLED) +WEAK const PinMap PinMap_Ethernet[] = { + {PA_0, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_CRS + {PA_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_REF_CLK + {PA_1_ALT1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RX_CLK + {PA_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_MDIO + {PA_3, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_COL + {PA_7, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_CRS_DV + {PA_7_ALT1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RX_DV + {PA_9, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_ER + {PB_0, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD2 + {PB_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD3 + {PB_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_ER + {PB_5, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_PPS_OUT + {PB_8, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD3 + {PB_10, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RX_ER + {PB_11, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_EN + {PB_12, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD0 + {PB_13, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD1 + {PC_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_MDC + {PC_2_C, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD2 + {PC_3_C, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_CLK + {PC_4, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD0 + {PC_5, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD1 + {PE_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD3 + {NC, NP, 0} +}; +#endif + +//*** OCTOSPI *** + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA0[] = { + {PA_2, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PB_1, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PB_12, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PC_3_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PC_9, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {PD_11, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA1[] = { + {PB_0, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1 + {PC_10, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1 + {PD_12, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA2[] = { + {PA_3, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {PA_7, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {PB_13, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {PC_2_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {PE_2, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA3[] = { + {PA_1, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3 + {PA_6, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3 + {PD_13, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA4[] = { + {PC_1, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4 + {PD_4, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4 + {PE_7, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA5[] = { + {PC_2_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO5 + {PD_5, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO5 + {PE_8, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO5 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA6[] = { + {PC_3_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6 + {PD_6, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6 + {PE_9, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_DATA7[] = { + {PD_7, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO7 + {PE_10, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO7 + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_SCLK[] = { + {PA_3, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OCTOSPIM_P1)}, // OCTOSPIM_P1_CLK + {PB_2, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_CLK + {NC, NP, 0} +}; +#endif + +#ifdef HAL_OSPI_MODULE_ENABLED +WEAK const PinMap PinMap_OCTOSPI_SSEL[] = { + {PB_6, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS + {PB_10, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS + {PC_11, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS + {PE_11, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS + {NC, NP, 0} +}; +#endif + +//*** USB *** + +#if defined(HAL_PCD_MODULE_ENABLED) || defined(HAL_HCD_MODULE_ENABLED) +WEAK const PinMap PinMap_USB_OTG_HS[] = { +#ifdef USE_USB_HS_IN_FS + {PA_8, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_SOF + {PA_9, USB_OTG_HS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_HS_VBUS + {PA_10, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ID + {PA_11, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF_NONE)}, // USB_OTG_HS_DM + {PA_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF_NONE)}, // USB_OTG_HS_DP +#else + {PA_3, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D0 + {PA_5, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_CK + {PB_0, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D1 + {PB_1, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D2 + {PB_5, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D7 + {PB_10, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D3 + {PB_11, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D4 + {PB_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D5 + {PB_13, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D6 + {PC_0, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_STP + {PC_2_C, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_DIR + {PC_3_C, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_NXT +#endif /* USE_USB_HS_IN_FS */ + {NC, NP, 0} +}; +#endif + +//*** SD *** + +#ifdef HAL_SD_MODULE_ENABLED +WEAK const PinMap PinMap_SD[] = { + {PA_0, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_SDMMC2)}, // SDMMC2_CMD + {PB_3, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D2 + {PB_4, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D3 + {PB_8, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF7_SDMMC1)}, // SDMMC1_CKIN + {PB_8_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D4 + {PB_8_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D4 + {PB_9, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF7_SDMMC1)}, // SDMMC1_CDIR + {PB_9_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D5 + {PB_9_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D5 + {PB_13, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D0 + {PB_14, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D0 + {PB_15, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D1 + {PC_1, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_SDMMC2)}, // SDMMC2_CK + {PC_4, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_SDMMC2)}, // SDMMC2_CKIN + {PC_6, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SDMMC1)}, // SDMMC1_D0DIR + {PC_6_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D6 + {PC_6_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D6 + {PC_7, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SDMMC1)}, // SDMMC1_D123DIR + {PC_7_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D7 + {PC_7_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D7 + {PC_8, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D0 + {PC_9, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D1 + {PC_10, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D2 + {PC_11, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D3 + {PC_12, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_SDMMC1)}, // SDMMC1_CK + {PD_2, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_SDMMC1)}, // SDMMC1_CMD + {PD_6, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF11_SDMMC2)}, // SDMMC2_CK + {PD_7, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF11_SDMMC2)}, // SDMMC2_CMD + {NC, NP, 0} +}; +#endif + +#endif /* !CUSTOM_PERIPHERAL_PINS */ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723VG/PinNamesVar.h b/buildroot/share/PlatformIO/variants/MARLIN_H723VG/PinNamesVar.h new file mode 100644 index 0000000000..3bd0ed8fcd --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723VG/PinNamesVar.h @@ -0,0 +1,108 @@ +/* Dual pad pin name */ +PC_2_C = PC_2 | PDUAL, +PC_3_C = PC_3 | PDUAL, + +/* Alternate pin name */ +PA_0_ALT1 = PA_0 | ALT1, +PA_1_ALT1 = PA_1 | ALT1, +PA_1_ALT2 = PA_1 | ALT2, +PA_2_ALT1 = PA_2 | ALT1, +PA_2_ALT2 = PA_2 | ALT2, +PA_3_ALT1 = PA_3 | ALT1, +PA_3_ALT2 = PA_3 | ALT2, +PA_4_ALT1 = PA_4 | ALT1, +PA_4_ALT2 = PA_4 | ALT2, +PA_5_ALT1 = PA_5 | ALT1, +PA_6_ALT1 = PA_6 | ALT1, +PA_7_ALT1 = PA_7 | ALT1, +PA_7_ALT2 = PA_7 | ALT2, +PA_7_ALT3 = PA_7 | ALT3, +PA_8_ALT1 = PA_8 | ALT1, +PA_9_ALT1 = PA_9 | ALT1, +PA_10_ALT1 = PA_10 | ALT1, +PA_11_ALT1 = PA_11 | ALT1, +PA_12_ALT1 = PA_12 | ALT1, +PA_15_ALT1 = PA_15 | ALT1, +PA_15_ALT2 = PA_15 | ALT2, +PB_0_ALT1 = PB_0 | ALT1, +PB_0_ALT2 = PB_0 | ALT2, +PB_1_ALT1 = PB_1 | ALT1, +PB_1_ALT2 = PB_1 | ALT2, +PB_3_ALT1 = PB_3 | ALT1, +PB_3_ALT2 = PB_3 | ALT2, +PB_4_ALT1 = PB_4 | ALT1, +PB_4_ALT2 = PB_4 | ALT2, +PB_5_ALT1 = PB_5 | ALT1, +PB_5_ALT2 = PB_5 | ALT2, +PB_6_ALT1 = PB_6 | ALT1, +PB_6_ALT2 = PB_6 | ALT2, +PB_7_ALT1 = PB_7 | ALT1, +PB_8_ALT1 = PB_8 | ALT1, +PB_8_ALT2 = PB_8 | ALT2, +PB_9_ALT1 = PB_9 | ALT1, +PB_9_ALT2 = PB_9 | ALT2, +PB_14_ALT1 = PB_14 | ALT1, +PB_14_ALT2 = PB_14 | ALT2, +PB_15_ALT1 = PB_15 | ALT1, +PB_15_ALT2 = PB_15 | ALT2, +PC_0_ALT1 = PC_0 | ALT1, +PC_0_ALT2 = PC_0 | ALT2, +PC_1_ALT1 = PC_1 | ALT1, +PC_1_ALT2 = PC_1 | ALT2, +PC_4_ALT1 = PC_4 | ALT1, +PC_5_ALT1 = PC_5 | ALT1, +PC_6_ALT1 = PC_6 | ALT1, +PC_6_ALT2 = PC_6 | ALT2, +PC_7_ALT1 = PC_7 | ALT1, +PC_7_ALT2 = PC_7 | ALT2, +PC_8_ALT1 = PC_8 | ALT1, +PC_9_ALT1 = PC_9 | ALT1, +PC_10_ALT1 = PC_10 | ALT1, +PC_11_ALT1 = PC_11 | ALT1, + +/* SYS_WKUP */ +#ifdef PWR_WAKEUP_PIN1 + SYS_WKUP1 = PA_0, +#endif +#ifdef PWR_WAKEUP_PIN2 + SYS_WKUP2 = PA_2, +#endif +#ifdef PWR_WAKEUP_PIN3 + SYS_WKUP3 = NC, +#endif +#ifdef PWR_WAKEUP_PIN4 + SYS_WKUP4 = PC_13, +#endif +#ifdef PWR_WAKEUP_PIN5 + SYS_WKUP5 = NC, +#endif +#ifdef PWR_WAKEUP_PIN6 + SYS_WKUP6 = PC_1, +#endif +#ifdef PWR_WAKEUP_PIN7 + SYS_WKUP7 = NC, +#endif +#ifdef PWR_WAKEUP_PIN8 + SYS_WKUP8 = NC, +#endif + +/* USB */ +#ifdef USBCON + USB_OTG_HS_DM = PA_11, + USB_OTG_HS_DP = PA_12, + USB_OTG_HS_ID = PA_10, + USB_OTG_HS_SOF = PA_8, + USB_OTG_HS_ULPI_CK = PA_5, + USB_OTG_HS_ULPI_D0 = PA_3, + USB_OTG_HS_ULPI_D1 = PB_0, + USB_OTG_HS_ULPI_D2 = PB_1, + USB_OTG_HS_ULPI_D3 = PB_10, + USB_OTG_HS_ULPI_D4 = PB_11, + USB_OTG_HS_ULPI_D5 = PB_12, + USB_OTG_HS_ULPI_D6 = PB_13, + USB_OTG_HS_ULPI_D7 = PB_5, + USB_OTG_HS_ULPI_DIR = PC_2_C, + USB_OTG_HS_ULPI_NXT = PC_3_C, + USB_OTG_HS_ULPI_STP = PC_0, + USB_OTG_HS_VBUS = PA_9, +#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723VG/ldscript.ld b/buildroot/share/PlatformIO/variants/MARLIN_H723VG/ldscript.ld new file mode 100644 index 0000000000..6322861033 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723VG/ldscript.ld @@ -0,0 +1,174 @@ +/* +****************************************************************************** +** +** File : LinkerScript.ld +** +** Author : STM32CubeIDE +** +** Abstract : Linker script for STM32H7 series +** 512Kbytes FLASH and 560Kbytes RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +***************************************************************************** +** @attention +** +** Copyright (c) 2022 STMicroelectronics. +** All rights reserved. +** +** This software is licensed under terms that can be found in the LICENSE file +** in the root directory of this software component. +** If no LICENSE file comes with this software, it is provided AS-IS. +** +**************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = ORIGIN(RAM_D1) + LENGTH(RAM_D1); /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200 ; /* required amount of heap */ +_Min_Stack_Size = 0x400 ; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ + ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K + DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K + FLASH (rx) : ORIGIN = 0x8000000 + LD_FLASH_OFFSET, LENGTH = LD_MAX_SIZE - LD_FLASH_OFFSET + RAM_D1 (xrw) : ORIGIN = 0x24000000, LENGTH = 320K + RAM_D2 (xrw) : ORIGIN = 0x30000000, LENGTH = 32K + RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 16K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + *(.RamFunc) /* .RamFunc sections */ + *(.RamFunc*) /* .RamFunc* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM_D1 AT> FLASH + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss section */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM_D1 + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM_D1 + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723VG/variant_MARLIN_STM32H723VG.cpp b/buildroot/share/PlatformIO/variants/MARLIN_H723VG/variant_MARLIN_STM32H723VG.cpp new file mode 100644 index 0000000000..bfeb0f9abc --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723VG/variant_MARLIN_STM32H723VG.cpp @@ -0,0 +1,273 @@ +/* + ******************************************************************************* + * Copyright (c) 2020-2021, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ +#ifdef STM32H723xx +#include "pins_arduino.h" + +// Digital PinName array +const PinName digitalPin[] = { + PA_0, // D0/A0 + PA_1, // D1/A1 + PA_2, // D2/A2 + PA_3, // D3/A3 + PA_4, // D4/A4 + PA_5, // D5/A5 + PA_6, // D6/A6 + PA_7, // D7/A7 + PA_8, // D8 + PA_9, // D9 + PA_10, // D10 + PA_11, // D11 + PA_12, // D12 + PA_13, // D13 + PA_14, // D14 + PA_15, // D15 + PB_0, // D16/A8 + PB_1, // D17/A9 + PB_2, // D18 + PB_3, // D19 + PB_4, // D20 + PB_5, // D21 + PB_6, // D22 + PB_7, // D23 + PB_8, // D24 + PB_9, // D25 + PB_10, // D26 + PB_11, // D27 + PB_12, // D28 + PB_13, // D29 + PB_14, // D30 + PB_15, // D31 + PC_0, // D32/A10 + PC_1, // D33/A11 + PC_4, // D34/A12 + PC_5, // D35/A13 + PC_6, // D36 + PC_7, // D37 + PC_8, // D38 + PC_9, // D39 + PC_10, // D40 + PC_11, // D41 + PC_12, // D42 + PC_13, // D43 + PC_14, // D44 + PC_15, // D45 + PD_0, // D46 + PD_1, // D47 + PD_2, // D48 + PD_3, // D49 + PD_4, // D50 + PD_5, // D51 + PD_6, // D52 + PD_7, // D53 + PD_8, // D54 + PD_9, // D55 + PD_10, // D56 + PD_11, // D57 + PD_12, // D58 + PD_13, // D59 + PD_14, // D60 + PD_15, // D61 + PE_0, // D62 + PE_1, // D63 + PE_2, // D64 + PE_3, // D65 + PE_4, // D66 + PE_5, // D67 + PE_6, // D68 + PE_7, // D69 + PE_8, // D70 + PE_9, // D71 + PE_10, // D72 + PE_11, // D73 + PE_12, // D74 + PE_13, // D75 + PE_14, // D76 + PE_15, // D77 + PH_0, // D78 + PH_1, // D79 + PC_2_C, // D80/A14 + PC_3_C // D81/A15 +}; + +// Analog (Ax) pin number array +const uint32_t analogInputPin[] = { + 0, // A0, PA0 + 1, // A1, PA1 + 2, // A2, PA2 + 3, // A3, PA3 + 4, // A4, PA4 + 5, // A5, PA5 + 6, // A6, PA6 + 7, // A7, PA7 + 16, // A8, PB0 + 17, // A9, PB1 + 32, // A10, PC0 + 33, // A11, PC1 + 34, // A12, PC4 + 35, // A13, PC5 + 80, // A14, PC2_C + 81 // A15, PC3_C +}; + +void MPU_Config(void) +{ + MPU_Region_InitTypeDef MPU_InitStruct = {0}; + + /* Disables the MPU */ + HAL_MPU_Disable(); + + /** Initializes and configures the Region and the memory to be protected + */ + MPU_InitStruct.Enable = MPU_REGION_ENABLE; + MPU_InitStruct.Number = MPU_REGION_NUMBER0; + MPU_InitStruct.BaseAddress = 0x0; + MPU_InitStruct.Size = MPU_REGION_SIZE_4GB; + MPU_InitStruct.SubRegionDisable = 0x87; + MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; + MPU_InitStruct.AccessPermission = MPU_REGION_NO_ACCESS; + MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE; + MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE; + MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE; + MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; + + HAL_MPU_ConfigRegion(&MPU_InitStruct); + /* Enables the MPU */ + HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT); + +} + +/* + * @brief System Clock Configuration + * @param None + * @retval None + */ +WEAK void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {}; + + MPU_Config(); + + /** Supply configuration update enable + */ + HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY); + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0); + + while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {} + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48 | RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.HSI48State = RCC_HSI48_ON; // 48Mhz for USB + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 5; // 25Mhz / 5 = 5Mhz + RCC_OscInitStruct.PLL.PLLN = 110; // 25Mhz / 5 * 110 = 550Mhz + RCC_OscInitStruct.PLL.PLLP = 1; // 550Mhz / 1 = 550Mhz + RCC_OscInitStruct.PLL.PLLQ = 10; // 550Mhz / 10 = 55Mhz + RCC_OscInitStruct.PLL.PLLR = 10; // unused + RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2; + RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE; + RCC_OscInitStruct.PLL.PLLFRACN = 0; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2 + |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2; + RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2; + RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) + { + Error_Handler(); + } + + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB + | RCC_PERIPHCLK_SDMMC | RCC_PERIPHCLK_ADC + | RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_USART16 + | RCC_PERIPHCLK_USART234578 | RCC_PERIPHCLK_I2C123 + | RCC_PERIPHCLK_I2C4 | RCC_PERIPHCLK_SPI123 + | RCC_PERIPHCLK_SPI45 | RCC_PERIPHCLK_SPI6; + + /* HSI48 used for USB 48 Mhz */ + /* PLL1 qclk also used for FMC, SDMMC, RNG, SAI */ + /* PLL2 pclk is needed for adc max 80 Mhz (p,q,r same) */ + /* PLL2 pclk also used for LP timers 2,3,4,5, SPI 1,2,3 */ + /* PLL2 qclk is needed for uart, can, spi4,5,6 80 Mhz */ + /* PLL3 r clk is needed for i2c 80 Mhz (p,q,r same) */ + PeriphClkInitStruct.PLL2.PLL2M = 15; // M DIV 15 vco 25 / 15 ~ 1.667 Mhz + PeriphClkInitStruct.PLL2.PLL2N = 96; // N MUL 96 + PeriphClkInitStruct.PLL2.PLL2P = 2; // P div 2 + PeriphClkInitStruct.PLL2.PLL2Q = 2; // Q div 2 + PeriphClkInitStruct.PLL2.PLL2R = 2; // R div 2 + // RCC_PLL1VCIRANGE_0 Clock range frequency between 1 and 2 MHz + PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_0; + PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOMEDIUM; + PeriphClkInitStruct.PLL2.PLL2FRACN = 0; + PeriphClkInitStruct.PLL3.PLL3M = 15; // M DIV 15 vco 25 / 15 ~ 1.667 Mhz + PeriphClkInitStruct.PLL3.PLL3N = 96; // N MUL 96 + PeriphClkInitStruct.PLL3.PLL3P = 2; // P div 2 + PeriphClkInitStruct.PLL3.PLL3Q = 2; // Q div 2 + PeriphClkInitStruct.PLL3.PLL3R = 2; // R div 2 + // RCC_PLL1VCIRANGE_0 Clock range frequency between 1 and 2 MHz + PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3VCIRANGE_0; + PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3VCOMEDIUM; + PeriphClkInitStruct.PLL3.PLL3FRACN = 0; + // ADC from PLL2 pclk + PeriphClkInitStruct.AdcClockSelection = RCC_ADCCLKSOURCE_PLL2; + // USB from HSI48 + PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48; + // SDMMC from PLL1 qclk + PeriphClkInitStruct.SdmmcClockSelection = 0; + //PeriphClkInitStruct.SdmmcClockSelection = RCC_SDMMCCLKSOURCE_PLL; + // LPUART from PLL2 qclk + PeriphClkInitStruct.Lpuart1ClockSelection = 0; + //PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PLL2; + // USART from PLL2 qclk + PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_PLL2; + // USART from PLL2 qclk + PeriphClkInitStruct.Usart234578ClockSelection = 0; + //PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_PLL2; + // I2C123 from PLL3 rclk + PeriphClkInitStruct.I2c123ClockSelection = RCC_I2C123CLKSOURCE_PLL3; + // I2C4 from PLL3 rclk + PeriphClkInitStruct.I2c4ClockSelection = 0; + //PeriphClkInitStruct.I2c4ClockSelection = RCC_I2C4CLKSOURCE_PLL3; + // SPI123 from PLL2 pclk + PeriphClkInitStruct.Spi123ClockSelection = RCC_SPI123CLKSOURCE_PLL2; + // SPI45 from PLL2 qclk + PeriphClkInitStruct.Spi45ClockSelection = 0; + //PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_PLL2; + // SPI6 from PLL2 qclk + PeriphClkInitStruct.Spi6ClockSelection = 0; + //PeriphClkInitStruct.Spi6ClockSelection = RCC_SPI6CLKSOURCE_PLL2; + + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { + Error_Handler(); + } +} + +#endif /* ARDUINO_GENERIC_* */ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723VG/variant_MARLIN_STM32H723VG.h b/buildroot/share/PlatformIO/variants/MARLIN_H723VG/variant_MARLIN_STM32H723VG.h new file mode 100644 index 0000000000..8b67905680 --- /dev/null +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723VG/variant_MARLIN_STM32H723VG.h @@ -0,0 +1,269 @@ +/* + ******************************************************************************* + * Copyright (c) 2020, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ +#pragma once + +/*---------------------------------------------------------------------------- + * STM32 pins number + *----------------------------------------------------------------------------*/ +#define PA0 PIN_A0 +#define PA1 PIN_A1 +#define PA2 PIN_A2 +#define PA3 PIN_A3 +#define PA4 PIN_A4 +#define PA5 PIN_A5 +#define PA6 PIN_A6 +#define PA7 PIN_A7 +#define PA8 8 +#define PA9 9 +#define PA10 10 +#define PA11 11 +#define PA12 12 +#define PA13 13 +#define PA14 14 +#define PA15 15 +#define PB0 PIN_A8 +#define PB1 PIN_A9 +#define PB2 18 +#define PB3 19 +#define PB4 20 +#define PB5 21 +#define PB6 22 +#define PB7 23 +#define PB8 24 +#define PB9 25 +#define PB10 26 +#define PB11 27 +#define PB12 28 +#define PB13 29 +#define PB14 30 +#define PB15 31 +#define PC0 PIN_A10 +#define PC1 PIN_A11 +#define PC4 PIN_A12 +#define PC5 PIN_A13 +#define PC6 36 +#define PC7 37 +#define PC8 38 +#define PC9 39 +#define PC10 40 +#define PC11 41 +#define PC12 42 +#define PC13 43 +#define PC14 44 +#define PC15 45 +#define PD0 46 +#define PD1 47 +#define PD2 48 +#define PD3 49 +#define PD4 50 +#define PD5 51 +#define PD6 52 +#define PD7 53 +#define PD8 54 +#define PD9 55 +#define PD10 56 +#define PD11 57 +#define PD12 58 +#define PD13 59 +#define PD14 60 +#define PD15 61 +#define PE0 62 +#define PE1 63 +#define PE2 64 +#define PE3 65 +#define PE4 66 +#define PE5 67 +#define PE6 68 +#define PE7 69 +#define PE8 70 +#define PE9 71 +#define PE10 72 +#define PE11 73 +#define PE12 74 +#define PE13 75 +#define PE14 76 +#define PE15 77 +#define PH0 78 +#define PH1 79 +#define PC2_C PIN_A14 +#define PC3_C PIN_A15 +#define PC2 PC2_C +#define PC3 PC3_C + +// Alternate pins number +#define PA0_ALT1 (PA0 | ALT1) +#define PA1_ALT1 (PA1 | ALT1) +#define PA1_ALT2 (PA1 | ALT2) +#define PA2_ALT1 (PA2 | ALT1) +#define PA2_ALT2 (PA2 | ALT2) +#define PA3_ALT1 (PA3 | ALT1) +#define PA3_ALT2 (PA3 | ALT2) +#define PA4_ALT1 (PA4 | ALT1) +#define PA4_ALT2 (PA4 | ALT2) +#define PA5_ALT1 (PA5 | ALT1) +#define PA6_ALT1 (PA6 | ALT1) +#define PA7_ALT1 (PA7 | ALT1) +#define PA7_ALT2 (PA7 | ALT2) +#define PA7_ALT3 (PA7 | ALT3) +#define PA8_ALT1 (PA8 | ALT1) +#define PA9_ALT1 (PA9 | ALT1) +#define PA10_ALT1 (PA10 | ALT1) +#define PA11_ALT1 (PA11 | ALT1) +#define PA12_ALT1 (PA12 | ALT1) +#define PA15_ALT1 (PA15 | ALT1) +#define PA15_ALT2 (PA15 | ALT2) +#define PB0_ALT1 (PB0 | ALT1) +#define PB0_ALT2 (PB0 | ALT2) +#define PB1_ALT1 (PB1 | ALT1) +#define PB1_ALT2 (PB1 | ALT2) +#define PB3_ALT1 (PB3 | ALT1) +#define PB3_ALT2 (PB3 | ALT2) +#define PB4_ALT1 (PB4 | ALT1) +#define PB4_ALT2 (PB4 | ALT2) +#define PB5_ALT1 (PB5 | ALT1) +#define PB5_ALT2 (PB5 | ALT2) +#define PB6_ALT1 (PB6 | ALT1) +#define PB6_ALT2 (PB6 | ALT2) +#define PB7_ALT1 (PB7 | ALT1) +#define PB8_ALT1 (PB8 | ALT1) +#define PB8_ALT2 (PB8 | ALT2) +#define PB9_ALT1 (PB9 | ALT1) +#define PB9_ALT2 (PB9 | ALT2) +#define PB14_ALT1 (PB14 | ALT1) +#define PB14_ALT2 (PB14 | ALT2) +#define PB15_ALT1 (PB15 | ALT1) +#define PB15_ALT2 (PB15 | ALT2) +#define PC0_ALT1 (PC0 | ALT1) +#define PC0_ALT2 (PC0 | ALT2) +#define PC1_ALT1 (PC1 | ALT1) +#define PC1_ALT2 (PC1 | ALT2) +#define PC4_ALT1 (PC4 | ALT1) +#define PC5_ALT1 (PC5 | ALT1) +#define PC6_ALT1 (PC6 | ALT1) +#define PC6_ALT2 (PC6 | ALT2) +#define PC7_ALT1 (PC7 | ALT1) +#define PC7_ALT2 (PC7 | ALT2) +#define PC8_ALT1 (PC8 | ALT1) +#define PC9_ALT1 (PC9 | ALT1) +#define PC10_ALT1 (PC10 | ALT1) +#define PC11_ALT1 (PC11 | ALT1) + +#define NUM_DIGITAL_PINS 82 +#define NUM_DUALPAD_PINS 2 +#define NUM_ANALOG_INPUTS 16 + +// On-board LED pin number +#ifndef LED_BUILTIN + #define LED_BUILTIN PNUM_NOT_DEFINED +#endif + +// On-board user button +#ifndef USER_BTN + #define USER_BTN PNUM_NOT_DEFINED +#endif + +// SPI definitions +#ifndef PIN_SPI_SS + #define PIN_SPI_SS PA4 +#endif +#ifndef PIN_SPI_SS1 + #define PIN_SPI_SS1 PA15 +#endif +#ifndef PIN_SPI_SS2 + #define PIN_SPI_SS2 PNUM_NOT_DEFINED +#endif +#ifndef PIN_SPI_SS3 + #define PIN_SPI_SS3 PNUM_NOT_DEFINED +#endif +#ifndef PIN_SPI_MOSI + #define PIN_SPI_MOSI PA7 +#endif +#ifndef PIN_SPI_MISO + #define PIN_SPI_MISO PA6 +#endif +#ifndef PIN_SPI_SCK + #define PIN_SPI_SCK PA5 +#endif + +// I2C definitions +#ifndef PIN_WIRE_SDA + #define PIN_WIRE_SDA PB7 +#endif +#ifndef PIN_WIRE_SCL + #define PIN_WIRE_SCL PB6 +#endif + +// Timer Definitions +// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin +#ifndef TIMER_TONE + #define TIMER_TONE TIM6 +#endif +#ifndef TIMER_SERVO + #define TIMER_SERVO TIM7 +#endif + +// UART Definitions +#ifndef SERIAL_UART_INSTANCE + #define SERIAL_UART_INSTANCE 4 +#endif + +// Default pin used for generic 'Serial' instance +// Mandatory for Firmata +#ifndef PIN_SERIAL_RX + #define PIN_SERIAL_RX PA1 +#endif +#ifndef PIN_SERIAL_TX + #define PIN_SERIAL_TX PA0 +#endif + +// Extra HAL modules +#if !defined(HAL_DAC_MODULE_DISABLED) + #define HAL_DAC_MODULE_ENABLED +#endif +#if !defined(HAL_ETH_MODULE_DISABLED) + #define HAL_ETH_MODULE_ENABLED +#endif +#if !defined(HAL_OSPI_MODULE_DISABLED) + #define HAL_OSPI_MODULE_ENABLED +#endif +#if !defined(HAL_SD_MODULE_DISABLED) + #define HAL_SD_MODULE_ENABLED +#endif + +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus + // These serial port names are intended to allow libraries and architecture-neutral + // sketches to automatically default to the correct port name for a particular type + // of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, + // the first hardware serial port whose RX/TX pins are not dedicated to another use. + // + // SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor + // + // SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial + // + // SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library + // + // SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. + // + // SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX + // pins are NOT connected to anything by default. + #ifndef SERIAL_PORT_MONITOR + #define SERIAL_PORT_MONITOR Serial + #endif + #ifndef SERIAL_PORT_HARDWARE + #define SERIAL_PORT_HARDWARE Serial + #endif +#endif diff --git a/ini/renamed.ini b/ini/renamed.ini index ae1b5742b5..99fbde95d0 100644 --- a/ini/renamed.ini +++ b/ini/renamed.ini @@ -71,3 +71,6 @@ extends = renamed [env:BIGTREE_OCTOPUS_V1_F407_USB] ;=> STM32F407ZE_btt_USB extends = renamed + +[env:STM32H723Vx_btt] ;=> STM32H723VE_btt or STM32H723VG_btt +extends = renamed diff --git a/ini/stm32h7.ini b/ini/stm32h7.ini index e7617b1c96..5485e57e91 100644 --- a/ini/stm32h7.ini +++ b/ini/stm32h7.ini @@ -12,8 +12,8 @@ # H : High Performance # 7 : Cortex M7 core (0:M0, 1-2:M3, 3-4:M4, 7:M7) # 43 : Line/Features -# I : 176 pins -# I : 2048KB Flash-memory +# I : 176 pins (T:36, C:48 or 49, M:81, V:100, Z:144, I:176) +# I : 2048KB Flash-memory (C:256KB, D:384KB, E:512KB, G:1024KB) # T : LQFP package # 6 : -40...85°C (7: ...105°C) # @@ -61,14 +61,12 @@ upload_protocol = cmsis-dap debug_tool = cmsis-dap # -# BigTreeTech SKR V3.0 / SKR V3.0 EZ (STM32H723VGT6 ARM Cortex-M7) -# BigTreeTech Octopus Max EZ V1.0 (STM32H723VET6 ARM Cortex-M7) +# BigTreeTech STM32H723Vx ARM Cortex-M7 Common # -[env:STM32H723Vx_btt] +[STM32H723Vx_btt] extends = stm32_variant platform = ststm32@15.4.1 platform_packages = framework-arduinoststm32@~4.20200.220530 -board = marlin_STM32H723Vx board_build.offset = 0x20000 board_upload.offset_address = 0x08020000 build_flags = ${stm32_variant.build_flags} @@ -87,6 +85,20 @@ build_flags = ${stm32_variant.build_flags} upload_protocol = cmsis-dap debug_tool = cmsis-dap +# +# BigTreeTech Octopus Max EZ V1.0 (STM32H723VET6 ARM Cortex-M7) +# +[env:STM32H723VE_btt] +extends = STM32H723Vx_btt +board = marlin_STM32H723VE + +# +# BigTreeTech SKR V3.0 / SKR V3.0 EZ (STM32H723VGT6 ARM Cortex-M7) +# +[env:STM32H723VG_btt] +extends = STM32H723Vx_btt +board = marlin_STM32H723VG + # # BigTreeTech Octopus Pro V1.0 / Octopus Max EZ V1.0 (STM32H723ZET6 ARM Cortex-M7) # From ac954b57f764cf958000314efc20b725c2b8e054 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Fri, 2 Jun 2023 20:50:45 -0700 Subject: [PATCH 503/659] =?UTF-8?q?=F0=9F=A9=B9=20Endstop=20hit=20state=20?= =?UTF-8?q?followup=20(#25885)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25574 --- Marlin/src/inc/Conditionals_LCD.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index f2b5016272..b33720b2a5 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -833,8 +833,8 @@ #undef AVOID_OBSTACLES #undef ENDSTOPPULLUP_XMIN #undef ENDSTOPPULLUP_XMAX - #undef X_MIN_ENDSTOP_INVERTING - #undef X_MAX_ENDSTOP_INVERTING + #undef X_MIN_ENDSTOP_HIT_STATE + #undef X_MAX_ENDSTOP_HIT_STATE #undef X2_DRIVER_TYPE #undef X_ENABLE_ON #undef DISABLE_X From ba08dcfb76804a912380603b3f69831ea0d1d6eb Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 3 Jun 2023 04:40:07 -0500 Subject: [PATCH 504/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Fix?= =?UTF-8?q?=20narrowing=20conversions=20(#25924)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/types.h | 15 +++++++++++++++ .../src/feature/bedlevel/mbl/mesh_bed_leveling.h | 10 +++++----- Marlin/src/feature/bedlevel/ubl/ubl.h | 12 ++++++------ Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp | 8 ++++---- Marlin/src/libs/numtostr.cpp | 2 +- Marlin/src/module/motion.h | 3 --- Marlin/src/module/stepper.h | 3 +++ 7 files changed, 34 insertions(+), 19 deletions(-) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 7b5837efb8..57d1c5d5f7 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -479,6 +479,11 @@ struct XYval { FI XYval& operator>>=(const int &p) { _RSE(x); _RSE(y); return *this; } FI XYval& operator<<=(const int &p) { _LSE(x); _LSE(y); return *this; } + // Absolute difference between two objects + FI constexpr XYval diff(const XYZEval &rs) const { return { TERN(HAS_X_AXIS, T(_ABS(x - rs.x)), x), TERN(HAS_Y_AXIS, T(_ABS(y - rs.y)), y) }; } + FI constexpr XYval diff(const XYZval &rs) const { return { TERN(HAS_X_AXIS, T(_ABS(x - rs.x)), x), TERN(HAS_Y_AXIS, T(_ABS(y - rs.y)), y) }; } + FI constexpr XYval diff(const XYval &rs) const { return { T(_ABS(x - rs.x)), T(_ABS(y - rs.y)) }; } + // Exact comparisons. For floats a "NEAR" operation may be better. FI bool operator==(const XYval &rs) const { return x == rs.x && y == rs.y; } FI bool operator==(const XYZval &rs) const { return ENABLED(HAS_X_AXIS) XY_GANG(&& x == rs.x, && y == rs.y); } @@ -607,6 +612,11 @@ struct XYZval { FI constexpr XYZval operator<<(const int &p) const { return NUM_AXIS_ARRAY(_LS(x), _LS(y), _LS(z), _LS(i), _LS(j), _LS(k), _LS(u), _LS(v), _LS(w)); } FI constexpr XYZval operator-() const { return NUM_AXIS_ARRAY(-x, -y, -z, -i, -j, -k, -u, -v, -w); } + // Absolute difference between two objects + FI constexpr XYZval diff(const XYZEval &rs) const { return NUM_AXIS_ARRAY(T(_ABS(x - rs.x)), T(_ABS(y - rs.y)), T(_ABS(z - rs.z)), T(_ABS(i - rs.i)), T(_ABS(j - rs.j)), T(_ABS(k - rs.k)), T(_ABS(u - rs.u)), T(_ABS(v - rs.v)), T(_ABS(w - rs.w)) ); } + FI constexpr XYZval diff(const XYZval &rs) const { return NUM_AXIS_ARRAY(T(_ABS(x - rs.x)), T(_ABS(y - rs.y)), T(_ABS(z - rs.z)), T(_ABS(i - rs.i)), T(_ABS(j - rs.j)), T(_ABS(k - rs.k)), T(_ABS(u - rs.u)), T(_ABS(v - rs.v)), T(_ABS(w - rs.w)) ); } + FI constexpr XYZval diff(const XYval &rs) const { return NUM_AXIS_ARRAY(T(_ABS(x - rs.x)), T(_ABS(y - rs.y)), z, i, j, k, u, v, w ); } + // Modifier operators FI XYZval& operator+=(const XYval &rs) { XY_CODE(x += rs.x, y += rs.y); return *this; } FI XYZval& operator-=(const XYval &rs) { XY_CODE(x -= rs.x, y -= rs.y); return *this; } @@ -749,6 +759,11 @@ struct XYZEval { FI constexpr XYZEval operator<<(const int &p) const { return LOGICAL_AXIS_ARRAY(_LS(e), _LS(x), _LS(y), _LS(z), _LS(i), _LS(j), _LS(k), _LS(u), _LS(v), _LS(w)); } FI constexpr XYZEval operator-() const { return LOGICAL_AXIS_ARRAY(-e, -x, -y, -z, -i, -j, -k, -u, -v, -w); } + // Absolute difference between two objects + FI constexpr XYZEval diff(const XYZEval &rs) const { return LOGICAL_AXIS_ARRAY(T(_ABS(e - rs.e)), T(_ABS(x - rs.x)), T(_ABS(y - rs.y)), T(_ABS(z - rs.z)), T(_ABS(i - rs.i)), T(_ABS(j - rs.j)), T(_ABS(k - rs.k)), T(_ABS(u - rs.u)), T(_ABS(v - rs.v)), T(_ABS(w - rs.w)) ); } + FI constexpr XYZEval diff(const XYZval &rs) const { return LOGICAL_AXIS_ARRAY(0 , T(_ABS(x - rs.x)), T(_ABS(y - rs.y)), T(_ABS(z - rs.z)), T(_ABS(i - rs.i)), T(_ABS(j - rs.j)), T(_ABS(k - rs.k)), T(_ABS(u - rs.u)), T(_ABS(v - rs.v)), T(_ABS(w - rs.w)) ); } + FI constexpr XYZEval diff(const XYval &rs) const { return LOGICAL_AXIS_ARRAY(0 , T(_ABS(x - rs.x)), T(_ABS(y - rs.y)), z, i, j, k, u, v, w ); } + // Modifier operators FI XYZEval& operator+=(const XYval &rs) { XY_CODE(x += rs.x, y += rs.y); return *this; } FI XYZEval& operator-=(const XYval &rs) { XY_CODE(x -= rs.x, y -= rs.y); return *this; } diff --git a/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.h b/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.h index 0193b4f43e..cb4f36cd59 100644 --- a/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.h +++ b/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.h @@ -72,18 +72,18 @@ public: static float get_mesh_x(const uint8_t i) { return index_to_xpos[i]; } static float get_mesh_y(const uint8_t i) { return index_to_ypos[i]; } - static int8_t cell_index_x(const_float_t x) { + static uint8_t cell_index_x(const_float_t x) { int8_t cx = (x - (MESH_MIN_X)) * RECIPROCAL(MESH_X_DIST); return constrain(cx, 0, GRID_MAX_CELLS_X - 1); } - static int8_t cell_index_y(const_float_t y) { + static uint8_t cell_index_y(const_float_t y) { int8_t cy = (y - (MESH_MIN_Y)) * RECIPROCAL(MESH_Y_DIST); return constrain(cy, 0, GRID_MAX_CELLS_Y - 1); } - static xy_int8_t cell_indexes(const_float_t x, const_float_t y) { + static xy_uint8_t cell_indexes(const_float_t x, const_float_t y) { return { cell_index_x(x), cell_index_y(y) }; } - static xy_int8_t cell_indexes(const xy_pos_t &xy) { return cell_indexes(xy.x, xy.y); } + static xy_uint8_t cell_indexes(const xy_pos_t &xy) { return cell_indexes(xy.x, xy.y); } static int8_t probe_index_x(const_float_t x) { int8_t px = (x - (MESH_MIN_X) + 0.5f * (MESH_X_DIST)) * RECIPROCAL(MESH_X_DIST); @@ -107,7 +107,7 @@ public: static float get_z_offset() { return z_offset; } static float get_z_correction(const xy_pos_t &pos) { - const xy_int8_t ind = cell_indexes(pos); + const xy_uint8_t ind = cell_indexes(pos); const float x1 = index_to_xpos[ind.x], x2 = index_to_xpos[ind.x+1], y1 = index_to_ypos[ind.y], y2 = index_to_ypos[ind.y+1], z1 = calc_z0(pos.x, x1, z_values[ind.x][ind.y ], x2, z_values[ind.x+1][ind.y ]), diff --git a/Marlin/src/feature/bedlevel/ubl/ubl.h b/Marlin/src/feature/bedlevel/ubl/ubl.h index 785cb5d883..c9bc797429 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl.h +++ b/Marlin/src/feature/bedlevel/ubl/ubl.h @@ -141,26 +141,26 @@ public: return FLOOR((y - (MESH_MIN_Y)) * RECIPROCAL(MESH_Y_DIST)); } - static int8_t cell_index_x_valid(const_float_t x) { + static bool cell_index_x_valid(const_float_t x) { return WITHIN(cell_index_x_raw(x), 0, GRID_MAX_CELLS_X - 1); } - static int8_t cell_index_y_valid(const_float_t y) { + static bool cell_index_y_valid(const_float_t y) { return WITHIN(cell_index_y_raw(y), 0, GRID_MAX_CELLS_Y - 1); } - static int8_t cell_index_x(const_float_t x) { + static uint8_t cell_index_x(const_float_t x) { return constrain(cell_index_x_raw(x), 0, GRID_MAX_CELLS_X - 1); } - static int8_t cell_index_y(const_float_t y) { + static uint8_t cell_index_y(const_float_t y) { return constrain(cell_index_y_raw(y), 0, GRID_MAX_CELLS_Y - 1); } - static xy_int8_t cell_indexes(const_float_t x, const_float_t y) { + static xy_uint8_t cell_indexes(const_float_t x, const_float_t y) { return { cell_index_x(x), cell_index_y(y) }; } - static xy_int8_t cell_indexes(const xy_pos_t &xy) { return cell_indexes(xy.x, xy.y); } + static xy_uint8_t cell_indexes(const xy_pos_t &xy) { return cell_indexes(xy.x, xy.y); } static int8_t closest_x_index(const_float_t x) { const int8_t px = (x - (MESH_MIN_X) + (MESH_X_DIST) * 0.5) * RECIPROCAL(MESH_X_DIST); diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp index 1a2b6eb23a..053a68b77d 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp @@ -61,7 +61,7 @@ const xyze_pos_t &start = current_position, &end = destination; #endif - const xy_int8_t istart = cell_indexes(start), iend = cell_indexes(end); + const xy_uint8_t istart = cell_indexes(start), iend = cell_indexes(end); // A move within the same cell needs no splitting if (istart == iend) { @@ -108,7 +108,7 @@ const xy_float_t dist = end - start; const xy_bool_t neg { dist.x < 0, dist.y < 0 }; - const xy_int8_t ineg { int8_t(neg.x), int8_t(neg.y) }; + const xy_uint8_t ineg { uint8_t(neg.x), uint8_t(neg.y) }; const xy_float_t sign { neg.x ? -1.0f : 1.0f, neg.y ? -1.0f : 1.0f }; const xy_int8_t iadd { int8_t(iend.x == istart.x ? 0 : sign.x), int8_t(iend.y == istart.y ? 0 : sign.y) }; @@ -131,7 +131,7 @@ const bool inf_normalized_flag = isinf(e_normalized_dist); #endif - xy_int8_t icell = istart; + xy_uint8_t icell = istart; const float ratio = dist.y / dist.x, // Allow divide by zero c = start.y - ratio * start.x; @@ -252,7 +252,7 @@ * Generic case of a line crossing both X and Y Mesh lines. */ - xy_int8_t cnt = (istart - iend).ABS(); + xy_uint8_t cnt = istart.diff(iend); icell += ineg; diff --git a/Marlin/src/libs/numtostr.cpp b/Marlin/src/libs/numtostr.cpp index c34faf68ff..e273732635 100644 --- a/Marlin/src/libs/numtostr.cpp +++ b/Marlin/src/libs/numtostr.cpp @@ -31,7 +31,7 @@ template constexpr char DIGIMOD(const T1 n, const T2 f) { return DIGIT((n / f) % 10); } template -constexpr char RJDIGIT(const T1 n, const T2 f) { return (n >= f ? DIGIMOD(n, f) : ' '); } +constexpr char RJDIGIT(const T1 n, const T2 f) { return (n >= (T1)f ? DIGIMOD(n, f) : ' '); } template constexpr char MINUSOR(T &n, const char alt) { return (n >= 0) ? alt : (n = -n) ? '-' : '-'; } diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index ce05c82c77..1e6d02d2a7 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -434,9 +434,6 @@ void restore_feedrate_and_scaling(); typedef bits_t(NUM_AXES) main_axes_bits_t; constexpr main_axes_bits_t main_axes_mask = _BV(NUM_AXES) - 1; -typedef bits_t(NUM_AXES + EXTRUDERS) e_axis_bits_t; -constexpr e_axis_bits_t e_axis_mask = (_BV(EXTRUDERS) - 1) << NUM_AXES; - void set_axis_is_at_home(const AxisEnum axis); #if HAS_ENDSTOPS diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 9799319368..9f49e353a7 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -83,6 +83,9 @@ typedef struct { }; } stepper_flags_t; +typedef bits_t(NUM_AXES + E_STATES) e_axis_bits_t; +constexpr e_axis_bits_t e_axis_mask = (_BV(E_STATES) - 1) << NUM_AXES; + // All the stepper enable pins constexpr pin_t ena_pins[] = { NUM_AXIS_LIST_(X_ENABLE_PIN, Y_ENABLE_PIN, Z_ENABLE_PIN, I_ENABLE_PIN, J_ENABLE_PIN, K_ENABLE_PIN, U_ENABLE_PIN, V_ENABLE_PIN, W_ENABLE_PIN) From b8655ca0ed05e077ac89ff377bff3e4db7ff5b3a Mon Sep 17 00:00:00 2001 From: Manuel McLure Date: Sat, 3 Jun 2023 13:39:41 -0700 Subject: [PATCH 505/659] =?UTF-8?q?=F0=9F=94=A7=20BTT=20SKR=203=20has=20on?= =?UTF-8?q?board=20endstop=20pullups=20(#24876)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h index 85fd24da0f..d6a7358f3e 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h @@ -119,6 +119,7 @@ #define Z_STOP_PIN PC0 // Z-STOP #endif #endif +#define ONBOARD_ENDSTOPPULLUPS // Board has built-in pullups // // Z Probe (when not Z_MIN_PIN) From 6136e48df5c8e2aee3447b99beb8464231895b69 Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Sat, 3 Jun 2023 23:09:29 +0200 Subject: [PATCH 506/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20M25/M125=20for=20L?= =?UTF-8?q?CDs=20with=20ui.resume=5Fprint=20(#24877)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/pause.cpp | 2 -- Marlin/src/gcode/feature/pause/M125.cpp | 2 +- Marlin/src/lcd/language/language_it.h | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp index 6e57f6e2dc..66f7ad15ed 100644 --- a/Marlin/src/feature/pause.cpp +++ b/Marlin/src/feature/pause.cpp @@ -402,8 +402,6 @@ bool pause_print(const_float_t retract, const xyz_pos_t &park_point, const bool DEBUG_SECTION(pp, "pause_print", true); DEBUG_ECHOLNPGM("... park.x:", park_point.x, " y:", park_point.y, " z:", park_point.z, " unloadlen:", unload_length, " showlcd:", show_lcd DXC_SAY); - UNUSED(show_lcd); - if (did_pause_print) return false; // already paused #if ENABLED(HOST_ACTION_COMMANDS) diff --git a/Marlin/src/gcode/feature/pause/M125.cpp b/Marlin/src/gcode/feature/pause/M125.cpp index 079ae6c1ba..0e0d6ed143 100644 --- a/Marlin/src/gcode/feature/pause/M125.cpp +++ b/Marlin/src/gcode/feature/pause/M125.cpp @@ -96,7 +96,7 @@ void GcodeSuite::M125() { const bool show_lcd = TERN0(HAS_MARLINUI_MENU, parser.boolval('P')); if (pause_print(retract, park_point, show_lcd, 0)) { - if (ENABLED(EXTENSIBLE_UI) || ALL(EMERGENCY_PARSER, HOST_PROMPT_SUPPORT) || !sd_printing || show_lcd) { + if (HAS_DISPLAY || ALL(EMERGENCY_PARSER, HOST_PROMPT_SUPPORT) || !sd_printing || show_lcd) { wait_for_confirmation(false, 0); resume_print(0, 0, -retract, 0); } diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index e4f95bf72c..d9a9340762 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -776,7 +776,7 @@ namespace Language_it { // #if LCD_HEIGHT >= 4 LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Premi per", "riprendere", "la stampa")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parcheggiando...")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Sto parcheggiando...")); LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Attendere avvio", "del cambio", "di filamento")); LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserisci il", "filamento e premi", "per continuare")); LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Premi per", "riscaldare ugello")); From f8c51523694e5ccc6473bc9791f3fa0135ad395f Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 4 Jun 2023 00:27:30 +0000 Subject: [PATCH 507/659] [cron] Bump distribution date (2023-06-04) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 361b1035d0..921e496acb 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-03" +//#define STRING_DISTRIBUTION_DATE "2023-06-04" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 69937ac7fc..578ed8a20a 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-03" + #define STRING_DISTRIBUTION_DATE "2023-06-04" #endif /** From 1a2816284c0e92f39840e8688d617faa1e32cd2f Mon Sep 17 00:00:00 2001 From: Andrew <18502096+classicrocker883@users.noreply.github.com> Date: Sun, 4 Jun 2023 05:20:07 -0400 Subject: [PATCH 508/659] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Fix=20LCD=20contra?= =?UTF-8?q?st=20typo=20(#25929)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/parser.cpp | 2 +- Marlin/src/inc/Conditionals_post.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Marlin/src/gcode/parser.cpp b/Marlin/src/gcode/parser.cpp index 90586e371f..ccd6b4111f 100644 --- a/Marlin/src/gcode/parser.cpp +++ b/Marlin/src/gcode/parser.cpp @@ -229,7 +229,7 @@ void GCodeParser::parse(char *p) { } #endif - } break; + } break; #if ENABLED(GCODE_MOTION_MODES) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 588484ff3e..6d2bbd6edf 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -474,7 +474,6 @@ #define _LCD_CONTRAST_INIT 195 #elif ENABLED(FYSETC_MINI_12864_2_1) #define _LCD_CONTRAST_MIN 230 - #define _LCD_CONTRAST_MIN 255 #define _LCD_CONTRAST_INIT 255 #elif ENABLED(FYSETC_MINI_12864) #define _LCD_CONTRAST_MIN 180 From f8423f9da09a8d67074b4243917953a6b2b8d279 Mon Sep 17 00:00:00 2001 From: kisslorand <50251547+kisslorand@users.noreply.github.com> Date: Sun, 4 Jun 2023 12:49:27 +0300 Subject: [PATCH 509/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20D576=20buffer=20un?= =?UTF-8?q?derrun=20reporting=20(#25931)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/queue.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/gcode/queue.cpp b/Marlin/src/gcode/queue.cpp index 156436b7dd..967ab76897 100644 --- a/Marlin/src/gcode/queue.cpp +++ b/Marlin/src/gcode/queue.cpp @@ -713,8 +713,8 @@ void GCodeQueue::advance() { void GCodeQueue::report_buffer_statistics() { SERIAL_ECHOLNPGM("D576" - " P:", planner.moves_free(), " ", -planner_buffer_underruns, " (", max_planner_buffer_empty_duration, ")" - " B:", BUFSIZE - ring_buffer.length, " ", -command_buffer_underruns, " (", max_command_buffer_empty_duration, ")" + " P:", planner.moves_free(), " ", planner_buffer_underruns, " (", max_planner_buffer_empty_duration, ")" + " B:", BUFSIZE - ring_buffer.length, " ", command_buffer_underruns, " (", max_command_buffer_empty_duration, ")" ); command_buffer_underruns = planner_buffer_underruns = 0; max_command_buffer_empty_duration = max_planner_buffer_empty_duration = 0; From 6e8035e5aa59454600cd359665a34954dac80a70 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 5 Jun 2023 00:24:02 +0000 Subject: [PATCH 510/659] [cron] Bump distribution date (2023-06-05) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 921e496acb..4b3e3b2c8c 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-04" +//#define STRING_DISTRIBUTION_DATE "2023-06-05" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 578ed8a20a..66ee44531c 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-04" + #define STRING_DISTRIBUTION_DATE "2023-06-05" #endif /** From 3b681f7b7450582e0fca2425aabf47b37624cbda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roi=20Rodr=C3=ADguez=20Huertas?= Date: Mon, 5 Jun 2023 07:13:57 +0200 Subject: [PATCH 511/659] =?UTF-8?q?=F0=9F=94=A7=20TMC=20Driver=20axis=20ba?= =?UTF-8?q?ud=20for=20Soft=20Serial=20(#25664)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper/trinamic.cpp | 44 +++++++++++++------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/Marlin/src/module/stepper/trinamic.cpp b/Marlin/src/module/stepper/trinamic.cpp index 1e8782753a..ce99d87f09 100644 --- a/Marlin/src/module/stepper/trinamic.cpp +++ b/Marlin/src/module/stepper/trinamic.cpp @@ -514,154 +514,154 @@ enum StealthIndex : uint8_t { #ifdef X_HARDWARE_SERIAL HW_SERIAL_BEGIN(X); #else - stepperX.beginSerial(TMC_BAUD_RATE); + stepperX.beginSerial(TMC_X_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(X2) #ifdef X2_HARDWARE_SERIAL HW_SERIAL_BEGIN(X2); #else - stepperX2.beginSerial(TMC_BAUD_RATE); + stepperX2.beginSerial(TMC_X2_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(Y) #ifdef Y_HARDWARE_SERIAL HW_SERIAL_BEGIN(Y); #else - stepperY.beginSerial(TMC_BAUD_RATE); + stepperY.beginSerial(TMC_Y_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(Y2) #ifdef Y2_HARDWARE_SERIAL HW_SERIAL_BEGIN(Y2); #else - stepperY2.beginSerial(TMC_BAUD_RATE); + stepperY2.beginSerial(TMC_Y2_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(Z) #ifdef Z_HARDWARE_SERIAL HW_SERIAL_BEGIN(Z); #else - stepperZ.beginSerial(TMC_BAUD_RATE); + stepperZ.beginSerial(TMC_Z_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(Z2) #ifdef Z2_HARDWARE_SERIAL HW_SERIAL_BEGIN(Z2); #else - stepperZ2.beginSerial(TMC_BAUD_RATE); + stepperZ2.beginSerial(TMC_Z2_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(Z3) #ifdef Z3_HARDWARE_SERIAL HW_SERIAL_BEGIN(Z3); #else - stepperZ3.beginSerial(TMC_BAUD_RATE); + stepperZ3.beginSerial(TMC_Z3_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(Z4) #ifdef Z4_HARDWARE_SERIAL HW_SERIAL_BEGIN(Z4); #else - stepperZ4.beginSerial(TMC_BAUD_RATE); + stepperZ4.beginSerial(TMC_Z4_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(I) #ifdef I_HARDWARE_SERIAL HW_SERIAL_BEGIN(I); #else - stepperI.beginSerial(TMC_BAUD_RATE); + stepperI.beginSerial(TMC_I_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(J) #ifdef J_HARDWARE_SERIAL HW_SERIAL_BEGIN(J); #else - stepperJ.beginSerial(TMC_BAUD_RATE); + stepperJ.beginSerial(TMC_J_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(K) #ifdef K_HARDWARE_SERIAL HW_SERIAL_BEGIN(K); #else - stepperK.beginSerial(TMC_BAUD_RATE); + stepperK.beginSerial(TMC_K_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(U) #ifdef U_HARDWARE_SERIAL HW_SERIAL_BEGIN(U); #else - stepperU.beginSerial(TMC_BAUD_RATE); + stepperU.beginSerial(TMC_U_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(V) #ifdef V_HARDWARE_SERIAL HW_SERIAL_BEGIN(V); #else - stepperV.beginSerial(TMC_BAUD_RATE); + stepperV.beginSerial(TMC_V_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(W) #ifdef W_HARDWARE_SERIAL HW_SERIAL_BEGIN(W); #else - stepperW.beginSerial(TMC_BAUD_RATE); + stepperW.beginSerial(TMC_W_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(E0) #ifdef E0_HARDWARE_SERIAL HW_SERIAL_BEGIN(E0); #else - stepperE0.beginSerial(TMC_BAUD_RATE); + stepperE0.beginSerial(TMC_E0_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(E1) #ifdef E1_HARDWARE_SERIAL HW_SERIAL_BEGIN(E1); #else - stepperE1.beginSerial(TMC_BAUD_RATE); + stepperE1.beginSerial(TMC_E1_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(E2) #ifdef E2_HARDWARE_SERIAL HW_SERIAL_BEGIN(E2); #else - stepperE2.beginSerial(TMC_BAUD_RATE); + stepperE2.beginSerial(TMC_E2_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(E3) #ifdef E3_HARDWARE_SERIAL HW_SERIAL_BEGIN(E3); #else - stepperE3.beginSerial(TMC_BAUD_RATE); + stepperE3.beginSerial(TMC_E3_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(E4) #ifdef E4_HARDWARE_SERIAL HW_SERIAL_BEGIN(E4); #else - stepperE4.beginSerial(TMC_BAUD_RATE); + stepperE4.beginSerial(TMC_E4_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(E5) #ifdef E5_HARDWARE_SERIAL HW_SERIAL_BEGIN(E5); #else - stepperE5.beginSerial(TMC_BAUD_RATE); + stepperE5.beginSerial(TMC_E5_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(E6) #ifdef E6_HARDWARE_SERIAL HW_SERIAL_BEGIN(E6); #else - stepperE6.beginSerial(TMC_BAUD_RATE); + stepperE6.beginSerial(TMC_E6_BAUD_RATE); #endif #endif #if AXIS_HAS_UART(E7) #ifdef E7_HARDWARE_SERIAL HW_SERIAL_BEGIN(E7); #else - stepperE7.beginSerial(TMC_BAUD_RATE); + stepperE7.beginSerial(TMC_E7_BAUD_RATE); #endif #endif } From 70288c6c4fae6a6334d7c48b9ef17da7ecf3c173 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 5 Jun 2023 00:43:31 -0500 Subject: [PATCH 512/659] =?UTF-8?q?=F0=9F=8E=A8=20Detab=20C/C++?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/DUE/usb/genclk.h | 264 ++++++------ Marlin/src/HAL/DUE/usb/osc.h | 199 +++++---- Marlin/src/HAL/DUE/usb/pll.h | 238 +++++------ Marlin/src/HAL/DUE/usb/sbc_protocol.h | 111 +++-- Marlin/src/HAL/DUE/usb/spc_protocol.h | 339 ++++++++------- Marlin/src/HAL/DUE/usb/sysclk.h | 30 +- Marlin/src/HAL/DUE/usb/udc.h | 401 +++++++++--------- Marlin/src/HAL/DUE/usb/udc_desc.h | 59 ++- Marlin/src/HAL/DUE/usb/udd.h | 58 ++- Marlin/src/HAL/DUE/usb/udi.h | 94 ++-- Marlin/src/HAL/DUE/usb/udi_cdc.h | 294 +++++++------ Marlin/src/HAL/DUE/usb/udi_msc.c | 142 ++----- Marlin/src/HAL/DUE/usb/udi_msc.h | 227 +++++----- Marlin/src/HAL/DUE/usb/uotghs_otg.h | 27 +- Marlin/src/HAL/DUE/usb/usb_protocol.h | 266 ++++++------ Marlin/src/HAL/DUE/usb/usb_protocol_cdc.h | 132 +++--- Marlin/src/HAL/DUE/usb/usb_protocol_msc.h | 64 +-- .../marlin_maple_CHITU_F103/board/board.h | 12 +- .../marlin_maple_MEEB_3DP/board/board.h | 12 +- 19 files changed, 1415 insertions(+), 1554 deletions(-) diff --git a/Marlin/src/HAL/DUE/usb/genclk.h b/Marlin/src/HAL/DUE/usb/genclk.h index cde03bc0d1..45eba5873f 100644 --- a/Marlin/src/HAL/DUE/usb/genclk.h +++ b/Marlin/src/HAL/DUE/usb/genclk.h @@ -74,17 +74,17 @@ extern "C" { //@{ enum genclk_source { - GENCLK_PCK_SRC_SLCK_RC = 0, //!< Internal 32kHz RC oscillator as PCK source clock - GENCLK_PCK_SRC_SLCK_XTAL = 1, //!< External 32kHz crystal oscillator as PCK source clock - GENCLK_PCK_SRC_SLCK_BYPASS = 2, //!< External 32kHz bypass oscillator as PCK source clock - GENCLK_PCK_SRC_MAINCK_4M_RC = 3, //!< Internal 4MHz RC oscillator as PCK source clock - GENCLK_PCK_SRC_MAINCK_8M_RC = 4, //!< Internal 8MHz RC oscillator as PCK source clock - GENCLK_PCK_SRC_MAINCK_12M_RC = 5, //!< Internal 12MHz RC oscillator as PCK source clock - GENCLK_PCK_SRC_MAINCK_XTAL = 6, //!< External crystal oscillator as PCK source clock - GENCLK_PCK_SRC_MAINCK_BYPASS = 7, //!< External bypass oscillator as PCK source clock - GENCLK_PCK_SRC_PLLACK = 8, //!< Use PLLACK as PCK source clock - GENCLK_PCK_SRC_PLLBCK = 9, //!< Use PLLBCK as PCK source clock - GENCLK_PCK_SRC_MCK = 10, //!< Use Master Clk as PCK source clock + GENCLK_PCK_SRC_SLCK_RC = 0, //!< Internal 32kHz RC oscillator as PCK source clock + GENCLK_PCK_SRC_SLCK_XTAL = 1, //!< External 32kHz crystal oscillator as PCK source clock + GENCLK_PCK_SRC_SLCK_BYPASS = 2, //!< External 32kHz bypass oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_4M_RC = 3, //!< Internal 4MHz RC oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_8M_RC = 4, //!< Internal 8MHz RC oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_12M_RC = 5, //!< Internal 12MHz RC oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_XTAL = 6, //!< External crystal oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_BYPASS = 7, //!< External bypass oscillator as PCK source clock + GENCLK_PCK_SRC_PLLACK = 8, //!< Use PLLACK as PCK source clock + GENCLK_PCK_SRC_PLLBCK = 9, //!< Use PLLBCK as PCK source clock + GENCLK_PCK_SRC_MCK = 10, //!< Use Master Clk as PCK source clock }; //@} @@ -93,176 +93,162 @@ enum genclk_source { //@{ enum genclk_divider { - GENCLK_PCK_PRES_1 = PMC_PCK_PRES_CLK_1, //!< Set PCK clock prescaler to 1 - GENCLK_PCK_PRES_2 = PMC_PCK_PRES_CLK_2, //!< Set PCK clock prescaler to 2 - GENCLK_PCK_PRES_4 = PMC_PCK_PRES_CLK_4, //!< Set PCK clock prescaler to 4 - GENCLK_PCK_PRES_8 = PMC_PCK_PRES_CLK_8, //!< Set PCK clock prescaler to 8 - GENCLK_PCK_PRES_16 = PMC_PCK_PRES_CLK_16, //!< Set PCK clock prescaler to 16 - GENCLK_PCK_PRES_32 = PMC_PCK_PRES_CLK_32, //!< Set PCK clock prescaler to 32 - GENCLK_PCK_PRES_64 = PMC_PCK_PRES_CLK_64, //!< Set PCK clock prescaler to 64 + GENCLK_PCK_PRES_1 = PMC_PCK_PRES_CLK_1, //!< Set PCK clock prescaler to 1 + GENCLK_PCK_PRES_2 = PMC_PCK_PRES_CLK_2, //!< Set PCK clock prescaler to 2 + GENCLK_PCK_PRES_4 = PMC_PCK_PRES_CLK_4, //!< Set PCK clock prescaler to 4 + GENCLK_PCK_PRES_8 = PMC_PCK_PRES_CLK_8, //!< Set PCK clock prescaler to 8 + GENCLK_PCK_PRES_16 = PMC_PCK_PRES_CLK_16, //!< Set PCK clock prescaler to 16 + GENCLK_PCK_PRES_32 = PMC_PCK_PRES_CLK_32, //!< Set PCK clock prescaler to 32 + GENCLK_PCK_PRES_64 = PMC_PCK_PRES_CLK_64, //!< Set PCK clock prescaler to 64 }; //@} struct genclk_config { - uint32_t ctrl; + uint32_t ctrl; }; -static inline void genclk_config_defaults(struct genclk_config *p_cfg, - uint32_t ul_id) -{ - ul_id = ul_id; - p_cfg->ctrl = 0; +static inline void genclk_config_defaults(struct genclk_config *p_cfg, uint32_t ul_id) { + ul_id = ul_id; + p_cfg->ctrl = 0; } -static inline void genclk_config_read(struct genclk_config *p_cfg, - uint32_t ul_id) -{ - p_cfg->ctrl = PMC->PMC_PCK[ul_id]; +static inline void genclk_config_read(struct genclk_config *p_cfg, uint32_t ul_id) { + p_cfg->ctrl = PMC->PMC_PCK[ul_id]; } -static inline void genclk_config_write(const struct genclk_config *p_cfg, - uint32_t ul_id) -{ - PMC->PMC_PCK[ul_id] = p_cfg->ctrl; +static inline void genclk_config_write(const struct genclk_config *p_cfg, uint32_t ul_id) { + PMC->PMC_PCK[ul_id] = p_cfg->ctrl; } //! \name Programmable Clock Source and Prescaler configuration //@{ -static inline void genclk_config_set_source(struct genclk_config *p_cfg, - enum genclk_source e_src) -{ - p_cfg->ctrl &= (~PMC_PCK_CSS_Msk); +static inline void genclk_config_set_source(struct genclk_config *p_cfg, enum genclk_source e_src) { + p_cfg->ctrl &= (~PMC_PCK_CSS_Msk); - switch (e_src) { - case GENCLK_PCK_SRC_SLCK_RC: - case GENCLK_PCK_SRC_SLCK_XTAL: - case GENCLK_PCK_SRC_SLCK_BYPASS: - p_cfg->ctrl |= (PMC_PCK_CSS_SLOW_CLK); - break; + switch (e_src) { + case GENCLK_PCK_SRC_SLCK_RC: + case GENCLK_PCK_SRC_SLCK_XTAL: + case GENCLK_PCK_SRC_SLCK_BYPASS: + p_cfg->ctrl |= (PMC_PCK_CSS_SLOW_CLK); + break; - case GENCLK_PCK_SRC_MAINCK_4M_RC: - case GENCLK_PCK_SRC_MAINCK_8M_RC: - case GENCLK_PCK_SRC_MAINCK_12M_RC: - case GENCLK_PCK_SRC_MAINCK_XTAL: - case GENCLK_PCK_SRC_MAINCK_BYPASS: - p_cfg->ctrl |= (PMC_PCK_CSS_MAIN_CLK); - break; + case GENCLK_PCK_SRC_MAINCK_4M_RC: + case GENCLK_PCK_SRC_MAINCK_8M_RC: + case GENCLK_PCK_SRC_MAINCK_12M_RC: + case GENCLK_PCK_SRC_MAINCK_XTAL: + case GENCLK_PCK_SRC_MAINCK_BYPASS: + p_cfg->ctrl |= (PMC_PCK_CSS_MAIN_CLK); + break; - case GENCLK_PCK_SRC_PLLACK: - p_cfg->ctrl |= (PMC_PCK_CSS_PLLA_CLK); - break; + case GENCLK_PCK_SRC_PLLACK: + p_cfg->ctrl |= (PMC_PCK_CSS_PLLA_CLK); + break; - case GENCLK_PCK_SRC_PLLBCK: - p_cfg->ctrl |= (PMC_PCK_CSS_UPLL_CLK); - break; + case GENCLK_PCK_SRC_PLLBCK: + p_cfg->ctrl |= (PMC_PCK_CSS_UPLL_CLK); + break; - case GENCLK_PCK_SRC_MCK: - p_cfg->ctrl |= (PMC_PCK_CSS_MCK); - break; - } + case GENCLK_PCK_SRC_MCK: + p_cfg->ctrl |= (PMC_PCK_CSS_MCK); + break; + } } -static inline void genclk_config_set_divider(struct genclk_config *p_cfg, - uint32_t e_divider) -{ - p_cfg->ctrl &= ~PMC_PCK_PRES_Msk; - p_cfg->ctrl |= e_divider; +static inline void genclk_config_set_divider(struct genclk_config *p_cfg, uint32_t e_divider) { + p_cfg->ctrl &= ~PMC_PCK_PRES_Msk; + p_cfg->ctrl |= e_divider; } //@} -static inline void genclk_enable(const struct genclk_config *p_cfg, - uint32_t ul_id) -{ - PMC->PMC_PCK[ul_id] = p_cfg->ctrl; - pmc_enable_pck(ul_id); +static inline void genclk_enable(const struct genclk_config *p_cfg, uint32_t ul_id) { + PMC->PMC_PCK[ul_id] = p_cfg->ctrl; + pmc_enable_pck(ul_id); } -static inline void genclk_disable(uint32_t ul_id) -{ - pmc_disable_pck(ul_id); +static inline void genclk_disable(uint32_t ul_id) { + pmc_disable_pck(ul_id); } -static inline void genclk_enable_source(enum genclk_source e_src) -{ - switch (e_src) { - case GENCLK_PCK_SRC_SLCK_RC: - if (!osc_is_ready(OSC_SLCK_32K_RC)) { - osc_enable(OSC_SLCK_32K_RC); - osc_wait_ready(OSC_SLCK_32K_RC); - } - break; +static inline void genclk_enable_source(enum genclk_source e_src) { + switch (e_src) { + case GENCLK_PCK_SRC_SLCK_RC: + if (!osc_is_ready(OSC_SLCK_32K_RC)) { + osc_enable(OSC_SLCK_32K_RC); + osc_wait_ready(OSC_SLCK_32K_RC); + } + break; - case GENCLK_PCK_SRC_SLCK_XTAL: - if (!osc_is_ready(OSC_SLCK_32K_XTAL)) { - osc_enable(OSC_SLCK_32K_XTAL); - osc_wait_ready(OSC_SLCK_32K_XTAL); - } - break; + case GENCLK_PCK_SRC_SLCK_XTAL: + if (!osc_is_ready(OSC_SLCK_32K_XTAL)) { + osc_enable(OSC_SLCK_32K_XTAL); + osc_wait_ready(OSC_SLCK_32K_XTAL); + } + break; - case GENCLK_PCK_SRC_SLCK_BYPASS: - if (!osc_is_ready(OSC_SLCK_32K_BYPASS)) { - osc_enable(OSC_SLCK_32K_BYPASS); - osc_wait_ready(OSC_SLCK_32K_BYPASS); - } - break; + case GENCLK_PCK_SRC_SLCK_BYPASS: + if (!osc_is_ready(OSC_SLCK_32K_BYPASS)) { + osc_enable(OSC_SLCK_32K_BYPASS); + osc_wait_ready(OSC_SLCK_32K_BYPASS); + } + break; - case GENCLK_PCK_SRC_MAINCK_4M_RC: - if (!osc_is_ready(OSC_MAINCK_4M_RC)) { - osc_enable(OSC_MAINCK_4M_RC); - osc_wait_ready(OSC_MAINCK_4M_RC); - } - break; + case GENCLK_PCK_SRC_MAINCK_4M_RC: + if (!osc_is_ready(OSC_MAINCK_4M_RC)) { + osc_enable(OSC_MAINCK_4M_RC); + osc_wait_ready(OSC_MAINCK_4M_RC); + } + break; - case GENCLK_PCK_SRC_MAINCK_8M_RC: - if (!osc_is_ready(OSC_MAINCK_8M_RC)) { - osc_enable(OSC_MAINCK_8M_RC); - osc_wait_ready(OSC_MAINCK_8M_RC); - } - break; + case GENCLK_PCK_SRC_MAINCK_8M_RC: + if (!osc_is_ready(OSC_MAINCK_8M_RC)) { + osc_enable(OSC_MAINCK_8M_RC); + osc_wait_ready(OSC_MAINCK_8M_RC); + } + break; - case GENCLK_PCK_SRC_MAINCK_12M_RC: - if (!osc_is_ready(OSC_MAINCK_12M_RC)) { - osc_enable(OSC_MAINCK_12M_RC); - osc_wait_ready(OSC_MAINCK_12M_RC); - } - break; + case GENCLK_PCK_SRC_MAINCK_12M_RC: + if (!osc_is_ready(OSC_MAINCK_12M_RC)) { + osc_enable(OSC_MAINCK_12M_RC); + osc_wait_ready(OSC_MAINCK_12M_RC); + } + break; - case GENCLK_PCK_SRC_MAINCK_XTAL: - if (!osc_is_ready(OSC_MAINCK_XTAL)) { - osc_enable(OSC_MAINCK_XTAL); - osc_wait_ready(OSC_MAINCK_XTAL); - } - break; + case GENCLK_PCK_SRC_MAINCK_XTAL: + if (!osc_is_ready(OSC_MAINCK_XTAL)) { + osc_enable(OSC_MAINCK_XTAL); + osc_wait_ready(OSC_MAINCK_XTAL); + } + break; - case GENCLK_PCK_SRC_MAINCK_BYPASS: - if (!osc_is_ready(OSC_MAINCK_BYPASS)) { - osc_enable(OSC_MAINCK_BYPASS); - osc_wait_ready(OSC_MAINCK_BYPASS); - } - break; + case GENCLK_PCK_SRC_MAINCK_BYPASS: + if (!osc_is_ready(OSC_MAINCK_BYPASS)) { + osc_enable(OSC_MAINCK_BYPASS); + osc_wait_ready(OSC_MAINCK_BYPASS); + } + break; -#ifdef CONFIG_PLL0_SOURCE - case GENCLK_PCK_SRC_PLLACK: - pll_enable_config_defaults(0); - break; -#endif + #ifdef CONFIG_PLL0_SOURCE + case GENCLK_PCK_SRC_PLLACK: + pll_enable_config_defaults(0); + break; + #endif -#ifdef CONFIG_PLL1_SOURCE - case GENCLK_PCK_SRC_PLLBCK: - pll_enable_config_defaults(1); - break; -#endif + #ifdef CONFIG_PLL1_SOURCE + case GENCLK_PCK_SRC_PLLBCK: + pll_enable_config_defaults(1); + break; + #endif - case GENCLK_PCK_SRC_MCK: - break; + case GENCLK_PCK_SRC_MCK: + break; - default: - Assert(false); - break; - } + default: + Assert(false); + break; + } } //! @} diff --git a/Marlin/src/HAL/DUE/usb/osc.h b/Marlin/src/HAL/DUE/usb/osc.h index 953bcbbed1..c0ae24381a 100644 --- a/Marlin/src/HAL/DUE/usb/osc.h +++ b/Marlin/src/HAL/DUE/usb/osc.h @@ -62,28 +62,28 @@ extern "C" { * should be defined by the board code, otherwise default value are used. */ #ifndef BOARD_FREQ_SLCK_XTAL -# warning The board slow clock xtal frequency has not been defined. -# define BOARD_FREQ_SLCK_XTAL (32768UL) + #warning The board slow clock xtal frequency has not been defined. + #define BOARD_FREQ_SLCK_XTAL (32768UL) #endif #ifndef BOARD_FREQ_SLCK_BYPASS -# warning The board slow clock bypass frequency has not been defined. -# define BOARD_FREQ_SLCK_BYPASS (32768UL) + #warning The board slow clock bypass frequency has not been defined. + #define BOARD_FREQ_SLCK_BYPASS (32768UL) #endif #ifndef BOARD_FREQ_MAINCK_XTAL -# warning The board main clock xtal frequency has not been defined. -# define BOARD_FREQ_MAINCK_XTAL (12000000UL) + #warning The board main clock xtal frequency has not been defined. + #define BOARD_FREQ_MAINCK_XTAL (12000000UL) #endif #ifndef BOARD_FREQ_MAINCK_BYPASS -# warning The board main clock bypass frequency has not been defined. -# define BOARD_FREQ_MAINCK_BYPASS (12000000UL) + #warning The board main clock bypass frequency has not been defined. + #define BOARD_FREQ_MAINCK_BYPASS (12000000UL) #endif #ifndef BOARD_OSC_STARTUP_US -# warning The board main clock xtal startup time has not been defined. -# define BOARD_OSC_STARTUP_US (15625UL) + #warning The board main clock xtal startup time has not been defined. + #define BOARD_OSC_STARTUP_US (15625UL) #endif /** @@ -115,122 +115,118 @@ extern "C" { #define OSC_MAINCK_BYPASS_HZ BOARD_FREQ_MAINCK_BYPASS //!< External bypass oscillator. //@} -static inline void osc_enable(uint32_t ul_id) -{ - switch (ul_id) { - case OSC_SLCK_32K_RC: - break; +static inline void osc_enable(uint32_t ul_id) { + switch (ul_id) { + case OSC_SLCK_32K_RC: + break; - case OSC_SLCK_32K_XTAL: - pmc_switch_sclk_to_32kxtal(PMC_OSC_XTAL); - break; + case OSC_SLCK_32K_XTAL: + pmc_switch_sclk_to_32kxtal(PMC_OSC_XTAL); + break; - case OSC_SLCK_32K_BYPASS: - pmc_switch_sclk_to_32kxtal(PMC_OSC_BYPASS); - break; + case OSC_SLCK_32K_BYPASS: + pmc_switch_sclk_to_32kxtal(PMC_OSC_BYPASS); + break; - case OSC_MAINCK_4M_RC: - pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_4_MHz); - break; + case OSC_MAINCK_4M_RC: + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_4_MHz); + break; - case OSC_MAINCK_8M_RC: - pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_8_MHz); - break; + case OSC_MAINCK_8M_RC: + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_8_MHz); + break; - case OSC_MAINCK_12M_RC: - pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_12_MHz); - break; + case OSC_MAINCK_12M_RC: + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_12_MHz); + break; - case OSC_MAINCK_XTAL: - pmc_switch_mainck_to_xtal(PMC_OSC_XTAL/*, - pmc_us_to_moscxtst(BOARD_OSC_STARTUP_US, - OSC_SLCK_32K_RC_HZ)*/); - break; + case OSC_MAINCK_XTAL: + pmc_switch_mainck_to_xtal(PMC_OSC_XTAL/*, + pmc_us_to_moscxtst(BOARD_OSC_STARTUP_US, + OSC_SLCK_32K_RC_HZ)*/); + break; - case OSC_MAINCK_BYPASS: - pmc_switch_mainck_to_xtal(PMC_OSC_BYPASS/*, - pmc_us_to_moscxtst(BOARD_OSC_STARTUP_US, - OSC_SLCK_32K_RC_HZ)*/); - break; - } + case OSC_MAINCK_BYPASS: + pmc_switch_mainck_to_xtal(PMC_OSC_BYPASS/*, + pmc_us_to_moscxtst(BOARD_OSC_STARTUP_US, + OSC_SLCK_32K_RC_HZ)*/); + break; + } } -static inline void osc_disable(uint32_t ul_id) -{ - switch (ul_id) { - case OSC_SLCK_32K_RC: - case OSC_SLCK_32K_XTAL: - case OSC_SLCK_32K_BYPASS: - break; +static inline void osc_disable(uint32_t ul_id) { + switch (ul_id) { + case OSC_SLCK_32K_RC: + case OSC_SLCK_32K_XTAL: + case OSC_SLCK_32K_BYPASS: + break; - case OSC_MAINCK_4M_RC: - case OSC_MAINCK_8M_RC: - case OSC_MAINCK_12M_RC: - pmc_osc_disable_fastrc(); - break; + case OSC_MAINCK_4M_RC: + case OSC_MAINCK_8M_RC: + case OSC_MAINCK_12M_RC: + pmc_osc_disable_fastrc(); + break; - case OSC_MAINCK_XTAL: - pmc_osc_disable_xtal(PMC_OSC_XTAL); - break; + case OSC_MAINCK_XTAL: + pmc_osc_disable_xtal(PMC_OSC_XTAL); + break; - case OSC_MAINCK_BYPASS: - pmc_osc_disable_xtal(PMC_OSC_BYPASS); - break; - } + case OSC_MAINCK_BYPASS: + pmc_osc_disable_xtal(PMC_OSC_BYPASS); + break; + } } -static inline bool osc_is_ready(uint32_t ul_id) -{ - switch (ul_id) { - case OSC_SLCK_32K_RC: - return 1; +static inline bool osc_is_ready(uint32_t ul_id) { + switch (ul_id) { + case OSC_SLCK_32K_RC: + return 1; - case OSC_SLCK_32K_XTAL: - case OSC_SLCK_32K_BYPASS: - return pmc_osc_is_ready_32kxtal(); + case OSC_SLCK_32K_XTAL: + case OSC_SLCK_32K_BYPASS: + return pmc_osc_is_ready_32kxtal(); - case OSC_MAINCK_4M_RC: - case OSC_MAINCK_8M_RC: - case OSC_MAINCK_12M_RC: - case OSC_MAINCK_XTAL: - case OSC_MAINCK_BYPASS: - return pmc_osc_is_ready_mainck(); - } + case OSC_MAINCK_4M_RC: + case OSC_MAINCK_8M_RC: + case OSC_MAINCK_12M_RC: + case OSC_MAINCK_XTAL: + case OSC_MAINCK_BYPASS: + return pmc_osc_is_ready_mainck(); + } - return 0; + return 0; } -static inline uint32_t osc_get_rate(uint32_t ul_id) -{ - switch (ul_id) { - case OSC_SLCK_32K_RC: - return OSC_SLCK_32K_RC_HZ; +static inline uint32_t osc_get_rate(uint32_t ul_id) { + switch (ul_id) { + case OSC_SLCK_32K_RC: + return OSC_SLCK_32K_RC_HZ; - case OSC_SLCK_32K_XTAL: - return BOARD_FREQ_SLCK_XTAL; + case OSC_SLCK_32K_XTAL: + return BOARD_FREQ_SLCK_XTAL; - case OSC_SLCK_32K_BYPASS: - return BOARD_FREQ_SLCK_BYPASS; + case OSC_SLCK_32K_BYPASS: + return BOARD_FREQ_SLCK_BYPASS; - case OSC_MAINCK_4M_RC: - return OSC_MAINCK_4M_RC_HZ; + case OSC_MAINCK_4M_RC: + return OSC_MAINCK_4M_RC_HZ; - case OSC_MAINCK_8M_RC: - return OSC_MAINCK_8M_RC_HZ; + case OSC_MAINCK_8M_RC: + return OSC_MAINCK_8M_RC_HZ; - case OSC_MAINCK_12M_RC: - return OSC_MAINCK_12M_RC_HZ; + case OSC_MAINCK_12M_RC: + return OSC_MAINCK_12M_RC_HZ; - case OSC_MAINCK_XTAL: - return BOARD_FREQ_MAINCK_XTAL; + case OSC_MAINCK_XTAL: + return BOARD_FREQ_MAINCK_XTAL; - case OSC_MAINCK_BYPASS: - return BOARD_FREQ_MAINCK_BYPASS; - } + case OSC_MAINCK_BYPASS: + return BOARD_FREQ_MAINCK_BYPASS; + } - return 0; + return 0; } /** @@ -241,11 +237,10 @@ static inline uint32_t osc_get_rate(uint32_t ul_id) * * \param id A number identifying the oscillator to wait for. */ -static inline void osc_wait_ready(uint8_t id) -{ - while (!osc_is_ready(id)) { - /* Do nothing */ - } +static inline void osc_wait_ready(uint8_t id) { + while (!osc_is_ready(id)) { + /* Do nothing */ + } } //! @} diff --git a/Marlin/src/HAL/DUE/usb/pll.h b/Marlin/src/HAL/DUE/usb/pll.h index 8eaf27672b..d25a1f65d0 100644 --- a/Marlin/src/HAL/DUE/usb/pll.h +++ b/Marlin/src/HAL/DUE/usb/pll.h @@ -77,22 +77,22 @@ extern "C" { #define PLL_COUNT 0x3FU enum pll_source { - PLL_SRC_MAINCK_4M_RC = OSC_MAINCK_4M_RC, //!< Internal 4MHz RC oscillator. - PLL_SRC_MAINCK_8M_RC = OSC_MAINCK_8M_RC, //!< Internal 8MHz RC oscillator. - PLL_SRC_MAINCK_12M_RC = OSC_MAINCK_12M_RC, //!< Internal 12MHz RC oscillator. - PLL_SRC_MAINCK_XTAL = OSC_MAINCK_XTAL, //!< External crystal oscillator. - PLL_SRC_MAINCK_BYPASS = OSC_MAINCK_BYPASS, //!< External bypass oscillator. - PLL_NR_SOURCES, //!< Number of PLL sources. + PLL_SRC_MAINCK_4M_RC = OSC_MAINCK_4M_RC, //!< Internal 4MHz RC oscillator. + PLL_SRC_MAINCK_8M_RC = OSC_MAINCK_8M_RC, //!< Internal 8MHz RC oscillator. + PLL_SRC_MAINCK_12M_RC = OSC_MAINCK_12M_RC, //!< Internal 12MHz RC oscillator. + PLL_SRC_MAINCK_XTAL = OSC_MAINCK_XTAL, //!< External crystal oscillator. + PLL_SRC_MAINCK_BYPASS = OSC_MAINCK_BYPASS, //!< External bypass oscillator. + PLL_NR_SOURCES, //!< Number of PLL sources. }; struct pll_config { - uint32_t ctrl; + uint32_t ctrl; }; #define pll_get_default_rate(pll_id) \ - ((osc_get_rate(CONFIG_PLL##pll_id##_SOURCE) \ - * CONFIG_PLL##pll_id##_MUL) \ - / CONFIG_PLL##pll_id##_DIV) + ((osc_get_rate(CONFIG_PLL##pll_id##_SOURCE) \ + * CONFIG_PLL##pll_id##_MUL) \ + / CONFIG_PLL##pll_id##_DIV) /* Force UTMI PLL parameters (Hardware defined) */ #ifdef CONFIG_PLL1_SOURCE @@ -113,145 +113,130 @@ struct pll_config { * is hidden in this implementation. Use mul as mul effective value. */ static inline void pll_config_init(struct pll_config *p_cfg, - enum pll_source e_src, uint32_t ul_div, uint32_t ul_mul) -{ - uint32_t vco_hz; + enum pll_source e_src, uint32_t ul_div, uint32_t ul_mul) { + uint32_t vco_hz; - Assert(e_src < PLL_NR_SOURCES); + Assert(e_src < PLL_NR_SOURCES); - if (ul_div == 0 && ul_mul == 0) { /* Must only be true for UTMI PLL */ - p_cfg->ctrl = CKGR_UCKR_UPLLCOUNT(PLL_COUNT); - } else { /* PLLA */ - /* Calculate internal VCO frequency */ - vco_hz = osc_get_rate(e_src) / ul_div; - Assert(vco_hz >= PLL_INPUT_MIN_HZ); - Assert(vco_hz <= PLL_INPUT_MAX_HZ); + if (ul_div == 0 && ul_mul == 0) { /* Must only be true for UTMI PLL */ + p_cfg->ctrl = CKGR_UCKR_UPLLCOUNT(PLL_COUNT); + } + else { /* PLLA */ + /* Calculate internal VCO frequency */ + vco_hz = osc_get_rate(e_src) / ul_div; + Assert(vco_hz >= PLL_INPUT_MIN_HZ); + Assert(vco_hz <= PLL_INPUT_MAX_HZ); - vco_hz *= ul_mul; - Assert(vco_hz >= PLL_OUTPUT_MIN_HZ); - Assert(vco_hz <= PLL_OUTPUT_MAX_HZ); + vco_hz *= ul_mul; + Assert(vco_hz >= PLL_OUTPUT_MIN_HZ); + Assert(vco_hz <= PLL_OUTPUT_MAX_HZ); - /* PMC hardware will automatically make it mul+1 */ - p_cfg->ctrl = CKGR_PLLAR_MULA(ul_mul - 1) | CKGR_PLLAR_DIVA(ul_div) | CKGR_PLLAR_PLLACOUNT(PLL_COUNT); - } + /* PMC hardware will automatically make it mul+1 */ + p_cfg->ctrl = CKGR_PLLAR_MULA(ul_mul - 1) | CKGR_PLLAR_DIVA(ul_div) | CKGR_PLLAR_PLLACOUNT(PLL_COUNT); + } } -#define pll_config_defaults(cfg, pll_id) \ - pll_config_init(cfg, \ - CONFIG_PLL##pll_id##_SOURCE, \ - CONFIG_PLL##pll_id##_DIV, \ - CONFIG_PLL##pll_id##_MUL) +#define pll_config_defaults(cfg, pll_id) \ + pll_config_init(cfg, \ + CONFIG_PLL##pll_id##_SOURCE, \ + CONFIG_PLL##pll_id##_DIV, \ + CONFIG_PLL##pll_id##_MUL) -static inline void pll_config_read(struct pll_config *p_cfg, uint32_t ul_pll_id) -{ - Assert(ul_pll_id < NR_PLLS); - - if (ul_pll_id == PLLA_ID) { - p_cfg->ctrl = PMC->CKGR_PLLAR; - } else { - p_cfg->ctrl = PMC->CKGR_UCKR; - } +static inline void pll_config_read(struct pll_config *p_cfg, uint32_t ul_pll_id) { + Assert(ul_pll_id < NR_PLLS); + p_cfg->ctrl = ul_pll_id == PLLA_ID ? PMC->CKGR_PLLAR : PMC->CKGR_UCKR; } -static inline void pll_config_write(const struct pll_config *p_cfg, uint32_t ul_pll_id) -{ - Assert(ul_pll_id < NR_PLLS); +static inline void pll_config_write(const struct pll_config *p_cfg, uint32_t ul_pll_id) { + Assert(ul_pll_id < NR_PLLS); - if (ul_pll_id == PLLA_ID) { - pmc_disable_pllack(); // Always stop PLL first! - PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | p_cfg->ctrl; - } else { - PMC->CKGR_UCKR = p_cfg->ctrl; - } + if (ul_pll_id == PLLA_ID) { + pmc_disable_pllack(); // Always stop PLL first! + PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | p_cfg->ctrl; + } + else + PMC->CKGR_UCKR = p_cfg->ctrl; } -static inline void pll_enable(const struct pll_config *p_cfg, uint32_t ul_pll_id) -{ - Assert(ul_pll_id < NR_PLLS); +static inline void pll_enable(const struct pll_config *p_cfg, uint32_t ul_pll_id) { + Assert(ul_pll_id < NR_PLLS); - if (ul_pll_id == PLLA_ID) { - pmc_disable_pllack(); // Always stop PLL first! - PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | p_cfg->ctrl; - } else { - PMC->CKGR_UCKR = p_cfg->ctrl | CKGR_UCKR_UPLLEN; - } + if (ul_pll_id == PLLA_ID) { + pmc_disable_pllack(); // Always stop PLL first! + PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | p_cfg->ctrl; + } + else + PMC->CKGR_UCKR = p_cfg->ctrl | CKGR_UCKR_UPLLEN; } /** * \note This will only disable the selected PLL, not the underlying oscillator (mainck). */ -static inline void pll_disable(uint32_t ul_pll_id) -{ - Assert(ul_pll_id < NR_PLLS); +static inline void pll_disable(uint32_t ul_pll_id) { + Assert(ul_pll_id < NR_PLLS); - if (ul_pll_id == PLLA_ID) { - pmc_disable_pllack(); - } else { - PMC->CKGR_UCKR &= ~CKGR_UCKR_UPLLEN; - } + if (ul_pll_id == PLLA_ID) + pmc_disable_pllack(); + else + PMC->CKGR_UCKR &= ~CKGR_UCKR_UPLLEN; } -static inline uint32_t pll_is_locked(uint32_t ul_pll_id) -{ - Assert(ul_pll_id < NR_PLLS); +static inline uint32_t pll_is_locked(uint32_t ul_pll_id) { + Assert(ul_pll_id < NR_PLLS); - if (ul_pll_id == PLLA_ID) { - return pmc_is_locked_pllack(); - } else { - return pmc_is_locked_upll(); - } + if (ul_pll_id == PLLA_ID) + return pmc_is_locked_pllack(); + else + return pmc_is_locked_upll(); } -static inline void pll_enable_source(enum pll_source e_src) -{ - switch (e_src) { - case PLL_SRC_MAINCK_4M_RC: - case PLL_SRC_MAINCK_8M_RC: - case PLL_SRC_MAINCK_12M_RC: - case PLL_SRC_MAINCK_XTAL: - case PLL_SRC_MAINCK_BYPASS: - osc_enable(e_src); - osc_wait_ready(e_src); - break; +static inline void pll_enable_source(enum pll_source e_src) { + switch (e_src) { + case PLL_SRC_MAINCK_4M_RC: + case PLL_SRC_MAINCK_8M_RC: + case PLL_SRC_MAINCK_12M_RC: + case PLL_SRC_MAINCK_XTAL: + case PLL_SRC_MAINCK_BYPASS: + osc_enable(e_src); + osc_wait_ready(e_src); + break; - default: - Assert(false); - break; - } + default: + Assert(false); + break; + } } -static inline void pll_enable_config_defaults(unsigned int ul_pll_id) -{ - struct pll_config pllcfg; +static inline void pll_enable_config_defaults(unsigned int ul_pll_id) { + struct pll_config pllcfg; - if (pll_is_locked(ul_pll_id)) { - return; // Pll already running - } - switch (ul_pll_id) { -#ifdef CONFIG_PLL0_SOURCE - case 0: - pll_enable_source(CONFIG_PLL0_SOURCE); - pll_config_init(&pllcfg, - CONFIG_PLL0_SOURCE, - CONFIG_PLL0_DIV, - CONFIG_PLL0_MUL); - break; -#endif -#ifdef CONFIG_PLL1_SOURCE - case 1: - pll_enable_source(CONFIG_PLL1_SOURCE); - pll_config_init(&pllcfg, - CONFIG_PLL1_SOURCE, - CONFIG_PLL1_DIV, - CONFIG_PLL1_MUL); - break; -#endif - default: - Assert(false); - break; - } - pll_enable(&pllcfg, ul_pll_id); - while (!pll_is_locked(ul_pll_id)); + if (pll_is_locked(ul_pll_id)) return; // Pll already running + + switch (ul_pll_id) { + #ifdef CONFIG_PLL0_SOURCE + case 0: + pll_enable_source(CONFIG_PLL0_SOURCE); + pll_config_init(&pllcfg, + CONFIG_PLL0_SOURCE, + CONFIG_PLL0_DIV, + CONFIG_PLL0_MUL); + break; + #endif + #ifdef CONFIG_PLL1_SOURCE + case 1: + pll_enable_source(CONFIG_PLL1_SOURCE); + pll_config_init(&pllcfg, + CONFIG_PLL1_SOURCE, + CONFIG_PLL1_DIV, + CONFIG_PLL1_MUL); + break; + #endif + default: + Assert(false); + break; + } + pll_enable(&pllcfg, ul_pll_id); + while (!pll_is_locked(ul_pll_id)); } /** @@ -264,15 +249,12 @@ static inline void pll_enable_config_defaults(unsigned int ul_pll_id) * \retval STATUS_OK The PLL is now locked. * \retval ERR_TIMEOUT Timed out waiting for PLL to become locked. */ -static inline int pll_wait_for_lock(unsigned int pll_id) -{ - Assert(pll_id < NR_PLLS); +static inline int pll_wait_for_lock(unsigned int pll_id) { + Assert(pll_id < NR_PLLS); - while (!pll_is_locked(pll_id)) { - /* Do nothing */ - } + while (!pll_is_locked(pll_id)) { /* Do nothing */ } - return 0; + return 0; } //! @} diff --git a/Marlin/src/HAL/DUE/usb/sbc_protocol.h b/Marlin/src/HAL/DUE/usb/sbc_protocol.h index ab845739fd..983ec7adca 100644 --- a/Marlin/src/HAL/DUE/usb/sbc_protocol.h +++ b/Marlin/src/HAL/DUE/usb/sbc_protocol.h @@ -57,7 +57,6 @@ #ifndef _SBC_PROTOCOL_H_ #define _SBC_PROTOCOL_H_ - /** * \ingroup usb_msc_protocol * \defgroup usb_sbc_protocol SCSI Block Commands protocol definitions @@ -81,82 +80,82 @@ //@{ enum scsi_sbc_mode { - SCSI_MS_MODE_RW_ERR_RECOV = 0x01, //!< Read-Write Error Recovery mode page - SCSI_MS_MODE_FORMAT_DEVICE = 0x03, //!< Format Device mode page - SCSI_MS_MODE_FLEXIBLE_DISK = 0x05, //!< Flexible Disk mode page - SCSI_MS_MODE_CACHING = 0x08, //!< Caching mode page + SCSI_MS_MODE_RW_ERR_RECOV = 0x01, //!< Read-Write Error Recovery mode page + SCSI_MS_MODE_FORMAT_DEVICE = 0x03, //!< Format Device mode page + SCSI_MS_MODE_FLEXIBLE_DISK = 0x05, //!< Flexible Disk mode page + SCSI_MS_MODE_CACHING = 0x08, //!< Caching mode page }; //! \name SBC-2 Device-Specific Parameter //@{ -#define SCSI_MS_SBC_WP 0x80 //!< Write Protected -#define SCSI_MS_SBC_DPOFUA 0x10 //!< DPO and FUA supported +#define SCSI_MS_SBC_WP 0x80 //!< Write Protected +#define SCSI_MS_SBC_DPOFUA 0x10 //!< DPO and FUA supported //@} /** * \brief SBC-2 Short LBA mode parameter block descriptor */ struct sbc_slba_block_desc { - be32_t nr_blocks; //!< Number of Blocks - be32_t block_len; //!< Block Length -#define SBC_SLBA_BLOCK_LEN_MASK 0x00FFFFFFU //!< Mask reserved bits + be32_t nr_blocks; //!< Number of Blocks + be32_t block_len; //!< Block Length +#define SBC_SLBA_BLOCK_LEN_MASK 0x00FFFFFFU //!< Mask reserved bits }; /** * \brief SBC-2 Caching mode page */ struct sbc_caching_mode_page { - uint8_t page_code; - uint8_t page_length; - uint8_t flags2; -#define SBC_MP_CACHE_IC (1 << 7) //!< Initiator Control -#define SBC_MP_CACHE_ABPF (1 << 6) //!< Abort Pre-Fetch -#define SBC_MP_CACHE_CAP (1 << 5) //!< Catching Analysis Permitted -#define SBC_MP_CACHE_DISC (1 << 4) //!< Discontinuity -#define SBC_MP_CACHE_SIZE (1 << 3) //!< Size enable -#define SBC_MP_CACHE_WCE (1 << 2) //!< Write back Cache Enable -#define SBC_MP_CACHE_MF (1 << 1) //!< Multiplication Factor -#define SBC_MP_CACHE_RCD (1 << 0) //!< Read Cache Disable - uint8_t retention; - be16_t dis_pf_transfer_len; - be16_t min_prefetch; - be16_t max_prefetch; - be16_t max_prefetch_ceil; - uint8_t flags12; -#define SBC_MP_CACHE_FSW (1 << 7) //!< Force Sequential Write -#define SBC_MP_CACHE_LBCSS (1 << 6) //!< Logical Blk Cache Seg Sz -#define SBC_MP_CACHE_DRA (1 << 5) //!< Disable Read-Ahead -#define SBC_MP_CACHE_NV_DIS (1 << 0) //!< Non-Volatile Cache Disable - uint8_t nr_cache_segments; - be16_t cache_segment_size; - uint8_t reserved[4]; + uint8_t page_code; + uint8_t page_length; + uint8_t flags2; +#define SBC_MP_CACHE_IC (1 << 7) //!< Initiator Control +#define SBC_MP_CACHE_ABPF (1 << 6) //!< Abort Pre-Fetch +#define SBC_MP_CACHE_CAP (1 << 5) //!< Catching Analysis Permitted +#define SBC_MP_CACHE_DISC (1 << 4) //!< Discontinuity +#define SBC_MP_CACHE_SIZE (1 << 3) //!< Size enable +#define SBC_MP_CACHE_WCE (1 << 2) //!< Write back Cache Enable +#define SBC_MP_CACHE_MF (1 << 1) //!< Multiplication Factor +#define SBC_MP_CACHE_RCD (1 << 0) //!< Read Cache Disable + uint8_t retention; + be16_t dis_pf_transfer_len; + be16_t min_prefetch; + be16_t max_prefetch; + be16_t max_prefetch_ceil; + uint8_t flags12; +#define SBC_MP_CACHE_FSW (1 << 7) //!< Force Sequential Write +#define SBC_MP_CACHE_LBCSS (1 << 6) //!< Logical Blk Cache Seg Sz +#define SBC_MP_CACHE_DRA (1 << 5) //!< Disable Read-Ahead +#define SBC_MP_CACHE_NV_DIS (1 << 0) //!< Non-Volatile Cache Disable + uint8_t nr_cache_segments; + be16_t cache_segment_size; + uint8_t reserved[4]; }; /** * \brief SBC-2 Read-Write Error Recovery mode page */ struct sbc_rdwr_error_recovery_mode_page { - uint8_t page_code; - uint8_t page_length; -#define SPC_MP_RW_ERR_RECOV_PAGE_LENGTH 0x0A - uint8_t flags1; -#define SBC_MP_RW_ERR_RECOV_AWRE (1 << 7) -#define SBC_MP_RW_ERR_RECOV_ARRE (1 << 6) -#define SBC_MP_RW_ERR_RECOV_TB (1 << 5) -#define SBC_MP_RW_ERR_RECOV_RC (1 << 4) -#define SBC_MP_RW_ERR_RECOV_ERR (1 << 3) -#define SBC_MP_RW_ERR_RECOV_PER (1 << 2) -#define SBC_MP_RW_ERR_RECOV_DTE (1 << 1) -#define SBC_MP_RW_ERR_RECOV_DCR (1 << 0) - uint8_t read_retry_count; - uint8_t correction_span; - uint8_t head_offset_count; - uint8_t data_strobe_offset_count; - uint8_t flags2; - uint8_t write_retry_count; - uint8_t flags3; - be16_t recovery_time_limit; + uint8_t page_code; + uint8_t page_length; + #define SPC_MP_RW_ERR_RECOV_PAGE_LENGTH 0x0A + uint8_t flags1; + #define SBC_MP_RW_ERR_RECOV_AWRE (1 << 7) + #define SBC_MP_RW_ERR_RECOV_ARRE (1 << 6) + #define SBC_MP_RW_ERR_RECOV_TB (1 << 5) + #define SBC_MP_RW_ERR_RECOV_RC (1 << 4) + #define SBC_MP_RW_ERR_RECOV_ERR (1 << 3) + #define SBC_MP_RW_ERR_RECOV_PER (1 << 2) + #define SBC_MP_RW_ERR_RECOV_DTE (1 << 1) + #define SBC_MP_RW_ERR_RECOV_DCR (1 << 0) + uint8_t read_retry_count; + uint8_t correction_span; + uint8_t head_offset_count; + uint8_t data_strobe_offset_count; + uint8_t flags2; + uint8_t write_retry_count; + uint8_t flags3; + be16_t recovery_time_limit; }; //@} @@ -164,8 +163,8 @@ struct sbc_rdwr_error_recovery_mode_page { * \brief SBC-2 READ CAPACITY (10) parameter data */ struct sbc_read_capacity10_data { - be32_t max_lba; //!< LBA of last logical block - be32_t block_len; //!< Number of bytes in the last logical block + be32_t max_lba; //!< LBA of last logical block + be32_t block_len; //!< Number of bytes in the last logical block }; //@} diff --git a/Marlin/src/HAL/DUE/usb/spc_protocol.h b/Marlin/src/HAL/DUE/usb/spc_protocol.h index d67cc5c788..808c388f4f 100644 --- a/Marlin/src/HAL/DUE/usb/spc_protocol.h +++ b/Marlin/src/HAL/DUE/usb/spc_protocol.h @@ -59,23 +59,23 @@ //! \name SCSI commands defined by SPC-2 //@{ -#define SPC_TEST_UNIT_READY 0x00 -#define SPC_REQUEST_SENSE 0x03 -#define SPC_INQUIRY 0x12 -#define SPC_MODE_SELECT6 0x15 -#define SPC_MODE_SENSE6 0x1A -#define SPC_SEND_DIAGNOSTIC 0x1D -#define SPC_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1E -#define SPC_MODE_SENSE10 0x5A -#define SPC_REPORT_LUNS 0xA0 +#define SPC_TEST_UNIT_READY 0x00 +#define SPC_REQUEST_SENSE 0x03 +#define SPC_INQUIRY 0x12 +#define SPC_MODE_SELECT6 0x15 +#define SPC_MODE_SENSE6 0x1A +#define SPC_SEND_DIAGNOSTIC 0x1D +#define SPC_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1E +#define SPC_MODE_SENSE10 0x5A +#define SPC_REPORT_LUNS 0xA0 //@} //! \brief May be set in byte 0 of the INQUIRY CDB //@{ //! Enable Vital Product Data -#define SCSI_INQ_REQ_EVPD 0x01 +#define SCSI_INQ_REQ_EVPD 0x01 //! Command Support Data specified by the PAGE OR OPERATION CODE field -#define SCSI_INQ_REQ_CMDT 0x02 +#define SCSI_INQ_REQ_CMDT 0x02 //@} COMPILER_PACK_SET(1) @@ -84,110 +84,110 @@ COMPILER_PACK_SET(1) * \brief SCSI Standard Inquiry data structure */ struct scsi_inquiry_data { - uint8_t pq_pdt; //!< Peripheral Qual / Peripheral Dev Type -#define SCSI_INQ_PQ_CONNECTED 0x00 //!< Peripheral connected -#define SCSI_INQ_PQ_NOT_CONN 0x20 //!< Peripheral not connected -#define SCSI_INQ_PQ_NOT_SUPP 0x60 //!< Peripheral not supported -#define SCSI_INQ_DT_DIR_ACCESS 0x00 //!< Direct Access (SBC) -#define SCSI_INQ_DT_SEQ_ACCESS 0x01 //!< Sequential Access -#define SCSI_INQ_DT_PRINTER 0x02 //!< Printer -#define SCSI_INQ_DT_PROCESSOR 0x03 //!< Processor device -#define SCSI_INQ_DT_WRITE_ONCE 0x04 //!< Write-once device -#define SCSI_INQ_DT_CD_DVD 0x05 //!< CD/DVD device -#define SCSI_INQ_DT_OPTICAL 0x07 //!< Optical Memory -#define SCSI_INQ_DT_MC 0x08 //!< Medium Changer -#define SCSI_INQ_DT_ARRAY 0x0C //!< Storage Array Controller -#define SCSI_INQ_DT_ENCLOSURE 0x0D //!< Enclosure Services -#define SCSI_INQ_DT_RBC 0x0E //!< Simplified Direct Access -#define SCSI_INQ_DT_OCRW 0x0F //!< Optical card reader/writer -#define SCSI_INQ_DT_BCC 0x10 //!< Bridge Controller Commands -#define SCSI_INQ_DT_OSD 0x11 //!< Object-based Storage -#define SCSI_INQ_DT_NONE 0x1F //!< No Peripheral - uint8_t flags1; //!< Flags (byte 1) -#define SCSI_INQ_RMB 0x80 //!< Removable Medium - uint8_t version; //!< Version -#define SCSI_INQ_VER_NONE 0x00 //!< No standards conformance -#define SCSI_INQ_VER_SPC 0x03 //!< SCSI Primary Commands (link to SBC) -#define SCSI_INQ_VER_SPC2 0x04 //!< SCSI Primary Commands - 2 (link to SBC-2) -#define SCSI_INQ_VER_SPC3 0x05 //!< SCSI Primary Commands - 3 (link to SBC-2) -#define SCSI_INQ_VER_SPC4 0x06 //!< SCSI Primary Commands - 4 (link to SBC-3) - uint8_t flags3; //!< Flags (byte 3) -#define SCSI_INQ_NORMACA 0x20 //!< Normal ACA Supported -#define SCSI_INQ_HISUP 0x10 //!< Hierarchal LUN addressing -#define SCSI_INQ_RSP_SPC2 0x02 //!< SPC-2 / SPC-3 response format - uint8_t addl_len; //!< Additional Length (n-4) -#define SCSI_INQ_ADDL_LEN(tot) ((tot)-5) //!< Total length is \a tot - uint8_t flags5; //!< Flags (byte 5) -#define SCSI_INQ_SCCS 0x80 - uint8_t flags6; //!< Flags (byte 6) -#define SCSI_INQ_BQUE 0x80 -#define SCSI_INQ_ENCSERV 0x40 -#define SCSI_INQ_MULTIP 0x10 -#define SCSI_INQ_MCHGR 0x08 -#define SCSI_INQ_ADDR16 0x01 - uint8_t flags7; //!< Flags (byte 7) -#define SCSI_INQ_WBUS16 0x20 -#define SCSI_INQ_SYNC 0x10 -#define SCSI_INQ_LINKED 0x08 -#define SCSI_INQ_CMDQUE 0x02 - uint8_t vendor_id[8]; //!< T10 Vendor Identification - uint8_t product_id[16]; //!< Product Identification - uint8_t product_rev[4]; //!< Product Revision Level + uint8_t pq_pdt; //!< Peripheral Qual / Peripheral Dev Type + #define SCSI_INQ_PQ_CONNECTED 0x00 //!< Peripheral connected + #define SCSI_INQ_PQ_NOT_CONN 0x20 //!< Peripheral not connected + #define SCSI_INQ_PQ_NOT_SUPP 0x60 //!< Peripheral not supported + #define SCSI_INQ_DT_DIR_ACCESS 0x00 //!< Direct Access (SBC) + #define SCSI_INQ_DT_SEQ_ACCESS 0x01 //!< Sequential Access + #define SCSI_INQ_DT_PRINTER 0x02 //!< Printer + #define SCSI_INQ_DT_PROCESSOR 0x03 //!< Processor device + #define SCSI_INQ_DT_WRITE_ONCE 0x04 //!< Write-once device + #define SCSI_INQ_DT_CD_DVD 0x05 //!< CD/DVD device + #define SCSI_INQ_DT_OPTICAL 0x07 //!< Optical Memory + #define SCSI_INQ_DT_MC 0x08 //!< Medium Changer + #define SCSI_INQ_DT_ARRAY 0x0C //!< Storage Array Controller + #define SCSI_INQ_DT_ENCLOSURE 0x0D //!< Enclosure Services + #define SCSI_INQ_DT_RBC 0x0E //!< Simplified Direct Access + #define SCSI_INQ_DT_OCRW 0x0F //!< Optical card reader/writer + #define SCSI_INQ_DT_BCC 0x10 //!< Bridge Controller Commands + #define SCSI_INQ_DT_OSD 0x11 //!< Object-based Storage + #define SCSI_INQ_DT_NONE 0x1F //!< No Peripheral + uint8_t flags1; //!< Flags (byte 1) + #define SCSI_INQ_RMB 0x80 //!< Removable Medium + uint8_t version; //!< Version + #define SCSI_INQ_VER_NONE 0x00 //!< No standards conformance + #define SCSI_INQ_VER_SPC 0x03 //!< SCSI Primary Commands (link to SBC) + #define SCSI_INQ_VER_SPC2 0x04 //!< SCSI Primary Commands - 2 (link to SBC-2) + #define SCSI_INQ_VER_SPC3 0x05 //!< SCSI Primary Commands - 3 (link to SBC-2) + #define SCSI_INQ_VER_SPC4 0x06 //!< SCSI Primary Commands - 4 (link to SBC-3) + uint8_t flags3; //!< Flags (byte 3) + #define SCSI_INQ_NORMACA 0x20 //!< Normal ACA Supported + #define SCSI_INQ_HISUP 0x10 //!< Hierarchal LUN addressing + #define SCSI_INQ_RSP_SPC2 0x02 //!< SPC-2 / SPC-3 response format + uint8_t addl_len; //!< Additional Length (n-4) + #define SCSI_INQ_ADDL_LEN(tot) ((tot)-5) //!< Total length is \a tot + uint8_t flags5; //!< Flags (byte 5) + #define SCSI_INQ_SCCS 0x80 + uint8_t flags6; //!< Flags (byte 6) + #define SCSI_INQ_BQUE 0x80 + #define SCSI_INQ_ENCSERV 0x40 + #define SCSI_INQ_MULTIP 0x10 + #define SCSI_INQ_MCHGR 0x08 + #define SCSI_INQ_ADDR16 0x01 + uint8_t flags7; //!< Flags (byte 7) + #define SCSI_INQ_WBUS16 0x20 + #define SCSI_INQ_SYNC 0x10 + #define SCSI_INQ_LINKED 0x08 + #define SCSI_INQ_CMDQUE 0x02 + uint8_t vendor_id[8]; //!< T10 Vendor Identification + uint8_t product_id[16]; //!< Product Identification + uint8_t product_rev[4]; //!< Product Revision Level }; /** * \brief SCSI Standard Request sense data structure */ struct scsi_request_sense_data { - /* 1st byte: REQUEST SENSE response flags*/ - uint8_t valid_reponse_code; -#define SCSI_SENSE_VALID 0x80 //!< Indicates the INFORMATION field contains valid information -#define SCSI_SENSE_RESPONSE_CODE_MASK 0x7F -#define SCSI_SENSE_CURRENT 0x70 //!< Response code 70h (current errors) -#define SCSI_SENSE_DEFERRED 0x71 + /* 1st byte: REQUEST SENSE response flags*/ + uint8_t valid_reponse_code; + #define SCSI_SENSE_VALID 0x80 //!< Indicates the INFORMATION field contains valid information + #define SCSI_SENSE_RESPONSE_CODE_MASK 0x7F + #define SCSI_SENSE_CURRENT 0x70 //!< Response code 70h (current errors) + #define SCSI_SENSE_DEFERRED 0x71 - /* 2nd byte */ - uint8_t obsolete; + /* 2nd byte */ + uint8_t obsolete; - /* 3rd byte */ - uint8_t sense_flag_key; -#define SCSI_SENSE_FILEMARK 0x80 //!< Indicates that the current command has read a filemark or setmark. -#define SCSI_SENSE_EOM 0x40 //!< Indicates that an end-of-medium condition exists. -#define SCSI_SENSE_ILI 0x20 //!< Indicates that the requested logical block length did not match the logical block length of the data on the medium. -#define SCSI_SENSE_RESERVED 0x10 //!< Reserved -#define SCSI_SENSE_KEY(x) (x&0x0F) //!< Sense Key + /* 3rd byte */ + uint8_t sense_flag_key; + #define SCSI_SENSE_FILEMARK 0x80 //!< Indicates that the current command has read a filemark or setmark. + #define SCSI_SENSE_EOM 0x40 //!< Indicates that an end-of-medium condition exists. + #define SCSI_SENSE_ILI 0x20 //!< Indicates that the requested logical block length did not match the logical block length of the data on the medium. + #define SCSI_SENSE_RESERVED 0x10 //!< Reserved + #define SCSI_SENSE_KEY(x) (x&0x0F) //!< Sense Key - /* 4th to 7th bytes - INFORMATION field */ - uint8_t information[4]; + /* 4th to 7th bytes - INFORMATION field */ + uint8_t information[4]; - /* 8th byte - ADDITIONAL SENSE LENGTH field */ - uint8_t AddSenseLen; -#define SCSI_SENSE_ADDL_LEN(total_len) ((total_len) - 8) + /* 8th byte - ADDITIONAL SENSE LENGTH field */ + uint8_t AddSenseLen; + #define SCSI_SENSE_ADDL_LEN(total_len) ((total_len) - 8) - /* 9th to 12th byte - COMMAND-SPECIFIC INFORMATION field */ - uint8_t CmdSpecINFO[4]; + /* 9th to 12th byte - COMMAND-SPECIFIC INFORMATION field */ + uint8_t CmdSpecINFO[4]; - /* 13th byte - ADDITIONAL SENSE CODE field */ - uint8_t AddSenseCode; + /* 13th byte - ADDITIONAL SENSE CODE field */ + uint8_t AddSenseCode; - /* 14th byte - ADDITIONAL SENSE CODE QUALIFIER field */ - uint8_t AddSnsCodeQlfr; + /* 14th byte - ADDITIONAL SENSE CODE QUALIFIER field */ + uint8_t AddSnsCodeQlfr; - /* 15th byte - FIELD REPLACEABLE UNIT CODE field */ - uint8_t FldReplUnitCode; + /* 15th byte - FIELD REPLACEABLE UNIT CODE field */ + uint8_t FldReplUnitCode; - /* 16th byte */ - uint8_t SenseKeySpec[3]; -#define SCSI_SENSE_SKSV 0x80 //!< Indicates the SENSE-KEY SPECIFIC field contains valid information + /* 16th byte */ + uint8_t SenseKeySpec[3]; + #define SCSI_SENSE_SKSV 0x80 //!< Indicates the SENSE-KEY SPECIFIC field contains valid information }; COMPILER_PACK_RESET() /* Vital Product Data page codes */ enum scsi_vpd_page_code { - SCSI_VPD_SUPPORTED_PAGES = 0x00, - SCSI_VPD_UNIT_SERIAL_NUMBER = 0x80, - SCSI_VPD_DEVICE_IDENTIFICATION = 0x83, + SCSI_VPD_SUPPORTED_PAGES = 0x00, + SCSI_VPD_UNIT_SERIAL_NUMBER = 0x80, + SCSI_VPD_DEVICE_IDENTIFICATION = 0x83, }; #define SCSI_VPD_HEADER_SIZE 4 @@ -200,37 +200,36 @@ enum scsi_vpd_page_code { #define SCSI_VPD_ID_TYPE_T10 1 - /* Sense keys */ enum scsi_sense_key { - SCSI_SK_NO_SENSE = 0x0, - SCSI_SK_RECOVERED_ERROR = 0x1, - SCSI_SK_NOT_READY = 0x2, - SCSI_SK_MEDIUM_ERROR = 0x3, - SCSI_SK_HARDWARE_ERROR = 0x4, - SCSI_SK_ILLEGAL_REQUEST = 0x5, - SCSI_SK_UNIT_ATTENTION = 0x6, - SCSI_SK_DATA_PROTECT = 0x7, - SCSI_SK_BLANK_CHECK = 0x8, - SCSI_SK_VENDOR_SPECIFIC = 0x9, - SCSI_SK_COPY_ABORTED = 0xA, - SCSI_SK_ABORTED_COMMAND = 0xB, - SCSI_SK_VOLUME_OVERFLOW = 0xD, - SCSI_SK_MISCOMPARE = 0xE, + SCSI_SK_NO_SENSE = 0x0, + SCSI_SK_RECOVERED_ERROR = 0x1, + SCSI_SK_NOT_READY = 0x2, + SCSI_SK_MEDIUM_ERROR = 0x3, + SCSI_SK_HARDWARE_ERROR = 0x4, + SCSI_SK_ILLEGAL_REQUEST = 0x5, + SCSI_SK_UNIT_ATTENTION = 0x6, + SCSI_SK_DATA_PROTECT = 0x7, + SCSI_SK_BLANK_CHECK = 0x8, + SCSI_SK_VENDOR_SPECIFIC = 0x9, + SCSI_SK_COPY_ABORTED = 0xA, + SCSI_SK_ABORTED_COMMAND = 0xB, + SCSI_SK_VOLUME_OVERFLOW = 0xD, + SCSI_SK_MISCOMPARE = 0xE, }; /* Additional Sense Code / Additional Sense Code Qualifier pairs */ enum scsi_asc_ascq { - SCSI_ASC_NO_ADDITIONAL_SENSE_INFO = 0x0000, - SCSI_ASC_LU_NOT_READY_REBUILD_IN_PROGRESS = 0x0405, - SCSI_ASC_WRITE_ERROR = 0x0C00, - SCSI_ASC_UNRECOVERED_READ_ERROR = 0x1100, - SCSI_ASC_INVALID_COMMAND_OPERATION_CODE = 0x2000, - SCSI_ASC_INVALID_FIELD_IN_CDB = 0x2400, - SCSI_ASC_WRITE_PROTECTED = 0x2700, - SCSI_ASC_NOT_READY_TO_READY_CHANGE = 0x2800, - SCSI_ASC_MEDIUM_NOT_PRESENT = 0x3A00, - SCSI_ASC_INTERNAL_TARGET_FAILURE = 0x4400, + SCSI_ASC_NO_ADDITIONAL_SENSE_INFO = 0x0000, + SCSI_ASC_LU_NOT_READY_REBUILD_IN_PROGRESS = 0x0405, + SCSI_ASC_WRITE_ERROR = 0x0C00, + SCSI_ASC_UNRECOVERED_READ_ERROR = 0x1100, + SCSI_ASC_INVALID_COMMAND_OPERATION_CODE = 0x2000, + SCSI_ASC_INVALID_FIELD_IN_CDB = 0x2400, + SCSI_ASC_WRITE_PROTECTED = 0x2700, + SCSI_ASC_NOT_READY_TO_READY_CHANGE = 0x2800, + SCSI_ASC_MEDIUM_NOT_PRESENT = 0x3A00, + SCSI_ASC_INTERNAL_TARGET_FAILURE = 0x4400, }; /** @@ -240,9 +239,9 @@ enum scsi_asc_ascq { * that are applicable to all SCSI devices. */ enum scsi_spc_mode { - SCSI_MS_MODE_VENDOR_SPEC = 0x00, - SCSI_MS_MODE_INFEXP = 0x1C, // Informational exceptions control page - SCSI_MS_MODE_ALL = 0x3F, + SCSI_MS_MODE_VENDOR_SPEC = 0x00, + SCSI_MS_MODE_INFEXP = 0x1C, // Informational exceptions control page + SCSI_MS_MODE_ALL = 0x3F, }; /** @@ -250,51 +249,45 @@ enum scsi_spc_mode { * See chapter 8.3.8 */ struct spc_control_page_info_execpt { - uint8_t page_code; - uint8_t page_length; -#define SPC_MP_INFEXP_PAGE_LENGTH 0x0A - uint8_t flags1; -#define SPC_MP_INFEXP_PERF (1<<7) //!< Initiator Control -#define SPC_MP_INFEXP_EBF (1<<5) //!< Caching Analysis Permitted -#define SPC_MP_INFEXP_EWASC (1<<4) //!< Discontinuity -#define SPC_MP_INFEXP_DEXCPT (1<<3) //!< Size enable -#define SPC_MP_INFEXP_TEST (1<<2) //!< Writeback Cache Enable -#define SPC_MP_INFEXP_LOGERR (1<<0) //!< Log errors bit - uint8_t mrie; -#define SPC_MP_INFEXP_MRIE_NO_REPORT 0x00 -#define SPC_MP_INFEXP_MRIE_ASYNC_EVENT 0x01 -#define SPC_MP_INFEXP_MRIE_GEN_UNIT 0x02 -#define SPC_MP_INFEXP_MRIE_COND_RECOV_ERROR 0x03 -#define SPC_MP_INFEXP_MRIE_UNCOND_RECOV_ERROR 0x04 -#define SPC_MP_INFEXP_MRIE_NO_SENSE 0x05 -#define SPC_MP_INFEXP_MRIE_ONLY_REPORT 0x06 - be32_t interval_timer; - be32_t report_count; + uint8_t page_code; + uint8_t page_length; + #define SPC_MP_INFEXP_PAGE_LENGTH 0x0A + uint8_t flags1; + #define SPC_MP_INFEXP_PERF (1<<7) //!< Initiator Control + #define SPC_MP_INFEXP_EBF (1<<5) //!< Caching Analysis Permitted + #define SPC_MP_INFEXP_EWASC (1<<4) //!< Discontinuity + #define SPC_MP_INFEXP_DEXCPT (1<<3) //!< Size enable + #define SPC_MP_INFEXP_TEST (1<<2) //!< Writeback Cache Enable + #define SPC_MP_INFEXP_LOGERR (1<<0) //!< Log errors bit + uint8_t mrie; + #define SPC_MP_INFEXP_MRIE_NO_REPORT 0x00 + #define SPC_MP_INFEXP_MRIE_ASYNC_EVENT 0x01 + #define SPC_MP_INFEXP_MRIE_GEN_UNIT 0x02 + #define SPC_MP_INFEXP_MRIE_COND_RECOV_ERROR 0x03 + #define SPC_MP_INFEXP_MRIE_UNCOND_RECOV_ERROR 0x04 + #define SPC_MP_INFEXP_MRIE_NO_SENSE 0x05 + #define SPC_MP_INFEXP_MRIE_ONLY_REPORT 0x06 + be32_t interval_timer; + be32_t report_count; }; - enum scsi_spc_mode_sense_pc { - SCSI_MS_SENSE_PC_CURRENT = 0, - SCSI_MS_SENSE_PC_CHANGEABLE = 1, - SCSI_MS_SENSE_PC_DEFAULT = 2, - SCSI_MS_SENSE_PC_SAVED = 3, + SCSI_MS_SENSE_PC_CURRENT = 0, + SCSI_MS_SENSE_PC_CHANGEABLE = 1, + SCSI_MS_SENSE_PC_DEFAULT = 2, + SCSI_MS_SENSE_PC_SAVED = 3, }; - - -static inline bool scsi_mode_sense_dbd_is_set(const uint8_t * cdb) -{ - return (cdb[1] >> 3) & 1; +static inline bool scsi_mode_sense_dbd_is_set(const uint8_t * cdb) { + return (cdb[1] >> 3) & 1; } -static inline uint8_t scsi_mode_sense_get_page_code(const uint8_t * cdb) -{ - return cdb[2] & 0x3F; +static inline uint8_t scsi_mode_sense_get_page_code(const uint8_t * cdb) { + return cdb[2] & 0x3F; } -static inline uint8_t scsi_mode_sense_get_pc(const uint8_t * cdb) -{ - return cdb[2] >> 6; +static inline uint8_t scsi_mode_sense_get_pc(const uint8_t * cdb) { + return cdb[2] >> 6; } /** @@ -302,10 +295,10 @@ static inline uint8_t scsi_mode_sense_get_pc(const uint8_t * cdb) * SENSE(6) */ struct scsi_mode_param_header6 { - uint8_t mode_data_length; //!< Number of bytes after this - uint8_t medium_type; //!< Medium Type - uint8_t device_specific_parameter; //!< Defined by command set - uint8_t block_descriptor_length; //!< Length of block descriptors + uint8_t mode_data_length; //!< Number of bytes after this + uint8_t medium_type; //!< Medium Type + uint8_t device_specific_parameter; //!< Defined by command set + uint8_t block_descriptor_length; //!< Length of block descriptors }; /** @@ -313,23 +306,23 @@ struct scsi_mode_param_header6 { * SENSE(10) */ struct scsi_mode_param_header10 { - be16_t mode_data_length; //!< Number of bytes after this - uint8_t medium_type; //!< Medium Type - uint8_t device_specific_parameter; //!< Defined by command set - uint8_t flags4; //!< LONGLBA in bit 0 - uint8_t reserved; - be16_t block_descriptor_length; //!< Length of block descriptors + be16_t mode_data_length; //!< Number of bytes after this + uint8_t medium_type; //!< Medium Type + uint8_t device_specific_parameter; //!< Defined by command set + uint8_t flags4; //!< LONGLBA in bit 0 + uint8_t reserved; + be16_t block_descriptor_length; //!< Length of block descriptors }; /** * \brief SCSI Page_0 Mode Page header (SPF not set) */ struct scsi_mode_page_0_header { - uint8_t page_code; -#define SCSI_PAGE_CODE_PS (1 << 7) //!< Parameters Saveable -#define SCSI_PAGE_CODE_SPF (1 << 6) //!< SubPage Format - uint8_t page_length; //!< Number of bytes after this -#define SCSI_MS_PAGE_LEN(total) ((total) - 2) + uint8_t page_code; +#define SCSI_PAGE_CODE_PS (1 << 7) //!< Parameters Saveable +#define SCSI_PAGE_CODE_SPF (1 << 6) //!< SubPage Format + uint8_t page_length; //!< Number of bytes after this +#define SCSI_MS_PAGE_LEN(total) ((total) - 2) }; //@} diff --git a/Marlin/src/HAL/DUE/usb/sysclk.h b/Marlin/src/HAL/DUE/usb/sysclk.h index 16db8c86d3..0623378615 100644 --- a/Marlin/src/HAL/DUE/usb/sysclk.h +++ b/Marlin/src/HAL/DUE/usb/sysclk.h @@ -71,7 +71,7 @@ * \subsection sysclk_quickstart_use_case_1_setup_steps Initialization code * Add to the application initialization code: * \code - sysclk_init(); + sysclk_init(); \endcode * * \subsection sysclk_quickstart_use_case_1_setup_steps_workflow Workflow @@ -82,15 +82,15 @@ * Add or uncomment the following in your conf_clock.h header file, commenting out all other * definitions of the same symbol(s): * \code - #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK + #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK - // Fpll0 = (Fclk * PLL_mul) / PLL_div - #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL - #define CONFIG_PLL0_MUL (84000000UL / BOARD_FREQ_MAINCK_XTAL) - #define CONFIG_PLL0_DIV 1 + // Fpll0 = (Fclk * PLL_mul) / PLL_div + #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL + #define CONFIG_PLL0_MUL (84000000UL / BOARD_FREQ_MAINCK_XTAL) + #define CONFIG_PLL0_DIV 1 - // Fbus = Fsys / BUS_div - #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 + // Fbus = Fsys / BUS_div + #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 \endcode * * \subsection sysclk_quickstart_use_case_1_example_workflow Workflow @@ -100,14 +100,14 @@ * \code #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL \endcode * -# Configure the PLL module to multiply the external fast crystal oscillator frequency up to 84MHz: * \code - #define CONFIG_PLL0_MUL (84000000UL / BOARD_FREQ_MAINCK_XTAL) - #define CONFIG_PLL0_DIV 1 + #define CONFIG_PLL0_MUL (84000000UL / BOARD_FREQ_MAINCK_XTAL) + #define CONFIG_PLL0_DIV 1 \endcode * \note For user boards, \c BOARD_FREQ_MAINCK_XTAL should be defined in the board \c conf_board.h configuration * file as the frequency of the fast crystal attached to the microcontroller. * -# Configure the main clock to run at the full 84MHz, disable scaling of the main system clock speed: * \code - #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 + #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 \endcode * \note Some dividers are powers of two, while others are integer division factors. Refer to the * formulas in the conf_clock.h template commented above each division define. @@ -136,7 +136,7 @@ extern "C" { * initialization. */ #ifndef CONFIG_SYSCLK_SOURCE -# define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_4M_RC + #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_4M_RC #endif /** * \def CONFIG_SYSCLK_PRES @@ -149,7 +149,7 @@ extern "C" { * after initialization. */ #ifndef CONFIG_SYSCLK_PRES -# define CONFIG_SYSCLK_PRES 0 + #define CONFIG_SYSCLK_PRES 0 #endif //@} @@ -197,7 +197,7 @@ extern "C" { * USB is not required. */ #ifdef __DOXYGEN__ -# define CONFIG_USBCLK_SOURCE + #define CONFIG_USBCLK_SOURCE #endif /** @@ -209,7 +209,7 @@ extern "C" { * defined. */ #ifdef __DOXYGEN__ -# define CONFIG_USBCLK_DIV + #define CONFIG_USBCLK_DIV #endif diff --git a/Marlin/src/HAL/DUE/usb/udc.h b/Marlin/src/HAL/DUE/usb/udc.h index 8d92eb5c03..6230a81b35 100644 --- a/Marlin/src/HAL/DUE/usb/udc.h +++ b/Marlin/src/HAL/DUE/usb/udc.h @@ -144,15 +144,15 @@ extern "C" { * \code #define USB_DEVICE_ATTACH_AUTO_DISABLE \endcode * User C file contains: * \code - // Authorize VBUS monitoring - if (!udc_include_vbus_monitoring()) { - // Implement custom VBUS monitoring via GPIO or other - } - Event_VBUS_present() // VBUS interrupt or GPIO interrupt or other - { - // Attach USB Device - udc_attach(); - } + // Authorize VBUS monitoring + if (!udc_include_vbus_monitoring()) { + // Implement custom VBUS monitoring via GPIO or other + } + Event_VBUS_present() // VBUS interrupt or GPIO interrupt or other + { + // Attach USB Device + udc_attach(); + } \endcode * * - Case of battery charging. conf_usb.h file contains define @@ -160,21 +160,20 @@ extern "C" { * \code #define USB_DEVICE_ATTACH_AUTO_DISABLE \endcode * User C file contains: * \code - Event VBUS present() // VBUS interrupt or GPIO interrupt or .. - { - // Authorize battery charging, but wait key press to start USB. - } - Event Key press() - { - // Stop batteries charging - // Start USB - udc_attach(); - } + Event VBUS present() // VBUS interrupt or GPIO interrupt or .. + { + // Authorize battery charging, but wait key press to start USB. + } + Event Key press() + { + // Stop batteries charging + // Start USB + udc_attach(); + } \endcode */ -static inline bool udc_include_vbus_monitoring(void) -{ - return udd_include_vbus_monitoring(); +static inline bool udc_include_vbus_monitoring(void) { + return udd_include_vbus_monitoring(); } /*! \brief Start the USB Device stack @@ -192,32 +191,26 @@ void udc_stop(void); * then it will attach device when an acceptable Vbus * level from the host is detected. */ -static inline void udc_attach(void) -{ - udd_attach(); +static inline void udc_attach(void) { + udd_attach(); } - /** * \brief Detaches the device from the bus * * The driver must remove pull-up on USB line D- or D+. */ -static inline void udc_detach(void) -{ - udd_detach(); +static inline void udc_detach(void) { + udd_detach(); } - /*! \brief The USB driver sends a resume signal called \e "Upstream Resume" * This is authorized only when the remote wakeup feature is enabled by host. */ -static inline void udc_remotewakeup(void) -{ - udd_send_remotewakeup(); +static inline void udc_remotewakeup(void) { + udd_send_remotewakeup(); } - /** * \brief Returns a pointer on the current interface descriptor * @@ -296,23 +289,23 @@ usb_iface_desc_t UDC_DESC_STORAGE *udc_get_interface_desc(void); * * for AVR and SAM3/4 devices, add to the initialization code: * \code - sysclk_init(); - irq_initialize_vectors(); - cpu_irq_enable(); - board_init(); - sleepmgr_init(); // Optional + sysclk_init(); + irq_initialize_vectors(); + cpu_irq_enable(); + board_init(); + sleepmgr_init(); // Optional \endcode * * For SAMD devices, add to the initialization code: * \code - system_init(); - irq_initialize_vectors(); - cpu_irq_enable(); - sleepmgr_init(); // Optional + system_init(); + irq_initialize_vectors(); + cpu_irq_enable(); + sleepmgr_init(); // Optional \endcode * Add to the main IDLE loop: * \code - sleepmgr_enter_sleep(); // Optional + sleepmgr_enter_sleep(); // Optional \endcode * */ @@ -324,20 +317,20 @@ usb_iface_desc_t UDC_DESC_STORAGE *udc_get_interface_desc(void); * * Content of conf_usb.h: * \code - #define USB_DEVICE_VENDOR_ID 0x03EB - #define USB_DEVICE_PRODUCT_ID 0xXXXX - #define USB_DEVICE_MAJOR_VERSION 1 - #define USB_DEVICE_MINOR_VERSION 0 - #define USB_DEVICE_POWER 100 - #define USB_DEVICE_ATTR USB_CONFIG_ATTR_BUS_POWERED + #define USB_DEVICE_VENDOR_ID 0x03EB + #define USB_DEVICE_PRODUCT_ID 0xXXXX + #define USB_DEVICE_MAJOR_VERSION 1 + #define USB_DEVICE_MINOR_VERSION 0 + #define USB_DEVICE_POWER 100 + #define USB_DEVICE_ATTR USB_CONFIG_ATTR_BUS_POWERED \endcode * * Add to application C-file: * \code - void usb_init(void) - { - udc_start(); - } + void usb_init(void) + { + udc_start(); + } \endcode */ @@ -349,17 +342,17 @@ usb_iface_desc_t UDC_DESC_STORAGE *udc_get_interface_desc(void); * -# Ensure that conf_usb.h is available and contains the following configuration * which is the main USB device configuration: * - \code // Vendor ID provided by USB org (ATMEL 0x03EB) - #define USB_DEVICE_VENDOR_ID 0x03EB // Type Word - // Product ID (Atmel PID referenced in usb_atmel.h) - #define USB_DEVICE_PRODUCT_ID 0xXXXX // Type Word - // Major version of the device - #define USB_DEVICE_MAJOR_VERSION 1 // Type Byte - // Minor version of the device - #define USB_DEVICE_MINOR_VERSION 0 // Type Byte - // Maximum device power (mA) - #define USB_DEVICE_POWER 100 // Type 9-bits - // USB attributes to enable features - #define USB_DEVICE_ATTR USB_CONFIG_ATTR_BUS_POWERED // Flags \endcode + #define USB_DEVICE_VENDOR_ID 0x03EB // Type Word + // Product ID (Atmel PID referenced in usb_atmel.h) + #define USB_DEVICE_PRODUCT_ID 0xXXXX // Type Word + // Major version of the device + #define USB_DEVICE_MAJOR_VERSION 1 // Type Byte + // Minor version of the device + #define USB_DEVICE_MINOR_VERSION 0 // Type Byte + // Maximum device power (mA) + #define USB_DEVICE_POWER 100 // Type 9-bits + // USB attributes to enable features + #define USB_DEVICE_ATTR USB_CONFIG_ATTR_BUS_POWERED // Flags \endcode * -# Call the USB device stack start function to enable stack and start USB: * - \code udc_start(); \endcode * \note In case of USB dual roles (Device and Host) managed through USB OTG connector @@ -372,90 +365,90 @@ usb_iface_desc_t UDC_DESC_STORAGE *udc_get_interface_desc(void); * * Content of XMEGA conf_clock.h: * \code - // Configuration based on internal RC: - // USB clock need of 48Mhz - #define CONFIG_USBCLK_SOURCE USBCLK_SRC_RCOSC - #define CONFIG_OSC_RC32_CAL 48000000UL - #define CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC OSC_ID_USBSOF - // CPU clock need of clock > 12MHz to run with USB (Here 24MHz) - #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RC32MHZ - #define CONFIG_SYSCLK_PSADIV SYSCLK_PSADIV_2 - #define CONFIG_SYSCLK_PSBCDIV SYSCLK_PSBCDIV_1_1 + // Configuration based on internal RC: + // USB clock need of 48Mhz + #define CONFIG_USBCLK_SOURCE USBCLK_SRC_RCOSC + #define CONFIG_OSC_RC32_CAL 48000000UL + #define CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC OSC_ID_USBSOF + // CPU clock need of clock > 12MHz to run with USB (Here 24MHz) + #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RC32MHZ + #define CONFIG_SYSCLK_PSADIV SYSCLK_PSADIV_2 + #define CONFIG_SYSCLK_PSBCDIV SYSCLK_PSBCDIV_1_1 \endcode * * Content of conf_clock.h for AT32UC3A0, AT32UC3A1, AT32UC3B devices (USBB): * \code - // Configuration based on 12MHz external OSC: - #define CONFIG_PLL1_SOURCE PLL_SRC_OSC0 - #define CONFIG_PLL1_MUL 8 - #define CONFIG_PLL1_DIV 2 - #define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL1 - #define CONFIG_USBCLK_DIV 1 // Fusb = Fsys/(2 ^ USB_div) + // Configuration based on 12MHz external OSC: + #define CONFIG_PLL1_SOURCE PLL_SRC_OSC0 + #define CONFIG_PLL1_MUL 8 + #define CONFIG_PLL1_DIV 2 + #define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL1 + #define CONFIG_USBCLK_DIV 1 // Fusb = Fsys/(2 ^ USB_div) \endcode * * Content of conf_clock.h for AT32UC3A3, AT32UC3A4 devices (USBB with high speed support): * \code - // Configuration based on 12MHz external OSC: - #define CONFIG_USBCLK_SOURCE USBCLK_SRC_OSC0 - #define CONFIG_USBCLK_DIV 1 // Fusb = Fsys/(2 ^ USB_div) + // Configuration based on 12MHz external OSC: + #define CONFIG_USBCLK_SOURCE USBCLK_SRC_OSC0 + #define CONFIG_USBCLK_DIV 1 // Fusb = Fsys/(2 ^ USB_div) \endcode * * Content of conf_clock.h for AT32UC3C, ATUCXXD, ATUCXXL3U, ATUCXXL4U devices (USBC): * \code - // Configuration based on 12MHz external OSC: - #define CONFIG_PLL1_SOURCE PLL_SRC_OSC0 - #define CONFIG_PLL1_MUL 8 - #define CONFIG_PLL1_DIV 2 - #define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL1 - #define CONFIG_USBCLK_DIV 1 // Fusb = Fsys/(2 ^ USB_div) - // CPU clock need of clock > 25MHz to run with USBC - #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLL1 + // Configuration based on 12MHz external OSC: + #define CONFIG_PLL1_SOURCE PLL_SRC_OSC0 + #define CONFIG_PLL1_MUL 8 + #define CONFIG_PLL1_DIV 2 + #define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL1 + #define CONFIG_USBCLK_DIV 1 // Fusb = Fsys/(2 ^ USB_div) + // CPU clock need of clock > 25MHz to run with USBC + #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLL1 \endcode * * Content of conf_clock.h for SAM3S, SAM3SD, SAM4S devices (UPD: USB Peripheral Device): * \code - // PLL1 (B) Options (Fpll = (Fclk * PLL_mul) / PLL_div) - #define CONFIG_PLL1_SOURCE PLL_SRC_MAINCK_XTAL - #define CONFIG_PLL1_MUL 16 - #define CONFIG_PLL1_DIV 2 - // USB Clock Source Options (Fusb = FpllX / USB_div) - #define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL1 - #define CONFIG_USBCLK_DIV 2 + // PLL1 (B) Options (Fpll = (Fclk * PLL_mul) / PLL_div) + #define CONFIG_PLL1_SOURCE PLL_SRC_MAINCK_XTAL + #define CONFIG_PLL1_MUL 16 + #define CONFIG_PLL1_DIV 2 + // USB Clock Source Options (Fusb = FpllX / USB_div) + #define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL1 + #define CONFIG_USBCLK_DIV 2 \endcode * * Content of conf_clock.h for SAM3U device (UPDHS: USB Peripheral Device High Speed): * \code - // USB Clock Source fixed at UPLL. + // USB Clock Source fixed at UPLL. \endcode * * Content of conf_clock.h for SAM3X, SAM3A devices (UOTGHS: USB OTG High Speed): * \code - // USB Clock Source fixed at UPLL. - #define CONFIG_USBCLK_SOURCE USBCLK_SRC_UPLL - #define CONFIG_USBCLK_DIV 1 + // USB Clock Source fixed at UPLL. + #define CONFIG_USBCLK_SOURCE USBCLK_SRC_UPLL + #define CONFIG_USBCLK_DIV 1 \endcode * * Content of conf_clocks.h for SAMD devices (USB): * \code - // System clock bus configuration - # define CONF_CLOCK_FLASH_WAIT_STATES 2 + // System clock bus configuration + # define CONF_CLOCK_FLASH_WAIT_STATES 2 - // USB Clock Source fixed at DFLL. - // SYSTEM_CLOCK_SOURCE_DFLL configuration - Digital Frequency Locked Loop - # define CONF_CLOCK_DFLL_ENABLE true - # define CONF_CLOCK_DFLL_LOOP_MODE SYSTEM_CLOCK_DFLL_LOOP_MODE_USB_RECOVERY - # define CONF_CLOCK_DFLL_ON_DEMAND true + // USB Clock Source fixed at DFLL. + // SYSTEM_CLOCK_SOURCE_DFLL configuration - Digital Frequency Locked Loop + # define CONF_CLOCK_DFLL_ENABLE true + # define CONF_CLOCK_DFLL_LOOP_MODE SYSTEM_CLOCK_DFLL_LOOP_MODE_USB_RECOVERY + # define CONF_CLOCK_DFLL_ON_DEMAND true - // Set this to true to configure the GCLK when running clocks_init. - // If set to false, none of the GCLK generators will be configured in clocks_init(). - # define CONF_CLOCK_CONFIGURE_GCLK true + // Set this to true to configure the GCLK when running clocks_init. + // If set to false, none of the GCLK generators will be configured in clocks_init(). + # define CONF_CLOCK_CONFIGURE_GCLK true - // Configure GCLK generator 0 (Main Clock) - # define CONF_CLOCK_GCLK_0_ENABLE true - # define CONF_CLOCK_GCLK_0_RUN_IN_STANDBY true - # define CONF_CLOCK_GCLK_0_CLOCK_SOURCE SYSTEM_CLOCK_SOURCE_DFLL - # define CONF_CLOCK_GCLK_0_PRESCALER 1 - # define CONF_CLOCK_GCLK_0_OUTPUT_ENABLE false + // Configure GCLK generator 0 (Main Clock) + # define CONF_CLOCK_GCLK_0_ENABLE true + # define CONF_CLOCK_GCLK_0_RUN_IN_STANDBY true + # define CONF_CLOCK_GCLK_0_CLOCK_SOURCE SYSTEM_CLOCK_SOURCE_DFLL + # define CONF_CLOCK_GCLK_0_PRESCALER 1 + # define CONF_CLOCK_GCLK_0_OUTPUT_ENABLE false \endcode */ @@ -474,34 +467,34 @@ usb_iface_desc_t UDC_DESC_STORAGE *udc_get_interface_desc(void); * \subsection udc_use_case_1_usage_code Example code * Content of conf_usb.h: * \code - #if // Low speed - #define USB_DEVICE_LOW_SPEED - // #define USB_DEVICE_HS_SUPPORT + #if // Low speed + #define USB_DEVICE_LOW_SPEED + // #define USB_DEVICE_HS_SUPPORT - #elif // Full speed - // #define USB_DEVICE_LOW_SPEED - // #define USB_DEVICE_HS_SUPPORT + #elif // Full speed + // #define USB_DEVICE_LOW_SPEED + // #define USB_DEVICE_HS_SUPPORT - #elif // High speed - // #define USB_DEVICE_LOW_SPEED - #define USB_DEVICE_HS_SUPPORT + #elif // High speed + // #define USB_DEVICE_LOW_SPEED + #define USB_DEVICE_HS_SUPPORT - #endif + #endif \endcode * * \subsection udc_use_case_1_usage_flow Workflow * -# Ensure that conf_usb.h is available and contains the following parameters * required for a USB device low speed (1.5Mbit/s): * - \code #define USB_DEVICE_LOW_SPEED - //#define USB_DEVICE_HS_SUPPORT \endcode + //#define USB_DEVICE_HS_SUPPORT \endcode * -# Ensure that conf_usb.h contains the following parameters * required for a USB device full speed (12Mbit/s): * - \code //#define USB_DEVICE_LOW_SPEED - //#define USB_DEVICE_HS_SUPPORT \endcode + //#define USB_DEVICE_HS_SUPPORT \endcode * -# Ensure that conf_usb.h contains the following parameters * required for a USB device high speed (480Mbit/s): * - \code //#define USB_DEVICE_LOW_SPEED - #define USB_DEVICE_HS_SUPPORT \endcode + #define USB_DEVICE_HS_SUPPORT \endcode */ /** @@ -518,20 +511,20 @@ usb_iface_desc_t UDC_DESC_STORAGE *udc_get_interface_desc(void); * \subsection udc_use_case_2_usage_code Example code * Content of conf_usb.h: * \code - #define USB_DEVICE_MANUFACTURE_NAME "Manufacture name" - #define USB_DEVICE_PRODUCT_NAME "Product name" - #define USB_DEVICE_SERIAL_NAME "12...EF" + #define USB_DEVICE_MANUFACTURE_NAME "Manufacture name" + #define USB_DEVICE_PRODUCT_NAME "Product name" + #define USB_DEVICE_SERIAL_NAME "12...EF" \endcode * * \subsection udc_use_case_2_usage_flow Workflow * -# Ensure that conf_usb.h is available and contains the following parameters * required to enable different USB strings: * - \code // Static ASCII name for the manufacture - #define USB_DEVICE_MANUFACTURE_NAME "Manufacture name" \endcode + #define USB_DEVICE_MANUFACTURE_NAME "Manufacture name" \endcode * - \code // Static ASCII name for the product - #define USB_DEVICE_PRODUCT_NAME "Product name" \endcode + #define USB_DEVICE_PRODUCT_NAME "Product name" \endcode * - \code // Static ASCII name to enable and set a serial number - #define USB_DEVICE_SERIAL_NAME "12...EF" \endcode + #define USB_DEVICE_SERIAL_NAME "12...EF" \endcode */ /** @@ -548,42 +541,42 @@ usb_iface_desc_t UDC_DESC_STORAGE *udc_get_interface_desc(void); * \subsection udc_use_case_3_usage_code Example code * Content of conf_usb.h: * \code - #define USB_DEVICE_ATTR \ - (USB_CONFIG_ATTR_REMOTE_WAKEUP | USB_CONFIG_ATTR_..._POWERED) - #define UDC_REMOTEWAKEUP_ENABLE() my_callback_remotewakeup_enable() - extern void my_callback_remotewakeup_enable(void); - #define UDC_REMOTEWAKEUP_DISABLE() my_callback_remotewakeup_disable() - extern void my_callback_remotewakeup_disable(void); + #define USB_DEVICE_ATTR \ + (USB_CONFIG_ATTR_REMOTE_WAKEUP | USB_CONFIG_ATTR_..._POWERED) + #define UDC_REMOTEWAKEUP_ENABLE() my_callback_remotewakeup_enable() + extern void my_callback_remotewakeup_enable(void); + #define UDC_REMOTEWAKEUP_DISABLE() my_callback_remotewakeup_disable() + extern void my_callback_remotewakeup_disable(void); \endcode * * Add to application C-file: * \code - void my_callback_remotewakeup_enable(void) - { - // Enable application wakeup events (e.g. enable GPIO interrupt) - } - void my_callback_remotewakeup_disable(void) - { - // Disable application wakeup events (e.g. disable GPIO interrupt) - } + void my_callback_remotewakeup_enable(void) + { + // Enable application wakeup events (e.g. enable GPIO interrupt) + } + void my_callback_remotewakeup_disable(void) + { + // Disable application wakeup events (e.g. disable GPIO interrupt) + } - void my_interrupt_event(void) - { - udc_remotewakeup(); - } + void my_interrupt_event(void) + { + udc_remotewakeup(); + } \endcode * * \subsection udc_use_case_3_usage_flow Workflow * -# Ensure that conf_usb.h is available and contains the following parameters * required to enable remote wakeup feature: * - \code // Authorizes the remote wakeup feature - #define USB_DEVICE_ATTR (USB_CONFIG_ATTR_REMOTE_WAKEUP | USB_CONFIG_ATTR_..._POWERED) \endcode + #define USB_DEVICE_ATTR (USB_CONFIG_ATTR_REMOTE_WAKEUP | USB_CONFIG_ATTR_..._POWERED) \endcode * - \code // Define callback called when the host enables the remotewakeup feature - #define UDC_REMOTEWAKEUP_ENABLE() my_callback_remotewakeup_enable() - extern void my_callback_remotewakeup_enable(void); \endcode + #define UDC_REMOTEWAKEUP_ENABLE() my_callback_remotewakeup_enable() + extern void my_callback_remotewakeup_enable(void); \endcode * - \code // Define callback called when the host disables the remotewakeup feature - #define UDC_REMOTEWAKEUP_DISABLE() my_callback_remotewakeup_disable() - extern void my_callback_remotewakeup_disable(void); \endcode + #define UDC_REMOTEWAKEUP_DISABLE() my_callback_remotewakeup_disable() + extern void my_callback_remotewakeup_disable(void); \endcode * -# Send a remote wakeup (USB upstream): * - \code udc_remotewakeup(); \endcode */ @@ -603,40 +596,40 @@ usb_iface_desc_t UDC_DESC_STORAGE *udc_get_interface_desc(void); * \subsection udc_use_case_5_usage_code Example code * Content of conf_usb.h: * \code - #define USB_DEVICE_ATTR (USB_CONFIG_ATTR_BUS_POWERED) - #define UDC_SUSPEND_EVENT() user_callback_suspend_action() - extern void user_callback_suspend_action(void) - #define UDC_RESUME_EVENT() user_callback_resume_action() - extern void user_callback_resume_action(void) + #define USB_DEVICE_ATTR (USB_CONFIG_ATTR_BUS_POWERED) + #define UDC_SUSPEND_EVENT() user_callback_suspend_action() + extern void user_callback_suspend_action(void) + #define UDC_RESUME_EVENT() user_callback_resume_action() + extern void user_callback_resume_action(void) \endcode * * Add to application C-file: * \code - void user_callback_suspend_action(void) - { - // Disable hardware component to reduce power consumption - } - void user_callback_resume_action(void) - { - // Re-enable hardware component - } + void user_callback_suspend_action(void) + { + // Disable hardware component to reduce power consumption + } + void user_callback_resume_action(void) + { + // Re-enable hardware component + } \endcode * * \subsection udc_use_case_5_usage_flow Workflow * -# Ensure that conf_usb.h is available and contains the following parameters: * - \code // Authorizes the BUS power feature - #define USB_DEVICE_ATTR (USB_CONFIG_ATTR_BUS_POWERED) \endcode + #define USB_DEVICE_ATTR (USB_CONFIG_ATTR_BUS_POWERED) \endcode * - \code // Define callback called when the host suspend the USB line - #define UDC_SUSPEND_EVENT() user_callback_suspend_action() - extern void user_callback_suspend_action(void); \endcode + #define UDC_SUSPEND_EVENT() user_callback_suspend_action() + extern void user_callback_suspend_action(void); \endcode * - \code // Define callback called when the host or device resume the USB line - #define UDC_RESUME_EVENT() user_callback_resume_action() - extern void user_callback_resume_action(void); \endcode + #define UDC_RESUME_EVENT() user_callback_resume_action() + extern void user_callback_resume_action(void); \endcode * -# Reduce power consumption in suspend mode (max. 2.5mA on Vbus): * - \code void user_callback_suspend_action(void) - { - turn_off_components(); - } \endcode + { + turn_off_components(); + } \endcode */ /** @@ -654,42 +647,42 @@ usb_iface_desc_t UDC_DESC_STORAGE *udc_get_interface_desc(void); * \subsection udc_use_case_6_usage_code Example code * Content of conf_usb.h: * \code - #define USB_DEVICE_SERIAL_NAME - #define USB_DEVICE_GET_SERIAL_NAME_POINTER serial_number - #define USB_DEVICE_GET_SERIAL_NAME_LENGTH 12 - extern uint8_t serial_number[]; + #define USB_DEVICE_SERIAL_NAME + #define USB_DEVICE_GET_SERIAL_NAME_POINTER serial_number + #define USB_DEVICE_GET_SERIAL_NAME_LENGTH 12 + extern uint8_t serial_number[]; \endcode * * Add to application C-file: * \code - uint8_t serial_number[USB_DEVICE_GET_SERIAL_NAME_LENGTH]; + uint8_t serial_number[USB_DEVICE_GET_SERIAL_NAME_LENGTH]; - void init_build_usb_serial_number(void) - { - serial_number[0] = 'A'; - serial_number[1] = 'B'; - ... - serial_number[USB_DEVICE_GET_SERIAL_NAME_LENGTH-1] = 'C'; - } \endcode + void init_build_usb_serial_number(void) + { + serial_number[0] = 'A'; + serial_number[1] = 'B'; + ... + serial_number[USB_DEVICE_GET_SERIAL_NAME_LENGTH-1] = 'C'; + } \endcode * * \subsection udc_use_case_6_usage_flow Workflow * -# Ensure that conf_usb.h is available and contains the following parameters * required to enable a USB serial number strings dynamically: * - \code #define USB_DEVICE_SERIAL_NAME // Define this empty - #define USB_DEVICE_GET_SERIAL_NAME_POINTER serial_number // Give serial array pointer - #define USB_DEVICE_GET_SERIAL_NAME_LENGTH 12 // Give size of serial array - extern uint8_t serial_number[]; // Declare external serial array \endcode + #define USB_DEVICE_GET_SERIAL_NAME_POINTER serial_number // Give serial array pointer + #define USB_DEVICE_GET_SERIAL_NAME_LENGTH 12 // Give size of serial array + extern uint8_t serial_number[]; // Declare external serial array \endcode * -# Before start USB stack, initialize the serial array * - \code - uint8_t serial_number[USB_DEVICE_GET_SERIAL_NAME_LENGTH]; + uint8_t serial_number[USB_DEVICE_GET_SERIAL_NAME_LENGTH]; - void init_build_usb_serial_number(void) - { - serial_number[0] = 'A'; - serial_number[1] = 'B'; - ... - serial_number[USB_DEVICE_GET_SERIAL_NAME_LENGTH-1] = 'C'; - } \endcode + void init_build_usb_serial_number(void) + { + serial_number[0] = 'A'; + serial_number[1] = 'B'; + ... + serial_number[USB_DEVICE_GET_SERIAL_NAME_LENGTH-1] = 'C'; + } \endcode */ diff --git a/Marlin/src/HAL/DUE/usb/udc_desc.h b/Marlin/src/HAL/DUE/usb/udc_desc.h index 052ca08eca..f1f328d035 100644 --- a/Marlin/src/HAL/DUE/usb/udc_desc.h +++ b/Marlin/src/HAL/DUE/usb/udc_desc.h @@ -78,50 +78,47 @@ extern "C" { * For Mega application used "code". */ #define UDC_DESC_STORAGE - // Descriptor storage in internal RAM + // Descriptor storage in internal RAM #if (defined UDC_DATA_USE_HRAM_SUPPORT) -# if defined(__GNUC__) -# define UDC_DATA(x) COMPILER_WORD_ALIGNED __attribute__((__section__(".data_hram0"))) -# define UDC_BSS(x) COMPILER_ALIGNED(x) __attribute__((__section__(".bss_hram0"))) -# elif defined(__ICCAVR32__) -# define UDC_DATA(x) COMPILER_ALIGNED(x) __data32 -# define UDC_BSS(x) COMPILER_ALIGNED(x) __data32 -# endif -#else -# define UDC_DATA(x) COMPILER_ALIGNED(x) -# define UDC_BSS(x) COMPILER_ALIGNED(x) + #if defined(__GNUC__) + #define UDC_DATA(x) COMPILER_WORD_ALIGNED __attribute__((__section__(".data_hram0"))) + #define UDC_BSS(x) COMPILER_ALIGNED(x) __attribute__((__section__(".bss_hram0"))) +#elif defined(__ICCAVR32__) + #define UDC_DATA(x) COMPILER_ALIGNED(x) __data32 + #define UDC_BSS(x) COMPILER_ALIGNED(x) __data32 +#endif +#else + #define UDC_DATA(x) COMPILER_ALIGNED(x) + #define UDC_BSS(x) COMPILER_ALIGNED(x) #endif - - /** * \brief Configuration descriptor and UDI link for one USB speed */ typedef struct { - //! USB configuration descriptor - usb_conf_desc_t UDC_DESC_STORAGE *desc; - //! Array of UDI API pointer - udi_api_t UDC_DESC_STORAGE *UDC_DESC_STORAGE * udi_apis; + //! USB configuration descriptor + usb_conf_desc_t UDC_DESC_STORAGE *desc; + //! Array of UDI API pointer + udi_api_t UDC_DESC_STORAGE *UDC_DESC_STORAGE * udi_apis; } udc_config_speed_t; - /** * \brief All information about the USB Device */ typedef struct { - //! USB device descriptor for low or full speed - usb_dev_desc_t UDC_DESC_STORAGE *confdev_lsfs; - //! USB configuration descriptor and UDI API pointers for low or full speed - udc_config_speed_t UDC_DESC_STORAGE *conf_lsfs; -#ifdef USB_DEVICE_HS_SUPPORT - //! USB device descriptor for high speed - usb_dev_desc_t UDC_DESC_STORAGE *confdev_hs; - //! USB device qualifier, only use in high speed mode - usb_dev_qual_desc_t UDC_DESC_STORAGE *qualifier; - //! USB configuration descriptor and UDI API pointers for high speed - udc_config_speed_t UDC_DESC_STORAGE *conf_hs; -#endif - usb_dev_bos_desc_t UDC_DESC_STORAGE *conf_bos; + //! USB device descriptor for low or full speed + usb_dev_desc_t UDC_DESC_STORAGE *confdev_lsfs; + //! USB configuration descriptor and UDI API pointers for low or full speed + udc_config_speed_t UDC_DESC_STORAGE *conf_lsfs; + #ifdef USB_DEVICE_HS_SUPPORT + //! USB device descriptor for high speed + usb_dev_desc_t UDC_DESC_STORAGE *confdev_hs; + //! USB device qualifier, only use in high speed mode + usb_dev_qual_desc_t UDC_DESC_STORAGE *qualifier; + //! USB configuration descriptor and UDI API pointers for high speed + udc_config_speed_t UDC_DESC_STORAGE *conf_hs; + #endif + usb_dev_bos_desc_t UDC_DESC_STORAGE *conf_bos; } udc_config_t; //! Global variables of USB Device Descriptor and UDI links diff --git a/Marlin/src/HAL/DUE/usb/udd.h b/Marlin/src/HAL/DUE/usb/udd.h index 319d8842f7..6eda465e54 100644 --- a/Marlin/src/HAL/DUE/usb/udd.h +++ b/Marlin/src/HAL/DUE/usb/udd.h @@ -71,8 +71,8 @@ typedef uint8_t udd_ep_id_t; //! \brief Endpoint transfer status //! Returned in parameters of callback register via udd_ep_run routine. typedef enum { - UDD_EP_TRANSFER_OK = 0, - UDD_EP_TRANSFER_ABORT = 1, + UDD_EP_TRANSFER_OK = 0, + UDD_EP_TRANSFER_ABORT = 1, } udd_ep_status_t; /** @@ -82,41 +82,37 @@ typedef enum { * It can be updated by udc_process_setup() from UDC or *setup() from UDIs. */ typedef struct { - //! Data received in USB SETUP packet - //! Note: The swap of "req.wValues" from uin16_t to le16_t is done by UDD. - usb_setup_req_t req; + //! Data received in USB SETUP packet + //! Note: The swap of "req.wValues" from uin16_t to le16_t is done by UDD. + usb_setup_req_t req; - //! Point to buffer to send or fill with data following SETUP packet - //! This buffer must be word align for DATA IN phase (use prefix COMPILER_WORD_ALIGNED for buffer) - uint8_t *payload; + //! Point to buffer to send or fill with data following SETUP packet + //! This buffer must be word align for DATA IN phase (use prefix COMPILER_WORD_ALIGNED for buffer) + uint8_t *payload; - //! Size of buffer to send or fill, and content the number of byte transferred - uint16_t payload_size; + //! Size of buffer to send or fill, and content the number of byte transferred + uint16_t payload_size; - //! Callback called after reception of ZLP from setup request - void (*callback)(void); + //! Callback called after reception of ZLP from setup request + void (*callback)(void); - //! Callback called when the buffer given (.payload) is full or empty. - //! This one return false to abort data transfer, or true with a new buffer in .payload. - bool (*over_under_run)(void); + //! Callback called when the buffer given (.payload) is full or empty. + //! This one return false to abort data transfer, or true with a new buffer in .payload. + bool (*over_under_run)(void); } udd_ctrl_request_t; extern udd_ctrl_request_t udd_g_ctrlreq; //! Return true if the setup request \a udd_g_ctrlreq indicates IN data transfer -#define Udd_setup_is_in() \ - (USB_REQ_DIR_IN == (udd_g_ctrlreq.req.bmRequestType & USB_REQ_DIR_MASK)) +#define Udd_setup_is_in() (USB_REQ_DIR_IN == (udd_g_ctrlreq.req.bmRequestType & USB_REQ_DIR_MASK)) //! Return true if the setup request \a udd_g_ctrlreq indicates OUT data transfer -#define Udd_setup_is_out() \ - (USB_REQ_DIR_OUT == (udd_g_ctrlreq.req.bmRequestType & USB_REQ_DIR_MASK)) +#define Udd_setup_is_out() (USB_REQ_DIR_OUT == (udd_g_ctrlreq.req.bmRequestType & USB_REQ_DIR_MASK)) //! Return the type of the SETUP request \a udd_g_ctrlreq. \see usb_reqtype. -#define Udd_setup_type() \ - (udd_g_ctrlreq.req.bmRequestType & USB_REQ_TYPE_MASK) +#define Udd_setup_type() (udd_g_ctrlreq.req.bmRequestType & USB_REQ_TYPE_MASK) //! Return the recipient of the SETUP request \a udd_g_ctrlreq. \see usb_recipient -#define Udd_setup_recipient() \ - (udd_g_ctrlreq.req.bmRequestType & USB_REQ_RECIP_MASK) +#define Udd_setup_recipient() (udd_g_ctrlreq.req.bmRequestType & USB_REQ_RECIP_MASK) /** * \brief End of halt callback function type. @@ -134,8 +130,7 @@ typedef void (*udd_callback_halt_cleared_t)(void); * \param status UDD_EP_TRANSFER_ABORT, if transfer is aborted * \param n number of data transferred */ -typedef void (*udd_callback_trans_t) (udd_ep_status_t status, - iram_size_t nb_transferred, udd_ep_id_t ep); +typedef void (*udd_callback_trans_t) (udd_ep_status_t status, iram_size_t nb_transferred, udd_ep_id_t ep); /** * \brief Authorizes the VBUS event @@ -239,8 +234,7 @@ void udd_set_setup_payload( uint8_t *payload, uint16_t payload_size ); * * \return \c 1 if the endpoint is enabled, otherwise \c 0. */ -bool udd_ep_alloc(udd_ep_id_t ep, uint8_t bmAttributes, - uint16_t MaxEndpointSize); +bool udd_ep_alloc(udd_ep_id_t ep, uint8_t bmAttributes, uint16_t MaxEndpointSize); /** * \brief Disables an endpoint @@ -294,8 +288,7 @@ bool udd_ep_clear_halt(udd_ep_id_t ep); * * \return \c 1 if the register is accepted, otherwise \c 0. */ -bool udd_ep_wait_stall_clear(udd_ep_id_t ep, - udd_callback_halt_cleared_t callback); +bool udd_ep_wait_stall_clear(udd_ep_id_t ep, udd_callback_halt_cleared_t callback); /** * \brief Allows to receive or send data on an endpoint @@ -321,9 +314,8 @@ bool udd_ep_wait_stall_clear(udd_ep_id_t ep, * * \return \c 1 if function was successfully done, otherwise \c 0. */ -bool udd_ep_run(udd_ep_id_t ep, bool b_shortpacket, - uint8_t * buf, iram_size_t buf_size, - udd_callback_trans_t callback); +bool udd_ep_run(udd_ep_id_t ep, bool b_shortpacket, uint8_t * buf, iram_size_t buf_size, udd_callback_trans_t callback); + /** * \brief Aborts transfer on going on endpoint * @@ -339,7 +331,6 @@ void udd_ep_abort(udd_ep_id_t ep); //@} - /** * \name High speed test mode management * @@ -352,7 +343,6 @@ void udd_test_mode_se0_nak(void); void udd_test_mode_packet(void); //@} - /** * \name UDC callbacks to provide for UDD * diff --git a/Marlin/src/HAL/DUE/usb/udi.h b/Marlin/src/HAL/DUE/usb/udi.h index febf03b718..bc5de086f3 100644 --- a/Marlin/src/HAL/DUE/usb/udi.h +++ b/Marlin/src/HAL/DUE/usb/udi.h @@ -72,57 +72,57 @@ extern "C" { * selected by UDC. */ typedef struct { - /** - * \brief Enable the interface. - * - * This function is called when the host selects a configuration - * to which this interface belongs through a Set Configuration - * request, and when the host selects an alternate setting of - * this interface through a Set Interface request. - * - * \return \c 1 if function was successfully done, otherwise \c 0. - */ - bool (*enable)(void); + /** + * \brief Enable the interface. + * + * This function is called when the host selects a configuration + * to which this interface belongs through a Set Configuration + * request, and when the host selects an alternate setting of + * this interface through a Set Interface request. + * + * \return \c 1 if function was successfully done, otherwise \c 0. + */ + bool (*enable)(void); - /** - * \brief Disable the interface. - * - * This function is called when this interface is currently - * active, and - * - the host selects any configuration through a Set - * Configuration request, or - * - the host issues a USB reset, or - * - the device is detached from the host (i.e. Vbus is no - * longer present) - */ - void (*disable)(void); + /** + * \brief Disable the interface. + * + * This function is called when this interface is currently + * active, and + * - the host selects any configuration through a Set + * Configuration request, or + * - the host issues a USB reset, or + * - the device is detached from the host (i.e. Vbus is no + * longer present) + */ + void (*disable)(void); - /** - * \brief Handle a control request directed at an interface. - * - * This function is called when this interface is currently - * active and the host sends a SETUP request - * with this interface as the recipient. - * - * Use udd_g_ctrlreq to decode and response to SETUP request. - * - * \return \c 1 if this interface supports the SETUP request, otherwise \c 0. - */ - bool (*setup)(void); + /** + * \brief Handle a control request directed at an interface. + * + * This function is called when this interface is currently + * active and the host sends a SETUP request + * with this interface as the recipient. + * + * Use udd_g_ctrlreq to decode and response to SETUP request. + * + * \return \c 1 if this interface supports the SETUP request, otherwise \c 0. + */ + bool (*setup)(void); - /** - * \brief Returns the current setting of the selected interface. - * - * This function is called when UDC when know alternate setting of selected interface. - * - * \return alternate setting of selected interface - */ - uint8_t (*getsetting)(void); + /** + * \brief Returns the current setting of the selected interface. + * + * This function is called when UDC when know alternate setting of selected interface. + * + * \return alternate setting of selected interface + */ + uint8_t (*getsetting)(void); - /** - * \brief To signal that a SOF is occurred - */ - void (*sof_notify)(void); + /** + * \brief To signal that a SOF is occurred + */ + void (*sof_notify)(void); } udi_api_t; //@} diff --git a/Marlin/src/HAL/DUE/usb/udi_cdc.h b/Marlin/src/HAL/DUE/usb/udi_cdc.h index b61845011a..2bc5fff187 100644 --- a/Marlin/src/HAL/DUE/usb/udi_cdc.h +++ b/Marlin/src/HAL/DUE/usb/udi_cdc.h @@ -92,18 +92,18 @@ extern UDC_DESC_STORAGE udi_api_t udi_api_cdc_data; * descriptors for the CDC Communication Class interface. */ typedef struct { - //! Standard interface descriptor - usb_iface_desc_t iface; - //! CDC Header functional descriptor - usb_cdc_hdr_desc_t header; - //! CDC Abstract Control Model functional descriptor - usb_cdc_acm_desc_t acm; - //! CDC Union functional descriptor - usb_cdc_union_desc_t union_desc; - //! CDC Call Management functional descriptor - usb_cdc_call_mgmt_desc_t call_mgmt; - //! Notification endpoint descriptor - usb_ep_desc_t ep_notify; + //! Standard interface descriptor + usb_iface_desc_t iface; + //! CDC Header functional descriptor + usb_cdc_hdr_desc_t header; + //! CDC Abstract Control Model functional descriptor + usb_cdc_acm_desc_t acm; + //! CDC Union functional descriptor + usb_cdc_union_desc_t union_desc; + //! CDC Call Management functional descriptor + usb_cdc_call_mgmt_desc_t call_mgmt; + //! Notification endpoint descriptor + usb_ep_desc_t ep_notify; } udi_cdc_comm_desc_t; @@ -114,11 +114,11 @@ typedef struct { * CDC Data Class interface. */ typedef struct { - //! Standard interface descriptor - usb_iface_desc_t iface; - //! Data IN/OUT endpoint descriptors - usb_ep_desc_t ep_in; - usb_ep_desc_t ep_out; + //! Standard interface descriptor + usb_iface_desc_t iface; + //! Data IN/OUT endpoint descriptors + usb_ep_desc_t ep_in; + usb_ep_desc_t ep_out; } udi_cdc_data_desc_t; @@ -136,13 +136,13 @@ typedef struct { //@{ //! By default no string associated to these interfaces #ifndef UDI_CDC_IAD_STRING_ID_0 -#define UDI_CDC_IAD_STRING_ID_0 0 + #define UDI_CDC_IAD_STRING_ID_0 0 #endif #ifndef UDI_CDC_COMM_STRING_ID_0 -#define UDI_CDC_COMM_STRING_ID_0 0 + #define UDI_CDC_COMM_STRING_ID_0 0 #endif #ifndef UDI_CDC_DATA_STRING_ID_0 -#define UDI_CDC_DATA_STRING_ID_0 0 + #define UDI_CDC_DATA_STRING_ID_0 0 #endif #define UDI_CDC_IAD_DESC_0 UDI_CDC_IAD_DESC(0) #define UDI_CDC_COMM_DESC_0 UDI_CDC_COMM_DESC(0) @@ -151,13 +151,13 @@ typedef struct { //! By default no string associated to these interfaces #ifndef UDI_CDC_IAD_STRING_ID_1 -#define UDI_CDC_IAD_STRING_ID_1 0 + #define UDI_CDC_IAD_STRING_ID_1 0 #endif #ifndef UDI_CDC_COMM_STRING_ID_1 -#define UDI_CDC_COMM_STRING_ID_1 0 + #define UDI_CDC_COMM_STRING_ID_1 0 #endif #ifndef UDI_CDC_DATA_STRING_ID_1 -#define UDI_CDC_DATA_STRING_ID_1 0 + #define UDI_CDC_DATA_STRING_ID_1 0 #endif #define UDI_CDC_IAD_DESC_1 UDI_CDC_IAD_DESC(1) #define UDI_CDC_COMM_DESC_1 UDI_CDC_COMM_DESC(1) @@ -166,13 +166,13 @@ typedef struct { //! By default no string associated to these interfaces #ifndef UDI_CDC_IAD_STRING_ID_2 -#define UDI_CDC_IAD_STRING_ID_2 0 + #define UDI_CDC_IAD_STRING_ID_2 0 #endif #ifndef UDI_CDC_COMM_STRING_ID_2 -#define UDI_CDC_COMM_STRING_ID_2 0 + #define UDI_CDC_COMM_STRING_ID_2 0 #endif #ifndef UDI_CDC_DATA_STRING_ID_2 -#define UDI_CDC_DATA_STRING_ID_2 0 + #define UDI_CDC_DATA_STRING_ID_2 0 #endif #define UDI_CDC_IAD_DESC_2 UDI_CDC_IAD_DESC(2) #define UDI_CDC_COMM_DESC_2 UDI_CDC_COMM_DESC(2) @@ -181,13 +181,13 @@ typedef struct { //! By default no string associated to these interfaces #ifndef UDI_CDC_IAD_STRING_ID_3 -#define UDI_CDC_IAD_STRING_ID_3 0 + #define UDI_CDC_IAD_STRING_ID_3 0 #endif #ifndef UDI_CDC_COMM_STRING_ID_3 -#define UDI_CDC_COMM_STRING_ID_3 0 + #define UDI_CDC_COMM_STRING_ID_3 0 #endif #ifndef UDI_CDC_DATA_STRING_ID_3 -#define UDI_CDC_DATA_STRING_ID_3 0 + #define UDI_CDC_DATA_STRING_ID_3 0 #endif #define UDI_CDC_IAD_DESC_3 UDI_CDC_IAD_DESC(3) #define UDI_CDC_COMM_DESC_3 UDI_CDC_COMM_DESC(3) @@ -196,13 +196,13 @@ typedef struct { //! By default no string associated to these interfaces #ifndef UDI_CDC_IAD_STRING_ID_4 -#define UDI_CDC_IAD_STRING_ID_4 0 + #define UDI_CDC_IAD_STRING_ID_4 0 #endif #ifndef UDI_CDC_COMM_STRING_ID_4 -#define UDI_CDC_COMM_STRING_ID_4 0 + #define UDI_CDC_COMM_STRING_ID_4 0 #endif #ifndef UDI_CDC_DATA_STRING_ID_4 -#define UDI_CDC_DATA_STRING_ID_4 0 + #define UDI_CDC_DATA_STRING_ID_4 0 #endif #define UDI_CDC_IAD_DESC_4 UDI_CDC_IAD_DESC(4) #define UDI_CDC_COMM_DESC_4 UDI_CDC_COMM_DESC(4) @@ -211,13 +211,13 @@ typedef struct { //! By default no string associated to these interfaces #ifndef UDI_CDC_IAD_STRING_ID_5 -#define UDI_CDC_IAD_STRING_ID_5 0 + #define UDI_CDC_IAD_STRING_ID_5 0 #endif #ifndef UDI_CDC_COMM_STRING_ID_5 -#define UDI_CDC_COMM_STRING_ID_5 0 + #define UDI_CDC_COMM_STRING_ID_5 0 #endif #ifndef UDI_CDC_DATA_STRING_ID_5 -#define UDI_CDC_DATA_STRING_ID_5 0 + #define UDI_CDC_DATA_STRING_ID_5 0 #endif #define UDI_CDC_IAD_DESC_5 UDI_CDC_IAD_DESC(5) #define UDI_CDC_COMM_DESC_5 UDI_CDC_COMM_DESC(5) @@ -226,13 +226,13 @@ typedef struct { //! By default no string associated to these interfaces #ifndef UDI_CDC_IAD_STRING_ID_6 -#define UDI_CDC_IAD_STRING_ID_6 0 + #define UDI_CDC_IAD_STRING_ID_6 0 #endif #ifndef UDI_CDC_COMM_STRING_ID_6 -#define UDI_CDC_COMM_STRING_ID_6 0 + #define UDI_CDC_COMM_STRING_ID_6 0 #endif #ifndef UDI_CDC_DATA_STRING_ID_6 -#define UDI_CDC_DATA_STRING_ID_6 0 + #define UDI_CDC_DATA_STRING_ID_6 0 #endif #define UDI_CDC_IAD_DESC_6 UDI_CDC_IAD_DESC(6) #define UDI_CDC_COMM_DESC_6 UDI_CDC_COMM_DESC(6) @@ -240,7 +240,6 @@ typedef struct { #define UDI_CDC_DATA_DESC_6_HS UDI_CDC_DATA_DESC_HS(6) //@} - //! Content of CDC IAD interface descriptor for all speeds #define UDI_CDC_IAD_DESC(port) { \ .bLength = sizeof(usb_iad_desc_t),\ @@ -270,7 +269,7 @@ typedef struct { .call_mgmt.bDescriptorType = CDC_CS_INTERFACE,\ .call_mgmt.bDescriptorSubtype = CDC_SCS_CALL_MGMT,\ .call_mgmt.bmCapabilities = \ - CDC_CALL_MGMT_SUPPORTED | CDC_CALL_MGMT_OVER_DCI,\ + CDC_CALL_MGMT_SUPPORTED | CDC_CALL_MGMT_OVER_DCI,\ .acm.bFunctionLength = sizeof(usb_cdc_acm_desc_t),\ .acm.bDescriptorType = CDC_CS_INTERFACE,\ .acm.bDescriptorSubtype = CDC_SCS_ACM,\ @@ -610,40 +609,37 @@ iram_size_t udi_cdc_multi_write_buf(uint8_t port, const void* buf, iram_size_t s * \subsection udi_cdc_basic_use_case_usage_code Example code * Content of conf_usb.h: * \code - #define UDI_CDC_ENABLE_EXT(port) my_callback_cdc_enable() - extern bool my_callback_cdc_enable(void); - #define UDI_CDC_DISABLE_EXT(port) my_callback_cdc_disable() - extern void my_callback_cdc_disable(void); - #define UDI_CDC_LOW_RATE + #define UDI_CDC_ENABLE_EXT(port) my_callback_cdc_enable() + extern bool my_callback_cdc_enable(void); + #define UDI_CDC_DISABLE_EXT(port) my_callback_cdc_disable() + extern void my_callback_cdc_disable(void); + #define UDI_CDC_LOW_RATE - #define UDI_CDC_DEFAULT_RATE 115200 - #define UDI_CDC_DEFAULT_STOPBITS CDC_STOP_BITS_1 - #define UDI_CDC_DEFAULT_PARITY CDC_PAR_NONE - #define UDI_CDC_DEFAULT_DATABITS 8 + #define UDI_CDC_DEFAULT_RATE 115200 + #define UDI_CDC_DEFAULT_STOPBITS CDC_STOP_BITS_1 + #define UDI_CDC_DEFAULT_PARITY CDC_PAR_NONE + #define UDI_CDC_DEFAULT_DATABITS 8 - #include "udi_cdc_conf.h" // At the end of conf_usb.h file + #include "udi_cdc_conf.h" // At the end of conf_usb.h file \endcode * * Add to application C-file: * \code - static bool my_flag_autorize_cdc_transfert = false; - bool my_callback_cdc_enable(void) - { - my_flag_autorize_cdc_transfert = true; - return true; - } - void my_callback_cdc_disable(void) - { - my_flag_autorize_cdc_transfert = false; - } + static bool my_flag_autorize_cdc_transfert = false; + bool my_callback_cdc_enable(void) { + my_flag_autorize_cdc_transfert = true; + return true; + } + void my_callback_cdc_disable(void) { + my_flag_autorize_cdc_transfert = false; + } - void task(void) - { - if (my_flag_autorize_cdc_transfert) { - udi_cdc_putc('A'); - udi_cdc_getc(); - } - } + void task(void) { + if (my_flag_autorize_cdc_transfert) { + udi_cdc_putc('A'); + udi_cdc_getc(); + } + } \endcode * * \subsection udi_cdc_basic_use_case_setup_flow Workflow @@ -652,14 +648,14 @@ iram_size_t udi_cdc_multi_write_buf(uint8_t port, const void* buf, iram_size_t s * - \code #define USB_DEVICE_SERIAL_NAME "12...EF" // Disk SN for CDC \endcode * \note The USB serial number is mandatory when a CDC interface is used. * - \code #define UDI_CDC_ENABLE_EXT(port) my_callback_cdc_enable() - extern bool my_callback_cdc_enable(void); \endcode + extern bool my_callback_cdc_enable(void); \endcode * \note After the device enumeration (detecting and identifying USB devices), * the USB host starts the device configuration. When the USB CDC interface * from the device is accepted by the host, the USB host enables this interface and the * UDI_CDC_ENABLE_EXT() callback function is called and return true. * Thus, when this event is received, the data transfer on CDC interface are authorized. * - \code #define UDI_CDC_DISABLE_EXT(port) my_callback_cdc_disable() - extern void my_callback_cdc_disable(void); \endcode + extern void my_callback_cdc_disable(void); \endcode * \note When the USB device is unplugged or is reset by the USB host, the USB * interface is disabled and the UDI_CDC_DISABLE_EXT() callback function * is called. Thus, the data transfer must be stopped on CDC interface. @@ -667,19 +663,19 @@ iram_size_t udi_cdc_multi_write_buf(uint8_t port, const void* buf, iram_size_t s * \note Define it when the transfer CDC Device to Host is a low rate * (<512000 bauds) to reduce CDC buffers size. * - \code #define UDI_CDC_DEFAULT_RATE 115200 - #define UDI_CDC_DEFAULT_STOPBITS CDC_STOP_BITS_1 - #define UDI_CDC_DEFAULT_PARITY CDC_PAR_NONE - #define UDI_CDC_DEFAULT_DATABITS 8 \endcode + #define UDI_CDC_DEFAULT_STOPBITS CDC_STOP_BITS_1 + #define UDI_CDC_DEFAULT_PARITY CDC_PAR_NONE + #define UDI_CDC_DEFAULT_DATABITS 8 \endcode * \note Default configuration of communication port at startup. * -# Send or wait data on CDC line: * - \code // Waits and gets a value on CDC line - int udi_cdc_getc(void); - // Reads a RAM buffer on CDC line - iram_size_t udi_cdc_read_buf(int *buf, iram_size_t size); - // Puts a byte on CDC line - int udi_cdc_putc(int value); - // Writes a RAM buffer on CDC line - iram_size_t udi_cdc_write_buf(const int *buf, iram_size_t size); \endcode + int udi_cdc_getc(void); + // Reads a RAM buffer on CDC line + iram_size_t udi_cdc_read_buf(int *buf, iram_size_t size); + // Puts a byte on CDC line + int udi_cdc_putc(int value); + // Writes a RAM buffer on CDC line + iram_size_t udi_cdc_write_buf(const int *buf, iram_size_t size); \endcode * * \section udi_cdc_use_cases Advanced use cases * For more advanced use of the UDI CDC module, see the following use cases: @@ -713,90 +709,90 @@ iram_size_t udi_cdc_multi_write_buf(uint8_t port, const void* buf, iram_size_t s * \subsection udi_cdc_use_case_composite_usage_code Example code * Content of conf_usb.h: * \code - #define USB_DEVICE_EP_CTRL_SIZE 64 - #define USB_DEVICE_NB_INTERFACE (X+2) - #define USB_DEVICE_MAX_EP (X+3) + #define USB_DEVICE_EP_CTRL_SIZE 64 + #define USB_DEVICE_NB_INTERFACE (X+2) + #define USB_DEVICE_MAX_EP (X+3) - #define UDI_CDC_DATA_EP_IN_0 (1 | USB_EP_DIR_IN) // TX - #define UDI_CDC_DATA_EP_OUT_0 (2 | USB_EP_DIR_OUT) // RX - #define UDI_CDC_COMM_EP_0 (3 | USB_EP_DIR_IN) // Notify endpoint - #define UDI_CDC_COMM_IFACE_NUMBER_0 X+0 - #define UDI_CDC_DATA_IFACE_NUMBER_0 X+1 + #define UDI_CDC_DATA_EP_IN_0 (1 | USB_EP_DIR_IN) // TX + #define UDI_CDC_DATA_EP_OUT_0 (2 | USB_EP_DIR_OUT) // RX + #define UDI_CDC_COMM_EP_0 (3 | USB_EP_DIR_IN) // Notify endpoint + #define UDI_CDC_COMM_IFACE_NUMBER_0 X+0 + #define UDI_CDC_DATA_IFACE_NUMBER_0 X+1 - #define UDI_COMPOSITE_DESC_T \ - usb_iad_desc_t udi_cdc_iad; \ - udi_cdc_comm_desc_t udi_cdc_comm; \ - udi_cdc_data_desc_t udi_cdc_data; \ - ... - #define UDI_COMPOSITE_DESC_FS \ - .udi_cdc_iad = UDI_CDC_IAD_DESC_0, \ - .udi_cdc_comm = UDI_CDC_COMM_DESC_0, \ - .udi_cdc_data = UDI_CDC_DATA_DESC_0_FS, \ - ... - #define UDI_COMPOSITE_DESC_HS \ - .udi_cdc_iad = UDI_CDC_IAD_DESC_0, \ - .udi_cdc_comm = UDI_CDC_COMM_DESC_0, \ - .udi_cdc_data = UDI_CDC_DATA_DESC_0_HS, \ - ... - #define UDI_COMPOSITE_API \ - &udi_api_cdc_comm, \ - &udi_api_cdc_data, \ - ... + #define UDI_COMPOSITE_DESC_T \ + usb_iad_desc_t udi_cdc_iad; \ + udi_cdc_comm_desc_t udi_cdc_comm; \ + udi_cdc_data_desc_t udi_cdc_data; \ + ... + #define UDI_COMPOSITE_DESC_FS \ + .udi_cdc_iad = UDI_CDC_IAD_DESC_0, \ + .udi_cdc_comm = UDI_CDC_COMM_DESC_0, \ + .udi_cdc_data = UDI_CDC_DATA_DESC_0_FS, \ + ... + #define UDI_COMPOSITE_DESC_HS \ + .udi_cdc_iad = UDI_CDC_IAD_DESC_0, \ + .udi_cdc_comm = UDI_CDC_COMM_DESC_0, \ + .udi_cdc_data = UDI_CDC_DATA_DESC_0_HS, \ + ... + #define UDI_COMPOSITE_API \ + &udi_api_cdc_comm, \ + &udi_api_cdc_data, \ + ... \endcode * * \subsection udi_cdc_use_case_composite_usage_flow Workflow * -# Ensure that conf_usb.h is available and contains the following parameters * required for a USB composite device configuration: * - \code // Endpoint control size, This must be: - // - 8, 16, 32 or 64 for full speed device (8 is recommended to save RAM) - // - 64 for a high speed device - #define USB_DEVICE_EP_CTRL_SIZE 64 - // Total Number of interfaces on this USB device. - // Add 2 for CDC. - #define USB_DEVICE_NB_INTERFACE (X+2) - // Total number of endpoints on this USB device. - // This must include each endpoint for each interface. - // Add 3 for CDC. - #define USB_DEVICE_MAX_EP (X+3) \endcode + // - 8, 16, 32 or 64 for full speed device (8 is recommended to save RAM) + // - 64 for a high speed device + #define USB_DEVICE_EP_CTRL_SIZE 64 + // Total Number of interfaces on this USB device. + // Add 2 for CDC. + #define USB_DEVICE_NB_INTERFACE (X+2) + // Total number of endpoints on this USB device. + // This must include each endpoint for each interface. + // Add 3 for CDC. + #define USB_DEVICE_MAX_EP (X+3) \endcode * -# Ensure that conf_usb.h contains the description of * composite device: * - \code // The endpoint numbers chosen by you for the CDC. - // The endpoint numbers starting from 1. - #define UDI_CDC_DATA_EP_IN_0 (1 | USB_EP_DIR_IN) // TX - #define UDI_CDC_DATA_EP_OUT_0 (2 | USB_EP_DIR_OUT) // RX - #define UDI_CDC_COMM_EP_0 (3 | USB_EP_DIR_IN) // Notify endpoint - // The interface index of an interface starting from 0 - #define UDI_CDC_COMM_IFACE_NUMBER_0 X+0 - #define UDI_CDC_DATA_IFACE_NUMBER_0 X+1 \endcode + // The endpoint numbers starting from 1. + #define UDI_CDC_DATA_EP_IN_0 (1 | USB_EP_DIR_IN) // TX + #define UDI_CDC_DATA_EP_OUT_0 (2 | USB_EP_DIR_OUT) // RX + #define UDI_CDC_COMM_EP_0 (3 | USB_EP_DIR_IN) // Notify endpoint + // The interface index of an interface starting from 0 + #define UDI_CDC_COMM_IFACE_NUMBER_0 X+0 + #define UDI_CDC_DATA_IFACE_NUMBER_0 X+1 \endcode * -# Ensure that conf_usb.h contains the following parameters * required for a USB composite device configuration: * - \code // USB Interfaces descriptor structure - #define UDI_COMPOSITE_DESC_T \ - ... - usb_iad_desc_t udi_cdc_iad; \ - udi_cdc_comm_desc_t udi_cdc_comm; \ - udi_cdc_data_desc_t udi_cdc_data; \ - ... - // USB Interfaces descriptor value for Full Speed - #define UDI_COMPOSITE_DESC_FS \ - ... - .udi_cdc_iad = UDI_CDC_IAD_DESC_0, \ - .udi_cdc_comm = UDI_CDC_COMM_DESC_0, \ - .udi_cdc_data = UDI_CDC_DATA_DESC_0_FS, \ - ... - // USB Interfaces descriptor value for High Speed - #define UDI_COMPOSITE_DESC_HS \ - ... - .udi_cdc_iad = UDI_CDC_IAD_DESC_0, \ - .udi_cdc_comm = UDI_CDC_COMM_DESC_0, \ - .udi_cdc_data = UDI_CDC_DATA_DESC_0_HS, \ - ... - // USB Interface APIs - #define UDI_COMPOSITE_API \ - ... - &udi_api_cdc_comm, \ - &udi_api_cdc_data, \ - ... \endcode + #define UDI_COMPOSITE_DESC_T \ + ... + usb_iad_desc_t udi_cdc_iad; \ + udi_cdc_comm_desc_t udi_cdc_comm; \ + udi_cdc_data_desc_t udi_cdc_data; \ + ... + // USB Interfaces descriptor value for Full Speed + #define UDI_COMPOSITE_DESC_FS \ + ... + .udi_cdc_iad = UDI_CDC_IAD_DESC_0, \ + .udi_cdc_comm = UDI_CDC_COMM_DESC_0, \ + .udi_cdc_data = UDI_CDC_DATA_DESC_0_FS, \ + ... + // USB Interfaces descriptor value for High Speed + #define UDI_COMPOSITE_DESC_HS \ + ... + .udi_cdc_iad = UDI_CDC_IAD_DESC_0, \ + .udi_cdc_comm = UDI_CDC_COMM_DESC_0, \ + .udi_cdc_data = UDI_CDC_DATA_DESC_0_HS, \ + ... + // USB Interface APIs + #define UDI_COMPOSITE_API \ + ... + &udi_api_cdc_comm, \ + &udi_api_cdc_data, \ + ... \endcode * - \note The descriptors order given in the four lists above must be the * same as the order defined by all interface indexes. The interface index * orders are defined through UDI_X_IFACE_NUMBER defines.\n diff --git a/Marlin/src/HAL/DUE/usb/udi_msc.c b/Marlin/src/HAL/DUE/usb/udi_msc.c index a75b5936b3..3f70a8fb18 100644 --- a/Marlin/src/HAL/DUE/usb/udi_msc.c +++ b/Marlin/src/HAL/DUE/usb/udi_msc.c @@ -372,9 +372,7 @@ static void udi_msc_sbc_trans(bool b_read); //@} - -bool udi_msc_enable(void) -{ +bool udi_msc_enable(void) { uint8_t lun; udi_msc_b_trans_req = false; udi_msc_b_cbw_invalid = false; @@ -397,18 +395,14 @@ bool udi_msc_enable(void) return true; } - -void udi_msc_disable(void) -{ +void udi_msc_disable(void) { udi_msc_b_trans_req = false; udi_msc_b_ack_trans = true; udi_msc_b_reset_trans = true; UDI_MSC_DISABLE_EXT(); } - -bool udi_msc_setup(void) -{ +bool udi_msc_setup(void) { if (Udd_setup_is_in()) { // Requests Interface GET if (Udd_setup_type() == USB_REQ_TYPE_CLASS) { @@ -451,17 +445,14 @@ bool udi_msc_setup(void) return false; // Not supported request } -uint8_t udi_msc_getsetting(void) -{ +uint8_t udi_msc_getsetting(void) { return 0; // MSC don't have multiple alternate setting } - // ------------------------ //------- Routines to process CBW packet -static void udi_msc_cbw_invalid(void) -{ +static void udi_msc_cbw_invalid(void) { if (!udi_msc_b_cbw_invalid) return; // Don't re-stall endpoint if error reset by setup udd_ep_set_halt(UDI_MSC_EP_OUT); @@ -469,8 +460,7 @@ static void udi_msc_cbw_invalid(void) udd_ep_wait_stall_clear(UDI_MSC_EP_OUT, udi_msc_cbw_invalid); } -static void udi_msc_csw_invalid(void) -{ +static void udi_msc_csw_invalid(void) { if (!udi_msc_b_cbw_invalid) return; // Don't re-stall endpoint if error reset by setup udd_ep_set_halt(UDI_MSC_EP_IN); @@ -478,8 +468,7 @@ static void udi_msc_csw_invalid(void) udd_ep_wait_stall_clear(UDI_MSC_EP_IN, udi_msc_csw_invalid); } -static void udi_msc_cbw_wait(void) -{ +static void udi_msc_cbw_wait(void) { // Register buffer and callback on OUT endpoint if (!udd_ep_run(UDI_MSC_EP_OUT, true, (uint8_t *) & udi_msc_cbw, @@ -490,10 +479,8 @@ static void udi_msc_cbw_wait(void) } } - static void udi_msc_cbw_received(udd_ep_status_t status, - iram_size_t nb_received, udd_ep_id_t ep) -{ + iram_size_t nb_received, udd_ep_id_t ep) { UNUSED(ep); // Check status of transfer if (UDD_EP_TRANSFER_OK != status) { @@ -582,9 +569,7 @@ static void udi_msc_cbw_received(udd_ep_status_t status, } } - -static bool udi_msc_cbw_validate(uint32_t alloc_len, uint8_t dir_flag) -{ +static bool udi_msc_cbw_validate(uint32_t alloc_len, uint8_t dir_flag) { /* * The following cases should result in a phase error: * - Case 2: Hn < Di @@ -612,12 +597,10 @@ static bool udi_msc_cbw_validate(uint32_t alloc_len, uint8_t dir_flag) return true; } - // ------------------------ //------- Routines to process small data packet -static void udi_msc_data_send(uint8_t * buffer, uint8_t buf_size) -{ +static void udi_msc_data_send(uint8_t * buffer, uint8_t buf_size) { // Sends data on IN endpoint if (!udd_ep_run(UDI_MSC_EP_IN, true, buffer, buf_size, udi_msc_data_sent)) { @@ -627,10 +610,8 @@ static void udi_msc_data_send(uint8_t * buffer, uint8_t buf_size) } } - static void udi_msc_data_sent(udd_ep_status_t status, iram_size_t nb_sent, - udd_ep_id_t ep) -{ + udd_ep_id_t ep) { UNUSED(ep); if (UDD_EP_TRANSFER_OK != status) { // Error protocol @@ -644,12 +625,10 @@ static void udi_msc_data_sent(udd_ep_status_t status, iram_size_t nb_sent, udi_msc_csw_process(); } - // ------------------------ //------- Routines to process CSW packet -static void udi_msc_csw_process(void) -{ +static void udi_msc_csw_process(void) { if (0 != udi_msc_csw.dCSWDataResidue) { // Residue not NULL // then STALL next request from USB host on corresponding endpoint @@ -664,9 +643,7 @@ static void udi_msc_csw_process(void) udi_msc_csw_send(); } - -void udi_msc_csw_send(void) -{ +void udi_msc_csw_send(void) { // Sends CSW on IN endpoint if (!udd_ep_run(UDI_MSC_EP_IN, false, (uint8_t *) & udi_msc_csw, @@ -678,10 +655,8 @@ void udi_msc_csw_send(void) } } - static void udi_msc_csw_sent(udd_ep_status_t status, iram_size_t nb_sent, - udd_ep_id_t ep) -{ + udd_ep_id_t ep) { UNUSED(ep); UNUSED(status); UNUSED(nb_sent); @@ -690,20 +665,17 @@ static void udi_msc_csw_sent(udd_ep_status_t status, iram_size_t nb_sent, udi_msc_cbw_wait(); } - // ------------------------ //------- Routines manage sense data -static void udi_msc_clear_sense(void) -{ +static void udi_msc_clear_sense(void) { memset((uint8_t*)&udi_msc_sense, 0, sizeof(struct scsi_request_sense_data)); udi_msc_sense.valid_reponse_code = SCSI_SENSE_VALID | SCSI_SENSE_CURRENT; udi_msc_sense.AddSenseLen = SCSI_SENSE_ADDL_LEN(sizeof(udi_msc_sense)); } static void udi_msc_sense_fail(uint8_t sense_key, uint16_t add_sense, - uint32_t lba) -{ + uint32_t lba) { udi_msc_clear_sense(); udi_msc_csw.bCSWStatus = USB_CSW_STATUS_FAIL; udi_msc_sense.sense_flag_key = sense_key; @@ -715,53 +687,39 @@ static void udi_msc_sense_fail(uint8_t sense_key, uint16_t add_sense, udi_msc_sense.AddSnsCodeQlfr = add_sense; } -static void udi_msc_sense_pass(void) -{ +static void udi_msc_sense_pass(void) { udi_msc_clear_sense(); udi_msc_csw.bCSWStatus = USB_CSW_STATUS_PASS; } - -static void udi_msc_sense_fail_not_present(void) -{ +static void udi_msc_sense_fail_not_present(void) { udi_msc_sense_fail(SCSI_SK_NOT_READY, SCSI_ASC_MEDIUM_NOT_PRESENT, 0); } -static void udi_msc_sense_fail_busy_or_change(void) -{ - udi_msc_sense_fail(SCSI_SK_UNIT_ATTENTION, - SCSI_ASC_NOT_READY_TO_READY_CHANGE, 0); +static void udi_msc_sense_fail_busy_or_change(void) { + udi_msc_sense_fail(SCSI_SK_UNIT_ATTENTION, SCSI_ASC_NOT_READY_TO_READY_CHANGE, 0); } -static void udi_msc_sense_fail_hardware(void) -{ - udi_msc_sense_fail(SCSI_SK_HARDWARE_ERROR, - SCSI_ASC_NO_ADDITIONAL_SENSE_INFO, 0); +static void udi_msc_sense_fail_hardware(void) { + udi_msc_sense_fail(SCSI_SK_HARDWARE_ERROR, SCSI_ASC_NO_ADDITIONAL_SENSE_INFO, 0); } -static void udi_msc_sense_fail_protected(void) -{ +static void udi_msc_sense_fail_protected(void) { udi_msc_sense_fail(SCSI_SK_DATA_PROTECT, SCSI_ASC_WRITE_PROTECTED, 0); } -static void udi_msc_sense_fail_cdb_invalid(void) -{ - udi_msc_sense_fail(SCSI_SK_ILLEGAL_REQUEST, - SCSI_ASC_INVALID_FIELD_IN_CDB, 0); +static void udi_msc_sense_fail_cdb_invalid(void) { + udi_msc_sense_fail(SCSI_SK_ILLEGAL_REQUEST, SCSI_ASC_INVALID_FIELD_IN_CDB, 0); } -static void udi_msc_sense_command_invalid(void) -{ - udi_msc_sense_fail(SCSI_SK_ILLEGAL_REQUEST, - SCSI_ASC_INVALID_COMMAND_OPERATION_CODE, 0); +static void udi_msc_sense_command_invalid(void) { + udi_msc_sense_fail(SCSI_SK_ILLEGAL_REQUEST, SCSI_ASC_INVALID_COMMAND_OPERATION_CODE, 0); } - // ------------------------ //------- Routines manage SCSI Commands -static void udi_msc_spc_requestsense(void) -{ +static void udi_msc_spc_requestsense(void) { uint8_t length = udi_msc_cbw.CDB[4]; // Can't send more than sense data length @@ -774,9 +732,7 @@ static void udi_msc_spc_requestsense(void) udi_msc_data_send((uint8_t*)&udi_msc_sense, length); } - -static void udi_msc_spc_inquiry(void) -{ +static void udi_msc_spc_inquiry(void) { uint8_t length, i; UDC_DATA(4) // Constant inquiry data for all LUNs @@ -835,9 +791,7 @@ static void udi_msc_spc_inquiry(void) udi_msc_data_send((uint8_t *) & udi_msc_inquiry_data, length); } - -static bool udi_msc_spc_testunitready_global(void) -{ +static bool udi_msc_spc_testunitready_global(void) { switch (mem_test_unit_ready(udi_msc_cbw.bCBWLUN)) { case CTRL_GOOD: return true; // Don't change sense data @@ -855,9 +809,7 @@ static bool udi_msc_spc_testunitready_global(void) return false; } - -static void udi_msc_spc_testunitready(void) -{ +static void udi_msc_spc_testunitready(void) { if (udi_msc_spc_testunitready_global()) { // LUN ready, then update sense data with status pass udi_msc_sense_pass(); @@ -866,9 +818,7 @@ static void udi_msc_spc_testunitready(void) udi_msc_csw_process(); } - -static void udi_msc_spc_mode_sense(bool b_sense10) -{ +static void udi_msc_spc_mode_sense(bool b_sense10) { // Union of all mode sense structures union sense_6_10 { struct { @@ -943,9 +893,7 @@ static void udi_msc_spc_mode_sense(bool b_sense10) udi_msc_data_send((uint8_t *) & sense, request_lgt); } - -static void udi_msc_spc_prevent_allow_medium_removal(void) -{ +static void udi_msc_spc_prevent_allow_medium_removal(void) { uint8_t prevent = udi_msc_cbw.CDB[4]; if (0 == prevent) { udi_msc_sense_pass(); @@ -955,9 +903,7 @@ static void udi_msc_spc_prevent_allow_medium_removal(void) udi_msc_csw_process(); } - -static void udi_msc_sbc_start_stop(void) -{ +static void udi_msc_sbc_start_stop(void) { bool start = 0x1 & udi_msc_cbw.CDB[4]; bool loej = 0x2 & udi_msc_cbw.CDB[4]; if (loej) { @@ -967,9 +913,7 @@ static void udi_msc_sbc_start_stop(void) udi_msc_csw_process(); } - -static void udi_msc_sbc_read_capacity(void) -{ +static void udi_msc_sbc_read_capacity(void) { UDC_BSS(4) static struct sbc_read_capacity10_data udi_msc_capacity; if (!udi_msc_cbw_validate(sizeof(udi_msc_capacity), @@ -1003,9 +947,7 @@ static void udi_msc_sbc_read_capacity(void) sizeof(udi_msc_capacity)); } - -static void udi_msc_sbc_trans(bool b_read) -{ +static void udi_msc_sbc_trans(bool b_read) { uint32_t trans_size; if (!b_read) { @@ -1038,9 +980,7 @@ static void udi_msc_sbc_trans(bool b_read) UDI_MSC_NOTIFY_TRANS_EXT(); } - -bool udi_msc_process_trans(void) -{ +bool udi_msc_process_trans(void) { Ctrl_status status; if (!udi_msc_b_trans_req) @@ -1084,10 +1024,8 @@ bool udi_msc_process_trans(void) return true; } - static void udi_msc_trans_ack(udd_ep_status_t status, iram_size_t n, - udd_ep_id_t ep) -{ + udd_ep_id_t ep) { UNUSED(ep); UNUSED(n); // Update variable to signal the end of transfer @@ -1095,10 +1033,8 @@ static void udi_msc_trans_ack(udd_ep_status_t status, iram_size_t n, udi_msc_b_ack_trans = true; } - bool udi_msc_trans_block(bool b_read, uint8_t * block, iram_size_t block_size, - void (*callback) (udd_ep_status_t status, iram_size_t n, udd_ep_id_t ep)) -{ + void (*callback) (udd_ep_status_t status, iram_size_t n, udd_ep_id_t ep)) { if (!udi_msc_b_ack_trans) return false; // No possible, transfer on going diff --git a/Marlin/src/HAL/DUE/usb/udi_msc.h b/Marlin/src/HAL/DUE/usb/udi_msc.h index 730dbc8eec..0ede4d6a83 100644 --- a/Marlin/src/HAL/DUE/usb/udi_msc.h +++ b/Marlin/src/HAL/DUE/usb/udi_msc.h @@ -77,9 +77,9 @@ extern UDC_DESC_STORAGE udi_api_t udi_api_msc; //! Interface descriptor structure for MSC typedef struct { - usb_iface_desc_t iface; - usb_ep_desc_t ep_in; - usb_ep_desc_t ep_out; + usb_iface_desc_t iface; + usb_ep_desc_t ep_in; + usb_ep_desc_t ep_out; } udi_msc_desc_t; //! By default no string associated to this interface @@ -94,32 +94,32 @@ typedef struct { //! Content of MSC interface descriptor for all speeds #define UDI_MSC_DESC \ - .iface.bLength = sizeof(usb_iface_desc_t),\ - .iface.bDescriptorType = USB_DT_INTERFACE,\ - .iface.bInterfaceNumber = UDI_MSC_IFACE_NUMBER,\ - .iface.bAlternateSetting = 0,\ - .iface.bNumEndpoints = 2,\ - .iface.bInterfaceClass = MSC_CLASS,\ - .iface.bInterfaceSubClass = MSC_SUBCLASS_TRANSPARENT,\ - .iface.bInterfaceProtocol = MSC_PROTOCOL_BULK,\ - .iface.iInterface = UDI_MSC_STRING_ID,\ - .ep_in.bLength = sizeof(usb_ep_desc_t),\ - .ep_in.bDescriptorType = USB_DT_ENDPOINT,\ - .ep_in.bEndpointAddress = UDI_MSC_EP_IN,\ - .ep_in.bmAttributes = USB_EP_TYPE_BULK,\ - .ep_in.bInterval = 0,\ - .ep_out.bLength = sizeof(usb_ep_desc_t),\ - .ep_out.bDescriptorType = USB_DT_ENDPOINT,\ - .ep_out.bEndpointAddress = UDI_MSC_EP_OUT,\ - .ep_out.bmAttributes = USB_EP_TYPE_BULK,\ - .ep_out.bInterval = 0, + .iface.bLength = sizeof(usb_iface_desc_t),\ + .iface.bDescriptorType = USB_DT_INTERFACE,\ + .iface.bInterfaceNumber = UDI_MSC_IFACE_NUMBER,\ + .iface.bAlternateSetting = 0,\ + .iface.bNumEndpoints = 2,\ + .iface.bInterfaceClass = MSC_CLASS,\ + .iface.bInterfaceSubClass = MSC_SUBCLASS_TRANSPARENT,\ + .iface.bInterfaceProtocol = MSC_PROTOCOL_BULK,\ + .iface.iInterface = UDI_MSC_STRING_ID,\ + .ep_in.bLength = sizeof(usb_ep_desc_t),\ + .ep_in.bDescriptorType = USB_DT_ENDPOINT,\ + .ep_in.bEndpointAddress = UDI_MSC_EP_IN,\ + .ep_in.bmAttributes = USB_EP_TYPE_BULK,\ + .ep_in.bInterval = 0,\ + .ep_out.bLength = sizeof(usb_ep_desc_t),\ + .ep_out.bDescriptorType = USB_DT_ENDPOINT,\ + .ep_out.bEndpointAddress = UDI_MSC_EP_OUT,\ + .ep_out.bmAttributes = USB_EP_TYPE_BULK,\ + .ep_out.bInterval = 0, //! Content of MSC interface descriptor for full speed only #define UDI_MSC_DESC_FS {\ - UDI_MSC_DESC \ - .ep_in.wMaxPacketSize = LE16(UDI_MSC_EPS_SIZE_FS),\ - .ep_out.wMaxPacketSize = LE16(UDI_MSC_EPS_SIZE_FS),\ - } + UDI_MSC_DESC \ + .ep_in.wMaxPacketSize = LE16(UDI_MSC_EPS_SIZE_FS),\ + .ep_out.wMaxPacketSize = LE16(UDI_MSC_EPS_SIZE_FS),\ + } //! Content of MSC interface descriptor for high speed only #define UDI_MSC_DESC_HS {\ @@ -129,7 +129,6 @@ typedef struct { } //@} - /** * \ingroup udi_group * \defgroup udi_msc_group USB Device Interface (UDI) for Mass Storage Class (MSC) @@ -163,14 +162,13 @@ bool udi_msc_process_trans(void); * \return \c 1 if function was successfully done, otherwise \c 0. */ bool udi_msc_trans_block(bool b_read, uint8_t * block, iram_size_t block_size, - void (*callback) (udd_ep_status_t status, iram_size_t n, udd_ep_id_t ep)); + void (*callback) (udd_ep_status_t status, iram_size_t n, udd_ep_id_t ep)); //@} #ifdef __cplusplus } #endif - /** * \page udi_msc_quickstart Quick start guide for USB device Mass Storage module (UDI MSC) * @@ -200,35 +198,32 @@ bool udi_msc_trans_block(bool b_read, uint8_t * block, iram_size_t block_size, * \subsection udi_msc_basic_use_case_usage_code Example code * Content of conf_usb.h: * \code - #define USB_DEVICE_SERIAL_NAME "12...EF" // Disk SN for MSC - #define UDI_MSC_GLOBAL_VENDOR_ID \ - 'A', 'T', 'M', 'E', 'L', ' ', ' ', ' ' - #define UDI_MSC_GLOBAL_PRODUCT_VERSION \ - '1', '.', '0', '0' - #define UDI_MSC_ENABLE_EXT() my_callback_msc_enable() - extern bool my_callback_msc_enable(void); - #define UDI_MSC_DISABLE_EXT() my_callback_msc_disable() - extern void my_callback_msc_disable(void); - #include "udi_msc_conf.h" // At the end of conf_usb.h file + #define USB_DEVICE_SERIAL_NAME "12...EF" // Disk SN for MSC + #define UDI_MSC_GLOBAL_VENDOR_ID \ + 'A', 'T', 'M', 'E', 'L', ' ', ' ', ' ' + #define UDI_MSC_GLOBAL_PRODUCT_VERSION \ + '1', '.', '0', '0' + #define UDI_MSC_ENABLE_EXT() my_callback_msc_enable() + extern bool my_callback_msc_enable(void); + #define UDI_MSC_DISABLE_EXT() my_callback_msc_disable() + extern void my_callback_msc_disable(void); + #include "udi_msc_conf.h" // At the end of conf_usb.h file \endcode * * Add to application C-file: * \code - static bool my_flag_autorize_msc_transfert = false; - bool my_callback_msc_enable(void) - { - my_flag_autorize_msc_transfert = true; - return true; - } - void my_callback_msc_disable(void) - { - my_flag_autorize_msc_transfert = false; - } + static bool my_flag_autorize_msc_transfert = false; + bool my_callback_msc_enable(void) { + my_flag_autorize_msc_transfert = true; + return true; + } + void my_callback_msc_disable(void) { + my_flag_autorize_msc_transfert = false; + } - void task(void) - { - udi_msc_process_trans(); - } + void task(void) { + udi_msc_process_trans(); + } \endcode * * \subsection udi_msc_basic_use_case_setup_flow Workflow @@ -237,14 +232,14 @@ bool udi_msc_trans_block(bool b_read, uint8_t * block, iram_size_t block_size, * - \code #define USB_DEVICE_SERIAL_NAME "12...EF" // Disk SN for MSC \endcode * \note The USB serial number is mandatory when a MSC interface is used. * - \code //! Vendor name and Product version of MSC interface - #define UDI_MSC_GLOBAL_VENDOR_ID \ - 'A', 'T', 'M', 'E', 'L', ' ', ' ', ' ' - #define UDI_MSC_GLOBAL_PRODUCT_VERSION \ - '1', '.', '0', '0' \endcode + #define UDI_MSC_GLOBAL_VENDOR_ID \ + 'A', 'T', 'M', 'E', 'L', ' ', ' ', ' ' + #define UDI_MSC_GLOBAL_PRODUCT_VERSION \ + '1', '.', '0', '0' \endcode * \note The USB MSC interface requires a vendor ID (8 ASCII characters) * and a product version (4 ASCII characters). * - \code #define UDI_MSC_ENABLE_EXT() my_callback_msc_enable() - extern bool my_callback_msc_enable(void); \endcode + extern bool my_callback_msc_enable(void); \endcode * \note After the device enumeration (detecting and identifying USB devices), * the USB host starts the device configuration. When the USB MSC interface * from the device is accepted by the host, the USB host enables this interface and the @@ -252,7 +247,7 @@ bool udi_msc_trans_block(bool b_read, uint8_t * block, iram_size_t block_size, * Thus, when this event is received, the tasks which call * udi_msc_process_trans() must be enabled. * - \code #define UDI_MSC_DISABLE_EXT() my_callback_msc_disable() - extern void my_callback_msc_disable(void); \endcode + extern void my_callback_msc_disable(void); \endcode * \note When the USB device is unplugged or is reset by the USB host, the USB * interface is disabled and the UDI_MSC_DISABLE_EXT() callback function * is called. Thus, it is recommended to disable the task which is called udi_msc_process_trans(). @@ -261,15 +256,15 @@ bool udi_msc_trans_block(bool b_read, uint8_t * block, iram_size_t block_size, * must be done outside USB interrupt routine. This is done in the MSC process * ("udi_msc_process_trans()") called by main loop: * - \code * void task(void) { - udi_msc_process_trans(); - } \endcode + udi_msc_process_trans(); + } \endcode * -# The MSC speed depends on task periodicity. To get the best speed * the notification callback "UDI_MSC_NOTIFY_TRANS_EXT" can be used to wakeup * this task (Example, through a mutex): * - \code #define UDI_MSC_NOTIFY_TRANS_EXT() msc_notify_trans() - void msc_notify_trans(void) { - wakeup_my_task(); - } \endcode + void msc_notify_trans(void) { + wakeup_my_task(); + } \endcode * * \section udi_msc_use_cases Advanced use cases * For more advanced use of the UDI MSC module, see the following use cases: @@ -302,72 +297,72 @@ bool udi_msc_trans_block(bool b_read, uint8_t * block, iram_size_t block_size, * \subsection udi_msc_use_case_composite_usage_code Example code * Content of conf_usb.h: * \code - #define USB_DEVICE_EP_CTRL_SIZE 64 - #define USB_DEVICE_NB_INTERFACE (X+1) - #define USB_DEVICE_MAX_EP (X+2) + #define USB_DEVICE_EP_CTRL_SIZE 64 + #define USB_DEVICE_NB_INTERFACE (X+1) + #define USB_DEVICE_MAX_EP (X+2) - #define UDI_MSC_EP_IN (X | USB_EP_DIR_IN) - #define UDI_MSC_EP_OUT (Y | USB_EP_DIR_OUT) - #define UDI_MSC_IFACE_NUMBER X + #define UDI_MSC_EP_IN (X | USB_EP_DIR_IN) + #define UDI_MSC_EP_OUT (Y | USB_EP_DIR_OUT) + #define UDI_MSC_IFACE_NUMBER X - #define UDI_COMPOSITE_DESC_T \ - udi_msc_desc_t udi_msc; \ - ... - #define UDI_COMPOSITE_DESC_FS \ - .udi_msc = UDI_MSC_DESC, \ - ... - #define UDI_COMPOSITE_DESC_HS \ - .udi_msc = UDI_MSC_DESC, \ - ... - #define UDI_COMPOSITE_API \ - &udi_api_msc, \ - ... + #define UDI_COMPOSITE_DESC_T \ + udi_msc_desc_t udi_msc; \ + ... + #define UDI_COMPOSITE_DESC_FS \ + .udi_msc = UDI_MSC_DESC, \ + ... + #define UDI_COMPOSITE_DESC_HS \ + .udi_msc = UDI_MSC_DESC, \ + ... + #define UDI_COMPOSITE_API \ + &udi_api_msc, \ + ... \endcode * * \subsection udi_msc_use_case_composite_usage_flow Workflow * -# Ensure that conf_usb.h is available and contains the following parameters * required for a USB composite device configuration: * - \code // Endpoint control size, This must be: - // - 8, 16, 32 or 64 for full speed device (8 is recommended to save RAM) - // - 64 for a high speed device - #define USB_DEVICE_EP_CTRL_SIZE 64 - // Total Number of interfaces on this USB device. - // Add 1 for MSC. - #define USB_DEVICE_NB_INTERFACE (X+1) - // Total number of endpoints on this USB device. - // This must include each endpoint for each interface. - // Add 2 for MSC. - #define USB_DEVICE_MAX_EP (X+2) \endcode + // - 8, 16, 32 or 64 for full speed device (8 is recommended to save RAM) + // - 64 for a high speed device + #define USB_DEVICE_EP_CTRL_SIZE 64 + // Total Number of interfaces on this USB device. + // Add 1 for MSC. + #define USB_DEVICE_NB_INTERFACE (X+1) + // Total number of endpoints on this USB device. + // This must include each endpoint for each interface. + // Add 2 for MSC. + #define USB_DEVICE_MAX_EP (X+2) \endcode * -# Ensure that conf_usb.h contains the description of * composite device: * - \code // The endpoint numbers chosen by you for the MSC. - // The endpoint numbers starting from 1. - #define UDI_MSC_EP_IN (X | USB_EP_DIR_IN) - #define UDI_MSC_EP_OUT (Y | USB_EP_DIR_OUT) - // The interface index of an interface starting from 0 - #define UDI_MSC_IFACE_NUMBER X \endcode + // The endpoint numbers starting from 1. + #define UDI_MSC_EP_IN (X | USB_EP_DIR_IN) + #define UDI_MSC_EP_OUT (Y | USB_EP_DIR_OUT) + // The interface index of an interface starting from 0 + #define UDI_MSC_IFACE_NUMBER X \endcode * -# Ensure that conf_usb.h contains the following parameters * required for a USB composite device configuration: * - \code // USB Interfaces descriptor structure - #define UDI_COMPOSITE_DESC_T \ - ... - udi_msc_desc_t udi_msc; \ - ... - // USB Interfaces descriptor value for Full Speed - #define UDI_COMPOSITE_DESC_FS \ - ... - .udi_msc = UDI_MSC_DESC_FS, \ - ... - // USB Interfaces descriptor value for High Speed - #define UDI_COMPOSITE_DESC_HS \ - ... - .udi_msc = UDI_MSC_DESC_HS, \ - ... - // USB Interface APIs - #define UDI_COMPOSITE_API \ - ... - &udi_api_msc, \ - ... \endcode + #define UDI_COMPOSITE_DESC_T \ + ... + udi_msc_desc_t udi_msc; \ + ... + // USB Interfaces descriptor value for Full Speed + #define UDI_COMPOSITE_DESC_FS \ + ... + .udi_msc = UDI_MSC_DESC_FS, \ + ... + // USB Interfaces descriptor value for High Speed + #define UDI_COMPOSITE_DESC_HS \ + ... + .udi_msc = UDI_MSC_DESC_HS, \ + ... + // USB Interface APIs + #define UDI_COMPOSITE_API \ + ... + &udi_api_msc, \ + ... \endcode * - \note The descriptors order given in the four lists above must be the * same as the order defined by all interface indexes. The interface index * orders are defined through UDI_X_IFACE_NUMBER defines. diff --git a/Marlin/src/HAL/DUE/usb/uotghs_otg.h b/Marlin/src/HAL/DUE/usb/uotghs_otg.h index eca5e938bb..f0e55c896f 100644 --- a/Marlin/src/HAL/DUE/usb/uotghs_otg.h +++ b/Marlin/src/HAL/DUE/usb/uotghs_otg.h @@ -127,13 +127,13 @@ void otg_dual_disable(void); //! These macros allows to enable/disable pad and UOTGHS hardware //! @{ //! Reset USB macro -#define otg_reset() \ - do { \ - UOTGHS->UOTGHS_CTRL = 0; \ - while( UOTGHS->UOTGHS_SR & 0x3FFF) {\ - UOTGHS->UOTGHS_SCR = 0xFFFFFFFF;\ - } \ - } while (0) +#define otg_reset() \ + do { \ + UOTGHS->UOTGHS_CTRL = 0; \ + while( UOTGHS->UOTGHS_SR & 0x3FFF) { \ + UOTGHS->UOTGHS_SCR = 0xFFFFFFFF; \ + } \ + } while (0) //! Enable USB macro #define otg_enable() (Set_bits(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_USBE)) //! Disable USB macro @@ -157,15 +157,14 @@ void otg_dual_disable(void); //! Configure time-out of specified OTG timer #define otg_configure_timeout(timer, timeout) (Set_bits(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_UNLOCK),\ - Wr_bitfield(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_TIMPAGE_Msk, timer),\ - Wr_bitfield(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_TIMVALUE_Msk, timeout),\ - Clr_bits(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_UNLOCK)) + Wr_bitfield(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_TIMPAGE_Msk, timer),\ + Wr_bitfield(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_TIMVALUE_Msk, timeout),\ + Clr_bits(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_UNLOCK)) //! Get configured time-out of specified OTG timer #define otg_get_timeout(timer) (Set_bits(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_UNLOCK),\ - Wr_bitfield(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_TIMPAGE_Msk, timer),\ - Clr_bits(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_UNLOCK),\ - Rd_bitfield(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_TIMVALUE_Msk)) - + Wr_bitfield(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_TIMPAGE_Msk, timer),\ + Clr_bits(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_UNLOCK),\ + Rd_bitfield(UOTGHS->UOTGHS_CTRL, UOTGHS_CTRL_TIMVALUE_Msk)) //! Get the dual-role device state of the internal USB finite state machine of the UOTGHS controller #define otg_get_fsm_drd_state() (Rd_bitfield(UOTGHS->UOTGHS_FSM, UOTGHS_FSM_DRDSTATE_Msk)) diff --git a/Marlin/src/HAL/DUE/usb/usb_protocol.h b/Marlin/src/HAL/DUE/usb/usb_protocol.h index ea51a86896..4540247df8 100644 --- a/Marlin/src/HAL/DUE/usb/usb_protocol.h +++ b/Marlin/src/HAL/DUE/usb/usb_protocol.h @@ -108,17 +108,17 @@ * \brief Standard USB requests (bRequest) */ enum usb_reqid { - USB_REQ_GET_STATUS = 0, - USB_REQ_CLEAR_FEATURE = 1, - USB_REQ_SET_FEATURE = 3, - USB_REQ_SET_ADDRESS = 5, - USB_REQ_GET_DESCRIPTOR = 6, - USB_REQ_SET_DESCRIPTOR = 7, - USB_REQ_GET_CONFIGURATION = 8, - USB_REQ_SET_CONFIGURATION = 9, - USB_REQ_GET_INTERFACE = 10, - USB_REQ_SET_INTERFACE = 11, - USB_REQ_SYNCH_FRAME = 12, + USB_REQ_GET_STATUS = 0, + USB_REQ_CLEAR_FEATURE = 1, + USB_REQ_SET_FEATURE = 3, + USB_REQ_SET_ADDRESS = 5, + USB_REQ_GET_DESCRIPTOR = 6, + USB_REQ_SET_DESCRIPTOR = 7, + USB_REQ_GET_CONFIGURATION = 8, + USB_REQ_SET_CONFIGURATION = 9, + USB_REQ_GET_INTERFACE = 10, + USB_REQ_SET_INTERFACE = 11, + USB_REQ_SYNCH_FRAME = 12, }; /** @@ -126,9 +126,9 @@ enum usb_reqid { * */ enum usb_device_status { - USB_DEV_STATUS_BUS_POWERED = 0, - USB_DEV_STATUS_SELF_POWERED = 1, - USB_DEV_STATUS_REMOTEWAKEUP = 2 + USB_DEV_STATUS_BUS_POWERED = 0, + USB_DEV_STATUS_SELF_POWERED = 1, + USB_DEV_STATUS_REMOTEWAKEUP = 2 }; /** @@ -136,7 +136,7 @@ enum usb_device_status { * */ enum usb_interface_status { - USB_IFACE_STATUS_RESERVED = 0 + USB_IFACE_STATUS_RESERVED = 0 }; /** @@ -144,7 +144,7 @@ enum usb_interface_status { * */ enum usb_endpoint_status { - USB_EP_STATUS_HALTED = 1, + USB_EP_STATUS_HALTED = 1, }; /** @@ -153,11 +153,11 @@ enum usb_endpoint_status { * \note valid for SetFeature request. */ enum usb_device_feature { - USB_DEV_FEATURE_REMOTE_WAKEUP = 1, //!< Remote wakeup enabled - USB_DEV_FEATURE_TEST_MODE = 2, //!< USB test mode - USB_DEV_FEATURE_OTG_B_HNP_ENABLE = 3, - USB_DEV_FEATURE_OTG_A_HNP_SUPPORT = 4, - USB_DEV_FEATURE_OTG_A_ALT_HNP_SUPPORT = 5 + USB_DEV_FEATURE_REMOTE_WAKEUP = 1, //!< Remote wakeup enabled + USB_DEV_FEATURE_TEST_MODE = 2, //!< USB test mode + USB_DEV_FEATURE_OTG_B_HNP_ENABLE = 3, + USB_DEV_FEATURE_OTG_A_HNP_SUPPORT = 4, + USB_DEV_FEATURE_OTG_A_ALT_HNP_SUPPORT = 5 }; /** @@ -166,54 +166,54 @@ enum usb_device_feature { * \note valid for USB_DEV_FEATURE_TEST_MODE request. */ enum usb_device_hs_test_mode { - USB_DEV_TEST_MODE_J = 1, - USB_DEV_TEST_MODE_K = 2, - USB_DEV_TEST_MODE_SE0_NAK = 3, - USB_DEV_TEST_MODE_PACKET = 4, - USB_DEV_TEST_MODE_FORCE_ENABLE = 5, + USB_DEV_TEST_MODE_J = 1, + USB_DEV_TEST_MODE_K = 2, + USB_DEV_TEST_MODE_SE0_NAK = 3, + USB_DEV_TEST_MODE_PACKET = 4, + USB_DEV_TEST_MODE_FORCE_ENABLE = 5, }; /** * \brief Standard USB endpoint feature/status flags */ enum usb_endpoint_feature { - USB_EP_FEATURE_HALT = 0, + USB_EP_FEATURE_HALT = 0, }; /** * \brief Standard USB Test Mode Selectors */ enum usb_test_mode_selector { - USB_TEST_J = 0x01, - USB_TEST_K = 0x02, - USB_TEST_SE0_NAK = 0x03, - USB_TEST_PACKET = 0x04, - USB_TEST_FORCE_ENABLE = 0x05, + USB_TEST_J = 0x01, + USB_TEST_K = 0x02, + USB_TEST_SE0_NAK = 0x03, + USB_TEST_PACKET = 0x04, + USB_TEST_FORCE_ENABLE = 0x05, }; /** * \brief Standard USB descriptor types */ enum usb_descriptor_type { - USB_DT_DEVICE = 1, - USB_DT_CONFIGURATION = 2, - USB_DT_STRING = 3, - USB_DT_INTERFACE = 4, - USB_DT_ENDPOINT = 5, - USB_DT_DEVICE_QUALIFIER = 6, - USB_DT_OTHER_SPEED_CONFIGURATION = 7, - USB_DT_INTERFACE_POWER = 8, - USB_DT_OTG = 9, - USB_DT_IAD = 0x0B, - USB_DT_BOS = 0x0F, - USB_DT_DEVICE_CAPABILITY = 0x10, + USB_DT_DEVICE = 1, + USB_DT_CONFIGURATION = 2, + USB_DT_STRING = 3, + USB_DT_INTERFACE = 4, + USB_DT_ENDPOINT = 5, + USB_DT_DEVICE_QUALIFIER = 6, + USB_DT_OTHER_SPEED_CONFIGURATION = 7, + USB_DT_INTERFACE_POWER = 8, + USB_DT_OTG = 9, + USB_DT_IAD = 0x0B, + USB_DT_BOS = 0x0F, + USB_DT_DEVICE_CAPABILITY = 0x10, }; /** * \brief USB Device Capability types */ enum usb_capability_type { - USB_DC_USB20_EXTENSION = 0x02, + USB_DC_USB20_EXTENSION = 0x02, }; /** @@ -221,7 +221,7 @@ enum usb_capability_type { * To fill bmAttributes field of usb_capa_ext_desc_t structure. */ enum usb_capability_extension_attr { - USB_DC_EXT_LPM = 0x00000002, + USB_DC_EXT_LPM = 0x00000002, }; #define HIRD_50_US 0 @@ -254,18 +254,18 @@ enum usb_capability_extension_attr { * \brief Standard USB endpoint transfer types */ enum usb_ep_type { - USB_EP_TYPE_CONTROL = 0x00, - USB_EP_TYPE_ISOCHRONOUS = 0x01, - USB_EP_TYPE_BULK = 0x02, - USB_EP_TYPE_INTERRUPT = 0x03, - USB_EP_TYPE_MASK = 0x03, + USB_EP_TYPE_CONTROL = 0x00, + USB_EP_TYPE_ISOCHRONOUS = 0x01, + USB_EP_TYPE_BULK = 0x02, + USB_EP_TYPE_INTERRUPT = 0x03, + USB_EP_TYPE_MASK = 0x03, }; /** * \brief Standard USB language IDs for string descriptors */ enum usb_langid { - USB_LANGID_EN_US = 0x0409, //!< English (United States) + USB_LANGID_EN_US = 0x0409, //!< English (United States) }; /** @@ -308,31 +308,31 @@ COMPILER_PACK_SET(1) * The data payload of SETUP packets always follows this structure. */ typedef struct { - uint8_t bmRequestType; - uint8_t bRequest; - le16_t wValue; - le16_t wIndex; - le16_t wLength; + uint8_t bmRequestType; + uint8_t bRequest; + le16_t wValue; + le16_t wIndex; + le16_t wLength; } usb_setup_req_t; /** * \brief Standard USB device descriptor structure */ typedef struct { - uint8_t bLength; - uint8_t bDescriptorType; - le16_t bcdUSB; - uint8_t bDeviceClass; - uint8_t bDeviceSubClass; - uint8_t bDeviceProtocol; - uint8_t bMaxPacketSize0; - le16_t idVendor; - le16_t idProduct; - le16_t bcdDevice; - uint8_t iManufacturer; - uint8_t iProduct; - uint8_t iSerialNumber; - uint8_t bNumConfigurations; + uint8_t bLength; + uint8_t bDescriptorType; + le16_t bcdUSB; + uint8_t bDeviceClass; + uint8_t bDeviceSubClass; + uint8_t bDeviceProtocol; + uint8_t bMaxPacketSize0; + le16_t idVendor; + le16_t idProduct; + le16_t bcdDevice; + uint8_t iManufacturer; + uint8_t iProduct; + uint8_t iSerialNumber; + uint8_t bNumConfigurations; } usb_dev_desc_t; /** @@ -344,15 +344,15 @@ typedef struct { * the device was operating at full speed.) */ typedef struct { - uint8_t bLength; - uint8_t bDescriptorType; - le16_t bcdUSB; - uint8_t bDeviceClass; - uint8_t bDeviceSubClass; - uint8_t bDeviceProtocol; - uint8_t bMaxPacketSize0; - uint8_t bNumConfigurations; - uint8_t bReserved; + uint8_t bLength; + uint8_t bDescriptorType; + le16_t bcdUSB; + uint8_t bDeviceClass; + uint8_t bDeviceSubClass; + uint8_t bDeviceProtocol; + uint8_t bMaxPacketSize0; + uint8_t bNumConfigurations; + uint8_t bReserved; } usb_dev_qual_desc_t; /** @@ -368,10 +368,10 @@ typedef struct { * The descriptor type in the GetDescriptor() request is set to BOS. */ typedef struct { - uint8_t bLength; - uint8_t bDescriptorType; - le16_t wTotalLength; - uint8_t bNumDeviceCaps; + uint8_t bLength; + uint8_t bDescriptorType; + le16_t wTotalLength; + uint8_t bNumDeviceCaps; } usb_dev_bos_desc_t; @@ -381,10 +381,10 @@ typedef struct { * Defines the set of USB 1.1-specific device level capabilities. */ typedef struct { - uint8_t bLength; - uint8_t bDescriptorType; - uint8_t bDevCapabilityType; - le32_t bmAttributes; + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDevCapabilityType; + le32_t bmAttributes; } usb_dev_capa_ext_desc_t; /** @@ -393,22 +393,22 @@ typedef struct { * The BOS descriptor and capabilities descriptors for LPM. */ typedef struct { - usb_dev_bos_desc_t bos; - usb_dev_capa_ext_desc_t capa_ext; + usb_dev_bos_desc_t bos; + usb_dev_capa_ext_desc_t capa_ext; } usb_dev_lpm_desc_t; /** * \brief Standard USB Interface Association Descriptor structure */ typedef struct { - uint8_t bLength; //!< size of this descriptor in bytes - uint8_t bDescriptorType; //!< INTERFACE descriptor type - uint8_t bFirstInterface; //!< Number of interface - uint8_t bInterfaceCount; //!< value to select alternate setting - uint8_t bFunctionClass; //!< Class code assigned by the USB - uint8_t bFunctionSubClass;//!< Sub-class code assigned by the USB - uint8_t bFunctionProtocol;//!< Protocol code assigned by the USB - uint8_t iFunction; //!< Index of string descriptor + uint8_t bLength; //!< size of this descriptor in bytes + uint8_t bDescriptorType; //!< INTERFACE descriptor type + uint8_t bFirstInterface; //!< Number of interface + uint8_t bInterfaceCount; //!< value to select alternate setting + uint8_t bFunctionClass; //!< Class code assigned by the USB + uint8_t bFunctionSubClass;//!< Sub-class code assigned by the USB + uint8_t bFunctionProtocol;//!< Protocol code assigned by the USB + uint8_t iFunction; //!< Index of string descriptor } usb_association_desc_t; @@ -416,14 +416,14 @@ typedef struct { * \brief Standard USB configuration descriptor structure */ typedef struct { - uint8_t bLength; - uint8_t bDescriptorType; - le16_t wTotalLength; - uint8_t bNumInterfaces; - uint8_t bConfigurationValue; - uint8_t iConfiguration; - uint8_t bmAttributes; - uint8_t bMaxPower; + uint8_t bLength; + uint8_t bDescriptorType; + le16_t wTotalLength; + uint8_t bNumInterfaces; + uint8_t bConfigurationValue; + uint8_t iConfiguration; + uint8_t bmAttributes; + uint8_t bMaxPower; } usb_conf_desc_t; @@ -438,41 +438,41 @@ typedef struct { * \brief Standard USB association descriptor structure */ typedef struct { - uint8_t bLength; //!< Size of this descriptor in bytes - uint8_t bDescriptorType; //!< Interface descriptor type - uint8_t bFirstInterface; //!< Number of interface - uint8_t bInterfaceCount; //!< value to select alternate setting - uint8_t bFunctionClass; //!< Class code assigned by the USB - uint8_t bFunctionSubClass; //!< Sub-class code assigned by the USB - uint8_t bFunctionProtocol; //!< Protocol code assigned by the USB - uint8_t iFunction; //!< Index of string descriptor + uint8_t bLength; //!< Size of this descriptor in bytes + uint8_t bDescriptorType; //!< Interface descriptor type + uint8_t bFirstInterface; //!< Number of interface + uint8_t bInterfaceCount; //!< value to select alternate setting + uint8_t bFunctionClass; //!< Class code assigned by the USB + uint8_t bFunctionSubClass; //!< Sub-class code assigned by the USB + uint8_t bFunctionProtocol; //!< Protocol code assigned by the USB + uint8_t iFunction; //!< Index of string descriptor } usb_iad_desc_t; /** * \brief Standard USB interface descriptor structure */ typedef struct { - uint8_t bLength; - uint8_t bDescriptorType; - uint8_t bInterfaceNumber; - uint8_t bAlternateSetting; - uint8_t bNumEndpoints; - uint8_t bInterfaceClass; - uint8_t bInterfaceSubClass; - uint8_t bInterfaceProtocol; - uint8_t iInterface; + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bInterfaceNumber; + uint8_t bAlternateSetting; + uint8_t bNumEndpoints; + uint8_t bInterfaceClass; + uint8_t bInterfaceSubClass; + uint8_t bInterfaceProtocol; + uint8_t iInterface; } usb_iface_desc_t; /** * \brief Standard USB endpoint descriptor structure */ typedef struct { - uint8_t bLength; - uint8_t bDescriptorType; - uint8_t bEndpointAddress; - uint8_t bmAttributes; - le16_t wMaxPacketSize; - uint8_t bInterval; + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bEndpointAddress; + uint8_t bmAttributes; + le16_t wMaxPacketSize; + uint8_t bInterval; } usb_ep_desc_t; @@ -480,13 +480,13 @@ typedef struct { * \brief A standard USB string descriptor structure */ typedef struct { - uint8_t bLength; - uint8_t bDescriptorType; + uint8_t bLength; + uint8_t bDescriptorType; } usb_str_desc_t; typedef struct { - usb_str_desc_t desc; - le16_t string[1]; + usb_str_desc_t desc; + le16_t string[1]; } usb_str_lgid_desc_t; COMPILER_PACK_RESET() diff --git a/Marlin/src/HAL/DUE/usb/usb_protocol_cdc.h b/Marlin/src/HAL/DUE/usb/usb_protocol_cdc.h index d594db52e3..9b82afc624 100644 --- a/Marlin/src/HAL/DUE/usb/usb_protocol_cdc.h +++ b/Marlin/src/HAL/DUE/usb/usb_protocol_cdc.h @@ -58,42 +58,42 @@ * \name Possible values of class */ //@{ -#define CDC_CLASS_DEVICE 0x02 //!< USB Communication Device Class -#define CDC_CLASS_COMM 0x02 //!< CDC Communication Class Interface -#define CDC_CLASS_DATA 0x0A //!< CDC Data Class Interface +#define CDC_CLASS_DEVICE 0x02 //!< USB Communication Device Class +#define CDC_CLASS_COMM 0x02 //!< CDC Communication Class Interface +#define CDC_CLASS_DATA 0x0A //!< CDC Data Class Interface #define CDC_CLASS_MULTI 0xEF //!< CDC Multi-interface Function //@} //! \name USB CDC Subclass IDs //@{ -#define CDC_SUBCLASS_DLCM 0x01 //!< Direct Line Control Model -#define CDC_SUBCLASS_ACM 0x02 //!< Abstract Control Model -#define CDC_SUBCLASS_TCM 0x03 //!< Telephone Control Model -#define CDC_SUBCLASS_MCCM 0x04 //!< Multi-Channel Control Model -#define CDC_SUBCLASS_CCM 0x05 //!< CAPI Control Model -#define CDC_SUBCLASS_ETH 0x06 //!< Ethernet Networking Control Model -#define CDC_SUBCLASS_ATM 0x07 //!< ATM Networking Control Model +#define CDC_SUBCLASS_DLCM 0x01 //!< Direct Line Control Model +#define CDC_SUBCLASS_ACM 0x02 //!< Abstract Control Model +#define CDC_SUBCLASS_TCM 0x03 //!< Telephone Control Model +#define CDC_SUBCLASS_MCCM 0x04 //!< Multi-Channel Control Model +#define CDC_SUBCLASS_CCM 0x05 //!< CAPI Control Model +#define CDC_SUBCLASS_ETH 0x06 //!< Ethernet Networking Control Model +#define CDC_SUBCLASS_ATM 0x07 //!< ATM Networking Control Model //@} //! \name USB CDC Communication Interface Protocol IDs //@{ -#define CDC_PROTOCOL_V25TER 0x01 //!< Common AT commands +#define CDC_PROTOCOL_V25TER 0x01 //!< Common AT commands //@} //! \name USB CDC Data Interface Protocol IDs //@{ -#define CDC_PROTOCOL_I430 0x30 //!< ISDN BRI -#define CDC_PROTOCOL_HDLC 0x31 //!< HDLC -#define CDC_PROTOCOL_TRANS 0x32 //!< Transparent -#define CDC_PROTOCOL_Q921M 0x50 //!< Q.921 management protocol -#define CDC_PROTOCOL_Q921 0x51 //!< Q.931 [sic] Data link protocol -#define CDC_PROTOCOL_Q921TM 0x52 //!< Q.921 TEI-multiplexor -#define CDC_PROTOCOL_V42BIS 0x90 //!< Data compression procedures -#define CDC_PROTOCOL_Q931 0x91 //!< Euro-ISDN protocol control -#define CDC_PROTOCOL_V120 0x92 //!< V.24 rate adaption to ISDN -#define CDC_PROTOCOL_CAPI20 0x93 //!< CAPI Commands -#define CDC_PROTOCOL_HOST 0xFD //!< Host based driver +#define CDC_PROTOCOL_I430 0x30 //!< ISDN BRI +#define CDC_PROTOCOL_HDLC 0x31 //!< HDLC +#define CDC_PROTOCOL_TRANS 0x32 //!< Transparent +#define CDC_PROTOCOL_Q921M 0x50 //!< Q.921 management protocol +#define CDC_PROTOCOL_Q921 0x51 //!< Q.931 [sic] Data link protocol +#define CDC_PROTOCOL_Q921TM 0x52 //!< Q.921 TEI-multiplexor +#define CDC_PROTOCOL_V42BIS 0x90 //!< Data compression procedures +#define CDC_PROTOCOL_Q931 0x91 //!< Euro-ISDN protocol control +#define CDC_PROTOCOL_V120 0x92 //!< V.24 rate adaption to ISDN +#define CDC_PROTOCOL_CAPI20 0x93 //!< CAPI Commands +#define CDC_PROTOCOL_HOST 0xFD //!< Host based driver /** * \brief Describes the Protocol Unit Functional Descriptors [sic] * on Communication Class Interface @@ -103,16 +103,16 @@ //! \name USB CDC Functional Descriptor Types //@{ -#define CDC_CS_INTERFACE 0x24 //!< Interface Functional Descriptor -#define CDC_CS_ENDPOINT 0x25 //!< Endpoint Functional Descriptor +#define CDC_CS_INTERFACE 0x24 //!< Interface Functional Descriptor +#define CDC_CS_ENDPOINT 0x25 //!< Endpoint Functional Descriptor //@} //! \name USB CDC Functional Descriptor Subtypes //@{ -#define CDC_SCS_HEADER 0x00 //!< Header Functional Descriptor -#define CDC_SCS_CALL_MGMT 0x01 //!< Call Management -#define CDC_SCS_ACM 0x02 //!< Abstract Control Management -#define CDC_SCS_UNION 0x06 //!< Union Functional Descriptor +#define CDC_SCS_HEADER 0x00 //!< Header Functional Descriptor +#define CDC_SCS_CALL_MGMT 0x01 //!< Call Management +#define CDC_SCS_ACM 0x02 //!< Abstract Control Management +#define CDC_SCS_UNION 0x06 //!< Union Functional Descriptor //@} //! \name USB CDC Request IDs @@ -171,36 +171,36 @@ COMPILER_PACK_SET(1) //! CDC Header Functional Descriptor typedef struct { - uint8_t bFunctionLength; - uint8_t bDescriptorType; - uint8_t bDescriptorSubtype; - le16_t bcdCDC; + uint8_t bFunctionLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + le16_t bcdCDC; } usb_cdc_hdr_desc_t; //! CDC Call Management Functional Descriptor typedef struct { - uint8_t bFunctionLength; - uint8_t bDescriptorType; - uint8_t bDescriptorSubtype; - uint8_t bmCapabilities; - uint8_t bDataInterface; + uint8_t bFunctionLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint8_t bmCapabilities; + uint8_t bDataInterface; } usb_cdc_call_mgmt_desc_t; //! CDC ACM Functional Descriptor typedef struct { - uint8_t bFunctionLength; - uint8_t bDescriptorType; - uint8_t bDescriptorSubtype; - uint8_t bmCapabilities; + uint8_t bFunctionLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint8_t bmCapabilities; } usb_cdc_acm_desc_t; //! CDC Union Functional Descriptor typedef struct { - uint8_t bFunctionLength; - uint8_t bDescriptorType; - uint8_t bDescriptorSubtype; - uint8_t bMasterInterface; - uint8_t bSlaveInterface0; + uint8_t bFunctionLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint8_t bMasterInterface; + uint8_t bSlaveInterface0; } usb_cdc_union_desc_t; @@ -235,24 +235,24 @@ typedef struct { //@{ //! Line Coding structure typedef struct { - le32_t dwDTERate; - uint8_t bCharFormat; - uint8_t bParityType; - uint8_t bDataBits; + le32_t dwDTERate; + uint8_t bCharFormat; + uint8_t bParityType; + uint8_t bDataBits; } usb_cdc_line_coding_t; //! Possible values of bCharFormat enum cdc_char_format { - CDC_STOP_BITS_1 = 0, //!< 1 stop bit - CDC_STOP_BITS_1_5 = 1, //!< 1.5 stop bits - CDC_STOP_BITS_2 = 2, //!< 2 stop bits + CDC_STOP_BITS_1 = 0, //!< 1 stop bit + CDC_STOP_BITS_1_5 = 1, //!< 1.5 stop bits + CDC_STOP_BITS_2 = 2, //!< 2 stop bits }; //! Possible values of bParityType enum cdc_parity { - CDC_PAR_NONE = 0, //!< No parity - CDC_PAR_ODD = 1, //!< Odd parity - CDC_PAR_EVEN = 2, //!< Even parity - CDC_PAR_MARK = 3, //!< Parity forced to 0 (space) - CDC_PAR_SPACE = 4, //!< Parity forced to 1 (mark) + CDC_PAR_NONE = 0, //!< No parity + CDC_PAR_ODD = 1, //!< Odd parity + CDC_PAR_EVEN = 2, //!< Even parity + CDC_PAR_MARK = 3, //!< Parity forced to 0 (space) + CDC_PAR_SPACE = 4, //!< Parity forced to 1 (mark) }; //@} @@ -262,7 +262,7 @@ enum cdc_parity { //! Control signal structure typedef struct { - uint16_t value; + uint16_t value; } usb_cdc_control_signal_t; //! \name Possible values in usb_cdc_control_signal_t @@ -283,11 +283,11 @@ typedef struct { //@{ typedef struct { - uint8_t bmRequestType; - uint8_t bNotification; - le16_t wValue; - le16_t wIndex; - le16_t wLength; + uint8_t bmRequestType; + uint8_t bNotification; + le16_t wValue; + le16_t wIndex; + le16_t wLength; } usb_cdc_notify_msg_t; //! \name USB CDC serial state @@ -295,8 +295,8 @@ typedef struct { //! Hardware handshake support (cdc spec 1.1 chapter 6.3.5) typedef struct { - usb_cdc_notify_msg_t header; - le16_t value; + usb_cdc_notify_msg_t header; + le16_t value; } usb_cdc_notify_serial_state_t; //! \name Possible values in usb_cdc_notify_serial_state_t diff --git a/Marlin/src/HAL/DUE/usb/usb_protocol_msc.h b/Marlin/src/HAL/DUE/usb/usb_protocol_msc.h index e1e59237d8..cc30a94e4f 100644 --- a/Marlin/src/HAL/DUE/usb/usb_protocol_msc.h +++ b/Marlin/src/HAL/DUE/usb/usb_protocol_msc.h @@ -59,7 +59,7 @@ * \name Possible Class value */ //@{ -#define MSC_CLASS 0x08 +#define MSC_CLASS 0x08 //@} /** @@ -71,12 +71,12 @@ * operating systems like Windows XP. */ //@{ -#define MSC_SUBCLASS_RBC 0x01 //!< Reduced Block Commands -#define MSC_SUBCLASS_ATAPI 0x02 //!< CD/DVD devices -#define MSC_SUBCLASS_QIC_157 0x03 //!< Tape devices -#define MSC_SUBCLASS_UFI 0x04 //!< Floppy disk drives -#define MSC_SUBCLASS_SFF_8070I 0x05 //!< Floppy disk drives -#define MSC_SUBCLASS_TRANSPARENT 0x06 //!< Determined by INQUIRY +#define MSC_SUBCLASS_RBC 0x01 //!< Reduced Block Commands +#define MSC_SUBCLASS_ATAPI 0x02 //!< CD/DVD devices +#define MSC_SUBCLASS_QIC_157 0x03 //!< Tape devices +#define MSC_SUBCLASS_UFI 0x04 //!< Floppy disk drives +#define MSC_SUBCLASS_SFF_8070I 0x05 //!< Floppy disk drives +#define MSC_SUBCLASS_TRANSPARENT 0x06 //!< Determined by INQUIRY //@} /** @@ -84,9 +84,9 @@ * \note Only the BULK protocol should be used in new designs. */ //@{ -#define MSC_PROTOCOL_CBI 0x00 //!< Command/Bulk/Interrupt -#define MSC_PROTOCOL_CBI_ALT 0x01 //!< W/o command completion -#define MSC_PROTOCOL_BULK 0x50 //!< Bulk-only +#define MSC_PROTOCOL_CBI 0x00 //!< Command/Bulk/Interrupt +#define MSC_PROTOCOL_CBI_ALT 0x01 //!< W/o command completion +#define MSC_PROTOCOL_BULK 0x50 //!< Bulk-only //@} @@ -94,8 +94,8 @@ * \brief MSC USB requests (bRequest) */ enum usb_reqid_msc { - USB_REQ_MSC_BULK_RESET = 0xFF, //!< Mass Storage Reset - USB_REQ_MSC_GET_MAX_LUN = 0xFE //!< Get Max LUN + USB_REQ_MSC_BULK_RESET = 0xFF, //!< Mass Storage Reset + USB_REQ_MSC_GET_MAX_LUN = 0xFE //!< Get Max LUN }; @@ -106,20 +106,20 @@ COMPILER_PACK_SET(1) */ //@{ struct usb_msc_cbw { - le32_t dCBWSignature; //!< Must contain 'USBC' - le32_t dCBWTag; //!< Unique command ID - le32_t dCBWDataTransferLength; //!< Number of bytes to transfer - uint8_t bmCBWFlags; //!< Direction in bit 7 - uint8_t bCBWLUN; //!< Logical Unit Number - uint8_t bCBWCBLength; //!< Number of valid CDB bytes - uint8_t CDB[16]; //!< SCSI Command Descriptor Block + le32_t dCBWSignature; //!< Must contain 'USBC' + le32_t dCBWTag; //!< Unique command ID + le32_t dCBWDataTransferLength; //!< Number of bytes to transfer + uint8_t bmCBWFlags; //!< Direction in bit 7 + uint8_t bCBWLUN; //!< Logical Unit Number + uint8_t bCBWCBLength; //!< Number of valid CDB bytes + uint8_t CDB[16]; //!< SCSI Command Descriptor Block }; -#define USB_CBW_SIGNATURE 0x55534243 //!< dCBWSignature value -#define USB_CBW_DIRECTION_IN (1<<7) //!< Data from device to host -#define USB_CBW_DIRECTION_OUT (0<<7) //!< Data from host to device -#define USB_CBW_LUN_MASK 0x0F //!< Valid bits in bCBWLUN -#define USB_CBW_LEN_MASK 0x1F //!< Valid bits in bCBWCBLength +#define USB_CBW_SIGNATURE 0x55534243 //!< dCBWSignature value +#define USB_CBW_DIRECTION_IN (1<<7) //!< Data from device to host +#define USB_CBW_DIRECTION_OUT (0<<7) //!< Data from host to device +#define USB_CBW_LUN_MASK 0x0F //!< Valid bits in bCBWLUN +#define USB_CBW_LEN_MASK 0x1F //!< Valid bits in bCBWCBLength //@} @@ -128,16 +128,16 @@ struct usb_msc_cbw { */ //@{ struct usb_msc_csw { - le32_t dCSWSignature; //!< Must contain 'USBS' - le32_t dCSWTag; //!< Same as dCBWTag - le32_t dCSWDataResidue; //!< Number of bytes not transferred - uint8_t bCSWStatus; //!< Status code + le32_t dCSWSignature; //!< Must contain 'USBS' + le32_t dCSWTag; //!< Same as dCBWTag + le32_t dCSWDataResidue; //!< Number of bytes not transferred + uint8_t bCSWStatus; //!< Status code }; -#define USB_CSW_SIGNATURE 0x55534253 //!< dCSWSignature value -#define USB_CSW_STATUS_PASS 0x00 //!< Command Passed -#define USB_CSW_STATUS_FAIL 0x01 //!< Command Failed -#define USB_CSW_STATUS_PE 0x02 //!< Phase Error +#define USB_CSW_SIGNATURE 0x55534253 //!< dCSWSignature value +#define USB_CSW_STATUS_PASS 0x00 //!< Command Passed +#define USB_CSW_STATUS_FAIL 0x01 //!< Command Failed +#define USB_CSW_STATUS_PE 0x02 //!< Phase Error //@} COMPILER_PACK_RESET() diff --git a/buildroot/share/PlatformIO/variants/marlin_maple_CHITU_F103/board/board.h b/buildroot/share/PlatformIO/variants/marlin_maple_CHITU_F103/board/board.h index 80261d3027..5664a1ad2c 100644 --- a/buildroot/share/PlatformIO/variants/marlin_maple_CHITU_F103/board/board.h +++ b/buildroot/share/PlatformIO/variants/marlin_maple_CHITU_F103/board/board.h @@ -100,12 +100,12 @@ /* * SDIO Pins */ -#define BOARD_SDIO_D0 PC8 -#define BOARD_SDIO_D1 PC9 -#define BOARD_SDIO_D2 PC10 -#define BOARD_SDIO_D3 PC11 -#define BOARD_SDIO_CLK PC12 -#define BOARD_SDIO_CMD PD2 +#define BOARD_SDIO_D0 PC8 +#define BOARD_SDIO_D1 PC9 +#define BOARD_SDIO_D2 PC10 +#define BOARD_SDIO_D3 PC11 +#define BOARD_SDIO_CLK PC12 +#define BOARD_SDIO_CMD PD2 /* Pin aliases: these give the GPIO port/bit for each pin as an * enum. These are optional, but recommended. They make it easier to diff --git a/buildroot/share/PlatformIO/variants/marlin_maple_MEEB_3DP/board/board.h b/buildroot/share/PlatformIO/variants/marlin_maple_MEEB_3DP/board/board.h index 6ffa244746..24458fe79a 100644 --- a/buildroot/share/PlatformIO/variants/marlin_maple_MEEB_3DP/board/board.h +++ b/buildroot/share/PlatformIO/variants/marlin_maple_MEEB_3DP/board/board.h @@ -100,12 +100,12 @@ /* * SDIO Pins */ -#define BOARD_SDIO_D0 PC8 -#define BOARD_SDIO_D1 PC9 -#define BOARD_SDIO_D2 PC10 -#define BOARD_SDIO_D3 PC11 -#define BOARD_SDIO_CLK PC12 -#define BOARD_SDIO_CMD PD2 +#define BOARD_SDIO_D0 PC8 +#define BOARD_SDIO_D1 PC9 +#define BOARD_SDIO_D2 PC10 +#define BOARD_SDIO_D3 PC11 +#define BOARD_SDIO_CLK PC12 +#define BOARD_SDIO_CMD PD2 /* Pin aliases: these give the GPIO port/bit for each pin as an * enum. These are optional, but recommended. They make it easier to From 7680fe2b59c9861c0e6acb13cf085ca55d7deddc Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 5 Jun 2023 16:01:32 -0500 Subject: [PATCH 513/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Dir?= =?UTF-8?q?=20change=20is=20AxisBits?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25761 --- Marlin/src/module/planner.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 10b8ca8670..6b645fa133 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -2419,8 +2419,8 @@ bool Planner::_populate_block( xs2 = xs1; xs1 = xs0; ys2 = ys1; ys1 = ys0; } - xs0 = TEST(direction_change, X_AXIS) ? segment_time_us : xy_freq_min_interval_us; - ys0 = TEST(direction_change, Y_AXIS) ? segment_time_us : xy_freq_min_interval_us; + xs0 = direction_change.x ? segment_time_us : xy_freq_min_interval_us; + ys0 = direction_change.y ? segment_time_us : xy_freq_min_interval_us; if (segment_time_us < xy_freq_min_interval_us) { const int32_t least_xy_segment_time = _MIN(_MAX(xs0, xs1, xs2), _MAX(ys0, ys1, ys2)); From fbc5bd0d0424d365eaaddad47c58b733557ef42d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 5 Jun 2023 16:24:20 -0500 Subject: [PATCH 514/659] =?UTF-8?q?=F0=9F=A9=B9=20Wrap=20HAS=5FDISPLAY=20f?= =?UTF-8?q?or=20if()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #24877 --- Marlin/src/gcode/feature/pause/M125.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/gcode/feature/pause/M125.cpp b/Marlin/src/gcode/feature/pause/M125.cpp index 0e0d6ed143..b8d9d4811b 100644 --- a/Marlin/src/gcode/feature/pause/M125.cpp +++ b/Marlin/src/gcode/feature/pause/M125.cpp @@ -96,7 +96,7 @@ void GcodeSuite::M125() { const bool show_lcd = TERN0(HAS_MARLINUI_MENU, parser.boolval('P')); if (pause_print(retract, park_point, show_lcd, 0)) { - if (HAS_DISPLAY || ALL(EMERGENCY_PARSER, HOST_PROMPT_SUPPORT) || !sd_printing || show_lcd) { + if (ENABLED(HAS_DISPLAY) || ALL(EMERGENCY_PARSER, HOST_PROMPT_SUPPORT) || !sd_printing || show_lcd) { wait_for_confirmation(false, 0); resume_print(0, 0, -retract, 0); } From 6a29d5d5af1b6ef0bee4125a9fc00aaf2c1b6695 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 5 Jun 2023 17:25:42 -0500 Subject: [PATCH 515/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Fix?= =?UTF-8?q?=20mfconfig=20trailing=20space?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/share/git/mfconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot/share/git/mfconfig b/buildroot/share/git/mfconfig index 8528859446..0c4a0de5c8 100755 --- a/buildroot/share/git/mfconfig +++ b/buildroot/share/git/mfconfig @@ -144,7 +144,7 @@ if [[ $ACTION == "init" ]]; then find config -name "Conf*.h" -print0 | while read -d $'\0' fn ; do fldr=$(dirname "$fn") blank_line=$(awk '/^\s*$/ {print NR; exit}' "$fn") - $SED -i~ "${blank_line}i\\\n#define CONFIG_EXAMPLES_DIR \"$fldr\"\\ " "$fn" + $SED -i~ "${blank_line}i\\\n#define CONFIG_EXAMPLES_DIR \"$fldr\"" "$fn" rm -f "$fn~" done } From bfd6be3799627f87da29f7281b14f9e9be515a69 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 6 Jun 2023 00:24:34 +0000 Subject: [PATCH 516/659] [cron] Bump distribution date (2023-06-06) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 4b3e3b2c8c..b5808dcf44 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-05" +//#define STRING_DISTRIBUTION_DATE "2023-06-06" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 66ee44531c..af412a701a 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-05" + #define STRING_DISTRIBUTION_DATE "2023-06-06" #endif /** From e116a99eda1bbfd97e4af1136618d80dcceb169e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 5 Jun 2023 20:13:15 -0500 Subject: [PATCH 517/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20JyersUI=20corner?= =?UTF-8?q?=20pos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25631 --- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index b453bc2031..1ef9ee8517 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -1392,7 +1392,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item break; } break; - case ManualLevel: + case ManualLevel: { #define MLEVEL_BACK 0 #define MLEVEL_PROBE (MLEVEL_BACK + ENABLED(HAS_BED_PROBE)) @@ -1408,10 +1408,10 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item static bool use_probe = false; #if HAS_BED_PROBE - constexpr float probe_x_min = _MAX(0 + corner_pos, X_MIN_POS + probe.offset.x, X_MIN_POS + PROBING_MARGIN) - probe.offset.x, - probe_x_max = _MIN((X_BED_SIZE + X_MIN_POS) - corner_pos, X_MAX_POS + probe.offset.x, X_MAX_POS - PROBING_MARGIN) - probe.offset.x, - probe_y_min = _MAX(0 + corner_pos, Y_MIN_POS + probe.offset.y, Y_MIN_POS + PROBING_MARGIN) - probe.offset.y, - probe_y_max = _MIN((Y_BED_SIZE + Y_MIN_POS) - corner_pos, Y_MAX_POS + probe.offset.y, Y_MAX_POS - PROBING_MARGIN) - probe.offset.y; + const float probe_x_min = _MAX(0 + corner_pos, X_MIN_POS + probe.offset.x, X_MIN_POS + PROBING_MARGIN) - probe.offset.x, + probe_x_max = _MIN((X_BED_SIZE + X_MIN_POS) - corner_pos, X_MAX_POS + probe.offset.x, X_MAX_POS - PROBING_MARGIN) - probe.offset.x, + probe_y_min = _MAX(0 + corner_pos, Y_MIN_POS + probe.offset.y, Y_MIN_POS + PROBING_MARGIN) - probe.offset.y, + probe_y_max = _MIN((Y_BED_SIZE + Y_MIN_POS) - corner_pos, Y_MAX_POS + probe.offset.y, Y_MAX_POS - PROBING_MARGIN) - probe.offset.y; #endif switch (item) { @@ -1423,6 +1423,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item Draw_Menu(Prepare, PREPARE_MANUALLEVEL); } break; + #if HAS_BED_PROBE case MLEVEL_PROBE: if (draw) { @@ -1434,7 +1435,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item Draw_Checkbox(row, use_probe); if (use_probe) { Popup_Handler(Level); - constexpr struct { xy_pos_t p, ProbePtRaise r } points[] = { + const struct { xy_pos_t p; ProbePtRaise r; } points[] = { { { probe_x_min, probe_y_min }, PROBE_PT_RAISE }, { { probe_x_min, probe_y_max }, PROBE_PT_RAISE }, { { probe_x_max, probe_y_max }, PROBE_PT_RAISE }, @@ -1452,6 +1453,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item } break; #endif + case MLEVEL_BL: if (draw) Draw_Menu_Item(row, ICON_AxisBL, F("Bottom Left")); @@ -1566,7 +1568,9 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item Modify_Value(mlev_z_pos, 0, MAX_Z_OFFSET, 100); break; } - break; + + } break; + #if HAS_ZOFFSET_ITEM case ZOffset: From a6b32a5a915e17eaa73dede2f9a98fc042b4904d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 5 Jun 2023 20:39:14 -0500 Subject: [PATCH 518/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Byp?= =?UTF-8?q?ass=20error=20in=20build=5Fexample?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/bin/build_example | 3 +++ 1 file changed, 3 insertions(+) diff --git a/buildroot/bin/build_example b/buildroot/bin/build_example index 34549769bb..a8878e8d9f 100755 --- a/buildroot/bin/build_example +++ b/buildroot/bin/build_example @@ -32,6 +32,9 @@ $SED -i~ -e "20,30{/#error/d}" Marlin/Configuration.h rm Marlin/Configuration.h~ unset IFS; set +f +# Suppress fatal warnings +echo -e "\n#define NO_CONTROLLER_CUSTOM_WIRING_WARNING" >> Marlin/Configuration.h + echo "Building the firmware now..." $HERE/mftest -s -a -n1 || { echo "Failed"; exit 1; } From 17cc5fa8723eed59106e925472baf37383a5ac5b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 5 Jun 2023 21:08:43 -0500 Subject: [PATCH 519/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Sup?= =?UTF-8?q?press=20narrowing=20warnings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25924 --- Marlin/src/core/types.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 57d1c5d5f7..8fcaa0000c 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -452,9 +452,9 @@ struct XYval { FI constexpr XYval operator- (const XYZEval &rs) const { return { XY_OP(-) }; } FI constexpr XYval operator* (const XYZEval &rs) const { return { XY_OP(*) }; } FI constexpr XYval operator/ (const XYZEval &rs) const { return { XY_OP(/) }; } - FI constexpr XYval operator* (const float &p) const { return { x * p, y * p }; } + FI constexpr XYval operator* (const float &p) const { return { (T)(x * p), (T)(y * p) }; } FI constexpr XYval operator* (const int &p) const { return { x * p, y * p }; } - FI constexpr XYval operator/ (const float &p) const { return { x / p, y / p }; } + FI constexpr XYval operator/ (const float &p) const { return { (T)(x / p), (T)(y / p) }; } FI constexpr XYval operator/ (const int &p) const { return { x / p, y / p }; } FI constexpr XYval operator>>(const int &p) const { return { _RS(x), _RS(y) }; } FI constexpr XYval operator<<(const int &p) const { return { _LS(x), _LS(y) }; } @@ -604,9 +604,9 @@ struct XYZval { FI constexpr XYZval operator- (const XYZEval &rs) const { return NUM_AXIS_ARRAY(x - rs.x, y - rs.y, z - rs.z, i - rs.i, j - rs.j, k - rs.k, u - rs.u, v - rs.v, w - rs.w ); } FI constexpr XYZval operator* (const XYZEval &rs) const { return NUM_AXIS_ARRAY(x * rs.x, y * rs.y, z * rs.z, i * rs.i, j * rs.j, k * rs.k, u * rs.u, v * rs.v, w * rs.w ); } FI constexpr XYZval operator/ (const XYZEval &rs) const { return NUM_AXIS_ARRAY(x / rs.x, y / rs.y, z / rs.z, i / rs.i, j / rs.j, k / rs.k, u / rs.u, v / rs.v, w / rs.w ); } - FI constexpr XYZval operator* (const float &p) const { return NUM_AXIS_ARRAY(x * p, y * p, z * p, i * p, j * p, k * p, u * p, v * p, w * p); } + FI constexpr XYZval operator* (const float &p) const { return NUM_AXIS_ARRAY((T)(x * p), (T)(y * p), (T)(z * p), (T)(i * p), (T)(j * p), (T)(k * p), (T)(u * p), (T)(v * p), (T)(w * p)); } FI constexpr XYZval operator* (const int &p) const { return NUM_AXIS_ARRAY(x * p, y * p, z * p, i * p, j * p, k * p, u * p, v * p, w * p); } - FI constexpr XYZval operator/ (const float &p) const { return NUM_AXIS_ARRAY(x / p, y / p, z / p, i / p, j / p, k / p, u / p, v / p, w / p); } + FI constexpr XYZval operator/ (const float &p) const { return NUM_AXIS_ARRAY((T)(x / p), (T)(y / p), (T)(z / p), (T)(i / p), (T)(j / p), (T)(k / p), (T)(u / p), (T)(v / p), (T)(w / p)); } FI constexpr XYZval operator/ (const int &p) const { return NUM_AXIS_ARRAY(x / p, y / p, z / p, i / p, j / p, k / p, u / p, v / p, w / p); } FI constexpr XYZval operator>>(const int &p) const { return NUM_AXIS_ARRAY(_RS(x), _RS(y), _RS(z), _RS(i), _RS(j), _RS(k), _RS(u), _RS(v), _RS(w)); } FI constexpr XYZval operator<<(const int &p) const { return NUM_AXIS_ARRAY(_LS(x), _LS(y), _LS(z), _LS(i), _LS(j), _LS(k), _LS(u), _LS(v), _LS(w)); } @@ -751,9 +751,9 @@ struct XYZEval { FI constexpr XYZEval operator- (const XYZEval &rs) const { return LOGICAL_AXIS_ARRAY(e - rs.e, x - rs.x, y - rs.y, z - rs.z, i - rs.i, j - rs.j, k - rs.k, u - rs.u, v - rs.v, w - rs.w); } FI constexpr XYZEval operator* (const XYZEval &rs) const { return LOGICAL_AXIS_ARRAY(e * rs.e, x * rs.x, y * rs.y, z * rs.z, i * rs.i, j * rs.j, k * rs.k, u * rs.u, v * rs.v, w * rs.w); } FI constexpr XYZEval operator/ (const XYZEval &rs) const { return LOGICAL_AXIS_ARRAY(e / rs.e, x / rs.x, y / rs.y, z / rs.z, i / rs.i, j / rs.j, k / rs.k, u / rs.u, v / rs.v, w / rs.w); } - FI constexpr XYZEval operator* (const float &p) const { return LOGICAL_AXIS_ARRAY(e * p, x * p, y * p, z * p, i * p, j * p, k * p, u * p, v * p, w * p); } + FI constexpr XYZEval operator* (const float &p) const { return LOGICAL_AXIS_ARRAY((T)(e * p), (T)(x * p), (T)(y * p), (T)(z * p), (T)(i * p), (T)(j * p), (T)(k * p), (T)(u * p), (T)(v * p), (T)(w * p)); } FI constexpr XYZEval operator* (const int &p) const { return LOGICAL_AXIS_ARRAY(e * p, x * p, y * p, z * p, i * p, j * p, k * p, u * p, v * p, w * p); } - FI constexpr XYZEval operator/ (const float &p) const { return LOGICAL_AXIS_ARRAY(e / p, x / p, y / p, z / p, i / p, j / p, k / p, u / p, v / p, w / p); } + FI constexpr XYZEval operator/ (const float &p) const { return LOGICAL_AXIS_ARRAY((T)(e / p), (T)(x / p), (T)(y / p), (T)(z / p), (T)(i / p), (T)(j / p), (T)(k / p), (T)(u / p), (T)(v / p), (T)(w / p)); } FI constexpr XYZEval operator/ (const int &p) const { return LOGICAL_AXIS_ARRAY(e / p, x / p, y / p, z / p, i / p, j / p, k / p, u / p, v / p, w / p); } FI constexpr XYZEval operator>>(const int &p) const { return LOGICAL_AXIS_ARRAY(_RS(e), _RS(x), _RS(y), _RS(z), _RS(i), _RS(j), _RS(k), _RS(u), _RS(v), _RS(w)); } FI constexpr XYZEval operator<<(const int &p) const { return LOGICAL_AXIS_ARRAY(_LS(e), _LS(x), _LS(y), _LS(z), _LS(i), _LS(j), _LS(k), _LS(u), _LS(v), _LS(w)); } From 4b8e4ef38e1f395d394314f54bacff8def9527c8 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 5 Jun 2023 23:49:09 -0500 Subject: [PATCH 520/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Mixer=20label=20in?= =?UTF-8?q?=20PROGMEM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 10 +++++----- Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp | 12 ++++++------ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index 51b3fbd3c4..ba467d1a61 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -973,20 +973,20 @@ void MarlinUI::draw_status_screen() { // Two-component mix / gradient instead of XY - char mixer_messages[12]; - const char *mix_label; + char mixer_messages[15]; + PGM_P mix_label; #if ENABLED(GRADIENT_MIX) if (mixer.gradient.enabled) { mixer.update_mix_from_gradient(); - mix_label = "Gr"; + mix_label = PSTR("Gr"); } else #endif { mixer.update_mix_from_vtool(); - mix_label = "Mx"; + mix_label = PSTR("Mx"); } - sprintf_P(mixer_messages, PSTR("%s %d;%d%% "), mix_label, int(mixer.mix[0]), int(mixer.mix[1])); + sprintf_P(mixer_messages, PSTR(S_FMT " %d;%d%% "), mix_label, int(mixer.mix[0]), int(mixer.mix[1])); lcd_put_u8str(mixer_messages); #else // !HAS_DUAL_MIXING diff --git a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp index dfb685f096..ee7154ae41 100644 --- a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp +++ b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp @@ -866,23 +866,23 @@ void MarlinUI::draw_status_screen() { // #if HOTENDS <= 1 || (HOTENDS <= 2 && !HAS_HEATED_BED) - #if DUAL_MIXING_EXTRUDER + #if HAS_DUAL_MIXING lcd_moveto(0, 4); // Two-component mix / gradient instead of XY - char mixer_messages[12]; - const char *mix_label; + char mixer_messages[15]; + PGM_P mix_label; #if ENABLED(GRADIENT_MIX) if (mixer.gradient.enabled) { mixer.update_mix_from_gradient(); - mix_label = "Gr"; + mix_label = PSTR("Gr"); } else #endif { mixer.update_mix_from_vtool(); - mix_label = "Mx"; + mix_label = PSTR("Mx"); } - sprintf_P(mixer_messages, PSTR("%s %d;%d%% "), mix_label, int(mixer.mix[0]), int(mixer.mix[1])); + sprintf_P(mixer_messages, PSTR(S_FMT " %d;%d%% "), mix_label, int(mixer.mix[0]), int(mixer.mix[1])); lcd_put_u8str(mixer_messages); #endif #endif From 35016633d843ba393eb17cf5fd1dba03764821dd Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 6 Jun 2023 02:58:28 -0500 Subject: [PATCH 521/659] =?UTF-8?q?=F0=9F=A9=B9=20Conditional=20include=20?= =?UTF-8?q?probe.h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/settings.cpp | 4 +++- Marlin/src/module/tool_change.cpp | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 62b03a1b9c..1defac2977 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -60,7 +60,9 @@ #include "../HAL/shared/eeprom_api.h" #endif -#include "probe.h" +#if HAS_BED_PROBE + #include "probe.h" +#endif #if HAS_LEVELING #include "../feature/bedlevel/bedlevel.h" diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index 21f5ce80b5..d65b3fb32a 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -24,7 +24,6 @@ #include "tool_change.h" -#include "probe.h" #include "motion.h" #include "planner.h" #include "temperature.h" @@ -92,6 +91,10 @@ #include "../feature/pause.h" #endif +#if HAS_BED_PROBE + #include "probe.h" +#endif + #if ENABLED(TOOLCHANGE_FILAMENT_SWAP) #if TOOLCHANGE_FS_WIPE_RETRACT <= 0 #undef TOOLCHANGE_FS_WIPE_RETRACT From 8f1d80b0ba425b6d927d99aad8340e22a71da7ff Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 6 Jun 2023 15:30:28 -0500 Subject: [PATCH 522/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Use?= =?UTF-8?q?=20Flags<>=20for=20runout=20(#25938)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/runout.h | 48 ++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/Marlin/src/feature/runout.h b/Marlin/src/feature/runout.h index ea17cbc442..2b3516a8b4 100644 --- a/Marlin/src/feature/runout.h +++ b/Marlin/src/feature/runout.h @@ -50,6 +50,8 @@ #define HAS_FILAMENT_SWITCH 1 #endif +typedef Flags<8> runout_flags_t; + void event_filament_runout(const uint8_t extruder); template @@ -130,39 +132,29 @@ class TFilamentMonitor : public FilamentMonitorBase { TERN_(HAS_FILAMENT_RUNOUT_DISTANCE, cli()); // Prevent RunoutResponseDelayed::block_completed from accumulating here response.run(); sensor.run(); - const uint8_t runout_flags = response.has_run_out(); + const runout_flags_t runout_flags = response.has_run_out(); TERN_(HAS_FILAMENT_RUNOUT_DISTANCE, sei()); #if MULTI_FILAMENT_SENSOR #if ENABLED(WATCH_ALL_RUNOUT_SENSORS) - const bool ran_out = !!runout_flags; // any sensor triggers + const bool ran_out = bool(runout_flags); // any sensor triggers uint8_t extruder = 0; - if (ran_out) { - uint8_t bitmask = runout_flags; - while (!(bitmask & 1)) { - bitmask >>= 1; - extruder++; - } - } + if (ran_out) while (!runout_flags.test(extruder)) extruder++; #else - const bool ran_out = TEST(runout_flags, active_extruder); // suppress non active extruders + const bool ran_out = runout_flags[active_extruder]; // suppress non active extruders uint8_t extruder = active_extruder; #endif #else - const bool ran_out = !!runout_flags; + const bool ran_out = bool(runout_flags); uint8_t extruder = active_extruder; #endif - #if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG) - if (runout_flags) { - SERIAL_ECHOPGM("Runout Sensors: "); - for (uint8_t i = 0; i < 8; ++i) SERIAL_ECHO('0' + TEST(runout_flags, i)); - SERIAL_ECHOPGM(" -> ", extruder); - if (ran_out) SERIAL_ECHOPGM(" RUN OUT"); - SERIAL_EOL(); - } - #endif - if (ran_out) { + #if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG) + SERIAL_ECHOPGM("Runout Sensors: "); + for (uint8_t i = 0; i < 8; ++i) SERIAL_ECHO('0' + char(runout_flags[i])); + SERIAL_ECHOLNPGM(" -> ", extruder, " RUN OUT"); + #endif + filament_ran_out = true; event_filament_runout(extruder); planner.synchronize(); @@ -387,11 +379,11 @@ class FilamentSensorBase { #endif } - static uint8_t has_run_out() { - uint8_t runout_flags = 0; - for (uint8_t i = 0; i < NUM_RUNOUT_SENSORS; ++i) if (mm_countdown.runout[i] < 0) SBI(runout_flags, i); + static runout_flags_t has_run_out() { + runout_flags_t runout_flags{0}; + for (uint8_t i = 0; i < NUM_RUNOUT_SENSORS; ++i) if (mm_countdown.runout[i] < 0) runout_flags.set(i); #if ENABLED(FILAMENT_SWITCH_AND_MOTION) - for (uint8_t i = 0; i < NUM_MOTION_SENSORS; ++i) if (mm_countdown.motion[i] < 0) SBI(runout_flags, i); + for (uint8_t i = 0; i < NUM_MOTION_SENSORS; ++i) if (mm_countdown.motion[i] < 0) runout_flags.set(i); #endif return runout_flags; } @@ -439,9 +431,9 @@ class FilamentSensorBase { for (uint8_t i = 0; i < NUM_RUNOUT_SENSORS; ++i) if (runout_count[i] >= 0) runout_count[i]--; } - static uint8_t has_run_out() { - uint8_t runout_flags = 0; - for (uint8_t i = 0; i < NUM_RUNOUT_SENSORS; ++i) if (runout_count[i] < 0) SBI(runout_flags, i); + static runout_flags_t has_run_out() { + runout_flags_t runout_flags{0}; + for (uint8_t i = 0; i < NUM_RUNOUT_SENSORS; ++i) if (runout_count[i] < 0) runout_flags.set(i); return runout_flags; } From 322d5dc29c136b5e2f1a8e4712fc10a781b9d4c3 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 7 Jun 2023 00:25:18 +0000 Subject: [PATCH 523/659] [cron] Bump distribution date (2023-06-07) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index b5808dcf44..ee5d6241a5 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-06" +//#define STRING_DISTRIBUTION_DATE "2023-06-07" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index af412a701a..4a84c53b88 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-06" + #define STRING_DISTRIBUTION_DATE "2023-06-07" #endif /** From 984f9fe7d6a0c86f045010d294c316fe05835587 Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Wed, 7 Jun 2023 10:01:07 +0200 Subject: [PATCH 524/659] =?UTF-8?q?=F0=9F=8C=90=20Update=20Italian=20langu?= =?UTF-8?q?age=20(#25940)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/language/language_it.h | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index d9a9340762..55f1ac3b48 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -69,6 +69,8 @@ namespace Language_it { LSTR MSG_DISABLE_STEPPERS = _UxGT("Disabilita Motori"); LSTR MSG_DEBUG_MENU = _UxGT("Menu di debug"); LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test barra avanzam."); + LSTR MSG_ENDSTOP_TEST = _UxGT("Test Finecorsa"); + LSTR MSG_Z_PROBE = _UxGT("Sonda Z"); LSTR MSG_HOMING = _UxGT("Azzeramento"); LSTR MSG_AUTO_HOME = _UxGT("Auto Home"); LSTR MSG_AUTO_HOME_A = _UxGT("Home @"); @@ -425,6 +427,7 @@ namespace Language_it { LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); LSTR MSG_MOTION = _UxGT("Movimento"); LSTR MSG_FILAMENT = _UxGT("Filamento"); + LSTR MSG_FILAMENT_EN = _UxGT("Filamento *"); LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("Limite E in mm") SUPERSCRIPT_THREE; LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("Limite E *"); @@ -438,6 +441,7 @@ namespace Language_it { LSTR MSG_DRAW_MIN_Y = _UxGT("Min Y area disegno"); LSTR MSG_DRAW_MAX_Y = _UxGT("Max Y area disegno"); LSTR MSG_MAX_BELT_LEN = _UxGT("Lungh.max cinghia"); + LSTR MSG_LINEAR_ADVANCE = _UxGT("Avanzam.Lineare"); LSTR MSG_ADVANCE_K = _UxGT("K Avanzamento"); LSTR MSG_ADVANCE_K_E = _UxGT("K Avanzamento *"); LSTR MSG_CONTRAST = _UxGT("Contrasto LCD"); @@ -449,8 +453,9 @@ namespace Language_it { LSTR MSG_RESTORE_DEFAULTS = _UxGT("Ripristina imp."); LSTR MSG_INIT_EEPROM = _UxGT("Inizializza EEPROM"); LSTR MSG_ERR_EEPROM_CRC = _UxGT("Err: CRC EEPROM"); - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: Taglia EEPROM"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: Dimens.EEPROM"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: Versione EEPROM"); + LSTR MSG_ERR_EEPROM_CORRUPT = _UxGT("Err: EEPROM corrotta"); LSTR MSG_SETTINGS_STORED = _UxGT("Impostazioni mem."); LSTR MSG_MEDIA_UPDATE = _UxGT("Aggiorna media"); LSTR MSG_RESET_PRINTER = _UxGT("Resetta stampante"); @@ -619,6 +624,7 @@ namespace Language_it { LSTR MSG_CHAMBER_COOLING = _UxGT("Raffr. camera..."); LSTR MSG_LASER_COOLING = _UxGT("Raffr. laser..."); LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibraz. Delta"); + LSTR MSG_DELTA_CALIBRATION_IN_PROGRESS = _UxGT("Calibrazione Delta in corso"); LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibra X"); LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibra Y"); LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibra Z"); @@ -729,7 +735,8 @@ namespace Language_it { LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filamento ~"); LSTR MSG_MMU2_RESET = _UxGT("Azzera MMU"); LSTR MSG_MMU2_RESETTING = _UxGT("Azzeramento MMU..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Rimuovi, click"); + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Espelli, click"); + LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Rimuovi e click..."); LSTR MSG_MIX = _UxGT("Miscela"); LSTR MSG_MIX_COMPONENT_N = _UxGT("Componente {"); @@ -813,6 +820,22 @@ namespace Language_it { LSTR MSG_BACKLASH_CORRECTION = _UxGT("Correzione"); LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Appianamento"); + LSTR MSG_FIXED_TIME_MOTION = _UxGT("Movimento a Tempo-Fisso"); + LSTR MSG_FTM_MODE = _UxGT("Modo Movimento:"); + LSTR MSG_FTM_ZV = _UxGT("ZV"); + LSTR MSG_FTM_ZVD = _UxGT("ZVD"); + LSTR MSG_FTM_EI = _UxGT("EI"); + LSTR MSG_FTM_2HEI = _UxGT("2HEI"); + LSTR MSG_FTM_3HEI = _UxGT("3HEI"); + LSTR MSG_FTM_MZV = _UxGT("MZV"); + //LSTR MSG_FTM_ULENDO_FBS = _UxGT("Ulendo FBS"); + //LSTR MSG_FTM_DISCTF = _UxGT("DISCTF"); + LSTR MSG_FTM_DYN_MODE = _UxGT("Modo DF:"); + LSTR MSG_FTM_Z_BASED = _UxGT("Base-Z"); + LSTR MSG_FTM_MASS_BASED = _UxGT("Base-Massa"); + LSTR MSG_FTM_BASE_FREQ_N = _UxGT("@ Freq. Base"); + LSTR MSG_FTM_DFREQ_K_N = _UxGT("@ Freq. Dinam."); + LSTR MSG_LEVEL_X_AXIS = _UxGT("Livello asse X"); LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibra"); #if ENABLED(TOUCH_UI_FTDI_EVE) From e8f5f9d7321bb681ecbb1f787a381bf3885ec302 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Wed, 7 Jun 2023 01:03:35 -0700 Subject: [PATCH 525/659] =?UTF-8?q?=F0=9F=94=A8=20Teensy=204.1=20pins=20en?= =?UTF-8?q?v=20check=20(#25937)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/teensy4/env_validate.h | 26 +++++++++++++++++++++++++ Marlin/src/pins/teensy4/pins_T41U5XBB.h | 4 +--- Marlin/src/pins/teensy4/pins_TEENSY41.h | 4 +--- 3 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 Marlin/src/pins/teensy4/env_validate.h diff --git a/Marlin/src/pins/teensy4/env_validate.h b/Marlin/src/pins/teensy4/env_validate.h new file mode 100644 index 0000000000..5a89e8a409 --- /dev/null +++ b/Marlin/src/pins/teensy4/env_validate.h @@ -0,0 +1,26 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#if NOT_TARGET(IS_TEENSY41) + #error "Oops! Select 'Teensy 4.1' in 'Tools > Board.'" +#endif diff --git a/Marlin/src/pins/teensy4/pins_T41U5XBB.h b/Marlin/src/pins/teensy4/pins_T41U5XBB.h index 5f62bb05a6..2ee4f2970e 100644 --- a/Marlin/src/pins/teensy4/pins_T41U5XBB.h +++ b/Marlin/src/pins/teensy4/pins_T41U5XBB.h @@ -27,9 +27,7 @@ * https://www.pjrc.com/teensy/teensyduino.html ****************************************************************************************/ -#if NOT_TARGET(IS_TEENSY41) - #error "Oops! Select 'Teensy 4.1' in 'Tools > Board.'" -#endif +#include "env_validate.h" #define BOARD_INFO_NAME "Teensy4.1" diff --git a/Marlin/src/pins/teensy4/pins_TEENSY41.h b/Marlin/src/pins/teensy4/pins_TEENSY41.h index 263d9e8f8b..2a8a76f17c 100644 --- a/Marlin/src/pins/teensy4/pins_TEENSY41.h +++ b/Marlin/src/pins/teensy4/pins_TEENSY41.h @@ -27,9 +27,7 @@ * https://www.pjrc.com/teensy/teensyduino.html ****************************************************************************************/ -#if NOT_TARGET(IS_TEENSY41) - #error "Oops! Select 'Teensy 4.1' in 'Tools > Board.'" -#endif +#include "env_validate.h" #define BOARD_INFO_NAME "Teensy4.1" From 10947a463ba50ec31434e775e006d192906f7a83 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 8 Jun 2023 00:23:27 +0000 Subject: [PATCH 526/659] [cron] Bump distribution date (2023-06-08) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index ee5d6241a5..c4fb72821e 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-07" +//#define STRING_DISTRIBUTION_DATE "2023-06-08" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 4a84c53b88..c39dc089a8 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-07" + #define STRING_DISTRIBUTION_DATE "2023-06-08" #endif /** From d1e995670d2ce345b42ac8d8f9b0cebda7d87632 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 7 Jun 2023 20:28:15 -0500 Subject: [PATCH 527/659] =?UTF-8?q?=F0=9F=94=A7=20Z-MIN=20as=20CREALITY=20?= =?UTF-8?q?V25=20S1=20probe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h index 5657a79950..61207f90b0 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V25S1.h @@ -51,9 +51,9 @@ #if ENABLED(IIC_BL24CXX_EEPROM) #define IIC_EEPROM_SDA PA11 #define IIC_EEPROM_SCL PA12 - #define MARLIN_EEPROM_SIZE 0x800 // 2K (24C16) + #define MARLIN_EEPROM_SIZE 0x800 // 2K (24C16) #elif ANY(SDCARD_EEPROM_EMULATION, FLASH_EEPROM_EMULATION) - #define MARLIN_EEPROM_SIZE 0x800 // 2K + #define MARLIN_EEPROM_SIZE 0x800 // 2K #endif // @@ -61,19 +61,13 @@ // #define X_STOP_PIN PC4 #define Y_STOP_PIN PC5 +#define Z_STOP_PIN PC15 #if ENABLED(BLTOUCH) - #define Z_STOP_PIN -1 #define SERVO0_PIN PC14 // BLTouch OUT PIN - #ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN PC15 // BLTouch IN PIN - #endif -#else - #define Z_STOP_PIN PC15 - #if ENABLED(PROBE_ACTIVATION_SWITCH) - #define PROBE_TARE_PIN PC14 - #define PROBE_ACTIVATION_SWITCH_PIN PB2 - #endif +#elif ENABLED(PROBE_ACTIVATION_SWITCH) + #define PROBE_TARE_PIN PC14 + #define PROBE_ACTIVATION_SWITCH_PIN PB2 #endif // From 54a82b4337a5e65e53ef8b28749546c18d05ba79 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 7 Jun 2023 20:58:55 -0500 Subject: [PATCH 528/659] =?UTF-8?q?=F0=9F=9A=B8=20Fix=20TFT=20menu=20posit?= =?UTF-8?q?ioning=20(#25942)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Ed <751406+helakejr@users.noreply.github.com> --- Marlin/src/lcd/tft/ui_480x320.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Marlin/src/lcd/tft/ui_480x320.cpp b/Marlin/src/lcd/tft/ui_480x320.cpp index 75ec50adc2..2a6f50c93b 100644 --- a/Marlin/src/lcd/tft/ui_480x320.cpp +++ b/Marlin/src/lcd/tft/ui_480x320.cpp @@ -623,6 +623,7 @@ struct { #define BTN_HEIGHT 52 #define X_MARGIN 20 #define Y_MARGIN 15 +#define Y_OFFSET TERN(HAS_UI_480x272, 28, 34) static void quick_feedback() { #if HAS_CHIRP @@ -652,7 +653,7 @@ static void drawCurStepValue() { tft.add_text(0, 0, Z_BTN_COLOR, tft_string); tft.queue.sync(); tft_string.set(F("Offset")); - tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + 34, tft_string.width(), 34); + tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + Y_OFFSET, tft_string.width(), Y_OFFSET TERN_(HAS_UI_480x272, - 10)); tft.set_background(COLOR_BACKGROUND); if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) tft.add_text(0, 0, Z_BTN_COLOR, tft_string); @@ -670,7 +671,7 @@ static void drawCurStepValue() { #endif static void drawMessage(PGM_P const msg) { - tft.canvas(X_MARGIN, TFT_HEIGHT - Y_MARGIN - 34, TFT_HEIGHT / 2, 34); + tft.canvas(X_MARGIN, TFT_HEIGHT - Y_MARGIN - Y_OFFSET, TFT_HEIGHT / 2, Y_OFFSET); tft.set_background(COLOR_BACKGROUND); tft.add_text(0, 0, COLOR_YELLOW, msg); } @@ -699,7 +700,7 @@ static void drawAxisValue(const AxisEnum axis) { #endif default: return; } - tft.canvas(pos.x, pos.y, BTN_WIDTH + X_MARGIN, BTN_HEIGHT); + tft.canvas(pos.x, pos.y, BTN_WIDTH + X_MARGIN, BTN_HEIGHT TERN_(HAS_UI_480x272, / 2)); tft.set_background(COLOR_BACKGROUND); tft_string.set(ftostr52sp(value)); tft.add_text(0, 0, color, tft_string); @@ -891,7 +892,7 @@ void MarlinUI::move_axis_screen() { TERN_(HAS_Z_AXIS, motionAxisState.z_selection = Z_SELECTION_Z_PROBE); - // ROW 1 -> E- Y- CurY Z+ + // ROW 1 -> E+ Y+ CurY Z+ int x = X_MARGIN, y = Y_MARGIN, spacing = 0; TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy)); @@ -941,7 +942,7 @@ void MarlinUI::move_axis_screen() { motionAxisState.zTypePos.y = y; TERN_(HAS_Z_AXIS, drawCurZSelection()); #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) - if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); + if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, Y_OFFSET * 2, (intptr_t)z_select); #endif // ROW 3 -> E- CurX Y- Z- @@ -975,7 +976,7 @@ void MarlinUI::move_axis_screen() { TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); // ROW 4 -> step_size disable steppers back - y = TFT_HEIGHT - Y_MARGIN - 32; + y = TFT_HEIGHT - Y_MARGIN - TERN(HAS_UI_480x272, BTN_WIDTH / 2, 32); x = TFT_WIDTH / 2 - CUR_STEP_VALUE_WIDTH / 2; motionAxisState.stepValuePos.x = x; motionAxisState.stepValuePos.y = y; @@ -990,4 +991,4 @@ void MarlinUI::move_axis_screen() { TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); } -#endif // HAS_UI_480x320 +#endif // HAS_UI_480x320 || HAS_UI_480x272 From 9d830d72077fd42927e0a1396fa752b8a6c449cd Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Wed, 7 Jun 2023 20:16:30 -0700 Subject: [PATCH 529/659] =?UTF-8?q?=F0=9F=94=A8=20Clean=20up=20some=20BTT?= =?UTF-8?q?=20envs,=20etc.=20(#25934)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25921 Co-authored-by: Scott Lahteine --- Marlin/src/core/boards.h | 2 +- Marlin/src/pins/pins.h | 40 +- .../boards/marlin_CREALITY_STM32F401RC.json | 65 -- .../PlatformIO/boards/marlin_STM32H723VE.json | 61 -- ...M32H723Zx.json => marlin_STM32H723ZE.json} | 0 ...M32H743Vx.json => marlin_STM32H743VI.json} | 0 .../variants/MARLIN_H723VE/PeripheralPins.c | 590 ------------------ .../variants/MARLIN_H723VE/PinNamesVar.h | 108 ---- .../variants/MARLIN_H723VE/ldscript.ld | 174 ------ .../variant_MARLIN_STM32H723VE.cpp | 273 -------- .../variant_MARLIN_STM32H723VE.h | 269 -------- ini/renamed.ini | 8 +- ini/stm32h7.ini | 33 +- 13 files changed, 47 insertions(+), 1576 deletions(-) delete mode 100644 buildroot/share/PlatformIO/boards/marlin_CREALITY_STM32F401RC.json delete mode 100644 buildroot/share/PlatformIO/boards/marlin_STM32H723VE.json rename buildroot/share/PlatformIO/boards/{marlin_STM32H723Zx.json => marlin_STM32H723ZE.json} (100%) rename buildroot/share/PlatformIO/boards/{marlin_STM32H743Vx.json => marlin_STM32H743VI.json} (100%) delete mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723VE/PeripheralPins.c delete mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723VE/PinNamesVar.h delete mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723VE/ldscript.ld delete mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723VE/variant_MARLIN_STM32H723VE.cpp delete mode 100644 buildroot/share/PlatformIO/variants/MARLIN_H723VE/variant_MARLIN_STM32H723VE.h diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index 742cf8f236..fbdb807d33 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -466,7 +466,7 @@ #define BOARD_BTT_SKR_SE_BX_V3 6005 // BigTreeTech SKR SE BX V3.0 (STM32H743II) #define BOARD_BTT_SKR_V3_0 6006 // BigTreeTech SKR V3.0 (STM32H743VG) #define BOARD_BTT_SKR_V3_0_EZ 6007 // BigTreeTech SKR V3.0 EZ (STM32H743VG) -#define BOARD_BTT_OCTOPUS_MAX_EZ_V1_0 6008 // BigTreeTech Octopus Max EZ V1.0 (STM32H723VE / STM32H723ZE) +#define BOARD_BTT_OCTOPUS_MAX_EZ_V1_0 6008 // BigTreeTech Octopus Max EZ V1.0 (STM32H723ZE) // // Espressif ESP32 WiFi diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 0ae0312dae..d4ec9f22c0 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -540,32 +540,32 @@ #elif MB(MALYAN_M200_V2) #include "stm32f0/pins_MALYAN_M200_V2.h" // STM32F0 env:STM32F070RB_malyan env:STM32F070CB_malyan #elif MB(MALYAN_M300) - #include "stm32f0/pins_MALYAN_M300.h" // STM32F070 env:malyan_M300 + #include "stm32f0/pins_MALYAN_M300.h" // STM32F0 env:malyan_M300 // // STM32 ARM Cortex-M3 // #elif MB(STM32F103RE) - #include "stm32f1/pins_STM32F1R.h" // STM32F103RE env:STM32F103RE env:STM32F103RE_maple + #include "stm32f1/pins_STM32F1R.h" // STM32F1 env:STM32F103RE env:STM32F103RE_maple #elif MB(MALYAN_M200) - #include "stm32f1/pins_MALYAN_M200.h" // STM32F103CB env:STM32F103CB_malyan env:STM32F103CB_malyan_maple + #include "stm32f1/pins_MALYAN_M200.h" // STM32F1 env:STM32F103CB_malyan env:STM32F103CB_malyan_maple #elif MB(STM3R_MINI) - #include "stm32f1/pins_STM3R_MINI.h" // STM32F103VE? env:STM32F103VE env:STM32F103RE_maple + #include "stm32f1/pins_STM3R_MINI.h" // STM32F1 env:STM32F103VE env:STM32F103RE_maple #elif MB(GTM32_PRO_VB) - #include "stm32f1/pins_GTM32_PRO_VB.h" // STM32F103VE env:STM32F103VE env:STM32F103VE_GTM32_maple + #include "stm32f1/pins_GTM32_PRO_VB.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple #elif MB(GTM32_PRO_VD) - #include "stm32f1/pins_GTM32_PRO_VD.h" // STM32F103VE env:STM32F103VE env:STM32F103VE_GTM32_maple + #include "stm32f1/pins_GTM32_PRO_VD.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple #elif MB(GTM32_MINI) - #include "stm32f1/pins_GTM32_MINI.h" // STM32F103VE env:STM32F103VE env:STM32F103VE_GTM32_maple + #include "stm32f1/pins_GTM32_MINI.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple #elif MB(GTM32_MINI_A30) - #include "stm32f1/pins_GTM32_MINI_A30.h" // STM32F103VE env:STM32F103VE env:STM32F103VE_GTM32_maple + #include "stm32f1/pins_GTM32_MINI_A30.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple #elif MB(GTM32_REV_B) - #include "stm32f1/pins_GTM32_REV_B.h" // STM32F103VE env:STM32F103VE env:STM32F103VE_GTM32_maple + #include "stm32f1/pins_GTM32_REV_B.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple #elif MB(MORPHEUS) - #include "stm32f1/pins_MORPHEUS.h" // STM32F103RE env:STM32F103RE env:STM32F103RE_maple + #include "stm32f1/pins_MORPHEUS.h" // STM32F1 env:STM32F103RE env:STM32F103RE_maple #elif MB(CHITU3D) - #include "stm32f1/pins_CHITU3D.h" // STM32F103ZE env:STM32F103ZE env:STM32F103RE_maple + #include "stm32f1/pins_CHITU3D.h" // STM32F1 env:STM32F103ZE env:STM32F103RE_maple #elif MB(MKS_ROBIN) #include "stm32f1/pins_MKS_ROBIN.h" // STM32F1 env:mks_robin env:mks_robin_maple #elif MB(MKS_ROBIN_MINI) @@ -663,7 +663,7 @@ #elif MB(CREALITY_V25S1) #include "stm32f1/pins_CREALITY_V25S1.h" // STM32F1 env:STM32F103RE_creality_smartPro env:STM32F103RE_creality_smartPro_maple #elif MB(CREALITY_V521) - #include "stm32f1/pins_CREALITY_V521.h" // STM32F103VE env:STM32F103VE_creality + #include "stm32f1/pins_CREALITY_V521.h" // STM32F1 env:STM32F103VE_creality #elif MB(TRIGORILLA_PRO) #include "stm32f1/pins_TRIGORILLA_PRO.h" // STM32F1 env:trigorilla_pro env:trigorilla_pro_maple env:trigorilla_pro_disk #elif MB(FLY_MINI) @@ -671,7 +671,7 @@ #elif MB(FLSUN_HISPEED) #include "stm32f1/pins_FLSUN_HISPEED.h" // STM32F1 env:flsun_hispeedv1 #elif MB(BEAST) - #include "stm32f1/pins_BEAST.h" // STM32F103VE? env:STM32F103VE env:STM32F103RE_maple + #include "stm32f1/pins_BEAST.h" // STM32F1 env:STM32F103VE env:STM32F103RE_maple #elif MB(MINGDA_MPX_ARM_MINI) #include "stm32f1/pins_MINGDA_MPX_ARM_MINI.h" // STM32F1 env:mingda_mpx_arm_mini #elif MB(ZONESTAR_ZM3E2) @@ -681,13 +681,13 @@ #elif MB(ZONESTAR_ZM3E4V2) #include "stm32f1/pins_ZM3E4_V2_0.h" // STM32F1 env:STM32F103VE_ZM3E4V2_USB env:STM32F103VE_ZM3E4V2_USB_maple #elif MB(ERYONE_ERY32_MINI) - #include "stm32f1/pins_ERYONE_ERY32_MINI.h" // STM32F103VET6 env:ERYONE_ERY32_MINI_maple + #include "stm32f1/pins_ERYONE_ERY32_MINI.h" // STM32F1 env:ERYONE_ERY32_MINI_maple #elif MB(PANDA_PI_V29) - #include "stm32f1/pins_PANDA_PI_V29.h" // STM32F103RCT6 env:PANDA_PI_V29 + #include "stm32f1/pins_PANDA_PI_V29.h" // STM32F1 env:PANDA_PI_V29 #elif MB(SOVOL_V131) #include "gd32f1/pins_SOVOL_V131.h" // GD32F1 env:GD32F103RET6_sovol_maple #elif MB(TRIGORILLA_V006) - #include "gd32f1/pins_TRIGORILLA_V006.h" // GD32F103 env:trigorilla_v006 + #include "gd32f1/pins_TRIGORILLA_V006.h" // GD32F1 env:trigorilla_v006 #elif MB(KEDI_CONTROLLER_V1_2) #include "stm32f1/pins_KEDI_CONTROLLER_V1_2.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple @@ -733,7 +733,7 @@ #elif MB(BTT_OCTOPUS_V1_1) #include "stm32f4/pins_BTT_OCTOPUS_V1_1.h" // STM32F4 env:STM32F446ZE_btt env:STM32F446ZE_btt_USB env:STM32F429ZG_btt env:STM32F429ZG_btt_USB env:STM32F407ZE_btt env:STM32F407ZE_btt_USB #elif MB(BTT_OCTOPUS_PRO_V1_0) - #include "stm32f4/pins_BTT_OCTOPUS_PRO_V1_0.h" // STM32F4 env:STM32F446ZE_btt env:STM32F446ZE_btt_USB env:STM32F429ZG_btt env:STM32F429ZG_btt_USB env:STM32H723Zx_btt + #include "stm32f4/pins_BTT_OCTOPUS_PRO_V1_0.h" // STM32F4 env:STM32F446ZE_btt env:STM32F446ZE_btt_USB env:STM32F429ZG_btt env:STM32F429ZG_btt_USB env:STM32H723ZE_btt #elif MB(LERDGE_K) #include "stm32f4/pins_LERDGE_K.h" // STM32F4 env:LERDGEK env:LERDGEK_usb_flash_drive #elif MB(LERDGE_S) @@ -810,11 +810,11 @@ #elif MB(BTT_SKR_SE_BX_V3) #include "stm32h7/pins_BTT_SKR_SE_BX_V3.h" // STM32H7 env:BTT_SKR_SE_BX #elif MB(BTT_SKR_V3_0) - #include "stm32h7/pins_BTT_SKR_V3_0.h" // STM32H743Vx/STM32H723VG env:STM32H743Vx_btt env:STM32H723VG_btt + #include "stm32h7/pins_BTT_SKR_V3_0.h" // STM32H7 env:STM32H743VI_btt env:STM32H723VG_btt #elif MB(BTT_SKR_V3_0_EZ) - #include "stm32h7/pins_BTT_SKR_V3_0_EZ.h" // STM32H743Vx/STM32H723VG env:STM32H743Vx_btt env:STM32H723VG_btt + #include "stm32h7/pins_BTT_SKR_V3_0_EZ.h" // STM32H7 env:STM32H743VI_btt env:STM32H723VG_btt #elif MB(BTT_OCTOPUS_MAX_EZ_V1_0) - #include "stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h" // STM32H723Zx/STM32H723VE env:STM32H723Zx_btt env:STM32H723VE_btt + #include "stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h" // STM32H7 env:STM32H723ZE_btt #elif MB(TEENSY41) #include "teensy4/pins_TEENSY41.h" // Teensy-4.x env:teensy41 #elif MB(T41U5XBB) diff --git a/buildroot/share/PlatformIO/boards/marlin_CREALITY_STM32F401RC.json b/buildroot/share/PlatformIO/boards/marlin_CREALITY_STM32F401RC.json deleted file mode 100644 index 82f49fa815..0000000000 --- a/buildroot/share/PlatformIO/boards/marlin_CREALITY_STM32F401RC.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "build": { - "core": "stm32", - "cpu": "cortex-m4", - "extra_flags": "-DSTM32F401xx", - "f_cpu": "84000000L", - "hwids": [ - [ - "0x1EAF", - "0x0003" - ], - [ - "0x0483", - "0x3748" - ] - ], - "ldscript": "ldscript.ld", - "mcu": "stm32f401rct6", - "variant": "MARLIN_CREALITY_STM32F401RC" - }, - "debug": { - "jlink_device": "STM32F401RC", - "openocd_target": "stm32f4x", - "svd_path": "STM32F40x.svd", - "tools": { - "stlink": { - "server": { - "arguments": [ - "-f", - "scripts/interface/stlink.cfg", - "-c", - "transport select hla_swd", - "-f", - "scripts/target/stm32f4x.cfg", - "-c", - "reset_config none" - ], - "executable": "bin/openocd", - "package": "tool-openocd" - } - } - } - }, - "frameworks": [ - "arduino", - "stm32cube" - ], - "name": "STM32F401RC (64k RAM. 256k Flash)", - "upload": { - "disable_flushing": false, - "maximum_ram_size": 65536, - "maximum_size": 262144, - "protocol": "stlink", - "protocols": [ - "stlink", - "dfu", - "jlink" - ], - "require_upload_port": true, - "use_1200bps_touch": false, - "wait_for_upload_port": false - }, - "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32f401rc.html", - "vendor": "Generic" -} diff --git a/buildroot/share/PlatformIO/boards/marlin_STM32H723VE.json b/buildroot/share/PlatformIO/boards/marlin_STM32H723VE.json deleted file mode 100644 index 3941b3d00a..0000000000 --- a/buildroot/share/PlatformIO/boards/marlin_STM32H723VE.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "build": { - "core": "stm32", - "cpu": "cortex-m7", - "extra_flags": "-DSTM32H7xx -DSTM32H723xx", - "f_cpu": "550000000L", - "mcu": "stm32h723vet6", - "product_line": "STM32H723xx", - "variant": "MARLIN_H723VE" - }, - "connectivity": [ - "can", - "ethernet" - ], - "debug": { - "jlink_device": "STM32H723VE", - "openocd_target": "stm32h7x", - "svd_path": "STM32H7x3.svd", - "tools": { - "stlink": { - "server": { - "arguments": [ - "-f", - "scripts/interface/stlink.cfg", - "-c", - "transport select hla_swd", - "-f", - "scripts/target/stm32h7x.cfg", - "-c", - "reset_config none" - ], - "executable": "bin/openocd", - "package": "tool-openocd" - } - } - } - }, - "frameworks": [ - "arduino", - "stm32cube" - ], - "name": "STM32H723VE (564k RAM. 512k Flash)", - "upload": { - "disable_flushing": false, - "maximum_ram_size": 577536, - "maximum_size": 524288, - "protocol": "stlink", - "protocols": [ - "stlink", - "dfu", - "jlink", - "cmsis-dap" - ], - "offset_address": "0x8020000", - "require_upload_port": true, - "use_1200bps_touch": false, - "wait_for_upload_port": false - }, - "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32h723ve.html", - "vendor": "ST" -} diff --git a/buildroot/share/PlatformIO/boards/marlin_STM32H723Zx.json b/buildroot/share/PlatformIO/boards/marlin_STM32H723ZE.json similarity index 100% rename from buildroot/share/PlatformIO/boards/marlin_STM32H723Zx.json rename to buildroot/share/PlatformIO/boards/marlin_STM32H723ZE.json diff --git a/buildroot/share/PlatformIO/boards/marlin_STM32H743Vx.json b/buildroot/share/PlatformIO/boards/marlin_STM32H743VI.json similarity index 100% rename from buildroot/share/PlatformIO/boards/marlin_STM32H743Vx.json rename to buildroot/share/PlatformIO/boards/marlin_STM32H743VI.json diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723VE/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_H723VE/PeripheralPins.c deleted file mode 100644 index e484edd1ad..0000000000 --- a/buildroot/share/PlatformIO/variants/MARLIN_H723VE/PeripheralPins.c +++ /dev/null @@ -1,590 +0,0 @@ -/* - ******************************************************************************* - * Copyright (c) 2020, STMicroelectronics - * All rights reserved. - * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ******************************************************************************* - */ -/* - * Automatically generated from STM32H723VEHx.xml, STM32H723VETx.xml - * STM32H723VGHx.xml, STM32H723VGTx.xml - * STM32H730VBHx.xml, STM32H730VBTx.xml - * STM32H733VGHx.xml, STM32H733VGTx.xml - * CubeMX DB release 6.0.60 - */ -#if !defined(CUSTOM_PERIPHERAL_PINS) -#include "Arduino.h" -#include "PeripheralPins.h" - -/* ===== - * Notes: - * - The pins mentioned Px_y_ALTz are alternative possibilities which use other - * HW peripheral instances. You can use them the same way as any other "normal" - * pin (i.e. analogWrite(PA7_ALT1, 128);). - * - * - Commented lines are alternative possibilities which are not used per default. - * If you change them, you will have to know what you do - * ===== - */ - -//*** ADC *** - -#ifdef HAL_ADC_MODULE_ENABLED -WEAK const PinMap PinMap_ADC[] = { - {PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_INP16 - {PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_INP17 - {PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_INP14 - {PA_2_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC2_INP14 - {PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_INP15 - {PA_3_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC2_INP15 - {PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_INP18 - {PA_4_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC2_INP18 - {PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 19, 0)}, // ADC1_INP19 - {PA_5_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 19, 0)}, // ADC2_INP19 - {PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_INP3 - {PA_6_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC2_INP3 - {PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_INP7 - {PA_7_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC2_INP7 - {PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_INP9 - {PB_0_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC2_INP9 - {PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_INP5 - {PB_1_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC2_INP5 - {PC_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_INP10 - {PC_0_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC2_INP10 - {PC_0_ALT2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC3_INP10 - {PC_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_INP11 - {PC_1_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_INP11 - {PC_1_ALT2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC3_INP11 - {PC_2_C, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC3_INP0 - {PC_3_C, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_INP1 - {PC_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_INP4 - {PC_4_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC2_INP4 - {PC_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_INP8 - {PC_5_ALT1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC2_INP8 - {NC, NP, 0} -}; -#endif - -//*** DAC *** - -#ifdef HAL_DAC_MODULE_ENABLED -WEAK const PinMap PinMap_DAC[] = { - {PA_4, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC1_OUT1 - {PA_5, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC1_OUT2 - {NC, NP, 0} -}; -#endif - -//*** I2C *** - -#ifdef HAL_I2C_MODULE_ENABLED -WEAK const PinMap PinMap_I2C_SDA[] = { - {PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, - {PB_7_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, - {PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, - {PB_9_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, - {PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, - {PC_9, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, - {PC_9_ALT1, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C5)}, - {PC_10, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C5)}, - {PD_13, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, - {NC, NP, 0} -}; -#endif - -#ifdef HAL_I2C_MODULE_ENABLED -WEAK const PinMap PinMap_I2C_SCL[] = { - {PA_8, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, - {PA_8_ALT1, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C5)}, - {PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, - {PB_6_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, - {PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, - {PB_8_ALT1, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, - {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, - {PC_11, I2C5, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C5)}, - {PD_12, I2C4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, - {NC, NP, 0} -}; -#endif - -//*** TIM *** - -#ifdef HAL_TIM_MODULE_ENABLED -WEAK const PinMap PinMap_TIM[] = { - {PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 - {PA_0_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1 - {PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 - {PA_1_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2 - {PA_1_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 1)}, // TIM15_CH1N - {PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 - {PA_2_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3 - {PA_2_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 0)}, // TIM15_CH1 - {PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 - {PA_3_ALT1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 4, 0)}, // TIM5_CH4 - {PA_3_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 2, 0)}, // TIM15_CH2 - {PA_5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 - {PA_5_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N - {PA_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 - {PA_6_ALT1, TIM13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1 - {PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N - {PA_7_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 - {PA_7_ALT2, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N - {PA_7_ALT3, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1 - {PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 - {PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 - {PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 - {PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 - {PA_15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 - {PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N - {PB_0_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 - {PB_0_ALT2, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N - {PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N - {PB_1_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 - {PB_1_ALT2, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N - {PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 - {PB_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 - {PB_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 - {PB_6, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 - {PB_6_ALT1, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 1)}, // TIM16_CH1N - {PB_7, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 - {PB_7_ALT1, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17, 1, 1)}, // TIM17_CH1N - {PB_8, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 - {PB_8_ALT1, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 0)}, // TIM16_CH1 - {PB_9, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 - {PB_9_ALT1, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17, 1, 0)}, // TIM17_CH1 - {PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 - {PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 - {PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N - {PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N - {PB_14_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N - {PB_14_ALT2, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM12, 1, 0)}, // TIM12_CH1 - {PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N - {PB_15_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N - {PB_15_ALT2, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM12, 2, 0)}, // TIM12_CH2 - {PC_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 - {PC_6_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1 - {PC_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 - {PC_7_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2 - {PC_8, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 - {PC_8_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 0)}, // TIM8_CH3 - {PC_9, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 - {PC_9_ALT1, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 4, 0)}, // TIM8_CH4 - {PC_12, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM15, 1, 0)}, // TIM15_CH1 - {PD_12, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 - {PD_13, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 - {PD_14, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 - {PD_15, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 - {PE_4, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 1)}, // TIM15_CH1N - {PE_5, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 1, 0)}, // TIM15_CH1 - {PE_6, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM15, 2, 0)}, // TIM15_CH2 - {PE_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N - {PE_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 - {PE_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N - {PE_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 - {PE_12, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N - {PE_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 - {PE_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 - {NC, NP, 0} -}; -#endif - -//*** UART *** - -#ifdef HAL_UART_MODULE_ENABLED -WEAK const PinMap PinMap_UART_TX[] = { - {PA_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, - {PA_2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, - {PA_9, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, - {PA_9_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, - {PA_12, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_UART4)}, - {PA_15, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, - {PB_4, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, - {PB_6, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART)}, - {PB_6_ALT1, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, - {PB_6_ALT2, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, - {PB_9, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, - {PB_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, - {PB_13, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, - {PB_14, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)}, - {PC_6, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, - {PC_10, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, - {PC_10_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, - {PC_12, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, - {PD_1, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, - {PD_5, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, - {PD_8, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, - {PD_15, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, - {PE_1, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, - {PE_3, USART10, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_USART10)}, - {PE_8, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, - {NC, NP, 0} -}; -#endif - -#ifdef HAL_UART_MODULE_ENABLED -WEAK const PinMap PinMap_UART_RX[] = { - {PA_1, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, - {PA_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, - {PA_8, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, - {PA_10, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, - {PA_10_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, - {PA_11, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_UART4)}, - {PB_3, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, - {PB_5, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, - {PB_7, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART)}, - {PB_7_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, - {PB_8, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, - {PB_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, - {PB_12, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, - {PB_15, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)}, - {PC_7, USART6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, - {PC_11, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, - {PC_11_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, - {PD_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, - {PD_2, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, - {PD_6, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, - {PD_9, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, - {PD_14, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, - {PE_0, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, - {PE_2, USART10, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART10)}, - {PE_7, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, - {NC, NP, 0} -}; -#endif - -#ifdef HAL_UART_MODULE_ENABLED -WEAK const PinMap PinMap_UART_RTS[] = { - {PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, - {PA_12, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, - {PA_12_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, - {PA_15, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, - {PB_14, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, - {PB_14_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, - {PC_8, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, - {PD_4, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, - {PD_12, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, - {PD_13, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, - {PD_15, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, - {PE_9, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, - {NC, NP, 0} -}; -#endif - -#ifdef HAL_UART_MODULE_ENABLED -WEAK const PinMap PinMap_UART_CTS[] = { - {PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, - {PA_11, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, - {PA_11_ALT1, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, - {PB_0, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, - {PB_13, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, - {PB_15, UART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, - {PC_9, UART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, - {PD_0, UART9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART9)}, - {PD_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, - {PD_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, - {PD_14, UART8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, - {PE_10, UART7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, - {NC, NP, 0} -}; -#endif - -//*** SPI *** - -#ifdef HAL_SPI_MODULE_ENABLED -WEAK const PinMap PinMap_SPI_MOSI[] = { - {PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, - {PA_7_ALT1, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, - {PB_2, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI3)}, - {PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, - {PB_5_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI3)}, - {PB_5_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, - {PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, - {PC_1, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, - {PC_3_C, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, - {PC_12, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, - {PD_6, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI3)}, - {PD_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, - {PE_6, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, - {PE_14, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, - {NC, NP, 0} -}; -#endif - -#ifdef HAL_SPI_MODULE_ENABLED -WEAK const PinMap PinMap_SPI_MISO[] = { - {PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, - {PA_6_ALT1, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, - {PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, - {PB_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, - {PB_4_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, - {PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, - {PC_2_C, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, - {PC_11, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, - {PE_5, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, - {PE_13, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, - {NC, NP, 0} -}; -#endif - -#ifdef HAL_SPI_MODULE_ENABLED -WEAK const PinMap PinMap_SPI_SCLK[] = { - {PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, - {PA_5_ALT1, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, - {PA_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, - {PA_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, - {PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, - {PB_3_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, - {PB_3_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, - {PB_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, - {PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, - {PC_10, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, - {PC_12, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI6)}, - {PD_3, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, - {PE_2, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, - {PE_12, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, - {NC, NP, 0} -}; -#endif - -#ifdef HAL_SPI_MODULE_ENABLED -WEAK const PinMap PinMap_SPI_SSEL[] = { - {PA_0, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI6)}, - {PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, - {PA_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, - {PA_4_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_SPI6)}, - {PA_11, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, - {PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, - {PA_15_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, - {PA_15_ALT2, SPI6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI6)}, - {PB_4, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_SPI2)}, - {PB_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, - {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, - {PE_4, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, - {PE_11, SPI4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)}, - {NC, NP, 0} -}; -#endif - -//*** FDCAN *** - -#ifdef HAL_FDCAN_MODULE_ENABLED -WEAK const PinMap PinMap_CAN_RD[] = { - {PA_11, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, - {PB_5, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, - {PB_8, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, - {PB_12, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, - {PD_0, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, - {PD_12, FDCAN3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_FDCAN3)}, - {NC, NP, 0} -}; -#endif - -#ifdef HAL_FDCAN_MODULE_ENABLED -WEAK const PinMap PinMap_CAN_TD[] = { - {PA_12, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, - {PB_6, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, - {PB_9, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, - {PB_13, FDCAN2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, - {PD_1, FDCAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, - {PD_13, FDCAN3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_FDCAN3)}, - {NC, NP, 0} -}; -#endif - -//*** ETHERNET *** - -#if defined(HAL_ETH_MODULE_ENABLED) || defined(HAL_ETH_LEGACY_MODULE_ENABLED) -WEAK const PinMap PinMap_Ethernet[] = { - {PA_0, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_CRS - {PA_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_REF_CLK - {PA_1_ALT1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RX_CLK - {PA_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_MDIO - {PA_3, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_COL - {PA_7, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_CRS_DV - {PA_7_ALT1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RX_DV - {PA_9, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_ER - {PB_0, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD2 - {PB_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD3 - {PB_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_ER - {PB_5, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_PPS_OUT - {PB_8, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD3 - {PB_10, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RX_ER - {PB_11, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_EN - {PB_12, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD0 - {PB_13, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD1 - {PC_1, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_MDC - {PC_2_C, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD2 - {PC_3_C, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TX_CLK - {PC_4, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD0 - {PC_5, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_RXD1 - {PE_2, ETH, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_ETH)}, // ETH_TXD3 - {NC, NP, 0} -}; -#endif - -//*** OCTOSPI *** - -#ifdef HAL_OSPI_MODULE_ENABLED -WEAK const PinMap PinMap_OCTOSPI_DATA0[] = { - {PA_2, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 - {PB_1, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 - {PB_12, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 - {PC_3_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 - {PC_9, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 - {PD_11, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO0 - {NC, NP, 0} -}; -#endif - -#ifdef HAL_OSPI_MODULE_ENABLED -WEAK const PinMap PinMap_OCTOSPI_DATA1[] = { - {PB_0, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1 - {PC_10, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1 - {PD_12, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO1 - {NC, NP, 0} -}; -#endif - -#ifdef HAL_OSPI_MODULE_ENABLED -WEAK const PinMap PinMap_OCTOSPI_DATA2[] = { - {PA_3, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 - {PA_7, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 - {PB_13, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 - {PC_2_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 - {PE_2, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO2 - {NC, NP, 0} -}; -#endif - -#ifdef HAL_OSPI_MODULE_ENABLED -WEAK const PinMap PinMap_OCTOSPI_DATA3[] = { - {PA_1, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3 - {PA_6, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3 - {PD_13, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO3 - {NC, NP, 0} -}; -#endif - -#ifdef HAL_OSPI_MODULE_ENABLED -WEAK const PinMap PinMap_OCTOSPI_DATA4[] = { - {PC_1, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4 - {PD_4, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4 - {PE_7, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO4 - {NC, NP, 0} -}; -#endif - -#ifdef HAL_OSPI_MODULE_ENABLED -WEAK const PinMap PinMap_OCTOSPI_DATA5[] = { - {PC_2_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO5 - {PD_5, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO5 - {PE_8, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO5 - {NC, NP, 0} -}; -#endif - -#ifdef HAL_OSPI_MODULE_ENABLED -WEAK const PinMap PinMap_OCTOSPI_DATA6[] = { - {PC_3_C, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6 - {PD_6, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6 - {PE_9, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO6 - {NC, NP, 0} -}; -#endif - -#ifdef HAL_OSPI_MODULE_ENABLED -WEAK const PinMap PinMap_OCTOSPI_DATA7[] = { - {PD_7, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO7 - {PE_10, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_IO7 - {NC, NP, 0} -}; -#endif - -#ifdef HAL_OSPI_MODULE_ENABLED -WEAK const PinMap PinMap_OCTOSPI_SCLK[] = { - {PA_3, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OCTOSPIM_P1)}, // OCTOSPIM_P1_CLK - {PB_2, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_CLK - {NC, NP, 0} -}; -#endif - -#ifdef HAL_OSPI_MODULE_ENABLED -WEAK const PinMap PinMap_OCTOSPI_SSEL[] = { - {PB_6, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS - {PB_10, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS - {PC_11, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS - {PE_11, OCTOSPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_OCTOSPIM_P1)}, // OCTOSPIM_P1_NCS - {NC, NP, 0} -}; -#endif - -//*** USB *** - -#if defined(HAL_PCD_MODULE_ENABLED) || defined(HAL_HCD_MODULE_ENABLED) -WEAK const PinMap PinMap_USB_OTG_HS[] = { -#ifdef USE_USB_HS_IN_FS - {PA_8, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_SOF - {PA_9, USB_OTG_HS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_HS_VBUS - {PA_10, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ID - {PA_11, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF_NONE)}, // USB_OTG_HS_DM - {PA_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF_NONE)}, // USB_OTG_HS_DP -#else - {PA_3, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D0 - {PA_5, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_CK - {PB_0, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D1 - {PB_1, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D2 - {PB_5, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D7 - {PB_10, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D3 - {PB_11, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D4 - {PB_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D5 - {PB_13, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_D6 - {PC_0, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_STP - {PC_2_C, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_DIR - {PC_3_C, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_HS)}, // USB_OTG_HS_ULPI_NXT -#endif /* USE_USB_HS_IN_FS */ - {NC, NP, 0} -}; -#endif - -//*** SD *** - -#ifdef HAL_SD_MODULE_ENABLED -WEAK const PinMap PinMap_SD[] = { - {PA_0, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_SDMMC2)}, // SDMMC2_CMD - {PB_3, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D2 - {PB_4, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D3 - {PB_8, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF7_SDMMC1)}, // SDMMC1_CKIN - {PB_8_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D4 - {PB_8_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D4 - {PB_9, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF7_SDMMC1)}, // SDMMC1_CDIR - {PB_9_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D5 - {PB_9_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D5 - {PB_13, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D0 - {PB_14, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D0 - {PB_15, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_SDMMC2)}, // SDMMC2_D1 - {PC_1, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_SDMMC2)}, // SDMMC2_CK - {PC_4, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_SDMMC2)}, // SDMMC2_CKIN - {PC_6, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SDMMC1)}, // SDMMC1_D0DIR - {PC_6_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D6 - {PC_6_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D6 - {PC_7, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SDMMC1)}, // SDMMC1_D123DIR - {PC_7_ALT1, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D7 - {PC_7_ALT2, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_SDMMC2)}, // SDMMC2_D7 - {PC_8, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D0 - {PC_9, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D1 - {PC_10, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D2 - {PC_11, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_SDMMC1)}, // SDMMC1_D3 - {PC_12, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_SDMMC1)}, // SDMMC1_CK - {PD_2, SDMMC1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_SDMMC1)}, // SDMMC1_CMD - {PD_6, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF11_SDMMC2)}, // SDMMC2_CK - {PD_7, SDMMC2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF11_SDMMC2)}, // SDMMC2_CMD - {NC, NP, 0} -}; -#endif - -#endif /* !CUSTOM_PERIPHERAL_PINS */ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723VE/PinNamesVar.h b/buildroot/share/PlatformIO/variants/MARLIN_H723VE/PinNamesVar.h deleted file mode 100644 index 3bd0ed8fcd..0000000000 --- a/buildroot/share/PlatformIO/variants/MARLIN_H723VE/PinNamesVar.h +++ /dev/null @@ -1,108 +0,0 @@ -/* Dual pad pin name */ -PC_2_C = PC_2 | PDUAL, -PC_3_C = PC_3 | PDUAL, - -/* Alternate pin name */ -PA_0_ALT1 = PA_0 | ALT1, -PA_1_ALT1 = PA_1 | ALT1, -PA_1_ALT2 = PA_1 | ALT2, -PA_2_ALT1 = PA_2 | ALT1, -PA_2_ALT2 = PA_2 | ALT2, -PA_3_ALT1 = PA_3 | ALT1, -PA_3_ALT2 = PA_3 | ALT2, -PA_4_ALT1 = PA_4 | ALT1, -PA_4_ALT2 = PA_4 | ALT2, -PA_5_ALT1 = PA_5 | ALT1, -PA_6_ALT1 = PA_6 | ALT1, -PA_7_ALT1 = PA_7 | ALT1, -PA_7_ALT2 = PA_7 | ALT2, -PA_7_ALT3 = PA_7 | ALT3, -PA_8_ALT1 = PA_8 | ALT1, -PA_9_ALT1 = PA_9 | ALT1, -PA_10_ALT1 = PA_10 | ALT1, -PA_11_ALT1 = PA_11 | ALT1, -PA_12_ALT1 = PA_12 | ALT1, -PA_15_ALT1 = PA_15 | ALT1, -PA_15_ALT2 = PA_15 | ALT2, -PB_0_ALT1 = PB_0 | ALT1, -PB_0_ALT2 = PB_0 | ALT2, -PB_1_ALT1 = PB_1 | ALT1, -PB_1_ALT2 = PB_1 | ALT2, -PB_3_ALT1 = PB_3 | ALT1, -PB_3_ALT2 = PB_3 | ALT2, -PB_4_ALT1 = PB_4 | ALT1, -PB_4_ALT2 = PB_4 | ALT2, -PB_5_ALT1 = PB_5 | ALT1, -PB_5_ALT2 = PB_5 | ALT2, -PB_6_ALT1 = PB_6 | ALT1, -PB_6_ALT2 = PB_6 | ALT2, -PB_7_ALT1 = PB_7 | ALT1, -PB_8_ALT1 = PB_8 | ALT1, -PB_8_ALT2 = PB_8 | ALT2, -PB_9_ALT1 = PB_9 | ALT1, -PB_9_ALT2 = PB_9 | ALT2, -PB_14_ALT1 = PB_14 | ALT1, -PB_14_ALT2 = PB_14 | ALT2, -PB_15_ALT1 = PB_15 | ALT1, -PB_15_ALT2 = PB_15 | ALT2, -PC_0_ALT1 = PC_0 | ALT1, -PC_0_ALT2 = PC_0 | ALT2, -PC_1_ALT1 = PC_1 | ALT1, -PC_1_ALT2 = PC_1 | ALT2, -PC_4_ALT1 = PC_4 | ALT1, -PC_5_ALT1 = PC_5 | ALT1, -PC_6_ALT1 = PC_6 | ALT1, -PC_6_ALT2 = PC_6 | ALT2, -PC_7_ALT1 = PC_7 | ALT1, -PC_7_ALT2 = PC_7 | ALT2, -PC_8_ALT1 = PC_8 | ALT1, -PC_9_ALT1 = PC_9 | ALT1, -PC_10_ALT1 = PC_10 | ALT1, -PC_11_ALT1 = PC_11 | ALT1, - -/* SYS_WKUP */ -#ifdef PWR_WAKEUP_PIN1 - SYS_WKUP1 = PA_0, -#endif -#ifdef PWR_WAKEUP_PIN2 - SYS_WKUP2 = PA_2, -#endif -#ifdef PWR_WAKEUP_PIN3 - SYS_WKUP3 = NC, -#endif -#ifdef PWR_WAKEUP_PIN4 - SYS_WKUP4 = PC_13, -#endif -#ifdef PWR_WAKEUP_PIN5 - SYS_WKUP5 = NC, -#endif -#ifdef PWR_WAKEUP_PIN6 - SYS_WKUP6 = PC_1, -#endif -#ifdef PWR_WAKEUP_PIN7 - SYS_WKUP7 = NC, -#endif -#ifdef PWR_WAKEUP_PIN8 - SYS_WKUP8 = NC, -#endif - -/* USB */ -#ifdef USBCON - USB_OTG_HS_DM = PA_11, - USB_OTG_HS_DP = PA_12, - USB_OTG_HS_ID = PA_10, - USB_OTG_HS_SOF = PA_8, - USB_OTG_HS_ULPI_CK = PA_5, - USB_OTG_HS_ULPI_D0 = PA_3, - USB_OTG_HS_ULPI_D1 = PB_0, - USB_OTG_HS_ULPI_D2 = PB_1, - USB_OTG_HS_ULPI_D3 = PB_10, - USB_OTG_HS_ULPI_D4 = PB_11, - USB_OTG_HS_ULPI_D5 = PB_12, - USB_OTG_HS_ULPI_D6 = PB_13, - USB_OTG_HS_ULPI_D7 = PB_5, - USB_OTG_HS_ULPI_DIR = PC_2_C, - USB_OTG_HS_ULPI_NXT = PC_3_C, - USB_OTG_HS_ULPI_STP = PC_0, - USB_OTG_HS_VBUS = PA_9, -#endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723VE/ldscript.ld b/buildroot/share/PlatformIO/variants/MARLIN_H723VE/ldscript.ld deleted file mode 100644 index 6322861033..0000000000 --- a/buildroot/share/PlatformIO/variants/MARLIN_H723VE/ldscript.ld +++ /dev/null @@ -1,174 +0,0 @@ -/* -****************************************************************************** -** -** File : LinkerScript.ld -** -** Author : STM32CubeIDE -** -** Abstract : Linker script for STM32H7 series -** 512Kbytes FLASH and 560Kbytes RAM -** -** Set heap size, stack size and stack location according -** to application requirements. -** -** Set memory bank area and size if external memory is used. -** -** Target : STMicroelectronics STM32 -** -** Distribution: The file is distributed as is, without any warranty -** of any kind. -** -***************************************************************************** -** @attention -** -** Copyright (c) 2022 STMicroelectronics. -** All rights reserved. -** -** This software is licensed under terms that can be found in the LICENSE file -** in the root directory of this software component. -** If no LICENSE file comes with this software, it is provided AS-IS. -** -**************************************************************************** -*/ - -/* Entry Point */ -ENTRY(Reset_Handler) - -/* Highest address of the user mode stack */ -_estack = ORIGIN(RAM_D1) + LENGTH(RAM_D1); /* end of RAM */ -/* Generate a link error if heap and stack don't fit into RAM */ -_Min_Heap_Size = 0x200 ; /* required amount of heap */ -_Min_Stack_Size = 0x400 ; /* required amount of stack */ - -/* Specify the memory areas */ -MEMORY -{ - ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K - DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K - FLASH (rx) : ORIGIN = 0x8000000 + LD_FLASH_OFFSET, LENGTH = LD_MAX_SIZE - LD_FLASH_OFFSET - RAM_D1 (xrw) : ORIGIN = 0x24000000, LENGTH = 320K - RAM_D2 (xrw) : ORIGIN = 0x30000000, LENGTH = 32K - RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 16K -} - -/* Define output sections */ -SECTIONS -{ - /* The startup code goes first into FLASH */ - .isr_vector : - { - . = ALIGN(4); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } >FLASH - - /* The program code and other data goes into FLASH */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } >FLASH - - /* Constant data goes into FLASH */ - .rodata : - { - . = ALIGN(4); - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - . = ALIGN(4); - } >FLASH - - .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH - .ARM : { - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - } >FLASH - - .preinit_array : - { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } >FLASH - - .init_array : - { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - } >FLASH - - .fini_array : - { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - } >FLASH - - /* used by the startup to initialize data */ - _sidata = LOADADDR(.data); - - /* Initialized data sections goes into RAM, load LMA copy after code */ - .data : - { - . = ALIGN(4); - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - *(.RamFunc) /* .RamFunc sections */ - *(.RamFunc*) /* .RamFunc* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - } >RAM_D1 AT> FLASH - - /* Uninitialized data section */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss section */ - _sbss = .; /* define a global symbol at bss start */ - __bss_start__ = _sbss; - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = _ebss; - } >RAM_D1 - - /* User_heap_stack section, used to check that there is enough RAM left */ - ._user_heap_stack : - { - . = ALIGN(8); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - . = . + _Min_Heap_Size; - . = . + _Min_Stack_Size; - . = ALIGN(8); - } >RAM_D1 - - /* Remove information from the standard libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - .ARM.attributes 0 : { *(.ARM.attributes) } -} diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723VE/variant_MARLIN_STM32H723VE.cpp b/buildroot/share/PlatformIO/variants/MARLIN_H723VE/variant_MARLIN_STM32H723VE.cpp deleted file mode 100644 index bfeb0f9abc..0000000000 --- a/buildroot/share/PlatformIO/variants/MARLIN_H723VE/variant_MARLIN_STM32H723VE.cpp +++ /dev/null @@ -1,273 +0,0 @@ -/* - ******************************************************************************* - * Copyright (c) 2020-2021, STMicroelectronics - * All rights reserved. - * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ******************************************************************************* - */ -#ifdef STM32H723xx -#include "pins_arduino.h" - -// Digital PinName array -const PinName digitalPin[] = { - PA_0, // D0/A0 - PA_1, // D1/A1 - PA_2, // D2/A2 - PA_3, // D3/A3 - PA_4, // D4/A4 - PA_5, // D5/A5 - PA_6, // D6/A6 - PA_7, // D7/A7 - PA_8, // D8 - PA_9, // D9 - PA_10, // D10 - PA_11, // D11 - PA_12, // D12 - PA_13, // D13 - PA_14, // D14 - PA_15, // D15 - PB_0, // D16/A8 - PB_1, // D17/A9 - PB_2, // D18 - PB_3, // D19 - PB_4, // D20 - PB_5, // D21 - PB_6, // D22 - PB_7, // D23 - PB_8, // D24 - PB_9, // D25 - PB_10, // D26 - PB_11, // D27 - PB_12, // D28 - PB_13, // D29 - PB_14, // D30 - PB_15, // D31 - PC_0, // D32/A10 - PC_1, // D33/A11 - PC_4, // D34/A12 - PC_5, // D35/A13 - PC_6, // D36 - PC_7, // D37 - PC_8, // D38 - PC_9, // D39 - PC_10, // D40 - PC_11, // D41 - PC_12, // D42 - PC_13, // D43 - PC_14, // D44 - PC_15, // D45 - PD_0, // D46 - PD_1, // D47 - PD_2, // D48 - PD_3, // D49 - PD_4, // D50 - PD_5, // D51 - PD_6, // D52 - PD_7, // D53 - PD_8, // D54 - PD_9, // D55 - PD_10, // D56 - PD_11, // D57 - PD_12, // D58 - PD_13, // D59 - PD_14, // D60 - PD_15, // D61 - PE_0, // D62 - PE_1, // D63 - PE_2, // D64 - PE_3, // D65 - PE_4, // D66 - PE_5, // D67 - PE_6, // D68 - PE_7, // D69 - PE_8, // D70 - PE_9, // D71 - PE_10, // D72 - PE_11, // D73 - PE_12, // D74 - PE_13, // D75 - PE_14, // D76 - PE_15, // D77 - PH_0, // D78 - PH_1, // D79 - PC_2_C, // D80/A14 - PC_3_C // D81/A15 -}; - -// Analog (Ax) pin number array -const uint32_t analogInputPin[] = { - 0, // A0, PA0 - 1, // A1, PA1 - 2, // A2, PA2 - 3, // A3, PA3 - 4, // A4, PA4 - 5, // A5, PA5 - 6, // A6, PA6 - 7, // A7, PA7 - 16, // A8, PB0 - 17, // A9, PB1 - 32, // A10, PC0 - 33, // A11, PC1 - 34, // A12, PC4 - 35, // A13, PC5 - 80, // A14, PC2_C - 81 // A15, PC3_C -}; - -void MPU_Config(void) -{ - MPU_Region_InitTypeDef MPU_InitStruct = {0}; - - /* Disables the MPU */ - HAL_MPU_Disable(); - - /** Initializes and configures the Region and the memory to be protected - */ - MPU_InitStruct.Enable = MPU_REGION_ENABLE; - MPU_InitStruct.Number = MPU_REGION_NUMBER0; - MPU_InitStruct.BaseAddress = 0x0; - MPU_InitStruct.Size = MPU_REGION_SIZE_4GB; - MPU_InitStruct.SubRegionDisable = 0x87; - MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; - MPU_InitStruct.AccessPermission = MPU_REGION_NO_ACCESS; - MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE; - MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE; - MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE; - MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; - - HAL_MPU_ConfigRegion(&MPU_InitStruct); - /* Enables the MPU */ - HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT); - -} - -/* - * @brief System Clock Configuration - * @param None - * @retval None - */ -WEAK void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {}; - - MPU_Config(); - - /** Supply configuration update enable - */ - HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY); - /** Configure the main internal regulator output voltage - */ - __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0); - - while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {} - /** Initializes the RCC Oscillators according to the specified parameters - * in the RCC_OscInitTypeDef structure. - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48 | RCC_OSCILLATORTYPE_HSE; - RCC_OscInitStruct.HSEState = RCC_HSE_ON; - RCC_OscInitStruct.HSI48State = RCC_HSI48_ON; // 48Mhz for USB - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLM = 5; // 25Mhz / 5 = 5Mhz - RCC_OscInitStruct.PLL.PLLN = 110; // 25Mhz / 5 * 110 = 550Mhz - RCC_OscInitStruct.PLL.PLLP = 1; // 550Mhz / 1 = 550Mhz - RCC_OscInitStruct.PLL.PLLQ = 10; // 550Mhz / 10 = 55Mhz - RCC_OscInitStruct.PLL.PLLR = 10; // unused - RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2; - RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE; - RCC_OscInitStruct.PLL.PLLFRACN = 0; - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - { - Error_Handler(); - } - /** Initializes the CPU, AHB and APB buses clocks - */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2 - |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1; - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2; - RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2; - RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2; - RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2; - RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2; - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) - { - Error_Handler(); - } - - PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB - | RCC_PERIPHCLK_SDMMC | RCC_PERIPHCLK_ADC - | RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_USART16 - | RCC_PERIPHCLK_USART234578 | RCC_PERIPHCLK_I2C123 - | RCC_PERIPHCLK_I2C4 | RCC_PERIPHCLK_SPI123 - | RCC_PERIPHCLK_SPI45 | RCC_PERIPHCLK_SPI6; - - /* HSI48 used for USB 48 Mhz */ - /* PLL1 qclk also used for FMC, SDMMC, RNG, SAI */ - /* PLL2 pclk is needed for adc max 80 Mhz (p,q,r same) */ - /* PLL2 pclk also used for LP timers 2,3,4,5, SPI 1,2,3 */ - /* PLL2 qclk is needed for uart, can, spi4,5,6 80 Mhz */ - /* PLL3 r clk is needed for i2c 80 Mhz (p,q,r same) */ - PeriphClkInitStruct.PLL2.PLL2M = 15; // M DIV 15 vco 25 / 15 ~ 1.667 Mhz - PeriphClkInitStruct.PLL2.PLL2N = 96; // N MUL 96 - PeriphClkInitStruct.PLL2.PLL2P = 2; // P div 2 - PeriphClkInitStruct.PLL2.PLL2Q = 2; // Q div 2 - PeriphClkInitStruct.PLL2.PLL2R = 2; // R div 2 - // RCC_PLL1VCIRANGE_0 Clock range frequency between 1 and 2 MHz - PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_0; - PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOMEDIUM; - PeriphClkInitStruct.PLL2.PLL2FRACN = 0; - PeriphClkInitStruct.PLL3.PLL3M = 15; // M DIV 15 vco 25 / 15 ~ 1.667 Mhz - PeriphClkInitStruct.PLL3.PLL3N = 96; // N MUL 96 - PeriphClkInitStruct.PLL3.PLL3P = 2; // P div 2 - PeriphClkInitStruct.PLL3.PLL3Q = 2; // Q div 2 - PeriphClkInitStruct.PLL3.PLL3R = 2; // R div 2 - // RCC_PLL1VCIRANGE_0 Clock range frequency between 1 and 2 MHz - PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3VCIRANGE_0; - PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3VCOMEDIUM; - PeriphClkInitStruct.PLL3.PLL3FRACN = 0; - // ADC from PLL2 pclk - PeriphClkInitStruct.AdcClockSelection = RCC_ADCCLKSOURCE_PLL2; - // USB from HSI48 - PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48; - // SDMMC from PLL1 qclk - PeriphClkInitStruct.SdmmcClockSelection = 0; - //PeriphClkInitStruct.SdmmcClockSelection = RCC_SDMMCCLKSOURCE_PLL; - // LPUART from PLL2 qclk - PeriphClkInitStruct.Lpuart1ClockSelection = 0; - //PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PLL2; - // USART from PLL2 qclk - PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_PLL2; - // USART from PLL2 qclk - PeriphClkInitStruct.Usart234578ClockSelection = 0; - //PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_PLL2; - // I2C123 from PLL3 rclk - PeriphClkInitStruct.I2c123ClockSelection = RCC_I2C123CLKSOURCE_PLL3; - // I2C4 from PLL3 rclk - PeriphClkInitStruct.I2c4ClockSelection = 0; - //PeriphClkInitStruct.I2c4ClockSelection = RCC_I2C4CLKSOURCE_PLL3; - // SPI123 from PLL2 pclk - PeriphClkInitStruct.Spi123ClockSelection = RCC_SPI123CLKSOURCE_PLL2; - // SPI45 from PLL2 qclk - PeriphClkInitStruct.Spi45ClockSelection = 0; - //PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_PLL2; - // SPI6 from PLL2 qclk - PeriphClkInitStruct.Spi6ClockSelection = 0; - //PeriphClkInitStruct.Spi6ClockSelection = RCC_SPI6CLKSOURCE_PLL2; - - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { - Error_Handler(); - } -} - -#endif /* ARDUINO_GENERIC_* */ diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723VE/variant_MARLIN_STM32H723VE.h b/buildroot/share/PlatformIO/variants/MARLIN_H723VE/variant_MARLIN_STM32H723VE.h deleted file mode 100644 index 8b67905680..0000000000 --- a/buildroot/share/PlatformIO/variants/MARLIN_H723VE/variant_MARLIN_STM32H723VE.h +++ /dev/null @@ -1,269 +0,0 @@ -/* - ******************************************************************************* - * Copyright (c) 2020, STMicroelectronics - * All rights reserved. - * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ******************************************************************************* - */ -#pragma once - -/*---------------------------------------------------------------------------- - * STM32 pins number - *----------------------------------------------------------------------------*/ -#define PA0 PIN_A0 -#define PA1 PIN_A1 -#define PA2 PIN_A2 -#define PA3 PIN_A3 -#define PA4 PIN_A4 -#define PA5 PIN_A5 -#define PA6 PIN_A6 -#define PA7 PIN_A7 -#define PA8 8 -#define PA9 9 -#define PA10 10 -#define PA11 11 -#define PA12 12 -#define PA13 13 -#define PA14 14 -#define PA15 15 -#define PB0 PIN_A8 -#define PB1 PIN_A9 -#define PB2 18 -#define PB3 19 -#define PB4 20 -#define PB5 21 -#define PB6 22 -#define PB7 23 -#define PB8 24 -#define PB9 25 -#define PB10 26 -#define PB11 27 -#define PB12 28 -#define PB13 29 -#define PB14 30 -#define PB15 31 -#define PC0 PIN_A10 -#define PC1 PIN_A11 -#define PC4 PIN_A12 -#define PC5 PIN_A13 -#define PC6 36 -#define PC7 37 -#define PC8 38 -#define PC9 39 -#define PC10 40 -#define PC11 41 -#define PC12 42 -#define PC13 43 -#define PC14 44 -#define PC15 45 -#define PD0 46 -#define PD1 47 -#define PD2 48 -#define PD3 49 -#define PD4 50 -#define PD5 51 -#define PD6 52 -#define PD7 53 -#define PD8 54 -#define PD9 55 -#define PD10 56 -#define PD11 57 -#define PD12 58 -#define PD13 59 -#define PD14 60 -#define PD15 61 -#define PE0 62 -#define PE1 63 -#define PE2 64 -#define PE3 65 -#define PE4 66 -#define PE5 67 -#define PE6 68 -#define PE7 69 -#define PE8 70 -#define PE9 71 -#define PE10 72 -#define PE11 73 -#define PE12 74 -#define PE13 75 -#define PE14 76 -#define PE15 77 -#define PH0 78 -#define PH1 79 -#define PC2_C PIN_A14 -#define PC3_C PIN_A15 -#define PC2 PC2_C -#define PC3 PC3_C - -// Alternate pins number -#define PA0_ALT1 (PA0 | ALT1) -#define PA1_ALT1 (PA1 | ALT1) -#define PA1_ALT2 (PA1 | ALT2) -#define PA2_ALT1 (PA2 | ALT1) -#define PA2_ALT2 (PA2 | ALT2) -#define PA3_ALT1 (PA3 | ALT1) -#define PA3_ALT2 (PA3 | ALT2) -#define PA4_ALT1 (PA4 | ALT1) -#define PA4_ALT2 (PA4 | ALT2) -#define PA5_ALT1 (PA5 | ALT1) -#define PA6_ALT1 (PA6 | ALT1) -#define PA7_ALT1 (PA7 | ALT1) -#define PA7_ALT2 (PA7 | ALT2) -#define PA7_ALT3 (PA7 | ALT3) -#define PA8_ALT1 (PA8 | ALT1) -#define PA9_ALT1 (PA9 | ALT1) -#define PA10_ALT1 (PA10 | ALT1) -#define PA11_ALT1 (PA11 | ALT1) -#define PA12_ALT1 (PA12 | ALT1) -#define PA15_ALT1 (PA15 | ALT1) -#define PA15_ALT2 (PA15 | ALT2) -#define PB0_ALT1 (PB0 | ALT1) -#define PB0_ALT2 (PB0 | ALT2) -#define PB1_ALT1 (PB1 | ALT1) -#define PB1_ALT2 (PB1 | ALT2) -#define PB3_ALT1 (PB3 | ALT1) -#define PB3_ALT2 (PB3 | ALT2) -#define PB4_ALT1 (PB4 | ALT1) -#define PB4_ALT2 (PB4 | ALT2) -#define PB5_ALT1 (PB5 | ALT1) -#define PB5_ALT2 (PB5 | ALT2) -#define PB6_ALT1 (PB6 | ALT1) -#define PB6_ALT2 (PB6 | ALT2) -#define PB7_ALT1 (PB7 | ALT1) -#define PB8_ALT1 (PB8 | ALT1) -#define PB8_ALT2 (PB8 | ALT2) -#define PB9_ALT1 (PB9 | ALT1) -#define PB9_ALT2 (PB9 | ALT2) -#define PB14_ALT1 (PB14 | ALT1) -#define PB14_ALT2 (PB14 | ALT2) -#define PB15_ALT1 (PB15 | ALT1) -#define PB15_ALT2 (PB15 | ALT2) -#define PC0_ALT1 (PC0 | ALT1) -#define PC0_ALT2 (PC0 | ALT2) -#define PC1_ALT1 (PC1 | ALT1) -#define PC1_ALT2 (PC1 | ALT2) -#define PC4_ALT1 (PC4 | ALT1) -#define PC5_ALT1 (PC5 | ALT1) -#define PC6_ALT1 (PC6 | ALT1) -#define PC6_ALT2 (PC6 | ALT2) -#define PC7_ALT1 (PC7 | ALT1) -#define PC7_ALT2 (PC7 | ALT2) -#define PC8_ALT1 (PC8 | ALT1) -#define PC9_ALT1 (PC9 | ALT1) -#define PC10_ALT1 (PC10 | ALT1) -#define PC11_ALT1 (PC11 | ALT1) - -#define NUM_DIGITAL_PINS 82 -#define NUM_DUALPAD_PINS 2 -#define NUM_ANALOG_INPUTS 16 - -// On-board LED pin number -#ifndef LED_BUILTIN - #define LED_BUILTIN PNUM_NOT_DEFINED -#endif - -// On-board user button -#ifndef USER_BTN - #define USER_BTN PNUM_NOT_DEFINED -#endif - -// SPI definitions -#ifndef PIN_SPI_SS - #define PIN_SPI_SS PA4 -#endif -#ifndef PIN_SPI_SS1 - #define PIN_SPI_SS1 PA15 -#endif -#ifndef PIN_SPI_SS2 - #define PIN_SPI_SS2 PNUM_NOT_DEFINED -#endif -#ifndef PIN_SPI_SS3 - #define PIN_SPI_SS3 PNUM_NOT_DEFINED -#endif -#ifndef PIN_SPI_MOSI - #define PIN_SPI_MOSI PA7 -#endif -#ifndef PIN_SPI_MISO - #define PIN_SPI_MISO PA6 -#endif -#ifndef PIN_SPI_SCK - #define PIN_SPI_SCK PA5 -#endif - -// I2C definitions -#ifndef PIN_WIRE_SDA - #define PIN_WIRE_SDA PB7 -#endif -#ifndef PIN_WIRE_SCL - #define PIN_WIRE_SCL PB6 -#endif - -// Timer Definitions -// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin -#ifndef TIMER_TONE - #define TIMER_TONE TIM6 -#endif -#ifndef TIMER_SERVO - #define TIMER_SERVO TIM7 -#endif - -// UART Definitions -#ifndef SERIAL_UART_INSTANCE - #define SERIAL_UART_INSTANCE 4 -#endif - -// Default pin used for generic 'Serial' instance -// Mandatory for Firmata -#ifndef PIN_SERIAL_RX - #define PIN_SERIAL_RX PA1 -#endif -#ifndef PIN_SERIAL_TX - #define PIN_SERIAL_TX PA0 -#endif - -// Extra HAL modules -#if !defined(HAL_DAC_MODULE_DISABLED) - #define HAL_DAC_MODULE_ENABLED -#endif -#if !defined(HAL_ETH_MODULE_DISABLED) - #define HAL_ETH_MODULE_ENABLED -#endif -#if !defined(HAL_OSPI_MODULE_DISABLED) - #define HAL_OSPI_MODULE_ENABLED -#endif -#if !defined(HAL_SD_MODULE_DISABLED) - #define HAL_SD_MODULE_ENABLED -#endif - -/*---------------------------------------------------------------------------- - * Arduino objects - C++ only - *----------------------------------------------------------------------------*/ - -#ifdef __cplusplus - // These serial port names are intended to allow libraries and architecture-neutral - // sketches to automatically default to the correct port name for a particular type - // of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, - // the first hardware serial port whose RX/TX pins are not dedicated to another use. - // - // SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor - // - // SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial - // - // SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library - // - // SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. - // - // SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX - // pins are NOT connected to anything by default. - #ifndef SERIAL_PORT_MONITOR - #define SERIAL_PORT_MONITOR Serial - #endif - #ifndef SERIAL_PORT_HARDWARE - #define SERIAL_PORT_HARDWARE Serial - #endif -#endif diff --git a/ini/renamed.ini b/ini/renamed.ini index 99fbde95d0..9d2706e3b3 100644 --- a/ini/renamed.ini +++ b/ini/renamed.ini @@ -72,5 +72,11 @@ extends = renamed [env:BIGTREE_OCTOPUS_V1_F407_USB] ;=> STM32F407ZE_btt_USB extends = renamed -[env:STM32H723Vx_btt] ;=> STM32H723VE_btt or STM32H723VG_btt +[env:STM32H723Vx_btt] ;=> STM32H723VG_btt +extends = renamed + +[env:STM32H723Zx_btt] ;=> STM32H723ZE_btt +extends = renamed + +[env:STM32H743Vx_btt] ;=> STM32H743VI_btt extends = renamed diff --git a/ini/stm32h7.ini b/ini/stm32h7.ini index 5485e57e91..73d3b8779b 100644 --- a/ini/stm32h7.ini +++ b/ini/stm32h7.ini @@ -13,7 +13,7 @@ # 7 : Cortex M7 core (0:M0, 1-2:M3, 3-4:M4, 7:M7) # 43 : Line/Features # I : 176 pins (T:36, C:48 or 49, M:81, V:100, Z:144, I:176) -# I : 2048KB Flash-memory (C:256KB, D:384KB, E:512KB, G:1024KB) +# I : 2048KB Flash-memory (C:256KB, D:384KB, E:512KB, G:1024KB, I:2048KB) # T : LQFP package # 6 : -40...85°C (7: ...105°C) # @@ -40,13 +40,12 @@ upload_protocol = cmsis-dap debug_tool = cmsis-dap # -# BigTreeTech SKR V3.0 / V3.0 EZ (STM32H743VIT6 ARM Cortex-M7) +# BigTreeTech STM32H743Vx ARM Cortex-M7 Common # -[env:STM32H743Vx_btt] +[STM32H743Vx_btt] extends = stm32_variant platform = ststm32@15.4.1 platform_packages = framework-arduinoststm32@~4.20200.220530 -board = marlin_STM32H743Vx board_build.offset = 0x20000 board_upload.offset_address = 0x08020000 build_flags = ${stm32_variant.build_flags} @@ -60,6 +59,13 @@ build_flags = ${stm32_variant.build_flags} upload_protocol = cmsis-dap debug_tool = cmsis-dap +# +# BigTreeTech SKR V3.0 / V3.0 EZ (STM32H743VIT6 ARM Cortex-M7) +# +[env:STM32H743VI_btt] +extends = STM32H743Vx_btt +board = marlin_STM32H743VI + # # BigTreeTech STM32H723Vx ARM Cortex-M7 Common # @@ -85,13 +91,6 @@ build_flags = ${stm32_variant.build_flags} upload_protocol = cmsis-dap debug_tool = cmsis-dap -# -# BigTreeTech Octopus Max EZ V1.0 (STM32H723VET6 ARM Cortex-M7) -# -[env:STM32H723VE_btt] -extends = STM32H723Vx_btt -board = marlin_STM32H723VE - # # BigTreeTech SKR V3.0 / SKR V3.0 EZ (STM32H723VGT6 ARM Cortex-M7) # @@ -100,13 +99,12 @@ extends = STM32H723Vx_btt board = marlin_STM32H723VG # -# BigTreeTech Octopus Pro V1.0 / Octopus Max EZ V1.0 (STM32H723ZET6 ARM Cortex-M7) +# BigTreeTech STM32H723Zx ARM Cortex-M7 Common # -[env:STM32H723Zx_btt] +[STM32H723Zx_btt] extends = stm32_variant platform = ststm32@15.4.1 platform_packages = framework-arduinoststm32@~4.20200.220530 -board = marlin_STM32H723Zx board_build.offset = 0x20000 board_upload.offset_address = 0x08020000 build_flags = ${stm32_variant.build_flags} @@ -124,3 +122,10 @@ build_flags = ${stm32_variant.build_flags} -UI2C5_BASE upload_protocol = cmsis-dap debug_tool = cmsis-dap + +# +# BigTreeTech Octopus Pro V1.0 / Octopus Max EZ V1.0 (STM32H723ZET6 ARM Cortex-M7) +# +[env:STM32H723ZE_btt] +extends = STM32H723Zx_btt +board = marlin_STM32H723ZE From 9360e13cdd1e21799eb3aedcd23015469da6798d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 7 Jun 2023 22:37:16 -0500 Subject: [PATCH 530/659] =?UTF-8?q?=F0=9F=9A=B8=20General=20TFT=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/tft/ui_1024x600.cpp | 123 ++++++------ Marlin/src/lcd/tft/ui_320x240.cpp | 190 ++++++++++--------- Marlin/src/lcd/tft/ui_480x320.cpp | 107 ++++++----- Marlin/src/lcd/tft/ui_480x320.h | 2 +- Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h | 2 +- 5 files changed, 230 insertions(+), 194 deletions(-) diff --git a/Marlin/src/lcd/tft/ui_1024x600.cpp b/Marlin/src/lcd/tft/ui_1024x600.cpp index e43ccf7450..8780cd013e 100644 --- a/Marlin/src/lcd/tft/ui_1024x600.cpp +++ b/Marlin/src/lcd/tft/ui_1024x600.cpp @@ -265,7 +265,7 @@ void MarlinUI::draw_status_screen() { if (TERN0(LCD_SHOW_E_TOTAL, printingIsActive())) { #if ENABLED(LCD_SHOW_E_TOTAL) - tft.add_text(200, 3, COLOR_AXIS_HOMED , "E"); + tft.add_text(200, 3, COLOR_AXIS_HOMED, "E"); const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm tft_string.set(ftostr4sign(e_move_accumulator / escale)); tft_string.add(escale == 10 ? 'c' : 'm'); @@ -275,7 +275,7 @@ void MarlinUI::draw_status_screen() { } else { #if HAS_X_AXIS - tft.add_text(200, 3, COLOR_AXIS_HOMED , "X"); + tft.add_text(200, 3, COLOR_AXIS_HOMED, "X"); const bool nhx = axis_should_home(X_AXIS); if (blink && nhx) tft_string.set('?'); @@ -285,7 +285,7 @@ void MarlinUI::draw_status_screen() { #endif #if HAS_Y_AXIS - tft.add_text(500, 3, COLOR_AXIS_HOMED , "Y"); + tft.add_text(500, 3, COLOR_AXIS_HOMED, "Y"); const bool nhy = axis_should_home(Y_AXIS); if (blink && nhy) tft_string.set('?'); @@ -296,7 +296,7 @@ void MarlinUI::draw_status_screen() { } #if HAS_Z_AXIS - tft.add_text(800, 3, COLOR_AXIS_HOMED , "Z"); + tft.add_text(800, 3, COLOR_AXIS_HOMED, "Z"); uint16_t offset = 32; const bool nhz = axis_should_home(Z_AXIS); if (blink && nhz) @@ -323,7 +323,7 @@ void MarlinUI::draw_status_screen() { tft.add_image(0, 0, imgFeedRate, color); tft_string.set(i16tostr3rj(feedrate_percentage)); tft_string.add('%'); - tft.add_text(36, 1, color , tft_string); + tft.add_text(36, 1, color, tft_string); TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, 274, y, 128, 32)); // Flow rate @@ -334,7 +334,7 @@ void MarlinUI::draw_status_screen() { tft.add_image(0, 0, imgFlowRate, color); tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); tft_string.add('%'); - tft.add_text(36, 1, color , tft_string); + tft.add_text(36, 1, color, tft_string); TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, 650, y, 128, 32, active_extruder)); #endif @@ -495,7 +495,7 @@ void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, con #if ENABLED(TOUCH_SCREEN) touch.clear(); draw_menu_navigation = false; - touch.add_control(RESUME_CONTINUE , 0, 0, TFT_WIDTH, TFT_HEIGHT); + touch.add_control(RESUME_CONTINUE, 0, 0, TFT_WIDTH, TFT_HEIGHT); #endif menu_line(row); @@ -654,8 +654,10 @@ static void drawCurStepValue() { tft_string.set(F("Offset")); tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + 34, tft_string.width(), 34); tft.set_background(COLOR_BACKGROUND); - if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) - tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + #if HAS_BED_PROBE + if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) + tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + #endif } #endif @@ -664,7 +666,7 @@ static void drawCurStepValue() { tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); tft.set_background(COLOR_BACKGROUND); tft_string.set('E'); - tft.add_text(0, 0, E_BTN_COLOR , tft_string); + tft.add_text(0, 0, E_BTN_COLOR, tft_string); tft.add_text(tft_string.width(), 0, E_BTN_COLOR, ui8tostr3rj(motionAxisState.e_selection)); } #endif @@ -717,7 +719,8 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { const float diff = motionAxisState.currentStepSize * direction; - #if HAS_Z_AXIS + #if HAS_BED_PROBE + if (axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { #if ENABLED(BABYSTEP_ZPROBE_OFFSET) const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z; @@ -740,7 +743,7 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { else drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - #elif HAS_BED_PROBE + #else // only change probe.offset.z probe.offset.z += diff; if (direction < 0 && current_position[axis] < Z_PROBE_OFFSET_RANGE_MIN) { @@ -758,7 +761,8 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { #endif return; } - #endif // HAS_Z_AXIS + + #endif // HAS_BED_PROBE if (!ui.manual_move.processing) { // Get motion limit from software endstops, if any @@ -852,8 +856,8 @@ static void disable_steppers() { } static void drawBtn(int x, int y, const char *label, intptr_t data, MarlinImage img, uint16_t bgColor, bool enabled = true) { - uint16_t width = Images[imgBtn52Rounded].width, - height = Images[imgBtn52Rounded].height; + const uint16_t width = Images[imgBtn52Rounded].width, + height = Images[imgBtn52Rounded].height; if (!enabled) bgColor = COLOR_CONTROL_DISABLED; @@ -887,8 +891,9 @@ void MarlinUI::move_axis_screen() { const bool busy = printingIsActive(); // Babysteps during printing? Select babystep for Z probe offset - if (busy && ENABLED(BABYSTEP_ZPROBE_OFFSET)) - motionAxisState.z_selection = Z_SELECTION_Z_PROBE; + #if ENABLED(BABYSTEP_ZPROBE_OFFSET) + if (busy) motionAxisState.z_selection = Z_SELECTION_Z_PROBE; + #endif // ROW 1 -> E- Y- CurY Z+ int x = X_MARGIN, y = Y_MARGIN, spacing = 0; @@ -897,13 +902,16 @@ void MarlinUI::move_axis_screen() { spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; x += BTN_WIDTH + spacing; - drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy); + + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy)); + + x += BTN_WIDTH; // Cur Y - x += BTN_WIDTH; - motionAxisState.yValuePos.x = x + 2; - motionAxisState.yValuePos.y = y; - drawAxisValue(Y_AXIS); + #if HAS_Y_AXIS + motionAxisState.yValuePos.set(x + 2, y); + drawAxisValue(Y_AXIS); + #endif x += spacing; #if HAS_Z_AXIS @@ -915,27 +923,34 @@ void MarlinUI::move_axis_screen() { x = X_MARGIN; spacing = (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; - motionAxisState.eNamePos.x = x; - motionAxisState.eNamePos.y = y; #if HAS_EXTRUDERS + motionAxisState.eNamePos.set(x, y); drawCurESelection(); TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); #endif x += BTN_WIDTH + spacing; - drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy); + + TERN_(HAS_X_AXIS, drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy)); x += BTN_WIDTH + spacing; //imgHome is 64x64 - TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); + + #if ALL(HAS_X_AXIS, TOUCH_SCREEN) + add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy); + #endif x += BTN_WIDTH + spacing; uint16_t xplus_x = x; - drawBtn(x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy); + + TERN_(HAS_X_AXIS, drawBtn(x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy)); x += BTN_WIDTH + spacing; - motionAxisState.zTypePos.x = x; - motionAxisState.zTypePos.y = y; - TERN_(HAS_Z_AXIS, drawCurZSelection()); + + #if HAS_Z_AXIS + motionAxisState.zTypePos.set(x, y); + drawCurZSelection(); + #endif + #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); #endif @@ -945,39 +960,35 @@ void MarlinUI::move_axis_screen() { x = X_MARGIN; spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; - TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy)); - - // Cur E - motionAxisState.eValuePos.x = x; - motionAxisState.eValuePos.y = y + BTN_HEIGHT + 2; - TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); - - // Cur X - motionAxisState.xValuePos.x = BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; //X- pos - motionAxisState.xValuePos.y = y - 10; - drawAxisValue(X_AXIS); - - x += BTN_WIDTH + spacing; - drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy); - - x += BTN_WIDTH + spacing; - #if HAS_Z_AXIS - drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #if HAS_EXTRUDERS + drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); + motionAxisState.eValuePos.set(x, y + BTN_HEIGHT + 2); + TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); #endif - // Cur Z - motionAxisState.zValuePos.x = x; - motionAxisState.zValuePos.y = y + BTN_HEIGHT + 2; - TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); + #if HAS_X_AXIS + motionAxisState.xValuePos.set(BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4, y - 10); + drawAxisValue(X_AXIS); + #endif + + x += BTN_WIDTH + spacing; + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; + + #if HAS_Z_AXIS + drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have babystep + motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(Z_AXIS); + #endif // ROW 4 -> step_size disable steppers back - y = TFT_HEIGHT - Y_MARGIN - 32; // + y = TFT_HEIGHT - Y_MARGIN - 32; x = TFT_WIDTH / 2 - CUR_STEP_VALUE_WIDTH / 2; - motionAxisState.stepValuePos.x = x; - motionAxisState.stepValuePos.y = y; + motionAxisState.stepValuePos.set(x, y); if (!busy) { drawCurStepValue(); - TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); + TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, x, y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); } // aligned with x+ diff --git a/Marlin/src/lcd/tft/ui_320x240.cpp b/Marlin/src/lcd/tft/ui_320x240.cpp index 0d145f10eb..772d7d9590 100644 --- a/Marlin/src/lcd/tft/ui_320x240.cpp +++ b/Marlin/src/lcd/tft/ui_320x240.cpp @@ -278,7 +278,7 @@ void MarlinUI::draw_status_screen() { if (TERN0(LCD_SHOW_E_TOTAL, printingIsActive())) { #if ENABLED(LCD_SHOW_E_TOTAL) - tft.add_text( 10, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED , "E"); + tft.add_text( 10, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "E"); const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm tft_string.set(ftostr4sign(e_move_accumulator / escale)); tft_string.add(escale == 10 ? 'c' : 'm'); @@ -288,7 +288,7 @@ void MarlinUI::draw_status_screen() { } else { #if HAS_X_AXIS - tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 32, 10), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED , "X"); + tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 32, 10), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "X"); const bool nhx = axis_should_home(X_AXIS); tft_string.set(blink && nhx ? "?" : ftostr4sign(LOGICAL_X_POSITION(current_position.x))); tft.add_text( @@ -302,7 +302,7 @@ void MarlinUI::draw_status_screen() { #endif #if HAS_Y_AXIS - tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 110, 127), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED , "Y"); + tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 110, 127), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "Y"); const bool nhy = axis_should_home(Y_AXIS); tft_string.set(blink && nhy ? "?" : ftostr4sign(LOGICAL_Y_POSITION(current_position.y))); tft.add_text( @@ -317,7 +317,7 @@ void MarlinUI::draw_status_screen() { } #if HAS_Z_AXIS - tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 192, 219), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED , "Z"); + tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 192, 219), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "Z"); const bool nhz = axis_should_home(Z_AXIS); uint16_t offset = 25; if (blink && nhz) @@ -362,7 +362,7 @@ void MarlinUI::draw_status_screen() { tft.add_image(0, 0, imgFeedRate, color); tft_string.set(i16tostr3rj(feedrate_percentage)); tft_string.add('%'); - tft.add_text(32, tft_string.vcenter(30), color , tft_string); + tft.add_text(32, tft_string.vcenter(30), color, tft_string); TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, #if ENABLED(TFT_COLOR_UI_PORTRAIT) 30, 172, 80 @@ -387,7 +387,7 @@ void MarlinUI::draw_status_screen() { tft.add_image(0, 0, imgFlowRate, color); tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); tft_string.add('%'); - tft.add_text(32, tft_string.vcenter(30), color , tft_string); + tft.add_text(32, tft_string.vcenter(30), color, tft_string); TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, #if ENABLED(TFT_COLOR_UI_PORTRAIT) 140, 172, 80 @@ -576,7 +576,7 @@ void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, con #if ENABLED(TOUCH_SCREEN) touch.clear(); draw_menu_navigation = false; - touch.add_control(RESUME_CONTINUE , 0, 0, TFT_WIDTH, TFT_HEIGHT); + touch.add_control(RESUME_CONTINUE, 0, 0, TFT_WIDTH, TFT_HEIGHT); #endif menu_line(row); @@ -739,8 +739,10 @@ static void drawCurStepValue() { tft_string.set(F("Offset")); tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + 34, tft_string.width(), 20); tft.set_background(COLOR_BACKGROUND); - if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) - tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + #if HAS_BED_PROBE + if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) + tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + #endif } #endif @@ -749,7 +751,7 @@ static void drawCurStepValue() { tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); tft.set_background(COLOR_BACKGROUND); tft_string.set('E'); - tft.add_text(0, 0, E_BTN_COLOR , tft_string); + tft.add_text(0, 0, E_BTN_COLOR, tft_string); tft.add_text(tft_string.width(), 0, E_BTN_COLOR, ui8tostr3rj(motionAxisState.e_selection)); } #endif @@ -809,7 +811,8 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { const float diff = motionAxisState.currentStepSize * direction; - #if HAS_Z_AXIS + #if HAS_BED_PROBE + if (axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { #if ENABLED(BABYSTEP_ZPROBE_OFFSET) const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z; @@ -829,10 +832,10 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { drawMessage(NUL_STR); // clear the error drawAxisValue(axis); } - else { + else drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - #elif HAS_BED_PROBE + + #else // only change probe.offset.z probe.offset.z += diff; if (direction < 0 && current_position[axis] < Z_PROBE_OFFSET_RANGE_MIN) { @@ -843,14 +846,15 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { current_position[axis] = Z_PROBE_OFFSET_RANGE_MAX; drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); } - else { + else drawMessage(NUL_STR); // clear the error - } + drawAxisValue(axis); #endif return; } - #endif // HAS_Z_AXIS + + #endif // HAS_BED_PROBE if (!ui.manual_move.processing) { // Get motion limit from software endstops, if any @@ -945,8 +949,8 @@ static void disable_steppers() { } static void drawBtn(int x, int y, const char *label, intptr_t data, MarlinImage img, uint16_t bgColor, bool enabled = true) { - uint16_t width = Images[imgBtn39Rounded].width; - uint16_t height = Images[imgBtn39Rounded].height; + const uint16_t width = Images[imgBtn39Rounded].width, + height = Images[imgBtn39Rounded].height; if (!enabled) bgColor = COLOR_CONTROL_DISABLED; @@ -979,23 +983,26 @@ void MarlinUI::move_axis_screen() { const bool busy = printingIsActive(); // Babysteps during printing? Select babystep for Z probe offset - if (busy && ENABLED(BABYSTEP_ZPROBE_OFFSET)) - motionAxisState.z_selection = Z_SELECTION_Z_PROBE; + #if ENABLED(BABYSTEP_ZPROBE_OFFSET) + if (busy) motionAxisState.z_selection = Z_SELECTION_Z_PROBE; + #endif #if ENABLED(TFT_COLOR_UI_PORTRAIT) // ROW 1 -> E+ Y+ Z+ int x = X_MARGIN, y = Y_MARGIN, spacing = 0; - drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy); + TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy)); spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; x += BTN_WIDTH + spacing; uint16_t yplus_x = x; - drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy); + + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy)); x += BTN_WIDTH + spacing; uint16_t zplus_x = x; + #if HAS_Z_AXIS drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step #endif @@ -1004,30 +1011,31 @@ void MarlinUI::move_axis_screen() { x = X_MARGIN; y += BTN_HEIGHT + 2; - motionAxisState.eNamePos.x = x; - motionAxisState.eNamePos.y = y; #if HAS_EXTRUDERS + motionAxisState.eNamePos.set(x, y); drawCurESelection(); TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); #endif - motionAxisState.yValuePos.x = yplus_x; - motionAxisState.yValuePos.y = y; - drawAxisValue(Y_AXIS); + #if HAS_Y_AXIS + motionAxisState.yValuePos.set(yplus_x, y); + drawAxisValue(Y_AXIS); + #endif - motionAxisState.zTypePos.x = zplus_x; - motionAxisState.zTypePos.y = y; - TERN_(HAS_Z_AXIS, drawCurZSelection()); + #if HAS_Z_AXIS + motionAxisState.zTypePos.set(zplus_x, y); + drawCurZSelection(); + #endif // ROW 3 -> X- HOME X+ y += (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3 - 2; x = X_MARGIN; - drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy); - - TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); - - drawBtn(zplus_x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy); + #if HAS_X_AXIS + drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy); + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); + drawBtn(zplus_x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy); + #endif #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); @@ -1036,9 +1044,10 @@ void MarlinUI::move_axis_screen() { // ROW 4 -> Cur X y += BTN_HEIGHT + 2; - motionAxisState.xValuePos.x = x; - motionAxisState.xValuePos.y = y; - drawAxisValue(X_AXIS); + #if HAS_X_AXIS + motionAxisState.xValuePos.set(x, y); + drawAxisValue(X_AXIS); + #endif // ROW 5 -> E- CurX Y- Z- y += (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3 - 2; @@ -1046,35 +1055,30 @@ void MarlinUI::move_axis_screen() { #if HAS_EXTRUDERS drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); + motionAxisState.eValuePos.set(x, y + BTN_HEIGHT + 2); + TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); #endif - // Cur E - motionAxisState.eValuePos.x = x; - motionAxisState.eValuePos.y = y + BTN_HEIGHT + 2; - TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); + x += BTN_WIDTH + spacing; + + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); x += BTN_WIDTH + spacing; - drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy); - x += BTN_WIDTH + spacing; #if HAS_Z_AXIS drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(Z_AXIS); #endif - // Cur Z - motionAxisState.zValuePos.x = x; - motionAxisState.zValuePos.y = y + BTN_HEIGHT + 2; - TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); - // ROW 6 -> step_size disable steppers back - y = TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT; // + y = TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT; x = zplus_x - CUR_STEP_VALUE_WIDTH - 10; - motionAxisState.stepValuePos.x = X_MARGIN + BTN_WIDTH - CUR_STEP_VALUE_WIDTH; - motionAxisState.stepValuePos.y = TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT; + motionAxisState.stepValuePos.set(X_MARGIN + BTN_WIDTH - CUR_STEP_VALUE_WIDTH, y); if (!busy) { - drawCurStepValue(); - TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); + drawCurStepValue(); + TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); } // aligned with x+ @@ -1090,15 +1094,18 @@ void MarlinUI::move_axis_screen() { spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; x += BTN_WIDTH + spacing; uint16_t yplus_x = x; - drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy); - // Cur Y + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy)); + x += BTN_WIDTH; - motionAxisState.yValuePos.x = x + 2; - motionAxisState.yValuePos.y = y; - drawAxisValue(Y_AXIS); + + #if HAS_Y_AXIS + motionAxisState.yValuePos.set(x + 2, y); + drawAxisValue(Y_AXIS); + #endif x += spacing; + #if HAS_Z_AXIS drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step #endif @@ -1108,27 +1115,34 @@ void MarlinUI::move_axis_screen() { x = X_MARGIN; spacing = (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; - motionAxisState.eNamePos.x = x; - motionAxisState.eNamePos.y = y; #if HAS_EXTRUDERS + motionAxisState.eNamePos.set(x, y); drawCurESelection(); TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); #endif x += BTN_WIDTH + spacing; - drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy); + + TERN_(HAS_X_AXIS, drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy)); x += BTN_WIDTH + spacing; //imgHome is 64x64 - TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); + + #if ALL(HAS_X_AXIS, TOUCH_SCREEN) + add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy); + #endif x += BTN_WIDTH + spacing; uint16_t xplus_x = x; - drawBtn(x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy); + + TERN_(HAS_X_AXIS, drawBtn(x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy)); x += BTN_WIDTH + spacing; - motionAxisState.zTypePos.x = x; - motionAxisState.zTypePos.y = y; - TERN_(HAS_Z_AXIS, drawCurZSelection()); + + #if HAS_Z_AXIS + motionAxisState.zTypePos.set(x, y); + drawCurZSelection(); + #endif + #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); #endif @@ -1138,39 +1152,39 @@ void MarlinUI::move_axis_screen() { x = X_MARGIN; spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; - TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy)); + #if HAS_EXTRUDERS + drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); + motionAxisState.eValuePos.set(x, y + BTN_HEIGHT + 2); + TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); + #endif - // Cur E - motionAxisState.eValuePos.x = x; - motionAxisState.eValuePos.y = y + BTN_HEIGHT + 2; - TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); - - // Cur X - motionAxisState.xValuePos.x = BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; //X- pos - motionAxisState.xValuePos.y = y - 10; - drawAxisValue(X_AXIS); + #if HAS_X_AXIS + motionAxisState.xValuePos.set(BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4, y - 10); + drawAxisValue(X_AXIS); + #endif x += BTN_WIDTH + spacing; - drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy); + + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); x += BTN_WIDTH + spacing; + #if HAS_Z_AXIS drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step #endif - // Cur Z - motionAxisState.zValuePos.x = x; - motionAxisState.zValuePos.y = y + BTN_HEIGHT + 2; - TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); + #if HAS_Z_AXIS + motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(Z_AXIS); + #endif // ROW 4 -> step_size disable steppers back - y = TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT; // + y = TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT; x = xplus_x - CUR_STEP_VALUE_WIDTH - 10; - motionAxisState.stepValuePos.x = yplus_x + BTN_WIDTH - CUR_STEP_VALUE_WIDTH; - motionAxisState.stepValuePos.y = TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT; + motionAxisState.stepValuePos.set(yplus_x + BTN_WIDTH - CUR_STEP_VALUE_WIDTH, y); if (!busy) { - drawCurStepValue(); - TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); + drawCurStepValue(); + TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); } // aligned with x+ diff --git a/Marlin/src/lcd/tft/ui_480x320.cpp b/Marlin/src/lcd/tft/ui_480x320.cpp index 2a6f50c93b..38a706ea1b 100644 --- a/Marlin/src/lcd/tft/ui_480x320.cpp +++ b/Marlin/src/lcd/tft/ui_480x320.cpp @@ -195,7 +195,7 @@ void draw_heater_status(uint16_t x, uint16_t y, const int8_t Heater) { tft_string.set(i16tostr3rj(targetTemperature)); tft_string.add(LCD_STR_DEGREE); tft_string.trim(); - tft.add_text(tft_string.center(80) + 2, 6 + tft_string.vcenter(FONT_LINE_HEIGHT) , Color, tft_string); + tft.add_text(tft_string.center(80) + 2, 6 + tft_string.vcenter(FONT_LINE_HEIGHT), Color, tft_string); } } @@ -265,7 +265,7 @@ void MarlinUI::draw_status_screen() { if (TERN0(LCD_SHOW_E_TOTAL, printingIsActive())) { #if ENABLED(LCD_SHOW_E_TOTAL) - tft.add_text( 16, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED , "E"); + tft.add_text( 16, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "E"); const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm tft_string.set(ftostr4sign(e_move_accumulator / escale)); tft_string.add(escale == 10 ? 'c' : 'm'); @@ -322,7 +322,7 @@ void MarlinUI::draw_status_screen() { tft.canvas(x, y, component_width, 32); tft.set_background(COLOR_BACKGROUND); tft.add_image(0, 0, imgFeedRate, color); - tft.add_text(36, tft_string.vcenter(30), color , tft_string); + tft.add_text(36, tft_string.vcenter(30), color, tft_string); TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, x, y, component_width, 32)); #if HAS_EXTRUDERS @@ -337,7 +337,7 @@ void MarlinUI::draw_status_screen() { tft.canvas(x, y, component_width, 32); tft.set_background(COLOR_BACKGROUND); tft.add_image(0, 0, imgFlowRate, color); - tft.add_text(36, tft_string.vcenter(30), color , tft_string); + tft.add_text(36, tft_string.vcenter(30), color, tft_string); TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, x, y, component_width, 32, active_extruder)); #endif @@ -495,7 +495,7 @@ void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, con #if ENABLED(TOUCH_SCREEN) touch.clear(); draw_menu_navigation = false; - touch.add_control(RESUME_CONTINUE , 0, 0, TFT_WIDTH, TFT_HEIGHT); + touch.add_control(RESUME_CONTINUE, 0, 0, TFT_WIDTH, TFT_HEIGHT); #endif menu_line(row); @@ -651,12 +651,16 @@ static void drawCurStepValue() { tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), 34); tft.set_background(COLOR_BACKGROUND); tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + tft.queue.sync(); + tft_string.set(F("Offset")); tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + Y_OFFSET, tft_string.width(), Y_OFFSET TERN_(HAS_UI_480x272, - 10)); tft.set_background(COLOR_BACKGROUND); - if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) - tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + #if HAS_BED_PROBE + if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) + tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + #endif } #endif @@ -718,7 +722,8 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { const float diff = motionAxisState.currentStepSize * direction; - #if HAS_Z_AXIS + #if HAS_BED_PROBE + if (axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { #if ENABLED(BABYSTEP_ZPROBE_OFFSET) const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z; @@ -738,10 +743,10 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { drawMessage(NUL_STR); // clear the error drawAxisValue(axis); } - else { + else drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - #elif HAS_BED_PROBE + + #else // only change probe.offset.z probe.offset.z += diff; if (direction < 0 && current_position[axis] < Z_PROBE_OFFSET_RANGE_MIN) { @@ -752,14 +757,15 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { current_position[axis] = Z_PROBE_OFFSET_RANGE_MAX; drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); } - else { + else drawMessage(NUL_STR); // clear the error - } + drawAxisValue(axis); #endif return; } - #endif // HAS_Z_AXIS + + #endif // HAS_BED_PROBE if (!ui.manual_move.processing) { // Get motion limit from software endstops, if any @@ -853,8 +859,8 @@ static void disable_steppers() { } static void drawBtn(int x, int y, const char *label, intptr_t data, MarlinImage img, uint16_t bgColor, bool enabled = true) { - uint16_t width = Images[imgBtn52Rounded].width, - height = Images[imgBtn52Rounded].height; + const uint16_t width = Images[imgBtn52Rounded].width, + height = Images[imgBtn52Rounded].height; if (!enabled) bgColor = COLOR_CONTROL_DISABLED; @@ -888,9 +894,9 @@ void MarlinUI::move_axis_screen() { const bool busy = printingIsActive(); // Babysteps during printing? Select babystep for Z probe offset - if (busy && ENABLED(BABYSTEP_ZPROBE_OFFSET)) - - TERN_(HAS_Z_AXIS, motionAxisState.z_selection = Z_SELECTION_Z_PROBE); + #if ENABLED(BABYSTEP_ZPROBE_OFFSET) + if (busy) motionAxisState.z_selection = Z_SELECTION_Z_PROBE; + #endif // ROW 1 -> E+ Y+ CurY Z+ int x = X_MARGIN, y = Y_MARGIN, spacing = 0; @@ -902,11 +908,11 @@ void MarlinUI::move_axis_screen() { TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy)); - // Cur Y x += BTN_WIDTH; + + // Cur Y #if HAS_Y_AXIS - motionAxisState.yValuePos.x = x + 2; - motionAxisState.yValuePos.y = y; + motionAxisState.yValuePos.set(x + 2, y); drawAxisValue(Y_AXIS); #endif @@ -920,29 +926,35 @@ void MarlinUI::move_axis_screen() { x = X_MARGIN; spacing = (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; - motionAxisState.eNamePos.x = x; - motionAxisState.eNamePos.y = y; #if HAS_EXTRUDERS + motionAxisState.eNamePos.set(x, y); drawCurESelection(); TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); #endif x += BTN_WIDTH + spacing; - drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy); + + TERN_(HAS_X_AXIS, drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy)); x += BTN_WIDTH + spacing; //imgHome is 64x64 - TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); + + #if ALL(HAS_X_AXIS, TOUCH_SCREEN) + add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy); + #endif x += BTN_WIDTH + spacing; uint16_t xplus_x = x; - drawBtn(x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy); + + TERN_(HAS_X_AXIS, drawBtn(x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy)); x += BTN_WIDTH + spacing; - motionAxisState.zTypePos.x = x; - motionAxisState.zTypePos.y = y; - TERN_(HAS_Z_AXIS, drawCurZSelection()); - #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) - if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, Y_OFFSET * 2, (intptr_t)z_select); + + #if HAS_Z_AXIS + motionAxisState.zTypePos.set(x, y); + drawCurZSelection(); + #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) + if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, Y_OFFSET * 2, (intptr_t)z_select); + #endif #endif // ROW 3 -> E- CurX Y- Z- @@ -950,20 +962,19 @@ void MarlinUI::move_axis_screen() { x = X_MARGIN; spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; - TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy)); + #if HAS_EXTRUDERS + drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); + motionAxisState.eValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(E_AXIS); + #endif - // Cur E - motionAxisState.eValuePos.x = x; - motionAxisState.eValuePos.y = y + BTN_HEIGHT + 2; - TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); - - // Cur X - motionAxisState.xValuePos.x = BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; //X- pos - motionAxisState.xValuePos.y = y - 10; - TERN_(HAS_X_AXIS, drawAxisValue(X_AXIS)); + #if HAS_X_AXIS + motionAxisState.xValuePos.set(BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4, y - 10); + TERN_(HAS_X_AXIS, drawAxisValue(X_AXIS)); + #endif x += BTN_WIDTH + spacing; - drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy); + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); x += BTN_WIDTH + spacing; #if HAS_Z_AXIS @@ -971,15 +982,15 @@ void MarlinUI::move_axis_screen() { #endif // Cur Z - motionAxisState.zValuePos.x = x; - motionAxisState.zValuePos.y = y + BTN_HEIGHT + 2; - TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); + #if HAS_Z_AXIS + motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(Z_AXIS); + #endif // ROW 4 -> step_size disable steppers back y = TFT_HEIGHT - Y_MARGIN - TERN(HAS_UI_480x272, BTN_WIDTH / 2, 32); x = TFT_WIDTH / 2 - CUR_STEP_VALUE_WIDTH / 2; - motionAxisState.stepValuePos.x = x; - motionAxisState.stepValuePos.y = y; + motionAxisState.stepValuePos.set(x, y); if (!busy) { drawCurStepValue(); TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); diff --git a/Marlin/src/lcd/tft/ui_480x320.h b/Marlin/src/lcd/tft/ui_480x320.h index 00341650c1..785f4c3cbf 100644 --- a/Marlin/src/lcd/tft/ui_480x320.h +++ b/Marlin/src/lcd/tft/ui_480x320.h @@ -103,7 +103,7 @@ * - Rows count: 6 * - Margins count: 7 */ -#ifdef TFT_COLOR_UI_PORTRAIT +#if ENABLED(TFT_COLOR_UI_PORTRAIT) #if ENABLED(TOUCH_SCREEN) #define STATUS_TOTAL_ROWS_HEIGHT (2 * FONT_LINE_HEIGHT + 120 + 32 + 64 + 29 + 7) #define STATUS_MARGINS_REGIONS 8 diff --git a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h index a0c2ed1dc8..d1b64dd805 100644 --- a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h +++ b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h @@ -307,7 +307,7 @@ #define TFT_CS_PIN FSMC_CS_PIN #define TFT_RS_PIN FSMC_RS_PIN - #ifdef TFT_CLASSIC_UI + #if ENABLED(TFT_CLASSIC_UI) #define TFT_MARLINBG_COLOR 0x3186 // Grey #define TFT_MARLINUI_COLOR 0xC7B6 // Green #define TFT_BTARROWS_COLOR 0xDEE6 // Yellow From 683916e17a6fe35c9726ad7e57e73c519fc96222 Mon Sep 17 00:00:00 2001 From: Dmitry Plastinin Date: Thu, 8 Jun 2023 07:14:34 +0300 Subject: [PATCH 531/659] =?UTF-8?q?=F0=9F=9A=B8=20Portrait=20TS35=20move?= =?UTF-8?q?=20axis=20screen=20(#25945)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/tft/ui_480x320.cpp | 311 +++++++++++++++++++++--------- Marlin/src/lcd/tft/ui_480x320.h | 4 + 2 files changed, 223 insertions(+), 92 deletions(-) diff --git a/Marlin/src/lcd/tft/ui_480x320.cpp b/Marlin/src/lcd/tft/ui_480x320.cpp index 38a706ea1b..edf75dabbd 100644 --- a/Marlin/src/lcd/tft/ui_480x320.cpp +++ b/Marlin/src/lcd/tft/ui_480x320.cpp @@ -639,16 +639,17 @@ static void quick_feedback() { #define CUR_STEP_VALUE_WIDTH 104 static void drawCurStepValue() { tft_string.set(ftostr52sp(motionAxisState.currentStepSize)); + tft_string.trim(); tft_string.add(F("mm")); tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT); tft.set_background(COLOR_BACKGROUND); - tft.add_text(tft_string.center(CUR_STEP_VALUE_WIDTH), 0, COLOR_AXIS_HOMED, tft_string); + tft.add_text(0, 0, COLOR_AXIS_HOMED, tft_string); } #if HAS_Z_AXIS static void drawCurZSelection() { tft_string.set('Z'); - tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), 34); + tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), FONT_LINE_HEIGHT); tft.set_background(COLOR_BACKGROUND); tft.add_text(0, 0, Z_BTN_COLOR, tft_string); @@ -669,13 +670,17 @@ static void drawCurStepValue() { tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); tft.set_background(COLOR_BACKGROUND); tft_string.set('E'); - tft.add_text(0, 0, E_BTN_COLOR , tft_string); - tft.add_text(tft_string.width(), 0, E_BTN_COLOR, ui8tostr3rj(motionAxisState.e_selection)); + tft_string.add(utostr3(motionAxisState.e_selection)); + tft.add_text(tft_string.center(BTN_WIDTH), 0, E_BTN_COLOR, tft_string); } #endif static void drawMessage(PGM_P const msg) { - tft.canvas(X_MARGIN, TFT_HEIGHT - Y_MARGIN - Y_OFFSET, TFT_HEIGHT / 2, Y_OFFSET); + #if ENABLED(TFT_COLOR_UI_PORTRAIT) + tft.canvas(X_MARGIN, TFT_HEIGHT - 2 * MOVE_AXIS_MARGIN_SIZE - BTN_HEIGHT - FONT_LINE_HEIGHT, TFT_WIDTH - X_MARGIN * 2, FONT_LINE_HEIGHT); + #else + tft.canvas(X_MARGIN, TFT_HEIGHT - Y_MARGIN - Y_OFFSET, TFT_HEIGHT / 2, Y_OFFSET); + #endif tft.set_background(COLOR_BACKGROUND); tft.add_text(0, 0, COLOR_YELLOW, msg); } @@ -707,7 +712,8 @@ static void drawAxisValue(const AxisEnum axis) { tft.canvas(pos.x, pos.y, BTN_WIDTH + X_MARGIN, BTN_HEIGHT TERN_(HAS_UI_480x272, / 2)); tft.set_background(COLOR_BACKGROUND); tft_string.set(ftostr52sp(value)); - tft.add_text(0, 0, color, tft_string); + tft_string.trim(); + tft.add_text(tft_string.center(BTN_WIDTH + X_MARGIN), 0, color, tft_string); } static void moveAxis(const AxisEnum axis, const int8_t direction) { @@ -898,108 +904,229 @@ void MarlinUI::move_axis_screen() { if (busy) motionAxisState.z_selection = Z_SELECTION_Z_PROBE; #endif - // ROW 1 -> E+ Y+ CurY Z+ - int x = X_MARGIN, y = Y_MARGIN, spacing = 0; + #if ENABLED(TFT_COLOR_UI_PORTRAIT) - TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy)); + int y = MOVE_AXIS_MARGIN_SIZE; - spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; - x += BTN_WIDTH + spacing; + /************************************************************************** + * 1st: | Button "E+" | Button "Y+" | Button "Z+" | + *************************************************************************/ - TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy)); + TERN_(HAS_EXTRUDERS, drawBtn(TFT_WIDTH / 6 - BTN_WIDTH / 2, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy)); + TERN_(HAS_Y_AXIS, drawBtn(TFT_WIDTH / 2 - BTN_WIDTH / 2, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy)); + TERN_(HAS_Z_AXIS, drawBtn(TFT_WIDTH * 5 / 6 - BTN_WIDTH / 2, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET))); - x += BTN_WIDTH; + y += BTN_HEIGHT + 4; - // Cur Y - #if HAS_Y_AXIS - motionAxisState.yValuePos.set(x + 2, y); - drawAxisValue(Y_AXIS); - #endif + /************************************************************************** + * 2nd: | Label "Ex" (E0, E1, etc.) | Y value | Label "Z" | + *************************************************************************/ - x += spacing; - #if HAS_Z_AXIS - drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step - #endif - - // ROW 2 -> "Ex" X- HOME X+ "Z" - y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; - x = X_MARGIN; - spacing = (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; - - #if HAS_EXTRUDERS - motionAxisState.eNamePos.set(x, y); - drawCurESelection(); - TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); - #endif - - x += BTN_WIDTH + spacing; - - TERN_(HAS_X_AXIS, drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy)); - - x += BTN_WIDTH + spacing; //imgHome is 64x64 - - #if ALL(HAS_X_AXIS, TOUCH_SCREEN) - add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy); - #endif - - x += BTN_WIDTH + spacing; - uint16_t xplus_x = x; - - TERN_(HAS_X_AXIS, drawBtn(x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy)); - - x += BTN_WIDTH + spacing; - - #if HAS_Z_AXIS - motionAxisState.zTypePos.set(x, y); - drawCurZSelection(); - #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) - if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, Y_OFFSET * 2, (intptr_t)z_select); + // Label "Ex" (E0, E1, etc.) + #if HAS_EXTRUDERS + motionAxisState.eNamePos.set(TFT_WIDTH / 6 - BTN_WIDTH / 2, y); + drawCurESelection(); + #if ENABLED(TOUCH_SCREEN) + if (!busy) touch.add_control(BUTTON, motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select); + #endif #endif - #endif - // ROW 3 -> E- CurX Y- Z- - y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; - x = X_MARGIN; - spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; + // Y value + #if HAS_Y_AXIS + motionAxisState.yValuePos.set(TFT_WIDTH / 2 - (BTN_WIDTH + X_MARGIN) / 2, y); + drawAxisValue(Y_AXIS); + #endif - #if HAS_EXTRUDERS - drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); - motionAxisState.eValuePos.set(x, y + BTN_HEIGHT + 2); - drawAxisValue(E_AXIS); - #endif + // Label "Z" + #ifdef HAS_Z_AXIS + motionAxisState.zTypePos.set(TFT_WIDTH * 5 / 6 - BTN_WIDTH / 2, y); + drawCurZSelection(); + #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) + if (!busy) touch.add_control(BUTTON, motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, BTN_WIDTH, FONT_LINE_HEIGHT * 2, (intptr_t)z_select); + #endif + #endif - #if HAS_X_AXIS - motionAxisState.xValuePos.set(BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4, y - 10); - TERN_(HAS_X_AXIS, drawAxisValue(X_AXIS)); - #endif + y += BTN_HEIGHT + MOVE_AXIS_MARGIN_SIZE; - x += BTN_WIDTH + spacing; - TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); + /************************************************************************** + * 3rd: | Button "X-" | Button "Homing" | Button "X+" | + *************************************************************************/ - x += BTN_WIDTH + spacing; - #if HAS_Z_AXIS - drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step - #endif + #if HAS_X_AXIS + drawBtn(TFT_WIDTH / 6 - BTN_WIDTH / 2, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy); + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); + drawBtn(TFT_WIDTH * 5 / 6 - BTN_WIDTH / 2, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy); + #endif - // Cur Z - #if HAS_Z_AXIS - motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); - drawAxisValue(Z_AXIS); - #endif + y += BTN_HEIGHT + 4; - // ROW 4 -> step_size disable steppers back - y = TFT_HEIGHT - Y_MARGIN - TERN(HAS_UI_480x272, BTN_WIDTH / 2, 32); - x = TFT_WIDTH / 2 - CUR_STEP_VALUE_WIDTH / 2; - motionAxisState.stepValuePos.set(x, y); - if (!busy) { - drawCurStepValue(); - TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); - } + /************************************************************************** + * 4th: | X value | + *************************************************************************/ - // aligned with x+ - drawBtn(xplus_x, TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT, "off", (intptr_t)disable_steppers, imgCancel, COLOR_WHITE, !busy); + #ifdef HAS_X_AXIS + motionAxisState.xValuePos.set(TFT_WIDTH / 6 - (BTN_WIDTH + X_MARGIN) / 2, y); + drawAxisValue(X_AXIS); + #endif - TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); + y += BTN_HEIGHT + MOVE_AXIS_MARGIN_SIZE; + + /************************************************************************** + * 5th: | Button "E-" | Button "Y-" | Button "Z-" + *************************************************************************/ + + TERN_(HAS_EXTRUDERS, drawBtn(TFT_WIDTH / 6 - BTN_WIDTH / 2, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy)); + TERN_(HAS_Y_AXIS, drawBtn(TFT_WIDTH / 2 - BTN_WIDTH / 2, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); + TERN_(HAS_Z_AXIS, drawBtn(TFT_WIDTH * 5 / 6 - BTN_WIDTH / 2, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET))); + + y += BTN_HEIGHT + 4; + + /************************************************************************** + * 6th: | Current Ex value | Z value | + *************************************************************************/ + + // Current Ex value + #ifdef HAS_EXTRUDERS + motionAxisState.eValuePos.set(TFT_WIDTH / 6 - (BTN_WIDTH + X_MARGIN) / 2, y); + drawAxisValue(E_AXIS); + #endif + + #ifdef HAS_Z_AXIS + motionAxisState.zValuePos.set(TFT_WIDTH * 5 / 6 - (BTN_WIDTH + X_MARGIN) / 2, y); + drawAxisValue(Z_AXIS); + #endif + + y += BTN_HEIGHT + MOVE_AXIS_MARGIN_SIZE; + + /************************************************************************** + * 7th: | Message - drawMessage(...) function | + *************************************************************************/ + + y += FONT_LINE_HEIGHT + MOVE_AXIS_MARGIN_SIZE; + + /************************************************************************** + * 8th: | Step size | Button "Disable steppers" | Button "Back" | + *************************************************************************/ + + // Step size + motionAxisState.stepValuePos.set(X_MARGIN, y + 12); + if (!busy) { + drawCurStepValue(); + TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y + 12, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); + } + + // Button "Disable steppers" + drawBtn(TFT_WIDTH / 2, y, "off", (intptr_t)disable_steppers, imgCancel, COLOR_WHITE, !busy); + + // Button "Back" + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH * 5 / 6 - Images[imgBack].width / 2, y + 12, BACK, imgBack)); + + #else // !TFT_COLOR_UI_PORTRAIT + + // ROW 1 -> E- Y- CurY Z+ + int x = X_MARGIN, y = Y_MARGIN, spacing = 0; + + TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy)); + + spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; + x += BTN_WIDTH + spacing; + + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy)); + + x += BTN_WIDTH; + + // Cur Y + #if HAS_Y_AXIS + motionAxisState.yValuePos.set(x + 2, y); + drawAxisValue(Y_AXIS); + #endif + + x += spacing; + #if HAS_Z_AXIS + drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #endif + + // ROW 2 -> "Ex" X- HOME X+ "Z" + y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; + x = X_MARGIN; + spacing = (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; + + #if HAS_EXTRUDERS + motionAxisState.eNamePos.set(x, y); + drawCurESelection(); + TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); + #endif + + x += BTN_WIDTH + spacing; + + TERN_(HAS_X_AXIS, drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; //imgHome is 64x64 + + #if ALL(HAS_X_AXIS, TOUCH_SCREEN) + add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy); + #endif + + x += BTN_WIDTH + spacing; + uint16_t xplus_x = x; + + TERN_(HAS_X_AXIS, drawBtn(x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; + + #if HAS_Z_AXIS + motionAxisState.zTypePos.set(x, y); + drawCurZSelection(); + #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) + if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, Y_OFFSET * 2, (intptr_t)z_select); + #endif + #endif + + // ROW 3 -> E- CurX Y- Z- + y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; + x = X_MARGIN; + spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; + + #if HAS_EXTRUDERS + drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); + motionAxisState.eValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(E_AXIS); + #endif + + #if HAS_X_AXIS + motionAxisState.xValuePos.set(BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4, y - 10); + TERN_(HAS_X_AXIS, drawAxisValue(X_AXIS)); + #endif + + x += BTN_WIDTH + spacing; + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; + #if HAS_Z_AXIS + drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + #endif + + // Cur Z + #if HAS_Z_AXIS + motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(Z_AXIS); + #endif + + // ROW 4 -> step_size disable steppers back + y = TFT_HEIGHT - Y_MARGIN - TERN(HAS_UI_480x272, BTN_WIDTH / 2, 32); + x = TFT_WIDTH / 2 - CUR_STEP_VALUE_WIDTH / 2; + motionAxisState.stepValuePos.set(x, y); + if (!busy) { + drawCurStepValue(); + TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); + } + + // aligned with x+ + drawBtn(xplus_x, TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT, "off", (intptr_t)disable_steppers, imgCancel, COLOR_WHITE, !busy); + + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); + + #endif // !TFT_COLOR_UI_PORTRAIT } #endif // HAS_UI_480x320 || HAS_UI_480x272 diff --git a/Marlin/src/lcd/tft/ui_480x320.h b/Marlin/src/lcd/tft/ui_480x320.h index 785f4c3cbf..d3036d0981 100644 --- a/Marlin/src/lcd/tft/ui_480x320.h +++ b/Marlin/src/lcd/tft/ui_480x320.h @@ -107,6 +107,10 @@ #if ENABLED(TOUCH_SCREEN) #define STATUS_TOTAL_ROWS_HEIGHT (2 * FONT_LINE_HEIGHT + 120 + 32 + 64 + 29 + 7) #define STATUS_MARGINS_REGIONS 8 + + #define MOVE_AXIS_TOTAL_ROWS_HEIGHT (7 * BTN_HEIGHT + FONT_LINE_HEIGHT + 12) + #define MOVE_AXIS_MARGIN_REGIONS 6 + #define MOVE_AXIS_MARGIN_SIZE ((TFT_HEIGHT - MOVE_AXIS_TOTAL_ROWS_HEIGHT) / MOVE_AXIS_MARGIN_REGIONS) #else #define STATUS_TOTAL_ROWS_HEIGHT (2 * FONT_LINE_HEIGHT + 120 + 32 + 29 + 7) #define STATUS_MARGINS_REGIONS 7 From bbbd6045cb6e76cca44c973e1922ce5220ab29c4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 8 Jun 2023 19:18:59 -0500 Subject: [PATCH 532/659] =?UTF-8?q?=F0=9F=94=A8=20Update=20STM32Hxx=20boar?= =?UTF-8?q?ds/variants?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25934 --- buildroot/share/PlatformIO/boards/marlin_STM32H723ZE.json | 2 +- buildroot/share/PlatformIO/boards/marlin_STM32H743VI.json | 2 +- .../variants/{MARLIN_H723Zx => MARLIN_H723ZE}/PeripheralPins.c | 0 .../variants/{MARLIN_H723Zx => MARLIN_H723ZE}/PinNamesVar.h | 0 .../variants/{MARLIN_H723Zx => MARLIN_H723ZE}/ldscript.ld | 0 .../variant_MARLIN_STM32H723ZE.cpp} | 0 .../variant_MARLIN_STM32H723ZE.h} | 0 .../variants/{MARLIN_H743Vx => MARLIN_H743VI}/PeripheralPins.c | 0 .../variants/{MARLIN_H743Vx => MARLIN_H743VI}/PinNamesVar.h | 0 .../variants/{MARLIN_H743Vx => MARLIN_H743VI}/ldscript.ld | 0 .../variant_MARLIN_STM32H743VI.cpp} | 0 .../variant_MARLIN_STM32H743VI.h} | 0 12 files changed, 2 insertions(+), 2 deletions(-) rename buildroot/share/PlatformIO/variants/{MARLIN_H723Zx => MARLIN_H723ZE}/PeripheralPins.c (100%) rename buildroot/share/PlatformIO/variants/{MARLIN_H723Zx => MARLIN_H723ZE}/PinNamesVar.h (100%) rename buildroot/share/PlatformIO/variants/{MARLIN_H723Zx => MARLIN_H723ZE}/ldscript.ld (100%) rename buildroot/share/PlatformIO/variants/{MARLIN_H723Zx/variant_MARLIN_STM32H723ZX.cpp => MARLIN_H723ZE/variant_MARLIN_STM32H723ZE.cpp} (100%) rename buildroot/share/PlatformIO/variants/{MARLIN_H723Zx/variant_MARLIN_STM32H723ZX.h => MARLIN_H723ZE/variant_MARLIN_STM32H723ZE.h} (100%) rename buildroot/share/PlatformIO/variants/{MARLIN_H743Vx => MARLIN_H743VI}/PeripheralPins.c (100%) rename buildroot/share/PlatformIO/variants/{MARLIN_H743Vx => MARLIN_H743VI}/PinNamesVar.h (100%) rename buildroot/share/PlatformIO/variants/{MARLIN_H743Vx => MARLIN_H743VI}/ldscript.ld (100%) rename buildroot/share/PlatformIO/variants/{MARLIN_H743Vx/variant_MARLIN_STM32H743VX.cpp => MARLIN_H743VI/variant_MARLIN_STM32H743VI.cpp} (100%) rename buildroot/share/PlatformIO/variants/{MARLIN_H743Vx/variant_MARLIN_STM32H743VX.h => MARLIN_H743VI/variant_MARLIN_STM32H743VI.h} (100%) diff --git a/buildroot/share/PlatformIO/boards/marlin_STM32H723ZE.json b/buildroot/share/PlatformIO/boards/marlin_STM32H723ZE.json index 8525793c4e..f4bb75b5da 100644 --- a/buildroot/share/PlatformIO/boards/marlin_STM32H723ZE.json +++ b/buildroot/share/PlatformIO/boards/marlin_STM32H723ZE.json @@ -6,7 +6,7 @@ "f_cpu": "550000000L", "mcu": "stm32h723zet6", "product_line": "STM32H723xx", - "variant": "MARLIN_H723Zx" + "variant": "MARLIN_H723ZE" }, "connectivity": [ "can", diff --git a/buildroot/share/PlatformIO/boards/marlin_STM32H743VI.json b/buildroot/share/PlatformIO/boards/marlin_STM32H743VI.json index 4ec34e5b35..56e853cad4 100644 --- a/buildroot/share/PlatformIO/boards/marlin_STM32H743VI.json +++ b/buildroot/share/PlatformIO/boards/marlin_STM32H743VI.json @@ -6,7 +6,7 @@ "f_cpu": "480000000L", "mcu": "stm32h743vit6", "product_line": "STM32H743xx", - "variant": "MARLIN_H743Vx" + "variant": "MARLIN_H743VI" }, "connectivity": [ "can", diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_H723ZE/PeripheralPins.c similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H723Zx/PeripheralPins.c rename to buildroot/share/PlatformIO/variants/MARLIN_H723ZE/PeripheralPins.c diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/PinNamesVar.h b/buildroot/share/PlatformIO/variants/MARLIN_H723ZE/PinNamesVar.h similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H723Zx/PinNamesVar.h rename to buildroot/share/PlatformIO/variants/MARLIN_H723ZE/PinNamesVar.h diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/ldscript.ld b/buildroot/share/PlatformIO/variants/MARLIN_H723ZE/ldscript.ld similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H723Zx/ldscript.ld rename to buildroot/share/PlatformIO/variants/MARLIN_H723ZE/ldscript.ld diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723ZX.cpp b/buildroot/share/PlatformIO/variants/MARLIN_H723ZE/variant_MARLIN_STM32H723ZE.cpp similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723ZX.cpp rename to buildroot/share/PlatformIO/variants/MARLIN_H723ZE/variant_MARLIN_STM32H723ZE.cpp diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723ZX.h b/buildroot/share/PlatformIO/variants/MARLIN_H723ZE/variant_MARLIN_STM32H723ZE.h similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H723Zx/variant_MARLIN_STM32H723ZX.h rename to buildroot/share/PlatformIO/variants/MARLIN_H723ZE/variant_MARLIN_STM32H723ZE.h diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H743Vx/PeripheralPins.c b/buildroot/share/PlatformIO/variants/MARLIN_H743VI/PeripheralPins.c similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H743Vx/PeripheralPins.c rename to buildroot/share/PlatformIO/variants/MARLIN_H743VI/PeripheralPins.c diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H743Vx/PinNamesVar.h b/buildroot/share/PlatformIO/variants/MARLIN_H743VI/PinNamesVar.h similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H743Vx/PinNamesVar.h rename to buildroot/share/PlatformIO/variants/MARLIN_H743VI/PinNamesVar.h diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H743Vx/ldscript.ld b/buildroot/share/PlatformIO/variants/MARLIN_H743VI/ldscript.ld similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H743Vx/ldscript.ld rename to buildroot/share/PlatformIO/variants/MARLIN_H743VI/ldscript.ld diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H743Vx/variant_MARLIN_STM32H743VX.cpp b/buildroot/share/PlatformIO/variants/MARLIN_H743VI/variant_MARLIN_STM32H743VI.cpp similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H743Vx/variant_MARLIN_STM32H743VX.cpp rename to buildroot/share/PlatformIO/variants/MARLIN_H743VI/variant_MARLIN_STM32H743VI.cpp diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H743Vx/variant_MARLIN_STM32H743VX.h b/buildroot/share/PlatformIO/variants/MARLIN_H743VI/variant_MARLIN_STM32H743VI.h similarity index 100% rename from buildroot/share/PlatformIO/variants/MARLIN_H743Vx/variant_MARLIN_STM32H743VX.h rename to buildroot/share/PlatformIO/variants/MARLIN_H743VI/variant_MARLIN_STM32H743VI.h From 2a79aad2dda922e35260750db90e7e243e24fc43 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 8 Jun 2023 19:22:17 -0500 Subject: [PATCH 533/659] =?UTF-8?q?=F0=9F=94=A8=20Fix=20serial=20port=20#e?= =?UTF-8?q?rror=20text?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/STM32/HAL.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Marlin/src/HAL/STM32/HAL.h b/Marlin/src/HAL/STM32/HAL.h index dc36cc1eca..24589d0fcc 100644 --- a/Marlin/src/HAL/STM32/HAL.h +++ b/Marlin/src/HAL/STM32/HAL.h @@ -71,7 +71,7 @@ #if WITHIN(SERIAL_PORT_2, 1, 6) #define MYSERIAL2 MSERIAL(SERIAL_PORT_2) #elif !defined(USBCON) - #error "SERIAL_PORT must be from 1 to 6." + #error "SERIAL_PORT_2 must be from 1 to 6." #elif SERIAL_PORT_2 == -1 #define MYSERIAL2 MSerialUSB #else @@ -83,7 +83,7 @@ #if WITHIN(SERIAL_PORT_3, 1, 6) #define MYSERIAL3 MSERIAL(SERIAL_PORT_3) #elif !defined(USBCON) - #error "SERIAL_PORT must be from 1 to 6." + #error "SERIAL_PORT_3 must be from 1 to 6." #elif SERIAL_PORT_3 == -1 #define MYSERIAL3 MSerialUSB #else @@ -95,7 +95,7 @@ #if WITHIN(MMU2_SERIAL_PORT, 1, 6) #define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT) #elif !defined(USBCON) - #error "SERIAL_PORT must be from 1 to 6." + #error "MMU2_SERIAL_PORT must be from 1 to 6." #elif MMU2_SERIAL_PORT == -1 #define MMU2_SERIAL MSerialUSB #else @@ -107,7 +107,7 @@ #if WITHIN(LCD_SERIAL_PORT, 1, 6) #define LCD_SERIAL MSERIAL(LCD_SERIAL_PORT) #elif !defined(USBCON) - #error "SERIAL_PORT must be from 1 to 6." + #error "LCD_SERIAL_PORT must be from 1 to 6." #elif LCD_SERIAL_PORT == -1 #define LCD_SERIAL MSerialUSB #else From f3cda01b959274e7930c2050f5e34aa1460791bc Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 9 Jun 2023 00:30:56 +0000 Subject: [PATCH 534/659] [cron] Bump distribution date (2023-06-09) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index c4fb72821e..50dfbcd3a3 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-08" +//#define STRING_DISTRIBUTION_DATE "2023-06-09" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index c39dc089a8..8c544a11c7 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-08" + #define STRING_DISTRIBUTION_DATE "2023-06-09" #endif /** From 34e23bcf950fa89737289c76953af7b24d5c22c4 Mon Sep 17 00:00:00 2001 From: Miguel Risco-Castillo Date: Thu, 8 Jun 2023 20:47:35 -0500 Subject: [PATCH 535/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20=5FMINMAX=5FTEST?= =?UTF-8?q?=20typo=20(#25954)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/temperature.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 7383f6a1c3..56f5f8b983 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2943,7 +2943,7 @@ void Temperature::init() { temp_range[NR].raw_max -= TEMPDIR(NR) * (OVERSAMPLENR); \ }while(0) - #define _MINMAX_TEST(N,M) (HOTENDS > N && TEMP_SENSOR_##NR##_IS_THERMISTOR && defined(HEATER_##N##_##M##TEMP)) + #define _MINMAX_TEST(N,M) (HOTENDS > N && TEMP_SENSOR_##N##_IS_THERMISTOR && defined(HEATER_##N##_##M##TEMP)) #if _MINMAX_TEST(0, MIN) _TEMP_MIN_E(0); From 82ddd55a1a4800e478b937da49d396cb2fb351f1 Mon Sep 17 00:00:00 2001 From: Bart Meijer Date: Fri, 9 Jun 2023 04:55:26 +0200 Subject: [PATCH 536/659] =?UTF-8?q?=F0=9F=A9=B9=20Conditional=20u8g=20for?= =?UTF-8?q?=20SAMD21=20(#25947)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/HAL/SAMD21/u8g/u8g_com_HAL_samd21_shared_hw_spi.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Marlin/src/HAL/SAMD21/u8g/u8g_com_HAL_samd21_shared_hw_spi.cpp b/Marlin/src/HAL/SAMD21/u8g/u8g_com_HAL_samd21_shared_hw_spi.cpp index 02dc772296..025e5a3bb6 100644 --- a/Marlin/src/HAL/SAMD21/u8g/u8g_com_HAL_samd21_shared_hw_spi.cpp +++ b/Marlin/src/HAL/SAMD21/u8g/u8g_com_HAL_samd21_shared_hw_spi.cpp @@ -60,6 +60,10 @@ #ifdef __SAMD21__ +#include "../../../inc/MarlinConfigPre.h" + +#if HAS_MARLINUI_U8GLIB + #include #include "SPI.h" @@ -151,4 +155,6 @@ uint8_t u8g_com_samd21_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val return 1; } +#endif // HAS_MARLINUI_U8GLIB + #endif // __SAMD21__ From 0ed46406d1d4b4280f8458d56b45b7bdab33e113 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 9 Jun 2023 02:56:25 -0500 Subject: [PATCH 537/659] =?UTF-8?q?=F0=9F=94=A8=20Simpler=20distinct=20fir?= =?UTF-8?q?mware=20rename=20(#25957)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/share/PlatformIO/scripts/offset_and_rename.py | 3 ++- buildroot/share/PlatformIO/scripts/random-bin.py | 9 --------- ini/stm32f1-maple.ini | 8 +++----- ini/stm32f1.ini | 3 +-- ini/stm32f4.ini | 6 ++---- 5 files changed, 8 insertions(+), 21 deletions(-) delete mode 100644 buildroot/share/PlatformIO/scripts/random-bin.py diff --git a/buildroot/share/PlatformIO/scripts/offset_and_rename.py b/buildroot/share/PlatformIO/scripts/offset_and_rename.py index de14ccbbbf..e9940a50d0 100644 --- a/buildroot/share/PlatformIO/scripts/offset_and_rename.py +++ b/buildroot/share/PlatformIO/scripts/offset_and_rename.py @@ -60,6 +60,7 @@ if pioutil.is_pio_build(): def rename_target(source, target, env): from pathlib import Path - Path(target[0].path).replace(Path(target[0].dir.path, new_name)) + from datetime import datetime + Path(target[0].path).replace(Path(target[0].dir.path, datetime.now().strftime(new_name.replace('{date}', '%Y%m%d').replace('{time}', '%H%M%S')))) marlin.add_post_action(rename_target) diff --git a/buildroot/share/PlatformIO/scripts/random-bin.py b/buildroot/share/PlatformIO/scripts/random-bin.py deleted file mode 100644 index dc8634ea7d..0000000000 --- a/buildroot/share/PlatformIO/scripts/random-bin.py +++ /dev/null @@ -1,9 +0,0 @@ -# -# random-bin.py -# Set a unique firmware name based on current date and time -# -import pioutil -if pioutil.is_pio_build(): - from datetime import datetime - Import("env") - env['PROGNAME'] = datetime.now().strftime("firmware-%Y%m%d-%H%M%S") diff --git a/ini/stm32f1-maple.ini b/ini/stm32f1-maple.ini index 3560c1fd2a..88a6f8b492 100644 --- a/ini/stm32f1-maple.ini +++ b/ini/stm32f1-maple.ini @@ -118,8 +118,7 @@ extends = env:STM32F103RE_maple build_flags = ${env:STM32F103RE_maple.build_flags} -DTEMP_TIMER_CHAN=4 board_build.address = 0x08007000 board_build.ldscript = creality.ld -extra_scripts = ${env:STM32F103RE_maple.extra_scripts} - pre:buildroot/share/PlatformIO/scripts/random-bin.py +board_build.rename = firmware-{date}-{time} debug_tool = jlink upload_protocol = jlink @@ -131,8 +130,7 @@ extends = env:STM32F103RC_maple build_flags = ${env:STM32F103RC_maple.build_flags} -DTEMP_TIMER_CHAN=4 board_build.address = 0x08007000 board_build.ldscript = creality.ld -extra_scripts = ${env:STM32F103RC_maple.extra_scripts} - pre:buildroot/share/PlatformIO/scripts/random-bin.py +board_build.rename = firmware-{date}-{time} debug_tool = jlink upload_protocol = jlink @@ -400,8 +398,8 @@ extends = env:STM32F103RE_maple build_flags = ${STM32F1_maple.build_flags} -DTEMP_TIMER_CHAN=4 board_build.address = 0x08007000 board_build.ldscript = sovol.ld +board_build.rename = firmware-{date}-{time} extra_scripts = ${STM32F1_maple.extra_scripts} - pre:buildroot/share/PlatformIO/scripts/random-bin.py buildroot/share/PlatformIO/scripts/custom_board.py debug_tool = jlink upload_protocol = jlink diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini index d19de4d2dd..feb64a098f 100644 --- a/ini/stm32f1.ini +++ b/ini/stm32f1.ini @@ -121,6 +121,7 @@ debug_tool = stlink extends = stm32_variant board_build.variant = MARLIN_F103Rx board_build.offset = 0x7000 +board_build.rename = firmware-{date}-{time} board_upload.offset_address = 0x08007000 build_flags = ${stm32_variant.build_flags} -DMCU_STM32F103RE -DHAL_SD_MODULE_ENABLED @@ -128,8 +129,6 @@ build_flags = ${stm32_variant.build_flags} -DENABLE_HWSERIAL3 -DTRANSFER_CLOCK_DIV=8 build_unflags = ${stm32_variant.build_unflags} -DUSBCON -DUSBD_USE_CDC -extra_scripts = ${stm32_variant.extra_scripts} - pre:buildroot/share/PlatformIO/scripts/random-bin.py monitor_speed = 115200 debug_tool = jlink upload_protocol = jlink diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini index 34a5c4d607..67c2c6033c 100644 --- a/ini/stm32f4.ini +++ b/ini/stm32f4.ini @@ -684,12 +684,11 @@ board = genericSTM32F401RC board_build.variant = MARLIN_CREALITY_STM32F401RC board_build.offset = 0x10000 board_upload.offset_address = 0x08010000 +board_build.rename = firmware-{date}-{time} build_flags = ${stm32_variant.build_flags} -DMCU_STM32F401RC -DSTM32F4 -DSS_TIMER=4 -DTIMER_SERVO=TIM5 -DENABLE_HWSERIAL3 -DTRANSFER_CLOCK_DIV=8 build_unflags = ${stm32_variant.build_unflags} -DUSBCON -DUSBD_USE_CDC -extra_scripts = ${stm32_variant.extra_scripts} - pre:buildroot/share/PlatformIO/scripts/random-bin.py monitor_speed = 115200 [env:STM32F401RC_creality_jlink] @@ -710,10 +709,9 @@ extends = stm32_variant board = marlin_CREALITY_STM32F401RE board_build.offset = 0x10000 board_upload.offset_address = 0x08010000 +board_build.rename = firmware-{date}-{time} build_flags = ${stm32_variant.build_flags} -DSTM32F401xE -DSTM32F4 -DSTM32F4_UPDATE_FOLDER build_unflags = ${stm32_variant.build_unflags} -DUSBCON -DUSBD_USE_CDC -extra_scripts = ${stm32_variant.extra_scripts} - pre:buildroot/share/PlatformIO/scripts/random-bin.py monitor_speed = 115200 [env:STM32F401RE_creality_jlink] From 3706c16729ba095a9845128022408a0c07cde221 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Fri, 9 Jun 2023 19:59:23 +1200 Subject: [PATCH 538/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20dummy=20thermistor?= =?UTF-8?q?s=20998-999=20(#25956)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_adv.h | 58 +++++++++++++++---------------- Marlin/src/module/temperature.cpp | 2 +- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 683eeb3da2..4892ff24b1 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -364,12 +364,12 @@ #define TEMP_SENSOR_0_IS_AD8495 1 #elif TEMP_SENSOR_0 == -1 #define TEMP_SENSOR_0_IS_AD595 1 -#elif TEMP_SENSOR_0 == 998 || TEMP_SENSOR_0 == 999 - #define TEMP_SENSOR_0_IS_DUMMY 1 #elif TEMP_SENSOR_0 > 0 #define TEMP_SENSOR_0_IS_THERMISTOR 1 #if TEMP_SENSOR_0 == 1000 #define TEMP_SENSOR_0_IS_CUSTOM 1 + #elif TEMP_SENSOR_0 == 998 || TEMP_SENSOR_0 == 999 + #define TEMP_SENSOR_0_IS_DUMMY 1 #endif #endif @@ -407,12 +407,12 @@ #define TEMP_SENSOR_1_IS_AD8495 1 #elif TEMP_SENSOR_1 == -1 #define TEMP_SENSOR_1_IS_AD595 1 -#elif TEMP_SENSOR_1 == 998 || TEMP_SENSOR_1 == 999 - #define TEMP_SENSOR_1_IS_DUMMY 1 #elif TEMP_SENSOR_1 > 0 #define TEMP_SENSOR_1_IS_THERMISTOR 1 #if TEMP_SENSOR_1 == 1000 #define TEMP_SENSOR_1_IS_CUSTOM 1 + #elif TEMP_SENSOR_1 == 998 || TEMP_SENSOR_1 == 999 + #define TEMP_SENSOR_1_IS_DUMMY 1 #endif #endif @@ -450,57 +450,57 @@ #define TEMP_SENSOR_2_IS_AD8495 1 #elif TEMP_SENSOR_2 == -1 #define TEMP_SENSOR_2_IS_AD595 1 -#elif TEMP_SENSOR_2 == 998 || TEMP_SENSOR_2 == 999 - #define TEMP_SENSOR_2_IS_DUMMY 1 #elif TEMP_SENSOR_2 > 0 #define TEMP_SENSOR_2_IS_THERMISTOR 1 #if TEMP_SENSOR_2 == 1000 #define TEMP_SENSOR_2_IS_CUSTOM 1 + #elif TEMP_SENSOR_2 == 998 || TEMP_SENSOR_2 == 999 + #define TEMP_SENSOR_2_IS_DUMMY 1 #endif #endif -#if TEMP_SENSOR_3 == 998 || TEMP_SENSOR_3 == 999 - #define TEMP_SENSOR_3_IS_DUMMY 1 -#elif TEMP_SENSOR_3 > 0 +#if TEMP_SENSOR_3 > 0 #define TEMP_SENSOR_3_IS_THERMISTOR 1 #if TEMP_SENSOR_3 == 1000 #define TEMP_SENSOR_3_IS_CUSTOM 1 + #elif TEMP_SENSOR_3 == 998 || TEMP_SENSOR_3 == 999 + #define TEMP_SENSOR_3_IS_DUMMY 1 #endif #endif -#if TEMP_SENSOR_4 == 998 || TEMP_SENSOR_4 == 999 - #define TEMP_SENSOR_4_IS_DUMMY 1 -#elif TEMP_SENSOR_4 > 0 +#if TEMP_SENSOR_4 > 0 #define TEMP_SENSOR_4_IS_THERMISTOR 1 #if TEMP_SENSOR_4 == 1000 #define TEMP_SENSOR_4_IS_CUSTOM 1 + #elif TEMP_SENSOR_4 == 998 || TEMP_SENSOR_4 == 999 + #define TEMP_SENSOR_4_IS_DUMMY 1 #endif #endif -#if TEMP_SENSOR_5 == 998 || TEMP_SENSOR_5 == 999 - #define TEMP_SENSOR_5_IS_DUMMY 1 -#elif TEMP_SENSOR_5 > 0 +#if TEMP_SENSOR_5 > 0 #define TEMP_SENSOR_5_IS_THERMISTOR 1 #if TEMP_SENSOR_5 == 1000 #define TEMP_SENSOR_5_IS_CUSTOM 1 + #elif TEMP_SENSOR_5 == 998 || TEMP_SENSOR_5 == 999 + #define TEMP_SENSOR_5_IS_DUMMY 1 #endif #endif -#if TEMP_SENSOR_6 == 998 || TEMP_SENSOR_6 == 999 - #define TEMP_SENSOR_6_IS_DUMMY 1 -#elif TEMP_SENSOR_6 > 0 +#if TEMP_SENSOR_6 > 0 #define TEMP_SENSOR_6_IS_THERMISTOR 1 #if TEMP_SENSOR_6 == 1000 #define TEMP_SENSOR_6_IS_CUSTOM 1 + #elif TEMP_SENSOR_6 == 998 || TEMP_SENSOR_6 == 999 + #define TEMP_SENSOR_6_IS_DUMMY 1 #endif #endif -#if TEMP_SENSOR_7 == 998 || TEMP_SENSOR_7 == 999 - #define TEMP_SENSOR_7_IS_DUMMY 1 -#elif TEMP_SENSOR_7 > 0 +#if TEMP_SENSOR_7 > 0 #define TEMP_SENSOR_7_IS_THERMISTOR 1 #if TEMP_SENSOR_7 == 1000 #define TEMP_SENSOR_7_IS_CUSTOM 1 + #elif TEMP_SENSOR_7 == 998 || TEMP_SENSOR_7 == 999 + #define TEMP_SENSOR_7_IS_DUMMY 1 #endif #endif @@ -680,12 +680,12 @@ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_BED." #elif TEMP_SENSOR_BED == -1 #define TEMP_SENSOR_BED_IS_AD595 1 -#elif TEMP_SENSOR_BED == 998 || TEMP_SENSOR_BED == 999 - #define TEMP_SENSOR_BED_IS_DUMMY 1 #elif TEMP_SENSOR_BED > 0 #define TEMP_SENSOR_BED_IS_THERMISTOR 1 #if TEMP_SENSOR_BED == 1000 #define TEMP_SENSOR_BED_IS_CUSTOM 1 + #elif TEMP_SENSOR_BED == 998 || TEMP_SENSOR_BED == 999 + #define TEMP_SENSOR_BED_IS_DUMMY 1 #endif #else #undef BED_MINTEMP @@ -700,12 +700,12 @@ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_CHAMBER." #elif TEMP_SENSOR_CHAMBER == -1 #define TEMP_SENSOR_CHAMBER_IS_AD595 1 -#elif TEMP_SENSOR_CHAMBER == 998 || TEMP_SENSOR_CHAMBER == 999 - #define TEMP_SENSOR_CHAMBER_IS_DUMMY 1 #elif TEMP_SENSOR_CHAMBER > 0 #define TEMP_SENSOR_CHAMBER_IS_THERMISTOR 1 #if TEMP_SENSOR_CHAMBER == 1000 #define TEMP_SENSOR_CHAMBER_IS_CUSTOM 1 + #elif TEMP_SENSOR_CHAMBER == 998 || TEMP_SENSOR_CHAMBER == 999 + #define TEMP_SENSOR_CHAMBER_IS_DUMMY 1 #endif #else #undef THERMAL_PROTECTION_CHAMBER @@ -742,12 +742,12 @@ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_PROBE." #elif TEMP_SENSOR_PROBE == -1 #define TEMP_SENSOR_PROBE_IS_AD595 1 -#elif TEMP_SENSOR_PROBE == 998 || TEMP_SENSOR_PROBE == 999 - #define TEMP_SENSOR_PROBE_IS_DUMMY 1 #elif TEMP_SENSOR_PROBE > 0 #define TEMP_SENSOR_PROBE_IS_THERMISTOR 1 #if TEMP_SENSOR_PROBE == 1000 #define TEMP_SENSOR_PROBE_IS_CUSTOM 1 + #elif TEMP_SENSOR_PROBE == 998 || TEMP_SENSOR_PROBE == 999 + #define TEMP_SENSOR_PROBE_IS_DUMMY 1 #endif #endif @@ -759,12 +759,12 @@ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_BOARD." #elif TEMP_SENSOR_BOARD == -1 #define TEMP_SENSOR_BOARD_IS_AD595 1 -#elif TEMP_SENSOR_BOARD == 998 || TEMP_SENSOR_BOARD == 999 - #define TEMP_SENSOR_BOARD_IS_DUMMY 1 #elif TEMP_SENSOR_BOARD > 0 #define TEMP_SENSOR_BOARD_IS_THERMISTOR 1 #if TEMP_SENSOR_BOARD == 1000 #define TEMP_SENSOR_BOARD_IS_CUSTOM 1 + #elif TEMP_SENSOR_BOARD == 998 || TEMP_SENSOR_BOARD == 999 + #define TEMP_SENSOR_BOARD_IS_DUMMY 1 #endif #endif diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 56f5f8b983..4d366198c1 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2943,7 +2943,7 @@ void Temperature::init() { temp_range[NR].raw_max -= TEMPDIR(NR) * (OVERSAMPLENR); \ }while(0) - #define _MINMAX_TEST(N,M) (HOTENDS > N && TEMP_SENSOR_##N##_IS_THERMISTOR && defined(HEATER_##N##_##M##TEMP)) + #define _MINMAX_TEST(N,M) (!TEMP_SENSOR_##N##_IS_DUMMY && HOTENDS > N && TEMP_SENSOR_##N##_IS_THERMISTOR && defined(HEATER_##N##_##M##TEMP)) #if _MINMAX_TEST(0, MIN) _TEMP_MIN_E(0); From b5d3d0141f5169ba79a99876af7b0c274cb382be Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 10 Jun 2023 00:22:22 +0000 Subject: [PATCH 539/659] [cron] Bump distribution date (2023-06-10) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 50dfbcd3a3..3631000cbe 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-09" +//#define STRING_DISTRIBUTION_DATE "2023-06-10" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 8c544a11c7..6fce969575 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-09" + #define STRING_DISTRIBUTION_DATE "2023-06-10" #endif /** From 00ab015de7b728082196c203626dd215dc8427d3 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Sat, 10 Jun 2023 17:20:50 -0700 Subject: [PATCH 540/659] =?UTF-8?q?=F0=9F=94=A8=20Firmware=20rename=20foll?= =?UTF-8?q?owup=20(#25966)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25957 --- ini/stm32f1-maple.ini | 6 +++--- ini/stm32f1.ini | 2 +- ini/stm32f4.ini | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ini/stm32f1-maple.ini b/ini/stm32f1-maple.ini index 88a6f8b492..6f9ac32e0e 100644 --- a/ini/stm32f1-maple.ini +++ b/ini/stm32f1-maple.ini @@ -118,7 +118,7 @@ extends = env:STM32F103RE_maple build_flags = ${env:STM32F103RE_maple.build_flags} -DTEMP_TIMER_CHAN=4 board_build.address = 0x08007000 board_build.ldscript = creality.ld -board_build.rename = firmware-{date}-{time} +board_build.rename = firmware-{date}-{time}.bin debug_tool = jlink upload_protocol = jlink @@ -130,7 +130,7 @@ extends = env:STM32F103RC_maple build_flags = ${env:STM32F103RC_maple.build_flags} -DTEMP_TIMER_CHAN=4 board_build.address = 0x08007000 board_build.ldscript = creality.ld -board_build.rename = firmware-{date}-{time} +board_build.rename = firmware-{date}-{time}.bin debug_tool = jlink upload_protocol = jlink @@ -398,7 +398,7 @@ extends = env:STM32F103RE_maple build_flags = ${STM32F1_maple.build_flags} -DTEMP_TIMER_CHAN=4 board_build.address = 0x08007000 board_build.ldscript = sovol.ld -board_build.rename = firmware-{date}-{time} +board_build.rename = firmware-{date}-{time}.bin extra_scripts = ${STM32F1_maple.extra_scripts} buildroot/share/PlatformIO/scripts/custom_board.py debug_tool = jlink diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini index feb64a098f..08686a1fb4 100644 --- a/ini/stm32f1.ini +++ b/ini/stm32f1.ini @@ -121,7 +121,7 @@ debug_tool = stlink extends = stm32_variant board_build.variant = MARLIN_F103Rx board_build.offset = 0x7000 -board_build.rename = firmware-{date}-{time} +board_build.rename = firmware-{date}-{time}.bin board_upload.offset_address = 0x08007000 build_flags = ${stm32_variant.build_flags} -DMCU_STM32F103RE -DHAL_SD_MODULE_ENABLED diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini index 67c2c6033c..7efb31107b 100644 --- a/ini/stm32f4.ini +++ b/ini/stm32f4.ini @@ -684,7 +684,7 @@ board = genericSTM32F401RC board_build.variant = MARLIN_CREALITY_STM32F401RC board_build.offset = 0x10000 board_upload.offset_address = 0x08010000 -board_build.rename = firmware-{date}-{time} +board_build.rename = firmware-{date}-{time}.bin build_flags = ${stm32_variant.build_flags} -DMCU_STM32F401RC -DSTM32F4 -DSS_TIMER=4 -DTIMER_SERVO=TIM5 -DENABLE_HWSERIAL3 -DTRANSFER_CLOCK_DIV=8 @@ -709,7 +709,7 @@ extends = stm32_variant board = marlin_CREALITY_STM32F401RE board_build.offset = 0x10000 board_upload.offset_address = 0x08010000 -board_build.rename = firmware-{date}-{time} +board_build.rename = firmware-{date}-{time}.bin build_flags = ${stm32_variant.build_flags} -DSTM32F401xE -DSTM32F4 -DSTM32F4_UPDATE_FOLDER build_unflags = ${stm32_variant.build_unflags} -DUSBCON -DUSBD_USE_CDC monitor_speed = 115200 From 85067e14b5cd9a1d4d8ac8f38a763e9745d4fe61 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 11 Jun 2023 00:29:06 +0000 Subject: [PATCH 541/659] [cron] Bump distribution date (2023-06-11) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 3631000cbe..28c9903fdf 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-10" +//#define STRING_DISTRIBUTION_DATE "2023-06-11" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 6fce969575..86700d9c8b 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-10" + #define STRING_DISTRIBUTION_DATE "2023-06-11" #endif /** From bea1a914bee6caf6ff63a4c0ab65a2b7ddea9de8 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Sun, 11 Jun 2023 14:49:37 -0700 Subject: [PATCH 542/659] =?UTF-8?q?=F0=9F=94=A8=20SKR=20Mini=20E3=20v3.0.1?= =?UTF-8?q?=20XFER=20(#25955)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/SanityCheck.h | 4 ++-- Marlin/src/pins/pins.h | 2 +- ini/stm32f4.ini | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 00b5321205..f4d1ff8365 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -3988,8 +3988,8 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." #endif // Check requirements for upload.py -#if ENABLED(XFER_BUILD) && !ALL(BINARY_FILE_TRANSFER, CUSTOM_FIRMWARE_UPLOAD) - #error "BINARY_FILE_TRANSFER and CUSTOM_FIRMWARE_UPLOAD are required for custom upload." +#if ENABLED(XFER_BUILD) && !ALL(SDSUPPORT, BINARY_FILE_TRANSFER, CUSTOM_FIRMWARE_UPLOAD) + #error "SDSUPPORT, BINARY_FILE_TRANSFER, and CUSTOM_FIRMWARE_UPLOAD are required for custom upload." #endif /** diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index d4ec9f22c0..e15aeb5c4b 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -613,7 +613,7 @@ #elif MB(BTT_MANTA_M8P_V1_1) #include "stm32g0/pins_BTT_MANTA_M8P_V1_1.h" // STM32G0 env:STM32G0B1VE_btt env:STM32G0B1VE_btt_xfer #elif MB(BTT_SKR_MINI_E3_V3_0_1) - #include "stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h"// STM32F4 env:STM32F401RC_btt + #include "stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h"// STM32F4 env:STM32F401RC_btt env:STM32F401RC_btt_xfer #elif MB(BTT_SKR_MINI_MZ_V1_0) #include "stm32f1/pins_BTT_SKR_MINI_MZ_V1_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple #elif MB(BTT_SKR_E3_DIP) diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini index 7efb31107b..8708a6dbca 100644 --- a/ini/stm32f4.ini +++ b/ini/stm32f4.ini @@ -743,6 +743,20 @@ build_flags = ${stm32_variant.build_flags} upload_protocol = stlink debug_tool = stlink +# +# BigTreeTech SKR Mini E3 V3.0.1 (STM32F401RCT6 ARM Cortex-M0+) +# Custom upload to SD via Marlin with Binary Protocol +# Requires Marlin with BINARY_FILE_TRANSFER already installed on the target board. +# If CUSTOM_FIRMWARE_UPLOAD is also installed, Marlin will reboot the board to install the firmware. +# Currently CUSTOM_FIRMWARE_UPLOAD must also be enabled to use 'xfer' build envs. +# +[env:STM32F401RC_btt_xfer] +extends = env:STM32F401RC_btt +build_flags = ${env:STM32F401RC_btt.build_flags} -DXFER_BUILD +extra_scripts = ${env:STM32F401RC_btt.extra_scripts} + pre:buildroot/share/scripts/upload.py +upload_protocol = custom + # # MKS SKIPR v1.0 all-in-one board (STM32F407VE) # From d9d2dae88391b0bbfa131f56fa49d3f472683023 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 12 Jun 2023 00:25:11 +0000 Subject: [PATCH 543/659] [cron] Bump distribution date (2023-06-12) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 28c9903fdf..e61748682a 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-11" +//#define STRING_DISTRIBUTION_DATE "2023-06-12" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 86700d9c8b..dc724713c4 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-11" + #define STRING_DISTRIBUTION_DATE "2023-06-12" #endif /** From 2ef71c6ebaa1f1b496eb369879fe22c69cf9adb4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 12 Jun 2023 16:38:14 -0500 Subject: [PATCH 544/659] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Simplify=20SERIAL?= =?UTF-8?q?=5FECHO=20(#25928)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since this increases AVR code size, try to optimize further. --- Marlin/src/HAL/LPC1768/eeprom_sdcard.cpp | 12 +- Marlin/src/HAL/shared/Delay.cpp | 8 +- Marlin/src/MarlinCore.cpp | 2 +- Marlin/src/core/debug_out.h | 24 --- Marlin/src/core/debug_section.h | 7 +- Marlin/src/core/serial.cpp | 45 +++- Marlin/src/core/serial.h | 192 +++++------------- Marlin/src/core/serial_base.h | 5 +- Marlin/src/core/types.h | 30 +++ Marlin/src/core/utility.cpp | 10 +- Marlin/src/core/utility.h | 19 ++ Marlin/src/feature/bedlevel/bedlevel.cpp | 4 +- .../bedlevel/mbl/mesh_bed_leveling.cpp | 3 +- Marlin/src/feature/bedlevel/ubl/ubl.cpp | 7 +- Marlin/src/feature/bedlevel/ubl/ubl.h | 6 +- Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 139 +++++-------- Marlin/src/feature/encoder_i2c.cpp | 5 +- Marlin/src/feature/host_actions.cpp | 5 +- Marlin/src/feature/max7219.cpp | 4 +- Marlin/src/feature/meatpack.cpp | 2 +- Marlin/src/feature/mixing.cpp | 13 +- Marlin/src/feature/mixing.h | 28 ++- Marlin/src/feature/mmu/mmu2.cpp | 2 +- Marlin/src/feature/pause.cpp | 2 +- Marlin/src/feature/powerloss.cpp | 9 +- Marlin/src/feature/probe_temp_comp.cpp | 11 +- Marlin/src/feature/runout.h | 6 +- Marlin/src/feature/stepper_driver_safety.cpp | 3 +- Marlin/src/feature/tmc_util.cpp | 10 +- Marlin/src/feature/twibus.cpp | 3 +- Marlin/src/gcode/bedlevel/G35.cpp | 17 +- Marlin/src/gcode/bedlevel/M420.cpp | 2 +- Marlin/src/gcode/bedlevel/abl/G29.cpp | 12 +- Marlin/src/gcode/calibrate/G28.cpp | 2 +- Marlin/src/gcode/calibrate/G33.cpp | 11 +- Marlin/src/gcode/calibrate/G34_M422.cpp | 5 +- Marlin/src/gcode/calibrate/G76_M871.cpp | 2 +- Marlin/src/gcode/calibrate/M100.cpp | 4 +- Marlin/src/gcode/calibrate/M48.cpp | 19 +- Marlin/src/gcode/calibrate/M852.cpp | 6 +- Marlin/src/gcode/config/M218.cpp | 6 +- Marlin/src/gcode/config/M302.cpp | 4 +- Marlin/src/gcode/config/M43.cpp | 4 +- Marlin/src/gcode/config/M92.cpp | 2 +- Marlin/src/gcode/control/M80_M81.cpp | 2 +- Marlin/src/gcode/feature/advance/M900.cpp | 8 +- Marlin/src/gcode/feature/ft_motion/M493.cpp | 22 +- .../src/gcode/feature/network/M552-M554.cpp | 3 +- Marlin/src/gcode/feature/pause/G61.cpp | 3 +- Marlin/src/gcode/feature/powerloss/M1000.cpp | 3 +- Marlin/src/gcode/feature/powerloss/M413.cpp | 4 +- Marlin/src/gcode/feature/trinamic/M569.cpp | 8 +- Marlin/src/gcode/gcode.cpp | 5 +- Marlin/src/gcode/geometry/G17-G19.cpp | 2 +- Marlin/src/gcode/probe/G30.cpp | 2 +- Marlin/src/gcode/queue.cpp | 2 +- Marlin/src/gcode/stats/M31.cpp | 2 +- Marlin/src/gcode/temp/M306.cpp | 16 +- Marlin/src/gcode/units/M149.cpp | 3 +- Marlin/src/inc/Conditionals_post.h | 3 + Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 18 +- Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp | 18 +- .../lcd/extui/anycubic_chiron/chiron_tft.cpp | 25 +-- .../src/lcd/extui/anycubic_vyper/dgus_tft.cpp | 6 +- .../lcd/extui/dgus/DGUSScreenHandlerBase.h | 2 +- Marlin/src/lcd/extui/nextion/nextion_tft.cpp | 26 +-- Marlin/src/lcd/menu/menu_configuration.cpp | 9 +- Marlin/src/lcd/utf8.cpp | 9 +- Marlin/src/libs/vector_3.cpp | 11 +- Marlin/src/module/endstops.cpp | 5 +- Marlin/src/module/probe.cpp | 2 +- Marlin/src/module/settings.cpp | 10 +- Marlin/src/module/temperature.cpp | 41 ++-- Marlin/src/pins/pinsDebug.h | 8 +- Marlin/src/sd/cardreader.cpp | 7 +- docs/Serial.md | 3 - 76 files changed, 398 insertions(+), 602 deletions(-) diff --git a/Marlin/src/HAL/LPC1768/eeprom_sdcard.cpp b/Marlin/src/HAL/LPC1768/eeprom_sdcard.cpp index 1991d79719..5ebd437c1e 100644 --- a/Marlin/src/HAL/LPC1768/eeprom_sdcard.cpp +++ b/Marlin/src/HAL/LPC1768/eeprom_sdcard.cpp @@ -91,15 +91,9 @@ bool PersistentStore::access_finish() { static void debug_rw(const bool write, int &pos, const uint8_t *value, const size_t size, const FRESULT s, const size_t total=0) { #if ENABLED(DEBUG_SD_EEPROM_EMULATION) FSTR_P const rw_str = write ? F("write") : F("read"); - SERIAL_CHAR(' '); - SERIAL_ECHOF(rw_str); - SERIAL_ECHOLNPGM("_data(", pos, ",", *value, ",", size, ", ...)"); - if (total) { - SERIAL_ECHOPGM(" f_"); - SERIAL_ECHOF(rw_str); - SERIAL_ECHOPGM("()=", s, "\n size=", size, "\n bytes_"); - SERIAL_ECHOLNF(write ? F("written=") : F("read="), total); - } + SERIAL_ECHOLN(AS_CHAR(' '), rw_str, F("_data("), pos, AS_CHAR(','), *value, AS_CHAR(','), size, F(", ...)")); + if (total) + SERIAL_ECHOLN(F(" f_"), rw_str, F("()="), s, F("\n size="), size, F("\n bytes_"), write ? F("written=") : F("read="), total); else SERIAL_ECHOLNPGM(" f_lseek()=", s); #endif diff --git a/Marlin/src/HAL/shared/Delay.cpp b/Marlin/src/HAL/shared/Delay.cpp index c64376d25d..31c3f45765 100644 --- a/Marlin/src/HAL/shared/Delay.cpp +++ b/Marlin/src/HAL/shared/Delay.cpp @@ -109,13 +109,7 @@ #if ENABLED(MARLIN_DEV_MODE) void dump_delay_accuracy_check() { auto report_call_time = [](FSTR_P const name, FSTR_P const unit, const uint32_t cycles, const uint32_t total, const bool do_flush=true) { - SERIAL_ECHOPGM("Calling "); - SERIAL_ECHOF(name); - SERIAL_ECHOLNPGM(" for ", cycles); - SERIAL_ECHOF(unit); - SERIAL_ECHOLNPGM(" took: ", total); - SERIAL_CHAR(' '); - SERIAL_ECHOF(unit); + SERIAL_ECHOLN(F("Calling "), name, F(" for "), cycles, AS_CHAR(' '), unit, F(" took: "), total, AS_CHAR(' '), unit); if (do_flush) SERIAL_FLUSHTX(); }; diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index ac5a6b7ff9..09d398eb87 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -882,7 +882,7 @@ void kill(FSTR_P const lcd_error/*=nullptr*/, FSTR_P const lcd_component/*=nullp TERN_(HAS_CUTTER, cutter.kill()); // Full cutter shutdown including ISR control // Echo the LCD message to serial for extra context - if (lcd_error) { SERIAL_ECHO_START(); SERIAL_ECHOLNF(lcd_error); } + if (lcd_error) { SERIAL_ECHO_START(); SERIAL_ECHOLN(lcd_error); } #if HAS_DISPLAY ui.kill_screen(lcd_error ?: GET_TEXT_F(MSG_KILLED), lcd_component ?: FPSTR(NUL_STR)); diff --git a/Marlin/src/core/debug_out.h b/Marlin/src/core/debug_out.h index eb1c91e507..92ee233e03 100644 --- a/Marlin/src/core/debug_out.h +++ b/Marlin/src/core/debug_out.h @@ -31,19 +31,11 @@ #undef DEBUG_ERROR_START #undef DEBUG_CHAR #undef DEBUG_ECHO -#undef DEBUG_DECIMAL -#undef DEBUG_ECHO_F #undef DEBUG_ECHOLN #undef DEBUG_ECHOPGM #undef DEBUG_ECHOLNPGM -#undef DEBUG_ECHOF -#undef DEBUG_ECHOLNF #undef DEBUG_ECHOPGM_P #undef DEBUG_ECHOLNPGM_P -#undef DEBUG_ECHOPAIR_F -#undef DEBUG_ECHOPAIR_F_P -#undef DEBUG_ECHOLNPAIR_F -#undef DEBUG_ECHOLNPAIR_F_P #undef DEBUG_ECHO_MSG #undef DEBUG_ERROR_MSG #undef DEBUG_EOL @@ -62,21 +54,13 @@ #define DEBUG_ERROR_START SERIAL_ERROR_START #define DEBUG_CHAR SERIAL_CHAR #define DEBUG_ECHO SERIAL_ECHO - #define DEBUG_DECIMAL SERIAL_DECIMAL - #define DEBUG_ECHO_F SERIAL_ECHO_F #define DEBUG_ECHOLN SERIAL_ECHOLN #define DEBUG_ECHOPGM SERIAL_ECHOPGM #define DEBUG_ECHOLNPGM SERIAL_ECHOLNPGM - #define DEBUG_ECHOF SERIAL_ECHOF - #define DEBUG_ECHOLNF SERIAL_ECHOLNF #define DEBUG_ECHOPGM SERIAL_ECHOPGM #define DEBUG_ECHOPGM_P SERIAL_ECHOPGM_P - #define DEBUG_ECHOPAIR_F SERIAL_ECHOPAIR_F - #define DEBUG_ECHOPAIR_F_P SERIAL_ECHOPAIR_F_P #define DEBUG_ECHOLNPGM SERIAL_ECHOLNPGM #define DEBUG_ECHOLNPGM_P SERIAL_ECHOLNPGM_P - #define DEBUG_ECHOLNPAIR_F SERIAL_ECHOLNPAIR_F - #define DEBUG_ECHOLNPAIR_F_P SERIAL_ECHOLNPAIR_F_P #define DEBUG_ECHO_MSG SERIAL_ECHO_MSG #define DEBUG_ERROR_MSG SERIAL_ERROR_MSG #define DEBUG_EOL SERIAL_EOL @@ -93,19 +77,11 @@ #define DEBUG_ERROR_START() NOOP #define DEBUG_CHAR(...) NOOP #define DEBUG_ECHO(...) NOOP - #define DEBUG_DECIMAL(...) NOOP - #define DEBUG_ECHO_F(...) NOOP #define DEBUG_ECHOLN(...) NOOP #define DEBUG_ECHOPGM(...) NOOP #define DEBUG_ECHOLNPGM(...) NOOP - #define DEBUG_ECHOF(...) NOOP - #define DEBUG_ECHOLNF(...) NOOP #define DEBUG_ECHOPGM_P(...) NOOP #define DEBUG_ECHOLNPGM_P(...) NOOP - #define DEBUG_ECHOPAIR_F(...) NOOP - #define DEBUG_ECHOPAIR_F_P(...) NOOP - #define DEBUG_ECHOLNPAIR_F(...) NOOP - #define DEBUG_ECHOLNPAIR_F_P(...) NOOP #define DEBUG_ECHO_MSG(...) NOOP #define DEBUG_ERROR_MSG(...) NOOP #define DEBUG_EOL() NOOP diff --git a/Marlin/src/core/debug_section.h b/Marlin/src/core/debug_section.h index 6e23d9e4ed..dc4cc0143c 100644 --- a/Marlin/src/core/debug_section.h +++ b/Marlin/src/core/debug_section.h @@ -38,11 +38,8 @@ private: bool debug; void echo_msg(FSTR_P const fpre) { - SERIAL_ECHOF(fpre); - if (the_msg) { - SERIAL_CHAR(' '); - SERIAL_ECHOF(the_msg); - } + SERIAL_ECHO(fpre); + if (the_msg) SERIAL_ECHO(AS_CHAR(' '), the_msg); SERIAL_CHAR(' '); print_pos(current_position); } diff --git a/Marlin/src/core/serial.cpp b/Marlin/src/core/serial.cpp index 8f3a59c814..bda1527545 100644 --- a/Marlin/src/core/serial.cpp +++ b/Marlin/src/core/serial.cpp @@ -68,26 +68,51 @@ MAP(_N_LBL, LOGICAL_AXIS_NAMES); MAP(_SP_N_LBL, LOGICAL_AXIS_NAMES); #endif -void serial_print_P(PGM_P str) { - while (const char c = pgm_read_byte(str++)) SERIAL_CHAR(c); +// Specializations for float, p_float_t, w_float_t +template <> void SERIAL_ECHO(const float f) { SERIAL_IMPL.print(f); } +template <> void SERIAL_ECHO(const p_float_t pf) { SERIAL_IMPL.print(pf.value, pf.prec); } +template <> void SERIAL_ECHO(const w_float_t wf) { char f1[20]; SERIAL_IMPL.print(dtostrf(wf.value, wf.width, wf.prec, f1)); } + +// Specializations for F-string +template <> void SERIAL_ECHO(const FSTR_P fstr) { SERIAL_ECHO_P(FTOP(fstr)); } +template <> void SERIAL_ECHOLN(const FSTR_P fstr) { SERIAL_ECHOLN_P(FTOP(fstr)); } + +void SERIAL_CHAR(char a) { SERIAL_IMPL.write(a); } +void SERIAL_EOL() { SERIAL_CHAR('\n'); } + +void SERIAL_ECHO(serial_char_t x) { SERIAL_IMPL.write(x.c); } + +void SERIAL_FLUSH() { SERIAL_IMPL.flush(); } +void SERIAL_FLUSHTX() { SERIAL_IMPL.flushTX(); } + +void SERIAL_ECHO_P(PGM_P pstr) { + while (const char c = pgm_read_byte(pstr++)) SERIAL_CHAR(c); } +void SERIAL_ECHOLN_P(PGM_P pstr) { SERIAL_ECHO_P(pstr); SERIAL_EOL(); } -void serial_echo_start() { serial_print(F("echo:")); } -void serial_error_start() { serial_print(F("Error:")); } +void SERIAL_ECHO_START() { SERIAL_ECHO(F("echo:")); } +void SERIAL_ERROR_START() { SERIAL_ECHO(F("Error:")); } -void serial_spaces(uint8_t count) { count *= (PROPORTIONAL_FONT_RATIO); while (count--) SERIAL_CHAR(' '); } +void SERIAL_ECHO_SP(uint8_t count) { count *= (PROPORTIONAL_FONT_RATIO); while (count--) SERIAL_CHAR(' '); } void serial_offset(const_float_t v, const uint8_t sp/*=0*/) { if (v == 0 && sp == 1) SERIAL_CHAR(' '); else if (v > 0 || (v == 0 && sp == 2)) SERIAL_CHAR('+'); - SERIAL_DECIMAL(v); + SERIAL_ECHO(v); } -void serialprint_onoff(const bool onoff) { serial_print(onoff ? F(STR_ON) : F(STR_OFF)); } +void serial_ternary(FSTR_P const pre, const bool onoff, FSTR_P const on, FSTR_P const off, FSTR_P const post/*=nullptr*/) { + if (pre) SERIAL_ECHO(pre); + if (onoff && on) SERIAL_ECHO(on); + if (!onoff && off) SERIAL_ECHO(off); + if (post) SERIAL_ECHO(post); +} + +void serialprint_onoff(const bool onoff) { SERIAL_ECHO(onoff ? F(STR_ON) : F(STR_OFF)); } void serialprintln_onoff(const bool onoff) { serialprint_onoff(onoff); SERIAL_EOL(); } -void serialprint_truefalse(const bool tf) { serial_print(tf ? F("true") : F("false")); } +void serialprint_truefalse(const bool tf) { SERIAL_ECHO(tf ? F("true") : F("false")); } void print_bin(uint16_t val) { for (uint8_t i = 16; i--;) { @@ -97,11 +122,11 @@ void print_bin(uint16_t val) { } void print_pos(NUM_AXIS_ARGS_(const_float_t) FSTR_P const prefix/*=nullptr*/, FSTR_P const suffix/*=nullptr*/) { - if (prefix) serial_print(prefix); + if (prefix) SERIAL_ECHO(prefix); #if NUM_AXES SERIAL_ECHOPGM_P( LIST_N(DOUBLE(NUM_AXES), SP_X_STR, x, SP_Y_STR, y, SP_Z_STR, z, SP_I_STR, i, SP_J_STR, j, SP_K_STR, k, SP_U_STR, u, SP_V_STR, v, SP_W_STR, w) ); #endif - if (suffix) serial_print(suffix); else SERIAL_EOL(); + if (suffix) SERIAL_ECHO(suffix); else SERIAL_EOL(); } diff --git a/Marlin/src/core/serial.h b/Marlin/src/core/serial.h index 62e1294e04..09f453d3b5 100644 --- a/Marlin/src/core/serial.h +++ b/Marlin/src/core/serial.h @@ -125,8 +125,6 @@ extern uint8_t marlin_debug_flags; #define SERIAL_IMPL SERIAL_LEAF_1 #endif -#define SERIAL_OUT(WHAT, V...) (void)SERIAL_IMPL.WHAT(V) - #define PORT_REDIRECT(p) _PORT_REDIRECT(1,p) #define PORT_RESTORE() _PORT_RESTORE(1) #define SERIAL_PORTMASK(P) SerialMask::from(P) @@ -134,65 +132,69 @@ extern uint8_t marlin_debug_flags; // // SERIAL_CHAR - Print one or more individual chars // -inline void SERIAL_CHAR(char a) { SERIAL_IMPL.write(a); } +void SERIAL_CHAR(char a); template void SERIAL_CHAR(char a, Args ... args) { SERIAL_IMPL.write(a); SERIAL_CHAR(args ...); } /** - * SERIAL_ECHO - Print a single string or value. + * SERIAL_ECHO / SERIAL_ECHOLN - Print a single string or value. * Any numeric parameter (including char) is printed as a base-10 number. * A string pointer or literal will be output as a string. * * NOTE: Use SERIAL_CHAR to print char as a single character. */ -template -void SERIAL_ECHO(T x) { SERIAL_IMPL.print(x); } +template void SERIAL_ECHO(T x) { SERIAL_IMPL.print(x); } +template void SERIAL_ECHOLN(T x) { SERIAL_IMPL.println(x); } // Wrapper for ECHO commands to interpret a char -typedef struct SerialChar { char c; SerialChar(char n) : c(n) { } } serial_char_t; -inline void SERIAL_ECHO(serial_char_t x) { SERIAL_IMPL.write(x.c); } -#define AS_CHAR(C) serial_char_t(C) +void SERIAL_ECHO(serial_char_t x); #define AS_DIGIT(C) AS_CHAR('0' + (C)) -template -void SERIAL_ECHOLN(T x) { SERIAL_IMPL.println(x); } - -// SERIAL_PRINT works like SERIAL_ECHO but also takes the numeric base -template -void SERIAL_PRINT(T x, U y) { SERIAL_IMPL.print(x, y); } - -template -void SERIAL_PRINTLN(T x, PrintBase y) { SERIAL_IMPL.println(x, y); } +// Print an integer with a numeric base such as PrintBase::Hex +template void SERIAL_PRINT(T x, PrintBase y) { SERIAL_IMPL.print(x, y); } +template void SERIAL_PRINTLN(T x, PrintBase y) { SERIAL_IMPL.println(x, y); } // Flush the serial port -inline void SERIAL_FLUSH() { SERIAL_IMPL.flush(); } -inline void SERIAL_FLUSHTX() { SERIAL_IMPL.flushTX(); } +void SERIAL_FLUSH(); +void SERIAL_FLUSHTX(); -// Serial echo and error prefixes -#define SERIAL_ECHO_START() serial_echo_start() -#define SERIAL_ERROR_START() serial_error_start() +// Start an echo: or error: output +void SERIAL_ECHO_START(); +void SERIAL_ERROR_START(); // Serial end-of-line -#define SERIAL_EOL() SERIAL_CHAR('\n') +void SERIAL_EOL(); // Print a single PROGMEM, PGM_P, or PSTR() string. -void serial_print_P(PGM_P str); -inline void serial_println_P(PGM_P str) { serial_print_P(str); SERIAL_EOL(); } +void SERIAL_ECHO_P(PGM_P pstr); +void SERIAL_ECHOLN_P(PGM_P pstr); -// Print a single FSTR_P, F(), or FPSTR() string. -inline void serial_print(FSTR_P const fstr) { serial_print_P(FTOP(fstr)); } -inline void serial_println(FSTR_P const fstr) { serial_println_P(FTOP(fstr)); } +// Specializations for float, p_float_t, and w_float_t +template<> void SERIAL_ECHO(const float f); +template<> void SERIAL_ECHO(const p_float_t pf); +template<> void SERIAL_ECHO(const w_float_t wf); + +// Specializations for F-string +template<> void SERIAL_ECHO(const FSTR_P fstr); +template<> void SERIAL_ECHOLN(const FSTR_P fstr); + +// Print any number of items with arbitrary types (except loose PROGMEM strings) +template +void SERIAL_ECHO(T arg1, Args ... args) { SERIAL_ECHO(arg1); SERIAL_ECHO(args ...); } +template +void SERIAL_ECHOLN(T arg1, Args ... args) { SERIAL_ECHO(arg1); SERIAL_ECHO(args ...); SERIAL_EOL(); } // -// SERIAL_ECHOPGM... macros are used to output string-value pairs. +// SERIAL_ECHOPGM... macros are used to output string-value pairs, wrapping +// all the odd loose string elements as PROGMEM strings. // // Print up to 20 pairs of values. Odd elements must be literal strings. #define __SEP_N(N,V...) _SEP_##N(V) #define _SEP_N(N,V...) __SEP_N(N,V) #define _SEP_N_REF() _SEP_N -#define _SEP_1(s) serial_print(F(s)); -#define _SEP_2(s,v) serial_echopair(F(s),v); +#define _SEP_1(s) SERIAL_ECHO(F(s)); +#define _SEP_2(s,v) SERIAL_ECHO(F(s),v); #define _SEP_3(s,v,V...) _SEP_2(s,v); DEFER2(_SEP_N_REF)()(TWO_ARGS(V),V); #define SERIAL_ECHOPGM(V...) do{ EVAL(_SEP_N(TWO_ARGS(V),V)); }while(0) @@ -200,8 +202,8 @@ inline void serial_println(FSTR_P const fstr) { serial_println_P(FTOP(fstr)); } #define __SELP_N(N,V...) _SELP_##N(V) #define _SELP_N(N,V...) __SELP_N(N,V) #define _SELP_N_REF() _SELP_N -#define _SELP_1(s) serial_print(F(s "\n")); -#define _SELP_2(s,v) serial_echolnpair(F(s),v); +#define _SELP_1(s) SERIAL_ECHO(F(s "\n")); +#define _SELP_2(s,v) SERIAL_ECHOLN(F(s),v); #define _SELP_3(s,v,V...) _SEP_2(s,v); DEFER2(_SELP_N_REF)()(TWO_ARGS(V),V); #define SERIAL_ECHOLNPGM(V...) do{ EVAL(_SELP_N(TWO_ARGS(V),V)); }while(0) @@ -209,8 +211,8 @@ inline void serial_println(FSTR_P const fstr) { serial_println_P(FTOP(fstr)); } #define __SEP_N_P(N,V...) _SEP_##N##_P(V) #define _SEP_N_P(N,V...) __SEP_N_P(N,V) #define _SEP_N_P_REF() _SEP_N_P -#define _SEP_1_P(p) serial_print_P(p); -#define _SEP_2_P(p,v) serial_echopair_P(p,v); +#define _SEP_1_P(p) SERIAL_ECHO(FPSTR(p)); +#define _SEP_2_P(p,v) SERIAL_ECHO(FPSTR(p),v); #define _SEP_3_P(p,v,V...) _SEP_2_P(p,v); DEFER2(_SEP_N_P_REF)()(TWO_ARGS(V),V); #define SERIAL_ECHOPGM_P(V...) do{ EVAL(_SEP_N_P(TWO_ARGS(V),V)); }while(0) @@ -218,125 +220,25 @@ inline void serial_println(FSTR_P const fstr) { serial_println_P(FTOP(fstr)); } #define __SELP_N_P(N,V...) _SELP_##N##_P(V) #define _SELP_N_P(N,V...) __SELP_N_P(N,V) #define _SELP_N_P_REF() _SELP_N_P -#define _SELP_1_P(p) serial_println_P(p) -#define _SELP_2_P(p,v) serial_echolnpair_P(p,v) +#define _SELP_1_P(p) SERIAL_ECHOLN(FPSTR(p)); +#define _SELP_2_P(p,v) SERIAL_ECHOLN(FPSTR(p),v); #define _SELP_3_P(p,v,V...) { _SEP_2_P(p,v); DEFER2(_SELP_N_P_REF)()(TWO_ARGS(V),V); } #define SERIAL_ECHOLNPGM_P(V...) do{ EVAL(_SELP_N_P(TWO_ARGS(V),V)); }while(0) -// Print up to 20 pairs of values. Odd elements must be FSTR_P, F(), or FPSTR(). -#define __SEP_N_F(N,V...) _SEP_##N##_F(V) -#define _SEP_N_F(N,V...) __SEP_N_F(N,V) -#define _SEP_N_F_REF() _SEP_N_F -#define _SEP_1_F(p) serial_print(p); -#define _SEP_2_F(p,v) serial_echopair(p,v); -#define _SEP_3_F(p,v,V...) _SEP_2_F(p,v); DEFER2(_SEP_N_F_REF)()(TWO_ARGS(V),V); -#define SERIAL_ECHOF(V...) do{ EVAL(_SEP_N_F(TWO_ARGS(V),V)); }while(0) - -// Print up to 20 pairs of values followed by newline. Odd elements must be FSTR_P, F(), or FPSTR(). -#define __SELP_N_F(N,V...) _SELP_##N##_F(V) -#define _SELP_N_F(N,V...) __SELP_N_F(N,V) -#define _SELP_N_F_REF() _SELP_N_F -#define _SELP_1_F(p) serial_println(p) -#define _SELP_2_F(p,v) serial_echolnpair(p,v) -#define _SELP_3_F(p,v,V...) { _SEP_2_F(p,v); DEFER2(_SELP_N_F_REF)()(TWO_ARGS(V),V); } -#define SERIAL_ECHOLNF(V...) do{ EVAL(_SELP_N_F(TWO_ARGS(V),V)); }while(0) - -#ifdef AllowDifferentTypeInList - - inline void SERIAL_ECHOLIST_IMPL() {} - template - void SERIAL_ECHOLIST_IMPL(T && t) { SERIAL_IMPL.print(t); } - - template - void SERIAL_ECHOLIST_IMPL(T && t, Args && ... args) { - SERIAL_IMPL.print(t); - serial_print(F(", ")); - SERIAL_ECHOLIST_IMPL(args...); - } - - template - void SERIAL_ECHOLIST(FSTR_P const str, Args && ... args) { - SERIAL_IMPL.print(FTOP(str)); - SERIAL_ECHOLIST_IMPL(args...); - } - -#else // Optimization if the listed type are all the same (seems to be the case in the codebase so use that instead) - - template - void SERIAL_ECHOLIST(FSTR_P const fstr, Args && ... args) { - serial_print(fstr); - typename Private::first_type_of::type values[] = { args... }; - constexpr size_t argsSize = sizeof...(args); - for (size_t i = 0; i < argsSize; i++) { - if (i) serial_print(F(", ")); - SERIAL_IMPL.print(values[i]); - } - } - -#endif - -// SERIAL_ECHO_F prints a floating point value with optional precision -inline void SERIAL_ECHO_F(EnsureDouble x, int digit=2) { SERIAL_IMPL.print(x, digit); } - -#define SERIAL_ECHOPAIR_F_P(P,V...) do{ serial_print_P(P); SERIAL_ECHO_F(V); }while(0) -#define SERIAL_ECHOLNPAIR_F_P(P,V...) do{ SERIAL_ECHOPAIR_F_P(P,V); SERIAL_EOL(); }while(0) - -#define SERIAL_ECHOPAIR_F_F(S,V...) do{ serial_print(S); SERIAL_ECHO_F(V); }while(0) -#define SERIAL_ECHOLNPAIR_F_F(S,V...) do{ SERIAL_ECHOPAIR_F_F(S,V); SERIAL_EOL(); }while(0) - -#define SERIAL_ECHOPAIR_F(S,V...) SERIAL_ECHOPAIR_F_F(F(S),V) -#define SERIAL_ECHOLNPAIR_F(V...) do{ SERIAL_ECHOPAIR_F(V); SERIAL_EOL(); }while(0) - -#define SERIAL_ECHO_MSG(V...) do{ SERIAL_ECHO_START(); SERIAL_ECHOLNPGM(V); }while(0) -#define SERIAL_ERROR_MSG(V...) do{ SERIAL_ERROR_START(); SERIAL_ECHOLNPGM(V); }while(0) - -#define SERIAL_ECHO_SP(C) serial_spaces(C) +#define SERIAL_ECHO_MSG(V...) do{ SERIAL_ECHO_START(); SERIAL_ECHOLNPGM(V); }while(0) +#define SERIAL_ERROR_MSG(V...) do{ SERIAL_ERROR_START(); SERIAL_ECHOLNPGM(V); }while(0) +// Print a prefix, conditional string, and suffix +void serial_ternary(FSTR_P const pre, const bool onoff, FSTR_P const on, FSTR_P const off, FSTR_P const post=nullptr); +// Shorthand to put loose strings in PROGMEM #define SERIAL_ECHO_TERNARY(TF, PRE, ON, OFF, POST) serial_ternary(F(PRE), TF, F(ON), F(OFF), F(POST)) -#if SERIAL_FLOAT_PRECISION - #define SERIAL_DECIMAL(V) SERIAL_PRINT(V, SERIAL_FLOAT_PRECISION) -#else - #define SERIAL_DECIMAL(V) SERIAL_ECHO(V) -#endif +// Print up to 255 spaces +void SERIAL_ECHO_SP(uint8_t count); -// -// Functions for serial printing from PROGMEM. (Saves loads of SRAM.) -// -inline void serial_echopair_P(PGM_P const pstr, serial_char_t v) { serial_print_P(pstr); SERIAL_CHAR(v.c); } -inline void serial_echopair_P(PGM_P const pstr, float v) { serial_print_P(pstr); SERIAL_DECIMAL(v); } -inline void serial_echopair_P(PGM_P const pstr, double v) { serial_print_P(pstr); SERIAL_DECIMAL(v); } -//inline void serial_echopair_P(PGM_P const pstr, const char *v) { serial_print_P(pstr); SERIAL_ECHO(v); } -inline void serial_echopair_P(PGM_P const pstr, FSTR_P v) { serial_print_P(pstr); SERIAL_ECHOF(v); } - -// Default implementation for types without a specialization. Handles integers. -template -inline void serial_echopair_P(PGM_P const pstr, T v) { serial_print_P(pstr); SERIAL_ECHO(v); } - -// Add a newline. -template -inline void serial_echolnpair_P(PGM_P const pstr, T v) { serial_echopair_P(pstr, v); SERIAL_EOL(); } - -// Catch-all for __FlashStringHelper * -template -inline void serial_echopair(FSTR_P const fstr, T v) { serial_echopair_P(FTOP(fstr), v); } - -// Add a newline to the serial output -template -inline void serial_echolnpair(FSTR_P const fstr, T v) { serial_echolnpair_P(FTOP(fstr), v); } - -void serial_echo_start(); -void serial_error_start(); -inline void serial_ternary(FSTR_P const pre, const bool onoff, FSTR_P const on, FSTR_P const off, FSTR_P const post=nullptr) { - if (pre) serial_print(pre); - if (onoff && on) serial_print(on); - if (!onoff && off) serial_print(off); - if (post) serial_print(post); -} void serialprint_onoff(const bool onoff); void serialprintln_onoff(const bool onoff); void serialprint_truefalse(const bool tf); -void serial_spaces(uint8_t count); void serial_offset(const_float_t v, const uint8_t sp=0); // For v==0 draw space (sp==1) or plus (sp==2) void print_bin(const uint16_t val); diff --git a/Marlin/src/core/serial_base.h b/Marlin/src/core/serial_base.h index fa0a2298f7..a2f49417b7 100644 --- a/Marlin/src/core/serial_base.h +++ b/Marlin/src/core/serial_base.h @@ -79,7 +79,7 @@ struct EnsureDouble { operator double() { return a; } // If the compiler breaks on ambiguity here, it's likely because print(X, base) is called with X not a double/float, and // a base that's not a PrintBase value. This code is made to detect the error. You MUST set a base explicitly like this: - // SERIAL_PRINT(v, PrintBase::Hex) + //SERIAL_PRINT(v, PrintBase::Hex) EnsureDouble(double a) : a(a) {} EnsureDouble(float a) : a(a) {} }; @@ -169,7 +169,6 @@ struct SerialBase { FORCE_INLINE void print(unsigned int c, PrintBase base) { printNumber_unsigned(c, base); } FORCE_INLINE void print(unsigned long c, PrintBase base) { printNumber_unsigned(c, base); } - void print(EnsureDouble c, int digits) { printFloat(c, digits); } // Forward the call to the former's method @@ -180,7 +179,7 @@ struct SerialBase { void print(T c) { print(c, PrintBase::Dec); } void print(float c) { print(c, 2); } - void print(double c) { print(c, 2); } + void print(double c) { print(c, 2); } void println(char *s) { print(s); println(); } void println(const char *s) { print(s); println(); } diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 8fcaa0000c..3168322860 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -283,6 +283,36 @@ typedef IF 255)), uint16_t, uint8_t>::ty #define MMM_TO_MMS(MM_M) feedRate_t(static_cast(MM_M) / 60.0f) #define MMS_TO_MMM(MM_S) (static_cast(MM_S) * 60.0f) +// Packaged character for AS_CHAR macro and other usage +typedef struct SerialChar { char c; SerialChar(char n) : c(n) { } } serial_char_t; +#define AS_CHAR(C) serial_char_t(C) + +// Packaged types: float with precision and/or width; a repeated space/character +typedef struct WFloat { float value; char width; char prec; + WFloat(float v, char w, char p) : value(v), width(w), prec(p) {} + } w_float_t; +typedef struct PFloat { float value; char prec; + PFloat(float v, char p) : value(v), prec(p) {} + } p_float_t; +typedef struct RepChr { char asc; uint8_t count; + RepChr(char a, uint8_t c) : asc(a), count(c) {} + } repchr_t; +typedef struct Spaces { uint8_t count; + Spaces(uint8_t c) : count(c) {} + } spaces_t; + +#ifdef __AVR__ + typedef w_float_t w_double_t; + typedef p_float_t p_double_t; +#else + typedef struct WDouble { double value; char width; char prec; + WDouble(double v, char w, char p) : value(v), width(w), prec(p) {} + } w_double_t; + typedef struct PDouble { double value; char prec; + PDouble(double v, char p) : value(v), prec(p) {} + } p_double_t; +#endif + // // Coordinates structures for XY, XYZ, XYZE... // diff --git a/Marlin/src/core/utility.cpp b/Marlin/src/core/utility.cpp index 64f083e197..8476591d4b 100644 --- a/Marlin/src/core/utility.cpp +++ b/Marlin/src/core/utility.cpp @@ -25,6 +25,10 @@ #include "../MarlinCore.h" #include "../module/temperature.h" +#if ENABLED(MARLIN_DEV_MODE) + MarlinError marlin_error_number; // Error Number - Marlin can beep X times periodically, display, and emit... +#endif + void safe_delay(millis_t ms) { while (ms > 50) { ms -= 50; @@ -95,9 +99,9 @@ void safe_delay(millis_t ms) { SERIAL_ECHOPGM(" (Aligned With"); if (probe.offset_xy.y > 0) - SERIAL_ECHOF(F(TERN(IS_SCARA, "-Distal", "-Back"))); + SERIAL_ECHO(F(TERN(IS_SCARA, "-Distal", "-Back"))); else if (probe.offset_xy.y < 0) - SERIAL_ECHOF(F(TERN(IS_SCARA, "-Proximal", "-Front"))); + SERIAL_ECHO(F(TERN(IS_SCARA, "-Proximal", "-Front"))); else if (probe.offset_xy.x != 0) SERIAL_ECHOPGM("-Center"); @@ -105,7 +109,7 @@ void safe_delay(millis_t ms) { #endif - SERIAL_ECHOF(probe.offset.z < 0 ? F("Below") : probe.offset.z > 0 ? F("Above") : F("Same Z as")); + SERIAL_ECHO(probe.offset.z < 0 ? F("Below") : probe.offset.z > 0 ? F("Above") : F("Same Z as")); SERIAL_ECHOLNPGM(" Nozzle)"); #endif diff --git a/Marlin/src/core/utility.h b/Marlin/src/core/utility.h index c4bb3c2a8a..891a4e4383 100644 --- a/Marlin/src/core/utility.h +++ b/Marlin/src/core/utility.h @@ -92,3 +92,22 @@ const xyze_char_t axis_codes LOGICAL_AXIS_ARRAY('E', 'X', 'Y', 'Z', AXIS4_NAME, #define AXIS_CHAR(A) axis_codes[A] #define IAXIS_CHAR(A) iaxis_codes[A] #endif + +#if ENABLED(MARLIN_DEV_MODE) + enum MarlinError : uint8_t { + ERR_NONE, + ERR_STRING_RANGE, // A string buffer was too small to set the whole blob + ERR_ASSERTION, // An assertion was triggered + ERR_MALFUNCTION, + ERR_MEMORY_LEAK, + ERR_COMMS_SERIAL, + ERR_COMMS_SPI, + ERR_PLANNER_STARVED, + ERR_TMC_SHUTDOWN, + ERR_PROCEDURE_FAILED, + ERR_TOO_WACK, + ERR_PLAID_IN_SUMMER + }; + extern MarlinError marlin_error_number; // Error Number - Marlin can beep, display, and emit... + inline void error(const MarlinError err) { marlin_error_number = err; } +#endif diff --git a/Marlin/src/feature/bedlevel/bedlevel.cpp b/Marlin/src/feature/bedlevel/bedlevel.cpp index 17407eafb9..a76c6cdd26 100644 --- a/Marlin/src/feature/bedlevel/bedlevel.cpp +++ b/Marlin/src/feature/bedlevel/bedlevel.cpp @@ -138,7 +138,7 @@ void reset_bed_level() { void print_2d_array(const uint8_t sx, const uint8_t sy, const uint8_t precision, const float *values) { #ifndef SCAD_MESH_OUTPUT for (uint8_t x = 0; x < sx; ++x) { - serial_spaces(precision + (x < 10 ? 3 : 2)); + SERIAL_ECHO_SP(precision + (x < 10 ? 3 : 2)); SERIAL_ECHO(x); } SERIAL_EOL(); @@ -158,7 +158,7 @@ void reset_bed_level() { const float offset = values[x * sy + y]; if (!isnan(offset)) { if (offset >= 0) SERIAL_CHAR('+'); - SERIAL_ECHO_F(offset, int(precision)); + SERIAL_ECHO(p_float_t(offset, precision)); } else { #ifdef SCAD_MESH_OUTPUT diff --git a/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.cpp b/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.cpp index 787827bb9b..f40cbccadd 100644 --- a/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.cpp +++ b/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.cpp @@ -123,8 +123,7 @@ #endif // IS_CARTESIAN && !SEGMENT_LEVELED_MOVES void mesh_bed_leveling::report_mesh() { - SERIAL_ECHOPAIR_F(STRINGIFY(GRID_MAX_POINTS_X) "x" STRINGIFY(GRID_MAX_POINTS_Y) " mesh. Z offset: ", z_offset, 5); - SERIAL_ECHOLNPGM("\nMeasured points:"); + SERIAL_ECHOLN(F(STRINGIFY(GRID_MAX_POINTS_X) "x" STRINGIFY(GRID_MAX_POINTS_Y) " mesh. Z offset: "), p_float_t(z_offset, 5), F("\nMeasured points:")); print_2d_array(GRID_MAX_POINTS_X, GRID_MAX_POINTS_Y, 5, z_values[0]); } diff --git a/Marlin/src/feature/bedlevel/ubl/ubl.cpp b/Marlin/src/feature/bedlevel/ubl/ubl.cpp index b99334795d..0228bd247e 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl.cpp @@ -51,8 +51,7 @@ void unified_bed_leveling::report_current_mesh() { GRID_LOOP(x, y) if (!isnan(z_values[x][y])) { SERIAL_ECHO_START(); - SERIAL_ECHOPGM(" M421 I", x, " J", y); - SERIAL_ECHOLNPAIR_F_P(SP_Z_STR, z_values[x][y], 4); + SERIAL_ECHOLN(F(" M421 I"), x, F(" J"), y, FPSTR(SP_Z_STR), p_float_t(z_values[x][y], 4)); serial_delay(75); // Prevent Printrun from exploding } } @@ -211,10 +210,10 @@ void unified_bed_leveling::display_map(const uint8_t map_type) { // TODO: Display on Graphical LCD } else if (isnan(f)) - SERIAL_ECHOF(human ? F(" . ") : F("NAN")); + SERIAL_ECHO(human ? F(" . ") : F("NAN")); else if (human || csv) { if (human && f >= 0) SERIAL_CHAR(f > 0 ? '+' : ' '); // Display sign also for positive numbers (' ' for 0) - SERIAL_DECIMAL(f); // Positive: 5 digits, Negative: 6 digits + SERIAL_ECHO(p_float_t(f, 3)); // Positive: 5 digits, Negative: 6 digits } if (csv && i < (GRID_MAX_POINTS_X) - 1) SERIAL_CHAR('\t'); diff --git a/Marlin/src/feature/bedlevel/ubl/ubl.h b/Marlin/src/feature/bedlevel/ubl/ubl.h index c9bc797429..f751ce40d0 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl.h +++ b/Marlin/src/feature/bedlevel/ubl/ubl.h @@ -279,10 +279,8 @@ public: if (DEBUGGING(MESH_ADJUST)) DEBUG_ECHOLNPGM("??? Yikes! NAN in "); } - if (DEBUGGING(MESH_ADJUST)) { - DEBUG_ECHOPGM("get_z_correction(", rx0, ", ", ry0); - DEBUG_ECHOLNPAIR_F(") => ", z0, 6); - } + if (DEBUGGING(MESH_ADJUST)) + DEBUG_ECHOLN(F("get_z_correction("), rx0, F(", "), ry0, F(") => "), p_float_t(z0, 6)); return z0; } diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index 551277c35d..1c43af1884 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -458,12 +458,8 @@ void unified_bed_leveling::G29() { invalidate(); SERIAL_ECHOLNPGM("Mesh invalidated. Probing mesh."); } - if (param.V_verbosity > 1) { - SERIAL_ECHOPGM("Probing around (", param.XY_pos.x); - SERIAL_CHAR(','); - SERIAL_DECIMAL(param.XY_pos.y); - SERIAL_ECHOLNPGM(").\n"); - } + if (param.V_verbosity > 1) + SERIAL_ECHOLN(F("Probing around ("), param.XY_pos.x, AS_CHAR(','), param.XY_pos.y, F(").\n")); probe_entire_mesh(param.XY_pos, parser.seen_test('T'), parser.seen_test('E'), parser.seen_test('U')); report_current_position(); @@ -722,10 +718,10 @@ void unified_bed_leveling::adjust_mesh_to_mean(const bool cflag, const_float_t o sum_of_diff_squared += sq(z_values[x][y] - mean); SERIAL_ECHOLNPGM("# of samples: ", n); - SERIAL_ECHOLNPAIR_F("Mean Mesh Height: ", mean, 6); + SERIAL_ECHOLNPGM("Mean Mesh Height: ", p_float_t(mean, 6)); const float sigma = SQRT(sum_of_diff_squared / (n + 1)); - SERIAL_ECHOLNPAIR_F("Standard Deviation: ", sigma, 6); + SERIAL_ECHOLNPGM("Standard Deviation: ", p_float_t(sigma, 6)); if (cflag) GRID_LOOP(x, y) @@ -924,10 +920,8 @@ void set_message_with_feedback(FSTR_P const fstr) { const float thickness = ABS(z1 - z2); - if (param.V_verbosity > 1) { - SERIAL_ECHOPAIR_F("Business Card is ", thickness, 4); - SERIAL_ECHOLNPGM("mm thick."); - } + if (param.V_verbosity > 1) + SERIAL_ECHOLNPGM("Business Card is ", p_float_t(thickness, 4), "mm thick."); restore_ubl_active_state_and_leave(); @@ -993,7 +987,7 @@ void set_message_with_feedback(FSTR_P const fstr) { TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(location, z_values[lpos.x][lpos.y])); if (param.V_verbosity > 2) - SERIAL_ECHOLNPAIR_F("Mesh Point Measured at: ", z_values[lpos.x][lpos.y], 6); + SERIAL_ECHOLNPGM("Mesh Point Measured at: ", p_float_t(z_values[lpos.x][lpos.y], 6)); SERIAL_FLUSH(); // Prevent host M105 buffer overrun. } while (location.valid()); @@ -1504,7 +1498,7 @@ void unified_bed_leveling::smart_fill_mesh() { measured_z -= TERN(UBL_TILT_ON_MESH_POINTS_3POINT, z_values[cpos[i].pos.x][cpos[i].pos.y], get_z_correction(points[i])); TERN_(VALIDATE_MESH_TILT, gotz[i] = measured_z); - if (param.V_verbosity > 3) { serial_spaces(16); SERIAL_ECHOLNPGM("Corrected_Z=", measured_z); } + if (param.V_verbosity > 3) { SERIAL_ECHO_SP(16); SERIAL_ECHOLNPGM("Corrected_Z=", measured_z); } incremental_LSF(&lsf_results, points[i], measured_z); } @@ -1562,26 +1556,28 @@ void unified_bed_leveling::smart_fill_mesh() { #if ENABLED(DEBUG_LEVELING_FEATURE) if (DEBUGGING(LEVELING)) { - const xy_pos_t lpos = rpos.asLogical(); #if ENABLED(UBL_TILT_ON_MESH_POINTS) const xy_pos_t oldLpos = oldRpos.asLogical(); - DEBUG_ECHOPGM("Calculated point: ("); DEBUG_ECHO_F(oldRpos.x, 7); DEBUG_CHAR(','); DEBUG_ECHO_F(oldRpos.y, 7); - DEBUG_ECHOPAIR_F(") logical: (", oldLpos.x, 7); DEBUG_CHAR(','); DEBUG_ECHO_F(oldLpos.y, 7); - DEBUG_ECHOPGM(")\nSelected mesh point: "); + DEBUG_ECHO(F("Calculated point: ("), p_float_t(oldRpos.x, 7), AS_CHAR(','), p_float_t(oldRpos.y, 7), + F(") logical: ("), p_float_t(oldLpos.x, 7), AS_CHAR(','), p_float_t(oldLpos.y, 7), + F(")\nSelected mesh point: ") + ); #endif - DEBUG_CHAR('('); DEBUG_ECHO_F(rpos.x, 7); DEBUG_CHAR(','); DEBUG_ECHO_F(rpos.y, 7); - DEBUG_ECHOPAIR_F(") logical: (", lpos.x, 7); DEBUG_CHAR(','); DEBUG_ECHO_F(lpos.y, 7); - DEBUG_ECHOPAIR_F(") measured: ", measured_z, 7); - DEBUG_ECHOPAIR_F(" correction: ", zcorr, 7); + const xy_pos_t lpos = rpos.asLogical(); + DEBUG_ECHO( AS_CHAR('('), p_float_t(rpos.x, 7), AS_CHAR(','), p_float_t(rpos.y, 7), + F(") logical: ("), p_float_t(lpos.x, 7), AS_CHAR(','), p_float_t(lpos.y, 7), + F(") measured: "), p_float_t(measured_z, 7), + F(" correction: "), p_float_t(zcorr, 7) + ); } #endif measured_z -= zcorr; - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR_F(" final >>>---> ", measured_z, 7); + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM(" final >>>---> ", p_float_t(measured_z, 7)); if (param.V_verbosity > 3) { - serial_spaces(16); + SERIAL_ECHO_SP(16); SERIAL_ECHOLNPGM("Corrected_Z=", measured_z); } incremental_LSF(&lsf_results, rpos, measured_z); @@ -1597,20 +1593,14 @@ void unified_bed_leveling::smart_fill_mesh() { probe.move_z_after_probing(); if (abort_flag || finish_incremental_LSF(&lsf_results)) { - SERIAL_ECHOPGM("Could not complete LSF!"); + SERIAL_ECHOLNPGM("Could not complete LSF!"); return; } vector_3 normal = vector_3(lsf_results.A, lsf_results.B, 1).get_normal(); - if (param.V_verbosity > 2) { - SERIAL_ECHOPAIR_F("bed plane normal = [", normal.x, 7); - SERIAL_CHAR(','); - SERIAL_ECHO_F(normal.y, 7); - SERIAL_CHAR(','); - SERIAL_ECHO_F(normal.z, 7); - SERIAL_ECHOLNPGM("]"); - } + if (param.V_verbosity > 2) + SERIAL_ECHOLN(F("bed plane normal = ["), p_float_t(normal.x, 7), AS_CHAR(','), p_float_t(normal.y, 7), AS_CHAR(','), p_float_t(normal.z, 7), AS_CHAR(']')); matrix_3x3 rotation = matrix_3x3::create_look_at(vector_3(lsf_results.A, lsf_results.B, 1)); @@ -1618,24 +1608,14 @@ void unified_bed_leveling::smart_fill_mesh() { float mx = get_mesh_x(i), my = get_mesh_y(j), mz = z_values[i][j]; if (DEBUGGING(LEVELING)) { - DEBUG_ECHOPAIR_F("before rotation = [", mx, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(my, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(mz, 7); - DEBUG_ECHOPGM("] ---> "); + DEBUG_ECHOLN(F("before rotation = ["), p_float_t(mx, 7), AS_CHAR(','), p_float_t(my, 7), AS_CHAR(','), p_float_t(mz, 7), F("] ---> ")); DEBUG_DELAY(20); } rotation.apply_rotation_xyz(mx, my, mz); if (DEBUGGING(LEVELING)) { - DEBUG_ECHOPAIR_F("after rotation = [", mx, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(my, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(mz, 7); - DEBUG_ECHOLNPGM("]"); + DEBUG_ECHOLN(F("after rotation = ["), p_float_t(mx, 7), AS_CHAR(','), p_float_t(my, 7), AS_CHAR(','), p_float_t(mz, 7), F("] ---> ")); DEBUG_DELAY(20); } @@ -1645,17 +1625,9 @@ void unified_bed_leveling::smart_fill_mesh() { if (DEBUGGING(LEVELING)) { rotation.debug(F("rotation matrix:\n")); - DEBUG_ECHOPAIR_F("LSF Results A=", lsf_results.A, 7); - DEBUG_ECHOPAIR_F(" B=", lsf_results.B, 7); - DEBUG_ECHOLNPAIR_F(" D=", lsf_results.D, 7); + DEBUG_ECHOLN(F("LSF Results A="), p_float_t(lsf_results.A, 7), F(" B="), p_float_t(lsf_results.B, 7), F(" D="), p_float_t(lsf_results.D, 7)); DEBUG_DELAY(55); - - DEBUG_ECHOPAIR_F("bed plane normal = [", normal.x, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(normal.y, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(normal.z, 7); - DEBUG_ECHOLNPGM("]"); + DEBUG_ECHOLN(F("bed plane normal = ["), p_float_t(normal.x, 7), AS_CHAR(','), p_float_t(normal.y, 7), AS_CHAR(','), p_float_t(normal.z, 7), AS_CHAR(']')); DEBUG_EOL(); /** @@ -1672,21 +1644,17 @@ void unified_bed_leveling::smart_fill_mesh() { return normal.x * pos.x + normal.y * pos.y + zadd; }; auto debug_pt = [](const int num, const xy_pos_t &pos, const_float_t zadd) { - d_from(); DEBUG_ECHOPGM("Point ", num, ":"); - DEBUG_ECHO_F(normed(pos, zadd), 6); - DEBUG_ECHOLNPAIR_F(" Z error = ", zadd - get_z_correction(pos), 6); + d_from(); + DEBUG_ECHOLN(F("Point "), num, AS_CHAR(':'), p_float_t(normed(pos, zadd), 6), F(" Z error = "), p_float_t(zadd - get_z_correction(pos), 6)); }; debug_pt(1, probe_pt[0], normal.z * gotz[0]); debug_pt(2, probe_pt[1], normal.z * gotz[1]); debug_pt(3, probe_pt[2], normal.z * gotz[2]); #if ENABLED(Z_SAFE_HOMING) constexpr xy_float_t safe_xy = { Z_SAFE_HOMING_X_POINT, Z_SAFE_HOMING_Y_POINT }; - d_from(); DEBUG_ECHOPGM("safe home with Z="); - DEBUG_ECHOLNPAIR_F("0 : ", normed(safe_xy, 0), 6); - d_from(); DEBUG_ECHOPGM("safe home with Z="); - DEBUG_ECHOLNPAIR_F("mesh value ", normed(safe_xy, get_z_correction(safe_xy)), 6); - DEBUG_ECHOPGM(" Z error = (", Z_SAFE_HOMING_X_POINT, ",", Z_SAFE_HOMING_Y_POINT); - DEBUG_ECHOLNPAIR_F(") = ", get_z_correction(safe_xy), 6); + d_from(); DEBUG_ECHOLN(F("safe home with Z="), F("0 : "), p_float_t(normed(safe_xy, 0), 6)); + d_from(); DEBUG_ECHOLN(F("safe home with Z="), F("mesh value "), p_float_t(normed(safe_xy, get_z_correction(safe_xy)), 6)); + DEBUG_ECHO(F(" Z error = ("), Z_SAFE_HOMING_X_POINT, AS_CHAR(','), Z_SAFE_HOMING_Y_POINT, F(") = "), p_float_t(get_z_correction(safe_xy), 6)); #endif #endif } // DEBUGGING(LEVELING) @@ -1734,7 +1702,7 @@ void unified_bed_leveling::smart_fill_mesh() { } } if (finish_incremental_LSF(&lsf_results)) { - SERIAL_ECHOLNPGM("Insufficient data"); + SERIAL_ECHOLNPGM(" Insufficient data"); return; } const float ez = -lsf_results.D - lsf_results.A * ppos.x - lsf_results.B * ppos.y; @@ -1745,7 +1713,7 @@ void unified_bed_leveling::smart_fill_mesh() { } } - SERIAL_ECHOLNPGM("done"); + SERIAL_ECHOLNPGM(" done."); } #endif // UBL_G29_P31 @@ -1758,20 +1726,19 @@ void unified_bed_leveling::smart_fill_mesh() { report_state(); if (storage_slot == -1) - SERIAL_ECHOPGM("No Mesh Loaded."); + SERIAL_ECHOLNPGM("No Mesh Loaded."); else - SERIAL_ECHOPGM("Mesh ", storage_slot, " Loaded."); - SERIAL_EOL(); + SERIAL_ECHOLNPGM("Mesh ", storage_slot, " Loaded."); serial_delay(50); #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) - SERIAL_ECHOLNPAIR_F("Fade Height M420 Z", planner.z_fade_height, 4); + SERIAL_ECHOLN(F("Fade Height M420 Z"), p_float_t(planner.z_fade_height, 4)); #endif adjust_mesh_to_mean(param.C_seen, param.C_constant); #if HAS_BED_PROBE - SERIAL_ECHOLNPAIR_F("Probe Offset M851 Z", probe.offset.z, 7); + SERIAL_ECHOLNPGM("Probe Offset M851 Z", p_float_t(probe.offset.z, 7)); #endif SERIAL_ECHOLNPGM("MESH_MIN_X " STRINGIFY(MESH_MIN_X) "=", MESH_MIN_X); serial_delay(50); @@ -1785,16 +1752,14 @@ void unified_bed_leveling::smart_fill_mesh() { SERIAL_ECHOPGM("X-Axis Mesh Points at: "); for (uint8_t i = 0; i < GRID_MAX_POINTS_X; ++i) { - SERIAL_ECHO_F(LOGICAL_X_POSITION(get_mesh_x(i)), 3); - SERIAL_ECHOPGM(" "); + SERIAL_ECHO(p_float_t(LOGICAL_X_POSITION(get_mesh_x(i)), 3), F(" ")); serial_delay(25); } SERIAL_EOL(); SERIAL_ECHOPGM("Y-Axis Mesh Points at: "); for (uint8_t i = 0; i < GRID_MAX_POINTS_Y; ++i) { - SERIAL_ECHO_F(LOGICAL_Y_POSITION(get_mesh_y(i)), 3); - SERIAL_ECHOPGM(" "); + SERIAL_ECHO(p_float_t(LOGICAL_Y_POSITION(get_mesh_y(i)), 3), F(" ")); serial_delay(25); } SERIAL_EOL(); @@ -1806,23 +1771,21 @@ void unified_bed_leveling::smart_fill_mesh() { SERIAL_EOL(); serial_delay(50); - #if ENABLED(UBL_DEVEL_DEBUGGING) - SERIAL_ECHOLNPGM("ubl_state_at_invocation :", ubl_state_at_invocation, "\nubl_state_recursion_chk :", ubl_state_recursion_chk); - serial_delay(50); + SERIAL_ECHOLNPGM("ubl_state_at_invocation :", ubl_state_at_invocation, "\nubl_state_recursion_chk :", ubl_state_recursion_chk); + serial_delay(50); - SERIAL_ECHOLNPGM("Meshes go from ", hex_address((void*)settings.meshes_start_index()), " to ", hex_address((void*)settings.meshes_end_index())); - serial_delay(50); + SERIAL_ECHOLNPGM("Meshes go from ", hex_address((void*)settings.meshes_start_index()), " to ", hex_address((void*)settings.meshes_end_index())); + serial_delay(50); - SERIAL_ECHOLNPGM("sizeof(ubl) : ", sizeof(ubl)); SERIAL_EOL(); - SERIAL_ECHOLNPGM("z_value[][] size: ", sizeof(z_values)); SERIAL_EOL(); - serial_delay(25); + SERIAL_ECHOLNPGM("sizeof(ubl) : ", sizeof(ubl)); SERIAL_EOL(); + SERIAL_ECHOLNPGM("z_value[][] size: ", sizeof(z_values)); SERIAL_EOL(); + serial_delay(25); - SERIAL_ECHOLNPGM("EEPROM free for UBL: ", hex_address((void*)(settings.meshes_end_index() - settings.meshes_start_index()))); - serial_delay(50); + SERIAL_ECHOLNPGM("EEPROM free for UBL: ", hex_address((void*)(settings.meshes_end_index() - settings.meshes_start_index()))); + serial_delay(50); - SERIAL_ECHOLNPGM("EEPROM can hold ", settings.calc_num_meshes(), " meshes.\n"); - serial_delay(25); - #endif // UBL_DEVEL_DEBUGGING + SERIAL_ECHOLNPGM("EEPROM can hold ", settings.calc_num_meshes(), " meshes.\n"); + serial_delay(25); if (!sanity_check()) { echo_name(); diff --git a/Marlin/src/feature/encoder_i2c.cpp b/Marlin/src/feature/encoder_i2c.cpp index 1c01e1c23b..a367cea48d 100644 --- a/Marlin/src/feature/encoder_i2c.cpp +++ b/Marlin/src/feature/encoder_i2c.cpp @@ -106,10 +106,7 @@ void I2CPositionEncoder::update() { SERIAL_ECHOLNPGM("Current position is ", pos); SERIAL_ECHOLNPGM("Position in encoder ticks is ", positionInTicks); SERIAL_ECHOLNPGM("New zero-offset of ", zeroOffset); - SERIAL_ECHOPGM("New position reads as ", get_position()); - SERIAL_CHAR('('); - SERIAL_DECIMAL(mm_from_count(get_position())); - SERIAL_ECHOLNPGM(")"); + SERIAL_ECHOLN(F("New position reads as "), get_position(), AS_CHAR('('), mm_from_count(get_position()), AS_CHAR(')')); #endif } #endif diff --git a/Marlin/src/feature/host_actions.cpp b/Marlin/src/feature/host_actions.cpp index 235253b5a3..cc5face259 100644 --- a/Marlin/src/feature/host_actions.cpp +++ b/Marlin/src/feature/host_actions.cpp @@ -41,8 +41,7 @@ HostUI hostui; void HostUI::action(FSTR_P const fstr, const bool eol) { PORT_REDIRECT(SerialMask::All); - SERIAL_ECHOPGM("//action:"); - SERIAL_ECHOF(fstr); + SERIAL_ECHOPGM("//action:", fstr); if (eol) SERIAL_EOL(); } @@ -107,7 +106,7 @@ void HostUI::action(FSTR_P const fstr, const bool eol) { void HostUI::prompt(FSTR_P const ptype, const bool eol/*=true*/) { PORT_REDIRECT(SerialMask::All); action(F("prompt_"), false); - SERIAL_ECHOF(ptype); + SERIAL_ECHO(ptype); if (eol) SERIAL_EOL(); } diff --git a/Marlin/src/feature/max7219.cpp b/Marlin/src/feature/max7219.cpp index d3328855f4..991f3e79db 100644 --- a/Marlin/src/feature/max7219.cpp +++ b/Marlin/src/feature/max7219.cpp @@ -136,9 +136,7 @@ uint8_t Max7219::suspended; // = 0; void Max7219::error(FSTR_P const func, const int32_t v1, const int32_t v2/*=-1*/) { #if ENABLED(MAX7219_ERRORS) - SERIAL_ECHOPGM("??? Max7219::"); - SERIAL_ECHOF(func, AS_CHAR('(')); - SERIAL_ECHO(v1); + SERIAL_ECHO(F("??? Max7219::"), func, AS_CHAR('('), v1); if (v2 > 0) SERIAL_ECHOPGM(", ", v2); SERIAL_CHAR(')'); SERIAL_EOL(); diff --git a/Marlin/src/feature/meatpack.cpp b/Marlin/src/feature/meatpack.cpp index 07ff41e5be..5d2d112967 100644 --- a/Marlin/src/feature/meatpack.cpp +++ b/Marlin/src/feature/meatpack.cpp @@ -171,7 +171,7 @@ void MeatPack::report_state() { // should not contain the "PV' substring, as this is used to indicate protocol version SERIAL_ECHOPGM("[MP] " MeatPack_ProtocolVersion " "); serialprint_onoff(TEST(state, MPConfig_Bit_Active)); - SERIAL_ECHOF(TEST(state, MPConfig_Bit_NoSpaces) ? F(" NSP\n") : F(" ESP\n")); + SERIAL_ECHO(TEST(state, MPConfig_Bit_NoSpaces) ? F(" NSP\n") : F(" ESP\n")); } /** diff --git a/Marlin/src/feature/mixing.cpp b/Marlin/src/feature/mixing.cpp index 1ce4892248..6cf59fdb56 100644 --- a/Marlin/src/feature/mixing.cpp +++ b/Marlin/src/feature/mixing.cpp @@ -60,10 +60,7 @@ void Mixer::normalize(const uint8_t tool_index) { } #ifdef MIXER_NORMALIZER_DEBUG SERIAL_ECHOPGM("Mixer: Old relation : [ "); - MIXER_STEPPER_LOOP(i) { - SERIAL_DECIMAL(collector[i] / csum); - SERIAL_CHAR(' '); - } + MIXER_STEPPER_LOOP(i) SERIAL_ECHO(collector[i] / csum, AS_CHAR(' ')); SERIAL_ECHOLNPGM("]"); #endif @@ -75,16 +72,12 @@ void Mixer::normalize(const uint8_t tool_index) { csum = 0; SERIAL_ECHOPGM("Mixer: Normalize to : [ "); MIXER_STEPPER_LOOP(i) { - SERIAL_ECHO(uint16_t(color[tool_index][i])); - SERIAL_CHAR(' '); + SERIAL_ECHO(uint16_t(color[tool_index][i]), AS_CHAR(' ')); csum += color[tool_index][i]; } SERIAL_ECHOLNPGM("]"); SERIAL_ECHOPGM("Mixer: New relation : [ "); - MIXER_STEPPER_LOOP(i) { - SERIAL_ECHO_F(uint16_t(color[tool_index][i]) / csum, 3); - SERIAL_CHAR(' '); - } + MIXER_STEPPER_LOOP(i) SERIAL_ECHO(p_float_t(uint16_t(color[tool_index][i]) / csum, 3), AS_CHAR(' ')); SERIAL_ECHOLNPGM("]"); #endif diff --git a/Marlin/src/feature/mixing.h b/Marlin/src/feature/mixing.h index a43b059944..c5c60a5e9f 100644 --- a/Marlin/src/feature/mixing.h +++ b/Marlin/src/feature/mixing.h @@ -137,11 +137,11 @@ class Mixer { MIXER_STEPPER_LOOP(i) tcolor[i] = mix[i] * scale; #ifdef MIXER_NORMALIZER_DEBUG - SERIAL_ECHOPGM("Mix [ "); - SERIAL_ECHOLIST_N(MIXING_STEPPERS, mix[0], mix[1], mix[2], mix[3], mix[4], mix[5]); - SERIAL_ECHOPGM(" ] to Color [ "); - SERIAL_ECHOLIST_N(MIXING_STEPPERS, tcolor[0], tcolor[1], tcolor[2], tcolor[3], tcolor[4], tcolor[5]); - SERIAL_ECHOLNPGM(" ]"); + SERIAL_ECHOLN( + F("Mix [ "), LIST_N(MIXING_STEPPERS, mix[0], mix[1], mix[2], mix[3], mix[4], mix[5]), + F(" ] to Color [ "), LIST_N(MIXING_STEPPERS, tcolor[0], tcolor[1], tcolor[2], tcolor[3], tcolor[4], tcolor[5]), + F(" ]") + ); #endif } @@ -151,11 +151,10 @@ class Mixer { MIXER_STEPPER_LOOP(i) mix[i] = mixer_perc_t(100.0f * color[j][i] / ctot + 0.5f); #ifdef MIXER_NORMALIZER_DEBUG - SERIAL_ECHOPGM("V-tool ", j, " [ "); - SERIAL_ECHOLIST_N(MIXING_STEPPERS, color[j][0], color[j][1], color[j][2], color[j][3], color[j][4], color[j][5]); - SERIAL_ECHOPGM(" ] to Mix [ "); - SERIAL_ECHOLIST_N(MIXING_STEPPERS, mix[0], mix[1], mix[2], mix[3], mix[4], mix[5]); - SERIAL_ECHOLNPGM(" ]"); + SERIAL_ECHOLN(F("V-tool "), j, + F(" [ "), LIST_N(MIXING_STEPPERS, color[j][0], color[j][1], color[j][2], color[j][3], color[j][4], color[j][5]), + F(" ] to Mix [ "), LIST_N(MIXING_STEPPERS, mix[0], mix[1], mix[2], mix[3], mix[4], mix[5]), F(" ]") + ); #endif } @@ -196,11 +195,10 @@ class Mixer { MIXER_STEPPER_LOOP(i) mix[i] = (mixer_perc_t)CEIL(100.0f * gradient.color[i] / ctot); #ifdef MIXER_NORMALIZER_DEBUG - SERIAL_ECHOPGM("Gradient [ "); - SERIAL_ECHOLIST_N(MIXING_STEPPERS, gradient.color[0], gradient.color[1], gradient.color[2], gradient.color[3], gradient.color[4], gradient.color[5]); - SERIAL_ECHOPGM(" ] to Mix [ "); - SERIAL_ECHOLIST_N(MIXING_STEPPERS, mix[0], mix[1], mix[2], mix[3], mix[4], mix[5]); - SERIAL_ECHOLNPGM(" ]"); + SERIAL_ECHOLN( + F("Gradient [ "), LIST_N(MIXING_STEPPERS, gradient.color[0], gradient.color[1], gradient.color[2], gradient.color[3], gradient.color[4], gradient.color[5]), + F(" ] to Mix [ "), LIST_N(MIXING_STEPPERS, mix[0], mix[1], mix[2], mix[3], mix[4], mix[5]), F(" ]") + ); #endif } diff --git a/Marlin/src/feature/mmu/mmu2.cpp b/Marlin/src/feature/mmu/mmu2.cpp index ea1a33ddaa..19aae7b7d7 100644 --- a/Marlin/src/feature/mmu/mmu2.cpp +++ b/Marlin/src/feature/mmu/mmu2.cpp @@ -286,7 +286,7 @@ void MMU2::mmu_loop() { sscanf(rx_buffer, "%hhuok\n", &finda); // This is super annoying. Only activate if necessary - // if (finda_runout_valid) DEBUG_ECHOLNPAIR_F("MMU <= 'P0'\nMMU => ", finda, 6); + //if (finda_runout_valid) DEBUG_ECHOLNPGM("MMU <= 'P0'\nMMU => ", p_float_t(finda, 6)); if (!finda && finda_runout_valid) filament_runout(); if (cmd == MMU_CMD_NONE) ready = true; diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp index 66f7ad15ed..02287a51b8 100644 --- a/Marlin/src/feature/pause.cpp +++ b/Marlin/src/feature/pause.cpp @@ -502,7 +502,7 @@ void show_continue_prompt(const bool is_reload) { ui.pause_show_message(is_reload ? PAUSE_MESSAGE_INSERT : PAUSE_MESSAGE_WAITING); SERIAL_ECHO_START(); - SERIAL_ECHOF(is_reload ? F(_PMSG(STR_FILAMENT_CHANGE_INSERT) "\n") : F(_PMSG(STR_FILAMENT_CHANGE_WAIT) "\n")); + SERIAL_ECHO(is_reload ? F(_PMSG(STR_FILAMENT_CHANGE_INSERT) "\n") : F(_PMSG(STR_FILAMENT_CHANGE_WAIT) "\n")); } void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep_count/*=0*/ DXC_ARGS) { diff --git a/Marlin/src/feature/powerloss.cpp b/Marlin/src/feature/powerloss.cpp index af85a16448..a8dfadc1f6 100644 --- a/Marlin/src/feature/powerloss.cpp +++ b/Marlin/src/feature/powerloss.cpp @@ -613,14 +613,13 @@ void PrintJobRecovery::resume() { #if ENABLED(DEBUG_POWER_LOSS_RECOVERY) void PrintJobRecovery::debug(FSTR_P const prefix) { - DEBUG_ECHOF(prefix); - DEBUG_ECHOLNPGM(" Job Recovery Info...\nvalid_head:", info.valid_head, " valid_foot:", info.valid_foot); + DEBUG_ECHOLN(prefix, F(" Job Recovery Info...\nvalid_head:"), info.valid_head, F(" valid_foot:"), info.valid_foot); if (info.valid_head) { if (info.valid_head == info.valid_foot) { DEBUG_ECHOPGM("current_position: "); LOOP_LOGICAL_AXES(i) { if (i) DEBUG_CHAR(','); - DEBUG_DECIMAL(info.current_position[i]); + DEBUG_ECHO(info.current_position[i]); } DEBUG_EOL(); @@ -638,7 +637,7 @@ void PrintJobRecovery::resume() { DEBUG_ECHOPGM("home_offset: "); LOOP_NUM_AXES(i) { if (i) DEBUG_CHAR(','); - DEBUG_DECIMAL(info.home_offset[i]); + DEBUG_ECHO(info.home_offset[i]); } DEBUG_EOL(); #endif @@ -647,7 +646,7 @@ void PrintJobRecovery::resume() { DEBUG_ECHOPGM("position_shift: "); LOOP_NUM_AXES(i) { if (i) DEBUG_CHAR(','); - DEBUG_DECIMAL(info.position_shift[i]); + DEBUG_ECHO(info.position_shift[i]); } DEBUG_EOL(); #endif diff --git a/Marlin/src/feature/probe_temp_comp.cpp b/Marlin/src/feature/probe_temp_comp.cpp index 2b362a2186..f640a9fd2f 100644 --- a/Marlin/src/feature/probe_temp_comp.cpp +++ b/Marlin/src/feature/probe_temp_comp.cpp @@ -87,14 +87,9 @@ void ProbeTempComp::print_offsets() { for (uint8_t s = 0; s < TSI_COUNT; ++s) { celsius_t temp = cali_info[s].start_temp; for (int16_t i = -1; i < cali_info[s].measurements; ++i) { - SERIAL_ECHOF( - TERN_(PTC_BED, s == TSI_BED ? F("Bed") :) - TERN_(PTC_HOTEND, s == TSI_EXT ? F("Extruder") :) - F("Probe") - ); - SERIAL_ECHOLNPGM( - " temp: ", temp, - "C; Offset: ", i < 0 ? 0.0f : sensor_z_offsets[s][i], " um" + SERIAL_ECHOLN( + TERN_(PTC_BED, s == TSI_BED ? F("Bed") :) TERN_(PTC_HOTEND, s == TSI_EXT ? F("Extruder") :) F("Probe"), + F(" temp: "), temp, F("C; Offset: "), i < 0 ? 0.0f : sensor_z_offsets[s][i], F(" um") ); temp += cali_info[s].temp_resolution; } diff --git a/Marlin/src/feature/runout.h b/Marlin/src/feature/runout.h index 2b3516a8b4..a001459e9d 100644 --- a/Marlin/src/feature/runout.h +++ b/Marlin/src/feature/runout.h @@ -303,7 +303,7 @@ class FilamentSensorBase { static uint8_t was_out; // = 0 if (out != TEST(was_out, s)) { TBI(was_out, s); - SERIAL_ECHOLNF(F("Filament Sensor "), AS_DIGIT(s), out ? F(" OUT") : F(" IN")); + SERIAL_ECHOLN(F("Filament Sensor "), AS_DIGIT(s), out ? F(" OUT") : F(" IN")); } #endif } @@ -369,10 +369,10 @@ class FilamentSensorBase { if (ELAPSED(ms, t)) { t = millis() + 1000UL; for (uint8_t i = 0; i < NUM_RUNOUT_SENSORS; ++i) - SERIAL_ECHOF(i ? F(", ") : F("Runout remaining mm: "), mm_countdown.runout[i]); + SERIAL_ECHO(i ? F(", ") : F("Runout remaining mm: "), mm_countdown.runout[i]); #if ENABLED(FILAMENT_SWITCH_AND_MOTION) for (uint8_t i = 0; i < NUM_MOTION_SENSORS; ++i) - SERIAL_ECHOF(i ? F(", ") : F("Motion remaining mm: "), mm_countdown.motion[i]); + SERIAL_ECHO(i ? F(", ") : F("Motion remaining mm: "), mm_countdown.motion[i]); #endif SERIAL_EOL(); } diff --git a/Marlin/src/feature/stepper_driver_safety.cpp b/Marlin/src/feature/stepper_driver_safety.cpp index d3fc161486..acdd695909 100644 --- a/Marlin/src/feature/stepper_driver_safety.cpp +++ b/Marlin/src/feature/stepper_driver_safety.cpp @@ -30,8 +30,7 @@ static uint32_t axis_plug_backward = 0; void stepper_driver_backward_error(FSTR_P const fstr) { SERIAL_ERROR_START(); - SERIAL_ECHOF(fstr); - SERIAL_ECHOLNPGM(" driver is backward!"); + SERIAL_ECHOLN(fstr, F(" driver is backward!")); ui.status_printf(2, F(S_FMT S_FMT), FTOP(fstr), GET_TEXT(MSG_DRIVER_BACKWARD)); } diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp index 095e14fe15..556a608914 100644 --- a/Marlin/src/feature/tmc_util.cpp +++ b/Marlin/src/feature/tmc_util.cpp @@ -562,7 +562,7 @@ }; template - static void print_vsense(TMC &st) { SERIAL_ECHOF(st.vsense() ? F("1=.18") : F("0=.325")); } + static void print_vsense(TMC &st) { SERIAL_ECHO(st.vsense() ? F("1=.18") : F("0=.325")); } #if HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC5130) static void _tmc_status(TMC2130Stepper &st, const TMC_debug_enum i) { @@ -680,7 +680,7 @@ case TMC_ENABLED: serialprint_truefalse(st.isEnabled()); break; case TMC_CURRENT: SERIAL_ECHO(st.getMilliamps()); break; case TMC_RMS_CURRENT: SERIAL_ECHO(st.rms_current()); break; - case TMC_MAX_CURRENT: SERIAL_PRINT((float)st.rms_current() * 1.41, 0); break; + case TMC_MAX_CURRENT: SERIAL_ECHO(p_float_t(st.rms_current() * 1.41, 0)); break; case TMC_IRUN: SERIAL_ECHO(st.irun()); SERIAL_ECHOPGM("/31"); @@ -728,12 +728,12 @@ case TMC_ENABLED: serialprint_truefalse(st.isEnabled()); break; case TMC_CURRENT: SERIAL_ECHO(st.getMilliamps()); break; case TMC_RMS_CURRENT: SERIAL_ECHO(st.rms_current()); break; - case TMC_MAX_CURRENT: SERIAL_PRINT((float)st.rms_current() * 1.41, 0); break; + case TMC_MAX_CURRENT: SERIAL_ECHO(p_float_t(st.rms_current() * 1.41, 0)); break; case TMC_IRUN: SERIAL_ECHO(st.cs()); SERIAL_ECHOPGM("/31"); break; - case TMC_VSENSE: SERIAL_ECHOF(st.vsense() ? F("1=.165") : F("0=.310")); break; + case TMC_VSENSE: SERIAL_ECHO(st.vsense() ? F("1=.165") : F("0=.310")); break; case TMC_MICROSTEPS: SERIAL_ECHO(st.microsteps()); break; //case TMC_OTPW: serialprint_truefalse(st.otpw()); break; //case TMC_OTPW_TRIGGERED: serialprint_truefalse(st.getOTPW()); break; @@ -1228,7 +1228,7 @@ static bool test_connection(TMC &st) { case 1: stat = F("HIGH"); break; case 2: stat = F("LOW"); break; } - SERIAL_ECHOLNF(stat); + SERIAL_ECHOLN(stat); return test_result; } diff --git a/Marlin/src/feature/twibus.cpp b/Marlin/src/feature/twibus.cpp index 4aedb4b5f3..5cfe9f9421 100644 --- a/Marlin/src/feature/twibus.cpp +++ b/Marlin/src/feature/twibus.cpp @@ -93,8 +93,7 @@ void TWIBus::send() { // static void TWIBus::echoprefix(uint8_t bytes, FSTR_P const pref, uint8_t adr) { SERIAL_ECHO_START(); - SERIAL_ECHOF(pref); - SERIAL_ECHOPGM(": from:", adr, " bytes:", bytes, " data:"); + SERIAL_ECHO(pref, F(": from:"), adr, F(" bytes:"), bytes, F(" data:")); } // static diff --git a/Marlin/src/gcode/bedlevel/G35.cpp b/Marlin/src/gcode/bedlevel/G35.cpp index 9c1ee472ec..a37e5623e7 100644 --- a/Marlin/src/gcode/bedlevel/G35.cpp +++ b/Marlin/src/gcode/bedlevel/G35.cpp @@ -100,19 +100,20 @@ void GcodeSuite::G35() { for (uint8_t i = 0; i < G35_PROBE_COUNT; ++i) { const float z_probed_height = probe.probe_at_point(tramming_points[i], PROBE_PT_RAISE); if (isnan(z_probed_height)) { - SERIAL_ECHOPGM("G35 failed at point ", i + 1, " ("); - SERIAL_ECHOPGM_P((char *)pgm_read_ptr(&tramming_point_name[i])); - SERIAL_CHAR(')'); - SERIAL_ECHOLNPGM_P(SP_X_STR, tramming_points[i].x, SP_Y_STR, tramming_points[i].y); + SERIAL_ECHO( + F("G35 failed at point "), i + 1, F(" ("), FPSTR(pgm_read_ptr(&tramming_point_name[i])), AS_CHAR(')'), + FPSTR(SP_X_STR), tramming_points[i].x, FPSTR(SP_Y_STR), tramming_points[i].y + ); err_break = true; break; } if (DEBUGGING(LEVELING)) { - DEBUG_ECHOPGM("Probing point ", i + 1, " ("); - DEBUG_ECHOF(FPSTR(pgm_read_ptr(&tramming_point_name[i]))); - DEBUG_CHAR(')'); - DEBUG_ECHOLNPGM_P(SP_X_STR, tramming_points[i].x, SP_Y_STR, tramming_points[i].y, SP_Z_STR, z_probed_height); + DEBUG_ECHOLN( + F("Probing point "), i + 1, F(" ("), FPSTR(pgm_read_ptr(&tramming_point_name[i])), AS_CHAR(')'), + FPSTR(SP_X_STR), tramming_points[i].x, FPSTR(SP_Y_STR), tramming_points[i].y, + FPSTR(SP_Z_STR), z_probed_height + ); } z_measured[i] = z_probed_height; diff --git a/Marlin/src/gcode/bedlevel/M420.cpp b/Marlin/src/gcode/bedlevel/M420.cpp index 277f95b9ff..d870a4f430 100644 --- a/Marlin/src/gcode/bedlevel/M420.cpp +++ b/Marlin/src/gcode/bedlevel/M420.cpp @@ -248,7 +248,7 @@ void GcodeSuite::M420_report(const bool forReplay/*=true*/) { report_heading_etc(forReplay, F( TERN(MESH_BED_LEVELING, "Mesh Bed Leveling", TERN(AUTO_BED_LEVELING_UBL, "Unified Bed Leveling", "Auto Bed Leveling")) )); - SERIAL_ECHOF( + SERIAL_ECHO( F(" M420 S"), planner.leveling_active #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) , FPSTR(SP_Z_STR), LINEAR_UNIT(planner.z_fade_height) diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index ca02fc9765..3b669fbba2 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -817,11 +817,11 @@ G29_TYPE GcodeSuite::G29() { abl.mean /= abl.abl_points; if (abl.verbose_level) { - SERIAL_ECHOPAIR_F("Eqn coefficients: a: ", plane_equation_coefficients.a, 8); - SERIAL_ECHOPAIR_F(" b: ", plane_equation_coefficients.b, 8); - SERIAL_ECHOPAIR_F(" d: ", plane_equation_coefficients.d, 8); + SERIAL_ECHOPGM("Eqn coefficients: a: ", p_float_t(plane_equation_coefficients.a, 8), + " b: ", p_float_t(plane_equation_coefficients.b, 8), + " d: ", p_float_t(plane_equation_coefficients.d, 8)); if (abl.verbose_level > 2) - SERIAL_ECHOPAIR_F("\nMean of sampled points: ", abl.mean, 8); + SERIAL_ECHOPGM("\nMean of sampled points: ", p_float_t(abl.mean, 8)); SERIAL_EOL(); } @@ -837,7 +837,7 @@ G29_TYPE GcodeSuite::G29() { float min_diff = 999; auto print_topo_map = [&](FSTR_P const title, const bool get_min) { - SERIAL_ECHOF(title); + SERIAL_ECHO(title); for (int8_t yy = abl.grid_points.y - 1; yy >= 0; yy--) { for (uint8_t xx = 0; xx < abl.grid_points.x; ++xx) { const int ind = abl.indexIntoAB[xx][yy]; @@ -848,7 +848,7 @@ G29_TYPE GcodeSuite::G29() { const float subval = get_min ? abl.mean : tmp.z + min_diff, diff = abl.eqnBVector[ind] - subval; SERIAL_CHAR(' '); if (diff >= 0.0) SERIAL_CHAR('+'); // Include + for column alignment - SERIAL_ECHO_F(diff, 5); + SERIAL_ECHO(p_float_t(diff, 5)); } // xx SERIAL_EOL(); } // yy diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index fde640fe98..ab7b03961c 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -274,7 +274,7 @@ void GcodeSuite::G28() { #if HAS_HOMING_CURRENT auto debug_current = [](FSTR_P const s, const int16_t a, const int16_t b) { - DEBUG_ECHOF(s); DEBUG_ECHOLNPGM(" current: ", a, " -> ", b); + DEBUG_ECHOLN(s, F(" current: "), a, F(" -> "), b); }; #if HAS_CURRENT_HOME(X) const int16_t tmc_save_current_X = stepperX.getMilliamps(); diff --git a/Marlin/src/gcode/calibrate/G33.cpp b/Marlin/src/gcode/calibrate/G33.cpp index 226570acce..ba6cccffab 100644 --- a/Marlin/src/gcode/calibrate/G33.cpp +++ b/Marlin/src/gcode/calibrate/G33.cpp @@ -92,8 +92,7 @@ void ac_cleanup(TERN_(HAS_MULTI_HOTEND, const uint8_t old_tool_index)) { } void print_signed_float(FSTR_P const prefix, const_float_t f) { - SERIAL_ECHOPGM(" "); - SERIAL_ECHOF(prefix, AS_CHAR(':')); + SERIAL_ECHO(F(" "), prefix, AS_CHAR(':')); serial_offset(f); } @@ -636,7 +635,7 @@ void GcodeSuite::G33() { else #endif { - SERIAL_ECHOPAIR_F("std dev:", zero_std_dev_min, 3); + SERIAL_ECHOPGM("std dev:", p_float_t(zero_std_dev_min, 3)); } SERIAL_EOL(); char mess[21]; @@ -657,7 +656,7 @@ void GcodeSuite::G33() { strcpy_P(mess, PSTR("No convergence")); SERIAL_ECHO(mess); SERIAL_ECHO_SP(32); - SERIAL_ECHOLNPAIR_F("std dev:", zero_std_dev, 3); + SERIAL_ECHOLNPGM("std dev:", p_float_t(zero_std_dev, 3)); ui.set_status(mess); if (verbose_level > 1) print_calibration_settings(_endstop_results, _angle_results); @@ -665,9 +664,9 @@ void GcodeSuite::G33() { } else { // dry run FSTR_P const enddryrun = F("End DRY-RUN"); - SERIAL_ECHOF(enddryrun); + SERIAL_ECHO(enddryrun); SERIAL_ECHO_SP(35); - SERIAL_ECHOLNPAIR_F("std dev:", zero_std_dev, 3); + SERIAL_ECHOLNPGM("std dev:", p_float_t(zero_std_dev, 3)); char mess[21]; strcpy_P(mess, FTOP(enddryrun)); diff --git a/Marlin/src/gcode/calibrate/G34_M422.cpp b/Marlin/src/gcode/calibrate/G34_M422.cpp index 7650443de8..39f3d2d5df 100644 --- a/Marlin/src/gcode/calibrate/G34_M422.cpp +++ b/Marlin/src/gcode/calibrate/G34_M422.cpp @@ -411,7 +411,7 @@ void GcodeSuite::G34() { SERIAL_ECHOLNPGM("G34 aborted."); else { SERIAL_ECHOLNPGM("Did ", iteration + (iteration != z_auto_align_iterations), " of ", z_auto_align_iterations); - SERIAL_ECHOLNPAIR_F("Accuracy: ", z_maxdiff); + SERIAL_ECHOLNPGM("Accuracy: ", p_float_t(z_maxdiff, 2)); } // Stow the probe because the last call to probe.probe_at_point(...) @@ -501,8 +501,7 @@ void GcodeSuite::M422() { } if (!WITHIN(position_index, 1, NUM_Z_STEPPERS)) { - SERIAL_ECHOF(err_string); - SERIAL_ECHOLNPGM(" index invalid (1.." STRINGIFY(NUM_Z_STEPPERS) ")."); + SERIAL_ECHOLN(err_string, F(" index invalid (1.." STRINGIFY(NUM_Z_STEPPERS) ").")); return; } diff --git a/Marlin/src/gcode/calibrate/G76_M871.cpp b/Marlin/src/gcode/calibrate/G76_M871.cpp index 34b72ecdf3..6fe3dd89cf 100644 --- a/Marlin/src/gcode/calibrate/G76_M871.cpp +++ b/Marlin/src/gcode/calibrate/G76_M871.cpp @@ -113,7 +113,7 @@ if (isnan(measured_z)) SERIAL_ECHOLNPGM("!Received NAN. Aborting."); else { - SERIAL_ECHOLNPAIR_F("Measured: ", measured_z); + SERIAL_ECHOLNPGM("Measured: ", p_float_t(measured_z, 2)); if (targ == ProbeTempComp::cali_info[sid].start_temp) ptc.prepare_new_calibration(measured_z); else diff --git a/Marlin/src/gcode/calibrate/M100.cpp b/Marlin/src/gcode/calibrate/M100.cpp index 3791c69f88..c05fe12fc3 100644 --- a/Marlin/src/gcode/calibrate/M100.cpp +++ b/Marlin/src/gcode/calibrate/M100.cpp @@ -183,7 +183,7 @@ inline int32_t count_test_bytes(const char * const start_free_memory) { } void M100_dump_routine(FSTR_P const title, const char * const start, const uintptr_t size) { - SERIAL_ECHOLNF(title); + SERIAL_ECHOLN(title); // // Round the start and end locations to produce full lines of output // @@ -197,7 +197,7 @@ inline int32_t count_test_bytes(const char * const start_free_memory) { #endif // M100_FREE_MEMORY_DUMPER inline int check_for_free_memory_corruption(FSTR_P const title) { - SERIAL_ECHOF(title); + SERIAL_ECHO(title); char *start_free_memory = free_memory_start, *end_free_memory = free_memory_end; int n = end_free_memory - start_free_memory; diff --git a/Marlin/src/gcode/calibrate/M48.cpp b/Marlin/src/gcode/calibrate/M48.cpp index 2748d4e7ba..9f285b8b8a 100644 --- a/Marlin/src/gcode/calibrate/M48.cpp +++ b/Marlin/src/gcode/calibrate/M48.cpp @@ -126,15 +126,13 @@ void GcodeSuite::M48() { auto dev_report = [](const bool verbose, const_float_t mean, const_float_t sigma, const_float_t min, const_float_t max, const bool final=false) { if (verbose) { - SERIAL_ECHOPAIR_F("Mean: ", mean, 6); - if (!final) SERIAL_ECHOPAIR_F(" Sigma: ", sigma, 6); - SERIAL_ECHOPAIR_F(" Min: ", min, 3); - SERIAL_ECHOPAIR_F(" Max: ", max, 3); - SERIAL_ECHOPAIR_F(" Range: ", max-min, 3); + SERIAL_ECHOPGM("Mean: ", p_float_t(mean, 6)); + if (!final) SERIAL_ECHOPGM(" Sigma: ", p_float_t(sigma, 6)); + SERIAL_ECHOPGM(" Min: ", p_float_t(min, 3), " Max: ", p_float_t(max, 3), " Range: ", p_float_t(max-min, 3)); if (final) SERIAL_EOL(); } if (final) { - SERIAL_ECHOLNPAIR_F("Standard Deviation: ", sigma, 6); + SERIAL_ECHOLNPGM("Standard Deviation: ", p_float_t(sigma, 6)); SERIAL_EOL(); } }; @@ -207,7 +205,7 @@ void GcodeSuite::M48() { while (!probe.can_reach(next_pos)) { next_pos *= 0.8f; if (verbose_level > 3) - SERIAL_ECHOLNPGM_P(PSTR("Moving inward: X"), next_pos.x, SP_Y_STR, next_pos.y); + SERIAL_ECHOLN(F("Moving inward: X"), next_pos.x, FPSTR(SP_Y_STR), next_pos.y); } #elif HAS_ENDSTOPS // For a rectangular bed just keep the probe in bounds @@ -216,7 +214,7 @@ void GcodeSuite::M48() { #endif if (verbose_level > 3) - SERIAL_ECHOLNPGM_P(PSTR("Going to: X"), next_pos.x, SP_Y_STR, next_pos.y); + SERIAL_ECHOLN(F("Going to: X"), next_pos.x, FPSTR(SP_Y_STR), next_pos.y); do_blocking_move_to_xy(next_pos); } // n_legs loop @@ -247,10 +245,7 @@ void GcodeSuite::M48() { sigma = SQRT(dev_sum / (n + 1)); if (verbose_level > 1) { - SERIAL_ECHO(n + 1); - SERIAL_ECHOPGM(" of ", n_samples); - SERIAL_ECHOPAIR_F(": z: ", pz, 3); - SERIAL_CHAR(' '); + SERIAL_ECHO(n + 1, F(" of "), n_samples, F(": z: "), p_float_t(pz, 3), AS_CHAR(' ')); dev_report(verbose_level > 2, mean, sigma, min, max); SERIAL_EOL(); } diff --git a/Marlin/src/gcode/calibrate/M852.cpp b/Marlin/src/gcode/calibrate/M852.cpp index 6c661dcd61..6d3c004548 100644 --- a/Marlin/src/gcode/calibrate/M852.cpp +++ b/Marlin/src/gcode/calibrate/M852.cpp @@ -93,11 +93,9 @@ void GcodeSuite::M852() { void GcodeSuite::M852_report(const bool forReplay/*=true*/) { report_heading_etc(forReplay, F(STR_SKEW_FACTOR)); - SERIAL_ECHOPAIR_F(" M852 I", planner.skew_factor.xy, 6); + SERIAL_ECHOPGM(" M852 I", p_float_t(planner.skew_factor.xy, 6)); #if ENABLED(SKEW_CORRECTION_FOR_Z) - SERIAL_ECHOPAIR_F(" J", planner.skew_factor.xz, 6); - SERIAL_ECHOPAIR_F(" K", planner.skew_factor.yz, 6); - SERIAL_ECHOLNPGM(" ; XY, XZ, YZ"); + SERIAL_ECHOLNPGM(" J", p_float_t(planner.skew_factor.xz, 6), " K", p_float_t(planner.skew_factor.yz, 6), " ; XY, XZ, YZ"); #else SERIAL_ECHOLNPGM(" ; XY"); #endif diff --git a/Marlin/src/gcode/config/M218.cpp b/Marlin/src/gcode/config/M218.cpp index d645685701..ff63dcaf34 100644 --- a/Marlin/src/gcode/config/M218.cpp +++ b/Marlin/src/gcode/config/M218.cpp @@ -66,12 +66,12 @@ void GcodeSuite::M218_report(const bool forReplay/*=true*/) { report_heading_etc(forReplay, F(STR_HOTEND_OFFSETS)); for (uint8_t e = 1; e < HOTENDS; ++e) { report_echo_start(forReplay); - SERIAL_ECHOPGM_P( + SERIAL_ECHOLNPGM_P( PSTR(" M218 T"), e, SP_X_STR, LINEAR_UNIT(hotend_offset[e].x), - SP_Y_STR, LINEAR_UNIT(hotend_offset[e].y) + SP_Y_STR, LINEAR_UNIT(hotend_offset[e].y), + SP_Z_STR, p_float_t(LINEAR_UNIT(hotend_offset[e].z), 3) ); - SERIAL_ECHOLNPAIR_F_P(SP_Z_STR, LINEAR_UNIT(hotend_offset[e].z), 3); } } diff --git a/Marlin/src/gcode/config/M302.cpp b/Marlin/src/gcode/config/M302.cpp index 12408c8987..26e5a468ca 100644 --- a/Marlin/src/gcode/config/M302.cpp +++ b/Marlin/src/gcode/config/M302.cpp @@ -59,9 +59,7 @@ void GcodeSuite::M302() { else if (!seen_S) { // Report current state SERIAL_ECHO_START(); - SERIAL_ECHOPGM("Cold extrudes are "); - SERIAL_ECHOF(thermalManager.allow_cold_extrude ? F("en") : F("dis")); - SERIAL_ECHOLNPGM("abled (min temp ", thermalManager.extrude_min_temp, "C)"); + SERIAL_ECHOLN(F("Cold extrudes are "), thermalManager.allow_cold_extrude ? F("en") : F("dis"), F("abled (min temp "), thermalManager.extrude_min_temp, F("C)")); } } diff --git a/Marlin/src/gcode/config/M43.cpp b/Marlin/src/gcode/config/M43.cpp index 7daf8afab8..7657aadc6d 100644 --- a/Marlin/src/gcode/config/M43.cpp +++ b/Marlin/src/gcode/config/M43.cpp @@ -294,9 +294,7 @@ void GcodeSuite::M43() { // 'E' Enable or disable endstop monitoring and return if (parser.seen('E')) { endstops.monitor_flag = parser.value_bool(); - SERIAL_ECHOPGM("endstop monitor "); - SERIAL_ECHOF(endstops.monitor_flag ? F("en") : F("dis")); - SERIAL_ECHOLNPGM("abled"); + SERIAL_ECHOLN(F("endstop monitor "), endstops.monitor_flag ? F("en") : F("dis"), F("abled")); return; } diff --git a/Marlin/src/gcode/config/M92.cpp b/Marlin/src/gcode/config/M92.cpp index e848665e6b..67f55e2232 100644 --- a/Marlin/src/gcode/config/M92.cpp +++ b/Marlin/src/gcode/config/M92.cpp @@ -82,7 +82,7 @@ void GcodeSuite::M92() { if (wanted) { const float best = uint16_t(wanted / z_full_step_mm) * z_full_step_mm; SERIAL_ECHOPGM(", best:[", best); - if (best != wanted) { SERIAL_CHAR(','); SERIAL_DECIMAL(best + z_full_step_mm); } + if (best != wanted) { SERIAL_ECHO(AS_CHAR(','), best + z_full_step_mm); } SERIAL_CHAR(']'); } SERIAL_ECHOLNPGM(" }"); diff --git a/Marlin/src/gcode/control/M80_M81.cpp b/Marlin/src/gcode/control/M80_M81.cpp index 94dd5e3dd9..2d3e407446 100644 --- a/Marlin/src/gcode/control/M80_M81.cpp +++ b/Marlin/src/gcode/control/M80_M81.cpp @@ -48,7 +48,7 @@ // S: Report the current power supply state and exit if (parser.seen('S')) { - SERIAL_ECHOF(powerManager.psu_on ? F("PS:1\n") : F("PS:0\n")); + SERIAL_ECHO(powerManager.psu_on ? F("PS:1\n") : F("PS:0\n")); return; } diff --git a/Marlin/src/gcode/feature/advance/M900.cpp b/Marlin/src/gcode/feature/advance/M900.cpp index 8c0da41801..28cc4f8047 100644 --- a/Marlin/src/gcode/feature/advance/M900.cpp +++ b/Marlin/src/gcode/feature/advance/M900.cpp @@ -120,8 +120,7 @@ void GcodeSuite::M900() { EXTRUDER_LOOP() { const bool slot = TEST(lin_adv_slot, e); SERIAL_ECHOLNPGM("Advance T", e, " S", slot, " K", planner.extruder_advance_K[e], - "(S", !slot, " K", other_extruder_advance_K[e], ")"); - SERIAL_EOL(); + "(S", !slot, " K", other_extruder_advance_K[e], ")"); } #endif @@ -132,10 +131,7 @@ void GcodeSuite::M900() { SERIAL_ECHOLNPGM("Advance K=", planner.extruder_advance_K[0]); #else SERIAL_ECHOPGM("Advance K"); - EXTRUDER_LOOP() { - SERIAL_CHAR(' ', '0' + e, ':'); - SERIAL_DECIMAL(planner.extruder_advance_K[e]); - } + EXTRUDER_LOOP() SERIAL_ECHO(AS_CHAR(' '), AS_CHAR('0' + e), AS_CHAR(':'), planner.extruder_advance_K[e]); SERIAL_EOL(); #endif diff --git a/Marlin/src/gcode/feature/ft_motion/M493.cpp b/Marlin/src/gcode/feature/ft_motion/M493.cpp index 9469f1575b..f34c6c1bd7 100644 --- a/Marlin/src/gcode/feature/ft_motion/M493.cpp +++ b/Marlin/src/gcode/feature/ft_motion/M493.cpp @@ -74,28 +74,18 @@ void say_shaping() { #if HAS_X_AXIS SERIAL_ECHO_TERNARY(dynamic, "X/A ", "base dynamic", "static", " compensator frequency: "); - SERIAL_ECHO_F(fxdTiCtrl.cfg.baseFreq[X_AXIS], 2); - SERIAL_ECHOPGM("Hz"); + SERIAL_ECHO(p_float_t(fxdTiCtrl.cfg.baseFreq[X_AXIS], 2), F("Hz")); #if HAS_DYNAMIC_FREQ - if (dynamic) { - SERIAL_ECHOPGM(" scaling: "); - SERIAL_ECHO_F(fxdTiCtrl.cfg.dynFreqK[X_AXIS], 8); - serial_ternary(F("Hz/"), z_based, F("mm"), F("g")); - } + if (dynamic) SERIAL_ECHO(" scaling: ", p_float_t(fxdTiCtrl.cfg.dynFreqK[X_AXIS], 8), F("Hz/"), z_based ? F("mm") : F("g")); #endif SERIAL_EOL(); #endif #if HAS_Y_AXIS SERIAL_ECHO_TERNARY(dynamic, "Y/B ", "base dynamic", "static", " compensator frequency: "); - SERIAL_ECHO_F(fxdTiCtrl.cfg.baseFreq[Y_AXIS], 2); - SERIAL_ECHOLNPGM(" Hz"); + SERIAL_ECHO(p_float_t(fxdTiCtrl.cfg.baseFreq[Y_AXIS], 2), F(" Hz")); #if HAS_DYNAMIC_FREQ - if (dynamic) { - SERIAL_ECHOPGM(" scaling: "); - SERIAL_ECHO_F(fxdTiCtrl.cfg.dynFreqK[Y_AXIS], 8); - serial_ternary(F("Hz/"), z_based, F("mm"), F("g")); - } + if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(fxdTiCtrl.cfg.dynFreqK[Y_AXIS], 8), F("Hz/"), z_based ? F("mm") : F("g")); #endif SERIAL_EOL(); #endif @@ -103,10 +93,8 @@ void say_shaping() { #if HAS_EXTRUDERS SERIAL_ECHO_TERNARY(fxdTiCtrl.cfg.linearAdvEna, "Linear Advance ", "en", "dis", "abled"); - SERIAL_ECHOPGM(". Gain: "); SERIAL_ECHO_F(fxdTiCtrl.cfg.linearAdvK, 5); - SERIAL_EOL(); + SERIAL_ECHOLN(F(". Gain: "), p_float_t(fxdTiCtrl.cfg.linearAdvK, 5)); #endif - } void GcodeSuite::M493_report(const bool forReplay/*=true*/) { diff --git a/Marlin/src/gcode/feature/network/M552-M554.cpp b/Marlin/src/gcode/feature/network/M552-M554.cpp index ca7ddd0d36..7633ec1fd5 100644 --- a/Marlin/src/gcode/feature/network/M552-M554.cpp +++ b/Marlin/src/gcode/feature/network/M552-M554.cpp @@ -63,8 +63,7 @@ void ip_report(const uint16_t cmd, FSTR_P const post, const IPAddress &ipo) { SERIAL_ECHO(ipo[i]); if (i < 3) SERIAL_CHAR('.'); } - SERIAL_ECHOPGM(" ; "); - SERIAL_ECHOLNF(post); + SERIAL_ECHOLN(F(" ; "), post); } /** diff --git a/Marlin/src/gcode/feature/pause/G61.cpp b/Marlin/src/gcode/feature/pause/G61.cpp index 0efcfbf208..423632e72e 100644 --- a/Marlin/src/gcode/feature/pause/G61.cpp +++ b/Marlin/src/gcode/feature/pause/G61.cpp @@ -87,8 +87,7 @@ void GcodeSuite::G61() { destination[i] = parser.seen(AXIS_CHAR(i)) ? stored_position[slot][i] + parser.value_axis_units((AxisEnum)i) : current_position[i]; - DEBUG_CHAR(' ', AXIS_CHAR(i)); - DEBUG_ECHO_F(destination[i]); + DEBUG_ECHO(AS_CHAR(' '), AS_CHAR(AXIS_CHAR(i)), p_float_t(destination[i], 2)); } DEBUG_EOL(); // Move to the saved position diff --git a/Marlin/src/gcode/feature/powerloss/M1000.cpp b/Marlin/src/gcode/feature/powerloss/M1000.cpp index 1629a154bc..e874c19d5e 100644 --- a/Marlin/src/gcode/feature/powerloss/M1000.cpp +++ b/Marlin/src/gcode/feature/powerloss/M1000.cpp @@ -47,8 +47,7 @@ void menu_job_recovery(); inline void plr_error(FSTR_P const prefix) { #if ENABLED(DEBUG_POWER_LOSS_RECOVERY) DEBUG_ECHO_START(); - DEBUG_ECHOF(prefix); - DEBUG_ECHOLNPGM(" Job Recovery Data"); + DEBUG_ECHOLN(prefix, F(" Job Recovery Data")); #else UNUSED(prefix); #endif diff --git a/Marlin/src/gcode/feature/powerloss/M413.cpp b/Marlin/src/gcode/feature/powerloss/M413.cpp index f6d82b0ad9..5e508d4f28 100644 --- a/Marlin/src/gcode/feature/powerloss/M413.cpp +++ b/Marlin/src/gcode/feature/powerloss/M413.cpp @@ -50,8 +50,8 @@ void GcodeSuite::M413() { if (parser.seen_test('D')) recovery.debug(F("M413")); if (parser.seen_test('O')) recovery._outage(true); if (parser.seen_test('C')) (void)recovery.check(); - if (parser.seen_test('E')) SERIAL_ECHOF(recovery.exists() ? F("PLR Exists\n") : F("No PLR\n")); - if (parser.seen_test('V')) SERIAL_ECHOF(recovery.valid() ? F("Valid\n") : F("Invalid\n")); + if (parser.seen_test('E')) SERIAL_ECHO(recovery.exists() ? F("PLR Exists\n") : F("No PLR\n")); + if (parser.seen_test('V')) SERIAL_ECHO(recovery.valid() ? F("Valid\n") : F("Invalid\n")); #endif } diff --git a/Marlin/src/gcode/feature/trinamic/M569.cpp b/Marlin/src/gcode/feature/trinamic/M569.cpp index 50ac5c7468..6f1af7b681 100644 --- a/Marlin/src/gcode/feature/trinamic/M569.cpp +++ b/Marlin/src/gcode/feature/trinamic/M569.cpp @@ -35,8 +35,7 @@ template void tmc_say_stealth_status(TMC &st) { st.printLabel(); - SERIAL_ECHOPGM(" driver mode:\t"); - SERIAL_ECHOLNF(st.get_stealthChop() ? F("stealthChop") : F("spreadCycle")); + SERIAL_ECHOLN(F(" driver mode:\t"), st.get_stealthChop() ? F("stealthChop") : F("spreadCycle")); } template void tmc_set_stealthChop(TMC &st, const bool enable) { @@ -161,10 +160,7 @@ void GcodeSuite::M569_report(const bool forReplay/*=true*/) { auto say_M569 = [](const bool forReplay, FSTR_P const etc=nullptr, const bool eol=false) { if (!forReplay) SERIAL_ECHO_START(); SERIAL_ECHOPGM(" M569 S1"); - if (etc) { - SERIAL_CHAR(' '); - SERIAL_ECHOF(etc); - } + if (etc) SERIAL_ECHO(AS_CHAR(' '), etc); if (eol) SERIAL_EOL(); }; diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 01b48a4af9..cedcf97c51 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -105,8 +105,7 @@ void GcodeSuite::report_heading(const bool forReplay, FSTR_P const fstr, const b if (forReplay) return; if (fstr) { SERIAL_ECHO_START(); - SERIAL_ECHOPGM("; "); - SERIAL_ECHOF(fstr); + SERIAL_ECHO(F("; "), fstr); } if (eol) { SERIAL_CHAR(':'); SERIAL_EOL(); } } @@ -1120,7 +1119,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { if (!no_ok) queue.ok_to_send(); - SERIAL_OUT(msgDone); // Call the msgDone serial hook to signal command processing done + SERIAL_IMPL.msgDone(); // Call the msgDone serial hook to signal command processing done } #if ENABLED(M100_FREE_MEMORY_DUMPER) diff --git a/Marlin/src/gcode/geometry/G17-G19.cpp b/Marlin/src/gcode/geometry/G17-G19.cpp index fbac7470ca..312b89286c 100644 --- a/Marlin/src/gcode/geometry/G17-G19.cpp +++ b/Marlin/src/gcode/geometry/G17-G19.cpp @@ -29,7 +29,7 @@ inline void report_workspace_plane() { SERIAL_ECHO_START(); SERIAL_ECHOPGM("Workspace Plane "); - SERIAL_ECHOF( + SERIAL_ECHO( gcode.workspace_plane == GcodeSuite::PLANE_YZ ? F("YZ\n") : gcode.workspace_plane == GcodeSuite::PLANE_ZX ? F("ZX\n") : F("XY\n") diff --git a/Marlin/src/gcode/probe/G30.cpp b/Marlin/src/gcode/probe/G30.cpp index 4c044af9d6..43fc27bfc1 100644 --- a/Marlin/src/gcode/probe/G30.cpp +++ b/Marlin/src/gcode/probe/G30.cpp @@ -100,7 +100,7 @@ void GcodeSuite::G30() { report_current_position(); } else { - SERIAL_ECHOLNF(GET_EN_TEXT_F(MSG_ZPROBE_OUT)); + SERIAL_ECHOLN(GET_EN_TEXT_F(MSG_ZPROBE_OUT)); LCD_MESSAGE(MSG_ZPROBE_OUT); } diff --git a/Marlin/src/gcode/queue.cpp b/Marlin/src/gcode/queue.cpp index 967ab76897..9ce28f781c 100644 --- a/Marlin/src/gcode/queue.cpp +++ b/Marlin/src/gcode/queue.cpp @@ -324,7 +324,7 @@ inline int read_serial(const serial_index_t index) { return SERIAL_IMPL.read(ind void GCodeQueue::gcode_line_error(FSTR_P const ferr, const serial_index_t serial_ind) { PORT_REDIRECT(SERIAL_PORTMASK(serial_ind)); // Reply to the serial port that sent the command SERIAL_ERROR_START(); - SERIAL_ECHOLNF(ferr, serial_state[serial_ind.index].last_N); + SERIAL_ECHOLN(ferr, serial_state[serial_ind.index].last_N); while (read_serial(serial_ind) != -1) { /* nada */ } // Clear out the RX buffer. Why don't use flush here ? flush_and_request_resend(serial_ind); serial_state[serial_ind.index].count = 0; diff --git a/Marlin/src/gcode/stats/M31.cpp b/Marlin/src/gcode/stats/M31.cpp index 1a1c13ba2f..a76ec7ee4d 100644 --- a/Marlin/src/gcode/stats/M31.cpp +++ b/Marlin/src/gcode/stats/M31.cpp @@ -33,7 +33,7 @@ void GcodeSuite::M31() { char buffer[22]; duration_t(print_job_timer.duration()).toString(buffer); - ui.set_status(buffer, ENABLED(DWIN_LCD_PROUI)); + ui.set_status(buffer, ENABLED(DWIN_LCD_PROUI)); // No expire on ProUI SERIAL_ECHO_MSG("Print time: ", buffer); } diff --git a/Marlin/src/gcode/temp/M306.cpp b/Marlin/src/gcode/temp/M306.cpp index 7d2d94952f..2830a77ab4 100644 --- a/Marlin/src/gcode/temp/M306.cpp +++ b/Marlin/src/gcode/temp/M306.cpp @@ -92,16 +92,16 @@ void GcodeSuite::M306_report(const bool forReplay/*=true*/) { HOTEND_LOOP() { report_echo_start(forReplay); MPC_t &mpc = thermalManager.temp_hotend[e].mpc; - SERIAL_ECHOPGM(" M306 E", e); - SERIAL_ECHOPAIR_F(" P", mpc.heater_power, 2); - SERIAL_ECHOPAIR_F(" C", mpc.block_heat_capacity, 2); - SERIAL_ECHOPAIR_F(" R", mpc.sensor_responsiveness, 4); - SERIAL_ECHOPAIR_F(" A", mpc.ambient_xfer_coeff_fan0, 4); + SERIAL_ECHOPGM(" M306 E", e, + " P", p_float_t(mpc.heater_power, 2), + " C", p_float_t(mpc.block_heat_capacity, 2), + " R", p_float_t(mpc.sensor_responsiveness, 4), + " A", p_float_t(mpc.ambient_xfer_coeff_fan0, 4) + ); #if ENABLED(MPC_INCLUDE_FAN) - SERIAL_ECHOPAIR_F(" F", mpc.fanCoefficient(), 4); + SERIAL_ECHOPGM(" F", p_float_t(mpc.fanCoefficient(), 4)); #endif - SERIAL_ECHOPAIR_F(" H", mpc.filament_heat_capacity_permm, 4); - SERIAL_EOL(); + SERIAL_ECHOLNPGM(" H", p_float_t(mpc.filament_heat_capacity_permm, 4)); } } diff --git a/Marlin/src/gcode/units/M149.cpp b/Marlin/src/gcode/units/M149.cpp index a04247cbcb..43091b6710 100644 --- a/Marlin/src/gcode/units/M149.cpp +++ b/Marlin/src/gcode/units/M149.cpp @@ -38,8 +38,7 @@ void GcodeSuite::M149() { void GcodeSuite::M149_report(const bool forReplay/*=true*/) { report_heading_etc(forReplay, F(STR_TEMPERATURE_UNITS)); - SERIAL_ECHOPGM(" M149 ", AS_CHAR(parser.temp_units_code()), " ; Units in "); - SERIAL_ECHOLNF(parser.temp_units_name()); + SERIAL_ECHOLN(F(" M149 "), AS_CHAR(parser.temp_units_code()), F(" ; Units in "), parser.temp_units_name()); } #endif // TEMPERATURE_UNITS_SUPPORT diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 6d2bbd6edf..bc33c20f41 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -1815,6 +1815,9 @@ #if ANY_AXIS_HAS(SW_SERIAL) #define HAS_TMC_SW_SERIAL 1 #endif +#ifndef SERIAL_FLOAT_PRECISION + #define SERIAL_FLOAT_PRECISION 2 +#endif #if DISABLED(SENSORLESS_HOMING) #undef SENSORLESS_BACKOFF_MM diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 1ef9ee8517..7b83e0171f 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -295,29 +295,17 @@ private: matrix_3x3 rotation = matrix_3x3::create_look_at(vector_3(lsf_results.A, lsf_results.B, 1)); GRID_LOOP(i, j) { - float mx = bedlevel.get_mesh_x(i), - my = bedlevel.get_mesh_y(j), - mz = bedlevel.z_values[i][j]; + float mx = bedlevel.get_mesh_x(i), my = bedlevel.get_mesh_y(j), mz = bedlevel.z_values[i][j]; if (DEBUGGING(LEVELING)) { - DEBUG_ECHOPAIR_F("before rotation = [", mx, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(my, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(mz, 7); - DEBUG_ECHOPGM("] ---> "); + DEBUG_ECHOLN(F("before rotation = ["), p_float_t(mx, 7), AS_CHAR(','), p_float_t(my, 7), AS_CHAR(','), p_float_t(mz, 7), F("] ---> ")); DEBUG_DELAY(20); } rotation.apply_rotation_xyz(mx, my, mz); if (DEBUGGING(LEVELING)) { - DEBUG_ECHOPAIR_F("after rotation = [", mx, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(my, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(mz, 7); - DEBUG_ECHOLNPGM("]"); + DEBUG_ECHOLN(F("after rotation = ["), p_float_t(mx, 7), AS_CHAR(','), p_float_t(my, 7), AS_CHAR(','), p_float_t(mz, 7), AS_CHAR(']')); DEBUG_DELAY(20); } diff --git a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp index 48e07cc207..69721e4e77 100644 --- a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp +++ b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp @@ -104,29 +104,17 @@ char cmd[MAX_CMD_SIZE+16], str_1[16], str_2[16], str_3[16]; matrix_3x3 rotation = matrix_3x3::create_look_at(vector_3(lsf_results.A, lsf_results.B, 1)); GRID_LOOP(i, j) { - float mx = bedlevel.get_mesh_x(i), - my = bedlevel.get_mesh_y(j), - mz = bedlevel.z_values[i][j]; + float mx = bedlevel.get_mesh_x(i), my = bedlevel.get_mesh_y(j), mz = bedlevel.z_values[i][j]; if (DEBUGGING(LEVELING)) { - DEBUG_ECHOPAIR_F("before rotation = [", mx, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(my, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(mz, 7); - DEBUG_ECHOPGM("] ---> "); + DEBUG_ECHOLN(F("before rotation = ["), p_float_t(mx, 7), AS_CHAR(','), p_float_t(my, 7), AS_CHAR(','), p_float_t(mz, 7), F("] ---> ")); DEBUG_DELAY(20); } rotation.apply_rotation_xyz(mx, my, mz); if (DEBUGGING(LEVELING)) { - DEBUG_ECHOPAIR_F("after rotation = [", mx, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(my, 7); - DEBUG_CHAR(','); - DEBUG_ECHO_F(mz, 7); - DEBUG_ECHOLNPGM("]"); + DEBUG_ECHOLN(F("after rotation = ["), p_float_t(mx, 7), AS_CHAR(','), p_float_t(my, 7), AS_CHAR(','), p_float_t(mz, 7), F("] ---> ")); DEBUG_DELAY(20); } diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp index bcf78746a2..7d44e63537 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp @@ -88,14 +88,9 @@ void ChironTFT::startup() { // So we need to know what we are working with. // Panel type can be defined otherwise detect it automatically switch (panel_type) { - case AC_panel_new: - SERIAL_ECHOLNF(AC_msg_new_panel_set); - break; - case AC_panel_standard: - SERIAL_ECHOLNF(AC_msg_old_panel_set); - break; - default: - SERIAL_ECHOLNF(AC_msg_auto_panel_detection); + case AC_panel_new: SERIAL_ECHOLN(AC_msg_new_panel_set); break; + case AC_panel_standard: SERIAL_ECHOLN(AC_msg_old_panel_set); break; + default: SERIAL_ECHOLN(AC_msg_auto_panel_detection); detectPanelType(); break; } @@ -312,7 +307,7 @@ void ChironTFT::powerLossRecovery() { printer_state = AC_printer_resuming_from_power_outage; // Play tune to notify user we can recover. last_error = AC_error_powerloss; PlayTune(SOS); - SERIAL_ECHOLNF(AC_msg_powerloss_recovery); + SERIAL_ECHOLN(AC_msg_powerloss_recovery); } void ChironTFT::printComplete() { @@ -323,7 +318,7 @@ void ChironTFT::printComplete() { void ChironTFT::tftSend(FSTR_P const fstr/*=nullptr*/) { // A helper to print PROGMEM string to the panel #if ACDEBUG(AC_SOME) - DEBUG_ECHOF(fstr); + DEBUG_ECHO(fstr); #endif PGM_P str = FTOP(fstr); while (const char c = pgm_read_byte(str++)) TFTSer.write(c); @@ -447,7 +442,7 @@ void ChironTFT::selectFile() { selectedfile[command_len - 5] = '\0'; } #if ACDEBUG(AC_FILE) - DEBUG_ECHOLNPGM(" Selected File: ",selectedfile); + DEBUG_ECHOLNPGM(" Selected File: ", selectedfile); #endif switch (selectedfile[0]) { case '/': // Valid file selected @@ -494,7 +489,7 @@ void ChironTFT::processPanelRequest() { if (tpos >= 0) { if (panel_command[tpos + 1] == 'X' && panel_command[tpos + 2] =='Y') { panel_type = AC_panel_standard; - SERIAL_ECHOLNF(AC_msg_old_panel_detected); + SERIAL_ECHOLN(AC_msg_old_panel_detected); } } else { @@ -504,7 +499,7 @@ void ChironTFT::processPanelRequest() { if (tpos >= 0) { if (panel_command[tpos + 1] == '0' && panel_command[tpos + 2] ==']') { panel_type = AC_panel_new; - SERIAL_ECHOLNF(AC_msg_new_panel_detected); + SERIAL_ECHOLN(AC_msg_new_panel_detected); } } } @@ -828,7 +823,7 @@ void ChironTFT::panelProcess(uint8_t req) { if (!isPrinting()) { injectCommands(F("M501\nM420 S1")); selectedmeshpoint.x = selectedmeshpoint.y = 99; - SERIAL_ECHOLNF(AC_msg_mesh_changes_abandoned); + SERIAL_ECHOLN(AC_msg_mesh_changes_abandoned); } } @@ -836,7 +831,7 @@ void ChironTFT::panelProcess(uint8_t req) { if (!isPrinting()) { setAxisPosition_mm(1.0,Z); // Lift nozzle before any further movements are made injectCommands(F("M500")); - SERIAL_ECHOLNF(AC_msg_mesh_changes_saved); + SERIAL_ECHOLN(AC_msg_mesh_changes_saved); selectedmeshpoint.x = selectedmeshpoint.y = 99; } } diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp index 518bda73f3..1177d2977b 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp @@ -701,7 +701,7 @@ namespace Anycubic { void DgusTFT::tftSend(FSTR_P const fstr/*=nullptr*/) { // A helper to print PROGMEM string to the panel #if ACDEBUG(AC_SOME) - DEBUG_ECHOF(fstr); + DEBUG_ECHO(fstr); #endif PGM_P str = FTOP(fstr); while (const char c = pgm_read_byte(str++)) TFTSer.write(c); @@ -3214,7 +3214,7 @@ namespace Anycubic { } void DEBUG_PRINT_PAUSED_STATE(const paused_state_t state, FSTR_P const msg/*=nullptr*/) { - if (msg) DEBUG_ECHOF(msg); + if (msg) DEBUG_ECHO(msg); DEBUG_ECHOPGM("Paused state: ", state, " "); switch (state) { case AC_paused_heater_timed_out: DEBUG_ECHOPGM("AC_paused_heater_timed_out"); break; @@ -3228,7 +3228,7 @@ namespace Anycubic { // Human-readable debugging void DEBUG_PRINT_PRINTER_STATE(const printer_state_t state, FSTR_P const msg/*=nullptr*/) { - if (msg) DEBUG_ECHOF(msg); + if (msg) DEBUG_ECHO(msg); DEBUG_ECHOPGM("Printer State: ", state, " "); switch (state) { case AC_printer_idle: DEBUG_ECHOPGM("AC_printer_idle"); break; diff --git a/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h b/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h index c6dd270edf..163a095d08 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h +++ b/Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h @@ -207,7 +207,7 @@ public: static void sendFloatAsIntValueToDisplay(DGUS_VP_Variable &var) { if (var.memadr) { float f = *(float *)var.memadr; - DEBUG_ECHOLNPAIR_F(" >> ", f, 6); + DEBUG_ECHOLNPGM(" >> ", p_float_t(f, 6)); f *= cpow(10, decimals); dgus.writeVariable(var.VP, (int16_t)f); } diff --git a/Marlin/src/lcd/extui/nextion/nextion_tft.cpp b/Marlin/src/lcd/extui/nextion/nextion_tft.cpp index e5e3a74be2..0327a2f137 100644 --- a/Marlin/src/lcd/extui/nextion/nextion_tft.cpp +++ b/Marlin/src/lcd/extui/nextion/nextion_tft.cpp @@ -112,7 +112,7 @@ void NextionTFT::statusChange(const char * const msg) { void NextionTFT::tftSend(FSTR_P const fstr/*=nullptr*/) { // A helper to print PROGMEM string to the panel #if NEXDEBUG(N_SOME) - DEBUG_ECHOF(fstr); + DEBUG_ECHO(fstr); #endif PGM_P str = FTOP(fstr); while (const char c = pgm_read_byte(str++)) LCD_SERIAL.write(c); @@ -161,20 +161,20 @@ void NextionTFT::selectFile() { strncpy(selectedfile, nextion_command + 4, command_len - 4); selectedfile[command_len - 5] = '\0'; #if NEXDEBUG(N_FILE) - DEBUG_ECHOLNPAIR_F(" Selected File: ", selectedfile); + DEBUG_ECHOLNPGM(" Selected File: ", selectedfile); #endif switch (selectedfile[0]) { - case '/': // Valid file selected - //SEND_TXT("tmppage.M117", msg_sd_file_open_success); - break; - case '<': // .. (go up folder level) - filenavigator.upDIR(); - sendFileList(0); - break; - default: // enter sub folder - filenavigator.changeDIR(selectedfile); - sendFileList(0); - break; + case '/': // Valid file selected + //SEND_TXT("tmppage.M117", msg_sd_file_open_success); + break; + case '<': // .. (go up folder level) + filenavigator.upDIR(); + sendFileList(0); + break; + default: // enter sub folder + filenavigator.changeDIR(selectedfile); + sendFileList(0); + break; } } diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index 6440cae033..32b6f15995 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -307,14 +307,11 @@ void menu_advanced_settings(); #if ENABLED(BLTOUCH_LCD_VOLTAGE_MENU) void bltouch_report() { - PGMSTR(mode0, "OD"); - PGMSTR(mode1, "5V"); - DEBUG_ECHOPGM("BLTouch Mode: "); - DEBUG_ECHOPGM_P(bltouch.od_5v_mode ? mode1 : mode0); - DEBUG_ECHOLNPGM(" (Default " TERN(BLTOUCH_SET_5V_MODE, "5V", "OD") ")"); + FSTR_P const mode0 = F("OD"), mode1 = F("5V"); + DEBUG_ECHOLNPGM("BLTouch Mode: ", bltouch.od_5v_mode ? mode1 : mode0, " (Default ", TERN(BLTOUCH_SET_5V_MODE, mode1, mode0), ")"); char mess[21]; strcpy_P(mess, PSTR("BLTouch Mode: ")); - strcpy_P(&mess[15], bltouch.od_5v_mode ? mode1 : mode0); + strcpy_P(&mess[15], bltouch.od_5v_mode ? FTOP(mode1) : FTOP(mode0)); ui.set_status(mess); ui.return_to_status(); } diff --git a/Marlin/src/lcd/utf8.cpp b/Marlin/src/lcd/utf8.cpp index 075f8b0c7c..6957fffc64 100644 --- a/Marlin/src/lcd/utf8.cpp +++ b/Marlin/src/lcd/utf8.cpp @@ -177,13 +177,8 @@ static inline uint8_t utf8_strlen_cb(const char *pstart, read_byte_cb_t cb_read_ return cnt; } -uint8_t utf8_strlen(const char *pstart) { - return utf8_strlen_cb(pstart, read_byte_ram); -} - -uint8_t utf8_strlen_P(PGM_P pstart) { - return utf8_strlen_cb(pstart, read_byte_rom); -} +uint8_t utf8_strlen(const char *pstart) { return utf8_strlen_cb(pstart, read_byte_ram); } +uint8_t utf8_strlen_P(PGM_P pstart) { return utf8_strlen_cb(pstart, read_byte_rom); } static inline uint8_t utf8_byte_pos_by_char_num_cb(const char *pstart, read_byte_cb_t cb_read_byte, const uint8_t charnum) { uint8_t *p = (uint8_t *)pstart; diff --git a/Marlin/src/libs/vector_3.cpp b/Marlin/src/libs/vector_3.cpp index a222b5cc2e..5668d2f392 100644 --- a/Marlin/src/libs/vector_3.cpp +++ b/Marlin/src/libs/vector_3.cpp @@ -76,10 +76,11 @@ void vector_3::apply_rotation(const matrix_3x3 &matrix) { } void vector_3::debug(FSTR_P const title) { - SERIAL_ECHOF(title); - SERIAL_ECHOPAIR_F_P(SP_X_STR, x, 6); - SERIAL_ECHOPAIR_F_P(SP_Y_STR, y, 6); - SERIAL_ECHOLNPAIR_F_P(SP_Z_STR, z, 6); + SERIAL_ECHOLN(title, + FPSTR(SP_X_STR), p_float_t(x, 6), + FPSTR(SP_Y_STR), p_float_t(y, 6), + FPSTR(SP_Z_STR), p_float_t(z, 6) + ); } /** @@ -138,7 +139,7 @@ matrix_3x3 matrix_3x3::transpose(const matrix_3x3 &original) { } void matrix_3x3::debug(FSTR_P const title) { - if (title) SERIAL_ECHOLNF(title); + if (title) SERIAL_ECHOLN(title); for (uint8_t i = 0; i < 3; ++i) { for (uint8_t j = 0; j < 3; ++j) { serial_offset(vectors[i][j], 2); diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 3031e7d694..63689bf7ca 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -375,9 +375,8 @@ void Endstops::event_handler() { #endif static void print_es_state(const bool is_hit, FSTR_P const flabel=nullptr) { - if (flabel) SERIAL_ECHOF(flabel); - SERIAL_ECHOPGM(": "); - SERIAL_ECHOLNF(is_hit ? F(STR_ENDSTOP_HIT) : F(STR_ENDSTOP_OPEN)); + if (flabel) SERIAL_ECHO(flabel); + SERIAL_ECHOLN(F(": "), is_hit ? F(STR_ENDSTOP_HIT) : F(STR_ENDSTOP_OPEN)); } #pragma GCC diagnostic pop diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 0bece02c15..204617ba83 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -359,7 +359,7 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { FSTR_P const ds_str = deploy ? GET_TEXT_F(MSG_MANUAL_DEPLOY) : GET_TEXT_F(MSG_MANUAL_STOW); ui.return_to_status(); // To display the new status message ui.set_status(ds_str, 99); - SERIAL_ECHOLNF(deploy ? GET_EN_TEXT_F(MSG_MANUAL_DEPLOY) : GET_EN_TEXT_F(MSG_MANUAL_STOW)); + SERIAL_ECHOLN(deploy ? GET_EN_TEXT_F(MSG_MANUAL_DEPLOY) : GET_EN_TEXT_F(MSG_MANUAL_STOW)); OKAY_BUZZ(); diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 1defac2977..321691ba87 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -3595,7 +3595,7 @@ void MarlinSettings::reset() { #if ANY(EEPROM_CHITCHAT, DEBUG_LEVELING_FEATURE) FSTR_P const hdsl = F("Hardcoded Default Settings Loaded"); TERN_(HOST_EEPROM_CHITCHAT, hostui.notify(hdsl)); - DEBUG_ECHO_START(); DEBUG_ECHOLNF(hdsl); + DEBUG_ECHO_START(); DEBUG_ECHOLN(hdsl); #endif TERN_(EXTENSIBLE_UI, ExtUI::onFactoryReset()); @@ -3691,12 +3691,11 @@ void MarlinSettings::reset() { for (uint8_t py = 0; py < GRID_MAX_POINTS_Y; ++py) { for (uint8_t px = 0; px < GRID_MAX_POINTS_X; ++px) { CONFIG_ECHO_START(); - SERIAL_ECHOPGM(" G29 S3 I", px, " J", py); - SERIAL_ECHOLNPAIR_F_P(SP_Z_STR, LINEAR_UNIT(bedlevel.z_values[px][py]), 5); + SERIAL_ECHOLN(F(" G29 S3 I"), px, F(" J"), py, FPSTR(SP_Z_STR), p_float_t(LINEAR_UNIT(bedlevel.z_values[px][py]), 5)); } } CONFIG_ECHO_START(); - SERIAL_ECHOLNPAIR_F(" G29 S4 Z", LINEAR_UNIT(bedlevel.z_offset), 5); + SERIAL_ECHOLNPGM(" G29 S4 Z", p_float_t(LINEAR_UNIT(bedlevel.z_offset), 5)); } #elif ENABLED(AUTO_BED_LEVELING_UBL) @@ -3717,8 +3716,7 @@ void MarlinSettings::reset() { for (uint8_t py = 0; py < GRID_MAX_POINTS_Y; ++py) { for (uint8_t px = 0; px < GRID_MAX_POINTS_X; ++px) { CONFIG_ECHO_START(); - SERIAL_ECHOPGM(" G29 W I", px, " J", py); - SERIAL_ECHOLNPAIR_F_P(SP_Z_STR, LINEAR_UNIT(bedlevel.z_values[px][py]), 5); + SERIAL_ECHOLN(F(" G29 W I"), px, F(" J"), py, FPSTR(SP_Z_STR), p_float_t(LINEAR_UNIT(bedlevel.z_values[px][py]), 5)); } } } diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 4d366198c1..d671e7ce89 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -870,9 +870,9 @@ volatile bool Temperature::raw_temps_ready = false; #if ANY(PIDTEMPBED, PIDTEMPCHAMBER) FSTR_P const estring = GHV(F("chamber"), F("bed"), FPSTR(NUL_STR)); - say_default_(); SERIAL_ECHOF(estring); SERIAL_ECHOLNPGM("Kp ", tune_pid.p); - say_default_(); SERIAL_ECHOF(estring); SERIAL_ECHOLNPGM("Ki ", tune_pid.i); - say_default_(); SERIAL_ECHOF(estring); SERIAL_ECHOLNPGM("Kd ", tune_pid.d); + say_default_(); SERIAL_ECHO(estring, F("Kp "), tune_pid.p); + say_default_(); SERIAL_ECHO(estring, F("Ki "), tune_pid.i); + say_default_(); SERIAL_ECHO(estring, F("Kd "), tune_pid.d); #else say_default_(); SERIAL_ECHOLNPGM("Kp ", tune_pid.p); say_default_(); SERIAL_ECHOLNPGM("Ki ", tune_pid.i); @@ -1244,7 +1244,7 @@ volatile bool Temperature::raw_temps_ready = false; #if ENABLED(DEBUG_MPC_AUTOTUNE) SERIAL_ECHOLNPGM("asymp_temp ", asymp_temp); - SERIAL_ECHOLNPAIR_F("block_responsiveness ", block_responsiveness, 4); + SERIAL_ECHOLNPGM("block_responsiveness ", p_float_t(block_responsiveness, 4)); #endif // Make initial guess at transfer coefficients @@ -1293,9 +1293,9 @@ volatile bool Temperature::raw_temps_ready = false; block_responsiveness = -log((t2 - asymp_temp) / (t1 - asymp_temp)) / tuner.get_sample_interval(); #if ENABLED(DEBUG_MPC_AUTOTUNE) - SERIAL_ECHOLN("Refining estimates for:"); + SERIAL_ECHOLNPGM("Refining estimates for:"); SERIAL_ECHOLNPGM("asymp_temp ", asymp_temp); - SERIAL_ECHOLNPAIR_F("block_responsiveness ", block_responsiveness, 4); + SERIAL_ECHOLNPGM("block_responsiveness ", p_float_t(block_responsiveness, 4)); #endif // Update analytic tuning values based on the above @@ -1308,9 +1308,9 @@ volatile bool Temperature::raw_temps_ready = false; TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(MPC_DONE)); SERIAL_ECHOLNPGM("MPC_BLOCK_HEAT_CAPACITY ", mpc.block_heat_capacity); - SERIAL_ECHOLNPAIR_F("MPC_SENSOR_RESPONSIVENESS ", mpc.sensor_responsiveness, 4); - SERIAL_ECHOLNPAIR_F("MPC_AMBIENT_XFER_COEFF ", mpc.ambient_xfer_coeff_fan0, 4); - TERN_(HAS_FAN, SERIAL_ECHOLNPAIR_F("MPC_AMBIENT_XFER_COEFF_FAN255 ", ambient_xfer_coeff_fan255, 4)); + SERIAL_ECHOLNPGM("MPC_SENSOR_RESPONSIVENESS ", p_float_t(mpc.sensor_responsiveness, 4)); + SERIAL_ECHOLNPGM("MPC_AMBIENT_XFER_COEFF ", p_float_t(mpc.ambient_xfer_coeff_fan0, 4)); + TERN_(HAS_FAN, SERIAL_ECHOLNPGM("MPC_AMBIENT_XFER_COEFF_FAN255 ", p_float_t(ambient_xfer_coeff_fan255, 4))); } #endif // MPC_AUTOTUNE @@ -1477,7 +1477,7 @@ void Temperature::_temp_error(const heater_id_t heater_id, FSTR_P const serial_m if (IsRunning() && TERN1(BOGUS_TEMPERATURE_GRACE_PERIOD, killed == 2)) { SERIAL_ERROR_START(); - SERIAL_ECHOF(serial_msg); + SERIAL_ECHO(serial_msg); SERIAL_ECHOPGM(STR_STOPPED_HEATER); heater_id_t real_heater_id = heater_id; @@ -1583,7 +1583,7 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { FORCE_INLINE void debug(const_celsius_float_t c, const_float_t pid_out, FSTR_P const name=nullptr, const int8_t index=-1) { if (TERN0(HAS_PID_DEBUG, thermalManager.pid_debug_flag)) { SERIAL_ECHO_START(); - if (name) SERIAL_ECHOF(name); + if (name) SERIAL_ECHO(name); if (index >= 0) SERIAL_ECHO(index); SERIAL_ECHOLNPGM( STR_PID_DEBUG_INPUT, c, @@ -2225,12 +2225,12 @@ void Temperature::task() { const user_thermistor_t &t = user_thermistor[t_index]; - SERIAL_ECHOPAIR_F(" R", t.series_res, 1); - SERIAL_ECHOPAIR_F_P(SP_T_STR, t.res_25, 1); - SERIAL_ECHOPAIR_F_P(SP_B_STR, t.beta, 1); - SERIAL_ECHOPAIR_F_P(SP_C_STR, t.sh_c_coeff, 9); - SERIAL_ECHOPGM(" ; "); - SERIAL_ECHOF( + SERIAL_ECHO( + F(" R"), p_float_t(t.series_res, 1), FPSTR(SP_T_STR), p_float_t(t.res_25, 1), + FPSTR(SP_B_STR), p_float_t(t.beta, 1), FPSTR(SP_C_STR), p_float_t(t.sh_c_coeff, 9), + F(" ; ") + ); + SERIAL_ECHOLN( TERN_(TEMP_SENSOR_0_IS_CUSTOM, t_index == CTI_HOTEND_0 ? F("HOTEND 0") :) TERN_(TEMP_SENSOR_1_IS_CUSTOM, t_index == CTI_HOTEND_1 ? F("HOTEND 1") :) TERN_(TEMP_SENSOR_2_IS_CUSTOM, t_index == CTI_HOTEND_2 ? F("HOTEND 2") :) @@ -2245,9 +2245,8 @@ void Temperature::task() { TERN_(TEMP_SENSOR_PROBE_IS_CUSTOM, t_index == CTI_PROBE ? F("PROBE") :) TERN_(TEMP_SENSOR_BOARD_IS_CUSTOM, t_index == CTI_BOARD ? F("BOARD") :) TERN_(TEMP_SENSOR_REDUNDANT_IS_CUSTOM, t_index == CTI_REDUNDANT ? F("REDUNDANT") :) - nullptr + FSTR_P(nullptr) ); - SERIAL_EOL(); } celsius_float_t Temperature::user_thermistor_to_deg_c(const uint8_t t_index, const raw_adc_t raw) { @@ -4189,8 +4188,8 @@ void Temperature::isr() { #else #define SFP 2 #endif - SERIAL_CHAR(':'); SERIAL_PRINT(c, SFP); - if (show_t) { SERIAL_ECHOPGM(" /"); SERIAL_PRINT(t, SFP); } + SERIAL_ECHO(AS_CHAR(':'), p_float_t(c, SFP)); + if (show_t) { SERIAL_ECHOPGM(" /", p_float_t(t, SFP)); } #if ENABLED(SHOW_TEMP_ADC_VALUES) // Temperature MAX SPI boards do not have an OVERSAMPLENR defined SERIAL_ECHOPGM(" (", TERN(HAS_MAXTC_LIBRARIES, k == 'T', false) ? r : r * RECIPROCAL(OVERSAMPLENR)); diff --git a/Marlin/src/pins/pinsDebug.h b/Marlin/src/pins/pinsDebug.h index 4d51de52c8..9181a5b9da 100644 --- a/Marlin/src/pins/pinsDebug.h +++ b/Marlin/src/pins/pinsDebug.h @@ -177,11 +177,11 @@ const PinInfo pin_array[] PROGMEM = { bool pin_is_protected(const pin_t pin); static void print_input_or_output(const bool isout) { - SERIAL_ECHOF(isout ? F("Output ") : F("Input ")); + SERIAL_ECHO(isout ? F("Output ") : F("Input ")); } static void print_pin_state(const bool state) { - SERIAL_ECHOF(state ? F("HIGH") : F("LOW")); + SERIAL_ECHO(state ? F("HIGH") : F("LOW")); } // pretty report with PWM info @@ -209,7 +209,7 @@ inline void report_pin_state_extended(const pin_t pin, const bool ignore, const for (uint8_t x = 0; x < COUNT(pin_array); ++x) { // scan entire array and report all instances of this pin if (GET_ARRAY_PIN(x) == pin) { if (!found) { // report digital and analog pin number only on the first time through - if (start_string) SERIAL_ECHOF(start_string); + if (start_string) SERIAL_ECHO(start_string); SERIAL_ECHOPGM("PIN: "); PRINT_PIN(pin); print_port(pin); @@ -257,7 +257,7 @@ inline void report_pin_state_extended(const pin_t pin, const bool ignore, const } // end of for loop if (!found) { - if (start_string) SERIAL_ECHOF(start_string); + if (start_string) SERIAL_ECHO(start_string); SERIAL_ECHOPGM("PIN: "); PRINT_PIN(pin); print_port(pin); diff --git a/Marlin/src/sd/cardreader.cpp b/Marlin/src/sd/cardreader.cpp index 40c1f09f11..4bc22e84ca 100644 --- a/Marlin/src/sd/cardreader.cpp +++ b/Marlin/src/sd/cardreader.cpp @@ -668,9 +668,7 @@ void announceOpen(const uint8_t doing, const char * const path) { if (doing) { PORT_REDIRECT(SerialMask::All); SERIAL_ECHO_START(); - SERIAL_ECHOPGM("Now "); - SERIAL_ECHOF(doing == 1 ? F("doing") : F("fresh")); - SERIAL_ECHOLNPGM(" file: ", path); + SERIAL_ECHOLN(F("Now "), doing == 1 ? F("doing") : F("fresh"), F(" file: "), path); } } @@ -1447,8 +1445,7 @@ void CardReader::fileHasFinished() { recovery.init(); removeFile(recovery.filename); #if ENABLED(DEBUG_POWER_LOSS_RECOVERY) - SERIAL_ECHOPGM("Power-loss file delete"); - SERIAL_ECHOF(jobRecoverFileExists() ? F(" failed.\n") : F("d.\n")); + SERIAL_ECHOLN(F("Power-loss file delete"), jobRecoverFileExists() ? F(" failed.") : F("d.")); #endif } } diff --git a/docs/Serial.md b/docs/Serial.md index 88846e1bb4..5e0d7e63eb 100644 --- a/docs/Serial.md +++ b/docs/Serial.md @@ -57,18 +57,15 @@ The following macros are defined (in `serial.h`) to output data to the serial po |-------|------------|-------|---------|-----------------| | `SERIAL_ECHO` | Any basic type is supported (`char`, `uint8_t`, `int16_t`, `int32_t`, `float`, `long`, `const char*`, ...). | For a numeric type it prints the number in decimal. A string is output as a string. | `uint8_t a = 123; SERIAL_ECHO(a); SERIAL_CHAR(' '); SERIAL_ECHO(' '); ` | `123 32` | | `SERIAL_ECHOLN` | Same as `SERIAL_ECHO` | Do `SERIAL_ECHO`, adding a newline | `int a = 456; SERIAL_ECHOLN(a);` | `456\n` | -| `SERIAL_ECHO_F` | `float` or `double` | Print a decimal value with a given precision (default 2) | `float a = 3.1415; SERIAL_ECHO_F(a); SERIAL_CHAR(' '); SERIAL_ECHO_F(a, 4);` | `3.14 3.1415`| | `SERIAL_ECHOPGM` | String / Value pairs | Print a series of string literals and values alternately | `SERIAL_ECHOPGM("Bob", 34);` | `Bob34` | | `SERIAL_ECHOLNPGM` | Same as `SERIAL_ECHOPGM` | Do `SERIAL_ECHOPGM`, adding a newline | `SERIAL_ECHOPGM("Alice", 56);` | `alice56` | | `SERIAL_ECHOPGM_P` | Like `SERIAL_ECHOPGM` but takes PGM strings | Print a series of PGM strings and values alternately | `SERIAL_ECHOPGM_P(GET_TEXT(MSG_HELLO), 123);` | `Hello123` | | `SERIAL_ECHOLNPGM_P` | Same as `SERIAL_ECHOPGM_P` | Do `SERIAL_ECHOPGM_P`, adding a newline | `SERIAL_ECHOLNPGM_P(PSTR("Alice"), 78);` | `alice78\n` | -| `SERIAL_ECHOLIST` | String literal, values | Print a string literal and a list of values | `SERIAL_ECHOLIST(F("Key "), 1, 2, 3);` | `Key 1, 2, 3` | | `SERIAL_ECHO_START` | None | Prefix an echo line | `SERIAL_ECHO_START();` | `echo:` | | `SERIAL_ECHO_MSG` | Same as `SERIAL_ECHOLNPGM` | Print a full echo line | `SERIAL_ECHO_MSG("Count is ", count);` | `echo:Count is 3` | | `SERIAL_ERROR_START`| None | Prefix an error line | `SERIAL_ERROR_START();` | `Error:` | | `SERIAL_ERROR_MSG` | Same as `SERIAL_ECHOLNPGM` | Print a full error line | `SERIAL_ERROR_MSG("Not found");` | `Error:Not found` | | `SERIAL_ECHO_SP` | Number of spaces | Print one or more spaces | `SERIAL_ECHO_SP(3)` | ` ` | | `SERIAL_EOL` | None | Print an end of line | `SERIAL_EOL();` | `\n` | -| `SERIAL_OUT` | `SERIAL_OUT(myMethod)` | Call a custom serial method | `SERIAL_OUT(msgDone);` | ... | *This document was written by [X-Ryl669](https://blog.cyril.by) and is under [CC-SA license](https://creativecommons.org/licenses/by-sa)* From aa2f4051bb335a24d062b56ec65162633af9dc6d Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Mon, 12 Jun 2023 14:39:49 -0700 Subject: [PATCH 545/659] =?UTF-8?q?=F0=9F=94=A5=20Remove=20VAkE=20403D=20(?= =?UTF-8?q?#25969)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/boards.h | 55 +++--- Marlin/src/pins/pins.h | 2 - Marlin/src/pins/stm32f4/pins_VAKE403D.h | 226 ------------------------ 3 files changed, 27 insertions(+), 256 deletions(-) delete mode 100644 Marlin/src/pins/stm32f4/pins_VAKE403D.h diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index fbdb807d33..5cde344b4d 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -425,34 +425,33 @@ #define BOARD_LERDGE_K 5218 // Lerdge K (STM32F407ZG) #define BOARD_LERDGE_S 5219 // Lerdge S (STM32F407VE) #define BOARD_LERDGE_X 5220 // Lerdge X (STM32F407VE) -#define BOARD_VAKE403D 5221 // VAkE 403D (STM32F446VE) -#define BOARD_FYSETC_S6 5222 // FYSETC S6 (STM32F446VE) -#define BOARD_FYSETC_S6_V2_0 5223 // FYSETC S6 v2.0 (STM32F446VE) -#define BOARD_FYSETC_SPIDER 5224 // FYSETC Spider (STM32F446VE) -#define BOARD_FLYF407ZG 5225 // FLYmaker FLYF407ZG (STM32F407ZG) -#define BOARD_MKS_ROBIN2 5226 // MKS Robin2 V1.0 (STM32F407ZE) -#define BOARD_MKS_ROBIN_PRO_V2 5227 // MKS Robin Pro V2 (STM32F407VE) -#define BOARD_MKS_ROBIN_NANO_V3 5228 // MKS Robin Nano V3 (STM32F407VG) -#define BOARD_MKS_ROBIN_NANO_V3_1 5229 // MKS Robin Nano V3.1 (STM32F407VE) -#define BOARD_MKS_MONSTER8_V1 5230 // MKS Monster8 V1 (STM32F407VE) -#define BOARD_MKS_MONSTER8_V2 5231 // MKS Monster8 V2 (STM32F407VE) -#define BOARD_ANET_ET4 5232 // ANET ET4 V1.x (STM32F407VG) -#define BOARD_ANET_ET4P 5233 // ANET ET4P V1.x (STM32F407VG) -#define BOARD_FYSETC_CHEETAH_V20 5234 // FYSETC Cheetah V2.0 (STM32F401RC) -#define BOARD_TH3D_EZBOARD_V2 5235 // TH3D EZBoard v2.0 (STM32F405RG) -#define BOARD_OPULO_LUMEN_REV3 5236 // Opulo Lumen PnP Controller REV3 (STM32F407VE / STM32F407VG) -#define BOARD_MKS_ROBIN_NANO_V1_3_F4 5237 // MKS Robin Nano V1.3 and MKS Robin Nano-S V1.3 (STM32F407VE) -#define BOARD_MKS_EAGLE 5238 // MKS Eagle (STM32F407VE) -#define BOARD_ARTILLERY_RUBY 5239 // Artillery Ruby (STM32F401RC) -#define BOARD_FYSETC_SPIDER_V2_2 5240 // FYSETC Spider V2.2 (STM32F446VE) -#define BOARD_CREALITY_V24S1_301F4 5241 // Creality v2.4.S1_301F4 (STM32F401RC) as found in the Ender-3 S1 F4 -#define BOARD_OPULO_LUMEN_REV4 5242 // Opulo Lumen PnP Controller REV4 (STM32F407VE / STM32F407VG) -#define BOARD_FYSETC_SPIDER_KING407 5243 // FYSETC Spider King407 (STM32F407ZG) -#define BOARD_MKS_SKIPR_V1 5244 // MKS SKIPR v1.0 all-in-one board (STM32F407VE) -#define BOARD_TRONXY_V10 5245 // TRONXY V10 (STM32F446ZE) -#define BOARD_CREALITY_F401RE 5246 // Creality CR4NS200141C13 (STM32F401RE) as found in the Ender-5 S1 -#define BOARD_BLACKPILL_CUSTOM 5247 // Custom board based on STM32F401CDU6. -#define BOARD_I3DBEEZ9_V1 5248 // I3DBEEZ9 V1 (STM32F407ZG) +#define BOARD_FYSETC_S6 5221 // FYSETC S6 (STM32F446VE) +#define BOARD_FYSETC_S6_V2_0 5222 // FYSETC S6 v2.0 (STM32F446VE) +#define BOARD_FYSETC_SPIDER 5223 // FYSETC Spider (STM32F446VE) +#define BOARD_FLYF407ZG 5224 // FLYmaker FLYF407ZG (STM32F407ZG) +#define BOARD_MKS_ROBIN2 5225 // MKS Robin2 V1.0 (STM32F407ZE) +#define BOARD_MKS_ROBIN_PRO_V2 5226 // MKS Robin Pro V2 (STM32F407VE) +#define BOARD_MKS_ROBIN_NANO_V3 5227 // MKS Robin Nano V3 (STM32F407VG) +#define BOARD_MKS_ROBIN_NANO_V3_1 5228 // MKS Robin Nano V3.1 (STM32F407VE) +#define BOARD_MKS_MONSTER8_V1 5229 // MKS Monster8 V1 (STM32F407VE) +#define BOARD_MKS_MONSTER8_V2 5230 // MKS Monster8 V2 (STM32F407VE) +#define BOARD_ANET_ET4 5231 // ANET ET4 V1.x (STM32F407VG) +#define BOARD_ANET_ET4P 5232 // ANET ET4P V1.x (STM32F407VG) +#define BOARD_FYSETC_CHEETAH_V20 5233 // FYSETC Cheetah V2.0 (STM32F401RC) +#define BOARD_TH3D_EZBOARD_V2 5234 // TH3D EZBoard v2.0 (STM32F405RG) +#define BOARD_OPULO_LUMEN_REV3 5235 // Opulo Lumen PnP Controller REV3 (STM32F407VE / STM32F407VG) +#define BOARD_MKS_ROBIN_NANO_V1_3_F4 5236 // MKS Robin Nano V1.3 and MKS Robin Nano-S V1.3 (STM32F407VE) +#define BOARD_MKS_EAGLE 5237 // MKS Eagle (STM32F407VE) +#define BOARD_ARTILLERY_RUBY 5238 // Artillery Ruby (STM32F401RC) +#define BOARD_FYSETC_SPIDER_V2_2 5239 // FYSETC Spider V2.2 (STM32F446VE) +#define BOARD_CREALITY_V24S1_301F4 5240 // Creality v2.4.S1_301F4 (STM32F401RC) as found in the Ender-3 S1 F4 +#define BOARD_OPULO_LUMEN_REV4 5241 // Opulo Lumen PnP Controller REV4 (STM32F407VE / STM32F407VG) +#define BOARD_FYSETC_SPIDER_KING407 5242 // FYSETC Spider King407 (STM32F407ZG) +#define BOARD_MKS_SKIPR_V1 5243 // MKS SKIPR v1.0 all-in-one board (STM32F407VE) +#define BOARD_TRONXY_V10 5244 // TRONXY V10 (STM32F446ZE) +#define BOARD_CREALITY_F401RE 5245 // Creality CR4NS200141C13 (STM32F401RE) as found in the Ender-5 S1 +#define BOARD_BLACKPILL_CUSTOM 5246 // Custom board based on STM32F401CDU6. +#define BOARD_I3DBEEZ9_V1 5247 // I3DBEEZ9 V1 (STM32F407ZG) // // ARM Cortex-M7 diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index e15aeb5c4b..f4ea959cb7 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -740,8 +740,6 @@ #include "stm32f4/pins_LERDGE_S.h" // STM32F4 env:LERDGES env:LERDGES_usb_flash_drive #elif MB(LERDGE_X) #include "stm32f4/pins_LERDGE_X.h" // STM32F4 env:LERDGEX env:LERDGEX_usb_flash_drive -#elif MB(VAKE403D) - #include "stm32f4/pins_VAKE403D.h" // STM32F4 #elif MB(FYSETC_S6) #include "stm32f4/pins_FYSETC_S6.h" // STM32F4 env:FYSETC_S6 env:FYSETC_S6_8000 #elif MB(FYSETC_S6_V2_0) diff --git a/Marlin/src/pins/stm32f4/pins_VAKE403D.h b/Marlin/src/pins/stm32f4/pins_VAKE403D.h deleted file mode 100644 index e4150f3bd2..0000000000 --- a/Marlin/src/pins/stm32f4/pins_VAKE403D.h +++ /dev/null @@ -1,226 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -#pragma once - -#define ALLOW_STM32DUINO -#include "env_validate.h" - -#if HOTENDS > 2 || E_STEPPERS > 2 - #error "STM32F4 VAkE supports up to 2 hotends / E steppers." -#endif - -#define DEFAULT_MACHINE_NAME "STM32F446VET6" -#define BOARD_INFO_NAME "STM32F4 VAkE" - -//#define I2C_EEPROM -#define MARLIN_EEPROM_SIZE 0x1000 // 4K - -// -// Servos -// -//#define SERVO0_PIN PE13 -//#define SERVO1_PIN PE14 - -// -// Limit Switches -// -#define X_STOP_PIN PE10 -#define Y_STOP_PIN PE9 -#define Z_STOP_PIN PE8 - -// -// Z Probe (when not Z_MIN_PIN) -// -#ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN PA4 -#endif - -// -// Filament runout -// -#define FIL_RUNOUT_PIN PA3 - -// -// Steppers -// - -#define STEPPER_ENABLE_PIN PB2 - -#define X_STEP_PIN PC6 // X_STEP -#define X_DIR_PIN PC7 // X_DIR -#define X_ENABLE_PIN PB2 // -#ifndef X_CS_PIN - #define X_CS_PIN PC8 // X_CS -#endif - -#define Y_STEP_PIN PD9 // Y_STEP -#define Y_DIR_PIN PD10 // Y_DIR -#define Y_ENABLE_PIN PB2 // -#ifndef Y_CS_PIN - #define Y_CS_PIN PD11 // Y_CS -#endif - -#define Z_STEP_PIN PE15 // Z_STEP -#define Z_DIR_PIN PB10 // Z_DIR -#define Z_ENABLE_PIN PB2 -#ifndef Z_CS_PIN - #define Z_CS_PIN PD8 -#endif - -#define E0_STEP_PIN PB1 -#define E0_DIR_PIN PB13 -#define E0_ENABLE_PIN PB2 -#ifndef E0_CS_PIN - #define E0_CS_PIN PE11 -#endif - -#define E1_STEP_PIN PC4 -#define E1_DIR_PIN PC5 -#define E1_ENABLE_PIN PB2 -#ifndef E1_CS_PIN - #define E1_CS_PIN PB0 -#endif - -#define SD_SCK_PIN PE12 // PA5 // SPI1 for SD card -#define SD_MISO_PIN PE13 // PA6 -#define SD_MOSI_PIN PE14 // PA7 - -// added for SD card : optional or not ??? -//#define SD_CHIP_SELECT_PIN SDSS // The default chip select pin for the SD card is SS. -// The following three pins must not be redefined for hardware SPI. -//#define SPI_MOSI_PIN SD_MOSI_PIN // SPI Master Out Slave In pin -//#define SPI_MISO_PIN SD_MISO_PIN // SPI Master In Slave Out pin -//#define SPI_SCK_PIN SD_SCK_PIN // SPI Clock pin - -// -// Temperature Sensors (Analog inputs) -// - -#define TEMP_0_PIN PC0 // Analog Input -#define TEMP_1_PIN PC1 // Analog Input -#define TEMP_2_PIN PC2 // Analog Input -#define TEMP_3_PIN PC3 // Analog Input -#define TEMP_BED_PIN PC3 // Analog Input - -// -// Heaters / Fans -// - -#define HEATER_0_PIN PD15 -#define HEATER_1_PIN PD14 -#define HEATER_BED_PIN PD12 - -#ifndef FAN0_PIN - #define FAN0_PIN PD13 -#endif -#define FAN1_PIN PB5 // PA0 -#define FAN2_PIN PB4 // PA1 - -#ifndef E0_AUTO_FAN_PIN - #define E0_AUTO_FAN_PIN PD13 -#endif - -// -// Misc. Functions -// - -//#define CASE_LIGHT_PIN_CI PF13 -//#define CASE_LIGHT_PIN_DO PF14 -//#define NEOPIXEL_PIN PF13 - -// -// Průša i3 MK2 Multi Material Multiplexer Support -// -#if HAS_PRUSA_MMU1 - //#define E_MUX0_PIN PG3 - //#define E_MUX1_PIN PG4 -#endif - -#define LED_PIN PB14 // Alive -#define PS_ON_PIN PE0 -#define KILL_PIN PD5 -#define POWER_LOSS_PIN PA4 // ?? Power loss / nAC_FAULT - -#if HAS_MEDIA - #define SD_DETECT_PIN EXP2_07_PIN - #define SD_SS_PIN PB15 // USD_CS -> CS for onboard SD -#endif - -/** - * ------ ------ - * PC9 | 1 2 | PB12 ? | 1 2 | ? - * PD7 | 3 4 | PC12 PD6 | 3 4 | ? - * PD1 | 5 6 PD2 PD0 | 5 6 ? - * PD3 | 7 8 | PD4 PB7 | 7 8 | RESET - * GND | 9 10 | 5V GND | 9 10 | 3.3V - * ------ ------ - * EXP1 EXP2 - */ -#define EXP1_01_PIN PC9 -#define EXP1_02_PIN PB12 -#define EXP1_03_PIN PD7 -#define EXP1_04_PIN PC12 -#define EXP1_05_PIN PD1 -#define EXP1_06_PIN PD2 -#define EXP1_07_PIN PD3 -#define EXP1_08_PIN PD4 - -//#define EXP2_01_PIN ? -//#define EXP2_02_PIN ? -#define EXP2_03_PIN PD6 -//#define EXP2_04_PIN ? -#define EXP2_05_PIN PD0 -//#define EXP2_06_PIN ? -#define EXP2_07_PIN PB7 -#define EXP2_08_PIN -1 - -// -// LCD / Controller -// -#if HAS_WIRED_LCD - - #if HAS_MEDIA - #define SDSS PB6 // CS for SD card in LCD - #endif - - #define BEEPER_PIN EXP1_01_PIN - - #define BTN_EN1 EXP2_03_PIN - #define BTN_EN2 EXP2_05_PIN - #define BTN_ENC EXP1_02_PIN - - #define LCD_PINS_EN EXP1_03_PIN - #define LCD_PINS_RS EXP1_04_PIN - - #define LCD_PINS_D4 EXP1_05_PIN - #define LCD_PINS_D5 EXP1_06_PIN - #define LCD_PINS_D6 EXP1_07_PIN - #define LCD_PINS_D7 EXP1_08_PIN - -#endif - -// Alter timing for graphical display -#if IS_U8GLIB_ST7920 - #define BOARD_ST7920_DELAY_1 96 - #define BOARD_ST7920_DELAY_2 48 - #define BOARD_ST7920_DELAY_3 715 -#endif From 1726ba5bda1deb9b71e2d9644c789e806b7d1127 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 13 Jun 2023 00:23:25 +0000 Subject: [PATCH 546/659] [cron] Bump distribution date (2023-06-13) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index e61748682a..157ebe20f9 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-12" +//#define STRING_DISTRIBUTION_DATE "2023-06-13" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index dc724713c4..feaba9dbe7 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-12" + #define STRING_DISTRIBUTION_DATE "2023-06-13" #endif /** From c3694f1c038fa20ad749118b0a1c7aa88e3dd5f2 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 14 Jun 2023 17:24:50 -0500 Subject: [PATCH 547/659] =?UTF-8?q?=F0=9F=8E=A8=20Lowercase=20methods,=20f?= =?UTF-8?q?unctions,=20data=20members=20(#25939)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For: TFT, DGUS, MarlinUI, Anycubic, JyersUI, CrealityUI --- Marlin/src/HAL/LPC1768/tft/tft_spi.cpp | 40 +- Marlin/src/HAL/LPC1768/tft/tft_spi.h | 38 +- Marlin/src/HAL/LPC1768/tft/xpt2046.cpp | 12 +- Marlin/src/HAL/LPC1768/tft/xpt2046.h | 10 +- Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h | 30 +- Marlin/src/HAL/NATIVE_SIM/tft/xpt2046.h | 10 +- Marlin/src/HAL/STM32/tft/gt911.cpp | 2 +- Marlin/src/HAL/STM32/tft/gt911.h | 2 +- Marlin/src/HAL/STM32/tft/tft_fsmc.cpp | 84 +- Marlin/src/HAL/STM32/tft/tft_fsmc.h | 42 +- Marlin/src/HAL/STM32/tft/tft_ltdc.cpp | 60 +- Marlin/src/HAL/STM32/tft/tft_ltdc.h | 46 +- Marlin/src/HAL/STM32/tft/tft_spi.cpp | 62 +- Marlin/src/HAL/STM32/tft/tft_spi.h | 42 +- Marlin/src/HAL/STM32/tft/xpt2046.cpp | 10 +- Marlin/src/HAL/STM32/tft/xpt2046.h | 12 +- Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp | 44 +- Marlin/src/HAL/STM32F1/tft/tft_fsmc.h | 36 +- Marlin/src/HAL/STM32F1/tft/tft_spi.cpp | 42 +- Marlin/src/HAL/STM32F1/tft/tft_spi.h | 38 +- Marlin/src/HAL/STM32F1/tft/xpt2046.cpp | 12 +- Marlin/src/HAL/STM32F1/tft/xpt2046.h | 10 +- .../src/HAL/shared/backtrace/unwmemaccess.cpp | 2 +- Marlin/src/MarlinCore.cpp | 2 +- Marlin/src/inc/SanityCheck.h | 2 +- Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 14 +- .../dogm/u8g_dev_tft_upscale_from_128x64.cpp | 30 +- Marlin/src/lcd/e3v2/creality/dwin.cpp | 2860 ++++++++--------- Marlin/src/lcd/e3v2/creality/dwin.h | 114 +- Marlin/src/lcd/e3v2/creality/dwin_lcd.cpp | 36 +- Marlin/src/lcd/e3v2/creality/dwin_lcd.h | 2 +- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 2124 ++++++------ Marlin/src/lcd/e3v2/jyersui/dwin.h | 122 +- Marlin/src/lcd/e3v2/jyersui/dwin_lcd.cpp | 26 +- Marlin/src/lcd/e3v2/jyersui/dwin_lcd.h | 4 +- Marlin/src/lcd/e3v2/marlinui/dwin_lcd.cpp | 16 +- Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp | 6 +- Marlin/src/lcd/e3v2/marlinui/dwin_string.h | 2 +- .../src/lcd/e3v2/marlinui/lcdprint_dwin.cpp | 8 +- Marlin/src/lcd/e3v2/marlinui/ui_common.cpp | 92 +- .../lcd/e3v2/marlinui/ui_status_480x272.cpp | 58 +- Marlin/src/lcd/extui/anycubic/Tunes.cpp | 2 +- Marlin/src/lcd/extui/anycubic/Tunes.h | 2 +- .../lcd/extui/anycubic_chiron/chiron_tft.cpp | 10 +- .../anycubic_i3mega/anycubic_i3mega_lcd.cpp | 75 +- .../anycubic_i3mega/anycubic_i3mega_lcd.h | 6 +- .../extui/anycubic_vyper/FileNavigator.cpp | 6 +- .../src/lcd/extui/anycubic_vyper/dgus_tft.cpp | 478 +-- .../src/lcd/extui/anycubic_vyper/dgus_tft.h | 4 +- .../lcd/extui/anycubic_vyper/vyper_extui.cpp | 50 +- .../extui/dgus_reloaded/DGUSSetupHandler.cpp | 26 +- .../extui/dgus_reloaded/DGUSSetupHandler.h | 26 +- .../definition/DGUS_ScreenSetup.cpp | 26 +- .../dgus_reloaded/dgus_reloaded_extui.cpp | 2 +- Marlin/src/lcd/extui/mks_ui/SPI_TFT.cpp | 26 +- Marlin/src/lcd/extui/mks_ui/SPI_TFT.h | 10 +- .../lcd/extui/mks_ui/draw_error_message.cpp | 2 +- .../extui/mks_ui/draw_touch_calibration.cpp | 4 +- Marlin/src/lcd/extui/mks_ui/draw_ui.cpp | 4 +- Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp | 4 +- Marlin/src/lcd/extui/mks_ui/pic_manager.cpp | 40 +- Marlin/src/lcd/extui/mks_ui/pic_manager.h | 4 +- .../extui/mks_ui/tft_lvgl_configuration.cpp | 14 +- .../lcd/extui/mks_ui/tft_lvgl_configuration.h | 2 +- Marlin/src/lcd/extui/mks_ui/wifi_module.cpp | 8 +- Marlin/src/lcd/marlinui.cpp | 6 +- Marlin/src/lcd/tft/canvas.cpp | 8 +- Marlin/src/lcd/tft/tft.cpp | 4 +- Marlin/src/lcd/tft/tft.h | 6 +- Marlin/src/lcd/tft/tft_string.cpp | 32 +- Marlin/src/lcd/tft/tft_string.h | 36 +- Marlin/src/lcd/tft/touch.cpp | 2 +- Marlin/src/lcd/tft/ui_1024x600.cpp | 43 +- Marlin/src/lcd/tft/ui_320x240.cpp | 43 +- Marlin/src/lcd/tft/ui_480x320.cpp | 43 +- Marlin/src/lcd/tft_io/tft_io.cpp | 102 +- Marlin/src/lcd/tft_io/tft_io.h | 30 +- Marlin/src/lcd/touch/touch_buttons.cpp | 2 +- Marlin/src/module/settings.cpp | 10 +- Marlin/src/module/temperature.cpp | 6 +- Marlin/src/sd/Sd2Card.h | 2 +- Marlin/src/sd/cardreader.cpp | 2 +- 82 files changed, 3702 insertions(+), 3710 deletions(-) diff --git a/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp b/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp index c148617785..440e9f8598 100644 --- a/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp +++ b/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp @@ -30,7 +30,7 @@ SPIClass TFT_SPI::SPIx(TFT_SPI_DEVICE); -void TFT_SPI::Init() { +void TFT_SPI::init() { #if PIN_EXISTS(TFT_RESET) OUT_WRITE(TFT_RESET_PIN, HIGH); delay(100); @@ -49,21 +49,21 @@ void TFT_SPI::Init() { SPIx.setDataMode(SPI_MODE0); } -void TFT_SPI::DataTransferBegin(uint16_t DataSize) { - SPIx.setDataSize(DataSize); +void TFT_SPI::dataTransferBegin(uint16_t dataSize) { + SPIx.setDataSize(dataSize); SPIx.begin(); WRITE(TFT_CS_PIN, LOW); } -uint32_t TFT_SPI::GetID() { +uint32_t TFT_SPI::getID() { uint32_t id; - id = ReadID(LCD_READ_ID); + id = readID(LCD_READ_ID); if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) - id = ReadID(LCD_READ_ID4); + id = readID(LCD_READ_ID4); return id; } -uint32_t TFT_SPI::ReadID(uint16_t Reg) { +uint32_t TFT_SPI::readID(uint16_t reg) { uint32_t data = 0; #if PIN_EXISTS(TFT_MISO) @@ -72,14 +72,14 @@ uint32_t TFT_SPI::ReadID(uint16_t Reg) { SPIx.setClock(SPI_CLOCK_DIV64); SPIx.begin(); WRITE(TFT_CS_PIN, LOW); - WriteReg(Reg); + writeReg(reg); for (uint8_t i = 0; i < 4; ++i) { SPIx.read((uint8_t*)&d, 1); data = (data << 8) | d; } - DataTransferEnd(); + dataTransferEnd(); SPIx.setClock(SPI_CLOCK_MAX_TFT); #endif @@ -103,11 +103,11 @@ bool TFT_SPI::isBusy() { if ((SSP_GetStatus(LPC_SSPx, SSP_STAT_TXFIFO_EMPTY) == RESET) || (SSP_GetStatus(LPC_SSPx, SSP_STAT_BUSY) == SET)) return true; } - Abort(); + abort(); return false; } -void TFT_SPI::Abort() { +void TFT_SPI::abort() { // DMA Channel 0 is hardcoded in dmaSendAsync() and dmaSend() // Disable DMA @@ -126,20 +126,20 @@ void TFT_SPI::Abort() { LPC_GPDMACH0->DMACCSrcAddr = 0U; LPC_GPDMACH0->DMACCDestAddr = 0U; - DataTransferEnd(); + dataTransferEnd(); } -void TFT_SPI::Transmit(uint16_t Data) { SPIx.transfer(Data); } +void TFT_SPI::transmit(uint16_t data) { SPIx.transfer(data); } -void TFT_SPI::Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { - DataTransferBegin(DATASIZE_16BIT); - SPIx.dmaSend(Data, Count, MemoryIncrease); - Abort(); +void TFT_SPI::transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { + dataTransferBegin(DATASIZE_16BIT); + SPIx.dmaSend(data, count, memoryIncrease); + abort(); } -void TFT_SPI::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { - DataTransferBegin(DATASIZE_16BIT); - SPIx.dmaSendAsync(Data, Count, MemoryIncrease); +void TFT_SPI::transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { + dataTransferBegin(DATASIZE_16BIT); + SPIx.dmaSendAsync(data, count, memoryIncrease); TERN_(TFT_SHARED_IO, while (isBusy())); } diff --git a/Marlin/src/HAL/LPC1768/tft/tft_spi.h b/Marlin/src/HAL/LPC1768/tft/tft_spi.h index 4817a5aae3..884bcaed04 100644 --- a/Marlin/src/HAL/LPC1768/tft/tft_spi.h +++ b/Marlin/src/HAL/LPC1768/tft/tft_spi.h @@ -56,34 +56,34 @@ class TFT_SPI { private: - static uint32_t ReadID(uint16_t Reg); - static void Transmit(uint16_t Data); - static void Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count); - static void TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count); + static uint32_t readID(uint16_t reg); + static void transmit(uint16_t data); + static void transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count); + static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count); public: static SPIClass SPIx; - static void Init(); - static uint32_t GetID(); + static void init(); + static uint32_t getID(); static bool isBusy(); - static void Abort(); + static void abort(); - static void DataTransferBegin(uint16_t DataWidth=DATASIZE_16BIT); - static void DataTransferEnd() { WRITE(TFT_CS_PIN, HIGH); SSP_Cmd(LPC_SSPx, DISABLE); }; - static void DataTransferAbort(); + static void dataTransferBegin(uint16_t dataWidth=DATASIZE_16BIT); + static void dataTransferEnd() { WRITE(TFT_CS_PIN, HIGH); SSP_Cmd(LPC_SSPx, DISABLE); }; + static void dataTransferAbort(); - static void WriteData(uint16_t Data) { Transmit(Data); } - static void WriteReg(uint16_t Reg) { WRITE(TFT_DC_PIN, LOW); Transmit(Reg); WRITE(TFT_DC_PIN, HIGH); } + static void writeData(uint16_t data) { transmit(data); } + static void writeReg(uint16_t reg) { WRITE(TFT_DC_PIN, LOW); transmit(reg); WRITE(TFT_DC_PIN, HIGH); } - static void WriteSequence_DMA(uint16_t *Data, uint16_t Count) { TransmitDMA(DMA_MINC_ENABLE, Data, Count); } - static void WriteMultiple_DMA(uint16_t Color, uint16_t Count) { static uint16_t Data; Data = Color; TransmitDMA(DMA_MINC_DISABLE, &Data, Count); } + static void writeSequence_DMA(uint16_t *data, uint16_t count) { transmitDMA(DMA_MINC_ENABLE, data, count); } + static void writeMultiple_DMA(uint16_t color, uint16_t count) { static uint16_t data; data = color; transmitDMA(DMA_MINC_DISABLE, &data, count); } - static void WriteSequence(uint16_t *Data, uint16_t Count) { Transmit(DMA_MINC_ENABLE, Data, Count); } - static void WriteMultiple(uint16_t Color, uint32_t Count) { - while (Count > 0) { - Transmit(DMA_MINC_DISABLE, &Color, Count > DMA_MAX_SIZE ? DMA_MAX_SIZE : Count); - Count = Count > DMA_MAX_SIZE ? Count - DMA_MAX_SIZE : 0; + static void writeSequence(uint16_t *data, uint16_t count) { transmit(DMA_MINC_ENABLE, data, count); } + static void writeMultiple(uint16_t color, uint32_t count) { + while (count > 0) { + transmit(DMA_MINC_DISABLE, &color, count > DMA_MAX_SIZE ? DMA_MAX_SIZE : count); + count = count > DMA_MAX_SIZE ? count - DMA_MAX_SIZE : 0; } } }; diff --git a/Marlin/src/HAL/LPC1768/tft/xpt2046.cpp b/Marlin/src/HAL/LPC1768/tft/xpt2046.cpp index 910511612b..74596935e9 100644 --- a/Marlin/src/HAL/LPC1768/tft/xpt2046.cpp +++ b/Marlin/src/HAL/LPC1768/tft/xpt2046.cpp @@ -45,7 +45,7 @@ uint16_t delta(uint16_t a, uint16_t b) { return a > b ? a - b : b - a; } } #endif -void XPT2046::Init() { +void XPT2046::init() { #if DISABLED(TOUCH_BUTTONS_HW_SPI) SET_INPUT(TOUCH_MISO_PIN); SET_OUTPUT(TOUCH_MOSI_PIN); @@ -85,7 +85,7 @@ bool XPT2046::getRawPoint(int16_t *x, int16_t *y) { uint16_t XPT2046::getRawData(const XPTCoordinate coordinate) { uint16_t data[3]; - DataTransferBegin(); + dataTransferBegin(); TERN_(TOUCH_BUTTONS_HW_SPI, SPIx.begin()); for (uint16_t i = 0; i < 3 ; i++) { @@ -94,7 +94,7 @@ uint16_t XPT2046::getRawData(const XPTCoordinate coordinate) { } TERN_(TOUCH_BUTTONS_HW_SPI, SPIx.end()); - DataTransferEnd(); + dataTransferEnd(); uint16_t delta01 = delta(data[0], data[1]), delta02 = delta(data[0], data[2]), @@ -107,18 +107,18 @@ uint16_t XPT2046::getRawData(const XPTCoordinate coordinate) { } uint16_t XPT2046::IO(uint16_t data) { - return TERN(TOUCH_BUTTONS_HW_SPI, HardwareIO, SoftwareIO)(data); + return TERN(TOUCH_BUTTONS_HW_SPI, hardwareIO, softwareIO)(data); } extern uint8_t spiTransfer(uint8_t b); #if ENABLED(TOUCH_BUTTONS_HW_SPI) - uint16_t XPT2046::HardwareIO(uint16_t data) { + uint16_t XPT2046::hardwareIO(uint16_t data) { return SPIx.transfer(data & 0xFF); } #endif -uint16_t XPT2046::SoftwareIO(uint16_t data) { +uint16_t XPT2046::softwareIO(uint16_t data) { uint16_t result = 0; for (uint8_t j = 0x80; j; j >>= 1) { diff --git a/Marlin/src/HAL/LPC1768/tft/xpt2046.h b/Marlin/src/HAL/LPC1768/tft/xpt2046.h index 7c456cf00e..8fdcacf926 100644 --- a/Marlin/src/HAL/LPC1768/tft/xpt2046.h +++ b/Marlin/src/HAL/LPC1768/tft/xpt2046.h @@ -65,12 +65,12 @@ private: static uint16_t getRawData(const XPTCoordinate coordinate); static bool isTouched(); - static void DataTransferBegin() { WRITE(TOUCH_CS_PIN, LOW); }; - static void DataTransferEnd() { WRITE(TOUCH_CS_PIN, HIGH); }; + static void dataTransferBegin() { WRITE(TOUCH_CS_PIN, LOW); }; + static void dataTransferEnd() { WRITE(TOUCH_CS_PIN, HIGH); }; #if ENABLED(TOUCH_BUTTONS_HW_SPI) - static uint16_t HardwareIO(uint16_t data); + static uint16_t hardwareIO(uint16_t data); #endif - static uint16_t SoftwareIO(uint16_t data); + static uint16_t softwareIO(uint16_t data); static uint16_t IO(uint16_t data = 0); public: @@ -78,6 +78,6 @@ public: static SPIClass SPIx; #endif - static void Init(); + static void init(); static bool getRawPoint(int16_t *x, int16_t *y); }; diff --git a/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h b/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h index f3b64c4cca..df7b942099 100644 --- a/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h +++ b/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h @@ -40,28 +40,28 @@ class TFT_SPI { private: - static uint32_t ReadID(uint16_t Reg); - static void Transmit(uint16_t Data); - static void TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count); + static uint32_t readID(uint16_t reg); + static void transmit(uint16_t data); + static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count); public: // static SPIClass SPIx; - static void Init(); - static uint32_t GetID(); + static void init(); + static uint32_t getID(); static bool isBusy(); - static void Abort(); + static void abort(); - static void DataTransferBegin(uint16_t DataWidth=DATASIZE_16BIT); - static void DataTransferEnd(); - static void DataTransferAbort(); + static void dataTransferBegin(uint16_t dataWidth=DATASIZE_16BIT); + static void dataTransferEnd(); + static void dataTransferAbort(); - static void WriteData(uint16_t Data); - static void WriteReg(uint16_t Reg); + static void writeData(uint16_t data); + static void writeReg(uint16_t reg); - static void WriteSequence_DMA(uint16_t *Data, uint16_t Count) { WriteSequence(Data, Count); } - static void WriteMultiple_DMA(uint16_t Color, uint16_t Count) { WriteMultiple(Color, Count); } + static void writeSequence_DMA(uint16_t *data, uint16_t count) { writeSequence(data, count); } + static void writeMultiple_DMA(uint16_t color, uint16_t count) { writeMultiple(color, count); } - static void WriteSequence(uint16_t *Data, uint16_t Count); - static void WriteMultiple(uint16_t Color, uint32_t Count); + static void writeSequence(uint16_t *data, uint16_t count); + static void writeMultiple(uint16_t color, uint32_t count); }; diff --git a/Marlin/src/HAL/NATIVE_SIM/tft/xpt2046.h b/Marlin/src/HAL/NATIVE_SIM/tft/xpt2046.h index 4e999f88ff..c546646d16 100644 --- a/Marlin/src/HAL/NATIVE_SIM/tft/xpt2046.h +++ b/Marlin/src/HAL/NATIVE_SIM/tft/xpt2046.h @@ -62,12 +62,12 @@ private: static uint16_t getRawData(const XPTCoordinate coordinate); static bool isTouched(); - static void DataTransferBegin(); - static void DataTransferEnd(); + static void dataTransferBegin(); + static void dataTransferEnd(); #if ENABLED(TOUCH_BUTTONS_HW_SPI) - static uint16_t HardwareIO(uint16_t data); + static uint16_t hardwareIO(uint16_t data); #endif - static uint16_t SoftwareIO(uint16_t data); + static uint16_t softwareIO(uint16_t data); static uint16_t IO(uint16_t data = 0); public: @@ -75,6 +75,6 @@ public: static SPIClass SPIx; #endif - static void Init(); + static void init(); static bool getRawPoint(int16_t *x, int16_t *y); }; diff --git a/Marlin/src/HAL/STM32/tft/gt911.cpp b/Marlin/src/HAL/STM32/tft/gt911.cpp index 6809f66200..52119c19b7 100644 --- a/Marlin/src/HAL/STM32/tft/gt911.cpp +++ b/Marlin/src/HAL/STM32/tft/gt911.cpp @@ -156,7 +156,7 @@ void GT911::read_reg(uint16_t reg, uint8_t reg_len, uint8_t* r_data, uint8_t r_l sw_iic.stop(); } -void GT911::Init() { +void GT911::init() { OUT_WRITE(GT911_RST_PIN, LOW); OUT_WRITE(GT911_INT_PIN, LOW); delay(11); diff --git a/Marlin/src/HAL/STM32/tft/gt911.h b/Marlin/src/HAL/STM32/tft/gt911.h index 260c195eca..75e025245d 100644 --- a/Marlin/src/HAL/STM32/tft/gt911.h +++ b/Marlin/src/HAL/STM32/tft/gt911.h @@ -90,7 +90,7 @@ class GT911 { static void read_reg(uint16_t reg, uint8_t reg_len, uint8_t* r_data, uint8_t r_len); public: - static void Init(); + static void init(); static bool getFirstTouchPoint(int16_t *x, int16_t *y); static bool getPoint(int16_t *x, int16_t *y); }; diff --git a/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp b/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp index 6ac3549b41..35606460ac 100644 --- a/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp +++ b/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp @@ -35,17 +35,17 @@ SRAM_HandleTypeDef TFT_FSMC::SRAMx; DMA_HandleTypeDef TFT_FSMC::DMAtx; LCD_CONTROLLER_TypeDef *TFT_FSMC::LCD; -void TFT_FSMC::Init() { +void TFT_FSMC::init() { uint32_t controllerAddress; - FSMC_NORSRAM_TimingTypeDef Timing, ExtTiming; + FSMC_NORSRAM_TimingTypeDef timing, extTiming; - uint32_t NSBank = (uint32_t)pinmap_peripheral(digitalPinToPinName(TFT_CS_PIN), PinMap_FSMC_CS); + uint32_t nsBank = (uint32_t)pinmap_peripheral(digitalPinToPinName(TFT_CS_PIN), pinMap_FSMC_CS); // Perform the SRAM1 memory initialization sequence SRAMx.Instance = FSMC_NORSRAM_DEVICE; SRAMx.Extended = FSMC_NORSRAM_EXTENDED_DEVICE; // SRAMx.Init - SRAMx.Init.NSBank = NSBank; + SRAMx.Init.NSBank = nsBank; SRAMx.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_DISABLE; SRAMx.Init.MemoryType = FSMC_MEMORY_TYPE_SRAM; SRAMx.Init.MemoryDataWidth = TERN(TFT_INTERFACE_FSMC_8BIT, FSMC_NORSRAM_MEM_BUS_WIDTH_8, FSMC_NORSRAM_MEM_BUS_WIDTH_16); @@ -63,42 +63,42 @@ void TFT_FSMC::Init() { #endif // Read Timing - relatively slow to ensure ID information is correctly read from TFT controller // Can be decreases from 15-15-24 to 4-4-8 with risk of stability loss - Timing.AddressSetupTime = 15; - Timing.AddressHoldTime = 15; - Timing.DataSetupTime = 24; - Timing.BusTurnAroundDuration = 0; - Timing.CLKDivision = 16; - Timing.DataLatency = 17; - Timing.AccessMode = FSMC_ACCESS_MODE_A; + timing.AddressSetupTime = 15; + timing.AddressHoldTime = 15; + timing.DataSetupTime = 24; + timing.BusTurnAroundDuration = 0; + timing.CLKDivision = 16; + timing.DataLatency = 17; + timing.AccessMode = FSMC_ACCESS_MODE_A; // Write Timing // Can be decreased from 8-15-8 to 0-0-1 with risk of stability loss - ExtTiming.AddressSetupTime = 8; - ExtTiming.AddressHoldTime = 15; - ExtTiming.DataSetupTime = 8; - ExtTiming.BusTurnAroundDuration = 0; - ExtTiming.CLKDivision = 16; - ExtTiming.DataLatency = 17; - ExtTiming.AccessMode = FSMC_ACCESS_MODE_A; + extTiming.AddressSetupTime = 8; + extTiming.AddressHoldTime = 15; + extTiming.DataSetupTime = 8; + extTiming.BusTurnAroundDuration = 0; + extTiming.CLKDivision = 16; + extTiming.DataLatency = 17; + extTiming.AccessMode = FSMC_ACCESS_MODE_A; __HAL_RCC_FSMC_CLK_ENABLE(); - for (uint16_t i = 0; PinMap_FSMC[i].pin != NC; i++) - pinmap_pinout(PinMap_FSMC[i].pin, PinMap_FSMC); - pinmap_pinout(digitalPinToPinName(TFT_CS_PIN), PinMap_FSMC_CS); - pinmap_pinout(digitalPinToPinName(TFT_RS_PIN), PinMap_FSMC_RS); + for (uint16_t i = 0; pinMap_FSMC[i].pin != NC; i++) + pinmap_pinout(pinMap_FSMC[i].pin, pinMap_FSMC); + pinmap_pinout(digitalPinToPinName(TFT_CS_PIN), pinMap_FSMC_CS); + pinmap_pinout(digitalPinToPinName(TFT_RS_PIN), pinMap_FSMC_RS); controllerAddress = FSMC_BANK1_1; #ifdef PF0 - switch (NSBank) { + switch (nsBank) { case FSMC_NORSRAM_BANK2: controllerAddress = FSMC_BANK1_2 ; break; case FSMC_NORSRAM_BANK3: controllerAddress = FSMC_BANK1_3 ; break; case FSMC_NORSRAM_BANK4: controllerAddress = FSMC_BANK1_4 ; break; } #endif - controllerAddress |= (uint32_t)pinmap_peripheral(digitalPinToPinName(TFT_RS_PIN), PinMap_FSMC_RS); + controllerAddress |= (uint32_t)pinmap_peripheral(digitalPinToPinName(TFT_RS_PIN), pinMap_FSMC_RS); - HAL_SRAM_Init(&SRAMx, &Timing, &ExtTiming); + HAL_SRAM_Init(&SRAMx, &timing, &extTiming); #ifdef STM32F1xx __HAL_RCC_DMA1_CLK_ENABLE(); @@ -123,23 +123,23 @@ void TFT_FSMC::Init() { LCD = (LCD_CONTROLLER_TypeDef *)controllerAddress; } -uint32_t TFT_FSMC::GetID() { +uint32_t TFT_FSMC::getID() { uint32_t id; - WriteReg(0); + writeReg(0); id = LCD->RAM; if (id == 0) - id = ReadID(LCD_READ_ID); + id = readID(LCD_READ_ID); if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) - id = ReadID(LCD_READ_ID4); + id = readID(LCD_READ_ID4); return id; } -uint32_t TFT_FSMC::ReadID(tft_data_t Reg) { +uint32_t TFT_FSMC::readID(tft_data_t reg) { uint32_t id; - WriteReg(Reg); + writeReg(reg); id = LCD->RAM; // dummy read - id = Reg << 24; + id = reg << 24; id |= (LCD->RAM & 0x00FF) << 16; id |= (LCD->RAM & 0x00FF) << 8; id |= LCD->RAM & 0x00FF; @@ -161,30 +161,30 @@ bool TFT_FSMC::isBusy() { if ((__HAL_DMA_GET_FLAG(&DMAtx, __HAL_DMA_GET_TE_FLAG_INDEX(&DMAtx)) == 0) && (__HAL_DMA_GET_FLAG(&DMAtx, __HAL_DMA_GET_TC_FLAG_INDEX(&DMAtx)) == 0)) return true; __DSB(); - Abort(); + abort(); return false; } -void TFT_FSMC::Abort() { +void TFT_FSMC::abort() { HAL_DMA_Abort(&DMAtx); // Abort DMA transfer if any HAL_DMA_DeInit(&DMAtx); // Deconfigure DMA } -void TFT_FSMC::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { - DMAtx.Init.PeriphInc = MemoryIncrease; +void TFT_FSMC::transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { + DMAtx.Init.PeriphInc = memoryIncrease; HAL_DMA_Init(&DMAtx); - HAL_DMA_Start(&DMAtx, (uint32_t)Data, (uint32_t)&(LCD->RAM), Count); + HAL_DMA_Start(&DMAtx, (uint32_t)data, (uint32_t)&(LCD->RAM), count); TERN_(TFT_SHARED_IO, while (isBusy())); } -void TFT_FSMC::Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { - DMAtx.Init.PeriphInc = MemoryIncrease; +void TFT_FSMC::transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { + DMAtx.Init.PeriphInc = memoryIncrease; HAL_DMA_Init(&DMAtx); - DataTransferBegin(); - HAL_DMA_Start(&DMAtx, (uint32_t)Data, (uint32_t)&(LCD->RAM), Count); + dataTransferBegin(); + HAL_DMA_Start(&DMAtx, (uint32_t)data, (uint32_t)&(LCD->RAM), count); HAL_DMA_PollForTransfer(&DMAtx, HAL_DMA_FULL_TRANSFER, HAL_MAX_DELAY); - Abort(); + abort(); } #endif // HAS_FSMC_TFT diff --git a/Marlin/src/HAL/STM32/tft/tft_fsmc.h b/Marlin/src/HAL/STM32/tft/tft_fsmc.h index 8eb41d717d..1b0a45ff79 100644 --- a/Marlin/src/HAL/STM32/tft/tft_fsmc.h +++ b/Marlin/src/HAL/STM32/tft/tft_fsmc.h @@ -62,31 +62,31 @@ class TFT_FSMC { static LCD_CONTROLLER_TypeDef *LCD; - static uint32_t ReadID(tft_data_t Reg); - static void Transmit(tft_data_t Data) { LCD->RAM = Data; __DSB(); } - static void Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count); - static void TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count); + static uint32_t readID(tft_data_t reg); + static void transmit(tft_data_t data) { LCD->RAM = data; __DSB(); } + static void transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count); + static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count); public: - static void Init(); - static uint32_t GetID(); + static void init(); + static uint32_t getID(); static bool isBusy(); - static void Abort(); + static void abort(); - static void DataTransferBegin(uint16_t DataWidth=TFT_DATASIZE) {} - static void DataTransferEnd() {} + static void dataTransferBegin(uint16_t dataWidth=TFT_DATASIZE) {} + static void dataTransferEnd() {} - static void WriteData(uint16_t Data) { Transmit(tft_data_t(Data)); } - static void WriteReg(uint16_t Reg) { LCD->REG = tft_data_t(Reg); __DSB(); } + static void writeData(uint16_t data) { transmit(tft_data_t(data)); } + static void writeReg(uint16_t reg) { LCD->REG = tft_data_t(reg); __DSB(); } - static void WriteSequence_DMA(uint16_t *Data, uint16_t Count) { TransmitDMA(DMA_PINC_ENABLE, Data, Count); } - static void WriteMultiple_DMA(uint16_t Color, uint16_t Count) { static uint16_t Data; Data = Color; TransmitDMA(DMA_PINC_DISABLE, &Data, Count); } + static void writeSequence_DMA(uint16_t *data, uint16_t count) { transmitDMA(DMA_PINC_ENABLE, data, count); } + static void writeMultiple_DMA(uint16_t color, uint16_t count) { static uint16_t data; data = color; transmitDMA(DMA_PINC_DISABLE, &data, count); } - static void WriteSequence(uint16_t *Data, uint16_t Count) { Transmit(DMA_PINC_ENABLE, Data, Count); } - static void WriteMultiple(uint16_t Color, uint32_t Count) { - while (Count > 0) { - Transmit(DMA_MINC_DISABLE, &Color, Count > DMA_MAX_SIZE ? DMA_MAX_SIZE : Count); - Count = Count > DMA_MAX_SIZE ? Count - DMA_MAX_SIZE : 0; + static void writeSequence(uint16_t *data, uint16_t count) { transmit(DMA_PINC_ENABLE, data, count); } + static void writeMultiple(uint16_t color, uint32_t count) { + while (count > 0) { + transmit(DMA_MINC_DISABLE, &color, count > DMA_MAX_SIZE ? DMA_MAX_SIZE : count); + count = count > DMA_MAX_SIZE ? count - DMA_MAX_SIZE : 0; } } }; @@ -103,7 +103,7 @@ class TFT_FSMC { #error No configuration for this MCU #endif -const PinMap PinMap_FSMC[] = { +const PinMap pinMap_FSMC[] = { {PD_14, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D00 {PD_15, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D01 {PD_0, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D02 @@ -127,7 +127,7 @@ const PinMap PinMap_FSMC[] = { {NC, NP, 0} }; -const PinMap PinMap_FSMC_CS[] = { +const PinMap pinMap_FSMC_CS[] = { {PD_7, (void *)FSMC_NORSRAM_BANK1, FSMC_PIN_DATA}, // FSMC_NE1 #ifdef PF0 {PG_9, (void *)FSMC_NORSRAM_BANK2, FSMC_PIN_DATA}, // FSMC_NE2 @@ -143,7 +143,7 @@ const PinMap PinMap_FSMC_CS[] = { #define FSMC_RS(A) (void *)((2 << A) - 2) #endif -const PinMap PinMap_FSMC_RS[] = { +const PinMap pinMap_FSMC_RS[] = { #ifdef PF0 {PF_0, FSMC_RS( 0), FSMC_PIN_DATA}, // FSMC_A0 {PF_1, FSMC_RS( 1), FSMC_PIN_DATA}, // FSMC_A1 diff --git a/Marlin/src/HAL/STM32/tft/tft_ltdc.cpp b/Marlin/src/HAL/STM32/tft/tft_ltdc.cpp index 2be900618f..ce47d2e1ec 100644 --- a/Marlin/src/HAL/STM32/tft/tft_ltdc.cpp +++ b/Marlin/src/HAL/STM32/tft/tft_ltdc.cpp @@ -246,28 +246,28 @@ uint16_t TFT_LTDC::y_cur = 0; uint8_t TFT_LTDC::reg = 0; volatile uint16_t* TFT_LTDC::framebuffer = (volatile uint16_t* )FRAME_BUFFER_ADDRESS; -void TFT_LTDC::Init() { +void TFT_LTDC::init() { // SDRAM pins init - for (uint16_t i = 0; PinMap_SDRAM[i].pin != NC; i++) - pinmap_pinout(PinMap_SDRAM[i].pin, PinMap_SDRAM); + for (uint16_t i = 0; pinMap_SDRAM[i].pin != NC; i++) + pinmap_pinout(pinMap_SDRAM[i].pin, pinMap_SDRAM); // SDRAM peripheral config SDRAM_Config(); // LTDC pins init - for (uint16_t i = 0; PinMap_LTDC[i].pin != NC; i++) - pinmap_pinout(PinMap_LTDC[i].pin, PinMap_LTDC); + for (uint16_t i = 0; pinMap_LTDC[i].pin != NC; i++) + pinmap_pinout(pinMap_LTDC[i].pin, pinMap_LTDC); // LTDC peripheral config LTDC_Config(); } -uint32_t TFT_LTDC::GetID() { +uint32_t TFT_LTDC::getID() { return 0xABAB; } -uint32_t TFT_LTDC::ReadID(tft_data_t Reg) { +uint32_t TFT_LTDC::readID(tft_data_t reg) { return 0xABAB; } @@ -275,15 +275,15 @@ bool TFT_LTDC::isBusy() { return false; } -uint16_t TFT_LTDC::ReadPoint(uint16_t x, uint16_t y) { +uint16_t TFT_LTDC::readPoint(uint16_t x, uint16_t y) { return framebuffer[(TFT_WIDTH * y) + x]; } -void TFT_LTDC::DrawPoint(uint16_t x, uint16_t y, uint16_t color) { +void TFT_LTDC::drawPoint(uint16_t x, uint16_t y, uint16_t color) { framebuffer[(TFT_WIDTH * y) + x] = color; } -void TFT_LTDC::DrawRect(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t color) { +void TFT_LTDC::drawRect(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t color) { if (sx == ex || sy == ey) return; @@ -307,7 +307,7 @@ void TFT_LTDC::DrawRect(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint SBI(DMA2D->IFCR, 1); } -void TFT_LTDC::DrawImage(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t *colors) { +void TFT_LTDC::drawImage(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t *colors) { if (sx == ex || sy == ey) return; @@ -332,18 +332,18 @@ void TFT_LTDC::DrawImage(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uin SBI(DMA2D->IFCR, 1); } -void TFT_LTDC::WriteData(uint16_t data) { +void TFT_LTDC::writeData(uint16_t data) { switch (reg) { case 0x01: x_cur = x_min = data; return; case 0x02: x_max = data; return; case 0x03: y_cur = y_min = data; return; case 0x04: y_max = data; return; } - Transmit(data); + transmit(data); } -void TFT_LTDC::Transmit(tft_data_t Data) { - DrawPoint(x_cur, y_cur, Data); +void TFT_LTDC::transmit(tft_data_t data) { + drawPoint(x_cur, y_cur, data); x_cur++; if (x_cur > x_max) { x_cur = x_min; @@ -352,35 +352,35 @@ void TFT_LTDC::Transmit(tft_data_t Data) { } } -void TFT_LTDC::WriteReg(uint16_t Reg) { - reg = Reg; +void TFT_LTDC::writeReg(uint16_t reg) { + reg = reg; } -void TFT_LTDC::Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { +void TFT_LTDC::transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { - while (x_cur != x_min && Count) { - Transmit(*Data); - if (MemoryIncrease == DMA_PINC_ENABLE) Data++; - Count--; + while (x_cur != x_min && count) { + transmit(*data); + if (memoryIncrease == DMA_PINC_ENABLE) data++; + count--; } uint16_t width = x_max - x_min + 1; - uint16_t height = Count / width; - uint16_t x_end_cnt = Count - (width * height); + uint16_t height = count / width; + uint16_t x_end_cnt = count - (width * height); if (height) { - if (MemoryIncrease == DMA_PINC_ENABLE) { - DrawImage(x_min, y_cur, x_min + width, y_cur + height, Data); - Data += width * height; + if (memoryIncrease == DMA_PINC_ENABLE) { + drawImage(x_min, y_cur, x_min + width, y_cur + height, data); + data += width * height; } else - DrawRect(x_min, y_cur, x_min + width, y_cur + height, *Data); + drawRect(x_min, y_cur, x_min + width, y_cur + height, *data); y_cur += height; } while (x_end_cnt) { - Transmit(*Data); - if (MemoryIncrease == DMA_PINC_ENABLE) Data++; + transmit(*data); + if (memoryIncrease == DMA_PINC_ENABLE) data++; x_end_cnt--; } } diff --git a/Marlin/src/HAL/STM32/tft/tft_ltdc.h b/Marlin/src/HAL/STM32/tft/tft_ltdc.h index ee65561011..d4a254ba70 100644 --- a/Marlin/src/HAL/STM32/tft/tft_ltdc.h +++ b/Marlin/src/HAL/STM32/tft/tft_ltdc.h @@ -43,41 +43,41 @@ class TFT_LTDC { static uint16_t x_min, x_max, y_min, y_max, x_cur, y_cur; static uint8_t reg; - static uint32_t ReadID(tft_data_t Reg); + static uint32_t readID(tft_data_t reg); - static uint16_t ReadPoint(uint16_t x, uint16_t y); - static void DrawPoint(uint16_t x, uint16_t y, uint16_t color); - static void DrawRect(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t color); - static void DrawImage(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t *colors); - static void Transmit(tft_data_t Data); - static void Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count); + static uint16_t readPoint(uint16_t x, uint16_t y); + static void drawPoint(uint16_t x, uint16_t y, uint16_t color); + static void drawRect(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t color); + static void drawImage(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t *colors); + static void transmit(tft_data_t data); + static void transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count); public: - static void Init(); - static uint32_t GetID(); + static void init(); + static uint32_t getID(); static bool isBusy(); - static void Abort() { /*__HAL_DMA_DISABLE(&DMAtx);*/ } + static void abort() { /*__HAL_DMA_DISABLE(&DMAtx);*/ } - static void DataTransferBegin(uint16_t DataWidth=TFT_DATASIZE) {} - static void DataTransferEnd() {}; + static void dataTransferBegin(uint16_t dataWidth=TFT_DATASIZE) {} + static void dataTransferEnd() {}; - static void WriteData(uint16_t Data); - static void WriteReg(uint16_t Reg); + static void writeData(uint16_t data); + static void writeReg(uint16_t reg); // Non-blocking DMA data transfer is not implemented for LTDC interface - inline static void WriteSequence_DMA(uint16_t *Data, uint16_t Count) { WriteSequence(Data, Count); } - inline static void WriteMultiple_DMA(uint16_t Color, uint16_t Count) { WriteMultiple(Color, Count); } + inline static void writeSequence_DMA(uint16_t *data, uint16_t count) { writeSequence(data, count); } + inline static void writeMultiple_DMA(uint16_t color, uint16_t count) { writeMultiple(color, count); } - static void WriteSequence(uint16_t *Data, uint16_t Count) { Transmit(DMA_PINC_ENABLE, Data, Count); } - static void WriteMultiple(uint16_t Color, uint32_t Count) { - while (Count > 0) { - Transmit(DMA_PINC_DISABLE, &Color, Count > DMA_MAX_SIZE ? DMA_MAX_SIZE : Count); - Count = Count > DMA_MAX_SIZE ? Count - DMA_MAX_SIZE : 0; + static void writeSequence(uint16_t *data, uint16_t count) { transmit(DMA_PINC_ENABLE, data, count); } + static void writeMultiple(uint16_t color, uint32_t count) { + while (count > 0) { + transmit(DMA_PINC_DISABLE, &color, count > DMA_MAX_SIZE ? DMA_MAX_SIZE : count); + count = count > DMA_MAX_SIZE ? count - DMA_MAX_SIZE : 0; } } }; -const PinMap PinMap_LTDC[] = { +const PinMap pinMap_LTDC[] = { {PF_10, LTDC, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_LTDC)}, // LCD_DE {PG_7, LTDC, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_LTDC)}, // LCD_CLK {PI_9, LTDC, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_LTDC)}, // LCD_VSYNC @@ -104,7 +104,7 @@ const PinMap PinMap_LTDC[] = { {NC, NP, 0} }; -const PinMap PinMap_SDRAM[] = { +const PinMap pinMap_SDRAM[] = { {PC_0, FMC_Bank1_R, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_FMC)}, // FMC_SDNWE {PC_2, FMC_Bank1_R, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_FMC)}, // FMC_SDNE0 {PC_3, FMC_Bank1_R, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_FMC)}, // FMC_SDCKE0 diff --git a/Marlin/src/HAL/STM32/tft/tft_spi.cpp b/Marlin/src/HAL/STM32/tft/tft_spi.cpp index dbb93c786b..eebf366b8c 100644 --- a/Marlin/src/HAL/STM32/tft/tft_spi.cpp +++ b/Marlin/src/HAL/STM32/tft/tft_spi.cpp @@ -34,7 +34,7 @@ SPI_HandleTypeDef TFT_SPI::SPIx; DMA_HandleTypeDef TFT_SPI::DMAtx; -void TFT_SPI::Init() { +void TFT_SPI::init() { SPI_TypeDef *spiInstance; OUT_WRITE(TFT_A0_PIN, HIGH); @@ -122,8 +122,8 @@ void TFT_SPI::Init() { #endif } -void TFT_SPI::DataTransferBegin(uint16_t DataSize) { - SPIx.Init.DataSize = DataSize == DATASIZE_8BIT ? SPI_DATASIZE_8BIT : SPI_DATASIZE_16BIT; +void TFT_SPI::dataTransferBegin(uint16_t dataSize) { + SPIx.Init.DataSize = dataSize == DATASIZE_8BIT ? SPI_DATASIZE_8BIT : SPI_DATASIZE_16BIT; HAL_SPI_Init(&SPIx); WRITE(TFT_CS_PIN, LOW); } @@ -132,11 +132,11 @@ void TFT_SPI::DataTransferBegin(uint16_t DataSize) { #include "../../../lcd/tft_io/tft_ids.h" #endif -uint32_t TFT_SPI::GetID() { +uint32_t TFT_SPI::getID() { uint32_t id; - id = ReadID(LCD_READ_ID); + id = readID(LCD_READ_ID); if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) { - id = ReadID(LCD_READ_ID4); + id = readID(LCD_READ_ID4); #ifdef TFT_DEFAULT_DRIVER if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) id = TFT_DEFAULT_DRIVER; @@ -145,15 +145,15 @@ uint32_t TFT_SPI::GetID() { return id; } -uint32_t TFT_SPI::ReadID(uint16_t Reg) { - uint32_t Data = 0; +uint32_t TFT_SPI::readID(uint16_t reg) { + uint32_t data = 0; #if PIN_EXISTS(TFT_MISO) uint32_t BaudRatePrescaler = SPIx.Init.BaudRatePrescaler; uint32_t i; SPIx.Init.BaudRatePrescaler = SPIx.Instance == SPI1 ? SPI_BAUDRATEPRESCALER_8 : SPI_BAUDRATEPRESCALER_4; - DataTransferBegin(DATASIZE_8BIT); - WriteReg(Reg); + dataTransferBegin(DATASIZE_8BIT); + writeReg(reg); if (SPIx.Init.Direction == SPI_DIRECTION_1LINE) SPI_1LINE_RX(&SPIx); __HAL_SPI_ENABLE(&SPIx); @@ -164,15 +164,15 @@ uint32_t TFT_SPI::ReadID(uint16_t Reg) { SPIx.Instance->DR = 0; #endif while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_RXNE)) {} - Data = (Data << 8) | SPIx.Instance->DR; + data = (data << 8) | SPIx.Instance->DR; } - DataTransferEnd(); + dataTransferEnd(); SPIx.Init.BaudRatePrescaler = BaudRatePrescaler; #endif - return Data >> 7; + return data >> 7; } bool TFT_SPI::isBusy() { @@ -197,27 +197,27 @@ bool TFT_SPI::isBusy() { if ((!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_TXE)) || (__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY))) return true; } - Abort(); + abort(); return false; } -void TFT_SPI::Abort() { +void TFT_SPI::abort() { HAL_DMA_Abort(&DMAtx); // Abort DMA transfer if any HAL_DMA_DeInit(&DMAtx); CLEAR_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); - DataTransferEnd(); // Stop SPI and deselect CS + dataTransferEnd(); // Stop SPI and deselect CS } -void TFT_SPI::Transmit(uint16_t Data) { +void TFT_SPI::transmit(uint16_t data) { #if TFT_MISO_PIN == TFT_MOSI_PIN SPI_1LINE_TX(&SPIx); #endif __HAL_SPI_ENABLE(&SPIx); - SPIx.Instance->DR = Data; + SPIx.Instance->DR = data; while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_TXE)) {} while ( __HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY)) {} @@ -227,17 +227,17 @@ void TFT_SPI::Transmit(uint16_t Data) { #endif } -void TFT_SPI::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { - DMAtx.Init.MemInc = MemoryIncrease; +void TFT_SPI::transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { + DMAtx.Init.MemInc = memoryIncrease; HAL_DMA_Init(&DMAtx); #if TFT_MISO_PIN == TFT_MOSI_PIN SPI_1LINE_TX(&SPIx); #endif - DataTransferBegin(); + dataTransferBegin(); - HAL_DMA_Start(&DMAtx, (uint32_t)Data, (uint32_t)&(SPIx.Instance->DR), Count); + HAL_DMA_Start(&DMAtx, (uint32_t)data, (uint32_t)&(SPIx.Instance->DR), count); __HAL_SPI_ENABLE(&SPIx); SET_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); // Enable Tx DMA Request @@ -245,39 +245,39 @@ void TFT_SPI::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Coun TERN_(TFT_SHARED_IO, while (isBusy())); } -void TFT_SPI::Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { - DMAtx.Init.MemInc = MemoryIncrease; +void TFT_SPI::transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { + DMAtx.Init.MemInc = memoryIncrease; HAL_DMA_Init(&DMAtx); if (TFT_MISO_PIN == TFT_MOSI_PIN) SPI_1LINE_TX(&SPIx); - DataTransferBegin(); + dataTransferBegin(); - HAL_DMA_Start(&DMAtx, (uint32_t)Data, (uint32_t)&(SPIx.Instance->DR), Count); + HAL_DMA_Start(&DMAtx, (uint32_t)data, (uint32_t)&(SPIx.Instance->DR), count); __HAL_SPI_ENABLE(&SPIx); SET_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); // Enable Tx DMA Request HAL_DMA_PollForTransfer(&DMAtx, HAL_DMA_FULL_TRANSFER, HAL_MAX_DELAY); while ( __HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY)) {} - Abort(); + abort(); } #if ENABLED(USE_SPI_DMA_TC) - void TFT_SPI::TransmitDMA_IT(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { + void TFT_SPI::TransmitDMA_IT(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { - DMAtx.Init.MemInc = MemoryIncrease; + DMAtx.Init.MemInc = memoryIncrease; HAL_DMA_Init(&DMAtx); if (TFT_MISO_PIN == TFT_MOSI_PIN) SPI_1LINE_TX(&SPIx); - DataTransferBegin(); + dataTransferBegin(); HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, 5, 0); HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn); - HAL_DMA_Start_IT(&DMAtx, (uint32_t)Data, (uint32_t)&(SPIx.Instance->DR), Count); + HAL_DMA_Start_IT(&DMAtx, (uint32_t)data, (uint32_t)&(SPIx.Instance->DR), count); __HAL_SPI_ENABLE(&SPIx); SET_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); // Enable Tx DMA Request diff --git a/Marlin/src/HAL/STM32/tft/tft_spi.h b/Marlin/src/HAL/STM32/tft/tft_spi.h index 4825b65c68..09f0e08107 100644 --- a/Marlin/src/HAL/STM32/tft/tft_spi.h +++ b/Marlin/src/HAL/STM32/tft/tft_spi.h @@ -46,40 +46,40 @@ private: static SPI_HandleTypeDef SPIx; static DMA_HandleTypeDef DMAtx; - static uint32_t ReadID(uint16_t Reg); - static void Transmit(uint16_t Data); - static void Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count); - static void TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count); + static uint32_t readID(uint16_t reg); + static void transmit(uint16_t data); + static void transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count); + static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count); #if ENABLED(USE_SPI_DMA_TC) - static void TransmitDMA_IT(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count); + static void TransmitDMA_IT(uint32_t memoryIncrease, uint16_t *data, uint16_t count); #endif public: - static void Init(); - static uint32_t GetID(); + static void init(); + static uint32_t getID(); static bool isBusy(); - static void Abort(); + static void abort(); - static void DataTransferBegin(uint16_t DataWidth=DATASIZE_16BIT); - static void DataTransferEnd() { WRITE(TFT_CS_PIN, HIGH); __HAL_SPI_DISABLE(&SPIx); }; - static void DataTransferAbort(); + static void dataTransferBegin(uint16_t dataWidth=DATASIZE_16BIT); + static void dataTransferEnd() { WRITE(TFT_CS_PIN, HIGH); __HAL_SPI_DISABLE(&SPIx); }; + static void dataTransferAbort(); - static void WriteData(uint16_t Data) { Transmit(Data); } - static void WriteReg(uint16_t Reg) { WRITE(TFT_A0_PIN, LOW); Transmit(Reg); WRITE(TFT_A0_PIN, HIGH); } + static void writeData(uint16_t data) { transmit(data); } + static void writeReg(uint16_t reg) { WRITE(TFT_A0_PIN, LOW); transmit(reg); WRITE(TFT_A0_PIN, HIGH); } - static void WriteSequence_DMA(uint16_t *Data, uint16_t Count) { TransmitDMA(DMA_MINC_ENABLE, Data, Count); } - static void WriteMultiple_DMA(uint16_t Color, uint16_t Count) { static uint16_t Data; Data = Color; TransmitDMA(DMA_MINC_DISABLE, &Data, Count); } + static void writeSequence_DMA(uint16_t *data, uint16_t count) { transmitDMA(DMA_MINC_ENABLE, data, count); } + static void writeMultiple_DMA(uint16_t color, uint16_t count) { static uint16_t data; data = color; transmitDMA(DMA_MINC_DISABLE, &data, count); } #if ENABLED(USE_SPI_DMA_TC) - static void WriteSequenceIT(uint16_t *Data, uint16_t Count) { TransmitDMA_IT(DMA_MINC_ENABLE, Data, Count); } + static void writeSequenceIT(uint16_t *data, uint16_t count) { TransmitDMA_IT(DMA_MINC_ENABLE, data, count); } inline static void DMA_IRQHandler() { HAL_DMA_IRQHandler(&TFT_SPI::DMAtx); } #endif - static void WriteSequence(uint16_t *Data, uint16_t Count) { Transmit(DMA_MINC_ENABLE, Data, Count); } - static void WriteMultiple(uint16_t Color, uint32_t Count) { - while (Count > 0) { - Transmit(DMA_MINC_DISABLE, &Color, Count > DMA_MAX_SIZE ? DMA_MAX_SIZE : Count); - Count = Count > DMA_MAX_SIZE ? Count - DMA_MAX_SIZE : 0; + static void writeSequence(uint16_t *data, uint16_t count) { transmit(DMA_MINC_ENABLE, data, count); } + static void writeMultiple(uint16_t color, uint32_t count) { + while (count > 0) { + transmit(DMA_MINC_DISABLE, &color, count > DMA_MAX_SIZE ? DMA_MAX_SIZE : count); + count = count > DMA_MAX_SIZE ? count - DMA_MAX_SIZE : 0; } } }; diff --git a/Marlin/src/HAL/STM32/tft/xpt2046.cpp b/Marlin/src/HAL/STM32/tft/xpt2046.cpp index cf4a8f18e9..8efbfb84f8 100644 --- a/Marlin/src/HAL/STM32/tft/xpt2046.cpp +++ b/Marlin/src/HAL/STM32/tft/xpt2046.cpp @@ -35,7 +35,7 @@ uint16_t delta(uint16_t a, uint16_t b) { return a > b ? a - b : b - a; } SPI_HandleTypeDef XPT2046::SPIx; -void XPT2046::Init() { +void XPT2046::init() { SPI_TypeDef *spiInstance; OUT_WRITE(TOUCH_CS_PIN, HIGH); @@ -117,14 +117,14 @@ bool XPT2046::getRawPoint(int16_t *x, int16_t *y) { uint16_t XPT2046::getRawData(const XPTCoordinate coordinate) { uint16_t data[3]; - DataTransferBegin(); + dataTransferBegin(); for (uint16_t i = 0; i < 3 ; i++) { IO(coordinate); data[i] = (IO() << 4) | (IO() >> 4); } - DataTransferEnd(); + dataTransferEnd(); uint16_t delta01 = delta(data[0], data[1]); uint16_t delta02 = delta(data[0], data[2]); @@ -140,7 +140,7 @@ uint16_t XPT2046::getRawData(const XPTCoordinate coordinate) { return (data[0] + data[1]) >> 1; } -uint16_t XPT2046::HardwareIO(uint16_t data) { +uint16_t XPT2046::hardwareIO(uint16_t data) { __HAL_SPI_ENABLE(&SPIx); while ((SPIx.Instance->SR & SPI_FLAG_TXE) != SPI_FLAG_TXE) {} SPIx.Instance->DR = data; @@ -150,7 +150,7 @@ uint16_t XPT2046::HardwareIO(uint16_t data) { return SPIx.Instance->DR; } -uint16_t XPT2046::SoftwareIO(uint16_t data) { +uint16_t XPT2046::softwareIO(uint16_t data) { uint16_t result = 0; for (uint8_t j = 0x80; j > 0; j >>= 1) { diff --git a/Marlin/src/HAL/STM32/tft/xpt2046.h b/Marlin/src/HAL/STM32/tft/xpt2046.h index 71de6b0025..6b2492c339 100644 --- a/Marlin/src/HAL/STM32/tft/xpt2046.h +++ b/Marlin/src/HAL/STM32/tft/xpt2046.h @@ -69,13 +69,13 @@ private: static uint16_t getRawData(const XPTCoordinate coordinate); static bool isTouched(); - static void DataTransferBegin() { if (SPIx.Instance) { HAL_SPI_Init(&SPIx); } WRITE(TOUCH_CS_PIN, LOW); }; - static void DataTransferEnd() { WRITE(TOUCH_CS_PIN, HIGH); }; - static uint16_t HardwareIO(uint16_t data); - static uint16_t SoftwareIO(uint16_t data); - static uint16_t IO(uint16_t data = 0) { return SPIx.Instance ? HardwareIO(data) : SoftwareIO(data); } + static void dataTransferBegin() { if (SPIx.Instance) { HAL_SPI_Init(&SPIx); } WRITE(TOUCH_CS_PIN, LOW); }; + static void dataTransferEnd() { WRITE(TOUCH_CS_PIN, HIGH); }; + static uint16_t hardwareIO(uint16_t data); + static uint16_t softwareIO(uint16_t data); + static uint16_t IO(uint16_t data = 0) { return SPIx.Instance ? hardwareIO(data) : softwareIO(data); } public: - static void Init(); + static void init(); static bool getRawPoint(int16_t *x, int16_t *y); }; diff --git a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp index 1e4dfec8a6..a910cd5af0 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp +++ b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp @@ -87,7 +87,7 @@ __attribute__((always_inline)) __STATIC_INLINE void __DSB() { #define FSMC_DATA_SETUP_TIME 15 // DataSetupTime static uint8_t fsmcInit = 0; -void TFT_FSMC::Init() { +void TFT_FSMC::init() { uint8_t cs = FSMC_CS_PIN, rs = FSMC_RS_PIN; uint32_t controllerAddress; @@ -181,35 +181,35 @@ void TFT_FSMC::Init() { LCD = (LCD_CONTROLLER_TypeDef*)controllerAddress; } -void TFT_FSMC::Transmit(uint16_t Data) { - LCD->RAM = Data; +void TFT_FSMC::transmit(uint16_t data) { + LCD->RAM = data; __DSB(); } -void TFT_FSMC::WriteReg(uint16_t Reg) { - LCD->REG = Reg; +void TFT_FSMC::writeReg(uint16_t reg) { + LCD->REG = reg; __DSB(); } -uint32_t TFT_FSMC::GetID() { +uint32_t TFT_FSMC::getID() { uint32_t id; - WriteReg(0x0000); + writeReg(0x0000); id = LCD->RAM; if (id == 0) - id = ReadID(LCD_READ_ID); + id = readID(LCD_READ_ID); if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) - id = ReadID(LCD_READ_ID4); + id = readID(LCD_READ_ID4); if ((id & 0xFF00) == 0 && (id & 0xFF) != 0) - id = ReadID(LCD_READ_ID4); + id = readID(LCD_READ_ID4); return id; } - uint32_t TFT_FSMC::ReadID(uint16_t Reg) { + uint32_t TFT_FSMC::readID(uint16_t reg) { uint32_t id; - WriteReg(Reg); + writeReg(reg); id = LCD->RAM; // dummy read - id = Reg << 24; + id = reg << 24; id |= (LCD->RAM & 0x00FF) << 16; id |= (LCD->RAM & 0x00FF) << 8; id |= LCD->RAM & 0x00FF; @@ -225,11 +225,11 @@ bool TFT_FSMC::isBusy() { if ((dma_get_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL) & (DMA_ISR_TCIF | DMA_ISR_TEIF)) == 0) return true; __DSB(); - Abort(); + abort(); return false; } -void TFT_FSMC::Abort() { +void TFT_FSMC::abort() { dma_channel_reg_map *channel_regs = dma_channel_regs(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); dma_disable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); // Abort DMA transfer if any @@ -241,25 +241,25 @@ void TFT_FSMC::Abort() { channel_regs->CPAR = 0U; } -void TFT_FSMC::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { +void TFT_FSMC::transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { // TODO: HAL STM32 uses DMA2_Channel1 for FSMC on STM32F1 - dma_setup_transfer(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, Data, DMA_SIZE_16BITS, &LCD->RAM, DMA_SIZE_16BITS, DMA_MEM_2_MEM | MemoryIncrease); - dma_set_num_transfers(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, Count); + dma_setup_transfer(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, data, DMA_SIZE_16BITS, &LCD->RAM, DMA_SIZE_16BITS, DMA_MEM_2_MEM | memoryIncrease); + dma_set_num_transfers(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, count); dma_clear_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); dma_enable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); TERN_(TFT_SHARED_IO, while (isBusy())); } -void TFT_FSMC::Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { +void TFT_FSMC::transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { #if defined(FSMC_DMA_DEV) && defined(FSMC_DMA_CHANNEL) - dma_setup_transfer(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, Data, DMA_SIZE_16BITS, &LCD->RAM, DMA_SIZE_16BITS, DMA_MEM_2_MEM | MemoryIncrease); - dma_set_num_transfers(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, Count); + dma_setup_transfer(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, data, DMA_SIZE_16BITS, &LCD->RAM, DMA_SIZE_16BITS, DMA_MEM_2_MEM | memoryIncrease); + dma_set_num_transfers(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, count); dma_clear_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); dma_enable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); while ((dma_get_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL) & (DMA_CCR_TEIE | DMA_CCR_TCIE)) == 0) {} - Abort(); + abort(); #endif } diff --git a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h index 0db7f559b6..0e74ce2c2b 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h +++ b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h @@ -54,31 +54,31 @@ class TFT_FSMC { private: static LCD_CONTROLLER_TypeDef *LCD; - static uint32_t ReadID(uint16_t Reg); - static void Transmit(uint16_t Data); - static void Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count); - static void TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count); + static uint32_t readID(uint16_t reg); + static void transmit(uint16_t data); + static void transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count); + static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count); public: - static void Init(); - static uint32_t GetID(); + static void init(); + static uint32_t getID(); static bool isBusy(); - static void Abort(); + static void abort(); - static void DataTransferBegin(uint16_t DataWidth=DATASIZE_16BIT) {}; - static void DataTransferEnd() {}; + static void dataTransferBegin(uint16_t dataWidth=DATASIZE_16BIT) {}; + static void dataTransferEnd() {}; - static void WriteData(uint16_t Data) { Transmit(Data); } - static void WriteReg(uint16_t Reg); + static void writeData(uint16_t data) { transmit(data); } + static void writeReg(uint16_t reg); - static void WriteSequence_DMA(uint16_t *Data, uint16_t Count) { TransmitDMA(DMA_PINC_ENABLE, Data, Count); } - static void WriteMultiple_DMA(uint16_t Color, uint16_t Count) { static uint16_t Data; Data = Color; TransmitDMA(DMA_PINC_DISABLE, &Data, Count); } + static void writeSequence_DMA(uint16_t *data, uint16_t count) { transmitDMA(DMA_PINC_ENABLE, data, count); } + static void writeMultiple_DMA(uint16_t color, uint16_t count) { static uint16_t data; data = color; transmitDMA(DMA_PINC_DISABLE, &data, count); } - static void WriteSequence(uint16_t *Data, uint16_t Count) { Transmit(DMA_PINC_ENABLE, Data, Count); } - static void WriteMultiple(uint16_t Color, uint32_t Count) { - while (Count > 0) { - Transmit(DMA_PINC_DISABLE, &Color, Count > DMA_MAX_SIZE ? DMA_MAX_SIZE : Count); - Count = Count > DMA_MAX_SIZE ? Count - DMA_MAX_SIZE : 0; + static void writeSequence(uint16_t *data, uint16_t count) { transmit(DMA_PINC_ENABLE, data, count); } + static void writeMultiple(uint16_t color, uint32_t count) { + while (count > 0) { + transmit(DMA_PINC_DISABLE, &color, count > DMA_MAX_SIZE ? DMA_MAX_SIZE : count); + count = count > DMA_MAX_SIZE ? count - DMA_MAX_SIZE : 0; } } }; diff --git a/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp b/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp index a68b2b98f8..18d5644437 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp +++ b/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp @@ -30,7 +30,7 @@ SPIClass TFT_SPI::SPIx(TFT_SPI_DEVICE); -void TFT_SPI::Init() { +void TFT_SPI::init() { #if PIN_EXISTS(TFT_RESET) OUT_WRITE(TFT_RESET_PIN, HIGH); delay(100); @@ -70,8 +70,8 @@ void TFT_SPI::Init() { SPIx.setDataMode(SPI_MODE0); } -void TFT_SPI::DataTransferBegin(uint16_t DataSize) { - SPIx.setDataSize(DataSize); +void TFT_SPI::dataTransferBegin(uint16_t dataSize) { + SPIx.setDataSize(dataSize); SPIx.begin(); WRITE(TFT_CS_PIN, LOW); } @@ -80,11 +80,11 @@ void TFT_SPI::DataTransferBegin(uint16_t DataSize) { #include "../../../lcd/tft_io/tft_ids.h" #endif -uint32_t TFT_SPI::GetID() { +uint32_t TFT_SPI::getID() { uint32_t id; - id = ReadID(LCD_READ_ID); + id = readID(LCD_READ_ID); if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) { - id = ReadID(LCD_READ_ID4); + id = readID(LCD_READ_ID4); #ifdef TFT_DEFAULT_DRIVER if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) id = TFT_DEFAULT_DRIVER; @@ -93,13 +93,13 @@ uint32_t TFT_SPI::GetID() { return id; } -uint32_t TFT_SPI::ReadID(uint16_t Reg) { +uint32_t TFT_SPI::readID(uint16_t reg) { uint32_t data = 0; #if PIN_EXISTS(TFT_MISO) SPIx.setClockDivider(SPI_CLOCK_DIV16); - DataTransferBegin(DATASIZE_8BIT); - WriteReg(Reg); + dataTransferBegin(DATASIZE_8BIT); + writeReg(reg); for (uint8_t i = 0; i < 4; ++i) { uint8_t d; @@ -107,7 +107,7 @@ uint32_t TFT_SPI::ReadID(uint16_t Reg) { data = (data << 8) | d; } - DataTransferEnd(); + dataTransferEnd(); SPIx.setClockDivider(SPI_CLOCK_MAX); #endif @@ -130,11 +130,11 @@ bool TFT_SPI::isBusy() { if (!(SPIdev->regs->SR & SPI_SR_TXE) || (SPIdev->regs->SR & SPI_SR_BSY)) return true; } - Abort(); + abort(); return false; } -void TFT_SPI::Abort() { +void TFT_SPI::abort() { dma_channel_reg_map *channel_regs = dma_channel_regs(DMAx, DMA_CHx); dma_disable(DMAx, DMA_CHx); // Abort DMA transfer if any @@ -146,23 +146,23 @@ void TFT_SPI::Abort() { channel_regs->CMAR = 0U; channel_regs->CPAR = 0U; - DataTransferEnd(); + dataTransferEnd(); } -void TFT_SPI::Transmit(uint16_t Data) { SPIx.send(Data); } +void TFT_SPI::transmit(uint16_t data) { SPIx.send(data); } -void TFT_SPI::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { - DataTransferBegin(); - SPIx.dmaSendAsync(Data, Count, MemoryIncrease == DMA_MINC_ENABLE); +void TFT_SPI::transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { + dataTransferBegin(); + SPIx.dmaSendAsync(data, count, memoryIncrease == DMA_MINC_ENABLE); TERN_(TFT_SHARED_IO, while (isBusy())); } -void TFT_SPI::Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) { +void TFT_SPI::transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { WRITE(TFT_DC_PIN, HIGH); - DataTransferBegin(); - SPIx.dmaSend(Data, Count, MemoryIncrease == DMA_MINC_ENABLE); - DataTransferEnd(); + dataTransferBegin(); + SPIx.dmaSend(data, count, memoryIncrease == DMA_MINC_ENABLE); + dataTransferEnd(); } #endif // HAS_SPI_TFT diff --git a/Marlin/src/HAL/STM32F1/tft/tft_spi.h b/Marlin/src/HAL/STM32F1/tft/tft_spi.h index 573077d21d..d0c2e50486 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_spi.h +++ b/Marlin/src/HAL/STM32F1/tft/tft_spi.h @@ -63,34 +63,34 @@ class TFT_SPI { private: - static uint32_t ReadID(uint16_t Reg); - static void Transmit(uint16_t Data); - static void Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count); - static void TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count); + static uint32_t readID(uint16_t reg); + static void transmit(uint16_t data); + static void transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count); + static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count); public: static SPIClass SPIx; - static void Init(); - static uint32_t GetID(); + static void init(); + static uint32_t getID(); static bool isBusy(); - static void Abort(); + static void abort(); - static void DataTransferBegin(uint16_t DataWidth=DATA_SIZE_16BIT); - static void DataTransferEnd() { WRITE(TFT_CS_PIN, HIGH); SPIx.end(); }; - static void DataTransferAbort(); + static void dataTransferBegin(uint16_t dataWidth=DATA_SIZE_16BIT); + static void dataTransferEnd() { WRITE(TFT_CS_PIN, HIGH); SPIx.end(); }; + static void dataTransferAbort(); - static void WriteData(uint16_t Data) { Transmit(Data); } - static void WriteReg(uint16_t Reg) { WRITE(TFT_DC_PIN, LOW); Transmit(Reg); WRITE(TFT_DC_PIN, HIGH); } + static void writeData(uint16_t data) { transmit(data); } + static void writeReg(uint16_t reg) { WRITE(TFT_DC_PIN, LOW); transmit(reg); WRITE(TFT_DC_PIN, HIGH); } - static void WriteSequence_DMA(uint16_t *Data, uint16_t Count) { TransmitDMA(DMA_MINC_ENABLE, Data, Count); } - static void WriteMultiple_DMA(uint16_t Color, uint16_t Count) { static uint16_t Data; Data = Color; TransmitDMA(DMA_MINC_DISABLE, &Data, Count); } + static void writeSequence_DMA(uint16_t *data, uint16_t count) { transmitDMA(DMA_MINC_ENABLE, data, count); } + static void writeMultiple_DMA(uint16_t color, uint16_t count) { static uint16_t data; data = color; transmitDMA(DMA_MINC_DISABLE, &data, count); } - static void WriteSequence(uint16_t *Data, uint16_t Count) { Transmit(DMA_MINC_ENABLE, Data, Count); } - static void WriteMultiple(uint16_t Color, uint32_t Count) { - while (Count > 0) { - Transmit(DMA_MINC_DISABLE, &Color, Count > DMA_MAX_SIZE ? DMA_MAX_SIZE : Count); - Count = Count > DMA_MAX_SIZE ? Count - DMA_MAX_SIZE : 0; + static void writeSequence(uint16_t *data, uint16_t count) { transmit(DMA_MINC_ENABLE, data, count); } + static void writeMultiple(uint16_t color, uint32_t count) { + while (count > 0) { + transmit(DMA_MINC_DISABLE, &color, count > DMA_MAX_SIZE ? DMA_MAX_SIZE : count); + count = count > DMA_MAX_SIZE ? count - DMA_MAX_SIZE : 0; } } }; diff --git a/Marlin/src/HAL/STM32F1/tft/xpt2046.cpp b/Marlin/src/HAL/STM32F1/tft/xpt2046.cpp index bf57ba0034..845a57a814 100644 --- a/Marlin/src/HAL/STM32F1/tft/xpt2046.cpp +++ b/Marlin/src/HAL/STM32F1/tft/xpt2046.cpp @@ -59,7 +59,7 @@ uint16_t delta(uint16_t a, uint16_t b) { return a > b ? a - b : b - a; } } #endif // TOUCH_BUTTONS_HW_SPI -void XPT2046::Init() { +void XPT2046::init() { SET_INPUT(TOUCH_MISO_PIN); SET_OUTPUT(TOUCH_MOSI_PIN); SET_OUTPUT(TOUCH_SCK_PIN); @@ -97,7 +97,7 @@ bool XPT2046::getRawPoint(int16_t *x, int16_t *y) { uint16_t XPT2046::getRawData(const XPTCoordinate coordinate) { uint16_t data[3]; - DataTransferBegin(); + dataTransferBegin(); TERN_(TOUCH_BUTTONS_HW_SPI, SPIx.begin()); for (uint16_t i = 0; i < 3 ; i++) { @@ -106,7 +106,7 @@ uint16_t XPT2046::getRawData(const XPTCoordinate coordinate) { } TERN_(TOUCH_BUTTONS_HW_SPI, SPIx.end()); - DataTransferEnd(); + dataTransferEnd(); uint16_t delta01 = delta(data[0], data[1]), delta02 = delta(data[0], data[2]), @@ -119,17 +119,17 @@ uint16_t XPT2046::getRawData(const XPTCoordinate coordinate) { } uint16_t XPT2046::IO(uint16_t data) { - return TERN(TOUCH_BUTTONS_HW_SPI, HardwareIO, SoftwareIO)(data); + return TERN(TOUCH_BUTTONS_HW_SPI, hardwareIO, softwareIO)(data); } #if ENABLED(TOUCH_BUTTONS_HW_SPI) - uint16_t XPT2046::HardwareIO(uint16_t data) { + uint16_t XPT2046::hardwareIO(uint16_t data) { uint16_t result = SPIx.transfer(data); return result; } #endif -uint16_t XPT2046::SoftwareIO(uint16_t data) { +uint16_t XPT2046::softwareIO(uint16_t data) { uint16_t result = 0; for (uint8_t j = 0x80; j; j >>= 1) { diff --git a/Marlin/src/HAL/STM32F1/tft/xpt2046.h b/Marlin/src/HAL/STM32F1/tft/xpt2046.h index 7c456cf00e..8fdcacf926 100644 --- a/Marlin/src/HAL/STM32F1/tft/xpt2046.h +++ b/Marlin/src/HAL/STM32F1/tft/xpt2046.h @@ -65,12 +65,12 @@ private: static uint16_t getRawData(const XPTCoordinate coordinate); static bool isTouched(); - static void DataTransferBegin() { WRITE(TOUCH_CS_PIN, LOW); }; - static void DataTransferEnd() { WRITE(TOUCH_CS_PIN, HIGH); }; + static void dataTransferBegin() { WRITE(TOUCH_CS_PIN, LOW); }; + static void dataTransferEnd() { WRITE(TOUCH_CS_PIN, HIGH); }; #if ENABLED(TOUCH_BUTTONS_HW_SPI) - static uint16_t HardwareIO(uint16_t data); + static uint16_t hardwareIO(uint16_t data); #endif - static uint16_t SoftwareIO(uint16_t data); + static uint16_t softwareIO(uint16_t data); static uint16_t IO(uint16_t data = 0); public: @@ -78,6 +78,6 @@ public: static SPIClass SPIx; #endif - static void Init(); + static void init(); static bool getRawPoint(int16_t *x, int16_t *y); }; diff --git a/Marlin/src/HAL/shared/backtrace/unwmemaccess.cpp b/Marlin/src/HAL/shared/backtrace/unwmemaccess.cpp index a4151b38c2..da1cff4fcc 100644 --- a/Marlin/src/HAL/shared/backtrace/unwmemaccess.cpp +++ b/Marlin/src/HAL/shared/backtrace/unwmemaccess.cpp @@ -135,7 +135,7 @@ // Generic ARM code, that's testing if an access to the given address would cause a fault or not // It can't guarantee an address is in RAM or Flash only, but we usually don't care - #define NVIC_FAULT_STAT 0xE000ED28 // Configurable Fault Status Reg. + #define NVIC_FAULT_STAT 0xE000ED28 // Configurable Fault Status reg. #define NVIC_CFG_CTRL 0xE000ED14 // Configuration Control Register #define NVIC_FAULT_STAT_BFARV 0x00008000 // BFAR is valid #define NVIC_CFG_CTRL_BFHFNMIGN 0x00000100 // Ignore bus fault in NMI/fault diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 09d398eb87..8b89a00c20 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -819,7 +819,7 @@ void idle(const bool no_stepper_sleep/*=false*/) { TERN_(HAS_BEEPER, buzzer.tick()); // Handle UI input / draw events - TERN(DWIN_CREALITY_LCD, DWIN_Update(), ui.update()); + TERN(DWIN_CREALITY_LCD, dwinUpdate(), ui.update()); // Run i2c Position Encoders #if ENABLED(I2C_POSITION_ENCODERS) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index f4d1ff8365..361c63af4d 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -375,7 +375,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #endif #if HAS_LCDPRINT && HAS_EXTRA_PROGRESS && LCD_HEIGHT < 4 - #error "Displays with fewer than 4 rows of text can't show progress values." + #error "Displays with fewer than 4 rows can't show progress values (e.g., SHOW_PROGRESS_PERCENT, SHOW_ELAPSED_TIME, SHOW_REMAINING_TIME, SHOW_INTERACTION_TIME)." #endif #if !HAS_MARLINUI_MENU && ENABLED(SD_REPRINT_LAST_SELECTED_FILE) diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index ba467d1a61..1aa53241ad 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -787,9 +787,10 @@ void MarlinUI::draw_status_message(const bool blink) { #define TPOFFSET (LCD_WIDTH - 1) static uint8_t timepos = TPOFFSET - 6; static char buffer[8]; - static lcd_uint_t pc, pr; #if ENABLED(SHOW_PROGRESS_PERCENT) + static lcd_uint_t pc = 0, pr = 2; + inline void setPercentPos(const lcd_uint_t c, const lcd_uint_t r) { pc = c; pr = r; } void MarlinUI::drawPercent() { const uint8_t progress = ui.get_progress_percent(); if (progress) { @@ -800,6 +801,7 @@ void MarlinUI::draw_status_message(const bool blink) { } } #endif + #if ENABLED(SHOW_REMAINING_TIME) void MarlinUI::drawRemain() { if (printJobOngoing()) { @@ -811,6 +813,7 @@ void MarlinUI::draw_status_message(const bool blink) { } } #endif + #if ENABLED(SHOW_INTERACTION_TIME) void MarlinUI::drawInter() { const duration_t interactt = ui.interaction_time; @@ -822,6 +825,7 @@ void MarlinUI::draw_status_message(const bool blink) { } } #endif + #if ENABLED(SHOW_ELAPSED_TIME) void MarlinUI::drawElapsed() { if (printJobOngoing()) { @@ -947,7 +951,7 @@ void MarlinUI::draw_status_screen() { #if LCD_WIDTH < 20 #if HAS_PRINT_PROGRESS - pc = 0; pr = 2; + TERN_(SHOW_PROGRESS_PERCENT, setPercentPos(0, 2)); rotate_progress(); #endif @@ -1039,7 +1043,7 @@ void MarlinUI::draw_status_screen() { #if LCD_WIDTH >= 20 #if HAS_PRINT_PROGRESS - pc = 6; pr = 2; + TERN_(SHOW_PROGRESS_PERCENT, setPercentPos(6, 2)); rotate_progress(); #else char c; @@ -1122,7 +1126,7 @@ void MarlinUI::draw_status_screen() { _draw_bed_status(blink); #elif HAS_PRINT_PROGRESS #define DREW_PRINT_PROGRESS 1 - pc = 0; pr = 2; + TERN_(SHOW_PROGRESS_PERCENT, setPercentPos(0, 2)); rotate_progress(); #endif @@ -1130,7 +1134,7 @@ void MarlinUI::draw_status_screen() { // All progress strings // #if HAS_PRINT_PROGRESS && !DREW_PRINT_PROGRESS - pc = LCD_WIDTH - 9; pr = 2; + TERN_(SHOW_PROGRESS_PERCENT, setPercentPos(LCD_WIDTH - 9, 2)); rotate_progress(); #endif #endif // LCD_INFO_SCREEN_STYLE 1 diff --git a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp index 3e173aab6c..d16693cee4 100644 --- a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp +++ b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp @@ -305,7 +305,7 @@ static void setWindow(u8g_t *u8g, u8g_dev_t *dev, uint16_t Xmin, uint16_t Ymin, for (uint16_t l = 0; l < UPSCALE0(length); l++) buffer[l + n * UPSCALE0(length)] = buffer[l]; - tftio.WriteSequence(buffer, length * sq(GRAPHICAL_TFT_UPSCALE)); + tftio.writeSequence(buffer, length * sq(GRAPHICAL_TFT_UPSCALE)); #else for (uint8_t i = GRAPHICAL_TFT_UPSCALE; i--;) u8g_WriteSequence(u8g, dev, k << 1, (uint8_t*)buffer); @@ -351,7 +351,7 @@ static void u8g_upscale_clear_lcd(u8g_t *u8g, u8g_dev_t *dev, uint16_t *buffer) setWindow(u8g, dev, 0, 0, (TFT_WIDTH) - 1, (TFT_HEIGHT) - 1); #if HAS_LCD_IO UNUSED(buffer); - tftio.WriteMultiple(TFT_MARLINBG_COLOR, (TFT_WIDTH) * (TFT_HEIGHT)); + tftio.writeMultiple(TFT_MARLINBG_COLOR, (TFT_WIDTH) * (TFT_HEIGHT)); #else memset2(buffer, TFT_MARLINBG_COLOR, (TFT_WIDTH) / 2); for (uint16_t i = 0; i < (TFT_HEIGHT) * sq(GRAPHICAL_TFT_UPSCALE); i++) @@ -381,8 +381,8 @@ uint8_t u8g_dev_tft_320x240_upscale_from_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, u } if (msgInitCount) return -1; - tftio.Init(); - tftio.InitTFT(); + tftio.init(); + tftio.initTFT(); TERN_(TOUCH_SCREEN_CALIBRATION, touch_calibration.calibration_reset()); u8g_upscale_clear_lcd(u8g, dev, buffer); return 0; @@ -425,7 +425,7 @@ uint8_t u8g_dev_tft_320x240_upscale_from_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, u for (uint16_t l = 0; l < UPSCALE0(WIDTH); l++) buffer[l + n * UPSCALE0(WIDTH)] = buffer[l]; - tftio.WriteSequence(buffer, COUNT(bufferA)); + tftio.writeSequence(buffer, COUNT(bufferA)); #else uint8_t *bufptr = (uint8_t*) buffer; for (uint8_t i = GRAPHICAL_TFT_UPSCALE; i--;) { @@ -469,19 +469,19 @@ uint8_t u8g_com_hal_tft_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_p break; case U8G_COM_MSG_WRITE_BYTE: - tftio.DataTransferBegin(DATASIZE_8BIT); + tftio.dataTransferBegin(DATASIZE_8BIT); if (isCommand) - tftio.WriteReg(arg_val); + tftio.writeReg(arg_val); else - tftio.WriteData((uint16_t)arg_val); - tftio.DataTransferEnd(); + tftio.writeData((uint16_t)arg_val); + tftio.dataTransferEnd(); break; case U8G_COM_MSG_WRITE_SEQ: - tftio.DataTransferBegin(DATASIZE_16BIT); + tftio.dataTransferBegin(DATASIZE_16BIT); for (uint8_t i = 0; i < arg_val; i += 2) - tftio.WriteData(*(uint16_t *)(((uintptr_t)arg_ptr) + i)); - tftio.DataTransferEnd(); + tftio.writeData(*(uint16_t *)(((uintptr_t)arg_ptr) + i)); + tftio.dataTransferEnd(); break; } @@ -494,9 +494,9 @@ U8G_PB_DEV(u8g_dev_tft_320x240_upscale_from_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, static void drawCross(uint16_t x, uint16_t y, uint16_t color) { tftio.set_window(x - 15, y, x + 15, y); - tftio.WriteMultiple(color, 31); + tftio.writeMultiple(color, 31); tftio.set_window(x, y - 15, x, y + 15); - tftio.WriteMultiple(color, 31); + tftio.writeMultiple(color, 31); } void MarlinUI::touch_calibration_screen() { @@ -508,7 +508,7 @@ U8G_PB_DEV(u8g_dev_tft_320x240_upscale_from_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, defer_status_screen(true); stage = touch_calibration.calibration_start(); tftio.set_window(0, 0, (TFT_WIDTH) - 1, (TFT_HEIGHT) - 1); - tftio.WriteMultiple(TFT_MARLINBG_COLOR, uint32_t(TFT_WIDTH) * (TFT_HEIGHT)); + tftio.writeMultiple(TFT_MARLINBG_COLOR, uint32_t(TFT_WIDTH) * (TFT_HEIGHT)); } else { // clear last cross diff --git a/Marlin/src/lcd/e3v2/creality/dwin.cpp b/Marlin/src/lcd/e3v2/creality/dwin.cpp index af3d1eaeb8..303807aa21 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.cpp +++ b/Marlin/src/lcd/e3v2/creality/dwin.cpp @@ -128,8 +128,8 @@ constexpr uint16_t MROWS = TROWS - 1, // Last Row Index #define DWIN_RIGHT (DWIN_WIDTH-1) // Value Init -HMI_value_t HMI_ValueStruct; -HMI_flag_t HMI_flag{0}; +hmi_value_t hmiValues; +hmi_flag_t hmiFlag{0}; millis_t dwin_heat_time = 0; @@ -194,206 +194,206 @@ static uint16_t _remain_time = 0; #define DWIN_LANGUAGE_EEPROM_ADDRESS 0x01 // Between 0x01 and 0x63 (EEPROM_OFFSET-1) // BL24CXX::check() uses 0x00 -inline bool HMI_IsChinese() { return HMI_flag.language == DWIN_CHINESE; } +inline bool hmiIsChinese() { return hmiFlag.language == DWIN_CHINESE; } -void HMI_SetLanguageCache() { - DWIN_JPG_CacheTo1(HMI_IsChinese() ? Language_Chinese : Language_English); +void hmiSetLanguageCache() { + dwinJPGCacheTo1(hmiIsChinese() ? Language_Chinese : Language_English); } -void HMI_SetLanguage() { +void hmiSetLanguage() { #if ALL(EEPROM_SETTINGS, IIC_BL24CXX_EEPROM) - BL24CXX::read(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language, sizeof(HMI_flag.language)); + BL24CXX::read(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&hmiFlag.language, sizeof(hmiFlag.language)); #endif - HMI_SetLanguageCache(); + hmiSetLanguageCache(); } -void HMI_ToggleLanguage() { - HMI_flag.language = HMI_IsChinese() ? DWIN_ENGLISH : DWIN_CHINESE; - HMI_SetLanguageCache(); +void hmiToggleLanguage() { + hmiFlag.language = hmiIsChinese() ? DWIN_ENGLISH : DWIN_CHINESE; + hmiSetLanguageCache(); #if ALL(EEPROM_SETTINGS, IIC_BL24CXX_EEPROM) - BL24CXX::write(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language, sizeof(HMI_flag.language)); + BL24CXX::write(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&hmiFlag.language, sizeof(hmiFlag.language)); #endif } typedef struct { uint16_t x, y, w, h; } icon_info_t; typedef struct { uint16_t x, y[2], w, h; } text_info_t; -void ICON_Button(const bool here, const int iconid, const icon_info_t &ico, const text_info_t (&txt)[2]) { - const bool cn = HMI_IsChinese(); - DWIN_ICON_Show(ICON, iconid + here, ico.x, ico.y); - if (here) DWIN_Draw_Rectangle(0, Color_White, ico.x, ico.y, ico.x + ico.w - 1, ico.y + ico.h - 1); - DWIN_Frame_AreaCopy(1, txt[cn].x, txt[cn].y[here], txt[cn].x + txt[cn].w - 1, txt[cn].y[here] + txt[cn].h - 1, ico.x + (ico.w - txt[cn].w) / 2, (ico.y + ico.h - 28) - txt[cn].h/2); +void iconButton(const bool here, const int iconid, const icon_info_t &ico, const text_info_t (&txt)[2]) { + const bool cn = hmiIsChinese(); + dwinIconShow(ICON, iconid + here, ico.x, ico.y); + if (here) dwinDrawRectangle(0, Color_White, ico.x, ico.y, ico.x + ico.w - 1, ico.y + ico.h - 1); + dwinFrameAreaCopy(1, txt[cn].x, txt[cn].y[here], txt[cn].x + txt[cn].w - 1, txt[cn].y[here] + txt[cn].h - 1, ico.x + (ico.w - txt[cn].w) / 2, (ico.y + ico.h - 28) - txt[cn].h/2); } // // Main Menu: "Print" // -void ICON_Print() { +void iconPrint() { constexpr icon_info_t ico = { 17, 110, 110, 100 }; constexpr text_info_t txt[2] = { { 1, { 417, 449 }, 30, 14 }, { 1, { 405, 447 }, 27, 15 } }; - ICON_Button(select_page.now == PAGE_PRINT, ICON_Print_0, ico, txt); + iconButton(select_page.now == PAGE_PRINT, ICON_Print_0, ico, txt); } // // Main Menu: "Prepare" // -void ICON_Prepare() { +void iconPrepare() { constexpr icon_info_t ico = { 145, 110, 110, 100 }; constexpr text_info_t txt[2] = { { 33, { 417, 449 }, 51, 14 }, { 31, { 405, 447 }, 27, 15 } }; - ICON_Button(select_page.now == PAGE_PREPARE, ICON_Prepare_0, ico, txt); + iconButton(select_page.now == PAGE_PREPARE, ICON_Prepare_0, ico, txt); } // // Main Menu: "Control" // -void ICON_Control() { +void iconControl() { constexpr icon_info_t ico = { 17, 226, 110, 100 }; constexpr text_info_t txt[2] = { { 85, { 417, 449 }, 46, 14 }, { 61, { 405, 447 }, 27, 15 } }; - ICON_Button(select_page.now == PAGE_CONTROL, ICON_Control_0, ico, txt); + iconButton(select_page.now == PAGE_CONTROL, ICON_Control_0, ico, txt); } // // Main Menu: "Info" // -void ICON_StartInfo() { +void iconStartInfo() { constexpr icon_info_t ico = { 145, 226, 110, 100 }; constexpr text_info_t txt[2] = { { 133, { 417, 449 }, 23, 14 }, { 91, { 405, 447 }, 27, 15 } }; - ICON_Button(select_page.now == PAGE_INFO_LEVELING, ICON_Info_0, ico, txt); + iconButton(select_page.now == PAGE_INFO_LEVELING, ICON_Info_0, ico, txt); } // // Main Menu: "Level" // -void ICON_Leveling() { +void iconLeveling() { constexpr icon_info_t ico = { 145, 226, 110, 100 }; constexpr text_info_t txt[2] = { { 88, { 433, 464 }, 36, 14 }, { 211, { 405, 447 }, 27, 15 } }; - ICON_Button(select_page.now == PAGE_INFO_LEVELING, ICON_Leveling_0, ico, txt); + iconButton(select_page.now == PAGE_INFO_LEVELING, ICON_Leveling_0, ico, txt); } // // Printing: "Tune" // -void ICON_Tune() { +void iconTune() { constexpr icon_info_t ico = { 8, 232, 80, 100 }; constexpr text_info_t txt[2] = { { 0, { 433, 464 }, 32, 14 }, { 121, { 405, 447 }, 27, 15 } }; - ICON_Button(select_print.now == PRINT_SETUP, ICON_Setup_0, ico, txt); + iconButton(select_print.now == PRINT_SETUP, ICON_Setup_0, ico, txt); } // // Printing: "Pause" // -void ICON_Pause() { +void iconPause() { constexpr icon_info_t ico = { 96, 232, 80, 100 }; constexpr text_info_t txt[2] = { { 157, { 417, 449 }, 39, 14 }, { 181, { 405, 447 }, 27, 15 } }; - ICON_Button(select_print.now == PRINT_PAUSE_RESUME, ICON_Pause_0, ico, txt); + iconButton(select_print.now == PRINT_PAUSE_RESUME, ICON_Pause_0, ico, txt); } // // Printing: "Resume" // -void ICON_Resume() { +void iconResume() { constexpr icon_info_t ico = { 96, 232, 80, 100 }; constexpr text_info_t txt[2] = { { 33, { 433, 464 }, 53, 14 }, { 1, { 405, 447 }, 27, 15 } }; - ICON_Button(select_print.now == PRINT_PAUSE_RESUME, ICON_Continue_0, ico, txt); + iconButton(select_print.now == PRINT_PAUSE_RESUME, ICON_Continue_0, ico, txt); } -void ICON_ResumeOrPause() { - if (printingIsPaused() || HMI_flag.pause_flag || HMI_flag.pause_action) - ICON_Resume(); +void iconResumeOrPause() { + if (printingIsPaused() || hmiFlag.pause_flag || hmiFlag.pause_action) + iconResume(); else - ICON_Pause(); + iconPause(); } // // Printing: "Stop" // -void ICON_Stop() { +void iconStop() { constexpr icon_info_t ico = { 184, 232, 80, 100 }; constexpr text_info_t txt[2] = { { 196, { 417, 449 }, 29, 14 }, { 151, { 405, 447 }, 27, 12 } }; - ICON_Button(select_print.now == PRINT_STOP, ICON_Stop_0, ico, txt); + iconButton(select_print.now == PRINT_STOP, ICON_Stop_0, ico, txt); } -inline void Clear_Title_Bar() { - DWIN_Draw_Box(1, Color_Bg_Blue, 0, 0, DWIN_WIDTH, TITLE_HEIGHT); +inline void clearTitleBar() { + dwinDrawBox(1, Color_Bg_Blue, 0, 0, DWIN_WIDTH, TITLE_HEIGHT); } -void Draw_Title(FSTR_P ftitle) { - DWIN_Draw_String(false, DWIN_FONT_HEAD, Color_White, Color_Bg_Blue, 14, 4, ftitle); +void drawTitle(FSTR_P ftitle) { + dwinDrawString(false, DWIN_FONT_HEAD, Color_White, Color_Bg_Blue, 14, 4, ftitle); } -inline void Clear_Menu_Area() { - DWIN_Draw_Box(1, Color_Bg_Black, 0, TITLE_HEIGHT, DWIN_WIDTH, STATUS_Y - TITLE_HEIGHT); +inline void clearMenuArea() { + dwinDrawBox(1, Color_Bg_Black, 0, TITLE_HEIGHT, DWIN_WIDTH, STATUS_Y - TITLE_HEIGHT); } -void Clear_Main_Window() { - Clear_Title_Bar(); - Clear_Menu_Area(); +void clearMainWindow() { + clearTitleBar(); + clearMenuArea(); } -void Clear_Popup_Area() { - Clear_Title_Bar(); - DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, 31, DWIN_WIDTH, DWIN_HEIGHT); +void clearPopupArea() { + clearTitleBar(); + dwinDrawRectangle(1, Color_Bg_Black, 0, 31, DWIN_WIDTH, DWIN_HEIGHT); } -void Draw_Popup_Bkgd_105() { - DWIN_Draw_Rectangle(1, Color_Bg_Window, 14, 105, 258, 374); +void drawPopupBkgd105() { + dwinDrawRectangle(1, Color_Bg_Window, 14, 105, 258, 374); } -void Draw_More_Icon(const uint8_t line) { - DWIN_ICON_Show(ICON, ICON_More, 226, MBASE(line) - 3); +void drawMoreIcon(const uint8_t line) { + dwinIconShow(ICON, ICON_More, 226, MBASE(line) - 3); } -void Draw_Menu_Cursor(const uint8_t line) { - //DWIN_ICON_Show(ICON, ICON_Rectangle, 0, MBASE(line) - 18); - DWIN_Draw_Rectangle(1, Rectangle_Color, 0, MBASE(line) - 18, 14, MBASE(line + 1) - 20); +void drawMenuCursor(const uint8_t line) { + //dwinIconShow(ICON, ICON_Rectangle, 0, MBASE(line) - 18); + dwinDrawRectangle(1, Rectangle_Color, 0, MBASE(line) - 18, 14, MBASE(line + 1) - 20); } -void Erase_Menu_Cursor(const uint8_t line) { - DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, MBASE(line) - 18, 14, MBASE(line + 1) - 20); +void eraseMenuCursor(const uint8_t line) { + dwinDrawRectangle(1, Color_Bg_Black, 0, MBASE(line) - 18, 14, MBASE(line + 1) - 20); } -void Move_Highlight(const int16_t from, const uint16_t newline) { - Erase_Menu_Cursor(newline - from); - Draw_Menu_Cursor(newline); +void moveHighlight(const int16_t from, const uint16_t newline) { + eraseMenuCursor(newline - from); + drawMenuCursor(newline); } -void Add_Menu_Line() { - Move_Highlight(1, MROWS); - DWIN_Draw_Line(Line_Color, 16, MBASE(MROWS + 1) - 20, 256, MBASE(MROWS + 1) - 19); +void addMenuLine() { + moveHighlight(1, MROWS); + dwinDrawLine(Line_Color, 16, MBASE(MROWS + 1) - 20, 256, MBASE(MROWS + 1) - 19); } -void Scroll_Menu(const uint8_t dir) { - DWIN_Frame_AreaMove(1, dir, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); +void scrollMenu(const uint8_t dir) { + dwinFrameAreaMove(1, dir, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); switch (dir) { - case DWIN_SCROLL_DOWN: Move_Highlight(-1, 0); break; - case DWIN_SCROLL_UP: Add_Menu_Line(); break; + case DWIN_SCROLL_DOWN: moveHighlight(-1, 0); break; + case DWIN_SCROLL_UP: addMenuLine(); break; } } @@ -401,61 +401,61 @@ inline uint16_t nr_sd_menu_items() { return card.get_num_items() + !card.flag.workDirIsRoot; } -void Erase_Menu_Text(const uint8_t line) { - DWIN_Draw_Rectangle(1, Color_Bg_Black, LBLX, MBASE(line) - 14, 271, MBASE(line) + 28); +void eraseMenuText(const uint8_t line) { + dwinDrawRectangle(1, Color_Bg_Black, LBLX, MBASE(line) - 14, 271, MBASE(line) + 28); } -void Draw_Menu_Icon(const uint8_t line, const uint8_t icon) { - DWIN_ICON_Show(ICON, icon, 26, MBASE(line) - 3); +void drawMenuIcon(const uint8_t line, const uint8_t icon) { + dwinIconShow(ICON, icon, 26, MBASE(line) - 3); } -void _Decorate_Menu_Item(const uint8_t line, const uint8_t icon, bool more) { - if (icon) Draw_Menu_Icon(line, icon); - if (more) Draw_More_Icon(line); +void _decorateMenuItem(const uint8_t line, const uint8_t icon, bool more) { + if (icon) drawMenuIcon(line, icon); + if (more) drawMoreIcon(line); } -void Draw_Menu_Item(const uint8_t line, const uint8_t icon=0, const char * const label=nullptr, bool more=false) { - if (label) DWIN_Draw_String(false, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(line) - 1, (char*)label); - _Decorate_Menu_Item(line, icon, more); +void drawMenuItem(const uint8_t line, const uint8_t icon=0, const char * const label=nullptr, bool more=false) { + if (label) dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(line) - 1, (char*)label); + _decorateMenuItem(line, icon, more); } -void Draw_Menu_Item(const uint8_t line, const uint8_t icon=0, FSTR_P const flabel=nullptr, bool more=false) { - if (flabel) DWIN_Draw_String(false, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(line) - 1, flabel); - _Decorate_Menu_Item(line, icon, more); +void drawMenuItem(const uint8_t line, const uint8_t icon=0, FSTR_P const flabel=nullptr, bool more=false) { + if (flabel) dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(line) - 1, flabel); + _decorateMenuItem(line, icon, more); } -void Draw_Menu_Line(const uint8_t line, const uint8_t icon=0, const char * const label=nullptr, bool more=false) { - Draw_Menu_Item(line, icon, label, more); - DWIN_Draw_Line(Line_Color, 16, MBASE(line) + 33, 256, MBASE(line) + 34); +void drawMenuLine(const uint8_t line, const uint8_t icon=0, const char * const label=nullptr, bool more=false) { + drawMenuItem(line, icon, label, more); + dwinDrawLine(Line_Color, 16, MBASE(line) + 33, 256, MBASE(line) + 34); } -void Draw_Menu_Line(const uint8_t line, const uint8_t icon, FSTR_P const flabel, bool more=false) { - Draw_Menu_Item(line, icon, flabel, more); - DWIN_Draw_Line(Line_Color, 16, MBASE(line) + 33, 256, MBASE(line) + 34); +void drawMenuLine(const uint8_t line, const uint8_t icon, FSTR_P const flabel, bool more=false) { + drawMenuItem(line, icon, flabel, more); + dwinDrawLine(Line_Color, 16, MBASE(line) + 33, 256, MBASE(line) + 34); } -void Draw_Checkbox_Line(const uint8_t line, const bool ison) { +void drawCheckboxLine(const uint8_t line, const bool ison) { const uint16_t x = 225, y = EBASE(line) - 2; - DWIN_Draw_String(true, font8x16, Color_White, Color_Bg_Black, x + 5, y, ison ? F("X") : F(" ")); - DWIN_Draw_Rectangle(0, Color_White, x + 2, y + 2, x + 16, y + 16); + dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, x + 5, y, ison ? F("X") : F(" ")); + dwinDrawRectangle(0, Color_White, x + 2, y + 2, x + 16, y + 16); } // AreaCopy for a Menu Item -void Item_AreaCopy(const uint16_t x1, const uint16_t y1, const uint16_t x2, const uint16_t y2, const uint8_t row=0, const uint16_t inset=0, const uint16_t yadd=0) { - DWIN_Frame_AreaCopy(1, x1, y1, x2, y2, LBLX + inset, MBASE(row) + yadd); +void itemAreaCopy(const uint16_t x1, const uint16_t y1, const uint16_t x2, const uint16_t y2, const uint8_t row=0, const uint16_t inset=0, const uint16_t yadd=0) { + dwinFrameAreaCopy(1, x1, y1, x2, y2, LBLX + inset, MBASE(row) + yadd); } // AreaCopy for a Screen Title -void DWIN_Frame_TitleCopy(const uint16_t x1, const uint16_t y1, const uint16_t w, const uint16_t h) { - DWIN_Frame_AreaCopy(1, x1, y1, x1 + w - 1, y1 + h - 1, (DWIN_WIDTH - w) / 2, (TITLE_HEIGHT - h) / 2); +void dwinFrameTitleCopy(const uint16_t x1, const uint16_t y1, const uint16_t w, const uint16_t h) { + dwinFrameAreaCopy(1, x1, y1, x1 + w - 1, y1 + h - 1, (DWIN_WIDTH - w) / 2, (TITLE_HEIGHT - h) / 2); } // Draw "Back" line at the top -void Draw_Back_First(const bool is_sel=true) { - Draw_Menu_Line(0, ICON_Back); - if (HMI_IsChinese()) - Item_AreaCopy(129, 72, 156, 84); +void drawBackFirst(const bool is_sel=true) { + drawMenuLine(0, ICON_Back); + if (hmiIsChinese()) + itemAreaCopy(129, 72, 156, 84); else - Item_AreaCopy(223, 179, 254, 189); - if (is_sel) Draw_Menu_Cursor(0); + itemAreaCopy(223, 179, 254, 189); + if (is_sel) drawMenuCursor(0); } // @@ -520,323 +520,323 @@ void Draw_Back_First(const bool is_sel=true) { // void say_move_en(const uint8_t row) { - Item_AreaCopy( 69, 61, 102, 71, row); // "Move" + itemAreaCopy( 69, 61, 102, 71, row); // "Move" } void say_max_en(const uint8_t row) { - Item_AreaCopy( 75, 119, 100, 129, row); // "Max" + itemAreaCopy( 75, 119, 100, 129, row); // "Max" } void say_jerk_en(const uint8_t row) { - Item_AreaCopy(104, 119, 128, 129, row, 30); // "Jerk" + itemAreaCopy(104, 119, 128, 129, row, 30); // "Jerk" } void say_speed_en(const uint16_t inset, const uint8_t row) { - Item_AreaCopy(133, 119, 172, 132, row, inset); // "Speed" + itemAreaCopy(133, 119, 172, 132, row, inset); // "Speed" } void say_max_accel_en(const uint8_t row) { say_max_en(row); // "Max" - Item_AreaCopy( 0, 135, 79, 145, row, 30); // "Acceleration" + itemAreaCopy( 0, 135, 79, 145, row, 30); // "Acceleration" } void say_max_jerk_speed_en(const uint8_t row) { - Item_AreaCopy( 75, 119, 172, 132, row); // "Max Jerk Speed" + itemAreaCopy( 75, 119, 172, 132, row); // "Max Jerk Speed" } void say_x_en(const uint16_t inset, const uint8_t row) { - Item_AreaCopy(175, 119, 184, 129, row, inset); // "X" + itemAreaCopy(175, 119, 184, 129, row, inset); // "X" } void say_y_en(const uint16_t inset, const uint8_t row) { - Item_AreaCopy(184, 119, 192, 129, row, inset); // "Y" + itemAreaCopy(184, 119, 192, 129, row, inset); // "Y" } void say_z_en(const uint16_t inset, const uint8_t row) { - Item_AreaCopy(193, 119, 201, 129, row, inset); // "Z" + itemAreaCopy(193, 119, 201, 129, row, inset); // "Z" } void say_e_en(const uint16_t inset, const uint8_t row) { - Item_AreaCopy(201, 119, 209, 129, row, inset); // "E" + itemAreaCopy(201, 119, 209, 129, row, inset); // "E" } void say_pla_en(const uint16_t inset, const uint8_t row) { - Item_AreaCopy(131, 164, 153, 174, row, inset); // "PLA" + itemAreaCopy(131, 164, 153, 174, row, inset); // "PLA" } void say_abs_en(const uint16_t inset, const uint8_t row) { - Item_AreaCopy(157, 76, 181, 86, row, inset); // "ABS" + itemAreaCopy(157, 76, 181, 86, row, inset); // "ABS" } void say_home_offs_en(const uint8_t row) { - Item_AreaCopy(153, 193, 225, 203, row); // "Home Offset" + itemAreaCopy(153, 193, 225, 203, row); // "Home Offset" } void say_probe_offs_en(const uint8_t row) { - Item_AreaCopy(153, 205, 225, 215, row); // "Probe Offset" + itemAreaCopy(153, 205, 225, 215, row); // "Probe Offset" } void say_steps_per_mm_en(const uint8_t row) { - Item_AreaCopy( 1, 151, 91, 161, row); // "Steps-per-mm" + itemAreaCopy( 1, 151, 91, 161, row); // "Steps-per-mm" } -void DWIN_Draw_Label(const uint8_t row, char *string) { - DWIN_Draw_String(true, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(row), string); +void dwinDrawLabel(const uint8_t row, char *string) { + dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(row), string); } -void DWIN_Draw_Label(const uint8_t row, FSTR_P title) { - DWIN_Draw_Label(row, (char*)title); +void dwinDrawLabel(const uint8_t row, FSTR_P title) { + dwinDrawLabel(row, (char*)title); } -void DWIN_Draw_Signed_Float(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, int32_t value) { - DWIN_Draw_String(true, size, Color_White, bColor, x - 8, y, value < 0 ? F("-") : F(" ")); - DWIN_Draw_FloatValue(true, true, 0, size, Color_White, bColor, iNum, fNum, x, y, value < 0 ? -value : value); +void dwinDrawSigned_Float(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, int32_t value) { + dwinDrawString(true, size, Color_White, bColor, x - 8, y, value < 0 ? F("-") : F(" ")); + dwinDrawFloatValue(true, true, 0, size, Color_White, bColor, iNum, fNum, x, y, value < 0 ? -value : value); } -void Draw_Edit_Integer3(const uint8_t row, const uint16_t value, const bool active=false) { - DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, active ? Select_Color : Color_Bg_Black, 3, 220, EBASE(row), value); +void drawEditInteger3(const uint8_t row, const uint16_t value, const bool active=false) { + dwinDrawIntValue(true, true, 0, font8x16, Color_White, active ? Select_Color : Color_Bg_Black, 3, 220, EBASE(row), value); } -void Draw_Edit_Integer4(const uint8_t row, const uint16_t value, const bool active=false) { - DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, active ? Select_Color : Color_Bg_Black, 4, 220 - 1 * 8, EBASE(row), value); +void drawEditInteger4(const uint8_t row, const uint16_t value, const bool active=false) { + dwinDrawIntValue(true, true, 0, font8x16, Color_White, active ? Select_Color : Color_Bg_Black, 4, 220 - 1 * 8, EBASE(row), value); } -void Draw_Edit_Float3(const uint8_t row, const uint16_t value, const bool active=false) { - DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, active ? Select_Color : Color_Bg_Black, 3, UNITFDIGITS, 220 - UNITFDIGITS * 8, EBASE(row), (int32_t)value); +void drawEditFloat3(const uint8_t row, const uint16_t value, const bool active=false) { + dwinDrawFloatValue(true, true, 0, font8x16, Color_White, active ? Select_Color : Color_Bg_Black, 3, UNITFDIGITS, 220 - UNITFDIGITS * 8, EBASE(row), (int32_t)value); } -void Draw_Edit_Signed_Float2(const uint8_t row, const float value, const bool active=false) { - DWIN_Draw_Signed_Float(font8x16, active ? Select_Color : Color_Bg_Black, 2, UNITFDIGITS + 1, 220 + 8 - UNITFDIGITS * 8, EBASE(row), value); +void drawEditSignedFloat2(const uint8_t row, const float value, const bool active=false) { + dwinDrawSigned_Float(font8x16, active ? Select_Color : Color_Bg_Black, 2, UNITFDIGITS + 1, 220 + 8 - UNITFDIGITS * 8, EBASE(row), value); } -void Draw_Edit_Signed_Float3(const uint8_t row, const float value, const bool active=false) { - DWIN_Draw_Signed_Float(font8x16, active ? Select_Color : Color_Bg_Black, 3, UNITFDIGITS, 220 - UNITFDIGITS * 8, EBASE(row), value); +void drawEditSignedFloat3(const uint8_t row, const float value, const bool active=false) { + dwinDrawSigned_Float(font8x16, active ? Select_Color : Color_Bg_Black, 3, UNITFDIGITS, 220 - UNITFDIGITS * 8, EBASE(row), value); } -void Draw_Stat_Int(const uint16_t xpos, const uint16_t ypos, const uint16_t value) { - DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 3, xpos, ypos, value); +void drawStatInt(const uint16_t xpos, const uint16_t ypos, const uint16_t value) { + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 3, xpos, ypos, value); } -void Draw_Stat_Float(const uint16_t xpos, const uint16_t ypos, const float value) { - DWIN_Draw_FloatValue(true, true, 0, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 2, 2, xpos, ypos, value); +void drawStatFloat(const uint16_t xpos, const uint16_t ypos, const float value) { + dwinDrawFloatValue(true, true, 0, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 2, 2, xpos, ypos, value); } // // Prepare Menu // -void Item_Prepare_Move(const uint8_t row) { - if (HMI_IsChinese()) - Item_AreaCopy(159, 70, 200, 84, row); +void itemPrepareMove(const uint8_t row) { + if (hmiIsChinese()) + itemAreaCopy(159, 70, 200, 84, row); else say_move_en(row); // "Move" - Draw_Menu_Line(row, ICON_Axis); - Draw_More_Icon(row); + drawMenuLine(row, ICON_Axis); + drawMoreIcon(row); } -void Item_Prepare_Disable(const uint8_t row) { - if (HMI_IsChinese()) - Item_AreaCopy(204, 70, 259, 82, row); +void itemPrepareDisable(const uint8_t row) { + if (hmiIsChinese()) + itemAreaCopy(204, 70, 259, 82, row); else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, GET_TEXT_F(MSG_DISABLE_STEPPERS)); + dwinDrawLabel(row, GET_TEXT_F(MSG_DISABLE_STEPPERS)); #else - Item_AreaCopy(104, 61, 191, 74, row); // "Disable Stepper" + itemAreaCopy(104, 61, 191, 74, row); // "Disable Stepper" #endif } - Draw_Menu_Line(row, ICON_CloseMotor); + drawMenuLine(row, ICON_CloseMotor); } -void Item_Prepare_Home(const uint8_t row) { - if (HMI_IsChinese()) - Item_AreaCopy(0, 89, 41, 101, row); +void itemPrepareHome(const uint8_t row) { + if (hmiIsChinese()) + itemAreaCopy(0, 89, 41, 101, row); else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, GET_TEXT_F(MSG_AUTO_HOME)); + dwinDrawLabel(row, GET_TEXT_F(MSG_AUTO_HOME)); #else - Item_AreaCopy(202, 61, 271, 71, row); // "Auto Home" + itemAreaCopy(202, 61, 271, 71, row); // "Auto Home" #endif } - Draw_Menu_Line(row, ICON_Homing); + drawMenuLine(row, ICON_Homing); } #if HAS_ZOFFSET_ITEM - void Item_Prepare_Offset(const uint8_t row) { - if (HMI_IsChinese()) { + void itemPrepareOffset(const uint8_t row) { + if (hmiIsChinese()) { #if HAS_BED_PROBE - Item_AreaCopy(174, 164, 223, 177, row); + itemAreaCopy(174, 164, 223, 177, row); #else - Item_AreaCopy(43, 89, 98, 101, row); + itemAreaCopy(43, 89, 98, 101, row); #endif } else { #if HAS_BED_PROBE #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, GET_TEXT_F(MSG_ZPROBE_ZOFFSET)); + dwinDrawLabel(row, GET_TEXT_F(MSG_ZPROBE_ZOFFSET)); #else - Item_AreaCopy( 94, 179, 143, 190, row); // "Z-Offset" + itemAreaCopy( 94, 179, 143, 190, row); // "Z-Offset" #endif #else #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, GET_TEXT_F(MSG_SET_HOME_OFFSETS)); + dwinDrawLabel(row, GET_TEXT_F(MSG_SET_HOME_OFFSETS)); #else - Item_AreaCopy( 1, 76, 103, 87, row); // "Set home offsets" + itemAreaCopy( 1, 76, 103, 87, row); // "Set home offsets" #endif #endif } - Draw_Edit_Signed_Float2(row, BABY_Z_VAR * 100); - Draw_Menu_Line(row, ICON_SetHome); + drawEditSignedFloat2(row, BABY_Z_VAR * 100); + drawMenuLine(row, ICON_SetHome); } #endif #if HAS_PREHEAT - void Item_Prepare_PLA(const uint8_t row) { - if (HMI_IsChinese()) - Item_AreaCopy(100, 89, 151, 101, row); + void itemPrepare_PLA(const uint8_t row) { + if (hmiIsChinese()) + itemAreaCopy(100, 89, 151, 101, row); else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, GET_TEXT_F(MSG_PREHEAT_1)); + dwinDrawLabel(row, GET_TEXT_F(MSG_PREHEAT_1)); #else - Item_AreaCopy(108, 76, 155, 87, row); // "Preheat" + itemAreaCopy(108, 76, 155, 87, row); // "Preheat" say_pla_en(52, row); // "PLA" #endif } - Draw_Menu_Line(row, ICON_PLAPreheat); + drawMenuLine(row, ICON_PLAPreheat); } #if PREHEAT_COUNT > 1 - void Item_Prepare_ABS(const uint8_t row) { - if (HMI_IsChinese()) - Item_AreaCopy(180, 89, 233, 100, row); + void itemPrepare_ABS(const uint8_t row) { + if (hmiIsChinese()) + itemAreaCopy(180, 89, 233, 100, row); else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, F("Preheat " PREHEAT_2_LABEL)); + dwinDrawLabel(row, F("Preheat " PREHEAT_2_LABEL)); #else - Item_AreaCopy(108, 76, 155, 87, row); // "Preheat" + itemAreaCopy(108, 76, 155, 87, row); // "Preheat" say_abs_en(52, row); // "ABS" #endif } - Draw_Menu_Line(row, ICON_ABSPreheat); + drawMenuLine(row, ICON_ABSPreheat); } #endif - void Item_Prepare_Cool(const uint8_t row) { - if (HMI_IsChinese()) - Item_AreaCopy(1, 104, 56, 117, row); + void itemPrepareCool(const uint8_t row) { + if (hmiIsChinese()) + itemAreaCopy(1, 104, 56, 117, row); else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, GET_TEXT_F(MSG_COOLDOWN)); + dwinDrawLabel(row, GET_TEXT_F(MSG_COOLDOWN)); #else - Item_AreaCopy(200, 76, 264, 86, row); // "Cooldown" + itemAreaCopy(200, 76, 264, 86, row); // "Cooldown" #endif } - Draw_Menu_Line(row, ICON_Cool); + drawMenuLine(row, ICON_Cool); } #endif -void Item_Prepare_Lang(const uint8_t row) { - if (HMI_IsChinese()) - Item_AreaCopy(239, 134, 266, 146, row); +void itemPrepareLang(const uint8_t row) { + if (hmiIsChinese()) + itemAreaCopy(239, 134, 266, 146, row); else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, F("UI Language")); + dwinDrawLabel(row, F("UI Language")); #else - Item_AreaCopy(1, 194, 96, 206, row); // "LCD Language" + itemAreaCopy(1, 194, 96, 206, row); // "LCD Language" #endif } - DWIN_Draw_String(false, font8x16, Color_White, Color_Bg_Black, 226, EBASE(row), HMI_IsChinese() ? F("CN") : F("EN")); - Draw_Menu_Icon(row, ICON_Language); + dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, 226, EBASE(row), hmiIsChinese() ? F("CN") : F("EN")); + drawMenuIcon(row, ICON_Language); } #define VISI(T,L,S) (WITHIN(L, T - MROWS, MROWS) || WITHIN(S, 0, MROWS)) -void Draw_Prepare_Menu() { - Clear_Main_Window(); +void drawPrepareMenu() { + clearMainWindow(); const int16_t scroll = MROWS - index_prepare; // Scrolled-up lines #define PSCROL(L) (scroll + (L)) #define PVISI(L) VISI(PREPARE_CASE_TOTAL, L, PSCROL(L)) - if (HMI_IsChinese()) - DWIN_Frame_TitleCopy(133, 1, 28, 13); // "Prepare" + if (hmiIsChinese()) + dwinFrameTitleCopy(133, 1, 28, 13); // "Prepare" else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_PREPARE)); + drawTitle(GET_TEXT_F(MSG_PREPARE)); #else - DWIN_Frame_TitleCopy(179, 0, 48, 14); // "Prepare" + dwinFrameTitleCopy(179, 0, 48, 14); // "Prepare" #endif } - if (PVISI(0)) Draw_Back_First(select_prepare.now == CASE_BACK); // < Back - if (PVISI(PREPARE_CASE_MOVE)) Item_Prepare_Move(PSCROL(PREPARE_CASE_MOVE)); // Move > - if (PVISI(PREPARE_CASE_DISA)) Item_Prepare_Disable(PSCROL(PREPARE_CASE_DISA)); // Disable Stepper - if (PVISI(PREPARE_CASE_HOME)) Item_Prepare_Home(PSCROL(PREPARE_CASE_HOME)); // Auto Home + if (PVISI(0)) drawBackFirst(select_prepare.now == CASE_BACK); // < Back + if (PVISI(PREPARE_CASE_MOVE)) itemPrepareMove(PSCROL(PREPARE_CASE_MOVE)); // Move > + if (PVISI(PREPARE_CASE_DISA)) itemPrepareDisable(PSCROL(PREPARE_CASE_DISA)); // Disable Stepper + if (PVISI(PREPARE_CASE_HOME)) itemPrepareHome(PSCROL(PREPARE_CASE_HOME)); // Auto Home #if HAS_ZOFFSET_ITEM - if (PVISI(PREPARE_CASE_ZOFF)) Item_Prepare_Offset(PSCROL(PREPARE_CASE_ZOFF)); // Edit Z-Offset / Babystep / Set Home Offset + if (PVISI(PREPARE_CASE_ZOFF)) itemPrepareOffset(PSCROL(PREPARE_CASE_ZOFF)); // Edit Z-Offset / Babystep / Set Home Offset #endif #if HAS_PREHEAT - if (PVISI(PREPARE_CASE_PLA)) Item_Prepare_PLA(PSCROL(PREPARE_CASE_PLA)); // Preheat PLA + if (PVISI(PREPARE_CASE_PLA)) itemPrepare_PLA(PSCROL(PREPARE_CASE_PLA)); // Preheat PLA #if PREHEAT_COUNT > 1 - if (PVISI(PREPARE_CASE_ABS)) Item_Prepare_ABS(PSCROL(PREPARE_CASE_ABS)); // Preheat ABS + if (PVISI(PREPARE_CASE_ABS)) itemPrepare_ABS(PSCROL(PREPARE_CASE_ABS)); // Preheat ABS #endif #endif #if HAS_HOTEND || HAS_HEATED_BED - if (PVISI(PREPARE_CASE_COOL)) Item_Prepare_Cool(PSCROL(PREPARE_CASE_COOL)); // Cooldown + if (PVISI(PREPARE_CASE_COOL)) itemPrepareCool(PSCROL(PREPARE_CASE_COOL)); // Cooldown #endif - if (PVISI(PREPARE_CASE_LANG)) Item_Prepare_Lang(PSCROL(PREPARE_CASE_LANG)); // Language CN/EN + if (PVISI(PREPARE_CASE_LANG)) itemPrepareLang(PSCROL(PREPARE_CASE_LANG)); // Language CN/EN - if (select_prepare.now != CASE_BACK) Draw_Menu_Cursor(PSCROL(select_prepare.now)); + if (select_prepare.now != CASE_BACK) drawMenuCursor(PSCROL(select_prepare.now)); } // // Control Menu // -void Item_Control_Temp(const uint16_t row) { - if (HMI_IsChinese()) - Item_AreaCopy(57, 104, 84, 116, row); +void itemControlTemp(const uint16_t row) { + if (hmiIsChinese()) + itemAreaCopy(57, 104, 84, 116, row); else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, GET_TEXT_F(MSG_TEMPERATURE)); + dwinDrawLabel(row, GET_TEXT_F(MSG_TEMPERATURE)); #else - Item_AreaCopy(1, 89, 83, 101, row); + itemAreaCopy(1, 89, 83, 101, row); #endif } - Draw_Menu_Line(row, ICON_Temperature); - Draw_More_Icon(row); + drawMenuLine(row, ICON_Temperature); + drawMoreIcon(row); } -void Item_Control_Motion(const uint16_t row) { - if (HMI_IsChinese()) - Item_AreaCopy(87, 104, 114, 116, row); +void itemControlMotion(const uint16_t row) { + if (hmiIsChinese()) + itemAreaCopy(87, 104, 114, 116, row); else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, GET_TEXT_F(MSG_MOTION)); + dwinDrawLabel(row, GET_TEXT_F(MSG_MOTION)); #else - Item_AreaCopy(84, 89, 128, 99, row); + itemAreaCopy(84, 89, 128, 99, row); #endif } - Draw_Menu_Line(row, ICON_Motion); - Draw_More_Icon(row); + drawMenuLine(row, ICON_Motion); + drawMoreIcon(row); } -void Item_Control_Advanced(const uint16_t row) { - if (HMI_IsChinese()) - Item_AreaCopy(62, 180, 120, 192, row); +void itemControlAdvanced(const uint16_t row) { + if (hmiIsChinese()) + itemAreaCopy(62, 180, 120, 192, row); else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, GET_TEXT_F(MSG_ADVANCED_SETTINGS)); + dwinDrawLabel(row, GET_TEXT_F(MSG_ADVANCED_SETTINGS)); #else - Item_AreaCopy(82, 135, 200, 149, row); + itemAreaCopy(82, 135, 200, 149, row); #endif } - Draw_Menu_Line(row, ICON_AdvSet); - Draw_More_Icon(row); + drawMenuLine(row, ICON_AdvSet); + drawMoreIcon(row); } -void Item_Control_Info(const uint16_t row) { - if (HMI_IsChinese()) - Item_AreaCopy(231, 104, 258, 116, row); +void itemControlInfo(const uint16_t row) { + if (hmiIsChinese()) + itemAreaCopy(231, 104, 258, 116, row); else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, GET_TEXT_F(MSG_INFO_SCREEN)); + dwinDrawLabel(row, GET_TEXT_F(MSG_INFO_SCREEN)); #else - Item_AreaCopy(0, 104, 24, 114, row); + itemAreaCopy(0, 104, 24, 114, row); #endif } - Draw_Menu_Line(row, ICON_Info); - Draw_More_Icon(row); + drawMenuLine(row, ICON_Info); + drawMoreIcon(row); } -void Draw_Control_Menu() { - Clear_Main_Window(); +void drawControlMenu() { + clearMainWindow(); #if CONTROL_CASE_TOTAL >= TROWS const int16_t scroll = MROWS - index_control; // Scrolled-up lines @@ -847,62 +847,62 @@ void Draw_Control_Menu() { #define CLINE(L) MBASE(CSCROL(L)) #define CVISI(L) VISI(CONTROL_CASE_TOTAL, L, CSCROL(L)) - if (HMI_IsChinese()) - DWIN_Frame_TitleCopy(103, 1, 28, 14); // "Control" + if (hmiIsChinese()) + dwinFrameTitleCopy(103, 1, 28, 14); // "Control" else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_CONTROL)); + drawTitle(GET_TEXT_F(MSG_CONTROL)); #else - DWIN_Frame_TitleCopy(128, 2, 49, 11); // "Control" + dwinFrameTitleCopy(128, 2, 49, 11); // "Control" #endif } - if (CVISI(0)) Draw_Back_First(select_control.now == CASE_BACK); // < Back - if (CVISI(CONTROL_CASE_TEMP)) Item_Control_Temp(CSCROL(CONTROL_CASE_TEMP)); // Temperature > - if (CVISI(CONTROL_CASE_MOVE)) Item_Control_Motion(CSCROL(CONTROL_CASE_MOVE)); // Motion > + if (CVISI(0)) drawBackFirst(select_control.now == CASE_BACK); // < Back + if (CVISI(CONTROL_CASE_TEMP)) itemControlTemp(CSCROL(CONTROL_CASE_TEMP)); // Temperature > + if (CVISI(CONTROL_CASE_MOVE)) itemControlMotion(CSCROL(CONTROL_CASE_MOVE)); // Motion > - if (HMI_IsChinese()) { + if (hmiIsChinese()) { #if ENABLED(EEPROM_SETTINGS) - Item_AreaCopy(117, 104, 172, 116, CSCROL(CONTROL_CASE_SAVE)); // "Store Configuration" - Item_AreaCopy(174, 103, 229, 116, CSCROL(CONTROL_CASE_LOAD)); // "Read Configuration" - Item_AreaCopy( 1, 118, 56, 131, CSCROL(CONTROL_CASE_RESET)); // "Reset Configuration" + itemAreaCopy(117, 104, 172, 116, CSCROL(CONTROL_CASE_SAVE)); // "Store Configuration" + itemAreaCopy(174, 103, 229, 116, CSCROL(CONTROL_CASE_LOAD)); // "Read Configuration" + itemAreaCopy( 1, 118, 56, 131, CSCROL(CONTROL_CASE_RESET)); // "Reset Configuration" #endif } else { #ifdef USE_STRING_TITLES #if ENABLED(EEPROM_SETTINGS) - if (CVISI(CONTROL_CASE_SAVE)) DWIN_Draw_Label(CSCROL(CONTROL_CASE_SAVE), GET_TEXT_F(MSG_STORE_EEPROM)); // "Store Configuration" - if (CVISI(CONTROL_CASE_LOAD)) DWIN_Draw_Label(CSCROL(CONTROL_CASE_LOAD), GET_TEXT_F(MSG_LOAD_EEPROM)); // "Read Configuration" - if (CVISI(CONTROL_CASE_RESET)) DWIN_Draw_Label(CSCROL(CONTROL_CASE_RESET), GET_TEXT_F(MSG_RESTORE_DEFAULTS)); // "Reset Configuration" + if (CVISI(CONTROL_CASE_SAVE)) dwinDrawLabel(CSCROL(CONTROL_CASE_SAVE), GET_TEXT_F(MSG_STORE_EEPROM)); // "Store Configuration" + if (CVISI(CONTROL_CASE_LOAD)) dwinDrawLabel(CSCROL(CONTROL_CASE_LOAD), GET_TEXT_F(MSG_LOAD_EEPROM)); // "Read Configuration" + if (CVISI(CONTROL_CASE_RESET)) dwinDrawLabel(CSCROL(CONTROL_CASE_RESET), GET_TEXT_F(MSG_RESTORE_DEFAULTS)); // "Reset Configuration" #endif #else #if ENABLED(EEPROM_SETTINGS) if (CVISI(CONTROL_CASE_SAVE)) - Item_AreaCopy(150, 89, 263, 102, CSCROL(CONTROL_CASE_SAVE)); // "Store Configuration" + itemAreaCopy(150, 89, 263, 102, CSCROL(CONTROL_CASE_SAVE)); // "Store Configuration" if (CVISI(CONTROL_CASE_LOAD)) { - Item_AreaCopy( 26, 104, 57, 114, CSCROL(CONTROL_CASE_LOAD)); // "Read" - Item_AreaCopy(182, 89, 263, 102, CSCROL(CONTROL_CASE_LOAD), 34); // "Configuration" + itemAreaCopy( 26, 104, 57, 114, CSCROL(CONTROL_CASE_LOAD)); // "Read" + itemAreaCopy(182, 89, 263, 102, CSCROL(CONTROL_CASE_LOAD), 34); // "Configuration" } if (CVISI(CONTROL_CASE_RESET)) { - Item_AreaCopy( 59, 104, 93, 114, CSCROL(CONTROL_CASE_RESET)); // "Reset" - Item_AreaCopy(182, 89, 263, 102, CSCROL(CONTROL_CASE_RESET), 37); // "Configuration" + itemAreaCopy( 59, 104, 93, 114, CSCROL(CONTROL_CASE_RESET)); // "Reset" + itemAreaCopy(182, 89, 263, 102, CSCROL(CONTROL_CASE_RESET), 37); // "Configuration" } #endif #endif } - if (CVISI(CONTROL_CASE_ADVSET)) Item_Control_Advanced(CSCROL(CONTROL_CASE_ADVSET)); - if (CVISI(CONTROL_CASE_INFO)) Item_Control_Info(CSCROL(CONTROL_CASE_INFO)); + if (CVISI(CONTROL_CASE_ADVSET)) itemControlAdvanced(CSCROL(CONTROL_CASE_ADVSET)); + if (CVISI(CONTROL_CASE_INFO)) itemControlInfo(CSCROL(CONTROL_CASE_INFO)); if (select_control.now != CASE_BACK && CVISI(select_control.now)) - Draw_Menu_Cursor(CSCROL(select_control.now)); + drawMenuCursor(CSCROL(select_control.now)); // Draw icons and lines #define _TEMP_ICON(N, I, M) do { \ if (CVISI(N)) { \ - Draw_Menu_Line(CSCROL(N), I); \ + drawMenuLine(CSCROL(N), I); \ if (M) { \ - Draw_More_Icon(CSCROL(N)); \ + drawMoreIcon(CSCROL(N)); \ } \ } \ } while(0) @@ -918,117 +918,117 @@ void Draw_Control_Menu() { // Tune Menu // -void Draw_Tune_Menu() { - Clear_Main_Window(); +void drawTuneMenu() { + clearMainWindow(); - if (HMI_IsChinese()) { - DWIN_Frame_TitleCopy(73, 2, 28, 12); // "Tune" - Item_AreaCopy(116, 164, 171, 176, TUNE_CASE_SPEED); + if (hmiIsChinese()) { + dwinFrameTitleCopy(73, 2, 28, 12); // "Tune" + itemAreaCopy(116, 164, 171, 176, TUNE_CASE_SPEED); #if HAS_HOTEND - Item_AreaCopy(1, 134, 56, 146, TUNE_CASE_TEMP); + itemAreaCopy(1, 134, 56, 146, TUNE_CASE_TEMP); #endif #if HAS_HEATED_BED - Item_AreaCopy(58, 134, 113, 146, TUNE_CASE_BED); + itemAreaCopy(58, 134, 113, 146, TUNE_CASE_BED); #endif #if HAS_FAN - Item_AreaCopy(115, 134, 170, 146, TUNE_CASE_FAN); + itemAreaCopy(115, 134, 170, 146, TUNE_CASE_FAN); #endif #if HAS_ZOFFSET_ITEM - Item_AreaCopy(174, 164, 223, 177, TUNE_CASE_ZOFF); + itemAreaCopy(174, 164, 223, 177, TUNE_CASE_ZOFF); #endif } else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_TUNE)); + drawTitle(GET_TEXT_F(MSG_TUNE)); #else - DWIN_Frame_TitleCopy(94, 2, 33, 11); // "Tune" + dwinFrameTitleCopy(94, 2, 33, 11); // "Tune" #endif #ifdef USE_STRING_TITLES - DWIN_Draw_Label(TUNE_CASE_SPEED, GET_TEXT_F(MSG_SPEED)); + dwinDrawLabel(TUNE_CASE_SPEED, GET_TEXT_F(MSG_SPEED)); #if HAS_HOTEND - DWIN_Draw_Label(TUNE_CASE_TEMP, GET_TEXT_F(MSG_UBL_SET_TEMP_HOTEND)); + dwinDrawLabel(TUNE_CASE_TEMP, GET_TEXT_F(MSG_UBL_SET_TEMP_HOTEND)); #endif #if HAS_HEATED_BED - DWIN_Draw_Label(TUNE_CASE_BED, GET_TEXT_F(MSG_UBL_SET_TEMP_BED)); + dwinDrawLabel(TUNE_CASE_BED, GET_TEXT_F(MSG_UBL_SET_TEMP_BED)); #endif #if HAS_FAN - DWIN_Draw_Label(TUNE_CASE_FAN, GET_TEXT_F(MSG_FAN_SPEED)); + dwinDrawLabel(TUNE_CASE_FAN, GET_TEXT_F(MSG_FAN_SPEED)); #endif - DWIN_Draw_Label(TUNE_CASE_ZOFF, GET_TEXT_F(MSG_ZPROBE_ZOFFSET)); + dwinDrawLabel(TUNE_CASE_ZOFF, GET_TEXT_F(MSG_ZPROBE_ZOFFSET)); #else - Item_AreaCopy(1, 179, 92, 190, TUNE_CASE_SPEED); // "Print speed" + itemAreaCopy(1, 179, 92, 190, TUNE_CASE_SPEED); // "Print speed" #if HAS_HOTEND - Item_AreaCopy(197, 104, 238, 114, TUNE_CASE_TEMP); // "Hotend" - Item_AreaCopy( 1, 89, 83, 101, TUNE_CASE_TEMP, 44); // "Temperature" + itemAreaCopy(197, 104, 238, 114, TUNE_CASE_TEMP); // "Hotend" + itemAreaCopy( 1, 89, 83, 101, TUNE_CASE_TEMP, 44); // "Temperature" #endif #if HAS_HEATED_BED - Item_AreaCopy(240, 104, 264, 114, TUNE_CASE_BED); // "Bed" - Item_AreaCopy( 1, 89, 83, 101, TUNE_CASE_BED, 27); // "Temperature" + itemAreaCopy(240, 104, 264, 114, TUNE_CASE_BED); // "Bed" + itemAreaCopy( 1, 89, 83, 101, TUNE_CASE_BED, 27); // "Temperature" #endif #if HAS_FAN - Item_AreaCopy(0, 119, 64, 132, TUNE_CASE_FAN); // "Fan speed" + itemAreaCopy(0, 119, 64, 132, TUNE_CASE_FAN); // "Fan speed" #endif #if HAS_ZOFFSET_ITEM - Item_AreaCopy(93, 179, 141, 189, TUNE_CASE_ZOFF); // "Z-offset" + itemAreaCopy(93, 179, 141, 189, TUNE_CASE_ZOFF); // "Z-offset" #endif #endif } - Draw_Back_First(select_tune.now == CASE_BACK); - if (select_tune.now != CASE_BACK) Draw_Menu_Cursor(select_tune.now); + drawBackFirst(select_tune.now == CASE_BACK); + if (select_tune.now != CASE_BACK) drawMenuCursor(select_tune.now); - Draw_Menu_Line(TUNE_CASE_SPEED, ICON_Speed); - Draw_Edit_Integer3(TUNE_CASE_SPEED, feedrate_percentage); + drawMenuLine(TUNE_CASE_SPEED, ICON_Speed); + drawEditInteger3(TUNE_CASE_SPEED, feedrate_percentage); #if HAS_HOTEND - Draw_Menu_Line(TUNE_CASE_TEMP, ICON_HotendTemp); - Draw_Edit_Integer3(TUNE_CASE_TEMP, thermalManager.degTargetHotend(0)); + drawMenuLine(TUNE_CASE_TEMP, ICON_HotendTemp); + drawEditInteger3(TUNE_CASE_TEMP, thermalManager.degTargetHotend(0)); #endif #if HAS_HEATED_BED - Draw_Menu_Line(TUNE_CASE_BED, ICON_BedTemp); - Draw_Edit_Integer3(TUNE_CASE_BED, thermalManager.degTargetBed()); + drawMenuLine(TUNE_CASE_BED, ICON_BedTemp); + drawEditInteger3(TUNE_CASE_BED, thermalManager.degTargetBed()); #endif #if HAS_FAN - Draw_Menu_Line(TUNE_CASE_FAN, ICON_FanSpeed); - Draw_Edit_Integer3(TUNE_CASE_FAN, thermalManager.fan_speed[0]); + drawMenuLine(TUNE_CASE_FAN, ICON_FanSpeed); + drawEditInteger3(TUNE_CASE_FAN, thermalManager.fan_speed[0]); #endif #if HAS_ZOFFSET_ITEM - Draw_Menu_Line(TUNE_CASE_ZOFF, ICON_Zoffset); - Draw_Edit_Signed_Float2(TUNE_CASE_ZOFF, BABY_Z_VAR * 100); + drawMenuLine(TUNE_CASE_ZOFF, ICON_Zoffset); + drawEditSignedFloat2(TUNE_CASE_ZOFF, BABY_Z_VAR * 100); #endif } // // Motion Menu // -void Draw_Motion_Menu() { - Clear_Main_Window(); +void drawMotionMenu() { + clearMainWindow(); - if (HMI_IsChinese()) { - DWIN_Frame_TitleCopy(1, 16, 28, 13); // "Motion" - Item_AreaCopy(173, 133, 228, 147, MOTION_CASE_RATE); // Max speed - Item_AreaCopy(173, 133, 200, 147, MOTION_CASE_ACCEL); // Max... - Item_AreaCopy(28, 149, 69, 161, MOTION_CASE_ACCEL, 30, 1); // ...Acceleration + if (hmiIsChinese()) { + dwinFrameTitleCopy(1, 16, 28, 13); // "Motion" + itemAreaCopy(173, 133, 228, 147, MOTION_CASE_RATE); // Max speed + itemAreaCopy(173, 133, 200, 147, MOTION_CASE_ACCEL); // Max... + itemAreaCopy(28, 149, 69, 161, MOTION_CASE_ACCEL, 30, 1); // ...Acceleration #if HAS_CLASSIC_JERK - Item_AreaCopy(173, 133, 200, 147, MOTION_CASE_JERK); // Max... - Item_AreaCopy(1, 180, 28, 192, MOTION_CASE_JERK, 30, 1); // ... - Item_AreaCopy(202, 133, 228, 147, MOTION_CASE_JERK, 57); // ...Jerk + itemAreaCopy(173, 133, 200, 147, MOTION_CASE_JERK); // Max... + itemAreaCopy(1, 180, 28, 192, MOTION_CASE_JERK, 30, 1); // ... + itemAreaCopy(202, 133, 228, 147, MOTION_CASE_JERK, 57); // ...Jerk #endif - Item_AreaCopy(153, 148, 194, 161, MOTION_CASE_STEPS); // Flow ratio + itemAreaCopy(153, 148, 194, 161, MOTION_CASE_STEPS); // Flow ratio } else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_MOTION)); + drawTitle(GET_TEXT_F(MSG_MOTION)); #else - DWIN_Frame_TitleCopy(144, 16, 46, 11); // "Motion" + dwinFrameTitleCopy(144, 16, 46, 11); // "Motion" #endif #ifdef USE_STRING_TITLES - DWIN_Draw_Label(MOTION_CASE_RATE, F("Feedrate")); // "Feedrate" - DWIN_Draw_Label(MOTION_CASE_ACCEL, GET_TEXT_F(MSG_ACCELERATION)); // "Acceleration" + dwinDrawLabel(MOTION_CASE_RATE, F("Feedrate")); // "Feedrate" + dwinDrawLabel(MOTION_CASE_ACCEL, GET_TEXT_F(MSG_ACCELERATION)); // "Acceleration" #if HAS_CLASSIC_JERK - DWIN_Draw_Label(MOTION_CASE_JERK, GET_TEXT_F(MSG_JERK)); // "Jerk" + dwinDrawLabel(MOTION_CASE_JERK, GET_TEXT_F(MSG_JERK)); // "Jerk" #endif - DWIN_Draw_Label(MOTION_CASE_STEPS, GET_TEXT_F(MSG_STEPS_PER_MM)); // "Steps/mm" + dwinDrawLabel(MOTION_CASE_STEPS, GET_TEXT_F(MSG_STEPS_PER_MM)); // "Steps/mm" #else say_max_en(MOTION_CASE_RATE); say_speed_en(30, MOTION_CASE_RATE); // "Max Speed" say_max_accel_en(MOTION_CASE_ACCEL); // "Max Acceleration" @@ -1039,17 +1039,17 @@ void Draw_Motion_Menu() { #endif } - Draw_Back_First(select_motion.now == CASE_BACK); - if (select_motion.now != CASE_BACK) Draw_Menu_Cursor(select_motion.now); + drawBackFirst(select_motion.now == CASE_BACK); + if (select_motion.now != CASE_BACK) drawMenuCursor(select_motion.now); uint8_t i = 0; - #define _MOTION_ICON(N) Draw_Menu_Line(++i, ICON_MaxSpeed + (N) - 1) - _MOTION_ICON(MOTION_CASE_RATE); Draw_More_Icon(i); - _MOTION_ICON(MOTION_CASE_ACCEL); Draw_More_Icon(i); + #define _MOTION_ICON(N) drawMenuLine(++i, ICON_MaxSpeed + (N) - 1) + _MOTION_ICON(MOTION_CASE_RATE); drawMoreIcon(i); + _MOTION_ICON(MOTION_CASE_ACCEL); drawMoreIcon(i); #if HAS_CLASSIC_JERK - _MOTION_ICON(MOTION_CASE_JERK); Draw_More_Icon(i); + _MOTION_ICON(MOTION_CASE_JERK); drawMoreIcon(i); #endif - _MOTION_ICON(MOTION_CASE_STEPS); Draw_More_Icon(i); + _MOTION_ICON(MOTION_CASE_STEPS); drawMoreIcon(i); } // @@ -1058,339 +1058,339 @@ void Draw_Motion_Menu() { #if HAS_HOTEND || HAS_HEATED_BED - void DWIN_Popup_Temperature(const bool toohigh) { - Clear_Popup_Area(); - Draw_Popup_Bkgd_105(); + void dwinPopupTemperature(const bool toohigh) { + clearPopupArea(); + drawPopupBkgd105(); if (toohigh) { - DWIN_ICON_Show(ICON, ICON_TempTooHigh, 102, 165); - if (HMI_IsChinese()) { - DWIN_Frame_AreaCopy(1, 103, 371, 237, 386, 52, 285); // Temp Too High - DWIN_Frame_AreaCopy(1, 151, 389, 185, 402, 187, 285); - DWIN_Frame_AreaCopy(1, 189, 389, 271, 402, 95, 310); + dwinIconShow(ICON, ICON_TempTooHigh, 102, 165); + if (hmiIsChinese()) { + dwinFrameAreaCopy(1, 103, 371, 237, 386, 52, 285); // Temp Too High + dwinFrameAreaCopy(1, 151, 389, 185, 402, 187, 285); + dwinFrameAreaCopy(1, 189, 389, 271, 402, 95, 310); } else { - DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, 36, 300, F("Nozzle or Bed temperature")); - DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, 92, 300, F("is too high")); + dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, 36, 300, F("Nozzle or Bed temperature")); + dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, 92, 300, F("is too high")); } } else { - DWIN_ICON_Show(ICON, ICON_TempTooLow, 102, 165); - if (HMI_IsChinese()) { - DWIN_Frame_AreaCopy(1, 103, 371, 270, 386, 52, 285); // Tenp Too Low - DWIN_Frame_AreaCopy(1, 189, 389, 271, 402, 95, 310); + dwinIconShow(ICON, ICON_TempTooLow, 102, 165); + if (hmiIsChinese()) { + dwinFrameAreaCopy(1, 103, 371, 270, 386, 52, 285); // Tenp Too Low + dwinFrameAreaCopy(1, 189, 389, 271, 402, 95, 310); } else { - DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, 36, 300, F("Nozzle or Bed temperature")); - DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, 92, 300, F("is too low")); + dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, 36, 300, F("Nozzle or Bed temperature")); + dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, 92, 300, F("is too low")); } } } #endif -void Draw_Popup_Bkgd_60() { - DWIN_Draw_Rectangle(1, Color_Bg_Window, 14, 60, 258, 330); +void drawPopupBkgd60() { + dwinDrawRectangle(1, Color_Bg_Window, 14, 60, 258, 330); } #if HAS_HOTEND - void Popup_Window_ETempTooLow() { - Clear_Main_Window(); - Draw_Popup_Bkgd_60(); - DWIN_ICON_Show(ICON, ICON_TempTooLow, 102, 105); - if (HMI_IsChinese()) { - DWIN_Frame_AreaCopy(1, 103, 371, 136, 386, 69, 240); // Nozzle Too Cold - DWIN_Frame_AreaCopy(1, 170, 371, 270, 386, 69 + 33, 240); - DWIN_ICON_Show(ICON, ICON_Confirm_C, 86, 280); + void popupWindowETempTooLow() { + clearMainWindow(); + drawPopupBkgd60(); + dwinIconShow(ICON, ICON_TempTooLow, 102, 105); + if (hmiIsChinese()) { + dwinFrameAreaCopy(1, 103, 371, 136, 386, 69, 240); // Nozzle Too Cold + dwinFrameAreaCopy(1, 170, 371, 270, 386, 69 + 33, 240); + dwinIconShow(ICON, ICON_Confirm_C, 86, 280); } else { - DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, 20, 235, F("Nozzle is too cold")); - DWIN_ICON_Show(ICON, ICON_Confirm_E, 86, 280); + dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, 20, 235, F("Nozzle is too cold")); + dwinIconShow(ICON, ICON_Confirm_E, 86, 280); } } #endif -void Popup_Window_Resume() { - Clear_Popup_Area(); - Draw_Popup_Bkgd_105(); - if (HMI_IsChinese()) { - DWIN_Frame_AreaCopy(1, 160, 338, 235, 354, 98, 135); // Resume Interrupted Print - DWIN_Frame_AreaCopy(1, 103, 321, 271, 335, 52, 192); - DWIN_ICON_Show(ICON, ICON_Cancel_C, 26, 307); - DWIN_ICON_Show(ICON, ICON_Continue_C, 146, 307); +void popupWindowResume() { + clearPopupArea(); + drawPopupBkgd105(); + if (hmiIsChinese()) { + dwinFrameAreaCopy(1, 160, 338, 235, 354, 98, 135); // Resume Interrupted Print + dwinFrameAreaCopy(1, 103, 321, 271, 335, 52, 192); + dwinIconShow(ICON, ICON_Cancel_C, 26, 307); + dwinIconShow(ICON, ICON_Continue_C, 146, 307); } else { - DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 14) / 2, 115, F("Continue Print")); - DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 22) / 2, 192, F("It looks like the last")); - DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 22) / 2, 212, F("file was interrupted.")); - DWIN_ICON_Show(ICON, ICON_Cancel_E, 26, 307); - DWIN_ICON_Show(ICON, ICON_Continue_E, 146, 307); + dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 14) / 2, 115, F("Continue Print")); + dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 22) / 2, 192, F("It looks like the last")); + dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 22) / 2, 212, F("file was interrupted.")); + dwinIconShow(ICON, ICON_Cancel_E, 26, 307); + dwinIconShow(ICON, ICON_Continue_E, 146, 307); } } -void Popup_Window_Home(const bool parking/*=false*/) { - Clear_Main_Window(); - Draw_Popup_Bkgd_60(); - DWIN_ICON_Show(ICON, ICON_BLTouch, 101, 105); - if (HMI_IsChinese()) { - DWIN_Frame_AreaCopy(1, 0, 371, 33, 386, 85, 240); // Wait for Move to Complete - DWIN_Frame_AreaCopy(1, 203, 286, 271, 302, 118, 240); - DWIN_Frame_AreaCopy(1, 0, 389, 150, 402, 61, 280); +void popupWindowHome(const bool parking/*=false*/) { + clearMainWindow(); + drawPopupBkgd60(); + dwinIconShow(ICON, ICON_BLTouch, 101, 105); + if (hmiIsChinese()) { + dwinFrameAreaCopy(1, 0, 371, 33, 386, 85, 240); // Wait for Move to Complete + dwinFrameAreaCopy(1, 203, 286, 271, 302, 118, 240); + dwinFrameAreaCopy(1, 0, 389, 150, 402, 61, 280); } else { - DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * (parking ? 7 : 10)) / 2, 230, parking ? F("Parking") : F("Homing XYZ")); - DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 23) / 2, 260, F("Please wait until done.")); + dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * (parking ? 7 : 10)) / 2, 230, parking ? F("Parking") : F("Homing XYZ")); + dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 23) / 2, 260, F("Please wait until done.")); } } #if HAS_ONESTEP_LEVELING - void Popup_Window_Leveling() { - Clear_Main_Window(); - Draw_Popup_Bkgd_60(); - DWIN_ICON_Show(ICON, ICON_AutoLeveling, 101, 105); - if (HMI_IsChinese()) { - DWIN_Frame_AreaCopy(1, 0, 371, 100, 386, 84, 240); // Wait for Leveling - DWIN_Frame_AreaCopy(1, 0, 389, 150, 402, 61, 280); + void popupWindowLeveling() { + clearMainWindow(); + drawPopupBkgd60(); + dwinIconShow(ICON, ICON_AutoLeveling, 101, 105); + if (hmiIsChinese()) { + dwinFrameAreaCopy(1, 0, 371, 100, 386, 84, 240); // Wait for Leveling + dwinFrameAreaCopy(1, 0, 389, 150, 402, 61, 280); } else { - DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 13) / 2, 230, GET_TEXT_F(MSG_BED_LEVELING)); - DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 23) / 2, 260, F("Please wait until done.")); + dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 13) / 2, 230, GET_TEXT_F(MSG_BED_LEVELING)); + dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 23) / 2, 260, F("Please wait until done.")); } } #endif -void Draw_Select_Highlight(const bool sel) { - HMI_flag.select_flag = sel; +void drawSelectHighlight(const bool sel) { + hmiFlag.select_flag = sel; const uint16_t c1 = sel ? Select_Color : Color_Bg_Window, c2 = sel ? Color_Bg_Window : Select_Color; - DWIN_Draw_Rectangle(0, c1, 25, 279, 126, 318); - DWIN_Draw_Rectangle(0, c1, 24, 278, 127, 319); - DWIN_Draw_Rectangle(0, c2, 145, 279, 246, 318); - DWIN_Draw_Rectangle(0, c2, 144, 278, 247, 319); + dwinDrawRectangle(0, c1, 25, 279, 126, 318); + dwinDrawRectangle(0, c1, 24, 278, 127, 319); + dwinDrawRectangle(0, c2, 145, 279, 246, 318); + dwinDrawRectangle(0, c2, 144, 278, 247, 319); } -void Popup_window_PauseOrStop() { - Clear_Main_Window(); - Draw_Popup_Bkgd_60(); - if (HMI_IsChinese()) { - if (select_print.now == PRINT_PAUSE_RESUME) DWIN_Frame_AreaCopy(1, 237, 338, 269, 356, 98, 150); // Pause - else if (select_print.now == PRINT_STOP) DWIN_Frame_AreaCopy(1, 221, 320, 253, 336, 98, 150); // Stop - DWIN_Frame_AreaCopy(1, 220, 304, 264, 319, 130, 150); // Print - DWIN_ICON_Show(ICON, ICON_Confirm_C, 26, 280); - DWIN_ICON_Show(ICON, ICON_Cancel_C, 146, 280); +void popupwindowPauseOrStop() { + clearMainWindow(); + drawPopupBkgd60(); + if (hmiIsChinese()) { + if (select_print.now == PRINT_PAUSE_RESUME) dwinFrameAreaCopy(1, 237, 338, 269, 356, 98, 150); // Pause + else if (select_print.now == PRINT_STOP) dwinFrameAreaCopy(1, 221, 320, 253, 336, 98, 150); // Stop + dwinFrameAreaCopy(1, 220, 304, 264, 319, 130, 150); // Print + dwinIconShow(ICON, ICON_Confirm_C, 26, 280); + dwinIconShow(ICON, ICON_Cancel_C, 146, 280); } else { - if (select_print.now == PRINT_PAUSE_RESUME) DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 11) / 2, 150, GET_TEXT_F(MSG_PAUSE_PRINT)); - else if (select_print.now == PRINT_STOP) DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 10) / 2, 150, GET_TEXT_F(MSG_STOP_PRINT)); - DWIN_ICON_Show(ICON, ICON_Confirm_E, 26, 280); - DWIN_ICON_Show(ICON, ICON_Cancel_E, 146, 280); + if (select_print.now == PRINT_PAUSE_RESUME) dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 11) / 2, 150, GET_TEXT_F(MSG_PAUSE_PRINT)); + else if (select_print.now == PRINT_STOP) dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 10) / 2, 150, GET_TEXT_F(MSG_STOP_PRINT)); + dwinIconShow(ICON, ICON_Confirm_E, 26, 280); + dwinIconShow(ICON, ICON_Cancel_E, 146, 280); } - Draw_Select_Highlight(true); + drawSelectHighlight(true); } -void Draw_Printing_Screen() { +void drawPrintingScreen() { const uint16_t y = 168; - if (HMI_IsChinese()) { - DWIN_Frame_TitleCopy(30, 1, 42, 14); // "Printing" - DWIN_Frame_AreaCopy(1, 0, 72, 63, 86, 43, y); // "Printing Time" - DWIN_Frame_AreaCopy(1, 65, 72, 128, 86, 178, y); // "Remain" + if (hmiIsChinese()) { + dwinFrameTitleCopy(30, 1, 42, 14); // "Printing" + dwinFrameAreaCopy(1, 0, 72, 63, 86, 43, y); // "Printing Time" + dwinFrameAreaCopy(1, 65, 72, 128, 86, 178, y); // "Remain" } else { - DWIN_Frame_TitleCopy(42, 0, 47, 14); // "Printing" - DWIN_Frame_AreaCopy(1, 1, 43, 97, 59, 43, y); // "Printing Time" - DWIN_Frame_AreaCopy(1, 100, 43, 152, 56, 178, y); // "Remain" + dwinFrameTitleCopy(42, 0, 47, 14); // "Printing" + dwinFrameAreaCopy(1, 1, 43, 97, 59, 43, y); // "Printing Time" + dwinFrameAreaCopy(1, 100, 43, 152, 56, 178, y); // "Remain" } } -void Draw_Print_ProgressBar() { +void drawPrintProgressBar() { constexpr uint16_t y = 93, h = 21; - DWIN_ICON_Show(ICON, ICON_Bar, 15, 93); - DWIN_Draw_Rectangle(1, BarFill_Color, 16 + _card_percent * 240 / 100, y, 256, y + h - 1); - DWIN_Draw_IntValue(true, true, 0, font8x16, Percent_Color, Color_Bg_Black, 2, 117, y + 40, _card_percent); - DWIN_Draw_String(false, font8x16, Percent_Color, Color_Bg_Black, 133, y + 40, F("%")); + dwinIconShow(ICON, ICON_Bar, 15, 93); + dwinDrawRectangle(1, BarFill_Color, 16 + _card_percent * 240 / 100, y, 256, y + h - 1); + dwinDrawIntValue(true, true, 0, font8x16, Percent_Color, Color_Bg_Black, 2, 117, y + 40, _card_percent); + dwinDrawString(false, font8x16, Percent_Color, Color_Bg_Black, 133, y + 40, F("%")); } -void Draw_Print_ProgressElapsed() { +void drawPrintProgressElapsed() { constexpr uint16_t x = 45, y = 192; duration_t elapsed = print_job_timer.duration(); // print timer - DWIN_Draw_IntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, x, y, elapsed.value / 3600); - DWIN_Draw_String(false, font8x16, Color_White, Color_Bg_Black, x + 8 * 2, y, F(":")); - DWIN_Draw_IntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, x + 8 * 3, y, (elapsed.value % 3600) / 60); + dwinDrawIntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, x, y, elapsed.value / 3600); + dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, x + 8 * 2, y, F(":")); + dwinDrawIntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, x + 8 * 3, y, (elapsed.value % 3600) / 60); } -void Draw_Print_ProgressRemain() { +void drawPrintProgressRemain() { constexpr uint16_t x = 179, y = 192; - DWIN_Draw_IntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, x, y, _remain_time / 3600); - DWIN_Draw_String(false, font8x16, Color_White, Color_Bg_Black, x + 8 * 2, y, F(":")); - DWIN_Draw_IntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, x + 8 * 3, y, (_remain_time % 3600) / 60); + dwinDrawIntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, x, y, _remain_time / 3600); + dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, x + 8 * 2, y, F(":")); + dwinDrawIntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, x + 8 * 3, y, (_remain_time % 3600) / 60); } -void Goto_PrintProcess() { +void gotoPrintProcess() { checkkey = PrintProcess; - Clear_Main_Window(); - Draw_Printing_Screen(); + clearMainWindow(); + drawPrintingScreen(); - ICON_Tune(); - ICON_ResumeOrPause(); - ICON_Stop(); + iconTune(); + iconResumeOrPause(); + iconStop(); // Copy into filebuf string before entry char * const name = card.longest_filename(); const int8_t npos = _MAX(0U, DWIN_WIDTH - strlen(name) * MENU_CHR_W) / 2; - DWIN_Draw_String(false, font8x16, Color_White, Color_Bg_Black, npos, 60, name); + dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, npos, 60, name); - DWIN_ICON_Show(ICON, ICON_PrintTime, 17, 163); - DWIN_ICON_Show(ICON, ICON_RemainTime, 150, 161); + dwinIconShow(ICON, ICON_PrintTime, 17, 163); + dwinIconShow(ICON, ICON_RemainTime, 150, 161); - Draw_Print_ProgressBar(); - Draw_Print_ProgressElapsed(); - Draw_Print_ProgressRemain(); + drawPrintProgressBar(); + drawPrintProgressElapsed(); + drawPrintProgressRemain(); } -void Goto_MainMenu() { +void gotoMainMenu() { checkkey = MainMenu; - Clear_Main_Window(); + clearMainWindow(); - if (HMI_IsChinese()) - DWIN_Frame_TitleCopy(2, 2, 26, 13); // "Home" etc + if (hmiIsChinese()) + dwinFrameTitleCopy(2, 2, 26, 13); // "Home" etc else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_MAIN_MENU)); + drawTitle(GET_TEXT_F(MSG_MAIN_MENU)); #else - DWIN_Frame_TitleCopy(0, 2, 40, 11); // "Home" + dwinFrameTitleCopy(0, 2, 40, 11); // "Home" #endif } - DWIN_ICON_Show(ICON, ICON_LOGO, 71, 52); + dwinIconShow(ICON, ICON_LOGO, 71, 52); - ICON_Print(); - ICON_Prepare(); - ICON_Control(); - TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); + iconPrint(); + iconPrepare(); + iconControl(); + TERN(HAS_ONESTEP_LEVELING, iconLeveling, iconStartInfo)(); } -void HMI_Plan_Move(const feedRate_t fr_mm_s) { +void hmiPlanMove(const feedRate_t fr_mm_s) { if (!planner.is_full()) { planner.synchronize(); planner.buffer_line(current_position, fr_mm_s); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } } -void HMI_Move_Done(const AxisEnum axis) { - EncoderRate.enabled = false; +void hmiMoveDone(const AxisEnum axis) { + encoderRate.enabled = false; planner.synchronize(); checkkey = AxisMove; - DWIN_UpdateLCD(); + dwinUpdateLCD(); } -void HMI_Move_X() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); +void hmiMoveX() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_X_scaled)) { - Draw_Edit_Float3(1, HMI_ValueStruct.Move_X_scaled); - return HMI_Move_Done(X_AXIS); + if (applyEncoder(encoder_diffState, hmiValues.Move_X_scaled)) { + drawEditFloat3(1, hmiValues.Move_X_scaled); + return hmiMoveDone(X_AXIS); } - LIMIT(HMI_ValueStruct.Move_X_scaled, (X_MIN_POS) * MINUNITMULT, (X_MAX_POS) * MINUNITMULT); - current_position.x = HMI_ValueStruct.Move_X_scaled / MINUNITMULT; - Draw_Edit_Float3(1, HMI_ValueStruct.Move_X_scaled, true); - DWIN_UpdateLCD(); - HMI_Plan_Move(homing_feedrate(X_AXIS)); + LIMIT(hmiValues.Move_X_scaled, (X_MIN_POS) * MINUNITMULT, (X_MAX_POS) * MINUNITMULT); + current_position.x = hmiValues.Move_X_scaled / MINUNITMULT; + drawEditFloat3(1, hmiValues.Move_X_scaled, true); + dwinUpdateLCD(); + hmiPlanMove(homing_feedrate(X_AXIS)); } -void HMI_Move_Y() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); +void hmiMoveY() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_Y_scaled)) { - Draw_Edit_Float3(2, HMI_ValueStruct.Move_Y_scaled); - return HMI_Move_Done(Y_AXIS); + if (applyEncoder(encoder_diffState, hmiValues.Move_Y_scaled)) { + drawEditFloat3(2, hmiValues.Move_Y_scaled); + return hmiMoveDone(Y_AXIS); } - LIMIT(HMI_ValueStruct.Move_Y_scaled, (Y_MIN_POS) * MINUNITMULT, (Y_MAX_POS) * MINUNITMULT); - current_position.y = HMI_ValueStruct.Move_Y_scaled / MINUNITMULT; - Draw_Edit_Float3(2, HMI_ValueStruct.Move_Y_scaled, true); - DWIN_UpdateLCD(); - HMI_Plan_Move(homing_feedrate(Y_AXIS)); + LIMIT(hmiValues.Move_Y_scaled, (Y_MIN_POS) * MINUNITMULT, (Y_MAX_POS) * MINUNITMULT); + current_position.y = hmiValues.Move_Y_scaled / MINUNITMULT; + drawEditFloat3(2, hmiValues.Move_Y_scaled, true); + dwinUpdateLCD(); + hmiPlanMove(homing_feedrate(Y_AXIS)); } -void HMI_Move_Z() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); +void hmiMoveZ() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_Z_scaled)) { - Draw_Edit_Float3(3, HMI_ValueStruct.Move_Z_scaled); - return HMI_Move_Done(Z_AXIS); + if (applyEncoder(encoder_diffState, hmiValues.Move_Z_scaled)) { + drawEditFloat3(3, hmiValues.Move_Z_scaled); + return hmiMoveDone(Z_AXIS); } - LIMIT(HMI_ValueStruct.Move_Z_scaled, (Z_MIN_POS) * MINUNITMULT, (Z_MAX_POS) * MINUNITMULT); - current_position.z = HMI_ValueStruct.Move_Z_scaled / MINUNITMULT; - Draw_Edit_Float3(3, HMI_ValueStruct.Move_Z_scaled, true); - DWIN_UpdateLCD(); - HMI_Plan_Move(homing_feedrate(Z_AXIS)); + LIMIT(hmiValues.Move_Z_scaled, (Z_MIN_POS) * MINUNITMULT, (Z_MAX_POS) * MINUNITMULT); + current_position.z = hmiValues.Move_Z_scaled / MINUNITMULT; + drawEditFloat3(3, hmiValues.Move_Z_scaled, true); + dwinUpdateLCD(); + hmiPlanMove(homing_feedrate(Z_AXIS)); } #if HAS_HOTEND - void HMI_Move_E() { + void hmiMoveE() { static float last_E_scaled = 0; - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_E_scaled)) { - last_E_scaled = HMI_ValueStruct.Move_E_scaled; - Draw_Edit_Signed_Float3(4, last_E_scaled); - return HMI_Move_Done(E_AXIS); + if (applyEncoder(encoder_diffState, hmiValues.Move_E_scaled)) { + last_E_scaled = hmiValues.Move_E_scaled; + drawEditSignedFloat3(4, last_E_scaled); + return hmiMoveDone(E_AXIS); } - LIMIT(HMI_ValueStruct.Move_E_scaled, last_E_scaled - (EXTRUDE_MAXLENGTH) * MINUNITMULT, last_E_scaled + (EXTRUDE_MAXLENGTH) * MINUNITMULT); - current_position.e = HMI_ValueStruct.Move_E_scaled / MINUNITMULT; - Draw_Edit_Signed_Float3(4, HMI_ValueStruct.Move_E_scaled, true); - DWIN_UpdateLCD(); - HMI_Plan_Move(MMM_TO_MMS(FEEDRATE_E)); + LIMIT(hmiValues.Move_E_scaled, last_E_scaled - (EXTRUDE_MAXLENGTH) * MINUNITMULT, last_E_scaled + (EXTRUDE_MAXLENGTH) * MINUNITMULT); + current_position.e = hmiValues.Move_E_scaled / MINUNITMULT; + drawEditSignedFloat3(4, hmiValues.Move_E_scaled, true); + dwinUpdateLCD(); + hmiPlanMove(MMM_TO_MMS(FEEDRATE_E)); } #endif #if HAS_ZOFFSET_ITEM - void HMI_Zoffset() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); + void hmiZoffset() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; uint8_t zoff_line; - switch (HMI_ValueStruct.show_mode) { + switch (hmiValues.show_mode) { case -4: zoff_line = PREPARE_CASE_ZOFF + MROWS - index_prepare; break; default: zoff_line = TUNE_CASE_ZOFF + MROWS - index_tune; } - if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.offset_value)) { - EncoderRate.enabled = false; + if (applyEncoder(encoder_diffState, hmiValues.offset_value)) { + encoderRate.enabled = false; #if HAS_BED_PROBE probe.offset.z = dwin_zoffset; TERN_(EEPROM_SETTINGS, settings.save()); #endif - checkkey = HMI_ValueStruct.show_mode == -4 ? Prepare : Tune; - Draw_Edit_Signed_Float2(zoff_line, TERN(HAS_BED_PROBE, BABY_Z_VAR * 100, HMI_ValueStruct.offset_value)); - DWIN_UpdateLCD(); + checkkey = hmiValues.show_mode == -4 ? Prepare : Tune; + drawEditSignedFloat2(zoff_line, TERN(HAS_BED_PROBE, BABY_Z_VAR * 100, hmiValues.offset_value)); + dwinUpdateLCD(); return; } - LIMIT(HMI_ValueStruct.offset_value, (Z_PROBE_OFFSET_RANGE_MIN) * 100, (Z_PROBE_OFFSET_RANGE_MAX) * 100); + LIMIT(hmiValues.offset_value, (Z_PROBE_OFFSET_RANGE_MIN) * 100, (Z_PROBE_OFFSET_RANGE_MAX) * 100); last_zoffset = dwin_zoffset; - dwin_zoffset = HMI_ValueStruct.offset_value / 100.0f; + dwin_zoffset = hmiValues.offset_value / 100.0f; #if ANY(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) if (BABYSTEP_ALLOWED()) babystep.add_mm(Z_AXIS, dwin_zoffset - last_zoffset); #endif - Draw_Edit_Signed_Float2(zoff_line, HMI_ValueStruct.offset_value, true); - DWIN_UpdateLCD(); + drawEditSignedFloat2(zoff_line, hmiValues.offset_value, true); + dwinUpdateLCD(); } #endif // HAS_ZOFFSET_ITEM #if HAS_HOTEND - void HMI_ETemp() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); + void hmiETemp() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; uint8_t temp_line; - switch (HMI_ValueStruct.show_mode) { + switch (hmiValues.show_mode) { case -1: temp_line = TEMP_CASE_TEMP; break; #if HAS_PREHEAT case -2: temp_line = PREHEAT_CASE_TEMP; break; @@ -1400,48 +1400,48 @@ void HMI_Move_Z() { #endif default: temp_line = TUNE_CASE_TEMP + MROWS - index_tune; } - if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.E_Temp)) { - EncoderRate.enabled = false; + if (applyEncoder(encoder_diffState, hmiValues.E_Temp)) { + encoderRate.enabled = false; #if HAS_PREHEAT - if (HMI_ValueStruct.show_mode == -2) { + if (hmiValues.show_mode == -2) { checkkey = PLAPreheat; - ui.material_preset[0].hotend_temp = HMI_ValueStruct.E_Temp; - Draw_Edit_Integer3(temp_line, ui.material_preset[0].hotend_temp); + ui.material_preset[0].hotend_temp = hmiValues.E_Temp; + drawEditInteger3(temp_line, ui.material_preset[0].hotend_temp); return; } #if PREHEAT_COUNT > 1 - if (HMI_ValueStruct.show_mode == -3) { + if (hmiValues.show_mode == -3) { checkkey = ABSPreheat; - ui.material_preset[1].hotend_temp = HMI_ValueStruct.E_Temp; - Draw_Edit_Integer3(temp_line, ui.material_preset[1].hotend_temp); + ui.material_preset[1].hotend_temp = hmiValues.E_Temp; + drawEditInteger3(temp_line, ui.material_preset[1].hotend_temp); return; } #endif #endif - if (HMI_ValueStruct.show_mode == -1) // Temperature + if (hmiValues.show_mode == -1) // Temperature checkkey = TemperatureID; else checkkey = Tune; - Draw_Edit_Integer3(temp_line, HMI_ValueStruct.E_Temp); - thermalManager.setTargetHotend(HMI_ValueStruct.E_Temp, 0); + drawEditInteger3(temp_line, hmiValues.E_Temp); + thermalManager.setTargetHotend(hmiValues.E_Temp, 0); return; } // E_Temp limit - LIMIT(HMI_ValueStruct.E_Temp, HEATER_0_MINTEMP, thermalManager.hotend_max_target(0)); + LIMIT(hmiValues.E_Temp, HEATER_0_MINTEMP, thermalManager.hotend_max_target(0)); // E_Temp value - Draw_Edit_Integer3(temp_line, HMI_ValueStruct.E_Temp, true); + drawEditInteger3(temp_line, hmiValues.E_Temp, true); } #endif // HAS_HOTEND #if HAS_HEATED_BED - void HMI_BedTemp() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); + void hmiBedTemp() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; uint8_t bed_line; - switch (HMI_ValueStruct.show_mode) { + switch (hmiValues.show_mode) { case -1: bed_line = TEMP_CASE_BED; break; #if HAS_PREHEAT case -2: bed_line = PREHEAT_CASE_BED; break; @@ -1451,171 +1451,171 @@ void HMI_Move_Z() { #endif default: bed_line = TUNE_CASE_BED + MROWS - index_tune; } - if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Bed_Temp)) { - EncoderRate.enabled = false; + if (applyEncoder(encoder_diffState, hmiValues.Bed_Temp)) { + encoderRate.enabled = false; #if HAS_PREHEAT - if (HMI_ValueStruct.show_mode == -2) { + if (hmiValues.show_mode == -2) { checkkey = PLAPreheat; - ui.material_preset[0].bed_temp = HMI_ValueStruct.Bed_Temp; - Draw_Edit_Integer3(bed_line, ui.material_preset[0].bed_temp); + ui.material_preset[0].bed_temp = hmiValues.Bed_Temp; + drawEditInteger3(bed_line, ui.material_preset[0].bed_temp); return; } #if PREHEAT_COUNT > 1 - if (HMI_ValueStruct.show_mode == -3) { + if (hmiValues.show_mode == -3) { checkkey = ABSPreheat; - ui.material_preset[1].bed_temp = HMI_ValueStruct.Bed_Temp; - Draw_Edit_Integer3(bed_line, ui.material_preset[1].bed_temp); + ui.material_preset[1].bed_temp = hmiValues.Bed_Temp; + drawEditInteger3(bed_line, ui.material_preset[1].bed_temp); return; } #endif #endif - checkkey = HMI_ValueStruct.show_mode == -1 ? TemperatureID : Tune; - Draw_Edit_Integer3(bed_line, HMI_ValueStruct.Bed_Temp); - thermalManager.setTargetBed(HMI_ValueStruct.Bed_Temp); + checkkey = hmiValues.show_mode == -1 ? TemperatureID : Tune; + drawEditInteger3(bed_line, hmiValues.Bed_Temp); + thermalManager.setTargetBed(hmiValues.Bed_Temp); return; } // Bed_Temp limit - LIMIT(HMI_ValueStruct.Bed_Temp, BED_MINTEMP, BED_MAX_TARGET); + LIMIT(hmiValues.Bed_Temp, BED_MINTEMP, BED_MAX_TARGET); // Bed_Temp value - Draw_Edit_Integer3(bed_line, HMI_ValueStruct.Bed_Temp, true); + drawEditInteger3(bed_line, hmiValues.Bed_Temp, true); } #endif // HAS_HEATED_BED #if HAS_PREHEAT && HAS_FAN - void HMI_FanSpeed() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); + void hmiFanSpeed() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; uint8_t fan_line; - switch (HMI_ValueStruct.show_mode) { + switch (hmiValues.show_mode) { case -1: fan_line = TEMP_CASE_FAN; break; case -2: fan_line = PREHEAT_CASE_FAN; break; case -3: fan_line = PREHEAT_CASE_FAN; break; default: fan_line = TUNE_CASE_FAN + MROWS - index_tune; } - if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Fan_speed)) { - EncoderRate.enabled = false; - if (HMI_ValueStruct.show_mode == -2) { + if (applyEncoder(encoder_diffState, hmiValues.Fan_speed)) { + encoderRate.enabled = false; + if (hmiValues.show_mode == -2) { checkkey = PLAPreheat; - ui.material_preset[0].fan_speed = HMI_ValueStruct.Fan_speed; - Draw_Edit_Integer3(fan_line, ui.material_preset[0].fan_speed); + ui.material_preset[0].fan_speed = hmiValues.Fan_speed; + drawEditInteger3(fan_line, ui.material_preset[0].fan_speed); return; } #if PREHEAT_COUNT > 1 - if (HMI_ValueStruct.show_mode == -3) { + if (hmiValues.show_mode == -3) { checkkey = ABSPreheat; - ui.material_preset[1].fan_speed = HMI_ValueStruct.Fan_speed; - Draw_Edit_Integer3(fan_line, ui.material_preset[1].fan_speed); + ui.material_preset[1].fan_speed = hmiValues.Fan_speed; + drawEditInteger3(fan_line, ui.material_preset[1].fan_speed); return; } #endif - checkkey = HMI_ValueStruct.show_mode == -1 ? TemperatureID : Tune; - Draw_Edit_Integer3(fan_line, HMI_ValueStruct.Fan_speed); - thermalManager.set_fan_speed(0, HMI_ValueStruct.Fan_speed); + checkkey = hmiValues.show_mode == -1 ? TemperatureID : Tune; + drawEditInteger3(fan_line, hmiValues.Fan_speed); + thermalManager.set_fan_speed(0, hmiValues.Fan_speed); return; } // Fan_speed limit - LIMIT(HMI_ValueStruct.Fan_speed, 0, 255); + LIMIT(hmiValues.Fan_speed, 0, 255); // Fan_speed value - Draw_Edit_Integer3(fan_line, HMI_ValueStruct.Fan_speed, true); + drawEditInteger3(fan_line, hmiValues.Fan_speed, true); } #endif // HAS_PREHEAT && HAS_FAN -void HMI_PrintSpeed() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); +void hmiPrintSpeed() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.print_speed)) { + if (applyEncoder(encoder_diffState, hmiValues.print_speed)) { checkkey = Tune; - EncoderRate.enabled = false; - feedrate_percentage = HMI_ValueStruct.print_speed; - Draw_Edit_Integer3(select_tune.now + MROWS - index_tune, HMI_ValueStruct.print_speed); + encoderRate.enabled = false; + feedrate_percentage = hmiValues.print_speed; + drawEditInteger3(select_tune.now + MROWS - index_tune, hmiValues.print_speed); return; } // print_speed limit - LIMIT(HMI_ValueStruct.print_speed, MIN_PRINT_SPEED, MAX_PRINT_SPEED); + LIMIT(hmiValues.print_speed, MIN_PRINT_SPEED, MAX_PRINT_SPEED); // print_speed value - Draw_Edit_Integer3(select_tune.now + MROWS - index_tune, HMI_ValueStruct.print_speed, true); + drawEditInteger3(select_tune.now + MROWS - index_tune, hmiValues.print_speed, true); } #define LAST_AXIS TERN(HAS_HOTEND, E_AXIS, Z_AXIS) -void HMI_MaxFeedspeedXYZE() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); +void hmiMaxFeedspeedXYZE() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Feedspeed)) { + if (applyEncoder(encoder_diffState, hmiValues.Max_Feedspeed)) { checkkey = MaxSpeed; - EncoderRate.enabled = false; - if (WITHIN(HMI_flag.feedspeed_axis, X_AXIS, LAST_AXIS)) - planner.set_max_feedrate(HMI_flag.feedspeed_axis, HMI_ValueStruct.Max_Feedspeed); - Draw_Edit_Integer4(select_speed.now, HMI_ValueStruct.Max_Feedspeed); + encoderRate.enabled = false; + if (WITHIN(hmiFlag.feedspeed_axis, X_AXIS, LAST_AXIS)) + planner.set_max_feedrate(hmiFlag.feedspeed_axis, hmiValues.Max_Feedspeed); + drawEditInteger4(select_speed.now, hmiValues.Max_Feedspeed); return; } // MaxFeedspeed limit - if (WITHIN(HMI_flag.feedspeed_axis, X_AXIS, LAST_AXIS)) - LIMIT(HMI_ValueStruct.Max_Feedspeed, min_feedrate_edit_values[HMI_flag.feedspeed_axis], max_feedrate_edit_values[HMI_flag.feedspeed_axis]); + if (WITHIN(hmiFlag.feedspeed_axis, X_AXIS, LAST_AXIS)) + LIMIT(hmiValues.Max_Feedspeed, min_feedrate_edit_values[hmiFlag.feedspeed_axis], max_feedrate_edit_values[hmiFlag.feedspeed_axis]); // MaxFeedspeed value - Draw_Edit_Integer4(select_speed.now, HMI_ValueStruct.Max_Feedspeed, true); + drawEditInteger4(select_speed.now, hmiValues.Max_Feedspeed, true); } -void HMI_MaxAccelerationXYZE() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); +void hmiMaxAccelerationXYZE() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Acceleration)) { + if (applyEncoder(encoder_diffState, hmiValues.Max_Acceleration)) { checkkey = MaxAcceleration; - EncoderRate.enabled = false; - if (WITHIN(HMI_flag.acc_axis, X_AXIS, LAST_AXIS)) - planner.set_max_acceleration(HMI_flag.acc_axis, HMI_ValueStruct.Max_Acceleration); - Draw_Edit_Integer4(select_acc.now, HMI_ValueStruct.Max_Acceleration); + encoderRate.enabled = false; + if (WITHIN(hmiFlag.acc_axis, X_AXIS, LAST_AXIS)) + planner.set_max_acceleration(hmiFlag.acc_axis, hmiValues.Max_Acceleration); + drawEditInteger4(select_acc.now, hmiValues.Max_Acceleration); return; } // MaxAcceleration limit - if (WITHIN(HMI_flag.acc_axis, X_AXIS, LAST_AXIS)) - LIMIT(HMI_ValueStruct.Max_Acceleration, min_acceleration_edit_values[HMI_flag.acc_axis], max_acceleration_edit_values[HMI_flag.acc_axis]); + if (WITHIN(hmiFlag.acc_axis, X_AXIS, LAST_AXIS)) + LIMIT(hmiValues.Max_Acceleration, min_acceleration_edit_values[hmiFlag.acc_axis], max_acceleration_edit_values[hmiFlag.acc_axis]); // MaxAcceleration value - Draw_Edit_Integer4(select_acc.now, HMI_ValueStruct.Max_Acceleration, true); + drawEditInteger4(select_acc.now, hmiValues.Max_Acceleration, true); } #if HAS_CLASSIC_JERK - void HMI_MaxJerkXYZE() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); + void hmiMaxJerkXYZE() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Jerk_scaled)) { + if (applyEncoder(encoder_diffState, hmiValues.Max_Jerk_scaled)) { checkkey = MaxJerk; - EncoderRate.enabled = false; - if (WITHIN(HMI_flag.jerk_axis, X_AXIS, LAST_AXIS)) - planner.set_max_jerk(HMI_flag.jerk_axis, HMI_ValueStruct.Max_Jerk_scaled / MINUNITMULT); - Draw_Edit_Float3(select_jerk.now, HMI_ValueStruct.Max_Jerk_scaled); + encoderRate.enabled = false; + if (WITHIN(hmiFlag.jerk_axis, X_AXIS, LAST_AXIS)) + planner.set_max_jerk(hmiFlag.jerk_axis, hmiValues.Max_Jerk_scaled / MINUNITMULT); + drawEditFloat3(select_jerk.now, hmiValues.Max_Jerk_scaled); return; } // MaxJerk limit - if (WITHIN(HMI_flag.jerk_axis, X_AXIS, LAST_AXIS)) - LIMIT(HMI_ValueStruct.Max_Jerk_scaled, min_jerk_edit_values[HMI_flag.jerk_axis] * MINUNITMULT, max_jerk_edit_values[HMI_flag.jerk_axis] * MINUNITMULT); + if (WITHIN(hmiFlag.jerk_axis, X_AXIS, LAST_AXIS)) + LIMIT(hmiValues.Max_Jerk_scaled, min_jerk_edit_values[hmiFlag.jerk_axis] * MINUNITMULT, max_jerk_edit_values[hmiFlag.jerk_axis] * MINUNITMULT); // MaxJerk value - Draw_Edit_Float3(select_jerk.now, HMI_ValueStruct.Max_Jerk_scaled, true); + drawEditFloat3(select_jerk.now, hmiValues.Max_Jerk_scaled, true); } #endif // HAS_CLASSIC_JERK -void HMI_StepXYZE() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); +void hmiStepXYZE() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Step_scaled)) { + if (applyEncoder(encoder_diffState, hmiValues.Max_Step_scaled)) { checkkey = Step; - EncoderRate.enabled = false; - if (WITHIN(HMI_flag.step_axis, X_AXIS, LAST_AXIS)) - planner.settings.axis_steps_per_mm[HMI_flag.step_axis] = HMI_ValueStruct.Max_Step_scaled / MINUNITMULT; - Draw_Edit_Float3(select_step.now, HMI_ValueStruct.Max_Step_scaled); + encoderRate.enabled = false; + if (WITHIN(hmiFlag.step_axis, X_AXIS, LAST_AXIS)) + planner.settings.axis_steps_per_mm[hmiFlag.step_axis] = hmiValues.Max_Step_scaled / MINUNITMULT; + drawEditFloat3(select_step.now, hmiValues.Max_Step_scaled); return; } // Step limit - if (WITHIN(HMI_flag.step_axis, X_AXIS, LAST_AXIS)) - LIMIT(HMI_ValueStruct.Max_Step_scaled, min_steps_edit_values[HMI_flag.step_axis] * MINUNITMULT, max_steps_edit_values[HMI_flag.step_axis] * MINUNITMULT); + if (WITHIN(hmiFlag.step_axis, X_AXIS, LAST_AXIS)) + LIMIT(hmiValues.Max_Step_scaled, min_steps_edit_values[hmiFlag.step_axis] * MINUNITMULT, max_steps_edit_values[hmiFlag.step_axis] * MINUNITMULT); // Step value - Draw_Edit_Float3(select_step.now, HMI_ValueStruct.Max_Step_scaled, true); + drawEditFloat3(select_step.now, hmiValues.Max_Step_scaled, true); } // Draw X, Y, Z and blink if in an un-homed or un-trusted state @@ -1631,11 +1631,11 @@ void _update_axis_value(const AxisEnum axis, const uint16_t x, const uint16_t y, if (force || changed || draw_qmark || draw_empty) { if (blink && draw_qmark) - DWIN_Draw_String(true, font8x16, Color_White, Color_Bg_Black, x, y, F("???.?")); + dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, x, y, F("???.?")); else if (blink && draw_empty) - DWIN_Draw_String(true, font8x16, Color_White, Color_Bg_Black, x, y, F(" ")); + dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, x, y, F(" ")); else - DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, x, y, p); + dwinDrawFloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, x, y, p); } } @@ -1682,27 +1682,27 @@ void update_variable() { // Tune page temperature update #if HAS_HOTEND if (_new_hotend_target) - Draw_Edit_Integer3(TUNE_CASE_TEMP + MROWS - index_tune, _hotendtarget); + drawEditInteger3(TUNE_CASE_TEMP + MROWS - index_tune, _hotendtarget); #endif #if HAS_HEATED_BED if (_new_bed_target) - Draw_Edit_Integer3(TUNE_CASE_BED + MROWS - index_tune, _bedtarget); + drawEditInteger3(TUNE_CASE_BED + MROWS - index_tune, _bedtarget); #endif #if HAS_FAN if (_new_fanspeed) - Draw_Edit_Integer3(TUNE_CASE_FAN + MROWS - index_tune, _fanspeed); + drawEditInteger3(TUNE_CASE_FAN + MROWS - index_tune, _fanspeed); #endif } else if (checkkey == TemperatureID) { // Temperature page temperature update #if HAS_HOTEND - if (_new_hotend_target) Draw_Edit_Integer3(TEMP_CASE_TEMP, _hotendtarget); + if (_new_hotend_target) drawEditInteger3(TEMP_CASE_TEMP, _hotendtarget); #endif #if HAS_HEATED_BED - if (_new_bed_target) Draw_Edit_Integer3(TEMP_CASE_BED, _bedtarget); + if (_new_bed_target) drawEditInteger3(TEMP_CASE_BED, _bedtarget); #endif #if HAS_FAN - if (_new_fanspeed) Draw_Edit_Integer3(TEMP_CASE_FAN, _fanspeed); + if (_new_fanspeed) drawEditInteger3(TEMP_CASE_FAN, _fanspeed); #endif } @@ -1710,34 +1710,34 @@ void update_variable() { #if HAS_HOTEND if (_new_hotend_temp) - Draw_Stat_Int(28, 384, _hotendtemp); + drawStatInt(28, 384, _hotendtemp); if (_new_hotend_target) - Draw_Stat_Int(25 + 4 * STAT_CHR_W + 6, 384, _hotendtarget); + drawStatInt(25 + 4 * STAT_CHR_W + 6, 384, _hotendtarget); static int16_t _flow = 0; if (_flow != planner.flow_percentage[0]) { _flow = planner.flow_percentage[0]; - Draw_Stat_Int(116 + 2 * STAT_CHR_W, 417, _flow); + drawStatInt(116 + 2 * STAT_CHR_W, 417, _flow); } #endif #if HAS_HEATED_BED if (_new_bed_temp) - Draw_Stat_Int(28, 417, _bedtemp); + drawStatInt(28, 417, _bedtemp); if (_new_bed_target) - Draw_Stat_Int(25 + 4 * STAT_CHR_W + 6, 417, _bedtarget); + drawStatInt(25 + 4 * STAT_CHR_W + 6, 417, _bedtarget); #endif static int16_t _feedrate = 0; if (_feedrate != feedrate_percentage) { _feedrate = feedrate_percentage; - Draw_Stat_Int(116 + 2 * STAT_CHR_W, 384, _feedrate); + drawStatInt(116 + 2 * STAT_CHR_W, 384, _feedrate); } #if HAS_FAN if (_new_fanspeed) { _fanspeed = thermalManager.fan_speed[0]; - Draw_Stat_Int(195 + 2 * STAT_CHR_W, 384, _fanspeed); + drawStatInt(195 + 2 * STAT_CHR_W, 384, _fanspeed); } #endif @@ -1745,12 +1745,12 @@ void update_variable() { if (BABY_Z_VAR != _offset) { _offset = BABY_Z_VAR; if (BABY_Z_VAR < 0) { - Draw_Stat_Float(207, 417, -_offset); - DWIN_Draw_String(true, font8x16, Color_White, Color_Bg_Black, 205, 419, F("-")); + drawStatFloat(207, 417, -_offset); + dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, 205, 419, F("-")); } else { - Draw_Stat_Float(207, 417, _offset); - DWIN_Draw_String(true, font8x16, Color_White, Color_Bg_Black, 205, 419, F(" ")); + drawStatFloat(207, 417, _offset); + dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, 205, 419, F(" ")); } } @@ -1765,10 +1765,6 @@ void update_variable() { * cache files here. */ -#ifndef strcasecmp_P - #define strcasecmp_P(a, b) strcasecmp((a), (b)) -#endif - void make_name_without_ext(char *dst, char *src, size_t maxlen=MENU_CHAR_LIMIT) { char * const name = card.longest_filename(); size_t pos = strlen(name); // index of ending nul @@ -1792,15 +1788,15 @@ void make_name_without_ext(char *dst, char *src, size_t maxlen=MENU_CHAR_LIMIT) while (pos--) dst[pos] = src[pos]; } -void HMI_SDCardInit() { card.cdroot(); } +void hmiSDCardInit() { card.cdroot(); } // Initialize or re-initialize the LCD -void MarlinUI::init_lcd() { DWIN_Startup(); } +void MarlinUI::init_lcd() { dwinStartup(); } void MarlinUI::refresh() { /* Nothing to see here */ } #if HAS_LCD_BRIGHTNESS - void MarlinUI::_set_brightness() { DWIN_LCD_Brightness(backlight ? brightness : 0); } + void MarlinUI::_set_brightness() { dwinLCDBrightness(backlight ? brightness : 0); } #endif #if ENABLED(SCROLL_LONG_FILENAMES) @@ -1810,7 +1806,7 @@ void MarlinUI::refresh() { /* Nothing to see here */ } millis_t shift_ms; // = 0 // Init the shift name based on the highlighted item - void Init_Shift_Name() { + void initShiftName() { const bool is_subdir = !card.flag.workDirIsRoot; const int8_t filenum = select_file.now - 1 - is_subdir; // Skip "Back" and ".." const int16_t fileCnt = card.get_num_items(); @@ -1821,7 +1817,7 @@ void MarlinUI::refresh() { /* Nothing to see here */ } } } - void Init_SDItem_Shift() { + void initSDItemShift() { shift_amt = 0; shift_ms = select_file.now != CASE_BACK && strlen(shift_name) > MENU_CHAR_LIMIT ? millis() + 750UL : 0; @@ -1832,11 +1828,11 @@ void MarlinUI::refresh() { /* Nothing to see here */ } /** * Display an SD item, adding a CDUP for subfolders. */ -void Draw_SDItem(const uint16_t item, int16_t row=-1) { +void drawSDItem(const uint16_t item, int16_t row=-1) { if (row < 0) row = item + 1 + MROWS - index_file; const bool is_subdir = !card.flag.workDirIsRoot; if (is_subdir && item == 0) { - Draw_Menu_Line(row, ICON_Folder, F("..")); + drawMenuLine(row, ICON_Folder, F("..")); return; } @@ -1848,19 +1844,19 @@ void Draw_SDItem(const uint16_t item, int16_t row=-1) { // This is used during scroll drawing if (item == select_file.now - 1) { make_name_without_ext(shift_name, name, 100); - Init_SDItem_Shift(); + initSDItemShift(); } #endif // Draw the file/folder with name aligned left char str[strlen(name) + 1]; make_name_without_ext(str, name); - Draw_Menu_Line(row, card.flag.filenameIsDir ? ICON_Folder : ICON_File, str); + drawMenuLine(row, card.flag.filenameIsDir ? ICON_Folder : ICON_File, str); } #if ENABLED(SCROLL_LONG_FILENAMES) - void Draw_SDItem_Shifted(uint8_t &shift) { + void drawSDItemShifted(uint8_t &shift) { // Limit to the number of chars past the cutoff const size_t len = strlen(shift_name); NOMORE(shift, _MAX(len - MENU_CHAR_LIMIT, 0U)); @@ -1872,8 +1868,8 @@ void Draw_SDItem(const uint16_t item, int16_t row=-1) { shift_name[lastchar] = '\0'; const uint8_t row = select_file.now + MROWS - index_file; // skip "Back" and scroll - Erase_Menu_Text(row); - Draw_Menu_Line(row, 0, &shift_name[shift]); + eraseMenuText(row); + drawMenuLine(row, 0, &shift_name[shift]); shift_name[lastchar] = c; } @@ -1881,57 +1877,57 @@ void Draw_SDItem(const uint16_t item, int16_t row=-1) { #endif // Redraw the first set of SD Files -void Redraw_SD_List() { +void redrawSDList() { select_file.reset(); index_file = MROWS; - Clear_Menu_Area(); // Leave title bar unchanged + clearMenuArea(); // Leave title bar unchanged - Draw_Back_First(); + drawBackFirst(); if (card.isMounted()) { // As many files as will fit for (uint8_t i = 0; i < _MIN(nr_sd_menu_items(), MROWS); ++i) - Draw_SDItem(i, i + 1); + drawSDItem(i, i + 1); - TERN_(SCROLL_LONG_FILENAMES, Init_SDItem_Shift()); + TERN_(SCROLL_LONG_FILENAMES, initSDItemShift()); } else { - DWIN_Draw_Rectangle(1, Color_Bg_Red, 10, MBASE(3) - 10, DWIN_WIDTH - 10, MBASE(4)); - DWIN_Draw_String(false, font16x32, Color_Yellow, Color_Bg_Red, ((DWIN_WIDTH) - 8 * 16) / 2, MBASE(3), F("No Media")); + dwinDrawRectangle(1, Color_Bg_Red, 10, MBASE(3) - 10, DWIN_WIDTH - 10, MBASE(4)); + dwinDrawString(false, font16x32, Color_Yellow, Color_Bg_Red, ((DWIN_WIDTH) - 8 * 16) / 2, MBASE(3), F("No Media")); } } bool DWIN_lcd_sd_status = false; -void SDCard_Up() { +void sdCardUp() { card.cdup(); - Redraw_SD_List(); + redrawSDList(); DWIN_lcd_sd_status = false; // On next DWIN_Update } -void SDCard_Folder(char * const dirname) { +void sdCardFolder(char * const dirname) { card.cd(dirname); - Redraw_SD_List(); + redrawSDList(); DWIN_lcd_sd_status = false; // On next DWIN_Update } // // Watch for media mount / unmount // -void HMI_SDCardUpdate() { - if (HMI_flag.home_flag) return; +void hmiSDCardUpdate() { + if (hmiFlag.home_flag) return; if (DWIN_lcd_sd_status != card.isMounted()) { DWIN_lcd_sd_status = card.isMounted(); //SERIAL_ECHOLNPGM("HMI_SDCardUpdate: ", DWIN_lcd_sd_status); if (DWIN_lcd_sd_status) { if (checkkey == SelectFile) - Redraw_SD_List(); + redrawSDList(); } else { // clean file icon if (checkkey == SelectFile) { - Redraw_SD_List(); + redrawSDList(); } else if (checkkey == PrintProcess || checkkey == Tune || printingIsActive()) { // TODO: Move card removed abort handling @@ -1941,7 +1937,7 @@ void HMI_SDCardUpdate() { dwin_abort_flag = true; // Reset feedrate, return to Home } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } } @@ -1949,139 +1945,139 @@ void HMI_SDCardUpdate() { // The status area is always on-screen, except during // full-screen modal dialogs. (TODO: Keep alive during dialogs) // -void Draw_Status_Area(const bool with_update) { +void drawStatusArea(const bool with_update) { - DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, STATUS_Y, DWIN_WIDTH, DWIN_HEIGHT - 1); + dwinDrawRectangle(1, Color_Bg_Black, 0, STATUS_Y, DWIN_WIDTH, DWIN_HEIGHT - 1); #if HAS_HOTEND - DWIN_ICON_Show(ICON, ICON_HotendTemp, 10, 383); - Draw_Stat_Int(28, 384, thermalManager.wholeDegHotend(0)); - DWIN_Draw_String(false, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 25 + 3 * STAT_CHR_W + 5, 384, F("/")); - Draw_Stat_Int(25 + 4 * STAT_CHR_W + 6, 384, thermalManager.degTargetHotend(0)); + dwinIconShow(ICON, ICON_HotendTemp, 10, 383); + drawStatInt(28, 384, thermalManager.wholeDegHotend(0)); + dwinDrawString(false, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 25 + 3 * STAT_CHR_W + 5, 384, F("/")); + drawStatInt(25 + 4 * STAT_CHR_W + 6, 384, thermalManager.degTargetHotend(0)); - DWIN_ICON_Show(ICON, ICON_StepE, 112, 417); - Draw_Stat_Int(116 + 2 * STAT_CHR_W, 417, planner.flow_percentage[0]); - DWIN_Draw_String(false, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 116 + 5 * STAT_CHR_W + 2, 417, F("%")); + dwinIconShow(ICON, ICON_StepE, 112, 417); + drawStatInt(116 + 2 * STAT_CHR_W, 417, planner.flow_percentage[0]); + dwinDrawString(false, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 116 + 5 * STAT_CHR_W + 2, 417, F("%")); #endif #if HAS_HEATED_BED - DWIN_ICON_Show(ICON, ICON_BedTemp, 10, 416); - Draw_Stat_Int(28, 417, thermalManager.wholeDegBed()); - DWIN_Draw_String(false, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 25 + 3 * STAT_CHR_W + 5, 417, F("/")); - Draw_Stat_Int(25 + 4 * STAT_CHR_W + 6, 417, thermalManager.degTargetBed()); + dwinIconShow(ICON, ICON_BedTemp, 10, 416); + drawStatInt(28, 417, thermalManager.wholeDegBed()); + dwinDrawString(false, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 25 + 3 * STAT_CHR_W + 5, 417, F("/")); + drawStatInt(25 + 4 * STAT_CHR_W + 6, 417, thermalManager.degTargetBed()); #endif - DWIN_ICON_Show(ICON, ICON_Speed, 113, 383); - Draw_Stat_Int(116 + 2 * STAT_CHR_W, 384, feedrate_percentage); - DWIN_Draw_String(false, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 116 + 5 * STAT_CHR_W + 2, 384, F("%")); + dwinIconShow(ICON, ICON_Speed, 113, 383); + drawStatInt(116 + 2 * STAT_CHR_W, 384, feedrate_percentage); + dwinDrawString(false, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 116 + 5 * STAT_CHR_W + 2, 384, F("%")); #if HAS_FAN - DWIN_ICON_Show(ICON, ICON_FanSpeed, 187, 383); - Draw_Stat_Int(195 + 2 * STAT_CHR_W, 384, thermalManager.fan_speed[0]); + dwinIconShow(ICON, ICON_FanSpeed, 187, 383); + drawStatInt(195 + 2 * STAT_CHR_W, 384, thermalManager.fan_speed[0]); #endif #if HAS_ZOFFSET_ITEM - DWIN_ICON_Show(ICON, ICON_Zoffset, 187, 416); + dwinIconShow(ICON, ICON_Zoffset, 187, 416); #endif if (BABY_Z_VAR < 0) { - Draw_Stat_Float(207, 417, -BABY_Z_VAR * 100); - DWIN_Draw_String(true, font8x16, Color_White, Color_Bg_Black, 205, 419, F("-")); + drawStatFloat(207, 417, -BABY_Z_VAR * 100); + dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, 205, 419, F("-")); } else { - Draw_Stat_Float(207, 417, BABY_Z_VAR * 100); - DWIN_Draw_String(true, font8x16, Color_White, Color_Bg_Black, 205, 419, F(" ")); + drawStatFloat(207, 417, BABY_Z_VAR * 100); + dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, 205, 419, F(" ")); } - DWIN_Draw_Rectangle(1, Line_Color, 0, 449, DWIN_WIDTH, 451); + dwinDrawRectangle(1, Line_Color, 0, 449, DWIN_WIDTH, 451); - DWIN_ICON_Show(ICON, ICON_MaxSpeedX, 10, 456); - DWIN_ICON_Show(ICON, ICON_MaxSpeedY, 95, 456); - DWIN_ICON_Show(ICON, ICON_MaxSpeedZ, 180, 456); + dwinIconShow(ICON, ICON_MaxSpeedX, 10, 456); + dwinIconShow(ICON, ICON_MaxSpeedY, 95, 456); + dwinIconShow(ICON, ICON_MaxSpeedZ, 180, 456); _draw_xyz_position(true); if (with_update) { - DWIN_UpdateLCD(); + dwinUpdateLCD(); delay(5); } } -void HMI_StartFrame(const bool with_update) { - Goto_MainMenu(); - Draw_Status_Area(with_update); +void hmiStartFrame(const bool with_update) { + gotoMainMenu(); + drawStatusArea(with_update); } -void Draw_Info_Menu() { - Clear_Main_Window(); +void drawInfoMenu() { + clearMainWindow(); - DWIN_Draw_String(false, font8x16, Color_White, Color_Bg_Black, (DWIN_WIDTH - strlen(MACHINE_SIZE) * MENU_CHR_W) / 2, 122, F(MACHINE_SIZE)); - DWIN_Draw_String(false, font8x16, Color_White, Color_Bg_Black, (DWIN_WIDTH - strlen(SHORT_BUILD_VERSION) * MENU_CHR_W) / 2, 195, F(SHORT_BUILD_VERSION)); + dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, (DWIN_WIDTH - strlen(MACHINE_SIZE) * MENU_CHR_W) / 2, 122, F(MACHINE_SIZE)); + dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, (DWIN_WIDTH - strlen(SHORT_BUILD_VERSION) * MENU_CHR_W) / 2, 195, F(SHORT_BUILD_VERSION)); - if (HMI_IsChinese()) { - DWIN_Frame_TitleCopy(30, 17, 28, 13); // "Info" + if (hmiIsChinese()) { + dwinFrameTitleCopy(30, 17, 28, 13); // "Info" - DWIN_Frame_AreaCopy(1, 197, 149, 252, 161, 108, 102); // "Size" - DWIN_Frame_AreaCopy(1, 1, 164, 56, 176, 108, 175); // "Firmware Version" - DWIN_Frame_AreaCopy(1, 58, 164, 113, 176, 105, 248); // "Contact Details" + dwinFrameAreaCopy(1, 197, 149, 252, 161, 108, 102); // "Size" + dwinFrameAreaCopy(1, 1, 164, 56, 176, 108, 175); // "Firmware Version" + dwinFrameAreaCopy(1, 58, 164, 113, 176, 105, 248); // "Contact Details" } else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_INFO_SCREEN)); + drawTitle(GET_TEXT_F(MSG_INFO_SCREEN)); #else - DWIN_Frame_TitleCopy(192, 15, 23, 12); // "Info" + dwinFrameTitleCopy(192, 15, 23, 12); // "Info" #endif - DWIN_Frame_AreaCopy(1, 120, 150, 146, 161, 124, 102); // "Size" - DWIN_Frame_AreaCopy(1, 146, 151, 254, 161, 82, 175); // "Firmware Version" - DWIN_Frame_AreaCopy(1, 1, 164, 96, 175, 89, 248); // "Contact details" + dwinFrameAreaCopy(1, 120, 150, 146, 161, 124, 102); // "Size" + dwinFrameAreaCopy(1, 146, 151, 254, 161, 82, 175); // "Firmware Version" + dwinFrameAreaCopy(1, 1, 164, 96, 175, 89, 248); // "Contact details" } - DWIN_Draw_String(false, font8x16, Color_White, Color_Bg_Black, (DWIN_WIDTH - strlen(CORP_WEBSITE) * MENU_CHR_W) / 2, 268, F(CORP_WEBSITE)); + dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, (DWIN_WIDTH - strlen(CORP_WEBSITE) * MENU_CHR_W) / 2, 268, F(CORP_WEBSITE)); - Draw_Back_First(); + drawBackFirst(); for (uint8_t i = 0; i < 3; ++i) { - DWIN_ICON_Show(ICON, ICON_PrintSize + i, 26, 99 + i * 73); - DWIN_Draw_Line(Line_Color, 16, MBASE(2) + i * 73, 256, 156 + i * 73); + dwinIconShow(ICON, ICON_PrintSize + i, 26, 99 + i * 73); + dwinDrawLine(Line_Color, 16, MBASE(2) + i * 73, 256, 156 + i * 73); } } -void Draw_Print_File_Menu() { - Clear_Title_Bar(); +void drawPrintFileMenu() { + clearTitleBar(); - if (HMI_IsChinese()) - DWIN_Frame_TitleCopy(0, 31, 56, 14); // "Print file" + if (hmiIsChinese()) + dwinFrameTitleCopy(0, 31, 56, 14); // "Print file" else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_MEDIA_MENU)); + drawTitle(GET_TEXT_F(MSG_MEDIA_MENU)); #else - DWIN_Frame_TitleCopy(52, 31, 86, 11); // "Print file" + dwinFrameTitleCopy(52, 31, 86, 11); // "Print file" #endif } - Redraw_SD_List(); + redrawSDList(); } // Main Process -void HMI_MainMenu() { +void hmiMainMenu() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_CW) { if (select_page.inc(4)) { switch (select_page.now) { - case PAGE_PRINT: ICON_Print(); break; - case PAGE_PREPARE: ICON_Print(); ICON_Prepare(); break; - case PAGE_CONTROL: ICON_Prepare(); ICON_Control(); break; - case PAGE_INFO_LEVELING: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break; + case PAGE_PRINT: iconPrint(); break; + case PAGE_PREPARE: iconPrint(); iconPrepare(); break; + case PAGE_CONTROL: iconPrepare(); iconControl(); break; + case PAGE_INFO_LEVELING: iconControl(); TERN(HAS_ONESTEP_LEVELING, iconLeveling, iconStartInfo)(); break; } } } else if (encoder_diffState == ENCODER_DIFF_CCW) { if (select_page.dec()) { switch (select_page.now) { - case PAGE_PRINT: ICON_Print(); ICON_Prepare(); break; - case PAGE_PREPARE: ICON_Prepare(); ICON_Control(); break; - case PAGE_CONTROL: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break; - case PAGE_INFO_LEVELING: TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break; + case PAGE_PRINT: iconPrint(); iconPrepare(); break; + case PAGE_PREPARE: iconPrepare(); iconControl(); break; + case PAGE_CONTROL: iconControl(); TERN(HAS_ONESTEP_LEVELING, iconLeveling, iconStartInfo)(); break; + case PAGE_INFO_LEVELING: TERN(HAS_ONESTEP_LEVELING, iconLeveling, iconStartInfo)(); break; } } } @@ -2089,39 +2085,39 @@ void HMI_MainMenu() { switch (select_page.now) { case PAGE_PRINT: checkkey = SelectFile; - Draw_Print_File_Menu(); + drawPrintFileMenu(); break; case PAGE_PREPARE: checkkey = Prepare; select_prepare.reset(); index_prepare = MROWS; - Draw_Prepare_Menu(); + drawPrepareMenu(); break; case PAGE_CONTROL: checkkey = Control; select_control.reset(); index_control = MROWS; - Draw_Control_Menu(); + drawControlMenu(); break; case PAGE_INFO_LEVELING: #if HAS_ONESTEP_LEVELING checkkey = Leveling; - HMI_Leveling(); + hmiLeveling(); #else checkkey = Info; - Draw_Info_Menu(); + drawInfoMenu(); #endif break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } // Select (and Print) File -void HMI_SelectFile() { +void hmiSelectFile() { EncoderState encoder_diffState = get_encoder_state(); const uint16_t hasUpDir = !card.flag.workDirIsRoot; @@ -2134,8 +2130,8 @@ void HMI_SelectFile() { if (ELAPSED(ms, shift_ms)) { const bool was_reset = shift_amt < 0; shift_ms = ms + 375UL + was_reset * 250UL; // ms per character - uint8_t shift_new = shift_amt + 1; // Try to shift by... - Draw_SDItem_Shifted(shift_new); // Draw the item + uint8_t shift_new = shift_amt + 1; // Try to shift by... + drawSDItemShifted(shift_new); // Draw the item if (!was_reset && shift_new == 0) // Was it limited to 0? shift_ms = 0; // No scrolling needed else if (shift_new == shift_amt) // Scroll reached the end @@ -2156,52 +2152,52 @@ void HMI_SelectFile() { if (select_file.inc(1 + fullCnt)) { const uint8_t itemnum = select_file.now - 1; // -1 for "Back" if (TERN0(SCROLL_LONG_FILENAMES, shift_ms)) { // If line was shifted - Erase_Menu_Text(itemnum + MROWS - index_file); // Erase and - Draw_SDItem(itemnum - 1); // redraw + eraseMenuText(itemnum + MROWS - index_file); // Erase and + drawSDItem(itemnum - 1); // redraw } if (select_file.now > MROWS && select_file.now > index_file) { // Cursor past the bottom index_file = select_file.now; // New bottom line - Scroll_Menu(DWIN_SCROLL_UP); - Draw_SDItem(itemnum, MROWS); // Draw and init the shift name + scrollMenu(DWIN_SCROLL_UP); + drawSDItem(itemnum, MROWS); // Draw and init the shift name } else { - Move_Highlight(1, select_file.now + MROWS - index_file); // Just move highlight - TERN_(SCROLL_LONG_FILENAMES, Init_Shift_Name()); // ...and init the shift name + moveHighlight(1, select_file.now + MROWS - index_file); // Just move highlight + TERN_(SCROLL_LONG_FILENAMES, initShiftName()); // ...and init the shift name } - TERN_(SCROLL_LONG_FILENAMES, Init_SDItem_Shift()); + TERN_(SCROLL_LONG_FILENAMES, initSDItemShift()); } } else if (encoder_diffState == ENCODER_DIFF_CCW && fullCnt) { if (select_file.dec()) { const uint8_t itemnum = select_file.now - 1; // -1 for "Back" if (TERN0(SCROLL_LONG_FILENAMES, shift_ms)) { // If line was shifted - Erase_Menu_Text(select_file.now + 1 + MROWS - index_file); // Erase and - Draw_SDItem(itemnum + 1); // redraw + eraseMenuText(select_file.now + 1 + MROWS - index_file); // Erase and + drawSDItem(itemnum + 1); // redraw } if (select_file.now < index_file - MROWS) { // Cursor past the top index_file--; // New bottom line - Scroll_Menu(DWIN_SCROLL_DOWN); + scrollMenu(DWIN_SCROLL_DOWN); if (index_file == MROWS) { - Draw_Back_First(); + drawBackFirst(); TERN_(SCROLL_LONG_FILENAMES, shift_ms = 0); } else - Draw_SDItem(itemnum, 0); // Draw the item (and init shift name) + drawSDItem(itemnum, 0); // Draw the item (and init shift name) } else { - Move_Highlight(-1, select_file.now + MROWS - index_file); // Just move highlight - TERN_(SCROLL_LONG_FILENAMES, Init_Shift_Name()); // ...and init the shift name + moveHighlight(-1, select_file.now + MROWS - index_file); // Just move highlight + TERN_(SCROLL_LONG_FILENAMES, initShiftName()); // ...and init the shift name } - TERN_(SCROLL_LONG_FILENAMES, Init_SDItem_Shift()); // Reset left. Init timer. + TERN_(SCROLL_LONG_FILENAMES, initSDItemShift()); // Reset left. Init timer. } } else if (encoder_diffState == ENCODER_DIFF_ENTER) { if (select_file.now == CASE_BACK) { // Back select_page.set(0); - Goto_MainMenu(); + gotoMainMenu(); } else if (hasUpDir && select_file.now == 1) { // CD-Up - SDCard_Up(); + sdCardUp(); goto HMI_SelectFileExit; } else { @@ -2210,7 +2206,7 @@ void HMI_SelectFile() { // Enter that folder! if (card.flag.filenameIsDir) { - SDCard_Folder(card.filename); + sdCardFolder(card.filename); goto HMI_SelectFileExit; } @@ -2219,9 +2215,9 @@ void HMI_SelectFile() { select_file.reset(); // Start choice and print SD file - HMI_flag.heat_flag = true; - HMI_flag.print_finish = false; - HMI_ValueStruct.show_mode = 0; + hmiFlag.heat_flag = true; + hmiFlag.print_finish = false; + hmiValues.show_mode = 0; card.openAndPrintFile(card.filename); @@ -2234,22 +2230,22 @@ void HMI_SelectFile() { _card_percent = 0; _remain_time = 0; - Goto_PrintProcess(); + gotoPrintProcess(); } } HMI_SelectFileExit: - DWIN_UpdateLCD(); + dwinUpdateLCD(); } // Printing -void HMI_Printing() { +void hmiPrinting() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (HMI_flag.done_confirm_flag) { + if (hmiFlag.done_confirm_flag) { if (encoder_diffState == ENCODER_DIFF_ENTER) { - HMI_flag.done_confirm_flag = false; + hmiFlag.done_confirm_flag = false; dwin_abort_flag = true; // Reset feedrate, return to Home } return; @@ -2259,18 +2255,18 @@ void HMI_Printing() { if (encoder_diffState == ENCODER_DIFF_CW) { if (select_print.inc(3)) { switch (select_print.now) { - case PRINT_SETUP: ICON_Tune(); break; - case PRINT_PAUSE_RESUME: ICON_Tune(); ICON_ResumeOrPause(); break; - case PRINT_STOP: ICON_ResumeOrPause(); ICON_Stop(); break; + case PRINT_SETUP: iconTune(); break; + case PRINT_PAUSE_RESUME: iconTune(); iconResumeOrPause(); break; + case PRINT_STOP: iconResumeOrPause(); iconStop(); break; } } } else if (encoder_diffState == ENCODER_DIFF_CCW) { if (select_print.dec()) { switch (select_print.now) { - case PRINT_SETUP: ICON_Tune(); ICON_ResumeOrPause(); break; - case PRINT_PAUSE_RESUME: ICON_ResumeOrPause(); ICON_Stop(); break; - case PRINT_STOP: ICON_Stop(); break; + case PRINT_SETUP: iconTune(); iconResumeOrPause(); break; + case PRINT_PAUSE_RESUME: iconResumeOrPause(); iconStop(); break; + case PRINT_STOP: iconStop(); break; } } } @@ -2278,15 +2274,15 @@ void HMI_Printing() { switch (select_print.now) { case PRINT_SETUP: checkkey = Tune; - HMI_ValueStruct.show_mode = 0; + hmiValues.show_mode = 0; select_tune.reset(); index_tune = MROWS; - Draw_Tune_Menu(); + drawTuneMenu(); break; case PRINT_PAUSE_RESUME: - if (HMI_flag.pause_flag) { - ICON_Pause(); + if (hmiFlag.pause_flag) { + iconPause(); char cmd[40]; cmd[0] = '\0'; @@ -2302,181 +2298,181 @@ void HMI_Printing() { queue.inject(cmd); } else { - HMI_flag.select_flag = true; + hmiFlag.select_flag = true; checkkey = Print_window; - Popup_window_PauseOrStop(); + popupwindowPauseOrStop(); } break; case PRINT_STOP: - HMI_flag.select_flag = true; + hmiFlag.select_flag = true; checkkey = Print_window; - Popup_window_PauseOrStop(); + popupwindowPauseOrStop(); break; default: break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } // Pause and Stop window -void HMI_PauseOrStop() { +void hmiPauseOrStop() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_CW) - Draw_Select_Highlight(false); + drawSelectHighlight(false); else if (encoder_diffState == ENCODER_DIFF_CCW) - Draw_Select_Highlight(true); + drawSelectHighlight(true); else if (encoder_diffState == ENCODER_DIFF_ENTER) { if (select_print.now == PRINT_PAUSE_RESUME) { - if (HMI_flag.select_flag) { - HMI_flag.pause_action = true; + if (hmiFlag.select_flag) { + hmiFlag.pause_action = true; queue.inject(F("M25")); } - Goto_PrintProcess(); + gotoPrintProcess(); } else if (select_print.now == PRINT_STOP) { - if (HMI_flag.select_flag) { + if (hmiFlag.select_flag) { checkkey = Back_Main; - wait_for_heatup = wait_for_user = false; // Stop waiting for heating/user - card.abortFilePrintSoon(); // Let the main loop handle SD abort - dwin_abort_flag = true; // Reset feedrate, return to Home + wait_for_heatup = wait_for_user = false; // Stop waiting for heating/user + card.abortFilePrintSoon(); // Let the main loop handle SD abort + dwin_abort_flag = true; // Reset feedrate, return to Home #ifdef ACTION_ON_CANCEL hostui.cancel(); #endif - Popup_Window_Home(true); - if (HMI_flag.home_flag) planner.synchronize(); // Wait for planner moves to finish! + popupWindowHome(true); + if (hmiFlag.home_flag) planner.synchronize(); // Wait for planner moves to finish! } else - Goto_PrintProcess(); // cancel stop + gotoPrintProcess(); // cancel stop } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } -void Draw_Move_Menu() { - Clear_Main_Window(); +void drawMoveMenu() { + clearMainWindow(); - if (HMI_IsChinese()) { - DWIN_Frame_TitleCopy(192, 1, 42, 14); // "Move" - Item_AreaCopy(58, 118, 106, 132, 1); - Item_AreaCopy(109, 118, 157, 132, 2); - Item_AreaCopy(160, 118, 209, 132, 3); - TERN_(HAS_HOTEND, Item_AreaCopy(212, 118, 253, 131, 4)); + if (hmiIsChinese()) { + dwinFrameTitleCopy(192, 1, 42, 14); // "Move" + itemAreaCopy(58, 118, 106, 132, 1); + itemAreaCopy(109, 118, 157, 132, 2); + itemAreaCopy(160, 118, 209, 132, 3); + TERN_(HAS_HOTEND, itemAreaCopy(212, 118, 253, 131, 4)); } else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_MOVE_AXIS)); + drawTitle(GET_TEXT_F(MSG_MOVE_AXIS)); #else - DWIN_Frame_TitleCopy(231, 2, 35, 11); // "Move" + dwinFrameTitleCopy(231, 2, 35, 11); // "Move" #endif #ifdef USE_STRING_TITLES - DWIN_Draw_Label(1, GET_TEXT_F(MSG_MOVE_X)); - DWIN_Draw_Label(2, GET_TEXT_F(MSG_MOVE_Y)); - DWIN_Draw_Label(3, GET_TEXT_F(MSG_MOVE_Z)); - TERN_(HAS_HOTEND, DWIN_Draw_Label(4, GET_TEXT_F(MSG_MOVE_E))); + dwinDrawLabel(1, GET_TEXT_F(MSG_MOVE_X)); + dwinDrawLabel(2, GET_TEXT_F(MSG_MOVE_Y)); + dwinDrawLabel(3, GET_TEXT_F(MSG_MOVE_Z)); + TERN_(HAS_HOTEND, dwinDrawLabel(4, GET_TEXT_F(MSG_MOVE_E))); #else say_move_en(1); say_x_en(38, 1); // "Move X" say_move_en(2); say_y_en(38, 2); // "Move Y" say_move_en(3); say_z_en(38, 3); // "Move Z" - TERN_(HAS_HOTEND, (say_move_en(4), Item_AreaCopy(99, 194, 151, 204, 4, 38))); // "Move Extruder" + TERN_(HAS_HOTEND, (say_move_en(4), itemAreaCopy(99, 194, 151, 204, 4, 38))); // "Move Extruder" #endif } - Draw_Back_First(select_axis.now == CASE_BACK); - if (select_axis.now != CASE_BACK) Draw_Menu_Cursor(select_axis.now); + drawBackFirst(select_axis.now == CASE_BACK); + if (select_axis.now != CASE_BACK) drawMenuCursor(select_axis.now); // Draw separators and icons - for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) Draw_Menu_Line(i + 1, ICON_MoveX + i); + for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) drawMenuLine(i + 1, ICON_MoveX + i); } -void Item_Adv_HomeOffsets(const uint8_t row) { - if (false && HMI_IsChinese()) { +void itemAdvHomeOffsets(const uint8_t row) { + if (false && hmiIsChinese()) { // TODO: Chinese "Set Home Offsets" } else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, GET_TEXT_F(MSG_SET_HOME_OFFSETS)); + dwinDrawLabel(row, GET_TEXT_F(MSG_SET_HOME_OFFSETS)); #else - Item_AreaCopy(1, 76, 102, 87, row); // "Set Home Offsets" + itemAreaCopy(1, 76, 102, 87, row); // "Set Home Offsets" #endif } - Draw_Menu_Line(row, ICON_HomeOffset); - Draw_More_Icon(row); + drawMenuLine(row, ICON_HomeOffset); + drawMoreIcon(row); } #if HAS_ONESTEP_LEVELING - void Item_Adv_ProbeOffsets(const uint8_t row) { - if (false && HMI_IsChinese()) { + void itemAdvProbeOffsets(const uint8_t row) { + if (false && hmiIsChinese()) { // TODO: Chinese "Probe Offsets" } else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, GET_TEXT_F(MSG_ZPROBE_OFFSETS)); + dwinDrawLabel(row, GET_TEXT_F(MSG_ZPROBE_OFFSETS)); #else say_probe_offs_en(row); #endif } - Draw_Menu_Line(row, ICON_ProbeOffset); - Draw_More_Icon(row); + drawMenuLine(row, ICON_ProbeOffset); + drawMoreIcon(row); } #endif -void Item_Adv_HotendPID(const uint8_t row) { - if (false && HMI_IsChinese()) { +void itemAdvHotendPID(const uint8_t row) { + if (false && hmiIsChinese()) { // TODO: Chinese "Hotend PID" } else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, F("Hotend PID")); + dwinDrawLabel(row, F("Hotend PID")); #else - Item_AreaCopy(96, 104, 167, 114, row); // "Hotend PID" + itemAreaCopy(96, 104, 167, 114, row); // "Hotend PID" #endif } - Draw_Menu_Line(row, ICON_PIDNozzle); + drawMenuLine(row, ICON_PIDNozzle); } -void Item_Adv_BedPID(const uint8_t row) { - if (false && HMI_IsChinese()) { +void itemAdvBedPID(const uint8_t row) { + if (false && hmiIsChinese()) { // TODO: Chinese "Bed PID" } else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, F("Bed PID")); + dwinDrawLabel(row, F("Bed PID")); #else - Item_AreaCopy(241, 104, 263, 115, row); // "Bed" - Item_AreaCopy(145, 104, 167, 114, row, 27); // "PID" + itemAreaCopy(241, 104, 263, 115, row); // "Bed" + itemAreaCopy(145, 104, 167, 114, row, 27); // "PID" #endif } - Draw_Menu_Line(row, ICON_PIDbed); + drawMenuLine(row, ICON_PIDbed); } #if ENABLED(POWER_LOSS_RECOVERY) - void Item_Adv_PLR(const uint8_t row) { - if (false && HMI_IsChinese()) { + void itemAdv_PLR(const uint8_t row) { + if (false && hmiIsChinese()) { // TODO: Chinese "Power-loss Recovery" } else { #ifdef USE_STRING_TITLES - DWIN_Draw_Label(row, GET_TEXT_F(MSG_ZPROBE_OFFSETS)); + dwinDrawLabel(row, GET_TEXT_F(MSG_ZPROBE_OFFSETS)); #else - Item_AreaCopy(1, 208, 137, 221, row); // "Power-loss Recovery" + itemAreaCopy(1, 208, 137, 221, row); // "Power-loss Recovery" #endif } - Draw_Menu_Line(row, ICON_Motion); - Draw_Checkbox_Line(row, recovery.enabled); + drawMenuLine(row, ICON_Motion); + drawCheckboxLine(row, recovery.enabled); } #endif -void Draw_AdvancedSettings_Menu() { - Clear_Main_Window(); +void drawAdvancedSettingsMenu() { + clearMainWindow(); #if ADVSET_CASE_TOTAL >= TROWS const int16_t scroll = MROWS - index_advset; // Scrolled-up lines @@ -2486,128 +2482,128 @@ void Draw_AdvancedSettings_Menu() { #define ASCROL(L) (scroll + (L)) #define AVISI(L) VISI(ADVSET_CASE_TOTAL, L, ASCROL(L)) - if (false && HMI_IsChinese()) { + if (false && hmiIsChinese()) { // TODO: Chinese "Advanced Settings" } else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_ADVANCED_SETTINGS)); + drawTitle(GET_TEXT_F(MSG_ADVANCED_SETTINGS)); #else - DWIN_Frame_TitleCopy(93, 401, 126, 15); // "Advanced Settings" + dwinFrameTitleCopy(93, 401, 126, 15); // "Advanced Settings" #endif } - if (AVISI(0)) Draw_Back_First(select_advset.now == CASE_BACK); - if (AVISI(ADVSET_CASE_HOMEOFF)) Item_Adv_HomeOffsets(ASCROL(ADVSET_CASE_HOMEOFF)); // Set Home Offsets > + if (AVISI(0)) drawBackFirst(select_advset.now == CASE_BACK); + if (AVISI(ADVSET_CASE_HOMEOFF)) itemAdvHomeOffsets(ASCROL(ADVSET_CASE_HOMEOFF)); // Set Home Offsets > #if HAS_ONESTEP_LEVELING - if (AVISI(ADVSET_CASE_PROBEOFF)) Item_Adv_ProbeOffsets(ASCROL(ADVSET_CASE_PROBEOFF)); // Probe Offsets > + if (AVISI(ADVSET_CASE_PROBEOFF)) itemAdvProbeOffsets(ASCROL(ADVSET_CASE_PROBEOFF)); // Probe Offsets > #endif - if (AVISI(ADVSET_CASE_HEPID)) Item_Adv_HotendPID(ASCROL(ADVSET_CASE_HEPID)); // Nozzle PID - if (AVISI(ADVSET_CASE_BEDPID)) Item_Adv_BedPID(ASCROL(ADVSET_CASE_BEDPID)); // Bed PID + if (AVISI(ADVSET_CASE_HEPID)) itemAdvHotendPID(ASCROL(ADVSET_CASE_HEPID)); // Nozzle PID + if (AVISI(ADVSET_CASE_BEDPID)) itemAdvBedPID(ASCROL(ADVSET_CASE_BEDPID)); // Bed PID #if ENABLED(POWER_LOSS_RECOVERY) - if (AVISI(ADVSET_CASE_PWRLOSSR)) Item_Adv_PLR(ASCROL(ADVSET_CASE_PWRLOSSR)); // Power-loss recovery + if (AVISI(ADVSET_CASE_PWRLOSSR)) itemAdv_PLR(ASCROL(ADVSET_CASE_PWRLOSSR)); // Power-loss recovery #endif - if (select_advset.now != CASE_BACK) Draw_Menu_Cursor(ASCROL(select_advset.now)); + if (select_advset.now != CASE_BACK) drawMenuCursor(ASCROL(select_advset.now)); } -void Item_HomeOffs_X(const uint8_t row) { - if (false && HMI_IsChinese()) { +void itemHomeOffs_X(const uint8_t row) { + if (false && hmiIsChinese()) { // TODO: Chinese "Home Offset X" } else { #ifdef USE_STRING_TITLES - Draw_Menu_Line(row, ICON_HomeOffsetX, GET_TEXT_F(MSG_HOME_OFFSET_X)); + drawMenuLine(row, ICON_HomeOffsetX, GET_TEXT_F(MSG_HOME_OFFSET_X)); #else say_home_offs_en(row); say_x_en(75, row); // "Home Offset X" #endif } - Draw_Menu_Line(row, ICON_HomeOffset); - Draw_Edit_Signed_Float3(row, HMI_ValueStruct.Home_OffX_scaled); + drawMenuLine(row, ICON_HomeOffset); + drawEditSignedFloat3(row, hmiValues.Home_OffX_scaled); } -void Item_HomeOffs_Y(const uint8_t row) { - if (false && HMI_IsChinese()) { +void itemHomeOffs_Y(const uint8_t row) { + if (false && hmiIsChinese()) { // TODO: Chinese "Home Offset Y" } else { #ifdef USE_STRING_TITLES - Draw_Menu_Line(row, ICON_HomeOffsetY, GET_TEXT_F(MSG_HOME_OFFSET_Y)); + drawMenuLine(row, ICON_HomeOffsetY, GET_TEXT_F(MSG_HOME_OFFSET_Y)); #else say_home_offs_en(row); say_y_en(75, row); // "Home Offset X" #endif } - Draw_Menu_Line(row, ICON_HomeOffset); - Draw_Edit_Signed_Float3(row, HMI_ValueStruct.Home_OffY_scaled); + drawMenuLine(row, ICON_HomeOffset); + drawEditSignedFloat3(row, hmiValues.Home_OffY_scaled); } -void Item_HomeOffs_Z(const uint8_t row) { - if (false && HMI_IsChinese()) { +void itemHomeOffs_Z(const uint8_t row) { + if (false && hmiIsChinese()) { // TODO: Chinese "Home Offset Z" } else { #ifdef USE_STRING_TITLES - Draw_Menu_Line(row, ICON_HomeOffsetZ, GET_TEXT_F(MSG_HOME_OFFSET_Z)); + drawMenuLine(row, ICON_HomeOffsetZ, GET_TEXT_F(MSG_HOME_OFFSET_Z)); #else say_home_offs_en(row); say_z_en(75, row); // "Home Offset Z" #endif } - Draw_Menu_Line(row, ICON_HomeOffset); - Draw_Edit_Signed_Float3(row, HMI_ValueStruct.Home_OffZ_scaled); + drawMenuLine(row, ICON_HomeOffset); + drawEditSignedFloat3(row, hmiValues.Home_OffZ_scaled); } -void Draw_HomeOff_Menu() { - Clear_Main_Window(); - if (false && HMI_IsChinese()) { +void drawHomeOffMenu() { + clearMainWindow(); + if (false && hmiIsChinese()) { // TODO: Chinese "Home Offsets" } else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_SET_HOME_OFFSETS)); + drawTitle(GET_TEXT_F(MSG_SET_HOME_OFFSETS)); #else - DWIN_Frame_TitleCopy(1, 401, 91, 12); // "Home Offsets" + dwinFrameTitleCopy(1, 401, 91, 12); // "Home Offsets" #endif } - Draw_Back_First(select_item.now == CASE_BACK); - Item_HomeOffs_X(1); // "Home Offset X" - Item_HomeOffs_Y(2); // "Home Offset Y" - Item_HomeOffs_Z(3); // "Home Offset Z" - if (select_item.now != CASE_BACK) Draw_Menu_Cursor(select_item.now); + drawBackFirst(select_item.now == CASE_BACK); + itemHomeOffs_X(1); // "Home Offset X" + itemHomeOffs_Y(2); // "Home Offset Y" + itemHomeOffs_Z(3); // "Home Offset Z" + if (select_item.now != CASE_BACK) drawMenuCursor(select_item.now); } #if HAS_ONESTEP_LEVELING - void Draw_ProbeOff_Menu() { - Clear_Main_Window(); - Draw_Back_First(select_item.now == CASE_BACK); - if (false && HMI_IsChinese()) { + void drawProbeOffMenu() { + clearMainWindow(); + drawBackFirst(select_item.now == CASE_BACK); + if (false && hmiIsChinese()) { // TODO: Chinese "Probe Offsets" } else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_ZPROBE_OFFSETS)); + drawTitle(GET_TEXT_F(MSG_ZPROBE_OFFSETS)); #else - DWIN_Frame_TitleCopy(124, 431, 91, 12); // "Probe Offsets" + dwinFrameTitleCopy(124, 431, 91, 12); // "Probe Offsets" #endif #ifdef USE_STRING_TITLES - Draw_Menu_Line(1, ICON_ProbeOffsetX, GET_TEXT_F(MSG_ZPROBE_XOFFSET)); // Probe X Offset - Draw_Menu_Line(2, ICON_ProbeOffsetY, GET_TEXT_F(MSG_ZPROBE_YOFFSET)); // Probe Y Offset + drawMenuLine(1, ICON_ProbeOffsetX, GET_TEXT_F(MSG_ZPROBE_XOFFSET)); // Probe X Offset + drawMenuLine(2, ICON_ProbeOffsetY, GET_TEXT_F(MSG_ZPROBE_YOFFSET)); // Probe Y Offset #else say_probe_offs_en(1); say_x_en(75, 1); // "Probe Offset X" say_probe_offs_en(2); say_y_en(75, 2); // "Probe Offset Y" #endif } - Draw_Edit_Signed_Float3(1, HMI_ValueStruct.Probe_OffX_scaled); - Draw_Edit_Signed_Float3(2, HMI_ValueStruct.Probe_OffY_scaled); + drawEditSignedFloat3(1, hmiValues.Probe_OffX_scaled); + drawEditSignedFloat3(2, hmiValues.Probe_OffY_scaled); - if (select_item.now != CASE_BACK) Draw_Menu_Cursor(select_item.now); + if (select_item.now != CASE_BACK) drawMenuCursor(select_item.now); } #endif #include "../../../libs/buzzer.h" -void HMI_AudioFeedback(const bool success=true) { +void hmiAudioFeedback(const bool success=true) { if (success) { BUZZ(100, 659); BUZZ(10, 0); @@ -2618,7 +2614,7 @@ void HMI_AudioFeedback(const bool success=true) { } // Prepare -void HMI_Prepare() { +void hmiPrepare() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; @@ -2629,22 +2625,22 @@ void HMI_Prepare() { index_prepare = select_prepare.now; // Scroll up and draw a blank bottom line - Scroll_Menu(DWIN_SCROLL_UP); - Draw_Menu_Icon(MROWS, ICON_Axis + select_prepare.now - 1); + scrollMenu(DWIN_SCROLL_UP); + drawMenuIcon(MROWS, ICON_Axis + select_prepare.now - 1); // Draw "More" icon for sub-menus - if (index_prepare < 7) Draw_More_Icon(MROWS - index_prepare + 1); + if (index_prepare < 7) drawMoreIcon(MROWS - index_prepare + 1); #if PREHEAT_COUNT > 1 - if (index_prepare == PREPARE_CASE_ABS) Item_Prepare_ABS(MROWS); + if (index_prepare == PREPARE_CASE_ABS) itemPrepare_ABS(MROWS); #endif #if HAS_HOTEND || HAS_HEATED_BED - if (index_prepare == PREPARE_CASE_COOL) Item_Prepare_Cool(MROWS); + if (index_prepare == PREPARE_CASE_COOL) itemPrepareCool(MROWS); #endif - if (index_prepare == PREPARE_CASE_LANG) Item_Prepare_Lang(MROWS); + if (index_prepare == PREPARE_CASE_LANG) itemPrepareLang(MROWS); } else { - Move_Highlight(1, select_prepare.now + MROWS - index_prepare); + moveHighlight(1, select_prepare.now + MROWS - index_prepare); } } } @@ -2652,21 +2648,21 @@ void HMI_Prepare() { if (select_prepare.dec()) { if (select_prepare.now < index_prepare - MROWS) { index_prepare--; - Scroll_Menu(DWIN_SCROLL_DOWN); + scrollMenu(DWIN_SCROLL_DOWN); if (index_prepare == MROWS) - Draw_Back_First(); + drawBackFirst(); else - Draw_Menu_Line(0, ICON_Axis + select_prepare.now - 1); + drawMenuLine(0, ICON_Axis + select_prepare.now - 1); - if (index_prepare < 7) Draw_More_Icon(MROWS - index_prepare + 1); + if (index_prepare < 7) drawMoreIcon(MROWS - index_prepare + 1); - if (index_prepare == 6) Item_Prepare_Move(0); - else if (index_prepare == 7) Item_Prepare_Disable(0); - else if (index_prepare == 8) Item_Prepare_Home(0); + if (index_prepare == 6) itemPrepareMove(0); + else if (index_prepare == 7) itemPrepareDisable(0); + else if (index_prepare == 8) itemPrepareHome(0); } else { - Move_Highlight(-1, select_prepare.now + MROWS - index_prepare); + moveHighlight(-1, select_prepare.now + MROWS - index_prepare); } } } @@ -2674,19 +2670,19 @@ void HMI_Prepare() { switch (select_prepare.now) { case CASE_BACK: select_page.set(1); - Goto_MainMenu(); + gotoMainMenu(); break; case PREPARE_CASE_MOVE: checkkey = AxisMove; select_axis.reset(); - Draw_Move_Menu(); + drawMoveMenu(); - Draw_Edit_Float3(1, current_position.x * MINUNITMULT); - Draw_Edit_Float3(2, current_position.y * MINUNITMULT); - Draw_Edit_Float3(3, current_position.z * MINUNITMULT); + drawEditFloat3(1, current_position.x * MINUNITMULT); + drawEditFloat3(2, current_position.y * MINUNITMULT); + drawEditFloat3(3, current_position.z * MINUNITMULT); #if HAS_HOTEND - HMI_ValueStruct.Move_E_scaled = current_position.e * MINUNITMULT; - Draw_Edit_Signed_Float3(4, HMI_ValueStruct.Move_E_scaled); + hmiValues.Move_E_scaled = current_position.e * MINUNITMULT; + drawEditSignedFloat3(4, hmiValues.Move_E_scaled); #endif break; @@ -2696,21 +2692,21 @@ void HMI_Prepare() { checkkey = Last_Prepare; index_prepare = MROWS; queue.inject_P(G28_STR); // G28 will set home_flag - Popup_Window_Home(); + popupWindowHome(); break; #if HAS_ZOFFSET_ITEM case PREPARE_CASE_ZOFF: #if ANY(HAS_BED_PROBE, BABYSTEPPING) checkkey = Homeoffset; - HMI_ValueStruct.show_mode = -4; - HMI_ValueStruct.offset_value = BABY_Z_VAR * 100; - Draw_Edit_Signed_Float2(PREPARE_CASE_ZOFF + MROWS - index_prepare, HMI_ValueStruct.offset_value, true); - EncoderRate.enabled = true; + hmiValues.show_mode = -4; + hmiValues.offset_value = BABY_Z_VAR * 100; + drawEditSignedFloat2(PREPARE_CASE_ZOFF + MROWS - index_prepare, hmiValues.offset_value, true); + encoderRate.enabled = true; #else // Apply workspace offset, making the current position 0,0,0 queue.inject(F("G92X0Y0Z0")); - HMI_AudioFeedback(); + hmiAudioFeedback(); #endif break; #endif @@ -2730,113 +2726,113 @@ void HMI_Prepare() { #endif case PREPARE_CASE_LANG: - HMI_ToggleLanguage(); - Draw_Prepare_Menu(); + hmiToggleLanguage(); + drawPrepareMenu(); break; default: break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } -void Draw_Temperature_Menu() { - Clear_Main_Window(); +void drawTemperatureMenu() { + clearMainWindow(); - if (HMI_IsChinese()) { - DWIN_Frame_TitleCopy(236, 2, 28, 12); // "Temperature" + if (hmiIsChinese()) { + dwinFrameTitleCopy(236, 2, 28, 12); // "Temperature" #if HAS_HOTEND - Item_AreaCopy(1, 134, 56, 146, TEMP_CASE_TEMP); + itemAreaCopy(1, 134, 56, 146, TEMP_CASE_TEMP); #endif #if HAS_HEATED_BED - Item_AreaCopy(58, 134, 113, 146, TEMP_CASE_BED); + itemAreaCopy(58, 134, 113, 146, TEMP_CASE_BED); #endif #if HAS_FAN - Item_AreaCopy(115, 134, 170, 146, TEMP_CASE_FAN); + itemAreaCopy(115, 134, 170, 146, TEMP_CASE_FAN); #endif #if HAS_PREHEAT - Item_AreaCopy(100, 89, 178, 101, TEMP_CASE_PLA); + itemAreaCopy(100, 89, 178, 101, TEMP_CASE_PLA); #if PREHEAT_COUNT > 1 - Item_AreaCopy(180, 89, 260, 100, TEMP_CASE_ABS); + itemAreaCopy(180, 89, 260, 100, TEMP_CASE_ABS); #endif #endif } else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_TEMPERATURE)); + drawTitle(GET_TEXT_F(MSG_TEMPERATURE)); #else - DWIN_Frame_TitleCopy(56, 15, 85, 14); // "Temperature" + dwinFrameTitleCopy(56, 15, 85, 14); // "Temperature" #endif #ifdef USE_STRING_TITLES #if HAS_HOTEND - DWIN_Draw_Label(TEMP_CASE_TEMP, GET_TEXT_F(MSG_UBL_SET_TEMP_HOTEND)); + dwinDrawLabel(TEMP_CASE_TEMP, GET_TEXT_F(MSG_UBL_SET_TEMP_HOTEND)); #endif #if HAS_HEATED_BED - DWIN_Draw_Label(TEMP_CASE_BED, GET_TEXT_F(MSG_UBL_SET_TEMP_BED)); + dwinDrawLabel(TEMP_CASE_BED, GET_TEXT_F(MSG_UBL_SET_TEMP_BED)); #endif #if HAS_FAN - DWIN_Draw_Label(TEMP_CASE_FAN, GET_TEXT_F(MSG_FAN_SPEED)); + dwinDrawLabel(TEMP_CASE_FAN, GET_TEXT_F(MSG_FAN_SPEED)); #endif #if HAS_PREHEAT - DWIN_Draw_Label(TEMP_CASE_PLA, F(PREHEAT_1_LABEL " Preheat Settings")); + dwinDrawLabel(TEMP_CASE_PLA, F(PREHEAT_1_LABEL " Preheat Settings")); #if PREHEAT_COUNT > 1 - DWIN_Draw_Label(TEMP_CASE_ABS, F(PREHEAT_2_LABEL " Preheat Settings")); + dwinDrawLabel(TEMP_CASE_ABS, F(PREHEAT_2_LABEL " Preheat Settings")); #endif #endif #else #if HAS_HOTEND - Item_AreaCopy(197, 104, 238, 114, TEMP_CASE_TEMP); // "Nozzle" - Item_AreaCopy(1, 89, 83, 101, TEMP_CASE_TEMP, 44); // "Temperature" + itemAreaCopy(197, 104, 238, 114, TEMP_CASE_TEMP); // "Nozzle" + itemAreaCopy(1, 89, 83, 101, TEMP_CASE_TEMP, 44); // "Temperature" #endif #if HAS_HEATED_BED - Item_AreaCopy(240, 104, 264, 114, TEMP_CASE_BED); // "Bed" - Item_AreaCopy(1, 89, 83, 101, TEMP_CASE_BED, 27); // "Temperature" + itemAreaCopy(240, 104, 264, 114, TEMP_CASE_BED); // "Bed" + itemAreaCopy(1, 89, 83, 101, TEMP_CASE_BED, 27); // "Temperature" #endif #if HAS_FAN - Item_AreaCopy( 1, 119, 61, 132, TEMP_CASE_FAN); // "Fan speed" + itemAreaCopy( 1, 119, 61, 132, TEMP_CASE_FAN); // "Fan speed" #endif #if HAS_PREHEAT - Item_AreaCopy(107, 76, 156, 86, TEMP_CASE_PLA); // "Preheat" + itemAreaCopy(107, 76, 156, 86, TEMP_CASE_PLA); // "Preheat" say_pla_en(52, TEMP_CASE_PLA); // "PLA" - Item_AreaCopy(150, 135, 202, 148, TEMP_CASE_PLA, 79); // "Settings" + itemAreaCopy(150, 135, 202, 148, TEMP_CASE_PLA, 79); // "Settings" #if PREHEAT_COUNT > 1 - Item_AreaCopy(107, 76, 156, 86, TEMP_CASE_ABS); // "Preheat" + itemAreaCopy(107, 76, 156, 86, TEMP_CASE_ABS); // "Preheat" say_abs_en(52, TEMP_CASE_ABS); // "ABS" - Item_AreaCopy(150, 135, 202, 148, TEMP_CASE_ABS, 81); // "Settings" + itemAreaCopy(150, 135, 202, 148, TEMP_CASE_ABS, 81); // "Settings" #endif #endif #endif } - Draw_Back_First(select_temp.now == CASE_BACK); - if (select_temp.now != CASE_BACK) Draw_Menu_Cursor(select_temp.now); + drawBackFirst(select_temp.now == CASE_BACK); + if (select_temp.now != CASE_BACK) drawMenuCursor(select_temp.now); // Draw icons and lines uint8_t i = 0; - #define _TMENU_ICON(N) Draw_Menu_Line(++i, ICON_SetEndTemp + (N) - 1) + #define _TMENU_ICON(N) drawMenuLine(++i, ICON_SetEndTemp + (N) - 1) #if HAS_HOTEND _TMENU_ICON(TEMP_CASE_TEMP); - Draw_Edit_Integer3(i, thermalManager.degTargetHotend(0)); + drawEditInteger3(i, thermalManager.degTargetHotend(0)); #endif #if HAS_HEATED_BED _TMENU_ICON(TEMP_CASE_BED); - Draw_Edit_Integer3(i, thermalManager.degTargetBed()); + drawEditInteger3(i, thermalManager.degTargetBed()); #endif #if HAS_FAN _TMENU_ICON(TEMP_CASE_FAN); - Draw_Edit_Integer3(i, thermalManager.fan_speed[0]); + drawEditInteger3(i, thermalManager.fan_speed[0]); #endif #if HAS_PREHEAT // PLA/ABS items have submenus - _TMENU_ICON(TEMP_CASE_PLA); Draw_More_Icon(i); + _TMENU_ICON(TEMP_CASE_PLA); drawMoreIcon(i); #if PREHEAT_COUNT > 1 - _TMENU_ICON(TEMP_CASE_ABS); Draw_More_Icon(i); + _TMENU_ICON(TEMP_CASE_ABS); drawMoreIcon(i); #endif #endif } // Control -void HMI_Control() { +void hmiControl() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; @@ -2847,107 +2843,107 @@ void HMI_Control() { index_control = select_control.now; // Scroll up and draw a blank bottom line - Scroll_Menu(DWIN_SCROLL_UP); + scrollMenu(DWIN_SCROLL_UP); switch (index_control) { // Last menu items - case CONTROL_CASE_ADVSET: Item_Control_Advanced(MROWS); break; - case CONTROL_CASE_INFO: Item_Control_Info(MROWS); break; + case CONTROL_CASE_ADVSET: itemControlAdvanced(MROWS); break; + case CONTROL_CASE_INFO: itemControlInfo(MROWS); break; default: break; } } else - Move_Highlight(1, select_control.now + MROWS - index_control); + moveHighlight(1, select_control.now + MROWS - index_control); } } else if (encoder_diffState == ENCODER_DIFF_CCW) { if (select_control.dec()) { if (select_control.now < index_control - MROWS) { index_control--; - Scroll_Menu(DWIN_SCROLL_DOWN); + scrollMenu(DWIN_SCROLL_DOWN); switch (index_control) { // First menu items - case MROWS: Draw_Back_First(); break; - case MROWS + 1: Item_Control_Temp(0); break; - case MROWS + 2: Item_Control_Motion(0); break; + case MROWS: drawBackFirst(); break; + case MROWS + 1: itemControlTemp(0); break; + case MROWS + 2: itemControlMotion(0); break; default: break; } } else - Move_Highlight(-1, select_control.now + MROWS - index_control); + moveHighlight(-1, select_control.now + MROWS - index_control); } } else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_control.now) { case CASE_BACK: select_page.set(2); - Goto_MainMenu(); + gotoMainMenu(); break; case CONTROL_CASE_TEMP: checkkey = TemperatureID; - HMI_ValueStruct.show_mode = -1; + hmiValues.show_mode = -1; select_temp.reset(); - Draw_Temperature_Menu(); + drawTemperatureMenu(); break; case CONTROL_CASE_MOVE: checkkey = Motion; select_motion.reset(); - Draw_Motion_Menu(); + drawMotionMenu(); break; #if ENABLED(EEPROM_SETTINGS) case CONTROL_CASE_SAVE: { const bool success = settings.save(); - HMI_AudioFeedback(success); + hmiAudioFeedback(success); } break; case CONTROL_CASE_LOAD: { const bool success = settings.load(); - HMI_AudioFeedback(success); + hmiAudioFeedback(success); } break; case CONTROL_CASE_RESET: settings.reset(); - HMI_AudioFeedback(); + hmiAudioFeedback(); break; #endif case CONTROL_CASE_ADVSET: checkkey = AdvSet; select_advset.reset(); - Draw_AdvancedSettings_Menu(); + drawAdvancedSettingsMenu(); break; case CONTROL_CASE_INFO: checkkey = Info; - Draw_Info_Menu(); + drawInfoMenu(); break; default: break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } #if HAS_ONESTEP_LEVELING // Leveling - void HMI_Leveling() { - Popup_Window_Leveling(); - DWIN_UpdateLCD(); + void hmiLeveling() { + popupWindowLeveling(); + dwinUpdateLCD(); queue.inject(F("G28O\nG29")); } #endif // Axis Move -void HMI_AxisMove() { +void hmiAxisMove() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; #if ENABLED(PREVENT_COLD_EXTRUSION) // popup window resume - if (HMI_flag.cold_flag) { + if (hmiFlag.cold_flag) { if (encoder_diffState == ENCODER_DIFF_ENTER) { - HMI_flag.cold_flag = false; - HMI_ValueStruct.Move_E_scaled = current_position.e * MINUNITMULT; - Draw_Move_Menu(); - Draw_Edit_Float3(1, HMI_ValueStruct.Move_X_scaled); - Draw_Edit_Float3(2, HMI_ValueStruct.Move_Y_scaled); - Draw_Edit_Float3(3, HMI_ValueStruct.Move_Z_scaled); - Draw_Edit_Signed_Float3(4, 0); - DWIN_UpdateLCD(); + hmiFlag.cold_flag = false; + hmiValues.Move_E_scaled = current_position.e * MINUNITMULT; + drawMoveMenu(); + drawEditFloat3(1, hmiValues.Move_X_scaled); + drawEditFloat3(2, hmiValues.Move_Y_scaled); + drawEditFloat3(3, hmiValues.Move_Z_scaled); + drawEditSignedFloat3(4, 0); + dwinUpdateLCD(); } return; } @@ -2955,10 +2951,10 @@ void HMI_AxisMove() { // Avoid flicker by updating only the previous menu if (encoder_diffState == ENCODER_DIFF_CW) { - if (select_axis.inc(1 + 3 + ENABLED(HAS_HOTEND))) Move_Highlight(1, select_axis.now); + if (select_axis.inc(1 + 3 + ENABLED(HAS_HOTEND))) moveHighlight(1, select_axis.now); } else if (encoder_diffState == ENCODER_DIFF_CCW) { - if (select_axis.dec()) Move_Highlight(-1, select_axis.now); + if (select_axis.dec()) moveHighlight(-1, select_axis.now); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_axis.now) { @@ -2966,58 +2962,58 @@ void HMI_AxisMove() { checkkey = Prepare; select_prepare.set(1); index_prepare = MROWS; - Draw_Prepare_Menu(); + drawPrepareMenu(); break; case 1: // X axis move checkkey = Move_X; - HMI_ValueStruct.Move_X_scaled = current_position.x * MINUNITMULT; - Draw_Edit_Float3(1, HMI_ValueStruct.Move_X_scaled, true); - EncoderRate.enabled = true; + hmiValues.Move_X_scaled = current_position.x * MINUNITMULT; + drawEditFloat3(1, hmiValues.Move_X_scaled, true); + encoderRate.enabled = true; break; case 2: // Y axis move checkkey = Move_Y; - HMI_ValueStruct.Move_Y_scaled = current_position.y * MINUNITMULT; - Draw_Edit_Float3(2, HMI_ValueStruct.Move_Y_scaled, true); - EncoderRate.enabled = true; + hmiValues.Move_Y_scaled = current_position.y * MINUNITMULT; + drawEditFloat3(2, hmiValues.Move_Y_scaled, true); + encoderRate.enabled = true; break; case 3: // Z axis move checkkey = Move_Z; - HMI_ValueStruct.Move_Z_scaled = current_position.z * MINUNITMULT; - Draw_Edit_Float3(3, HMI_ValueStruct.Move_Z_scaled, true); - EncoderRate.enabled = true; + hmiValues.Move_Z_scaled = current_position.z * MINUNITMULT; + drawEditFloat3(3, hmiValues.Move_Z_scaled, true); + encoderRate.enabled = true; break; #if HAS_HOTEND case 4: // Extruder #if ENABLED(PREVENT_COLD_EXTRUSION) if (thermalManager.tooColdToExtrude(0)) { - HMI_flag.cold_flag = true; - Popup_Window_ETempTooLow(); - DWIN_UpdateLCD(); + hmiFlag.cold_flag = true; + popupWindowETempTooLow(); + dwinUpdateLCD(); return; } #endif checkkey = Extruder; - HMI_ValueStruct.Move_E_scaled = current_position.e * MINUNITMULT; - Draw_Edit_Signed_Float3(4, HMI_ValueStruct.Move_E_scaled, true); - EncoderRate.enabled = true; + hmiValues.Move_E_scaled = current_position.e * MINUNITMULT; + drawEditSignedFloat3(4, hmiValues.Move_E_scaled, true); + encoderRate.enabled = true; break; #endif } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } // TemperatureID -void HMI_Temperature() { +void hmiTemperature() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; // Avoid flicker by updating only the previous menu if (encoder_diffState == ENCODER_DIFF_CW) { - if (select_temp.inc(1 + TEMP_CASE_TOTAL)) Move_Highlight(1, select_temp.now); + if (select_temp.inc(1 + TEMP_CASE_TOTAL)) moveHighlight(1, select_temp.now); } else if (encoder_diffState == ENCODER_DIFF_CCW) { - if (select_temp.dec()) Move_Highlight(-1, select_temp.now); + if (select_temp.dec()) moveHighlight(-1, select_temp.now); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_temp.now) { @@ -3025,30 +3021,30 @@ void HMI_Temperature() { checkkey = Control; select_control.set(1); index_control = MROWS; - Draw_Control_Menu(); + drawControlMenu(); break; #if HAS_HOTEND case TEMP_CASE_TEMP: checkkey = ETemp; - HMI_ValueStruct.E_Temp = thermalManager.degTargetHotend(0); - Draw_Edit_Integer3(1, HMI_ValueStruct.E_Temp, true); - EncoderRate.enabled = true; + hmiValues.E_Temp = thermalManager.degTargetHotend(0); + drawEditInteger3(1, hmiValues.E_Temp, true); + encoderRate.enabled = true; break; #endif #if HAS_HEATED_BED case TEMP_CASE_BED: checkkey = BedTemp; - HMI_ValueStruct.Bed_Temp = thermalManager.degTargetBed(); - Draw_Edit_Integer3(2, HMI_ValueStruct.Bed_Temp, true); - EncoderRate.enabled = true; + hmiValues.Bed_Temp = thermalManager.degTargetBed(); + drawEditInteger3(2, hmiValues.Bed_Temp, true); + encoderRate.enabled = true; break; #endif #if HAS_FAN case TEMP_CASE_FAN: checkkey = FanSpeed; - HMI_ValueStruct.Fan_speed = thermalManager.fan_speed[0]; - Draw_Edit_Integer3(3, HMI_ValueStruct.Fan_speed, true); - EncoderRate.enabled = true; + hmiValues.Fan_speed = thermalManager.fan_speed[0]; + drawEditInteger3(3, hmiValues.Fan_speed, true); + encoderRate.enabled = true; break; #endif @@ -3056,77 +3052,77 @@ void HMI_Temperature() { case TEMP_CASE_PLA: { checkkey = PLAPreheat; select_PLA.reset(); - HMI_ValueStruct.show_mode = -2; + hmiValues.show_mode = -2; - Clear_Main_Window(); + clearMainWindow(); - if (HMI_IsChinese()) { - DWIN_Frame_TitleCopy(59, 16, 81, 14); // "PLA Settings" - Item_AreaCopy(100, 89, 124, 101, PREHEAT_CASE_TEMP); - Item_AreaCopy(1, 134, 56, 146, PREHEAT_CASE_TEMP, 24); // PLA nozzle temp + if (hmiIsChinese()) { + dwinFrameTitleCopy(59, 16, 81, 14); // "PLA Settings" + itemAreaCopy(100, 89, 124, 101, PREHEAT_CASE_TEMP); + itemAreaCopy(1, 134, 56, 146, PREHEAT_CASE_TEMP, 24); // PLA nozzle temp #if HAS_HEATED_BED - Item_AreaCopy(100, 89, 124, 101, PREHEAT_CASE_BED); - Item_AreaCopy(58, 134, 113, 146, PREHEAT_CASE_BED, 24); // PLA bed temp + itemAreaCopy(100, 89, 124, 101, PREHEAT_CASE_BED); + itemAreaCopy(58, 134, 113, 146, PREHEAT_CASE_BED, 24); // PLA bed temp #endif #if HAS_FAN - Item_AreaCopy(100, 89, 124, 101, PREHEAT_CASE_FAN); - Item_AreaCopy(115, 134, 170, 146, PREHEAT_CASE_FAN, 24); // PLA fan speed + itemAreaCopy(100, 89, 124, 101, PREHEAT_CASE_FAN); + itemAreaCopy(115, 134, 170, 146, PREHEAT_CASE_FAN, 24); // PLA fan speed #endif #if ENABLED(EEPROM_SETTINGS) - Item_AreaCopy(72, 148, 151, 162, PREHEAT_CASE_SAVE); // Save PLA configuration + itemAreaCopy(72, 148, 151, 162, PREHEAT_CASE_SAVE); // Save PLA configuration #endif } else { #ifdef USE_STRING_HEADINGS - Draw_Title(F(PREHEAT_1_LABEL " Settings")); // TODO: GET_TEXT_F + drawTitle(F(PREHEAT_1_LABEL " Settings")); // TODO: GET_TEXT_F #else - DWIN_Frame_TitleCopy(56, 15, 85, 14); // "Temperature" TODO: "PLA Settings" + dwinFrameTitleCopy(56, 15, 85, 14); // "Temperature" TODO: "PLA Settings" #endif #ifdef USE_STRING_TITLES - DWIN_Draw_Label(PREHEAT_CASE_TEMP, F("Nozzle Temp")); + dwinDrawLabel(PREHEAT_CASE_TEMP, F("Nozzle Temp")); #if HAS_HEATED_BED - DWIN_Draw_Label(PREHEAT_CASE_BED, F("Bed Temp")); + dwinDrawLabel(PREHEAT_CASE_BED, F("Bed Temp")); #endif #if HAS_FAN - DWIN_Draw_Label(PREHEAT_CASE_FAN, GET_TEXT_F(MSG_FAN_SPEED)); + dwinDrawLabel(PREHEAT_CASE_FAN, GET_TEXT_F(MSG_FAN_SPEED)); #endif #if ENABLED(EEPROM_SETTINGS) - DWIN_Draw_Label(PREHEAT_CASE_SAVE, GET_TEXT_F(MSG_STORE_EEPROM)); + dwinDrawLabel(PREHEAT_CASE_SAVE, GET_TEXT_F(MSG_STORE_EEPROM)); #endif #else say_pla_en(0, PREHEAT_CASE_TEMP); // "PLA" - Item_AreaCopy(198, 104, 237, 114, PREHEAT_CASE_TEMP, 27); // "Nozzle" - Item_AreaCopy(1, 89, 81, 102, PREHEAT_CASE_TEMP, 71); // "Temperature" + itemAreaCopy(198, 104, 237, 114, PREHEAT_CASE_TEMP, 27); // "Nozzle" + itemAreaCopy(1, 89, 81, 102, PREHEAT_CASE_TEMP, 71); // "Temperature" #if HAS_HEATED_BED say_pla_en(0, PREHEAT_CASE_BED); // "PLA" - Item_AreaCopy(240, 104, 264, 114, PREHEAT_CASE_BED, 27); // "Bed" - Item_AreaCopy(1, 89, 83, 101, PREHEAT_CASE_BED, 54); // "Temperature" + itemAreaCopy(240, 104, 264, 114, PREHEAT_CASE_BED, 27); // "Bed" + itemAreaCopy(1, 89, 83, 101, PREHEAT_CASE_BED, 54); // "Temperature" #endif #if HAS_FAN say_pla_en(0, PREHEAT_CASE_FAN); // "PLA" - Item_AreaCopy(0, 119, 64, 132, PREHEAT_CASE_FAN, 27); // "Fan speed" + itemAreaCopy(0, 119, 64, 132, PREHEAT_CASE_FAN, 27); // "Fan speed" #endif #if ENABLED(EEPROM_SETTINGS) - Item_AreaCopy(98, 164, 233, 177, PREHEAT_CASE_SAVE); // "Save PLA parameters" + itemAreaCopy(98, 164, 233, 177, PREHEAT_CASE_SAVE); // "Save PLA parameters" #endif #endif } - Draw_Back_First(); + drawBackFirst(); uint8_t i = 0; - Draw_Menu_Line(++i, ICON_SetEndTemp); - Draw_Edit_Integer3(i, ui.material_preset[0].hotend_temp); + drawMenuLine(++i, ICON_SetEndTemp); + drawEditInteger3(i, ui.material_preset[0].hotend_temp); #if HAS_HEATED_BED - Draw_Menu_Line(++i, ICON_SetBedTemp); - Draw_Edit_Integer3(i, ui.material_preset[0].bed_temp); + drawMenuLine(++i, ICON_SetBedTemp); + drawEditInteger3(i, ui.material_preset[0].bed_temp); #endif #if HAS_FAN - Draw_Menu_Line(++i, ICON_FanSpeed); - Draw_Edit_Integer3(i, ui.material_preset[0].fan_speed); + drawMenuLine(++i, ICON_FanSpeed); + drawEditInteger3(i, ui.material_preset[0].fan_speed); #endif #if ENABLED(EEPROM_SETTINGS) - Draw_Menu_Line(++i, ICON_WriteEEPROM); + drawMenuLine(++i, ICON_WriteEEPROM); #endif } break; #endif // HAS_PREHEAT @@ -3135,80 +3131,80 @@ void HMI_Temperature() { case TEMP_CASE_ABS: { // ABS preheat setting checkkey = ABSPreheat; select_ABS.reset(); - HMI_ValueStruct.show_mode = -3; + hmiValues.show_mode = -3; - Clear_Main_Window(); + clearMainWindow(); - if (HMI_IsChinese()) { - DWIN_Frame_TitleCopy(142, 16, 82, 14); // "ABS Settings" + if (hmiIsChinese()) { + dwinFrameTitleCopy(142, 16, 82, 14); // "ABS Settings" - Item_AreaCopy(180, 89, 204, 100, PREHEAT_CASE_TEMP); - Item_AreaCopy(1, 134, 56, 146, PREHEAT_CASE_TEMP, 24); // ABS nozzle temp + itemAreaCopy(180, 89, 204, 100, PREHEAT_CASE_TEMP); + itemAreaCopy(1, 134, 56, 146, PREHEAT_CASE_TEMP, 24); // ABS nozzle temp #if HAS_HEATED_BED - Item_AreaCopy(180, 89, 204, 100, PREHEAT_CASE_BED); - Item_AreaCopy(58, 134, 113, 146, PREHEAT_CASE_BED, 24); // ABS bed temp + itemAreaCopy(180, 89, 204, 100, PREHEAT_CASE_BED); + itemAreaCopy(58, 134, 113, 146, PREHEAT_CASE_BED, 24); // ABS bed temp #endif #if HAS_FAN - Item_AreaCopy(180, 89, 204, 100, PREHEAT_CASE_FAN); - Item_AreaCopy(115, 134, 170, 146, PREHEAT_CASE_FAN, 24); // ABS fan speed + itemAreaCopy(180, 89, 204, 100, PREHEAT_CASE_FAN); + itemAreaCopy(115, 134, 170, 146, PREHEAT_CASE_FAN, 24); // ABS fan speed #endif #if ENABLED(EEPROM_SETTINGS) - Item_AreaCopy(72, 148, 151, 162, PREHEAT_CASE_SAVE); - Item_AreaCopy(180, 89, 204, 100, PREHEAT_CASE_SAVE, 28, 2); // Save ABS configuration + itemAreaCopy(72, 148, 151, 162, PREHEAT_CASE_SAVE); + itemAreaCopy(180, 89, 204, 100, PREHEAT_CASE_SAVE, 28, 2); // Save ABS configuration #endif } else { #ifdef USE_STRING_HEADINGS - Draw_Title(F("ABS Settings")); // TODO: GET_TEXT_F + drawTitle(F("ABS Settings")); // TODO: GET_TEXT_F #else - DWIN_Frame_TitleCopy(56, 15, 85, 14); // "Temperature" TODO: "ABS Settings" + dwinFrameTitleCopy(56, 15, 85, 14); // "Temperature" TODO: "ABS Settings" #endif #ifdef USE_STRING_TITLES - DWIN_Draw_Label(PREHEAT_CASE_TEMP, F("Nozzle Temp")); + dwinDrawLabel(PREHEAT_CASE_TEMP, F("Nozzle Temp")); #if HAS_HEATED_BED - DWIN_Draw_Label(PREHEAT_CASE_BED, F("Bed Temp")); + dwinDrawLabel(PREHEAT_CASE_BED, F("Bed Temp")); #endif #if HAS_FAN - DWIN_Draw_Label(PREHEAT_CASE_FAN, GET_TEXT_F(MSG_FAN_SPEED)); + dwinDrawLabel(PREHEAT_CASE_FAN, GET_TEXT_F(MSG_FAN_SPEED)); #endif #if ENABLED(EEPROM_SETTINGS) - DWIN_Draw_Label(PREHEAT_CASE_SAVE, GET_TEXT_F(MSG_STORE_EEPROM)); + dwinDrawLabel(PREHEAT_CASE_SAVE, GET_TEXT_F(MSG_STORE_EEPROM)); #endif #else say_abs_en(0, PREHEAT_CASE_TEMP); // "ABS" - Item_AreaCopy(197, 104, 238, 114, PREHEAT_CASE_TEMP, 29); // "Nozzle" - Item_AreaCopy(1, 89, 34, 102, PREHEAT_CASE_TEMP, 73); // "Temp" + itemAreaCopy(197, 104, 238, 114, PREHEAT_CASE_TEMP, 29); // "Nozzle" + itemAreaCopy(1, 89, 34, 102, PREHEAT_CASE_TEMP, 73); // "Temp" #if HAS_HEATED_BED say_abs_en(0, PREHEAT_CASE_BED); // "ABS" - Item_AreaCopy(240, 104, 264, 114, PREHEAT_CASE_BED, 29); // "Bed" - Item_AreaCopy(1, 89, 83, 102, PREHEAT_CASE_BED, 56); // "Temperature" + itemAreaCopy(240, 104, 264, 114, PREHEAT_CASE_BED, 29); // "Bed" + itemAreaCopy(1, 89, 83, 102, PREHEAT_CASE_BED, 56); // "Temperature" #endif #if HAS_FAN say_abs_en(0, PREHEAT_CASE_FAN); // "ABS" - Item_AreaCopy(0, 119, 64, 132, PREHEAT_CASE_FAN, 29); // "Fan speed" + itemAreaCopy(0, 119, 64, 132, PREHEAT_CASE_FAN, 29); // "Fan speed" #endif #if ENABLED(EEPROM_SETTINGS) - Item_AreaCopy(98, 165, 233, 177, PREHEAT_CASE_SAVE); // "Save PLA parameters" + itemAreaCopy(98, 165, 233, 177, PREHEAT_CASE_SAVE); // "Save PLA parameters" say_abs_en(33, PREHEAT_CASE_SAVE); // "ABS" #endif #endif } - Draw_Back_First(); + drawBackFirst(); uint8_t i = 0; - Draw_Menu_Line(++i, ICON_SetEndTemp); - Draw_Edit_Integer3(i, ui.material_preset[1].hotend_temp); + drawMenuLine(++i, ICON_SetEndTemp); + drawEditInteger3(i, ui.material_preset[1].hotend_temp); #if HAS_HEATED_BED - Draw_Menu_Line(++i, ICON_SetBedTemp); - Draw_Edit_Integer3(i, ui.material_preset[1].bed_temp); + drawMenuLine(++i, ICON_SetBedTemp); + drawEditInteger3(i, ui.material_preset[1].bed_temp); #endif #if HAS_FAN - Draw_Menu_Line(++i, ICON_FanSpeed); - Draw_Edit_Integer3(i, ui.material_preset[1].fan_speed); + drawMenuLine(++i, ICON_FanSpeed); + drawEditInteger3(i, ui.material_preset[1].fan_speed); #endif #if ENABLED(EEPROM_SETTINGS) - Draw_Menu_Line(++i, ICON_WriteEEPROM); + drawMenuLine(++i, ICON_WriteEEPROM); #endif } break; @@ -3216,42 +3212,42 @@ void HMI_Temperature() { #endif // PREHEAT_COUNT > 1 } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } -void Draw_Max_Speed_Menu() { - Clear_Main_Window(); +void drawMaxSpeedMenu() { + clearMainWindow(); - if (HMI_IsChinese()) { - DWIN_Frame_TitleCopy(1, 16, 28, 13); // "Max Speed (mm/s)" + if (hmiIsChinese()) { + dwinFrameTitleCopy(1, 16, 28, 13); // "Max Speed (mm/s)" auto say_max_speed_cn = [](const uint8_t line) { - Item_AreaCopy(173, 133, 228, 147, line); // "Max speed" + itemAreaCopy(173, 133, 228, 147, line); // "Max speed" }; say_max_speed_cn(1); // "Max speed" - Item_AreaCopy(229, 133, 236, 147, 1, 58); // "X" + itemAreaCopy(229, 133, 236, 147, 1, 58); // "X" say_max_speed_cn(2); // "Max speed" - Item_AreaCopy(1, 150, 7, 160, 2, 58, 3); // "Y" + itemAreaCopy(1, 150, 7, 160, 2, 58, 3); // "Y" say_max_speed_cn(3); // "Max speed" - Item_AreaCopy(9, 150, 16, 160, 3, 58, 3); // "Z" + itemAreaCopy(9, 150, 16, 160, 3, 58, 3); // "Z" #if HAS_HOTEND say_max_speed_cn(4); // "Max speed" - Item_AreaCopy(18, 150, 25, 160, 4, 58, 3); // "E" + itemAreaCopy(18, 150, 25, 160, 4, 58, 3); // "E" #endif } else { #ifdef USE_STRING_HEADINGS - Draw_Title(F("Max Speed (mm/s)")); // TODO: GET_TEXT_F + drawTitle(F("Max Speed (mm/s)")); // TODO: GET_TEXT_F #else - DWIN_Frame_TitleCopy(144, 16, 46, 11); // "Max Speed (mm/s)" + dwinFrameTitleCopy(144, 16, 46, 11); // "Max Speed (mm/s)" #endif #ifdef USE_STRING_TITLES - DWIN_Draw_Label(1, F("Max Feedrate X")); - DWIN_Draw_Label(2, F("Max Feedrate Y")); - DWIN_Draw_Label(3, F("Max Feedrate Z")); + dwinDrawLabel(1, F("Max Feedrate X")); + dwinDrawLabel(2, F("Max Feedrate Y")); + dwinDrawLabel(3, F("Max Feedrate Z")); #if HAS_HOTEND - DWIN_Draw_Label(4, F("Max Feedrate E")); + dwinDrawLabel(4, F("Max Feedrate E")); #endif #else say_max_en(1); say_speed_en(30, 1); say_x_en(73, 1); // "Max Speed X" @@ -3263,49 +3259,49 @@ void Draw_Max_Speed_Menu() { #endif } - Draw_Back_First(); - for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) Draw_Menu_Line(i + 1, ICON_MaxSpeedX + i); - Draw_Edit_Integer4(1, planner.settings.max_feedrate_mm_s[X_AXIS]); - Draw_Edit_Integer4(2, planner.settings.max_feedrate_mm_s[Y_AXIS]); - Draw_Edit_Integer4(3, planner.settings.max_feedrate_mm_s[Z_AXIS]); + drawBackFirst(); + for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) drawMenuLine(i + 1, ICON_MaxSpeedX + i); + drawEditInteger4(1, planner.settings.max_feedrate_mm_s[X_AXIS]); + drawEditInteger4(2, planner.settings.max_feedrate_mm_s[Y_AXIS]); + drawEditInteger4(3, planner.settings.max_feedrate_mm_s[Z_AXIS]); #if HAS_HOTEND - Draw_Edit_Integer4(4, planner.settings.max_feedrate_mm_s[E_AXIS]); + drawEditInteger4(4, planner.settings.max_feedrate_mm_s[E_AXIS]); #endif } -void Draw_Max_Accel_Menu() { - Clear_Main_Window(); +void drawMaxAccelMenu() { + clearMainWindow(); - if (HMI_IsChinese()) { - DWIN_Frame_TitleCopy(1, 16, 28, 13); // "Acceleration" + if (hmiIsChinese()) { + dwinFrameTitleCopy(1, 16, 28, 13); // "Acceleration" - Item_AreaCopy(173, 133, 200, 147, 1); - Item_AreaCopy( 28, 149, 69, 161, 1, 30, 1); - Item_AreaCopy(229, 133, 236, 147, 1, 74); // Max acceleration X - Item_AreaCopy(173, 133, 200, 147, 2); - Item_AreaCopy( 28, 149, 69, 161, 2, 30, 1); - Item_AreaCopy( 1, 150, 7, 160, 2, 74, 2); // Max acceleration Y - Item_AreaCopy(173, 133, 200, 147, 3); - Item_AreaCopy( 28, 149, 69, 161, 3, 30, 1); - Item_AreaCopy( 9, 150, 16, 160, 3, 74, 2); // Max acceleration Z + itemAreaCopy(173, 133, 200, 147, 1); + itemAreaCopy( 28, 149, 69, 161, 1, 30, 1); + itemAreaCopy(229, 133, 236, 147, 1, 74); // Max acceleration X + itemAreaCopy(173, 133, 200, 147, 2); + itemAreaCopy( 28, 149, 69, 161, 2, 30, 1); + itemAreaCopy( 1, 150, 7, 160, 2, 74, 2); // Max acceleration Y + itemAreaCopy(173, 133, 200, 147, 3); + itemAreaCopy( 28, 149, 69, 161, 3, 30, 1); + itemAreaCopy( 9, 150, 16, 160, 3, 74, 2); // Max acceleration Z #if HAS_HOTEND - Item_AreaCopy(173, 133, 200, 147, 4); - Item_AreaCopy( 28, 149, 69, 161, 4, 30, 1); - Item_AreaCopy( 18, 150, 25, 160, 4, 74, 2); // Max acceleration E + itemAreaCopy(173, 133, 200, 147, 4); + itemAreaCopy( 28, 149, 69, 161, 4, 30, 1); + itemAreaCopy( 18, 150, 25, 160, 4, 74, 2); // Max acceleration E #endif } else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_ACCELERATION)); + drawTitle(GET_TEXT_F(MSG_ACCELERATION)); #else - DWIN_Frame_TitleCopy(144, 16, 46, 11); // "Acceleration" + dwinFrameTitleCopy(144, 16, 46, 11); // "Acceleration" #endif #ifdef USE_STRING_TITLES - DWIN_Draw_Label(1, F("Max Accel X")); - DWIN_Draw_Label(2, F("Max Accel Y")); - DWIN_Draw_Label(3, F("Max Accel Z")); + dwinDrawLabel(1, F("Max Accel X")); + dwinDrawLabel(2, F("Max Accel Y")); + dwinDrawLabel(3, F("Max Accel Z")); #if HAS_HOTEND - DWIN_Draw_Label(4, F("Max Accel E")); + dwinDrawLabel(4, F("Max Accel E")); #endif #else say_max_accel_en(1); say_x_en(112, 1); // "Max Acceleration X" @@ -3317,54 +3313,54 @@ void Draw_Max_Accel_Menu() { #endif } - Draw_Back_First(); - for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) Draw_Menu_Line(i + 1, ICON_MaxAccX + i); - Draw_Edit_Integer4(1, planner.settings.max_acceleration_mm_per_s2[X_AXIS]); - Draw_Edit_Integer4(2, planner.settings.max_acceleration_mm_per_s2[Y_AXIS]); - Draw_Edit_Integer4(3, planner.settings.max_acceleration_mm_per_s2[Z_AXIS]); + drawBackFirst(); + for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) drawMenuLine(i + 1, ICON_MaxAccX + i); + drawEditInteger4(1, planner.settings.max_acceleration_mm_per_s2[X_AXIS]); + drawEditInteger4(2, planner.settings.max_acceleration_mm_per_s2[Y_AXIS]); + drawEditInteger4(3, planner.settings.max_acceleration_mm_per_s2[Z_AXIS]); #if HAS_HOTEND - Draw_Edit_Integer4(4, planner.settings.max_acceleration_mm_per_s2[E_AXIS]); + drawEditInteger4(4, planner.settings.max_acceleration_mm_per_s2[E_AXIS]); #endif } #if HAS_CLASSIC_JERK - void Draw_Max_Jerk_Menu() { - Clear_Main_Window(); + void drawMaxJerkMenu() { + clearMainWindow(); - if (HMI_IsChinese()) { - DWIN_Frame_TitleCopy(1, 16, 28, 13); // "Jerk" + if (hmiIsChinese()) { + dwinFrameTitleCopy(1, 16, 28, 13); // "Jerk" - Item_AreaCopy(173, 133, 200, 147, 1); - Item_AreaCopy( 1, 180, 28, 192, 1, 30, 1); - Item_AreaCopy(202, 133, 228, 147, 1, 56); - Item_AreaCopy(229, 133, 236, 147, 1, 86); // Max Jerk speed X - Item_AreaCopy(173, 133, 200, 147, 2); - Item_AreaCopy( 1, 180, 28, 192, 2, 30, 1); - Item_AreaCopy(202, 133, 228, 147, 2, 56); - Item_AreaCopy( 1, 150, 7, 160, 2, 86, 3); // Max Jerk speed Y - Item_AreaCopy(173, 133, 200, 147, 3); - Item_AreaCopy( 1, 180, 28, 192, 3, 30, 1); - Item_AreaCopy(202, 133, 228, 147, 3, 56); - Item_AreaCopy( 9, 150, 16, 160, 3, 86, 3); // Max Jerk speed Z + itemAreaCopy(173, 133, 200, 147, 1); + itemAreaCopy( 1, 180, 28, 192, 1, 30, 1); + itemAreaCopy(202, 133, 228, 147, 1, 56); + itemAreaCopy(229, 133, 236, 147, 1, 86); // Max Jerk speed X + itemAreaCopy(173, 133, 200, 147, 2); + itemAreaCopy( 1, 180, 28, 192, 2, 30, 1); + itemAreaCopy(202, 133, 228, 147, 2, 56); + itemAreaCopy( 1, 150, 7, 160, 2, 86, 3); // Max Jerk speed Y + itemAreaCopy(173, 133, 200, 147, 3); + itemAreaCopy( 1, 180, 28, 192, 3, 30, 1); + itemAreaCopy(202, 133, 228, 147, 3, 56); + itemAreaCopy( 9, 150, 16, 160, 3, 86, 3); // Max Jerk speed Z #if HAS_HOTEND - Item_AreaCopy(173, 133, 200, 147, 4); - Item_AreaCopy( 1, 180, 28, 192, 4, 30, 1); - Item_AreaCopy(202, 133, 228, 147, 4, 56); - Item_AreaCopy( 18, 150, 25, 160, 4, 86, 3); // Max Jerk speed E + itemAreaCopy(173, 133, 200, 147, 4); + itemAreaCopy( 1, 180, 28, 192, 4, 30, 1); + itemAreaCopy(202, 133, 228, 147, 4, 56); + itemAreaCopy( 18, 150, 25, 160, 4, 86, 3); // Max Jerk speed E #endif } else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_JERK)); + drawTitle(GET_TEXT_F(MSG_JERK)); #else - DWIN_Frame_TitleCopy(144, 16, 46, 11); // "Jerk" + dwinFrameTitleCopy(144, 16, 46, 11); // "Jerk" #endif #ifdef USE_STRING_TITLES - DWIN_Draw_Label(1, GET_TEXT_F(MSG_VA_JERK)); - DWIN_Draw_Label(2, GET_TEXT_F(MSG_VB_JERK)); - DWIN_Draw_Label(3, GET_TEXT_F(MSG_VC_JERK)); + dwinDrawLabel(1, GET_TEXT_F(MSG_VA_JERK)); + dwinDrawLabel(2, GET_TEXT_F(MSG_VB_JERK)); + dwinDrawLabel(3, GET_TEXT_F(MSG_VC_JERK)); #if HAS_HOTEND - DWIN_Draw_Label(4, GET_TEXT_F(MSG_VE_JERK)); + dwinDrawLabel(4, GET_TEXT_F(MSG_VE_JERK)); #endif #else say_max_jerk_speed_en(1); say_x_en(102, 1); // Max Jerk speed X @@ -3376,46 +3372,46 @@ void Draw_Max_Accel_Menu() { #endif } - Draw_Back_First(); - for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) Draw_Menu_Line(i + 1, ICON_MaxSpeedJerkX + i); - Draw_Edit_Float3(1, planner.max_jerk.x * MINUNITMULT); - Draw_Edit_Float3(2, planner.max_jerk.y * MINUNITMULT); - Draw_Edit_Float3(3, planner.max_jerk.z * MINUNITMULT); + drawBackFirst(); + for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) drawMenuLine(i + 1, ICON_MaxSpeedJerkX + i); + drawEditFloat3(1, planner.max_jerk.x * MINUNITMULT); + drawEditFloat3(2, planner.max_jerk.y * MINUNITMULT); + drawEditFloat3(3, planner.max_jerk.z * MINUNITMULT); #if HAS_HOTEND - Draw_Edit_Float3(4, planner.max_jerk.e * MINUNITMULT); + drawEditFloat3(4, planner.max_jerk.e * MINUNITMULT); #endif } #endif -void Draw_Steps_Menu() { - Clear_Main_Window(); +void drawStepsMenu() { + clearMainWindow(); - if (HMI_IsChinese()) { - DWIN_Frame_TitleCopy(1, 16, 28, 13); // "Steps per mm" + if (hmiIsChinese()) { + dwinFrameTitleCopy(1, 16, 28, 13); // "Steps per mm" - Item_AreaCopy(153, 148, 194, 161, 1); - Item_AreaCopy(229, 133, 236, 147, 1, 44); // Transmission Ratio X - Item_AreaCopy(153, 148, 194, 161, 2); - Item_AreaCopy( 1, 150, 7, 160, 2, 44, 3); // Transmission Ratio Y - Item_AreaCopy(153, 148, 194, 161, 3); - Item_AreaCopy( 9, 150, 16, 160, 3, 44, 3); // Transmission Ratio Z + itemAreaCopy(153, 148, 194, 161, 1); + itemAreaCopy(229, 133, 236, 147, 1, 44); // Transmission Ratio X + itemAreaCopy(153, 148, 194, 161, 2); + itemAreaCopy( 1, 150, 7, 160, 2, 44, 3); // Transmission Ratio Y + itemAreaCopy(153, 148, 194, 161, 3); + itemAreaCopy( 9, 150, 16, 160, 3, 44, 3); // Transmission Ratio Z #if HAS_HOTEND - Item_AreaCopy(153, 148, 194, 161, 4); - Item_AreaCopy( 18, 150, 25, 160, 4, 44, 3); // Transmission Ratio E + itemAreaCopy(153, 148, 194, 161, 4); + itemAreaCopy( 18, 150, 25, 160, 4, 44, 3); // Transmission Ratio E #endif } else { #ifdef USE_STRING_HEADINGS - Draw_Title(GET_TEXT_F(MSG_STEPS_PER_MM)); + drawTitle(GET_TEXT_F(MSG_STEPS_PER_MM)); #else - DWIN_Frame_TitleCopy(144, 16, 46, 11); // "Steps per mm" + dwinFrameTitleCopy(144, 16, 46, 11); // "Steps per mm" #endif #ifdef USE_STRING_TITLES - DWIN_Draw_Label(1, GET_TEXT_F(MSG_A_STEPS)); - DWIN_Draw_Label(2, GET_TEXT_F(MSG_B_STEPS)); - DWIN_Draw_Label(3, GET_TEXT_F(MSG_C_STEPS)); + dwinDrawLabel(1, GET_TEXT_F(MSG_A_STEPS)); + dwinDrawLabel(2, GET_TEXT_F(MSG_B_STEPS)); + dwinDrawLabel(3, GET_TEXT_F(MSG_C_STEPS)); #if HAS_HOTEND - DWIN_Draw_Label(4, GET_TEXT_F(MSG_E_STEPS)); + dwinDrawLabel(4, GET_TEXT_F(MSG_E_STEPS)); #endif #else say_steps_per_mm_en(1); say_x_en(101, 1); // "Steps-per-mm X" @@ -3427,27 +3423,27 @@ void Draw_Steps_Menu() { #endif } - Draw_Back_First(); - for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) Draw_Menu_Line(i + 1, ICON_StepX + i); - Draw_Edit_Float3(1, planner.settings.axis_steps_per_mm[X_AXIS] * MINUNITMULT); - Draw_Edit_Float3(2, planner.settings.axis_steps_per_mm[Y_AXIS] * MINUNITMULT); - Draw_Edit_Float3(3, planner.settings.axis_steps_per_mm[Z_AXIS] * MINUNITMULT); + drawBackFirst(); + for (uint8_t i = 0; i < 3 + ENABLED(HAS_HOTEND); ++i) drawMenuLine(i + 1, ICON_StepX + i); + drawEditFloat3(1, planner.settings.axis_steps_per_mm[X_AXIS] * MINUNITMULT); + drawEditFloat3(2, planner.settings.axis_steps_per_mm[Y_AXIS] * MINUNITMULT); + drawEditFloat3(3, planner.settings.axis_steps_per_mm[Z_AXIS] * MINUNITMULT); #if HAS_HOTEND - Draw_Edit_Float3(4, planner.settings.axis_steps_per_mm[E_AXIS] * MINUNITMULT); + drawEditFloat3(4, planner.settings.axis_steps_per_mm[E_AXIS] * MINUNITMULT); #endif } // Motion -void HMI_Motion() { +void hmiMotion() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; // Avoid flicker by updating only the previous menu if (encoder_diffState == ENCODER_DIFF_CW) { - if (select_motion.inc(1 + MOTION_CASE_TOTAL)) Move_Highlight(1, select_motion.now); + if (select_motion.inc(1 + MOTION_CASE_TOTAL)) moveHighlight(1, select_motion.now); } else if (encoder_diffState == ENCODER_DIFF_CCW) { - if (select_motion.dec()) Move_Highlight(-1, select_motion.now); + if (select_motion.dec()) moveHighlight(-1, select_motion.now); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_motion.now) { @@ -3455,38 +3451,38 @@ void HMI_Motion() { checkkey = Control; select_control.set(CONTROL_CASE_MOVE); index_control = MROWS; - Draw_Control_Menu(); + drawControlMenu(); break; case MOTION_CASE_RATE: checkkey = MaxSpeed; select_speed.reset(); - Draw_Max_Speed_Menu(); + drawMaxSpeedMenu(); break; case MOTION_CASE_ACCEL: checkkey = MaxAcceleration; select_acc.reset(); - Draw_Max_Accel_Menu(); + drawMaxAccelMenu(); break; #if HAS_CLASSIC_JERK case MOTION_CASE_JERK: checkkey = MaxJerk; select_jerk.reset(); - Draw_Max_Jerk_Menu(); + drawMaxJerkMenu(); break; #endif case MOTION_CASE_STEPS: checkkey = Step; select_step.reset(); - Draw_Steps_Menu(); + drawStepsMenu(); break; default: break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } // Advanced Settings -void HMI_AdvSet() { +void hmiAdvSet() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; @@ -3497,7 +3493,7 @@ void HMI_AdvSet() { index_advset = select_advset.now; // Scroll up and draw a blank bottom line - Scroll_Menu(DWIN_SCROLL_UP); + scrollMenu(DWIN_SCROLL_UP); //switch (index_advset) { // Redraw last menu items // default: break; @@ -3505,7 +3501,7 @@ void HMI_AdvSet() { } else { - Move_Highlight(1, select_advset.now + MROWS - index_advset); + moveHighlight(1, select_advset.now + MROWS - index_advset); } } } @@ -3513,14 +3509,14 @@ void HMI_AdvSet() { if (select_advset.dec()) { if (select_advset.now < index_advset - MROWS) { index_advset--; - Scroll_Menu(DWIN_SCROLL_DOWN); + scrollMenu(DWIN_SCROLL_DOWN); //switch (index_advset) { // Redraw first menu items // default: break; //} } else { - Move_Highlight(-1, select_advset.now + MROWS - index_advset); + moveHighlight(-1, select_advset.now + MROWS - index_advset); } } } @@ -3530,17 +3526,17 @@ void HMI_AdvSet() { checkkey = Control; select_control.set(CONTROL_CASE_ADVSET); index_control = CONTROL_CASE_ADVSET; - Draw_Control_Menu(); + drawControlMenu(); break; #if HAS_HOME_OFFSET case ADVSET_CASE_HOMEOFF: checkkey = HomeOff; select_item.reset(); - HMI_ValueStruct.Home_OffX_scaled = home_offset.x * 10; - HMI_ValueStruct.Home_OffY_scaled = home_offset.y * 10; - HMI_ValueStruct.Home_OffZ_scaled = home_offset.z * 10; - Draw_HomeOff_Menu(); + hmiValues.Home_OffX_scaled = home_offset.x * 10; + hmiValues.Home_OffY_scaled = home_offset.y * 10; + hmiValues.Home_OffZ_scaled = home_offset.z * 10; + drawHomeOffMenu(); break; #endif @@ -3548,9 +3544,9 @@ void HMI_AdvSet() { case ADVSET_CASE_PROBEOFF: checkkey = ProbeOff; select_item.reset(); - HMI_ValueStruct.Probe_OffX_scaled = probe.offset.x * 10; - HMI_ValueStruct.Probe_OffY_scaled = probe.offset.y * 10; - Draw_ProbeOff_Menu(); + hmiValues.Probe_OffX_scaled = probe.offset.x * 10; + hmiValues.Probe_OffY_scaled = probe.offset.y * 10; + drawProbeOffMenu(); break; #endif @@ -3569,153 +3565,153 @@ void HMI_AdvSet() { #if ENABLED(POWER_LOSS_RECOVERY) case ADVSET_CASE_PWRLOSSR: recovery.enable(!recovery.enabled); - Draw_Checkbox_Line(ADVSET_CASE_PWRLOSSR + MROWS - index_advset, recovery.enabled); + drawCheckboxLine(ADVSET_CASE_PWRLOSSR + MROWS - index_advset, recovery.enabled); break; #endif default: break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } #if HAS_HOME_OFFSET // Home Offset - void HMI_HomeOff() { + void hmiHomeOff() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; // Avoid flicker by updating only the previous menu if (encoder_diffState == ENCODER_DIFF_CW) { - if (select_item.inc(1 + 3)) Move_Highlight(1, select_item.now); + if (select_item.inc(1 + 3)) moveHighlight(1, select_item.now); } else if (encoder_diffState == ENCODER_DIFF_CCW) { - if (select_item.dec()) Move_Highlight(-1, select_item.now); + if (select_item.dec()) moveHighlight(-1, select_item.now); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_item.now) { case CASE_BACK: checkkey = AdvSet; select_advset.set(ADVSET_CASE_HOMEOFF); - Draw_AdvancedSettings_Menu(); + drawAdvancedSettingsMenu(); break; case 1: // Home Offset X checkkey = HomeOffX; - Draw_Edit_Signed_Float3(1, HMI_ValueStruct.Home_OffX_scaled, true); - EncoderRate.enabled = true; + drawEditSignedFloat3(1, hmiValues.Home_OffX_scaled, true); + encoderRate.enabled = true; break; case 2: // Home Offset Y checkkey = HomeOffY; - Draw_Edit_Signed_Float3(2, HMI_ValueStruct.Home_OffY_scaled, true); - EncoderRate.enabled = true; + drawEditSignedFloat3(2, hmiValues.Home_OffY_scaled, true); + encoderRate.enabled = true; break; case 3: // Home Offset Z checkkey = HomeOffZ; - Draw_Edit_Signed_Float3(3, HMI_ValueStruct.Home_OffZ_scaled, true); - EncoderRate.enabled = true; + drawEditSignedFloat3(3, hmiValues.Home_OffZ_scaled, true); + encoderRate.enabled = true; break; default: break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } - void HMI_HomeOffN(const AxisEnum axis, float &posScaled, const_float_t lo, const_float_t hi) { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); + void hmiHomeOffN(const AxisEnum axis, float &posScaled, const_float_t lo, const_float_t hi) { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (Apply_Encoder(encoder_diffState, posScaled)) { + if (applyEncoder(encoder_diffState, posScaled)) { checkkey = HomeOff; - EncoderRate.enabled = false; + encoderRate.enabled = false; set_home_offset(axis, posScaled / 10); - Draw_Edit_Signed_Float3(select_item.now, posScaled); + drawEditSignedFloat3(select_item.now, posScaled); return; } LIMIT(posScaled, lo, hi); - Draw_Edit_Signed_Float3(select_item.now, posScaled, true); + drawEditSignedFloat3(select_item.now, posScaled, true); } - void HMI_HomeOffX() { HMI_HomeOffN(X_AXIS, HMI_ValueStruct.Home_OffX_scaled, -500, 500); } - void HMI_HomeOffY() { HMI_HomeOffN(Y_AXIS, HMI_ValueStruct.Home_OffY_scaled, -500, 500); } - void HMI_HomeOffZ() { HMI_HomeOffN(Z_AXIS, HMI_ValueStruct.Home_OffZ_scaled, -20, 20); } + void hmiHomeOffX() { hmiHomeOffN(X_AXIS, hmiValues.Home_OffX_scaled, -500, 500); } + void hmiHomeOffY() { hmiHomeOffN(Y_AXIS, hmiValues.Home_OffY_scaled, -500, 500); } + void hmiHomeOffZ() { hmiHomeOffN(Z_AXIS, hmiValues.Home_OffZ_scaled, -20, 20); } #endif // HAS_HOME_OFFSET #if HAS_ONESTEP_LEVELING // Probe Offset - void HMI_ProbeOff() { + void hmiProbeOff() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; // Avoid flicker by updating only the previous menu if (encoder_diffState == ENCODER_DIFF_CW) { - if (select_item.inc(1 + 2)) Move_Highlight(1, select_item.now); + if (select_item.inc(1 + 2)) moveHighlight(1, select_item.now); } else if (encoder_diffState == ENCODER_DIFF_CCW) { - if (select_item.dec()) Move_Highlight(-1, select_item.now); + if (select_item.dec()) moveHighlight(-1, select_item.now); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_item.now) { case CASE_BACK: checkkey = AdvSet; select_advset.set(ADVSET_CASE_PROBEOFF); - Draw_AdvancedSettings_Menu(); + drawAdvancedSettingsMenu(); break; case 1: // Probe Offset X checkkey = ProbeOffX; - Draw_Edit_Signed_Float3(1, HMI_ValueStruct.Probe_OffX_scaled, true); - EncoderRate.enabled = true; + drawEditSignedFloat3(1, hmiValues.Probe_OffX_scaled, true); + encoderRate.enabled = true; break; case 2: // Probe Offset Y checkkey = ProbeOffY; - Draw_Edit_Signed_Float3(2, HMI_ValueStruct.Probe_OffY_scaled, true); - EncoderRate.enabled = true; + drawEditSignedFloat3(2, hmiValues.Probe_OffY_scaled, true); + encoderRate.enabled = true; break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } - void HMI_ProbeOffN(float &posScaled, float &offset_ref) { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); + void hmiProbeOffN(float &posScaled, float &offset_ref) { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (Apply_Encoder(encoder_diffState, posScaled)) { + if (applyEncoder(encoder_diffState, posScaled)) { checkkey = ProbeOff; - EncoderRate.enabled = false; + encoderRate.enabled = false; offset_ref = posScaled / 10; - Draw_Edit_Signed_Float3(select_item.now, posScaled); + drawEditSignedFloat3(select_item.now, posScaled); return; } LIMIT(posScaled, -500, 500); - Draw_Edit_Signed_Float3(select_item.now, posScaled, true); + drawEditSignedFloat3(select_item.now, posScaled, true); } - void HMI_ProbeOffX() { HMI_ProbeOffN(HMI_ValueStruct.Probe_OffX_scaled, probe.offset.x); } - void HMI_ProbeOffY() { HMI_ProbeOffN(HMI_ValueStruct.Probe_OffY_scaled, probe.offset.y); } + void hmiProbeOffX() { hmiProbeOffN(hmiValues.Probe_OffX_scaled, probe.offset.x); } + void hmiProbeOffY() { hmiProbeOffN(hmiValues.Probe_OffY_scaled, probe.offset.y); } #endif // HAS_ONESTEP_LEVELING // Info -void HMI_Info() { +void hmiInfo() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_ENTER) { #if HAS_ONESTEP_LEVELING checkkey = Control; select_control.set(CONTROL_CASE_INFO); - Draw_Control_Menu(); + drawControlMenu(); #else select_page.set(3); - Goto_MainMenu(); + gotoMainMenu(); #endif } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } // Tune -void HMI_Tune() { +void hmiTune() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; @@ -3724,343 +3720,343 @@ void HMI_Tune() { if (select_tune.inc(1 + TUNE_CASE_TOTAL)) { if (select_tune.now > MROWS && select_tune.now > index_tune) { index_tune = select_tune.now; - Scroll_Menu(DWIN_SCROLL_UP); + scrollMenu(DWIN_SCROLL_UP); } else - Move_Highlight(1, select_tune.now + MROWS - index_tune); + moveHighlight(1, select_tune.now + MROWS - index_tune); } } else if (encoder_diffState == ENCODER_DIFF_CCW) { if (select_tune.dec()) { if (select_tune.now < index_tune - MROWS) { index_tune--; - Scroll_Menu(DWIN_SCROLL_DOWN); - if (index_tune == MROWS) Draw_Back_First(); + scrollMenu(DWIN_SCROLL_DOWN); + if (index_tune == MROWS) drawBackFirst(); } else - Move_Highlight(-1, select_tune.now + MROWS - index_tune); + moveHighlight(-1, select_tune.now + MROWS - index_tune); } } else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_tune.now) { case 0: { // Back select_print.set(0); - Goto_PrintProcess(); + gotoPrintProcess(); } break; case TUNE_CASE_SPEED: // Print speed checkkey = PrintSpeed; - HMI_ValueStruct.print_speed = feedrate_percentage; - Draw_Edit_Integer3(TUNE_CASE_SPEED + MROWS - index_tune, HMI_ValueStruct.print_speed, true); - EncoderRate.enabled = true; + hmiValues.print_speed = feedrate_percentage; + drawEditInteger3(TUNE_CASE_SPEED + MROWS - index_tune, hmiValues.print_speed, true); + encoderRate.enabled = true; break; #if HAS_HOTEND case TUNE_CASE_TEMP: // Nozzle temp checkkey = ETemp; - HMI_ValueStruct.E_Temp = thermalManager.degTargetHotend(0); - Draw_Edit_Integer3(TUNE_CASE_TEMP + MROWS - index_tune, HMI_ValueStruct.E_Temp, true); - EncoderRate.enabled = true; + hmiValues.E_Temp = thermalManager.degTargetHotend(0); + drawEditInteger3(TUNE_CASE_TEMP + MROWS - index_tune, hmiValues.E_Temp, true); + encoderRate.enabled = true; break; #endif #if HAS_HEATED_BED case TUNE_CASE_BED: // Bed temp checkkey = BedTemp; - HMI_ValueStruct.Bed_Temp = thermalManager.degTargetBed(); - Draw_Edit_Integer3(TUNE_CASE_BED + MROWS - index_tune, HMI_ValueStruct.Bed_Temp, true); - EncoderRate.enabled = true; + hmiValues.Bed_Temp = thermalManager.degTargetBed(); + drawEditInteger3(TUNE_CASE_BED + MROWS - index_tune, hmiValues.Bed_Temp, true); + encoderRate.enabled = true; break; #endif #if HAS_FAN case TUNE_CASE_FAN: // Fan speed checkkey = FanSpeed; - HMI_ValueStruct.Fan_speed = thermalManager.fan_speed[0]; - Draw_Edit_Integer3(TUNE_CASE_FAN + MROWS - index_tune, HMI_ValueStruct.Fan_speed, true); - EncoderRate.enabled = true; + hmiValues.Fan_speed = thermalManager.fan_speed[0]; + drawEditInteger3(TUNE_CASE_FAN + MROWS - index_tune, hmiValues.Fan_speed, true); + encoderRate.enabled = true; break; #endif #if HAS_ZOFFSET_ITEM case TUNE_CASE_ZOFF: // Z-offset #if ANY(HAS_BED_PROBE, BABYSTEPPING) checkkey = Homeoffset; - HMI_ValueStruct.offset_value = BABY_Z_VAR * 100; - Draw_Edit_Signed_Float2(TUNE_CASE_ZOFF + MROWS - index_tune, HMI_ValueStruct.offset_value, true); - EncoderRate.enabled = true; + hmiValues.offset_value = BABY_Z_VAR * 100; + drawEditSignedFloat2(TUNE_CASE_ZOFF + MROWS - index_tune, hmiValues.offset_value, true); + encoderRate.enabled = true; #else // Apply workspace offset, making the current position 0,0,0 queue.inject(F("G92X0Y0Z0")); - HMI_AudioFeedback(); + hmiAudioFeedback(); #endif break; #endif default: break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } #if HAS_PREHEAT // PLA Preheat - void HMI_PLAPreheatSetting() { + void hmiPLAPreheatSetting() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; // Avoid flicker by updating only the previous menu if (encoder_diffState == ENCODER_DIFF_CW) { - if (select_PLA.inc(1 + PREHEAT_CASE_TOTAL)) Move_Highlight(1, select_PLA.now); + if (select_PLA.inc(1 + PREHEAT_CASE_TOTAL)) moveHighlight(1, select_PLA.now); } else if (encoder_diffState == ENCODER_DIFF_CCW) { - if (select_PLA.dec()) Move_Highlight(-1, select_PLA.now); + if (select_PLA.dec()) moveHighlight(-1, select_PLA.now); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_PLA.now) { case CASE_BACK: checkkey = TemperatureID; select_temp.now = TEMP_CASE_PLA; - HMI_ValueStruct.show_mode = -1; - Draw_Temperature_Menu(); + hmiValues.show_mode = -1; + drawTemperatureMenu(); break; #if HAS_HOTEND case PREHEAT_CASE_TEMP: checkkey = ETemp; - HMI_ValueStruct.E_Temp = ui.material_preset[0].hotend_temp; - Draw_Edit_Integer3(PREHEAT_CASE_TEMP, ui.material_preset[0].hotend_temp, true); - EncoderRate.enabled = true; + hmiValues.E_Temp = ui.material_preset[0].hotend_temp; + drawEditInteger3(PREHEAT_CASE_TEMP, ui.material_preset[0].hotend_temp, true); + encoderRate.enabled = true; break; #endif #if HAS_HEATED_BED case PREHEAT_CASE_BED: checkkey = BedTemp; - HMI_ValueStruct.Bed_Temp = ui.material_preset[0].bed_temp; - Draw_Edit_Integer3(PREHEAT_CASE_BED, ui.material_preset[0].bed_temp, true); - EncoderRate.enabled = true; + hmiValues.Bed_Temp = ui.material_preset[0].bed_temp; + drawEditInteger3(PREHEAT_CASE_BED, ui.material_preset[0].bed_temp, true); + encoderRate.enabled = true; break; #endif #if HAS_FAN case PREHEAT_CASE_FAN: checkkey = FanSpeed; - HMI_ValueStruct.Fan_speed = ui.material_preset[0].fan_speed; - Draw_Edit_Integer3(PREHEAT_CASE_FAN, ui.material_preset[0].fan_speed, true); - EncoderRate.enabled = true; + hmiValues.Fan_speed = ui.material_preset[0].fan_speed; + drawEditInteger3(PREHEAT_CASE_FAN, ui.material_preset[0].fan_speed, true); + encoderRate.enabled = true; break; #endif #if ENABLED(EEPROM_SETTINGS) case PREHEAT_CASE_SAVE: { const bool success = settings.save(); - HMI_AudioFeedback(success); + hmiAudioFeedback(success); } break; #endif default: break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } #if PREHEAT_COUNT > 1 // ABS Preheat - void HMI_ABSPreheatSetting() { + void hmiABSPreheatSetting() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; // Avoid flicker by updating only the previous menu if (encoder_diffState == ENCODER_DIFF_CW) { - if (select_ABS.inc(1 + PREHEAT_CASE_TOTAL)) Move_Highlight(1, select_ABS.now); + if (select_ABS.inc(1 + PREHEAT_CASE_TOTAL)) moveHighlight(1, select_ABS.now); } else if (encoder_diffState == ENCODER_DIFF_CCW) { - if (select_ABS.dec()) Move_Highlight(-1, select_ABS.now); + if (select_ABS.dec()) moveHighlight(-1, select_ABS.now); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_ABS.now) { case CASE_BACK: checkkey = TemperatureID; select_temp.now = TEMP_CASE_ABS; - HMI_ValueStruct.show_mode = -1; - Draw_Temperature_Menu(); + hmiValues.show_mode = -1; + drawTemperatureMenu(); break; #if HAS_HOTEND case PREHEAT_CASE_TEMP: checkkey = ETemp; - HMI_ValueStruct.E_Temp = ui.material_preset[1].hotend_temp; - Draw_Edit_Integer3(PREHEAT_CASE_TEMP, ui.material_preset[1].hotend_temp, true); - EncoderRate.enabled = true; + hmiValues.E_Temp = ui.material_preset[1].hotend_temp; + drawEditInteger3(PREHEAT_CASE_TEMP, ui.material_preset[1].hotend_temp, true); + encoderRate.enabled = true; break; #endif #if HAS_HEATED_BED case PREHEAT_CASE_BED: checkkey = BedTemp; - HMI_ValueStruct.Bed_Temp = ui.material_preset[1].bed_temp; - Draw_Edit_Integer3(PREHEAT_CASE_BED, ui.material_preset[1].bed_temp, true); - EncoderRate.enabled = true; + hmiValues.Bed_Temp = ui.material_preset[1].bed_temp; + drawEditInteger3(PREHEAT_CASE_BED, ui.material_preset[1].bed_temp, true); + encoderRate.enabled = true; break; #endif #if HAS_FAN case PREHEAT_CASE_FAN: checkkey = FanSpeed; - HMI_ValueStruct.Fan_speed = ui.material_preset[1].fan_speed; - Draw_Edit_Integer3(PREHEAT_CASE_FAN, ui.material_preset[1].fan_speed, true); - EncoderRate.enabled = true; + hmiValues.Fan_speed = ui.material_preset[1].fan_speed; + drawEditInteger3(PREHEAT_CASE_FAN, ui.material_preset[1].fan_speed, true); + encoderRate.enabled = true; break; #endif #if ENABLED(EEPROM_SETTINGS) case PREHEAT_CASE_SAVE: { const bool success = settings.save(); - HMI_AudioFeedback(success); + hmiAudioFeedback(success); } break; #endif default: break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } #endif // PREHEAT_COUNT > 1 #endif // HAS_PREHEAT // Max Speed -void HMI_MaxSpeed() { +void hmiMaxSpeed() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; // Avoid flicker by updating only the previous menu if (encoder_diffState == ENCODER_DIFF_CW) { - if (select_speed.inc(1 + 3 + ENABLED(HAS_HOTEND))) Move_Highlight(1, select_speed.now); + if (select_speed.inc(1 + 3 + ENABLED(HAS_HOTEND))) moveHighlight(1, select_speed.now); } else if (encoder_diffState == ENCODER_DIFF_CCW) { - if (select_speed.dec()) Move_Highlight(-1, select_speed.now); + if (select_speed.dec()) moveHighlight(-1, select_speed.now); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { if (WITHIN(select_speed.now, 1, 4)) { checkkey = MaxSpeed_value; - HMI_flag.feedspeed_axis = AxisEnum(select_speed.now - 1); - HMI_ValueStruct.Max_Feedspeed = planner.settings.max_feedrate_mm_s[HMI_flag.feedspeed_axis]; - Draw_Edit_Integer4(select_speed.now, HMI_ValueStruct.Max_Feedspeed, true); - EncoderRate.enabled = true; + hmiFlag.feedspeed_axis = AxisEnum(select_speed.now - 1); + hmiValues.Max_Feedspeed = planner.settings.max_feedrate_mm_s[hmiFlag.feedspeed_axis]; + drawEditInteger4(select_speed.now, hmiValues.Max_Feedspeed, true); + encoderRate.enabled = true; } else { // Back checkkey = Motion; select_motion.now = MOTION_CASE_RATE; - Draw_Motion_Menu(); + drawMotionMenu(); } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } // Max Acceleration -void HMI_MaxAcceleration() { +void hmiMaxAcceleration() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; // Avoid flicker by updating only the previous menu if (encoder_diffState == ENCODER_DIFF_CW) { - if (select_acc.inc(1 + 3 + ENABLED(HAS_HOTEND))) Move_Highlight(1, select_acc.now); + if (select_acc.inc(1 + 3 + ENABLED(HAS_HOTEND))) moveHighlight(1, select_acc.now); } else if (encoder_diffState == ENCODER_DIFF_CCW) { - if (select_acc.dec()) Move_Highlight(-1, select_acc.now); + if (select_acc.dec()) moveHighlight(-1, select_acc.now); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { if (WITHIN(select_acc.now, 1, 4)) { checkkey = MaxAcceleration_value; - HMI_flag.acc_axis = AxisEnum(select_acc.now - 1); - HMI_ValueStruct.Max_Acceleration = planner.settings.max_acceleration_mm_per_s2[HMI_flag.acc_axis]; - Draw_Edit_Integer4(select_acc.now, HMI_ValueStruct.Max_Acceleration, true); - EncoderRate.enabled = true; + hmiFlag.acc_axis = AxisEnum(select_acc.now - 1); + hmiValues.Max_Acceleration = planner.settings.max_acceleration_mm_per_s2[hmiFlag.acc_axis]; + drawEditInteger4(select_acc.now, hmiValues.Max_Acceleration, true); + encoderRate.enabled = true; } else { // Back checkkey = Motion; select_motion.now = MOTION_CASE_ACCEL; - Draw_Motion_Menu(); + drawMotionMenu(); } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } #if HAS_CLASSIC_JERK // Max Jerk - void HMI_MaxJerk() { + void hmiMaxJerk() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; // Avoid flicker by updating only the previous menu if (encoder_diffState == ENCODER_DIFF_CW) { - if (select_jerk.inc(1 + 3 + ENABLED(HAS_HOTEND))) Move_Highlight(1, select_jerk.now); + if (select_jerk.inc(1 + 3 + ENABLED(HAS_HOTEND))) moveHighlight(1, select_jerk.now); } else if (encoder_diffState == ENCODER_DIFF_CCW) { - if (select_jerk.dec()) Move_Highlight(-1, select_jerk.now); + if (select_jerk.dec()) moveHighlight(-1, select_jerk.now); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { if (WITHIN(select_jerk.now, 1, 4)) { checkkey = MaxJerk_value; - HMI_flag.jerk_axis = AxisEnum(select_jerk.now - 1); - HMI_ValueStruct.Max_Jerk_scaled = planner.max_jerk[HMI_flag.jerk_axis] * MINUNITMULT; - Draw_Edit_Float3(select_jerk.now, HMI_ValueStruct.Max_Jerk_scaled, true); - EncoderRate.enabled = true; + hmiFlag.jerk_axis = AxisEnum(select_jerk.now - 1); + hmiValues.Max_Jerk_scaled = planner.max_jerk[hmiFlag.jerk_axis] * MINUNITMULT; + drawEditFloat3(select_jerk.now, hmiValues.Max_Jerk_scaled, true); + encoderRate.enabled = true; } else { // Back checkkey = Motion; select_motion.now = MOTION_CASE_JERK; - Draw_Motion_Menu(); + drawMotionMenu(); } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } #endif // HAS_CLASSIC_JERK // Step -void HMI_Step() { +void hmiStep() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; // Avoid flicker by updating only the previous menu if (encoder_diffState == ENCODER_DIFF_CW) { - if (select_step.inc(1 + 3 + ENABLED(HAS_HOTEND))) Move_Highlight(1, select_step.now); + if (select_step.inc(1 + 3 + ENABLED(HAS_HOTEND))) moveHighlight(1, select_step.now); } else if (encoder_diffState == ENCODER_DIFF_CCW) { - if (select_step.dec()) Move_Highlight(-1, select_step.now); + if (select_step.dec()) moveHighlight(-1, select_step.now); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { if (WITHIN(select_step.now, 1, 4)) { checkkey = Step_value; - HMI_flag.step_axis = AxisEnum(select_step.now - 1); - HMI_ValueStruct.Max_Step_scaled = planner.settings.axis_steps_per_mm[HMI_flag.step_axis] * MINUNITMULT; - Draw_Edit_Float3(select_step.now, HMI_ValueStruct.Max_Step_scaled, true); - EncoderRate.enabled = true; + hmiFlag.step_axis = AxisEnum(select_step.now - 1); + hmiValues.Max_Step_scaled = planner.settings.axis_steps_per_mm[hmiFlag.step_axis] * MINUNITMULT; + drawEditFloat3(select_step.now, hmiValues.Max_Step_scaled, true); + encoderRate.enabled = true; } else { // Back checkkey = Motion; select_motion.now = MOTION_CASE_STEPS; - Draw_Motion_Menu(); + drawMotionMenu(); } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } -void HMI_Init() { - HMI_SDCardInit(); +void hmiInit() { + hmiSDCardInit(); for (uint16_t t = 0; t <= 100; t += 2) { - DWIN_ICON_Show(ICON, ICON_Bar, 15, 260); - DWIN_Draw_Rectangle(1, Color_Bg_Black, 15 + t * 242 / 100, 260, 257, 280); - DWIN_UpdateLCD(); + dwinIconShow(ICON, ICON_Bar, 15, 260); + dwinDrawRectangle(1, Color_Bg_Black, 15 + t * 242 / 100, 260, 257, 280); + dwinUpdateLCD(); delay(20); } - HMI_SetLanguage(); + hmiSetLanguage(); } -void DWIN_InitScreen() { - Encoder_Configuration(); - HMI_Init(); - HMI_SetLanguageCache(); - HMI_StartFrame(true); +void dwinInitScreen() { + encoderConfiguration(); + hmiInit(); + hmiSetLanguageCache(); + hmiStartFrame(true); } -void DWIN_Update() { - EachMomentUpdate(); // Status update - HMI_SDCardUpdate(); // SD card update - DWIN_HandleScreen(); // Rotary encoder update +void dwinUpdate() { + eachMomentUpdate(); // Status update + hmiSDCardUpdate(); // SD card update + dwinHandleScreen(); // Rotary encoder update } -void EachMomentUpdate() { +void eachMomentUpdate() { static millis_t next_var_update_ms = 0, next_rts_update_ms = 0; const millis_t ms = millis(); @@ -4074,9 +4070,9 @@ void EachMomentUpdate() { if (checkkey == PrintProcess) { // if print done - if (HMI_flag.print_finish && !HMI_flag.done_confirm_flag) { - HMI_flag.print_finish = false; - HMI_flag.done_confirm_flag = true; + if (hmiFlag.print_finish && !hmiFlag.done_confirm_flag) { + hmiFlag.print_finish = false; + hmiFlag.done_confirm_flag = true; TERN_(POWER_LOSS_RECOVERY, recovery.cancel()); @@ -4084,22 +4080,22 @@ void EachMomentUpdate() { // show percent bar and value _card_percent = 0; - Draw_Print_ProgressBar(); + drawPrintProgressBar(); // show print done confirm - DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, 250, DWIN_WIDTH - 1, STATUS_Y); - DWIN_ICON_Show(ICON, HMI_IsChinese() ? ICON_Confirm_C : ICON_Confirm_E, 86, 283); + dwinDrawRectangle(1, Color_Bg_Black, 0, 250, DWIN_WIDTH - 1, STATUS_Y); + dwinIconShow(ICON, hmiIsChinese() ? ICON_Confirm_C : ICON_Confirm_E, 86, 283); } - else if (HMI_flag.pause_flag != printingIsPaused()) { + else if (hmiFlag.pause_flag != printingIsPaused()) { // print status update - HMI_flag.pause_flag = printingIsPaused(); - ICON_ResumeOrPause(); + hmiFlag.pause_flag = printingIsPaused(); + iconResumeOrPause(); } } // pause after homing - if (HMI_flag.pause_action && printingIsPaused() && !planner.has_blocks_queued()) { - HMI_flag.pause_action = false; + if (hmiFlag.pause_action && printingIsPaused() && !planner.has_blocks_queued()) { + hmiFlag.pause_action = false; #if ENABLED(PAUSE_HEAT) TERN_(HAS_HOTEND, resume_hotend_temp = thermalManager.degTargetHotend(0)); TERN_(HAS_HEATED_BED, resume_bed_temp = thermalManager.degTargetBed()); @@ -4115,7 +4111,7 @@ void EachMomentUpdate() { last_cardpercentValue = card_pct; if (card_pct) { _card_percent = card_pct; - Draw_Print_ProgressBar(); + drawPrintProgressBar(); } } @@ -4126,174 +4122,174 @@ void EachMomentUpdate() { const uint16_t min = (elapsed.value % 3600) / 60; if (last_Printtime != min) { // 1 minute update last_Printtime = min; - Draw_Print_ProgressElapsed(); + drawPrintProgressElapsed(); } // Estimate remaining time every 20 seconds static millis_t next_remain_time_update = 0; - if (_card_percent > 1 && ELAPSED(ms, next_remain_time_update) && !HMI_flag.heat_flag) { + if (_card_percent > 1 && ELAPSED(ms, next_remain_time_update) && !hmiFlag.heat_flag) { _remain_time = (elapsed.value - dwin_heat_time) / (_card_percent * 0.01f) - (elapsed.value - dwin_heat_time); next_remain_time_update += DWIN_REMAIN_TIME_UPDATE_INTERVAL; - Draw_Print_ProgressRemain(); + drawPrintProgressRemain(); } } - else if (dwin_abort_flag && !HMI_flag.home_flag) { // Print Stop + else if (dwin_abort_flag && !hmiFlag.home_flag) { // Print Stop dwin_abort_flag = false; - HMI_ValueStruct.print_speed = feedrate_percentage = 100; + hmiValues.print_speed = feedrate_percentage = 100; dwin_zoffset = BABY_Z_VAR; select_page.set(0); - Goto_MainMenu(); + gotoMainMenu(); } #if ENABLED(POWER_LOSS_RECOVERY) else if (DWIN_lcd_sd_status && recovery.dwin_flag) { // resume print before power off recovery.dwin_flag = false; auto update_selection = [&](const bool sel) { - HMI_flag.select_flag = sel; + hmiFlag.select_flag = sel; const uint16_t c1 = sel ? Color_Bg_Window : Select_Color; - DWIN_Draw_Rectangle(0, c1, 25, 306, 126, 345); - DWIN_Draw_Rectangle(0, c1, 24, 305, 127, 346); + dwinDrawRectangle(0, c1, 25, 306, 126, 345); + dwinDrawRectangle(0, c1, 24, 305, 127, 346); const uint16_t c2 = sel ? Select_Color : Color_Bg_Window; - DWIN_Draw_Rectangle(0, c2, 145, 306, 246, 345); - DWIN_Draw_Rectangle(0, c2, 144, 305, 247, 346); + dwinDrawRectangle(0, c2, 145, 306, 246, 345); + dwinDrawRectangle(0, c2, 144, 305, 247, 346); }; - Popup_Window_Resume(); + popupWindowResume(); update_selection(true); char * const name = card.longest_filename(); const int8_t npos = _MAX(0U, DWIN_WIDTH - strlen(name) * (MENU_CHR_W)) / 2; - DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, npos, 252, name); - DWIN_UpdateLCD(); + dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, npos, 252, name); + dwinUpdateLCD(); bool recovery_flag = true; while (recovery_flag) { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState != ENCODER_DIFF_NO) { if (encoder_diffState == ENCODER_DIFF_ENTER) { recovery_flag = false; - if (HMI_flag.select_flag) break; + if (hmiFlag.select_flag) break; TERN_(POWER_LOSS_RECOVERY, queue.inject(F("M1000C"))); - HMI_StartFrame(true); + hmiStartFrame(true); return; } else update_selection(encoder_diffState == ENCODER_DIFF_CW); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } } select_print.set(0); - HMI_ValueStruct.show_mode = 0; + hmiValues.show_mode = 0; queue.inject(F("M1000")); - Goto_PrintProcess(); - Draw_Status_Area(true); + gotoPrintProcess(); + drawStatusArea(true); } #endif // POWER_LOSS_RECOVERY - DWIN_UpdateLCD(); + dwinUpdateLCD(); } -void DWIN_HandleScreen() { +void dwinHandleScreen() { switch (checkkey) { - case MainMenu: HMI_MainMenu(); break; - case SelectFile: HMI_SelectFile(); break; - case Prepare: HMI_Prepare(); break; - case Control: HMI_Control(); break; + case MainMenu: hmiMainMenu(); break; + case SelectFile: hmiSelectFile(); break; + case Prepare: hmiPrepare(); break; + case Control: hmiControl(); break; case Leveling: break; - case PrintProcess: HMI_Printing(); break; - case Print_window: HMI_PauseOrStop(); break; - case AxisMove: HMI_AxisMove(); break; - case TemperatureID: HMI_Temperature(); break; - case Motion: HMI_Motion(); break; - case AdvSet: HMI_AdvSet(); break; + case PrintProcess: hmiPrinting(); break; + case Print_window: hmiPauseOrStop(); break; + case AxisMove: hmiAxisMove(); break; + case TemperatureID: hmiTemperature(); break; + case Motion: hmiMotion(); break; + case AdvSet: hmiAdvSet(); break; #if HAS_HOME_OFFSET - case HomeOff: HMI_HomeOff(); break; - case HomeOffX: HMI_HomeOffX(); break; - case HomeOffY: HMI_HomeOffY(); break; - case HomeOffZ: HMI_HomeOffZ(); break; + case HomeOff: hmiHomeOff(); break; + case HomeOffX: hmiHomeOffX(); break; + case HomeOffY: hmiHomeOffY(); break; + case HomeOffZ: hmiHomeOffZ(); break; #endif #if HAS_ONESTEP_LEVELING - case ProbeOff: HMI_ProbeOff(); break; - case ProbeOffX: HMI_ProbeOffX(); break; - case ProbeOffY: HMI_ProbeOffY(); break; + case ProbeOff: hmiProbeOff(); break; + case ProbeOffX: hmiProbeOffX(); break; + case ProbeOffY: hmiProbeOffY(); break; #endif - case Info: HMI_Info(); break; - case Tune: HMI_Tune(); break; + case Info: hmiInfo(); break; + case Tune: hmiTune(); break; #if HAS_PREHEAT - case PLAPreheat: HMI_PLAPreheatSetting(); break; + case PLAPreheat: hmiPLAPreheatSetting(); break; #if PREHEAT_COUNT > 1 - case ABSPreheat: HMI_ABSPreheatSetting(); break; + case ABSPreheat: hmiABSPreheatSetting(); break; #endif #endif - case MaxSpeed: HMI_MaxSpeed(); break; - case MaxAcceleration: HMI_MaxAcceleration(); break; + case MaxSpeed: hmiMaxSpeed(); break; + case MaxAcceleration: hmiMaxAcceleration(); break; #if HAS_CLASSIC_JERK - case MaxJerk: HMI_MaxJerk(); break; + case MaxJerk: hmiMaxJerk(); break; #endif - case Step: HMI_Step(); break; - case Move_X: HMI_Move_X(); break; - case Move_Y: HMI_Move_Y(); break; - case Move_Z: HMI_Move_Z(); break; + case Step: hmiStep(); break; + case Move_X: hmiMoveX(); break; + case Move_Y: hmiMoveY(); break; + case Move_Z: hmiMoveZ(); break; #if HAS_HOTEND - case Extruder: HMI_Move_E(); break; - case ETemp: HMI_ETemp(); break; + case Extruder: hmiMoveE(); break; + case ETemp: hmiETemp(); break; #endif #if ANY(HAS_BED_PROBE, BABYSTEPPING) - case Homeoffset: HMI_Zoffset(); break; + case Homeoffset: hmiZoffset(); break; #endif #if HAS_HEATED_BED - case BedTemp: HMI_BedTemp(); break; + case BedTemp: hmiBedTemp(); break; #endif #if HAS_PREHEAT && HAS_FAN - case FanSpeed: HMI_FanSpeed(); break; + case FanSpeed: hmiFanSpeed(); break; #endif - case PrintSpeed: HMI_PrintSpeed(); break; - case MaxSpeed_value: HMI_MaxFeedspeedXYZE(); break; - case MaxAcceleration_value: HMI_MaxAccelerationXYZE(); break; + case PrintSpeed: hmiPrintSpeed(); break; + case MaxSpeed_value: hmiMaxFeedspeedXYZE(); break; + case MaxAcceleration_value: hmiMaxAccelerationXYZE(); break; #if HAS_CLASSIC_JERK - case MaxJerk_value: HMI_MaxJerkXYZE(); break; + case MaxJerk_value: hmiMaxJerkXYZE(); break; #endif - case Step_value: HMI_StepXYZE(); break; + case Step_value: hmiStepXYZE(); break; default: break; } } -void DWIN_HomingDone() { - HMI_flag.home_flag = false; +void dwinHomingDone() { + hmiFlag.home_flag = false; dwin_zoffset = TERN0(HAS_BED_PROBE, probe.offset.z); if (checkkey == Last_Prepare) { checkkey = Prepare; select_prepare.now = PREPARE_CASE_HOME; index_prepare = MROWS; - Draw_Prepare_Menu(); + drawPrepareMenu(); } else if (checkkey == Back_Main) { - HMI_ValueStruct.print_speed = feedrate_percentage = 100; + hmiValues.print_speed = feedrate_percentage = 100; planner.finish_and_disable(); - Goto_MainMenu(); + gotoMainMenu(); } } -void DWIN_LevelingDone() { - if (checkkey == Leveling) Goto_MainMenu(); +void dwinLevelingDone() { + if (checkkey == Leveling) gotoMainMenu(); } -void DWIN_StatusChanged(const char * const cstr/*=nullptr*/) { - DWIN_Draw_Rectangle(1, Color_Bg_Blue, 0, STATUS_Y, DWIN_WIDTH, STATUS_Y + 24); +void dwinStatusChanged(const char * const cstr/*=nullptr*/) { + dwinDrawRectangle(1, Color_Bg_Blue, 0, STATUS_Y, DWIN_WIDTH, STATUS_Y + 24); const int8_t x = _MAX(0U, DWIN_WIDTH - strlen(cstr) * MENU_CHR_W) / 2; - DWIN_Draw_String(false, font8x16, Color_White, Color_Bg_Blue, x, STATUS_Y + 3, cstr); - DWIN_UpdateLCD(); + dwinDrawString(false, font8x16, Color_White, Color_Bg_Blue, x, STATUS_Y + 3, cstr); + dwinUpdateLCD(); } -void DWIN_StatusChanged(FSTR_P const fstr) { +void dwinStatusChanged(FSTR_P const fstr) { #ifdef __AVR__ char str[strlen_P(FTOP(fstr)) + 1]; strcpy_P(str, FTOP(fstr)); - DWIN_StatusChanged(str); + dwinStatusChanged(str); #else - DWIN_StatusChanged(FTOP(fstr)); + dwinStatusChanged(FTOP(fstr)); #endif } diff --git a/Marlin/src/lcd/e3v2/creality/dwin.h b/Marlin/src/lcd/e3v2/creality/dwin.h index 854a011c5e..0e2d42eee9 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.h +++ b/Marlin/src/lcd/e3v2/creality/dwin.h @@ -133,7 +133,7 @@ typedef struct { float Home_OffZ_scaled = 0; float Probe_OffX_scaled = 0; float Probe_OffY_scaled = 0; -} HMI_value_t; +} hmi_value_t; #define DWIN_CHINESE 123 #define DWIN_ENGLISH 0 @@ -151,59 +151,59 @@ typedef struct { bool cold_flag:1; #endif AxisEnum feedspeed_axis, acc_axis, jerk_axis, step_axis; -} HMI_flag_t; +} hmi_flag_t; -extern HMI_value_t HMI_ValueStruct; -extern HMI_flag_t HMI_flag; +extern hmi_value_t hmiValues; +extern hmi_flag_t hmiFlag; #if HAS_HOTEND || HAS_HEATED_BED // Popup message window - void DWIN_Popup_Temperature(const bool toohigh); + void dwinPopupTemperature(const bool toohigh); #endif #if HAS_HOTEND - void Popup_Window_ETempTooLow(); + void popupWindowETempTooLow(); #endif -void Popup_Window_Resume(); -void Popup_Window_Home(const bool parking=false); -void Popup_Window_Leveling(); +void popupWindowResume(); +void popupWindowHome(const bool parking=false); +void popupWindowLeveling(); -void Goto_PrintProcess(); -void Goto_MainMenu(); +void gotoPrintProcess(); +void gotoMainMenu(); // Variable control -void HMI_Move_X(); -void HMI_Move_Y(); -void HMI_Move_Z(); -void HMI_Move_E(); +void hmiMoveX(); +void hmiMoveY(); +void hmiMoveZ(); +void hmiMoveE(); -void HMI_Zoffset(); +void hmiZoffset(); #if HAS_HOTEND - void HMI_ETemp(); + void hmiETemp(); #endif #if HAS_HEATED_BED - void HMI_BedTemp(); + void hmiBedTemp(); #endif #if HAS_FAN - void HMI_FanSpeed(); + void hmiFanSpeed(); #endif -void HMI_PrintSpeed(); +void hmiPrintSpeed(); -void HMI_MaxFeedspeedXYZE(); -void HMI_MaxAccelerationXYZE(); -void HMI_MaxJerkXYZE(); -void HMI_StepXYZE(); -void HMI_SetLanguageCache(); +void hmiMaxFeedspeedXYZE(); +void hmiMaxAccelerationXYZE(); +void hmiMaxJerkXYZE(); +void hmiStepXYZE(); +void hmiSetLanguageCache(); void update_variable(); -void DWIN_Draw_Signed_Float(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, long value); +void dwinDrawSigned_Float(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, long value); // SD Card -void HMI_SDCardInit(); -void HMI_SDCardUpdate(); +void hmiSDCardInit(); +void hmiSDCardUpdate(); // Main Process void Icon_print(bool value); @@ -212,39 +212,39 @@ void Icon_temperature(bool value); void Icon_leveling(bool value); // Other -void Draw_Status_Area(const bool with_update); // Status Area -void HMI_StartFrame(const bool with_update); // Prepare the menu view -void HMI_MainMenu(); // Main process screen -void HMI_SelectFile(); // File page -void HMI_Printing(); // Print page -void HMI_Prepare(); // Prepare page -void HMI_Control(); // Control page -void HMI_Leveling(); // Level the page -void HMI_AxisMove(); // Axis movement menu -void HMI_Temperature(); // Temperature menu -void HMI_Motion(); // Sports menu -void HMI_Info(); // Information menu -void HMI_Tune(); // Adjust the menu +void drawStatusArea(const bool with_update); // Status Area +void hmiStartFrame(const bool with_update); // Prepare the menu view +void hmiMainMenu(); // Main process screen +void hmiSelectFile(); // File page +void hmiPrinting(); // Print page +void hmiPrepare(); // Prepare page +void hmiControl(); // Control page +void hmiLeveling(); // Level the page +void hmiAxisMove(); // Axis movement menu +void hmiTemperature(); // Temperature menu +void hmiMotion(); // Sports menu +void hmiInfo(); // Information menu +void hmiTune(); // Adjust the menu #if HAS_PREHEAT - void HMI_PLAPreheatSetting(); // PLA warm-up setting - void HMI_ABSPreheatSetting(); // ABS warm-up setting + void hmiPLAPreheatSetting(); // PLA warm-up setting + void hmiABSPreheatSetting(); // ABS warm-up setting #endif -void HMI_MaxSpeed(); // Maximum speed submenu -void HMI_MaxAcceleration(); // Maximum acceleration submenu -void HMI_MaxJerk(); // Maximum jerk speed submenu -void HMI_Step(); // Transmission ratio +void hmiMaxSpeed(); // Maximum speed submenu +void hmiMaxAcceleration(); // Maximum acceleration submenu +void hmiMaxJerk(); // Maximum jerk speed submenu +void hmiStep(); // Transmission ratio -void HMI_Init(); -void DWIN_InitScreen(); -void DWIN_Update(); -void EachMomentUpdate(); -void DWIN_HandleScreen(); -void DWIN_StatusChanged(const char * const cstr=nullptr); -void DWIN_StatusChanged(FSTR_P const fstr); +void hmiInit(); +void dwinInitScreen(); +void dwinUpdate(); +void eachMomentUpdate(); +void dwinHandleScreen(); +void dwinStatusChanged(const char * const cstr=nullptr); +void dwinStatusChanged(FSTR_P const fstr); -inline void DWIN_HomingStart() { HMI_flag.home_flag = true; } +inline void dwinHomingStart() { hmiFlag.home_flag = true; } -void DWIN_HomingDone(); -void DWIN_LevelingDone(); +void dwinHomingDone(); +void dwinLevelingDone(); diff --git a/Marlin/src/lcd/e3v2/creality/dwin_lcd.cpp b/Marlin/src/lcd/e3v2/creality/dwin_lcd.cpp index 3d60e32a79..7a0587df43 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin_lcd.cpp +++ b/Marlin/src/lcd/e3v2/creality/dwin_lcd.cpp @@ -41,16 +41,16 @@ /*-------------------------------------- System variable function --------------------------------------*/ -void DWIN_Startup() { +void dwinStartup() { DEBUG_ECHOPGM("\r\nDWIN handshake "); delay(750); // Delay here or init later in the boot process - if (DWIN_Handshake()) DEBUG_ECHOLNPGM("ok."); else DEBUG_ECHOLNPGM("error."); - DWIN_Frame_SetDir(1); + if (dwinHandshake()) DEBUG_ECHOLNPGM("ok."); else DEBUG_ECHOLNPGM("error."); + dwinFrameSetDir(1); #if DISABLED(SHOW_BOOTSCREEN) - DWIN_Frame_Clear(Color_Bg_Black); // MarlinUI handles the bootscreen so just clear here + dwinFrameClear(Color_Bg_Black); // MarlinUI handles the bootscreen so just clear here #endif - DWIN_JPG_ShowAndCache(3); - DWIN_UpdateLCD(); + dwinJPGShowAndCache(3); + dwinUpdateLCD(); } /*---------------------------------------- Picture related functions ----------------------------------------*/ @@ -59,8 +59,8 @@ void DWIN_Startup() { // libID: Icon library ID // picID: Icon ID // x/y: Upper-left point -void DWIN_ICON_Show(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) { - DWIN_ICON_Show(true, false, false, libID, picID, x, y); +void dwinIconShow(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) { + dwinIconShow(true, false, false, libID, picID, x, y); } // Copy area from virtual display area to current screen @@ -68,17 +68,17 @@ void DWIN_ICON_Show(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) { // xStart/yStart: Upper-left of virtual area // xEnd/yEnd: Lower-right of virtual area // x/y: Screen paste point -void DWIN_Frame_AreaCopy(uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y) { +void dwinFrameAreaCopy(uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y) { size_t i = 0; - DWIN_Byte(i, 0x27); - DWIN_Byte(i, 0x80 | cacheID); - DWIN_Word(i, xStart); - DWIN_Word(i, yStart); - DWIN_Word(i, xEnd); - DWIN_Word(i, yEnd); - DWIN_Word(i, x); - DWIN_Word(i, y); - DWIN_Send(i); + dwinByte(i, 0x27); + dwinByte(i, 0x80 | cacheID); + dwinWord(i, xStart); + dwinWord(i, yStart); + dwinWord(i, xEnd); + dwinWord(i, yEnd); + dwinWord(i, x); + dwinWord(i, y); + dwinSend(i); } #endif // DWIN_CREALITY_LCD diff --git a/Marlin/src/lcd/e3v2/creality/dwin_lcd.h b/Marlin/src/lcd/e3v2/creality/dwin_lcd.h index b37a65977c..b60fe2970d 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin_lcd.h +++ b/Marlin/src/lcd/e3v2/creality/dwin_lcd.h @@ -44,4 +44,4 @@ // xStart/yStart: Upper-left of virtual area // xEnd/yEnd: Lower-right of virtual area // x/y: Screen paste point -void DWIN_Frame_AreaCopy(uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y); +void dwinFrameAreaCopy(uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y); diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 7b83e0171f..b7b2629f99 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -58,10 +58,6 @@ #define HAS_ZOFFSET_ITEM 1 #endif -#ifndef strcasecmp_P - #define strcasecmp_P(a, b) strcasecmp((a), (b)) -#endif - #if HAS_LEVELING #include "../../../feature/bedlevel/bedlevel.h" #endif @@ -206,7 +202,7 @@ float corner_pos; bool probe_deployed = false; -CrealityDWINClass CrealityDWIN; +CrealityDWIN crealityDWIN; template class TextScroller { @@ -332,7 +328,7 @@ private: planner.synchronize(); } else { - CrealityDWIN.Popup_Handler(MoveWait); + crealityDWIN.popupHandler(MoveWait); sprintf_P(cmd, PSTR("G0 F300 Z%s"), dtostrf(Z_CLEARANCE_BETWEEN_PROBES, 1, 3, str_1)); gcode.process_subcommands_now(cmd); sprintf_P(cmd, PSTR("G42 F4000 I%i J%i"), mesh_x, mesh_y); @@ -341,7 +337,7 @@ private: current_position.z = goto_mesh_value ? bedlevel.z_values[mesh_x][mesh_y] : Z_CLEARANCE_BETWEEN_PROBES; planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder); planner.synchronize(); - CrealityDWIN.Redraw_Menu(); + crealityDWIN.redrawMenu(); } } @@ -363,7 +359,7 @@ private: return min; } - void Draw_Bed_Mesh(const int16_t selected=-1, const uint8_t gridline_width=1, const uint16_t padding_x=8, const uint16_t padding_y_top=40 + 53 - 7) { + void drawBedMesh(const int16_t selected=-1, const uint8_t gridline_width=1, const uint16_t padding_x=8, const uint16_t padding_y_top=40 + 53 - 7) { drawing_mesh = true; const uint16_t total_width_px = DWIN_WIDTH - padding_x - padding_x, cell_width_px = total_width_px / (GRID_MAX_POINTS_X), @@ -371,13 +367,13 @@ private: const float v_max = abs(get_max_value()), v_min = abs(get_min_value()), range = _MAX(v_min, v_max); // Clear background from previous selection and select new square - DWIN_Draw_Rectangle(1, Color_Bg_Black, _MAX(0, padding_x - gridline_width), _MAX(0, padding_y_top - gridline_width), padding_x + total_width_px, padding_y_top + total_width_px); + dwinDrawRectangle(1, Color_Bg_Black, _MAX(0, padding_x - gridline_width), _MAX(0, padding_y_top - gridline_width), padding_x + total_width_px, padding_y_top + total_width_px); if (selected >= 0) { const auto selected_y = selected / (GRID_MAX_POINTS_X); const auto selected_x = selected - (GRID_MAX_POINTS_X) * selected_y; const auto start_y_px = padding_y_top + selected_y * cell_height_px; const auto start_x_px = padding_x + selected_x * cell_width_px; - DWIN_Draw_Rectangle(1, Color_White, _MAX(0, start_x_px - gridline_width), _MAX(0, start_y_px - gridline_width), start_x_px + cell_width_px, start_y_px + cell_height_px); + dwinDrawRectangle(1, Color_White, _MAX(0, start_x_px - gridline_width), _MAX(0, start_y_px - gridline_width), start_x_px + cell_width_px, start_y_px + cell_height_px); } // Draw value square grid @@ -387,7 +383,7 @@ private: const auto end_x_px = start_x_px + cell_width_px - 1 - gridline_width; const auto start_y_px = padding_y_top + (GRID_MAX_POINTS_Y - y - 1) * cell_height_px; const auto end_y_px = start_y_px + cell_height_px - 1 - gridline_width; - DWIN_Draw_Rectangle(1, // RGB565 colors: http://www.barth-dev.de/online/rgb565-color-picker/ + dwinDrawRectangle(1, // RGB565 colors: http://www.barth-dev.de/online/rgb565-color-picker/ isnan(bedlevel.z_values[x][y]) ? Color_Grey : ( // gray if undefined (bedlevel.z_values[x][y] < 0 ? (uint16_t)round(0x1F * -bedlevel.z_values[x][y] / (!viewer_asymmetric_range ? range : v_min)) << 11 : // red if mesh point value is negative @@ -403,7 +399,7 @@ private: if (viewer_print_value) { int8_t offset_x, offset_y = cell_height_px / 2 - 6; if (isnan(bedlevel.z_values[x][y])) { // undefined - DWIN_Draw_String(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + cell_width_px / 2 - 5, start_y_px + offset_y, F("X")); + dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + cell_width_px / 2 - 5, start_y_px + offset_y, F("X")); } else { // has value if (GRID_MAX_POINTS_X < 10) @@ -412,8 +408,8 @@ private: sprintf_P(buf, PSTR("%02i"), (uint16_t)(abs(bedlevel.z_values[x][y] - (int16_t)bedlevel.z_values[x][y]) * 100)); offset_x = cell_width_px / 2 - 3 * (strlen(buf)) - 2; if (!(GRID_MAX_POINTS_X < 10)) - DWIN_Draw_String(false, font6x12, Color_White, Color_Bg_Blue, start_x_px - 2 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, F(".")); - DWIN_Draw_String(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + 1 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, buf); + dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px - 2 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, F(".")); + dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + 1 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, buf); } safe_delay(10); LCD_SERIAL.flushTX(); @@ -421,7 +417,7 @@ private: } } - void Set_Mesh_Viewer_Status() { // TODO: draw gradient with values as a legend instead + void setMeshViewerStatus() { // TODO: draw gradient with values as a legend instead float v_max = abs(get_max_value()), v_min = abs(get_min_value()), range = _MAX(v_min, v_max); if (v_min > 3e+10F) v_min = 0.0000001; if (v_max > 3e+10F) v_max = 0.0000001; @@ -436,7 +432,7 @@ private: dtostrf( range, 1, 3, str_2); } sprintf_P(msg, PSTR("Red %s..0..%s Green"), str_1, str_2); - CrealityDWIN.Update_Status(msg); + crealityDWIN.updateStatus(msg); drawing_mesh = false; } @@ -447,42 +443,42 @@ private: /* General Display Functions */ -struct CrealityDWINClass::EEPROM_Settings CrealityDWINClass::eeprom_settings{0}; -constexpr const char * const CrealityDWINClass::color_names[11]; -constexpr const char * const CrealityDWINClass::preheat_modes[3]; +struct CrealityDWIN::EEPROM_Settings CrealityDWIN::eeprom_settings{0}; +constexpr const char * const CrealityDWIN::color_names[11]; +constexpr const char * const CrealityDWIN::preheat_modes[3]; // Clear a part of the screen // 4=Entire screen // 3=Title bar and Menu area (default) // 2=Menu area // 1=Title bar -void CrealityDWINClass::Clear_Screen(const uint8_t e/*=3*/) { - if (e == 1 || e == 3 || e == 4) DWIN_Draw_Rectangle(1, GetColor(eeprom_settings.menu_top_bg, Color_Bg_Blue, false), 0, 0, DWIN_WIDTH, TITLE_HEIGHT); // Clear Title Bar - if (e == 2 || e == 3) DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, 31, DWIN_WIDTH, STATUS_Y); // Clear Menu Area - if (e == 4) DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, 31, DWIN_WIDTH, DWIN_HEIGHT); // Clear Popup Area +void CrealityDWIN::clearScreen(const uint8_t e/*=3*/) { + if (e == 1 || e == 3 || e == 4) dwinDrawRectangle(1, getColor(eeprom_settings.menu_top_bg, Color_Bg_Blue, false), 0, 0, DWIN_WIDTH, TITLE_HEIGHT); // Clear Title Bar + if (e == 2 || e == 3) dwinDrawRectangle(1, Color_Bg_Black, 0, 31, DWIN_WIDTH, STATUS_Y); // Clear Menu Area + if (e == 4) dwinDrawRectangle(1, Color_Bg_Black, 0, 31, DWIN_WIDTH, DWIN_HEIGHT); // Clear Popup Area } -void CrealityDWINClass::Draw_Float(const_float_t value, const uint8_t row, const bool selected/*=false*/, const uint8_t minunit/*=10*/) { +void CrealityDWIN::drawFloat(const_float_t value, const uint8_t row, const bool selected/*=false*/, const uint8_t minunit/*=10*/) { const uint8_t digits = (uint8_t)floor(log10(abs(value))) + log10(minunit) + (minunit > 1); const uint16_t bColor = selected ? Select_Color : Color_Bg_Black; const uint16_t xpos = 240 - (digits * 8); - DWIN_Draw_Rectangle(1, Color_Bg_Black, 194, MBASE(row), 234 - (digits * 8), MBASE(row) + 16); + dwinDrawRectangle(1, Color_Bg_Black, 194, MBASE(row), 234 - (digits * 8), MBASE(row) + 16); if (isnan(value)) - DWIN_Draw_String(true, DWIN_FONT_MENU, Color_White, bColor, xpos - 8, MBASE(row), F(" NaN")); + dwinDrawString(true, DWIN_FONT_MENU, Color_White, bColor, xpos - 8, MBASE(row), F(" NaN")); else { - DWIN_Draw_FloatValue(true, true, 0, DWIN_FONT_MENU, Color_White, bColor, digits - log10(minunit) + 1, log10(minunit), xpos, MBASE(row), (value < 0 ? -value : value)); - DWIN_Draw_String(true, DWIN_FONT_MENU, Color_White, bColor, xpos - 8, MBASE(row), value < 0 ? F("-") : F(" ")); + dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, Color_White, bColor, digits - log10(minunit) + 1, log10(minunit), xpos, MBASE(row), (value < 0 ? -value : value)); + dwinDrawString(true, DWIN_FONT_MENU, Color_White, bColor, xpos - 8, MBASE(row), value < 0 ? F("-") : F(" ")); } } -void CrealityDWINClass::Draw_Option(const uint8_t value, const char * const * options, const uint8_t row, const bool selected/*=false*/, const bool color/*=false*/) { +void CrealityDWIN::drawOption(const uint8_t value, const char * const * options, const uint8_t row, const bool selected/*=false*/, const bool color/*=false*/) { const uint16_t bColor = selected ? Select_Color : Color_Bg_Black, - tColor = color ? GetColor(value, Color_White, false) : Color_White; - DWIN_Draw_Rectangle(1, bColor, 202, MBASE(row) + 14, 258, MBASE(row) - 2); - DWIN_Draw_String(false, DWIN_FONT_MENU, tColor, bColor, 202, MBASE(row) - 1, options[value]); + tColor = color ? getColor(value, Color_White, false) : Color_White; + dwinDrawRectangle(1, bColor, 202, MBASE(row) + 14, 258, MBASE(row) - 2); + dwinDrawString(false, DWIN_FONT_MENU, tColor, bColor, 202, MBASE(row) - 1, options[value]); } -uint16_t CrealityDWINClass::GetColor(const uint8_t color, const uint16_t original, const bool light/*=false*/) { +uint16_t CrealityDWIN::getColor(const uint8_t color, const uint16_t original, const bool light/*=false*/) { switch (color) { case Default: return original; @@ -521,215 +517,215 @@ uint16_t CrealityDWINClass::GetColor(const uint8_t color, const uint16_t origina return Color_White; } -void CrealityDWINClass::Draw_Title(const char * const ctitle) { - DWIN_Draw_String(false, DWIN_FONT_HEAD, GetColor(eeprom_settings.menu_top_txt, Color_White, false), Color_Bg_Blue, (DWIN_WIDTH - strlen(ctitle) * STAT_CHR_W) / 2, 5, ctitle); +void CrealityDWIN::drawTitle(const char * const ctitle) { + dwinDrawString(false, DWIN_FONT_HEAD, getColor(eeprom_settings.menu_top_txt, Color_White, false), Color_Bg_Blue, (DWIN_WIDTH - strlen(ctitle) * STAT_CHR_W) / 2, 5, ctitle); } -void CrealityDWINClass::Draw_Title(FSTR_P const ftitle) { - DWIN_Draw_String(false, DWIN_FONT_HEAD, GetColor(eeprom_settings.menu_top_txt, Color_White, false), Color_Bg_Blue, (DWIN_WIDTH - strlen_P(FTOP(ftitle)) * STAT_CHR_W) / 2, 5, ftitle); +void CrealityDWIN::drawTitle(FSTR_P const ftitle) { + dwinDrawString(false, DWIN_FONT_HEAD, getColor(eeprom_settings.menu_top_txt, Color_White, false), Color_Bg_Blue, (DWIN_WIDTH - strlen_P(FTOP(ftitle)) * STAT_CHR_W) / 2, 5, ftitle); } -void _Decorate_Menu_Item(uint8_t row, uint8_t icon, bool more) { - if (icon) DWIN_ICON_Show(ICON, icon, 26, MBASE(row) - 3); //Draw Menu Icon - if (more) DWIN_ICON_Show(ICON, ICON_More, 226, MBASE(row) - 3); // Draw More Arrow - DWIN_Draw_Line(CrealityDWIN.GetColor(CrealityDWIN.eeprom_settings.menu_split_line, Line_Color, true), 16, MBASE(row) + 33, 256, MBASE(row) + 33); // Draw Menu Line +void _decorateMenuItem(uint8_t row, uint8_t icon, bool more) { + if (icon) dwinIconShow(ICON, icon, 26, MBASE(row) - 3); //Draw Menu Icon + if (more) dwinIconShow(ICON, ICON_More, 226, MBASE(row) - 3); // Draw More Arrow + dwinDrawLine(crealityDWIN.getColor(crealityDWIN.eeprom_settings.menu_split_line, Line_Color, true), 16, MBASE(row) + 33, 256, MBASE(row) + 33); // Draw Menu Line } -void CrealityDWINClass::Draw_Menu_Item(const uint8_t row, const uint8_t icon/*=0*/, const char * const label1, const char * const label2, const bool more/*=false*/, const bool centered/*=false*/) { +void CrealityDWIN::drawMenuItem(const uint8_t row, const uint8_t icon/*=0*/, const char * const label1, const char * const label2, const bool more/*=false*/, const bool centered/*=false*/) { const uint8_t label_offset_y = (label1 || label2) ? MENU_CHR_H * 3 / 5 : 0, label1_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (label1 ? strlen(label1) : 0) * MENU_CHR_W) / 2), label2_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (label2 ? strlen(label2) : 0) * MENU_CHR_W) / 2); - if (label1) DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, label1_offset_x, MBASE(row) - 1 - label_offset_y, label1); // Draw Label - if (label2) DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, label2_offset_x, MBASE(row) - 1 + label_offset_y, label2); // Draw Label - _Decorate_Menu_Item(row, icon, more); + if (label1) dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, label1_offset_x, MBASE(row) - 1 - label_offset_y, label1); // Draw Label + if (label2) dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, label2_offset_x, MBASE(row) - 1 + label_offset_y, label2); // Draw Label + _decorateMenuItem(row, icon, more); } -void CrealityDWINClass::Draw_Menu_Item(const uint8_t row, const uint8_t icon/*=0*/, FSTR_P const flabel1, FSTR_P const flabel2, const bool more/*=false*/, const bool centered/*=false*/) { +void CrealityDWIN::drawMenuItem(const uint8_t row, const uint8_t icon/*=0*/, FSTR_P const flabel1, FSTR_P const flabel2, const bool more/*=false*/, const bool centered/*=false*/) { const uint8_t label_offset_y = (flabel1 || flabel2) ? MENU_CHR_H * 3 / 5 : 0, label1_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (flabel1 ? strlen_P(FTOP(flabel1)) : 0) * MENU_CHR_W) / 2), label2_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (flabel2 ? strlen_P(FTOP(flabel2)) : 0) * MENU_CHR_W) / 2); - if (flabel1) DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, label1_offset_x, MBASE(row) - 1 - label_offset_y, flabel1); // Draw Label - if (flabel2) DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, label2_offset_x, MBASE(row) - 1 + label_offset_y, flabel2); // Draw Label - _Decorate_Menu_Item(row, icon, more); + if (flabel1) dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, label1_offset_x, MBASE(row) - 1 - label_offset_y, flabel1); // Draw Label + if (flabel2) dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, label2_offset_x, MBASE(row) - 1 + label_offset_y, flabel2); // Draw Label + _decorateMenuItem(row, icon, more); } -void CrealityDWINClass::Draw_Checkbox(const uint8_t row, const bool value) { +void CrealityDWIN::drawCheckbox(const uint8_t row, const bool value) { #if ENABLED(DWIN_CREALITY_LCD_CUSTOM_ICONS) // Draw appropriate checkbox icon - DWIN_ICON_Show(ICON, (value ? ICON_Checkbox_T : ICON_Checkbox_F), 226, MBASE(row) - 3); + dwinIconShow(ICON, (value ? ICON_Checkbox_T : ICON_Checkbox_F), 226, MBASE(row) - 3); #else // Draw a basic checkbox using rectangles and lines - DWIN_Draw_Rectangle(1, Color_Bg_Black, 226, MBASE(row) - 3, 226 + 20, MBASE(row) - 3 + 20); - DWIN_Draw_Rectangle(0, Color_White, 226, MBASE(row) - 3, 226 + 20, MBASE(row) - 3 + 20); + dwinDrawRectangle(1, Color_Bg_Black, 226, MBASE(row) - 3, 226 + 20, MBASE(row) - 3 + 20); + dwinDrawRectangle(0, Color_White, 226, MBASE(row) - 3, 226 + 20, MBASE(row) - 3 + 20); if (value) { - DWIN_Draw_Line(Check_Color, 227, MBASE(row) - 3 + 11, 226 + 8, MBASE(row) - 3 + 17); - DWIN_Draw_Line(Check_Color, 227 + 8, MBASE(row) - 3 + 17, 226 + 19, MBASE(row) - 3 + 1); - DWIN_Draw_Line(Check_Color, 227, MBASE(row) - 3 + 12, 226 + 8, MBASE(row) - 3 + 18); - DWIN_Draw_Line(Check_Color, 227 + 8, MBASE(row) - 3 + 18, 226 + 19, MBASE(row) - 3 + 2); - DWIN_Draw_Line(Check_Color, 227, MBASE(row) - 3 + 13, 226 + 8, MBASE(row) - 3 + 19); - DWIN_Draw_Line(Check_Color, 227 + 8, MBASE(row) - 3 + 19, 226 + 19, MBASE(row) - 3 + 3); + dwinDrawLine(Check_Color, 227, MBASE(row) - 3 + 11, 226 + 8, MBASE(row) - 3 + 17); + dwinDrawLine(Check_Color, 227 + 8, MBASE(row) - 3 + 17, 226 + 19, MBASE(row) - 3 + 1); + dwinDrawLine(Check_Color, 227, MBASE(row) - 3 + 12, 226 + 8, MBASE(row) - 3 + 18); + dwinDrawLine(Check_Color, 227 + 8, MBASE(row) - 3 + 18, 226 + 19, MBASE(row) - 3 + 2); + dwinDrawLine(Check_Color, 227, MBASE(row) - 3 + 13, 226 + 8, MBASE(row) - 3 + 19); + dwinDrawLine(Check_Color, 227 + 8, MBASE(row) - 3 + 19, 226 + 19, MBASE(row) - 3 + 3); } #endif } -void CrealityDWINClass::Draw_Menu(const uint8_t menu, const uint8_t select/*=0*/, const uint8_t scroll/*=0*/) { +void CrealityDWIN::drawMenu(const uint8_t menu, const uint8_t select/*=0*/, const uint8_t scroll/*=0*/) { if (active_menu != menu) { last_menu = active_menu; if (process == Menu) last_selection = selection; } - selection = _MIN(select, Get_Menu_Size(menu)); + selection = _MIN(select, getMenuSize(menu)); scrollpos = scroll; if (selection - scrollpos > MROWS) scrollpos = selection - MROWS; process = Menu; active_menu = menu; - Clear_Screen(); - Draw_Title(Get_Menu_Title(menu)); - for (uint8_t i = 0; i < TROWS; ++i) Menu_Item_Handler(menu, i + scrollpos); - DWIN_Draw_Rectangle(1, GetColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + clearScreen(); + drawTitle(getMenuTitle(menu)); + for (uint8_t i = 0; i < TROWS; ++i) menuItemHandler(menu, i + scrollpos); + dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); } -void CrealityDWINClass::Redraw_Menu(const bool lastproc/*=true*/, const bool lastsel/*=false*/, const bool lastmenu/*=false*/) { +void CrealityDWIN::redrawMenu(const bool lastproc/*=true*/, const bool lastsel/*=false*/, const bool lastmenu/*=false*/) { switch (lastproc ? last_process : process) { case Menu: - Draw_Menu(lastmenu ? last_menu : active_menu, lastsel ? last_selection : selection, lastmenu ? 0 : scrollpos); + drawMenu(lastmenu ? last_menu : active_menu, lastsel ? last_selection : selection, lastmenu ? 0 : scrollpos); break; - case Main: Draw_Main_Menu(lastsel ? last_selection : selection); break; - case Print: Draw_Print_Screen(); break; - case File: Draw_SD_List(); break; + case Main: drawMainMenu(lastsel ? last_selection : selection); break; + case Print: drawPrintScreen(); break; + case File: drawSDList(); break; default: break; } } -void CrealityDWINClass::Redraw_Screen() { - Redraw_Menu(false); - Draw_Status_Area(true); - Update_Status_Bar(true); +void CrealityDWIN::redrawScreen() { + redrawMenu(false); + drawStatusArea(true); + updateStatusBar(true); } /* Primary Menus and Screen Elements */ -void CrealityDWINClass::Main_Menu_Icons() { +void CrealityDWIN::mainMenuIcons() { if (selection == 0) { - DWIN_ICON_Show(ICON, ICON_Print_1, 17, 130); - DWIN_Draw_Rectangle(0, GetColor(eeprom_settings.highlight_box, Color_White), 17, 130, 126, 229); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 52, 200, F("Print")); + dwinIconShow(ICON, ICON_Print_1, 17, 130); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 17, 130, 126, 229); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 52, 200, F("Print")); } else { - DWIN_ICON_Show(ICON, ICON_Print_0, 17, 130); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 52, 200, F("Print")); + dwinIconShow(ICON, ICON_Print_0, 17, 130); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 52, 200, F("Print")); } if (selection == 1) { - DWIN_ICON_Show(ICON, ICON_Prepare_1, 145, 130); - DWIN_Draw_Rectangle(0, GetColor(eeprom_settings.highlight_box, Color_White), 145, 130, 254, 229); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 170, 200, F("Prepare")); + dwinIconShow(ICON, ICON_Prepare_1, 145, 130); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 145, 130, 254, 229); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 170, 200, F("Prepare")); } else { - DWIN_ICON_Show(ICON, ICON_Prepare_0, 145, 130); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 170, 200, F("Prepare")); + dwinIconShow(ICON, ICON_Prepare_0, 145, 130); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 170, 200, F("Prepare")); } if (selection == 2) { - DWIN_ICON_Show(ICON, ICON_Control_1, 17, 246); - DWIN_Draw_Rectangle(0, GetColor(eeprom_settings.highlight_box, Color_White), 17, 246, 126, 345); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 43, 317, F("Control")); + dwinIconShow(ICON, ICON_Control_1, 17, 246); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 17, 246, 126, 345); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 43, 317, F("Control")); } else { - DWIN_ICON_Show(ICON, ICON_Control_0, 17, 246); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 43, 317, F("Control")); + dwinIconShow(ICON, ICON_Control_0, 17, 246); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 43, 317, F("Control")); } #if HAS_ABL_OR_UBL if (selection == 3) { - DWIN_ICON_Show(ICON, ICON_Leveling_1, 145, 246); - DWIN_Draw_Rectangle(0, GetColor(eeprom_settings.highlight_box, Color_White), 145, 246, 254, 345); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 179, 317, F("Level")); + dwinIconShow(ICON, ICON_Leveling_1, 145, 246); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 145, 246, 254, 345); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 179, 317, F("Level")); } else { - DWIN_ICON_Show(ICON, ICON_Leveling_0, 145, 246); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 179, 317, F("Level")); + dwinIconShow(ICON, ICON_Leveling_0, 145, 246); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 179, 317, F("Level")); } #else if (selection == 3) { - DWIN_ICON_Show(ICON, ICON_Info_1, 145, 246); - DWIN_Draw_Rectangle(0, GetColor(eeprom_settings.highlight_box, Color_White), 145, 246, 254, 345); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 181, 317, F("Info")); + dwinIconShow(ICON, ICON_Info_1, 145, 246); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 145, 246, 254, 345); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 181, 317, F("Info")); } else { - DWIN_ICON_Show(ICON, ICON_Info_0, 145, 246); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 181, 317, F("Info")); + dwinIconShow(ICON, ICON_Info_0, 145, 246); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 181, 317, F("Info")); } #endif } -void CrealityDWINClass::Draw_Main_Menu(const uint8_t select/*=0*/) { +void CrealityDWIN::drawMainMenu(const uint8_t select/*=0*/) { process = Main; active_menu = MainMenu; selection = select; - Clear_Screen(); - Draw_Title(Get_Menu_Title(MainMenu)); + clearScreen(); + drawTitle(getMenuTitle(MainMenu)); SERIAL_ECHOPGM("\nDWIN handshake "); - DWIN_ICON_Show(ICON, ICON_LOGO, 71, 72); - Main_Menu_Icons(); + dwinIconShow(ICON, ICON_LOGO, 71, 72); + mainMenuIcons(); } -void CrealityDWINClass::Print_Screen_Icons() { +void CrealityDWIN::printScreenIcons() { if (selection == 0) { - DWIN_ICON_Show(ICON, ICON_Setup_1, 8, 252); - DWIN_Draw_Rectangle(0, GetColor(eeprom_settings.highlight_box, Color_White), 8, 252, 87, 351); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 30, 322, F("Tune")); + dwinIconShow(ICON, ICON_Setup_1, 8, 252); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 8, 252, 87, 351); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 30, 322, F("Tune")); } else { - DWIN_ICON_Show(ICON, ICON_Setup_0, 8, 252); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 30, 322, F("Tune")); + dwinIconShow(ICON, ICON_Setup_0, 8, 252); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 30, 322, F("Tune")); } if (selection == 2) { - DWIN_ICON_Show(ICON, ICON_Stop_1, 184, 252); - DWIN_Draw_Rectangle(0, GetColor(eeprom_settings.highlight_box, Color_White), 184, 252, 263, 351); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 205, 322, F("Stop")); + dwinIconShow(ICON, ICON_Stop_1, 184, 252); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 184, 252, 263, 351); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 205, 322, F("Stop")); } else { - DWIN_ICON_Show(ICON, ICON_Stop_0, 184, 252); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 205, 322, F("Stop")); + dwinIconShow(ICON, ICON_Stop_0, 184, 252); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 205, 322, F("Stop")); } if (paused) { if (selection == 1) { - DWIN_ICON_Show(ICON, ICON_Continue_1, 96, 252); - DWIN_Draw_Rectangle(0, GetColor(eeprom_settings.highlight_box, Color_White), 96, 252, 175, 351); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 114, 322, F("Print")); + dwinIconShow(ICON, ICON_Continue_1, 96, 252); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 96, 252, 175, 351); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 114, 322, F("Print")); } else { - DWIN_ICON_Show(ICON, ICON_Continue_0, 96, 252); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 114, 322, F("Print")); + dwinIconShow(ICON, ICON_Continue_0, 96, 252); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 114, 322, F("Print")); } } else { if (selection == 1) { - DWIN_ICON_Show(ICON, ICON_Pause_1, 96, 252); - DWIN_Draw_Rectangle(0, GetColor(eeprom_settings.highlight_box, Color_White), 96, 252, 175, 351); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 114, 322, F("Pause")); + dwinIconShow(ICON, ICON_Pause_1, 96, 252); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 96, 252, 175, 351); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 114, 322, F("Pause")); } else { - DWIN_ICON_Show(ICON, ICON_Pause_0, 96, 252); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 114, 322, F("Pause")); + dwinIconShow(ICON, ICON_Pause_0, 96, 252); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 114, 322, F("Pause")); } } } -void CrealityDWINClass::Draw_Print_Screen() { +void CrealityDWIN::drawPrintScreen() { process = Print; selection = 0; - Clear_Screen(); - DWIN_Draw_Rectangle(1, Color_Bg_Black, 8, 352, DWIN_WIDTH - 8, 376); - Draw_Title("Printing..."); - Print_Screen_Icons(); - DWIN_ICON_Show(ICON, ICON_PrintTime, 14, 171); - DWIN_ICON_Show(ICON, ICON_RemainTime, 147, 169); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, 41, 163, F("Elapsed")); - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, 176, 163, F("Remaining")); - Update_Status_Bar(true); - Draw_Print_ProgressBar(); - Draw_Print_ProgressElapsed(); - TERN_(SET_REMAINING_TIME, Draw_Print_ProgressRemain()); - Draw_Print_Filename(true); + clearScreen(); + dwinDrawRectangle(1, Color_Bg_Black, 8, 352, DWIN_WIDTH - 8, 376); + drawTitle("Printing..."); + printScreenIcons(); + dwinIconShow(ICON, ICON_PrintTime, 14, 171); + dwinIconShow(ICON, ICON_RemainTime, 147, 169); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, 41, 163, F("Elapsed")); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, 176, 163, F("Remaining")); + updateStatusBar(true); + drawPrintProgressBar(); + drawPrintProgressElapsed(); + TERN_(SET_REMAINING_TIME, drawPrintProgressRemain()); + drawPrintFilename(true); } -void CrealityDWINClass::Draw_Print_Filename(const bool reset/*=false*/) { +void CrealityDWIN::drawPrintFilename(const bool reset/*=false*/) { typedef TextScroller<30> Scroller; static Scroller scroller; if (reset) scroller.reset(); @@ -737,61 +733,61 @@ void CrealityDWINClass::Draw_Print_Filename(const bool reset/*=false*/) { Scroller::Buffer buf; size_t outlen = 0; const char* outstr = scroller.scroll(outlen, buf, filename); - DWIN_Draw_Rectangle(1, Color_Bg_Black, 8, 50, DWIN_WIDTH - 8, 80); + dwinDrawRectangle(1, Color_Bg_Black, 8, 50, DWIN_WIDTH - 8, 80); const int8_t npos = (DWIN_WIDTH - outlen * MENU_CHR_W) / 2; - DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, npos, 60, outstr); + dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, npos, 60, outstr); } } -void CrealityDWINClass::Draw_Print_ProgressBar() { +void CrealityDWIN::drawPrintProgressBar() { uint8_t printpercent = sdprint ? card.percentDone() : (ui._get_progress() / 100); - DWIN_ICON_Show(ICON, ICON_Bar, 15, 93); - DWIN_Draw_Rectangle(1, BarFill_Color, 16 + printpercent * 240 / 100, 93, 256, 113); - DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_MENU, GetColor(eeprom_settings.progress_percent, Percent_Color), Color_Bg_Black, 3, 109, 133, printpercent); - DWIN_Draw_String(false, DWIN_FONT_MENU, GetColor(eeprom_settings.progress_percent, Percent_Color), Color_Bg_Black, 133, 133, F("%")); + dwinIconShow(ICON, ICON_Bar, 15, 93); + dwinDrawRectangle(1, BarFill_Color, 16 + printpercent * 240 / 100, 93, 256, 113); + dwinDrawIntValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.progress_percent, Percent_Color), Color_Bg_Black, 3, 109, 133, printpercent); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_percent, Percent_Color), Color_Bg_Black, 133, 133, F("%")); } #if ENABLED(SET_REMAINING_TIME) - void CrealityDWINClass::Draw_Print_ProgressRemain() { + void CrealityDWIN::drawPrintProgressRemain() { uint16_t remainingtime = ui.get_remaining_time(); - DWIN_Draw_IntValue(true, true, 1, DWIN_FONT_MENU, GetColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 176, 187, remainingtime / 3600); - DWIN_Draw_IntValue(true, true, 1, DWIN_FONT_MENU, GetColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 200, 187, (remainingtime % 3600) / 60); + dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 176, 187, remainingtime / 3600); + dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 200, 187, (remainingtime % 3600) / 60); if (eeprom_settings.time_format_textual) { - DWIN_Draw_String(false, DWIN_FONT_MENU, GetColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 192, 187, F("h")); - DWIN_Draw_String(false, DWIN_FONT_MENU, GetColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 216, 187, F("m")); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 192, 187, F("h")); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 216, 187, F("m")); } else - DWIN_Draw_String(false, DWIN_FONT_MENU, GetColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 192, 187, F(":")); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 192, 187, F(":")); } #endif -void CrealityDWINClass::Draw_Print_ProgressElapsed() { +void CrealityDWIN::drawPrintProgressElapsed() { duration_t elapsed = print_job_timer.duration(); - DWIN_Draw_IntValue(true, true, 1, DWIN_FONT_MENU, GetColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 42, 187, elapsed.value / 3600); - DWIN_Draw_IntValue(true, true, 1, DWIN_FONT_MENU, GetColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 66, 187, (elapsed.value % 3600) / 60); + dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 42, 187, elapsed.value / 3600); + dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 66, 187, (elapsed.value % 3600) / 60); if (eeprom_settings.time_format_textual) { - DWIN_Draw_String(false, DWIN_FONT_MENU, GetColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 58, 187, F("h")); - DWIN_Draw_String(false, DWIN_FONT_MENU, GetColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 82, 187, F("m")); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 58, 187, F("h")); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 82, 187, F("m")); } else - DWIN_Draw_String(false, DWIN_FONT_MENU, GetColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 58, 187, F(":")); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 58, 187, F(":")); } -void CrealityDWINClass::Draw_Print_confirm() { - Draw_Print_Screen(); +void CrealityDWIN::drawPrintConfirm() { + drawPrintScreen(); process = Confirm; popup = Complete; - DWIN_Draw_Rectangle(1, Color_Bg_Black, 8, 252, 263, 351); - DWIN_ICON_Show(ICON, ICON_Confirm_E, 87, 283); - DWIN_Draw_Rectangle(0, GetColor(eeprom_settings.highlight_box, Color_White), 86, 282, 187, 321); - DWIN_Draw_Rectangle(0, GetColor(eeprom_settings.highlight_box, Color_White), 85, 281, 188, 322); + dwinDrawRectangle(1, Color_Bg_Black, 8, 252, 263, 351); + dwinIconShow(ICON, ICON_Confirm_E, 87, 283); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 86, 282, 187, 321); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 85, 281, 188, 322); } -void CrealityDWINClass::Draw_SD_Item(const uint8_t item, const uint8_t row) { +void CrealityDWIN::drawSDItem(const uint8_t item, const uint8_t row) { if (item == 0) - Draw_Menu_Item(0, ICON_Back, card.flag.workDirIsRoot ? F("Back") : F("..")); + drawMenuItem(0, ICON_Back, card.flag.workDirIsRoot ? F("Back") : F("..")); else { card.selectFileByIndexSorted(item - 1); char * const filename = card.longest_filename(); @@ -806,31 +802,31 @@ void CrealityDWINClass::Draw_SD_Item(const uint8_t item, const uint8_t row) { if (pos > max) for (uint8_t i = len - 3; i < len; ++i) name[i] = '.'; name[len] = '\0'; - Draw_Menu_Item(row, card.flag.filenameIsDir ? ICON_More : ICON_File, name); + drawMenuItem(row, card.flag.filenameIsDir ? ICON_More : ICON_File, name); } } -void CrealityDWINClass::Draw_SD_List(const bool removed/*=false*/) { - Clear_Screen(); - Draw_Title("Select File"); +void CrealityDWIN::drawSDList(const bool removed/*=false*/) { + clearScreen(); + drawTitle("Select File"); selection = 0; scrollpos = 0; process = File; if (card.isMounted() && !removed) { for (uint8_t i = 0; i < _MIN(card.get_num_items() + 1, TROWS); ++i) - Draw_SD_Item(i, i); + drawSDItem(i, i); } else { - Draw_Menu_Item(0, ICON_Back, F("Back")); - DWIN_Draw_Rectangle(1, Color_Bg_Red, 10, MBASE(3) - 10, DWIN_WIDTH - 10, MBASE(4)); - DWIN_Draw_String(false, font16x32, Color_Yellow, Color_Bg_Red, ((DWIN_WIDTH) - 8 * 16) / 2, MBASE(3), F("No Media")); + drawMenuItem(0, ICON_Back, F("Back")); + dwinDrawRectangle(1, Color_Bg_Red, 10, MBASE(3) - 10, DWIN_WIDTH - 10, MBASE(4)); + dwinDrawString(false, font16x32, Color_Yellow, Color_Bg_Red, ((DWIN_WIDTH) - 8 * 16) / 2, MBASE(3), F("No Media")); } - DWIN_Draw_Rectangle(1, GetColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(0) - 18, 14, MBASE(0) + 33); + dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(0) - 18, 14, MBASE(0) + 33); } -void CrealityDWINClass::Draw_Status_Area(const bool icons/*=false*/) { +void CrealityDWIN::drawStatusArea(const bool icons/*=false*/) { - if (icons) DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, STATUS_Y, DWIN_WIDTH, DWIN_HEIGHT - 1); + if (icons) dwinDrawRectangle(1, Color_Bg_Black, 0, STATUS_Y, DWIN_WIDTH, DWIN_HEIGHT - 1); #if HAS_HOTEND static float hotend = -1; @@ -838,27 +834,27 @@ void CrealityDWINClass::Draw_Status_Area(const bool icons/*=false*/) { if (icons) { hotend = -1; hotendtarget = -1; - DWIN_ICON_Show(ICON, ICON_HotendTemp, 10, 383); - DWIN_Draw_String(false, DWIN_FONT_STAT, GetColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 25 + 3 * STAT_CHR_W + 5, 384, F("/")); + dwinIconShow(ICON, ICON_HotendTemp, 10, 383); + dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 25 + 3 * STAT_CHR_W + 5, 384, F("/")); } if (thermalManager.temp_hotend[0].celsius != hotend) { hotend = thermalManager.temp_hotend[0].celsius; - DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, GetColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 28, 384, thermalManager.temp_hotend[0].celsius); - DWIN_Draw_DegreeSymbol(GetColor(eeprom_settings.status_area_text, Color_White), 25 + 3 * STAT_CHR_W + 5, 386); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 28, 384, thermalManager.temp_hotend[0].celsius); + dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, Color_White), 25 + 3 * STAT_CHR_W + 5, 386); } if (thermalManager.temp_hotend[0].target != hotendtarget) { hotendtarget = thermalManager.temp_hotend[0].target; - DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, GetColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 25 + 4 * STAT_CHR_W + 6, 384, thermalManager.temp_hotend[0].target); - DWIN_Draw_DegreeSymbol(GetColor(eeprom_settings.status_area_text, Color_White), 25 + 4 * STAT_CHR_W + 39, 386); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 25 + 4 * STAT_CHR_W + 6, 384, thermalManager.temp_hotend[0].target); + dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, Color_White), 25 + 4 * STAT_CHR_W + 39, 386); } if (icons) { flow = -1; - DWIN_ICON_Show(ICON, ICON_StepE, 112, 417); - DWIN_Draw_String(false, DWIN_FONT_STAT, GetColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 116 + 5 * STAT_CHR_W + 2, 417, F("%")); + dwinIconShow(ICON, ICON_StepE, 112, 417); + dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 116 + 5 * STAT_CHR_W + 2, 417, F("%")); } if (planner.flow_percentage[0] != flow) { flow = planner.flow_percentage[0]; - DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, GetColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 116 + 2 * STAT_CHR_W, 417, planner.flow_percentage[0]); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 116 + 2 * STAT_CHR_W, 417, planner.flow_percentage[0]); } #endif @@ -868,18 +864,18 @@ void CrealityDWINClass::Draw_Status_Area(const bool icons/*=false*/) { if (icons) { bed = -1; bedtarget = -1; - DWIN_ICON_Show(ICON, ICON_BedTemp, 10, 416); - DWIN_Draw_String(false, DWIN_FONT_STAT, GetColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 25 + 3 * STAT_CHR_W + 5, 417, F("/")); + dwinIconShow(ICON, ICON_BedTemp, 10, 416); + dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 25 + 3 * STAT_CHR_W + 5, 417, F("/")); } if (thermalManager.temp_bed.celsius != bed) { bed = thermalManager.temp_bed.celsius; - DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, GetColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 28, 417, thermalManager.temp_bed.celsius); - DWIN_Draw_DegreeSymbol(GetColor(eeprom_settings.status_area_text, Color_White), 25 + 3 * STAT_CHR_W + 5, 419); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 28, 417, thermalManager.temp_bed.celsius); + dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, Color_White), 25 + 3 * STAT_CHR_W + 5, 419); } if (thermalManager.temp_bed.target != bedtarget) { bedtarget = thermalManager.temp_bed.target; - DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, GetColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 25 + 4 * STAT_CHR_W + 6, 417, thermalManager.temp_bed.target); - DWIN_Draw_DegreeSymbol(GetColor(eeprom_settings.status_area_text, Color_White), 25 + 4 * STAT_CHR_W + 39, 419); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 25 + 4 * STAT_CHR_W + 6, 417, thermalManager.temp_bed.target); + dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, Color_White), 25 + 4 * STAT_CHR_W + 39, 419); } #endif @@ -887,11 +883,11 @@ void CrealityDWINClass::Draw_Status_Area(const bool icons/*=false*/) { static uint8_t fan = -1; if (icons) { fan = -1; - DWIN_ICON_Show(ICON, ICON_FanSpeed, 187, 383); + dwinIconShow(ICON, ICON_FanSpeed, 187, 383); } if (thermalManager.fan_speed[0] != fan) { fan = thermalManager.fan_speed[0]; - DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, GetColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 195 + 2 * STAT_CHR_W, 384, thermalManager.fan_speed[0]); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 195 + 2 * STAT_CHR_W, 384, thermalManager.fan_speed[0]); } #endif @@ -900,24 +896,24 @@ void CrealityDWINClass::Draw_Status_Area(const bool icons/*=false*/) { if (icons) { offset = -1; - DWIN_ICON_Show(ICON, ICON_Zoffset, 187, 416); + dwinIconShow(ICON, ICON_Zoffset, 187, 416); } if (zoffsetvalue != offset) { offset = zoffsetvalue; - DWIN_Draw_FloatValue(true, true, 0, DWIN_FONT_STAT, GetColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 2, 2, 207, 417, (zoffsetvalue < 0 ? -zoffsetvalue : zoffsetvalue)); - DWIN_Draw_String(true, DWIN_FONT_MENU, GetColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 205, 419, zoffsetvalue < 0 ? F("-") : F(" ")); + dwinDrawFloatValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 2, 2, 207, 417, (zoffsetvalue < 0 ? -zoffsetvalue : zoffsetvalue)); + dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 205, 419, zoffsetvalue < 0 ? F("-") : F(" ")); } #endif static int16_t feedrate = -1; if (icons) { feedrate = -1; - DWIN_ICON_Show(ICON, ICON_Speed, 113, 383); - DWIN_Draw_String(false, DWIN_FONT_STAT, GetColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 116 + 5 * STAT_CHR_W + 2, 384, F("%")); + dwinIconShow(ICON, ICON_Speed, 113, 383); + dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 116 + 5 * STAT_CHR_W + 2, 384, F("%")); } if (feedrate_percentage != feedrate) { feedrate = feedrate_percentage; - DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, GetColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 116 + 2 * STAT_CHR_W, 384, feedrate_percentage); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 116 + 2 * STAT_CHR_W, 384, feedrate_percentage); } static float x = -1, y = -1, z = -1; @@ -927,75 +923,75 @@ void CrealityDWINClass::Draw_Status_Area(const bool icons/*=false*/) { update_z = (current_position.z != z || axis_should_home(Z_AXIS) || update_z); if (icons) { x = y = z = -1; - DWIN_Draw_Line(GetColor(eeprom_settings.coordinates_split_line, Line_Color, true), 16, 450, 256, 450); - DWIN_ICON_Show(ICON, ICON_MaxSpeedX, 10, 456); - DWIN_ICON_Show(ICON, ICON_MaxSpeedY, 95, 456); - DWIN_ICON_Show(ICON, ICON_MaxSpeedZ, 180, 456); + dwinDrawLine(getColor(eeprom_settings.coordinates_split_line, Line_Color, true), 16, 450, 256, 450); + dwinIconShow(ICON, ICON_MaxSpeedX, 10, 456); + dwinIconShow(ICON, ICON_MaxSpeedY, 95, 456); + dwinIconShow(ICON, ICON_MaxSpeedZ, 180, 456); } if (update_x) { x = current_position.x; if ((update_x = axis_should_home(X_AXIS) && ui.get_blink())) - DWIN_Draw_String(true, DWIN_FONT_MENU, GetColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 35, 459, F(" -?- ")); + dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 35, 459, F(" -?- ")); else - DWIN_Draw_FloatValue(true, true, 0, DWIN_FONT_MENU, GetColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 3, 1, 35, 459, current_position.x); + dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 3, 1, 35, 459, current_position.x); } if (update_y) { y = current_position.y; if ((update_y = axis_should_home(Y_AXIS) && ui.get_blink())) - DWIN_Draw_String(true, DWIN_FONT_MENU, GetColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 120, 459, F(" -?- ")); + dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 120, 459, F(" -?- ")); else - DWIN_Draw_FloatValue(true, true, 0, DWIN_FONT_MENU, GetColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 3, 1, 120, 459, current_position.y); + dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 3, 1, 120, 459, current_position.y); } if (update_z) { z = current_position.z; if ((update_z = axis_should_home(Z_AXIS) && ui.get_blink())) - DWIN_Draw_String(true, DWIN_FONT_MENU, GetColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 205, 459, F(" -?- ")); + dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 205, 459, F(" -?- ")); else - DWIN_Draw_FloatValue(true, true, 0, DWIN_FONT_MENU, GetColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 3, 2, 205, 459, current_position.z >= 0 ? current_position.z : 0); + dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 3, 2, 205, 459, current_position.z >= 0 ? current_position.z : 0); } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } -void CrealityDWINClass::Draw_Popup(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, uint8_t mode, uint8_t icon/*=0*/) { +void CrealityDWIN::drawPopup(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, uint8_t mode, uint8_t icon/*=0*/) { if (process != Confirm && process != Popup && process != Wait) last_process = process; if ((process == Menu || process == Wait) && mode == Popup) last_selection = selection; process = mode; - Clear_Screen(); - DWIN_Draw_Rectangle(0, Color_White, 13, 59, 259, 351); - DWIN_Draw_Rectangle(1, Color_Bg_Window, 14, 60, 258, 350); + clearScreen(); + dwinDrawRectangle(0, Color_White, 13, 59, 259, 351); + dwinDrawRectangle(1, Color_Bg_Window, 14, 60, 258, 350); const uint8_t ypos = (mode == Popup || mode == Confirm) ? 150 : 230; - if (icon > 0) DWIN_ICON_Show(ICON, icon, 101, 105); - DWIN_Draw_String(true, DWIN_FONT_MENU, Popup_Text_Color, Color_Bg_Window, (272 - 8 * strlen_P(FTOP(line1))) / 2, ypos, line1); - DWIN_Draw_String(true, DWIN_FONT_MENU, Popup_Text_Color, Color_Bg_Window, (272 - 8 * strlen_P(FTOP(line2))) / 2, ypos + 30, line2); - DWIN_Draw_String(true, DWIN_FONT_MENU, Popup_Text_Color, Color_Bg_Window, (272 - 8 * strlen_P(FTOP(line3))) / 2, ypos + 60, line3); + if (icon > 0) dwinIconShow(ICON, icon, 101, 105); + dwinDrawString(true, DWIN_FONT_MENU, Popup_Text_Color, Color_Bg_Window, (272 - 8 * strlen_P(FTOP(line1))) / 2, ypos, line1); + dwinDrawString(true, DWIN_FONT_MENU, Popup_Text_Color, Color_Bg_Window, (272 - 8 * strlen_P(FTOP(line2))) / 2, ypos + 30, line2); + dwinDrawString(true, DWIN_FONT_MENU, Popup_Text_Color, Color_Bg_Window, (272 - 8 * strlen_P(FTOP(line3))) / 2, ypos + 60, line3); if (mode == Popup) { selection = 0; - DWIN_Draw_Rectangle(1, Confirm_Color, 26, 280, 125, 317); - DWIN_Draw_Rectangle(1, Cancel_Color, 146, 280, 245, 317); - DWIN_Draw_String(false, DWIN_FONT_STAT, Color_White, Color_Bg_Window, 39, 290, F("Confirm")); - DWIN_Draw_String(false, DWIN_FONT_STAT, Color_White, Color_Bg_Window, 165, 290, F("Cancel")); - Popup_Select(); + dwinDrawRectangle(1, Confirm_Color, 26, 280, 125, 317); + dwinDrawRectangle(1, Cancel_Color, 146, 280, 245, 317); + dwinDrawString(false, DWIN_FONT_STAT, Color_White, Color_Bg_Window, 39, 290, F("Confirm")); + dwinDrawString(false, DWIN_FONT_STAT, Color_White, Color_Bg_Window, 165, 290, F("Cancel")); + popupSelect(); } else if (mode == Confirm) { - DWIN_Draw_Rectangle(1, Confirm_Color, 87, 280, 186, 317); - DWIN_Draw_String(false, DWIN_FONT_STAT, Color_White, Color_Bg_Window, 96, 290, F("Continue")); + dwinDrawRectangle(1, Confirm_Color, 87, 280, 186, 317); + dwinDrawString(false, DWIN_FONT_STAT, Color_White, Color_Bg_Window, 96, 290, F("Continue")); } } void MarlinUI::kill_screen(FSTR_P const error, FSTR_P const) { - CrealityDWIN.Draw_Popup(F("Printer Kill Reason:"), error, F("Restart Required"), Wait, ICON_BLTouch); + crealityDWIN.drawPopup(F("Printer Kill Reason:"), error, F("Restart Required"), Wait, ICON_BLTouch); } -void CrealityDWINClass::Popup_Select() { - const uint16_t c1 = selection ? Color_Bg_Window : GetColor(eeprom_settings.highlight_box, Color_White), - c2 = selection ? GetColor(eeprom_settings.highlight_box, Color_White) : Color_Bg_Window; - DWIN_Draw_Rectangle(0, c1, 25, 279, 126, 318); - DWIN_Draw_Rectangle(0, c1, 24, 278, 127, 319); - DWIN_Draw_Rectangle(0, c2, 145, 279, 246, 318); - DWIN_Draw_Rectangle(0, c2, 144, 278, 247, 319); +void CrealityDWIN::popupSelect() { + const uint16_t c1 = selection ? Color_Bg_Window : getColor(eeprom_settings.highlight_box, Color_White), + c2 = selection ? getColor(eeprom_settings.highlight_box, Color_White) : Color_Bg_Window; + dwinDrawRectangle(0, c1, 25, 279, 126, 318); + dwinDrawRectangle(0, c1, 24, 278, 127, 319); + dwinDrawRectangle(0, c2, 145, 279, 246, 318); + dwinDrawRectangle(0, c2, 144, 278, 247, 319); } -void CrealityDWINClass::Update_Status_Bar(const bool refresh/*=false*/) { +void CrealityDWIN::updateStatusBar(const bool refresh/*=false*/) { typedef TextScroller<30> Scroller; static bool new_msg; static Scroller scroller; @@ -1011,21 +1007,21 @@ void CrealityDWINClass::Update_Status_Bar(const bool refresh/*=false*/) { if (new_msg) { new_msg = false; if (process == Print) { - DWIN_Draw_Rectangle(1, Color_Grey, 8, 214, DWIN_WIDTH - 8, 238); + dwinDrawRectangle(1, Color_Grey, 8, 214, DWIN_WIDTH - 8, 238); const int8_t npos = (DWIN_WIDTH - len * MENU_CHR_W) / 2; - DWIN_Draw_String(false, DWIN_FONT_MENU, GetColor(eeprom_settings.status_bar_text, Color_White), Color_Bg_Black, npos, 219, dispmsg); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.status_bar_text, Color_White), Color_Bg_Black, npos, 219, dispmsg); } else { - DWIN_Draw_Rectangle(1, Color_Bg_Black, 8, 352, DWIN_WIDTH - 8, 376); + dwinDrawRectangle(1, Color_Bg_Black, 8, 352, DWIN_WIDTH - 8, 376); const int8_t npos = (DWIN_WIDTH - len * MENU_CHR_W) / 2; - DWIN_Draw_String(false, DWIN_FONT_MENU, GetColor(eeprom_settings.status_bar_text, Color_White), Color_Bg_Black, npos, 357, dispmsg); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.status_bar_text, Color_White), Color_Bg_Black, npos, 357, dispmsg); } } } /* Menu Item Config */ -void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item, bool draw/*=true*/) { +void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool draw/*=true*/) { const uint8_t row = item - scrollpos; #if HAS_LEVELING static bool level_state; @@ -1043,38 +1039,38 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case PREHEAT_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(TempMenu, sel); + drawMenu(TempMenu, sel); break; #if HAS_HOTEND case PREHEAT_SUBMENU_HOTEND: if (draw) { - Draw_Menu_Item(row, ICON_SetEndTemp, F("Hotend")); - Draw_Float(ui.material_preset[index].hotend_temp, row, false, 1); + drawMenuItem(row, ICON_SetEndTemp, F("Hotend")); + drawFloat(ui.material_preset[index].hotend_temp, row, false, 1); } else - Modify_Value(ui.material_preset[index].hotend_temp, MIN_E_TEMP, MAX_E_TEMP, 1); + modifyValue(ui.material_preset[index].hotend_temp, MIN_E_TEMP, MAX_E_TEMP, 1); break; #endif #if HAS_HEATED_BED case PREHEAT_SUBMENU_BED: if (draw) { - Draw_Menu_Item(row, ICON_SetBedTemp, F("Bed")); - Draw_Float(ui.material_preset[index].bed_temp, row, false, 1); + drawMenuItem(row, ICON_SetBedTemp, F("Bed")); + drawFloat(ui.material_preset[index].bed_temp, row, false, 1); } else - Modify_Value(ui.material_preset[index].bed_temp, MIN_BED_TEMP, MAX_BED_TEMP, 1); + modifyValue(ui.material_preset[index].bed_temp, MIN_BED_TEMP, MAX_BED_TEMP, 1); break; #endif #if HAS_FAN case PREHEAT_SUBMENU_FAN: if (draw) { - Draw_Menu_Item(row, ICON_FanSpeed, F("Fan")); - Draw_Float(ui.material_preset[index].fan_speed, row, false, 1); + drawMenuItem(row, ICON_FanSpeed, F("Fan")); + drawFloat(ui.material_preset[index].fan_speed, row, false, 1); } else - Modify_Value(ui.material_preset[index].fan_speed, MIN_FAN_SPEED, MAX_FAN_SPEED, 1); + modifyValue(ui.material_preset[index].fan_speed, MIN_FAN_SPEED, MAX_FAN_SPEED, 1); break; #endif } @@ -1100,54 +1096,54 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case PREPARE_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Main_Menu(1); + drawMainMenu(1); break; case PREPARE_MOVE: if (draw) - Draw_Menu_Item(row, ICON_Axis, F("Move"), nullptr, true); + drawMenuItem(row, ICON_Axis, F("Move"), nullptr, true); else - Draw_Menu(Move); + drawMenu(Move); break; case PREPARE_DISABLE: if (draw) - Draw_Menu_Item(row, ICON_CloseMotor, F("Disable Stepper")); + drawMenuItem(row, ICON_CloseMotor, F("Disable Stepper")); else queue.inject(F("M84")); break; case PREPARE_HOME: if (draw) - Draw_Menu_Item(row, ICON_SetHome, F("Homing"), nullptr, true); + drawMenuItem(row, ICON_SetHome, F("Homing"), nullptr, true); else - Draw_Menu(HomeMenu); + drawMenu(HomeMenu); break; case PREPARE_MANUALLEVEL: if (draw) - Draw_Menu_Item(row, ICON_PrintSize, F("Manual Leveling"), nullptr, true); + drawMenuItem(row, ICON_PrintSize, F("Manual Leveling"), nullptr, true); else { if (axes_should_home()) { - Popup_Handler(Home); + popupHandler(Home); gcode.home_all_axes(true); } #if HAS_LEVELING level_state = planner.leveling_active; set_bed_leveling_enabled(false); #endif - Draw_Menu(ManualLevel); + drawMenu(ManualLevel); } break; #if HAS_ZOFFSET_ITEM case PREPARE_ZOFFSET: if (draw) - Draw_Menu_Item(row, ICON_Zoffset, F("Z-Offset"), nullptr, true); + drawMenuItem(row, ICON_Zoffset, F("Z-Offset"), nullptr, true); else { #if HAS_LEVELING level_state = planner.leveling_active; set_bed_leveling_enabled(false); #endif - Draw_Menu(ZOffset); + drawMenu(ZOffset); } break; #endif @@ -1155,16 +1151,16 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #if HAS_PREHEAT case PREPARE_PREHEAT: if (draw) - Draw_Menu_Item(row, ICON_Temperature, F("Preheat"), nullptr, true); + drawMenuItem(row, ICON_Temperature, F("Preheat"), nullptr, true); else - Draw_Menu(Preheat); + drawMenu(Preheat); break; #endif #if HAS_HOTEND || HAS_HEATED_BED case PREPARE_COOLDOWN: if (draw) - Draw_Menu_Item(row, ICON_Cool, F("Cooldown")); + drawMenuItem(row, ICON_Cool, F("Cooldown")); else thermalManager.cooldown(); break; @@ -1176,16 +1172,16 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #define CUSTOM_MENU_CONFIG_TITLE "Custom Commands" #endif if (draw) - Draw_Menu_Item(row, ICON_Version, F(CUSTOM_MENU_CONFIG_TITLE)); + drawMenuItem(row, ICON_Version, F(CUSTOM_MENU_CONFIG_TITLE)); else - Draw_Menu(MenuCustom); + drawMenu(MenuCustom); break; #endif #if ENABLED(ADVANCED_PAUSE_FEATURE) case PREPARE_CHANGEFIL: if (draw) { - Draw_Menu_Item(row, ICON_ResumeEEPROM, GET_TEXT_F(MSG_FILAMENTCHANGE) + drawMenuItem(row, ICON_ResumeEEPROM, GET_TEXT_F(MSG_FILAMENTCHANGE) #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) , nullptr, true #endif @@ -1193,16 +1189,16 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item } else { #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) - Draw_Menu(ChangeFilament); + drawMenu(ChangeFilament); #else if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) - Popup_Handler(ETemp); + popupHandler(ETemp); else { if (thermalManager.temp_hotend[0].is_below_target(2)) { - Popup_Handler(Heating); + popupHandler(Heating); thermalManager.wait_for_hotend(0); } - Popup_Handler(FilChange); + popupHandler(FilChange); sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target); gcode.process_subcommands_now(cmd); } @@ -1226,55 +1222,55 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case HOME_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Prepare, PREPARE_HOME); + drawMenu(Prepare, PREPARE_HOME); break; case HOME_ALL: if (draw) - Draw_Menu_Item(row, ICON_Homing, F("Home All")); + drawMenuItem(row, ICON_Homing, F("Home All")); else { - Popup_Handler(Home); + popupHandler(Home); gcode.home_all_axes(true); - Redraw_Menu(); + redrawMenu(); } break; case HOME_X: if (draw) - Draw_Menu_Item(row, ICON_MoveX, F("Home X")); + drawMenuItem(row, ICON_MoveX, F("Home X")); else { - Popup_Handler(Home); + popupHandler(Home); gcode.process_subcommands_now(F("G28 X")); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } break; case HOME_Y: if (draw) - Draw_Menu_Item(row, ICON_MoveY, F("Home Y")); + drawMenuItem(row, ICON_MoveY, F("Home Y")); else { - Popup_Handler(Home); + popupHandler(Home); gcode.process_subcommands_now(F("G28 Y")); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } break; case HOME_Z: if (draw) - Draw_Menu_Item(row, ICON_MoveZ, F("Home Z")); + drawMenuItem(row, ICON_MoveZ, F("Home Z")); else { - Popup_Handler(Home); + popupHandler(Home); gcode.process_subcommands_now(F("G28 Z")); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } break; case HOME_SET: if (draw) - Draw_Menu_Item(row, ICON_SetHome, F("Set Home Position")); + drawMenuItem(row, ICON_SetHome, F("Set Home Position")); else { gcode.process_subcommands_now(F("G92X0Y0Z0")); - AudioFeedback(); + audioFeedback(); } break; } @@ -1294,61 +1290,61 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case MOVE_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else { #if HAS_BED_PROBE probe_deployed = false; probe.set_deployed(probe_deployed); #endif - Draw_Menu(Prepare, PREPARE_MOVE); + drawMenu(Prepare, PREPARE_MOVE); } break; case MOVE_X: if (draw) { - Draw_Menu_Item(row, ICON_MoveX, F("Move X")); - Draw_Float(current_position.x, row, false); + drawMenuItem(row, ICON_MoveX, F("Move X")); + drawFloat(current_position.x, row, false); } else - Modify_Value(current_position.x, X_MIN_POS, X_MAX_POS, 10); + modifyValue(current_position.x, X_MIN_POS, X_MAX_POS, 10); break; case MOVE_Y: if (draw) { - Draw_Menu_Item(row, ICON_MoveY, F("Move Y")); - Draw_Float(current_position.y, row); + drawMenuItem(row, ICON_MoveY, F("Move Y")); + drawFloat(current_position.y, row); } else - Modify_Value(current_position.y, Y_MIN_POS, Y_MAX_POS, 10); + modifyValue(current_position.y, Y_MIN_POS, Y_MAX_POS, 10); break; case MOVE_Z: if (draw) { - Draw_Menu_Item(row, ICON_MoveZ, F("Move Z")); - Draw_Float(current_position.z, row); + drawMenuItem(row, ICON_MoveZ, F("Move Z")); + drawFloat(current_position.z, row); } else - Modify_Value(current_position.z, Z_MIN_POS, Z_MAX_POS, 10); + modifyValue(current_position.z, Z_MIN_POS, Z_MAX_POS, 10); break; #if HAS_HOTEND case MOVE_E: if (draw) { - Draw_Menu_Item(row, ICON_Extruder, F("Extruder")); + drawMenuItem(row, ICON_Extruder, F("Extruder")); current_position.e = 0; sync_plan_position(); - Draw_Float(current_position.e, row); + drawFloat(current_position.e, row); } else { if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) { - Popup_Handler(ETemp); + popupHandler(ETemp); } else { if (thermalManager.temp_hotend[0].is_below_target(2)) { - Popup_Handler(Heating); + popupHandler(Heating); thermalManager.wait_for_hotend(0); - Redraw_Menu(); + redrawMenu(); } current_position.e = 0; sync_plan_position(); - Modify_Value(current_position.e, -500, 500, 10); + modifyValue(current_position.e, -500, 500, 10); } } break; @@ -1357,25 +1353,25 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #if HAS_BED_PROBE case MOVE_P: if (draw) { - Draw_Menu_Item(row, ICON_StockConfiguration, F("Probe")); - Draw_Checkbox(row, probe_deployed); + drawMenuItem(row, ICON_StockConfiguration, F("Probe")); + drawCheckbox(row, probe_deployed); } else { probe_deployed = !probe_deployed; probe.set_deployed(probe_deployed); - Draw_Checkbox(row, probe_deployed); + drawCheckbox(row, probe_deployed); } break; #endif case MOVE_LIVE: if (draw) { - Draw_Menu_Item(row, ICON_Axis, F("Live Movement")); - Draw_Checkbox(row, livemove); + drawMenuItem(row, ICON_Axis, F("Live Movement")); + drawCheckbox(row, livemove); } else { livemove = !livemove; - Draw_Checkbox(row, livemove); + drawCheckbox(row, livemove); } break; } @@ -1405,24 +1401,24 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case MLEVEL_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else { TERN_(HAS_LEVELING, set_bed_leveling_enabled(level_state)); - Draw_Menu(Prepare, PREPARE_MANUALLEVEL); + drawMenu(Prepare, PREPARE_MANUALLEVEL); } break; #if HAS_BED_PROBE case MLEVEL_PROBE: if (draw) { - Draw_Menu_Item(row, ICON_Zoffset, F("Use Probe")); - Draw_Checkbox(row, use_probe); + drawMenuItem(row, ICON_Zoffset, F("Use Probe")); + drawCheckbox(row, use_probe); } else { use_probe ^= true; - Draw_Checkbox(row, use_probe); + drawCheckbox(row, use_probe); if (use_probe) { - Popup_Handler(Level); + popupHandler(Level); const struct { xy_pos_t p; ProbePtRaise r; } points[] = { { { probe_x_min, probe_y_min }, PROBE_PT_RAISE }, { { probe_x_min, probe_y_max }, PROBE_PT_RAISE }, @@ -1436,7 +1432,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item corner_avg += mz; } corner_avg /= 4; - Redraw_Menu(); + redrawMenu(); } } break; @@ -1444,116 +1440,116 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item case MLEVEL_BL: if (draw) - Draw_Menu_Item(row, ICON_AxisBL, F("Bottom Left")); + drawMenuItem(row, ICON_AxisBL, F("Bottom Left")); else { - Popup_Handler(MoveWait); + popupHandler(MoveWait); if (use_probe) { #if HAS_BED_PROBE sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(probe_x_min, 1, 3, str_1), dtostrf(probe_y_min, 1, 3, str_2)); gcode.process_subcommands_now(cmd); planner.synchronize(); - Popup_Handler(ManualProbing); + popupHandler(ManualProbing); #endif } else { sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf(corner_pos, 1, 3, str_1), dtostrf(corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3)); gcode.process_subcommands_now(cmd); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } } break; case MLEVEL_TL: if (draw) - Draw_Menu_Item(row, ICON_AxisTL, F("Top Left")); + drawMenuItem(row, ICON_AxisTL, F("Top Left")); else { - Popup_Handler(MoveWait); + popupHandler(MoveWait); if (use_probe) { #if HAS_BED_PROBE sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(probe_x_min, 1, 3, str_1), dtostrf(probe_y_max, 1, 3, str_2)); gcode.process_subcommands_now(cmd); planner.synchronize(); - Popup_Handler(ManualProbing); + popupHandler(ManualProbing); #endif } else { sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf(corner_pos, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) - corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3)); gcode.process_subcommands_now(cmd); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } } break; case MLEVEL_TR: if (draw) - Draw_Menu_Item(row, ICON_AxisTR, F("Top Right")); + drawMenuItem(row, ICON_AxisTR, F("Top Right")); else { - Popup_Handler(MoveWait); + popupHandler(MoveWait); if (use_probe) { #if HAS_BED_PROBE sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(probe_x_max, 1, 3, str_1), dtostrf(probe_y_max, 1, 3, str_2)); gcode.process_subcommands_now(cmd); planner.synchronize(); - Popup_Handler(ManualProbing); + popupHandler(ManualProbing); #endif } else { sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf((X_BED_SIZE + X_MIN_POS) - corner_pos, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) - corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3)); gcode.process_subcommands_now(cmd); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } } break; case MLEVEL_BR: if (draw) - Draw_Menu_Item(row, ICON_AxisBR, F("Bottom Right")); + drawMenuItem(row, ICON_AxisBR, F("Bottom Right")); else { - Popup_Handler(MoveWait); + popupHandler(MoveWait); if (use_probe) { #if HAS_BED_PROBE sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(probe_x_max, 1, 3, str_1), dtostrf(probe_y_min, 1, 3, str_2)); gcode.process_subcommands_now(cmd); planner.synchronize(); - Popup_Handler(ManualProbing); + popupHandler(ManualProbing); #endif } else { sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf((X_BED_SIZE + X_MIN_POS) - corner_pos, 1, 3, str_1), dtostrf(corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3)); gcode.process_subcommands_now(cmd); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } } break; case MLEVEL_C: if (draw) - Draw_Menu_Item(row, ICON_AxisC, F("Center")); + drawMenuItem(row, ICON_AxisC, F("Center")); else { - Popup_Handler(MoveWait); + popupHandler(MoveWait); if (use_probe) { #if HAS_BED_PROBE sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(X_MAX_POS / 2.0f - probe.offset.x, 1, 3, str_1), dtostrf(Y_MAX_POS / 2.0f - probe.offset.y, 1, 3, str_2)); gcode.process_subcommands_now(cmd); planner.synchronize(); - Popup_Handler(ManualProbing); + popupHandler(ManualProbing); #endif } else { sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf((X_BED_SIZE + X_MIN_POS) / 2.0f, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) / 2.0f, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3)); gcode.process_subcommands_now(cmd); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } } break; case MLEVEL_ZPOS: if (draw) { - Draw_Menu_Item(row, ICON_SetZOffset, F("Z Position")); - Draw_Float(mlev_z_pos, row, false, 100); + drawMenuItem(row, ICON_SetZOffset, F("Z Position")); + drawFloat(mlev_z_pos, row, false, 100); } else - Modify_Value(mlev_z_pos, 0, MAX_Z_OFFSET, 100); + modifyValue(mlev_z_pos, 0, MAX_Z_OFFSET, 100); break; } @@ -1574,20 +1570,20 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case ZOFFSET_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else { liveadjust = false; TERN_(HAS_LEVELING, set_bed_leveling_enabled(level_state)); - Draw_Menu(Prepare, PREPARE_ZOFFSET); + drawMenu(Prepare, PREPARE_ZOFFSET); } break; case ZOFFSET_HOME: if (draw) - Draw_Menu_Item(row, ICON_Homing, F("Home Z Axis")); + drawMenuItem(row, ICON_Homing, F("Home Z Axis")); else { - Popup_Handler(Home); + popupHandler(Home); gcode.process_subcommands_now(F("G28 Z")); - Popup_Handler(MoveWait); + popupHandler(MoveWait); #if ENABLED(Z_SAFE_HOMING) planner.synchronize(); sprintf_P(cmd, PSTR("G0 F4000 X%s Y%s"), dtostrf(Z_SAFE_HOMING_X_POINT, 1, 3, str_1), dtostrf(Z_SAFE_HOMING_Y_POINT, 1, 3, str_2)); @@ -1597,21 +1593,21 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #endif gcode.process_subcommands_now(F("G0 F300 Z0")); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } break; case ZOFFSET_MODE: if (draw) { - Draw_Menu_Item(row, ICON_Zoffset, F("Live Adjustment")); - Draw_Checkbox(row, liveadjust); + drawMenuItem(row, ICON_Zoffset, F("Live Adjustment")); + drawCheckbox(row, liveadjust); } else { if (!liveadjust) { if (axes_should_home()) { - Popup_Handler(Home); + popupHandler(Home); gcode.home_all_axes(true); } - Popup_Handler(MoveWait); + popupHandler(MoveWait); #if ENABLED(Z_SAFE_HOMING) planner.synchronize(); sprintf_P(cmd, PSTR("G0 F4000 X%s Y%s"), dtostrf(Z_SAFE_HOMING_X_POINT, 1, 3, str_1), dtostrf(Z_SAFE_HOMING_Y_POINT, 1, 3, str_2)); @@ -1621,23 +1617,23 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #endif gcode.process_subcommands_now(F("G0 F300 Z0")); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } liveadjust = !liveadjust; - Draw_Checkbox(row, liveadjust); + drawCheckbox(row, liveadjust); } break; case ZOFFSET_OFFSET: if (draw) { - Draw_Menu_Item(row, ICON_SetZOffset, F("Z Offset")); - Draw_Float(zoffsetvalue, row, false, 100); + drawMenuItem(row, ICON_SetZOffset, F("Z Offset")); + drawFloat(zoffsetvalue, row, false, 100); } else - Modify_Value(zoffsetvalue, MIN_Z_OFFSET, MAX_Z_OFFSET, 100); + modifyValue(zoffsetvalue, MIN_Z_OFFSET, MAX_Z_OFFSET, 100); break; case ZOFFSET_UP: if (draw) - Draw_Menu_Item(row, ICON_Axis, F("Microstep Up")); + drawMenuItem(row, ICON_Axis, F("Microstep Up")); else { if (zoffsetvalue < MAX_Z_OFFSET) { if (liveadjust) { @@ -1645,13 +1641,13 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item planner.synchronize(); } zoffsetvalue += 0.01; - Draw_Float(zoffsetvalue, row - 1, false, 100); + drawFloat(zoffsetvalue, row - 1, false, 100); } } break; case ZOFFSET_DOWN: if (draw) - Draw_Menu_Item(row, ICON_AxisD, F("Microstep Down")); + drawMenuItem(row, ICON_AxisD, F("Microstep Down")); else { if (zoffsetvalue > MIN_Z_OFFSET) { if (liveadjust) { @@ -1659,16 +1655,16 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item planner.synchronize(); } zoffsetvalue -= 0.01; - Draw_Float(zoffsetvalue, row - 2, false, 100); + drawFloat(zoffsetvalue, row - 2, false, 100); } } break; #if ENABLED(EEPROM_SETTINGS) case ZOFFSET_SAVE: if (draw) - Draw_Menu_Item(row, ICON_WriteEEPROM, F("Save")); + drawMenuItem(row, ICON_WriteEEPROM, F("Save")); else - AudioFeedback(settings.save()); + audioFeedback(settings.save()); break; #endif } @@ -1694,23 +1690,23 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case PREHEAT_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Prepare, PREPARE_PREHEAT); + drawMenu(Prepare, PREPARE_PREHEAT); break; case PREHEAT_MODE: if (draw) { - Draw_Menu_Item(row, ICON_Homing, F("Preheat Mode")); - Draw_Option(preheatmode, preheat_modes, row); + drawMenuItem(row, ICON_Homing, F("Preheat Mode")); + drawOption(preheatmode, preheat_modes, row); } else - Modify_Option(preheatmode, preheat_modes, 2); + modifyOption(preheatmode, preheat_modes, 2); break; #define _PREHEAT_CASE(N) \ case PREHEAT_##N: { \ - if (draw) Draw_Menu_Item(row, ICON_Temperature, F(PREHEAT_## N ##_LABEL)); \ + if (draw) drawMenuItem(row, ICON_Temperature, F(PREHEAT_## N ##_LABEL)); \ else do_preheat(N - 1); \ } break; @@ -1731,59 +1727,59 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case CHANGEFIL_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Prepare, PREPARE_CHANGEFIL); + drawMenu(Prepare, PREPARE_CHANGEFIL); break; case CHANGEFIL_LOAD: if (draw) - Draw_Menu_Item(row, ICON_WriteEEPROM, GET_TEXT_F(MSG_FILAMENTLOAD)); + drawMenuItem(row, ICON_WriteEEPROM, GET_TEXT_F(MSG_FILAMENTLOAD)); else { if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) - Popup_Handler(ETemp); + popupHandler(ETemp); else { if (thermalManager.temp_hotend[0].is_below_target(2)) { - Popup_Handler(Heating); + popupHandler(Heating); thermalManager.wait_for_hotend(0); } - Popup_Handler(FilLoad); + popupHandler(FilLoad); gcode.process_subcommands_now(F("M701")); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } } break; case CHANGEFIL_UNLOAD: if (draw) - Draw_Menu_Item(row, ICON_ReadEEPROM, GET_TEXT_F(MSG_FILAMENTUNLOAD)); + drawMenuItem(row, ICON_ReadEEPROM, GET_TEXT_F(MSG_FILAMENTUNLOAD)); else { if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) { - Popup_Handler(ETemp); + popupHandler(ETemp); } else { if (thermalManager.temp_hotend[0].is_below_target(2)) { - Popup_Handler(Heating); + popupHandler(Heating); thermalManager.wait_for_hotend(0); } - Popup_Handler(FilLoad, true); + popupHandler(FilLoad, true); gcode.process_subcommands_now(F("M702")); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } } break; case CHANGEFIL_CHANGE: if (draw) - Draw_Menu_Item(row, ICON_ResumeEEPROM, GET_TEXT_F(MSG_FILAMENTCHANGE)); + drawMenuItem(row, ICON_ResumeEEPROM, GET_TEXT_F(MSG_FILAMENTCHANGE)); else { if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) - Popup_Handler(ETemp); + popupHandler(ETemp); else { if (thermalManager.temp_hotend[0].is_below_target(2)) { - Popup_Handler(Heating); + popupHandler(Heating); thermalManager.wait_for_hotend(0); } - Popup_Handler(FilChange); + popupHandler(FilChange); sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target); gcode.process_subcommands_now(cmd); } @@ -1808,23 +1804,23 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case CUSTOM_MENU_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Prepare, PREPARE_CUSTOM_MENU); + drawMenu(Prepare, PREPARE_CUSTOM_MENU); break; #if CUSTOM_MENU_COUNT >= 1 case CUSTOM_MENU_1: if (draw) - Draw_Menu_Item(row, ICON_Info, F(CONFIG_MENU_ITEM_1_DESC)); + drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_1_DESC)); else { - Popup_Handler(Custom); + popupHandler(Custom); //queue.inject(F(CONFIG_MENU_ITEM_1_GCODE)); // Old code gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_1_GCODE)); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); #if ENABLED(CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK) - AudioFeedback(); + audioFeedback(); #endif #ifdef CUSTOM_MENU_CONFIG_SCRIPT_RETURN queue.inject(F(CUSTOM_MENU_CONFIG_SCRIPT_DONE)); @@ -1836,14 +1832,14 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #if CUSTOM_MENU_COUNT >= 2 case CUSTOM_MENU_2: if (draw) - Draw_Menu_Item(row, ICON_Info, F(CONFIG_MENU_ITEM_2_DESC)); + drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_2_DESC)); else { - Popup_Handler(Custom); + popupHandler(Custom); gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_2_GCODE)); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); #if ENABLED(CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK) - AudioFeedback(); + audioFeedback(); #endif #ifdef CUSTOM_MENU_CONFIG_SCRIPT_RETURN queue.inject(F(CUSTOM_MENU_CONFIG_SCRIPT_DONE)); @@ -1855,14 +1851,14 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #if CUSTOM_MENU_COUNT >= 3 case CUSTOM_MENU_3: if (draw) - Draw_Menu_Item(row, ICON_Info, F(CONFIG_MENU_ITEM_3_DESC)); + drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_3_DESC)); else { - Popup_Handler(Custom); + popupHandler(Custom); gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_3_GCODE)); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); #if ENABLED(CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK) - AudioFeedback(); + audioFeedback(); #endif #ifdef CUSTOM_MENU_CONFIG_SCRIPT_RETURN queue.inject(F(CUSTOM_MENU_CONFIG_SCRIPT_DONE)); @@ -1874,14 +1870,14 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #if CUSTOM_MENU_COUNT >= 4 case CUSTOM_MENU_4: if (draw) - Draw_Menu_Item(row, ICON_Info, F(CONFIG_MENU_ITEM_4_DESC)); + drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_4_DESC)); else { - Popup_Handler(Custom); + popupHandler(Custom); gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_4_GCODE)); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); #if ENABLED(CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK) - AudioFeedback(); + audioFeedback(); #endif #ifdef CUSTOM_MENU_CONFIG_SCRIPT_RETURN queue.inject(F(CUSTOM_MENU_CONFIG_SCRIPT_DONE)); @@ -1893,14 +1889,14 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #if CUSTOM_MENU_COUNT >= 5 case CUSTOM_MENU_5: if (draw) - Draw_Menu_Item(row, ICON_Info, F(CONFIG_MENU_ITEM_5_DESC)); + drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_5_DESC)); else { - Popup_Handler(Custom); + popupHandler(Custom); gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_5_GCODE)); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); #if ENABLED(CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK) - AudioFeedback(); + audioFeedback(); #endif #ifdef CUSTOM_MENU_CONFIG_SCRIPT_RETURN queue.inject(F(CUSTOM_MENU_CONFIG_SCRIPT_DONE)); @@ -1929,61 +1925,61 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case CONTROL_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Main_Menu(2); + drawMainMenu(2); break; case CONTROL_TEMP: if (draw) - Draw_Menu_Item(row, ICON_Temperature, F("Temperature"), nullptr, true); + drawMenuItem(row, ICON_Temperature, F("Temperature"), nullptr, true); else - Draw_Menu(TempMenu); + drawMenu(TempMenu); break; case CONTROL_MOTION: if (draw) - Draw_Menu_Item(row, ICON_Motion, F("Motion"), nullptr, true); + drawMenuItem(row, ICON_Motion, F("Motion"), nullptr, true); else - Draw_Menu(Motion); + drawMenu(Motion); break; case CONTROL_VISUAL: if (draw) - Draw_Menu_Item(row, ICON_PrintSize, F("Visual"), nullptr, true); + drawMenuItem(row, ICON_PrintSize, F("Visual"), nullptr, true); else - Draw_Menu(Visual); + drawMenu(Visual); break; case CONTROL_ADVANCED: if (draw) - Draw_Menu_Item(row, ICON_Version, F("Advanced"), nullptr, true); + drawMenuItem(row, ICON_Version, F("Advanced"), nullptr, true); else - Draw_Menu(Advanced); + drawMenu(Advanced); break; #if ENABLED(EEPROM_SETTINGS) case CONTROL_SAVE: if (draw) - Draw_Menu_Item(row, ICON_WriteEEPROM, F("Store Settings")); + drawMenuItem(row, ICON_WriteEEPROM, F("Store Settings")); else - AudioFeedback(settings.save()); + audioFeedback(settings.save()); break; case CONTROL_RESTORE: if (draw) - Draw_Menu_Item(row, ICON_ReadEEPROM, F("Restore Settings")); + drawMenuItem(row, ICON_ReadEEPROM, F("Restore Settings")); else - AudioFeedback(settings.load()); + audioFeedback(settings.load()); break; case CONTROL_RESET: if (draw) - Draw_Menu_Item(row, ICON_Temperature, F("Reset to Defaults")); + drawMenuItem(row, ICON_Temperature, F("Reset to Defaults")); else { settings.reset(); - AudioFeedback(); + audioFeedback(); } break; #endif case CONTROL_INFO: if (draw) - Draw_Menu_Item(row, ICON_Info, F("Info")); + drawMenuItem(row, ICON_Info, F("Info")); else - Draw_Menu(Info); + drawMenu(Info); break; } break; @@ -2005,53 +2001,53 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case TEMP_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Control, CONTROL_TEMP); + drawMenu(Control, CONTROL_TEMP); break; #if HAS_HOTEND case TEMP_HOTEND: if (draw) { - Draw_Menu_Item(row, ICON_SetEndTemp, F("Hotend")); - Draw_Float(thermalManager.temp_hotend[0].target, row, false, 1); + drawMenuItem(row, ICON_SetEndTemp, F("Hotend")); + drawFloat(thermalManager.temp_hotend[0].target, row, false, 1); } else - Modify_Value(thermalManager.temp_hotend[0].target, MIN_E_TEMP, MAX_E_TEMP, 1); + modifyValue(thermalManager.temp_hotend[0].target, MIN_E_TEMP, MAX_E_TEMP, 1); break; #endif #if HAS_HEATED_BED case TEMP_BED: if (draw) { - Draw_Menu_Item(row, ICON_SetBedTemp, F("Bed")); - Draw_Float(thermalManager.temp_bed.target, row, false, 1); + drawMenuItem(row, ICON_SetBedTemp, F("Bed")); + drawFloat(thermalManager.temp_bed.target, row, false, 1); } else - Modify_Value(thermalManager.temp_bed.target, MIN_BED_TEMP, MAX_BED_TEMP, 1); + modifyValue(thermalManager.temp_bed.target, MIN_BED_TEMP, MAX_BED_TEMP, 1); break; #endif #if HAS_FAN case TEMP_FAN: if (draw) { - Draw_Menu_Item(row, ICON_FanSpeed, F("Fan")); - Draw_Float(thermalManager.fan_speed[0], row, false, 1); + drawMenuItem(row, ICON_FanSpeed, F("Fan")); + drawFloat(thermalManager.fan_speed[0], row, false, 1); } else - Modify_Value(thermalManager.fan_speed[0], MIN_FAN_SPEED, MAX_FAN_SPEED, 1); + modifyValue(thermalManager.fan_speed[0], MIN_FAN_SPEED, MAX_FAN_SPEED, 1); break; #endif #if HAS_HOTEND || HAS_HEATED_BED case TEMP_PID: if (draw) - Draw_Menu_Item(row, ICON_Step, F("PID"), nullptr, true); + drawMenuItem(row, ICON_Step, F("PID"), nullptr, true); else - Draw_Menu(PID); + drawMenu(PID); break; #endif #define _TEMP_PREHEAT_CASE(N) \ case TEMP_PREHEAT##N: { \ - if (draw) Draw_Menu_Item(row, ICON_Step, F(PREHEAT_## N ##_LABEL), nullptr, true); \ - else Draw_Menu(Preheat##N); \ + if (draw) drawMenuItem(row, ICON_Step, F(PREHEAT_## N ##_LABEL), nullptr, true); \ + else drawMenu(Preheat##N); \ } break; REPEAT_1(PREHEAT_COUNT, _TEMP_PREHEAT_CASE) @@ -2072,33 +2068,33 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case PID_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(TempMenu, TEMP_PID); + drawMenu(TempMenu, TEMP_PID); break; #if HAS_HOTEND case PID_HOTEND: if (draw) - Draw_Menu_Item(row, ICON_HotendTemp, F("Hotend"), nullptr, true); + drawMenuItem(row, ICON_HotendTemp, F("Hotend"), nullptr, true); else - Draw_Menu(HotendPID); + drawMenu(HotendPID); break; #endif #if HAS_HEATED_BED case PID_BED: if (draw) - Draw_Menu_Item(row, ICON_BedTemp, F("Bed"), nullptr, true); + drawMenuItem(row, ICON_BedTemp, F("Bed"), nullptr, true); else - Draw_Menu(BedPID); + drawMenu(BedPID); break; #endif case PID_CYCLES: if (draw) { - Draw_Menu_Item(row, ICON_FanSpeed, F("Cycles")); - Draw_Float(PID_cycles, row, false, 1); + drawMenuItem(row, ICON_FanSpeed, F("Cycles")); + drawFloat(PID_cycles, row, false, 1); } else - Modify_Value(PID_cycles, 3, 50, 1); + modifyValue(PID_cycles, 3, 50, 1); break; } break; @@ -2120,52 +2116,52 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case HOTENDPID_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(PID, PID_HOTEND); + drawMenu(PID, PID_HOTEND); break; case HOTENDPID_TUNE: if (draw) - Draw_Menu_Item(row, ICON_HotendTemp, F("Autotune")); + drawMenuItem(row, ICON_HotendTemp, F("Autotune")); else { - Popup_Handler(PIDWait); + popupHandler(PIDWait); sprintf_P(cmd, PSTR("M303 E0 C%i S%i U1"), PID_cycles, PID_e_temp); gcode.process_subcommands_now(cmd); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } break; case HOTENDPID_TEMP: if (draw) { - Draw_Menu_Item(row, ICON_Temperature, F("Temperature")); - Draw_Float(PID_e_temp, row, false, 1); + drawMenuItem(row, ICON_Temperature, F("Temperature")); + drawFloat(PID_e_temp, row, false, 1); } else - Modify_Value(PID_e_temp, MIN_E_TEMP, MAX_E_TEMP, 1); + modifyValue(PID_e_temp, MIN_E_TEMP, MAX_E_TEMP, 1); break; case HOTENDPID_KP: if (draw) { - Draw_Menu_Item(row, ICON_Version, F("Kp Value")); - Draw_Float(thermalManager.temp_hotend[0].pid.p(), row, false, 100); + drawMenuItem(row, ICON_Version, F("Kp Value")); + drawFloat(thermalManager.temp_hotend[0].pid.p(), row, false, 100); } else - Modify_Value(thermalManager.temp_hotend[0].pid.Kp, 0, 5000, 100, thermalManager.updatePID); + modifyValue(thermalManager.temp_hotend[0].pid.Kp, 0, 5000, 100, thermalManager.updatePID); break; case HOTENDPID_KI: if (draw) { - Draw_Menu_Item(row, ICON_Version, F("Ki Value")); - Draw_Float(thermalManager.temp_hotend[0].pid.i(), row, false, 100); + drawMenuItem(row, ICON_Version, F("Ki Value")); + drawFloat(thermalManager.temp_hotend[0].pid.i(), row, false, 100); } else - Modify_Value(thermalManager.temp_hotend[0].pid.Ki, 0, 5000, 100, thermalManager.updatePID); + modifyValue(thermalManager.temp_hotend[0].pid.Ki, 0, 5000, 100, thermalManager.updatePID); break; case HOTENDPID_KD: if (draw) { - Draw_Menu_Item(row, ICON_Version, F("Kd Value")); - Draw_Float(thermalManager.temp_hotend[0].pid.d(), row, false, 100); + drawMenuItem(row, ICON_Version, F("Kd Value")); + drawFloat(thermalManager.temp_hotend[0].pid.d(), row, false, 100); } else - Modify_Value(thermalManager.temp_hotend[0].pid.Kd, 0, 5000, 100, thermalManager.updatePID); + modifyValue(thermalManager.temp_hotend[0].pid.Kd, 0, 5000, 100, thermalManager.updatePID); break; } break; @@ -2187,53 +2183,53 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case BEDPID_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(PID, PID_BED); + drawMenu(PID, PID_BED); break; case BEDPID_TUNE: if (draw) - Draw_Menu_Item(row, ICON_HotendTemp, F("Autotune")); + drawMenuItem(row, ICON_HotendTemp, F("Autotune")); else { - Popup_Handler(PIDWait); + popupHandler(PIDWait); sprintf_P(cmd, PSTR("M303 E-1 C%i S%i U1"), PID_cycles, PID_bed_temp); gcode.process_subcommands_now(cmd); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } break; case BEDPID_TEMP: if (draw) { - Draw_Menu_Item(row, ICON_Temperature, F("Temperature")); - Draw_Float(PID_bed_temp, row, false, 1); + drawMenuItem(row, ICON_Temperature, F("Temperature")); + drawFloat(PID_bed_temp, row, false, 1); } else - Modify_Value(PID_bed_temp, MIN_BED_TEMP, MAX_BED_TEMP, 1); + modifyValue(PID_bed_temp, MIN_BED_TEMP, MAX_BED_TEMP, 1); break; case BEDPID_KP: if (draw) { - Draw_Menu_Item(row, ICON_Version, F("Kp Value")); - Draw_Float(thermalManager.temp_bed.pid.p(), row, false, 100); + drawMenuItem(row, ICON_Version, F("Kp Value")); + drawFloat(thermalManager.temp_bed.pid.p(), row, false, 100); } else { - Modify_Value(thermalManager.temp_bed.pid.Kp, 0, 5000, 100, thermalManager.updatePID); + modifyValue(thermalManager.temp_bed.pid.Kp, 0, 5000, 100, thermalManager.updatePID); } break; case BEDPID_KI: if (draw) { - Draw_Menu_Item(row, ICON_Version, F("Ki Value")); - Draw_Float(thermalManager.temp_bed.pid.i(), row, false, 100); + drawMenuItem(row, ICON_Version, F("Ki Value")); + drawFloat(thermalManager.temp_bed.pid.i(), row, false, 100); } else - Modify_Value(thermalManager.temp_bed.pid.Ki, 0, 5000, 100, thermalManager.updatePID); + modifyValue(thermalManager.temp_bed.pid.Ki, 0, 5000, 100, thermalManager.updatePID); break; case BEDPID_KD: if (draw) { - Draw_Menu_Item(row, ICON_Version, F("Kd Value")); - Draw_Float(thermalManager.temp_bed.pid.d(), row, false, 100); + drawMenuItem(row, ICON_Version, F("Kd Value")); + drawFloat(thermalManager.temp_bed.pid.d(), row, false, 100); } else - Modify_Value(thermalManager.temp_bed.pid.Kd, 0, 5000, 100, thermalManager.updatePID); + modifyValue(thermalManager.temp_bed.pid.Kd, 0, 5000, 100, thermalManager.updatePID); break; } break; @@ -2258,50 +2254,50 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case MOTION_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Control, CONTROL_MOTION); + drawMenu(Control, CONTROL_MOTION); break; case MOTION_HOMEOFFSETS: if (draw) - Draw_Menu_Item(row, ICON_SetHome, F("Home Offsets"), nullptr, true); + drawMenuItem(row, ICON_SetHome, F("Home Offsets"), nullptr, true); else - Draw_Menu(HomeOffsets); + drawMenu(HomeOffsets); break; case MOTION_SPEED: if (draw) - Draw_Menu_Item(row, ICON_MaxSpeed, F("Max Speed"), nullptr, true); + drawMenuItem(row, ICON_MaxSpeed, F("Max Speed"), nullptr, true); else - Draw_Menu(MaxSpeed); + drawMenu(MaxSpeed); break; case MOTION_ACCEL: if (draw) - Draw_Menu_Item(row, ICON_MaxAccelerated, F("Max Acceleration"), nullptr, true); + drawMenuItem(row, ICON_MaxAccelerated, F("Max Acceleration"), nullptr, true); else - Draw_Menu(MaxAcceleration); + drawMenu(MaxAcceleration); break; #if HAS_CLASSIC_JERK case MOTION_JERK: if (draw) - Draw_Menu_Item(row, ICON_MaxJerk, F("Max Jerk"), nullptr, true); + drawMenuItem(row, ICON_MaxJerk, F("Max Jerk"), nullptr, true); else - Draw_Menu(MaxJerk); + drawMenu(MaxJerk); break; #endif case MOTION_STEPS: if (draw) - Draw_Menu_Item(row, ICON_Step, F("Steps/mm"), nullptr, true); + drawMenuItem(row, ICON_Step, F("Steps/mm"), nullptr, true); else - Draw_Menu(Steps); + drawMenu(Steps); break; #if HAS_HOTEND case MOTION_FLOW: if (draw) { - Draw_Menu_Item(row, ICON_Speed, F("Flow Rate")); - Draw_Float(planner.flow_percentage[0], row, false, 1); + drawMenuItem(row, ICON_Speed, F("Flow Rate")); + drawFloat(planner.flow_percentage[0], row, false, 1); } else - Modify_Value(planner.flow_percentage[0], MIN_FLOW_RATE, MAX_FLOW_RATE, 1, []{ planner.refresh_e_factor(0); }); + modifyValue(planner.flow_percentage[0], MIN_FLOW_RATE, MAX_FLOW_RATE, 1, []{ planner.refresh_e_factor(0); }); break; #endif } @@ -2317,25 +2313,25 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case HOMEOFFSETS_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Motion, MOTION_HOMEOFFSETS); + drawMenu(Motion, MOTION_HOMEOFFSETS); break; case HOMEOFFSETS_XOFFSET: if (draw) { - Draw_Menu_Item(row, ICON_StepX, F("X Offset")); - Draw_Float(home_offset.x, row, false, 100); + drawMenuItem(row, ICON_StepX, F("X Offset")); + drawFloat(home_offset.x, row, false, 100); } else - Modify_Value(home_offset.x, -MAX_XY_OFFSET, MAX_XY_OFFSET, 100); + modifyValue(home_offset.x, -MAX_XY_OFFSET, MAX_XY_OFFSET, 100); break; case HOMEOFFSETS_YOFFSET: if (draw) { - Draw_Menu_Item(row, ICON_StepY, F("Y Offset")); - Draw_Float(home_offset.y, row, false, 100); + drawMenuItem(row, ICON_StepY, F("Y Offset")); + drawFloat(home_offset.y, row, false, 100); } else - Modify_Value(home_offset.y, -MAX_XY_OFFSET, MAX_XY_OFFSET, 100); + modifyValue(home_offset.y, -MAX_XY_OFFSET, MAX_XY_OFFSET, 100); break; } break; @@ -2351,51 +2347,51 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case SPEED_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Motion, MOTION_SPEED); + drawMenu(Motion, MOTION_SPEED); break; #if HAS_X_AXIS case SPEED_X: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeedX, F("X Axis")); - Draw_Float(planner.settings.max_feedrate_mm_s[X_AXIS], row, false, FEEDRATE_UNIT); + drawMenuItem(row, ICON_MaxSpeedX, F("X Axis")); + drawFloat(planner.settings.max_feedrate_mm_s[X_AXIS], row, false, FEEDRATE_UNIT); } else - Modify_Value(planner.settings.max_feedrate_mm_s[X_AXIS], min_feedrate_edit_values.x, max_feedrate_edit_values.x, FEEDRATE_UNIT); + modifyValue(planner.settings.max_feedrate_mm_s[X_AXIS], min_feedrate_edit_values.x, max_feedrate_edit_values.x, FEEDRATE_UNIT); break; #endif #if HAS_Y_AXIS case SPEED_Y: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeedY, F("Y Axis")); - Draw_Float(planner.settings.max_feedrate_mm_s[Y_AXIS], row, false, FEEDRATE_UNIT); + drawMenuItem(row, ICON_MaxSpeedY, F("Y Axis")); + drawFloat(planner.settings.max_feedrate_mm_s[Y_AXIS], row, false, FEEDRATE_UNIT); } else - Modify_Value(planner.settings.max_feedrate_mm_s[Y_AXIS], min_feedrate_edit_values.y, max_feedrate_edit_values.y, FEEDRATE_UNIT); + modifyValue(planner.settings.max_feedrate_mm_s[Y_AXIS], min_feedrate_edit_values.y, max_feedrate_edit_values.y, FEEDRATE_UNIT); break; #endif #if HAS_Z_AXIS case SPEED_Z: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeedZ, F("Z Axis")); - Draw_Float(planner.settings.max_feedrate_mm_s[Z_AXIS], row, false, FEEDRATE_UNIT); + drawMenuItem(row, ICON_MaxSpeedZ, F("Z Axis")); + drawFloat(planner.settings.max_feedrate_mm_s[Z_AXIS], row, false, FEEDRATE_UNIT); } else - Modify_Value(planner.settings.max_feedrate_mm_s[Z_AXIS], min_feedrate_edit_values.z, max_feedrate_edit_values.z, FEEDRATE_UNIT); + modifyValue(planner.settings.max_feedrate_mm_s[Z_AXIS], min_feedrate_edit_values.z, max_feedrate_edit_values.z, FEEDRATE_UNIT); break; #endif #if HAS_HOTEND case SPEED_E: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeedE, F("Extruder")); - Draw_Float(planner.settings.max_feedrate_mm_s[E_AXIS], row, false, FEEDRATE_UNIT); + drawMenuItem(row, ICON_MaxSpeedE, F("Extruder")); + drawFloat(planner.settings.max_feedrate_mm_s[E_AXIS], row, false, FEEDRATE_UNIT); } else - Modify_Value(planner.settings.max_feedrate_mm_s[E_AXIS], min_feedrate_edit_values.e, max_feedrate_edit_values.e, FEEDRATE_UNIT); + modifyValue(planner.settings.max_feedrate_mm_s[E_AXIS], min_feedrate_edit_values.e, max_feedrate_edit_values.e, FEEDRATE_UNIT); break; #endif } @@ -2413,42 +2409,42 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case ACCEL_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Motion, MOTION_ACCEL); + drawMenu(Motion, MOTION_ACCEL); break; case ACCEL_X: if (draw) { - Draw_Menu_Item(row, ICON_MaxAccX, F("X Axis")); - Draw_Float(planner.settings.max_acceleration_mm_per_s2[X_AXIS], row, false, ACCELERATION_UNIT); + drawMenuItem(row, ICON_MaxAccX, F("X Axis")); + drawFloat(planner.settings.max_acceleration_mm_per_s2[X_AXIS], row, false, ACCELERATION_UNIT); } else - Modify_Value(planner.settings.max_acceleration_mm_per_s2[X_AXIS], min_acceleration_edit_values.x, max_acceleration_edit_values.x, ACCELERATION_UNIT); + modifyValue(planner.settings.max_acceleration_mm_per_s2[X_AXIS], min_acceleration_edit_values.x, max_acceleration_edit_values.x, ACCELERATION_UNIT); break; case ACCEL_Y: if (draw) { - Draw_Menu_Item(row, ICON_MaxAccY, F("Y Axis")); - Draw_Float(planner.settings.max_acceleration_mm_per_s2[Y_AXIS], row, false, ACCELERATION_UNIT); + drawMenuItem(row, ICON_MaxAccY, F("Y Axis")); + drawFloat(planner.settings.max_acceleration_mm_per_s2[Y_AXIS], row, false, ACCELERATION_UNIT); } else - Modify_Value(planner.settings.max_acceleration_mm_per_s2[Y_AXIS], min_acceleration_edit_values.y, max_acceleration_edit_values.y, ACCELERATION_UNIT); + modifyValue(planner.settings.max_acceleration_mm_per_s2[Y_AXIS], min_acceleration_edit_values.y, max_acceleration_edit_values.y, ACCELERATION_UNIT); break; case ACCEL_Z: if (draw) { - Draw_Menu_Item(row, ICON_MaxAccZ, F("Z Axis")); - Draw_Float(planner.settings.max_acceleration_mm_per_s2[Z_AXIS], row, false, ACCELERATION_UNIT); + drawMenuItem(row, ICON_MaxAccZ, F("Z Axis")); + drawFloat(planner.settings.max_acceleration_mm_per_s2[Z_AXIS], row, false, ACCELERATION_UNIT); } else - Modify_Value(planner.settings.max_acceleration_mm_per_s2[Z_AXIS], min_acceleration_edit_values.z, max_acceleration_edit_values.z, ACCELERATION_UNIT); + modifyValue(planner.settings.max_acceleration_mm_per_s2[Z_AXIS], min_acceleration_edit_values.z, max_acceleration_edit_values.z, ACCELERATION_UNIT); break; #if HAS_HOTEND case ACCEL_E: if (draw) { - Draw_Menu_Item(row, ICON_MaxAccE, F("Extruder")); - Draw_Float(planner.settings.max_acceleration_mm_per_s2[E_AXIS], row, false, ACCELERATION_UNIT); + drawMenuItem(row, ICON_MaxAccE, F("Extruder")); + drawFloat(planner.settings.max_acceleration_mm_per_s2[E_AXIS], row, false, ACCELERATION_UNIT); } else - Modify_Value(planner.settings.max_acceleration_mm_per_s2[E_AXIS], min_acceleration_edit_values.e, max_acceleration_edit_values.e, ACCELERATION_UNIT); + modifyValue(planner.settings.max_acceleration_mm_per_s2[E_AXIS], min_acceleration_edit_values.e, max_acceleration_edit_values.e, ACCELERATION_UNIT); break; #endif } @@ -2466,48 +2462,48 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case JERK_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Motion, MOTION_JERK); + drawMenu(Motion, MOTION_JERK); break; #if HAS_X_AXIS case JERK_X: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeedJerkX, F("X Axis")); - Draw_Float(planner.max_jerk.x, row, false, JERK_UNIT); + drawMenuItem(row, ICON_MaxSpeedJerkX, F("X Axis")); + drawFloat(planner.max_jerk.x, row, false, JERK_UNIT); } else - Modify_Value(planner.max_jerk.x, min_jerk_edit_values.x, max_jerk_edit_values.x, JERK_UNIT); + modifyValue(planner.max_jerk.x, min_jerk_edit_values.x, max_jerk_edit_values.x, JERK_UNIT); break; #endif #if HAS_Y_AXIS case JERK_Y: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeedJerkY, F("Y Axis")); - Draw_Float(planner.max_jerk.y, row, false, JERK_UNIT); + drawMenuItem(row, ICON_MaxSpeedJerkY, F("Y Axis")); + drawFloat(planner.max_jerk.y, row, false, JERK_UNIT); } else - Modify_Value(planner.max_jerk.y, min_jerk_edit_values.y, max_jerk_edit_values.y, JERK_UNIT); + modifyValue(planner.max_jerk.y, min_jerk_edit_values.y, max_jerk_edit_values.y, JERK_UNIT); break; #endif #if HAS_Z_AXIS case JERK_Z: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeedJerkZ, F("Z Axis")); - Draw_Float(planner.max_jerk.z, row, false, JERK_UNIT); + drawMenuItem(row, ICON_MaxSpeedJerkZ, F("Z Axis")); + drawFloat(planner.max_jerk.z, row, false, JERK_UNIT); } else - Modify_Value(planner.max_jerk.z, min_jerk_edit_values.z, max_jerk_edit_values.z, JERK_UNIT); + modifyValue(planner.max_jerk.z, min_jerk_edit_values.z, max_jerk_edit_values.z, JERK_UNIT); break; #endif #if HAS_HOTEND case JERK_E: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeedJerkE, F("Extruder")); - Draw_Float(planner.max_jerk.e, row, false, JERK_UNIT); + drawMenuItem(row, ICON_MaxSpeedJerkE, F("Extruder")); + drawFloat(planner.max_jerk.e, row, false, JERK_UNIT); } else - Modify_Value(planner.max_jerk.e, min_jerk_edit_values.e, max_jerk_edit_values.e, JERK_UNIT); + modifyValue(planner.max_jerk.e, min_jerk_edit_values.e, max_jerk_edit_values.e, JERK_UNIT); break; #endif } @@ -2525,48 +2521,48 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case STEPS_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Motion, MOTION_STEPS); + drawMenu(Motion, MOTION_STEPS); break; #if HAS_X_AXIS case STEPS_X: if (draw) { - Draw_Menu_Item(row, ICON_StepX, F("X Axis")); - Draw_Float(planner.settings.axis_steps_per_mm[X_AXIS], row, false, STEPS_UNIT); + drawMenuItem(row, ICON_StepX, F("X Axis")); + drawFloat(planner.settings.axis_steps_per_mm[X_AXIS], row, false, STEPS_UNIT); } else - Modify_Value(planner.settings.axis_steps_per_mm[X_AXIS], min_steps_edit_values.x, max_steps_edit_values.x, STEPS_UNIT); + modifyValue(planner.settings.axis_steps_per_mm[X_AXIS], min_steps_edit_values.x, max_steps_edit_values.x, STEPS_UNIT); break; #endif #if HAS_Y_AXIS case STEPS_Y: if (draw) { - Draw_Menu_Item(row, ICON_StepY, F("Y Axis")); - Draw_Float(planner.settings.axis_steps_per_mm[Y_AXIS], row, false, STEPS_UNIT); + drawMenuItem(row, ICON_StepY, F("Y Axis")); + drawFloat(planner.settings.axis_steps_per_mm[Y_AXIS], row, false, STEPS_UNIT); } else - Modify_Value(planner.settings.axis_steps_per_mm[Y_AXIS], min_steps_edit_values.y, max_steps_edit_values.y, STEPS_UNIT); + modifyValue(planner.settings.axis_steps_per_mm[Y_AXIS], min_steps_edit_values.y, max_steps_edit_values.y, STEPS_UNIT); break; #endif #if HAS_Z_AXIS case STEPS_Z: if (draw) { - Draw_Menu_Item(row, ICON_StepZ, F("Z Axis")); - Draw_Float(planner.settings.axis_steps_per_mm[Z_AXIS], row, false, STEPS_UNIT); + drawMenuItem(row, ICON_StepZ, F("Z Axis")); + drawFloat(planner.settings.axis_steps_per_mm[Z_AXIS], row, false, STEPS_UNIT); } else - Modify_Value(planner.settings.axis_steps_per_mm[Z_AXIS], min_steps_edit_values.z, max_steps_edit_values.z, STEPS_UNIT); + modifyValue(planner.settings.axis_steps_per_mm[Z_AXIS], min_steps_edit_values.z, max_steps_edit_values.z, STEPS_UNIT); break; #endif #if HAS_HOTEND case STEPS_E: if (draw) { - Draw_Menu_Item(row, ICON_StepE, F("Extruder")); - Draw_Float(planner.settings.axis_steps_per_mm[E_AXIS], row, false, STEPS_UNIT); + drawMenuItem(row, ICON_StepE, F("Extruder")); + drawFloat(planner.settings.axis_steps_per_mm[E_AXIS], row, false, STEPS_UNIT); } else - Modify_Value(planner.settings.axis_steps_per_mm[E_AXIS], min_steps_edit_values.e, max_steps_edit_values.e, STEPS_UNIT); + modifyValue(planner.settings.axis_steps_per_mm[E_AXIS], min_steps_edit_values.e, max_steps_edit_values.e, STEPS_UNIT); break; #endif } @@ -2584,39 +2580,39 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case VISUAL_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Control, CONTROL_VISUAL); + drawMenu(Control, CONTROL_VISUAL); break; case VISUAL_BACKLIGHT: if (draw) - Draw_Menu_Item(row, ICON_Brightness, F("Display Off")); + drawMenuItem(row, ICON_Brightness, F("Display Off")); else ui.set_brightness(0); break; case VISUAL_BRIGHTNESS: if (draw) { - Draw_Menu_Item(row, ICON_Brightness, F("LCD Brightness")); - Draw_Float(ui.brightness, row, false, 1); + drawMenuItem(row, ICON_Brightness, F("LCD Brightness")); + drawFloat(ui.brightness, row, false, 1); } else - Modify_Value(ui.brightness, LCD_BRIGHTNESS_MIN, LCD_BRIGHTNESS_MAX, 1, ui.refresh_brightness); + modifyValue(ui.brightness, LCD_BRIGHTNESS_MIN, LCD_BRIGHTNESS_MAX, 1, ui.refresh_brightness); break; case VISUAL_TIME_FORMAT: if (draw) { - Draw_Menu_Item(row, ICON_PrintTime, F("Progress as __h__m")); - Draw_Checkbox(row, eeprom_settings.time_format_textual); + drawMenuItem(row, ICON_PrintTime, F("Progress as __h__m")); + drawCheckbox(row, eeprom_settings.time_format_textual); } else { eeprom_settings.time_format_textual = !eeprom_settings.time_format_textual; - Draw_Checkbox(row, eeprom_settings.time_format_textual); + drawCheckbox(row, eeprom_settings.time_format_textual); } break; case VISUAL_COLOR_THEMES: if (draw) - Draw_Menu_Item(row, ICON_MaxSpeed, F("UI Color Settings"), nullptr, true); + drawMenuItem(row, ICON_MaxSpeed, F("UI Color Settings"), nullptr, true); else - Draw_Menu(ColorSettings); + drawMenu(ColorSettings); break; } break; @@ -2640,97 +2636,97 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case COLORSETTINGS_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Visual, VISUAL_COLOR_THEMES); + drawMenu(Visual, VISUAL_COLOR_THEMES); break; case COLORSETTINGS_CURSOR: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeed, F("Cursor")); - Draw_Option(eeprom_settings.cursor_color, color_names, row, false, true); + drawMenuItem(row, ICON_MaxSpeed, F("Cursor")); + drawOption(eeprom_settings.cursor_color, color_names, row, false, true); } else - Modify_Option(eeprom_settings.cursor_color, color_names, Custom_Colors); + modifyOption(eeprom_settings.cursor_color, color_names, Custom_Colors); break; case COLORSETTINGS_SPLIT_LINE: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeed, F("Menu Split Line")); - Draw_Option(eeprom_settings.menu_split_line, color_names, row, false, true); + drawMenuItem(row, ICON_MaxSpeed, F("Menu Split Line")); + drawOption(eeprom_settings.menu_split_line, color_names, row, false, true); } else - Modify_Option(eeprom_settings.menu_split_line, color_names, Custom_Colors); + modifyOption(eeprom_settings.menu_split_line, color_names, Custom_Colors); break; case COLORSETTINGS_MENU_TOP_TXT: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeed, F("Menu Header Text")); - Draw_Option(eeprom_settings.menu_top_txt, color_names, row, false, true); + drawMenuItem(row, ICON_MaxSpeed, F("Menu Header Text")); + drawOption(eeprom_settings.menu_top_txt, color_names, row, false, true); } else - Modify_Option(eeprom_settings.menu_top_txt, color_names, Custom_Colors); + modifyOption(eeprom_settings.menu_top_txt, color_names, Custom_Colors); break; case COLORSETTINGS_MENU_TOP_BG: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeed, F("Menu Header Bg")); - Draw_Option(eeprom_settings.menu_top_bg, color_names, row, false, true); + drawMenuItem(row, ICON_MaxSpeed, F("Menu Header Bg")); + drawOption(eeprom_settings.menu_top_bg, color_names, row, false, true); } else - Modify_Option(eeprom_settings.menu_top_bg, color_names, Custom_Colors); + modifyOption(eeprom_settings.menu_top_bg, color_names, Custom_Colors); break; case COLORSETTINGS_HIGHLIGHT_BORDER: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeed, F("Highlight Box")); - Draw_Option(eeprom_settings.highlight_box, color_names, row, false, true); + drawMenuItem(row, ICON_MaxSpeed, F("Highlight Box")); + drawOption(eeprom_settings.highlight_box, color_names, row, false, true); } else - Modify_Option(eeprom_settings.highlight_box, color_names, Custom_Colors); + modifyOption(eeprom_settings.highlight_box, color_names, Custom_Colors); break; case COLORSETTINGS_PROGRESS_PERCENT: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeed, F("Progress Percent")); - Draw_Option(eeprom_settings.progress_percent, color_names, row, false, true); + drawMenuItem(row, ICON_MaxSpeed, F("Progress Percent")); + drawOption(eeprom_settings.progress_percent, color_names, row, false, true); } else - Modify_Option(eeprom_settings.progress_percent, color_names, Custom_Colors); + modifyOption(eeprom_settings.progress_percent, color_names, Custom_Colors); break; case COLORSETTINGS_PROGRESS_TIME: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeed, F("Progress Time")); - Draw_Option(eeprom_settings.progress_time, color_names, row, false, true); + drawMenuItem(row, ICON_MaxSpeed, F("Progress Time")); + drawOption(eeprom_settings.progress_time, color_names, row, false, true); } else - Modify_Option(eeprom_settings.progress_time, color_names, Custom_Colors); + modifyOption(eeprom_settings.progress_time, color_names, Custom_Colors); break; case COLORSETTINGS_PROGRESS_STATUS_BAR: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeed, F("Status Bar Text")); - Draw_Option(eeprom_settings.status_bar_text, color_names, row, false, true); + drawMenuItem(row, ICON_MaxSpeed, F("Status Bar Text")); + drawOption(eeprom_settings.status_bar_text, color_names, row, false, true); } else - Modify_Option(eeprom_settings.status_bar_text, color_names, Custom_Colors); + modifyOption(eeprom_settings.status_bar_text, color_names, Custom_Colors); break; case COLORSETTINGS_PROGRESS_STATUS_AREA: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeed, F("Status Area Text")); - Draw_Option(eeprom_settings.status_area_text, color_names, row, false, true); + drawMenuItem(row, ICON_MaxSpeed, F("Status Area Text")); + drawOption(eeprom_settings.status_area_text, color_names, row, false, true); } else - Modify_Option(eeprom_settings.status_area_text, color_names, Custom_Colors); + modifyOption(eeprom_settings.status_area_text, color_names, Custom_Colors); break; case COLORSETTINGS_PROGRESS_COORDINATES: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeed, F("Coordinates Text")); - Draw_Option(eeprom_settings.coordinates_text, color_names, row, false, true); + drawMenuItem(row, ICON_MaxSpeed, F("Coordinates Text")); + drawOption(eeprom_settings.coordinates_text, color_names, row, false, true); } else - Modify_Option(eeprom_settings.coordinates_text, color_names, Custom_Colors); + modifyOption(eeprom_settings.coordinates_text, color_names, Custom_Colors); break; case COLORSETTINGS_PROGRESS_COORDINATES_LINE: if (draw) { - Draw_Menu_Item(row, ICON_MaxSpeed, F("Coordinates Line")); - Draw_Option(eeprom_settings.coordinates_split_line, color_names, row, false, true); + drawMenuItem(row, ICON_MaxSpeed, F("Coordinates Line")); + drawOption(eeprom_settings.coordinates_split_line, color_names, row, false, true); } else - Modify_Option(eeprom_settings.coordinates_split_line, color_names, Custom_Colors); + modifyOption(eeprom_settings.coordinates_split_line, color_names, Custom_Colors); break; } // switch (item) break; @@ -2754,20 +2750,20 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case ADVANCED_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Control, CONTROL_ADVANCED); + drawMenu(Control, CONTROL_ADVANCED); break; #if ENABLED(SOUND_MENU_ITEM) case ADVANCED_BEEPER: if (draw) { - Draw_Menu_Item(row, ICON_Version, F("LCD Beeper")); - Draw_Checkbox(row, ui.sound_on); + drawMenuItem(row, ICON_Version, F("LCD Beeper")); + drawCheckbox(row, ui.sound_on); } else { ui.sound_on = !ui.sound_on; - Draw_Checkbox(row, ui.sound_on); + drawCheckbox(row, ui.sound_on); } break; #endif @@ -2775,68 +2771,68 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #if HAS_BED_PROBE case ADVANCED_PROBE: if (draw) - Draw_Menu_Item(row, ICON_StepX, F("Probe"), nullptr, true); + drawMenuItem(row, ICON_StepX, F("Probe"), nullptr, true); else - Draw_Menu(ProbeMenu); + drawMenu(ProbeMenu); break; #endif #if HAS_TRINAMIC_CONFIG case ADVANCED_TMC: if (draw) - Draw_Menu_Item(row, ICON_Motion, F("TMC Drivers"), nullptr, true); + drawMenuItem(row, ICON_Motion, F("TMC Drivers"), nullptr, true); else - Draw_Menu(TMCMenu); + drawMenu(TMCMenu); break; #endif case ADVANCED_CORNER: if (draw) { - Draw_Menu_Item(row, ICON_MaxAccelerated, F("Bed Screw Inset")); - Draw_Float(corner_pos, row, false, 10); + drawMenuItem(row, ICON_MaxAccelerated, F("Bed Screw Inset")); + drawFloat(corner_pos, row, false, 10); } else - Modify_Value(corner_pos, 1, 100, 10); + modifyValue(corner_pos, 1, 100, 10); break; #if ENABLED(LIN_ADVANCE) case ADVANCED_LA: if (draw) { - Draw_Menu_Item(row, ICON_MaxAccelerated, F("Lin Advance K")); - Draw_Float(planner.extruder_advance_K[0], row, false, 100); + drawMenuItem(row, ICON_MaxAccelerated, F("Lin Advance K")); + drawFloat(planner.extruder_advance_K[0], row, false, 100); } else - Modify_Value(planner.extruder_advance_K[0], 0, 10, 100); + modifyValue(planner.extruder_advance_K[0], 0, 10, 100); break; #endif #if ENABLED(ADVANCED_PAUSE_FEATURE) case ADVANCED_LOAD: if (draw) { - Draw_Menu_Item(row, ICON_WriteEEPROM, F("Load Length")); - Draw_Float(fc_settings[0].load_length, row, false, 1); + drawMenuItem(row, ICON_WriteEEPROM, F("Load Length")); + drawFloat(fc_settings[0].load_length, row, false, 1); } else - Modify_Value(fc_settings[0].load_length, 0, EXTRUDE_MAXLENGTH, 1); + modifyValue(fc_settings[0].load_length, 0, EXTRUDE_MAXLENGTH, 1); break; case ADVANCED_UNLOAD: if (draw) { - Draw_Menu_Item(row, ICON_ReadEEPROM, F("Unload Length")); - Draw_Float(fc_settings[0].unload_length, row, false, 1); + drawMenuItem(row, ICON_ReadEEPROM, F("Unload Length")); + drawFloat(fc_settings[0].unload_length, row, false, 1); } else - Modify_Value(fc_settings[0].unload_length, 0, EXTRUDE_MAXLENGTH, 1); + modifyValue(fc_settings[0].unload_length, 0, EXTRUDE_MAXLENGTH, 1); break; #endif // ADVANCED_PAUSE_FEATURE #if ENABLED(PREVENT_COLD_EXTRUSION) case ADVANCED_COLD_EXTRUDE: if (draw) { - Draw_Menu_Item(row, ICON_Cool, F("Min Extrusion T")); - Draw_Float(thermalManager.extrude_min_temp, row, false, 1); + drawMenuItem(row, ICON_Cool, F("Min Extrusion T")); + drawFloat(thermalManager.extrude_min_temp, row, false, 1); } else { - Modify_Value(thermalManager.extrude_min_temp, 0, MAX_E_TEMP, 1); + modifyValue(thermalManager.extrude_min_temp, 0, MAX_E_TEMP, 1); thermalManager.allow_cold_extrude = (thermalManager.extrude_min_temp == 0); } break; @@ -2845,23 +2841,23 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #if ENABLED(FILAMENT_RUNOUT_SENSOR) case ADVANCED_FILSENSORENABLED: if (draw) { - Draw_Menu_Item(row, ICON_Extruder, F("Filament Sensor")); - Draw_Checkbox(row, runout.enabled); + drawMenuItem(row, ICON_Extruder, F("Filament Sensor")); + drawCheckbox(row, runout.enabled); } else { runout.enabled = !runout.enabled; - Draw_Checkbox(row, runout.enabled); + drawCheckbox(row, runout.enabled); } break; #if ENABLED(HAS_FILAMENT_RUNOUT_DISTANCE) case ADVANCED_FILSENSORDISTANCE: if (draw) { - Draw_Menu_Item(row, ICON_MaxAccE, F("Runout Distance")); - Draw_Float(runout.runout_distance(), row, false, 10); + drawMenuItem(row, ICON_MaxAccE, F("Runout Distance")); + drawFloat(runout.runout_distance(), row, false, 10); } else - Modify_Value(runout.runout_distance(), 0, 999, 10); + modifyValue(runout.runout_distance(), 0, 999, 10); break; #endif #endif // FILAMENT_RUNOUT_SENSOR @@ -2869,12 +2865,12 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #if ENABLED(POWER_LOSS_RECOVERY) case ADVANCED_POWER_LOSS: if (draw) { - Draw_Menu_Item(row, ICON_Motion, F("Power-loss recovery")); - Draw_Checkbox(row, recovery.enabled); + drawMenuItem(row, ICON_Motion, F("Power-loss recovery")); + drawCheckbox(row, recovery.enabled); } else { recovery.enable(!recovery.enabled); - Draw_Checkbox(row, recovery.enabled); + drawCheckbox(row, recovery.enabled); } break; #endif @@ -2896,30 +2892,30 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case PROBE_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Advanced, ADVANCED_PROBE); + drawMenu(Advanced, ADVANCED_PROBE); break; case PROBE_XOFFSET: if (draw) { - Draw_Menu_Item(row, ICON_StepX, F("Probe X Offset")); - Draw_Float(probe.offset.x, row, false, 10); + drawMenuItem(row, ICON_StepX, F("Probe X Offset")); + drawFloat(probe.offset.x, row, false, 10); } else - Modify_Value(probe.offset.x, -MAX_XY_OFFSET, MAX_XY_OFFSET, 10); + modifyValue(probe.offset.x, -MAX_XY_OFFSET, MAX_XY_OFFSET, 10); break; case PROBE_YOFFSET: if (draw) { - Draw_Menu_Item(row, ICON_StepY, F("Probe Y Offset")); - Draw_Float(probe.offset.y, row, false, 10); + drawMenuItem(row, ICON_StepY, F("Probe Y Offset")); + drawFloat(probe.offset.y, row, false, 10); } else - Modify_Value(probe.offset.y, -MAX_XY_OFFSET, MAX_XY_OFFSET, 10); + modifyValue(probe.offset.y, -MAX_XY_OFFSET, MAX_XY_OFFSET, 10); break; case PROBE_TEST: if (draw) - Draw_Menu_Item(row, ICON_StepY, F("M48 Probe Test")); + drawMenuItem(row, ICON_StepY, F("M48 Probe Test")); else { sprintf_P(cmd, PSTR("G28O\nM48 X%s Y%s P%i"), dtostrf((X_BED_SIZE + X_MIN_POS) / 2.0f, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) / 2.0f, 1, 3, str_2), testcount); gcode.process_subcommands_now(cmd); @@ -2927,11 +2923,11 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item break; case PROBE_TEST_COUNT: if (draw) { - Draw_Menu_Item(row, ICON_StepY, F("Probe Test Count")); - Draw_Float(testcount, row, false, 1); + drawMenuItem(row, ICON_StepY, F("Probe Test Count")); + drawFloat(testcount, row, false, 1); } else - Modify_Value(testcount, 4, 50, 1); + modifyValue(testcount, 4, 50, 1); break; } break; @@ -2951,9 +2947,9 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item case TMC_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Advanced, ADVANCED_TMC); + drawMenu(Advanced, ADVANCED_TMC); break; #if AXIS_IS_TMC(X) @@ -2962,12 +2958,12 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item static float stepper_current_x; if (draw) { - Draw_Menu_Item(row, ICON_StepX, F("Stepper X current")); + drawMenuItem(row, ICON_StepX, F("Stepper X current")); stepper_current_x = stepperX.getMilliamps(); - Draw_Float(stepper_current_x, row, false, 1); + drawFloat(stepper_current_x, row, false, 1); } else { - Modify_Value(stepper_current_x, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperX.rms_current(stepper_current_x); }); + modifyValue(stepper_current_x, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperX.rms_current(stepper_current_x); }); } break; #endif @@ -2978,12 +2974,12 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item static float stepper_current_y; if (draw) { - Draw_Menu_Item(row, ICON_StepY, F("Stepper Y current")); + drawMenuItem(row, ICON_StepY, F("Stepper Y current")); stepper_current_y = stepperY.getMilliamps(); - Draw_Float(stepper_current_y, row, false, 1); + drawFloat(stepper_current_y, row, false, 1); } else { - Modify_Value(stepper_current_y, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperY.rms_current(stepper_current_y); }); + modifyValue(stepper_current_y, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperY.rms_current(stepper_current_y); }); } break; #endif @@ -2994,12 +2990,12 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item static float stepper_current_z; if (draw) { - Draw_Menu_Item(row, ICON_StepZ, F("Stepper Z current")); + drawMenuItem(row, ICON_StepZ, F("Stepper Z current")); stepper_current_z = stepperZ.getMilliamps(); - Draw_Float(stepper_current_z, row, false, 1); + drawFloat(stepper_current_z, row, false, 1); } else { - Modify_Value(stepper_current_z, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperZ.rms_current(stepper_current_z); }); + modifyValue(stepper_current_z, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperZ.rms_current(stepper_current_z); }); } break; #endif @@ -3010,12 +3006,12 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item static float stepper_current_e; if (draw) { - Draw_Menu_Item(row, ICON_StepE, F("Stepper E current")); + drawMenuItem(row, ICON_StepE, F("Stepper E current")); stepper_current_e = stepperE0.getMilliamps(); - Draw_Float(stepper_current_e, row, false, 1); + drawFloat(stepper_current_e, row, false, 1); } else { - Modify_Value(stepper_current_e, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperE0.rms_current(stepper_current_e); }); + modifyValue(stepper_current_e, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperE0.rms_current(stepper_current_e); }); } break; #endif @@ -3037,7 +3033,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case INFO_BACK: if (draw) { - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); #if ENABLED(PRINTCOUNTER) char row1[50], row2[50], buf[32]; @@ -3045,24 +3041,24 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item sprintf_P(row1, PSTR("%i prints, %i finished"), ps.totalPrints, ps.finishedPrints); sprintf_P(row2, PSTR("%s m filament used"), dtostrf(ps.filamentUsed / 1000, 1, 2, str_1)); - Draw_Menu_Item(INFO_PRINTCOUNT, ICON_HotendTemp, row1, row2, false, true); + drawMenuItem(INFO_PRINTCOUNT, ICON_HotendTemp, row1, row2, false, true); duration_t(print_job_timer.getStats().printTime).toString(buf); sprintf_P(row1, PSTR("Printed: %s"), buf); duration_t(print_job_timer.getStats().longestPrint).toString(buf); sprintf_P(row2, PSTR("Longest: %s"), buf); - Draw_Menu_Item(INFO_PRINTTIME, ICON_PrintTime, row1, row2, false, true); + drawMenuItem(INFO_PRINTTIME, ICON_PrintTime, row1, row2, false, true); #endif - Draw_Menu_Item(INFO_SIZE, ICON_PrintSize, F(MACHINE_SIZE), nullptr, false, true); - Draw_Menu_Item(INFO_VERSION, ICON_Version, F(SHORT_BUILD_VERSION), nullptr, false, true); - Draw_Menu_Item(INFO_CONTACT, ICON_Contact, F(CORP_WEBSITE), nullptr, false, true); + drawMenuItem(INFO_SIZE, ICON_PrintSize, F(MACHINE_SIZE), nullptr, false, true); + drawMenuItem(INFO_VERSION, ICON_Version, F(SHORT_BUILD_VERSION), nullptr, false, true); + drawMenuItem(INFO_CONTACT, ICON_Contact, F(CORP_WEBSITE), nullptr, false, true); } else { if (menu == Info) - Draw_Menu(Control, CONTROL_INFO); + drawMenu(Control, CONTROL_INFO); else - Draw_Main_Menu(3); + drawMainMenu(3); } break; } @@ -3086,40 +3082,40 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case LEVELING_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Main_Menu(3); + drawMainMenu(3); break; case LEVELING_ACTIVE: if (draw) { - Draw_Menu_Item(row, ICON_StockConfiguration, F("Leveling Active")); - Draw_Checkbox(row, planner.leveling_active); + drawMenuItem(row, ICON_StockConfiguration, F("Leveling Active")); + drawCheckbox(row, planner.leveling_active); } else { if (!planner.leveling_active) { set_bed_leveling_enabled(!planner.leveling_active); if (!planner.leveling_active) { - Confirm_Handler(LevelError); + confirmHandler(LevelError); break; } } else set_bed_leveling_enabled(!planner.leveling_active); - Draw_Checkbox(row, planner.leveling_active); + drawCheckbox(row, planner.leveling_active); } break; #if ALL(HAS_BED_PROBE, AUTO_BED_LEVELING_UBL) case LEVELING_GET_TILT: if (draw) - Draw_Menu_Item(row, ICON_Tilt, F("Autotilt Current Mesh")); + drawMenuItem(row, ICON_Tilt, F("Autotilt Current Mesh")); else { if (bedlevel.storage_slot < 0) { - Popup_Handler(MeshSlot); + popupHandler(MeshSlot); break; } - Popup_Handler(Home); + popupHandler(Home); gcode.home_all_axes(true); - Popup_Handler(Level); + popupHandler(Level); if (mesh_conf.tilt_grid > 1) { sprintf_P(cmd, PSTR("G29 J%i"), mesh_conf.tilt_grid); gcode.process_subcommands_now(cmd); @@ -3127,78 +3123,78 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item else gcode.process_subcommands_now(F("G29 J")); planner.synchronize(); - Redraw_Menu(); + redrawMenu(); } break; #endif case LEVELING_GET_MESH: if (draw) - Draw_Menu_Item(row, ICON_Mesh, F("Create New Mesh")); + drawMenuItem(row, ICON_Mesh, F("Create New Mesh")); else { - Popup_Handler(Home); + popupHandler(Home); gcode.home_all_axes(true); #if ENABLED(AUTO_BED_LEVELING_UBL) #if ENABLED(PREHEAT_BEFORE_LEVELING) - Popup_Handler(Heating); + popupHandler(Heating); probe.preheat_for_probing(LEVELING_NOZZLE_TEMP, LEVELING_BED_TEMP); #endif #if HAS_BED_PROBE - Popup_Handler(Level); + popupHandler(Level); gcode.process_subcommands_now(F("G29 P0\nG29 P1")); gcode.process_subcommands_now(F("G29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nM420 S1")); planner.synchronize(); - Update_Status("Probed all reachable points"); - Popup_Handler(SaveLevel); + updateStatus("Probed all reachable points"); + popupHandler(SaveLevel); #else level_state = planner.leveling_active; set_bed_leveling_enabled(false); mesh_conf.goto_mesh_value = true; mesh_conf.mesh_x = mesh_conf.mesh_y = 0; - Popup_Handler(MoveWait); + popupHandler(MoveWait); mesh_conf.manual_mesh_move(); - Draw_Menu(UBLMesh); + drawMenu(UBLMesh); #endif #elif HAS_BED_PROBE - Popup_Handler(Level); + popupHandler(Level); gcode.process_subcommands_now(F("G29")); planner.synchronize(); - Popup_Handler(SaveLevel); + popupHandler(SaveLevel); #else level_state = planner.leveling_active; set_bed_leveling_enabled(false); gridpoint = 1; - Popup_Handler(MoveWait); + popupHandler(MoveWait); gcode.process_subcommands_now(F("G29")); planner.synchronize(); - Draw_Menu(ManualMesh); + drawMenu(ManualMesh); #endif } break; case LEVELING_MANUAL: if (draw) - Draw_Menu_Item(row, ICON_Mesh, F("Manual Tuning"), nullptr, true); + drawMenuItem(row, ICON_Mesh, F("Manual Tuning"), nullptr, true); else { #if ENABLED(AUTO_BED_LEVELING_BILINEAR) if (!leveling_is_valid()) { - Confirm_Handler(InvalidMesh); + confirmHandler(InvalidMesh); break; } #endif #if ENABLED(AUTO_BED_LEVELING_UBL) if (bedlevel.storage_slot < 0) { - Popup_Handler(MeshSlot); + popupHandler(MeshSlot); break; } #endif if (axes_should_home()) { - Popup_Handler(Home); + popupHandler(Home); gcode.home_all_axes(true); } level_state = planner.leveling_active; set_bed_leveling_enabled(false); mesh_conf.goto_mesh_value = false; #if ENABLED(PREHEAT_BEFORE_LEVELING) - Popup_Handler(Heating); + popupHandler(Heating); #if HAS_HOTEND if (thermalManager.degTargetHotend(0) < LEVELING_NOZZLE_TEMP) thermalManager.setTargetHotend(LEVELING_NOZZLE_TEMP, 0); @@ -3210,63 +3206,63 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item TERN_(HAS_HOTEND, thermalManager.wait_for_hotend(0)); TERN_(HAS_HEATED_BED, thermalManager.wait_for_bed_heating()); #endif - Popup_Handler(MoveWait); + popupHandler(MoveWait); mesh_conf.manual_mesh_move(); - Draw_Menu(LevelManual); + drawMenu(LevelManual); } break; case LEVELING_VIEW: if (draw) - Draw_Menu_Item(row, ICON_Mesh, GET_TEXT_F(MSG_MESH_VIEW), nullptr, true); + drawMenuItem(row, ICON_Mesh, GET_TEXT_F(MSG_MESH_VIEW), nullptr, true); else { #if ENABLED(AUTO_BED_LEVELING_UBL) if (bedlevel.storage_slot < 0) { - Popup_Handler(MeshSlot); + popupHandler(MeshSlot); break; } #endif - Draw_Menu(LevelView); + drawMenu(LevelView); } break; case LEVELING_SETTINGS: if (draw) - Draw_Menu_Item(row, ICON_Step, F("Leveling Settings"), nullptr, true); + drawMenuItem(row, ICON_Step, F("Leveling Settings"), nullptr, true); else - Draw_Menu(LevelSettings); + drawMenu(LevelSettings); break; #if ENABLED(AUTO_BED_LEVELING_UBL) case LEVELING_SLOT: if (draw) { - Draw_Menu_Item(row, ICON_PrintSize, F("Mesh Slot")); - Draw_Float(bedlevel.storage_slot, row, false, 1); + drawMenuItem(row, ICON_PrintSize, F("Mesh Slot")); + drawFloat(bedlevel.storage_slot, row, false, 1); } else - Modify_Value(bedlevel.storage_slot, 0, settings.calc_num_meshes() - 1, 1); + modifyValue(bedlevel.storage_slot, 0, settings.calc_num_meshes() - 1, 1); break; case LEVELING_LOAD: if (draw) - Draw_Menu_Item(row, ICON_ReadEEPROM, F("Load Mesh")); + drawMenuItem(row, ICON_ReadEEPROM, F("Load Mesh")); else { if (bedlevel.storage_slot < 0) { - Popup_Handler(MeshSlot); + popupHandler(MeshSlot); break; } gcode.process_subcommands_now(F("G29 L")); planner.synchronize(); - AudioFeedback(true); + audioFeedback(true); } break; case LEVELING_SAVE: if (draw) - Draw_Menu_Item(row, ICON_WriteEEPROM, F("Save Mesh")); + drawMenuItem(row, ICON_WriteEEPROM, F("Save Mesh")); else { if (bedlevel.storage_slot < 0) { - Popup_Handler(MeshSlot); + popupHandler(MeshSlot); break; } gcode.process_subcommands_now(F("G29 S")); planner.synchronize(); - AudioFeedback(true); + audioFeedback(true); } break; #endif @@ -3284,34 +3280,34 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case LEVELING_VIEW_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Leveling, LEVELING_VIEW); + drawMenu(Leveling, LEVELING_VIEW); break; case LEVELING_VIEW_MESH: if (draw) - Draw_Menu_Item(row, ICON_PrintSize, GET_TEXT_F(MSG_MESH_VIEW), nullptr, true); + drawMenuItem(row, ICON_PrintSize, GET_TEXT_F(MSG_MESH_VIEW), nullptr, true); else - Draw_Menu(MeshViewer); + drawMenu(MeshViewer); break; case LEVELING_VIEW_TEXT: if (draw) { - Draw_Menu_Item(row, ICON_Contact, F("Viewer Show Values")); - Draw_Checkbox(row, mesh_conf.viewer_print_value); + drawMenuItem(row, ICON_Contact, F("Viewer Show Values")); + drawCheckbox(row, mesh_conf.viewer_print_value); } else { mesh_conf.viewer_print_value = !mesh_conf.viewer_print_value; - Draw_Checkbox(row, mesh_conf.viewer_print_value); + drawCheckbox(row, mesh_conf.viewer_print_value); } break; case LEVELING_VIEW_ASYMMETRIC: if (draw) { - Draw_Menu_Item(row, ICON_Axis, F("Viewer Asymmetric")); - Draw_Checkbox(row, mesh_conf.viewer_asymmetric_range); + drawMenuItem(row, ICON_Axis, F("Viewer Asymmetric")); + drawCheckbox(row, mesh_conf.viewer_asymmetric_range); } else { mesh_conf.viewer_asymmetric_range = !mesh_conf.viewer_asymmetric_range; - Draw_Checkbox(row, mesh_conf.viewer_asymmetric_range); + drawCheckbox(row, mesh_conf.viewer_asymmetric_range); } break; } @@ -3330,17 +3326,17 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case LEVELING_SETTINGS_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Menu(Leveling, LEVELING_SETTINGS); + drawMenu(Leveling, LEVELING_SETTINGS); break; case LEVELING_SETTINGS_FADE: if (draw) { - Draw_Menu_Item(row, ICON_Fade, F("Fade Mesh within")); - Draw_Float(planner.z_fade_height, row, false, 1); + drawMenuItem(row, ICON_Fade, F("Fade Mesh within")); + drawFloat(planner.z_fade_height, row, false, 1); } else { - Modify_Value(planner.z_fade_height, 0, Z_MAX_POS, 1); + modifyValue(planner.z_fade_height, 0, Z_MAX_POS, 1); planner.z_fade_height = -1; set_z_fade_height(planner.z_fade_height); } @@ -3349,31 +3345,31 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #if ENABLED(AUTO_BED_LEVELING_UBL) case LEVELING_SETTINGS_TILT: if (draw) { - Draw_Menu_Item(row, ICON_Tilt, F("Tilting Grid Size")); - Draw_Float(mesh_conf.tilt_grid, row, false, 1); + drawMenuItem(row, ICON_Tilt, F("Tilting Grid Size")); + drawFloat(mesh_conf.tilt_grid, row, false, 1); } else - Modify_Value(mesh_conf.tilt_grid, 1, 8, 1); + modifyValue(mesh_conf.tilt_grid, 1, 8, 1); break; case LEVELING_SETTINGS_PLANE: if (draw) - Draw_Menu_Item(row, ICON_ResumeEEPROM, F("Convert Mesh to Plane")); + drawMenuItem(row, ICON_ResumeEEPROM, F("Convert Mesh to Plane")); else { if (mesh_conf.create_plane_from_mesh()) break; gcode.process_subcommands_now(F("M420 S1")); planner.synchronize(); - AudioFeedback(true); + audioFeedback(true); } break; case LEVELING_SETTINGS_ZERO: if (draw) - Draw_Menu_Item(row, ICON_Mesh, F("Zero Current Mesh")); + drawMenuItem(row, ICON_Mesh, F("Zero Current Mesh")); else ZERO(bedlevel.z_values); break; case LEVELING_SETTINGS_UNDEF: if (draw) - Draw_Menu_Item(row, ICON_Mesh, F("Clear Current Mesh")); + drawMenuItem(row, ICON_Mesh, F("Clear Current Mesh")); else bedlevel.invalidate(); break; @@ -3387,13 +3383,13 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item if (item == MESHVIEW_BACK) { if (draw) { - Draw_Menu_Item(0, ICON_Back, F("Back")); - mesh_conf.Draw_Bed_Mesh(); - mesh_conf.Set_Mesh_Viewer_Status(); + drawMenuItem(0, ICON_Back, F("Back")); + mesh_conf.drawBedMesh(); + mesh_conf.setMeshViewerStatus(); } else if (!mesh_conf.drawing_mesh) { - Draw_Menu(LevelView, LEVELING_VIEW_MESH); - Update_Status(""); + drawMenu(LevelView, LEVELING_VIEW_MESH); + updateStatus(""); } } break; @@ -3414,32 +3410,32 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case LEVELING_M_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else { set_bed_leveling_enabled(level_state); TERN_(AUTO_BED_LEVELING_BILINEAR, bedlevel.refresh_bed_level()); - Draw_Menu(Leveling, LEVELING_MANUAL); + drawMenu(Leveling, LEVELING_MANUAL); } break; case LEVELING_M_X: if (draw) { - Draw_Menu_Item(row, ICON_MoveX, F("Mesh Point X")); - Draw_Float(mesh_conf.mesh_x, row, 0, 1); + drawMenuItem(row, ICON_MoveX, F("Mesh Point X")); + drawFloat(mesh_conf.mesh_x, row, 0, 1); } else - Modify_Value(mesh_conf.mesh_x, 0, GRID_MAX_POINTS_X - 1, 1); + modifyValue(mesh_conf.mesh_x, 0, GRID_MAX_POINTS_X - 1, 1); break; case LEVELING_M_Y: if (draw) { - Draw_Menu_Item(row, ICON_MoveY, F("Mesh Point Y")); - Draw_Float(mesh_conf.mesh_y, row, 0, 1); + drawMenuItem(row, ICON_MoveY, F("Mesh Point Y")); + drawFloat(mesh_conf.mesh_y, row, 0, 1); } else - Modify_Value(mesh_conf.mesh_y, 0, GRID_MAX_POINTS_Y - 1, 1); + modifyValue(mesh_conf.mesh_y, 0, GRID_MAX_POINTS_Y - 1, 1); break; case LEVELING_M_NEXT: if (draw) - Draw_Menu_Item(row, ICON_More, F("Next Point")); + drawMenuItem(row, ICON_More, F("Next Point")); else { if (mesh_conf.mesh_x != (GRID_MAX_POINTS_X - 1) || mesh_conf.mesh_y != (GRID_MAX_POINTS_Y - 1)) { if ((mesh_conf.mesh_x == (GRID_MAX_POINTS_X - 1) && mesh_conf.mesh_y % 2 == 0) || (mesh_conf.mesh_x == 0 && mesh_conf.mesh_y % 2 == 1)) @@ -3454,58 +3450,58 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item break; case LEVELING_M_OFFSET: if (draw) { - Draw_Menu_Item(row, ICON_SetZOffset, F("Point Z Offset")); - Draw_Float(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row, false, 100); + drawMenuItem(row, ICON_SetZOffset, F("Point Z Offset")); + drawFloat(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row, false, 100); } else { if (isnan(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y])) bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] = 0; - Modify_Value(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], MIN_Z_OFFSET, MAX_Z_OFFSET, 100); + modifyValue(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], MIN_Z_OFFSET, MAX_Z_OFFSET, 100); } break; case LEVELING_M_UP: if (draw) - Draw_Menu_Item(row, ICON_Axis, F("Microstep Up")); + drawMenuItem(row, ICON_Axis, F("Microstep Up")); else if (bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] < MAX_Z_OFFSET) { bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] += 0.01; gcode.process_subcommands_now(F("M290 Z0.01")); planner.synchronize(); current_position.z += 0.01f; sync_plan_position(); - Draw_Float(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row - 1, false, 100); + drawFloat(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row - 1, false, 100); } break; case LEVELING_M_DOWN: if (draw) - Draw_Menu_Item(row, ICON_AxisD, F("Microstep Down")); + drawMenuItem(row, ICON_AxisD, F("Microstep Down")); else if (bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] > MIN_Z_OFFSET) { bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] -= 0.01; gcode.process_subcommands_now(F("M290 Z-0.01")); planner.synchronize(); current_position.z -= 0.01f; sync_plan_position(); - Draw_Float(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row - 2, false, 100); + drawFloat(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row - 2, false, 100); } break; case LEVELING_M_GOTO_VALUE: if (draw) { - Draw_Menu_Item(row, ICON_StockConfiguration, F("Go to Mesh Z Value")); - Draw_Checkbox(row, mesh_conf.goto_mesh_value); + drawMenuItem(row, ICON_StockConfiguration, F("Go to Mesh Z Value")); + drawCheckbox(row, mesh_conf.goto_mesh_value); } else { mesh_conf.goto_mesh_value = !mesh_conf.goto_mesh_value; current_position.z = 0; mesh_conf.manual_mesh_move(true); - Draw_Checkbox(row, mesh_conf.goto_mesh_value); + drawCheckbox(row, mesh_conf.goto_mesh_value); } break; #if ENABLED(AUTO_BED_LEVELING_UBL) case LEVELING_M_UNDEF: if (draw) - Draw_Menu_Item(row, ICON_ResumeEEPROM, F("Clear Point Value")); + drawMenuItem(row, ICON_ResumeEEPROM, F("Clear Point Value")); else { mesh_conf.manual_value_update(true); - Redraw_Menu(false); + redrawMenu(false); } break; #endif @@ -3527,18 +3523,18 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case UBL_M_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else { set_bed_leveling_enabled(level_state); - Draw_Menu(Leveling, LEVELING_GET_MESH); + drawMenu(Leveling, LEVELING_GET_MESH); } break; case UBL_M_NEXT: if (draw) { if (mesh_conf.mesh_x != (GRID_MAX_POINTS_X - 1) || mesh_conf.mesh_y != (GRID_MAX_POINTS_Y - 1)) - Draw_Menu_Item(row, ICON_More, F("Next Point")); + drawMenuItem(row, ICON_More, F("Next Point")); else - Draw_Menu_Item(row, ICON_More, F("Save Mesh")); + drawMenuItem(row, ICON_More, F("Save Mesh")); } else { if (mesh_conf.mesh_x != (GRID_MAX_POINTS_X - 1) || mesh_conf.mesh_y != (GRID_MAX_POINTS_Y - 1)) { @@ -3553,14 +3549,14 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item else { gcode.process_subcommands_now(F("G29 S")); planner.synchronize(); - AudioFeedback(true); - Draw_Menu(Leveling, LEVELING_GET_MESH); + audioFeedback(true); + drawMenu(Leveling, LEVELING_GET_MESH); } } break; case UBL_M_PREV: if (draw) - Draw_Menu_Item(row, ICON_More, F("Previous Point")); + drawMenuItem(row, ICON_More, F("Previous Point")); else { if (mesh_conf.mesh_x != 0 || mesh_conf.mesh_y != 0) { if ((mesh_conf.mesh_x == (GRID_MAX_POINTS_X - 1) && mesh_conf.mesh_y % 2 == 1) || (mesh_conf.mesh_x == 0 && mesh_conf.mesh_y % 2 == 0)) @@ -3575,37 +3571,37 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item break; case UBL_M_OFFSET: if (draw) { - Draw_Menu_Item(row, ICON_SetZOffset, F("Point Z Offset")); - Draw_Float(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row, false, 100); + drawMenuItem(row, ICON_SetZOffset, F("Point Z Offset")); + drawFloat(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row, false, 100); } else { if (isnan(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y])) bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] = 0; - Modify_Value(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], MIN_Z_OFFSET, MAX_Z_OFFSET, 100); + modifyValue(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], MIN_Z_OFFSET, MAX_Z_OFFSET, 100); } break; case UBL_M_UP: if (draw) - Draw_Menu_Item(row, ICON_Axis, F("Microstep Up")); + drawMenuItem(row, ICON_Axis, F("Microstep Up")); else if (bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] < MAX_Z_OFFSET) { bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] += 0.01; gcode.process_subcommands_now(F("M290 Z0.01")); planner.synchronize(); current_position.z += 0.01f; sync_plan_position(); - Draw_Float(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row - 1, false, 100); + drawFloat(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row - 1, false, 100); } break; case UBL_M_DOWN: if (draw) - Draw_Menu_Item(row, ICON_Axis, F("Microstep Down")); + drawMenuItem(row, ICON_Axis, F("Microstep Down")); else if (bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] > MIN_Z_OFFSET) { bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] -= 0.01; gcode.process_subcommands_now(F("M290 Z-0.01")); planner.synchronize(); current_position.z -= 0.01f; sync_plan_position(); - Draw_Float(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row - 2, false, 100); + drawFloat(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row - 2, false, 100); } break; } @@ -3626,64 +3622,64 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case MMESH_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Cancel")); + drawMenuItem(row, ICON_Back, F("Cancel")); else { gcode.process_subcommands_now(F("G29 A")); planner.synchronize(); set_bed_leveling_enabled(level_state); - Draw_Menu(Leveling, LEVELING_GET_MESH); + drawMenu(Leveling, LEVELING_GET_MESH); } break; case MMESH_NEXT: if (draw) { if (gridpoint < GRID_MAX_POINTS) - Draw_Menu_Item(row, ICON_More, F("Next Point")); + drawMenuItem(row, ICON_More, F("Next Point")); else - Draw_Menu_Item(row, ICON_More, F("Save Mesh")); + drawMenuItem(row, ICON_More, F("Save Mesh")); } else if (gridpoint < GRID_MAX_POINTS) { - Popup_Handler(MoveWait); + popupHandler(MoveWait); gcode.process_subcommands_now(F("G29")); planner.synchronize(); gridpoint++; - Redraw_Menu(); + redrawMenu(); } else { gcode.process_subcommands_now(F("G29")); planner.synchronize(); - AudioFeedback(settings.save()); - Draw_Menu(Leveling, LEVELING_GET_MESH); + audioFeedback(settings.save()); + drawMenu(Leveling, LEVELING_GET_MESH); } break; case MMESH_OFFSET: if (draw) { - Draw_Menu_Item(row, ICON_SetZOffset, F("Z Position")); + drawMenuItem(row, ICON_SetZOffset, F("Z Position")); current_position.z = MANUAL_PROBE_START_Z; - Draw_Float(current_position.z, row, false, 100); + drawFloat(current_position.z, row, false, 100); } else - Modify_Value(current_position.z, MIN_Z_OFFSET, MAX_Z_OFFSET, 100); + modifyValue(current_position.z, MIN_Z_OFFSET, MAX_Z_OFFSET, 100); break; case MMESH_UP: if (draw) - Draw_Menu_Item(row, ICON_Axis, F("Microstep Up")); + drawMenuItem(row, ICON_Axis, F("Microstep Up")); else if (current_position.z < MAX_Z_OFFSET) { gcode.process_subcommands_now(F("M290 Z0.01")); planner.synchronize(); current_position.z += 0.01f; sync_plan_position(); - Draw_Float(current_position.z, row - 1, false, 100); + drawFloat(current_position.z, row - 1, false, 100); } break; case MMESH_DOWN: if (draw) - Draw_Menu_Item(row, ICON_AxisD, F("Microstep Down")); + drawMenuItem(row, ICON_AxisD, F("Microstep Down")); else if (current_position.z > MIN_Z_OFFSET) { gcode.process_subcommands_now(F("M290 Z-0.01")); planner.synchronize(); current_position.z -= 0.01f; sync_plan_position(); - Draw_Float(current_position.z, row - 2, false, 100); + drawFloat(current_position.z, row - 2, false, 100); } break; case MMESH_OLD: @@ -3698,15 +3694,15 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item const float currval = bedlevel.z_values[mesh_x][mesh_y]; if (draw) { - Draw_Menu_Item(row, ICON_Zoffset, F("Goto Mesh Value")); - Draw_Float(currval, row, false, 100); + drawMenuItem(row, ICON_Zoffset, F("Goto Mesh Value")); + drawFloat(currval, row, false, 100); } else if (!isnan(currval)) { current_position.z = currval; planner.synchronize(); planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder); planner.synchronize(); - Draw_Float(current_position.z, row - 3, false, 100); + drawFloat(current_position.z, row - 3, false, 100); } break; } @@ -3733,85 +3729,85 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case TUNE_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, F("Back")); else - Draw_Print_Screen(); + drawPrintScreen(); break; case TUNE_SPEED: if (draw) { - Draw_Menu_Item(row, ICON_Speed, F("Print Speed")); - Draw_Float(feedrate_percentage, row, false, 1); + drawMenuItem(row, ICON_Speed, F("Print Speed")); + drawFloat(feedrate_percentage, row, false, 1); } else - Modify_Value(feedrate_percentage, MIN_PRINT_SPEED, MAX_PRINT_SPEED, 1); + modifyValue(feedrate_percentage, MIN_PRINT_SPEED, MAX_PRINT_SPEED, 1); break; #if HAS_HOTEND case TUNE_FLOW: if (draw) { - Draw_Menu_Item(row, ICON_Speed, F("Flow Rate")); - Draw_Float(planner.flow_percentage[0], row, false, 1); + drawMenuItem(row, ICON_Speed, F("Flow Rate")); + drawFloat(planner.flow_percentage[0], row, false, 1); } else - Modify_Value(planner.flow_percentage[0], MIN_FLOW_RATE, MAX_FLOW_RATE, 1, []{ planner.refresh_e_factor(0); }); + modifyValue(planner.flow_percentage[0], MIN_FLOW_RATE, MAX_FLOW_RATE, 1, []{ planner.refresh_e_factor(0); }); break; case TUNE_HOTEND: if (draw) { - Draw_Menu_Item(row, ICON_SetEndTemp, F("Hotend")); - Draw_Float(thermalManager.temp_hotend[0].target, row, false, 1); + drawMenuItem(row, ICON_SetEndTemp, F("Hotend")); + drawFloat(thermalManager.temp_hotend[0].target, row, false, 1); } else - Modify_Value(thermalManager.temp_hotend[0].target, MIN_E_TEMP, MAX_E_TEMP, 1); + modifyValue(thermalManager.temp_hotend[0].target, MIN_E_TEMP, MAX_E_TEMP, 1); break; #endif #if HAS_HEATED_BED case TUNE_BED: if (draw) { - Draw_Menu_Item(row, ICON_SetBedTemp, F("Bed")); - Draw_Float(thermalManager.temp_bed.target, row, false, 1); + drawMenuItem(row, ICON_SetBedTemp, F("Bed")); + drawFloat(thermalManager.temp_bed.target, row, false, 1); } else - Modify_Value(thermalManager.temp_bed.target, MIN_BED_TEMP, MAX_BED_TEMP, 1); + modifyValue(thermalManager.temp_bed.target, MIN_BED_TEMP, MAX_BED_TEMP, 1); break; #endif #if HAS_FAN case TUNE_FAN: if (draw) { - Draw_Menu_Item(row, ICON_FanSpeed, F("Fan")); - Draw_Float(thermalManager.fan_speed[0], row, false, 1); + drawMenuItem(row, ICON_FanSpeed, F("Fan")); + drawFloat(thermalManager.fan_speed[0], row, false, 1); } else - Modify_Value(thermalManager.fan_speed[0], MIN_FAN_SPEED, MAX_FAN_SPEED, 1); + modifyValue(thermalManager.fan_speed[0], MIN_FAN_SPEED, MAX_FAN_SPEED, 1); break; #endif #if HAS_ZOFFSET_ITEM case TUNE_ZOFFSET: if (draw) { - Draw_Menu_Item(row, ICON_FanSpeed, F("Z-Offset")); - Draw_Float(zoffsetvalue, row, false, 100); + drawMenuItem(row, ICON_FanSpeed, F("Z-Offset")); + drawFloat(zoffsetvalue, row, false, 100); } else - Modify_Value(zoffsetvalue, MIN_Z_OFFSET, MAX_Z_OFFSET, 100); + modifyValue(zoffsetvalue, MIN_Z_OFFSET, MAX_Z_OFFSET, 100); break; case TUNE_ZUP: if (draw) - Draw_Menu_Item(row, ICON_Axis, F("Z-Offset Up")); + drawMenuItem(row, ICON_Axis, F("Z-Offset Up")); else if (zoffsetvalue < MAX_Z_OFFSET) { gcode.process_subcommands_now(F("M290 Z0.01")); zoffsetvalue += 0.01; - Draw_Float(zoffsetvalue, row - 1, false, 100); + drawFloat(zoffsetvalue, row - 1, false, 100); } break; case TUNE_ZDOWN: if (draw) - Draw_Menu_Item(row, ICON_AxisD, F("Z-Offset Down")); + drawMenuItem(row, ICON_AxisD, F("Z-Offset Down")); else if (zoffsetvalue > MIN_Z_OFFSET) { gcode.process_subcommands_now(F("M290 Z-0.01")); zoffsetvalue -= 0.01; - Draw_Float(zoffsetvalue, row - 2, false, 100); + drawFloat(zoffsetvalue, row - 2, false, 100); } break; #endif @@ -3819,38 +3815,38 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) case TUNE_CHANGEFIL: if (draw) - Draw_Menu_Item(row, ICON_ResumeEEPROM, GET_TEXT_F(MSG_FILAMENTCHANGE)); + drawMenuItem(row, ICON_ResumeEEPROM, GET_TEXT_F(MSG_FILAMENTCHANGE)); else - Popup_Handler(ConfFilChange); + popupHandler(ConfFilChange); break; #endif #if ENABLED(FILAMENT_RUNOUT_SENSOR) case TUNE_FILSENSORENABLED: if (draw) { - Draw_Menu_Item(row, ICON_Extruder, F("Filament Sensor")); - Draw_Checkbox(row, runout.enabled); + drawMenuItem(row, ICON_Extruder, F("Filament Sensor")); + drawCheckbox(row, runout.enabled); } else { runout.enabled = !runout.enabled; - Draw_Checkbox(row, runout.enabled); + drawCheckbox(row, runout.enabled); } break; #endif case TUNE_BACKLIGHT_OFF: if (draw) - Draw_Menu_Item(row, ICON_Brightness, F("Display Off")); + drawMenuItem(row, ICON_Brightness, F("Display Off")); else ui.set_brightness(0); break; case TUNE_BACKLIGHT: if (draw) { - Draw_Menu_Item(row, ICON_Brightness, F("LCD Brightness")); - Draw_Float(ui.brightness, row, false, 1); + drawMenuItem(row, ICON_Brightness, F("LCD Brightness")); + drawFloat(ui.brightness, row, false, 1); } else - Modify_Value(ui.brightness, LCD_BRIGHTNESS_MIN, LCD_BRIGHTNESS_MAX, 1, ui.refresh_brightness); + modifyValue(ui.brightness, LCD_BRIGHTNESS_MIN, LCD_BRIGHTNESS_MAX, 1, ui.refresh_brightness); break; } break; @@ -3872,22 +3868,22 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item switch (item) { case PREHEATHOTEND_BACK: if (draw) - Draw_Menu_Item(row, ICON_Back, F("Cancel")); + drawMenuItem(row, ICON_Back, F("Cancel")); else { thermalManager.setTargetHotend(0, 0); TERN_(HAS_FAN, thermalManager.set_fan_speed(0, 0)); - Redraw_Menu(false, true, true); + redrawMenu(false, true, true); } break; case PREHEATHOTEND_CONTINUE: if (draw) - Draw_Menu_Item(row, ICON_SetEndTemp, F("Continue")); + drawMenuItem(row, ICON_SetEndTemp, F("Continue")); else { - Popup_Handler(Heating); + popupHandler(Heating); thermalManager.wait_for_hotend(0); switch (last_menu) { case Prepare: - Popup_Handler(FilChange); + popupHandler(FilChange); sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target); gcode.process_subcommands_now(cmd); break; @@ -3895,19 +3891,19 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item case ChangeFilament: switch (last_selection) { case CHANGEFIL_LOAD: - Popup_Handler(FilLoad); + popupHandler(FilLoad); gcode.process_subcommands_now(F("M701")); planner.synchronize(); - Redraw_Menu(true, true, true); + redrawMenu(true, true, true); break; case CHANGEFIL_UNLOAD: - Popup_Handler(FilLoad, true); + popupHandler(FilLoad, true); gcode.process_subcommands_now(F("M702")); planner.synchronize(); - Redraw_Menu(true, true, true); + redrawMenu(true, true, true); break; case CHANGEFIL_CHANGE: - Popup_Handler(FilChange); + popupHandler(FilChange); sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target); gcode.process_subcommands_now(cmd); break; @@ -3915,7 +3911,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item break; #endif default: - Redraw_Menu(true, true, true); + redrawMenu(true, true, true); break; } } @@ -3924,7 +3920,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item #define _PREHEAT_HOTEND_CASE(N) \ case PREHEATHOTEND_##N: \ - if (draw) Draw_Menu_Item(row, ICON_Temperature, F(PREHEAT_## N ##_LABEL)); \ + if (draw) drawMenuItem(row, ICON_Temperature, F(PREHEAT_## N ##_LABEL)); \ else ui.preheat_hotend_and_fan((N) - 1); \ break; @@ -3932,11 +3928,11 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item case PREHEATHOTEND_CUSTOM: if (draw) { - Draw_Menu_Item(row, ICON_Temperature, F("Custom")); - Draw_Float(thermalManager.temp_hotend[0].target, row, false, 1); + drawMenuItem(row, ICON_Temperature, F("Custom")); + drawFloat(thermalManager.temp_hotend[0].target, row, false, 1); } else - Modify_Value(thermalManager.temp_hotend[0].target, EXTRUDE_MINTEMP, MAX_E_TEMP, 1); + modifyValue(thermalManager.temp_hotend[0].target, EXTRUDE_MINTEMP, MAX_E_TEMP, 1); break; } break; @@ -3945,7 +3941,7 @@ void CrealityDWINClass::Menu_Item_Handler(const uint8_t menu, const uint8_t item } } -FSTR_P CrealityDWINClass::Get_Menu_Title(const uint8_t menu) { +FSTR_P CrealityDWIN::getMenuTitle(const uint8_t menu) { switch (menu) { case MainMenu: return GET_TEXT_F(MSG_MAIN_MENU); case Prepare: return GET_TEXT_F(MSG_PREPARE); @@ -4022,7 +4018,7 @@ FSTR_P CrealityDWINClass::Get_Menu_Title(const uint8_t menu) { return F(""); } -uint8_t CrealityDWINClass::Get_Menu_Size(const uint8_t menu) { +uint8_t CrealityDWIN::getMenuSize(const uint8_t menu) { switch (menu) { case Prepare: return PREPARE_TOTAL; case HomeMenu: return HOME_TOTAL; @@ -4099,108 +4095,108 @@ uint8_t CrealityDWINClass::Get_Menu_Size(const uint8_t menu) { /* Popup Config */ -void CrealityDWINClass::Popup_Handler(const PopupID popupid, const bool option/*=false*/) { +void CrealityDWIN::popupHandler(const PopupID popupid, const bool option/*=false*/) { popup = last_popup = popupid; switch (popupid) { - case Pause: Draw_Popup(F("Pause Print"), F(""), F(""), Popup); break; - case Stop: Draw_Popup(F("Stop Print"), F(""), F(""), Popup); break; - case Resume: Draw_Popup(F("Resume Print?"), F("Looks Like the last"), F("print was interrupted."), Popup); break; - case ConfFilChange: Draw_Popup(F("Confirm Filament Change"), F(""), F(""), Popup); break; - case PurgeMore: Draw_Popup(F("Purge more filament?"), F("(Cancel to finish process)"), F(""), Popup); break; - case SaveLevel: Draw_Popup(F("Leveling Complete"), F("Save to EEPROM?"), F(""), Popup); break; - case MeshSlot: Draw_Popup(F("Mesh slot not selected"), F("(Confirm to select slot 0)"), F(""), Popup); break; - case ETemp: Draw_Popup(F("Nozzle is too cold"), F("Open Preheat Menu?"), F(""), Popup); break; - case ManualProbing: Draw_Popup(F("Manual Probing"), F("(Confirm to probe)"), F("(cancel to exit)"), Popup); break; - case Level: Draw_Popup(F("Auto Bed Leveling"), F("Please wait until done."), F(""), Wait, ICON_AutoLeveling); break; - case Home: Draw_Popup(option ? F("Parking") : F("Homing"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; - case MoveWait: Draw_Popup(F("Moving to Point"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; - case Heating: Draw_Popup(F("Heating"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; - case FilLoad: Draw_Popup(option ? F("Unloading Filament") : F("Loading Filament"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; - case FilChange: Draw_Popup(F("Filament Change"), F("Please wait for prompt."), F(""), Wait, ICON_BLTouch); break; - case TempWarn: Draw_Popup(option ? F("Nozzle temp too low!") : F("Nozzle temp too high!"), F(""), F(""), Wait, option ? ICON_TempTooLow : ICON_TempTooHigh); break; - case Runout: Draw_Popup(F("Filament Runout"), F(""), F(""), Wait, ICON_BLTouch); break; - case PIDWait: Draw_Popup(F("PID Autotune"), F("in process"), F("Please wait until done."), Wait, ICON_BLTouch); break; - case Resuming: Draw_Popup(F("Resuming Print"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; - case Custom: Draw_Popup(F("Running Custom GCode"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; + case Pause: drawPopup(F("Pause Print"), F(""), F(""), Popup); break; + case Stop: drawPopup(F("Stop Print"), F(""), F(""), Popup); break; + case Resume: drawPopup(F("Resume Print?"), F("Looks Like the last"), F("print was interrupted."), Popup); break; + case ConfFilChange: drawPopup(F("Confirm Filament Change"), F(""), F(""), Popup); break; + case PurgeMore: drawPopup(F("Purge more filament?"), F("(Cancel to finish process)"), F(""), Popup); break; + case SaveLevel: drawPopup(F("Leveling Complete"), F("Save to EEPROM?"), F(""), Popup); break; + case MeshSlot: drawPopup(F("Mesh slot not selected"), F("(Confirm to select slot 0)"), F(""), Popup); break; + case ETemp: drawPopup(F("Nozzle is too cold"), F("Open Preheat Menu?"), F(""), Popup); break; + case ManualProbing: drawPopup(F("Manual Probing"), F("(Confirm to probe)"), F("(cancel to exit)"), Popup); break; + case Level: drawPopup(F("Auto Bed Leveling"), F("Please wait until done."), F(""), Wait, ICON_AutoLeveling); break; + case Home: drawPopup(option ? F("Parking") : F("Homing"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; + case MoveWait: drawPopup(F("Moving to Point"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; + case Heating: drawPopup(F("Heating"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; + case FilLoad: drawPopup(option ? F("Unloading Filament") : F("Loading Filament"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; + case FilChange: drawPopup(F("Filament Change"), F("Please wait for prompt."), F(""), Wait, ICON_BLTouch); break; + case TempWarn: drawPopup(option ? F("Nozzle temp too low!") : F("Nozzle temp too high!"), F(""), F(""), Wait, option ? ICON_TempTooLow : ICON_TempTooHigh); break; + case Runout: drawPopup(F("Filament Runout"), F(""), F(""), Wait, ICON_BLTouch); break; + case PIDWait: drawPopup(F("PID Autotune"), F("in process"), F("Please wait until done."), Wait, ICON_BLTouch); break; + case Resuming: drawPopup(F("Resuming Print"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; + case Custom: drawPopup(F("Running Custom GCode"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; default: break; } } -void CrealityDWINClass::Confirm_Handler(PopupID popupid) { +void CrealityDWIN::confirmHandler(PopupID popupid) { popup = popupid; switch (popupid) { - case FilInsert: Draw_Popup(F("Insert Filament"), F("Press to Continue"), F(""), Confirm); break; - case HeaterTime: Draw_Popup(F("Heater Timed Out"), F("Press to Reheat"), F(""), Confirm); break; - case UserInput: Draw_Popup(F("Waiting for Input"), F("Press to Continue"), F(""), Confirm); break; - case LevelError: Draw_Popup(F("Couldn't enable Leveling"), F("(Valid mesh must exist)"), F(""), Confirm); break; - case InvalidMesh: Draw_Popup(F("Valid mesh must exist"), F("before tuning can be"), F("performed"), Confirm); break; + case FilInsert: drawPopup(F("Insert Filament"), F("Press to Continue"), F(""), Confirm); break; + case HeaterTime: drawPopup(F("Heater Timed Out"), F("Press to Reheat"), F(""), Confirm); break; + case UserInput: drawPopup(F("Waiting for Input"), F("Press to Continue"), F(""), Confirm); break; + case LevelError: drawPopup(F("Couldn't enable Leveling"), F("(Valid mesh must exist)"), F(""), Confirm); break; + case InvalidMesh: drawPopup(F("Valid mesh must exist"), F("before tuning can be"), F("performed"), Confirm); break; default: break; } } /* Navigation and Control */ -void CrealityDWINClass::Main_Menu_Control() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); +void CrealityDWIN::mainMenuControl() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_CW && selection < PAGE_COUNT - 1) { selection++; // Select Down - Main_Menu_Icons(); + mainMenuIcons(); } else if (encoder_diffState == ENCODER_DIFF_CCW && selection > 0) { selection--; // Select Up - Main_Menu_Icons(); + mainMenuIcons(); } else if (encoder_diffState == ENCODER_DIFF_ENTER) switch (selection) { - case PAGE_PRINT: card.mount(); Draw_SD_List(); break; - case PAGE_PREPARE: Draw_Menu(Prepare); break; - case PAGE_CONTROL: Draw_Menu(Control); break; - case PAGE_INFO_LEVELING: Draw_Menu(TERN(HAS_MESH, Leveling, InfoMain)); break; + case PAGE_PRINT: card.mount(); drawSDList(); break; + case PAGE_PREPARE: drawMenu(Prepare); break; + case PAGE_CONTROL: drawMenu(Control); break; + case PAGE_INFO_LEVELING: drawMenu(TERN(HAS_MESH, Leveling, InfoMain)); break; } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } -void CrealityDWINClass::Menu_Control() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); +void CrealityDWIN::menuControl() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (encoder_diffState == ENCODER_DIFF_CW && selection < Get_Menu_Size(active_menu)) { - DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + if (encoder_diffState == ENCODER_DIFF_CW && selection < getMenuSize(active_menu)) { + dwinDrawRectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); selection++; // Select Down if (selection > scrollpos+MROWS) { scrollpos++; - DWIN_Frame_AreaMove(1, 2, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); - Menu_Item_Handler(active_menu, selection); + dwinFrameAreaMove(1, 2, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); + menuItemHandler(active_menu, selection); } - DWIN_Draw_Rectangle(1, GetColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); } else if (encoder_diffState == ENCODER_DIFF_CCW && selection > 0) { - DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); selection--; // Select Up if (selection < scrollpos) { scrollpos--; - DWIN_Frame_AreaMove(1, 3, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); - Menu_Item_Handler(active_menu, selection); + dwinFrameAreaMove(1, 3, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); + menuItemHandler(active_menu, selection); } - DWIN_Draw_Rectangle(1, GetColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); } else if (encoder_diffState == ENCODER_DIFF_ENTER) - Menu_Item_Handler(active_menu, selection, false); - DWIN_UpdateLCD(); + menuItemHandler(active_menu, selection, false); + dwinUpdateLCD(); } -void CrealityDWINClass::Value_Control() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); +void CrealityDWIN::valueControl() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_CW) - tempvalue += EncoderRate.encoderMoveValue; + tempvalue += encoderRate.encoderMoveValue; else if (encoder_diffState == ENCODER_DIFF_CCW) - tempvalue -= EncoderRate.encoderMoveValue; + tempvalue -= encoderRate.encoderMoveValue; else if (encoder_diffState == ENCODER_DIFF_ENTER) { process = Menu; - EncoderRate.enabled = false; - Draw_Float(tempvalue / valueunit, selection - scrollpos, false, valueunit); - DWIN_UpdateLCD(); + encoderRate.enabled = false; + drawFloat(tempvalue / valueunit, selection - scrollpos, false, valueunit); + dwinUpdateLCD(); if (active_menu == ZOffset && liveadjust) { planner.synchronize(); current_position.z += (tempvalue / valueunit - zoffsetvalue); @@ -4243,24 +4239,24 @@ void CrealityDWINClass::Value_Control() { return; } LIMIT(tempvalue, valuemin * valueunit, valuemax * valueunit); - Draw_Float(tempvalue / valueunit, selection - scrollpos, true, valueunit); - DWIN_UpdateLCD(); + drawFloat(tempvalue / valueunit, selection - scrollpos, true, valueunit); + dwinUpdateLCD(); if (active_menu == Move && livemove) { *(float*)valuepointer = tempvalue / valueunit; planner.buffer_line(current_position, manual_feedrate_mm_s[selection - 1], active_extruder); } } -void CrealityDWINClass::Option_Control() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); +void CrealityDWIN::optionControl() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_CW) - tempvalue += EncoderRate.encoderMoveValue; + tempvalue += encoderRate.encoderMoveValue; else if (encoder_diffState == ENCODER_DIFF_CCW) - tempvalue -= EncoderRate.encoderMoveValue; + tempvalue -= encoderRate.encoderMoveValue; else if (encoder_diffState == ENCODER_DIFF_ENTER) { process = Menu; - EncoderRate.enabled = false; + encoderRate.enabled = false; if (valuepointer == &color_names) { switch (selection) { case COLORSETTINGS_CURSOR: eeprom_settings.cursor_color = tempvalue; break; @@ -4275,24 +4271,24 @@ void CrealityDWINClass::Option_Control() { case COLORSETTINGS_PROGRESS_COORDINATES: eeprom_settings.coordinates_text = tempvalue; break; case COLORSETTINGS_PROGRESS_COORDINATES_LINE: eeprom_settings.coordinates_split_line = tempvalue; break; } - Redraw_Screen(); + redrawScreen(); } else if (valuepointer == &preheat_modes) preheatmode = tempvalue; - Draw_Option(tempvalue, static_cast(valuepointer), selection - scrollpos, false, (valuepointer == &color_names)); - DWIN_UpdateLCD(); + drawOption(tempvalue, static_cast(valuepointer), selection - scrollpos, false, (valuepointer == &color_names)); + dwinUpdateLCD(); return; } LIMIT(tempvalue, valuemin, valuemax); - Draw_Option(tempvalue, static_cast(valuepointer), selection - scrollpos, true); - DWIN_UpdateLCD(); + drawOption(tempvalue, static_cast(valuepointer), selection - scrollpos, true); + dwinUpdateLCD(); } -void CrealityDWINClass::File_Control() { +void CrealityDWIN::fileControl() { typedef TextScroller Scroller; static Scroller scroller; - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) { if (selection > 0) { card.selectFileByIndexSorted(selection - 1); @@ -4307,82 +4303,82 @@ void CrealityDWINClass::File_Control() { time = millis() + 200; Scroller::Buffer buf; const char* const name = scroller.scroll(pos, buf, filename); - DWIN_Draw_Rectangle(1, Color_Bg_Black, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28); - Draw_Menu_Item(selection - scrollpos, card.flag.filenameIsDir ? ICON_More : ICON_File, name); - DWIN_UpdateLCD(); + dwinDrawRectangle(1, Color_Bg_Black, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28); + drawMenuItem(selection - scrollpos, card.flag.filenameIsDir ? ICON_More : ICON_File, name); + dwinUpdateLCD(); } } return; } if (encoder_diffState == ENCODER_DIFF_CW && selection < card.get_num_items()) { - DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); if (selection > 0) { - DWIN_Draw_Rectangle(1, Color_Bg_Black, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28); - Draw_SD_Item(selection, selection - scrollpos); + dwinDrawRectangle(1, Color_Bg_Black, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28); + drawSDItem(selection, selection - scrollpos); } scroller.reset(); selection++; // Select Down if (selection > scrollpos + MROWS) { scrollpos++; - DWIN_Frame_AreaMove(1, 2, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); - Draw_SD_Item(selection, selection - scrollpos); + dwinFrameAreaMove(1, 2, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); + drawSDItem(selection, selection - scrollpos); } - DWIN_Draw_Rectangle(1, GetColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); } else if (encoder_diffState == ENCODER_DIFF_CCW && selection > 0) { - DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); - DWIN_Draw_Rectangle(1, Color_Bg_Black, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28); - Draw_SD_Item(selection, selection - scrollpos); + dwinDrawRectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, Color_Bg_Black, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28); + drawSDItem(selection, selection - scrollpos); scroller.reset(); selection--; // Select Up if (selection < scrollpos) { scrollpos--; - DWIN_Frame_AreaMove(1, 3, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); - Draw_SD_Item(selection, selection - scrollpos); + dwinFrameAreaMove(1, 3, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); + drawSDItem(selection, selection - scrollpos); } - DWIN_Draw_Rectangle(1, GetColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { if (selection == 0) { if (card.flag.workDirIsRoot) { process = Main; - Draw_Main_Menu(); + drawMainMenu(); } else { card.cdup(); - Draw_SD_List(); + drawSDList(); } } else { card.selectFileByIndexSorted(selection - 1); if (card.flag.filenameIsDir) { card.cd(card.filename); - Draw_SD_List(); + drawSDList(); } else { card.openAndPrintFile(card.filename); } } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } -void CrealityDWINClass::Print_Screen_Control() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); +void CrealityDWIN::printScreenControl() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_CW && selection < PRINT_COUNT - 1) { selection++; // Select Down - Print_Screen_Icons(); + printScreenIcons(); } else if (encoder_diffState == ENCODER_DIFF_CCW && selection > 0) { selection--; // Select Up - Print_Screen_Icons(); + printScreenIcons(); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (selection) { case PRINT_SETUP: - Draw_Menu(Tune); - Update_Status_Bar(true); + drawMenu(Tune); + updateStatusBar(true); break; case PRINT_PAUSE_RESUME: if (paused) { @@ -4409,27 +4405,27 @@ void CrealityDWINClass::Print_Screen_Control() { else { TERN_(HOST_ACTION_COMMANDS, hostui.resume()); } - Draw_Print_Screen(); + drawPrintScreen(); } else - Popup_Handler(Pause); + popupHandler(Pause); break; - case PRINT_STOP: Popup_Handler(Stop); break; + case PRINT_STOP: popupHandler(Stop); break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } -void CrealityDWINClass::Popup_Control() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); +void CrealityDWIN::popupControl() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_CW && selection < 1) { selection++; - Popup_Select(); + popupSelect(); } else if (encoder_diffState == ENCODER_DIFF_CCW && selection > 0) { selection--; - Popup_Select(); + popupSelect(); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (popup) { @@ -4440,7 +4436,7 @@ void CrealityDWINClass::Popup_Control() { if (recovery.enabled) recovery.save(true); #endif #if ENABLED(PARK_HEAD_ON_PAUSE) - Popup_Handler(Home, true); + popupHandler(Home, true); #if HAS_MEDIA if (IS_SD_PRINTING()) card.pauseSDPrint(); #endif @@ -4459,7 +4455,7 @@ void CrealityDWINClass::Popup_Control() { TERN_(HOST_ACTION_COMMANDS, hostui.pause()); } } - Draw_Print_Screen(); + drawPrintScreen(); break; case Stop: if (selection == 0) { @@ -4472,14 +4468,14 @@ void CrealityDWINClass::Popup_Control() { } } else - Draw_Print_Screen(); + drawPrintScreen(); break; case Resume: if (selection == 0) queue.inject(F("M1000")); else { queue.inject(F("M1000 C")); - Draw_Main_Menu(); + drawMainMenu(); } break; @@ -4488,10 +4484,10 @@ void CrealityDWINClass::Popup_Control() { if (selection == 0) { thermalManager.setTargetHotend(EXTRUDE_MINTEMP, 0); TERN_(HAS_FAN, thermalManager.set_fan_speed(0, MAX_FAN_SPEED)); - Draw_Menu(PreheatHotend); + drawMenu(PreheatHotend); } else - Redraw_Menu(true, true, false); + redrawMenu(true, true, false); break; #endif @@ -4501,11 +4497,11 @@ void CrealityDWINClass::Popup_Control() { char buf[80]; const float dif = probe.probe_at_point(current_position.x, current_position.y, PROBE_PT_STOW, 0, false) - corner_avg; sprintf_P(buf, dif > 0 ? PSTR("Corner is %smm high") : PSTR("Corner is %smm low"), dtostrf(abs(dif), 1, 3, str_1)); - Update_Status(buf); + updateStatus(buf); } else { - Redraw_Menu(true, true, false); - Update_Status(""); + redrawMenu(true, true, false); + updateStatus(""); } break; #endif @@ -4514,29 +4510,29 @@ void CrealityDWINClass::Popup_Control() { case ConfFilChange: if (selection == 0) { if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) - Popup_Handler(ETemp); + popupHandler(ETemp); else { if (thermalManager.temp_hotend[0].is_below_target(2)) { - Popup_Handler(Heating); + popupHandler(Heating); thermalManager.wait_for_hotend(0); } - Popup_Handler(FilChange); + popupHandler(FilChange); sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target); gcode.process_subcommands_now(cmd); } } else - Redraw_Menu(true, true, false); + redrawMenu(true, true, false); break; case PurgeMore: if (selection == 0) { pause_menu_response = PAUSE_RESPONSE_EXTRUDE_MORE; - Popup_Handler(FilChange); + popupHandler(FilChange); } else { pause_menu_response = PAUSE_RESPONSE_RESUME_PRINT; - if (printing) Popup_Handler(Resuming); - else Redraw_Menu(true, true, active_menu == PreheatHotend); + if (printing) popupHandler(Resuming); + else redrawMenu(true, true, active_menu == PreheatHotend); } break; #endif // ADVANCED_PAUSE_FEATURE @@ -4547,55 +4543,55 @@ void CrealityDWINClass::Popup_Control() { #if ENABLED(AUTO_BED_LEVELING_UBL) gcode.process_subcommands_now(F("G29 S")); planner.synchronize(); - AudioFeedback(true); + audioFeedback(true); #else - AudioFeedback(settings.save()); + audioFeedback(settings.save()); #endif } - Draw_Menu(Leveling, LEVELING_GET_MESH); + drawMenu(Leveling, LEVELING_GET_MESH); break; #endif #if ENABLED(AUTO_BED_LEVELING_UBL) case MeshSlot: if (selection == 0) bedlevel.storage_slot = 0; - Redraw_Menu(true, true); + redrawMenu(true, true); break; #endif default: break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } -void CrealityDWINClass::Confirm_Control() { - EncoderState encoder_diffState = Encoder_ReceiveAnalyze(); +void CrealityDWIN::confirmControl() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (popup) { case Complete: - Draw_Main_Menu(); + drawMainMenu(); break; case FilInsert: - Popup_Handler(FilChange); + popupHandler(FilChange); wait_for_user = false; break; case HeaterTime: - Popup_Handler(Heating); + popupHandler(Heating); wait_for_user = false; break; default: - Redraw_Menu(true, true, false); + redrawMenu(true, true, false); wait_for_user = false; break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } /* In-Menu Value Modification */ -void CrealityDWINClass::Setup_Value(const_float_t value, const_float_t min, const_float_t max, const_float_t unit, const uint8_t type) { +void CrealityDWIN::setupValue(const_float_t value, const_float_t min, const_float_t max, const_float_t unit, const uint8_t type) { if (TERN0(HAS_HOTEND, valuepointer == &thermalManager.temp_hotend[0].pid.Ki) || TERN0(HAS_HEATED_BED, valuepointer == &thermalManager.temp_bed.pid.Ki)) tempvalue = unscalePID_i(value) * unit; else if (TERN0(HAS_HOTEND, valuepointer == &thermalManager.temp_hotend[0].pid.Kd) || TERN0(HAS_HEATED_BED, valuepointer == &thermalManager.temp_bed.pid.Kd)) @@ -4607,58 +4603,58 @@ void CrealityDWINClass::Setup_Value(const_float_t value, const_float_t min, cons valueunit = unit; valuetype = type; process = Value; - EncoderRate.enabled = true; - Draw_Float(tempvalue / unit, selection - scrollpos, true, valueunit); + encoderRate.enabled = true; + drawFloat(tempvalue / unit, selection - scrollpos, true, valueunit); } -void CrealityDWINClass::Modify_Value(float &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { +void CrealityDWIN::modifyValue(float &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; - Setup_Value((float)value, min, max, unit, 0); + setupValue((float)value, min, max, unit, 0); } -void CrealityDWINClass::Modify_Value(uint8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { +void CrealityDWIN::modifyValue(uint8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; - Setup_Value((float)value, min, max, unit, 1); + setupValue((float)value, min, max, unit, 1); } -void CrealityDWINClass::Modify_Value(uint16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { +void CrealityDWIN::modifyValue(uint16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; - Setup_Value((float)value, min, max, unit, 2); + setupValue((float)value, min, max, unit, 2); } -void CrealityDWINClass::Modify_Value(int16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { +void CrealityDWIN::modifyValue(int16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; - Setup_Value((float)value, min, max, unit, 3); + setupValue((float)value, min, max, unit, 3); } -void CrealityDWINClass::Modify_Value(uint32_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { +void CrealityDWIN::modifyValue(uint32_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; - Setup_Value((float)value, min, max, unit, 4); + setupValue((float)value, min, max, unit, 4); } -void CrealityDWINClass::Modify_Value(int8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { +void CrealityDWIN::modifyValue(int8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; - Setup_Value((float)value, min, max, unit, 5); + setupValue((float)value, min, max, unit, 5); } -void CrealityDWINClass::Modify_Option(const uint8_t value, const char * const * options, const uint8_t max) { +void CrealityDWIN::modifyOption(const uint8_t value, const char * const * options, const uint8_t max) { tempvalue = value; valuepointer = const_cast(options); valuemin = 0; valuemax = max; process = Option; - EncoderRate.enabled = true; - Draw_Option(value, options, selection - scrollpos, true); + encoderRate.enabled = true; + drawOption(value, options, selection - scrollpos, true); } /* Main Functions */ -void CrealityDWINClass::Update_Status(const char * const text) { +void CrealityDWIN::updateStatus(const char * const text) { if (strncmp_P(text, PSTR(""), 3) == 0) { for (uint8_t i = 0; i < _MIN((size_t)LONG_FILENAME_LENGTH, strlen(text)); ++i) filename[i] = text[i + 3]; filename[_MIN((size_t)LONG_FILENAME_LENGTH - 1, strlen(text))] = '\0'; - Draw_Print_Filename(true); + drawPrintFilename(true); } else { for (uint8_t i = 0; i < _MIN((size_t)64, strlen(text)); ++i) statusmsg[i] = text[i]; @@ -4666,7 +4662,7 @@ void CrealityDWINClass::Update_Status(const char * const text) { } } -void CrealityDWINClass::Start_Print(const bool sd) { +void CrealityDWIN::startPrint(const bool sd) { sdprint = sd; if (!printing) { printing = true; @@ -4685,59 +4681,59 @@ void CrealityDWINClass::Start_Print(const bool sd) { strcpy_P(filename, PSTR("Host Print")); TERN_(SET_PROGRESS_PERCENT, ui.set_progress(0)); TERN_(SET_REMAINING_TIME, ui.set_remaining_time(0)); - Draw_Print_Screen(); + drawPrintScreen(); } } -void CrealityDWINClass::Stop_Print() { +void CrealityDWIN::stopPrint() { printing = false; sdprint = false; thermalManager.cooldown(); TERN_(SET_PROGRESS_PERCENT, ui.set_progress(100 * (PROGRESS_SCALE))); TERN_(SET_REMAINING_TIME, ui.set_remaining_time(0)); - Draw_Print_confirm(); + drawPrintConfirm(); } -void CrealityDWINClass::Update() { - State_Update(); - Screen_Update(); +void CrealityDWIN::update() { + stateUpdate(); + screenUpdate(); switch (process) { - case Main: Main_Menu_Control(); break; - case Menu: Menu_Control(); break; - case Value: Value_Control(); break; - case Option: Option_Control(); break; - case File: File_Control(); break; - case Print: Print_Screen_Control(); break; - case Popup: Popup_Control(); break; - case Confirm: Confirm_Control(); break; + case Main: mainMenuControl(); break; + case Menu: menuControl(); break; + case Value: valueControl(); break; + case Option: optionControl(); break; + case File: fileControl(); break; + case Print: printScreenControl(); break; + case Popup: popupControl(); break; + case Confirm: confirmControl(); break; } } -void MarlinUI::update() { CrealityDWIN.Update(); } +void MarlinUI::update() { crealityDWIN.update(); } #if HAS_LCD_BRIGHTNESS - void MarlinUI::_set_brightness() { DWIN_LCD_Brightness(backlight ? brightness : 0); } + void MarlinUI::_set_brightness() { dwinLCDBrightness(backlight ? brightness : 0); } #endif -void CrealityDWINClass::State_Update() { +void CrealityDWIN::stateUpdate() { if ((print_job_timer.isRunning() || print_job_timer.isPaused()) != printing) { - if (!printing) Start_Print(card.isFileOpen() || TERN0(POWER_LOSS_RECOVERY, recovery.valid())); - else Stop_Print(); + if (!printing) startPrint(card.isFileOpen() || TERN0(POWER_LOSS_RECOVERY, recovery.valid())); + else stopPrint(); } if (print_job_timer.isPaused() != paused) { paused = print_job_timer.isPaused(); - if (process == Print) Print_Screen_Icons(); - if (process == Wait && !paused) Redraw_Menu(true, true); + if (process == Print) printScreenIcons(); + if (process == Wait && !paused) redrawMenu(true, true); } if (wait_for_user && !(process == Confirm) && !print_job_timer.isPaused()) - Confirm_Handler(UserInput); + confirmHandler(UserInput); #if ENABLED(ADVANCED_PAUSE_FEATURE) if (process == Popup && popup == PurgeMore) { if (pause_menu_response == PAUSE_RESPONSE_EXTRUDE_MORE) - Popup_Handler(FilChange); + popupHandler(FilChange); else if (pause_menu_response == PAUSE_RESPONSE_RESUME_PRINT) { - if (printing) Popup_Handler(Resuming); - else Redraw_Menu(true, true, active_menu == PreheatHotend); + if (printing) popupHandler(Resuming); + else redrawMenu(true, true, active_menu == PreheatHotend); } } #endif @@ -4745,33 +4741,33 @@ void CrealityDWINClass::State_Update() { static bool ranout = false; if (runout.filament_ran_out != ranout) { ranout = runout.filament_ran_out; - if (ranout) Popup_Handler(Runout); + if (ranout) popupHandler(Runout); } #endif } -void CrealityDWINClass::Screen_Update() { +void CrealityDWIN::screenUpdate() { const millis_t ms = millis(); static millis_t scrltime = 0; if (ELAPSED(ms, scrltime)) { scrltime = ms + 200; - Update_Status_Bar(); - if (process == Print) Draw_Print_Filename(); + updateStatusBar(); + if (process == Print) drawPrintFilename(); } static millis_t statustime = 0; if (ELAPSED(ms, statustime)) { statustime = ms + 500; - Draw_Status_Area(); + drawStatusArea(); } static millis_t printtime = 0; if (ELAPSED(ms, printtime)) { printtime = ms + 1000; if (process == Print) { - Draw_Print_ProgressBar(); - Draw_Print_ProgressElapsed(); - TERN_(SET_REMAINING_TIME, Draw_Print_ProgressRemain()); + drawPrintProgressBar(); + drawPrintProgressElapsed(); + TERN_(SET_REMAINING_TIME, drawPrintProgressRemain()); } } @@ -4779,7 +4775,7 @@ void CrealityDWINClass::Screen_Update() { if (mounted != card.isMounted()) { mounted = card.isMounted(); if (process == File) - Draw_SD_List(); + drawSDList(); } #if HAS_HOTEND @@ -4820,7 +4816,7 @@ void CrealityDWINClass::Screen_Update() { hotendtarget = thermalManager.temp_hotend[0].target; if (scrollpos <= TEMP_HOTEND && TEMP_HOTEND <= scrollpos + MROWS) { if (process != Value || selection != TEMP_HOTEND - scrollpos) - Draw_Float(thermalManager.temp_hotend[0].target, TEMP_HOTEND - scrollpos, false, 1); + drawFloat(thermalManager.temp_hotend[0].target, TEMP_HOTEND - scrollpos, false, 1); } } #endif @@ -4829,7 +4825,7 @@ void CrealityDWINClass::Screen_Update() { bedtarget = thermalManager.temp_bed.target; if (scrollpos <= TEMP_BED && TEMP_BED <= scrollpos + MROWS) { if (process != Value || selection != TEMP_HOTEND - scrollpos) - Draw_Float(thermalManager.temp_bed.target, TEMP_BED - scrollpos, false, 1); + drawFloat(thermalManager.temp_bed.target, TEMP_BED - scrollpos, false, 1); } } #endif @@ -4838,7 +4834,7 @@ void CrealityDWINClass::Screen_Update() { fanspeed = thermalManager.fan_speed[0]; if (scrollpos <= TEMP_FAN && TEMP_FAN <= scrollpos + MROWS) { if (process != Value || selection != TEMP_HOTEND - scrollpos) - Draw_Float(thermalManager.fan_speed[0], TEMP_FAN - scrollpos, false, 1); + drawFloat(thermalManager.fan_speed[0], TEMP_FAN - scrollpos, false, 1); } } #endif @@ -4849,7 +4845,7 @@ void CrealityDWINClass::Screen_Update() { hotendtarget = thermalManager.temp_hotend[0].target; if (scrollpos <= TUNE_HOTEND && TUNE_HOTEND <= scrollpos + MROWS) { if (process != Value || selection != TEMP_HOTEND - scrollpos) - Draw_Float(thermalManager.temp_hotend[0].target, TUNE_HOTEND - scrollpos, false, 1); + drawFloat(thermalManager.temp_hotend[0].target, TUNE_HOTEND - scrollpos, false, 1); } } #endif @@ -4858,7 +4854,7 @@ void CrealityDWINClass::Screen_Update() { bedtarget = thermalManager.temp_bed.target; if (scrollpos <= TUNE_BED && TUNE_BED <= scrollpos + MROWS) { if (process != Value || selection != TEMP_HOTEND - scrollpos) - Draw_Float(thermalManager.temp_bed.target, TUNE_BED - scrollpos, false, 1); + drawFloat(thermalManager.temp_bed.target, TUNE_BED - scrollpos, false, 1); } } #endif @@ -4867,7 +4863,7 @@ void CrealityDWINClass::Screen_Update() { fanspeed = thermalManager.fan_speed[0]; if (scrollpos <= TUNE_FAN && TUNE_FAN <= scrollpos + MROWS) { if (process != Value || selection != TEMP_HOTEND - scrollpos) - Draw_Float(thermalManager.fan_speed[0], TUNE_FAN - scrollpos, false, 1); + drawFloat(thermalManager.fan_speed[0], TUNE_FAN - scrollpos, false, 1); } } #endif @@ -4876,25 +4872,25 @@ void CrealityDWINClass::Screen_Update() { } } -void CrealityDWINClass::AudioFeedback(const bool success/*=true*/) { +void CrealityDWIN::audioFeedback(const bool success/*=true*/) { if (ui.sound_on) DONE_BUZZ(success); else - Update_Status(success ? "Success" : "Failed"); + updateStatus(success ? "Success" : "Failed"); } -void CrealityDWINClass::Save_Settings(char * const buff) { +void CrealityDWIN::saveSettings(char * const buff) { TERN_(AUTO_BED_LEVELING_UBL, eeprom_settings.tilt_grid_size = mesh_conf.tilt_grid - 1); eeprom_settings.corner_pos = corner_pos * 10; memcpy(buff, &eeprom_settings, _MIN(sizeof(eeprom_settings), eeprom_data_size)); } -void CrealityDWINClass::Load_Settings(const char * const buff) { +void CrealityDWIN::loadSettings(const char * const buff) { memcpy(&eeprom_settings, buff, _MIN(sizeof(eeprom_settings), eeprom_data_size)); TERN_(AUTO_BED_LEVELING_UBL, mesh_conf.tilt_grid = eeprom_settings.tilt_grid_size + 1); if (eeprom_settings.corner_pos == 0) eeprom_settings.corner_pos = 325; corner_pos = eeprom_settings.corner_pos / 10.0f; - Redraw_Screen(); + redrawScreen(); #if ENABLED(POWER_LOSS_RECOVERY) static bool init = true; if (init) { @@ -4904,7 +4900,7 @@ void CrealityDWINClass::Load_Settings(const char * const buff) { #endif } -void CrealityDWINClass::Reset_Settings() { +void CrealityDWIN::resetSettings() { eeprom_settings.time_format_textual = false; TERN_(AUTO_BED_LEVELING_UBL, eeprom_settings.tilt_grid_size = 0); eeprom_settings.corner_pos = 325; @@ -4922,36 +4918,36 @@ void CrealityDWINClass::Reset_Settings() { TERN_(AUTO_BED_LEVELING_UBL, mesh_conf.tilt_grid = eeprom_settings.tilt_grid_size + 1); corner_pos = eeprom_settings.corner_pos / 10.0f; TERN_(SOUND_MENU_ITEM, ui.sound_on = ENABLED(SOUND_ON_DEFAULT)); - Redraw_Screen(); + redrawScreen(); } void MarlinUI::init_lcd() { delay(800); SERIAL_ECHOPGM("\nDWIN handshake "); - if (DWIN_Handshake()) SERIAL_ECHOLNPGM("ok."); else SERIAL_ECHOLNPGM("error."); - DWIN_Frame_SetDir(1); // Orientation 90° - DWIN_UpdateLCD(); // Show bootscreen (first image) - Encoder_Configuration(); + if (dwinHandshake()) SERIAL_ECHOLNPGM("ok."); else SERIAL_ECHOLNPGM("error."); + dwinFrameSetDir(1); // Orientation 90° + dwinUpdateLCD(); // Show bootscreen (first image) + encoderConfiguration(); for (uint16_t t = 0; t <= 100; t += 2) { - DWIN_ICON_Show(ICON, ICON_Bar, 15, 260); - DWIN_Draw_Rectangle(1, Color_Bg_Black, 15 + t * 242 / 100, 260, 257, 280); - DWIN_UpdateLCD(); + dwinIconShow(ICON, ICON_Bar, 15, 260); + dwinDrawRectangle(1, Color_Bg_Black, 15 + t * 242 / 100, 260, 257, 280); + dwinUpdateLCD(); delay(20); } - DWIN_JPG_ShowAndCache(3); - DWIN_JPG_CacheTo1(Language_English); - CrealityDWIN.Redraw_Screen(); + dwinJPGShowAndCache(3); + dwinJPGCacheTo1(Language_English); + crealityDWIN.redrawScreen(); } #if ENABLED(ADVANCED_PAUSE_FEATURE) void MarlinUI::pause_show_message(const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, const uint8_t extruder/*=active_extruder*/) { switch (message) { - case PAUSE_MESSAGE_INSERT: CrealityDWIN.Confirm_Handler(FilInsert); break; + case PAUSE_MESSAGE_INSERT: crealityDWIN.confirmHandler(FilInsert); break; case PAUSE_MESSAGE_PURGE: - case PAUSE_MESSAGE_OPTION: CrealityDWIN.Popup_Handler(PurgeMore); break; - case PAUSE_MESSAGE_HEAT: CrealityDWIN.Confirm_Handler(HeaterTime); break; - case PAUSE_MESSAGE_WAITING: CrealityDWIN.Draw_Print_Screen(); break; + case PAUSE_MESSAGE_OPTION: crealityDWIN.popupHandler(PurgeMore); break; + case PAUSE_MESSAGE_HEAT: crealityDWIN.confirmHandler(HeaterTime); break; + case PAUSE_MESSAGE_WAITING: crealityDWIN.drawPrintScreen(); break; default: break; } } diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.h b/Marlin/src/lcd/e3v2/jyersui/dwin.h index 2f5369d4a6..450345d1a2 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.h +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.h @@ -148,7 +148,7 @@ enum colorID : uint8_t { #define Confirm_Color 0x34B9 #define Cancel_Color 0x3186 -class CrealityDWINClass { +class CrealityDWIN { public: static constexpr size_t eeprom_data_size = 48; static struct EEPROM_Settings { // use bit fields to save space, max 48 bytes @@ -173,76 +173,76 @@ public: static constexpr const char * const color_names[11] = { "Default", "White", "Green", "Cyan", "Blue", "Magenta", "Red", "Orange", "Yellow", "Brown", "Black" }; static constexpr const char * const preheat_modes[3] = { "Both", "Hotend", "Bed" }; - static void Clear_Screen(const uint8_t e=3); - static void Draw_Float(const_float_t value, const uint8_t row, const bool selected=false, const uint8_t minunit=10); - static void Draw_Option(const uint8_t value, const char * const * options, const uint8_t row, const bool selected=false, const bool color=false); - static uint16_t GetColor(const uint8_t color, const uint16_t original, const bool light=false); - static void Draw_Checkbox(const uint8_t row, const bool value); - static void Draw_Title(const char * const title); - static void Draw_Title(FSTR_P const title); - static void Draw_Menu_Item(const uint8_t row, uint8_t icon=0, const char * const label1=nullptr, const char * const label2=nullptr, const bool more=false, const bool centered=false); - static void Draw_Menu_Item(const uint8_t row, uint8_t icon=0, FSTR_P const flabel1=nullptr, FSTR_P const flabel2=nullptr, const bool more=false, const bool centered=false); - static void Draw_Menu(const uint8_t menu, const uint8_t select=0, const uint8_t scroll=0); - static void Redraw_Menu(const bool lastproc=true, const bool lastsel=false, const bool lastmenu=false); - static void Redraw_Screen(); + static void clearScreen(const uint8_t e=3); + static void drawFloat(const_float_t value, const uint8_t row, const bool selected=false, const uint8_t minunit=10); + static void drawOption(const uint8_t value, const char * const * options, const uint8_t row, const bool selected=false, const bool color=false); + static uint16_t getColor(const uint8_t color, const uint16_t original, const bool light=false); + static void drawCheckbox(const uint8_t row, const bool value); + static void drawTitle(const char * const title); + static void drawTitle(FSTR_P const title); + static void drawMenuItem(const uint8_t row, uint8_t icon=0, const char * const label1=nullptr, const char * const label2=nullptr, const bool more=false, const bool centered=false); + static void drawMenuItem(const uint8_t row, uint8_t icon=0, FSTR_P const flabel1=nullptr, FSTR_P const flabel2=nullptr, const bool more=false, const bool centered=false); + static void drawMenu(const uint8_t menu, const uint8_t select=0, const uint8_t scroll=0); + static void redrawMenu(const bool lastproc=true, const bool lastsel=false, const bool lastmenu=false); + static void redrawScreen(); - static void Main_Menu_Icons(); - static void Draw_Main_Menu(uint8_t select=0); - static void Print_Screen_Icons(); - static void Draw_Print_Screen(); - static void Draw_Print_Filename(const bool reset=false); - static void Draw_Print_ProgressBar(); + static void mainMenuIcons(); + static void drawMainMenu(uint8_t select=0); + static void printScreenIcons(); + static void drawPrintScreen(); + static void drawPrintFilename(const bool reset=false); + static void drawPrintProgressBar(); #if ENABLED(SET_REMAINING_TIME) - static void Draw_Print_ProgressRemain(); + static void drawPrintProgressRemain(); #endif - static void Draw_Print_ProgressElapsed(); - static void Draw_Print_confirm(); - static void Draw_SD_Item(const uint8_t item, const uint8_t row); - static void Draw_SD_List(const bool removed=false); - static void Draw_Status_Area(const bool icons=false); - static void Draw_Popup(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, uint8_t mode, uint8_t icon=0); - static void Popup_Select(); - static void Update_Status_Bar(const bool refresh=false); + static void drawPrintProgressElapsed(); + static void drawPrintConfirm(); + static void drawSDItem(const uint8_t item, const uint8_t row); + static void drawSDList(const bool removed=false); + static void drawStatusArea(const bool icons=false); + static void drawPopup(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, uint8_t mode, uint8_t icon=0); + static void popupSelect(); + static void updateStatusBar(const bool refresh=false); #if HAS_MESH - static void Set_Mesh_Viewer_Status(); + static void setMeshViewerStatus(); #endif - static FSTR_P Get_Menu_Title(const uint8_t menu); - static uint8_t Get_Menu_Size(const uint8_t menu); - static void Menu_Item_Handler(const uint8_t menu, const uint8_t item, bool draw=true); + static FSTR_P getMenuTitle(const uint8_t menu); + static uint8_t getMenuSize(const uint8_t menu); + static void menuItemHandler(const uint8_t menu, const uint8_t item, bool draw=true); - static void Popup_Handler(const PopupID popupid, bool option=false); - static void Confirm_Handler(const PopupID popupid); + static void popupHandler(const PopupID popupid, bool option=false); + static void confirmHandler(const PopupID popupid); - static void Main_Menu_Control(); - static void Menu_Control(); - static void Value_Control(); - static void Option_Control(); - static void File_Control(); - static void Print_Screen_Control(); - static void Popup_Control(); - static void Confirm_Control(); + static void mainMenuControl(); + static void menuControl(); + static void valueControl(); + static void optionControl(); + static void fileControl(); + static void printScreenControl(); + static void popupControl(); + static void confirmControl(); - static void Setup_Value(const_float_t value, const_float_t min, const_float_t max, const_float_t unit, const uint8_t type); - static void Modify_Value(float &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); - static void Modify_Value(uint8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); - static void Modify_Value(uint16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); - static void Modify_Value(int16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); - static void Modify_Value(uint32_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); - static void Modify_Value(int8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); - static void Modify_Option(const uint8_t value, const char * const * options, const uint8_t max); + static void setupValue(const_float_t value, const_float_t min, const_float_t max, const_float_t unit, const uint8_t type); + static void modifyValue(float &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); + static void modifyValue(uint8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); + static void modifyValue(uint16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); + static void modifyValue(int16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); + static void modifyValue(uint32_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); + static void modifyValue(int8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()=nullptr); + static void modifyOption(const uint8_t value, const char * const * options, const uint8_t max); - static void Update_Status(const char * const text); - static void Start_Print(const bool sd); - static void Stop_Print(); - static void Update(); - static void State_Update(); - static void Screen_Update(); - static void AudioFeedback(const bool success=true); - static void Save_Settings(char * const buff); - static void Load_Settings(const char * const buff); - static void Reset_Settings(); + static void updateStatus(const char * const text); + static void startPrint(const bool sd); + static void stopPrint(); + static void update(); + static void stateUpdate(); + static void screenUpdate(); + static void audioFeedback(const bool success=true); + static void saveSettings(char * const buff); + static void loadSettings(const char * const buff); + static void resetSettings(); }; -extern CrealityDWINClass CrealityDWIN; +extern CrealityDWIN crealityDWIN; diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin_lcd.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin_lcd.cpp index 04889e92b0..96518b8c21 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin_lcd.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin_lcd.cpp @@ -33,22 +33,22 @@ /*-------------------------------------- System variable function --------------------------------------*/ -void DWIN_Startup() {} +void dwinStartup() {} /*---------------------------------------- Drawing functions ----------------------------------------*/ // Draw the degree (°) symbol -// Color: color +// color: color // x/y: Upper-left coordinate of the first pixel -void DWIN_Draw_DegreeSymbol(uint16_t Color, uint16_t x, uint16_t y) { - DWIN_Draw_Point(Color, 1, 1, x + 1, y); - DWIN_Draw_Point(Color, 1, 1, x + 2, y); - DWIN_Draw_Point(Color, 1, 1, x, y + 1); - DWIN_Draw_Point(Color, 1, 1, x + 3, y + 1); - DWIN_Draw_Point(Color, 1, 1, x, y + 2); - DWIN_Draw_Point(Color, 1, 1, x + 3, y + 2); - DWIN_Draw_Point(Color, 1, 1, x + 1, y + 3); - DWIN_Draw_Point(Color, 1, 1, x + 2, y + 3); +void dwinDrawDegreeSymbol(uint16_t color, uint16_t x, uint16_t y) { + dwinDrawPoint(color, 1, 1, x + 1, y); + dwinDrawPoint(color, 1, 1, x + 2, y); + dwinDrawPoint(color, 1, 1, x, y + 1); + dwinDrawPoint(color, 1, 1, x + 3, y + 1); + dwinDrawPoint(color, 1, 1, x, y + 2); + dwinDrawPoint(color, 1, 1, x + 3, y + 2); + dwinDrawPoint(color, 1, 1, x + 1, y + 3); + dwinDrawPoint(color, 1, 1, x + 2, y + 3); } /*---------------------------------------- Picture related functions ----------------------------------------*/ @@ -57,8 +57,8 @@ void DWIN_Draw_DegreeSymbol(uint16_t Color, uint16_t x, uint16_t y) { // libID: Icon library ID // picID: Icon ID // x/y: Upper-left point -void DWIN_ICON_Show(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) { - DWIN_ICON_Show(true, false, false, libID, picID, x, y); +void dwinIconShow(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) { + dwinIconShow(true, false, false, libID, picID, x, y); } #endif // DWIN_CREALITY_LCD_JYERSUI diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin_lcd.h b/Marlin/src/lcd/e3v2/jyersui/dwin_lcd.h index f76cfb5d3e..a9335a4f23 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin_lcd.h +++ b/Marlin/src/lcd/e3v2/jyersui/dwin_lcd.h @@ -29,6 +29,6 @@ #include "../common/dwin_api.h" // Draw the degree (°) symbol -// Color: color +// color: color // x/y: Upper-left coordinate of the first pixel -void DWIN_Draw_DegreeSymbol(uint16_t Color, uint16_t x, uint16_t y); +void dwinDrawDegreeSymbol(uint16_t color, uint16_t x, uint16_t y); diff --git a/Marlin/src/lcd/e3v2/marlinui/dwin_lcd.cpp b/Marlin/src/lcd/e3v2/marlinui/dwin_lcd.cpp index 7154270bff..b6c26d4fe1 100644 --- a/Marlin/src/lcd/e3v2/marlinui/dwin_lcd.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/dwin_lcd.cpp @@ -39,15 +39,15 @@ /*-------------------------------------- System variable function --------------------------------------*/ -void DWIN_Startup() { +void dwinStartup() { DEBUG_ECHOPGM("\r\nDWIN handshake "); delay(750); // Delay here or init later in the boot process - const bool success = DWIN_Handshake(); + const bool success = dwinHandshake(); if (success) DEBUG_ECHOLNPGM("ok."); else DEBUG_ECHOLNPGM("error."); - DWIN_Frame_SetDir(TERN(DWIN_MARLINUI_LANDSCAPE, 0, 1)); - DWIN_Frame_Clear(Color_Bg_Black); // MarlinUI handles the bootscreen so just clear here - DWIN_JPG_ShowAndCache(3); - DWIN_UpdateLCD(); + dwinFrameSetDir(TERN(DWIN_MARLINUI_LANDSCAPE, 0, 1)); + dwinFrameClear(Color_Bg_Black); // MarlinUI handles the bootscreen so just clear here + dwinJPGShowAndCache(3); + dwinUpdateLCD(); } /*---------------------------------------- Picture related functions ----------------------------------------*/ @@ -56,8 +56,8 @@ void DWIN_Startup() { // libID: Icon library ID // picID: Icon ID // x/y: Upper-left point -void DWIN_ICON_Show(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) { - DWIN_ICON_Show(true, false, false, libID, picID, x, y); +void dwinIconShow(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) { + dwinIconShow(true, false, false, libID, picID, x, y); } #endif // IS_DWIN_MARLINUI diff --git a/Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp b/Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp index 10a478f756..7830d5a37c 100644 --- a/Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp @@ -133,7 +133,7 @@ void DWIN_String::add_character(const char character) { if (length < MAX_STRING_LENGTH) { data[length] = character; length++; - //span += glyph(character)->DWidth; + //span += glyph(character)->dWidth; } } @@ -141,7 +141,7 @@ void DWIN_String::rtrim(const char character) { while (length) { if (data[length - 1] == 0x20 || data[length - 1] == character) { length--; - //span -= glyph(data[length])->DWidth; + //span -= glyph(data[length])->dWidth; eol(); } else @@ -152,7 +152,7 @@ void DWIN_String::rtrim(const char character) { void DWIN_String::ltrim(const char character) { uint16_t i, j; for (i = 0; (i < length) && (data[i] == 0x20 || data[i] == character); i++) { - //span -= glyph(data[i])->DWidth; + //span -= glyph(data[i])->dWidth; } if (i == 0) return; for (j = 0; i < length; data[j++] = data[i++]); diff --git a/Marlin/src/lcd/e3v2/marlinui/dwin_string.h b/Marlin/src/lcd/e3v2/marlinui/dwin_string.h index 4224b26458..5d38131014 100644 --- a/Marlin/src/lcd/e3v2/marlinui/dwin_string.h +++ b/Marlin/src/lcd/e3v2/marlinui/dwin_string.h @@ -55,7 +55,7 @@ class DWIN_String { //static void add_glyphs(const uint8_t *font); //static font_t *font() { return font_header; }; - //static uint16_t font_height() { return font_header->FontAscent - font_header->FontDescent; } + //static uint16_t font_height() { return font_header->fontAscent - font_header->fontDescent; } //static glyph_t *glyph(uint8_t character) { return glyphs[character] ?: glyphs[0x3F]; } /* Use '?' for unknown glyphs */ //static glyph_t *glyph(uint8_t *character) { return glyph(*character); } diff --git a/Marlin/src/lcd/e3v2/marlinui/lcdprint_dwin.cpp b/Marlin/src/lcd/e3v2/marlinui/lcdprint_dwin.cpp index e603882e0c..f689a6ff69 100644 --- a/Marlin/src/lcd/e3v2/marlinui/lcdprint_dwin.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/lcdprint_dwin.cpp @@ -56,7 +56,7 @@ void lcd_put_int(const int i) { } int lcd_put_dwin_string() { - DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, dwin_string.string()); + dwinDrawString(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, dwin_string.string()); lcd_advance_cursor(dwin_string.length); return dwin_string.length; } @@ -67,7 +67,7 @@ int lcd_put_lchar_max(const lchar_t &c, const pixel_len_t max_length) { dwin_string.set(c); dwin_string.truncate(max_length); // Draw the char(s) at the cursor and advance the cursor - DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, dwin_string.string()); + dwinDrawString(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, dwin_string.string()); lcd_advance_cursor(dwin_string.length); return dwin_string.length; } @@ -92,7 +92,7 @@ static int lcd_put_u8str_max_cb(const char * utf8_str, read_byte_cb_t cb_read_by if (!wc) break; dwin_string.add(wc); } - DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, dwin_string.string()); + dwinDrawString(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, dwin_string.string()); lcd_advance_cursor(dwin_string.length); return dwin_string.length; } @@ -108,7 +108,7 @@ int lcd_put_u8str_max_P(PGM_P utf8_pstr, const pixel_len_t max_length) { lcd_uint_t lcd_put_u8str_P(PGM_P const ptpl, const int8_t ind, const char * const cstr/*=nullptr*/, FSTR_P const fstr/*=nullptr*/, const lcd_uint_t maxlen/*=LCD_WIDTH*/) { dwin_string.set(ptpl, ind, cstr, fstr); dwin_string.truncate(maxlen); - DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, dwin_string.string()); + dwinDrawString(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, dwin_string.string()); lcd_advance_cursor(dwin_string.length); return dwin_string.length; } diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp index 5d6e238fe1..817699fd8a 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp @@ -78,14 +78,14 @@ void MarlinUI::set_font(const uint8_t font_nr) { bool MarlinUI::detected() { return true; } // Initialize or re-initialize the LCD -void MarlinUI::init_lcd() { DWIN_Startup(); } +void MarlinUI::init_lcd() { dwinStartup(); } // This LCD should clear where it will draw anew void MarlinUI::clear_lcd() { - DWIN_ICON_AnimationControl(0x0000); // disable all icon animations - DWIN_JPG_ShowAndCache(3); - DWIN_Frame_Clear(Color_Bg_Black); - DWIN_UpdateLCD(); + dwinIconAnimationControl(0x0000); // disable all icon animations + dwinJPGShowAndCache(3); + dwinFrameClear(Color_Bg_Black); + dwinUpdateLCD(); did_first_redraw = false; } @@ -109,25 +109,25 @@ void MarlinUI::clear_lcd() { #define VERSION_Y 84 #endif - DWIN_Draw_String(false, font10x20, Color_Yellow, Color_Bg_Black, INFO_CENTER - (dwin_string.length * 10) / 2, VERSION_Y, S(dwin_string.string())); + dwinDrawString(false, font10x20, Color_Yellow, Color_Bg_Black, INFO_CENTER - (dwin_string.length * 10) / 2, VERSION_Y, S(dwin_string.string())); TERN_(SHOW_CUSTOM_BOOTSCREEN, safe_delay(CUSTOM_BOOTSCREEN_TIMEOUT)); clear_lcd(); - DWIN_ICON_Show(BOOT_ICON, ICON_MarlinBoot, LOGO_CENTER - 266 / 2, 15); + dwinIconShow(BOOT_ICON, ICON_MarlinBoot, LOGO_CENTER - 266 / 2, 15); #if ENABLED(DWIN_MARLINUI_PORTRAIT) - DWIN_ICON_Show(BOOT_ICON, ICON_OpenSource, LOGO_CENTER - 174 / 2, 280); - DWIN_ICON_Show(BOOT_ICON, ICON_GitHubURL, LOGO_CENTER - 180 / 2, 420); - DWIN_ICON_Show(BOOT_ICON, ICON_MarlinURL, LOGO_CENTER - 100 / 2, 440); - DWIN_ICON_Show(BOOT_ICON, ICON_Copyright, LOGO_CENTER - 126 / 2, 460); + dwinIconShow(BOOT_ICON, ICON_OpenSource, LOGO_CENTER - 174 / 2, 280); + dwinIconShow(BOOT_ICON, ICON_GitHubURL, LOGO_CENTER - 180 / 2, 420); + dwinIconShow(BOOT_ICON, ICON_MarlinURL, LOGO_CENTER - 100 / 2, 440); + dwinIconShow(BOOT_ICON, ICON_Copyright, LOGO_CENTER - 126 / 2, 460); #else - DWIN_ICON_Show(BOOT_ICON, ICON_MarlinBoot, LOGO_CENTER - 266 / 2, 15); - DWIN_ICON_Show(BOOT_ICON, ICON_OpenSource, INFO_CENTER - 174 / 2, 60); - DWIN_ICON_Show(BOOT_ICON, ICON_GitHubURL, INFO_CENTER - 180 / 2, 130); - DWIN_ICON_Show(BOOT_ICON, ICON_MarlinURL, INFO_CENTER - 100 / 2, 152); - DWIN_ICON_Show(BOOT_ICON, ICON_Copyright, INFO_CENTER - 126 / 2, 200); + dwinIconShow(BOOT_ICON, ICON_MarlinBoot, LOGO_CENTER - 266 / 2, 15); + dwinIconShow(BOOT_ICON, ICON_OpenSource, INFO_CENTER - 174 / 2, 60); + dwinIconShow(BOOT_ICON, ICON_GitHubURL, INFO_CENTER - 180 / 2, 130); + dwinIconShow(BOOT_ICON, ICON_MarlinURL, INFO_CENTER - 100 / 2, 152); + dwinIconShow(BOOT_ICON, ICON_Copyright, INFO_CENTER - 126 / 2, 200); #endif - DWIN_Draw_String(false, font10x20, Color_Yellow, Color_Bg_Black, INFO_CENTER - (dwin_string.length * 10) / 2, VERSION_Y, S(dwin_string.string())); - DWIN_UpdateLCD(); + dwinDrawString(false, font10x20, Color_Yellow, Color_Bg_Black, INFO_CENTER - (dwin_string.length * 10) / 2, VERSION_Y, S(dwin_string.string())); + dwinUpdateLCD(); } void MarlinUI::bootscreen_completion(const millis_t sofar) { @@ -140,23 +140,23 @@ void MarlinUI::clear_lcd() { // The kill screen is displayed for unrecoverable conditions void MarlinUI::draw_kill_screen() { set_font(DWIN_FONT_ALERT); - DWIN_Frame_Clear(Color_Bg_Black); + dwinFrameClear(Color_Bg_Black); dwin_font.fg = Color_Error_Red; dwin_font.solid = false; - DWIN_Draw_Rectangle(1, Color_Bg_Window, 20, 20, LCD_PIXEL_WIDTH - 20, LCD_PIXEL_HEIGHT - 20); + dwinDrawRectangle(1, Color_Bg_Window, 20, 20, LCD_PIXEL_WIDTH - 20, LCD_PIXEL_HEIGHT - 20); // make the frame a few pixels thick - DWIN_Draw_Rectangle(0, Color_Yellow, 20, 20, LCD_PIXEL_WIDTH - 20, LCD_PIXEL_HEIGHT - 20); - DWIN_Draw_Rectangle(0, Color_Yellow, 21, 21, LCD_PIXEL_WIDTH - 21, LCD_PIXEL_HEIGHT - 21); - DWIN_Draw_Rectangle(0, Color_Yellow, 22, 22, LCD_PIXEL_WIDTH - 22, LCD_PIXEL_HEIGHT - 22); + dwinDrawRectangle(0, Color_Yellow, 20, 20, LCD_PIXEL_WIDTH - 20, LCD_PIXEL_HEIGHT - 20); + dwinDrawRectangle(0, Color_Yellow, 21, 21, LCD_PIXEL_WIDTH - 21, LCD_PIXEL_HEIGHT - 21); + dwinDrawRectangle(0, Color_Yellow, 22, 22, LCD_PIXEL_WIDTH - 22, LCD_PIXEL_HEIGHT - 22); uint8_t cx = (LCD_PIXEL_WIDTH / dwin_font.width / 2), cy = (LCD_PIXEL_HEIGHT / dwin_font.height / 2); #if ENABLED(DWIN_MARLINUI_LANDSCAPE) cx += (96 / 2 / dwin_font.width); - DWIN_ICON_Show(ICON, ICON_Halted, 40, (LCD_PIXEL_HEIGHT - 96) / 2); + dwinIconShow(ICON, ICON_Halted, 40, (LCD_PIXEL_HEIGHT - 96) / 2); #else - DWIN_ICON_Show(ICON, ICON_Halted, (LCD_PIXEL_WIDTH - 96) / 2, 40); + dwinIconShow(ICON, ICON_Halted, (LCD_PIXEL_WIDTH - 96) / 2, 40); #endif uint8_t slen = utf8_strlen(status_message); @@ -260,7 +260,7 @@ void MarlinUI::draw_status_message(const bool blink) { } #if HAS_LCD_BRIGHTNESS - void MarlinUI::_set_brightness() { DWIN_LCD_Brightness(backlight ? brightness : 0); } + void MarlinUI::_set_brightness() { dwinLCDBrightness(backlight ? brightness : 0); } #endif #if HAS_MARLINUI_MENU @@ -295,13 +295,13 @@ void MarlinUI::draw_status_message(const bool blink) { if (y >= LCD_PIXEL_HEIGHT) return false; if (is_static && sel) - DWIN_Draw_Box(1, Color_Bg_Heading, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); + dwinDrawBox(1, Color_Bg_Heading, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); else { #if ENABLED(MENU_HOLLOW_FRAME) - DWIN_Draw_Box(1, Color_Bg_Black, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); - if (sel) DWIN_Draw_Box(0, Select_Color, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); + dwinDrawBox(1, Color_Bg_Black, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); + if (sel) dwinDrawBox(0, Select_Color, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); #else - DWIN_Draw_Box(1, sel ? Select_Color : Color_Bg_Black, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); + dwinDrawBox(1, sel ? Select_Color : Color_Bg_Black, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); #endif } @@ -425,7 +425,7 @@ void MarlinUI::draw_status_message(const bool blink) { dwin_string.set(value); const dwin_coord_t by = (row * MENU_LINE_HEIGHT) + MENU_FONT_HEIGHT + EXTRA_ROW_HEIGHT / 2; - DWIN_Draw_String(true, font16x32, Color_Yellow, Color_Bg_Black, (LCD_PIXEL_WIDTH - vallen * 16) / 2, by, S(dwin_string.string())); + dwinDrawString(true, font16x32, Color_Yellow, Color_Bg_Black, (LCD_PIXEL_WIDTH - vallen * 16) / 2, by, S(dwin_string.string())); if (ui.can_show_slider()) { @@ -435,11 +435,11 @@ void MarlinUI::draw_status_message(const bool blink) { slider_y = by + 32 + 4, amount = ui.encoderPosition * slider_length / maxEditValue; - DWIN_Draw_Rectangle(1, Color_Bg_Window, slider_x - 1, slider_y - 1, slider_x - 1 + slider_length + 2 - 1, slider_y - 1 + slider_height + 2 - 1); + dwinDrawRectangle(1, Color_Bg_Window, slider_x - 1, slider_y - 1, slider_x - 1 + slider_length + 2 - 1, slider_y - 1 + slider_height + 2 - 1); if (amount > 0) - DWIN_Draw_Box(1, BarFill_Color, slider_x, slider_y, amount, slider_height); + dwinDrawBox(1, BarFill_Color, slider_x, slider_y, amount, slider_height); if (amount < slider_length) - DWIN_Draw_Box(1, Color_Bg_Black, slider_x + amount, slider_y, slider_length - amount, slider_height); + dwinDrawBox(1, Color_Bg_Black, slider_x + amount, slider_y, slider_length - amount, slider_height); } } } @@ -450,7 +450,7 @@ void MarlinUI::draw_status_message(const bool blink) { col = yesopt ? LCD_WIDTH - mar - len : mar, row = (LCD_HEIGHT >= 8 ? LCD_HEIGHT / 2 + 3 : LCD_HEIGHT - 1); lcd_moveto(col, row); - DWIN_Draw_Box(1, inv ? Select_Color : Color_Bg_Black, cursor.x - dwin_font.width, cursor.y + 1, dwin_font.width * (len + 2), dwin_font.height + 2); + dwinDrawBox(1, inv ? Select_Color : Color_Bg_Black, cursor.x - dwin_font.width, cursor.y + 1, dwin_font.width * (len + 2), dwin_font.height + 2); lcd_put_u8str(col, row, fstr); } @@ -512,9 +512,9 @@ void MarlinUI::draw_status_message(const bool blink) { // Clear the Mesh Map // First draw the bigger box in White so we have a border around the mesh map box - DWIN_Draw_Rectangle(1, Color_White, x_offset - 2, y_offset - 2, x_offset + 2 + x_map_pixels, y_offset + 2 + y_map_pixels); + dwinDrawRectangle(1, Color_White, x_offset - 2, y_offset - 2, x_offset + 2 + x_map_pixels, y_offset + 2 + y_map_pixels); // Now actually clear the mesh map box - DWIN_Draw_Rectangle(1, Color_Bg_Black, x_offset, y_offset, x_offset + x_map_pixels, y_offset + y_map_pixels); + dwinDrawRectangle(1, Color_Bg_Black, x_offset, y_offset, x_offset + x_map_pixels, y_offset + y_map_pixels); // Fill in the Specified Mesh Point @@ -522,7 +522,7 @@ void MarlinUI::draw_status_message(const bool blink) { // invert the Y to get it to plot in the right location. const dwin_coord_t by = y_offset + y_plot_inv * pixels_per_y_mesh_pnt; - DWIN_Draw_Rectangle(1, Select_Color, + dwinDrawRectangle(1, Select_Color, x_offset + (x_plot * pixels_per_x_mesh_pnt), by, x_offset + (x_plot * pixels_per_x_mesh_pnt) + pixels_per_x_mesh_pnt, by + pixels_per_y_mesh_pnt ); @@ -532,7 +532,7 @@ void MarlinUI::draw_status_message(const bool blink) { dwin_coord_t y = y_offset + pixels_per_y_mesh_pnt / 2; for (uint8_t j = 0; j < (GRID_MAX_POINTS_Y); j++, y += pixels_per_y_mesh_pnt) for (uint8_t i = 0, x = sx; i < (GRID_MAX_POINTS_X); i++, x += pixels_per_x_mesh_pnt) - DWIN_Draw_Point(Color_White, 1, 1, x, y); + dwinDrawPoint(Color_White, 1, 1, x, y); // Put Relevant Text on Display @@ -591,17 +591,17 @@ void MarlinUI::draw_status_message(const bool blink) { const int nozzle = (LCD_PIXEL_WIDTH / 2) - 20; // Draw a representation of the nozzle - DWIN_Draw_Box(1, Color_Bg_Black, nozzle + 3, 8, 48, 52); // 'clear' the area where the nozzle is drawn in case it was moved up/down - DWIN_ICON_Show(ICON, ICON_HotendOff, nozzle + 3, 10 - dir); - DWIN_ICON_Show(ICON, ICON_BedLine, nozzle, 10 + 36); + dwinDrawBox(1, Color_Bg_Black, nozzle + 3, 8, 48, 52); // 'clear' the area where the nozzle is drawn in case it was moved up/down + dwinIconShow(ICON, ICON_HotendOff, nozzle + 3, 10 - dir); + dwinIconShow(ICON, ICON_BedLine, nozzle, 10 + 36); // Draw cw/ccw indicator and up/down arrows const int arrow_y = LCD_PIXEL_HEIGHT / 2 - 24; - DWIN_ICON_Show(ICON, ICON_DownArrow, 0, arrow_y - dir); - DWIN_ICON_Show(ICON, rot_down, 48, arrow_y); + dwinIconShow(ICON, ICON_DownArrow, 0, arrow_y - dir); + dwinIconShow(ICON, rot_down, 48, arrow_y); - DWIN_ICON_Show(ICON, ICON_UpArrow, LCD_PIXEL_WIDTH - 10 - (48*2), arrow_y - dir); - DWIN_ICON_Show(ICON, rot_up, LCD_PIXEL_WIDTH - 10 - 48, arrow_y); + dwinIconShow(ICON, ICON_UpArrow, LCD_PIXEL_WIDTH - 10 - (48*2), arrow_y - dir); + dwinIconShow(ICON, rot_up, LCD_PIXEL_WIDTH - 10 - 48, arrow_y); } #endif // BABYSTEP_GFX_OVERLAY || MESH_EDIT_GFX_OVERLAY diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp index b66750bd88..381aea6b17 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp @@ -72,7 +72,7 @@ void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, const bool x_redraw = !ui.did_first_redraw || old_is_printing != print_job_timer.isRunning(); if (x_redraw) { dwin_string.set('X' + axis); - DWIN_Draw_String(true, font16x32, Color_IconBlue, Color_Bg_Black, + dwinDrawString(true, font16x32, Color_IconBlue, Color_Bg_Black, #if ENABLED(DWIN_MARLINUI_PORTRAIT) x + (utf8_strlen(value) * 14 - 14) / 2, y + 2 #else @@ -96,7 +96,7 @@ void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, if (TERN0(LCD_SHOW_E_TOTAL, x_redraw && axis == X_AXIS)) dwin_string.add(F(" ")); - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, + dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, #if ENABLED(DWIN_MARLINUI_PORTRAIT) x, y + 32 #else @@ -117,26 +117,26 @@ void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, if (e_redraw) { // Extra spaces to erase previous value dwin_string.set(F("E ")); - DWIN_Draw_String(true, font16x32, Color_IconBlue, Color_Bg_Black, x + (4 * 14 / 2) - 7, y + 2, S(dwin_string.string())); + dwinDrawString(true, font16x32, Color_IconBlue, Color_Bg_Black, x + (4 * 14 / 2) - 7, y + 2, S(dwin_string.string())); } dwin_string.set(ui16tostr5rj(value / scale)); - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x, y + 32, S(dwin_string.string())); + dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, x, y + 32, S(dwin_string.string())); // Extra spaces to erase previous value - DWIN_Draw_String(true, font14x28, Color_IconBlue, Color_Bg_Black, x + (5 * 14), y + 32, S(scale == 1 ? "mm " : "cm ")); + dwinDrawString(true, font14x28, Color_IconBlue, Color_Bg_Black, x + (5 * 14), y + 32, S(scale == 1 ? "mm " : "cm ")); #else // !DWIN_MARLINUI_PORTRAIT if (e_redraw) { dwin_string.set(F("E ")); - DWIN_Draw_String(true, font16x32, Color_IconBlue, Color_Bg_Black, x, y, S(dwin_string.string())); + dwinDrawString(true, font16x32, Color_IconBlue, Color_Bg_Black, x, y, S(dwin_string.string())); } dwin_string.set(ui16tostr5rj(value / scale)); - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x + 32, y + 4, S(dwin_string.string())); + dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, x + 32, y + 4, S(dwin_string.string())); - DWIN_Draw_String(true, font14x28, Color_IconBlue, Color_Bg_Black, x + (32 + 70), y + 4, S(scale == 1 ? "mm " : "cm ")); + dwinDrawString(true, font14x28, Color_IconBlue, Color_Bg_Black, x + (32 + 70), y + 4, S(scale == 1 ? "mm " : "cm ")); #endif // !DWIN_MARLINUI_PORTRAIT } @@ -151,16 +151,16 @@ void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, const uint16_t fanx = (4 * STATUS_CHR_WIDTH - STATUS_FAN_WIDTH) / 2; const bool fan_on = !!thermalManager.scaledFanSpeed(0); if (fan_on) { - DWIN_ICON_Animation(0, fan_on, ICON, ICON_Fan0, ICON_Fan3, x + fanx, y, 25); + dwinIconAnimation(0, fan_on, ICON, ICON_Fan0, ICON_Fan3, x + fanx, y, 25); dwin_string.set(i8tostr3rj(thermalManager.scaledFanSpeedPercent(0))); dwin_string.add('%'); - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x, y + STATUS_FAN_HEIGHT, S(dwin_string.string())); + dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, x, y + STATUS_FAN_HEIGHT, S(dwin_string.string())); } else { - DWIN_ICON_AnimationControl(0x0000); // disable all icon animations (this is the only one) - DWIN_ICON_Show(ICON, ICON_Fan0, x + fanx, y); + dwinIconAnimationControl(0x0000); // disable all icon animations (this is the only one) + dwinIconShow(ICON, ICON_Fan0, x + fanx, y); dwin_string.set(F(" ")); - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x, y + STATUS_FAN_HEIGHT, S(dwin_string.string())); + dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, x, y + STATUS_FAN_HEIGHT, S(dwin_string.string())); } } #endif @@ -230,20 +230,20 @@ FORCE_INLINE void _draw_heater_status(const heater_id_t heater, const uint16_t x if (t_draw) { dwin_string.set(i16tostr3rj(tt + 0.5)); dwin_string.add(LCD_STR_DEGREE); - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x, y, S(dwin_string.string())); + dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, x, y, S(dwin_string.string())); } // Draw heater icon with on / off / leveled states if (i_draw) { const uint8_t ico = isBed ? (TERN0(HAS_LEVELING, planner.leveling_active) ? ICON_BedLevelOff : ICON_BedOff) : ICON_HotendOff; - DWIN_ICON_Show(ICON, ico + ta, x, y + STATUS_CHR_HEIGHT + 2); + dwinIconShow(ICON, ico + ta, x, y + STATUS_CHR_HEIGHT + 2); } // Draw current temperature, if needed if (c_draw) { dwin_string.set(i16tostr3rj(tc + 0.5)); dwin_string.add(LCD_STR_DEGREE); - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x, y + 70, S(dwin_string.string())); + dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, x, y + 70, S(dwin_string.string())); } } @@ -253,12 +253,12 @@ FORCE_INLINE void _draw_heater_status(const heater_id_t heater, const uint16_t x FORCE_INLINE void _draw_feedrate_status(const char *value, uint16_t x, uint16_t y) { if (!ui.did_first_redraw) { dwin_string.set(LCD_STR_FEEDRATE); - DWIN_Draw_String(true, font14x28, Color_IconBlue, Color_Bg_Black, x, y, S(dwin_string.string())); + dwinDrawString(true, font14x28, Color_IconBlue, Color_Bg_Black, x, y, S(dwin_string.string())); } dwin_string.set(value); dwin_string.add('%'); - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, x + 14, y, S(dwin_string.string())); + dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, x + 14, y, S(dwin_string.string())); } /** @@ -272,7 +272,7 @@ void MarlinUI::draw_status_screen() { // Logo/Status Icon #define STATUS_LOGO_WIDTH 128 #define STATUS_LOGO_HEIGHT 40 - DWIN_ICON_Show(ICON, ICON_LOGO_Marlin, + dwinIconShow(ICON, ICON_LOGO_Marlin, #if ENABLED(DWIN_MARLINUI_PORTRAIT) (LCD_PIXEL_WIDTH - (STATUS_LOGO_WIDTH)) / 2, ((STATUS_HEATERS_Y - 4) - (STATUS_LOGO_HEIGHT)) / 2 #else @@ -281,7 +281,7 @@ void MarlinUI::draw_status_screen() { ); // Draw a frame around the x/y/z values - DWIN_Draw_Rectangle(0, Select_Color, + dwinDrawRectangle(0, Select_Color, #if ENABLED(DWIN_MARLINUI_PORTRAIT) 0, 193, LCD_PIXEL_WIDTH - 1, 260 #else @@ -358,7 +358,7 @@ void MarlinUI::draw_status_screen() { time.toDigital(buffer); dwin_string.add(prefix); dwin_string.add(buffer); - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, (LCD_PIXEL_WIDTH - ((dwin_string.length + 1) * 14)), 290, S(dwin_string.string())); + dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, (LCD_PIXEL_WIDTH - ((dwin_string.length + 1) * 14)), 290, S(dwin_string.string())); #else @@ -367,23 +367,23 @@ void MarlinUI::draw_status_screen() { time.toDigital(buffer); dwin_string.set(' '); dwin_string.add(buffer); - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, 230, 170, S(dwin_string.string())); + dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, 230, 170, S(dwin_string.string())); #if ENABLED(SHOW_REMAINING_TIME) if (print_job_timer.isRunning()) { time = get_remaining_time(); - DWIN_Draw_String(true, font14x28, Color_IconBlue, Color_Bg_Black, 336, 170, S(" R ")); + dwinDrawString(true, font14x28, Color_IconBlue, Color_Bg_Black, 336, 170, S(" R ")); if (print_job_timer.isPaused() && blink) dwin_string.set(F(" ")); else { time.toDigital(buffer); dwin_string.set(buffer); } - DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, 378, 170, S(dwin_string.string())); + dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, 378, 170, S(dwin_string.string())); } else if (!ui.did_first_redraw || old_is_printing != print_job_timer.isRunning()) { dwin_string.set(F(" ")); - DWIN_Draw_String(true, font14x28, Color_IconBlue, Color_Bg_Black, 336, 170, S(dwin_string.string())); + dwinDrawString(true, font14x28, Color_IconBlue, Color_Bg_Black, 336, 170, S(dwin_string.string())); } #endif #endif @@ -403,7 +403,7 @@ void MarlinUI::draw_status_screen() { const progress_t progress = TERN(HAS_PRINT_PROGRESS_PERMYRIAD, get_progress_permyriad, get_progress_percent)(); if (!ui.did_first_redraw) - DWIN_Draw_Rectangle(0, Select_Color, pb_left, pb_top, pb_right, pb_bottom); // Outline + dwinDrawRectangle(0, Select_Color, pb_left, pb_top, pb_right, pb_bottom); // Outline static uint16_t old_solid = 50; const uint16_t pb_solid = (pb_width - 2) * (progress / (PROGRESS_SCALE)) * 0.01f; @@ -411,15 +411,15 @@ void MarlinUI::draw_status_screen() { if (p_draw) { //if (pb_solid) - DWIN_Draw_Rectangle(1, Select_Color, pb_left + 1, pb_top + 1, pb_left + pb_solid, pb_bottom - 1); // Fill the solid part + dwinDrawRectangle(1, Select_Color, pb_left + 1, pb_top + 1, pb_left + pb_solid, pb_bottom - 1); // Fill the solid part //if (pb_solid < old_solid) - DWIN_Draw_Rectangle(1, Color_Bg_Black, pb_left + 1 + pb_solid, pb_top + 1, pb_right - 1, pb_bottom - 1); // Erase the rest + dwinDrawRectangle(1, Color_Bg_Black, pb_left + 1 + pb_solid, pb_top + 1, pb_right - 1, pb_bottom - 1); // Erase the rest #if ENABLED(SHOW_PROGRESS_PERCENT) dwin_string.set(TERN(PRINT_PROGRESS_SHOW_DECIMALS, permyriadtostr4(progress), ui8tostr3rj(progress / (PROGRESS_SCALE)))); dwin_string.add('%'); - DWIN_Draw_String( + dwinDrawString( false, font16x32, Percent_Color, Color_Bg_Black, pb_left + (pb_width - dwin_string.length * 16) / 2, pb_top + (pb_height - 32) / 2 - 1, diff --git a/Marlin/src/lcd/extui/anycubic/Tunes.cpp b/Marlin/src/lcd/extui/anycubic/Tunes.cpp index 8a9e84f000..6e7aecefa9 100644 --- a/Marlin/src/lcd/extui/anycubic/Tunes.cpp +++ b/Marlin/src/lcd/extui/anycubic/Tunes.cpp @@ -39,7 +39,7 @@ namespace Anycubic { - void PlayTune(const uint16_t *tune, const uint8_t speed/*=1*/) { + void playTune(const uint16_t *tune, const uint8_t speed/*=1*/) { const uint16_t wholenotelen = tune[0] / speed; for (uint8_t pos = 1; pos < MAX_TUNE_LENGTH; pos += 2) { const uint16_t freq = tune[pos]; diff --git a/Marlin/src/lcd/extui/anycubic/Tunes.h b/Marlin/src/lcd/extui/anycubic/Tunes.h index 8b99f1f863..73483a9bdd 100644 --- a/Marlin/src/lcd/extui/anycubic/Tunes.h +++ b/Marlin/src/lcd/extui/anycubic/Tunes.h @@ -61,7 +61,7 @@ n_END=10000 // end of tune marker namespace Anycubic { - void PlayTune(const uint16_t *tune, const uint8_t speed=1); + void playTune(const uint16_t *tune, const uint8_t speed=1); // Only uncomment the tunes you are using to save memory // This will help you write tunes! diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp index 7d44e63537..6c8c3aa3a5 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp @@ -103,7 +103,7 @@ void ChironTFT::startup() { injectCommands(AC_cmnd_enable_leveling); // startup tunes are defined in Tunes.h - PlayTune(TERN(AC_DEFAULT_STARTUP_TUNE, Anycubic_PowerOn, GB_PowerOn)); + playTune(TERN(AC_DEFAULT_STARTUP_TUNE, Anycubic_PowerOn, GB_PowerOn)); #if ACDEBUGLEVEL DEBUG_ECHOLNPGM("AC Debug Level ", ACDEBUGLEVEL); @@ -191,7 +191,7 @@ void ChironTFT::filamentRunout() { // 1 Signal filament out last_error = AC_error_filament_runout; tftSendLn(isPrintingFromMedia() ? AC_msg_filament_out_alert : AC_msg_filament_out_block); - PlayTune(FilamentOut); + playTune(FilamentOut); } void ChironTFT::confirmationRequest(const char * const msg) { @@ -214,7 +214,7 @@ void ChironTFT::confirmationRequest(const char * const msg) { if (strcmp_P(msg, MARLIN_msg_heater_timeout) == 0) { pause_state = AC_paused_heater_timed_out; tftSendLn(AC_msg_paused); // enable continue button - PlayTune(HeaterTimeout); + playTune(HeaterTimeout); } // Reheat finished, send acknowledgement else if (strcmp_P(msg, MARLIN_msg_reheat_done) == 0) { @@ -252,7 +252,7 @@ void ChironTFT::statusChange(const char * const msg) { } // If probing fails don't save the mesh raise the probe above the bad point if (strcmp_P(msg, MARLIN_msg_probing_failed) == 0) { - PlayTune(BeepBeepBeeep); + playTune(BeepBeepBeeep); injectCommands(F("G1 Z50 F500")); tftSendLn(AC_msg_probing_complete); printer_state = AC_printer_idle; @@ -306,7 +306,7 @@ void ChironTFT::statusChange(const char * const msg) { void ChironTFT::powerLossRecovery() { printer_state = AC_printer_resuming_from_power_outage; // Play tune to notify user we can recover. last_error = AC_error_powerloss; - PlayTune(SOS); + playTune(SOS); SERIAL_ECHOLN(AC_msg_powerloss_recovery); } diff --git a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp index a560e5e9a0..8b073652b0 100644 --- a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp +++ b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp @@ -24,7 +24,7 @@ #if ENABLED(ANYCUBIC_LCD_I3MEGA) //#define ANYCUBIC_LCD_DEBUG -#define DEBUG_OUT ANYCUBIC_LCD_DEBUG +#define DEBUG_OUT ENABLED(ANYCUBIC_LCD_DEBUG) #include "../../../core/debug_out.h" #include "anycubic_i3mega_lcd.h" @@ -51,20 +51,19 @@ #define SPECIAL_MENU_FILENAME(A) A TERN_(ANYCUBIC_LCD_GCODE_EXT, ".gcode") #define SPECIAL_MENU_ALTNAME(A, B) TERN(ANYCUBIC_LCD_GCODE_EXT, A ".gcode", B) -AnycubicTFTClass anycubicTFT; +AnycubicTFT anycubicTFT; -char AnycubicTFTClass::tftCommands[TFTBUFSIZE][TFT_MAX_CMD_SIZE]; -int AnycubicTFTClass::tftBufLen = 0, - AnycubicTFTClass::tftBufIndR = 0, - AnycubicTFTClass::tftBufIndW = 0; -char AnycubicTFTClass::serial3_char; -char* AnycubicTFTClass::tftStrchrPtr; -uint8_t AnycubicTFTClass::specialMenu = false; -AnycubicMediaPrintState AnycubicTFTClass::mediaPrintingState = AMPRINTSTATE_NOT_PRINTING; -AnycubicMediaPauseState AnycubicTFTClass::mediaPauseState = AMPAUSESTATE_NOT_PAUSED; +char AnycubicTFT::tftCommands[TFTBUFSIZE][TFT_MAX_CMD_SIZE]; +int AnycubicTFT::tftBufLen = 0, + AnycubicTFT::tftBufIndR = 0, + AnycubicTFT::tftBufIndW = 0; +char* AnycubicTFT::tftStrchrPtr; +uint8_t AnycubicTFT::specialMenu = false; +AnycubicMediaPrintState AnycubicTFT::mediaPrintingState = AMPRINTSTATE_NOT_PRINTING; +AnycubicMediaPauseState AnycubicTFT::mediaPauseState = AMPAUSESTATE_NOT_PAUSED; -char AnycubicTFTClass::selectedDirectory[30]; -char AnycubicTFTClass::selectedFile[FILENAME_LENGTH]; +char AnycubicTFT::selectedDirectory[30]; +char AnycubicTFT::selectedFile[FILENAME_LENGTH]; // Serial helpers static void sendNewLine() { LCD_SERIAL.write('\r'); LCD_SERIAL.write('\n'); } @@ -78,9 +77,9 @@ static void sendLine_P(PGM_P str) { send_P(str); sendNewLine(); } using namespace ExtUI; -AnycubicTFTClass::AnycubicTFTClass() {} +AnycubicTFT::AnycubicTFT() {} -void AnycubicTFTClass::onSetup() { +void AnycubicTFT::onSetup() { #ifndef LCD_BAUDRATE #define LCD_BAUDRATE 115200 #endif @@ -110,7 +109,7 @@ void AnycubicTFTClass::onSetup() { DEBUG_ECHOLNPGM("TFT Serial Debug: Finished startup"); } -void AnycubicTFTClass::onCommandScan() { +void AnycubicTFT::onCommandScan() { static millis_t nextStopCheck = 0; // used to slow the stopped print check down to reasonable times const millis_t ms = millis(); if (ELAPSED(ms, nextStopCheck)) { @@ -135,26 +134,26 @@ void AnycubicTFTClass::onCommandScan() { } } -void AnycubicTFTClass::onKillTFT() { +void AnycubicTFT::onKillTFT() { SENDLINE_DBG_PGM("J11", "TFT Serial Debug: Kill command... J11"); } -void AnycubicTFTClass::onSDCardStateChange(bool isInserted) { +void AnycubicTFT::onSDCardStateChange(bool isInserted) { DEBUG_ECHOLNPGM("TFT Serial Debug: onSDCardStateChange event triggered...", isInserted); doSDCardStateCheck(); } -void AnycubicTFTClass::onSDCardError() { +void AnycubicTFT::onSDCardError() { DEBUG_ECHOLNPGM("TFT Serial Debug: onSDCardError event triggered..."); SENDLINE_DBG_PGM("J21", "TFT Serial Debug: On SD Card Error ... J21"); } -void AnycubicTFTClass::onFilamentRunout() { +void AnycubicTFT::onFilamentRunout() { DEBUG_ECHOLNPGM("TFT Serial Debug: onFilamentRunout triggered..."); doFilamentRunoutCheck(); } -void AnycubicTFTClass::onUserConfirmRequired(const char * const msg) { +void AnycubicTFT::onUserConfirmRequired(const char * const msg) { DEBUG_ECHOLNPGM("TFT Serial Debug: onUserConfirmRequired triggered... ", msg); #if HAS_MEDIA @@ -206,23 +205,23 @@ void AnycubicTFTClass::onUserConfirmRequired(const char * const msg) { #endif } -float AnycubicTFTClass::codeValue() { +float AnycubicTFT::codeValue() { return (strtod(&tftCommands[tftBufIndR][tftStrchrPtr - tftCommands[tftBufIndR] + 1], nullptr)); } -bool AnycubicTFTClass::codeSeen(char code) { +bool AnycubicTFT::codeSeen(char code) { tftStrchrPtr = strchr(tftCommands[tftBufIndR], code); return !!tftStrchrPtr; // Return True if a character was found } -bool AnycubicTFTClass::isNozzleHomed() { +bool AnycubicTFT::isNozzleHomed() { const float xPosition = getAxisPosition_mm((axis_t) X); const float yPosition = getAxisPosition_mm((axis_t) Y); return WITHIN(xPosition, X_MIN_POS - 0.1, X_MIN_POS + 0.1) && WITHIN(yPosition, Y_MIN_POS - 0.1, Y_MIN_POS + 0.1); } -void AnycubicTFTClass::handleSpecialMenu() { +void AnycubicTFT::handleSpecialMenu() { /** * NOTE: that the file selection command actual lowercases the entire selected file/foldername, so charracter comparisons need to be lowercase. */ @@ -355,7 +354,7 @@ void AnycubicTFTClass::handleSpecialMenu() { } -void AnycubicTFTClass::renderCurrentFileList() { +void AnycubicTFT::renderCurrentFileList() { #if HAS_MEDIA uint16_t selectedNumber = 0; selectedDirectory[0] = 0; @@ -383,7 +382,7 @@ void AnycubicTFTClass::renderCurrentFileList() { #endif // HAS_MEDIA } -void AnycubicTFTClass::renderSpecialMenu(uint16_t selectedNumber) { +void AnycubicTFT::renderSpecialMenu(uint16_t selectedNumber) { switch (selectedNumber) { default: break; @@ -450,7 +449,7 @@ void AnycubicTFTClass::renderSpecialMenu(uint16_t selectedNumber) { } } -void AnycubicTFTClass::renderCurrentFolder(uint16_t selectedNumber) { +void AnycubicTFT::renderCurrentFolder(uint16_t selectedNumber) { FileList currentFileList; const uint16_t dir_files = currentFileList.count(), max_files = (dir_files - selectedNumber) < 4 ? dir_files : selectedNumber + 3; @@ -485,14 +484,14 @@ void AnycubicTFTClass::renderCurrentFolder(uint16_t selectedNumber) { } } -void AnycubicTFTClass::onPrintTimerStarted() { +void AnycubicTFT::onPrintTimerStarted() { #if HAS_MEDIA if (mediaPrintingState == AMPRINTSTATE_PRINTING) SENDLINE_DBG_PGM("J04", "TFT Serial Debug: Starting SD Print... J04"); // J04 Starting Print #endif } -void AnycubicTFTClass::onPrintTimerPaused() { +void AnycubicTFT::onPrintTimerPaused() { #if HAS_MEDIA if (isPrintingFromMedia()) { mediaPrintingState = AMPRINTSTATE_PAUSED; @@ -501,7 +500,7 @@ void AnycubicTFTClass::onPrintTimerPaused() { #endif } -void AnycubicTFTClass::onPrintTimerStopped() { +void AnycubicTFT::onPrintTimerStopped() { #if HAS_MEDIA if (mediaPrintingState == AMPRINTSTATE_PRINTING) { mediaPrintingState = AMPRINTSTATE_NOT_PRINTING; @@ -514,7 +513,7 @@ void AnycubicTFTClass::onPrintTimerStopped() { #define ROUND(val) int((val)+0.5f) -void AnycubicTFTClass::getCommandFromTFT() { +void AnycubicTFT::getCommandFromTFT() { static int serial_count = 0; char *starpos = nullptr; @@ -884,7 +883,7 @@ void AnycubicTFTClass::getCommandFromTFT() { } // while } -void AnycubicTFTClass::doSDCardStateCheck() { +void AnycubicTFT::doSDCardStateCheck() { #if ALL(HAS_MEDIA, HAS_SD_DETECT) bool isInserted = isMediaInserted(); if (isInserted) @@ -895,7 +894,7 @@ void AnycubicTFTClass::doSDCardStateCheck() { #endif } -void AnycubicTFTClass::doFilamentRunoutCheck() { +void AnycubicTFT::doFilamentRunoutCheck() { #if ENABLED(FILAMENT_RUNOUT_SENSOR) // NOTE: getFilamentRunoutState() only returns the runout state if the job is printing // we want to actually check the status of the pin here, regardless of printstate @@ -914,7 +913,7 @@ void AnycubicTFTClass::doFilamentRunoutCheck() { #endif // FILAMENT_RUNOUT_SENSOR } -void AnycubicTFTClass::startPrint() { +void AnycubicTFT::startPrint() { #if HAS_MEDIA if (!isPrinting() && strlen(selectedFile) > 0) { DEBUG_ECHOLNPGM("TFT Serial Debug: About to print file ... ", isPrinting(), " ", selectedFile); @@ -925,7 +924,7 @@ void AnycubicTFTClass::startPrint() { #endif // SDUPPORT } -void AnycubicTFTClass::pausePrint() { +void AnycubicTFT::pausePrint() { #if HAS_MEDIA if (isPrintingFromMedia() && mediaPrintingState != AMPRINTSTATE_STOP_REQUESTED && mediaPauseState == AMPAUSESTATE_NOT_PAUSED) { mediaPrintingState = AMPRINTSTATE_PAUSE_REQUESTED; @@ -939,7 +938,7 @@ void AnycubicTFTClass::pausePrint() { #endif } -void AnycubicTFTClass::resumePrint() { +void AnycubicTFT::resumePrint() { #if HAS_MEDIA #if ENABLED(FILAMENT_RUNOUT_SENSOR) if (READ(FIL_RUNOUT1_PIN)) { @@ -973,7 +972,7 @@ void AnycubicTFTClass::resumePrint() { #endif } -void AnycubicTFTClass::stopPrint() { +void AnycubicTFT::stopPrint() { #if HAS_MEDIA mediaPrintingState = AMPRINTSTATE_STOP_REQUESTED; mediaPauseState = AMPAUSESTATE_NOT_PAUSED; diff --git a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.h b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.h index 7316c5fc04..78eae62326 100644 --- a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.h +++ b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.h @@ -45,9 +45,9 @@ enum AnycubicMediaPauseState { AMPAUSESTATE_REHEAT_FINISHED }; -class AnycubicTFTClass { +class AnycubicTFT { public: - AnycubicTFTClass(); + AnycubicTFT(); static void onSetup(); static void onCommandScan(); static void onKillTFT(); @@ -88,5 +88,5 @@ private: static char selectedFile[FILENAME_LENGTH]; }; -extern AnycubicTFTClass anycubicTFT; +extern AnycubicTFT anycubicTFT; extern const char G28_STR[]; diff --git a/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp index da88acc725..e3cd68fd9d 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.cpp @@ -91,7 +91,7 @@ namespace Anycubic { if (filelist.seek(_seek)) { //sendFile(); - DgusTFT::SendTxtToTFT(filelist.longFilename(), TXT_FILE_0 + file_num*0x30); + DgusTFT::sendTxtToTFT(filelist.longFilename(), TXT_FILE_0 + file_num*0x30); #if ACDEBUG(AC_FILE) SERIAL_ECHOLNPGM("seek: ", _seek, " '", filelist.longFilename(), "' '", currentDirPath, "", filelist.shortFilename(), "'\n"); @@ -102,7 +102,7 @@ namespace Anycubic { SERIAL_ECHOLNPGM("over seek: ", _seek); #endif - DgusTFT::SendTxtToTFT("\0", TXT_FILE_0 + file_num*0x30); + DgusTFT::sendTxtToTFT("\0", TXT_FILE_0 + file_num*0x30); } file_num++; @@ -115,7 +115,7 @@ namespace Anycubic { // Permitted special characters in file name: -_*#~ // Panel can display 22 characters per line. if (!filelist.isDir()) - DgusTFT::SendTxtToTFT(filelist.longFilename(), TXT_FILE_0); + DgusTFT::sendTxtToTFT(filelist.longFilename(), TXT_FILE_0); } void FileNavigator::changeDIR(char *folder) { diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp index 1177d2977b..f27e638b32 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp @@ -116,7 +116,7 @@ namespace Anycubic { void DEBUG_PRINT_TIMER_EVENT(const timer_event_t event, FSTR_P const msg=nullptr); void DEBUG_PRINT_MEDIA_EVENT(const media_event_t event, FSTR_P const msg=nullptr); - DgusTFT Dgus; + DgusTFT dgus; DgusTFT::DgusTFT() { data_buf[0] = '\0'; @@ -163,7 +163,7 @@ namespace Anycubic { void DgusTFT::paramInit() { #if ACDEBUG(AC_MARLIN) - DEBUG_ECHOLNPGM("DgusTFT::ParamInit()"); + DEBUG_ECHOLNPGM("DgusTFT::paramInit()"); #endif if (lcd_info.language == CHS) @@ -171,21 +171,21 @@ namespace Anycubic { else if (lcd_info.language == ENG) page_index_now = 121; - LcdAudioSet(lcd_info.audio_on); + lcdAudioSet(lcd_info.audio_on); #if ACDEBUG(AC_MARLIN) if (lcd_info.language == CHS) - DEBUG_ECHOLNPGM("ParamInit lcd language: CHS"); + DEBUG_ECHOLNPGM("paramInit lcd language: CHS"); else if (lcd_info.language == ENG) - DEBUG_ECHOLNPGM("ParamInit lcd language: ENG"); + DEBUG_ECHOLNPGM("paramInit lcd language: ENG"); if (lcd_info.audio_on) - DEBUG_ECHOLNPGM("ParamInit lcd audio: ON"); + DEBUG_ECHOLNPGM("paramInit lcd audio: ON"); else - DEBUG_ECHOLNPGM("ParamInit lcd audio: OFF"); + DEBUG_ECHOLNPGM("paramInit lcd audio: OFF"); #endif - RequestValueFromTFT(0x14); // get page ID + requestValueFromTFT(0x14); // get page ID } void DgusTFT::idleLoop() { @@ -296,11 +296,11 @@ namespace Anycubic { if (strcmp_P(error, PSTR("Heating Failed")) == 0) { if (strcmp_P(component, PSTR("Bed")) == 0) { - ChangePageOfTFT(PAGE_CHS_ABNORMAL_BED_HEATER); + changePageOfTFT(PAGE_CHS_ABNORMAL_BED_HEATER); SERIAL_ECHOLNPGM("Check Bed heater"); } else if (strcmp_P(component, PSTR("E1")) == 0) { - ChangePageOfTFT(PAGE_CHS_ABNORMAL_HOTEND_HEATER); + changePageOfTFT(PAGE_CHS_ABNORMAL_HOTEND_HEATER); SERIAL_ECHOLNPGM("Check E1 heater"); } @@ -308,11 +308,11 @@ namespace Anycubic { else if (strcmp_P(error, PSTR("Err: MINTEMP")) == 0) { if (strcmp_P(component, PSTR("Bed")) == 0) { - ChangePageOfTFT(PAGE_CHS_ABNORMAL_BED_NTC); + changePageOfTFT(PAGE_CHS_ABNORMAL_BED_NTC); SERIAL_ECHOLNPGM("Check Bed thermistor"); } else if (strcmp_P(component, PSTR("E1")) == 0) { - ChangePageOfTFT(PAGE_CHS_ABNORMAL_HOTEND_NTC); + changePageOfTFT(PAGE_CHS_ABNORMAL_HOTEND_NTC); SERIAL_ECHOLNPGM("Check E1 thermistor"); } @@ -320,11 +320,11 @@ namespace Anycubic { else if (strcmp_P(error, PSTR("Err: MAXTEMP")) == 0) { if (strcmp_P(component, PSTR("Bed")) == 0) { - ChangePageOfTFT(PAGE_CHS_ABNORMAL_BED_NTC); + changePageOfTFT(PAGE_CHS_ABNORMAL_BED_NTC); SERIAL_ECHOLNPGM("Check Bed thermistor"); } else if (strcmp_P(component, PSTR("E1")) == 0) { - ChangePageOfTFT(PAGE_CHS_ABNORMAL_HOTEND_NTC); + changePageOfTFT(PAGE_CHS_ABNORMAL_HOTEND_NTC); SERIAL_ECHOLNPGM("Check E1 thermistor"); } @@ -332,11 +332,11 @@ namespace Anycubic { else if (strcmp_P(error, PSTR("THERMAL RUNAWAY")) == 0) { if (strcmp_P(component, PSTR("Bed")) == 0) { - ChangePageOfTFT(PAGE_CHS_ABNORMAL_BED_HEATER); + changePageOfTFT(PAGE_CHS_ABNORMAL_BED_HEATER); SERIAL_ECHOLNPGM("Check Bed thermal runaway"); } else if (strcmp_P(component, PSTR("E1")) == 0) { - ChangePageOfTFT(PAGE_CHS_ABNORMAL_HOTEND_HEATER); + changePageOfTFT(PAGE_CHS_ABNORMAL_HOTEND_HEATER); SERIAL_ECHOLNPGM("Check E1 thermal runaway"); } @@ -344,15 +344,15 @@ namespace Anycubic { else if (strcmp_P(error, PSTR("Homing Failed")) == 0) { if (strcmp_P(component, PSTR("X")) == 0) { - ChangePageOfTFT(PAGE_CHS_ABNORMAL_X_ENDSTOP); + changePageOfTFT(PAGE_CHS_ABNORMAL_X_ENDSTOP); SERIAL_ECHOLNPGM("Check X endstop"); } else if (strcmp_P(component, PSTR("Y")) == 0) { - ChangePageOfTFT(PAGE_CHS_ABNORMAL_Y_ENDSTOP); + changePageOfTFT(PAGE_CHS_ABNORMAL_Y_ENDSTOP); SERIAL_ECHOLNPGM("Check Y endstop"); } else if (strcmp_P(component, PSTR("Z")) == 0) { - ChangePageOfTFT(PAGE_CHS_ABNORMAL_Z_ENDSTOP); + changePageOfTFT(PAGE_CHS_ABNORMAL_Z_ENDSTOP); SERIAL_ECHOLNPGM("Check Z endstop"); } @@ -361,7 +361,7 @@ namespace Anycubic { } void DgusTFT::set_descript_color(const uint16_t color, const uint8_t index/*=lcd_txtbox_index*/) { - SendColorToTFT(color, TXT_DESCRIPT_0 + 0x30 * (index - 1)); + sendColorToTFT(color, TXT_DESCRIPT_0 + 0x30 * (index - 1)); } void DgusTFT::mediaEvent(media_event_t event) { @@ -426,7 +426,7 @@ namespace Anycubic { case AC_timer_stopped: if (printer_state != AC_printer_idle) { if (printer_state == AC_printer_stopping_from_media_remove) { - ChangePageOfTFT(PAGE_NO_SD); + changePageOfTFT(PAGE_NO_SD); } else { printer_state = AC_printer_stopping; @@ -436,8 +436,8 @@ namespace Anycubic { char str_buf[20]; sprintf(str_buf, "%s H ", utostr3(time / 60)); sprintf(str_buf + strlen(str_buf), "%s M", utostr3(time % 60)); - SendTxtToTFT(str_buf, TXT_FINISH_TIME); - ChangePageOfTFT(PAGE_PRINT_FINISH); + sendTxtToTFT(str_buf, TXT_FINISH_TIME); + changePageOfTFT(PAGE_PRINT_FINISH); tftSendLn(AC_msg_print_complete); pop_up_index = 100; } @@ -463,7 +463,7 @@ namespace Anycubic { pop_up_index = 15; // show filament lack. if (READ(FIL_RUNOUT_PIN) == FIL_RUNOUT_STATE) { - PlayTune(FilamentOut); + playTune(FilamentOut); feedrate_back = getFeedrate_percent(); @@ -490,7 +490,7 @@ namespace Anycubic { case AC_printer_pausing: { if (strcmp_P(msg, MARLIN_msg_print_paused) == 0 || strcmp_P(msg, MARLIN_msg_nozzle_parked) == 0) { if (pause_state != AC_paused_filament_lack) - ChangePageOfTFT(PAGE_STATUS1); // enable continue button + changePageOfTFT(PAGE_STATUS1); // enable continue button printer_state = AC_printer_paused; } } @@ -505,7 +505,7 @@ namespace Anycubic { if (strcmp_P(msg, MARLIN_msg_heater_timeout) == 0) { pause_state = AC_paused_heater_timed_out; tftSendLn(AC_msg_paused); // enable continue button - PlayTune(HeaterTimeout); + playTune(HeaterTimeout); } // Reheat finished, send acknowledgement else if (strcmp_P(msg, MARLIN_msg_reheat_done) == 0) { @@ -567,8 +567,8 @@ namespace Anycubic { if (probe_cnt == GRID_MAX_POINTS) { probe_cnt = 0; injectCommands(F("M500")); // G27 park nozzle - //ChangePageOfTFT(PAGE_PreLEVEL); - FakeChangePageOfTFT(PAGE_PreLEVEL); // Prevent UI refreshing too quickly when probing is done + //changePageOfTFT(PAGE_PreLEVEL); + fakeChangePageOfTFT(PAGE_PreLEVEL); // Prevent UI refreshing too quickly when probing is done printer_state = AC_printer_idle; msg_matched = true; } @@ -576,19 +576,19 @@ namespace Anycubic { // If probing fails don't save the mesh raise the probe above the bad point if (strcmp_P(msg, MARLIN_msg_probing_failed) == 0) { - PlayTune(BeepBeepBeeep); + playTune(BeepBeepBeeep); injectCommands(F("G1 Z50 F500")); - ChangePageOfTFT(PAGE_CHS_ABNORMAL_LEVELING_SENSOR); + changePageOfTFT(PAGE_CHS_ABNORMAL_LEVELING_SENSOR); tftSendLn(AC_msg_probing_complete); printer_state = AC_printer_idle; msg_matched = true; } if (strcmp_P(msg, MARLIN_msg_probe_preheat_start) == 0) - ChangePageOfTFT(PAGE_CHS_PROBE_PREHEATING); + changePageOfTFT(PAGE_CHS_PROBE_PREHEATING); if (strcmp_P(msg, MARLIN_msg_probe_preheat_stop) == 0) - ChangePageOfTFT(PAGE_LEVELING); + changePageOfTFT(PAGE_LEVELING); break; #endif @@ -596,7 +596,7 @@ namespace Anycubic { case AC_printer_printing: if (strcmp_P(msg, MARLIN_msg_reheating) == 0) { tftSendLn(AC_msg_paused); // enable continue button - ChangePageOfTFT(PAGE_STATUS2); + changePageOfTFT(PAGE_STATUS2); msg_matched = true; } else if (strcmp_P(msg, MARLIN_msg_media_removed) == 0) { @@ -616,7 +616,7 @@ namespace Anycubic { case AC_printer_pausing: if (strcmp_P(msg, MARLIN_msg_print_paused) == 0) { if (pause_state != AC_paused_filament_lack) { - ChangePageOfTFT(PAGE_STATUS1); // show resume + changePageOfTFT(PAGE_STATUS1); // show resume pause_state = AC_paused_idle; } @@ -628,7 +628,7 @@ namespace Anycubic { case AC_printer_paused: if (strcmp_P(msg, MARLIN_msg_print_paused) == 0) { if (pause_state != AC_paused_filament_lack) { - ChangePageOfTFT(PAGE_STATUS1); // show resume + changePageOfTFT(PAGE_STATUS1); // show resume pause_state = AC_paused_idle; } @@ -639,7 +639,7 @@ namespace Anycubic { case AC_printer_stopping: if (strcmp_P(msg, MARLIN_msg_print_aborted) == 0) { - ChangePageOfTFT(PAGE_MAIN); + changePageOfTFT(PAGE_MAIN); printer_state = AC_printer_idle; msg_matched = true; } @@ -683,7 +683,7 @@ namespace Anycubic { void DgusTFT::homingStart() { if (!isPrintingFromMedia()) - ChangePageOfTFT(PAGE_CHS_HOMING); + changePageOfTFT(PAGE_CHS_HOMING); } void DgusTFT::homingComplete() { @@ -696,7 +696,7 @@ namespace Anycubic { #endif if (!isPrintingFromMedia()) - ChangePageOfTFT(page_index_last); + changePageOfTFT(page_index_last); } void DgusTFT::tftSend(FSTR_P const fstr/*=nullptr*/) { // A helper to print PROGMEM string to the panel @@ -750,7 +750,7 @@ namespace Anycubic { void DgusTFT::changePageOfTFT(const uint16_t page_index, const bool no_send/*=false*/) { #if ACDEBUG(AC_MARLIN) - DEBUG_ECHOLNPGM("ChangePageOfTFT: ", page_index); + DEBUG_ECHOLNPGM("changePageOfTFT: ", page_index); #endif uint32_t data_temp = 0; @@ -792,9 +792,9 @@ namespace Anycubic { void DgusTFT::fakeChangePageOfTFT(const uint16_t page_index) { #if ACDEBUG(AC_MARLIN) if (page_index_saved != page_index_now) - DEBUG_ECHOLNPGM("FakeChangePageOfTFT: ", page_index); + DEBUG_ECHOLNPGM("fakeChangePageOfTFT: ", page_index); #endif - ChangePageOfTFT(page_index, true); + changePageOfTFT(page_index, true); } void DgusTFT::lcdAudioSet(const bool audio_on) { @@ -896,7 +896,7 @@ namespace Anycubic { } #endif - int8_t DgusTFT::Findcmndpos(const char * buff, const char q) { + int8_t DgusTFT::findCmdPos(const char * buff, const char q) { for (int8_t pos = 0; pos < MAX_CMND_LEN; ++pos) if (buff[pos] == q) return pos; return -1; @@ -1012,7 +1012,7 @@ namespace Anycubic { temp = constrain(uint16_t(control_value), 0, HEATER_0_MAXTEMP); setTargetTemp_celsius(temp, E0); //sprintf(str_buf,"%u/%u", (uint16_t)thermalManager.degHotend(0), uint16_t(control_value)); - //SendTxtToTFT(str_buf, TXT_PRINT_HOTEND); + //sendTxtToTFT(str_buf, TXT_PRINT_HOTEND); } #endif @@ -1022,7 +1022,7 @@ namespace Anycubic { temp = constrain(uint16_t(control_value), 0, BED_MAXTEMP); setTargetTemp_celsius(temp, BED); //sprintf(str_buf,"%u/%u", uint16_t(thermalManager.degBed()), uint16_t(control_value)); - //SendTxtToTFT(str_buf, TXT_PRINT_BED); + //sendTxtToTFT(str_buf, TXT_PRINT_BED); } #endif @@ -1030,8 +1030,8 @@ namespace Anycubic { else if (control_index == TXT_FAN_SPEED_TARGET) { // fan speed control_value = (uint16_t(data_buf[4]) << 8) | uint16_t(data_buf[5]); temp = constrain(uint16_t(control_value), 0, 100); - SendValueToTFT(temp, TXT_FAN_SPEED_NOW); - SendValueToTFT(temp, TXT_FAN_SPEED_TARGET); + sendValueToTFT(temp, TXT_FAN_SPEED_NOW); + sendValueToTFT(temp, TXT_FAN_SPEED_TARGET); setTargetFan_percent(temp, FAN0); } #endif @@ -1041,47 +1041,47 @@ namespace Anycubic { const uint16_t feedrate = constrain(uint16_t(control_value), 40, 999); //feedrate_percentage=constrain(control_value,40,999); sprintf(str_buf, "%u", feedrate); - SendTxtToTFT(str_buf, TXT_PRINT_SPEED); - SendValueToTFT(feedrate, TXT_PRINT_SPEED_NOW); - SendValueToTFT(feedrate, TXT_PRINT_SPEED_TARGET); + sendTxtToTFT(str_buf, TXT_PRINT_SPEED); + sendValueToTFT(feedrate, TXT_PRINT_SPEED_NOW); + sendValueToTFT(feedrate, TXT_PRINT_SPEED_TARGET); setFeedrate_percent(feedrate); } else if (control_index == REG_LCD_READY) { control_value = (uint32_t(data_buf[3]) << 16) | (uint32_t(data_buf[4]) << 8) | uint32_t(data_buf[5]); if (control_value == 0x010072) { // startup last gif - LcdAudioSet(lcd_info.audio_on); + lcdAudioSet(lcd_info.audio_on); - SendValueToTFT(2, ADDRESS_MOVE_DISTANCE); + sendValueToTFT(2, ADDRESS_MOVE_DISTANCE); #if ENABLED(CASE_LIGHT_ENABLE) - SendValueToTFT(getCaseLightState(), ADDRESS_SYSTEM_LED_STATUS); - SendValueToTFT(getCaseLightState(), ADDRESS_PRINT_SETTING_LED_STATUS); + sendValueToTFT(getCaseLightState(), ADDRESS_SYSTEM_LED_STATUS); + sendValueToTFT(getCaseLightState(), ADDRESS_PRINT_SETTING_LED_STATUS); #endif #if ENABLED(POWER_LOSS_RECOVERY) const bool is_outage = AC_printer_resuming_from_power_outage == printer_state; if (is_outage) { - ChangePageOfTFT(PAGE_OUTAGE_RECOVERY); + changePageOfTFT(PAGE_OUTAGE_RECOVERY); #if ENABLED(LONG_FILENAME_HOST_SUPPORT) char filename[64] = { '\0' }; card.getLongPath(filename, recovery.info.sd_filename); - SendTxtToTFT(filename, TXT_OUTAGE_RECOVERY_FILE); + sendTxtToTFT(filename, TXT_OUTAGE_RECOVERY_FILE); #else - SendTxtToTFT(recovery.info.sd_filename, TXT_OUTAGE_RECOVERY_FILE); + sendTxtToTFT(recovery.info.sd_filename, TXT_OUTAGE_RECOVERY_FILE); #endif - PlayTune(SOS); + playTune(SOS); } #else constexpr bool is_outage = false; #endif - if (!is_outage) ChangePageOfTFT(PAGE_MAIN); + if (!is_outage) changePageOfTFT(PAGE_MAIN); } else if (control_value == 0x010000) { // startup first gif // startup tunes are defined in Tunes.h - PlayTune(Anycubic_PowerOn); // takes 3500 ms + playTune(Anycubic_PowerOn); // takes 3500 ms } } @@ -1133,7 +1133,7 @@ namespace Anycubic { } void DgusTFT::goto_system_page() { - ChangePageOfTFT(lcd_info.language == CHS + changePageOfTFT(lcd_info.language == CHS ? (lcd_info.audio_on ? PAGE_SYSTEM_CHS_AUDIO_ON : PAGE_SYSTEM_CHS_AUDIO_OFF) : (lcd_info.audio_on ? 11 : 50) // PAGE_SYSTEM_ENG_AUDIO_ON/OFF - 120 ); @@ -1142,7 +1142,7 @@ namespace Anycubic { void DgusTFT::toggle_audio() { lcd_info.audio_on = !lcd_info.audio_on; goto_system_page(); - LcdAudioSet(lcd_info.audio_on); + lcdAudioSet(lcd_info.audio_on); } void DgusTFT::store_changes() { @@ -1156,7 +1156,7 @@ namespace Anycubic { void DgusTFT::send_temperature_hotend(uint32_t addr) { char str_buf[16]; sprintf(str_buf, "%u/%u", uint16_t(getActualTemp_celsius(E0)), uint16_t(getTargetTemp_celsius(E0))); - SendTxtToTFT(str_buf, addr); + sendTxtToTFT(str_buf, addr); } #endif @@ -1164,7 +1164,7 @@ namespace Anycubic { void DgusTFT::send_temperature_bed(uint32_t addr) { char str_buf[16]; sprintf(str_buf, "%u/%u", uint16_t(getActualTemp_celsius(BED)), uint16_t(getTargetTemp_celsius(BED))); - SendTxtToTFT(str_buf, addr); + sendTxtToTFT(str_buf, addr); } #endif @@ -1186,19 +1186,19 @@ namespace Anycubic { set_descript_color(COLOR_BLUE); lcd_txtbox_index = 0; } - ChangePageOfTFT(PAGE_FILE); + changePageOfTFT(PAGE_FILE); sendFileList(0); } break; case 2: { // tool - ChangePageOfTFT(PAGE_TOOL); + changePageOfTFT(PAGE_TOOL); #if ENABLED(CASE_LIGHT_ENABLE) - SendValueToTFT(getCaseLightState(), ADDRESS_SYSTEM_LED_STATUS); + sendValueToTFT(getCaseLightState(), ADDRESS_SYSTEM_LED_STATUS); #endif } break; case 3: // prepare - ChangePageOfTFT(PAGE_PREPARE); + changePageOfTFT(PAGE_PREPARE); break; case 4: // system @@ -1208,7 +1208,7 @@ namespace Anycubic { #if 0 if (message_index < 30) { - SendTxtToTFT(p_mesage[message_index], TXT_MAIN_MESSAGE); + sendTxtToTFT(p_mesage[message_index], TXT_MAIN_MESSAGE); message_index = 30; } #endif @@ -1238,7 +1238,7 @@ namespace Anycubic { case 0: break; case 1: // return - ChangePageOfTFT(PAGE_MAIN); + changePageOfTFT(PAGE_MAIN); set_descript_color(COLOR_BLUE); break; @@ -1292,14 +1292,14 @@ namespace Anycubic { char str_buf[20]; strncpy_P(str_buf, filenavigator.filelist.longFilename(), 17); str_buf[17] = '\0'; - SendTxtToTFT(str_buf, TXT_PRINT_NAME); + sendTxtToTFT(str_buf, TXT_PRINT_NAME); #if ENABLED(POWER_LOSS_RECOVERY) if (printer_state == AC_printer_resuming_from_power_outage) { // Need to home here to restore the Z position //injectCommands(AC_cmnd_power_loss_recovery); //SERIAL_ECHOLNPGM("start resuming from power outage: ", AC_cmnd_power_loss_recovery); - ChangePageOfTFT(PAGE_STATUS2); // show pause + changePageOfTFT(PAGE_STATUS2); // show pause injectCommands(F("M1000")); // home and start recovery } #endif @@ -1331,20 +1331,20 @@ namespace Anycubic { char str_buf[20]; strncpy_P(str_buf, filenavigator.filelist.longFilename(), 17); str_buf[17] = '\0'; - SendTxtToTFT(str_buf, TXT_PRINT_NAME); + sendTxtToTFT(str_buf, TXT_PRINT_NAME); sprintf(str_buf, "%5.2f", getFeedrate_percent()); - SendTxtToTFT(str_buf, TXT_PRINT_SPEED); + sendTxtToTFT(str_buf, TXT_PRINT_SPEED); sprintf(str_buf, "%u", uint16_t(getProgress_percent())); - SendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); + sendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); uint32_t time = 0; sprintf(str_buf, "%s H ", utostr3(time / 60)); sprintf(str_buf + strlen(str_buf), "%s M", utostr3(time % 60)); - SendTxtToTFT(str_buf, TXT_PRINT_TIME); + sendTxtToTFT(str_buf, TXT_PRINT_TIME); - ChangePageOfTFT(PAGE_STATUS2); + changePageOfTFT(PAGE_STATUS2); } } break; @@ -1393,7 +1393,7 @@ namespace Anycubic { case 1: // return if (!isPrintingFromMedia()) // only idle status can return - ChangePageOfTFT(PAGE_FILE); + changePageOfTFT(PAGE_FILE); break; case 2: // resume print @@ -1408,7 +1408,7 @@ namespace Anycubic { printer_state = AC_printer_idle; pause_state = AC_paused_idle; resumePrint(); - ChangePageOfTFT(PAGE_STATUS2); // show pause print + changePageOfTFT(PAGE_STATUS2); // show pause print flash_time = ms + 1500; } else @@ -1417,16 +1417,16 @@ namespace Anycubic { case 3: // print stop if (isPrintingFromMedia()) - ChangePageOfTFT(PAGE_STOP_CONF); + changePageOfTFT(PAGE_STOP_CONF); break; case 4: // print change param - ChangePageOfTFT(PAGE_ADJUST); - TERN_(CASE_LIGHT_ENABLE, SendValueToTFT(getCaseLightState(), ADDRESS_PRINT_SETTING_LED_STATUS)); - TERN_(HAS_HOTEND, SendValueToTFT(uint16_t(getTargetTemp_celsius(E0)), TXT_ADJUST_HOTEND)); - TERN_(HAS_HEATED_BED, SendValueToTFT(uint16_t(getTargetTemp_celsius(BED)), TXT_ADJUST_BED)); + changePageOfTFT(PAGE_ADJUST); + TERN_(CASE_LIGHT_ENABLE, sendValueToTFT(getCaseLightState(), ADDRESS_PRINT_SETTING_LED_STATUS)); + TERN_(HAS_HOTEND, sendValueToTFT(uint16_t(getTargetTemp_celsius(E0)), TXT_ADJUST_HOTEND)); + TERN_(HAS_HEATED_BED, sendValueToTFT(uint16_t(getTargetTemp_celsius(BED)), TXT_ADJUST_BED)); feedrate_back = getFeedrate_percent(); - SendValueToTFT(uint16_t(feedrate_back), TXT_ADJUST_SPEED); + sendValueToTFT(uint16_t(feedrate_back), TXT_ADJUST_SPEED); flash_time = ms + 1500; break; } @@ -1444,13 +1444,13 @@ namespace Anycubic { DEBUG_ECHOLNPGM("print speed: ", str_buf); DEBUG_ECHOLNPGM("feedrate_back: ", feedrate_back); #endif - SendTxtToTFT(str_buf, TXT_PRINT_SPEED); + sendTxtToTFT(str_buf, TXT_PRINT_SPEED); feedrate_back = getFeedrate_percent(); } if (progress_last != getProgress_percent()) { sprintf(str_buf, "%u", getProgress_percent()); - SendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); + sendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); progress_last = getProgress_percent(); } @@ -1458,7 +1458,7 @@ namespace Anycubic { uint32_t time = getProgress_seconds_elapsed() / 60; sprintf(str_buf, "%s H ", utostr3(time / 60)); sprintf(str_buf + strlen(str_buf), "%s M", utostr3(time % 60)); - SendTxtToTFT(str_buf, TXT_PRINT_TIME); + sendTxtToTFT(str_buf, TXT_PRINT_TIME); TERN_(HAS_HOTEND, send_temperature_hotend(TXT_PRINT_HOTEND)); TERN_(HAS_HEATED_BED, send_temperature_bed(TXT_PRINT_BED)); @@ -1481,7 +1481,7 @@ namespace Anycubic { case 1: // return if (!isPrintingFromMedia()) // only is idle status can return - ChangePageOfTFT(PAGE_FILE); + changePageOfTFT(PAGE_FILE); break; case 2: // print pause @@ -1489,29 +1489,29 @@ namespace Anycubic { pausePrint(); printer_state = AC_printer_pausing; pause_state = AC_paused_idle; - ChangePageOfTFT(PAGE_WAIT_PAUSE); + changePageOfTFT(PAGE_WAIT_PAUSE); //injectCommands(F("M108")); // stop waiting temperature M109 } break; case 3: // print stop if (isPrintingFromMedia()) - ChangePageOfTFT(PAGE_STOP_CONF); + changePageOfTFT(PAGE_STOP_CONF); break; case 4: // print settings - ChangePageOfTFT(PAGE_ADJUST); - TERN_(CASE_LIGHT_ENABLE, SendValueToTFT(getCaseLightState(), ADDRESS_PRINT_SETTING_LED_STATUS)); - TERN_(HAS_HOTEND, SendValueToTFT(uint16_t(getTargetTemp_celsius(E0)), TXT_ADJUST_HOTEND)); - TERN_(HAS_HEATED_BED, SendValueToTFT(uint16_t(getTargetTemp_celsius(BED)), TXT_ADJUST_BED)); + changePageOfTFT(PAGE_ADJUST); + TERN_(CASE_LIGHT_ENABLE, sendValueToTFT(getCaseLightState(), ADDRESS_PRINT_SETTING_LED_STATUS)); + TERN_(HAS_HOTEND, sendValueToTFT(uint16_t(getTargetTemp_celsius(E0)), TXT_ADJUST_HOTEND)); + TERN_(HAS_HEATED_BED, sendValueToTFT(uint16_t(getTargetTemp_celsius(BED)), TXT_ADJUST_BED)); feedrate_back = getFeedrate_percent(); - SendValueToTFT((uint16_t)feedrate_back, TXT_ADJUST_SPEED); - TERN_(HAS_FAN, SendValueToTFT(uint16_t(getActualFan_percent(FAN0)), TXT_FAN_SPEED_TARGET)); + sendValueToTFT((uint16_t)feedrate_back, TXT_ADJUST_SPEED); + TERN_(HAS_FAN, sendValueToTFT(uint16_t(getActualFan_percent(FAN0)), TXT_FAN_SPEED_TARGET)); str_buf[0] = 0; strcat(str_buf, ftostr52sprj(getZOffset_mm()) + 3); - SendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); - //SendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); - RequestValueFromTFT(TXT_ADJUST_SPEED); // attempt to make feedrate visible on visit to this page + sendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); + //sendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); + requestValueFromTFT(TXT_ADJUST_SPEED); // attempt to make feedrate visible on visit to this page break; } @@ -1526,20 +1526,20 @@ namespace Anycubic { else sprintf(str_buf, "%d", feedrate_back); - SendTxtToTFT(str_buf, TXT_PRINT_SPEED); + sendTxtToTFT(str_buf, TXT_PRINT_SPEED); feedrate_back = getFeedrate_percent(); } if (progress_last != getProgress_percent()) { sprintf(str_buf, "%u", getProgress_percent()); - SendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); + sendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); progress_last = getProgress_percent(); } uint32_t time = getProgress_seconds_elapsed() / 60; sprintf(str_buf, "%s H ", utostr3(time / 60)); sprintf(str_buf + strlen(str_buf), "%s M", utostr3(time % 60)); - SendTxtToTFT(str_buf, TXT_PRINT_TIME); + sendTxtToTFT(str_buf, TXT_PRINT_TIME); TERN_(HAS_HOTEND, send_temperature_hotend(TXT_PRINT_HOTEND)); TERN_(HAS_HEATED_BED, send_temperature_bed(TXT_PRINT_BED)); @@ -1560,9 +1560,9 @@ namespace Anycubic { case 1: // return if (AC_printer_printing == printer_state) - ChangePageOfTFT(PAGE_STATUS2); // show pause + changePageOfTFT(PAGE_STATUS2); // show pause else if (AC_printer_paused == printer_state) - ChangePageOfTFT(PAGE_STATUS1); // show print + changePageOfTFT(PAGE_STATUS1); // show print break; #if ENABLED(MESH_EDIT_MENU) @@ -1578,8 +1578,8 @@ namespace Anycubic { char str_buf[10]; str_buf[0] = 0; strcat(str_buf, ftostr52sprj(getZOffset_mm()) + 2); - SendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); - //SendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); + sendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); + //sendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); //if (isAxisPositionKnown(Z)) { // Move Z axis // SERIAL_ECHOLNPGM("Z now:", getAxisPosition_mm(Z)); @@ -1619,8 +1619,8 @@ namespace Anycubic { char str_buf[10]; str_buf[0] = '\0'; strcat(str_buf, ftostr52sprj(getZOffset_mm()) + 2); - SendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); - //SendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); + sendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); + //sendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); //int16_t steps = mmToWholeSteps(constrain(Zshift,-0.05,0.05), Z); @@ -1655,22 +1655,22 @@ namespace Anycubic { #if ENABLED(CASE_LIGHT_ENABLE) case 4: { // light control const bool cls = !getCaseLightState(); - SendValueToTFT(cls, ADDRESS_PRINT_SETTING_LED_STATUS); + sendValueToTFT(cls, ADDRESS_PRINT_SETTING_LED_STATUS); setCaseLightState(cls); } break; #endif case 5: - ChangePageOfTFT(PAGE_DONE); + changePageOfTFT(PAGE_DONE); break; case 6: break; case 7: - TERN_(HAS_HEATED_BED, RequestValueFromTFT(TXT_ADJUST_BED)); - RequestValueFromTFT(TXT_ADJUST_SPEED); - TERN_(HAS_HOTEND, RequestValueFromTFT(TXT_ADJUST_HOTEND)); - TERN_(HAS_FAN, RequestValueFromTFT(TXT_FAN_SPEED_TARGET)); + TERN_(HAS_HEATED_BED, requestValueFromTFT(TXT_ADJUST_BED)); + requestValueFromTFT(TXT_ADJUST_SPEED); + TERN_(HAS_HOTEND, requestValueFromTFT(TXT_ADJUST_HOTEND)); + TERN_(HAS_FAN, requestValueFromTFT(TXT_FAN_SPEED_TARGET)); if (z_change == true) { injectCommands(F("M500")); @@ -1678,9 +1678,9 @@ namespace Anycubic { } if (AC_printer_printing == printer_state) - ChangePageOfTFT(PAGE_STATUS2); // show pause + changePageOfTFT(PAGE_STATUS2); // show pause else if (AC_printer_paused == printer_state) - ChangePageOfTFT(PAGE_STATUS1); // show print + changePageOfTFT(PAGE_STATUS1); // show print break; } @@ -1712,33 +1712,33 @@ namespace Anycubic { case 0: break; case 1: // return - ChangePageOfTFT(PAGE_MAIN); + changePageOfTFT(PAGE_MAIN); break; case 2: - ChangePageOfTFT(PAGE_MOVE); + changePageOfTFT(PAGE_MOVE); break; case 3: // set temperature - ChangePageOfTFT(PAGE_TEMP); + changePageOfTFT(PAGE_TEMP); #if HAS_HOTEND - SendValueToTFT(uint16_t(getActualTemp_celsius(E0)), TXT_HOTEND_NOW); - SendValueToTFT(uint16_t(getTargetTemp_celsius(E0)), TXT_HOTEND_TARGET); + sendValueToTFT(uint16_t(getActualTemp_celsius(E0)), TXT_HOTEND_NOW); + sendValueToTFT(uint16_t(getTargetTemp_celsius(E0)), TXT_HOTEND_TARGET); #endif #if HAS_HEATED_BED - SendValueToTFT(uint16_t(getActualTemp_celsius(BED)), TXT_BED_NOW); - SendValueToTFT(uint16_t(getTargetTemp_celsius(BED)), TXT_BED_TARGET); + sendValueToTFT(uint16_t(getActualTemp_celsius(BED)), TXT_BED_NOW); + sendValueToTFT(uint16_t(getTargetTemp_celsius(BED)), TXT_BED_TARGET); #endif break; case 4: - ChangePageOfTFT(PAGE_SPEED); + changePageOfTFT(PAGE_SPEED); #if HAS_FAN - SendValueToTFT(uint16_t(getActualFan_percent(FAN0)), TXT_FAN_SPEED_NOW); - SendValueToTFT(uint16_t(getTargetFan_percent(FAN0)), TXT_FAN_SPEED_TARGET); + sendValueToTFT(uint16_t(getActualFan_percent(FAN0)), TXT_FAN_SPEED_NOW); + sendValueToTFT(uint16_t(getTargetFan_percent(FAN0)), TXT_FAN_SPEED_TARGET); #endif - SendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_NOW); - SendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_TARGET); + sendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_NOW); + sendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_TARGET); break; case 5: // turn off the xyz motor @@ -1749,7 +1749,7 @@ namespace Anycubic { #if ENABLED(CASE_LIGHT_ENABLE) case 6: { // light control const bool cls = !getCaseLightState(); - SendValueToTFT(cls, ADDRESS_SYSTEM_LED_STATUS); + sendValueToTFT(cls, ADDRESS_SYSTEM_LED_STATUS); setCaseLightState(cls); } break; #endif @@ -1780,7 +1780,7 @@ namespace Anycubic { break; case 1: // return - ChangePageOfTFT(PAGE_TOOL); + changePageOfTFT(PAGE_TOOL); break; case 5: @@ -1835,17 +1835,17 @@ namespace Anycubic { case 3: move_dis = 0.1f; - SendValueToTFT(1, ADDRESS_MOVE_DISTANCE); + sendValueToTFT(1, ADDRESS_MOVE_DISTANCE); break; case 7: move_dis = 1.0f; - SendValueToTFT(2, ADDRESS_MOVE_DISTANCE); + sendValueToTFT(2, ADDRESS_MOVE_DISTANCE); break; case 11: move_dis = 10.0f; - SendValueToTFT(3, ADDRESS_MOVE_DISTANCE); + sendValueToTFT(3, ADDRESS_MOVE_DISTANCE); break; //case 14: @@ -1875,7 +1875,7 @@ namespace Anycubic { case 0: break; case 1: // return - ChangePageOfTFT(PAGE_TOOL); + changePageOfTFT(PAGE_TOOL); break; case 2: break; @@ -1886,13 +1886,13 @@ namespace Anycubic { case 6: // cooling setTargetTemp_celsius(0, E0); setTargetTemp_celsius(0, BED); - ChangePageOfTFT(PAGE_TOOL); + changePageOfTFT(PAGE_TOOL); break; case 7: // send target temp - RequestValueFromTFT(TXT_HOTEND_TARGET); - RequestValueFromTFT(TXT_BED_TARGET); - ChangePageOfTFT(PAGE_TOOL); + requestValueFromTFT(TXT_HOTEND_TARGET); + requestValueFromTFT(TXT_BED_TARGET); + changePageOfTFT(PAGE_TOOL); break; } @@ -1901,8 +1901,8 @@ namespace Anycubic { if (PENDING(ms, flash_time)) return; flash_time = ms + 1500; - SendValueToTFT(uint16_t(getActualTemp_celsius(E0)), TXT_HOTEND_NOW); - SendValueToTFT(uint16_t(getActualTemp_celsius(BED)), TXT_BED_NOW); + sendValueToTFT(uint16_t(getActualTemp_celsius(E0)), TXT_HOTEND_NOW); + sendValueToTFT(uint16_t(getActualTemp_celsius(BED)), TXT_BED_NOW); } void DgusTFT::page10() { @@ -1917,7 +1917,7 @@ namespace Anycubic { switch (key_value) { case 0: break; case 1: // return - ChangePageOfTFT(PAGE_TOOL); + changePageOfTFT(PAGE_TOOL); break; case 2: break; @@ -1926,9 +1926,9 @@ namespace Anycubic { case 5: break; case 6: // ok - RequestValueFromTFT(TXT_FAN_SPEED_TARGET); - RequestValueFromTFT(TXT_PRINT_SPEED_TARGET); - ChangePageOfTFT(PAGE_TOOL); + requestValueFromTFT(TXT_FAN_SPEED_TARGET); + requestValueFromTFT(TXT_PRINT_SPEED_TARGET); + changePageOfTFT(PAGE_TOOL); break; } @@ -1937,8 +1937,8 @@ namespace Anycubic { if (PENDING(ms, flash_time)) return; flash_time = ms + 1500; - SendValueToTFT(uint16_t(getActualFan_percent(FAN0)), TXT_FAN_SPEED_NOW); - SendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_NOW); + sendValueToTFT(uint16_t(getActualFan_percent(FAN0)), TXT_FAN_SPEED_NOW); + sendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_NOW); } void DgusTFT::page11() { @@ -1953,7 +1953,7 @@ namespace Anycubic { case 0: break; case 1: // return - ChangePageOfTFT(PAGE_MAIN); + changePageOfTFT(PAGE_MAIN); store_changes(); break; @@ -1972,12 +1972,12 @@ namespace Anycubic { char str_ver[32]; //sprintf(str_ver, "%04d-%02d-%02d %02d:%02d:%02d\n", BUILD_YEAR, BUILD_MONTH, BUILD_DAY, BUILD_HOUR, BUILD_MIN, BUILD_SEC); sprintf(str_ver, MAIN_BOARD_FIRMWARE_VER); - SendTxtToTFT(str_ver, TXT_VERSION); - ChangePageOfTFT(PAGE_ABOUT); + sendTxtToTFT(str_ver, TXT_VERSION); + changePageOfTFT(PAGE_ABOUT); } break; case 6: - ChangePageOfTFT(PAGE_RECORD); + changePageOfTFT(PAGE_RECORD); break; } } @@ -1993,7 +1993,7 @@ namespace Anycubic { switch (key_value) { case 0: break; case 1: // return - ChangePageOfTFT(PAGE_SYSTEM_CHS_AUDIO_ON); + changePageOfTFT(PAGE_SYSTEM_CHS_AUDIO_ON); break; } } @@ -2047,16 +2047,16 @@ namespace Anycubic { case 0: break; case 1: // return - ChangePageOfTFT(PAGE_MAIN); + changePageOfTFT(PAGE_MAIN); break; case 2: - ChangePageOfTFT(PAGE_PreLEVEL); + changePageOfTFT(PAGE_PreLEVEL); break; #if HAS_HOTEND || HAS_HEATED_BED case 3: { - ChangePageOfTFT(PAGE_PREHEAT); + changePageOfTFT(PAGE_PREHEAT); TERN_(HAS_HOTEND, send_temperature_hotend(TXT_PREHEAT_HOTEND)); TERN_(HAS_HEATED_BED, send_temperature_bed(TXT_PREHEAT_BED)); } break; @@ -2065,7 +2065,7 @@ namespace Anycubic { #if HAS_EXTRUDERS case 4: { send_temperature_hotend(TXT_FILAMENT_TEMP); - ChangePageOfTFT(PAGE_FILAMENT); + changePageOfTFT(PAGE_FILAMENT); } break; #endif } @@ -2082,13 +2082,13 @@ namespace Anycubic { switch (key_value) { case 0: break; case 1: // return - ChangePageOfTFT(PAGE_PREPARE); + changePageOfTFT(PAGE_PREPARE); break; case 2: if (!isPrinting()) { - //ChangePageOfTFT(PAGE_LEVEL_ENSURE); - ChangePageOfTFT(PAGE_CHS_PROBE_PRECHECK); + //changePageOfTFT(PAGE_LEVEL_ENSURE); + changePageOfTFT(PAGE_CHS_PROBE_PRECHECK); } break; @@ -2096,13 +2096,13 @@ namespace Anycubic { char str_buf[10]; str_buf[0] = '\0'; strcat(str_buf, ftostr52sprj(getZOffset_mm()) + 2); - SendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); - //SendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); - ChangePageOfTFT(PAGE_LEVEL_ADVANCE); + sendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); + //sendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); + changePageOfTFT(PAGE_LEVEL_ADVANCE); } break; case 4: - ChangePageOfTFT(PAGE_AUTO_OFFSET); + changePageOfTFT(PAGE_AUTO_OFFSET); break; } } @@ -2120,7 +2120,7 @@ namespace Anycubic { case 0: break; case 1: // return - ChangePageOfTFT(PAGE_PreLEVEL); + changePageOfTFT(PAGE_PreLEVEL); break; case 2: { @@ -2131,8 +2131,8 @@ namespace Anycubic { char str_buf[10]; strcat(str_buf, ftostr52sprj(getZOffset_mm()) + 2); - SendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); - //SendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); + sendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); + //sendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); if (isAxisPositionKnown(Z)) { const float currZpos = getAxisPosition_mm(Z); @@ -2150,8 +2150,8 @@ namespace Anycubic { char str_buf[10]; strcat(str_buf, ftostr52sprj(getZOffset_mm()) + 2); - SendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); - //SendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); + sendTxtToTFT(str_buf, TXT_LEVEL_OFFSET); + //sendTxtToTFT(ftostr52sprj(getZOffset_mm()), TXT_LEVEL_OFFSET); if (isAxisPositionKnown(Z)) { // Move Z axis const float currZpos = getAxisPosition_mm(Z); @@ -2173,7 +2173,7 @@ namespace Anycubic { } injectCommands(F("M500")); #endif - ChangePageOfTFT(PAGE_PREPARE); + changePageOfTFT(PAGE_PREPARE); break; } } @@ -2193,19 +2193,19 @@ namespace Anycubic { case 0: break; case 1: // return - ChangePageOfTFT(PAGE_PREPARE); + changePageOfTFT(PAGE_PREPARE); break; case 2: // PLA TERN_(HAS_HOTEND, setTargetTemp_celsius(190, E0)); TERN_(HAS_HEATED_BED, setTargetTemp_celsius(60, BED)); - ChangePageOfTFT(PAGE_PREHEAT); + changePageOfTFT(PAGE_PREHEAT); break; case 3: // ABS TERN_(HAS_HOTEND, setTargetTemp_celsius(240, E0)); TERN_(HAS_HEATED_BED, setTargetTemp_celsius(100, BED)); - ChangePageOfTFT(PAGE_PREHEAT); + changePageOfTFT(PAGE_PREHEAT); break; } @@ -2238,13 +2238,13 @@ namespace Anycubic { case 1: // return filament_status = 0; injectCommands(F("G90")); - ChangePageOfTFT(PAGE_PREPARE); + changePageOfTFT(PAGE_PREPARE); break; case 2: // Filament in if (getActualTemp_celsius(E0) < 220) { filament_status = 0; - ChangePageOfTFT(PAGE_FILAMENT_HEAT); + changePageOfTFT(PAGE_FILAMENT_HEAT); } else { filament_status = 1; @@ -2255,7 +2255,7 @@ namespace Anycubic { case 3: // filament out if (getActualTemp_celsius(E0) < 220) { filament_status = 0; - ChangePageOfTFT(PAGE_FILAMENT_HEAT); + changePageOfTFT(PAGE_FILAMENT_HEAT); } else { filament_status = 2; @@ -2301,7 +2301,7 @@ namespace Anycubic { switch (key_value) { case 0: break; case 1: // return - ChangePageOfTFT(page_index_last); + changePageOfTFT(page_index_last); break; } @@ -2324,7 +2324,7 @@ namespace Anycubic { case 0: break; case 1: // return - ChangePageOfTFT(page_index_last); + changePageOfTFT(page_index_last); break; case 2: break; @@ -2350,7 +2350,7 @@ namespace Anycubic { case 1: // OK to finish TERN_(CASE_LIGHT_ENABLE, setCaseLightState(false)); - ChangePageOfTFT(PAGE_MAIN); + changePageOfTFT(PAGE_MAIN); break; case 2: break; @@ -2373,8 +2373,8 @@ namespace Anycubic { switch (key_value) { case 0: break; - case 1: ChangePageOfTFT(page_index_last); break; // return - case 2: ChangePageOfTFT(page_index_last); break; + case 1: changePageOfTFT(page_index_last); break; // return + case 2: changePageOfTFT(page_index_last); break; } static millis_t flash_time = 0; @@ -2394,8 +2394,8 @@ namespace Anycubic { switch (key_value) { case 0: break; - case 1: ChangePageOfTFT(page_index_last); break; // return - case 2: ChangePageOfTFT(page_index_last); break; + case 1: changePageOfTFT(page_index_last); break; // return + case 2: changePageOfTFT(page_index_last); break; } static millis_t flash_time = 0; @@ -2422,10 +2422,10 @@ namespace Anycubic { DEBUG_PRINT_PAUSED_STATE(pause_state); #endif if (AC_printer_printing == printer_state) - ChangePageOfTFT(PAGE_STATUS2); // show pause + changePageOfTFT(PAGE_STATUS2); // show pause else if (AC_printer_paused == printer_state) { //injectCommands(F("M108")); - ChangePageOfTFT(PAGE_STATUS1); // show resume + changePageOfTFT(PAGE_STATUS1); // show resume } break; } @@ -2447,7 +2447,7 @@ namespace Anycubic { switch (key_value) { case 0: break; - case 1: ChangePageOfTFT(page_index_last); break; // return + case 1: changePageOfTFT(page_index_last); break; // return case 2: break; } @@ -2474,7 +2474,7 @@ namespace Anycubic { printer_state = AC_printer_stopping; stopPrint(); message_index = 6; - ChangePageOfTFT(PAGE_MAIN); + changePageOfTFT(PAGE_MAIN); } else { if (printer_state == AC_printer_resuming_from_power_outage) @@ -2485,9 +2485,9 @@ namespace Anycubic { case 2: // return if (AC_printer_printing == printer_state) - ChangePageOfTFT(PAGE_STATUS2); // show pause + changePageOfTFT(PAGE_STATUS2); // show pause else if (AC_printer_paused == printer_state) - ChangePageOfTFT(PAGE_STATUS1); // show print + changePageOfTFT(PAGE_STATUS1); // show print break; } @@ -2508,7 +2508,7 @@ namespace Anycubic { switch (key_value) { case 0: break; - case 1: ChangePageOfTFT(page_index_last); break; // return + case 1: changePageOfTFT(page_index_last); break; // return case 2: break; } @@ -2532,7 +2532,7 @@ namespace Anycubic { case 1: // return TERN_(CASE_LIGHT_ENABLE, setCaseLightState(false)); - ChangePageOfTFT(PAGE_MAIN); + changePageOfTFT(PAGE_MAIN); break; case 2: break; @@ -2558,7 +2558,7 @@ namespace Anycubic { case 1: // return setTargetTemp_celsius(230, E0); - ChangePageOfTFT(PAGE_FILAMENT); + changePageOfTFT(PAGE_FILAMENT); break; } @@ -2629,21 +2629,21 @@ namespace Anycubic { ) { setTargetTemp_celsius(LEVELING_NOZZLE_TEMP, E0); setTargetTemp_celsius(LEVELING_BED_TEMP, BED); - ChangePageOfTFT(PAGE_CHS_PROBE_PREHEATING); + changePageOfTFT(PAGE_CHS_PROBE_PREHEATING); } else - ChangePageOfTFT(PAGE_LEVELING); + changePageOfTFT(PAGE_LEVELING); #else - ChangePageOfTFT(PAGE_LEVELING); + changePageOfTFT(PAGE_LEVELING); #endif #endif - ChangePageOfTFT(PAGE_LEVELING); + changePageOfTFT(PAGE_LEVELING); break; case 2: - ChangePageOfTFT(PAGE_PreLEVEL); + changePageOfTFT(PAGE_PreLEVEL); break; } @@ -2674,7 +2674,7 @@ namespace Anycubic { if (pop_up_index == 25) { pop_up_index = 100; - ChangePageOfTFT(PAGE_PreLEVEL); + changePageOfTFT(PAGE_PreLEVEL); } } @@ -2692,7 +2692,7 @@ namespace Anycubic { switch (key_value) { case 0: break; - case 1: ChangePageOfTFT(PAGE_PreLEVEL); break; + case 1: changePageOfTFT(PAGE_PreLEVEL); break; case 2: { injectCommands(F("M1024 S3")); // -1 @@ -2725,7 +2725,7 @@ namespace Anycubic { case 0: break; case 1: - ChangePageOfTFT(PAGE_MAIN); + changePageOfTFT(PAGE_MAIN); store_changes(); break; @@ -2744,12 +2744,12 @@ namespace Anycubic { char str_ver[32]; //sprintf(str_ver, "%04d-%02d-%02d %02d:%02d:%02d\n", BUILD_YEAR, BUILD_MONTH, BUILD_DAY, BUILD_HOUR, BUILD_MIN, BUILD_SEC); sprintf(str_ver, MAIN_BOARD_FIRMWARE_VER); - SendTxtToTFT(str_ver, TXT_VERSION); - ChangePageOfTFT(PAGE_ABOUT); + sendTxtToTFT(str_ver, TXT_VERSION); + changePageOfTFT(PAGE_ABOUT); break; case 6: - ChangePageOfTFT(PAGE_RECORD); + changePageOfTFT(PAGE_RECORD); break; } } @@ -2763,7 +2763,7 @@ namespace Anycubic { //DEBUG_ECHOLNPGM("update feedrate percent"); } #endif - SendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_NOW); + sendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_NOW); } void DgusTFT::page125() { // first time into page 125 the feedrate percent is not set @@ -2775,7 +2775,7 @@ namespace Anycubic { //DEBUG_ECHOLNPGM("update feedrate percent"); } #endif - SendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_NOW); + sendValueToTFT(uint16_t(getFeedrate_percent()), TXT_PRINT_SPEED_NOW); } void DgusTFT::page170() { // ENG Mute handler @@ -2790,7 +2790,7 @@ namespace Anycubic { case 0: break; case 1: - ChangePageOfTFT(PAGE_MAIN); + changePageOfTFT(PAGE_MAIN); store_changes(); break; @@ -2809,12 +2809,12 @@ namespace Anycubic { char str_ver[32]; //sprintf(str_ver, "%04d-%02d-%02d %02d:%02d:%02d\n", BUILD_YEAR, BUILD_MONTH, BUILD_DAY, BUILD_HOUR, BUILD_MIN, BUILD_SEC); sprintf(str_ver, MAIN_BOARD_FIRMWARE_VER); - SendTxtToTFT(str_ver, TXT_VERSION); - ChangePageOfTFT(PAGE_ABOUT); + sendTxtToTFT(str_ver, TXT_VERSION); + changePageOfTFT(PAGE_ABOUT); break; case 6: - ChangePageOfTFT(PAGE_RECORD); + changePageOfTFT(PAGE_RECORD); break; } } @@ -2836,29 +2836,29 @@ namespace Anycubic { case 0: break; case 1: { // resume - ChangePageOfTFT(PAGE_OUTAGE_RECOVERY); + changePageOfTFT(PAGE_OUTAGE_RECOVERY); #if ENABLED(LONG_FILENAME_HOST_SUPPORT) card.getLongPath(filename, recovery.info.sd_filename); filename[17] = '\0'; - SendTxtToTFT(filename, TXT_OUTAGE_RECOVERY_FILE); + sendTxtToTFT(filename, TXT_OUTAGE_RECOVERY_FILE); #else - SendTxtToTFT(recovery.info.sd_filename, TXT_OUTAGE_RECOVERY_FILE); + sendTxtToTFT(recovery.info.sd_filename, TXT_OUTAGE_RECOVERY_FILE); #endif char str_buf[20] = { '\0' }; sprintf(str_buf, "%u", uint16_t(getFeedrate_percent())); - SendTxtToTFT(str_buf, TXT_PRINT_SPEED); + sendTxtToTFT(str_buf, TXT_PRINT_SPEED); sprintf(str_buf, "%u", uint16_t(getProgress_percent())); - SendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); + sendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); - ChangePageOfTFT(PAGE_STATUS2); // show pause + changePageOfTFT(PAGE_STATUS2); // show pause injectCommands(F("M355 S1\nM1000")); // case light on, home and start recovery } break; case 2: // cancel printer_state = AC_printer_idle; - ChangePageOfTFT(PAGE_MAIN); + changePageOfTFT(PAGE_MAIN); injectCommands(F("M355 S0\nM1000 C")); // cancel recovery break; } @@ -2879,29 +2879,29 @@ namespace Anycubic { case 0: break; case 1: { // resume - ChangePageOfTFT(PAGE_OUTAGE_RECOVERY); + changePageOfTFT(PAGE_OUTAGE_RECOVERY); #if ENABLED(LONG_FILENAME_HOST_SUPPORT) card.getLongPath(filename, recovery.info.sd_filename); filename[17] = '\0'; - SendTxtToTFT(filename, TXT_OUTAGE_RECOVERY_FILE); + sendTxtToTFT(filename, TXT_OUTAGE_RECOVERY_FILE); #else - SendTxtToTFT(recovery.info.sd_filename, TXT_OUTAGE_RECOVERY_FILE); + sendTxtToTFT(recovery.info.sd_filename, TXT_OUTAGE_RECOVERY_FILE); #endif char str_buf[20] = { '\0' }; sprintf(str_buf, "%u", uint16_t(getFeedrate_percent())); - SendTxtToTFT(str_buf, TXT_PRINT_SPEED); + sendTxtToTFT(str_buf, TXT_PRINT_SPEED); sprintf(str_buf, "%u", uint16_t(getProgress_percent())); - SendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); + sendTxtToTFT(str_buf, TXT_PRINT_PROGRESS); - ChangePageOfTFT(PAGE_STATUS2); // show pause + changePageOfTFT(PAGE_STATUS2); // show pause injectCommands(F("M355 S1\nM1000")); // case light on, home and start recovery } break; case 2: // cancel printer_state = AC_printer_idle; - ChangePageOfTFT(PAGE_MAIN); + changePageOfTFT(PAGE_MAIN); injectCommands(F("M355 S0\nM1000 C")); // cancel recovery break; } @@ -2976,14 +2976,14 @@ namespace Anycubic { } if (PAGE_STATUS1 == page_index_last_2 || PAGE_STATUS2 == page_index_last_2 || PAGE_PRINT_FINISH == page_index_last) - ChangePageOfTFT(PAGE_MAIN); + changePageOfTFT(PAGE_MAIN); else - ChangePageOfTFT(page_index_last_2); + changePageOfTFT(page_index_last_2); } else { if (lcd_info.language == ENG && page_index_last > 120) page_index_last -= 120; - ChangePageOfTFT(page_index_last); + changePageOfTFT(page_index_last); } onSurviveInKilled(); @@ -3012,10 +3012,10 @@ namespace Anycubic { if (isPrinting() || isPrintingPaused() || isPrintingFromMedia()) { printer_state = AC_printer_stopping; stopPrint(); - ChangePageOfTFT(PAGE_MAIN); + changePageOfTFT(PAGE_MAIN); } else - ChangePageOfTFT(page_index_last); + changePageOfTFT(page_index_last); onSurviveInKilled(); break; @@ -3041,7 +3041,7 @@ namespace Anycubic { //DEBUG_ECHOLNPGM("page_index_last_2: ", page_index_last_2); #endif onSurviveInKilled(); - ChangePageOfTFT(PAGE_PreLEVEL); + changePageOfTFT(PAGE_PreLEVEL); break; default: break; @@ -3081,7 +3081,7 @@ namespace Anycubic { if (getProbeState()) { // triggered too early probe_check_counter = 0; probe_tare_flag = 0; - ChangePageOfTFT(PAGE_CHS_PROBE_PRECHECK_FAILED); + changePageOfTFT(PAGE_CHS_PROBE_PRECHECK_FAILED); } probe_tare_flag = 1; } @@ -3090,7 +3090,7 @@ namespace Anycubic { case 1: // cancel probe_check_counter = 0; probe_tare_flag = 0; - ChangePageOfTFT(PAGE_PreLEVEL); + changePageOfTFT(PAGE_PreLEVEL); break; default: break; @@ -3102,7 +3102,7 @@ namespace Anycubic { if (!probe_state_last && getProbeState()) { probe_check_counter = 0; probe_tare_flag = 0; - ChangePageOfTFT(PAGE_CHS_PROBE_PRECHECK_OK); + changePageOfTFT(PAGE_CHS_PROBE_PRECHECK_OK); } probe_state_last = getProbeState(); @@ -3110,7 +3110,7 @@ namespace Anycubic { if (probe_check_counter++ >= 200) { // waiting for 1 min probe_check_counter = 0; probe_tare_flag = 0; - ChangePageOfTFT(PAGE_CHS_PROBE_PRECHECK_FAILED); + changePageOfTFT(PAGE_CHS_PROBE_PRECHECK_FAILED); } } @@ -3138,7 +3138,7 @@ namespace Anycubic { injectCommands(F("G28\nG29")); printer_state = AC_printer_probing; - ChangePageOfTFT(PAGE_LEVELING); + changePageOfTFT(PAGE_LEVELING); } void DgusTFT::page203() { // probe precheck failed @@ -3174,24 +3174,24 @@ namespace Anycubic { switch (pop_up_index) { case 10: // T0 error if (page_index_now != PAGE_ABNORMAL) - ChangePageOfTFT(PAGE_ABNORMAL); + changePageOfTFT(PAGE_ABNORMAL); pop_up_index = 100; break; case 15: // filament lack case 23: if (page_index_now != PAGE_FILAMENT_LACK) - ChangePageOfTFT(PAGE_FILAMENT_LACK); + changePageOfTFT(PAGE_FILAMENT_LACK); pop_up_index = 100; break; case 16: // stop wait - ChangePageOfTFT(PAGE_WAIT_STOP); + changePageOfTFT(PAGE_WAIT_STOP); pop_up_index = 100; break; case 18: - ChangePageOfTFT(PAGE_STATUS1); + changePageOfTFT(PAGE_STATUS1); pop_up_index = 100; break; @@ -3200,14 +3200,14 @@ namespace Anycubic { char str_buf[20]; sprintf(str_buf, "%s H ", utostr3(time / 60)); sprintf(str_buf + strlen(str_buf), "%s M", utostr3(time % 60)); - SendTxtToTFT(str_buf, TXT_FINISH_TIME); - ChangePageOfTFT(PAGE_PRINT_FINISH); + sendTxtToTFT(str_buf, TXT_FINISH_TIME); + changePageOfTFT(PAGE_PRINT_FINISH); //tftSendLn(AC_msg_print_complete); // no idea why this causes a compile error pop_up_index = 100; } break; case 25: // LEVEL DONE - ChangePageOfTFT(PAGE_PreLEVEL); + changePageOfTFT(PAGE_PreLEVEL); pop_up_index = 100; break; } diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h index 63803d209f..371066a569 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.h @@ -453,7 +453,7 @@ namespace Anycubic { static void tftSend(FSTR_P const=nullptr); static void tftSendLn(FSTR_P const=nullptr); static bool readTFTCommand(); - static int8_t Findcmndpos(const char *, const char); + static int8_t findCmdPos(const char *, const char); static void checkHeaters(); static void sendFileList(int8_t); static void selectFile(); @@ -475,5 +475,5 @@ namespace Anycubic { }; - extern DgusTFT Dgus; + extern DgusTFT dgus; } diff --git a/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp b/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp index 6990a23f7b..cf87bacf3b 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp @@ -37,17 +37,17 @@ using namespace Anycubic; namespace ExtUI { - void onStartup() { Dgus.startup(); } + void onStartup() { dgus.startup(); } - void onIdle() { Dgus.idleLoop(); } + void onIdle() { dgus.idleLoop(); } void onPrinterKilled(FSTR_P const error, FSTR_P const component) { - Dgus.printerKilled(error, component); + dgus.printerKilled(error, component); } - void onMediaInserted() { Dgus.mediaEvent(AC_media_inserted); } - void onMediaError() { Dgus.mediaEvent(AC_media_error); } - void onMediaRemoved() { Dgus.mediaEvent(AC_media_removed); } + void onMediaInserted() { dgus.mediaEvent(AC_media_inserted); } + void onMediaError() { dgus.mediaEvent(AC_media_error); } + void onMediaRemoved() { dgus.mediaEvent(AC_media_removed); } void onPlayTone(const uint16_t frequency, const uint16_t duration) { #if ENABLED(SPEAKER) @@ -55,22 +55,22 @@ namespace ExtUI { #endif } - void onPrintTimerStarted() { Dgus.timerEvent(AC_timer_started); } - void onPrintTimerPaused() { Dgus.timerEvent(AC_timer_paused); } - void onPrintTimerStopped() { Dgus.timerEvent(AC_timer_stopped); } + void onPrintTimerStarted() { dgus.timerEvent(AC_timer_started); } + void onPrintTimerPaused() { dgus.timerEvent(AC_timer_paused); } + void onPrintTimerStopped() { dgus.timerEvent(AC_timer_stopped); } void onPrintDone() {} - void onFilamentRunout(const extruder_t) { Dgus.filamentRunout(); } + void onFilamentRunout(const extruder_t) { dgus.filamentRunout(); } - void onUserConfirmRequired(const char * const msg) { Dgus.confirmationRequest(msg); } - void onStatusChanged(const char * const msg) { Dgus.statusChange(msg); } + void onUserConfirmRequired(const char * const msg) { dgus.confirmationRequest(msg); } + void onStatusChanged(const char * const msg) { dgus.statusChange(msg); } - void onHomingStart() { Dgus.HomingStart(); } - void onHomingDone() { Dgus.HomingComplete(); } + void onHomingStart() { dgus.homingStart(); } + void onHomingDone() { dgus.homingComplete(); } void onFactoryReset() { - Dgus.page_index_now = 121; - Dgus.lcd_info.audio_on = DISABLED(SPEAKER); + dgus.page_index_now = 121; + dgus.lcd_info.audio_on = DISABLED(SPEAKER); } void onStoreSettings(char *buff) { @@ -78,8 +78,8 @@ namespace ExtUI { // permanent data to be stored, it can write up to eeprom_data_size bytes // into buff. - static_assert(sizeof(Dgus.lcd_info) <= ExtUI::eeprom_data_size); - memcpy(buff, &Dgus.lcd_info, sizeof(Dgus.lcd_info)); + static_assert(sizeof(dgus.lcd_info) <= ExtUI::eeprom_data_size); + memcpy(buff, &dgus.lcd_info, sizeof(dgus.lcd_info)); } void onLoadSettings(const char *buff) { @@ -87,15 +87,15 @@ namespace ExtUI { // needs to retrieve data, it should copy up to eeprom_data_size bytes // from buff - static_assert(sizeof(Dgus.lcd_info) <= ExtUI::eeprom_data_size); - memcpy(&Dgus.lcd_info, buff, sizeof(Dgus.lcd_info)); - memcpy(&Dgus.lcd_info_back, buff, sizeof(Dgus.lcd_info_back)); + static_assert(sizeof(dgus.lcd_info) <= ExtUI::eeprom_data_size); + memcpy(&dgus.lcd_info, buff, sizeof(dgus.lcd_info)); + memcpy(&dgus.lcd_info_back, buff, sizeof(dgus.lcd_info_back)); } void onPostprocessSettings() { // Called after loading or resetting stored settings - Dgus.ParamInit(); - Dgus.PowerLoss(); + dgus.paramInit(); + dgus.powerLoss(); } void onSettingsStored(const bool success) { @@ -127,11 +127,11 @@ namespace ExtUI { #if ENABLED(POWER_LOSS_RECOVERY) // Called when power-loss is enabled/disabled - void onSetPowerLoss(const bool) { Dgus.PowerLoss(); } + void onSetPowerLoss(const bool) { dgus.powerLoss(); } // Called when power-loss state is detected void onPowerLoss() { /* handled internally */ } // Called on resume from power-loss - void onPowerLossResume() { Dgus.powerLossRecovery(); } + void onPowerLossResume() { dgus.powerLossRecovery(); } #endif #if HAS_PID_HEATING diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp index b0aeacbfdf..8f970e094f 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.cpp @@ -32,7 +32,7 @@ #include "../../../gcode/queue.h" #if HAS_MEDIA - bool DGUSSetupHandler::Print() { + bool DGUSSetupHandler::print() { screen.filelist.refresh(); while (!screen.filelist.isAtRootDir()) { @@ -46,7 +46,7 @@ } #endif -bool DGUSSetupHandler::PrintStatus() { +bool DGUSSetupHandler::printStatus() { if (ExtUI::isPrinting() || ExtUI::isPrintingPaused()) { return true; } @@ -55,7 +55,7 @@ bool DGUSSetupHandler::PrintStatus() { return false; } -bool DGUSSetupHandler::PrintAdjust() { +bool DGUSSetupHandler::printAdjust() { if (ExtUI::isPrinting() || ExtUI::isPrintingPaused()) { return true; } @@ -64,7 +64,7 @@ bool DGUSSetupHandler::PrintAdjust() { return false; } -bool DGUSSetupHandler::LevelingMenu() { +bool DGUSSetupHandler::levelingMenu() { ExtUI::setLevelingActive(screen.leveling_active); if (!screen.isPrinterIdle()) { @@ -87,7 +87,7 @@ bool DGUSSetupHandler::LevelingMenu() { return false; } -bool DGUSSetupHandler::LevelingManual() { +bool DGUSSetupHandler::levelingManual() { ExtUI::setLevelingActive(false); if (ExtUI::isPositionKnown()) { @@ -106,7 +106,7 @@ bool DGUSSetupHandler::LevelingManual() { return false; } -bool DGUSSetupHandler::LevelingOffset() { +bool DGUSSetupHandler::levelingOffset() { screen.offset_steps = DGUS_Data::StepSize::MMP1; if (!screen.isPrinterIdle()) { @@ -135,7 +135,7 @@ bool DGUSSetupHandler::LevelingOffset() { return false; } -bool DGUSSetupHandler::LevelingAutomatic() { +bool DGUSSetupHandler::levelingAutomatic() { if (ExtUI::getLevelingIsValid()) { screen.leveling_active = true; @@ -145,21 +145,21 @@ bool DGUSSetupHandler::LevelingAutomatic() { return true; } -bool DGUSSetupHandler::LevelingProbing() { +bool DGUSSetupHandler::levelingProbing() { screen.probing_icons[0] = 0; screen.probing_icons[1] = 0; return true; } -bool DGUSSetupHandler::Filament() { +bool DGUSSetupHandler::filament() { screen.filament_extruder = DGUS_Data::Extruder::CURRENT; screen.filament_length = DGUS_DEFAULT_FILAMENT_LEN; return true; } -bool DGUSSetupHandler::Move() { +bool DGUSSetupHandler::move() { screen.move_steps = DGUS_Data::StepSize::MM10; if (!screen.isPrinterIdle()) { @@ -170,7 +170,7 @@ bool DGUSSetupHandler::Move() { return true; } -bool DGUSSetupHandler::Gcode() { +bool DGUSSetupHandler::gcode() { ZERO(screen.gcode); if (dgus.gui_version < 0x30 || dgus.os_version < 0x21) { @@ -181,14 +181,14 @@ bool DGUSSetupHandler::Gcode() { return true; } -bool DGUSSetupHandler::PID() { +bool DGUSSetupHandler::pid() { screen.pid_heater = DGUS_Data::Heater::H0; screen.pid_temp = DGUS_PLA_TEMP_HOTEND; return true; } -bool DGUSSetupHandler::Infos() { +bool DGUSSetupHandler::infos() { screen.debug_count = 0; return true; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.h b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.h index 10063446b7..67edfee484 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSSetupHandler.h @@ -24,19 +24,19 @@ namespace DGUSSetupHandler { #if HAS_MEDIA - bool Print(); + bool print(); #endif - bool PrintStatus(); - bool PrintAdjust(); - bool LevelingMenu(); - bool LevelingOffset(); - bool LevelingManual(); - bool LevelingAutomatic(); - bool LevelingProbing(); - bool Filament(); - bool Move(); - bool Gcode(); - bool PID(); - bool Infos(); + bool printStatus(); + bool printAdjust(); + bool levelingMenu(); + bool levelingOffset(); + bool levelingManual(); + bool levelingAutomatic(); + bool levelingProbing(); + bool filament(); + bool move(); + bool gcode(); + bool pid(); + bool infos(); } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.cpp b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.cpp index e01f6ab3a6..502ac2a6af 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenSetup.cpp @@ -34,20 +34,20 @@ const struct DGUS_ScreenSetup screen_setup_list[] PROGMEM = { #if HAS_MEDIA - SETUP_HELPER(DGUS_ScreenID::PRINT, &DGUSSetupHandler::Print), + SETUP_HELPER(DGUS_ScreenID::PRINT, &DGUSSetupHandler::print), #endif - SETUP_HELPER(DGUS_ScreenID::PRINT_STATUS, &DGUSSetupHandler::PrintStatus), - SETUP_HELPER(DGUS_ScreenID::PRINT_ADJUST, &DGUSSetupHandler::PrintAdjust), - SETUP_HELPER(DGUS_ScreenID::LEVELING_MENU, &DGUSSetupHandler::LevelingMenu), - SETUP_HELPER(DGUS_ScreenID::LEVELING_OFFSET, &DGUSSetupHandler::LevelingOffset), - SETUP_HELPER(DGUS_ScreenID::LEVELING_MANUAL, &DGUSSetupHandler::LevelingManual), - SETUP_HELPER(DGUS_ScreenID::LEVELING_AUTOMATIC, &DGUSSetupHandler::LevelingAutomatic), - SETUP_HELPER(DGUS_ScreenID::LEVELING_PROBING, &DGUSSetupHandler::LevelingProbing), - SETUP_HELPER(DGUS_ScreenID::FILAMENT, &DGUSSetupHandler::Filament), - SETUP_HELPER(DGUS_ScreenID::MOVE, &DGUSSetupHandler::Move), - SETUP_HELPER(DGUS_ScreenID::GCODE, &DGUSSetupHandler::Gcode), - SETUP_HELPER(DGUS_ScreenID::PID, &DGUSSetupHandler::PID), - SETUP_HELPER(DGUS_ScreenID::INFOS, &DGUSSetupHandler::Infos), + SETUP_HELPER(DGUS_ScreenID::PRINT_STATUS, &DGUSSetupHandler::printStatus), + SETUP_HELPER(DGUS_ScreenID::PRINT_ADJUST, &DGUSSetupHandler::printAdjust), + SETUP_HELPER(DGUS_ScreenID::LEVELING_MENU, &DGUSSetupHandler::levelingMenu), + SETUP_HELPER(DGUS_ScreenID::LEVELING_OFFSET, &DGUSSetupHandler::levelingOffset), + SETUP_HELPER(DGUS_ScreenID::LEVELING_MANUAL, &DGUSSetupHandler::levelingManual), + SETUP_HELPER(DGUS_ScreenID::LEVELING_AUTOMATIC, &DGUSSetupHandler::levelingAutomatic), + SETUP_HELPER(DGUS_ScreenID::LEVELING_PROBING, &DGUSSetupHandler::levelingProbing), + SETUP_HELPER(DGUS_ScreenID::FILAMENT, &DGUSSetupHandler::filament), + SETUP_HELPER(DGUS_ScreenID::MOVE, &DGUSSetupHandler::move), + SETUP_HELPER(DGUS_ScreenID::GCODE, &DGUSSetupHandler::gcode), + SETUP_HELPER(DGUS_ScreenID::PID, &DGUSSetupHandler::pid), + SETUP_HELPER(DGUS_ScreenID::INFOS, &DGUSSetupHandler::infos), SETUP_HELPER((DGUS_ScreenID)0, nullptr) }; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp index e9e3940a08..68e405776e 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp @@ -50,7 +50,7 @@ namespace ExtUI { screen.printerKilled(error, component); } - void onMediaInserted() { TERN_(HAS_MEDIA, screen.sDCardInserted()); } + void onMediaInserted() { TERN_(HAS_MEDIA, screen.sdCardInserted()); } void onMediaError() { TERN_(HAS_MEDIA, screen.sdCardError()); } void onMediaRemoved() { TERN_(HAS_MEDIA, screen.sdCardRemoved()); } diff --git a/Marlin/src/lcd/extui/mks_ui/SPI_TFT.cpp b/Marlin/src/lcd/extui/mks_ui/SPI_TFT.cpp index 42abd4bf64..6cbe13e9fd 100644 --- a/Marlin/src/lcd/extui/mks_ui/SPI_TFT.cpp +++ b/Marlin/src/lcd/extui/mks_ui/SPI_TFT.cpp @@ -37,29 +37,29 @@ TFT SPI_TFT; // use SPI1 for the spi tft. -void TFT::spi_init(uint8_t spiRate) { - tftio.Init(); +void TFT::spiInit(uint8_t spiRate) { + tftio.init(); } -void TFT::SetPoint(uint16_t x, uint16_t y, uint16_t point) { +void TFT::setPoint(uint16_t x, uint16_t y, uint16_t point) { if ((x > 480) || (y > 320)) return; setWindow(x, y, 1, 1); - tftio.WriteMultiple(point, (uint16_t)1); + tftio.writeMultiple(point, (uint16_t)1); } void TFT::setWindow(uint16_t x, uint16_t y, uint16_t with, uint16_t height) { tftio.set_window(x, y, (x + with - 1), (y + height - 1)); } -void TFT::LCD_init() { - tftio.InitTFT(); +void TFT::lcdInit() { + tftio.initTFT(); #if PIN_EXISTS(TFT_BACKLIGHT) OUT_WRITE(TFT_BACKLIGHT_PIN, LOW); #endif delay(100); - LCD_clear(0x0000); - LCD_Draw_Logo(); + lcdClear(0x0000); + lcdDrawLogo(); #if PIN_EXISTS(TFT_BACKLIGHT) OUT_WRITE(TFT_BACKLIGHT_PIN, HIGH); #endif @@ -68,17 +68,17 @@ void TFT::LCD_init() { #endif } -void TFT::LCD_clear(uint16_t color) { +void TFT::lcdClear(uint16_t color) { setWindow(0, 0, TFT_WIDTH, TFT_HEIGHT); - tftio.WriteMultiple(color, uint32_t(TFT_WIDTH) * uint32_t(TFT_HEIGHT)); + tftio.writeMultiple(color, uint32_t(TFT_WIDTH) * uint32_t(TFT_HEIGHT)); } -void TFT::LCD_Draw_Logo() { +void TFT::lcdDrawLogo() { #if HAS_LOGO_IN_FLASH setWindow(0, 0, TFT_WIDTH, TFT_HEIGHT); for (uint16_t i = 0; i < (TFT_HEIGHT); i++) { - Pic_Logo_Read((uint8_t *)"", (uint8_t *)bmp_public_buf, (TFT_WIDTH) * 2); - tftio.WriteSequence((uint16_t *)bmp_public_buf, TFT_WIDTH); + picLogoRead((uint8_t *)"", (uint8_t *)bmp_public_buf, (TFT_WIDTH) * 2); + tftio.writeSequence((uint16_t *)bmp_public_buf, TFT_WIDTH); } #endif } diff --git a/Marlin/src/lcd/extui/mks_ui/SPI_TFT.h b/Marlin/src/lcd/extui/mks_ui/SPI_TFT.h index 62a084fb11..56576c8c16 100644 --- a/Marlin/src/lcd/extui/mks_ui/SPI_TFT.h +++ b/Marlin/src/lcd/extui/mks_ui/SPI_TFT.h @@ -27,12 +27,12 @@ class TFT { public: TFT_IO tftio; - void spi_init(uint8_t spiRate); - void SetPoint(uint16_t x, uint16_t y, uint16_t point); + void spiInit(uint8_t spiRate); + void setPoint(uint16_t x, uint16_t y, uint16_t point); void setWindow(uint16_t x, uint16_t y, uint16_t with, uint16_t height); - void LCD_init(); - void LCD_clear(uint16_t color); - void LCD_Draw_Logo(); + void lcdInit(); + void lcdClear(uint16_t color); + void lcdDrawLogo(); }; extern TFT SPI_TFT; diff --git a/Marlin/src/lcd/extui/mks_ui/draw_error_message.cpp b/Marlin/src/lcd/extui/mks_ui/draw_error_message.cpp index bc15100153..2c9928f387 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_error_message.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_error_message.cpp @@ -35,7 +35,7 @@ static lv_obj_t *scr; void lv_draw_error_message(FSTR_P const fmsg) { FSTR_P fhalted = F("PRINTER HALTED"), fplease = F("Please Reset"); - SPI_TFT.LCD_clear(0x0000); + SPI_TFT.lcdClear(0x0000); if (fmsg) disp_string((TFT_WIDTH - strlen_P(FTOP(fmsg)) * 16) / 2, 100, fmsg, 0xFFFF, 0x0000); disp_string((TFT_WIDTH - strlen_P(FTOP(fhalted)) * 16) / 2, 140, fhalted, 0xFFFF, 0x0000); disp_string((TFT_WIDTH - strlen_P(FTOP(fplease)) * 16) / 2, 180, fplease, 0xFFFF, 0x0000); diff --git a/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp b/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp index 74902a30dd..dda9ee1c29 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp @@ -47,9 +47,9 @@ enum { static void drawCross(uint16_t x, uint16_t y, uint16_t color) { SPI_TFT.tftio.set_window(x - 15, y, x + 15, y); - SPI_TFT.tftio.WriteMultiple(color, 31); + SPI_TFT.tftio.writeMultiple(color, 31); SPI_TFT.tftio.set_window(x, y - 15, x, y + 15); - SPI_TFT.tftio.WriteMultiple(color, 31); + SPI_TFT.tftio.writeMultiple(color, 31); } void lv_update_touch_calibration_screen() { diff --git a/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp b/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp index 708ad77fca..5d44090a77 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp @@ -631,7 +631,7 @@ char *creat_title_text() { p_index = (uint16_t *)(&bmp_public_buf[i]); if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full; } - SPI_TFT.tftio.WriteSequence((uint16_t*)bmp_public_buf, 200); + SPI_TFT.tftio.writeSequence((uint16_t*)bmp_public_buf, 200); #if HAS_BAK_VIEW_IN_FLASH W25QXX.init(SPI_QUARTER_SPEED); if (row < 20) W25QXX.SPI_FLASH_SectorErase(BAK_VIEW_ADDR_TFT35 + row * 4096); @@ -692,7 +692,7 @@ char *creat_title_text() { #endif SPI_TFT.setWindow(xpos_pixel, y_off * 20 + ypos_pixel, 200, 20); // 200*200 - SPI_TFT.tftio.WriteSequence((uint16_t*)(bmp_public_buf), DEFAULT_VIEW_MAX_SIZE / 20); + SPI_TFT.tftio.writeSequence((uint16_t*)(bmp_public_buf), DEFAULT_VIEW_MAX_SIZE / 20); y_off++; } diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp index 53f31b1c40..c46a532d9a 100644 --- a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp +++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp @@ -648,7 +648,7 @@ void disp_char_1624(uint16_t x, uint16_t y, uint8_t c, uint16_t charColor, uint1 for (uint16_t i = 0; i < 24; i++) { const uint16_t tmp_char = pgm_read_word(&ASCII_Table_16x24[((c - 0x20) * 24) + i]); for (uint16_t j = 0; j < 16; j++) - SPI_TFT.SetPoint(x + j, y + i, ((tmp_char >> j) & 0x01) ? charColor : bkColor); + SPI_TFT.setPoint(x + j, y + i, ((tmp_char >> j) & 0x01) ? charColor : bkColor); } } @@ -664,7 +664,7 @@ void disp_string(uint16_t x, uint16_t y, FSTR_P const fstr, uint16_t charColor, } void disp_assets_update() { - SPI_TFT.LCD_clear(0x0000); + SPI_TFT.lcdClear(0x0000); disp_string(100, 140, F("Assets Updating..."), 0xFFFF, 0x0000); } diff --git a/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp b/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp index 7c0ec802c3..06d47d949b 100644 --- a/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp +++ b/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp @@ -291,7 +291,7 @@ void spiFlashErase_PIC() { uint32_t LogoWrite_Addroffset = 0; -uint8_t Pic_Logo_Write(uint8_t *LogoName, uint8_t *Logo_Wbuff, uint32_t LogoWriteSize) { +uint8_t picLogoWrite(uint8_t *LogoName, uint8_t *Logo_Wbuff, uint32_t LogoWriteSize) { if (LogoWriteSize <= 0) return 0; W25QXX.SPI_FLASH_BufferWrite(Logo_Wbuff, PIC_LOGO_ADDR + LogoWrite_Addroffset, LogoWriteSize); @@ -308,7 +308,7 @@ uint8_t Pic_Logo_Write(uint8_t *LogoName, uint8_t *Logo_Wbuff, uint32_t LogoWrit } uint32_t TitleLogoWrite_Addroffset = 0; -uint8_t Pic_TitleLogo_Write(uint8_t *TitleLogoName, uint8_t *TitleLogo_Wbuff, uint32_t TitleLogoWriteSize) { +uint8_t picTitleLogoWrite(uint8_t *TitleLogoName, uint8_t *TitleLogo_Wbuff, uint32_t TitleLogoWriteSize) { if (TitleLogoWriteSize <= 0) return 0; if ((DeviceCode == 0x9488) || (DeviceCode == 0x5761)) @@ -329,15 +329,15 @@ void default_view_Write(uint8_t *default_view__Rbuff, uint32_t default_view_Writ default_view_addroffset_r = 0; } -uint32_t Pic_Info_Write(uint8_t *P_name, uint32_t P_size) { +uint32_t picInfoWrite(uint8_t *P_name, uint32_t P_size) { uint8_t pic_counter = 0; - uint32_t Pic_SaveAddr; + uint32_t picSaveAddr; uint32_t Pic_SizeSaveAddr; - uint32_t Pic_NameSaveAddr; - uint8_t Pname_temp; + uint32_t picNameSaveAddr; + uint8_t pNameTemp; uint32_t i, j; uint32_t name_len = 0; - uint32_t SaveName_len = 0; + uint32_t saveNameLen = 0; union union32 size_tmp; W25QXX.SPI_FLASH_BufferRead(&pic_counter, PIC_COUNTER_ADDR, 1); @@ -346,15 +346,15 @@ uint32_t Pic_Info_Write(uint8_t *P_name, uint32_t P_size) { pic_counter = 0; if ((DeviceCode == 0x9488) || (DeviceCode == 0x5761)) - Pic_SaveAddr = PIC_DATA_ADDR_TFT35 + pic_counter * PER_PIC_MAX_SPACE_TFT35; + picSaveAddr = PIC_DATA_ADDR_TFT35 + pic_counter * PER_PIC_MAX_SPACE_TFT35; else - Pic_SaveAddr = PIC_DATA_ADDR_TFT32 + pic_counter * PER_PIC_MAX_SPACE_TFT32; + picSaveAddr = PIC_DATA_ADDR_TFT32 + pic_counter * PER_PIC_MAX_SPACE_TFT32; for (j = 0; j < pic_counter; j++) { do { - W25QXX.SPI_FLASH_BufferRead(&Pname_temp, PIC_NAME_ADDR + SaveName_len, 1); - SaveName_len++; - } while (Pname_temp != '\0'); + W25QXX.SPI_FLASH_BufferRead(&pNameTemp, PIC_NAME_ADDR + saveNameLen, 1); + saveNameLen++; + } while (pNameTemp != '\0'); } i = 0; while ((*(P_name + i) != '\0')) { @@ -362,8 +362,8 @@ uint32_t Pic_Info_Write(uint8_t *P_name, uint32_t P_size) { name_len++; } - Pic_NameSaveAddr = PIC_NAME_ADDR + SaveName_len; - W25QXX.SPI_FLASH_BufferWrite(P_name, Pic_NameSaveAddr, name_len + 1); + picNameSaveAddr = PIC_NAME_ADDR + saveNameLen; + W25QXX.SPI_FLASH_BufferWrite(P_name, picNameSaveAddr, name_len + 1); Pic_SizeSaveAddr = PIC_SIZE_ADDR + 4 * pic_counter; size_tmp.dwords = P_size; W25QXX.SPI_FLASH_BufferWrite(size_tmp.bytes, Pic_SizeSaveAddr, 4); @@ -372,7 +372,7 @@ uint32_t Pic_Info_Write(uint8_t *P_name, uint32_t P_size) { W25QXX.SPI_FLASH_SectorErase(PIC_COUNTER_ADDR); W25QXX.SPI_FLASH_BufferWrite(&pic_counter, PIC_COUNTER_ADDR, 1); - return Pic_SaveAddr; + return picSaveAddr; } #if HAS_MEDIA @@ -430,14 +430,14 @@ uint32_t Pic_Info_Write(uint8_t *P_name, uint32_t P_size) { do { hal.watchdog_refresh(); pbr = file.read(public_buf, BMP_WRITE_BUF_LEN); - Pic_Logo_Write((uint8_t*)fn, public_buf, pbr); + picLogoWrite((uint8_t*)fn, public_buf, pbr); } while (pbr >= BMP_WRITE_BUF_LEN); } else if (assetType == ASSET_TYPE_TITLE_LOGO) { do { hal.watchdog_refresh(); pbr = file.read(public_buf, BMP_WRITE_BUF_LEN); - Pic_TitleLogo_Write((uint8_t*)fn, public_buf, pbr); + picTitleLogoWrite((uint8_t*)fn, public_buf, pbr); } while (pbr >= BMP_WRITE_BUF_LEN); } else if (assetType == ASSET_TYPE_G_PREVIEW) { @@ -448,7 +448,7 @@ uint32_t Pic_Info_Write(uint8_t *P_name, uint32_t P_size) { } while (pbr >= BMP_WRITE_BUF_LEN); } else if (assetType == ASSET_TYPE_ICON) { - Pic_Write_Addr = Pic_Info_Write((uint8_t*)fn, pfileSize); + Pic_Write_Addr = picInfoWrite((uint8_t*)fn, pfileSize); SPIFlash.beginWrite(Pic_Write_Addr); #if HAS_SPI_FLASH_COMPRESSION do { @@ -550,7 +550,7 @@ uint32_t Pic_Info_Write(uint8_t *P_name, uint32_t P_size) { #endif // HAS_MEDIA -void Pic_Read(uint8_t *Pname, uint8_t *P_Rbuff) { +void picRead(uint8_t *Pname, uint8_t *P_Rbuff) { uint8_t i, j; uint8_t Pic_cnt; uint32_t tmp_cnt = 0; @@ -596,7 +596,7 @@ void lv_pic_test(uint8_t *P_Rbuff, uint32_t addr, uint32_t size) { #endif uint32_t logo_addroffset = 0; -void Pic_Logo_Read(uint8_t *LogoName, uint8_t *Logo_Rbuff, uint32_t LogoReadsize) { +void picLogoRead(uint8_t *LogoName, uint8_t *Logo_Rbuff, uint32_t LogoReadsize) { W25QXX.init(SPI_QUARTER_SPEED); W25QXX.SPI_FLASH_BufferRead(Logo_Rbuff, PIC_LOGO_ADDR + logo_addroffset, LogoReadsize); logo_addroffset += LogoReadsize; diff --git a/Marlin/src/lcd/extui/mks_ui/pic_manager.h b/Marlin/src/lcd/extui/mks_ui/pic_manager.h index cdcc5b76b8..1483b96461 100644 --- a/Marlin/src/lcd/extui/mks_ui/pic_manager.h +++ b/Marlin/src/lcd/extui/mks_ui/pic_manager.h @@ -154,8 +154,8 @@ typedef struct pic_msg PIC_MSG; #define PIC_SIZE_xM 6 #define FONT_SIZE_xM 2 -void Pic_Read(uint8_t *Pname, uint8_t *P_Rbuff); -void Pic_Logo_Read(uint8_t *LogoName, uint8_t *Logo_Rbuff, uint32_t LogoReadsize); +void picRead(uint8_t *Pname, uint8_t *P_Rbuff); +void picLogoRead(uint8_t *LogoName, uint8_t *Logo_Rbuff, uint32_t LogoReadsize); void lv_pic_test(uint8_t *P_Rbuff, uint32_t addr, uint32_t size); uint32_t lv_get_pic_addr(uint8_t *Pname); void get_spi_flash_data(const char *rec_buf, int offset, int size); diff --git a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp index 5dfb02bfac..09b9c7a53e 100644 --- a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp @@ -129,8 +129,8 @@ void tft_lvgl_init() { hal.watchdog_refresh(); // LVGL init takes time // Init TFT first! - SPI_TFT.spi_init(SPI_FULL_SPEED); - SPI_TFT.LCD_init(); + SPI_TFT.spiInit(SPI_FULL_SPEED); + SPI_TFT.lcdInit(); hal.watchdog_refresh(); // LVGL init takes time @@ -162,7 +162,7 @@ void tft_lvgl_init() { TERN_(MKS_TEST, mks_test_get()); #endif - touch.Init(); + touch.init(); lv_init(); @@ -264,7 +264,7 @@ void dmc_tc_handler(struct __DMA_HandleTypeDef * hdma) { #if ENABLED(USE_SPI_DMA_TC) lv_disp_flush_ready(disp_drv_p); lcd_dma_trans_lock = false; - TFT_SPI::Abort(); + TFT_SPI::abort(); #endif } @@ -278,10 +278,10 @@ void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * co #if ENABLED(USE_SPI_DMA_TC) lcd_dma_trans_lock = true; - SPI_TFT.tftio.WriteSequenceIT((uint16_t*)color_p, width * height); + SPI_TFT.tftio.writeSequenceIT((uint16_t*)color_p, width * height); TFT_SPI::DMAtx.XferCpltCallback = dmc_tc_handler; #else - SPI_TFT.tftio.WriteSequence((uint16_t*)color_p, width * height); + SPI_TFT.tftio.writeSequence((uint16_t*)color_p, width * height); lv_disp_flush_ready(disp_drv_p); // Indicate you are ready with the flushing #endif @@ -297,7 +297,7 @@ void lv_fill_rect(lv_coord_t x1, lv_coord_t y1, lv_coord_t x2, lv_coord_t y2, lv width = x2 - x1 + 1; height = y2 - y1 + 1; SPI_TFT.setWindow((uint16_t)x1, (uint16_t)y1, width, height); - SPI_TFT.tftio.WriteMultiple(bk_color.full, width * height); + SPI_TFT.tftio.writeMultiple(bk_color.full, width * height); W25QXX.init(SPI_QUARTER_SPEED); } diff --git a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.h b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.h index a71bdc9db7..80335b7370 100644 --- a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.h +++ b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.h @@ -40,7 +40,7 @@ void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * co bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data); bool my_mousewheel_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data); -void LCD_Clear(uint16_t Color); +void LCD_Clear(uint16_t color); void tft_set_point(uint16_t x, uint16_t y, uint16_t point); void LCD_setWindowArea(uint16_t StartX, uint16_t StartY, uint16_t width, uint16_t height); void LCD_WriteRAM_Prepare(); diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp index f3967a3ec3..122712e9e1 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp @@ -55,7 +55,7 @@ #define WIFI_IO1_SET() WRITE(WIFI_IO1_PIN, HIGH); #define WIFI_IO1_RESET() WRITE(WIFI_IO1_PIN, LOW); -uint8_t Explore_Disk(const char * const path, const uint8_t recu_level, const bool with_longnames); +uint8_t exploreDisk(const char * const path, const uint8_t recu_level, const bool with_longnames); extern uint8_t commands_in_queue; extern uint8_t sel_id; @@ -723,7 +723,7 @@ void get_file_list(const char * const path, const bool with_longnames) { else if (gCfgItems.fileSysType == FILE_SYS_USB) { // udisk } - Explore_Disk(path, 0, with_longnames); + exploreDisk(path, 0, with_longnames); } char wait_ip_back_flag = 0; @@ -818,7 +818,7 @@ static int cut_msg_head(uint8_t * const msg, const uint16_t msgLen, uint16_t cut return msgLen - cutLen; } -uint8_t Explore_Disk(const char * const path, const uint8_t recu_level, const bool with_longnames) { +uint8_t exploreDisk(const char * const path, const uint8_t recu_level, const bool with_longnames) { char Fstream[200]; if (!path) return 0; @@ -1805,7 +1805,7 @@ void stopEspTransfer() { W25QXX.init(SPI_QUARTER_SPEED); // ?? Workaround for SPI / Servo issues ?? - TERN_(HAS_TFT_LVGL_UI_SPI, SPI_TFT.spi_init(SPI_FULL_SPEED)); + TERN_(HAS_TFT_LVGL_UI_SPI, SPI_TFT.spiInit(SPI_FULL_SPEED)); TERN_(HAS_SERVOS, servo_init()); TERN_(HAS_Z_SERVO_PROBE, probe.servo_probe_init()); diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 8d27ee8f7e..b56d21ae40 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -1179,7 +1179,7 @@ void MarlinUI::init() { run_current_screen(); // Apply all DWIN drawing after processing - TERN_(IS_DWIN_MARLINUI, DWIN_UpdateLCD()); + TERN_(IS_DWIN_MARLINUI, dwinUpdateLCD()); #endif @@ -1609,9 +1609,9 @@ void MarlinUI::init() { #endif TERN_(EXTENSIBLE_UI, ExtUI::onStatusChanged(status_message)); - TERN_(DWIN_CREALITY_LCD, DWIN_StatusChanged(status_message)); + TERN_(DWIN_CREALITY_LCD, dwinStatusChanged(status_message)); TERN_(DWIN_LCD_PROUI, DWIN_CheckStatusMessage()); - TERN_(DWIN_CREALITY_LCD_JYERSUI, CrealityDWIN.Update_Status(status_message)); + TERN_(DWIN_CREALITY_LCD_JYERSUI, crealityDWIN.updateStatus(status_message)); } #if ENABLED(STATUS_MESSAGE_SCROLLING) diff --git a/Marlin/src/lcd/tft/canvas.cpp b/Marlin/src/lcd/tft/canvas.cpp index ac3a2d76c3..04817570e1 100644 --- a/Marlin/src/lcd/tft/canvas.cpp +++ b/Marlin/src/lcd/tft/canvas.cpp @@ -82,16 +82,16 @@ void Canvas::addText(uint16_t x, uint16_t y, uint16_t color, uint16_t *string, u } for (uint16_t i = 0 ; *(string + i) ; i++) { glyph_t *pGlyph = glyph(string + i); - if (stringWidth + pGlyph->BBXWidth > maxWidth) break; + if (stringWidth + pGlyph->bbxWidth > maxWidth) break; switch (getFontType()) { case FONT_MARLIN_GLYPHS_1BPP: - addImage(x + stringWidth + pGlyph->BBXOffsetX, y + getFontAscent() - pGlyph->BBXHeight - pGlyph->BBXOffsetY, pGlyph->BBXWidth, pGlyph->BBXHeight, GREYSCALE1, ((uint8_t *)pGlyph) + sizeof(glyph_t), &color); + addImage(x + stringWidth + pGlyph->bbxOffsetX, y + getFontAscent() - pGlyph->bbxHeight - pGlyph->bbxOffsetY, pGlyph->bbxWidth, pGlyph->bbxHeight, GREYSCALE1, ((uint8_t *)pGlyph) + sizeof(glyph_t), &color); break; case FONT_MARLIN_GLYPHS_2BPP: - addImage(x + stringWidth + pGlyph->BBXOffsetX, y + getFontAscent() - pGlyph->BBXHeight - pGlyph->BBXOffsetY, pGlyph->BBXWidth, pGlyph->BBXHeight, GREYSCALE2, ((uint8_t *)pGlyph) + sizeof(glyph_t), colors); + addImage(x + stringWidth + pGlyph->bbxOffsetX, y + getFontAscent() - pGlyph->bbxHeight - pGlyph->bbxOffsetY, pGlyph->bbxWidth, pGlyph->bbxHeight, GREYSCALE2, ((uint8_t *)pGlyph) + sizeof(glyph_t), colors); break; } - stringWidth += pGlyph->DWidth; + stringWidth += pGlyph->dWidth; } } diff --git a/Marlin/src/lcd/tft/tft.cpp b/Marlin/src/lcd/tft/tft.cpp index fa3c2c241f..868a89d2dc 100644 --- a/Marlin/src/lcd/tft/tft.cpp +++ b/Marlin/src/lcd/tft/tft.cpp @@ -33,8 +33,8 @@ uint16_t TFT::buffer[]; void TFT::init() { - io.Init(); - io.InitTFT(); + io.init(); + io.initTFT(); } TFT tft; diff --git a/Marlin/src/lcd/tft/tft.h b/Marlin/src/lcd/tft/tft.h index 7dc3996148..4a1d1d8304 100644 --- a/Marlin/src/lcd/tft/tft.h +++ b/Marlin/src/lcd/tft/tft.h @@ -69,9 +69,9 @@ class TFT { static void add_glyphs(const uint8_t *Font) { string.add_glyphs(Font); } static bool is_busy() { return io.isBusy(); } - static void abort() { io.Abort(); } - static void write_multiple(uint16_t Data, uint16_t Count) { io.WriteMultipleDMA(Data, Count); } - static void write_sequence(uint16_t *Data, uint16_t Count) { io.WriteSequenceDMA(Data, Count); } + static void abort() { io.abort(); } + static void write_multiple(uint16_t data, uint16_t count) { io.WriteMultipleDMA(data, count); } + static void write_sequence(uint16_t *data, uint16_t count) { io.writeSequenceDMA(data, count); } static void set_window(uint16_t Xmin, uint16_t Ymin, uint16_t Xmax, uint16_t Ymax) { io.set_window(Xmin, Ymin, Xmax, Ymax); } static void fill(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color) { queue.fill(x, y, width, height, color); } diff --git a/Marlin/src/lcd/tft/tft_string.cpp b/Marlin/src/lcd/tft/tft_string.cpp index 19ea5b2079..6ee1bab6d3 100644 --- a/Marlin/src/lcd/tft/tft_string.cpp +++ b/Marlin/src/lcd/tft/tft_string.cpp @@ -59,11 +59,11 @@ void TFT_String::set_font(const uint8_t *font) { #endif DEBUG_ECHOLNPGM("Format: ", ((unifont_t *)font_header)->Format); - DEBUG_ECHOLNPGM("CapitalAHeight: ", ((unifont_t *)font_header)->CapitalAHeight); - DEBUG_ECHOLNPGM("FontStartEncoding: ", ((unifont_t *)font_header)->FontStartEncoding); - DEBUG_ECHOLNPGM("FontEndEncoding: ", ((unifont_t *)font_header)->FontEndEncoding); - DEBUG_ECHOLNPGM("FontAscent: ", ((unifont_t *)font_header)->FontAscent); - DEBUG_ECHOLNPGM("FontDescent: ", ((unifont_t *)font_header)->FontDescent); + DEBUG_ECHOLNPGM("capitalAHeight: ", ((unifont_t *)font_header)->capitalAHeight); + DEBUG_ECHOLNPGM("fontStartEncoding: ", ((unifont_t *)font_header)->fontStartEncoding); + DEBUG_ECHOLNPGM("fontEndEncoding: ", ((unifont_t *)font_header)->fontEndEncoding); + DEBUG_ECHOLNPGM("fontAscent: ", ((unifont_t *)font_header)->fontAscent); + DEBUG_ECHOLNPGM("fontDescent: ", ((unifont_t *)font_header)->fontDescent); add_glyphs(font); } @@ -72,15 +72,15 @@ void TFT_String::add_glyphs(const uint8_t *font) { uint16_t unicode, fontStartEncoding, fontEndEncoding; uint8_t *pointer; - fontStartEncoding = ((unifont_t *)font)->FontStartEncoding; - fontEndEncoding = ((unifont_t *)font)->FontEndEncoding; + fontStartEncoding = ((unifont_t *)font)->fontStartEncoding; + fontEndEncoding = ((unifont_t *)font)->fontEndEncoding; pointer = (uint8_t *)font + sizeof(unifont_t); if (fontEndEncoding < 0x0100) { // base and symbol fonts for (unicode = fontStartEncoding; unicode <= fontEndEncoding; unicode++) { if (*pointer != NO_GLYPH) { glyphs[unicode] = (glyph_t *)pointer; - pointer += sizeof(glyph_t) + ((glyph_t *)pointer)->DataSize; + pointer += sizeof(glyph_t) + ((glyph_t *)pointer)->dataSize; } else pointer++; @@ -98,7 +98,7 @@ void TFT_String::add_glyphs(const uint8_t *font) { } if (*pointer != NO_GLYPH) { glyphs_extra[unicode - fontStartEncoding] = pointer; - pointer += sizeof(glyph_t) + ((glyph_t *)pointer)->DataSize; + pointer += sizeof(glyph_t) + ((glyph_t *)pointer)->dataSize; } else pointer++; @@ -112,7 +112,7 @@ void TFT_String::add_glyphs(const uint8_t *font) { } glyphs_extra[i] = pointer; unicode = *(uint16_t *) pointer; - pointer += sizeof(uniglyph_t) + ((uniglyph_t *)pointer)->glyph.DataSize; + pointer += sizeof(uniglyph_t) + ((uniglyph_t *)pointer)->glyph.dataSize; extra_count = i + 1; if (unicode == fontEndEncoding) break; @@ -127,11 +127,11 @@ glyph_t *TFT_String::glyph(uint16_t character) { if (character < 0x00ff) return glyphs[character] ?: glyphs['?']; /* Use '?' for unknown glyphs */ #if EXTRA_GLYPHS - if (font_header_extra == nullptr || character < font_header_extra->FontStartEncoding || character > font_header_extra->FontEndEncoding) return glyphs['?']; + if (font_header_extra == nullptr || character < font_header_extra->fontStartEncoding || character > font_header_extra->fontEndEncoding) return glyphs['?']; if ((font_header_extra->Format & 0xF0) == FONT_MARLIN_GLYPHS) { - if (glyphs_extra[character - font_header_extra->FontStartEncoding]) - return (glyph_t *)glyphs_extra[character - font_header_extra->FontStartEncoding]; + if (glyphs_extra[character - font_header_extra->fontStartEncoding]) + return (glyph_t *)glyphs_extra[character - font_header_extra->fontStartEncoding]; } else { #if 0 @@ -232,7 +232,7 @@ void TFT_String::add_character(const uint16_t character) { if (length < MAX_STRING_LENGTH) { data[length] = character; length++; - span += glyph(character)->DWidth; + span += glyph(character)->dWidth; } } @@ -240,7 +240,7 @@ void TFT_String::rtrim(const uint16_t character) { while (length) { if (data[length - 1] == 0x20 || data[length - 1] == character) { length--; - span -= glyph(data[length])->DWidth; + span -= glyph(data[length])->dWidth; eol(); } else @@ -251,7 +251,7 @@ void TFT_String::rtrim(const uint16_t character) { void TFT_String::ltrim(const uint16_t character) { uint16_t i, j; for (i = 0; (i < length) && (data[i] == 0x20 || data[i] == character); i++) { - span -= glyph(data[i])->DWidth; + span -= glyph(data[i])->dWidth; } if (i == 0) return; for (j = 0; i < length; data[j++] = data[i++]); diff --git a/Marlin/src/lcd/tft/tft_string.h b/Marlin/src/lcd/tft/tft_string.h index 3df6afe49b..1284d282f1 100644 --- a/Marlin/src/lcd/tft/tft_string.h +++ b/Marlin/src/lcd/tft/tft_string.h @@ -29,7 +29,7 @@ /* * Marlin fonts with optional antialiasing. Fonts use unifont_t font header and glyph_t glyphs headers. - * Number of glyphs (FontEndEncoding - FontStartEncoding) can not exceed 256 (TBD). + * Number of glyphs (fontEndEncoding - fontStartEncoding) can not exceed 256 (TBD). * Some glyphs may be left undefined with NO_GLYPH */ #define FONT_MARLIN_GLYPHS 0x80 @@ -44,7 +44,7 @@ * * IMPORTANT NOTES: * - glyphs fast search method REQUIRES glyphs to be ordered by unicode - * - last glyph's code MUST be FontEndEncoding + * - last glyph's code MUST be fontEndEncoding */ #define FONT_MARLIN_HIEROGLYPHS 0xA0 #define FONT_MARLIN_HIEROGLYPHS_1BPP 0xA1 @@ -146,22 +146,22 @@ // TFT font with unicode support typedef struct __attribute__((__packed__)) { - uint8_t Format; - uint8_t CapitalAHeight; // Not really needed, but helps with data alingment for uint16_t variables - uint16_t FontStartEncoding; - uint16_t FontEndEncoding; - int8_t FontAscent; - int8_t FontDescent; + uint8_t format; + uint8_t capitalAHeight; // Not really needed, but helps with data alignment for uint16_t variables + uint16_t fontStartEncoding; + uint16_t fontEndEncoding; + int8_t fontAscent; + int8_t fontDescent; } unifont_t; // TFT glyphs typedef struct __attribute__((__packed__)) { - uint8_t BBXWidth; - uint8_t BBXHeight; - uint8_t DataSize; - int8_t DWidth; - int8_t BBXOffsetX; - int8_t BBXOffsetY; + uint8_t bbxWidth; + uint8_t bbxHeight; + uint8_t dataSize; + int8_t dWidth; + int8_t bbxOffsetX; + int8_t bbxOffsetY; } glyph_t; // unicode-prepended TFT glyphs @@ -194,9 +194,9 @@ class TFT_String { static void set_font(const uint8_t *font); static void add_glyphs(const uint8_t *font); - static uint8_t font_type() { return font_header->Format; }; - static uint16_t font_ascent() { return font_header->FontAscent; } - static uint16_t font_height() { return font_header->FontAscent - font_header->FontDescent; } + static uint8_t font_type() { return font_header->format; }; + static uint16_t font_ascent() { return font_header->fontAscent; } + static uint16_t font_height() { return font_header->fontAscent - font_header->fontDescent; } static glyph_t *glyph(uint16_t character); static glyph_t *glyph(uint16_t *character) { return glyph(*character); } @@ -264,7 +264,7 @@ class TFT_String { static uint16_t *string() { return data; } static uint16_t width() { return span; } static uint16_t center(const uint16_t width) { return span > width ? 0 : (width - span) / 2; } - static uint16_t vcenter(const uint16_t height) { return (height + font_header->CapitalAHeight + 1) / 2 > font_header->FontAscent ? (height + font_header->CapitalAHeight + 1) / 2 - font_header->FontAscent : 0 ; } + static uint16_t vcenter(const uint16_t height) { return (height + font_header->capitalAHeight + 1) / 2 > font_header->fontAscent ? (height + font_header->capitalAHeight + 1) / 2 - font_header->fontAscent : 0 ; } }; extern TFT_String tft_string; diff --git a/Marlin/src/lcd/tft/touch.cpp b/Marlin/src/lcd/tft/touch.cpp index 1765ae0a8e..443a74480d 100644 --- a/Marlin/src/lcd/tft/touch.cpp +++ b/Marlin/src/lcd/tft/touch.cpp @@ -58,7 +58,7 @@ TouchControlType Touch::touch_control_type = NONE; void Touch::init() { TERN_(TOUCH_SCREEN_CALIBRATION, touch_calibration.calibration_reset()); reset(); - io.Init(); + io.init(); TERN_(HAS_TOUCH_SLEEP, wakeUp()); enable(); } diff --git a/Marlin/src/lcd/tft/ui_1024x600.cpp b/Marlin/src/lcd/tft/ui_1024x600.cpp index 8780cd013e..84495fbaba 100644 --- a/Marlin/src/lcd/tft/ui_1024x600.cpp +++ b/Marlin/src/lcd/tft/ui_1024x600.cpp @@ -118,27 +118,26 @@ void MarlinUI::draw_kill_screen() { tft.queue.sync(); } -void draw_heater_status(uint16_t x, uint16_t y, const int8_t Heater) { +void draw_heater_status(uint16_t x, uint16_t y, const int8_t heater) { MarlinImage image = imgHotEnd; - uint16_t Color; celsius_t currentTemperature, targetTemperature; - if (Heater >= 0) { // HotEnd + if (heater >= 0) { // HotEnd #if HAS_EXTRUDERS - currentTemperature = thermalManager.wholeDegHotend(Heater); - targetTemperature = thermalManager.degTargetHotend(Heater); + currentTemperature = thermalManager.wholeDegHotend(heater); + targetTemperature = thermalManager.degTargetHotend(heater); #else return; #endif } #if HAS_HEATED_BED - else if (Heater == H_BED) { + else if (heater == H_BED) { currentTemperature = thermalManager.wholeDegBed(); targetTemperature = thermalManager.degTargetBed(); } #endif #if HAS_TEMP_CHAMBER - else if (Heater == H_CHAMBER) { + else if (heater == H_CHAMBER) { currentTemperature = thermalManager.wholeDegChamber(); #if HAS_HEATED_CHAMBER targetTemperature = thermalManager.degTargetChamber(); @@ -148,54 +147,54 @@ void draw_heater_status(uint16_t x, uint16_t y, const int8_t Heater) { } #endif #if HAS_TEMP_COOLER - else if (Heater == H_COOLER) { + else if (heater == H_COOLER) { currentTemperature = thermalManager.wholeDegCooler(); targetTemperature = TERN(HAS_COOLER, thermalManager.degTargetCooler(), ABSOLUTE_ZERO); } #endif else return; - TERN_(TOUCH_SCREEN, if (targetTemperature >= 0) touch.add_control(HEATER, x, y, 80, 120, Heater)); + TERN_(TOUCH_SCREEN, if (targetTemperature >= 0) touch.add_control(HEATER, x, y, 80, 120, heater)); tft.canvas(x, y, 80, 120); tft.set_background(COLOR_BACKGROUND); - Color = currentTemperature < 0 ? COLOR_INACTIVE : COLOR_COLD; + uint16_t color = currentTemperature < 0 ? COLOR_INACTIVE : COLOR_COLD; - if (Heater >= 0) { // HotEnd - if (currentTemperature >= 50) Color = COLOR_HOTEND; + if (heater >= 0) { // HotEnd + if (currentTemperature >= 50) color = COLOR_HOTEND; } #if HAS_HEATED_BED - else if (Heater == H_BED) { - if (currentTemperature >= 50) Color = COLOR_HEATED_BED; + else if (heater == H_BED) { + if (currentTemperature >= 50) color = COLOR_HEATED_BED; image = targetTemperature > 0 ? imgBedHeated : imgBed; } #endif #if HAS_TEMP_CHAMBER - else if (Heater == H_CHAMBER) { - if (currentTemperature >= 50) Color = COLOR_CHAMBER; + else if (heater == H_CHAMBER) { + if (currentTemperature >= 50) color = COLOR_CHAMBER; image = targetTemperature > 0 ? imgChamberHeated : imgChamber; } #endif #if HAS_TEMP_COOLER - else if (Heater == H_COOLER) { - if (currentTemperature <= 26) Color = COLOR_COLD; - if (currentTemperature > 26) Color = COLOR_RED; + else if (heater == H_COOLER) { + if (currentTemperature <= 26) color = COLOR_COLD; + if (currentTemperature > 26) color = COLOR_RED; image = targetTemperature > 26 ? imgCoolerHot : imgCooler; } #endif - tft.add_image(8, 28, image, Color); + tft.add_image(8, 28, image, color); tft_string.set(i16tostr3rj(currentTemperature)); tft_string.add(LCD_STR_DEGREE); tft_string.trim(); - tft.add_text(tft_string.center(80) + 2, 82, Color, tft_string); + tft.add_text(tft_string.center(80) + 2, 82, color, tft_string); if (targetTemperature >= 0) { tft_string.set(i16tostr3rj(targetTemperature)); tft_string.add(LCD_STR_DEGREE); tft_string.trim(); - tft.add_text(tft_string.center(80) + 2, 8, Color, tft_string); + tft.add_text(tft_string.center(80) + 2, 8, color, tft_string); } } diff --git a/Marlin/src/lcd/tft/ui_320x240.cpp b/Marlin/src/lcd/tft/ui_320x240.cpp index 772d7d9590..8409b550a1 100644 --- a/Marlin/src/lcd/tft/ui_320x240.cpp +++ b/Marlin/src/lcd/tft/ui_320x240.cpp @@ -120,27 +120,26 @@ void MarlinUI::draw_kill_screen() { tft.queue.sync(); } -void draw_heater_status(uint16_t x, uint16_t y, const int8_t Heater) { +void draw_heater_status(uint16_t x, uint16_t y, const int8_t heater) { MarlinImage image = imgHotEnd; - uint16_t Color; celsius_t currentTemperature, targetTemperature; - if (Heater >= 0) { // HotEnd + if (heater >= 0) { // HotEnd #if HAS_EXTRUDERS - currentTemperature = thermalManager.wholeDegHotend(Heater); - targetTemperature = thermalManager.degTargetHotend(Heater); + currentTemperature = thermalManager.wholeDegHotend(heater); + targetTemperature = thermalManager.degTargetHotend(heater); #else return; #endif } #if HAS_HEATED_BED - else if (Heater == H_BED) { + else if (heater == H_BED) { currentTemperature = thermalManager.wholeDegBed(); targetTemperature = thermalManager.degTargetBed(); } #endif #if HAS_TEMP_CHAMBER - else if (Heater == H_CHAMBER) { + else if (heater == H_CHAMBER) { currentTemperature = thermalManager.wholeDegChamber(); #if HAS_HEATED_CHAMBER targetTemperature = thermalManager.degTargetChamber(); @@ -150,54 +149,54 @@ void draw_heater_status(uint16_t x, uint16_t y, const int8_t Heater) { } #endif #if HAS_TEMP_COOLER - else if (Heater == H_COOLER) { + else if (heater == H_COOLER) { currentTemperature = thermalManager.wholeDegCooler(); targetTemperature = TERN(HAS_COOLER, thermalManager.degTargetCooler(), ABSOLUTE_ZERO); } #endif else return; - TERN_(TOUCH_SCREEN, if (targetTemperature >= 0) touch.add_control(HEATER, x, y, 64, 100, Heater)); + TERN_(TOUCH_SCREEN, if (targetTemperature >= 0) touch.add_control(HEATER, x, y, 64, 100, heater)); tft.canvas(x, y, 64, 100); tft.set_background(COLOR_BACKGROUND); - Color = currentTemperature < 0 ? COLOR_INACTIVE : COLOR_COLD; + uint16_t color = currentTemperature < 0 ? COLOR_INACTIVE : COLOR_COLD; - if (Heater >= 0) { // HotEnd - if (currentTemperature >= 50) Color = COLOR_HOTEND; + if (heater >= 0) { // HotEnd + if (currentTemperature >= 50) color = COLOR_HOTEND; } #if HAS_HEATED_BED - else if (Heater == H_BED) { - if (currentTemperature >= 50) Color = COLOR_HEATED_BED; + else if (heater == H_BED) { + if (currentTemperature >= 50) color = COLOR_HEATED_BED; image = targetTemperature > 0 ? imgBedHeated : imgBed; } #endif #if HAS_TEMP_CHAMBER - else if (Heater == H_CHAMBER) { - if (currentTemperature >= 50) Color = COLOR_CHAMBER; + else if (heater == H_CHAMBER) { + if (currentTemperature >= 50) color = COLOR_CHAMBER; image = targetTemperature > 0 ? imgChamberHeated : imgChamber; } #endif #if HAS_TEMP_COOLER - else if (Heater == H_COOLER) { - if (currentTemperature <= 26) Color = COLOR_COLD; - if (currentTemperature > 26) Color = COLOR_RED; + else if (heater == H_COOLER) { + if (currentTemperature <= 26) color = COLOR_COLD; + if (currentTemperature > 26) color = COLOR_RED; image = targetTemperature > 26 ? imgCoolerHot : imgCooler; } #endif - tft.add_image(0, 18, image, Color); + tft.add_image(0, 18, image, color); tft_string.set(i16tostr3rj(currentTemperature)); tft_string.add(LCD_STR_DEGREE); tft_string.trim(); - tft.add_text(tft_string.center(64) + 2, 69 + tft_string.vcenter(FONT_LINE_HEIGHT), Color, tft_string); + tft.add_text(tft_string.center(64) + 2, 69 + tft_string.vcenter(FONT_LINE_HEIGHT), color, tft_string); if (targetTemperature >= 0) { tft_string.set(i16tostr3rj(targetTemperature)); tft_string.add(LCD_STR_DEGREE); tft_string.trim(); - tft.add_text(tft_string.center(64) + 2, 5 + tft_string.vcenter(FONT_LINE_HEIGHT), Color, tft_string); + tft.add_text(tft_string.center(64) + 2, 5 + tft_string.vcenter(FONT_LINE_HEIGHT), color, tft_string); } } diff --git a/Marlin/src/lcd/tft/ui_480x320.cpp b/Marlin/src/lcd/tft/ui_480x320.cpp index edf75dabbd..9b23577c46 100644 --- a/Marlin/src/lcd/tft/ui_480x320.cpp +++ b/Marlin/src/lcd/tft/ui_480x320.cpp @@ -118,27 +118,26 @@ void MarlinUI::draw_kill_screen() { tft.queue.sync(); } -void draw_heater_status(uint16_t x, uint16_t y, const int8_t Heater) { +void draw_heater_status(uint16_t x, uint16_t y, const int8_t heater) { MarlinImage image = imgHotEnd; - uint16_t Color; celsius_t currentTemperature, targetTemperature; - if (Heater >= 0) { // HotEnd + if (heater >= 0) { // HotEnd #if HAS_EXTRUDERS - currentTemperature = thermalManager.wholeDegHotend(Heater); - targetTemperature = thermalManager.degTargetHotend(Heater); + currentTemperature = thermalManager.wholeDegHotend(heater); + targetTemperature = thermalManager.degTargetHotend(heater); #else return; #endif } #if HAS_HEATED_BED - else if (Heater == H_BED) { + else if (heater == H_BED) { currentTemperature = thermalManager.wholeDegBed(); targetTemperature = thermalManager.degTargetBed(); } #endif #if HAS_TEMP_CHAMBER - else if (Heater == H_CHAMBER) { + else if (heater == H_CHAMBER) { currentTemperature = thermalManager.wholeDegChamber(); #if HAS_HEATED_CHAMBER targetTemperature = thermalManager.degTargetChamber(); @@ -148,54 +147,54 @@ void draw_heater_status(uint16_t x, uint16_t y, const int8_t Heater) { } #endif #if HAS_TEMP_COOLER - else if (Heater == H_COOLER) { + else if (heater == H_COOLER) { currentTemperature = thermalManager.wholeDegCooler(); targetTemperature = TERN(HAS_COOLER, thermalManager.degTargetCooler(), ABSOLUTE_ZERO); } #endif else return; - TERN_(TOUCH_SCREEN, if (targetTemperature >= 0) touch.add_control(HEATER, x, y, 80, 120, Heater)); + TERN_(TOUCH_SCREEN, if (targetTemperature >= 0) touch.add_control(HEATER, x, y, 80, 120, heater)); tft.canvas(x, y, 80, 120); tft.set_background(COLOR_BACKGROUND); - Color = currentTemperature < 0 ? COLOR_INACTIVE : COLOR_COLD; + uint16_t color = currentTemperature < 0 ? COLOR_INACTIVE : COLOR_COLD; - if (Heater >= 0) { // HotEnd - if (currentTemperature >= 50) Color = COLOR_HOTEND; + if (heater >= 0) { // HotEnd + if (currentTemperature >= 50) color = COLOR_HOTEND; } #if HAS_HEATED_BED - else if (Heater == H_BED) { - if (currentTemperature >= 50) Color = COLOR_HEATED_BED; + else if (heater == H_BED) { + if (currentTemperature >= 50) color = COLOR_HEATED_BED; image = targetTemperature > 0 ? imgBedHeated : imgBed; } #endif #if HAS_TEMP_CHAMBER - else if (Heater == H_CHAMBER) { - if (currentTemperature >= 50) Color = COLOR_CHAMBER; + else if (heater == H_CHAMBER) { + if (currentTemperature >= 50) color = COLOR_CHAMBER; image = targetTemperature > 0 ? imgChamberHeated : imgChamber; } #endif #if HAS_TEMP_COOLER - else if (Heater == H_COOLER) { - if (currentTemperature <= 26) Color = COLOR_COLD; - if (currentTemperature > 26) Color = COLOR_RED; + else if (heater == H_COOLER) { + if (currentTemperature <= 26) color = COLOR_COLD; + if (currentTemperature > 26) color = COLOR_RED; image = targetTemperature > 26 ? imgCoolerHot : imgCooler; } #endif - tft.add_image(8, 28, image, Color); + tft.add_image(8, 28, image, color); tft_string.set(i16tostr3rj(currentTemperature)); tft_string.add(LCD_STR_DEGREE); tft_string.trim(); - tft.add_text(tft_string.center(80) + 2, 80 + tft_string.vcenter(FONT_LINE_HEIGHT), Color, tft_string); + tft.add_text(tft_string.center(80) + 2, 80 + tft_string.vcenter(FONT_LINE_HEIGHT), color, tft_string); if (targetTemperature >= 0) { tft_string.set(i16tostr3rj(targetTemperature)); tft_string.add(LCD_STR_DEGREE); tft_string.trim(); - tft.add_text(tft_string.center(80) + 2, 6 + tft_string.vcenter(FONT_LINE_HEIGHT), Color, tft_string); + tft.add_text(tft_string.center(80) + 2, 6 + tft_string.vcenter(FONT_LINE_HEIGHT), color, tft_string); } } diff --git a/Marlin/src/lcd/tft_io/tft_io.cpp b/Marlin/src/lcd/tft_io/tft_io.cpp index 294c146d5c..d46c2de418 100644 --- a/Marlin/src/lcd/tft_io/tft_io.cpp +++ b/Marlin/src/lcd/tft_io/tft_io.cpp @@ -59,7 +59,7 @@ TFT_IO_DRIVER TFT_IO::io; uint32_t TFT_IO::lcd_id = 0xFFFFFFFF; -void TFT_IO::InitTFT() { +void TFT_IO::initTFT() { if (lcd_id != 0xFFFFFFFF) return; #if PIN_EXISTS(TFT_BACKLIGHT) @@ -81,7 +81,7 @@ void TFT_IO::InitTFT() { #endif #endif - // io.Init(); + //io.init(); delay(100); #if TFT_DRIVER != AUTO @@ -106,7 +106,7 @@ void TFT_IO::InitTFT() { write_esc_sequence(ili9488_init); #elif TFT_DRIVER == AUTO // autodetect - lcd_id = io.GetID() & 0xFFFF; + lcd_id = io.getID() & 0xFFFF; switch (lcd_id) { case LTDC_RGB: @@ -156,25 +156,25 @@ void TFT_IO::InitTFT() { #endif } -void TFT_IO::set_window(uint16_t Xmin, uint16_t Ymin, uint16_t Xmax, uint16_t Ymax) { +void TFT_IO::set_window(uint16_t xMin, uint16_t yMin, uint16_t xMax, uint16_t yMax) { #ifdef OFFSET_X - Xmin += OFFSET_X; Xmax += OFFSET_X; + xMin += OFFSET_X; xMax += OFFSET_X; #endif #ifdef OFFSET_Y - Ymin += OFFSET_Y; Ymax += OFFSET_Y; + yMin += OFFSET_Y; yMax += OFFSET_Y; #endif switch (lcd_id) { case LTDC_RGB: - io.WriteReg(0x01); - io.WriteData(Xmin); - io.WriteReg(0x02); - io.WriteData(Xmax); - io.WriteReg(0x03); - io.WriteData(Ymin); - io.WriteReg(0x04); - io.WriteData(Ymax); - io.WriteReg(0x00); + io.writeReg(0x01); + io.writeData(xMin); + io.writeReg(0x02); + io.writeData(xMax); + io.writeReg(0x03); + io.writeData(yMin); + io.writeReg(0x04); + io.writeData(yMax); + io.writeReg(0x00); break; case ST7735: // ST7735 160x128 case ST7789: // ST7789V 320x240 @@ -183,76 +183,76 @@ void TFT_IO::set_window(uint16_t Xmin, uint16_t Ymin, uint16_t Xmax, uint16_t Ym case ILI9488: // ILI9488 480x320 case SSD1963: // SSD1963 case ILI9488_ID1: // 0x8066 ILI9488 480x320 - io.DataTransferBegin(DATASIZE_8BIT); + io.dataTransferBegin(DATASIZE_8BIT); // CASET: Column Address Set - io.WriteReg(ILI9341_CASET); - io.WriteData((Xmin >> 8) & 0xFF); - io.WriteData(Xmin & 0xFF); - io.WriteData((Xmax >> 8) & 0xFF); - io.WriteData(Xmax & 0xFF); + io.writeReg(ILI9341_CASET); + io.writeData((xMin >> 8) & 0xFF); + io.writeData(xMin & 0xFF); + io.writeData((xMax >> 8) & 0xFF); + io.writeData(xMax & 0xFF); // RASET: Row Address Set - io.WriteReg(ILI9341_PASET); - io.WriteData((Ymin >> 8) & 0xFF); - io.WriteData(Ymin & 0xFF); - io.WriteData((Ymax >> 8) & 0xFF); - io.WriteData(Ymax & 0xFF); + io.writeReg(ILI9341_PASET); + io.writeData((yMin >> 8) & 0xFF); + io.writeData(yMin & 0xFF); + io.writeData((yMax >> 8) & 0xFF); + io.writeData(yMax & 0xFF); // RAMWR: Memory Write - io.WriteReg(ILI9341_RAMWR); + io.writeReg(ILI9341_RAMWR); break; case R61505: // R61505U 320x240 case ILI9328: // ILI9328 320x240 - io.DataTransferBegin(DATASIZE_16BIT); + io.dataTransferBegin(DATASIZE_16BIT); // Mind the mess: with landscape screen orientation 'Horizontal' is Y and 'Vertical' is X - io.WriteReg(ILI9328_HASTART); - io.WriteData(Ymin); - io.WriteReg(ILI9328_HAEND); - io.WriteData(Ymax); - io.WriteReg(ILI9328_VASTART); - io.WriteData(Xmin); - io.WriteReg(ILI9328_VAEND); - io.WriteData(Xmax); + io.writeReg(ILI9328_HASTART); + io.writeData(yMin); + io.writeReg(ILI9328_HAEND); + io.writeData(yMax); + io.writeReg(ILI9328_VASTART); + io.writeData(xMin); + io.writeReg(ILI9328_VAEND); + io.writeData(xMax); - io.WriteReg(ILI9328_HASET); - io.WriteData(Ymin); - io.WriteReg(ILI9328_VASET); - io.WriteData(Xmin); + io.writeReg(ILI9328_HASET); + io.writeData(yMin); + io.writeReg(ILI9328_VASET); + io.writeData(xMin); - io.WriteReg(ILI9328_RAMWR); + io.writeReg(ILI9328_RAMWR); break; default: break; } - io.DataTransferEnd(); + io.dataTransferEnd(); } -void TFT_IO::write_esc_sequence(const uint16_t *Sequence) { +void TFT_IO::write_esc_sequence(const uint16_t *sequence) { uint16_t dataWidth, data; - dataWidth = *Sequence++; - io.DataTransferBegin(dataWidth); + dataWidth = *sequence++; + io.dataTransferBegin(dataWidth); for (;;) { - data = *Sequence++; + data = *sequence++; if (data != 0xFFFF) { - io.WriteData(data); + io.writeData(data); continue; } - data = *Sequence++; + data = *sequence++; if (data == 0x7FFF) break; if (data == 0xFFFF) - io.WriteData(0xFFFF); + io.writeData(0xFFFF); else if (data & 0x8000) delay(data & 0x7FFF); else if ((data & 0xFF00) == 0) - io.WriteReg(data); + io.writeReg(data); } - io.DataTransferEnd(); + io.dataTransferEnd(); } #endif // HAS_SPI_TFT || HAS_FSMC_TFT || HAS_LTDC_TFT diff --git a/Marlin/src/lcd/tft_io/tft_io.h b/Marlin/src/lcd/tft_io/tft_io.h index 673bb07d5f..cbe554436e 100644 --- a/Marlin/src/lcd/tft_io/tft_io.h +++ b/Marlin/src/lcd/tft_io/tft_io.h @@ -50,36 +50,36 @@ class TFT_IO { public: static TFT_IO_DRIVER io; - static void InitTFT(); - static void set_window(uint16_t Xmin, uint16_t Ymin, uint16_t Xmax, uint16_t Ymax); - static void write_esc_sequence(const uint16_t *Sequence); + static void initTFT(); + static void set_window(uint16_t xMin, uint16_t yMin, uint16_t xMax, uint16_t yMax); + static void write_esc_sequence(const uint16_t *sequence); // Deletaged methods - inline static void Init() { io.Init(); } + inline static void init() { io.init(); } inline static bool isBusy() { return io.isBusy(); } - inline static void Abort() { io.Abort(); } - inline static uint32_t GetID() { return io.GetID(); } + inline static void abort() { io.abort(); } + inline static uint32_t getID() { return io.getID(); } - inline static void DataTransferBegin(uint16_t DataWidth=DATASIZE_16BIT) { io.DataTransferBegin(DataWidth); } - inline static void DataTransferEnd() { io.DataTransferEnd(); } + inline static void dataTransferBegin(uint16_t dataWidth=DATASIZE_16BIT) { io.dataTransferBegin(dataWidth); } + inline static void dataTransferEnd() { io.dataTransferEnd(); } - inline static void WriteData(uint16_t Data) { io.WriteData(Data); } - inline static void WriteReg(uint16_t Reg) { io.WriteReg(Reg); } + inline static void writeData(uint16_t data) { io.writeData(data); } + inline static void writeReg(uint16_t reg) { io.writeReg(reg); } // Blocking IO used by TFT_CLASSIC_UI and TFT_LVGL_UI // These functions start data transfer and WAIT for data transfer completion - inline static void WriteSequence(uint16_t *Data, uint16_t Count) { io.WriteSequence(Data, Count); } - inline static void WriteMultiple(uint16_t Color, uint32_t Count) { io.WriteMultiple(Color, Count); } + inline static void writeSequence(uint16_t *data, uint16_t count) { io.writeSequence(data, count); } + inline static void writeMultiple(uint16_t color, uint32_t count) { io.writeMultiple(color, count); } // Non-blocking DMA-based IO used by TFT_COLOR_UI only // These functions start data transfer using DMA and do NOT wait for data transfer completion - inline static void WriteSequenceDMA(uint16_t *Data, uint16_t Count) { io.WriteSequence_DMA(Data, Count); } - inline static void WriteMultipleDMA(uint16_t Color, uint16_t Count) { io.WriteMultiple_DMA(Color, Count); } + inline static void writeSequenceDMA(uint16_t *data, uint16_t count) { io.writeSequence_DMA(data, count); } + inline static void WriteMultipleDMA(uint16_t color, uint16_t count) { io.writeMultiple_DMA(color, count); } // Non-blocking DMA-based IO with IRQ callback used by TFT_LVGL_UI only // This function starts data transfer using DMA and does NOT wait for data transfer completion #if ENABLED(USE_SPI_DMA_TC) - inline static void WriteSequenceIT(uint16_t *Data, uint16_t Count) { io.WriteSequenceIT(Data, Count); } + inline static void writeSequenceIT(uint16_t *data, uint16_t count) { io.writeSequenceIT(data, count); } #endif protected: diff --git a/Marlin/src/lcd/touch/touch_buttons.cpp b/Marlin/src/lcd/touch/touch_buttons.cpp index 2e996f30ce..856594c31a 100644 --- a/Marlin/src/lcd/touch/touch_buttons.cpp +++ b/Marlin/src/lcd/touch/touch_buttons.cpp @@ -60,7 +60,7 @@ TouchButtons touchBt; void TouchButtons::init() { - touchIO.Init(); + touchIO.init(); TERN_(HAS_TOUCH_SLEEP, next_sleep_ms = millis() + SEC_TO_MS(ui.sleep_timeout_minutes * 60)); } diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 321691ba87..1ee3932c2d 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -1607,8 +1607,8 @@ void MarlinSettings::postprocess() { #if ENABLED(DWIN_CREALITY_LCD_JYERSUI) { _FIELD_TEST(dwin_settings); - char dwin_settings[CrealityDWIN.eeprom_data_size] = { 0 }; - CrealityDWIN.Save_Settings(dwin_settings); + char dwin_settings[crealityDWIN.eeprom_data_size] = { 0 }; + crealityDWIN.saveSettings(dwin_settings); EEPROM_WRITE(dwin_settings); } #endif @@ -2661,10 +2661,10 @@ void MarlinSettings::postprocess() { } #elif ENABLED(DWIN_CREALITY_LCD_JYERSUI) { - const char dwin_settings[CrealityDWIN.eeprom_data_size] = { 0 }; + const char dwin_settings[crealityDWIN.eeprom_data_size] = { 0 }; _FIELD_TEST(dwin_settings); EEPROM_READ(dwin_settings); - if (!validating) CrealityDWIN.Load_Settings(dwin_settings); + if (!validating) crealityDWIN.loadSettings(dwin_settings); } #endif @@ -3147,7 +3147,7 @@ void MarlinSettings::reset() { #endif #endif - TERN_(DWIN_CREALITY_LCD_JYERSUI, CrealityDWIN.Reset_Settings()); + TERN_(DWIN_CREALITY_LCD_JYERSUI, crealityDWIN.resetSettings()); // // Case Light Brightness diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index d671e7ce89..1f0e1a9755 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -856,7 +856,7 @@ volatile bool Temperature::raw_temps_ready = false; #define MAX_CYCLE_TIME_PID_AUTOTUNE 20L #endif if ((ms - _MIN(t1, t2)) > (MAX_CYCLE_TIME_PID_AUTOTUNE * 60L * 1000L)) { - TERN_(DWIN_CREALITY_LCD, DWIN_Popup_Temperature(0)); + TERN_(DWIN_CREALITY_LCD, dwinPopupTemperature(0)); TERN_(DWIN_PID_TUNE, DWIN_PidTuning(PID_TUNING_TIMEOUT)); TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_TUNING_TIMEOUT)); TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_PID_TIMEOUT))); @@ -919,7 +919,7 @@ volatile bool Temperature::raw_temps_ready = false; hal.idletask(); // Run UI update - TERN(DWIN_CREALITY_LCD, DWIN_Update(), ui.update()); + TERN(DWIN_CREALITY_LCD, dwinUpdate(), ui.update()); } wait_for_heatup = false; @@ -1183,7 +1183,7 @@ volatile bool Temperature::raw_temps_ready = false; } hal.idletask(); - TERN(DWIN_CREALITY_LCD, DWIN_Update(), ui.update()); + TERN(DWIN_CREALITY_LCD, dwinUpdate(), ui.update()); if (!wait_for_heatup) { SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_INTERRUPTED); diff --git a/Marlin/src/sd/Sd2Card.h b/Marlin/src/sd/Sd2Card.h index 71e31ac614..49569af512 100644 --- a/Marlin/src/sd/Sd2Card.h +++ b/Marlin/src/sd/Sd2Card.h @@ -70,7 +70,7 @@ typedef enum : uint8_t { SD_CARD_ERROR_WRITE_PROGRAMMING = 0x16, // Card returned an error to a CMD13 status check after a write SD_CARD_ERROR_WRITE_TIMEOUT = 0x17, // Timeout occurred during write programming SD_CARD_ERROR_SCK_RATE = 0x18, // Incorrect rate selected - SD_CARD_ERROR_INIT_NOT_CALLED = 0x19, // Init() not called + SD_CARD_ERROR_INIT_NOT_CALLED = 0x19, // init() not called // 0x1A is unused now, it was: card returned an error for CMD59 (CRC_ON_OFF) SD_CARD_ERROR_READ_CRC = 0x1B // Invalid read CRC } sd_error_code_t; diff --git a/Marlin/src/sd/cardreader.cpp b/Marlin/src/sd/cardreader.cpp index 4bc22e84ca..e09bc5265a 100644 --- a/Marlin/src/sd/cardreader.cpp +++ b/Marlin/src/sd/cardreader.cpp @@ -621,7 +621,7 @@ void CardReader::startOrResumeFilePrinting() { // void CardReader::endFilePrintNow(TERN_(SD_RESORT, const bool re_sort/*=false*/)) { TERN_(ADVANCED_PAUSE_FEATURE, did_pause_print = 0); - TERN_(DWIN_CREALITY_LCD, HMI_flag.print_finish = flag.sdprinting); + TERN_(DWIN_CREALITY_LCD, hmiFlag.print_finish = flag.sdprinting); flag.abort_sd_printing = false; if (isFileOpen()) file.close(); TERN_(SD_RESORT, if (re_sort) presort()); From d26955bde6d64430ed46422f3ec575317c648837 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 14 Jun 2023 19:06:17 -0500 Subject: [PATCH 548/659] =?UTF-8?q?=F0=9F=94=A7=20Sanity=20check=20IA=5FCR?= =?UTF-8?q?EALITY=20mesh=20size?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/SanityCheck.h | 3 +++ Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp | 2 +- Marlin/src/lcd/extui/ia_creality/ia_creality_rts.h | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 361c63af4d..ab4b0e4e12 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1552,6 +1552,9 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #if HAS_MESH && HAS_CLASSIC_JERK static_assert(DEFAULT_ZJERK > 0.1, "Low DEFAULT_ZJERK values are incompatible with mesh-based leveling."); #endif +#if HAS_MESH && DGUS_LCD_UI_IA_CREALITY && GRID_MAX_POINTS > 25 + #error "DGUS_LCD_UI IA_CREALITY requires a mesh with no more than 25 points as defined by GRID_MAX_POINTS_X/Y." +#endif #if ENABLED(G26_MESH_VALIDATION) #if !HAS_EXTRUDERS diff --git a/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp b/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp index 3eac438bb1..a64fa2ef20 100644 --- a/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp +++ b/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp @@ -674,7 +674,7 @@ void RTS::handleData() { case DisplayStandbyBrightness: Checkkey = DisplayStandbyBrightness; break; case DisplayStandbySeconds: Checkkey = DisplayStandbySeconds; break; default: - if (WITHIN(recdat.addr, AutolevelVal, 4400)) // (int16_t(AutolevelVal) + GRID_MAX_POINTS * 2) = 4400 with 5x5 mesh + if (WITHIN(recdat.addr, AutolevelVal, AutolevelVal + 2 * (5 * 5 - 1))) // Assuming 5x5 mesh or smaller Checkkey = AutolevelVal; else if (WITHIN(recdat.addr, SDFILE_ADDR, SDFILE_ADDR + 10 * (FileNum + 1))) Checkkey = Filename; diff --git a/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.h b/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.h index 9ec7d7872f..3b467f4d25 100644 --- a/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.h +++ b/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.h @@ -279,7 +279,7 @@ enum PROC_COM { }; const uint16_t Addrbuf[] = { - 0x1002, 0x1004, 0x1006, 0x1008, 0x100A, 0x100C, 0x1026, 0x1030, 0x1032, 0x1034, 0x103A, + 0x1002, 0x1004, 0x1006, 0x1008, 0x100A, 0x100C, 0x1026, 0x1030, 0x1032, 0x1034, 0x103A, 0x103E, 0x1040, 0x1044, 0x1046, 0x1048, 0x104A, 0x104C, 0x1054, 0x1056, 0x1058, 0x105C, 0x105E, 0x105F, 0x1088, 0 }; From 5cfe3af0ef1b64d8cbb87335a7e996bf3e1f41a4 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 15 Jun 2023 00:26:48 +0000 Subject: [PATCH 549/659] [cron] Bump distribution date (2023-06-15) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 157ebe20f9..29bd03701d 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-13" +//#define STRING_DISTRIBUTION_DATE "2023-06-15" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index feaba9dbe7..67d5d5806f 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-13" + #define STRING_DISTRIBUTION_DATE "2023-06-15" #endif /** From 166ed289953fe25ff4dabd2541934e7364684168 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 14 Jun 2023 19:37:35 -0500 Subject: [PATCH 550/659] =?UTF-8?q?=F0=9F=8E=A8=20Lowercase=20followup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25939 --- Marlin/src/MarlinCore.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 8b89a00c20..e183a04359 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -1583,7 +1583,7 @@ void setup() { #endif #if HAS_DWIN_E3V2_BASIC - SETUP_RUN(DWIN_InitScreen()); + SETUP_RUN(dwinInitScreen()); #endif #if HAS_SERVICE_INTERVALS && !HAS_DWIN_E3V2_BASIC From 067091458a684a5f5529ef31860a89892750f5bc Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Wed, 14 Jun 2023 17:41:43 -0700 Subject: [PATCH 551/659] =?UTF-8?q?=F0=9F=8E=A8=20Group=20STM32G0=20pins?= =?UTF-8?q?=20includes=20(#25977)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/pins.h | 678 +++++++++++++++++++++-------------------- 1 file changed, 342 insertions(+), 336 deletions(-) diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index f4ea959cb7..9a3b3c3c22 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -128,754 +128,760 @@ // #if MB(RAMPS_OLD) - #include "ramps/pins_RAMPS_OLD.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_RAMPS_OLD.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(RAMPS_13_EFB, RAMPS_13_EEB, RAMPS_13_EFF, RAMPS_13_EEF, RAMPS_13_SF) - #include "ramps/pins_RAMPS_13.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_RAMPS_13.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(RAMPS_14_EFB, RAMPS_14_EEB, RAMPS_14_EFF, RAMPS_14_EEF, RAMPS_14_SF) - #include "ramps/pins_RAMPS.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_RAMPS.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(RAMPS_PLUS_EFB, RAMPS_PLUS_EEB, RAMPS_PLUS_EFF, RAMPS_PLUS_EEF, RAMPS_PLUS_SF) - #include "ramps/pins_RAMPS_PLUS.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_RAMPS_PLUS.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 // // RAMPS Derivatives - ATmega1280, ATmega2560 // #elif MB(3DRAG) - #include "ramps/pins_3DRAG.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_3DRAG.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(K8200) - #include "ramps/pins_K8200.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_K8200.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(K8400) - #include "ramps/pins_K8400.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_K8400.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(K8600) - #include "ramps/pins_K8600.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_K8600.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(K8800) - #include "ramps/pins_K8800.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_K8800.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(BAM_DICE) - #include "ramps/pins_RAMPS.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_RAMPS.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(BAM_DICE_DUE) - #include "ramps/pins_BAM_DICE_DUE.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_BAM_DICE_DUE.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(MKS_BASE) - #include "ramps/pins_MKS_BASE_10.h" // ATmega2560 env:mega2560 + #include "ramps/pins_MKS_BASE_10.h" // ATmega2560 env:mega2560 #elif MB(MKS_BASE_14) - #include "ramps/pins_MKS_BASE_14.h" // ATmega2560 env:mega2560 + #include "ramps/pins_MKS_BASE_14.h" // ATmega2560 env:mega2560 #elif MB(MKS_BASE_15) - #include "ramps/pins_MKS_BASE_15.h" // ATmega2560 env:mega2560 + #include "ramps/pins_MKS_BASE_15.h" // ATmega2560 env:mega2560 #elif MB(MKS_BASE_16) - #include "ramps/pins_MKS_BASE_16.h" // ATmega2560 env:mega2560 + #include "ramps/pins_MKS_BASE_16.h" // ATmega2560 env:mega2560 #elif MB(MKS_BASE_HEROIC) - #include "ramps/pins_MKS_BASE_HEROIC.h" // ATmega2560 env:mega2560 + #include "ramps/pins_MKS_BASE_HEROIC.h" // ATmega2560 env:mega2560 #elif MB(MKS_GEN_13) - #include "ramps/pins_MKS_GEN_13.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_MKS_GEN_13.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(MKS_GEN_L) - #include "ramps/pins_MKS_GEN_L.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_MKS_GEN_L.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(KFB_2) - #include "ramps/pins_BIQU_KFB_2.h" // ATmega2560 env:mega2560 + #include "ramps/pins_BIQU_KFB_2.h" // ATmega2560 env:mega2560 #elif MB(ZRIB_V20) - #include "ramps/pins_ZRIB_V20.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_ZRIB_V20.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(ZRIB_V52) - #include "ramps/pins_ZRIB_V52.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_ZRIB_V52.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(ZRIB_V53) - #include "ramps/pins_ZRIB_V53.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_ZRIB_V53.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(FELIX2) - #include "ramps/pins_FELIX2.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_FELIX2.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(RIGIDBOARD) - #include "ramps/pins_RIGIDBOARD.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_RIGIDBOARD.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(RIGIDBOARD_V2) - #include "ramps/pins_RIGIDBOARD_V2.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_RIGIDBOARD_V2.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(SAINSMART_2IN1) - #include "ramps/pins_SAINSMART_2IN1.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_SAINSMART_2IN1.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(ULTIMAKER) - #include "ramps/pins_ULTIMAKER.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_ULTIMAKER.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(ULTIMAKER_OLD) - #include "ramps/pins_ULTIMAKER_OLD.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "ramps/pins_ULTIMAKER_OLD.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(AZTEEG_X3) - #include "ramps/pins_AZTEEG_X3.h" // ATmega2560 env:mega2560 + #include "ramps/pins_AZTEEG_X3.h" // ATmega2560 env:mega2560 #elif MB(AZTEEG_X3_PRO) - #include "ramps/pins_AZTEEG_X3_PRO.h" // ATmega2560 env:mega2560 + #include "ramps/pins_AZTEEG_X3_PRO.h" // ATmega2560 env:mega2560 #elif MB(ULTIMAIN_2) - #include "ramps/pins_ULTIMAIN_2.h" // ATmega2560 env:mega2560ext + #include "ramps/pins_ULTIMAIN_2.h" // ATmega2560 env:mega2560ext #elif MB(FORMBOT_RAPTOR) - #include "ramps/pins_FORMBOT_RAPTOR.h" // ATmega2560 env:mega2560 + #include "ramps/pins_FORMBOT_RAPTOR.h" // ATmega2560 env:mega2560 #elif MB(FORMBOT_RAPTOR2) - #include "ramps/pins_FORMBOT_RAPTOR2.h" // ATmega2560 env:mega2560 + #include "ramps/pins_FORMBOT_RAPTOR2.h" // ATmega2560 env:mega2560 #elif MB(FORMBOT_TREX2PLUS) - #include "ramps/pins_FORMBOT_TREX2PLUS.h" // ATmega2560 env:mega2560 + #include "ramps/pins_FORMBOT_TREX2PLUS.h" // ATmega2560 env:mega2560 #elif MB(FORMBOT_TREX3) - #include "ramps/pins_FORMBOT_TREX3.h" // ATmega2560 env:mega2560 + #include "ramps/pins_FORMBOT_TREX3.h" // ATmega2560 env:mega2560 #elif MB(RUMBA) - #include "ramps/pins_RUMBA.h" // ATmega2560 env:mega2560 + #include "ramps/pins_RUMBA.h" // ATmega2560 env:mega2560 #elif MB(RUMBA_RAISE3D) - #include "ramps/pins_RUMBA_RAISE3D.h" // ATmega2560 env:mega2560 + #include "ramps/pins_RUMBA_RAISE3D.h" // ATmega2560 env:mega2560 #elif MB(RL200) - #include "ramps/pins_RL200.h" // ATmega2560 env:mega2560 + #include "ramps/pins_RL200.h" // ATmega2560 env:mega2560 #elif MB(BQ_ZUM_MEGA_3D) - #include "ramps/pins_BQ_ZUM_MEGA_3D.h" // ATmega2560 env:mega2560ext + #include "ramps/pins_BQ_ZUM_MEGA_3D.h" // ATmega2560 env:mega2560ext #elif MB(MAKEBOARD_MINI) - #include "ramps/pins_MAKEBOARD_MINI.h" // ATmega2560 env:mega2560 + #include "ramps/pins_MAKEBOARD_MINI.h" // ATmega2560 env:mega2560 #elif MB(TRIGORILLA_13) - #include "ramps/pins_TRIGORILLA_13.h" // ATmega2560 env:mega2560 + #include "ramps/pins_TRIGORILLA_13.h" // ATmega2560 env:mega2560 #elif MB(TRIGORILLA_14, TRIGORILLA_14_11) - #include "ramps/pins_TRIGORILLA_14.h" // ATmega2560 env:mega2560 + #include "ramps/pins_TRIGORILLA_14.h" // ATmega2560 env:mega2560 #elif MB(RAMPS_ENDER_4) - #include "ramps/pins_RAMPS_ENDER_4.h" // ATmega2560 env:mega2560 + #include "ramps/pins_RAMPS_ENDER_4.h" // ATmega2560 env:mega2560 #elif MB(RAMPS_CREALITY) - #include "ramps/pins_RAMPS_CREALITY.h" // ATmega2560 env:mega2560 + #include "ramps/pins_RAMPS_CREALITY.h" // ATmega2560 env:mega2560 #elif MB(DAGOMA_F5) - #include "ramps/pins_DAGOMA_F5.h" // ATmega2560 env:mega2560 + #include "ramps/pins_DAGOMA_F5.h" // ATmega2560 env:mega2560 #elif MB(FYSETC_F6_13) - #include "ramps/pins_FYSETC_F6_13.h" // ATmega2560 env:FYSETC_F6 + #include "ramps/pins_FYSETC_F6_13.h" // ATmega2560 env:FYSETC_F6 #elif MB(FYSETC_F6_14) - #include "ramps/pins_FYSETC_F6_14.h" // ATmega2560 env:FYSETC_F6 + #include "ramps/pins_FYSETC_F6_14.h" // ATmega2560 env:FYSETC_F6 #elif MB(DUPLICATOR_I3_PLUS) - #include "ramps/pins_DUPLICATOR_I3_PLUS.h" // ATmega2560 env:mega2560 + #include "ramps/pins_DUPLICATOR_I3_PLUS.h" // ATmega2560 env:mega2560 #elif MB(VORON) - #include "ramps/pins_VORON.h" // ATmega2560 env:mega2560 + #include "ramps/pins_VORON.h" // ATmega2560 env:mega2560 #elif MB(TRONXY_V3_1_0) - #include "ramps/pins_TRONXY_V3_1_0.h" // ATmega2560 env:mega2560 + #include "ramps/pins_TRONXY_V3_1_0.h" // ATmega2560 env:mega2560 #elif MB(Z_BOLT_X_SERIES) - #include "ramps/pins_Z_BOLT_X_SERIES.h" // ATmega2560 env:mega2560 + #include "ramps/pins_Z_BOLT_X_SERIES.h" // ATmega2560 env:mega2560 #elif MB(TT_OSCAR) - #include "ramps/pins_TT_OSCAR.h" // ATmega2560 env:mega2560 + #include "ramps/pins_TT_OSCAR.h" // ATmega2560 env:mega2560 #elif MB(TANGO) - #include "ramps/pins_TANGO.h" // ATmega2560 env:mega2560 + #include "ramps/pins_TANGO.h" // ATmega2560 env:mega2560 #elif MB(MKS_GEN_L_V2) - #include "ramps/pins_MKS_GEN_L_V2.h" // ATmega2560 env:mega2560 + #include "ramps/pins_MKS_GEN_L_V2.h" // ATmega2560 env:mega2560 #elif MB(COPYMASTER_3D) - #include "ramps/pins_COPYMASTER_3D.h" // ATmega2560 env:mega2560 + #include "ramps/pins_COPYMASTER_3D.h" // ATmega2560 env:mega2560 #elif MB(ORTUR_4) - #include "ramps/pins_ORTUR_4.h" // ATmega2560 env:mega2560 + #include "ramps/pins_ORTUR_4.h" // ATmega2560 env:mega2560 #elif MB(TENLOG_D3_HERO) - #include "ramps/pins_TENLOG_D3_HERO.h" // ATmega2560 env:mega2560 + #include "ramps/pins_TENLOG_D3_HERO.h" // ATmega2560 env:mega2560 #elif MB(TENLOG_MB1_V23) - #include "ramps/pins_TENLOG_MB1_V23.h" // ATmega2560 env:mega2560 + #include "ramps/pins_TENLOG_MB1_V23.h" // ATmega2560 env:mega2560 #elif MB(MKS_GEN_L_V21) - #include "ramps/pins_MKS_GEN_L_V21.h" // ATmega2560 env:mega2560 + #include "ramps/pins_MKS_GEN_L_V21.h" // ATmega2560 env:mega2560 #elif MB(RAMPS_S_12_EEFB, RAMPS_S_12_EEEB, RAMPS_S_12_EFFB) - #include "ramps/pins_RAMPS_S_12.h" // ATmega2560 env:mega2560 + #include "ramps/pins_RAMPS_S_12.h" // ATmega2560 env:mega2560 #elif MB(LONGER3D_LK1_PRO, LONGER3D_LKx_PRO) - #include "ramps/pins_LONGER3D_LKx_PRO.h" // ATmega2560 env:mega2560 + #include "ramps/pins_LONGER3D_LKx_PRO.h" // ATmega2560 env:mega2560 #elif MB(PXMALION_CORE_I3) - #include "ramps/pins_PXMALION_CORE_I3.h" // ATmega2560 env:mega2560 + #include "ramps/pins_PXMALION_CORE_I3.h" // ATmega2560 env:mega2560 #elif MB(PANOWIN_CUTLASS) - #include "ramps/pins_PANOWIN_CUTLASS.h" // ATmega2560 env:mega2560ext + #include "ramps/pins_PANOWIN_CUTLASS.h" // ATmega2560 env:mega2560ext #elif MB(KODAMA_BARDO) - #include "ramps/pins_KODAMA_BARDO.h" // ATmega2560 env:mega2560ext + #include "ramps/pins_KODAMA_BARDO.h" // ATmega2560 env:mega2560ext // // RAMBo and derivatives // #elif MB(RAMBO) - #include "rambo/pins_RAMBO.h" // ATmega2560 env:rambo + #include "rambo/pins_RAMBO.h" // ATmega2560 env:rambo #elif MB(MINIRAMBO, MINIRAMBO_10A) - #include "rambo/pins_MINIRAMBO.h" // ATmega2560 env:rambo + #include "rambo/pins_MINIRAMBO.h" // ATmega2560 env:rambo #elif MB(EINSY_RAMBO) - #include "rambo/pins_EINSY_RAMBO.h" // ATmega2560 env:rambo + #include "rambo/pins_EINSY_RAMBO.h" // ATmega2560 env:rambo #elif MB(EINSY_RETRO) - #include "rambo/pins_EINSY_RETRO.h" // ATmega2560 env:rambo + #include "rambo/pins_EINSY_RETRO.h" // ATmega2560 env:rambo #elif MB(SCOOVO_X9H) - #include "rambo/pins_SCOOVO_X9H.h" // ATmega2560 env:rambo + #include "rambo/pins_SCOOVO_X9H.h" // ATmega2560 env:rambo #elif MB(RAMBO_THINKERV2) - #include "rambo/pins_RAMBO_THINKERV2.h" // ATmega2560 env:rambo + #include "rambo/pins_RAMBO_THINKERV2.h" // ATmega2560 env:rambo // // Other ATmega1280, ATmega2560 // #elif MB(CNCONTROLS_11) - #include "mega/pins_CNCONTROLS_11.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "mega/pins_CNCONTROLS_11.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(CNCONTROLS_12) - #include "mega/pins_CNCONTROLS_12.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "mega/pins_CNCONTROLS_12.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(CNCONTROLS_15) - #include "mega/pins_CNCONTROLS_15.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "mega/pins_CNCONTROLS_15.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(MIGHTYBOARD_REVE) - #include "mega/pins_MIGHTYBOARD_REVE.h" // ATmega2560, ATmega1280 env:mega2560ext env:MightyBoard1280 env:MightyBoard2560 + #include "mega/pins_MIGHTYBOARD_REVE.h" // ATmega2560, ATmega1280 env:mega2560ext env:MightyBoard1280 env:MightyBoard2560 #elif MB(CHEAPTRONIC) - #include "mega/pins_CHEAPTRONIC.h" // ATmega2560 env:mega2560 + #include "mega/pins_CHEAPTRONIC.h" // ATmega2560 env:mega2560 #elif MB(CHEAPTRONIC_V2) - #include "mega/pins_CHEAPTRONICv2.h" // ATmega2560 env:mega2560 + #include "mega/pins_CHEAPTRONICv2.h" // ATmega2560 env:mega2560 #elif MB(MEGATRONICS) - #include "mega/pins_MEGATRONICS.h" // ATmega2560 env:mega2560 + #include "mega/pins_MEGATRONICS.h" // ATmega2560 env:mega2560 #elif MB(MEGATRONICS_2) - #include "mega/pins_MEGATRONICS_2.h" // ATmega2560 env:mega2560 + #include "mega/pins_MEGATRONICS_2.h" // ATmega2560 env:mega2560 #elif MB(MEGATRONICS_3, MEGATRONICS_31, MEGATRONICS_32) - #include "mega/pins_MEGATRONICS_3.h" // ATmega2560 env:mega2560 + #include "mega/pins_MEGATRONICS_3.h" // ATmega2560 env:mega2560 #elif MB(ELEFU_3) - #include "mega/pins_ELEFU_3.h" // ATmega2560 env:mega2560 + #include "mega/pins_ELEFU_3.h" // ATmega2560 env:mega2560 #elif MB(LEAPFROG) - #include "mega/pins_LEAPFROG.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "mega/pins_LEAPFROG.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(MEGACONTROLLER) - #include "mega/pins_MEGACONTROLLER.h" // ATmega2560 env:mega2560 + #include "mega/pins_MEGACONTROLLER.h" // ATmega2560 env:mega2560 #elif MB(GT2560_REV_A) - #include "mega/pins_GT2560_REV_A.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "mega/pins_GT2560_REV_A.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(GT2560_REV_A_PLUS) - #include "mega/pins_GT2560_REV_A_PLUS.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 + #include "mega/pins_GT2560_REV_A_PLUS.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(GT2560_V3) - #include "mega/pins_GT2560_V3.h" // ATmega2560 env:mega2560 + #include "mega/pins_GT2560_V3.h" // ATmega2560 env:mega2560 #elif MB(GT2560_REV_B) - #include "mega/pins_GT2560_REV_B.h" // ATmega2560 env:mega2560 + #include "mega/pins_GT2560_REV_B.h" // ATmega2560 env:mega2560 #elif MB(GT2560_V4) - #include "mega/pins_GT2560_V4.h" // ATmega2560 env:mega2560 + #include "mega/pins_GT2560_V4.h" // ATmega2560 env:mega2560 #elif MB(GT2560_V4_A20) - #include "mega/pins_GT2560_V4_A20.h" // ATmega2560 env:mega2560 + #include "mega/pins_GT2560_V4_A20.h" // ATmega2560 env:mega2560 #elif MB(GT2560_V3_MC2) - #include "mega/pins_GT2560_V3_MC2.h" // ATmega2560 env:mega2560 + #include "mega/pins_GT2560_V3_MC2.h" // ATmega2560 env:mega2560 #elif MB(GT2560_V3_A20) - #include "mega/pins_GT2560_V3_A20.h" // ATmega2560 env:mega2560 + #include "mega/pins_GT2560_V3_A20.h" // ATmega2560 env:mega2560 #elif MB(EINSTART_S) - #include "mega/pins_EINSTART-S.h" // ATmega2560, ATmega1280 env:mega2560ext env:mega1280 + #include "mega/pins_EINSTART-S.h" // ATmega2560, ATmega1280 env:mega2560ext env:mega1280 #elif MB(WANHAO_ONEPLUS) - #include "mega/pins_WANHAO_ONEPLUS.h" // ATmega2560 env:mega2560 + #include "mega/pins_WANHAO_ONEPLUS.h" // ATmega2560 env:mega2560 #elif MB(OVERLORD) - #include "mega/pins_OVERLORD.h" // ATmega2560 env:mega2560 + #include "mega/pins_OVERLORD.h" // ATmega2560 env:mega2560 #elif MB(HJC2560C_REV1) - #include "mega/pins_HJC2560C_REV2.h" // ATmega2560 env:mega2560 + #include "mega/pins_HJC2560C_REV2.h" // ATmega2560 env:mega2560 #elif MB(HJC2560C_REV2) - #include "mega/pins_HJC2560C_REV2.h" // ATmega2560 env:mega2560 + #include "mega/pins_HJC2560C_REV2.h" // ATmega2560 env:mega2560 #elif MB(LEAPFROG_XEED2015) - #include "mega/pins_LEAPFROG_XEED2015.h" // ATmega2560 env:mega2560 + #include "mega/pins_LEAPFROG_XEED2015.h" // ATmega2560 env:mega2560 #elif MB(PICA) - #include "mega/pins_PICA.h" // ATmega2560 env:mega2560 + #include "mega/pins_PICA.h" // ATmega2560 env:mega2560 #elif MB(PICA_REVB) - #include "mega/pins_PICAOLD.h" // ATmega2560 env:mega2560 + #include "mega/pins_PICAOLD.h" // ATmega2560 env:mega2560 #elif MB(INTAMSYS40) - #include "mega/pins_INTAMSYS40.h" // ATmega2560 env:mega2560 + #include "mega/pins_INTAMSYS40.h" // ATmega2560 env:mega2560 #elif MB(MALYAN_M180) - #include "mega/pins_MALYAN_M180.h" // ATmega2560 env:mega2560 + #include "mega/pins_MALYAN_M180.h" // ATmega2560 env:mega2560 #elif MB(PROTONEER_CNC_SHIELD_V3) - #include "mega/pins_PROTONEER_CNC_SHIELD_V3.h"// ATmega2560 env:mega2560 + #include "mega/pins_PROTONEER_CNC_SHIELD_V3.h" // ATmega2560 env:mega2560 #elif MB(WEEDO_62A) - #include "mega/pins_WEEDO_62A.h" // ATmega2560 env:mega2560 + #include "mega/pins_WEEDO_62A.h" // ATmega2560 env:mega2560 // // ATmega1281, ATmega2561 // #elif MB(MINITRONICS) - #include "mega/pins_MINITRONICS.h" // ATmega1281 env:mega1280 + #include "mega/pins_MINITRONICS.h" // ATmega1281 env:mega1280 #elif MB(SILVER_GATE) - #include "mega/pins_SILVER_GATE.h" // ATmega2561 env:mega2560 + #include "mega/pins_SILVER_GATE.h" // ATmega2561 env:mega2560 // // Sanguinololu and Derivatives - ATmega644P, ATmega1284P // #elif MB(SANGUINOLOLU_11) - #include "sanguino/pins_SANGUINOLOLU_11.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_SANGUINOLOLU_11.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(SANGUINOLOLU_12) - #include "sanguino/pins_SANGUINOLOLU_12.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_SANGUINOLOLU_12.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(MELZI) - #include "sanguino/pins_MELZI.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_MELZI.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(MELZI_V2) - #include "sanguino/pins_MELZI_V2.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_MELZI_V2.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(MELZI_MAKR3D) - #include "sanguino/pins_MELZI_MAKR3D.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_MELZI_MAKR3D.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(MELZI_CREALITY) - #include "sanguino/pins_MELZI_CREALITY.h" // ATmega1284P env:melzi_optiboot_optimized env:melzi_optiboot env:melzi_optimized env:melzi + #include "sanguino/pins_MELZI_CREALITY.h" // ATmega1284P env:melzi_optiboot_optimized env:melzi_optiboot env:melzi_optimized env:melzi #elif MB(MELZI_CREALITY_ENDER2) - #include "sanguino/pins_MELZI_CREALITY_E2.h" // ATmega1284P env:melzi_optiboot_optimized env:melzi_optiboot env:melzi_optimized env:melzi + #include "sanguino/pins_MELZI_CREALITY_E2.h" // ATmega1284P env:melzi_optiboot_optimized env:melzi_optiboot env:melzi_optimized env:melzi #elif MB(MELZI_MALYAN) - #include "sanguino/pins_MELZI_MALYAN.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_MELZI_MALYAN.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(MELZI_TRONXY) - #include "sanguino/pins_MELZI_TRONXY.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_MELZI_TRONXY.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(STB_11) - #include "sanguino/pins_STB_11.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_STB_11.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(AZTEEG_X1) - #include "sanguino/pins_AZTEEG_X1.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_AZTEEG_X1.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(ZMIB_V2) - #include "sanguino/pins_ZMIB_V2.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_ZMIB_V2.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p // // Other ATmega644P, ATmega644, ATmega1284P // #elif MB(GEN3_MONOLITHIC) - #include "sanguino/pins_GEN3_MONOLITHIC.h" // ATmega644P env:sanguino644p + #include "sanguino/pins_GEN3_MONOLITHIC.h" // ATmega644P env:sanguino644p #elif MB(GEN3_PLUS) - #include "sanguino/pins_GEN3_PLUS.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_GEN3_PLUS.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(GEN6) - #include "sanguino/pins_GEN6.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_GEN6.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(GEN6_DELUXE) - #include "sanguino/pins_GEN6_DELUXE.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_GEN6_DELUXE.h" // ATmega644P, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(GEN7_CUSTOM) - #include "sanguino/pins_GEN7_CUSTOM.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_GEN7_CUSTOM.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(GEN7_12) - #include "sanguino/pins_GEN7_12.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_GEN7_12.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(GEN7_13) - #include "sanguino/pins_GEN7_13.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_GEN7_13.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(GEN7_14) - #include "sanguino/pins_GEN7_14.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_GEN7_14.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p #elif MB(OMCA_A) - #include "sanguino/pins_OMCA_A.h" // ATmega644 env:sanguino644p + #include "sanguino/pins_OMCA_A.h" // ATmega644 env:sanguino644p #elif MB(OMCA) - #include "sanguino/pins_OMCA.h" // ATmega644P, ATmega644 env:sanguino644p + #include "sanguino/pins_OMCA.h" // ATmega644P, ATmega644 env:sanguino644p #elif MB(ANET_10) - #include "sanguino/pins_ANET_10.h" // ATmega1284P env:sanguino1284p env:sanguino1284p_optimized env:melzi_optiboot + #include "sanguino/pins_ANET_10.h" // ATmega1284P env:sanguino1284p env:sanguino1284p_optimized env:melzi_optiboot #elif MB(SETHI) - #include "sanguino/pins_SETHI.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p + #include "sanguino/pins_SETHI.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino1284p_optimized env:sanguino1284p env:sanguino644p // // Teensyduino - AT90USB1286, AT90USB1286P // #elif MB(TEENSYLU) - #include "teensy2/pins_TEENSYLU.h" // AT90USB1286, AT90USB1286P env:at90usb1286_cdc + #include "teensy2/pins_TEENSYLU.h" // AT90USB1286, AT90USB1286P env:at90usb1286_cdc #elif MB(PRINTRBOARD) - #include "teensy2/pins_PRINTRBOARD.h" // AT90USB1286 env:at90usb1286_dfu + #include "teensy2/pins_PRINTRBOARD.h" // AT90USB1286 env:at90usb1286_dfu #elif MB(PRINTRBOARD_REVF) - #include "teensy2/pins_PRINTRBOARD_REVF.h" // AT90USB1286 env:at90usb1286_dfu + #include "teensy2/pins_PRINTRBOARD_REVF.h" // AT90USB1286 env:at90usb1286_dfu #elif MB(BRAINWAVE) - #include "teensy2/pins_BRAINWAVE.h" // AT90USB646 env:at90usb1286_cdc + #include "teensy2/pins_BRAINWAVE.h" // AT90USB646 env:at90usb1286_cdc #elif MB(BRAINWAVE_PRO) - #include "teensy2/pins_BRAINWAVE_PRO.h" // AT90USB1286 env:at90usb1286_cdc + #include "teensy2/pins_BRAINWAVE_PRO.h" // AT90USB1286 env:at90usb1286_cdc #elif MB(SAV_MKI) - #include "teensy2/pins_SAV_MKI.h" // AT90USB1286 env:at90usb1286_cdc + #include "teensy2/pins_SAV_MKI.h" // AT90USB1286 env:at90usb1286_cdc #elif MB(TEENSY2) - #include "teensy2/pins_TEENSY2.h" // AT90USB1286 env:teensy20 + #include "teensy2/pins_TEENSY2.h" // AT90USB1286 env:teensy20 #elif MB(5DPRINT) - #include "teensy2/pins_5DPRINT.h" // AT90USB1286 env:at90usb1286_dfu + #include "teensy2/pins_5DPRINT.h" // AT90USB1286 env:at90usb1286_dfu // -// LPC1768 ARM Cortex M3 +// LPC1768 ARM Cortex-M3 // #elif MB(RAMPS_14_RE_ARM_EFB, RAMPS_14_RE_ARM_EEB, RAMPS_14_RE_ARM_EFF, RAMPS_14_RE_ARM_EEF, RAMPS_14_RE_ARM_SF) - #include "lpc1768/pins_RAMPS_RE_ARM.h" // LPC1768 env:LPC1768 + #include "lpc1768/pins_RAMPS_RE_ARM.h" // LPC1768 env:LPC1768 #elif MB(MKS_SBASE) - #include "lpc1768/pins_MKS_SBASE.h" // LPC1768 env:LPC1768 + #include "lpc1768/pins_MKS_SBASE.h" // LPC1768 env:LPC1768 #elif MB(MKS_SGEN_L) - #include "lpc1768/pins_MKS_SGEN_L.h" // LPC1768 env:LPC1768 + #include "lpc1768/pins_MKS_SGEN_L.h" // LPC1768 env:LPC1768 #elif MB(AZSMZ_MINI) - #include "lpc1768/pins_AZSMZ_MINI.h" // LPC1768 env:LPC1768 + #include "lpc1768/pins_AZSMZ_MINI.h" // LPC1768 env:LPC1768 #elif MB(BIQU_BQ111_A4) - #include "lpc1768/pins_BIQU_BQ111_A4.h" // LPC1768 env:LPC1768 + #include "lpc1768/pins_BIQU_BQ111_A4.h" // LPC1768 env:LPC1768 #elif MB(SELENA_COMPACT) - #include "lpc1768/pins_SELENA_COMPACT.h" // LPC1768 env:LPC1768 + #include "lpc1768/pins_SELENA_COMPACT.h" // LPC1768 env:LPC1768 #elif MB(BIQU_B300_V1_0) - #include "lpc1768/pins_BIQU_B300_V1.0.h" // LPC1768 env:LPC1768 + #include "lpc1768/pins_BIQU_B300_V1.0.h" // LPC1768 env:LPC1768 #elif MB(GMARSH_X6_REV1) - #include "lpc1768/pins_GMARSH_X6_REV1.h" // LPC1768 env:LPC1768 + #include "lpc1768/pins_GMARSH_X6_REV1.h" // LPC1768 env:LPC1768 #elif MB(BTT_SKR_V1_1) - #include "lpc1768/pins_BTT_SKR_V1_1.h" // LPC1768 env:LPC1768 + #include "lpc1768/pins_BTT_SKR_V1_1.h" // LPC1768 env:LPC1768 #elif MB(BTT_SKR_V1_3) - #include "lpc1768/pins_BTT_SKR_V1_3.h" // LPC1768 env:LPC1768 + #include "lpc1768/pins_BTT_SKR_V1_3.h" // LPC1768 env:LPC1768 #elif MB(BTT_SKR_V1_4) - #include "lpc1768/pins_BTT_SKR_V1_4.h" // LPC1768 env:LPC1768 + #include "lpc1768/pins_BTT_SKR_V1_4.h" // LPC1768 env:LPC1768 #elif MB(EMOTRONIC) - #include "lpc1768/pins_EMOTRONIC.h" // LPC1768 env:LPC1768 + #include "lpc1768/pins_EMOTRONIC.h" // LPC1768 env:LPC1768 // -// LPC1769 ARM Cortex M3 +// LPC1769 ARM Cortex-M3 // #elif MB(MKS_SGEN) - #include "lpc1769/pins_MKS_SGEN.h" // LPC1769 env:LPC1769 + #include "lpc1769/pins_MKS_SGEN.h" // LPC1769 env:LPC1769 #elif MB(AZTEEG_X5_GT) - #include "lpc1769/pins_AZTEEG_X5_GT.h" // LPC1769 env:LPC1769 + #include "lpc1769/pins_AZTEEG_X5_GT.h" // LPC1769 env:LPC1769 #elif MB(AZTEEG_X5_MINI) - #include "lpc1769/pins_AZTEEG_X5_MINI.h" // LPC1769 env:LPC1769 + #include "lpc1769/pins_AZTEEG_X5_MINI.h" // LPC1769 env:LPC1769 #elif MB(AZTEEG_X5_MINI_WIFI) - #include "lpc1769/pins_AZTEEG_X5_MINI_WIFI.h" // LPC1769 env:LPC1769 + #include "lpc1769/pins_AZTEEG_X5_MINI_WIFI.h" // LPC1769 env:LPC1769 #elif MB(COHESION3D_REMIX) - #include "lpc1769/pins_COHESION3D_REMIX.h" // LPC1769 env:LPC1769 + #include "lpc1769/pins_COHESION3D_REMIX.h" // LPC1769 env:LPC1769 #elif MB(COHESION3D_MINI) - #include "lpc1769/pins_COHESION3D_MINI.h" // LPC1769 env:LPC1769 + #include "lpc1769/pins_COHESION3D_MINI.h" // LPC1769 env:LPC1769 #elif MB(SMOOTHIEBOARD) - #include "lpc1769/pins_SMOOTHIEBOARD.h" // LPC1769 env:LPC1769 + #include "lpc1769/pins_SMOOTHIEBOARD.h" // LPC1769 env:LPC1769 #elif MB(TH3D_EZBOARD) - #include "lpc1769/pins_TH3D_EZBOARD.h" // LPC1769 env:LPC1769 + #include "lpc1769/pins_TH3D_EZBOARD.h" // LPC1769 env:LPC1769 #elif MB(BTT_SKR_V1_4_TURBO) - #include "lpc1769/pins_BTT_SKR_V1_4_TURBO.h" // LPC1769 env:LPC1769 + #include "lpc1769/pins_BTT_SKR_V1_4_TURBO.h" // LPC1769 env:LPC1769 #elif MB(MKS_SGEN_L_V2) - #include "lpc1769/pins_MKS_SGEN_L_V2.h" // LPC1769 env:LPC1769 + #include "lpc1769/pins_MKS_SGEN_L_V2.h" // LPC1769 env:LPC1769 #elif MB(BTT_SKR_E3_TURBO) - #include "lpc1769/pins_BTT_SKR_E3_TURBO.h" // LPC1769 env:LPC1769 + #include "lpc1769/pins_BTT_SKR_E3_TURBO.h" // LPC1769 env:LPC1769 #elif MB(FLY_CDY) - #include "lpc1769/pins_FLY_CDY.h" // LPC1769 env:LPC1769 + #include "lpc1769/pins_FLY_CDY.h" // LPC1769 env:LPC1769 // // Due (ATSAM) boards // #elif MB(DUE3DOM) - #include "sam/pins_DUE3DOM.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug + #include "sam/pins_DUE3DOM.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug #elif MB(DUE3DOM_MINI) - #include "sam/pins_DUE3DOM_MINI.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug + #include "sam/pins_DUE3DOM_MINI.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug #elif MB(RADDS) - #include "sam/pins_RADDS.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug + #include "sam/pins_RADDS.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug #elif MB(RURAMPS4D_11) - #include "sam/pins_RURAMPS4D_11.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug + #include "sam/pins_RURAMPS4D_11.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug #elif MB(RURAMPS4D_13) - #include "sam/pins_RURAMPS4D_13.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug + #include "sam/pins_RURAMPS4D_13.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug #elif MB(RAMPS_FD_V1) - #include "sam/pins_RAMPS_FD_V1.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug + #include "sam/pins_RAMPS_FD_V1.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug #elif MB(RAMPS_FD_V2) - #include "sam/pins_RAMPS_FD_V2.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug + #include "sam/pins_RAMPS_FD_V2.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug #elif MB(RAMPS_SMART_EFB, RAMPS_SMART_EEB, RAMPS_SMART_EFF, RAMPS_SMART_EEF, RAMPS_SMART_SF) - #include "sam/pins_RAMPS_SMART.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug + #include "sam/pins_RAMPS_SMART.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug #elif MB(RAMPS_DUO_EFB, RAMPS_DUO_EEB, RAMPS_DUO_EFF, RAMPS_DUO_EEF, RAMPS_DUO_SF) - #include "sam/pins_RAMPS_DUO.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug + #include "sam/pins_RAMPS_DUO.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug #elif MB(RAMPS4DUE_EFB, RAMPS4DUE_EEB, RAMPS4DUE_EFF, RAMPS4DUE_EEF, RAMPS4DUE_SF) - #include "sam/pins_RAMPS4DUE.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug + #include "sam/pins_RAMPS4DUE.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug #elif MB(ULTRATRONICS_PRO) - #include "sam/pins_ULTRATRONICS_PRO.h" // SAM3X8E env:DUE env:DUE_debug + #include "sam/pins_ULTRATRONICS_PRO.h" // SAM3X8E env:DUE env:DUE_debug #elif MB(ARCHIM1) - #include "sam/pins_ARCHIM1.h" // SAM3X8E env:DUE_archim env:DUE_archim_debug + #include "sam/pins_ARCHIM1.h" // SAM3X8E env:DUE_archim env:DUE_archim_debug #elif MB(ARCHIM2) - #include "sam/pins_ARCHIM2.h" // SAM3X8E env:DUE_archim env:DUE_archim_debug + #include "sam/pins_ARCHIM2.h" // SAM3X8E env:DUE_archim env:DUE_archim_debug #elif MB(ALLIGATOR) - #include "sam/pins_ALLIGATOR_R2.h" // SAM3X8E env:DUE env:DUE_debug + #include "sam/pins_ALLIGATOR_R2.h" // SAM3X8E env:DUE env:DUE_debug #elif MB(CNCONTROLS_15D) - #include "sam/pins_CNCONTROLS_15D.h" // SAM3X8E env:DUE env:DUE_USB + #include "sam/pins_CNCONTROLS_15D.h" // SAM3X8E env:DUE env:DUE_USB #elif MB(KRATOS32) - #include "sam/pins_KRATOS32.h" // SAM3X8E env:DUE env:DUE_USB + #include "sam/pins_KRATOS32.h" // SAM3X8E env:DUE env:DUE_USB #elif MB(PRINTRBOARD_G2) - #include "sam/pins_PRINTRBOARD_G2.h" // SAM3X8C env:DUE_USB + #include "sam/pins_PRINTRBOARD_G2.h" // SAM3X8C env:DUE_USB #elif MB(ADSK) - #include "sam/pins_ADSK.h" // SAM3X8C env:DUE env:DUE_debug + #include "sam/pins_ADSK.h" // SAM3X8C env:DUE env:DUE_debug // // STM32 ARM Cortex-M0 // + #elif MB(MALYAN_M200_V2) - #include "stm32f0/pins_MALYAN_M200_V2.h" // STM32F0 env:STM32F070RB_malyan env:STM32F070CB_malyan + #include "stm32f0/pins_MALYAN_M200_V2.h" // STM32F0 env:STM32F070RB_malyan env:STM32F070CB_malyan #elif MB(MALYAN_M300) - #include "stm32f0/pins_MALYAN_M300.h" // STM32F0 env:malyan_M300 + #include "stm32f0/pins_MALYAN_M300.h" // STM32F0 env:malyan_M300 + +// +// STM32 ARM Cortex-M0+ +// + +#elif MB(BTT_EBB42_V1_1) + #include "stm32g0/pins_BTT_EBB42_V1_1.h" // STM32G0 env:BTT_EBB42_V1_1_filament_extruder +#elif MB(BTT_SKR_MINI_E3_V3_0) + #include "stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h" // STM32G0 env:STM32G0B1RE_btt env:STM32G0B1RE_btt_xfer +#elif MB(BTT_MANTA_M4P_V1_0) + #include "stm32g0/pins_BTT_MANTA_M4P_V1_0.h" // STM32G0 env:STM32G0B1RE_manta_btt env:STM32G0B1RE_manta_btt_xfer +#elif MB(BTT_MANTA_M5P_V1_0) + #include "stm32g0/pins_BTT_MANTA_M5P_V1_0.h" // STM32G0 env:STM32G0B1RE_manta_btt env:STM32G0B1RE_manta_btt_xfer +#elif MB(BTT_MANTA_E3_EZ_V1_0) + #include "stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h" // STM32G0 env:STM32G0B1RE_manta_btt env:STM32G0B1RE_manta_btt_xfer +#elif MB(BTT_MANTA_M8P_V1_0) + #include "stm32g0/pins_BTT_MANTA_M8P_V1_0.h" // STM32G0 env:STM32G0B1VE_btt env:STM32G0B1VE_btt_xfer +#elif MB(BTT_MANTA_M8P_V1_1) + #include "stm32g0/pins_BTT_MANTA_M8P_V1_1.h" // STM32G0 env:STM32G0B1VE_btt env:STM32G0B1VE_btt_xfer // // STM32 ARM Cortex-M3 // #elif MB(STM32F103RE) - #include "stm32f1/pins_STM32F1R.h" // STM32F1 env:STM32F103RE env:STM32F103RE_maple + #include "stm32f1/pins_STM32F1R.h" // STM32F1 env:STM32F103RE env:STM32F103RE_maple #elif MB(MALYAN_M200) - #include "stm32f1/pins_MALYAN_M200.h" // STM32F1 env:STM32F103CB_malyan env:STM32F103CB_malyan_maple + #include "stm32f1/pins_MALYAN_M200.h" // STM32F1 env:STM32F103CB_malyan env:STM32F103CB_malyan_maple #elif MB(STM3R_MINI) - #include "stm32f1/pins_STM3R_MINI.h" // STM32F1 env:STM32F103VE env:STM32F103RE_maple + #include "stm32f1/pins_STM3R_MINI.h" // STM32F1 env:STM32F103VE env:STM32F103RE_maple #elif MB(GTM32_PRO_VB) - #include "stm32f1/pins_GTM32_PRO_VB.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple + #include "stm32f1/pins_GTM32_PRO_VB.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple #elif MB(GTM32_PRO_VD) - #include "stm32f1/pins_GTM32_PRO_VD.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple + #include "stm32f1/pins_GTM32_PRO_VD.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple #elif MB(GTM32_MINI) - #include "stm32f1/pins_GTM32_MINI.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple + #include "stm32f1/pins_GTM32_MINI.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple #elif MB(GTM32_MINI_A30) - #include "stm32f1/pins_GTM32_MINI_A30.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple + #include "stm32f1/pins_GTM32_MINI_A30.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple #elif MB(GTM32_REV_B) - #include "stm32f1/pins_GTM32_REV_B.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple + #include "stm32f1/pins_GTM32_REV_B.h" // STM32F1 env:STM32F103VE env:STM32F103VE_GTM32_maple #elif MB(MORPHEUS) - #include "stm32f1/pins_MORPHEUS.h" // STM32F1 env:STM32F103RE env:STM32F103RE_maple + #include "stm32f1/pins_MORPHEUS.h" // STM32F1 env:STM32F103RE env:STM32F103RE_maple #elif MB(CHITU3D) - #include "stm32f1/pins_CHITU3D.h" // STM32F1 env:STM32F103ZE env:STM32F103RE_maple + #include "stm32f1/pins_CHITU3D.h" // STM32F1 env:STM32F103ZE env:STM32F103RE_maple #elif MB(MKS_ROBIN) - #include "stm32f1/pins_MKS_ROBIN.h" // STM32F1 env:mks_robin env:mks_robin_maple + #include "stm32f1/pins_MKS_ROBIN.h" // STM32F1 env:mks_robin env:mks_robin_maple #elif MB(MKS_ROBIN_MINI) - #include "stm32f1/pins_MKS_ROBIN_MINI.h" // STM32F1 env:mks_robin_mini env:mks_robin_mini_maple + #include "stm32f1/pins_MKS_ROBIN_MINI.h" // STM32F1 env:mks_robin_mini env:mks_robin_mini_maple #elif MB(MKS_ROBIN_NANO) - #include "stm32f1/pins_MKS_ROBIN_NANO.h" // STM32F1 env:mks_robin_nano_v1v2 env:mks_robin_nano_v1v2_maple env:mks_robin_nano_v1v2_usbmod + #include "stm32f1/pins_MKS_ROBIN_NANO.h" // STM32F1 env:mks_robin_nano_v1v2 env:mks_robin_nano_v1v2_maple env:mks_robin_nano_v1v2_usbmod #elif MB(MKS_ROBIN_NANO_V2) - #include "stm32f1/pins_MKS_ROBIN_NANO_V2.h" // STM32F1 env:mks_robin_nano_v1v2 env:mks_robin_nano_v1v2_maple + #include "stm32f1/pins_MKS_ROBIN_NANO_V2.h" // STM32F1 env:mks_robin_nano_v1v2 env:mks_robin_nano_v1v2_maple #elif MB(MKS_ROBIN_LITE) - #include "stm32f1/pins_MKS_ROBIN_LITE.h" // STM32F1 env:mks_robin_lite env:mks_robin_lite_maple + #include "stm32f1/pins_MKS_ROBIN_LITE.h" // STM32F1 env:mks_robin_lite env:mks_robin_lite_maple #elif MB(MKS_ROBIN_LITE3) - #include "stm32f1/pins_MKS_ROBIN_LITE3.h" // STM32F1 env:mks_robin_lite3 env:mks_robin_lite3_maple + #include "stm32f1/pins_MKS_ROBIN_LITE3.h" // STM32F1 env:mks_robin_lite3 env:mks_robin_lite3_maple #elif MB(MKS_ROBIN_PRO) - #include "stm32f1/pins_MKS_ROBIN_PRO.h" // STM32F1 env:mks_robin_pro env:mks_robin_pro_maple + #include "stm32f1/pins_MKS_ROBIN_PRO.h" // STM32F1 env:mks_robin_pro env:mks_robin_pro_maple #elif MB(MKS_ROBIN_E3) - #include "stm32f1/pins_MKS_ROBIN_E3.h" // STM32F1 env:mks_robin_e3 env:mks_robin_e3_maple + #include "stm32f1/pins_MKS_ROBIN_E3.h" // STM32F1 env:mks_robin_e3 env:mks_robin_e3_maple #elif MB(MKS_ROBIN_E3_V1_1) - #include "stm32f1/pins_MKS_ROBIN_E3_V1_1.h" // STM32F1 env:mks_robin_e3 + #include "stm32f1/pins_MKS_ROBIN_E3_V1_1.h" // STM32F1 env:mks_robin_e3 #elif MB(MKS_ROBIN_E3D) - #include "stm32f1/pins_MKS_ROBIN_E3D.h" // STM32F1 env:mks_robin_e3 + #include "stm32f1/pins_MKS_ROBIN_E3D.h" // STM32F1 env:mks_robin_e3 #elif MB(MKS_ROBIN_E3D_V1_1) - #include "stm32f1/pins_MKS_ROBIN_E3D_V1_1.h" // STM32F1 env:mks_robin_e3 env:mks_robin_e3_maple + #include "stm32f1/pins_MKS_ROBIN_E3D_V1_1.h" // STM32F1 env:mks_robin_e3 env:mks_robin_e3_maple #elif MB(MKS_ROBIN_E3P) - #include "stm32f1/pins_MKS_ROBIN_E3P.h" // STM32F1 env:mks_robin_e3p env:mks_robin_e3p_maple -#elif MB(BTT_EBB42_V1_1) - #include "stm32g0/pins_BTT_EBB42_V1_1.h" // STM32G0 env:BTT_EBB42_V1_1_filament_extruder + #include "stm32f1/pins_MKS_ROBIN_E3P.h" // STM32F1 env:mks_robin_e3p env:mks_robin_e3p_maple #elif MB(BTT_SKR_MINI_V1_1) - #include "stm32f1/pins_BTT_SKR_MINI_V1_1.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple + #include "stm32f1/pins_BTT_SKR_MINI_V1_1.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple #elif MB(BTT_SKR_MINI_E3_V1_0) - #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple + #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple #elif MB(BTT_SKR_MINI_E3_V1_2) - #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple + #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple #elif MB(BTT_SKR_MINI_E3_V2_0) - #include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple -#elif MB(BTT_SKR_MINI_E3_V3_0) - #include "stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h" // STM32G0 env:STM32G0B1RE_btt env:STM32G0B1RE_btt_xfer -#elif MB(BTT_MANTA_M4P_V1_0) - #include "stm32g0/pins_BTT_MANTA_M4P_V1_0.h" // STM32G0 env:STM32G0B1RE_manta_btt env:STM32G0B1RE_manta_btt_xfer -#elif MB(BTT_MANTA_M5P_V1_0) - #include "stm32g0/pins_BTT_MANTA_M5P_V1_0.h" // STM32G0 env:STM32G0B1RE_manta_btt env:STM32G0B1RE_manta_btt_xfer -#elif MB(BTT_MANTA_E3_EZ_V1_0) - #include "stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h" // STM32G0 env:STM32G0B1RE_manta_btt env:STM32G0B1RE_manta_btt_xfer -#elif MB(BTT_MANTA_M8P_V1_0) - #include "stm32g0/pins_BTT_MANTA_M8P_V1_0.h" // STM32G0 env:STM32G0B1VE_btt env:STM32G0B1VE_btt_xfer -#elif MB(BTT_MANTA_M8P_V1_1) - #include "stm32g0/pins_BTT_MANTA_M8P_V1_1.h" // STM32G0 env:STM32G0B1VE_btt env:STM32G0B1VE_btt_xfer -#elif MB(BTT_SKR_MINI_E3_V3_0_1) - #include "stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h"// STM32F4 env:STM32F401RC_btt env:STM32F401RC_btt_xfer + #include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple #elif MB(BTT_SKR_MINI_MZ_V1_0) - #include "stm32f1/pins_BTT_SKR_MINI_MZ_V1_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple + #include "stm32f1/pins_BTT_SKR_MINI_MZ_V1_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple #elif MB(BTT_SKR_E3_DIP) - #include "stm32f1/pins_BTT_SKR_E3_DIP.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple + #include "stm32f1/pins_BTT_SKR_E3_DIP.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple #elif MB(BTT_SKR_CR6) - #include "stm32f1/pins_BTT_SKR_CR6.h" // STM32F1 env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple + #include "stm32f1/pins_BTT_SKR_CR6.h" // STM32F1 env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple #elif MB(JGAURORA_A5S_A1) - #include "stm32f1/pins_JGAURORA_A5S_A1.h" // STM32F1 env:jgaurora_a5s_a1 env:jgaurora_a5s_a1_maple + #include "stm32f1/pins_JGAURORA_A5S_A1.h" // STM32F1 env:jgaurora_a5s_a1 env:jgaurora_a5s_a1_maple #elif MB(FYSETC_AIO_II) - #include "stm32f1/pins_FYSETC_AIO_II.h" // STM32F1 env:STM32F103RC_fysetc env:STM32F103RC_fysetc_maple + #include "stm32f1/pins_FYSETC_AIO_II.h" // STM32F1 env:STM32F103RC_fysetc env:STM32F103RC_fysetc_maple #elif MB(FYSETC_CHEETAH) - #include "stm32f1/pins_FYSETC_CHEETAH.h" // STM32F1 env:STM32F103RC_fysetc env:STM32F103RC_fysetc_maple + #include "stm32f1/pins_FYSETC_CHEETAH.h" // STM32F1 env:STM32F103RC_fysetc env:STM32F103RC_fysetc_maple #elif MB(FYSETC_CHEETAH_V12) - #include "stm32f1/pins_FYSETC_CHEETAH_V12.h" // STM32F1 env:STM32F103RC_fysetc env:STM32F103RC_fysetc_maple + #include "stm32f1/pins_FYSETC_CHEETAH_V12.h" // STM32F1 env:STM32F103RC_fysetc env:STM32F103RC_fysetc_maple #elif MB(LONGER3D_LK) - #include "stm32f1/pins_LONGER3D_LK.h" // STM32F1 env:STM32F103VE_longer env:STM32F103VE_longer_maple + #include "stm32f1/pins_LONGER3D_LK.h" // STM32F1 env:STM32F103VE_longer env:STM32F103VE_longer_maple #elif MB(CCROBOT_MEEB_3DP) - #include "stm32f1/pins_CCROBOT_MEEB_3DP.h" // STM32F1 env:STM32F103RC_meeb_maple + #include "stm32f1/pins_CCROBOT_MEEB_3DP.h" // STM32F1 env:STM32F103RC_meeb_maple #elif MB(CHITU3D_V5) - #include "stm32f1/pins_CHITU3D_V5.h" // STM32F1 env:chitu_f103 env:chitu_f103_maple env:chitu_v5_gpio_init env:chitu_v5_gpio_init_maple + #include "stm32f1/pins_CHITU3D_V5.h" // STM32F1 env:chitu_f103 env:chitu_f103_maple env:chitu_v5_gpio_init env:chitu_v5_gpio_init_maple #elif MB(CHITU3D_V6) - #include "stm32f1/pins_CHITU3D_V6.h" // STM32F1 env:chitu_f103 env:chitu_f103_maple + #include "stm32f1/pins_CHITU3D_V6.h" // STM32F1 env:chitu_f103 env:chitu_f103_maple #elif MB(CHITU3D_V9) - #include "stm32f1/pins_CHITU3D_V9.h" // STM32F1 env:chitu_f103 env:chitu_f103_maple + #include "stm32f1/pins_CHITU3D_V9.h" // STM32F1 env:chitu_f103 env:chitu_f103_maple #elif MB(CREALITY_V4) - #include "stm32f1/pins_CREALITY_V4.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple + #include "stm32f1/pins_CREALITY_V4.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple #elif MB(CREALITY_V4210) - #include "stm32f1/pins_CREALITY_V4210.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple + #include "stm32f1/pins_CREALITY_V4210.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple #elif MB(CREALITY_V425) - #include "stm32f1/pins_CREALITY_V425.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple + #include "stm32f1/pins_CREALITY_V425.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple #elif MB(CREALITY_V422) - #include "stm32f1/pins_CREALITY_V422.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple + #include "stm32f1/pins_CREALITY_V422.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple #elif MB(CREALITY_V423) - #include "stm32f1/pins_CREALITY_V423.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer + #include "stm32f1/pins_CREALITY_V423.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer #elif MB(CREALITY_V427) - #include "stm32f1/pins_CREALITY_V427.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple + #include "stm32f1/pins_CREALITY_V427.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple #elif MB(CREALITY_V431, CREALITY_V431_A, CREALITY_V431_B, CREALITY_V431_C, CREALITY_V431_D) - #include "stm32f1/pins_CREALITY_V431.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple + #include "stm32f1/pins_CREALITY_V431.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple #elif MB(CREALITY_V452) - #include "stm32f1/pins_CREALITY_V452.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple + #include "stm32f1/pins_CREALITY_V452.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple #elif MB(CREALITY_V453) - #include "stm32f1/pins_CREALITY_V453.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple + #include "stm32f1/pins_CREALITY_V453.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple #elif MB(CREALITY_V24S1) - #include "stm32f1/pins_CREALITY_V24S1.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple + #include "stm32f1/pins_CREALITY_V24S1.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple #elif MB(CREALITY_V24S1_301) - #include "stm32f1/pins_CREALITY_V24S1_301.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple + #include "stm32f1/pins_CREALITY_V24S1_301.h" // STM32F1 env:STM32F103RE_creality env:STM32F103RE_creality_xfer env:STM32F103RC_creality env:STM32F103RC_creality_xfer env:STM32F103RE_creality_maple #elif MB(CREALITY_V25S1) - #include "stm32f1/pins_CREALITY_V25S1.h" // STM32F1 env:STM32F103RE_creality_smartPro env:STM32F103RE_creality_smartPro_maple + #include "stm32f1/pins_CREALITY_V25S1.h" // STM32F1 env:STM32F103RE_creality_smartPro env:STM32F103RE_creality_smartPro_maple #elif MB(CREALITY_V521) - #include "stm32f1/pins_CREALITY_V521.h" // STM32F1 env:STM32F103VE_creality + #include "stm32f1/pins_CREALITY_V521.h" // STM32F1 env:STM32F103VE_creality #elif MB(TRIGORILLA_PRO) - #include "stm32f1/pins_TRIGORILLA_PRO.h" // STM32F1 env:trigorilla_pro env:trigorilla_pro_maple env:trigorilla_pro_disk + #include "stm32f1/pins_TRIGORILLA_PRO.h" // STM32F1 env:trigorilla_pro env:trigorilla_pro_maple env:trigorilla_pro_disk #elif MB(FLY_MINI) - #include "stm32f1/pins_FLY_MINI.h" // STM32F1 env:FLY_MINI env:FLY_MINI_maple + #include "stm32f1/pins_FLY_MINI.h" // STM32F1 env:FLY_MINI env:FLY_MINI_maple #elif MB(FLSUN_HISPEED) - #include "stm32f1/pins_FLSUN_HISPEED.h" // STM32F1 env:flsun_hispeedv1 + #include "stm32f1/pins_FLSUN_HISPEED.h" // STM32F1 env:flsun_hispeedv1 #elif MB(BEAST) - #include "stm32f1/pins_BEAST.h" // STM32F1 env:STM32F103VE env:STM32F103RE_maple + #include "stm32f1/pins_BEAST.h" // STM32F1 env:STM32F103VE env:STM32F103RE_maple #elif MB(MINGDA_MPX_ARM_MINI) - #include "stm32f1/pins_MINGDA_MPX_ARM_MINI.h" // STM32F1 env:mingda_mpx_arm_mini + #include "stm32f1/pins_MINGDA_MPX_ARM_MINI.h" // STM32F1 env:mingda_mpx_arm_mini #elif MB(ZONESTAR_ZM3E2) - #include "stm32f1/pins_ZM3E2_V1_0.h" // STM32F1 env:STM32F103RC_ZM3E2_USB env:STM32F103RC_ZM3E2_USB_maple + #include "stm32f1/pins_ZM3E2_V1_0.h" // STM32F1 env:STM32F103RC_ZM3E2_USB env:STM32F103RC_ZM3E2_USB_maple #elif MB(ZONESTAR_ZM3E4) - #include "stm32f1/pins_ZM3E4_V1_0.h" // STM32F1 env:STM32F103VC_ZM3E4_USB env:STM32F103VC_ZM3E4_USB_maple + #include "stm32f1/pins_ZM3E4_V1_0.h" // STM32F1 env:STM32F103VC_ZM3E4_USB env:STM32F103VC_ZM3E4_USB_maple #elif MB(ZONESTAR_ZM3E4V2) - #include "stm32f1/pins_ZM3E4_V2_0.h" // STM32F1 env:STM32F103VE_ZM3E4V2_USB env:STM32F103VE_ZM3E4V2_USB_maple + #include "stm32f1/pins_ZM3E4_V2_0.h" // STM32F1 env:STM32F103VE_ZM3E4V2_USB env:STM32F103VE_ZM3E4V2_USB_maple #elif MB(ERYONE_ERY32_MINI) - #include "stm32f1/pins_ERYONE_ERY32_MINI.h" // STM32F1 env:ERYONE_ERY32_MINI_maple + #include "stm32f1/pins_ERYONE_ERY32_MINI.h" // STM32F1 env:ERYONE_ERY32_MINI_maple #elif MB(PANDA_PI_V29) - #include "stm32f1/pins_PANDA_PI_V29.h" // STM32F1 env:PANDA_PI_V29 + #include "stm32f1/pins_PANDA_PI_V29.h" // STM32F1 env:PANDA_PI_V29 #elif MB(SOVOL_V131) - #include "gd32f1/pins_SOVOL_V131.h" // GD32F1 env:GD32F103RET6_sovol_maple + #include "gd32f1/pins_SOVOL_V131.h" // GD32F1 env:GD32F103RET6_sovol_maple #elif MB(TRIGORILLA_V006) - #include "gd32f1/pins_TRIGORILLA_V006.h" // GD32F1 env:trigorilla_v006 + #include "gd32f1/pins_TRIGORILLA_V006.h" // GD32F1 env:trigorilla_v006 #elif MB(KEDI_CONTROLLER_V1_2) - #include "stm32f1/pins_KEDI_CONTROLLER_V1_2.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple + #include "stm32f1/pins_KEDI_CONTROLLER_V1_2.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple // // ARM Cortex-M4F // #elif MB(TEENSY31_32) - #include "teensy3/pins_TEENSY31_32.h" // TEENSY31_32 env:teensy31 + #include "teensy3/pins_TEENSY31_32.h" // TEENSY31_32 env:teensy31 #elif MB(TEENSY35_36) - #include "teensy3/pins_TEENSY35_36.h" // TEENSY35_36 env:teensy35 env:teensy36 + #include "teensy3/pins_TEENSY35_36.h" // TEENSY35_36 env:teensy35 env:teensy36 // // STM32 ARM Cortex-M4F // #elif MB(ARMED) - #include "stm32f4/pins_ARMED.h" // STM32F4 env:ARMED + #include "stm32f4/pins_ARMED.h" // STM32F4 env:ARMED #elif MB(RUMBA32_V1_0, RUMBA32_V1_1) - #include "stm32f4/pins_RUMBA32_AUS3D.h" // STM32F4 env:rumba32 + #include "stm32f4/pins_RUMBA32_AUS3D.h" // STM32F4 env:rumba32 #elif MB(RUMBA32_MKS) - #include "stm32f4/pins_RUMBA32_MKS.h" // STM32F4 env:rumba32 + #include "stm32f4/pins_RUMBA32_MKS.h" // STM32F4 env:rumba32 #elif MB(RUMBA32_BTT) - #include "stm32f4/pins_RUMBA32_BTT.h" // STM32F4 env:rumba32 + #include "stm32f4/pins_RUMBA32_BTT.h" // STM32F4 env:rumba32 #elif MB(BLACK_STM32F407VE) - #include "stm32f4/pins_BLACK_STM32F407VE.h" // STM32F4 env:STM32F407VE_black + #include "stm32f4/pins_BLACK_STM32F407VE.h" // STM32F4 env:STM32F407VE_black #elif MB(BTT_SKR_PRO_V1_1) - #include "stm32f4/pins_BTT_SKR_PRO_V1_1.h" // STM32F4 env:BIGTREE_SKR_PRO env:BIGTREE_SKR_PRO_usb_flash_drive + #include "stm32f4/pins_BTT_SKR_PRO_V1_1.h" // STM32F4 env:BIGTREE_SKR_PRO env:BIGTREE_SKR_PRO_usb_flash_drive #elif MB(BTT_SKR_PRO_V1_2) - #include "stm32f4/pins_BTT_SKR_PRO_V1_2.h" // STM32F4 env:BIGTREE_SKR_PRO env:BIGTREE_SKR_PRO_usb_flash_drive + #include "stm32f4/pins_BTT_SKR_PRO_V1_2.h" // STM32F4 env:BIGTREE_SKR_PRO env:BIGTREE_SKR_PRO_usb_flash_drive #elif MB(BTT_GTR_V1_0) - #include "stm32f4/pins_BTT_GTR_V1_0.h" // STM32F4 env:BIGTREE_GTR_V1_0 env:BIGTREE_GTR_V1_0_usb_flash_drive + #include "stm32f4/pins_BTT_GTR_V1_0.h" // STM32F4 env:BIGTREE_GTR_V1_0 env:BIGTREE_GTR_V1_0_usb_flash_drive #elif MB(BTT_BTT002_V1_0) - #include "stm32f4/pins_BTT_BTT002_V1_0.h" // STM32F4 env:BIGTREE_BTT002 env:BIGTREE_BTT002_VET6 + #include "stm32f4/pins_BTT_BTT002_V1_0.h" // STM32F4 env:BIGTREE_BTT002 env:BIGTREE_BTT002_VET6 #elif MB(BTT_E3_RRF) - #include "stm32f4/pins_BTT_E3_RRF.h" // STM32F4 env:BIGTREE_E3_RRF + #include "stm32f4/pins_BTT_E3_RRF.h" // STM32F4 env:BIGTREE_E3_RRF +#elif MB(BTT_SKR_MINI_E3_V3_0_1) + #include "stm32f4/pins_BTT_SKR_MINI_E3_V3_0_1.h" // STM32F4 env:STM32F401RC_btt env:STM32F401RC_btt_xfer #elif MB(BTT_SKR_V2_0_REV_A) - #include "stm32f4/pins_BTT_SKR_V2_0_REV_A.h" // STM32F4 env:BIGTREE_SKR_2 env:BIGTREE_SKR_2_USB env:BIGTREE_SKR_2_USB_debug + #include "stm32f4/pins_BTT_SKR_V2_0_REV_A.h" // STM32F4 env:BIGTREE_SKR_2 env:BIGTREE_SKR_2_USB env:BIGTREE_SKR_2_USB_debug #elif MB(BTT_SKR_V2_0_REV_B) - #include "stm32f4/pins_BTT_SKR_V2_0_REV_B.h" // STM32F4 env:BIGTREE_SKR_2 env:BIGTREE_SKR_2_USB env:BIGTREE_SKR_2_USB_debug env:BIGTREE_SKR_2_F429 env:BIGTREE_SKR_2_F429_USB env:BIGTREE_SKR_2_F429_USB_debug + #include "stm32f4/pins_BTT_SKR_V2_0_REV_B.h" // STM32F4 env:BIGTREE_SKR_2 env:BIGTREE_SKR_2_USB env:BIGTREE_SKR_2_USB_debug env:BIGTREE_SKR_2_F429 env:BIGTREE_SKR_2_F429_USB env:BIGTREE_SKR_2_F429_USB_debug #elif MB(BTT_OCTOPUS_V1_0) - #include "stm32f4/pins_BTT_OCTOPUS_V1_0.h" // STM32F4 env:STM32F446ZE_btt env:STM32F446ZE_btt_USB + #include "stm32f4/pins_BTT_OCTOPUS_V1_0.h" // STM32F4 env:STM32F446ZE_btt env:STM32F446ZE_btt_USB #elif MB(BTT_OCTOPUS_V1_1) - #include "stm32f4/pins_BTT_OCTOPUS_V1_1.h" // STM32F4 env:STM32F446ZE_btt env:STM32F446ZE_btt_USB env:STM32F429ZG_btt env:STM32F429ZG_btt_USB env:STM32F407ZE_btt env:STM32F407ZE_btt_USB + #include "stm32f4/pins_BTT_OCTOPUS_V1_1.h" // STM32F4 env:STM32F446ZE_btt env:STM32F446ZE_btt_USB env:STM32F429ZG_btt env:STM32F429ZG_btt_USB env:STM32F407ZE_btt env:STM32F407ZE_btt_USB #elif MB(BTT_OCTOPUS_PRO_V1_0) - #include "stm32f4/pins_BTT_OCTOPUS_PRO_V1_0.h" // STM32F4 env:STM32F446ZE_btt env:STM32F446ZE_btt_USB env:STM32F429ZG_btt env:STM32F429ZG_btt_USB env:STM32H723ZE_btt + #include "stm32f4/pins_BTT_OCTOPUS_PRO_V1_0.h" // STM32F4 env:STM32F446ZE_btt env:STM32F446ZE_btt_USB env:STM32F429ZG_btt env:STM32F429ZG_btt_USB env:STM32H723ZE_btt #elif MB(LERDGE_K) - #include "stm32f4/pins_LERDGE_K.h" // STM32F4 env:LERDGEK env:LERDGEK_usb_flash_drive + #include "stm32f4/pins_LERDGE_K.h" // STM32F4 env:LERDGEK env:LERDGEK_usb_flash_drive #elif MB(LERDGE_S) - #include "stm32f4/pins_LERDGE_S.h" // STM32F4 env:LERDGES env:LERDGES_usb_flash_drive + #include "stm32f4/pins_LERDGE_S.h" // STM32F4 env:LERDGES env:LERDGES_usb_flash_drive #elif MB(LERDGE_X) - #include "stm32f4/pins_LERDGE_X.h" // STM32F4 env:LERDGEX env:LERDGEX_usb_flash_drive + #include "stm32f4/pins_LERDGE_X.h" // STM32F4 env:LERDGEX env:LERDGEX_usb_flash_drive #elif MB(FYSETC_S6) - #include "stm32f4/pins_FYSETC_S6.h" // STM32F4 env:FYSETC_S6 env:FYSETC_S6_8000 + #include "stm32f4/pins_FYSETC_S6.h" // STM32F4 env:FYSETC_S6 env:FYSETC_S6_8000 #elif MB(FYSETC_S6_V2_0) - #include "stm32f4/pins_FYSETC_S6_V2_0.h" // STM32F4 env:FYSETC_S6 env:FYSETC_S6_8000 + #include "stm32f4/pins_FYSETC_S6_V2_0.h" // STM32F4 env:FYSETC_S6 env:FYSETC_S6_8000 #elif MB(FYSETC_SPIDER) - #include "stm32f4/pins_FYSETC_SPIDER.h" // STM32F4 env:FYSETC_S6 env:FYSETC_S6_8000 + #include "stm32f4/pins_FYSETC_SPIDER.h" // STM32F4 env:FYSETC_S6 env:FYSETC_S6_8000 #elif MB(FYSETC_SPIDER_V2_2) - #include "stm32f4/pins_FYSETC_SPIDER_V2_2.h" // STM32F4 env:FYSETC_S6 env:FYSETC_S6_8000 + #include "stm32f4/pins_FYSETC_SPIDER_V2_2.h" // STM32F4 env:FYSETC_S6 env:FYSETC_S6_8000 #elif MB(FLYF407ZG) - #include "stm32f4/pins_FLYF407ZG.h" // STM32F4 env:FLYF407ZG + #include "stm32f4/pins_FLYF407ZG.h" // STM32F4 env:FLYF407ZG #elif MB(MKS_ROBIN2) - #include "stm32f4/pins_MKS_ROBIN2.h" // STM32F4 env:mks_robin2 + #include "stm32f4/pins_MKS_ROBIN2.h" // STM32F4 env:mks_robin2 #elif MB(MKS_ROBIN_PRO_V2) - #include "stm32f4/pins_MKS_ROBIN_PRO_V2.h" // STM32F4 env:mks_robin_pro2 + #include "stm32f4/pins_MKS_ROBIN_PRO_V2.h" // STM32F4 env:mks_robin_pro2 #elif MB(MKS_ROBIN_NANO_V3) - #include "stm32f4/pins_MKS_ROBIN_NANO_V3.h" // STM32F4 env:mks_robin_nano_v3 env:mks_robin_nano_v3_usb_flash_drive env:mks_robin_nano_v3_usb_flash_drive_msc + #include "stm32f4/pins_MKS_ROBIN_NANO_V3.h" // STM32F4 env:mks_robin_nano_v3 env:mks_robin_nano_v3_usb_flash_drive env:mks_robin_nano_v3_usb_flash_drive_msc #elif MB(MKS_ROBIN_NANO_V3_1) - #include "stm32f4/pins_MKS_ROBIN_NANO_V3.h" // STM32F4 env:mks_robin_nano_v3_1 env:mks_robin_nano_v3_1_usb_flash_drive env:mks_robin_nano_v3_1_usb_flash_drive_msc + #include "stm32f4/pins_MKS_ROBIN_NANO_V3.h" // STM32F4 env:mks_robin_nano_v3_1 env:mks_robin_nano_v3_1_usb_flash_drive env:mks_robin_nano_v3_1_usb_flash_drive_msc #elif MB(ANET_ET4) - #include "stm32f4/pins_ANET_ET4.h" // STM32F4 env:Anet_ET4_no_bootloader env:Anet_ET4_OpenBLT + #include "stm32f4/pins_ANET_ET4.h" // STM32F4 env:Anet_ET4_no_bootloader env:Anet_ET4_OpenBLT #elif MB(ANET_ET4P) - #include "stm32f4/pins_ANET_ET4P.h" // STM32F4 env:Anet_ET4_no_bootloader env:Anet_ET4_OpenBLT + #include "stm32f4/pins_ANET_ET4P.h" // STM32F4 env:Anet_ET4_no_bootloader env:Anet_ET4_OpenBLT #elif MB(FYSETC_CHEETAH_V20) - #include "stm32f4/pins_FYSETC_CHEETAH_V20.h" // STM32F4 env:FYSETC_CHEETAH_V20 + #include "stm32f4/pins_FYSETC_CHEETAH_V20.h" // STM32F4 env:FYSETC_CHEETAH_V20 #elif MB(MKS_MONSTER8_V1) - #include "stm32f4/pins_MKS_MONSTER8_V1.h" // STM32F4 env:mks_monster8 env:mks_monster8_usb_flash_drive env:mks_monster8_usb_flash_drive_msc + #include "stm32f4/pins_MKS_MONSTER8_V1.h" // STM32F4 env:mks_monster8 env:mks_monster8_usb_flash_drive env:mks_monster8_usb_flash_drive_msc #elif MB(MKS_MONSTER8_V2) - #include "stm32f4/pins_MKS_MONSTER8_V2.h" // STM32F4 env:mks_monster8 env:mks_monster8_usb_flash_drive env:mks_monster8_usb_flash_drive_msc + #include "stm32f4/pins_MKS_MONSTER8_V2.h" // STM32F4 env:mks_monster8 env:mks_monster8_usb_flash_drive env:mks_monster8_usb_flash_drive_msc #elif MB(TH3D_EZBOARD_V2) - #include "stm32f4/pins_TH3D_EZBOARD_V2.h" // STM32F4 env:TH3D_EZBoard_V2_no_bootloader env:TH3D_EZBoard_V2_OpenBLT + #include "stm32f4/pins_TH3D_EZBOARD_V2.h" // STM32F4 env:TH3D_EZBoard_V2_no_bootloader env:TH3D_EZBoard_V2_OpenBLT #elif MB(OPULO_LUMEN_REV3) - #include "stm32f4/pins_OPULO_LUMEN_REV3.h" // STM32F4 env:Opulo_Lumen_REV3 + #include "stm32f4/pins_OPULO_LUMEN_REV3.h" // STM32F4 env:Opulo_Lumen_REV3 #elif MB(MKS_ROBIN_NANO_V1_3_F4) - #include "stm32f4/pins_MKS_ROBIN_NANO_V1_3_F4.h" // STM32F4 env:mks_robin_nano_v1_3_f4 env:mks_robin_nano_v1_3_f4_usbmod + #include "stm32f4/pins_MKS_ROBIN_NANO_V1_3_F4.h" // STM32F4 env:mks_robin_nano_v1_3_f4 env:mks_robin_nano_v1_3_f4_usbmod #elif MB(MKS_EAGLE) - #include "stm32f4/pins_MKS_EAGLE.h" // STM32F4 env:mks_eagle + #include "stm32f4/pins_MKS_EAGLE.h" // STM32F4 env:mks_eagle #elif MB(ARTILLERY_RUBY) - #include "stm32f4/pins_ARTILLERY_RUBY.h" // STM32F4 env:Artillery_Ruby + #include "stm32f4/pins_ARTILLERY_RUBY.h" // STM32F4 env:Artillery_Ruby #elif MB(CREALITY_V24S1_301F4) - #include "stm32f4/pins_CREALITY_V24S1_301F4.h" // STM32F4 env:STM32F401RC_creality env:STM32F401RC_creality_jlink env:STM32F401RC_creality_stlink + #include "stm32f4/pins_CREALITY_V24S1_301F4.h" // STM32F4 env:STM32F401RC_creality env:STM32F401RC_creality_jlink env:STM32F401RC_creality_stlink #elif MB(OPULO_LUMEN_REV4) - #include "stm32f4/pins_OPULO_LUMEN_REV4.h" // STM32F4 env:Opulo_Lumen_REV4 + #include "stm32f4/pins_OPULO_LUMEN_REV4.h" // STM32F4 env:Opulo_Lumen_REV4 #elif MB(FYSETC_SPIDER_KING407) - #include "stm32f4/pins_FYSETC_SPIDER_KING407.h" // STM32F4 env:FYSETC_SPIDER_KING407 + #include "stm32f4/pins_FYSETC_SPIDER_KING407.h" // STM32F4 env:FYSETC_SPIDER_KING407 #elif MB(MKS_SKIPR_V1) - #include "stm32f4/pins_MKS_SKIPR_V1_0.h" // STM32F4 env:mks_skipr_v1 env:mks_skipr_v1_nobootloader + #include "stm32f4/pins_MKS_SKIPR_V1_0.h" // STM32F4 env:mks_skipr_v1 env:mks_skipr_v1_nobootloader #elif MB(TRONXY_V10) - #include "stm32f4/pins_TRONXY_V10.h" // STM32F4 env:STM32F446_tronxy + #include "stm32f4/pins_TRONXY_V10.h" // STM32F4 env:STM32F446_tronxy #elif MB(CREALITY_F401RE) - #include "stm32f4/pins_CREALITY_F401.h" // STM32F4 env:STM32F401RE_creality + #include "stm32f4/pins_CREALITY_F401.h" // STM32F4 env:STM32F401RE_creality #elif MB(BLACKPILL_CUSTOM) - #include "stm32f4/pins_BLACKPILL_CUSTOM.h" // STM32F4 env:STM32F401CD_blackpill_stlink + #include "stm32f4/pins_BLACKPILL_CUSTOM.h" // STM32F4 env:STM32F401CD_blackpill_stlink #elif MB(I3DBEEZ9_V1) - #include "stm32f4/pins_I3DBEEZ9.h" // STM32F4 env:I3DBEEZ9_V1 + #include "stm32f4/pins_I3DBEEZ9.h" // STM32F4 env:I3DBEEZ9_V1 // -// ARM Cortex M7 +// ARM Cortex-M7 // #elif MB(REMRAM_V1) - #include "stm32f7/pins_REMRAM_V1.h" // STM32F7 env:REMRAM_V1 + #include "stm32f7/pins_REMRAM_V1.h" // STM32F7 env:REMRAM_V1 #elif MB(NUCLEO_F767ZI) - #include "stm32f7/pins_NUCLEO_F767ZI.h" // STM32F7 env:NUCLEO_F767ZI + #include "stm32f7/pins_NUCLEO_F767ZI.h" // STM32F7 env:NUCLEO_F767ZI #elif MB(BTT_SKR_SE_BX_V2) - #include "stm32h7/pins_BTT_SKR_SE_BX_V2.h" // STM32H7 env:BTT_SKR_SE_BX + #include "stm32h7/pins_BTT_SKR_SE_BX_V2.h" // STM32H7 env:BTT_SKR_SE_BX #elif MB(BTT_SKR_SE_BX_V3) - #include "stm32h7/pins_BTT_SKR_SE_BX_V3.h" // STM32H7 env:BTT_SKR_SE_BX + #include "stm32h7/pins_BTT_SKR_SE_BX_V3.h" // STM32H7 env:BTT_SKR_SE_BX #elif MB(BTT_SKR_V3_0) - #include "stm32h7/pins_BTT_SKR_V3_0.h" // STM32H7 env:STM32H743VI_btt env:STM32H723VG_btt + #include "stm32h7/pins_BTT_SKR_V3_0.h" // STM32H7 env:STM32H743VI_btt env:STM32H723VG_btt #elif MB(BTT_SKR_V3_0_EZ) - #include "stm32h7/pins_BTT_SKR_V3_0_EZ.h" // STM32H7 env:STM32H743VI_btt env:STM32H723VG_btt + #include "stm32h7/pins_BTT_SKR_V3_0_EZ.h" // STM32H7 env:STM32H743VI_btt env:STM32H723VG_btt #elif MB(BTT_OCTOPUS_MAX_EZ_V1_0) - #include "stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h" // STM32H7 env:STM32H723ZE_btt + #include "stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h" // STM32H7 env:STM32H723ZE_btt #elif MB(TEENSY41) - #include "teensy4/pins_TEENSY41.h" // Teensy-4.x env:teensy41 + #include "teensy4/pins_TEENSY41.h" // Teensy-4.x env:teensy41 #elif MB(T41U5XBB) - #include "teensy4/pins_T41U5XBB.h" // Teensy-4.x env:teensy41 + #include "teensy4/pins_T41U5XBB.h" // Teensy-4.x env:teensy41 // // Espressif ESP32 // #elif MB(ESPRESSIF_ESP32) - #include "esp32/pins_ESP32.h" // ESP32 env:esp32 + #include "esp32/pins_ESP32.h" // ESP32 env:esp32 #elif MB(MRR_ESPA) - #include "esp32/pins_MRR_ESPA.h" // ESP32 env:esp32 + #include "esp32/pins_MRR_ESPA.h" // ESP32 env:esp32 #elif MB(MRR_ESPE) - #include "esp32/pins_MRR_ESPE.h" // ESP32 env:esp32 + #include "esp32/pins_MRR_ESPE.h" // ESP32 env:esp32 #elif MB(E4D_BOX) - #include "esp32/pins_E4D.h" // ESP32 env:esp32 + #include "esp32/pins_E4D.h" // ESP32 env:esp32 #elif MB(RESP32_CUSTOM) - #include "esp32/pins_RESP32_CUSTOM.h" // ESP32 env:esp32 + #include "esp32/pins_RESP32_CUSTOM.h" // ESP32 env:esp32 #elif MB(FYSETC_E4) - #include "esp32/pins_FYSETC_E4.h" // ESP32 env:FYSETC_E4 + #include "esp32/pins_FYSETC_E4.h" // ESP32 env:FYSETC_E4 #elif MB(PANDA_ZHU) - #include "esp32/pins_PANDA_ZHU.h" // ESP32 env:PANDA + #include "esp32/pins_PANDA_ZHU.h" // ESP32 env:PANDA #elif MB(PANDA_M4) - #include "esp32/pins_PANDA_M4.h" // ESP32 env:PANDA + #include "esp32/pins_PANDA_M4.h" // ESP32 env:PANDA #elif MB(MKS_TINYBEE) - #include "esp32/pins_MKS_TINYBEE.h" // ESP32 env:mks_tinybee + #include "esp32/pins_MKS_TINYBEE.h" // ESP32 env:mks_tinybee #elif MB(ENWI_ESPNP) - #include "esp32/pins_ENWI_ESPNP.h" // ESP32 env:esp32 + #include "esp32/pins_ENWI_ESPNP.h" // ESP32 env:esp32 #elif MB(GODI_CONTROLLER_V1_0) - #include "esp32/pins_GODI_CONTROLLER_V1_0.h" // ESP32 env:godi_esp32 + #include "esp32/pins_GODI_CONTROLLER_V1_0.h" // ESP32 env:godi_esp32 // // Adafruit Grand Central M4 (SAMD51 ARM Cortex-M4) // #elif MB(AGCM4_RAMPS_144) - #include "samd/pins_RAMPS_144.h" // SAMD51 env:SAMD51_grandcentral_m4 + #include "samd/pins_RAMPS_144.h" // SAMD51 env:SAMD51_grandcentral_m4 #elif MB(BRICOLEMON_V1_0) - #include "samd/pins_BRICOLEMON_V1_0.h" // SAMD51 env:SAMD51_grandcentral_m4 + #include "samd/pins_BRICOLEMON_V1_0.h" // SAMD51 env:SAMD51_grandcentral_m4 #elif MB(BRICOLEMON_LITE_V1_0) - #include "samd/pins_BRICOLEMON_LITE_V1_0.h" // SAMD51 env:SAMD51_grandcentral_m4 + #include "samd/pins_BRICOLEMON_LITE_V1_0.h" // SAMD51 env:SAMD51_grandcentral_m4 // // ReprapWorld Minitronics (SAMD21) // #elif MB(MINITRONICS20) - #include "samd/pins_MINITRONICS20.h" // SAMD21 env:SAMD21_minitronics20 + #include "samd/pins_MINITRONICS20.h" // SAMD21 env:SAMD21_minitronics20 // // Custom board (with custom PIO env) // #elif MB(CUSTOM) - #include "pins_custom.h" // env:custom + #include "pins_custom.h" // env:custom // // Linux Native Debug board // #elif MB(SIMULATED) - #include "linux/pins_RAMPS_LINUX.h" // Native or Simulation lin:linux_native mac:simulator_macos_debug mac:simulator_macos_release win:simulator_windows lin:simulator_linux_debug lin:simulator_linux_release + #include "linux/pins_RAMPS_LINUX.h" // Native or Simulation lin:linux_native mac:simulator_macos_debug mac:simulator_macos_release win:simulator_windows lin:simulator_linux_debug lin:simulator_linux_release #else From 9728d79ade1c3d72bba368f5c072a8fe402c2048 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Wed, 14 Jun 2023 17:43:24 -0700 Subject: [PATCH 552/659] =?UTF-8?q?=F0=9F=93=9D=20Document=20Manta=20E3=20?= =?UTF-8?q?EZ=20/=20E3V2=20LCD=20custom=20wiring=20(#25976)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h index 156698f424..fdcdd36ae8 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h @@ -238,21 +238,36 @@ #define EXP1_10_PIN -1 #if HAS_DWIN_E3V2 || IS_DWIN_MARLINUI + /** + * ------ ------ --- + * (PC1) BEEP | 1 2 | | 1 2 | | 1 | (5V) + * | 3 4 | RX | 3 4 | TX | 2 | (GND) + * (PC0) ENT 5 6 | ENT 5 6 | BEEP | 3 | RX (PD8) + * (PA2) B | 7 8 | A (PA1) B | 7 8 | A | 4 | TX (PD9) + * GND | 9 10 | 5V GND | 9 10 | VCC | 5 | (RST) + * ------ ------ --- + * EXP1 DWIN TFT + * + * DWIN pins are labeled as printed on DWIN PCB. GND, VCC, A, B, ENT & BEEP can be connected in the same orientation as the + * existing plug/DWIN to EXP1. DWIN TX/RX need to be connected to the Manta E3 EZ's TFT port, with DWIN TX->PD9, DWIN RX->PD8. + * + * Needs custom cable: + * + * Board Adapter Display + * ------------------------------------------ + * (EXP1-1) PC1 <-----------> BEEP (DWIN-6) + * (EXP1-5) PC0 <-----------> ENT (DWIN-5) + * (TFT-4) PD9 <-----------> RX (DWIN-3) + * (TFT-3) PD8 <-----------> TX (DWIN-4) + * (EXP1-7) PA2 <-----------> B (DWIN-7) + * (EXP1-9) GND <-----------> GND (DWIN-9) + * (EXP1-8) PA1 <-----------> A (DWIN-8) + * (EXP1-10) 5V <-----------> VCC (DWIN-10) + */ #ifndef NO_CONTROLLER_CUSTOM_WIRING_WARNING #error "CAUTION! Ender-3 V2 display requires a custom cable with TX = PA0, RX = PC2. See 'pins_BTT_MANTA_E3_EZ_V1_0.h' for details. (Define NO_CONTROLLER_CUSTOM_WIRING_WARNING to suppress this warning.)" #endif - /** - * Ender-3 V2 display Manta E3 EZ V1.0 Ender-3 V2 display --> Manta E3 EZ V1.0 - * ------ ------ RX 3 --> 5 P0_15 - * -- | 1 2 | -- (BEEPER) PC1 | 1 2 | PC2 (BTN_ENC) TX 4 --> 9 P0_16 - * (MANTA TX1) RX | 3 4 | TX (MANTA RX1) (BTN_EN1) PC3 | 3 4 | RESET BEEPER 6 --> 10 P2_08 - * (BTN_ENC) ENT 5 6 | BEEPER (BTN_EN2) PC0 5 6 | PA0 (LCD_D4) - * (BTN_E2) B | 7 8 | A (BTN_E1) (LCD_RS) PA2 | 7 8 | PA1 (LCD_EN) - * GND | 9 10 | 5V GND | 9 10 | 5V - * ------ ------ - */ - #define BEEPER_PIN EXP1_01_PIN #define BTN_EN1 EXP1_08_PIN #define BTN_EN2 EXP1_07_PIN @@ -310,7 +325,6 @@ // // SD Support // - #ifndef SDCARD_CONNECTION #define SDCARD_CONNECTION ONBOARD #endif From 8261af3010efce783dc2063d7fa75e17be89e88a Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Thu, 15 Jun 2023 12:57:15 +1200 Subject: [PATCH 553/659] =?UTF-8?q?=E2=9C=A8=20BTT=20RAMPS=201.6+=20(#2597?= =?UTF-8?q?0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/boards.h | 6 +++ Marlin/src/pins/pins.h | 14 +++--- .../src/pins/ramps/pins_RAMPS_BTT_16_PLUS.h | 49 +++++++++++++++++++ 3 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 Marlin/src/pins/ramps/pins_RAMPS_BTT_16_PLUS.h diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index 5cde344b4d..12e72517a3 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -54,6 +54,12 @@ #define BOARD_RAMPS_PLUS_EEF 1033 // RAMPS Plus 3DYMY (Power outputs: Hotend0, Hotend1, Fan) #define BOARD_RAMPS_PLUS_SF 1034 // RAMPS Plus 3DYMY (Power outputs: Spindle, Controller Fan) +#define BOARD_RAMPS_BTT_16_PLUS_EFB 1035 // RAMPS 1.6+ (Power outputs: Hotend, Fan, Bed) +#define BOARD_RAMPS_BTT_16_PLUS_EEB 1036 // RAMPS 1.6+ (Power outputs: Hotend0, Hotend1, Bed) +#define BOARD_RAMPS_BTT_16_PLUS_EFF 1037 // RAMPS 1.6+ (Power outputs: Hotend, Fan0, Fan1) +#define BOARD_RAMPS_BTT_16_PLUS_EEF 1038 // RAMPS 1.6+ (Power outputs: Hotend0, Hotend1, Fan) +#define BOARD_RAMPS_BTT_16_PLUS_SF 1039 // RAMPS 1.6+ (Power outputs: Spindle, Controller Fan) + // // RAMPS Derivatives - ATmega1280, ATmega2560 // diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 9a3b3c3c22..7e235ca80a 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -38,15 +38,15 @@ #define MAX_E_STEPPERS 8 #if NONE(FET_ORDER_EEF, FET_ORDER_EEB, FET_ORDER_EFF, FET_ORDER_EFB, FET_ORDER_SF) - #if MB(RAMPS_13_EFB, RAMPS_14_EFB, RAMPS_PLUS_EFB, RAMPS_14_RE_ARM_EFB, RAMPS_SMART_EFB, RAMPS_DUO_EFB, RAMPS4DUE_EFB) + #if MB(RAMPS_13_EFB, RAMPS_14_EFB, RAMPS_PLUS_EFB, RAMPS_14_RE_ARM_EFB, RAMPS_SMART_EFB, RAMPS_DUO_EFB, RAMPS4DUE_EFB, RAMPS_BTT_16_PLUS_EFB) #define FET_ORDER_EFB 1 - #elif MB(RAMPS_13_EEB, RAMPS_14_EEB, RAMPS_PLUS_EEB, RAMPS_14_RE_ARM_EEB, RAMPS_SMART_EEB, RAMPS_DUO_EEB, RAMPS4DUE_EEB) + #elif MB(RAMPS_13_EEB, RAMPS_14_EEB, RAMPS_PLUS_EEB, RAMPS_14_RE_ARM_EEB, RAMPS_SMART_EEB, RAMPS_DUO_EEB, RAMPS4DUE_EEB, RAMPS_BTT_16_PLUS_EEB) #define FET_ORDER_EEB 1 - #elif MB(RAMPS_13_EFF, RAMPS_14_EFF, RAMPS_PLUS_EFF, RAMPS_14_RE_ARM_EFF, RAMPS_SMART_EFF, RAMPS_DUO_EFF, RAMPS4DUE_EFF) + #elif MB(RAMPS_13_EFF, RAMPS_14_EFF, RAMPS_PLUS_EFF, RAMPS_14_RE_ARM_EFF, RAMPS_SMART_EFF, RAMPS_DUO_EFF, RAMPS4DUE_EFF, RAMPS_BTT_16_PLUS_EFF) #define FET_ORDER_EFF 1 - #elif MB(RAMPS_13_EEF, RAMPS_14_EEF, RAMPS_PLUS_EEF, RAMPS_14_RE_ARM_EEF, RAMPS_SMART_EEF, RAMPS_DUO_EEF, RAMPS4DUE_EEF) + #elif MB(RAMPS_13_EEF, RAMPS_14_EEF, RAMPS_PLUS_EEF, RAMPS_14_RE_ARM_EEF, RAMPS_SMART_EEF, RAMPS_DUO_EEF, RAMPS4DUE_EEF, RAMPS_BTT_16_PLUS_EEF) #define FET_ORDER_EEF 1 - #elif MB(RAMPS_13_SF, RAMPS_14_SF, RAMPS_PLUS_SF, RAMPS_14_RE_ARM_SF, RAMPS_SMART_SF, RAMPS_DUO_SF, RAMPS4DUE_SF) + #elif MB(RAMPS_13_SF, RAMPS_14_SF, RAMPS_PLUS_SF, RAMPS_14_RE_ARM_SF, RAMPS_SMART_SF, RAMPS_DUO_SF, RAMPS4DUE_SF, RAMPS_BTT_16_PLUS_SF) #define FET_ORDER_SF 1 #elif HAS_MULTI_HOTEND || (HAS_EXTRUDERS && HAS_CUTTER) #if TEMP_SENSOR_BED @@ -124,7 +124,7 @@ #endif // -// RAMPS 1.3 / 1.4 - ATmega1280, ATmega2560 +// RAMPS 1.3 / 1.4 / 1.6+ - ATmega1280, ATmega2560 // #if MB(RAMPS_OLD) @@ -135,6 +135,8 @@ #include "ramps/pins_RAMPS.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 #elif MB(RAMPS_PLUS_EFB, RAMPS_PLUS_EEB, RAMPS_PLUS_EFF, RAMPS_PLUS_EEF, RAMPS_PLUS_SF) #include "ramps/pins_RAMPS_PLUS.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 +#elif MB(RAMPS_BTT_16_PLUS_EFB, RAMPS_BTT_16_PLUS_EEB, RAMPS_BTT_16_PLUS_EFF, RAMPS_BTT_16_PLUS_EEF, RAMPS_BTT_16_PLUS_SF) + #include "ramps/pins_RAMPS_BTT_16_PLUS.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280 // // RAMPS Derivatives - ATmega1280, ATmega2560 diff --git a/Marlin/src/pins/ramps/pins_RAMPS_BTT_16_PLUS.h b/Marlin/src/pins/ramps/pins_RAMPS_BTT_16_PLUS.h new file mode 100644 index 0000000000..803a1de30b --- /dev/null +++ b/Marlin/src/pins/ramps/pins_RAMPS_BTT_16_PLUS.h @@ -0,0 +1,49 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * Arduino Mega with RAMPS BTT v1.6+ + * Schematic: https://github.com/bigtreetech/ramps-1.6/blob/master/Ramps1.6/hardware/R6%2B-SCH.pdf + * + * Differences from RAMPS v1.4: + * - SPI Stepper drivers use AVR hardware SPI pins + * - SPI Stepper CS pins are different + */ + +#include "env_validate.h" + +#define BOARD_INFO_NAME "RAMPS BTT 1.6+" + +#if HAS_TMC_SPI && DISABLED(TMC_USE_SW_SPI) + #define TMC_SPI_MOSI MOSI // 51 + #define TMC_SPI_MISO MISO // 50 + #define TMC_SPI_SCK SCK // 52 +#endif + +#define X_CS_PIN 63 // A0 +#define Y_CS_PIN 40 +#define Z_CS_PIN 42 +#define E0_CS_PIN 65 // A11 +#define E1_CS_PIN 66 // A12 + +#include "pins_RAMPS.h" From eca80db9b6846a05313df81c583828809684478f Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 16 Jun 2023 00:24:24 +0000 Subject: [PATCH 554/659] [cron] Bump distribution date (2023-06-16) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 29bd03701d..962a745208 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-15" +//#define STRING_DISTRIBUTION_DATE "2023-06-16" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 67d5d5806f..3300716c83 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-15" + #define STRING_DISTRIBUTION_DATE "2023-06-16" #endif /** From 41a5fbb16ad985220f1cee1b823950c3bb771186 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 16 Jun 2023 18:12:01 -0500 Subject: [PATCH 555/659] =?UTF-8?q?=F0=9F=8E=A8=20More=20lowercase?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25939 --- Marlin/src/gcode/bedlevel/abl/G29.cpp | 2 +- Marlin/src/gcode/calibrate/G28.cpp | 4 +- Marlin/src/gcode/feature/powerloss/M1000.cpp | 2 +- Marlin/src/lcd/e3v2/common/dwin_api.cpp | 276 +++++++++---------- Marlin/src/lcd/e3v2/common/dwin_api.h | 102 +++---- Marlin/src/lcd/e3v2/common/encoder.cpp | 20 +- Marlin/src/lcd/e3v2/common/encoder.h | 16 +- Marlin/src/module/settings.cpp | 2 +- Marlin/src/module/temperature.cpp | 16 +- 9 files changed, 220 insertions(+), 220 deletions(-) diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index 3b669fbba2..4b2d21bc81 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -78,7 +78,7 @@ static void pre_g29_return(const bool retry, const bool did) { TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_IDLE, false)); } if (did) { - TERN_(HAS_DWIN_E3V2_BASIC, DWIN_LevelingDone()); + TERN_(HAS_DWIN_E3V2_BASIC, dwinLevelingDone()); TERN_(EXTENSIBLE_UI, ExtUI::onLevelingDone()); } } diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index ab7b03961c..cb4f80618d 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -236,7 +236,7 @@ void GcodeSuite::G28() { set_and_report_grblstate(M_HOMING); #endif - TERN_(HAS_DWIN_E3V2_BASIC, DWIN_HomingStart()); + TERN_(HAS_DWIN_E3V2_BASIC, dwinHomingStart()); TERN_(EXTENSIBLE_UI, ExtUI::onHomingStart()); planner.synchronize(); // Wait for planner moves to finish! @@ -649,7 +649,7 @@ void GcodeSuite::G28() { ui.refresh(); - TERN_(HAS_DWIN_E3V2_BASIC, DWIN_HomingDone()); + TERN_(HAS_DWIN_E3V2_BASIC, dwinHomingDone()); TERN_(EXTENSIBLE_UI, ExtUI::onHomingDone()); report_current_position(); diff --git a/Marlin/src/gcode/feature/powerloss/M1000.cpp b/Marlin/src/gcode/feature/powerloss/M1000.cpp index e874c19d5e..d56f09f71c 100644 --- a/Marlin/src/gcode/feature/powerloss/M1000.cpp +++ b/Marlin/src/gcode/feature/powerloss/M1000.cpp @@ -71,7 +71,7 @@ void GcodeSuite::M1000() { #elif HAS_DWIN_E3V2_BASIC recovery.dwin_flag = true; #elif ENABLED(DWIN_CREALITY_LCD_JYERSUI) // Temporary fix until it can be better implemented - CrealityDWIN.Popup_Handler(Resume); + crealityDWIN.popupHandler(Resume); #elif ENABLED(EXTENSIBLE_UI) ExtUI::onPowerLossResume(); #else diff --git a/Marlin/src/lcd/e3v2/common/dwin_api.cpp b/Marlin/src/lcd/e3v2/common/dwin_api.cpp index 319c861ea4..af28cfe62b 100644 --- a/Marlin/src/lcd/e3v2/common/dwin_api.cpp +++ b/Marlin/src/lcd/e3v2/common/dwin_api.cpp @@ -31,21 +31,21 @@ #include // for memset -uint8_t DWIN_SendBuf[11 + DWIN_WIDTH / 6 * 2] = { 0xAA }; -uint8_t DWIN_BufTail[4] = { 0xCC, 0x33, 0xC3, 0x3C }; +uint8_t dwinSendBuf[11 + DWIN_WIDTH / 6 * 2] = { 0xAA }; +uint8_t dwinBufTail[4] = { 0xCC, 0x33, 0xC3, 0x3C }; uint8_t databuf[26] = { 0 }; // Send the data in the buffer plus the packet tail -void DWIN_Send(size_t &i) { +void dwinSend(size_t &i) { ++i; - for (uint8_t n = 0; n < i; ++n) { LCD_SERIAL.write(DWIN_SendBuf[n]); delayMicroseconds(1); } - for (uint8_t n = 0; n < 4; ++n) { LCD_SERIAL.write(DWIN_BufTail[n]); delayMicroseconds(1); } + for (uint8_t n = 0; n < i; ++n) { LCD_SERIAL.write(dwinSendBuf[n]); delayMicroseconds(1); } + for (uint8_t n = 0; n < 4; ++n) { LCD_SERIAL.write(dwinBufTail[n]); delayMicroseconds(1); } } /*-------------------------------------- System variable function --------------------------------------*/ // Handshake (1: Success, 0: Fail) -bool DWIN_Handshake() { +bool dwinHandshake() { static int recnum = 0; #ifndef LCD_BAUDRATE #define LCD_BAUDRATE 115200 @@ -55,8 +55,8 @@ bool DWIN_Handshake() { while (!LCD_SERIAL.connected() && PENDING(millis(), serial_connect_timeout)) { /*nada*/ } size_t i = 0; - DWIN_Byte(i, 0x00); - DWIN_Send(i); + dwinByte(i, 0x00); + dwinSend(i); while (LCD_SERIAL.available() > 0 && recnum < (signed)sizeof(databuf)) { databuf[recnum] = LCD_SERIAL.read(); @@ -82,11 +82,11 @@ bool DWIN_Handshake() { #if HAS_LCD_BRIGHTNESS // Set LCD backlight (from DWIN Enhanced) // brightness: 0x00-0xFF - void DWIN_LCD_Brightness(const uint8_t brightness) { + void dwinLCDBrightness(const uint8_t brightness) { size_t i = 0; - DWIN_Byte(i, 0x30); - DWIN_Byte(i, brightness); - DWIN_Send(i); + dwinByte(i, 0x30); + dwinByte(i, brightness); + dwinSend(i); } #endif @@ -126,31 +126,31 @@ uint8_t fontHeight(uint8_t cfont) { // Set screen display direction // dir: 0=0°, 1=90°, 2=180°, 3=270° -void DWIN_Frame_SetDir(uint8_t dir) { +void dwinFrameSetDir(uint8_t dir) { size_t i = 0; - DWIN_Byte(i, 0x34); - DWIN_Byte(i, 0x5A); - DWIN_Byte(i, 0xA5); - DWIN_Byte(i, dir); - DWIN_Send(i); + dwinByte(i, 0x34); + dwinByte(i, 0x5A); + dwinByte(i, 0xA5); + dwinByte(i, dir); + dwinSend(i); } // Update display -void DWIN_UpdateLCD() { +void dwinUpdateLCD() { size_t i = 0; - DWIN_Byte(i, 0x3D); - DWIN_Send(i); + dwinByte(i, 0x3D); + dwinSend(i); } /*---------------------------------------- Drawing functions ----------------------------------------*/ // Clear screen // color: Clear screen color -void DWIN_Frame_Clear(const uint16_t color) { +void dwinFrameClear(const uint16_t color) { size_t i = 0; - DWIN_Byte(i, 0x01); - DWIN_Word(i, color); - DWIN_Send(i); + dwinByte(i, 0x01); + dwinWord(i, color); + dwinSend(i); } // Draw a point @@ -158,30 +158,30 @@ void DWIN_Frame_Clear(const uint16_t color) { // width: point width 0x01-0x0F // height: point height 0x01-0x0F // x,y: upper left point -void DWIN_Draw_Point(uint16_t color, uint8_t width, uint8_t height, uint16_t x, uint16_t y) { +void dwinDrawPoint(uint16_t color, uint8_t width, uint8_t height, uint16_t x, uint16_t y) { size_t i = 0; - DWIN_Byte(i, 0x02); - DWIN_Word(i, color); - DWIN_Byte(i, width); - DWIN_Byte(i, height); - DWIN_Word(i, x); - DWIN_Word(i, y); - DWIN_Send(i); + dwinByte(i, 0x02); + dwinWord(i, color); + dwinByte(i, width); + dwinByte(i, height); + dwinWord(i, x); + dwinWord(i, y); + dwinSend(i); } // Draw a line // color: Line segment color // xStart/yStart: Start point // xEnd/yEnd: End point -void DWIN_Draw_Line(uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd) { +void dwinDrawLine(uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd) { size_t i = 0; - DWIN_Byte(i, 0x03); - DWIN_Word(i, color); - DWIN_Word(i, xStart); - DWIN_Word(i, yStart); - DWIN_Word(i, xEnd); - DWIN_Word(i, yEnd); - DWIN_Send(i); + dwinByte(i, 0x03); + dwinWord(i, color); + dwinWord(i, xStart); + dwinWord(i, yStart); + dwinWord(i, xEnd); + dwinWord(i, yEnd); + dwinSend(i); } // Draw a rectangle @@ -189,16 +189,16 @@ void DWIN_Draw_Line(uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t x // color: Rectangle color // xStart/yStart: upper left point // xEnd/yEnd: lower right point -void DWIN_Draw_Rectangle(uint8_t mode, uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd) { +void dwinDrawRectangle(uint8_t mode, uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd) { size_t i = 0; - DWIN_Byte(i, 0x05); - DWIN_Byte(i, mode); - DWIN_Word(i, color); - DWIN_Word(i, xStart); - DWIN_Word(i, yStart); - DWIN_Word(i, xEnd); - DWIN_Word(i, yEnd); - DWIN_Send(i); + dwinByte(i, 0x05); + dwinByte(i, mode); + dwinWord(i, color); + dwinWord(i, xStart); + dwinWord(i, yStart); + dwinWord(i, xEnd); + dwinWord(i, yEnd); + dwinSend(i); } // Move a screen area @@ -208,18 +208,18 @@ void DWIN_Draw_Rectangle(uint8_t mode, uint16_t color, uint16_t xStart, uint16_t // color: Fill color // xStart/yStart: upper left point // xEnd/yEnd: bottom right point -void DWIN_Frame_AreaMove(uint8_t mode, uint8_t dir, uint16_t dis, +void dwinFrameAreaMove(uint8_t mode, uint8_t dir, uint16_t dis, uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd) { size_t i = 0; - DWIN_Byte(i, 0x09); - DWIN_Byte(i, (mode << 7) | dir); - DWIN_Word(i, dis); - DWIN_Word(i, color); - DWIN_Word(i, xStart); - DWIN_Word(i, yStart); - DWIN_Word(i, xEnd); - DWIN_Word(i, yEnd); - DWIN_Send(i); + dwinByte(i, 0x09); + dwinByte(i, (mode << 7) | dir); + dwinWord(i, dis); + dwinWord(i, color); + dwinWord(i, xStart); + dwinWord(i, yStart); + dwinWord(i, xEnd); + dwinWord(i, yEnd); + dwinSend(i); } /*---------------------------------------- Text related functions ----------------------------------------*/ @@ -233,24 +233,24 @@ void DWIN_Frame_AreaMove(uint8_t mode, uint8_t dir, uint16_t dis, // x/y: Upper-left coordinate of the string // *string: The string // rlimit: To limit the drawn string length -void DWIN_Draw_String(bool bShow, uint8_t size, uint16_t color, uint16_t bColor, uint16_t x, uint16_t y, const char * const string, uint16_t rlimit/*=0xFFFF*/) { +void dwinDrawString(bool bShow, uint8_t size, uint16_t color, uint16_t bColor, uint16_t x, uint16_t y, const char * const string, uint16_t rlimit/*=0xFFFF*/) { #if NONE(DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI, IS_DWIN_MARLINUI) - DWIN_Draw_Rectangle(1, bColor, x, y, x + (fontWidth(size) * strlen_P(string)), y + fontHeight(size)); + dwinDrawRectangle(1, bColor, x, y, x + (fontWidth(size) * strlen_P(string)), y + fontHeight(size)); #endif constexpr uint8_t widthAdjust = 0; size_t i = 0; - DWIN_Byte(i, 0x11); + dwinByte(i, 0x11); // Bit 7: widthAdjust // Bit 6: bShow // Bit 5-4: Unused (0) // Bit 3-0: size - DWIN_Byte(i, (widthAdjust * 0x80) | (bShow * 0x40) | size); - DWIN_Word(i, color); - DWIN_Word(i, bColor); - DWIN_Word(i, x); - DWIN_Word(i, y); - DWIN_Text(i, string, rlimit); - DWIN_Send(i); + dwinByte(i, (widthAdjust * 0x80) | (bShow * 0x40) | size); + dwinWord(i, color); + dwinWord(i, bColor); + dwinWord(i, x); + dwinWord(i, y); + dwinText(i, string, rlimit); + dwinSend(i); } // Draw a positive integer @@ -263,28 +263,28 @@ void DWIN_Draw_String(bool bShow, uint8_t size, uint16_t color, uint16_t bColor, // iNum: Number of digits // x/y: Upper-left coordinate // value: Integer value -void DWIN_Draw_IntValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, +void dwinDrawIntValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, uint32_t value) { size_t i = 0; #if DISABLED(DWIN_CREALITY_LCD_JYERSUI) - DWIN_Draw_Rectangle(1, bColor, x, y, x + fontWidth(size) * iNum + 1, y + fontHeight(size)); + dwinDrawRectangle(1, bColor, x, y, x + fontWidth(size) * iNum + 1, y + fontHeight(size)); #endif - DWIN_Byte(i, 0x14); + dwinByte(i, 0x14); // Bit 7: bshow // Bit 6: 1 = signed; 0 = unsigned number; // Bit 5: zeroFill // Bit 4: zeroMode // Bit 3-0: size - DWIN_Byte(i, (bShow * 0x80) | (zeroFill * 0x20) | (zeroMode * 0x10) | size); - DWIN_Word(i, color); - DWIN_Word(i, bColor); - DWIN_Byte(i, iNum); - DWIN_Byte(i, 0); // fNum - DWIN_Word(i, x); - DWIN_Word(i, y); + dwinByte(i, (bShow * 0x80) | (zeroFill * 0x20) | (zeroMode * 0x10) | size); + dwinWord(i, color); + dwinWord(i, bColor); + dwinByte(i, iNum); + dwinByte(i, 0); // fNum + dwinWord(i, x); + dwinWord(i, y); #if 0 for (char count = 0; count < 8; count++) { - DWIN_Byte(i, value); + dwinByte(i, value); value >>= 8; if (!(value & 0xFF)) break; } @@ -293,12 +293,12 @@ void DWIN_Draw_IntValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t const size_t p = i + 1; for (char count = 8; count--;) { // 7..0 ++i; - DWIN_SendBuf[p + count] = value; + dwinSendBuf[p + count] = value; value >>= 8; } #endif - DWIN_Send(i); + dwinSend(i); } // Draw a floating point number @@ -312,48 +312,48 @@ void DWIN_Draw_IntValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t // fNum: Number of decimal digits // x/y: Upper-left point // value: Float value -void DWIN_Draw_FloatValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, +void dwinDrawFloatValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, int32_t value) { //uint8_t *fvalue = (uint8_t*)&value; size_t i = 0; #if DISABLED(DWIN_CREALITY_LCD_JYERSUI) - DWIN_Draw_Rectangle(1, bColor, x, y, x + fontWidth(size) * (iNum+fNum+1), y + fontHeight(size)); + dwinDrawRectangle(1, bColor, x, y, x + fontWidth(size) * (iNum+fNum+1), y + fontHeight(size)); #endif - DWIN_Byte(i, 0x14); - DWIN_Byte(i, (bShow * 0x80) | (zeroFill * 0x20) | (zeroMode * 0x10) | size); - DWIN_Word(i, color); - DWIN_Word(i, bColor); - DWIN_Byte(i, iNum); - DWIN_Byte(i, fNum); - DWIN_Word(i, x); - DWIN_Word(i, y); - DWIN_Long(i, value); + dwinByte(i, 0x14); + dwinByte(i, (bShow * 0x80) | (zeroFill * 0x20) | (zeroMode * 0x10) | size); + dwinWord(i, color); + dwinWord(i, bColor); + dwinByte(i, iNum); + dwinByte(i, fNum); + dwinWord(i, x); + dwinWord(i, y); + dwinLong(i, value); /* - DWIN_Byte(i, fvalue[3]); - DWIN_Byte(i, fvalue[2]); - DWIN_Byte(i, fvalue[1]); - DWIN_Byte(i, fvalue[0]); + dwinByte(i, fvalue[3]); + dwinByte(i, fvalue[2]); + dwinByte(i, fvalue[1]); + dwinByte(i, fvalue[0]); */ - DWIN_Send(i); + dwinSend(i); } // Draw a floating point number // value: positive unscaled float value -void DWIN_Draw_FloatValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, +void dwinDrawFloatValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { const int32_t val = round(value * POW(10, fNum)); - DWIN_Draw_FloatValue(bShow, zeroFill, zeroMode, size, color, bColor, iNum, fNum, x, y, val); + dwinDrawFloatValue(bShow, zeroFill, zeroMode, size, color, bColor, iNum, fNum, x, y, val); } /*---------------------------------------- Picture related functions ----------------------------------------*/ // Draw JPG and cached in #0 virtual display area // id: Picture ID -void DWIN_JPG_ShowAndCache(const uint8_t id) { +void dwinJPGShowAndCache(const uint8_t id) { size_t i = 0; - DWIN_Word(i, 0x2200); - DWIN_Byte(i, id); - DWIN_Send(i); // AA 23 00 00 00 00 08 00 01 02 03 CC 33 C3 3C + dwinWord(i, 0x2200); + dwinByte(i, id); + dwinSend(i); // AA 23 00 00 00 00 08 00 01 02 03 CC 33 C3 3C } // Draw an Icon @@ -363,16 +363,16 @@ void DWIN_JPG_ShowAndCache(const uint8_t id) { // libID: Icon library ID // picID: Icon ID // x/y: Upper-left point -void DWIN_ICON_Show(bool IBD, bool BIR, bool BFI, uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) { +void dwinIconShow(bool IBD, bool BIR, bool BFI, uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) { NOMORE(x, DWIN_WIDTH - 1); NOMORE(y, DWIN_HEIGHT - 1); // -- ozy -- srl size_t i = 0; - DWIN_Byte(i, 0x23); - DWIN_Word(i, x); - DWIN_Word(i, y); - DWIN_Byte(i, (IBD << 7) | (BIR << 6) | (BFI << 5) | libID); - DWIN_Byte(i, picID); - DWIN_Send(i); + dwinByte(i, 0x23); + dwinWord(i, x); + dwinWord(i, y); + dwinByte(i, (IBD << 7) | (BIR << 6) | (BFI << 5) | libID); + dwinByte(i, picID); + dwinSend(i); } // Draw an Icon from SRAM @@ -381,27 +381,27 @@ void DWIN_ICON_Show(bool IBD, bool BIR, bool BFI, uint8_t libID, uint8_t picID, // BFI: Background filtering strength: 0=normal, 1=enhanced, (only valid when the icon background display=0) // x/y: Upper-left point // addr: SRAM address -void DWIN_ICON_Show(bool IBD, bool BIR, bool BFI, uint16_t x, uint16_t y, uint16_t addr) { +void dwinIconShow(bool IBD, bool BIR, bool BFI, uint16_t x, uint16_t y, uint16_t addr) { NOMORE(x, DWIN_WIDTH - 1); NOMORE(y, DWIN_HEIGHT - 1); // -- ozy -- srl size_t i = 0; - DWIN_Byte(i, 0x24); - DWIN_Word(i, x); - DWIN_Word(i, y); - DWIN_Byte(i, (IBD << 7) | (BIR << 6) | (BFI << 5) | 0x00); - DWIN_Word(i, addr); - DWIN_Send(i); + dwinByte(i, 0x24); + dwinWord(i, x); + dwinWord(i, y); + dwinByte(i, (IBD << 7) | (BIR << 6) | (BFI << 5) | 0x00); + dwinWord(i, addr); + dwinSend(i); } // Unzip the JPG picture to a virtual display area // n: Cache index // id: Picture ID -void DWIN_JPG_CacheToN(uint8_t n, uint8_t id) { +void dwinJPGCacheToN(uint8_t n, uint8_t id) { size_t i = 0; - DWIN_Byte(i, 0x25); - DWIN_Byte(i, n); - DWIN_Byte(i, id); - DWIN_Send(i); + dwinByte(i, 0x25); + dwinByte(i, n); + dwinByte(i, id); + dwinSend(i); } // Animate a series of icons @@ -412,32 +412,32 @@ void DWIN_JPG_CacheToN(uint8_t n, uint8_t id) { // picIDe: Icon ending ID // x/y: Upper-left point // interval: Display time interval, unit 10mS -void DWIN_ICON_Animation(uint8_t animID, bool animate, uint8_t libID, uint8_t picIDs, uint8_t picIDe, uint16_t x, uint16_t y, uint16_t interval) { +void dwinIconAnimation(uint8_t animID, bool animate, uint8_t libID, uint8_t picIDs, uint8_t picIDe, uint16_t x, uint16_t y, uint16_t interval) { NOMORE(x, DWIN_WIDTH - 1); NOMORE(y, DWIN_HEIGHT - 1); // -- ozy -- srl size_t i = 0; - DWIN_Byte(i, 0x28); - DWIN_Word(i, x); - DWIN_Word(i, y); + dwinByte(i, 0x28); + dwinWord(i, x); + dwinWord(i, y); // Bit 7: animation on or off // Bit 6: start from begin or end // Bit 5-4: unused (0) // Bit 3-0: animID - DWIN_Byte(i, (animate * 0x80) | 0x40 | animID); - DWIN_Byte(i, libID); - DWIN_Byte(i, picIDs); - DWIN_Byte(i, picIDe); - DWIN_Byte(i, interval); - DWIN_Send(i); + dwinByte(i, (animate * 0x80) | 0x40 | animID); + dwinByte(i, libID); + dwinByte(i, picIDs); + dwinByte(i, picIDe); + dwinByte(i, interval); + dwinSend(i); } // Animation Control // state: 16 bits, each bit is the state of an animation id -void DWIN_ICON_AnimationControl(uint16_t state) { +void dwinIconAnimationControl(uint16_t state) { size_t i = 0; - DWIN_Byte(i, 0x29); - DWIN_Word(i, state); - DWIN_Send(i); + dwinByte(i, 0x29); + dwinWord(i, state); + dwinSend(i); } /*---------------------------------------- Memory functions ----------------------------------------*/ diff --git a/Marlin/src/lcd/e3v2/common/dwin_api.h b/Marlin/src/lcd/e3v2/common/dwin_api.h index dc97ef2723..f2392af55c 100644 --- a/Marlin/src/lcd/e3v2/common/dwin_api.h +++ b/Marlin/src/lcd/e3v2/common/dwin_api.h @@ -39,101 +39,101 @@ #define DWIN_SCROLL_UP 2 #define DWIN_SCROLL_DOWN 3 -// Make sure DWIN_SendBuf is large enough to hold the largest string plus draw command and tail. +// Make sure dwinSendBuf is large enough to hold the largest string plus draw command and tail. // Assume the narrowest (6 pixel) font and 2-byte gb2312-encoded characters. -extern uint8_t DWIN_SendBuf[11 + DWIN_WIDTH / 6 * 2]; -extern uint8_t DWIN_BufTail[4]; +extern uint8_t dwinSendBuf[11 + DWIN_WIDTH / 6 * 2]; +extern uint8_t dwinBufTail[4]; extern uint8_t databuf[26]; -inline void DWIN_Byte(size_t &i, const uint16_t bval) { - DWIN_SendBuf[++i] = bval; +inline void dwinByte(size_t &i, const uint16_t bval) { + dwinSendBuf[++i] = bval; } -inline void DWIN_Word(size_t &i, const uint16_t wval) { - DWIN_SendBuf[++i] = wval >> 8; - DWIN_SendBuf[++i] = wval & 0xFF; +inline void dwinWord(size_t &i, const uint16_t wval) { + dwinSendBuf[++i] = wval >> 8; + dwinSendBuf[++i] = wval & 0xFF; } -inline void DWIN_Long(size_t &i, const uint32_t lval) { - DWIN_SendBuf[++i] = (lval >> 24) & 0xFF; - DWIN_SendBuf[++i] = (lval >> 16) & 0xFF; - DWIN_SendBuf[++i] = (lval >> 8) & 0xFF; - DWIN_SendBuf[++i] = lval & 0xFF; +inline void dwinLong(size_t &i, const uint32_t lval) { + dwinSendBuf[++i] = (lval >> 24) & 0xFF; + dwinSendBuf[++i] = (lval >> 16) & 0xFF; + dwinSendBuf[++i] = (lval >> 8) & 0xFF; + dwinSendBuf[++i] = lval & 0xFF; } // Send the data in the buffer plus the packet tail -void DWIN_Send(size_t &i); +void dwinSend(size_t &i); -inline void DWIN_Text(size_t &i, const char * const string, uint16_t rlimit=0xFFFF) { +inline void dwinText(size_t &i, const char * const string, uint16_t rlimit=0xFFFF) { if (!string) return; - const size_t len = _MIN(sizeof(DWIN_SendBuf) - i, _MIN(strlen(string), rlimit)); + const size_t len = _MIN(sizeof(dwinSendBuf) - i, _MIN(strlen(string), rlimit)); if (len == 0) return; - memcpy(&DWIN_SendBuf[i+1], string, len); + memcpy(&dwinSendBuf[i+1], string, len); i += len; } -inline void DWIN_Text(size_t &i, FSTR_P string, uint16_t rlimit=0xFFFF) { +inline void dwinText(size_t &i, FSTR_P string, uint16_t rlimit=0xFFFF) { if (!string) return; - const size_t len = _MIN(sizeof(DWIN_SendBuf) - i, _MIN(rlimit, strlen_P(FTOP(string)))); + const size_t len = _MIN(sizeof(dwinSendBuf) - i, _MIN(rlimit, strlen_P(FTOP(string)))); if (len == 0) return; - memcpy_P(&DWIN_SendBuf[i+1], string, len); + memcpy_P(&dwinSendBuf[i+1], string, len); i += len; } /*-------------------------------------- System variable function --------------------------------------*/ // Handshake (1: Success, 0: Fail) -bool DWIN_Handshake(); +bool dwinHandshake(); // DWIN startup -void DWIN_Startup(); +void dwinStartup(); #if HAS_LCD_BRIGHTNESS // Set the backlight brightness // brightness: (0x00-0xFF) - void DWIN_LCD_Brightness(const uint8_t brightness); + void dwinLCDBrightness(const uint8_t brightness); #endif // Set screen display direction // dir: 0=0°, 1=90°, 2=180°, 3=270° -void DWIN_Frame_SetDir(uint8_t dir); +void dwinFrameSetDir(uint8_t dir); // Update display -void DWIN_UpdateLCD(); +void dwinUpdateLCD(); /*---------------------------------------- Drawing functions ----------------------------------------*/ // Clear screen // color: Clear screen color -void DWIN_Frame_Clear(const uint16_t color); +void dwinFrameClear(const uint16_t color); // Draw a point // color: point color // width: point width 0x01-0x0F // height: point height 0x01-0x0F // x,y: upper left point -void DWIN_Draw_Point(uint16_t color, uint8_t width, uint8_t height, uint16_t x, uint16_t y); +void dwinDrawPoint(uint16_t color, uint8_t width, uint8_t height, uint16_t x, uint16_t y); // Draw a line // color: Line segment color // xStart/yStart: Start point // xEnd/yEnd: End point -void DWIN_Draw_Line(uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd); +void dwinDrawLine(uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd); // Draw a Horizontal line // color: Line segment color // xStart/yStart: Start point // xLength: Line Length -inline void DWIN_Draw_HLine(uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xLength) { - DWIN_Draw_Line(color, xStart, yStart, xStart + xLength - 1, yStart); +inline void dwinDrawHLine(uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xLength) { + dwinDrawLine(color, xStart, yStart, xStart + xLength - 1, yStart); } // Draw a Vertical line // color: Line segment color // xStart/yStart: Start point // yLength: Line Length -inline void DWIN_Draw_VLine(uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t yLength) { - DWIN_Draw_Line(color, xStart, yStart, xStart, yStart + yLength - 1); +inline void dwinDrawVLine(uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t yLength) { + dwinDrawLine(color, xStart, yStart, xStart, yStart + yLength - 1); } // Draw a rectangle @@ -141,15 +141,15 @@ inline void DWIN_Draw_VLine(uint16_t color, uint16_t xStart, uint16_t yStart, ui // color: Rectangle color // xStart/yStart: upper left point // xEnd/yEnd: lower right point -void DWIN_Draw_Rectangle(uint8_t mode, uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd); +void dwinDrawRectangle(uint8_t mode, uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd); // Draw a box // mode: 0=frame, 1=fill, 2=XOR fill // color: Rectangle color // xStart/yStart: upper left point // xSize/ySize: box size -inline void DWIN_Draw_Box(uint8_t mode, uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xSize, uint16_t ySize) { - DWIN_Draw_Rectangle(mode, color, xStart, yStart, xStart + xSize - 1, yStart + ySize - 1); +inline void dwinDrawBox(uint8_t mode, uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xSize, uint16_t ySize) { + dwinDrawRectangle(mode, color, xStart, yStart, xStart + xSize - 1, yStart + ySize - 1); } // Move a screen area @@ -159,7 +159,7 @@ inline void DWIN_Draw_Box(uint8_t mode, uint16_t color, uint16_t xStart, uint16_ // color: Fill color // xStart/yStart: upper left point // xEnd/yEnd: bottom right point -void DWIN_Frame_AreaMove(uint8_t mode, uint8_t dir, uint16_t dis, +void dwinFrameAreaMove(uint8_t mode, uint8_t dir, uint16_t dis, uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd); @@ -173,15 +173,15 @@ void DWIN_Frame_AreaMove(uint8_t mode, uint8_t dir, uint16_t dis, // x/y: Upper-left coordinate of the string // *string: The string // rlimit: For draw less chars than string length use rlimit -void DWIN_Draw_String(bool bShow, uint8_t size, uint16_t color, uint16_t bColor, uint16_t x, uint16_t y, const char * const string, uint16_t rlimit=0xFFFF); +void dwinDrawString(bool bShow, uint8_t size, uint16_t color, uint16_t bColor, uint16_t x, uint16_t y, const char * const string, uint16_t rlimit=0xFFFF); -inline void DWIN_Draw_String(bool bShow, uint8_t size, uint16_t color, uint16_t bColor, uint16_t x, uint16_t y, FSTR_P const ftitle) { +inline void dwinDrawString(bool bShow, uint8_t size, uint16_t color, uint16_t bColor, uint16_t x, uint16_t y, FSTR_P const ftitle) { #ifdef __AVR__ char ctitle[strlen_P(FTOP(ftitle)) + 1]; strcpy_P(ctitle, FTOP(ftitle)); - DWIN_Draw_String(bShow, size, color, bColor, x, y, ctitle); + dwinDrawString(bShow, size, color, bColor, x, y, ctitle); #else - DWIN_Draw_String(bShow, size, color, bColor, x, y, FTOP(ftitle)); + dwinDrawString(bShow, size, color, bColor, x, y, FTOP(ftitle)); #endif } @@ -195,7 +195,7 @@ inline void DWIN_Draw_String(bool bShow, uint8_t size, uint16_t color, uint16_t // iNum: Number of digits // x/y: Upper-left coordinate // value: Integer value -void DWIN_Draw_IntValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, +void dwinDrawIntValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, uint32_t value); // Draw a floating point number @@ -209,25 +209,25 @@ void DWIN_Draw_IntValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t // fNum: Number of decimal digits // x/y: Upper-left point // value: Float value -void DWIN_Draw_FloatValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, +void dwinDrawFloatValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, int32_t value); // Draw a floating point number // value: positive unscaled float value -void DWIN_Draw_FloatValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, +void dwinDrawFloatValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value); /*---------------------------------------- Picture related functions ----------------------------------------*/ // Draw JPG and cached in #0 virtual display area // id: Picture ID -void DWIN_JPG_ShowAndCache(const uint8_t id); +void dwinJPGShowAndCache(const uint8_t id); // Draw an Icon // libID: Icon library ID // picID: Icon ID // x/y: Upper-left point -void DWIN_ICON_Show(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y); +void dwinIconShow(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y); // Draw an Icon // IBD: The icon background display: 0=Background filtering is not displayed, 1=Background display \\When setting the background filtering not to display, the background must be pure black @@ -236,7 +236,7 @@ void DWIN_ICON_Show(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y); // libID: Icon library ID // picID: Icon ID // x/y: Upper-left point -void DWIN_ICON_Show(bool IBD, bool BIR, bool BFI, uint8_t libID, uint8_t picID, uint16_t x, uint16_t y); +void dwinIconShow(bool IBD, bool BIR, bool BFI, uint8_t libID, uint8_t picID, uint16_t x, uint16_t y); // Draw an Icon from SRAM // IBD: The icon background display: 0=Background filtering is not displayed, 1=Background display \\When setting the background filtering not to display, the background must be pure black @@ -244,16 +244,16 @@ void DWIN_ICON_Show(bool IBD, bool BIR, bool BFI, uint8_t libID, uint8_t picID, // BFI: Background filtering strength: 0=normal, 1=enhanced, (only valid when the icon background display=0) // x/y: Upper-left point // addr: SRAM address -void DWIN_ICON_Show(bool IBD, bool BIR, bool BFI, uint16_t x, uint16_t y, uint16_t addr); +void dwinIconShow(bool IBD, bool BIR, bool BFI, uint16_t x, uint16_t y, uint16_t addr); // Unzip the JPG picture to a virtual display area // n: Cache index // id: Picture ID -void DWIN_JPG_CacheToN(uint8_t n, uint8_t id); +void dwinJPGCacheToN(uint8_t n, uint8_t id); // Unzip the JPG picture to virtual display area #1 // id: Picture ID -inline void DWIN_JPG_CacheTo1(uint8_t id) { DWIN_JPG_CacheToN(1, id); } +inline void dwinJPGCacheTo1(uint8_t id) { dwinJPGCacheToN(1, id); } // Animate a series of icons // animID: Animation ID up to 16 @@ -263,8 +263,8 @@ inline void DWIN_JPG_CacheTo1(uint8_t id) { DWIN_JPG_CacheToN(1, id); } // picIDe: Icon ending ID // x/y: Upper-left point // interval: Display time interval, unit 10mS -void DWIN_ICON_Animation(uint8_t animID, bool animate, uint8_t libID, uint8_t picIDs, uint8_t picIDe, uint16_t x, uint16_t y, uint16_t interval); +void dwinIconAnimation(uint8_t animID, bool animate, uint8_t libID, uint8_t picIDs, uint8_t picIDe, uint16_t x, uint16_t y, uint16_t interval); // Animation Control // state: 16 bits, each bit is the state of an animation id -void DWIN_ICON_AnimationControl(uint16_t state); +void dwinIconAnimationControl(uint16_t state); diff --git a/Marlin/src/lcd/e3v2/common/encoder.cpp b/Marlin/src/lcd/e3v2/common/encoder.cpp index 5081e27690..2ff67059e9 100644 --- a/Marlin/src/lcd/e3v2/common/encoder.cpp +++ b/Marlin/src/lcd/e3v2/common/encoder.cpp @@ -46,7 +46,7 @@ #define ENCODER_PULSES_PER_STEP 4 #endif -ENCODER_Rate EncoderRate; +EncoderRate encoderRate; // TODO: Replace with ui.quick_feedback void Encoder_tick() { @@ -54,7 +54,7 @@ void Encoder_tick() { } // Encoder initialization -void Encoder_Configuration() { +void encoderConfiguration() { #if BUTTON_EXISTS(EN1) SET_INPUT_PULLUP(BTN_EN1); #endif @@ -70,7 +70,7 @@ void Encoder_Configuration() { } // Analyze encoder value and return state -EncoderState Encoder_ReceiveAnalyze() { +EncoderState encoderReceiveAnalyze() { const millis_t now = millis(); static uint8_t lastEncoderBits; uint8_t newbutton = 0; @@ -126,20 +126,20 @@ EncoderState Encoder_ReceiveAnalyze() { int32_t encoderMultiplier = 1; // if must encoder rati multiplier - if (EncoderRate.enabled) { + if (encoderRate.enabled) { const float abs_diff = ABS(temp_diff), encoderMovementSteps = abs_diff / (ENCODER_PULSES_PER_STEP); - if (EncoderRate.lastEncoderTime) { + if (encoderRate.lastEncoderTime) { // Note that the rate is always calculated between two passes through the // loop and that the abs of the temp_diff value is tracked. - const float encoderStepRate = encoderMovementSteps / float(ms - EncoderRate.lastEncoderTime) * 1000; + const float encoderStepRate = encoderMovementSteps / float(ms - encoderRate.lastEncoderTime) * 1000; if (encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) encoderMultiplier = 100; else if (encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) encoderMultiplier = 10; #if ENCODER_5X_STEPS_PER_SEC else if (encoderStepRate >= ENCODER_5X_STEPS_PER_SEC) encoderMultiplier = 5; #endif } - EncoderRate.lastEncoderTime = ms; + encoderRate.lastEncoderTime = ms; } #else @@ -148,9 +148,9 @@ EncoderState Encoder_ReceiveAnalyze() { #endif - // EncoderRate.encoderMoveValue += (temp_diff * encoderMultiplier) / (ENCODER_PULSES_PER_STEP); - EncoderRate.encoderMoveValue = (temp_diff * encoderMultiplier) / (ENCODER_PULSES_PER_STEP); - if (EncoderRate.encoderMoveValue < 0) EncoderRate.encoderMoveValue = -EncoderRate.encoderMoveValue; + // encoderRate.encoderMoveValue += (temp_diff * encoderMultiplier) / (ENCODER_PULSES_PER_STEP); + encoderRate.encoderMoveValue = (temp_diff * encoderMultiplier) / (ENCODER_PULSES_PER_STEP); + if (encoderRate.encoderMoveValue < 0) encoderRate.encoderMoveValue = -encoderRate.encoderMoveValue; temp_diff = 0; } diff --git a/Marlin/src/lcd/e3v2/common/encoder.h b/Marlin/src/lcd/e3v2/common/encoder.h index 3ab8c3bf42..72d37108dc 100644 --- a/Marlin/src/lcd/e3v2/common/encoder.h +++ b/Marlin/src/lcd/e3v2/common/encoder.h @@ -34,9 +34,9 @@ typedef struct { bool enabled = false; int encoderMoveValue = 0; millis_t lastEncoderTime = 0; -} ENCODER_Rate; +} EncoderRate; -extern ENCODER_Rate EncoderRate; +extern EncoderRate encoderRate; typedef enum { ENCODER_DIFF_NO = 0, // no state @@ -48,26 +48,26 @@ typedef enum { #define ENCODER_WAIT_MS 20 // Encoder initialization -void Encoder_Configuration(); +void encoderConfiguration(); // Analyze encoder value and return state -EncoderState Encoder_ReceiveAnalyze(); +EncoderState encoderReceiveAnalyze(); inline EncoderState get_encoder_state() { static millis_t Encoder_ms = 0; const millis_t ms = millis(); if (PENDING(ms, Encoder_ms)) return ENCODER_DIFF_NO; - const EncoderState state = Encoder_ReceiveAnalyze(); + const EncoderState state = encoderReceiveAnalyze(); if (state != ENCODER_DIFF_NO) Encoder_ms = ms + ENCODER_WAIT_MS; return state; } template -inline bool Apply_Encoder(const EncoderState &encoder_diffState, T &valref) { +inline bool applyEncoder(const EncoderState &encoder_diffState, T &valref) { if (encoder_diffState == ENCODER_DIFF_CW) - valref += EncoderRate.encoderMoveValue; + valref += encoderRate.encoderMoveValue; else if (encoder_diffState == ENCODER_DIFF_CCW) - valref -= EncoderRate.encoderMoveValue; + valref -= encoderRate.encoderMoveValue; return encoder_diffState == ENCODER_DIFF_ENTER; } diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 1ee3932c2d..16e0d10a09 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -535,7 +535,7 @@ typedef struct SettingsDataStruct { #if ENABLED(DWIN_LCD_PROUI) uint8_t dwin_data[eeprom_data_size]; #elif ENABLED(DWIN_CREALITY_LCD_JYERSUI) - uint8_t dwin_settings[CrealityDWIN.eeprom_data_size]; + uint8_t dwin_settings[crealityDWIN.eeprom_data_size]; #endif // diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 1f0e1a9755..a1bebca4a0 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -1231,7 +1231,7 @@ volatile bool Temperature::raw_temps_ready = false; // Heat to 200 degrees SERIAL_ECHOLNPGM(STR_MPC_HEATING_PAST_200); - TERN(DWIN_LCD_PROUI, LCD_ALERTMESSAGE(MSG_MPC_HEATING_PAST_200), LCD_MESSAGE(MSG_HEATING)); + LCD_ALERTMESSAGE(MSG_MPC_HEATING_PAST_200); if (tuner.measure_heatup() != MPC_autotuner::MeasurementState::SUCCESS) return; @@ -1531,14 +1531,14 @@ void Temperature::_temp_error(const heater_id_t heater_id, FSTR_P const serial_m void Temperature::maxtemp_error(const heater_id_t heater_id) { #if HAS_DWIN_E3V2_BASIC && (HAS_HOTEND || HAS_HEATED_BED) - DWIN_Popup_Temperature(1); + dwinPopupTemperature(1); #endif _temp_error(heater_id, F(STR_T_MAXTEMP), GET_TEXT_F(MSG_ERR_MAXTEMP)); } void Temperature::mintemp_error(const heater_id_t heater_id) { #if HAS_DWIN_E3V2_BASIC && (HAS_HOTEND || HAS_HEATED_BED) - DWIN_Popup_Temperature(0); + dwinPopupTemperature(0); #endif _temp_error(heater_id, F(STR_T_MINTEMP), GET_TEXT_F(MSG_ERR_MINTEMP)); } @@ -1758,7 +1758,7 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { if (watch_hotend[e].check(degHotend(e))) // Increased enough? start_watching_hotend(e); // If temp reached, turn off elapsed check else { - TERN_(HAS_DWIN_E3V2_BASIC, DWIN_Popup_Temperature(0)); + TERN_(HAS_DWIN_E3V2_BASIC, dwinPopupTemperature(0)); _temp_error((heater_id_t)e, FPSTR(str_t_heating_failed), GET_TEXT_F(MSG_HEATING_FAILED_LCD)); } } @@ -1783,7 +1783,7 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { if (watch_bed.check(degBed())) // Increased enough? start_watching_bed(); // If temp reached, turn off elapsed check else { - TERN_(HAS_DWIN_E3V2_BASIC, DWIN_Popup_Temperature(0)); + TERN_(HAS_DWIN_E3V2_BASIC, dwinPopupTemperature(0)); _temp_error(H_BED, FPSTR(str_t_heating_failed), GET_TEXT_F(MSG_HEATING_FAILED_LCD)); } } @@ -3179,12 +3179,12 @@ void Temperature::init() { } // fall through case TRRunaway: - TERN_(HAS_DWIN_E3V2_BASIC, DWIN_Popup_Temperature(0)); + TERN_(HAS_DWIN_E3V2_BASIC, dwinPopupTemperature(0)); _temp_error(heater_id, FPSTR(str_t_thermal_runaway), GET_TEXT_F(MSG_THERMAL_RUNAWAY)); #if ENABLED(THERMAL_PROTECTION_VARIANCE_MONITOR) case TRMalfunction: - TERN_(HAS_DWIN_E3V2_BASIC, DWIN_Popup_Temperature(0)); + TERN_(HAS_DWIN_E3V2_BASIC, dwinPopupTemperature(0)); _temp_error(heater_id, FPSTR(str_t_temp_malfunction), GET_TEXT_F(MSG_TEMP_MALFUNCTION)); #endif } @@ -4392,7 +4392,7 @@ void Temperature::isr() { if (wait_for_heatup) { wait_for_heatup = false; #if HAS_DWIN_E3V2_BASIC - HMI_flag.heat_flag = 0; + hmiFlag.heat_flag = 0; duration_t elapsed = print_job_timer.duration(); // Print timer dwin_heat_time = elapsed.value; #else From 78b342661a07fae8d7152f369c3c9fe16ed9b9cb Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 17 Jun 2023 00:22:04 +0000 Subject: [PATCH 556/659] [cron] Bump distribution date (2023-06-17) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 962a745208..b51a4a671d 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-16" +//#define STRING_DISTRIBUTION_DATE "2023-06-17" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 3300716c83..66942676da 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-16" + #define STRING_DISTRIBUTION_DATE "2023-06-17" #endif /** From 238951a966204ce9bc109e06fdb4027125b28feb Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 16 Jun 2023 18:08:59 -0500 Subject: [PATCH 557/659] =?UTF-8?q?=F0=9F=8E=A8=20More=20more=20lowercase?= =?UTF-8?q?=20(partial=20ProUI)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25939 --- Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp | 12 +- Marlin/src/lcd/e3v2/proui/dwin.cpp | 166 +++++++++---------- Marlin/src/lcd/e3v2/proui/dwin.h | 10 +- Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp | 80 ++++----- Marlin/src/lcd/e3v2/proui/dwin_popup.cpp | 20 +-- Marlin/src/lcd/e3v2/proui/dwin_popup.h | 8 +- Marlin/src/lcd/e3v2/proui/dwinui.cpp | 46 ++--- Marlin/src/lcd/e3v2/proui/dwinui.h | 22 +-- Marlin/src/lcd/e3v2/proui/endstop_diag.cpp | 4 +- Marlin/src/lcd/e3v2/proui/gcode_preview.cpp | 8 +- Marlin/src/lcd/e3v2/proui/lockscreen.cpp | 12 +- Marlin/src/lcd/e3v2/proui/menus.cpp | 28 ++-- Marlin/src/lcd/e3v2/proui/meshviewer.cpp | 14 +- Marlin/src/lcd/e3v2/proui/plot.cpp | 14 +- Marlin/src/lcd/e3v2/proui/printstats.cpp | 2 +- Marlin/src/lcd/marlinui.cpp | 2 +- 16 files changed, 224 insertions(+), 224 deletions(-) diff --git a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp index 69721e4e77..7892de2d69 100644 --- a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp +++ b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp @@ -217,13 +217,13 @@ bool BedLevelToolsClass::meshvalidate() { const float v_max = abs(get_max_value()), v_min = abs(get_min_value()), range = _MAX(v_min, v_max); // Clear background from previous selection and select new square - DWIN_Draw_Rectangle(1, Color_Bg_Black, _MAX(0, padding_x - gridline_width), _MAX(0, padding_y_top - gridline_width), padding_x + total_width_px, padding_y_top + total_width_px); + dwinDrawRectangle(1, Color_Bg_Black, _MAX(0, padding_x - gridline_width), _MAX(0, padding_y_top - gridline_width), padding_x + total_width_px, padding_y_top + total_width_px); if (selected >= 0) { const auto selected_y = selected / (GRID_MAX_POINTS_X); const auto selected_x = selected - (GRID_MAX_POINTS_X) * selected_y; const auto start_y_px = padding_y_top + selected_y * cell_height_px; const auto start_x_px = padding_x + selected_x * cell_width_px; - DWIN_Draw_Rectangle(1, Color_White, _MAX(0, start_x_px - gridline_width), _MAX(0, start_y_px - gridline_width), start_x_px + cell_width_px, start_y_px + cell_height_px); + dwinDrawRectangle(1, Color_White, _MAX(0, start_x_px - gridline_width), _MAX(0, start_y_px - gridline_width), start_x_px + cell_width_px, start_y_px + cell_height_px); } // Draw value square grid @@ -233,7 +233,7 @@ bool BedLevelToolsClass::meshvalidate() { const auto end_x_px = start_x_px + cell_width_px - 1 - gridline_width; const auto start_y_px = padding_y_top + ((GRID_MAX_POINTS_Y) - y - 1) * cell_height_px; const auto end_y_px = start_y_px + cell_height_px - 1 - gridline_width; - DWIN_Draw_Rectangle(1, // RGB565 colors: http://www.barth-dev.de/online/rgb565-color-picker/ + dwinDrawRectangle(1, // RGB565 colors: http://www.barth-dev.de/online/rgb565-color-picker/ isnan(bedlevel.z_values[x][y]) ? Color_Grey : ( // gray if undefined (bedlevel.z_values[x][y] < 0 ? (uint16_t)round(0x1F * -bedlevel.z_values[x][y] / (!viewer_asymmetric_range ? range : v_min)) << 11 : // red if mesh point value is negative @@ -249,7 +249,7 @@ bool BedLevelToolsClass::meshvalidate() { if (viewer_print_value) { int8_t offset_x, offset_y = cell_height_px / 2 - 6; if (isnan(bedlevel.z_values[x][y])) { // undefined - DWIN_Draw_String(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + cell_width_px / 2 - 5, start_y_px + offset_y, F("X")); + dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + cell_width_px / 2 - 5, start_y_px + offset_y, F("X")); } else { // has value if (GRID_MAX_POINTS_X < 10) @@ -258,8 +258,8 @@ bool BedLevelToolsClass::meshvalidate() { sprintf_P(buf, PSTR("%02i"), (uint16_t)(abs(bedlevel.z_values[x][y] - (int16_t)bedlevel.z_values[x][y]) * 100)); offset_x = cell_width_px / 2 - 3 * (strlen(buf)) - 2; if (!(GRID_MAX_POINTS_X < 10)) - DWIN_Draw_String(false, font6x12, Color_White, Color_Bg_Blue, start_x_px - 2 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, F(".")); - DWIN_Draw_String(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + 1 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, buf); + dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px - 2 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, F(".")); + dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + 1 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, buf); } safe_delay(10); LCD_SERIAL.flushTX(); diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index 293e6c2d5c..83105f2109 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -162,7 +162,7 @@ // Structs HMI_value_t HMI_value; -HMI_flag_t HMI_flag{0}; +HMI_flag_t hmiFlag{0}; HMI_data_t HMI_data; enum SelectItem : uint8_t { @@ -278,24 +278,24 @@ bool Host_Printing() { return Printing() && !IS_SD_FILE_OPEN(); } #define DWIN_LANGUAGE_EEPROM_ADDRESS 0x01 // Between 0x01 and 0x63 (EEPROM_OFFSET-1) // BL24CXX::check() uses 0x00 -inline bool HMI_IsChinese() { return HMI_flag.language == DWIN_CHINESE; } +inline bool HMI_IsChinese() { return hmiFlag.language == DWIN_CHINESE; } void HMI_SetLanguageCache() { - DWIN_JPG_CacheTo1(HMI_IsChinese() ? Language_Chinese : Language_English); + dwinJPGCacheTo1(HMI_IsChinese() ? Language_Chinese : Language_English); } void HMI_SetLanguage() { #if ALL(EEPROM_SETTINGS, IIC_BL24CXX_EEPROM) - BL24CXX::read(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language, sizeof(HMI_flag.language)); + BL24CXX::read(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&hmiFlag.language, sizeof(hmiFlag.language)); #endif HMI_SetLanguageCache(); } void HMI_ToggleLanguage() { - HMI_flag.language = HMI_IsChinese() ? DWIN_ENGLISH : DWIN_CHINESE; + hmiFlag.language = HMI_IsChinese() ? DWIN_ENGLISH : DWIN_CHINESE; HMI_SetLanguageCache(); #if ALL(EEPROM_SETTINGS, IIC_BL24CXX_EEPROM) - BL24CXX::write(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language, sizeof(HMI_flag.language)); + BL24CXX::write(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&hmiFlag.language, sizeof(hmiFlag.language)); #endif } @@ -403,7 +403,7 @@ void Popup_window_PauseOrStop() { DWINUI::Draw_IconWB(ICON_Confirm_C, 26, 280); DWINUI::Draw_IconWB(ICON_Cancel_C, 146, 280); Draw_Select_Highlight(true); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } else DWIN_Popup_ConfirmCancel(ICON_BLTouch, select_print.now == PRINT_PAUSE_RESUME ? GET_TEXT_F(MSG_PAUSE_PRINT) : GET_TEXT_F(MSG_STOP_PRINT)); @@ -420,7 +420,7 @@ void Popup_window_PauseOrStop() { DWIN_Frame_AreaCopy(1, 103, 371, 136, 386, 69, 240); DWIN_Frame_AreaCopy(1, 170, 371, 270, 386, 102, 240); DWINUI::Draw_IconWB(ICON_Confirm_C, 86, 280); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } else DWIN_Popup_Confirm(ICON_TempTooLow, GET_TEXT_F(MSG_HOTEND_TOO_COLD), GET_TEXT_F(MSG_PLEASE_PREHEAT)); @@ -429,7 +429,7 @@ void Popup_window_PauseOrStop() { #endif #if HAS_HOTEND || HAS_HEATED_BED - void DWIN_Popup_Temperature(const bool toohigh) { + void dwinPopupTemperature(const bool toohigh) { HMI_SaveProcessID(WaitResponse); if (HMI_IsChinese()) { DWINUI::ClearMainArea(); @@ -455,7 +455,7 @@ void Popup_window_PauseOrStop() { // Draw status line // void DWIN_DrawStatusLine(const char *text) { - DWIN_Draw_Rectangle(1, HMI_data.StatusBg_Color, 0, STATUS_Y, DWIN_WIDTH, STATUS_Y + 20); + dwinDrawRectangle(1, HMI_data.StatusBg_Color, 0, STATUS_Y, DWIN_WIDTH, STATUS_Y + 20); if (text) DWINUI::Draw_CenteredString(HMI_data.StatusTxt_Color, STATUS_Y + 2, text); } void DWIN_DrawStatusLine(FSTR_P fstr) { DWIN_DrawStatusLine(FTOP(fstr)); } @@ -501,7 +501,7 @@ void DWIN_DrawStatusMessage() { // and the string remaining length uint8_t rlen; const char *stat = MarlinUI::status_and_len(rlen); - DWIN_Draw_Rectangle(1, HMI_data.StatusBg_Color, 0, STATUS_Y, DWIN_WIDTH, STATUS_Y + 20); + dwinDrawRectangle(1, HMI_data.StatusBg_Color, 0, STATUS_Y, DWIN_WIDTH, STATUS_Y + 20); DWINUI::MoveTo(0, STATUS_Y + 2); DWINUI::Draw_String(HMI_data.StatusTxt_Color, stat, LCD_WIDTH); @@ -542,7 +542,7 @@ void Draw_Print_Labels() { void Draw_Print_ProgressBar() { DWINUI::Draw_IconWB(ICON_Bar, 15, 93); - DWIN_Draw_Rectangle(1, HMI_data.Barfill_Color, 16 + _percent_done * 240 / 100, 93, 256, 113); + dwinDrawRectangle(1, HMI_data.Barfill_Color, 16 + _percent_done * 240 / 100, 93, 256, 113); DWINUI::Draw_Int(HMI_data.PercentTxt_Color, HMI_data.Background_Color, 3, 117, 133, _percent_done); DWINUI::Draw_String(HMI_data.PercentTxt_Color, 142, 133, F("%")); } @@ -573,7 +573,7 @@ void DWIN_Print_Header(const char *text = nullptr) { headertxt[size] = '\0'; } if (checkkey == PrintProcess || checkkey == PrintDone) { - DWIN_Draw_Rectangle(1, HMI_data.Background_Color, 0, 60, DWIN_WIDTH, 60+16); + dwinDrawRectangle(1, HMI_data.Background_Color, 0, 60, DWIN_WIDTH, 60+16); DWINUI::Draw_CenteredString(60, headertxt); } } @@ -604,7 +604,7 @@ void Goto_PrintProcess() { Draw_PrintProcess(); TERN_(DASH_REDRAW, DWIN_RedrawDash()); } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } void Draw_PrintDone() { @@ -619,7 +619,7 @@ void Draw_PrintDone() { #if HAS_GCODE_PREVIEW const bool isvalid = Preview_Valid(); if (isvalid) { - DWIN_ICON_Show(0, 0, 1, 21, 100, 0x00); + dwinIconShow(0, 0, 1, 21, 100, 0x00); DWINUI::Draw_Button(BTN_Continue, 86, 300); } #else @@ -642,7 +642,7 @@ void Goto_PrintDone() { if (checkkey != PrintDone) { checkkey = PrintDone; Draw_PrintDone(); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } } @@ -663,7 +663,7 @@ void Goto_Main_Menu() { if (checkkey == MainMenu) return; checkkey = MainMenu; Draw_Main_Menu(); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } // Draw X, Y, Z and blink if in an un-homed or un-trusted state @@ -695,19 +695,19 @@ void _draw_ZOffsetIcon() { static bool _leveling_active = false; if (_leveling_active != planner.leveling_active) { _leveling_active = planner.leveling_active; - DWIN_Draw_Rectangle(1, HMI_data.Background_Color, 186, 415, 205, 436); + dwinDrawRectangle(1, HMI_data.Background_Color, 186, 415, 205, 436); DWINUI::Draw_Icon(_leveling_active ? ICON_SetZOffset : ICON_Zoffset, 187, 416); } #else if (planner.leveling_active) { - DWIN_Draw_Rectangle(1, blink ? HMI_data.SplitLine_Color : HMI_data.Background_Color, 186, 415, 205, 436); + dwinDrawRectangle(1, blink ? HMI_data.SplitLine_Color : HMI_data.Background_Color, 186, 415, 205, 436); DWINUI::Draw_Icon(ICON_SetZOffset, 186, 416); } static bool _leveling_active = false; if (_leveling_active != planner.leveling_active) { _leveling_active = planner.leveling_active; if (!_leveling_active) { - DWIN_Draw_Rectangle(1, HMI_data.Background_Color, 186, 415, 205, 436); + dwinDrawRectangle(1, HMI_data.Background_Color, 186, 415, 205, 436); DWINUI::Draw_Icon(ICON_Zoffset, 187, 416); } } @@ -948,7 +948,7 @@ void Draw_Print_File_Menu() { else { if (SET_MENU(FileMenu, MSG_MEDIA_MENU, 1)) BACK_ITEM(Goto_Main_Menu); UpdateMenu(FileMenu); - DWIN_Draw_Rectangle(1, HMI_data.AlertBg_Color, 10, MBASE(3) - 10, DWIN_WIDTH - 10, MBASE(4)); + dwinDrawRectangle(1, HMI_data.AlertBg_Color, 10, MBASE(3) - 10, DWIN_WIDTH - 10, MBASE(4)); DWINUI::Draw_CenteredString(font12x24, HMI_data.AlertTxt_Color, MBASE(3), GET_TEXT_F(MSG_MEDIA_NOT_INSERTED)); } TERN_(SCROLL_LONG_FILENAMES, FileMenuIdle(true)); @@ -958,12 +958,12 @@ void Draw_Print_File_Menu() { // Watch for media mount / unmount // void HMI_SDCardUpdate() { - if (HMI_flag.home_flag) return; + if (hmiFlag.home_flag) return; if (DWIN_lcd_sd_status != card.isMounted()) { DWIN_lcd_sd_status = card.isMounted(); if (IsMenu(FileMenu)) Redraw_SD_List(); if (!DWIN_lcd_sd_status && SD_Printing()) ui.abort_print(); // Media removed while printing - DWIN_UpdateLCD(); + dwinUpdateLCD(); } } @@ -973,7 +973,7 @@ void HMI_SDCardUpdate() { void DWIN_Draw_Dashboard() { - DWIN_Draw_Rectangle(1, HMI_data.Background_Color, 0, STATUS_Y + 21, DWIN_WIDTH, DWIN_HEIGHT - 1); + dwinDrawRectangle(1, HMI_data.Background_Color, 0, STATUS_Y + 21, DWIN_WIDTH, DWIN_HEIGHT - 1); #if HAS_HOTEND DWINUI::Draw_Icon(ICON_HotendTemp, 10, 383); @@ -1008,7 +1008,7 @@ void DWIN_Draw_Dashboard() { DWINUI::Draw_Signed_Float(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 2, 2, 204, 417, BABY_Z_VAR); - DWIN_Draw_Rectangle(1, HMI_data.SplitLine_Color, 0, 449, DWIN_WIDTH, 451); + dwinDrawRectangle(1, HMI_data.SplitLine_Color, 0, 449, DWIN_WIDTH, 451); DWINUI::Draw_Icon(ICON_MaxSpeedX, 10, 456); DWINUI::Draw_Icon(ICON_MaxSpeedY, 95, 456); @@ -1042,7 +1042,7 @@ void Draw_Info_Menu() { for (uint8_t i = 0; i < 3; ++i) { DWINUI::Draw_Icon(ICON_PrintSize + i, ICOX, 99 + i * 73); - DWIN_Draw_HLine(HMI_data.SplitLine_Color, 16, MBASE(2) + i * 73, 240); + dwinDrawHLine(HMI_data.SplitLine_Color, 16, MBASE(2) + i * 73, 240); } } @@ -1085,14 +1085,14 @@ void HMI_MainMenu() { case PAGE_ADVANCE: Draw_AdvancedSettings_Menu(); break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } // Pause or Stop popup void onClick_PauseOrStop() { switch (select_print.now) { - case PRINT_PAUSE_RESUME: if (HMI_flag.select_flag) ui.pause_print(); break; // confirm pause - case PRINT_STOP: if (HMI_flag.select_flag) ui.abort_print(); break; // stop confirmed then abort print + case PRINT_PAUSE_RESUME: if (hmiFlag.select_flag) ui.pause_print(); break; // confirm pause + case PRINT_STOP: if (hmiFlag.select_flag) ui.abort_print(); break; // stop confirmed then abort print default: break; } return Goto_PrintProcess(); @@ -1136,7 +1136,7 @@ void HMI_Printing() { default: break; } } - DWIN_UpdateLCD(); + dwinUpdateLCD(); } #include "../../../libs/buzzer.h" @@ -1200,8 +1200,8 @@ void HMI_Init() { DWINUI::Draw_CenteredString(Color_White, 220, F("Professional Firmware ")); for (uint16_t t = 15; t < 257; t += 11) { DWINUI::Draw_Icon(ICON_Bar, 15, 260); - DWIN_Draw_Rectangle(1, HMI_data.Background_Color, t, 260, 257, 280); - DWIN_UpdateLCD(); + dwinDrawRectangle(1, HMI_data.Background_Color, t, 260, 257, 280); + dwinUpdateLCD(); safe_delay((BOOTSCREEN_TIMEOUT) / 22); } #endif @@ -1241,21 +1241,21 @@ void EachMomentUpdate() { if (!PENDING(ms, next_rts_update_ms)) { next_rts_update_ms = ms + DWIN_UPDATE_INTERVAL; - if ((Printing() != HMI_flag.printing_flag) && !HMI_flag.home_flag) { - HMI_flag.printing_flag = Printing(); - if (HMI_flag.printing_flag) + if ((Printing() != hmiFlag.printing_flag) && !hmiFlag.home_flag) { + hmiFlag.printing_flag = Printing(); + if (hmiFlag.printing_flag) DWIN_Print_Started(); - else if (HMI_flag.abort_flag) + else if (hmiFlag.abort_flag) DWIN_Print_Aborted(); else DWIN_Print_Finished(); } - if ((printingIsPaused() != HMI_flag.pause_flag) && !HMI_flag.home_flag) { - HMI_flag.pause_flag = printingIsPaused(); - if (HMI_flag.pause_flag) + if ((printingIsPaused() != hmiFlag.pause_flag) && !hmiFlag.home_flag) { + hmiFlag.pause_flag = printingIsPaused(); + if (hmiFlag.pause_flag) DWIN_Print_Pause(); - else if (HMI_flag.abort_flag) + else if (hmiFlag.abort_flag) DWIN_Print_Aborted(); else DWIN_Print_Resume(); @@ -1265,7 +1265,7 @@ void EachMomentUpdate() { duration_t elapsed = print_job_timer.duration(); // print timer - if (card.isPrinting() && !HMI_flag.percent_flag) { + if (card.isPrinting() && !hmiFlag.percent_flag) { uint8_t percentDone = card.percentDone(); if (_percent_done != percentDone) { // print percent _percent_done = percentDone; @@ -1274,7 +1274,7 @@ void EachMomentUpdate() { // Estimate remaining time every 20 seconds static millis_t next_remain_time_update = 0; - if (_percent_done > 1 && ELAPSED(ms, next_remain_time_update) && !HMI_flag.heat_flag && !HMI_flag.remain_flag) { + if (_percent_done > 1 && ELAPSED(ms, next_remain_time_update) && !hmiFlag.heat_flag && !hmiFlag.remain_flag) { _remain_time = (elapsed.value - dwin_heat_time) / (_percent_done * 0.01f) - (elapsed.value - dwin_heat_time); next_remain_time_update += DWIN_REMAIN_TIME_UPDATE_INTERVAL; Draw_Print_ProgressRemain(); @@ -1296,7 +1296,7 @@ void EachMomentUpdate() { } #endif // POWER_LOSS_RECOVERY - DWIN_UpdateLCD(); + dwinUpdateLCD(); } } @@ -1321,12 +1321,12 @@ void EachMomentUpdate() { const char * const filename = card.diveToFile(true, dir, recovery.info.sd_filename); card.selectFileByName(filename); DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 207, card.longest_filename()); - Draw_Select_Highlight(HMI_flag.select_flag); - DWIN_UpdateLCD(); + Draw_Select_Highlight(hmiFlag.select_flag); + dwinUpdateLCD(); } void onClick_PowerLossRecovery() { - if (HMI_flag.select_flag) { + if (hmiFlag.select_flag) { queue.inject(F("M1000C")); select_page.reset(); return Goto_Main_Menu(); @@ -1393,15 +1393,15 @@ void HMI_SaveProcessID(const uint8_t id) { } } -void DWIN_HomingStart() { - HMI_flag.home_flag = true; +void dwinHomingStart() { + hmiFlag.home_flag = true; HMI_SaveProcessID(Homing); Title.ShowCaption(GET_TEXT_F(MSG_HOMING)); DWIN_Show_Popup(ICON_BLTouch, GET_TEXT_F(MSG_HOMING), GET_TEXT_F(MSG_PLEASE_WAIT)); } -void DWIN_HomingDone() { - HMI_flag.home_flag = false; +void dwinHomingDone() { + hmiFlag.home_flag = false; HMI_ReturnScreen(); } @@ -1614,10 +1614,10 @@ void DWIN_Print_Started() { TERN_(HAS_GCODE_PREVIEW, if (Host_Printing()) Preview_Invalidate()); _percent_done = 0; _remain_time = 0; - HMI_flag.percent_flag = false; - HMI_flag.remain_flag = false; - HMI_flag.pause_flag = false; - HMI_flag.abort_flag = false; + hmiFlag.percent_flag = false; + hmiFlag.remain_flag = false; + hmiFlag.pause_flag = false; + hmiFlag.abort_flag = false; select_print.reset(); Goto_PrintProcess(); } @@ -1636,7 +1636,7 @@ void DWIN_Print_Resume() { // Ended print job void DWIN_Print_Finished() { TERN_(POWER_LOSS_RECOVERY, if (card.isPrinting()) recovery.cancel()); - HMI_flag.pause_flag = false; + hmiFlag.pause_flag = false; wait_for_heatup = false; planner.finish_and_disable(); thermalManager.cooldown(); @@ -1652,11 +1652,11 @@ void DWIN_Print_Aborted() { void DWIN_M73() { if (parser.seenval('P')) { _percent_done = parser.value_byte(); - HMI_flag.percent_flag = true; + hmiFlag.percent_flag = true; } if (parser.seenval('R')) { _remain_time = parser.value_ulong() * 60; - HMI_flag.remain_flag = true; + hmiFlag.remain_flag = true; } if (checkkey == PrintProcess) { Draw_Print_ProgressBar(); @@ -1739,13 +1739,13 @@ void DWIN_CopySettingsFrom(const char * const buff) { // Initialize or re-initialize the LCD void MarlinUI::init_lcd() { delay(750); // wait to wakeup screen - const bool hs = DWIN_Handshake(); UNUSED(hs); - DWIN_Frame_SetDir(1); - DWIN_JPG_CacheTo1(Language_English); - Encoder_Configuration(); + const bool hs = dwinHandshake(); UNUSED(hs); + dwinFrameSetDir(1); + dwinJPGCacheTo1(Language_English); + encoderConfiguration(); } -void DWIN_InitScreen() { +void dwinInitScreen() { DWIN_SetColorDefaults(); HMI_Init(); // draws boot screen DWINUI::init(); @@ -1769,20 +1769,20 @@ void MarlinUI::update() { void MarlinUI::refresh() { /* Nothing to see here */ } #if HAS_LCD_BRIGHTNESS - void MarlinUI::_set_brightness() { DWIN_LCD_Brightness(backlight ? brightness : 0); } + void MarlinUI::_set_brightness() { dwinLCDBrightness(backlight ? brightness : 0); } #endif void MarlinUI::kill_screen(FSTR_P const lcd_error, FSTR_P const lcd_component) { DWIN_Draw_Popup(ICON_BLTouch, GET_TEXT_F(MSG_PRINTER_KILLED), lcd_error); DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 270, GET_TEXT_F(MSG_TURN_OFF)); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } void DWIN_RebootScreen() { - DWIN_Frame_Clear(Color_Bg_Black); - DWIN_JPG_ShowAndCache(0); + dwinFrameClear(Color_Bg_Black); + dwinJPGShowAndCache(0); DWINUI::Draw_CenteredString(Color_White, 220, GET_TEXT_F(MSG_PLEASE_WAIT_REBOOT)); - DWIN_UpdateLCD(); + dwinUpdateLCD(); safe_delay(500); } @@ -1837,7 +1837,7 @@ void DWIN_RedrawScreen() { } void onClick_FilamentPurge() { - if (HMI_flag.select_flag) + if (hmiFlag.select_flag) pause_menu_response = PAUSE_RESPONSE_EXTRUDE_MORE; // "Purge More" button else { HMI_SaveProcessID(NothingToDo); @@ -1896,8 +1896,8 @@ void DWIN_RedrawScreen() { void onClick_ConfirmToPrint() { Preview_Reset(); DWIN_ResetStatusLine(); - if (HMI_flag.select_flag) { // Confirm - HMI_flag.heat_flag = true; + if (hmiFlag.select_flag) { // Confirm + hmiFlag.heat_flag = true; Goto_Main_Menu(); return card.openAndPrintFile(card.filename); } @@ -1912,7 +1912,7 @@ void Goto_ConfirmToPrint() { Goto_Popup(Preview_DrawFromSD, onClick_ConfirmToPrint); #else // Print SD file - HMI_flag.heat_flag = true; + hmiFlag.heat_flag = true; card.openAndPrintFile(card.filename); #endif } @@ -1934,7 +1934,7 @@ void Goto_ConfirmToPrint() { void WriteEeprom() { DWIN_DrawStatusLine(GET_TEXT_F(MSG_STORE_EEPROM)); - DWIN_UpdateLCD(); + dwinUpdateLCD(); DONE_BUZZ(settings.save()); } @@ -1967,7 +1967,7 @@ void RebootPrinter() { void Goto_Info_Menu() { Draw_Info_Menu(); - DWIN_UpdateLCD(); + dwinUpdateLCD(); HMI_SaveProcessID(WaitResponse); } @@ -2110,7 +2110,7 @@ void SetMoveZ() { HMI_value.axis = Z_AXIS; SetPFloatOnClick(Z_MIN_POS, Z_MAX_POS HMI_data.Baud115K ^= true; HMI_SetBaudRate(); Draw_Chkb_Line(CurrentMenu->line(), HMI_data.Baud115K); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } void SetBaud115K() { queue.inject(F("M575 P0 B115200")); HMI_data.Baud115K = true; } void SetBaud250K() { queue.inject(F("M575 P0 B250000")); HMI_data.Baud115K = false; } @@ -2118,7 +2118,7 @@ void SetMoveZ() { HMI_value.axis = Z_AXIS; SetPFloatOnClick(Z_MIN_POS, Z_MAX_POS #if HAS_LCD_BRIGHTNESS void ApplyBrightness() { ui.set_brightness(MenuData.Value); } - void LiveBrightness() { DWIN_LCD_Brightness(MenuData.Value); } + void LiveBrightness() { dwinLCDBrightness(MenuData.Value); } void SetBrightness() { SetIntOnClick(LCD_BRIGHTNESS_MIN, LCD_BRIGHTNESS_MAX, ui.brightness, ApplyBrightness, LiveBrightness); } void TurnOffBacklight() { HMI_SaveProcessID(WaitResponse); ui.set_brightness(0); DWIN_RedrawScreen(); } #endif @@ -2227,7 +2227,7 @@ void SelColor() { void LiveRGBColor() { HMI_value.Color[CurrentMenu->line() - 2] = MenuData.Value; uint16_t color = RGB(HMI_value.Color[0], HMI_value.Color[1], HMI_value.Color[2]); - DWIN_Draw_Rectangle(1, color, 20, 315, DWIN_WIDTH - 20, 335); + dwinDrawRectangle(1, color, 20, 315, DWIN_WIDTH - 20, 335); } void SetRGBColor() { const uint8_t color = static_cast(CurrentMenu->SelectedItem())->icon; @@ -2716,8 +2716,8 @@ void onDrawLanguage(MenuItemClass* menuitem, int8_t line) { void onDrawSelColorItem(MenuItemClass* menuitem, int8_t line) { const uint16_t color = *(uint16_t*)static_cast(menuitem)->value; - DWIN_Draw_Rectangle(0, HMI_data.Highlight_Color, ICOX + 1, MBASE(line) - 1 + 1, ICOX + 18, MBASE(line) - 1 + 18); - DWIN_Draw_Rectangle(1, color, ICOX + 2, MBASE(line) - 1 + 2, ICOX + 17, MBASE(line) - 1 + 17); + dwinDrawRectangle(0, HMI_data.Highlight_Color, ICOX + 1, MBASE(line) - 1 + 1, ICOX + 18, MBASE(line) - 1 + 18); + dwinDrawRectangle(1, color, ICOX + 2, MBASE(line) - 1 + 2, ICOX + 17, MBASE(line) - 1 + 17); onDrawMenuItem(menuitem, line); } @@ -2730,11 +2730,11 @@ void onDrawGetColorItem(MenuItemClass* menuitem, int8_t line) { case 2: color = RGB(0, 0, 31); break; // Blue default: color = 0; break; } - DWIN_Draw_Rectangle(0, HMI_data.Highlight_Color, ICOX + 1, MBASE(line) - 1 + 1, ICOX + 18, MBASE(line) - 1 + 18); - DWIN_Draw_Rectangle(1, color, ICOX + 2, MBASE(line) - 1 + 2, ICOX + 17, MBASE(line) - 1 + 17); + dwinDrawRectangle(0, HMI_data.Highlight_Color, ICOX + 1, MBASE(line) - 1 + 1, ICOX + 18, MBASE(line) - 1 + 18); + dwinDrawRectangle(1, color, ICOX + 2, MBASE(line) - 1 + 2, ICOX + 17, MBASE(line) - 1 + 17); DWINUI::Draw_String(LBLX, MBASE(line) - 1, menuitem->caption); Draw_Menu_IntValue(HMI_data.Background_Color, line, 4, HMI_value.Color[i]); - DWIN_Draw_HLine(HMI_data.SplitLine_Color, 16, MYPOS(line + 1), 240); + dwinDrawHLine(HMI_data.SplitLine_Color, 16, MYPOS(line + 1), 240); } #if DWIN_PID_TUNE @@ -3289,7 +3289,7 @@ void Draw_GetColor_Menu() { MENU_ITEM(2, MSG_COLORS_BLUE, onDrawGetColorItem, SetRGBColor); } UpdateMenu(GetColorMenu); - DWIN_Draw_Rectangle(1, *MenuData.P_Int, 20, 315, DWIN_WIDTH - 20, 335); + dwinDrawRectangle(1, *MenuData.P_Int, 20, 315, DWIN_WIDTH - 20, 335); } #if ALL(CASE_LIGHT_MENU, CASELIGHT_USES_BRIGHTNESS) @@ -3725,7 +3725,7 @@ void Draw_Steps_Menu() { void SetMeshActive() { set_bed_leveling_enabled(!planner.leveling_active); Draw_Chkb_Line(CurrentMenu->line(), planner.leveling_active); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } #if ENABLED(PREHEAT_BEFORE_LEVELING) diff --git a/Marlin/src/lcd/e3v2/proui/dwin.h b/Marlin/src/lcd/e3v2/proui/dwin.h index 2e967bc15f..126f8232ac 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.h +++ b/Marlin/src/lcd/e3v2/proui/dwin.h @@ -175,13 +175,13 @@ typedef struct { } HMI_flag_t; extern HMI_value_t HMI_value; -extern HMI_flag_t HMI_flag; +extern HMI_flag_t hmiFlag; extern uint8_t checkkey; extern millis_t dwin_heat_time; // Popups #if HAS_HOTEND || HAS_HEATED_BED - void DWIN_Popup_Temperature(const bool toohigh); + void dwinPopupTemperature(const bool toohigh); #endif #if ENABLED(POWER_LOSS_RECOVERY) void Popup_PowerLossRecovery(); @@ -260,11 +260,11 @@ void HMI_SaveProcessID(const uint8_t id); void HMI_SDCardUpdate(); void EachMomentUpdate(); void update_variable(); -void DWIN_InitScreen(); +void dwinInitScreen(); void DWIN_HandleScreen(); void DWIN_CheckStatusMessage(); -void DWIN_HomingStart(); -void DWIN_HomingDone(); +void dwinHomingStart(); +void dwinHomingDone(); #if HAS_MESH void DWIN_MeshUpdate(const int8_t cpos, const int8_t tpos, const_float_t zval); #endif diff --git a/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp b/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp index ad2cd27093..a82acdb3e9 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp @@ -44,20 +44,20 @@ // str: multi-bit data void DWIN_Draw_QR(uint8_t QR_Pixel, uint16_t x, uint16_t y, char *string) { size_t i = 0; - DWIN_Byte(i, 0x21); - DWIN_Word(i, x); - DWIN_Word(i, y); - DWIN_Byte(i, QR_Pixel); - DWIN_Text(i, string); - DWIN_Send(i); + dwinByte(i, 0x21); + dwinWord(i, x); + dwinWord(i, y); + dwinByte(i, QR_Pixel); + dwinText(i, string); + dwinSend(i); } // Draw an Icon with transparent background // libID: Icon library ID // picID: Icon ID // x/y: Upper-left point -void DWIN_ICON_Show(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) { - DWIN_ICON_Show(false, false, true, libID, picID, x, y); +void dwinIconShow(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) { + dwinIconShow(false, false, true, libID, picID, x, y); } // Copy area from current virtual display area to current screen @@ -66,14 +66,14 @@ void DWIN_ICON_Show(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) { // x/y: Screen paste point void DWIN_Frame_AreaCopy(uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y) { size_t i = 0; - DWIN_Byte(i, 0x26); - DWIN_Word(i, xStart); - DWIN_Word(i, yStart); - DWIN_Word(i, xEnd); - DWIN_Word(i, yEnd); - DWIN_Word(i, x); - DWIN_Word(i, y); - DWIN_Send(i); + dwinByte(i, 0x26); + dwinWord(i, xStart); + dwinWord(i, yStart); + dwinWord(i, xEnd); + dwinWord(i, yEnd); + dwinWord(i, x); + dwinWord(i, y); + dwinSend(i); } // Copy area from virtual display area to current screen @@ -86,15 +86,15 @@ void DWIN_Frame_AreaCopy(uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16 // x/y: Screen paste point void DWIN_Frame_AreaCopy(bool IBD, bool BIR, bool BFI, uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y) { size_t i = 0; - DWIN_Byte(i, 0x27); - DWIN_Byte(i, (IBD & 1) << 7 | (BIR & 1) << 6 | (BFI & 1) << 5 | cacheID); - DWIN_Word(i, xStart); - DWIN_Word(i, yStart); - DWIN_Word(i, xEnd); - DWIN_Word(i, yEnd); - DWIN_Word(i, x); - DWIN_Word(i, y); - DWIN_Send(i); + dwinByte(i, 0x27); + dwinByte(i, (IBD & 1) << 7 | (BIR & 1) << 6 | (BFI & 1) << 5 | cacheID); + dwinWord(i, xStart); + dwinWord(i, yStart); + dwinWord(i, xEnd); + dwinWord(i, yEnd); + dwinWord(i, x); + dwinWord(i, y); + dwinSend(i); } // Copy area from virtual display area to current screen with transparent background @@ -122,13 +122,13 @@ void DWIN_WriteToMem(uint8_t mem, uint16_t addr, uint16_t length, uint8_t *data) indx = block * max_size; to_send = _MIN(pending, max_size); size_t i = 0; - DWIN_Byte(i, 0x31); - DWIN_Byte(i, mem); - DWIN_Word(i, addr + indx); // start address of the data block + dwinByte(i, 0x31); + dwinByte(i, mem); + dwinWord(i, addr + indx); // start address of the data block ++i; - for (uint8_t j = 0; j < i; ++j) { LCD_SERIAL.write(DWIN_SendBuf[j]); delayMicroseconds(1); } // Buf header + for (uint8_t j = 0; j < i; ++j) { LCD_SERIAL.write(dwinSendBuf[j]); delayMicroseconds(1); } // Buf header for (uint16_t j = indx; j <= indx + to_send - 1; j++) LCD_SERIAL.write(*(data + j)); delayMicroseconds(1); // write block of data - for (uint8_t j = 0; j < 4; ++j) { LCD_SERIAL.write(DWIN_BufTail[j]); delayMicroseconds(1); } + for (uint8_t j = 0; j < 4; ++j) { LCD_SERIAL.write(dwinBufTail[j]); delayMicroseconds(1); } block++; pending -= to_send; } @@ -138,23 +138,23 @@ void DWIN_WriteToMem(uint8_t mem, uint16_t addr, uint16_t length, uint8_t *data) // picID: Picture memory space location, 0x00-0x0F, each space is 32Kbytes void DWIN_SRAMToPic(uint8_t picID) { size_t i = 0; - DWIN_Byte(i, 0x33); - DWIN_Byte(i, 0x5A); - DWIN_Byte(i, 0xA5); - DWIN_Byte(i, picID); - DWIN_Send(i); + dwinByte(i, 0x33); + dwinByte(i, 0x5A); + dwinByte(i, 0xA5); + dwinByte(i, picID); + dwinSend(i); } //--------------------------Test area ------------------------- //void DWIN_ReadSRAM(uint16_t addr, const uint8_t length, const char * const data) { // size_t i = 0; -// DWIN_Byte(i, 0x32); -// DWIN_Byte(i, 0x5A); // 0x5A Read from SRAM - 0xA5 Read from Flash -// DWIN_Word(i, addr); // 0x0000 to 0x7FFF +// dwinByte(i, 0x32); +// dwinByte(i, 0x5A); // 0x5A Read from SRAM - 0xA5 Read from Flash +// dwinWord(i, addr); // 0x0000 to 0x7FFF // const size_t len = _MIN(0xF0, length); -// DWIN_Byte(i, len); -// DWIN_Send(i); +// dwinByte(i, len); +// dwinSend(i); //} #endif // DWIN_LCD_PROUI diff --git a/Marlin/src/lcd/e3v2/proui/dwin_popup.cpp b/Marlin/src/lcd/e3v2/proui/dwin_popup.cpp index 552075f9dc..7b22069c69 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_popup.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin_popup.cpp @@ -45,27 +45,27 @@ uint16_t HighlightYPos = 280; void Draw_Select_Highlight(const bool sel, const uint16_t ypos) { HighlightYPos = ypos; - HMI_flag.select_flag = sel; + hmiFlag.select_flag = sel; const uint16_t c1 = sel ? HMI_data.Highlight_Color : HMI_data.PopupBg_Color, c2 = sel ? HMI_data.PopupBg_Color : HMI_data.Highlight_Color; - DWIN_Draw_Rectangle(0, c1, 25, ypos - 1, 126, ypos + 38); - DWIN_Draw_Rectangle(0, c1, 24, ypos - 2, 127, ypos + 39); - DWIN_Draw_Rectangle(0, c2, 145, ypos - 1, 246, ypos + 38); - DWIN_Draw_Rectangle(0, c2, 144, ypos - 2, 247, ypos + 39); + dwinDrawRectangle(0, c1, 25, ypos - 1, 126, ypos + 38); + dwinDrawRectangle(0, c1, 24, ypos - 2, 127, ypos + 39); + dwinDrawRectangle(0, c2, 145, ypos - 1, 246, ypos + 38); + dwinDrawRectangle(0, c2, 144, ypos - 2, 247, ypos + 39); } void DWIN_Popup_Continue(const uint8_t icon, FSTR_P const fmsg1, FSTR_P const fmsg2) { HMI_SaveProcessID(WaitResponse); DWIN_Draw_Popup(icon, fmsg1, fmsg2, BTN_Continue); // Button Continue - DWIN_UpdateLCD(); + dwinUpdateLCD(); } void DWIN_Popup_ConfirmCancel(const uint8_t icon, FSTR_P const fmsg2) { DWIN_Draw_Popup(ICON_BLTouch, F("Please confirm"), fmsg2); DWINUI::Draw_Button(BTN_Confirm, 26, 280); DWINUI::Draw_Button(BTN_Cancel, 146, 280); - Draw_Select_Highlight(HMI_flag.select_flag); - DWIN_UpdateLCD(); + Draw_Select_Highlight(hmiFlag.select_flag); + dwinUpdateLCD(); } void Goto_Popup(const popupDrawFunc_t fnDraw, const popupClickFunc_t fnClick/*=nullptr*/, const popupChangeFunc_t fnChange/*=nullptr*/) { @@ -73,7 +73,7 @@ void Goto_Popup(const popupDrawFunc_t fnDraw, const popupClickFunc_t fnClick/*=n popupClick = fnClick; popupChange = fnChange; HMI_SaveProcessID(Popup); - HMI_flag.select_flag = false; + hmiFlag.select_flag = false; popupDraw(); } @@ -87,7 +87,7 @@ void HMI_Popup() { if (encoder_diffState == ENCODER_DIFF_CW || encoder_diffState == ENCODER_DIFF_CCW) { const bool change = encoder_diffState != ENCODER_DIFF_CW; if (popupChange) popupChange(change); else Draw_Select_Highlight(change, HighlightYPos); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } } } diff --git a/Marlin/src/lcd/e3v2/proui/dwin_popup.h b/Marlin/src/lcd/e3v2/proui/dwin_popup.h index f24aac582e..5009f36b3b 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_popup.h +++ b/Marlin/src/lcd/e3v2/proui/dwin_popup.h @@ -44,8 +44,8 @@ void Goto_Popup(const popupDrawFunc_t fnDraw, const popupClickFunc_t fnClick=nul void HMI_Popup(); inline void Draw_Popup_Bkgd() { - DWIN_Draw_Rectangle(1, HMI_data.PopupBg_Color, 14, 60, 258, 330); - DWIN_Draw_Rectangle(0, HMI_data.Highlight_Color, 14, 60, 258, 330); + dwinDrawRectangle(1, HMI_data.PopupBg_Color, 14, 60, 258, 330); + dwinDrawRectangle(0, HMI_data.Highlight_Color, 14, 60, 258, 330); } template @@ -61,13 +61,13 @@ void DWIN_Draw_Popup(const uint8_t icon, T amsg1=nullptr, U amsg2=nullptr, uint8 template void DWIN_Show_Popup(const uint8_t icon, T amsg1=nullptr, U amsg2=nullptr, uint8_t button=0) { DWIN_Draw_Popup(icon, amsg1, amsg2, button); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } template void DWIN_Popup_Confirm(const uint8_t icon, T amsg1, U amsg2) { HMI_SaveProcessID(WaitResponse); DWIN_Draw_Popup(icon, amsg1, amsg2, BTN_Confirm); // Button Confirm - DWIN_UpdateLCD(); + dwinUpdateLCD(); } diff --git a/Marlin/src/lcd/e3v2/proui/dwinui.cpp b/Marlin/src/lcd/e3v2/proui/dwinui.cpp index f950d7451c..4ed6ce6783 100644 --- a/Marlin/src/lcd/e3v2/proui/dwinui.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwinui.cpp @@ -137,7 +137,7 @@ void DWINUI::MoveBy(xy_int_t point) { // Draw a Centered string using arbitrary x1 and x2 margins void DWINUI::Draw_CenteredString(bool bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint16_t x1, uint16_t x2, uint16_t y, const char * const string) { const uint16_t x = _MAX(0U, x2 + x1 - strlen_P(string) * fontWidth(fid)) / 2 - 1; - DWIN_Draw_String(bShow, fid, color, bColor, x, y, string); + dwinDrawString(bShow, fid, color, bColor, x, y, string); } // Draw a char @@ -147,7 +147,7 @@ void DWINUI::Draw_CenteredString(bool bShow, fontid_t fid, uint16_t color, uint1 // c: ASCII code of char void DWINUI::Draw_Char(uint16_t color, uint16_t x, uint16_t y, const char c) { const char string[2] = { c, 0}; - DWIN_Draw_String(false, fontid, color, backcolor, x, y, string, 1); + dwinDrawString(false, fontid, color, backcolor, x, y, string, 1); } // Draw a char at cursor position and increment cursor @@ -161,11 +161,11 @@ void DWINUI::Draw_Char(uint16_t color, const char c) { // *string: The string // rlimit: For draw less chars than string length use rlimit void DWINUI::Draw_String(const char * const string, uint16_t rlimit) { - DWIN_Draw_String(false, fontid, textcolor, backcolor, cursor.x, cursor.y, string, rlimit); + dwinDrawString(false, fontid, textcolor, backcolor, cursor.x, cursor.y, string, rlimit); MoveBy(strlen(string) * fontWidth(fontid), 0); } void DWINUI::Draw_String(uint16_t color, const char * const string, uint16_t rlimit) { - DWIN_Draw_String(false, fontid, color, backcolor, cursor.x, cursor.y, string, rlimit); + dwinDrawString(false, fontid, color, backcolor, cursor.x, cursor.y, string, rlimit); MoveBy(strlen(string) * fontWidth(fontid), 0); } @@ -181,7 +181,7 @@ void DWINUI::Draw_String(uint16_t color, const char * const string, uint16_t rli void DWINUI::Draw_Int(uint8_t bShow, bool signedMode, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, int32_t value) { char nstr[10]; sprintf_P(nstr, PSTR("%*li"), (signedMode ? iNum + 1 : iNum), value); - DWIN_Draw_String(bShow, fid, color, bColor, x, y, nstr); + dwinDrawString(bShow, fid, color, bColor, x, y, nstr); } // Draw a numeric float value @@ -196,7 +196,7 @@ void DWINUI::Draw_Int(uint8_t bShow, bool signedMode, fontid_t fid, uint16_t col // value: float value void DWINUI::Draw_Float(uint8_t bShow, bool signedMode, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { char nstr[10]; - DWIN_Draw_String(bShow, fid, color, bColor, x, y, dtostrf(value, iNum + (signedMode ? 2:1) + fNum, fNum, nstr)); + dwinDrawString(bShow, fid, color, bColor, x, y, dtostrf(value, iNum + (signedMode ? 2:1) + fNum, fNum, nstr)); } // ------------------------- Icons -------------------------------// @@ -209,13 +209,13 @@ void DWINUI::Draw_Float(uint8_t bShow, bool signedMode, fontid_t fid, uint16_t c void DWINUI::ICON_Show(bool BG, uint8_t icon, uint16_t x, uint16_t y) { const uint8_t libID = ICON TERN_(HAS_CUSTOMICONS, + (icon / 100)); const uint8_t picID = icon TERN_(HAS_CUSTOMICONS, % 100); - DWIN_ICON_Show(BG, false, !BG, libID, picID, x, y); + dwinIconShow(BG, false, !BG, libID, picID, x, y); } // ------------------------- Buttons ------------------------------// void DWINUI::Draw_Button(uint16_t color, uint16_t bcolor, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, const char * const caption) { - DWIN_Draw_Rectangle(1, bcolor, x1, y1, x2, y2); + dwinDrawRectangle(1, bcolor, x1, y1, x2, y2); Draw_CenteredString(0, fontid, color, bcolor, x1, x2, (y2 + y1 - fontHeight())/2, caption); } @@ -243,14 +243,14 @@ void DWINUI::Draw_Circle(uint16_t color, uint16_t x, uint16_t y, uint8_t r) { while (a <= b) { b = SQRT(sq(r) - sq(a)); if (a == 0) b--; - DWIN_Draw_Point(color, 1, 1, x + a, y + b); // Draw some sector 1 - DWIN_Draw_Point(color, 1, 1, x + b, y + a); // Draw some sector 2 - DWIN_Draw_Point(color, 1, 1, x + b, y - a); // Draw some sector 3 - DWIN_Draw_Point(color, 1, 1, x + a, y - b); // Draw some sector 4 - DWIN_Draw_Point(color, 1, 1, x - a, y - b); // Draw some sector 5 - DWIN_Draw_Point(color, 1, 1, x - b, y - a); // Draw some sector 6 - DWIN_Draw_Point(color, 1, 1, x - b, y + a); // Draw some sector 7 - DWIN_Draw_Point(color, 1, 1, x - a, y + b); // Draw some sector 8 + dwinDrawPoint(color, 1, 1, x + a, y + b); // Draw some sector 1 + dwinDrawPoint(color, 1, 1, x + b, y + a); // Draw some sector 2 + dwinDrawPoint(color, 1, 1, x + b, y - a); // Draw some sector 3 + dwinDrawPoint(color, 1, 1, x + a, y - b); // Draw some sector 4 + dwinDrawPoint(color, 1, 1, x - a, y - b); // Draw some sector 5 + dwinDrawPoint(color, 1, 1, x - b, y - a); // Draw some sector 6 + dwinDrawPoint(color, 1, 1, x - b, y + a); // Draw some sector 7 + dwinDrawPoint(color, 1, 1, x - a, y + b); // Draw some sector 8 a++; } } @@ -265,10 +265,10 @@ void DWINUI::Draw_FillCircle(uint16_t bcolor, uint16_t x,uint16_t y,uint8_t r) { while (a <= b) { b = SQRT(sq(r) - sq(a)); // b=sqrt(r*r-a*a); if (a == 0) b--; - DWIN_Draw_Line(bcolor, x-b,y-a,x+b,y-a); - DWIN_Draw_Line(bcolor, x-a,y-b,x+a,y-b); - DWIN_Draw_Line(bcolor, x-b,y+a,x+b,y+a); - DWIN_Draw_Line(bcolor, x-a,y+b,x+a,y+b); + dwinDrawLine(bcolor, x-b,y-a,x+b,y-a); + dwinDrawLine(bcolor, x-a,y-b,x+a,y-b); + dwinDrawLine(bcolor, x-b,y+a,x+b,y+a); + dwinDrawLine(bcolor, x-a,y+b,x+a,y+b); a++; } } @@ -322,13 +322,13 @@ uint16_t DWINUI::RainbowInt(int16_t val, int16_t minv, int16_t maxv) { // x/y: Upper-left point // mode : 0 : unchecked, 1 : checked void DWINUI::Draw_Checkbox(uint16_t color, uint16_t bcolor, uint16_t x, uint16_t y, bool checked=false) { - DWIN_Draw_Rectangle(0, color, x + 2, y + 2, x + 17, y + 17); - DWIN_Draw_Rectangle(1, checked ? color : bcolor, x + 6, y + 6, x + 13, y + 13); + dwinDrawRectangle(0, color, x + 2, y + 2, x + 17, y + 17); + dwinDrawRectangle(1, checked ? color : bcolor, x + 6, y + 6, x + 13, y + 13); } // Clear Menu by filling the menu area with background color void DWINUI::ClearMainArea() { - DWIN_Draw_Rectangle(1, backcolor, 0, TITLE_HEIGHT, DWIN_WIDTH - 1, STATUS_Y - 1); + dwinDrawRectangle(1, backcolor, 0, TITLE_HEIGHT, DWIN_WIDTH - 1, STATUS_Y - 1); } /* Title Class ==============================================================*/ diff --git a/Marlin/src/lcd/e3v2/proui/dwinui.h b/Marlin/src/lcd/e3v2/proui/dwinui.h index 85d969043f..fd59757d64 100644 --- a/Marlin/src/lcd/e3v2/proui/dwinui.h +++ b/Marlin/src/lcd/e3v2/proui/dwinui.h @@ -286,10 +286,10 @@ namespace DWINUI { // color: Line segment color // x/y: End point inline void LineTo(uint16_t color, uint16_t x, uint16_t y) { - DWIN_Draw_Line(color, cursor.x, cursor.y, x, y); + dwinDrawLine(color, cursor.x, cursor.y, x, y); } inline void LineTo(uint16_t x, uint16_t y) { - DWIN_Draw_Line(pencolor, cursor.x, cursor.y, x, y); + dwinDrawLine(pencolor, cursor.x, cursor.y, x, y); } // Extend a frame box @@ -462,28 +462,28 @@ namespace DWINUI { // x/y: Upper-left coordinate of the string // *string: The string inline void Draw_String(uint16_t x, uint16_t y, const char * const string) { - DWIN_Draw_String(false, fontid, textcolor, backcolor, x, y, string); + dwinDrawString(false, fontid, textcolor, backcolor, x, y, string); } inline void Draw_String(uint16_t x, uint16_t y, FSTR_P title) { - DWIN_Draw_String(false, fontid, textcolor, backcolor, x, y, FTOP(title)); + dwinDrawString(false, fontid, textcolor, backcolor, x, y, FTOP(title)); } inline void Draw_String(uint16_t color, uint16_t x, uint16_t y, const char * const string) { - DWIN_Draw_String(false, fontid, color, backcolor, x, y, string); + dwinDrawString(false, fontid, color, backcolor, x, y, string); } inline void Draw_String(uint16_t color, uint16_t x, uint16_t y, FSTR_P title) { - DWIN_Draw_String(false, fontid, color, backcolor, x, y, title); + dwinDrawString(false, fontid, color, backcolor, x, y, title); } inline void Draw_String(uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, const char * const string) { - DWIN_Draw_String(true, fontid, color, bgcolor, x, y, string); + dwinDrawString(true, fontid, color, bgcolor, x, y, string); } inline void Draw_String(uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, FSTR_P title) { - DWIN_Draw_String(true, fontid, color, bgcolor, x, y, title); + dwinDrawString(true, fontid, color, bgcolor, x, y, title); } inline void Draw_String(fontid_t fid, uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, const char * const string) { - DWIN_Draw_String(true, fid, color, bgcolor, x, y, string); + dwinDrawString(true, fid, color, bgcolor, x, y, string); } inline void Draw_String(fontid_t fid, uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, FSTR_P title) { - DWIN_Draw_String(true, fid, color, bgcolor, x, y, title); + dwinDrawString(true, fid, color, bgcolor, x, y, title); } // Draw a centered string using DWIN_WIDTH @@ -527,7 +527,7 @@ namespace DWINUI { // color: Rectangle color // frame: Box coordinates and size inline void Draw_Box(uint8_t mode, uint16_t color, frame_rect_t frame) { - DWIN_Draw_Box(mode, color, frame.x, frame.y, frame.w, frame.h); + dwinDrawBox(mode, color, frame.x, frame.y, frame.w, frame.h); } // Draw a circle diff --git a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp index 860bad74f3..81baa0a2de 100644 --- a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp +++ b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp @@ -60,7 +60,7 @@ void draw_es_label(FSTR_P const flabel=nullptr) { void draw_es_state(const bool is_hit) { const uint8_t LM = 130; DWINUI::cursor.x = LM; - DWIN_Draw_Rectangle(1, HMI_data.PopupBg_Color, LM, DWINUI::cursor.y, LM + 100, DWINUI::cursor.y + 20); + dwinDrawRectangle(1, HMI_data.PopupBg_Color, LM, DWINUI::cursor.y, LM + 100, DWINUI::cursor.y + 20); is_hit ? DWINUI::Draw_String(RGB(31,31,16), F(STR_ENDSTOP_HIT)) : DWINUI::Draw_String(RGB(16,63,16), F(STR_ENDSTOP_OPEN)); DWINUI::MoveBy(0, 25); } @@ -86,7 +86,7 @@ void ESDiagClass::Update() { TERN_(USE_Y_MIN, ES_REPORT(Y_MIN)); TERN_(USE_Y_MAX, ES_REPORT(Y_MAX)); TERN_(HAS_Z_MIN_PIN, ES_REPORT(Z_MIN)); TERN_(USE_Z_MAX, ES_REPORT(Z_MAX)); TERN_(HAS_FILAMENT_SENSOR, draw_es_state(READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE)); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } #endif // DWIN_LCD_PROUI && HAS_ESDIAG diff --git a/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp b/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp index 6cf3e9e135..b87ed2101f 100644 --- a/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp +++ b/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp @@ -199,7 +199,7 @@ void Preview_DrawFromSD() { char str_1[6] = ""; char str_2[6] = ""; char str_3[6] = ""; - DWIN_Draw_Rectangle(1, HMI_data.Background_Color, 0, 0, DWIN_WIDTH, STATUS_Y - 1); + dwinDrawRectangle(1, HMI_data.Background_Color, 0, 0, DWIN_WIDTH, STATUS_Y - 1); if (fileprop.time) { sprintf_P(buf, PSTR("Estimated time: %i:%02i"), (uint16_t)fileprop.time / 3600, ((uint16_t)fileprop.time % 3600) / 60); DWINUI::Draw_String(20, 10, buf); @@ -218,12 +218,12 @@ void Preview_DrawFromSD() { } DWINUI::Draw_Button(BTN_Print, 26, 290); DWINUI::Draw_Button(BTN_Cancel, 146, 290); - DWIN_ICON_Show(0, 0, 1, 21, 90, 0x00); + dwinIconShow(0, 0, 1, 21, 90, 0x00); Draw_Select_Highlight(true, 290); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } else { - HMI_flag.select_flag = 1; + hmiFlag.select_flag = 1; wait_for_user = false; } } diff --git a/Marlin/src/lcd/e3v2/proui/lockscreen.cpp b/Marlin/src/lcd/e3v2/proui/lockscreen.cpp index abf67ad9af..50874e0fc2 100644 --- a/Marlin/src/lcd/e3v2/proui/lockscreen.cpp +++ b/Marlin/src/lcd/e3v2/proui/lockscreen.cpp @@ -55,9 +55,9 @@ void LockScreenClass::draw() { DWINUI::Draw_CenteredString(Color_White, 180, GET_TEXT_F(MSG_LOCKSCREEN_LOCKED)); DWINUI::Draw_CenteredString(Color_White, 200, GET_TEXT_F(MSG_LOCKSCREEN_UNLOCK)); DWINUI::Draw_CenteredString(Color_White, 240, F("-> | <-")); - DWIN_Draw_Box(1, HMI_data.Barfill_Color, 0, 260, DWIN_WIDTH, 20); - DWIN_Draw_VLine(Color_Yellow, lock_pos * DWIN_WIDTH / 255, 260, 20); - DWIN_UpdateLCD(); + dwinDrawBox(1, HMI_data.Barfill_Color, 0, 260, DWIN_WIDTH, 20); + dwinDrawVLine(Color_Yellow, lock_pos * DWIN_WIDTH / 255, 260, 20); + dwinUpdateLCD(); } void LockScreenClass::onEncoder(EncoderState encoder_diffState) { @@ -67,9 +67,9 @@ void LockScreenClass::onEncoder(EncoderState encoder_diffState) { case ENCODER_DIFF_ENTER: unlocked = (lock_pos == 128); break; default: break; } - DWIN_Draw_Box(1, HMI_data.Barfill_Color, 0, 260, DWIN_WIDTH, 20); - DWIN_Draw_VLine(Color_Yellow, lock_pos * DWIN_WIDTH / 255, 260, 20); - DWIN_UpdateLCD(); + dwinDrawBox(1, HMI_data.Barfill_Color, 0, 260, DWIN_WIDTH, 20); + dwinDrawVLine(Color_Yellow, lock_pos * DWIN_WIDTH / 255, 260, 20); + dwinUpdateLCD(); } #endif // DWIN_LCD_PROUI && HAS_LOCKSCREEN diff --git a/Marlin/src/lcd/e3v2/proui/menus.cpp b/Marlin/src/lcd/e3v2/proui/menus.cpp index dfcfaa7bbc..870a4248ce 100644 --- a/Marlin/src/lcd/e3v2/proui/menus.cpp +++ b/Marlin/src/lcd/e3v2/proui/menus.cpp @@ -47,20 +47,20 @@ MenuData_t MenuData; // Menuitem Drawing functions ================================================= void Draw_Title(TitleClass* title) { - DWIN_Draw_Rectangle(1, HMI_data.TitleBg_Color, 0, 0, DWIN_WIDTH - 1, TITLE_HEIGHT - 1); + dwinDrawRectangle(1, HMI_data.TitleBg_Color, 0, 0, DWIN_WIDTH - 1, TITLE_HEIGHT - 1); if (title->frameid) DWIN_Frame_AreaCopy(title->frameid, title->frame.left, title->frame.top, title->frame.right, title->frame.bottom, 14, (TITLE_HEIGHT - (title->frame.bottom - title->frame.top)) / 2 - 1); else #if ENABLED(TITLE_CENTERED) DWINUI::Draw_CenteredString(false, DWIN_FONT_HEAD, HMI_data.TitleTxt_Color, HMI_data.TitleBg_Color, (TITLE_HEIGHT - DWINUI::fontHeight(DWIN_FONT_HEAD)) / 2 - 1, title->caption); #else - DWIN_Draw_String(false, DWIN_FONT_HEAD, HMI_data.TitleTxt_Color, HMI_data.TitleBg_Color, 14, (TITLE_HEIGHT - DWINUI::fontHeight(DWIN_FONT_HEAD)) / 2 - 1, title->caption); + dwinDrawString(false, DWIN_FONT_HEAD, HMI_data.TitleTxt_Color, HMI_data.TitleBg_Color, 14, (TITLE_HEIGHT - DWINUI::fontHeight(DWIN_FONT_HEAD)) / 2 - 1, title->caption); #endif } void Draw_Menu(MenuClass* menu) { DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); - DWIN_Draw_Rectangle(1, DWINUI::backcolor, 0, TITLE_HEIGHT, DWIN_WIDTH - 1, STATUS_Y - 1); + dwinDrawRectangle(1, DWINUI::backcolor, 0, TITLE_HEIGHT, DWIN_WIDTH - 1, STATUS_Y - 1); } void Draw_Menu_Cursor(const int8_t line) { @@ -84,7 +84,7 @@ void Draw_Menu_Line(const uint8_t line, const uint8_t icon /*=0*/, const char * if (label) DWINUI::Draw_String(LBLX, MBASE(line) - 1, (char*)label); if (more) DWINUI::Draw_Icon(ICON_More, VALX + 16, MBASE(line) - 3); if (selected) Draw_Menu_Cursor(line); - DWIN_Draw_HLine(HMI_data.SplitLine_Color, 16, MYPOS(line + 1), 240); + dwinDrawHLine(HMI_data.SplitLine_Color, 16, MYPOS(line + 1), 240); } void Draw_Menu_Line(const uint8_t line, const uint8_t icon /*=0*/, FSTR_P label /*=nullptr*/, bool more /*=false*/, bool selected /*=false*/) { @@ -98,7 +98,7 @@ void Draw_Chkb_Line(const uint8_t line, const bool checked) { void Show_Chkb_Line(const bool checked) { const uint8_t line = CurrentMenu->line(); DWINUI::Draw_Checkbox(HMI_data.Text_Color, HMI_data.Background_Color, VALX + 3 * DWINUI::fontWidth(), MBASE(line) - 1, checked); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } void Toggle_Chkb_Line(bool &checked) { @@ -116,7 +116,7 @@ void onDrawMenuItem(MenuItemClass* menuitem, int8_t line) { DWIN_Frame_AreaCopy(menuitem->frameid, menuitem->frame.left, menuitem->frame.top, menuitem->frame.right, menuitem->frame.bottom, LBLX, MBASE(line)); else if (menuitem->caption) DWINUI::Draw_String(LBLX, MBASE(line) - 1, menuitem->caption); - DWIN_Draw_HLine(HMI_data.SplitLine_Color, 16, MYPOS(line + 1), 240); + dwinDrawHLine(HMI_data.SplitLine_Color, 16, MYPOS(line + 1), 240); } void onDrawSubMenu(MenuItemClass* menuitem, int8_t line) { @@ -197,7 +197,7 @@ void SetOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, MenuData.Apply = Apply; MenuData.LiveUpdate = LiveUpdate; MenuData.Value = constrain(val, lo, hi); - EncoderRate.enabled = true; + encoderRate.enabled = true; } // Generic onclick event for integer values @@ -292,8 +292,8 @@ int8_t HMI_Get(bool draw) { const int32_t cval = MenuData.Value; EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState != ENCODER_DIFF_NO) { - if (Apply_Encoder(encoder_diffState, MenuData.Value)) { - EncoderRate.enabled = false; + if (applyEncoder(encoder_diffState, MenuData.Value)) { + encoderRate.enabled = false; if (draw) DrawItemEdit(false); checkkey = Menu; return 2; @@ -358,7 +358,7 @@ void MenuClass::draw() { for (int8_t i = 0; i < MenuItemCount; i++) MenuItems[i]->draw(i - topline); Draw_Menu_Cursor(line()); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } void MenuClass::onScroll(bool dir) { @@ -367,20 +367,20 @@ void MenuClass::onScroll(bool dir) { LIMIT(sel, 0, MenuItemCount - 1); if (sel != selected) { Erase_Menu_Cursor(line()); - DWIN_UpdateLCD(); + dwinUpdateLCD(); if ((sel - topline) == TROWS) { - DWIN_Frame_AreaMove(1, DWIN_SCROLL_UP, MLINE, DWINUI::backcolor, 0, TITLE_HEIGHT + 1, DWIN_WIDTH, STATUS_Y - 1); + dwinFrameAreaMove(1, DWIN_SCROLL_UP, MLINE, DWINUI::backcolor, 0, TITLE_HEIGHT + 1, DWIN_WIDTH, STATUS_Y - 1); topline++; MenuItems[sel]->draw(TROWS - 1); } if ((sel < topline)) { - DWIN_Frame_AreaMove(1, DWIN_SCROLL_DOWN, MLINE, DWINUI::backcolor, 0, TITLE_HEIGHT + 1, DWIN_WIDTH, STATUS_Y - 1); + dwinFrameAreaMove(1, DWIN_SCROLL_DOWN, MLINE, DWINUI::backcolor, 0, TITLE_HEIGHT + 1, DWIN_WIDTH, STATUS_Y - 1); topline--; MenuItems[sel]->draw(0); } selected = sel; Draw_Menu_Cursor(line()); - DWIN_UpdateLCD(); + dwinUpdateLCD(); } } diff --git a/Marlin/src/lcd/e3v2/proui/meshviewer.cpp b/Marlin/src/lcd/e3v2/proui/meshviewer.cpp index 80f1d35f40..1f42004d3f 100644 --- a/Marlin/src/lcd/e3v2/proui/meshviewer.cpp +++ b/Marlin/src/lcd/e3v2/proui/meshviewer.cpp @@ -57,8 +57,8 @@ void MeshViewerClass::DrawMesh(bed_mesh_t zval, const uint8_t sizex, const uint8 #define py(yp) (30 + DWIN_WIDTH - my - (yp) * sty) #define rm(z) ((z - minz) * (rmax - rmin) / _MAX(1, (maxz - minz)) + rmin) #define DrawMeshValue(xp, yp, zv) DWINUI::Draw_Signed_Float(font6x12, 1, 2, px(xp) - 18, py(yp) - 6, zv) - #define DrawMeshHLine(yp) DWIN_Draw_HLine(HMI_data.SplitLine_Color, px(0), py(yp), DWIN_WIDTH - 2 * mx) - #define DrawMeshVLine(xp) DWIN_Draw_VLine(HMI_data.SplitLine_Color, px(xp), py(sizey - 1), DWIN_WIDTH - 2 * my) + #define DrawMeshHLine(yp) dwinDrawHLine(HMI_data.SplitLine_Color, px(0), py(yp), DWIN_WIDTH - 2 * mx) + #define DrawMeshVLine(xp) dwinDrawVLine(HMI_data.SplitLine_Color, px(xp), py(sizey - 1), DWIN_WIDTH - 2 * my) int16_t maxz =-32000; int16_t minz = 32000; for (uint8_t y = 0; y < sizey; ++y) for (uint8_t x = 0; x < sizex; ++x) { const float v = isnan(zval[x][y]) ? 0 : round(zval[x][y] * 100); @@ -69,7 +69,7 @@ void MeshViewerClass::DrawMesh(bed_mesh_t zval, const uint8_t sizex, const uint8 max = (float)maxz / 100; min = (float)minz / 100; DWINUI::ClearMainArea(); - DWIN_Draw_Rectangle(0, HMI_data.SplitLine_Color, px(0), py(0), px(sizex - 1), py(sizey - 1)); + dwinDrawRectangle(0, HMI_data.SplitLine_Color, px(0), py(0), px(sizex - 1), py(sizey - 1)); for (uint8_t x = 1; x < sizex - 1; ++x) DrawMeshVLine(x); for (uint8_t y = 1; y < sizey - 1; ++y) DrawMeshHLine(y); for (uint8_t y = 0; y < sizey; ++y) { @@ -93,7 +93,7 @@ void MeshViewerClass::DrawMesh(bed_mesh_t zval, const uint8_t sizex, const uint8 sprintf_P(str_1, PSTR("-.%02i"), -zmesh[x][y]); break; case 0: - DWIN_Draw_String(false, font6x12, DWINUI::textcolor, DWINUI::backcolor, px(x) - 4, py(y) - 6, "0"); + dwinDrawString(false, font6x12, DWINUI::textcolor, DWINUI::backcolor, px(x) - 4, py(y) - 6, "0"); break; case 1 ... 99: sprintf_P(str_1, PSTR(".%02i"), zmesh[x][y]); @@ -103,7 +103,7 @@ void MeshViewerClass::DrawMesh(bed_mesh_t zval, const uint8_t sizex, const uint8 break; } if (str_1[0]) - DWIN_Draw_String(false, font6x12, DWINUI::textcolor, DWINUI::backcolor, px(x) - 12, py(y) - 6, str_1); + dwinDrawString(false, font6x12, DWINUI::textcolor, DWINUI::backcolor, px(x) - 12, py(y) - 6, str_1); } } } @@ -121,7 +121,7 @@ void MeshViewerClass::Draw(bool withsave /*= false*/) { if (withsave) { DWINUI::Draw_Button(BTN_Save, 26, 305); DWINUI::Draw_Button(BTN_Continue, 146, 305); - Draw_Select_Highlight(HMI_flag.select_flag, 305); + Draw_Select_Highlight(hmiFlag.select_flag, 305); } else DWINUI::Draw_Button(BTN_Continue, 86, 305); @@ -138,7 +138,7 @@ void MeshViewerClass::Draw(bool withsave /*= false*/) { } void Draw_MeshViewer() { MeshViewer.Draw(true); } -void onClick_MeshViewer() { if (HMI_flag.select_flag) SaveMesh(); HMI_ReturnScreen(); } +void onClick_MeshViewer() { if (hmiFlag.select_flag) SaveMesh(); HMI_ReturnScreen(); } void Goto_MeshViewer() { if (leveling_is_valid()) Goto_Popup(Draw_MeshViewer, onClick_MeshViewer); else HMI_ReturnScreen(); } #endif // DWIN_LCD_PROUI && HAS_MESH diff --git a/Marlin/src/lcd/e3v2/proui/plot.cpp b/Marlin/src/lcd/e3v2/proui/plot.cpp index 627dc39223..94f0dc055e 100644 --- a/Marlin/src/lcd/e3v2/proui/plot.cpp +++ b/Marlin/src/lcd/e3v2/proui/plot.cpp @@ -54,22 +54,22 @@ void PlotClass::Draw(const frame_rect_t &frame, const celsius_t max, const_float y2 = frame.y + frame.h - 1; r = round((y2) - ref * scale); DWINUI::Draw_Box(1, Plot_Bg_Color, frame); - for (uint8_t i = 1; i < 4; i++) if (i * 50 < frame.w) DWIN_Draw_VLine(Line_Color, i * 50 + frame.x, frame.y, frame.h); + for (uint8_t i = 1; i < 4; i++) if (i * 50 < frame.w) dwinDrawVLine(Line_Color, i * 50 + frame.x, frame.y, frame.h); DWINUI::Draw_Box(0, Color_White, DWINUI::ExtendFrame(frame, 1)); - DWIN_Draw_HLine(Color_Red, frame.x, r, frame.w); + dwinDrawHLine(Color_Red, frame.x, r, frame.w); } void PlotClass::Update(const_float_t value) { if (!scale) return; const uint16_t y = round((y2) - value * scale); if (grphpoints < grphframe.w) { - DWIN_Draw_Point(Color_Yellow, 1, 1, grphpoints + grphframe.x, y); + dwinDrawPoint(Color_Yellow, 1, 1, grphpoints + grphframe.x, y); } else { - DWIN_Frame_AreaMove(1, 0, 1, Plot_Bg_Color, grphframe.x, grphframe.y, x2, y2); - if ((grphpoints % 50) == 0) DWIN_Draw_VLine(Line_Color, x2 - 1, grphframe.y + 1, grphframe.h - 2); - DWIN_Draw_Point(Color_Red, 1, 1, x2 - 1, r); - DWIN_Draw_Point(Color_Yellow, 1, 1, x2 - 1, y); + dwinFrameAreaMove(1, 0, 1, Plot_Bg_Color, grphframe.x, grphframe.y, x2, y2); + if ((grphpoints % 50) == 0) dwinDrawVLine(Line_Color, x2 - 1, grphframe.y + 1, grphframe.h - 2); + dwinDrawPoint(Color_Red, 1, 1, x2 - 1, r); + dwinDrawPoint(Color_Yellow, 1, 1, x2 - 1, y); } grphpoints++; } diff --git a/Marlin/src/lcd/e3v2/proui/printstats.cpp b/Marlin/src/lcd/e3v2/proui/printstats.cpp index 7f45fa71ef..b99916dce1 100644 --- a/Marlin/src/lcd/e3v2/proui/printstats.cpp +++ b/Marlin/src/lcd/e3v2/proui/printstats.cpp @@ -82,7 +82,7 @@ void Goto_PrintStats() { // Print Stats Reset popup void Popup_ResetStats() { DWIN_Popup_ConfirmCancel(ICON_Info_0, GET_TEXT_F(MSG_RESET_STATS)); } void OnClick_ResetStats() { - if (HMI_flag.select_flag) PrintStatsClass::Reset(); + if (hmiFlag.select_flag) PrintStatsClass::Reset(); HMI_ReturnScreen(); } void PrintStatsReset() { Goto_Popup(Popup_ResetStats, OnClick_ResetStats); } diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index b56d21ae40..db5d0a635f 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -1667,7 +1667,7 @@ void MarlinUI::init() { TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_open(PROMPT_INFO, F("UI Aborted"), FPSTR(DISMISS_STR))); LCD_MESSAGE(MSG_PRINT_ABORTED); TERN_(HAS_MARLINUI_MENU, return_to_status()); - TERN_(DWIN_LCD_PROUI, HMI_flag.abort_flag = true); + TERN_(DWIN_LCD_PROUI, hmiFlag.abort_flag = true); } #if ALL(HAS_MARLINUI_MENU, PSU_CONTROL) From 5b8b8e005b87fad983314bb78bb62604bd8aa8af Mon Sep 17 00:00:00 2001 From: EvilGremlin <22657714+EvilGremlin@users.noreply.github.com> Date: Sat, 17 Jun 2023 23:49:22 +0300 Subject: [PATCH 558/659] =?UTF-8?q?=F0=9F=94=A7=20BLTOUCH=5FHS=5FMODE=20he?= =?UTF-8?q?x=20value=20check=20(#25992)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/SanityCheck.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index ab4b0e4e12..1ed6f97f98 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1285,8 +1285,8 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #if HAS_BLTOUCH_HS_MODE constexpr char hs[] = STRINGIFY(BLTOUCH_HS_MODE); - static_assert(!(strcmp(hs, "1") && strcmp(hs, "true") && strcmp(hs, "0") && strcmp(hs, "false")), \ - "BLTOUCH_HS_MODE must now be defined as true or false, indicating the default state."); + static_assert(!(strcmp(hs, "1") && strcmp(hs, "0x1") && strcmp(hs, "true") && strcmp(hs, "0") && strcmp(hs, "0x0") && strcmp(hs, "false")), \ + "BLTOUCH_HS_MODE must now be defined as true or false, indicating the default state."); #ifdef BLTOUCH_HS_EXTRA_CLEARANCE static_assert(BLTOUCH_HS_EXTRA_CLEARANCE >= 0, "BLTOUCH_HS_MODE requires BLTOUCH_HS_EXTRA_CLEARANCE >= 0."); #endif From 1e5c279da37270ec8d084cd9c46e6abec2f70a42 Mon Sep 17 00:00:00 2001 From: discip <53649486+discip@users.noreply.github.com> Date: Sat, 17 Jun 2023 22:53:03 +0200 Subject: [PATCH 559/659] =?UTF-8?q?=F0=9F=94=A8=20Fix=20marlin=5FSTM32H723?= =?UTF-8?q?VG=20mcu=20value=20(#25991)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25921 --- buildroot/share/PlatformIO/boards/marlin_STM32H723VG.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot/share/PlatformIO/boards/marlin_STM32H723VG.json b/buildroot/share/PlatformIO/boards/marlin_STM32H723VG.json index bf1fc961af..44a37e94ec 100644 --- a/buildroot/share/PlatformIO/boards/marlin_STM32H723VG.json +++ b/buildroot/share/PlatformIO/boards/marlin_STM32H723VG.json @@ -4,7 +4,7 @@ "cpu": "cortex-m7", "extra_flags": "-DSTM32H7xx -DSTM32H723xx", "f_cpu": "550000000L", - "mcu": "stm32h723vzt6", + "mcu": "stm32h723vgt6", "product_line": "STM32H723xx", "variant": "MARLIN_H723VG" }, From a3df3d40eec8e3d4b82feed5b92d50ba15b47acf Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Sat, 17 Jun 2023 22:55:02 +0200 Subject: [PATCH 560/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20G2/G3=20limiting?= =?UTF-8?q?=5Fspeed=20(#25988)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/motion/G2_G3.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/gcode/motion/G2_G3.cpp b/Marlin/src/gcode/motion/G2_G3.cpp index 1cae82f71c..b3a281bcc8 100644 --- a/Marlin/src/gcode/motion/G2_G3.cpp +++ b/Marlin/src/gcode/motion/G2_G3.cpp @@ -303,7 +303,7 @@ void plan_arc( // d) allows the print head to stop in the remining length of the curve within all configured maximum accelerations. // The last has to be calculated every time through the loop. const float limiting_accel = _MIN(planner.settings.max_acceleration_mm_per_s2[axis_p], planner.settings.max_acceleration_mm_per_s2[axis_q]), - limiting_speed = _MIN(planner.settings.max_feedrate_mm_s[axis_p], planner.settings.max_acceleration_mm_per_s2[axis_q]), + limiting_speed = _MIN(planner.settings.max_feedrate_mm_s[axis_p], planner.settings.max_feedrate_mm_s[axis_q]), limiting_speed_sqr = _MIN(sq(limiting_speed), limiting_accel * radius, sq(scaled_fr_mm_s)); float arc_mm_remaining = flat_mm; From c180a99c793493e10102b04b58239e32e793ea93 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sun, 18 Jun 2023 09:44:49 +1200 Subject: [PATCH 561/659] =?UTF-8?q?=F0=9F=93=9D=20Update=20BTT=20SKR=20V3?= =?UTF-8?q?=20board=20comments=20(#25973)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/boards.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index 12e72517a3..e9940fc344 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -469,8 +469,8 @@ #define BOARD_NUCLEO_F767ZI 6003 // ST NUCLEO-F767ZI Dev Board #define BOARD_BTT_SKR_SE_BX_V2 6004 // BigTreeTech SKR SE BX V2.0 (STM32H743II) #define BOARD_BTT_SKR_SE_BX_V3 6005 // BigTreeTech SKR SE BX V3.0 (STM32H743II) -#define BOARD_BTT_SKR_V3_0 6006 // BigTreeTech SKR V3.0 (STM32H743VG) -#define BOARD_BTT_SKR_V3_0_EZ 6007 // BigTreeTech SKR V3.0 EZ (STM32H743VG) +#define BOARD_BTT_SKR_V3_0 6006 // BigTreeTech SKR V3.0 (STM32H743VI / STM32H723VG) +#define BOARD_BTT_SKR_V3_0_EZ 6007 // BigTreeTech SKR V3.0 EZ (STM32H743VI / STM32H723VG) #define BOARD_BTT_OCTOPUS_MAX_EZ_V1_0 6008 // BigTreeTech Octopus Max EZ V1.0 (STM32H723ZE) // From 927b3cc41a0a53f95e1fca78430b116e0fc8806a Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 18 Jun 2023 00:25:52 +0000 Subject: [PATCH 562/659] [cron] Bump distribution date (2023-06-18) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index b51a4a671d..2b35143046 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-17" +//#define STRING_DISTRIBUTION_DATE "2023-06-18" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 66942676da..b9c8351e23 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-17" + #define STRING_DISTRIBUTION_DATE "2023-06-18" #endif /** From dd1792bdfce1ff5ff679f20dbf9bf66789e743b0 Mon Sep 17 00:00:00 2001 From: Andrew <18502096+classicrocker883@users.noreply.github.com> Date: Sun, 18 Jun 2023 00:19:28 -0400 Subject: [PATCH 563/659] =?UTF-8?q?=F0=9F=94=A8=20Update=20CMakeLists.txt?= =?UTF-8?q?=20(#25983)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + buildroot/share/cmake/CMakeLists.txt | 71 +++++++++++++++++++++++----- 2 files changed, 60 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index cff637d36e..fcdeb5e521 100755 --- a/.gitignore +++ b/.gitignore @@ -132,7 +132,9 @@ spi_flash.bin fs.img # CMake +buildroot/share/cmake/* CMakeLists.txt +!buildroot/share/cmake/CMakeLists.txt src/CMakeLists.txt CMakeListsPrivate.txt build/ diff --git a/buildroot/share/cmake/CMakeLists.txt b/buildroot/share/cmake/CMakeLists.txt index 1ed9091e01..b861f79b95 100644 --- a/buildroot/share/cmake/CMakeLists.txt +++ b/buildroot/share/cmake/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 2.8.12) #====================================================================# # Usage under Linux: # # # @@ -24,21 +24,67 @@ set(SCRIPT_BRANCH 1.0.2) #Set to wanted marlin-cmake release tag or branch if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake) - file(DOWNLOAD https://github.com/tohara/marlin-cmake/archive/${SCRIPT_BRANCH}.tar.gz - ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-src.tar.gz SHOW_PROGRESS) + file(DOWNLOAD https://github.com/tohara/marlin-cmake/archive/${SCRIPT_BRANCH}.tar.gz + ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-src.tar.gz SHOW_PROGRESS) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xvf ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-src.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) - - file(RENAME ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-${SCRIPT_BRANCH} ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake) - file(REMOVE ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-src.tar.gz) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xvf ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-src.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) + file(RENAME ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-${SCRIPT_BRANCH} ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake) + file(REMOVE ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-src.tar.gz) endif() -if(WIN32 AND NOT EXISTS ${CMAKE_BINARY_DIR}/make.exe) - file(COPY ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/resources/make.exe DESTINATION ${CMAKE_BINARY_DIR}/) +if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/modules/Arduino_SDK.cmake) + file(DOWNLOAD https://raw.githubusercontent.com/tohara/marlin-cmake/master/modules/Arduino_SDK.cmake + ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/modules/Arduino_SDK.cmake SHOW_PROGRESS) endif() +if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/modules/marlin_cmake_functions.cmake) + file(DOWNLOAD https://raw.githubusercontent.com/tohara/marlin-cmake/master/modules/marlin_cmake_functions.cmake + ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/modules/marlin_cmake_functions.cmake SHOW_PROGRESS) +endif() + +if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/Platform/Arduino.cmake) + file(DOWNLOAD https://raw.githubusercontent.com/tohara/marlin-cmake/master/Platform/Arduino.cmake + ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/Platform/Arduino.cmake SHOW_PROGRESS) +endif() + +if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/settings/marlin_boards.txt) + file(DOWNLOAD https://raw.githubusercontent.com/tohara/marlin-cmake/master/settings/marlin_boards.txt + ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/settings/marlin_boards.txt SHOW_PROGRESS) +endif() + +if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/toolchain/ArduinoToolchain.cmake) + file(DOWNLOAD https://raw.githubusercontent.com/tohara/marlin-cmake/master/toolchain/ArduinoToolchain.cmake + ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/toolchain/ArduinoToolchain.cmake SHOW_PROGRESS) +endif() + +if(WIN32) + if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/resources/make.exe) + file(DOWNLOAD https://raw.githubusercontent.com/tohara/marlin-cmake/master/resources/make.exe + ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/resources/make.exe SHOW_PROGRESS) + endif() +endif(WIN32) + +if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/arduino-1.8.19) + + file(DOWNLOAD https://downloads.arduino.cc/arduino-1.8.19-windows.zip + ${CMAKE_CURRENT_LIST_DIR}/arduino-1.8.19-windows.zip SHOW_PROGRESS) + + execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xvzf ${CMAKE_CURRENT_LIST_DIR}/arduino-1.8.19-windows.zip WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) + + file(REMOVE ${CMAKE_CURRENT_LIST_DIR}/arduino-1.8.19-windows.zip) + +endif() + +# Print CMake version +message("-- Running CMake version: " ${CMAKE_VERSION}) + +# Replace the CMake Ver. in the Arduino.cmake +file(READ "${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/Platform/Arduino.cmake" ORIGINAL_FILE_CONTENTS) +string(REPLACE "cmake_minimum_required(VERSION 2.8.5)" "cmake_minimum_required(VERSION 2.8.12)" NEW_FILE_CONTENTS "${ORIGINAL_FILE_CONTENTS}") +file(WRITE "${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/Platform/Arduino.cmake" "${NEW_FILE_CONTENTS}") + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/modules) #====================================================================# @@ -46,7 +92,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_LIST_DIR}/marlin-cma # It can also be set from command line. eg.: # # cmake .. -DARDUINO_SDK_PATH="/path/to/arduino-1.x.x" # #====================================================================# -#set(ARDUINO_SDK_PATH ${CMAKE_CURRENT_LIST_DIR}/arduino-1.6.8) +set(ARDUINO_SDK_PATH ${CMAKE_CURRENT_LIST_DIR}/arduino-1.8.19) #set(ARDUINO_SDK_PATH /Applications/Arduino.app/Contents/Java) #set(ARDUINO_SDK_PATH $HOME/ArduinoAddons/Arduino_1.6.x) #====================================================================# @@ -79,7 +125,6 @@ project(Marlin C CXX) print_board_list() print_programmer_list() - #====================================================================# # Get motherboard settings from Configuration.h # # setup_motherboard(TARGET Marlin_src_folder) # @@ -105,9 +150,9 @@ set(${PROJECT_NAME}_SRCS "${SOURCES};../../../Marlin/Marlin.ino") # cmake .. -DUPLOAD_PORT=/dev/ttyACM0 # #====================================================================# if(UPLOAD_PORT) - set(${PROJECT_NAME}_PORT ${UPLOAD_PORT}) + set(${PROJECT_NAME}_PORT ${UPLOAD_PORT}) else() - set(${PROJECT_NAME}_PORT /dev/ttyACM0) + set(${PROJECT_NAME}_PORT /dev/ttyACM0) endif() #====================================================================# From 441416728cd7f0e9b6ebf94f895d1d27fe59d25a Mon Sep 17 00:00:00 2001 From: Mark Date: Sun, 18 Jun 2023 17:18:08 +0800 Subject: [PATCH 564/659] =?UTF-8?q?=F0=9F=9A=B8=20Bed=20distance=20sensor?= =?UTF-8?q?=20improvements=20(#25847)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bedlevel/bdl/bdl.cpp | 235 ++++++++++++------- Marlin/src/feature/bedlevel/bdl/bdl.h | 16 +- Marlin/src/gcode/bedlevel/abl/G29.cpp | 64 ++++- Marlin/src/gcode/calibrate/G28.cpp | 6 - Marlin/src/gcode/config/M43.cpp | 12 +- Marlin/src/gcode/gcode.h | 1 - Marlin/src/gcode/probe/M102.cpp | 26 +- Marlin/src/lcd/extui/nextion/nextion_tft.cpp | 2 +- Marlin/src/module/endstops.cpp | 6 +- Marlin/src/module/motion.cpp | 10 + Marlin/src/module/probe.h | 14 +- Marlin/src/module/stepper/indirection.h | 2 +- 12 files changed, 271 insertions(+), 123 deletions(-) diff --git a/Marlin/src/feature/bedlevel/bdl/bdl.cpp b/Marlin/src/feature/bedlevel/bdl/bdl.cpp index 064a8ffbd2..14989a07d3 100644 --- a/Marlin/src/feature/bedlevel/bdl/bdl.cpp +++ b/Marlin/src/feature/bedlevel/bdl/bdl.cpp @@ -34,6 +34,7 @@ #include "../../../module/temperature.h" #include "../../../module/endstops.h" #include "../../babystep.h" +#include "../../../lcd/marlinui.h" // I2C software Master library for segment bed heating and bed distance sensor #include @@ -42,6 +43,8 @@ BDS_Leveling bdl; //#define DEBUG_OUT_BD +#define DEBUG_OUT ENABLED(DEBUG_OUT_BD) +#include "../../../core/debug_out.h" // M102 S-5 Read raw Calibrate data // M102 S-6 Start Calibrate @@ -49,144 +52,196 @@ BDS_Leveling bdl; // M102 S-1 Read sensor information #define MAX_BD_HEIGHT 4.0f +#define CMD_READ_VERSION 1016 #define CMD_START_READ_CALIBRATE_DATA 1017 #define CMD_END_READ_CALIBRATE_DATA 1018 #define CMD_START_CALIBRATE 1019 #define CMD_END_CALIBRATE 1021 -#define CMD_READ_VERSION 1016 - -I2C_SegmentBED BD_I2C_SENSOR; - #define BD_SENSOR_I2C_ADDR 0x3C +I2C_SegmentBED BD_I2C_SENSOR; +float BDS_Leveling::pos_zero_offset; int8_t BDS_Leveling::config_state; -uint8_t BDS_Leveling::homing; - -void BDS_Leveling::echo_name() { SERIAL_ECHOPGM("Bed Distance Leveling"); } void BDS_Leveling::init(uint8_t _sda, uint8_t _scl, uint16_t delay_s) { - int ret = BD_I2C_SENSOR.i2c_init(_sda, _scl, BD_SENSOR_I2C_ADDR, delay_s); - if (ret != 1) SERIAL_ECHOLNPGM("BD_I2C_SENSOR Init Fail return code:", ret); - config_state = 0; + config_state = BDS_IDLE; + const int ret = BD_I2C_SENSOR.i2c_init(_sda, _scl, BD_SENSOR_I2C_ADDR, delay_s); + if (ret != 1) SERIAL_ECHOLNPGM("BD Sensor Init Fail (", ret, ")"); + sync_plan_position(); + pos_zero_offset = planner.get_axis_position_mm(Z_AXIS) - current_position.z; + SERIAL_ECHOLNPGM("BD Sensor Zero Offset:", pos_zero_offset); +} + +bool BDS_Leveling::check(const uint16_t data, const bool raw_data/*=false*/, const bool hicheck/*=false*/) { + if (BD_I2C_SENSOR.BD_Check_OddEven(data) == 0) { + SERIAL_ECHOLNPGM("Read Error."); + return true; // error + } + if (raw_data == true) { + if (hicheck && (data & 0x3FF) > 550) + SERIAL_ECHOLNPGM("BD Sensor mounted too high!"); + else if (!good_data(data)) + SERIAL_ECHOLNPGM("Invalid data, please calibrate."); + else + return false; + } + else { + if ((data & 0x3FF) >= (MAX_BD_HEIGHT) * 100 - 10) + SERIAL_ECHOLNPGM("Out of Range."); + else + return false; + } + return true; // error +} + +float BDS_Leveling::interpret(const uint16_t data) { + return (data & 0x3FF) / 100.0f; } float BDS_Leveling::read() { - const uint16_t tmp = BD_I2C_SENSOR.BD_i2c_read(); - float BD_z = NAN; - if (BD_I2C_SENSOR.BD_Check_OddEven(tmp) && (tmp & 0x3FF) < 1020) - BD_z = (tmp & 0x3FF) / 100.0f; - return BD_z; + const uint16_t data = BD_I2C_SENSOR.BD_i2c_read(); + return check(data) ? NAN : interpret(data); } void BDS_Leveling::process() { - //if (config_state == 0) return; - static millis_t next_check_ms = 0; // starting at T=0 - static float z_pose = 0.0f; - const millis_t ms = millis(); - if (ELAPSED(ms, next_check_ms)) { // timed out (or first run) - next_check_ms = ms + (config_state < 0 ? 1000 : 100); // check at 1Hz or 10Hz - - unsigned short tmp = 0; - const float cur_z = planner.get_axis_position_mm(Z_AXIS); //current_position.z - static float old_cur_z = cur_z, - old_buf_z = current_position.z; + if (config_state == BDS_IDLE && printingIsActive()) return; + static millis_t next_check_ms = 0; // starting at T=0 + static float zpos = 0.0f; + const millis_t ms = millis(); + if (ELAPSED(ms, next_check_ms)) { // timed out (or first run) + next_check_ms = ms + (config_state < BDS_IDLE ? 200 : 50); // check at 5Hz or 20Hz + uint16_t tmp = 0; + const float cur_z = planner.get_axis_position_mm(Z_AXIS) - pos_zero_offset; + static float old_cur_z = cur_z, old_buf_z = current_position.z; tmp = BD_I2C_SENSOR.BD_i2c_read(); - if (BD_I2C_SENSOR.BD_Check_OddEven(tmp) && (tmp & 0x3FF) < 1020) { - const float z_sensor = (tmp & 0x3FF) / 100.0f; - if (cur_z < 0) config_state = 0; - //float abs_z = current_position.z > cur_z ? (current_position.z - cur_z) : (cur_z - current_position.z); + if (BD_I2C_SENSOR.BD_Check_OddEven(tmp) && good_data(tmp)) { + const float z_sensor = interpret(tmp); #if ENABLED(BABYSTEPPING) - if (cur_z < config_state * 0.1f - && config_state > 0 - && old_cur_z == cur_z - && old_buf_z == current_position.z - && z_sensor < (MAX_BD_HEIGHT) - ) { - babystep.set_mm(Z_AXIS, cur_z - z_sensor); - #if ENABLED(DEBUG_OUT_BD) - SERIAL_ECHOLNPGM("BD:", z_sensor, ", Z:", cur_z, "|", current_position.z); - #endif - } - else { - babystep.set_mm(Z_AXIS, 0); //if (old_cur_z <= cur_z) Z_DIR_WRITE(HIGH); - stepper.apply_directions(); + if (config_state > 0) { + if (cur_z < config_state * 0.1f + && old_cur_z == cur_z + && old_buf_z == current_position.z + && z_sensor < (MAX_BD_HEIGHT) - 0.1f + ) { + babystep.set_mm(Z_AXIS, cur_z - z_sensor); + DEBUG_ECHOLNPGM("BD:", z_sensor, ", Z:", cur_z, "|", current_position.z); + } + else { + babystep.set_mm(Z_AXIS, 0); //if (old_cur_z <= cur_z) Z_DIR_WRITE(HIGH); + //stepper.apply_directions(); // TODO: Remove this line as probably not needed + } } #endif + old_cur_z = cur_z; old_buf_z = current_position.z; endstops.bdp_state_update(z_sensor <= 0.01f); - //endstops.update(); + + #if HAS_STATUS_MESSAGE + static float old_z_sensor = 0; + if (old_z_sensor != z_sensor) { + old_z_sensor = z_sensor; + char tmp_1[32]; + sprintf_P(tmp_1, PSTR("BD:%d.%02dmm"), int(z_sensor), int(z_sensor * 100) % 100); + //SERIAL_ECHOLNPGM("Bed Dis:", z_sensor, "mm"); + ui.set_status(tmp_1, true); + } + #endif } else stepper.apply_directions(); - #if ENABLED(DEBUG_OUT_BD) - SERIAL_ECHOLNPGM("BD:", tmp & 0x3FF, ", Z:", cur_z, "|", current_position.z); - if (BD_I2C_SENSOR.BD_Check_OddEven(tmp) == 0) SERIAL_ECHOLNPGM("errorCRC"); - #endif + DEBUG_ECHOLNPGM("BD:", tmp & 0x3FF, " Z:", cur_z, "|", current_position.z); + if (TERN0(DEBUG_OUT_BD, BD_I2C_SENSOR.BD_Check_OddEven(tmp) == 0)) DEBUG_ECHOLNPGM("CRC error"); - if ((tmp & 0x3FF) > 1020) { + if (!good_data(tmp)) { BD_I2C_SENSOR.BD_i2c_stop(); safe_delay(10); } + // Read version. Usually used as a connection check + if (config_state == BDS_VERSION) { + config_state = BDS_IDLE; + BD_I2C_SENSOR.BD_i2c_write(CMD_READ_VERSION); + safe_delay(100); + char tmp_1[21]; + for (int i = 0; i < 19; i++) { + tmp_1[i] = BD_I2C_SENSOR.BD_i2c_read() & 0xFF; + safe_delay(50); + } + BD_I2C_SENSOR.BD_i2c_write(CMD_END_READ_CALIBRATE_DATA); + SERIAL_ECHOLNPGM("BD Sensor version:", tmp_1); + if (tmp_1[0] != 'V') SERIAL_ECHOLNPGM("Read Error. Check connection and delay."); + safe_delay(50); + } // read raw calibrate data - if (config_state == -5) { + else if (config_state == BDS_READ_RAW) { BD_I2C_SENSOR.BD_i2c_write(CMD_START_READ_CALIBRATE_DATA); - safe_delay(1000); + safe_delay(100); for (int i = 0; i < MAX_BD_HEIGHT * 10; i++) { tmp = BD_I2C_SENSOR.BD_i2c_read(); - SERIAL_ECHOLNPGM("Calibrate data:", i, ",", tmp & 0x3FF, ", check:", BD_I2C_SENSOR.BD_Check_OddEven(tmp)); - safe_delay(500); + SERIAL_ECHOLNPGM("Calibrate data:", i, ",", tmp & 0x3FF); + (void)check(tmp, true, i == 0); + safe_delay(50); } - config_state = 0; BD_I2C_SENSOR.BD_i2c_write(CMD_END_READ_CALIBRATE_DATA); - safe_delay(500); + safe_delay(50); + config_state = BDS_IDLE; } - else if (config_state <= -6) { // Start Calibrate - safe_delay(100); - if (config_state == -6) { - //BD_I2C_SENSOR.BD_i2c_write(1019); // begin calibrate - //delay(1000); - gcode.stepper_inactive_time = SEC_TO_MS(60 * 5); - gcode.process_subcommands_now(F("M17 Z")); - gcode.process_subcommands_now(F("G1 Z0.0")); - z_pose = 0; - safe_delay(1000); + else if (config_state <= BDS_CALIBRATE_START) { // Start Calibrate + safe_delay(10); + if (config_state == BDS_CALIBRATE_START) { + config_state = BDS_CALIBRATING; + REMEMBER(gsit, gcode.stepper_inactive_time, SEC_TO_MS(60 * 5)); + SERIAL_ECHOLNPGM("c_z0:", planner.get_axis_position_mm(Z_AXIS), "-", pos_zero_offset); + + // Move the z axis instead of enabling the Z axis with M17 + // TODO: Use do_blocking_move_to_z for synchronized move. + current_position.z = 0; + sync_plan_position(); + gcode.process_subcommands_now(F("G1Z0.05")); + safe_delay(300); + gcode.process_subcommands_now(F("G1Z0.00")); + safe_delay(300); + current_position.z = 0; + sync_plan_position(); + //safe_delay(1000); + + while ((planner.get_axis_position_mm(Z_AXIS) - pos_zero_offset) > 0.00001f) { + safe_delay(200); + SERIAL_ECHOLNPGM("waiting cur_z:", planner.get_axis_position_mm(Z_AXIS)); + } + zpos = 0.00001f; + safe_delay(100); BD_I2C_SENSOR.BD_i2c_write(CMD_START_CALIBRATE); // Begin calibrate - SERIAL_ECHOLNPGM("Begin calibrate"); - safe_delay(2000); - config_state = -7; + SERIAL_ECHOLNPGM("BD Sensor Calibrating..."); + safe_delay(200); } - else if (planner.get_axis_position_mm(Z_AXIS) < 10.0f) { - if (z_pose >= MAX_BD_HEIGHT) { + else if ((planner.get_axis_position_mm(Z_AXIS) - pos_zero_offset) < 10.0f) { + if (zpos >= MAX_BD_HEIGHT) { + config_state = BDS_IDLE; BD_I2C_SENSOR.BD_i2c_write(CMD_END_CALIBRATE); // End calibrate - SERIAL_ECHOLNPGM("End calibrate data"); - z_pose = 7; - config_state = 0; - safe_delay(1000); + SERIAL_ECHOLNPGM("BD Sensor calibrated."); + zpos = 7.0f; + safe_delay(500); } else { - float tmp_k = 0; - char tmp_1[30]; - sprintf_P(tmp_1, PSTR("G1 Z%d.%d"), int(z_pose), int(int(z_pose * 10) % 10)); + char tmp_1[32]; + // TODO: Use prepare_internal_move_to_destination to guarantee machine space + sprintf_P(tmp_1, PSTR("G1Z%d.%d"), int(zpos), int(zpos * 10) % 10); gcode.process_subcommands_now(tmp_1); - - SERIAL_ECHO(tmp_1); - SERIAL_ECHOLNPGM(" ,Z:", current_position.z); - - while (tmp_k < (z_pose - 0.1f)) { - tmp_k = planner.get_axis_position_mm(Z_AXIS); - safe_delay(1); + SERIAL_ECHO(tmp_1); SERIAL_ECHOLNPGM(", Z:", current_position.z); + for (float tmp_k = 0; abs(zpos - tmp_k) > 0.004f;) { + tmp_k = planner.get_axis_position_mm(Z_AXIS) - pos_zero_offset; + safe_delay(10); } - safe_delay(800); - tmp = (z_pose + 0.0001f) * 10; + safe_delay(zpos <= 0.4f ? 600 : 100); + tmp = uint16_t((zpos + 0.00001f) * 10); BD_I2C_SENSOR.BD_i2c_write(tmp); - SERIAL_ECHOLNPGM("w:", tmp, ",Zpose:", z_pose); - z_pose += 0.1001f; - //queue.enqueue_now_P(PSTR("G90")); + SERIAL_ECHOLNPGM("w:", tmp, ", Z:", zpos); + zpos += 0.1001f; } } } diff --git a/Marlin/src/feature/bedlevel/bdl/bdl.h b/Marlin/src/feature/bedlevel/bdl/bdl.h index 6307b1ab28..b3037bc1c2 100644 --- a/Marlin/src/feature/bedlevel/bdl/bdl.h +++ b/Marlin/src/feature/bedlevel/bdl/bdl.h @@ -23,14 +23,26 @@ #include +enum BDS_State : int8_t { + BDS_IDLE, + BDS_VERSION = -1, + BDS_READ_MM = -2, + BDS_HOMING_Z = -3, + BDS_READ_RAW = -5, + BDS_CALIBRATE_START = -6, + BDS_CALIBRATING = -7 +}; + class BDS_Leveling { public: static int8_t config_state; - static uint8_t homing; - static void echo_name(); + static float pos_zero_offset; static void init(uint8_t _sda, uint8_t _scl, uint16_t delay_s); static void process(); static float read(); + static float interpret(const uint16_t data); + static float good_data(const uint16_t data) { return (data & 0x3FF) < 1016; } + static bool check(const uint16_t data, const bool raw_data=false, const bool hicheck=false); }; extern BDS_Leveling bdl; diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index 4b2d21bc81..5632c6e467 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -42,6 +42,9 @@ #if ABL_PLANAR #include "../../../libs/vector_3.h" #endif +#if ENABLED(BD_SENSOR_PROBE_NO_STOP) + #include "../../../feature/bedlevel/bdl/bdl.h" +#endif #include "../../../lcd/marlinui.h" #if ENABLED(EXTENSIBLE_UI) @@ -693,7 +696,66 @@ G29_TYPE GcodeSuite::G29() { if (abl.verbose_level) SERIAL_ECHOLNPGM("Probing mesh point ", pt_index, "/", abl.abl_points, "."); TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " %i/%i"), GET_TEXT(MSG_PROBING_POINT), int(pt_index), int(abl.abl_points))); - abl.measured_z = faux ? 0.001f * random(-100, 101) : probe.probe_at_point(abl.probePos, raise_after, abl.verbose_level); + #if ENABLED(BD_SENSOR_PROBE_NO_STOP) + if (PR_INNER_VAR == inStart) { + char tmp_1[32]; + + // move to the start point of new line + abl.measured_z = faux ? 0.001f * random(-100, 101) : probe.probe_at_point(abl.probePos, raise_after, abl.verbose_level); + // Go to the end of the row/column ... and back up by one + // TODO: Why not just use... PR_INNER_VAR = inStop - inInc + for (PR_INNER_VAR = inStart; PR_INNER_VAR != inStop; PR_INNER_VAR += inInc); + PR_INNER_VAR -= inInc; + + // Get the coordinate of the resulting grid point + abl.probePos = abl.probe_position_lf + abl.gridSpacing * abl.meshCount.asFloat(); + + // Coordinate that puts the probe at the grid point + abl.probePos -= probe.offset_xy; + + // Put a G1 move into the buffer + // TODO: Instead of G1, we can just add the move directly to the planner... + // { + // destination = current_position; destination = abl.probePos; + // REMEMBER(fr, feedrate_mm_s, XY_PROBE_FEEDRATE_MM_S); + // prepare_line_to_destination(); + // } + sprintf_P(tmp_1, PSTR("G1X%d.%d Y%d.%d F%d"), + int(abl.probePos.x), int(abl.probePos.x * 10) % 10, + int(abl.probePos.y), int(abl.probePos.y * 10) % 10, + XY_PROBE_FEEDRATE + ); + gcode.process_subcommands_now(tmp_1); + + if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("destX: ", abl.probePos.x, " Y:", abl.probePos.y); + + // Reset the inner counter back to the start + PR_INNER_VAR = inStart; + + // Get the coordinate of the start of the row/column + abl.probePos = abl.probe_position_lf + abl.gridSpacing * abl.meshCount.asFloat(); + } + + // Wait around until the real axis position reaches the comparison point + // TODO: Use NEAR() because float is imprecise + constexpr AxisEnum axis = TERN(PROBE_Y_FIRST, Y_AXIS, X_AXIS); + const float cmp = abl.probePos[axis] - probe.offset_xy[axis]; + float pos; + for (;;) { + pos = planner.get_axis_position_mm(axis); + if (inInc > 0 ? (pos >= cmp) : (pos <= cmp)) break; + idle_no_sleep(); + } + //if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM_P(axis == Y_AXIS ? PSTR("Y=") : PSTR("X=", pos); + + abl.measured_z = current_position.z - bdl.read(); + if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("x_cur ", planner.get_axis_position_mm(X_AXIS), " z ", abl.measured_z); + + #else // !BD_SENSOR_PROBE_NO_STOP + + abl.measured_z = faux ? 0.001f * random(-100, 101) : probe.probe_at_point(abl.probePos, raise_after, abl.verbose_level); + + #endif if (isnan(abl.measured_z)) { set_bed_leveling_enabled(abl.reenable); diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index cb4f80618d..6fb062c170 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -36,10 +36,6 @@ #include "../../feature/bedlevel/bedlevel.h" #endif -#if ENABLED(BD_SENSOR) - #include "../../feature/bedlevel/bdl/bdl.h" -#endif - #if ENABLED(SENSORLESS_HOMING) #include "../../feature/tmc_util.h" #endif @@ -229,8 +225,6 @@ void GcodeSuite::G28() { return; } - TERN_(BD_SENSOR, bdl.config_state = 0); - #if ENABLED(FULL_REPORT_TO_HOST_FEATURE) const M_StateEnum old_grblstate = M_State_grbl; set_and_report_grblstate(M_HOMING); diff --git a/Marlin/src/gcode/config/M43.cpp b/Marlin/src/gcode/config/M43.cpp index 7657aadc6d..5ea89b7136 100644 --- a/Marlin/src/gcode/config/M43.cpp +++ b/Marlin/src/gcode/config/M43.cpp @@ -139,17 +139,15 @@ inline void servo_probe_test() { bool deploy_state = false, stow_state; #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - constexpr bool probe_hit_state = Z_MIN_ENDSTOP_HIT_STATE; #define PROBE_TEST_PIN Z_MIN_PIN #define _PROBE_PREF "Z_MIN" #else - constexpr bool probe_hit_state = Z_MIN_PROBE_ENDSTOP_HIT_STATE; #define PROBE_TEST_PIN Z_MIN_PROBE_PIN #define _PROBE_PREF "Z_MIN_PROBE" #endif SERIAL_ECHOLNPGM(". Probe " _PROBE_PREF "_PIN: ", PROBE_TEST_PIN); - serial_ternary(F(". " _PROBE_PREF "_ENDSTOP_HIT_STATE: "), probe_hit_state, F("HIGH"), F("LOW")); + serial_ternary(F(". " _PROBE_PREF "_ENDSTOP_HIT_STATE: "), PROBE_HIT_STATE, F("HIGH"), F("LOW")); SERIAL_EOL(); SET_INPUT_PULLUP(PROBE_TEST_PIN); @@ -166,11 +164,11 @@ inline void servo_probe_test() { SERIAL_ECHOLNPGM(". Check for BLTOUCH"); bltouch._reset(); bltouch._stow(); - if (READ(PROBE_TEST_PIN) != probe_hit_state) { + if (!PROBE_TRIGGERED()) { bltouch._set_SW_mode(); - if (READ(PROBE_TEST_PIN) == probe_hit_state) { + if (PROBE_TRIGGERED()) { bltouch._deploy(); - if (READ(PROBE_TEST_PIN) != probe_hit_state) { + if (!PROBE_TRIGGERED()) { bltouch._stow(); SERIAL_ECHOLNPGM("= BLTouch Classic 1.2, 1.3, Smart 1.0, 2.0, 2.2, 3.0, 3.1 detected."); // Check for a 3.1 by letting the user trigger it, later @@ -198,7 +196,7 @@ inline void servo_probe_test() { stow_state = READ(PROBE_TEST_PIN); } - if (probe_hit_state == deploy_state) SERIAL_ECHOLNPGM("WARNING: " _PROBE_PREF "_ENDSTOP_HIT_STATE is probably wrong."); + if (PROBE_HIT_STATE == deploy_state) SERIAL_ECHOLNPGM("WARNING: " _PROBE_PREF "_ENDSTOP_HIT_STATE is probably wrong."); if (deploy_state != stow_state) { SERIAL_ECHOLNPGM("= Mechanical Switch detected"); diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 73729491ad..4bd0ec2fec 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -720,7 +720,6 @@ private: #if ENABLED(BD_SENSOR) static void M102(); - static void M102_report(const bool forReplay=true); #endif #if HAS_HOTEND diff --git a/Marlin/src/gcode/probe/M102.cpp b/Marlin/src/gcode/probe/M102.cpp index b70c9aed18..f24a723ed7 100644 --- a/Marlin/src/gcode/probe/M102.cpp +++ b/Marlin/src/gcode/probe/M102.cpp @@ -30,6 +30,7 @@ #include "../gcode.h" #include "../../feature/bedlevel/bdl/bdl.h" +#include "../../MarlinCore.h" // for printingIsActive /** * M102: Configure the Bed Distance Sensor @@ -38,20 +39,25 @@ * M102 S0 : Disable adjustable Z height. * * Negative S values are commands: - * M102 S-1 : Read sensor information + * M102 S-1 : Read BDsensor version + * M102 S-2 : Read BDsensor distance value * M102 S-5 : Read raw Calibration data * M102 S-6 : Start Calibration */ void GcodeSuite::M102() { - if (parser.seenval('S')) - bdl.config_state = parser.value_int(); - else - M102_report(); -} - -void GcodeSuite::M102_report(const bool forReplay/*=true*/) { - report_heading(forReplay, F("Bed Distance Sensor")); - SERIAL_ECHOLNPGM(" M102 S", bdl.config_state); + if (bdl.config_state < BDS_IDLE) { + SERIAL_ECHOLNPGM("BDsensor is busy:", bdl.config_state); + return; + } + if (parser.seenval('S')) { + const int8_t command = parser.value_int(); + if (command == BDS_READ_MM) + SERIAL_ECHOLNPGM("Bed Distance:", bdl.read(), "mm"); + else if ((command < BDS_IDLE) && printingIsActive()) + return; + else + bdl.config_state = command; + } } #endif // BD_SENSOR diff --git a/Marlin/src/lcd/extui/nextion/nextion_tft.cpp b/Marlin/src/lcd/extui/nextion/nextion_tft.cpp index 0327a2f137..87a6544e5e 100644 --- a/Marlin/src/lcd/extui/nextion/nextion_tft.cpp +++ b/Marlin/src/lcd/extui/nextion/nextion_tft.cpp @@ -451,7 +451,7 @@ void NextionTFT::panelInfo(uint8_t req) { SEND_VALasTXT("z2", READ(Z2_MAX_PIN) == Z2_MAX_ENDSTOP_HIT_STATE ? "triggered" : "open"); #endif #if HAS_BED_PROBE - //SEND_VALasTXT("bltouch", READ(Z_MIN_PROBE_PIN) == Z_MIN_PROBE_ENDSTOP_HIT_STATE ? "triggered" : "open"); + //SEND_VALasTXT("bltouch", PROBE_TRIGGERED() ? "triggered" : "open"); #else SEND_NA("bltouch"); #endif diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 63689bf7ca..3c1fcc72a9 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -65,7 +65,11 @@ Endstops::endstop_mask_t Endstops::live_state = 0; #if ENABLED(BD_SENSOR) bool Endstops::bdp_state; // = false - #define READ_ENDSTOP(P) ((P == Z_MIN_PIN) ? bdp_state : READ(P)) + #if HOMING_Z_WITH_PROBE + #define READ_ENDSTOP(P) ((P == TERN(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, Z_MIN_PIN, Z_MIN_PROBE_PIN)) ? bdp_state : READ(P)) + #else + #define READ_ENDSTOP(P) READ(P) + #endif #else #define READ_ENDSTOP(P) READ(P) #endif diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index d7b6d76fae..dd761a56bb 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -73,6 +73,11 @@ #define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE) #include "../core/debug_out.h" + +#if ENABLED(BD_SENSOR) + #include "../feature/bedlevel/bdl/bdl.h" +#endif + // Relative Mode. Enable with G91, disable with G90. bool relative_mode; // = false; @@ -2131,6 +2136,7 @@ void prepare_line_to_destination() { if (axis == Z_AXIS) { if (TERN0(BLTOUCH, bltouch.deploy())) return; // BLTouch was deployed above, but get the alarm state. if (TERN0(PROBE_TARE, probe.tare())) return; + TERN_(BD_SENSOR, bdl.config_state = BDS_HOMING_Z); } #endif @@ -2381,6 +2387,10 @@ void prepare_line_to_destination() { #endif + #if ALL(BD_SENSOR, HOMING_Z_WITH_PROBE) + if (axis == Z_AXIS) bdl.config_state = BDS_IDLE; + #endif + // Put away the Z probe if (TERN0(HOMING_Z_WITH_PROBE, axis == Z_AXIS && probe.stow())) return; diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 05a97d9470..028a7589cc 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -45,11 +45,19 @@ }; #endif -#if USE_Z_MIN_PROBE - #define PROBE_TRIGGERED() (READ(Z_MIN_PROBE_PIN) == Z_MIN_PROBE_ENDSTOP_HIT_STATE) +#if ENABLED(BD_SENSOR) + #define PROBE_READ() bdp_state +#elif USE_Z_MIN_PROBE + #define PROBE_READ() READ(Z_MIN_PROBE_PIN) #else - #define PROBE_TRIGGERED() (READ(Z_MIN_PIN) == Z_MIN_ENDSTOP_HIT_STATE) + #define PROBE_READ() READ(Z_MIN_PIN) #endif +#if USE_Z_MIN_PROBE + #define PROBE_HIT_STATE Z_MIN_PROBE_ENDSTOP_HIT_STATE +#else + #define PROBE_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE +#endif +#define PROBE_TRIGGERED() (PROBE_READ() == PROBE_HIT_STATE) // In BLTOUCH HS mode, the probe travels in a deployed state. #define Z_TWEEN_SAFE_CLEARANCE SUM_TERN(BLTOUCH, Z_CLEARANCE_BETWEEN_PROBES, bltouch.z_extra_clearance()) diff --git a/Marlin/src/module/stepper/indirection.h b/Marlin/src/module/stepper/indirection.h index 99a677c81f..d48ff8ae93 100644 --- a/Marlin/src/module/stepper/indirection.h +++ b/Marlin/src/module/stepper/indirection.h @@ -997,7 +997,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #if HAS_Z_AXIS #define ENABLE_AXIS_Z() if (SHOULD_ENABLE(z)) { ENABLE_STEPPER_Z(); ENABLE_STEPPER_Z2(); ENABLE_STEPPER_Z3(); ENABLE_STEPPER_Z4(); AFTER_CHANGE(z, true); } - #define DISABLE_AXIS_Z() if (SHOULD_DISABLE(z)) { DISABLE_STEPPER_Z(); DISABLE_STEPPER_Z2(); DISABLE_STEPPER_Z3(); DISABLE_STEPPER_Z4(); AFTER_CHANGE(z, false); set_axis_untrusted(Z_AXIS); Z_RESET(); TERN_(BD_SENSOR, bdl.config_state = 0); } + #define DISABLE_AXIS_Z() if (SHOULD_DISABLE(z)) { DISABLE_STEPPER_Z(); DISABLE_STEPPER_Z2(); DISABLE_STEPPER_Z3(); DISABLE_STEPPER_Z4(); AFTER_CHANGE(z, false); set_axis_untrusted(Z_AXIS); Z_RESET(); TERN_(BD_SENSOR, bdl.config_state = BDS_IDLE); } #else #define ENABLE_AXIS_Z() NOOP #define DISABLE_AXIS_Z() NOOP From d79b42c710cadcc7dede4e806e94f16c6451d3d7 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 19 Jun 2023 00:24:00 +0000 Subject: [PATCH 565/659] [cron] Bump distribution date (2023-06-19) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 2b35143046..55922c87dc 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-18" +//#define STRING_DISTRIBUTION_DATE "2023-06-19" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index b9c8351e23..b915603ba1 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-18" + #define STRING_DISTRIBUTION_DATE "2023-06-19" #endif /** From 733209f9a2cfa347e072738c76860c08a4e74500 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Sun, 18 Jun 2023 22:12:50 -0700 Subject: [PATCH 566/659] =?UTF-8?q?=F0=9F=94=A7=20MPC=20adjustments=20(#25?= =?UTF-8?q?986)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index b905b24688..b573d2d9ec 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -686,13 +686,13 @@ /** * Model Predictive Control for hotend * - * Use a physical model of the hotend to control temperature. When configured correctly - * this gives better responsiveness and stability than PID and it also removes the need - * for PID_EXTRUSION_SCALING and PID_FAN_SCALING. Use M306 T to autotune the model. + * Use a physical model of the hotend to control temperature. When configured correctly this gives + * better responsiveness and stability than PID and removes the need for PID_EXTRUSION_SCALING + * and PID_FAN_SCALING. Enable MPC_AUTOTUNE and use M306 T to autotune the model. * @section mpctemp */ #if ENABLED(MPCTEMP) - //#define MPC_AUTOTUNE // Include a method to do MPC auto-tuning (~6.3K bytes of flash) + #define MPC_AUTOTUNE // Include a method to do MPC auto-tuning (~6.3K bytes of flash) //#define MPC_EDIT_MENU // Add MPC editing to the "Advanced Settings" menu. (~1.3K bytes of flash) //#define MPC_AUTOTUNE_MENU // Add MPC auto-tuning to the "Advanced Settings" menu. (~350 bytes of flash) @@ -715,8 +715,12 @@ //#define MPC_FAN_0_ACTIVE_HOTEND #endif + // Filament Heat Capacity (joules/kelvin/mm) + // Set at runtime with M306 H #define FILAMENT_HEAT_CAPACITY_PERMM { 5.6e-3f } // 0.0056 J/K/mm for 1.75mm PLA (0.0149 J/K/mm for 2.85mm PLA). - //#define FILAMENT_HEAT_CAPACITY_PERMM { 3.6e-3f } // 0.0036 J/K/mm for 1.75mm PETG (0.0094 J/K/mm for 2.85mm PETG). + // 0.0036 J/K/mm for 1.75mm PETG (0.0094 J/K/mm for 2.85mm PETG). + // 0.00515 J/K/mm for 1.75mm ABS (0.0137 J/K/mm for 2.85mm ABS). + // 0.00522 J/K/mm for 1.75mm Nylon (0.0138 J/K/mm for 2.85mm Nylon). // Advanced options #define MPC_SMOOTHING_FACTOR 0.5f // (0.0...1.0) Noisy temperature sensors may need a lower value for stabilization. From 91401d7e5f36f1b2d27bfbeef96ae54953c3d3ae Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 19 Jun 2023 15:05:51 -0500 Subject: [PATCH 567/659] =?UTF-8?q?=F0=9F=94=A7=20Move=20non-DUE=20conditi?= =?UTF-8?q?ons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/SanityCheck.h | 7 +++++++ Marlin/src/pins/sam/pins_ALLIGATOR_R2.h | 1 - 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 1ed6f97f98..049a38a6a4 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -127,6 +127,13 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #undef _ISMAX_1 #undef _ISSNS_1 +/** + * RADDS is forbidden for non-DUE boards, for now. + */ +#if ENABLED(RADDS_DISPLAY) && !defined(__SAM3X8E__) + #error "RADDS_DISPLAY is currently only incompatible with DUE boards." +#endif + /** * Heated Bed requirements */ diff --git a/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h b/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h index 87a1260c40..312745f11d 100644 --- a/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h +++ b/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h @@ -153,7 +153,6 @@ #define LCD_PINS_EN 15 #define LCD_PINS_D4 19 #define BEEPER_PIN 64 - #undef UI_VOLTAGE_LEVEL #define UI_VOLTAGE_LEVEL 1 #endif From 2dc76689ea186a6c6334a728253ede95c6c6203e Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 20 Jun 2023 00:21:56 +0000 Subject: [PATCH 568/659] [cron] Bump distribution date (2023-06-20) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 55922c87dc..c56209a2dc 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-19" +//#define STRING_DISTRIBUTION_DATE "2023-06-20" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index b915603ba1..76f1400e82 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-19" + #define STRING_DISTRIBUTION_DATE "2023-06-20" #endif /** From 8c9172cf5d21fd57aed16edbe825a872ae064ad0 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 22 Jun 2023 02:54:21 -0500 Subject: [PATCH 569/659] =?UTF-8?q?=F0=9F=8D=BB=20Fixed-Time=20Motion=20in?= =?UTF-8?q?tegration=20(#25719)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/types.h | 105 ++- Marlin/src/feature/mixing.h | 12 +- Marlin/src/gcode/feature/ft_motion/M493.cpp | 61 +- Marlin/src/inc/SanityCheck.h | 8 +- Marlin/src/module/ft_motion.cpp | 727 ++++++++------------ Marlin/src/module/ft_motion.h | 84 +-- Marlin/src/module/ft_types.h | 23 +- Marlin/src/module/motion.cpp | 19 + Marlin/src/module/stepper.cpp | 165 +++-- Marlin/src/module/stepper/indirection.h | 6 + buildroot/tests/STM32F103RC_btt | 2 +- 11 files changed, 608 insertions(+), 604 deletions(-) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 3168322860..6c0983694c 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -44,17 +44,19 @@ template struct IF { typedef L type; }; #define NUM_AXIS_ARRAY_1(V) { NUM_AXIS_LIST_1(V) } #define NUM_AXIS_ARGS(T) NUM_AXIS_LIST(T x, T y, T z, T i, T j, T k, T u, T v, T w) #define NUM_AXIS_ELEM(O) NUM_AXIS_LIST(O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w) -#define NUM_AXIS_DEFS(T,V) NUM_AXIS_LIST(T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V) +#define NUM_AXIS_DECL(T,V) NUM_AXIS_LIST(T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V) #define MAIN_AXIS_NAMES NUM_AXIS_LIST(X, Y, Z, I, J, K, U, V, W) #define STR_AXES_MAIN NUM_AXIS_GANG("X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W) #if NUM_AXES #define NUM_AXES_SEP , #define MAIN_AXIS_MAP(F) MAP(F, MAIN_AXIS_NAMES) + #define OPTARGS_NUM(T) , NUM_AXIS_ARGS(T) #define OPTARGS_LOGICAL(T) , LOGICAL_AXIS_ARGS(T) #else #define NUM_AXES_SEP #define MAIN_AXIS_MAP(F) + #define OPTARGS_NUM(T) #define OPTARGS_LOGICAL(T) #endif @@ -531,8 +533,8 @@ template struct XYZval { union { #if NUM_AXES - struct { T NUM_AXIS_ARGS(); }; - struct { T NUM_AXIS_LIST(a, b, c, _i, _j, _k, _u, _v, _w); }; + struct { NUM_AXIS_CODE(T x, T y, T z, T i, T j, T k, T u, T v, T w); }; + struct { NUM_AXIS_CODE(T a, T b, T c, T _i, T _j, T _k, T _u, T _v, T _w); }; #endif T pos[NUM_AXES]; }; @@ -820,6 +822,101 @@ struct XYZEval { #include // for memset +template +struct XYZarray { + typedef T el[SIZE]; + union { + el data[LOGICAL_AXES]; + struct { NUM_AXIS_CODE(T x, T y, T z, T i, T j, T k, T u, T v, T w); }; + struct { NUM_AXIS_CODE(T a, T b, T c, T _i, T _j, T _k, T _u, T _v, T _w); }; + }; + FI void reset() { ZERO(data); } + + FI void set(const int n, const XYval p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y,,,,,,,); } + FI void set(const int n, const XYZval p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y, z[n]=p.z, i[n]=p.i, j[n]=p.j, k[n]=p.k, u[n]=p.u, v[n]=p.v, w[n]=p.w ); } + FI void set(const int n, const XYZEval p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y, z[n]=p.z, i[n]=p.i, j[n]=p.j, k[n]=p.k, u[n]=p.u, v[n]=p.v, w[n]=p.w ); } + + // Setter for all individual args + FI void set(const int n OPTARGS_NUM(const T)) { NUM_AXIS_CODE(a[n] = x, b[n] = y, c[n] = z, _i[n] = i, _j[n] = j, _k[n] = k, _u[n] = u, _v[n] = v, _w[n] = w); } + + // Setters with fewer elements leave the rest untouched + #if HAS_Y_AXIS + FI void set(const int n, const T px) { x[n] = px; } + #endif + #if HAS_Z_AXIS + FI void set(const int n, const T px, const T py) { x[n] = px; y[n] = py; } + #endif + #if HAS_I_AXIS + FI void set(const int n, const T px, const T py, const T pz) { x[n] = px; y[n] = py; z[n] = pz; } + #endif + #if HAS_J_AXIS + FI void set(const int n, const T px, const T py, const T pz, const T pi) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; } + #endif + #if HAS_K_AXIS + FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; j[n] = pj; } + #endif + #if HAS_U_AXIS + FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj, const T pk) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; j[n] = pj; k[n] = pk; } + #endif + #if HAS_V_AXIS + FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; j[n] = pj; k[n] = pk; u[n] = pu; } + #endif + #if HAS_W_AXIS + FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu, const T pv) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; j[n] = pj; k[n] = pk; u[n] = pu; v[n] = pv; } + #endif + + FI XYZval operator[](const int n) const { return XYZval(NUM_AXIS_ARRAY(x[n], y[n], z[n], i[n], j[n], k[n], u[n], v[n], w[n])); } +}; + +template +struct XYZEarray { + typedef T el[SIZE]; + union { + el data[LOGICAL_AXES]; + struct { el LOGICAL_AXIS_ARGS(); }; + struct { el LOGICAL_AXIS_LIST(_e, a, b, c, _i, _j, _k, _u, _v, _w); }; + }; + FI void reset() { ZERO(data); } + + FI void set(const int n, const XYval p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y,,,,,,,); } + FI void set(const int n, const XYZval p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y, z[n]=p.z, i[n]=p.i, j[n]=p.j, k[n]=p.k, u[n]=p.u, v[n]=p.v, w[n]=p.w ); } + FI void set(const int n, const XYZEval p) { LOGICAL_AXIS_CODE(e[n]=p.e, x[n]=p.x, y[n]=p.y, z[n]=p.z, i[n]=p.i, j[n]=p.j, k[n]=p.k, u[n]=p.u, v[n]=p.v, w[n]=p.w ); } + + // Setter for all individual args + FI void set(const int n OPTARGS_NUM(const T)) { NUM_AXIS_CODE(a[n] = x, b[n] = y, c[n] = z, _i[n] = i, _j[n] = j, _k[n] = k, _u[n] = u, _v[n] = v, _w[n] = w); } + #if LOGICAL_AXES > NUM_AXES + FI void set(const int n, LOGICAL_AXIS_ARGS(const T)) { LOGICAL_AXIS_CODE(_e[n] = e, a[n] = x, b[n] = y, c[n] = z, _i[n] = i, _j[n] = j, _k[n] = k, _u[n] = u, _v[n] = v, _w[n] = w); } + #endif + + // Setters with fewer elements leave the rest untouched + #if HAS_Y_AXIS + FI void set(const int n, const T px) { x[n] = px; } + #endif + #if HAS_Z_AXIS + FI void set(const int n, const T px, const T py) { x[n] = px; y[n] = py; } + #endif + #if HAS_I_AXIS + FI void set(const int n, const T px, const T py, const T pz) { x[n] = px; y[n] = py; z[n] = pz; } + #endif + #if HAS_J_AXIS + FI void set(const int n, const T px, const T py, const T pz, const T pi) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; } + #endif + #if HAS_K_AXIS + FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; j[n] = pj; } + #endif + #if HAS_U_AXIS + FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj, const T pk) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; j[n] = pj; k[n] = pk; } + #endif + #if HAS_V_AXIS + FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; j[n] = pj; k[n] = pk; u[n] = pu; } + #endif + #if HAS_W_AXIS + FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu, const T pv) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; j[n] = pj; k[n] = pk; u[n] = pu; v[n] = pv; } + #endif + + FI XYZEval operator[](const int n) const { return XYZval(LOGICAL_AXIS_ARRAY(e[n], x[n], y[n], z[n], i[n], j[n], k[n], u[n], v[n], w[n])); } +}; + class AxisBits; class AxisBits { @@ -972,6 +1069,8 @@ public: #undef MSET FI bool toggle(const AxisEnum n) { TBI(bits, n); return TEST(bits, n); } + FI void bset(const AxisEnum n) { SBI(bits, n); } + FI void bclr(const AxisEnum n) { CBI(bits, n); } // Accessor via an AxisEnum (or any integer) [index] FI bool operator[](const int n) const { return TEST(bits, n); } diff --git a/Marlin/src/feature/mixing.h b/Marlin/src/feature/mixing.h index c5c60a5e9f..4340a510a5 100644 --- a/Marlin/src/feature/mixing.h +++ b/Marlin/src/feature/mixing.h @@ -108,7 +108,7 @@ class Mixer { } // Used when dealing with blocks - FORCE_INLINE static void populate_block(mixer_comp_t b_color[MIXING_STEPPERS]) { + FORCE_INLINE static void populate_block(mixer_comp_t (&b_color)[MIXING_STEPPERS]) { #if ENABLED(GRADIENT_MIX) if (gradient.enabled) { MIXER_STEPPER_LOOP(i) b_color[i] = gradient.color[i]; @@ -118,7 +118,7 @@ class Mixer { MIXER_STEPPER_LOOP(i) b_color[i] = color[selected_vtool][i]; } - FORCE_INLINE static void stepper_setup(mixer_comp_t b_color[MIXING_STEPPERS]) { + FORCE_INLINE static void stepper_setup(mixer_comp_t (&b_color)[MIXING_STEPPERS]) { MIXER_STEPPER_LOOP(i) s_color[i] = b_color[i]; } @@ -231,13 +231,7 @@ class Mixer { for (;;) { if (--runner < 0) runner = MIXING_STEPPERS - 1; accu[runner] += s_color[runner]; - if ( - #ifdef MIXER_ACCU_SIGNED - accu[runner] < 0 - #else - accu[runner] & COLOR_A_MASK - #endif - ) { + if (TERN(MIXER_ACCU_SIGNED, accu[runner] < 0, accu[runner] & COLOR_A_MASK)) { accu[runner] &= COLOR_MASK; return runner; } diff --git a/Marlin/src/gcode/feature/ft_motion/M493.cpp b/Marlin/src/gcode/feature/ft_motion/M493.cpp index f34c6c1bd7..413c63dfca 100644 --- a/Marlin/src/gcode/feature/ft_motion/M493.cpp +++ b/Marlin/src/gcode/feature/ft_motion/M493.cpp @@ -153,49 +153,36 @@ void GcodeSuite::M493_report(const bool forReplay/*=true*/) { void GcodeSuite::M493() { struct { bool update_n:1, update_a:1, reset_ft:1, report_h:1; } flag = { false }; - if (!parser.seen_any()) flag.report_h = true; + if (!parser.seen_any()) + flag.report_h = true; + else + planner.synchronize(); // Parse 'S' mode parameter. if (parser.seenval('S')) { const ftMotionMode_t oldmm = fxdTiCtrl.cfg.mode, newmm = (ftMotionMode_t)parser.value_byte(); - switch (newmm) { - #if HAS_X_AXIS - case ftMotionMode_ZV: - case ftMotionMode_ZVD: - case ftMotionMode_2HEI: - case ftMotionMode_3HEI: - case ftMotionMode_MZV: - //case ftMotionMode_ULENDO_FBS: - //case ftMotionMode_DISCTF: - #endif - case ftMotionMode_DISABLED: - case ftMotionMode_ENABLED: - fxdTiCtrl.cfg.mode = newmm; - flag.report_h = true; - break; - default: - SERIAL_ECHOLNPGM("?Invalid control mode [M] value."); - return; - } - if (fxdTiCtrl.cfg.mode != oldmm) switch (newmm) { - default: break; - #if HAS_X_AXIS - //case ftMotionMode_ULENDO_FBS: - //case ftMotionMode_DISCTF: - // break; - case ftMotionMode_ZV: - case ftMotionMode_ZVD: - case ftMotionMode_EI: - case ftMotionMode_2HEI: - case ftMotionMode_3HEI: - case ftMotionMode_MZV: - flag.update_n = flag.update_a = true; - #endif - case ftMotionMode_ENABLED: - flag.reset_ft = true; - break; + if (newmm != oldmm) { + switch (newmm) { + default: SERIAL_ECHOLNPGM("?Invalid control mode [S] value."); return; + #if HAS_X_AXIS + case ftMotionMode_ZV: + case ftMotionMode_ZVD: + case ftMotionMode_2HEI: + case ftMotionMode_3HEI: + case ftMotionMode_MZV: + //case ftMotionMode_ULENDO_FBS: + //case ftMotionMode_DISCTF: + flag.update_n = flag.update_a = true; + #endif + case ftMotionMode_DISABLED: + case ftMotionMode_ENABLED: + fxdTiCtrl.cfg.mode = newmm; + flag.report_h = true; + if (oldmm == ftMotionMode_DISABLED) flag.reset_ft = true; + break; + } } } diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 049a38a6a4..bda273b734 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -4058,12 +4058,8 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." /** * Fixed-Time Motion limitations */ -#if ENABLED(FT_MOTION) - #if NUM_AXES > 3 - #error "FT_MOTION is currently limited to machines with 3 linear axes." - #elif ENABLED(MIXING_EXTRUDER) - #error "FT_MOTION is incompatible with MIXING_EXTRUDER." - #endif +#if ALL(FT_MOTION, MIXING_EXTRUDER) + #error "FT_MOTION does not currently support MIXING_EXTRUDER." #endif // Multi-Stepping Limit diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp index d6c834cbc4..d3c4de8962 100644 --- a/Marlin/src/module/ft_motion.cpp +++ b/Marlin/src/module/ft_motion.cpp @@ -61,53 +61,25 @@ bool FxdTiCtrl::sts_stepperBusy = false; // The stepper buffer has item // Private variables. // NOTE: These are sized for Ulendo FBS use. -#if HAS_X_AXIS - float FxdTiCtrl::xd[2 * (FTM_BATCH_SIZE)], // = {0.0f} Storage for fixed-time-based trajectory. - FxdTiCtrl::xm[FTM_BATCH_SIZE]; // = {0.0f} Storage for modified fixed-time-based trajectory. -#endif -#if HAS_Y_AXIS - float FxdTiCtrl::yd[2 * (FTM_BATCH_SIZE)], FxdTiCtrl::ym[FTM_BATCH_SIZE]; -#endif -#if HAS_Z_AXIS - float FxdTiCtrl::zd[2 * (FTM_BATCH_SIZE)], FxdTiCtrl::zm[FTM_BATCH_SIZE]; -#endif -#if HAS_EXTRUDERS - float FxdTiCtrl::ed[2 * (FTM_BATCH_SIZE)], FxdTiCtrl::em[FTM_BATCH_SIZE]; -#endif +xyze_trajectory_t FxdTiCtrl::traj; // = {0.0f} Storage for fixed-time-based trajectory. +xyze_trajectoryMod_t FxdTiCtrl::trajMod; // = {0.0f} Storage for modified fixed-time-based trajectory. -block_t* FxdTiCtrl::current_block_cpy = nullptr; // Pointer to current block being processed. -bool FxdTiCtrl::blockProcRdy = false, // Indicates a block is ready to be processed. - FxdTiCtrl::blockProcRdy_z1 = false, // Storage for the previous indicator. - FxdTiCtrl::blockProcDn = false; // Indicates current block is done being processed. -bool FxdTiCtrl::batchRdy = false; // Indicates a batch of the fixed time trajectory - // has been generated, is now available in the upper - - // half of xd, yd, zd, ed vectors, and is ready to be - // post processed, if applicable, then interpolated. -bool FxdTiCtrl::batchRdyForInterp = false; // Indicates the batch is done being post processed, - // if applicable, and is ready to be converted to step commands. -bool FxdTiCtrl::runoutEna = false; // True if runout of the block hasn't been done and is allowed. +block_t* FxdTiCtrl::current_block_cpy = nullptr; // Pointer to current block being processed. +bool FxdTiCtrl::blockProcRdy = false, // Indicates a block is ready to be processed. + FxdTiCtrl::blockProcRdy_z1 = false, // Storage for the previous indicator. + FxdTiCtrl::blockProcDn = false; // Indicates current block is done being processed. +bool FxdTiCtrl::batchRdy = false; // Indicates a batch of the fixed time trajectory + // has been generated, is now available in the upper - + // half of traj.x[], y, z ... e vectors, and is ready to be + // post processed, if applicable, then interpolated. +bool FxdTiCtrl::batchRdyForInterp = false; // Indicates the batch is done being post processed, + // if applicable, and is ready to be converted to step commands. +bool FxdTiCtrl::runoutEna = false; // True if runout of the block hasn't been done and is allowed. // Trapezoid data variables. -#if HAS_X_AXIS - float FxdTiCtrl::x_startPosn, // (mm) Start position of block - FxdTiCtrl::x_endPosn_prevBlock = 0.0f, // (mm) Start position of block - FxdTiCtrl::x_Ratio; // (ratio) Axis move ratio of block -#endif -#if HAS_Y_AXIS - float FxdTiCtrl::y_startPosn, - FxdTiCtrl::y_endPosn_prevBlock = 0.0f, - FxdTiCtrl::y_Ratio; -#endif -#if HAS_Z_AXIS - float FxdTiCtrl::z_startPosn, - FxdTiCtrl::z_endPosn_prevBlock = 0.0f, - FxdTiCtrl::z_Ratio; -#endif -#if HAS_EXTRUDERS - float FxdTiCtrl::e_startPosn, - FxdTiCtrl::e_endPosn_prevBlock = 0.0f, - FxdTiCtrl::e_Ratio; -#endif +xyze_pos_t FxdTiCtrl::startPosn, // (mm) Start position of block + FxdTiCtrl::endPosn_prevBlock = { 0.0f }; // (mm) End position of previous block +xyze_float_t FxdTiCtrl::ratio; // (ratio) Axis move ratio of block float FxdTiCtrl::accel_P, // Acceleration prime of block. [mm/sec/sec] FxdTiCtrl::decel_P, // Deceleration prime of block. [mm/sec/sec] FxdTiCtrl::F_P, // Feedrate prime of block. [mm/sec] @@ -127,22 +99,8 @@ uint32_t FxdTiCtrl::makeVector_idx = 0, // Index of fixed ti FxdTiCtrl::makeVector_batchIdx = FTM_BATCH_SIZE; // Index of fixed time trajectory generation within the batch. // Interpolation variables. -#if HAS_X_AXIS - int32_t FxdTiCtrl::x_steps = 0; // Step count accumulator. - stepDirState_t FxdTiCtrl::x_dirState = stepDirState_NOT_SET; // Memory of the currently set step direction of the axis. -#endif -#if HAS_Y_AXIS - int32_t FxdTiCtrl::y_steps = 0; - stepDirState_t FxdTiCtrl::y_dirState = stepDirState_NOT_SET; -#endif -#if HAS_Z_AXIS - int32_t FxdTiCtrl::z_steps = 0; - stepDirState_t FxdTiCtrl::z_dirState = stepDirState_NOT_SET; -#endif -#if HAS_EXTRUDERS - int32_t FxdTiCtrl::e_steps = 0; - stepDirState_t FxdTiCtrl::e_dirState = stepDirState_NOT_SET; -#endif +xyze_long_t FxdTiCtrl::steps = { 0 }; // Step count accumulator. +xyze_stepDir_t FxdTiCtrl::dirState = LOGICAL_AXIS_ARRAY_1(stepDirState_NOT_SET); // Memory of the currently set step direction of the axis. uint32_t FxdTiCtrl::interpIdx = 0, // Index of current data point being interpolated. FxdTiCtrl::interpIdx_z1 = 0; // Storage for the previously calculated index above. @@ -150,16 +108,13 @@ hal_timer_t FxdTiCtrl::nextStepTicks = FTM_MIN_TICKS; // Accumulator for the nex // Shaping variables. #if HAS_X_AXIS - uint32_t FxdTiCtrl::xy_zi_idx = 0, // Index of storage in the data point delay vectors. - FxdTiCtrl::xy_max_i = 0; // Vector length for the selected shaper. - float FxdTiCtrl::xd_zi[FTM_ZMAX] = { 0.0f }; // Data point delay vector. - float FxdTiCtrl::x_Ai[5]; // Shaping gain vector. - uint32_t FxdTiCtrl::x_Ni[5]; // Shaping time index vector. -#endif -#if HAS_Y_AXIS - float FxdTiCtrl::yd_zi[FTM_ZMAX] = { 0.0f }; - float FxdTiCtrl::y_Ai[5]; - uint32_t FxdTiCtrl::y_Ni[5]; + FxdTiCtrl::shaping_t FxdTiCtrl::shaping = { + 0, 0, + x:{ { 0.0f }, { 0.0f }, { 0 } }, // d_zi, Ai, Ni + #if HAS_Y_AXIS + y:{ { 0.0f }, { 0.0f }, { 0 } } // d_zi, Ai, Ni + #endif + }; #endif #if HAS_EXTRUDERS @@ -188,14 +143,22 @@ void FxdTiCtrl::runoutBlock() { if (runoutEna && !batchRdy) { // If the window is full already (block intervals was a multiple of // the batch size), or runout is not enabled, no runout is needed. // Fill out the trajectory window with the last position calculated. - if (makeVector_batchIdx > FTM_BATCH_SIZE) { + if (makeVector_batchIdx > FTM_BATCH_SIZE) for (uint32_t i = makeVector_batchIdx; i < 2 * (FTM_BATCH_SIZE); i++) { - xd[i] = xd[makeVector_batchIdx - 1]; - TERN_(HAS_Y_AXIS, yd[i] = yd[makeVector_batchIdx - 1]); - TERN_(HAS_Y_AXIS, zd[i] = zd[makeVector_batchIdx - 1]); - TERN_(HAS_EXTRUDERS, ed[i] = ed[makeVector_batchIdx - 1]); + LOGICAL_AXIS_CODE( + traj.e[i] = traj.e[makeVector_batchIdx - 1], + traj.x[i] = traj.x[makeVector_batchIdx - 1], + traj.y[i] = traj.y[makeVector_batchIdx - 1], + traj.z[i] = traj.z[makeVector_batchIdx - 1], + traj.i[i] = traj.i[makeVector_batchIdx - 1], + traj.j[i] = traj.j[makeVector_batchIdx - 1], + traj.k[i] = traj.k[makeVector_batchIdx - 1], + traj.u[i] = traj.u[makeVector_batchIdx - 1], + traj.v[i] = traj.v[makeVector_batchIdx - 1], + traj.w[i] = traj.w[makeVector_batchIdx - 1] + ); } - } + makeVector_batchIdx = FTM_BATCH_SIZE; batchRdy = true; } @@ -234,23 +197,28 @@ void FxdTiCtrl::loop() { // Call Ulendo FBS here. - memcpy(xm, &xd[FTM_BATCH_SIZE], sizeof(xm)); - TERN_(HAS_Y_AXIS, memcpy(ym, &yd[FTM_BATCH_SIZE], sizeof(ym))); + // Copy the uncompensated vectors. (XY done, other axes uncompensated) + LOGICAL_AXIS_CODE( + memcpy(trajMod.e, &traj.e[FTM_BATCH_SIZE], sizeof(trajMod.e)), + memcpy(trajMod.x, &traj.x[FTM_BATCH_SIZE], sizeof(trajMod.x)), + memcpy(trajMod.y, &traj.y[FTM_BATCH_SIZE], sizeof(trajMod.y)), + memcpy(trajMod.z, &traj.z[FTM_BATCH_SIZE], sizeof(trajMod.z)), + memcpy(trajMod.i, &traj.i[FTM_BATCH_SIZE], sizeof(trajMod.i)), + memcpy(trajMod.j, &traj.j[FTM_BATCH_SIZE], sizeof(trajMod.j)), + memcpy(trajMod.k, &traj.k[FTM_BATCH_SIZE], sizeof(trajMod.k)), + memcpy(trajMod.u, &traj.u[FTM_BATCH_SIZE], sizeof(trajMod.u)), + memcpy(trajMod.v, &traj.v[FTM_BATCH_SIZE], sizeof(trajMod.v)), + memcpy(trajMod.w, &traj.w[FTM_BATCH_SIZE], sizeof(trajMod.w)) + ); - // Done compensating ... + // Shift the time series back in the window for (shaped) X and Y + TERN_(HAS_X_AXIS, memcpy(traj.x, &traj.x[FTM_BATCH_SIZE], sizeof(traj.x) / 2)); + TERN_(HAS_Y_AXIS, memcpy(traj.y, &traj.y[FTM_BATCH_SIZE], sizeof(traj.y) / 2)); - // Copy the uncompensated vectors. - TERN_(HAS_Z_AXIS, memcpy(zm, &zd[FTM_BATCH_SIZE], sizeof(zm))); - TERN_(HAS_EXTRUDERS, memcpy(em, &ed[FTM_BATCH_SIZE], sizeof(em))); + // Z...W and E Disabled! Uncompensated so the lower half is not used. + //TERN_(HAS_Z_AXIS, memcpy(&traj.z[0], &traj.z[FTM_BATCH_SIZE], sizeof(traj.z) / 2)); - // Shift the time series back in the window. - memcpy(xd, &xd[FTM_BATCH_SIZE], sizeof(xd) / 2); - TERN_(HAS_Y_AXIS, memcpy(yd, &yd[FTM_BATCH_SIZE], sizeof(yd) / 2)); - // Disabled by comment as these are uncompensated, the lower half is not used. - //TERN_(HAS_Z_AXIS, memcpy(zd, &zd[FTM_BATCH_SIZE], (sizeof(zd) / 2))); - //TERN_(HAS_EXTRUDERS, memcpy(ed, &ed[FTM_BATCH_SIZE], (sizeof(ed) / 2))); - - // ... data is ready in xm, ym, zm, em. + // ... data is ready in trajMod. batchRdyForInterp = true; batchRdy = false; // Clear so that makeVector() may resume generating points. @@ -282,134 +250,119 @@ void FxdTiCtrl::loop() { // Refresh the gains used by shaping functions. // To be called on init or mode or zeta change. - void FxdTiCtrl::updateShapingA(const_float_t zeta/*=FTM_SHAPING_ZETA*/, const_float_t vtol/*=FTM_SHAPING_V_TOL*/) { - const float K = exp( -zeta * M_PI / sqrt(1.0f - sq(zeta)) ), + void FxdTiCtrl::Shaping::updateShapingA(const_float_t zeta/*=FTM_SHAPING_ZETA*/, const_float_t vtol/*=FTM_SHAPING_V_TOL*/) { + + const float K = exp(-zeta * M_PI / sqrt(1.0f - sq(zeta))), K2 = sq(K); switch (cfg.mode) { case ftMotionMode_ZV: - xy_max_i = 1U; - x_Ai[0] = 1.0f / (1.0f + K); - x_Ai[1] = x_Ai[0] * K; + max_i = 1U; + x.Ai[0] = 1.0f / (1.0f + K); + x.Ai[1] = x.Ai[0] * K; break; case ftMotionMode_ZVD: - xy_max_i = 2U; - x_Ai[0] = 1.0f / ( 1.0f + 2.0f * K + K2 ); - x_Ai[1] = x_Ai[0] * 2.0f * K; - x_Ai[2] = x_Ai[0] * K2; + max_i = 2U; + x.Ai[0] = 1.0f / ( 1.0f + 2.0f * K + K2 ); + x.Ai[1] = x.Ai[0] * 2.0f * K; + x.Ai[2] = x.Ai[0] * K2; break; case ftMotionMode_EI: { - xy_max_i = 2U; - x_Ai[0] = 0.25f * (1.0f + vtol); - x_Ai[1] = 0.50f * (1.0f - vtol) * K; - x_Ai[2] = x_Ai[0] * K2; - const float A_adj = 1.0f / (x_Ai[0] + x_Ai[1] + x_Ai[2]); - for (uint32_t i = 0U; i < 3U; i++) { x_Ai[i] *= A_adj; } + max_i = 2U; + x.Ai[0] = 0.25f * (1.0f + vtol); + x.Ai[1] = 0.50f * (1.0f - vtol) * K; + x.Ai[2] = x.Ai[0] * K2; + const float A_adj = 1.0f / (x.Ai[0] + x.Ai[1] + x.Ai[2]); + for (uint32_t i = 0U; i < 3U; i++) { x.Ai[i] *= A_adj; } } break; case ftMotionMode_2HEI: { - xy_max_i = 3U; + max_i = 3U; const float vtol2 = sq(vtol); const float X = pow(vtol2 * (sqrt(1.0f - vtol2) + 1.0f), 1.0f / 3.0f); - x_Ai[0] = ( 3.0f * sq(X) + 2.0f * X + 3.0f * vtol2 ) / (16.0f * X); - x_Ai[1] = ( 0.5f - x_Ai[0] ) * K; - x_Ai[2] = x_Ai[1] * K; - x_Ai[3] = x_Ai[0] * cu(K); - const float A_adj = 1.0f / (x_Ai[0] + x_Ai[1] + x_Ai[2] + x_Ai[3]); - for (uint32_t i = 0U; i < 4U; i++) { x_Ai[i] *= A_adj; } + x.Ai[0] = ( 3.0f * sq(X) + 2.0f * X + 3.0f * vtol2 ) / (16.0f * X); + x.Ai[1] = ( 0.5f - x.Ai[0] ) * K; + x.Ai[2] = x.Ai[1] * K; + x.Ai[3] = x.Ai[0] * cu(K); + const float A_adj = 1.0f / (x.Ai[0] + x.Ai[1] + x.Ai[2] + x.Ai[3]); + for (uint32_t i = 0U; i < 4U; i++) { x.Ai[i] *= A_adj; } } break; case ftMotionMode_3HEI: { - xy_max_i = 4U; - x_Ai[0] = 0.0625f * ( 1.0f + 3.0f * vtol + 2.0f * sqrt( 2.0f * ( vtol + 1.0f ) * vtol ) ); - x_Ai[1] = 0.25f * ( 1.0f - vtol ) * K; - x_Ai[2] = ( 0.5f * ( 1.0f + vtol ) - 2.0f * x_Ai[0] ) * K2; - x_Ai[3] = x_Ai[1] * K2; - x_Ai[4] = x_Ai[0] * sq(K2); - const float A_adj = 1.0f / (x_Ai[0] + x_Ai[1] + x_Ai[2] + x_Ai[3] + x_Ai[4]); - for (uint32_t i = 0U; i < 5U; i++) { x_Ai[i] *= A_adj; } + max_i = 4U; + x.Ai[0] = 0.0625f * ( 1.0f + 3.0f * vtol + 2.0f * sqrt( 2.0f * ( vtol + 1.0f ) * vtol ) ); + x.Ai[1] = 0.25f * ( 1.0f - vtol ) * K; + x.Ai[2] = ( 0.5f * ( 1.0f + vtol ) - 2.0f * x.Ai[0] ) * K2; + x.Ai[3] = x.Ai[1] * K2; + x.Ai[4] = x.Ai[0] * sq(K2); + const float A_adj = 1.0f / (x.Ai[0] + x.Ai[1] + x.Ai[2] + x.Ai[3] + x.Ai[4]); + for (uint32_t i = 0U; i < 5U; i++) { x.Ai[i] *= A_adj; } } break; case ftMotionMode_MZV: { - xy_max_i = 2U; + max_i = 2U; const float B = 1.4142135623730950488016887242097f * K; - x_Ai[0] = 1.0f / (1.0f + B + K2); - x_Ai[1] = x_Ai[0] * B; - x_Ai[2] = x_Ai[0] * K2; + x.Ai[0] = 1.0f / (1.0f + B + K2); + x.Ai[1] = x.Ai[0] * B; + x.Ai[2] = x.Ai[0] * K2; } break; default: - for (uint32_t i = 0U; i < 5U; i++) x_Ai[i] = 0.0f; - xy_max_i = 0; + for (uint32_t i = 0U; i < 5U; i++) x.Ai[i] = 0.0f; + max_i = 0; } #if HAS_Y_AXIS - memcpy(y_Ai, x_Ai, sizeof(x_Ai)); // For now, zeta and vtol are shared across x and y. + memcpy(y.Ai, x.Ai, sizeof(x.Ai)); // For now, zeta and vtol are shared across x and y. #endif } + void FxdTiCtrl::updateShapingA(const_float_t zeta/*=FTM_SHAPING_ZETA*/, const_float_t vtol/*=FTM_SHAPING_V_TOL*/) { + shaping.updateShapingA(zeta, vtol); + } + // Refresh the indices used by shaping functions. // To be called when frequencies change. - void FxdTiCtrl::updateShapingN(const_float_t xf OPTARG(HAS_Y_AXIS, const_float_t yf), const_float_t zeta/*=FTM_SHAPING_ZETA*/) { + void FxdTiCtrl::AxisShaping::updateShapingN(const_float_t f, const_float_t df) { // Protections omitted for DBZ and for index exceeding array length. - - const float df = sqrt(1.0f - sq(zeta)); - switch (cfg.mode) { case ftMotionMode_ZV: - x_Ni[1] = round((0.5f / xf / df) * (FTM_FS)); - #if HAS_Y_AXIS - y_Ni[1] = round((0.5f / yf / df) * (FTM_FS)); - #endif + Ni[1] = round((0.5f / f / df) * (FTM_FS)); break; case ftMotionMode_ZVD: case ftMotionMode_EI: - x_Ni[1] = round((0.5f / xf / df) * (FTM_FS)); - x_Ni[2] = 2 * x_Ni[1]; - #if HAS_Y_AXIS - y_Ni[1] = round((0.5f / yf / df) * (FTM_FS)); - y_Ni[2] = 2 * y_Ni[1]; - #endif + Ni[1] = round((0.5f / f / df) * (FTM_FS)); + Ni[2] = Ni[1] + Ni[1]; break; case ftMotionMode_2HEI: - x_Ni[1] = round((0.5f / xf / df) * (FTM_FS)); - x_Ni[2] = 2 * x_Ni[1]; - x_Ni[3] = 3 * x_Ni[1]; - #if HAS_Y_AXIS - y_Ni[1] = round((0.5f / yf / df) * (FTM_FS)); - y_Ni[2] = 2 * y_Ni[1]; - y_Ni[3] = 3 * y_Ni[1]; - #endif + Ni[1] = round((0.5f / f / df) * (FTM_FS)); + Ni[2] = Ni[1] + Ni[1]; + Ni[3] = Ni[2] + Ni[1]; break; case ftMotionMode_3HEI: - x_Ni[1] = round((0.5f / xf / df) * (FTM_FS)); - x_Ni[2] = 2 * x_Ni[1]; - x_Ni[3] = 3 * x_Ni[1]; - x_Ni[4] = 4 * x_Ni[1]; - #if HAS_Y_AXIS - y_Ni[1] = round((0.5f / yf / df) * (FTM_FS)); - y_Ni[2] = 2 * y_Ni[1]; - y_Ni[3] = 3 * y_Ni[1]; - y_Ni[4] = 4 * y_Ni[1]; - #endif + Ni[1] = round((0.5f / f / df) * (FTM_FS)); + Ni[2] = Ni[1] + Ni[1]; + Ni[3] = Ni[2] + Ni[1]; + Ni[4] = Ni[3] + Ni[1]; break; case ftMotionMode_MZV: - x_Ni[1] = round((0.375f / xf / df) * (FTM_FS)); - x_Ni[2] = 2 * x_Ni[1]; - #if HAS_Y_AXIS - y_Ni[1] = round((0.375f / yf / df) * (FTM_FS)); - y_Ni[2] = 2 * y_Ni[1]; - #endif + Ni[1] = round((0.375f / f / df) * (FTM_FS)); + Ni[2] = Ni[1] + Ni[1]; break; - default: - for (uint32_t i = 0U; i < 5U; i++) { x_Ni[i] = 0; TERN_(HAS_Y_AXIS, y_Ni[i] = 0); } + default: ZERO(Ni); } } + void FxdTiCtrl::updateShapingN(const_float_t xf OPTARG(HAS_Y_AXIS, const_float_t yf), const_float_t zeta/*=FTM_SHAPING_ZETA*/) { + const float df = sqrt(1.0f - sq(zeta)); + shaping.x.updateShapingN(xf, df); + TERN_(HAS_Y_AXIS, shaping.y.updateShapingN(yf, df)); + } + #endif // HAS_X_AXIS // Reset all trajectory processing variables. @@ -417,42 +370,26 @@ void FxdTiCtrl::reset() { stepperCmdBuff_produceIdx = stepperCmdBuff_consumeIdx = 0; - for (uint32_t i = 0U; i < (FTM_BATCH_SIZE); i++) { // Reset trajectory history - TERN_(HAS_X_AXIS, xd[i] = 0.0f); - TERN_(HAS_Y_AXIS, yd[i] = 0.0f); - TERN_(HAS_Z_AXIS, zd[i] = 0.0f); - TERN_(HAS_EXTRUDERS, ed[i] = 0.0f); - } + traj.reset(); // Reset trajectory history blockProcRdy = blockProcRdy_z1 = blockProcDn = false; batchRdy = batchRdyForInterp = false; runoutEna = false; - TERN_(HAS_X_AXIS, x_endPosn_prevBlock = 0.0f); - TERN_(HAS_Y_AXIS, y_endPosn_prevBlock = 0.0f); - TERN_(HAS_Z_AXIS, z_endPosn_prevBlock = 0.0f); - TERN_(HAS_EXTRUDERS, e_endPosn_prevBlock = 0.0f); + endPosn_prevBlock.reset(); makeVector_idx = makeVector_idx_z1 = 0; makeVector_batchIdx = FTM_BATCH_SIZE; - TERN_(HAS_X_AXIS, x_steps = 0); - TERN_(HAS_Y_AXIS, y_steps = 0); - TERN_(HAS_Z_AXIS, z_steps = 0); - TERN_(HAS_EXTRUDERS, e_steps = 0); - + steps.reset(); interpIdx = interpIdx_z1 = 0; - - TERN_(HAS_X_AXIS, x_dirState = stepDirState_NOT_SET); - TERN_(HAS_Y_AXIS, y_dirState = stepDirState_NOT_SET); - TERN_(HAS_Z_AXIS, z_dirState = stepDirState_NOT_SET); - TERN_(HAS_EXTRUDERS, e_dirState = stepDirState_NOT_SET); - + dirState = LOGICAL_AXIS_ARRAY_1(stepDirState_NOT_SET); nextStepTicks = FTM_MIN_TICKS; #if HAS_X_AXIS - for (uint32_t i = 0U; i < (FTM_ZMAX); i++) { xd_zi[i] = 0.0f; TERN_(HAS_Y_AXIS, yd_zi[i] = 0.0f); } - xy_zi_idx = 0; + for (uint32_t i = 0U; i < (FTM_ZMAX); i++) + shaping.x.d_zi[i] = TERN_(HAS_Y_AXIS, shaping.y.d_zi[i] =) 0.0f; + shaping.zi_idx = 0; #endif TERN_(HAS_EXTRUDERS, e_raw_z1 = e_advanced_z1 = 0.0f); @@ -482,33 +419,34 @@ void FxdTiCtrl::loadBlockData(block_t * const current_block) { const AxisBits direction = current_block->direction_bits; - #if HAS_X_AXIS - x_startPosn = x_endPosn_prevBlock; - float x_moveDist = current_block->steps.a / planner.settings.axis_steps_per_mm[X_AXIS]; - if (!direction.x) x_moveDist *= -1.0f; - x_Ratio = x_moveDist * oneOverLength; - #endif + startPosn = endPosn_prevBlock; + xyze_pos_t moveDist = LOGICAL_AXIS_ARRAY( + current_block->steps.e / planner.settings.axis_steps_per_mm[E_AXIS_N(current_block->extruder)], + current_block->steps.x / planner.settings.axis_steps_per_mm[X_AXIS], + current_block->steps.y / planner.settings.axis_steps_per_mm[Y_AXIS], + current_block->steps.z / planner.settings.axis_steps_per_mm[Z_AXIS], + current_block->steps.i / planner.settings.axis_steps_per_mm[I_AXIS], + current_block->steps.j / planner.settings.axis_steps_per_mm[J_AXIS], + current_block->steps.k / planner.settings.axis_steps_per_mm[K_AXIS], + current_block->steps.u / planner.settings.axis_steps_per_mm[U_AXIS], + current_block->steps.v / planner.settings.axis_steps_per_mm[V_AXIS], + current_block->steps.w / planner.settings.axis_steps_per_mm[W_AXIS] + ); - #if HAS_Y_AXIS - y_startPosn = y_endPosn_prevBlock; - float y_moveDist = current_block->steps.b / planner.settings.axis_steps_per_mm[Y_AXIS]; - if (!direction.y) y_moveDist *= -1.0f; - y_Ratio = y_moveDist * oneOverLength; - #endif + LOGICAL_AXIS_CODE( + if (!direction.e) moveDist.e *= -1.0f, + if (!direction.x) moveDist.x *= -1.0f, + if (!direction.y) moveDist.y *= -1.0f, + if (!direction.z) moveDist.z *= -1.0f, + if (!direction.i) moveDist.i *= -1.0f, + if (!direction.j) moveDist.j *= -1.0f, + if (!direction.k) moveDist.k *= -1.0f, + if (!direction.u) moveDist.u *= -1.0f, + if (!direction.v) moveDist.v *= -1.0f, + if (!direction.w) moveDist.w *= -1.0f + ); - #if HAS_Z_AXIS - z_startPosn = z_endPosn_prevBlock; - float z_moveDist = current_block->steps.c / planner.settings.axis_steps_per_mm[Z_AXIS]; - if (!direction.z) z_moveDist *= -1.0f; - z_Ratio = z_moveDist * oneOverLength; - #endif - - #if HAS_EXTRUDERS - e_startPosn = e_endPosn_prevBlock; - float extrusion = current_block->steps.e / planner.settings.axis_steps_per_mm[E_AXIS_N(current_block->extruder)]; - if (!direction.e) extrusion *= -1.0f; - e_Ratio = extrusion * oneOverLength; - #endif + ratio = moveDist * oneOverLength; const float spm = totalLength / current_block->step_event_count; // (steps/mm) Distance for each step f_s = spm * current_block->initial_rate; // (steps/s) Start feedrate @@ -525,7 +463,7 @@ void FxdTiCtrl::loadBlockData(block_t * const current_block) { odiff = oneby2a - oneby2d, // (i.e., oneby2a * 2) (mm/s) Change in speed for one second of acceleration ldiff = totalLength - fdiff; // (mm) Distance to travel if nominal speed is reached float T2 = (1.0f / F_n) * (ldiff - odiff * sq(F_n)); // (s) Coasting duration after nominal speed reached - if (T2 < 0.0f) { + if (T2 < 0.0f) { T2 = 0.0f; F_n = SQRT(ldiff / odiff); // Clip by intersection if nominal speed can't be reached. } @@ -567,10 +505,7 @@ void FxdTiCtrl::loadBlockData(block_t * const current_block) { // One less than (Accel + Coasting + Decel) datapoints max_intervals = N1 + N2 + N3 - 1U; - TERN_(HAS_X_AXIS, x_endPosn_prevBlock += x_moveDist); - TERN_(HAS_Y_AXIS, y_endPosn_prevBlock += y_moveDist); - TERN_(HAS_Z_AXIS, z_endPosn_prevBlock += z_moveDist); - TERN_(HAS_EXTRUDERS, e_endPosn_prevBlock += extrusion); + endPosn_prevBlock += moveDist; } // Generate data points of the trajectory. @@ -596,24 +531,32 @@ void FxdTiCtrl::makeVector() { accel_k = decel_P; // (mm/s^2) Acceleration K factor from Decel phase } - TERN_(HAS_X_AXIS, xd[makeVector_batchIdx] = x_startPosn + x_Ratio * dist); // (mm) X position for this datapoint - TERN_(HAS_Y_AXIS, yd[makeVector_batchIdx] = y_startPosn + y_Ratio * dist); // (mm) Y - TERN_(HAS_Z_AXIS, zd[makeVector_batchIdx] = z_startPosn + z_Ratio * dist); // (mm) Z + NUM_AXIS_CODE( + traj.x[makeVector_batchIdx] = startPosn.x + ratio.x * dist, + traj.y[makeVector_batchIdx] = startPosn.y + ratio.y * dist, + traj.z[makeVector_batchIdx] = startPosn.z + ratio.z * dist, + traj.i[makeVector_batchIdx] = startPosn.i + ratio.i * dist, + traj.j[makeVector_batchIdx] = startPosn.j + ratio.j * dist, + traj.k[makeVector_batchIdx] = startPosn.k + ratio.k * dist, + traj.u[makeVector_batchIdx] = startPosn.u + ratio.u * dist, + traj.v[makeVector_batchIdx] = startPosn.v + ratio.v * dist, + traj.w[makeVector_batchIdx] = startPosn.w + ratio.w * dist + ); #if HAS_EXTRUDERS - const float new_raw_z1 = e_startPosn + e_Ratio * dist; + const float new_raw_z1 = startPosn.e + ratio.e * dist; if (cfg.linearAdvEna) { float dedt_adj = (new_raw_z1 - e_raw_z1) * (FTM_FS); - if (e_Ratio > 0.0f) dedt_adj += accel_k * cfg.linearAdvK; + if (ratio.e > 0.0f) dedt_adj += accel_k * cfg.linearAdvK; e_advanced_z1 += dedt_adj * (FTM_TS); - ed[makeVector_batchIdx] = e_advanced_z1; + traj.e[makeVector_batchIdx] = e_advanced_z1; e_raw_z1 = new_raw_z1; } else { - ed[makeVector_batchIdx] = new_raw_z1; - // Alternatively: ed[makeVector_batchIdx] = e_startPosn + (e_Ratio * dist) / (N1 + N2 + N3); + traj.e[makeVector_batchIdx] = new_raw_z1; + // Alternatively: ed[makeVector_batchIdx] = startPosn.e + (ratio.e * dist) / (N1 + N2 + N3); } #endif @@ -625,11 +568,11 @@ void FxdTiCtrl::makeVector() { #if HAS_DYNAMIC_FREQ_MM case dynFreqMode_Z_BASED: - if (zd[makeVector_batchIdx] != zd_z1) { // Only update if Z changed. - const float xf = cfg.baseFreq[X_AXIS] + cfg.dynFreqK[X_AXIS] * zd[makeVector_batchIdx], - yf = cfg.baseFreq[Y_AXIS] + cfg.dynFreqK[Y_AXIS] * zd[makeVector_batchIdx]; + if (traj.z[makeVector_batchIdx] != zd_z1) { // Only update if Z changed. + const float xf = cfg.baseFreq[X_AXIS] + cfg.dynFreqK[X_AXIS] * traj.z[makeVector_batchIdx], + yf = cfg.baseFreq[Y_AXIS] + cfg.dynFreqK[Y_AXIS] * traj.z[makeVector_batchIdx]; updateShapingN(_MAX(xf, FTM_MIN_SHAPE_FREQ), _MAX(yf, FTM_MIN_SHAPE_FREQ)); - zd_z1 = zd[makeVector_batchIdx]; + zd_z1 = traj.z[makeVector_batchIdx]; } break; #endif @@ -638,8 +581,8 @@ void FxdTiCtrl::makeVector() { case dynFreqMode_MASS_BASED: // Update constantly. The optimization done for Z value makes // less sense for E, as E is expected to constantly change. - updateShapingN( cfg.baseFreq[X_AXIS] + cfg.dynFreqK[X_AXIS] * ed[makeVector_batchIdx] - OPTARG(HAS_Y_AXIS, cfg.baseFreq[Y_AXIS] + cfg.dynFreqK[Y_AXIS] * ed[makeVector_batchIdx]) ); + updateShapingN( cfg.baseFreq[X_AXIS] + cfg.dynFreqK[X_AXIS] * traj.e[makeVector_batchIdx] + OPTARG(HAS_Y_AXIS, cfg.baseFreq[Y_AXIS] + cfg.dynFreqK[Y_AXIS] * traj.e[makeVector_batchIdx]) ); break; #endif @@ -648,22 +591,22 @@ void FxdTiCtrl::makeVector() { // Apply shaping if in mode. #if HAS_X_AXIS - if (WITHIN(cfg.mode, 10U, 19U)) { - xd_zi[xy_zi_idx] = xd[makeVector_batchIdx]; - xd[makeVector_batchIdx] *= x_Ai[0]; + if (cfg.modeHasShaper()) { + shaping.x.d_zi[shaping.zi_idx] = traj.x[makeVector_batchIdx]; + traj.x[makeVector_batchIdx] *= shaping.x.Ai[0]; #if HAS_Y_AXIS - yd_zi[xy_zi_idx] = yd[makeVector_batchIdx]; - yd[makeVector_batchIdx] *= y_Ai[0]; + shaping.y.d_zi[shaping.zi_idx] = traj.y[makeVector_batchIdx]; + traj.y[makeVector_batchIdx] *= shaping.y.Ai[0]; #endif - for (uint32_t i = 1U; i <= xy_max_i; i++) { - const uint32_t udiffx = xy_zi_idx - x_Ni[i]; - xd[makeVector_batchIdx] += x_Ai[i] * xd_zi[x_Ni[i] > xy_zi_idx ? (FTM_ZMAX) + udiffx : udiffx]; + for (uint32_t i = 1U; i <= shaping.max_i; i++) { + const uint32_t udiffx = shaping.zi_idx - shaping.x.Ni[i]; + traj.x[makeVector_batchIdx] += shaping.x.Ai[i] * shaping.x.d_zi[shaping.x.Ni[i] > shaping.zi_idx ? (FTM_ZMAX) + udiffx : udiffx]; #if HAS_Y_AXIS - const uint32_t udiffy = xy_zi_idx - y_Ni[i]; - yd[makeVector_batchIdx] += y_Ai[i] * yd_zi[y_Ni[i] > xy_zi_idx ? (FTM_ZMAX) + udiffy : udiffy]; + const uint32_t udiffy = shaping.zi_idx - shaping.y.Ni[i]; + traj.y[makeVector_batchIdx] += shaping.y.Ai[i] * shaping.y.d_zi[shaping.y.Ni[i] > shaping.zi_idx ? (FTM_ZMAX) + udiffy : udiffy]; #endif } - if (++xy_zi_idx == (FTM_ZMAX)) xy_zi_idx = 0; + if (++shaping.zi_idx == (FTM_ZMAX)) shaping.zi_idx = 0; } #endif @@ -684,57 +627,63 @@ void FxdTiCtrl::makeVector() { // Interpolates single data point to stepper commands. void FxdTiCtrl::convertToSteps(const uint32_t idx) { - #if HAS_X_AXIS - int32_t x_err_P = 0; - #endif - #if HAS_Y_AXIS - int32_t y_err_P = 0; - #endif - #if HAS_Z_AXIS - int32_t z_err_P = 0; - #endif - #if HAS_EXTRUDERS - int32_t e_err_P = 0; - #endif + xyze_long_t err_P = { 0 }; //#define STEPS_ROUNDING #if ENABLED(STEPS_ROUNDING) - #if HAS_X_AXIS - const float x_steps_tar = xm[idx] * planner.settings.axis_steps_per_mm[X_AXIS] + (xm[idx] < 0.0f ? -0.5f : 0.5f); // May be eliminated if guaranteed positive. - const int32_t x_delta = int32_t(x_steps_tar) - x_steps; - #endif - #if HAS_Y_AXIS - const float y_steps_tar = ym[idx] * planner.settings.axis_steps_per_mm[Y_AXIS] + (ym[idx] < 0.0f ? -0.5f : 0.5f); - const int32_t y_delta = int32_t(y_steps_tar) - y_steps; - #endif - #if HAS_Z_AXIS - const float z_steps_tar = zm[idx] * planner.settings.axis_steps_per_mm[Z_AXIS] + (zm[idx] < 0.0f ? -0.5f : 0.5f); - const int32_t z_delta = int32_t(z_steps_tar) - z_steps; - #endif - #if HAS_EXTRUDERS - const float e_steps_tar = em[idx] * planner.settings.axis_steps_per_mm[E_AXIS] + (em[idx] < 0.0f ? -0.5f : 0.5f); - const int32_t e_delta = int32_t(e_steps_tar) - e_steps; - #endif + const xyze_float_t steps_tar = LOGICAL_AXIS_ARRAY( + trajMod.e[idx] * planner.settings.axis_steps_per_mm[E_AXIS_N(current_block->extruder)] + (trajMod.e[idx] < 0.0f ? -0.5f : 0.5f), // May be eliminated if guaranteed positive. + trajMod.x[idx] * planner.settings.axis_steps_per_mm[X_AXIS] + (trajMod.x[idx] < 0.0f ? -0.5f : 0.5f), + trajMod.y[idx] * planner.settings.axis_steps_per_mm[Y_AXIS] + (trajMod.y[idx] < 0.0f ? -0.5f : 0.5f), + trajMod.z[idx] * planner.settings.axis_steps_per_mm[Z_AXIS] + (trajMod.z[idx] < 0.0f ? -0.5f : 0.5f), + trajMod.i[idx] * planner.settings.axis_steps_per_mm[I_AXIS] + (trajMod.i[idx] < 0.0f ? -0.5f : 0.5f), + trajMod.j[idx] * planner.settings.axis_steps_per_mm[J_AXIS] + (trajMod.j[idx] < 0.0f ? -0.5f : 0.5f), + trajMod.k[idx] * planner.settings.axis_steps_per_mm[K_AXIS] + (trajMod.k[idx] < 0.0f ? -0.5f : 0.5f), + trajMod.u[idx] * planner.settings.axis_steps_per_mm[U_AXIS] + (trajMod.u[idx] < 0.0f ? -0.5f : 0.5f), + trajMod.v[idx] * planner.settings.axis_steps_per_mm[V_AXIS] + (trajMod.v[idx] < 0.0f ? -0.5f : 0.5f), + trajMod.w[idx] * planner.settings.axis_steps_per_mm[W_AXIS] + (trajMod.w[idx] < 0.0f ? -0.5f : 0.5f), + ); + xyze_long_t delta = xyze_long_t(steps_tar) - steps; + //const xyze_long_t delta = LOGICAL_AXIS_ARRAY( + // int32_t(steps_tar.e) - steps.e, + // int32_t(steps_tar.x) - steps.x, + // int32_t(steps_tar.y) - steps.y, + // int32_t(steps_tar.z) - steps.z, + // int32_t(steps_tar.i) - steps.i, + // int32_t(steps_tar.j) - steps.j, + // int32_t(steps_tar.k) - steps.k, + // int32_t(steps_tar.u) - steps.u, + // int32_t(steps_tar.v) - steps.v, + // int32_t(steps_tar.w) - steps.w + //); #else - #if HAS_X_AXIS - const int32_t x_delta = int32_t(xm[idx] * planner.settings.axis_steps_per_mm[X_AXIS]) - x_steps; - #endif - #if HAS_Y_AXIS - const int32_t y_delta = int32_t(ym[idx] * planner.settings.axis_steps_per_mm[Y_AXIS]) - y_steps; - #endif - #if HAS_Z_AXIS - const int32_t z_delta = int32_t(zm[idx] * planner.settings.axis_steps_per_mm[Z_AXIS]) - z_steps; - #endif - #if HAS_EXTRUDERS - const int32_t e_delta = int32_t(em[idx] * planner.settings.axis_steps_per_mm[E_AXIS]) - e_steps; - #endif + xyze_long_t delta = LOGICAL_AXIS_ARRAY( + int32_t(trajMod.e[idx] * planner.settings.axis_steps_per_mm[E_AXIS_N(current_block->extruder)]) - steps.e, + int32_t(trajMod.x[idx] * planner.settings.axis_steps_per_mm[X_AXIS]) - steps.x, + int32_t(trajMod.y[idx] * planner.settings.axis_steps_per_mm[Y_AXIS]) - steps.y, + int32_t(trajMod.z[idx] * planner.settings.axis_steps_per_mm[Z_AXIS]) - steps.z, + int32_t(trajMod.i[idx] * planner.settings.axis_steps_per_mm[I_AXIS]) - steps.i, + int32_t(trajMod.j[idx] * planner.settings.axis_steps_per_mm[J_AXIS]) - steps.j, + int32_t(trajMod.k[idx] * planner.settings.axis_steps_per_mm[K_AXIS]) - steps.k, + int32_t(trajMod.u[idx] * planner.settings.axis_steps_per_mm[U_AXIS]) - steps.u, + int32_t(trajMod.v[idx] * planner.settings.axis_steps_per_mm[V_AXIS]) - steps.v, + int32_t(trajMod.w[idx] * planner.settings.axis_steps_per_mm[W_AXIS]) - steps.w + ); #endif bool any_dirChange = (false - || TERN0(HAS_X_AXIS, (x_delta > 0 && x_dirState != stepDirState_POS) || (x_delta < 0 && x_dirState != stepDirState_NEG)) - || TERN0(HAS_Y_AXIS, (y_delta > 0 && y_dirState != stepDirState_POS) || (y_delta < 0 && y_dirState != stepDirState_NEG)) - || TERN0(HAS_Z_AXIS, (z_delta > 0 && z_dirState != stepDirState_POS) || (z_delta < 0 && z_dirState != stepDirState_NEG)) - || TERN0(HAS_EXTRUDERS, (e_delta > 0 && e_dirState != stepDirState_POS) || (e_delta < 0 && e_dirState != stepDirState_NEG)) + LOGICAL_AXIS_GANG( + || (delta.e > 0 && dirState.e != stepDirState_POS) || (delta.e < 0 && dirState.e != stepDirState_NEG), + || (delta.x > 0 && dirState.x != stepDirState_POS) || (delta.x < 0 && dirState.x != stepDirState_NEG), + || (delta.y > 0 && dirState.y != stepDirState_POS) || (delta.y < 0 && dirState.y != stepDirState_NEG), + || (delta.z > 0 && dirState.z != stepDirState_POS) || (delta.z < 0 && dirState.z != stepDirState_NEG), + || (delta.i > 0 && dirState.i != stepDirState_POS) || (delta.i < 0 && dirState.i != stepDirState_NEG), + || (delta.j > 0 && dirState.j != stepDirState_POS) || (delta.j < 0 && dirState.j != stepDirState_NEG), + || (delta.k > 0 && dirState.k != stepDirState_POS) || (delta.k < 0 && dirState.k != stepDirState_NEG), + || (delta.u > 0 && dirState.u != stepDirState_POS) || (delta.u < 0 && dirState.u != stepDirState_NEG), + || (delta.v > 0 && dirState.v != stepDirState_POS) || (delta.v < 0 && dirState.v != stepDirState_NEG), + || (delta.w > 0 && dirState.w != stepDirState_POS) || (delta.w < 0 && dirState.w != stepDirState_NEG) + ) ); for (uint32_t i = 0U; i < (FTM_STEPS_PER_UNIT_TIME); i++) { @@ -745,109 +694,48 @@ void FxdTiCtrl::convertToSteps(const uint32_t idx) { bool anyStep = false; + // Commands are written in a bitmask with step and dir as single bits + auto COMMAND_SET = [&](auto &d, auto &e, auto &s, auto &b, auto bd, auto bs) { + if (d >= 0) { + if (e + d < (FTM_CTS_COMPARE_VAL)) { + e += d; + } + else { + s++; + b |= bd | bs; + e += d - (FTM_STEPS_PER_UNIT_TIME); + anyStep = true; + } + } + else { + if ((e + d) > -(FTM_CTS_COMPARE_VAL)) { + e += d; + } + else { + s--; + b |= bs; + e += d + (FTM_STEPS_PER_UNIT_TIME); + anyStep = true; + } + } + }; + + // Init all step/dir bits to 0 (defaulting to reverse/negative motion) stepperCmdBuff[stepperCmdBuff_produceIdx] = 0; - // Commands are written in the format: - // |X_step|X_direction|Y_step|Y_direction|Z_step|Z_direction|E_step|E_direction| - #if HAS_X_AXIS - if (x_delta >= 0) { - if ((x_err_P + x_delta) < (FTM_CTS_COMPARE_VAL)) { - x_err_P += x_delta; - } - else { - x_steps++; - stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_X) | _BV(FT_BIT_STEP_X); - x_err_P += x_delta - (FTM_STEPS_PER_UNIT_TIME); - anyStep = true; - } - } - else { - if ((x_err_P + x_delta) > -(FTM_CTS_COMPARE_VAL)) { - x_err_P += x_delta; - } - else { - x_steps--; - stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_STEP_X); - x_err_P += x_delta + (FTM_STEPS_PER_UNIT_TIME); - anyStep = true; - } - } - #endif // HAS_X_AXIS - - #if HAS_Y_AXIS - if (y_delta >= 0) { - if ((y_err_P + y_delta) < (FTM_CTS_COMPARE_VAL)) { - y_err_P += y_delta; - } - else { - y_steps++; - stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_Y) | _BV(FT_BIT_STEP_Y); - y_err_P += y_delta - (FTM_STEPS_PER_UNIT_TIME); - anyStep = true; - } - } - else { - if ((y_err_P + y_delta) > -(FTM_CTS_COMPARE_VAL)) { - y_err_P += y_delta; - } - else { - y_steps--; - stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_STEP_Y); - y_err_P += y_delta + (FTM_STEPS_PER_UNIT_TIME); - anyStep = true; - } - } - #endif // HAS_Y_AXIS - - #if HAS_Z_AXIS - if (z_delta >= 0) { - if ((z_err_P + z_delta) < (FTM_CTS_COMPARE_VAL)) { - z_err_P += z_delta; - } - else { - z_steps++; - stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_Z) | _BV(FT_BIT_STEP_Z); - z_err_P += z_delta - (FTM_STEPS_PER_UNIT_TIME); - anyStep = true; - } - } - else { - if ((z_err_P + z_delta) > -(FTM_CTS_COMPARE_VAL)) { - z_err_P += z_delta; - } - else { - z_steps--; - stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_STEP_Z); - z_err_P += z_delta + (FTM_STEPS_PER_UNIT_TIME); - anyStep = true; - } - } - #endif // HAS_Z_AXIS - - #if HAS_EXTRUDERS - if (e_delta >= 0) { - if ((e_err_P + e_delta) < (FTM_CTS_COMPARE_VAL)) { - e_err_P += e_delta; - } - else { - e_steps++; - stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_E) | _BV(FT_BIT_STEP_E); - e_err_P += e_delta - (FTM_STEPS_PER_UNIT_TIME); - anyStep = true; - } - } - else { - if ((e_err_P + e_delta) > -(FTM_CTS_COMPARE_VAL)) { - e_err_P += e_delta; - } - else { - e_steps--; - stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_STEP_E); - e_err_P += e_delta + (FTM_STEPS_PER_UNIT_TIME); - anyStep = true; - } - } - #endif // HAS_EXTRUDERS + // Set up step/dir bits for all axes + LOGICAL_AXIS_CODE( + COMMAND_SET(delta.e, err_P.e, steps.e, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_E), _BV(FT_BIT_STEP_E)), + COMMAND_SET(delta.x, err_P.x, steps.x, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_X), _BV(FT_BIT_STEP_X)), + COMMAND_SET(delta.y, err_P.y, steps.y, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_Y), _BV(FT_BIT_STEP_Y)), + COMMAND_SET(delta.z, err_P.z, steps.z, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_Z), _BV(FT_BIT_STEP_Z)), + COMMAND_SET(delta.i, err_P.i, steps.i, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_I), _BV(FT_BIT_STEP_I)), + COMMAND_SET(delta.j, err_P.j, steps.j, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_J), _BV(FT_BIT_STEP_J)), + COMMAND_SET(delta.k, err_P.k, steps.k, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_K), _BV(FT_BIT_STEP_K)), + COMMAND_SET(delta.u, err_P.u, steps.u, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_U), _BV(FT_BIT_STEP_U)), + COMMAND_SET(delta.v, err_P.v, steps.v, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_V), _BV(FT_BIT_STEP_V)), + COMMAND_SET(delta.w, err_P.w, steps.w, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_W), _BV(FT_BIT_STEP_W)), + ); if (!anyStep) { nextStepTicks += (FTM_MIN_TICKS); @@ -858,46 +746,25 @@ void FxdTiCtrl::convertToSteps(const uint32_t idx) { const uint8_t dir_index = stepperCmdBuff_produceIdx >> 3, dir_bit = stepperCmdBuff_produceIdx & 0x7; if (any_dirChange) { + SBI(stepperCmdBuff_ApplyDir[dir_index], dir_bit); - #if HAS_X_AXIS - if (x_delta > 0) { - stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_X); - x_dirState = stepDirState_POS; - } - else { - x_dirState = stepDirState_NEG; - } - #endif - #if HAS_Y_AXIS - if (y_delta > 0) { - stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_Y); - y_dirState = stepDirState_POS; - } - else { - y_dirState = stepDirState_NEG; - } - #endif + auto DIR_SET = [&](auto &d, auto &c, auto &b, auto bd) { + if (d > 0) { b |= bd; c = stepDirState_POS; } else { c = stepDirState_NEG; } + }; - #if HAS_Z_AXIS - if (z_delta > 0) { - stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_Z); - z_dirState = stepDirState_POS; - } - else { - z_dirState = stepDirState_NEG; - } - #endif - - #if HAS_EXTRUDERS - if (e_delta > 0) { - stepperCmdBuff[stepperCmdBuff_produceIdx] |= _BV(FT_BIT_DIR_E); - e_dirState = stepDirState_POS; - } - else { - e_dirState = stepDirState_NEG; - } - #endif + LOGICAL_AXIS_CODE( + DIR_SET(delta.e, dirState.e, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_E)), + DIR_SET(delta.x, dirState.x, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_X)), + DIR_SET(delta.y, dirState.y, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_Y)), + DIR_SET(delta.z, dirState.z, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_Z)), + DIR_SET(delta.i, dirState.i, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_I)), + DIR_SET(delta.j, dirState.j, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_J)), + DIR_SET(delta.k, dirState.k, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_K)), + DIR_SET(delta.u, dirState.u, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_U)), + DIR_SET(delta.v, dirState.v, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_V)), + DIR_SET(delta.w, dirState.w, stepperCmdBuff[stepperCmdBuff_produceIdx], _BV(FT_BIT_DIR_W)), + ); any_dirChange = false; } @@ -905,12 +772,10 @@ void FxdTiCtrl::convertToSteps(const uint32_t idx) { CBI(stepperCmdBuff_ApplyDir[dir_index], dir_bit); } - if (stepperCmdBuff_produceIdx == (FTM_STEPPERCMD_BUFF_SIZE) - 1) { + if (stepperCmdBuff_produceIdx == (FTM_STEPPERCMD_BUFF_SIZE) - 1) stepperCmdBuff_produceIdx = 0; - } - else { + else stepperCmdBuff_produceIdx++; - } nextStepTicks = FTM_MIN_TICKS; } diff --git a/Marlin/src/module/ft_motion.h b/Marlin/src/module/ft_motion.h index 232d191cda..f4be977786 100644 --- a/Marlin/src/module/ft_motion.h +++ b/Marlin/src/module/ft_motion.h @@ -126,18 +126,8 @@ class FxdTiCtrl { private: - #if HAS_X_AXIS - static float xd[2 * (FTM_BATCH_SIZE)], xm[FTM_BATCH_SIZE]; - #endif - #if HAS_Y_AXIS - static float yd[2 * (FTM_BATCH_SIZE)], ym[FTM_BATCH_SIZE]; - #endif - #if HAS_Z_AXIS - static float zd[2 * (FTM_BATCH_SIZE)], zm[FTM_BATCH_SIZE]; - #endif - #if HAS_EXTRUDERS - static float ed[2 * (FTM_BATCH_SIZE)], em[FTM_BATCH_SIZE]; - #endif + static xyze_trajectory_t traj; + static xyze_trajectoryMod_t trajMod; static block_t *current_block_cpy; static bool blockProcRdy, blockProcRdy_z1, blockProcDn; @@ -145,18 +135,9 @@ class FxdTiCtrl { static bool runoutEna; // Trapezoid data variables. - #if HAS_X_AXIS - static float x_startPosn, x_endPosn_prevBlock, x_Ratio; - #endif - #if HAS_Y_AXIS - static float y_startPosn, y_endPosn_prevBlock, y_Ratio; - #endif - #if HAS_Z_AXIS - static float z_startPosn, z_endPosn_prevBlock, z_Ratio; - #endif - #if HAS_EXTRUDERS - static float e_startPosn, e_endPosn_prevBlock, e_Ratio; - #endif + static xyze_pos_t startPosn, // (mm) Start position of block + endPosn_prevBlock; // (mm) End position of previous block + static xyze_float_t ratio; // (ratio) Axis move ratio of block static float accel_P, decel_P, F_P, f_s, @@ -174,37 +155,38 @@ class FxdTiCtrl { // Interpolation variables. static uint32_t interpIdx, interpIdx_z1; - #if HAS_X_AXIS - static int32_t x_steps; - static stepDirState_t x_dirState; - #endif - #if HAS_Y_AXIS - static int32_t y_steps; - static stepDirState_t y_dirState; - #endif - #if HAS_Z_AXIS - static int32_t z_steps; - static stepDirState_t z_dirState; - #endif - #if HAS_EXTRUDERS - static int32_t e_steps; - static stepDirState_t e_dirState; - #endif + + static xyze_long_t steps; + static xyze_stepDir_t dirState; static hal_timer_t nextStepTicks; - // Shaping variables. #if HAS_X_AXIS - static uint32_t xy_zi_idx, xy_max_i; - static float xd_zi[FTM_ZMAX]; - static float x_Ai[5]; - static uint32_t x_Ni[5]; - #endif - #if HAS_Y_AXIS - static float yd_zi[FTM_ZMAX]; - static float y_Ai[5]; - static uint32_t y_Ni[5]; - #endif + + typedef struct AxisShaping { + float d_zi[FTM_ZMAX] = { 0.0f }; // Data point delay vector. + float Ai[5]; // Shaping gain vector. + uint32_t Ni[5]; // Shaping time index vector. + + void updateShapingN(const_float_t f, const_float_t df); + + } axis_shaping_t; + + typedef struct Shaping { + uint32_t zi_idx, // Index of storage in the data point delay vectors. + max_i; // Vector length for the selected shaper. + axis_shaping_t x; + #if HAS_Y_AXIS + axis_shaping_t y; + #endif + + void updateShapingA(const_float_t zeta=FTM_SHAPING_ZETA, const_float_t vtol=FTM_SHAPING_V_TOL); + + } shaping_t; + + static shaping_t shaping; // Shaping data + + #endif // HAS_X_AXIS // Linear advance variables. #if HAS_EXTRUDERS diff --git a/Marlin/src/module/ft_types.h b/Marlin/src/module/ft_types.h index a3239a9246..c4465bd37b 100644 --- a/Marlin/src/module/ft_types.h +++ b/Marlin/src/module/ft_types.h @@ -42,17 +42,30 @@ enum dynFreqMode_t : uint8_t { dynFreqMode_MASS_BASED = 2U }; -enum stepDirState_t { +enum stepDirState_t : uint8_t { stepDirState_NOT_SET = 0U, stepDirState_POS = 1U, stepDirState_NEG = 2U }; +typedef struct XYZEarray xyze_trajectory_t; +typedef struct XYZEarray xyze_trajectoryMod_t; + +typedef struct XYZEval xyze_stepDir_t; + enum { - FT_BIT_DIR_E, FT_BIT_STEP_E, - FT_BIT_DIR_Z, FT_BIT_STEP_Z, - FT_BIT_DIR_Y, FT_BIT_STEP_Y, - FT_BIT_DIR_X, FT_BIT_STEP_X, + LIST_N(DOUBLE(LOGICAL_AXES), + FT_BIT_DIR_E, FT_BIT_STEP_E, + FT_BIT_DIR_X, FT_BIT_STEP_X, + FT_BIT_DIR_Y, FT_BIT_STEP_Y, + FT_BIT_DIR_Z, FT_BIT_STEP_Z, + FT_BIT_DIR_I, FT_BIT_STEP_I, + FT_BIT_DIR_J, FT_BIT_STEP_J, + FT_BIT_DIR_K, FT_BIT_STEP_K, + FT_BIT_DIR_U, FT_BIT_STEP_U, + FT_BIT_DIR_V, FT_BIT_STEP_V, + FT_BIT_DIR_W, FT_BIT_STEP_W + ), FT_BIT_COUNT }; diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index dd761a56bb..d11842e758 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -33,6 +33,10 @@ #include "../lcd/marlinui.h" #include "../inc/MarlinConfig.h" +#if ENABLED(FT_MOTION) + #include "ft_motion.h" +#endif + #if IS_SCARA #include "../libs/buzzer.h" #include "../lcd/marlinui.h" @@ -2098,6 +2102,21 @@ void prepare_line_to_destination() { void homeaxis(const AxisEnum axis) { + #if ENABLED(FT_MOTION) + // Disable ft-motion for homing + struct OnExit { + ftMotionMode_t oldmm; + OnExit() { + oldmm = fxdTiCtrl.cfg.mode; + fxdTiCtrl.cfg.mode = ftMotionMode_DISABLED; + } + ~OnExit() { + fxdTiCtrl.cfg.mode = oldmm; + fxdTiCtrl.init(); + } + } on_exit; + #endif + #if ANY(MORGAN_SCARA, MP_SCARA) // Only Z homing (with probe) is permitted if (axis != Z_AXIS) { BUZZ(100, 880); return; } diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 66dd114616..c2915eb418 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -2608,23 +2608,23 @@ hal_timer_t Stepper::block_phase_isr() { #define Z_MOVE_TEST !!current_block->steps.c #endif - AxisBits axis_bits; + AxisBits didmove; NUM_AXIS_CODE( - if (X_MOVE_TEST) axis_bits.a = true, - if (Y_MOVE_TEST) axis_bits.b = true, - if (Z_MOVE_TEST) axis_bits.c = true, - if (current_block->steps.i) axis_bits.i = true, - if (current_block->steps.j) axis_bits.j = true, - if (current_block->steps.k) axis_bits.k = true, - if (current_block->steps.u) axis_bits.u = true, - if (current_block->steps.v) axis_bits.v = true, - if (current_block->steps.w) axis_bits.w = true + if (X_MOVE_TEST) didmove.a = true, + if (Y_MOVE_TEST) didmove.b = true, + if (Z_MOVE_TEST) didmove.c = true, + if (current_block->steps.i) didmove.i = true, + if (current_block->steps.j) didmove.j = true, + if (current_block->steps.k) didmove.k = true, + if (current_block->steps.u) didmove.u = true, + if (current_block->steps.v) didmove.v = true, + if (current_block->steps.w) didmove.w = true ); - //if (current_block->steps.e) axis_bits.e = true; - //if (current_block->steps.a) axis_bits.x = true; - //if (current_block->steps.b) axis_bits.y = true; - //if (current_block->steps.c) axis_bits.z = true; - axis_did_move = axis_bits; + //if (current_block->steps.e) didmove.e = true; + //if (current_block->steps.a) didmove.x = true; + //if (current_block->steps.b) didmove.y = true; + //if (current_block->steps.c) didmove.z = true; + axis_did_move = didmove; // No acceleration / deceleration time elapsed so far acceleration_time = deceleration_time = 0; @@ -2758,7 +2758,7 @@ hal_timer_t Stepper::block_phase_isr() { } #endif } - } + } // !current_block // Return the interval to wait return interval; @@ -3136,9 +3136,9 @@ void Stepper::init() { * when shaping an axis. */ void Stepper::set_shaping_damping_ratio(const AxisEnum axis, const_float_t zeta) { - // from the damping ratio, get a factor that can be applied to advance_dividend for fixed point maths - // for ZV, we use amplitudes 1/(1+K) and K/(1+K) where K = exp(-zeta * M_PI / sqrt(1.0f - zeta * zeta)) - // which can be converted to 1:7 fixed point with an excellent fit with a 3rd order polynomial + // From the damping ratio, get a factor that can be applied to advance_dividend for fixed-point maths. + // For ZV, we use amplitudes 1/(1+K) and K/(1+K) where K = exp(-zeta * π / sqrt(1.0f - zeta * zeta)) + // which can be converted to 1:7 fixed point with an excellent fit with a 3rd-order polynomial. float factor2; if (zeta <= 0.0f) factor2 = 64.0f; else if (zeta >= 1.0f) factor2 = 0.0f; @@ -3411,39 +3411,93 @@ void Stepper::report_positions() { USING_TIMED_PULSE(); - #if HAS_Z_AXIS - // Z is handled differently to update the stepper - // counts (needed by Marlin for bed level probing). - const bool z_fwd = TEST(command, FT_BIT_DIR_Z), - z_step = TEST(command, FT_BIT_STEP_Z); - #endif + const xyze_bool_t axis_step = LOGICAL_AXIS_ARRAY( + TEST(command, FT_BIT_STEP_E), + TEST(command, FT_BIT_STEP_X), TEST(command, FT_BIT_STEP_Y), TEST(command, FT_BIT_STEP_Z), + TEST(command, FT_BIT_STEP_I), TEST(command, FT_BIT_STEP_J), TEST(command, FT_BIT_STEP_K), + TEST(command, FT_BIT_STEP_U), TEST(command, FT_BIT_STEP_V), TEST(command, FT_BIT_STEP_W) + ); + // Apply directions (which will apply to the entire linear move) + AxisBits axis_dir = last_direction_bits; if (applyDir) { - TERN_(HAS_X_AXIS, X_APPLY_DIR(TEST(command, FT_BIT_DIR_X), false)); - TERN_(HAS_Y_AXIS, Y_APPLY_DIR(TEST(command, FT_BIT_DIR_Y), false)); - TERN_(HAS_Z_AXIS, Z_APPLY_DIR(z_fwd, false)); - TERN_(HAS_EXTRUDERS, E_APPLY_DIR(TEST(command, FT_BIT_DIR_E), false)); + axis_dir = LOGICAL_AXIS_ARRAY( + TEST(command, FT_BIT_DIR_E), + TEST(command, FT_BIT_DIR_X), TEST(command, FT_BIT_DIR_Y), TEST(command, FT_BIT_DIR_Z), + TEST(command, FT_BIT_DIR_I), TEST(command, FT_BIT_DIR_J), TEST(command, FT_BIT_DIR_K), + TEST(command, FT_BIT_DIR_U), TEST(command, FT_BIT_DIR_V), TEST(command, FT_BIT_DIR_W) + ); + LOGICAL_AXIS_CODE( + E_APPLY_DIR(axis_dir.e, false), + X_APPLY_DIR(axis_dir.x, false), Y_APPLY_DIR(axis_dir.y, false), Z_APPLY_DIR(axis_dir.z, false), + I_APPLY_DIR(axis_dir.i, false), J_APPLY_DIR(axis_dir.j, false), K_APPLY_DIR(axis_dir.k, false), + U_APPLY_DIR(axis_dir.u, false), V_APPLY_DIR(axis_dir.v, false), W_APPLY_DIR(axis_dir.w, false) + ); + last_direction_bits = axis_dir; DIR_WAIT_AFTER(); } - TERN_(HAS_X_AXIS, X_APPLY_STEP(TEST(command, FT_BIT_STEP_X), false)); - TERN_(HAS_Y_AXIS, Y_APPLY_STEP(TEST(command, FT_BIT_STEP_Y), false)); - TERN_(HAS_Z_AXIS, Z_APPLY_STEP(z_step, false)); - TERN_(HAS_EXTRUDERS, E_APPLY_STEP(TEST(command, FT_BIT_STEP_E), false)); + // Start a step pulse + LOGICAL_AXIS_CODE( + if (axis_step.e) E_APPLY_STEP(STEP_STATE_E, false), + if (axis_step.x) X_APPLY_STEP(STEP_STATE_X, false), if (axis_step.y) Y_APPLY_STEP(STEP_STATE_Y, false), + if (axis_step.z) Z_APPLY_STEP(STEP_STATE_Z, false), if (axis_step.i) I_APPLY_STEP(STEP_STATE_I, false), + if (axis_step.j) J_APPLY_STEP(STEP_STATE_J, false), if (axis_step.k) K_APPLY_STEP(STEP_STATE_K, false), + if (axis_step.u) U_APPLY_STEP(STEP_STATE_U, false), if (axis_step.v) V_APPLY_STEP(STEP_STATE_V, false), + if (axis_step.w) W_APPLY_STEP(STEP_STATE_W, false) + ); + // Begin waiting for the minimum pulse duration START_TIMED_PULSE(); - #if HAS_Z_AXIS - // Update step counts - if (z_step) count_position.z += z_fwd ? 1 : -1; + // Update axis direction adders + count_direction = LOGICAL_AXIS_ARRAY( + int8_t(axis_dir.e ? 1 : -1), + int8_t(axis_dir.x ? 1 : -1), int8_t(axis_dir.y ? 1 : -1), int8_t(axis_dir.z ? 1 : -1), + int8_t(axis_dir.i ? 1 : -1), int8_t(axis_dir.j ? 1 : -1), int8_t(axis_dir.k ? 1 : -1), + int8_t(axis_dir.u ? 1 : -1), int8_t(axis_dir.v ? 1 : -1), int8_t(axis_dir.w ? 1 : -1) + ); + + // Update stepper counts - required for various operations + LOGICAL_AXIS_CODE( + if (axis_step.e) count_position.e += count_direction.e, + if (axis_step.x) count_position.x += count_direction.x, if (axis_step.y) count_position.y += count_direction.y, + if (axis_step.z) count_position.z += count_direction.z, if (axis_step.i) count_position.i += count_direction.i, + if (axis_step.j) count_position.j += count_direction.j, if (axis_step.k) count_position.k += count_direction.k, + if (axis_step.u) count_position.u += count_direction.u, if (axis_step.v) count_position.v += count_direction.v, + if (axis_step.w) count_position.w += count_direction.w + ); + + #if HAS_EXTRUDERS + #if ENABLED(E_DUAL_STEPPER_DRIVERS) + constexpr bool e_axis_has_dedge = AXIS_HAS_DEDGE(E0) && AXIS_HAS_DEDGE(E1); + #else + #define _EDGE_BIT(N) | (AXIS_HAS_DEDGE(E##N) << TOOL_ESTEPPER(N)) + constexpr Flags e_stepper_dedge { 0 REPEAT(EXTRUDERS, _EDGE_BIT) }; + const bool e_axis_has_dedge = e_stepper_dedge[stepper_extruder]; + #endif #endif - AWAIT_HIGH_PULSE(); + // Only wait for axes without edge stepping + const bool any_wait = false LOGICAL_AXIS_GANG( + || (!e_axis_has_dedge && axis_step.e), + || (!AXIS_HAS_DEDGE(X) && axis_step.x), || (!AXIS_HAS_DEDGE(Y) && axis_step.y), || (!AXIS_HAS_DEDGE(Z) && axis_step.z), + || (!AXIS_HAS_DEDGE(I) && axis_step.i), || (!AXIS_HAS_DEDGE(J) && axis_step.j), || (!AXIS_HAS_DEDGE(K) && axis_step.k), + || (!AXIS_HAS_DEDGE(U) && axis_step.u), || (!AXIS_HAS_DEDGE(V) && axis_step.v), || (!AXIS_HAS_DEDGE(W) && axis_step.w) + ); - TERN_(HAS_X_AXIS, X_APPLY_STEP(0, false)); - TERN_(HAS_Y_AXIS, Y_APPLY_STEP(0, false)); - TERN_(HAS_Z_AXIS, Z_APPLY_STEP(0, false)); - TERN_(HAS_EXTRUDERS, E_APPLY_STEP(0, false)); + // Allow pulses to be registered by stepper drivers + if (any_wait) AWAIT_HIGH_PULSE(); + + // Stop pulses. Axes with DEDGE will do nothing, assuming STEP_STATE_* is HIGH + LOGICAL_AXIS_CODE( + if (axis_step.e) E_APPLY_STEP(!STEP_STATE_E, false), + if (axis_step.x) X_APPLY_STEP(!STEP_STATE_X, false), if (axis_step.y) Y_APPLY_STEP(!STEP_STATE_Y, false), + if (axis_step.z) Z_APPLY_STEP(!STEP_STATE_Z, false), if (axis_step.i) I_APPLY_STEP(!STEP_STATE_I, false), + if (axis_step.j) J_APPLY_STEP(!STEP_STATE_J, false), if (axis_step.k) K_APPLY_STEP(!STEP_STATE_K, false), + if (axis_step.u) U_APPLY_STEP(!STEP_STATE_U, false), if (axis_step.v) V_APPLY_STEP(!STEP_STATE_V, false), + if (axis_step.w) W_APPLY_STEP(!STEP_STATE_W, false) + ); } // Stepper::fxdTiCtrl_stepper @@ -3499,28 +3553,17 @@ void Stepper::report_positions() { // or the set conditions should be changed from the block to // the motion trajectory or motor commands. - AxisBits axis_bits; + AxisBits didmove; + static abce_ulong_t debounce{0}; + auto debounce_axis = [&](const AxisEnum axis) { + if (current_block->steps[axis]) debounce[axis] = (AXIS_DID_MOVE_DEB) * 400; // divide by 0.0025f */ + if (debounce[axis]) { didmove.bset(axis); debounce[axis]--; } + }; + #define _DEBOUNCE(N) debounce_axis(AxisEnum(N)); - static uint32_t a_debounce = 0U; - if (!!current_block->steps.a) a_debounce = (AXIS_DID_MOVE_DEB) * 400; // divide by 0.0025f - if (a_debounce) { axis_bits.a = true; a_debounce--; } - #if HAS_Y_AXIS - static uint32_t b_debounce = 0U; - if (!!current_block->steps.b) b_debounce = (AXIS_DID_MOVE_DEB) * 400; - if (b_debounce) { axis_bits.b = true; b_debounce--; } - #endif - #if HAS_Z_AXIS - static uint32_t c_debounce = 0U; - if (!!current_block->steps.c) c_debounce = (AXIS_DID_MOVE_DEB) * 400; - if (c_debounce) { axis_bits.c = true; c_debounce--; } - #endif - #if HAS_EXTRUDERS - static uint32_t e_debounce = 0U; - if (!!current_block->steps.e) e_debounce = (AXIS_DID_MOVE_DEB) * 400; - if (e_debounce) { axis_bits.e = true; e_debounce--; } - #endif + if (current_block) { REPEAT(LOGICAL_AXES, _DEBOUNCE); } - axis_did_move = axis_bits; + axis_did_move = didmove; } #endif // FT_MOTION diff --git a/Marlin/src/module/stepper/indirection.h b/Marlin/src/module/stepper/indirection.h index d48ff8ae93..e82ab66e00 100644 --- a/Marlin/src/module/stepper/indirection.h +++ b/Marlin/src/module/stepper/indirection.h @@ -573,6 +573,8 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #define REV_E_DIR(E) do{ E0_DIR_WRITE((E) ? HIGH : LOW ); }while(0) #endif + #define TOOL_ESTEPPER(T) ((T) >> 1) + #elif HAS_PRUSA_MMU2 // One multiplexed stepper driver #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V) @@ -726,6 +728,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif +#ifndef TOOL_ESTEPPER + #define TOOL_ESTEPPER(T) (T) +#endif + // // Individual stepper enable / disable macros // diff --git a/buildroot/tests/STM32F103RC_btt b/buildroot/tests/STM32F103RC_btt index d0da6305e5..8df20740c4 100755 --- a/buildroot/tests/STM32F103RC_btt +++ b/buildroot/tests/STM32F103RC_btt @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Build tests for STM32F103RC BigTreeTech (SKR Mini E3) +# Build tests for STM32F103RC_btt (BigTreeTech SKR Mini E3) # # exit on first failure From 18ccc404432f4b9a71cd8bd855ccc243414abcab Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 22 Jun 2023 12:06:59 +0000 Subject: [PATCH 570/659] [cron] Bump distribution date (2023-06-22) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index c56209a2dc..01854ff0d0 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-20" +//#define STRING_DISTRIBUTION_DATE "2023-06-22" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 76f1400e82..2a14e27536 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-20" + #define STRING_DISTRIBUTION_DATE "2023-06-22" #endif /** From 1fbeac7b5255634bb5aca209a3d3dcb6b5e43193 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 23 Jun 2023 00:15:54 -0500 Subject: [PATCH 571/659] =?UTF-8?q?=F0=9F=8E=A8=20Adjust=20TFT=20code/comm?= =?UTF-8?q?ents?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/tft/canvas.cpp | 8 +-- Marlin/src/lcd/tft/tft_image.cpp | 2 +- Marlin/src/lcd/tft/tft_image.h | 2 +- Marlin/src/lcd/tft/tft_queue.cpp | 4 +- Marlin/src/lcd/tft/touch.cpp | 6 +-- Marlin/src/lcd/tft/ui_1024x600.cpp | 57 ++++++++++----------- Marlin/src/lcd/tft/ui_320x240.cpp | 79 +++++++++++++----------------- Marlin/src/lcd/tft/ui_480x320.cpp | 42 ++++++++-------- 8 files changed, 93 insertions(+), 107 deletions(-) diff --git a/Marlin/src/lcd/tft/canvas.cpp b/Marlin/src/lcd/tft/canvas.cpp index 04817570e1..4a056524a2 100644 --- a/Marlin/src/lcd/tft/canvas.cpp +++ b/Marlin/src/lcd/tft/canvas.cpp @@ -96,12 +96,12 @@ void Canvas::addText(uint16_t x, uint16_t y, uint16_t color, uint16_t *string, u } void Canvas::addImage(int16_t x, int16_t y, MarlinImage image, uint16_t *colors) { - uint16_t *data = (uint16_t *)Images[image].data; + uint16_t *data = (uint16_t *)images[image].data; if (!data) return; - uint16_t image_width = Images[image].width, - image_height = Images[image].height; - colorMode_t color_mode = Images[image].colorMode; + uint16_t image_width = images[image].width, + image_height = images[image].height; + colorMode_t color_mode = images[image].colorMode; if (color_mode != HIGHCOLOR) return addImage(x, y, image_width, image_height, color_mode, (uint8_t *)data, colors); diff --git a/Marlin/src/lcd/tft/tft_image.cpp b/Marlin/src/lcd/tft/tft_image.cpp index 3651899dd7..507b5f582c 100644 --- a/Marlin/src/lcd/tft/tft_image.cpp +++ b/Marlin/src/lcd/tft/tft_image.cpp @@ -75,7 +75,7 @@ const tImage Leveling_32x32x4 = { (void *)leveling_32x32x4, 32, 32, GREYSC const tImage Slider8x16x4 = { (void *)slider_8x16x4, 8, 16, GREYSCALE4 }; -const tImage Images[imgCount] = { +const tImage images[imgCount] = { TERN(SHOW_BOOTSCREEN, TERN(BOOT_MARLIN_LOGO_SMALL, MarlinLogo195x59x16, MARLIN_LOGO_FULL_SIZE), NoLogo), HotEnd_64x64x4, Bed_64x64x4, diff --git a/Marlin/src/lcd/tft/tft_image.h b/Marlin/src/lcd/tft/tft_image.h index aeb1ca2bf5..d202e3d0f6 100644 --- a/Marlin/src/lcd/tft/tft_image.h +++ b/Marlin/src/lcd/tft/tft_image.h @@ -175,4 +175,4 @@ extern const tImage Leveling_32x32x4; extern const tImage Slider8x16x4; -extern const tImage Images[imgCount]; +extern const tImage images[imgCount]; diff --git a/Marlin/src/lcd/tft/tft_queue.cpp b/Marlin/src/lcd/tft/tft_queue.cpp index fb96a440ea..f66418a25b 100644 --- a/Marlin/src/lcd/tft/tft_queue.cpp +++ b/Marlin/src/lcd/tft/tft_queue.cpp @@ -289,7 +289,7 @@ void TFT_Queue::add_image(int16_t x, int16_t y, MarlinImage image, uint16_t *col task_parameters->count++; parameters->nextParameter = end_of_queue; - colorMode_t color_mode = Images[image].colorMode; + colorMode_t color_mode = images[image].colorMode; if (color_mode == HIGHCOLOR) return; @@ -325,7 +325,7 @@ uint16_t gradient(uint16_t colorA, uint16_t colorB, uint16_t factor) { void TFT_Queue::add_image(int16_t x, int16_t y, MarlinImage image, uint16_t color_main, uint16_t color_background, uint16_t color_shadow) { uint16_t colors[16]; - colorMode_t color_mode = Images[image].colorMode; + colorMode_t color_mode = images[image].colorMode; uint16_t i; switch (color_mode) { diff --git a/Marlin/src/lcd/tft/touch.cpp b/Marlin/src/lcd/tft/touch.cpp index 443a74480d..0c742071ff 100644 --- a/Marlin/src/lcd/tft/touch.cpp +++ b/Marlin/src/lcd/tft/touch.cpp @@ -324,12 +324,10 @@ bool MarlinUI::touch_pressed() { } void add_control(uint16_t x, uint16_t y, TouchControlType control_type, intptr_t data, MarlinImage image, bool is_enabled, uint16_t color_enabled, uint16_t color_disabled) { - uint16_t width = Images[image].width; - uint16_t height = Images[image].height; + const uint16_t width = images[image].width, height = images[image].height; tft.canvas(x, y, width, height); tft.add_image(0, 0, image, is_enabled ? color_enabled : color_disabled); - if (is_enabled) - touch.add_control(control_type, x, y, width, height, data); + if (is_enabled) touch.add_control(control_type, x, y, width, height, data); } #endif // TOUCH_SCREEN diff --git a/Marlin/src/lcd/tft/ui_1024x600.cpp b/Marlin/src/lcd/tft/ui_1024x600.cpp index 84495fbaba..b5d12cdab3 100644 --- a/Marlin/src/lcd/tft/ui_1024x600.cpp +++ b/Marlin/src/lcd/tft/ui_1024x600.cpp @@ -225,11 +225,10 @@ void MarlinUI::draw_status_screen() { TERN_(TOUCH_SCREEN, touch.clear()); - // heaters and fan - uint16_t i, x, y = TFT_STATUS_TOP_Y; - - for (i = 0 ; i < ITEMS_COUNT; i++) { - x = (TFT_WIDTH / ITEMS_COUNT - 80) / 2 + (TFT_WIDTH * i / ITEMS_COUNT); + // Statuses of heaters and fans + uint16_t y = TFT_STATUS_TOP_Y; + for (uint16_t i = 0 ; i < ITEMS_COUNT; i++) { + const uint16_t x = (TFT_WIDTH / ITEMS_COUNT - 80) / 2 + (TFT_WIDTH * i / ITEMS_COUNT); switch (i) { #if HAS_EXTRUDERS case ITEM_E0: draw_heater_status(x, y, H_E0); break; @@ -257,7 +256,7 @@ void MarlinUI::draw_status_screen() { y += 200; - // coordinates + // Coordinates tft.canvas(4, y, TFT_WIDTH - 8, FONT_LINE_HEIGHT); tft.set_background(COLOR_BACKGROUND); tft.add_rectangle(0, 0, TFT_WIDTH - 8, FONT_LINE_HEIGHT, COLOR_AXIS_HOMED); @@ -315,7 +314,7 @@ void MarlinUI::draw_status_screen() { TERN_(TOUCH_SCREEN, touch.add_control(MOVE_AXIS, 4, y, TFT_WIDTH - 8, FONT_LINE_HEIGHT)); y += 100; - // feed rate + // Feed rate tft.canvas(274, y, 128, 32); tft.set_background(COLOR_BACKGROUND); uint16_t color = feedrate_percentage == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; @@ -349,7 +348,7 @@ void MarlinUI::draw_status_screen() { #endif y += 100; - // print duration + // Print duration char buffer[14]; duration_t elapsed = print_job_timer.duration(); elapsed.toDigital(buffer); @@ -360,7 +359,7 @@ void MarlinUI::draw_status_screen() { tft.add_text(tft_string.center(128), 0, COLOR_PRINT_TIME, tft_string); y += 50; - // progress bar + // Progress bar const uint8_t progress = ui.get_progress_percent(); tft.canvas(4, y, TFT_WIDTH - 8, 9); tft.set_background(COLOR_PROGRESS_BG); @@ -369,7 +368,7 @@ void MarlinUI::draw_status_screen() { tft.add_bar(1, 1, ((TFT_WIDTH - 10) * progress) / 100, 7, COLOR_PROGRESS_BAR); y += 50; - // status message + // Status message tft.canvas(0, y, TFT_WIDTH, FONT_LINE_HEIGHT); tft.set_background(COLOR_BACKGROUND); tft_string.set(status_message); @@ -736,29 +735,28 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { probe.offset.z = new_offs; else TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); - drawMessage(F("")); // clear the error + drawMessage(F("")); // Clear the error drawAxisValue(axis); } else drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); #else - // only change probe.offset.z + // Only change probe.offset.z probe.offset.z += diff; - if (direction < 0 && current_position[axis] < Z_PROBE_OFFSET_RANGE_MIN) { - current_position[axis] = Z_PROBE_OFFSET_RANGE_MIN; + if (direction < 0 && current_position.z < Z_PROBE_OFFSET_RANGE_MIN) { + current_position.z = Z_PROBE_OFFSET_RANGE_MIN; drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); } - else if (direction > 0 && current_position[axis] > Z_PROBE_OFFSET_RANGE_MAX) { - current_position[axis] = Z_PROBE_OFFSET_RANGE_MAX; + else if (direction > 0 && current_position.z > Z_PROBE_OFFSET_RANGE_MAX) { + current_position.z = Z_PROBE_OFFSET_RANGE_MAX; drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); } else - drawMessage(F("")); // clear the error + drawMessage(F("")); // Clear the error drawAxisValue(axis); #endif - return; } #endif // HAS_BED_PROBE @@ -854,9 +852,9 @@ static void disable_steppers() { queue.inject(F("M84")); } -static void drawBtn(int x, int y, const char *label, intptr_t data, MarlinImage img, uint16_t bgColor, bool enabled = true) { - const uint16_t width = Images[imgBtn52Rounded].width, - height = Images[imgBtn52Rounded].height; +static void drawBtn(const int x, const int y, const char *label, intptr_t data, const MarlinImage img, uint16_t bgColor, const bool enabled=true) { + const uint16_t width = images[imgBtn52Rounded].width, + height = images[imgBtn52Rounded].height; if (!enabled) bgColor = COLOR_CONTROL_DISABLED; @@ -870,9 +868,8 @@ static void drawBtn(int x, int y, const char *label, intptr_t data, MarlinImage tft_string.trim(); tft.add_text(tft_string.center(width), height / 2 - tft_string.font_height() / 2, bgColor, tft_string); } - else { + else tft.add_image(0, 0, img, bgColor, COLOR_BACKGROUND, COLOR_DARKGREY); - } TERN_(TOUCH_SCREEN, if (enabled) touch.add_control(BUTTON, x, y, width, height, data)); } @@ -914,7 +911,7 @@ void MarlinUI::move_axis_screen() { x += spacing; #if HAS_Z_AXIS - drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have baby step #endif // ROW 2 -> "Ex" X- HOME X+ "Z" @@ -935,11 +932,11 @@ void MarlinUI::move_axis_screen() { x += BTN_WIDTH + spacing; //imgHome is 64x64 #if ALL(HAS_X_AXIS, TOUCH_SCREEN) - add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy); + add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy); #endif x += BTN_WIDTH + spacing; - uint16_t xplus_x = x; + const uint16_t xplus_x = x; TERN_(HAS_X_AXIS, drawBtn(x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy)); @@ -965,16 +962,20 @@ void MarlinUI::move_axis_screen() { TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); #endif + // Cur X #if HAS_X_AXIS motionAxisState.xValuePos.set(BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4, y - 10); drawAxisValue(X_AXIS); #endif x += BTN_WIDTH + spacing; + + // Cur Y TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); x += BTN_WIDTH + spacing; + // Cur Z #if HAS_Z_AXIS drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have babystep motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); @@ -990,10 +991,10 @@ void MarlinUI::move_axis_screen() { TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, x, y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); } - // aligned with x+ + // Aligned with x+ drawBtn(xplus_x, TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT, "off", (intptr_t)disable_steppers, imgCancel, COLOR_WHITE, !busy); TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); } -#endif // HAS_UI_480x320 +#endif // HAS_UI_1024x600 diff --git a/Marlin/src/lcd/tft/ui_320x240.cpp b/Marlin/src/lcd/tft/ui_320x240.cpp index 8409b550a1..c39d226517 100644 --- a/Marlin/src/lcd/tft/ui_320x240.cpp +++ b/Marlin/src/lcd/tft/ui_320x240.cpp @@ -227,11 +227,10 @@ void MarlinUI::draw_status_screen() { TERN_(TOUCH_SCREEN, touch.clear()); - // heaters and fan - uint16_t i, x, y = TFT_STATUS_TOP_Y; - - for (i = 0 ; i < ITEMS_COUNT; i++) { - x = (TFT_WIDTH / ITEMS_COUNT - 64) / 2 + (TFT_WIDTH * i / ITEMS_COUNT); + // Statuses of heaters and fans + const uint16_t y = TFT_STATUS_TOP_Y; + for (uint16_t i = 0 ; i < ITEMS_COUNT; i++) { + const uint16_t x = (TFT_WIDTH / ITEMS_COUNT - 64) / 2 + (TFT_WIDTH * i / ITEMS_COUNT); switch (i) { #if HAS_EXTRUDERS case ITEM_E0: draw_heater_status(x, y, H_E0); break; @@ -257,27 +256,16 @@ void MarlinUI::draw_status_screen() { } } - // coordinates - tft.canvas(4, 103, - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 232, FONT_LINE_HEIGHT * 2 - #else - 312, FONT_LINE_HEIGHT - #endif - ); + // 2nd horizontal group - current coordinates (height = 24, top margin = 3) + uint16_t width = TERN(TFT_COLOR_UI_PORTRAIT, 232, 312), + height = FONT_LINE_HEIGHT * TERN(TFT_COLOR_UI_PORTRAIT, 2, 1); + tft.canvas(4, 103, width, height); tft.set_background(COLOR_BACKGROUND); - tft.add_rectangle(0, 0, - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 232, FONT_LINE_HEIGHT * 2 - #else - 312, FONT_LINE_HEIGHT - #endif - , COLOR_AXIS_HOMED - ); + tft.add_rectangle(0, 0, width, height, COLOR_AXIS_HOMED); if (TERN0(LCD_SHOW_E_TOTAL, printingIsActive())) { #if ENABLED(LCD_SHOW_E_TOTAL) - tft.add_text( 10, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "E"); + tft.add_text(10, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "E"); const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm tft_string.set(ftostr4sign(e_move_accumulator / escale)); tft_string.add(escale == 10 ? 'c' : 'm'); @@ -347,7 +335,7 @@ void MarlinUI::draw_status_screen() { #endif )); - // feed rate + // Feed rate tft.canvas( #if ENABLED(TFT_COLOR_UI_PORTRAIT) 30, 172, 80 @@ -397,7 +385,7 @@ void MarlinUI::draw_status_screen() { )); #endif // HAS_EXTRUDERS - // print duration + // Print duration char buffer[14]; duration_t elapsed = print_job_timer.duration(); elapsed.toDigital(buffer); @@ -414,7 +402,7 @@ void MarlinUI::draw_status_screen() { tft_string.set(buffer); tft.add_text(tft_string.center(128), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_PRINT_TIME, tft_string); - // progress bar + // Progress bar const uint8_t progress = ui.get_progress_percent(); tft.canvas( #if ENABLED(TFT_COLOR_UI_PORTRAIT) @@ -436,7 +424,7 @@ void MarlinUI::draw_status_screen() { if (progress) tft.add_bar(1, 1, ((TFT_WIDTH - 10) * progress) / 100, 7, COLOR_PROGRESS_BAR); - // status message + // Status message tft.canvas( #if ENABLED(TFT_COLOR_UI_PORTRAIT) 0, 296, 240 @@ -828,29 +816,28 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { probe.offset.z = new_offs; else TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); - drawMessage(NUL_STR); // clear the error + drawMessage(NUL_STR); // Clear the error drawAxisValue(axis); } else drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); #else - // only change probe.offset.z + // Only change probe.offset.z probe.offset.z += diff; - if (direction < 0 && current_position[axis] < Z_PROBE_OFFSET_RANGE_MIN) { - current_position[axis] = Z_PROBE_OFFSET_RANGE_MIN; + if (direction < 0 && current_position.z < Z_PROBE_OFFSET_RANGE_MIN) { + current_position.z = Z_PROBE_OFFSET_RANGE_MIN; drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); } - else if (direction > 0 && current_position[axis] > Z_PROBE_OFFSET_RANGE_MAX) { - current_position[axis] = Z_PROBE_OFFSET_RANGE_MAX; + else if (direction > 0 && current_position.z > Z_PROBE_OFFSET_RANGE_MAX) { + current_position.z = Z_PROBE_OFFSET_RANGE_MAX; drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); } else - drawMessage(NUL_STR); // clear the error + drawMessage(NUL_STR); // Clear the error drawAxisValue(axis); #endif - return; } #endif // HAS_BED_PROBE @@ -947,9 +934,9 @@ static void disable_steppers() { queue.inject(F("M84")); } -static void drawBtn(int x, int y, const char *label, intptr_t data, MarlinImage img, uint16_t bgColor, bool enabled = true) { - const uint16_t width = Images[imgBtn39Rounded].width, - height = Images[imgBtn39Rounded].height; +static void drawBtn(const int x, const int y, const char *label, intptr_t data, const MarlinImage img, uint16_t bgColor, const bool enabled=true) { + const uint16_t width = images[imgBtn39Rounded].width, + height = images[imgBtn39Rounded].height; if (!enabled) bgColor = COLOR_CONTROL_DISABLED; @@ -1003,7 +990,7 @@ void MarlinUI::move_axis_screen() { uint16_t zplus_x = x; #if HAS_Z_AXIS - drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have baby step #endif // ROW 2 -> "Ex" CurY "Z" @@ -1032,7 +1019,7 @@ void MarlinUI::move_axis_screen() { #if HAS_X_AXIS drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy); - TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); drawBtn(zplus_x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy); #endif @@ -1080,7 +1067,7 @@ void MarlinUI::move_axis_screen() { TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); } - // aligned with x+ + // Aligned with x+ drawBtn(yplus_x, y, "off", (intptr_t)disable_steppers, imgCancel, COLOR_WHITE, !busy); #else // !TFT_COLOR_UI_PORTRAIT @@ -1127,11 +1114,11 @@ void MarlinUI::move_axis_screen() { x += BTN_WIDTH + spacing; //imgHome is 64x64 #if ALL(HAS_X_AXIS, TOUCH_SCREEN) - add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy); + add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy); #endif x += BTN_WIDTH + spacing; - uint16_t xplus_x = x; + const uint16_t xplus_x = x; TERN_(HAS_X_AXIS, drawBtn(x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy)); @@ -1157,6 +1144,7 @@ void MarlinUI::move_axis_screen() { TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); #endif + // Cur X #if HAS_X_AXIS motionAxisState.xValuePos.set(BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4, y - 10); drawAxisValue(X_AXIS); @@ -1164,15 +1152,14 @@ void MarlinUI::move_axis_screen() { x += BTN_WIDTH + spacing; + // Cur Y TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); x += BTN_WIDTH + spacing; + // Cur Z #if HAS_Z_AXIS drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step - #endif - - #if HAS_Z_AXIS motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); drawAxisValue(Z_AXIS); #endif @@ -1186,7 +1173,7 @@ void MarlinUI::move_axis_screen() { TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); } - // aligned with x+ + // Aligned with x+ drawBtn(xplus_x, y, "off", (intptr_t)disable_steppers, imgCancel, COLOR_WHITE, !busy); #endif // !TFT_COLOR_UI_PORTRAIT diff --git a/Marlin/src/lcd/tft/ui_480x320.cpp b/Marlin/src/lcd/tft/ui_480x320.cpp index 9b23577c46..14d7da7ee4 100644 --- a/Marlin/src/lcd/tft/ui_480x320.cpp +++ b/Marlin/src/lcd/tft/ui_480x320.cpp @@ -264,7 +264,7 @@ void MarlinUI::draw_status_screen() { if (TERN0(LCD_SHOW_E_TOTAL, printingIsActive())) { #if ENABLED(LCD_SHOW_E_TOTAL) - tft.add_text( 16, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "E"); + tft.add_text(16, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "E"); const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm tft_string.set(ftostr4sign(e_move_accumulator / escale)); tft_string.add(escale == 10 ? 'c' : 'm'); @@ -745,29 +745,28 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) { probe.offset.z = new_offs; else TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); - drawMessage(NUL_STR); // clear the error + drawMessage(NUL_STR); // Clear the error drawAxisValue(axis); } else drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); #else - // only change probe.offset.z + // Only change probe.offset.z probe.offset.z += diff; - if (direction < 0 && current_position[axis] < Z_PROBE_OFFSET_RANGE_MIN) { - current_position[axis] = Z_PROBE_OFFSET_RANGE_MIN; + if (direction < 0 && current_position.z < Z_PROBE_OFFSET_RANGE_MIN) { + current_position.z = Z_PROBE_OFFSET_RANGE_MIN; drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); } - else if (direction > 0 && current_position[axis] > Z_PROBE_OFFSET_RANGE_MAX) { - current_position[axis] = Z_PROBE_OFFSET_RANGE_MAX; + else if (direction > 0 && current_position.z > Z_PROBE_OFFSET_RANGE_MAX) { + current_position.z = Z_PROBE_OFFSET_RANGE_MAX; drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); } else - drawMessage(NUL_STR); // clear the error + drawMessage(NUL_STR); // Clear the error drawAxisValue(axis); #endif - return; } #endif // HAS_BED_PROBE @@ -863,9 +862,9 @@ static void disable_steppers() { queue.inject(F("M84")); } -static void drawBtn(int x, int y, const char *label, intptr_t data, MarlinImage img, uint16_t bgColor, bool enabled = true) { - const uint16_t width = Images[imgBtn52Rounded].width, - height = Images[imgBtn52Rounded].height; +static void drawBtn(const int x, const int y, const char *label, intptr_t data, const MarlinImage img, uint16_t bgColor, const bool enabled=true) { + const uint16_t width = images[imgBtn52Rounded].width, + height = images[imgBtn52Rounded].height; if (!enabled) bgColor = COLOR_CONTROL_DISABLED; @@ -953,7 +952,7 @@ void MarlinUI::move_axis_screen() { #if HAS_X_AXIS drawBtn(TFT_WIDTH / 6 - BTN_WIDTH / 2, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy); - TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); drawBtn(TFT_WIDTH * 5 / 6 - BTN_WIDTH / 2, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy); #endif @@ -1018,7 +1017,7 @@ void MarlinUI::move_axis_screen() { drawBtn(TFT_WIDTH / 2, y, "off", (intptr_t)disable_steppers, imgCancel, COLOR_WHITE, !busy); // Button "Back" - TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH * 5 / 6 - Images[imgBack].width / 2, y + 12, BACK, imgBack)); + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH * 5 / 6 - images[imgBack].width / 2, y + 12, BACK, imgBack)); #else // !TFT_COLOR_UI_PORTRAIT @@ -1042,7 +1041,7 @@ void MarlinUI::move_axis_screen() { x += spacing; #if HAS_Z_AXIS - drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step + drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have baby step #endif // ROW 2 -> "Ex" X- HOME X+ "Z" @@ -1063,11 +1062,11 @@ void MarlinUI::move_axis_screen() { x += BTN_WIDTH + spacing; //imgHome is 64x64 #if ALL(HAS_X_AXIS, TOUCH_SCREEN) - add_control(TFT_WIDTH / 2 - Images[imgHome].width / 2, y - (Images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy); + add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy); #endif x += BTN_WIDTH + spacing; - uint16_t xplus_x = x; + const uint16_t xplus_x = x; TERN_(HAS_X_AXIS, drawBtn(x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy)); @@ -1092,21 +1091,22 @@ void MarlinUI::move_axis_screen() { drawAxisValue(E_AXIS); #endif + // Cur X #if HAS_X_AXIS motionAxisState.xValuePos.set(BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4, y - 10); TERN_(HAS_X_AXIS, drawAxisValue(X_AXIS)); #endif x += BTN_WIDTH + spacing; + + // Cur Y TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); x += BTN_WIDTH + spacing; - #if HAS_Z_AXIS - drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step - #endif // Cur Z #if HAS_Z_AXIS + drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); drawAxisValue(Z_AXIS); #endif @@ -1120,7 +1120,7 @@ void MarlinUI::move_axis_screen() { TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); } - // aligned with x+ + // Aligned with x+ drawBtn(xplus_x, TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT, "off", (intptr_t)disable_steppers, imgCancel, COLOR_WHITE, !busy); TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); From a58e530f921e6197089a678d4a667cf3a10de3bc Mon Sep 17 00:00:00 2001 From: narno2202 <130909513+narno2202@users.noreply.github.com> Date: Fri, 23 Jun 2023 11:52:10 +0200 Subject: [PATCH 572/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20'M493=20S12'=20(#2?= =?UTF-8?q?6007)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/feature/ft_motion/M493.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Marlin/src/gcode/feature/ft_motion/M493.cpp b/Marlin/src/gcode/feature/ft_motion/M493.cpp index 413c63dfca..e3231480f3 100644 --- a/Marlin/src/gcode/feature/ft_motion/M493.cpp +++ b/Marlin/src/gcode/feature/ft_motion/M493.cpp @@ -169,6 +169,7 @@ void GcodeSuite::M493() { #if HAS_X_AXIS case ftMotionMode_ZV: case ftMotionMode_ZVD: + case ftMotionMode_EI: case ftMotionMode_2HEI: case ftMotionMode_3HEI: case ftMotionMode_MZV: From 2218bab542c839f4d1d09640f7c7a1444e38a23b Mon Sep 17 00:00:00 2001 From: mjbogusz Date: Fri, 23 Jun 2023 11:56:34 +0200 Subject: [PATCH 573/659] =?UTF-8?q?=F0=9F=9A=B8=20Color=20UI=20remaining?= =?UTF-8?q?=20time=20(#24843)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/marlinui.h | 19 +- Marlin/src/lcd/tft/bitmaps/time_elapsed.bmp | Bin 0 -> 3126 bytes Marlin/src/lcd/tft/bitmaps/time_elapsed.svg | 190 +++++++++++++ Marlin/src/lcd/tft/bitmaps/time_remaining.bmp | Bin 0 -> 3126 bytes Marlin/src/lcd/tft/bitmaps/time_remaining.svg | 189 +++++++++++++ .../lcd/tft/images/time_elapsed_32x32x4.cpp | 57 ++++ .../lcd/tft/images/time_remaining_32x32x4.cpp | 57 ++++ Marlin/src/lcd/tft/tft_image.cpp | 4 + Marlin/src/lcd/tft/tft_image.h | 7 + Marlin/src/lcd/tft/ui_1024x600.cpp | 113 ++++++-- Marlin/src/lcd/tft/ui_320x240.cpp | 253 ++++++++++-------- Marlin/src/lcd/tft/ui_320x240.h | 1 + Marlin/src/lcd/tft/ui_480x320.cpp | 137 +++++++--- Marlin/src/libs/duration_t.h | 33 +++ 14 files changed, 892 insertions(+), 168 deletions(-) create mode 100644 Marlin/src/lcd/tft/bitmaps/time_elapsed.bmp create mode 100644 Marlin/src/lcd/tft/bitmaps/time_elapsed.svg create mode 100644 Marlin/src/lcd/tft/bitmaps/time_remaining.bmp create mode 100644 Marlin/src/lcd/tft/bitmaps/time_remaining.svg create mode 100644 Marlin/src/lcd/tft/images/time_elapsed_32x32x4.cpp create mode 100644 Marlin/src/lcd/tft/images/time_remaining_32x32x4.cpp diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index f811545ef6..6e0205bdfb 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -297,16 +297,17 @@ public: } #endif + #if HAS_PRINT_PROGRESS_PERMYRIAD + typedef uint16_t progress_t; + #define PROGRESS_SCALE 100U + #define PROGRESS_MASK 0x7FFF + #else + typedef uint8_t progress_t; + #define PROGRESS_SCALE 1U + #define PROGRESS_MASK 0x7F + #endif + #if HAS_PRINT_PROGRESS - #if HAS_PRINT_PROGRESS_PERMYRIAD - typedef uint16_t progress_t; - #define PROGRESS_SCALE 100U - #define PROGRESS_MASK 0x7FFF - #else - typedef uint8_t progress_t; - #define PROGRESS_SCALE 1U - #define PROGRESS_MASK 0x7F - #endif #if ENABLED(SET_PROGRESS_PERCENT) static progress_t progress_override; static void set_progress(const progress_t p) { progress_override = _MIN(p, 100U * (PROGRESS_SCALE)); } diff --git a/Marlin/src/lcd/tft/bitmaps/time_elapsed.bmp b/Marlin/src/lcd/tft/bitmaps/time_elapsed.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6bb4b1a43949a1fa5f7d53bf943f3b3289dad7d3 GIT binary patch literal 3126 zcmd6pS4*`=5Xa4Za-Yjw<`cXhAouwI$KHGI-PjPjV!mVI_-{xdt}zvri)zkKWR`}o5ABflU1_^;w6uTk7a$1<3F+zS0+o}K)6vn9l$2z%*#ZIrWD}YA z`1pTdE-o(4)zuX!W)Pa1nqFUDKR!O5pPv&G6W!h2!HFGTF>ga-!)B^@d+3z8cc80g{QLE|eS*vVvMWKdni zmO%vIBI=enTjgO7l8XQ{YehhY^5$L~(VMz&T@(})?C$Qaudny^_7V^&v)_!_Y&3Xq za4@!NYin0mS8Hl&*u;dW^ZE4jMDUq0if>j}SyxwAKRi50f?i%;?(grRql=3Rx{Ra9 z$VdPI7XfB5A-Y&3;zzP>)%3YE>xO~r>Et&9iB%+Jp=o5;F@8?fcx-X1K3B%bJzEOvHw z6rXaUVC)3o1dLKeLTGlUpMU1%<>>{nLa8vUDwH3UPZja}k*vSfzu@%r^r-Xa=jR{* zXvL?wL;ya7@SzCn>E~<8o1`c{PlH(`CnqN=fb*2x=a_m*M_Vh9B0<;MTp~$+1^@E$ zlE(rDpkJVLY?*8zDm-NLJ9$^fSWp0FW|4Hmy(haKBJN+U^?NfUYDI5#k KIjQwui~S0-sSqLn literal 0 HcmV?d00001 diff --git a/Marlin/src/lcd/tft/bitmaps/time_elapsed.svg b/Marlin/src/lcd/tft/bitmaps/time_elapsed.svg new file mode 100644 index 0000000000..da2d37b56b --- /dev/null +++ b/Marlin/src/lcd/tft/bitmaps/time_elapsed.svg @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Marlin/src/lcd/tft/bitmaps/time_remaining.bmp b/Marlin/src/lcd/tft/bitmaps/time_remaining.bmp new file mode 100644 index 0000000000000000000000000000000000000000..36e40c9c5735586049037c64d3d3a75a0a7ba300 GIT binary patch literal 3126 zcmd6p$4XsM6ozl+$vndh^8`LX=6L{nSM0sFr~|QAuqz@ec2TflK~zL^V8bAG6hssR zQL*2AWF?EkIhX4tfsh0Du+QHA{@2?7D*Jx<>h|9D^Ks+-nct^hzjwBejCff8{y}~+ zVY7YvZ=Uq@^nic>PfyRlz`%@*jKB8_lBA@h%*;%o%FD}ZZ*NaYNpW{~4-O8NNid0t ziGN@&AtAxT!viYbFf=taJwHF&?e@pV$K>Q>FE20n1oB(*VjizM!w09&i?-X zctX4`E-u)9dU{IQ_&& zva%A9tw^0AOr@ozyqUp`mX?-^iVEU|6>CPRCfnQF@P~zkDbJe&OmI?>i`cQPd2RBQ!<^j)^lQ26@G*JTwPv znHb~~JUt41cpD`m?#s)|loAXWf-@u}#M|4OPr6w_LBYVlz}D8*=H@0#Ok&X?KSFhM zbdXD6Fd>+po*s=(RaF(%X+E{Jwe$1yRKe5J)9vl86z}Wn>-F_D(Z{rvpDL3c#Tyey zA()+=9p&HH*f2H+o!7zr{e442gG2wRZiRJrc5-mxUszbs`IVIw{4Xgf85$Z|Uthnv zy26>eyF2y&=H`aeIn>|iKT%fwv8DWQBAqlGv5xq({kgfh{r&yDy*&!ns*KK{Dp`af zoncT@Q=|MGpZXJ==^Ks4EFDq&hBxu+)R?O-Sb7flc&-HRcI{YM+1AVnn+ zDl03?>afhj#KfQ^f@_jK-Vu+-rE{vroR`B0phB%>ezC;6|NAVYqBt&-S;D5aO1E+@z9smFU literal 0 HcmV?d00001 diff --git a/Marlin/src/lcd/tft/bitmaps/time_remaining.svg b/Marlin/src/lcd/tft/bitmaps/time_remaining.svg new file mode 100644 index 0000000000..ff4cdb8e24 --- /dev/null +++ b/Marlin/src/lcd/tft/bitmaps/time_remaining.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Marlin/src/lcd/tft/images/time_elapsed_32x32x4.cpp b/Marlin/src/lcd/tft/images/time_elapsed_32x32x4.cpp new file mode 100644 index 0000000000..e6626f4c87 --- /dev/null +++ b/Marlin/src/lcd/tft/images/time_elapsed_32x32x4.cpp @@ -0,0 +1,57 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + **/ + +#include "../../../inc/MarlinConfigPre.h" + +#if HAS_GRAPHICAL_TFT + +extern const uint8_t time_elapsed_32x32x4[512] = { + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xad, 0xca, 0x98, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8a, 0xff, 0xff, 0xfe, 0xb8, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0xce, 0xc8, 0x8d, 0xff, 0xff, 0xff, 0xff, 0xd8, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x8a, 0xff, 0xfa, 0x6a, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x8a, 0xff, 0xfa, 0x58, 0x9d, 0xcd, 0xff, 0xff, 0xff, 0xf9, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0xdf, 0xe6, 0x58, 0x85, 0x55, 0x69, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, + 0x88, 0x88, 0xbb, 0x88, 0x66, 0x55, 0x68, 0x88, 0x88, 0x76, 0x6b, 0xff, 0xff, 0xf6, 0x88, 0x88, + 0x88, 0x8c, 0xff, 0xe6, 0x87, 0x67, 0x88, 0x88, 0x88, 0x88, 0x86, 0x9f, 0xff, 0xfd, 0x68, 0x88, + 0x88, 0x8e, 0xff, 0xf7, 0x68, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8b, 0xff, 0xff, 0x67, 0x88, + 0x88, 0x8b, 0xff, 0xd5, 0x68, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xb6, 0x88, + 0x88, 0x88, 0x89, 0x65, 0x78, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xaf, 0xff, 0xe5, 0x88, + 0x88, 0x88, 0x76, 0x56, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xf7, 0x78, + 0x88, 0x9c, 0x98, 0x88, 0x88, 0x88, 0x88, 0x9e, 0xdb, 0x98, 0x88, 0x88, 0x8d, 0xff, 0xf8, 0x68, + 0x89, 0xff, 0xf8, 0x88, 0x88, 0x88, 0x89, 0xff, 0xff, 0xff, 0xec, 0xa9, 0x8d, 0xff, 0xfa, 0x68, + 0x8b, 0xff, 0xfa, 0x68, 0x88, 0x88, 0x8c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xad, 0xff, 0xfd, 0x58, + 0x89, 0xff, 0xf7, 0x58, 0x88, 0x88, 0x89, 0xff, 0xff, 0xff, 0xeb, 0x96, 0x59, 0xff, 0xf9, 0x58, + 0x88, 0x89, 0x75, 0x68, 0x88, 0x88, 0x88, 0x8d, 0xda, 0x86, 0x55, 0x55, 0x67, 0x9c, 0x95, 0x58, + 0x88, 0x86, 0x56, 0x88, 0x88, 0x88, 0x88, 0x86, 0x55, 0x56, 0x67, 0x88, 0x88, 0x75, 0x55, 0x78, + 0x88, 0x88, 0xbb, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8b, 0xa8, 0x88, 0x88, + 0x88, 0x8c, 0xff, 0xe6, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xef, 0xfb, 0x78, 0x88, + 0x88, 0x8e, 0xff, 0xf6, 0x78, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xfd, 0x58, 0x88, + 0x88, 0x8b, 0xff, 0xd5, 0x68, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xef, 0xfa, 0x57, 0x88, + 0x88, 0x88, 0x89, 0x65, 0x79, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x89, 0x95, 0x58, 0x88, + 0x88, 0x88, 0x76, 0x58, 0xef, 0xe8, 0x88, 0x88, 0x88, 0x88, 0xef, 0xd8, 0x86, 0x55, 0x78, 0x88, + 0x88, 0x88, 0x88, 0x8b, 0xff, 0xf9, 0x68, 0x9b, 0x98, 0x8b, 0xff, 0xf9, 0x68, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x8a, 0xff, 0xf8, 0x59, 0xff, 0xf8, 0x8b, 0xff, 0xf8, 0x58, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0xad, 0xa5, 0x5b, 0xff, 0xf9, 0x68, 0xbe, 0xa5, 0x68, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x75, 0x55, 0x79, 0xff, 0xf7, 0x58, 0x75, 0x55, 0x78, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x78, 0x88, 0x8a, 0x75, 0x68, 0x88, 0x78, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x86, 0x56, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, +}; +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/time_remaining_32x32x4.cpp b/Marlin/src/lcd/tft/images/time_remaining_32x32x4.cpp new file mode 100644 index 0000000000..8c64403a2b --- /dev/null +++ b/Marlin/src/lcd/tft/images/time_remaining_32x32x4.cpp @@ -0,0 +1,57 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + **/ + +#include "../../../inc/MarlinConfigPre.h" + +#if HAS_GRAPHICAL_TFT + +extern const uint8_t time_remaining_32x32x4[512] = { + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x9a, 0xbd, 0xb8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x89, 0xce, 0xff, 0xff, 0xf9, 0x78, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0xef, 0xff, 0xff, 0xff, 0xfd, 0x58, 0xbe, 0xb8, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x5a, 0xff, 0xf9, 0x78, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x8a, 0xff, 0xff, 0xff, 0xfd, 0xcd, 0x95, 0x5b, 0xff, 0xfa, 0x58, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x9f, 0xff, 0xff, 0xf9, 0x65, 0x55, 0x55, 0x78, 0xef, 0xe6, 0x58, 0x88, 0x88, 0x88, + 0x88, 0x88, 0xff, 0xff, 0xfb, 0x55, 0x56, 0x78, 0x88, 0x88, 0x67, 0x55, 0x6a, 0x98, 0x88, 0x88, + 0x88, 0x8e, 0xff, 0xff, 0x95, 0x56, 0x88, 0x88, 0x88, 0x88, 0x86, 0x66, 0xdf, 0xfa, 0x78, 0x88, + 0x88, 0x9f, 0xff, 0xfb, 0x55, 0x78, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xfe, 0x58, 0x88, + 0x88, 0xcf, 0xff, 0xf5, 0x57, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xef, 0xfc, 0x57, 0x88, + 0x88, 0xef, 0xff, 0x95, 0x68, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8b, 0xa6, 0x57, 0x88, + 0x89, 0xff, 0xff, 0x65, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x86, 0x55, 0x68, 0x88, + 0x8a, 0xff, 0xfd, 0x56, 0x88, 0x88, 0xac, 0xdd, 0x88, 0x88, 0x88, 0x88, 0x88, 0x9b, 0x98, 0x88, + 0x8c, 0xff, 0xfc, 0x58, 0xbd, 0xef, 0xff, 0xff, 0xf7, 0x88, 0x88, 0x88, 0x89, 0xff, 0xf8, 0x88, + 0x8d, 0xff, 0xfd, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x68, 0x88, 0x88, 0x8b, 0xff, 0xfa, 0x68, + 0x8a, 0xff, 0xf9, 0x57, 0x9c, 0xef, 0xff, 0xff, 0xf6, 0x58, 0x88, 0x88, 0x89, 0xff, 0xf8, 0x58, + 0x88, 0x9c, 0x85, 0x57, 0x65, 0x56, 0x8a, 0xdd, 0x75, 0x68, 0x88, 0x88, 0x88, 0x8a, 0x85, 0x68, + 0x88, 0x75, 0x55, 0x88, 0x88, 0x87, 0x66, 0x55, 0x56, 0x88, 0x88, 0x88, 0x88, 0x86, 0x56, 0x88, + 0x88, 0x88, 0xbb, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8b, 0xa8, 0x88, 0x88, + 0x88, 0x8c, 0xff, 0xe6, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xef, 0xfb, 0x78, 0x88, + 0x88, 0x8e, 0xff, 0xf6, 0x78, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xfd, 0x58, 0x88, + 0x88, 0x8b, 0xff, 0xd5, 0x68, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xef, 0xfa, 0x57, 0x88, + 0x88, 0x88, 0x89, 0x65, 0x79, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x89, 0x95, 0x58, 0x88, + 0x88, 0x88, 0x76, 0x58, 0xef, 0xe8, 0x88, 0x88, 0x88, 0x88, 0xef, 0xd8, 0x86, 0x55, 0x78, 0x88, + 0x88, 0x88, 0x88, 0x8b, 0xff, 0xf9, 0x68, 0x9b, 0x98, 0x8b, 0xff, 0xf9, 0x68, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x8a, 0xff, 0xf8, 0x59, 0xff, 0xf8, 0x8b, 0xff, 0xf8, 0x58, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0xad, 0xa5, 0x5b, 0xff, 0xf9, 0x68, 0xbe, 0xa5, 0x68, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x75, 0x55, 0x79, 0xff, 0xf7, 0x58, 0x75, 0x55, 0x78, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x78, 0x88, 0x8a, 0x75, 0x68, 0x88, 0x78, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x86, 0x56, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, +}; +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/tft_image.cpp b/Marlin/src/lcd/tft/tft_image.cpp index 507b5f582c..6309de032e 100644 --- a/Marlin/src/lcd/tft/tft_image.cpp +++ b/Marlin/src/lcd/tft/tft_image.cpp @@ -72,6 +72,8 @@ const tImage Left_32x32x4 = { (void *)left_32x32x4, 32, 32, GREYSCALE4 const tImage Right_32x32x4 = { (void *)right_32x32x4, 32, 32, GREYSCALE4 }; const tImage Refresh_32x32x4 = { (void *)refresh_32x32x4, 32, 32, GREYSCALE4 }; const tImage Leveling_32x32x4 = { (void *)leveling_32x32x4, 32, 32, GREYSCALE4 }; +const tImage Time_Elapsed_32x32x4 = { (void *)time_elapsed_32x32x4, 32, 32, GREYSCALE4 }; +const tImage Time_Remaining_32x32x4 = { (void *)time_remaining_32x32x4, 32, 32, GREYSCALE4 }; const tImage Slider8x16x4 = { (void *)slider_8x16x4, 8, 16, GREYSCALE4 }; @@ -108,6 +110,8 @@ const tImage images[imgCount] = { Home_64x64x4, BtnRounded_64x52x4, BtnRounded_42x39x4, + Time_Elapsed_32x32x4, + Time_Remaining_32x32x4, }; #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/tft_image.h b/Marlin/src/lcd/tft/tft_image.h index d202e3d0f6..7761a72dc3 100644 --- a/Marlin/src/lcd/tft/tft_image.h +++ b/Marlin/src/lcd/tft/tft_image.h @@ -61,6 +61,8 @@ extern const uint8_t left_32x32x4[]; extern const uint8_t right_32x32x4[]; extern const uint8_t refresh_32x32x4[]; extern const uint8_t leveling_32x32x4[]; +extern const uint8_t time_elapsed_32x32x4[]; +extern const uint8_t time_remaining_32x32x4[]; extern const uint8_t slider_8x16x4[]; @@ -97,6 +99,9 @@ enum MarlinImage : uint8_t { imgHome, imgBtn52Rounded, imgBtn39Rounded, + imgTimeElapsed, + imgTimeRemaining, + // Special values - must be at the end! imgCount, noImage = imgCount, imgPageUp = imgLeft, @@ -172,6 +177,8 @@ extern const tImage Left_32x32x4; extern const tImage Right_32x32x4; extern const tImage Refresh_32x32x4; extern const tImage Leveling_32x32x4; +extern const tImage Time_Elapsed_32x32x4; +extern const tImage Time_Remaining_32x32x4; extern const tImage Slider8x16x4; diff --git a/Marlin/src/lcd/tft/ui_1024x600.cpp b/Marlin/src/lcd/tft/ui_1024x600.cpp index b5d12cdab3..ddb606674c 100644 --- a/Marlin/src/lcd/tft/ui_1024x600.cpp +++ b/Marlin/src/lcd/tft/ui_1024x600.cpp @@ -315,14 +315,14 @@ void MarlinUI::draw_status_screen() { y += 100; // Feed rate - tft.canvas(274, y, 128, 32); + tft.canvas(274, y, 200, 32); tft.set_background(COLOR_BACKGROUND); uint16_t color = feedrate_percentage == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; tft.add_image(0, 0, imgFeedRate, color); tft_string.set(i16tostr3rj(feedrate_percentage)); tft_string.add('%'); tft.add_text(36, 1, color, tft_string); - TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, 274, y, 128, 32)); + TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, 274, y, 200, 32)); // Flow rate #if HAS_EXTRUDERS @@ -333,7 +333,7 @@ void MarlinUI::draw_status_screen() { tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); tft_string.add('%'); tft.add_text(36, 1, color, tft_string); - TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, 650, y, 128, 32, active_extruder)); + TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, 650, y, 200, 32, active_extruder)); #endif #if ENABLED(TOUCH_SCREEN) @@ -348,32 +348,115 @@ void MarlinUI::draw_status_screen() { #endif y += 100; - // Print duration - char buffer[14]; - duration_t elapsed = print_job_timer.duration(); - elapsed.toDigital(buffer); + const progress_t progress = TERN(HAS_PRINT_PROGRESS_PERMYRIAD, get_progress_permyriad, get_progress_percent)(); + #if ENABLED(SHOW_ELAPSED_TIME) && DISABLED(SHOW_REMAINING_TIME) + // Print duration so far (time elapsed) - centered + char elapsed_str[22]; + duration_t elapsed = print_job_timer.duration(); + elapsed.toString(elapsed_str); - tft.canvas((TFT_WIDTH - 128) / 2, y, 128, 29); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(buffer); - tft.add_text(tft_string.center(128), 0, COLOR_PRINT_TIME, tft_string); + // Same width constraints as feedrate/flowrate controls + constexpr uint16_t time_str_width = 476, image_width = 36; + + tft.canvas((TFT_WIDTH - time_str_width) / 2, y, time_str_width, 32); + tft.set_background(COLOR_BACKGROUND); + tft_string.set(elapsed_str); + uint16_t text_pos_x = tft_string.center(time_str_width - image_width); + tft.add_image(text_pos_x, 0, imgTimeElapsed, COLOR_PRINT_TIME); + tft.add_text(text_pos_x + image_width, 1, COLOR_PRINT_TIME, tft_string); + + #elif DISABLED(SHOW_ELAPSED_TIME) && ENABLED(SHOW_REMAINING_TIME) + // Print time remaining estimation - centered + char estimate_str[22]; + duration_t elapsed = print_job_timer.duration(); + + // Get the estimate, first from M73 + uint32_t estimate_remaining = (0 + #if ALL(SET_PROGRESS_MANUALLY, SET_REMAINING_TIME) + + get_remaining_time() + #endif + ); + // If no M73 estimate is available but we have progress data, calculate time remaining assuming time elapsed is linear with progress + if (!estimate_remaining && progress > 0) + estimate_remaining = elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress; + + // Generate estimate string + if (!estimate_remaining) + tft_string.set("-"); + else { + duration_t estimation = estimate_remaining; + estimation.toString(estimate_str); + tft_string.set(estimate_str); + } + + // Same width constraints as feedrate/flowrate controls + constexpr uint16_t time_str_width = 476, image_width = 36; + + tft.canvas((TFT_WIDTH - time_str_width) / 2, y, time_str_width, 32); + tft.set_background(COLOR_BACKGROUND); + color = printingIsActive() ? COLOR_PRINT_TIME : COLOR_INACTIVE; + uint16_t text_pos_x = tft_string.center(time_str_width - image_width); + tft.add_image(text_pos_x, 0, imgTimeRemaining, color); + tft.add_text(text_pos_x + image_width, 1, color, tft_string); + + #elif ALL(SHOW_REMAINING_TIME, SHOW_ELAPSED_TIME) + // Print duration so far (time elapsed) - aligned under feed rate + char elapsed_str[22]; + duration_t elapsed = print_job_timer.duration(); + elapsed.toString(elapsed_str); + + tft.canvas(274, y, 200, 32); + tft.set_background(COLOR_BACKGROUND); + tft.add_image(0, 0, imgTimeElapsed, COLOR_PRINT_TIME); + tft_string.set(elapsed_str); + tft.add_text(36, 1, COLOR_PRINT_TIME, tft_string); + + // Print time remaining estimation - aligned under flow rate + char estimate_str[22]; + + // Get the estimate, first from M73 + uint32_t estimate_remaining = (0 + #if ALL(SET_PROGRESS_MANUALLY, SET_REMAINING_TIME) + + get_remaining_time() + #endif + ); + // If no M73 estimate is available but we have progress data, calculate time remaining assuming time elapsed is linear with progress + if (!estimate_remaining && progress > 0) + estimate_remaining = elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress; + + // Generate estimate string + if (!estimate_remaining) + tft_string.set("-"); + else { + duration_t estimation = estimate_remaining; + estimation.toString(estimate_str); + tft_string.set(estimate_str); + } + + // Push out the estimate to the screen + tft.canvas(650, y, 200, 32); + tft.set_background(COLOR_BACKGROUND); + color = printingIsActive() ? COLOR_PRINT_TIME : COLOR_INACTIVE; + tft.add_image(0, 0, imgTimeRemaining, color); + tft.add_text(36, 1, color, tft_string); + #endif y += 50; // Progress bar - const uint8_t progress = ui.get_progress_percent(); tft.canvas(4, y, TFT_WIDTH - 8, 9); tft.set_background(COLOR_PROGRESS_BG); tft.add_rectangle(0, 0, TFT_WIDTH - 8, 9, COLOR_PROGRESS_FRAME); if (progress) - tft.add_bar(1, 1, ((TFT_WIDTH - 10) * progress) / 100, 7, COLOR_PROGRESS_BAR); + tft.add_bar(1, 1, ((TFT_WIDTH - 10) * progress / (PROGRESS_SCALE)) / 100, 7, COLOR_PROGRESS_BAR); y += 50; // Status message - tft.canvas(0, y, TFT_WIDTH, FONT_LINE_HEIGHT); + const uint16_t status_height = TFT_HEIGHT - y; + tft.canvas(0, y, TFT_WIDTH, status_height); tft.set_background(COLOR_BACKGROUND); tft_string.set(status_message); tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_STATUS_MESSAGE, tft_string); + tft.add_text(tft_string.center(TFT_WIDTH), (status_height - FONT_LINE_HEIGHT) / 2, COLOR_STATUS_MESSAGE, tft_string); } // Low-level draw_edit_screen can be used to draw an edit screen from anyplace diff --git a/Marlin/src/lcd/tft/ui_320x240.cpp b/Marlin/src/lcd/tft/ui_320x240.cpp index c39d226517..dcbfa935b4 100644 --- a/Marlin/src/lcd/tft/ui_320x240.cpp +++ b/Marlin/src/lcd/tft/ui_320x240.cpp @@ -228,7 +228,7 @@ void MarlinUI::draw_status_screen() { TERN_(TOUCH_SCREEN, touch.clear()); // Statuses of heaters and fans - const uint16_t y = TFT_STATUS_TOP_Y; + constexpr uint16_t y = TFT_STATUS_TOP_Y; for (uint16_t i = 0 ; i < ITEMS_COUNT; i++) { const uint16_t x = (TFT_WIDTH / ITEMS_COUNT - 64) / 2 + (TFT_WIDTH * i / ITEMS_COUNT); switch (i) { @@ -278,14 +278,9 @@ void MarlinUI::draw_status_screen() { tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 32, 10), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "X"); const bool nhx = axis_should_home(X_AXIS); tft_string.set(blink && nhx ? "?" : ftostr4sign(LOGICAL_X_POSITION(current_position.x))); - tft.add_text( - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 32 - tft_string.width() / 2, FONT_LINE_HEIGHT + tft_string.vcenter(FONT_LINE_HEIGHT), - #else - 68 - tft_string.width(), tft_string.vcenter(FONT_LINE_HEIGHT), - #endif - nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string - ); + uint16_t pos_x = TERN(TFT_COLOR_UI_PORTRAIT, 32 - tft_string.width() / 2, 68 - tft_string.width()), + pos_y = SUM_TERN(TFT_COLOR_UI_PORTRAIT, tft_string.vcenter(FONT_LINE_HEIGHT), FONT_LINE_HEIGHT); + tft.add_text(pos_x, pos_y, nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); #endif #if HAS_Y_AXIS @@ -318,31 +313,30 @@ void MarlinUI::draw_status_screen() { tft_string.set(ftostr52sp(z)); offset -= tft_string.width(); } - tft.add_text( - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 192 - tft_string.width() / 2, FONT_LINE_HEIGHT + tft_string.vcenter(FONT_LINE_HEIGHT), - #else - 301 - tft_string.width() - offset, tft_string.vcenter(FONT_LINE_HEIGHT), - #endif - nhz ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); #endif - TERN_(TOUCH_SCREEN, touch.add_control(MOVE_AXIS, 0, 103, - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 232, FONT_LINE_HEIGHT * 2 - #else - 312, FONT_LINE_HEIGHT - #endif - )); + uint16_t pos_x = TERN(TFT_COLOR_UI_PORTRAIT, 192 - tft_string.width() / 2, 301 - tft_string.width() - offset), + pos_y = SUM_TERN(TFT_COLOR_UI_PORTRAIT, tft_string.vcenter(FONT_LINE_HEIGHT), FONT_LINE_HEIGHT); + tft.add_text(pos_x, pos_y, nhz ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + + // 3rd horizontal group - controls and times (height = 64, top margin = 3) + // 3rd group, subgroup A - controls (on the sides) + #if ENABLED(TOUCH_SCREEN) + width = TERN(TFT_COLOR_UI_PORTRAIT, 232, 312); + height = TERN(TFT_COLOR_UI_PORTRAIT, FONT_LINE_HEIGHT * 2, FONT_LINE_HEIGHT); + touch.add_control(MOVE_AXIS, 0, 103, width, height); + add_control(256, 130, menu_main, imgSettings); + TERN_(SDSUPPORT, add_control(0, 130, menu_media, imgSD, !printingIsActive(), COLOR_CONTROL_ENABLED, card.isMounted() && printingIsActive() ? COLOR_BUSY : COLOR_CONTROL_DISABLED)); + #endif + + // 3rd group, subgroup B - speeds (center, top half) // Feed rate tft.canvas( - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 30, 172, 80 - #else - 70, 136, 84 - #endif - , 32 + TERN(TFT_COLOR_UI_PORTRAIT, 30, 70), + TERN(TFT_COLOR_UI_PORTRAIT, 172, 132), + TERN(TFT_COLOR_UI_PORTRAIT, 80, 88), + MENU_ITEM_HEIGHT ); tft.set_background(COLOR_BACKGROUND); uint16_t color = feedrate_percentage == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; @@ -351,88 +345,134 @@ void MarlinUI::draw_status_screen() { tft_string.add('%'); tft.add_text(32, tft_string.vcenter(30), color, tft_string); TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 30, 172, 80 - #else - 70, 136, 84 - #endif - , 32 + TERN(TFT_COLOR_UI_PORTRAIT, 30, 70), + TERN(TFT_COLOR_UI_PORTRAIT, 172, 132), + 80, MENU_ITEM_HEIGHT )); // Flow rate - #if HAS_EXTRUDERS - tft.canvas( - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 140, 172, 80 - #else - 170, 136, 84 - #endif - , 32 - ); - tft.set_background(COLOR_BACKGROUND); - color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; - tft.add_image(0, 0, imgFlowRate, color); - tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); - tft_string.add('%'); - tft.add_text(32, tft_string.vcenter(30), color, tft_string); - TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 140, 172, 80 - #else - 170, 136, 84 - #endif - , 32, active_extruder - )); - #endif // HAS_EXTRUDERS - - // Print duration - char buffer[14]; - duration_t elapsed = print_job_timer.duration(); - elapsed.toDigital(buffer); - tft.canvas( - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 56, 256, 128 - #else - 96, 173, 128 - #endif - , FONT_LINE_HEIGHT + TERN(TFT_COLOR_UI_PORTRAIT, 140, 162), + TERN(TFT_COLOR_UI_PORTRAIT, 172, 132), + TERN(TFT_COLOR_UI_PORTRAIT, 80, 88), + MENU_ITEM_HEIGHT ); tft.set_background(COLOR_BACKGROUND); - tft_string.set(buffer); - tft.add_text(tft_string.center(128), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_PRINT_TIME, tft_string); + color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; + tft.add_image(0, 0, imgFlowRate, color); + tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); + tft_string.add('%'); + tft.add_text(32, tft_string.vcenter(30), color, tft_string); + #if ENABLED(TOUCH_SCREEN) + touch.add_control(FLOWRATE, + TERN(TFT_COLOR_UI_PORTRAIT, 140, 170), + TERN(TFT_COLOR_UI_PORTRAIT, 172, 132), + 80, MENU_ITEM_HEIGHT, active_extruder + ); + #endif - // Progress bar - const uint8_t progress = ui.get_progress_percent(); - tft.canvas( - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 4, 278, 232 - #else - 4, 198, 312 - #endif - , 9 - ); + // 3rd group, subgroup C - times (center, bottom half) + const progress_t progress = TERN(HAS_PRINT_PROGRESS_PERMYRIAD, get_progress_permyriad, get_progress_percent)(); + const uint16_t time_str_width = 180, image_width = 34; + pos_x = (TFT_WIDTH - time_str_width) / 2; + pos_y = TERN(TFT_COLOR_UI_PORTRAIT, 256, 164); + #if ENABLED(SHOW_ELAPSED_TIME) && DISABLED(SHOW_REMAINING_TIME) + // Print duration so far (time elapsed) - centered + char elapsed_str[18]; + duration_t elapsed = print_job_timer.duration(); + elapsed.toCompactString(elapsed_str); + + tft.canvas(pos_x, pos_y, time_str_width, MENU_ITEM_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft_string.set(elapsed_str); + uint16_t text_pos_x = tft_string.center(time_str_width - image_width); + tft.add_image(text_pos_x, 0, imgTimeElapsed, COLOR_PRINT_TIME); + tft.add_text(text_pos_x + image_width, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_PRINT_TIME, tft_string); + + #elif DISABLED(SHOW_ELAPSED_TIME) && ENABLED(SHOW_REMAINING_TIME) + // Print time remaining estimation - centered + char estimate_str[18]; + duration_t elapsed = print_job_timer.duration(); + + // Get the estimate, first from M73 + uint32_t estimate_remaining = (0 + #if ALL(SET_PROGRESS_MANUALLY, SET_REMAINING_TIME) + + get_remaining_time() + #endif + ); + // If no M73 estimate is available but we have progress data, calculate time remaining assuming time elapsed is linear with progress + if (!estimate_remaining && progress > 0) + estimate_remaining = elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress; + + // Generate estimate string + if (!estimate_remaining) + tft_string.set("-"); + else { + duration_t estimation = estimate_remaining; + estimation.toCompactString(estimate_str); + tft_string.set(estimate_str); + } + + tft.canvas(pos_x, pos_y, time_str_width, MENU_ITEM_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + color = printingIsActive() ? COLOR_PRINT_TIME : COLOR_INACTIVE; + uint16_t text_pos_x = tft_string.center(time_str_width - image_width); + tft.add_image(text_pos_x, 0, imgTimeRemaining, color); + tft.add_text(text_pos_x + image_width, tft_string.vcenter(FONT_LINE_HEIGHT), color, tft_string); + + #elif ALL(SHOW_REMAINING_TIME, SHOW_ELAPSED_TIME) + // Print duration so far (time elapsed) - aligned under feed rate + char elapsed_str[18]; + duration_t elapsed = print_job_timer.duration(); + elapsed.toCompactString(elapsed_str); + + tft.canvas(pos_x, pos_y, time_str_width / 2 - 2, MENU_ITEM_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft.add_image(0, 0, imgTimeElapsed, COLOR_PRINT_TIME); + tft_string.set(elapsed_str); + tft.add_text(32, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_PRINT_TIME, tft_string); + + // Print time remaining estimation - aligned under flow rate + char estimate_str[18]; + + // Get the estimate, first from M73 + uint32_t estimate_remaining = (0 + #if ALL(SET_PROGRESS_MANUALLY, SET_REMAINING_TIME) + + get_remaining_time() + #endif + ); + // If no M73 estimate is available but we have progress data, calculate time remaining assuming time elapsed is linear with progress + if (!estimate_remaining && progress > 0) + estimate_remaining = elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress; + + // Generate estimate string + if (!estimate_remaining) + tft_string.set("-"); + else { + duration_t estimation = estimate_remaining; + estimation.toCompactString(estimate_str); + tft_string.set(estimate_str); + } + + // Push out the estimate to the screen + tft.canvas(pos_x + time_str_width / 2 + 2, pos_y, time_str_width / 2 - 2, MENU_ITEM_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + color = printingIsActive() ? COLOR_PRINT_TIME : COLOR_INACTIVE; + tft.add_image(0, 0, imgTimeRemaining, color); + tft.add_text(32, tft_string.vcenter(FONT_LINE_HEIGHT), color, tft_string); + #endif + + // Fourth horizontal group - progress bar (height = 9, top margin = 4) + pos_y = TERN(TFT_COLOR_UI_PORTRAIT, 278, 198); + tft.canvas(4, pos_y, TFT_WIDTH - 8, 9); tft.set_background(COLOR_PROGRESS_BG); - tft.add_rectangle(0, 0, - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 232, 9 - #else - 312, 9 - #endif - , COLOR_PROGRESS_FRAME - ); + tft.add_rectangle(0, 0, TFT_WIDTH - 8, 9, COLOR_PROGRESS_FRAME); if (progress) - tft.add_bar(1, 1, ((TFT_WIDTH - 10) * progress) / 100, 7, COLOR_PROGRESS_BAR); + tft.add_bar(1, 1, ((TFT_WIDTH - 10) * progress / (PROGRESS_SCALE)) / 100, 7, COLOR_PROGRESS_BAR); // Status message - tft.canvas( - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 0, 296, 240 - #else - 0, 212, 320 - #endif - , FONT_LINE_HEIGHT - ); + pos_y += 9 + 7; + tft.canvas(0, pos_y, TFT_WIDTH, TFT_HEIGHT - pos_y); tft.set_background(COLOR_BACKGROUND); tft_string.set(status_message); tft_string.trim(); @@ -441,12 +481,9 @@ void MarlinUI::draw_status_screen() { #if ENABLED(TOUCH_SCREEN) { add_control( - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 176, 210 - #else - 256, 130 - #endif - , menu_main, imgSettings + TERN(TFT_COLOR_UI_PORTRAIT, 176, 256), + TERN(TFT_COLOR_UI_PORTRAIT, 210, 130), + menu_main, imgSettings ); #if HAS_MEDIA const bool cm = card.isMounted(), pa = printingIsActive(); @@ -552,8 +589,8 @@ void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, con tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); } #if ENABLED(TOUCH_SCREEN) - if (no) add_control(TERN(TFT_COLOR_UI_PORTRAIT, 16, 48), TFT_HEIGHT - 64, CANCEL, imgCancel, true, yesno ? HALF(COLOR_CONTROL_CANCEL) : COLOR_CONTROL_CANCEL); - if (yes) add_control(TERN(TFT_COLOR_UI_PORTRAIT, 160, 208), TFT_HEIGHT - 64, CONFIRM, imgConfirm, true, yesno ? COLOR_CONTROL_CONFIRM : HALF(COLOR_CONTROL_CONFIRM)); + if (no) add_control(TERN(TFT_COLOR_UI_PORTRAIT, 32,48), TFT_HEIGHT - 64, CANCEL, imgCancel, true, yesno ? HALF(COLOR_CONTROL_CANCEL) : COLOR_CONTROL_CANCEL); + if (yes) add_control(TERN(TFT_COLOR_UI_PORTRAIT, 172, 208), TFT_HEIGHT - 64, CONFIRM, imgConfirm, true, yesno ? COLOR_CONTROL_CONFIRM : HALF(COLOR_CONTROL_CONFIRM)); #endif } diff --git a/Marlin/src/lcd/tft/ui_320x240.h b/Marlin/src/lcd/tft/ui_320x240.h index 555ca3616a..1d3aa86f81 100644 --- a/Marlin/src/lcd/tft/ui_320x240.h +++ b/Marlin/src/lcd/tft/ui_320x240.h @@ -37,6 +37,7 @@ #define MENU_ITEM_HEIGHT 32 #define MENU_LINE_HEIGHT (MENU_ITEM_HEIGHT + 2) +#define FONT_LINE_HEIGHT 24 #if (TFT_FONT == NOTOSANS) || (TFT_FONT == HELVETICA) #define FONT_SIZE 14 diff --git a/Marlin/src/lcd/tft/ui_480x320.cpp b/Marlin/src/lcd/tft/ui_480x320.cpp index 14d7da7ee4..8e554cf413 100644 --- a/Marlin/src/lcd/tft/ui_480x320.cpp +++ b/Marlin/src/lcd/tft/ui_480x320.cpp @@ -340,50 +340,116 @@ void MarlinUI::draw_status_screen() { TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, x, y, component_width, 32, active_extruder)); #endif - #if TFT_COLOR_UI_PORTRAIT || DISABLED(TOUCH_SCREEN) - y += STATUS_MARGIN_SIZE + 32; + y += TERN(HAS_UI_480x272, 36, 44); + + const progress_t progress = TERN(HAS_PRINT_PROGRESS_PERMYRIAD, get_progress_permyriad, get_progress_percent)(); + #if ENABLED(SHOW_ELAPSED_TIME) && DISABLED(SHOW_REMAINING_TIME) + // Print duration so far (time elapsed) - centered + char elapsed_str[22]; + duration_t elapsed = print_job_timer.duration(); + elapsed.toString(elapsed_str); + + // Same width constraints as feedrate/flowrate controls + constexpr uint16_t time_str_width = 288, image_width = 36; + + tft.canvas((TFT_WIDTH - time_str_width) / 2, y, time_str_width, 32); + tft.set_background(COLOR_BACKGROUND); + tft_string.set(elapsed_str); + uint16_t text_pos_x = tft_string.center(time_str_width - image_width); + tft.add_image(text_pos_x, 0, imgTimeElapsed, COLOR_PRINT_TIME); + tft.add_text(text_pos_x + image_width, tft_string.vcenter(29), COLOR_PRINT_TIME, tft_string); + + #elif DISABLED(SHOW_ELAPSED_TIME) && ENABLED(SHOW_REMAINING_TIME) + // Print time remaining estimation - centered + char estimate_str[22]; + duration_t elapsed = print_job_timer.duration(); + + // Get the estimate, first from M73 + uint32_t estimate_remaining = (0 + #if ALL(SET_PROGRESS_MANUALLY, SET_REMAINING_TIME) + + get_remaining_time() + #endif + ); + // If no M73 estimate is available but we have progress data, calculate time remaining assuming time elapsed is linear with progress + if (!estimate_remaining && progress > 0) + estimate_remaining = elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress; + + // Generate estimate string + if (!estimate_remaining) + tft_string.set("-"); + else { + duration_t estimation = estimate_remaining; + estimation.toString(estimate_str); + tft_string.set(estimate_str); + } + + // Same width constraints as feedrate/flowrate controls + constexpr uint16_t time_str_width = 288, image_width = 36; + + tft.canvas((TFT_WIDTH - time_str_width) / 2, y, time_str_width, 32); + tft.set_background(COLOR_BACKGROUND); + color = printingIsActive() ? COLOR_PRINT_TIME : COLOR_INACTIVE; + uint16_t text_pos_x = tft_string.center(time_str_width - image_width); + tft.add_image(text_pos_x, 0, imgTimeRemaining, color); + tft.add_text(text_pos_x + image_width, tft_string.vcenter(29), color, tft_string); + + #elif ALL(SHOW_REMAINING_TIME, SHOW_ELAPSED_TIME) + // Print duration so far (time elapsed) - aligned under feed rate + char elapsed_str[18]; + duration_t elapsed = print_job_timer.duration(); + elapsed.toCompactString(elapsed_str); + + tft.canvas(96, y, 144, 32); + tft.set_background(COLOR_BACKGROUND); + tft.add_image(0, 0, imgTimeElapsed, COLOR_PRINT_TIME); + tft_string.set(elapsed_str); + tft.add_text(36, tft_string.vcenter(29), COLOR_PRINT_TIME, tft_string); + + // Print time remaining estimation - aligned under flow rate + char estimate_str[18]; + + // Get the estimate, first from M73 + uint32_t estimate_remaining = (0 + #if ALL(SET_PROGRESS_MANUALLY, SET_REMAINING_TIME) + + get_remaining_time() + #endif + ); + // If no M73 estimate is available but we have progress data, calculate time remaining assuming time elapsed is linear with progress + if (!estimate_remaining && progress > 0) + estimate_remaining = elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress; + + // Generate estimate string + if (!estimate_remaining) + tft_string.set("-"); + else { + duration_t estimation = estimate_remaining; + estimation.toCompactString(estimate_str); + tft_string.set(estimate_str); + } + + // Push out the estimate to the screen + tft.canvas(256, y, 144, 32); + tft.set_background(COLOR_BACKGROUND); + color = printingIsActive() ? COLOR_PRINT_TIME : COLOR_INACTIVE; + tft.add_image(0, 0, imgTimeRemaining, color); + tft.add_text(36, tft_string.vcenter(29), color, tft_string); #endif - #if ENABLED(TOUCH_SCREEN) - // Settings button - add_control(SETTINGS_X, y, menu_main, imgSettings); - - // SD-card button / Cancel button - #if HAS_MEDIA - const bool cm = card.isMounted(), pa = printingIsActive(); - if (cm && pa) - add_control(SDCARD_X, y, STOP, imgCancel, true, COLOR_CONTROL_CANCEL); - else - add_control(SDCARD_X, y, menu_media, imgSD, cm && !pa, COLOR_CONTROL_ENABLED, COLOR_CONTROL_DISABLED); // 64px icon size - #endif - - y += STATUS_MARGIN_SIZE + TERN(TFT_COLOR_UI_PORTRAIT, 64, 44); - #endif - - // Print duration - char buffer[14]; - duration_t elapsed = print_job_timer.duration(); - elapsed.toDigital(buffer); - - tft.canvas((TFT_WIDTH - 128) / 2, y, 128, 29); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(buffer); - tft.add_text(tft_string.center(128), tft_string.vcenter(29), COLOR_PRINT_TIME, tft_string); - - y += STATUS_MARGIN_SIZE + 29; + y += TERN(HAS_UI_480x272, 36, 44); // Progress bar - const uint8_t progress = ui.get_progress_percent(); + // TODO: print percentage text for SHOW_PROGRESS_PERCENT tft.canvas(4, y, TFT_WIDTH - 8, 9); tft.set_background(COLOR_PROGRESS_BG); tft.add_rectangle(0, 0, TFT_WIDTH - 8, 9, COLOR_PROGRESS_FRAME); if (progress) - tft.add_bar(1, 1, ((TFT_WIDTH - 10) * progress) / 100, 7, COLOR_PROGRESS_BAR); - - y += STATUS_MARGIN_SIZE + 7; + tft.add_bar(1, 1, ((TFT_WIDTH - 10) * progress / (PROGRESS_SCALE)) / 100, 7, COLOR_PROGRESS_BAR); + y += 12; // Status message - tft.canvas(0, y, TFT_WIDTH, FONT_LINE_HEIGHT); + // Canvas height should be 40px on 480x320 and 28 on 480x272 + const uint16_t status_height = TFT_HEIGHT - y; + tft.canvas(0, y, TFT_WIDTH, status_height); tft.set_background(COLOR_BACKGROUND); tft_string.set(status_message); tft_string.trim(); @@ -878,9 +944,8 @@ static void drawBtn(const int x, const int y, const char *label, intptr_t data, tft_string.trim(); tft.add_text(tft_string.center(width), height / 2 - tft_string.font_height() / 2, bgColor, tft_string); } - else { + else tft.add_image(0, 0, img, bgColor, COLOR_BACKGROUND, COLOR_DARKGREY); - } TERN_(TOUCH_SCREEN, if (enabled) touch.add_control(BUTTON, x, y, width, height, data)); } diff --git a/Marlin/src/libs/duration_t.h b/Marlin/src/libs/duration_t.h index e45ce01496..d648924dc9 100644 --- a/Marlin/src/libs/duration_t.h +++ b/Marlin/src/libs/duration_t.h @@ -117,6 +117,7 @@ struct duration_t { * * @param buffer The array pointed to must be able to accommodate 22 bytes * (21 for the string, 1 more for the terminating nul) + * @param dense Whether to skip spaces in the resulting string * * Output examples: * 123456789012345678901 (strlen) @@ -141,11 +142,43 @@ struct duration_t { return buffer; } + /** + * @brief Format the duration as a compact string + * @details String will be formatted using a "full" representation of duration + * + * @param buffer The array pointed to must be able to accommodate 18 bytes + * (17 for the string, 1 more for the terminating nul) + * @param dense Whether to skip spaces in the resulting string + * + * Output examples: + * 12345678901234567 (strlen) + * 135y364d23h59m59s + * 364d23h59m59s + * 23h59m59s + * 59m59s + * 59s + */ + char* toCompactString(char * const buffer) const { + const uint16_t y = this->year(), + d = this->day() % 365, + h = this->hour() % 24, + m = this->minute() % 60, + s = this->second() % 60; + + if (y) sprintf_P(buffer, PSTR("%iy%id%ih%im%is"), y, d, h, m, s); + else if (d) sprintf_P(buffer, PSTR("%id%ih%im%is"), d, h, m, s); + else if (h) sprintf_P(buffer, PSTR("%ih%im%is"), h, m, s); + else if (m) sprintf_P(buffer, PSTR("%im%is"), m, s); + else sprintf_P(buffer, PSTR("%is"), s); + return buffer; + } + /** * @brief Format the duration as a string * @details String will be formatted using a "digital" representation of duration * * @param buffer The array pointed to must be able to accommodate 10 bytes + * @return length of the formatted string (without terminating nul) * * Output examples: * 123456789 (strlen) From 858916d628526b5d56c34c5c9663e3535bfc7788 Mon Sep 17 00:00:00 2001 From: Miguel Risco-Castillo Date: Fri, 23 Jun 2023 04:57:22 -0500 Subject: [PATCH 574/659] =?UTF-8?q?=F0=9F=9A=B8=20Update=20DWIN=20ProUI=20?= =?UTF-8?q?(#26003)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 10 +- Marlin/src/feature/tmc_util.h | 8 +- Marlin/src/gcode/lcd/M73.cpp | 32 +- Marlin/src/gcode/probe/G30.cpp | 4 +- Marlin/src/inc/SanityCheck.h | 16 +- Marlin/src/lcd/e3v2/common/dwin_font.h | 12 +- Marlin/src/lcd/e3v2/common/limits.h | 8 +- Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp | 42 +- Marlin/src/lcd/e3v2/proui/bedlevel_tools.h | 13 +- Marlin/src/lcd/e3v2/proui/dwin.cpp | 1409 ++++++++++-------- Marlin/src/lcd/e3v2/proui/dwin.h | 58 +- Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp | 24 +- Marlin/src/lcd/e3v2/proui/dwin_lcd.h | 9 +- Marlin/src/lcd/e3v2/proui/dwinui.cpp | 43 +- Marlin/src/lcd/e3v2/proui/dwinui.h | 16 +- Marlin/src/lcd/e3v2/proui/endstop_diag.cpp | 8 +- Marlin/src/lcd/e3v2/proui/endstop_diag.h | 8 +- Marlin/src/lcd/e3v2/proui/gcode_preview.cpp | 33 +- Marlin/src/lcd/e3v2/proui/gcode_preview.h | 2 +- Marlin/src/lcd/e3v2/proui/menus.cpp | 62 +- Marlin/src/lcd/e3v2/proui/menus.h | 34 +- Marlin/src/lcd/e3v2/proui/meshviewer.cpp | 156 +- Marlin/src/lcd/e3v2/proui/meshviewer.h | 14 +- Marlin/src/lcd/e3v2/proui/plot.cpp | 12 +- Marlin/src/lcd/e3v2/proui/plot.h | 6 +- Marlin/src/lcd/e3v2/proui/printstats.cpp | 6 +- Marlin/src/lcd/e3v2/proui/printstats.h | 2 +- Marlin/src/lcd/language/language_de.h | 12 +- Marlin/src/lcd/language/language_en.h | 30 +- Marlin/src/lcd/language/language_it.h | 10 +- Marlin/src/lcd/language/language_ru.h | 10 +- Marlin/src/lcd/language/language_sk.h | 10 +- Marlin/src/lcd/language/language_tr.h | 10 +- Marlin/src/module/stepper.cpp | 10 +- Marlin/src/module/temperature.cpp | 8 +- 35 files changed, 1227 insertions(+), 920 deletions(-) diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index 1c43af1884..3b8ee33730 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -310,8 +310,14 @@ void unified_bed_leveling::G29() { // Check for commands that require the printer to be homed if (may_move) { planner.synchronize(); - // Send 'N' to force homing before G29 (internal only) - if (axes_should_home() || parser.seen_test('N')) gcode.home_all_axes(); + #if ALL(DWIN_LCD_PROUI, ZHOME_BEFORE_LEVELING) + save_ubl_active_state_and_disable(); + gcode.process_subcommands_now(F("G28Z")); + restore_ubl_active_state_and_leave(); + #else + // Send 'N' to force homing before G29 (internal only) + if (axes_should_home() || parser.seen_test('N')) gcode.home_all_axes(); + #endif probe.use_probing_tool(); // Position bed horizontally and Z probe vertically. diff --git a/Marlin/src/feature/tmc_util.h b/Marlin/src/feature/tmc_util.h index 4ba3835906..a0a72058aa 100644 --- a/Marlin/src/feature/tmc_util.h +++ b/Marlin/src/feature/tmc_util.h @@ -144,7 +144,7 @@ class TMCMarlin : public TMC, public TMCStorage { #endif #endif - #if HAS_MARLINUI_MENU + #if ANY(HAS_MARLINUI_MENU, DWIN_LCD_PROUI) void refresh_stepper_current() { rms_current(this->val_mA); } #if ENABLED(HYBRID_THRESHOLD) @@ -207,7 +207,7 @@ class TMCMarlin : public TMC220 } #endif - #if HAS_MARLINUI_MENU + #if ANY(HAS_MARLINUI_MENU, DWIN_LCD_PROUI) void refresh_stepper_current() { rms_current(this->val_mA); } #if ENABLED(HYBRID_THRESHOLD) @@ -269,7 +269,7 @@ class TMCMarlin : public TMC220 } #endif - #if HAS_MARLINUI_MENU + #if ANY(HAS_MARLINUI_MENU, DWIN_LCD_PROUI) void refresh_stepper_current() { rms_current(this->val_mA); } #if ENABLED(HYBRID_THRESHOLD) @@ -315,7 +315,7 @@ class TMCMarlin : public TMC266 } #endif - #if HAS_MARLINUI_MENU + #if ANY(HAS_MARLINUI_MENU, DWIN_LCD_PROUI) void refresh_stepper_current() { rms_current(this->val_mA); } #if USE_SENSORLESS diff --git a/Marlin/src/gcode/lcd/M73.cpp b/Marlin/src/gcode/lcd/M73.cpp index 02d44ca00b..5ac2839beb 100644 --- a/Marlin/src/gcode/lcd/M73.cpp +++ b/Marlin/src/gcode/lcd/M73.cpp @@ -49,28 +49,20 @@ */ void GcodeSuite::M73() { - #if ENABLED(DWIN_LCD_PROUI) + #if ENABLED(SET_PROGRESS_PERCENT) + if (parser.seenval('P')) + ui.set_progress((PROGRESS_SCALE) > 1 + ? parser.value_float() * (PROGRESS_SCALE) + : parser.value_byte() + ); + #endif - DWIN_M73(); - - #else - - #if ENABLED(SET_PROGRESS_PERCENT) - if (parser.seenval('P')) - ui.set_progress((PROGRESS_SCALE) > 1 - ? parser.value_float() * (PROGRESS_SCALE) - : parser.value_byte() - ); - #endif - - #if ENABLED(SET_REMAINING_TIME) - if (parser.seenval('R')) ui.set_remaining_time(60 * parser.value_ulong()); - #endif - - #if ENABLED(SET_INTERACTION_TIME) - if (parser.seenval('C')) ui.set_interaction_time(60 * parser.value_ulong()); - #endif + #if ENABLED(SET_REMAINING_TIME) + if (parser.seenval('R')) ui.set_remaining_time(60 * parser.value_ulong()); + #endif + #if ENABLED(SET_INTERACTION_TIME) + if (parser.seenval('C')) ui.set_interaction_time(60 * parser.value_ulong()); #endif #if ENABLED(M73_REPORT) diff --git a/Marlin/src/gcode/probe/G30.cpp b/Marlin/src/gcode/probe/G30.cpp index 43fc27bfc1..c638e76c1a 100644 --- a/Marlin/src/gcode/probe/G30.cpp +++ b/Marlin/src/gcode/probe/G30.cpp @@ -70,7 +70,9 @@ void GcodeSuite::G30() { remember_feedrate_scaling_off(); - TERN_(DWIN_CREALITY_LCD_JYERSUI, process_subcommands_now(F("G28O"))); + #if ANY(DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI) + process_subcommands_now(F("G28O")); + #endif const ProbePtRaise raise_after = parser.boolval('E', true) ? PROBE_PT_STOW : PROBE_PT_NONE; diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index bda273b734..9fdd0d603e 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2718,14 +2718,18 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #elif ENABLED(DWIN_LCD_PROUI) #if !HAS_MEDIA #error "DWIN_LCD_PROUI requires SDSUPPORT to be enabled." - #elif ANY(PID_EDIT_MENU, PID_AUTOTUNE_MENU) - #error "DWIN_LCD_PROUI does not support PID_EDIT_MENU or PID_AUTOTUNE_MENU." - #elif ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) - #error "DWIN_LCD_PROUI does not support MPC_EDIT_MENU or MPC_AUTOTUNE_MENU." - #elif ENABLED(LCD_BED_TRAMMING) - #error "DWIN_LCD_PROUI does not support LCD_BED_TRAMMING." #elif ALL(LCD_BED_LEVELING, PROBE_MANUALLY) #error "DWIN_LCD_PROUI does not support LCD_BED_LEVELING with PROBE_MANUALLY." + #elif ENABLED(MEDIASORT_MENU_ITEM) && DISABLED(SDCARD_SORT_ALPHA) + #error "MEDIASORT_MENU_ITEM requires SDCARD_SORT_ALPHA." + #elif ENABLED(RUNOUT_TUNE_ITEM) && DISABLED(HAS_FILAMENT_SENSOR) + #error "RUNOUT_TUNE_ITEM requires HAS_FILAMENT_SENSOR." + #elif ENABLED(PLR_TUNE_ITEM) && DISABLED(POWER_LOSS_RECOVERY) + #error "PLR_TUNE_ITEM requires POWER_LOSS_RECOVERY." + #elif ENABLED(JD_TUNE_ITEM) && DISABLED(HAS_JUNCTION_DEVIATION) + #error "JD_TUNE_ITEM requires HAS_JUNCTION_DEVIATION." + #elif ENABLED(ADVK_TUNE_ITEM) && DISABLED(LIN_ADVANCE) + #error "ADVK_TUNE_ITEM requires LIN_ADVANCE." #endif #endif diff --git a/Marlin/src/lcd/e3v2/common/dwin_font.h b/Marlin/src/lcd/e3v2/common/dwin_font.h index 10bb104d27..b92bfcf99c 100644 --- a/Marlin/src/lcd/e3v2/common/dwin_font.h +++ b/Marlin/src/lcd/e3v2/common/dwin_font.h @@ -28,13 +28,15 @@ typedef uint8_t fontid_t; * 0x00=6*12 0x01=8*16 0x02=10*20 0x03=12*24 0x04=14*28 * 0x05=16*32 0x06=20*40 0x07=24*48 0x08=28*56 0x09=32*64 */ -#define font6x12 0x00 +#if DISABLED(TJC_DISPLAY) + #define font6x12 0x00 + #define font20x40 0x06 + #define font24x48 0x07 + #define font28x56 0x08 + #define font32x64 0x09 +#endif #define font8x16 0x01 #define font10x20 0x02 #define font12x24 0x03 #define font14x28 0x04 #define font16x32 0x05 -#define font20x40 0x06 -#define font24x48 0x07 -#define font28x56 0x08 -#define font32x64 0x09 diff --git a/Marlin/src/lcd/e3v2/common/limits.h b/Marlin/src/lcd/e3v2/common/limits.h index 4ac97b82bb..da75d9c982 100644 --- a/Marlin/src/lcd/e3v2/common/limits.h +++ b/Marlin/src/lcd/e3v2/common/limits.h @@ -91,4 +91,10 @@ constexpr xyze_float_t min_acceleration_edit_values = LOGICAL_AXIS_ARRAY_1(MIN_A constexpr xyze_float_t min_steps_edit_values = LOGICAL_AXIS_ARRAY_1(MIN_STEPS_EDIT_VALUE), default_steps = DEFAULT_AXIS_STEPS_PER_UNIT, - max_steps_edit_values = default_steps * float(DEFAULT_MAX_MULTIPLIER); + max_steps_edit_values = + #ifdef MAX_STEPS_EDIT_VALUES + MAX_STEPS_EDIT_VALUES + #else + default_steps * float(DEFAULT_MAX_MULTIPLIER) + #endif + ; diff --git a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp index 7892de2d69..435da10a2a 100644 --- a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp +++ b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp @@ -23,8 +23,8 @@ /** * Bed Level Tools for Pro UI * Extended by: Miguel A. Risco-Castillo (MRISCOC) - * Version: 2.1.0 - * Date: 2022/08/27 + * Version: 3.2.0 + * Date: 2023/05/03 * * Based on the original work of: Henri-J-Norden * https://github.com/Jyers/Marlin/pull/126 @@ -65,7 +65,7 @@ BedLevelToolsClass bedLevelTools; -#if ENABLED(USE_UBL_VIEWER) +#if ENABLED(USE_GRID_MESHVIEWER) bool BedLevelToolsClass::viewer_asymmetric_range = false; bool BedLevelToolsClass::viewer_print_value = false; #endif @@ -170,15 +170,20 @@ void BedLevelToolsClass::MoveToZ() { bedLevelTools.manual_move(bedLevelTools.mesh_x, bedLevelTools.mesh_y, true); } void BedLevelToolsClass::ProbeXY() { - const uint16_t Clear = Z_CLEARANCE_DEPLOY_PROBE; - sprintf_P(cmd, PSTR("G28O\nG0Z%i\nG30X%sY%s"), - Clear, + const uint16_t zclear = Z_CLEARANCE_DEPLOY_PROBE; + sprintf_P(cmd, PSTR("G0Z%i\nG30X%sY%s"), + zclear, dtostrf(bedlevel.get_mesh_x(bedLevelTools.mesh_x), 1, 2, str_1), dtostrf(bedlevel.get_mesh_y(bedLevelTools.mesh_y), 1, 2, str_2) ); gcode.process_subcommands_now(cmd); } +void BedLevelToolsClass::mesh_reset() { + ZERO(bedlevel.z_values); + TERN_(AUTO_BED_LEVELING_BILINEAR, bedlevel.refresh_bed_level()); +} + // Accessors float BedLevelToolsClass::get_max_value() { float max = __FLT_MAX__ * -1; @@ -207,9 +212,11 @@ bool BedLevelToolsClass::meshvalidate() { return true; } -#if ENABLED(USE_UBL_VIEWER) +#if ENABLED(USE_GRID_MESHVIEWER) - void BedLevelToolsClass::Draw_Bed_Mesh(int16_t selected /*= -1*/, uint8_t gridline_width /*= 1*/, uint16_t padding_x /*= 8*/, uint16_t padding_y_top /*= 40 + 53 - 7*/) { + constexpr uint8_t meshfont = TERN(TJC_DISPLAY, font8x16, font6x12); + + void BedLevelToolsClass::Draw_Bed_Mesh(int16_t selected/*=-1*/, uint8_t gridline_width/*=1*/, uint16_t padding_x/*=8*/, uint16_t padding_y_top/*=(40 + 53 - 7)*/) { drawing_mesh = true; const uint16_t total_width_px = DWIN_WIDTH - padding_x - padding_x; const uint16_t cell_width_px = total_width_px / (GRID_MAX_POINTS_X); @@ -227,7 +234,6 @@ bool BedLevelToolsClass::meshvalidate() { } // Draw value square grid - char buf[8]; GRID_LOOP(x, y) { const auto start_x_px = padding_x + x * cell_width_px; const auto end_x_px = start_x_px + cell_width_px - 1 - gridline_width; @@ -246,20 +252,22 @@ bool BedLevelToolsClass::meshvalidate() { LCD_SERIAL.flushTX(); // Draw value text on + char buf[8]; + const uint8_t fs = DWINUI::fontWidth(meshfont); if (viewer_print_value) { - int8_t offset_x, offset_y = cell_height_px / 2 - 6; + int8_t offset_x, offset_y = cell_height_px / 2 - fs; if (isnan(bedlevel.z_values[x][y])) { // undefined - dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + cell_width_px / 2 - 5, start_y_px + offset_y, F("X")); + dwinDrawString(false, meshfont, Color_White, Color_Bg_Blue, start_x_px + cell_width_px / 2 - 5, start_y_px + offset_y, F("X")); } else { // has value - if (GRID_MAX_POINTS_X < 10) + if (GRID_MAX_POINTS_X < (ENABLED(TJC_DISPLAY) ? 8 : 10)) sprintf_P(buf, PSTR("%s"), dtostrf(abs(bedlevel.z_values[x][y]), 1, 2, str_1)); else sprintf_P(buf, PSTR("%02i"), (uint16_t)(abs(bedlevel.z_values[x][y] - (int16_t)bedlevel.z_values[x][y]) * 100)); - offset_x = cell_width_px / 2 - 3 * (strlen(buf)) - 2; - if (!(GRID_MAX_POINTS_X < 10)) - dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px - 2 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, F(".")); - dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + 1 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, buf); + offset_x = cell_width_px / 2 - (fs/2) * (strlen(buf)) - 2; + if (!(GRID_MAX_POINTS_X < (ENABLED(TJC_DISPLAY) ? 8 : 10))) + dwinDrawString(false, meshfont, Color_White, Color_Bg_Blue, start_x_px - 2 + offset_x, start_y_px + offset_y, F(".")); + dwinDrawString(false, meshfont, Color_White, Color_Bg_Blue, start_x_px + 1 + offset_x, start_y_px + offset_y, buf); } safe_delay(10); LCD_SERIAL.flushTX(); @@ -286,6 +294,6 @@ bool BedLevelToolsClass::meshvalidate() { drawing_mesh = false; } -#endif // USE_UBL_VIEWER +#endif // USE_GRID_MESHVIEWER #endif // DWIN_LCD_PROUI && HAS_LEVELING diff --git a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h index 6e642f030c..67beddec61 100644 --- a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h +++ b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h @@ -23,8 +23,8 @@ /** * Bed Level Tools for Pro UI * Extended by: Miguel A. Risco-Castillo (MRISCOC) - * Version: 2.1.0 - * Date: 2022/08/27 + * Version: 3.2.0 + * Date: 2023/05/03 * * Based on the original work of: Henri-J-Norden * https://github.com/Jyers/Marlin/pull/126 @@ -47,14 +47,12 @@ #include "../../../inc/MarlinConfigPre.h" -//#define USE_UBL_VIEWER 1 - #define UBL_Z_OFFSET_MIN -3.0 #define UBL_Z_OFFSET_MAX 3.0 class BedLevelToolsClass { public: - #if ENABLED(USE_UBL_VIEWER) + #if ENABLED(USE_GRID_MESHVIEWER) static bool viewer_asymmetric_range; static bool viewer_print_value; #endif @@ -74,11 +72,12 @@ public: static void MoveToXY(); static void MoveToZ(); static void ProbeXY(); + static void mesh_reset(); static float get_max_value(); static float get_min_value(); static bool meshvalidate(); - #if ENABLED(USE_UBL_VIEWER) - static void Draw_Bed_Mesh(int16_t selected = -1, uint8_t gridline_width = 1, uint16_t padding_x = 8, uint16_t padding_y_top = 40 + 53 - 7); + #if ENABLED(USE_GRID_MESHVIEWER) + static void Draw_Bed_Mesh(int16_t selected=-1, uint8_t gridline_width=1, uint16_t padding_x=8, uint16_t padding_y_top=(40 + 53 - 7)); static void Set_Mesh_Viewer_Status(); #endif }; diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index 83105f2109..624ea23385 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -23,8 +23,8 @@ /** * DWIN Enhanced implementation for PRO UI * Author: Miguel A. Risco-Castillo (MRISCOC) - * Version: 3.21.2 - * Date: 2022/12/02 + * Version: 3.25.3 + * Date: 2023/05/18 */ #include "../../../inc/MarlinConfig.h" @@ -33,22 +33,25 @@ #include "../../utf8.h" #include "../../marlinui.h" - -#include "../../../sd/cardreader.h" - #include "../../../MarlinCore.h" #include "../../../core/serial.h" #include "../../../core/macros.h" - #include "../../../module/temperature.h" #include "../../../module/printcounter.h" #include "../../../module/motion.h" -#include "../../../module/stepper.h" #include "../../../module/planner.h" - +#include "../../../module/stepper.h" #include "../../../gcode/gcode.h" #include "../../../gcode/queue.h" +#if HAS_MEDIA + #include "../../../sd/cardreader.h" +#endif + +#if NEED_HEX_PRINT + #include "../../../libs/hex_print.h" +#endif + #if HAS_FILAMENT_SENSOR #include "../../../feature/runout.h" #endif @@ -98,8 +101,11 @@ #include "../../../feature/leds/leds.h" #endif +#if HAS_TRINAMIC_CONFIG + #include "../../../feature/tmc_util.h" +#endif + #include "dwin.h" -#include "dwinui.h" #include "menus.h" #include "dwin_popup.h" @@ -143,6 +149,15 @@ // Load and Unload limits #define MAX_LOAD_UNLOAD 500 +// Juntion deviation limits +#define MIN_JD_MM 0.001 +#define MAX_JD_MM TERN(LIN_ADVANCE, 0.3f, 0.5f) + +#if HAS_TRINAMIC_CONFIG + #define MIN_TMC_CURRENT 100 + #define MAX_TMC_CURRENT 3000 +#endif + // Editable temperature limits #define MIN_ETEMP 0 #define MAX_ETEMP (thermalManager.hotend_maxtemp[0] - (HOTEND_OVERSHOOT)) @@ -151,7 +166,6 @@ #define DWIN_VAR_UPDATE_INTERVAL 1024 #define DWIN_UPDATE_INTERVAL 1024 -#define DWIN_REMAIN_TIME_UPDATE_INTERVAL SEC_TO_MS(20) #if HAS_MESH && HAS_BED_PROBE #define BABY_Z_VAR probe.offset.z @@ -188,23 +202,20 @@ typedef struct { } select_t; select_t select_page{0}, select_print{0}; -#if HAS_HOTEND - float last_E = 0; - #define E_MIN_POS (last_E - (EXTRUDE_MAXLENGTH)) - #define E_MAX_POS (last_E + (EXTRUDE_MAXLENGTH)) +#if ENABLED(LCD_BED_TRAMMING) + constexpr float bed_tramming_inset_lfbr[] = BED_TRAMMING_INSET_LFRB; #endif bool hash_changed = true; // Flag to know if message status was changed -uint8_t _percent_done = 0; -uint32_t _remain_time = 0; bool blink = false; -millis_t dwin_heat_time = 0; uint8_t checkkey = 255, last_checkkey = MainMenu; // New menu system pointers MenuClass *FileMenu = nullptr; MenuClass *PrepareMenu = nullptr; -MenuClass *TrammingMenu = nullptr; +#if ENABLED(LCD_BED_TRAMMING) + MenuClass *TrammingMenu = nullptr; +#endif MenuClass *MoveMenu = nullptr; MenuClass *ControlMenu = nullptr; MenuClass *AdvancedSettings = nullptr; @@ -223,8 +234,9 @@ MenuClass *FilamentMenu = nullptr; #if ENABLED(MESH_BED_LEVELING) MenuClass *ManualMesh = nullptr; #endif -#if HAS_HOTEND +#if HAS_PREHEAT MenuClass *PreheatMenu = nullptr; + MenuClass *PreheatHotendMenu = nullptr; #endif MenuClass *TemperatureMenu = nullptr; MenuClass *MaxSpeedMenu = nullptr; @@ -236,10 +248,10 @@ MenuClass *StepsMenu = nullptr; #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) MenuClass *HotendMPCMenu = nullptr; #endif -#if ENABLED(PIDTEMP) +#if ENABLED(PIDTEMP) && ANY(PID_EDIT_MENU, PID_AUTOTUNE_MENU) MenuClass *HotendPIDMenu = nullptr; #endif -#if ENABLED(PIDTEMPBED) +#if ENABLED(PIDTEMPBED) && ANY(PID_EDIT_MENU, PID_AUTOTUNE_MENU) MenuClass *BedPIDMenu = nullptr; #endif #if ENABLED(CASELIGHT_USES_BRIGHTNESS) @@ -263,6 +275,12 @@ MenuClass *StepsMenu = nullptr; MenuClass *EditMeshMenu = nullptr; #endif #endif +#if ENABLED(SHAPING_MENU) + MenuClass *InputShapingMenu = nullptr; +#endif +#if HAS_TRINAMIC_CONFIG + MenuClass *TrinamicConfigMenu = nullptr; +#endif // Updatable menuitems pointers MenuItemClass *HotendTargetItem = nullptr; @@ -541,6 +559,7 @@ void Draw_Print_Labels() { } void Draw_Print_ProgressBar() { + const uint8_t _percent_done = ui.get_progress_percent(); DWINUI::Draw_IconWB(ICON_Bar, 15, 93); dwinDrawRectangle(1, HMI_data.Barfill_Color, 16 + _percent_done * 240 / 100, 93, 256, 113); DWINUI::Draw_Int(HMI_data.PercentTxt_Color, HMI_data.Background_Color, 3, 117, 133, _percent_done); @@ -549,19 +568,22 @@ void Draw_Print_ProgressBar() { void Draw_Print_ProgressElapsed() { char buf[10]; - duration_t elapsed = print_job_timer.duration(); // print timer + duration_t elapsed = print_job_timer.duration(); // Print timer sprintf_P(buf, PSTR("%02i:%02i "), (uint16_t)(elapsed.value / 3600), ((uint16_t)elapsed.value % 3600) / 60); DWINUI::Draw_String(HMI_data.Text_Color, HMI_data.Background_Color, 47, 192, buf); } -void Draw_Print_ProgressRemain() { - char buf[10]; - sprintf_P(buf, PSTR("%02i:%02i "), (uint16_t)(_remain_time / 3600), ((uint16_t)_remain_time % 3600) / 60); - DWINUI::Draw_String(HMI_data.Text_Color, HMI_data.Background_Color, 181, 192, buf); -} +#if ENABLED(SHOW_REMAINING_TIME) + void Draw_Print_ProgressRemain() { + const uint32_t _remain_time = ui.get_remaining_time(); + char buf[10]; + sprintf_P(buf, PSTR("%02i:%02i "), (uint16_t)(_remain_time / 3600), ((uint16_t)_remain_time % 3600) / 60); + DWINUI::Draw_String(HMI_data.Text_Color, HMI_data.Background_Color, 181, 192, buf); + } +#endif void ICON_ResumeOrPause() { - if (checkkey == PrintProcess) printingIsPaused() ? ICON_Resume() : ICON_Pause(); + if (checkkey == PrintProcess) (print_job_timer.isPaused() || hmiFlag.pause_flag) ? ICON_Resume() : ICON_Pause(); } // Update filename on print @@ -584,13 +606,13 @@ void Draw_PrintProcess() { else Title.ShowCaption(GET_TEXT_F(MSG_PRINTING)); DWINUI::ClearMainArea(); - DWIN_Print_Header(SD_Printing() ? card.longest_filename() : nullptr); + DWIN_Print_Header(nullptr); Draw_Print_Labels(); DWINUI::Draw_Icon(ICON_PrintTime, 15, 173); DWINUI::Draw_Icon(ICON_RemainTime, 150, 171); Draw_Print_ProgressBar(); Draw_Print_ProgressElapsed(); - Draw_Print_ProgressRemain(); + TERN_(SHOW_REMAINING_TIME, Draw_Print_ProgressRemain()); ICON_Tune(); ICON_ResumeOrPause(); ICON_Stop(); @@ -608,31 +630,28 @@ void Goto_PrintProcess() { } void Draw_PrintDone() { - // show percent bar and value - _percent_done = 100; - _remain_time = 0; - + TERN_(SET_PROGRESS_PERCENT, ui.set_progress_done()); + TERN_(SET_REMAINING_TIME, ui.reset_remaining_time()); Title.ShowCaption(GET_TEXT_F(MSG_PRINT_DONE)); DWINUI::ClearMainArea(); DWIN_Print_Header(nullptr); - #if HAS_GCODE_PREVIEW - const bool isvalid = Preview_Valid(); - if (isvalid) { - dwinIconShow(0, 0, 1, 21, 100, 0x00); - DWINUI::Draw_Button(BTN_Continue, 86, 300); + const bool haspreview = Preview_Valid(); + if (haspreview) { + Preview_Show(); + DWINUI::Draw_Button(BTN_Continue, 86, 295); } #else - constexpr bool isvalid = false; + constexpr bool haspreview = false; #endif - if (!isvalid) { + if (!haspreview) { Draw_Print_ProgressBar(); Draw_Print_Labels(); DWINUI::Draw_Icon(ICON_PrintTime, 15, 173); DWINUI::Draw_Icon(ICON_RemainTime, 150, 171); Draw_Print_ProgressElapsed(); - Draw_Print_ProgressRemain(); + TERN_(SHOW_REMAINING_TIME, Draw_Print_ProgressRemain()); DWINUI::Draw_Button(BTN_Continue, 86, 273); } } @@ -674,7 +693,13 @@ void _update_axis_value(const AxisEnum axis, const uint16_t x, const uint16_t y, // Check for a position change static xyz_pos_t oldpos = { -1, -1, -1 }; - const float p = TERN(SHOW_REAL_POS, stepper.position(axis) / planner.settings.axis_steps_per_mm[axis], current_position[axis]); + const float p = ( + #if ALL(IS_FULL_CARTESIAN, SHOW_REAL_POS) + planner.get_axis_position_mm(axis) + #else + current_position[axis] + #endif + ); const bool changed = oldpos[axis] != p; if (changed) oldpos[axis] = p; @@ -689,34 +714,58 @@ void _update_axis_value(const AxisEnum axis, const uint16_t x, const uint16_t y, } } +void _draw_iconblink(bool &flag, const bool sensor, const uint8_t icon1, const uint8_t icon2, const uint16_t x, const uint16_t y) { + #if DISABLED(NO_BLINK_IND) + if (flag != sensor) { + flag = sensor; + if (!flag) { + dwinDrawBox(1, HMI_data.Background_Color, x, y, 20, 20); + DWINUI::Draw_Icon(icon1, x, y); + } + } + if (flag) { + dwinDrawBox(1, blink ? HMI_data.SplitLine_Color : HMI_data.Background_Color, x, y, 20, 20); + DWINUI::Draw_Icon(icon2, x, y); + } + #else + if (flag != sensor) { + flag = sensor; + dwinDrawBox(1, HMI_data.Background_Color, x, y, 20, 20); + DWINUI::Draw_Icon(flag ? icon2 : icon1, x, y); + } + #endif +} + void _draw_ZOffsetIcon() { #if HAS_LEVELING - #if NO_BLINK_LEV_IND - static bool _leveling_active = false; - if (_leveling_active != planner.leveling_active) { - _leveling_active = planner.leveling_active; - dwinDrawRectangle(1, HMI_data.Background_Color, 186, 415, 205, 436); - DWINUI::Draw_Icon(_leveling_active ? ICON_SetZOffset : ICON_Zoffset, 187, 416); - } - #else - if (planner.leveling_active) { - dwinDrawRectangle(1, blink ? HMI_data.SplitLine_Color : HMI_data.Background_Color, 186, 415, 205, 436); - DWINUI::Draw_Icon(ICON_SetZOffset, 186, 416); - } - static bool _leveling_active = false; - if (_leveling_active != planner.leveling_active) { - _leveling_active = planner.leveling_active; - if (!_leveling_active) { - dwinDrawRectangle(1, HMI_data.Background_Color, 186, 415, 205, 436); - DWINUI::Draw_Icon(ICON_Zoffset, 187, 416); - } - } - #endif + static bool _leveling_active = false; + _draw_iconblink(_leveling_active, planner.leveling_active, ICON_Zoffset, ICON_SetZOffset, 186, 416); #else DWINUI::Draw_Icon(ICON_Zoffset, 187, 416); #endif } +void _draw_feedrate() { + #if ENABLED(SHOW_SPEED_IND) + int16_t _value; + if (blink) { + _value = feedrate_percentage; + DWINUI::Draw_String(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 116 + 4 * STAT_CHR_W + 2, 384, F(" %")); + } + else { + _value = CEIL(feedrate_mm_s * feedrate_percentage / 100); + dwinDrawBox(1, HMI_data.Background_Color, 116 + 5 * STAT_CHR_W + 2, 384, 20, 20); + } + DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 116 + 2 * STAT_CHR_W, 384, _value); + #else + static int16_t _feedrate = 100; + if (_feedrate != feedrate_percentage) { + _feedrate = feedrate_percentage; + DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 116 + 2 * STAT_CHR_W, 384, _feedrate); + } + #endif +} + void _draw_xyz_position(const bool force) { _update_axis_value(X_AXIS, 27, 459, force); _update_axis_value(Y_AXIS, 112, 459, force); @@ -724,6 +773,7 @@ void _draw_xyz_position(const bool force) { } void update_variable() { + _draw_xyz_position(false); #if HAS_HOTEND static celsius_t _hotendtemp = 0, _hotendtarget = 0; const celsius_t hc = thermalManager.wholeDegHotend(0), @@ -777,17 +827,11 @@ void update_variable() { DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 25 + 4 * STAT_CHR_W + 6, 417, _bedtarget); #endif - static int16_t _feedrate = 100; - if (_feedrate != feedrate_percentage) { - _feedrate = feedrate_percentage; - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 116 + 2 * STAT_CHR_W, 384, _feedrate); - } + _draw_feedrate(); #if HAS_FAN - if (_new_fanspeed) { - _fanspeed = thermalManager.fan_speed[0]; + if (_new_fanspeed) DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 195 + 2 * STAT_CHR_W, 384, _fanspeed); - } #endif static float _offset = 0; @@ -797,7 +841,6 @@ void update_variable() { } _draw_ZOffsetIcon(); - _draw_xyz_position(false); } /** @@ -806,43 +849,43 @@ void update_variable() { bool DWIN_lcd_sd_status = false; -void SetMediaAutoMount() { - Toggle_Chkb_Line(HMI_data.MediaAutoMount); -} +#if ENABLED(MEDIASORT_MENU_ITEM) + void SetMediaSort() { + Toggle_Chkb_Line(HMI_data.MediaSort); + card.setSortOn(HMI_data.MediaSort); + } +#endif + +void SetMediaAutoMount() { Toggle_Chkb_Line(HMI_data.MediaAutoMount); } inline uint16_t nr_sd_menu_items() { return _MIN(card.get_num_items() + !card.flag.workDirIsRoot, MENU_MAX_ITEMS); } void make_name_without_ext(char *dst, char *src, size_t maxlen=MENU_CHAR_LIMIT) { - size_t pos = strlen(src); // index of ending nul + size_t pos = strlen(src); // Index of ending nul // For files, remove the extension // which may be .gcode, .gco, or .g if (!card.flag.filenameIsDir) - while (pos && src[pos] != '.') pos--; // find last '.' (stop at 0) + while (pos && src[pos] != '.') pos--; // Find last '.' (stop at 0) if (!pos) pos = strlen(src); // pos = 0 ('.' not found) restore pos size_t len = pos; // nul or '.' if (len > maxlen) { // Keep the name short - pos = len = maxlen; // move nul down - dst[--pos] = '.'; // insert dots + pos = len = maxlen; // Move nul down + dst[--pos] = '.'; // Insert dots dst[--pos] = '.'; dst[--pos] = '.'; } - dst[len] = '\0'; // end it + dst[len] = '\0'; // End it // Copy down to 0 while (pos--) dst[pos] = src[pos]; } -void Redraw_SD_List() { - InvalidateMenu(); - Draw_Print_File_Menu(); -} - void SDCard_Up() { card.cdup(); DWIN_lcd_sd_status = false; // On next DWIN_Update @@ -865,8 +908,10 @@ void onClickSDItem() { if (card.fileIsBinary()) return DWIN_Popup_Confirm(ICON_Error, F("Please check filenames"), F("Only G-code can be printed")); - else + else { + DWIN_Print_Header(card.longest_filename()); // Save filename return Goto_ConfirmToPrint(); + } } } @@ -892,7 +937,7 @@ void onClickSDItem() { static int8_t shift_amt = 0, shift_len = 0; if (reset) { last_itemselected = 0; - hasUpDir = !card.flag.workDirIsRoot; // is a SubDir + hasUpDir = !card.flag.workDirIsRoot; // Is a SubDir return; } const uint8_t selected = FileMenu->selected; @@ -961,9 +1006,12 @@ void HMI_SDCardUpdate() { if (hmiFlag.home_flag) return; if (DWIN_lcd_sd_status != card.isMounted()) { DWIN_lcd_sd_status = card.isMounted(); - if (IsMenu(FileMenu)) Redraw_SD_List(); + ResetMenu(FileMenu); + if (IsMenu(FileMenu)) { + CurrentMenu = nullptr; + Draw_Print_File_Menu(); + } if (!DWIN_lcd_sd_status && SD_Printing()) ui.abort_print(); // Media removed while printing - dwinUpdateLCD(); } } @@ -974,6 +1022,12 @@ void HMI_SDCardUpdate() { void DWIN_Draw_Dashboard() { dwinDrawRectangle(1, HMI_data.Background_Color, 0, STATUS_Y + 21, DWIN_WIDTH, DWIN_HEIGHT - 1); + dwinDrawRectangle(1, HMI_data.SplitLine_Color, 0, 449, DWIN_WIDTH, 451); + + DWINUI::Draw_Icon(ICON_MaxSpeedX, 10, 456); + DWINUI::Draw_Icon(ICON_MaxSpeedY, 95, 456); + DWINUI::Draw_Icon(ICON_MaxSpeedZ, 180, 456); + _draw_xyz_position(true); #if HAS_HOTEND DWINUI::Draw_Icon(ICON_HotendTemp, 10, 383); @@ -995,7 +1049,7 @@ void DWIN_Draw_Dashboard() { DWINUI::Draw_Icon(ICON_Speed, 113, 383); DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 116 + 2 * STAT_CHR_W, 384, feedrate_percentage); - DWINUI::Draw_String(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 116 + 5 * STAT_CHR_W + 2, 384, F("%")); + IF_DISABLED(SHOW_SPEED_IND, DWINUI::Draw_String(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 116 + 5 * STAT_CHR_W + 2, 384, F("%"))); #if HAS_FAN DWINUI::Draw_Icon(ICON_FanSpeed, 187, 383); @@ -1004,17 +1058,8 @@ void DWIN_Draw_Dashboard() { #if HAS_ZOFFSET_ITEM DWINUI::Draw_Icon(planner.leveling_active ? ICON_SetZOffset : ICON_Zoffset, 187, 416); + DWINUI::Draw_Signed_Float(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 2, 2, 204, 417, BABY_Z_VAR); #endif - - DWINUI::Draw_Signed_Float(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 2, 2, 204, 417, BABY_Z_VAR); - - dwinDrawRectangle(1, HMI_data.SplitLine_Color, 0, 449, DWIN_WIDTH, 451); - - DWINUI::Draw_Icon(ICON_MaxSpeedX, 10, 456); - DWINUI::Draw_Icon(ICON_MaxSpeedY, 95, 456); - DWINUI::Draw_Icon(ICON_MaxSpeedZ, 180, 456); - _draw_xyz_position(true); - } void Draw_Info_Menu() { @@ -1091,8 +1136,8 @@ void HMI_MainMenu() { // Pause or Stop popup void onClick_PauseOrStop() { switch (select_print.now) { - case PRINT_PAUSE_RESUME: if (hmiFlag.select_flag) ui.pause_print(); break; // confirm pause - case PRINT_STOP: if (hmiFlag.select_flag) ui.abort_print(); break; // stop confirmed then abort print + case PRINT_PAUSE_RESUME: if (hmiFlag.select_flag) ui.pause_print(); break; // Confirm pause + case PRINT_STOP: if (hmiFlag.select_flag) ui.abort_print(); break; // Stop confirmed then abort print default: break; } return Goto_PrintProcess(); @@ -1125,7 +1170,7 @@ void HMI_Printing() { switch (select_print.now) { case PRINT_SETUP: Draw_Tune_Menu(); break; case PRINT_PAUSE_RESUME: - if (printingIsPaused()) { // if printer is already in pause + if (printingIsPaused()) { // If printer is already in pause ui.resume_print(); break; } @@ -1163,12 +1208,6 @@ void Draw_Main_Area() { } } -void HMI_ReturnScreen() { - checkkey = last_checkkey; - wait_for_user = false; - Draw_Main_Area(); -} - void HMI_WaitForUser() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState != ENCODER_DIFF_NO && !ui.backlight) { @@ -1197,7 +1236,7 @@ void HMI_Init() { #define BOOTSCREEN_TIMEOUT 1100 #endif DWINUI::Draw_Box(1, Color_Black, { 5, 220, DWIN_WIDTH - 5, DWINUI::fontHeight() }); - DWINUI::Draw_CenteredString(Color_White, 220, F("Professional Firmware ")); + DWINUI::Draw_CenteredString(Color_White, 220, F("ProUI starting up ")); for (uint16_t t = 15; t < 257; t += 11) { DWINUI::Draw_Icon(ICON_Bar, 15, 260); dwinDrawRectangle(1, HMI_data.Background_Color, t, 260, 257, 280); @@ -1220,7 +1259,11 @@ void EachMomentUpdate() { if (checkkey == ESDiagProcess) ESDiag.Update(); #endif #if SHOW_TUNING_GRAPH - if (checkkey == PidProcess) plot.Update((HMI_value.pidresult == PIDTEMP_START) ? thermalManager.wholeDegHotend(0) : thermalManager.wholeDegBed()); + if (checkkey == PidProcess) { + TERN_(PIDTEMP, if (HMI_value.tempcontrol == PIDTEMP_START) plot.Update(thermalManager.wholeDegHotend(0))); + TERN_(PIDTEMPBED, if (HMI_value.tempcontrol == PIDTEMPBED_START) plot.Update(thermalManager.wholeDegBed())); + } + TERN_(MPCTEMP, if (checkkey == MPCProcess) plot.Update(thermalManager.wholeDegHotend(0))); #endif } @@ -1261,40 +1304,37 @@ void EachMomentUpdate() { DWIN_Print_Resume(); } - if (checkkey == PrintProcess) { // print process + if (checkkey == PrintProcess) { // Print process - duration_t elapsed = print_job_timer.duration(); // print timer + // Progress percent + static uint8_t _percent_done = 255; + if (_percent_done != ui.get_progress_percent()) { + _percent_done = ui.get_progress_percent(); + Draw_Print_ProgressBar(); + } - if (card.isPrinting() && !hmiFlag.percent_flag) { - uint8_t percentDone = card.percentDone(); - if (_percent_done != percentDone) { // print percent - _percent_done = percentDone; - Draw_Print_ProgressBar(); - } - - // Estimate remaining time every 20 seconds - static millis_t next_remain_time_update = 0; - if (_percent_done > 1 && ELAPSED(ms, next_remain_time_update) && !hmiFlag.heat_flag && !hmiFlag.remain_flag) { - _remain_time = (elapsed.value - dwin_heat_time) / (_percent_done * 0.01f) - (elapsed.value - dwin_heat_time); - next_remain_time_update += DWIN_REMAIN_TIME_UPDATE_INTERVAL; + // Remaining time + #if ENABLED(SHOW_REMAINING_TIME) + static uint32_t _remain_time = 0; + if (_remain_time != ui.get_remaining_time()) { + _remain_time = ui.get_remaining_time(); Draw_Print_ProgressRemain(); } - } + #endif - // Print time so far - static uint16_t last_Printtime = 0; - const uint16_t min = (elapsed.value % 3600) / 60; - if (last_Printtime != min) { // 1 minute update - last_Printtime = min; + // Elapsed print time + static uint16_t _printtime = 0; + const uint16_t min = (print_job_timer.duration() % 3600) / 60; + if (_printtime != min) { // 1 minute update + _printtime = min; Draw_Print_ProgressElapsed(); } - } #if ENABLED(POWER_LOSS_RECOVERY) - else if (DWIN_lcd_sd_status && recovery.dwin_flag) { // resume print before power off + else if (DWIN_lcd_sd_status && recovery.dwin_flag) { // Resume print before power off return Goto_PowerLossRecovery(); } - #endif // POWER_LOSS_RECOVERY + #endif dwinUpdateLCD(); } @@ -1321,6 +1361,7 @@ void EachMomentUpdate() { const char * const filename = card.diveToFile(true, dir, recovery.info.sd_filename); card.selectFileByName(filename); DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 207, card.longest_filename()); + DWIN_Print_Header(card.longest_filename()); // Save filename Draw_Select_Highlight(hmiFlag.select_flag); dwinUpdateLCD(); } @@ -1332,6 +1373,7 @@ void EachMomentUpdate() { return Goto_Main_Menu(); } else { + HMI_SaveProcessID(NothingToDo); select_print.set(PRINT_SETUP); queue.inject(F("M1000")); } @@ -1345,7 +1387,6 @@ void EachMomentUpdate() { #endif // POWER_LOSS_RECOVERY - void DWIN_HandleScreen() { switch (checkkey) { case MainMenu: HMI_MainMenu(); break; @@ -1372,27 +1413,41 @@ void DWIN_HandleScreen() { } bool IDisPopUp() { // If ID is popup... - return (checkkey == NothingToDo) - || (checkkey == WaitResponse) - || (checkkey == Homing) - || (checkkey == Leveling) - || (checkkey == PidProcess) - || TERN0(HAS_ESDIAG, (checkkey == ESDiagProcess)) - || (checkkey == Popup); + switch (checkkey) { + case NothingToDo: + case WaitResponse: + case Popup: + case Homing: + case Leveling: + case PidProcess: + TERN_(HAS_ESDIAG, case ESDiagProcess:) + return true; + default: break; + } + return false; } void HMI_SaveProcessID(const uint8_t id) { - if (checkkey != id) { - if (!IDisPopUp()) last_checkkey = checkkey; // if previous is not a popup - if ((id == Popup) - || TERN0(HAS_ESDIAG, (id == ESDiagProcess)) - || (id == PrintDone) - || (id == Leveling) - || (id == WaitResponse)) wait_for_user = true; - checkkey = id; + if (checkkey == id) return; + if (!IDisPopUp()) last_checkkey = checkkey; // If previous is not a popup + checkkey = id; + switch (id) { + case Popup: + case WaitResponse: + case PrintDone: + case Leveling: + TERN_(HAS_ESDIAG, case ESDiagProcess:) + wait_for_user = true; + default: break; } } +void HMI_ReturnScreen() { + checkkey = last_checkkey; + wait_for_user = false; + Draw_Main_Area(); +} + void dwinHomingStart() { hmiFlag.home_flag = true; HMI_SaveProcessID(Homing); @@ -1402,7 +1457,10 @@ void dwinHomingStart() { void dwinHomingDone() { hmiFlag.home_flag = false; - HMI_ReturnScreen(); + if (last_checkkey == PrintDone) + Goto_PrintDone(); + else + HMI_ReturnScreen(); } void DWIN_LevelingStart() { @@ -1411,16 +1469,22 @@ void DWIN_LevelingStart() { Title.ShowCaption(GET_TEXT_F(MSG_BED_LEVELING)); DWIN_Show_Popup(ICON_AutoLeveling, GET_TEXT_F(MSG_BED_LEVELING), GET_TEXT_F(MSG_PLEASE_WAIT)); #if ALL(AUTO_BED_LEVELING_UBL, PREHEAT_BEFORE_LEVELING) - #if HAS_HOTEND - if (thermalManager.degTargetHotend(0) < LEVELING_NOZZLE_TEMP) - thermalManager.setTargetHotend(LEVELING_NOZZLE_TEMP, 0); + #if HAS_BED_PROBE + if (!DEBUGGING(DRYRUN)) probe.preheat_for_probing(LEVELING_NOZZLE_TEMP, HMI_data.BedLevT); + #else + #if HAS_HOTEND + if (!DEBUGGING(DRYRUN) && thermalManager.degTargetHotend(0) < LEVELING_NOZZLE_TEMP) { + thermalManager.setTargetHotend(LEVELING_NOZZLE_TEMP, 0); + thermalManager.wait_for_hotend(0); + } + #endif + #if HAS_HEATED_BED + if (!DEBUGGING(DRYRUN) && thermalManager.degTargetBed() < HMI_data.BedLevT) { + thermalManager.setTargetBed(HMI_data.BedLevT); + thermalManager.wait_for_bed_heating(); + } + #endif #endif - #if HAS_HEATED_BED - if (thermalManager.degTargetBed() < HMI_data.BedLevT) - thermalManager.setTargetBed(HMI_data.BedLevT); - #endif - TERN_(HAS_HOTEND, thermalManager.wait_for_hotend(0)); - TERN_(HAS_HEATED_BED, thermalManager.wait_for_bed_heating()); #endif #elif ENABLED(MESH_BED_LEVELING) Draw_ManualMesh_Menu(); @@ -1428,15 +1492,13 @@ void DWIN_LevelingStart() { } void DWIN_LevelingDone() { - TERN_(HAS_MESH, Goto_MeshViewer()); + TERN_(HAS_MESH, Goto_MeshViewer(true)); } #if HAS_MESH void DWIN_MeshUpdate(const int8_t cpos, const int8_t tpos, const_float_t zval) { - char msg[33] = ""; char str_1[6] = ""; - sprintf_P(msg, PSTR(S_FMT " %i/%i Z=%s"), GET_TEXT(MSG_PROBING_POINT), cpos, tpos, dtostrf(zval, 1, 2, str_1)); - ui.set_status(msg); + ui.status_printf(0, F(S_FMT " %i/%i Z=%s"), GET_TEXT_F(MSG_PROBING_POINT), cpos, tpos, dtostrf(zval, 1, 2, str_1)); } #endif @@ -1452,7 +1514,7 @@ void DWIN_LevelingDone() { DWINUI::ClearMainArea(); Draw_Popup_Bkgd(); - switch (HMI_value.pidresult) { + switch (HMI_value.tempcontrol) { default: return; #if ENABLED(MPC_AUTOTUNE) case MPCTEMP_START: @@ -1469,7 +1531,7 @@ void DWIN_LevelingDone() { #endif } - switch (HMI_value.pidresult) { + switch (HMI_value.tempcontrol) { default: break; #if ANY(PIDTEMP, MPC_AUTOTUNE) TERN_(PIDTEMP, case PIDTEMP_START:) @@ -1484,7 +1546,7 @@ void DWIN_LevelingDone() { #endif } - switch (HMI_value.pidresult) { + switch (HMI_value.tempcontrol) { default: break; #if ENABLED(MPC_AUTOTUNE) case MPCTEMP_START: @@ -1526,7 +1588,7 @@ void DWIN_LevelingDone() { } void DWIN_PidTuning(tempcontrol_t result) { - HMI_value.pidresult = result; + HMI_value.tempcontrol = result; switch (result) { #if ENABLED(PIDTEMP) case PIDTEMP_START: @@ -1560,7 +1622,7 @@ void DWIN_LevelingDone() { checkkey = last_checkkey; DWIN_Popup_Confirm(ICON_TempTooHigh, GET_TEXT_F(MSG_ERROR), GET_TEXT_F(MSG_PID_TIMEOUT)); break; - case PID_DONE: + case AUTOTUNE_DONE: checkkey = last_checkkey; DWIN_Popup_Confirm(ICON_TempTooLow, GET_TEXT_F(MSG_PID_AUTOTUNE), GET_TEXT_F(MSG_BUTTON_DONE)); break; @@ -1575,7 +1637,7 @@ void DWIN_LevelingDone() { #if ENABLED(MPC_AUTOTUNE) void DWIN_MPCTuning(tempcontrol_t result) { - HMI_value.pidresult = result; + HMI_value.tempcontrol = result; switch (result) { case MPCTEMP_START: HMI_SaveProcessID(MPCProcess); @@ -1595,7 +1657,7 @@ void DWIN_LevelingDone() { DWIN_Popup_Confirm(ICON_TempTooHigh, GET_TEXT_F(MSG_ERROR), F(STR_MPC_AUTOTUNE_INTERRUPTED)); ui.reset_alert_level(); break; - case MPC_DONE: + case AUTOTUNE_DONE: checkkey = last_checkkey; DWIN_Popup_Confirm(ICON_TempTooLow, GET_TEXT_F(MSG_MPC_AUTOTUNE), GET_TEXT_F(MSG_BUTTON_DONE)); ui.reset_alert_level(); @@ -1612,10 +1674,8 @@ void DWIN_LevelingDone() { // Started a Print Job void DWIN_Print_Started() { TERN_(HAS_GCODE_PREVIEW, if (Host_Printing()) Preview_Invalidate()); - _percent_done = 0; - _remain_time = 0; - hmiFlag.percent_flag = false; - hmiFlag.remain_flag = false; + TERN_(SET_PROGRESS_PERCENT, ui.progress_reset()); + TERN_(SET_REMAINING_TIME, ui.reset_remaining_time()); hmiFlag.pause_flag = false; hmiFlag.abort_flag = false; select_print.reset(); @@ -1636,6 +1696,7 @@ void DWIN_Print_Resume() { // Ended print job void DWIN_Print_Finished() { TERN_(POWER_LOSS_RECOVERY, if (card.isPrinting()) recovery.cancel()); + hmiFlag.abort_flag = false; hmiFlag.pause_flag = false; wait_for_heatup = false; planner.finish_and_disable(); @@ -1648,23 +1709,6 @@ void DWIN_Print_Aborted() { DWIN_Print_Finished(); } -// Progress and remaining time update -void DWIN_M73() { - if (parser.seenval('P')) { - _percent_done = parser.value_byte(); - hmiFlag.percent_flag = true; - } - if (parser.seenval('R')) { - _remain_time = parser.value_ulong() * 60; - hmiFlag.remain_flag = true; - } - if (checkkey == PrintProcess) { - Draw_Print_ProgressBar(); - Draw_Print_ProgressRemain(); - Draw_Print_ProgressElapsed(); - } -} - #if HAS_FILAMENT_SENSOR // Filament Runout process void DWIN_FilamentRunout(const uint8_t extruder) { LCD_MESSAGE(MSG_RUNOUT_SENSOR); } @@ -1703,7 +1747,13 @@ void DWIN_SetDataDefaults() { #endif TERN_(PREHEAT_BEFORE_LEVELING, HMI_data.BedLevT = LEVELING_BED_TEMP); TERN_(BAUD_RATE_GCODE, SetBaud250K()); - HMI_data.FullManualTramming = false; + #if ALL(LCD_BED_TRAMMING, HAS_BED_PROBE) + HMI_data.FullManualTramming = DISABLED(BED_TRAMMING_USE_PROBE); + #endif + #if ENABLED(MEDIASORT_MENU_ITEM) + HMI_data.MediaSort = true; + card.setSortOn(true); + #endif HMI_data.MediaAutoMount = ENABLED(HAS_SD_EXTENDER); #if ALL(INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) HMI_data.z_after_homing = DEF_Z_AFTER_HOMING; @@ -1712,6 +1762,8 @@ void DWIN_SetDataDefaults() { TERN_(LED_COLOR_PRESETS, leds.set_default()); ApplyLEDColor(); #endif + TERN_(ADAPTIVE_STEP_SMOOTHING, HMI_data.AdaptiveStepSmoothing = true); + TERN_(HAS_GCODE_PREVIEW, HMI_data.EnablePreview = true); } void DWIN_CopySettingsTo(char * const buff) { @@ -1738,7 +1790,7 @@ void DWIN_CopySettingsFrom(const char * const buff) { // Initialize or re-initialize the LCD void MarlinUI::init_lcd() { - delay(750); // wait to wakeup screen + delay(750); // Wait to wakeup screen const bool hs = dwinHandshake(); UNUSED(hs); dwinFrameSetDir(1); dwinJPGCacheTo1(Language_English); @@ -1747,22 +1799,21 @@ void MarlinUI::init_lcd() { void dwinInitScreen() { DWIN_SetColorDefaults(); - HMI_Init(); // draws boot screen + HMI_Init(); // Draws boot screen DWINUI::init(); DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); DWINUI::onTitleDraw = Draw_Title; InitMenu(); checkkey = 255; hash_changed = true; - last_E = 0; DWIN_DrawStatusLine(); DWIN_Draw_Dashboard(); Goto_Main_Menu(); } void MarlinUI::update() { - EachMomentUpdate(); // Status update HMI_SDCardUpdate(); // SD card update + EachMomentUpdate(); // Status update DWIN_HandleScreen(); // Rotary encoder update } @@ -1798,7 +1849,7 @@ void DWIN_RedrawScreen() { } #if ENABLED(ADVANCED_PAUSE_FEATURE) - void DWIN_Popup_Pause(FSTR_P const fmsg, uint8_t button /*= 0*/) { + void DWIN_Popup_Pause(FSTR_P const fmsg, uint8_t button/*=0*/) { HMI_SaveProcessID(button ? WaitResponse : NothingToDo); DWIN_Show_Popup(ICON_BLTouch, GET_TEXT_F(MSG_ADVANCED_PAUSE), fmsg, button); } @@ -1853,7 +1904,6 @@ void DWIN_RedrawScreen() { #endif // ADVANCED_PAUSE_FEATURE #if HAS_MESH - void DWIN_MeshViewer() { if (!leveling_is_valid()) DWIN_Popup_Continue(ICON_BLTouch, GET_TEXT_F(MSG_MESH_VIEWER), GET_TEXT_F(MSG_NO_VALID_MESH)); @@ -1862,8 +1912,7 @@ void DWIN_RedrawScreen() { MeshViewer.Draw(); } } - -#endif // HAS_MESH +#endif #if HAS_LOCKSCREEN @@ -1893,11 +1942,11 @@ void DWIN_RedrawScreen() { #if HAS_GCODE_PREVIEW + void SetPreview() { Toggle_Chkb_Line(HMI_data.EnablePreview); } + void onClick_ConfirmToPrint() { - Preview_Reset(); DWIN_ResetStatusLine(); if (hmiFlag.select_flag) { // Confirm - hmiFlag.heat_flag = true; Goto_Main_Menu(); return card.openAndPrintFile(card.filename); } @@ -1905,16 +1954,13 @@ void DWIN_RedrawScreen() { HMI_ReturnScreen(); } -#endif +#endif // HAS_GCODE_PREVIEW void Goto_ConfirmToPrint() { #if HAS_GCODE_PREVIEW - Goto_Popup(Preview_DrawFromSD, onClick_ConfirmToPrint); - #else - // Print SD file - hmiFlag.heat_flag = true; - card.openAndPrintFile(card.filename); + if (HMI_data.EnablePreview) return Goto_Popup(Preview_DrawFromSD, onClick_ConfirmToPrint); #endif + card.openAndPrintFile(card.filename); // Direct print SD file } #if HAS_ESDIAG @@ -1925,7 +1971,7 @@ void Goto_ConfirmToPrint() { #endif //============================================================================= -// NEW MENU SUBSYSTEM +// MENU SUBSYSTEM //============================================================================= // Tool functions @@ -1954,7 +2000,7 @@ void Goto_ConfirmToPrint() { void SaveMesh() { TERN(AUTO_BED_LEVELING_UBL, UBLMeshSave(), WriteEeprom()); } #endif -#endif +#endif // EEPROM_SETTINGS // Reset Printer void RebootPrinter() { @@ -1974,7 +2020,7 @@ void Goto_Info_Menu() { void DisableMotors() { queue.inject(F("M84")); } void AutoLev() { // Always reacquire the Z "home" position - queue.inject(F(TERN(AUTO_BED_LEVELING_UBL, "G28Z\nG29P1", "G28XYO\nG28Z\nG29"))); + queue.inject(F(TERN(AUTO_BED_LEVELING_UBL, "G29P1", "G29"))); } void AutoHome() { queue.inject_P(G28_STR); } @@ -1989,14 +2035,6 @@ void AutoHome() { queue.inject_P(G28_STR); } #endif #endif -#if HAS_HOME_OFFSET - // Apply workspace offset, making the current position 0,0,0 - void SetHome() { - queue.inject(F("G92X0Y0Z0")); - DONE_BUZZ(true); - } -#endif - #if HAS_ZOFFSET_ITEM void ApplyZOffset() { TERN_(EEPROM_SETTINGS, settings.save()); } @@ -2013,31 +2051,31 @@ void AutoHome() { queue.inject_P(G28_STR); } SetPFloatOnClick(Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX, 2, ApplyZOffset, LiveZOffset); } - void SetMoveZto0() { - #if ENABLED(Z_SAFE_HOMING) - char cmd[54], str_1[5], str_2[5]; - sprintf_P(cmd, PSTR("G28XYO\nG28Z\nG0X%sY%sF5000\nG0Z0F300\nM400"), - dtostrf(Z_SAFE_HOMING_X_POINT, 1, 1, str_1), - dtostrf(Z_SAFE_HOMING_Y_POINT, 1, 1, str_2) - ); - gcode.process_subcommands_now(cmd); - #else - TERN_(HAS_LEVELING, set_bed_leveling_enabled(false)); - gcode.process_subcommands_now(F("G28Z\nG0Z0F300\nM400")); - #endif - ui.reset_status(); - DONE_BUZZ(true); - } - - #if !HAS_BED_PROBE - void HomeZandDisable() { - SetMoveZto0(); - DisableMotors(); - } - #endif - #endif // HAS_ZOFFSET_ITEM +void SetMoveZto0() { + #if ENABLED(Z_SAFE_HOMING) + char cmd[54], str_1[5], str_2[5]; + sprintf_P(cmd, PSTR("G28XYO\nG28Z\nG0X%sY%sF5000\nG0Z0F300\nM400"), + dtostrf(Z_SAFE_HOMING_X_POINT, 1, 1, str_1), + dtostrf(Z_SAFE_HOMING_Y_POINT, 1, 1, str_2) + ); + gcode.process_subcommands_now(cmd); + #else + TERN_(HAS_LEVELING, set_bed_leveling_enabled(false)); + gcode.process_subcommands_now(F("G28Z\nG0Z0F300\nM400")); + #endif + ui.reset_status(); + DONE_BUZZ(true); +} + +#if DISABLED(HAS_BED_PROBE) + void HomeZandDisable() { + SetMoveZto0(); + DisableMotors(); + } +#endif + #if HAS_PREHEAT #define _DoPreheat(N) void DoPreheat##N() { ui.preheat_all(N-1); }\ void DoPreheatHotend##N() { ui.preheat_hotend(N-1); } @@ -2054,17 +2092,24 @@ void SetLanguage() { bool EnableLiveMove = false; void SetLiveMove() { Toggle_Chkb_Line(EnableLiveMove); } -void LiveMove() { +void AxisMove(AxisEnum axis) { + #if HAS_HOTEND + if (axis == E_AXIS && thermalManager.tooColdToExtrude(0)) { + gcode.process_subcommands_now(F("G92E0")); // Reset extruder position + return DWIN_Popup_Confirm(ICON_TempTooLow, GET_TEXT_F(MSG_HOTEND_TOO_COLD), GET_TEXT_F(MSG_PLEASE_PREHEAT)); + } + #endif planner.synchronize(); + if (!planner.is_full()) planner.buffer_line(current_position, manual_feedrate_mm_s[axis]); +} +void LiveMove() { if (!EnableLiveMove) return; *MenuData.P_Float = MenuData.Value / MINUNITMULT; - if (!planner.is_full()) planner.buffer_line(current_position, manual_feedrate_mm_s[HMI_value.axis]); + AxisMove(HMI_value.axis); } void ApplyMove() { - planner.synchronize(); if (EnableLiveMove) return; - if (HMI_value.axis == E_AXIS) last_E = MenuData.Value / MINUNITMULT; - if (!planner.is_full()) planner.buffer_line(current_position, manual_feedrate_mm_s[HMI_value.axis]); + AxisMove(HMI_value.axis); } void SetMoveX() { HMI_value.axis = X_AXIS; SetPFloatOnClick(X_MIN_POS, X_MAX_POS, UNITFDIGITS, ApplyMove, LiveMove); } @@ -2073,30 +2118,12 @@ void SetMoveZ() { HMI_value.axis = Z_AXIS; SetPFloatOnClick(Z_MIN_POS, Z_MAX_POS #if HAS_HOTEND void SetMoveE() { - if (thermalManager.tooColdToExtrude(0)) return DWIN_Popup_Confirm(ICON_TempTooLow, GET_TEXT_F(MSG_HOTEND_TOO_COLD), GET_TEXT_F(MSG_PLEASE_PREHEAT)); - HMI_value.axis = E_AXIS; SetPFloatOnClick(E_MIN_POS, E_MAX_POS, UNITFDIGITS, ApplyMove, LiveMove); + const float e_min = current_position.e - (EXTRUDE_MAXLENGTH), + e_max = current_position.e + (EXTRUDE_MAXLENGTH); + HMI_value.axis = E_AXIS; SetPFloatOnClick(e_min, e_max, UNITFDIGITS, ApplyMove, LiveMove); } #endif -#if DWIN_PID_TUNE - void SetPID(celsius_t t, heater_id_t h) { - char cmd[53] = ""; - char str_1[5] = "", str_2[5] = ""; - sprintf_P(cmd, PSTR("G28OXY\nG0Z5F300\nG0X%sY%sF5000\nM84\nM400"), - dtostrf(X_CENTER, 1, 1, str_1), - dtostrf(Y_CENTER, 1, 1, str_2) - ); - gcode.process_subcommands_now(cmd); - thermalManager.PID_autotune(t, h, HMI_data.PidCycles, true); - } - #if ENABLED(PIDTEMP) - void HotendPID() { SetPID(HMI_data.HotendPidT, H_E0); } - #endif - #if ENABLED(PIDTEMPBED) - void BedPID() { SetPID(HMI_data.BedPidT, H_BED); } - #endif -#endif - #if ENABLED(POWER_LOSS_RECOVERY) void SetPwrLossr() { Toggle_Chkb_Line(recovery.enabled); @@ -2210,39 +2237,6 @@ void SetMoveZ() { HMI_value.axis = Z_AXIS; SetPFloatOnClick(Z_MIN_POS, Z_MAX_POS void SetExtMinT() { SetPIntOnClick(MIN_ETEMP, MAX_ETEMP, ApplyExtMinT); } #endif -void RestoreDefaultColors() { - DWIN_SetColorDefaults(); - DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); - DWIN_RedrawScreen(); -} - -void SelColor() { - MenuData.P_Int = (int16_t*)static_cast(CurrentMenu->SelectedItem())->value; - HMI_value.Color[0] = GetRColor(*MenuData.P_Int); // Red - HMI_value.Color[1] = GetGColor(*MenuData.P_Int); // Green - HMI_value.Color[2] = GetBColor(*MenuData.P_Int); // Blue - Draw_GetColor_Menu(); -} - -void LiveRGBColor() { - HMI_value.Color[CurrentMenu->line() - 2] = MenuData.Value; - uint16_t color = RGB(HMI_value.Color[0], HMI_value.Color[1], HMI_value.Color[2]); - dwinDrawRectangle(1, color, 20, 315, DWIN_WIDTH - 20, 335); -} -void SetRGBColor() { - const uint8_t color = static_cast(CurrentMenu->SelectedItem())->icon; - SetIntOnClick(0, (color == 1) ? 63 : 31, HMI_value.Color[color], nullptr, LiveRGBColor); -} - -void DWIN_ApplyColor() { - *MenuData.P_Int = RGB(HMI_value.Color[0], HMI_value.Color[1], HMI_value.Color[2]); - DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); - Draw_SelectColors_Menu(); - hash_changed = true; - LCD_MESSAGE(MSG_COLORS_APPLIED); - DWIN_Draw_Dashboard(); -} - void SetSpeed() { SetPIntOnClick(MIN_PRINT_SPEED, MAX_PRINT_SPEED); } #if HAS_HOTEND @@ -2292,172 +2286,187 @@ void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refr // Bed Tramming -void TramXY(const uint8_t point, const float &margin, float &x, float &y) { - switch (point) { - case 0: - LCD_MESSAGE(MSG_LEVBED_FL); - x = y = margin; - break; - case 1: - LCD_MESSAGE(MSG_LEVBED_FR); - x = X_BED_SIZE - margin; y = margin; - break; - case 2: - LCD_MESSAGE(MSG_LEVBED_BR); - x = X_BED_SIZE - margin; y = Y_BED_SIZE - margin; - break; - case 3: - LCD_MESSAGE(MSG_LEVBED_BL); - x = margin; y = Y_BED_SIZE - margin; - break; - case 4: - LCD_MESSAGE(MSG_LEVBED_C); - x = X_CENTER; y = Y_CENTER; - break; +#if ENABLED(LCD_BED_TRAMMING) + + void TramXY(const uint8_t point, float &x, float &y) { + switch (point) { + case 0: + LCD_MESSAGE(MSG_TRAM_FL); + x = bed_tramming_inset_lfbr[0]; + y = bed_tramming_inset_lfbr[1]; + break; + case 1: + LCD_MESSAGE(MSG_TRAM_FR); + x = X_BED_SIZE - bed_tramming_inset_lfbr[2]; + y = bed_tramming_inset_lfbr[1]; + break; + case 2: + LCD_MESSAGE(MSG_TRAM_BR); + x = X_BED_SIZE - bed_tramming_inset_lfbr[2]; + y = Y_BED_SIZE - bed_tramming_inset_lfbr[3]; + break; + case 3: + LCD_MESSAGE(MSG_TRAM_BL); + x = bed_tramming_inset_lfbr[0]; + y = Y_BED_SIZE - bed_tramming_inset_lfbr[3]; + break; + #if ENABLED(BED_TRAMMING_INCLUDE_CENTER) + case 4: + LCD_MESSAGE(MSG_TRAM_C); + x = X_CENTER; y = Y_CENTER; + break; + #endif + } } -} -#if HAS_BED_PROBE + #if HAS_BED_PROBE - float Tram(const uint8_t point) { - char cmd[100] = ""; - static bool inLev = false; - float xpos = 0, ypos = 0, zval = 0, margin = 0; - char str_1[6] = "", str_2[6] = "", str_3[6] = ""; - if (inLev) return NAN; - margin = HMI_data.FullManualTramming ? 30 : PROBING_MARGIN; + float Tram(const uint8_t point) { + char cmd[100] = ""; + static bool inLev = false; + float xpos = 0, ypos = 0, zval = 0; + char str_1[6] = "", str_2[6] = "", str_3[6] = ""; + if (inLev) return NAN; - TramXY(point, margin, xpos, ypos); + TramXY(point, xpos, ypos); - if (HMI_data.FullManualTramming) { - sprintf_P(cmd, PSTR("M420S0\nG28O\nG90\nG0Z5F300\nG0X%sY%sF5000\nG0Z0F300"), - dtostrf(xpos, 1, 1, str_1), - dtostrf(ypos, 1, 1, str_2) - ); + if (HMI_data.FullManualTramming) { + sprintf_P(cmd, PSTR("M420S0\nG28O\nG90\nG0Z5F300\nG0X%sY%sF5000\nG0Z0F300"), + dtostrf(xpos, 1, 1, str_1), + dtostrf(ypos, 1, 1, str_2) + ); + queue.inject(cmd); + } + else { + // AUTO_BED_LEVELING_BILINEAR does not define MESH_INSET + #ifndef MESH_MIN_X + #define MESH_MIN_X (_MAX(X_MIN_BED + PROBING_MARGIN, X_MIN_POS)) + #endif + #ifndef MESH_MIN_Y + #define MESH_MIN_Y (_MAX(Y_MIN_BED + PROBING_MARGIN, Y_MIN_POS)) + #endif + #ifndef MESH_MAX_X + #define MESH_MAX_X (_MIN(X_MAX_BED - (PROBING_MARGIN), X_MAX_POS)) + #endif + #ifndef MESH_MAX_Y + #define MESH_MAX_Y (_MIN(Y_MAX_BED - (PROBING_MARGIN), Y_MAX_POS)) + #endif + + LIMIT(xpos, MESH_MIN_X, MESH_MAX_X); + LIMIT(ypos, MESH_MIN_Y, MESH_MAX_Y); + probe.stow(); + gcode.process_subcommands_now(F("M420S0\nG28O")); + inLev = true; + zval = probe.probe_at_point(xpos, ypos, PROBE_PT_STOW); + if (isnan(zval)) + LCD_MESSAGE(MSG_ZPROBE_OUT); + else { + sprintf_P(cmd, PSTR("X:%s, Y:%s, Z:%s"), + dtostrf(xpos, 1, 1, str_1), + dtostrf(ypos, 1, 1, str_2), + dtostrf(zval, 1, 2, str_3) + ); + ui.set_status(cmd); + } + inLev = false; + } + return zval; + } + + #else + + void Tram(const uint8_t point) { + float xpos = 0, ypos = 0; + TramXY(point, xpos, ypos); + + char cmd[100] = "", str_1[6] = "", str_2[6] = ""; + sprintf_P(cmd, PSTR("M420S0\nG28O\nG90\nG0Z5F300\nG0X%sY%sF5000\nG0Z0F300"), dtostrf(xpos, 1, 1, str_1), dtostrf(ypos, 1, 1, str_2)); queue.inject(cmd); } - else { - // AUTO_BED_LEVELING_BILINEAR does not define MESH_INSET - #ifndef MESH_MIN_X - #define MESH_MIN_X (_MAX(X_MIN_BED + PROBING_MARGIN, X_MIN_POS)) - #endif - #ifndef MESH_MIN_Y - #define MESH_MIN_Y (_MAX(Y_MIN_BED + PROBING_MARGIN, Y_MIN_POS)) - #endif - #ifndef MESH_MAX_X - #define MESH_MAX_X (_MIN(X_MAX_BED - (PROBING_MARGIN), X_MAX_POS)) - #endif - #ifndef MESH_MAX_Y - #define MESH_MAX_Y (_MIN(Y_MAX_BED - (PROBING_MARGIN), Y_MAX_POS)) + + #endif + + inline void TramFL() { Tram(0); } + inline void TramFR() { Tram(1); } + inline void TramBR() { Tram(2); } + inline void TramBL() { Tram(3); } + #if ENABLED(BED_TRAMMING_INCLUDE_CENTER) + inline void TramC() { Tram(4); } + #endif + + #if HAS_BED_PROBE && HAS_MESH + + void Trammingwizard() { + if (HMI_data.FullManualTramming) { + LCD_MESSAGE_F("Disable manual tramming"); + return; + } + bed_mesh_t zval = {0}; + zval[0][0] = TramFL(); + checkkey = NothingToDo; + MeshViewer.DrawMesh(zval, 2, 2); + zval[1][0] = TramFR(); + MeshViewer.DrawMesh(zval, 2, 2); + zval[1][1] = TramBR(); + MeshViewer.DrawMesh(zval, 2, 2); + zval[0][1] = TramBL(); + MeshViewer.DrawMesh(zval, 2, 2); + + DWINUI::Draw_CenteredString(140, F("Calculating average")); + DWINUI::Draw_CenteredString(160, F("and relative heights")); + safe_delay(1000); + float avg = 0.0f; + for (uint8_t x = 0; x < 2; ++x) for (uint8_t y = 0; y < 2; ++y) avg += zval[x][y]; + avg /= 4.0f; + for (uint8_t x = 0; x < 2; ++x) for (uint8_t y = 0; y < 2; ++y) zval[x][y] -= avg; + MeshViewer.DrawMesh(zval, 2, 2); + ui.reset_status(); + + #ifndef BED_TRAMMING_PROBE_TOLERANCE + #define BED_TRAMMING_PROBE_TOLERANCE 0.05 #endif - LIMIT(xpos, MESH_MIN_X, MESH_MAX_X); - LIMIT(ypos, MESH_MIN_Y, MESH_MAX_Y); - probe.stow(); - gcode.process_subcommands_now(F("M420S0\nG28O")); - inLev = true; - zval = probe.probe_at_point(xpos, ypos, PROBE_PT_STOW); - if (isnan(zval)) - LCD_MESSAGE(MSG_ZPROBE_OUT); + if (ABS(MeshViewer.max - MeshViewer.min) < BED_TRAMMING_PROBE_TOLERANCE) { + DWINUI::Draw_CenteredString(140, F("Corners leveled")); + DWINUI::Draw_CenteredString(160, F("Tolerance achieved!")); + } else { - sprintf_P(cmd, PSTR("X:%s, Y:%s, Z:%s"), - dtostrf(xpos, 1, 1, str_1), - dtostrf(ypos, 1, 1, str_2), - dtostrf(zval, 1, 2, str_3) - ); - ui.set_status(cmd); - } - inLev = false; - } - return zval; - } - -#else - - void Tram(const uint8_t point) { - float xpos = 0, ypos = 0, margin = 30; - TramXY(point, margin, xpos, ypos); - - char cmd[100] = "", str_1[6] = "", str_2[6] = ""; - sprintf_P(cmd, PSTR("M420S0\nG28O\nG90\nG0Z5F300\nG0X%sY%sF5000\nG0Z0F300"), dtostrf(xpos, 1, 1, str_1), dtostrf(ypos, 1, 1, str_2)); - queue.inject(cmd); - } - -#endif - -void TramFL() { Tram(0); } -void TramFR() { Tram(1); } -void TramBR() { Tram(2); } -void TramBL() { Tram(3); } -void TramC () { Tram(4); } - -#if HAS_BED_PROBE && HAS_MESH - - void Trammingwizard() { - if (HMI_data.FullManualTramming) { - LCD_MESSAGE_F("Disable manual tramming"); - return; - } - bed_mesh_t zval = {0}; - zval[0][0] = Tram(0); - checkkey = NothingToDo; - MeshViewer.DrawMesh(zval, 2, 2); - zval[1][0] = Tram(1); - MeshViewer.DrawMesh(zval, 2, 2); - zval[1][1] = Tram(2); - MeshViewer.DrawMesh(zval, 2, 2); - zval[0][1] = Tram(3); - MeshViewer.DrawMesh(zval, 2, 2); - - DWINUI::Draw_CenteredString(140, F("Calculating average")); - DWINUI::Draw_CenteredString(160, F("and relative heights")); - safe_delay(1000); - float avg = 0.0f; - for (uint8_t x = 0; x < 2; ++x) for (uint8_t y = 0; y < 2; ++y) avg += zval[x][y]; - avg /= 4.0f; - for (uint8_t x = 0; x < 2; ++x) for (uint8_t y = 0; y < 2; ++y) zval[x][y] -= avg; - MeshViewer.DrawMesh(zval, 2, 2); - ui.reset_status(); - - if (ABS(MeshViewer.max - MeshViewer.min) < 0.05f) { - DWINUI::Draw_CenteredString(140, F("Corners leveled")); - DWINUI::Draw_CenteredString(160, F("Tolerance achieved!")); - } - else { - uint8_t p = 0; - float max = 0; - FSTR_P plabel; - bool s = true; - for (uint8_t x = 0; x < 2; ++x) for (uint8_t y = 0; y < 2; ++y) { - const float d = ABS(zval[x][y]); - if (max < d) { - s = (zval[x][y] >= 0); - max = d; - p = x + 2 * y; + uint8_t p = 0; + float max = 0; + FSTR_P plabel; + bool s = true; + for (uint8_t x = 0; x < 2; ++x) for (uint8_t y = 0; y < 2; ++y) { + const float d = ABS(zval[x][y]); + if (max < d) { + s = (zval[x][y] >= 0); + max = d; + p = x + 2 * y; + } } + switch (p) { + case 0b00 : plabel = GET_TEXT_F(MSG_TRAM_FL); break; + case 0b01 : plabel = GET_TEXT_F(MSG_TRAM_FR); break; + case 0b10 : plabel = GET_TEXT_F(MSG_TRAM_BL); break; + case 0b11 : plabel = GET_TEXT_F(MSG_TRAM_BR); break; + default : plabel = F(""); break; + } + DWINUI::Draw_CenteredString(120, F("Corners not leveled")); + DWINUI::Draw_CenteredString(140, F("Knob adjustment required")); + DWINUI::Draw_CenteredString(Color_Green, 160, s ? F("Lower") : F("Raise")); + DWINUI::Draw_CenteredString(Color_Green, 180, plabel); } - switch (p) { - case 0b00 : plabel = GET_TEXT_F(MSG_LEVBED_FL); break; - case 0b01 : plabel = GET_TEXT_F(MSG_LEVBED_FR); break; - case 0b10 : plabel = GET_TEXT_F(MSG_LEVBED_BL); break; - case 0b11 : plabel = GET_TEXT_F(MSG_LEVBED_BR); break; - default : plabel = F(""); break; - } - DWINUI::Draw_CenteredString(120, F("Corners not leveled")); - DWINUI::Draw_CenteredString(140, F("Knob adjustment required")); - DWINUI::Draw_CenteredString(Color_Green, 160, s ? F("Lower") : F("Raise")); - DWINUI::Draw_CenteredString(Color_Green, 180, plabel); + DWINUI::Draw_Button(BTN_Continue, 86, 305); + checkkey = Menu; + HMI_SaveProcessID(WaitResponse); } - DWINUI::Draw_Button(BTN_Continue, 86, 305); - checkkey = Menu; - HMI_SaveProcessID(WaitResponse); - } - void SetManualTramming() { - Toggle_Chkb_Line(HMI_data.FullManualTramming); - } + void SetManualTramming() { + Toggle_Chkb_Line(HMI_data.FullManualTramming); + } -#endif // HAS_BED_PROBE && HAS_MESH + #endif // HAS_BED_PROBE && HAS_MESH + +#endif // LCD_BED_TRAMMING #if ENABLED(MESH_BED_LEVELING) @@ -2545,6 +2554,13 @@ void ApplyMaxAccel() { planner.set_max_acceleration(HMI_value.axis, MenuData.Val #if HAS_HOTEND void SetMaxJerkE() { HMI_value.axis = E_AXIS; SetFloatOnClick(min_jerk_edit_values.e, max_jerk_edit_values.e, UNITFDIGITS, planner.max_jerk.e, ApplyMaxJerk); } #endif +#elif HAS_JUNCTION_DEVIATION + void ApplyJDmm() { TERN_(LIN_ADVANCE, planner.recalculate_max_e_jerk()); } + void SetJDmm() { SetPFloatOnClick(MIN_JD_MM, MAX_JD_MM, 3, ApplyJDmm); } +#endif + +#if ENABLED(LIN_ADVANCE) + void SetLA_K() { SetPFloatOnClick(0, 10, 3); } #endif #if HAS_X_AXIS @@ -2558,37 +2574,7 @@ void ApplyMaxAccel() { planner.set_max_acceleration(HMI_value.axis, MenuData.Val #endif #if HAS_HOTEND void SetStepsE() { HMI_value.axis = E_AXIS; SetPFloatOnClick( min_steps_edit_values.e, max_steps_edit_values.e, UNITFDIGITS); } - #if ENABLED(PIDTEMP) - void SetHotendPidT() { SetPIntOnClick(MIN_ETEMP, MAX_ETEMP); } - #endif #endif -#if ENABLED(PIDTEMPBED) - void SetBedPidT() { SetPIntOnClick(MIN_BEDTEMP, MAX_BEDTEMP); } -#endif - -#if DWIN_PID_TUNE - void SetPidCycles() { SetPIntOnClick(3, 50); } - void SetKp() { SetPFloatOnClick(0, 1000, 2); } - void ApplyPIDi() { - *MenuData.P_Float = scalePID_i(MenuData.Value / POW(10, 2)); - TERN_(PIDTEMP, thermalManager.updatePID()); - } - void ApplyPIDd() { - *MenuData.P_Float = scalePID_d(MenuData.Value / POW(10, 2)); - TERN_(PIDTEMP, thermalManager.updatePID()); - } - void SetKi() { - MenuData.P_Float = (float*)static_cast(CurrentMenu->SelectedItem())->value; - const float value = unscalePID_i(*MenuData.P_Float); - SetFloatOnClick(0, 1000, 2, value, ApplyPIDi); - } - void SetKd() { - MenuData.P_Float = (float*)static_cast(CurrentMenu->SelectedItem())->value; - const float value = unscalePID_d(*MenuData.P_Float); - SetFloatOnClick(0, 1000, 2, value, ApplyPIDd); - } -#endif - #if ENABLED(FWRETRACT) void Return_FWRetract_Menu() { (PreviousMenu == FilSetMenu) ? Draw_FilSet_Menu() : Draw_Tune_Menu(); } void SetRetractLength() { SetPFloatOnClick( 0, 10, UNITFDIGITS); } @@ -2680,11 +2666,6 @@ void onDrawAutoHome(MenuItemClass* menuitem, int8_t line) { if (HMI_IsChinese()) menuitem->SetFrame(1, 174, 164, 223, 177); onDrawPFloat2Menu(menuitem, line); } - #else - void onDrawHomeOffset(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 43, 89, 98, 101); - onDrawMenuItem(menuitem, line); - } #endif #endif @@ -2737,11 +2718,6 @@ void onDrawGetColorItem(MenuItemClass* menuitem, int8_t line) { dwinDrawHLine(HMI_data.SplitLine_Color, 16, MYPOS(line + 1), 240); } -#if DWIN_PID_TUNE - void onDrawPIDi(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_i(*(float*)static_cast(menuitem)->value)); } - void onDrawPIDd(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_d(*(float*)static_cast(menuitem)->value)); } -#endif - void onDrawSpeedItem(MenuItemClass* menuitem, int8_t line) { if (HMI_IsChinese()) menuitem->SetFrame(1, 116, 164, 171, 176); onDrawPIntMenu(menuitem, line); @@ -3022,7 +2998,9 @@ void Draw_Prepare_Menu() { MENU_ITEM(ICON_FilMan, MSG_FILAMENT_MAN, onDrawSubMenu, Draw_FilamentMan_Menu); #endif MENU_ITEM(ICON_Axis, MSG_MOVE_AXIS, onDrawMoveSubMenu, Draw_Move_Menu); - MENU_ITEM(ICON_Tram, MSG_BED_TRAMMING, onDrawSubMenu, Draw_Tramming_Menu); + #if ENABLED(LCD_BED_TRAMMING) + MENU_ITEM(ICON_Tram, MSG_BED_TRAMMING, onDrawSubMenu, Draw_Tramming_Menu); + #endif MENU_ITEM(ICON_CloseMotor, MSG_DISABLE_STEPPERS, onDrawDisableMotors, DisableMotors); #if ENABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU) MENU_ITEM(ICON_Homing, MSG_HOMING, onDrawSubMenu, Draw_Homing_Menu); @@ -3039,8 +3017,6 @@ void Draw_Prepare_Menu() { MENU_ITEM(ICON_SetZOffset, MSG_PROBE_WIZARD, onDrawSubMenu, Draw_ZOffsetWiz_Menu); #elif ENABLED(BABYSTEPPING) EDIT_ITEM(ICON_Zoffset, MSG_HOME_OFFSET_Z, onDrawPFloat2Menu, SetZOffset, &BABY_Z_VAR); - #elif HAS_HOME_OFFSET - MENU_ITEM(ICON_SetHome, MSG_SET_HOME_OFFSETS, onDrawHomeOffset, SetHome); #endif #endif #if HAS_PREHEAT @@ -3054,24 +3030,30 @@ void Draw_Prepare_Menu() { UpdateMenu(PrepareMenu); } -void Draw_Tramming_Menu() { - checkkey = Menu; - if (SET_MENU(TrammingMenu, MSG_BED_TRAMMING, 8)) { - BACK_ITEM(Draw_Prepare_Menu); - #if HAS_BED_PROBE && HAS_MESH - MENU_ITEM(ICON_ProbeSet, MSG_TRAMMING_WIZARD, onDrawMenuItem, Trammingwizard); - EDIT_ITEM(ICON_ProbeSet, MSG_BED_TRAMMING_MANUAL, onDrawChkbMenu, SetManualTramming, &HMI_data.FullManualTramming); - #elif !HAS_BED_PROBE && HAS_ZOFFSET_ITEM - MENU_ITEM_F(ICON_MoveZ0, "Home Z and disable", onDrawMenuItem, HomeZandDisable); - #endif - MENU_ITEM(ICON_Axis, MSG_LEVBED_FL, onDrawMenuItem, TramFL); - MENU_ITEM(ICON_Axis, MSG_LEVBED_FR, onDrawMenuItem, TramFR); - MENU_ITEM(ICON_Axis, MSG_LEVBED_BR, onDrawMenuItem, TramBR); - MENU_ITEM(ICON_Axis, MSG_LEVBED_BL, onDrawMenuItem, TramBL); - MENU_ITEM(ICON_Axis, MSG_LEVBED_C, onDrawMenuItem, TramC ); +#if ENABLED(LCD_BED_TRAMMING) + + void Draw_Tramming_Menu() { + checkkey = Menu; + if (SET_MENU(TrammingMenu, MSG_BED_TRAMMING, 8)) { + BACK_ITEM(Draw_Prepare_Menu); + #if HAS_BED_PROBE && HAS_MESH + MENU_ITEM(ICON_ProbeSet, MSG_TRAMMING_WIZARD, onDrawMenuItem, Trammingwizard); + EDIT_ITEM(ICON_ProbeSet, MSG_BED_TRAMMING_MANUAL, onDrawChkbMenu, SetManualTramming, &HMI_data.FullManualTramming); + #elif !HAS_BED_PROBE && HAS_ZOFFSET_ITEM + MENU_ITEM_F(ICON_MoveZ0, "Home Z and disable", onDrawMenuItem, HomeZandDisable); + #endif + MENU_ITEM(ICON_Axis, MSG_TRAM_FL, onDrawMenuItem, TramFL); + MENU_ITEM(ICON_Axis, MSG_TRAM_FR, onDrawMenuItem, TramFR); + MENU_ITEM(ICON_Axis, MSG_TRAM_BR, onDrawMenuItem, TramBR); + MENU_ITEM(ICON_Axis, MSG_TRAM_BL, onDrawMenuItem, TramBL); + #if ENABLED(BED_TRAMMING_INCLUDE_CENTER) + MENU_ITEM(ICON_Axis, MSG_TRAM_C, onDrawMenuItem, TramC); + #endif + } + UpdateMenu(TrammingMenu); } - UpdateMenu(TrammingMenu); -} + +#endif // LCD_BED_TRAMMING void Draw_Control_Menu() { checkkey = Menu; @@ -3103,7 +3085,7 @@ void Draw_Control_Menu() { void Draw_AdvancedSettings_Menu() { checkkey = Menu; - if (SET_MENU(AdvancedSettings, MSG_ADVANCED_SETTINGS, 19)) { + if (SET_MENU(AdvancedSettings, MSG_ADVANCED_SETTINGS, 22)) { BACK_ITEM(Goto_Main_Menu); #if ENABLED(EEPROM_SETTINGS) MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, WriteEeprom); @@ -3115,15 +3097,18 @@ void Draw_AdvancedSettings_Menu() { MENU_ITEM(ICON_ProbeSet, MSG_ZPROBE_SETTINGS, onDrawSubMenu, Draw_ProbeSet_Menu); #endif MENU_ITEM(ICON_FilSet, MSG_FILAMENT_SET, onDrawSubMenu, Draw_FilSet_Menu); - #if ENABLED(PIDTEMP) + #if ENABLED(PIDTEMP) && ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU) MENU_ITEM_F(ICON_PIDNozzle, STR_HOTEND_PID " Settings", onDrawSubMenu, Draw_HotendPID_Menu); #endif #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) MENU_ITEM_F(ICON_MPCNozzle, "MPC Settings", onDrawSubMenu, Draw_HotendMPC_Menu); #endif - #if ENABLED(PIDTEMPBED) + #if ENABLED(PIDTEMPBED) && ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU) MENU_ITEM_F(ICON_PIDBed, STR_BED_PID " Settings", onDrawSubMenu, Draw_BedPID_Menu); #endif + #if HAS_TRINAMIC_CONFIG + MENU_ITEM(ICON_TMCSet, MSG_TMC_DRIVERS, onDrawSubMenu, Draw_TrinamicConfig_menu); + #endif #if HAS_ESDIAG MENU_ITEM_F(ICON_ESDiag, "End-stops diag.", onDrawSubMenu, Draw_EndStopDiag); #endif @@ -3140,6 +3125,12 @@ void Draw_AdvancedSettings_Menu() { #if ENABLED(POWER_LOSS_RECOVERY) EDIT_ITEM(ICON_Pwrlossr, MSG_OUTAGE_RECOVERY, onDrawChkbMenu, SetPwrLossr, &recovery.enabled); #endif + #if HAS_GCODE_PREVIEW + EDIT_ITEM(ICON_File, MSG_HAS_PREVIEW, onDrawChkbMenu, SetPreview, &HMI_data.EnablePreview); + #endif + #if ENABLED(MEDIASORT_MENU_ITEM) + EDIT_ITEM(ICON_File, MSG_MEDIA_SORT, onDrawChkbMenu, SetMediaSort, &HMI_data.MediaSort); + #endif EDIT_ITEM(ICON_File, MSG_MEDIA_UPDATE, onDrawChkbMenu, SetMediaAutoMount, &HMI_data.MediaAutoMount); #if ENABLED(BAUD_RATE_GCODE) EDIT_ITEM_F(ICON_SetBaudRate, "115K baud", onDrawChkbMenu, SetBaudRate, &HMI_data.Baud115K); @@ -3148,7 +3139,9 @@ void Draw_AdvancedSettings_Menu() { EDIT_ITEM(ICON_Brightness, MSG_BRIGHTNESS, onDrawPInt8Menu, SetBrightness, &ui.brightness); MENU_ITEM(ICON_Brightness, MSG_BRIGHTNESS_OFF, onDrawMenuItem, TurnOffBacklight); #endif - MENU_ITEM(ICON_Scolor, MSG_COLORS_SELECT, onDrawSubMenu, Draw_SelectColors_Menu); + #if HAS_CUSTOM_COLORS + MENU_ITEM(ICON_Scolor, MSG_COLORS_SELECT, onDrawSubMenu, Draw_SelectColors_Menu); + #endif } ui.reset_status(true); UpdateMenu(AdvancedSettings); @@ -3169,7 +3162,7 @@ void Draw_Move_Menu() { EDIT_ITEM(ICON_MoveZ, MSG_MOVE_Z, onDrawMoveZ, SetMoveZ, ¤t_position.z); #endif #if HAS_HOTEND - gcode.process_subcommands_now(F("G92E0")); // reset extruder position + gcode.process_subcommands_now(F("G92E0")); // Reset extruder position EDIT_ITEM(ICON_Extruder, MSG_MOVE_E, onDrawMoveE, SetMoveE, ¤t_position.e); #endif } @@ -3196,7 +3189,7 @@ void Draw_Move_Menu() { UpdateMenu(HomeOffMenu); } -#endif +#endif // HAS_HOME_OFFSET #if HAS_BED_PROBE @@ -3226,7 +3219,7 @@ void Draw_Move_Menu() { UpdateMenu(ProbeSetMenu); } -#endif +#endif // HAS_BED_PROBE void Draw_FilSet_Menu() { checkkey = Menu; @@ -3252,46 +3245,6 @@ void Draw_FilSet_Menu() { UpdateMenu(FilSetMenu); } -void Draw_SelectColors_Menu() { - checkkey = Menu; - if (SET_MENU(SelectColorMenu, MSG_COLORS_SELECT, 20)) { - BACK_ITEM(Draw_AdvancedSettings_Menu); - MENU_ITEM(ICON_StockConfiguration, MSG_RESTORE_DEFAULTS, onDrawMenuItem, RestoreDefaultColors); - EDIT_ITEM_F(0, "Screen Background", onDrawSelColorItem, SelColor, &HMI_data.Background_Color); - EDIT_ITEM_F(0, "Cursor", onDrawSelColorItem, SelColor, &HMI_data.Cursor_Color); - EDIT_ITEM_F(0, "Title Background", onDrawSelColorItem, SelColor, &HMI_data.TitleBg_Color); - EDIT_ITEM_F(0, "Title Text", onDrawSelColorItem, SelColor, &HMI_data.TitleTxt_Color); - EDIT_ITEM_F(0, "Text", onDrawSelColorItem, SelColor, &HMI_data.Text_Color); - EDIT_ITEM_F(0, "Selected", onDrawSelColorItem, SelColor, &HMI_data.Selected_Color); - EDIT_ITEM_F(0, "Split Line", onDrawSelColorItem, SelColor, &HMI_data.SplitLine_Color); - EDIT_ITEM_F(0, "Highlight", onDrawSelColorItem, SelColor, &HMI_data.Highlight_Color); - EDIT_ITEM_F(0, "Status Background", onDrawSelColorItem, SelColor, &HMI_data.StatusBg_Color); - EDIT_ITEM_F(0, "Status Text", onDrawSelColorItem, SelColor, &HMI_data.StatusTxt_Color); - EDIT_ITEM_F(0, "Popup Background", onDrawSelColorItem, SelColor, &HMI_data.PopupBg_Color); - EDIT_ITEM_F(0, "Popup Text", onDrawSelColorItem, SelColor, &HMI_data.PopupTxt_Color); - EDIT_ITEM_F(0, "Alert Background", onDrawSelColorItem, SelColor, &HMI_data.AlertBg_Color); - EDIT_ITEM_F(0, "Alert Text", onDrawSelColorItem, SelColor, &HMI_data.AlertTxt_Color); - EDIT_ITEM_F(0, "Percent Text", onDrawSelColorItem, SelColor, &HMI_data.PercentTxt_Color); - EDIT_ITEM_F(0, "Bar Fill", onDrawSelColorItem, SelColor, &HMI_data.Barfill_Color); - EDIT_ITEM_F(0, "Indicator value", onDrawSelColorItem, SelColor, &HMI_data.Indicator_Color); - EDIT_ITEM_F(0, "Coordinate value", onDrawSelColorItem, SelColor, &HMI_data.Coordinate_Color); - } - UpdateMenu(SelectColorMenu); -} - -void Draw_GetColor_Menu() { - checkkey = Menu; - if (SET_MENU(GetColorMenu, MSG_COLORS_GET, 5)) { - BACK_ITEM(DWIN_ApplyColor); - MENU_ITEM(ICON_Cancel, MSG_BUTTON_CANCEL, onDrawMenuItem, Draw_SelectColors_Menu); - MENU_ITEM(0, MSG_COLORS_RED, onDrawGetColorItem, SetRGBColor); - MENU_ITEM(1, MSG_COLORS_GREEN, onDrawGetColorItem, SetRGBColor); - MENU_ITEM(2, MSG_COLORS_BLUE, onDrawGetColorItem, SetRGBColor); - } - UpdateMenu(GetColorMenu); - dwinDrawRectangle(1, *MenuData.P_Int, 20, 315, DWIN_WIDTH - 20, 335); -} - #if ALL(CASE_LIGHT_MENU, CASELIGHT_USES_BRIGHTNESS) void Draw_CaseLight_Menu() { @@ -3342,7 +3295,7 @@ void Draw_GetColor_Menu() { void Draw_Tune_Menu() { checkkey = Menu; - if (SET_MENU_R(TuneMenu, selrect({73, 2, 28, 12}), MSG_TUNE, 14)) { + if (SET_MENU_R(TuneMenu, selrect({73, 2, 28, 12}), MSG_TUNE, 17)) { BACK_ITEM(Goto_PrintProcess); EDIT_ITEM(ICON_Speed, MSG_SPEED, onDrawSpeedItem, SetSpeed, &feedrate_percentage); #if HAS_HOTEND @@ -3354,7 +3307,7 @@ void Draw_Tune_Menu() { #if HAS_FAN FanSpeedItem = EDIT_ITEM(ICON_FanSpeed, MSG_FAN_SPEED, onDrawFanSpeed, SetFanSpeed, &thermalManager.fan_speed[0]); #endif - #if ALL(HAS_ZOFFSET_ITEM, HAS_BED_PROBE, BABYSTEPPING) + #if ALL(HAS_ZOFFSET_ITEM, HAS_BED_PROBE, BABYSTEP_ZPROBE_OFFSET, BABYSTEPPING) EDIT_ITEM(ICON_Zoffset, MSG_ZPROBE_ZOFFSET, onDrawZOffset, SetZOffset, &BABY_Z_VAR); #elif ALL(HAS_ZOFFSET_ITEM, MESH_BED_LEVELING, BABYSTEPPING) EDIT_ITEM(ICON_Zoffset, MSG_HOME_OFFSET_Z, onDrawPFloat2Menu, SetZOffset, &BABY_Z_VAR); @@ -3366,9 +3319,18 @@ void Draw_Tune_Menu() { #if HAS_FILAMENT_SENSOR EDIT_ITEM(ICON_Runout, MSG_RUNOUT_ENABLE, onDrawChkbMenu, SetRunoutEnable, &runout.enabled); #endif + #if ENABLED(PLR_TUNE_ITEM) + EDIT_ITEM(ICON_Pwrlossr, MSG_OUTAGE_RECOVERY, onDrawChkbMenu, SetPwrLossr, &recovery.enabled); + #endif #if ENABLED(FWRETRACT) MENU_ITEM(ICON_FWRetract, MSG_FWRETRACT, onDrawSubMenu, Draw_FWRetract_Menu); #endif + #if ENABLED(JD_TUNE_ITEM) + EDIT_ITEM(ICON_JDmm, MSG_JUNCTION_DEVIATION, onDrawPFloat3Menu, SetJDmm, &planner.junction_deviation_mm); + #endif + #if ENABLED(ADVK_TUNE_ITEM) + EDIT_ITEM(ICON_MaxAccelerated, MSG_ADVANCE_K, onDrawPFloat3Menu, SetLA_K, &planner.extruder_advance_K[0]); + #endif #if HAS_LOCKSCREEN MENU_ITEM(ICON_Lock, MSG_LOCKSCREEN, onDrawMenuItem, DWIN_LockScreen); #endif @@ -3385,30 +3347,133 @@ void Draw_Tune_Menu() { UpdateMenu(TuneMenu); } +#if ENABLED(ADAPTIVE_STEP_SMOOTHING) + void SetAdaptiveStepSmoothing() { + Toggle_Chkb_Line(HMI_data.AdaptiveStepSmoothing); + } +#endif + +#if ENABLED(SHAPING_MENU) + void ApplyShapingFreq() { stepper.set_shaping_frequency(HMI_value.axis, MenuData.Value / 100); } + void ApplyShapingZeta() { stepper.set_shaping_damping_ratio(HMI_value.axis, MenuData.Value / 100); } + + #if ENABLED(INPUT_SHAPING_X) + void onDrawShapingXFreq(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, stepper.get_shaping_frequency(X_AXIS)); } + void onDrawShapingXZeta(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, stepper.get_shaping_damping_ratio(X_AXIS)); } + void SetShapingXFreq() { HMI_value.axis = X_AXIS; SetFloatOnClick(0, 200, 2, stepper.get_shaping_frequency(X_AXIS), ApplyShapingFreq); } + void SetShapingXZeta() { HMI_value.axis = X_AXIS; SetFloatOnClick(0, 1, 2, stepper.get_shaping_damping_ratio(X_AXIS), ApplyShapingZeta); } + #endif + + #if ENABLED(INPUT_SHAPING_Y) + void onDrawShapingYFreq(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, stepper.get_shaping_frequency(Y_AXIS)); } + void onDrawShapingYZeta(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, stepper.get_shaping_damping_ratio(Y_AXIS)); } + void SetShapingYFreq() { HMI_value.axis = Y_AXIS; SetFloatOnClick(0, 200, 2, stepper.get_shaping_frequency(Y_AXIS), ApplyShapingFreq); } + void SetShapingYZeta() { HMI_value.axis = Y_AXIS; SetFloatOnClick(0, 1, 2, stepper.get_shaping_damping_ratio(Y_AXIS), ApplyShapingZeta); } + #endif + + void Draw_InputShaping_menu() { + checkkey = Menu; + if (SET_MENU(InputShapingMenu, MSG_INPUT_SHAPING, 5)) { + BACK_ITEM(Draw_Motion_Menu); + #if ENABLED(INPUT_SHAPING_X) + MENU_ITEM(ICON_ShapingX, MSG_SHAPING_A_FREQ, onDrawShapingXFreq, SetShapingXFreq); + MENU_ITEM(ICON_ShapingX, MSG_SHAPING_A_ZETA, onDrawShapingXZeta, SetShapingXZeta); + #endif + #if ENABLED(INPUT_SHAPING_Y) + MENU_ITEM(ICON_ShapingY, MSG_SHAPING_B_FREQ, onDrawShapingYFreq, SetShapingYFreq); + MENU_ITEM(ICON_ShapingY, MSG_SHAPING_B_ZETA, onDrawShapingYZeta, SetShapingYZeta); + #endif + } + UpdateMenu(InputShapingMenu); + } +#endif + +#if HAS_TRINAMIC_CONFIG + #if AXIS_IS_TMC(X) + void SetXTMCCurrent() { SetPIntOnClick(MIN_TMC_CURRENT, MAX_TMC_CURRENT, []{ stepperX.refresh_stepper_current(); }); } + #endif + #if AXIS_IS_TMC(Y) + void SetYTMCCurrent() { SetPIntOnClick(MIN_TMC_CURRENT, MAX_TMC_CURRENT, []{ stepperY.refresh_stepper_current(); }); } + #endif + #if AXIS_IS_TMC(Z) + void SetZTMCCurrent() { SetPIntOnClick(MIN_TMC_CURRENT, MAX_TMC_CURRENT, []{ stepperZ.refresh_stepper_current(); }); } + #endif + #if AXIS_IS_TMC(E0) + void SetETMCCurrent() { SetPIntOnClick(MIN_TMC_CURRENT, MAX_TMC_CURRENT, []{ stepperE0.refresh_stepper_current(); }); } + #endif + + void Draw_TrinamicConfig_menu() { + checkkey = Menu; + if (SET_MENU(TrinamicConfigMenu, MSG_TMC_DRIVERS, 5)) { + BACK_ITEM(Draw_AdvancedSettings_Menu); + #if AXIS_IS_TMC(X) + EDIT_ITEM(ICON_TMCXSet, MSG_TMC_ACURRENT, onDrawPIntMenu, SetXTMCCurrent, &stepperX.val_mA); + #endif + #if AXIS_IS_TMC(Y) + EDIT_ITEM(ICON_TMCYSet, MSG_TMC_BCURRENT, onDrawPIntMenu, SetYTMCCurrent, &stepperY.val_mA); + #endif + #if AXIS_IS_TMC(Z) + EDIT_ITEM(ICON_TMCZSet, MSG_TMC_CCURRENT, onDrawPIntMenu, SetZTMCCurrent, &stepperZ.val_mA); + #endif + #if AXIS_IS_TMC(E0) + EDIT_ITEM(ICON_TMCESet, MSG_TMC_ECURRENT, onDrawPIntMenu, SetETMCCurrent, &stepperE0.val_mA); + #endif + } + UpdateMenu(TrinamicConfigMenu); + } +#endif + void Draw_Motion_Menu() { checkkey = Menu; - if (SET_MENU_R(MotionMenu, selrect({1, 16, 28, 13}), MSG_MOTION, 6)) { + if (SET_MENU_R(MotionMenu, selrect({1, 16, 28, 13}), MSG_MOTION, 10)) { BACK_ITEM(Draw_Control_Menu); MENU_ITEM(ICON_MaxSpeed, MSG_SPEED, onDrawSpeed, Draw_MaxSpeed_Menu); MENU_ITEM(ICON_MaxAccelerated, MSG_ACCELERATION, onDrawAcc, Draw_MaxAccel_Menu); #if HAS_CLASSIC_JERK MENU_ITEM(ICON_MaxJerk, MSG_JERK, onDrawJerk, Draw_MaxJerk_Menu); + #elif HAS_JUNCTION_DEVIATION + EDIT_ITEM(ICON_JDmm, MSG_JUNCTION_DEVIATION, onDrawPFloat3Menu, SetJDmm, &planner.junction_deviation_mm); + #endif + #if ENABLED(LIN_ADVANCE) + EDIT_ITEM(ICON_MaxAccelerated, MSG_ADVANCE_K, onDrawPFloat3Menu, SetLA_K, &planner.extruder_advance_K[0]); + #endif + #if ENABLED(SHAPING_MENU) + MENU_ITEM(ICON_InputShaping, MSG_INPUT_SHAPING, onDrawSubMenu, Draw_InputShaping_menu); + #endif + #if ENABLED(ADAPTIVE_STEP_SMOOTHING) + EDIT_ITEM(ICON_UBLActive, MSG_STEP_SMOOTHING, onDrawChkbMenu, SetAdaptiveStepSmoothing, &HMI_data.AdaptiveStepSmoothing); #endif MENU_ITEM(ICON_Step, MSG_STEPS_PER_MM, onDrawSteps, Draw_Steps_Menu); EDIT_ITEM(ICON_Flow, MSG_FLOW, onDrawPIntMenu, SetFlow, &planner.flow_percentage[0]); + EDIT_ITEM(ICON_Speed, MSG_SPEED, onDrawPIntMenu, SetSpeed, &feedrate_percentage); } UpdateMenu(MotionMenu); } +#if HAS_PREHEAT + void Draw_PreheatHotend_Menu() { + checkkey = Menu; + if (SET_MENU(PreheatHotendMenu, MSG_PREHEAT_HOTEND, 1 + PREHEAT_COUNT)) { + BACK_ITEM(Draw_FilamentMan_Menu); + #define _ITEM_PREHEAT_HE(N) MENU_ITEM(ICON_Preheat##N, MSG_PREHEAT_##N, onDrawMenuItem, DoPreheatHotend##N); + REPEAT_1(PREHEAT_COUNT, _ITEM_PREHEAT_HE) + } + UpdateMenu(PreheatHotendMenu); + } +#endif + #if ENABLED(ADVANCED_PAUSE_FEATURE) void Draw_FilamentMan_Menu() { checkkey = Menu; - if (SET_MENU(FilamentMenu, MSG_FILAMENT_MAN, 5)) { + if (SET_MENU(FilamentMenu, MSG_FILAMENT_MAN, 6)) { BACK_ITEM(Draw_Prepare_Menu); #if ENABLED(NOZZLE_PARK_FEATURE) MENU_ITEM(ICON_Park, MSG_FILAMENT_PARK_ENABLED, onDrawMenuItem, ParkHead); #endif + #if HAS_PREHEAT + MENU_ITEM(ICON_SetEndTemp, MSG_PREHEAT_HOTEND, onDrawSubMenu, Draw_PreheatHotend_Menu); + #endif MENU_ITEM(ICON_FilMan, MSG_FILAMENTCHANGE, onDrawMenuItem, ChangeFilament); #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) MENU_ITEM(ICON_FilUnload, MSG_FILAMENTUNLOAD, onDrawMenuItem, UnloadFilament); @@ -3573,32 +3638,93 @@ void Draw_Steps_Menu() { UpdateMenu(StepsMenu); } -#if ENABLED(PIDTEMP) +//============================================================================= +// UI editable custom colors +//============================================================================= - void Draw_HotendPID_Menu() { - checkkey = Menu; - if (SET_MENU_F(HotendPIDMenu, STR_HOTEND_PID " Settings", 8)) { - BACK_ITEM(Draw_AdvancedSettings_Menu); - MENU_ITEM_F(ICON_PIDNozzle, STR_HOTEND_PID, onDrawMenuItem, HotendPID); - EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KP, onDrawPFloat2Menu, SetKp, &thermalManager.temp_hotend[0].pid.Kp); - EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KI, onDrawPIDi, SetKi, &thermalManager.temp_hotend[0].pid.Ki); - EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KD, onDrawPIDd, SetKd, &thermalManager.temp_hotend[0].pid.Kd); - EDIT_ITEM(ICON_Temperature, MSG_TEMPERATURE, onDrawPIntMenu, SetHotendPidT, &HMI_data.HotendPidT); - EDIT_ITEM(ICON_PIDCycles, MSG_PID_CYCLE, onDrawPIntMenu, SetPidCycles, &HMI_data.PidCycles); - #if ENABLED(EEPROM_SETTINGS) - MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, WriteEeprom); - #endif - } - UpdateMenu(HotendPIDMenu); +#if HAS_CUSTOM_COLORS + + void RestoreDefaultColors() { + DWIN_SetColorDefaults(); + DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); + DWIN_RedrawScreen(); } -#endif + void SelColor() { + MenuData.P_Int = (int16_t*)static_cast(CurrentMenu->SelectedItem())->value; + HMI_value.Color[0] = GetRColor(*MenuData.P_Int); // Red + HMI_value.Color[1] = GetGColor(*MenuData.P_Int); // Green + HMI_value.Color[2] = GetBColor(*MenuData.P_Int); // Blue + Draw_GetColor_Menu(); + } + + void LiveRGBColor() { + HMI_value.Color[CurrentMenu->line() - 2] = MenuData.Value; + uint16_t color = RGB(HMI_value.Color[0], HMI_value.Color[1], HMI_value.Color[2]); + dwinDrawRectangle(1, color, 20, 315, DWIN_WIDTH - 20, 335); + } + void SetRGBColor() { + const uint8_t color = static_cast(CurrentMenu->SelectedItem())->icon; + SetIntOnClick(0, (color == 1) ? 63 : 31, HMI_value.Color[color], nullptr, LiveRGBColor); + } + + void DWIN_ApplyColor() { + *MenuData.P_Int = RGB(HMI_value.Color[0], HMI_value.Color[1], HMI_value.Color[2]); + DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); + Draw_SelectColors_Menu(); + hash_changed = true; + LCD_MESSAGE(MSG_COLORS_APPLIED); + DWIN_Draw_Dashboard(); + } + + void Draw_SelectColors_Menu() { + checkkey = Menu; + if (SET_MENU(SelectColorMenu, MSG_COLORS_SELECT, 20)) { + BACK_ITEM(Draw_AdvancedSettings_Menu); + MENU_ITEM(ICON_StockConfiguration, MSG_RESTORE_DEFAULTS, onDrawMenuItem, RestoreDefaultColors); + EDIT_ITEM_F(0, "Screen Background", onDrawSelColorItem, SelColor, &HMI_data.Background_Color); + EDIT_ITEM_F(0, "Cursor", onDrawSelColorItem, SelColor, &HMI_data.Cursor_Color); + EDIT_ITEM_F(0, "Title Background", onDrawSelColorItem, SelColor, &HMI_data.TitleBg_Color); + EDIT_ITEM_F(0, "Title Text", onDrawSelColorItem, SelColor, &HMI_data.TitleTxt_Color); + EDIT_ITEM_F(0, "Text", onDrawSelColorItem, SelColor, &HMI_data.Text_Color); + EDIT_ITEM_F(0, "Selected", onDrawSelColorItem, SelColor, &HMI_data.Selected_Color); + EDIT_ITEM_F(0, "Split Line", onDrawSelColorItem, SelColor, &HMI_data.SplitLine_Color); + EDIT_ITEM_F(0, "Highlight", onDrawSelColorItem, SelColor, &HMI_data.Highlight_Color); + EDIT_ITEM_F(0, "Status Background", onDrawSelColorItem, SelColor, &HMI_data.StatusBg_Color); + EDIT_ITEM_F(0, "Status Text", onDrawSelColorItem, SelColor, &HMI_data.StatusTxt_Color); + EDIT_ITEM_F(0, "Popup Background", onDrawSelColorItem, SelColor, &HMI_data.PopupBg_Color); + EDIT_ITEM_F(0, "Popup Text", onDrawSelColorItem, SelColor, &HMI_data.PopupTxt_Color); + EDIT_ITEM_F(0, "Alert Background", onDrawSelColorItem, SelColor, &HMI_data.AlertBg_Color); + EDIT_ITEM_F(0, "Alert Text", onDrawSelColorItem, SelColor, &HMI_data.AlertTxt_Color); + EDIT_ITEM_F(0, "Percent Text", onDrawSelColorItem, SelColor, &HMI_data.PercentTxt_Color); + EDIT_ITEM_F(0, "Bar Fill", onDrawSelColorItem, SelColor, &HMI_data.Barfill_Color); + EDIT_ITEM_F(0, "Indicator value", onDrawSelColorItem, SelColor, &HMI_data.Indicator_Color); + EDIT_ITEM_F(0, "Coordinate value", onDrawSelColorItem, SelColor, &HMI_data.Coordinate_Color); + } + UpdateMenu(SelectColorMenu); + } + + void Draw_GetColor_Menu() { + checkkey = Menu; + if (SET_MENU(GetColorMenu, MSG_COLORS_GET, 5)) { + BACK_ITEM(DWIN_ApplyColor); + MENU_ITEM(ICON_Cancel, MSG_BUTTON_CANCEL, onDrawMenuItem, Draw_SelectColors_Menu); + MENU_ITEM(0, MSG_COLORS_RED, onDrawGetColorItem, SetRGBColor); + MENU_ITEM(1, MSG_COLORS_GREEN, onDrawGetColorItem, SetRGBColor); + MENU_ITEM(2, MSG_COLORS_BLUE, onDrawGetColorItem, SetRGBColor); + } + UpdateMenu(GetColorMenu); + dwinDrawRectangle(1, *MenuData.P_Int, 20, 315, DWIN_WIDTH - 20, 335); + } + +#endif // HAS_CUSTOM_COLORS + +//============================================================================= +// Nozzle and Bed PID/MPC +//============================================================================= #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) - #if ENABLED(MPC_AUTOTUNE_MENU) - void HotendMPC() { thermalManager.MPC_autotune(active_extruder); } - #endif #if ENABLED(MPC_EDIT_MENU) void SetHeaterPower() { SetPFloatOnClick(1, 200, 1); } void SetBlkHeatCapacity() { SetPFloatOnClick(0, 40, 2); } @@ -3617,7 +3743,7 @@ void Draw_Steps_Menu() { MPC_t &mpc = thermalManager.temp_hotend[0].mpc; BACK_ITEM(Draw_AdvancedSettings_Menu); #if ENABLED(MPC_AUTOTUNE_MENU) - MENU_ITEM(ICON_MPCNozzle, MSG_MPC_AUTOTUNE, onDrawMenuItem, HotendMPC); + MENU_ITEM(ICON_MPCNozzle, MSG_MPC_AUTOTUNE, onDrawMenuItem, []{ thermalManager.MPC_autotune(active_extruder, Temperature::MPCTuningType::AUTO); }); #endif #if ENABLED(MPC_EDIT_MENU) EDIT_ITEM(ICON_MPCHeater, MSG_MPC_POWER, onDrawPFloatMenu, SetHeaterPower, &mpc.heater_power); @@ -3634,18 +3760,97 @@ void Draw_Steps_Menu() { #endif // MPC_EDIT_MENU || MPC_AUTOTUNE_MENU -#if ENABLED(PIDTEMPBED) +#if DWIN_PID_TUNE + void SetPID(celsius_t t, heater_id_t h) { + char cmd[53] = ""; + char str_1[5] = "", str_2[5] = ""; + sprintf_P(cmd, PSTR("G28OXY\nG0Z5F300\nG0X%sY%sF5000\nM84\nM400"), + dtostrf(X_CENTER, 1, 1, str_1), + dtostrf(Y_CENTER, 1, 1, str_2) + ); + gcode.process_subcommands_now(cmd); + thermalManager.PID_autotune(t, h, HMI_data.PidCycles, true); + } + void SetPidCycles() { SetPIntOnClick(3, 50); } +#endif + +#if ALL(HAS_PID_HEATING, PID_EDIT_MENU) + + void SetKp() { SetPFloatOnClick(0, 1000, 2); } + void ApplyPIDi() { + *MenuData.P_Float = scalePID_i(MenuData.Value / POW(10, 2)); + TERN_(PIDTEMP, thermalManager.updatePID()); + } + void ApplyPIDd() { + *MenuData.P_Float = scalePID_d(MenuData.Value / POW(10, 2)); + TERN_(PIDTEMP, thermalManager.updatePID()); + } + void SetKi() { + MenuData.P_Float = (float*)static_cast(CurrentMenu->SelectedItem())->value; + const float value = unscalePID_i(*MenuData.P_Float); + SetFloatOnClick(0, 1000, 2, value, ApplyPIDi); + } + void SetKd() { + MenuData.P_Float = (float*)static_cast(CurrentMenu->SelectedItem())->value; + const float value = unscalePID_d(*MenuData.P_Float); + SetFloatOnClick(0, 1000, 2, value, ApplyPIDd); + } + void onDrawPIDi(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_i(*(float*)static_cast(menuitem)->value)); } + void onDrawPIDd(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_d(*(float*)static_cast(menuitem)->value)); } + +#endif // HAS_PID_HEATING && PID_EDIT_MENU + +#if ENABLED(PIDTEMP) && ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU) + + #if ENABLED(PID_AUTOTUNE_MENU) + void HotendPID() { SetPID(HMI_data.HotendPidT, H_E0); } + void SetHotendPidT() { SetPIntOnClick(MIN_ETEMP, MAX_ETEMP); } + #endif + + void Draw_HotendPID_Menu() { + checkkey = Menu; + if (SET_MENU_F(HotendPIDMenu, STR_HOTEND_PID " Settings", 8)) { + BACK_ITEM(Draw_AdvancedSettings_Menu); + #if ENABLED(PID_AUTOTUNE_MENU) + MENU_ITEM_F(ICON_PIDNozzle, STR_HOTEND_PID, onDrawMenuItem, HotendPID); + EDIT_ITEM(ICON_Temperature, MSG_TEMPERATURE, onDrawPIntMenu, SetHotendPidT, &HMI_data.HotendPidT); + EDIT_ITEM(ICON_PIDCycles, MSG_PID_CYCLE, onDrawPIntMenu, SetPidCycles, &HMI_data.PidCycles); + #endif + #if ENABLED(PID_EDIT_MENU) + EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KP, onDrawPFloat2Menu, SetKp, &thermalManager.temp_hotend[0].pid.Kp); + EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KI, onDrawPIDi, SetKi, &thermalManager.temp_hotend[0].pid.Ki); + EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KD, onDrawPIDd, SetKd, &thermalManager.temp_hotend[0].pid.Kd); + #endif + #if ENABLED(EEPROM_SETTINGS) + MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, WriteEeprom); + #endif + } + UpdateMenu(HotendPIDMenu); + } + +#endif // PIDTEMP && (PID_AUTOTUNE_MENU || PID_EDIT_MENU) + +#if ENABLED(PIDTEMPBED) && ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU) + + #if ENABLED(PID_AUTOTUNE_MENU) + void BedPID() { SetPID(HMI_data.BedPidT, H_BED); } + void SetBedPidT() { SetPIntOnClick(MIN_BEDTEMP, MAX_BEDTEMP); } + #endif void Draw_BedPID_Menu() { checkkey = Menu; if (SET_MENU_F(BedPIDMenu, STR_BED_PID " Settings", 8)) { BACK_ITEM(Draw_AdvancedSettings_Menu); - MENU_ITEM_F(ICON_PIDBed, STR_BED_PID, onDrawMenuItem,BedPID); - EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KP, onDrawPFloat2Menu, SetKp, &thermalManager.temp_bed.pid.Kp); - EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KI, onDrawPIDi, SetKi, &thermalManager.temp_bed.pid.Ki); - EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KD, onDrawPIDd, SetKd, &thermalManager.temp_bed.pid.Kd); - EDIT_ITEM(ICON_Temperature, MSG_TEMPERATURE, onDrawPIntMenu, SetBedPidT, &HMI_data.BedPidT); - EDIT_ITEM(ICON_PIDCycles, MSG_PID_CYCLE, onDrawPIntMenu, SetPidCycles, &HMI_data.PidCycles); + #if ENABLED(PID_AUTOTUNE_MENU) + MENU_ITEM_F(ICON_PIDBed, STR_BED_PID, onDrawMenuItem,BedPID); + EDIT_ITEM(ICON_Temperature, MSG_TEMPERATURE, onDrawPIntMenu, SetBedPidT, &HMI_data.BedPidT); + EDIT_ITEM(ICON_PIDCycles, MSG_PID_CYCLE, onDrawPIntMenu, SetPidCycles, &HMI_data.PidCycles); + #endif + #if ENABLED(PID_EDIT_MENU) + EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KP, onDrawPFloat2Menu, SetKp, &thermalManager.temp_bed.pid.Kp); + EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KI, onDrawPIDi, SetKi, &thermalManager.temp_bed.pid.Ki); + EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KD, onDrawPIDd, SetKd, &thermalManager.temp_bed.pid.Kd); + #endif #if ENABLED(EEPROM_SETTINGS) MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, WriteEeprom); #endif @@ -3653,7 +3858,9 @@ void Draw_Steps_Menu() { UpdateMenu(BedPIDMenu); } -#endif // PIDTEMPBED +#endif // PIDTEMPBED && (PID_AUTOTUNE_MENU || PID_EDIT_MENU) + +//============================================================================= #if HAS_BED_PROBE @@ -3694,7 +3901,7 @@ void Draw_Steps_Menu() { UpdateMenu(HomingMenu); } -#endif +#endif // INDIVIDUAL_AXIS_HOMING_SUBMENU #if ENABLED(FWRETRACT) @@ -3738,8 +3945,9 @@ void Draw_Steps_Menu() { void LiveEditMesh() { ((MenuItemPtrClass*)EditZValueItem)->value = &bedlevel.z_values[HMI_value.Select ? bedLevelTools.mesh_x : MenuData.Value][HMI_value.Select ? MenuData.Value : bedLevelTools.mesh_y]; EditZValueItem->redraw(); } void ApplyEditMeshX() { bedLevelTools.mesh_x = MenuData.Value; } - void SetEditMeshX() { HMI_value.Select = 0; SetIntOnClick(0, GRID_MAX_POINTS_X - 1, bedLevelTools.mesh_x, ApplyEditMeshX, LiveEditMesh); } void ApplyEditMeshY() { bedLevelTools.mesh_y = MenuData.Value; } + void ResetMesh() { bedLevelTools.mesh_reset(); LCD_MESSAGE(MSG_MESH_RESET); } + void SetEditMeshX() { HMI_value.Select = 0; SetIntOnClick(0, GRID_MAX_POINTS_X - 1, bedLevelTools.mesh_x, ApplyEditMeshX, LiveEditMesh); } void SetEditMeshY() { HMI_value.Select = 1; SetIntOnClick(0, GRID_MAX_POINTS_Y - 1, bedLevelTools.mesh_y, ApplyEditMeshY, LiveEditMesh); } void SetEditZValue() { SetPFloatOnClick(Z_OFFSET_MIN, Z_OFFSET_MAX, 3); } #endif @@ -3760,13 +3968,13 @@ void Draw_Steps_Menu() { void UBLMeshTilt() { NOLESS(bedlevel.storage_slot, 0); - char buf[15]; + char buf[9]; if (bedLevelTools.tilt_grid > 1) { - sprintf_P(buf, PSTR("G28O\nG29 J%i"), bedLevelTools.tilt_grid); + sprintf_P(buf, PSTR("G29J%i"), bedLevelTools.tilt_grid); gcode.process_subcommands_now(buf); } else - gcode.process_subcommands_now(F("G28O\nG29J")); + gcode.process_subcommands_now(F("G29J")); LCD_MESSAGE(MSG_UBL_MESH_TILTED); } @@ -3793,7 +4001,7 @@ void Draw_Steps_Menu() { void Draw_MeshSet_Menu() { checkkey = Menu; - if (SET_MENU(MeshMenu, MSG_MESH_LEVELING, 13)) { + if (SET_MENU(MeshMenu, MSG_MESH_LEVELING, 14)) { BACK_ITEM(Draw_AdvancedSettings_Menu); #if ENABLED(PREHEAT_BEFORE_LEVELING) EDIT_ITEM(ICON_Temperature, MSG_UBL_SET_TEMP_BED, onDrawPIntMenu, SetBedLevT, &HMI_data.BedLevT); @@ -3812,6 +4020,7 @@ void Draw_Steps_Menu() { MENU_ITEM(ICON_UBLSmartFill, MSG_UBL_SMART_FILLIN, onDrawMenuItem, UBLSmartFillMesh); #endif #if ENABLED(MESH_EDIT_MENU) + MENU_ITEM(ICON_MeshReset, MSG_MESH_RESET, onDrawMenuItem, ResetMesh); MENU_ITEM(ICON_MeshEdit, MSG_EDIT_MESH, onDrawSubMenu, Draw_EditMesh_Menu); #endif MENU_ITEM(ICON_MeshViewer, MSG_MESH_VIEW, onDrawSubMenu, DWIN_MeshViewer); diff --git a/Marlin/src/lcd/e3v2/proui/dwin.h b/Marlin/src/lcd/e3v2/proui/dwin.h index 126f8232ac..bd1e802458 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.h +++ b/Marlin/src/lcd/e3v2/proui/dwin.h @@ -24,8 +24,8 @@ /** * DWIN Enhanced implementation for PRO UI * Author: Miguel A. Risco-Castillo (MRISCOC) - * Version: 3.21.2 - * Date: 2022/12/02 + * Version: 3.25.3 + * Date: 2023/05/18 */ #include "../../../inc/MarlinConfig.h" @@ -79,7 +79,6 @@ enum processID : uint8_t { enum tempcontrol_t : uint8_t { #if DWIN_PID_TUNE - PID_DONE, PIDTEMP_START, PIDTEMPBED_START, PID_BAD_HEATER_ID, @@ -87,11 +86,11 @@ enum processID : uint8_t { PID_TUNING_TIMEOUT, #endif #if ENABLED(MPC_AUTOTUNE) - MPC_DONE, MPCTEMP_START, MPC_TEMP_ERROR, - MPC_INTERRUPTED + MPC_INTERRUPTED, #endif + AUTOTUNE_DONE }; #endif @@ -141,6 +140,7 @@ typedef struct { #endif bool FullManualTramming = false; + bool MediaSort = true; bool MediaAutoMount = ENABLED(HAS_SD_EXTENDER); #if ALL(INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) uint8_t z_after_homing = DEF_Z_AFTER_HOMING; @@ -148,6 +148,8 @@ typedef struct { #if ALL(LED_CONTROL_MENU, HAS_COLOR_LEDS) LEDColor Led_Color = Def_Leds_Color; #endif + bool AdaptiveStepSmoothing = true; + bool EnablePreview = true; } HMI_data_t; extern HMI_data_t HMI_data; @@ -155,8 +157,8 @@ static constexpr size_t eeprom_data_size = sizeof(HMI_data_t); typedef struct { int8_t Color[3]; // Color components - #if DWIN_PID_TUNE - tempcontrol_t pidresult = PID_DONE; + #if ANY(DWIN_PID_TUNE, MPCTEMP) + tempcontrol_t tempcontrol = AUTOTUNE_DONE; #endif uint8_t Select = 0; // Auxiliary selector variable AxisEnum axis = X_AXIS; // Axis Select @@ -167,17 +169,13 @@ typedef struct { bool printing_flag:1; // sd or host printing bool abort_flag:1; // sd or host was aborted bool pause_flag:1; // printing is paused - bool percent_flag:1; // percent was override by M73 - bool remain_flag:1; // remain was override by M73 bool select_flag:1; // Popup button selected bool home_flag:1; // homing in course - bool heat_flag:1; // 0: heating done 1: during heating } HMI_flag_t; extern HMI_value_t HMI_value; extern HMI_flag_t hmiFlag; extern uint8_t checkkey; -extern millis_t dwin_heat_time; // Popups #if HAS_HOTEND || HAS_HEATED_BED @@ -206,12 +204,6 @@ void AutoHome(); REPEAT_1(PREHEAT_COUNT, _DOPREHEAT) #endif void DoCoolDown(); -#if ENABLED(PIDTEMP) - void HotendPID(); -#endif -#if ENABLED(PIDTEMPBED) - void BedPID(); -#endif #if ENABLED(BAUD_RATE_GCODE) void HMI_SetBaudRate(); void SetBaud115K(); @@ -236,7 +228,7 @@ void ParkHead(); #if ENABLED(HOST_SHUTDOWN_MENU_ITEM) && defined(SHUTDOWN_ACTION) void HostShutDown(); #endif -#if !HAS_BED_PROBE +#if DISABLED(HAS_BED_PROBE) void HomeZandDisable(); #endif @@ -252,7 +244,6 @@ void DWIN_DrawStatusLine(const char *text = ""); // Draw simple status text void DWIN_RedrawDash(); // Redraw Dash and Status line void DWIN_RedrawScreen(); // Redraw all screen elements void HMI_MainMenu(); // Main process screen -void HMI_SelectFile(); // File page void HMI_Printing(); // Print page void HMI_ReturnScreen(); // Return to previous screen before popups void HMI_WaitForUser(); @@ -278,10 +269,8 @@ void DWIN_Print_Aborted(); #if HAS_FILAMENT_SENSOR void DWIN_FilamentRunout(const uint8_t extruder); #endif -void DWIN_M73(); void DWIN_Print_Header(const char *text); void DWIN_SetColorDefaults(); -void DWIN_ApplyColor(); void DWIN_CopySettingsTo(char * const buff); void DWIN_CopySettingsFrom(const char * const buff); void DWIN_SetDataDefaults(); @@ -291,7 +280,6 @@ void DWIN_RebootScreen(); void DWIN_Popup_Pause(FSTR_P const fmsg, uint8_t button=0); void Draw_Popup_FilamentPurge(); void Goto_FilamentPurge(); - void HMI_FilamentPurge(); #endif // Utility and extensions @@ -331,8 +319,6 @@ void Draw_FilSet_Menu(); void Draw_ParkPos_Menu(); #endif void Draw_PhySet_Menu(); -void Draw_SelectColors_Menu(); -void Draw_GetColor_Menu(); #if ALL(CASE_LIGHT_MENU, CASELIGHT_USES_BRIGHTNESS) void Draw_CaseLight_Menu(); #endif @@ -369,16 +355,36 @@ void Draw_Steps_Menu(); void Draw_EditMesh_Menu(); #endif #endif +#if HAS_TRINAMIC_CONFIG + void Draw_TrinamicConfig_menu(); +#endif + +// Custom colors editing +#if HAS_CUSTOM_COLORS + void DWIN_ApplyColor(); + void Draw_SelectColors_Menu(); + void Draw_GetColor_Menu(); +#endif // PID #if DWIN_PID_TUNE #include "../../../module/temperature.h" void DWIN_StartM303(const bool seenC, const int c, const bool seenS, const heater_id_t hid, const celsius_t temp); void DWIN_PidTuning(tempcontrol_t result); - #if ENABLED(PIDTEMP) +#endif +#if ENABLED(PIDTEMP) + #if ENABLED(PID_AUTOTUNE_MENU) + void HotendPID(); + #endif + #if ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU) void Draw_HotendPID_Menu(); #endif - #if ENABLED(PIDTEMPBED) +#endif +#if ENABLED(PIDTEMPBED) + #if ENABLED(PID_AUTOTUNE_MENU) + void BedPID(); + #endif + #if ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU) void Draw_BedPID_Menu(); #endif #endif diff --git a/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp b/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp index a82acdb3e9..180b35e2ec 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp @@ -23,8 +23,8 @@ /** * DWIN Enhanced implementation for PRO UI * Author: Miguel A. Risco-Castillo (MRISCOC) - * Version: 3.10.1 - * Date: 2022/03/06 + * Version: 3.12.1 + * Date: 2023/01/22 */ #include "../../../inc/MarlinConfigPre.h" @@ -134,6 +134,26 @@ void DWIN_WriteToMem(uint8_t mem, uint16_t addr, uint16_t length, uint8_t *data) } } +// Draw an Icon from SRAM without background transparency for DACAI Screens support +void DACAI_ICON_Show(uint16_t x, uint16_t y, uint16_t addr) { + NOMORE(x, DWIN_WIDTH - 1); + NOMORE(y, DWIN_HEIGHT - 1); + size_t i = 0; + dwinByte(i, 0x70); + dwinWord(i, x); + dwinWord(i, y); + dwinWord(i, addr); + dwinSend(i); +} + +void dwinIconShow(uint16_t x, uint16_t y, uint16_t addr) { + #if ENABLED(DACAI_DISPLAY) + DACAI_ICON_Show(x, y, addr); + #else + dwinIconShow(0, 0, 1, x, y, addr); + #endif +} + // Write the contents of the 32KB SRAM data memory into the designated image memory space. // picID: Picture memory space location, 0x00-0x0F, each space is 32Kbytes void DWIN_SRAMToPic(uint8_t picID) { diff --git a/Marlin/src/lcd/e3v2/proui/dwin_lcd.h b/Marlin/src/lcd/e3v2/proui/dwin_lcd.h index 6e0a254db4..8c9c063367 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_lcd.h +++ b/Marlin/src/lcd/e3v2/proui/dwin_lcd.h @@ -24,8 +24,8 @@ /** * DWIN Enhanced implementation for PRO UI * Author: Miguel A. Risco-Castillo (MRISCOC) - * Version: 3.10.1 - * Date: 2022/03/06 + * Version: 3.12.1 + * Date: 2023/01/22 */ #include "../common/dwin_api.h" @@ -71,6 +71,11 @@ void DWIN_Frame_AreaCopy(bool IBD, bool BIR, bool BFI, uint8_t cacheID, uint16_t // data: address of the buffer with data void DWIN_WriteToMem(uint8_t mem, uint16_t addr, uint16_t length, uint8_t *data); +// Draw an Icon from SRAM +// x/y: Upper-left point +// addr: SRAM address +void dwinIconShow(uint16_t x, uint16_t y, uint16_t addr); + // Write the contents of the 32KB SRAM data memory into the designated image memory space. // picID: Picture memory space location, 0x00-0x0F, each space is 32Kbytes void DWIN_SRAMToPic(uint8_t picID); diff --git a/Marlin/src/lcd/e3v2/proui/dwinui.cpp b/Marlin/src/lcd/e3v2/proui/dwinui.cpp index 4ed6ce6783..235b30f9fa 100644 --- a/Marlin/src/lcd/e3v2/proui/dwinui.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwinui.cpp @@ -23,8 +23,8 @@ /** * DWIN Enhanced implementation for PRO UI * Author: Miguel A. Risco-Castillo (MRISCOC) - * Version: 3.20.1 - * Date: 2022/10/25 + * Version: 3.21.1 + * Date: 2023/03/21 */ #include "../../../inc/MarlinConfig.h" @@ -32,7 +32,6 @@ #if ENABLED(DWIN_LCD_PROUI) #include "dwin_defines.h" -#include "dwin_lcd.h" #include "dwinui.h" xy_int_t DWINUI::cursor = { 0 }; @@ -60,16 +59,18 @@ void DWINUI::setFont(fontid_t fid) { fontid = fid; } // Get font character width uint8_t DWINUI::fontWidth(fontid_t fid) { switch (fid) { - case font6x12 : return 6; + #if DISABLED(TJC_DISPLAY) + case font6x12 : return 6; + case font20x40: return 20; + case font24x48: return 24; + case font28x56: return 28; + case font32x64: return 32; + #endif case font8x16 : return 8; case font10x20: return 10; case font12x24: return 12; case font14x28: return 14; case font16x32: return 16; - case font20x40: return 20; - case font24x48: return 24; - case font28x56: return 28; - case font32x64: return 32; default: return 0; } } @@ -77,16 +78,18 @@ uint8_t DWINUI::fontWidth(fontid_t fid) { // Get font character height uint8_t DWINUI::fontHeight(fontid_t fid) { switch (fid) { + #if DISABLED(TJC_DISPLAY) case font6x12 : return 12; + case font20x40: return 40; + case font24x48: return 48; + case font28x56: return 56; + case font32x64: return 64; + #endif case font8x16 : return 16; case font10x20: return 20; case font12x24: return 24; case font14x28: return 28; case font16x32: return 32; - case font20x40: return 40; - case font24x48: return 48; - case font28x56: return 56; - case font32x64: return 64; default: return 0; } } @@ -261,15 +264,13 @@ void DWINUI::Draw_Circle(uint16_t color, uint16_t x, uint16_t y, uint8_t r) { // y: ordinate of the center of the circle // r: circle radius void DWINUI::Draw_FillCircle(uint16_t bcolor, uint16_t x,uint16_t y,uint8_t r) { - int a = 0, b = 0; - while (a <= b) { - b = SQRT(sq(r) - sq(a)); // b=sqrt(r*r-a*a); - if (a == 0) b--; - dwinDrawLine(bcolor, x-b,y-a,x+b,y-a); - dwinDrawLine(bcolor, x-a,y-b,x+a,y-b); - dwinDrawLine(bcolor, x-b,y+a,x+b,y+a); - dwinDrawLine(bcolor, x-a,y+b,x+a,y+b); - a++; + dwinDrawLine(bcolor, x - r, y, x + r, y); + uint16_t b = 1; + while (b <= r) { + uint16_t a = SQRT(sq(r) - sq(b)); + dwinDrawLine(bcolor, x - a, y + b, x + a, y + b); + dwinDrawLine(bcolor, x - a, y - b, x + a, y - b); + b += TERN(TJC_DISPLAY, 2, 1); } } diff --git a/Marlin/src/lcd/e3v2/proui/dwinui.h b/Marlin/src/lcd/e3v2/proui/dwinui.h index fd59757d64..06daece9d0 100644 --- a/Marlin/src/lcd/e3v2/proui/dwinui.h +++ b/Marlin/src/lcd/e3v2/proui/dwinui.h @@ -24,8 +24,8 @@ /** * DWIN Enhanced implementation for PRO UI * Author: Miguel A. Risco-Castillo (MRISCOC) - * Version: 3.18.1 - * Date: 2022/07/05 + * Version: 3.21.1 + * Date: 2023/03/21 */ #include "../../../inc/MarlinConfigPre.h" @@ -68,7 +68,8 @@ #define ICON_HomeOffsetY ICON_StepY #define ICON_HomeOffsetZ ICON_StepZ #define ICON_HSMode ICON_StockConfiguration -#define ICON_InvertE0 ICON_StepE +#define ICON_InputShaping ICON_MaxAccelerated +#define ICON_JDmm ICON_MaxJerk #define ICON_Tram ICON_SetEndTemp #define ICON_Level ICON_HotendTemp #define ICON_Lock ICON_Cool @@ -82,6 +83,7 @@ #define ICON_MeshEditZ ICON_MoveZ #define ICON_MeshNext ICON_Axis #define ICON_MeshPoints ICON_SetEndTemp +#define ICON_MeshReset ICON_StockConfiguration #define ICON_MeshSave ICON_WriteEEPROM #define ICON_MeshViewer ICON_HotendTemp #define ICON_MoveZ0 ICON_HotendTemp @@ -132,8 +134,14 @@ #define ICON_SetPreheat8 ICON_SetCustomPreheat #define ICON_SetPreheat9 ICON_SetCustomPreheat #define ICON_SetPreheat10 ICON_SetCustomPreheat +#define ICON_ShapingX ICON_MoveX +#define ICON_ShapingY ICON_MoveY #define ICON_Sound ICON_Cool -#define ICON_TBSetup ICON_Contact +#define ICON_TMCSet ICON_PrintSize +#define ICON_TMCXSet ICON_MoveX +#define ICON_TMCYSet ICON_MoveY +#define ICON_TMCZSet ICON_MoveZ +#define ICON_TMCESet ICON_Extruder #define ICON_UBLActive ICON_HotendTemp #define ICON_UBLActive ICON_HotendTemp #define ICON_UBLSlot ICON_ResumeEEPROM diff --git a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp index 81baa0a2de..c6d014e53c 100644 --- a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp +++ b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp @@ -23,8 +23,8 @@ /** * DWIN Endstops diagnostic page for PRO UI * Author: Miguel A. Risco-Castillo (MRISCOC) - * Version: 1.3.3 - * Date: 2022/10/07 + * Version: 1.4.3 + * Date: 2023/05/10 */ #include "../../../inc/MarlinConfigPre.h" @@ -35,10 +35,8 @@ #include "../../../core/types.h" #include "../../marlinui.h" -#include "dwin_lcd.h" -#include "dwinui.h" -#include "dwin_popup.h" #include "dwin.h" +#include "dwin_popup.h" #if HAS_FILAMENT_SENSOR #include "../../../feature/runout.h" diff --git a/Marlin/src/lcd/e3v2/proui/endstop_diag.h b/Marlin/src/lcd/e3v2/proui/endstop_diag.h index 33f1d10d2d..236262282e 100644 --- a/Marlin/src/lcd/e3v2/proui/endstop_diag.h +++ b/Marlin/src/lcd/e3v2/proui/endstop_diag.h @@ -24,14 +24,14 @@ /** * DWIN End Stops diagnostic page for PRO UI * Author: Miguel A. Risco-Castillo (MRISCOC) - * Version: 1.3.2 - * Date: 2022/10/07 + * Version: 1.4.3 + * Date: 2023/05/10 */ class ESDiagClass { public: - void Draw(); - void Update(); + static void Draw(); + static void Update(); }; extern ESDiagClass ESDiag; diff --git a/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp b/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp index b87ed2101f..3dddbe6f61 100644 --- a/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp +++ b/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp @@ -23,8 +23,8 @@ /** * DWIN G-code thumbnail preview * Author: Miguel A. Risco-Castillo - * version: 3.1.2 - * Date: 2022/09/03 + * version: 3.3.2 + * Date: 2023/06/18 */ #include "../../../inc/MarlinConfigPre.h" @@ -35,13 +35,14 @@ #include "../../marlinui.h" #include "../../../sd/cardreader.h" #include "../../../MarlinCore.h" // for wait_for_user -#include "dwin_lcd.h" -#include "dwinui.h" #include "dwin.h" #include "dwin_popup.h" #include "base64.hpp" #include "gcode_preview.h" +#define THUMBWIDTH 230 +#define THUMBHEIGHT 180 + typedef struct { char name[13] = ""; //8.3 + null uint32_t thumbstart = 0; @@ -104,7 +105,7 @@ void Get_Value(char *buf, const char * const key, float &value) { } bool Has_Preview() { - const char * tbstart = "; thumbnail begin 230x180"; + const char * tbstart = "; thumbnail begin " STRINGIFY(THUMBWIDTH) "x" STRINGIFY(THUMBHEIGHT); char * posptr = 0; uint8_t nbyte = 1; uint32_t indx = 0; @@ -187,6 +188,8 @@ bool Has_Preview() { card.closefile(); buf64[readed] = 0; + fileprop.thumbwidth = THUMBWIDTH; + fileprop.thumbheight = THUMBHEIGHT; fileprop.thumbsize = decode_base64(buf64, fileprop.thumbdata); card.closefile(); DWINUI::WriteToSRAM(0x00, fileprop.thumbsize, fileprop.thumbdata); delete[] fileprop.thumbdata; @@ -218,7 +221,7 @@ void Preview_DrawFromSD() { } DWINUI::Draw_Button(BTN_Print, 26, 290); DWINUI::Draw_Button(BTN_Cancel, 146, 290); - dwinIconShow(0, 0, 1, 21, 90, 0x00); + Preview_Show(); Draw_Select_Highlight(true, 290); dwinUpdateLCD(); } @@ -229,15 +232,17 @@ void Preview_DrawFromSD() { } void Preview_Invalidate() { - fileprop.thumbstart = 0; -} - -bool Preview_Valid() { - return !!fileprop.thumbstart; -} - -void Preview_Reset() { fileprop.thumbsize = 0; } +bool Preview_Valid() { + return !!fileprop.thumbsize; +} + +void Preview_Show() { + const uint8_t xpos = (DWIN_WIDTH - fileprop.thumbwidth) / 2; + const uint8_t ypos = (205 - fileprop.thumbheight) / 2 + 87; + dwinIconShow(xpos, ypos, 0x00); +} + #endif // HAS_GCODE_PREVIEW && DWIN_LCD_PROUI diff --git a/Marlin/src/lcd/e3v2/proui/gcode_preview.h b/Marlin/src/lcd/e3v2/proui/gcode_preview.h index 2452797d0c..b90180db29 100644 --- a/Marlin/src/lcd/e3v2/proui/gcode_preview.h +++ b/Marlin/src/lcd/e3v2/proui/gcode_preview.h @@ -31,4 +31,4 @@ void Preview_DrawFromSD(); void Preview_Invalidate(); bool Preview_Valid(); -void Preview_Reset(); +void Preview_Show(); diff --git a/Marlin/src/lcd/e3v2/proui/menus.cpp b/Marlin/src/lcd/e3v2/proui/menus.cpp index 870a4248ce..54892b6acb 100644 --- a/Marlin/src/lcd/e3v2/proui/menus.cpp +++ b/Marlin/src/lcd/e3v2/proui/menus.cpp @@ -23,8 +23,8 @@ /** * Menu functions for ProUI * Author: Miguel A. Risco-Castillo - * Version: 1.9.1 - * Date: 2022/12/02 + * Version: 1.10.1 + * Date: 2022/05/01 */ #include "../../../inc/MarlinConfigPre.h" @@ -32,8 +32,6 @@ #if ENABLED(DWIN_LCD_PROUI) #include "../common/encoder.h" -#include "dwin_lcd.h" -#include "dwinui.h" #include "dwin.h" #include "menus.h" @@ -58,11 +56,6 @@ void Draw_Title(TitleClass* title) { #endif } -void Draw_Menu(MenuClass* menu) { - DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); - dwinDrawRectangle(1, DWINUI::backcolor, 0, TITLE_HEIGHT, DWIN_WIDTH - 1, STATUS_Y - 1); -} - void Draw_Menu_Cursor(const int8_t line) { const uint16_t ypos = MYPOS(line); DWINUI::Draw_Box(1, HMI_data.Cursor_Color, {0, ypos, 15, MLINE - 1}); @@ -79,7 +72,7 @@ void Erase_Menu_Text(const int8_t line) { DWINUI::Draw_Box(1, HMI_data.Background_Color, {LBLX, ypos, DWIN_WIDTH - LBLX, MLINE - 2}); } -void Draw_Menu_Line(const uint8_t line, const uint8_t icon /*=0*/, const char * const label /*=nullptr*/, bool more /*=false*/, bool selected /*=false*/) { +void Draw_Menu_Line(const uint8_t line, const uint8_t icon/*=0*/, const char * const label/*=nullptr*/, bool more/*=false*/, bool selected/*=false*/) { if (icon) DWINUI::Draw_Icon(icon, ICOX, MBASE(line) - 3); if (label) DWINUI::Draw_String(LBLX, MBASE(line) - 1, (char*)label); if (more) DWINUI::Draw_Icon(ICON_More, VALX + 16, MBASE(line) - 3); @@ -87,7 +80,7 @@ void Draw_Menu_Line(const uint8_t line, const uint8_t icon /*=0*/, const char * dwinDrawHLine(HMI_data.SplitLine_Color, 16, MYPOS(line + 1), 240); } -void Draw_Menu_Line(const uint8_t line, const uint8_t icon /*=0*/, FSTR_P label /*=nullptr*/, bool more /*=false*/, bool selected /*=false*/) { +void Draw_Menu_Line(const uint8_t line, const uint8_t icon/*=0*/, FSTR_P label/*=nullptr*/, bool more/*=false*/, bool selected/*=false*/) { Draw_Menu_Line(line, icon, FTOP(label), more, selected); } @@ -106,7 +99,7 @@ void Toggle_Chkb_Line(bool &checked) { Show_Chkb_Line(checked); } -void Draw_Menu_IntValue(uint16_t bcolor, const uint8_t line, uint8_t iNum, const int32_t value /*=0*/) { +void Draw_Menu_IntValue(uint16_t bcolor, const uint8_t line, uint8_t iNum, const int32_t value/*=0*/) { DWINUI::Draw_Signed_Int(HMI_data.Text_Color, bcolor, iNum , VALX, MBASE(line) - 1, value); } @@ -189,7 +182,7 @@ void DrawItemEdit(const bool selected) { // val: value / scaled value // LiveUpdate: live update function when the encoder changes // Apply: update function when the encoder is pressed -void SetOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, const int32_t val, void (*Apply)() /*= nullptr*/, void (*LiveUpdate)() /*= nullptr*/) { +void SetOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, const int32_t val, void (*Apply)()/*=nullptr*/, void (*LiveUpdate)()/*=nullptr*/) { checkkey = process; MenuData.MinValue = lo; MenuData.MaxValue = hi; @@ -207,7 +200,7 @@ void SetOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, // val: value // LiveUpdate: live update function when the encoder changes // Apply: update function when the encoder is pressed -void SetValueOnClick(uint8_t process, const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)() /*= nullptr*/, void (*LiveUpdate)() /*= nullptr*/) { +void SetValueOnClick(uint8_t process, const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)()/*=nullptr*/, void (*LiveUpdate)()/*=nullptr*/) { SetOnClick(process, lo, hi, 0, val, Apply, LiveUpdate); DrawItemEdit(true); } @@ -219,7 +212,7 @@ void SetValueOnClick(uint8_t process, const int32_t lo, const int32_t hi, const // val: value // LiveUpdate: live update function when the encoder changes // Apply: update function when the encoder is pressed -void SetValueOnClick(uint8_t process, const float lo, const float hi, uint8_t dp, const float val, void (*Apply)() /*= nullptr*/, void (*LiveUpdate)() /*= nullptr*/) { +void SetValueOnClick(uint8_t process, const float lo, const float hi, uint8_t dp, const float val, void (*Apply)()/*=nullptr*/, void (*LiveUpdate)()/*=nullptr*/) { const int32_t value = round(val * POW(10, dp)); SetOnClick(process, lo * POW(10, dp), hi * POW(10, dp), dp, value, Apply, LiveUpdate); DrawItemEdit(true); @@ -231,7 +224,7 @@ void SetValueOnClick(uint8_t process, const float lo, const float hi, uint8_t dp // val: value // LiveUpdate: live update function when the encoder changes // Apply: update function when the encoder is pressed -void SetIntOnClick(const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)() /*= nullptr*/, void (*LiveUpdate)() /*= nullptr*/) { +void SetIntOnClick(const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)()/*=nullptr*/, void (*LiveUpdate)()/*=nullptr*/) { SetValueOnClick(SetInt, lo, hi, val, Apply, LiveUpdate); } @@ -240,7 +233,7 @@ void SetIntOnClick(const int32_t lo, const int32_t hi, const int32_t val, void ( // hi: high limit // LiveUpdate: live update function when the encoder changes // Apply: update function when the encoder is pressed -void SetPIntOnClick(const int32_t lo, const int32_t hi, void (*Apply)() /*= nullptr*/, void (*LiveUpdate)() /*= nullptr*/) { +void SetPIntOnClick(const int32_t lo, const int32_t hi, void (*Apply)()/*=nullptr*/, void (*LiveUpdate)()/*=nullptr*/) { MenuData.P_Int = (int16_t*)static_cast(CurrentMenu->SelectedItem())->value; const int32_t value = *MenuData.P_Int; SetValueOnClick(SetPInt, lo, hi, value, Apply, LiveUpdate); @@ -252,7 +245,7 @@ void SetPIntOnClick(const int32_t lo, const int32_t hi, void (*Apply)() /*= null // hi: high limit // dp: decimal places // val: value -void SetFloatOnClick(const float lo, const float hi, uint8_t dp, const float val, void (*Apply)() /*= nullptr*/, void (*LiveUpdate)() /*= nullptr*/) { +void SetFloatOnClick(const float lo, const float hi, uint8_t dp, const float val, void (*Apply)()/*=nullptr*/, void (*LiveUpdate)()/*=nullptr*/) { SetValueOnClick(SetFloat, lo, hi, dp, val, Apply, LiveUpdate); } @@ -261,7 +254,7 @@ void SetFloatOnClick(const float lo, const float hi, uint8_t dp, const float val // hi: high limit // LiveUpdate: live update function when the encoder changes // Apply: update function when the encoder is pressed -void SetPFloatOnClick(const float lo, const float hi, uint8_t dp, void (*Apply)() /*= nullptr*/, void (*LiveUpdate)() /*= nullptr*/) { +void SetPFloatOnClick(const float lo, const float hi, uint8_t dp, void (*Apply)()/*=nullptr*/, void (*LiveUpdate)()/*=nullptr*/) { MenuData.P_Float = (float*)static_cast(CurrentMenu->SelectedItem())->value; SetValueOnClick(SetPFloat, lo, hi, dp, *MenuData.P_Float, Apply, LiveUpdate); } @@ -290,7 +283,7 @@ int8_t HMI_Get(bool draw) { const int32_t lo = MenuData.MinValue; const int32_t hi = MenuData.MaxValue; const int32_t cval = MenuData.Value; - EncoderState encoder_diffState = get_encoder_state(); + EncoderState encoder_diffState = TERN(SMOOTH_ENCODER_MENUITEMS, get_encoder_state(), encoderReceiveAnalyze()); if (encoder_diffState != ENCODER_DIFF_NO) { if (applyEncoder(encoder_diffState, MenuData.Value)) { encoderRate.enabled = false; @@ -354,7 +347,8 @@ MenuClass::MenuClass() { void MenuClass::draw() { MenuTitle.draw(); - Draw_Menu(this); + DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); + dwinDrawRectangle(1, DWINUI::backcolor, 0, TITLE_HEIGHT, DWIN_WIDTH - 1, STATUS_Y - 1); for (int8_t i = 0; i < MenuItemCount; i++) MenuItems[i]->draw(i - topline); Draw_Menu_Cursor(line()); @@ -407,7 +401,7 @@ void CustomMenuItemClass::draw(int8_t line) { if (onDraw != nullptr) (*onDraw)(static_cast(this), line); }; -void CustomMenuItemClass::redraw(bool erase /*=false*/) { +void CustomMenuItemClass::redraw(bool erase/*=false*/) { const int8_t line = CurrentMenu->line(this->pos); if (erase) Erase_Menu_Text(line); draw(line); @@ -507,8 +501,8 @@ MenuItemClass* EditItemAdd(uint8_t cicon, const char * const text, OnDrawItem on } void InitMenu() { + CurrentMenu = nullptr; PreviousMenu = nullptr; - InvalidateMenu(); } bool SetMenu(MenuClass* &menu, FSTR_P title, int8_t totalitems) { @@ -534,14 +528,18 @@ bool SetMenu(MenuClass* &menu, frame_rect_t cn, FSTR_P title, int8_t totalitems) return NotCurrent; } -void InvalidateMenu() { - if (CurrentMenu) { - CurrentMenu->topline = 0; - CurrentMenu->selected = 0; - CurrentMenu = nullptr; +void ResetMenu(MenuClass* &menu) { + if (menu) { + menu->topline = 0; + menu->selected = 0; } } +void InvalidateMenu() { + ResetMenu(CurrentMenu); + CurrentMenu = nullptr; +} + void UpdateMenu(MenuClass* &menu) { if (!menu) return; if (CurrentMenu != menu) { @@ -551,9 +549,13 @@ void UpdateMenu(MenuClass* &menu) { menu->draw(); } -void ReDrawMenu(bool force /*= false*/) { - if (CurrentMenu && (force || checkkey==Menu)) CurrentMenu->draw(); +void ReDrawMenu(bool force/*=false*/) { + if (CurrentMenu && (force || checkkey == Menu)) CurrentMenu->draw(); if (force) DrawItemEdit(true); } +void ReDrawItem() { + static_cast(CurrentMenu->SelectedItem())->redraw(false); +} + #endif // DWIN_LCD_PROUI diff --git a/Marlin/src/lcd/e3v2/proui/menus.h b/Marlin/src/lcd/e3v2/proui/menus.h index 072bf7584d..f0855e7073 100644 --- a/Marlin/src/lcd/e3v2/proui/menus.h +++ b/Marlin/src/lcd/e3v2/proui/menus.h @@ -24,14 +24,17 @@ /** * Menu functions for ProUI * Author: Miguel A. Risco-Castillo - * Version: 1.9.1 - * Date: 2022/12/02 + * Version: 1.10.1 + * Date: 2022/05/01 */ #include "dwinui.h" #define MENU_CHAR_LIMIT 24 -#define MENU_MAX_ITEMS TERN(SDSORT_LIMIT, SDSORT_LIMIT, 64) + +#ifndef MENU_MAX_ITEMS + #define MENU_MAX_ITEMS 100 +#endif typedef struct { int32_t MaxValue = 0; // Auxiliar max integer/scaled float value @@ -123,7 +126,6 @@ extern MenuClass *PreviousMenu; // Menuitem Drawing functions ================================================= void Draw_Title(TitleClass* title); -void Draw_Menu(MenuClass* menu); void Draw_Menu_Cursor(const int8_t line); void Erase_Menu_Cursor(const int8_t line); void Erase_Menu_Text(const int8_t line); @@ -150,13 +152,13 @@ void onDrawChkbMenu(MenuItemClass* menuitem, int8_t line); // On click functions ========================================================= -void SetOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, const int32_t val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr); -void SetValueOnClick(uint8_t process, const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr); -void SetValueOnClick(uint8_t process, const float lo, const float hi, uint8_t dp, const float val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr); -void SetIntOnClick(const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr); -void SetPIntOnClick(const int32_t lo, const int32_t hi, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr); -void SetFloatOnClick(const float lo, const float hi, uint8_t dp, const float val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr); -void SetPFloatOnClick(const float lo, const float hi, uint8_t dp, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr); +void SetOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, const int32_t val, void (*Apply)()=nullptr, void (*LiveUpdate)()=nullptr); +void SetValueOnClick(uint8_t process, const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)()=nullptr, void (*LiveUpdate)()=nullptr); +void SetValueOnClick(uint8_t process, const float lo, const float hi, uint8_t dp, const float val, void (*Apply)()=nullptr, void (*LiveUpdate)()=nullptr); +void SetIntOnClick(const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)()=nullptr, void (*LiveUpdate)()=nullptr); +void SetPIntOnClick(const int32_t lo, const int32_t hi, void (*Apply)()=nullptr, void (*LiveUpdate)()=nullptr); +void SetFloatOnClick(const float lo, const float hi, uint8_t dp, const float val, void (*Apply)()=nullptr, void (*LiveUpdate)()=nullptr); +void SetPFloatOnClick(const float lo, const float hi, uint8_t dp, void (*Apply)()=nullptr, void (*LiveUpdate)()=nullptr); // HMI user control functions ================================================= @@ -175,6 +177,9 @@ void InitMenu(); bool SetMenu(MenuClass* &menu, FSTR_P title, int8_t totalitems); bool SetMenu(MenuClass* &menu, frame_rect_t cn, FSTR_P title, int8_t totalitems); +// Reset top line and selected item +void ResetMenu(MenuClass* &menu); + // Invalidate CurrentMenu to prepare for full menu drawing void InvalidateMenu(); @@ -182,7 +187,10 @@ void InvalidateMenu(); void UpdateMenu(MenuClass* &menu); //Redraw the current Menu if it is valid -void ReDrawMenu(bool force = false); +void ReDrawMenu(bool force=false); + +//Redraw selected menu item +void ReDrawItem(); // Clear MenuItems array and free MenuItems elements void MenuItemsClear(); @@ -196,7 +204,7 @@ bool IsMenu(MenuClass* menu); // Add elements to the MenuItems array CustomMenuItemClass* MenuItemAdd(OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); MenuItemClass* MenuItemAdd(uint8_t cicon, const char * const text=nullptr, OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); -inline MenuItemClass* MenuItemAdd(uint8_t cicon, FSTR_P text = nullptr, OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr) { +inline MenuItemClass* MenuItemAdd(uint8_t cicon, FSTR_P text=nullptr, OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr) { return MenuItemAdd(cicon, FTOP(text), ondraw, onclick); } MenuItemClass* MenuItemAdd(uint8_t cicon, uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); diff --git a/Marlin/src/lcd/e3v2/proui/meshviewer.cpp b/Marlin/src/lcd/e3v2/proui/meshviewer.cpp index 1f42004d3f..086795d943 100644 --- a/Marlin/src/lcd/e3v2/proui/meshviewer.cpp +++ b/Marlin/src/lcd/e3v2/proui/meshviewer.cpp @@ -23,8 +23,8 @@ /** * Mesh Viewer for PRO UI * Author: Miguel A. Risco-Castillo (MRISCOC) - * version: 3.14.1 - * Date: 2022/04/11 + * version: 4.2.1 + * Date: 2023/05/05 */ #include "../../../inc/MarlinConfigPre.h" @@ -33,90 +33,99 @@ #include "../../../core/types.h" #include "../../marlinui.h" -#include "dwin_lcd.h" -#include "dwinui.h" #include "dwin.h" #include "dwin_popup.h" #include "../../../feature/bedlevel/bedlevel.h" #include "meshviewer.h" -#if ENABLED(USE_UBL_VIEWER) +#if ENABLED(USE_GRID_MESHVIEWER) #include "bedlevel_tools.h" #endif +bool meshredraw; // Redraw mesh points +uint8_t sizex, sizey; // Mesh XY size +uint8_t rmax; // Maximum radius +#define margin 25 // XY Margins +#define rmin 5 // Minimum radius +#define zmin -20 // rmin at z=-0.20 +#define zmax 20 // rmax at z= 0.20 +#define width DWIN_WIDTH - 2 * margin +#define r(z) ((z - zmin) * (rmax - rmin) / (zmax - zmin) + rmin) +#define px(xp) (margin + (xp) * (width) / (sizex - 1)) +#define py(yp) (30 + DWIN_WIDTH - margin - (yp) * (width) / (sizey - 1)) + +constexpr uint8_t meshfont = TERN(TJC_DISPLAY, font8x16, font6x12); + MeshViewerClass MeshViewer; -void MeshViewerClass::DrawMesh(bed_mesh_t zval, const uint8_t sizex, const uint8_t sizey) { - const int8_t mx = 25, my = 25; // Margins - const int16_t stx = (DWIN_WIDTH - 2 * mx) / (sizex - 1), // Steps - sty = (DWIN_WIDTH - 2 * my) / (sizey - 1); - const int8_t rmax = _MIN(mx - 2, stx / 2); - const int8_t rmin = 7; - int16_t zmesh[sizex][sizey]; - #define px(xp) (mx + (xp) * stx) - #define py(yp) (30 + DWIN_WIDTH - my - (yp) * sty) - #define rm(z) ((z - minz) * (rmax - rmin) / _MAX(1, (maxz - minz)) + rmin) - #define DrawMeshValue(xp, yp, zv) DWINUI::Draw_Signed_Float(font6x12, 1, 2, px(xp) - 18, py(yp) - 6, zv) - #define DrawMeshHLine(yp) dwinDrawHLine(HMI_data.SplitLine_Color, px(0), py(yp), DWIN_WIDTH - 2 * mx) - #define DrawMeshVLine(xp) dwinDrawVLine(HMI_data.SplitLine_Color, px(xp), py(sizey - 1), DWIN_WIDTH - 2 * my) - int16_t maxz =-32000; int16_t minz = 32000; - for (uint8_t y = 0; y < sizey; ++y) for (uint8_t x = 0; x < sizex; ++x) { - const float v = isnan(zval[x][y]) ? 0 : round(zval[x][y] * 100); - zmesh[x][y] = v; - NOLESS(maxz, v); - NOMORE(minz, v); - } - max = (float)maxz / 100; - min = (float)minz / 100; +float MeshViewerClass::max, MeshViewerClass::min; + +void MeshViewerClass::DrawMeshGrid(const uint8_t csizex, const uint8_t csizey) { + sizex = csizex; + sizey = csizey; + rmax = _MIN(margin - 2, 0.5 * (width) / (sizex - 1)); + min = 100; + max = -100; DWINUI::ClearMainArea(); dwinDrawRectangle(0, HMI_data.SplitLine_Color, px(0), py(0), px(sizex - 1), py(sizey - 1)); - for (uint8_t x = 1; x < sizex - 1; ++x) DrawMeshVLine(x); - for (uint8_t y = 1; y < sizey - 1; ++y) DrawMeshHLine(y); - for (uint8_t y = 0; y < sizey; ++y) { - hal.watchdog_refresh(); - for (uint8_t x = 0; x < sizex; ++x) { - uint16_t color = DWINUI::RainbowInt(zmesh[x][y], _MIN(-5, minz), _MAX(5, maxz)); - uint8_t radius = rm(zmesh[x][y]); - DWINUI::Draw_FillCircle(color, px(x), py(y), radius); - if (sizex < 9) { - if (zmesh[x][y] == 0) DWINUI::Draw_Float(font6x12, 1, 2, px(x) - 12, py(y) - 6, 0); - else DWINUI::Draw_Signed_Float(font6x12, 1, 2, px(x) - 18, py(y) - 6, zval[x][y]); - } - else { - char str_1[9]; - str_1[0] = 0; - switch (zmesh[x][y]) { - case -999 ... -100: - DWINUI::Draw_Signed_Float(font6x12, 1, 1, px(x) - 18, py(y) - 6, zval[x][y]); - break; - case -99 ... -1: - sprintf_P(str_1, PSTR("-.%02i"), -zmesh[x][y]); - break; - case 0: - dwinDrawString(false, font6x12, DWINUI::textcolor, DWINUI::backcolor, px(x) - 4, py(y) - 6, "0"); - break; - case 1 ... 99: - sprintf_P(str_1, PSTR(".%02i"), zmesh[x][y]); - break; - case 100 ... 999: - DWINUI::Draw_Signed_Float(font6x12, 1, 1, px(x) - 18, py(y) - 6, zval[x][y]); - break; - } - if (str_1[0]) - dwinDrawString(false, font6x12, DWINUI::textcolor, DWINUI::backcolor, px(x) - 12, py(y) - 6, str_1); - } + for (uint8_t x = 1; x < sizex - 1; ++x) dwinDrawVLine(HMI_data.SplitLine_Color, px(x), py(sizey - 1), width); + for (uint8_t y = 1; y < sizey - 1; ++y) dwinDrawHLine(HMI_data.SplitLine_Color, px(0), py(y), width); +} + +void MeshViewerClass::DrawMeshPoint(const uint8_t x, const uint8_t y, const float z) { + const uint8_t fs = DWINUI::fontWidth(meshfont); + const int16_t v = isnan(z) ? 0 : round(z * 100); + NOLESS(max, z); + NOMORE(min, z); + const uint16_t color = DWINUI::RainbowInt(v, zmin, zmax); + DWINUI::Draw_FillCircle(color, px(x), py(y), r(_MAX(_MIN(v,zmax),zmin))); + TERN_(TJC_DISPLAY, delay(100)); + if (sizex < (ENABLED(TJC_DISPLAY) ? 8 : 9)) { + if (v == 0) DWINUI::Draw_Float(meshfont, 1, 2, px(x) - 2*fs, py(y) - fs, 0); + else DWINUI::Draw_Signed_Float(meshfont, 1, 2, px(x) - 3*fs, py(y) - fs, z); + } + else { + char str_1[9]; + str_1[0] = '\0'; + switch (v) { + case -999 ... -100: + DWINUI::Draw_Signed_Float(meshfont, 1, 1, px(x) - 3*fs, py(y) - fs, z); + break; + case -99 ... -1: + sprintf_P(str_1, PSTR("-.%02i"), -v); + break; + case 0: + dwinDrawString(false, meshfont, DWINUI::textcolor, DWINUI::backcolor, px(x) - 4, py(y) - fs, "0"); + break; + case 1 ... 99: + sprintf_P(str_1, PSTR(".%02i"), v); + break; + case 100 ... 999: + DWINUI::Draw_Signed_Float(meshfont, 1, 1, px(x) - 3 * fs, py(y) - fs, z); + break; } + if (str_1[0]) + dwinDrawString(false, meshfont, DWINUI::textcolor, DWINUI::backcolor, px(x) - 2 * fs, py(y) - fs, str_1); } } -void MeshViewerClass::Draw(bool withsave /*= false*/) { +void MeshViewerClass::DrawMesh(const bed_mesh_t zval, const uint8_t csizex, const uint8_t csizey) { + DrawMeshGrid(csizex, csizey); + for (uint8_t y = 0; y < csizey; ++y) { + hal.watchdog_refresh(); + for (uint8_t x = 0; x < csizex; ++x) DrawMeshPoint(x, y, zval[x][y]); + } +} + +void MeshViewerClass::Draw(const bool withsave/*=false*/, const bool redraw/*=true*/) { Title.ShowCaption(GET_TEXT_F(MSG_MESH_VIEWER)); - #if USE_UBL_VIEWER + #if ENABLED(USE_GRID_MESHVIEWER) DWINUI::ClearMainArea(); bedLevelTools.viewer_print_value = true; bedLevelTools.Draw_Bed_Mesh(-1, 1, 8, 10 + TITLE_HEIGHT); #else - DrawMesh(bedlevel.z_values, GRID_MAX_POINTS_X, GRID_MAX_POINTS_Y); + if (redraw) DrawMesh(bedlevel.z_values, GRID_MAX_POINTS_X, GRID_MAX_POINTS_Y); + else DWINUI::Draw_Box(1, HMI_data.Background_Color, { 89, 305, 99, 38 }); #endif if (withsave) { DWINUI::Draw_Button(BTN_Save, 26, 305); @@ -126,19 +135,22 @@ void MeshViewerClass::Draw(bool withsave /*= false*/) { else DWINUI::Draw_Button(BTN_Continue, 86, 305); - #if USE_UBL_VIEWER + #if ENABLED(USE_GRID_MESHVIEWER) bedLevelTools.Set_Mesh_Viewer_Status(); #else char str_1[6], str_2[6] = ""; - ui.status_printf(0, F("Mesh minZ: %s, maxZ: %s"), - dtostrf(min, 1, 2, str_1), - dtostrf(max, 1, 2, str_2) - ); + ui.status_printf(0, F("Mesh minZ: %s, maxZ: %s"), dtostrf(min, 1, 2, str_1), dtostrf(max, 1, 2, str_2)); #endif } -void Draw_MeshViewer() { MeshViewer.Draw(true); } +void Draw_MeshViewer() { MeshViewer.Draw(true, meshredraw); } + void onClick_MeshViewer() { if (hmiFlag.select_flag) SaveMesh(); HMI_ReturnScreen(); } -void Goto_MeshViewer() { if (leveling_is_valid()) Goto_Popup(Draw_MeshViewer, onClick_MeshViewer); else HMI_ReturnScreen(); } + +void Goto_MeshViewer(const bool redraw) { + meshredraw = redraw; + if (leveling_is_valid()) Goto_Popup(Draw_MeshViewer, onClick_MeshViewer); + else HMI_ReturnScreen(); +} #endif // DWIN_LCD_PROUI && HAS_MESH diff --git a/Marlin/src/lcd/e3v2/proui/meshviewer.h b/Marlin/src/lcd/e3v2/proui/meshviewer.h index 3aafe16984..1f45a83480 100644 --- a/Marlin/src/lcd/e3v2/proui/meshviewer.h +++ b/Marlin/src/lcd/e3v2/proui/meshviewer.h @@ -24,17 +24,19 @@ /** * Mesh Viewer for PRO UI * Author: Miguel A. Risco-Castillo (MRISCOC) - * version: 3.14.1 - * Date: 2022/04/11 + * version: 4.2.1 + * Date: 2023/05/05 */ class MeshViewerClass { public: - float max, min; - void Draw(bool withsave = false); - void DrawMesh(bed_mesh_t zval, const uint8_t sizex, const uint8_t sizey); + static float max, min; + static void DrawMeshGrid(const uint8_t csizex, const uint8_t csizey); + static void DrawMeshPoint(const uint8_t x, const uint8_t y, const float z); + static void Draw(const bool withsave=false, const bool redraw=true); + static void DrawMesh(const bed_mesh_t zval, const uint8_t csizex, const uint8_t csizey); }; extern MeshViewerClass MeshViewer; -void Goto_MeshViewer(); +void Goto_MeshViewer(const bool redraw); diff --git a/Marlin/src/lcd/e3v2/proui/plot.cpp b/Marlin/src/lcd/e3v2/proui/plot.cpp index 94f0dc055e..45341ae624 100644 --- a/Marlin/src/lcd/e3v2/proui/plot.cpp +++ b/Marlin/src/lcd/e3v2/proui/plot.cpp @@ -23,20 +23,18 @@ /** * DWIN Single var plot * Author: Miguel A. Risco-Castillo - * Version: 2.1.2 - * Date: 2022/11/20 + * Version: 2.2.3 + * Date: 2023/01/29 */ #include "../../../inc/MarlinConfig.h" #if ALL(DWIN_LCD_PROUI, SHOW_TUNING_GRAPH) -#include "plot.h" +#include "dwin.h" #include "../../../core/types.h" #include "../../marlinui.h" -#include "dwin_lcd.h" -#include "dwinui.h" -#include "dwin.h" +#include "plot.h" #define Plot_Bg_Color RGB( 1, 12, 8) @@ -46,7 +44,7 @@ uint16_t grphpoints, r, x2, y2 = 0; frame_rect_t grphframe = {0}; float scale = 0; -void PlotClass::Draw(const frame_rect_t &frame, const celsius_t max, const_float_t ref/*=0*/) { +void PlotClass::Draw(const frame_rect_t &frame, const_float_t max, const_float_t ref/*=0*/) { grphframe = frame; grphpoints = 0; scale = frame.h / max; diff --git a/Marlin/src/lcd/e3v2/proui/plot.h b/Marlin/src/lcd/e3v2/proui/plot.h index 14e7058b01..144ba0073b 100644 --- a/Marlin/src/lcd/e3v2/proui/plot.h +++ b/Marlin/src/lcd/e3v2/proui/plot.h @@ -24,15 +24,15 @@ /** * DWIN Single var plot * Author: Miguel A. Risco-Castillo - * Version: 2.1.2 - * Date: 2022/11/20 + * Version: 2.2.3 + * Date: 2023/01/29 */ #include "dwinui.h" class PlotClass { public: - static void Draw(const frame_rect_t &frame, const celsius_t max, const_float_t ref=0); + static void Draw(const frame_rect_t &frame, const_float_t max, const_float_t ref=0); static void Update(const_float_t value); }; diff --git a/Marlin/src/lcd/e3v2/proui/printstats.cpp b/Marlin/src/lcd/e3v2/proui/printstats.cpp index b99916dce1..093040ebf4 100644 --- a/Marlin/src/lcd/e3v2/proui/printstats.cpp +++ b/Marlin/src/lcd/e3v2/proui/printstats.cpp @@ -23,7 +23,7 @@ /** * Print Stats page for PRO UI * Author: Miguel A. Risco-Castillo (MRISCOC) - * Version: 1.4.2 + * Version: 1.4.0 * Date: 2022/12/03 */ @@ -37,10 +37,8 @@ #include "../../../MarlinCore.h" #include "../../marlinui.h" #include "../../../module/printcounter.h" -#include "dwin_lcd.h" -#include "dwinui.h" -#include "dwin_popup.h" #include "dwin.h" +#include "dwin_popup.h" PrintStatsClass PrintStats; diff --git a/Marlin/src/lcd/e3v2/proui/printstats.h b/Marlin/src/lcd/e3v2/proui/printstats.h index 4a38306886..aadb3e8dce 100644 --- a/Marlin/src/lcd/e3v2/proui/printstats.h +++ b/Marlin/src/lcd/e3v2/proui/printstats.h @@ -24,7 +24,7 @@ /** * Print Stats page for PRO UI * Author: Miguel A. Risco-Castillo (MRISCOC) - * Version: 1.4.2 + * Version: 1.4.0 * Date: 2022/12/03 */ diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h index 3f17ca1453..c78942bff6 100644 --- a/Marlin/src/lcd/language/language_de.h +++ b/Marlin/src/lcd/language/language_de.h @@ -68,12 +68,12 @@ namespace Language_de { LSTR MSG_FILAMENT_SET = _UxGT("Fila. Einstellungen"); LSTR MSG_FILAMENT_MAN = _UxGT("Filament Management"); LSTR MSG_MANUAL_LEVELING = _UxGT("Manuell Nivellierung"); - LSTR MSG_LEVBED_FL = _UxGT("Vorne Links"); - LSTR MSG_LEVBED_FR = _UxGT("Vorne Rechts"); - LSTR MSG_LEVBED_C = _UxGT("Mitte"); - LSTR MSG_LEVBED_BL = _UxGT("Hinten Links"); - LSTR MSG_LEVBED_BR = _UxGT("Hinten Rechts"); - LSTR MSG_MANUAL_MESH = _UxGT("manuelles Netz"); + LSTR MSG_TRAM_FL = _UxGT("Vorne Links"); + LSTR MSG_TRAM_FR = _UxGT("Vorne Rechts"); + LSTR MSG_TRAM_C = _UxGT("Mitte"); + LSTR MSG_TRAM_BL = _UxGT("Hinten Links"); + LSTR MSG_TRAM_BR = _UxGT("Hinten Rechts"); + LSTR MSG_MANUAL_MESH = _UxGT("Manuelles Netz"); LSTR MSG_AUTO_MESH = _UxGT("Netz auto. erstellen"); LSTR MSG_AUTO_Z_ALIGN = _UxGT("Z-Achsen ausgleichen"); LSTR MSG_ITERATION = _UxGT("G34 Iteration: %i"); diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 1876b26038..c171338f19 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -64,6 +64,8 @@ namespace Language_en { LSTR MSG_MEDIA_READ_ERROR = MEDIA_TYPE_EN _UxGT(" read error"); LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB device removed"); LSTR MSG_MEDIA_USB_FAILED = _UxGT("USB start failed"); + LSTR MSG_MEDIA_SORT = _UxGT("Sort ") MEDIA_TYPE_EN; + LSTR MSG_MEDIA_UPDATE = MEDIA_TYPE_EN _UxGT(" Update"); LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Subcall Overflow"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops"); @@ -86,11 +88,11 @@ namespace Language_en { LSTR MSG_FILAMENT_SET = _UxGT("Filament Settings"); LSTR MSG_FILAMENT_MAN = _UxGT("Filament Management"); LSTR MSG_MANUAL_LEVELING = _UxGT("Manual Leveling"); - LSTR MSG_LEVBED_FL = _UxGT("Front Left"); - LSTR MSG_LEVBED_FR = _UxGT("Front Right"); - LSTR MSG_LEVBED_C = _UxGT("Center"); - LSTR MSG_LEVBED_BL = _UxGT("Back Left"); - LSTR MSG_LEVBED_BR = _UxGT("Back Right"); + LSTR MSG_TRAM_FL = _UxGT("Front Left"); + LSTR MSG_TRAM_FR = _UxGT("Front Right"); + LSTR MSG_TRAM_C = _UxGT("Center"); + LSTR MSG_TRAM_BL = _UxGT("Back Left"); + LSTR MSG_TRAM_BR = _UxGT("Back Right"); LSTR MSG_MANUAL_MESH = _UxGT("Manual Mesh"); LSTR MSG_AUTO_MESH = _UxGT("Auto Build Mesh"); LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto Z-Align"); @@ -187,6 +189,7 @@ namespace Language_en { LSTR MSG_MESH_CENTER = _UxGT("Center Area"); LSTR MSG_MESH_EDIT_Z = _UxGT("Z Value"); LSTR MSG_MESH_CANCEL = _UxGT("Mesh cancelled"); + LSTR MSG_MESH_RESET = _UxGT("Mesh reset"); LSTR MSG_CUSTOM_COMMANDS = _UxGT("Custom Commands"); LSTR MSG_M48_TEST = _UxGT("M48 Probe Test"); LSTR MSG_M48_POINT = _UxGT("M48 Point"); @@ -364,7 +367,7 @@ namespace Language_en { LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Autotune *"); LSTR MSG_PID_CYCLE = _UxGT("PID Cycles"); LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID tuning done"); - LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("PID Autotune failed!"); + LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Autotune failed!"); LSTR MSG_BAD_HEATER_ID = _UxGT("Bad extruder."); LSTR MSG_TEMP_TOO_HIGH = _UxGT("Temperature too high."); LSTR MSG_TIMEOUT = _UxGT("Timeout."); @@ -395,6 +398,7 @@ namespace Language_en { LSTR MSG_VN_JERK = _UxGT("Max @ Jerk"); LSTR MSG_VE_JERK = _UxGT("Max E Jerk"); LSTR MSG_JUNCTION_DEVIATION = _UxGT("Junction Dev"); + LSTR MSG_STEP_SMOOTHING = _UxGT("Step Smoothing"); LSTR MSG_MAX_SPEED = _UxGT("Max Speed (mm/s)"); LSTR MSG_VMAX_A = _UxGT("Max ") STR_A _UxGT(" Speed"); LSTR MSG_VMAX_B = _UxGT("Max ") STR_B _UxGT(" Speed"); @@ -418,6 +422,12 @@ namespace Language_en { LSTR MSG_SHAPING_DISABLE = _UxGT("Disable @ shaping"); LSTR MSG_SHAPING_FREQ = _UxGT("@ frequency"); LSTR MSG_SHAPING_ZETA = _UxGT("@ damping"); + LSTR MSG_SHAPING_A_FREQ = STR_A _UxGT(" frequency"); + LSTR MSG_SHAPING_B_FREQ = STR_B _UxGT(" frequency"); + LSTR MSG_SHAPING_A_ZETA = STR_A _UxGT(" damping "); + LSTR MSG_SHAPING_B_ZETA = STR_B _UxGT(" damping "); + LSTR MSG_SHAPING_X_ENABLE = _UxGT("Enable X shaping"); + LSTR MSG_SHAPING_Y_ENABLE = _UxGT("Enable Y shaping"); LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("XY Freq Limit"); LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Min FR Factor"); LSTR MSG_STEPS_PER_MM = _UxGT("Steps/mm"); @@ -460,7 +470,7 @@ namespace Language_en { LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: EEPROM Version"); LSTR MSG_ERR_EEPROM_CORRUPT = _UxGT("Err: EEPROM Corrupt"); LSTR MSG_SETTINGS_STORED = _UxGT("Settings Stored"); - LSTR MSG_MEDIA_UPDATE = MEDIA_TYPE_EN _UxGT(" Update"); + LSTR MSG_HAS_PREVIEW = _UxGT("Has preview"); LSTR MSG_RESET_PRINTER = _UxGT("Reset Printer"); LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Refresh"); LSTR MSG_INFO_SCREEN = _UxGT("Info Screen"); @@ -507,7 +517,7 @@ namespace Language_en { LSTR MSG_CANCEL_OBJECT = _UxGT("Cancel Object"); LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Object {"); LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Continue Print Job"); - LSTR MSG_MEDIA_MENU = _UxGT("Print from ") MEDIA_TYPE_EN; + LSTR MSG_MEDIA_MENU = _UxGT("Select from ") MEDIA_TYPE_EN; LSTR MSG_TURN_OFF = _UxGT("Turn off the printer"); LSTR MSG_END_LOOPS = _UxGT("End Repeat Loops"); #else @@ -826,6 +836,10 @@ namespace Language_en { #endif LSTR MSG_TMC_DRIVERS = _UxGT("TMC Drivers"); LSTR MSG_TMC_CURRENT = _UxGT("Driver Current"); + LSTR MSG_TMC_ACURRENT = STR_A _UxGT("Driver Current"); + LSTR MSG_TMC_BCURRENT = STR_B _UxGT("Driver Current"); + LSTR MSG_TMC_CCURRENT = STR_C _UxGT("Driver Current"); + LSTR MSG_TMC_ECURRENT = _UxGT("E Driver Current"); LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hybrid Threshold"); LSTR MSG_TMC_HOMING_THRS = _UxGT("Sensorless Homing"); LSTR MSG_TMC_STEPPING_MODE = _UxGT("Stepping Mode"); diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index 55f1ac3b48..054a71d6c0 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -81,11 +81,11 @@ namespace Language_it { LSTR MSG_FILAMENT_SET = _UxGT("Impostaz.filamento"); LSTR MSG_FILAMENT_MAN = _UxGT("Gestione filamento"); LSTR MSG_MANUAL_LEVELING = _UxGT("Livel.manuale"); - LSTR MSG_LEVBED_FL = _UxGT("Davanti Sinistra"); - LSTR MSG_LEVBED_FR = _UxGT("Davanti Destra"); - LSTR MSG_LEVBED_C = _UxGT("Centro"); - LSTR MSG_LEVBED_BL = _UxGT("Dietro Sinistra"); - LSTR MSG_LEVBED_BR = _UxGT("Dietro Destra"); + LSTR MSG_TRAM_FL = _UxGT("Davanti Sinistra"); + LSTR MSG_TRAM_FR = _UxGT("Davanti Destra"); + LSTR MSG_TRAM_C = _UxGT("Centro"); + LSTR MSG_TRAM_BL = _UxGT("Dietro Sinistra"); + LSTR MSG_TRAM_BR = _UxGT("Dietro Destra"); LSTR MSG_MANUAL_MESH = _UxGT("Mesh Manuale"); LSTR MSG_AUTO_MESH = _UxGT("Generaz.Autom.Mesh"); LSTR MSG_AUTO_Z_ALIGN = _UxGT("Allineam.automat. Z"); diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index a8db7852cc..7e00467fa1 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -894,11 +894,11 @@ namespace Language_ru { LSTR MSG_FILAMENT_MAN = _UxGT("Управл.филаментом"); #endif LSTR MSG_MANUAL_LEVELING = _UxGT("Ручное выравнивание"); - LSTR MSG_LEVBED_FL = _UxGT("Передний левый"); - LSTR MSG_LEVBED_FR = _UxGT("Передний правый"); - LSTR MSG_LEVBED_C = _UxGT("Центр"); - LSTR MSG_LEVBED_BL = _UxGT("Задний левый"); - LSTR MSG_LEVBED_BR = _UxGT("Задний правый"); + LSTR MSG_TRAM_FL = _UxGT("Передний левый"); + LSTR MSG_TRAM_FR = _UxGT("Передний правый"); + LSTR MSG_TRAM_C = _UxGT("Центр"); + LSTR MSG_TRAM_BL = _UxGT("Задний левый"); + LSTR MSG_TRAM_BR = _UxGT("Задний правый"); LSTR MSG_MANUAL_MESH = _UxGT("Сетка вручную"); LSTR MSG_AUTO_MESH = _UxGT("Сетка автоматически"); LSTR MSG_ERR_M428_TOO_FAR = _UxGT("Ошибка: слишком далеко!"); diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h index cea40d2406..5499a24942 100644 --- a/Marlin/src/lcd/language/language_sk.h +++ b/Marlin/src/lcd/language/language_sk.h @@ -82,11 +82,11 @@ namespace Language_sk { LSTR MSG_FILAMENT_SET = _UxGT("Nastav. filamentu"); LSTR MSG_FILAMENT_MAN = _UxGT("Správa filamentu"); LSTR MSG_MANUAL_LEVELING = _UxGT("Ručné rovnanie"); - LSTR MSG_LEVBED_FL = _UxGT("Ľavý predný"); - LSTR MSG_LEVBED_FR = _UxGT("Pravý predný"); - LSTR MSG_LEVBED_C = _UxGT("Stred"); - LSTR MSG_LEVBED_BL = _UxGT("Ľavý zadný"); - LSTR MSG_LEVBED_BR = _UxGT("Pravý zadný"); + LSTR MSG_TRAM_FL = _UxGT("Ľavý predný"); + LSTR MSG_TRAM_FR = _UxGT("Pravý predný"); + LSTR MSG_TRAM_C = _UxGT("Stred"); + LSTR MSG_TRAM_BL = _UxGT("Ľavý zadný"); + LSTR MSG_TRAM_BR = _UxGT("Pravý zadný"); LSTR MSG_MANUAL_MESH = _UxGT("Ručná mriežka"); LSTR MSG_AUTO_MESH = _UxGT("Automat. mriežka"); LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto-zarovn. Z"); diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h index 63c4185447..667db7b77a 100644 --- a/Marlin/src/lcd/language/language_tr.h +++ b/Marlin/src/lcd/language/language_tr.h @@ -71,11 +71,11 @@ namespace Language_tr { LSTR MSG_FILAMENT_SET = _UxGT("Filament Ayarları"); LSTR MSG_FILAMENT_MAN = _UxGT("Filament Yönetimi"); LSTR MSG_MANUAL_LEVELING = _UxGT("Manuel Seviyeleme"); - LSTR MSG_LEVBED_FL = _UxGT("Sol Ön"); - LSTR MSG_LEVBED_FR = _UxGT("Ön Sağ"); - LSTR MSG_LEVBED_C = _UxGT("Orta"); - LSTR MSG_LEVBED_BL = _UxGT("Arka Sol"); - LSTR MSG_LEVBED_BR = _UxGT("Arka Sağ"); + LSTR MSG_TRAM_FL = _UxGT("Sol Ön"); + LSTR MSG_TRAM_FR = _UxGT("Ön Sağ"); + LSTR MSG_TRAM_C = _UxGT("Orta"); + LSTR MSG_TRAM_BL = _UxGT("Arka Sol"); + LSTR MSG_TRAM_BR = _UxGT("Arka Sağ"); LSTR MSG_MANUAL_MESH = _UxGT("Manuel Mesh"); LSTR MSG_AUTO_MESH = _UxGT("Oto Mesh Oluştur"); LSTR MSG_AUTO_Z_ALIGN = _UxGT("Oto. Z-Hizalama"); diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index c2915eb418..50b8323838 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -2633,10 +2633,12 @@ hal_timer_t Stepper::block_phase_isr() { oversampling_factor = 0; // Assume no axis smoothing (via oversampling) // Decide if axis smoothing is possible uint32_t max_rate = current_block->nominal_rate; // Get the step event rate - while (max_rate < MIN_STEP_ISR_FREQUENCY) { // As long as more ISRs are possible... - max_rate <<= 1; // Try to double the rate - if (max_rate < MIN_STEP_ISR_FREQUENCY) // Don't exceed the estimated ISR limit - ++oversampling_factor; // Increase the oversampling (used for left-shift) + if (TERN1(DWIN_LCD_PROUI, HMI_data.AdaptiveStepSmoothing)) { + while (max_rate < MIN_STEP_ISR_FREQUENCY) { // As long as more ISRs are possible... + max_rate <<= 1; // Try to double the rate + if (max_rate < MIN_STEP_ISR_FREQUENCY) // Don't exceed the estimated ISR limit + ++oversampling_factor; // Increase the oversampling (used for left-shift) + } } #endif diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index a1bebca4a0..11788c3cb1 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -910,7 +910,7 @@ volatile bool Temperature::raw_temps_ready = false; TERN_(PRINTER_EVENT_LEDS, printerEventLEDs.onPidTuningDone(color)); TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_DONE)); - TERN_(DWIN_PID_TUNE, DWIN_PidTuning(PID_DONE)); + TERN_(DWIN_PID_TUNE, DWIN_PidTuning(AUTOTUNE_DONE)); goto EXIT_M303; } @@ -928,7 +928,7 @@ volatile bool Temperature::raw_temps_ready = false; TERN_(PRINTER_EVENT_LEDS, printerEventLEDs.onPidTuningDone(color)); TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_DONE)); - TERN_(DWIN_PID_TUNE, DWIN_PidTuning(PID_DONE)); + TERN_(DWIN_PID_TUNE, DWIN_PidTuning(AUTOTUNE_DONE)); EXIT_M303: TERN_(TEMP_TUNING_MAINTAIN_FAN, adaptive_fan_slowing = true); @@ -1305,7 +1305,7 @@ volatile bool Temperature::raw_temps_ready = false; } SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_FINISHED); - TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(MPC_DONE)); + TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(AUTOTUNE_DONE)); SERIAL_ECHOLNPGM("MPC_BLOCK_HEAT_CAPACITY ", mpc.block_heat_capacity); SERIAL_ECHOLNPGM("MPC_SENSOR_RESPONSIVENESS ", p_float_t(mpc.sensor_responsiveness, 4)); @@ -4391,7 +4391,7 @@ void Temperature::isr() { // If wait_for_heatup is set, temperature was reached, no cancel if (wait_for_heatup) { wait_for_heatup = false; - #if HAS_DWIN_E3V2_BASIC + #if ENABLED(DWIN_CREALITY_LCD) hmiFlag.heat_flag = 0; duration_t elapsed = print_job_timer.duration(); // Print timer dwin_heat_time = elapsed.value; From 60f591f3b6e06fdef903e10f81ac96f65e30d78e Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 23 Jun 2023 12:11:03 +0000 Subject: [PATCH 575/659] [cron] Bump distribution date (2023-06-23) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 01854ff0d0..c48243e8b9 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-22" +//#define STRING_DISTRIBUTION_DATE "2023-06-23" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 2a14e27536..f86372c103 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-22" + #define STRING_DISTRIBUTION_DATE "2023-06-23" #endif /** From 9bf95418a7fbc0da0a6dc8bfb5024b624b94a51a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 24 Jun 2023 02:57:58 -0500 Subject: [PATCH 576/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20TFT=5FLTDC::writeR?= =?UTF-8?q?eg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25939 --- Marlin/src/HAL/LPC1768/tft/tft_spi.cpp | 4 ++-- Marlin/src/HAL/LPC1768/tft/tft_spi.h | 4 ++-- Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h | 4 ++-- Marlin/src/HAL/STM32/tft/tft_fsmc.cpp | 6 +++--- Marlin/src/HAL/STM32/tft/tft_fsmc.h | 4 ++-- Marlin/src/HAL/STM32/tft/tft_ltdc.cpp | 6 +----- Marlin/src/HAL/STM32/tft/tft_ltdc.h | 4 ++-- Marlin/src/HAL/STM32/tft/tft_spi.cpp | 4 ++-- Marlin/src/HAL/STM32/tft/tft_spi.h | 4 ++-- Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp | 10 +++++----- Marlin/src/HAL/STM32F1/tft/tft_fsmc.h | 4 ++-- Marlin/src/HAL/STM32F1/tft/tft_spi.cpp | 4 ++-- Marlin/src/HAL/STM32F1/tft/tft_spi.h | 4 ++-- .../src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp | 4 ++-- Marlin/src/lcd/tft/tft.h | 2 +- Marlin/src/lcd/tft_io/tft_io.h | 2 +- 16 files changed, 33 insertions(+), 37 deletions(-) diff --git a/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp b/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp index 440e9f8598..2342de002d 100644 --- a/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp +++ b/Marlin/src/HAL/LPC1768/tft/tft_spi.cpp @@ -63,7 +63,7 @@ uint32_t TFT_SPI::getID() { return id; } -uint32_t TFT_SPI::readID(uint16_t reg) { +uint32_t TFT_SPI::readID(const uint16_t inReg) { uint32_t data = 0; #if PIN_EXISTS(TFT_MISO) @@ -72,7 +72,7 @@ uint32_t TFT_SPI::readID(uint16_t reg) { SPIx.setClock(SPI_CLOCK_DIV64); SPIx.begin(); WRITE(TFT_CS_PIN, LOW); - writeReg(reg); + writeReg(inReg); for (uint8_t i = 0; i < 4; ++i) { SPIx.read((uint8_t*)&d, 1); diff --git a/Marlin/src/HAL/LPC1768/tft/tft_spi.h b/Marlin/src/HAL/LPC1768/tft/tft_spi.h index 884bcaed04..0ebb29dd60 100644 --- a/Marlin/src/HAL/LPC1768/tft/tft_spi.h +++ b/Marlin/src/HAL/LPC1768/tft/tft_spi.h @@ -56,7 +56,7 @@ class TFT_SPI { private: - static uint32_t readID(uint16_t reg); + static uint32_t readID(const uint16_t inReg); static void transmit(uint16_t data); static void transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count); static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count); @@ -74,7 +74,7 @@ public: static void dataTransferAbort(); static void writeData(uint16_t data) { transmit(data); } - static void writeReg(uint16_t reg) { WRITE(TFT_DC_PIN, LOW); transmit(reg); WRITE(TFT_DC_PIN, HIGH); } + static void writeReg(const uint16_t inReg) { WRITE(TFT_DC_PIN, LOW); transmit(inReg); WRITE(TFT_DC_PIN, HIGH); } static void writeSequence_DMA(uint16_t *data, uint16_t count) { transmitDMA(DMA_MINC_ENABLE, data, count); } static void writeMultiple_DMA(uint16_t color, uint16_t count) { static uint16_t data; data = color; transmitDMA(DMA_MINC_DISABLE, &data, count); } diff --git a/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h b/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h index df7b942099..c388f3288b 100644 --- a/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h +++ b/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h @@ -40,7 +40,7 @@ class TFT_SPI { private: - static uint32_t readID(uint16_t reg); + static uint32_t readID(const uint16_t inReg); static void transmit(uint16_t data); static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count); @@ -57,7 +57,7 @@ public: static void dataTransferAbort(); static void writeData(uint16_t data); - static void writeReg(uint16_t reg); + static void writeReg(const uint16_t inReg); static void writeSequence_DMA(uint16_t *data, uint16_t count) { writeSequence(data, count); } static void writeMultiple_DMA(uint16_t color, uint16_t count) { writeMultiple(color, count); } diff --git a/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp b/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp index 35606460ac..8e4f97d0a3 100644 --- a/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp +++ b/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp @@ -135,11 +135,11 @@ uint32_t TFT_FSMC::getID() { return id; } -uint32_t TFT_FSMC::readID(tft_data_t reg) { +uint32_t TFT_FSMC::readID(const tft_data_t inReg) { uint32_t id; - writeReg(reg); + writeReg(inReg); id = LCD->RAM; // dummy read - id = reg << 24; + id = inReg << 24; id |= (LCD->RAM & 0x00FF) << 16; id |= (LCD->RAM & 0x00FF) << 8; id |= LCD->RAM & 0x00FF; diff --git a/Marlin/src/HAL/STM32/tft/tft_fsmc.h b/Marlin/src/HAL/STM32/tft/tft_fsmc.h index 1b0a45ff79..e710e5511c 100644 --- a/Marlin/src/HAL/STM32/tft/tft_fsmc.h +++ b/Marlin/src/HAL/STM32/tft/tft_fsmc.h @@ -62,7 +62,7 @@ class TFT_FSMC { static LCD_CONTROLLER_TypeDef *LCD; - static uint32_t readID(tft_data_t reg); + static uint32_t readID(const tft_data_t reg); static void transmit(tft_data_t data) { LCD->RAM = data; __DSB(); } static void transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count); static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count); @@ -77,7 +77,7 @@ class TFT_FSMC { static void dataTransferEnd() {} static void writeData(uint16_t data) { transmit(tft_data_t(data)); } - static void writeReg(uint16_t reg) { LCD->REG = tft_data_t(reg); __DSB(); } + static void writeReg(const uint16_t inReg) { LCD->REG = tft_data_t(inReg); __DSB(); } static void writeSequence_DMA(uint16_t *data, uint16_t count) { transmitDMA(DMA_PINC_ENABLE, data, count); } static void writeMultiple_DMA(uint16_t color, uint16_t count) { static uint16_t data; data = color; transmitDMA(DMA_PINC_DISABLE, &data, count); } diff --git a/Marlin/src/HAL/STM32/tft/tft_ltdc.cpp b/Marlin/src/HAL/STM32/tft/tft_ltdc.cpp index ce47d2e1ec..3bbc39f20a 100644 --- a/Marlin/src/HAL/STM32/tft/tft_ltdc.cpp +++ b/Marlin/src/HAL/STM32/tft/tft_ltdc.cpp @@ -267,7 +267,7 @@ uint32_t TFT_LTDC::getID() { return 0xABAB; } -uint32_t TFT_LTDC::readID(tft_data_t reg) { +uint32_t TFT_LTDC::readID(const tft_data_t inReg) { return 0xABAB; } @@ -352,10 +352,6 @@ void TFT_LTDC::transmit(tft_data_t data) { } } -void TFT_LTDC::writeReg(uint16_t reg) { - reg = reg; -} - void TFT_LTDC::transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { while (x_cur != x_min && count) { diff --git a/Marlin/src/HAL/STM32/tft/tft_ltdc.h b/Marlin/src/HAL/STM32/tft/tft_ltdc.h index d4a254ba70..22c3a13778 100644 --- a/Marlin/src/HAL/STM32/tft/tft_ltdc.h +++ b/Marlin/src/HAL/STM32/tft/tft_ltdc.h @@ -43,7 +43,7 @@ class TFT_LTDC { static uint16_t x_min, x_max, y_min, y_max, x_cur, y_cur; static uint8_t reg; - static uint32_t readID(tft_data_t reg); + static uint32_t readID(const tft_data_t inReg); static uint16_t readPoint(uint16_t x, uint16_t y); static void drawPoint(uint16_t x, uint16_t y, uint16_t color); @@ -62,7 +62,7 @@ class TFT_LTDC { static void dataTransferEnd() {}; static void writeData(uint16_t data); - static void writeReg(uint16_t reg); + static void writeReg(const uint16_t inReg) { reg = inReg; } // Non-blocking DMA data transfer is not implemented for LTDC interface inline static void writeSequence_DMA(uint16_t *data, uint16_t count) { writeSequence(data, count); } diff --git a/Marlin/src/HAL/STM32/tft/tft_spi.cpp b/Marlin/src/HAL/STM32/tft/tft_spi.cpp index eebf366b8c..eb81a27bf1 100644 --- a/Marlin/src/HAL/STM32/tft/tft_spi.cpp +++ b/Marlin/src/HAL/STM32/tft/tft_spi.cpp @@ -145,7 +145,7 @@ uint32_t TFT_SPI::getID() { return id; } -uint32_t TFT_SPI::readID(uint16_t reg) { +uint32_t TFT_SPI::readID(const uint16_t inReg) { uint32_t data = 0; #if PIN_EXISTS(TFT_MISO) uint32_t BaudRatePrescaler = SPIx.Init.BaudRatePrescaler; @@ -153,7 +153,7 @@ uint32_t TFT_SPI::readID(uint16_t reg) { SPIx.Init.BaudRatePrescaler = SPIx.Instance == SPI1 ? SPI_BAUDRATEPRESCALER_8 : SPI_BAUDRATEPRESCALER_4; dataTransferBegin(DATASIZE_8BIT); - writeReg(reg); + writeReg(inReg); if (SPIx.Init.Direction == SPI_DIRECTION_1LINE) SPI_1LINE_RX(&SPIx); __HAL_SPI_ENABLE(&SPIx); diff --git a/Marlin/src/HAL/STM32/tft/tft_spi.h b/Marlin/src/HAL/STM32/tft/tft_spi.h index 09f0e08107..0535113b16 100644 --- a/Marlin/src/HAL/STM32/tft/tft_spi.h +++ b/Marlin/src/HAL/STM32/tft/tft_spi.h @@ -46,7 +46,7 @@ private: static SPI_HandleTypeDef SPIx; static DMA_HandleTypeDef DMAtx; - static uint32_t readID(uint16_t reg); + static uint32_t readID(const uint16_t inReg); static void transmit(uint16_t data); static void transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count); static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count); @@ -65,7 +65,7 @@ public: static void dataTransferAbort(); static void writeData(uint16_t data) { transmit(data); } - static void writeReg(uint16_t reg) { WRITE(TFT_A0_PIN, LOW); transmit(reg); WRITE(TFT_A0_PIN, HIGH); } + static void writeReg(const uint16_t inReg) { WRITE(TFT_A0_PIN, LOW); transmit(inReg); WRITE(TFT_A0_PIN, HIGH); } static void writeSequence_DMA(uint16_t *data, uint16_t count) { transmitDMA(DMA_MINC_ENABLE, data, count); } static void writeMultiple_DMA(uint16_t color, uint16_t count) { static uint16_t data; data = color; transmitDMA(DMA_MINC_DISABLE, &data, count); } diff --git a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp index a910cd5af0..51f70b9365 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp +++ b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.cpp @@ -186,8 +186,8 @@ void TFT_FSMC::transmit(uint16_t data) { __DSB(); } -void TFT_FSMC::writeReg(uint16_t reg) { - LCD->REG = reg; +void TFT_FSMC::writeReg(const uint16_t inReg) { + LCD->REG = inReg; __DSB(); } @@ -205,11 +205,11 @@ uint32_t TFT_FSMC::getID() { return id; } - uint32_t TFT_FSMC::readID(uint16_t reg) { + uint32_t TFT_FSMC::readID(const uint16_t inReg) { uint32_t id; - writeReg(reg); + writeReg(inReg); id = LCD->RAM; // dummy read - id = reg << 24; + id = inReg << 24; id |= (LCD->RAM & 0x00FF) << 16; id |= (LCD->RAM & 0x00FF) << 8; id |= LCD->RAM & 0x00FF; diff --git a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h index 0e74ce2c2b..67a2b9cd53 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h +++ b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h @@ -54,7 +54,7 @@ class TFT_FSMC { private: static LCD_CONTROLLER_TypeDef *LCD; - static uint32_t readID(uint16_t reg); + static uint32_t readID(const uint16_t inReg); static void transmit(uint16_t data); static void transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count); static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count); @@ -69,7 +69,7 @@ class TFT_FSMC { static void dataTransferEnd() {}; static void writeData(uint16_t data) { transmit(data); } - static void writeReg(uint16_t reg); + static void writeReg(const uint16_t inReg); static void writeSequence_DMA(uint16_t *data, uint16_t count) { transmitDMA(DMA_PINC_ENABLE, data, count); } static void writeMultiple_DMA(uint16_t color, uint16_t count) { static uint16_t data; data = color; transmitDMA(DMA_PINC_DISABLE, &data, count); } diff --git a/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp b/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp index 18d5644437..f26103b25d 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp +++ b/Marlin/src/HAL/STM32F1/tft/tft_spi.cpp @@ -93,13 +93,13 @@ uint32_t TFT_SPI::getID() { return id; } -uint32_t TFT_SPI::readID(uint16_t reg) { +uint32_t TFT_SPI::readID(const uint16_t inReg) { uint32_t data = 0; #if PIN_EXISTS(TFT_MISO) SPIx.setClockDivider(SPI_CLOCK_DIV16); dataTransferBegin(DATASIZE_8BIT); - writeReg(reg); + writeReg(inReg); for (uint8_t i = 0; i < 4; ++i) { uint8_t d; diff --git a/Marlin/src/HAL/STM32F1/tft/tft_spi.h b/Marlin/src/HAL/STM32F1/tft/tft_spi.h index d0c2e50486..5a57081c2a 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_spi.h +++ b/Marlin/src/HAL/STM32F1/tft/tft_spi.h @@ -63,7 +63,7 @@ class TFT_SPI { private: - static uint32_t readID(uint16_t reg); + static uint32_t readID(const uint16_t inReg); static void transmit(uint16_t data); static void transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count); static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count); @@ -81,7 +81,7 @@ public: static void dataTransferAbort(); static void writeData(uint16_t data) { transmit(data); } - static void writeReg(uint16_t reg) { WRITE(TFT_DC_PIN, LOW); transmit(reg); WRITE(TFT_DC_PIN, HIGH); } + static void writeReg(const uint16_t inReg) { WRITE(TFT_DC_PIN, LOW); transmit(inReg); WRITE(TFT_DC_PIN, HIGH); } static void writeSequence_DMA(uint16_t *data, uint16_t count) { transmitDMA(DMA_MINC_ENABLE, data, count); } static void writeMultiple_DMA(uint16_t color, uint16_t count) { static uint16_t data; data = color; transmitDMA(DMA_MINC_DISABLE, &data, count); } diff --git a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp index d16693cee4..160ee44122 100644 --- a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp +++ b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp @@ -136,8 +136,8 @@ TFT_IO tftio; #define TFT_BTOKMENU_COLOR COLOR_RED #endif -static void setWindow(u8g_t *u8g, u8g_dev_t *dev, uint16_t Xmin, uint16_t Ymin, uint16_t Xmax, uint16_t Ymax) { - tftio.set_window(Xmin, Ymin, Xmax, Ymax); +static void setWindow(u8g_t *u8g, u8g_dev_t *dev, uint16_t xMin, uint16_t yMin, uint16_t xMax, uint16_t yMax) { + tftio.set_window(xMin, yMin, xMax, yMax); } #if HAS_TOUCH_BUTTONS diff --git a/Marlin/src/lcd/tft/tft.h b/Marlin/src/lcd/tft/tft.h index 4a1d1d8304..15464cb045 100644 --- a/Marlin/src/lcd/tft/tft.h +++ b/Marlin/src/lcd/tft/tft.h @@ -72,7 +72,7 @@ class TFT { static void abort() { io.abort(); } static void write_multiple(uint16_t data, uint16_t count) { io.WriteMultipleDMA(data, count); } static void write_sequence(uint16_t *data, uint16_t count) { io.writeSequenceDMA(data, count); } - static void set_window(uint16_t Xmin, uint16_t Ymin, uint16_t Xmax, uint16_t Ymax) { io.set_window(Xmin, Ymin, Xmax, Ymax); } + static void set_window(uint16_t xMin, uint16_t yMin, uint16_t xMax, uint16_t yMax) { io.set_window(xMin, yMin, xMax, yMax); } static void fill(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color) { queue.fill(x, y, width, height, color); } static void canvas(uint16_t x, uint16_t y, uint16_t width, uint16_t height) { queue.canvas(x, y, width, height); } diff --git a/Marlin/src/lcd/tft_io/tft_io.h b/Marlin/src/lcd/tft_io/tft_io.h index cbe554436e..b0d9421202 100644 --- a/Marlin/src/lcd/tft_io/tft_io.h +++ b/Marlin/src/lcd/tft_io/tft_io.h @@ -64,7 +64,7 @@ public: inline static void dataTransferEnd() { io.dataTransferEnd(); } inline static void writeData(uint16_t data) { io.writeData(data); } - inline static void writeReg(uint16_t reg) { io.writeReg(reg); } + inline static void writeReg(const uint16_t inReg) { io.writeReg(inReg); } // Blocking IO used by TFT_CLASSIC_UI and TFT_LVGL_UI // These functions start data transfer and WAIT for data transfer completion From a256e47b9c282bd69cd9d1d69970d41e9676e3dc Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 24 Jun 2023 12:07:28 +0000 Subject: [PATCH 577/659] [cron] Bump distribution date (2023-06-24) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index c48243e8b9..8509895ca8 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-23" +//#define STRING_DISTRIBUTION_DATE "2023-06-24" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index f86372c103..fc6cab153b 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-23" + #define STRING_DISTRIBUTION_DATE "2023-06-24" #endif /** From f281fb473d499d8805fb29d7dd13ec9ef6b10c41 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 25 Jun 2023 01:31:07 -0500 Subject: [PATCH 578/659] =?UTF-8?q?=F0=9F=8E=A8=20Minor=20code=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cocoa_press/files_screen.cpp | 2 +- .../cocoa_press/load_chocolate.cpp | 37 ++++++------------- .../cocoa_press/status_screen.cpp | 16 ++++---- .../lcd/extui/ia_creality/ia_creality_rts.cpp | 6 +-- Marlin/src/module/stepper/trinamic.h | 6 +-- 5 files changed, 27 insertions(+), 40 deletions(-) diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/files_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/files_screen.cpp index 581c337428..f058b40e03 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/files_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/files_screen.cpp @@ -77,7 +77,7 @@ const char *FilesScreen::getSelectedFilename(bool shortName) { } void FilesScreen::drawSelectedFile() { - if(mydata.selected_tag == 0xFF) return; + if (mydata.selected_tag == 0xFF) return; FileList files; files.seek(getSelectedFileIndex(), true); mydata.flags.is_dir = files.isDir(); diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp index 95ddf7d387..c7870eeaf8 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp @@ -54,11 +54,10 @@ void LoadChocolateScreen::draw_buttons(draw_mode_t what) { cmd.tag(3).colors(mydata.repeat_tag == 6 ? action_btn : normal_btn).button(x, y, h, v, GET_TEXT_F(MSG_LOAD)); ui.bounds(POLY(load_screen_start_stop_btn), x, y, h, v); - if(mydata.repeat_tag == 0) { - cmd.colors(normal_btn).enabled(false); - } else { - cmd.colors(mydata.repeating ? action_btn : normal_btn).enabled(true); - } + if (mydata.repeat_tag == 0) + cmd.colors(normal_btn).enabled(false); + else + cmd.colors(mydata.repeating ? action_btn : normal_btn).enabled(true); cmd.tag(4).button(x, y, h, v, GET_TEXT_F(MSG_START_STOP)); ui.bounds(POLY(load_screen_back_btn), x, y, h, v); @@ -115,24 +114,16 @@ void LoadChocolateScreen::onRedraw(draw_mode_t what) { } bool LoadChocolateScreen::onTouchStart(uint8_t tag) { - if(tag != 4) { - mydata.repeating = false; - } + if (tag != 4) mydata.repeating = false; return true; } bool LoadChocolateScreen::onTouchEnd(uint8_t tag) { using namespace ExtUI; switch (tag) { - case 2: - mydata.repeat_tag = 5; - break; - case 3: - mydata.repeat_tag = 6; - break; - case 4: - mydata.repeating = !mydata.repeating; - break; + case 2: mydata.repeat_tag = 5; break; + case 3: mydata.repeat_tag = 6; break; + case 4: mydata.repeating = !mydata.repeating; break; case 1: GOTO_PREVIOUS(); break; } return true; @@ -153,12 +144,8 @@ bool LoadChocolateScreen::onTouchHeld(uint8_t tag) { #define UI_INCREMENT_AXIS(axis) UI_INCREMENT(AxisPosition_mm, axis); #define UI_DECREMENT_AXIS(axis) UI_DECREMENT(AxisPosition_mm, axis); switch (tag) { - case 5: - UI_INCREMENT_AXIS(E0); - break; - case 6: - UI_DECREMENT_AXIS(E0); - break; + case 5: UI_INCREMENT_AXIS(E0); break; + case 6: UI_DECREMENT_AXIS(E0); break; default: return false; } #undef UI_DECREMENT_AXIS @@ -170,10 +157,10 @@ void LoadChocolateScreen::onIdle() { reset_menu_timeout(); if (mydata.repeating) onTouchHeld(mydata.repeat_tag); if (refresh_timer.elapsed(STATUS_UPDATE_INTERVAL)) { - if (!EventLoop::is_touch_held()) - onRefresh(); + if (!EventLoop::is_touch_held()) onRefresh(); refresh_timer.start(); } BaseScreen::onIdle(); } + #endif // COCOA_LOAD_CHOCOLATE_SCREEN diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/status_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/status_screen.cpp index eddf367239..1312d022c3 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/status_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/status_screen.cpp @@ -271,22 +271,23 @@ void StatusScreen::draw_file(draw_mode_t what) { if (what & FOREGROUND) { cmd.cmd(COLOR_RGB(bg_text_enabled)); - if(!isMediaInserted()) + if (!isMediaInserted()) draw_text_with_ellipsis(cmd, TEXT_POS(x, y, w, h), F("No media present"), OPT_CENTERY, font_small); - else if(isFileSelected()) { + else if (isFileSelected()) { FileList list; draw_text_with_ellipsis(cmd, TEXT_POS(x, y, w, h), list.filename(), OPT_CENTERY, font_small); - } else + } + else draw_text_with_ellipsis(cmd, TEXT_POS(x, y, w, h), F("No file selected"), OPT_CENTERY, font_small); } } bool StatusScreen::isFileSelected() { - if(!isMediaInserted()) return false; + if (!isMediaInserted()) return false; FileList list; - if(list.isDir()) return false; + if (list.isDir()) return false; const char *filename = list.filename(); - if(filename[0] == '\0') return false; + if (filename[0] == '\0') return false; return true; } @@ -368,8 +369,7 @@ void StatusScreen::setStatusMessage(const char * const) { void StatusScreen::onIdle() { reset_menu_timeout(); if (refresh_timer.elapsed(STATUS_UPDATE_INTERVAL)) { - if (!EventLoop::is_touch_held()) - onRefresh(); + if (!EventLoop::is_touch_held()) onRefresh(); refresh_timer.start(); } } diff --git a/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp b/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp index a64fa2ef20..6246b9f002 100644 --- a/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp +++ b/Marlin/src/lcd/extui/ia_creality/ia_creality_rts.cpp @@ -220,7 +220,7 @@ void RTS::onIdle() { break; case 3: - //if(isPositionKnown() && (getActualTemp_celsius(BED) >= (getTargetTemp_celsius(BED)-1))) { + //if (isPositionKnown() && (getActualTemp_celsius(BED) >= (getTargetTemp_celsius(BED)-1))) { rts.sendData(ExchangePageBase + 64, ExchangepageAddr); waitway = 7; //return; @@ -1559,7 +1559,7 @@ void RTS::handleData() { else if (recdat.data[0] == 2) { // Page Down if ((fileIndex + DISPLAY_FILES) < (filenavigator.maxFiles() + (filenavigator.folderdepth != 0))) { fileIndex = fileIndex + DISPLAY_FILES; - // if(filenavigator.folderdepth!=0 && fileIndex!=0) //Shift to acknowledge Return DIR button on first page + // if (filenavigator.folderdepth!=0 && fileIndex!=0) //Shift to acknowledge Return DIR button on first page // filenavigator.getFiles(fileIndex-1); // else filenavigator.getFiles(fileIndex); @@ -1569,7 +1569,7 @@ void RTS::handleData() { else if (recdat.data[0] == 3) { // Page Up if (fileIndex >= DISPLAY_FILES) { fileIndex = fileIndex - DISPLAY_FILES; - // if(filenavigator.folderdepth!=0 && fileIndex!=0) //Shift to acknowledge Return DIR button on first page + // if (filenavigator.folderdepth!=0 && fileIndex!=0) //Shift to acknowledge Return DIR button on first page // filenavigator.getFiles(filenavigator.currentindex-DISPLAY_FILES); // else filenavigator.getFiles(fileIndex); diff --git a/Marlin/src/module/stepper/trinamic.h b/Marlin/src/module/stepper/trinamic.h index d6de5cd002..a9832945a5 100644 --- a/Marlin/src/module/stepper/trinamic.h +++ b/Marlin/src/module/stepper/trinamic.h @@ -294,7 +294,7 @@ void reset_trinamic_drivers(); #define U_ENABLE_READ() stepperU.isEnabled() #endif #if AXIS_HAS_DEDGE(U) - #define U_STEP_WRITE(STATE) do{ if(STATE) TOGGLE(U_STEP_PIN); }while(0) + #define U_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(U_STEP_PIN); }while(0) #endif #endif @@ -308,7 +308,7 @@ void reset_trinamic_drivers(); #define V_ENABLE_READ() stepperV.isEnabled() #endif #if AXIS_HAS_DEDGE(V) - #define V_STEP_WRITE(STATE) do{ if(STATE) TOGGLE(V_STEP_PIN); }while(0) + #define V_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(V_STEP_PIN); }while(0) #endif #endif @@ -322,7 +322,7 @@ void reset_trinamic_drivers(); #define W_ENABLE_READ() stepperW.isEnabled() #endif #if AXIS_HAS_DEDGE(W) - #define W_STEP_WRITE(STATE) do{ if(STATE) TOGGLE(W_STEP_PIN); }while(0) + #define W_STEP_WRITE(STATE) do{ if (STATE) TOGGLE(W_STEP_PIN); }while(0) #endif #endif From 0138aff890c458f78b68aa21753bcf5d6e5bf488 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 25 Jun 2023 12:07:25 +0000 Subject: [PATCH 579/659] [cron] Bump distribution date (2023-06-25) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 8509895ca8..31fee4e788 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-24" +//#define STRING_DISTRIBUTION_DATE "2023-06-25" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index fc6cab153b..db14798c3e 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-24" + #define STRING_DISTRIBUTION_DATE "2023-06-25" #endif /** From 402c4ef5d3de2b22efd73111222ee7d1f1f6b25f Mon Sep 17 00:00:00 2001 From: Katelyn Schiesser Date: Sun, 25 Jun 2023 15:32:56 -0700 Subject: [PATCH 580/659] =?UTF-8?q?=F0=9F=9A=B8=20M86-M87=20Hotend=20Idle?= =?UTF-8?q?=20Timeout=20(#25015)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/feature/hotend_idle.cpp | 29 ++++---- Marlin/src/feature/hotend_idle.h | 17 ++++- Marlin/src/gcode/gcode.cpp | 7 ++ Marlin/src/gcode/gcode.h | 7 ++ Marlin/src/gcode/temp/M86-M87.cpp | 79 ++++++++++++++++++++++ Marlin/src/lcd/language/language_de.h | 2 +- Marlin/src/lcd/language/language_en.h | 5 +- Marlin/src/lcd/language/language_it.h | 2 +- Marlin/src/lcd/language/language_sk.h | 2 +- Marlin/src/lcd/menu/menu_configuration.cpp | 26 +++++++ Marlin/src/lcd/menu/menu_main.cpp | 4 ++ Marlin/src/module/settings.cpp | 37 +++++++++- ini/features.ini | 2 +- 13 files changed, 199 insertions(+), 20 deletions(-) create mode 100644 Marlin/src/gcode/temp/M86-M87.cpp diff --git a/Marlin/src/feature/hotend_idle.cpp b/Marlin/src/feature/hotend_idle.cpp index 4b137f42da..f64fe7e3cf 100644 --- a/Marlin/src/feature/hotend_idle.cpp +++ b/Marlin/src/feature/hotend_idle.cpp @@ -37,20 +37,25 @@ #include "../module/planner.h" #include "../lcd/marlinui.h" -extern HotendIdleProtection hotend_idle; +HotendIdleProtection hotend_idle; millis_t HotendIdleProtection::next_protect_ms = 0; +hotend_idle_settings_t HotendIdleProtection::cfg; // Initialized by settings.load() void HotendIdleProtection::check_hotends(const millis_t &ms) { + const bool busy = (TERN0(HAS_RESUME_CONTINUE, wait_for_user) || planner.has_blocks_queued()); bool do_prot = false; - HOTEND_LOOP() { - const bool busy = (TERN0(HAS_RESUME_CONTINUE, wait_for_user) || planner.has_blocks_queued()); - if (thermalManager.degHotend(e) >= (HOTEND_IDLE_MIN_TRIGGER) && !busy) { - do_prot = true; break; + if (!busy && cfg.timeout != 0) { + HOTEND_LOOP() { + if (thermalManager.degHotend(e) >= cfg.trigger) { + do_prot = true; break; + } } } - if (bool(next_protect_ms) != do_prot) - next_protect_ms = do_prot ? ms + hp_interval : 0; + if (!do_prot) + next_protect_ms = 0; // No hotends are hot so cancel timeout + else if (!next_protect_ms) // Timeout is possible? + next_protect_ms = ms + cfg.timeout * 1000; // Start timeout if not already set } void HotendIdleProtection::check_e_motion(const millis_t &ms) { @@ -58,7 +63,7 @@ void HotendIdleProtection::check_e_motion(const millis_t &ms) { if (old_e_position != current_position.e) { old_e_position = current_position.e; // Track filament motion if (next_protect_ms) // If some heater is on then... - next_protect_ms = ms + hp_interval; // ...delay the timeout till later + next_protect_ms = ms + cfg.timeout * 1000; // ...delay the timeout till later } } @@ -79,12 +84,12 @@ void HotendIdleProtection::timed_out() { SERIAL_ECHOLNPGM("Hotend Idle Timeout"); LCD_MESSAGE(MSG_HOTEND_IDLE_TIMEOUT); HOTEND_LOOP() { - if ((HOTEND_IDLE_NOZZLE_TARGET) < thermalManager.degTargetHotend(e)) - thermalManager.setTargetHotend(HOTEND_IDLE_NOZZLE_TARGET, e); + if (cfg.nozzle_target < thermalManager.degTargetHotend(e)) + thermalManager.setTargetHotend(cfg.nozzle_target, e); } #if HAS_HEATED_BED - if ((HOTEND_IDLE_BED_TARGET) < thermalManager.degTargetBed()) - thermalManager.setTargetBed(HOTEND_IDLE_BED_TARGET); + if (cfg.bed_target < thermalManager.degTargetBed()) + thermalManager.setTargetBed(cfg.bed_target); #endif } diff --git a/Marlin/src/feature/hotend_idle.h b/Marlin/src/feature/hotend_idle.h index 40f557d5ed..a4229153c9 100644 --- a/Marlin/src/feature/hotend_idle.h +++ b/Marlin/src/feature/hotend_idle.h @@ -21,13 +21,26 @@ */ #pragma once -#include "../core/millis_t.h" +#include "../inc/MarlinConfig.h" + +typedef struct { + int16_t timeout, trigger, nozzle_target; + #if HAS_HEATED_BED + int16_t bed_target; + #endif + void set_defaults() { + timeout = HOTEND_IDLE_TIMEOUT_SEC; + trigger = HOTEND_IDLE_MIN_TRIGGER; + nozzle_target = HOTEND_IDLE_NOZZLE_TARGET; + bed_target = HOTEND_IDLE_BED_TARGET; + } +} hotend_idle_settings_t; class HotendIdleProtection { public: static void check(); + static hotend_idle_settings_t cfg; private: - static constexpr millis_t hp_interval = SEC_TO_MS(HOTEND_IDLE_TIMEOUT_SEC); static millis_t next_protect_ms; static void check_hotends(const millis_t &ms); static void check_e_motion(const millis_t &ms); diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index cedcf97c51..468a9ef65f 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -658,8 +658,15 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 82: M82(); break; // M82: Set E axis normal mode (same as other axes) case 83: M83(); break; // M83: Set E axis relative mode #endif + case 18: case 84: M18_M84(); break; // M18/M84: Disable Steppers / Set Timeout case 85: M85(); break; // M85: Set inactivity stepper shutdown timeout + + #if ENABLED(HOTEND_IDLE_TIMEOUT) + case 86: M86(); break; // M86: Set Hotend Idle Timeout + case 87: M87(); break; // M87: Cancel Hotend Idle Timeout + #endif + case 92: M92(); break; // M92: Set the steps-per-unit for one or more axes case 114: M114(); break; // M114: Report current position case 115: M115(); break; // M115: Report capabilities diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 4bd0ec2fec..23f245faa1 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -711,6 +711,13 @@ private: #endif static void M85(); + + #if ENABLED(HOTEND_IDLE_TIMEOUT) + static void M86(); + static void M86_report(const bool forReplay=true); + static void M87(); + #endif + static void M92(); static void M92_report(const bool forReplay=true, const int8_t e=-1); diff --git a/Marlin/src/gcode/temp/M86-M87.cpp b/Marlin/src/gcode/temp/M86-M87.cpp new file mode 100644 index 0000000000..7fb4461961 --- /dev/null +++ b/Marlin/src/gcode/temp/M86-M87.cpp @@ -0,0 +1,79 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/** + * gcode/temp/M86-M87.cpp + * + * Hotend Idle Timeout + */ + +#include "../../inc/MarlinConfigPre.h" + +#if ENABLED(HOTEND_IDLE_TIMEOUT) + +#include "../gcode.h" +#include "../../feature/hotend_idle.h" + +void GcodeSuite::M86_report(const bool forReplay/*=true*/) { + hotend_idle_settings_t &c = hotend_idle.cfg; + report_heading(forReplay, F("Hotend Idle Timeout")); + SERIAL_ECHOLNPGM(" M86" + #if HAS_HEATED_BED + " B", c.bed_target, + #endif + " E", c.nozzle_target, + " S", c.timeout, + " T", c.trigger + ); +} + +/** + * M86: Set / Report Hotend Idle Timeout + * + * Parameters + * S : Idle timeout. Set to 0 to disable. + * E : Extruder idle temperature to set on timeout + * B : Bed idle temperature to set on timeout + * T : Minimum extruder temperature to consider for timeout (> idle temperature) + */ +void GcodeSuite::M86() { + if (!parser.seen_any()) return M86_report(); + hotend_idle_settings_t &c = hotend_idle.cfg; + if (parser.seenval('S')) c.timeout = parser.value_ushort(); + if (parser.seenval('T')) c.trigger = parser.value_celsius(); + if (parser.seenval('E')) c.nozzle_target = parser.value_celsius(); + #if HAS_HEATED_BED + if (parser.seenval('B')) c.bed_target = parser.value_celsius(); + #endif + const celsius_t min_trigger = c.nozzle_target + TEMP_HYSTERESIS; + if (c.trigger <= min_trigger) + SERIAL_ECHOLNPGM("?Idle Timeout (T) trigger temperature should be over ", min_trigger, "C."); +} + +/** + * M86: Cancel Hotend Idle Timeout (by setting the timeout period to 0) + */ +void GcodeSuite::M87() { + hotend_idle.cfg.timeout = 0; +} + +#endif // HOTEND_IDLE_TIMEOUT diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h index c78942bff6..33abdbee23 100644 --- a/Marlin/src/lcd/language/language_de.h +++ b/Marlin/src/lcd/language/language_de.h @@ -343,7 +343,7 @@ namespace Language_de { LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("PID Autotune fehlge.!"); LSTR MSG_BAD_HEATER_ID = _UxGT("ungültiger Extruder."); LSTR MSG_TEMP_TOO_HIGH = _UxGT("Temperatur zu hoch."); - LSTR MSG_TIMEOUT = _UxGT("Timeout."); + LSTR MSG_TIMEOUT = _UxGT("Timeout"); LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Autotune fehlge.! Ungültiger Extruder"); LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Autotune fehlge.! Temperatur zu hoch."); LSTR MSG_PID_TIMEOUT = _UxGT("Autotune fehlge.! Timeout."); diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index c171338f19..c5288ec9c0 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -370,7 +370,7 @@ namespace Language_en { LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Autotune failed!"); LSTR MSG_BAD_HEATER_ID = _UxGT("Bad extruder."); LSTR MSG_TEMP_TOO_HIGH = _UxGT("Temperature too high."); - LSTR MSG_TIMEOUT = _UxGT("Timeout."); + LSTR MSG_TIMEOUT = _UxGT("Timeout"); LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Autotune failed! Bad extruder."); LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Autotune failed! Temperature too high."); LSTR MSG_PID_TIMEOUT = _UxGT("Autotune failed! Timeout."); @@ -680,6 +680,9 @@ namespace Language_en { LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Runaway Watch: OFF"); LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Runaway Watch: ON"); LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Idle Timeout"); + LSTR MSG_HOTEND_IDLE_DISABLE = _UxGT("Disable Timeout"); + LSTR MSG_HOTEND_IDLE_NOZZLE_TARGET = _UxGT("Nozzle Idle Temp"); + LSTR MSG_HOTEND_IDLE_BED_TARGET = _UxGT("Bed Idle Temp"); LSTR MSG_FAN_SPEED_FAULT = _UxGT("Fan speed fault"); LSTR MSG_CASE_LIGHT = _UxGT("Case Light"); diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index 054a71d6c0..cbdd308f9b 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -364,7 +364,7 @@ namespace Language_it { LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Calibr.PID fallito!"); LSTR MSG_BAD_HEATER_ID = _UxGT("Estrusore invalido."); LSTR MSG_TEMP_TOO_HIGH = _UxGT("Temp.troppo alta."); - LSTR MSG_TIMEOUT = _UxGT("Tempo scaduto."); + LSTR MSG_TIMEOUT = _UxGT("Tempo scaduto"); LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Calibrazione fallita! Estrusore errato."); LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Calibrazione fallita! Temperatura troppo alta."); LSTR MSG_PID_TIMEOUT = _UxGT("Calibrazione fallita! Tempo scaduto."); diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h index 5499a24942..7dc1c5357e 100644 --- a/Marlin/src/lcd/language/language_sk.h +++ b/Marlin/src/lcd/language/language_sk.h @@ -363,7 +363,7 @@ namespace Language_sk { LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Kal. PID zlyhala!"); LSTR MSG_BAD_HEATER_ID = _UxGT("Zlý extrudér"); LSTR MSG_TEMP_TOO_HIGH = _UxGT("Príliš vysoká tepl."); - LSTR MSG_TIMEOUT = _UxGT("Čas vypršal."); + LSTR MSG_TIMEOUT = _UxGT("Čas vypršal"); LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Auto-kal. zlyhala! Zlý extrúder."); LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Auto-kal. zlyhala! Príliš vysoká tepl."); LSTR MSG_PID_TIMEOUT = _UxGT("Auto-kal. zlyhala! Čas vypršal."); diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index 32b6f15995..6318780abb 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -59,6 +59,10 @@ #include "../../libs/buzzer.h" #endif +#if ENABLED(HOTEND_IDLE_TIMEOUT) + #include "../../feature/hotend_idle.h" +#endif + #if ANY(LCD_PROGRESS_BAR_TEST, LCD_ENDSTOP_TEST) #include "../lcdprint.h" #define HAS_DEBUG_MENU 1 @@ -277,6 +281,24 @@ void menu_advanced_settings(); } #endif +#if ENABLED(HOTEND_IDLE_TIMEOUT) + + void menu_hotend_idle() { + hotend_idle_settings_t &c = hotend_idle.cfg; + START_MENU(); + BACK_ITEM(MSG_BACK); + + if (c.timeout) GCODES_ITEM(MSG_HOTEND_IDLE_DISABLE, F("M87")); + EDIT_ITEM(int3, MSG_TIMEOUT, &c.timeout, 0, 999); + EDIT_ITEM(int3, MSG_TEMPERATURE, &c.trigger, 0, HEATER_0_MAXTEMP); + EDIT_ITEM(int3, MSG_HOTEND_IDLE_NOZZLE_TARGET, &c.nozzle_target, 0, HEATER_0_MAXTEMP); + EDIT_ITEM(int3, MSG_HOTEND_IDLE_BED_TARGET, &c.bed_target, 0, BED_MAXTEMP); + + END_MENU(); + } + +#endif + #if ENABLED(DUAL_X_CARRIAGE) void menu_idex() { @@ -610,6 +632,10 @@ void menu_configuration() { #endif } + #if ENABLED(HOTEND_IDLE_TIMEOUT) + SUBMENU(MSG_HOTEND_IDLE_TIMEOUT, menu_hotend_idle); + #endif + // // Set single nozzle filament retract and prime length // diff --git a/Marlin/src/lcd/menu/menu_main.cpp b/Marlin/src/lcd/menu/menu_main.cpp index 4ccdb60bf1..5ad5d18c0e 100644 --- a/Marlin/src/lcd/menu/menu_main.cpp +++ b/Marlin/src/lcd/menu/menu_main.cpp @@ -100,6 +100,10 @@ void menu_configuration(); void menu_preheat_only(); #endif +#if ENABLED(HOTEND_IDLE_TIMEOUT) + void menu_hotend_idle(); +#endif + #if HAS_MULTI_LANGUAGE void menu_language(); #endif diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 16e0d10a09..fa434c1499 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -178,6 +178,10 @@ #include "../lcd/extui/dgus/DGUSDisplayDef.h" #endif +#if ENABLED(HOTEND_IDLE_TIMEOUT) + #include "../feature/hotend_idle.h" +#endif + #pragma pack(push, 1) // No padding between variables #if HAS_ETHERNET @@ -623,6 +627,13 @@ typedef struct SettingsDataStruct { shaping_y_zeta; // M593 Y D #endif + // + // HOTEND_IDLE_TIMEOUT + // + #if ENABLED(HOTEND_IDLE_TIMEOUT) + hotend_idle_settings_t hotend_idle_config; // M86 S T E B + #endif + } SettingsData; //static_assert(sizeof(SettingsData) <= MARLIN_EEPROM_SIZE, "EEPROM too small to contain SettingsData!"); @@ -1702,7 +1713,7 @@ void MarlinSettings::postprocess() { // // Input Shaping - /// + // #if HAS_ZV_SHAPING #if ENABLED(INPUT_SHAPING_X) EEPROM_WRITE(stepper.get_shaping_frequency(X_AXIS)); @@ -1714,6 +1725,13 @@ void MarlinSettings::postprocess() { #endif #endif + // + // HOTEND_IDLE_TIMEOUT + // + #if ENABLED(HOTEND_IDLE_TIMEOUT) + EEPROM_WRITE(hotend_idle.cfg); + #endif + // // Report final CRC and Data Size // @@ -2781,6 +2799,13 @@ void MarlinSettings::postprocess() { } #endif + // + // HOTEND_IDLE_TIMEOUT + // + #if ENABLED(HOTEND_IDLE_TIMEOUT) + EEPROM_READ(hotend_idle.cfg); + #endif + // // Validate Final Size and CRC // @@ -3590,6 +3615,11 @@ void MarlinSettings::reset() { #endif #endif + // + // Hotend Idle Timeout + // + TERN_(HOTEND_IDLE_TIMEOUT, hotend_idle.cfg.set_defaults()); + postprocess(); #if ANY(EEPROM_CHITCHAT, DEBUG_LEVELING_FEATURE) @@ -3845,6 +3875,11 @@ void MarlinSettings::reset() { // TERN_(HAS_ZV_SHAPING, gcode.M593_report(forReplay)); + // + // Hotend Idle Timeout + // + TERN_(HOTEND_IDLE_TIMEOUT, gcode.M86_report(forReplay)); + // // Linear Advance // diff --git a/ini/features.ini b/ini/features.ini index 86e7d2e396..63da77cf76 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -140,7 +140,7 @@ HAS_FANMUX = build_src_filter=+ + FWRETRACT = build_src_filter=+ + HOST_ACTION_COMMANDS = build_src_filter=+ -HOTEND_IDLE_TIMEOUT = build_src_filter=+ +HOTEND_IDLE_TIMEOUT = build_src_filter=+ + JOYSTICK = build_src_filter=+ BLINKM = build_src_filter=+ HAS_COLOR_LEDS = build_src_filter=+ + From 4a734e4de436d9f497ef432744902c12bab9a257 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 26 Jun 2023 00:26:36 +0000 Subject: [PATCH 581/659] [cron] Bump distribution date (2023-06-26) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 31fee4e788..20f8f19e86 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-25" +//#define STRING_DISTRIBUTION_DATE "2023-06-26" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index db14798c3e..245589c3ec 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-25" + #define STRING_DISTRIBUTION_DATE "2023-06-26" #endif /** From 574dd34c49fde76e1e736b8a7e1ea579d724ff22 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 27 Jun 2023 13:19:36 -0500 Subject: [PATCH 582/659] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20String=20helper=20?= =?UTF-8?q?class=20(#24390)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/MarlinCore.cpp | 2 +- Marlin/src/core/mstring.h | 305 ++++++++++++++++++ Marlin/src/core/serial.h | 49 +++ Marlin/src/feature/cancel_object.cpp | 2 +- Marlin/src/feature/powerloss.cpp | 122 +++---- Marlin/src/feature/runout.cpp | 8 +- Marlin/src/feature/tmc_util.cpp | 43 ++- Marlin/src/gcode/calibrate/G33.cpp | 31 +- Marlin/src/gcode/calibrate/G34_M422.cpp | 47 +-- Marlin/src/gcode/gcode.cpp | 5 +- Marlin/src/gcode/lcd/M0_M1.cpp | 2 +- Marlin/src/gcode/lcd/M117.cpp | 2 +- Marlin/src/gcode/probe/G30.cpp | 16 +- Marlin/src/inc/Conditionals_LCD.h | 2 +- Marlin/src/inc/MarlinConfig.h | 1 + Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 4 +- Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp | 4 +- Marlin/src/lcd/dogm/status_screen_DOGM.cpp | 2 +- .../lcd/dogm/status_screen_lite_ST7920.cpp | 23 +- Marlin/src/lcd/e3v2/creality/dwin.cpp | 6 +- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 195 ++++++----- Marlin/src/lcd/e3v2/marlinui/ui_common.cpp | 15 +- Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp | 52 ++- Marlin/src/lcd/e3v2/proui/dwin.cpp | 112 +++---- Marlin/src/lcd/e3v2/proui/gcode_preview.cpp | 22 +- Marlin/src/lcd/e3v2/proui/printstats.cpp | 16 +- Marlin/src/lcd/marlinui.cpp | 190 +++++------ Marlin/src/lcd/marlinui.h | 120 ++++++- Marlin/src/lcd/menu/menu_bed_leveling.cpp | 6 +- Marlin/src/lcd/menu/menu_configuration.cpp | 5 +- Marlin/src/lcd/menu/menu_x_twist.cpp | 6 +- Marlin/src/module/motion.cpp | 27 +- Marlin/src/module/probe.cpp | 2 +- Marlin/src/module/settings.cpp | 4 +- Marlin/src/module/temperature.cpp | 71 ++-- Marlin/src/tests/marlin_tests.cpp | 34 ++ 36 files changed, 955 insertions(+), 598 deletions(-) create mode 100644 Marlin/src/core/mstring.h diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index e183a04359..260464185f 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -1139,7 +1139,7 @@ void setup() { #if ENABLED(MARLIN_DEV_MODE) auto log_current_ms = [&](PGM_P const msg) { SERIAL_ECHO_START(); - SERIAL_CHAR('['); SERIAL_ECHO(millis()); SERIAL_ECHOPGM("] "); + TSS('[', millis(), F("] ")).echo(); SERIAL_ECHOLNPGM_P(msg); }; #define SETUP_LOG(M) log_current_ms(PSTR(M)) diff --git a/Marlin/src/core/mstring.h b/Marlin/src/core/mstring.h new file mode 100644 index 0000000000..67591ba3ae --- /dev/null +++ b/Marlin/src/core/mstring.h @@ -0,0 +1,305 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * Lightweight string class template providing operators for all common tasks + * and conversion from F() and PSTR() strings into SRAM strings that reside + * on the stack or persistently, with overflow prevention. + * + * Examples: + * + * MString<50> mystr(F("Hello "), intvar, " World"); // "Hello 3 World" + * + * mystr.append(" (", p_float_t(123.4, 2), ')'); // "Hello 3 World (123.40)" + * + * mystr.clear(); + * + * mystr.append(spaces_t(10), repchr_t('-', 5)); // Repeats are sometimes cheaper than strings + * + * mystr.appendf(F(" ... %i/%i"), count, total); // Works like printf, requires F string + * + */ + +#include "types.h" +#include "utility.h" // AXIS_CHAR +#include "../lcd/utf8.h" + +#ifndef DEFAULT_MSTRING_SIZE + #define DEFAULT_MSTRING_SIZE 20 +#endif + +//#define UNSAFE_MSTRING // Don't initialize the string and don't terminate strncpy +//#define USE_SPRINTF // Use sprintf instead of snprintf +//#define DJB2_HASH // 32-bit hash with Djb2 algorithm +//#define MSTRING_DEBUG // Debug string operations to diagnose memory leaks +//#define FASTER_APPEND // Append without using an intermediate buffer + +// Declare externs for serial debug output +template extern void SERIAL_ECHO(T x); +template extern void SERIAL_ECHOLN(T x); +extern void SERIAL_ECHO(serial_char_t x); +extern void SERIAL_CHAR(char c); + +#define START_OF_UTF8_CHAR(C) (((C) & 0xC0u) != 0x80U) + +#if ENABLED(USE_SPRINTF) + #define SNPRINTF(A, S, V...) sprintf(A, V) + #define SNPRINTF_P(A, S, V...) sprintf_P(A, V) +#else + #define SNPRINTF(V...) snprintf(V) + #define SNPRINTF_P(V...) snprintf_P(V) +#endif + +/** + * @brief MString class template + * @details A class template providing convenient string operators, + * very similar to the Arduino String class, as it turns out. + * + * @tparam SIZE The pre-allocated storage for the string buffer + */ +template +class MString { +protected: + char str[SIZE+1]; +public: + MString() { safety(0); safety(SIZE); } + + template + MString(const T v) { set(v); safety(SIZE); } + + static_assert(SIZE > 0, "Bad SIZE for MString!"); + + void debug(FSTR_P const f) { + #if ENABLED(MSTRING_DEBUG) + SERIAL_ECHO(FTOP(f)); + SERIAL_CHAR(':'); + SERIAL_ECHO(uintptr_t(str)); + SERIAL_CHAR(' '); + SERIAL_ECHO(length()); + SERIAL_CHAR(' '); + SERIAL_ECHOLN(str); + #endif + } + + void safety(const int n) { if (SAFE && n <= SIZE) str[n] = '\0'; } + + // Chainable String Setters + MString& set() { str[0] = '\0'; debug(F("clear")); return *this; } + MString& set(char *s) { strncpy(str, s, SIZE); debug(F("string")); return *this; } + MString& set(const char *s) { return set(const_cast(s)); } + MString& set_P(PGM_P const s) { strncpy_P(str, s, SIZE); debug(F("pstring")); return *this; } + MString& set(FSTR_P const f) { return set_P(FTOP(f)); } + MString& set(const MString &s) { strncpy(str, s.str, SIZE); debug(F("MString")); return *this; } + MString& set(const bool &b) { return set(b ? F("true") : F("false")); } + MString& set(const char c) { str[0] = c; if (1 < SIZE) str[1] = '\0'; debug(F("char")); return *this; } + MString& set(const short &i) { SNPRINTF_P(str, SIZE, PSTR("%d"), i); debug(F("short")); return *this; } + MString& set(const int &i) { SNPRINTF_P(str, SIZE, PSTR("%d"), i); debug(F("int")); return *this; } + MString& set(const long &l) { SNPRINTF_P(str, SIZE, PSTR("%ld"), l); debug(F("long")); return *this; } + MString& set(const unsigned char &i) { SNPRINTF_P(str, SIZE, PSTR("%u"), i); debug(F("uchar")); return *this; } + MString& set(const unsigned short &i) { SNPRINTF_P(str, SIZE, PSTR("%u"), i); debug(F("ushort")); return *this; } + MString& set(const unsigned int &i) { SNPRINTF_P(str, SIZE, PSTR("%u"), i); debug(F("uint")); return *this; } + MString& set(const unsigned long &l) { SNPRINTF_P(str, SIZE, PSTR("%lu"), l); debug(F("ulong")); return *this; } + MString& set(const float &f) { return set(p_float_t(f, SERIAL_FLOAT_PRECISION)); } + MString& set(const p_float_t &pf) { return set(w_float_t(pf.value, 1, pf.prec)); } + MString& set(const w_float_t &wf) { char f1[20]; return set(dtostrf(wf.value, wf.width, wf.prec, f1)); } + MString& set(const serial_char_t &v) { return set(char(v.c)); } + MString& set(const xyz_pos_t &v) { set(); return append(v); } + MString& set(const xyze_pos_t &v) { set(); return append(v); } + + MString& setn(char *s, int len) { int c = _MIN(len, SIZE); strncpy(str, s, c); str[c] = '\0'; debug(F("string")); return *this; } + MString& setn(const char *s, int len) { return setn(const_cast(s), len); } + MString& setn_P(PGM_P const s, int len) { int c = _MIN(len, SIZE); strncpy_P(str, s, c); str[c] = '\0'; debug(F("pstring")); return *this; } + MString& setn(FSTR_P const f, int len) { return setn_P(FTOP(f), len); } + + // set(repchr_t('-', 10)) + MString& set(const repchr_t &s) { int c = _MIN(s.count, SIZE); memset(str, s.asc, c); str[c] = '\0'; debug(F("")); return *this; } + + // set(spaces_t(10)) + MString& set(const spaces_t &s) { repchr_t r(' ', s.count); return set(r); } + + // Set with format string and arguments, like printf + template + MString& setf_P(PGM_P const fmt, Args... more) { SNPRINTF_P(str, SIZE, fmt, more...); debug(F("setf_P")); return *this; } + + template + MString& setf(const char *fmt, Args... more) { SNPRINTF(str, SIZE, fmt, more...); debug(F("setf")); return *this; } + + template + MString& setf(FSTR_P const fmt, Args... more) { return setf_P(FTOP(fmt), more...); } + + // Chainable String appenders + MString& append() { debug(F("nil")); return *this; } // for macros that might emit no output + MString& append(char *s) { int sz = length(); if (sz < SIZE) strncpy(str + sz, s, SIZE - sz); debug(F("string")); return *this; } + MString& append(const char *s) { return append(const_cast(s)); } + MString& append_P(PGM_P const s) { int sz = length(); if (sz < SIZE) strncpy_P(str + sz, s, SIZE - sz); debug(F("pstring")); return *this; } + MString& append(FSTR_P const f) { return append_P(FTOP(f)); } + MString& append(const MString &s) { return append(s.str); } + MString& append(const bool &b) { return append(b ? F("true") : F("false")); } + MString& append(const char c) { int sz = length(); if (sz < SIZE) { str[sz] = c; if (sz < SIZE - 1) str[sz + 1] = '\0'; } return *this; } + #if ENABLED(FASTER_APPEND) + MString& append(const short &i) { int sz = length(); SNPRINTF(&str[sz], SIZE - sz, "%d", i); return *this; } + MString& append(const int &i) { int sz = length(); SNPRINTF(&str[sz], SIZE - sz, "%d", i); return *this; } + MString& append(const long &l) { int sz = length(); SNPRINTF(&str[sz], SIZE - sz, "%ld", l); return *this; } + MString& append(const unsigned char &i) { int sz = length(); SNPRINTF(&str[sz], SIZE - sz, "%u", i); return *this; } + MString& append(const unsigned short &i) { int sz = length(); SNPRINTF(&str[sz], SIZE - sz, "%u", i); return *this; } + MString& append(const unsigned int &i) { int sz = length(); SNPRINTF(&str[sz], SIZE - sz, "%u", i); return *this; } + MString& append(const unsigned long &l) { int sz = length(); SNPRINTF(&str[sz], SIZE - sz, "%lu", l); return *this; } + #else + MString& append(const short &i) { char buf[20]; sprintf(buf, "%d", i); return append(buf); } + MString& append(const int &i) { char buf[20]; sprintf(buf, "%d", i); return append(buf); } + MString& append(const long &l) { char buf[20]; sprintf(buf, "%ld", l); return append(buf); } + MString& append(const unsigned char &i) { char buf[20]; sprintf(buf, "%u", i); return append(buf); } + MString& append(const unsigned short &i) { char buf[20]; sprintf(buf, "%u", i); return append(buf); } + MString& append(const unsigned int &i) { char buf[20]; sprintf(buf, "%u", i); return append(buf); } + MString& append(const unsigned long &l) { char buf[20]; sprintf(buf, "%lu", l); return append(buf); } + #endif + MString& append(const float &f) { return append(p_float_t(f, SERIAL_FLOAT_PRECISION)); } + MString& append(const p_float_t &pf) { return append(w_float_t(pf.value, 1, pf.prec)); } + MString& append(const w_float_t &wf) { char f1[20]; return append(dtostrf(wf.value, wf.width, wf.prec, f1)); } + MString& append(const serial_char_t &v) { return append(char(v.c)); } + MString& append(const xyz_pos_t &v) { LOOP_NUM_AXES(i) { if (i) append(' '); append(AXIS_CHAR(i), v[i]); } debug(F("xyz")); return *this; } + MString& append(const xyze_pos_t &v) { LOOP_LOGICAL_AXES(i) { if (i) append(' '); append(AXIS_CHAR(i), v[i]); } debug(F("xyze")); return *this; } + + // Append only if the given space is available + MString& appendn(char *s, int len) { int sz = length(), c = _MIN(len, SIZE - sz); if (c > 0) { strncpy(str + sz, s, c); str[sz + c] = '\0'; } debug(F("string")); return *this; } + MString& appendn(const char *s, int len) { return appendn(const_cast(s), len); } + MString& appendn_P(PGM_P const s, int len) { int sz = length(), c = _MIN(len, SIZE - sz); if (c > 0) { strncpy_P(str + sz, s, c); str[sz + c] = '\0'; } debug(F("pstring")); return *this; } + MString& appendn(FSTR_P const f, int len) { return appendn_P(FTOP(f), len); } + + // append(repchr_t('-', 10)) + MString& append(const repchr_t &s) { + const int sz = length(), c = _MIN(s.count, SIZE - sz); + if (c > 0) { memset(str + sz, s.asc, c); safety(sz + c); } + debug(F("repchr")); + return *this; + } + + // append(spaces_t(10)) + MString& append(const spaces_t &s) { return append(repchr_t(' ', s.count)); } + + template + MString& appendf_P(PGM_P const fmt, Args... more) { + int sz = length(); + if (sz < SIZE) SNPRINTF_P(str + sz, SIZE - sz, fmt, more...); + debug(F("appendf_P")); + return *this; + } + + template + MString& appendf(const char *fmt, Args... more) { + const int sz = length(); + if (sz < SIZE) SNPRINTF(str + sz, SIZE - sz, fmt, more...); + debug(F("appendf")); + return *this; + } + + template + MString& appendf(FSTR_P const fmt, Args... more) { return appendf_P(FTOP(fmt), more...); } + + // Instantiate with a list of things + template + MString(T arg1, Args... more) { set(arg1); append(more...); } + + // Take a list of any number of arguments and append them to the string + template + MString& append(T arg1, Args... more) { return append(arg1).append(more...); } + + // Take a list of any number of arguments and set them in the string + template + MString& set(T arg1, Args... more) { return set(arg1).append(more...); } + + // Operator = as shorthand for set() + template + MString& operator=(const T &v) { return set(v); } + + // Operator += as shorthand for append() + template + MString& operator+=(const T &v) { return append(v); } + + // Operator + as shorthand for append-to-copy + template + MString operator+(const T &v) { return MString(str, v); } + + #ifndef __AVR__ + MString(const double d) { set(d); } + MString& set(const double &f) { return set(p_double_t(f, SERIAL_FLOAT_PRECISION)); } + MString& set(const p_double_t &pf) { return set(w_double_t(pf.value, 1, pf.prec)); } + MString& set(const w_double_t &wf) { char d1[20]; return set(dtostrf(wf.value, wf.width, wf.prec, d1)); } + MString& append(const double &f) { return append(p_double_t(f, SERIAL_FLOAT_PRECISION)); } + MString& append(const p_double_t &pf) { return append(w_double_t(pf.value, 1, pf.prec)); } + MString& append(const w_double_t &wf) { char d1[20]; return append(dtostrf(wf.value, wf.width, wf.prec, d1)); } + #endif + + // Get the character at a given index + char operator[](const int i) const { return str[i]; } + + // Cast to char* (explicit?) + operator char* () { return str; } + + // Use &mystring as shorthand for mystring.str + char* operator&() { return str; } + + // Return the buffer address (same as &) + char* buffer() { return str; } + + int length() const { return strlen(str); } + int glyphs() { return utf8_strlen(str); } + bool empty() { return !str[0]; } + + // Quick hash to detect change (e.g., to avoid expensive drawing) + typedef IF::type hash_t; + hash_t hash() const { + #if ENABLED(DJB2_HASH) + hash_t hval = 5381; + char c; + while ((c = *str++)) hval += (hval << 5) + c; // = hval * 33 + c + #else + const int sz = length(); + hash_t hval = hash_t(sz); + for (int i = 0; i < sz; i++) hval = ((hval << 1) | (hval >> 15)) ^ str[i]; // ROL, XOR + #endif + return hval; + } + + void copyto(char * const dst) const { strcpy(dst, str); } + void copyto(char * const dst, int len) const { strncpy(dst, str, len); } + + MString& clear() { return set(); } + MString& eol() { return append('\n'); } + MString& trunc(const int &i) { if (i <= SIZE) str[i] = '\0'; debug(F("trunc")); return *this; } + + // Truncate on a Unicode boundary + MString& utrunc(const int &n=SIZE) { + const int sz = length(); + if (sz && n <= sz) + for (int i = n; i >= 0; i--) if (START_OF_UTF8_CHAR(str[i])) { str[i] = '\0'; break; } + debug(F("utrunc")); + return *this; + } + +}; + +#ifndef TS_SIZE + #define TS_SIZE 63 +#endif +#define TS(V...) MString(V) diff --git a/Marlin/src/core/serial.h b/Marlin/src/core/serial.h index 09f453d3b5..1c23696985 100644 --- a/Marlin/src/core/serial.h +++ b/Marlin/src/core/serial.h @@ -251,6 +251,55 @@ inline void print_pos(const xyze_pos_t &xyze, FSTR_P const prefix=nullptr, FSTR_ #define SERIAL_POS(SUFFIX,VAR) do { print_pos(VAR, F(" " STRINGIFY(VAR) "="), F(" : " SUFFIX "\n")); }while(0) #define SERIAL_XYZ(PREFIX,V...) do { print_pos(V, F(PREFIX)); }while(0) +/** + * Extended string that can echo itself to serial + */ +template +class SString : public MString { +public: + typedef MString super; + using super::str; + using super::debug; + + SString() : super() {} + + template + SString(T arg1, Args... more) : super(arg1, more...) {} + + SString& set() { super::set(); return *this; } + + template + SString& setf_P(PGM_P const fmt, Args... more) { snprintf_P(str, SIZE, fmt, more...); debug(F("setf_P")); return *this; } + + template + SString& setf(const char *fmt, Args... more) { snprintf(str, SIZE, fmt, more...); debug(F("setf")); return *this; } + + template + SString& setf(FSTR_P const fmt, Args... more) { return setf_P(FTOP(fmt), more...); } + + template + SString& set(const T &v) { super::set(v); return *this; } + + template + SString& append(const T &v) { super::append(v); return *this; } + + template + SString& set(T arg1, Args... more) { set(arg1).append(more...); return *this; } + + template + SString& append(T arg1, Args... more) { append(arg1).append(more...); return *this; } + + SString& clear() { set(); return *this; } + SString& eol() { append('\n'); return *this; } + SString& trunc(const int &i) { super::trunc(i); return *this; } + + // Extended with methods to print to serial + SString& echo() { SERIAL_ECHO(str); return *this; } + SString& echoln() { SERIAL_ECHOLN(str); return *this; } +}; + +#define TSS(V...) SString<>(V) + // // Commonly-used strings in serial output // diff --git a/Marlin/src/feature/cancel_object.cpp b/Marlin/src/feature/cancel_object.cpp index 9b658315ed..0040f6ed9d 100644 --- a/Marlin/src/feature/cancel_object.cpp +++ b/Marlin/src/feature/cancel_object.cpp @@ -46,7 +46,7 @@ void CancelObject::set_active_object(const int8_t obj) { #if ALL(HAS_STATUS_MESSAGE, CANCEL_OBJECTS_REPORTING) if (active_object >= 0) - ui.status_printf(0, F(S_FMT " %i"), GET_TEXT(MSG_PRINTING_OBJECT), int(active_object)); + ui.set_status(MString<30>(GET_TEXT_F(MSG_PRINTING_OBJECT), ' ', active_object)); else ui.reset_status(); #endif diff --git a/Marlin/src/feature/powerloss.cpp b/Marlin/src/feature/powerloss.cpp index a8dfadc1f6..7c49aee247 100644 --- a/Marlin/src/feature/powerloss.cpp +++ b/Marlin/src/feature/powerloss.cpp @@ -84,11 +84,10 @@ PrintJobRecovery recovery; // Allow power-loss recovery to be aborted #define PLR_CAN_ABORT -#if ENABLED(PLR_CAN_ABORT) - #define PROCESS_SUBCOMMANDS_NOW(cmd) do { if (card.flag.abort_sd_printing) return; gcode.process_subcommands_now(cmd); }while(0) -#else - #define PROCESS_SUBCOMMANDS_NOW(cmd) gcode.process_subcommands_now(cmd) -#endif +#define PROCESS_SUBCOMMANDS_NOW(cmd) do{ \ + if (TERN0(PLR_CAN_ABORT, card.flag.abort_sd_printing)) return; \ + gcode.process_subcommands_now(cmd); \ + }while(0) /** * Clear the recovery info @@ -272,11 +271,8 @@ void PrintJobRecovery::save(const bool force/*=false*/, const float zraise/*=POW #if POWER_LOSS_ZRAISE // Raise the Z axis now - if (zraise) { - char cmd[20], str_1[16]; - sprintf_P(cmd, PSTR("G0Z%s"), dtostrf(zraise, 1, 3, str_1)); - gcode.process_subcommands_now(cmd); - } + if (zraise) + gcode.process_subcommands_now(TS(F("G0Z"), p_float_t(zraise, 3))); #else UNUSED(zraise); #endif @@ -360,9 +356,6 @@ void PrintJobRecovery::write() { * Resume the saved print job */ void PrintJobRecovery::resume() { - - char cmd[MAX_CMD_SIZE+16], str_1[16], str_2[16]; - const uint32_t resume_sdpos = info.sdpos; // Get here before the stepper ISR overwrites it // Apply the dry-run flag if enabled @@ -388,12 +381,9 @@ void PrintJobRecovery::resume() { #endif #if HAS_HEATED_BED + // Restore the bed temperature const celsius_t bt = info.target_temperature_bed; - if (bt) { - // Restore the bed temperature - sprintf_P(cmd, PSTR("M190S%i"), bt); - PROCESS_SUBCOMMANDS_NOW(cmd); - } + if (bt) PROCESS_SUBCOMMANDS_NOW(TS(F("M190S"), bt)); #endif // Heat hotend enough to soften material @@ -401,12 +391,8 @@ void PrintJobRecovery::resume() { HOTEND_LOOP() { const celsius_t et = _MAX(info.target_temperature[e], 180); if (et) { - #if HAS_MULTI_HOTEND - sprintf_P(cmd, PSTR("T%iS"), e); - PROCESS_SUBCOMMANDS_NOW(cmd); - #endif - sprintf_P(cmd, PSTR("M109S%i"), et); - PROCESS_SUBCOMMANDS_NOW(cmd); + TERN_(HAS_MULTI_HOTEND, PROCESS_SUBCOMMANDS_NOW(TS('T', e, 'S'))); + PROCESS_SUBCOMMANDS_NOW(TS(F("M109S"), et)); } } #endif @@ -427,11 +413,11 @@ void PrintJobRecovery::resume() { float z_now = z_raised; // If Z homing goes to max then just move back to the "raised" position - sprintf_P(cmd, PSTR( - "G28R0\n" // Home all axes (no raise) - "G1Z%sF1200" // Move Z down to (raised) height - ), dtostrf(z_now, 1, 3, str_1)); - PROCESS_SUBCOMMANDS_NOW(cmd); + PROCESS_SUBCOMMANDS_NOW(TS( + F( "G28R0\n" // Home all axes (no raise) + "G1F1200Z") // Move Z down to (raised) height + , p_float_t(z_now, 3) + )); #elif DISABLED(BELTPRINTER) @@ -443,15 +429,13 @@ void PrintJobRecovery::resume() { #if !HOMING_Z_DOWN // Set Z to the real position - sprintf_P(cmd, PSTR("G92.9Z%s"), dtostrf(z_now, 1, 3, str_1)); - PROCESS_SUBCOMMANDS_NOW(cmd); + PROCESS_SUBCOMMANDS_NOW(TS(F("G92.9Z"), p_float_t(z_now, 3))); #endif // Does Z need to be raised now? It should be raised before homing XY. if (z_raised > z_now) { z_now = z_raised; - sprintf_P(cmd, PSTR("G1Z%sF600"), dtostrf(z_now, 1, 3, str_1)); - PROCESS_SUBCOMMANDS_NOW(cmd); + PROCESS_SUBCOMMANDS_NOW(TS(F("G1F600Z"), p_float_t(z_now, 3))); } // Home XY with no Z raise @@ -462,8 +446,7 @@ void PrintJobRecovery::resume() { #if HOMING_Z_DOWN // Move to a safe XY position and home Z while avoiding the print. const xy_pos_t p = xy_pos_t(POWER_LOSS_ZHOME_POS) TERN_(HOMING_Z_WITH_PROBE, - probe.offset_xy); - sprintf_P(cmd, PSTR("G1X%sY%sF1000\nG28HZ"), dtostrf(p.x, 1, 3, str_1), dtostrf(p.y, 1, 3, str_2)); - PROCESS_SUBCOMMANDS_NOW(cmd); + PROCESS_SUBCOMMANDS_NOW(TS(F("G1F1000X"), p_float_t(p.x, 3), 'Y', p_float_t(p.y, 3), F("\nG28HZ"))); #endif // Mark all axes as having been homed (no effect on current_position) @@ -473,39 +456,30 @@ void PrintJobRecovery::resume() { // Restore Z fade and possibly re-enable bed leveling compensation. // Leveling may already be enabled due to the ENABLE_LEVELING_AFTER_G28 option. // TODO: Add a G28 parameter to leave leveling disabled. - sprintf_P(cmd, PSTR("M420S%cZ%s"), '0' + (char)info.flag.leveling, dtostrf(info.fade, 1, 1, str_1)); - PROCESS_SUBCOMMANDS_NOW(cmd); + PROCESS_SUBCOMMANDS_NOW(TS(F("M420S"), '0' + (char)info.flag.leveling, 'Z', p_float_t(info.fade, 1))); #if !HOMING_Z_DOWN // The physical Z was adjusted at power-off so undo the M420S1 correction to Z with G92.9. - sprintf_P(cmd, PSTR("G92.9Z%s"), dtostrf(z_now, 1, 1, str_1)); - PROCESS_SUBCOMMANDS_NOW(cmd); + PROCESS_SUBCOMMANDS_NOW(TS(F("G92.9Z"), p_float_t(z_now, 1))); #endif #endif #if ENABLED(POWER_LOSS_RECOVER_ZHOME) // Z was homed down to the bed, so move up to the raised height. z_now = z_raised; - sprintf_P(cmd, PSTR("G1Z%sF600"), dtostrf(z_now, 1, 3, str_1)); - PROCESS_SUBCOMMANDS_NOW(cmd); + PROCESS_SUBCOMMANDS_NOW(TS(F("G1F600Z"), p_float_t(z_now, 3))); #endif // Recover volumetric extrusion state #if DISABLED(NO_VOLUMETRICS) #if HAS_MULTI_EXTRUDER - EXTRUDER_LOOP() { - sprintf_P(cmd, PSTR("M200T%iD%s"), e, dtostrf(info.filament_size[e], 1, 3, str_1)); - PROCESS_SUBCOMMANDS_NOW(cmd); - } - if (!info.flag.volumetric_enabled) { - sprintf_P(cmd, PSTR("M200T%iD0"), info.active_extruder); - PROCESS_SUBCOMMANDS_NOW(cmd); - } + EXTRUDER_LOOP() + PROCESS_SUBCOMMANDS_NOW(TS(F("M200T"), e, F("D"), p_float_t(info.filament_size[e], 3))); + if (!info.flag.volumetric_enabled) + PROCESS_SUBCOMMANDS_NOW(TS(F("M200D0T"), info.active_extruder)); #else - if (info.flag.volumetric_enabled) { - sprintf_P(cmd, PSTR("M200D%s"), dtostrf(info.filament_size[0], 1, 3, str_1)); - PROCESS_SUBCOMMANDS_NOW(cmd); - } + if (info.flag.volumetric_enabled) + PROCESS_SUBCOMMANDS_NOW(TS(F("M200D"), p_float_t(info.filament_size[0], 3))); #endif #endif @@ -514,30 +488,22 @@ void PrintJobRecovery::resume() { HOTEND_LOOP() { const celsius_t et = info.target_temperature[e]; if (et) { - #if HAS_MULTI_HOTEND - sprintf_P(cmd, PSTR("T%iS"), e); - PROCESS_SUBCOMMANDS_NOW(cmd); - #endif - sprintf_P(cmd, PSTR("M109S%i"), et); - PROCESS_SUBCOMMANDS_NOW(cmd); + TERN_(HAS_MULTI_HOTEND, PROCESS_SUBCOMMANDS_NOW(TS('T', e, 'S'))); + PROCESS_SUBCOMMANDS_NOW(TS(F("M109S"), et)); } } #endif // Restore the previously active tool (with no_move) #if HAS_MULTI_EXTRUDER || HAS_MULTI_HOTEND - sprintf_P(cmd, PSTR("T%i S"), info.active_extruder); - PROCESS_SUBCOMMANDS_NOW(cmd); + PROCESS_SUBCOMMANDS_NOW(TS('T', info.active_extruder, 'S')); #endif // Restore print cooling fan speeds #if HAS_FAN FANS_LOOP(i) { const int f = info.fan_speed[i]; - if (f) { - sprintf_P(cmd, PSTR("M106P%iS%i"), i, f); - PROCESS_SUBCOMMANDS_NOW(cmd); - } + if (f) PROCESS_SUBCOMMANDS_NOW(TS(F("M106P"), i, 'S', f)); } #endif @@ -563,8 +529,7 @@ void PrintJobRecovery::resume() { // Additional purge on resume if configured #if POWER_LOSS_PURGE_LEN - sprintf_P(cmd, PSTR("G1F3000E%d"), (POWER_LOSS_PURGE_LEN) + (POWER_LOSS_RETRACT_LEN)); - PROCESS_SUBCOMMANDS_NOW(cmd); + PROCESS_SUBCOMMANDS_NOW(TS(F("G1F3000E"), (POWER_LOSS_PURGE_LEN) + (POWER_LOSS_RETRACT_LEN))); #endif #if ENABLED(NOZZLE_CLEAN_FEATURE) @@ -572,23 +537,18 @@ void PrintJobRecovery::resume() { #endif // Move back over to the saved XY - sprintf_P(cmd, PSTR("G1X%sY%sF3000"), - dtostrf(info.current_position.x, 1, 3, str_1), - dtostrf(info.current_position.y, 1, 3, str_2) - ); - PROCESS_SUBCOMMANDS_NOW(cmd); + PROCESS_SUBCOMMANDS_NOW(TS( + F("G1F3000X"), p_float_t(info.current_position.x, 3), 'Y', p_float_t(info.current_position.y, 3) + )); // Move back down to the saved Z for printing - sprintf_P(cmd, PSTR("G1Z%sF600"), dtostrf(z_print, 1, 3, str_1)); - PROCESS_SUBCOMMANDS_NOW(cmd); + PROCESS_SUBCOMMANDS_NOW(TS(F("G1F600Z"), p_float_t(z_print, 3))); // Restore the feedrate - sprintf_P(cmd, PSTR("G1F%d"), info.feedrate); - PROCESS_SUBCOMMANDS_NOW(cmd); + PROCESS_SUBCOMMANDS_NOW(TS(F("G1F"), info.feedrate)); // Restore E position with G92.9 - sprintf_P(cmd, PSTR("G92.9E%s"), dtostrf(info.current_position.e, 1, 3, str_1)); - PROCESS_SUBCOMMANDS_NOW(cmd); + PROCESS_SUBCOMMANDS_NOW(TS(F("G92.9E"), p_float_t(info.current_position.e, 3))); TERN_(GCODE_REPEAT_MARKERS, repeat = info.stored_repeat); TERN_(HAS_HOME_OFFSET, home_offset = info.home_offset); @@ -604,10 +564,8 @@ void PrintJobRecovery::resume() { enable(true); // Resume the SD file from the last position - sprintf_P(cmd, M23_STR, &info.sd_filename[0]); - PROCESS_SUBCOMMANDS_NOW(cmd); - sprintf_P(cmd, PSTR("M24S%ldT%ld"), resume_sdpos, info.print_job_elapsed); - PROCESS_SUBCOMMANDS_NOW(cmd); + PROCESS_SUBCOMMANDS_NOW(MString(F("M23 "), info.sd_filename)); + PROCESS_SUBCOMMANDS_NOW(TS(F("M24S"), resume_sdpos, 'T', info.print_job_elapsed)); } #if ENABLED(DEBUG_POWER_LOSS_RECOVERY) diff --git a/Marlin/src/feature/runout.cpp b/Marlin/src/feature/runout.cpp index 44ebd85b32..a1d4d259b7 100644 --- a/Marlin/src/feature/runout.cpp +++ b/Marlin/src/feature/runout.cpp @@ -128,12 +128,12 @@ void event_filament_runout(const uint8_t extruder) { if (run_runout_script) { #if MULTI_FILAMENT_SENSOR - char script[strlen(FILAMENT_RUNOUT_SCRIPT) + 1]; - sprintf_P(script, PSTR(FILAMENT_RUNOUT_SCRIPT), tool); + MString script; + script.setf(F(FILAMENT_RUNOUT_SCRIPT), AS_CHAR(tool)); #if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG) - SERIAL_ECHOLNPGM("Runout Command: ", script); + SERIAL_ECHOLNPGM("Runout Command: ", &script); #endif - queue.inject(script); + queue.inject(&script); #else #if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG) SERIAL_ECHOPGM("Runout Command: "); diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp index 556a608914..bff6872e4d 100644 --- a/Marlin/src/feature/tmc_util.cpp +++ b/Marlin/src/feature/tmc_util.cpp @@ -213,47 +213,46 @@ template void report_driver_otpw(TMC &st) { - char timestamp[14]; + MString<13> timestamp; duration_t elapsed = print_job_timer.duration(); const bool has_days = (elapsed.value > 60*60*24L); - (void)elapsed.toDigital(timestamp, has_days); - SERIAL_EOL(); - SERIAL_ECHO(timestamp); - SERIAL_ECHOPGM(": "); + (void)elapsed.toDigital(×tamp, has_days); + TSS('\n', timestamp, F(": ")).echo(); st.printLabel(); - SERIAL_ECHOLNPGM(" driver overtemperature warning! (", st.getMilliamps(), "mA)"); + SString<50>(F(" driver overtemperature warning! ("), st.getMilliamps(), F("mA)")).echoln(); } template void report_polled_driver_data(TMC &st, const TMC_driver_data &data) { const uint32_t pwm_scale = get_pwm_scale(st); st.printLabel(); - SERIAL_CHAR(':'); SERIAL_ECHO(pwm_scale); + SString<60> report(':', pwm_scale); #if ENABLED(TMC_DEBUG) #if HAS_TMCX1X0 || HAS_TMC220x - SERIAL_CHAR('/'); SERIAL_ECHO(data.cs_actual); + report.append('/', data.cs_actual); #endif #if HAS_STALLGUARD - SERIAL_CHAR('/'); + report += '/'; if (data.sg_result_reasonable) - SERIAL_ECHO(data.sg_result); + report += data.sg_result; else - SERIAL_CHAR('-'); + report += '-'; #endif #endif - SERIAL_CHAR('|'); - if (st.error_count) SERIAL_CHAR('E'); // Error - if (data.is_ot) SERIAL_CHAR('O'); // Over-temperature - if (data.is_otpw) SERIAL_CHAR('W'); // over-temperature pre-Warning + report += '|'; + if (st.error_count) report += 'E'; // Error + if (data.is_ot) report += 'O'; // Over-temperature + if (data.is_otpw) report += 'W'; // over-temperature pre-Warning #if ENABLED(TMC_DEBUG) - if (data.is_stall) SERIAL_CHAR('G'); // stallGuard - if (data.is_stealth) SERIAL_CHAR('T'); // stealthChop - if (data.is_standstill) SERIAL_CHAR('I'); // standstIll + if (data.is_stall) report += 'G'; // stallGuard + if (data.is_stealth) report += 'T'; // stealthChop + if (data.is_standstill) report += 'I'; // standstIll #endif - if (st.flag_otpw) SERIAL_CHAR('F'); // otpw Flag - SERIAL_CHAR('|'); - if (st.otpw_count > 0) SERIAL_ECHO(st.otpw_count); - SERIAL_CHAR('\t'); + if (st.flag_otpw) report += 'F'; // otpw Flag + report += '|'; + if (st.otpw_count > 0) report += st.otpw_count; + report += '\t'; + report.echo(); } #if CURRENT_STEP_DOWN > 0 diff --git a/Marlin/src/gcode/calibrate/G33.cpp b/Marlin/src/gcode/calibrate/G33.cpp index ba6cccffab..a3cb7f0b9d 100644 --- a/Marlin/src/gcode/calibrate/G33.cpp +++ b/Marlin/src/gcode/calibrate/G33.cpp @@ -638,26 +638,26 @@ void GcodeSuite::G33() { SERIAL_ECHOPGM("std dev:", p_float_t(zero_std_dev_min, 3)); } SERIAL_EOL(); - char mess[21]; - strcpy_P(mess, PSTR("Calibration sd:")); + + MString<20> msg(F("Calibration sd:")); if (zero_std_dev_min < 1) - sprintf_P(&mess[15], PSTR("0.%03i"), (int)LROUND(zero_std_dev_min * 1000.0f)); + msg.appendf(F("0.%03i"), (int)LROUND(zero_std_dev_min * 1000.0f)); else - sprintf_P(&mess[15], PSTR("%03i.x"), (int)LROUND(zero_std_dev_min)); - ui.set_status(mess); + msg.appendf(F("%03i.x"), (int)LROUND(zero_std_dev_min)); + ui.set_status(msg); print_calibration_settings(_endstop_results, _angle_results); SERIAL_ECHOLNPGM("Save with M500 and/or copy to Configuration.h"); } else { // !end iterations - char mess[15]; + SString<14> msg; if (iterations < 31) - sprintf_P(mess, PSTR("Iteration : %02i"), (unsigned int)iterations); + msg.setf(F("Iteration : %02i"), (unsigned int)iterations); else - strcpy_P(mess, PSTR("No convergence")); - SERIAL_ECHO(mess); + msg.set(F("No convergence")); + msg.echo(); SERIAL_ECHO_SP(32); SERIAL_ECHOLNPGM("std dev:", p_float_t(zero_std_dev, 3)); - ui.set_status(mess); + ui.set_status(msg); if (verbose_level > 1) print_calibration_settings(_endstop_results, _angle_results); } @@ -667,15 +667,12 @@ void GcodeSuite::G33() { SERIAL_ECHO(enddryrun); SERIAL_ECHO_SP(35); SERIAL_ECHOLNPGM("std dev:", p_float_t(zero_std_dev, 3)); - - char mess[21]; - strcpy_P(mess, FTOP(enddryrun)); - strcpy_P(&mess[11], PSTR(" sd:")); + MString<30> msg(enddryrun, F(" sd:")); if (zero_std_dev < 1) - sprintf_P(&mess[15], PSTR("0.%03i"), (int)LROUND(zero_std_dev * 1000.0f)); + msg.appendf(F("0.%03i"), (int)LROUND(zero_std_dev * 1000.0f)); else - sprintf_P(&mess[15], PSTR("%03i.x"), (int)LROUND(zero_std_dev)); - ui.set_status(mess); + msg.appendf(F("%03i.x"), (int)LROUND(zero_std_dev)); + ui.set_status(msg); } ac_home(); } diff --git a/Marlin/src/gcode/calibrate/G34_M422.cpp b/Marlin/src/gcode/calibrate/G34_M422.cpp index 39f3d2d5df..f76df4316c 100644 --- a/Marlin/src/gcode/calibrate/G34_M422.cpp +++ b/Marlin/src/gcode/calibrate/G34_M422.cpp @@ -277,42 +277,21 @@ void GcodeSuite::G34() { ); #endif - SERIAL_ECHOLNPGM("\n" - "Z2-Z1=", ABS(z_measured[1] - z_measured[0]) - #if TRIPLE_Z - , " Z3-Z2=", ABS(z_measured[2] - z_measured[1]) - , " Z3-Z1=", ABS(z_measured[2] - z_measured[0]) - #if QUAD_Z - , " Z4-Z3=", ABS(z_measured[3] - z_measured[2]) - , " Z4-Z2=", ABS(z_measured[3] - z_measured[1]) - , " Z4-Z1=", ABS(z_measured[3] - z_measured[0]) - #endif - #endif - ); + SERIAL_EOL(); - #if HAS_STATUS_MESSAGE - char fstr1[10]; - char msg[6 + (6 + 5) * NUM_Z_STEPPERS + 1] - #if TRIPLE_Z - , fstr2[10], fstr3[10] - #if QUAD_Z - , fstr4[10], fstr5[10], fstr6[10] - #endif - #endif - ; - sprintf_P(msg, - PSTR("1:2=%s" TERN_(TRIPLE_Z, " 3-2=%s 3-1=%s") TERN_(QUAD_Z, " 4-3=%s 4-2=%s 4-1=%s")), - dtostrf(ABS(z_measured[1] - z_measured[0]), 1, 3, fstr1) - OPTARG(TRIPLE_Z, - dtostrf(ABS(z_measured[2] - z_measured[1]), 1, 3, fstr2), - dtostrf(ABS(z_measured[2] - z_measured[0]), 1, 3, fstr3)) - OPTARG(QUAD_Z, - dtostrf(ABS(z_measured[3] - z_measured[2]), 1, 3, fstr4), - dtostrf(ABS(z_measured[3] - z_measured[1]), 1, 3, fstr5), - dtostrf(ABS(z_measured[3] - z_measured[0]), 1, 3, fstr6)) - ); - ui.set_status(msg); + SString<15 + TERN0(TRIPLE_Z, 30) + TERN0(QUAD_Z, 45)> msg(F("1:2="), p_float_t(ABS(z_measured[1] - z_measured[0]), 3)); + #if TRIPLE_Z + msg.append(F(" 3-2="), p_float_t(ABS(z_measured[2] - z_measured[1]), 3)) + .append(F(" 3-1="), p_float_t(ABS(z_measured[2] - z_measured[0]), 3)); #endif + #if QUAD_Z + msg.append(F(" 4-3="), p_float_t(ABS(z_measured[3] - z_measured[2]), 3)) + .append(F(" 4-2="), p_float_t(ABS(z_measured[3] - z_measured[1]), 3)) + .append(F(" 4-1="), p_float_t(ABS(z_measured[3] - z_measured[0]), 3)); + #endif + + msg.echoln(); + ui.set_status(msg); auto decreasing_accuracy = [](const_float_t v1, const_float_t v2) { if (v1 < v2 * 0.7f) { diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 468a9ef65f..16847eb1f1 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -1173,10 +1173,7 @@ void GcodeSuite::process_subcommands_now(FSTR_P fgcode) { for (;;) { PGM_P const delim = strchr_P(pgcode, '\n'); // Get address of next newline const size_t len = delim ? delim - pgcode : strlen_P(pgcode); // Get the command length - char cmd[len + 1]; // Allocate a stack buffer - strncpy_P(cmd, pgcode, len); // Copy the command to the stack - cmd[len] = '\0'; // End with a nul - parser.parse(cmd); // Parse the command + parser.parse(MString().setn_P(pgcode, len)); // Parse the command process_parsed_command(true); // Process it (no "ok") if (!delim) break; // Last command? pgcode = delim + 1; // Get the next command diff --git a/Marlin/src/gcode/lcd/M0_M1.cpp b/Marlin/src/gcode/lcd/M0_M1.cpp index 120a36a578..4e4625e948 100644 --- a/Marlin/src/gcode/lcd/M0_M1.cpp +++ b/Marlin/src/gcode/lcd/M0_M1.cpp @@ -58,7 +58,7 @@ void GcodeSuite::M0_M1() { #if HAS_MARLINUI_MENU if (parser.string_arg) - ui.set_status(parser.string_arg, true); + ui.set_status_no_expire(parser.string_arg); else { LCD_MESSAGE(MSG_USERWAIT); #if ENABLED(LCD_PROGRESS_BAR) && PROGRESS_MSG_EXPIRE > 0 diff --git a/Marlin/src/gcode/lcd/M117.cpp b/Marlin/src/gcode/lcd/M117.cpp index 86023e12e3..57a26851fd 100644 --- a/Marlin/src/gcode/lcd/M117.cpp +++ b/Marlin/src/gcode/lcd/M117.cpp @@ -33,7 +33,7 @@ void GcodeSuite::M117() { if (parser.string_arg && parser.string_arg[0]) - ui.set_status(parser.string_arg, true); + ui.set_status_no_expire(parser.string_arg); else ui.reset_status(); diff --git a/Marlin/src/gcode/probe/G30.cpp b/Marlin/src/gcode/probe/G30.cpp index c638e76c1a..f8fe88d339 100644 --- a/Marlin/src/gcode/probe/G30.cpp +++ b/Marlin/src/gcode/probe/G30.cpp @@ -76,18 +76,18 @@ void GcodeSuite::G30() { const ProbePtRaise raise_after = parser.boolval('E', true) ? PROBE_PT_STOW : PROBE_PT_NONE; - TERN_(HAS_PTC, ptc.set_enabled(!parser.seen('C') || parser.value_bool())); + TERN_(HAS_PTC, ptc.set_enabled(parser.boolval('C', true))); const float measured_z = probe.probe_at_point(probepos, raise_after); TERN_(HAS_PTC, ptc.set_enabled(true)); if (!isnan(measured_z)) { - SERIAL_ECHOLNPGM("Bed X: ", probepos.asLogical().x, " Y: ", probepos.asLogical().y, " Z: ", measured_z); + const xy_pos_t lpos = probepos.asLogical(); + SString<30> msg( + F("Bed X:"), p_float_t(lpos.x, 1), + F( " Y:"), p_float_t(lpos.y, 1), + F( " Z:"), p_float_t(measured_z, 2) + ); + msg.echoln(); #if ANY(DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI) - char msg[31], str_1[6], str_2[6], str_3[6]; - sprintf_P(msg, PSTR("X:%s, Y:%s, Z:%s"), - dtostrf(probepos.x, 1, 1, str_1), - dtostrf(probepos.y, 1, 1, str_2), - dtostrf(measured_z, 1, 2, str_3) - ); ui.set_status(msg); #endif } diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index b33720b2a5..0ab42cb22f 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -542,7 +542,7 @@ #define HAS_UTF8_UTILS 1 #endif -#if HAS_DISPLAY || HAS_DWIN_E3V2 +#if ANY(HAS_DISPLAY, HAS_DWIN_E3V2) #define HAS_STATUS_MESSAGE 1 #endif diff --git a/Marlin/src/inc/MarlinConfig.h b/Marlin/src/inc/MarlinConfig.h index dda1480e02..d61a6b55e7 100644 --- a/Marlin/src/inc/MarlinConfig.h +++ b/Marlin/src/inc/MarlinConfig.h @@ -55,6 +55,7 @@ // Include all core headers #include "../core/language.h" #include "../core/utility.h" + #include "../core/mstring.h" #include "../core/serial.h" #endif diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index 1aa53241ad..c5b4df46f2 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -731,7 +731,7 @@ void MarlinUI::draw_status_message(const bool blink) { static bool last_blink = false; // Get the UTF8 character count of the string - uint8_t slen = utf8_strlen(status_message); + uint8_t slen = status_message.glyphs(); // If the string fits into the LCD, just print it and do not scroll it if (slen <= LCD_WIDTH) { @@ -773,7 +773,7 @@ void MarlinUI::draw_status_message(const bool blink) { UNUSED(blink); // Get the UTF8 character count of the string - uint8_t slen = utf8_strlen(status_message); + uint8_t slen = status_message.glyphs(); // Just print the string to the LCD lcd_put_u8str_max(status_message, LCD_WIDTH); diff --git a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp index ee7154ae41..02e5f05d92 100644 --- a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp +++ b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp @@ -419,7 +419,7 @@ void MarlinUI::draw_kill_screen() { if (!PanelDetected) return; lcd.clear_buffer(); lcd_moveto(0, 3); lcd.write(COLOR_ERROR); - lcd_moveto((LCD_WIDTH - utf8_strlen(status_message)) / 2 + 1, 3); + lcd_moveto((LCD_WIDTH - status_message.glyphs()) / 2 + 1, 3); lcd_put_u8str(status_message); center_text(GET_TEXT_F(MSG_HALTED), 5); center_text(GET_TEXT_F(MSG_PLEASE_RESET), 6); @@ -692,7 +692,7 @@ void MarlinUI::draw_status_message(const bool blink) { #endif // FILAMENT_LCD_DISPLAY && HAS_MEDIA // Get the UTF8 character count of the string - uint8_t slen = utf8_strlen(status_message); + uint8_t slen = status_message.glyphs(); #if ENABLED(STATUS_MESSAGE_SCROLLING) diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp index 12cee1fc80..5bce83849f 100644 --- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp +++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp @@ -915,7 +915,7 @@ void MarlinUI::draw_status_message(const bool blink) { // Get the UTF8 character count of the string uint8_t lcd_width = LCD_WIDTH, pixel_width = LCD_PIXEL_WIDTH, - slen = utf8_strlen(status_message); + slen = status_message.glyphs(); #if HAS_POWER_MONITOR if (power_monitor.display_enabled()) { diff --git a/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp index 8e70941628..a6e942b706 100644 --- a/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp +++ b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp @@ -568,16 +568,14 @@ void ST7920_Lite_Status_Screen::draw_feedrate_percentage(const uint16_t percenta } void ST7920_Lite_Status_Screen::draw_status_message() { - const char *str = ui.status_message; - set_ddram_address(DDRAM_LINE_4); begin_data(); #if ENABLED(STATUS_MESSAGE_SCROLLING) - uint8_t slen = utf8_strlen(str); + uint8_t slen = ui.status_message.glyphs(); if (slen <= TEXT_MODE_LCD_WIDTH) { // String fits the LCD, so just print it - write_str(str); + write_str(ui.status_message); while (slen < TEXT_MODE_LCD_WIDTH) { write_byte(' '); ++slen; } } else { // String is larger than the available space in ST7920_Lite_Status_Screen:: @@ -595,7 +593,7 @@ void ST7920_Lite_Status_Screen::draw_status_message() { write_byte(' '); if (--chars) { // Draw a third space if there's room write_byte(' '); - if (--chars) write_str(str, chars); // Print a second copy of the message + if (--chars) write_str(ui.status_message, chars); // Print a second copy of the message } } } @@ -604,8 +602,8 @@ void ST7920_Lite_Status_Screen::draw_status_message() { #else - uint8_t slen = utf8_strlen(str); - write_str(str, TEXT_MODE_LCD_WIDTH); + uint8_t slen = ui.status_message.glyphs(); + write_str(ui.status_message, TEXT_MODE_LCD_WIDTH); for (; slen < TEXT_MODE_LCD_WIDTH; ++slen) write_byte(' '); #endif @@ -853,11 +851,10 @@ bool ST7920_Lite_Status_Screen::position_changed() { } bool ST7920_Lite_Status_Screen::status_changed() { - uint8_t checksum = 0; - for (const char *p = ui.status_message; *p; p++) checksum ^= *p; - static uint8_t last_checksum = 0; - bool changed = last_checksum != checksum; - if (changed) last_checksum = checksum; + static MString<>::hash_t last_hash = 0; + const MString<>::hash_t hash = ui.status_message.hash(); + const bool changed = last_hash != hash; + if (changed) last_hash = hash; return changed; } @@ -892,7 +889,7 @@ void ST7920_Lite_Status_Screen::update_status_or_position(bool forceUpdate) { if (forceUpdate || status_changed()) { TERN_(STATUS_MESSAGE_SCROLLING, ui.status_scroll_offset = 0); #if STATUS_EXPIRE_SECONDS - countdown = ui.status_message[0] ? STATUS_EXPIRE_SECONDS : 0; + countdown = !ui.status_message.empty() ? STATUS_EXPIRE_SECONDS : 0; #endif draw_status_message(); blink_changed(); // Clear changed flag diff --git a/Marlin/src/lcd/e3v2/creality/dwin.cpp b/Marlin/src/lcd/e3v2/creality/dwin.cpp index 303807aa21..7a28f1b77e 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.cpp +++ b/Marlin/src/lcd/e3v2/creality/dwin.cpp @@ -1215,7 +1215,7 @@ void drawPrintProgressBar() { void drawPrintProgressElapsed() { constexpr uint16_t x = 45, y = 192; - duration_t elapsed = print_job_timer.duration(); // print timer + duration_t elapsed = print_job_timer.duration(); // Print timer dwinDrawIntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, x, y, elapsed.value / 3600); dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, x + 8 * 2, y, F(":")); dwinDrawIntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, x + 8 * 3, y, (elapsed.value % 3600) / 60); @@ -4104,7 +4104,7 @@ void eachMomentUpdate() { queue.inject(F("G1 F1200 X0 Y0")); } - if (card.isPrinting() && checkkey == PrintProcess) { // print process + if (card.isPrinting() && checkkey == PrintProcess) { // Print process const uint8_t card_pct = card.percentDone(); static uint8_t last_cardpercentValue = 101; if (last_cardpercentValue != card_pct) { // print percent @@ -4115,7 +4115,7 @@ void eachMomentUpdate() { } } - duration_t elapsed = print_job_timer.duration(); // print timer + duration_t elapsed = print_job_timer.duration(); // Print timer // Print time so far static uint16_t last_Printtime = 0; diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index b7b2629f99..95a387c6cb 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -183,7 +183,6 @@ float valuemax; uint8_t valueunit; uint8_t valuetype; -char cmd[MAX_CMD_SIZE+16], str_1[16], str_2[16], str_3[16]; char statusmsg[64]; char filename[LONG_FILENAME_LENGTH]; bool printing = false; @@ -267,8 +266,9 @@ private: uint8_t tilt_grid = 1; void manual_value_update(bool undefined=false) { - sprintf_P(cmd, PSTR("M421 I%i J%i Z%s %s"), mesh_x, mesh_y, dtostrf(current_position.z, 1, 3, str_1), undefined ? "N" : ""); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("M421I"), mesh_x, 'J', mesh_y, 'Z', p_float_t(current_position.z, 3), undefined ? "N" : "") + ); planner.synchronize(); } @@ -313,8 +313,9 @@ private: #else void manual_value_update() { - sprintf_P(cmd, PSTR("G29 I%i J%i Z%s"), mesh_x, mesh_y, dtostrf(current_position.z, 1, 3, str_1)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G29I"), mesh_x, 'J', mesh_y, 'Z', p_float_t(current_position.z, 3)) + ); planner.synchronize(); } @@ -329,10 +330,8 @@ private: } else { crealityDWIN.popupHandler(MoveWait); - sprintf_P(cmd, PSTR("G0 F300 Z%s"), dtostrf(Z_CLEARANCE_BETWEEN_PROBES, 1, 3, str_1)); - gcode.process_subcommands_now(cmd); - sprintf_P(cmd, PSTR("G42 F4000 I%i J%i"), mesh_x, mesh_y); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now(TS(F("G0F300Z"), p_float_t(current_position.z, 3))); + gcode.process_subcommands_now(TS(F("G42 F4000 I"), mesh_x, 'J', mesh_y)); planner.synchronize(); current_position.z = goto_mesh_value ? bedlevel.z_values[mesh_x][mesh_y] : Z_CLEARANCE_BETWEEN_PROBES; planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder); @@ -377,7 +376,6 @@ private: } // Draw value square grid - char buf[8]; GRID_LOOP(x, y) { const auto start_x_px = padding_x + x * cell_width_px; const auto end_x_px = start_x_px + cell_width_px - 1 - gridline_width; @@ -402,14 +400,15 @@ private: dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + cell_width_px / 2 - 5, start_y_px + offset_y, F("X")); } else { // has value + MString<12> msg; if (GRID_MAX_POINTS_X < 10) - sprintf_P(buf, PSTR("%s"), dtostrf(abs(bedlevel.z_values[x][y]), 1, 2, str_1)); + msg.set(p_float_t(abs(bedlevel.z_values[x][y]), 2)); else - sprintf_P(buf, PSTR("%02i"), (uint16_t)(abs(bedlevel.z_values[x][y] - (int16_t)bedlevel.z_values[x][y]) * 100)); - offset_x = cell_width_px / 2 - 3 * (strlen(buf)) - 2; + msg.setf(F("%02i"), uint16_t(abs(bedlevel.z_values[x][y] - int16_t(bedlevel.z_values[x][y])) * 100)); + offset_x = cell_width_px / 2 - 3 * msg.length() - 2; if (!(GRID_MAX_POINTS_X < 10)) dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px - 2 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, F(".")); - dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + 1 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, buf); + dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + 1 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, msg); } safe_delay(10); LCD_SERIAL.flushTX(); @@ -418,21 +417,22 @@ private: } void setMeshViewerStatus() { // TODO: draw gradient with values as a legend instead - float v_max = abs(get_max_value()), v_min = abs(get_min_value()), range = _MAX(v_min, v_max); - if (v_min > 3e+10F) v_min = 0.0000001; - if (v_max > 3e+10F) v_max = 0.0000001; - if (range > 3e+10F) range = 0.0000001; - char msg[46]; + float v1, v2, + v_min = abs(get_min_value()), + v_max = abs(get_max_value()); if (viewer_asymmetric_range) { - dtostrf(-v_min, 1, 3, str_1); - dtostrf( v_max, 1, 3, str_2); + if (v_min > 3e+10F) v_min = 0.0000001; + if (v_max > 3e+10F) v_max = 0.0000001; + v1 = -v_min; + v2 = v_max; } else { - dtostrf(-range, 1, 3, str_1); - dtostrf( range, 1, 3, str_2); + float range = _MAX(v_min, v_max); + if (range > 3e+10F) range = 0.0000001; + v1 = -range; + v2 = range; } - sprintf_P(msg, PSTR("Red %s..0..%s Green"), str_1, str_2); - crealityDWIN.updateStatus(msg); + crealityDWIN.updateStatus(TS(F("Red "), p_float_t(v1, 3) , F("..0.."), p_float_t(v2, 3), F(" Green"))); drawing_mesh = false; } @@ -1199,8 +1199,7 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool thermalManager.wait_for_hotend(0); } popupHandler(FilChange); - sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.temp_hotend[0].target)); } #endif } @@ -1445,15 +1444,17 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool popupHandler(MoveWait); if (use_probe) { #if HAS_BED_PROBE - sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(probe_x_min, 1, 3, str_1), dtostrf(probe_y_min, 1, 3, str_2)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G0F4000\nG0Z10\nG0X"), p_float_t(probe_x_min, 3), 'Y', p_float_t(probe_y_min, 3)) + ); planner.synchronize(); popupHandler(ManualProbing); #endif } else { - sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf(corner_pos, 1, 3, str_1), dtostrf(corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G0F4000\nG0Z10\nG0X"), p_float_t(corner_pos, 3), 'Y', p_float_t(corner_pos, 3), F("\nG0F300Z"), p_float_t(mlev_z_pos, 3)) + ); planner.synchronize(); redrawMenu(); } @@ -1466,15 +1467,17 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool popupHandler(MoveWait); if (use_probe) { #if HAS_BED_PROBE - sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(probe_x_min, 1, 3, str_1), dtostrf(probe_y_max, 1, 3, str_2)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G0F4000\nG0Z10\nG0X"), p_float_t(probe_x_min, 3), 'Y', p_float_t(probe_y_max, 3)) + ); planner.synchronize(); popupHandler(ManualProbing); #endif } else { - sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf(corner_pos, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) - corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G0F4000\nG0Z10\nG0X"), p_float_t(corner_pos, 3), 'Y', p_float_t((Y_BED_SIZE + Y_MIN_POS) - corner_pos, 3), F("\nG0F300Z"), p_float_t(mlev_z_pos, 3)) + ); planner.synchronize(); redrawMenu(); } @@ -1487,15 +1490,17 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool popupHandler(MoveWait); if (use_probe) { #if HAS_BED_PROBE - sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(probe_x_max, 1, 3, str_1), dtostrf(probe_y_max, 1, 3, str_2)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G0F4000\nG0Z10\nG0X"), p_float_t(probe_x_max, 3), 'Y', p_float_t(probe_y_max, 3), F("\nG0F300Z"), p_float_t(mlev_z_pos, 3)) + ); planner.synchronize(); popupHandler(ManualProbing); #endif } else { - sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf((X_BED_SIZE + X_MIN_POS) - corner_pos, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) - corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G0F4000\nG0Z10\nG0X"), p_float_t((X_BED_SIZE + X_MIN_POS) - corner_pos, 3), 'Y', p_float_t((Y_BED_SIZE + Y_MIN_POS) - corner_pos, 3), F("\nG0F300Z"), p_float_t(mlev_z_pos, 3)) + ); planner.synchronize(); redrawMenu(); } @@ -1508,15 +1513,17 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool popupHandler(MoveWait); if (use_probe) { #if HAS_BED_PROBE - sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(probe_x_max, 1, 3, str_1), dtostrf(probe_y_min, 1, 3, str_2)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G0F4000\nG0Z10\nG0X"), p_float_t(probe_x_max, 3), 'Y', p_float_t(probe_y_min, 3)) + ); planner.synchronize(); popupHandler(ManualProbing); #endif } else { - sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf((X_BED_SIZE + X_MIN_POS) - corner_pos, 1, 3, str_1), dtostrf(corner_pos, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G0F4000\nG0Z10\nG0X"), p_float_t((X_BED_SIZE + X_MIN_POS) - corner_pos, 3), 'Y', p_float_t(corner_pos, 3), F("\nG0F300Z"), p_float_t(mlev_z_pos, 3)) + ); planner.synchronize(); redrawMenu(); } @@ -1529,15 +1536,17 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool popupHandler(MoveWait); if (use_probe) { #if HAS_BED_PROBE - sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s"), dtostrf(X_MAX_POS / 2.0f - probe.offset.x, 1, 3, str_1), dtostrf(Y_MAX_POS / 2.0f - probe.offset.y, 1, 3, str_2)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G0F4000\nG0Z10\nG0X"), p_float_t((X_MAX_POS) / 2.0f - probe.offset.x, 3), 'Y', p_float_t((Y_MAX_POS) / 2.0f - probe.offset.y, 3)) + ); planner.synchronize(); popupHandler(ManualProbing); #endif } else { - sprintf_P(cmd, PSTR("G0 F4000\nG0 Z10\nG0 X%s Y%s\nG0 F300 Z%s"), dtostrf((X_BED_SIZE + X_MIN_POS) / 2.0f, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) / 2.0f, 1, 3, str_2), dtostrf(mlev_z_pos, 1, 3, str_3)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G0F4000\nG0Z10\nG0X"), p_float_t((X_BED_SIZE + X_MIN_POS) - corner_pos, 3), 'Y', p_float_t((Y_BED_SIZE + Y_MIN_POS) / 2.0f, 3), F("\nG0F300Z"), p_float_t(mlev_z_pos, 3)) + ); planner.synchronize(); redrawMenu(); } @@ -1582,16 +1591,17 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool drawMenuItem(row, ICON_Homing, F("Home Z Axis")); else { popupHandler(Home); - gcode.process_subcommands_now(F("G28 Z")); + gcode.process_subcommands_now(F("G28Z")); popupHandler(MoveWait); #if ENABLED(Z_SAFE_HOMING) planner.synchronize(); - sprintf_P(cmd, PSTR("G0 F4000 X%s Y%s"), dtostrf(Z_SAFE_HOMING_X_POINT, 1, 3, str_1), dtostrf(Z_SAFE_HOMING_Y_POINT, 1, 3, str_2)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G0F4000X"), p_float_t(Z_SAFE_HOMING_X_POINT, 3), 'Y', p_float_t(Z_SAFE_HOMING_Y_POINT, 3)); + ); #else gcode.process_subcommands_now(F("G0 F4000 X117.5 Y117.5")); #endif - gcode.process_subcommands_now(F("G0 F300 Z0")); + gcode.process_subcommands_now(F("G0F300Z0")); planner.synchronize(); redrawMenu(); } @@ -1610,12 +1620,13 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool popupHandler(MoveWait); #if ENABLED(Z_SAFE_HOMING) planner.synchronize(); - sprintf_P(cmd, PSTR("G0 F4000 X%s Y%s"), dtostrf(Z_SAFE_HOMING_X_POINT, 1, 3, str_1), dtostrf(Z_SAFE_HOMING_Y_POINT, 1, 3, str_2)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G0F4000X"), p_float_t(Z_SAFE_HOMING_X_POINT, 3), 'Y', p_float_t(Z_SAFE_HOMING_Y_POINT, 3)); + ); #else gcode.process_subcommands_now(F("G0 F4000 X117.5 Y117.5")); #endif - gcode.process_subcommands_now(F("G0 F300 Z0")); + gcode.process_subcommands_now(F("G0F300Z0")); planner.synchronize(); redrawMenu(); } @@ -1780,8 +1791,7 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool thermalManager.wait_for_hotend(0); } popupHandler(FilChange); - sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now(TS(F("M600B1R"), thermalManager.temp_hotend[0].target)); } } break; @@ -2125,8 +2135,7 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool drawMenuItem(row, ICON_HotendTemp, F("Autotune")); else { popupHandler(PIDWait); - sprintf_P(cmd, PSTR("M303 E0 C%i S%i U1"), PID_cycles, PID_e_temp); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now(TS(F("M303E0C"), PID_cycles, 'S', PID_e_temp, 'U')); planner.synchronize(); redrawMenu(); } @@ -2192,8 +2201,7 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool drawMenuItem(row, ICON_HotendTemp, F("Autotune")); else { popupHandler(PIDWait); - sprintf_P(cmd, PSTR("M303 E-1 C%i S%i U1"), PID_cycles, PID_bed_temp); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now(TS(F("M303E-1C"), PID_cycles, 'S', PID_bed_temp, 'U')); planner.synchronize(); redrawMenu(); } @@ -2917,8 +2925,9 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool if (draw) drawMenuItem(row, ICON_StepY, F("M48 Probe Test")); else { - sprintf_P(cmd, PSTR("G28O\nM48 X%s Y%s P%i"), dtostrf((X_BED_SIZE + X_MIN_POS) / 2.0f, 1, 3, str_1), dtostrf((Y_BED_SIZE + Y_MIN_POS) / 2.0f, 1, 3, str_2), testcount); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G28O\nM48X" , p_float_t((X_BED_SIZE + X_MIN_POS) / 2.0f, 3), 'Y', p_float_t((Y_BED_SIZE + Y_MIN_POS) / 2.0f, 3), 'P', testcount)) + ); } break; case PROBE_TEST_COUNT: @@ -2970,9 +2979,7 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool #if AXIS_IS_TMC(Y) case TMC_STEPPER_CURRENT_Y: - static float stepper_current_y; - if (draw) { drawMenuItem(row, ICON_StepY, F("Stepper Y current")); stepper_current_y = stepperY.getMilliamps(); @@ -2986,9 +2993,7 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool #if AXIS_IS_TMC(Z) case TMC_STEPPER_CURRENT_Z: - static float stepper_current_z; - if (draw) { drawMenuItem(row, ICON_StepZ, F("Stepper Z current")); stepper_current_z = stepperZ.getMilliamps(); @@ -3002,17 +3007,14 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool #if AXIS_IS_TMC(E0) case TMC_STEPPER_CURRENT_E: - static float stepper_current_e; - if (draw) { drawMenuItem(row, ICON_StepE, F("Stepper E current")); stepper_current_e = stepperE0.getMilliamps(); drawFloat(stepper_current_e, row, false, 1); } - else { + else modifyValue(stepper_current_e, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperE0.rms_current(stepper_current_e); }); - } break; #endif }; @@ -3036,18 +3038,21 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool drawMenuItem(row, ICON_Back, F("Back")); #if ENABLED(PRINTCOUNTER) - char row1[50], row2[50], buf[32]; + printStatistics ps = print_job_timer.getStats(); + drawMenuItem(INFO_PRINTCOUNT, ICON_HotendTemp, + TS(ps.totalPrints, F(" prints, "), ps.finishedPrints, F(" finished")), + TS(p_float_t(ps.filamentUsed / 1000, 2), F(" m filament used")), + false, true + ); - sprintf_P(row1, PSTR("%i prints, %i finished"), ps.totalPrints, ps.finishedPrints); - sprintf_P(row2, PSTR("%s m filament used"), dtostrf(ps.filamentUsed / 1000, 1, 2, str_1)); - drawMenuItem(INFO_PRINTCOUNT, ICON_HotendTemp, row1, row2, false, true); + char buf[32]; + drawMenuItem(INFO_PRINTTIME, ICON_PrintTime, + MString<50>(F("Printed: "), duration_t(print_job_timer.getStats().printTime).toString(buf)), + MString<50>(F("Longest: "), duration_t(print_job_timer.getStats().longestPrint).toString(buf)), + false, true + ); - duration_t(print_job_timer.getStats().printTime).toString(buf); - sprintf_P(row1, PSTR("Printed: %s"), buf); - duration_t(print_job_timer.getStats().longestPrint).toString(buf); - sprintf_P(row2, PSTR("Longest: %s"), buf); - drawMenuItem(INFO_PRINTTIME, ICON_PrintTime, row1, row2, false, true); #endif drawMenuItem(INFO_SIZE, ICON_PrintSize, F(MACHINE_SIZE), nullptr, false, true); @@ -3117,11 +3122,10 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool gcode.home_all_axes(true); popupHandler(Level); if (mesh_conf.tilt_grid > 1) { - sprintf_P(cmd, PSTR("G29 J%i"), mesh_conf.tilt_grid); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now(TS(F("G29J"), mesh_conf.tilt_grid)); } else - gcode.process_subcommands_now(F("G29 J")); + gcode.process_subcommands_now(F("G29J")); planner.synchronize(); redrawMenu(); } @@ -3140,8 +3144,8 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool #endif #if HAS_BED_PROBE popupHandler(Level); - gcode.process_subcommands_now(F("G29 P0\nG29 P1")); - gcode.process_subcommands_now(F("G29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nG29 P3\nM420 S1")); + gcode.process_subcommands_now(F("G29P0\nG29P1")); + gcode.process_subcommands_now(F("G29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nM420S1")); planner.synchronize(); updateStatus("Probed all reachable points"); popupHandler(SaveLevel); @@ -3884,8 +3888,7 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool switch (last_menu) { case Prepare: popupHandler(FilChange); - sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.temp_hotend[0].target)); break; #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) case ChangeFilament: @@ -3904,8 +3907,7 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool break; case CHANGEFIL_CHANGE: popupHandler(FilChange); - sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.temp_hotend[0].target)); break; } break; @@ -4205,8 +4207,7 @@ void CrealityDWIN::valueControl() { sync_plan_position(); } else if (active_menu == Tune && selection == TUNE_ZOFFSET) { - sprintf_P(cmd, PSTR("M290 Z%s"), dtostrf((tempvalue / valueunit - zoffsetvalue), 1, 3, str_1)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now(TS(F("M290Z"), p_float_t((tempvalue / valueunit - zoffsetvalue), 3))); } if (TERN0(HAS_HOTEND, valuepointer == &thermalManager.temp_hotend[0].pid.Ki) || TERN0(HAS_HEATED_BED, valuepointer == &thermalManager.temp_bed.pid.Ki)) tempvalue = scalePID_i(tempvalue); @@ -4388,14 +4389,11 @@ void CrealityDWIN::printScreenControl() { card.startOrResumeFilePrinting(); TERN_(POWER_LOSS_RECOVERY, recovery.prepare()); #else - char cmd[20]; #if HAS_HEATED_BED - sprintf_P(cmd, PSTR("M140 S%i"), pausebed); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now(TS(F("M140 S"), pausebed)); #endif #if HAS_EXTRUDERS - sprintf_P(cmd, PSTR("M109 S%i"), pausetemp); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now(TS(F("M109 S"), pausetemp)); #endif TERN_(HAS_FAN, thermalManager.fan_speed[0] = pausefan); planner.synchronize(); @@ -4494,10 +4492,8 @@ void CrealityDWIN::popupControl() { #if HAS_BED_PROBE case ManualProbing: if (selection == 0) { - char buf[80]; const float dif = probe.probe_at_point(current_position.x, current_position.y, PROBE_PT_STOW, 0, false) - corner_avg; - sprintf_P(buf, dif > 0 ? PSTR("Corner is %smm high") : PSTR("Corner is %smm low"), dtostrf(abs(dif), 1, 3, str_1)); - updateStatus(buf); + updateStatus(TS(F("Corner is "), p_float_t(abs(dif), 3), "mm ", dif > 0 ? F("high") : F("low"))); } else { redrawMenu(true, true, false); @@ -4517,8 +4513,7 @@ void CrealityDWIN::popupControl() { thermalManager.wait_for_hotend(0); } popupHandler(FilChange); - sprintf_P(cmd, PSTR("M600 B1 R%i"), thermalManager.temp_hotend[0].target); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now(TS(F("M600B1R"), thermalManager.temp_hotend[0].target)); } } else diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp index 817699fd8a..3cf89e7b3e 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp @@ -159,7 +159,7 @@ void MarlinUI::draw_kill_screen() { dwinIconShow(ICON, ICON_Halted, (LCD_PIXEL_WIDTH - 96) / 2, 40); #endif - uint8_t slen = utf8_strlen(status_message); + uint8_t slen = status_message.glyphs(); lcd_moveto(cx - (slen / 2), cy - 1); lcd_put_u8str(status_message); @@ -185,13 +185,8 @@ void MarlinUI::draw_status_message(const bool blink) { constexpr uint8_t max_status_chars = (LCD_PIXEL_WIDTH) / (STAT_FONT_WIDTH); auto status_changed = []{ - static uint16_t old_hash = 0x0000; - uint16_t hash = 0x0000; - for (uint8_t i = 0; i < MAX_MESSAGE_LENGTH; i++) { - const char c = ui.status_message[i]; - if (!c) break; - hash = ((hash << 1) | (hash >> 15)) ^ c; - } + static MString<>::hash_t old_hash = 0x0000; + const MString<>::hash_t hash = ui.status_message.hash(); const bool hash_changed = hash != old_hash; old_hash = hash; return hash_changed || !did_first_redraw; @@ -201,7 +196,7 @@ void MarlinUI::draw_status_message(const bool blink) { static bool last_blink = false; // Get the UTF8 character count of the string - uint8_t slen = utf8_strlen(status_message); + uint8_t slen = status_message.glyphs(); // If the string fits into the LCD, just print it and do not scroll it if (slen <= max_status_chars) { @@ -247,7 +242,7 @@ void MarlinUI::draw_status_message(const bool blink) { if (status_changed()) { // Get the UTF8 character count of the string - uint8_t slen = utf8_strlen(status_message); + uint8_t slen = status_message.glyphs(); // Just print the string to the LCD lcd_put_u8str_max(status_message, max_status_chars); diff --git a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp index 435da10a2a..d4e2262be1 100644 --- a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp +++ b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp @@ -75,12 +75,13 @@ uint8_t BedLevelToolsClass::mesh_y = 0; uint8_t BedLevelToolsClass::tilt_grid = 1; bool drawing_mesh = false; -char cmd[MAX_CMD_SIZE+16], str_1[16], str_2[16], str_3[16]; #if ENABLED(AUTO_BED_LEVELING_UBL) void BedLevelToolsClass::manual_value_update(const uint8_t mesh_x, const uint8_t mesh_y, bool undefined/*=false*/) { - sprintf_P(cmd, PSTR("M421 I%i J%i Z%s %s"), mesh_x, mesh_y, dtostrf(current_position.z, 1, 3, str_1), undefined ? "N" : ""); + MString cmd; + cmd.set(F("M421 I"), mesh_x, 'J', mesh_y, 'Z', p_float_t(current_position.z, 3)); + if (undefined) cmd += F(" N"); gcode.process_subcommands_now(cmd); planner.synchronize(); } @@ -126,8 +127,9 @@ char cmd[MAX_CMD_SIZE+16], str_1[16], str_2[16], str_3[16]; #else void BedLevelToolsClass::manual_value_update(const uint8_t mesh_x, const uint8_t mesh_y) { - sprintf_P(cmd, PSTR("G29 I%i J%i Z%s"), mesh_x, mesh_y, dtostrf(current_position.z, 1, 3, str_1)); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now( + TS(F("G29 I"), mesh_x, 'J', mesh_y, 'Z', p_float_t(current_position.z, 3)) + ); planner.synchronize(); } @@ -144,10 +146,8 @@ void BedLevelToolsClass::manual_move(const uint8_t mesh_x, const uint8_t mesh_y, else { DWIN_Show_Popup(ICON_BLTouch, F("Moving to Point"), F("Please wait until done.")); HMI_SaveProcessID(NothingToDo); - sprintf_P(cmd, PSTR("G0 F300 Z%s"), dtostrf(Z_CLEARANCE_BETWEEN_PROBES, 1, 3, str_1)); - gcode.process_subcommands_now(cmd); - sprintf_P(cmd, PSTR("G42 F4000 I%i J%i"), mesh_x, mesh_y); - gcode.process_subcommands_now(cmd); + gcode.process_subcommands_now(TS(F("G0 F300 Z"), p_float_t(Z_CLEARANCE_BETWEEN_PROBES, 3))); + gcode.process_subcommands_now(TS(F("G42 F4000 I"), mesh_x, F(" J"), mesh_y)); planner.synchronize(); current_position.z = goto_mesh_value ? bedlevel.z_values[mesh_x][mesh_y] : Z_CLEARANCE_BETWEEN_PROBES; planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder); @@ -170,13 +170,13 @@ void BedLevelToolsClass::MoveToZ() { bedLevelTools.manual_move(bedLevelTools.mesh_x, bedLevelTools.mesh_y, true); } void BedLevelToolsClass::ProbeXY() { - const uint16_t zclear = Z_CLEARANCE_DEPLOY_PROBE; - sprintf_P(cmd, PSTR("G0Z%i\nG30X%sY%s"), - zclear, - dtostrf(bedlevel.get_mesh_x(bedLevelTools.mesh_x), 1, 2, str_1), - dtostrf(bedlevel.get_mesh_y(bedLevelTools.mesh_y), 1, 2, str_2) + gcode.process_subcommands_now( + MString( + F("G28O\nG0Z"), uint16_t(Z_CLEARANCE_DEPLOY_PROBE), + F("\nG30X"), p_float_t(bedlevel.get_mesh_x(bedLevelTools.mesh_x), 2), + F("Y"), p_float_t(bedlevel.get_mesh_y(bedLevelTools.mesh_y), 2) + ) ); - gcode.process_subcommands_now(cmd); } void BedLevelToolsClass::mesh_reset() { @@ -277,20 +277,16 @@ bool BedLevelToolsClass::meshvalidate() { void BedLevelToolsClass::Set_Mesh_Viewer_Status() { // TODO: draw gradient with values as a legend instead float v_max = abs(get_max_value()), v_min = abs(get_min_value()), range = _MAX(v_min, v_max); - if (v_min > 3e+10F) v_min = 0.0000001; - if (v_max > 3e+10F) v_max = 0.0000001; - if (range > 3e+10F) range = 0.0000001; - char msg[46]; - if (viewer_asymmetric_range) { - dtostrf(-v_min, 1, 3, str_1); - dtostrf( v_max, 1, 3, str_2); - } - else { - dtostrf(-range, 1, 3, str_1); - dtostrf( range, 1, 3, str_2); - } - sprintf_P(msg, PSTR("Red %s..0..%s Green"), str_1, str_2); - ui.set_status(msg); + if (v_min > 3e+10f) v_min = 0.0000001; + if (v_max > 3e+10f) v_max = 0.0000001; + if (range > 3e+10f) range = 0.0000001; + ui.set_status( + &MString<45>( + F("Red "), p_float_t(viewer_asymmetric_range ? -v_min : -range, 3), + F("..0.."), p_float_t(viewer_asymmetric_range ? v_max : range, 3), + F(" Green") + ) + ); drawing_mesh = false; } diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index 624ea23385..51a53741ef 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -480,7 +480,7 @@ void DWIN_DrawStatusLine(FSTR_P fstr) { DWIN_DrawStatusLine(FTOP(fstr)); } // Clear & reset status line void DWIN_ResetStatusLine() { - ui.status_message[0] = 0; + ui.status_message.clear(); DWIN_CheckStatusMessage(); } @@ -492,18 +492,19 @@ uint32_t GetHash(char * str) { return hash; } +// Check for a change in the status message void DWIN_CheckStatusMessage() { - static uint32_t old_hash = 0; - uint32_t hash = GetHash(&ui.status_message[0]); + static MString<>::hash_t old_hash = 0x0000; + const MString<>::hash_t hash = ui.status_message.hash(); hash_changed = hash != old_hash; old_hash = hash; -}; +} void DWIN_DrawStatusMessage() { #if ENABLED(STATUS_MESSAGE_SCROLLING) // Get the UTF8 character count of the string - uint8_t slen = utf8_strlen(ui.status_message); + uint8_t slen = ui.status_message.glyphs(); // If the string fits the status line do not scroll it if (slen <= LCD_WIDTH) { @@ -539,7 +540,7 @@ void DWIN_DrawStatusMessage() { #else if (hash_changed) { - ui.status_message[LCD_WIDTH] = 0; + ui.status_message.trunc(LCD_WIDTH); DWIN_DrawStatusLine(ui.status_message); hash_changed = false; } @@ -567,17 +568,16 @@ void Draw_Print_ProgressBar() { } void Draw_Print_ProgressElapsed() { - char buf[10]; + MString<12> buf; duration_t elapsed = print_job_timer.duration(); // Print timer - sprintf_P(buf, PSTR("%02i:%02i "), (uint16_t)(elapsed.value / 3600), ((uint16_t)elapsed.value % 3600) / 60); + buf.setf(F("%02i:%02i "), uint16_t(elapsed.value / 3600), (uint16_t(elapsed.value) % 3600) / 60); DWINUI::Draw_String(HMI_data.Text_Color, HMI_data.Background_Color, 47, 192, buf); } #if ENABLED(SHOW_REMAINING_TIME) void Draw_Print_ProgressRemain() { - const uint32_t _remain_time = ui.get_remaining_time(); - char buf[10]; - sprintf_P(buf, PSTR("%02i:%02i "), (uint16_t)(_remain_time / 3600), ((uint16_t)_remain_time % 3600) / 60); + MString<12> buf; + buf.setf(F("%02i:%02i "), _remain_time / 3600, (_remain_time % 3600) / 60); DWINUI::Draw_String(HMI_data.Text_Color, HMI_data.Background_Color, 181, 192, buf); } #endif @@ -1497,8 +1497,9 @@ void DWIN_LevelingDone() { #if HAS_MESH void DWIN_MeshUpdate(const int8_t cpos, const int8_t tpos, const_float_t zval) { - char str_1[6] = ""; - ui.status_printf(0, F(S_FMT " %i/%i Z=%s"), GET_TEXT_F(MSG_PROBING_POINT), cpos, tpos, dtostrf(zval, 1, 2, str_1)); + ui.set_status( + &MString<32>(GET_TEXT_F(MSG_PROBING_POINT), ' ', cpos, '/', tpos, F(" Z="), p_float_t(zval, 2)) + ); } #endif @@ -2051,30 +2052,25 @@ void AutoHome() { queue.inject_P(G28_STR); } SetPFloatOnClick(Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX, 2, ApplyZOffset, LiveZOffset); } -#endif // HAS_ZOFFSET_ITEM - -void SetMoveZto0() { - #if ENABLED(Z_SAFE_HOMING) - char cmd[54], str_1[5], str_2[5]; - sprintf_P(cmd, PSTR("G28XYO\nG28Z\nG0X%sY%sF5000\nG0Z0F300\nM400"), - dtostrf(Z_SAFE_HOMING_X_POINT, 1, 1, str_1), - dtostrf(Z_SAFE_HOMING_Y_POINT, 1, 1, str_2) - ); - gcode.process_subcommands_now(cmd); - #else - TERN_(HAS_LEVELING, set_bed_leveling_enabled(false)); - gcode.process_subcommands_now(F("G28Z\nG0Z0F300\nM400")); - #endif - ui.reset_status(); - DONE_BUZZ(true); -} - -#if DISABLED(HAS_BED_PROBE) - void HomeZandDisable() { - SetMoveZto0(); - DisableMotors(); + void SetMoveZto0() { + #if ENABLED(Z_SAFE_HOMING) + gcode.process_subcommands_now(MString<54>(F("G28XYO\nG28Z\nG0F5000X"), Z_SAFE_HOMING_X_POINT, F("Y"), Z_SAFE_HOMING_Y_POINT, F("\nG0Z0F300\nM400"))); + #else + TERN_(HAS_LEVELING, set_bed_leveling_enabled(false)); + gcode.process_subcommands_now(F("G28Z\nG0Z0F300\nM400")); + #endif + ui.reset_status(); + DONE_BUZZ(true); } -#endif + + #if !HAS_BED_PROBE + void HomeZandDisable() { + SetMoveZto0(); + DisableMotors(); + } + #endif + +#endif // HAS_ZOFFSET_ITEM #if HAS_PREHEAT #define _DoPreheat(N) void DoPreheat##N() { ui.preheat_all(N-1); }\ @@ -2322,20 +2318,16 @@ void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refr #if HAS_BED_PROBE float Tram(const uint8_t point) { - char cmd[100] = ""; static bool inLev = false; - float xpos = 0, ypos = 0, zval = 0; - char str_1[6] = "", str_2[6] = "", str_3[6] = ""; if (inLev) return NAN; + float xpos = 0, ypos = 0, zval = 0; TramXY(point, xpos, ypos); if (HMI_data.FullManualTramming) { - sprintf_P(cmd, PSTR("M420S0\nG28O\nG90\nG0Z5F300\nG0X%sY%sF5000\nG0Z0F300"), - dtostrf(xpos, 1, 1, str_1), - dtostrf(ypos, 1, 1, str_2) - ); - queue.inject(cmd); + queue.inject(MString<100>( + F("M420S0\nG28O\nG90\nG0F300Z5\nG0F5000X"), p_float_t(xpos, 1), 'Y', p_float_t(ypos, 1), F("\nG0F300Z0") + )); } else { // AUTO_BED_LEVELING_BILINEAR does not define MESH_INSET @@ -2360,14 +2352,8 @@ void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refr zval = probe.probe_at_point(xpos, ypos, PROBE_PT_STOW); if (isnan(zval)) LCD_MESSAGE(MSG_ZPROBE_OUT); - else { - sprintf_P(cmd, PSTR("X:%s, Y:%s, Z:%s"), - dtostrf(xpos, 1, 1, str_1), - dtostrf(ypos, 1, 1, str_2), - dtostrf(zval, 1, 2, str_3) - ); - ui.set_status(cmd); - } + else + ui.set_status(TS(F("X:"), p_float_t(xpos, 1), F(" Y:"), p_float_t(ypos, 1), F(" Z:"))); inLev = false; } return zval; @@ -2378,10 +2364,9 @@ void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refr void Tram(const uint8_t point) { float xpos = 0, ypos = 0; TramXY(point, xpos, ypos); - - char cmd[100] = "", str_1[6] = "", str_2[6] = ""; - sprintf_P(cmd, PSTR("M420S0\nG28O\nG90\nG0Z5F300\nG0X%sY%sF5000\nG0Z0F300"), dtostrf(xpos, 1, 1, str_1), dtostrf(ypos, 1, 1, str_2)); - queue.inject(cmd); + queue.inject(MString<100>( + F("M420S0\nG28O\nG90\nG0F300Z5\nG0F5000X"), p_float_t(xpos, 1), 'Y', p_float_t(ypos, 1), F("\nG0F300Z0") + )); } #endif @@ -3762,13 +3747,9 @@ void Draw_Steps_Menu() { #if DWIN_PID_TUNE void SetPID(celsius_t t, heater_id_t h) { - char cmd[53] = ""; - char str_1[5] = "", str_2[5] = ""; - sprintf_P(cmd, PSTR("G28OXY\nG0Z5F300\nG0X%sY%sF5000\nM84\nM400"), - dtostrf(X_CENTER, 1, 1, str_1), - dtostrf(Y_CENTER, 1, 1, str_2) + gcode.process_subcommands_now( + MString<60>(F("G28OXY\nG0Z5F300\nG0X"), X_CENTER, F("Y"), Y_CENTER, F("F5000\nM84\nM400")) ); - gcode.process_subcommands_now(cmd); thermalManager.PID_autotune(t, h, HMI_data.PidCycles, true); } void SetPidCycles() { SetPIntOnClick(3, 50); } @@ -3968,11 +3949,8 @@ void Draw_Steps_Menu() { void UBLMeshTilt() { NOLESS(bedlevel.storage_slot, 0); - char buf[9]; - if (bedLevelTools.tilt_grid > 1) { - sprintf_P(buf, PSTR("G29J%i"), bedLevelTools.tilt_grid); - gcode.process_subcommands_now(buf); - } + if (bedLevelTools.tilt_grid > 1) + gcode.process_subcommands_now(TS(F("G29J"), bedLevelTools.tilt_grid)); else gcode.process_subcommands_now(F("G29J")); LCD_MESSAGE(MSG_UBL_MESH_TILTED); diff --git a/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp b/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp index 3dddbe6f61..c0b12c5946 100644 --- a/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp +++ b/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp @@ -198,26 +198,24 @@ bool Has_Preview() { void Preview_DrawFromSD() { if (Has_Preview()) { - char buf[46]; - char str_1[6] = ""; - char str_2[6] = ""; - char str_3[6] = ""; + MString<45> buf; + char str_1[6] = "", str_2[6] = "", str_3[6] = ""; dwinDrawRectangle(1, HMI_data.Background_Color, 0, 0, DWIN_WIDTH, STATUS_Y - 1); if (fileprop.time) { - sprintf_P(buf, PSTR("Estimated time: %i:%02i"), (uint16_t)fileprop.time / 3600, ((uint16_t)fileprop.time % 3600) / 60); - DWINUI::Draw_String(20, 10, buf); + buf.setf(F("Estimated time: %i:%02i"), (uint16_t)fileprop.time / 3600, ((uint16_t)fileprop.time % 3600) / 60); + DWINUI::Draw_String(20, 10, &buf); } if (fileprop.filament) { - sprintf_P(buf, PSTR("Filament used: %s m"), dtostrf(fileprop.filament, 1, 2, str_1)); - DWINUI::Draw_String(20, 30, buf); + buf.setf(F("Filament used: %s m"), dtostrf(fileprop.filament, 1, 2, str_1)); + DWINUI::Draw_String(20, 30, &buf); } if (fileprop.layer) { - sprintf_P(buf, PSTR("Layer height: %s mm"), dtostrf(fileprop.layer, 1, 2, str_1)); - DWINUI::Draw_String(20, 50, buf); + buf.setf(F("Layer height: %s mm"), dtostrf(fileprop.layer, 1, 2, str_1)); + DWINUI::Draw_String(20, 50, &buf); } if (fileprop.width) { - sprintf_P(buf, PSTR("Volume: %sx%sx%s mm"), dtostrf(fileprop.width, 1, 1, str_1), dtostrf(fileprop.length, 1, 1, str_2), dtostrf(fileprop.height, 1, 1, str_3)); - DWINUI::Draw_String(20, 70, buf); + buf.setf(F("Volume: %sx%sx%s mm"), dtostrf(fileprop.width, 1, 1, str_1), dtostrf(fileprop.length, 1, 1, str_2), dtostrf(fileprop.height, 1, 1, str_3)); + DWINUI::Draw_String(20, 70, &buf); } DWINUI::Draw_Button(BTN_Print, 26, 290); DWINUI::Draw_Button(BTN_Cancel, 146, 290); diff --git a/Marlin/src/lcd/e3v2/proui/printstats.cpp b/Marlin/src/lcd/e3v2/proui/printstats.cpp index 093040ebf4..993b5b7b70 100644 --- a/Marlin/src/lcd/e3v2/proui/printstats.cpp +++ b/Marlin/src/lcd/e3v2/proui/printstats.cpp @@ -43,7 +43,6 @@ PrintStatsClass PrintStats; void PrintStatsClass::Draw() { - char buf[50] = ""; char str[30] = ""; constexpr int8_t MRG = 30; @@ -53,18 +52,13 @@ void PrintStatsClass::Draw() { DWINUI::Draw_Button(BTN_Continue, 86, 250); printStatistics ps = print_job_timer.getStats(); - sprintf_P(buf, PSTR(S_FMT ": %i"), GET_TEXT(MSG_INFO_PRINT_COUNT), ps.totalPrints); - DWINUI::Draw_String(MRG, 80, buf); - sprintf_P(buf, PSTR(S_FMT ": %i"), GET_TEXT(MSG_INFO_COMPLETED_PRINTS), ps.finishedPrints); - DWINUI::Draw_String(MRG, 100, buf); + DWINUI::Draw_String(MRG, 80, TS(GET_TEXT_F(MSG_INFO_PRINT_COUNT), F(": "), ps.totalPrints)); + DWINUI::Draw_String(MRG, 100, TS(GET_TEXT_F(MSG_INFO_COMPLETED_PRINTS), F(": "), ps.finishedPrints)); duration_t(print_job_timer.getStats().printTime).toDigital(str, true); - sprintf_P(buf, PSTR(S_FMT ": %s"), GET_TEXT(MSG_INFO_PRINT_TIME), str); - DWINUI::Draw_String(MRG, 120, buf); + DWINUI::Draw_String(MRG, 120, MString<50>(GET_TEXT_F(MSG_INFO_PRINT_TIME), F(": "), str)); duration_t(print_job_timer.getStats().longestPrint).toDigital(str, true); - sprintf_P(buf, PSTR(S_FMT ": %s"), GET_TEXT(MSG_INFO_PRINT_LONGEST), str); - DWINUI::Draw_String(MRG, 140, buf); - sprintf_P(buf, PSTR(S_FMT ": %s m"), GET_TEXT(MSG_INFO_PRINT_FILAMENT), dtostrf(ps.filamentUsed / 1000, 1, 2, str)); - DWINUI::Draw_String(MRG, 160, buf); + DWINUI::Draw_String(MRG, 140, MString<50>(GET_TEXT(MSG_INFO_PRINT_LONGEST), F(": "), str)); + DWINUI::Draw_String(MRG, 160, TS(GET_TEXT_F(MSG_INFO_PRINT_FILAMENT), F(": "), p_float_t(ps.filamentUsed / 1000, 2), F(" m"))); } void PrintStatsClass::Reset() { diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index db5d0a635f..2d40baa9d1 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -71,7 +71,7 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; #if ENABLED(STATUS_MESSAGE_SCROLLING) && ANY(HAS_WIRED_LCD, DWIN_LCD_PROUI) uint8_t MarlinUI::status_scroll_offset; // = 0 #endif - char MarlinUI::status_message[MAX_MESSAGE_LENGTH + 1]; + MString MarlinUI::status_message; uint8_t MarlinUI::alert_level; // = 0 #if HAS_STATUS_MESSAGE_TIMEOUT millis_t MarlinUI::status_message_expire_ms; // = 0 @@ -492,10 +492,6 @@ void MarlinUI::init() { #endif // HAS_MARLINUI_MENU - //////////////////////////////////////////// - ///////////// Keypad Handling ////////////// - //////////////////////////////////////////// - #if IS_RRW_KEYPAD && HAS_ENCODER_ACTION volatile uint8_t MarlinUI::keypad_buttons; @@ -641,7 +637,7 @@ void MarlinUI::init() { // Expire the message if a job is active and the bar has ticks if (get_progress_percent() > 2 && !print_job_timer.isPaused()) { if (ELAPSED(ms, expire_status_ms)) { - status_message[0] = '\0'; + status_message.clear(); expire_status_ms = 0; } } @@ -776,10 +772,6 @@ void MarlinUI::init() { #endif } - //////////////////////////////////////////// - /////////////// Manual Move //////////////// - //////////////////////////////////////////// - #if HAS_MARLINUI_MENU ManualMove MarlinUI::manual_move{}; @@ -1433,49 +1425,27 @@ void MarlinUI::init() { #endif // HAS_WIRED_LCD -#if HAS_STATUS_MESSAGE +void MarlinUI::host_notify_P(PGM_P const pstr) { + TERN_(HOST_STATUS_NOTIFICATIONS, hostui.notify_P(pstr)); +} +void MarlinUI::host_notify(const char * const cstr) { + TERN_(HOST_STATUS_NOTIFICATIONS, hostui.notify(cstr)); +} +void MarlinUI::host_status() { + TERN_(HOST_STATUS_NOTIFICATIONS, hostui.notify(status_message)); +} - //////////////////////////////////////////// - ////////////// Status Message ////////////// - //////////////////////////////////////////// +#include + +#if HAS_STATUS_MESSAGE #if ENABLED(EXTENSIBLE_UI) #include "extui/ui_api.h" #endif - bool MarlinUI::has_status() { return (status_message[0] != '\0'); } - - void MarlinUI::set_status(const char * const cstr, const bool persist) { - if (alert_level) return; - - TERN_(HOST_STATUS_NOTIFICATIONS, hostui.notify(cstr)); - - // Here we have a problem. The message is encoded in UTF8, so - // arbitrarily cutting it will be a problem. We MUST be sure - // that there is no cutting in the middle of a multibyte character! - - // Get a pointer to the null terminator - const char* pend = cstr + strlen(cstr); - - // If length of supplied UTF8 string is greater than - // our buffer size, start cutting whole UTF8 chars - while ((pend - cstr) > MAX_MESSAGE_LENGTH) { - --pend; - while (!START_OF_UTF8_CHAR(*pend)) --pend; - }; - - // At this point, we have the proper cut point. Use it - uint8_t maxLen = pend - cstr; - strncpy(status_message, cstr, maxLen); - status_message[maxLen] = '\0'; - - finish_status(persist); - } - /** * Reset the status message */ - void MarlinUI::reset_status(const bool no_welcome) { #if SERVICE_INTERVAL_1 > 0 static PGMSTR(service1, "> " SERVICE_NAME_1 "!"); @@ -1492,7 +1462,7 @@ void MarlinUI::init() { msg = GET_TEXT_F(MSG_PRINT_PAUSED); #if HAS_MEDIA else if (IS_SD_PRINTING()) - return set_status(card.longest_filename(), true); + return set_status_no_expire(card.longest_filename()); #endif else if (print_job_timer.isRunning()) msg = GET_TEXT_F(MSG_PRINTING); @@ -1514,65 +1484,85 @@ void MarlinUI::init() { else return; - set_status(msg, -1); + set_min_status(msg); } /** - * Set Status with a fixed string and alert level. - * @param fstr A constant F-string to set as the status. + * Try to set the alert level. * @param level Alert level. Negative to ignore and reset the level. Non-zero never expires. + * @return TRUE if the level could NOT be set. */ - void MarlinUI::set_status(FSTR_P const fstr, int8_t level) { - // Alerts block lower priority messages + bool MarlinUI::set_alert_level(int8_t &level) { if (level < 0) level = alert_level = 0; - if (level < alert_level) return; + if (level < alert_level) return true; alert_level = level; - - PGM_P const pstr = FTOP(fstr); - - // Since the message is encoded in UTF8 it must - // only be cut on a character boundary. - - // Get a pointer to the null terminator - PGM_P pend = pstr + strlen_P(pstr); - - // If length of supplied UTF8 string is greater than - // the buffer size, start cutting whole UTF8 chars - while ((pend - pstr) > MAX_MESSAGE_LENGTH) { - --pend; - while (!START_OF_UTF8_CHAR(pgm_read_byte(pend))) --pend; - }; - - // At this point, we have the proper cut point. Use it - uint8_t maxLen = pend - pstr; - strncpy_P(status_message, pstr, maxLen); - status_message[maxLen] = '\0'; - - TERN_(HOST_STATUS_NOTIFICATIONS, hostui.notify(fstr)); - - finish_status(level > 0); + return false; } - void MarlinUI::set_alert_status(FSTR_P const fstr) { - set_status(fstr, 1); + /** + * @brief Set Status with a C- or P-string and alert level. + * + * @param ustr A C- or P-string, according to pgm. + * @param level Alert level. Negative to ignore and reset the level. Non-zero never expires. + * @param pgm Program string flag. Only relevant on AVR. + */ + void MarlinUI::_set_status_and_level(const char * const ustr, int8_t level, const bool pgm) { + if (set_alert_level(level)) return; + + pgm ? host_notify_P(ustr) : host_notify(ustr); + + MString<30> msg; + pgm ? msg.set_P(ustr) : msg.set(ustr); + status_message.set(&msg).utrunc(MAX_MESSAGE_LENGTH); + + finish_status(level > 0); // Persist if the status has a level + } + + /** + * @brief Set Status with a C- or P-string and persistence flag. + * + * @param ustr A C- or P-string, according to pgm. + * @param persist Don't expire (Requires STATUS_EXPIRE_SECONDS) - and set alert level to 1. + * @param pgm Program string flag. Only relevant on AVR. + */ + void MarlinUI::_set_status(const char * const ustr, const bool persist, const bool pgm) { + if (alert_level) return; + + pgm ? host_notify_P(ustr) : host_notify(ustr); + + // Remove the last partial Unicode glyph, if any + (pgm ? status_message.set_P(ustr) : status_message.set(ustr)).utrunc(MAX_MESSAGE_LENGTH); + + finish_status(persist); + } + + /** + * @brief Set Alert with a C- or P-string and alert level. + * + * @param ustr A C- or P-string, according to pgm. + * @param level Alert level. Negative to ignore and reset the level. Non-zero never expires. + * @param pgm Program string flag. Only relevant on AVR. + */ + void MarlinUI::_set_alert(const char * const ustr, const int8_t level, const bool pgm) { + pgm ? set_status_and_level_P(ustr, level) : set_status_and_level(ustr, level); TERN_(HAS_TOUCH_SLEEP, wakeup_screen()); TERN_(HAS_MARLINUI_MENU, return_to_status()); } - #include - - void MarlinUI::status_printf(int8_t level, FSTR_P const fmt, ...) { - // Alerts block lower priority messages - if (level < 0) level = alert_level = 0; - if (level < alert_level) return; - alert_level = level; + /** + * @brief Set a status with a format string and parameters. + * + * @param pfmt A constant format P-string + */ + void MarlinUI::status_printf_P(int8_t level, PGM_P const fmt, ...) { + if (set_alert_level(level)) return; va_list args; - va_start(args, FTOP(fmt)); - vsnprintf_P(status_message, MAX_MESSAGE_LENGTH, FTOP(fmt), args); + va_start(args, fmt); + vsnprintf_P(status_message, MAX_MESSAGE_LENGTH, fmt, args); va_end(args); - TERN_(HOST_STATUS_NOTIFICATIONS, hostui.notify(status_message)); + host_status(); finish_status(level > 0); } @@ -1618,14 +1608,14 @@ void MarlinUI::init() { void MarlinUI::advance_status_scroll() { // Advance by one UTF8 code-word - if (status_scroll_offset < utf8_strlen(status_message)) + if (status_scroll_offset < status_message.glyphs()) while (!START_OF_UTF8_CHAR(status_message[++status_scroll_offset])); else status_scroll_offset = 0; } char* MarlinUI::status_and_len(uint8_t &len) { - char *out = status_message + status_scroll_offset; + char *out = &status_message + status_scroll_offset; len = utf8_strlen(out); return out; } @@ -1637,14 +1627,24 @@ void MarlinUI::init() { // // Send the status line as a host notification // - void MarlinUI::set_status(const char * const cstr, const bool) { - TERN(HOST_PROMPT_SUPPORT, hostui.notify(cstr), UNUSED(cstr)); + void MarlinUI::_set_status(const char * const cstr, const bool, const bool pgm) { + host_notify(cstr); } - void MarlinUI::set_status(FSTR_P const fstr, const int8_t) { - TERN(HOST_PROMPT_SUPPORT, hostui.notify(fstr), UNUSED(fstr)); + void MarlinUI::_set_alert(const char * const cstr, const int8_t, const bool pgm) { + host_notify(cstr); } - void MarlinUI::status_printf(int8_t, FSTR_P const fstr, ...) { - TERN(HOST_PROMPT_SUPPORT, hostui.notify(fstr), UNUSED(fstr)); + void MarlinUI::_set_status_and_level(const char * const ustr, const int8_t=0, const bool pgm) { + pgm ? host_notify_P(ustr) : host_notify(ustr); + } + void MarlinUI::status_printf_P(int8_t level, PGM_P const fmt, ...) { + MString<30> msg; + + va_list args; + va_start(args, fmt); + vsnprintf_P(&msg, 30, fmt, args); + va_end(args); + + host_status(); } #endif // !HAS_STATUS_MESSAGE diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index 6e0205bdfb..8810dcac72 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -53,8 +53,6 @@ #include "e3v2/proui/dwin.h" #endif -#define START_OF_UTF8_CHAR(C) (((C) & 0xC0u) != 0x80U) - typedef bool (*statusResetFunc_t)(); #if HAS_WIRED_LCD @@ -360,6 +358,11 @@ public: static constexpr uint8_t get_progress_percent() { return 0; } #endif + static void host_notify_P(PGM_P const fstr); + static void host_notify(FSTR_P const fstr) { host_notify_P(FTOP(fstr)); } + static void host_notify(const char * const cstr); + static void host_status(); + #if HAS_STATUS_MESSAGE #if ANY(HAS_WIRED_LCD, DWIN_LCD_PROUI) @@ -372,7 +375,7 @@ public: #define MAX_MESSAGE_LENGTH 63 #endif - static char status_message[]; + static MString status_message; static uint8_t alert_level; // Higher levels block lower levels #if HAS_STATUS_MESSAGE_TIMEOUT @@ -385,24 +388,115 @@ public: static char* status_and_len(uint8_t &len); #endif - static bool has_status(); + static bool has_status() { return !status_message.empty(); } + + /** + * Try to set the alert level. + * @param level Alert level. Negative to ignore and reset the level. Non-zero never expires. + * @return TRUE if the level could NOT be set. + */ + static bool set_alert_level(int8_t &level); + static void reset_status(const bool no_welcome=false); - static void set_alert_status(FSTR_P const fstr); static void reset_alert_level() { alert_level = 0; } static statusResetFunc_t status_reset_callback; static void set_status_reset_fn(const statusResetFunc_t fn=nullptr) { status_reset_callback = fn; } + #else + + #define MAX_MESSAGE_LENGTH 1 static constexpr bool has_status() { return false; } + + static bool set_alert_level(int8_t) { return false; } + static void reset_status(const bool=false) {} - static void set_alert_status(FSTR_P const) {} static void reset_alert_level() {} + static void set_status_reset_fn(const statusResetFunc_t=nullptr) {} + #endif - static void set_status(const char * const cstr, const bool persist=false); - static void set_status(FSTR_P const fstr, const int8_t level=0); - static void status_printf(int8_t level, FSTR_P const fmt, ...); + /** + * @brief Set Status with a C- or P-string and alert level. + * + * @param ustr A C- or P-string, according to pgm. + * @param level Alert level. Negative to ignore and reset the level. Non-zero never expires. + * @param pgm Program string flag. Only relevant on AVR. + */ + static void _set_status_and_level(const char * const ustr, int8_t level, const bool pgm=false); + + /** + * @brief Set Status with a C- or P-string and persistence flag. + * + * @param ustr A C- or P-string, according to pgm. + * @param persist Don't expire (Requires STATUS_EXPIRE_SECONDS) - and set alert level to 1. + * @param pgm Program string flag. Only relevant on AVR. + */ + static void _set_status(const char * const ustr, const bool persist, const bool pgm=false); + + /** + * @brief Set Alert with a C- or P-string and alert level. + * + * @param ustr A C- or P-string, according to pgm. + * @param level Alert level. Negative to ignore and reset the level. Non-zero never expires. + * @param pgm Program string flag. Only relevant on AVR. + */ + static void _set_alert(const char * const ustr, int8_t level, const bool pgm=false); + + static void set_status(const char * const cstr, const bool persist=false) { _set_status(cstr, persist, false); } + static void set_status_P(PGM_P const pstr, const bool persist=false) { _set_status(pstr, persist, true); } + static void set_status(FSTR_P const fstr, const bool persist=false) { set_status_P(FTOP(fstr), persist); } + + static void set_alert(const char * const cstr, const int8_t level=1) { _set_alert(cstr, level, false); } + static void set_alert_P(PGM_P const pstr, const int8_t level=1) { _set_alert(pstr, level, true); } + static void set_alert(FSTR_P const fstr, const int8_t level=1) { set_alert_P(FTOP(fstr), level); } + + /** + * @brief Set Status with a C-string and alert level. + * + * @param fstr A constant F-string to set as the status. + * @param level Alert level. Negative to ignore and reset the level. Non-zero never expires. + */ + static void set_status_and_level(const char * const cstr, const int8_t level) { _set_status_and_level(cstr, level, false); } + + /** + * @brief Set Status with a P-string and alert level. + * + * @param ustr A C- or P-string, according to pgm. + * @param level Alert level. Negative to ignore and reset the level. Non-zero never expires. + */ + static void set_status_and_level_P(PGM_P const pstr, const int8_t level) { _set_status_and_level(pstr, level, true); } + + /** + * @brief Set Status with a fixed string and alert level. + * + * @param fstr A constant F-string to set as the status. + * @param level Alert level. Negative to ignore and reset the level. Non-zero never expires. + */ + static void set_status_and_level(FSTR_P const fstr, const int8_t level) { set_status_and_level_P(FTOP(fstr), level); } + + static void set_max_status(FSTR_P const fstr) { set_status_and_level(fstr, 127); } + static void set_min_status(FSTR_P const fstr) { set_status_and_level(fstr, -1); } + + /** + * @brief Set a persistent status with a C-string. + * + * @param cstr A C-string to set as the status. + */ + static void set_status_no_expire_P(PGM_P const pstr) { set_status_P(pstr, true); } + static void set_status_no_expire(const char * const cstr) { set_status(cstr, true); } + static void set_status_no_expire(FSTR_P const fstr) { set_status(fstr, true); } + + /** + * @brief Set a status with a format string and parameters. + * + * @param pfmt A constant format P-string + */ + static void status_printf_P(int8_t level, PGM_P const pfmt, ...); + + template + static void status_printf(int8_t level, FSTR_P const ffmt, Args... more) { status_printf_P(level, FTOP(ffmt), more...); } #if HAS_DISPLAY @@ -809,7 +903,7 @@ private: #define LCD_MESSAGE_F(S) ui.set_status(F(S)) #define LCD_MESSAGE(M) ui.set_status(GET_TEXT_F(M)) -#define LCD_MESSAGE_MIN(M) ui.set_status(GET_TEXT_F(M), -1) -#define LCD_MESSAGE_MAX(M) ui.set_status(GET_TEXT_F(M), 99) -#define LCD_ALERTMESSAGE_F(S) ui.set_alert_status(F(S)) -#define LCD_ALERTMESSAGE(M) ui.set_alert_status(GET_TEXT_F(M)) +#define LCD_MESSAGE_MIN(M) ui.set_min_status(GET_TEXT_F(M)) +#define LCD_MESSAGE_MAX(M) ui.set_max_status(GET_TEXT_F(M)) +#define LCD_ALERTMESSAGE_F(S) ui.set_alert(F(S)) +#define LCD_ALERTMESSAGE(M) ui.set_alert(GET_TEXT_F(M)) diff --git a/Marlin/src/lcd/menu/menu_bed_leveling.cpp b/Marlin/src/lcd/menu/menu_bed_leveling.cpp index efc05aabde..beb9342fb9 100644 --- a/Marlin/src/lcd/menu/menu_bed_leveling.cpp +++ b/Marlin/src/lcd/menu/menu_bed_leveling.cpp @@ -138,9 +138,9 @@ // void _lcd_level_bed_moving() { if (ui.should_draw()) { - char msg[10]; - sprintf_P(msg, PSTR("%i / %u"), int(manual_probe_index + 1), total_probe_points); - MenuEditItemBase::draw_edit_screen(GET_TEXT_F(MSG_LEVEL_BED_NEXT_POINT), msg); + MString<9> msg; + msg.setf(F("%i / %u"), int(manual_probe_index + 1), total_probe_points); + MenuEditItemBase::draw_edit_screen(GET_TEXT_F(MSG_LEVEL_BED_NEXT_POINT), &msg); } ui.refresh(LCDVIEW_CALL_NO_REDRAW); if (!ui.wait_for_move) ui.goto_screen(_lcd_level_bed_get_z); diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index 6318780abb..4e9b302263 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -331,10 +331,7 @@ void menu_advanced_settings(); void bltouch_report() { FSTR_P const mode0 = F("OD"), mode1 = F("5V"); DEBUG_ECHOLNPGM("BLTouch Mode: ", bltouch.od_5v_mode ? mode1 : mode0, " (Default ", TERN(BLTOUCH_SET_5V_MODE, mode1, mode0), ")"); - char mess[21]; - strcpy_P(mess, PSTR("BLTouch Mode: ")); - strcpy_P(&mess[15], bltouch.od_5v_mode ? FTOP(mode1) : FTOP(mode0)); - ui.set_status(mess); + ui.set_status(MString<18>(F("BLTouch Mode: "), bltouch.od_5v_mode ? mode1 : mode0)); ui.return_to_status(); } #endif diff --git a/Marlin/src/lcd/menu/menu_x_twist.cpp b/Marlin/src/lcd/menu/menu_x_twist.cpp index 56872b73ee..6162a5e30d 100644 --- a/Marlin/src/lcd/menu/menu_x_twist.cpp +++ b/Marlin/src/lcd/menu/menu_x_twist.cpp @@ -112,9 +112,9 @@ void xatc_wizard_menu() { // void xatc_wizard_moving() { if (ui.should_draw()) { - char msg[10]; - sprintf_P(msg, PSTR("%i / %u"), manual_probe_index + 1, XATC_MAX_POINTS); - MenuEditItemBase::draw_edit_screen(GET_TEXT_F(MSG_LEVEL_BED_NEXT_POINT), msg); + MString<9> msg; + msg.setf(F("%i / %u"), manual_probe_index + 1, XATC_MAX_POINTS); + MenuEditItemBase::draw_edit_screen(GET_TEXT_F(MSG_LEVEL_BED_NEXT_POINT), &msg); } ui.refresh(LCDVIEW_CALL_NO_REDRAW); if (!ui.wait_for_move) ui.goto_screen(xatc_wizard_menu); diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index d11842e758..3970273af0 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -1623,22 +1623,21 @@ void prepare_line_to_destination() { } bool homing_needed_error(main_axes_bits_t axis_bits/*=main_axes_mask*/) { - if ((axis_bits &= axes_should_home(axis_bits))) { - char all_axes[] = STR_AXES_MAIN, need[NUM_AXES + 1]; - uint8_t n = 0; - LOOP_NUM_AXES(i) if (TEST(axis_bits, i)) need[n++] = all_axes[i]; - need[n] = '\0'; + if (!(axis_bits &= axes_should_home(axis_bits))) return false; - char msg[30]; - sprintf_P(msg, GET_EN_TEXT(MSG_HOME_FIRST), need); - SERIAL_ECHO_START(); - SERIAL_ECHOLN(msg); + char all_axes[] = STR_AXES_MAIN, need[NUM_AXES + 1]; + uint8_t n = 0; + LOOP_NUM_AXES(i) if (TEST(axis_bits, i)) need[n++] = all_axes[i]; + need[n] = '\0'; - sprintf_P(msg, GET_TEXT(MSG_HOME_FIRST), need); - ui.set_status(msg); - return true; - } - return false; + SString<30> msg; + msg.setf(GET_EN_TEXT_F(MSG_HOME_FIRST), need); + SERIAL_ECHO_START(); + msg.echoln(); + + msg.setf(GET_TEXT_F(MSG_HOME_FIRST), need); + ui.set_status(msg); + return true; } /** diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 204617ba83..e426e3bb4b 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -358,7 +358,7 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { FSTR_P const ds_str = deploy ? GET_TEXT_F(MSG_MANUAL_DEPLOY) : GET_TEXT_F(MSG_MANUAL_STOW); ui.return_to_status(); // To display the new status message - ui.set_status(ds_str, 99); + ui.set_max_status(ds_str); SERIAL_ECHOLN(deploy ? GET_EN_TEXT_F(MSG_MANUAL_DEPLOY) : GET_EN_TEXT_F(MSG_MANUAL_STOW)); OKAY_BUZZ(); diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index fa434c1499..3e2b2386bd 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -814,14 +814,14 @@ void MarlinSettings::postprocess() { */ bool MarlinSettings::save() { float dummyf = 0; - char ver[4] = "ERR"; + MString<4> ver(F("ERR")); if (!EEPROM_START(EEPROM_OFFSET)) return false; EEPROM_Error eeprom_error = ERR_EEPROM_NOERR; // Write or Skip version. (Flash doesn't allow rewrite without erase.) - TERN(FLASH_EEPROM_EMULATION, EEPROM_SKIP, EEPROM_WRITE)(ver); + TERN(FLASH_EEPROM_EMULATION, EEPROM_SKIP, EEPROM_WRITE)(&ver); #if ENABLED(EEPROM_INIT_NOW) EEPROM_SKIP(build_hash); // Skip the hash slot which will be written later diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 11788c3cb1..7688d83c06 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -4179,22 +4179,17 @@ void Temperature::isr() { case H_REDUNDANT: k = 'R'; break; #endif } - SERIAL_CHAR(' ', k); - #if HAS_MULTI_HOTEND - if (e >= 0) SERIAL_CHAR('0' + e); - #endif - #ifdef SERIAL_FLOAT_PRECISION - #define SFP _MIN(SERIAL_FLOAT_PRECISION, 2) - #else - #define SFP 2 - #endif - SERIAL_ECHO(AS_CHAR(':'), p_float_t(c, SFP)); - if (show_t) { SERIAL_ECHOPGM(" /", p_float_t(t, SFP)); } + #define SFP _MIN(SERIAL_FLOAT_PRECISION, 2) + + SString<50> s(' ', k); + if (TERN0(HAS_MULTI_HOTEND, e >= 0)) s += char('0' + e); + s += TS(':', p_float_t(c, SFP)); + if (show_t) { s += F(" /"); s += p_float_t(t, SFP); } #if ENABLED(SHOW_TEMP_ADC_VALUES) // Temperature MAX SPI boards do not have an OVERSAMPLENR defined - SERIAL_ECHOPGM(" (", TERN(HAS_MAXTC_LIBRARIES, k == 'T', false) ? r : r * RECIPROCAL(OVERSAMPLENR)); - SERIAL_CHAR(')'); + s.append(F(" ("), TERN(HAS_MAXTC_LIBRARIES, k == 'T', false) ? r : r * RECIPROCAL(OVERSAMPLENR), ')'); #endif + s.echo(); delay(2); } @@ -4228,23 +4223,20 @@ void Temperature::isr() { #if HAS_MULTI_HOTEND HOTEND_LOOP() print_heater_state((heater_id_t)e, degHotend(e), degTargetHotend(e) OPTARG(SHOW_TEMP_ADC_VALUES, rawHotendTemp(e))); #endif - SERIAL_ECHOPGM(" @:", getHeaterPower((heater_id_t)target_extruder)); + SString<100> s(F(" @:"), getHeaterPower((heater_id_t)target_extruder)); #if HAS_HEATED_BED - SERIAL_ECHOPGM(" B@:", getHeaterPower(H_BED)); + s.append(" B@:", getHeaterPower(H_BED)); #endif #if HAS_HEATED_CHAMBER - SERIAL_ECHOPGM(" C@:", getHeaterPower(H_CHAMBER)); + s.append(" C@:", getHeaterPower(H_CHAMBER)); #endif #if HAS_COOLER - SERIAL_ECHOPGM(" C@:", getHeaterPower(H_COOLER)); + s.append(" C@:", getHeaterPower(H_COOLER)); #endif #if HAS_MULTI_HOTEND - HOTEND_LOOP() { - SERIAL_ECHOPGM(" @", e); - SERIAL_CHAR(':'); - SERIAL_ECHO(getHeaterPower((heater_id_t)e)); - } + HOTEND_LOOP() s.append(F(" @"), e, ':', getHeaterPower((heater_id_t)e)); #endif + s.echo(); } #if ENABLED(AUTO_REPORT_TEMPERATURES) @@ -4331,11 +4323,12 @@ void Temperature::isr() { next_temp_ms = now + 1000UL; print_heater_states(target_extruder); #if TEMP_RESIDENCY_TIME > 0 - SERIAL_ECHOPGM(" W:"); + SString<20> s(F(" W:")); if (residency_start_ms) - SERIAL_ECHO(long((SEC_TO_MS(TEMP_RESIDENCY_TIME) - (now - residency_start_ms)) / 1000UL)); + s += long((SEC_TO_MS(TEMP_RESIDENCY_TIME) - (now - residency_start_ms)) / 1000UL); else - SERIAL_CHAR('?'); + s += '?'; + s.echo(); #endif SERIAL_EOL(); } @@ -4468,11 +4461,12 @@ void Temperature::isr() { next_temp_ms = now + 1000UL; print_heater_states(active_extruder); #if TEMP_BED_RESIDENCY_TIME > 0 - SERIAL_ECHOPGM(" W:"); + SString<20> s(F(" W:")); if (residency_start_ms) - SERIAL_ECHO(long((SEC_TO_MS(TEMP_BED_RESIDENCY_TIME) - (now - residency_start_ms)) / 1000UL)); + s += long((SEC_TO_MS(TEMP_BED_RESIDENCY_TIME) - (now - residency_start_ms)) / 1000UL); else - SERIAL_CHAR('?'); + s += '?'; + s.echo(); #endif SERIAL_EOL(); } @@ -4562,7 +4556,7 @@ void Temperature::isr() { const bool wants_to_cool = isProbeAboveTemp(target_temp), will_wait = !(wants_to_cool && no_wait_for_cooling); if (will_wait) - SERIAL_ECHOLNPGM("Waiting for probe to ", wants_to_cool ? F("cool down") : F("heat up"), " to ", target_temp, " degrees."); + SString<60>(F("Waiting for probe to "), wants_to_cool ? F("cool down") : F("heat up"), F(" to "), target_temp, F(" degrees.")).echoln(); #if DISABLED(BUSY_WHILE_HEATING) && ENABLED(HOST_KEEPALIVE_FEATURE) KEEPALIVE_STATE(NOT_BUSY); @@ -4600,9 +4594,8 @@ void Temperature::isr() { // Loop until the temperature is very close target if (!(wants_to_cool ? isProbeAboveTemp(target_temp) : isProbeBelowTemp(target_temp))) { - SERIAL_ECHOLN(wants_to_cool ? PSTR("Cooldown") : PSTR("Heatup")); - SERIAL_ECHOLNPGM(" complete, target probe temperature reached."); - break; + SString<60>(wants_to_cool ? F("Cooldown") : F("Heatup"), F(" complete, target probe temperature reached.")).echoln(); + break; } } @@ -4663,11 +4656,12 @@ void Temperature::isr() { next_temp_ms = now + 1000UL; print_heater_states(active_extruder); #if TEMP_CHAMBER_RESIDENCY_TIME > 0 - SERIAL_ECHOPGM(" W:"); + SString<20> s(F(" W:")); if (residency_start_ms) - SERIAL_ECHO(long((SEC_TO_MS(TEMP_CHAMBER_RESIDENCY_TIME) - (now - residency_start_ms)) / 1000UL)); + s += long((SEC_TO_MS(TEMP_CHAMBER_RESIDENCY_TIME) - (now - residency_start_ms)) / 1000UL); else - SERIAL_CHAR('?'); + s += '?'; + s.echo(); #endif SERIAL_EOL(); } @@ -4762,11 +4756,12 @@ void Temperature::isr() { next_temp_ms = now + 1000UL; print_heater_states(active_extruder); #if TEMP_COOLER_RESIDENCY_TIME > 0 - SERIAL_ECHOPGM(" W:"); + SString<20> s(F(" W:")); if (residency_start_ms) - SERIAL_ECHO(long((SEC_TO_MS(TEMP_COOLER_RESIDENCY_TIME) - (now - residency_start_ms)) / 1000UL)); + s += long((SEC_TO_MS(TEMP_COOLER_RESIDENCY_TIME) - (now - residency_start_ms)) / 1000UL); else - SERIAL_CHAR('?'); + s += '?'; + s.echo(); #endif SERIAL_EOL(); } diff --git a/Marlin/src/tests/marlin_tests.cpp b/Marlin/src/tests/marlin_tests.cpp index 89e5664345..3d14f094a2 100644 --- a/Marlin/src/tests/marlin_tests.cpp +++ b/Marlin/src/tests/marlin_tests.cpp @@ -37,6 +37,40 @@ // Startup tests are run at the end of setup() void runStartupTests() { // Call post-setup tests here to validate behaviors. + + // String with cutoff at 20 chars: + // "F-string, 1234.50, 2" + SString<20> str20; + str20 = F("F-string, "); + str20.append(1234.5f).append(',').append(' ') + .append(2345.67).append(',').append(' ') + .echoln(); + + // Truncate to "F-string" + str20.trunc(8).echoln(); + + // 100 dashes, but chopped down to DEFAULT_MSTRING_SIZE (20) + TSS(repchr_t('-', 100)).echoln(); + + // Hello World!-123456------ str(F("Hello")); + str.append(F(" World!")); + str += '-'; + str += "123"; + str += F("456"); + str += repchr_t('-', 6); + str += Spaces(3); + str += "< spaces!"; + str.eol(); + str += "^ eol!"; + + str.append("...", 1234.5f, '*', p_float_t(2345.602, 3), F(" = "), 1234.5 * 2345.602).echoln(); + + // Print it again with SERIAL_ECHOLN + auto print_char_ptr = [](char * const str) { SERIAL_ECHOLN(str); }; + print_char_ptr(str); + } // Periodic tests are run from within loop() From a5ac50fcbf541dcd33fe35979b767bbcf0568884 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 28 Jun 2023 00:25:35 +0000 Subject: [PATCH 583/659] [cron] Bump distribution date (2023-06-28) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 20f8f19e86..a1acaf447f 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-26" +//#define STRING_DISTRIBUTION_DATE "2023-06-28" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 245589c3ec..413ff93ac1 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-26" + #define STRING_DISTRIBUTION_DATE "2023-06-28" #endif /** From 46b5753f5653401bc2d1d3120041a897384db48d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 27 Jun 2023 20:33:57 -0500 Subject: [PATCH 584/659] =?UTF-8?q?=F0=9F=8E=A8=20Indent=20temp=20structs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/temperature.h | 324 ++++++++++++++++---------------- 1 file changed, 162 insertions(+), 162 deletions(-) diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index b0cb3d778e..51fa6f1eff 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -177,68 +177,68 @@ typedef struct { float p, i, d, c, f; } raw_pidcf_t; /// PID classes that implement these features are expected to override these methods /// Since the finally used PID class is typedef-d, there is no need to use virtual functions template - struct PID_t{ - protected: - bool pid_reset = true; - float temp_iState = 0.0f, temp_dState = 0.0f; - float work_p = 0, work_i = 0, work_d = 0; + struct PID_t { + protected: + bool pid_reset = true; + float temp_iState = 0.0f, temp_dState = 0.0f; + float work_p = 0, work_i = 0, work_d = 0; - public: - float Kp = 0, Ki = 0, Kd = 0; - float p() const { return Kp; } - float i() const { return unscalePID_i(Ki); } - float d() const { return unscalePID_d(Kd); } - float c() const { return 1; } - float f() const { return 0; } - float pTerm() const { return work_p; } - float iTerm() const { return work_i; } - float dTerm() const { return work_d; } - float cTerm() const { return 0; } - float fTerm() const { return 0; } - void set_Kp(float p) { Kp = p; } - void set_Ki(float i) { Ki = scalePID_i(i); } - void set_Kd(float d) { Kd = scalePID_d(d); } - void set_Kc(float) {} - void set_Kf(float) {} - int low() const { return MIN_POW; } - int high() const { return MAX_POW; } - void reset() { pid_reset = true; } - void set(float p, float i, float d, float c=1, float f=0) { set_Kp(p); set_Ki(i); set_Kd(d); set_Kc(c); set_Kf(f); } - void set(const raw_pid_t &raw) { set(raw.p, raw.i, raw.d); } - void set(const raw_pidcf_t &raw) { set(raw.p, raw.i, raw.d, raw.c, raw.f); } + public: + float Kp = 0, Ki = 0, Kd = 0; + float p() const { return Kp; } + float i() const { return unscalePID_i(Ki); } + float d() const { return unscalePID_d(Kd); } + float c() const { return 1; } + float f() const { return 0; } + float pTerm() const { return work_p; } + float iTerm() const { return work_i; } + float dTerm() const { return work_d; } + float cTerm() const { return 0; } + float fTerm() const { return 0; } + void set_Kp(float p) { Kp = p; } + void set_Ki(float i) { Ki = scalePID_i(i); } + void set_Kd(float d) { Kd = scalePID_d(d); } + void set_Kc(float) {} + void set_Kf(float) {} + int low() const { return MIN_POW; } + int high() const { return MAX_POW; } + void reset() { pid_reset = true; } + void set(float p, float i, float d, float c=1, float f=0) { set_Kp(p); set_Ki(i); set_Kd(d); set_Kc(c); set_Kf(f); } + void set(const raw_pid_t &raw) { set(raw.p, raw.i, raw.d); } + void set(const raw_pidcf_t &raw) { set(raw.p, raw.i, raw.d, raw.c, raw.f); } - float get_fan_scale_output(const uint8_t) { return 0; } + float get_fan_scale_output(const uint8_t) { return 0; } - float get_extrusion_scale_output(const bool, const int32_t, const float, const int16_t) { return 0; } + float get_extrusion_scale_output(const bool, const int32_t, const float, const int16_t) { return 0; } - float get_pid_output(const float target, const float current) { - const float pid_error = target - current; - if (!target || pid_error < -(PID_FUNCTIONAL_RANGE)) { - pid_reset = true; - return 0; + float get_pid_output(const float target, const float current) { + const float pid_error = target - current; + if (!target || pid_error < -(PID_FUNCTIONAL_RANGE)) { + pid_reset = true; + return 0; + } + else if (pid_error > PID_FUNCTIONAL_RANGE) { + pid_reset = true; + return MAX_POW; + } + + if (pid_reset) { + pid_reset = false; + temp_iState = 0.0; + work_d = 0.0; + } + + const float max_power_over_i_gain = float(MAX_POW) / Ki - float(MIN_POW); + temp_iState = constrain(temp_iState + pid_error, 0, max_power_over_i_gain); + + work_p = Kp * pid_error; + work_i = Ki * temp_iState; + work_d = work_d + PID_K2 * (Kd * (temp_dState - current) - work_d); + + temp_dState = current; + + return constrain(work_p + work_i + work_d + float(MIN_POW), 0, MAX_POW); } - else if (pid_error > PID_FUNCTIONAL_RANGE) { - pid_reset = true; - return MAX_POW; - } - - if (pid_reset) { - pid_reset = false; - temp_iState = 0.0; - work_d = 0.0; - } - - const float max_power_over_i_gain = float(MAX_POW) / Ki - float(MIN_POW); - temp_iState = constrain(temp_iState + pid_error, 0, max_power_over_i_gain); - - work_p = Kp * pid_error; - work_i = Ki * temp_iState; - work_d = work_d + PID_K2 * (Kd * (temp_dState - current) - work_d); - - temp_dState = current; - - return constrain(work_p + work_i + work_d + float(MIN_POW), 0, MAX_POW); - } }; @@ -249,53 +249,53 @@ typedef struct { float p, i, d, c, f; } raw_pidcf_t; /// @brief Extrusion scaled PID class template struct PIDC_t : public PID_t { - private: - using base = PID_t; - float work_c = 0; - float prev_e_pos = 0; - int32_t lpq[LPQ_ARR_SZ] = {}; - int16_t lpq_ptr = 0; - public: - float Kc = 0; - float c() const { return Kc; } - void set_Kc(float c) { Kc = c; } - float cTerm() const { return work_c; } - void set(float p, float i, float d, float c=1, float f=0) { - base::set_Kp(p); - base::set_Ki(i); - base::set_Kd(d); - set_Kc(c); - base::set_Kf(f); - } - void set(const raw_pid_t &raw) { set(raw.p, raw.i, raw.d); } - void set(const raw_pidcf_t &raw) { set(raw.p, raw.i, raw.d, raw.c, raw.f); } - void reset() { - base::reset(); - prev_e_pos = 0; - lpq_ptr = 0; - for (uint8_t i = 0; i < LPQ_ARR_SZ; ++i) lpq[i] = 0; - } - - float get_extrusion_scale_output(const bool is_active, const int32_t e_position, const float e_mm_per_step, const int16_t lpq_len) { - work_c = 0; - if (!is_active) return work_c; - - if (e_position > prev_e_pos) { - lpq[lpq_ptr] = e_position - prev_e_pos; - prev_e_pos = e_position; + private: + using base = PID_t; + float work_c = 0; + float prev_e_pos = 0; + int32_t lpq[LPQ_ARR_SZ] = {}; + int16_t lpq_ptr = 0; + public: + float Kc = 0; + float c() const { return Kc; } + void set_Kc(float c) { Kc = c; } + float cTerm() const { return work_c; } + void set(float p, float i, float d, float c=1, float f=0) { + base::set_Kp(p); + base::set_Ki(i); + base::set_Kd(d); + set_Kc(c); + base::set_Kf(f); } - else - lpq[lpq_ptr] = 0; - - ++lpq_ptr; - - if (lpq_ptr >= LPQ_ARR_SZ || lpq_ptr >= lpq_len) + void set(const raw_pid_t &raw) { set(raw.p, raw.i, raw.d); } + void set(const raw_pidcf_t &raw) { set(raw.p, raw.i, raw.d, raw.c, raw.f); } + void reset() { + base::reset(); + prev_e_pos = 0; lpq_ptr = 0; + for (uint8_t i = 0; i < LPQ_ARR_SZ; ++i) lpq[i] = 0; + } - work_c = (lpq[lpq_ptr] * e_mm_per_step) * Kc; + float get_extrusion_scale_output(const bool is_active, const int32_t e_position, const float e_mm_per_step, const int16_t lpq_len) { + work_c = 0; + if (!is_active) return work_c; - return work_c; - } + if (e_position > prev_e_pos) { + lpq[lpq_ptr] = e_position - prev_e_pos; + prev_e_pos = e_position; + } + else + lpq[lpq_ptr] = 0; + + ++lpq_ptr; + + if (lpq_ptr >= LPQ_ARR_SZ || lpq_ptr >= lpq_len) + lpq_ptr = 0; + + work_c = (lpq[lpq_ptr] * e_mm_per_step) * Kc; + + return work_c; + } }; /// @brief Fan scaled PID, this class implements the get_fan_scale_output() method @@ -305,67 +305,67 @@ typedef struct { float p, i, d, c, f; } raw_pidcf_t; /// @tparam SCALE_LIN_FACTOR parameter from Configuration_adv.h template struct PIDF_t : public PID_t { - private: - using base = PID_t; - float work_f = 0; - public: - float Kf = 0; - float f() const { return Kf; } - void set_Kf(float f) { Kf = f; } - float fTerm() const { return work_f; } - void set(float p, float i, float d, float c=1, float f=0) { - base::set_Kp(p); - base::set_Ki(i); - base::set_Kd(d); - base::set_Kc(c); - set_Kf(f); - } - void set(const raw_pid_t &raw) { set(raw.p, raw.i, raw.d); } - void set(const raw_pidcf_t &raw) { set(raw.p, raw.i, raw.d, raw.c, raw.f); } + private: + using base = PID_t; + float work_f = 0; + public: + float Kf = 0; + float f() const { return Kf; } + void set_Kf(float f) { Kf = f; } + float fTerm() const { return work_f; } + void set(float p, float i, float d, float c=1, float f=0) { + base::set_Kp(p); + base::set_Ki(i); + base::set_Kd(d); + base::set_Kc(c); + set_Kf(f); + } + void set(const raw_pid_t &raw) { set(raw.p, raw.i, raw.d); } + void set(const raw_pidcf_t &raw) { set(raw.p, raw.i, raw.d, raw.c, raw.f); } - float get_fan_scale_output(const uint8_t fan_speed) { - work_f = 0; - if (fan_speed > SCALE_MIN_SPEED) - work_f = Kf + (SCALE_LIN_FACTOR) * fan_speed; + float get_fan_scale_output(const uint8_t fan_speed) { + work_f = 0; + if (fan_speed > SCALE_MIN_SPEED) + work_f = Kf + (SCALE_LIN_FACTOR) * fan_speed; - return work_f; - } + return work_f; + } }; /// @brief Inherits PID and PIDC - can't use proper diamond inheritance w/o virtual template struct PIDCF_t : public PIDC_t { - private: - using base = PID_t; - using cPID = PIDC_t; - float work_f = 0; - public: - float Kf = 0; - float c() const { return cPID::c(); } - float f() const { return Kf; } - void set_Kc(float c) { cPID::set_Kc(c); } - void set_Kf(float f) { Kf = f; } - float cTerm() const { return cPID::cTerm(); } - float fTerm() const { return work_f; } - void set(float p, float i, float d, float c=1, float f=0) { - base::set_Kp(p); - base::set_Ki(i); - base::set_Kd(d); - cPID::set_Kc(c); - set_Kf(f); - } - void set(const raw_pid_t &raw) { set(raw.p, raw.i, raw.d); } - void set(const raw_pidcf_t &raw) { set(raw.p, raw.i, raw.d, raw.c, raw.f); } + private: + using base = PID_t; + using cPID = PIDC_t; + float work_f = 0; + public: + float Kf = 0; + float c() const { return cPID::c(); } + float f() const { return Kf; } + void set_Kc(float c) { cPID::set_Kc(c); } + void set_Kf(float f) { Kf = f; } + float cTerm() const { return cPID::cTerm(); } + float fTerm() const { return work_f; } + void set(float p, float i, float d, float c=1, float f=0) { + base::set_Kp(p); + base::set_Ki(i); + base::set_Kd(d); + cPID::set_Kc(c); + set_Kf(f); + } + void set(const raw_pid_t &raw) { set(raw.p, raw.i, raw.d); } + void set(const raw_pidcf_t &raw) { set(raw.p, raw.i, raw.d, raw.c, raw.f); } - void reset() { cPID::reset(); } + void reset() { cPID::reset(); } - float get_fan_scale_output(const uint8_t fan_speed) { - work_f = fan_speed > (SCALE_MIN_SPEED) ? Kf + (SCALE_LIN_FACTOR) * fan_speed : 0; - return work_f; - } - float get_extrusion_scale_output(const bool is_active, const int32_t e_position, const float e_mm_per_step, const int16_t lpq_len) { - return cPID::get_extrusion_scale_output(is_active, e_position, e_mm_per_step, lpq_len); - } + float get_fan_scale_output(const uint8_t fan_speed) { + work_f = fan_speed > (SCALE_MIN_SPEED) ? Kf + (SCALE_LIN_FACTOR) * fan_speed : 0; + return work_f; + } + float get_extrusion_scale_output(const bool is_active, const int32_t e_position, const float e_mm_per_step, const int16_t lpq_len) { + return cPID::get_extrusion_scale_output(is_active, e_position, e_mm_per_step, lpq_len); + } }; typedef @@ -415,16 +415,16 @@ typedef struct { float p, i, d, c, f; } raw_pidcf_t; // A temperature sensor typedef struct TempInfo { -private: - raw_adc_t acc; - raw_adc_t raw; -public: - celsius_float_t celsius; - inline void reset() { acc = 0; } - inline void sample(const raw_adc_t s) { acc += s; } - inline void update() { raw = acc; } - void setraw(const raw_adc_t r) { raw = r; } - raw_adc_t getraw() const { return raw; } + private: + raw_adc_t acc; + raw_adc_t raw; + public: + celsius_float_t celsius; + inline void reset() { acc = 0; } + inline void sample(const raw_adc_t s) { acc += s; } + inline void update() { raw = acc; } + void setraw(const raw_adc_t r) { raw = r; } + raw_adc_t getraw() const { return raw; } } temp_info_t; #if HAS_TEMP_REDUNDANT From bbfaf7474c50f81d606c2dde91035bc40835e830 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 27 Jun 2023 21:44:42 -0500 Subject: [PATCH 585/659] =?UTF-8?q?=F0=9F=8E=A8=20CrealityDWIN=20=3D>=20Jy?= =?UTF-8?q?ersDWIN=20(#26026)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/feature/powerloss/M1000.cpp | 2 +- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 258 +++++++++---------- Marlin/src/lcd/e3v2/jyersui/dwin.h | 10 +- Marlin/src/lcd/marlinui.cpp | 2 +- Marlin/src/module/settings.cpp | 12 +- 5 files changed, 136 insertions(+), 148 deletions(-) diff --git a/Marlin/src/gcode/feature/powerloss/M1000.cpp b/Marlin/src/gcode/feature/powerloss/M1000.cpp index d56f09f71c..56ef737145 100644 --- a/Marlin/src/gcode/feature/powerloss/M1000.cpp +++ b/Marlin/src/gcode/feature/powerloss/M1000.cpp @@ -71,7 +71,7 @@ void GcodeSuite::M1000() { #elif HAS_DWIN_E3V2_BASIC recovery.dwin_flag = true; #elif ENABLED(DWIN_CREALITY_LCD_JYERSUI) // Temporary fix until it can be better implemented - crealityDWIN.popupHandler(Resume); + jyersDWIN.popupHandler(Resume); #elif ENABLED(EXTENSIBLE_UI) ExtUI::onPowerLossResume(); #else diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 95a387c6cb..c43afab100 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -128,9 +128,9 @@ #define JERK_UNIT 10 #define STEPS_UNIT 10 -/** - * Custom menu items with jyersLCD - */ +// +// Custom menu items with JyersLCD +// #if ENABLED(CUSTOM_MENU_CONFIG) #ifdef CONFIG_MENU_ITEM_5_DESC #define CUSTOM_MENU_COUNT 5 @@ -201,7 +201,7 @@ float corner_pos; bool probe_deployed = false; -CrealityDWIN crealityDWIN; +JyersDWIN jyersDWIN; template class TextScroller { @@ -329,14 +329,14 @@ private: planner.synchronize(); } else { - crealityDWIN.popupHandler(MoveWait); + jyersDWIN.popupHandler(MoveWait); gcode.process_subcommands_now(TS(F("G0F300Z"), p_float_t(current_position.z, 3))); gcode.process_subcommands_now(TS(F("G42 F4000 I"), mesh_x, 'J', mesh_y)); planner.synchronize(); current_position.z = goto_mesh_value ? bedlevel.z_values[mesh_x][mesh_y] : Z_CLEARANCE_BETWEEN_PROBES; planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder); planner.synchronize(); - crealityDWIN.redrawMenu(); + jyersDWIN.redrawMenu(); } } @@ -432,7 +432,7 @@ private: v1 = -range; v2 = range; } - crealityDWIN.updateStatus(TS(F("Red "), p_float_t(v1, 3) , F("..0.."), p_float_t(v2, 3), F(" Green"))); + jyersDWIN.updateStatus(TS(F("Red "), p_float_t(v1, 3) , F("..0.."), p_float_t(v2, 3), F(" Green"))); drawing_mesh = false; } @@ -441,24 +441,26 @@ private: #endif // HAS_MESH -/* General Display Functions */ +// +// General Display Functions +// -struct CrealityDWIN::EEPROM_Settings CrealityDWIN::eeprom_settings{0}; -constexpr const char * const CrealityDWIN::color_names[11]; -constexpr const char * const CrealityDWIN::preheat_modes[3]; +struct JyersDWIN::EEPROM_Settings JyersDWIN::eeprom_settings{0}; +constexpr const char * const JyersDWIN::color_names[11]; +constexpr const char * const JyersDWIN::preheat_modes[3]; // Clear a part of the screen // 4=Entire screen // 3=Title bar and Menu area (default) // 2=Menu area // 1=Title bar -void CrealityDWIN::clearScreen(const uint8_t e/*=3*/) { +void JyersDWIN::clearScreen(const uint8_t e/*=3*/) { if (e == 1 || e == 3 || e == 4) dwinDrawRectangle(1, getColor(eeprom_settings.menu_top_bg, Color_Bg_Blue, false), 0, 0, DWIN_WIDTH, TITLE_HEIGHT); // Clear Title Bar if (e == 2 || e == 3) dwinDrawRectangle(1, Color_Bg_Black, 0, 31, DWIN_WIDTH, STATUS_Y); // Clear Menu Area if (e == 4) dwinDrawRectangle(1, Color_Bg_Black, 0, 31, DWIN_WIDTH, DWIN_HEIGHT); // Clear Popup Area } -void CrealityDWIN::drawFloat(const_float_t value, const uint8_t row, const bool selected/*=false*/, const uint8_t minunit/*=10*/) { +void JyersDWIN::drawFloat(const_float_t value, const uint8_t row, const bool selected/*=false*/, const uint8_t minunit/*=10*/) { const uint8_t digits = (uint8_t)floor(log10(abs(value))) + log10(minunit) + (minunit > 1); const uint16_t bColor = selected ? Select_Color : Color_Bg_Black; const uint16_t xpos = 240 - (digits * 8); @@ -471,67 +473,45 @@ void CrealityDWIN::drawFloat(const_float_t value, const uint8_t row, const bool } } -void CrealityDWIN::drawOption(const uint8_t value, const char * const * options, const uint8_t row, const bool selected/*=false*/, const bool color/*=false*/) { +void JyersDWIN::drawOption(const uint8_t value, const char * const * options, const uint8_t row, const bool selected/*=false*/, const bool color/*=false*/) { const uint16_t bColor = selected ? Select_Color : Color_Bg_Black, tColor = color ? getColor(value, Color_White, false) : Color_White; dwinDrawRectangle(1, bColor, 202, MBASE(row) + 14, 258, MBASE(row) - 2); dwinDrawString(false, DWIN_FONT_MENU, tColor, bColor, 202, MBASE(row) - 1, options[value]); } -uint16_t CrealityDWIN::getColor(const uint8_t color, const uint16_t original, const bool light/*=false*/) { +uint16_t JyersDWIN::getColor(const uint8_t color, const uint16_t original, const bool light/*=false*/) { switch (color) { - case Default: - return original; - break; - case White: - return light ? Color_Light_White : Color_White; - break; - case Green: - return light ? Color_Light_Green : Color_Green; - break; - case Cyan: - return light ? Color_Light_Cyan : Color_Cyan; - break; - case Blue: - return light ? Color_Light_Blue : Color_Blue; - break; - case Magenta: - return light ? Color_Light_Magenta : Color_Magenta; - break; - case Red: - return light ? Color_Light_Red : Color_Red; - break; - case Orange: - return light ? Color_Light_Orange : Color_Orange; - break; - case Yellow: - return light ? Color_Light_Yellow : Color_Yellow; - break; - case Brown: - return light ? Color_Light_Brown : Color_Brown; - break; - case Black: - return Color_Black; - break; + case White: return light ? Color_Light_White : Color_White; + case Green: return light ? Color_Light_Green : Color_Green; + case Cyan: return light ? Color_Light_Cyan : Color_Cyan; + case Blue: return light ? Color_Light_Blue : Color_Blue; + case Magenta: return light ? Color_Light_Magenta : Color_Magenta; + case Red: return light ? Color_Light_Red : Color_Red; + case Orange: return light ? Color_Light_Orange : Color_Orange; + case Yellow: return light ? Color_Light_Yellow : Color_Yellow; + case Brown: return light ? Color_Light_Brown : Color_Brown; + case Black: return Color_Black; + case Default: return original; } return Color_White; } -void CrealityDWIN::drawTitle(const char * const ctitle) { +void JyersDWIN::drawTitle(const char * const ctitle) { dwinDrawString(false, DWIN_FONT_HEAD, getColor(eeprom_settings.menu_top_txt, Color_White, false), Color_Bg_Blue, (DWIN_WIDTH - strlen(ctitle) * STAT_CHR_W) / 2, 5, ctitle); } -void CrealityDWIN::drawTitle(FSTR_P const ftitle) { +void JyersDWIN::drawTitle(FSTR_P const ftitle) { dwinDrawString(false, DWIN_FONT_HEAD, getColor(eeprom_settings.menu_top_txt, Color_White, false), Color_Bg_Blue, (DWIN_WIDTH - strlen_P(FTOP(ftitle)) * STAT_CHR_W) / 2, 5, ftitle); } void _decorateMenuItem(uint8_t row, uint8_t icon, bool more) { - if (icon) dwinIconShow(ICON, icon, 26, MBASE(row) - 3); //Draw Menu Icon + if (icon) dwinIconShow(ICON, icon, 26, MBASE(row) - 3); // Draw Menu Icon if (more) dwinIconShow(ICON, ICON_More, 226, MBASE(row) - 3); // Draw More Arrow - dwinDrawLine(crealityDWIN.getColor(crealityDWIN.eeprom_settings.menu_split_line, Line_Color, true), 16, MBASE(row) + 33, 256, MBASE(row) + 33); // Draw Menu Line + dwinDrawLine(jyersDWIN.getColor(jyersDWIN.eeprom_settings.menu_split_line, Line_Color, true), 16, MBASE(row) + 33, 256, MBASE(row) + 33); // Draw Menu Line } -void CrealityDWIN::drawMenuItem(const uint8_t row, const uint8_t icon/*=0*/, const char * const label1, const char * const label2, const bool more/*=false*/, const bool centered/*=false*/) { - const uint8_t label_offset_y = (label1 || label2) ? MENU_CHR_H * 3 / 5 : 0, +void JyersDWIN::drawMenuItem(const uint8_t row, const uint8_t icon/*=0*/, const char * const label1, const char * const label2, const bool more/*=false*/, const bool centered/*=false*/) { + const uint8_t label_offset_y = label2 ? MENU_CHR_H * 3 / 5 : 0, label1_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (label1 ? strlen(label1) : 0) * MENU_CHR_W) / 2), label2_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (label2 ? strlen(label2) : 0) * MENU_CHR_W) / 2); if (label1) dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, label1_offset_x, MBASE(row) - 1 - label_offset_y, label1); // Draw Label @@ -539,8 +519,8 @@ void CrealityDWIN::drawMenuItem(const uint8_t row, const uint8_t icon/*=0*/, con _decorateMenuItem(row, icon, more); } -void CrealityDWIN::drawMenuItem(const uint8_t row, const uint8_t icon/*=0*/, FSTR_P const flabel1, FSTR_P const flabel2, const bool more/*=false*/, const bool centered/*=false*/) { - const uint8_t label_offset_y = (flabel1 || flabel2) ? MENU_CHR_H * 3 / 5 : 0, +void JyersDWIN::drawMenuItem(const uint8_t row, const uint8_t icon/*=0*/, FSTR_P const flabel1, FSTR_P const flabel2, const bool more/*=false*/, const bool centered/*=false*/) { + const uint8_t label_offset_y = flabel2 ? MENU_CHR_H * 3 / 5 : 0, label1_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (flabel1 ? strlen_P(FTOP(flabel1)) : 0) * MENU_CHR_W) / 2), label2_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (flabel2 ? strlen_P(FTOP(flabel2)) : 0) * MENU_CHR_W) / 2); if (flabel1) dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, label1_offset_x, MBASE(row) - 1 - label_offset_y, flabel1); // Draw Label @@ -548,8 +528,8 @@ void CrealityDWIN::drawMenuItem(const uint8_t row, const uint8_t icon/*=0*/, FST _decorateMenuItem(row, icon, more); } -void CrealityDWIN::drawCheckbox(const uint8_t row, const bool value) { - #if ENABLED(DWIN_CREALITY_LCD_CUSTOM_ICONS) // Draw appropriate checkbox icon +void JyersDWIN::drawCheckbox(const uint8_t row, const bool value) { + #if ENABLED(DWIN_CREALITY_LCD_CUSTOM_ICONS) // Draw appropriate checkbox icon dwinIconShow(ICON, (value ? ICON_Checkbox_T : ICON_Checkbox_F), 226, MBASE(row) - 3); #else // Draw a basic checkbox using rectangles and lines dwinDrawRectangle(1, Color_Bg_Black, 226, MBASE(row) - 3, 226 + 20, MBASE(row) - 3 + 20); @@ -565,15 +545,14 @@ void CrealityDWIN::drawCheckbox(const uint8_t row, const bool value) { #endif } -void CrealityDWIN::drawMenu(const uint8_t menu, const uint8_t select/*=0*/, const uint8_t scroll/*=0*/) { +void JyersDWIN::drawMenu(const uint8_t menu, const uint8_t select/*=0*/, const uint8_t scroll/*=0*/) { if (active_menu != menu) { last_menu = active_menu; if (process == Menu) last_selection = selection; } selection = _MIN(select, getMenuSize(menu)); scrollpos = scroll; - if (selection - scrollpos > MROWS) - scrollpos = selection - MROWS; + if (selection - scrollpos > MROWS) scrollpos = selection - MROWS; // i.e., NOLESS(scrollpos, selection - MROWS); process = Menu; active_menu = menu; clearScreen(); @@ -582,7 +561,7 @@ void CrealityDWIN::drawMenu(const uint8_t menu, const uint8_t select/*=0*/, cons dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); } -void CrealityDWIN::redrawMenu(const bool lastproc/*=true*/, const bool lastsel/*=false*/, const bool lastmenu/*=false*/) { +void JyersDWIN::redrawMenu(const bool lastproc/*=true*/, const bool lastsel/*=false*/, const bool lastmenu/*=false*/) { switch (lastproc ? last_process : process) { case Menu: drawMenu(lastmenu ? last_menu : active_menu, lastsel ? last_selection : selection, lastmenu ? 0 : scrollpos); @@ -594,15 +573,16 @@ void CrealityDWIN::redrawMenu(const bool lastproc/*=true*/, const bool lastsel/* } } -void CrealityDWIN::redrawScreen() { +void JyersDWIN::redrawScreen() { redrawMenu(false); drawStatusArea(true); updateStatusBar(true); } -/* Primary Menus and Screen Elements */ - -void CrealityDWIN::mainMenuIcons() { +// +// Primary Menus and Screen Elements +// +void JyersDWIN::mainMenuIcons() { if (selection == 0) { dwinIconShow(ICON, ICON_Print_1, 17, 130); dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 17, 130, 126, 229); @@ -653,7 +633,7 @@ void CrealityDWIN::mainMenuIcons() { #endif } -void CrealityDWIN::drawMainMenu(const uint8_t select/*=0*/) { +void JyersDWIN::drawMainMenu(const uint8_t select/*=0*/) { process = Main; active_menu = MainMenu; selection = select; @@ -664,7 +644,7 @@ void CrealityDWIN::drawMainMenu(const uint8_t select/*=0*/) { mainMenuIcons(); } -void CrealityDWIN::printScreenIcons() { +void JyersDWIN::printScreenIcons() { if (selection == 0) { dwinIconShow(ICON, ICON_Setup_1, 8, 252); dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 8, 252, 87, 351); @@ -707,7 +687,7 @@ void CrealityDWIN::printScreenIcons() { } } -void CrealityDWIN::drawPrintScreen() { +void JyersDWIN::drawPrintScreen() { process = Print; selection = 0; clearScreen(); @@ -725,7 +705,7 @@ void CrealityDWIN::drawPrintScreen() { drawPrintFilename(true); } -void CrealityDWIN::drawPrintFilename(const bool reset/*=false*/) { +void JyersDWIN::drawPrintFilename(const bool reset/*=false*/) { typedef TextScroller<30> Scroller; static Scroller scroller; if (reset) scroller.reset(); @@ -739,7 +719,7 @@ void CrealityDWIN::drawPrintFilename(const bool reset/*=false*/) { } } -void CrealityDWIN::drawPrintProgressBar() { +void JyersDWIN::drawPrintProgressBar() { uint8_t printpercent = sdprint ? card.percentDone() : (ui._get_progress() / 100); dwinIconShow(ICON, ICON_Bar, 15, 93); dwinDrawRectangle(1, BarFill_Color, 16 + printpercent * 240 / 100, 93, 256, 113); @@ -749,7 +729,7 @@ void CrealityDWIN::drawPrintProgressBar() { #if ENABLED(SET_REMAINING_TIME) - void CrealityDWIN::drawPrintProgressRemain() { + void JyersDWIN::drawPrintProgressRemain() { uint16_t remainingtime = ui.get_remaining_time(); dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 176, 187, remainingtime / 3600); dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 200, 187, (remainingtime % 3600) / 60); @@ -763,7 +743,7 @@ void CrealityDWIN::drawPrintProgressBar() { #endif -void CrealityDWIN::drawPrintProgressElapsed() { +void JyersDWIN::drawPrintProgressElapsed() { duration_t elapsed = print_job_timer.duration(); dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 42, 187, elapsed.value / 3600); dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 66, 187, (elapsed.value % 3600) / 60); @@ -775,7 +755,7 @@ void CrealityDWIN::drawPrintProgressElapsed() { dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 58, 187, F(":")); } -void CrealityDWIN::drawPrintConfirm() { +void JyersDWIN::drawPrintConfirm() { drawPrintScreen(); process = Confirm; popup = Complete; @@ -785,7 +765,7 @@ void CrealityDWIN::drawPrintConfirm() { dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 85, 281, 188, 322); } -void CrealityDWIN::drawSDItem(const uint8_t item, const uint8_t row) { +void JyersDWIN::drawSDItem(const uint8_t item, const uint8_t row) { if (item == 0) drawMenuItem(0, ICON_Back, card.flag.workDirIsRoot ? F("Back") : F("..")); else { @@ -806,7 +786,7 @@ void CrealityDWIN::drawSDItem(const uint8_t item, const uint8_t row) { } } -void CrealityDWIN::drawSDList(const bool removed/*=false*/) { +void JyersDWIN::drawSDList(const bool removed/*=false*/) { clearScreen(); drawTitle("Select File"); selection = 0; @@ -824,7 +804,7 @@ void CrealityDWIN::drawSDList(const bool removed/*=false*/) { dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(0) - 18, 14, MBASE(0) + 33); } -void CrealityDWIN::drawStatusArea(const bool icons/*=false*/) { +void JyersDWIN::drawStatusArea(const bool icons/*=false*/) { if (icons) dwinDrawRectangle(1, Color_Bg_Black, 0, STATUS_Y, DWIN_WIDTH, DWIN_HEIGHT - 1); @@ -952,7 +932,7 @@ void CrealityDWIN::drawStatusArea(const bool icons/*=false*/) { dwinUpdateLCD(); } -void CrealityDWIN::drawPopup(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, uint8_t mode, uint8_t icon/*=0*/) { +void JyersDWIN::drawPopup(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, uint8_t mode, uint8_t icon/*=0*/) { if (process != Confirm && process != Popup && process != Wait) last_process = process; if ((process == Menu || process == Wait) && mode == Popup) last_selection = selection; process = mode; @@ -979,10 +959,10 @@ void CrealityDWIN::drawPopup(FSTR_P const line1, FSTR_P const line2, FSTR_P cons } void MarlinUI::kill_screen(FSTR_P const error, FSTR_P const) { - crealityDWIN.drawPopup(F("Printer Kill Reason:"), error, F("Restart Required"), Wait, ICON_BLTouch); + jyersDWIN.drawPopup(F("Printer Kill Reason:"), error, F("Restart Required"), Wait, ICON_BLTouch); } -void CrealityDWIN::popupSelect() { +void JyersDWIN::popupSelect() { const uint16_t c1 = selection ? Color_Bg_Window : getColor(eeprom_settings.highlight_box, Color_White), c2 = selection ? getColor(eeprom_settings.highlight_box, Color_White) : Color_Bg_Window; dwinDrawRectangle(0, c1, 25, 279, 126, 318); @@ -991,7 +971,7 @@ void CrealityDWIN::popupSelect() { dwinDrawRectangle(0, c2, 144, 278, 247, 319); } -void CrealityDWIN::updateStatusBar(const bool refresh/*=false*/) { +void JyersDWIN::updateStatusBar(const bool refresh/*=false*/) { typedef TextScroller<30> Scroller; static bool new_msg; static Scroller scroller; @@ -1019,9 +999,11 @@ void CrealityDWIN::updateStatusBar(const bool refresh/*=false*/) { } } -/* Menu Item Config */ +// +// Menu Item Config +// -void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool draw/*=true*/) { +void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool draw/*=true*/) { const uint8_t row = item - scrollpos; #if HAS_LEVELING static bool level_state; @@ -2064,7 +2046,7 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool } break; - #if HAS_HOTEND || HAS_HEATED_BED + #if ANY(PIDTEMP, PIDTEMPBED) case PID: #define PID_BACK 0 @@ -2219,9 +2201,8 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool drawMenuItem(row, ICON_Version, F("Kp Value")); drawFloat(thermalManager.temp_bed.pid.p(), row, false, 100); } - else { - modifyValue(thermalManager.temp_bed.pid.Kp, 0, 5000, 100, thermalManager.updatePID); - } + else + modifyValue(thermalManager.temp_bed.pid.Kp, 0, 5000, 100, []{ thermalManager.temp_bed.pid.reset(); }); break; case BEDPID_KI: if (draw) { @@ -2229,7 +2210,7 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool drawFloat(thermalManager.temp_bed.pid.i(), row, false, 100); } else - modifyValue(thermalManager.temp_bed.pid.Ki, 0, 5000, 100, thermalManager.updatePID); + modifyValue(thermalManager.temp_bed.pid.Ki, 0, 5000, 100, []{ thermalManager.temp_bed.pid.reset(); }); break; case BEDPID_KD: if (draw) { @@ -2237,11 +2218,11 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool drawFloat(thermalManager.temp_bed.pid.d(), row, false, 100); } else - modifyValue(thermalManager.temp_bed.pid.Kd, 0, 5000, 100, thermalManager.updatePID); + modifyValue(thermalManager.temp_bed.pid.Kd, 0, 5000, 100, []{ thermalManager.temp_bed.pid.reset(); }); break; } break; - #endif // HAS_HEATED_BED + #endif // PIDTEMPBED #if HAS_PREHEAT #define _PREHEAT_SUBMENU_CASE(N) case Preheat##N: preheat_submenu((N) - 1, item, TEMP_PREHEAT##N); break; @@ -3943,7 +3924,7 @@ void CrealityDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool } } -FSTR_P CrealityDWIN::getMenuTitle(const uint8_t menu) { +FSTR_P JyersDWIN::getMenuTitle(const uint8_t menu) { switch (menu) { case MainMenu: return GET_TEXT_F(MSG_MAIN_MENU); case Prepare: return GET_TEXT_F(MSG_PREPARE); @@ -4020,7 +4001,7 @@ FSTR_P CrealityDWIN::getMenuTitle(const uint8_t menu) { return F(""); } -uint8_t CrealityDWIN::getMenuSize(const uint8_t menu) { +uint8_t JyersDWIN::getMenuSize(const uint8_t menu) { switch (menu) { case Prepare: return PREPARE_TOTAL; case HomeMenu: return HOME_TOTAL; @@ -4095,9 +4076,11 @@ uint8_t CrealityDWIN::getMenuSize(const uint8_t menu) { return 0; } -/* Popup Config */ +// +// Popup Config +// -void CrealityDWIN::popupHandler(const PopupID popupid, const bool option/*=false*/) { +void JyersDWIN::popupHandler(const PopupID popupid, const bool option/*=false*/) { popup = last_popup = popupid; switch (popupid) { case Pause: drawPopup(F("Pause Print"), F(""), F(""), Popup); break; @@ -4124,7 +4107,7 @@ void CrealityDWIN::popupHandler(const PopupID popupid, const bool option/*=false } } -void CrealityDWIN::confirmHandler(PopupID popupid) { +void JyersDWIN::confirmHandler(PopupID popupid) { popup = popupid; switch (popupid) { case FilInsert: drawPopup(F("Insert Filament"), F("Press to Continue"), F(""), Confirm); break; @@ -4136,9 +4119,11 @@ void CrealityDWIN::confirmHandler(PopupID popupid) { } } -/* Navigation and Control */ +// +// Navigation and Control +// -void CrealityDWIN::mainMenuControl() { +void JyersDWIN::mainMenuControl() { EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_CW && selection < PAGE_COUNT - 1) { @@ -4159,13 +4144,13 @@ void CrealityDWIN::mainMenuControl() { dwinUpdateLCD(); } -void CrealityDWIN::menuControl() { +void JyersDWIN::menuControl() { EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_CW && selection < getMenuSize(active_menu)) { dwinDrawRectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); selection++; // Select Down - if (selection > scrollpos+MROWS) { + if (selection > scrollpos + MROWS) { scrollpos++; dwinFrameAreaMove(1, 2, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); menuItemHandler(active_menu, selection); @@ -4187,7 +4172,7 @@ void CrealityDWIN::menuControl() { dwinUpdateLCD(); } -void CrealityDWIN::valueControl() { +void JyersDWIN::valueControl() { EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_CW) @@ -4248,7 +4233,7 @@ void CrealityDWIN::valueControl() { } } -void CrealityDWIN::optionControl() { +void JyersDWIN::optionControl() { EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_CW) @@ -4286,7 +4271,7 @@ void CrealityDWIN::optionControl() { dwinUpdateLCD(); } -void CrealityDWIN::fileControl() { +void JyersDWIN::fileControl() { typedef TextScroller Scroller; static Scroller scroller; EncoderState encoder_diffState = encoderReceiveAnalyze(); @@ -4294,8 +4279,7 @@ void CrealityDWIN::fileControl() { if (selection > 0) { card.selectFileByIndexSorted(selection - 1); char * const filename = card.longest_filename(); - size_t len = strlen(filename); - size_t pos = len; + size_t len = strlen(filename), pos = len; if (!card.flag.filenameIsDir) while (pos && filename[pos] != '.') pos--; if (pos > MENU_CHAR_LIMIT) { @@ -4364,7 +4348,7 @@ void CrealityDWIN::fileControl() { dwinUpdateLCD(); } -void CrealityDWIN::printScreenControl() { +void JyersDWIN::printScreenControl() { EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_CW && selection < PRINT_COUNT - 1) { @@ -4414,7 +4398,7 @@ void CrealityDWIN::printScreenControl() { dwinUpdateLCD(); } -void CrealityDWIN::popupControl() { +void JyersDWIN::popupControl() { EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_CW && selection < 1) { @@ -4559,7 +4543,7 @@ void CrealityDWIN::popupControl() { dwinUpdateLCD(); } -void CrealityDWIN::confirmControl() { +void JyersDWIN::confirmControl() { EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_ENTER) { @@ -4584,12 +4568,14 @@ void CrealityDWIN::confirmControl() { dwinUpdateLCD(); } -/* In-Menu Value Modification */ +// +// In-Menu Value Modification +// -void CrealityDWIN::setupValue(const_float_t value, const_float_t min, const_float_t max, const_float_t unit, const uint8_t type) { - if (TERN0(HAS_HOTEND, valuepointer == &thermalManager.temp_hotend[0].pid.Ki) || TERN0(HAS_HEATED_BED, valuepointer == &thermalManager.temp_bed.pid.Ki)) +void JyersDWIN::setupValue(const_float_t value, const_float_t min, const_float_t max, const_float_t unit, const uint8_t type) { + if (TERN0(PIDTEMP, valuepointer == &thermalManager.temp_hotend[0].pid.Ki) || TERN0(PIDTEMPBED, valuepointer == &thermalManager.temp_bed.pid.Ki)) tempvalue = unscalePID_i(value) * unit; - else if (TERN0(HAS_HOTEND, valuepointer == &thermalManager.temp_hotend[0].pid.Kd) || TERN0(HAS_HEATED_BED, valuepointer == &thermalManager.temp_bed.pid.Kd)) + else if (TERN0(PIDTEMP, valuepointer == &thermalManager.temp_hotend[0].pid.Kd) || TERN0(PIDTEMPBED, valuepointer == &thermalManager.temp_bed.pid.Kd)) tempvalue = unscalePID_d(value) * unit; else tempvalue = value * unit; @@ -4602,38 +4588,38 @@ void CrealityDWIN::setupValue(const_float_t value, const_float_t min, const_floa drawFloat(tempvalue / unit, selection - scrollpos, true, valueunit); } -void CrealityDWIN::modifyValue(float &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { +void JyersDWIN::modifyValue(float &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; setupValue((float)value, min, max, unit, 0); } -void CrealityDWIN::modifyValue(uint8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { +void JyersDWIN::modifyValue(uint8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; setupValue((float)value, min, max, unit, 1); } -void CrealityDWIN::modifyValue(uint16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { +void JyersDWIN::modifyValue(uint16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; setupValue((float)value, min, max, unit, 2); } -void CrealityDWIN::modifyValue(int16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { +void JyersDWIN::modifyValue(int16_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; setupValue((float)value, min, max, unit, 3); } -void CrealityDWIN::modifyValue(uint32_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { +void JyersDWIN::modifyValue(uint32_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; setupValue((float)value, min, max, unit, 4); } -void CrealityDWIN::modifyValue(int8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { +void JyersDWIN::modifyValue(int8_t &value, const_float_t min, const_float_t max, const_float_t unit, void (*f)()/*=nullptr*/) { valuepointer = &value; funcpointer = f; setupValue((float)value, min, max, unit, 5); } -void CrealityDWIN::modifyOption(const uint8_t value, const char * const * options, const uint8_t max) { +void JyersDWIN::modifyOption(const uint8_t value, const char * const * options, const uint8_t max) { tempvalue = value; valuepointer = const_cast(options); valuemin = 0; @@ -4643,9 +4629,11 @@ void CrealityDWIN::modifyOption(const uint8_t value, const char * const * option drawOption(value, options, selection - scrollpos, true); } -/* Main Functions */ +// +// Main Functions +// -void CrealityDWIN::updateStatus(const char * const text) { +void JyersDWIN::updateStatus(const char * const text) { if (strncmp_P(text, PSTR(""), 3) == 0) { for (uint8_t i = 0; i < _MIN((size_t)LONG_FILENAME_LENGTH, strlen(text)); ++i) filename[i] = text[i + 3]; filename[_MIN((size_t)LONG_FILENAME_LENGTH - 1, strlen(text))] = '\0'; @@ -4657,7 +4645,7 @@ void CrealityDWIN::updateStatus(const char * const text) { } } -void CrealityDWIN::startPrint(const bool sd) { +void JyersDWIN::startPrint(const bool sd) { sdprint = sd; if (!printing) { printing = true; @@ -4680,7 +4668,7 @@ void CrealityDWIN::startPrint(const bool sd) { } } -void CrealityDWIN::stopPrint() { +void JyersDWIN::stopPrint() { printing = false; sdprint = false; thermalManager.cooldown(); @@ -4689,7 +4677,7 @@ void CrealityDWIN::stopPrint() { drawPrintConfirm(); } -void CrealityDWIN::update() { +void JyersDWIN::update() { stateUpdate(); screenUpdate(); switch (process) { @@ -4704,13 +4692,13 @@ void CrealityDWIN::update() { } } -void MarlinUI::update() { crealityDWIN.update(); } +void MarlinUI::update() { jyersDWIN.update(); } #if HAS_LCD_BRIGHTNESS void MarlinUI::_set_brightness() { dwinLCDBrightness(backlight ? brightness : 0); } #endif -void CrealityDWIN::stateUpdate() { +void JyersDWIN::stateUpdate() { if ((print_job_timer.isRunning() || print_job_timer.isPaused()) != printing) { if (!printing) startPrint(card.isFileOpen() || TERN0(POWER_LOSS_RECOVERY, recovery.valid())); else stopPrint(); @@ -4741,7 +4729,7 @@ void CrealityDWIN::stateUpdate() { #endif } -void CrealityDWIN::screenUpdate() { +void JyersDWIN::screenUpdate() { const millis_t ms = millis(); static millis_t scrltime = 0; if (ELAPSED(ms, scrltime)) { @@ -4867,20 +4855,20 @@ void CrealityDWIN::screenUpdate() { } } -void CrealityDWIN::audioFeedback(const bool success/*=true*/) { +void JyersDWIN::audioFeedback(const bool success/*=true*/) { if (ui.sound_on) DONE_BUZZ(success); else updateStatus(success ? "Success" : "Failed"); } -void CrealityDWIN::saveSettings(char * const buff) { +void JyersDWIN::saveSettings(char * const buff) { TERN_(AUTO_BED_LEVELING_UBL, eeprom_settings.tilt_grid_size = mesh_conf.tilt_grid - 1); eeprom_settings.corner_pos = corner_pos * 10; memcpy(buff, &eeprom_settings, _MIN(sizeof(eeprom_settings), eeprom_data_size)); } -void CrealityDWIN::loadSettings(const char * const buff) { +void JyersDWIN::loadSettings(const char * const buff) { memcpy(&eeprom_settings, buff, _MIN(sizeof(eeprom_settings), eeprom_data_size)); TERN_(AUTO_BED_LEVELING_UBL, mesh_conf.tilt_grid = eeprom_settings.tilt_grid_size + 1); if (eeprom_settings.corner_pos == 0) eeprom_settings.corner_pos = 325; @@ -4895,7 +4883,7 @@ void CrealityDWIN::loadSettings(const char * const buff) { #endif } -void CrealityDWIN::resetSettings() { +void JyersDWIN::resetSettings() { eeprom_settings.time_format_textual = false; TERN_(AUTO_BED_LEVELING_UBL, eeprom_settings.tilt_grid_size = 0); eeprom_settings.corner_pos = 325; @@ -4932,17 +4920,17 @@ void MarlinUI::init_lcd() { dwinJPGShowAndCache(3); dwinJPGCacheTo1(Language_English); - crealityDWIN.redrawScreen(); + jyersDWIN.redrawScreen(); } #if ENABLED(ADVANCED_PAUSE_FEATURE) void MarlinUI::pause_show_message(const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, const uint8_t extruder/*=active_extruder*/) { switch (message) { - case PAUSE_MESSAGE_INSERT: crealityDWIN.confirmHandler(FilInsert); break; + case PAUSE_MESSAGE_INSERT: jyersDWIN.confirmHandler(FilInsert); break; case PAUSE_MESSAGE_PURGE: - case PAUSE_MESSAGE_OPTION: crealityDWIN.popupHandler(PurgeMore); break; - case PAUSE_MESSAGE_HEAT: crealityDWIN.confirmHandler(HeaterTime); break; - case PAUSE_MESSAGE_WAITING: crealityDWIN.drawPrintScreen(); break; + case PAUSE_MESSAGE_OPTION: jyersDWIN.popupHandler(PurgeMore); break; + case PAUSE_MESSAGE_HEAT: jyersDWIN.confirmHandler(HeaterTime); break; + case PAUSE_MESSAGE_WAITING: jyersDWIN.drawPrintScreen(); break; default: break; } } diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.h b/Marlin/src/lcd/e3v2/jyersui/dwin.h index 450345d1a2..6282adbd01 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.h +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.h @@ -76,9 +76,9 @@ enum menuID : uint8_t { ColorSettings, Advanced, ProbeMenu, - #if HAS_TRINAMIC_CONFIG - TMCMenu, - #endif + #if HAS_TRINAMIC_CONFIG + TMCMenu, + #endif Info, Leveling, LevelManual, @@ -148,7 +148,7 @@ enum colorID : uint8_t { #define Confirm_Color 0x34B9 #define Cancel_Color 0x3186 -class CrealityDWIN { +class JyersDWIN { public: static constexpr size_t eeprom_data_size = 48; static struct EEPROM_Settings { // use bit fields to save space, max 48 bytes @@ -245,4 +245,4 @@ public: static void resetSettings(); }; -extern CrealityDWIN crealityDWIN; +extern JyersDWIN jyersDWIN; diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 2d40baa9d1..8517e2ec23 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -1601,7 +1601,7 @@ void MarlinUI::host_status() { TERN_(EXTENSIBLE_UI, ExtUI::onStatusChanged(status_message)); TERN_(DWIN_CREALITY_LCD, dwinStatusChanged(status_message)); TERN_(DWIN_LCD_PROUI, DWIN_CheckStatusMessage()); - TERN_(DWIN_CREALITY_LCD_JYERSUI, crealityDWIN.updateStatus(status_message)); + TERN_(DWIN_CREALITY_LCD_JYERSUI, jyersDWIN.updateStatus(status_message)); } #if ENABLED(STATUS_MESSAGE_SCROLLING) diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 3e2b2386bd..7ef6970141 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -539,7 +539,7 @@ typedef struct SettingsDataStruct { #if ENABLED(DWIN_LCD_PROUI) uint8_t dwin_data[eeprom_data_size]; #elif ENABLED(DWIN_CREALITY_LCD_JYERSUI) - uint8_t dwin_settings[crealityDWIN.eeprom_data_size]; + uint8_t dwin_settings[jyersDWIN.eeprom_data_size]; #endif // @@ -1618,8 +1618,8 @@ void MarlinSettings::postprocess() { #if ENABLED(DWIN_CREALITY_LCD_JYERSUI) { _FIELD_TEST(dwin_settings); - char dwin_settings[crealityDWIN.eeprom_data_size] = { 0 }; - crealityDWIN.saveSettings(dwin_settings); + char dwin_settings[jyersDWIN.eeprom_data_size] = { 0 }; + jyersDWIN.saveSettings(dwin_settings); EEPROM_WRITE(dwin_settings); } #endif @@ -2679,10 +2679,10 @@ void MarlinSettings::postprocess() { } #elif ENABLED(DWIN_CREALITY_LCD_JYERSUI) { - const char dwin_settings[crealityDWIN.eeprom_data_size] = { 0 }; + const char dwin_settings[jyersDWIN.eeprom_data_size] = { 0 }; _FIELD_TEST(dwin_settings); EEPROM_READ(dwin_settings); - if (!validating) crealityDWIN.loadSettings(dwin_settings); + if (!validating) jyersDWIN.loadSettings(dwin_settings); } #endif @@ -3172,7 +3172,7 @@ void MarlinSettings::reset() { #endif #endif - TERN_(DWIN_CREALITY_LCD_JYERSUI, crealityDWIN.resetSettings()); + TERN_(DWIN_CREALITY_LCD_JYERSUI, jyersDWIN.resetSettings()); // // Case Light Brightness From be18edd604d10aba6fb7a3210e90bf711cc436dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20B=C5=82a=C5=BCewicz?= Date: Wed, 28 Jun 2023 05:51:47 +0200 Subject: [PATCH 586/659] =?UTF-8?q?=F0=9F=9A=B8=20JyersUI=20MPC=20menu=20(?= =?UTF-8?q?#26017)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 142 +++++++++++++++++++++++---- Marlin/src/lcd/e3v2/jyersui/dwin.h | 5 +- 2 files changed, 127 insertions(+), 20 deletions(-) diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index c43afab100..33495d82ba 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -1982,8 +1982,9 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #define TEMP_HOTEND (TEMP_BACK + ENABLED(HAS_HOTEND)) #define TEMP_BED (TEMP_HOTEND + ENABLED(HAS_HEATED_BED)) #define TEMP_FAN (TEMP_BED + ENABLED(HAS_FAN)) - #define TEMP_PID (TEMP_FAN + ANY(HAS_HOTEND, HAS_HEATED_BED)) - #define TEMP_PREHEAT1 (TEMP_PID + (PREHEAT_COUNT >= 1)) + #define TEMP_PID (TEMP_FAN + ANY(PIDTEMP, PIDTEMPBED)) + #define TEMP_MPC (TEMP_PID + ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU)) + #define TEMP_PREHEAT1 (TEMP_MPC + (PREHEAT_COUNT >= 1)) #define TEMP_PREHEAT2 (TEMP_PREHEAT1 + (PREHEAT_COUNT >= 2)) #define TEMP_PREHEAT3 (TEMP_PREHEAT2 + (PREHEAT_COUNT >= 3)) #define TEMP_PREHEAT4 (TEMP_PREHEAT3 + (PREHEAT_COUNT >= 4)) @@ -2027,7 +2028,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra modifyValue(thermalManager.fan_speed[0], MIN_FAN_SPEED, MAX_FAN_SPEED, 1); break; #endif - #if HAS_HOTEND || HAS_HEATED_BED + #if ANY(PIDTEMP, PIDTEMPBED) case TEMP_PID: if (draw) drawMenuItem(row, ICON_Step, F("PID"), nullptr, true); @@ -2035,6 +2036,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawMenu(PID); break; #endif + #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) + case TEMP_MPC: + if (draw) + drawMenuItem(row, ICON_Step, F("MPC"), nullptr, true); + else + drawMenu(MPC); + break; + #endif #define _TEMP_PREHEAT_CASE(N) \ case TEMP_PREHEAT##N: { \ @@ -2050,8 +2059,8 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case PID: #define PID_BACK 0 - #define PID_HOTEND (PID_BACK + ENABLED(HAS_HOTEND)) - #define PID_BED (PID_HOTEND + ENABLED(HAS_HEATED_BED)) + #define PID_HOTEND (PID_BACK + ENABLED(PIDTEMP)) + #define PID_BED (PID_HOTEND + ENABLED(PIDTEMPBED)) #define PID_CYCLES (PID_BED + 1) #define PID_TOTAL PID_CYCLES @@ -2064,7 +2073,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra else drawMenu(TempMenu, TEMP_PID); break; - #if HAS_HOTEND + #if ENABLED(PIDTEMP) case PID_HOTEND: if (draw) drawMenuItem(row, ICON_HotendTemp, F("Hotend"), nullptr, true); @@ -2072,7 +2081,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawMenu(HotendPID); break; #endif - #if HAS_HEATED_BED + #if ENABLED(PIDTEMPBED) case PID_BED: if (draw) drawMenuItem(row, ICON_BedTemp, F("Bed"), nullptr, true); @@ -2090,9 +2099,9 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; } break; - #endif // HAS_HOTEND || HAS_HEATED_BED + #endif // PIDTEMP || PIDTEMPBED - #if HAS_HOTEND + #if ENABLED(PIDTEMP) case HotendPID: #define HOTENDPID_BACK 0 @@ -2156,9 +2165,9 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; } break; - #endif // HAS_HOTEND + #endif // PIDTEMP - #if HAS_HEATED_BED + #if ENABLED(PIDTEMPBED) case BedPID: #define BEDPID_BACK 0 @@ -2224,6 +2233,94 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; #endif // PIDTEMPBED + #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) + case MPC: + + #define MPCMENU_BACK 0 + #define MPCMENU_AUTOTUNE (MPCMENU_BACK + ENABLED(MPC_AUTOTUNE_MENU)) + #define MPCMENU_HEATER_POWER (MPCMENU_AUTOTUNE + ENABLED(MPC_EDIT_MENU)) + #define MPCMENU_BLOCK_HEAT_CAPACITY (MPCMENU_HEATER_POWER + ENABLED(MPC_EDIT_MENU)) + #define MPCMENU_SENSOR_RESPONSIVENESS (MPCMENU_BLOCK_HEAT_CAPACITY + ENABLED(MPC_EDIT_MENU)) + #define MPCMENU_AMBIENT_XFER_COEFF (MPCMENU_SENSOR_RESPONSIVENESS + ENABLED(MPC_EDIT_MENU)) + #define MPCMENU_AMBIENT_XFER_COEFF_FAN (MPCMENU_AMBIENT_XFER_COEFF + ALL(MPC_EDIT_MENU, MPC_INCLUDE_FAN)) + #define MPCMENU_TOTAL MPCMENU_AMBIENT_XFER_COEFF_FAN + + switch (item) { + case MPCMENU_BACK: + if (draw) + drawMenuItem(row, ICON_Back, F("Back")); + else + drawMenu(TempMenu, TEMP_MPC); + break; + + #if ENABLED(MPC_AUTOTUNE_MENU) + case MPCMENU_AUTOTUNE: + if (draw) + drawMenuItem(row, ICON_HotendTemp, F("Autotune")); + else { + popupHandler(MPCWait); + thermalManager.MPC_autotune(active_extruder, Temperature::MPCTuningType::AUTO); + redrawMenu(); + } + break; + #endif + + #if ENABLED(MPC_EDIT_MENU) + case MPCMENU_HEATER_POWER: + if (draw) { + drawMenuItem(row, ICON_Version, F("Heater Power")); + drawFloat(thermalManager.temp_hotend[0].mpc.heater_power, row, false, 1); + } + else + modifyValue(thermalManager.temp_hotend[0].mpc.heater_power, 1, 200, 1); + break; + + case MPCMENU_BLOCK_HEAT_CAPACITY: + if (draw) { + drawMenuItem(row, ICON_Version, F("Block Heat Cap.")); + drawFloat(thermalManager.temp_hotend[0].mpc.block_heat_capacity, row, false, 100); + } + else + modifyValue(thermalManager.temp_hotend[0].mpc.block_heat_capacity, 0, 40, 100); + break; + + case MPCMENU_SENSOR_RESPONSIVENESS: + if (draw) { + drawMenuItem(row, ICON_Version, F("Sensor Resp.")); + drawFloat(thermalManager.temp_hotend[0].mpc.sensor_responsiveness, row, false, 10000); + } + else + modifyValue(thermalManager.temp_hotend[0].mpc.sensor_responsiveness, 0, 1, 10000); + break; + + case MPCMENU_AMBIENT_XFER_COEFF: + if (draw) { + drawMenuItem(row, ICON_Version, F("Amb. xfer coeff")); + drawFloat(thermalManager.temp_hotend[0].mpc.ambient_xfer_coeff_fan0, row, false, 10000); + } + else + modifyValue(thermalManager.temp_hotend[0].mpc.ambient_xfer_coeff_fan0, 0, 1, 10000); + break; + + #if ENABLED(MPC_INCLUDE_FAN) + case MPCMENU_AMBIENT_XFER_COEFF_FAN: { + static float fan255_adjustment; + if (draw) { + drawMenuItem(row, ICON_Version, F("Amb. xfer adj.")); + fan255_adjustment = thermalManager.temp_hotend[0].fanCoefficient(); + drawFloat(fan255_adjustment, row, false, 10000); + } + else + modifyValue(fan255_adjustment, 0, 1, 10000, []{ thermalManager.temp_hotend[0].applyFanAdjustment(fan255_adjustment); }); + } break; + #endif + + #endif // MPC_EDIT_MENU + } + break; + + #endif // MPC_EDIT_MENU || MPC_AUTOTUNE_MENU + #if HAS_PREHEAT #define _PREHEAT_SUBMENU_CASE(N) case Preheat##N: preheat_submenu((N) - 1, item, TEMP_PREHEAT##N); break; REPEAT_1(PREHEAT_COUNT, _PREHEAT_SUBMENU_CASE) @@ -3950,15 +4047,18 @@ FSTR_P JyersDWIN::getMenuTitle(const uint8_t menu) { #endif case Control: return GET_TEXT_F(MSG_CONTROL); case TempMenu: return GET_TEXT_F(MSG_TEMPERATURE); - #if HAS_HOTEND || HAS_HEATED_BED + #if ANY(PIDTEMP, PIDTEMPBED) case PID: return F("PID Menu"); #endif - #if HAS_HOTEND + #if ENABLED(PIDTEMP) case HotendPID: return F("Hotend PID Settings"); #endif - #if HAS_HEATED_BED + #if ENABLED(PIDTEMPBED) case BedPID: return F("Bed PID Settings"); #endif + #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) + case MPC: return F("MPC Menu"); + #endif #if HAS_PREHEAT #define _PREHEAT_TITLE_CASE(N) case Preheat##N: return F(PREHEAT_## N ##_LABEL " Settings"); REPEAT_1(PREHEAT_COUNT, _PREHEAT_TITLE_CASE) @@ -4021,15 +4121,18 @@ uint8_t JyersDWIN::getMenuSize(const uint8_t menu) { #endif case Control: return CONTROL_TOTAL; case TempMenu: return TEMP_TOTAL; - #if HAS_HOTEND || HAS_HEATED_BED + #if ANY(PIDTEMP, PIDTEMPBED) case PID: return PID_TOTAL; #endif - #if HAS_HOTEND + #if ENABLED(PIDTEMP) case HotendPID: return HOTENDPID_TOTAL; #endif - #if HAS_HEATED_BED + #if ENABLED(PIDTEMPBED) case BedPID: return BEDPID_TOTAL; #endif + #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) + case MPC: return MPCMENU_TOTAL; + #endif #if HAS_PREHEAT case Preheat1 ... CAT(Preheat, PREHEAT_COUNT): return PREHEAT_SUBMENU_TOTAL; @@ -4101,6 +4204,7 @@ void JyersDWIN::popupHandler(const PopupID popupid, const bool option/*=false*/) case TempWarn: drawPopup(option ? F("Nozzle temp too low!") : F("Nozzle temp too high!"), F(""), F(""), Wait, option ? ICON_TempTooLow : ICON_TempTooHigh); break; case Runout: drawPopup(F("Filament Runout"), F(""), F(""), Wait, ICON_BLTouch); break; case PIDWait: drawPopup(F("PID Autotune"), F("in process"), F("Please wait until done."), Wait, ICON_BLTouch); break; + case MPCWait: drawPopup(F("MPC Autotune"), F("in process"), F("Please wait until done."), Wait, ICON_BLTouch); break; case Resuming: drawPopup(F("Resuming Print"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; case Custom: drawPopup(F("Running Custom GCode"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; default: break; @@ -4194,9 +4298,9 @@ void JyersDWIN::valueControl() { else if (active_menu == Tune && selection == TUNE_ZOFFSET) { gcode.process_subcommands_now(TS(F("M290Z"), p_float_t((tempvalue / valueunit - zoffsetvalue), 3))); } - if (TERN0(HAS_HOTEND, valuepointer == &thermalManager.temp_hotend[0].pid.Ki) || TERN0(HAS_HEATED_BED, valuepointer == &thermalManager.temp_bed.pid.Ki)) + if (TERN0(PIDTEMP, valuepointer == &thermalManager.temp_hotend[0].pid.Ki) || TERN0(PIDTEMPBED, valuepointer == &thermalManager.temp_bed.pid.Ki)) tempvalue = scalePID_i(tempvalue); - if (TERN0(HAS_HOTEND, valuepointer == &thermalManager.temp_hotend[0].pid.Kd) || TERN0(HAS_HEATED_BED, valuepointer == &thermalManager.temp_bed.pid.Kd)) + if (TERN0(PIDTEMP, valuepointer == &thermalManager.temp_hotend[0].pid.Kd) || TERN0(PIDTEMPBED, valuepointer == &thermalManager.temp_bed.pid.Kd)) tempvalue = scalePID_d(tempvalue); switch (valuetype) { case 0: *(float*)valuepointer = tempvalue / valueunit; break; diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.h b/Marlin/src/lcd/e3v2/jyersui/dwin.h index 6282adbd01..98af1c4cbd 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.h +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.h @@ -43,7 +43,7 @@ enum processID : uint8_t { enum PopupID : uint8_t { Pause, Stop, Resume, SaveLevel, ETemp, ConfFilChange, PurgeMore, MeshSlot, - Level, Home, MoveWait, Heating, FilLoad, FilChange, TempWarn, Runout, PIDWait, Resuming, ManualProbing, + Level, Home, MoveWait, Heating, FilLoad, FilChange, TempWarn, Runout, PIDWait, MPCWait, Resuming, ManualProbing, FilInsert, HeaterTime, UserInput, LevelError, InvalidMesh, UI, Complete, Custom }; @@ -66,6 +66,9 @@ enum menuID : uint8_t { #define _PREHEAT_ID(N) Preheat##N, REPEAT_1(PREHEAT_COUNT, _PREHEAT_ID) #endif + #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) + MPC, + #endif Motion, HomeOffsets, MaxSpeed, From 6474773555274527ac4a24162dfdd9ea4b2b59da Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Thu, 29 Jun 2023 00:06:50 +0200 Subject: [PATCH 587/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20AD4985=20with=205V?= =?UTF-8?q?=20input,=20add=20AD595=203.3V=20warning=20(#26021)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/HAL/AVR/HAL.h | 4 ++-- Marlin/src/HAL/DUE/HAL.h | 2 +- Marlin/src/HAL/ESP32/HAL.h | 2 +- Marlin/src/HAL/LINUX/HAL.h | 4 ++-- Marlin/src/HAL/LPC1768/HAL.h | 2 +- Marlin/src/HAL/NATIVE_SIM/HAL.h | 4 ++-- Marlin/src/HAL/SAMD21/HAL.h | 4 ++-- Marlin/src/HAL/SAMD51/HAL.h | 2 +- Marlin/src/HAL/STM32/HAL.h | 2 +- Marlin/src/HAL/STM32/temp_soc.h | 2 +- Marlin/src/HAL/STM32F1/HAL.h | 2 +- Marlin/src/HAL/TEENSY31_32/HAL.h | 2 +- Marlin/src/HAL/TEENSY35_36/HAL.h | 2 +- Marlin/src/HAL/TEENSY40_41/HAL.h | 2 +- Marlin/src/feature/filwidth.h | 2 +- Marlin/src/feature/power_monitor.h | 4 ++-- Marlin/src/inc/Conditionals_post.h | 6 +++--- Marlin/src/inc/Warnings.cpp | 16 ++++++++++++++++ Marlin/src/module/temperature.cpp | 6 ++++-- buildroot/tests/LPC1768 | 2 +- buildroot/tests/LPC1769 | 3 ++- 21 files changed, 47 insertions(+), 28 deletions(-) diff --git a/Marlin/src/HAL/AVR/HAL.h b/Marlin/src/HAL/AVR/HAL.h index 6d98dff080..16878a8ab8 100644 --- a/Marlin/src/HAL/AVR/HAL.h +++ b/Marlin/src/HAL/AVR/HAL.h @@ -147,8 +147,8 @@ typedef Servo hal_servo_t; // // ADC // -#define HAL_ADC_VREF 5.0 -#define HAL_ADC_RESOLUTION 10 +#define HAL_ADC_VREF_MV 5000 +#define HAL_ADC_RESOLUTION 10 // // Pin Mapping for M42, M43, M226 diff --git a/Marlin/src/HAL/DUE/HAL.h b/Marlin/src/HAL/DUE/HAL.h index 585b893841..7b9285488f 100644 --- a/Marlin/src/HAL/DUE/HAL.h +++ b/Marlin/src/HAL/DUE/HAL.h @@ -123,7 +123,7 @@ typedef Servo hal_servo_t; // // ADC // -#define HAL_ADC_VREF 3.3 +#define HAL_ADC_VREF_MV 3300 #define HAL_ADC_RESOLUTION 10 #ifndef analogInputToDigitalPin diff --git a/Marlin/src/HAL/ESP32/HAL.h b/Marlin/src/HAL/ESP32/HAL.h index 5dc9b2cfe2..97ed4d1e4f 100644 --- a/Marlin/src/HAL/ESP32/HAL.h +++ b/Marlin/src/HAL/ESP32/HAL.h @@ -169,7 +169,7 @@ void _delay_ms(const int ms); // MarlinHAL Class // ------------------------ -#define HAL_ADC_VREF 3.3 +#define HAL_ADC_VREF_MV 3300 #define HAL_ADC_RESOLUTION 10 class MarlinHAL { diff --git a/Marlin/src/HAL/LINUX/HAL.h b/Marlin/src/HAL/LINUX/HAL.h index 22c3e521f0..d1c0cbe7ae 100644 --- a/Marlin/src/HAL/LINUX/HAL.h +++ b/Marlin/src/HAL/LINUX/HAL.h @@ -80,8 +80,8 @@ extern MSerialT usb_serial; #define CRITICAL_SECTION_END() // ADC -#define HAL_ADC_VREF 5.0 -#define HAL_ADC_RESOLUTION 10 +#define HAL_ADC_VREF_MV 5000 +#define HAL_ADC_RESOLUTION 10 // ------------------------ // Class Utilities diff --git a/Marlin/src/HAL/LPC1768/HAL.h b/Marlin/src/HAL/LPC1768/HAL.h index be4d59ada7..c9b7a07394 100644 --- a/Marlin/src/HAL/LPC1768/HAL.h +++ b/Marlin/src/HAL/LPC1768/HAL.h @@ -127,7 +127,7 @@ extern DefaultSerial1 USBSerial; // K = 6, 565 samples, 500Hz sample rate, 1.13s convergence on full range step // Memory usage per ADC channel (bytes): 4 (32 Bytes for 8 channels) -#define HAL_ADC_VREF 3.3 // ADC voltage reference +#define HAL_ADC_VREF_MV 3300 // ADC voltage reference #define HAL_ADC_RESOLUTION 12 // 15 bit maximum, raw temperature is stored as int16_t #define HAL_ADC_FILTERED // Disable oversampling done in Marlin as ADC values already filtered in HAL diff --git a/Marlin/src/HAL/NATIVE_SIM/HAL.h b/Marlin/src/HAL/NATIVE_SIM/HAL.h index 52e5eb4f39..58f084af85 100644 --- a/Marlin/src/HAL/NATIVE_SIM/HAL.h +++ b/Marlin/src/HAL/NATIVE_SIM/HAL.h @@ -114,8 +114,8 @@ extern MSerialT serial_stream_3; // ADC // ------------------------ -#define HAL_ADC_VREF 5.0 -#define HAL_ADC_RESOLUTION 10 +#define HAL_ADC_VREF_MV 5000 +#define HAL_ADC_RESOLUTION 10 /* ---------------- Delay in cycles */ diff --git a/Marlin/src/HAL/SAMD21/HAL.h b/Marlin/src/HAL/SAMD21/HAL.h index 1854e523ed..fe72859549 100644 --- a/Marlin/src/HAL/SAMD21/HAL.h +++ b/Marlin/src/HAL/SAMD21/HAL.h @@ -111,8 +111,8 @@ typedef Servo hal_servo_t; // #define HAL_ADC_FILTERED 1 // Disable Marlin's oversampling. The HAL filters ADC values. -#define HAL_ADC_VREF 3.3 -#define HAL_ADC_RESOLUTION 12 +#define HAL_ADC_VREF_MV 3300 +#define HAL_ADC_RESOLUTION 12 #define HAL_ADC_AIN_START ADC_INPUTCTRL_MUXPOS_PIN3 #define HAL_ADC_AIN_NUM_SENSORS 3 #define HAL_ADC_AIN_LEN HAL_ADC_AIN_NUM_SENSORS-1 diff --git a/Marlin/src/HAL/SAMD51/HAL.h b/Marlin/src/HAL/SAMD51/HAL.h index fe29d6c7f4..c96401fd97 100644 --- a/Marlin/src/HAL/SAMD51/HAL.h +++ b/Marlin/src/HAL/SAMD51/HAL.h @@ -112,7 +112,7 @@ typedef Servo hal_servo_t; // //#define HAL_ADC_FILTERED // Disable Marlin's oversampling. The HAL filters ADC values. -#define HAL_ADC_VREF 3.3 +#define HAL_ADC_VREF_MV 3300 #define HAL_ADC_RESOLUTION 10 // ... 12 // diff --git a/Marlin/src/HAL/STM32/HAL.h b/Marlin/src/HAL/STM32/HAL.h index 24589d0fcc..013390fcaf 100644 --- a/Marlin/src/HAL/STM32/HAL.h +++ b/Marlin/src/HAL/STM32/HAL.h @@ -160,7 +160,7 @@ typedef libServo hal_servo_t; #define HAL_ADC_RESOLUTION 12 #endif -#define HAL_ADC_VREF 3.3 +#define HAL_ADC_VREF_MV 3300 // // Pin Mapping for M42, M43, M226 diff --git a/Marlin/src/HAL/STM32/temp_soc.h b/Marlin/src/HAL/STM32/temp_soc.h index 05262eab8b..05fad695c3 100644 --- a/Marlin/src/HAL/STM32/temp_soc.h +++ b/Marlin/src/HAL/STM32/temp_soc.h @@ -341,6 +341,6 @@ #elif defined(TS_TYPICAL_V) && defined(TS_TYPICAL_SLOPE) && defined(TS_TYPICAL_TEMP) - #define TEMP_SOC_SENSOR(RAW) ((TS_TYPICAL_V - (RAW) / float(OVERSAMPLENR) / float(HAL_ADC_RANGE) * float(ADC_VREF)) / (TS_TYPICAL_SLOPE/1000) + TS_TYPICAL_TEMP) + #define TEMP_SOC_SENSOR(RAW) ((TS_TYPICAL_V - (RAW) / float(OVERSAMPLENR) / float(HAL_ADC_RANGE) * (float(ADC_VREF_MV) / 1000.0f)) / ((TS_TYPICAL_SLOPE) / 1000) + TS_TYPICAL_TEMP) #endif diff --git a/Marlin/src/HAL/STM32F1/HAL.h b/Marlin/src/HAL/STM32F1/HAL.h index b5f4d6fe8b..a6f8036906 100644 --- a/Marlin/src/HAL/STM32F1/HAL.h +++ b/Marlin/src/HAL/STM32F1/HAL.h @@ -190,7 +190,7 @@ typedef int8_t pin_t; #define HAL_ADC_RESOLUTION 12 #endif -#define HAL_ADC_VREF 3.3 +#define HAL_ADC_VREF_MV 3300 uint16_t analogRead(const pin_t pin); // need hal.adc_enable() first void analogWrite(const pin_t pin, int pwm_val8); // PWM only! mul by 257 in maple!? diff --git a/Marlin/src/HAL/TEENSY31_32/HAL.h b/Marlin/src/HAL/TEENSY31_32/HAL.h index a7aa9f0da2..fe913ed583 100644 --- a/Marlin/src/HAL/TEENSY31_32/HAL.h +++ b/Marlin/src/HAL/TEENSY31_32/HAL.h @@ -101,7 +101,7 @@ uint32_t __get_PRIMASK(void); // CMSIS #define analogInputToDigitalPin(p) ((p < 12U) ? (p) + 54U : -1) #endif -#define HAL_ADC_VREF 3.3 +#define HAL_ADC_VREF_MV 3300 #define HAL_ADC_RESOLUTION 10 // diff --git a/Marlin/src/HAL/TEENSY35_36/HAL.h b/Marlin/src/HAL/TEENSY35_36/HAL.h index 2a192e4718..24dcf2ebab 100644 --- a/Marlin/src/HAL/TEENSY35_36/HAL.h +++ b/Marlin/src/HAL/TEENSY35_36/HAL.h @@ -106,7 +106,7 @@ typedef int8_t pin_t; #define analogInputToDigitalPin(p) ((p < 12U) ? (p) + 54U : -1) #endif -#define HAL_ADC_VREF 3.3 +#define HAL_ADC_VREF_MV 3300 #define HAL_ADC_RESOLUTION 10 // diff --git a/Marlin/src/HAL/TEENSY40_41/HAL.h b/Marlin/src/HAL/TEENSY40_41/HAL.h index c54a2e8a0b..84c5847677 100644 --- a/Marlin/src/HAL/TEENSY40_41/HAL.h +++ b/Marlin/src/HAL/TEENSY40_41/HAL.h @@ -124,7 +124,7 @@ typedef int8_t pin_t; #define analogInputToDigitalPin(p) ((p < 12U) ? (p) + 54U : -1) #endif -#define HAL_ADC_VREF 3.3 +#define HAL_ADC_VREF_MV 3300 #define HAL_ADC_RESOLUTION 10 #define HAL_ADC_FILTERED // turn off ADC oversampling diff --git a/Marlin/src/feature/filwidth.h b/Marlin/src/feature/filwidth.h index 9eb1e77762..ab50fe0af3 100644 --- a/Marlin/src/feature/filwidth.h +++ b/Marlin/src/feature/filwidth.h @@ -67,7 +67,7 @@ public: } // Convert raw measurement to mm - static float raw_to_mm(const uint16_t v) { return v * float(ADC_VREF) * RECIPROCAL(float(MAX_RAW_THERMISTOR_VALUE)); } + static float raw_to_mm(const uint16_t v) { return v * (float(ADC_VREF_MV) / 1000.0f) * RECIPROCAL(float(MAX_RAW_THERMISTOR_VALUE)); } static float raw_to_mm() { return raw_to_mm(raw); } // A scaled reading is ready diff --git a/Marlin/src/feature/power_monitor.h b/Marlin/src/feature/power_monitor.h index 89e92fb773..d57ef6fa67 100644 --- a/Marlin/src/feature/power_monitor.h +++ b/Marlin/src/feature/power_monitor.h @@ -46,11 +46,11 @@ struct pm_lpf_t { class PowerMonitor { private: #if ENABLED(POWER_MONITOR_CURRENT) - static constexpr float amps_adc_scale = float(ADC_VREF) / (POWER_MONITOR_VOLTS_PER_AMP * PM_SAMPLE_RANGE); + static constexpr float amps_adc_scale = (float(ADC_VREF_MV) / 1000.0f) / (POWER_MONITOR_VOLTS_PER_AMP * PM_SAMPLE_RANGE); static pm_lpf_t amps; #endif #if ENABLED(POWER_MONITOR_VOLTAGE) - static constexpr float volts_adc_scale = float(ADC_VREF) / (POWER_MONITOR_VOLTS_PER_VOLT * PM_SAMPLE_RANGE); + static constexpr float volts_adc_scale = (float(ADC_VREF_MV) / 1000.0f) / (POWER_MONITOR_VOLTS_PER_VOLT * PM_SAMPLE_RANGE); static pm_lpf_t volts; #endif diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index bc33c20f41..664d4cd544 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -31,10 +31,10 @@ #endif // ADC -#ifdef BOARD_ADC_VREF - #define ADC_VREF BOARD_ADC_VREF +#ifdef BOARD_ADC_VREF_MV + #define ADC_VREF_MV BOARD_ADC_VREF_MV #else - #define ADC_VREF HAL_ADC_VREF + #define ADC_VREF_MV HAL_ADC_VREF_MV #endif // Linear advance uses Jerk since E is an isolated axis diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 34c63239e5..a8820af179 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -750,10 +750,16 @@ #warning "Input Shaping for CORE / MARKFORGED kinematic axes is still experimental." #endif +/** + * Automatic Multistepping Limit + */ #if MULTISTEPPING_LIMIT_WARNING #warning "MULTISTEPPING_LIMIT has been automatically set to 128. Use a lower value if the machine is slow to respond." #endif +/** + * SD Card extras + */ #if SDSORT_CACHE_VFATS_WARNING #warning "SDSORT_CACHE_VFATS has been reduced to VFAT_ENTRIES_LIMIT." #endif @@ -768,6 +774,16 @@ #warning "Place the firmware bin file in a folder named 'STM32F4_UPDATE' on the SD card. Install with 'M936 V2'." #endif +/** + * ProUI Boot Screen Duration + */ #if ENABLED(DWIN_LCD_PROUI) && BOOTSCREEN_TIMEOUT > 2000 #warning "For ProUI the original BOOTSCREEN_TIMEOUT of 1100 is recommended." #endif + +/** + * AD595 Minimum Voltage + */ +#if HAL_ADC_VREF_MV < 5000 && ANY_THERMISTOR_IS(-1) && DISABLED(ALLOW_AD595_3V3_VREF) + #warning "The (-1) AD595 Thermocouple Amplifier requires 5V input supply! Use AD8495 for 3.3V ADC." +#endif diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 7688d83c06..a5fdc4f1fb 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2142,8 +2142,10 @@ void Temperature::task() { UNUSED(ms); } -#define TEMP_AD595(RAW) ((RAW) * 5.0 * 100.0 / float(HAL_ADC_RANGE) / (OVERSAMPLENR) * (TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET) -#define TEMP_AD8495(RAW) ((RAW) * 6.6 * 100.0 / float(HAL_ADC_RANGE) / (OVERSAMPLENR) * (TEMP_SENSOR_AD8495_GAIN) + TEMP_SENSOR_AD8495_OFFSET) +// For a 5V input the AD595 returns a value scaled with 10mV per °C. (Minimum input voltage is 5V.) +#define TEMP_AD595(RAW) ((RAW) * (ADC_VREF_MV / 10) / float(HAL_ADC_RANGE) / (OVERSAMPLENR) * (TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET) +// For a 5V input the AD8495 returns a value scaled with 5mV per °C. (Minimum input voltage is 2.7V.) +#define TEMP_AD8495(RAW) ((RAW) * (ADC_VREF_MV / 5) / float(HAL_ADC_RANGE) / (OVERSAMPLENR) * (TEMP_SENSOR_AD8495_GAIN) + TEMP_SENSOR_AD8495_OFFSET) /** * Bisect search for the range of the 'raw' value, then interpolate diff --git a/buildroot/tests/LPC1768 b/buildroot/tests/LPC1768 index d616f7f48f..52769d2967 100755 --- a/buildroot/tests/LPC1768 +++ b/buildroot/tests/LPC1768 @@ -34,7 +34,7 @@ exec_test $1 $2 "MKS SBASE with SWITCHING_NOZZLE, Grbl Realtime Report" "$3" restore_configs opt_set MOTHERBOARD BOARD_RAMPS_14_RE_ARM_EEB \ - EXTRUDERS 2 TEMP_SENSOR_1 -1 TEMP_SENSOR_BED 5 \ + EXTRUDERS 2 TEMP_SENSOR_1 -4 TEMP_SENSOR_BED 5 \ GRID_MAX_POINTS_X 16 \ NOZZLE_TO_PROBE_OFFSET '{ 0, 0, 0 }' \ NOZZLE_CLEAN_MIN_TEMP 170 \ diff --git a/buildroot/tests/LPC1769 b/buildroot/tests/LPC1769 index 733201e009..a7348bffe9 100755 --- a/buildroot/tests/LPC1769 +++ b/buildroot/tests/LPC1769 @@ -14,7 +14,7 @@ exec_test $1 $2 "Azteeg X5GT Example Configuration" "$3" restore_configs opt_set MOTHERBOARD BOARD_SMOOTHIEBOARD \ - EXTRUDERS 2 TEMP_SENSOR_0 -5 TEMP_SENSOR_1 -1 TEMP_SENSOR_BED 5 TEMP_0_CS_PIN P1_29 \ + EXTRUDERS 2 TEMP_SENSOR_0 -5 TEMP_SENSOR_1 -4 TEMP_SENSOR_BED 5 TEMP_0_CS_PIN P1_29 \ GRID_MAX_POINTS_X 16 \ NOZZLE_CLEAN_START_POINT "{ { 10, 10, 3 }, { 10, 10, 3 } }" \ NOZZLE_CLEAN_END_POINT "{ { 10, 20, 3 }, { 10, 20, 3 } }" @@ -43,6 +43,7 @@ exec_test $1 $2 "Smoothieboard with TFTGLCD_PANEL_SPI and many features" "$3" restore_configs use_example_configs delta/generic opt_set MOTHERBOARD BOARD_COHESION3D_REMIX \ + TEMP_SENSOR_0 1 \ X_DRIVER_TYPE TMC2130 Y_DRIVER_TYPE TMC2130 Z_DRIVER_TYPE TMC2130 I_DRIVER_TYPE TB6560 \ DEFAULT_AXIS_STEPS_PER_UNIT '{ 80, 80, 400, 500, 80 }' \ DEFAULT_MAX_FEEDRATE '{ 300, 300, 5, 25, 300 }' \ From aee8e15fd2b1b701a5f16e92a0c557c6dccb13de Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 29 Jun 2023 00:25:22 +0000 Subject: [PATCH 588/659] [cron] Bump distribution date (2023-06-29) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index a1acaf447f..34e5fc972c 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-28" +//#define STRING_DISTRIBUTION_DATE "2023-06-29" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 413ff93ac1..ffa61571c7 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-28" + #define STRING_DISTRIBUTION_DATE "2023-06-29" #endif /** From cb12114a7eeaefc227aa7aa94a8e382bfd3aa95a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20B=C5=82a=C5=BCewicz?= Date: Thu, 29 Jun 2023 09:18:32 +0200 Subject: [PATCH 589/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20JyersUI=20typos=20?= =?UTF-8?q?(#26029)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #24390 --- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 33495d82ba..22ff4b8a00 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -1578,7 +1578,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if ENABLED(Z_SAFE_HOMING) planner.synchronize(); gcode.process_subcommands_now( - TS(F("G0F4000X"), p_float_t(Z_SAFE_HOMING_X_POINT, 3), 'Y', p_float_t(Z_SAFE_HOMING_Y_POINT, 3)); + TS(F("G0F4000X"), p_float_t(Z_SAFE_HOMING_X_POINT, 3), 'Y', p_float_t(Z_SAFE_HOMING_Y_POINT, 3)) ); #else gcode.process_subcommands_now(F("G0 F4000 X117.5 Y117.5")); @@ -1603,7 +1603,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if ENABLED(Z_SAFE_HOMING) planner.synchronize(); gcode.process_subcommands_now( - TS(F("G0F4000X"), p_float_t(Z_SAFE_HOMING_X_POINT, 3), 'Y', p_float_t(Z_SAFE_HOMING_Y_POINT, 3)); + TS(F("G0F4000X"), p_float_t(Z_SAFE_HOMING_X_POINT, 3), 'Y', p_float_t(Z_SAFE_HOMING_Y_POINT, 3)) ); #else gcode.process_subcommands_now(F("G0 F4000 X117.5 Y117.5")); @@ -3004,7 +3004,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawMenuItem(row, ICON_StepY, F("M48 Probe Test")); else { gcode.process_subcommands_now( - TS(F("G28O\nM48X" , p_float_t((X_BED_SIZE + X_MIN_POS) / 2.0f, 3), 'Y', p_float_t((Y_BED_SIZE + Y_MIN_POS) / 2.0f, 3), 'P', testcount)) + TS(F("G28O\nM48X") , p_float_t((X_BED_SIZE + X_MIN_POS) / 2.0f, 3), 'Y', p_float_t((Y_BED_SIZE + Y_MIN_POS) / 2.0f, 3), 'P', testcount) ); } break; From 97e15812fa15cf3ee9f260089282eb5e69915c4e Mon Sep 17 00:00:00 2001 From: Andrew <18502096+classicrocker883@users.noreply.github.com> Date: Thu, 29 Jun 2023 13:21:14 -0400 Subject: [PATCH 590/659] =?UTF-8?q?=F0=9F=94=A8=20Makefile=20+=20256K=20Cr?= =?UTF-8?q?eality=20Maple=20+=20Heater=20IDs=20(#26018)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Makefile | 40 +++++++++---------- Marlin/src/feature/bedlevel/ubl/ubl.h | 1 - Marlin/src/inc/Conditionals_adv.h | 33 +++++++-------- Marlin/src/module/temperature.cpp | 2 +- Marlin/src/module/temperature.h | 13 +----- .../PlatformIO/ldscripts/creality256k.ld | 14 +++++++ ini/stm32f1-maple.ini | 6 +-- 7 files changed, 56 insertions(+), 53 deletions(-) create mode 100644 buildroot/share/PlatformIO/ldscripts/creality256k.ld diff --git a/Marlin/Makefile b/Marlin/Makefile index ca7cacaa6a..e5ba9cb341 100644 --- a/Marlin/Makefile +++ b/Marlin/Makefile @@ -63,8 +63,8 @@ HARDWARE_MOTHERBOARD ?= 1020 ifeq ($(OS),Windows_NT) # Windows - ARDUINO_INSTALL_DIR ?= ${HOME}/Arduino - ARDUINO_USER_DIR ?= ${HOME}/Arduino + ARDUINO_INSTALL_DIR ?= ${HOME}/AppData/Local/Arduino + ARDUINO_USER_DIR ?= ${HOME}/Documents/Arduino else UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Linux) @@ -82,11 +82,11 @@ endif # Arduino source install directory, and version number # On most linuxes this will be /usr/share/arduino -ARDUINO_INSTALL_DIR ?= ${HOME}/Arduino -ARDUINO_VERSION ?= 106 +ARDUINO_INSTALL_DIR ?= ${HOME}/AppData/Local/Arduino # C:/Users/${USERNAME}/AppData/Local/Arduino +ARDUINO_VERSION ?= 10819 # The installed Libraries are in the User folder -ARDUINO_USER_DIR ?= ${HOME}/Arduino +ARDUINO_USER_DIR ?= ${HOME}/Documents/Arduino # You can optionally set a path to the avr-gcc tools. # Requires a trailing slash. For example, /usr/local/avr-gcc/bin/ @@ -656,18 +656,18 @@ ifeq ($(HARDWARE_VARIANT), $(filter $(HARDWARE_VARIANT),arduino Teensy Sanguino) # Old libraries (avr-core 1.6.21 < / Arduino < 1.6.8) VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI # New libraries (avr-core >= 1.6.21 / Arduino >= 1.6.8) - VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI/src + VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/arduino/avr/1.8.6/libraries/SPI/src endif ifeq ($(IS_MCU),1) - VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino + VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/arduino/avr/1.8.6/cores/arduino # Old libraries (avr-core 1.6.21 < / Arduino < 1.6.8) VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SoftwareSerial # New libraries (avr-core >= 1.6.21 / Arduino >= 1.6.8) - VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI/src - VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SoftwareSerial/src + VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/arduino/avr/1.8.6/libraries/SPI/src + VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/arduino/avr/1.8.6/libraries/SoftwareSerial/src endif VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidCrystal/src @@ -681,17 +681,17 @@ ifeq ($(WIRE), 1) VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire/utility # New libraries (avr-core >= 1.6.21 / Arduino >= 1.6.8) - VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire/src - VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire/src/utility + VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/avr/1.8.6/libraries/Wire/src + VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/avr/1.8.6/libraries/Wire/src/utility endif ifeq ($(NEOPIXEL), 1) VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Adafruit_NeoPixel endif ifeq ($(U8GLIB), 1) -VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib -VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib/csrc -VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib/cppsrc -VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib/fntsrc +VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib-HAL +VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib-HAL/src +# VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib +# VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib/src endif ifeq ($(TMC), 1) VPATH += $(ARDUINO_INSTALL_DIR)/libraries/TMCStepper/src @@ -700,9 +700,9 @@ endif ifeq ($(HARDWARE_VARIANT), arduino) HARDWARE_SUB_VARIANT ?= mega - VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/variants/$(HARDWARE_SUB_VARIANT) + VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/avr/1.8.6/variants/$(HARDWARE_SUB_VARIANT) else ifeq ($(HARDWARE_VARIANT), Sanguino) - VPATH += $(ARDUINO_INSTALL_DIR)/hardware/marlin/avr/variants/sanguino + VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/avr/1.8.6/variants/sanguino else ifeq ($(HARDWARE_VARIANT), archim) VPATH += $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/system/libsam VPATH += $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/system/CMSIS/CMSIS/Include/ @@ -718,7 +718,7 @@ else ifeq ($(HARDWARE_VARIANT), archim) LDLIBS = $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/variants/archim/libsam_sam3x8e_gcc_rel.a else HARDWARE_SUB_VARIANT ?= standard - VPATH += $(ARDUINO_INSTALL_DIR)/hardware/$(HARDWARE_VARIANT)/variants/$(HARDWARE_SUB_VARIANT) + VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/avr/1.8.6/variants/$(HARDWARE_SUB_VARIANT) endif LIB_SRC = wiring.c \ @@ -733,7 +733,7 @@ endif ifeq ($(HARDWARE_VARIANT), Teensy) LIB_SRC = wiring.c - VPATH += $(ARDUINO_INSTALL_DIR)/hardware/teensy/cores/teensy + VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/teensy/cores/teensy endif LIB_CXXSRC = WMath.cpp WString.cpp Print.cpp SPI.cpp @@ -880,7 +880,7 @@ AVRDUDE_WRITE_FLASH = -Uflash:w:$(BUILD_DIR)/$(TARGET).hex:i ifeq ($(shell uname -s), Linux) AVRDUDE_CONF = /etc/avrdude/avrdude.conf else - AVRDUDE_CONF = $(ARDUINO_INSTALL_DIR)/hardware/tools/avr/etc/avrdude.conf + AVRDUDE_CONF = $(ARDUINO_INSTALL_DIR)/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf endif AVRDUDE_FLAGS = -D -C$(AVRDUDE_CONF) \ -p$(PROG_MCU) -P$(AVRDUDE_PORT) -c$(AVRDUDE_PROGRAMMER) \ diff --git a/Marlin/src/feature/bedlevel/ubl/ubl.h b/Marlin/src/feature/bedlevel/ubl/ubl.h index f751ce40d0..7377f7dfc0 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl.h +++ b/Marlin/src/feature/bedlevel/ubl/ubl.h @@ -77,7 +77,6 @@ private: static bool G29_parse_parameters() __O0; static void shift_mesh_height(); static void probe_entire_mesh(const xy_pos_t &near, const bool do_ubl_mesh_map, const bool stow_probe, const bool do_furthest) __O0; - static void tilt_mesh_based_on_3pts(const_float_t z1, const_float_t z2, const_float_t z3); static void tilt_mesh_based_on_probed_grid(const bool do_ubl_mesh_map); static bool smart_fill_one(const uint8_t x, const uint8_t y, const int8_t xdir, const int8_t ydir); static bool smart_fill_one(const xy_uint8_t &pos, const xy_uint8_t &dir) { diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 4892ff24b1..d5f4be18b9 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -306,21 +306,22 @@ */ // Temperature sensor IDs -#define HID_REDUNDANT -7 -#define HID_SOC -6 -#define HID_BOARD -5 -#define HID_COOLER -4 -#define HID_PROBE -3 -#define HID_CHAMBER -2 -#define HID_BED -1 -#define HID_E0 0 -#define HID_E1 1 -#define HID_E2 2 -#define HID_E3 3 -#define HID_E4 4 -#define HID_E5 5 -#define HID_E6 6 -#define HID_E7 7 +#define H_NONE -128 +#define H_REDUNDANT -7 +#define H_SOC -6 +#define H_BOARD -5 +#define H_COOLER -4 +#define H_PROBE -3 +#define H_CHAMBER -2 +#define H_BED -1 +#define H_E0 0 +#define H_E1 1 +#define H_E2 2 +#define H_E3 3 +#define H_E4 4 +#define H_E5 5 +#define H_E6 6 +#define H_E7 7 #define _SENSOR_IS(I,N) || (TEMP_SENSOR(N) == I) #define _E_SENSOR_IS(I,N) _SENSOR_IS(N,I) @@ -333,7 +334,7 @@ #endif #if TEMP_SENSOR_REDUNDANT - #define _HEATER_ID(M) HID_##M + #define _HEATER_ID(M) H_##M #define HEATER_ID(M) _HEATER_ID(M) #define REDUNDANT_TEMP_MATCH(M,N) (HEATER_ID(TEMP_SENSOR_REDUNDANT_##M) == _HEATER_ID(N)) #else diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index a5fdc4f1fb..c38d4968c9 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2944,7 +2944,7 @@ void Temperature::init() { temp_range[NR].raw_max -= TEMPDIR(NR) * (OVERSAMPLENR); \ }while(0) - #define _MINMAX_TEST(N,M) (!TEMP_SENSOR_##N##_IS_DUMMY && HOTENDS > N && TEMP_SENSOR_##N##_IS_THERMISTOR && defined(HEATER_##N##_##M##TEMP)) + #define _MINMAX_TEST(N,M) (!TEMP_SENSOR_##N##_IS_DUMMY && HOTENDS > (N) && TEMP_SENSOR_##N##_IS_THERMISTOR && defined(HEATER_##N##_##M##TEMP)) #if _MINMAX_TEST(0, MIN) _TEMP_MIN_E(0); diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index 51fa6f1eff..a8873bf2af 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -55,18 +55,7 @@ #define FAN_IS_M106ABLE(Q) false #endif -// Element identifiers. Positive values are hotends. Negative values are other heaters or coolers. -typedef enum : int_fast8_t { - H_REDUNDANT = HID_REDUNDANT, - H_COOLER = HID_COOLER, - H_PROBE = HID_PROBE, - H_BOARD = HID_BOARD, - H_SOC = HID_SOC, - H_CHAMBER = HID_CHAMBER, - H_BED = HID_BED, - H_E0 = HID_E0, H_E1, H_E2, H_E3, H_E4, H_E5, H_E6, H_E7, - H_NONE = -128 -} heater_id_t; +typedef int_fast8_t heater_id_t; /** * States for ADC reading in the ISR diff --git a/buildroot/share/PlatformIO/ldscripts/creality256k.ld b/buildroot/share/PlatformIO/ldscripts/creality256k.ld new file mode 100644 index 0000000000..1ed03caa0a --- /dev/null +++ b/buildroot/share/PlatformIO/ldscripts/creality256k.ld @@ -0,0 +1,14 @@ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 48K - 40 + rom (rx) : ORIGIN = 0x08007000, LENGTH = 256K - 28K +} + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/ini/stm32f1-maple.ini b/ini/stm32f1-maple.ini index 6f9ac32e0e..0a8453f307 100644 --- a/ini/stm32f1-maple.ini +++ b/ini/stm32f1-maple.ini @@ -111,7 +111,7 @@ lib_deps = ${env:STM32F103RC_btt_maple.lib_deps} USBComposite for STM32F1@0.91 # -# Creality (STM32F103RET6) +# Creality 512K (STM32F103RET6) # [env:STM32F103RE_creality_maple] extends = env:STM32F103RE_maple @@ -123,13 +123,13 @@ debug_tool = jlink upload_protocol = jlink # -# Creality (STM32F103RCT6) +# Creality 256K (STM32F103RCT6) # [env:STM32F103RC_creality_maple] extends = env:STM32F103RC_maple build_flags = ${env:STM32F103RC_maple.build_flags} -DTEMP_TIMER_CHAN=4 board_build.address = 0x08007000 -board_build.ldscript = creality.ld +board_build.ldscript = creality256k.ld board_build.rename = firmware-{date}-{time}.bin debug_tool = jlink upload_protocol = jlink From d9349caeee7307d660ec729052210dfba7036432 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Thu, 29 Jun 2023 13:27:25 -0700 Subject: [PATCH 591/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Ethernet=20Buffer?= =?UTF-8?q?=20for=20Input=20Shaping=20on=20LPC=20(#26027)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.cpp | 8 +++++++- Marlin/src/pins/pins.h | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 50b8323838..5d48b20ee8 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -247,7 +247,13 @@ uint32_t Stepper::advance_divisor = 0, #if HAS_ZV_SHAPING shaping_time_t ShapingQueue::now = 0; - shaping_time_t ShapingQueue::times[shaping_echoes]; + #if ANY(MCU_LPC1768, MCU_LPC1769) && DISABLED(NO_LPC_ETHERNET_BUFFER) + // Use the 16K LPC Ethernet buffer: https://github.com/MarlinFirmware/Marlin/issues/25432#issuecomment-1450420638 + #define _ATTR_BUFFER __attribute__((section("AHBSRAM1"),aligned)) + #else + #define _ATTR_BUFFER + #endif + shaping_time_t ShapingQueue::times[shaping_echoes] _ATTR_BUFFER; shaping_echo_axis_t ShapingQueue::echo_axes[shaping_echoes]; uint16_t ShapingQueue::tail = 0; diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 7e235ca80a..4d41d76d88 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -120,7 +120,7 @@ #ifdef __MARLIN_DEPS__ #define NOT_TARGET(V...) 0 #else - #define NOT_TARGET(V...) NONE(V) + #define NOT_TARGET NONE #endif // From 7b23fd3548f5aabc269ba24ec947d6fdfd225072 Mon Sep 17 00:00:00 2001 From: narno2202 <130909513+narno2202@users.noreply.github.com> Date: Fri, 30 Jun 2023 00:06:05 +0200 Subject: [PATCH 592/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20FT=20Motion=20runo?= =?UTF-8?q?ut=20in=20progress=20(#26020)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 2 +- Marlin/src/module/ft_motion.cpp | 39 ++++++++++++++++++++++++++++----- Marlin/src/module/ft_motion.h | 1 + Marlin/src/module/ft_types.h | 2 +- 4 files changed, 36 insertions(+), 8 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index eee111a541..be54354d5c 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1125,7 +1125,7 @@ * Advanced configuration */ #define FTM_BATCH_SIZE 100 // Batch size for trajectory generation; - // half the window size for Ulendo FBS. + #define FTM_WINDOW_SIZE 200 // Window size for trajectory generation. #define FTM_FS 1000 // (Hz) Frequency for trajectory generation. (1 / FTM_TS) #define FTM_TS 0.001f // (s) Time step for trajectory generation. (1 / FTM_FS) #define FTM_STEPPER_FS 20000 // (Hz) Frequency for stepper I/O update. diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp index d3c4de8962..6fe8e936e0 100644 --- a/Marlin/src/module/ft_motion.cpp +++ b/Marlin/src/module/ft_motion.cpp @@ -75,6 +75,7 @@ bool FxdTiCtrl::batchRdy = false; // Indicates a batch of the fi bool FxdTiCtrl::batchRdyForInterp = false; // Indicates the batch is done being post processed, // if applicable, and is ready to be converted to step commands. bool FxdTiCtrl::runoutEna = false; // True if runout of the block hasn't been done and is allowed. +bool FxdTiCtrl::runout = false; // Indicates if runout is in progress. // Trapezoid data variables. xyze_pos_t FxdTiCtrl::startPosn, // (mm) Start position of block @@ -123,6 +124,8 @@ hal_timer_t FxdTiCtrl::nextStepTicks = FTM_MIN_TICKS; // Accumulator for the nex float FxdTiCtrl::e_advanced_z1 = 0.0f; // (ms) Unit delay of advanced extruder position. #endif +constexpr uint32_t last_batchIdx = (FTM_WINDOW_SIZE) - (FTM_BATCH_SIZE); + //-----------------------------------------------------------------// // Function definitions. //-----------------------------------------------------------------// @@ -143,8 +146,8 @@ void FxdTiCtrl::runoutBlock() { if (runoutEna && !batchRdy) { // If the window is full already (block intervals was a multiple of // the batch size), or runout is not enabled, no runout is needed. // Fill out the trajectory window with the last position calculated. - if (makeVector_batchIdx > FTM_BATCH_SIZE) - for (uint32_t i = makeVector_batchIdx; i < 2 * (FTM_BATCH_SIZE); i++) { + if (makeVector_batchIdx > last_batchIdx) + for (uint32_t i = makeVector_batchIdx; i < (FTM_WINDOW_SIZE); i++) { LOGICAL_AXIS_CODE( traj.e[i] = traj.e[makeVector_batchIdx - 1], traj.x[i] = traj.x[makeVector_batchIdx - 1], @@ -159,8 +162,9 @@ void FxdTiCtrl::runoutBlock() { ); } - makeVector_batchIdx = FTM_BATCH_SIZE; + makeVector_batchIdx = last_batchIdx; batchRdy = true; + runout = true; } runoutEna = false; } @@ -184,7 +188,7 @@ void FxdTiCtrl::loop() { } // Planner processing and block conversion. - if (!blockProcRdy) stepper.fxdTiCtrl_BlockQueueUpdate(); + if (!blockProcRdy && !runout) stepper.fxdTiCtrl_BlockQueueUpdate(); if (blockProcRdy) { if (!blockProcRdy_z1) loadBlockData(current_block_cpy); // One-shot. @@ -192,6 +196,27 @@ void FxdTiCtrl::loop() { makeVector(); } + if (runout && !batchRdy) { // The lower half of the window has been runout. + // Runout the upper half of the window: the upper half has been shifted into the lower + // half. Fill out the upper half so another batch can be processed. + for (uint32_t i = last_batchIdx; i < (FTM_WINDOW_SIZE) - 1; i++) { + LOGICAL_AXIS_CODE( + traj.e[i] = traj.e[(FTM_WINDOW_SIZE) - 1], + traj.x[i] = traj.x[(FTM_WINDOW_SIZE) - 1], + traj.y[i] = traj.y[(FTM_WINDOW_SIZE) - 1], + traj.z[i] = traj.z[(FTM_WINDOW_SIZE) - 1], + traj.i[i] = traj.i[(FTM_WINDOW_SIZE) - 1], + traj.j[i] = traj.j[(FTM_WINDOW_SIZE) - 1], + traj.k[i] = traj.k[(FTM_WINDOW_SIZE) - 1], + traj.u[i] = traj.u[(FTM_WINDOW_SIZE) - 1], + traj.v[i] = traj.v[(FTM_WINDOW_SIZE) - 1], + traj.w[i] = traj.w[(FTM_WINDOW_SIZE) - 1] + ); + } + batchRdy = true; + runout = false; + } + // FBS / post processing. if (batchRdy && !batchRdyForInterp) { @@ -371,10 +396,12 @@ void FxdTiCtrl::reset() { stepperCmdBuff_produceIdx = stepperCmdBuff_consumeIdx = 0; traj.reset(); // Reset trajectory history + trajMod.reset(); // Reset modified trajectory history blockProcRdy = blockProcRdy_z1 = blockProcDn = false; batchRdy = batchRdyForInterp = false; runoutEna = false; + runout = false; endPosn_prevBlock.reset(); @@ -611,8 +638,8 @@ void FxdTiCtrl::makeVector() { #endif // Filled up the queue with regular and shaped steps - if (++makeVector_batchIdx == 2 * (FTM_BATCH_SIZE)) { - makeVector_batchIdx = FTM_BATCH_SIZE; + if (++makeVector_batchIdx == (FTM_WINDOW_SIZE)) { + makeVector_batchIdx = last_batchIdx; batchRdy = true; } diff --git a/Marlin/src/module/ft_motion.h b/Marlin/src/module/ft_motion.h index f4be977786..2186ecb710 100644 --- a/Marlin/src/module/ft_motion.h +++ b/Marlin/src/module/ft_motion.h @@ -133,6 +133,7 @@ class FxdTiCtrl { static bool blockProcRdy, blockProcRdy_z1, blockProcDn; static bool batchRdy, batchRdyForInterp; static bool runoutEna; + static bool runout; // Trapezoid data variables. static xyze_pos_t startPosn, // (mm) Start position of block diff --git a/Marlin/src/module/ft_types.h b/Marlin/src/module/ft_types.h index c4465bd37b..a7228d32d6 100644 --- a/Marlin/src/module/ft_types.h +++ b/Marlin/src/module/ft_types.h @@ -48,7 +48,7 @@ enum stepDirState_t : uint8_t { stepDirState_NEG = 2U }; -typedef struct XYZEarray xyze_trajectory_t; +typedef struct XYZEarray xyze_trajectory_t; typedef struct XYZEarray xyze_trajectoryMod_t; typedef struct XYZEval xyze_stepDir_t; From 7247acdece4bb20bfd49960c44a7bebe1ea0f74c Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 30 Jun 2023 00:24:45 +0000 Subject: [PATCH 593/659] [cron] Bump distribution date (2023-06-30) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 34e5fc972c..7bcfb4284a 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-29" +//#define STRING_DISTRIBUTION_DATE "2023-06-30" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index ffa61571c7..bea99e823a 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-29" + #define STRING_DISTRIBUTION_DATE "2023-06-30" #endif /** From f14f1be168ebf252dd458c935271aed1a57cfa0b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 30 Jun 2023 19:16:00 -0500 Subject: [PATCH 594/659] =?UTF-8?q?=F0=9F=8E=A8=20Standardize=20naming=20(?= =?UTF-8?q?ProUI)=20(#25982)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 4 +- Marlin/src/feature/runout.cpp | 2 +- Marlin/src/gcode/bedlevel/abl/G29.cpp | 4 +- Marlin/src/gcode/bedlevel/mbl/G29.cpp | 6 +- Marlin/src/gcode/bedlevel/ubl/M421.cpp | 4 +- Marlin/src/gcode/config/M302.cpp | 2 +- Marlin/src/gcode/control/M997.cpp | 2 +- Marlin/src/gcode/feature/powerloss/M1000.cpp | 2 +- Marlin/src/gcode/lcd/M0_M1.cpp | 4 +- Marlin/src/gcode/sd/M1001.cpp | 2 - Marlin/src/gcode/stats/M75-M78.cpp | 2 +- Marlin/src/gcode/temp/M303.cpp | 6 +- Marlin/src/inc/Conditionals_post.h | 6 +- Marlin/src/lcd/e3v2/common/dwin_color.h | 30 +- Marlin/src/lcd/e3v2/creality/dwin.cpp | 821 ++--- Marlin/src/lcd/e3v2/creality/dwin.h | 147 +- Marlin/src/lcd/e3v2/creality/dwin_lcd.cpp | 2 +- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 1067 ++++--- Marlin/src/lcd/e3v2/jyersui/dwin.h | 152 +- Marlin/src/lcd/e3v2/marlinui/dwin_lcd.cpp | 2 +- Marlin/src/lcd/e3v2/marlinui/ui_common.cpp | 66 +- .../lcd/e3v2/marlinui/ui_status_480x272.cpp | 48 +- Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp | 80 +- Marlin/src/lcd/e3v2/proui/bedlevel_tools.h | 35 +- Marlin/src/lcd/e3v2/proui/dwin.cpp | 2844 +++++++++-------- Marlin/src/lcd/e3v2/proui/dwin.h | 345 +- Marlin/src/lcd/e3v2/proui/dwin_defines.h | 42 +- Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp | 16 +- Marlin/src/lcd/e3v2/proui/dwin_lcd.h | 16 +- Marlin/src/lcd/e3v2/proui/dwin_popup.cpp | 30 +- Marlin/src/lcd/e3v2/proui/dwin_popup.h | 42 +- Marlin/src/lcd/e3v2/proui/dwinui.cpp | 140 +- Marlin/src/lcd/e3v2/proui/dwinui.h | 342 +- Marlin/src/lcd/e3v2/proui/endstop_diag.cpp | 28 +- Marlin/src/lcd/e3v2/proui/endstop_diag.h | 8 +- Marlin/src/lcd/e3v2/proui/gcode_preview.cpp | 16 +- Marlin/src/lcd/e3v2/proui/lockscreen.cpp | 34 +- Marlin/src/lcd/e3v2/proui/lockscreen.h | 4 +- Marlin/src/lcd/e3v2/proui/menus.cpp | 412 +-- Marlin/src/lcd/e3v2/proui/menus.h | 198 +- Marlin/src/lcd/e3v2/proui/meshviewer.cpp | 68 +- Marlin/src/lcd/e3v2/proui/meshviewer.h | 14 +- Marlin/src/lcd/e3v2/proui/plot.cpp | 24 +- Marlin/src/lcd/e3v2/proui/plot.h | 4 +- Marlin/src/lcd/e3v2/proui/printstats.cpp | 40 +- Marlin/src/lcd/e3v2/proui/printstats.h | 12 +- Marlin/src/lcd/marlinui.cpp | 2 +- Marlin/src/module/motion.h | 2 +- Marlin/src/module/probe.cpp | 2 +- Marlin/src/module/settings.cpp | 8 +- Marlin/src/module/stepper.cpp | 2 +- Marlin/src/module/temperature.cpp | 20 +- 52 files changed, 3629 insertions(+), 3582 deletions(-) diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index 3b8ee33730..6f5187cc9f 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -759,7 +759,7 @@ void unified_bed_leveling::shift_mesh_height() { TERN_(HAS_MARLINUI_MENU, ui.capture()); TERN_(EXTENSIBLE_UI, ExtUI::onLevelingStart()); - TERN_(DWIN_LCD_PROUI, DWIN_LevelingStart()); + TERN_(DWIN_LCD_PROUI, dwinLevelingStart()); save_ubl_active_state_and_disable(); // No bed level correction so only raw data is obtained grid_count_t count = GRID_MAX_POINTS; @@ -820,7 +820,7 @@ void unified_bed_leveling::shift_mesh_height() { ); TERN_(EXTENSIBLE_UI, ExtUI::onLevelingDone()); - TERN_(DWIN_LCD_PROUI, DWIN_LevelingDone()); + TERN_(DWIN_LCD_PROUI, dwinLevelingDone()); } #endif // HAS_BED_PROBE diff --git a/Marlin/src/feature/runout.cpp b/Marlin/src/feature/runout.cpp index a1d4d259b7..db325dee7a 100644 --- a/Marlin/src/feature/runout.cpp +++ b/Marlin/src/feature/runout.cpp @@ -88,7 +88,7 @@ void event_filament_runout(const uint8_t extruder) { #endif TERN_(EXTENSIBLE_UI, ExtUI::onFilamentRunout(ExtUI::getTool(extruder))); - TERN_(DWIN_LCD_PROUI, DWIN_FilamentRunout(extruder)); + TERN_(DWIN_LCD_PROUI, dwinFilamentRunout(extruder)); #if ANY(HOST_PROMPT_SUPPORT, HOST_ACTION_COMMANDS, MULTI_FILAMENT_SENSOR) const char tool = '0' + TERN0(MULTI_FILAMENT_SENSOR, extruder); diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index 5632c6e467..5ecb6af66c 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -429,7 +429,7 @@ G29_TYPE GcodeSuite::G29() { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("> 3-point Leveling"); points[0].z = points[1].z = points[2].z = 0; // Probe at 3 arbitrary points #elif ENABLED(AUTO_BED_LEVELING_BILINEAR) - TERN_(DWIN_LCD_PROUI, DWIN_LevelingStart()); + TERN_(DWIN_LCD_PROUI, dwinLevelingStart()); #endif TERN_(EXTENSIBLE_UI, ExtUI::onLevelingStart()); @@ -440,7 +440,7 @@ G29_TYPE GcodeSuite::G29() { #if ENABLED(PREHEAT_BEFORE_LEVELING) if (!abl.dryrun) probe.preheat_for_probing(LEVELING_NOZZLE_TEMP, #if ALL(DWIN_LCD_PROUI, HAS_HEATED_BED) - HMI_data.BedLevT + hmiData.bedLevT #else LEVELING_BED_TEMP #endif diff --git a/Marlin/src/gcode/bedlevel/mbl/G29.cpp b/Marlin/src/gcode/bedlevel/mbl/G29.cpp index 4bc9ba777a..c5e02b91f9 100644 --- a/Marlin/src/gcode/bedlevel/mbl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/mbl/G29.cpp @@ -143,7 +143,7 @@ void GcodeSuite::G29() { queue.inject(F("G29S2")); TERN_(EXTENSIBLE_UI, ExtUI::onLevelingStart()); - TERN_(DWIN_LCD_PROUI, DWIN_LevelingStart()); + TERN_(DWIN_LCD_PROUI, dwinLevelingStart()); return; } @@ -169,7 +169,7 @@ void GcodeSuite::G29() { // Save Z for the previous mesh position bedlevel.set_zigzag_z(mbl_probe_index - 1, current_position.z); TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(ix, iy, current_position.z)); - TERN_(DWIN_LCD_PROUI, DWIN_MeshUpdate(_MIN(mbl_probe_index, GRID_MAX_POINTS), int(GRID_MAX_POINTS), current_position.z)); + TERN_(DWIN_LCD_PROUI, dwinMeshUpdate(_MIN(mbl_probe_index, GRID_MAX_POINTS), int(GRID_MAX_POINTS), current_position.z)); SET_SOFT_ENDSTOP_LOOSE(false); } // If there's another point to sample, move there with optional lift. @@ -236,7 +236,7 @@ void GcodeSuite::G29() { if (parser.seenval('Z')) { bedlevel.z_values[ix][iy] = parser.value_linear_units(); TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(ix, iy, bedlevel.z_values[ix][iy])); - TERN_(DWIN_LCD_PROUI, DWIN_MeshUpdate(ix, iy, bedlevel.z_values[ix][iy])); + TERN_(DWIN_LCD_PROUI, dwinMeshUpdate(ix, iy, bedlevel.z_values[ix][iy])); } else return echo_not_entered('Z'); diff --git a/Marlin/src/gcode/bedlevel/ubl/M421.cpp b/Marlin/src/gcode/bedlevel/ubl/M421.cpp index ff74f4c6f7..3a5aa8cb03 100644 --- a/Marlin/src/gcode/bedlevel/ubl/M421.cpp +++ b/Marlin/src/gcode/bedlevel/ubl/M421.cpp @@ -66,10 +66,10 @@ void GcodeSuite::M421() { else if (!WITHIN(ij.x, 0, GRID_MAX_POINTS_X - 1) || !WITHIN(ij.y, 0, GRID_MAX_POINTS_Y - 1)) SERIAL_ERROR_MSG(STR_ERR_MESH_XY); else { - float &zval = bedlevel.z_values[ij.x][ij.y]; // Altering this Mesh Point + float &zval = bedlevel.z_values[ij.x][ij.y]; // Altering this Mesh Point zval = hasN ? NAN : parser.value_linear_units() + (hasQ ? zval : 0); // N=NAN, Z=NEWVAL, or Q=ADDVAL TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(ij.x, ij.y, zval)); // Ping ExtUI in case it's showing the mesh - TERN_(DWIN_LCD_PROUI, DWIN_MeshUpdate(ij.x, ij.y, zval)); + TERN_(DWIN_LCD_PROUI, dwinMeshUpdate(ij.x, ij.y, zval)); } } diff --git a/Marlin/src/gcode/config/M302.cpp b/Marlin/src/gcode/config/M302.cpp index 26e5a468ca..3373e14325 100644 --- a/Marlin/src/gcode/config/M302.cpp +++ b/Marlin/src/gcode/config/M302.cpp @@ -51,7 +51,7 @@ void GcodeSuite::M302() { if (seen_S) { thermalManager.extrude_min_temp = parser.value_celsius(); thermalManager.allow_cold_extrude = (thermalManager.extrude_min_temp == 0); - TERN_(DWIN_LCD_PROUI, HMI_data.ExtMinT = thermalManager.extrude_min_temp); + TERN_(DWIN_LCD_PROUI, hmiData.extMinT = thermalManager.extrude_min_temp); } if (parser.seen('P')) diff --git a/Marlin/src/gcode/control/M997.cpp b/Marlin/src/gcode/control/M997.cpp index 74ed8b0d07..5ac0ba23bb 100644 --- a/Marlin/src/gcode/control/M997.cpp +++ b/Marlin/src/gcode/control/M997.cpp @@ -33,7 +33,7 @@ */ void GcodeSuite::M997() { - TERN_(DWIN_LCD_PROUI, DWIN_RebootScreen()); + TERN_(DWIN_LCD_PROUI, dwinRebootScreen()); flashFirmware(parser.intval('S')); diff --git a/Marlin/src/gcode/feature/powerloss/M1000.cpp b/Marlin/src/gcode/feature/powerloss/M1000.cpp index 56ef737145..1a1ebd517b 100644 --- a/Marlin/src/gcode/feature/powerloss/M1000.cpp +++ b/Marlin/src/gcode/feature/powerloss/M1000.cpp @@ -71,7 +71,7 @@ void GcodeSuite::M1000() { #elif HAS_DWIN_E3V2_BASIC recovery.dwin_flag = true; #elif ENABLED(DWIN_CREALITY_LCD_JYERSUI) // Temporary fix until it can be better implemented - jyersDWIN.popupHandler(Resume); + jyersDWIN.popupHandler(Popup_Resume); #elif ENABLED(EXTENSIBLE_UI) ExtUI::onPowerLossResume(); #else diff --git a/Marlin/src/gcode/lcd/M0_M1.cpp b/Marlin/src/gcode/lcd/M0_M1.cpp index 4e4625e948..fcab61b59d 100644 --- a/Marlin/src/gcode/lcd/M0_M1.cpp +++ b/Marlin/src/gcode/lcd/M0_M1.cpp @@ -73,9 +73,9 @@ void GcodeSuite::M0_M1() { ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_USERWAIT)); #elif ENABLED(DWIN_LCD_PROUI) if (parser.string_arg) - DWIN_Popup_Confirm(ICON_BLTouch, parser.string_arg, GET_TEXT_F(MSG_USERWAIT)); + dwinPopupConfirm(ICON_BLTouch, parser.string_arg, GET_TEXT_F(MSG_USERWAIT)); else - DWIN_Popup_Confirm(ICON_BLTouch, GET_TEXT_F(MSG_STOPPED), GET_TEXT_F(MSG_USERWAIT)); + dwinPopupConfirm(ICON_BLTouch, GET_TEXT_F(MSG_STOPPED), GET_TEXT_F(MSG_USERWAIT)); #else if (parser.string_arg) { diff --git a/Marlin/src/gcode/sd/M1001.cpp b/Marlin/src/gcode/sd/M1001.cpp index c49909646e..a00ca61228 100644 --- a/Marlin/src/gcode/sd/M1001.cpp +++ b/Marlin/src/gcode/sd/M1001.cpp @@ -49,8 +49,6 @@ #if ENABLED(EXTENSIBLE_UI) #include "../../lcd/extui/ui_api.h" -#elif ENABLED(DWIN_LCD_PROUI) - #include "../../lcd/e3v2/proui/dwin.h" #endif #if ENABLED(HOST_ACTION_COMMANDS) diff --git a/Marlin/src/gcode/stats/M75-M78.cpp b/Marlin/src/gcode/stats/M75-M78.cpp index 2ff04797eb..bced97351d 100644 --- a/Marlin/src/gcode/stats/M75-M78.cpp +++ b/Marlin/src/gcode/stats/M75-M78.cpp @@ -39,7 +39,7 @@ void GcodeSuite::M75() { startOrResumeJob(); #if ENABLED(DWIN_LCD_PROUI) - if (!IS_SD_PRINTING()) DWIN_Print_Header(parser.string_arg && parser.string_arg[0] ? parser.string_arg : GET_TEXT(MSG_HOST_START_PRINT)); + if (!IS_SD_PRINTING()) dwinPrintHeader(parser.string_arg && parser.string_arg[0] ? parser.string_arg : GET_TEXT(MSG_HOST_START_PRINT)); #endif } diff --git a/Marlin/src/gcode/temp/M303.cpp b/Marlin/src/gcode/temp/M303.cpp index 48eebaa0e4..f9f3abc5bd 100644 --- a/Marlin/src/gcode/temp/M303.cpp +++ b/Marlin/src/gcode/temp/M303.cpp @@ -31,7 +31,7 @@ #if ENABLED(EXTENSIBLE_UI) #include "../../lcd/extui/ui_api.h" -#elif ENABLED(DWIN_LCD_PROUI) +#elif ENABLED(PROUI_PID_TUNE) #include "../../lcd/e3v2/proui/dwin.h" #endif @@ -69,7 +69,7 @@ void GcodeSuite::M303() { SERIAL_ECHOPGM(STR_PID_AUTOTUNE); SERIAL_ECHOLNPGM(STR_PID_BAD_HEATER_ID); TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_BAD_HEATER_ID)); - TERN_(DWIN_PID_TUNE, DWIN_PidTuning(PID_BAD_HEATER_ID)); + TERN_(PROUI_PID_TUNE, dwinPidTuning(PID_BAD_HEATER_ID)); return; } @@ -79,7 +79,7 @@ void GcodeSuite::M303() { const celsius_t temp = seenS ? parser.value_celsius() : default_temp; const bool u = parser.boolval('U'); - TERN_(DWIN_PID_TUNE, DWIN_StartM303(seenC, c, seenS, hid, temp)); + TERN_(PROUI_PID_TUNE, dwinStartM303(seenC, c, seenS, hid, temp)); IF_DISABLED(BUSY_WHILE_HEATING, KEEPALIVE_STATE(NOT_BUSY)); diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 664d4cd544..8cc3f6bc2d 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -2386,10 +2386,10 @@ #if ENABLED(DWIN_LCD_PROUI) #if ANY(PIDTEMP, PIDTEMPBED) - #define DWIN_PID_TUNE 1 + #define PROUI_PID_TUNE 1 #endif - #if ANY(DWIN_PID_TUNE, MPC_AUTOTUNE) && DISABLED(DISABLE_TUNING_GRAPH) - #define SHOW_TUNING_GRAPH 1 + #if ANY(PROUI_PID_TUNE, MPC_AUTOTUNE) && DISABLED(DISABLE_TUNING_GRAPH) + #define PROUI_TUNING_GRAPH 1 #endif #endif diff --git a/Marlin/src/lcd/e3v2/common/dwin_color.h b/Marlin/src/lcd/e3v2/common/dwin_color.h index d327f21a93..8df4f95151 100644 --- a/Marlin/src/lcd/e3v2/common/dwin_color.h +++ b/Marlin/src/lcd/e3v2/common/dwin_color.h @@ -27,18 +27,18 @@ #define GetGColor(color) ((color >> 5) & 0x3F) #define GetBColor(color) ((color >> 0) & 0x1F) -#define Color_White 0xFFFF -#define Color_Yellow RGB(0x1F,0x3F,0x00) -#define Color_Red RGB(0x1F,0x00,0x00) -#define Color_Error_Red 0xB000 // Error! -#define Color_Bg_Red 0xF00F // Red background color -#define Color_Bg_Window 0x31E8 // Popup background color -#define Color_Bg_Blue 0x1125 // Dark blue background color -#define Color_Bg_Black 0x0841 // Black background color -#define Color_IconBlue 0x45FA // Lighter blue that matches icons/accents -#define Popup_Text_Color 0xD6BA // Popup font background color -#define Line_Color 0x3A6A // Split line color -#define Rectangle_Color 0xEE2F // Blue square cursor color -#define Percent_Color 0xFE29 // Percentage color -#define BarFill_Color 0x10E4 // Fill color of progress bar -#define Select_Color 0x33BB // Selected color +#define COLOR_WHITE 0xFFFF +#define COLOR_YELLOW RGB(0x1F,0x3F,0x00) +#define COLOR_RED RGB(0x1F,0x00,0x00) +#define COLOR_ERROR_RED 0xB000 // Error! +#define COLOR_BG_RED 0xF00F // Red background color +#define COLOR_BG_WINDOW 0x31E8 // Popup background color +#define COLOR_BG_BLUE 0x1125 // Dark blue background color +#define COLOR_BG_BLACK 0x0841 // Black background color +#define COLOR_ICONBLUE 0x45FA // Lighter blue that matches icons/accents +#define COLOR_POPUP_TEXT 0xD6BA // Popup font background color +#define COLOR_LINE 0x3A6A // Split line color +#define COLOR_RECTANGLE 0xEE2F // Blue square cursor color +#define COLOR_PERCENT 0xFE29 // Percentage color +#define COLOR_BARFILL 0x10E4 // Fill color of progress bar +#define COLOR_SELECT 0x33BB // Selected color diff --git a/Marlin/src/lcd/e3v2/creality/dwin.cpp b/Marlin/src/lcd/e3v2/creality/dwin.cpp index 7a28f1b77e..b21cc30850 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.cpp +++ b/Marlin/src/lcd/e3v2/creality/dwin.cpp @@ -221,7 +221,7 @@ typedef struct { uint16_t x, y[2], w, h; } text_info_t; void iconButton(const bool here, const int iconid, const icon_info_t &ico, const text_info_t (&txt)[2]) { const bool cn = hmiIsChinese(); dwinIconShow(ICON, iconid + here, ico.x, ico.y); - if (here) dwinDrawRectangle(0, Color_White, ico.x, ico.y, ico.x + ico.w - 1, ico.y + ico.h - 1); + if (here) dwinDrawRectangle(0, COLOR_WHITE, ico.x, ico.y, ico.x + ico.w - 1, ico.y + ico.h - 1); dwinFrameAreaCopy(1, txt[cn].x, txt[cn].y[here], txt[cn].x + txt[cn].w - 1, txt[cn].y[here] + txt[cn].h - 1, ico.x + (ico.w - txt[cn].w) / 2, (ico.y + ico.h - 28) - txt[cn].h/2); } @@ -341,15 +341,15 @@ void iconStop() { } inline void clearTitleBar() { - dwinDrawBox(1, Color_Bg_Blue, 0, 0, DWIN_WIDTH, TITLE_HEIGHT); + dwinDrawBox(1, COLOR_BG_BLUE, 0, 0, DWIN_WIDTH, TITLE_HEIGHT); } void drawTitle(FSTR_P ftitle) { - dwinDrawString(false, DWIN_FONT_HEAD, Color_White, Color_Bg_Blue, 14, 4, ftitle); + dwinDrawString(false, DWIN_FONT_HEAD, COLOR_WHITE, COLOR_BG_BLUE, 14, 4, ftitle); } inline void clearMenuArea() { - dwinDrawBox(1, Color_Bg_Black, 0, TITLE_HEIGHT, DWIN_WIDTH, STATUS_Y - TITLE_HEIGHT); + dwinDrawBox(1, COLOR_BG_BLACK, 0, TITLE_HEIGHT, DWIN_WIDTH, STATUS_Y - TITLE_HEIGHT); } void clearMainWindow() { @@ -359,11 +359,11 @@ void clearMainWindow() { void clearPopupArea() { clearTitleBar(); - dwinDrawRectangle(1, Color_Bg_Black, 0, 31, DWIN_WIDTH, DWIN_HEIGHT); + dwinDrawRectangle(1, COLOR_BG_BLACK, 0, 31, DWIN_WIDTH, DWIN_HEIGHT); } void drawPopupBkgd105() { - dwinDrawRectangle(1, Color_Bg_Window, 14, 105, 258, 374); + dwinDrawRectangle(1, COLOR_BG_WINDOW, 14, 105, 258, 374); } void drawMoreIcon(const uint8_t line) { @@ -372,11 +372,11 @@ void drawMoreIcon(const uint8_t line) { void drawMenuCursor(const uint8_t line) { //dwinIconShow(ICON, ICON_Rectangle, 0, MBASE(line) - 18); - dwinDrawRectangle(1, Rectangle_Color, 0, MBASE(line) - 18, 14, MBASE(line + 1) - 20); + dwinDrawRectangle(1, COLOR_RECTANGLE, 0, MBASE(line) - 18, 14, MBASE(line + 1) - 20); } void eraseMenuCursor(const uint8_t line) { - dwinDrawRectangle(1, Color_Bg_Black, 0, MBASE(line) - 18, 14, MBASE(line + 1) - 20); + dwinDrawRectangle(1, COLOR_BG_BLACK, 0, MBASE(line) - 18, 14, MBASE(line + 1) - 20); } void moveHighlight(const int16_t from, const uint16_t newline) { @@ -386,11 +386,11 @@ void moveHighlight(const int16_t from, const uint16_t newline) { void addMenuLine() { moveHighlight(1, MROWS); - dwinDrawLine(Line_Color, 16, MBASE(MROWS + 1) - 20, 256, MBASE(MROWS + 1) - 19); + dwinDrawLine(COLOR_LINE, 16, MBASE(MROWS + 1) - 20, 256, MBASE(MROWS + 1) - 19); } void scrollMenu(const uint8_t dir) { - dwinFrameAreaMove(1, dir, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); + dwinFrameAreaMove(1, dir, MLINE, COLOR_BG_BLACK, 0, 31, DWIN_WIDTH, 349); switch (dir) { case DWIN_SCROLL_DOWN: moveHighlight(-1, 0); break; case DWIN_SCROLL_UP: addMenuLine(); break; @@ -402,7 +402,7 @@ inline uint16_t nr_sd_menu_items() { } void eraseMenuText(const uint8_t line) { - dwinDrawRectangle(1, Color_Bg_Black, LBLX, MBASE(line) - 14, 271, MBASE(line) + 28); + dwinDrawRectangle(1, COLOR_BG_BLACK, LBLX, MBASE(line) - 14, 271, MBASE(line) + 28); } void drawMenuIcon(const uint8_t line, const uint8_t icon) { @@ -414,28 +414,28 @@ void _decorateMenuItem(const uint8_t line, const uint8_t icon, bool more) { if (more) drawMoreIcon(line); } void drawMenuItem(const uint8_t line, const uint8_t icon=0, const char * const label=nullptr, bool more=false) { - if (label) dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(line) - 1, (char*)label); + if (label) dwinDrawString(false, font8x16, COLOR_WHITE, COLOR_BG_BLACK, LBLX, MBASE(line) - 1, (char*)label); _decorateMenuItem(line, icon, more); } void drawMenuItem(const uint8_t line, const uint8_t icon=0, FSTR_P const flabel=nullptr, bool more=false) { - if (flabel) dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(line) - 1, flabel); + if (flabel) dwinDrawString(false, font8x16, COLOR_WHITE, COLOR_BG_BLACK, LBLX, MBASE(line) - 1, flabel); _decorateMenuItem(line, icon, more); } void drawMenuLine(const uint8_t line, const uint8_t icon=0, const char * const label=nullptr, bool more=false) { drawMenuItem(line, icon, label, more); - dwinDrawLine(Line_Color, 16, MBASE(line) + 33, 256, MBASE(line) + 34); + dwinDrawLine(COLOR_LINE, 16, MBASE(line) + 33, 256, MBASE(line) + 34); } void drawMenuLine(const uint8_t line, const uint8_t icon, FSTR_P const flabel, bool more=false) { drawMenuItem(line, icon, flabel, more); - dwinDrawLine(Line_Color, 16, MBASE(line) + 33, 256, MBASE(line) + 34); + dwinDrawLine(COLOR_LINE, 16, MBASE(line) + 33, 256, MBASE(line) + 34); } void drawCheckboxLine(const uint8_t line, const bool ison) { const uint16_t x = 225, y = EBASE(line) - 2; - dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, x + 5, y, ison ? F("X") : F(" ")); - dwinDrawRectangle(0, Color_White, x + 2, y + 2, x + 16, y + 16); + dwinDrawString(true, font8x16, COLOR_WHITE, COLOR_BG_BLACK, x + 5, y, ison ? F("X") : F(" ")); + dwinDrawRectangle(0, COLOR_WHITE, x + 2, y + 2, x + 16, y + 16); } // AreaCopy for a Menu Item @@ -567,43 +567,43 @@ void say_steps_per_mm_en(const uint8_t row) { } void dwinDrawLabel(const uint8_t row, char *string) { - dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(row), string); + dwinDrawString(true, font8x16, COLOR_WHITE, COLOR_BG_BLACK, LBLX, MBASE(row), string); } void dwinDrawLabel(const uint8_t row, FSTR_P title) { dwinDrawLabel(row, (char*)title); } -void dwinDrawSigned_Float(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, int32_t value) { - dwinDrawString(true, size, Color_White, bColor, x - 8, y, value < 0 ? F("-") : F(" ")); - dwinDrawFloatValue(true, true, 0, size, Color_White, bColor, iNum, fNum, x, y, value < 0 ? -value : value); +void dwinDrawSignedFloat(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, int32_t value) { + dwinDrawString(true, size, COLOR_WHITE, bColor, x - 8, y, value < 0 ? F("-") : F(" ")); + dwinDrawFloatValue(true, true, 0, size, COLOR_WHITE, bColor, iNum, fNum, x, y, value < 0 ? -value : value); } void drawEditInteger3(const uint8_t row, const uint16_t value, const bool active=false) { - dwinDrawIntValue(true, true, 0, font8x16, Color_White, active ? Select_Color : Color_Bg_Black, 3, 220, EBASE(row), value); + dwinDrawIntValue(true, true, 0, font8x16, COLOR_WHITE, active ? COLOR_SELECT : COLOR_BG_BLACK, 3, 220, EBASE(row), value); } void drawEditInteger4(const uint8_t row, const uint16_t value, const bool active=false) { - dwinDrawIntValue(true, true, 0, font8x16, Color_White, active ? Select_Color : Color_Bg_Black, 4, 220 - 1 * 8, EBASE(row), value); + dwinDrawIntValue(true, true, 0, font8x16, COLOR_WHITE, active ? COLOR_SELECT : COLOR_BG_BLACK, 4, 220 - 1 * 8, EBASE(row), value); } void drawEditFloat3(const uint8_t row, const uint16_t value, const bool active=false) { - dwinDrawFloatValue(true, true, 0, font8x16, Color_White, active ? Select_Color : Color_Bg_Black, 3, UNITFDIGITS, 220 - UNITFDIGITS * 8, EBASE(row), (int32_t)value); + dwinDrawFloatValue(true, true, 0, font8x16, COLOR_WHITE, active ? COLOR_SELECT : COLOR_BG_BLACK, 3, UNITFDIGITS, 220 - UNITFDIGITS * 8, EBASE(row), (int32_t)value); } void drawEditSignedFloat2(const uint8_t row, const float value, const bool active=false) { - dwinDrawSigned_Float(font8x16, active ? Select_Color : Color_Bg_Black, 2, UNITFDIGITS + 1, 220 + 8 - UNITFDIGITS * 8, EBASE(row), value); + dwinDrawSignedFloat(font8x16, active ? COLOR_SELECT : COLOR_BG_BLACK, 2, UNITFDIGITS + 1, 220 + 8 - UNITFDIGITS * 8, EBASE(row), value); } void drawEditSignedFloat3(const uint8_t row, const float value, const bool active=false) { - dwinDrawSigned_Float(font8x16, active ? Select_Color : Color_Bg_Black, 3, UNITFDIGITS, 220 - UNITFDIGITS * 8, EBASE(row), value); + dwinDrawSignedFloat(font8x16, active ? COLOR_SELECT : COLOR_BG_BLACK, 3, UNITFDIGITS, 220 - UNITFDIGITS * 8, EBASE(row), value); } void drawStatInt(const uint16_t xpos, const uint16_t ypos, const uint16_t value) { - dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 3, xpos, ypos, value); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_BLACK, 3, xpos, ypos, value); } void drawStatFloat(const uint16_t xpos, const uint16_t ypos, const float value) { - dwinDrawFloatValue(true, true, 0, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 2, 2, xpos, ypos, value); + dwinDrawFloatValue(true, true, 0, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_BLACK, 2, 2, xpos, ypos, value); } // @@ -731,7 +731,7 @@ void itemPrepareLang(const uint8_t row) { itemAreaCopy(1, 194, 96, 206, row); // "LCD Language" #endif } - dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, 226, EBASE(row), hmiIsChinese() ? F("CN") : F("EN")); + dwinDrawString(false, font8x16, COLOR_WHITE, COLOR_BG_BLACK, 226, EBASE(row), hmiIsChinese() ? F("CN") : F("EN")); drawMenuIcon(row, ICON_Language); } @@ -1069,8 +1069,8 @@ void drawMotionMenu() { dwinFrameAreaCopy(1, 189, 389, 271, 402, 95, 310); } else { - dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, 36, 300, F("Nozzle or Bed temperature")); - dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, 92, 300, F("is too high")); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, 36, 300, F("Nozzle or Bed temperature")); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, 92, 300, F("is too high")); } } else { @@ -1080,8 +1080,8 @@ void drawMotionMenu() { dwinFrameAreaCopy(1, 189, 389, 271, 402, 95, 310); } else { - dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, 36, 300, F("Nozzle or Bed temperature")); - dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, 92, 300, F("is too low")); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, 36, 300, F("Nozzle or Bed temperature")); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, 92, 300, F("is too low")); } } } @@ -1089,7 +1089,7 @@ void drawMotionMenu() { #endif void drawPopupBkgd60() { - dwinDrawRectangle(1, Color_Bg_Window, 14, 60, 258, 330); + dwinDrawRectangle(1, COLOR_BG_WINDOW, 14, 60, 258, 330); } #if HAS_HOTEND @@ -1104,7 +1104,7 @@ void drawPopupBkgd60() { dwinIconShow(ICON, ICON_Confirm_C, 86, 280); } else { - dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, 20, 235, F("Nozzle is too cold")); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, 20, 235, F("Nozzle is too cold")); dwinIconShow(ICON, ICON_Confirm_E, 86, 280); } } @@ -1121,9 +1121,9 @@ void popupWindowResume() { dwinIconShow(ICON, ICON_Continue_C, 146, 307); } else { - dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 14) / 2, 115, F("Continue Print")); - dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 22) / 2, 192, F("It looks like the last")); - dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 22) / 2, 212, F("file was interrupted.")); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 14) / 2, 115, F("Continue Print")); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 22) / 2, 192, F("It looks like the last")); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 22) / 2, 212, F("file was interrupted.")); dwinIconShow(ICON, ICON_Cancel_E, 26, 307); dwinIconShow(ICON, ICON_Continue_E, 146, 307); } @@ -1139,8 +1139,8 @@ void popupWindowHome(const bool parking/*=false*/) { dwinFrameAreaCopy(1, 0, 389, 150, 402, 61, 280); } else { - dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * (parking ? 7 : 10)) / 2, 230, parking ? F("Parking") : F("Homing XYZ")); - dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 23) / 2, 260, F("Please wait until done.")); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * (parking ? 7 : 10)) / 2, 230, parking ? F("Parking") : F("Homing XYZ")); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 23) / 2, 260, F("Please wait until done.")); } } @@ -1155,8 +1155,8 @@ void popupWindowHome(const bool parking/*=false*/) { dwinFrameAreaCopy(1, 0, 389, 150, 402, 61, 280); } else { - dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 13) / 2, 230, GET_TEXT_F(MSG_BED_LEVELING)); - dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 23) / 2, 260, F("Please wait until done.")); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 13) / 2, 230, GET_TEXT_F(MSG_BED_LEVELING)); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 23) / 2, 260, F("Please wait until done.")); } } @@ -1164,8 +1164,8 @@ void popupWindowHome(const bool parking/*=false*/) { void drawSelectHighlight(const bool sel) { hmiFlag.select_flag = sel; - const uint16_t c1 = sel ? Select_Color : Color_Bg_Window, - c2 = sel ? Color_Bg_Window : Select_Color; + const uint16_t c1 = sel ? COLOR_SELECT : COLOR_BG_WINDOW, + c2 = sel ? COLOR_BG_WINDOW : COLOR_SELECT; dwinDrawRectangle(0, c1, 25, 279, 126, 318); dwinDrawRectangle(0, c1, 24, 278, 127, 319); dwinDrawRectangle(0, c2, 145, 279, 246, 318); @@ -1183,8 +1183,8 @@ void popupwindowPauseOrStop() { dwinIconShow(ICON, ICON_Cancel_C, 146, 280); } else { - if (select_print.now == PRINT_PAUSE_RESUME) dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 11) / 2, 150, GET_TEXT_F(MSG_PAUSE_PRINT)); - else if (select_print.now == PRINT_STOP) dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 10) / 2, 150, GET_TEXT_F(MSG_STOP_PRINT)); + if (select_print.now == PRINT_PAUSE_RESUME) dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 11) / 2, 150, GET_TEXT_F(MSG_PAUSE_PRINT)); + else if (select_print.now == PRINT_STOP) dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 10) / 2, 150, GET_TEXT_F(MSG_STOP_PRINT)); dwinIconShow(ICON, ICON_Confirm_E, 26, 280); dwinIconShow(ICON, ICON_Cancel_E, 146, 280); } @@ -1208,28 +1208,28 @@ void drawPrintingScreen() { void drawPrintProgressBar() { constexpr uint16_t y = 93, h = 21; dwinIconShow(ICON, ICON_Bar, 15, 93); - dwinDrawRectangle(1, BarFill_Color, 16 + _card_percent * 240 / 100, y, 256, y + h - 1); - dwinDrawIntValue(true, true, 0, font8x16, Percent_Color, Color_Bg_Black, 2, 117, y + 40, _card_percent); - dwinDrawString(false, font8x16, Percent_Color, Color_Bg_Black, 133, y + 40, F("%")); + dwinDrawRectangle(1, COLOR_BARFILL, 16 + _card_percent * 240 / 100, y, 256, y + h - 1); + dwinDrawIntValue(true, true, 0, font8x16, COLOR_PERCENT, COLOR_BG_BLACK, 2, 117, y + 40, _card_percent); + dwinDrawString(false, font8x16, COLOR_PERCENT, COLOR_BG_BLACK, 133, y + 40, F("%")); } void drawPrintProgressElapsed() { constexpr uint16_t x = 45, y = 192; duration_t elapsed = print_job_timer.duration(); // Print timer - dwinDrawIntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, x, y, elapsed.value / 3600); - dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, x + 8 * 2, y, F(":")); - dwinDrawIntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, x + 8 * 3, y, (elapsed.value % 3600) / 60); + dwinDrawIntValue(true, true, 1, font8x16, COLOR_WHITE, COLOR_BG_BLACK, 2, x, y, elapsed.value / 3600); + dwinDrawString(false, font8x16, COLOR_WHITE, COLOR_BG_BLACK, x + 8 * 2, y, F(":")); + dwinDrawIntValue(true, true, 1, font8x16, COLOR_WHITE, COLOR_BG_BLACK, 2, x + 8 * 3, y, (elapsed.value % 3600) / 60); } void drawPrintProgressRemain() { constexpr uint16_t x = 179, y = 192; - dwinDrawIntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, x, y, _remain_time / 3600); - dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, x + 8 * 2, y, F(":")); - dwinDrawIntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, x + 8 * 3, y, (_remain_time % 3600) / 60); + dwinDrawIntValue(true, true, 1, font8x16, COLOR_WHITE, COLOR_BG_BLACK, 2, x, y, _remain_time / 3600); + dwinDrawString(false, font8x16, COLOR_WHITE, COLOR_BG_BLACK, x + 8 * 2, y, F(":")); + dwinDrawIntValue(true, true, 1, font8x16, COLOR_WHITE, COLOR_BG_BLACK, 2, x + 8 * 3, y, (_remain_time % 3600) / 60); } void gotoPrintProcess() { - checkkey = PrintProcess; + checkkey = ID_PrintProcess; clearMainWindow(); drawPrintingScreen(); @@ -1241,7 +1241,7 @@ void gotoPrintProcess() { // Copy into filebuf string before entry char * const name = card.longest_filename(); const int8_t npos = _MAX(0U, DWIN_WIDTH - strlen(name) * MENU_CHR_W) / 2; - dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, npos, 60, name); + dwinDrawString(false, font8x16, COLOR_WHITE, COLOR_BG_BLACK, npos, 60, name); dwinIconShow(ICON, ICON_PrintTime, 17, 163); dwinIconShow(ICON, ICON_RemainTime, 150, 161); @@ -1252,7 +1252,7 @@ void gotoPrintProcess() { } void gotoMainMenu() { - checkkey = MainMenu; + checkkey = ID_MainMenu; clearMainWindow(); @@ -1285,51 +1285,63 @@ void hmiPlanMove(const feedRate_t fr_mm_s) { void hmiMoveDone(const AxisEnum axis) { encoderRate.enabled = false; planner.synchronize(); - checkkey = AxisMove; + checkkey = ID_AxisMove; dwinUpdateLCD(); } -void hmiMoveX() { - EncoderState encoder_diffState = encoderReceiveAnalyze(); - if (encoder_diffState == ENCODER_DIFF_NO) return; - if (applyEncoder(encoder_diffState, hmiValues.Move_X_scaled)) { - drawEditFloat3(1, hmiValues.Move_X_scaled); - return hmiMoveDone(X_AXIS); - } - LIMIT(hmiValues.Move_X_scaled, (X_MIN_POS) * MINUNITMULT, (X_MAX_POS) * MINUNITMULT); - current_position.x = hmiValues.Move_X_scaled / MINUNITMULT; - drawEditFloat3(1, hmiValues.Move_X_scaled, true); - dwinUpdateLCD(); - hmiPlanMove(homing_feedrate(X_AXIS)); -} +#if HAS_X_AXIS -void hmiMoveY() { - EncoderState encoder_diffState = encoderReceiveAnalyze(); - if (encoder_diffState == ENCODER_DIFF_NO) return; - if (applyEncoder(encoder_diffState, hmiValues.Move_Y_scaled)) { - drawEditFloat3(2, hmiValues.Move_Y_scaled); - return hmiMoveDone(Y_AXIS); + void hmiMoveX() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); + if (encoder_diffState == ENCODER_DIFF_NO) return; + if (applyEncoder(encoder_diffState, hmiValues.moveScaled.x)) { + drawEditFloat3(1, hmiValues.moveScaled.x); + return hmiMoveDone(X_AXIS); + } + LIMIT(hmiValues.moveScaled.x, (X_MIN_POS) * MINUNITMULT, (X_MAX_POS) * MINUNITMULT); + current_position.x = hmiValues.moveScaled.x / MINUNITMULT; + drawEditFloat3(1, hmiValues.moveScaled.x, true); + dwinUpdateLCD(); + hmiPlanMove(homing_feedrate(X_AXIS)); } - LIMIT(hmiValues.Move_Y_scaled, (Y_MIN_POS) * MINUNITMULT, (Y_MAX_POS) * MINUNITMULT); - current_position.y = hmiValues.Move_Y_scaled / MINUNITMULT; - drawEditFloat3(2, hmiValues.Move_Y_scaled, true); - dwinUpdateLCD(); - hmiPlanMove(homing_feedrate(Y_AXIS)); -} -void hmiMoveZ() { - EncoderState encoder_diffState = encoderReceiveAnalyze(); - if (encoder_diffState == ENCODER_DIFF_NO) return; - if (applyEncoder(encoder_diffState, hmiValues.Move_Z_scaled)) { - drawEditFloat3(3, hmiValues.Move_Z_scaled); - return hmiMoveDone(Z_AXIS); +#endif + +#if HAS_Y_AXIS + + void hmiMoveY() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); + if (encoder_diffState == ENCODER_DIFF_NO) return; + if (applyEncoder(encoder_diffState, hmiValues.moveScaled.y)) { + drawEditFloat3(2, hmiValues.moveScaled.y); + return hmiMoveDone(Y_AXIS); + } + LIMIT(hmiValues.moveScaled.y, (Y_MIN_POS) * MINUNITMULT, (Y_MAX_POS) * MINUNITMULT); + current_position.y = hmiValues.moveScaled.y / MINUNITMULT; + drawEditFloat3(2, hmiValues.moveScaled.y, true); + dwinUpdateLCD(); + hmiPlanMove(homing_feedrate(Y_AXIS)); } - LIMIT(hmiValues.Move_Z_scaled, (Z_MIN_POS) * MINUNITMULT, (Z_MAX_POS) * MINUNITMULT); - current_position.z = hmiValues.Move_Z_scaled / MINUNITMULT; - drawEditFloat3(3, hmiValues.Move_Z_scaled, true); - dwinUpdateLCD(); - hmiPlanMove(homing_feedrate(Z_AXIS)); -} + +#endif + +#if HAS_Z_AXIS + + void hmiMoveZ() { + EncoderState encoder_diffState = encoderReceiveAnalyze(); + if (encoder_diffState == ENCODER_DIFF_NO) return; + if (applyEncoder(encoder_diffState, hmiValues.moveScaled.z)) { + drawEditFloat3(3, hmiValues.moveScaled.z); + return hmiMoveDone(Z_AXIS); + } + LIMIT(hmiValues.moveScaled.z, (Z_MIN_POS) * MINUNITMULT, (Z_MAX_POS) * MINUNITMULT); + current_position.z = hmiValues.moveScaled.z / MINUNITMULT; + drawEditFloat3(3, hmiValues.moveScaled.z, true); + dwinUpdateLCD(); + hmiPlanMove(homing_feedrate(Z_AXIS)); + } + +#endif #if HAS_HOTEND @@ -1337,14 +1349,14 @@ void hmiMoveZ() { static float last_E_scaled = 0; EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (applyEncoder(encoder_diffState, hmiValues.Move_E_scaled)) { - last_E_scaled = hmiValues.Move_E_scaled; + if (applyEncoder(encoder_diffState, hmiValues.moveScaled.e)) { + last_E_scaled = hmiValues.moveScaled.e; drawEditSignedFloat3(4, last_E_scaled); return hmiMoveDone(E_AXIS); } - LIMIT(hmiValues.Move_E_scaled, last_E_scaled - (EXTRUDE_MAXLENGTH) * MINUNITMULT, last_E_scaled + (EXTRUDE_MAXLENGTH) * MINUNITMULT); - current_position.e = hmiValues.Move_E_scaled / MINUNITMULT; - drawEditSignedFloat3(4, hmiValues.Move_E_scaled, true); + LIMIT(hmiValues.moveScaled.e, last_E_scaled - (EXTRUDE_MAXLENGTH) * MINUNITMULT, last_E_scaled + (EXTRUDE_MAXLENGTH) * MINUNITMULT); + current_position.e = hmiValues.moveScaled.e / MINUNITMULT; + drawEditSignedFloat3(4, hmiValues.moveScaled.e, true); dwinUpdateLCD(); hmiPlanMove(MMM_TO_MMS(FEEDRATE_E)); } @@ -1367,7 +1379,7 @@ void hmiMoveZ() { probe.offset.z = dwin_zoffset; TERN_(EEPROM_SETTINGS, settings.save()); #endif - checkkey = hmiValues.show_mode == -4 ? Prepare : Tune; + checkkey = hmiValues.show_mode == -4 ? ID_Prepare : ID_Tune; drawEditSignedFloat2(zoff_line, TERN(HAS_BED_PROBE, BABY_Z_VAR * 100, hmiValues.offset_value)); dwinUpdateLCD(); return; @@ -1400,19 +1412,19 @@ void hmiMoveZ() { #endif default: temp_line = TUNE_CASE_TEMP + MROWS - index_tune; } - if (applyEncoder(encoder_diffState, hmiValues.E_Temp)) { + if (applyEncoder(encoder_diffState, hmiValues.tempE)) { encoderRate.enabled = false; #if HAS_PREHEAT if (hmiValues.show_mode == -2) { - checkkey = PLAPreheat; - ui.material_preset[0].hotend_temp = hmiValues.E_Temp; + checkkey = ID_PLAPreheat; + ui.material_preset[0].hotend_temp = hmiValues.tempE; drawEditInteger3(temp_line, ui.material_preset[0].hotend_temp); return; } #if PREHEAT_COUNT > 1 if (hmiValues.show_mode == -3) { - checkkey = ABSPreheat; - ui.material_preset[1].hotend_temp = hmiValues.E_Temp; + checkkey = ID_ABSPreheat; + ui.material_preset[1].hotend_temp = hmiValues.tempE; drawEditInteger3(temp_line, ui.material_preset[1].hotend_temp); return; } @@ -1420,17 +1432,17 @@ void hmiMoveZ() { #endif if (hmiValues.show_mode == -1) // Temperature - checkkey = TemperatureID; + checkkey = ID_TemperatureID; else - checkkey = Tune; - drawEditInteger3(temp_line, hmiValues.E_Temp); - thermalManager.setTargetHotend(hmiValues.E_Temp, 0); + checkkey = ID_Tune; + drawEditInteger3(temp_line, hmiValues.tempE); + thermalManager.setTargetHotend(hmiValues.tempE, 0); return; } - // E_Temp limit - LIMIT(hmiValues.E_Temp, HEATER_0_MINTEMP, thermalManager.hotend_max_target(0)); - // E_Temp value - drawEditInteger3(temp_line, hmiValues.E_Temp, true); + // tempE limit + LIMIT(hmiValues.tempE, HEATER_0_MINTEMP, thermalManager.hotend_max_target(0)); + // tempE value + drawEditInteger3(temp_line, hmiValues.tempE, true); } #endif // HAS_HOTEND @@ -1451,33 +1463,33 @@ void hmiMoveZ() { #endif default: bed_line = TUNE_CASE_BED + MROWS - index_tune; } - if (applyEncoder(encoder_diffState, hmiValues.Bed_Temp)) { + if (applyEncoder(encoder_diffState, hmiValues.tempBed)) { encoderRate.enabled = false; #if HAS_PREHEAT if (hmiValues.show_mode == -2) { - checkkey = PLAPreheat; - ui.material_preset[0].bed_temp = hmiValues.Bed_Temp; + checkkey = ID_PLAPreheat; + ui.material_preset[0].bed_temp = hmiValues.tempBed; drawEditInteger3(bed_line, ui.material_preset[0].bed_temp); return; } #if PREHEAT_COUNT > 1 if (hmiValues.show_mode == -3) { - checkkey = ABSPreheat; - ui.material_preset[1].bed_temp = hmiValues.Bed_Temp; + checkkey = ID_ABSPreheat; + ui.material_preset[1].bed_temp = hmiValues.tempBed; drawEditInteger3(bed_line, ui.material_preset[1].bed_temp); return; } #endif #endif - checkkey = hmiValues.show_mode == -1 ? TemperatureID : Tune; - drawEditInteger3(bed_line, hmiValues.Bed_Temp); - thermalManager.setTargetBed(hmiValues.Bed_Temp); + checkkey = hmiValues.show_mode == -1 ? ID_TemperatureID : ID_Tune; + drawEditInteger3(bed_line, hmiValues.tempBed); + thermalManager.setTargetBed(hmiValues.tempBed); return; } - // Bed_Temp limit - LIMIT(hmiValues.Bed_Temp, BED_MINTEMP, BED_MAX_TARGET); - // Bed_Temp value - drawEditInteger3(bed_line, hmiValues.Bed_Temp, true); + // tempBed limit + LIMIT(hmiValues.tempBed, BED_MINTEMP, BED_MAX_TARGET); + // tempBed value + drawEditInteger3(bed_line, hmiValues.tempBed, true); } #endif // HAS_HEATED_BED @@ -1495,31 +1507,31 @@ void hmiMoveZ() { default: fan_line = TUNE_CASE_FAN + MROWS - index_tune; } - if (applyEncoder(encoder_diffState, hmiValues.Fan_speed)) { + if (applyEncoder(encoder_diffState, hmiValues.fanSpeed)) { encoderRate.enabled = false; if (hmiValues.show_mode == -2) { - checkkey = PLAPreheat; - ui.material_preset[0].fan_speed = hmiValues.Fan_speed; + checkkey = ID_PLAPreheat; + ui.material_preset[0].fan_speed = hmiValues.fanSpeed; drawEditInteger3(fan_line, ui.material_preset[0].fan_speed); return; } #if PREHEAT_COUNT > 1 if (hmiValues.show_mode == -3) { - checkkey = ABSPreheat; - ui.material_preset[1].fan_speed = hmiValues.Fan_speed; + checkkey = ID_ABSPreheat; + ui.material_preset[1].fan_speed = hmiValues.fanSpeed; drawEditInteger3(fan_line, ui.material_preset[1].fan_speed); return; } #endif - checkkey = hmiValues.show_mode == -1 ? TemperatureID : Tune; - drawEditInteger3(fan_line, hmiValues.Fan_speed); - thermalManager.set_fan_speed(0, hmiValues.Fan_speed); + checkkey = hmiValues.show_mode == -1 ? ID_TemperatureID : ID_Tune; + drawEditInteger3(fan_line, hmiValues.fanSpeed); + thermalManager.set_fan_speed(0, hmiValues.fanSpeed); return; } - // Fan_speed limit - LIMIT(hmiValues.Fan_speed, 0, 255); - // Fan_speed value - drawEditInteger3(fan_line, hmiValues.Fan_speed, true); + // fanSpeed limit + LIMIT(hmiValues.fanSpeed, 0, 255); + // fanSpeed value + drawEditInteger3(fan_line, hmiValues.fanSpeed, true); } #endif // HAS_PREHEAT && HAS_FAN @@ -1527,17 +1539,17 @@ void hmiMoveZ() { void hmiPrintSpeed() { EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (applyEncoder(encoder_diffState, hmiValues.print_speed)) { - checkkey = Tune; + if (applyEncoder(encoder_diffState, hmiValues.printSpeed)) { + checkkey = ID_Tune; encoderRate.enabled = false; - feedrate_percentage = hmiValues.print_speed; - drawEditInteger3(select_tune.now + MROWS - index_tune, hmiValues.print_speed); + feedrate_percentage = hmiValues.printSpeed; + drawEditInteger3(select_tune.now + MROWS - index_tune, hmiValues.printSpeed); return; } - // print_speed limit - LIMIT(hmiValues.print_speed, MIN_PRINT_SPEED, MAX_PRINT_SPEED); - // print_speed value - drawEditInteger3(select_tune.now + MROWS - index_tune, hmiValues.print_speed, true); + // printSpeed limit + LIMIT(hmiValues.printSpeed, MIN_PRINT_SPEED, MAX_PRINT_SPEED); + // printSpeed value + drawEditInteger3(select_tune.now + MROWS - index_tune, hmiValues.printSpeed, true); } #define LAST_AXIS TERN(HAS_HOTEND, E_AXIS, Z_AXIS) @@ -1545,37 +1557,37 @@ void hmiPrintSpeed() { void hmiMaxFeedspeedXYZE() { EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (applyEncoder(encoder_diffState, hmiValues.Max_Feedspeed)) { - checkkey = MaxSpeed; + if (applyEncoder(encoder_diffState, hmiValues.maxFeedSpeed)) { + checkkey = ID_MaxSpeed; encoderRate.enabled = false; if (WITHIN(hmiFlag.feedspeed_axis, X_AXIS, LAST_AXIS)) - planner.set_max_feedrate(hmiFlag.feedspeed_axis, hmiValues.Max_Feedspeed); - drawEditInteger4(select_speed.now, hmiValues.Max_Feedspeed); + planner.set_max_feedrate(hmiFlag.feedspeed_axis, hmiValues.maxFeedSpeed); + drawEditInteger4(select_speed.now, hmiValues.maxFeedSpeed); return; } // MaxFeedspeed limit if (WITHIN(hmiFlag.feedspeed_axis, X_AXIS, LAST_AXIS)) - LIMIT(hmiValues.Max_Feedspeed, min_feedrate_edit_values[hmiFlag.feedspeed_axis], max_feedrate_edit_values[hmiFlag.feedspeed_axis]); + LIMIT(hmiValues.maxFeedSpeed, min_feedrate_edit_values[hmiFlag.feedspeed_axis], max_feedrate_edit_values[hmiFlag.feedspeed_axis]); // MaxFeedspeed value - drawEditInteger4(select_speed.now, hmiValues.Max_Feedspeed, true); + drawEditInteger4(select_speed.now, hmiValues.maxFeedSpeed, true); } void hmiMaxAccelerationXYZE() { EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (applyEncoder(encoder_diffState, hmiValues.Max_Acceleration)) { - checkkey = MaxAcceleration; + if (applyEncoder(encoder_diffState, hmiValues.maxAcceleration)) { + checkkey = ID_MaxAcceleration; encoderRate.enabled = false; if (WITHIN(hmiFlag.acc_axis, X_AXIS, LAST_AXIS)) - planner.set_max_acceleration(hmiFlag.acc_axis, hmiValues.Max_Acceleration); - drawEditInteger4(select_acc.now, hmiValues.Max_Acceleration); + planner.set_max_acceleration(hmiFlag.acc_axis, hmiValues.maxAcceleration); + drawEditInteger4(select_acc.now, hmiValues.maxAcceleration); return; } // MaxAcceleration limit if (WITHIN(hmiFlag.acc_axis, X_AXIS, LAST_AXIS)) - LIMIT(hmiValues.Max_Acceleration, min_acceleration_edit_values[hmiFlag.acc_axis], max_acceleration_edit_values[hmiFlag.acc_axis]); + LIMIT(hmiValues.maxAcceleration, min_acceleration_edit_values[hmiFlag.acc_axis], max_acceleration_edit_values[hmiFlag.acc_axis]); // MaxAcceleration value - drawEditInteger4(select_acc.now, hmiValues.Max_Acceleration, true); + drawEditInteger4(select_acc.now, hmiValues.maxAcceleration, true); } #if HAS_CLASSIC_JERK @@ -1583,19 +1595,19 @@ void hmiMaxAccelerationXYZE() { void hmiMaxJerkXYZE() { EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (applyEncoder(encoder_diffState, hmiValues.Max_Jerk_scaled)) { - checkkey = MaxJerk; + if (applyEncoder(encoder_diffState, hmiValues.maxJerkScaled)) { + checkkey = ID_MaxJerk; encoderRate.enabled = false; if (WITHIN(hmiFlag.jerk_axis, X_AXIS, LAST_AXIS)) - planner.set_max_jerk(hmiFlag.jerk_axis, hmiValues.Max_Jerk_scaled / MINUNITMULT); - drawEditFloat3(select_jerk.now, hmiValues.Max_Jerk_scaled); + planner.set_max_jerk(hmiFlag.jerk_axis, hmiValues.maxJerkScaled / MINUNITMULT); + drawEditFloat3(select_jerk.now, hmiValues.maxJerkScaled); return; } // MaxJerk limit if (WITHIN(hmiFlag.jerk_axis, X_AXIS, LAST_AXIS)) - LIMIT(hmiValues.Max_Jerk_scaled, min_jerk_edit_values[hmiFlag.jerk_axis] * MINUNITMULT, max_jerk_edit_values[hmiFlag.jerk_axis] * MINUNITMULT); + LIMIT(hmiValues.maxJerkScaled, min_jerk_edit_values[hmiFlag.jerk_axis] * MINUNITMULT, max_jerk_edit_values[hmiFlag.jerk_axis] * MINUNITMULT); // MaxJerk value - drawEditFloat3(select_jerk.now, hmiValues.Max_Jerk_scaled, true); + drawEditFloat3(select_jerk.now, hmiValues.maxJerkScaled, true); } #endif // HAS_CLASSIC_JERK @@ -1603,19 +1615,19 @@ void hmiMaxAccelerationXYZE() { void hmiStepXYZE() { EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; - if (applyEncoder(encoder_diffState, hmiValues.Max_Step_scaled)) { - checkkey = Step; + if (applyEncoder(encoder_diffState, hmiValues.maxStepScaled)) { + checkkey = ID_Step; encoderRate.enabled = false; if (WITHIN(hmiFlag.step_axis, X_AXIS, LAST_AXIS)) - planner.settings.axis_steps_per_mm[hmiFlag.step_axis] = hmiValues.Max_Step_scaled / MINUNITMULT; - drawEditFloat3(select_step.now, hmiValues.Max_Step_scaled); + planner.settings.axis_steps_per_mm[hmiFlag.step_axis] = hmiValues.maxStepScaled / MINUNITMULT; + drawEditFloat3(select_step.now, hmiValues.maxStepScaled); return; } // Step limit if (WITHIN(hmiFlag.step_axis, X_AXIS, LAST_AXIS)) - LIMIT(hmiValues.Max_Step_scaled, min_steps_edit_values[hmiFlag.step_axis] * MINUNITMULT, max_steps_edit_values[hmiFlag.step_axis] * MINUNITMULT); + LIMIT(hmiValues.maxStepScaled, min_steps_edit_values[hmiFlag.step_axis] * MINUNITMULT, max_steps_edit_values[hmiFlag.step_axis] * MINUNITMULT); // Step value - drawEditFloat3(select_step.now, hmiValues.Max_Step_scaled, true); + drawEditFloat3(select_step.now, hmiValues.maxStepScaled, true); } // Draw X, Y, Z and blink if in an un-homed or un-trusted state @@ -1631,11 +1643,11 @@ void _update_axis_value(const AxisEnum axis, const uint16_t x, const uint16_t y, if (force || changed || draw_qmark || draw_empty) { if (blink && draw_qmark) - dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, x, y, F("???.?")); + dwinDrawString(true, font8x16, COLOR_WHITE, COLOR_BG_BLACK, x, y, F("???.?")); else if (blink && draw_empty) - dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, x, y, F(" ")); + dwinDrawString(true, font8x16, COLOR_WHITE, COLOR_BG_BLACK, x, y, F(" ")); else - dwinDrawFloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, x, y, p); + dwinDrawFloatValue(true, true, 0, font8x16, COLOR_WHITE, COLOR_BG_BLACK, 3, 1, x, y, p); } } @@ -1653,7 +1665,7 @@ void _draw_xyz_position(const bool force) { //SERIAL_EOL(); } -void update_variable() { +void updateVariable() { #if HAS_HOTEND static celsius_t _hotendtemp = 0, _hotendtarget = 0; const celsius_t hc = thermalManager.wholeDegHotend(0), @@ -1678,7 +1690,7 @@ void update_variable() { if (_new_fanspeed) _fanspeed = thermalManager.fan_speed[0]; #endif - if (checkkey == Tune) { + if (checkkey == ID_Tune) { // Tune page temperature update #if HAS_HOTEND if (_new_hotend_target) @@ -1693,7 +1705,7 @@ void update_variable() { drawEditInteger3(TUNE_CASE_FAN + MROWS - index_tune, _fanspeed); #endif } - else if (checkkey == TemperatureID) { + else if (checkkey == ID_TemperatureID) { // Temperature page temperature update #if HAS_HOTEND if (_new_hotend_target) drawEditInteger3(TEMP_CASE_TEMP, _hotendtarget); @@ -1746,11 +1758,11 @@ void update_variable() { _offset = BABY_Z_VAR; if (BABY_Z_VAR < 0) { drawStatFloat(207, 417, -_offset); - dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, 205, 419, F("-")); + dwinDrawString(true, font8x16, COLOR_WHITE, COLOR_BG_BLACK, 205, 419, F("-")); } else { drawStatFloat(207, 417, _offset); - dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, 205, 419, F(" ")); + dwinDrawString(true, font8x16, COLOR_WHITE, COLOR_BG_BLACK, 205, 419, F(" ")); } } @@ -1893,8 +1905,8 @@ void redrawSDList() { TERN_(SCROLL_LONG_FILENAMES, initSDItemShift()); } else { - dwinDrawRectangle(1, Color_Bg_Red, 10, MBASE(3) - 10, DWIN_WIDTH - 10, MBASE(4)); - dwinDrawString(false, font16x32, Color_Yellow, Color_Bg_Red, ((DWIN_WIDTH) - 8 * 16) / 2, MBASE(3), F("No Media")); + dwinDrawRectangle(1, COLOR_BG_RED, 10, MBASE(3) - 10, DWIN_WIDTH - 10, MBASE(4)); + dwinDrawString(false, font16x32, COLOR_YELLOW, COLOR_BG_RED, ((DWIN_WIDTH) - 8 * 16) / 2, MBASE(3), F("No Media")); } } @@ -1921,15 +1933,15 @@ void hmiSDCardUpdate() { DWIN_lcd_sd_status = card.isMounted(); //SERIAL_ECHOLNPGM("HMI_SDCardUpdate: ", DWIN_lcd_sd_status); if (DWIN_lcd_sd_status) { - if (checkkey == SelectFile) + if (checkkey == ID_SelectFile) redrawSDList(); } else { // clean file icon - if (checkkey == SelectFile) { + if (checkkey == ID_SelectFile) { redrawSDList(); } - else if (checkkey == PrintProcess || checkkey == Tune || printingIsActive()) { + else if (checkkey == ID_PrintProcess || checkkey == ID_Tune || printingIsActive()) { // TODO: Move card removed abort handling // to CardReader::manage_media. card.abortFilePrintSoon(); @@ -1947,29 +1959,29 @@ void hmiSDCardUpdate() { // void drawStatusArea(const bool with_update) { - dwinDrawRectangle(1, Color_Bg_Black, 0, STATUS_Y, DWIN_WIDTH, DWIN_HEIGHT - 1); + dwinDrawRectangle(1, COLOR_BG_BLACK, 0, STATUS_Y, DWIN_WIDTH, DWIN_HEIGHT - 1); #if HAS_HOTEND dwinIconShow(ICON, ICON_HotendTemp, 10, 383); drawStatInt(28, 384, thermalManager.wholeDegHotend(0)); - dwinDrawString(false, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 25 + 3 * STAT_CHR_W + 5, 384, F("/")); + dwinDrawString(false, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_BLACK, 25 + 3 * STAT_CHR_W + 5, 384, F("/")); drawStatInt(25 + 4 * STAT_CHR_W + 6, 384, thermalManager.degTargetHotend(0)); dwinIconShow(ICON, ICON_StepE, 112, 417); drawStatInt(116 + 2 * STAT_CHR_W, 417, planner.flow_percentage[0]); - dwinDrawString(false, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 116 + 5 * STAT_CHR_W + 2, 417, F("%")); + dwinDrawString(false, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_BLACK, 116 + 5 * STAT_CHR_W + 2, 417, F("%")); #endif #if HAS_HEATED_BED dwinIconShow(ICON, ICON_BedTemp, 10, 416); drawStatInt(28, 417, thermalManager.wholeDegBed()); - dwinDrawString(false, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 25 + 3 * STAT_CHR_W + 5, 417, F("/")); + dwinDrawString(false, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_BLACK, 25 + 3 * STAT_CHR_W + 5, 417, F("/")); drawStatInt(25 + 4 * STAT_CHR_W + 6, 417, thermalManager.degTargetBed()); #endif dwinIconShow(ICON, ICON_Speed, 113, 383); drawStatInt(116 + 2 * STAT_CHR_W, 384, feedrate_percentage); - dwinDrawString(false, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 116 + 5 * STAT_CHR_W + 2, 384, F("%")); + dwinDrawString(false, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_BLACK, 116 + 5 * STAT_CHR_W + 2, 384, F("%")); #if HAS_FAN dwinIconShow(ICON, ICON_FanSpeed, 187, 383); @@ -1982,14 +1994,14 @@ void drawStatusArea(const bool with_update) { if (BABY_Z_VAR < 0) { drawStatFloat(207, 417, -BABY_Z_VAR * 100); - dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, 205, 419, F("-")); + dwinDrawString(true, font8x16, COLOR_WHITE, COLOR_BG_BLACK, 205, 419, F("-")); } else { drawStatFloat(207, 417, BABY_Z_VAR * 100); - dwinDrawString(true, font8x16, Color_White, Color_Bg_Black, 205, 419, F(" ")); + dwinDrawString(true, font8x16, COLOR_WHITE, COLOR_BG_BLACK, 205, 419, F(" ")); } - dwinDrawRectangle(1, Line_Color, 0, 449, DWIN_WIDTH, 451); + dwinDrawRectangle(1, COLOR_LINE, 0, 449, DWIN_WIDTH, 451); dwinIconShow(ICON, ICON_MaxSpeedX, 10, 456); dwinIconShow(ICON, ICON_MaxSpeedY, 95, 456); @@ -2010,8 +2022,8 @@ void hmiStartFrame(const bool with_update) { void drawInfoMenu() { clearMainWindow(); - dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, (DWIN_WIDTH - strlen(MACHINE_SIZE) * MENU_CHR_W) / 2, 122, F(MACHINE_SIZE)); - dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, (DWIN_WIDTH - strlen(SHORT_BUILD_VERSION) * MENU_CHR_W) / 2, 195, F(SHORT_BUILD_VERSION)); + dwinDrawString(false, font8x16, COLOR_WHITE, COLOR_BG_BLACK, (DWIN_WIDTH - strlen(MACHINE_SIZE) * MENU_CHR_W) / 2, 122, F(MACHINE_SIZE)); + dwinDrawString(false, font8x16, COLOR_WHITE, COLOR_BG_BLACK, (DWIN_WIDTH - strlen(SHORT_BUILD_VERSION) * MENU_CHR_W) / 2, 195, F(SHORT_BUILD_VERSION)); if (hmiIsChinese()) { dwinFrameTitleCopy(30, 17, 28, 13); // "Info" @@ -2031,12 +2043,12 @@ void drawInfoMenu() { dwinFrameAreaCopy(1, 146, 151, 254, 161, 82, 175); // "Firmware Version" dwinFrameAreaCopy(1, 1, 164, 96, 175, 89, 248); // "Contact details" } - dwinDrawString(false, font8x16, Color_White, Color_Bg_Black, (DWIN_WIDTH - strlen(CORP_WEBSITE) * MENU_CHR_W) / 2, 268, F(CORP_WEBSITE)); + dwinDrawString(false, font8x16, COLOR_WHITE, COLOR_BG_BLACK, (DWIN_WIDTH - strlen(CORP_WEBSITE) * MENU_CHR_W) / 2, 268, F(CORP_WEBSITE)); drawBackFirst(); for (uint8_t i = 0; i < 3; ++i) { dwinIconShow(ICON, ICON_PrintSize + i, 26, 99 + i * 73); - dwinDrawLine(Line_Color, 16, MBASE(2) + i * 73, 256, 156 + i * 73); + dwinDrawLine(COLOR_LINE, 16, MBASE(2) + i * 73, 256, 156 + i * 73); } } @@ -2084,19 +2096,19 @@ void hmiMainMenu() { else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_page.now) { case PAGE_PRINT: - checkkey = SelectFile; + checkkey = ID_SelectFile; drawPrintFileMenu(); break; case PAGE_PREPARE: - checkkey = Prepare; + checkkey = ID_Prepare; select_prepare.reset(); index_prepare = MROWS; drawPrepareMenu(); break; case PAGE_CONTROL: - checkkey = Control; + checkkey = ID_Control; select_control.reset(); index_control = MROWS; drawControlMenu(); @@ -2104,10 +2116,10 @@ void hmiMainMenu() { case PAGE_INFO_LEVELING: #if HAS_ONESTEP_LEVELING - checkkey = Leveling; + checkkey = ID_Leveling; hmiLeveling(); #else - checkkey = Info; + checkkey = ID_Info; drawInfoMenu(); #endif break; @@ -2273,7 +2285,7 @@ void hmiPrinting() { else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_print.now) { case PRINT_SETUP: - checkkey = Tune; + checkkey = ID_Tune; hmiValues.show_mode = 0; select_tune.reset(); index_tune = MROWS; @@ -2299,14 +2311,14 @@ void hmiPrinting() { } else { hmiFlag.select_flag = true; - checkkey = Print_window; + checkkey = ID_PrintWindow; popupwindowPauseOrStop(); } break; case PRINT_STOP: hmiFlag.select_flag = true; - checkkey = Print_window; + checkkey = ID_PrintWindow; popupwindowPauseOrStop(); break; @@ -2335,7 +2347,7 @@ void hmiPauseOrStop() { } else if (select_print.now == PRINT_STOP) { if (hmiFlag.select_flag) { - checkkey = Back_Main; + checkkey = ID_BackMain; wait_for_heatup = wait_for_user = false; // Stop waiting for heating/user card.abortFilePrintSoon(); // Let the main loop handle SD abort dwin_abort_flag = true; // Reset feedrate, return to Home @@ -2518,7 +2530,7 @@ void itemHomeOffs_X(const uint8_t row) { #endif } drawMenuLine(row, ICON_HomeOffset); - drawEditSignedFloat3(row, hmiValues.Home_OffX_scaled); + drawEditSignedFloat3(row, hmiValues.homeOffsScaled.x); } void itemHomeOffs_Y(const uint8_t row) { @@ -2533,7 +2545,7 @@ void itemHomeOffs_Y(const uint8_t row) { #endif } drawMenuLine(row, ICON_HomeOffset); - drawEditSignedFloat3(row, hmiValues.Home_OffY_scaled); + drawEditSignedFloat3(row, hmiValues.homeOffsScaled.y); } void itemHomeOffs_Z(const uint8_t row) { @@ -2548,7 +2560,7 @@ void itemHomeOffs_Z(const uint8_t row) { #endif } drawMenuLine(row, ICON_HomeOffset); - drawEditSignedFloat3(row, hmiValues.Home_OffZ_scaled); + drawEditSignedFloat3(row, hmiValues.homeOffsScaled.z); } void drawHomeOffMenu() { @@ -2593,8 +2605,8 @@ void drawHomeOffMenu() { #endif } - drawEditSignedFloat3(1, hmiValues.Probe_OffX_scaled); - drawEditSignedFloat3(2, hmiValues.Probe_OffY_scaled); + drawEditSignedFloat3(1, hmiValues.probeOffsScaled.x); + drawEditSignedFloat3(2, hmiValues.probeOffsScaled.y); if (select_item.now != CASE_BACK) drawMenuCursor(select_item.now); } @@ -2673,7 +2685,7 @@ void hmiPrepare() { gotoMainMenu(); break; case PREPARE_CASE_MOVE: - checkkey = AxisMove; + checkkey = ID_AxisMove; select_axis.reset(); drawMoveMenu(); @@ -2681,15 +2693,15 @@ void hmiPrepare() { drawEditFloat3(2, current_position.y * MINUNITMULT); drawEditFloat3(3, current_position.z * MINUNITMULT); #if HAS_HOTEND - hmiValues.Move_E_scaled = current_position.e * MINUNITMULT; - drawEditSignedFloat3(4, hmiValues.Move_E_scaled); + hmiValues.moveScaled.e = current_position.e * MINUNITMULT; + drawEditSignedFloat3(4, hmiValues.moveScaled.e); #endif break; case PREPARE_CASE_DISA: queue.inject(F("M84")); break; case PREPARE_CASE_HOME: // Homing - checkkey = Last_Prepare; + checkkey = ID_LastPrepare; index_prepare = MROWS; queue.inject_P(G28_STR); // G28 will set home_flag popupWindowHome(); @@ -2698,7 +2710,7 @@ void hmiPrepare() { #if HAS_ZOFFSET_ITEM case PREPARE_CASE_ZOFF: #if ANY(HAS_BED_PROBE, BABYSTEPPING) - checkkey = Homeoffset; + checkkey = ID_HomeOffset; hmiValues.show_mode = -4; hmiValues.offset_value = BABY_Z_VAR * 100; drawEditSignedFloat2(PREPARE_CASE_ZOFF + MROWS - index_prepare, hmiValues.offset_value, true); @@ -2879,13 +2891,13 @@ void hmiControl() { gotoMainMenu(); break; case CONTROL_CASE_TEMP: - checkkey = TemperatureID; + checkkey = ID_TemperatureID; hmiValues.show_mode = -1; select_temp.reset(); drawTemperatureMenu(); break; case CONTROL_CASE_MOVE: - checkkey = Motion; + checkkey = ID_Motion; select_motion.reset(); drawMotionMenu(); break; @@ -2904,12 +2916,12 @@ void hmiControl() { break; #endif case CONTROL_CASE_ADVSET: - checkkey = AdvSet; + checkkey = ID_AdvSet; select_advset.reset(); drawAdvancedSettingsMenu(); break; case CONTROL_CASE_INFO: - checkkey = Info; + checkkey = ID_Info; drawInfoMenu(); break; default: break; @@ -2937,11 +2949,11 @@ void hmiAxisMove() { if (hmiFlag.cold_flag) { if (encoder_diffState == ENCODER_DIFF_ENTER) { hmiFlag.cold_flag = false; - hmiValues.Move_E_scaled = current_position.e * MINUNITMULT; + hmiValues.moveScaled.e = current_position.e * MINUNITMULT; drawMoveMenu(); - drawEditFloat3(1, hmiValues.Move_X_scaled); - drawEditFloat3(2, hmiValues.Move_Y_scaled); - drawEditFloat3(3, hmiValues.Move_Z_scaled); + TERN_(HAS_X_AXIS, drawEditFloat3(1, hmiValues.moveScaled.x)); + TERN_(HAS_Y_AXIS, drawEditFloat3(2, hmiValues.moveScaled.y)); + TERN_(HAS_Z_AXIS, drawEditFloat3(3, hmiValues.moveScaled.z)); drawEditSignedFloat3(4, 0); dwinUpdateLCD(); } @@ -2959,45 +2971,52 @@ void hmiAxisMove() { else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_axis.now) { case CASE_BACK: - checkkey = Prepare; + checkkey = ID_Prepare; select_prepare.set(1); index_prepare = MROWS; drawPrepareMenu(); break; - case 1: // X axis move - checkkey = Move_X; - hmiValues.Move_X_scaled = current_position.x * MINUNITMULT; - drawEditFloat3(1, hmiValues.Move_X_scaled, true); - encoderRate.enabled = true; - break; - case 2: // Y axis move - checkkey = Move_Y; - hmiValues.Move_Y_scaled = current_position.y * MINUNITMULT; - drawEditFloat3(2, hmiValues.Move_Y_scaled, true); - encoderRate.enabled = true; - break; - case 3: // Z axis move - checkkey = Move_Z; - hmiValues.Move_Z_scaled = current_position.z * MINUNITMULT; - drawEditFloat3(3, hmiValues.Move_Z_scaled, true); - encoderRate.enabled = true; - break; - #if HAS_HOTEND - case 4: // Extruder - #if ENABLED(PREVENT_COLD_EXTRUSION) - if (thermalManager.tooColdToExtrude(0)) { - hmiFlag.cold_flag = true; - popupWindowETempTooLow(); - dwinUpdateLCD(); - return; - } - #endif - checkkey = Extruder; - hmiValues.Move_E_scaled = current_position.e * MINUNITMULT; - drawEditSignedFloat3(4, hmiValues.Move_E_scaled, true); - encoderRate.enabled = true; - break; - #endif + + #if HAS_X_AXIS + case 1: // X axis move + checkkey = ID_MoveX; + hmiValues.moveScaled.x = current_position.x * MINUNITMULT; + drawEditFloat3(1, hmiValues.moveScaled.x, true); + encoderRate.enabled = true; + break; + #endif + #if HAS_Y_AXIS + case 2: // Y axis move + checkkey = ID_MoveY; + hmiValues.moveScaled.y = current_position.y * MINUNITMULT; + drawEditFloat3(2, hmiValues.moveScaled.y, true); + encoderRate.enabled = true; + break; + #endif + #if HAS_Z_AXIS + case 3: // Z axis move + checkkey = ID_MoveZ; + hmiValues.moveScaled.z = current_position.z * MINUNITMULT; + drawEditFloat3(3, hmiValues.moveScaled.z, true); + encoderRate.enabled = true; + break; + #endif + #if HAS_HOTEND + case 4: // Extruder + #if ENABLED(PREVENT_COLD_EXTRUSION) + if (thermalManager.tooColdToExtrude(0)) { + hmiFlag.cold_flag = true; + popupWindowETempTooLow(); + dwinUpdateLCD(); + return; + } + #endif + checkkey = ID_Extruder; + hmiValues.moveScaled.e = current_position.e * MINUNITMULT; + drawEditSignedFloat3(4, hmiValues.moveScaled.e, true); + encoderRate.enabled = true; + break; + #endif } } dwinUpdateLCD(); @@ -3018,39 +3037,39 @@ void hmiTemperature() { else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_temp.now) { case CASE_BACK: - checkkey = Control; + checkkey = ID_Control; select_control.set(1); index_control = MROWS; drawControlMenu(); break; #if HAS_HOTEND case TEMP_CASE_TEMP: - checkkey = ETemp; - hmiValues.E_Temp = thermalManager.degTargetHotend(0); - drawEditInteger3(1, hmiValues.E_Temp, true); + checkkey = ID_ETemp; + hmiValues.tempE = thermalManager.degTargetHotend(0); + drawEditInteger3(1, hmiValues.tempE, true); encoderRate.enabled = true; break; #endif #if HAS_HEATED_BED case TEMP_CASE_BED: - checkkey = BedTemp; - hmiValues.Bed_Temp = thermalManager.degTargetBed(); - drawEditInteger3(2, hmiValues.Bed_Temp, true); + checkkey = ID_BedTemp; + hmiValues.tempBed = thermalManager.degTargetBed(); + drawEditInteger3(2, hmiValues.tempBed, true); encoderRate.enabled = true; break; #endif #if HAS_FAN case TEMP_CASE_FAN: - checkkey = FanSpeed; - hmiValues.Fan_speed = thermalManager.fan_speed[0]; - drawEditInteger3(3, hmiValues.Fan_speed, true); + checkkey = ID_FanSpeed; + hmiValues.fanSpeed = thermalManager.fan_speed[0]; + drawEditInteger3(3, hmiValues.fanSpeed, true); encoderRate.enabled = true; break; #endif #if HAS_PREHEAT case TEMP_CASE_PLA: { - checkkey = PLAPreheat; + checkkey = ID_PLAPreheat; select_PLA.reset(); hmiValues.show_mode = -2; @@ -3129,7 +3148,7 @@ void hmiTemperature() { #if PREHEAT_COUNT > 1 case TEMP_CASE_ABS: { // ABS preheat setting - checkkey = ABSPreheat; + checkkey = ID_ABSPreheat; select_ABS.reset(); hmiValues.show_mode = -3; @@ -3448,30 +3467,30 @@ void hmiMotion() { else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_motion.now) { case CASE_BACK: - checkkey = Control; + checkkey = ID_Control; select_control.set(CONTROL_CASE_MOVE); index_control = MROWS; drawControlMenu(); break; case MOTION_CASE_RATE: - checkkey = MaxSpeed; + checkkey = ID_MaxSpeed; select_speed.reset(); drawMaxSpeedMenu(); break; case MOTION_CASE_ACCEL: - checkkey = MaxAcceleration; + checkkey = ID_MaxAcceleration; select_acc.reset(); drawMaxAccelMenu(); break; #if HAS_CLASSIC_JERK case MOTION_CASE_JERK: - checkkey = MaxJerk; + checkkey = ID_MaxJerk; select_jerk.reset(); drawMaxJerkMenu(); break; #endif case MOTION_CASE_STEPS: - checkkey = Step; + checkkey = ID_Step; select_step.reset(); drawStepsMenu(); break; @@ -3523,7 +3542,7 @@ void hmiAdvSet() { else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_advset.now) { case CASE_BACK: - checkkey = Control; + checkkey = ID_Control; select_control.set(CONTROL_CASE_ADVSET); index_control = CONTROL_CASE_ADVSET; drawControlMenu(); @@ -3531,21 +3550,21 @@ void hmiAdvSet() { #if HAS_HOME_OFFSET case ADVSET_CASE_HOMEOFF: - checkkey = HomeOff; + checkkey = ID_HomeOff; select_item.reset(); - hmiValues.Home_OffX_scaled = home_offset.x * 10; - hmiValues.Home_OffY_scaled = home_offset.y * 10; - hmiValues.Home_OffZ_scaled = home_offset.z * 10; + hmiValues.homeOffsScaled.x = home_offset.x * 10; + hmiValues.homeOffsScaled.y = home_offset.y * 10; + hmiValues.homeOffsScaled.z = home_offset.z * 10; drawHomeOffMenu(); break; #endif #if HAS_ONESTEP_LEVELING case ADVSET_CASE_PROBEOFF: - checkkey = ProbeOff; + checkkey = ID_ProbeOff; select_item.reset(); - hmiValues.Probe_OffX_scaled = probe.offset.x * 10; - hmiValues.Probe_OffY_scaled = probe.offset.y * 10; + hmiValues.probeOffsScaled.x = probe.offset.x * 10; + hmiValues.probeOffsScaled.y = probe.offset.y * 10; drawProbeOffMenu(); break; #endif @@ -3591,23 +3610,23 @@ void hmiAdvSet() { else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_item.now) { case CASE_BACK: - checkkey = AdvSet; + checkkey = ID_AdvSet; select_advset.set(ADVSET_CASE_HOMEOFF); drawAdvancedSettingsMenu(); break; case 1: // Home Offset X - checkkey = HomeOffX; - drawEditSignedFloat3(1, hmiValues.Home_OffX_scaled, true); + checkkey = ID_HomeOffX; + drawEditSignedFloat3(1, hmiValues.homeOffsScaled.x, true); encoderRate.enabled = true; break; case 2: // Home Offset Y - checkkey = HomeOffY; - drawEditSignedFloat3(2, hmiValues.Home_OffY_scaled, true); + checkkey = ID_HomeOffY; + drawEditSignedFloat3(2, hmiValues.homeOffsScaled.y, true); encoderRate.enabled = true; break; case 3: // Home Offset Z - checkkey = HomeOffZ; - drawEditSignedFloat3(3, hmiValues.Home_OffZ_scaled, true); + checkkey = ID_HomeOffZ; + drawEditSignedFloat3(3, hmiValues.homeOffsScaled.z, true); encoderRate.enabled = true; break; default: break; @@ -3621,7 +3640,7 @@ void hmiAdvSet() { if (encoder_diffState == ENCODER_DIFF_NO) return; if (applyEncoder(encoder_diffState, posScaled)) { - checkkey = HomeOff; + checkkey = ID_HomeOff; encoderRate.enabled = false; set_home_offset(axis, posScaled / 10); drawEditSignedFloat3(select_item.now, posScaled); @@ -3631,9 +3650,9 @@ void hmiAdvSet() { drawEditSignedFloat3(select_item.now, posScaled, true); } - void hmiHomeOffX() { hmiHomeOffN(X_AXIS, hmiValues.Home_OffX_scaled, -500, 500); } - void hmiHomeOffY() { hmiHomeOffN(Y_AXIS, hmiValues.Home_OffY_scaled, -500, 500); } - void hmiHomeOffZ() { hmiHomeOffN(Z_AXIS, hmiValues.Home_OffZ_scaled, -20, 20); } + void hmiHomeOffX() { hmiHomeOffN(X_AXIS, hmiValues.homeOffsScaled.x, -500, 500); } + void hmiHomeOffY() { hmiHomeOffN(Y_AXIS, hmiValues.homeOffsScaled.y, -500, 500); } + void hmiHomeOffZ() { hmiHomeOffN(Z_AXIS, hmiValues.homeOffsScaled.z, -20, 20); } #endif // HAS_HOME_OFFSET @@ -3654,18 +3673,18 @@ void hmiAdvSet() { else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_item.now) { case CASE_BACK: - checkkey = AdvSet; + checkkey = ID_AdvSet; select_advset.set(ADVSET_CASE_PROBEOFF); drawAdvancedSettingsMenu(); break; case 1: // Probe Offset X - checkkey = ProbeOffX; - drawEditSignedFloat3(1, hmiValues.Probe_OffX_scaled, true); + checkkey = ID_ProbeOffX; + drawEditSignedFloat3(1, hmiValues.probeOffsScaled.x, true); encoderRate.enabled = true; break; case 2: // Probe Offset Y - checkkey = ProbeOffY; - drawEditSignedFloat3(2, hmiValues.Probe_OffY_scaled, true); + checkkey = ID_ProbeOffY; + drawEditSignedFloat3(2, hmiValues.probeOffsScaled.y, true); encoderRate.enabled = true; break; } @@ -3678,7 +3697,7 @@ void hmiAdvSet() { if (encoder_diffState == ENCODER_DIFF_NO) return; if (applyEncoder(encoder_diffState, posScaled)) { - checkkey = ProbeOff; + checkkey = ID_ProbeOff; encoderRate.enabled = false; offset_ref = posScaled / 10; drawEditSignedFloat3(select_item.now, posScaled); @@ -3688,8 +3707,8 @@ void hmiAdvSet() { drawEditSignedFloat3(select_item.now, posScaled, true); } - void hmiProbeOffX() { hmiProbeOffN(hmiValues.Probe_OffX_scaled, probe.offset.x); } - void hmiProbeOffY() { hmiProbeOffN(hmiValues.Probe_OffY_scaled, probe.offset.y); } + void hmiProbeOffX() { hmiProbeOffN(hmiValues.probeOffsScaled.x, probe.offset.x); } + void hmiProbeOffY() { hmiProbeOffN(hmiValues.probeOffsScaled.y, probe.offset.y); } #endif // HAS_ONESTEP_LEVELING @@ -3699,7 +3718,7 @@ void hmiInfo() { if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_ENTER) { #if HAS_ONESTEP_LEVELING - checkkey = Control; + checkkey = ID_Control; select_control.set(CONTROL_CASE_INFO); drawControlMenu(); #else @@ -3745,39 +3764,39 @@ void hmiTune() { } break; case TUNE_CASE_SPEED: // Print speed - checkkey = PrintSpeed; - hmiValues.print_speed = feedrate_percentage; - drawEditInteger3(TUNE_CASE_SPEED + MROWS - index_tune, hmiValues.print_speed, true); + checkkey = ID_PrintSpeed; + hmiValues.printSpeed = feedrate_percentage; + drawEditInteger3(TUNE_CASE_SPEED + MROWS - index_tune, hmiValues.printSpeed, true); encoderRate.enabled = true; break; #if HAS_HOTEND case TUNE_CASE_TEMP: // Nozzle temp - checkkey = ETemp; - hmiValues.E_Temp = thermalManager.degTargetHotend(0); - drawEditInteger3(TUNE_CASE_TEMP + MROWS - index_tune, hmiValues.E_Temp, true); + checkkey = ID_ETemp; + hmiValues.tempE = thermalManager.degTargetHotend(0); + drawEditInteger3(TUNE_CASE_TEMP + MROWS - index_tune, hmiValues.tempE, true); encoderRate.enabled = true; break; #endif #if HAS_HEATED_BED case TUNE_CASE_BED: // Bed temp - checkkey = BedTemp; - hmiValues.Bed_Temp = thermalManager.degTargetBed(); - drawEditInteger3(TUNE_CASE_BED + MROWS - index_tune, hmiValues.Bed_Temp, true); + checkkey = ID_BedTemp; + hmiValues.tempBed = thermalManager.degTargetBed(); + drawEditInteger3(TUNE_CASE_BED + MROWS - index_tune, hmiValues.tempBed, true); encoderRate.enabled = true; break; #endif #if HAS_FAN case TUNE_CASE_FAN: // Fan speed - checkkey = FanSpeed; - hmiValues.Fan_speed = thermalManager.fan_speed[0]; - drawEditInteger3(TUNE_CASE_FAN + MROWS - index_tune, hmiValues.Fan_speed, true); + checkkey = ID_FanSpeed; + hmiValues.fanSpeed = thermalManager.fan_speed[0]; + drawEditInteger3(TUNE_CASE_FAN + MROWS - index_tune, hmiValues.fanSpeed, true); encoderRate.enabled = true; break; #endif #if HAS_ZOFFSET_ITEM case TUNE_CASE_ZOFF: // Z-offset #if ANY(HAS_BED_PROBE, BABYSTEPPING) - checkkey = Homeoffset; + checkkey = ID_HomeOffset; hmiValues.offset_value = BABY_Z_VAR * 100; drawEditSignedFloat2(TUNE_CASE_ZOFF + MROWS - index_tune, hmiValues.offset_value, true); encoderRate.enabled = true; @@ -3811,31 +3830,31 @@ void hmiTune() { else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_PLA.now) { case CASE_BACK: - checkkey = TemperatureID; + checkkey = ID_TemperatureID; select_temp.now = TEMP_CASE_PLA; hmiValues.show_mode = -1; drawTemperatureMenu(); break; #if HAS_HOTEND case PREHEAT_CASE_TEMP: - checkkey = ETemp; - hmiValues.E_Temp = ui.material_preset[0].hotend_temp; + checkkey = ID_ETemp; + hmiValues.tempE = ui.material_preset[0].hotend_temp; drawEditInteger3(PREHEAT_CASE_TEMP, ui.material_preset[0].hotend_temp, true); encoderRate.enabled = true; break; #endif #if HAS_HEATED_BED case PREHEAT_CASE_BED: - checkkey = BedTemp; - hmiValues.Bed_Temp = ui.material_preset[0].bed_temp; + checkkey = ID_BedTemp; + hmiValues.tempBed = ui.material_preset[0].bed_temp; drawEditInteger3(PREHEAT_CASE_BED, ui.material_preset[0].bed_temp, true); encoderRate.enabled = true; break; #endif #if HAS_FAN case PREHEAT_CASE_FAN: - checkkey = FanSpeed; - hmiValues.Fan_speed = ui.material_preset[0].fan_speed; + checkkey = ID_FanSpeed; + hmiValues.fanSpeed = ui.material_preset[0].fan_speed; drawEditInteger3(PREHEAT_CASE_FAN, ui.material_preset[0].fan_speed, true); encoderRate.enabled = true; break; @@ -3868,31 +3887,31 @@ void hmiTune() { else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_ABS.now) { case CASE_BACK: - checkkey = TemperatureID; + checkkey = ID_TemperatureID; select_temp.now = TEMP_CASE_ABS; hmiValues.show_mode = -1; drawTemperatureMenu(); break; #if HAS_HOTEND case PREHEAT_CASE_TEMP: - checkkey = ETemp; - hmiValues.E_Temp = ui.material_preset[1].hotend_temp; + checkkey = ID_ETemp; + hmiValues.tempE = ui.material_preset[1].hotend_temp; drawEditInteger3(PREHEAT_CASE_TEMP, ui.material_preset[1].hotend_temp, true); encoderRate.enabled = true; break; #endif #if HAS_HEATED_BED case PREHEAT_CASE_BED: - checkkey = BedTemp; - hmiValues.Bed_Temp = ui.material_preset[1].bed_temp; + checkkey = ID_BedTemp; + hmiValues.tempBed = ui.material_preset[1].bed_temp; drawEditInteger3(PREHEAT_CASE_BED, ui.material_preset[1].bed_temp, true); encoderRate.enabled = true; break; #endif #if HAS_FAN case PREHEAT_CASE_FAN: - checkkey = FanSpeed; - hmiValues.Fan_speed = ui.material_preset[1].fan_speed; + checkkey = ID_FanSpeed; + hmiValues.fanSpeed = ui.material_preset[1].fan_speed; drawEditInteger3(PREHEAT_CASE_FAN, ui.material_preset[1].fan_speed, true); encoderRate.enabled = true; break; @@ -3926,14 +3945,14 @@ void hmiMaxSpeed() { } else if (encoder_diffState == ENCODER_DIFF_ENTER) { if (WITHIN(select_speed.now, 1, 4)) { - checkkey = MaxSpeed_value; + checkkey = ID_MaxSpeedValue; hmiFlag.feedspeed_axis = AxisEnum(select_speed.now - 1); - hmiValues.Max_Feedspeed = planner.settings.max_feedrate_mm_s[hmiFlag.feedspeed_axis]; - drawEditInteger4(select_speed.now, hmiValues.Max_Feedspeed, true); + hmiValues.maxFeedSpeed = planner.settings.max_feedrate_mm_s[hmiFlag.feedspeed_axis]; + drawEditInteger4(select_speed.now, hmiValues.maxFeedSpeed, true); encoderRate.enabled = true; } else { // Back - checkkey = Motion; + checkkey = ID_Motion; select_motion.now = MOTION_CASE_RATE; drawMotionMenu(); } @@ -3955,14 +3974,14 @@ void hmiMaxAcceleration() { } else if (encoder_diffState == ENCODER_DIFF_ENTER) { if (WITHIN(select_acc.now, 1, 4)) { - checkkey = MaxAcceleration_value; + checkkey = ID_MaxAccelerationValue; hmiFlag.acc_axis = AxisEnum(select_acc.now - 1); - hmiValues.Max_Acceleration = planner.settings.max_acceleration_mm_per_s2[hmiFlag.acc_axis]; - drawEditInteger4(select_acc.now, hmiValues.Max_Acceleration, true); + hmiValues.maxAcceleration = planner.settings.max_acceleration_mm_per_s2[hmiFlag.acc_axis]; + drawEditInteger4(select_acc.now, hmiValues.maxAcceleration, true); encoderRate.enabled = true; } else { // Back - checkkey = Motion; + checkkey = ID_Motion; select_motion.now = MOTION_CASE_ACCEL; drawMotionMenu(); } @@ -3985,14 +4004,14 @@ void hmiMaxAcceleration() { } else if (encoder_diffState == ENCODER_DIFF_ENTER) { if (WITHIN(select_jerk.now, 1, 4)) { - checkkey = MaxJerk_value; + checkkey = ID_MaxJerkValue; hmiFlag.jerk_axis = AxisEnum(select_jerk.now - 1); - hmiValues.Max_Jerk_scaled = planner.max_jerk[hmiFlag.jerk_axis] * MINUNITMULT; - drawEditFloat3(select_jerk.now, hmiValues.Max_Jerk_scaled, true); + hmiValues.maxJerkScaled = planner.max_jerk[hmiFlag.jerk_axis] * MINUNITMULT; + drawEditFloat3(select_jerk.now, hmiValues.maxJerkScaled, true); encoderRate.enabled = true; } else { // Back - checkkey = Motion; + checkkey = ID_Motion; select_motion.now = MOTION_CASE_JERK; drawMotionMenu(); } @@ -4015,14 +4034,14 @@ void hmiStep() { } else if (encoder_diffState == ENCODER_DIFF_ENTER) { if (WITHIN(select_step.now, 1, 4)) { - checkkey = Step_value; + checkkey = ID_StepValue; hmiFlag.step_axis = AxisEnum(select_step.now - 1); - hmiValues.Max_Step_scaled = planner.settings.axis_steps_per_mm[hmiFlag.step_axis] * MINUNITMULT; - drawEditFloat3(select_step.now, hmiValues.Max_Step_scaled, true); + hmiValues.maxStepScaled = planner.settings.axis_steps_per_mm[hmiFlag.step_axis] * MINUNITMULT; + drawEditFloat3(select_step.now, hmiValues.maxStepScaled, true); encoderRate.enabled = true; } else { // Back - checkkey = Motion; + checkkey = ID_Motion; select_motion.now = MOTION_CASE_STEPS; drawMotionMenu(); } @@ -4035,7 +4054,7 @@ void hmiInit() { for (uint16_t t = 0; t <= 100; t += 2) { dwinIconShow(ICON, ICON_Bar, 15, 260); - dwinDrawRectangle(1, Color_Bg_Black, 15 + t * 242 / 100, 260, 257, 280); + dwinDrawRectangle(1, COLOR_BG_BLACK, 15 + t * 242 / 100, 260, 257, 280); dwinUpdateLCD(); delay(20); } @@ -4062,13 +4081,13 @@ void eachMomentUpdate() { const millis_t ms = millis(); if (ELAPSED(ms, next_var_update_ms)) { next_var_update_ms = ms + DWIN_VAR_UPDATE_INTERVAL; - update_variable(); + updateVariable(); } if (PENDING(ms, next_rts_update_ms)) return; next_rts_update_ms = ms + DWIN_SCROLL_UPDATE_INTERVAL; - if (checkkey == PrintProcess) { + if (checkkey == ID_PrintProcess) { // if print done if (hmiFlag.print_finish && !hmiFlag.done_confirm_flag) { hmiFlag.print_finish = false; @@ -4083,7 +4102,7 @@ void eachMomentUpdate() { drawPrintProgressBar(); // show print done confirm - dwinDrawRectangle(1, Color_Bg_Black, 0, 250, DWIN_WIDTH - 1, STATUS_Y); + dwinDrawRectangle(1, COLOR_BG_BLACK, 0, 250, DWIN_WIDTH - 1, STATUS_Y); dwinIconShow(ICON, hmiIsChinese() ? ICON_Confirm_C : ICON_Confirm_E, 86, 283); } else if (hmiFlag.pause_flag != printingIsPaused()) { @@ -4104,7 +4123,7 @@ void eachMomentUpdate() { queue.inject(F("G1 F1200 X0 Y0")); } - if (card.isPrinting() && checkkey == PrintProcess) { // Print process + if (card.isPrinting() && checkkey == ID_PrintProcess) { // Print process const uint8_t card_pct = card.percentDone(); static uint8_t last_cardpercentValue = 101; if (last_cardpercentValue != card_pct) { // print percent @@ -4135,7 +4154,7 @@ void eachMomentUpdate() { } else if (dwin_abort_flag && !hmiFlag.home_flag) { // Print Stop dwin_abort_flag = false; - hmiValues.print_speed = feedrate_percentage = 100; + hmiValues.printSpeed = feedrate_percentage = 100; dwin_zoffset = BABY_Z_VAR; select_page.set(0); gotoMainMenu(); @@ -4146,10 +4165,10 @@ void eachMomentUpdate() { auto update_selection = [&](const bool sel) { hmiFlag.select_flag = sel; - const uint16_t c1 = sel ? Color_Bg_Window : Select_Color; + const uint16_t c1 = sel ? COLOR_BG_WINDOW : COLOR_SELECT; dwinDrawRectangle(0, c1, 25, 306, 126, 345); dwinDrawRectangle(0, c1, 24, 305, 127, 346); - const uint16_t c2 = sel ? Select_Color : Color_Bg_Window; + const uint16_t c2 = sel ? COLOR_SELECT : COLOR_BG_WINDOW; dwinDrawRectangle(0, c2, 145, 306, 246, 345); dwinDrawRectangle(0, c2, 144, 305, 247, 346); }; @@ -4159,7 +4178,7 @@ void eachMomentUpdate() { char * const name = card.longest_filename(); const int8_t npos = _MAX(0U, DWIN_WIDTH - strlen(name) * (MENU_CHR_W)) / 2; - dwinDrawString(true, font8x16, Popup_Text_Color, Color_Bg_Window, npos, 252, name); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, npos, 252, name); dwinUpdateLCD(); bool recovery_flag = true; @@ -4193,65 +4212,65 @@ void eachMomentUpdate() { void dwinHandleScreen() { switch (checkkey) { - case MainMenu: hmiMainMenu(); break; - case SelectFile: hmiSelectFile(); break; - case Prepare: hmiPrepare(); break; - case Control: hmiControl(); break; - case Leveling: break; - case PrintProcess: hmiPrinting(); break; - case Print_window: hmiPauseOrStop(); break; - case AxisMove: hmiAxisMove(); break; - case TemperatureID: hmiTemperature(); break; - case Motion: hmiMotion(); break; - case AdvSet: hmiAdvSet(); break; + case ID_MainMenu: hmiMainMenu(); break; + case ID_SelectFile: hmiSelectFile(); break; + case ID_Prepare: hmiPrepare(); break; + case ID_Control: hmiControl(); break; + case ID_Leveling: break; + case ID_PrintProcess: hmiPrinting(); break; + case ID_PrintWindow: hmiPauseOrStop(); break; + case ID_AxisMove: hmiAxisMove(); break; + case ID_TemperatureID: hmiTemperature(); break; + case ID_Motion: hmiMotion(); break; + case ID_AdvSet: hmiAdvSet(); break; #if HAS_HOME_OFFSET - case HomeOff: hmiHomeOff(); break; - case HomeOffX: hmiHomeOffX(); break; - case HomeOffY: hmiHomeOffY(); break; - case HomeOffZ: hmiHomeOffZ(); break; + case ID_HomeOff: hmiHomeOff(); break; + case ID_HomeOffX: hmiHomeOffX(); break; + case ID_HomeOffY: hmiHomeOffY(); break; + case ID_HomeOffZ: hmiHomeOffZ(); break; #endif #if HAS_ONESTEP_LEVELING - case ProbeOff: hmiProbeOff(); break; - case ProbeOffX: hmiProbeOffX(); break; - case ProbeOffY: hmiProbeOffY(); break; + case ID_ProbeOff: hmiProbeOff(); break; + case ID_ProbeOffX: hmiProbeOffX(); break; + case ID_ProbeOffY: hmiProbeOffY(); break; #endif - case Info: hmiInfo(); break; - case Tune: hmiTune(); break; + case ID_Info: hmiInfo(); break; + case ID_Tune: hmiTune(); break; #if HAS_PREHEAT - case PLAPreheat: hmiPLAPreheatSetting(); break; + case ID_PLAPreheat: hmiPLAPreheatSetting(); break; #if PREHEAT_COUNT > 1 - case ABSPreheat: hmiABSPreheatSetting(); break; + case ID_ABSPreheat: hmiABSPreheatSetting(); break; #endif #endif - case MaxSpeed: hmiMaxSpeed(); break; - case MaxAcceleration: hmiMaxAcceleration(); break; + case ID_MaxSpeed: hmiMaxSpeed(); break; + case ID_MaxAcceleration: hmiMaxAcceleration(); break; #if HAS_CLASSIC_JERK - case MaxJerk: hmiMaxJerk(); break; + case ID_MaxJerk: hmiMaxJerk(); break; #endif - case Step: hmiStep(); break; - case Move_X: hmiMoveX(); break; - case Move_Y: hmiMoveY(); break; - case Move_Z: hmiMoveZ(); break; + case ID_Step: hmiStep(); break; + case ID_MoveX: hmiMoveX(); break; + case ID_MoveY: hmiMoveY(); break; + case ID_MoveZ: hmiMoveZ(); break; #if HAS_HOTEND - case Extruder: hmiMoveE(); break; - case ETemp: hmiETemp(); break; + case ID_Extruder: hmiMoveE(); break; + case ID_ETemp: hmiETemp(); break; #endif #if ANY(HAS_BED_PROBE, BABYSTEPPING) - case Homeoffset: hmiZoffset(); break; + case ID_HomeOffset: hmiZoffset(); break; #endif #if HAS_HEATED_BED - case BedTemp: hmiBedTemp(); break; + case ID_BedTemp: hmiBedTemp(); break; #endif #if HAS_PREHEAT && HAS_FAN - case FanSpeed: hmiFanSpeed(); break; + case ID_FanSpeed: hmiFanSpeed(); break; #endif - case PrintSpeed: hmiPrintSpeed(); break; - case MaxSpeed_value: hmiMaxFeedspeedXYZE(); break; - case MaxAcceleration_value: hmiMaxAccelerationXYZE(); break; + case ID_PrintSpeed: hmiPrintSpeed(); break; + case ID_MaxSpeedValue: hmiMaxFeedspeedXYZE(); break; + case ID_MaxAccelerationValue: hmiMaxAccelerationXYZE(); break; #if HAS_CLASSIC_JERK - case MaxJerk_value: hmiMaxJerkXYZE(); break; + case ID_MaxJerkValue: hmiMaxJerkXYZE(); break; #endif - case Step_value: hmiStepXYZE(); break; + case ID_StepValue: hmiStepXYZE(); break; default: break; } } @@ -4259,27 +4278,27 @@ void dwinHandleScreen() { void dwinHomingDone() { hmiFlag.home_flag = false; dwin_zoffset = TERN0(HAS_BED_PROBE, probe.offset.z); - if (checkkey == Last_Prepare) { - checkkey = Prepare; + if (checkkey == ID_LastPrepare) { + checkkey = ID_Prepare; select_prepare.now = PREPARE_CASE_HOME; index_prepare = MROWS; drawPrepareMenu(); } - else if (checkkey == Back_Main) { - hmiValues.print_speed = feedrate_percentage = 100; + else if (checkkey == ID_BackMain) { + hmiValues.printSpeed = feedrate_percentage = 100; planner.finish_and_disable(); gotoMainMenu(); } } void dwinLevelingDone() { - if (checkkey == Leveling) gotoMainMenu(); + if (checkkey == ID_Leveling) gotoMainMenu(); } void dwinStatusChanged(const char * const cstr/*=nullptr*/) { - dwinDrawRectangle(1, Color_Bg_Blue, 0, STATUS_Y, DWIN_WIDTH, STATUS_Y + 24); + dwinDrawRectangle(1, COLOR_BG_BLUE, 0, STATUS_Y, DWIN_WIDTH, STATUS_Y + 24); const int8_t x = _MAX(0U, DWIN_WIDTH - strlen(cstr) * MENU_CHR_W) / 2; - dwinDrawString(false, font8x16, Color_White, Color_Bg_Blue, x, STATUS_Y + 3, cstr); + dwinDrawString(false, font8x16, COLOR_WHITE, COLOR_BG_BLUE, x, STATUS_Y + 3, cstr); dwinUpdateLCD(); } diff --git a/Marlin/src/lcd/e3v2/creality/dwin.h b/Marlin/src/lcd/e3v2/creality/dwin.h index 0e2d42eee9..17a7a965ee 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.h +++ b/Marlin/src/lcd/e3v2/creality/dwin.h @@ -34,69 +34,56 @@ enum processID : uint8_t { // Process ID - MainMenu, - SelectFile, - Prepare, - Control, - Leveling, - PrintProcess, - AxisMove, - TemperatureID, - Motion, - Info, - Tune, + ID_MainMenu, + ID_SelectFile, + ID_Prepare, + ID_Control, + ID_Leveling, + ID_PrintProcess, + ID_AxisMove, + ID_TemperatureID, + ID_Motion, + ID_Info, + ID_Tune, #if HAS_PREHEAT - PLAPreheat, + ID_PLAPreheat, #if PREHEAT_COUNT > 1 - ABSPreheat, + ID_ABSPreheat, #endif #endif - MaxSpeed, - MaxSpeed_value, - MaxAcceleration, - MaxAcceleration_value, - MaxJerk, - MaxJerk_value, - Step, - Step_value, - HomeOff, - HomeOffX, - HomeOffY, - HomeOffZ, + ID_MaxSpeed, ID_MaxSpeedValue, + ID_MaxAcceleration, ID_MaxAccelerationValue, + ID_MaxJerk, ID_MaxJerkValue, + ID_Step, ID_StepValue, + ID_HomeOff, ID_HomeOffX, ID_HomeOffY, ID_HomeOffZ, // Last Process ID - Last_Prepare, + ID_LastPrepare, // Advance Settings - AdvSet, - ProbeOff, - ProbeOffX, - ProbeOffY, + ID_AdvSet, + ID_ProbeOff, ID_ProbeOffX, ID_ProbeOffY, // Back Process ID - Back_Main, - Back_Print, + ID_BackMain, ID_BackPrint, // Date variable ID - Move_X, - Move_Y, - Move_Z, + ID_MoveX, ID_MoveY, ID_MoveZ, #if HAS_HOTEND - Extruder, - ETemp, + ID_Extruder, + ID_ETemp, #endif - Homeoffset, + ID_HomeOffset, #if HAS_HEATED_BED - BedTemp, + ID_BedTemp, #endif #if HAS_FAN - FanSpeed, + ID_FanSpeed, #endif - PrintSpeed, + ID_PrintSpeed, // Window ID - Print_window, - Popup_Window + ID_PrintWindow, ID_PopupWindow }; extern uint8_t checkkey; @@ -107,32 +94,54 @@ extern millis_t dwin_heat_time; typedef struct { #if HAS_HOTEND - celsius_t E_Temp = 0; + celsius_t tempE = 0; #endif #if HAS_HEATED_BED - celsius_t Bed_Temp = 0; + celsius_t tempBed = 0; #endif #if HAS_FAN - int16_t Fan_speed = 0; + int16_t fanSpeed = 0; #endif - int16_t print_speed = 100; - float Max_Feedspeed = 0; - float Max_Acceleration = 0; - float Max_Jerk_scaled = 0; - float Max_Step_scaled = 0; - float Move_X_scaled = 0; - float Move_Y_scaled = 0; - float Move_Z_scaled = 0; - #if HAS_HOTEND - float Move_E_scaled = 0; - #endif - float offset_value = 0; - int8_t show_mode = 0; // -1: Temperature control 0: Printing temperature - float Home_OffX_scaled = 0; - float Home_OffY_scaled = 0; - float Home_OffZ_scaled = 0; - float Probe_OffX_scaled = 0; - float Probe_OffY_scaled = 0; + int16_t printSpeed = 100; + float maxFeedSpeed = 0; + float maxAcceleration = 0; + float maxJerkScaled = 0; + float maxStepScaled = 0; + float offset_value = 0; + int8_t show_mode = 0; // -1: Temperature control 0: Printing temperature + struct { + #if HAS_X_AXIS + float x = 0; + #endif + #if HAS_Y_AXIS + float y = 0; + #endif + #if HAS_Z_AXIS + float z = 0; + #endif + #if HAS_HOTEND + float e = 0; + #endif + } moveScaled; + struct { + #if HAS_X_AXIS + float x = 0; + #endif + #if HAS_Y_AXIS + float y = 0; + #endif + #if HAS_Z_AXIS + float z = 0; + #endif + } homeOffsScaled; + struct { + #if HAS_X_AXIS + float x = 0; + #endif + #if HAS_Y_AXIS + float y = 0; + #endif + } probeOffsScaled; } hmi_value_t; #define DWIN_CHINESE 123 @@ -198,19 +207,13 @@ void hmiMaxJerkXYZE(); void hmiStepXYZE(); void hmiSetLanguageCache(); -void update_variable(); -void dwinDrawSigned_Float(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, long value); +void updateVariable(); +void dwinDrawSignedFloat(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, long value); // SD Card void hmiSDCardInit(); void hmiSDCardUpdate(); -// Main Process -void Icon_print(bool value); -void Icon_control(bool value); -void Icon_temperature(bool value); -void Icon_leveling(bool value); - // Other void drawStatusArea(const bool with_update); // Status Area void hmiStartFrame(const bool with_update); // Prepare the menu view diff --git a/Marlin/src/lcd/e3v2/creality/dwin_lcd.cpp b/Marlin/src/lcd/e3v2/creality/dwin_lcd.cpp index 7a0587df43..649e1b4771 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin_lcd.cpp +++ b/Marlin/src/lcd/e3v2/creality/dwin_lcd.cpp @@ -47,7 +47,7 @@ void dwinStartup() { if (dwinHandshake()) DEBUG_ECHOLNPGM("ok."); else DEBUG_ECHOLNPGM("error."); dwinFrameSetDir(1); #if DISABLED(SHOW_BOOTSCREEN) - dwinFrameClear(Color_Bg_Black); // MarlinUI handles the bootscreen so just clear here + dwinFrameClear(COLOR_BG_BLACK); // MarlinUI handles the bootscreen so just clear here #endif dwinJPGShowAndCache(3); dwinUpdateLCD(); diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 22ff4b8a00..7139f3cdf9 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -169,10 +169,10 @@ enum SelectItem : uint8_t { PRINT_COUNT }; -uint8_t active_menu = MainMenu, last_menu = MainMenu; +uint8_t active_menu = ID_MainMenu, last_menu = ID_MainMenu; uint8_t selection = 0, last_selection = 0; uint8_t scrollpos = 0; -uint8_t process = Main, last_process = Main; +uint8_t process = Proc_Main, last_process = Proc_Main; PopupID popup, last_popup; void (*funcpointer)() = nullptr; @@ -265,14 +265,14 @@ private: #if ENABLED(AUTO_BED_LEVELING_UBL) uint8_t tilt_grid = 1; - void manual_value_update(bool undefined=false) { + void manualValueUpdate(bool undefined=false) { gcode.process_subcommands_now( TS(F("M421I"), mesh_x, 'J', mesh_y, 'Z', p_float_t(current_position.z, 3), undefined ? "N" : "") ); planner.synchronize(); } - bool create_plane_from_mesh() { + bool createPlaneFromMesh() { struct linear_fit_data lsf_results; incremental_LSF_reset(&lsf_results); GRID_LOOP(x, y) { @@ -312,7 +312,7 @@ private: #else - void manual_value_update() { + void manualValueUpdate() { gcode.process_subcommands_now( TS(F("G29I"), mesh_x, 'J', mesh_y, 'Z', p_float_t(current_position.z, 3)) ); @@ -329,7 +329,7 @@ private: planner.synchronize(); } else { - jyersDWIN.popupHandler(MoveWait); + jyersDWIN.popupHandler(Popup_MoveWait); gcode.process_subcommands_now(TS(F("G0F300Z"), p_float_t(current_position.z, 3))); gcode.process_subcommands_now(TS(F("G42 F4000 I"), mesh_x, 'J', mesh_y)); planner.synchronize(); @@ -340,7 +340,7 @@ private: } } - float get_max_value() { + float getMaxValue() { float max = __FLT_MIN__; GRID_LOOP(x, y) { if (!isnan(bedlevel.z_values[x][y]) && bedlevel.z_values[x][y] > max) @@ -349,7 +349,7 @@ private: return max; } - float get_min_value() { + float getMinValue() { float min = __FLT_MAX__; GRID_LOOP(x, y) { if (!isnan(bedlevel.z_values[x][y]) && bedlevel.z_values[x][y] < min) @@ -363,16 +363,16 @@ private: const uint16_t total_width_px = DWIN_WIDTH - padding_x - padding_x, cell_width_px = total_width_px / (GRID_MAX_POINTS_X), cell_height_px = total_width_px / (GRID_MAX_POINTS_Y); - const float v_max = abs(get_max_value()), v_min = abs(get_min_value()), range = _MAX(v_min, v_max); + const float v_max = abs(getMaxValue()), v_min = abs(getMinValue()), range = _MAX(v_min, v_max); // Clear background from previous selection and select new square - dwinDrawRectangle(1, Color_Bg_Black, _MAX(0, padding_x - gridline_width), _MAX(0, padding_y_top - gridline_width), padding_x + total_width_px, padding_y_top + total_width_px); + dwinDrawRectangle(1, COLOR_BG_BLACK, _MAX(0, padding_x - gridline_width), _MAX(0, padding_y_top - gridline_width), padding_x + total_width_px, padding_y_top + total_width_px); if (selected >= 0) { const auto selected_y = selected / (GRID_MAX_POINTS_X); const auto selected_x = selected - (GRID_MAX_POINTS_X) * selected_y; const auto start_y_px = padding_y_top + selected_y * cell_height_px; const auto start_x_px = padding_x + selected_x * cell_width_px; - dwinDrawRectangle(1, Color_White, _MAX(0, start_x_px - gridline_width), _MAX(0, start_y_px - gridline_width), start_x_px + cell_width_px, start_y_px + cell_height_px); + dwinDrawRectangle(1, COLOR_WHITE, _MAX(0, start_x_px - gridline_width), _MAX(0, start_y_px - gridline_width), start_x_px + cell_width_px, start_y_px + cell_height_px); } // Draw value square grid @@ -382,7 +382,7 @@ private: const auto start_y_px = padding_y_top + (GRID_MAX_POINTS_Y - y - 1) * cell_height_px; const auto end_y_px = start_y_px + cell_height_px - 1 - gridline_width; dwinDrawRectangle(1, // RGB565 colors: http://www.barth-dev.de/online/rgb565-color-picker/ - isnan(bedlevel.z_values[x][y]) ? Color_Grey : ( // gray if undefined + isnan(bedlevel.z_values[x][y]) ? COLOR_GREY : ( // gray if undefined (bedlevel.z_values[x][y] < 0 ? (uint16_t)round(0x1F * -bedlevel.z_values[x][y] / (!viewer_asymmetric_range ? range : v_min)) << 11 : // red if mesh point value is negative (uint16_t)round(0x3F * bedlevel.z_values[x][y] / (!viewer_asymmetric_range ? range : v_max)) << 5) | // green if mesh point value is positive @@ -397,7 +397,7 @@ private: if (viewer_print_value) { int8_t offset_x, offset_y = cell_height_px / 2 - 6; if (isnan(bedlevel.z_values[x][y])) { // undefined - dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + cell_width_px / 2 - 5, start_y_px + offset_y, F("X")); + dwinDrawString(false, font6x12, COLOR_WHITE, COLOR_BG_BLUE, start_x_px + cell_width_px / 2 - 5, start_y_px + offset_y, F("X")); } else { // has value MString<12> msg; @@ -407,8 +407,8 @@ private: msg.setf(F("%02i"), uint16_t(abs(bedlevel.z_values[x][y] - int16_t(bedlevel.z_values[x][y])) * 100)); offset_x = cell_width_px / 2 - 3 * msg.length() - 2; if (!(GRID_MAX_POINTS_X < 10)) - dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px - 2 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, F(".")); - dwinDrawString(false, font6x12, Color_White, Color_Bg_Blue, start_x_px + 1 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, msg); + dwinDrawString(false, font6x12, COLOR_WHITE, COLOR_BG_BLUE, start_x_px - 2 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, F(".")); + dwinDrawString(false, font6x12, COLOR_WHITE, COLOR_BG_BLUE, start_x_px + 1 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, msg); } safe_delay(10); LCD_SERIAL.flushTX(); @@ -418,8 +418,8 @@ private: void setMeshViewerStatus() { // TODO: draw gradient with values as a legend instead float v1, v2, - v_min = abs(get_min_value()), - v_max = abs(get_max_value()); + v_min = abs(getMinValue()), + v_max = abs(getMaxValue()); if (viewer_asymmetric_range) { if (v_min > 3e+10F) v_min = 0.0000001; if (v_max > 3e+10F) v_max = 0.0000001; @@ -455,67 +455,67 @@ constexpr const char * const JyersDWIN::preheat_modes[3]; // 2=Menu area // 1=Title bar void JyersDWIN::clearScreen(const uint8_t e/*=3*/) { - if (e == 1 || e == 3 || e == 4) dwinDrawRectangle(1, getColor(eeprom_settings.menu_top_bg, Color_Bg_Blue, false), 0, 0, DWIN_WIDTH, TITLE_HEIGHT); // Clear Title Bar - if (e == 2 || e == 3) dwinDrawRectangle(1, Color_Bg_Black, 0, 31, DWIN_WIDTH, STATUS_Y); // Clear Menu Area - if (e == 4) dwinDrawRectangle(1, Color_Bg_Black, 0, 31, DWIN_WIDTH, DWIN_HEIGHT); // Clear Popup Area + if (e == 1 || e == 3 || e == 4) dwinDrawRectangle(1, getColor(eeprom_settings.menu_top_bg, COLOR_BG_BLUE, false), 0, 0, DWIN_WIDTH, TITLE_HEIGHT); // Clear Title Bar + if (e == 2 || e == 3) dwinDrawRectangle(1, COLOR_BG_BLACK, 0, 31, DWIN_WIDTH, STATUS_Y); // Clear Menu Area + if (e == 4) dwinDrawRectangle(1, COLOR_BG_BLACK, 0, 31, DWIN_WIDTH, DWIN_HEIGHT); // Clear Popup Area } void JyersDWIN::drawFloat(const_float_t value, const uint8_t row, const bool selected/*=false*/, const uint8_t minunit/*=10*/) { const uint8_t digits = (uint8_t)floor(log10(abs(value))) + log10(minunit) + (minunit > 1); - const uint16_t bColor = selected ? Select_Color : Color_Bg_Black; + const uint16_t bColor = selected ? COLOR_SELECT : COLOR_BG_BLACK; const uint16_t xpos = 240 - (digits * 8); - dwinDrawRectangle(1, Color_Bg_Black, 194, MBASE(row), 234 - (digits * 8), MBASE(row) + 16); + dwinDrawRectangle(1, COLOR_BG_BLACK, 194, MBASE(row), 234 - (digits * 8), MBASE(row) + 16); if (isnan(value)) - dwinDrawString(true, DWIN_FONT_MENU, Color_White, bColor, xpos - 8, MBASE(row), F(" NaN")); + dwinDrawString(true, DWIN_FONT_MENU, COLOR_WHITE, bColor, xpos - 8, MBASE(row), F(" NaN")); else { - dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, Color_White, bColor, digits - log10(minunit) + 1, log10(minunit), xpos, MBASE(row), (value < 0 ? -value : value)); - dwinDrawString(true, DWIN_FONT_MENU, Color_White, bColor, xpos - 8, MBASE(row), value < 0 ? F("-") : F(" ")); + dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, COLOR_WHITE, bColor, digits - log10(minunit) + 1, log10(minunit), xpos, MBASE(row), (value < 0 ? -value : value)); + dwinDrawString(true, DWIN_FONT_MENU, COLOR_WHITE, bColor, xpos - 8, MBASE(row), value < 0 ? F("-") : F(" ")); } } void JyersDWIN::drawOption(const uint8_t value, const char * const * options, const uint8_t row, const bool selected/*=false*/, const bool color/*=false*/) { - const uint16_t bColor = selected ? Select_Color : Color_Bg_Black, - tColor = color ? getColor(value, Color_White, false) : Color_White; + const uint16_t bColor = selected ? COLOR_SELECT : COLOR_BG_BLACK, + tColor = color ? getColor(value, COLOR_WHITE, false) : COLOR_WHITE; dwinDrawRectangle(1, bColor, 202, MBASE(row) + 14, 258, MBASE(row) - 2); dwinDrawString(false, DWIN_FONT_MENU, tColor, bColor, 202, MBASE(row) - 1, options[value]); } uint16_t JyersDWIN::getColor(const uint8_t color, const uint16_t original, const bool light/*=false*/) { switch (color) { - case White: return light ? Color_Light_White : Color_White; - case Green: return light ? Color_Light_Green : Color_Green; - case Cyan: return light ? Color_Light_Cyan : Color_Cyan; - case Blue: return light ? Color_Light_Blue : Color_Blue; - case Magenta: return light ? Color_Light_Magenta : Color_Magenta; - case Red: return light ? Color_Light_Red : Color_Red; - case Orange: return light ? Color_Light_Orange : Color_Orange; - case Yellow: return light ? Color_Light_Yellow : Color_Yellow; - case Brown: return light ? Color_Light_Brown : Color_Brown; - case Black: return Color_Black; + case White: return light ? COLOR_LIGHT_WHITE : COLOR_WHITE; + case Green: return light ? COLOR_LIGHT_GREEN : COLOR_GREEN; + case Cyan: return light ? COLOR_LIGHT_CYAN : COLOR_CYAN; + case Blue: return light ? COLOR_LIGHT_BLUE : COLOR_BLUE; + case Magenta: return light ? COLOR_LIGHT_MAGENTA : COLOR_MAGENTA; + case Red: return light ? COLOR_LIGHT_RED : COLOR_RED; + case Orange: return light ? COLOR_LIGHT_ORANGE : COLOR_ORANGE; + case Yellow: return light ? COLOR_LIGHT_YELLOW : COLOR_YELLOW; + case Brown: return light ? COLOR_LIGHT_BROWN : COLOR_BROWN; + case Black: return COLOR_BLACK; case Default: return original; } - return Color_White; + return COLOR_WHITE; } void JyersDWIN::drawTitle(const char * const ctitle) { - dwinDrawString(false, DWIN_FONT_HEAD, getColor(eeprom_settings.menu_top_txt, Color_White, false), Color_Bg_Blue, (DWIN_WIDTH - strlen(ctitle) * STAT_CHR_W) / 2, 5, ctitle); + dwinDrawString(false, DWIN_FONT_HEAD, getColor(eeprom_settings.menu_top_txt, COLOR_WHITE, false), COLOR_BG_BLUE, (DWIN_WIDTH - strlen(ctitle) * STAT_CHR_W) / 2, 5, ctitle); } void JyersDWIN::drawTitle(FSTR_P const ftitle) { - dwinDrawString(false, DWIN_FONT_HEAD, getColor(eeprom_settings.menu_top_txt, Color_White, false), Color_Bg_Blue, (DWIN_WIDTH - strlen_P(FTOP(ftitle)) * STAT_CHR_W) / 2, 5, ftitle); + dwinDrawString(false, DWIN_FONT_HEAD, getColor(eeprom_settings.menu_top_txt, COLOR_WHITE, false), COLOR_BG_BLUE, (DWIN_WIDTH - strlen_P(FTOP(ftitle)) * STAT_CHR_W) / 2, 5, ftitle); } void _decorateMenuItem(uint8_t row, uint8_t icon, bool more) { if (icon) dwinIconShow(ICON, icon, 26, MBASE(row) - 3); // Draw Menu Icon if (more) dwinIconShow(ICON, ICON_More, 226, MBASE(row) - 3); // Draw More Arrow - dwinDrawLine(jyersDWIN.getColor(jyersDWIN.eeprom_settings.menu_split_line, Line_Color, true), 16, MBASE(row) + 33, 256, MBASE(row) + 33); // Draw Menu Line + dwinDrawLine(jyersDWIN.getColor(jyersDWIN.eeprom_settings.menu_split_line, COLOR_LINE, true), 16, MBASE(row) + 33, 256, MBASE(row) + 33); // Draw Menu Line } void JyersDWIN::drawMenuItem(const uint8_t row, const uint8_t icon/*=0*/, const char * const label1, const char * const label2, const bool more/*=false*/, const bool centered/*=false*/) { const uint8_t label_offset_y = label2 ? MENU_CHR_H * 3 / 5 : 0, label1_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (label1 ? strlen(label1) : 0) * MENU_CHR_W) / 2), label2_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (label2 ? strlen(label2) : 0) * MENU_CHR_W) / 2); - if (label1) dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, label1_offset_x, MBASE(row) - 1 - label_offset_y, label1); // Draw Label - if (label2) dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, label2_offset_x, MBASE(row) - 1 + label_offset_y, label2); // Draw Label + if (label1) dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLACK, label1_offset_x, MBASE(row) - 1 - label_offset_y, label1); // Draw Label + if (label2) dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLACK, label2_offset_x, MBASE(row) - 1 + label_offset_y, label2); // Draw Label _decorateMenuItem(row, icon, more); } @@ -523,8 +523,8 @@ void JyersDWIN::drawMenuItem(const uint8_t row, const uint8_t icon/*=0*/, FSTR_P const uint8_t label_offset_y = flabel2 ? MENU_CHR_H * 3 / 5 : 0, label1_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (flabel1 ? strlen_P(FTOP(flabel1)) : 0) * MENU_CHR_W) / 2), label2_offset_x = !centered ? LBLX : LBLX * 4/5 + _MAX(LBLX * 1U/5, (DWIN_WIDTH - LBLX - (flabel2 ? strlen_P(FTOP(flabel2)) : 0) * MENU_CHR_W) / 2); - if (flabel1) dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, label1_offset_x, MBASE(row) - 1 - label_offset_y, flabel1); // Draw Label - if (flabel2) dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, label2_offset_x, MBASE(row) - 1 + label_offset_y, flabel2); // Draw Label + if (flabel1) dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLACK, label1_offset_x, MBASE(row) - 1 - label_offset_y, flabel1); // Draw Label + if (flabel2) dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLACK, label2_offset_x, MBASE(row) - 1 + label_offset_y, flabel2); // Draw Label _decorateMenuItem(row, icon, more); } @@ -532,15 +532,15 @@ void JyersDWIN::drawCheckbox(const uint8_t row, const bool value) { #if ENABLED(DWIN_CREALITY_LCD_CUSTOM_ICONS) // Draw appropriate checkbox icon dwinIconShow(ICON, (value ? ICON_Checkbox_T : ICON_Checkbox_F), 226, MBASE(row) - 3); #else // Draw a basic checkbox using rectangles and lines - dwinDrawRectangle(1, Color_Bg_Black, 226, MBASE(row) - 3, 226 + 20, MBASE(row) - 3 + 20); - dwinDrawRectangle(0, Color_White, 226, MBASE(row) - 3, 226 + 20, MBASE(row) - 3 + 20); + dwinDrawRectangle(1, COLOR_BG_BLACK, 226, MBASE(row) - 3, 226 + 20, MBASE(row) - 3 + 20); + dwinDrawRectangle(0, COLOR_WHITE, 226, MBASE(row) - 3, 226 + 20, MBASE(row) - 3 + 20); if (value) { - dwinDrawLine(Check_Color, 227, MBASE(row) - 3 + 11, 226 + 8, MBASE(row) - 3 + 17); - dwinDrawLine(Check_Color, 227 + 8, MBASE(row) - 3 + 17, 226 + 19, MBASE(row) - 3 + 1); - dwinDrawLine(Check_Color, 227, MBASE(row) - 3 + 12, 226 + 8, MBASE(row) - 3 + 18); - dwinDrawLine(Check_Color, 227 + 8, MBASE(row) - 3 + 18, 226 + 19, MBASE(row) - 3 + 2); - dwinDrawLine(Check_Color, 227, MBASE(row) - 3 + 13, 226 + 8, MBASE(row) - 3 + 19); - dwinDrawLine(Check_Color, 227 + 8, MBASE(row) - 3 + 19, 226 + 19, MBASE(row) - 3 + 3); + dwinDrawLine(COLOR_CHECKBOX, 227, MBASE(row) - 3 + 11, 226 + 8, MBASE(row) - 3 + 17); + dwinDrawLine(COLOR_CHECKBOX, 227 + 8, MBASE(row) - 3 + 17, 226 + 19, MBASE(row) - 3 + 1); + dwinDrawLine(COLOR_CHECKBOX, 227, MBASE(row) - 3 + 12, 226 + 8, MBASE(row) - 3 + 18); + dwinDrawLine(COLOR_CHECKBOX, 227 + 8, MBASE(row) - 3 + 18, 226 + 19, MBASE(row) - 3 + 2); + dwinDrawLine(COLOR_CHECKBOX, 227, MBASE(row) - 3 + 13, 226 + 8, MBASE(row) - 3 + 19); + dwinDrawLine(COLOR_CHECKBOX, 227 + 8, MBASE(row) - 3 + 19, 226 + 19, MBASE(row) - 3 + 3); } #endif } @@ -548,27 +548,27 @@ void JyersDWIN::drawCheckbox(const uint8_t row, const bool value) { void JyersDWIN::drawMenu(const uint8_t menu, const uint8_t select/*=0*/, const uint8_t scroll/*=0*/) { if (active_menu != menu) { last_menu = active_menu; - if (process == Menu) last_selection = selection; + if (process == Proc_Menu) last_selection = selection; } selection = _MIN(select, getMenuSize(menu)); scrollpos = scroll; if (selection - scrollpos > MROWS) scrollpos = selection - MROWS; // i.e., NOLESS(scrollpos, selection - MROWS); - process = Menu; + process = Proc_Menu; active_menu = menu; clearScreen(); drawTitle(getMenuTitle(menu)); for (uint8_t i = 0; i < TROWS; ++i) menuItemHandler(menu, i + scrollpos); - dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, COLOR_RECTANGLE), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); } void JyersDWIN::redrawMenu(const bool lastproc/*=true*/, const bool lastsel/*=false*/, const bool lastmenu/*=false*/) { switch (lastproc ? last_process : process) { - case Menu: + case Proc_Menu: drawMenu(lastmenu ? last_menu : active_menu, lastsel ? last_selection : selection, lastmenu ? 0 : scrollpos); break; - case Main: drawMainMenu(lastsel ? last_selection : selection); break; - case Print: drawPrintScreen(); break; - case File: drawSDList(); break; + case Proc_Main: drawMainMenu(lastsel ? last_selection : selection); break; + case Proc_Print: drawPrintScreen(); break; + case Proc_File: drawSDList(); break; default: break; } } @@ -585,60 +585,60 @@ void JyersDWIN::redrawScreen() { void JyersDWIN::mainMenuIcons() { if (selection == 0) { dwinIconShow(ICON, ICON_Print_1, 17, 130); - dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 17, 130, 126, 229); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 52, 200, F("Print")); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 17, 130, 126, 229); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 52, 200, F("Print")); } else { dwinIconShow(ICON, ICON_Print_0, 17, 130); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 52, 200, F("Print")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 52, 200, F("Print")); } if (selection == 1) { dwinIconShow(ICON, ICON_Prepare_1, 145, 130); - dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 145, 130, 254, 229); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 170, 200, F("Prepare")); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 145, 130, 254, 229); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 170, 200, F("Prepare")); } else { dwinIconShow(ICON, ICON_Prepare_0, 145, 130); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 170, 200, F("Prepare")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 170, 200, F("Prepare")); } if (selection == 2) { dwinIconShow(ICON, ICON_Control_1, 17, 246); - dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 17, 246, 126, 345); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 43, 317, F("Control")); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 17, 246, 126, 345); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 43, 317, F("Control")); } else { dwinIconShow(ICON, ICON_Control_0, 17, 246); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 43, 317, F("Control")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 43, 317, F("Control")); } #if HAS_ABL_OR_UBL if (selection == 3) { dwinIconShow(ICON, ICON_Leveling_1, 145, 246); - dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 145, 246, 254, 345); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 179, 317, F("Level")); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 145, 246, 254, 345); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 179, 317, F("Level")); } else { dwinIconShow(ICON, ICON_Leveling_0, 145, 246); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 179, 317, F("Level")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 179, 317, F("Level")); } #else if (selection == 3) { dwinIconShow(ICON, ICON_Info_1, 145, 246); - dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 145, 246, 254, 345); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 181, 317, F("Info")); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 145, 246, 254, 345); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 181, 317, F("Info")); } else { dwinIconShow(ICON, ICON_Info_0, 145, 246); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 181, 317, F("Info")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 181, 317, F("Info")); } #endif } void JyersDWIN::drawMainMenu(const uint8_t select/*=0*/) { - process = Main; - active_menu = MainMenu; + process = Proc_Main; + active_menu = ID_MainMenu; selection = select; clearScreen(); - drawTitle(getMenuTitle(MainMenu)); + drawTitle(getMenuTitle(ID_MainMenu)); SERIAL_ECHOPGM("\nDWIN handshake "); dwinIconShow(ICON, ICON_LOGO, 71, 72); mainMenuIcons(); @@ -647,57 +647,57 @@ void JyersDWIN::drawMainMenu(const uint8_t select/*=0*/) { void JyersDWIN::printScreenIcons() { if (selection == 0) { dwinIconShow(ICON, ICON_Setup_1, 8, 252); - dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 8, 252, 87, 351); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 30, 322, F("Tune")); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 8, 252, 87, 351); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 30, 322, F("Tune")); } else { dwinIconShow(ICON, ICON_Setup_0, 8, 252); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 30, 322, F("Tune")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 30, 322, F("Tune")); } if (selection == 2) { dwinIconShow(ICON, ICON_Stop_1, 184, 252); - dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 184, 252, 263, 351); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 205, 322, F("Stop")); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 184, 252, 263, 351); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 205, 322, F("Stop")); } else { dwinIconShow(ICON, ICON_Stop_0, 184, 252); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 205, 322, F("Stop")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 205, 322, F("Stop")); } if (paused) { if (selection == 1) { dwinIconShow(ICON, ICON_Continue_1, 96, 252); - dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 96, 252, 175, 351); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 114, 322, F("Print")); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 96, 252, 175, 351); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 114, 322, F("Print")); } else { dwinIconShow(ICON, ICON_Continue_0, 96, 252); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 114, 322, F("Print")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 114, 322, F("Print")); } } else { if (selection == 1) { dwinIconShow(ICON, ICON_Pause_1, 96, 252); - dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 96, 252, 175, 351); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 114, 322, F("Pause")); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 96, 252, 175, 351); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 114, 322, F("Pause")); } else { dwinIconShow(ICON, ICON_Pause_0, 96, 252); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Blue, 114, 322, F("Pause")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 114, 322, F("Pause")); } } } void JyersDWIN::drawPrintScreen() { - process = Print; + process = Proc_Print; selection = 0; clearScreen(); - dwinDrawRectangle(1, Color_Bg_Black, 8, 352, DWIN_WIDTH - 8, 376); + dwinDrawRectangle(1, COLOR_BG_BLACK, 8, 352, DWIN_WIDTH - 8, 376); drawTitle("Printing..."); printScreenIcons(); dwinIconShow(ICON, ICON_PrintTime, 14, 171); dwinIconShow(ICON, ICON_RemainTime, 147, 169); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, 41, 163, F("Elapsed")); - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, 176, 163, F("Remaining")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLACK, 41, 163, F("Elapsed")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLACK, 176, 163, F("Remaining")); updateStatusBar(true); drawPrintProgressBar(); drawPrintProgressElapsed(); @@ -709,60 +709,60 @@ void JyersDWIN::drawPrintFilename(const bool reset/*=false*/) { typedef TextScroller<30> Scroller; static Scroller scroller; if (reset) scroller.reset(); - if (process == Print) { + if (process == Proc_Print) { Scroller::Buffer buf; size_t outlen = 0; const char* outstr = scroller.scroll(outlen, buf, filename); - dwinDrawRectangle(1, Color_Bg_Black, 8, 50, DWIN_WIDTH - 8, 80); + dwinDrawRectangle(1, COLOR_BG_BLACK, 8, 50, DWIN_WIDTH - 8, 80); const int8_t npos = (DWIN_WIDTH - outlen * MENU_CHR_W) / 2; - dwinDrawString(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, npos, 60, outstr); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLACK, npos, 60, outstr); } } void JyersDWIN::drawPrintProgressBar() { uint8_t printpercent = sdprint ? card.percentDone() : (ui._get_progress() / 100); dwinIconShow(ICON, ICON_Bar, 15, 93); - dwinDrawRectangle(1, BarFill_Color, 16 + printpercent * 240 / 100, 93, 256, 113); - dwinDrawIntValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.progress_percent, Percent_Color), Color_Bg_Black, 3, 109, 133, printpercent); - dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_percent, Percent_Color), Color_Bg_Black, 133, 133, F("%")); + dwinDrawRectangle(1, COLOR_BARFILL, 16 + printpercent * 240 / 100, 93, 256, 113); + dwinDrawIntValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.progress_percent, COLOR_PERCENT), COLOR_BG_BLACK, 3, 109, 133, printpercent); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_percent, COLOR_PERCENT), COLOR_BG_BLACK, 133, 133, F("%")); } #if ENABLED(SET_REMAINING_TIME) void JyersDWIN::drawPrintProgressRemain() { uint16_t remainingtime = ui.get_remaining_time(); - dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 176, 187, remainingtime / 3600); - dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 200, 187, (remainingtime % 3600) / 60); + dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, COLOR_WHITE), COLOR_BG_BLACK, 2, 176, 187, remainingtime / 3600); + dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, COLOR_WHITE), COLOR_BG_BLACK, 2, 200, 187, (remainingtime % 3600) / 60); if (eeprom_settings.time_format_textual) { - dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 192, 187, F("h")); - dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 216, 187, F("m")); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, COLOR_WHITE), COLOR_BG_BLACK, 192, 187, F("h")); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, COLOR_WHITE), COLOR_BG_BLACK, 216, 187, F("m")); } else - dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 192, 187, F(":")); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, COLOR_WHITE), COLOR_BG_BLACK, 192, 187, F(":")); } #endif void JyersDWIN::drawPrintProgressElapsed() { duration_t elapsed = print_job_timer.duration(); - dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 42, 187, elapsed.value / 3600); - dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 2, 66, 187, (elapsed.value % 3600) / 60); + dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, COLOR_WHITE), COLOR_BG_BLACK, 2, 42, 187, elapsed.value / 3600); + dwinDrawIntValue(true, true, 1, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, COLOR_WHITE), COLOR_BG_BLACK, 2, 66, 187, (elapsed.value % 3600) / 60); if (eeprom_settings.time_format_textual) { - dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 58, 187, F("h")); - dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 82, 187, F("m")); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, COLOR_WHITE), COLOR_BG_BLACK, 58, 187, F("h")); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, COLOR_WHITE), COLOR_BG_BLACK, 82, 187, F("m")); } else - dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, Color_White), Color_Bg_Black, 58, 187, F(":")); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.progress_time, COLOR_WHITE), COLOR_BG_BLACK, 58, 187, F(":")); } void JyersDWIN::drawPrintConfirm() { drawPrintScreen(); - process = Confirm; - popup = Complete; - dwinDrawRectangle(1, Color_Bg_Black, 8, 252, 263, 351); + process = Proc_Confirm; + popup = Popup_Complete; + dwinDrawRectangle(1, COLOR_BG_BLACK, 8, 252, 263, 351); dwinIconShow(ICON, ICON_Confirm_E, 87, 283); - dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 86, 282, 187, 321); - dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, Color_White), 85, 281, 188, 322); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 86, 282, 187, 321); + dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 85, 281, 188, 322); } void JyersDWIN::drawSDItem(const uint8_t item, const uint8_t row) { @@ -791,22 +791,22 @@ void JyersDWIN::drawSDList(const bool removed/*=false*/) { drawTitle("Select File"); selection = 0; scrollpos = 0; - process = File; + process = Proc_File; if (card.isMounted() && !removed) { for (uint8_t i = 0; i < _MIN(card.get_num_items() + 1, TROWS); ++i) drawSDItem(i, i); } else { drawMenuItem(0, ICON_Back, F("Back")); - dwinDrawRectangle(1, Color_Bg_Red, 10, MBASE(3) - 10, DWIN_WIDTH - 10, MBASE(4)); - dwinDrawString(false, font16x32, Color_Yellow, Color_Bg_Red, ((DWIN_WIDTH) - 8 * 16) / 2, MBASE(3), F("No Media")); + dwinDrawRectangle(1, COLOR_BG_RED, 10, MBASE(3) - 10, DWIN_WIDTH - 10, MBASE(4)); + dwinDrawString(false, font16x32, COLOR_YELLOW, COLOR_BG_RED, ((DWIN_WIDTH) - 8 * 16) / 2, MBASE(3), F("No Media")); } - dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(0) - 18, 14, MBASE(0) + 33); + dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, COLOR_RECTANGLE), 0, MBASE(0) - 18, 14, MBASE(0) + 33); } void JyersDWIN::drawStatusArea(const bool icons/*=false*/) { - if (icons) dwinDrawRectangle(1, Color_Bg_Black, 0, STATUS_Y, DWIN_WIDTH, DWIN_HEIGHT - 1); + if (icons) dwinDrawRectangle(1, COLOR_BG_BLACK, 0, STATUS_Y, DWIN_WIDTH, DWIN_HEIGHT - 1); #if HAS_HOTEND static float hotend = -1; @@ -815,26 +815,26 @@ void JyersDWIN::drawStatusArea(const bool icons/*=false*/) { hotend = -1; hotendtarget = -1; dwinIconShow(ICON, ICON_HotendTemp, 10, 383); - dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 25 + 3 * STAT_CHR_W + 5, 384, F("/")); + dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 25 + 3 * STAT_CHR_W + 5, 384, F("/")); } if (thermalManager.temp_hotend[0].celsius != hotend) { hotend = thermalManager.temp_hotend[0].celsius; - dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 28, 384, thermalManager.temp_hotend[0].celsius); - dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, Color_White), 25 + 3 * STAT_CHR_W + 5, 386); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 28, 384, thermalManager.temp_hotend[0].celsius); + dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, COLOR_WHITE), 25 + 3 * STAT_CHR_W + 5, 386); } if (thermalManager.temp_hotend[0].target != hotendtarget) { hotendtarget = thermalManager.temp_hotend[0].target; - dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 25 + 4 * STAT_CHR_W + 6, 384, thermalManager.temp_hotend[0].target); - dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, Color_White), 25 + 4 * STAT_CHR_W + 39, 386); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 25 + 4 * STAT_CHR_W + 6, 384, thermalManager.temp_hotend[0].target); + dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, COLOR_WHITE), 25 + 4 * STAT_CHR_W + 39, 386); } if (icons) { flow = -1; dwinIconShow(ICON, ICON_StepE, 112, 417); - dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 116 + 5 * STAT_CHR_W + 2, 417, F("%")); + dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 116 + 5 * STAT_CHR_W + 2, 417, F("%")); } if (planner.flow_percentage[0] != flow) { flow = planner.flow_percentage[0]; - dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 116 + 2 * STAT_CHR_W, 417, planner.flow_percentage[0]); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 116 + 2 * STAT_CHR_W, 417, planner.flow_percentage[0]); } #endif @@ -845,17 +845,17 @@ void JyersDWIN::drawStatusArea(const bool icons/*=false*/) { bed = -1; bedtarget = -1; dwinIconShow(ICON, ICON_BedTemp, 10, 416); - dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 25 + 3 * STAT_CHR_W + 5, 417, F("/")); + dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 25 + 3 * STAT_CHR_W + 5, 417, F("/")); } if (thermalManager.temp_bed.celsius != bed) { bed = thermalManager.temp_bed.celsius; - dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 28, 417, thermalManager.temp_bed.celsius); - dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, Color_White), 25 + 3 * STAT_CHR_W + 5, 419); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 28, 417, thermalManager.temp_bed.celsius); + dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, COLOR_WHITE), 25 + 3 * STAT_CHR_W + 5, 419); } if (thermalManager.temp_bed.target != bedtarget) { bedtarget = thermalManager.temp_bed.target; - dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 25 + 4 * STAT_CHR_W + 6, 417, thermalManager.temp_bed.target); - dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, Color_White), 25 + 4 * STAT_CHR_W + 39, 419); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 25 + 4 * STAT_CHR_W + 6, 417, thermalManager.temp_bed.target); + dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, COLOR_WHITE), 25 + 4 * STAT_CHR_W + 39, 419); } #endif @@ -867,7 +867,7 @@ void JyersDWIN::drawStatusArea(const bool icons/*=false*/) { } if (thermalManager.fan_speed[0] != fan) { fan = thermalManager.fan_speed[0]; - dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 195 + 2 * STAT_CHR_W, 384, thermalManager.fan_speed[0]); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 195 + 2 * STAT_CHR_W, 384, thermalManager.fan_speed[0]); } #endif @@ -880,8 +880,8 @@ void JyersDWIN::drawStatusArea(const bool icons/*=false*/) { } if (zoffsetvalue != offset) { offset = zoffsetvalue; - dwinDrawFloatValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 2, 2, 207, 417, (zoffsetvalue < 0 ? -zoffsetvalue : zoffsetvalue)); - dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 205, 419, zoffsetvalue < 0 ? F("-") : F(" ")); + dwinDrawFloatValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 2, 2, 207, 417, (zoffsetvalue < 0 ? -zoffsetvalue : zoffsetvalue)); + dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 205, 419, zoffsetvalue < 0 ? F("-") : F(" ")); } #endif @@ -889,11 +889,11 @@ void JyersDWIN::drawStatusArea(const bool icons/*=false*/) { if (icons) { feedrate = -1; dwinIconShow(ICON, ICON_Speed, 113, 383); - dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 116 + 5 * STAT_CHR_W + 2, 384, F("%")); + dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 116 + 5 * STAT_CHR_W + 2, 384, F("%")); } if (feedrate_percentage != feedrate) { feedrate = feedrate_percentage; - dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, Color_White), Color_Bg_Black, 3, 116 + 2 * STAT_CHR_W, 384, feedrate_percentage); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 116 + 2 * STAT_CHR_W, 384, feedrate_percentage); } static float x = -1, y = -1, z = -1; @@ -903,7 +903,7 @@ void JyersDWIN::drawStatusArea(const bool icons/*=false*/) { update_z = (current_position.z != z || axis_should_home(Z_AXIS) || update_z); if (icons) { x = y = z = -1; - dwinDrawLine(getColor(eeprom_settings.coordinates_split_line, Line_Color, true), 16, 450, 256, 450); + dwinDrawLine(getColor(eeprom_settings.coordinates_split_line, COLOR_LINE, true), 16, 450, 256, 450); dwinIconShow(ICON, ICON_MaxSpeedX, 10, 456); dwinIconShow(ICON, ICON_MaxSpeedY, 95, 456); dwinIconShow(ICON, ICON_MaxSpeedZ, 180, 456); @@ -911,60 +911,60 @@ void JyersDWIN::drawStatusArea(const bool icons/*=false*/) { if (update_x) { x = current_position.x; if ((update_x = axis_should_home(X_AXIS) && ui.get_blink())) - dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 35, 459, F(" -?- ")); + dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 35, 459, F(" -?- ")); else - dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 3, 1, 35, 459, current_position.x); + dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 1, 35, 459, current_position.x); } if (update_y) { y = current_position.y; if ((update_y = axis_should_home(Y_AXIS) && ui.get_blink())) - dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 120, 459, F(" -?- ")); + dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 120, 459, F(" -?- ")); else - dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 3, 1, 120, 459, current_position.y); + dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 1, 120, 459, current_position.y); } if (update_z) { z = current_position.z; if ((update_z = axis_should_home(Z_AXIS) && ui.get_blink())) - dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 205, 459, F(" -?- ")); + dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 205, 459, F(" -?- ")); else - dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, Color_White), Color_Bg_Black, 3, 2, 205, 459, current_position.z >= 0 ? current_position.z : 0); + dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 2, 205, 459, current_position.z >= 0 ? current_position.z : 0); } dwinUpdateLCD(); } void JyersDWIN::drawPopup(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, uint8_t mode, uint8_t icon/*=0*/) { - if (process != Confirm && process != Popup && process != Wait) last_process = process; - if ((process == Menu || process == Wait) && mode == Popup) last_selection = selection; + if (process != Proc_Confirm && process != Proc_Popup && process != Proc_Wait) last_process = process; + if ((process == Proc_Menu || process == Proc_Wait) && mode == Proc_Popup) last_selection = selection; process = mode; clearScreen(); - dwinDrawRectangle(0, Color_White, 13, 59, 259, 351); - dwinDrawRectangle(1, Color_Bg_Window, 14, 60, 258, 350); - const uint8_t ypos = (mode == Popup || mode == Confirm) ? 150 : 230; + dwinDrawRectangle(0, COLOR_WHITE, 13, 59, 259, 351); + dwinDrawRectangle(1, COLOR_BG_WINDOW, 14, 60, 258, 350); + const uint8_t ypos = (mode == Proc_Popup || mode == Proc_Confirm) ? 150 : 230; if (icon > 0) dwinIconShow(ICON, icon, 101, 105); - dwinDrawString(true, DWIN_FONT_MENU, Popup_Text_Color, Color_Bg_Window, (272 - 8 * strlen_P(FTOP(line1))) / 2, ypos, line1); - dwinDrawString(true, DWIN_FONT_MENU, Popup_Text_Color, Color_Bg_Window, (272 - 8 * strlen_P(FTOP(line2))) / 2, ypos + 30, line2); - dwinDrawString(true, DWIN_FONT_MENU, Popup_Text_Color, Color_Bg_Window, (272 - 8 * strlen_P(FTOP(line3))) / 2, ypos + 60, line3); - if (mode == Popup) { + dwinDrawString(true, DWIN_FONT_MENU, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * strlen_P(FTOP(line1))) / 2, ypos, line1); + dwinDrawString(true, DWIN_FONT_MENU, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * strlen_P(FTOP(line2))) / 2, ypos + 30, line2); + dwinDrawString(true, DWIN_FONT_MENU, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * strlen_P(FTOP(line3))) / 2, ypos + 60, line3); + if (mode == Proc_Popup) { selection = 0; - dwinDrawRectangle(1, Confirm_Color, 26, 280, 125, 317); - dwinDrawRectangle(1, Cancel_Color, 146, 280, 245, 317); - dwinDrawString(false, DWIN_FONT_STAT, Color_White, Color_Bg_Window, 39, 290, F("Confirm")); - dwinDrawString(false, DWIN_FONT_STAT, Color_White, Color_Bg_Window, 165, 290, F("Cancel")); + dwinDrawRectangle(1, COLOR_CONFIRM, 26, 280, 125, 317); + dwinDrawRectangle(1, COLOR_CANCEL, 146, 280, 245, 317); + dwinDrawString(false, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_WINDOW, 39, 290, F("Confirm")); + dwinDrawString(false, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_WINDOW, 165, 290, F("Cancel")); popupSelect(); } - else if (mode == Confirm) { - dwinDrawRectangle(1, Confirm_Color, 87, 280, 186, 317); - dwinDrawString(false, DWIN_FONT_STAT, Color_White, Color_Bg_Window, 96, 290, F("Continue")); + else if (mode == Proc_Confirm) { + dwinDrawRectangle(1, COLOR_CONFIRM, 87, 280, 186, 317); + dwinDrawString(false, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_WINDOW, 96, 290, F("Continue")); } } void MarlinUI::kill_screen(FSTR_P const error, FSTR_P const) { - jyersDWIN.drawPopup(F("Printer Kill Reason:"), error, F("Restart Required"), Wait, ICON_BLTouch); + jyersDWIN.drawPopup(F("Printer Kill Reason:"), error, F("Restart Required"), Proc_Wait, ICON_BLTouch); } void JyersDWIN::popupSelect() { - const uint16_t c1 = selection ? Color_Bg_Window : getColor(eeprom_settings.highlight_box, Color_White), - c2 = selection ? getColor(eeprom_settings.highlight_box, Color_White) : Color_Bg_Window; + const uint16_t c1 = selection ? COLOR_BG_WINDOW : getColor(eeprom_settings.highlight_box, COLOR_WHITE), + c2 = selection ? getColor(eeprom_settings.highlight_box, COLOR_WHITE) : COLOR_BG_WINDOW; dwinDrawRectangle(0, c1, 25, 279, 126, 318); dwinDrawRectangle(0, c1, 24, 278, 127, 319); dwinDrawRectangle(0, c2, 145, 279, 246, 318); @@ -986,15 +986,15 @@ void JyersDWIN::updateStatusBar(const bool refresh/*=false*/) { const char* dispmsg = scroller.scroll(len, buf, statusmsg, &new_msg); if (new_msg) { new_msg = false; - if (process == Print) { - dwinDrawRectangle(1, Color_Grey, 8, 214, DWIN_WIDTH - 8, 238); + if (process == Proc_Print) { + dwinDrawRectangle(1, COLOR_GREY, 8, 214, DWIN_WIDTH - 8, 238); const int8_t npos = (DWIN_WIDTH - len * MENU_CHR_W) / 2; - dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.status_bar_text, Color_White), Color_Bg_Black, npos, 219, dispmsg); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.status_bar_text, COLOR_WHITE), COLOR_BG_BLACK, npos, 219, dispmsg); } else { - dwinDrawRectangle(1, Color_Bg_Black, 8, 352, DWIN_WIDTH - 8, 376); + dwinDrawRectangle(1, COLOR_BG_BLACK, 8, 352, DWIN_WIDTH - 8, 376); const int8_t npos = (DWIN_WIDTH - len * MENU_CHR_W) / 2; - dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.status_bar_text, Color_White), Color_Bg_Black, npos, 357, dispmsg); + dwinDrawString(false, DWIN_FONT_MENU, getColor(eeprom_settings.status_bar_text, COLOR_WHITE), COLOR_BG_BLACK, npos, 357, dispmsg); } } } @@ -1023,7 +1023,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(TempMenu, sel); + drawMenu(ID_TempMenu, sel); break; #if HAS_HOTEND case PREHEAT_SUBMENU_HOTEND: @@ -1061,7 +1061,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #endif switch (menu) { - case Prepare: + case ID_Prepare: #define PREPARE_BACK 0 #define PREPARE_MOVE (PREPARE_BACK + 1) @@ -1086,7 +1086,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Axis, F("Move"), nullptr, true); else - drawMenu(Move); + drawMenu(ID_Move); break; case PREPARE_DISABLE: if (draw) @@ -1098,21 +1098,21 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_SetHome, F("Homing"), nullptr, true); else - drawMenu(HomeMenu); + drawMenu(ID_HomeMenu); break; case PREPARE_MANUALLEVEL: if (draw) drawMenuItem(row, ICON_PrintSize, F("Manual Leveling"), nullptr, true); else { if (axes_should_home()) { - popupHandler(Home); + popupHandler(Popup_Home); gcode.home_all_axes(true); } #if HAS_LEVELING level_state = planner.leveling_active; set_bed_leveling_enabled(false); #endif - drawMenu(ManualLevel); + drawMenu(ID_ManualLevel); } break; @@ -1125,7 +1125,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra level_state = planner.leveling_active; set_bed_leveling_enabled(false); #endif - drawMenu(ZOffset); + drawMenu(ID_ZOffset); } break; #endif @@ -1135,7 +1135,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Temperature, F("Preheat"), nullptr, true); else - drawMenu(Preheat); + drawMenu(ID_Preheat); break; #endif @@ -1156,7 +1156,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Version, F(CUSTOM_MENU_CONFIG_TITLE)); else - drawMenu(MenuCustom); + drawMenu(ID_MenuCustom); break; #endif @@ -1171,16 +1171,16 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } else { #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) - drawMenu(ChangeFilament); + drawMenu(ID_ChangeFilament); #else if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) - popupHandler(ETemp); + popupHandler(Popup_ETemp); else { if (thermalManager.temp_hotend[0].is_below_target(2)) { - popupHandler(Heating); + popupHandler(Popup_Heating); thermalManager.wait_for_hotend(0); } - popupHandler(FilChange); + popupHandler(Popup_FilChange); gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.temp_hotend[0].target)); } #endif @@ -1190,7 +1190,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } break; - case HomeMenu: + case ID_HomeMenu: #define HOME_BACK 0 #define HOME_ALL (HOME_BACK + 1) @@ -1205,13 +1205,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Prepare, PREPARE_HOME); + drawMenu(ID_Prepare, PREPARE_HOME); break; case HOME_ALL: if (draw) drawMenuItem(row, ICON_Homing, F("Home All")); else { - popupHandler(Home); + popupHandler(Popup_Home); gcode.home_all_axes(true); redrawMenu(); } @@ -1220,7 +1220,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_MoveX, F("Home X")); else { - popupHandler(Home); + popupHandler(Popup_Home); gcode.process_subcommands_now(F("G28 X")); planner.synchronize(); redrawMenu(); @@ -1230,7 +1230,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_MoveY, F("Home Y")); else { - popupHandler(Home); + popupHandler(Popup_Home); gcode.process_subcommands_now(F("G28 Y")); planner.synchronize(); redrawMenu(); @@ -1240,7 +1240,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_MoveZ, F("Home Z")); else { - popupHandler(Home); + popupHandler(Popup_Home); gcode.process_subcommands_now(F("G28 Z")); planner.synchronize(); redrawMenu(); @@ -1257,7 +1257,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } break; - case Move: + case ID_Move: #define MOVE_BACK 0 #define MOVE_X (MOVE_BACK + 1) @@ -1277,7 +1277,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra probe_deployed = false; probe.set_deployed(probe_deployed); #endif - drawMenu(Prepare, PREPARE_MOVE); + drawMenu(ID_Prepare, PREPARE_MOVE); } break; case MOVE_X: @@ -1315,11 +1315,11 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } else { if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) { - popupHandler(ETemp); + popupHandler(Popup_ETemp); } else { if (thermalManager.temp_hotend[0].is_below_target(2)) { - popupHandler(Heating); + popupHandler(Popup_Heating); thermalManager.wait_for_hotend(0); redrawMenu(); } @@ -1357,7 +1357,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; } break; - case ManualLevel: { + case ID_ManualLevel: { #define MLEVEL_BACK 0 #define MLEVEL_PROBE (MLEVEL_BACK + ENABLED(HAS_BED_PROBE)) @@ -1385,7 +1385,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawMenuItem(row, ICON_Back, F("Back")); else { TERN_(HAS_LEVELING, set_bed_leveling_enabled(level_state)); - drawMenu(Prepare, PREPARE_MANUALLEVEL); + drawMenu(ID_Prepare, PREPARE_MANUALLEVEL); } break; @@ -1399,7 +1399,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra use_probe ^= true; drawCheckbox(row, use_probe); if (use_probe) { - popupHandler(Level); + popupHandler(Popup_Level); const struct { xy_pos_t p; ProbePtRaise r; } points[] = { { { probe_x_min, probe_y_min }, PROBE_PT_RAISE }, { { probe_x_min, probe_y_max }, PROBE_PT_RAISE }, @@ -1423,14 +1423,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_AxisBL, F("Bottom Left")); else { - popupHandler(MoveWait); + popupHandler(Popup_MoveWait); if (use_probe) { #if HAS_BED_PROBE gcode.process_subcommands_now( TS(F("G0F4000\nG0Z10\nG0X"), p_float_t(probe_x_min, 3), 'Y', p_float_t(probe_y_min, 3)) ); planner.synchronize(); - popupHandler(ManualProbing); + popupHandler(Popup_ManualProbing); #endif } else { @@ -1446,14 +1446,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_AxisTL, F("Top Left")); else { - popupHandler(MoveWait); + popupHandler(Popup_MoveWait); if (use_probe) { #if HAS_BED_PROBE gcode.process_subcommands_now( TS(F("G0F4000\nG0Z10\nG0X"), p_float_t(probe_x_min, 3), 'Y', p_float_t(probe_y_max, 3)) ); planner.synchronize(); - popupHandler(ManualProbing); + popupHandler(Popup_ManualProbing); #endif } else { @@ -1469,14 +1469,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_AxisTR, F("Top Right")); else { - popupHandler(MoveWait); + popupHandler(Popup_MoveWait); if (use_probe) { #if HAS_BED_PROBE gcode.process_subcommands_now( TS(F("G0F4000\nG0Z10\nG0X"), p_float_t(probe_x_max, 3), 'Y', p_float_t(probe_y_max, 3), F("\nG0F300Z"), p_float_t(mlev_z_pos, 3)) ); planner.synchronize(); - popupHandler(ManualProbing); + popupHandler(Popup_ManualProbing); #endif } else { @@ -1492,14 +1492,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_AxisBR, F("Bottom Right")); else { - popupHandler(MoveWait); + popupHandler(Popup_MoveWait); if (use_probe) { #if HAS_BED_PROBE gcode.process_subcommands_now( TS(F("G0F4000\nG0Z10\nG0X"), p_float_t(probe_x_max, 3), 'Y', p_float_t(probe_y_min, 3)) ); planner.synchronize(); - popupHandler(ManualProbing); + popupHandler(Popup_ManualProbing); #endif } else { @@ -1515,14 +1515,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_AxisC, F("Center")); else { - popupHandler(MoveWait); + popupHandler(Popup_MoveWait); if (use_probe) { #if HAS_BED_PROBE gcode.process_subcommands_now( TS(F("G0F4000\nG0Z10\nG0X"), p_float_t((X_MAX_POS) / 2.0f - probe.offset.x, 3), 'Y', p_float_t((Y_MAX_POS) / 2.0f - probe.offset.y, 3)) ); planner.synchronize(); - popupHandler(ManualProbing); + popupHandler(Popup_ManualProbing); #endif } else { @@ -1547,7 +1547,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } break; #if HAS_ZOFFSET_ITEM - case ZOffset: + case ID_ZOffset: #define ZOFFSET_BACK 0 #define ZOFFSET_HOME (ZOFFSET_BACK + 1) @@ -1565,16 +1565,16 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra else { liveadjust = false; TERN_(HAS_LEVELING, set_bed_leveling_enabled(level_state)); - drawMenu(Prepare, PREPARE_ZOFFSET); + drawMenu(ID_Prepare, PREPARE_ZOFFSET); } break; case ZOFFSET_HOME: if (draw) drawMenuItem(row, ICON_Homing, F("Home Z Axis")); else { - popupHandler(Home); + popupHandler(Popup_Home); gcode.process_subcommands_now(F("G28Z")); - popupHandler(MoveWait); + popupHandler(Popup_MoveWait); #if ENABLED(Z_SAFE_HOMING) planner.synchronize(); gcode.process_subcommands_now( @@ -1596,10 +1596,10 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra else { if (!liveadjust) { if (axes_should_home()) { - popupHandler(Home); + popupHandler(Popup_Home); gcode.home_all_axes(true); } - popupHandler(MoveWait); + popupHandler(Popup_MoveWait); #if ENABLED(Z_SAFE_HOMING) planner.synchronize(); gcode.process_subcommands_now( @@ -1665,7 +1665,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #endif #if HAS_PREHEAT - case Preheat: { + case ID_Preheat: { #define PREHEAT_MODE (PREHEAT_BACK + 1) #define PREHEAT_1 (PREHEAT_MODE + 1) #define PREHEAT_2 (PREHEAT_1 + (PREHEAT_COUNT >= 2)) @@ -1685,7 +1685,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Prepare, PREPARE_PREHEAT); + drawMenu(ID_Prepare, PREPARE_PREHEAT); break; case PREHEAT_MODE: @@ -1709,7 +1709,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #endif // HAS_PREHEAT #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) - case ChangeFilament: + case ID_ChangeFilament: #define CHANGEFIL_BACK 0 #define CHANGEFIL_LOAD (CHANGEFIL_BACK + 1) @@ -1722,20 +1722,20 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Prepare, PREPARE_CHANGEFIL); + drawMenu(ID_Prepare, PREPARE_CHANGEFIL); break; case CHANGEFIL_LOAD: if (draw) drawMenuItem(row, ICON_WriteEEPROM, GET_TEXT_F(MSG_FILAMENTLOAD)); else { if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) - popupHandler(ETemp); + popupHandler(Popup_ETemp); else { if (thermalManager.temp_hotend[0].is_below_target(2)) { - popupHandler(Heating); + popupHandler(Popup_Heating); thermalManager.wait_for_hotend(0); } - popupHandler(FilLoad); + popupHandler(Popup_FilLoad); gcode.process_subcommands_now(F("M701")); planner.synchronize(); redrawMenu(); @@ -1747,14 +1747,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawMenuItem(row, ICON_ReadEEPROM, GET_TEXT_F(MSG_FILAMENTUNLOAD)); else { if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) { - popupHandler(ETemp); + popupHandler(Popup_ETemp); } else { if (thermalManager.temp_hotend[0].is_below_target(2)) { - popupHandler(Heating); + popupHandler(Popup_Heating); thermalManager.wait_for_hotend(0); } - popupHandler(FilLoad, true); + popupHandler(Popup_FilLoad, true); gcode.process_subcommands_now(F("M702")); planner.synchronize(); redrawMenu(); @@ -1766,13 +1766,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawMenuItem(row, ICON_ResumeEEPROM, GET_TEXT_F(MSG_FILAMENTCHANGE)); else { if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) - popupHandler(ETemp); + popupHandler(Popup_ETemp); else { if (thermalManager.temp_hotend[0].is_below_target(2)) { - popupHandler(Heating); + popupHandler(Popup_Heating); thermalManager.wait_for_hotend(0); } - popupHandler(FilChange); + popupHandler(Popup_FilChange); gcode.process_subcommands_now(TS(F("M600B1R"), thermalManager.temp_hotend[0].target)); } } @@ -1783,7 +1783,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_CUSTOM_MENU - case MenuCustom: + case ID_MenuCustom: #define CUSTOM_MENU_BACK 0 #define CUSTOM_MENU_1 1 @@ -1798,7 +1798,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Prepare, PREPARE_CUSTOM_MENU); + drawMenu(ID_Prepare, PREPARE_CUSTOM_MENU); break; #if CUSTOM_MENU_COUNT >= 1 @@ -1806,7 +1806,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_1_DESC)); else { - popupHandler(Custom); + popupHandler(Popup_Custom); //queue.inject(F(CONFIG_MENU_ITEM_1_GCODE)); // Old code gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_1_GCODE)); planner.synchronize(); @@ -1826,7 +1826,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_2_DESC)); else { - popupHandler(Custom); + popupHandler(Popup_Custom); gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_2_GCODE)); planner.synchronize(); redrawMenu(); @@ -1845,7 +1845,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_3_DESC)); else { - popupHandler(Custom); + popupHandler(Popup_Custom); gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_3_GCODE)); planner.synchronize(); redrawMenu(); @@ -1864,7 +1864,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_4_DESC)); else { - popupHandler(Custom); + popupHandler(Popup_Custom); gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_4_GCODE)); planner.synchronize(); redrawMenu(); @@ -1883,7 +1883,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_5_DESC)); else { - popupHandler(Custom); + popupHandler(Popup_Custom); gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_5_GCODE)); planner.synchronize(); redrawMenu(); @@ -1901,7 +1901,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #endif // HAS_CUSTOM_MENU - case Control: + case ID_Control: #define CONTROL_BACK 0 #define CONTROL_TEMP (CONTROL_BACK + 1) @@ -1925,25 +1925,25 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Temperature, F("Temperature"), nullptr, true); else - drawMenu(TempMenu); + drawMenu(ID_TempMenu); break; case CONTROL_MOTION: if (draw) drawMenuItem(row, ICON_Motion, F("Motion"), nullptr, true); else - drawMenu(Motion); + drawMenu(ID_Motion); break; case CONTROL_VISUAL: if (draw) drawMenuItem(row, ICON_PrintSize, F("Visual"), nullptr, true); else - drawMenu(Visual); + drawMenu(ID_Visual); break; case CONTROL_ADVANCED: if (draw) drawMenuItem(row, ICON_Version, F("Advanced"), nullptr, true); else - drawMenu(Advanced); + drawMenu(ID_Advanced); break; #if ENABLED(EEPROM_SETTINGS) case CONTROL_SAVE: @@ -1971,12 +1971,12 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Info, F("Info")); else - drawMenu(Info); + drawMenu(ID_Info); break; } break; - case TempMenu: + case ID_TempMenu: #define TEMP_BACK 0 #define TEMP_HOTEND (TEMP_BACK + ENABLED(HAS_HOTEND)) @@ -1996,7 +1996,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Control, CONTROL_TEMP); + drawMenu(ID_Control, CONTROL_TEMP); break; #if HAS_HOTEND case TEMP_HOTEND: @@ -2033,7 +2033,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Step, F("PID"), nullptr, true); else - drawMenu(PID); + drawMenu(ID_PID); break; #endif #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) @@ -2041,14 +2041,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Step, F("MPC"), nullptr, true); else - drawMenu(MPC); + drawMenu(ID_MPC); break; #endif #define _TEMP_PREHEAT_CASE(N) \ case TEMP_PREHEAT##N: { \ if (draw) drawMenuItem(row, ICON_Step, F(PREHEAT_## N ##_LABEL), nullptr, true); \ - else drawMenu(Preheat##N); \ + else drawMenu(ID_Preheat##N); \ } break; REPEAT_1(PREHEAT_COUNT, _TEMP_PREHEAT_CASE) @@ -2056,7 +2056,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; #if ANY(PIDTEMP, PIDTEMPBED) - case PID: + case ID_PID: #define PID_BACK 0 #define PID_HOTEND (PID_BACK + ENABLED(PIDTEMP)) @@ -2071,14 +2071,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(TempMenu, TEMP_PID); + drawMenu(ID_TempMenu, TEMP_PID); break; #if ENABLED(PIDTEMP) case PID_HOTEND: if (draw) drawMenuItem(row, ICON_HotendTemp, F("Hotend"), nullptr, true); else - drawMenu(HotendPID); + drawMenu(ID_HotendPID); break; #endif #if ENABLED(PIDTEMPBED) @@ -2086,7 +2086,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_BedTemp, F("Bed"), nullptr, true); else - drawMenu(BedPID); + drawMenu(ID_BedPID); break; #endif case PID_CYCLES: @@ -2102,7 +2102,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #endif // PIDTEMP || PIDTEMPBED #if ENABLED(PIDTEMP) - case HotendPID: + case ID_HotendPID: #define HOTENDPID_BACK 0 #define HOTENDPID_TUNE (HOTENDPID_BACK + 1) @@ -2119,13 +2119,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(PID, PID_HOTEND); + drawMenu(ID_PID, PID_HOTEND); break; case HOTENDPID_TUNE: if (draw) drawMenuItem(row, ICON_HotendTemp, F("Autotune")); else { - popupHandler(PIDWait); + popupHandler(Popup_PIDWait); gcode.process_subcommands_now(TS(F("M303E0C"), PID_cycles, 'S', PID_e_temp, 'U')); planner.synchronize(); redrawMenu(); @@ -2168,7 +2168,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #endif // PIDTEMP #if ENABLED(PIDTEMPBED) - case BedPID: + case ID_BedPID: #define BEDPID_BACK 0 #define BEDPID_TUNE (BEDPID_BACK + 1) @@ -2185,13 +2185,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(PID, PID_BED); + drawMenu(ID_PID, PID_BED); break; case BEDPID_TUNE: if (draw) drawMenuItem(row, ICON_HotendTemp, F("Autotune")); else { - popupHandler(PIDWait); + popupHandler(Popup_PIDWait); gcode.process_subcommands_now(TS(F("M303E-1C"), PID_cycles, 'S', PID_bed_temp, 'U')); planner.synchronize(); redrawMenu(); @@ -2234,7 +2234,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #endif // PIDTEMPBED #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) - case MPC: + case ID_MPC: #define MPCMENU_BACK 0 #define MPCMENU_AUTOTUNE (MPCMENU_BACK + ENABLED(MPC_AUTOTUNE_MENU)) @@ -2250,7 +2250,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(TempMenu, TEMP_MPC); + drawMenu(ID_TempMenu, TEMP_MPC); break; #if ENABLED(MPC_AUTOTUNE_MENU) @@ -2258,7 +2258,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_HotendTemp, F("Autotune")); else { - popupHandler(MPCWait); + popupHandler(Popup_MPCWait); thermalManager.MPC_autotune(active_extruder, Temperature::MPCTuningType::AUTO); redrawMenu(); } @@ -2322,11 +2322,11 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #endif // MPC_EDIT_MENU || MPC_AUTOTUNE_MENU #if HAS_PREHEAT - #define _PREHEAT_SUBMENU_CASE(N) case Preheat##N: preheat_submenu((N) - 1, item, TEMP_PREHEAT##N); break; + #define _PREHEAT_SUBMENU_CASE(N) case ID_Preheat##N: preheat_submenu((N) - 1, item, TEMP_PREHEAT##N); break; REPEAT_1(PREHEAT_COUNT, _PREHEAT_SUBMENU_CASE) #endif - case Motion: + case ID_Motion: #define MOTION_BACK 0 #define MOTION_HOMEOFFSETS (MOTION_BACK + 1) @@ -2342,39 +2342,39 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Control, CONTROL_MOTION); + drawMenu(ID_Control, CONTROL_MOTION); break; case MOTION_HOMEOFFSETS: if (draw) drawMenuItem(row, ICON_SetHome, F("Home Offsets"), nullptr, true); else - drawMenu(HomeOffsets); + drawMenu(ID_HomeOffsets); break; case MOTION_SPEED: if (draw) drawMenuItem(row, ICON_MaxSpeed, F("Max Speed"), nullptr, true); else - drawMenu(MaxSpeed); + drawMenu(ID_MaxSpeed); break; case MOTION_ACCEL: if (draw) drawMenuItem(row, ICON_MaxAccelerated, F("Max Acceleration"), nullptr, true); else - drawMenu(MaxAcceleration); + drawMenu(ID_MaxAcceleration); break; #if HAS_CLASSIC_JERK case MOTION_JERK: if (draw) drawMenuItem(row, ICON_MaxJerk, F("Max Jerk"), nullptr, true); else - drawMenu(MaxJerk); + drawMenu(ID_MaxJerk); break; #endif case MOTION_STEPS: if (draw) drawMenuItem(row, ICON_Step, F("Steps/mm"), nullptr, true); else - drawMenu(Steps); + drawMenu(ID_Steps); break; #if HAS_HOTEND case MOTION_FLOW: @@ -2389,7 +2389,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } break; - case HomeOffsets: + case ID_HomeOffsets: #define HOMEOFFSETS_BACK 0 #define HOMEOFFSETS_XOFFSET (HOMEOFFSETS_BACK + 1) @@ -2401,7 +2401,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Motion, MOTION_HOMEOFFSETS); + drawMenu(ID_Motion, MOTION_HOMEOFFSETS); break; case HOMEOFFSETS_XOFFSET: if (draw) { @@ -2421,7 +2421,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; } break; - case MaxSpeed: + case ID_MaxSpeed: #define SPEED_BACK 0 #define SPEED_X (SPEED_BACK + 1) @@ -2435,7 +2435,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Motion, MOTION_SPEED); + drawMenu(ID_Motion, MOTION_SPEED); break; #if HAS_X_AXIS case SPEED_X: @@ -2483,7 +2483,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } break; - case MaxAcceleration: + case ID_MaxAcceleration: #define ACCEL_BACK 0 #define ACCEL_X (ACCEL_BACK + 1) @@ -2497,7 +2497,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Motion, MOTION_ACCEL); + drawMenu(ID_Motion, MOTION_ACCEL); break; case ACCEL_X: if (draw) { @@ -2536,7 +2536,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } break; #if HAS_CLASSIC_JERK - case MaxJerk: + case ID_MaxJerk: #define JERK_BACK 0 #define JERK_X (JERK_BACK + 1) @@ -2550,7 +2550,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Motion, MOTION_JERK); + drawMenu(ID_Motion, MOTION_JERK); break; #if HAS_X_AXIS case JERK_X: @@ -2595,7 +2595,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } break; #endif - case Steps: + case ID_Steps: #define STEPS_BACK 0 #define STEPS_X (STEPS_BACK + 1) @@ -2609,7 +2609,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Motion, MOTION_STEPS); + drawMenu(ID_Motion, MOTION_STEPS); break; #if HAS_X_AXIS case STEPS_X: @@ -2654,7 +2654,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } break; - case Visual: + case ID_Visual: #define VISUAL_BACK 0 #define VISUAL_BACKLIGHT (VISUAL_BACK + 1) @@ -2668,7 +2668,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Control, CONTROL_VISUAL); + drawMenu(ID_Control, CONTROL_VISUAL); break; case VISUAL_BACKLIGHT: if (draw) @@ -2698,12 +2698,12 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_MaxSpeed, F("UI Color Settings"), nullptr, true); else - drawMenu(ColorSettings); + drawMenu(ID_ColorSettings); break; } break; - case ColorSettings: + case ID_ColorSettings: #define COLORSETTINGS_BACK 0 #define COLORSETTINGS_CURSOR (COLORSETTINGS_BACK + 1) @@ -2724,7 +2724,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Visual, VISUAL_COLOR_THEMES); + drawMenu(ID_Visual, VISUAL_COLOR_THEMES); break; case COLORSETTINGS_CURSOR: if (draw) { @@ -2817,7 +2817,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } // switch (item) break; - case Advanced: + case ID_Advanced: #define ADVANCED_BACK 0 #define ADVANCED_BEEPER (ADVANCED_BACK + ENABLED(SOUND_MENU_ITEM)) @@ -2838,7 +2838,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Control, CONTROL_ADVANCED); + drawMenu(ID_Control, CONTROL_ADVANCED); break; #if ENABLED(SOUND_MENU_ITEM) @@ -2859,7 +2859,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_StepX, F("Probe"), nullptr, true); else - drawMenu(ProbeMenu); + drawMenu(ID_ProbeMenu); break; #endif @@ -2868,7 +2868,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Motion, F("TMC Drivers"), nullptr, true); else - drawMenu(TMCMenu); + drawMenu(ID_TMCMenu); break; #endif @@ -2964,7 +2964,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; #if HAS_BED_PROBE - case ProbeMenu: + case ID_ProbeMenu: #define PROBE_BACK 0 #define PROBE_XOFFSET (PROBE_BACK + 1) @@ -2980,7 +2980,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Advanced, ADVANCED_PROBE); + drawMenu(ID_Advanced, ADVANCED_PROBE); break; case PROBE_XOFFSET: @@ -3021,7 +3021,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #endif // HAS_PROBE_MENU #if HAS_TRINAMIC_CONFIG - case TMCMenu: + case ID_TMCMenu: #define TMC_BACK 0 #define TMC_STEPPER_CURRENT_X (TMC_BACK + AXIS_IS_TMC(X)) @@ -3036,7 +3036,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Advanced, ADVANCED_TMC); + drawMenu(ID_Advanced, ADVANCED_TMC); break; #if AXIS_IS_TMC(X) @@ -3099,8 +3099,8 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; #endif // HAS_TRINAMIC_CONFIG - case InfoMain: - case Info: + case ID_InfoMain: + case ID_Info: #define INFO_BACK 0 #define INFO_PRINTCOUNT (INFO_BACK + ENABLED(PRINTCOUNTER)) @@ -3138,8 +3138,8 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawMenuItem(INFO_CONTACT, ICON_Contact, F(CORP_WEBSITE), nullptr, false, true); } else { - if (menu == Info) - drawMenu(Control, CONTROL_INFO); + if (menu == ID_Info) + drawMenu(ID_Control, CONTROL_INFO); else drawMainMenu(3); } @@ -3148,7 +3148,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; #if HAS_MESH - case Leveling: + case ID_Leveling: #define LEVELING_BACK 0 #define LEVELING_ACTIVE (LEVELING_BACK + 1) @@ -3178,7 +3178,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (!planner.leveling_active) { set_bed_leveling_enabled(!planner.leveling_active); if (!planner.leveling_active) { - confirmHandler(LevelError); + confirmHandler(Popup_LevelError); break; } } @@ -3193,12 +3193,12 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawMenuItem(row, ICON_Tilt, F("Autotilt Current Mesh")); else { if (bedlevel.storage_slot < 0) { - popupHandler(MeshSlot); + popupHandler(Popup_MeshSlot); break; } - popupHandler(Home); + popupHandler(Popup_Home); gcode.home_all_axes(true); - popupHandler(Level); + popupHandler(Popup_Level); if (mesh_conf.tilt_grid > 1) { gcode.process_subcommands_now(TS(F("G29J"), mesh_conf.tilt_grid)); } @@ -3213,42 +3213,42 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Mesh, F("Create New Mesh")); else { - popupHandler(Home); + popupHandler(Popup_Home); gcode.home_all_axes(true); #if ENABLED(AUTO_BED_LEVELING_UBL) #if ENABLED(PREHEAT_BEFORE_LEVELING) - popupHandler(Heating); + popupHandler(Popup_Heating); probe.preheat_for_probing(LEVELING_NOZZLE_TEMP, LEVELING_BED_TEMP); #endif #if HAS_BED_PROBE - popupHandler(Level); + popupHandler(Popup_Level); gcode.process_subcommands_now(F("G29P0\nG29P1")); gcode.process_subcommands_now(F("G29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nG29P3\nM420S1")); planner.synchronize(); updateStatus("Probed all reachable points"); - popupHandler(SaveLevel); + popupHandler(Popup_SaveLevel); #else level_state = planner.leveling_active; set_bed_leveling_enabled(false); mesh_conf.goto_mesh_value = true; mesh_conf.mesh_x = mesh_conf.mesh_y = 0; - popupHandler(MoveWait); + popupHandler(Popup_MoveWait); mesh_conf.manual_mesh_move(); - drawMenu(UBLMesh); + drawMenu(ID_UBLMesh); #endif #elif HAS_BED_PROBE - popupHandler(Level); + popupHandler(Popup_Level); gcode.process_subcommands_now(F("G29")); planner.synchronize(); - popupHandler(SaveLevel); + popupHandler(Popup_SaveLevel); #else level_state = planner.leveling_active; set_bed_leveling_enabled(false); gridpoint = 1; - popupHandler(MoveWait); + popupHandler(Popup_MoveWait); gcode.process_subcommands_now(F("G29")); planner.synchronize(); - drawMenu(ManualMesh); + drawMenu(ID_ManualMesh); #endif } break; @@ -3258,25 +3258,25 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra else { #if ENABLED(AUTO_BED_LEVELING_BILINEAR) if (!leveling_is_valid()) { - confirmHandler(InvalidMesh); + confirmHandler(Popup_InvalidMesh); break; } #endif #if ENABLED(AUTO_BED_LEVELING_UBL) if (bedlevel.storage_slot < 0) { - popupHandler(MeshSlot); + popupHandler(Popup_MeshSlot); break; } #endif if (axes_should_home()) { - popupHandler(Home); + popupHandler(Popup_Home); gcode.home_all_axes(true); } level_state = planner.leveling_active; set_bed_leveling_enabled(false); mesh_conf.goto_mesh_value = false; #if ENABLED(PREHEAT_BEFORE_LEVELING) - popupHandler(Heating); + popupHandler(Popup_Heating); #if HAS_HOTEND if (thermalManager.degTargetHotend(0) < LEVELING_NOZZLE_TEMP) thermalManager.setTargetHotend(LEVELING_NOZZLE_TEMP, 0); @@ -3288,9 +3288,9 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra TERN_(HAS_HOTEND, thermalManager.wait_for_hotend(0)); TERN_(HAS_HEATED_BED, thermalManager.wait_for_bed_heating()); #endif - popupHandler(MoveWait); + popupHandler(Popup_MoveWait); mesh_conf.manual_mesh_move(); - drawMenu(LevelManual); + drawMenu(ID_LevelManual); } break; case LEVELING_VIEW: @@ -3299,18 +3299,18 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra else { #if ENABLED(AUTO_BED_LEVELING_UBL) if (bedlevel.storage_slot < 0) { - popupHandler(MeshSlot); + popupHandler(Popup_MeshSlot); break; } #endif - drawMenu(LevelView); + drawMenu(ID_LevelView); } break; case LEVELING_SETTINGS: if (draw) drawMenuItem(row, ICON_Step, F("Leveling Settings"), nullptr, true); else - drawMenu(LevelSettings); + drawMenu(ID_LevelSettings); break; #if ENABLED(AUTO_BED_LEVELING_UBL) case LEVELING_SLOT: @@ -3326,7 +3326,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawMenuItem(row, ICON_ReadEEPROM, F("Load Mesh")); else { if (bedlevel.storage_slot < 0) { - popupHandler(MeshSlot); + popupHandler(Popup_MeshSlot); break; } gcode.process_subcommands_now(F("G29 L")); @@ -3339,7 +3339,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawMenuItem(row, ICON_WriteEEPROM, F("Save Mesh")); else { if (bedlevel.storage_slot < 0) { - popupHandler(MeshSlot); + popupHandler(Popup_MeshSlot); break; } gcode.process_subcommands_now(F("G29 S")); @@ -3351,7 +3351,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } break; - case LevelView: + case ID_LevelView: #define LEVELING_VIEW_BACK 0 #define LEVELING_VIEW_MESH (LEVELING_VIEW_BACK + 1) @@ -3364,13 +3364,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Leveling, LEVELING_VIEW); + drawMenu(ID_Leveling, LEVELING_VIEW); break; case LEVELING_VIEW_MESH: if (draw) drawMenuItem(row, ICON_PrintSize, GET_TEXT_F(MSG_MESH_VIEW), nullptr, true); else - drawMenu(MeshViewer); + drawMenu(ID_MeshViewer); break; case LEVELING_VIEW_TEXT: if (draw) { @@ -3395,7 +3395,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } break; - case LevelSettings: + case ID_LevelSettings: #define LEVELING_SETTINGS_BACK 0 #define LEVELING_SETTINGS_FADE (LEVELING_SETTINGS_BACK + 1) @@ -3410,7 +3410,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_Back, F("Back")); else - drawMenu(Leveling, LEVELING_SETTINGS); + drawMenu(ID_Leveling, LEVELING_SETTINGS); break; case LEVELING_SETTINGS_FADE: if (draw) { @@ -3437,7 +3437,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_ResumeEEPROM, F("Convert Mesh to Plane")); else { - if (mesh_conf.create_plane_from_mesh()) break; + if (mesh_conf.createPlaneFromMesh()) break; gcode.process_subcommands_now(F("M420 S1")); planner.synchronize(); audioFeedback(true); @@ -3459,7 +3459,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } break; - case MeshViewer: + case ID_MeshViewer: #define MESHVIEW_BACK 0 #define MESHVIEW_TOTAL MESHVIEW_BACK @@ -3470,13 +3470,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra mesh_conf.setMeshViewerStatus(); } else if (!mesh_conf.drawing_mesh) { - drawMenu(LevelView, LEVELING_VIEW_MESH); + drawMenu(ID_LevelView, LEVELING_VIEW_MESH); updateStatus(""); } } break; - case LevelManual: + case ID_LevelManual: #define LEVELING_M_BACK 0 #define LEVELING_M_X (LEVELING_M_BACK + 1) @@ -3496,7 +3496,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra else { set_bed_leveling_enabled(level_state); TERN_(AUTO_BED_LEVELING_BILINEAR, bedlevel.refresh_bed_level()); - drawMenu(Leveling, LEVELING_MANUAL); + drawMenu(ID_Leveling, LEVELING_MANUAL); } break; case LEVELING_M_X: @@ -3582,7 +3582,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_ResumeEEPROM, F("Clear Point Value")); else { - mesh_conf.manual_value_update(true); + mesh_conf.manualValueUpdate(true); redrawMenu(false); } break; @@ -3592,7 +3592,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #endif // HAS_MESH #if ENABLED(AUTO_BED_LEVELING_UBL) && !HAS_BED_PROBE - case UBLMesh: + case ID_UBLMesh: #define UBL_M_BACK 0 #define UBL_M_NEXT (UBL_M_BACK + 1) @@ -3608,7 +3608,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawMenuItem(row, ICON_Back, F("Back")); else { set_bed_leveling_enabled(level_state); - drawMenu(Leveling, LEVELING_GET_MESH); + drawMenu(ID_Leveling, LEVELING_GET_MESH); } break; case UBL_M_NEXT: @@ -3632,7 +3632,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra gcode.process_subcommands_now(F("G29 S")); planner.synchronize(); audioFeedback(true); - drawMenu(Leveling, LEVELING_GET_MESH); + drawMenu(ID_Leveling, LEVELING_GET_MESH); } } break; @@ -3691,7 +3691,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #endif // AUTO_BED_LEVELING_UBL && !HAS_BED_PROBE #if ENABLED(PROBE_MANUALLY) - case ManualMesh: + case ID_ManualMesh: #define MMESH_BACK 0 #define MMESH_NEXT (MMESH_BACK + 1) @@ -3709,7 +3709,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra gcode.process_subcommands_now(F("G29 A")); planner.synchronize(); set_bed_leveling_enabled(level_state); - drawMenu(Leveling, LEVELING_GET_MESH); + drawMenu(ID_Leveling, LEVELING_GET_MESH); } break; case MMESH_NEXT: @@ -3720,7 +3720,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawMenuItem(row, ICON_More, F("Save Mesh")); } else if (gridpoint < GRID_MAX_POINTS) { - popupHandler(MoveWait); + popupHandler(Popup_MoveWait); gcode.process_subcommands_now(F("G29")); planner.synchronize(); gridpoint++; @@ -3730,7 +3730,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra gcode.process_subcommands_now(F("G29")); planner.synchronize(); audioFeedback(settings.save()); - drawMenu(Leveling, LEVELING_GET_MESH); + drawMenu(ID_Leveling, LEVELING_GET_MESH); } break; case MMESH_OFFSET: @@ -3791,7 +3791,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; #endif // PROBE_MANUALLY - case Tune: + case ID_Tune: #define TUNE_BACK 0 #define TUNE_SPEED (TUNE_BACK + 1) @@ -3899,7 +3899,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_ResumeEEPROM, GET_TEXT_F(MSG_FILAMENTCHANGE)); else - popupHandler(ConfFilChange); + popupHandler(Popup_ConfFilChange); break; #endif @@ -3935,7 +3935,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_PREHEAT && HAS_HOTEND - case PreheatHotend: + case ID_PreheatHotend: #define PREHEATHOTEND_BACK 0 #define PREHEATHOTEND_CONTINUE (PREHEATHOTEND_BACK + 1) @@ -3961,30 +3961,30 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_SetEndTemp, F("Continue")); else { - popupHandler(Heating); + popupHandler(Popup_Heating); thermalManager.wait_for_hotend(0); switch (last_menu) { - case Prepare: - popupHandler(FilChange); + case ID_Prepare: + popupHandler(Popup_FilChange); gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.temp_hotend[0].target)); break; #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) - case ChangeFilament: + case ID_ChangeFilament: switch (last_selection) { case CHANGEFIL_LOAD: - popupHandler(FilLoad); + popupHandler(Popup_FilLoad); gcode.process_subcommands_now(F("M701")); planner.synchronize(); redrawMenu(true, true, true); break; case CHANGEFIL_UNLOAD: - popupHandler(FilLoad, true); + popupHandler(Popup_FilLoad, true); gcode.process_subcommands_now(F("M702")); planner.synchronize(); redrawMenu(true, true, true); break; case CHANGEFIL_CHANGE: - popupHandler(FilChange); + popupHandler(Popup_FilChange); gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.temp_hotend[0].target)); break; } @@ -4023,158 +4023,159 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra FSTR_P JyersDWIN::getMenuTitle(const uint8_t menu) { switch (menu) { - case MainMenu: return GET_TEXT_F(MSG_MAIN_MENU); - case Prepare: return GET_TEXT_F(MSG_PREPARE); - case HomeMenu: return F("Homing Menu"); - case Move: return GET_TEXT_F(MSG_MOVE_AXIS); - case ManualLevel: return GET_TEXT_F(MSG_BED_TRAMMING_MANUAL); + case ID_MainMenu: return GET_TEXT_F(MSG_MAIN_MENU); + case ID_Prepare: return GET_TEXT_F(MSG_PREPARE); + case ID_HomeMenu: return F("Homing Menu"); + case ID_Move: return GET_TEXT_F(MSG_MOVE_AXIS); + case ID_ManualLevel: return GET_TEXT_F(MSG_BED_TRAMMING_MANUAL); #if HAS_ZOFFSET_ITEM - case ZOffset: return GET_TEXT_F(MSG_ZPROBE_ZOFFSET); + case ID_ZOffset: return GET_TEXT_F(MSG_ZPROBE_ZOFFSET); #endif #if HAS_PREHEAT - case Preheat: return F("Preheat"); + case ID_Preheat: return F("Preheat"); #endif #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) - case ChangeFilament: return GET_TEXT_F(MSG_FILAMENTCHANGE); + case ID_ChangeFilament: return GET_TEXT_F(MSG_FILAMENTCHANGE); #endif #if HAS_CUSTOM_MENU - case MenuCustom: + case ID_MenuCustom: #ifdef CUSTOM_MENU_CONFIG_TITLE return F(CUSTOM_MENU_CONFIG_TITLE); #else return GET_TEXT_F(MSG_CUSTOM_COMMANDS); #endif #endif - case Control: return GET_TEXT_F(MSG_CONTROL); - case TempMenu: return GET_TEXT_F(MSG_TEMPERATURE); + case ID_Control: return GET_TEXT_F(MSG_CONTROL); + case ID_TempMenu: return GET_TEXT_F(MSG_TEMPERATURE); #if ANY(PIDTEMP, PIDTEMPBED) - case PID: return F("PID Menu"); + case ID_PID: return F("PID Menu"); #endif #if ENABLED(PIDTEMP) - case HotendPID: return F("Hotend PID Settings"); + case ID_HotendPID: return F("Hotend PID Settings"); #endif #if ENABLED(PIDTEMPBED) - case BedPID: return F("Bed PID Settings"); + case ID_BedPID: return F("Bed PID Settings"); #endif #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) - case MPC: return F("MPC Menu"); + case ID_MPC: return F("MPC Menu"); #endif #if HAS_PREHEAT - #define _PREHEAT_TITLE_CASE(N) case Preheat##N: return F(PREHEAT_## N ##_LABEL " Settings"); + #define _PREHEAT_TITLE_CASE(N) case ID_Preheat##N: return F(PREHEAT_## N ##_LABEL " Settings"); REPEAT_1(PREHEAT_COUNT, _PREHEAT_TITLE_CASE) #endif - case Motion: return F("Motion Settings"); - case HomeOffsets: return F("Home Offsets"); - case MaxSpeed: return F("Max Speed"); - case MaxAcceleration: return F("Max Acceleration"); + case ID_Motion: return F("Motion Settings"); + case ID_HomeOffsets: return F("Home Offsets"); + case ID_MaxSpeed: return F("Max Speed"); + case ID_MaxAcceleration: return F("Max Acceleration"); #if HAS_CLASSIC_JERK - case MaxJerk: return F("Max Jerk"); + case ID_MaxJerk: return F("Max Jerk"); #endif - case Steps: return GET_TEXT_F(MSG_STEPS_PER_MM); - case Visual: return F("Visual Settings"); - case Advanced: return GET_TEXT_F(MSG_ADVANCED_SETTINGS); + case ID_Steps: return GET_TEXT_F(MSG_STEPS_PER_MM); + case ID_Visual: return F("Visual Settings"); + case ID_Advanced: return GET_TEXT_F(MSG_ADVANCED_SETTINGS); #if HAS_BED_PROBE - case ProbeMenu: return F("Bed Probe"); + case ID_ProbeMenu: return F("Bed Probe"); #endif #if HAS_TRINAMIC_CONFIG - case TMCMenu: return GET_TEXT_F(MSG_TMC_DRIVERS); + case ID_TMCMenu: return GET_TEXT_F(MSG_TMC_DRIVERS); #endif - case ColorSettings: return F("UI Color Settings"); - case Info: return F("Info"); - case InfoMain: return F("Info"); + case ID_ColorSettings: return F("UI Color Settings"); + case ID_Info: return F("Info"); + case ID_InfoMain: return F("Info"); #if HAS_MESH - case Leveling: return F("Leveling"); - case LevelView: return GET_TEXT_F(MSG_MESH_VIEW); - case LevelSettings: return F("Leveling Settings"); - case MeshViewer: return GET_TEXT_F(MSG_MESH_VIEW); - case LevelManual: return F("Manual Tuning"); + case ID_Leveling: return F("Leveling"); + case ID_LevelView: return GET_TEXT_F(MSG_MESH_VIEW); + case ID_LevelSettings: return F("Leveling Settings"); + case ID_MeshViewer: return GET_TEXT_F(MSG_MESH_VIEW); + case ID_LevelManual: return F("Manual Tuning"); #endif #if ENABLED(AUTO_BED_LEVELING_UBL) && !HAS_BED_PROBE - case UBLMesh: return F("UBL Bed Leveling"); + case ID_UBLMesh: return F("UBL Bed Leveling"); #endif #if ENABLED(PROBE_MANUALLY) - case ManualMesh: return GET_TEXT_F(MSG_MANUAL_LEVELING); + case ID_ManualMesh: return GET_TEXT_F(MSG_MANUAL_LEVELING); #endif - case Tune: return GET_TEXT_F(MSG_TUNE); - case PreheatHotend: return GET_TEXT_F(MSG_PREHEAT_HOTEND); + case ID_Tune: return GET_TEXT_F(MSG_TUNE); + case ID_PreheatHotend: return GET_TEXT_F(MSG_PREHEAT_HOTEND); } return F(""); } uint8_t JyersDWIN::getMenuSize(const uint8_t menu) { switch (menu) { - case Prepare: return PREPARE_TOTAL; - case HomeMenu: return HOME_TOTAL; - case Move: return MOVE_TOTAL; - case ManualLevel: return MLEVEL_TOTAL; + case ID_Prepare: return PREPARE_TOTAL; + case ID_HomeMenu: return HOME_TOTAL; + case ID_Move: return MOVE_TOTAL; + case ID_ManualLevel: return MLEVEL_TOTAL; #if HAS_ZOFFSET_ITEM - case ZOffset: return ZOFFSET_TOTAL; + case ID_ZOffset: return ZOFFSET_TOTAL; #endif #if HAS_PREHEAT - case Preheat: return PREHEAT_TOTAL; + case ID_Preheat: return PREHEAT_TOTAL; #endif #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) - case ChangeFilament: return CHANGEFIL_TOTAL; + case ID_ChangeFilament: return CHANGEFIL_TOTAL; #endif #if HAS_CUSTOM_MENU - case MenuCustom: return CUSTOM_MENU_TOTAL; + case ID_MenuCustom: return CUSTOM_MENU_TOTAL; #endif - case Control: return CONTROL_TOTAL; - case TempMenu: return TEMP_TOTAL; + case ID_Control: return CONTROL_TOTAL; + case ID_TempMenu: return TEMP_TOTAL; #if ANY(PIDTEMP, PIDTEMPBED) - case PID: return PID_TOTAL; + case ID_PID: return PID_TOTAL; #endif #if ENABLED(PIDTEMP) - case HotendPID: return HOTENDPID_TOTAL; + case ID_HotendPID: return HOTENDPID_TOTAL; #endif #if ENABLED(PIDTEMPBED) - case BedPID: return BEDPID_TOTAL; + case ID_BedPID: return BEDPID_TOTAL; #endif #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) - case MPC: return MPCMENU_TOTAL; + case ID_MPC: return MPCMENU_TOTAL; #endif #if HAS_PREHEAT - case Preheat1 ... CAT(Preheat, PREHEAT_COUNT): + case ID_Preheat1 ... CAT(ID_Preheat, PREHEAT_COUNT): return PREHEAT_SUBMENU_TOTAL; #endif - case Motion: return MOTION_TOTAL; - case HomeOffsets: return HOMEOFFSETS_TOTAL; - case MaxSpeed: return SPEED_TOTAL; - case MaxAcceleration: return ACCEL_TOTAL; + case ID_Motion: return MOTION_TOTAL; + case ID_HomeOffsets: return HOMEOFFSETS_TOTAL; + case ID_MaxSpeed: return SPEED_TOTAL; + case ID_MaxAcceleration: return ACCEL_TOTAL; #if HAS_CLASSIC_JERK - case MaxJerk: return JERK_TOTAL; + case ID_MaxJerk: return JERK_TOTAL; #endif - case Steps: return STEPS_TOTAL; - case Visual: return VISUAL_TOTAL; - case Advanced: return ADVANCED_TOTAL; + case ID_Steps: return STEPS_TOTAL; + case ID_Visual: return VISUAL_TOTAL; + case ID_Advanced: return ADVANCED_TOTAL; #if HAS_BED_PROBE - case ProbeMenu: return PROBE_TOTAL; + case ID_ProbeMenu: return PROBE_TOTAL; #endif #if HAS_TRINAMIC_CONFIG - case TMCMenu: return TMC_TOTAL; + case ID_TMCMenu: return TMC_TOTAL; + case ID_TMCMenu: return TMC_TOTAL; #endif - case Info: return INFO_TOTAL; - case InfoMain: return INFO_TOTAL; + case ID_Info: return INFO_TOTAL; + case ID_InfoMain: return INFO_TOTAL; #if ENABLED(AUTO_BED_LEVELING_UBL) && !HAS_BED_PROBE - case UBLMesh: return UBL_M_TOTAL; + case ID_UBLMesh: return UBL_M_TOTAL; #endif #if ENABLED(PROBE_MANUALLY) - case ManualMesh: return MMESH_TOTAL; + case ID_ManualMesh: return MMESH_TOTAL; #endif #if HAS_MESH - case Leveling: return LEVELING_TOTAL; - case LevelView: return LEVELING_VIEW_TOTAL; - case LevelSettings: return LEVELING_SETTINGS_TOTAL; - case MeshViewer: return MESHVIEW_TOTAL; - case LevelManual: return LEVELING_M_TOTAL; + case ID_Leveling: return LEVELING_TOTAL; + case ID_LevelView: return LEVELING_VIEW_TOTAL; + case ID_LevelSettings: return LEVELING_SETTINGS_TOTAL; + case ID_MeshViewer: return MESHVIEW_TOTAL; + case ID_LevelManual: return LEVELING_M_TOTAL; #endif - case Tune: return TUNE_TOTAL; + case ID_Tune: return TUNE_TOTAL; #if HAS_PREHEAT && HAS_HOTEND - case PreheatHotend: return PREHEATHOTEND_TOTAL; + case ID_PreheatHotend: return PREHEATHOTEND_TOTAL; #endif - case ColorSettings: return COLORSETTINGS_TOTAL; + case ID_ColorSettings: return COLORSETTINGS_TOTAL; } return 0; } @@ -4186,27 +4187,27 @@ uint8_t JyersDWIN::getMenuSize(const uint8_t menu) { void JyersDWIN::popupHandler(const PopupID popupid, const bool option/*=false*/) { popup = last_popup = popupid; switch (popupid) { - case Pause: drawPopup(F("Pause Print"), F(""), F(""), Popup); break; - case Stop: drawPopup(F("Stop Print"), F(""), F(""), Popup); break; - case Resume: drawPopup(F("Resume Print?"), F("Looks Like the last"), F("print was interrupted."), Popup); break; - case ConfFilChange: drawPopup(F("Confirm Filament Change"), F(""), F(""), Popup); break; - case PurgeMore: drawPopup(F("Purge more filament?"), F("(Cancel to finish process)"), F(""), Popup); break; - case SaveLevel: drawPopup(F("Leveling Complete"), F("Save to EEPROM?"), F(""), Popup); break; - case MeshSlot: drawPopup(F("Mesh slot not selected"), F("(Confirm to select slot 0)"), F(""), Popup); break; - case ETemp: drawPopup(F("Nozzle is too cold"), F("Open Preheat Menu?"), F(""), Popup); break; - case ManualProbing: drawPopup(F("Manual Probing"), F("(Confirm to probe)"), F("(cancel to exit)"), Popup); break; - case Level: drawPopup(F("Auto Bed Leveling"), F("Please wait until done."), F(""), Wait, ICON_AutoLeveling); break; - case Home: drawPopup(option ? F("Parking") : F("Homing"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; - case MoveWait: drawPopup(F("Moving to Point"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; - case Heating: drawPopup(F("Heating"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; - case FilLoad: drawPopup(option ? F("Unloading Filament") : F("Loading Filament"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; - case FilChange: drawPopup(F("Filament Change"), F("Please wait for prompt."), F(""), Wait, ICON_BLTouch); break; - case TempWarn: drawPopup(option ? F("Nozzle temp too low!") : F("Nozzle temp too high!"), F(""), F(""), Wait, option ? ICON_TempTooLow : ICON_TempTooHigh); break; - case Runout: drawPopup(F("Filament Runout"), F(""), F(""), Wait, ICON_BLTouch); break; - case PIDWait: drawPopup(F("PID Autotune"), F("in process"), F("Please wait until done."), Wait, ICON_BLTouch); break; - case MPCWait: drawPopup(F("MPC Autotune"), F("in process"), F("Please wait until done."), Wait, ICON_BLTouch); break; - case Resuming: drawPopup(F("Resuming Print"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; - case Custom: drawPopup(F("Running Custom GCode"), F("Please wait until done."), F(""), Wait, ICON_BLTouch); break; + case Popup_Pause: drawPopup(F("Pause Print"), F(""), F(""), Proc_Popup); break; + case Popup_Stop: drawPopup(F("Stop Print"), F(""), F(""), Proc_Popup); break; + case Popup_Resume: drawPopup(F("Resume Print?"), F("Looks Like the last"), F("print was interrupted."), Proc_Popup); break; + case Popup_ConfFilChange: drawPopup(F("Confirm Filament Change"), F(""), F(""), Proc_Popup); break; + case Popup_PurgeMore: drawPopup(F("Purge more filament?"), F("(Cancel to finish process)"), F(""), Proc_Popup); break; + case Popup_SaveLevel: drawPopup(F("Leveling Complete"), F("Save to EEPROM?"), F(""), Proc_Popup); break; + case Popup_MeshSlot: drawPopup(F("Mesh slot not selected"), F("(Confirm to select slot 0)"), F(""), Proc_Popup); break; + case Popup_ETemp: drawPopup(F("Nozzle is too cold"), F("Open Preheat Menu?"), F(""), Proc_Popup); break; + case Popup_ManualProbing: drawPopup(F("Manual Probing"), F("(Confirm to probe)"), F("(cancel to exit)"), Proc_Popup); break; + case Popup_Level: drawPopup(F("Auto Bed Leveling"), F("Please wait until done."), F(""), Proc_Wait, ICON_AutoLeveling); break; + case Popup_Home: drawPopup(option ? F("Parking") : F("Homing"), F("Please wait until done."), F(""), Proc_Wait, ICON_BLTouch); break; + case Popup_MoveWait: drawPopup(F("Moving to Point"), F("Please wait until done."), F(""), Proc_Wait, ICON_BLTouch); break; + case Popup_Heating: drawPopup(F("Heating"), F("Please wait until done."), F(""), Proc_Wait, ICON_BLTouch); break; + case Popup_FilLoad: drawPopup(option ? F("Unloading Filament") : F("Loading Filament"), F("Please wait until done."), F(""), Proc_Wait, ICON_BLTouch); break; + case Popup_FilChange: drawPopup(F("Filament Change"), F("Please wait for prompt."), F(""), Proc_Wait, ICON_BLTouch); break; + case Popup_TempWarn: drawPopup(option ? F("Nozzle temp too low!") : F("Nozzle temp too high!"), F(""), F(""), Proc_Wait, option ? ICON_TempTooLow : ICON_TempTooHigh); break; + case Popup_Runout: drawPopup(F("Filament Runout"), F(""), F(""), Proc_Wait, ICON_BLTouch); break; + case Popup_PIDWait: drawPopup(F("PID Autotune"), F("in process"), F("Please wait until done."), Proc_Wait, ICON_BLTouch); break; + case Popup_MPCWait: drawPopup(F("MPC Autotune"), F("in process"), F("Please wait until done."), Proc_Wait, ICON_BLTouch); break; + case Popup_Resuming: drawPopup(F("Resuming Print"), F("Please wait until done."), F(""), Proc_Wait, ICON_BLTouch); break; + case Popup_Custom: drawPopup(F("Running Custom GCode"), F("Please wait until done."), F(""), Proc_Wait, ICON_BLTouch); break; default: break; } } @@ -4214,11 +4215,11 @@ void JyersDWIN::popupHandler(const PopupID popupid, const bool option/*=false*/) void JyersDWIN::confirmHandler(PopupID popupid) { popup = popupid; switch (popupid) { - case FilInsert: drawPopup(F("Insert Filament"), F("Press to Continue"), F(""), Confirm); break; - case HeaterTime: drawPopup(F("Heater Timed Out"), F("Press to Reheat"), F(""), Confirm); break; - case UserInput: drawPopup(F("Waiting for Input"), F("Press to Continue"), F(""), Confirm); break; - case LevelError: drawPopup(F("Couldn't enable Leveling"), F("(Valid mesh must exist)"), F(""), Confirm); break; - case InvalidMesh: drawPopup(F("Valid mesh must exist"), F("before tuning can be"), F("performed"), Confirm); break; + case Popup_FilInsert: drawPopup(F("Insert Filament"), F("Press to Continue"), F(""), Proc_Confirm); break; + case Popup_HeaterTime: drawPopup(F("Heater Timed Out"), F("Press to Reheat"), F(""), Proc_Confirm); break; + case Popup_UserInput: drawPopup(F("Waiting for Input"), F("Press to Continue"), F(""), Proc_Confirm); break; + case Popup_LevelError: drawPopup(F("Couldn't enable Leveling"), F("(Valid mesh must exist)"), F(""), Proc_Confirm); break; + case Popup_InvalidMesh: drawPopup(F("Valid mesh must exist"), F("before tuning can be"), F("performed"), Proc_Confirm); break; default: break; } } @@ -4241,9 +4242,9 @@ void JyersDWIN::mainMenuControl() { else if (encoder_diffState == ENCODER_DIFF_ENTER) switch (selection) { case PAGE_PRINT: card.mount(); drawSDList(); break; - case PAGE_PREPARE: drawMenu(Prepare); break; - case PAGE_CONTROL: drawMenu(Control); break; - case PAGE_INFO_LEVELING: drawMenu(TERN(HAS_MESH, Leveling, InfoMain)); break; + case PAGE_PREPARE: drawMenu(ID_Prepare); break; + case PAGE_CONTROL: drawMenu(ID_Control); break; + case PAGE_INFO_LEVELING: drawMenu(TERN(HAS_MESH, ID_Leveling, ID_InfoMain)); break; } dwinUpdateLCD(); } @@ -4252,24 +4253,24 @@ void JyersDWIN::menuControl() { EncoderState encoder_diffState = encoderReceiveAnalyze(); if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_CW && selection < getMenuSize(active_menu)) { - dwinDrawRectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, COLOR_BG_BLACK, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); selection++; // Select Down if (selection > scrollpos + MROWS) { scrollpos++; - dwinFrameAreaMove(1, 2, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); + dwinFrameAreaMove(1, 2, MLINE, COLOR_BG_BLACK, 0, 31, DWIN_WIDTH, 349); menuItemHandler(active_menu, selection); } - dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, COLOR_RECTANGLE), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); } else if (encoder_diffState == ENCODER_DIFF_CCW && selection > 0) { - dwinDrawRectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, COLOR_BG_BLACK, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); selection--; // Select Up if (selection < scrollpos) { scrollpos--; - dwinFrameAreaMove(1, 3, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); + dwinFrameAreaMove(1, 3, MLINE, COLOR_BG_BLACK, 0, 31, DWIN_WIDTH, 349); menuItemHandler(active_menu, selection); } - dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, COLOR_RECTANGLE), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); } else if (encoder_diffState == ENCODER_DIFF_ENTER) menuItemHandler(active_menu, selection, false); @@ -4284,18 +4285,18 @@ void JyersDWIN::valueControl() { else if (encoder_diffState == ENCODER_DIFF_CCW) tempvalue -= encoderRate.encoderMoveValue; else if (encoder_diffState == ENCODER_DIFF_ENTER) { - process = Menu; + process = Proc_Menu; encoderRate.enabled = false; drawFloat(tempvalue / valueunit, selection - scrollpos, false, valueunit); dwinUpdateLCD(); - if (active_menu == ZOffset && liveadjust) { + if (active_menu == ID_ZOffset && liveadjust) { planner.synchronize(); current_position.z += (tempvalue / valueunit - zoffsetvalue); planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder); current_position.z = 0; sync_plan_position(); } - else if (active_menu == Tune && selection == TUNE_ZOFFSET) { + else if (active_menu == ID_Tune && selection == TUNE_ZOFFSET) { gcode.process_subcommands_now(TS(F("M290Z"), p_float_t((tempvalue / valueunit - zoffsetvalue), 3))); } if (TERN0(PIDTEMP, valuepointer == &thermalManager.temp_hotend[0].pid.Ki) || TERN0(PIDTEMPBED, valuepointer == &thermalManager.temp_bed.pid.Ki)) @@ -4311,18 +4312,18 @@ void JyersDWIN::valueControl() { case 5: *(int8_t*)valuepointer = tempvalue / valueunit; break; } switch (active_menu) { - case Move: + case ID_Move: planner.synchronize(); planner.buffer_line(current_position, manual_feedrate_mm_s[selection - 1], active_extruder); break; #if HAS_MESH - case ManualMesh: + case ID_ManualMesh: planner.synchronize(); planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder); planner.synchronize(); break; - case UBLMesh: mesh_conf.manual_mesh_move(true); break; - case LevelManual: mesh_conf.manual_mesh_move(selection == LEVELING_M_OFFSET); break; + case ID_UBLMesh: mesh_conf.manual_mesh_move(true); break; + case ID_LevelManual: mesh_conf.manual_mesh_move(selection == LEVELING_M_OFFSET); break; #endif } if (funcpointer) funcpointer(); @@ -4331,7 +4332,7 @@ void JyersDWIN::valueControl() { LIMIT(tempvalue, valuemin * valueunit, valuemax * valueunit); drawFloat(tempvalue / valueunit, selection - scrollpos, true, valueunit); dwinUpdateLCD(); - if (active_menu == Move && livemove) { + if (active_menu == ID_Move && livemove) { *(float*)valuepointer = tempvalue / valueunit; planner.buffer_line(current_position, manual_feedrate_mm_s[selection - 1], active_extruder); } @@ -4345,7 +4346,7 @@ void JyersDWIN::optionControl() { else if (encoder_diffState == ENCODER_DIFF_CCW) tempvalue -= encoderRate.encoderMoveValue; else if (encoder_diffState == ENCODER_DIFF_ENTER) { - process = Menu; + process = Proc_Menu; encoderRate.enabled = false; if (valuepointer == &color_names) { switch (selection) { @@ -4392,7 +4393,7 @@ void JyersDWIN::fileControl() { time = millis() + 200; Scroller::Buffer buf; const char* const name = scroller.scroll(pos, buf, filename); - dwinDrawRectangle(1, Color_Bg_Black, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28); + dwinDrawRectangle(1, COLOR_BG_BLACK, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28); drawMenuItem(selection - scrollpos, card.flag.filenameIsDir ? ICON_More : ICON_File, name); dwinUpdateLCD(); } @@ -4400,37 +4401,37 @@ void JyersDWIN::fileControl() { return; } if (encoder_diffState == ENCODER_DIFF_CW && selection < card.get_num_items()) { - dwinDrawRectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, COLOR_BG_BLACK, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); if (selection > 0) { - dwinDrawRectangle(1, Color_Bg_Black, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28); + dwinDrawRectangle(1, COLOR_BG_BLACK, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28); drawSDItem(selection, selection - scrollpos); } scroller.reset(); selection++; // Select Down if (selection > scrollpos + MROWS) { scrollpos++; - dwinFrameAreaMove(1, 2, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); + dwinFrameAreaMove(1, 2, MLINE, COLOR_BG_BLACK, 0, 31, DWIN_WIDTH, 349); drawSDItem(selection, selection - scrollpos); } - dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, COLOR_RECTANGLE), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); } else if (encoder_diffState == ENCODER_DIFF_CCW && selection > 0) { - dwinDrawRectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); - dwinDrawRectangle(1, Color_Bg_Black, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28); + dwinDrawRectangle(1, COLOR_BG_BLACK, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, COLOR_BG_BLACK, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28); drawSDItem(selection, selection - scrollpos); scroller.reset(); selection--; // Select Up if (selection < scrollpos) { scrollpos--; - dwinFrameAreaMove(1, 3, MLINE, Color_Bg_Black, 0, 31, DWIN_WIDTH, 349); + dwinFrameAreaMove(1, 3, MLINE, COLOR_BG_BLACK, 0, 31, DWIN_WIDTH, 349); drawSDItem(selection, selection - scrollpos); } - dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, Rectangle_Color), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); + dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, COLOR_RECTANGLE), 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33); } else if (encoder_diffState == ENCODER_DIFF_ENTER) { if (selection == 0) { if (card.flag.workDirIsRoot) { - process = Main; + process = Proc_Main; drawMainMenu(); } else { @@ -4466,7 +4467,7 @@ void JyersDWIN::printScreenControl() { else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (selection) { case PRINT_SETUP: - drawMenu(Tune); + drawMenu(ID_Tune); updateStatusBar(true); break; case PRINT_PAUSE_RESUME: @@ -4494,9 +4495,9 @@ void JyersDWIN::printScreenControl() { drawPrintScreen(); } else - popupHandler(Pause); + popupHandler(Popup_Pause); break; - case PRINT_STOP: popupHandler(Stop); break; + case PRINT_STOP: popupHandler(Popup_Stop); break; } } dwinUpdateLCD(); @@ -4515,14 +4516,14 @@ void JyersDWIN::popupControl() { } else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (popup) { - case Pause: + case Popup_Pause: if (selection == 0) { if (sdprint) { #if ENABLED(POWER_LOSS_RECOVERY) if (recovery.enabled) recovery.save(true); #endif #if ENABLED(PARK_HEAD_ON_PAUSE) - popupHandler(Home, true); + popupHandler(Popup_Home, true); #if HAS_MEDIA if (IS_SD_PRINTING()) card.pauseSDPrint(); #endif @@ -4543,7 +4544,7 @@ void JyersDWIN::popupControl() { } drawPrintScreen(); break; - case Stop: + case Popup_Stop: if (selection == 0) { if (sdprint) { ui.abort_print(); @@ -4556,7 +4557,7 @@ void JyersDWIN::popupControl() { else drawPrintScreen(); break; - case Resume: + case Popup_Resume: if (selection == 0) queue.inject(F("M1000")); else { @@ -4566,11 +4567,11 @@ void JyersDWIN::popupControl() { break; #if HAS_HOTEND - case ETemp: + case Popup_ETemp: if (selection == 0) { thermalManager.setTargetHotend(EXTRUDE_MINTEMP, 0); TERN_(HAS_FAN, thermalManager.set_fan_speed(0, MAX_FAN_SPEED)); - drawMenu(PreheatHotend); + drawMenu(ID_PreheatHotend); } else redrawMenu(true, true, false); @@ -4578,7 +4579,7 @@ void JyersDWIN::popupControl() { #endif #if HAS_BED_PROBE - case ManualProbing: + case Popup_ManualProbing: if (selection == 0) { const float dif = probe.probe_at_point(current_position.x, current_position.y, PROBE_PT_STOW, 0, false) - corner_avg; updateStatus(TS(F("Corner is "), p_float_t(abs(dif), 3), "mm ", dif > 0 ? F("high") : F("low"))); @@ -4591,37 +4592,37 @@ void JyersDWIN::popupControl() { #endif #if ENABLED(ADVANCED_PAUSE_FEATURE) - case ConfFilChange: + case Popup_ConfFilChange: if (selection == 0) { if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) - popupHandler(ETemp); + popupHandler(Popup_ETemp); else { if (thermalManager.temp_hotend[0].is_below_target(2)) { - popupHandler(Heating); + popupHandler(Popup_Heating); thermalManager.wait_for_hotend(0); } - popupHandler(FilChange); + popupHandler(Popup_FilChange); gcode.process_subcommands_now(TS(F("M600B1R"), thermalManager.temp_hotend[0].target)); } } else redrawMenu(true, true, false); break; - case PurgeMore: + case Popup_PurgeMore: if (selection == 0) { pause_menu_response = PAUSE_RESPONSE_EXTRUDE_MORE; - popupHandler(FilChange); + popupHandler(Popup_FilChange); } else { pause_menu_response = PAUSE_RESPONSE_RESUME_PRINT; - if (printing) popupHandler(Resuming); - else redrawMenu(true, true, active_menu == PreheatHotend); + if (printing) popupHandler(Popup_Resuming); + else redrawMenu(true, true, active_menu == ID_PreheatHotend); } break; #endif // ADVANCED_PAUSE_FEATURE #if HAS_MESH - case SaveLevel: + case Popup_SaveLevel: if (selection == 0) { #if ENABLED(AUTO_BED_LEVELING_UBL) gcode.process_subcommands_now(F("G29 S")); @@ -4631,12 +4632,12 @@ void JyersDWIN::popupControl() { audioFeedback(settings.save()); #endif } - drawMenu(Leveling, LEVELING_GET_MESH); + drawMenu(ID_Leveling, LEVELING_GET_MESH); break; #endif #if ENABLED(AUTO_BED_LEVELING_UBL) - case MeshSlot: + case Popup_MeshSlot: if (selection == 0) bedlevel.storage_slot = 0; redrawMenu(true, true); break; @@ -4652,15 +4653,15 @@ void JyersDWIN::confirmControl() { if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (popup) { - case Complete: + case Popup_Complete: drawMainMenu(); break; - case FilInsert: - popupHandler(FilChange); + case Popup_FilInsert: + popupHandler(Popup_FilChange); wait_for_user = false; break; - case HeaterTime: - popupHandler(Heating); + case Popup_HeaterTime: + popupHandler(Popup_Heating); wait_for_user = false; break; default: @@ -4687,7 +4688,7 @@ void JyersDWIN::setupValue(const_float_t value, const_float_t min, const_float_t valuemax = max; valueunit = unit; valuetype = type; - process = Value; + process = Proc_Value; encoderRate.enabled = true; drawFloat(tempvalue / unit, selection - scrollpos, true, valueunit); } @@ -4728,7 +4729,7 @@ void JyersDWIN::modifyOption(const uint8_t value, const char * const * options, valuepointer = const_cast(options); valuemin = 0; valuemax = max; - process = Option; + process = Proc_Option; encoderRate.enabled = true; drawOption(value, options, selection - scrollpos, true); } @@ -4785,14 +4786,14 @@ void JyersDWIN::update() { stateUpdate(); screenUpdate(); switch (process) { - case Main: mainMenuControl(); break; - case Menu: menuControl(); break; - case Value: valueControl(); break; - case Option: optionControl(); break; - case File: fileControl(); break; - case Print: printScreenControl(); break; - case Popup: popupControl(); break; - case Confirm: confirmControl(); break; + case Proc_Main: mainMenuControl(); break; + case Proc_Menu: menuControl(); break; + case Proc_Value: valueControl(); break; + case Proc_Option: optionControl(); break; + case Proc_File: fileControl(); break; + case Proc_Print: printScreenControl(); break; + case Proc_Popup: popupControl(); break; + case Proc_Confirm: confirmControl(); break; } } @@ -4809,18 +4810,18 @@ void JyersDWIN::stateUpdate() { } if (print_job_timer.isPaused() != paused) { paused = print_job_timer.isPaused(); - if (process == Print) printScreenIcons(); - if (process == Wait && !paused) redrawMenu(true, true); + if (process == Proc_Print) printScreenIcons(); + if (process == Proc_Wait && !paused) redrawMenu(true, true); } - if (wait_for_user && !(process == Confirm) && !print_job_timer.isPaused()) - confirmHandler(UserInput); + if (wait_for_user && !(process == Proc_Confirm) && !print_job_timer.isPaused()) + confirmHandler(Popup_UserInput); #if ENABLED(ADVANCED_PAUSE_FEATURE) - if (process == Popup && popup == PurgeMore) { + if (process == Proc_Popup && popup == Popup_PurgeMore) { if (pause_menu_response == PAUSE_RESPONSE_EXTRUDE_MORE) - popupHandler(FilChange); + popupHandler(Popup_FilChange); else if (pause_menu_response == PAUSE_RESPONSE_RESUME_PRINT) { - if (printing) popupHandler(Resuming); - else redrawMenu(true, true, active_menu == PreheatHotend); + if (printing) popupHandler(Popup_Resuming); + else redrawMenu(true, true, active_menu == ID_PreheatHotend); } } #endif @@ -4828,7 +4829,7 @@ void JyersDWIN::stateUpdate() { static bool ranout = false; if (runout.filament_ran_out != ranout) { ranout = runout.filament_ran_out; - if (ranout) popupHandler(Runout); + if (ranout) popupHandler(Popup_Runout); } #endif } @@ -4839,7 +4840,7 @@ void JyersDWIN::screenUpdate() { if (ELAPSED(ms, scrltime)) { scrltime = ms + 200; updateStatusBar(); - if (process == Print) drawPrintFilename(); + if (process == Proc_Print) drawPrintFilename(); } static millis_t statustime = 0; @@ -4851,7 +4852,7 @@ void JyersDWIN::screenUpdate() { static millis_t printtime = 0; if (ELAPSED(ms, printtime)) { printtime = ms + 1000; - if (process == Print) { + if (process == Proc_Print) { drawPrintProgressBar(); drawPrintProgressElapsed(); TERN_(SET_REMAINING_TIME, drawPrintProgressRemain()); @@ -4861,7 +4862,7 @@ void JyersDWIN::screenUpdate() { static bool mounted = card.isMounted(); if (mounted != card.isMounted()) { mounted = card.isMounted(); - if (process == File) + if (process == Proc_File) drawSDList(); } @@ -4895,14 +4896,14 @@ void JyersDWIN::screenUpdate() { #endif #endif // HAS_ZOFFSET_ITEM - if (process == Menu || process == Value) { + if (process == Proc_Menu || process == Proc_Value) { switch (active_menu) { - case TempMenu: + case ID_TempMenu: #if HAS_HOTEND if (thermalManager.temp_hotend[0].target != hotendtarget) { hotendtarget = thermalManager.temp_hotend[0].target; if (scrollpos <= TEMP_HOTEND && TEMP_HOTEND <= scrollpos + MROWS) { - if (process != Value || selection != TEMP_HOTEND - scrollpos) + if (process != Proc_Value || selection != TEMP_HOTEND - scrollpos) drawFloat(thermalManager.temp_hotend[0].target, TEMP_HOTEND - scrollpos, false, 1); } } @@ -4911,7 +4912,7 @@ void JyersDWIN::screenUpdate() { if (thermalManager.temp_bed.target != bedtarget) { bedtarget = thermalManager.temp_bed.target; if (scrollpos <= TEMP_BED && TEMP_BED <= scrollpos + MROWS) { - if (process != Value || selection != TEMP_HOTEND - scrollpos) + if (process != Proc_Value || selection != TEMP_HOTEND - scrollpos) drawFloat(thermalManager.temp_bed.target, TEMP_BED - scrollpos, false, 1); } } @@ -4920,18 +4921,18 @@ void JyersDWIN::screenUpdate() { if (thermalManager.fan_speed[0] != fanspeed) { fanspeed = thermalManager.fan_speed[0]; if (scrollpos <= TEMP_FAN && TEMP_FAN <= scrollpos + MROWS) { - if (process != Value || selection != TEMP_HOTEND - scrollpos) + if (process != Proc_Value || selection != TEMP_HOTEND - scrollpos) drawFloat(thermalManager.fan_speed[0], TEMP_FAN - scrollpos, false, 1); } } #endif break; - case Tune: + case ID_Tune: #if HAS_HOTEND if (thermalManager.temp_hotend[0].target != hotendtarget) { hotendtarget = thermalManager.temp_hotend[0].target; if (scrollpos <= TUNE_HOTEND && TUNE_HOTEND <= scrollpos + MROWS) { - if (process != Value || selection != TEMP_HOTEND - scrollpos) + if (process != Proc_Value || selection != TEMP_HOTEND - scrollpos) drawFloat(thermalManager.temp_hotend[0].target, TUNE_HOTEND - scrollpos, false, 1); } } @@ -4940,7 +4941,7 @@ void JyersDWIN::screenUpdate() { if (thermalManager.temp_bed.target != bedtarget) { bedtarget = thermalManager.temp_bed.target; if (scrollpos <= TUNE_BED && TUNE_BED <= scrollpos + MROWS) { - if (process != Value || selection != TEMP_HOTEND - scrollpos) + if (process != Proc_Value || selection != TEMP_HOTEND - scrollpos) drawFloat(thermalManager.temp_bed.target, TUNE_BED - scrollpos, false, 1); } } @@ -4949,7 +4950,7 @@ void JyersDWIN::screenUpdate() { if (thermalManager.fan_speed[0] != fanspeed) { fanspeed = thermalManager.fan_speed[0]; if (scrollpos <= TUNE_FAN && TUNE_FAN <= scrollpos + MROWS) { - if (process != Value || selection != TEMP_HOTEND - scrollpos) + if (process != Proc_Value || selection != TEMP_HOTEND - scrollpos) drawFloat(thermalManager.fan_speed[0], TUNE_FAN - scrollpos, false, 1); } } @@ -5017,7 +5018,7 @@ void MarlinUI::init_lcd() { encoderConfiguration(); for (uint16_t t = 0; t <= 100; t += 2) { dwinIconShow(ICON, ICON_Bar, 15, 260); - dwinDrawRectangle(1, Color_Bg_Black, 15 + t * 242 / 100, 260, 257, 280); + dwinDrawRectangle(1, COLOR_BG_BLACK, 15 + t * 242 / 100, 260, 257, 280); dwinUpdateLCD(); delay(20); } @@ -5030,10 +5031,10 @@ void MarlinUI::init_lcd() { #if ENABLED(ADVANCED_PAUSE_FEATURE) void MarlinUI::pause_show_message(const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, const uint8_t extruder/*=active_extruder*/) { switch (message) { - case PAUSE_MESSAGE_INSERT: jyersDWIN.confirmHandler(FilInsert); break; + case PAUSE_MESSAGE_INSERT: jyersDWIN.confirmHandler(Popup_FilInsert); break; case PAUSE_MESSAGE_PURGE: - case PAUSE_MESSAGE_OPTION: jyersDWIN.popupHandler(PurgeMore); break; - case PAUSE_MESSAGE_HEAT: jyersDWIN.confirmHandler(HeaterTime); break; + case PAUSE_MESSAGE_OPTION: jyersDWIN.popupHandler(Popup_PurgeMore); break; + case PAUSE_MESSAGE_HEAT: jyersDWIN.confirmHandler(Popup_HeaterTime); break; case PAUSE_MESSAGE_WAITING: jyersDWIN.drawPrintScreen(); break; default: break; } diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.h b/Marlin/src/lcd/e3v2/jyersui/dwin.h index 98af1c4cbd..17b6176f3d 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.h +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.h @@ -38,61 +38,87 @@ //#define DWIN_CREALITY_LCD_CUSTOM_ICONS enum processID : uint8_t { - Main, Print, Menu, Value, Option, File, Popup, Confirm, Wait + Proc_Main, Proc_Print, Proc_Menu, Proc_Value, Proc_Option, + Proc_File, Proc_Popup, Proc_Confirm, Proc_Wait }; enum PopupID : uint8_t { - Pause, Stop, Resume, SaveLevel, ETemp, ConfFilChange, PurgeMore, MeshSlot, - Level, Home, MoveWait, Heating, FilLoad, FilChange, TempWarn, Runout, PIDWait, MPCWait, Resuming, ManualProbing, - FilInsert, HeaterTime, UserInput, LevelError, InvalidMesh, UI, Complete, Custom + Popup_Pause, + Popup_Stop, + Popup_Resume, + Popup_SaveLevel, + Popup_ETemp, + Popup_ConfFilChange, + Popup_PurgeMore, + Popup_MeshSlot, + Popup_Level, + Popup_Home, + Popup_MoveWait, + Popup_Heating, + Popup_FilLoad, + Popup_FilChange, + Popup_TempWarn, + Popup_Runout, + Popup_PIDWait, + Popup_MPCWait, + Popup_Resuming, + Popup_ManualProbing, + Popup_FilInsert, + Popup_HeaterTime, + Popup_UserInput, + Popup_LevelError, + Popup_InvalidMesh, + Popup_UI, + Popup_Complete, + Popup_Custom }; enum menuID : uint8_t { - MainMenu, - Prepare, - Move, - HomeMenu, - ManualLevel, - ZOffset, - Preheat, - ChangeFilament, - MenuCustom, - Control, - TempMenu, - PID, - HotendPID, - BedPID, + ID_MainMenu, + ID_Prepare, + ID_Move, + ID_HomeMenu, + ID_ManualLevel, + ID_ZOffset, + ID_Preheat, + ID_ChangeFilament, + ID_MenuCustom, + ID_Control, + ID_TempMenu, + ID_PID, + ID_HotendPID, + ID_BedPID, #if HAS_PREHEAT - #define _PREHEAT_ID(N) Preheat##N, + #define _PREHEAT_ID(N) ID_Preheat##N, REPEAT_1(PREHEAT_COUNT, _PREHEAT_ID) #endif #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) - MPC, + ID_MPC, #endif - Motion, - HomeOffsets, - MaxSpeed, - MaxAcceleration, - MaxJerk, - Steps, - Visual, - ColorSettings, - Advanced, - ProbeMenu, + ID_Motion, + ID_HomeOffsets, + ID_MaxSpeed, + ID_MaxAcceleration, + ID_MaxJerk, + ID_Steps, + ID_Visual, + ID_ColorSettings, + ID_Advanced, + ID_ProbeMenu, #if HAS_TRINAMIC_CONFIG - TMCMenu, + ID_TMCMenu, #endif - Info, - Leveling, - LevelManual, - LevelView, - MeshViewer, - LevelSettings, - ManualMesh, - UBLMesh, - InfoMain, - Tune, - PreheatHotend + ID_Info, + ID_Leveling, + ID_LevelManual, + ID_LevelView, + ID_MeshViewer, + ID_LevelSettings, + ID_ManualMesh, + ID_UBLMesh, + ID_InfoMain, + ID_Tune, + ID_PreheatHotend }; // Custom icons @@ -129,27 +155,27 @@ enum colorID : uint8_t { }; #define Custom_Colors 10 -#define Color_Aqua RGB(0x00,0x3F,0x1F) -#define Color_Light_White 0xBDD7 -#define Color_Green RGB(0x00,0x3F,0x00) -#define Color_Light_Green 0x3460 -#define Color_Cyan 0x07FF -#define Color_Light_Cyan 0x04F3 -#define Color_Blue 0x015F -#define Color_Light_Blue 0x3A6A -#define Color_Magenta 0xF81F -#define Color_Light_Magenta 0x9813 -#define Color_Light_Red 0x8800 -#define Color_Orange 0xFA20 -#define Color_Light_Orange 0xFBC0 -#define Color_Light_Yellow 0x8BE0 -#define Color_Brown 0xCC27 -#define Color_Light_Brown 0x6204 -#define Color_Black 0x0000 -#define Color_Grey 0x18E3 -#define Check_Color 0x4E5C // Check-box check color -#define Confirm_Color 0x34B9 -#define Cancel_Color 0x3186 +#define COLOR_AQUA RGB(0x00,0x3F,0x1F) +#define COLOR_LIGHT_WHITE 0xBDD7 +#define COLOR_GREEN RGB(0x00,0x3F,0x00) +#define COLOR_LIGHT_GREEN 0x3460 +#define COLOR_CYAN 0x07FF +#define COLOR_LIGHT_CYAN 0x04F3 +#define COLOR_BLUE 0x015F +#define COLOR_LIGHT_BLUE 0x3A6A +#define COLOR_MAGENTA 0xF81F +#define COLOR_LIGHT_MAGENTA 0x9813 +#define COLOR_LIGHT_RED 0x8800 +#define COLOR_ORANGE 0xFA20 +#define COLOR_LIGHT_ORANGE 0xFBC0 +#define COLOR_LIGHT_YELLOW 0x8BE0 +#define COLOR_BROWN 0xCC27 +#define COLOR_LIGHT_BROWN 0x6204 +#define COLOR_BLACK 0x0000 +#define COLOR_GREY 0x18E3 +#define COLOR_CHECKBOX 0x4E5C // Check-box check color +#define COLOR_CONFIRM 0x34B9 +#define COLOR_CANCEL 0x3186 class JyersDWIN { public: diff --git a/Marlin/src/lcd/e3v2/marlinui/dwin_lcd.cpp b/Marlin/src/lcd/e3v2/marlinui/dwin_lcd.cpp index b6c26d4fe1..13c6de5480 100644 --- a/Marlin/src/lcd/e3v2/marlinui/dwin_lcd.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/dwin_lcd.cpp @@ -45,7 +45,7 @@ void dwinStartup() { const bool success = dwinHandshake(); if (success) DEBUG_ECHOLNPGM("ok."); else DEBUG_ECHOLNPGM("error."); dwinFrameSetDir(TERN(DWIN_MARLINUI_LANDSCAPE, 0, 1)); - dwinFrameClear(Color_Bg_Black); // MarlinUI handles the bootscreen so just clear here + dwinFrameClear(COLOR_BG_BLACK); // MarlinUI handles the bootscreen so just clear here dwinJPGShowAndCache(3); dwinUpdateLCD(); } diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp index 3cf89e7b3e..ebfb10c8c0 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp @@ -48,7 +48,7 @@ // DWIN printing specifies the font on each string operation // but we'll make the font modal for Marlin -dwin_font_t dwin_font = { font8x16, 8, 16, Color_White, Color_Bg_Black, true }; +dwin_font_t dwin_font = { font8x16, 8, 16, COLOR_WHITE, COLOR_BG_BLACK, true }; void MarlinUI::set_font(const uint8_t font_nr) { if (font_nr != dwin_font.index) { dwin_font.index = font_nr; @@ -84,7 +84,7 @@ void MarlinUI::init_lcd() { dwinStartup(); } void MarlinUI::clear_lcd() { dwinIconAnimationControl(0x0000); // disable all icon animations dwinJPGShowAndCache(3); - dwinFrameClear(Color_Bg_Black); + dwinFrameClear(COLOR_BG_BLACK); dwinUpdateLCD(); did_first_redraw = false; @@ -109,7 +109,7 @@ void MarlinUI::clear_lcd() { #define VERSION_Y 84 #endif - dwinDrawString(false, font10x20, Color_Yellow, Color_Bg_Black, INFO_CENTER - (dwin_string.length * 10) / 2, VERSION_Y, S(dwin_string.string())); + dwinDrawString(false, font10x20, COLOR_YELLOW, COLOR_BG_BLACK, INFO_CENTER - (dwin_string.length * 10) / 2, VERSION_Y, S(dwin_string.string())); TERN_(SHOW_CUSTOM_BOOTSCREEN, safe_delay(CUSTOM_BOOTSCREEN_TIMEOUT)); clear_lcd(); @@ -126,7 +126,7 @@ void MarlinUI::clear_lcd() { dwinIconShow(BOOT_ICON, ICON_MarlinURL, INFO_CENTER - 100 / 2, 152); dwinIconShow(BOOT_ICON, ICON_Copyright, INFO_CENTER - 126 / 2, 200); #endif - dwinDrawString(false, font10x20, Color_Yellow, Color_Bg_Black, INFO_CENTER - (dwin_string.length * 10) / 2, VERSION_Y, S(dwin_string.string())); + dwinDrawString(false, font10x20, COLOR_YELLOW, COLOR_BG_BLACK, INFO_CENTER - (dwin_string.length * 10) / 2, VERSION_Y, S(dwin_string.string())); dwinUpdateLCD(); } @@ -140,14 +140,14 @@ void MarlinUI::clear_lcd() { // The kill screen is displayed for unrecoverable conditions void MarlinUI::draw_kill_screen() { set_font(DWIN_FONT_ALERT); - dwinFrameClear(Color_Bg_Black); - dwin_font.fg = Color_Error_Red; + dwinFrameClear(COLOR_BG_BLACK); + dwin_font.fg = COLOR_ERROR_RED; dwin_font.solid = false; - dwinDrawRectangle(1, Color_Bg_Window, 20, 20, LCD_PIXEL_WIDTH - 20, LCD_PIXEL_HEIGHT - 20); + dwinDrawRectangle(1, COLOR_BG_WINDOW, 20, 20, LCD_PIXEL_WIDTH - 20, LCD_PIXEL_HEIGHT - 20); // make the frame a few pixels thick - dwinDrawRectangle(0, Color_Yellow, 20, 20, LCD_PIXEL_WIDTH - 20, LCD_PIXEL_HEIGHT - 20); - dwinDrawRectangle(0, Color_Yellow, 21, 21, LCD_PIXEL_WIDTH - 21, LCD_PIXEL_HEIGHT - 21); - dwinDrawRectangle(0, Color_Yellow, 22, 22, LCD_PIXEL_WIDTH - 22, LCD_PIXEL_HEIGHT - 22); + dwinDrawRectangle(0, COLOR_YELLOW, 20, 20, LCD_PIXEL_WIDTH - 20, LCD_PIXEL_HEIGHT - 20); + dwinDrawRectangle(0, COLOR_YELLOW, 21, 21, LCD_PIXEL_WIDTH - 21, LCD_PIXEL_HEIGHT - 21); + dwinDrawRectangle(0, COLOR_YELLOW, 22, 22, LCD_PIXEL_WIDTH - 22, LCD_PIXEL_HEIGHT - 22); uint8_t cx = (LCD_PIXEL_WIDTH / dwin_font.width / 2), cy = (LCD_PIXEL_HEIGHT / dwin_font.height / 2); @@ -178,8 +178,8 @@ void MarlinUI::draw_kill_screen() { void MarlinUI::draw_status_message(const bool blink) { set_font(DWIN_FONT_STAT); dwin_font.solid = true; - dwin_font.fg = Color_White; - dwin_font.bg = Color_Bg_Black; + dwin_font.fg = COLOR_WHITE; + dwin_font.bg = COLOR_BG_BLACK; lcd_moveto_xy(0, LCD_PIXEL_HEIGHT - (STAT_FONT_HEIGHT) - 1); constexpr uint8_t max_status_chars = (LCD_PIXEL_WIDTH) / (STAT_FONT_WIDTH); @@ -267,7 +267,7 @@ void MarlinUI::draw_status_message(const bool blink) { void MarlinUI::draw_hotend_status(const uint8_t row, const uint8_t extruder) { dwin_font.solid = false; - dwin_font.fg = Color_White; + dwin_font.fg = COLOR_WHITE; dwin_string.set('E'); dwin_string.add('1' + extruder); dwin_string.add(' '); @@ -293,10 +293,10 @@ void MarlinUI::draw_status_message(const bool blink) { dwinDrawBox(1, Color_Bg_Heading, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); else { #if ENABLED(MENU_HOLLOW_FRAME) - dwinDrawBox(1, Color_Bg_Black, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); - if (sel) dwinDrawBox(0, Select_Color, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); + dwinDrawBox(1, COLOR_BG_BLACK, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); + if (sel) dwinDrawBox(0, COLOR_SELECT, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); #else - dwinDrawBox(1, sel ? Select_Color : Color_Bg_Black, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); + dwinDrawBox(1, sel ? COLOR_SELECT : COLOR_BG_BLACK, 0, y, LCD_PIXEL_WIDTH, MENU_LINE_HEIGHT - 1); #endif } @@ -311,7 +311,7 @@ void MarlinUI::draw_status_message(const bool blink) { if (mark_as_selected(row, (bool)(style & SS_INVERT), true)) { ui.set_font(DWIN_FONT_MENU); dwin_font.solid = false; - dwin_font.fg = Color_White; + dwin_font.fg = COLOR_WHITE; dwin_string.set(); @@ -356,7 +356,7 @@ void MarlinUI::draw_status_message(const bool blink) { if (mark_as_selected(row, sel)) { ui.set_font(DWIN_FONT_MENU); dwin_font.solid = false; - dwin_font.fg = Color_White; + dwin_font.fg = COLOR_WHITE; dwin_string.set(ftpl, itemIndex, itemStringC, itemStringF); @@ -377,7 +377,7 @@ void MarlinUI::draw_status_message(const bool blink) { if (mark_as_selected(row, sel)) { ui.set_font(DWIN_FONT_MENU); dwin_font.solid = false; - dwin_font.fg = Color_White; + dwin_font.fg = COLOR_WHITE; const uint8_t vallen = (pgm ? utf8_strlen_P(inStr) : utf8_strlen(S(inStr))); @@ -388,7 +388,7 @@ void MarlinUI::draw_status_message(const bool blink) { lcd_put_dwin_string(); if (vallen) { - dwin_font.fg = Color_Yellow; + dwin_font.fg = COLOR_YELLOW; dwin_string.set(inStr); lcd_moveto(LCD_WIDTH - vallen - 1, row); lcd_put_dwin_string(); @@ -410,7 +410,7 @@ void MarlinUI::draw_status_message(const bool blink) { // Assume the label is alpha-numeric (with a descender) const uint16_t row = (LCD_HEIGHT / 2) - 1; - dwin_font.fg = Color_White; + dwin_font.fg = COLOR_WHITE; dwin_font.solid = true; lcd_moveto((LCD_WIDTH - labellen + !!vallen) / 2, row); lcd_put_dwin_string(); @@ -420,7 +420,7 @@ void MarlinUI::draw_status_message(const bool blink) { dwin_string.set(value); const dwin_coord_t by = (row * MENU_LINE_HEIGHT) + MENU_FONT_HEIGHT + EXTRA_ROW_HEIGHT / 2; - dwinDrawString(true, font16x32, Color_Yellow, Color_Bg_Black, (LCD_PIXEL_WIDTH - vallen * 16) / 2, by, S(dwin_string.string())); + dwinDrawString(true, font16x32, COLOR_YELLOW, COLOR_BG_BLACK, (LCD_PIXEL_WIDTH - vallen * 16) / 2, by, S(dwin_string.string())); if (ui.can_show_slider()) { @@ -430,11 +430,11 @@ void MarlinUI::draw_status_message(const bool blink) { slider_y = by + 32 + 4, amount = ui.encoderPosition * slider_length / maxEditValue; - dwinDrawRectangle(1, Color_Bg_Window, slider_x - 1, slider_y - 1, slider_x - 1 + slider_length + 2 - 1, slider_y - 1 + slider_height + 2 - 1); + dwinDrawRectangle(1, COLOR_BG_WINDOW, slider_x - 1, slider_y - 1, slider_x - 1 + slider_length + 2 - 1, slider_y - 1 + slider_height + 2 - 1); if (amount > 0) - dwinDrawBox(1, BarFill_Color, slider_x, slider_y, amount, slider_height); + dwinDrawBox(1, COLOR_BARFILL, slider_x, slider_y, amount, slider_height); if (amount < slider_length) - dwinDrawBox(1, Color_Bg_Black, slider_x + amount, slider_y, slider_length - amount, slider_height); + dwinDrawBox(1, COLOR_BG_BLACK, slider_x + amount, slider_y, slider_length - amount, slider_height); } } } @@ -445,7 +445,7 @@ void MarlinUI::draw_status_message(const bool blink) { col = yesopt ? LCD_WIDTH - mar - len : mar, row = (LCD_HEIGHT >= 8 ? LCD_HEIGHT / 2 + 3 : LCD_HEIGHT - 1); lcd_moveto(col, row); - dwinDrawBox(1, inv ? Select_Color : Color_Bg_Black, cursor.x - dwin_font.width, cursor.y + 1, dwin_font.width * (len + 2), dwin_font.height + 2); + dwinDrawBox(1, inv ? COLOR_SELECT : COLOR_BG_BLACK, cursor.x - dwin_font.width, cursor.y + 1, dwin_font.width * (len + 2), dwin_font.height + 2); lcd_put_u8str(col, row, fstr); } @@ -455,7 +455,7 @@ void MarlinUI::draw_status_message(const bool blink) { ) { ui.set_font(DWIN_FONT_MENU); dwin_font.solid = false; - dwin_font.fg = Color_White; + dwin_font.fg = COLOR_WHITE; ui.draw_select_screen_prompt(pref, string, suff); if (no) draw_boxed_string(false, no, !yesno); if (yes) draw_boxed_string(true, yes, yesno); @@ -507,9 +507,9 @@ void MarlinUI::draw_status_message(const bool blink) { // Clear the Mesh Map // First draw the bigger box in White so we have a border around the mesh map box - dwinDrawRectangle(1, Color_White, x_offset - 2, y_offset - 2, x_offset + 2 + x_map_pixels, y_offset + 2 + y_map_pixels); + dwinDrawRectangle(1, COLOR_WHITE, x_offset - 2, y_offset - 2, x_offset + 2 + x_map_pixels, y_offset + 2 + y_map_pixels); // Now actually clear the mesh map box - dwinDrawRectangle(1, Color_Bg_Black, x_offset, y_offset, x_offset + x_map_pixels, y_offset + y_map_pixels); + dwinDrawRectangle(1, COLOR_BG_BLACK, x_offset, y_offset, x_offset + x_map_pixels, y_offset + y_map_pixels); // Fill in the Specified Mesh Point @@ -517,7 +517,7 @@ void MarlinUI::draw_status_message(const bool blink) { // invert the Y to get it to plot in the right location. const dwin_coord_t by = y_offset + y_plot_inv * pixels_per_y_mesh_pnt; - dwinDrawRectangle(1, Select_Color, + dwinDrawRectangle(1, COLOR_SELECT, x_offset + (x_plot * pixels_per_x_mesh_pnt), by, x_offset + (x_plot * pixels_per_x_mesh_pnt) + pixels_per_x_mesh_pnt, by + pixels_per_y_mesh_pnt ); @@ -527,12 +527,12 @@ void MarlinUI::draw_status_message(const bool blink) { dwin_coord_t y = y_offset + pixels_per_y_mesh_pnt / 2; for (uint8_t j = 0; j < (GRID_MAX_POINTS_Y); j++, y += pixels_per_y_mesh_pnt) for (uint8_t i = 0, x = sx; i < (GRID_MAX_POINTS_X); i++, x += pixels_per_x_mesh_pnt) - dwinDrawPoint(Color_White, 1, 1, x, y); + dwinDrawPoint(COLOR_WHITE, 1, 1, x, y); // Put Relevant Text on Display // Show X and Y positions at top of screen - dwin_font.fg = Color_White; + dwin_font.fg = COLOR_WHITE; dwin_font.solid = true; const xy_pos_t pos = { bedlevel.get_mesh_x(x_plot), bedlevel.get_mesh_y(y_plot) }, lpos = pos.asLogical(); @@ -586,7 +586,7 @@ void MarlinUI::draw_status_message(const bool blink) { const int nozzle = (LCD_PIXEL_WIDTH / 2) - 20; // Draw a representation of the nozzle - dwinDrawBox(1, Color_Bg_Black, nozzle + 3, 8, 48, 52); // 'clear' the area where the nozzle is drawn in case it was moved up/down + dwinDrawBox(1, COLOR_BG_BLACK, nozzle + 3, 8, 48, 52); // 'clear' the area where the nozzle is drawn in case it was moved up/down dwinIconShow(ICON, ICON_HotendOff, nozzle + 3, 10 - dir); dwinIconShow(ICON, ICON_BedLine, nozzle, 10 + 36); diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp index 381aea6b17..c0b7ba90ec 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp @@ -72,7 +72,7 @@ void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, const bool x_redraw = !ui.did_first_redraw || old_is_printing != print_job_timer.isRunning(); if (x_redraw) { dwin_string.set('X' + axis); - dwinDrawString(true, font16x32, Color_IconBlue, Color_Bg_Black, + dwinDrawString(true, font16x32, COLOR_ICONBLUE, COLOR_BG_BLACK, #if ENABLED(DWIN_MARLINUI_PORTRAIT) x + (utf8_strlen(value) * 14 - 14) / 2, y + 2 #else @@ -96,7 +96,7 @@ void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, if (TERN0(LCD_SHOW_E_TOTAL, x_redraw && axis == X_AXIS)) dwin_string.add(F(" ")); - dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, + dwinDrawString(true, font14x28, COLOR_WHITE, COLOR_BG_BLACK, #if ENABLED(DWIN_MARLINUI_PORTRAIT) x, y + 32 #else @@ -117,26 +117,26 @@ void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, if (e_redraw) { // Extra spaces to erase previous value dwin_string.set(F("E ")); - dwinDrawString(true, font16x32, Color_IconBlue, Color_Bg_Black, x + (4 * 14 / 2) - 7, y + 2, S(dwin_string.string())); + dwinDrawString(true, font16x32, COLOR_ICONBLUE, COLOR_BG_BLACK, x + (4 * 14 / 2) - 7, y + 2, S(dwin_string.string())); } dwin_string.set(ui16tostr5rj(value / scale)); - dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, x, y + 32, S(dwin_string.string())); + dwinDrawString(true, font14x28, COLOR_WHITE, COLOR_BG_BLACK, x, y + 32, S(dwin_string.string())); // Extra spaces to erase previous value - dwinDrawString(true, font14x28, Color_IconBlue, Color_Bg_Black, x + (5 * 14), y + 32, S(scale == 1 ? "mm " : "cm ")); + dwinDrawString(true, font14x28, COLOR_ICONBLUE, COLOR_BG_BLACK, x + (5 * 14), y + 32, S(scale == 1 ? "mm " : "cm ")); #else // !DWIN_MARLINUI_PORTRAIT if (e_redraw) { dwin_string.set(F("E ")); - dwinDrawString(true, font16x32, Color_IconBlue, Color_Bg_Black, x, y, S(dwin_string.string())); + dwinDrawString(true, font16x32, COLOR_ICONBLUE, COLOR_BG_BLACK, x, y, S(dwin_string.string())); } dwin_string.set(ui16tostr5rj(value / scale)); - dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, x + 32, y + 4, S(dwin_string.string())); + dwinDrawString(true, font14x28, COLOR_WHITE, COLOR_BG_BLACK, x + 32, y + 4, S(dwin_string.string())); - dwinDrawString(true, font14x28, Color_IconBlue, Color_Bg_Black, x + (32 + 70), y + 4, S(scale == 1 ? "mm " : "cm ")); + dwinDrawString(true, font14x28, COLOR_ICONBLUE, COLOR_BG_BLACK, x + (32 + 70), y + 4, S(scale == 1 ? "mm " : "cm ")); #endif // !DWIN_MARLINUI_PORTRAIT } @@ -154,13 +154,13 @@ void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, dwinIconAnimation(0, fan_on, ICON, ICON_Fan0, ICON_Fan3, x + fanx, y, 25); dwin_string.set(i8tostr3rj(thermalManager.scaledFanSpeedPercent(0))); dwin_string.add('%'); - dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, x, y + STATUS_FAN_HEIGHT, S(dwin_string.string())); + dwinDrawString(true, font14x28, COLOR_WHITE, COLOR_BG_BLACK, x, y + STATUS_FAN_HEIGHT, S(dwin_string.string())); } else { dwinIconAnimationControl(0x0000); // disable all icon animations (this is the only one) dwinIconShow(ICON, ICON_Fan0, x + fanx, y); dwin_string.set(F(" ")); - dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, x, y + STATUS_FAN_HEIGHT, S(dwin_string.string())); + dwinDrawString(true, font14x28, COLOR_WHITE, COLOR_BG_BLACK, x, y + STATUS_FAN_HEIGHT, S(dwin_string.string())); } } #endif @@ -230,7 +230,7 @@ FORCE_INLINE void _draw_heater_status(const heater_id_t heater, const uint16_t x if (t_draw) { dwin_string.set(i16tostr3rj(tt + 0.5)); dwin_string.add(LCD_STR_DEGREE); - dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, x, y, S(dwin_string.string())); + dwinDrawString(true, font14x28, COLOR_WHITE, COLOR_BG_BLACK, x, y, S(dwin_string.string())); } // Draw heater icon with on / off / leveled states @@ -243,7 +243,7 @@ FORCE_INLINE void _draw_heater_status(const heater_id_t heater, const uint16_t x if (c_draw) { dwin_string.set(i16tostr3rj(tc + 0.5)); dwin_string.add(LCD_STR_DEGREE); - dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, x, y + 70, S(dwin_string.string())); + dwinDrawString(true, font14x28, COLOR_WHITE, COLOR_BG_BLACK, x, y + 70, S(dwin_string.string())); } } @@ -253,12 +253,12 @@ FORCE_INLINE void _draw_heater_status(const heater_id_t heater, const uint16_t x FORCE_INLINE void _draw_feedrate_status(const char *value, uint16_t x, uint16_t y) { if (!ui.did_first_redraw) { dwin_string.set(LCD_STR_FEEDRATE); - dwinDrawString(true, font14x28, Color_IconBlue, Color_Bg_Black, x, y, S(dwin_string.string())); + dwinDrawString(true, font14x28, COLOR_ICONBLUE, COLOR_BG_BLACK, x, y, S(dwin_string.string())); } dwin_string.set(value); dwin_string.add('%'); - dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, x + 14, y, S(dwin_string.string())); + dwinDrawString(true, font14x28, COLOR_WHITE, COLOR_BG_BLACK, x + 14, y, S(dwin_string.string())); } /** @@ -281,7 +281,7 @@ void MarlinUI::draw_status_screen() { ); // Draw a frame around the x/y/z values - dwinDrawRectangle(0, Select_Color, + dwinDrawRectangle(0, COLOR_SELECT, #if ENABLED(DWIN_MARLINUI_PORTRAIT) 0, 193, LCD_PIXEL_WIDTH - 1, 260 #else @@ -358,7 +358,7 @@ void MarlinUI::draw_status_screen() { time.toDigital(buffer); dwin_string.add(prefix); dwin_string.add(buffer); - dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, (LCD_PIXEL_WIDTH - ((dwin_string.length + 1) * 14)), 290, S(dwin_string.string())); + dwinDrawString(true, font14x28, COLOR_WHITE, COLOR_BG_BLACK, (LCD_PIXEL_WIDTH - ((dwin_string.length + 1) * 14)), 290, S(dwin_string.string())); #else @@ -367,23 +367,23 @@ void MarlinUI::draw_status_screen() { time.toDigital(buffer); dwin_string.set(' '); dwin_string.add(buffer); - dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, 230, 170, S(dwin_string.string())); + dwinDrawString(true, font14x28, COLOR_WHITE, COLOR_BG_BLACK, 230, 170, S(dwin_string.string())); #if ENABLED(SHOW_REMAINING_TIME) if (print_job_timer.isRunning()) { time = get_remaining_time(); - dwinDrawString(true, font14x28, Color_IconBlue, Color_Bg_Black, 336, 170, S(" R ")); + dwinDrawString(true, font14x28, COLOR_ICONBLUE, COLOR_BG_BLACK, 336, 170, S(" R ")); if (print_job_timer.isPaused() && blink) dwin_string.set(F(" ")); else { time.toDigital(buffer); dwin_string.set(buffer); } - dwinDrawString(true, font14x28, Color_White, Color_Bg_Black, 378, 170, S(dwin_string.string())); + dwinDrawString(true, font14x28, COLOR_WHITE, COLOR_BG_BLACK, 378, 170, S(dwin_string.string())); } else if (!ui.did_first_redraw || old_is_printing != print_job_timer.isRunning()) { dwin_string.set(F(" ")); - dwinDrawString(true, font14x28, Color_IconBlue, Color_Bg_Black, 336, 170, S(dwin_string.string())); + dwinDrawString(true, font14x28, COLOR_ICONBLUE, COLOR_BG_BLACK, 336, 170, S(dwin_string.string())); } #endif #endif @@ -403,7 +403,7 @@ void MarlinUI::draw_status_screen() { const progress_t progress = TERN(HAS_PRINT_PROGRESS_PERMYRIAD, get_progress_permyriad, get_progress_percent)(); if (!ui.did_first_redraw) - dwinDrawRectangle(0, Select_Color, pb_left, pb_top, pb_right, pb_bottom); // Outline + dwinDrawRectangle(0, COLOR_SELECT, pb_left, pb_top, pb_right, pb_bottom); // Outline static uint16_t old_solid = 50; const uint16_t pb_solid = (pb_width - 2) * (progress / (PROGRESS_SCALE)) * 0.01f; @@ -411,16 +411,16 @@ void MarlinUI::draw_status_screen() { if (p_draw) { //if (pb_solid) - dwinDrawRectangle(1, Select_Color, pb_left + 1, pb_top + 1, pb_left + pb_solid, pb_bottom - 1); // Fill the solid part + dwinDrawRectangle(1, COLOR_SELECT, pb_left + 1, pb_top + 1, pb_left + pb_solid, pb_bottom - 1); // Fill the solid part //if (pb_solid < old_solid) - dwinDrawRectangle(1, Color_Bg_Black, pb_left + 1 + pb_solid, pb_top + 1, pb_right - 1, pb_bottom - 1); // Erase the rest + dwinDrawRectangle(1, COLOR_BG_BLACK, pb_left + 1 + pb_solid, pb_top + 1, pb_right - 1, pb_bottom - 1); // Erase the rest #if ENABLED(SHOW_PROGRESS_PERCENT) dwin_string.set(TERN(PRINT_PROGRESS_SHOW_DECIMALS, permyriadtostr4(progress), ui8tostr3rj(progress / (PROGRESS_SCALE)))); dwin_string.add('%'); dwinDrawString( - false, font16x32, Percent_Color, Color_Bg_Black, + false, font16x32, COLOR_PERCENT, COLOR_BG_BLACK, pb_left + (pb_width - dwin_string.length * 16) / 2, pb_top + (pb_height - 32) / 2 - 1, S(dwin_string.string()) diff --git a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp index d4e2262be1..bd2f8a88e6 100644 --- a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp +++ b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp @@ -63,22 +63,22 @@ #include "dwin_popup.h" #include "bedlevel_tools.h" -BedLevelToolsClass bedLevelTools; +BedLevelTools bedLevelTools; #if ENABLED(USE_GRID_MESHVIEWER) - bool BedLevelToolsClass::viewer_asymmetric_range = false; - bool BedLevelToolsClass::viewer_print_value = false; + bool BedLevelTools::viewer_asymmetric_range = false; + bool BedLevelTools::viewer_print_value = false; #endif -bool BedLevelToolsClass::goto_mesh_value = false; -uint8_t BedLevelToolsClass::mesh_x = 0; -uint8_t BedLevelToolsClass::mesh_y = 0; -uint8_t BedLevelToolsClass::tilt_grid = 1; +bool BedLevelTools::goto_mesh_value = false; +uint8_t BedLevelTools::mesh_x = 0; +uint8_t BedLevelTools::mesh_y = 0; +uint8_t BedLevelTools::tilt_grid = 1; bool drawing_mesh = false; #if ENABLED(AUTO_BED_LEVELING_UBL) - void BedLevelToolsClass::manual_value_update(const uint8_t mesh_x, const uint8_t mesh_y, bool undefined/*=false*/) { + void BedLevelTools::manualValueUpdate(const uint8_t mesh_x, const uint8_t mesh_y, bool undefined/*=false*/) { MString cmd; cmd.set(F("M421 I"), mesh_x, 'J', mesh_y, 'Z', p_float_t(current_position.z, 3)); if (undefined) cmd += F(" N"); @@ -86,7 +86,7 @@ bool drawing_mesh = false; planner.synchronize(); } - bool BedLevelToolsClass::create_plane_from_mesh() { + bool BedLevelTools::createPlaneFromMesh() { struct linear_fit_data lsf_results; incremental_LSF_reset(&lsf_results); GRID_LOOP(x, y) { @@ -126,7 +126,7 @@ bool drawing_mesh = false; #else - void BedLevelToolsClass::manual_value_update(const uint8_t mesh_x, const uint8_t mesh_y) { + void BedLevelTools::manualValueUpdate(const uint8_t mesh_x, const uint8_t mesh_y) { gcode.process_subcommands_now( TS(F("G29 I"), mesh_x, 'J', mesh_y, 'Z', p_float_t(current_position.z, 3)) ); @@ -135,7 +135,7 @@ bool drawing_mesh = false; #endif -void BedLevelToolsClass::manual_move(const uint8_t mesh_x, const uint8_t mesh_y, bool zmove/*=false*/) { +void BedLevelTools::manualMove(const uint8_t mesh_x, const uint8_t mesh_y, bool zmove/*=false*/) { gcode.process_subcommands_now(F("G28O")); if (zmove) { planner.synchronize(); @@ -144,48 +144,48 @@ void BedLevelToolsClass::manual_move(const uint8_t mesh_x, const uint8_t mesh_y, planner.synchronize(); } else { - DWIN_Show_Popup(ICON_BLTouch, F("Moving to Point"), F("Please wait until done.")); - HMI_SaveProcessID(NothingToDo); + dwinShowPopup(ICON_BLTouch, F("Moving to Point"), F("Please wait until done.")); + hmiSaveProcessID(ID_NothingToDo); gcode.process_subcommands_now(TS(F("G0 F300 Z"), p_float_t(Z_CLEARANCE_BETWEEN_PROBES, 3))); gcode.process_subcommands_now(TS(F("G42 F4000 I"), mesh_x, F(" J"), mesh_y)); planner.synchronize(); current_position.z = goto_mesh_value ? bedlevel.z_values[mesh_x][mesh_y] : Z_CLEARANCE_BETWEEN_PROBES; planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder); planner.synchronize(); - HMI_ReturnScreen(); + hmiReturnScreen(); } } // Move / Probe methods. As examples, not yet used. -void BedLevelToolsClass::MoveToXYZ() { - bedLevelTools.goto_mesh_value = true; - bedLevelTools.manual_move(bedLevelTools.mesh_x, bedLevelTools.mesh_y, false); +void BedLevelTools::moveToXYZ() { + goto_mesh_value = true; + manualMove(mesh_x, mesh_y, false); } -void BedLevelToolsClass::MoveToXY() { - bedLevelTools.goto_mesh_value = false; - bedLevelTools.manual_move(bedLevelTools.mesh_x, bedLevelTools.mesh_y, false); +void BedLevelTools::moveToXY() { + goto_mesh_value = false; + manualMove(mesh_x, mesh_y, false); } -void BedLevelToolsClass::MoveToZ() { - bedLevelTools.goto_mesh_value = true; - bedLevelTools.manual_move(bedLevelTools.mesh_x, bedLevelTools.mesh_y, true); +void BedLevelTools::moveToZ() { + goto_mesh_value = true; + manualMove(mesh_x, mesh_y, true); } -void BedLevelToolsClass::ProbeXY() { +void BedLevelTools::probeXY() { gcode.process_subcommands_now( MString( F("G28O\nG0Z"), uint16_t(Z_CLEARANCE_DEPLOY_PROBE), - F("\nG30X"), p_float_t(bedlevel.get_mesh_x(bedLevelTools.mesh_x), 2), - F("Y"), p_float_t(bedlevel.get_mesh_y(bedLevelTools.mesh_y), 2) + F("\nG30X"), p_float_t(bedlevel.get_mesh_x(mesh_x), 2), + F("Y"), p_float_t(bedlevel.get_mesh_y(mesh_y), 2) ) ); } -void BedLevelToolsClass::mesh_reset() { +void BedLevelTools::meshReset() { ZERO(bedlevel.z_values); TERN_(AUTO_BED_LEVELING_BILINEAR, bedlevel.refresh_bed_level()); } // Accessors -float BedLevelToolsClass::get_max_value() { +float BedLevelTools::getMaxValue() { float max = __FLT_MAX__ * -1; GRID_LOOP(x, y) { if (!isnan(bedlevel.z_values[x][y]) && bedlevel.z_values[x][y] > max) @@ -194,7 +194,7 @@ float BedLevelToolsClass::get_max_value() { return max; } -float BedLevelToolsClass::get_min_value() { +float BedLevelTools::getMinValue() { float min = __FLT_MAX__; GRID_LOOP(x, y) { if (!isnan(bedlevel.z_values[x][y]) && bedlevel.z_values[x][y] < min) @@ -204,7 +204,7 @@ float BedLevelToolsClass::get_min_value() { } // Return 'true' if mesh is good and within LCD limits -bool BedLevelToolsClass::meshvalidate() { +bool BedLevelTools::meshValidate() { GRID_LOOP(x, y) { const float v = bedlevel.z_values[x][y]; if (isnan(v) || !WITHIN(v, UBL_Z_OFFSET_MIN, UBL_Z_OFFSET_MAX)) return false; @@ -216,21 +216,21 @@ bool BedLevelToolsClass::meshvalidate() { constexpr uint8_t meshfont = TERN(TJC_DISPLAY, font8x16, font6x12); - void BedLevelToolsClass::Draw_Bed_Mesh(int16_t selected/*=-1*/, uint8_t gridline_width/*=1*/, uint16_t padding_x/*=8*/, uint16_t padding_y_top/*=(40 + 53 - 7)*/) { + void BedLevelTools::drawBedMesh(int16_t selected/*=-1*/, uint8_t gridline_width/*=1*/, uint16_t padding_x/*=8*/, uint16_t padding_y_top/*=(40 + 53 - 7)*/) { drawing_mesh = true; const uint16_t total_width_px = DWIN_WIDTH - padding_x - padding_x; const uint16_t cell_width_px = total_width_px / (GRID_MAX_POINTS_X); const uint16_t cell_height_px = total_width_px / (GRID_MAX_POINTS_Y); - const float v_max = abs(get_max_value()), v_min = abs(get_min_value()), range = _MAX(v_min, v_max); + const float v_max = abs(getMaxValue()), v_min = abs(getMinValue()), range = _MAX(v_min, v_max); // Clear background from previous selection and select new square - dwinDrawRectangle(1, Color_Bg_Black, _MAX(0, padding_x - gridline_width), _MAX(0, padding_y_top - gridline_width), padding_x + total_width_px, padding_y_top + total_width_px); + dwinDrawRectangle(1, COLOR_BG_BLACK, _MAX(0, padding_x - gridline_width), _MAX(0, padding_y_top - gridline_width), padding_x + total_width_px, padding_y_top + total_width_px); if (selected >= 0) { const auto selected_y = selected / (GRID_MAX_POINTS_X); const auto selected_x = selected - (GRID_MAX_POINTS_X) * selected_y; const auto start_y_px = padding_y_top + selected_y * cell_height_px; const auto start_x_px = padding_x + selected_x * cell_width_px; - dwinDrawRectangle(1, Color_White, _MAX(0, start_x_px - gridline_width), _MAX(0, start_y_px - gridline_width), start_x_px + cell_width_px, start_y_px + cell_height_px); + dwinDrawRectangle(1, COLOR_WHITE, _MAX(0, start_x_px - gridline_width), _MAX(0, start_y_px - gridline_width), start_x_px + cell_width_px, start_y_px + cell_height_px); } // Draw value square grid @@ -240,7 +240,7 @@ bool BedLevelToolsClass::meshvalidate() { const auto start_y_px = padding_y_top + ((GRID_MAX_POINTS_Y) - y - 1) * cell_height_px; const auto end_y_px = start_y_px + cell_height_px - 1 - gridline_width; dwinDrawRectangle(1, // RGB565 colors: http://www.barth-dev.de/online/rgb565-color-picker/ - isnan(bedlevel.z_values[x][y]) ? Color_Grey : ( // gray if undefined + isnan(bedlevel.z_values[x][y]) ? COLOR_GREY : ( // gray if undefined (bedlevel.z_values[x][y] < 0 ? (uint16_t)round(0x1F * -bedlevel.z_values[x][y] / (!viewer_asymmetric_range ? range : v_min)) << 11 : // red if mesh point value is negative (uint16_t)round(0x3F * bedlevel.z_values[x][y] / (!viewer_asymmetric_range ? range : v_max)) << 5) | // green if mesh point value is positive @@ -257,7 +257,7 @@ bool BedLevelToolsClass::meshvalidate() { if (viewer_print_value) { int8_t offset_x, offset_y = cell_height_px / 2 - fs; if (isnan(bedlevel.z_values[x][y])) { // undefined - dwinDrawString(false, meshfont, Color_White, Color_Bg_Blue, start_x_px + cell_width_px / 2 - 5, start_y_px + offset_y, F("X")); + dwinDrawString(false, meshfont, COLOR_WHITE, COLOR_BG_BLUE, start_x_px + cell_width_px / 2 - 5, start_y_px + offset_y, F("X")); } else { // has value if (GRID_MAX_POINTS_X < (ENABLED(TJC_DISPLAY) ? 8 : 10)) @@ -266,8 +266,8 @@ bool BedLevelToolsClass::meshvalidate() { sprintf_P(buf, PSTR("%02i"), (uint16_t)(abs(bedlevel.z_values[x][y] - (int16_t)bedlevel.z_values[x][y]) * 100)); offset_x = cell_width_px / 2 - (fs/2) * (strlen(buf)) - 2; if (!(GRID_MAX_POINTS_X < (ENABLED(TJC_DISPLAY) ? 8 : 10))) - dwinDrawString(false, meshfont, Color_White, Color_Bg_Blue, start_x_px - 2 + offset_x, start_y_px + offset_y, F(".")); - dwinDrawString(false, meshfont, Color_White, Color_Bg_Blue, start_x_px + 1 + offset_x, start_y_px + offset_y, buf); + dwinDrawString(false, meshfont, COLOR_WHITE, COLOR_BG_BLUE, start_x_px - 2 + offset_x, start_y_px + offset_y, F(".")); + dwinDrawString(false, meshfont, COLOR_WHITE, COLOR_BG_BLUE, start_x_px + 1 + offset_x, start_y_px + offset_y, buf); } safe_delay(10); LCD_SERIAL.flushTX(); @@ -275,8 +275,8 @@ bool BedLevelToolsClass::meshvalidate() { } } - void BedLevelToolsClass::Set_Mesh_Viewer_Status() { // TODO: draw gradient with values as a legend instead - float v_max = abs(get_max_value()), v_min = abs(get_min_value()), range = _MAX(v_min, v_max); + void BedLevelTools::setMeshViewerStatus() { // TODO: draw gradient with values as a legend instead + float v_max = abs(getMaxValue()), v_min = abs(getMinValue()), range = _MAX(v_min, v_max); if (v_min > 3e+10f) v_min = 0.0000001; if (v_max > 3e+10f) v_max = 0.0000001; if (range > 3e+10f) range = 0.0000001; diff --git a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h index 67beddec61..2e9b66aa30 100644 --- a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h +++ b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h @@ -50,36 +50,35 @@ #define UBL_Z_OFFSET_MIN -3.0 #define UBL_Z_OFFSET_MAX 3.0 -class BedLevelToolsClass { +class BedLevelTools { public: #if ENABLED(USE_GRID_MESHVIEWER) static bool viewer_asymmetric_range; static bool viewer_print_value; #endif static bool goto_mesh_value; - static uint8_t mesh_x; - static uint8_t mesh_y; + static uint8_t mesh_x, mesh_y; static uint8_t tilt_grid; #if ENABLED(AUTO_BED_LEVELING_UBL) - static void manual_value_update(const uint8_t mesh_x, const uint8_t mesh_y, bool undefined=false); - static bool create_plane_from_mesh(); + static void manualValueUpdate(const uint8_t mesh_x, const uint8_t mesh_y, bool undefined=false); + static bool createPlaneFromMesh(); #else - static void manual_value_update(const uint8_t mesh_x, const uint8_t mesh_y); + static void manualValueUpdate(const uint8_t mesh_x, const uint8_t mesh_y); #endif - static void manual_move(const uint8_t mesh_x, const uint8_t mesh_y, bool zmove=false); - static void MoveToXYZ(); - static void MoveToXY(); - static void MoveToZ(); - static void ProbeXY(); - static void mesh_reset(); - static float get_max_value(); - static float get_min_value(); - static bool meshvalidate(); + static void manualMove(const uint8_t mesh_x, const uint8_t mesh_y, bool zmove=false); + static void moveToXYZ(); + static void moveToXY(); + static void moveToZ(); + static void probeXY(); + static void meshReset(); + static float getMaxValue(); + static float getMinValue(); + static bool meshValidate(); #if ENABLED(USE_GRID_MESHVIEWER) - static void Draw_Bed_Mesh(int16_t selected=-1, uint8_t gridline_width=1, uint16_t padding_x=8, uint16_t padding_y_top=(40 + 53 - 7)); - static void Set_Mesh_Viewer_Status(); + static void drawBedMesh(int16_t selected=-1, uint8_t gridline_width=1, uint16_t padding_x=8, uint16_t padding_y_top=(40 + 53 - 7)); + static void setMeshViewerStatus(); #endif }; -extern BedLevelToolsClass bedLevelTools; +extern BedLevelTools bedLevelTools; diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index 51a53741ef..2e4047e05f 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -117,7 +117,7 @@ #include "endstop_diag.h" #endif -#if SHOW_TUNING_GRAPH +#if PROUI_TUNING_GRAPH #include "plot.h" #endif @@ -175,9 +175,9 @@ #endif // Structs -HMI_value_t HMI_value; -HMI_flag_t hmiFlag{0}; -HMI_data_t HMI_data; +hmi_value_t hmiValue; +hmi_flag_t hmiFlag{0}; +hmi_data_t hmiData; enum SelectItem : uint8_t { PAGE_PRINT = 0, @@ -208,110 +208,110 @@ select_t select_page{0}, select_print{0}; bool hash_changed = true; // Flag to know if message status was changed bool blink = false; -uint8_t checkkey = 255, last_checkkey = MainMenu; +uint8_t checkkey = 255, last_checkkey = ID_MainMenu; // New menu system pointers -MenuClass *FileMenu = nullptr; -MenuClass *PrepareMenu = nullptr; +Menu *fileMenu = nullptr; +Menu *prepareMenu = nullptr; #if ENABLED(LCD_BED_TRAMMING) - MenuClass *TrammingMenu = nullptr; + Menu *trammingMenu = nullptr; #endif -MenuClass *MoveMenu = nullptr; -MenuClass *ControlMenu = nullptr; -MenuClass *AdvancedSettings = nullptr; +Menu *moveMenu = nullptr; +Menu *ControlMenu = nullptr; +Menu *AdvancedSettings = nullptr; #if HAS_HOME_OFFSET - MenuClass *HomeOffMenu = nullptr; + Menu *homeOffsetMenu = nullptr; #endif #if HAS_BED_PROBE - MenuClass *ProbeSetMenu = nullptr; + Menu *ProbeSetMenu = nullptr; #endif -MenuClass *FilSetMenu = nullptr; -MenuClass *SelectColorMenu = nullptr; -MenuClass *GetColorMenu = nullptr; -MenuClass *TuneMenu = nullptr; -MenuClass *MotionMenu = nullptr; -MenuClass *FilamentMenu = nullptr; +Menu *filSetMenu = nullptr; +Menu *selectColorMenu = nullptr; +Menu *getColorMenu = nullptr; +Menu *tuneMenu = nullptr; +Menu *motionMenu = nullptr; +Menu *filamentMenu = nullptr; #if ENABLED(MESH_BED_LEVELING) - MenuClass *ManualMesh = nullptr; + Menu *manualMesh = nullptr; #endif #if HAS_PREHEAT - MenuClass *PreheatMenu = nullptr; - MenuClass *PreheatHotendMenu = nullptr; + Menu *preheatMenu = nullptr; + Menu *preheatHotendMenu = nullptr; #endif -MenuClass *TemperatureMenu = nullptr; -MenuClass *MaxSpeedMenu = nullptr; -MenuClass *MaxAccelMenu = nullptr; +Menu *temperatureMenu = nullptr; +Menu *maxSpeedMenu = nullptr; +Menu *maxAccelMenu = nullptr; #if HAS_CLASSIC_JERK - MenuClass *MaxJerkMenu = nullptr; + Menu *maxJerkMenu = nullptr; #endif -MenuClass *StepsMenu = nullptr; +Menu *stepsMenu = nullptr; #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) - MenuClass *HotendMPCMenu = nullptr; + Menu *hotendMPCMenu = nullptr; #endif #if ENABLED(PIDTEMP) && ANY(PID_EDIT_MENU, PID_AUTOTUNE_MENU) - MenuClass *HotendPIDMenu = nullptr; + Menu *hotendPIDMenu = nullptr; #endif #if ENABLED(PIDTEMPBED) && ANY(PID_EDIT_MENU, PID_AUTOTUNE_MENU) - MenuClass *BedPIDMenu = nullptr; + Menu *bedPIDMenu = nullptr; #endif #if ENABLED(CASELIGHT_USES_BRIGHTNESS) - MenuClass *CaseLightMenu = nullptr; + Menu *caseLightMenu = nullptr; #endif #if ENABLED(LED_CONTROL_MENU) - MenuClass *LedControlMenu = nullptr; + Menu *ledControlMenu = nullptr; #endif #if HAS_BED_PROBE - MenuClass *ZOffsetWizMenu = nullptr; + Menu *zOffsetWizMenu = nullptr; #endif #if ENABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU) - MenuClass *HomingMenu = nullptr; + Menu *homingMenu = nullptr; #endif #if ENABLED(FWRETRACT) - MenuClass *FWRetractMenu = nullptr; + Menu *fwRetractMenu = nullptr; #endif #if HAS_MESH - MenuClass *MeshMenu = nullptr; + Menu *meshMenu = nullptr; #if ENABLED(MESH_EDIT_MENU) - MenuClass *EditMeshMenu = nullptr; + Menu *editMeshMenu = nullptr; #endif #endif #if ENABLED(SHAPING_MENU) - MenuClass *InputShapingMenu = nullptr; + Menu *inputShapingMenu = nullptr; #endif #if HAS_TRINAMIC_CONFIG - MenuClass *TrinamicConfigMenu = nullptr; + Menu *trinamicConfigMenu = nullptr; #endif // Updatable menuitems pointers -MenuItemClass *HotendTargetItem = nullptr; -MenuItemClass *BedTargetItem = nullptr; -MenuItemClass *FanSpeedItem = nullptr; -MenuItemClass *MMeshMoveZItem = nullptr; -MenuItemClass *EditZValueItem = nullptr; +MenuItem *hotendTargetItem = nullptr; +MenuItem *bedTargetItem = nullptr; +MenuItem *fanSpeedItem = nullptr; +MenuItem *mMeshMoveZItem = nullptr; +MenuItem *editZValueItem = nullptr; -bool Printing() { return printingIsActive() || printingIsPaused(); } -bool SD_Printing() { return Printing() && IS_SD_FILE_OPEN(); } -bool Host_Printing() { return Printing() && !IS_SD_FILE_OPEN(); } +bool isPrinting() { return printingIsActive() || printingIsPaused(); } +bool sdPrinting() { return isPrinting() && IS_SD_FILE_OPEN(); } +bool Host_Printing() { return isPrinting() && !IS_SD_FILE_OPEN(); } #define DWIN_LANGUAGE_EEPROM_ADDRESS 0x01 // Between 0x01 and 0x63 (EEPROM_OFFSET-1) // BL24CXX::check() uses 0x00 -inline bool HMI_IsChinese() { return hmiFlag.language == DWIN_CHINESE; } +inline bool hmiIsChinese() { return hmiFlag.language == DWIN_CHINESE; } -void HMI_SetLanguageCache() { - dwinJPGCacheTo1(HMI_IsChinese() ? Language_Chinese : Language_English); +void hmiSetLanguageCache() { + dwinJPGCacheTo1(hmiIsChinese() ? Language_Chinese : Language_English); } -void HMI_SetLanguage() { +void hmiSetLanguage() { #if ALL(EEPROM_SETTINGS, IIC_BL24CXX_EEPROM) BL24CXX::read(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&hmiFlag.language, sizeof(hmiFlag.language)); #endif - HMI_SetLanguageCache(); + hmiSetLanguageCache(); } -void HMI_ToggleLanguage() { - hmiFlag.language = HMI_IsChinese() ? DWIN_ENGLISH : DWIN_CHINESE; - HMI_SetLanguageCache(); +void hmiToggleLanguage() { + hmiFlag.language = hmiIsChinese() ? DWIN_ENGLISH : DWIN_CHINESE; + hmiSetLanguageCache(); #if ALL(EEPROM_SETTINGS, IIC_BL24CXX_EEPROM) BL24CXX::write(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&hmiFlag.language, sizeof(hmiFlag.language)); #endif @@ -324,15 +324,15 @@ void HMI_ToggleLanguage() { typedef struct { uint16_t x, y[2], w, h; } text_info_t; void ICON_Button(const bool selected, const int iconid, const frame_rect_t &ico, const text_info_t (&txt), FSTR_P caption) { - DWINUI::Draw_IconWB(iconid + selected, ico.x, ico.y); - if (selected) DWINUI::Draw_Box(0, HMI_data.Highlight_Color, ico); - if (HMI_IsChinese()) { - DWIN_Frame_AreaCopy(1, txt.x, txt.y[selected], txt.x + txt.w - 1, txt.y[selected] + txt.h - 1, ico.x + (ico.w - txt.w) / 2, (ico.y + ico.h - 25) - txt.h/2); + DWINUI::drawIconWB(iconid + selected, ico.x, ico.y); + if (selected) DWINUI::drawBox(0, hmiData.colorHighlight, ico); + if (hmiIsChinese()) { + dwinFrameAreaCopy(1, txt.x, txt.y[selected], txt.x + txt.w - 1, txt.y[selected] + txt.h - 1, ico.x + (ico.w - txt.w) / 2, (ico.y + ico.h - 25) - txt.h/2); } else { const uint16_t x = ico.x + (ico.w - strlen_P(FTOP(caption)) * DWINUI::fontWidth()) / 2, y = (ico.y + ico.h - 20) - DWINUI::fontHeight() / 2; - DWINUI::Draw_String(x, y, caption); + DWINUI::drawString(x, y, caption); } } @@ -409,83 +409,83 @@ void ICON_Stop() { } // -//PopUps +// PopUps // -void Popup_window_PauseOrStop() { - if (HMI_IsChinese()) { - DWINUI::ClearMainArea(); - Draw_Popup_Bkgd(); - if (select_print.now == PRINT_PAUSE_RESUME) DWIN_Frame_AreaCopy(1, 237, 338, 269, 356, 98, 150); - else if (select_print.now == PRINT_STOP) DWIN_Frame_AreaCopy(1, 221, 320, 253, 336, 98, 150); - DWIN_Frame_AreaCopy(1, 220, 304, 264, 319, 130, 150); - DWINUI::Draw_IconWB(ICON_Confirm_C, 26, 280); - DWINUI::Draw_IconWB(ICON_Cancel_C, 146, 280); - Draw_Select_Highlight(true); +void popupPauseOrStop() { + if (hmiIsChinese()) { + DWINUI::clearMainArea(); + drawPopupBkgd(); + if (select_print.now == PRINT_PAUSE_RESUME) dwinFrameAreaCopy(1, 237, 338, 269, 356, 98, 150); + else if (select_print.now == PRINT_STOP) dwinFrameAreaCopy(1, 221, 320, 253, 336, 98, 150); + dwinFrameAreaCopy(1, 220, 304, 264, 319, 130, 150); + DWINUI::drawIconWB(ICON_Confirm_C, 26, 280); + DWINUI::drawIconWB(ICON_Cancel_C, 146, 280); + drawSelectHighlight(true); dwinUpdateLCD(); } else - DWIN_Popup_ConfirmCancel(ICON_BLTouch, select_print.now == PRINT_PAUSE_RESUME ? GET_TEXT_F(MSG_PAUSE_PRINT) : GET_TEXT_F(MSG_STOP_PRINT)); + dwinPopupConfirmCancel(ICON_BLTouch, select_print.now == PRINT_PAUSE_RESUME ? GET_TEXT_F(MSG_PAUSE_PRINT) : GET_TEXT_F(MSG_STOP_PRINT)); } #if HAS_HOTEND - void Popup_Window_ETempTooLow() { - if (HMI_IsChinese()) { - HMI_SaveProcessID(WaitResponse); - DWINUI::ClearMainArea(); - Draw_Popup_Bkgd(); - DWINUI::Draw_Icon(ICON_TempTooLow, 102, 105); - DWIN_Frame_AreaCopy(1, 103, 371, 136, 386, 69, 240); - DWIN_Frame_AreaCopy(1, 170, 371, 270, 386, 102, 240); - DWINUI::Draw_IconWB(ICON_Confirm_C, 86, 280); + void popupETempTooLow() { + if (hmiIsChinese()) { + hmiSaveProcessID(ID_WaitResponse); + DWINUI::clearMainArea(); + drawPopupBkgd(); + DWINUI::drawIcon(ICON_TempTooLow, 102, 105); + dwinFrameAreaCopy(1, 103, 371, 136, 386, 69, 240); + dwinFrameAreaCopy(1, 170, 371, 270, 386, 102, 240); + DWINUI::drawIconWB(ICON_Confirm_C, 86, 280); dwinUpdateLCD(); } else - DWIN_Popup_Confirm(ICON_TempTooLow, GET_TEXT_F(MSG_HOTEND_TOO_COLD), GET_TEXT_F(MSG_PLEASE_PREHEAT)); + dwinPopupConfirm(ICON_TempTooLow, GET_TEXT_F(MSG_HOTEND_TOO_COLD), GET_TEXT_F(MSG_PLEASE_PREHEAT)); } #endif #if HAS_HOTEND || HAS_HEATED_BED void dwinPopupTemperature(const bool toohigh) { - HMI_SaveProcessID(WaitResponse); - if (HMI_IsChinese()) { - DWINUI::ClearMainArea(); - Draw_Popup_Bkgd(); + hmiSaveProcessID(ID_WaitResponse); + if (hmiIsChinese()) { + DWINUI::clearMainArea(); + drawPopupBkgd(); if (toohigh) { - DWINUI::Draw_Icon(ICON_TempTooHigh, 102, 165); - DWIN_Frame_AreaCopy(1, 103, 371, 237, 386, 52, 285); - DWIN_Frame_AreaCopy(1, 151, 389, 185, 402, 187, 285); - DWIN_Frame_AreaCopy(1, 189, 389, 271, 402, 95, 310); + DWINUI::drawIcon(ICON_TempTooHigh, 102, 165); + dwinFrameAreaCopy(1, 103, 371, 237, 386, 52, 285); + dwinFrameAreaCopy(1, 151, 389, 185, 402, 187, 285); + dwinFrameAreaCopy(1, 189, 389, 271, 402, 95, 310); } else { - DWINUI::Draw_Icon(ICON_TempTooLow, 102, 165); - DWIN_Frame_AreaCopy(1, 103, 371, 270, 386, 52, 285); - DWIN_Frame_AreaCopy(1, 189, 389, 271, 402, 95, 310); + DWINUI::drawIcon(ICON_TempTooLow, 102, 165); + dwinFrameAreaCopy(1, 103, 371, 270, 386, 52, 285); + dwinFrameAreaCopy(1, 189, 389, 271, 402, 95, 310); } } else - DWIN_Show_Popup(toohigh ? ICON_TempTooHigh : ICON_TempTooLow, F("Nozzle or Bed temperature"), toohigh ? F("is too high") : F("is too low"), BTN_Continue); + dwinShowPopup(toohigh ? ICON_TempTooHigh : ICON_TempTooLow, F("Nozzle or Bed temperature"), toohigh ? F("is too high") : F("is too low"), BTN_Continue); } #endif // // Draw status line // -void DWIN_DrawStatusLine(const char *text) { - dwinDrawRectangle(1, HMI_data.StatusBg_Color, 0, STATUS_Y, DWIN_WIDTH, STATUS_Y + 20); - if (text) DWINUI::Draw_CenteredString(HMI_data.StatusTxt_Color, STATUS_Y + 2, text); +void dwinDrawStatusLine(const char *text) { + dwinDrawRectangle(1, hmiData.colorStatusBg, 0, STATUS_Y, DWIN_WIDTH, STATUS_Y + 20); + if (text) DWINUI::drawCenteredString(hmiData.colorStatusTxt, STATUS_Y + 2, text); } -void DWIN_DrawStatusLine(FSTR_P fstr) { DWIN_DrawStatusLine(FTOP(fstr)); } +void dwinDrawStatusLine(FSTR_P fstr) { dwinDrawStatusLine(FTOP(fstr)); } // Clear & reset status line -void DWIN_ResetStatusLine() { +void dwinResetStatusLine() { ui.status_message.clear(); - DWIN_CheckStatusMessage(); + dwinCheckStatusMessage(); } // Djb2 hash algorithm -uint32_t GetHash(char * str) { +uint32_t getHash(char * str) { uint32_t hash = 5381; char c; while ((c = *str++)) hash = ((hash << 5) + hash) + c; /* hash * 33 + c */ @@ -493,14 +493,14 @@ uint32_t GetHash(char * str) { } // Check for a change in the status message -void DWIN_CheckStatusMessage() { +void dwinCheckStatusMessage() { static MString<>::hash_t old_hash = 0x0000; const MString<>::hash_t hash = ui.status_message.hash(); hash_changed = hash != old_hash; old_hash = hash; } -void DWIN_DrawStatusMessage() { +void dwinDrawStatusMessage() { #if ENABLED(STATUS_MESSAGE_SCROLLING) // Get the UTF8 character count of the string @@ -509,7 +509,7 @@ void DWIN_DrawStatusMessage() { // If the string fits the status line do not scroll it if (slen <= LCD_WIDTH) { if (hash_changed) { - DWIN_DrawStatusLine(ui.status_message); + dwinDrawStatusLine(ui.status_message); hash_changed = false; } } @@ -520,18 +520,18 @@ void DWIN_DrawStatusMessage() { // and the string remaining length uint8_t rlen; const char *stat = MarlinUI::status_and_len(rlen); - dwinDrawRectangle(1, HMI_data.StatusBg_Color, 0, STATUS_Y, DWIN_WIDTH, STATUS_Y + 20); - DWINUI::MoveTo(0, STATUS_Y + 2); - DWINUI::Draw_String(HMI_data.StatusTxt_Color, stat, LCD_WIDTH); + dwinDrawRectangle(1, hmiData.colorStatusBg, 0, STATUS_Y, DWIN_WIDTH, STATUS_Y + 20); + DWINUI::moveTo(0, STATUS_Y + 2); + DWINUI::drawString(hmiData.colorStatusTxt, stat, LCD_WIDTH); // If the string doesn't completely fill the line... if (rlen < LCD_WIDTH) { - DWINUI::Draw_Char(HMI_data.StatusTxt_Color, '.'); // Always at 1+ spaces left, draw a dot + DWINUI::drawChar(hmiData.colorStatusTxt, '.'); // Always at 1+ spaces left, draw a dot uint8_t chars = LCD_WIDTH - rlen; // Amount of space left in characters if (--chars) { // Draw a second dot if there's space - DWINUI::Draw_Char(HMI_data.StatusTxt_Color, '.'); + DWINUI::drawChar(hmiData.colorStatusTxt, '.'); if (--chars) - DWINUI::Draw_String(HMI_data.StatusTxt_Color, ui.status_message, chars); // Print a second copy of the message + DWINUI::drawString(hmiData.colorStatusTxt, ui.status_message, chars); // Print a second copy of the message } } MarlinUI::advance_status_scroll(); @@ -541,147 +541,147 @@ void DWIN_DrawStatusMessage() { if (hash_changed) { ui.status_message.trunc(LCD_WIDTH); - DWIN_DrawStatusLine(ui.status_message); + dwinDrawStatusLine(ui.status_message); hash_changed = false; } #endif } -void Draw_Print_Labels() { - if (HMI_IsChinese()) { - DWIN_Frame_AreaCopy(1, 0, 72, 63, 86, 41, 173); // Printing Time - DWIN_Frame_AreaCopy(1, 65, 72, 128, 86, 176, 173); // Remain +void drawPrintLabels() { + if (hmiIsChinese()) { + dwinFrameAreaCopy(1, 0, 72, 63, 86, 41, 173); // Printing Time + dwinFrameAreaCopy(1, 65, 72, 128, 86, 176, 173); // Remain } else { - DWINUI::Draw_String( 46, 173, GET_TEXT_F(MSG_INFO_PRINT_TIME)); - DWINUI::Draw_String(181, 173, GET_TEXT_F(MSG_REMAINING_TIME)); + DWINUI::drawString( 46, 173, GET_TEXT_F(MSG_INFO_PRINT_TIME)); + DWINUI::drawString(181, 173, GET_TEXT_F(MSG_REMAINING_TIME)); } } -void Draw_Print_ProgressBar() { +void drawPrintProgressBar() { const uint8_t _percent_done = ui.get_progress_percent(); - DWINUI::Draw_IconWB(ICON_Bar, 15, 93); - dwinDrawRectangle(1, HMI_data.Barfill_Color, 16 + _percent_done * 240 / 100, 93, 256, 113); - DWINUI::Draw_Int(HMI_data.PercentTxt_Color, HMI_data.Background_Color, 3, 117, 133, _percent_done); - DWINUI::Draw_String(HMI_data.PercentTxt_Color, 142, 133, F("%")); + DWINUI::drawIconWB(ICON_Bar, 15, 93); + dwinDrawRectangle(1, hmiData.colorBarfill, 16 + _percent_done * 240 / 100, 93, 256, 113); + DWINUI::drawInt(hmiData.colorPercentTxt, hmiData.colorBackground, 3, 117, 133, _percent_done); + DWINUI::drawString(hmiData.colorPercentTxt, 142, 133, F("%")); } -void Draw_Print_ProgressElapsed() { +void drawPrintProgressElapsed() { MString<12> buf; duration_t elapsed = print_job_timer.duration(); // Print timer buf.setf(F("%02i:%02i "), uint16_t(elapsed.value / 3600), (uint16_t(elapsed.value) % 3600) / 60); - DWINUI::Draw_String(HMI_data.Text_Color, HMI_data.Background_Color, 47, 192, buf); + DWINUI::drawString(hmiData.colorText, hmiData.colorBackground, 47, 192, buf); } #if ENABLED(SHOW_REMAINING_TIME) - void Draw_Print_ProgressRemain() { + void drawPrintProgressRemain() { MString<12> buf; buf.setf(F("%02i:%02i "), _remain_time / 3600, (_remain_time % 3600) / 60); - DWINUI::Draw_String(HMI_data.Text_Color, HMI_data.Background_Color, 181, 192, buf); + DWINUI::drawString(hmiData.colorText, hmiData.colorBackground, 181, 192, buf); } #endif void ICON_ResumeOrPause() { - if (checkkey == PrintProcess) (print_job_timer.isPaused() || hmiFlag.pause_flag) ? ICON_Resume() : ICON_Pause(); + if (checkkey == ID_PrintProcess) (print_job_timer.isPaused() || hmiFlag.pause_flag) ? ICON_Resume() : ICON_Pause(); } // Update filename on print -void DWIN_Print_Header(const char *text = nullptr) { +void dwinPrintHeader(const char *text = nullptr) { static char headertxt[31] = ""; // Print header text if (text) { const int8_t size = _MIN(30U, strlen_P(text)); for (uint8_t i = 0; i < size; ++i) headertxt[i] = text[i]; headertxt[size] = '\0'; } - if (checkkey == PrintProcess || checkkey == PrintDone) { - dwinDrawRectangle(1, HMI_data.Background_Color, 0, 60, DWIN_WIDTH, 60+16); - DWINUI::Draw_CenteredString(60, headertxt); + if (checkkey == ID_PrintProcess || checkkey == ID_PrintDone) { + dwinDrawRectangle(1, hmiData.colorBackground, 0, 60, DWIN_WIDTH, 60+16); + DWINUI::drawCenteredString(60, headertxt); } } -void Draw_PrintProcess() { - if (HMI_IsChinese()) - Title.FrameCopy(30, 1, 42, 14); // "Printing" +void drawPrintProcess() { + if (hmiIsChinese()) + title.frameCopy(30, 1, 42, 14); // "Printing" else - Title.ShowCaption(GET_TEXT_F(MSG_PRINTING)); - DWINUI::ClearMainArea(); - DWIN_Print_Header(nullptr); - Draw_Print_Labels(); - DWINUI::Draw_Icon(ICON_PrintTime, 15, 173); - DWINUI::Draw_Icon(ICON_RemainTime, 150, 171); - Draw_Print_ProgressBar(); - Draw_Print_ProgressElapsed(); - TERN_(SHOW_REMAINING_TIME, Draw_Print_ProgressRemain()); + title.showCaption(GET_TEXT_F(MSG_PRINTING)); + DWINUI::clearMainArea(); + dwinPrintHeader(nullptr); + drawPrintLabels(); + DWINUI::drawIcon(ICON_PrintTime, 15, 173); + DWINUI::drawIcon(ICON_RemainTime, 150, 171); + drawPrintProgressBar(); + drawPrintProgressElapsed(); + TERN_(SHOW_REMAINING_TIME, drawPrintProgressRemain()); ICON_Tune(); ICON_ResumeOrPause(); ICON_Stop(); } -void Goto_PrintProcess() { - if (checkkey == PrintProcess) +void gotoPrintProcess() { + if (checkkey == ID_PrintProcess) ICON_ResumeOrPause(); else { - checkkey = PrintProcess; - Draw_PrintProcess(); - TERN_(DASH_REDRAW, DWIN_RedrawDash()); + checkkey = ID_PrintProcess; + drawPrintProcess(); + TERN_(DASH_REDRAW, dwinRedrawDash()); } dwinUpdateLCD(); } -void Draw_PrintDone() { +void drawPrintDone() { TERN_(SET_PROGRESS_PERCENT, ui.set_progress_done()); TERN_(SET_REMAINING_TIME, ui.reset_remaining_time()); - Title.ShowCaption(GET_TEXT_F(MSG_PRINT_DONE)); - DWINUI::ClearMainArea(); - DWIN_Print_Header(nullptr); + title.showCaption(GET_TEXT_F(MSG_PRINT_DONE)); + DWINUI::clearMainArea(); + dwinPrintHeader(nullptr); #if HAS_GCODE_PREVIEW const bool haspreview = Preview_Valid(); if (haspreview) { Preview_Show(); - DWINUI::Draw_Button(BTN_Continue, 86, 295); + DWINUI::drawButton(BTN_Continue, 86, 295); } #else constexpr bool haspreview = false; #endif if (!haspreview) { - Draw_Print_ProgressBar(); - Draw_Print_Labels(); - DWINUI::Draw_Icon(ICON_PrintTime, 15, 173); - DWINUI::Draw_Icon(ICON_RemainTime, 150, 171); - Draw_Print_ProgressElapsed(); - TERN_(SHOW_REMAINING_TIME, Draw_Print_ProgressRemain()); - DWINUI::Draw_Button(BTN_Continue, 86, 273); + drawPrintProgressBar(); + drawPrintLabels(); + DWINUI::drawIcon(ICON_PrintTime, 15, 173); + DWINUI::drawIcon(ICON_RemainTime, 150, 171); + drawPrintProgressElapsed(); + TERN_(SHOW_REMAINING_TIME, drawPrintProgressRemain()); + DWINUI::drawButton(BTN_Continue, 86, 273); } } -void Goto_PrintDone() { +void gotoPrintDone() { wait_for_user = true; - if (checkkey != PrintDone) { - checkkey = PrintDone; - Draw_PrintDone(); + if (checkkey != ID_PrintDone) { + checkkey = ID_PrintDone; + drawPrintDone(); dwinUpdateLCD(); } } -void Draw_Main_Menu() { - DWINUI::ClearMainArea(); - if (HMI_IsChinese()) - Title.FrameCopy(2, 2, 26, 13); // "Home" etc +void drawMainMenu() { + DWINUI::clearMainArea(); + if (hmiIsChinese()) + title.frameCopy(2, 2, 26, 13); // "Home" etc else - Title.ShowCaption(MACHINE_NAME); - DWINUI::Draw_Icon(ICON_LOGO, 71, 52); // CREALITY logo + title.showCaption(MACHINE_NAME); + DWINUI::drawIcon(ICON_LOGO, 71, 52); // CREALITY logo ICON_Print(); ICON_Prepare(); ICON_Control(); ICON_AdvSettings(); } -void Goto_Main_Menu() { - if (checkkey == MainMenu) return; - checkkey = MainMenu; - Draw_Main_Menu(); +void gotoMainMenu() { + if (checkkey == ID_MainMenu) return; + checkkey = ID_MainMenu; + drawMainMenu(); dwinUpdateLCD(); } @@ -706,74 +706,74 @@ void _update_axis_value(const AxisEnum axis, const uint16_t x, const uint16_t y, if (force || changed || draw_qmark || draw_empty) { if (blink && draw_qmark) - DWINUI::Draw_String(HMI_data.Coordinate_Color, HMI_data.Background_Color, x, y, F(" - ? -")); + DWINUI::drawString(hmiData.colorCoordinate, hmiData.colorBackground, x, y, F(" - ? -")); else if (blink && draw_empty) - DWINUI::Draw_String(HMI_data.Coordinate_Color, HMI_data.Background_Color, x, y, F(" ")); + DWINUI::drawString(hmiData.colorCoordinate, hmiData.colorBackground, x, y, F(" ")); else - DWINUI::Draw_Signed_Float(HMI_data.Coordinate_Color, HMI_data.Background_Color, 3, 2, x, y, p); + DWINUI::drawSignedFloat(hmiData.colorCoordinate, hmiData.colorBackground, 3, 2, x, y, p); } } -void _draw_iconblink(bool &flag, const bool sensor, const uint8_t icon1, const uint8_t icon2, const uint16_t x, const uint16_t y) { +void _drawIconBlink(bool &flag, const bool sensor, const uint8_t icon1, const uint8_t icon2, const uint16_t x, const uint16_t y) { #if DISABLED(NO_BLINK_IND) if (flag != sensor) { flag = sensor; if (!flag) { - dwinDrawBox(1, HMI_data.Background_Color, x, y, 20, 20); - DWINUI::Draw_Icon(icon1, x, y); + dwinDrawBox(1, hmiData.colorBackground, x, y, 20, 20); + DWINUI::drawIcon(icon1, x, y); } } if (flag) { - dwinDrawBox(1, blink ? HMI_data.SplitLine_Color : HMI_data.Background_Color, x, y, 20, 20); - DWINUI::Draw_Icon(icon2, x, y); + dwinDrawBox(1, blink ? hmiData.colorSplitLine : hmiData.colorBackground, x, y, 20, 20); + DWINUI::drawIcon(icon2, x, y); } #else if (flag != sensor) { flag = sensor; - dwinDrawBox(1, HMI_data.Background_Color, x, y, 20, 20); - DWINUI::Draw_Icon(flag ? icon2 : icon1, x, y); + dwinDrawBox(1, hmiData.colorBackground, x, y, 20, 20); + DWINUI::drawIcon(flag ? icon2 : icon1, x, y); } #endif } -void _draw_ZOffsetIcon() { +void _drawZOffsetIcon() { #if HAS_LEVELING static bool _leveling_active = false; - _draw_iconblink(_leveling_active, planner.leveling_active, ICON_Zoffset, ICON_SetZOffset, 186, 416); + _drawIconBlink(_leveling_active, planner.leveling_active, ICON_Zoffset, ICON_SetZOffset, 186, 416); #else - DWINUI::Draw_Icon(ICON_Zoffset, 187, 416); + DWINUI::drawIcon(ICON_Zoffset, 187, 416); #endif } -void _draw_feedrate() { +void _drawFeedrate() { #if ENABLED(SHOW_SPEED_IND) int16_t _value; if (blink) { _value = feedrate_percentage; - DWINUI::Draw_String(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 116 + 4 * STAT_CHR_W + 2, 384, F(" %")); + DWINUI::drawString(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 116 + 4 * STAT_CHR_W + 2, 384, F(" %")); } else { _value = CEIL(feedrate_mm_s * feedrate_percentage / 100); - dwinDrawBox(1, HMI_data.Background_Color, 116 + 5 * STAT_CHR_W + 2, 384, 20, 20); + dwinDrawBox(1, hmiData.colorBackground, 116 + 5 * STAT_CHR_W + 2, 384, 20, 20); } - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 116 + 2 * STAT_CHR_W, 384, _value); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 116 + 2 * STAT_CHR_W, 384, _value); #else static int16_t _feedrate = 100; if (_feedrate != feedrate_percentage) { _feedrate = feedrate_percentage; - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 116 + 2 * STAT_CHR_W, 384, _feedrate); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 116 + 2 * STAT_CHR_W, 384, _feedrate); } #endif } -void _draw_xyz_position(const bool force) { +void _drawXYZPosition(const bool force) { _update_axis_value(X_AXIS, 27, 459, force); _update_axis_value(Y_AXIS, 112, 459, force); _update_axis_value(Z_AXIS, 197, 459, force); } -void update_variable() { - _draw_xyz_position(false); +void updateVariable() { + _drawXYZPosition(false); #if HAS_HOTEND static celsius_t _hotendtemp = 0, _hotendtarget = 0; const celsius_t hc = thermalManager.wholeDegHotend(0), @@ -798,49 +798,49 @@ void update_variable() { if (_new_fanspeed) _fanspeed = thermalManager.fan_speed[0]; #endif - if (IsMenu(TuneMenu) || IsMenu(TemperatureMenu)) { + if (isMenu(tuneMenu) || isMenu(temperatureMenu)) { // Tune page temperature update - TERN_(HAS_HOTEND, if (_new_hotend_target) HotendTargetItem->redraw()); - TERN_(HAS_HEATED_BED, if (_new_bed_target) BedTargetItem->redraw()); - TERN_(HAS_FAN, if (_new_fanspeed) FanSpeedItem->redraw()); + TERN_(HAS_HOTEND, if (_new_hotend_target) hotendTargetItem->redraw()); + TERN_(HAS_HEATED_BED, if (_new_bed_target) bedTargetItem->redraw()); + TERN_(HAS_FAN, if (_new_fanspeed) fanSpeedItem->redraw()); } // Bottom temperature update #if HAS_HOTEND if (_new_hotend_temp) - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 28, 384, _hotendtemp); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 28, 384, _hotendtemp); if (_new_hotend_target) - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 25 + 4 * STAT_CHR_W + 6, 384, _hotendtarget); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 25 + 4 * STAT_CHR_W + 6, 384, _hotendtarget); static int16_t _flow = planner.flow_percentage[0]; if (_flow != planner.flow_percentage[0]) { _flow = planner.flow_percentage[0]; - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 116 + 2 * STAT_CHR_W, 417, _flow); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 116 + 2 * STAT_CHR_W, 417, _flow); } #endif #if HAS_HEATED_BED if (_new_bed_temp) - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 28, 417, _bedtemp); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 28, 417, _bedtemp); if (_new_bed_target) - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 25 + 4 * STAT_CHR_W + 6, 417, _bedtarget); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 25 + 4 * STAT_CHR_W + 6, 417, _bedtarget); #endif - _draw_feedrate(); + _drawFeedrate(); #if HAS_FAN if (_new_fanspeed) - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 195 + 2 * STAT_CHR_W, 384, _fanspeed); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 195 + 2 * STAT_CHR_W, 384, _fanspeed); #endif static float _offset = 0; if (BABY_Z_VAR != _offset) { _offset = BABY_Z_VAR; - DWINUI::Draw_Signed_Float(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 2, 2, 204, 417, _offset); + DWINUI::drawSignedFloat(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 2, 2, 204, 417, _offset); } - _draw_ZOffsetIcon(); + _drawZOffsetIcon(); } /** @@ -850,19 +850,19 @@ void update_variable() { bool DWIN_lcd_sd_status = false; #if ENABLED(MEDIASORT_MENU_ITEM) - void SetMediaSort() { - Toggle_Chkb_Line(HMI_data.MediaSort); - card.setSortOn(HMI_data.MediaSort); + void setMediaSort() { + toggleCheckboxLine(hmiData.mediaSort); + card.setSortOn(hmiData.mediaSort); } #endif -void SetMediaAutoMount() { Toggle_Chkb_Line(HMI_data.MediaAutoMount); } +void setMediaAutoMount() { toggleCheckboxLine(hmiData.mediaAutoMount); } inline uint16_t nr_sd_menu_items() { return _MIN(card.get_num_items() + !card.flag.workDirIsRoot, MENU_MAX_ITEMS); } -void make_name_without_ext(char *dst, char *src, size_t maxlen=MENU_CHAR_LIMIT) { +void makeNameWithoutExt(char *dst, char *src, size_t maxlen=MENU_CHAR_LIMIT) { size_t pos = strlen(src); // Index of ending nul // For files, remove the extension @@ -886,52 +886,53 @@ void make_name_without_ext(char *dst, char *src, size_t maxlen=MENU_CHAR_LIMIT) while (pos--) dst[pos] = src[pos]; } -void SDCard_Up() { +void sdCardUp() { card.cdup(); DWIN_lcd_sd_status = false; // On next DWIN_Update } -void SDCard_Folder(char * const dirname) { +void sdCardFolder(char * const dirname) { card.cd(dirname); DWIN_lcd_sd_status = false; // On next DWIN_Update } void onClickSDItem() { const uint16_t hasUpDir = !card.flag.workDirIsRoot; - if (hasUpDir && CurrentMenu->selected == 1) return SDCard_Up(); + if (hasUpDir && currentMenu->selected == 1) return sdCardUp(); else { - const uint16_t filenum = CurrentMenu->selected - 1 - hasUpDir; + const uint16_t filenum = currentMenu->selected - 1 - hasUpDir; card.selectFileByIndexSorted(filenum); // Enter that folder! - if (card.flag.filenameIsDir) return SDCard_Folder(card.filename); + if (card.flag.filenameIsDir) return sdCardFolder(card.filename); if (card.fileIsBinary()) - return DWIN_Popup_Confirm(ICON_Error, F("Please check filenames"), F("Only G-code can be printed")); + return dwinPopupConfirm(ICON_Error, F("Please check filenames"), F("Only G-code can be printed")); else { - DWIN_Print_Header(card.longest_filename()); // Save filename - return Goto_ConfirmToPrint(); + dwinPrintHeader(card.longest_filename()); // Save filename + return gotoConfirmToPrint(); } } } #if ENABLED(SCROLL_LONG_FILENAMES) + char shift_name[LONG_FILENAME_LENGTH + 1] = ""; - void Draw_SDItem_Shifted(uint8_t &shift) { + void drawSDItemShifted(uint8_t &shift) { // Shorten to the available space const size_t lastchar = shift + MENU_CHAR_LIMIT; const char c = shift_name[lastchar]; shift_name[lastchar] = '\0'; - const uint8_t row = FileMenu->line(); - Erase_Menu_Text(row); - Draw_Menu_Line(row, 0, &shift_name[shift]); + const uint8_t row = fileMenu->line(); + eraseMenuText(row); + drawMenuLine(row, 0, &shift_name[shift]); shift_name[lastchar] = c; } - void FileMenuIdle(bool reset=false) { + void fileMenuIdle(bool reset=false) { static bool hasUpDir = false; static uint8_t last_itemselected = 0; static int8_t shift_amt = 0, shift_len = 0; @@ -940,78 +941,81 @@ void onClickSDItem() { hasUpDir = !card.flag.workDirIsRoot; // Is a SubDir return; } - const uint8_t selected = FileMenu->selected; + const uint8_t selected = fileMenu->selected; if (last_itemselected != selected) { - if (last_itemselected >= 1 + hasUpDir) FileMenu->Items()[last_itemselected]->redraw(true); + if (last_itemselected >= 1 + hasUpDir) fileMenu->items()[last_itemselected]->redraw(true); last_itemselected = selected; if (selected >= 1 + hasUpDir) { const int8_t filenum = selected - 1 - hasUpDir; // Skip "Back" and ".." card.selectFileByIndexSorted(filenum); - make_name_without_ext(shift_name, card.longest_filename(), LONG_FILENAME_LENGTH); + makeNameWithoutExt(shift_name, card.longest_filename(), LONG_FILENAME_LENGTH); shift_len = strlen(shift_name); shift_amt = 0; } } else if ((selected >= 1 + hasUpDir) && (shift_len > MENU_CHAR_LIMIT)) { uint8_t shift_new = _MIN(shift_amt + 1, shift_len - MENU_CHAR_LIMIT); // Try to shift by... - Draw_SDItem_Shifted(shift_new); // Draw the item + drawSDItemShifted(shift_new); // Draw the item if (shift_new == shift_amt) // Scroll reached the end shift_new = -1; // Reset shift_amt = shift_new; // Set new scroll } } -#else + +#else // !SCROLL_LONG_FILENAMES + char shift_name[FILENAME_LENGTH + 1] = ""; + #endif -void onDrawFileName(MenuItemClass* menuitem, int8_t line) { +void onDrawFileName(MenuItem* menuitem, int8_t line) { const bool is_subdir = !card.flag.workDirIsRoot; if (is_subdir && menuitem->pos == 1) { - Draw_Menu_Line(line, ICON_Folder, ".."); + drawMenuLine(line, ICON_Folder, ".."); } else { uint8_t icon; card.selectFileByIndexSorted(menuitem->pos - is_subdir - 1); - make_name_without_ext(shift_name, card.longest_filename()); + makeNameWithoutExt(shift_name, card.longest_filename()); icon = card.flag.filenameIsDir ? ICON_Folder : card.fileIsBinary() ? ICON_Binary : ICON_File; - Draw_Menu_Line(line, icon, shift_name); + drawMenuLine(line, icon, shift_name); } } -void Draw_Print_File_Menu() { - checkkey = Menu; +void drawPrintFileMenu() { + checkkey = ID_Menu; if (card.isMounted()) { - if (SET_MENU(FileMenu, MSG_MEDIA_MENU, nr_sd_menu_items() + 1)) { - BACK_ITEM(Goto_Main_Menu); + if (SET_MENU(fileMenu, MSG_MEDIA_MENU, nr_sd_menu_items() + 1)) { + BACK_ITEM(gotoMainMenu); for (uint8_t i = 0; i < nr_sd_menu_items(); ++i) { - MenuItemAdd(onDrawFileName, onClickSDItem); + menuItemAdd(onDrawFileName, onClickSDItem); } } - UpdateMenu(FileMenu); - TERN_(DASH_REDRAW, DWIN_RedrawDash()); + updateMenu(fileMenu); + TERN_(DASH_REDRAW, dwinRedrawDash()); } else { - if (SET_MENU(FileMenu, MSG_MEDIA_MENU, 1)) BACK_ITEM(Goto_Main_Menu); - UpdateMenu(FileMenu); - dwinDrawRectangle(1, HMI_data.AlertBg_Color, 10, MBASE(3) - 10, DWIN_WIDTH - 10, MBASE(4)); - DWINUI::Draw_CenteredString(font12x24, HMI_data.AlertTxt_Color, MBASE(3), GET_TEXT_F(MSG_MEDIA_NOT_INSERTED)); + if (SET_MENU(fileMenu, MSG_MEDIA_MENU, 1)) BACK_ITEM(gotoMainMenu); + updateMenu(fileMenu); + dwinDrawRectangle(1, hmiData.colorAlertBg, 10, MBASE(3) - 10, DWIN_WIDTH - 10, MBASE(4)); + DWINUI::drawCenteredString(font12x24, hmiData.colorAlertTxt, MBASE(3), GET_TEXT_F(MSG_MEDIA_NOT_INSERTED)); } - TERN_(SCROLL_LONG_FILENAMES, FileMenuIdle(true)); + TERN_(SCROLL_LONG_FILENAMES, fileMenuIdle(true)); } // // Watch for media mount / unmount // -void HMI_SDCardUpdate() { +void hmiSDCardUpdate() { if (hmiFlag.home_flag) return; if (DWIN_lcd_sd_status != card.isMounted()) { DWIN_lcd_sd_status = card.isMounted(); - ResetMenu(FileMenu); - if (IsMenu(FileMenu)) { - CurrentMenu = nullptr; - Draw_Print_File_Menu(); + resetMenu(fileMenu); + if (isMenu(fileMenu)) { + currentMenu = nullptr; + drawPrintFileMenu(); } - if (!DWIN_lcd_sd_status && SD_Printing()) ui.abort_print(); // Media removed while printing + if (!DWIN_lcd_sd_status && sdPrinting()) ui.abort_print(); // Media removed while printing } } @@ -1019,80 +1023,80 @@ void HMI_SDCardUpdate() { * Dash board and indicators */ -void DWIN_Draw_Dashboard() { +void dwinDrawDashboard() { - dwinDrawRectangle(1, HMI_data.Background_Color, 0, STATUS_Y + 21, DWIN_WIDTH, DWIN_HEIGHT - 1); - dwinDrawRectangle(1, HMI_data.SplitLine_Color, 0, 449, DWIN_WIDTH, 451); + dwinDrawRectangle(1, hmiData.colorBackground, 0, STATUS_Y + 21, DWIN_WIDTH, DWIN_HEIGHT - 1); + dwinDrawRectangle(1, hmiData.colorSplitLine, 0, 449, DWIN_WIDTH, 451); - DWINUI::Draw_Icon(ICON_MaxSpeedX, 10, 456); - DWINUI::Draw_Icon(ICON_MaxSpeedY, 95, 456); - DWINUI::Draw_Icon(ICON_MaxSpeedZ, 180, 456); - _draw_xyz_position(true); + DWINUI::drawIcon(ICON_MaxSpeedX, 10, 456); + DWINUI::drawIcon(ICON_MaxSpeedY, 95, 456); + DWINUI::drawIcon(ICON_MaxSpeedZ, 180, 456); + _drawXYZPosition(true); #if HAS_HOTEND - DWINUI::Draw_Icon(ICON_HotendTemp, 10, 383); - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 28, 384, thermalManager.wholeDegHotend(0)); - DWINUI::Draw_String(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 25 + 3 * STAT_CHR_W + 5, 384, F("/")); - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 25 + 4 * STAT_CHR_W + 6, 384, thermalManager.degTargetHotend(0)); + DWINUI::drawIcon(ICON_HotendTemp, 10, 383); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 28, 384, thermalManager.wholeDegHotend(0)); + DWINUI::drawString(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 25 + 3 * STAT_CHR_W + 5, 384, F("/")); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 25 + 4 * STAT_CHR_W + 6, 384, thermalManager.degTargetHotend(0)); - DWINUI::Draw_Icon(ICON_StepE, 112, 417); - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 116 + 2 * STAT_CHR_W, 417, planner.flow_percentage[0]); - DWINUI::Draw_String(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 116 + 5 * STAT_CHR_W + 2, 417, F("%")); + DWINUI::drawIcon(ICON_StepE, 112, 417); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 116 + 2 * STAT_CHR_W, 417, planner.flow_percentage[0]); + DWINUI::drawString(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 116 + 5 * STAT_CHR_W + 2, 417, F("%")); #endif #if HAS_HEATED_BED - DWINUI::Draw_Icon(ICON_BedTemp, 10, 416); - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 28, 417, thermalManager.wholeDegBed()); - DWINUI::Draw_String(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 25 + 3 * STAT_CHR_W + 5, 417, F("/")); - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 25 + 4 * STAT_CHR_W + 6, 417, thermalManager.degTargetBed()); + DWINUI::drawIcon(ICON_BedTemp, 10, 416); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 28, 417, thermalManager.wholeDegBed()); + DWINUI::drawString(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 25 + 3 * STAT_CHR_W + 5, 417, F("/")); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 25 + 4 * STAT_CHR_W + 6, 417, thermalManager.degTargetBed()); #endif - DWINUI::Draw_Icon(ICON_Speed, 113, 383); - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 116 + 2 * STAT_CHR_W, 384, feedrate_percentage); - IF_DISABLED(SHOW_SPEED_IND, DWINUI::Draw_String(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 116 + 5 * STAT_CHR_W + 2, 384, F("%"))); + DWINUI::drawIcon(ICON_Speed, 113, 383); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 116 + 2 * STAT_CHR_W, 384, feedrate_percentage); + IF_DISABLED(SHOW_SPEED_IND, DWINUI::drawString(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 116 + 5 * STAT_CHR_W + 2, 384, F("%"))); #if HAS_FAN - DWINUI::Draw_Icon(ICON_FanSpeed, 187, 383); - DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 195 + 2 * STAT_CHR_W, 384, thermalManager.fan_speed[0]); + DWINUI::drawIcon(ICON_FanSpeed, 187, 383); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 195 + 2 * STAT_CHR_W, 384, thermalManager.fan_speed[0]); #endif #if HAS_ZOFFSET_ITEM - DWINUI::Draw_Icon(planner.leveling_active ? ICON_SetZOffset : ICON_Zoffset, 187, 416); - DWINUI::Draw_Signed_Float(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 2, 2, 204, 417, BABY_Z_VAR); + DWINUI::drawIcon(planner.leveling_active ? ICON_SetZOffset : ICON_Zoffset, 187, 416); + DWINUI::drawSignedFloat(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 2, 2, 204, 417, BABY_Z_VAR); #endif } -void Draw_Info_Menu() { - DWINUI::ClearMainArea(); - if (HMI_IsChinese()) - Title.FrameCopy(30, 17, 28, 13); // "Info" +void drawInfoMenu() { + DWINUI::clearMainArea(); + if (hmiIsChinese()) + title.frameCopy(30, 17, 28, 13); // "Info" else - Title.ShowCaption(GET_TEXT_F(MSG_INFO_SCREEN)); - Draw_Menu_Line(0, ICON_Back, GET_TEXT_F(MSG_BACK), false, true); + title.showCaption(GET_TEXT_F(MSG_INFO_SCREEN)); + drawMenuLine(0, ICON_Back, GET_TEXT_F(MSG_BACK), false, true); - if (HMI_IsChinese()) { - DWIN_Frame_AreaCopy(1, 197, 149, 252, 161, 108, 102); // "Size" - DWIN_Frame_AreaCopy(1, 1, 164, 56, 176, 108, 175); // "Firmware Version" - DWIN_Frame_AreaCopy(1, 58, 164, 113, 176, 105, 248); // "Contact Details" - DWINUI::Draw_CenteredString(268, F(CORP_WEBSITE)); + if (hmiIsChinese()) { + dwinFrameAreaCopy(1, 197, 149, 252, 161, 108, 102); // "Size" + dwinFrameAreaCopy(1, 1, 164, 56, 176, 108, 175); // "Firmware Version" + dwinFrameAreaCopy(1, 58, 164, 113, 176, 105, 248); // "Contact Details" + DWINUI::drawCenteredString(268, F(CORP_WEBSITE)); } else { - DWINUI::Draw_CenteredString(102, F("Size")); - DWINUI::Draw_CenteredString(175, F("Firmware version")); - DWINUI::Draw_CenteredString(248, F("Build Datetime")); - DWINUI::Draw_CenteredString(268, F(STRING_DISTRIBUTION_DATE)); + DWINUI::drawCenteredString(102, F("Size")); + DWINUI::drawCenteredString(175, F("Firmware version")); + DWINUI::drawCenteredString(248, F("Build Datetime")); + DWINUI::drawCenteredString(268, F(STRING_DISTRIBUTION_DATE)); } - DWINUI::Draw_CenteredString(122, F(MACHINE_SIZE)); - DWINUI::Draw_CenteredString(195, F(SHORT_BUILD_VERSION)); + DWINUI::drawCenteredString(122, F(MACHINE_SIZE)); + DWINUI::drawCenteredString(195, F(SHORT_BUILD_VERSION)); for (uint8_t i = 0; i < 3; ++i) { - DWINUI::Draw_Icon(ICON_PrintSize + i, ICOX, 99 + i * 73); - dwinDrawHLine(HMI_data.SplitLine_Color, 16, MBASE(2) + i * 73, 240); + DWINUI::drawIcon(ICON_PrintSize + i, ICOX, 99 + i * 73); + dwinDrawHLine(hmiData.colorSplitLine, 16, MBASE(2) + i * 73, 240); } } // Main Process -void HMI_MainMenu() { +void hmiMainMenu() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; @@ -1119,32 +1123,32 @@ void HMI_MainMenu() { else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_page.now) { case PAGE_PRINT: - if (HMI_data.MediaAutoMount) { + if (hmiData.mediaAutoMount) { card.mount(); safe_delay(800); }; - Draw_Print_File_Menu(); + drawPrintFileMenu(); break; - case PAGE_PREPARE: Draw_Prepare_Menu(); break; - case PAGE_CONTROL: Draw_Control_Menu(); break; - case PAGE_ADVANCE: Draw_AdvancedSettings_Menu(); break; + case PAGE_PREPARE: drawPrepareMenu(); break; + case PAGE_CONTROL: drawControlMenu(); break; + case PAGE_ADVANCE: drawAdvancedSettingsMenu(); break; } } dwinUpdateLCD(); } // Pause or Stop popup -void onClick_PauseOrStop() { +void onClickPauseOrStop() { switch (select_print.now) { case PRINT_PAUSE_RESUME: if (hmiFlag.select_flag) ui.pause_print(); break; // Confirm pause case PRINT_STOP: if (hmiFlag.select_flag) ui.abort_print(); break; // Stop confirmed then abort print default: break; } - return Goto_PrintProcess(); + return gotoPrintProcess(); } // Printing -void HMI_Printing() { +void hmiPrinting() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; // Avoid flicker by updating only the previous menu @@ -1168,16 +1172,16 @@ void HMI_Printing() { } else if (encoder_diffState == ENCODER_DIFF_ENTER) { switch (select_print.now) { - case PRINT_SETUP: Draw_Tune_Menu(); break; + case PRINT_SETUP: drawTuneMenu(); break; case PRINT_PAUSE_RESUME: if (printingIsPaused()) { // If printer is already in pause ui.resume_print(); break; } else - return Goto_Popup(Popup_window_PauseOrStop, onClick_PauseOrStop); + return gotoPopup(popupPauseOrStop, onClickPauseOrStop); case PRINT_STOP: - return Goto_Popup(Popup_window_PauseOrStop, onClick_PauseOrStop); + return gotoPopup(popupPauseOrStop, onClickPauseOrStop); default: break; } } @@ -1186,84 +1190,84 @@ void HMI_Printing() { #include "../../../libs/buzzer.h" -void Draw_Main_Area() { +void drawMainArea() { switch (checkkey) { - case MainMenu: Draw_Main_Menu(); break; - case PrintProcess: Draw_PrintProcess(); break; - case PrintDone: Draw_PrintDone(); break; + case ID_MainMenu: drawMainMenu(); break; + case ID_PrintProcess: drawPrintProcess(); break; + case ID_PrintDone: drawPrintDone(); break; #if HAS_ESDIAG - case ESDiagProcess: Draw_EndStopDiag(); break; + case ID_ESDiagProcess: drawEndStopDiag(); break; #endif - case Popup: popupDraw(); break; + case ID_Popup: popupDraw(); break; #if HAS_LOCKSCREEN - case Locked: lockScreen.draw(); break; + case ID_Locked: lockScreen.draw(); break; #endif - case Menu: - case SetInt: - case SetPInt: - case SetIntNoDraw: - case SetFloat: - case SetPFloat: ReDrawMenu(true); break; + case ID_Menu: + case ID_SetInt: + case ID_SetPInt: + case ID_SetIntNoDraw: + case ID_SetFloat: + case ID_SetPFloat: ReDrawMenu(true); break; default: break; } } -void HMI_WaitForUser() { +void hmiWaitForUser() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState != ENCODER_DIFF_NO && !ui.backlight) { - if (checkkey == WaitResponse) HMI_ReturnScreen(); + if (checkkey == ID_WaitResponse) hmiReturnScreen(); return ui.refresh_brightness(); } if (!wait_for_user) { switch (checkkey) { - case PrintDone: + case ID_PrintDone: select_page.reset(); - Goto_Main_Menu(); + gotoMainMenu(); break; #if HAS_BED_PROBE - case Leveling: + case ID_Leveling: #endif default: - HMI_ReturnScreen(); + hmiReturnScreen(); break; } } } -void HMI_Init() { +void hmiInit() { #if ENABLED(SHOW_BOOTSCREEN) #ifndef BOOTSCREEN_TIMEOUT #define BOOTSCREEN_TIMEOUT 1100 #endif - DWINUI::Draw_Box(1, Color_Black, { 5, 220, DWIN_WIDTH - 5, DWINUI::fontHeight() }); - DWINUI::Draw_CenteredString(Color_White, 220, F("ProUI starting up ")); + DWINUI::drawBox(1, COLOR_BLACK, { 5, 220, DWIN_WIDTH - 5, DWINUI::fontHeight() }); + DWINUI::drawCenteredString(COLOR_WHITE, 220, F("ProUI starting up ")); for (uint16_t t = 15; t < 257; t += 11) { - DWINUI::Draw_Icon(ICON_Bar, 15, 260); - dwinDrawRectangle(1, HMI_data.Background_Color, t, 260, 257, 280); + DWINUI::drawIcon(ICON_Bar, 15, 260); + dwinDrawRectangle(1, hmiData.colorBackground, t, 260, 257, 280); dwinUpdateLCD(); safe_delay((BOOTSCREEN_TIMEOUT) / 22); } #endif - HMI_SetLanguage(); + hmiSetLanguage(); } -void EachMomentUpdate() { +void eachMomentUpdate() { static millis_t next_var_update_ms = 0, next_rts_update_ms = 0, next_status_update_ms = 0; const millis_t ms = millis(); if (ELAPSED(ms, next_var_update_ms)) { next_var_update_ms = ms + DWIN_VAR_UPDATE_INTERVAL; blink = !blink; - update_variable(); + updateVariable(); #if HAS_ESDIAG - if (checkkey == ESDiagProcess) ESDiag.Update(); + if (checkkey == ID_ESDiagProcess) esDiag.update(); #endif - #if SHOW_TUNING_GRAPH - if (checkkey == PidProcess) { - TERN_(PIDTEMP, if (HMI_value.tempcontrol == PIDTEMP_START) plot.Update(thermalManager.wholeDegHotend(0))); - TERN_(PIDTEMPBED, if (HMI_value.tempcontrol == PIDTEMPBED_START) plot.Update(thermalManager.wholeDegBed())); + #if PROUI_TUNING_GRAPH + if (checkkey == ID_PIDProcess) { + TERN_(PIDTEMP, if (hmiValue.tempControl == PIDTEMP_START) plot.update(thermalManager.wholeDegHotend(0))); + TERN_(PIDTEMPBED, if (hmiValue.tempControl == PIDTEMPBED_START) plot.update(thermalManager.wholeDegBed())); } - TERN_(MPCTEMP, if (checkkey == MPCProcess) plot.Update(thermalManager.wholeDegHotend(0))); + TERN_(MPCTEMP, if (checkkey == ID_MPCProcess) plot.update(thermalManager.wholeDegHotend(0))); #endif } @@ -1275,42 +1279,42 @@ void EachMomentUpdate() { if (ELAPSED(ms, next_status_update_ms)) { next_status_update_ms = ms + 500; - DWIN_DrawStatusMessage(); + dwinDrawStatusMessage(); #if ENABLED(SCROLL_LONG_FILENAMES) - if (IsMenu(FileMenu)) FileMenuIdle(); + if (isMenu(fileMenu)) fileMenuIdle(); #endif } if (!PENDING(ms, next_rts_update_ms)) { next_rts_update_ms = ms + DWIN_UPDATE_INTERVAL; - if ((Printing() != hmiFlag.printing_flag) && !hmiFlag.home_flag) { - hmiFlag.printing_flag = Printing(); + if ((isPrinting() != hmiFlag.printing_flag) && !hmiFlag.home_flag) { + hmiFlag.printing_flag = isPrinting(); if (hmiFlag.printing_flag) - DWIN_Print_Started(); + dwinPrintStarted(); else if (hmiFlag.abort_flag) - DWIN_Print_Aborted(); + dwinPrintAborted(); else - DWIN_Print_Finished(); + dwinPrintFinished(); } if ((printingIsPaused() != hmiFlag.pause_flag) && !hmiFlag.home_flag) { hmiFlag.pause_flag = printingIsPaused(); if (hmiFlag.pause_flag) - DWIN_Print_Pause(); + dwinPrintPause(); else if (hmiFlag.abort_flag) - DWIN_Print_Aborted(); + dwinPrintAborted(); else - DWIN_Print_Resume(); + dwinPrintResume(); } - if (checkkey == PrintProcess) { // Print process + if (checkkey == ID_PrintProcess) { // Print process // Progress percent static uint8_t _percent_done = 255; if (_percent_done != ui.get_progress_percent()) { _percent_done = ui.get_progress_percent(); - Draw_Print_ProgressBar(); + drawPrintProgressBar(); } // Remaining time @@ -1318,7 +1322,7 @@ void EachMomentUpdate() { static uint32_t _remain_time = 0; if (_remain_time != ui.get_remaining_time()) { _remain_time = ui.get_remaining_time(); - Draw_Print_ProgressRemain(); + drawPrintProgressRemain(); } #endif @@ -1327,12 +1331,12 @@ void EachMomentUpdate() { const uint16_t min = (print_job_timer.duration() % 3600) / 60; if (_printtime != min) { // 1 minute update _printtime = min; - Draw_Print_ProgressElapsed(); + drawPrintProgressElapsed(); } } #if ENABLED(POWER_LOSS_RECOVERY) else if (DWIN_lcd_sd_status && recovery.dwin_flag) { // Resume print before power off - return Goto_PowerLossRecovery(); + return gotoPowerLossRecovery(); } #endif @@ -1341,136 +1345,136 @@ void EachMomentUpdate() { } #if ENABLED(POWER_LOSS_RECOVERY) - void Popup_PowerLossRecovery() { - DWINUI::ClearMainArea(); - Draw_Popup_Bkgd(); - if (HMI_IsChinese()) { - DWIN_Frame_AreaCopy(1, 160, 338, 235, 354, 98, 115); - DWIN_Frame_AreaCopy(1, 103, 321, 271, 335, 52, 167); - DWINUI::Draw_IconWB(ICON_Cancel_C, 26, 280); - DWINUI::Draw_IconWB(ICON_Continue_C, 146, 280); + void popupPowerLossRecovery() { + DWINUI::clearMainArea(); + drawPopupBkgd(); + if (hmiIsChinese()) { + dwinFrameAreaCopy(1, 160, 338, 235, 354, 98, 115); + dwinFrameAreaCopy(1, 103, 321, 271, 335, 52, 167); + DWINUI::drawIconWB(ICON_Cancel_C, 26, 280); + DWINUI::drawIconWB(ICON_Continue_C, 146, 280); } else { - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 70, GET_TEXT_F(MSG_OUTAGE_RECOVERY)); - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 147, F("It looks like the last")); - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 167, F("file was interrupted.")); - DWINUI::Draw_Button(BTN_Cancel, 26, 280); - DWINUI::Draw_Button(BTN_Continue, 146, 280); + DWINUI::drawCenteredString(hmiData.colorPopupTxt, 70, GET_TEXT_F(MSG_OUTAGE_RECOVERY)); + DWINUI::drawCenteredString(hmiData.colorPopupTxt, 147, F("It looks like the last")); + DWINUI::drawCenteredString(hmiData.colorPopupTxt, 167, F("file was interrupted.")); + DWINUI::drawButton(BTN_Cancel, 26, 280); + DWINUI::drawButton(BTN_Continue, 146, 280); } MediaFile *dir = nullptr; const char * const filename = card.diveToFile(true, dir, recovery.info.sd_filename); card.selectFileByName(filename); - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 207, card.longest_filename()); - DWIN_Print_Header(card.longest_filename()); // Save filename - Draw_Select_Highlight(hmiFlag.select_flag); + DWINUI::drawCenteredString(hmiData.colorPopupTxt, 207, card.longest_filename()); + dwinPrintHeader(card.longest_filename()); // Save filename + drawSelectHighlight(hmiFlag.select_flag); dwinUpdateLCD(); } - void onClick_PowerLossRecovery() { + void onClickPowerLossRecovery() { if (hmiFlag.select_flag) { queue.inject(F("M1000C")); select_page.reset(); - return Goto_Main_Menu(); + return gotoMainMenu(); } else { - HMI_SaveProcessID(NothingToDo); + hmiSaveProcessID(ID_NothingToDo); select_print.set(PRINT_SETUP); queue.inject(F("M1000")); } } - void Goto_PowerLossRecovery() { + void gotoPowerLossRecovery() { recovery.dwin_flag = false; LCD_MESSAGE(MSG_CONTINUE_PRINT_JOB); - Goto_Popup(Popup_PowerLossRecovery, onClick_PowerLossRecovery); + gotoPopup(popupPowerLossRecovery, onClickPowerLossRecovery); } #endif // POWER_LOSS_RECOVERY -void DWIN_HandleScreen() { +void dwinHandleScreen() { switch (checkkey) { - case MainMenu: HMI_MainMenu(); break; - case Menu: HMI_Menu(); break; - case SetInt: HMI_SetDraw(); break; - case SetFloat: HMI_SetDraw(); break; - case SetPInt: HMI_SetPInt(); break; - case SetPFloat: HMI_SetPFloat(); break; - case SetIntNoDraw: HMI_SetNoDraw(); break; - case PrintProcess: HMI_Printing(); break; - case Popup: HMI_Popup(); break; - case Leveling: break; + case ID_MainMenu: hmiMainMenu(); break; + case ID_Menu: hmiMenu(); break; + case ID_SetInt: hmiSetDraw(); break; + case ID_SetFloat: hmiSetDraw(); break; + case ID_SetPInt: hmiSetPInt(); break; + case ID_SetPFloat: hmiSetPFloat(); break; + case ID_SetIntNoDraw: hmiSetNoDraw(); break; + case ID_PrintProcess: hmiPrinting(); break; + case ID_Popup: hmiPopup(); break; + case ID_Leveling: break; #if HAS_LOCKSCREEN - case Locked: HMI_LockScreen(); break; + case ID_Locked: hmiLockScreen(); break; #endif - case PrintDone: - TERN_(HAS_ESDIAG, case ESDiagProcess:) - case WaitResponse: HMI_WaitForUser(); break; - case Homing: - case PidProcess: - case NothingToDo: break; + case ID_PrintDone: + TERN_(HAS_ESDIAG, case ID_ESDiagProcess:) + case ID_WaitResponse: hmiWaitForUser(); break; + case ID_Homing: + case ID_PIDProcess: + case ID_NothingToDo: break; default: break; } } -bool IDisPopUp() { // If ID is popup... +bool idIsPopUp() { // If ID is popup... switch (checkkey) { - case NothingToDo: - case WaitResponse: - case Popup: - case Homing: - case Leveling: - case PidProcess: - TERN_(HAS_ESDIAG, case ESDiagProcess:) + case ID_NothingToDo: + case ID_WaitResponse: + case ID_Popup: + case ID_Homing: + case ID_Leveling: + case ID_PIDProcess: + TERN_(HAS_ESDIAG, case ID_ESDiagProcess:) return true; default: break; } return false; } -void HMI_SaveProcessID(const uint8_t id) { +void hmiSaveProcessID(const uint8_t id) { if (checkkey == id) return; - if (!IDisPopUp()) last_checkkey = checkkey; // If previous is not a popup + if (!idIsPopUp()) last_checkkey = checkkey; // If previous is not a popup checkkey = id; switch (id) { - case Popup: - case WaitResponse: - case PrintDone: - case Leveling: - TERN_(HAS_ESDIAG, case ESDiagProcess:) + case ID_Popup: + case ID_WaitResponse: + case ID_PrintDone: + case ID_Leveling: + TERN_(HAS_ESDIAG, case ID_ESDiagProcess:) wait_for_user = true; default: break; } } -void HMI_ReturnScreen() { +void hmiReturnScreen() { checkkey = last_checkkey; wait_for_user = false; - Draw_Main_Area(); + drawMainArea(); } void dwinHomingStart() { hmiFlag.home_flag = true; - HMI_SaveProcessID(Homing); - Title.ShowCaption(GET_TEXT_F(MSG_HOMING)); - DWIN_Show_Popup(ICON_BLTouch, GET_TEXT_F(MSG_HOMING), GET_TEXT_F(MSG_PLEASE_WAIT)); + hmiSaveProcessID(ID_Homing); + title.showCaption(GET_TEXT_F(MSG_HOMING)); + dwinShowPopup(ICON_BLTouch, GET_TEXT_F(MSG_HOMING), GET_TEXT_F(MSG_PLEASE_WAIT)); } void dwinHomingDone() { hmiFlag.home_flag = false; - if (last_checkkey == PrintDone) - Goto_PrintDone(); + if (last_checkkey == ID_PrintDone) + gotoPrintDone(); else - HMI_ReturnScreen(); + hmiReturnScreen(); } -void DWIN_LevelingStart() { +void dwinLevelingStart() { #if HAS_BED_PROBE - HMI_SaveProcessID(Leveling); - Title.ShowCaption(GET_TEXT_F(MSG_BED_LEVELING)); - DWIN_Show_Popup(ICON_AutoLeveling, GET_TEXT_F(MSG_BED_LEVELING), GET_TEXT_F(MSG_PLEASE_WAIT)); + hmiSaveProcessID(ID_Leveling); + title.showCaption(GET_TEXT_F(MSG_BED_LEVELING)); + dwinShowPopup(ICON_AutoLeveling, GET_TEXT_F(MSG_BED_LEVELING), GET_TEXT_F(MSG_PLEASE_WAIT)); #if ALL(AUTO_BED_LEVELING_UBL, PREHEAT_BEFORE_LEVELING) #if HAS_BED_PROBE - if (!DEBUGGING(DRYRUN)) probe.preheat_for_probing(LEVELING_NOZZLE_TEMP, HMI_data.BedLevT); + if (!DEBUGGING(DRYRUN)) probe.preheat_for_probing(LEVELING_NOZZLE_TEMP, hmiData.bedLevT); #else #if HAS_HOTEND if (!DEBUGGING(DRYRUN) && thermalManager.degTargetHotend(0) < LEVELING_NOZZLE_TEMP) { @@ -1479,24 +1483,24 @@ void DWIN_LevelingStart() { } #endif #if HAS_HEATED_BED - if (!DEBUGGING(DRYRUN) && thermalManager.degTargetBed() < HMI_data.BedLevT) { - thermalManager.setTargetBed(HMI_data.BedLevT); + if (!DEBUGGING(DRYRUN) && thermalManager.degTargetBed() < hmiData.bedLevT) { + thermalManager.setTargetBed(hmiData.bedLevT); thermalManager.wait_for_bed_heating(); } #endif #endif #endif #elif ENABLED(MESH_BED_LEVELING) - Draw_ManualMesh_Menu(); + drawManualMeshMenu(); #endif } -void DWIN_LevelingDone() { - TERN_(HAS_MESH, Goto_MeshViewer(true)); +void dwinLevelingDone() { + TERN_(HAS_MESH, gotoMeshViewer(true)); } #if HAS_MESH - void DWIN_MeshUpdate(const int8_t cpos, const int8_t tpos, const_float_t zval) { + void dwinMeshUpdate(const int8_t cpos, const int8_t tpos, const_float_t zval) { ui.set_status( &MString<32>(GET_TEXT_F(MSG_PROBING_POINT), ' ', cpos, '/', tpos, F(" Z="), p_float_t(zval, 2)) ); @@ -1505,49 +1509,49 @@ void DWIN_LevelingDone() { // PID/MPC process -#if SHOW_TUNING_GRAPH +#if PROUI_TUNING_GRAPH #include "plot.h" celsius_t _maxtemp, _target; - void DWIN_Draw_PID_MPC_Popup() { + void dwinDrawPIDMPCPopup() { constexpr frame_rect_t gfrm = { 40, 180, DWIN_WIDTH - 80, 120 }; - DWINUI::ClearMainArea(); - Draw_Popup_Bkgd(); + DWINUI::clearMainArea(); + drawPopupBkgd(); - switch (HMI_value.tempcontrol) { + switch (hmiValue.tempControl) { default: return; #if ENABLED(MPC_AUTOTUNE) case MPCTEMP_START: - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 100, GET_TEXT_F(MSG_MPC_AUTOTUNE)); - DWINUI::Draw_String(HMI_data.PopupTxt_Color, gfrm.x, gfrm.y - DWINUI::fontHeight() - 4, F("MPC target: Celsius")); + DWINUI::drawCenteredString(hmiData.colorPopupTxt, 100, GET_TEXT_F(MSG_MPC_AUTOTUNE)); + DWINUI::drawString(hmiData.colorPopupTxt, gfrm.x, gfrm.y - DWINUI::fontHeight() - 4, F("MPC target: Celsius")); break; #endif #if ANY(PIDTEMP, PIDTEMPBED) TERN_(PIDTEMP, case PIDTEMP_START:) TERN_(PIDTEMPBED, case PIDTEMPBED_START:) - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 100, GET_TEXT_F(MSG_PID_AUTOTUNE)); - DWINUI::Draw_String(HMI_data.PopupTxt_Color, gfrm.x, gfrm.y - DWINUI::fontHeight() - 4, F("PID target: Celsius")); + DWINUI::drawCenteredString(hmiData.colorPopupTxt, 100, GET_TEXT_F(MSG_PID_AUTOTUNE)); + DWINUI::drawString(hmiData.colorPopupTxt, gfrm.x, gfrm.y - DWINUI::fontHeight() - 4, F("PID target: Celsius")); break; #endif } - switch (HMI_value.tempcontrol) { + switch (hmiValue.tempControl) { default: break; #if ANY(PIDTEMP, MPC_AUTOTUNE) TERN_(PIDTEMP, case PIDTEMP_START:) TERN_(MPC_AUTOTUNE, case MPCTEMP_START:) - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for Nozzle is running.")); + DWINUI::drawCenteredString(hmiData.colorPopupTxt, 120, F("for Nozzle is running.")); break; #endif #if ENABLED(PIDTEMPBED) case PIDTEMPBED_START: - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for BED is running.")); + DWINUI::drawCenteredString(hmiData.colorPopupTxt, 120, F("for BED is running.")); break; #endif } - switch (HMI_value.tempcontrol) { + switch (hmiValue.tempControl) { default: break; #if ENABLED(MPC_AUTOTUNE) case MPCTEMP_START: @@ -1558,74 +1562,74 @@ void DWIN_LevelingDone() { #if ENABLED(PIDTEMP) case PIDTEMP_START: _maxtemp = thermalManager.hotend_maxtemp[0]; - _target = HMI_data.HotendPidT; + _target = hmiData.hotendPidT; break; #endif #if ENABLED(PIDTEMPBED) case PIDTEMPBED_START: _maxtemp = BED_MAXTEMP; - _target = HMI_data.BedPidT; + _target = hmiData.bedPidT; break; #endif } - plot.Draw(gfrm, _maxtemp, _target); - DWINUI::Draw_Int(HMI_data.PopupTxt_Color, 3, gfrm.x + 90, gfrm.y - DWINUI::fontHeight() - 4, _target); + plot.draw(gfrm, _maxtemp, _target); + DWINUI::drawInt(hmiData.colorPopupTxt, 3, gfrm.x + 90, gfrm.y - DWINUI::fontHeight() - 4, _target); } -#endif // SHOW_TUNING_GRAPH +#endif // PROUI_TUNING_GRAPH -#if DWIN_PID_TUNE +#if PROUI_PID_TUNE - void DWIN_StartM303(const bool seenC, const int c, const bool seenS, const heater_id_t hid, const celsius_t temp) { - if (seenC) HMI_data.PidCycles = c; + void dwinStartM303(const bool seenC, const int c, const bool seenS, const heater_id_t hid, const celsius_t temp) { + if (seenC) hmiData.pidCycles = c; if (seenS) { switch (hid) { - OPTCODE(PIDTEMP, case 0 ... HOTENDS - 1: HMI_data.HotendPidT = temp; break) - OPTCODE(PIDTEMPBED, case H_BED: HMI_data.BedPidT = temp; break) + OPTCODE(PIDTEMP, case 0 ... HOTENDS - 1: hmiData.hotendPidT = temp; break) + OPTCODE(PIDTEMPBED, case H_BED: hmiData.bedPidT = temp; break) default: break; } } } - void DWIN_PidTuning(tempcontrol_t result) { - HMI_value.tempcontrol = result; + void dwinPidTuning(tempcontrol_t result) { + hmiValue.tempControl = result; switch (result) { #if ENABLED(PIDTEMP) case PIDTEMP_START: - HMI_SaveProcessID(PidProcess); - #if SHOW_TUNING_GRAPH - DWIN_Draw_PID_MPC_Popup(); + hmiSaveProcessID(ID_PIDProcess); + #if PROUI_TUNING_GRAPH + dwinDrawPIDMPCPopup(); #else - DWIN_Draw_Popup(ICON_TempTooHigh, GET_TEXT_F(MSG_PID_AUTOTUNE), F("for Nozzle is running.")); + dwinDrawPopup(ICON_TempTooHigh, GET_TEXT_F(MSG_PID_AUTOTUNE), F("for Nozzle is running.")); #endif break; case PID_TEMP_TOO_HIGH: checkkey = last_checkkey; - DWIN_Popup_Confirm(ICON_TempTooHigh, GET_TEXT_F(MSG_PID_AUTOTUNE_FAILED), GET_TEXT_F(MSG_TEMP_TOO_HIGH)); + dwinPopupConfirm(ICON_TempTooHigh, GET_TEXT_F(MSG_PID_AUTOTUNE_FAILED), GET_TEXT_F(MSG_TEMP_TOO_HIGH)); break; #endif #if ENABLED(PIDTEMPBED) case PIDTEMPBED_START: - HMI_SaveProcessID(PidProcess); - #if SHOW_TUNING_GRAPH - DWIN_Draw_PID_MPC_Popup(); + hmiSaveProcessID(ID_PIDProcess); + #if PROUI_TUNING_GRAPH + dwinDrawPIDMPCPopup(); #else - DWIN_Draw_Popup(ICON_TempTooHigh, GET_TEXT_F(MSG_PID_AUTOTUNE), F("for BED is running.")); + dwinDrawPopup(ICON_TempTooHigh, GET_TEXT_F(MSG_PID_AUTOTUNE), F("for BED is running.")); #endif break; #endif case PID_BAD_HEATER_ID: checkkey = last_checkkey; - DWIN_Popup_Confirm(ICON_TempTooLow, GET_TEXT_F(MSG_PID_AUTOTUNE_FAILED), GET_TEXT_F(MSG_PID_BAD_HEATER_ID)); + dwinPopupConfirm(ICON_TempTooLow, GET_TEXT_F(MSG_PID_AUTOTUNE_FAILED), GET_TEXT_F(MSG_PID_BAD_HEATER_ID)); break; case PID_TUNING_TIMEOUT: checkkey = last_checkkey; - DWIN_Popup_Confirm(ICON_TempTooHigh, GET_TEXT_F(MSG_ERROR), GET_TEXT_F(MSG_PID_TIMEOUT)); + dwinPopupConfirm(ICON_TempTooHigh, GET_TEXT_F(MSG_ERROR), GET_TEXT_F(MSG_PID_TIMEOUT)); break; case AUTOTUNE_DONE: checkkey = last_checkkey; - DWIN_Popup_Confirm(ICON_TempTooLow, GET_TEXT_F(MSG_PID_AUTOTUNE), GET_TEXT_F(MSG_BUTTON_DONE)); + dwinPopupConfirm(ICON_TempTooLow, GET_TEXT_F(MSG_PID_AUTOTUNE), GET_TEXT_F(MSG_BUTTON_DONE)); break; default: checkkey = last_checkkey; @@ -1633,34 +1637,34 @@ void DWIN_LevelingDone() { } } -#endif // DWIN_PID_TUNE +#endif // PROUI_PID_TUNE #if ENABLED(MPC_AUTOTUNE) - void DWIN_MPCTuning(tempcontrol_t result) { - HMI_value.tempcontrol = result; + void dwinMPCTuning(tempcontrol_t result) { + hmiValue.tempControl = result; switch (result) { case MPCTEMP_START: - HMI_SaveProcessID(MPCProcess); - #if SHOW_TUNING_GRAPH - DWIN_Draw_PID_MPC_Popup(); + hmiSaveProcessID(ID_MPCProcess); + #if PROUI_TUNING_GRAPH + dwinDrawPIDMPCPopup(); #else - DWIN_Draw_Popup(ICON_TempTooHigh, GET_TEXT_F(MSG_MPC_AUTOTUNE), F("for Nozzle is running.")); + dwinDrawPopup(ICON_TempTooHigh, GET_TEXT_F(MSG_MPC_AUTOTUNE), F("for Nozzle is running.")); #endif break; case MPC_TEMP_ERROR: checkkey = last_checkkey; - DWIN_Popup_Confirm(ICON_TempTooHigh, GET_TEXT_F(MSG_PID_AUTOTUNE_FAILED), F(STR_MPC_TEMPERATURE_ERROR)); + dwinPopupConfirm(ICON_TempTooHigh, GET_TEXT_F(MSG_PID_AUTOTUNE_FAILED), F(STR_MPC_TEMPERATURE_ERROR)); ui.reset_alert_level(); break; case MPC_INTERRUPTED: checkkey = last_checkkey; - DWIN_Popup_Confirm(ICON_TempTooHigh, GET_TEXT_F(MSG_ERROR), F(STR_MPC_AUTOTUNE_INTERRUPTED)); + dwinPopupConfirm(ICON_TempTooHigh, GET_TEXT_F(MSG_ERROR), F(STR_MPC_AUTOTUNE_INTERRUPTED)); ui.reset_alert_level(); break; case AUTOTUNE_DONE: checkkey = last_checkkey; - DWIN_Popup_Confirm(ICON_TempTooLow, GET_TEXT_F(MSG_MPC_AUTOTUNE), GET_TEXT_F(MSG_BUTTON_DONE)); + dwinPopupConfirm(ICON_TempTooLow, GET_TEXT_F(MSG_MPC_AUTOTUNE), GET_TEXT_F(MSG_BUTTON_DONE)); ui.reset_alert_level(); break; default: @@ -1673,117 +1677,117 @@ void DWIN_LevelingDone() { #endif // MPC_AUTOTUNE // Started a Print Job -void DWIN_Print_Started() { +void dwinPrintStarted() { TERN_(HAS_GCODE_PREVIEW, if (Host_Printing()) Preview_Invalidate()); TERN_(SET_PROGRESS_PERCENT, ui.progress_reset()); TERN_(SET_REMAINING_TIME, ui.reset_remaining_time()); hmiFlag.pause_flag = false; hmiFlag.abort_flag = false; select_print.reset(); - Goto_PrintProcess(); + gotoPrintProcess(); } // Pause a print job -void DWIN_Print_Pause() { +void dwinPrintPause() { ICON_ResumeOrPause(); } // Resume print job -void DWIN_Print_Resume() { +void dwinPrintResume() { ICON_ResumeOrPause(); LCD_MESSAGE(MSG_RESUME_PRINT); } // Ended print job -void DWIN_Print_Finished() { +void dwinPrintFinished() { TERN_(POWER_LOSS_RECOVERY, if (card.isPrinting()) recovery.cancel()); hmiFlag.abort_flag = false; hmiFlag.pause_flag = false; wait_for_heatup = false; planner.finish_and_disable(); thermalManager.cooldown(); - Goto_PrintDone(); + gotoPrintDone(); } // Print was aborted -void DWIN_Print_Aborted() { - DWIN_Print_Finished(); +void dwinPrintAborted() { + dwinPrintFinished(); } #if HAS_FILAMENT_SENSOR // Filament Runout process - void DWIN_FilamentRunout(const uint8_t extruder) { LCD_MESSAGE(MSG_RUNOUT_SENSOR); } + void dwinFilamentRunout(const uint8_t extruder) { LCD_MESSAGE(MSG_RUNOUT_SENSOR); } #endif -void DWIN_SetColorDefaults() { - HMI_data.Background_Color = Def_Background_Color; - HMI_data.Cursor_Color = Def_Cursor_Color; - HMI_data.TitleBg_Color = Def_TitleBg_Color; - HMI_data.TitleTxt_Color = Def_TitleTxt_Color; - HMI_data.Text_Color = Def_Text_Color; - HMI_data.Selected_Color = Def_Selected_Color; - HMI_data.SplitLine_Color = Def_SplitLine_Color; - HMI_data.Highlight_Color = Def_Highlight_Color; - HMI_data.StatusBg_Color = Def_StatusBg_Color; - HMI_data.StatusTxt_Color = Def_StatusTxt_Color; - HMI_data.PopupBg_Color = Def_PopupBg_Color; - HMI_data.PopupTxt_Color = Def_PopupTxt_Color; - HMI_data.AlertBg_Color = Def_AlertBg_Color; - HMI_data.AlertTxt_Color = Def_AlertTxt_Color; - HMI_data.PercentTxt_Color = Def_PercentTxt_Color; - HMI_data.Barfill_Color = Def_Barfill_Color; - HMI_data.Indicator_Color = Def_Indicator_Color; - HMI_data.Coordinate_Color = Def_Coordinate_Color; +void dwinSetColorDefaults() { + hmiData.colorBackground = defColorBackground; + hmiData.colorCursor = defColorCursor; + hmiData.colorTitleBg = defColorTitleBg; + hmiData.colorTitleTxt = defColorTitleTxt; + hmiData.colorText = defColorText; + hmiData.colorSelected = defColorSelected; + hmiData.colorSplitLine = defColorSplitLine; + hmiData.colorHighlight = defColorHighlight; + hmiData.colorStatusBg = defColorStatusBg; + hmiData.colorStatusTxt = defColorStatusTxt; + hmiData.colorPopupBg = defColorPopupBg; + hmiData.colorPopupTxt = defColorPopupTxt; + hmiData.colorAlertBg = defColorAlertBg; + hmiData.colorAlertTxt = defColorAlertTxt; + hmiData.colorPercentTxt = defColorPercentTxt; + hmiData.colorBarfill = defColorBarfill; + hmiData.colorIndicator = defColorIndicator; + hmiData.colorCoordinate = defColorCoordinate; } -void DWIN_SetDataDefaults() { - DWIN_SetColorDefaults(); - DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); - TERN_(PIDTEMP, HMI_data.HotendPidT = DEF_HOTENDPIDT); - TERN_(PIDTEMPBED, HMI_data.BedPidT = DEF_BEDPIDT); - TERN_(DWIN_PID_TUNE, HMI_data.PidCycles = DEF_PIDCYCLES); +void dwinSetDataDefaults() { + dwinSetColorDefaults(); + DWINUI::setColors(hmiData.colorText, hmiData.colorBackground, hmiData.colorStatusBg); + TERN_(PIDTEMP, hmiData.hotendPidT = DEF_HOTENDPIDT); + TERN_(PIDTEMPBED, hmiData.bedPidT = DEF_BEDPIDT); + TERN_(PROUI_PID_TUNE, hmiData.pidCycles = DEF_PIDCYCLES); #if ENABLED(PREVENT_COLD_EXTRUSION) - HMI_data.ExtMinT = EXTRUDE_MINTEMP; - ApplyExtMinT(); + hmiData.extMinT = EXTRUDE_MINTEMP; + applyExtMinT(); #endif - TERN_(PREHEAT_BEFORE_LEVELING, HMI_data.BedLevT = LEVELING_BED_TEMP); - TERN_(BAUD_RATE_GCODE, SetBaud250K()); + TERN_(PREHEAT_BEFORE_LEVELING, hmiData.bedLevT = LEVELING_BED_TEMP); + TERN_(BAUD_RATE_GCODE, setBaud250K()); #if ALL(LCD_BED_TRAMMING, HAS_BED_PROBE) - HMI_data.FullManualTramming = DISABLED(BED_TRAMMING_USE_PROBE); + hmiData.fullManualTramming = DISABLED(BED_TRAMMING_USE_PROBE); #endif #if ENABLED(MEDIASORT_MENU_ITEM) - HMI_data.MediaSort = true; + hmiData.mediaSort = true; card.setSortOn(true); #endif - HMI_data.MediaAutoMount = ENABLED(HAS_SD_EXTENDER); + hmiData.mediaAutoMount = ENABLED(HAS_SD_EXTENDER); #if ALL(INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) - HMI_data.z_after_homing = DEF_Z_AFTER_HOMING; + hmiData.zAfterHoming = DEF_Z_AFTER_HOMING; #endif #if ALL(LED_CONTROL_MENU, HAS_COLOR_LEDS) TERN_(LED_COLOR_PRESETS, leds.set_default()); - ApplyLEDColor(); + applyLEDColor(); #endif - TERN_(ADAPTIVE_STEP_SMOOTHING, HMI_data.AdaptiveStepSmoothing = true); - TERN_(HAS_GCODE_PREVIEW, HMI_data.EnablePreview = true); + TERN_(ADAPTIVE_STEP_SMOOTHING, hmiData.adaptiveStepSmoothing = true); + TERN_(HAS_GCODE_PREVIEW, hmiData.enablePreview = true); } -void DWIN_CopySettingsTo(char * const buff) { - memcpy(buff, &HMI_data, eeprom_data_size); +void dwinCopySettingsTo(char * const buff) { + memcpy(buff, &hmiData, eeprom_data_size); } -void DWIN_CopySettingsFrom(const char * const buff) { - memcpy(&HMI_data, buff, sizeof(HMI_data_t)); - if (HMI_data.Text_Color == HMI_data.Background_Color) DWIN_SetColorDefaults(); - DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); - TERN_(PREVENT_COLD_EXTRUSION, ApplyExtMinT()); +void dwinCopySettingsFrom(const char * const buff) { + memcpy(&hmiData, buff, sizeof(hmi_data_t)); + if (hmiData.colorText == hmiData.colorBackground) dwinSetColorDefaults(); + DWINUI::setColors(hmiData.colorText, hmiData.colorBackground, hmiData.colorStatusBg); + TERN_(PREVENT_COLD_EXTRUSION, applyExtMinT()); feedrate_percentage = 100; - TERN_(BAUD_RATE_GCODE, HMI_SetBaudRate()); + TERN_(BAUD_RATE_GCODE, hmiSetBaudRate()); #if ALL(LED_CONTROL_MENU, HAS_COLOR_LEDS) leds.set_color( - HMI_data.Led_Color.r, - HMI_data.Led_Color.g, - HMI_data.Led_Color.b - OPTARG(HAS_WHITE_LED, HMI_data.Led_Color.w) + hmiData.ledColor.r, + hmiData.ledColor.g, + hmiData.ledColor.b + OPTARG(HAS_WHITE_LED, hmiData.ledColor.w) ); leds.update(); #endif @@ -1799,23 +1803,23 @@ void MarlinUI::init_lcd() { } void dwinInitScreen() { - DWIN_SetColorDefaults(); - HMI_Init(); // Draws boot screen + dwinSetColorDefaults(); + hmiInit(); // Draws boot screen DWINUI::init(); - DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); - DWINUI::onTitleDraw = Draw_Title; - InitMenu(); + DWINUI::setColors(hmiData.colorText, hmiData.colorBackground, hmiData.colorStatusBg); + DWINUI::onTitleDraw = drawTitle; + initMenu(); checkkey = 255; hash_changed = true; - DWIN_DrawStatusLine(); - DWIN_Draw_Dashboard(); - Goto_Main_Menu(); + dwinDrawStatusLine(); + dwinDrawDashboard(); + gotoMainMenu(); } void MarlinUI::update() { - HMI_SDCardUpdate(); // SD card update - EachMomentUpdate(); // Status update - DWIN_HandleScreen(); // Rotary encoder update + hmiSDCardUpdate(); // SD card update + eachMomentUpdate(); // Status update + dwinHandleScreen(); // Rotary encoder update } void MarlinUI::refresh() { /* Nothing to see here */ } @@ -1825,149 +1829,149 @@ void MarlinUI::refresh() { /* Nothing to see here */ } #endif void MarlinUI::kill_screen(FSTR_P const lcd_error, FSTR_P const lcd_component) { - DWIN_Draw_Popup(ICON_BLTouch, GET_TEXT_F(MSG_PRINTER_KILLED), lcd_error); - DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 270, GET_TEXT_F(MSG_TURN_OFF)); + dwinDrawPopup(ICON_BLTouch, GET_TEXT_F(MSG_PRINTER_KILLED), lcd_error); + DWINUI::drawCenteredString(hmiData.colorPopupTxt, 270, GET_TEXT_F(MSG_TURN_OFF)); dwinUpdateLCD(); } -void DWIN_RebootScreen() { - dwinFrameClear(Color_Bg_Black); +void dwinRebootScreen() { + dwinFrameClear(COLOR_BG_BLACK); dwinJPGShowAndCache(0); - DWINUI::Draw_CenteredString(Color_White, 220, GET_TEXT_F(MSG_PLEASE_WAIT_REBOOT)); + DWINUI::drawCenteredString(COLOR_WHITE, 220, GET_TEXT_F(MSG_PLEASE_WAIT_REBOOT)); dwinUpdateLCD(); safe_delay(500); } -void DWIN_RedrawDash() { +void dwinRedrawDash() { hash_changed = true; - DWIN_DrawStatusMessage(); - DWIN_Draw_Dashboard(); + dwinDrawStatusMessage(); + dwinDrawDashboard(); } -void DWIN_RedrawScreen() { - Draw_Main_Area(); - DWIN_RedrawDash(); +void dwinRedrawScreen() { + drawMainArea(); + dwinRedrawDash(); } #if ENABLED(ADVANCED_PAUSE_FEATURE) - void DWIN_Popup_Pause(FSTR_P const fmsg, uint8_t button/*=0*/) { - HMI_SaveProcessID(button ? WaitResponse : NothingToDo); - DWIN_Show_Popup(ICON_BLTouch, GET_TEXT_F(MSG_ADVANCED_PAUSE), fmsg, button); + void dwinPopupPause(FSTR_P const fmsg, uint8_t button/*=0*/) { + hmiSaveProcessID(button ? ID_WaitResponse : ID_NothingToDo); + dwinShowPopup(ICON_BLTouch, GET_TEXT_F(MSG_ADVANCED_PAUSE), fmsg, button); } void MarlinUI::pause_show_message(const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, const uint8_t extruder/*=active_extruder*/) { //if (mode == PAUSE_MODE_SAME) return; pause_mode = mode; switch (message) { - case PAUSE_MESSAGE_PARKING: DWIN_Popup_Pause(GET_TEXT_F(MSG_PAUSE_PRINT_PARKING)); break; // M125 - case PAUSE_MESSAGE_CHANGING: DWIN_Popup_Pause(GET_TEXT_F(MSG_FILAMENT_CHANGE_INIT)); break; // pause_print (M125, M600) - case PAUSE_MESSAGE_WAITING: DWIN_Popup_Pause(GET_TEXT_F(MSG_ADVANCED_PAUSE_WAITING), BTN_Continue); break; - case PAUSE_MESSAGE_INSERT: DWIN_Popup_Pause(GET_TEXT_F(MSG_FILAMENT_CHANGE_INSERT), BTN_Continue); break; - case PAUSE_MESSAGE_LOAD: DWIN_Popup_Pause(GET_TEXT_F(MSG_FILAMENT_CHANGE_LOAD)); break; - case PAUSE_MESSAGE_UNLOAD: DWIN_Popup_Pause(GET_TEXT_F(MSG_FILAMENT_CHANGE_UNLOAD)); break; // Unload of pause and Unload of M702 + case PAUSE_MESSAGE_PARKING: dwinPopupPause(GET_TEXT_F(MSG_PAUSE_PRINT_PARKING)); break; // M125 + case PAUSE_MESSAGE_CHANGING: dwinPopupPause(GET_TEXT_F(MSG_FILAMENT_CHANGE_INIT)); break; // pause_print (M125, M600) + case PAUSE_MESSAGE_WAITING: dwinPopupPause(GET_TEXT_F(MSG_ADVANCED_PAUSE_WAITING), BTN_Continue); break; + case PAUSE_MESSAGE_INSERT: dwinPopupPause(GET_TEXT_F(MSG_FILAMENT_CHANGE_INSERT), BTN_Continue); break; + case PAUSE_MESSAGE_LOAD: dwinPopupPause(GET_TEXT_F(MSG_FILAMENT_CHANGE_LOAD)); break; + case PAUSE_MESSAGE_UNLOAD: dwinPopupPause(GET_TEXT_F(MSG_FILAMENT_CHANGE_UNLOAD)); break; // Unload of pause and Unload of M702 case PAUSE_MESSAGE_PURGE: #if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE) - DWIN_Popup_Pause(GET_TEXT_F(MSG_FILAMENT_CHANGE_CONT_PURGE)); + dwinPopupPause(GET_TEXT_F(MSG_FILAMENT_CHANGE_CONT_PURGE)); #else - DWIN_Popup_Pause(GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE)); + dwinPopupPause(GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE)); #endif break; - case PAUSE_MESSAGE_OPTION: Goto_FilamentPurge(); break; - case PAUSE_MESSAGE_RESUME: DWIN_Popup_Pause(GET_TEXT_F(MSG_FILAMENT_CHANGE_RESUME)); break; - case PAUSE_MESSAGE_HEAT: DWIN_Popup_Pause(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEAT), BTN_Continue); break; - case PAUSE_MESSAGE_HEATING: DWIN_Popup_Pause(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEATING)); break; - case PAUSE_MESSAGE_STATUS: HMI_ReturnScreen(); break; // Exit from Pause, Load and Unload + case PAUSE_MESSAGE_OPTION: gotoFilamentPurge(); break; + case PAUSE_MESSAGE_RESUME: dwinPopupPause(GET_TEXT_F(MSG_FILAMENT_CHANGE_RESUME)); break; + case PAUSE_MESSAGE_HEAT: dwinPopupPause(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEAT), BTN_Continue); break; + case PAUSE_MESSAGE_HEATING: dwinPopupPause(GET_TEXT_F(MSG_FILAMENT_CHANGE_HEATING)); break; + case PAUSE_MESSAGE_STATUS: hmiReturnScreen(); break; // Exit from Pause, Load and Unload default: break; } } - void Draw_Popup_FilamentPurge() { - DWIN_Draw_Popup(ICON_BLTouch, GET_TEXT_F(MSG_ADVANCED_PAUSE), GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE_CONTINUE)); - DWINUI::Draw_Button(BTN_Purge, 26, 280); - DWINUI::Draw_Button(BTN_Continue, 146, 280); - Draw_Select_Highlight(true); + void drawPopupFilamentPurge() { + dwinDrawPopup(ICON_BLTouch, GET_TEXT_F(MSG_ADVANCED_PAUSE), GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE_CONTINUE)); + DWINUI::drawButton(BTN_Purge, 26, 280); + DWINUI::drawButton(BTN_Continue, 146, 280); + drawSelectHighlight(true); } - void onClick_FilamentPurge() { + void onClickFilamentPurge() { if (hmiFlag.select_flag) pause_menu_response = PAUSE_RESPONSE_EXTRUDE_MORE; // "Purge More" button else { - HMI_SaveProcessID(NothingToDo); + hmiSaveProcessID(ID_NothingToDo); pause_menu_response = PAUSE_RESPONSE_RESUME_PRINT; // "Continue" button } } - void Goto_FilamentPurge() { + void gotoFilamentPurge() { pause_menu_response = PAUSE_RESPONSE_WAIT_FOR; - Goto_Popup(Draw_Popup_FilamentPurge, onClick_FilamentPurge); + gotoPopup(drawPopupFilamentPurge, onClickFilamentPurge); } #endif // ADVANCED_PAUSE_FEATURE #if HAS_MESH - void DWIN_MeshViewer() { + void dwinMeshViewer() { if (!leveling_is_valid()) - DWIN_Popup_Continue(ICON_BLTouch, GET_TEXT_F(MSG_MESH_VIEWER), GET_TEXT_F(MSG_NO_VALID_MESH)); + dwinPopupContinue(ICON_BLTouch, GET_TEXT_F(MSG_MESH_VIEWER), GET_TEXT_F(MSG_NO_VALID_MESH)); else { - HMI_SaveProcessID(WaitResponse); - MeshViewer.Draw(); + hmiSaveProcessID(ID_WaitResponse); + meshViewer.draw(); } } #endif #if HAS_LOCKSCREEN - void DWIN_LockScreen() { - if (checkkey != Locked) { + void dwinLockScreen() { + if (checkkey != ID_Locked) { lockScreen.rprocess = checkkey; - checkkey = Locked; + checkkey = ID_Locked; lockScreen.init(); } } - void DWIN_UnLockScreen() { - if (checkkey == Locked) { + void dwinUnLockScreen() { + if (checkkey == ID_Locked) { checkkey = lockScreen.rprocess; - Draw_Main_Area(); + drawMainArea(); } } - void HMI_LockScreen() { + void hmiLockScreen() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_NO) return; lockScreen.onEncoder(encoder_diffState); - if (lockScreen.isUnlocked()) DWIN_UnLockScreen(); + if (lockScreen.isUnlocked()) dwinUnLockScreen(); } #endif // HAS_LOCKSCREEN #if HAS_GCODE_PREVIEW - void SetPreview() { Toggle_Chkb_Line(HMI_data.EnablePreview); } + void setPreview() { toggleCheckboxLine(hmiData.enablePreview); } - void onClick_ConfirmToPrint() { - DWIN_ResetStatusLine(); + void onClickConfirmToPrint() { + dwinResetStatusLine(); if (hmiFlag.select_flag) { // Confirm - Goto_Main_Menu(); + gotoMainMenu(); return card.openAndPrintFile(card.filename); } else - HMI_ReturnScreen(); + hmiReturnScreen(); } #endif // HAS_GCODE_PREVIEW -void Goto_ConfirmToPrint() { +void gotoConfirmToPrint() { #if HAS_GCODE_PREVIEW - if (HMI_data.EnablePreview) return Goto_Popup(Preview_DrawFromSD, onClick_ConfirmToPrint); + if (hmiData.enablePreview) return gotoPopup(Preview_DrawFromSD, onClickConfirmToPrint); #endif card.openAndPrintFile(card.filename); // Direct print SD file } #if HAS_ESDIAG - void Draw_EndStopDiag() { - HMI_SaveProcessID(ESDiagProcess); - ESDiag.Draw(); + void drawEndStopDiag() { + hmiSaveProcessID(ID_ESDiagProcess); + esDiag.draw(); } #endif @@ -1979,80 +1983,80 @@ void Goto_ConfirmToPrint() { #if ENABLED(EEPROM_SETTINGS) - void WriteEeprom() { - DWIN_DrawStatusLine(GET_TEXT_F(MSG_STORE_EEPROM)); + void writeEEPROM() { + dwinDrawStatusLine(GET_TEXT_F(MSG_STORE_EEPROM)); dwinUpdateLCD(); DONE_BUZZ(settings.save()); } - void ReadEeprom() { + void readEEPROM() { const bool success = settings.load(); - DWIN_RedrawScreen(); + dwinRedrawScreen(); DONE_BUZZ(success); } - void ResetEeprom() { + void resetEEPROM() { settings.reset(); - DWIN_RedrawScreen(); + dwinRedrawScreen(); DONE_BUZZ(true); } #if HAS_MESH - void SaveMesh() { TERN(AUTO_BED_LEVELING_UBL, UBLMeshSave(), WriteEeprom()); } + void saveMesh() { TERN(AUTO_BED_LEVELING_UBL, ublMeshSave(), writeEEPROM()); } #endif #endif // EEPROM_SETTINGS // Reset Printer -void RebootPrinter() { +void rebootPrinter() { wait_for_heatup = wait_for_user = false; // Stop waiting for heating/user thermalManager.disable_all_heaters(); planner.finish_and_disable(); - DWIN_RebootScreen(); + dwinRebootScreen(); hal.reboot(); } -void Goto_Info_Menu() { - Draw_Info_Menu(); +void gotoInfoMenu() { + drawInfoMenu(); dwinUpdateLCD(); - HMI_SaveProcessID(WaitResponse); + hmiSaveProcessID(ID_WaitResponse); } -void DisableMotors() { queue.inject(F("M84")); } +void disableMotors() { queue.inject(F("M84")); } -void AutoLev() { // Always reacquire the Z "home" position +void autoLevel() { // Always reacquire the Z "home" position queue.inject(F(TERN(AUTO_BED_LEVELING_UBL, "G29P1", "G29"))); } -void AutoHome() { queue.inject_P(G28_STR); } +void autoHome() { queue.inject_P(G28_STR); } #if ENABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU) - void HomeX() { queue.inject(F("G28X")); } - void HomeY() { queue.inject(F("G28Y")); } - void HomeZ() { queue.inject(F("G28Z")); } + void homeX() { queue.inject(F("G28X")); } + void homeY() { queue.inject(F("G28Y")); } + void homeZ() { queue.inject(F("G28Z")); } #if ALL(INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) - void ApplyZAfterHoming() { HMI_data.z_after_homing = MenuData.Value; }; - void SetZAfterHoming() { SetIntOnClick(0, 20, HMI_data.z_after_homing, ApplyZAfterHoming); } + void applyZAfterHoming() { hmiData.zAfterHoming = menuData.value; }; + void setZAfterHoming() { setIntOnClick(0, 20, hmiData.zAfterHoming, applyZAfterHoming); } #endif #endif #if HAS_ZOFFSET_ITEM - void ApplyZOffset() { TERN_(EEPROM_SETTINGS, settings.save()); } - void LiveZOffset() { + void applyZOffset() { TERN_(EEPROM_SETTINGS, settings.save()); } + void liveZOffset() { #if ANY(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) - const_float_t step_zoffset = round((MenuData.Value / 100.0f) * planner.settings.axis_steps_per_mm[Z_AXIS]) - babystep.accum; + const_float_t step_zoffset = round((menuData.value / 100.0f) * planner.settings.axis_steps_per_mm[Z_AXIS]) - babystep.accum; if (BABYSTEP_ALLOWED()) babystep.add_steps(Z_AXIS, step_zoffset); #endif } - void SetZOffset() { + void setZOffset() { #if ANY(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) babystep.accum = round(planner.settings.axis_steps_per_mm[Z_AXIS] * BABY_Z_VAR); #endif - SetPFloatOnClick(Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX, 2, ApplyZOffset, LiveZOffset); + setPFloatOnClick(Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX, 2, applyZOffset, liveZOffset); } - void SetMoveZto0() { + void setMoveZto0() { #if ENABLED(Z_SAFE_HOMING) gcode.process_subcommands_now(MString<54>(F("G28XYO\nG28Z\nG0F5000X"), Z_SAFE_HOMING_X_POINT, F("Y"), Z_SAFE_HOMING_Y_POINT, F("\nG0Z0F300\nM400"))); #else @@ -2064,213 +2068,213 @@ void AutoHome() { queue.inject_P(G28_STR); } } #if !HAS_BED_PROBE - void HomeZandDisable() { - SetMoveZto0(); - DisableMotors(); + void homeZAndDisable() { + setMoveZto0(); + disableMotors(); } #endif #endif // HAS_ZOFFSET_ITEM #if HAS_PREHEAT - #define _DoPreheat(N) void DoPreheat##N() { ui.preheat_all(N-1); }\ + #define _doPreheat(N) void DoPreheat##N() { ui.preheat_all(N-1); }\ void DoPreheatHotend##N() { ui.preheat_hotend(N-1); } - REPEAT_1(PREHEAT_COUNT, _DoPreheat) + REPEAT_1(PREHEAT_COUNT, _doPreheat) #endif -void DoCoolDown() { thermalManager.cooldown(); } +void doCoolDown() { thermalManager.cooldown(); } -void SetLanguage() { - HMI_ToggleLanguage(); - CurrentMenu = nullptr; // Invalidate menu to full redraw - Draw_Prepare_Menu(); +void setLanguage() { + hmiToggleLanguage(); + currentMenu = nullptr; // Invalidate menu to full redraw + drawPrepareMenu(); } -bool EnableLiveMove = false; -void SetLiveMove() { Toggle_Chkb_Line(EnableLiveMove); } -void AxisMove(AxisEnum axis) { +bool enableLiveMove = false; +void setLiveMove() { toggleCheckboxLine(enableLiveMove); } +void axisMove(AxisEnum axis) { #if HAS_HOTEND if (axis == E_AXIS && thermalManager.tooColdToExtrude(0)) { gcode.process_subcommands_now(F("G92E0")); // Reset extruder position - return DWIN_Popup_Confirm(ICON_TempTooLow, GET_TEXT_F(MSG_HOTEND_TOO_COLD), GET_TEXT_F(MSG_PLEASE_PREHEAT)); + return dwinPopupConfirm(ICON_TempTooLow, GET_TEXT_F(MSG_HOTEND_TOO_COLD), GET_TEXT_F(MSG_PLEASE_PREHEAT)); } #endif planner.synchronize(); if (!planner.is_full()) planner.buffer_line(current_position, manual_feedrate_mm_s[axis]); } -void LiveMove() { - if (!EnableLiveMove) return; - *MenuData.P_Float = MenuData.Value / MINUNITMULT; - AxisMove(HMI_value.axis); +void liveMove() { + if (!enableLiveMove) return; + *menuData.floatPtr = menuData.value / MINUNITMULT; + axisMove(hmiValue.axis); } -void ApplyMove() { - if (EnableLiveMove) return; - AxisMove(HMI_value.axis); +void applyMove() { + if (enableLiveMove) return; + axisMove(hmiValue.axis); } -void SetMoveX() { HMI_value.axis = X_AXIS; SetPFloatOnClick(X_MIN_POS, X_MAX_POS, UNITFDIGITS, ApplyMove, LiveMove); } -void SetMoveY() { HMI_value.axis = Y_AXIS; SetPFloatOnClick(Y_MIN_POS, Y_MAX_POS, UNITFDIGITS, ApplyMove, LiveMove); } -void SetMoveZ() { HMI_value.axis = Z_AXIS; SetPFloatOnClick(Z_MIN_POS, Z_MAX_POS, UNITFDIGITS, ApplyMove, LiveMove); } +void setMoveX() { hmiValue.axis = X_AXIS; setPFloatOnClick(X_MIN_POS, X_MAX_POS, UNITFDIGITS, applyMove, liveMove); } +void setMoveY() { hmiValue.axis = Y_AXIS; setPFloatOnClick(Y_MIN_POS, Y_MAX_POS, UNITFDIGITS, applyMove, liveMove); } +void setMoveZ() { hmiValue.axis = Z_AXIS; setPFloatOnClick(Z_MIN_POS, Z_MAX_POS, UNITFDIGITS, applyMove, liveMove); } #if HAS_HOTEND - void SetMoveE() { + void setMoveE() { const float e_min = current_position.e - (EXTRUDE_MAXLENGTH), e_max = current_position.e + (EXTRUDE_MAXLENGTH); - HMI_value.axis = E_AXIS; SetPFloatOnClick(e_min, e_max, UNITFDIGITS, ApplyMove, LiveMove); + hmiValue.axis = E_AXIS; setPFloatOnClick(e_min, e_max, UNITFDIGITS, applyMove, liveMove); } #endif #if ENABLED(POWER_LOSS_RECOVERY) - void SetPwrLossr() { - Toggle_Chkb_Line(recovery.enabled); + void setPwrLossr() { + toggleCheckboxLine(recovery.enabled); recovery.changed(); } #endif #if ENABLED(BAUD_RATE_GCODE) - void HMI_SetBaudRate() { HMI_data.Baud115K ? SetBaud115K() : SetBaud250K(); } - void SetBaudRate() { - HMI_data.Baud115K ^= true; - HMI_SetBaudRate(); - Draw_Chkb_Line(CurrentMenu->line(), HMI_data.Baud115K); + void hmiSetBaudRate() { hmiData.baud115K ? setBaud115K() : setBaud250K(); } + void setBaudRate() { + hmiData.baud115K ^= true; + hmiSetBaudRate(); + drawCheckboxLine(currentMenu->line(), hmiData.baud115K); dwinUpdateLCD(); } - void SetBaud115K() { queue.inject(F("M575 P0 B115200")); HMI_data.Baud115K = true; } - void SetBaud250K() { queue.inject(F("M575 P0 B250000")); HMI_data.Baud115K = false; } + void setBaud115K() { queue.inject(F("M575 P0 B115200")); hmiData.baud115K = true; } + void setBaud250K() { queue.inject(F("M575 P0 B250000")); hmiData.baud115K = false; } #endif #if HAS_LCD_BRIGHTNESS - void ApplyBrightness() { ui.set_brightness(MenuData.Value); } - void LiveBrightness() { dwinLCDBrightness(MenuData.Value); } - void SetBrightness() { SetIntOnClick(LCD_BRIGHTNESS_MIN, LCD_BRIGHTNESS_MAX, ui.brightness, ApplyBrightness, LiveBrightness); } - void TurnOffBacklight() { HMI_SaveProcessID(WaitResponse); ui.set_brightness(0); DWIN_RedrawScreen(); } + void applyBrightness() { ui.set_brightness(menuData.value); } + void liveBrightness() { dwinLCDBrightness(menuData.value); } + void setBrightness() { setIntOnClick(LCD_BRIGHTNESS_MIN, LCD_BRIGHTNESS_MAX, ui.brightness, applyBrightness, liveBrightness); } + void turnOffBacklight() { hmiSaveProcessID(ID_WaitResponse); ui.set_brightness(0); dwinRedrawScreen(); } #endif #if ENABLED(CASE_LIGHT_MENU) - void SetCaseLight() { - Toggle_Chkb_Line(caselight.on); + void setCaseLight() { + toggleCheckboxLine(caselight.on); caselight.update_enabled(); } #if ENABLED(CASELIGHT_USES_BRIGHTNESS) - void LiveCaseLightBrightness() { caselight.brightness = MenuData.Value; caselight.update_brightness(); } - void SetCaseLightBrightness() { SetIntOnClick(0, 255, caselight.brightness, nullptr, LiveCaseLightBrightness); } + void liveCaseLightBrightness() { caselight.brightness = menuData.value; caselight.update_brightness(); } + void setCaseLightBrightness() { setIntOnClick(0, 255, caselight.brightness, nullptr, liveCaseLightBrightness); } #endif #endif #if ENABLED(LED_CONTROL_MENU) #if !ALL(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL) - void SetLedStatus() { + void setLedStatus() { leds.toggle(); - Show_Chkb_Line(leds.lights_on); + showCheckboxLine(leds.lights_on); } #endif #if HAS_COLOR_LEDS - void ApplyLEDColor() { - HMI_data.Led_Color = LEDColor( {leds.color.r, leds.color.g, leds.color.b OPTARG(HAS_WHITE_LED, HMI_data.Led_Color.w) } ); + void applyLEDColor() { + hmiData.ledColor = LEDColor( {leds.color.r, leds.color.g, leds.color.b OPTARG(HAS_WHITE_LED, hmiData.ledColor.w) } ); } - void LiveLEDColor(uint8_t *color) { *color = MenuData.Value; leds.update(); } - void LiveLEDColorR() { LiveLEDColor(&leds.color.r); } - void LiveLEDColorG() { LiveLEDColor(&leds.color.g); } - void LiveLEDColorB() { LiveLEDColor(&leds.color.b); } - void SetLEDColorR() { SetIntOnClick(0, 255, leds.color.r, ApplyLEDColor, LiveLEDColorR); } - void SetLEDColorG() { SetIntOnClick(0, 255, leds.color.g, ApplyLEDColor, LiveLEDColorG); } - void SetLEDColorB() { SetIntOnClick(0, 255, leds.color.b, ApplyLEDColor, LiveLEDColorB); } + void liveLEDColor(uint8_t *color) { *color = menuData.value; leds.update(); } + void liveLEDColorR() { liveLEDColor(&leds.color.r); } + void liveLEDColorG() { liveLEDColor(&leds.color.g); } + void liveLEDColorB() { liveLEDColor(&leds.color.b); } + void setLEDColorR() { setIntOnClick(0, 255, leds.color.r, applyLEDColor, liveLEDColorR); } + void setLEDColorG() { setIntOnClick(0, 255, leds.color.g, applyLEDColor, liveLEDColorG); } + void setLEDColorB() { setIntOnClick(0, 255, leds.color.b, applyLEDColor, liveLEDColorB); } #if HAS_WHITE_LED - void LiveLEDColorW() { LiveLEDColor(&leds.color.w); } - void SetLEDColorW() { SetIntOnClick(0, 255, leds.color.w, ApplyLEDColor, LiveLEDColorW); } + void liveLEDColorW() { liveLEDColor(&leds.color.w); } + void setLEDColorW() { setIntOnClick(0, 255, leds.color.w, applyLEDColor, liveLEDColorW); } #endif #endif #endif #if ENABLED(SOUND_MENU_ITEM) - void SetEnableSound() { - Toggle_Chkb_Line(ui.sound_on); + void setEnableSound() { + toggleCheckboxLine(ui.sound_on); } #endif #if HAS_HOME_OFFSET - void ApplyHomeOffset() { set_home_offset(HMI_value.axis, MenuData.Value / MINUNITMULT); } - void SetHomeOffsetX() { HMI_value.axis = X_AXIS; SetPFloatOnClick(-50, 50, UNITFDIGITS, ApplyHomeOffset); } - void SetHomeOffsetY() { HMI_value.axis = Y_AXIS; SetPFloatOnClick(-50, 50, UNITFDIGITS, ApplyHomeOffset); } - void SetHomeOffsetZ() { HMI_value.axis = Z_AXIS; SetPFloatOnClick( -2, 2, UNITFDIGITS, ApplyHomeOffset); } + void applyHomeOffset() { set_home_offset(hmiValue.axis, menuData.value / MINUNITMULT); } + void setHomeOffsetX() { hmiValue.axis = X_AXIS; setPFloatOnClick(-50, 50, UNITFDIGITS, applyHomeOffset); } + void setHomeOffsetY() { hmiValue.axis = Y_AXIS; setPFloatOnClick(-50, 50, UNITFDIGITS, applyHomeOffset); } + void setHomeOffsetZ() { hmiValue.axis = Z_AXIS; setPFloatOnClick( -2, 2, UNITFDIGITS, applyHomeOffset); } #endif #if HAS_BED_PROBE - void SetProbeOffsetX() { SetPFloatOnClick(-60, 60, UNITFDIGITS); } - void SetProbeOffsetY() { SetPFloatOnClick(-60, 60, UNITFDIGITS); } - void SetProbeOffsetZ() { SetPFloatOnClick(-10, 10, 2); } - void ProbeTest() { + void setProbeOffsetX() { setPFloatOnClick(-60, 60, UNITFDIGITS); } + void setProbeOffsetY() { setPFloatOnClick(-60, 60, UNITFDIGITS); } + void setProbeOffsetZ() { setPFloatOnClick(-10, 10, 2); } + void probeTest() { LCD_MESSAGE(MSG_M48_TEST); queue.inject(F("G28O\nM48 P10")); } - void ProbeStow() { probe.stow(); } - void ProbeDeploy() { probe.deploy(); } + void probeStow() { probe.stow(); } + void probeDeploy() { probe.deploy(); } #if HAS_BLTOUCH_HS_MODE - void SetHSMode() { Toggle_Chkb_Line(bltouch.high_speed_mode); } + void setHSMode() { toggleCheckboxLine(bltouch.high_speed_mode); } #endif #endif #if HAS_FILAMENT_SENSOR - void SetRunoutEnable() { + void setRunoutEnable() { runout.reset(); - Toggle_Chkb_Line(runout.enabled); + toggleCheckboxLine(runout.enabled); } #if HAS_FILAMENT_RUNOUT_DISTANCE - void ApplyRunoutDistance() { runout.set_runout_distance(MenuData.Value / MINUNITMULT); } - void SetRunoutDistance() { SetFloatOnClick(0, 999, UNITFDIGITS, runout.runout_distance(), ApplyRunoutDistance); } + void applyRunoutDistance() { runout.set_runout_distance(menuData.value / MINUNITMULT); } + void setRunoutDistance() { setFloatOnClick(0, 999, UNITFDIGITS, runout.runout_distance(), applyRunoutDistance); } #endif #endif #if ENABLED(ADVANCED_PAUSE_FEATURE) - void SetFilLoad() { SetPFloatOnClick(0, MAX_LOAD_UNLOAD, UNITFDIGITS); } - void SetFilUnload() { SetPFloatOnClick(0, MAX_LOAD_UNLOAD, UNITFDIGITS); } + void setFilLoad() { setPFloatOnClick(0, MAX_LOAD_UNLOAD, UNITFDIGITS); } + void setFilUnload() { setPFloatOnClick(0, MAX_LOAD_UNLOAD, UNITFDIGITS); } #endif #if ENABLED(PREVENT_COLD_EXTRUSION) - void ApplyExtMinT() { thermalManager.extrude_min_temp = HMI_data.ExtMinT; thermalManager.allow_cold_extrude = (HMI_data.ExtMinT == 0); } - void SetExtMinT() { SetPIntOnClick(MIN_ETEMP, MAX_ETEMP, ApplyExtMinT); } + void applyExtMinT() { thermalManager.extrude_min_temp = hmiData.extMinT; thermalManager.allow_cold_extrude = (hmiData.extMinT == 0); } + void setExtMinT() { setPIntOnClick(MIN_ETEMP, MAX_ETEMP, applyExtMinT); } #endif -void SetSpeed() { SetPIntOnClick(MIN_PRINT_SPEED, MAX_PRINT_SPEED); } +void setSpeed() { setPIntOnClick(MIN_PRINT_SPEED, MAX_PRINT_SPEED); } #if HAS_HOTEND - void ApplyHotendTemp() { thermalManager.setTargetHotend(MenuData.Value, 0); } - void SetHotendTemp() { SetIntOnClick(MIN_ETEMP, MAX_ETEMP, thermalManager.degTargetHotend(0), ApplyHotendTemp); } + void applyHotendTemp() { thermalManager.setTargetHotend(menuData.value, 0); } + void setHotendTemp() { setIntOnClick(MIN_ETEMP, MAX_ETEMP, thermalManager.degTargetHotend(0), applyHotendTemp); } #endif #if HAS_HEATED_BED - void ApplyBedTemp() { thermalManager.setTargetBed(MenuData.Value); } - void SetBedTemp() { SetIntOnClick(MIN_BEDTEMP, MAX_BEDTEMP, thermalManager.degTargetBed(), ApplyBedTemp); } + void applyBedTemp() { thermalManager.setTargetBed(menuData.value); } + void setBedTemp() { setIntOnClick(MIN_BEDTEMP, MAX_BEDTEMP, thermalManager.degTargetBed(), applyBedTemp); } #endif #if HAS_FAN - void ApplyFanSpeed() { thermalManager.set_fan_speed(0, MenuData.Value); } - void SetFanSpeed() { SetIntOnClick(0, 255, thermalManager.fan_speed[0], ApplyFanSpeed); } + void applyFanSpeed() { thermalManager.set_fan_speed(0, menuData.value); } + void setFanSpeed() { setIntOnClick(0, 255, thermalManager.fan_speed[0], applyFanSpeed); } #endif #if ENABLED(ADVANCED_PAUSE_FEATURE) - void ChangeFilament() { - HMI_SaveProcessID(NothingToDo); + void changeFilament() { + hmiSaveProcessID(ID_NothingToDo); queue.inject(F("M600 B2")); } #if ENABLED(NOZZLE_PARK_FEATURE) - void ParkHead() { + void parkHead() { LCD_MESSAGE(MSG_FILAMENT_PARK_ENABLED); queue.inject(F("G28O\nG27")); } #endif #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) - void UnloadFilament() { + void unloadFilament() { LCD_MESSAGE(MSG_FILAMENTUNLOAD); queue.inject(F("M702 Z20")); } - void LoadFilament() { + void loadFilament() { LCD_MESSAGE(MSG_FILAMENTLOAD); queue.inject(F("M701 Z20")); } @@ -2278,13 +2282,13 @@ void SetSpeed() { SetPIntOnClick(MIN_PRINT_SPEED, MAX_PRINT_SPEED); } #endif // ADVANCED_PAUSE_FEATURE -void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refresh_e_factor(0); }); } +void setFlow() { setPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refresh_e_factor(0); }); } // Bed Tramming #if ENABLED(LCD_BED_TRAMMING) - void TramXY(const uint8_t point, float &x, float &y) { + void tramXY(const uint8_t point, float &x, float &y) { switch (point) { case 0: LCD_MESSAGE(MSG_TRAM_FL); @@ -2317,14 +2321,14 @@ void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refr #if HAS_BED_PROBE - float Tram(const uint8_t point) { + float tram(const uint8_t point) { static bool inLev = false; if (inLev) return NAN; float xpos = 0, ypos = 0, zval = 0; - TramXY(point, xpos, ypos); + tramXY(point, xpos, ypos); - if (HMI_data.FullManualTramming) { + if (hmiData.fullManualTramming) { queue.inject(MString<100>( F("M420S0\nG28O\nG90\nG0F300Z5\nG0F5000X"), p_float_t(xpos, 1), 'Y', p_float_t(ypos, 1), F("\nG0F300Z0") )); @@ -2361,9 +2365,9 @@ void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refr #else - void Tram(const uint8_t point) { + void tram(const uint8_t point) { float xpos = 0, ypos = 0; - TramXY(point, xpos, ypos); + tramXY(point, xpos, ypos); queue.inject(MString<100>( F("M420S0\nG28O\nG90\nG0F300Z5\nG0F5000X"), p_float_t(xpos, 1), 'Y', p_float_t(ypos, 1), F("\nG0F300Z0") )); @@ -2371,49 +2375,49 @@ void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refr #endif - inline void TramFL() { Tram(0); } - inline void TramFR() { Tram(1); } - inline void TramBR() { Tram(2); } - inline void TramBL() { Tram(3); } + inline void tramFL() { tram(0); } + inline void tramFR() { tram(1); } + inline void tramBR() { tram(2); } + inline void tramBL() { tram(3); } #if ENABLED(BED_TRAMMING_INCLUDE_CENTER) - inline void TramC() { Tram(4); } + inline void tramC() { tram(4); } #endif #if HAS_BED_PROBE && HAS_MESH - void Trammingwizard() { - if (HMI_data.FullManualTramming) { + void trammingwizard() { + if (hmiData.fullManualTramming) { LCD_MESSAGE_F("Disable manual tramming"); return; } bed_mesh_t zval = {0}; - zval[0][0] = TramFL(); - checkkey = NothingToDo; - MeshViewer.DrawMesh(zval, 2, 2); - zval[1][0] = TramFR(); - MeshViewer.DrawMesh(zval, 2, 2); - zval[1][1] = TramBR(); - MeshViewer.DrawMesh(zval, 2, 2); - zval[0][1] = TramBL(); - MeshViewer.DrawMesh(zval, 2, 2); + zval[0][0] = tramFL(); + checkkey = ID_NothingToDo; + meshViewer.drawMesh(zval, 2, 2); + zval[1][0] = tramFR(); + meshViewer.drawMesh(zval, 2, 2); + zval[1][1] = tramBR(); + meshViewer.drawMesh(zval, 2, 2); + zval[0][1] = tramBL(); + meshViewer.drawMesh(zval, 2, 2); - DWINUI::Draw_CenteredString(140, F("Calculating average")); - DWINUI::Draw_CenteredString(160, F("and relative heights")); + DWINUI::drawCenteredString(140, F("Calculating average")); + DWINUI::drawCenteredString(160, F("and relative heights")); safe_delay(1000); float avg = 0.0f; for (uint8_t x = 0; x < 2; ++x) for (uint8_t y = 0; y < 2; ++y) avg += zval[x][y]; avg /= 4.0f; for (uint8_t x = 0; x < 2; ++x) for (uint8_t y = 0; y < 2; ++y) zval[x][y] -= avg; - MeshViewer.DrawMesh(zval, 2, 2); + meshViewer.drawMesh(zval, 2, 2); ui.reset_status(); #ifndef BED_TRAMMING_PROBE_TOLERANCE #define BED_TRAMMING_PROBE_TOLERANCE 0.05 #endif - if (ABS(MeshViewer.max - MeshViewer.min) < BED_TRAMMING_PROBE_TOLERANCE) { - DWINUI::Draw_CenteredString(140, F("Corners leveled")); - DWINUI::Draw_CenteredString(160, F("Tolerance achieved!")); + if (ABS(meshViewer.max - meshViewer.min) < BED_TRAMMING_PROBE_TOLERANCE) { + DWINUI::drawCenteredString(140, F("Corners leveled")); + DWINUI::drawCenteredString(160, F("Tolerance achieved!")); } else { uint8_t p = 0; @@ -2435,18 +2439,18 @@ void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refr case 0b11 : plabel = GET_TEXT_F(MSG_TRAM_BR); break; default : plabel = F(""); break; } - DWINUI::Draw_CenteredString(120, F("Corners not leveled")); - DWINUI::Draw_CenteredString(140, F("Knob adjustment required")); - DWINUI::Draw_CenteredString(Color_Green, 160, s ? F("Lower") : F("Raise")); - DWINUI::Draw_CenteredString(Color_Green, 180, plabel); + DWINUI::drawCenteredString(120, F("Corners not leveled")); + DWINUI::drawCenteredString(140, F("Knob adjustment required")); + DWINUI::drawCenteredString(COLOR_GREEN, 160, s ? F("Lower") : F("Raise")); + DWINUI::drawCenteredString(COLOR_GREEN, 180, plabel); } - DWINUI::Draw_Button(BTN_Continue, 86, 305); - checkkey = Menu; - HMI_SaveProcessID(WaitResponse); + DWINUI::drawButton(BTN_Continue, 86, 305); + checkkey = ID_Menu; + hmiSaveProcessID(ID_WaitResponse); } - void SetManualTramming() { - Toggle_Chkb_Line(HMI_data.FullManualTramming); + void setManualTramming() { + toggleCheckboxLine(hmiData.fullManualTramming); } #endif // HAS_BED_PROBE && HAS_MESH @@ -2455,30 +2459,30 @@ void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refr #if ENABLED(MESH_BED_LEVELING) - void ManualMeshStart() { + void manualMeshStart() { LCD_MESSAGE(MSG_UBL_BUILD_MESH_MENU); gcode.process_subcommands_now(F("G28XYO\nG28Z\nM211S0\nG29S1")); #ifdef MANUAL_PROBE_START_Z - const uint8_t line = CurrentMenu->line(MMeshMoveZItem->pos); - DWINUI::Draw_Signed_Float(HMI_data.Text_Color, HMI_data.Background_Color, 3, 2, VALX - 2 * DWINUI::fontWidth(DWIN_FONT_MENU), MBASE(line), MANUAL_PROBE_START_Z); + const uint8_t line = currentMenu->line(mMeshMoveZItem->pos); + DWINUI::drawSignedFloat(hmiData.colorText, hmiData.colorBackground, 3, 2, VALX - 2 * DWINUI::fontWidth(DWIN_FONT_MENU), MBASE(line), MANUAL_PROBE_START_Z); #endif } - void LiveMeshMoveZ() { - *MenuData.P_Float = MenuData.Value / POW(10, 2); + void liveMeshMoveZ() { + *menuData.floatPtr = menuData.value / POW(10, 2); if (!planner.is_full()) { planner.synchronize(); planner.buffer_line(current_position, manual_feedrate_mm_s[Z_AXIS]); } } - void SetMMeshMoveZ() { SetPFloatOnClick(-1, 1, 2, planner.synchronize, LiveMeshMoveZ); } + void setMMeshMoveZ() { setPFloatOnClick(-1, 1, 2, planner.synchronize, liveMeshMoveZ); } - void ManualMeshContinue() { + void manualMeshContinue() { gcode.process_subcommands_now(F("G29S2")); - MMeshMoveZItem->redraw(); + mMeshMoveZItem->redraw(); } - void ManualMeshSave() { + void manualMeshSave() { LCD_MESSAGE(MSG_UBL_STORAGE_MESH_MENU); queue.inject(F("M211S1\nM500")); } @@ -2487,207 +2491,207 @@ void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refr #if HAS_PREHEAT #if HAS_HOTEND - void SetPreheatEndTemp() { SetPIntOnClick(MIN_ETEMP, MAX_ETEMP); } + void setPreheatEndTemp() { setPIntOnClick(MIN_ETEMP, MAX_ETEMP); } #endif #if HAS_HEATED_BED - void SetPreheatBedTemp() { SetPIntOnClick(MIN_BEDTEMP, MAX_BEDTEMP); } + void setPreheatBedTemp() { setPIntOnClick(MIN_BEDTEMP, MAX_BEDTEMP); } #endif #if HAS_FAN - void SetPreheatFanSpeed() { SetPIntOnClick(0, 255); } + void setPreheatFanSpeed() { setPIntOnClick(0, 255); } #endif #endif -void ApplyMaxSpeed() { planner.set_max_feedrate(HMI_value.axis, MenuData.Value / MINUNITMULT); } +void applyMaxSpeed() { planner.set_max_feedrate(hmiValue.axis, menuData.value / MINUNITMULT); } #if HAS_X_AXIS - void SetMaxSpeedX() { HMI_value.axis = X_AXIS, SetFloatOnClick(min_feedrate_edit_values.x, max_feedrate_edit_values.x, UNITFDIGITS, planner.settings.max_feedrate_mm_s[X_AXIS], ApplyMaxSpeed); } + void setMaxSpeedX() { hmiValue.axis = X_AXIS, setFloatOnClick(min_feedrate_edit_values.x, max_feedrate_edit_values.x, UNITFDIGITS, planner.settings.max_feedrate_mm_s[X_AXIS], applyMaxSpeed); } #endif #if HAS_Y_AXIS - void SetMaxSpeedY() { HMI_value.axis = Y_AXIS, SetFloatOnClick(min_feedrate_edit_values.y, max_feedrate_edit_values.y, UNITFDIGITS, planner.settings.max_feedrate_mm_s[Y_AXIS], ApplyMaxSpeed); } + void setMaxSpeedY() { hmiValue.axis = Y_AXIS, setFloatOnClick(min_feedrate_edit_values.y, max_feedrate_edit_values.y, UNITFDIGITS, planner.settings.max_feedrate_mm_s[Y_AXIS], applyMaxSpeed); } #endif #if HAS_Z_AXIS - void SetMaxSpeedZ() { HMI_value.axis = Z_AXIS, SetFloatOnClick(min_feedrate_edit_values.z, max_feedrate_edit_values.z, UNITFDIGITS, planner.settings.max_feedrate_mm_s[Z_AXIS], ApplyMaxSpeed); } + void setMaxSpeedZ() { hmiValue.axis = Z_AXIS, setFloatOnClick(min_feedrate_edit_values.z, max_feedrate_edit_values.z, UNITFDIGITS, planner.settings.max_feedrate_mm_s[Z_AXIS], applyMaxSpeed); } #endif #if HAS_HOTEND - void SetMaxSpeedE() { HMI_value.axis = E_AXIS; SetFloatOnClick(min_feedrate_edit_values.e, max_feedrate_edit_values.e, UNITFDIGITS, planner.settings.max_feedrate_mm_s[E_AXIS], ApplyMaxSpeed); } + void setMaxSpeedE() { hmiValue.axis = E_AXIS; setFloatOnClick(min_feedrate_edit_values.e, max_feedrate_edit_values.e, UNITFDIGITS, planner.settings.max_feedrate_mm_s[E_AXIS], applyMaxSpeed); } #endif -void ApplyMaxAccel() { planner.set_max_acceleration(HMI_value.axis, MenuData.Value); } +void applyMaxAccel() { planner.set_max_acceleration(hmiValue.axis, menuData.value); } #if HAS_X_AXIS - void SetMaxAccelX() { HMI_value.axis = X_AXIS, SetIntOnClick(min_acceleration_edit_values.x, max_acceleration_edit_values.x, planner.settings.max_acceleration_mm_per_s2[X_AXIS], ApplyMaxAccel); } + void setMaxAccelX() { hmiValue.axis = X_AXIS, setIntOnClick(min_acceleration_edit_values.x, max_acceleration_edit_values.x, planner.settings.max_acceleration_mm_per_s2[X_AXIS], applyMaxAccel); } #endif #if HAS_Y_AXIS - void SetMaxAccelY() { HMI_value.axis = Y_AXIS, SetIntOnClick(min_acceleration_edit_values.y, max_acceleration_edit_values.y, planner.settings.max_acceleration_mm_per_s2[Y_AXIS], ApplyMaxAccel); } + void setMaxAccelY() { hmiValue.axis = Y_AXIS, setIntOnClick(min_acceleration_edit_values.y, max_acceleration_edit_values.y, planner.settings.max_acceleration_mm_per_s2[Y_AXIS], applyMaxAccel); } #endif #if HAS_Z_AXIS - void SetMaxAccelZ() { HMI_value.axis = Z_AXIS, SetIntOnClick(min_acceleration_edit_values.z, max_acceleration_edit_values.z, planner.settings.max_acceleration_mm_per_s2[Z_AXIS], ApplyMaxAccel); } + void setMaxAccelZ() { hmiValue.axis = Z_AXIS, setIntOnClick(min_acceleration_edit_values.z, max_acceleration_edit_values.z, planner.settings.max_acceleration_mm_per_s2[Z_AXIS], applyMaxAccel); } #endif #if HAS_HOTEND - void SetMaxAccelE() { HMI_value.axis = E_AXIS; SetIntOnClick(min_acceleration_edit_values.e, max_acceleration_edit_values.e, planner.settings.max_acceleration_mm_per_s2[E_AXIS], ApplyMaxAccel); } + void setMaxAccelE() { hmiValue.axis = E_AXIS; setIntOnClick(min_acceleration_edit_values.e, max_acceleration_edit_values.e, planner.settings.max_acceleration_mm_per_s2[E_AXIS], applyMaxAccel); } #endif #if HAS_CLASSIC_JERK - void ApplyMaxJerk() { planner.set_max_jerk(HMI_value.axis, MenuData.Value / MINUNITMULT); } + void applyMaxJerk() { planner.set_max_jerk(hmiValue.axis, menuData.value / MINUNITMULT); } #if HAS_X_AXIS - void SetMaxJerkX() { HMI_value.axis = X_AXIS, SetFloatOnClick(min_jerk_edit_values.x, max_jerk_edit_values.x, UNITFDIGITS, planner.max_jerk.x, ApplyMaxJerk); } + void setMaxJerkX() { hmiValue.axis = X_AXIS, setFloatOnClick(min_jerk_edit_values.x, max_jerk_edit_values.x, UNITFDIGITS, planner.max_jerk.x, applyMaxJerk); } #endif #if HAS_Y_AXIS - void SetMaxJerkY() { HMI_value.axis = Y_AXIS, SetFloatOnClick(min_jerk_edit_values.y, max_jerk_edit_values.y, UNITFDIGITS, planner.max_jerk.y, ApplyMaxJerk); } + void setMaxJerkY() { hmiValue.axis = Y_AXIS, setFloatOnClick(min_jerk_edit_values.y, max_jerk_edit_values.y, UNITFDIGITS, planner.max_jerk.y, applyMaxJerk); } #endif #if HAS_Z_AXIS - void SetMaxJerkZ() { HMI_value.axis = Z_AXIS, SetFloatOnClick(min_jerk_edit_values.z, max_jerk_edit_values.z, UNITFDIGITS, planner.max_jerk.z, ApplyMaxJerk); } + void setMaxJerkZ() { hmiValue.axis = Z_AXIS, setFloatOnClick(min_jerk_edit_values.z, max_jerk_edit_values.z, UNITFDIGITS, planner.max_jerk.z, applyMaxJerk); } #endif #if HAS_HOTEND - void SetMaxJerkE() { HMI_value.axis = E_AXIS; SetFloatOnClick(min_jerk_edit_values.e, max_jerk_edit_values.e, UNITFDIGITS, planner.max_jerk.e, ApplyMaxJerk); } + void setMaxJerkE() { hmiValue.axis = E_AXIS; setFloatOnClick(min_jerk_edit_values.e, max_jerk_edit_values.e, UNITFDIGITS, planner.max_jerk.e, applyMaxJerk); } #endif #elif HAS_JUNCTION_DEVIATION - void ApplyJDmm() { TERN_(LIN_ADVANCE, planner.recalculate_max_e_jerk()); } - void SetJDmm() { SetPFloatOnClick(MIN_JD_MM, MAX_JD_MM, 3, ApplyJDmm); } + void applyJDmm() { TERN_(LIN_ADVANCE, planner.recalculate_max_e_jerk()); } + void setJDmm() { setPFloatOnClick(MIN_JD_MM, MAX_JD_MM, 3, applyJDmm); } #endif #if ENABLED(LIN_ADVANCE) - void SetLA_K() { SetPFloatOnClick(0, 10, 3); } + void setLA_K() { setPFloatOnClick(0, 10, 3); } #endif #if HAS_X_AXIS - void SetStepsX() { HMI_value.axis = X_AXIS, SetPFloatOnClick( min_steps_edit_values.x, max_steps_edit_values.x, UNITFDIGITS); } + void setStepsX() { hmiValue.axis = X_AXIS, setPFloatOnClick( min_steps_edit_values.x, max_steps_edit_values.x, UNITFDIGITS); } #endif #if HAS_Y_AXIS - void SetStepsY() { HMI_value.axis = Y_AXIS, SetPFloatOnClick( min_steps_edit_values.y, max_steps_edit_values.y, UNITFDIGITS); } + void setStepsY() { hmiValue.axis = Y_AXIS, setPFloatOnClick( min_steps_edit_values.y, max_steps_edit_values.y, UNITFDIGITS); } #endif #if HAS_Z_AXIS - void SetStepsZ() { HMI_value.axis = Z_AXIS, SetPFloatOnClick( min_steps_edit_values.z, max_steps_edit_values.z, UNITFDIGITS); } + void setStepsZ() { hmiValue.axis = Z_AXIS, setPFloatOnClick( min_steps_edit_values.z, max_steps_edit_values.z, UNITFDIGITS); } #endif #if HAS_HOTEND - void SetStepsE() { HMI_value.axis = E_AXIS; SetPFloatOnClick( min_steps_edit_values.e, max_steps_edit_values.e, UNITFDIGITS); } + void setStepsE() { hmiValue.axis = E_AXIS; setPFloatOnClick( min_steps_edit_values.e, max_steps_edit_values.e, UNITFDIGITS); } #endif #if ENABLED(FWRETRACT) - void Return_FWRetract_Menu() { (PreviousMenu == FilSetMenu) ? Draw_FilSet_Menu() : Draw_Tune_Menu(); } - void SetRetractLength() { SetPFloatOnClick( 0, 10, UNITFDIGITS); } - void SetRetractSpeed() { SetPFloatOnClick( 1, 90, UNITFDIGITS); } - void SetZRaise() { SetPFloatOnClick( 0, 2, 2); } - void SetRecoverSpeed() { SetPFloatOnClick( 1, 90, UNITFDIGITS); } - void SetAddRecover() { SetPFloatOnClick(-5, 5, UNITFDIGITS); } + void returnFWRetractMenu() { (previousMenu == filSetMenu) ? drawFilSetMenu() : drawTuneMenu(); } + void setRetractLength() { setPFloatOnClick( 0, 10, UNITFDIGITS); } + void setRetractSpeed() { setPFloatOnClick( 1, 90, UNITFDIGITS); } + void setZRaise() { setPFloatOnClick( 0, 2, 2); } + void setRecoverSpeed() { setPFloatOnClick( 1, 90, UNITFDIGITS); } + void setAddRecover() { setPFloatOnClick(-5, 5, UNITFDIGITS); } #endif // Special Menuitem Drawing functions ================================================= -void onDrawBack(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 129, 72, 156, 84); +void onDrawBack(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 129, 72, 156, 84); onDrawMenuItem(menuitem, line); } -void onDrawTempSubMenu(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 57, 104, 84, 116); +void onDrawTempSubMenu(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 57, 104, 84, 116); onDrawSubMenu(menuitem, line); } -void onDrawMotionSubMenu(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 87, 104, 114, 116); +void onDrawMotionSubMenu(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 87, 104, 114, 116); onDrawSubMenu(menuitem, line); } #if ENABLED(EEPROM_SETTINGS) - void onDrawWriteEeprom(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 117, 104, 172, 116); + void onDrawWriteEeprom(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 117, 104, 172, 116); onDrawMenuItem(menuitem, line); } - void onDrawReadEeprom(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 174, 103, 229, 116); + void onDrawReadEeprom(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 174, 103, 229, 116); onDrawMenuItem(menuitem, line); } - void onDrawResetEeprom(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 1, 118, 56, 131); + void onDrawResetEeprom(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 1, 118, 56, 131); onDrawMenuItem(menuitem, line); } #endif -void onDrawInfoSubMenu(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 231, 104, 258, 116); +void onDrawInfoSubMenu(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 231, 104, 258, 116); onDrawSubMenu(menuitem, line); } -void onDrawMoveX(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 58, 118, 106, 132); +void onDrawMoveX(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 58, 118, 106, 132); onDrawPFloatMenu(menuitem, line); } -void onDrawMoveY(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 109, 118, 157, 132); +void onDrawMoveY(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 109, 118, 157, 132); onDrawPFloatMenu(menuitem, line); } -void onDrawMoveZ(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 160, 118, 209, 132); +void onDrawMoveZ(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 160, 118, 209, 132); onDrawPFloatMenu(menuitem, line); } #if HAS_HOTEND - void onDrawMoveE(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 212, 118, 253, 131); + void onDrawMoveE(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 212, 118, 253, 131); onDrawPFloatMenu(menuitem, line); } #endif -void onDrawMoveSubMenu(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 159, 70, 200, 84); +void onDrawMoveSubMenu(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 159, 70, 200, 84); onDrawSubMenu(menuitem, line); } -void onDrawDisableMotors(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 204, 70, 259, 82); +void onDrawDisableMotors(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 204, 70, 259, 82); onDrawMenuItem(menuitem, line); } -void onDrawAutoHome(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 0, 89, 41, 101); +void onDrawAutoHome(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 0, 89, 41, 101); onDrawMenuItem(menuitem, line); } #if HAS_ZOFFSET_ITEM #if ANY(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP) - void onDrawZOffset(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 174, 164, 223, 177); + void onDrawZOffset(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 174, 164, 223, 177); onDrawPFloat2Menu(menuitem, line); } #endif #endif #if HAS_HOTEND - void onDrawPreheat1(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 100, 89, 151, 101); + void onDrawPreheat1(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 100, 89, 151, 101); onDrawMenuItem(menuitem, line); } #if PREHEAT_COUNT > 1 - void onDrawPreheat2(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 180, 89, 233, 100); + void onDrawPreheat2(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 180, 89, 233, 100); onDrawMenuItem(menuitem, line); } #endif #endif #if HAS_PREHEAT - void onDrawCooldown(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 1, 104, 56, 117); + void onDrawCooldown(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 1, 104, 56, 117); onDrawMenuItem(menuitem, line); } #endif -void onDrawLanguage(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 239, 134, 266, 146); +void onDrawLanguage(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 239, 134, 266, 146); onDrawMenuItem(menuitem, line); - DWINUI::Draw_String(VALX, MBASE(line), HMI_IsChinese() ? F("CN") : F("EN")); + DWINUI::drawString(VALX, MBASE(line), hmiIsChinese() ? F("CN") : F("EN")); } -void onDrawSelColorItem(MenuItemClass* menuitem, int8_t line) { - const uint16_t color = *(uint16_t*)static_cast(menuitem)->value; - dwinDrawRectangle(0, HMI_data.Highlight_Color, ICOX + 1, MBASE(line) - 1 + 1, ICOX + 18, MBASE(line) - 1 + 18); +void onDrawSelColorItem(MenuItem* menuitem, int8_t line) { + const uint16_t color = *(uint16_t*)static_cast(menuitem)->value; + dwinDrawRectangle(0, hmiData.colorHighlight, ICOX + 1, MBASE(line) - 1 + 1, ICOX + 18, MBASE(line) - 1 + 18); dwinDrawRectangle(1, color, ICOX + 2, MBASE(line) - 1 + 2, ICOX + 17, MBASE(line) - 1 + 17); onDrawMenuItem(menuitem, line); } -void onDrawGetColorItem(MenuItemClass* menuitem, int8_t line) { +void onDrawGetColorItem(MenuItem* menuitem, int8_t line) { const uint8_t i = menuitem->icon; uint16_t color; switch (i) { @@ -2696,165 +2700,165 @@ void onDrawGetColorItem(MenuItemClass* menuitem, int8_t line) { case 2: color = RGB(0, 0, 31); break; // Blue default: color = 0; break; } - dwinDrawRectangle(0, HMI_data.Highlight_Color, ICOX + 1, MBASE(line) - 1 + 1, ICOX + 18, MBASE(line) - 1 + 18); + dwinDrawRectangle(0, hmiData.colorHighlight, ICOX + 1, MBASE(line) - 1 + 1, ICOX + 18, MBASE(line) - 1 + 18); dwinDrawRectangle(1, color, ICOX + 2, MBASE(line) - 1 + 2, ICOX + 17, MBASE(line) - 1 + 17); - DWINUI::Draw_String(LBLX, MBASE(line) - 1, menuitem->caption); - Draw_Menu_IntValue(HMI_data.Background_Color, line, 4, HMI_value.Color[i]); - dwinDrawHLine(HMI_data.SplitLine_Color, 16, MYPOS(line + 1), 240); + DWINUI::drawString(LBLX, MBASE(line) - 1, menuitem->caption); + drawMenuIntValue(hmiData.colorBackground, line, 4, hmiValue.Color[i]); + dwinDrawHLine(hmiData.colorSplitLine, 16, MYPOS(line + 1), 240); } -void onDrawSpeedItem(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 116, 164, 171, 176); +void onDrawSpeedItem(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 116, 164, 171, 176); onDrawPIntMenu(menuitem, line); } #if HAS_HOTEND - void onDrawHotendTemp(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 1, 134, 56, 146); + void onDrawHotendTemp(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 1, 134, 56, 146); onDrawPIntMenu(menuitem, line); } #endif #if HAS_HEATED_BED - void onDrawBedTemp(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 58, 134, 113, 146); + void onDrawBedTemp(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 58, 134, 113, 146); onDrawPIntMenu(menuitem, line); } #endif #if HAS_FAN - void onDrawFanSpeed(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 115, 134, 170, 146); + void onDrawFanSpeed(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 115, 134, 170, 146); onDrawPInt8Menu(menuitem, line); } #endif -void onDrawSteps(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 153, 148, 194, 161); +void onDrawSteps(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 153, 148, 194, 161); onDrawSubMenu(menuitem, line); } #if ENABLED(MESH_BED_LEVELING) - void onDrawMMeshMoveZ(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 160, 118, 209, 132); + void onDrawMMeshMoveZ(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 160, 118, 209, 132); onDrawPFloat2Menu(menuitem, line); } #endif #if HAS_PREHEAT #if HAS_HOTEND - void onDrawSetPreheatHotend(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 1, 134, 56, 146); + void onDrawSetPreheatHotend(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 1, 134, 56, 146); onDrawPIntMenu(menuitem, line); } #endif #if HAS_HEATED_BED - void onDrawSetPreheatBed(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 58, 134, 113, 146); + void onDrawSetPreheatBed(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 58, 134, 113, 146); onDrawPIntMenu(menuitem, line); } #endif #if HAS_FAN - void onDrawSetPreheatFan(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) menuitem->SetFrame(1, 115, 134, 170, 146); + void onDrawSetPreheatFan(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) menuitem->setFrame(1, 115, 134, 170, 146); onDrawPIntMenu(menuitem, line); } #endif #endif // HAS_PREHEAT -void onDrawSpeed(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) - menuitem->SetFrame(1, 173, 133, 228, 147); +void onDrawSpeed(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) + menuitem->setFrame(1, 173, 133, 228, 147); onDrawSubMenu(menuitem, line); } #if HAS_X_AXIS - void onDrawMaxSpeedX(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 228, 147); - DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 58, MBASE(line)); // X + void onDrawMaxSpeedX(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 173, 133, 228, 147); + dwinFrameAreaCopy(1, 229, 133, 236, 147, LBLX + 58, MBASE(line)); // X } onDrawPFloatMenu(menuitem, line); } #endif #if HAS_Y_AXIS - void onDrawMaxSpeedY(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 228, 147); - DWIN_Frame_AreaCopy(1, 1, 150, 7, 160, LBLX + 58, MBASE(line)); // Y + void onDrawMaxSpeedY(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 173, 133, 228, 147); + dwinFrameAreaCopy(1, 1, 150, 7, 160, LBLX + 58, MBASE(line)); // Y } onDrawPFloatMenu(menuitem, line); } #endif #if HAS_Z_AXIS - void onDrawMaxSpeedZ(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 228, 147); - DWIN_Frame_AreaCopy(1, 9, 150, 16, 160, LBLX + 58, MBASE(line) + 3); // Z + void onDrawMaxSpeedZ(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 173, 133, 228, 147); + dwinFrameAreaCopy(1, 9, 150, 16, 160, LBLX + 58, MBASE(line) + 3); // Z } onDrawPFloatMenu(menuitem, line); } #endif #if HAS_HOTEND - void onDrawMaxSpeedE(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 228, 147); - DWIN_Frame_AreaCopy(1, 18, 150, 25, 160, LBLX + 58, MBASE(line)); // E + void onDrawMaxSpeedE(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 173, 133, 228, 147); + dwinFrameAreaCopy(1, 18, 150, 25, 160, LBLX + 58, MBASE(line)); // E } onDrawPFloatMenu(menuitem, line); } #endif -void onDrawAcc(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line) + 1); // ...Acceleration +void onDrawAcc(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 173, 133, 200, 147); + dwinFrameAreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line) + 1); // ...Acceleration } onDrawSubMenu(menuitem, line); } #if HAS_X_AXIS - void onDrawMaxAccelX(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line)); - DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 71, MBASE(line)); // X + void onDrawMaxAccelX(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 173, 133, 200, 147); + dwinFrameAreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line)); + dwinFrameAreaCopy(1, 229, 133, 236, 147, LBLX + 71, MBASE(line)); // X } onDrawPInt32Menu(menuitem, line); } #endif #if HAS_Y_AXIS - void onDrawMaxAccelY(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line)); - DWIN_Frame_AreaCopy(1, 1, 150, 7, 160, LBLX + 71, MBASE(line)); // Y + void onDrawMaxAccelY(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 173, 133, 200, 147); + dwinFrameAreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line)); + dwinFrameAreaCopy(1, 1, 150, 7, 160, LBLX + 71, MBASE(line)); // Y } onDrawPInt32Menu(menuitem, line); } #endif #if HAS_Z_AXIS - void onDrawMaxAccelZ(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line)); - DWIN_Frame_AreaCopy(1, 9, 150, 16, 160, LBLX + 71, MBASE(line)); // Z + void onDrawMaxAccelZ(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 173, 133, 200, 147); + dwinFrameAreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line)); + dwinFrameAreaCopy(1, 9, 150, 16, 160, LBLX + 71, MBASE(line)); // Z } onDrawPInt32Menu(menuitem, line); } #endif #if HAS_HOTEND - void onDrawMaxAccelE(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line)); - DWIN_Frame_AreaCopy(1, 18, 150, 25, 160, LBLX + 71, MBASE(line)); // E + void onDrawMaxAccelE(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 173, 133, 200, 147); + dwinFrameAreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line)); + dwinFrameAreaCopy(1, 18, 150, 25, 160, LBLX + 71, MBASE(line)); // E } onDrawPInt32Menu(menuitem, line); } @@ -2862,46 +2866,46 @@ void onDrawAcc(MenuItemClass* menuitem, int8_t line) { #if HAS_CLASSIC_JERK - void onDrawJerk(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line) + 1); // ... - DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 54, MBASE(line)); // ...Jerk + void onDrawJerk(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 173, 133, 200, 147); + dwinFrameAreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line) + 1); // ... + dwinFrameAreaCopy(1, 202, 133, 228, 147, LBLX + 54, MBASE(line)); // ...Jerk } onDrawSubMenu(menuitem, line); } #if HAS_X_AXIS - void onDrawMaxJerkX(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line)); - DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line)); - DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 83, MBASE(line)); + void onDrawMaxJerkX(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 173, 133, 200, 147); + dwinFrameAreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line)); + dwinFrameAreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line)); + dwinFrameAreaCopy(1, 229, 133, 236, 147, LBLX + 83, MBASE(line)); } onDrawPFloatMenu(menuitem, line); } #endif #if HAS_Y_AXIS - void onDrawMaxJerkY(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line)); - DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line)); - DWIN_Frame_AreaCopy(1, 1, 150, 7, 160, LBLX + 83, MBASE(line)); + void onDrawMaxJerkY(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 173, 133, 200, 147); + dwinFrameAreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line)); + dwinFrameAreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line)); + dwinFrameAreaCopy(1, 1, 150, 7, 160, LBLX + 83, MBASE(line)); } onDrawPFloatMenu(menuitem, line); } #endif #if HAS_Z_AXIS - void onDrawMaxJerkZ(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line)); - DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line)); - DWIN_Frame_AreaCopy(1, 9, 150, 16, 160, LBLX + 83, MBASE(line)); + void onDrawMaxJerkZ(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 173, 133, 200, 147); + dwinFrameAreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line)); + dwinFrameAreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line)); + dwinFrameAreaCopy(1, 9, 150, 16, 160, LBLX + 83, MBASE(line)); } onDrawPFloatMenu(menuitem, line); } @@ -2909,12 +2913,12 @@ void onDrawAcc(MenuItemClass* menuitem, int8_t line) { #if HAS_HOTEND - void onDrawMaxJerkE(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 173, 133, 200, 147); - DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line)); - DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line)); - DWIN_Frame_AreaCopy(1, 18, 150, 25, 160, LBLX + 83, MBASE(line)); + void onDrawMaxJerkE(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 173, 133, 200, 147); + dwinFrameAreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line)); + dwinFrameAreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line)); + dwinFrameAreaCopy(1, 18, 150, 25, 160, LBLX + 83, MBASE(line)); } onDrawPFloatMenu(menuitem, line); } @@ -2924,30 +2928,30 @@ void onDrawAcc(MenuItemClass* menuitem, int8_t line) { #endif // HAS_CLASSIC_JERK #if HAS_X_AXIS - void onDrawStepsX(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 153, 148, 194, 161); - DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 44, MBASE(line)); // X + void onDrawStepsX(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 153, 148, 194, 161); + dwinFrameAreaCopy(1, 229, 133, 236, 147, LBLX + 44, MBASE(line)); // X } onDrawPFloatMenu(menuitem, line); } #endif #if HAS_Y_AXIS - void onDrawStepsY(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 153, 148, 194, 161); - DWIN_Frame_AreaCopy(1, 1, 150, 7, 160, LBLX + 44, MBASE(line)); // Y + void onDrawStepsY(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 153, 148, 194, 161); + dwinFrameAreaCopy(1, 1, 150, 7, 160, LBLX + 44, MBASE(line)); // Y } onDrawPFloatMenu(menuitem, line); } #endif #if HAS_Z_AXIS - void onDrawStepsZ(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 153, 148, 194, 161); - DWIN_Frame_AreaCopy(1, 9, 150, 16, 160, LBLX + 44, MBASE(line)); // Z + void onDrawStepsZ(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 153, 148, 194, 161); + dwinFrameAreaCopy(1, 9, 150, 16, 160, LBLX + 44, MBASE(line)); // Z } onDrawPFloatMenu(menuitem, line); } @@ -2955,10 +2959,10 @@ void onDrawAcc(MenuItemClass* menuitem, int8_t line) { #if HAS_HOTEND - void onDrawStepsE(MenuItemClass* menuitem, int8_t line) { - if (HMI_IsChinese()) { - menuitem->SetFrame(1, 153, 148, 194, 161); - DWIN_Frame_AreaCopy(1, 18, 150, 25, 160, LBLX + 44, MBASE(line)); // E + void onDrawStepsE(MenuItem* menuitem, int8_t line) { + if (hmiIsChinese()) { + menuitem->setFrame(1, 153, 148, 194, 161); + dwinFrameAreaCopy(1, 18, 150, 25, 160, LBLX + 44, MBASE(line)); // E } onDrawPFloatMenu(menuitem, line); } @@ -2966,292 +2970,292 @@ void onDrawAcc(MenuItemClass* menuitem, int8_t line) { #endif #if HAS_ONESTEP_LEVELING - void onDrawManualTramming(MenuItemClass* menuitem, int8_t line) { onDrawChkbMenu(menuitem, line, HMI_data.FullManualTramming); } + void onDrawManualTramming(MenuItem* menuitem, int8_t line) { onDrawChkbMenu(menuitem, line, hmiData.fullManualTramming); } #endif // Menu Creation and Drawing functions ====================================================== frame_rect_t selrect(frame_rect_t) { - return HMI_IsChinese() ? frame_rect_t({ 133, 1, 28, 13 }) : frame_rect_t({ 0 }); + return hmiIsChinese() ? frame_rect_t({ 133, 1, 28, 13 }) : frame_rect_t({ 0 }); } -void Draw_Prepare_Menu() { - checkkey = Menu; - if (SET_MENU_R(PrepareMenu, selrect({133, 1, 28, 13}), MSG_PREPARE, 10 + PREHEAT_COUNT)) { - BACK_ITEM(Goto_Main_Menu); +void drawPrepareMenu() { + checkkey = ID_Menu; + if (SET_MENU_R(prepareMenu, selrect({133, 1, 28, 13}), MSG_PREPARE, 10 + PREHEAT_COUNT)) { + BACK_ITEM(gotoMainMenu); #if ENABLED(ADVANCED_PAUSE_FEATURE) - MENU_ITEM(ICON_FilMan, MSG_FILAMENT_MAN, onDrawSubMenu, Draw_FilamentMan_Menu); + MENU_ITEM(ICON_FilMan, MSG_FILAMENT_MAN, onDrawSubMenu, drawFilamentManMenu); #endif - MENU_ITEM(ICON_Axis, MSG_MOVE_AXIS, onDrawMoveSubMenu, Draw_Move_Menu); + MENU_ITEM(ICON_Axis, MSG_MOVE_AXIS, onDrawMoveSubMenu, drawMoveMenu); #if ENABLED(LCD_BED_TRAMMING) - MENU_ITEM(ICON_Tram, MSG_BED_TRAMMING, onDrawSubMenu, Draw_Tramming_Menu); + MENU_ITEM(ICON_Tram, MSG_BED_TRAMMING, onDrawSubMenu, drawTrammingMenu); #endif - MENU_ITEM(ICON_CloseMotor, MSG_DISABLE_STEPPERS, onDrawDisableMotors, DisableMotors); + MENU_ITEM(ICON_CloseMotor, MSG_DISABLE_STEPPERS, onDrawDisableMotors, disableMotors); #if ENABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU) - MENU_ITEM(ICON_Homing, MSG_HOMING, onDrawSubMenu, Draw_Homing_Menu); + MENU_ITEM(ICON_Homing, MSG_HOMING, onDrawSubMenu, drawHomingMenu); #else - MENU_ITEM(ICON_Homing, MSG_AUTO_HOME, onDrawAutoHome, AutoHome); + MENU_ITEM(ICON_Homing, MSG_AUTO_HOME, onDrawAutoHome, autoHome); #endif #if ENABLED(MESH_BED_LEVELING) - MENU_ITEM(ICON_ManualMesh, MSG_MANUAL_MESH, onDrawSubMenu, Draw_ManualMesh_Menu); + MENU_ITEM(ICON_ManualMesh, MSG_MANUAL_MESH, onDrawSubMenu, drawManualMeshMenu); #elif HAS_BED_PROBE - MENU_ITEM(ICON_Level, MSG_AUTO_MESH, onDrawMenuItem, AutoLev); + MENU_ITEM(ICON_Level, MSG_AUTO_MESH, onDrawMenuItem, autoLevel); #endif #if HAS_ZOFFSET_ITEM #if HAS_BED_PROBE - MENU_ITEM(ICON_SetZOffset, MSG_PROBE_WIZARD, onDrawSubMenu, Draw_ZOffsetWiz_Menu); + MENU_ITEM(ICON_SetZOffset, MSG_PROBE_WIZARD, onDrawSubMenu, drawZOffsetWizMenu); #elif ENABLED(BABYSTEPPING) - EDIT_ITEM(ICON_Zoffset, MSG_HOME_OFFSET_Z, onDrawPFloat2Menu, SetZOffset, &BABY_Z_VAR); + EDIT_ITEM(ICON_Zoffset, MSG_HOME_OFFSET_Z, onDrawPFloat2Menu, setZOffset, &BABY_Z_VAR); #endif #endif #if HAS_PREHEAT #define _ITEM_PREHEAT(N) MENU_ITEM(ICON_Preheat##N, MSG_PREHEAT_##N, onDrawMenuItem, DoPreheat##N); REPEAT_1(PREHEAT_COUNT, _ITEM_PREHEAT) #endif - MENU_ITEM(ICON_Cool, MSG_COOLDOWN, onDrawCooldown, DoCoolDown); - MENU_ITEM(ICON_Language, MSG_UI_LANGUAGE, onDrawLanguage, SetLanguage); + MENU_ITEM(ICON_Cool, MSG_COOLDOWN, onDrawCooldown, doCoolDown); + MENU_ITEM(ICON_Language, MSG_UI_LANGUAGE, onDrawLanguage, setLanguage); } ui.reset_status(true); - UpdateMenu(PrepareMenu); + updateMenu(prepareMenu); } #if ENABLED(LCD_BED_TRAMMING) - void Draw_Tramming_Menu() { - checkkey = Menu; - if (SET_MENU(TrammingMenu, MSG_BED_TRAMMING, 8)) { - BACK_ITEM(Draw_Prepare_Menu); + void drawTrammingMenu() { + checkkey = ID_Menu; + if (SET_MENU(trammingMenu, MSG_BED_TRAMMING, 8)) { + BACK_ITEM(drawPrepareMenu); #if HAS_BED_PROBE && HAS_MESH - MENU_ITEM(ICON_ProbeSet, MSG_TRAMMING_WIZARD, onDrawMenuItem, Trammingwizard); - EDIT_ITEM(ICON_ProbeSet, MSG_BED_TRAMMING_MANUAL, onDrawChkbMenu, SetManualTramming, &HMI_data.FullManualTramming); + MENU_ITEM(ICON_ProbeSet, MSG_TRAMMING_WIZARD, onDrawMenuItem, trammingwizard); + EDIT_ITEM(ICON_ProbeSet, MSG_BED_TRAMMING_MANUAL, onDrawChkbMenu, setManualTramming, &hmiData.fullManualTramming); #elif !HAS_BED_PROBE && HAS_ZOFFSET_ITEM - MENU_ITEM_F(ICON_MoveZ0, "Home Z and disable", onDrawMenuItem, HomeZandDisable); + MENU_ITEM_F(ICON_MoveZ0, "Home Z and disable", onDrawMenuItem, homeZAndDisable); #endif - MENU_ITEM(ICON_Axis, MSG_TRAM_FL, onDrawMenuItem, TramFL); - MENU_ITEM(ICON_Axis, MSG_TRAM_FR, onDrawMenuItem, TramFR); - MENU_ITEM(ICON_Axis, MSG_TRAM_BR, onDrawMenuItem, TramBR); - MENU_ITEM(ICON_Axis, MSG_TRAM_BL, onDrawMenuItem, TramBL); + MENU_ITEM(ICON_Axis, MSG_TRAM_FL, onDrawMenuItem, tramFL); + MENU_ITEM(ICON_Axis, MSG_TRAM_FR, onDrawMenuItem, tramFR); + MENU_ITEM(ICON_Axis, MSG_TRAM_BR, onDrawMenuItem, tramBR); + MENU_ITEM(ICON_Axis, MSG_TRAM_BL, onDrawMenuItem, tramBL); #if ENABLED(BED_TRAMMING_INCLUDE_CENTER) - MENU_ITEM(ICON_Axis, MSG_TRAM_C, onDrawMenuItem, TramC); + MENU_ITEM(ICON_Axis, MSG_TRAM_C, onDrawMenuItem, tramC); #endif } - UpdateMenu(TrammingMenu); + updateMenu(trammingMenu); } #endif // LCD_BED_TRAMMING -void Draw_Control_Menu() { - checkkey = Menu; +void drawControlMenu() { + checkkey = ID_Menu; if (SET_MENU_R(ControlMenu, selrect({103, 1, 28, 14}), MSG_CONTROL, 10)) { - BACK_ITEM(Goto_Main_Menu); - MENU_ITEM(ICON_Temperature, MSG_TEMPERATURE, onDrawTempSubMenu, Draw_Temperature_Menu); - MENU_ITEM(ICON_Motion, MSG_MOTION, onDrawMotionSubMenu, Draw_Motion_Menu); + BACK_ITEM(gotoMainMenu); + MENU_ITEM(ICON_Temperature, MSG_TEMPERATURE, onDrawTempSubMenu, drawTemperatureMenu); + MENU_ITEM(ICON_Motion, MSG_MOTION, onDrawMotionSubMenu, drawMotionMenu); #if ENABLED(EEPROM_SETTINGS) - MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawWriteEeprom, WriteEeprom); - MENU_ITEM(ICON_ReadEEPROM, MSG_LOAD_EEPROM, onDrawReadEeprom, ReadEeprom); - MENU_ITEM(ICON_ResumeEEPROM, MSG_RESTORE_DEFAULTS, onDrawResetEeprom, ResetEeprom); + MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawWriteEeprom, writeEEPROM); + MENU_ITEM(ICON_ReadEEPROM, MSG_LOAD_EEPROM, onDrawReadEeprom, readEEPROM); + MENU_ITEM(ICON_ResumeEEPROM, MSG_RESTORE_DEFAULTS, onDrawResetEeprom, resetEEPROM); #endif - MENU_ITEM(ICON_Reboot, MSG_RESET_PRINTER, onDrawMenuItem, RebootPrinter); + MENU_ITEM(ICON_Reboot, MSG_RESET_PRINTER, onDrawMenuItem, rebootPrinter); #if ENABLED(CASE_LIGHT_MENU) #if ENABLED(CASELIGHT_USES_BRIGHTNESS) - MENU_ITEM(ICON_CaseLight, MSG_CASE_LIGHT, onDrawSubMenu, Draw_CaseLight_Menu); + MENU_ITEM(ICON_CaseLight, MSG_CASE_LIGHT, onDrawSubMenu, drawCaseLightMenu); #else - MENU_ITEM(ICON_CaseLight, MSG_CASE_LIGHT, onDrawChkbMenu, SetCaseLight, &caselight.on); + MENU_ITEM(ICON_CaseLight, MSG_CASE_LIGHT, onDrawChkbMenu, setCaseLight, &caselight.on); #endif #endif #if ENABLED(LED_CONTROL_MENU) - MENU_ITEM(ICON_LedControl, MSG_LED_CONTROL, onDrawSubMenu, Draw_LedControl_Menu); + MENU_ITEM(ICON_LedControl, MSG_LED_CONTROL, onDrawSubMenu, drawLedControlMenu); #endif - MENU_ITEM(ICON_Info, MSG_INFO_SCREEN, onDrawInfoSubMenu, Goto_Info_Menu); + MENU_ITEM(ICON_Info, MSG_INFO_SCREEN, onDrawInfoSubMenu, gotoInfoMenu); } ui.reset_status(true); - UpdateMenu(ControlMenu); + updateMenu(ControlMenu); } -void Draw_AdvancedSettings_Menu() { - checkkey = Menu; +void drawAdvancedSettingsMenu() { + checkkey = ID_Menu; if (SET_MENU(AdvancedSettings, MSG_ADVANCED_SETTINGS, 22)) { - BACK_ITEM(Goto_Main_Menu); + BACK_ITEM(gotoMainMenu); #if ENABLED(EEPROM_SETTINGS) - MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, WriteEeprom); + MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, writeEEPROM); #endif #if HAS_MESH - MENU_ITEM(ICON_ProbeSet, MSG_MESH_LEVELING, onDrawSubMenu, Draw_MeshSet_Menu); + MENU_ITEM(ICON_ProbeSet, MSG_MESH_LEVELING, onDrawSubMenu, drawMeshSetMenu); #endif #if HAS_BED_PROBE - MENU_ITEM(ICON_ProbeSet, MSG_ZPROBE_SETTINGS, onDrawSubMenu, Draw_ProbeSet_Menu); + MENU_ITEM(ICON_ProbeSet, MSG_ZPROBE_SETTINGS, onDrawSubMenu, drawProbeSetMenu); #endif - MENU_ITEM(ICON_FilSet, MSG_FILAMENT_SET, onDrawSubMenu, Draw_FilSet_Menu); + MENU_ITEM(ICON_FilSet, MSG_FILAMENT_SET, onDrawSubMenu, drawFilSetMenu); #if ENABLED(PIDTEMP) && ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU) - MENU_ITEM_F(ICON_PIDNozzle, STR_HOTEND_PID " Settings", onDrawSubMenu, Draw_HotendPID_Menu); + MENU_ITEM_F(ICON_PIDNozzle, STR_HOTEND_PID " Settings", onDrawSubMenu, drawHotendPIDMenu); #endif #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) - MENU_ITEM_F(ICON_MPCNozzle, "MPC Settings", onDrawSubMenu, Draw_HotendMPC_Menu); + MENU_ITEM_F(ICON_MPCNozzle, "MPC Settings", onDrawSubMenu, drawHotendMPCMenu); #endif #if ENABLED(PIDTEMPBED) && ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU) - MENU_ITEM_F(ICON_PIDBed, STR_BED_PID " Settings", onDrawSubMenu, Draw_BedPID_Menu); + MENU_ITEM_F(ICON_PIDBed, STR_BED_PID " Settings", onDrawSubMenu, drawBedPIDMenu); #endif #if HAS_TRINAMIC_CONFIG - MENU_ITEM(ICON_TMCSet, MSG_TMC_DRIVERS, onDrawSubMenu, Draw_TrinamicConfig_menu); + MENU_ITEM(ICON_TMCSet, MSG_TMC_DRIVERS, onDrawSubMenu, drawTrinamicConfigMenu); #endif #if HAS_ESDIAG - MENU_ITEM_F(ICON_ESDiag, "End-stops diag.", onDrawSubMenu, Draw_EndStopDiag); + MENU_ITEM_F(ICON_esDiag, "End-stops diag.", onDrawSubMenu, drawEndStopDiag); #endif #if ENABLED(PRINTCOUNTER) - MENU_ITEM(ICON_PrintStats, MSG_INFO_STATS_MENU, onDrawSubMenu, Goto_PrintStats); - MENU_ITEM(ICON_PrintStatsReset, MSG_INFO_PRINT_COUNT_RESET, onDrawSubMenu, PrintStatsReset); + MENU_ITEM(ICON_PrintStats, MSG_INFO_STATS_MENU, onDrawSubMenu, gotoPrintStats); + MENU_ITEM(ICON_PrintStatsReset, MSG_INFO_PRINT_COUNT_RESET, onDrawSubMenu, printStatsReset); #endif #if HAS_LOCKSCREEN - MENU_ITEM(ICON_Lock, MSG_LOCKSCREEN, onDrawMenuItem, DWIN_LockScreen); + MENU_ITEM(ICON_Lock, MSG_LOCKSCREEN, onDrawMenuItem, dwinLockScreen); #endif #if ENABLED(SOUND_MENU_ITEM) - EDIT_ITEM(ICON_Sound, MSG_SOUND_ENABLE, onDrawChkbMenu, SetEnableSound, &ui.sound_on); + EDIT_ITEM(ICON_Sound, MSG_SOUND_ENABLE, onDrawChkbMenu, setEnableSound, &ui.sound_on); #endif #if ENABLED(POWER_LOSS_RECOVERY) - EDIT_ITEM(ICON_Pwrlossr, MSG_OUTAGE_RECOVERY, onDrawChkbMenu, SetPwrLossr, &recovery.enabled); + EDIT_ITEM(ICON_Pwrlossr, MSG_OUTAGE_RECOVERY, onDrawChkbMenu, setPwrLossr, &recovery.enabled); #endif #if HAS_GCODE_PREVIEW - EDIT_ITEM(ICON_File, MSG_HAS_PREVIEW, onDrawChkbMenu, SetPreview, &HMI_data.EnablePreview); + EDIT_ITEM(ICON_File, MSG_HAS_PREVIEW, onDrawChkbMenu, setPreview, &hmiData.enablePreview); #endif #if ENABLED(MEDIASORT_MENU_ITEM) - EDIT_ITEM(ICON_File, MSG_MEDIA_SORT, onDrawChkbMenu, SetMediaSort, &HMI_data.MediaSort); + EDIT_ITEM(ICON_File, MSG_MEDIA_SORT, onDrawChkbMenu, setMediaSort, &hmiData.mediaSort); #endif - EDIT_ITEM(ICON_File, MSG_MEDIA_UPDATE, onDrawChkbMenu, SetMediaAutoMount, &HMI_data.MediaAutoMount); + EDIT_ITEM(ICON_File, MSG_MEDIA_UPDATE, onDrawChkbMenu, setMediaAutoMount, &hmiData.mediaAutoMount); #if ENABLED(BAUD_RATE_GCODE) - EDIT_ITEM_F(ICON_SetBaudRate, "115K baud", onDrawChkbMenu, SetBaudRate, &HMI_data.Baud115K); + EDIT_ITEM_F(ICON_SetBaudRate, "115K baud", onDrawChkbMenu, setBaudRate, &hmiData.baud115K); #endif #if HAS_LCD_BRIGHTNESS - EDIT_ITEM(ICON_Brightness, MSG_BRIGHTNESS, onDrawPInt8Menu, SetBrightness, &ui.brightness); - MENU_ITEM(ICON_Brightness, MSG_BRIGHTNESS_OFF, onDrawMenuItem, TurnOffBacklight); + EDIT_ITEM(ICON_Brightness, MSG_BRIGHTNESS, onDrawPInt8Menu, setBrightness, &ui.brightness); + MENU_ITEM(ICON_Brightness, MSG_BRIGHTNESS_OFF, onDrawMenuItem, turnOffBacklight); #endif #if HAS_CUSTOM_COLORS - MENU_ITEM(ICON_Scolor, MSG_COLORS_SELECT, onDrawSubMenu, Draw_SelectColors_Menu); + MENU_ITEM(ICON_Scolor, MSG_COLORS_SELECT, onDrawSubMenu, drawSelectColorsMenu); #endif } ui.reset_status(true); - UpdateMenu(AdvancedSettings); + updateMenu(AdvancedSettings); } -void Draw_Move_Menu() { - checkkey = Menu; - if (SET_MENU_R(MoveMenu, selrect({192, 1, 42, 14}), MSG_MOVE_AXIS, 6)) { - BACK_ITEM(Draw_Prepare_Menu); - EDIT_ITEM(ICON_Axis, MSG_LIVE_MOVE, onDrawChkbMenu, SetLiveMove, &EnableLiveMove); +void drawMoveMenu() { + checkkey = ID_Menu; + if (SET_MENU_R(moveMenu, selrect({192, 1, 42, 14}), MSG_MOVE_AXIS, 6)) { + BACK_ITEM(drawPrepareMenu); + EDIT_ITEM(ICON_Axis, MSG_LIVE_MOVE, onDrawChkbMenu, setLiveMove, &enableLiveMove); #if HAS_X_AXIS - EDIT_ITEM(ICON_MoveX, MSG_MOVE_X, onDrawMoveX, SetMoveX, ¤t_position.x); + EDIT_ITEM(ICON_MoveX, MSG_MOVE_X, onDrawMoveX, setMoveX, ¤t_position.x); #endif #if HAS_Y_AXIS - EDIT_ITEM(ICON_MoveY, MSG_MOVE_Y, onDrawMoveY, SetMoveY, ¤t_position.y); + EDIT_ITEM(ICON_MoveY, MSG_MOVE_Y, onDrawMoveY, setMoveY, ¤t_position.y); #endif #if HAS_Z_AXIS - EDIT_ITEM(ICON_MoveZ, MSG_MOVE_Z, onDrawMoveZ, SetMoveZ, ¤t_position.z); + EDIT_ITEM(ICON_MoveZ, MSG_MOVE_Z, onDrawMoveZ, setMoveZ, ¤t_position.z); #endif #if HAS_HOTEND gcode.process_subcommands_now(F("G92E0")); // Reset extruder position - EDIT_ITEM(ICON_Extruder, MSG_MOVE_E, onDrawMoveE, SetMoveE, ¤t_position.e); + EDIT_ITEM(ICON_Extruder, MSG_MOVE_E, onDrawMoveE, setMoveE, ¤t_position.e); #endif } - UpdateMenu(MoveMenu); + updateMenu(moveMenu); if (!all_axes_trusted()) LCD_MESSAGE_F("WARNING: Current position unknown. Home axes."); } #if HAS_HOME_OFFSET - void Draw_HomeOffset_Menu() { - checkkey = Menu; - if (SET_MENU(HomeOffMenu, MSG_SET_HOME_OFFSETS, 4)) { - BACK_ITEM(Draw_PhySet_Menu); + void drawHomeOffsetMenu() { + checkkey = ID_Menu; + if (SET_MENU(homeOffsetMenu, MSG_SET_HOME_OFFSETS, 4)) { + BACK_ITEM(drawPhySetMenu); #if HAS_X_AXIS - EDIT_ITEM(ICON_HomeOffsetX, MSG_HOME_OFFSET_X, onDrawPFloatMenu, SetHomeOffsetX, &home_offset.x); + EDIT_ITEM(ICON_HomeOffsetX, MSG_HOME_OFFSET_X, onDrawPFloatMenu, setHomeOffsetX, &home_offset.x); #endif #if HAS_Y_AXIS - EDIT_ITEM(ICON_HomeOffsetY, MSG_HOME_OFFSET_Y, onDrawPFloatMenu, SetHomeOffsetY, &home_offset.y); + EDIT_ITEM(ICON_HomeOffsetY, MSG_HOME_OFFSET_Y, onDrawPFloatMenu, setHomeOffsetY, &home_offset.y); #endif #if HAS_Z_AXIS - EDIT_ITEM(ICON_HomeOffsetZ, MSG_HOME_OFFSET_Z, onDrawPFloatMenu, SetHomeOffsetZ, &home_offset.z); + EDIT_ITEM(ICON_HomeOffsetZ, MSG_HOME_OFFSET_Z, onDrawPFloatMenu, setHomeOffsetZ, &home_offset.z); #endif } - UpdateMenu(HomeOffMenu); + updateMenu(homeOffsetMenu); } #endif // HAS_HOME_OFFSET #if HAS_BED_PROBE - void Draw_ProbeSet_Menu() { - checkkey = Menu; + void drawProbeSetMenu() { + checkkey = ID_Menu; if (SET_MENU(ProbeSetMenu, MSG_ZPROBE_SETTINGS, 9)) { - BACK_ITEM(Draw_AdvancedSettings_Menu); + BACK_ITEM(drawAdvancedSettingsMenu); #if HAS_X_AXIS - EDIT_ITEM(ICON_ProbeOffsetX, MSG_ZPROBE_XOFFSET, onDrawPFloatMenu, SetProbeOffsetX, &probe.offset.x); + EDIT_ITEM(ICON_ProbeOffsetX, MSG_ZPROBE_XOFFSET, onDrawPFloatMenu, setProbeOffsetX, &probe.offset.x); #endif #if HAS_Y_AXIS - EDIT_ITEM(ICON_ProbeOffsetY, MSG_ZPROBE_YOFFSET, onDrawPFloatMenu, SetProbeOffsetY, &probe.offset.y); + EDIT_ITEM(ICON_ProbeOffsetY, MSG_ZPROBE_YOFFSET, onDrawPFloatMenu, setProbeOffsetY, &probe.offset.y); #endif #if HAS_Z_AXIS - EDIT_ITEM(ICON_ProbeOffsetZ, MSG_ZPROBE_ZOFFSET, onDrawPFloat2Menu, SetProbeOffsetZ, &probe.offset.z); + EDIT_ITEM(ICON_ProbeOffsetZ, MSG_ZPROBE_ZOFFSET, onDrawPFloat2Menu, setProbeOffsetZ, &probe.offset.z); #endif #if ENABLED(BLTOUCH) - MENU_ITEM(ICON_ProbeStow, MSG_MANUAL_STOW, onDrawMenuItem, ProbeStow); - MENU_ITEM(ICON_ProbeDeploy, MSG_MANUAL_DEPLOY, onDrawMenuItem, ProbeDeploy); + MENU_ITEM(ICON_ProbeStow, MSG_MANUAL_STOW, onDrawMenuItem, probeStow); + MENU_ITEM(ICON_ProbeDeploy, MSG_MANUAL_DEPLOY, onDrawMenuItem, probeDeploy); MENU_ITEM(ICON_BltouchReset, MSG_BLTOUCH_RESET, onDrawMenuItem, bltouch._reset); #if HAS_BLTOUCH_HS_MODE - EDIT_ITEM(ICON_HSMode, MSG_ENABLE_HS_MODE, onDrawChkbMenu, SetHSMode, &bltouch.high_speed_mode); + EDIT_ITEM(ICON_HSMode, MSG_ENABLE_HS_MODE, onDrawChkbMenu, setHSMode, &bltouch.high_speed_mode); #endif #endif - MENU_ITEM(ICON_ProbeTest, MSG_M48_TEST, onDrawMenuItem, ProbeTest); + MENU_ITEM(ICON_ProbeTest, MSG_M48_TEST, onDrawMenuItem, probeTest); } - UpdateMenu(ProbeSetMenu); + updateMenu(ProbeSetMenu); } #endif // HAS_BED_PROBE -void Draw_FilSet_Menu() { - checkkey = Menu; - if (SET_MENU(FilSetMenu, MSG_FILAMENT_SET, 9)) { - BACK_ITEM(Draw_AdvancedSettings_Menu); +void drawFilSetMenu() { + checkkey = ID_Menu; + if (SET_MENU(filSetMenu, MSG_FILAMENT_SET, 9)) { + BACK_ITEM(drawAdvancedSettingsMenu); #if HAS_FILAMENT_SENSOR - EDIT_ITEM(ICON_Runout, MSG_RUNOUT_ENABLE, onDrawChkbMenu, SetRunoutEnable, &runout.enabled); + EDIT_ITEM(ICON_Runout, MSG_RUNOUT_ENABLE, onDrawChkbMenu, setRunoutEnable, &runout.enabled); #endif #if HAS_FILAMENT_RUNOUT_DISTANCE - EDIT_ITEM(ICON_Runout, MSG_RUNOUT_DISTANCE_MM, onDrawPFloatMenu, SetRunoutDistance, &runout.runout_distance()); + EDIT_ITEM(ICON_Runout, MSG_RUNOUT_DISTANCE_MM, onDrawPFloatMenu, setRunoutDistance, &runout.runout_distance()); #endif #if ENABLED(PREVENT_COLD_EXTRUSION) - EDIT_ITEM(ICON_ExtrudeMinT, MSG_EXTRUDER_MIN_TEMP, onDrawPIntMenu, SetExtMinT, &HMI_data.ExtMinT); + EDIT_ITEM(ICON_ExtrudeMinT, MSG_EXTRUDER_MIN_TEMP, onDrawPIntMenu, setExtMinT, &hmiData.extMinT); #endif #if ENABLED(ADVANCED_PAUSE_FEATURE) - EDIT_ITEM(ICON_FilLoad, MSG_FILAMENT_LOAD, onDrawPFloatMenu, SetFilLoad, &fc_settings[0].load_length); - EDIT_ITEM(ICON_FilUnload, MSG_FILAMENT_UNLOAD, onDrawPFloatMenu, SetFilUnload, &fc_settings[0].unload_length); + EDIT_ITEM(ICON_FilLoad, MSG_FILAMENT_LOAD, onDrawPFloatMenu, setFilLoad, &fc_settings[0].load_length); + EDIT_ITEM(ICON_FilUnload, MSG_FILAMENT_UNLOAD, onDrawPFloatMenu, setFilUnload, &fc_settings[0].unload_length); #endif #if ENABLED(FWRETRACT) - MENU_ITEM(ICON_FWRetract, MSG_FWRETRACT, onDrawSubMenu, Draw_FWRetract_Menu); + MENU_ITEM(ICON_FWRetract, MSG_FWRETRACT, onDrawSubMenu, drawFWRetractMenu); #endif } - UpdateMenu(FilSetMenu); + updateMenu(filSetMenu); } #if ALL(CASE_LIGHT_MENU, CASELIGHT_USES_BRIGHTNESS) - void Draw_CaseLight_Menu() { - checkkey = Menu; - if (SET_MENU(CaseLightMenu, MSG_CASE_LIGHT, 3)) { - BACK_ITEM(Draw_Control_Menu); - EDIT_ITEM(ICON_CaseLight, MSG_CASE_LIGHT, onDrawChkbMenu, SetCaseLight, &caselight.on); - EDIT_ITEM(ICON_Brightness, MSG_CASE_LIGHT_BRIGHTNESS, onDrawPInt8Menu, SetCaseLightBrightness, &caselight.brightness); + void drawCaseLightMenu() { + checkkey = ID_Menu; + if (SET_MENU(caseLightMenu, MSG_CASE_LIGHT, 3)) { + BACK_ITEM(drawControlMenu); + EDIT_ITEM(ICON_CaseLight, MSG_CASE_LIGHT, onDrawChkbMenu, setCaseLight, &caselight.on); + EDIT_ITEM(ICON_Brightness, MSG_CASE_LIGHT_BRIGHTNESS, onDrawPInt8Menu, setCaseLightBrightness, &caselight.brightness); } - UpdateMenu(CaseLightMenu); + updateMenu(caseLightMenu); } #endif #if ENABLED(LED_CONTROL_MENU) - void Draw_LedControl_Menu() { - checkkey = Menu; - if (SET_MENU(LedControlMenu, MSG_LED_CONTROL, 10)) { - BACK_ITEM(Draw_Control_Menu); + void drawLedControlMenu() { + checkkey = ID_Menu; + if (SET_MENU(ledControlMenu, MSG_LED_CONTROL, 10)) { + BACK_ITEM(drawControlMenu); #if !ALL(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL) - EDIT_ITEM(ICON_LedControl, MSG_LEDS, onDrawChkbMenu, SetLedStatus, &leds.lights_on); + EDIT_ITEM(ICON_LedControl, MSG_LEDS, onDrawChkbMenu, setLedStatus, &leds.lights_on); #endif #if HAS_COLOR_LEDS #if ENABLED(LED_COLOR_PRESETS) @@ -3264,363 +3268,363 @@ void Draw_FilSet_Menu() { MENU_ITEM(ICON_LedControl, MSG_SET_LEDS_INDIGO, onDrawMenuItem, leds.set_indigo); MENU_ITEM(ICON_LedControl, MSG_SET_LEDS_VIOLET, onDrawMenuItem, leds.set_violet); #else - EDIT_ITEM(ICON_LedControl, MSG_COLORS_RED, onDrawPInt8Menu, SetLEDColorR, &leds.color.r); - EDIT_ITEM(ICON_LedControl, MSG_COLORS_GREEN, onDrawPInt8Menu, SetLEDColorG, &leds.color.g); - EDIT_ITEM(ICON_LedControl, MSG_COLORS_BLUE, onDrawPInt8Menu, SetLEDColorB, &leds.color.b); + EDIT_ITEM(ICON_LedControl, MSG_COLORS_RED, onDrawPInt8Menu, setLEDColorR, &leds.color.r); + EDIT_ITEM(ICON_LedControl, MSG_COLORS_GREEN, onDrawPInt8Menu, setLEDColorG, &leds.color.g); + EDIT_ITEM(ICON_LedControl, MSG_COLORS_BLUE, onDrawPInt8Menu, setLEDColorB, &leds.color.b); #if ENABLED(HAS_WHITE_LED) - EDIT_ITEM(ICON_LedControl, MSG_COLORS_WHITE, onDrawPInt8Menu, SetLEDColorW, &leds.color.w); + EDIT_ITEM(ICON_LedControl, MSG_COLORS_WHITE, onDrawPInt8Menu, setLEDColorW, &leds.color.w); #endif #endif #endif } - UpdateMenu(LedControlMenu); + updateMenu(ledControlMenu); } #endif // LED_CONTROL_MENU -void Draw_Tune_Menu() { - checkkey = Menu; - if (SET_MENU_R(TuneMenu, selrect({73, 2, 28, 12}), MSG_TUNE, 17)) { - BACK_ITEM(Goto_PrintProcess); - EDIT_ITEM(ICON_Speed, MSG_SPEED, onDrawSpeedItem, SetSpeed, &feedrate_percentage); +void drawTuneMenu() { + checkkey = ID_Menu; + if (SET_MENU_R(tuneMenu, selrect({73, 2, 28, 12}), MSG_TUNE, 17)) { + BACK_ITEM(gotoPrintProcess); + EDIT_ITEM(ICON_Speed, MSG_SPEED, onDrawSpeedItem, setSpeed, &feedrate_percentage); #if HAS_HOTEND - HotendTargetItem = EDIT_ITEM(ICON_HotendTemp, MSG_UBL_SET_TEMP_HOTEND, onDrawHotendTemp, SetHotendTemp, &thermalManager.temp_hotend[0].target); + hotendTargetItem = EDIT_ITEM(ICON_HotendTemp, MSG_UBL_SET_TEMP_HOTEND, onDrawHotendTemp, setHotendTemp, &thermalManager.temp_hotend[0].target); #endif #if HAS_HEATED_BED - BedTargetItem = EDIT_ITEM(ICON_BedTemp, MSG_UBL_SET_TEMP_BED, onDrawBedTemp, SetBedTemp, &thermalManager.temp_bed.target); + bedTargetItem = EDIT_ITEM(ICON_BedTemp, MSG_UBL_SET_TEMP_BED, onDrawBedTemp, setBedTemp, &thermalManager.temp_bed.target); #endif #if HAS_FAN - FanSpeedItem = EDIT_ITEM(ICON_FanSpeed, MSG_FAN_SPEED, onDrawFanSpeed, SetFanSpeed, &thermalManager.fan_speed[0]); + fanSpeedItem = EDIT_ITEM(ICON_FanSpeed, MSG_FAN_SPEED, onDrawFanSpeed, setFanSpeed, &thermalManager.fan_speed[0]); #endif #if ALL(HAS_ZOFFSET_ITEM, HAS_BED_PROBE, BABYSTEP_ZPROBE_OFFSET, BABYSTEPPING) - EDIT_ITEM(ICON_Zoffset, MSG_ZPROBE_ZOFFSET, onDrawZOffset, SetZOffset, &BABY_Z_VAR); + EDIT_ITEM(ICON_Zoffset, MSG_ZPROBE_ZOFFSET, onDrawZOffset, setZOffset, &BABY_Z_VAR); #elif ALL(HAS_ZOFFSET_ITEM, MESH_BED_LEVELING, BABYSTEPPING) - EDIT_ITEM(ICON_Zoffset, MSG_HOME_OFFSET_Z, onDrawPFloat2Menu, SetZOffset, &BABY_Z_VAR); + EDIT_ITEM(ICON_Zoffset, MSG_HOME_OFFSET_Z, onDrawPFloat2Menu, setZOffset, &BABY_Z_VAR); #endif - EDIT_ITEM(ICON_Flow, MSG_FLOW, onDrawPIntMenu, SetFlow, &planner.flow_percentage[0]); + EDIT_ITEM(ICON_Flow, MSG_FLOW, onDrawPIntMenu, setFlow, &planner.flow_percentage[0]); #if ENABLED(ADVANCED_PAUSE_FEATURE) - MENU_ITEM(ICON_FilMan, MSG_FILAMENTCHANGE, onDrawMenuItem, ChangeFilament); + MENU_ITEM(ICON_FilMan, MSG_FILAMENTCHANGE, onDrawMenuItem, changeFilament); #endif #if HAS_FILAMENT_SENSOR - EDIT_ITEM(ICON_Runout, MSG_RUNOUT_ENABLE, onDrawChkbMenu, SetRunoutEnable, &runout.enabled); + EDIT_ITEM(ICON_Runout, MSG_RUNOUT_ENABLE, onDrawChkbMenu, setRunoutEnable, &runout.enabled); #endif #if ENABLED(PLR_TUNE_ITEM) - EDIT_ITEM(ICON_Pwrlossr, MSG_OUTAGE_RECOVERY, onDrawChkbMenu, SetPwrLossr, &recovery.enabled); + EDIT_ITEM(ICON_Pwrlossr, MSG_OUTAGE_RECOVERY, onDrawChkbMenu, setPwrLossr, &recovery.enabled); #endif #if ENABLED(FWRETRACT) - MENU_ITEM(ICON_FWRetract, MSG_FWRETRACT, onDrawSubMenu, Draw_FWRetract_Menu); + MENU_ITEM(ICON_FWRetract, MSG_FWRETRACT, onDrawSubMenu, drawFWRetractMenu); #endif #if ENABLED(JD_TUNE_ITEM) - EDIT_ITEM(ICON_JDmm, MSG_JUNCTION_DEVIATION, onDrawPFloat3Menu, SetJDmm, &planner.junction_deviation_mm); + EDIT_ITEM(ICON_JDmm, MSG_JUNCTION_DEVIATION, onDrawPFloat3Menu, setJDmm, &planner.junction_deviation_mm); #endif #if ENABLED(ADVK_TUNE_ITEM) - EDIT_ITEM(ICON_MaxAccelerated, MSG_ADVANCE_K, onDrawPFloat3Menu, SetLA_K, &planner.extruder_advance_K[0]); + EDIT_ITEM(ICON_MaxAccelerated, MSG_ADVANCE_K, onDrawPFloat3Menu, setLA_K, &planner.extruder_advance_K[0]); #endif #if HAS_LOCKSCREEN - MENU_ITEM(ICON_Lock, MSG_LOCKSCREEN, onDrawMenuItem, DWIN_LockScreen); + MENU_ITEM(ICON_Lock, MSG_LOCKSCREEN, onDrawMenuItem, dwinLockScreen); #endif #if HAS_LCD_BRIGHTNESS - EDIT_ITEM(ICON_Brightness, MSG_BRIGHTNESS, onDrawPInt8Menu, SetBrightness, &ui.brightness); - MENU_ITEM(ICON_Brightness, MSG_BRIGHTNESS_OFF, onDrawMenuItem, TurnOffBacklight); + EDIT_ITEM(ICON_Brightness, MSG_BRIGHTNESS, onDrawPInt8Menu, setBrightness, &ui.brightness); + MENU_ITEM(ICON_Brightness, MSG_BRIGHTNESS_OFF, onDrawMenuItem, turnOffBacklight); #endif #if ENABLED(CASE_LIGHT_MENU) - EDIT_ITEM(ICON_CaseLight, MSG_CASE_LIGHT, onDrawChkbMenu, SetCaseLight, &caselight.on); + EDIT_ITEM(ICON_CaseLight, MSG_CASE_LIGHT, onDrawChkbMenu, setCaseLight, &caselight.on); #elif ENABLED(LED_CONTROL_MENU) && DISABLED(CASE_LIGHT_USE_NEOPIXEL) - EDIT_ITEM(ICON_LedControl, MSG_LEDS, onDrawChkbMenu, SetLedStatus, &leds.lights_on); + EDIT_ITEM(ICON_LedControl, MSG_LEDS, onDrawChkbMenu, setLedStatus, &leds.lights_on); #endif } - UpdateMenu(TuneMenu); + updateMenu(tuneMenu); } #if ENABLED(ADAPTIVE_STEP_SMOOTHING) - void SetAdaptiveStepSmoothing() { - Toggle_Chkb_Line(HMI_data.AdaptiveStepSmoothing); + void setAdaptiveStepSmoothing() { + toggleCheckboxLine(hmiData.adaptiveStepSmoothing); } #endif #if ENABLED(SHAPING_MENU) - void ApplyShapingFreq() { stepper.set_shaping_frequency(HMI_value.axis, MenuData.Value / 100); } - void ApplyShapingZeta() { stepper.set_shaping_damping_ratio(HMI_value.axis, MenuData.Value / 100); } + void applyShapingFreq() { stepper.set_shaping_frequency(hmiValue.axis, menuData.value / 100); } + void applyShapingZeta() { stepper.set_shaping_damping_ratio(hmiValue.axis, menuData.value / 100); } #if ENABLED(INPUT_SHAPING_X) - void onDrawShapingXFreq(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, stepper.get_shaping_frequency(X_AXIS)); } - void onDrawShapingXZeta(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, stepper.get_shaping_damping_ratio(X_AXIS)); } - void SetShapingXFreq() { HMI_value.axis = X_AXIS; SetFloatOnClick(0, 200, 2, stepper.get_shaping_frequency(X_AXIS), ApplyShapingFreq); } - void SetShapingXZeta() { HMI_value.axis = X_AXIS; SetFloatOnClick(0, 1, 2, stepper.get_shaping_damping_ratio(X_AXIS), ApplyShapingZeta); } + void onDrawShapingXFreq(MenuItem* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, stepper.get_shaping_frequency(X_AXIS)); } + void onDrawShapingXZeta(MenuItem* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, stepper.get_shaping_damping_ratio(X_AXIS)); } + void setShapingXFreq() { hmiValue.axis = X_AXIS; setFloatOnClick(0, 200, 2, stepper.get_shaping_frequency(X_AXIS), applyShapingFreq); } + void setShapingXZeta() { hmiValue.axis = X_AXIS; setFloatOnClick(0, 1, 2, stepper.get_shaping_damping_ratio(X_AXIS), applyShapingZeta); } #endif #if ENABLED(INPUT_SHAPING_Y) - void onDrawShapingYFreq(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, stepper.get_shaping_frequency(Y_AXIS)); } - void onDrawShapingYZeta(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, stepper.get_shaping_damping_ratio(Y_AXIS)); } - void SetShapingYFreq() { HMI_value.axis = Y_AXIS; SetFloatOnClick(0, 200, 2, stepper.get_shaping_frequency(Y_AXIS), ApplyShapingFreq); } - void SetShapingYZeta() { HMI_value.axis = Y_AXIS; SetFloatOnClick(0, 1, 2, stepper.get_shaping_damping_ratio(Y_AXIS), ApplyShapingZeta); } + void onDrawShapingYFreq(MenuItem* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, stepper.get_shaping_frequency(Y_AXIS)); } + void onDrawShapingYZeta(MenuItem* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, stepper.get_shaping_damping_ratio(Y_AXIS)); } + void setShapingYFreq() { hmiValue.axis = Y_AXIS; setFloatOnClick(0, 200, 2, stepper.get_shaping_frequency(Y_AXIS), applyShapingFreq); } + void setShapingYZeta() { hmiValue.axis = Y_AXIS; setFloatOnClick(0, 1, 2, stepper.get_shaping_damping_ratio(Y_AXIS), applyShapingZeta); } #endif - void Draw_InputShaping_menu() { - checkkey = Menu; - if (SET_MENU(InputShapingMenu, MSG_INPUT_SHAPING, 5)) { - BACK_ITEM(Draw_Motion_Menu); + void drawInputShaping_menu() { + checkkey = ID_Menu; + if (SET_MENU(inputShapingMenu, MSG_INPUT_SHAPING, 5)) { + BACK_ITEM(drawMotionMenu); #if ENABLED(INPUT_SHAPING_X) - MENU_ITEM(ICON_ShapingX, MSG_SHAPING_A_FREQ, onDrawShapingXFreq, SetShapingXFreq); - MENU_ITEM(ICON_ShapingX, MSG_SHAPING_A_ZETA, onDrawShapingXZeta, SetShapingXZeta); + MENU_ITEM(ICON_ShapingX, MSG_SHAPING_A_FREQ, onDrawShapingXFreq, setShapingXFreq); + MENU_ITEM(ICON_ShapingX, MSG_SHAPING_A_ZETA, onDrawShapingXZeta, setShapingXZeta); #endif #if ENABLED(INPUT_SHAPING_Y) - MENU_ITEM(ICON_ShapingY, MSG_SHAPING_B_FREQ, onDrawShapingYFreq, SetShapingYFreq); - MENU_ITEM(ICON_ShapingY, MSG_SHAPING_B_ZETA, onDrawShapingYZeta, SetShapingYZeta); + MENU_ITEM(ICON_ShapingY, MSG_SHAPING_B_FREQ, onDrawShapingYFreq, setShapingYFreq); + MENU_ITEM(ICON_ShapingY, MSG_SHAPING_B_ZETA, onDrawShapingYZeta, setShapingYZeta); #endif } - UpdateMenu(InputShapingMenu); + updateMenu(inputShapingMenu); } #endif #if HAS_TRINAMIC_CONFIG #if AXIS_IS_TMC(X) - void SetXTMCCurrent() { SetPIntOnClick(MIN_TMC_CURRENT, MAX_TMC_CURRENT, []{ stepperX.refresh_stepper_current(); }); } + void setXTMCCurrent() { setPIntOnClick(MIN_TMC_CURRENT, MAX_TMC_CURRENT, []{ stepperX.refresh_stepper_current(); }); } #endif #if AXIS_IS_TMC(Y) - void SetYTMCCurrent() { SetPIntOnClick(MIN_TMC_CURRENT, MAX_TMC_CURRENT, []{ stepperY.refresh_stepper_current(); }); } + void setYTMCCurrent() { setPIntOnClick(MIN_TMC_CURRENT, MAX_TMC_CURRENT, []{ stepperY.refresh_stepper_current(); }); } #endif #if AXIS_IS_TMC(Z) - void SetZTMCCurrent() { SetPIntOnClick(MIN_TMC_CURRENT, MAX_TMC_CURRENT, []{ stepperZ.refresh_stepper_current(); }); } + void setZTMCCurrent() { setPIntOnClick(MIN_TMC_CURRENT, MAX_TMC_CURRENT, []{ stepperZ.refresh_stepper_current(); }); } #endif #if AXIS_IS_TMC(E0) - void SetETMCCurrent() { SetPIntOnClick(MIN_TMC_CURRENT, MAX_TMC_CURRENT, []{ stepperE0.refresh_stepper_current(); }); } + void setETMCCurrent() { setPIntOnClick(MIN_TMC_CURRENT, MAX_TMC_CURRENT, []{ stepperE0.refresh_stepper_current(); }); } #endif - void Draw_TrinamicConfig_menu() { - checkkey = Menu; - if (SET_MENU(TrinamicConfigMenu, MSG_TMC_DRIVERS, 5)) { - BACK_ITEM(Draw_AdvancedSettings_Menu); + void drawTrinamicConfigMenu() { + checkkey = ID_Menu; + if (SET_MENU(trinamicConfigMenu, MSG_TMC_DRIVERS, 5)) { + BACK_ITEM(drawAdvancedSettingsMenu); #if AXIS_IS_TMC(X) - EDIT_ITEM(ICON_TMCXSet, MSG_TMC_ACURRENT, onDrawPIntMenu, SetXTMCCurrent, &stepperX.val_mA); + EDIT_ITEM(ICON_TMCXSet, MSG_TMC_ACURRENT, onDrawPIntMenu, setXTMCCurrent, &stepperX.val_mA); #endif #if AXIS_IS_TMC(Y) - EDIT_ITEM(ICON_TMCYSet, MSG_TMC_BCURRENT, onDrawPIntMenu, SetYTMCCurrent, &stepperY.val_mA); + EDIT_ITEM(ICON_TMCYSet, MSG_TMC_BCURRENT, onDrawPIntMenu, setYTMCCurrent, &stepperY.val_mA); #endif #if AXIS_IS_TMC(Z) - EDIT_ITEM(ICON_TMCZSet, MSG_TMC_CCURRENT, onDrawPIntMenu, SetZTMCCurrent, &stepperZ.val_mA); + EDIT_ITEM(ICON_TMCZSet, MSG_TMC_CCURRENT, onDrawPIntMenu, setZTMCCurrent, &stepperZ.val_mA); #endif #if AXIS_IS_TMC(E0) - EDIT_ITEM(ICON_TMCESet, MSG_TMC_ECURRENT, onDrawPIntMenu, SetETMCCurrent, &stepperE0.val_mA); + EDIT_ITEM(ICON_TMCESet, MSG_TMC_ECURRENT, onDrawPIntMenu, setETMCCurrent, &stepperE0.val_mA); #endif } - UpdateMenu(TrinamicConfigMenu); + updateMenu(trinamicConfigMenu); } #endif -void Draw_Motion_Menu() { - checkkey = Menu; - if (SET_MENU_R(MotionMenu, selrect({1, 16, 28, 13}), MSG_MOTION, 10)) { - BACK_ITEM(Draw_Control_Menu); - MENU_ITEM(ICON_MaxSpeed, MSG_SPEED, onDrawSpeed, Draw_MaxSpeed_Menu); - MENU_ITEM(ICON_MaxAccelerated, MSG_ACCELERATION, onDrawAcc, Draw_MaxAccel_Menu); +void drawMotionMenu() { + checkkey = ID_Menu; + if (SET_MENU_R(motionMenu, selrect({1, 16, 28, 13}), MSG_MOTION, 10)) { + BACK_ITEM(drawControlMenu); + MENU_ITEM(ICON_MaxSpeed, MSG_SPEED, onDrawSpeed, drawMaxSpeedMenu); + MENU_ITEM(ICON_MaxAccelerated, MSG_ACCELERATION, onDrawAcc, drawMaxAccelMenu); #if HAS_CLASSIC_JERK - MENU_ITEM(ICON_MaxJerk, MSG_JERK, onDrawJerk, Draw_MaxJerk_Menu); + MENU_ITEM(ICON_MaxJerk, MSG_JERK, onDrawJerk, drawMaxJerkMenu); #elif HAS_JUNCTION_DEVIATION - EDIT_ITEM(ICON_JDmm, MSG_JUNCTION_DEVIATION, onDrawPFloat3Menu, SetJDmm, &planner.junction_deviation_mm); + EDIT_ITEM(ICON_JDmm, MSG_JUNCTION_DEVIATION, onDrawPFloat3Menu, setJDmm, &planner.junction_deviation_mm); #endif #if ENABLED(LIN_ADVANCE) - EDIT_ITEM(ICON_MaxAccelerated, MSG_ADVANCE_K, onDrawPFloat3Menu, SetLA_K, &planner.extruder_advance_K[0]); + EDIT_ITEM(ICON_MaxAccelerated, MSG_ADVANCE_K, onDrawPFloat3Menu, setLA_K, &planner.extruder_advance_K[0]); #endif #if ENABLED(SHAPING_MENU) - MENU_ITEM(ICON_InputShaping, MSG_INPUT_SHAPING, onDrawSubMenu, Draw_InputShaping_menu); + MENU_ITEM(ICON_InputShaping, MSG_INPUT_SHAPING, onDrawSubMenu, drawInputShaping_menu); #endif #if ENABLED(ADAPTIVE_STEP_SMOOTHING) - EDIT_ITEM(ICON_UBLActive, MSG_STEP_SMOOTHING, onDrawChkbMenu, SetAdaptiveStepSmoothing, &HMI_data.AdaptiveStepSmoothing); + EDIT_ITEM(ICON_UBLActive, MSG_STEP_SMOOTHING, onDrawChkbMenu, setAdaptiveStepSmoothing, &hmiData.adaptiveStepSmoothing); #endif - MENU_ITEM(ICON_Step, MSG_STEPS_PER_MM, onDrawSteps, Draw_Steps_Menu); - EDIT_ITEM(ICON_Flow, MSG_FLOW, onDrawPIntMenu, SetFlow, &planner.flow_percentage[0]); - EDIT_ITEM(ICON_Speed, MSG_SPEED, onDrawPIntMenu, SetSpeed, &feedrate_percentage); + MENU_ITEM(ICON_Step, MSG_STEPS_PER_MM, onDrawSteps, drawStepsMenu); + EDIT_ITEM(ICON_Flow, MSG_FLOW, onDrawPIntMenu, setFlow, &planner.flow_percentage[0]); + EDIT_ITEM(ICON_Speed, MSG_SPEED, onDrawPIntMenu, setSpeed, &feedrate_percentage); } - UpdateMenu(MotionMenu); + updateMenu(motionMenu); } #if HAS_PREHEAT - void Draw_PreheatHotend_Menu() { - checkkey = Menu; - if (SET_MENU(PreheatHotendMenu, MSG_PREHEAT_HOTEND, 1 + PREHEAT_COUNT)) { - BACK_ITEM(Draw_FilamentMan_Menu); + void drawPreheatHotendMenu() { + checkkey = ID_Menu; + if (SET_MENU(preheatHotendMenu, MSG_PREHEAT_HOTEND, 1 + PREHEAT_COUNT)) { + BACK_ITEM(drawFilamentManMenu); #define _ITEM_PREHEAT_HE(N) MENU_ITEM(ICON_Preheat##N, MSG_PREHEAT_##N, onDrawMenuItem, DoPreheatHotend##N); REPEAT_1(PREHEAT_COUNT, _ITEM_PREHEAT_HE) } - UpdateMenu(PreheatHotendMenu); + updateMenu(preheatHotendMenu); } #endif #if ENABLED(ADVANCED_PAUSE_FEATURE) - void Draw_FilamentMan_Menu() { - checkkey = Menu; - if (SET_MENU(FilamentMenu, MSG_FILAMENT_MAN, 6)) { - BACK_ITEM(Draw_Prepare_Menu); + void drawFilamentManMenu() { + checkkey = ID_Menu; + if (SET_MENU(filamentMenu, MSG_FILAMENT_MAN, 6)) { + BACK_ITEM(drawPrepareMenu); #if ENABLED(NOZZLE_PARK_FEATURE) - MENU_ITEM(ICON_Park, MSG_FILAMENT_PARK_ENABLED, onDrawMenuItem, ParkHead); + MENU_ITEM(ICON_Park, MSG_FILAMENT_PARK_ENABLED, onDrawMenuItem, parkHead); #endif #if HAS_PREHEAT - MENU_ITEM(ICON_SetEndTemp, MSG_PREHEAT_HOTEND, onDrawSubMenu, Draw_PreheatHotend_Menu); + MENU_ITEM(ICON_SetEndTemp, MSG_PREHEAT_HOTEND, onDrawSubMenu, drawPreheatHotendMenu); #endif - MENU_ITEM(ICON_FilMan, MSG_FILAMENTCHANGE, onDrawMenuItem, ChangeFilament); + MENU_ITEM(ICON_FilMan, MSG_FILAMENTCHANGE, onDrawMenuItem, changeFilament); #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) - MENU_ITEM(ICON_FilUnload, MSG_FILAMENTUNLOAD, onDrawMenuItem, UnloadFilament); - MENU_ITEM(ICON_FilLoad, MSG_FILAMENTLOAD, onDrawMenuItem, LoadFilament); + MENU_ITEM(ICON_FilUnload, MSG_FILAMENTUNLOAD, onDrawMenuItem, unloadFilament); + MENU_ITEM(ICON_FilLoad, MSG_FILAMENTLOAD, onDrawMenuItem, loadFilament); #endif } - UpdateMenu(FilamentMenu); + updateMenu(filamentMenu); } #endif #if ENABLED(MESH_BED_LEVELING) - void Draw_ManualMesh_Menu() { - checkkey = Menu; - if (SET_MENU(ManualMesh, MSG_UBL_MANUAL_MESH, 6)) { - BACK_ITEM(Draw_Prepare_Menu); - MENU_ITEM(ICON_ManualMesh, MSG_LEVEL_BED, onDrawMenuItem, ManualMeshStart); - MMeshMoveZItem = EDIT_ITEM(ICON_Zoffset, MSG_MOVE_Z, onDrawMMeshMoveZ, SetMMeshMoveZ, ¤t_position.z); - MENU_ITEM(ICON_Axis, MSG_UBL_CONTINUE_MESH, onDrawMenuItem, ManualMeshContinue); - MENU_ITEM(ICON_MeshViewer, MSG_MESH_VIEW, onDrawSubMenu, DWIN_MeshViewer); - MENU_ITEM(ICON_MeshSave, MSG_UBL_SAVE_MESH, onDrawMenuItem, ManualMeshSave); + void drawManualMeshMenu() { + checkkey = ID_Menu; + if (SET_MENU(manualMesh, MSG_UBL_MANUAL_MESH, 6)) { + BACK_ITEM(drawPrepareMenu); + MENU_ITEM(ICON_ManualMesh, MSG_LEVEL_BED, onDrawMenuItem, manualMeshStart); + mMeshMoveZItem = EDIT_ITEM(ICON_Zoffset, MSG_MOVE_Z, onDrawMMeshMoveZ, setMMeshMoveZ, ¤t_position.z); + MENU_ITEM(ICON_Axis, MSG_UBL_CONTINUE_MESH, onDrawMenuItem, manualMeshContinue); + MENU_ITEM(ICON_MeshViewer, MSG_MESH_VIEW, onDrawSubMenu, dwinMeshViewer); + MENU_ITEM(ICON_MeshSave, MSG_UBL_SAVE_MESH, onDrawMenuItem, manualMeshSave); } - UpdateMenu(ManualMesh); + updateMenu(manualMesh); } #endif // MESH_BED_LEVELING #if HAS_PREHEAT - void Draw_Preheat_Menu(bool NotCurrent) { - checkkey = Menu; - if (NotCurrent) { - BACK_ITEM(Draw_Temperature_Menu); + void drawPreheatMenu(const bool notCurrent) { + checkkey = ID_Menu; + if (notCurrent) { + BACK_ITEM(drawTemperatureMenu); #if HAS_HOTEND - EDIT_ITEM(ICON_SetEndTemp, MSG_UBL_SET_TEMP_HOTEND, onDrawSetPreheatHotend, SetPreheatEndTemp, &ui.material_preset[HMI_value.Select].hotend_temp); + EDIT_ITEM(ICON_SetEndTemp, MSG_UBL_SET_TEMP_HOTEND, onDrawSetPreheatHotend, setPreheatEndTemp, &ui.material_preset[hmiValue.select].hotend_temp); #endif #if HAS_HEATED_BED - EDIT_ITEM(ICON_SetBedTemp, MSG_UBL_SET_TEMP_BED, onDrawSetPreheatBed, SetPreheatBedTemp, &ui.material_preset[HMI_value.Select].bed_temp); + EDIT_ITEM(ICON_SetBedTemp, MSG_UBL_SET_TEMP_BED, onDrawSetPreheatBed, setPreheatBedTemp, &ui.material_preset[hmiValue.select].bed_temp); #endif #if HAS_FAN - EDIT_ITEM(ICON_FanSpeed, MSG_FAN_SPEED, onDrawSetPreheatFan, SetPreheatFanSpeed, &ui.material_preset[HMI_value.Select].fan_speed); + EDIT_ITEM(ICON_FanSpeed, MSG_FAN_SPEED, onDrawSetPreheatFan, setPreheatFanSpeed, &ui.material_preset[hmiValue.select].fan_speed); #endif #if ENABLED(EEPROM_SETTINGS) - MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawWriteEeprom, WriteEeprom); + MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawWriteEeprom, writeEEPROM); #endif } - UpdateMenu(PreheatMenu); + updateMenu(preheatMenu); } - #define _Preheat_Menu(N) \ - void Draw_Preheat## N ##_Menu() { \ - HMI_value.Select = (N) - 1; \ - Draw_Preheat_Menu(SET_MENU(PreheatMenu, MSG_PREHEAT_## N ##_SETTINGS, 5)); \ + #define _preheatMenu(N) \ + void drawPreheat## N ##Menu() { \ + hmiValue.select = (N) - 1; \ + drawPreheatMenu(SET_MENU(preheatMenu, MSG_PREHEAT_## N ##_SETTINGS, 5)); \ } - REPEAT_1(PREHEAT_COUNT, _Preheat_Menu) + REPEAT_1(PREHEAT_COUNT, _preheatMenu) #endif // HAS_PREHEAT -void Draw_Temperature_Menu() { - checkkey = Menu; - if (SET_MENU_R(TemperatureMenu, selrect({236, 2, 28, 12}), MSG_TEMPERATURE, 4 + PREHEAT_COUNT)) { - BACK_ITEM(Draw_Control_Menu); +void drawTemperatureMenu() { + checkkey = ID_Menu; + if (SET_MENU_R(temperatureMenu, selrect({236, 2, 28, 12}), MSG_TEMPERATURE, 4 + PREHEAT_COUNT)) { + BACK_ITEM(drawControlMenu); #if HAS_HOTEND - HotendTargetItem = EDIT_ITEM(ICON_SetEndTemp, MSG_UBL_SET_TEMP_HOTEND, onDrawHotendTemp, SetHotendTemp, &thermalManager.temp_hotend[0].target); + hotendTargetItem = EDIT_ITEM(ICON_SetEndTemp, MSG_UBL_SET_TEMP_HOTEND, onDrawHotendTemp, setHotendTemp, &thermalManager.temp_hotend[0].target); #endif #if HAS_HEATED_BED - BedTargetItem = EDIT_ITEM(ICON_SetBedTemp, MSG_UBL_SET_TEMP_BED, onDrawBedTemp, SetBedTemp, &thermalManager.temp_bed.target); + bedTargetItem = EDIT_ITEM(ICON_SetBedTemp, MSG_UBL_SET_TEMP_BED, onDrawBedTemp, setBedTemp, &thermalManager.temp_bed.target); #endif #if HAS_FAN - FanSpeedItem = EDIT_ITEM(ICON_FanSpeed, MSG_FAN_SPEED, onDrawFanSpeed, SetFanSpeed, &thermalManager.fan_speed[0]); + fanSpeedItem = EDIT_ITEM(ICON_FanSpeed, MSG_FAN_SPEED, onDrawFanSpeed, setFanSpeed, &thermalManager.fan_speed[0]); #endif #if HAS_PREHEAT - #define _ITEM_SETPREHEAT(N) MENU_ITEM(ICON_SetPreheat##N, MSG_PREHEAT_## N ##_SETTINGS, onDrawSubMenu, Draw_Preheat## N ##_Menu); + #define _ITEM_SETPREHEAT(N) MENU_ITEM(ICON_SetPreheat##N, MSG_PREHEAT_## N ##_SETTINGS, onDrawSubMenu, drawPreheat## N ##Menu); REPEAT_1(PREHEAT_COUNT, _ITEM_SETPREHEAT) #endif } - UpdateMenu(TemperatureMenu); + updateMenu(temperatureMenu); } -void Draw_MaxSpeed_Menu() { - checkkey = Menu; - if (SET_MENU_R(MaxSpeedMenu, selrect({1, 16, 28, 13}), MSG_MAX_SPEED, 5)) { - BACK_ITEM(Draw_Motion_Menu); +void drawMaxSpeedMenu() { + checkkey = ID_Menu; + if (SET_MENU_R(maxSpeedMenu, selrect({1, 16, 28, 13}), MSG_MAX_SPEED, 5)) { + BACK_ITEM(drawMotionMenu); #if HAS_X_AXIS - EDIT_ITEM(ICON_MaxSpeedX, MSG_VMAX_A, onDrawMaxSpeedX, SetMaxSpeedX, &planner.settings.max_feedrate_mm_s[X_AXIS]); + EDIT_ITEM(ICON_MaxSpeedX, MSG_VMAX_A, onDrawMaxSpeedX, setMaxSpeedX, &planner.settings.max_feedrate_mm_s[X_AXIS]); #endif #if HAS_Y_AXIS - EDIT_ITEM(ICON_MaxSpeedY, MSG_VMAX_B, onDrawMaxSpeedY, SetMaxSpeedY, &planner.settings.max_feedrate_mm_s[Y_AXIS]); + EDIT_ITEM(ICON_MaxSpeedY, MSG_VMAX_B, onDrawMaxSpeedY, setMaxSpeedY, &planner.settings.max_feedrate_mm_s[Y_AXIS]); #endif #if HAS_Z_AXIS - EDIT_ITEM(ICON_MaxSpeedZ, MSG_VMAX_C, onDrawMaxSpeedZ, SetMaxSpeedZ, &planner.settings.max_feedrate_mm_s[Z_AXIS]); + EDIT_ITEM(ICON_MaxSpeedZ, MSG_VMAX_C, onDrawMaxSpeedZ, setMaxSpeedZ, &planner.settings.max_feedrate_mm_s[Z_AXIS]); #endif #if HAS_HOTEND - EDIT_ITEM(ICON_MaxSpeedE, MSG_VMAX_E, onDrawMaxSpeedE, SetMaxSpeedE, &planner.settings.max_feedrate_mm_s[E_AXIS]); + EDIT_ITEM(ICON_MaxSpeedE, MSG_VMAX_E, onDrawMaxSpeedE, setMaxSpeedE, &planner.settings.max_feedrate_mm_s[E_AXIS]); #endif } - UpdateMenu(MaxSpeedMenu); + updateMenu(maxSpeedMenu); } -void Draw_MaxAccel_Menu() { - checkkey = Menu; - if (SET_MENU_R(MaxAccelMenu, selrect({1, 16, 28, 13}), MSG_AMAX_EN, 5)) { - BACK_ITEM(Draw_Motion_Menu); +void drawMaxAccelMenu() { + checkkey = ID_Menu; + if (SET_MENU_R(maxAccelMenu, selrect({1, 16, 28, 13}), MSG_AMAX_EN, 5)) { + BACK_ITEM(drawMotionMenu); #if HAS_X_AXIS - EDIT_ITEM(ICON_MaxAccX, MSG_AMAX_A, onDrawMaxAccelX, SetMaxAccelX, &planner.settings.max_acceleration_mm_per_s2[X_AXIS]); + EDIT_ITEM(ICON_MaxAccX, MSG_AMAX_A, onDrawMaxAccelX, setMaxAccelX, &planner.settings.max_acceleration_mm_per_s2[X_AXIS]); #endif #if HAS_Y_AXIS - EDIT_ITEM(ICON_MaxAccY, MSG_AMAX_B, onDrawMaxAccelY, SetMaxAccelY, &planner.settings.max_acceleration_mm_per_s2[Y_AXIS]); + EDIT_ITEM(ICON_MaxAccY, MSG_AMAX_B, onDrawMaxAccelY, setMaxAccelY, &planner.settings.max_acceleration_mm_per_s2[Y_AXIS]); #endif #if HAS_Z_AXIS - EDIT_ITEM(ICON_MaxAccZ, MSG_AMAX_C, onDrawMaxAccelZ, SetMaxAccelZ, &planner.settings.max_acceleration_mm_per_s2[Z_AXIS]); + EDIT_ITEM(ICON_MaxAccZ, MSG_AMAX_C, onDrawMaxAccelZ, setMaxAccelZ, &planner.settings.max_acceleration_mm_per_s2[Z_AXIS]); #endif #if HAS_HOTEND - EDIT_ITEM(ICON_MaxAccE, MSG_AMAX_E, onDrawMaxAccelE, SetMaxAccelE, &planner.settings.max_acceleration_mm_per_s2[E_AXIS]); + EDIT_ITEM(ICON_MaxAccE, MSG_AMAX_E, onDrawMaxAccelE, setMaxAccelE, &planner.settings.max_acceleration_mm_per_s2[E_AXIS]); #endif } - UpdateMenu(MaxAccelMenu); + updateMenu(maxAccelMenu); } #if HAS_CLASSIC_JERK - void Draw_MaxJerk_Menu() { - checkkey = Menu; - if (SET_MENU_R(MaxJerkMenu, selrect({1, 16, 28, 13}), MSG_JERK, 5)) { - BACK_ITEM(Draw_Motion_Menu); + void drawMaxJerkMenu() { + checkkey = ID_Menu; + if (SET_MENU_R(maxJerkMenu, selrect({1, 16, 28, 13}), MSG_JERK, 5)) { + BACK_ITEM(drawMotionMenu); #if HAS_X_AXIS - EDIT_ITEM(ICON_MaxSpeedJerkX, MSG_VA_JERK, onDrawMaxJerkX, SetMaxJerkX, &planner.max_jerk.x); + EDIT_ITEM(ICON_MaxSpeedJerkX, MSG_VA_JERK, onDrawMaxJerkX, setMaxJerkX, &planner.max_jerk.x); #endif #if HAS_Y_AXIS - EDIT_ITEM(ICON_MaxSpeedJerkY, MSG_VB_JERK, onDrawMaxJerkY, SetMaxJerkY, &planner.max_jerk.y); + EDIT_ITEM(ICON_MaxSpeedJerkY, MSG_VB_JERK, onDrawMaxJerkY, setMaxJerkY, &planner.max_jerk.y); #endif #if HAS_Z_AXIS - EDIT_ITEM(ICON_MaxSpeedJerkZ, MSG_VC_JERK, onDrawMaxJerkZ, SetMaxJerkZ, &planner.max_jerk.z); + EDIT_ITEM(ICON_MaxSpeedJerkZ, MSG_VC_JERK, onDrawMaxJerkZ, setMaxJerkZ, &planner.max_jerk.z); #endif #if HAS_HOTEND - EDIT_ITEM(ICON_MaxSpeedJerkE, MSG_VE_JERK, onDrawMaxJerkE, SetMaxJerkE, &planner.max_jerk.e); + EDIT_ITEM(ICON_MaxSpeedJerkE, MSG_VE_JERK, onDrawMaxJerkE, setMaxJerkE, &planner.max_jerk.e); #endif } - UpdateMenu(MaxJerkMenu); + updateMenu(maxJerkMenu); } #endif // HAS_CLASSIC_JERK -void Draw_Steps_Menu() { - checkkey = Menu; - if (SET_MENU_R(StepsMenu, selrect({1, 16, 28, 13}), MSG_STEPS_PER_MM, 5)) { - BACK_ITEM(Draw_Motion_Menu); +void drawStepsMenu() { + checkkey = ID_Menu; + if (SET_MENU_R(stepsMenu, selrect({1, 16, 28, 13}), MSG_STEPS_PER_MM, 5)) { + BACK_ITEM(drawMotionMenu); #if HAS_X_AXIS - EDIT_ITEM(ICON_StepX, MSG_A_STEPS, onDrawStepsX, SetStepsX, &planner.settings.axis_steps_per_mm[X_AXIS]); + EDIT_ITEM(ICON_StepX, MSG_A_STEPS, onDrawStepsX, setStepsX, &planner.settings.axis_steps_per_mm[X_AXIS]); #endif #if HAS_Y_AXIS - EDIT_ITEM(ICON_StepY, MSG_B_STEPS, onDrawStepsY, SetStepsY, &planner.settings.axis_steps_per_mm[Y_AXIS]); + EDIT_ITEM(ICON_StepY, MSG_B_STEPS, onDrawStepsY, setStepsY, &planner.settings.axis_steps_per_mm[Y_AXIS]); #endif #if HAS_Z_AXIS - EDIT_ITEM(ICON_StepZ, MSG_C_STEPS, onDrawStepsZ, SetStepsZ, &planner.settings.axis_steps_per_mm[Z_AXIS]); + EDIT_ITEM(ICON_StepZ, MSG_C_STEPS, onDrawStepsZ, setStepsZ, &planner.settings.axis_steps_per_mm[Z_AXIS]); #endif #if HAS_HOTEND - EDIT_ITEM(ICON_StepE, MSG_E_STEPS, onDrawStepsE, SetStepsE, &planner.settings.axis_steps_per_mm[E_AXIS]); + EDIT_ITEM(ICON_StepE, MSG_E_STEPS, onDrawStepsE, setStepsE, &planner.settings.axis_steps_per_mm[E_AXIS]); #endif } - UpdateMenu(StepsMenu); + updateMenu(stepsMenu); } //============================================================================= @@ -3629,77 +3633,77 @@ void Draw_Steps_Menu() { #if HAS_CUSTOM_COLORS - void RestoreDefaultColors() { - DWIN_SetColorDefaults(); - DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); - DWIN_RedrawScreen(); + void restoreDefaultColors() { + dwinSetColorDefaults(); + DWINUI::setColors(hmiData.colorText, hmiData.colorBackground, hmiData.colorStatusBg); + dwinRedrawScreen(); } - void SelColor() { - MenuData.P_Int = (int16_t*)static_cast(CurrentMenu->SelectedItem())->value; - HMI_value.Color[0] = GetRColor(*MenuData.P_Int); // Red - HMI_value.Color[1] = GetGColor(*MenuData.P_Int); // Green - HMI_value.Color[2] = GetBColor(*MenuData.P_Int); // Blue - Draw_GetColor_Menu(); + void selColor() { + menuData.intPtr = (int16_t*)static_cast(currentMenu->selectedItem())->value; + hmiValue.Color[0] = GetRColor(*menuData.intPtr); // Red + hmiValue.Color[1] = GetGColor(*menuData.intPtr); // Green + hmiValue.Color[2] = GetBColor(*menuData.intPtr); // Blue + drawGetColorMenu(); } - void LiveRGBColor() { - HMI_value.Color[CurrentMenu->line() - 2] = MenuData.Value; - uint16_t color = RGB(HMI_value.Color[0], HMI_value.Color[1], HMI_value.Color[2]); + void liveRGBColor() { + hmiValue.Color[currentMenu->line() - 2] = menuData.value; + uint16_t color = RGB(hmiValue.Color[0], hmiValue.Color[1], hmiValue.Color[2]); dwinDrawRectangle(1, color, 20, 315, DWIN_WIDTH - 20, 335); } - void SetRGBColor() { - const uint8_t color = static_cast(CurrentMenu->SelectedItem())->icon; - SetIntOnClick(0, (color == 1) ? 63 : 31, HMI_value.Color[color], nullptr, LiveRGBColor); + void setRGBColor() { + const uint8_t color = static_cast(currentMenu->selectedItem())->icon; + setIntOnClick(0, (color == 1) ? 63 : 31, hmiValue.Color[color], nullptr, liveRGBColor); } - void DWIN_ApplyColor() { - *MenuData.P_Int = RGB(HMI_value.Color[0], HMI_value.Color[1], HMI_value.Color[2]); - DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); - Draw_SelectColors_Menu(); + void dwinApplyColor() { + *menuData.intPtr = RGB(hmiValue.Color[0], hmiValue.Color[1], hmiValue.Color[2]); + DWINUI::setColors(hmiData.colorText, hmiData.colorBackground, hmiData.colorStatusBg); + drawSelectColorsMenu(); hash_changed = true; LCD_MESSAGE(MSG_COLORS_APPLIED); - DWIN_Draw_Dashboard(); + dwinDrawDashboard(); } - void Draw_SelectColors_Menu() { - checkkey = Menu; - if (SET_MENU(SelectColorMenu, MSG_COLORS_SELECT, 20)) { - BACK_ITEM(Draw_AdvancedSettings_Menu); - MENU_ITEM(ICON_StockConfiguration, MSG_RESTORE_DEFAULTS, onDrawMenuItem, RestoreDefaultColors); - EDIT_ITEM_F(0, "Screen Background", onDrawSelColorItem, SelColor, &HMI_data.Background_Color); - EDIT_ITEM_F(0, "Cursor", onDrawSelColorItem, SelColor, &HMI_data.Cursor_Color); - EDIT_ITEM_F(0, "Title Background", onDrawSelColorItem, SelColor, &HMI_data.TitleBg_Color); - EDIT_ITEM_F(0, "Title Text", onDrawSelColorItem, SelColor, &HMI_data.TitleTxt_Color); - EDIT_ITEM_F(0, "Text", onDrawSelColorItem, SelColor, &HMI_data.Text_Color); - EDIT_ITEM_F(0, "Selected", onDrawSelColorItem, SelColor, &HMI_data.Selected_Color); - EDIT_ITEM_F(0, "Split Line", onDrawSelColorItem, SelColor, &HMI_data.SplitLine_Color); - EDIT_ITEM_F(0, "Highlight", onDrawSelColorItem, SelColor, &HMI_data.Highlight_Color); - EDIT_ITEM_F(0, "Status Background", onDrawSelColorItem, SelColor, &HMI_data.StatusBg_Color); - EDIT_ITEM_F(0, "Status Text", onDrawSelColorItem, SelColor, &HMI_data.StatusTxt_Color); - EDIT_ITEM_F(0, "Popup Background", onDrawSelColorItem, SelColor, &HMI_data.PopupBg_Color); - EDIT_ITEM_F(0, "Popup Text", onDrawSelColorItem, SelColor, &HMI_data.PopupTxt_Color); - EDIT_ITEM_F(0, "Alert Background", onDrawSelColorItem, SelColor, &HMI_data.AlertBg_Color); - EDIT_ITEM_F(0, "Alert Text", onDrawSelColorItem, SelColor, &HMI_data.AlertTxt_Color); - EDIT_ITEM_F(0, "Percent Text", onDrawSelColorItem, SelColor, &HMI_data.PercentTxt_Color); - EDIT_ITEM_F(0, "Bar Fill", onDrawSelColorItem, SelColor, &HMI_data.Barfill_Color); - EDIT_ITEM_F(0, "Indicator value", onDrawSelColorItem, SelColor, &HMI_data.Indicator_Color); - EDIT_ITEM_F(0, "Coordinate value", onDrawSelColorItem, SelColor, &HMI_data.Coordinate_Color); + void drawSelectColorsMenu() { + checkkey = ID_Menu; + if (SET_MENU(selectColorMenu, MSG_COLORS_SELECT, 20)) { + BACK_ITEM(drawAdvancedSettingsMenu); + MENU_ITEM(ICON_StockConfiguration, MSG_RESTORE_DEFAULTS, onDrawMenuItem, restoreDefaultColors); + EDIT_ITEM_F(0, "Screen Background", onDrawSelColorItem, selColor, &hmiData.colorBackground); + EDIT_ITEM_F(0, "Cursor", onDrawSelColorItem, selColor, &hmiData.colorCursor); + EDIT_ITEM_F(0, "Title Background", onDrawSelColorItem, selColor, &hmiData.colorTitleBg); + EDIT_ITEM_F(0, "Title Text", onDrawSelColorItem, selColor, &hmiData.colorTitleTxt); + EDIT_ITEM_F(0, "Text", onDrawSelColorItem, selColor, &hmiData.colorText); + EDIT_ITEM_F(0, "Selected", onDrawSelColorItem, selColor, &hmiData.colorSelected); + EDIT_ITEM_F(0, "Split Line", onDrawSelColorItem, selColor, &hmiData.colorSplitLine); + EDIT_ITEM_F(0, "Highlight", onDrawSelColorItem, selColor, &hmiData.colorHighlight); + EDIT_ITEM_F(0, "Status Background", onDrawSelColorItem, selColor, &hmiData.colorStatusBg); + EDIT_ITEM_F(0, "Status Text", onDrawSelColorItem, selColor, &hmiData.colorStatusTxt); + EDIT_ITEM_F(0, "Popup Background", onDrawSelColorItem, selColor, &hmiData.colorPopupBg); + EDIT_ITEM_F(0, "Popup Text", onDrawSelColorItem, selColor, &hmiData.colorPopupTxt); + EDIT_ITEM_F(0, "Alert Background", onDrawSelColorItem, selColor, &hmiData.colorAlertBg); + EDIT_ITEM_F(0, "Alert Text", onDrawSelColorItem, selColor, &hmiData.colorAlertTxt); + EDIT_ITEM_F(0, "Percent Text", onDrawSelColorItem, selColor, &hmiData.colorPercentTxt); + EDIT_ITEM_F(0, "Bar Fill", onDrawSelColorItem, selColor, &hmiData.colorBarfill); + EDIT_ITEM_F(0, "Indicator value", onDrawSelColorItem, selColor, &hmiData.colorIndicator); + EDIT_ITEM_F(0, "Coordinate value", onDrawSelColorItem, selColor, &hmiData.colorCoordinate); } - UpdateMenu(SelectColorMenu); + updateMenu(selectColorMenu); } - void Draw_GetColor_Menu() { - checkkey = Menu; - if (SET_MENU(GetColorMenu, MSG_COLORS_GET, 5)) { - BACK_ITEM(DWIN_ApplyColor); - MENU_ITEM(ICON_Cancel, MSG_BUTTON_CANCEL, onDrawMenuItem, Draw_SelectColors_Menu); - MENU_ITEM(0, MSG_COLORS_RED, onDrawGetColorItem, SetRGBColor); - MENU_ITEM(1, MSG_COLORS_GREEN, onDrawGetColorItem, SetRGBColor); - MENU_ITEM(2, MSG_COLORS_BLUE, onDrawGetColorItem, SetRGBColor); + void drawGetColorMenu() { + checkkey = ID_Menu; + if (SET_MENU(getColorMenu, MSG_COLORS_GET, 5)) { + BACK_ITEM(dwinApplyColor); + MENU_ITEM(ICON_Cancel, MSG_BUTTON_CANCEL, onDrawMenuItem, drawSelectColorsMenu); + MENU_ITEM(0, MSG_COLORS_RED, onDrawGetColorItem, setRGBColor); + MENU_ITEM(1, MSG_COLORS_GREEN, onDrawGetColorItem, setRGBColor); + MENU_ITEM(2, MSG_COLORS_BLUE, onDrawGetColorItem, setRGBColor); } - UpdateMenu(GetColorMenu); - dwinDrawRectangle(1, *MenuData.P_Int, 20, 315, DWIN_WIDTH - 20, 335); + updateMenu(getColorMenu); + dwinDrawRectangle(1, *menuData.intPtr, 20, 315, DWIN_WIDTH - 20, 335); } #endif // HAS_CUSTOM_COLORS @@ -3711,91 +3715,91 @@ void Draw_Steps_Menu() { #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) #if ENABLED(MPC_EDIT_MENU) - void SetHeaterPower() { SetPFloatOnClick(1, 200, 1); } - void SetBlkHeatCapacity() { SetPFloatOnClick(0, 40, 2); } - void SetSensorResponse() { SetPFloatOnClick(0, 1, 4); } - void SetAmbientXfer() { SetPFloatOnClick(0, 1, 4); } + void setHeaterPower() { setPFloatOnClick(1, 200, 1); } + void setBlkHeatCapacity() { setPFloatOnClick(0, 40, 2); } + void setSensorResponse() { setPFloatOnClick(0, 1, 4); } + void setAmbientXfer() { setPFloatOnClick(0, 1, 4); } #if ENABLED(MPC_INCLUDE_FAN) - void onDrawFanAdj(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 4, thermalManager.temp_hotend[0].fanCoefficient()); } - void ApplyFanAdj() { thermalManager.temp_hotend[0].applyFanAdjustment(MenuData.Value / POW(10, 4)); } - void SetFanAdj() { SetFloatOnClick(0, 1, 4, thermalManager.temp_hotend[0].fanCoefficient(), ApplyFanAdj); } + void onDrawFanAdj(MenuItem* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 4, thermalManager.temp_hotend[0].fanCoefficient()); } + void applyFanAdj() { thermalManager.temp_hotend[0].applyFanAdjustment(menuData.value / POW(10, 4)); } + void setFanAdj() { setFloatOnClick(0, 1, 4, thermalManager.temp_hotend[0].fanCoefficient(), applyFanAdj); } #endif #endif - void Draw_HotendMPC_Menu() { - checkkey = Menu; - if (SET_MENU_F(HotendMPCMenu, "MPC Settings", 7)) { + void drawHotendMPCMenu() { + checkkey = ID_Menu; + if (SET_MENU_F(hotendMPCMenu, "MPC Settings", 7)) { MPC_t &mpc = thermalManager.temp_hotend[0].mpc; - BACK_ITEM(Draw_AdvancedSettings_Menu); + BACK_ITEM(drawAdvancedSettingsMenu); #if ENABLED(MPC_AUTOTUNE_MENU) MENU_ITEM(ICON_MPCNozzle, MSG_MPC_AUTOTUNE, onDrawMenuItem, []{ thermalManager.MPC_autotune(active_extruder, Temperature::MPCTuningType::AUTO); }); #endif #if ENABLED(MPC_EDIT_MENU) - EDIT_ITEM(ICON_MPCHeater, MSG_MPC_POWER, onDrawPFloatMenu, SetHeaterPower, &mpc.heater_power); - EDIT_ITEM(ICON_MPCHeatCap, MSG_MPC_BLOCK_HEAT_CAPACITY, onDrawPFloat2Menu, SetBlkHeatCapacity, &mpc.block_heat_capacity); - EDIT_ITEM(ICON_MPCValue, MSG_SENSOR_RESPONSIVENESS, onDrawPFloat4Menu, SetSensorResponse, &mpc.sensor_responsiveness); - EDIT_ITEM(ICON_MPCValue, MSG_MPC_AMBIENT_XFER_COEFF, onDrawPFloat4Menu, SetAmbientXfer, &mpc.ambient_xfer_coeff_fan0); + EDIT_ITEM(ICON_MPCHeater, MSG_MPC_POWER, onDrawPFloatMenu, setHeaterPower, &mpc.heater_power); + EDIT_ITEM(ICON_MPCHeatCap, MSG_MPC_BLOCK_HEAT_CAPACITY, onDrawPFloat2Menu, setBlkHeatCapacity, &mpc.block_heat_capacity); + EDIT_ITEM(ICON_MPCValue, MSG_SENSOR_RESPONSIVENESS, onDrawPFloat4Menu, setSensorResponse, &mpc.sensor_responsiveness); + EDIT_ITEM(ICON_MPCValue, MSG_MPC_AMBIENT_XFER_COEFF, onDrawPFloat4Menu, setAmbientXfer, &mpc.ambient_xfer_coeff_fan0); #if ENABLED(MPC_INCLUDE_FAN) - EDIT_ITEM(ICON_MPCFan, MSG_MPC_AMBIENT_XFER_COEFF_FAN, onDrawFanAdj, SetFanAdj, &mpc.fan255_adjustment); + EDIT_ITEM(ICON_MPCFan, MSG_MPC_AMBIENT_XFER_COEFF_FAN, onDrawFanAdj, setFanAdj, &mpc.fan255_adjustment); #endif #endif } - UpdateMenu(HotendMPCMenu); + updateMenu(hotendMPCMenu); } #endif // MPC_EDIT_MENU || MPC_AUTOTUNE_MENU -#if DWIN_PID_TUNE - void SetPID(celsius_t t, heater_id_t h) { +#if PROUI_PID_TUNE + void setPID(celsius_t t, heater_id_t h) { gcode.process_subcommands_now( MString<60>(F("G28OXY\nG0Z5F300\nG0X"), X_CENTER, F("Y"), Y_CENTER, F("F5000\nM84\nM400")) ); - thermalManager.PID_autotune(t, h, HMI_data.PidCycles, true); + thermalManager.PID_autotune(t, h, hmiData.pidCycles, true); } - void SetPidCycles() { SetPIntOnClick(3, 50); } + void setPidCycles() { setPIntOnClick(3, 50); } #endif #if ALL(HAS_PID_HEATING, PID_EDIT_MENU) - void SetKp() { SetPFloatOnClick(0, 1000, 2); } - void ApplyPIDi() { - *MenuData.P_Float = scalePID_i(MenuData.Value / POW(10, 2)); + void setKp() { setPFloatOnClick(0, 1000, 2); } + void applyPIDi() { + *menuData.floatPtr = scalePID_i(menuData.value / POW(10, 2)); TERN_(PIDTEMP, thermalManager.updatePID()); } - void ApplyPIDd() { - *MenuData.P_Float = scalePID_d(MenuData.Value / POW(10, 2)); + void applyPIDd() { + *menuData.floatPtr = scalePID_d(menuData.value / POW(10, 2)); TERN_(PIDTEMP, thermalManager.updatePID()); } - void SetKi() { - MenuData.P_Float = (float*)static_cast(CurrentMenu->SelectedItem())->value; - const float value = unscalePID_i(*MenuData.P_Float); - SetFloatOnClick(0, 1000, 2, value, ApplyPIDi); + void setKi() { + menuData.floatPtr = (float*)static_cast(currentMenu->selectedItem())->value; + const float value = unscalePID_i(*menuData.floatPtr); + setFloatOnClick(0, 1000, 2, value, applyPIDi); } - void SetKd() { - MenuData.P_Float = (float*)static_cast(CurrentMenu->SelectedItem())->value; - const float value = unscalePID_d(*MenuData.P_Float); - SetFloatOnClick(0, 1000, 2, value, ApplyPIDd); + void setKd() { + menuData.floatPtr = (float*)static_cast(currentMenu->selectedItem())->value; + const float value = unscalePID_d(*menuData.floatPtr); + setFloatOnClick(0, 1000, 2, value, applyPIDd); } - void onDrawPIDi(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_i(*(float*)static_cast(menuitem)->value)); } - void onDrawPIDd(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_d(*(float*)static_cast(menuitem)->value)); } + void onDrawPIDi(MenuItem* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_i(*(float*)static_cast(menuitem)->value)); } + void onDrawPIDd(MenuItem* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_d(*(float*)static_cast(menuitem)->value)); } #endif // HAS_PID_HEATING && PID_EDIT_MENU #if ENABLED(PIDTEMP) && ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU) #if ENABLED(PID_AUTOTUNE_MENU) - void HotendPID() { SetPID(HMI_data.HotendPidT, H_E0); } - void SetHotendPidT() { SetPIntOnClick(MIN_ETEMP, MAX_ETEMP); } + void hotendPID() { setPID(hmiData.hotendPidT, H_E0); } + void setHotendPidT() { setPIntOnClick(MIN_ETEMP, MAX_ETEMP); } #endif - void Draw_HotendPID_Menu() { - checkkey = Menu; - if (SET_MENU_F(HotendPIDMenu, STR_HOTEND_PID " Settings", 8)) { - BACK_ITEM(Draw_AdvancedSettings_Menu); + void drawHotendPIDMenu() { + checkkey = ID_Menu; + if (SET_MENU_F(hotendPIDMenu, STR_HOTEND_PID " Settings", 8)) { + BACK_ITEM(drawAdvancedSettingsMenu); #if ENABLED(PID_AUTOTUNE_MENU) - MENU_ITEM_F(ICON_PIDNozzle, STR_HOTEND_PID, onDrawMenuItem, HotendPID); - EDIT_ITEM(ICON_Temperature, MSG_TEMPERATURE, onDrawPIntMenu, SetHotendPidT, &HMI_data.HotendPidT); - EDIT_ITEM(ICON_PIDCycles, MSG_PID_CYCLE, onDrawPIntMenu, SetPidCycles, &HMI_data.PidCycles); + MENU_ITEM_F(ICON_PIDNozzle, STR_HOTEND_PID, onDrawMenuItem, hotendPID); + EDIT_ITEM(ICON_Temperature, MSG_TEMPERATURE, onDrawPIntMenu, setHotendPidT, &hmiData.hotendPidT); + EDIT_ITEM(ICON_PIDCycles, MSG_PID_CYCLE, onDrawPIntMenu, setPidCycles, &hmiData.pidCycles); #endif #if ENABLED(PID_EDIT_MENU) EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KP, onDrawPFloat2Menu, SetKp, &thermalManager.temp_hotend[0].pid.Kp); @@ -3803,10 +3807,10 @@ void Draw_Steps_Menu() { EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KD, onDrawPIDd, SetKd, &thermalManager.temp_hotend[0].pid.Kd); #endif #if ENABLED(EEPROM_SETTINGS) - MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, WriteEeprom); + MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, writeEEPROM); #endif } - UpdateMenu(HotendPIDMenu); + updateMenu(hotendPIDMenu); } #endif // PIDTEMP && (PID_AUTOTUNE_MENU || PID_EDIT_MENU) @@ -3814,18 +3818,18 @@ void Draw_Steps_Menu() { #if ENABLED(PIDTEMPBED) && ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU) #if ENABLED(PID_AUTOTUNE_MENU) - void BedPID() { SetPID(HMI_data.BedPidT, H_BED); } - void SetBedPidT() { SetPIntOnClick(MIN_BEDTEMP, MAX_BEDTEMP); } + void bedPID() { setPID(hmiData.bedPidT, H_BED); } + void setBedPidT() { setPIntOnClick(MIN_BEDTEMP, MAX_BEDTEMP); } #endif - void Draw_BedPID_Menu() { - checkkey = Menu; - if (SET_MENU_F(BedPIDMenu, STR_BED_PID " Settings", 8)) { - BACK_ITEM(Draw_AdvancedSettings_Menu); + void drawBedPIDMenu() { + checkkey = ID_Menu; + if (SET_MENU_F(bedPIDMenu, STR_BED_PID " Settings", 8)) { + BACK_ITEM(drawAdvancedSettingsMenu); #if ENABLED(PID_AUTOTUNE_MENU) - MENU_ITEM_F(ICON_PIDBed, STR_BED_PID, onDrawMenuItem,BedPID); - EDIT_ITEM(ICON_Temperature, MSG_TEMPERATURE, onDrawPIntMenu, SetBedPidT, &HMI_data.BedPidT); - EDIT_ITEM(ICON_PIDCycles, MSG_PID_CYCLE, onDrawPIntMenu, SetPidCycles, &HMI_data.PidCycles); + MENU_ITEM_F(ICON_PIDBed, STR_BED_PID, onDrawMenuItem,bedPID); + EDIT_ITEM(ICON_Temperature, MSG_TEMPERATURE, onDrawPIntMenu, setBedPidT, &hmiData.bedPidT); + EDIT_ITEM(ICON_PIDCycles, MSG_PID_CYCLE, onDrawPIntMenu, setPidCycles, &hmiData.pidCycles); #endif #if ENABLED(PID_EDIT_MENU) EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KP, onDrawPFloat2Menu, SetKp, &thermalManager.temp_bed.pid.Kp); @@ -3833,10 +3837,10 @@ void Draw_Steps_Menu() { EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KD, onDrawPIDd, SetKd, &thermalManager.temp_bed.pid.Kd); #endif #if ENABLED(EEPROM_SETTINGS) - MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, WriteEeprom); + MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, writeEEPROM); #endif } - UpdateMenu(BedPIDMenu); + updateMenu(bedPIDMenu); } #endif // PIDTEMPBED && (PID_AUTOTUNE_MENU || PID_EDIT_MENU) @@ -3845,15 +3849,15 @@ void Draw_Steps_Menu() { #if HAS_BED_PROBE - void Draw_ZOffsetWiz_Menu() { - checkkey = Menu; - if (SET_MENU(ZOffsetWizMenu, MSG_PROBE_WIZARD, 4)) { - BACK_ITEM(Draw_Prepare_Menu); - MENU_ITEM(ICON_Homing, MSG_AUTO_HOME, onDrawMenuItem, AutoHome); - MENU_ITEM_F(ICON_MoveZ0, "Move Z to Home", onDrawMenuItem, SetMoveZto0); - EDIT_ITEM(ICON_Zoffset, MSG_ZPROBE_ZOFFSET, onDrawPFloat2Menu, SetZOffset, &BABY_Z_VAR); + void drawZOffsetWizMenu() { + checkkey = ID_Menu; + if (SET_MENU(zOffsetWizMenu, MSG_PROBE_WIZARD, 4)) { + BACK_ITEM(drawPrepareMenu); + MENU_ITEM(ICON_Homing, MSG_AUTO_HOME, onDrawMenuItem, autoHome); + MENU_ITEM_F(ICON_MoveZ0, "Move Z to Home", onDrawMenuItem, setMoveZto0); + EDIT_ITEM(ICON_Zoffset, MSG_ZPROBE_ZOFFSET, onDrawPFloat2Menu, setZOffset, &BABY_Z_VAR); } - UpdateMenu(ZOffsetWizMenu); + updateMenu(zOffsetWizMenu); if (!axis_is_trusted(Z_AXIS)) LCD_MESSAGE_F("WARNING: Z position unknown, move Z to home"); } @@ -3861,42 +3865,42 @@ void Draw_Steps_Menu() { #if ENABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU) - void Draw_Homing_Menu() { - checkkey = Menu; - if (SET_MENU(HomingMenu, MSG_HOMING, 6)) { - BACK_ITEM(Draw_Prepare_Menu); - MENU_ITEM(ICON_Homing, MSG_AUTO_HOME, onDrawMenuItem, AutoHome); + void drawHomingMenu() { + checkkey = ID_Menu; + if (SET_MENU(homingMenu, MSG_HOMING, 6)) { + BACK_ITEM(drawPrepareMenu); + MENU_ITEM(ICON_Homing, MSG_AUTO_HOME, onDrawMenuItem, autoHome); #if HAS_X_AXIS - MENU_ITEM(ICON_HomeX, MSG_AUTO_HOME_X, onDrawMenuItem, HomeX); + MENU_ITEM(ICON_HomeX, MSG_AUTO_HOME_X, onDrawMenuItem, homeX); #endif #if HAS_Y_AXIS - MENU_ITEM(ICON_HomeY, MSG_AUTO_HOME_Y, onDrawMenuItem, HomeY); + MENU_ITEM(ICON_HomeY, MSG_AUTO_HOME_Y, onDrawMenuItem, homeY); #endif #if HAS_Z_AXIS - MENU_ITEM(ICON_HomeZ, MSG_AUTO_HOME_Z, onDrawMenuItem, HomeZ); + MENU_ITEM(ICON_HomeZ, MSG_AUTO_HOME_Z, onDrawMenuItem, homeZ); #endif #if ENABLED(MESH_BED_LEVELING) - EDIT_ITEM(ICON_ZAfterHome, MSG_Z_AFTER_HOME, onDrawPInt8Menu, SetZAfterHoming, &HMI_data.z_after_homing); + EDIT_ITEM(ICON_ZAfterHome, MSG_Z_AFTER_HOME, onDrawPInt8Menu, setZAfterHoming, &hmiData.zAfterHoming); #endif } - UpdateMenu(HomingMenu); + updateMenu(homingMenu); } #endif // INDIVIDUAL_AXIS_HOMING_SUBMENU #if ENABLED(FWRETRACT) - void Draw_FWRetract_Menu() { - checkkey = Menu; - if (SET_MENU(FWRetractMenu, MSG_FWRETRACT, 6)) { - BACK_ITEM(Return_FWRetract_Menu); - EDIT_ITEM(ICON_FWRetLength, MSG_CONTROL_RETRACT, onDrawPFloatMenu, SetRetractLength, &fwretract.settings.retract_length); - EDIT_ITEM(ICON_FWRetSpeed, MSG_SINGLENOZZLE_RETRACT_SPEED, onDrawPFloatMenu, SetRetractSpeed, &fwretract.settings.retract_feedrate_mm_s); - EDIT_ITEM(ICON_FWRetZRaise, MSG_CONTROL_RETRACT_ZHOP, onDrawPFloat2Menu, SetZRaise, &fwretract.settings.retract_zraise); - EDIT_ITEM(ICON_FWRecSpeed, MSG_SINGLENOZZLE_UNRETRACT_SPEED, onDrawPFloatMenu, SetRecoverSpeed, &fwretract.settings.retract_recover_feedrate_mm_s); - EDIT_ITEM(ICON_FWRecExtra, MSG_CONTROL_RETRACT_RECOVER, onDrawPFloatMenu, SetAddRecover, &fwretract.settings.retract_recover_extra); + void drawFWRetractMenu() { + checkkey = ID_Menu; + if (SET_MENU(fwRetractMenu, MSG_FWRETRACT, 6)) { + BACK_ITEM(returnFWRetractMenu); + EDIT_ITEM(ICON_FWRetLength, MSG_CONTROL_RETRACT, onDrawPFloatMenu, setRetractLength, &fwretract.settings.retract_length); + EDIT_ITEM(ICON_FWRetSpeed, MSG_SINGLENOZZLE_RETRACT_SPEED, onDrawPFloatMenu, setRetractSpeed, &fwretract.settings.retract_feedrate_mm_s); + EDIT_ITEM(ICON_FWRetZRaise, MSG_CONTROL_RETRACT_ZHOP, onDrawPFloat2Menu, setZRaise, &fwretract.settings.retract_zraise); + EDIT_ITEM(ICON_FWRecSpeed, MSG_SINGLENOZZLE_UNRETRACT_SPEED, onDrawPFloatMenu, setRecoverSpeed, &fwretract.settings.retract_recover_feedrate_mm_s); + EDIT_ITEM(ICON_FWRecExtra, MSG_CONTROL_RETRACT_RECOVER, onDrawPFloatMenu, setAddRecover, &fwretract.settings.retract_recover_extra); } - UpdateMenu(FWRetractMenu); + updateMenu(fwRetractMenu); } #endif @@ -3907,47 +3911,47 @@ void Draw_Steps_Menu() { #if HAS_MESH - void ApplyMeshFadeHeight() { set_z_fade_height(planner.z_fade_height); } - void SetMeshFadeHeight() { SetPFloatOnClick(0, 100, 1, ApplyMeshFadeHeight); } + void applyMeshFadeHeight() { set_z_fade_height(planner.z_fade_height); } + void setMeshFadeHeight() { setPFloatOnClick(0, 100, 1, applyMeshFadeHeight); } - void SetMeshActive() { + void setMeshActive() { set_bed_leveling_enabled(!planner.leveling_active); - Draw_Chkb_Line(CurrentMenu->line(), planner.leveling_active); + drawCheckboxLine(currentMenu->line(), planner.leveling_active); dwinUpdateLCD(); } #if ENABLED(PREHEAT_BEFORE_LEVELING) - void SetBedLevT() { SetPIntOnClick(MIN_BEDTEMP, MAX_BEDTEMP); } + void setBedLevT() { setPIntOnClick(MIN_BEDTEMP, MAX_BEDTEMP); } #endif #if ENABLED(MESH_EDIT_MENU) #define Z_OFFSET_MIN -3 #define Z_OFFSET_MAX 3 - void LiveEditMesh() { ((MenuItemPtrClass*)EditZValueItem)->value = &bedlevel.z_values[HMI_value.Select ? bedLevelTools.mesh_x : MenuData.Value][HMI_value.Select ? MenuData.Value : bedLevelTools.mesh_y]; EditZValueItem->redraw(); } - void ApplyEditMeshX() { bedLevelTools.mesh_x = MenuData.Value; } - void ApplyEditMeshY() { bedLevelTools.mesh_y = MenuData.Value; } - void ResetMesh() { bedLevelTools.mesh_reset(); LCD_MESSAGE(MSG_MESH_RESET); } - void SetEditMeshX() { HMI_value.Select = 0; SetIntOnClick(0, GRID_MAX_POINTS_X - 1, bedLevelTools.mesh_x, ApplyEditMeshX, LiveEditMesh); } - void SetEditMeshY() { HMI_value.Select = 1; SetIntOnClick(0, GRID_MAX_POINTS_Y - 1, bedLevelTools.mesh_y, ApplyEditMeshY, LiveEditMesh); } - void SetEditZValue() { SetPFloatOnClick(Z_OFFSET_MIN, Z_OFFSET_MAX, 3); } + void LiveEditMesh() { ((MenuItemPtr*)editZValueItem)->value = &bedlevel.z_values[hmiValue.select ? bedLevelTools.mesh_x : menuData.value][hmiValue.select ? menuData.value : bedLevelTools.mesh_y]; editZValueItem->redraw(); } + void applyEditMeshX() { bedLevelTools.mesh_x = menuData.value; } + void applyEditMeshY() { bedLevelTools.mesh_y = menuData.value; } + void ResetMesh() { bedLevelTools.meshReset(); LCD_MESSAGE(MSG_MESH_RESET); } + void setEditMeshX() { hmiValue.select = 0; setIntOnClick(0, GRID_MAX_POINTS_X - 1, bedLevelTools.mesh_x, applyEditMeshX, LiveEditMesh); } + void setEditMeshY() { hmiValue.select = 1; setIntOnClick(0, GRID_MAX_POINTS_Y - 1, bedLevelTools.mesh_y, applyEditMeshY, LiveEditMesh); } + void setEditZValue() { setPFloatOnClick(Z_OFFSET_MIN, Z_OFFSET_MAX, 3); } #endif #endif // HAS_MESH #if ENABLED(AUTO_BED_LEVELING_UBL) - void ApplyUBLSlot() { bedlevel.storage_slot = MenuData.Value; } - void SetUBLSlot() { SetIntOnClick(0, settings.calc_num_meshes() - 1, bedlevel.storage_slot, ApplyUBLSlot); } - void onDrawUBLSlot(MenuItemClass* menuitem, int8_t line) { + void applyUBLSlot() { bedlevel.storage_slot = menuData.value; } + void setUBLSlot() { setIntOnClick(0, settings.calc_num_meshes() - 1, bedlevel.storage_slot, applyUBLSlot); } + void onDrawUBLSlot(MenuItem* menuitem, int8_t line) { NOLESS(bedlevel.storage_slot, 0); onDrawIntMenu(menuitem, line, bedlevel.storage_slot); } - void ApplyUBLTiltGrid() { bedLevelTools.tilt_grid = MenuData.Value; } - void SetUBLTiltGrid() { SetIntOnClick(1, 3, bedLevelTools.tilt_grid, ApplyUBLTiltGrid); } + void applyUBLTiltGrid() { bedLevelTools.tilt_grid = menuData.value; } + void setUBLTiltGrid() { setIntOnClick(1, 3, bedLevelTools.tilt_grid, applyUBLTiltGrid); } - void UBLMeshTilt() { + void ublMeshTilt() { NOLESS(bedlevel.storage_slot, 0); if (bedLevelTools.tilt_grid > 1) gcode.process_subcommands_now(TS(F("G29J"), bedLevelTools.tilt_grid)); @@ -3956,19 +3960,19 @@ void Draw_Steps_Menu() { LCD_MESSAGE(MSG_UBL_MESH_TILTED); } - void UBLSmartFillMesh() { + void ublSmartFillMesh() { for (uint8_t x = 0; x < GRID_MAX_POINTS_Y; ++x) bedlevel.smart_fill_mesh(); LCD_MESSAGE(MSG_UBL_MESH_FILLED); } - void UBLMeshSave() { + void ublMeshSave() { NOLESS(bedlevel.storage_slot, 0); settings.store_mesh(bedlevel.storage_slot); ui.status_printf(0, GET_TEXT_F(MSG_MESH_SAVED), bedlevel.storage_slot); DONE_BUZZ(true); } - void UBLMeshLoad() { + void ublMeshLoad() { NOLESS(bedlevel.storage_slot, 0); settings.load_mesh(bedlevel.storage_slot); } @@ -3977,48 +3981,48 @@ void Draw_Steps_Menu() { #if HAS_MESH - void Draw_MeshSet_Menu() { - checkkey = Menu; - if (SET_MENU(MeshMenu, MSG_MESH_LEVELING, 14)) { - BACK_ITEM(Draw_AdvancedSettings_Menu); + void drawMeshSetMenu() { + checkkey = ID_Menu; + if (SET_MENU(meshMenu, MSG_MESH_LEVELING, 14)) { + BACK_ITEM(drawAdvancedSettingsMenu); #if ENABLED(PREHEAT_BEFORE_LEVELING) - EDIT_ITEM(ICON_Temperature, MSG_UBL_SET_TEMP_BED, onDrawPIntMenu, SetBedLevT, &HMI_data.BedLevT); + EDIT_ITEM(ICON_Temperature, MSG_UBL_SET_TEMP_BED, onDrawPIntMenu, setBedLevT, &hmiData.bedLevT); #endif - EDIT_ITEM(ICON_SetZOffset, MSG_Z_FADE_HEIGHT, onDrawPFloatMenu, SetMeshFadeHeight, &planner.z_fade_height); - EDIT_ITEM(ICON_UBLActive, MSG_ACTIVATE_MESH, onDrawChkbMenu, SetMeshActive, &planner.leveling_active); + EDIT_ITEM(ICON_SetZOffset, MSG_Z_FADE_HEIGHT, onDrawPFloatMenu, setMeshFadeHeight, &planner.z_fade_height); + EDIT_ITEM(ICON_UBLActive, MSG_ACTIVATE_MESH, onDrawChkbMenu, setMeshActive, &planner.leveling_active); #if HAS_BED_PROBE - MENU_ITEM(ICON_Level, MSG_AUTO_MESH, onDrawMenuItem, AutoLev); + MENU_ITEM(ICON_Level, MSG_AUTO_MESH, onDrawMenuItem, autoLevel); #endif #if ENABLED(AUTO_BED_LEVELING_UBL) - EDIT_ITEM(ICON_UBLSlot, MSG_UBL_STORAGE_SLOT, onDrawUBLSlot, SetUBLSlot, &bedlevel.storage_slot); - MENU_ITEM(ICON_UBLMeshSave, MSG_UBL_SAVE_MESH, onDrawMenuItem, UBLMeshSave); - MENU_ITEM(ICON_UBLMeshLoad, MSG_UBL_LOAD_MESH, onDrawMenuItem, UBLMeshLoad); - EDIT_ITEM(ICON_UBLTiltGrid, MSG_UBL_TILTING_GRID, onDrawPInt8Menu, SetUBLTiltGrid, &bedLevelTools.tilt_grid); - MENU_ITEM(ICON_UBLTiltGrid, MSG_UBL_TILT_MESH, onDrawMenuItem, UBLMeshTilt); - MENU_ITEM(ICON_UBLSmartFill, MSG_UBL_SMART_FILLIN, onDrawMenuItem, UBLSmartFillMesh); + EDIT_ITEM(ICON_UBLSlot, MSG_UBL_STORAGE_SLOT, onDrawUBLSlot, setUBLSlot, &bedlevel.storage_slot); + MENU_ITEM(ICON_UBLMeshSave, MSG_UBL_SAVE_MESH, onDrawMenuItem, ublMeshSave); + MENU_ITEM(ICON_UBLMeshLoad, MSG_UBL_LOAD_MESH, onDrawMenuItem, ublMeshLoad); + EDIT_ITEM(ICON_UBLTiltGrid, MSG_UBL_TILTING_GRID, onDrawPInt8Menu, setUBLTiltGrid, &bedLevelTools.tilt_grid); + MENU_ITEM(ICON_UBLTiltGrid, MSG_UBL_TILT_MESH, onDrawMenuItem, ublMeshTilt); + MENU_ITEM(ICON_UBLSmartFill, MSG_UBL_SMART_FILLIN, onDrawMenuItem, ublSmartFillMesh); #endif #if ENABLED(MESH_EDIT_MENU) MENU_ITEM(ICON_MeshReset, MSG_MESH_RESET, onDrawMenuItem, ResetMesh); - MENU_ITEM(ICON_MeshEdit, MSG_EDIT_MESH, onDrawSubMenu, Draw_EditMesh_Menu); + MENU_ITEM(ICON_MeshEdit, MSG_EDIT_MESH, onDrawSubMenu, drawEditMeshMenu); #endif - MENU_ITEM(ICON_MeshViewer, MSG_MESH_VIEW, onDrawSubMenu, DWIN_MeshViewer); + MENU_ITEM(ICON_MeshViewer, MSG_MESH_VIEW, onDrawSubMenu, dwinMeshViewer); } - UpdateMenu(MeshMenu); + updateMenu(meshMenu); } #if ENABLED(MESH_EDIT_MENU) - void Draw_EditMesh_Menu() { + void drawEditMeshMenu() { if (!leveling_is_valid()) { LCD_MESSAGE(MSG_UBL_MESH_INVALID); return; } set_bed_leveling_enabled(false); - checkkey = Menu; - if (SET_MENU(EditMeshMenu, MSG_EDIT_MESH, 4)) { + checkkey = ID_Menu; + if (SET_MENU(editMeshMenu, MSG_EDIT_MESH, 4)) { bedLevelTools.mesh_x = bedLevelTools.mesh_y = 0; - BACK_ITEM(Draw_MeshSet_Menu); - EDIT_ITEM(ICON_MeshEditX, MSG_MESH_X, onDrawPInt8Menu, SetEditMeshX, &bedLevelTools.mesh_x); - EDIT_ITEM(ICON_MeshEditY, MSG_MESH_Y, onDrawPInt8Menu, SetEditMeshY, &bedLevelTools.mesh_y); - EditZValueItem = EDIT_ITEM(ICON_MeshEditZ, MSG_MESH_EDIT_Z, onDrawPFloat2Menu, SetEditZValue, &bedlevel.z_values[bedLevelTools.mesh_x][bedLevelTools.mesh_y]); + BACK_ITEM(drawMeshSetMenu); + EDIT_ITEM(ICON_MeshEditX, MSG_MESH_X, onDrawPInt8Menu, setEditMeshX, &bedLevelTools.mesh_x); + EDIT_ITEM(ICON_MeshEditY, MSG_MESH_Y, onDrawPInt8Menu, setEditMeshY, &bedLevelTools.mesh_y); + editZValueItem = EDIT_ITEM(ICON_MeshEditZ, MSG_MESH_EDIT_Z, onDrawPFloat2Menu, setEditZValue, &bedlevel.z_values[bedLevelTools.mesh_x][bedLevelTools.mesh_y]); } - UpdateMenu(EditMeshMenu); + updateMenu(editMeshMenu); } #endif diff --git a/Marlin/src/lcd/e3v2/proui/dwin.h b/Marlin/src/lcd/e3v2/proui/dwin.h index bd1e802458..62bf2ad99e 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.h +++ b/Marlin/src/lcd/e3v2/proui/dwin.h @@ -54,31 +54,31 @@ namespace GET_LANG(LCD_LANGUAGE) { enum processID : uint8_t { // Process ID - MainMenu, - Menu, - SetInt, - SetPInt, - SetIntNoDraw, - SetFloat, - SetPFloat, - PrintProcess, - Popup, - Leveling, - Locked, - Reboot, - PrintDone, - ESDiagProcess, - WaitResponse, - Homing, - PidProcess, - MPCProcess, - NothingToDo + ID_MainMenu, + ID_Menu, + ID_SetInt, + ID_SetPInt, + ID_SetIntNoDraw, + ID_SetFloat, + ID_SetPFloat, + ID_PrintProcess, + ID_Popup, + ID_Leveling, + ID_Locked, + ID_Reboot, + ID_PrintDone, + ID_ESDiagProcess, + ID_WaitResponse, + ID_Homing, + ID_PIDProcess, + ID_MPCProcess, + ID_NothingToDo }; -#if ANY(DWIN_PID_TUNE, MPC_AUTOTUNE) +#if ANY(PROUI_PID_TUNE, MPC_AUTOTUNE) enum tempcontrol_t : uint8_t { - #if DWIN_PID_TUNE + #if PROUI_PID_TUNE PIDTEMP_START, PIDTEMPBED_START, PID_BAD_HEATER_ID, @@ -100,69 +100,69 @@ enum processID : uint8_t { typedef struct { // Color settings - uint16_t Background_Color; - uint16_t Cursor_Color; - uint16_t TitleBg_Color; - uint16_t TitleTxt_Color; - uint16_t Text_Color; - uint16_t Selected_Color; - uint16_t SplitLine_Color; - uint16_t Highlight_Color; - uint16_t StatusBg_Color; - uint16_t StatusTxt_Color; - uint16_t PopupBg_Color; - uint16_t PopupTxt_Color; - uint16_t AlertBg_Color; - uint16_t AlertTxt_Color; - uint16_t PercentTxt_Color; - uint16_t Barfill_Color; - uint16_t Indicator_Color; - uint16_t Coordinate_Color; + uint16_t colorBackground; + uint16_t colorCursor; + uint16_t colorTitleBg; + uint16_t colorTitleTxt; + uint16_t colorText; + uint16_t colorSelected; + uint16_t colorSplitLine; + uint16_t colorHighlight; + uint16_t colorStatusBg; + uint16_t colorStatusTxt; + uint16_t colorPopupBg; + uint16_t colorPopupTxt; + uint16_t colorAlertBg; + uint16_t colorAlertTxt; + uint16_t colorPercentTxt; + uint16_t colorBarfill; + uint16_t colorIndicator; + uint16_t colorCoordinate; // Temperatures - #if DWIN_PID_TUNE - int16_t PidCycles = DEF_PIDCYCLES; + #if PROUI_PID_TUNE + int16_t pidCycles = DEF_PIDCYCLES; #if ENABLED(PIDTEMP) - int16_t HotendPidT = DEF_HOTENDPIDT; + int16_t hotendPidT = DEF_HOTENDPIDT; #endif #if ENABLED(PIDTEMPBED) - int16_t BedPidT = DEF_BEDPIDT; + int16_t bedPidT = DEF_BEDPIDT; #endif #endif #if ENABLED(PREVENT_COLD_EXTRUSION) - int16_t ExtMinT = EXTRUDE_MINTEMP; + int16_t extMinT = EXTRUDE_MINTEMP; #endif #if ENABLED(PREHEAT_BEFORE_LEVELING) - int16_t BedLevT = LEVELING_BED_TEMP; + int16_t bedLevT = LEVELING_BED_TEMP; #endif #if ENABLED(BAUD_RATE_GCODE) - bool Baud115K = false; + bool baud115K = false; #endif - bool FullManualTramming = false; - bool MediaSort = true; - bool MediaAutoMount = ENABLED(HAS_SD_EXTENDER); + bool fullManualTramming = false; + bool mediaSort = true; + bool mediaAutoMount = ENABLED(HAS_SD_EXTENDER); #if ALL(INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) - uint8_t z_after_homing = DEF_Z_AFTER_HOMING; + uint8_t zAfterHoming = DEF_Z_AFTER_HOMING; #endif #if ALL(LED_CONTROL_MENU, HAS_COLOR_LEDS) - LEDColor Led_Color = Def_Leds_Color; + LEDColor ledColor = defColorLeds; #endif - bool AdaptiveStepSmoothing = true; - bool EnablePreview = true; -} HMI_data_t; + bool adaptiveStepSmoothing = true; + bool enablePreview = true; +} hmi_data_t; -extern HMI_data_t HMI_data; -static constexpr size_t eeprom_data_size = sizeof(HMI_data_t); +extern hmi_data_t hmiData; +static constexpr size_t eeprom_data_size = sizeof(hmi_data_t); typedef struct { int8_t Color[3]; // Color components - #if ANY(DWIN_PID_TUNE, MPCTEMP) - tempcontrol_t tempcontrol = AUTOTUNE_DONE; + #if ANY(PROUI_PID_TUNE, MPCTEMP) + tempcontrol_t tempControl = AUTOTUNE_DONE; #endif - uint8_t Select = 0; // Auxiliary selector variable + uint8_t select = 0; // Auxiliary selector variable AxisEnum axis = X_AXIS; // Axis Select -} HMI_value_t; +} hmi_value_t; typedef struct { uint8_t language; @@ -171,10 +171,10 @@ typedef struct { bool pause_flag:1; // printing is paused bool select_flag:1; // Popup button selected bool home_flag:1; // homing in course -} HMI_flag_t; +} hmi_flag_t; -extern HMI_value_t HMI_value; -extern HMI_flag_t hmiFlag; +extern hmi_value_t hmiValue; +extern hmi_flag_t hmiFlag; extern uint8_t checkkey; // Popups @@ -182,217 +182,214 @@ extern uint8_t checkkey; void dwinPopupTemperature(const bool toohigh); #endif #if ENABLED(POWER_LOSS_RECOVERY) - void Popup_PowerLossRecovery(); + void popupPowerLossRecovery(); #endif // Tool Functions -uint32_t GetHash(char * str); +uint32_t getHash(char * str); #if ENABLED(EEPROM_SETTINGS) - void WriteEeprom(); - void ReadEeprom(); - void ResetEeprom(); + void writeEEPROM(); + void readEEPROM(); + void resetEEPROM(); #if HAS_MESH - void SaveMesh(); + void saveMesh(); #endif #endif -void RebootPrinter(); -void DisableMotors(); -void AutoLev(); -void AutoHome(); +void rebootPrinter(); +void disableMotors(); +void autoLevel(); +void autoHome(); #if HAS_PREHEAT #define _DOPREHEAT(N) void DoPreheat##N(); REPEAT_1(PREHEAT_COUNT, _DOPREHEAT) #endif -void DoCoolDown(); +void doCoolDown(); #if ENABLED(BAUD_RATE_GCODE) - void HMI_SetBaudRate(); - void SetBaud115K(); - void SetBaud250K(); + void hmiSetBaudRate(); + void setBaud115K(); + void setBaud250K(); #endif #if HAS_LCD_BRIGHTNESS - void TurnOffBacklight(); + void turnOffBacklight(); #endif -void ApplyExtMinT(); -void ParkHead(); +void applyExtMinT(); +void parkHead(); #if HAS_ONESTEP_LEVELING - void Trammingwizard(); + void trammingwizard(); #endif #if ALL(LED_CONTROL_MENU, HAS_COLOR_LEDS) - void ApplyLEDColor(); + void applyLEDColor(); #endif #if ENABLED(AUTO_BED_LEVELING_UBL) - void UBLMeshTilt(); - void UBLMeshSave(); - void UBLMeshLoad(); + void ublMeshTilt(); + void ublMeshSave(); + void ublMeshLoad(); #endif #if ENABLED(HOST_SHUTDOWN_MENU_ITEM) && defined(SHUTDOWN_ACTION) - void HostShutDown(); + void hostShutDown(); #endif #if DISABLED(HAS_BED_PROBE) - void HomeZandDisable(); + void homeZAndDisable(); #endif // Other -void Goto_PrintProcess(); -void Goto_Main_Menu(); -void Goto_Info_Menu(); -void Goto_PowerLossRecovery(); -void Goto_ConfirmToPrint(); -void DWIN_Draw_Dashboard(const bool with_update); // Status Area -void Draw_Main_Area(); // Redraw main area -void DWIN_DrawStatusLine(const char *text = ""); // Draw simple status text -void DWIN_RedrawDash(); // Redraw Dash and Status line -void DWIN_RedrawScreen(); // Redraw all screen elements -void HMI_MainMenu(); // Main process screen -void HMI_Printing(); // Print page -void HMI_ReturnScreen(); // Return to previous screen before popups -void HMI_WaitForUser(); -void HMI_SaveProcessID(const uint8_t id); -void HMI_SDCardUpdate(); -void EachMomentUpdate(); -void update_variable(); +void gotoPrintProcess(); +void gotoMainMenu(); +void gotoInfoMenu(); +void gotoPowerLossRecovery(); +void gotoConfirmToPrint(); +void dwinDrawDashboard(const bool with_update); // Status Area +void drawMainArea(); // Redraw main area +void dwinDrawStatusLine(const char *text = ""); // Draw simple status text +void dwinRedrawDash(); // Redraw Dash and Status line +void dwinRedrawScreen(); // Redraw all screen elements +void hmiMainMenu(); // Main process screen +void hmiPrinting(); // Print page +void hmiReturnScreen(); // Return to previous screen before popups +void hmiWaitForUser(); +void hmiSaveProcessID(const uint8_t id); +void hmiSDCardUpdate(); +void eachMomentUpdate(); +void updateVariable(); void dwinInitScreen(); -void DWIN_HandleScreen(); -void DWIN_CheckStatusMessage(); +void dwinHandleScreen(); +void dwinCheckStatusMessage(); void dwinHomingStart(); void dwinHomingDone(); #if HAS_MESH - void DWIN_MeshUpdate(const int8_t cpos, const int8_t tpos, const_float_t zval); + void dwinMeshUpdate(const int8_t cpos, const int8_t tpos, const_float_t zval); #endif -void DWIN_LevelingStart(); -void DWIN_LevelingDone(); -void DWIN_Print_Started(); -void DWIN_Print_Pause(); -void DWIN_Print_Resume(); -void DWIN_Print_Finished(); -void DWIN_Print_Aborted(); +void dwinLevelingStart(); +void dwinLevelingDone(); +void dwinPrintStarted(); +void dwinPrintPause(); +void dwinPrintResume(); +void dwinPrintFinished(); +void dwinPrintAborted(); #if HAS_FILAMENT_SENSOR - void DWIN_FilamentRunout(const uint8_t extruder); + void dwinFilamentRunout(const uint8_t extruder); #endif -void DWIN_Print_Header(const char *text); -void DWIN_SetColorDefaults(); -void DWIN_CopySettingsTo(char * const buff); -void DWIN_CopySettingsFrom(const char * const buff); -void DWIN_SetDataDefaults(); -void DWIN_RebootScreen(); +void dwinPrintHeader(const char *text); +void dwinSetColorDefaults(); +void dwinCopySettingsTo(char * const buff); +void dwinCopySettingsFrom(const char * const buff); +void dwinSetDataDefaults(); +void dwinRebootScreen(); #if ENABLED(ADVANCED_PAUSE_FEATURE) - void DWIN_Popup_Pause(FSTR_P const fmsg, uint8_t button=0); - void Draw_Popup_FilamentPurge(); - void Goto_FilamentPurge(); + void dwinPopupPause(FSTR_P const fmsg, uint8_t button=0); + void drawPopupFilamentPurge(); + void gotoFilamentPurge(); #endif // Utility and extensions #if HAS_LOCKSCREEN - void DWIN_LockScreen(); - void DWIN_UnLockScreen(); - void HMI_LockScreen(); + void dwinLockScreen(); + void dwinUnLockScreen(); + void hmiLockScreen(); #endif #if HAS_MESH - void DWIN_MeshViewer(); + void dwinMeshViewer(); #endif #if HAS_GCODE_PREVIEW - void HMI_ConfirmToPrint(); + void hmiConfirmToPrint(); #endif #if HAS_ESDIAG - void Draw_EndStopDiag(); + void drawEndStopDiag(); #endif #if ENABLED(PRINTCOUNTER) - void Draw_PrintStats(); + void drawPrintStats(); #endif // Menu drawing functions -void Draw_Print_File_Menu(); -void Draw_Control_Menu(); -void Draw_AdvancedSettings_Menu(); -void Draw_Prepare_Menu(); -void Draw_Move_Menu(); -void Draw_Tramming_Menu(); +void drawPrintFileMenu(); +void drawControlMenu(); +void drawAdvancedSettingsMenu(); +void drawPrepareMenu(); +void drawMoveMenu(); +void drawTrammingMenu(); #if HAS_HOME_OFFSET - void Draw_HomeOffset_Menu(); + void drawHomeOffsetMenu(); #endif #if HAS_BED_PROBE - void Draw_ProbeSet_Menu(); + void drawProbeSetMenu(); #endif -void Draw_FilSet_Menu(); +void drawFilSetMenu(); #if ENABLED(NOZZLE_PARK_FEATURE) - void Draw_ParkPos_Menu(); + void drawParkPosMenu(); #endif -void Draw_PhySet_Menu(); +void drawPhySetMenu(); #if ALL(CASE_LIGHT_MENU, CASELIGHT_USES_BRIGHTNESS) - void Draw_CaseLight_Menu(); + void drawCaseLightMenu(); #endif #if ENABLED(LED_CONTROL_MENU) - void Draw_LedControl_Menu(); + void drawLedControlMenu(); #endif -void Draw_Tune_Menu(); -void Draw_Motion_Menu(); +void drawTuneMenu(); +void drawMotionMenu(); #if ENABLED(ADVANCED_PAUSE_FEATURE) - void Draw_FilamentMan_Menu(); + void drawFilamentManMenu(); #endif #if ENABLED(MESH_BED_LEVELING) - void Draw_ManualMesh_Menu(); + void drawManualMeshMenu(); #endif -void Draw_Temperature_Menu(); -void Draw_MaxSpeed_Menu(); -void Draw_MaxAccel_Menu(); +void drawTemperatureMenu(); +void drawMaxSpeedMenu(); +void drawMaxAccelMenu(); #if HAS_CLASSIC_JERK - void Draw_MaxJerk_Menu(); + void drawMaxJerkMenu(); #endif -void Draw_Steps_Menu(); +void drawStepsMenu(); #if ANY(HAS_BED_PROBE, BABYSTEPPING) - void Draw_ZOffsetWiz_Menu(); + void drawZOffsetWizMenu(); #endif #if ENABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU) - void Draw_Homing_Menu(); + void drawHomingMenu(); #endif #if ENABLED(FWRETRACT) - void Draw_FWRetract_Menu(); + void drawFWRetractMenu(); #endif #if HAS_MESH - void Draw_MeshSet_Menu(); + void drawMeshSetMenu(); #if ENABLED(MESH_EDIT_MENU) - void Draw_EditMesh_Menu(); + void drawEditMeshMenu(); #endif #endif -#if HAS_TRINAMIC_CONFIG - void Draw_TrinamicConfig_menu(); -#endif // Custom colors editing #if HAS_CUSTOM_COLORS - void DWIN_ApplyColor(); - void Draw_SelectColors_Menu(); - void Draw_GetColor_Menu(); + void dwinApplyColor(); + void drawSelectColorsMenu(); + void drawGetColorMenu(); #endif // PID -#if DWIN_PID_TUNE +#if PROUI_PID_TUNE #include "../../../module/temperature.h" - void DWIN_StartM303(const bool seenC, const int c, const bool seenS, const heater_id_t hid, const celsius_t temp); - void DWIN_PidTuning(tempcontrol_t result); + void dwinStartM303(const bool seenC, const int c, const bool seenS, const heater_id_t hid, const celsius_t temp); + void dwinPidTuning(tempcontrol_t result); #endif #if ENABLED(PIDTEMP) #if ENABLED(PID_AUTOTUNE_MENU) - void HotendPID(); + void hotendPID(); #endif #if ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU) - void Draw_HotendPID_Menu(); + void drawHotendPIDMenu(); #endif #endif #if ENABLED(PIDTEMPBED) #if ENABLED(PID_AUTOTUNE_MENU) - void BedPID(); + void bedPID(); #endif #if ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU) - void Draw_BedPID_Menu(); + void drawBedPIDMenu(); #endif #endif // MPC #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) - void Draw_HotendMPC_Menu(); + void drawHotendMPCMenu(); #endif #if ENABLED(MPC_AUTOTUNE) - void DWIN_MPCTuning(tempcontrol_t result); + void dwinMPCTuning(tempcontrol_t result); #endif diff --git a/Marlin/src/lcd/e3v2/proui/dwin_defines.h b/Marlin/src/lcd/e3v2/proui/dwin_defines.h index 6f4520e23b..c52d57031c 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_defines.h +++ b/Marlin/src/lcd/e3v2/proui/dwin_defines.h @@ -46,30 +46,30 @@ #define HAS_ZOFFSET_ITEM 1 #endif -#define Def_Background_Color RGB( 1, 12, 8) -#define Def_Cursor_Color RGB(20, 49, 31) -#define Def_TitleBg_Color RGB( 0, 23, 16) -#define Def_TitleTxt_Color Color_White -#define Def_Text_Color Color_White -#define Def_Selected_Color Select_Color -#define Def_SplitLine_Color RGB( 0, 23, 16) -#define Def_Highlight_Color Color_White -#define Def_StatusBg_Color RGB( 0, 23, 16) -#define Def_StatusTxt_Color Color_Yellow -#define Def_PopupBg_Color Color_Bg_Window -#define Def_PopupTxt_Color Popup_Text_Color -#define Def_AlertBg_Color Color_Bg_Red -#define Def_AlertTxt_Color Color_Yellow -#define Def_PercentTxt_Color Percent_Color -#define Def_Barfill_Color BarFill_Color -#define Def_Indicator_Color Color_White -#define Def_Coordinate_Color Color_White -#define Def_Button_Color RGB( 0, 23, 16) +#define defColorBackground RGB( 1, 12, 8) +#define defColorCursor RGB(20, 49, 31) +#define defColorTitleBg RGB( 0, 23, 16) +#define defColorTitleTxt COLOR_WHITE +#define defColorText COLOR_WHITE +#define defColorSelected COLOR_SELECT +#define defColorSplitLine RGB( 0, 23, 16) +#define defColorHighlight COLOR_WHITE +#define defColorStatusBg RGB( 0, 23, 16) +#define defColorStatusTxt COLOR_YELLOW +#define defColorPopupBg COLOR_BG_WINDOW +#define defColorPopupTxt COLOR_POPUP_TEXT +#define defColorAlertBg COLOR_BG_RED +#define defColorAlertTxt COLOR_YELLOW +#define defColorPercentTxt COLOR_PERCENT +#define defColorBarfill COLOR_BARFILL +#define defColorIndicator COLOR_WHITE +#define defColorCoordinate COLOR_WHITE +#define defColorButton RGB( 0, 23, 16) #if ALL(LED_CONTROL_MENU, HAS_COLOR_LEDS) - #define Def_Leds_Color LEDColorWhite() + #define defColorLeds LEDColorWhite() #endif #if ENABLED(CASELIGHT_USES_BRIGHTNESS) - #define Def_CaseLight_Brightness 255 + #define defCaseLightBrightness 255 #endif #ifdef Z_AFTER_HOMING #define DEF_Z_AFTER_HOMING Z_AFTER_HOMING diff --git a/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp b/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp index 180b35e2ec..853da8532e 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp @@ -42,7 +42,7 @@ // QR_Pixel: The pixel size occupied by each point of the QR code: 0x01-0x0F (1-16) // (Nx, Ny): The coordinates of the upper left corner displayed by the QR code // str: multi-bit data -void DWIN_Draw_QR(uint8_t QR_Pixel, uint16_t x, uint16_t y, char *string) { +void dwinDrawQR(uint8_t QR_Pixel, uint16_t x, uint16_t y, char *string) { size_t i = 0; dwinByte(i, 0x21); dwinWord(i, x); @@ -64,7 +64,7 @@ void dwinIconShow(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) { // xStart/yStart: Upper-left of virtual area // xEnd/yEnd: Lower-right of virtual area // x/y: Screen paste point -void DWIN_Frame_AreaCopy(uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y) { +void dwinFrameAreaCopy(uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y) { size_t i = 0; dwinByte(i, 0x26); dwinWord(i, xStart); @@ -84,7 +84,7 @@ void DWIN_Frame_AreaCopy(uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16 // xStart/yStart: Upper-left of virtual area // xEnd/yEnd: Lower-right of virtual area // x/y: Screen paste point -void DWIN_Frame_AreaCopy(bool IBD, bool BIR, bool BFI, uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y) { +void dwinFrameAreaCopy(bool IBD, bool BIR, bool BFI, uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y) { size_t i = 0; dwinByte(i, 0x27); dwinByte(i, (IBD & 1) << 7 | (BIR & 1) << 6 | (BFI & 1) << 5 | cacheID); @@ -102,8 +102,8 @@ void DWIN_Frame_AreaCopy(bool IBD, bool BIR, bool BFI, uint8_t cacheID, uint16_t // xStart/yStart: Upper-left of virtual area // xEnd/yEnd: Lower-right of virtual area // x/y: Screen paste point -void DWIN_Frame_AreaCopy(uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y) { - DWIN_Frame_AreaCopy(false, false, true, cacheID, xStart, yStart, xEnd, yEnd, x, y); +void dwinFrameAreaCopy(uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y) { + dwinFrameAreaCopy(false, false, true, cacheID, xStart, yStart, xEnd, yEnd, x, y); } // Write buffer data to the SRAM or Flash @@ -111,7 +111,7 @@ void DWIN_Frame_AreaCopy(uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint // addr: start address // length: Bytes to write // data: address of the buffer with data -void DWIN_WriteToMem(uint8_t mem, uint16_t addr, uint16_t length, uint8_t *data) { +void dwinWriteToMem(uint8_t mem, uint16_t addr, uint16_t length, uint8_t *data) { const uint8_t max_size = 128; uint16_t pending = length; uint16_t to_send; @@ -156,7 +156,7 @@ void dwinIconShow(uint16_t x, uint16_t y, uint16_t addr) { // Write the contents of the 32KB SRAM data memory into the designated image memory space. // picID: Picture memory space location, 0x00-0x0F, each space is 32Kbytes -void DWIN_SRAMToPic(uint8_t picID) { +void dwinSRAMToPic(uint8_t picID) { size_t i = 0; dwinByte(i, 0x33); dwinByte(i, 0x5A); @@ -167,7 +167,7 @@ void DWIN_SRAMToPic(uint8_t picID) { //--------------------------Test area ------------------------- -//void DWIN_ReadSRAM(uint16_t addr, const uint8_t length, const char * const data) { +//void dwinReadSRAM(uint16_t addr, const uint8_t length, const char * const data) { // size_t i = 0; // dwinByte(i, 0x32); // dwinByte(i, 0x5A); // 0x5A Read from SRAM - 0xA5 Read from Flash diff --git a/Marlin/src/lcd/e3v2/proui/dwin_lcd.h b/Marlin/src/lcd/e3v2/proui/dwin_lcd.h index 8c9c063367..51f4590129 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_lcd.h +++ b/Marlin/src/lcd/e3v2/proui/dwin_lcd.h @@ -35,10 +35,10 @@ // QR_Pixel: The pixel size occupied by each point of the QR code: 0x01-0x0F (1-16) // (Nx, Ny): The coordinates of the upper left corner displayed by the QR code // str: multi-bit data -void DWIN_Draw_QR(uint8_t QR_Pixel, uint16_t x, uint16_t y, char *string); +void dwinDrawQR(uint8_t QR_Pixel, uint16_t x, uint16_t y, char *string); -inline void DWIN_Draw_QR(uint8_t QR_Pixel, uint16_t x, uint16_t y, FSTR_P title) { - DWIN_Draw_QR(QR_Pixel, x, y, (char *)title); +inline void dwinDrawQR(uint8_t QR_Pixel, uint16_t x, uint16_t y, FSTR_P fTitle) { + dwinDrawQR(QR_Pixel, x, y, (char *)fTitle); } // Copy area from virtual display area to current screen @@ -46,13 +46,13 @@ inline void DWIN_Draw_QR(uint8_t QR_Pixel, uint16_t x, uint16_t y, FSTR_P title) // xStart/yStart: Upper-left of virtual area // xEnd/yEnd: Lower-right of virtual area // x/y: Screen paste point -void DWIN_Frame_AreaCopy(uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y); +void dwinFrameAreaCopy(uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y); // Copy area from current virtual display area to current screen // xStart/yStart: Upper-left of virtual area // xEnd/yEnd: Lower-right of virtual area // x/y: Screen paste point -void DWIN_Frame_AreaCopy(uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y); +void dwinFrameAreaCopy(uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y); // Copy area from virtual display area to current screen // IBD: background display: 0=Background filtering is not displayed, 1=Background display \\When setting the background filtering not to display, the background must be pure black @@ -62,14 +62,14 @@ void DWIN_Frame_AreaCopy(uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16 // xStart/yStart: Upper-left of virtual area // xEnd/yEnd: Lower-right of virtual area // x/y: Screen paste point -void DWIN_Frame_AreaCopy(bool IBD, bool BIR, bool BFI, uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y); +void dwinFrameAreaCopy(bool IBD, bool BIR, bool BFI, uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y); // Write buffer data to the SRAM or Flash // mem: 0x5A=32KB SRAM, 0xA5=16KB Flash // addr: start address // length: Bytes to write // data: address of the buffer with data -void DWIN_WriteToMem(uint8_t mem, uint16_t addr, uint16_t length, uint8_t *data); +void dwinWriteToMem(uint8_t mem, uint16_t addr, uint16_t length, uint8_t *data); // Draw an Icon from SRAM // x/y: Upper-left point @@ -78,4 +78,4 @@ void dwinIconShow(uint16_t x, uint16_t y, uint16_t addr); // Write the contents of the 32KB SRAM data memory into the designated image memory space. // picID: Picture memory space location, 0x00-0x0F, each space is 32Kbytes -void DWIN_SRAMToPic(uint8_t picID); +void dwinSRAMToPic(uint8_t picID); diff --git a/Marlin/src/lcd/e3v2/proui/dwin_popup.cpp b/Marlin/src/lcd/e3v2/proui/dwin_popup.cpp index 7b22069c69..91c3ee98e3 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_popup.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin_popup.cpp @@ -43,41 +43,41 @@ popupChangeFunc_t popupChange = nullptr; uint16_t HighlightYPos = 280; -void Draw_Select_Highlight(const bool sel, const uint16_t ypos) { +void drawSelectHighlight(const bool sel, const uint16_t ypos) { HighlightYPos = ypos; hmiFlag.select_flag = sel; - const uint16_t c1 = sel ? HMI_data.Highlight_Color : HMI_data.PopupBg_Color, - c2 = sel ? HMI_data.PopupBg_Color : HMI_data.Highlight_Color; + const uint16_t c1 = sel ? hmiData.colorHighlight : hmiData.colorPopupBg, + c2 = sel ? hmiData.colorPopupBg : hmiData.colorHighlight; dwinDrawRectangle(0, c1, 25, ypos - 1, 126, ypos + 38); dwinDrawRectangle(0, c1, 24, ypos - 2, 127, ypos + 39); dwinDrawRectangle(0, c2, 145, ypos - 1, 246, ypos + 38); dwinDrawRectangle(0, c2, 144, ypos - 2, 247, ypos + 39); } -void DWIN_Popup_Continue(const uint8_t icon, FSTR_P const fmsg1, FSTR_P const fmsg2) { - HMI_SaveProcessID(WaitResponse); - DWIN_Draw_Popup(icon, fmsg1, fmsg2, BTN_Continue); // Button Continue +void dwinPopupContinue(const uint8_t icon, FSTR_P const fmsg1, FSTR_P const fmsg2) { + hmiSaveProcessID(ID_WaitResponse); + dwinDrawPopup(icon, fmsg1, fmsg2, BTN_Continue); // Button Continue dwinUpdateLCD(); } -void DWIN_Popup_ConfirmCancel(const uint8_t icon, FSTR_P const fmsg2) { - DWIN_Draw_Popup(ICON_BLTouch, F("Please confirm"), fmsg2); - DWINUI::Draw_Button(BTN_Confirm, 26, 280); - DWINUI::Draw_Button(BTN_Cancel, 146, 280); - Draw_Select_Highlight(hmiFlag.select_flag); +void dwinPopupConfirmCancel(const uint8_t icon, FSTR_P const fmsg2) { + dwinDrawPopup(ICON_BLTouch, F("Please confirm"), fmsg2); + DWINUI::drawButton(BTN_Confirm, 26, 280); + DWINUI::drawButton(BTN_Cancel, 146, 280); + drawSelectHighlight(hmiFlag.select_flag); dwinUpdateLCD(); } -void Goto_Popup(const popupDrawFunc_t fnDraw, const popupClickFunc_t fnClick/*=nullptr*/, const popupChangeFunc_t fnChange/*=nullptr*/) { +void gotoPopup(const popupDrawFunc_t fnDraw, const popupClickFunc_t fnClick/*=nullptr*/, const popupChangeFunc_t fnChange/*=nullptr*/) { popupDraw = fnDraw; popupClick = fnClick; popupChange = fnChange; - HMI_SaveProcessID(Popup); + hmiSaveProcessID(ID_Popup); hmiFlag.select_flag = false; popupDraw(); } -void HMI_Popup() { +void hmiPopup() { if (!wait_for_user) { if (popupClick) popupClick(); return; @@ -86,7 +86,7 @@ void HMI_Popup() { EncoderState encoder_diffState = get_encoder_state(); if (encoder_diffState == ENCODER_DIFF_CW || encoder_diffState == ENCODER_DIFF_CCW) { const bool change = encoder_diffState != ENCODER_DIFF_CW; - if (popupChange) popupChange(change); else Draw_Select_Highlight(change, HighlightYPos); + if (popupChange) popupChange(change); else drawSelectHighlight(change, HighlightYPos); dwinUpdateLCD(); } } diff --git a/Marlin/src/lcd/e3v2/proui/dwin_popup.h b/Marlin/src/lcd/e3v2/proui/dwin_popup.h index 5009f36b3b..ee8664e874 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_popup.h +++ b/Marlin/src/lcd/e3v2/proui/dwin_popup.h @@ -36,38 +36,38 @@ typedef void (*popupClickFunc_t)(); typedef void (*popupChangeFunc_t)(const bool state); extern popupDrawFunc_t popupDraw; -void Draw_Select_Highlight(const bool sel, const uint16_t ypos); -inline void Draw_Select_Highlight(const bool sel) { Draw_Select_Highlight(sel, 280); }; -void DWIN_Popup_Continue(const uint8_t icon, FSTR_P const fmsg1, FSTR_P const fmsg2); -void DWIN_Popup_ConfirmCancel(const uint8_t icon, FSTR_P const fmsg2); -void Goto_Popup(const popupDrawFunc_t fnDraw, const popupClickFunc_t fnClick=nullptr, const popupChangeFunc_t fnChange=nullptr); -void HMI_Popup(); +void drawSelectHighlight(const bool sel, const uint16_t ypos); +inline void drawSelectHighlight(const bool sel) { drawSelectHighlight(sel, 280); }; +void dwinPopupContinue(const uint8_t icon, FSTR_P const fmsg1, FSTR_P const fmsg2); +void dwinPopupConfirmCancel(const uint8_t icon, FSTR_P const fmsg2); +void gotoPopup(const popupDrawFunc_t fnDraw, const popupClickFunc_t fnClick=nullptr, const popupChangeFunc_t fnChange=nullptr); +void hmiPopup(); -inline void Draw_Popup_Bkgd() { - dwinDrawRectangle(1, HMI_data.PopupBg_Color, 14, 60, 258, 330); - dwinDrawRectangle(0, HMI_data.Highlight_Color, 14, 60, 258, 330); +inline void drawPopupBkgd() { + dwinDrawRectangle(1, hmiData.colorPopupBg, 14, 60, 258, 330); + dwinDrawRectangle(0, hmiData.colorHighlight, 14, 60, 258, 330); } template -void DWIN_Draw_Popup(const uint8_t icon, T amsg1=nullptr, U amsg2=nullptr, uint8_t button=0) { - DWINUI::ClearMainArea(); - Draw_Popup_Bkgd(); - if (icon) DWINUI::Draw_Icon(icon, 101, 105); - if (amsg1) DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 210, amsg1); - if (amsg2) DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 240, amsg2); - if (button) DWINUI::Draw_Button(button, 86, 280); +void dwinDrawPopup(const uint8_t icon, T amsg1=nullptr, U amsg2=nullptr, uint8_t button=0) { + DWINUI::clearMainArea(); + drawPopupBkgd(); + if (icon) DWINUI::drawIcon(icon, 101, 105); + if (amsg1) DWINUI::drawCenteredString(hmiData.colorPopupTxt, 210, amsg1); + if (amsg2) DWINUI::drawCenteredString(hmiData.colorPopupTxt, 240, amsg2); + if (button) DWINUI::drawButton(button, 86, 280); } template -void DWIN_Show_Popup(const uint8_t icon, T amsg1=nullptr, U amsg2=nullptr, uint8_t button=0) { - DWIN_Draw_Popup(icon, amsg1, amsg2, button); +void dwinShowPopup(const uint8_t icon, T amsg1=nullptr, U amsg2=nullptr, uint8_t button=0) { + dwinDrawPopup(icon, amsg1, amsg2, button); dwinUpdateLCD(); } template -void DWIN_Popup_Confirm(const uint8_t icon, T amsg1, U amsg2) { - HMI_SaveProcessID(WaitResponse); - DWIN_Draw_Popup(icon, amsg1, amsg2, BTN_Confirm); // Button Confirm +void dwinPopupConfirm(const uint8_t icon, T amsg1, U amsg2) { + hmiSaveProcessID(ID_WaitResponse); + dwinDrawPopup(icon, amsg1, amsg2, BTN_Confirm); // Button Confirm dwinUpdateLCD(); } diff --git a/Marlin/src/lcd/e3v2/proui/dwinui.cpp b/Marlin/src/lcd/e3v2/proui/dwinui.cpp index 235b30f9fa..72b66fb5b3 100644 --- a/Marlin/src/lcd/e3v2/proui/dwinui.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwinui.cpp @@ -35,26 +35,26 @@ #include "dwinui.h" xy_int_t DWINUI::cursor = { 0 }; -uint16_t DWINUI::pencolor = Color_White; -uint16_t DWINUI::textcolor = Def_Text_Color; -uint16_t DWINUI::backcolor = Def_Background_Color; -uint16_t DWINUI::buttoncolor = Def_Button_Color; -uint8_t DWINUI::fontid = font8x16; -FSTR_P const DWINUI::Author = F(STRING_CONFIG_H_AUTHOR); +uint16_t DWINUI::penColor = COLOR_WHITE; +uint16_t DWINUI::textColor = defColorText; +uint16_t DWINUI::backColor = defColorBackground; +uint16_t DWINUI::buttonColor = defColorButton; +uint8_t DWINUI::fontID = font8x16; +FSTR_P const DWINUI::author = F(STRING_CONFIG_H_AUTHOR); -void (*DWINUI::onTitleDraw)(TitleClass* title) = nullptr; +void (*DWINUI::onTitleDraw)(Title* t) = nullptr; void DWINUI::init() { cursor.reset(); - pencolor = Color_White; - textcolor = Def_Text_Color; - backcolor = Def_Background_Color; - buttoncolor = Def_Button_Color; - fontid = font8x16; + penColor = COLOR_WHITE; + textColor = defColorText; + backColor = defColorBackground; + buttonColor = defColorButton; + fontID = font8x16; } // Set text/number font -void DWINUI::setFont(fontid_t fid) { fontid = fid; } +void DWINUI::setFont(fontid_t fid) { fontID = fid; } // Get font character width uint8_t DWINUI::fontWidth(fontid_t fid) { @@ -95,33 +95,33 @@ uint8_t DWINUI::fontHeight(fontid_t fid) { } // Get screen x coordinates from text column -uint16_t DWINUI::ColToX(uint8_t col) { return col * fontWidth(fontid); } +uint16_t DWINUI::colToX(uint8_t col) { return col * fontWidth(fontID); } // Get screen y coordinates from text row -uint16_t DWINUI::RowToY(uint8_t row) { return row * fontHeight(fontid); } +uint16_t DWINUI::rowToY(uint8_t row) { return row * fontHeight(fontID); } // Set text/number color -void DWINUI::SetColors(uint16_t fgcolor, uint16_t bgcolor, uint16_t alcolor) { - textcolor = fgcolor; - backcolor = bgcolor; - buttoncolor = alcolor; +void DWINUI::setColors(uint16_t fgcolor, uint16_t bgcolor, uint16_t alcolor) { + textColor = fgcolor; + backColor = bgcolor; + buttonColor = alcolor; } -void DWINUI::SetTextColor(uint16_t fgcolor) { - textcolor = fgcolor; +void DWINUI::setTextColor(uint16_t fgcolor) { + textColor = fgcolor; } -void DWINUI::SetBackgroundColor(uint16_t bgcolor) { - backcolor = bgcolor; +void DWINUI::setBackgroundColor(uint16_t bgcolor) { + backColor = bgcolor; } // Moves cursor to point // x: abscissa of the display // y: ordinate of the display // point: xy coordinate -void DWINUI::MoveTo(int16_t x, int16_t y) { +void DWINUI::moveTo(int16_t x, int16_t y) { cursor.x = x; cursor.y = y; } -void DWINUI::MoveTo(xy_int_t point) { +void DWINUI::moveTo(xy_int_t point) { cursor = point; } @@ -129,16 +129,16 @@ void DWINUI::MoveTo(xy_int_t point) { // x: abscissa of the display // y: ordinate of the display // point: xy coordinate -void DWINUI::MoveBy(int16_t x, int16_t y) { +void DWINUI::moveBy(int16_t x, int16_t y) { cursor.x += x; cursor.y += y; } -void DWINUI::MoveBy(xy_int_t point) { +void DWINUI::moveBy(xy_int_t point) { cursor += point; } // Draw a Centered string using arbitrary x1 and x2 margins -void DWINUI::Draw_CenteredString(bool bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint16_t x1, uint16_t x2, uint16_t y, const char * const string) { +void DWINUI::drawCenteredString(bool bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint16_t x1, uint16_t x2, uint16_t y, const char * const string) { const uint16_t x = _MAX(0U, x2 + x1 - strlen_P(string) * fontWidth(fid)) / 2 - 1; dwinDrawString(bShow, fid, color, bColor, x, y, string); } @@ -148,28 +148,28 @@ void DWINUI::Draw_CenteredString(bool bShow, fontid_t fid, uint16_t color, uint1 // x: abscissa of the display // y: ordinate of the display // c: ASCII code of char -void DWINUI::Draw_Char(uint16_t color, uint16_t x, uint16_t y, const char c) { +void DWINUI::drawChar(uint16_t color, uint16_t x, uint16_t y, const char c) { const char string[2] = { c, 0}; - dwinDrawString(false, fontid, color, backcolor, x, y, string, 1); + dwinDrawString(false, fontID, color, backColor, x, y, string, 1); } // Draw a char at cursor position and increment cursor -void DWINUI::Draw_Char(uint16_t color, const char c) { - Draw_Char(color, cursor.x, cursor.y, c); - MoveBy(fontWidth(fontid), 0); +void DWINUI::drawChar(uint16_t color, const char c) { + drawChar(color, cursor.x, cursor.y, c); + moveBy(fontWidth(fontID), 0); } // Draw a string at cursor position // color: Character color // *string: The string // rlimit: For draw less chars than string length use rlimit -void DWINUI::Draw_String(const char * const string, uint16_t rlimit) { - dwinDrawString(false, fontid, textcolor, backcolor, cursor.x, cursor.y, string, rlimit); - MoveBy(strlen(string) * fontWidth(fontid), 0); +void DWINUI::drawString(const char * const string, uint16_t rlimit) { + dwinDrawString(false, fontID, textColor, backColor, cursor.x, cursor.y, string, rlimit); + moveBy(strlen(string) * fontWidth(fontID), 0); } -void DWINUI::Draw_String(uint16_t color, const char * const string, uint16_t rlimit) { - dwinDrawString(false, fontid, color, backcolor, cursor.x, cursor.y, string, rlimit); - MoveBy(strlen(string) * fontWidth(fontid), 0); +void DWINUI::drawString(uint16_t color, const char * const string, uint16_t rlimit) { + dwinDrawString(false, fontID, color, backColor, cursor.x, cursor.y, string, rlimit); + moveBy(strlen(string) * fontWidth(fontID), 0); } // Draw a numeric integer value @@ -181,7 +181,7 @@ void DWINUI::Draw_String(uint16_t color, const char * const string, uint16_t rli // iNum: Number of digits // x/y: Upper-left coordinate // value: Integer value -void DWINUI::Draw_Int(uint8_t bShow, bool signedMode, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, int32_t value) { +void DWINUI::drawInt(uint8_t bShow, bool signedMode, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, int32_t value) { char nstr[10]; sprintf_P(nstr, PSTR("%*li"), (signedMode ? iNum + 1 : iNum), value); dwinDrawString(bShow, fid, color, bColor, x, y, nstr); @@ -197,7 +197,7 @@ void DWINUI::Draw_Int(uint8_t bShow, bool signedMode, fontid_t fid, uint16_t col // fNum: Number of decimal digits // x/y: Upper-left coordinate // value: float value -void DWINUI::Draw_Float(uint8_t bShow, bool signedMode, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { +void DWINUI::drawFloat(uint8_t bShow, bool signedMode, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { char nstr[10]; dwinDrawString(bShow, fid, color, bColor, x, y, dtostrf(value, iNum + (signedMode ? 2:1) + fNum, fNum, nstr)); } @@ -217,19 +217,19 @@ void DWINUI::ICON_Show(bool BG, uint8_t icon, uint16_t x, uint16_t y) { // ------------------------- Buttons ------------------------------// -void DWINUI::Draw_Button(uint16_t color, uint16_t bcolor, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, const char * const caption) { +void DWINUI::drawButton(uint16_t color, uint16_t bcolor, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, const char * const caption) { dwinDrawRectangle(1, bcolor, x1, y1, x2, y2); - Draw_CenteredString(0, fontid, color, bcolor, x1, x2, (y2 + y1 - fontHeight())/2, caption); + drawCenteredString(0, fontID, color, bcolor, x1, x2, (y2 + y1 - fontHeight())/2, caption); } -void DWINUI::Draw_Button(uint8_t id, uint16_t x, uint16_t y) { +void DWINUI::drawButton(uint8_t id, uint16_t x, uint16_t y) { switch (id) { - case BTN_Cancel : Draw_Button(GET_TEXT_F(MSG_BUTTON_CANCEL), x, y); break; - case BTN_Confirm : Draw_Button(GET_TEXT_F(MSG_BUTTON_CONFIRM), x, y); break; - case BTN_Continue: Draw_Button(GET_TEXT_F(MSG_BUTTON_CONTINUE), x, y); break; - case BTN_Print : Draw_Button(GET_TEXT_F(MSG_BUTTON_PRINT), x, y); break; - case BTN_Save : Draw_Button(GET_TEXT_F(MSG_BUTTON_SAVE), x, y); break; - case BTN_Purge : Draw_Button(GET_TEXT_F(MSG_BUTTON_PURGE), x, y); break; + case BTN_Cancel : drawButton(GET_TEXT_F(MSG_BUTTON_CANCEL), x, y); break; + case BTN_Confirm : drawButton(GET_TEXT_F(MSG_BUTTON_CONFIRM), x, y); break; + case BTN_Continue: drawButton(GET_TEXT_F(MSG_BUTTON_CONTINUE), x, y); break; + case BTN_Print : drawButton(GET_TEXT_F(MSG_BUTTON_PRINT), x, y); break; + case BTN_Save : drawButton(GET_TEXT_F(MSG_BUTTON_SAVE), x, y); break; + case BTN_Purge : drawButton(GET_TEXT_F(MSG_BUTTON_PURGE), x, y); break; default: break; } } @@ -241,7 +241,7 @@ void DWINUI::Draw_Button(uint8_t id, uint16_t x, uint16_t y) { // x: the abscissa of the center of the circle // y: ordinate of the center of the circle // r: circle radius -void DWINUI::Draw_Circle(uint16_t color, uint16_t x, uint16_t y, uint8_t r) { +void DWINUI::drawCircle(uint16_t color, uint16_t x, uint16_t y, uint8_t r) { int a = 0, b = 0; while (a <= b) { b = SQRT(sq(r) - sq(a)); @@ -263,7 +263,7 @@ void DWINUI::Draw_Circle(uint16_t color, uint16_t x, uint16_t y, uint8_t r) { // x: the abscissa of the center of the circle // y: ordinate of the center of the circle // r: circle radius -void DWINUI::Draw_FillCircle(uint16_t bcolor, uint16_t x,uint16_t y,uint8_t r) { +void DWINUI::drawFillCircle(uint16_t bcolor, uint16_t x,uint16_t y,uint8_t r) { dwinDrawLine(bcolor, x - r, y, x + r, y); uint16_t b = 1; while (b <= r) { @@ -322,54 +322,54 @@ uint16_t DWINUI::RainbowInt(int16_t val, int16_t minv, int16_t maxv) { // bColor: Background color // x/y: Upper-left point // mode : 0 : unchecked, 1 : checked -void DWINUI::Draw_Checkbox(uint16_t color, uint16_t bcolor, uint16_t x, uint16_t y, bool checked=false) { +void DWINUI::drawCheckbox(uint16_t color, uint16_t bcolor, uint16_t x, uint16_t y, bool checked=false) { dwinDrawRectangle(0, color, x + 2, y + 2, x + 17, y + 17); dwinDrawRectangle(1, checked ? color : bcolor, x + 6, y + 6, x + 13, y + 13); } // Clear Menu by filling the menu area with background color -void DWINUI::ClearMainArea() { - dwinDrawRectangle(1, backcolor, 0, TITLE_HEIGHT, DWIN_WIDTH - 1, STATUS_Y - 1); +void DWINUI::clearMainArea() { + dwinDrawRectangle(1, backColor, 0, TITLE_HEIGHT, DWIN_WIDTH - 1, STATUS_Y - 1); } /* Title Class ==============================================================*/ -TitleClass Title; +Title title; -void TitleClass::draw() { +void Title::draw() { if (DWINUI::onTitleDraw != nullptr) (*DWINUI::onTitleDraw)(this); } -void TitleClass::SetCaption(const char * const title) { +void Title::setCaption(const char * const titleStr) { frameid = 0; - if ( caption == title ) return; - const uint8_t len = _MIN(sizeof(caption) - 1, strlen(title)); - memcpy(&caption[0], title, len); + if ( caption == titleStr ) return; + const uint8_t len = _MIN(sizeof(caption) - 1, strlen(titleStr)); + memcpy(&caption[0], titleStr, len); caption[len] = '\0'; } -void TitleClass::ShowCaption(const char * const title) { - SetCaption(title); +void Title::showCaption(const char * const titleStr) { + setCaption(titleStr); draw(); } -void TitleClass::SetFrame(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { +void Title::setFrame(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { caption[0] = '\0'; frameid = id; frame = { x1, y1, x2, y2 }; } -void TitleClass::SetFrame(uint16_t x, uint16_t y, uint16_t w, uint16_t h) { - SetFrame(1, x, y, x + w - 1, y + h - 1); +void Title::setFrame(uint16_t x, uint16_t y, uint16_t w, uint16_t h) { + setFrame(1, x, y, x + w - 1, y + h - 1); } -void TitleClass::FrameCopy(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { - SetFrame(id, x1, y1, x2, y2); +void Title::frameCopy(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { + setFrame(id, x1, y1, x2, y2); draw(); } -void TitleClass::FrameCopy(uint16_t x, uint16_t y, uint16_t w, uint16_t h) { - FrameCopy(1, x, y, x + w - 1, y + h - 1); +void Title::frameCopy(uint16_t x, uint16_t y, uint16_t w, uint16_t h) { + frameCopy(1, x, y, x + w - 1, y + h - 1); } #endif // DWIN_LCD_PROUI diff --git a/Marlin/src/lcd/e3v2/proui/dwinui.h b/Marlin/src/lcd/e3v2/proui/dwinui.h index 06daece9d0..9f8ab70e71 100644 --- a/Marlin/src/lcd/e3v2/proui/dwinui.h +++ b/Marlin/src/lcd/e3v2/proui/dwinui.h @@ -46,7 +46,7 @@ #define ICON_Cancel ICON_StockConfiguration #define ICON_CustomPreheat ICON_SetEndTemp #define ICON_Error ICON_TempTooHigh -#define ICON_ESDiag ICON_Info +#define ICON_esDiag ICON_Info #define ICON_ExtrudeMinT ICON_HotendTemp #define ICON_FilLoad ICON_WriteEEPROM #define ICON_FilMan ICON_ResumeEEPROM @@ -170,24 +170,24 @@ #define BTN_Purge 92 // Extended and default UI Colors -#define Color_Black 0 -#define Color_Green RGB(0,63,0) -#define Color_Aqua RGB(0,63,31) -#define Color_Blue RGB(0,0,31) -#define Color_Light_White 0xBDD7 -#define Color_Light_Green 0x3460 -#define Color_Cyan 0x07FF -#define Color_Light_Cyan 0x04F3 -#define Color_Light_Blue 0x3A6A -#define Color_Magenta 0xF81F -#define Color_Light_Magenta 0x9813 -#define Color_Light_Red 0x8800 -#define Color_Orange 0xFA20 -#define Color_Light_Orange 0xFBC0 -#define Color_Light_Yellow 0x8BE0 -#define Color_Brown 0xCC27 -#define Color_Light_Brown 0x6204 -#define Color_Grey 0x18E3 +#define COLOR_BLACK 0 +#define COLOR_GREEN RGB(0,63,0) +#define COLOR_AQUA RGB(0,63,31) +#define COLOR_BLUE RGB(0,0,31) +#define COLOR_LIGHT_WHITE 0xBDD7 +#define COLOR_LIGHT_GREEN 0x3460 +#define COLOR_CYAN 0x07FF +#define COLOR_LIGHT_CYAN 0x04F3 +#define COLOR_LIGHT_BLUE 0x3A6A +#define COLOR_MAGENTA 0xF81F +#define COLOR_LIGHT_MAGENTA 0x9813 +#define COLOR_LIGHT_RED 0x8800 +#define COLOR_ORANGE 0xFA20 +#define COLOR_LIGHT_ORANGE 0xFBC0 +#define COLOR_LIGHT_YELLOW 0x8BE0 +#define COLOR_BROWN 0xCC27 +#define COLOR_LIGHT_BROWN 0x6204 +#define COLOR_GREY 0x18E3 // UI element defines and constants #define DWIN_FONT_MENU font8x16 @@ -195,7 +195,7 @@ #define DWIN_FONT_HEAD font10x20 #define DWIN_FONT_ALERT font10x20 #define STATUS_Y 354 -#define LCD_WIDTH (DWIN_WIDTH / 8) // only if the default fontid is font8x16 +#define LCD_WIDTH (DWIN_WIDTH / 8) // only if the default fontID is font8x16 // Minimum unit (0.1) : multiple (10) #define UNITFDIGITS 1 @@ -223,33 +223,33 @@ constexpr uint8_t TITLE_HEIGHT = 30, // Title bar heig typedef struct { uint16_t left, top, right, bottom; } rect_t; typedef struct { uint16_t x, y, w, h; } frame_rect_t; -class TitleClass { +class Title { public: char caption[32] = ""; uint8_t frameid = 0; rect_t frame = {0}; void draw(); - void SetCaption(const char * const title); - inline void SetCaption(FSTR_P title) { SetCaption((char *)title); } - void ShowCaption(const char * const title); - inline void ShowCaption(FSTR_P title) { ShowCaption((char *)title); } - void SetFrame(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2); - void SetFrame(uint16_t x, uint16_t y, uint16_t w, uint16_t h); - void FrameCopy(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2); - void FrameCopy(uint16_t x, uint16_t y, uint16_t h, uint16_t v); + void setCaption(const char * const titleStr); + inline void setCaption(FSTR_P fTitle) { setCaption((char *)fTitle); } + void showCaption(const char * const titleStr); + inline void showCaption(FSTR_P fTitle) { showCaption((char *)fTitle); } + void setFrame(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2); + void setFrame(uint16_t x, uint16_t y, uint16_t w, uint16_t h); + void frameCopy(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2); + void frameCopy(uint16_t x, uint16_t y, uint16_t h, uint16_t v); }; -extern TitleClass Title; +extern Title title; namespace DWINUI { extern xy_int_t cursor; - extern uint16_t pencolor; - extern uint16_t textcolor; - extern uint16_t backcolor; - extern uint16_t buttoncolor; - extern fontid_t fontid; - extern FSTR_P const Author; + extern uint16_t penColor; + extern uint16_t textColor; + extern uint16_t backColor; + extern uint16_t buttonColor; + extern fontid_t fontID; + extern FSTR_P const author; - extern void (*onTitleDraw)(TitleClass* title); + extern void (*onTitleDraw)(Title* t); // DWIN LCD Initialization void init(); @@ -259,50 +259,50 @@ namespace DWINUI { // Get font character width uint8_t fontWidth(fontid_t cfont); - inline uint8_t fontWidth() { return fontWidth(fontid); }; + inline uint8_t fontWidth() { return fontWidth(fontID); }; // Get font character height uint8_t fontHeight(fontid_t cfont); - inline uint8_t fontHeight() { return fontHeight(fontid); }; + inline uint8_t fontHeight() { return fontHeight(fontID); }; // Get screen x coordinates from text column - uint16_t ColToX(uint8_t col); + uint16_t colToX(uint8_t col); // Get screen y coordinates from text row - uint16_t RowToY(uint8_t row); + uint16_t rowToY(uint8_t row); // Set text/number color - void SetColors(uint16_t fgcolor, uint16_t bgcolor, uint16_t alcolor); - void SetTextColor(uint16_t fgcolor); - void SetBackgroundColor(uint16_t bgcolor); + void setColors(uint16_t fgcolor, uint16_t bgcolor, uint16_t alcolor); + void setTextColor(uint16_t fgcolor); + void setBackgroundColor(uint16_t bgcolor); // Moves cursor to point // x: abscissa of the display // y: ordinate of the display // point: xy coordinate - void MoveTo(int16_t x, int16_t y); - void MoveTo(xy_int_t point); + void moveTo(int16_t x, int16_t y); + void moveTo(xy_int_t point); // Moves cursor relative to the actual position // x: abscissa of the display // y: ordinate of the display // point: xy coordinate - void MoveBy(int16_t x, int16_t y); - void MoveBy(xy_int_t point); + void moveBy(int16_t x, int16_t y); + void moveBy(xy_int_t point); // Draw a line from the cursor to xy position // color: Line segment color // x/y: End point - inline void LineTo(uint16_t color, uint16_t x, uint16_t y) { + inline void lineTo(uint16_t color, uint16_t x, uint16_t y) { dwinDrawLine(color, cursor.x, cursor.y, x, y); } - inline void LineTo(uint16_t x, uint16_t y) { - dwinDrawLine(pencolor, cursor.x, cursor.y, x, y); + inline void lineTo(uint16_t x, uint16_t y) { + dwinDrawLine(penColor, cursor.x, cursor.y, x, y); } // Extend a frame box // v: value to extend - inline frame_rect_t ExtendFrame(frame_rect_t frame, uint8_t v) { + inline frame_rect_t extendFrame(frame_rect_t frame, uint8_t v) { frame_rect_t t; t.x = frame.x - v; t.y = frame.y - v; @@ -321,14 +321,14 @@ namespace DWINUI { // Draw an Icon with transparent background from the library ICON // icon: Icon ID // x/y: Upper-left point - inline void Draw_Icon(uint8_t icon, uint16_t x, uint16_t y) { + inline void drawIcon(uint8_t icon, uint16_t x, uint16_t y) { ICON_Show(false, icon, x, y); } // Draw an Icon from the library ICON with its background // icon: Icon ID // x/y: Upper-left point - inline void Draw_IconWB(uint8_t icon, uint16_t x, uint16_t y) { + inline void drawIconWB(uint8_t icon, uint16_t x, uint16_t y) { ICON_Show(true, icon, x, y); } @@ -341,48 +341,48 @@ namespace DWINUI { // iNum: Number of digits // x/y: Upper-left coordinate // value: Integer value - void Draw_Int(uint8_t bShow, bool signedMode, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, int32_t value); + void drawInt(uint8_t bShow, bool signedMode, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, int32_t value); // Draw a positive integer - inline void Draw_Int(uint8_t bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) { - Draw_Int(bShow, 0, fid, color, bColor, iNum, x, y, value); + inline void drawInt(uint8_t bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) { + drawInt(bShow, 0, fid, color, bColor, iNum, x, y, value); } - inline void Draw_Int(uint8_t iNum, long value) { - Draw_Int(false, 0, fontid, textcolor, backcolor, iNum, cursor.x, cursor.y, value); - MoveBy(iNum * fontWidth(fontid), 0); + inline void drawInt(uint8_t iNum, long value) { + drawInt(false, 0, fontID, textColor, backColor, iNum, cursor.x, cursor.y, value); + moveBy(iNum * fontWidth(fontID), 0); } - inline void Draw_Int(uint8_t iNum, uint16_t x, uint16_t y, long value) { - Draw_Int(false, 0, fontid, textcolor, backcolor, iNum, x, y, value); + inline void drawInt(uint8_t iNum, uint16_t x, uint16_t y, long value) { + drawInt(false, 0, fontID, textColor, backColor, iNum, x, y, value); } - inline void Draw_Int(uint16_t color, uint8_t iNum, uint16_t x, uint16_t y, long value) { - Draw_Int(false, 0, fontid, color, backcolor, iNum, x, y, value); + inline void drawInt(uint16_t color, uint8_t iNum, uint16_t x, uint16_t y, long value) { + drawInt(false, 0, fontID, color, backColor, iNum, x, y, value); } - inline void Draw_Int(uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) { - Draw_Int(true, 0, fontid, color, bColor, iNum, x, y, value); + inline void drawInt(uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) { + drawInt(true, 0, fontID, color, bColor, iNum, x, y, value); } - inline void Draw_Int(fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) { - Draw_Int(true, 0, fid, color, bColor, iNum, x, y, value); + inline void drawInt(fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) { + drawInt(true, 0, fid, color, bColor, iNum, x, y, value); } // Draw a signed integer - inline void Draw_Signed_Int(uint8_t bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) { - Draw_Int(bShow, 1, fid, color, bColor, iNum, x, y, value); + inline void drawSignedInt(uint8_t bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) { + drawInt(bShow, 1, fid, color, bColor, iNum, x, y, value); } - inline void Draw_Signed_Int(uint8_t iNum, long value) { - Draw_Int(false, 1, fontid, textcolor, backcolor, iNum, cursor.x, cursor.y, value); - MoveBy(iNum * fontWidth(fontid), 0); + inline void drawSignedInt(uint8_t iNum, long value) { + drawInt(false, 1, fontID, textColor, backColor, iNum, cursor.x, cursor.y, value); + moveBy(iNum * fontWidth(fontID), 0); } - inline void Draw_Signed_Int(uint8_t iNum, uint16_t x, uint16_t y, long value) { - Draw_Int(false, 1, fontid, textcolor, backcolor, iNum, x, y, value); + inline void drawSignedInt(uint8_t iNum, uint16_t x, uint16_t y, long value) { + drawInt(false, 1, fontID, textColor, backColor, iNum, x, y, value); } - inline void Draw_Signed_Int(uint16_t color, uint8_t iNum, uint16_t x, uint16_t y, long value) { - Draw_Int(false, 1, fontid, color, backcolor, iNum, x, y, value); + inline void drawSignedInt(uint16_t color, uint8_t iNum, uint16_t x, uint16_t y, long value) { + drawInt(false, 1, fontID, color, backColor, iNum, x, y, value); } - inline void Draw_Signed_Int(uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) { - Draw_Int(true, 1, fontid, color, bColor, iNum, x, y, value); + inline void drawSignedInt(uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) { + drawInt(true, 1, fontID, color, bColor, iNum, x, y, value); } - inline void Draw_Signed_Int(fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) { - Draw_Int(true, 1, fid, color, bColor, iNum, x, y, value); + inline void drawSignedInt(fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) { + drawInt(true, 1, fid, color, bColor, iNum, x, y, value); } // Draw a numeric float value @@ -395,48 +395,48 @@ namespace DWINUI { // fNum: Number of decimal digits // x/y: Upper-left coordinate // value: float value - void Draw_Float(uint8_t bShow, bool signedMode, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value); + void drawFloat(uint8_t bShow, bool signedMode, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value); // Draw a positive floating point number - inline void Draw_Float(uint8_t bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { - Draw_Float(bShow, 0, fid, color, bColor, iNum, fNum, x, y, value); + inline void drawFloat(uint8_t bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { + drawFloat(bShow, 0, fid, color, bColor, iNum, fNum, x, y, value); } - inline void Draw_Float(uint8_t iNum, uint8_t fNum, float value) { - Draw_Float(false, 0, fontid, textcolor, backcolor, iNum, fNum, cursor.x, cursor.y, value); - MoveBy((iNum + fNum + 1) * fontWidth(fontid), 0); + inline void drawFloat(uint8_t iNum, uint8_t fNum, float value) { + drawFloat(false, 0, fontID, textColor, backColor, iNum, fNum, cursor.x, cursor.y, value); + moveBy((iNum + fNum + 1) * fontWidth(fontID), 0); } - inline void Draw_Float(uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { - Draw_Float(false, 0, fontid, textcolor, backcolor, iNum, fNum, x, y, value); + inline void drawFloat(uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { + drawFloat(false, 0, fontID, textColor, backColor, iNum, fNum, x, y, value); } - inline void Draw_Float(fontid_t fid, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { - Draw_Float(false, 0, fid, textcolor, backcolor, iNum, fNum, x, y, value); + inline void drawFloat(fontid_t fid, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { + drawFloat(false, 0, fid, textColor, backColor, iNum, fNum, x, y, value); } - inline void Draw_Float(uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { - Draw_Float(true, 0, fontid, color, bColor, iNum, fNum, x, y, value); + inline void drawFloat(uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { + drawFloat(true, 0, fontID, color, bColor, iNum, fNum, x, y, value); } - inline void Draw_Float(fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { - Draw_Float(true, 0, fid, color, bColor, iNum, fNum, x, y, value); + inline void drawFloat(fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { + drawFloat(true, 0, fid, color, bColor, iNum, fNum, x, y, value); } // Draw a signed floating point number - inline void Draw_Signed_Float(uint8_t bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { - Draw_Float(bShow, 1, fid, color, bColor, iNum, fNum, x, y, value); + inline void drawSignedFloat(uint8_t bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { + drawFloat(bShow, 1, fid, color, bColor, iNum, fNum, x, y, value); } - inline void Draw_Signed_Float(uint8_t iNum, uint8_t fNum, float value) { - Draw_Float(false, 1, fontid, textcolor, backcolor, iNum, fNum, cursor.x, cursor.y, value); - MoveBy((iNum + fNum + 1) * fontWidth(fontid), 0); + inline void drawSignedFloat(uint8_t iNum, uint8_t fNum, float value) { + drawFloat(false, 1, fontID, textColor, backColor, iNum, fNum, cursor.x, cursor.y, value); + moveBy((iNum + fNum + 1) * fontWidth(fontID), 0); } - inline void Draw_Signed_Float(uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { - Draw_Float(false, 1, fontid, textcolor, backcolor, iNum, fNum, x, y, value); + inline void drawSignedFloat(uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { + drawFloat(false, 1, fontID, textColor, backColor, iNum, fNum, x, y, value); } - inline void Draw_Signed_Float(fontid_t fid, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { - Draw_Float(false, 1, fid, textcolor, backcolor, iNum, fNum, x, y, value); + inline void drawSignedFloat(fontid_t fid, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { + drawFloat(false, 1, fid, textColor, backColor, iNum, fNum, x, y, value); } - inline void Draw_Signed_Float(uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { - Draw_Float(true, 1, fontid, color, bColor, iNum, fNum, x, y, value); + inline void drawSignedFloat(uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { + drawFloat(true, 1, fontID, color, bColor, iNum, fNum, x, y, value); } - inline void Draw_Signed_Float(fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { - Draw_Float(true, 1, fid, color, bColor, iNum, fNum, x, y, value); + inline void drawSignedFloat(fontid_t fid, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) { + drawFloat(true, 1, fid, color, bColor, iNum, fNum, x, y, value); } // Draw a char @@ -444,23 +444,23 @@ namespace DWINUI { // x: abscissa of the display // y: ordinate of the display // c: ASCII code of char - void Draw_Char(uint16_t color, uint16_t x, uint16_t y, const char c); - inline void Draw_Char(uint16_t x, uint16_t y, const char c) { Draw_Char(textcolor, x, y, c); }; + void drawChar(uint16_t color, uint16_t x, uint16_t y, const char c); + inline void drawChar(uint16_t x, uint16_t y, const char c) { drawChar(textColor, x, y, c); }; // Draw a char at cursor position and increment cursor - void Draw_Char(uint16_t color, const char c); - inline void Draw_Char(const char c) { Draw_Char(textcolor, c); } + void drawChar(uint16_t color, const char c); + inline void drawChar(const char c) { drawChar(textColor, c); } // Draw a string at cursor position // color: Character color // *string: The string // rlimit: For draw less chars than string length use rlimit - void Draw_String(const char * const string, uint16_t rlimit = 0xFFFF); - void Draw_String(uint16_t color, const char * const string, uint16_t rlimit = 0xFFFF); - inline void Draw_String(FSTR_P string, uint16_t rlimit = 0xFFFF) { - Draw_String(FTOP(string), rlimit); + void drawString(const char * const string, uint16_t rlimit = 0xFFFF); + void drawString(uint16_t color, const char * const string, uint16_t rlimit = 0xFFFF); + inline void drawString(FSTR_P string, uint16_t rlimit = 0xFFFF) { + drawString(FTOP(string), rlimit); } - inline void Draw_String(uint16_t color, FSTR_P string, uint16_t rlimit = 0xFFFF) { - Draw_String(color, FTOP(string), rlimit); + inline void drawString(uint16_t color, FSTR_P string, uint16_t rlimit = 0xFFFF) { + drawString(color, FTOP(string), rlimit); } // Draw a string @@ -469,29 +469,29 @@ namespace DWINUI { // bColor: Background color // x/y: Upper-left coordinate of the string // *string: The string - inline void Draw_String(uint16_t x, uint16_t y, const char * const string) { - dwinDrawString(false, fontid, textcolor, backcolor, x, y, string); + inline void drawString(uint16_t x, uint16_t y, const char * const string) { + dwinDrawString(false, fontID, textColor, backColor, x, y, string); } - inline void Draw_String(uint16_t x, uint16_t y, FSTR_P title) { - dwinDrawString(false, fontid, textcolor, backcolor, x, y, FTOP(title)); + inline void drawString(uint16_t x, uint16_t y, FSTR_P fTitle) { + dwinDrawString(false, fontID, textColor, backColor, x, y, FTOP(fTitle)); } - inline void Draw_String(uint16_t color, uint16_t x, uint16_t y, const char * const string) { - dwinDrawString(false, fontid, color, backcolor, x, y, string); + inline void drawString(uint16_t color, uint16_t x, uint16_t y, const char * const string) { + dwinDrawString(false, fontID, color, backColor, x, y, string); } - inline void Draw_String(uint16_t color, uint16_t x, uint16_t y, FSTR_P title) { - dwinDrawString(false, fontid, color, backcolor, x, y, title); + inline void drawString(uint16_t color, uint16_t x, uint16_t y, FSTR_P fTitle) { + dwinDrawString(false, fontID, color, backColor, x, y, fTitle); } - inline void Draw_String(uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, const char * const string) { - dwinDrawString(true, fontid, color, bgcolor, x, y, string); + inline void drawString(uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, const char * const string) { + dwinDrawString(true, fontID, color, bgcolor, x, y, string); } - inline void Draw_String(uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, FSTR_P title) { - dwinDrawString(true, fontid, color, bgcolor, x, y, title); + inline void drawString(uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, FSTR_P fTitle) { + dwinDrawString(true, fontID, color, bgcolor, x, y, fTitle); } - inline void Draw_String(fontid_t fid, uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, const char * const string) { + inline void drawString(fontid_t fid, uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, const char * const string) { dwinDrawString(true, fid, color, bgcolor, x, y, string); } - inline void Draw_String(fontid_t fid, uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, FSTR_P title) { - dwinDrawString(true, fid, color, bgcolor, x, y, title); + inline void drawString(fontid_t fid, uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, FSTR_P fTitle) { + dwinDrawString(true, fid, color, bgcolor, x, y, fTitle); } // Draw a centered string using DWIN_WIDTH @@ -501,40 +501,40 @@ namespace DWINUI { // bColor: Background color // y: Upper coordinate of the string // *string: The string - void Draw_CenteredString(bool bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint16_t x1, uint16_t x2, uint16_t y, const char * const string); - inline void Draw_CenteredString(bool bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint16_t y, const char * const string) { - Draw_CenteredString(bShow, fid, color, bColor, 0, DWIN_WIDTH, y, string); + void drawCenteredString(bool bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint16_t x1, uint16_t x2, uint16_t y, const char * const string); + inline void drawCenteredString(bool bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint16_t y, const char * const string) { + drawCenteredString(bShow, fid, color, bColor, 0, DWIN_WIDTH, y, string); } - inline void Draw_CenteredString(bool bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint16_t y, FSTR_P string) { - Draw_CenteredString(bShow, fid, color, bColor, y, FTOP(string)); + inline void drawCenteredString(bool bShow, fontid_t fid, uint16_t color, uint16_t bColor, uint16_t y, FSTR_P string) { + drawCenteredString(bShow, fid, color, bColor, y, FTOP(string)); } - inline void Draw_CenteredString(uint16_t color, uint16_t bcolor, uint16_t y, const char * const string) { - Draw_CenteredString(true, fontid, color, bcolor, y, string); + inline void drawCenteredString(uint16_t color, uint16_t bcolor, uint16_t y, const char * const string) { + drawCenteredString(true, fontID, color, bcolor, y, string); } - inline void Draw_CenteredString(fontid_t fid, uint16_t color, uint16_t y, const char * const string) { - Draw_CenteredString(false, fid, color, backcolor, y, string); + inline void drawCenteredString(fontid_t fid, uint16_t color, uint16_t y, const char * const string) { + drawCenteredString(false, fid, color, backColor, y, string); } - inline void Draw_CenteredString(fontid_t fid, uint16_t color, uint16_t y, FSTR_P title) { - Draw_CenteredString(false, fid, color, backcolor, y, title); + inline void drawCenteredString(fontid_t fid, uint16_t color, uint16_t y, FSTR_P fTitle) { + drawCenteredString(false, fid, color, backColor, y, fTitle); } - inline void Draw_CenteredString(uint16_t color, uint16_t y, const char * const string) { - Draw_CenteredString(false, fontid, color, backcolor, y, string); + inline void drawCenteredString(uint16_t color, uint16_t y, const char * const string) { + drawCenteredString(false, fontID, color, backColor, y, string); } - inline void Draw_CenteredString(uint16_t color, uint16_t y, FSTR_P title) { - Draw_CenteredString(false, fontid, color, backcolor, y, title); + inline void drawCenteredString(uint16_t color, uint16_t y, FSTR_P fTitle) { + drawCenteredString(false, fontID, color, backColor, y, fTitle); } - inline void Draw_CenteredString(uint16_t y, const char * const string) { - Draw_CenteredString(false, fontid, textcolor, backcolor, y, string); + inline void drawCenteredString(uint16_t y, const char * const string) { + drawCenteredString(false, fontID, textColor, backColor, y, string); } - inline void Draw_CenteredString(uint16_t y, FSTR_P title) { - Draw_CenteredString(false, fontid, textcolor, backcolor, y, title); + inline void drawCenteredString(uint16_t y, FSTR_P fTitle) { + drawCenteredString(false, fontID, textColor, backColor, y, fTitle); } // Draw a box // mode: 0=frame, 1=fill, 2=XOR fill // color: Rectangle color // frame: Box coordinates and size - inline void Draw_Box(uint8_t mode, uint16_t color, frame_rect_t frame) { + inline void drawBox(uint8_t mode, uint16_t color, frame_rect_t frame) { dwinDrawBox(mode, color, frame.x, frame.y, frame.w, frame.h); } @@ -543,9 +543,9 @@ namespace DWINUI { // x: abscissa of the center of the circle // y: ordinate of the center of the circle // r: circle radius - void Draw_Circle(uint16_t color, uint16_t x,uint16_t y,uint8_t r); - inline void Draw_Circle(uint16_t color, uint8_t r) { - Draw_Circle(color, cursor.x, cursor.y, r); + void drawCircle(uint16_t color, uint16_t x,uint16_t y,uint8_t r); + inline void drawCircle(uint16_t color, uint8_t r) { + drawCircle(color, cursor.x, cursor.y, r); } // Draw a checkbox @@ -553,9 +553,9 @@ namespace DWINUI { // bColor: Background color // x/y: Upper-left point // checked : 0 : unchecked, 1 : checked - void Draw_Checkbox(uint16_t color, uint16_t bcolor, uint16_t x, uint16_t y, bool checked); - inline void Draw_Checkbox(uint16_t x, uint16_t y, bool checked=false) { - Draw_Checkbox(textcolor, backcolor, x, y, checked); + void drawCheckbox(uint16_t color, uint16_t bcolor, uint16_t x, uint16_t y, bool checked); + inline void drawCheckbox(uint16_t x, uint16_t y, bool checked=false) { + drawCheckbox(textColor, backColor, x, y, checked); } // Color Interpolator @@ -568,14 +568,14 @@ namespace DWINUI { // ------------------------- Buttons ------------------------------// - void Draw_Button(uint16_t color, uint16_t bcolor, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, const char * const caption); - inline void Draw_Button(uint16_t color, uint16_t bcolor, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, FSTR_P caption) { - Draw_Button(color, bcolor, x1, y1, x2, y2, FTOP(caption)); + void drawButton(uint16_t color, uint16_t bcolor, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, const char * const caption); + inline void drawButton(uint16_t color, uint16_t bcolor, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, FSTR_P caption) { + drawButton(color, bcolor, x1, y1, x2, y2, FTOP(caption)); } - inline void Draw_Button(FSTR_P caption, uint16_t x, uint16_t y) { - Draw_Button(textcolor, buttoncolor, x, y, x + 99, y + 37, caption); + inline void drawButton(FSTR_P caption, uint16_t x, uint16_t y) { + drawButton(textColor, buttonColor, x, y, x + 99, y + 37, caption); } - void Draw_Button(uint8_t id, uint16_t x, uint16_t y); + void drawButton(uint8_t id, uint16_t x, uint16_t y); // -------------------------- Extra -------------------------------// @@ -584,9 +584,9 @@ namespace DWINUI { // x: abscissa of the center of the circle // y: ordinate of the center of the circle // r: circle radius - void Draw_FillCircle(uint16_t bcolor, uint16_t x,uint16_t y,uint8_t r); - inline void Draw_FillCircle(uint16_t bcolor, uint8_t r) { - Draw_FillCircle(bcolor, cursor.x, cursor.y, r); + void drawFillCircle(uint16_t bcolor, uint16_t x,uint16_t y,uint8_t r); + inline void drawFillCircle(uint16_t bcolor, uint8_t r) { + drawFillCircle(bcolor, cursor.x, cursor.y, r); } // Color Interpolator through Red->Yellow->Green->Blue @@ -600,7 +600,7 @@ namespace DWINUI { // length: Bytes to write // data: address of the buffer with data inline void WriteToSRAM(uint16_t addr, uint16_t length, uint8_t *data) { - DWIN_WriteToMem(0x5A, addr, length, data); + dwinWriteToMem(0x5A, addr, length, data); } // Write buffer data to the Flash @@ -608,11 +608,11 @@ namespace DWINUI { // length: Bytes to write // data: address of the buffer with data inline void WriteToFlash(uint16_t addr, uint16_t length, uint8_t *data) { - DWIN_WriteToMem(0xA5, addr, length, data); + dwinWriteToMem(0xA5, addr, length, data); } // Clear by filling the area with background color // Area (0, TITLE_HEIGHT, DWIN_WIDTH, STATUS_Y - 1) - void ClearMainArea(); + void clearMainArea(); }; diff --git a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp index c6d014e53c..4dd3d7a369 100644 --- a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp +++ b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp @@ -46,38 +46,38 @@ #include "../../../module/probe.h" #endif -ESDiagClass ESDiag; +ESDiag esDiag; void draw_es_label(FSTR_P const flabel=nullptr) { DWINUI::cursor.x = 40; - if (flabel) DWINUI::Draw_String(F(flabel)); - DWINUI::Draw_String(F(": ")); - DWINUI::MoveBy(0, 25); + if (flabel) DWINUI::drawString(F(flabel)); + DWINUI::drawString(F(": ")); + DWINUI::moveBy(0, 25); } void draw_es_state(const bool is_hit) { const uint8_t LM = 130; DWINUI::cursor.x = LM; - dwinDrawRectangle(1, HMI_data.PopupBg_Color, LM, DWINUI::cursor.y, LM + 100, DWINUI::cursor.y + 20); - is_hit ? DWINUI::Draw_String(RGB(31,31,16), F(STR_ENDSTOP_HIT)) : DWINUI::Draw_String(RGB(16,63,16), F(STR_ENDSTOP_OPEN)); - DWINUI::MoveBy(0, 25); + dwinDrawRectangle(1, hmiData.colorPopupBg, LM, DWINUI::cursor.y, LM + 100, DWINUI::cursor.y + 20); + is_hit ? DWINUI::drawString(RGB(31,31,16), F(STR_ENDSTOP_HIT)) : DWINUI::drawString(RGB(16,63,16), F(STR_ENDSTOP_OPEN)); + DWINUI::moveBy(0, 25); } -void ESDiagClass::Draw() { - Title.ShowCaption(GET_TEXT_F(MSG_ENDSTOP_TEST)); - DWINUI::ClearMainArea(); - Draw_Popup_Bkgd(); - DWINUI::Draw_Button(BTN_Continue, 86, 250); +void ESDiag::draw() { + title.showCaption(GET_TEXT_F(MSG_ENDSTOP_TEST)); + DWINUI::clearMainArea(); + drawPopupBkgd(); + DWINUI::drawButton(BTN_Continue, 86, 250); DWINUI::cursor.y = 80; #define ES_LABEL(S) draw_es_label(F(STR_##S)) TERN_(USE_X_MIN, ES_LABEL(X_MIN)); TERN_(USE_X_MAX, ES_LABEL(X_MAX)); TERN_(USE_Y_MIN, ES_LABEL(Y_MIN)); TERN_(USE_Y_MAX, ES_LABEL(Y_MAX)); TERN_(HAS_Z_MIN_PIN, ES_LABEL(Z_MIN)); TERN_(USE_Z_MAX, ES_LABEL(Z_MAX)); TERN_(HAS_FILAMENT_SENSOR, draw_es_label(F(STR_FILAMENT))); - Update(); + update(); } -void ESDiagClass::Update() { +void ESDiag::update() { DWINUI::cursor.y = 80; #define ES_REPORT(S) draw_es_state(READ(S##_PIN) == S##_ENDSTOP_HIT_STATE) TERN_(USE_X_MIN, ES_REPORT(X_MIN)); TERN_(USE_X_MAX, ES_REPORT(X_MAX)); diff --git a/Marlin/src/lcd/e3v2/proui/endstop_diag.h b/Marlin/src/lcd/e3v2/proui/endstop_diag.h index 236262282e..d4a98d5f1a 100644 --- a/Marlin/src/lcd/e3v2/proui/endstop_diag.h +++ b/Marlin/src/lcd/e3v2/proui/endstop_diag.h @@ -28,10 +28,10 @@ * Date: 2023/05/10 */ -class ESDiagClass { +class ESDiag { public: - static void Draw(); - static void Update(); + static void draw(); + static void update(); }; -extern ESDiagClass ESDiag; +extern ESDiag esDiag; diff --git a/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp b/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp index c0b12c5946..8017847538 100644 --- a/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp +++ b/Marlin/src/lcd/e3v2/proui/gcode_preview.cpp @@ -200,27 +200,27 @@ void Preview_DrawFromSD() { if (Has_Preview()) { MString<45> buf; char str_1[6] = "", str_2[6] = "", str_3[6] = ""; - dwinDrawRectangle(1, HMI_data.Background_Color, 0, 0, DWIN_WIDTH, STATUS_Y - 1); + dwinDrawRectangle(1, hmiData.colorBackground, 0, 0, DWIN_WIDTH, STATUS_Y - 1); if (fileprop.time) { buf.setf(F("Estimated time: %i:%02i"), (uint16_t)fileprop.time / 3600, ((uint16_t)fileprop.time % 3600) / 60); - DWINUI::Draw_String(20, 10, &buf); + DWINUI::drawString(20, 10, &buf); } if (fileprop.filament) { buf.setf(F("Filament used: %s m"), dtostrf(fileprop.filament, 1, 2, str_1)); - DWINUI::Draw_String(20, 30, &buf); + DWINUI::drawString(20, 30, &buf); } if (fileprop.layer) { buf.setf(F("Layer height: %s mm"), dtostrf(fileprop.layer, 1, 2, str_1)); - DWINUI::Draw_String(20, 50, &buf); + DWINUI::drawString(20, 50, &buf); } if (fileprop.width) { buf.setf(F("Volume: %sx%sx%s mm"), dtostrf(fileprop.width, 1, 1, str_1), dtostrf(fileprop.length, 1, 1, str_2), dtostrf(fileprop.height, 1, 1, str_3)); - DWINUI::Draw_String(20, 70, &buf); + DWINUI::drawString(20, 70, &buf); } - DWINUI::Draw_Button(BTN_Print, 26, 290); - DWINUI::Draw_Button(BTN_Cancel, 146, 290); + DWINUI::drawButton(BTN_Print, 26, 290); + DWINUI::drawButton(BTN_Cancel, 146, 290); Preview_Show(); - Draw_Select_Highlight(true, 290); + drawSelectHighlight(true, 290); dwinUpdateLCD(); } else { diff --git a/Marlin/src/lcd/e3v2/proui/lockscreen.cpp b/Marlin/src/lcd/e3v2/proui/lockscreen.cpp index 50874e0fc2..ebe3568c98 100644 --- a/Marlin/src/lcd/e3v2/proui/lockscreen.cpp +++ b/Marlin/src/lcd/e3v2/proui/lockscreen.cpp @@ -36,39 +36,39 @@ #include "dwin.h" #include "lockscreen.h" -LockScreenClass lockScreen; +LockScreen lockScreen; -uint8_t LockScreenClass::lock_pos = 0; -bool LockScreenClass::unlocked = false; -uint8_t LockScreenClass::rprocess = 0; +uint8_t LockScreen::lock_pos = 0; +bool LockScreen::unlocked = false; +uint8_t LockScreen::rprocess = 0; -void LockScreenClass::init() { +void LockScreen::init() { lock_pos = 0; unlocked = false; draw(); } -void LockScreenClass::draw() { - Title.SetCaption(GET_TEXT_F(MSG_LOCKSCREEN)); - DWINUI::ClearMainArea(); - DWINUI::Draw_Icon(ICON_LOGO, 71, 120); // CREALITY logo - DWINUI::Draw_CenteredString(Color_White, 180, GET_TEXT_F(MSG_LOCKSCREEN_LOCKED)); - DWINUI::Draw_CenteredString(Color_White, 200, GET_TEXT_F(MSG_LOCKSCREEN_UNLOCK)); - DWINUI::Draw_CenteredString(Color_White, 240, F("-> | <-")); - dwinDrawBox(1, HMI_data.Barfill_Color, 0, 260, DWIN_WIDTH, 20); - dwinDrawVLine(Color_Yellow, lock_pos * DWIN_WIDTH / 255, 260, 20); +void LockScreen::draw() { + title.setCaption(GET_TEXT_F(MSG_LOCKSCREEN)); + DWINUI::clearMainArea(); + DWINUI::drawIcon(ICON_LOGO, 71, 120); // CREALITY logo + DWINUI::drawCenteredString(COLOR_WHITE, 180, GET_TEXT_F(MSG_LOCKSCREEN_LOCKED)); + DWINUI::drawCenteredString(COLOR_WHITE, 200, GET_TEXT_F(MSG_LOCKSCREEN_UNLOCK)); + DWINUI::drawCenteredString(COLOR_WHITE, 240, F("-> | <-")); + dwinDrawBox(1, hmiData.colorBarfill, 0, 260, DWIN_WIDTH, 20); + dwinDrawVLine(COLOR_YELLOW, lock_pos * DWIN_WIDTH / 255, 260, 20); dwinUpdateLCD(); } -void LockScreenClass::onEncoder(EncoderState encoder_diffState) { +void LockScreen::onEncoder(EncoderState encoder_diffState) { switch (encoder_diffState) { case ENCODER_DIFF_CW: lock_pos += 8; break; case ENCODER_DIFF_CCW: lock_pos -= 8; break; case ENCODER_DIFF_ENTER: unlocked = (lock_pos == 128); break; default: break; } - dwinDrawBox(1, HMI_data.Barfill_Color, 0, 260, DWIN_WIDTH, 20); - dwinDrawVLine(Color_Yellow, lock_pos * DWIN_WIDTH / 255, 260, 20); + dwinDrawBox(1, hmiData.colorBarfill, 0, 260, DWIN_WIDTH, 20); + dwinDrawVLine(COLOR_YELLOW, lock_pos * DWIN_WIDTH / 255, 260, 20); dwinUpdateLCD(); } diff --git a/Marlin/src/lcd/e3v2/proui/lockscreen.h b/Marlin/src/lcd/e3v2/proui/lockscreen.h index cb75f2c7c0..9feb91c25b 100644 --- a/Marlin/src/lcd/e3v2/proui/lockscreen.h +++ b/Marlin/src/lcd/e3v2/proui/lockscreen.h @@ -31,7 +31,7 @@ #include "../common/encoder.h" #include -class LockScreenClass { +class LockScreen { private: static bool unlocked; static uint8_t lock_pos; @@ -43,4 +43,4 @@ public: static bool isUnlocked() { return unlocked; } }; -extern LockScreenClass lockScreen; +extern LockScreen lockScreen; diff --git a/Marlin/src/lcd/e3v2/proui/menus.cpp b/Marlin/src/lcd/e3v2/proui/menus.cpp index 54892b6acb..347130743c 100644 --- a/Marlin/src/lcd/e3v2/proui/menus.cpp +++ b/Marlin/src/lcd/e3v2/proui/menus.cpp @@ -37,135 +37,135 @@ int8_t MenuItemTotal = 0; int8_t MenuItemCount = 0; -CustomMenuItemClass** MenuItems = nullptr; -MenuClass *CurrentMenu = nullptr; -MenuClass *PreviousMenu = nullptr; -MenuData_t MenuData; +CustomMenuItem** menuItems = nullptr; +Menu *currentMenu = nullptr; +Menu *previousMenu = nullptr; +MenuData_t menuData; // Menuitem Drawing functions ================================================= -void Draw_Title(TitleClass* title) { - dwinDrawRectangle(1, HMI_data.TitleBg_Color, 0, 0, DWIN_WIDTH - 1, TITLE_HEIGHT - 1); - if (title->frameid) - DWIN_Frame_AreaCopy(title->frameid, title->frame.left, title->frame.top, title->frame.right, title->frame.bottom, 14, (TITLE_HEIGHT - (title->frame.bottom - title->frame.top)) / 2 - 1); +void drawTitle(Title* aTitle) { + dwinDrawRectangle(1, hmiData.colorTitleBg, 0, 0, DWIN_WIDTH - 1, TITLE_HEIGHT - 1); + if (aTitle->frameid) + dwinFrameAreaCopy(aTitle->frameid, aTitle->frame.left, aTitle->frame.top, aTitle->frame.right, aTitle->frame.bottom, 14, (TITLE_HEIGHT - (aTitle->frame.bottom - aTitle->frame.top)) / 2 - 1); else #if ENABLED(TITLE_CENTERED) - DWINUI::Draw_CenteredString(false, DWIN_FONT_HEAD, HMI_data.TitleTxt_Color, HMI_data.TitleBg_Color, (TITLE_HEIGHT - DWINUI::fontHeight(DWIN_FONT_HEAD)) / 2 - 1, title->caption); + DWINUI::drawCenteredString(false, DWIN_FONT_HEAD, hmiData.colorTitleTxt, hmiData.colorTitleBg, (TITLE_HEIGHT - DWINUI::fontHeight(DWIN_FONT_HEAD)) / 2 - 1, aTitle->caption); #else - dwinDrawString(false, DWIN_FONT_HEAD, HMI_data.TitleTxt_Color, HMI_data.TitleBg_Color, 14, (TITLE_HEIGHT - DWINUI::fontHeight(DWIN_FONT_HEAD)) / 2 - 1, title->caption); + dwinDrawString(false, DWIN_FONT_HEAD, hmiData.colorTitleTxt, hmiData.colorTitleBg, 14, (TITLE_HEIGHT - DWINUI::fontHeight(DWIN_FONT_HEAD)) / 2 - 1, aTitle->caption); #endif } -void Draw_Menu_Cursor(const int8_t line) { +void drawMenuCursor(const int8_t line) { const uint16_t ypos = MYPOS(line); - DWINUI::Draw_Box(1, HMI_data.Cursor_Color, {0, ypos, 15, MLINE - 1}); + DWINUI::drawBox(1, hmiData.colorCursor, {0, ypos, 15, MLINE - 1}); } -void Erase_Menu_Cursor(const int8_t line) { +void eraseMenuCursor(const int8_t line) { const uint16_t ypos = MYPOS(line); - DWINUI::Draw_Box(1, HMI_data.Background_Color, {0, ypos, 15, MLINE - 1}); + DWINUI::drawBox(1, hmiData.colorBackground, {0, ypos, 15, MLINE - 1}); } -void Erase_Menu_Text(const int8_t line) { +void eraseMenuText(const int8_t line) { if (line < 0 || line >= TROWS) return; const uint16_t ypos = MYPOS(line) + 1; - DWINUI::Draw_Box(1, HMI_data.Background_Color, {LBLX, ypos, DWIN_WIDTH - LBLX, MLINE - 2}); + DWINUI::drawBox(1, hmiData.colorBackground, {LBLX, ypos, DWIN_WIDTH - LBLX, MLINE - 2}); } -void Draw_Menu_Line(const uint8_t line, const uint8_t icon/*=0*/, const char * const label/*=nullptr*/, bool more/*=false*/, bool selected/*=false*/) { - if (icon) DWINUI::Draw_Icon(icon, ICOX, MBASE(line) - 3); - if (label) DWINUI::Draw_String(LBLX, MBASE(line) - 1, (char*)label); - if (more) DWINUI::Draw_Icon(ICON_More, VALX + 16, MBASE(line) - 3); - if (selected) Draw_Menu_Cursor(line); - dwinDrawHLine(HMI_data.SplitLine_Color, 16, MYPOS(line + 1), 240); +void drawMenuLine(const uint8_t line, const uint8_t icon/*=0*/, const char * const label/*=nullptr*/, bool more/*=false*/, bool selected/*=false*/) { + if (icon) DWINUI::drawIcon(icon, ICOX, MBASE(line) - 3); + if (label) DWINUI::drawString(LBLX, MBASE(line) - 1, (char*)label); + if (more) DWINUI::drawIcon(ICON_More, VALX + 16, MBASE(line) - 3); + if (selected) drawMenuCursor(line); + dwinDrawHLine(hmiData.colorSplitLine, 16, MYPOS(line + 1), 240); } -void Draw_Menu_Line(const uint8_t line, const uint8_t icon/*=0*/, FSTR_P label/*=nullptr*/, bool more/*=false*/, bool selected/*=false*/) { - Draw_Menu_Line(line, icon, FTOP(label), more, selected); +void drawMenuLine(const uint8_t line, const uint8_t icon/*=0*/, FSTR_P label/*=nullptr*/, bool more/*=false*/, bool selected/*=false*/) { + drawMenuLine(line, icon, FTOP(label), more, selected); } -void Draw_Chkb_Line(const uint8_t line, const bool checked) { - DWINUI::Draw_Checkbox(HMI_data.Text_Color, HMI_data.Background_Color, VALX + 3 * DWINUI::fontWidth(), MBASE(line) - 1, checked); +void drawCheckboxLine(const uint8_t line, const bool checked) { + DWINUI::drawCheckbox(hmiData.colorText, hmiData.colorBackground, VALX + 3 * DWINUI::fontWidth(), MBASE(line) - 1, checked); } -void Show_Chkb_Line(const bool checked) { - const uint8_t line = CurrentMenu->line(); - DWINUI::Draw_Checkbox(HMI_data.Text_Color, HMI_data.Background_Color, VALX + 3 * DWINUI::fontWidth(), MBASE(line) - 1, checked); +void showCheckboxLine(const bool checked) { + const uint8_t line = currentMenu->line(); + DWINUI::drawCheckbox(hmiData.colorText, hmiData.colorBackground, VALX + 3 * DWINUI::fontWidth(), MBASE(line) - 1, checked); dwinUpdateLCD(); } -void Toggle_Chkb_Line(bool &checked) { +void toggleCheckboxLine(bool &checked) { checked = !checked; - Show_Chkb_Line(checked); + showCheckboxLine(checked); } -void Draw_Menu_IntValue(uint16_t bcolor, const uint8_t line, uint8_t iNum, const int32_t value/*=0*/) { - DWINUI::Draw_Signed_Int(HMI_data.Text_Color, bcolor, iNum , VALX, MBASE(line) - 1, value); +void drawMenuIntValue(uint16_t bcolor, const uint8_t line, uint8_t iNum, const int32_t value/*=0*/) { + DWINUI::drawSignedInt(hmiData.colorText, bcolor, iNum , VALX, MBASE(line) - 1, value); } -void onDrawMenuItem(MenuItemClass* menuitem, int8_t line) { - if (menuitem->icon) DWINUI::Draw_Icon(menuitem->icon, ICOX, MBASE(line) - 3); +void onDrawMenuItem(MenuItem* menuitem, int8_t line) { + if (menuitem->icon) DWINUI::drawIcon(menuitem->icon, ICOX, MBASE(line) - 3); if (menuitem->frameid) - DWIN_Frame_AreaCopy(menuitem->frameid, menuitem->frame.left, menuitem->frame.top, menuitem->frame.right, menuitem->frame.bottom, LBLX, MBASE(line)); + dwinFrameAreaCopy(menuitem->frameid, menuitem->frame.left, menuitem->frame.top, menuitem->frame.right, menuitem->frame.bottom, LBLX, MBASE(line)); else if (menuitem->caption) - DWINUI::Draw_String(LBLX, MBASE(line) - 1, menuitem->caption); - dwinDrawHLine(HMI_data.SplitLine_Color, 16, MYPOS(line + 1), 240); + DWINUI::drawString(LBLX, MBASE(line) - 1, menuitem->caption); + dwinDrawHLine(hmiData.colorSplitLine, 16, MYPOS(line + 1), 240); } -void onDrawSubMenu(MenuItemClass* menuitem, int8_t line) { +void onDrawSubMenu(MenuItem* menuitem, int8_t line) { onDrawMenuItem(menuitem, line); - DWINUI::Draw_Icon(ICON_More, VALX + 16, MBASE(line) - 3); + DWINUI::drawIcon(ICON_More, VALX + 16, MBASE(line) - 3); } -void onDrawIntMenu(MenuItemClass* menuitem, int8_t line, int32_t value) { +void onDrawIntMenu(MenuItem* menuitem, int8_t line, int32_t value) { onDrawMenuItem(menuitem, line); - Draw_Menu_IntValue(HMI_data.Background_Color, line, 4, value); + drawMenuIntValue(hmiData.colorBackground, line, 4, value); } -void onDrawPIntMenu(MenuItemClass* menuitem, int8_t line) { - const int16_t value = *(int16_t*)static_cast(menuitem)->value; +void onDrawPIntMenu(MenuItem* menuitem, int8_t line) { + const int16_t value = *(int16_t*)static_cast(menuitem)->value; onDrawIntMenu(menuitem, line, value); } -void onDrawPInt8Menu(MenuItemClass* menuitem, int8_t line) { - const uint8_t value = *(uint8_t*)static_cast(menuitem)->value; +void onDrawPInt8Menu(MenuItem* menuitem, int8_t line) { + const uint8_t value = *(uint8_t*)static_cast(menuitem)->value; onDrawIntMenu(menuitem, line, value); } -void onDrawPInt32Menu(MenuItemClass* menuitem, int8_t line) { - const uint32_t value = *(uint32_t*)static_cast(menuitem)->value; +void onDrawPInt32Menu(MenuItem* menuitem, int8_t line) { + const uint32_t value = *(uint32_t*)static_cast(menuitem)->value; onDrawIntMenu(menuitem, line, value); } -void onDrawFloatMenu(MenuItemClass* menuitem, int8_t line, uint8_t dp, const float value) { +void onDrawFloatMenu(MenuItem* menuitem, int8_t line, uint8_t dp, const float value) { onDrawMenuItem(menuitem, line); - DWINUI::Draw_Signed_Float(HMI_data.Text_Color, HMI_data.Background_Color, 3, dp, VALX - dp * DWINUI::fontWidth(DWIN_FONT_MENU), MBASE(line), value); + DWINUI::drawSignedFloat(hmiData.colorText, hmiData.colorBackground, 3, dp, VALX - dp * DWINUI::fontWidth(DWIN_FONT_MENU), MBASE(line), value); } -void onDrawPFloatMenu(MenuItemClass* menuitem, int8_t line, uint8_t dp) { - const float value = *(float*)static_cast(menuitem)->value; +void onDrawPFloatMenu(MenuItem* menuitem, int8_t line, uint8_t dp) { + const float value = *(float*)static_cast(menuitem)->value; onDrawFloatMenu(menuitem, line, dp, value); } -void onDrawChkbMenu(MenuItemClass* menuitem, int8_t line, bool checked) { +void onDrawChkbMenu(MenuItem* menuitem, int8_t line, bool checked) { onDrawMenuItem(menuitem, line); - Draw_Chkb_Line(line, checked); + drawCheckboxLine(line, checked); } -void onDrawChkbMenu(MenuItemClass* menuitem, int8_t line) { - const bool val = *(bool*)static_cast(menuitem)->value; +void onDrawChkbMenu(MenuItem* menuitem, int8_t line) { + const bool val = *(bool*)static_cast(menuitem)->value; onDrawChkbMenu(menuitem, line, val); } void DrawItemEdit(const bool selected) { - const uint16_t bcolor = selected ? HMI_data.Selected_Color : HMI_data.Background_Color; - const uint8_t iNum = 4 - ((MenuData.dp > 0) ? (MenuData.dp - 1) : 0); + const uint16_t bcolor = selected ? hmiData.colorSelected : hmiData.colorBackground; + const uint8_t iNum = 4 - ((menuData.dp > 0) ? (menuData.dp - 1) : 0); switch (checkkey) { - case SetIntNoDraw: if (MenuData.LiveUpdate) MenuData.LiveUpdate(); break; - case SetInt: - case SetPInt: DWINUI::Draw_Signed_Int(HMI_data.Text_Color, bcolor, iNum , VALX, MBASE(CurrentMenu->line()) - 1, MenuData.Value); break; - case SetFloat: - case SetPFloat: DWINUI::Draw_Signed_Float(HMI_data.Text_Color, bcolor, iNum, MenuData.dp, VALX - 2 * DWINUI::fontWidth(), MBASE(CurrentMenu->line()), MenuData.Value / POW(10, MenuData.dp)); break; + case ID_SetIntNoDraw: if (menuData.liveUpdate) menuData.liveUpdate(); break; + case ID_SetInt: + case ID_SetPInt: DWINUI::drawSignedInt(hmiData.colorText, bcolor, iNum , VALX, MBASE(currentMenu->line()) - 1, menuData.value); break; + case ID_SetFloat: + case ID_SetPFloat: DWINUI::drawSignedFloat(hmiData.colorText, bcolor, iNum, menuData.dp, VALX - 2 * DWINUI::fontWidth(), MBASE(currentMenu->line()), menuData.value / POW(10, menuData.dp)); break; default: break; } } @@ -180,16 +180,16 @@ void DrawItemEdit(const bool selected) { // hi: high limit // dp: decimal places, 0 for integers // val: value / scaled value -// LiveUpdate: live update function when the encoder changes -// Apply: update function when the encoder is pressed -void SetOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, const int32_t val, void (*Apply)()/*=nullptr*/, void (*LiveUpdate)()/*=nullptr*/) { +// liveUpdate: live update function when the encoder changes +// apply: update function when the encoder is pressed +void setOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, const int32_t val, void (*apply)()/*=nullptr*/, void (*liveUpdate)()/*=nullptr*/) { checkkey = process; - MenuData.MinValue = lo; - MenuData.MaxValue = hi; - MenuData.dp = dp; - MenuData.Apply = Apply; - MenuData.LiveUpdate = LiveUpdate; - MenuData.Value = constrain(val, lo, hi); + menuData.minValue = lo; + menuData.maxValue = hi; + menuData.dp = dp; + menuData.apply = apply; + menuData.liveUpdate = liveUpdate; + menuData.value = constrain(val, lo, hi); encoderRate.enabled = true; } @@ -198,10 +198,10 @@ void SetOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, // lo: scaled low limit // hi: scaled high limit // val: value -// LiveUpdate: live update function when the encoder changes -// Apply: update function when the encoder is pressed -void SetValueOnClick(uint8_t process, const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)()/*=nullptr*/, void (*LiveUpdate)()/*=nullptr*/) { - SetOnClick(process, lo, hi, 0, val, Apply, LiveUpdate); +// liveUpdate: live update function when the encoder changes +// apply: update function when the encoder is pressed +void setValueOnClick(uint8_t process, const int32_t lo, const int32_t hi, const int32_t val, void (*apply)()/*=nullptr*/, void (*liveUpdate)()/*=nullptr*/) { + setOnClick(process, lo, hi, 0, val, apply, liveUpdate); DrawItemEdit(true); } @@ -210,11 +210,11 @@ void SetValueOnClick(uint8_t process, const int32_t lo, const int32_t hi, const // lo: scaled low limit // hi: scaled high limit // val: value -// LiveUpdate: live update function when the encoder changes -// Apply: update function when the encoder is pressed -void SetValueOnClick(uint8_t process, const float lo, const float hi, uint8_t dp, const float val, void (*Apply)()/*=nullptr*/, void (*LiveUpdate)()/*=nullptr*/) { +// liveUpdate: live update function when the encoder changes +// apply: update function when the encoder is pressed +void setValueOnClick(uint8_t process, const float lo, const float hi, uint8_t dp, const float val, void (*apply)()/*=nullptr*/, void (*liveUpdate)()/*=nullptr*/) { const int32_t value = round(val * POW(10, dp)); - SetOnClick(process, lo * POW(10, dp), hi * POW(10, dp), dp, value, Apply, LiveUpdate); + setOnClick(process, lo * POW(10, dp), hi * POW(10, dp), dp, value, apply, liveUpdate); DrawItemEdit(true); } @@ -222,21 +222,21 @@ void SetValueOnClick(uint8_t process, const float lo, const float hi, uint8_t dp // lo: scaled low limit // hi: scaled high limit // val: value -// LiveUpdate: live update function when the encoder changes -// Apply: update function when the encoder is pressed -void SetIntOnClick(const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)()/*=nullptr*/, void (*LiveUpdate)()/*=nullptr*/) { - SetValueOnClick(SetInt, lo, hi, val, Apply, LiveUpdate); +// liveUpdate: live update function when the encoder changes +// apply: update function when the encoder is pressed +void setIntOnClick(const int32_t lo, const int32_t hi, const int32_t val, void (*apply)()/*=nullptr*/, void (*liveUpdate)()/*=nullptr*/) { + setValueOnClick(ID_SetInt, lo, hi, val, apply, liveUpdate); } // Generic onclick event for set pointer to 16 bit uinteger values // lo: low limit // hi: high limit -// LiveUpdate: live update function when the encoder changes -// Apply: update function when the encoder is pressed -void SetPIntOnClick(const int32_t lo, const int32_t hi, void (*Apply)()/*=nullptr*/, void (*LiveUpdate)()/*=nullptr*/) { - MenuData.P_Int = (int16_t*)static_cast(CurrentMenu->SelectedItem())->value; - const int32_t value = *MenuData.P_Int; - SetValueOnClick(SetPInt, lo, hi, value, Apply, LiveUpdate); +// liveUpdate: live update function when the encoder changes +// apply: update function when the encoder is pressed +void setPIntOnClick(const int32_t lo, const int32_t hi, void (*apply)()/*=nullptr*/, void (*liveUpdate)()/*=nullptr*/) { + menuData.intPtr = (int16_t*)static_cast(currentMenu->selectedItem())->value; + const int32_t value = *menuData.intPtr; + setValueOnClick(ID_SetPInt, lo, hi, value, apply, liveUpdate); } // Generic onclick event for float values @@ -245,31 +245,31 @@ void SetPIntOnClick(const int32_t lo, const int32_t hi, void (*Apply)()/*=nullpt // hi: high limit // dp: decimal places // val: value -void SetFloatOnClick(const float lo, const float hi, uint8_t dp, const float val, void (*Apply)()/*=nullptr*/, void (*LiveUpdate)()/*=nullptr*/) { - SetValueOnClick(SetFloat, lo, hi, dp, val, Apply, LiveUpdate); +void setFloatOnClick(const float lo, const float hi, uint8_t dp, const float val, void (*apply)()/*=nullptr*/, void (*liveUpdate)()/*=nullptr*/) { + setValueOnClick(ID_SetFloat, lo, hi, dp, val, apply, liveUpdate); } // Generic onclick event for set pointer to float values // lo: low limit // hi: high limit -// LiveUpdate: live update function when the encoder changes -// Apply: update function when the encoder is pressed -void SetPFloatOnClick(const float lo, const float hi, uint8_t dp, void (*Apply)()/*=nullptr*/, void (*LiveUpdate)()/*=nullptr*/) { - MenuData.P_Float = (float*)static_cast(CurrentMenu->SelectedItem())->value; - SetValueOnClick(SetPFloat, lo, hi, dp, *MenuData.P_Float, Apply, LiveUpdate); +// liveUpdate: live update function when the encoder changes +// apply: update function when the encoder is pressed +void setPFloatOnClick(const float lo, const float hi, uint8_t dp, void (*apply)()/*=nullptr*/, void (*liveUpdate)()/*=nullptr*/) { + menuData.floatPtr = (float*)static_cast(currentMenu->selectedItem())->value; + setValueOnClick(ID_SetPFloat, lo, hi, dp, *menuData.floatPtr, apply, liveUpdate); } // HMI Control functions ====================================================== // Generic menu control using the encoder -void HMI_Menu() { +void hmiMenu() { EncoderState encoder_diffState = get_encoder_state(); - if (CurrentMenu) { + if (currentMenu) { if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_ENTER) - CurrentMenu->onClick(); + currentMenu->onClick(); else - CurrentMenu->onScroll(encoder_diffState == ENCODER_DIFF_CW); + currentMenu->onScroll(encoder_diffState == ENCODER_DIFF_CW); } } @@ -279,283 +279,283 @@ void HMI_Menu() { // 0 : no change // 1 : live change // 2 : apply change -int8_t HMI_Get(bool draw) { - const int32_t lo = MenuData.MinValue; - const int32_t hi = MenuData.MaxValue; - const int32_t cval = MenuData.Value; +int8_t hmiGet(bool draw) { + const int32_t lo = menuData.minValue; + const int32_t hi = menuData.maxValue; + const int32_t cval = menuData.value; EncoderState encoder_diffState = TERN(SMOOTH_ENCODER_MENUITEMS, get_encoder_state(), encoderReceiveAnalyze()); if (encoder_diffState != ENCODER_DIFF_NO) { - if (applyEncoder(encoder_diffState, MenuData.Value)) { + if (applyEncoder(encoder_diffState, menuData.value)) { encoderRate.enabled = false; if (draw) DrawItemEdit(false); - checkkey = Menu; + checkkey = ID_Menu; return 2; } - LIMIT(MenuData.Value, lo, hi); + LIMIT(menuData.value, lo, hi); } - const bool change = cval != MenuData.Value; + const bool change = cval != menuData.value; if (change) DrawItemEdit(true); return int8_t(change); } // Set and draw a value using the encoder -void HMI_SetDraw() { - int8_t val = HMI_Get(true); +void hmiSetDraw() { + int8_t val = hmiGet(true); switch (val) { case 0: return; - case 1: if (MenuData.LiveUpdate) MenuData.LiveUpdate(); break; - case 2: if (MenuData.Apply) MenuData.Apply(); break; + case 1: if (menuData.liveUpdate) menuData.liveUpdate(); break; + case 2: if (menuData.apply) menuData.apply(); break; } } // Set an value without drawing -void HMI_SetNoDraw() { - int8_t val = HMI_Get(false); +void hmiSetNoDraw() { + int8_t val = hmiGet(false); switch (val) { case 0: return; - case 1: if (MenuData.LiveUpdate) MenuData.LiveUpdate(); break; - case 2: if (MenuData.Apply) MenuData.Apply(); break; + case 1: if (menuData.liveUpdate) menuData.liveUpdate(); break; + case 2: if (menuData.apply) menuData.apply(); break; } } // Set an integer pointer variable using the encoder -void HMI_SetPInt() { - int8_t val = HMI_Get(true); +void hmiSetPInt() { + int8_t val = hmiGet(true); switch (val) { case 0: return; - case 1: if (MenuData.LiveUpdate) MenuData.LiveUpdate(); break; - case 2: *MenuData.P_Int = MenuData.Value; if (MenuData.Apply) MenuData.Apply(); break; + case 1: if (menuData.liveUpdate) menuData.liveUpdate(); break; + case 2: *menuData.intPtr = menuData.value; if (menuData.apply) menuData.apply(); break; } } // Set a scaled float pointer variable using the encoder -void HMI_SetPFloat() { - const int8_t val = HMI_Get(true); +void hmiSetPFloat() { + const int8_t val = hmiGet(true); switch (val) { case 0: return; - case 1: if (MenuData.LiveUpdate) MenuData.LiveUpdate(); break; - case 2: *MenuData.P_Float = MenuData.Value / POW(10, MenuData.dp); if (MenuData.Apply) MenuData.Apply(); break; + case 1: if (menuData.liveUpdate) menuData.liveUpdate(); break; + case 2: *menuData.floatPtr = menuData.value / POW(10, menuData.dp); if (menuData.apply) menuData.apply(); break; } } // Menu Class =============================================================== -MenuClass::MenuClass() { +Menu::Menu() { selected = 0; topline = 0; } -void MenuClass::draw() { - MenuTitle.draw(); - DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color, HMI_data.StatusBg_Color); - dwinDrawRectangle(1, DWINUI::backcolor, 0, TITLE_HEIGHT, DWIN_WIDTH - 1, STATUS_Y - 1); +void Menu::draw() { + menuTitle.draw(); + DWINUI::setColors(hmiData.colorText, hmiData.colorBackground, hmiData.colorStatusBg); + dwinDrawRectangle(1, DWINUI::backColor, 0, TITLE_HEIGHT, DWIN_WIDTH - 1, STATUS_Y - 1); for (int8_t i = 0; i < MenuItemCount; i++) - MenuItems[i]->draw(i - topline); - Draw_Menu_Cursor(line()); + menuItems[i]->draw(i - topline); + drawMenuCursor(line()); dwinUpdateLCD(); } -void MenuClass::onScroll(bool dir) { +void Menu::onScroll(bool dir) { int8_t sel = selected; if (dir) sel++; else sel--; LIMIT(sel, 0, MenuItemCount - 1); if (sel != selected) { - Erase_Menu_Cursor(line()); + eraseMenuCursor(line()); dwinUpdateLCD(); if ((sel - topline) == TROWS) { - dwinFrameAreaMove(1, DWIN_SCROLL_UP, MLINE, DWINUI::backcolor, 0, TITLE_HEIGHT + 1, DWIN_WIDTH, STATUS_Y - 1); + dwinFrameAreaMove(1, DWIN_SCROLL_UP, MLINE, DWINUI::backColor, 0, TITLE_HEIGHT + 1, DWIN_WIDTH, STATUS_Y - 1); topline++; - MenuItems[sel]->draw(TROWS - 1); + menuItems[sel]->draw(TROWS - 1); } if ((sel < topline)) { - dwinFrameAreaMove(1, DWIN_SCROLL_DOWN, MLINE, DWINUI::backcolor, 0, TITLE_HEIGHT + 1, DWIN_WIDTH, STATUS_Y - 1); + dwinFrameAreaMove(1, DWIN_SCROLL_DOWN, MLINE, DWINUI::backColor, 0, TITLE_HEIGHT + 1, DWIN_WIDTH, STATUS_Y - 1); topline--; - MenuItems[sel]->draw(0); + menuItems[sel]->draw(0); } selected = sel; - Draw_Menu_Cursor(line()); + drawMenuCursor(line()); dwinUpdateLCD(); } } -void MenuClass::onClick() { - if (MenuItems[selected]->onClick != nullptr) (*MenuItems[selected]->onClick)(); +void Menu::onClick() { + if (menuItems[selected]->onClick != nullptr) (*menuItems[selected]->onClick)(); } -CustomMenuItemClass *MenuClass::SelectedItem() { - return MenuItems[selected]; +CustomMenuItem *Menu::selectedItem() { + return menuItems[selected]; } -CustomMenuItemClass** MenuClass::Items() { - return MenuItems; +CustomMenuItem** Menu::items() { + return menuItems; } -int8_t MenuClass::count() { +int8_t Menu::count() { return MenuItemCount; }; /* MenuItem Class ===========================================================*/ -void CustomMenuItemClass::draw(int8_t line) { +void CustomMenuItem::draw(int8_t line) { if (line < 0 || line >= TROWS) return; - if (onDraw != nullptr) (*onDraw)(static_cast(this), line); + if (onDraw != nullptr) (*onDraw)(static_cast(this), line); }; -void CustomMenuItemClass::redraw(bool erase/*=false*/) { - const int8_t line = CurrentMenu->line(this->pos); - if (erase) Erase_Menu_Text(line); +void CustomMenuItem::redraw(bool erase/*=false*/) { + const int8_t line = currentMenu->line(this->pos); + if (erase) eraseMenuText(line); draw(line); } -CustomMenuItemClass::CustomMenuItemClass(OnDrawItem ondraw, OnClickItem onclick) { +CustomMenuItem::CustomMenuItem(OnDrawItem ondraw, OnClickItem onclick) { onClick = onclick; onDraw = ondraw; } -MenuItemClass::MenuItemClass(uint8_t cicon, const char * const text, OnDrawItem ondraw, OnClickItem onclick) : CustomMenuItemClass(ondraw, onclick) { +MenuItem::MenuItem(uint8_t cicon, const char * const text, OnDrawItem ondraw, OnClickItem onclick) : CustomMenuItem(ondraw, onclick) { icon = cicon; - SetCaption(text); + setCaption(text); } -MenuItemClass::MenuItemClass(uint8_t cicon, uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, OnDrawItem ondraw, OnClickItem onclick) : CustomMenuItemClass(ondraw, onclick) { +MenuItem::MenuItem(uint8_t cicon, uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, OnDrawItem ondraw, OnClickItem onclick) : CustomMenuItem(ondraw, onclick) { icon = cicon; caption[0] = '\0'; frameid = id; frame = { x1, y1, x2, y2 }; } -void MenuItemClass::SetCaption(const char * const text) { +void MenuItem::setCaption(const char * const text) { const uint8_t len = _MIN(sizeof(caption) - 1, strlen(text)); memcpy(&caption[0], text, len); caption[len] = '\0'; } -void MenuItemClass::SetFrame(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { +void MenuItem::setFrame(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { caption[0] = '\0'; frameid = id; frame = { x1, y1, x2, y2 }; } -MenuItemPtrClass::MenuItemPtrClass(uint8_t cicon, const char * const text, OnDrawItem ondraw, OnClickItem onclick, void* val) : MenuItemClass(cicon, text, ondraw, onclick) { +MenuItemPtr::MenuItemPtr(uint8_t cicon, const char * const text, OnDrawItem ondraw, OnClickItem onclick, void* val) : MenuItem(cicon, text, ondraw, onclick) { value = val; }; // Menu auxiliary functions =================================================== -void MenuItemsClear() { - if (MenuItems == nullptr) return; - for (int8_t i = 0; i < MenuItemCount; i++) delete MenuItems[i]; - delete[] MenuItems; - MenuItems = nullptr; +void menuItemsClear() { + if (menuItems == nullptr) return; + for (int8_t i = 0; i < MenuItemCount; i++) delete menuItems[i]; + delete[] menuItems; + menuItems = nullptr; MenuItemCount = 0; MenuItemTotal = 0; } -void MenuItemsPrepare(int8_t totalitems) { - MenuItemsClear(); +void menuItemsPrepare(int8_t totalitems) { + menuItemsClear(); MenuItemTotal = _MIN(totalitems, MENU_MAX_ITEMS); - MenuItems = new CustomMenuItemClass*[totalitems]; + menuItems = new CustomMenuItem*[totalitems]; } -bool IsMenu(MenuClass* _menu) { - return ((checkkey == Menu) && !!CurrentMenu && (CurrentMenu == _menu)); +bool isMenu(Menu* _menu) { + return ((checkkey == ID_Menu) && !!currentMenu && (currentMenu == _menu)); } template -T* MenuItemAdd(T* menuitem) { - MenuItems[MenuItemCount] = menuitem; +T* menuItemAdd(T* menuitem) { + menuItems[MenuItemCount] = menuitem; menuitem->pos = MenuItemCount++; return menuitem; } -CustomMenuItemClass* MenuItemAdd(OnDrawItem ondraw/*=nullptr*/, OnClickItem onclick/*=nullptr*/) { +CustomMenuItem* menuItemAdd(OnDrawItem ondraw/*=nullptr*/, OnClickItem onclick/*=nullptr*/) { if (MenuItemCount < MenuItemTotal) { - CustomMenuItemClass* menuitem = new CustomMenuItemClass(ondraw, onclick); - return MenuItemAdd(menuitem); + CustomMenuItem* menuitem = new CustomMenuItem(ondraw, onclick); + return menuItemAdd(menuitem); } else return nullptr; } -MenuItemClass* MenuItemAdd(uint8_t cicon, const char * const text/*=nullptr*/, OnDrawItem ondraw/*=nullptr*/, OnClickItem onclick/*=nullptr*/) { +MenuItem* menuItemAdd(uint8_t cicon, const char * const text/*=nullptr*/, OnDrawItem ondraw/*=nullptr*/, OnClickItem onclick/*=nullptr*/) { if (MenuItemCount < MenuItemTotal) { - MenuItemClass* menuitem = new MenuItemClass(cicon, text, ondraw, onclick); - return MenuItemAdd(menuitem); + MenuItem* menuitem = new MenuItem(cicon, text, ondraw, onclick); + return menuItemAdd(menuitem); } else return nullptr; } -MenuItemClass* MenuItemAdd(uint8_t cicon, uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, OnDrawItem ondraw/*=nullptr*/, OnClickItem onclick/*=nullptr*/) { +MenuItem* menuItemAdd(uint8_t cicon, uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, OnDrawItem ondraw/*=nullptr*/, OnClickItem onclick/*=nullptr*/) { if (MenuItemCount < MenuItemTotal) { - MenuItemClass* menuitem = new MenuItemClass(cicon, id, x1, y1, x2, y2, ondraw, onclick); - return MenuItemAdd(menuitem); + MenuItem* menuitem = new MenuItem(cicon, id, x1, y1, x2, y2, ondraw, onclick); + return menuItemAdd(menuitem); } else return nullptr; } -MenuItemClass* EditItemAdd(uint8_t cicon, const char * const text, OnDrawItem ondraw, OnClickItem onclick, void* val) { +MenuItem* editItemAdd(uint8_t cicon, const char * const text, OnDrawItem ondraw, OnClickItem onclick, void* val) { if (MenuItemCount < MenuItemTotal) { - MenuItemClass* menuitem = new MenuItemPtrClass(cicon, text, ondraw, onclick, val); - return MenuItemAdd(menuitem); + MenuItem* menuitem = new MenuItemPtr(cicon, text, ondraw, onclick, val); + return menuItemAdd(menuitem); } else return nullptr; } -void InitMenu() { - CurrentMenu = nullptr; - PreviousMenu = nullptr; +void initMenu() { + currentMenu = nullptr; + previousMenu = nullptr; } -bool SetMenu(MenuClass* &menu, FSTR_P title, int8_t totalitems) { - if (!menu) menu = new MenuClass(); - const bool NotCurrent = (CurrentMenu != menu); +bool setMenu(Menu* &menu, FSTR_P fTitle, int8_t totalitems) { + if (!menu) menu = new Menu(); + const bool NotCurrent = (currentMenu != menu); if (NotCurrent) { - menu->MenuTitle.SetCaption(title); - MenuItemsPrepare(totalitems); + menu->menuTitle.setCaption(fTitle); + menuItemsPrepare(totalitems); } return NotCurrent; } -bool SetMenu(MenuClass* &menu, frame_rect_t cn, FSTR_P title, int8_t totalitems) { - if (!menu) menu = new MenuClass(); - const bool NotCurrent = (CurrentMenu != menu); +bool setMenu(Menu* &menu, frame_rect_t cn, FSTR_P fTitle, int8_t totalitems) { + if (!menu) menu = new Menu(); + const bool NotCurrent = (currentMenu != menu); if (NotCurrent) { if (cn.w != 0) - menu->MenuTitle.SetFrame(cn.x, cn.y, cn.w, cn.h); + menu->menuTitle.setFrame(cn.x, cn.y, cn.w, cn.h); else - menu->MenuTitle.SetCaption(title); - MenuItemsPrepare(totalitems); + menu->menuTitle.setCaption(fTitle); + menuItemsPrepare(totalitems); } return NotCurrent; } -void ResetMenu(MenuClass* &menu) { +void resetMenu(Menu* &menu) { if (menu) { menu->topline = 0; menu->selected = 0; } } -void InvalidateMenu() { - ResetMenu(CurrentMenu); - CurrentMenu = nullptr; +void invalidateMenu() { + resetMenu(currentMenu); + currentMenu = nullptr; } -void UpdateMenu(MenuClass* &menu) { +void updateMenu(Menu* &menu) { if (!menu) return; - if (CurrentMenu != menu) { - PreviousMenu = CurrentMenu; - CurrentMenu = menu; + if (currentMenu != menu) { + previousMenu = currentMenu; + currentMenu = menu; } menu->draw(); } void ReDrawMenu(bool force/*=false*/) { - if (CurrentMenu && (force || checkkey == Menu)) CurrentMenu->draw(); + if (currentMenu && (force || checkkey == ID_Menu)) currentMenu->draw(); if (force) DrawItemEdit(true); } void ReDrawItem() { - static_cast(CurrentMenu->SelectedItem())->redraw(false); + static_cast(currentMenu->selectedItem())->redraw(false); } #endif // DWIN_LCD_PROUI diff --git a/Marlin/src/lcd/e3v2/proui/menus.h b/Marlin/src/lcd/e3v2/proui/menus.h index f0855e7073..58dd92f0f6 100644 --- a/Marlin/src/lcd/e3v2/proui/menus.h +++ b/Marlin/src/lcd/e3v2/proui/menus.h @@ -37,154 +37,154 @@ #endif typedef struct { - int32_t MaxValue = 0; // Auxiliar max integer/scaled float value - int32_t MinValue = 0; // Auxiliar min integer/scaled float value + int32_t maxValue = 0; // Auxiliar max integer/scaled float value + int32_t minValue = 0; // Auxiliar min integer/scaled float value int8_t dp = 0; // Auxiliar decimal places - int32_t Value = 0; // Auxiliar integer / scaled float value - int16_t *P_Int = nullptr; // Auxiliar pointer to 16 bit integer variable - float *P_Float = nullptr; // Auxiliar pointer to float variable - void (*Apply)() = nullptr; // Auxiliar apply function - void (*LiveUpdate)() = nullptr; // Auxiliar live update function + int32_t value = 0; // Auxiliar integer / scaled float value + int16_t *intPtr = nullptr; // Auxiliar pointer to 16 bit integer variable + float *floatPtr = nullptr; // Auxiliar pointer to float variable + void (*apply)() = nullptr; // Auxiliar apply function + void (*liveUpdate)() = nullptr; // Auxiliar live update function } MenuData_t; -extern MenuData_t MenuData; +extern MenuData_t menuData; // Auxiliary Macros =========================================================== // Create and add a MenuItem object to the menu array -#define SET_MENU(I,L,V) SetMenu(I, GET_TEXT_F(L), V) -#define SET_MENU_F(I,L,V) SetMenu(I, F(L), V) -#define SET_MENU_R(I,R,L,V) SetMenu(I, R, GET_TEXT_F(L), V) +#define SET_MENU(I,L,V) setMenu(I, GET_TEXT_F(L), V) +#define SET_MENU_F(I,L,V) setMenu(I, F(L), V) +#define SET_MENU_R(I,R,L,V) setMenu(I, R, GET_TEXT_F(L), V) -#define BACK_ITEM(H) MenuItemAdd(ICON_Back, GET_TEXT_F(MSG_BUTTON_BACK), onDrawMenuItem, H) -#define MENU_ITEM(I,L,V...) MenuItemAdd(I, GET_TEXT_F(L), V) -#define EDIT_ITEM(I,L,V...) EditItemAdd(I, GET_TEXT_F(L), V) -#define MENU_ITEM_F(I,L,V...) MenuItemAdd(I, F(L), V) -#define EDIT_ITEM_F(I,L,V...) EditItemAdd(I, F(L), V) +#define BACK_ITEM(H) menuItemAdd(ICON_Back, GET_TEXT_F(MSG_BUTTON_BACK), onDrawMenuItem, H) +#define MENU_ITEM(I,L,V...) menuItemAdd(I, GET_TEXT_F(L), V) +#define EDIT_ITEM(I,L,V...) editItemAdd(I, GET_TEXT_F(L), V) +#define MENU_ITEM_F(I,L,V...) menuItemAdd(I, F(L), V) +#define EDIT_ITEM_F(I,L,V...) editItemAdd(I, F(L), V) // Menu Classes =============================================================== -class CustomMenuItemClass; -class MenuItemClass; +class CustomMenuItem; +class MenuItem; -typedef void (*OnDrawCustomItem)(CustomMenuItemClass* menuitem, int8_t line); -typedef void (*OnDrawItem)(MenuItemClass* menuitem, int8_t line); +typedef void (*OnDrawCustomItem)(CustomMenuItem* menuitem, int8_t line); +typedef void (*OnDrawItem)(MenuItem* menuitem, int8_t line); typedef void (*OnClickItem)(); -class CustomMenuItemClass { +class CustomMenuItem { public: int8_t pos = 0; OnDrawItem onDraw = nullptr; void (*onClick)() = nullptr; - CustomMenuItemClass() {}; - CustomMenuItemClass(OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); - virtual ~CustomMenuItemClass(){}; + CustomMenuItem() {}; + CustomMenuItem(OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); + virtual ~CustomMenuItem(){}; virtual void draw(int8_t line); void redraw(bool erase=false); }; -class MenuItemClass: public CustomMenuItemClass { +class MenuItem: public CustomMenuItem { public: uint8_t icon = 0; char caption[MENU_CHAR_LIMIT] = ""; uint8_t frameid = 0; rect_t frame = {0}; - using CustomMenuItemClass::CustomMenuItemClass; - MenuItemClass(uint8_t cicon, const char * const text=nullptr, OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); - MenuItemClass(uint8_t cicon, uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); - void SetFrame(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2); - void SetCaption(const char * const text = nullptr); + using CustomMenuItem::CustomMenuItem; + MenuItem(uint8_t cicon, const char * const text=nullptr, OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); + MenuItem(uint8_t cicon, uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); + void setFrame(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2); + void setCaption(const char * const text = nullptr); }; -class MenuItemPtrClass: public MenuItemClass { +class MenuItemPtr: public MenuItem { public: void *value = nullptr; - using MenuItemClass::MenuItemClass; - MenuItemPtrClass(uint8_t cicon, const char * const text, OnDrawItem ondraw, OnClickItem onclick, void* val); - MenuItemPtrClass(uint8_t cicon, FSTR_P text, OnDrawItem ondraw, OnClickItem onclick, void* val) : MenuItemPtrClass(cicon, FTOP(text), ondraw, onclick, val){} + using MenuItem::MenuItem; + MenuItemPtr(uint8_t cicon, const char * const text, OnDrawItem ondraw, OnClickItem onclick, void* val); + MenuItemPtr(uint8_t cicon, FSTR_P text, OnDrawItem ondraw, OnClickItem onclick, void* val) : MenuItemPtr(cicon, FTOP(text), ondraw, onclick, val){} }; -class MenuClass { +class Menu { public: int8_t topline = 0; int8_t selected = 0; - TitleClass MenuTitle; - MenuClass(); - virtual ~MenuClass(){}; + Title menuTitle; + Menu(); + virtual ~Menu(){}; inline int8_t line() { return selected - topline; }; inline int8_t line(uint8_t pos) {return pos - topline; }; int8_t count(); virtual void draw(); virtual void onScroll(bool dir); void onClick(); - CustomMenuItemClass* SelectedItem(); - static CustomMenuItemClass** Items(); + CustomMenuItem* selectedItem(); + static CustomMenuItem** items(); }; -extern MenuClass *CurrentMenu; -extern MenuClass *PreviousMenu; +extern Menu *currentMenu; +extern Menu *previousMenu; // Menuitem Drawing functions ================================================= -void Draw_Title(TitleClass* title); -void Draw_Menu_Cursor(const int8_t line); -void Erase_Menu_Cursor(const int8_t line); -void Erase_Menu_Text(const int8_t line); -void Draw_Menu_Line(const uint8_t line, const uint8_t icon=0, const char * const label=nullptr, bool more=false, bool selected=false); -void Draw_Menu_Line(const uint8_t line, const uint8_t icon=0, FSTR_P label=nullptr, bool more=false, bool selected=false); -void Draw_Chkb_Line(const uint8_t line, const bool checked); -void Show_Chkb_Line(const bool checked); -void Toggle_Chkb_Line(bool &checked); -void Draw_Menu_IntValue(uint16_t bcolor, const uint8_t line, uint8_t iNum, const int32_t value=0); -void onDrawMenuItem(MenuItemClass* menuitem, int8_t line); -void onDrawSubMenu(MenuItemClass* menuitem, int8_t line); -void onDrawIntMenu(MenuItemClass* menuitem, int8_t line, int32_t value); -void onDrawPIntMenu(MenuItemClass* menuitem, int8_t line); -void onDrawPInt8Menu(MenuItemClass* menuitem, int8_t line); -void onDrawPInt32Menu(MenuItemClass* menuitem, int8_t line); -void onDrawFloatMenu(MenuItemClass* menuitem, int8_t line, uint8_t dp, const float value); -void onDrawPFloatMenu(MenuItemClass* menuitem, int8_t line, uint8_t dp); -inline void onDrawPFloatMenu(MenuItemClass* menuitem, int8_t line) { onDrawPFloatMenu(menuitem, line, UNITFDIGITS); }; -inline void onDrawPFloat2Menu(MenuItemClass* menuitem, int8_t line) { onDrawPFloatMenu(menuitem, line, 2); }; -inline void onDrawPFloat3Menu(MenuItemClass* menuitem, int8_t line) { onDrawPFloatMenu(menuitem, line, 3); }; -inline void onDrawPFloat4Menu(MenuItemClass* menuitem, int8_t line) { onDrawPFloatMenu(menuitem, line, 4); }; -void onDrawChkbMenu(MenuItemClass* menuitem, int8_t line, bool checked); -void onDrawChkbMenu(MenuItemClass* menuitem, int8_t line); +void drawTitle(Title* aTitle); +void drawMenuCursor(const int8_t line); +void eraseMenuCursor(const int8_t line); +void eraseMenuText(const int8_t line); +void drawMenuLine(const uint8_t line, const uint8_t icon=0, const char * const label=nullptr, bool more=false, bool selected=false); +void drawMenuLine(const uint8_t line, const uint8_t icon=0, FSTR_P label=nullptr, bool more=false, bool selected=false); +void drawCheckboxLine(const uint8_t line, const bool checked); +void showCheckboxLine(const bool checked); +void toggleCheckboxLine(bool &checked); +void drawMenuIntValue(uint16_t bcolor, const uint8_t line, uint8_t iNum, const int32_t value=0); +void onDrawMenuItem(MenuItem* menuitem, int8_t line); +void onDrawSubMenu(MenuItem* menuitem, int8_t line); +void onDrawIntMenu(MenuItem* menuitem, int8_t line, int32_t value); +void onDrawPIntMenu(MenuItem* menuitem, int8_t line); +void onDrawPInt8Menu(MenuItem* menuitem, int8_t line); +void onDrawPInt32Menu(MenuItem* menuitem, int8_t line); +void onDrawFloatMenu(MenuItem* menuitem, int8_t line, uint8_t dp, const float value); +void onDrawPFloatMenu(MenuItem* menuitem, int8_t line, uint8_t dp); +inline void onDrawPFloatMenu(MenuItem* menuitem, int8_t line) { onDrawPFloatMenu(menuitem, line, UNITFDIGITS); }; +inline void onDrawPFloat2Menu(MenuItem* menuitem, int8_t line) { onDrawPFloatMenu(menuitem, line, 2); }; +inline void onDrawPFloat3Menu(MenuItem* menuitem, int8_t line) { onDrawPFloatMenu(menuitem, line, 3); }; +inline void onDrawPFloat4Menu(MenuItem* menuitem, int8_t line) { onDrawPFloatMenu(menuitem, line, 4); }; +void onDrawChkbMenu(MenuItem* menuitem, int8_t line, bool checked); +void onDrawChkbMenu(MenuItem* menuitem, int8_t line); // On click functions ========================================================= -void SetOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, const int32_t val, void (*Apply)()=nullptr, void (*LiveUpdate)()=nullptr); -void SetValueOnClick(uint8_t process, const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)()=nullptr, void (*LiveUpdate)()=nullptr); -void SetValueOnClick(uint8_t process, const float lo, const float hi, uint8_t dp, const float val, void (*Apply)()=nullptr, void (*LiveUpdate)()=nullptr); -void SetIntOnClick(const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)()=nullptr, void (*LiveUpdate)()=nullptr); -void SetPIntOnClick(const int32_t lo, const int32_t hi, void (*Apply)()=nullptr, void (*LiveUpdate)()=nullptr); -void SetFloatOnClick(const float lo, const float hi, uint8_t dp, const float val, void (*Apply)()=nullptr, void (*LiveUpdate)()=nullptr); -void SetPFloatOnClick(const float lo, const float hi, uint8_t dp, void (*Apply)()=nullptr, void (*LiveUpdate)()=nullptr); +void setOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, const int32_t val, void (*apply)()=nullptr, void (*liveUpdate)()=nullptr); +void setValueOnClick(uint8_t process, const int32_t lo, const int32_t hi, const int32_t val, void (*apply)()=nullptr, void (*liveUpdate)()=nullptr); +void setValueOnClick(uint8_t process, const float lo, const float hi, uint8_t dp, const float val, void (*apply)()=nullptr, void (*liveUpdate)()=nullptr); +void setIntOnClick(const int32_t lo, const int32_t hi, const int32_t val, void (*apply)()=nullptr, void (*liveUpdate)()=nullptr); +void setPIntOnClick(const int32_t lo, const int32_t hi, void (*apply)()=nullptr, void (*liveUpdate)()=nullptr); +void setFloatOnClick(const float lo, const float hi, uint8_t dp, const float val, void (*apply)()=nullptr, void (*liveUpdate)()=nullptr); +void setPFloatOnClick(const float lo, const float hi, uint8_t dp, void (*apply)()=nullptr, void (*liveUpdate)()=nullptr); // HMI user control functions ================================================= -void HMI_Menu(); -void HMI_SetDraw(); -void HMI_SetNoDraw(); -void HMI_SetPInt(); -void HMI_SetPFloat(); +void hmiMenu(); +void hmiSetDraw(); +void hmiSetNoDraw(); +void hmiSetPInt(); +void hmiSetPFloat(); // Menu auxiliary functions =================================================== // Initialize menu -void InitMenu(); +void initMenu(); // Create a new menu -bool SetMenu(MenuClass* &menu, FSTR_P title, int8_t totalitems); -bool SetMenu(MenuClass* &menu, frame_rect_t cn, FSTR_P title, int8_t totalitems); +bool setMenu(Menu* &menu, FSTR_P fTitle, int8_t totalitems); +bool setMenu(Menu* &menu, frame_rect_t cn, FSTR_P fTitle, int8_t totalitems); // Reset top line and selected item -void ResetMenu(MenuClass* &menu); +void resetMenu(Menu* &menu); -// Invalidate CurrentMenu to prepare for full menu drawing -void InvalidateMenu(); +// Invalidate currentMenu to prepare for full menu drawing +void invalidateMenu(); //Update the Menu and Draw if it is valid -void UpdateMenu(MenuClass* &menu); +void updateMenu(Menu* &menu); //Redraw the current Menu if it is valid void ReDrawMenu(bool force=false); @@ -192,23 +192,23 @@ void ReDrawMenu(bool force=false); //Redraw selected menu item void ReDrawItem(); -// Clear MenuItems array and free MenuItems elements -void MenuItemsClear(); +// Clear menuItems array and free menuItems elements +void menuItemsClear(); -// Prepare MenuItems array -void MenuItemsPrepare(int8_t totalitems); +// Prepare menuItems array +void menuItemsPrepare(int8_t totalitems); // Is the current menu = menu? -bool IsMenu(MenuClass* menu); +bool isMenu(Menu* menu); -// Add elements to the MenuItems array -CustomMenuItemClass* MenuItemAdd(OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); -MenuItemClass* MenuItemAdd(uint8_t cicon, const char * const text=nullptr, OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); -inline MenuItemClass* MenuItemAdd(uint8_t cicon, FSTR_P text=nullptr, OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr) { - return MenuItemAdd(cicon, FTOP(text), ondraw, onclick); +// Add elements to the menuItems array +CustomMenuItem* menuItemAdd(OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); +MenuItem* menuItemAdd(uint8_t cicon, const char * const text=nullptr, OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); +inline MenuItem* menuItemAdd(uint8_t cicon, FSTR_P text=nullptr, OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr) { + return menuItemAdd(cicon, FTOP(text), ondraw, onclick); } -MenuItemClass* MenuItemAdd(uint8_t cicon, uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); -MenuItemClass* EditItemAdd(uint8_t cicon, const char * const text, OnDrawItem ondraw, OnClickItem onclick, void* val); -inline MenuItemClass* EditItemAdd(uint8_t cicon, FSTR_P text, OnDrawItem ondraw, OnClickItem onclick, void* val) { - return EditItemAdd(cicon, FTOP(text), ondraw, onclick, val); +MenuItem* menuItemAdd(uint8_t cicon, uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, OnDrawItem ondraw=nullptr, OnClickItem onclick=nullptr); +MenuItem* editItemAdd(uint8_t cicon, const char * const text, OnDrawItem ondraw, OnClickItem onclick, void* val); +inline MenuItem* editItemAdd(uint8_t cicon, FSTR_P text, OnDrawItem ondraw, OnClickItem onclick, void* val) { + return editItemAdd(cicon, FTOP(text), ondraw, onclick, val); } diff --git a/Marlin/src/lcd/e3v2/proui/meshviewer.cpp b/Marlin/src/lcd/e3v2/proui/meshviewer.cpp index 086795d943..2781ccaa1d 100644 --- a/Marlin/src/lcd/e3v2/proui/meshviewer.cpp +++ b/Marlin/src/lcd/e3v2/proui/meshviewer.cpp @@ -56,101 +56,101 @@ uint8_t rmax; // Maximum radius constexpr uint8_t meshfont = TERN(TJC_DISPLAY, font8x16, font6x12); -MeshViewerClass MeshViewer; +MeshViewer meshViewer; -float MeshViewerClass::max, MeshViewerClass::min; +float MeshViewer::max, MeshViewer::min; -void MeshViewerClass::DrawMeshGrid(const uint8_t csizex, const uint8_t csizey) { +void MeshViewer::drawMeshGrid(const uint8_t csizex, const uint8_t csizey) { sizex = csizex; sizey = csizey; rmax = _MIN(margin - 2, 0.5 * (width) / (sizex - 1)); min = 100; max = -100; - DWINUI::ClearMainArea(); - dwinDrawRectangle(0, HMI_data.SplitLine_Color, px(0), py(0), px(sizex - 1), py(sizey - 1)); - for (uint8_t x = 1; x < sizex - 1; ++x) dwinDrawVLine(HMI_data.SplitLine_Color, px(x), py(sizey - 1), width); - for (uint8_t y = 1; y < sizey - 1; ++y) dwinDrawHLine(HMI_data.SplitLine_Color, px(0), py(y), width); + DWINUI::clearMainArea(); + dwinDrawRectangle(0, hmiData.colorSplitLine, px(0), py(0), px(sizex - 1), py(sizey - 1)); + for (uint8_t x = 1; x < sizex - 1; ++x) dwinDrawVLine(hmiData.colorSplitLine, px(x), py(sizey - 1), width); + for (uint8_t y = 1; y < sizey - 1; ++y) dwinDrawHLine(hmiData.colorSplitLine, px(0), py(y), width); } -void MeshViewerClass::DrawMeshPoint(const uint8_t x, const uint8_t y, const float z) { +void MeshViewer::drawMeshPoint(const uint8_t x, const uint8_t y, const float z) { const uint8_t fs = DWINUI::fontWidth(meshfont); const int16_t v = isnan(z) ? 0 : round(z * 100); NOLESS(max, z); NOMORE(min, z); const uint16_t color = DWINUI::RainbowInt(v, zmin, zmax); - DWINUI::Draw_FillCircle(color, px(x), py(y), r(_MAX(_MIN(v,zmax),zmin))); + DWINUI::drawFillCircle(color, px(x), py(y), r(_MAX(_MIN(v,zmax),zmin))); TERN_(TJC_DISPLAY, delay(100)); if (sizex < (ENABLED(TJC_DISPLAY) ? 8 : 9)) { - if (v == 0) DWINUI::Draw_Float(meshfont, 1, 2, px(x) - 2*fs, py(y) - fs, 0); - else DWINUI::Draw_Signed_Float(meshfont, 1, 2, px(x) - 3*fs, py(y) - fs, z); + if (v == 0) DWINUI::drawFloat(meshfont, 1, 2, px(x) - 2*fs, py(y) - fs, 0); + else DWINUI::drawSignedFloat(meshfont, 1, 2, px(x) - 3*fs, py(y) - fs, z); } else { char str_1[9]; str_1[0] = '\0'; switch (v) { case -999 ... -100: - DWINUI::Draw_Signed_Float(meshfont, 1, 1, px(x) - 3*fs, py(y) - fs, z); + DWINUI::drawSignedFloat(meshfont, 1, 1, px(x) - 3*fs, py(y) - fs, z); break; case -99 ... -1: sprintf_P(str_1, PSTR("-.%02i"), -v); break; case 0: - dwinDrawString(false, meshfont, DWINUI::textcolor, DWINUI::backcolor, px(x) - 4, py(y) - fs, "0"); + dwinDrawString(false, meshfont, DWINUI::textColor, DWINUI::backColor, px(x) - 4, py(y) - fs, "0"); break; case 1 ... 99: sprintf_P(str_1, PSTR(".%02i"), v); break; case 100 ... 999: - DWINUI::Draw_Signed_Float(meshfont, 1, 1, px(x) - 3 * fs, py(y) - fs, z); + DWINUI::drawSignedFloat(meshfont, 1, 1, px(x) - 3 * fs, py(y) - fs, z); break; } if (str_1[0]) - dwinDrawString(false, meshfont, DWINUI::textcolor, DWINUI::backcolor, px(x) - 2 * fs, py(y) - fs, str_1); + dwinDrawString(false, meshfont, DWINUI::textColor, DWINUI::backColor, px(x) - 2 * fs, py(y) - fs, str_1); } } -void MeshViewerClass::DrawMesh(const bed_mesh_t zval, const uint8_t csizex, const uint8_t csizey) { - DrawMeshGrid(csizex, csizey); +void MeshViewer::drawMesh(const bed_mesh_t zval, const uint8_t csizex, const uint8_t csizey) { + drawMeshGrid(csizex, csizey); for (uint8_t y = 0; y < csizey; ++y) { hal.watchdog_refresh(); - for (uint8_t x = 0; x < csizex; ++x) DrawMeshPoint(x, y, zval[x][y]); + for (uint8_t x = 0; x < csizex; ++x) drawMeshPoint(x, y, zval[x][y]); } } -void MeshViewerClass::Draw(const bool withsave/*=false*/, const bool redraw/*=true*/) { - Title.ShowCaption(GET_TEXT_F(MSG_MESH_VIEWER)); +void MeshViewer::draw(const bool withsave/*=false*/, const bool redraw/*=true*/) { + title.showCaption(GET_TEXT_F(MSG_MESH_VIEWER)); #if ENABLED(USE_GRID_MESHVIEWER) - DWINUI::ClearMainArea(); + DWINUI::clearMainArea(); bedLevelTools.viewer_print_value = true; - bedLevelTools.Draw_Bed_Mesh(-1, 1, 8, 10 + TITLE_HEIGHT); + bedLevelTools.drawBedMesh(-1, 1, 8, 10 + TITLE_HEIGHT); #else - if (redraw) DrawMesh(bedlevel.z_values, GRID_MAX_POINTS_X, GRID_MAX_POINTS_Y); - else DWINUI::Draw_Box(1, HMI_data.Background_Color, { 89, 305, 99, 38 }); + if (redraw) drawMesh(bedlevel.z_values, GRID_MAX_POINTS_X, GRID_MAX_POINTS_Y); + else DWINUI::drawBox(1, hmiData.colorBackground, { 89, 305, 99, 38 }); #endif if (withsave) { - DWINUI::Draw_Button(BTN_Save, 26, 305); - DWINUI::Draw_Button(BTN_Continue, 146, 305); - Draw_Select_Highlight(hmiFlag.select_flag, 305); + DWINUI::drawButton(BTN_Save, 26, 305); + DWINUI::drawButton(BTN_Continue, 146, 305); + drawSelectHighlight(hmiFlag.select_flag, 305); } else - DWINUI::Draw_Button(BTN_Continue, 86, 305); + DWINUI::drawButton(BTN_Continue, 86, 305); #if ENABLED(USE_GRID_MESHVIEWER) - bedLevelTools.Set_Mesh_Viewer_Status(); + bedLevelTools.setMeshViewerStatus(); #else char str_1[6], str_2[6] = ""; ui.status_printf(0, F("Mesh minZ: %s, maxZ: %s"), dtostrf(min, 1, 2, str_1), dtostrf(max, 1, 2, str_2)); #endif } -void Draw_MeshViewer() { MeshViewer.Draw(true, meshredraw); } +void drawMeshViewer() { meshViewer.draw(true, meshredraw); } -void onClick_MeshViewer() { if (hmiFlag.select_flag) SaveMesh(); HMI_ReturnScreen(); } +void onClick_MeshViewer() { if (hmiFlag.select_flag) saveMesh(); hmiReturnScreen(); } -void Goto_MeshViewer(const bool redraw) { +void gotoMeshViewer(const bool redraw) { meshredraw = redraw; - if (leveling_is_valid()) Goto_Popup(Draw_MeshViewer, onClick_MeshViewer); - else HMI_ReturnScreen(); + if (leveling_is_valid()) gotoPopup(drawMeshViewer, onClick_MeshViewer); + else hmiReturnScreen(); } #endif // DWIN_LCD_PROUI && HAS_MESH diff --git a/Marlin/src/lcd/e3v2/proui/meshviewer.h b/Marlin/src/lcd/e3v2/proui/meshviewer.h index 1f45a83480..f73f1da86e 100644 --- a/Marlin/src/lcd/e3v2/proui/meshviewer.h +++ b/Marlin/src/lcd/e3v2/proui/meshviewer.h @@ -28,15 +28,15 @@ * Date: 2023/05/05 */ -class MeshViewerClass { +class MeshViewer { public: static float max, min; - static void DrawMeshGrid(const uint8_t csizex, const uint8_t csizey); - static void DrawMeshPoint(const uint8_t x, const uint8_t y, const float z); - static void Draw(const bool withsave=false, const bool redraw=true); - static void DrawMesh(const bed_mesh_t zval, const uint8_t csizex, const uint8_t csizey); + static void drawMeshGrid(const uint8_t csizex, const uint8_t csizey); + static void drawMeshPoint(const uint8_t x, const uint8_t y, const float z); + static void draw(const bool withsave=false, const bool redraw=true); + static void drawMesh(const bed_mesh_t zval, const uint8_t csizex, const uint8_t csizey); }; -extern MeshViewerClass MeshViewer; +extern MeshViewer meshViewer; -void Goto_MeshViewer(const bool redraw); +void gotoMeshViewer(const bool redraw); diff --git a/Marlin/src/lcd/e3v2/proui/plot.cpp b/Marlin/src/lcd/e3v2/proui/plot.cpp index 45341ae624..95d8ec291d 100644 --- a/Marlin/src/lcd/e3v2/proui/plot.cpp +++ b/Marlin/src/lcd/e3v2/proui/plot.cpp @@ -29,7 +29,7 @@ #include "../../../inc/MarlinConfig.h" -#if ALL(DWIN_LCD_PROUI, SHOW_TUNING_GRAPH) +#if ALL(DWIN_LCD_PROUI, PROUI_TUNING_GRAPH) #include "dwin.h" #include "../../../core/types.h" @@ -44,32 +44,32 @@ uint16_t grphpoints, r, x2, y2 = 0; frame_rect_t grphframe = {0}; float scale = 0; -void PlotClass::Draw(const frame_rect_t &frame, const_float_t max, const_float_t ref/*=0*/) { +void PlotClass::draw(const frame_rect_t &frame, const_float_t max, const_float_t ref/*=0*/) { grphframe = frame; grphpoints = 0; scale = frame.h / max; x2 = frame.x + frame.w - 1; y2 = frame.y + frame.h - 1; r = round((y2) - ref * scale); - DWINUI::Draw_Box(1, Plot_Bg_Color, frame); - for (uint8_t i = 1; i < 4; i++) if (i * 50 < frame.w) dwinDrawVLine(Line_Color, i * 50 + frame.x, frame.y, frame.h); - DWINUI::Draw_Box(0, Color_White, DWINUI::ExtendFrame(frame, 1)); - dwinDrawHLine(Color_Red, frame.x, r, frame.w); + DWINUI::drawBox(1, Plot_Bg_Color, frame); + for (uint8_t i = 1; i < 4; i++) if (i * 50 < frame.w) dwinDrawVLine(COLOR_LINE, i * 50 + frame.x, frame.y, frame.h); + DWINUI::drawBox(0, COLOR_WHITE, DWINUI::extendFrame(frame, 1)); + dwinDrawHLine(COLOR_RED, frame.x, r, frame.w); } -void PlotClass::Update(const_float_t value) { +void PlotClass::update(const_float_t value) { if (!scale) return; const uint16_t y = round((y2) - value * scale); if (grphpoints < grphframe.w) { - dwinDrawPoint(Color_Yellow, 1, 1, grphpoints + grphframe.x, y); + dwinDrawPoint(COLOR_YELLOW, 1, 1, grphpoints + grphframe.x, y); } else { dwinFrameAreaMove(1, 0, 1, Plot_Bg_Color, grphframe.x, grphframe.y, x2, y2); - if ((grphpoints % 50) == 0) dwinDrawVLine(Line_Color, x2 - 1, grphframe.y + 1, grphframe.h - 2); - dwinDrawPoint(Color_Red, 1, 1, x2 - 1, r); - dwinDrawPoint(Color_Yellow, 1, 1, x2 - 1, y); + if ((grphpoints % 50) == 0) dwinDrawVLine(COLOR_LINE, x2 - 1, grphframe.y + 1, grphframe.h - 2); + dwinDrawPoint(COLOR_RED, 1, 1, x2 - 1, r); + dwinDrawPoint(COLOR_YELLOW, 1, 1, x2 - 1, y); } grphpoints++; } -#endif // DWIN_LCD_PROUI && SHOW_TUNING_GRAPH +#endif // DWIN_LCD_PROUI && PROUI_TUNING_GRAPH diff --git a/Marlin/src/lcd/e3v2/proui/plot.h b/Marlin/src/lcd/e3v2/proui/plot.h index 144ba0073b..bc0e3a774c 100644 --- a/Marlin/src/lcd/e3v2/proui/plot.h +++ b/Marlin/src/lcd/e3v2/proui/plot.h @@ -32,8 +32,8 @@ class PlotClass { public: - static void Draw(const frame_rect_t &frame, const_float_t max, const_float_t ref=0); - static void Update(const_float_t value); + static void draw(const frame_rect_t &frame, const_float_t max, const_float_t ref=0); + static void update(const_float_t value); }; extern PlotClass plot; diff --git a/Marlin/src/lcd/e3v2/proui/printstats.cpp b/Marlin/src/lcd/e3v2/proui/printstats.cpp index 993b5b7b70..732e80542d 100644 --- a/Marlin/src/lcd/e3v2/proui/printstats.cpp +++ b/Marlin/src/lcd/e3v2/proui/printstats.cpp @@ -40,43 +40,43 @@ #include "dwin.h" #include "dwin_popup.h" -PrintStatsClass PrintStats; +PrintStats printStats; -void PrintStatsClass::Draw() { +void PrintStats::draw() { char str[30] = ""; constexpr int8_t MRG = 30; - Title.ShowCaption(GET_TEXT_F(MSG_INFO_STATS_MENU)); - DWINUI::ClearMainArea(); - Draw_Popup_Bkgd(); - DWINUI::Draw_Button(BTN_Continue, 86, 250); + title.showCaption(GET_TEXT_F(MSG_INFO_STATS_MENU)); + DWINUI::clearMainArea(); + drawPopupBkgd(); + DWINUI::drawButton(BTN_Continue, 86, 250); printStatistics ps = print_job_timer.getStats(); - DWINUI::Draw_String(MRG, 80, TS(GET_TEXT_F(MSG_INFO_PRINT_COUNT), F(": "), ps.totalPrints)); - DWINUI::Draw_String(MRG, 100, TS(GET_TEXT_F(MSG_INFO_COMPLETED_PRINTS), F(": "), ps.finishedPrints)); + DWINUI::drawString(MRG, 80, TS(GET_TEXT_F(MSG_INFO_PRINT_COUNT), F(": "), ps.totalPrints)); + DWINUI::drawString(MRG, 100, TS(GET_TEXT_F(MSG_INFO_COMPLETED_PRINTS), F(": "), ps.finishedPrints)); duration_t(print_job_timer.getStats().printTime).toDigital(str, true); - DWINUI::Draw_String(MRG, 120, MString<50>(GET_TEXT_F(MSG_INFO_PRINT_TIME), F(": "), str)); + DWINUI::drawString(MRG, 120, MString<50>(GET_TEXT_F(MSG_INFO_PRINT_TIME), F(": "), str)); duration_t(print_job_timer.getStats().longestPrint).toDigital(str, true); - DWINUI::Draw_String(MRG, 140, MString<50>(GET_TEXT(MSG_INFO_PRINT_LONGEST), F(": "), str)); - DWINUI::Draw_String(MRG, 160, TS(GET_TEXT_F(MSG_INFO_PRINT_FILAMENT), F(": "), p_float_t(ps.filamentUsed / 1000, 2), F(" m"))); + DWINUI::drawString(MRG, 140, MString<50>(GET_TEXT(MSG_INFO_PRINT_LONGEST), F(": "), str)); + DWINUI::drawString(MRG, 160, TS(GET_TEXT_F(MSG_INFO_PRINT_FILAMENT), F(": "), p_float_t(ps.filamentUsed / 1000, 2), F(" m"))); } -void PrintStatsClass::Reset() { +void PrintStats::reset() { print_job_timer.initStats(); DONE_BUZZ(true); } -void Goto_PrintStats() { - PrintStats.Draw(); - HMI_SaveProcessID(WaitResponse); +void gotoPrintStats() { + printStats.draw(); + hmiSaveProcessID(ID_WaitResponse); } // Print Stats Reset popup -void Popup_ResetStats() { DWIN_Popup_ConfirmCancel(ICON_Info_0, GET_TEXT_F(MSG_RESET_STATS)); } -void OnClick_ResetStats() { - if (hmiFlag.select_flag) PrintStatsClass::Reset(); - HMI_ReturnScreen(); +void popupResetStats() { dwinPopupConfirmCancel(ICON_Info_0, GET_TEXT_F(MSG_RESET_STATS)); } +void onClickResetStats() { + if (hmiFlag.select_flag) printStats.reset(); + hmiReturnScreen(); } -void PrintStatsReset() { Goto_Popup(Popup_ResetStats, OnClick_ResetStats); } +void printStatsReset() { gotoPopup(popupResetStats, onClickResetStats); } #endif // DWIN_LCD_PROUI && PRINTCOUNTER diff --git a/Marlin/src/lcd/e3v2/proui/printstats.h b/Marlin/src/lcd/e3v2/proui/printstats.h index aadb3e8dce..133e9eb96e 100644 --- a/Marlin/src/lcd/e3v2/proui/printstats.h +++ b/Marlin/src/lcd/e3v2/proui/printstats.h @@ -28,13 +28,13 @@ * Date: 2022/12/03 */ -class PrintStatsClass { +class PrintStats { public: - static void Draw(); - static void Reset(); + static void draw(); + static void reset(); }; -extern PrintStatsClass PrintStats; +extern PrintStats printStats; -void Goto_PrintStats(); -void PrintStatsReset(); +void gotoPrintStats(); +void printStatsReset(); diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 8517e2ec23..f8fde21777 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -1600,7 +1600,7 @@ void MarlinUI::host_status() { TERN_(EXTENSIBLE_UI, ExtUI::onStatusChanged(status_message)); TERN_(DWIN_CREALITY_LCD, dwinStatusChanged(status_message)); - TERN_(DWIN_LCD_PROUI, DWIN_CheckStatusMessage()); + TERN_(DWIN_LCD_PROUI, dwinCheckStatusMessage()); TERN_(DWIN_CREALITY_LCD_JYERSUI, jyersDWIN.updateStatus(status_message)); } diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index 1e6d02d2a7..9d5da849e5 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -413,7 +413,7 @@ void restore_feedrate_and_scaling(); #if HAS_Z_AXIS #if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) - #define Z_POST_CLEARANCE HMI_data.z_after_homing + #define Z_POST_CLEARANCE hmiData.z_after_homing #elif defined(Z_AFTER_HOMING) #define Z_POST_CLEARANCE Z_AFTER_HOMING #else diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index e426e3bb4b..b3872146d1 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -377,7 +377,7 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(ds_str)); TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(ds_str)); - TERN_(DWIN_LCD_PROUI, DWIN_Popup_Confirm(ICON_BLTouch, ds_str, FPSTR(CONTINUE_STR))); + TERN_(DWIN_LCD_PROUI, dwinPopupConfirm(ICON_BLTouch, ds_str, FPSTR(CONTINUE_STR))); TERN_(HAS_RESUME_CONTINUE, wait_for_user_response()); ui.reset_status(); diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 7ef6970141..479b43c4bd 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -1610,7 +1610,7 @@ void MarlinSettings::postprocess() { { _FIELD_TEST(dwin_data); char dwin_data[eeprom_data_size] = { 0 }; - DWIN_CopySettingsTo(dwin_data); + dwinCopySettingsTo(dwin_data); EEPROM_WRITE(dwin_data); } #endif @@ -2675,7 +2675,7 @@ void MarlinSettings::postprocess() { const char dwin_data[eeprom_data_size] = { 0 }; _FIELD_TEST(dwin_data); EEPROM_READ(dwin_data); - if (!validating) DWIN_CopySettingsFrom(dwin_data); + if (!validating) dwinCopySettingsFrom(dwin_data); } #elif ENABLED(DWIN_CREALITY_LCD_JYERSUI) { @@ -3022,7 +3022,7 @@ void MarlinSettings::postprocess() { #endif #if ENABLED(DWIN_LCD_PROUI) - status = !bedLevelTools.meshvalidate(); + status = !bedLevelTools.meshValidate(); if (status) { bedlevel.invalidate(); LCD_MESSAGE(MSG_UBL_MESH_INVALID); @@ -3559,7 +3559,7 @@ void MarlinSettings::reset() { // // Ender-3 V2 with ProUI // - TERN_(DWIN_LCD_PROUI, DWIN_SetDataDefaults()); + TERN_(DWIN_LCD_PROUI, dwinSetDataDefaults()); // // Model predictive control diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 5d48b20ee8..6133b6e39b 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -2639,7 +2639,7 @@ hal_timer_t Stepper::block_phase_isr() { oversampling_factor = 0; // Assume no axis smoothing (via oversampling) // Decide if axis smoothing is possible uint32_t max_rate = current_block->nominal_rate; // Get the step event rate - if (TERN1(DWIN_LCD_PROUI, HMI_data.AdaptiveStepSmoothing)) { + if (TERN1(DWIN_LCD_PROUI, hmiData.adaptiveStepSmoothing)) { while (max_rate < MIN_STEP_ISR_FREQUENCY) { // As long as more ISRs are possible... max_rate <<= 1; // Try to double the rate if (max_rate < MIN_STEP_ISR_FREQUENCY) // Don't exceed the estimated ISR limit diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index c38d4968c9..e209d6f835 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -723,12 +723,12 @@ volatile bool Temperature::raw_temps_ready = false; TERN_(HAS_FAN_LOGIC, fan_update_ms = next_temp_ms + fan_update_interval_ms); TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_STARTED)); - TERN_(DWIN_PID_TUNE, DWIN_PidTuning(isbed ? PIDTEMPBED_START : PIDTEMP_START)); + TERN_(PROUI_PID_TUNE, dwinPidTuning(isbed ? PIDTEMPBED_START : PIDTEMP_START)); if (target > GHV(CHAMBER_MAX_TARGET, BED_MAX_TARGET, temp_range[heater_id].maxtemp - (HOTEND_OVERSHOOT))) { SERIAL_ECHOPGM(STR_PID_AUTOTUNE); SERIAL_ECHOLNPGM(STR_PID_TEMP_TOO_HIGH); TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_TEMP_TOO_HIGH)); - TERN_(DWIN_PID_TUNE, DWIN_PidTuning(PID_TEMP_TOO_HIGH)); + TERN_(PROUI_PID_TUNE, dwinPidTuning(PID_TEMP_TOO_HIGH)); TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_PID_TEMP_TOO_HIGH))); return; } @@ -820,7 +820,7 @@ volatile bool Temperature::raw_temps_ready = false; if (current_temp > target + MAX_OVERSHOOT_PID_AUTOTUNE) { SERIAL_ECHOPGM(STR_PID_AUTOTUNE); SERIAL_ECHOLNPGM(STR_PID_TEMP_TOO_HIGH); TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_TEMP_TOO_HIGH)); - TERN_(DWIN_PID_TUNE, DWIN_PidTuning(PID_TEMP_TOO_HIGH)); + TERN_(PROUI_PID_TUNE, dwinPidTuning(PID_TEMP_TOO_HIGH)); TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_PID_TEMP_TOO_HIGH))); break; } @@ -857,7 +857,7 @@ volatile bool Temperature::raw_temps_ready = false; #endif if ((ms - _MIN(t1, t2)) > (MAX_CYCLE_TIME_PID_AUTOTUNE * 60L * 1000L)) { TERN_(DWIN_CREALITY_LCD, dwinPopupTemperature(0)); - TERN_(DWIN_PID_TUNE, DWIN_PidTuning(PID_TUNING_TIMEOUT)); + TERN_(PROUI_PID_TUNE, dwinPidTuning(PID_TUNING_TIMEOUT)); TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_TUNING_TIMEOUT)); TERN_(HOST_PROMPT_SUPPORT, hostui.notify(GET_TEXT_F(MSG_PID_TIMEOUT))); SERIAL_ECHOPGM(STR_PID_AUTOTUNE); SERIAL_ECHOLNPGM(STR_PID_TIMEOUT); @@ -910,7 +910,7 @@ volatile bool Temperature::raw_temps_ready = false; TERN_(PRINTER_EVENT_LEDS, printerEventLEDs.onPidTuningDone(color)); TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_DONE)); - TERN_(DWIN_PID_TUNE, DWIN_PidTuning(AUTOTUNE_DONE)); + TERN_(PROUI_PID_TUNE, dwinPidTuning(AUTOTUNE_DONE)); goto EXIT_M303; } @@ -928,7 +928,7 @@ volatile bool Temperature::raw_temps_ready = false; TERN_(PRINTER_EVENT_LEDS, printerEventLEDs.onPidTuningDone(color)); TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_DONE)); - TERN_(DWIN_PID_TUNE, DWIN_PidTuning(AUTOTUNE_DONE)); + TERN_(PROUI_PID_TUNE, dwinPidTuning(AUTOTUNE_DONE)); EXIT_M303: TERN_(TEMP_TUNING_MAINTAIN_FAN, adaptive_fan_slowing = true); @@ -1147,7 +1147,7 @@ volatile bool Temperature::raw_temps_ready = false; // Ensure we don't drift too far from the window between the last sampled temp and the target temperature if (!WITHIN(current_temp, get_sample_3_temp() - 15.0f, hotend.target + 15.0f)) { SERIAL_ECHOLNPGM(STR_MPC_TEMPERATURE_ERROR); - TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(MPC_TEMP_ERROR)); + TERN_(DWIN_LCD_PROUI, dwinMPCTuning(MPC_TEMP_ERROR)); wait_for_heatup = false; return FAILED; } @@ -1187,7 +1187,7 @@ volatile bool Temperature::raw_temps_ready = false; if (!wait_for_heatup) { SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_INTERRUPTED); - TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(MPC_INTERRUPTED)); + TERN_(DWIN_LCD_PROUI, dwinMPCTuning(MPC_INTERRUPTED)); return MeasurementState::CANCELLED; } @@ -1215,7 +1215,7 @@ volatile bool Temperature::raw_temps_ready = false; // Determine ambient temperature. SERIAL_ECHOLNPGM(STR_MPC_COOLING_TO_AMBIENT); #if ENABLED(DWIN_LCD_PROUI) - DWIN_MPCTuning(MPCTEMP_START); + dwinMPCTuning(MPCTEMP_START); LCD_ALERTMESSAGE(MSG_MPC_COOLING_TO_AMBIENT); #else LCD_MESSAGE(MSG_COOLING); @@ -1305,7 +1305,7 @@ volatile bool Temperature::raw_temps_ready = false; } SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_FINISHED); - TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(AUTOTUNE_DONE)); + TERN_(DWIN_LCD_PROUI, dwinMPCTuning(AUTOTUNE_DONE)); SERIAL_ECHOLNPGM("MPC_BLOCK_HEAT_CAPACITY ", mpc.block_heat_capacity); SERIAL_ECHOLNPGM("MPC_SENSOR_RESPONSIVENESS ", p_float_t(mpc.sensor_responsiveness, 4)); From 1bc155e8101001c75b867017fc5fcd31cc5d2f31 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Fri, 30 Jun 2023 17:21:37 -0700 Subject: [PATCH 595/659] =?UTF-8?q?=F0=9F=8E=A8=20Simplify=20BTT=20Octopus?= =?UTF-8?q?=20Max=20EZ=20LCD=20Pins=20(#26019)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h | 142 +++++------------- 1 file changed, 39 insertions(+), 103 deletions(-) diff --git a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h index ee92372b5a..bd230da6fc 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h @@ -325,6 +325,7 @@ #endif // HAS_TMC_UART /** + * 18-pin FPC Connector * ---- * (MISO) PE13 | 1 | * (SCK) PE12 | 2 | @@ -398,100 +399,37 @@ // // LCDs and Controllers // -#if IS_TFTGLCD_PANEL - #if ENABLED(TFTGLCD_PANEL_SPI) - #define TFTGLCD_CS EXP2_03_PIN - #endif - -#elif HAS_WIRED_LCD +#if ENABLED(BTT_MINI_12864_V1) // BTT Mini 12864 V2.0 connected via 18-pin FCP cable #define BEEPER_PIN EXP1_01_PIN #define BTN_ENC EXP1_02_PIN - - #if ENABLED(CR10_STOCKDISPLAY) - - #define LCD_PINS_RS EXP1_07_PIN - - #define BTN_EN1 EXP1_03_PIN - #define BTN_EN2 EXP1_05_PIN - - #define LCD_PINS_EN EXP1_08_PIN - #define LCD_PINS_D4 EXP1_06_PIN - - #else - - #define LCD_PINS_RS EXP1_04_PIN - - #define BTN_EN1 EXP2_03_PIN - #define BTN_EN2 EXP2_05_PIN - - #define LCD_PINS_EN EXP1_03_PIN - #define LCD_PINS_D4 EXP1_05_PIN - - #if ENABLED(FYSETC_MINI_12864) - #define DOGLCD_CS EXP1_03_PIN - #define DOGLCD_A0 EXP1_04_PIN - #define DOGLCD_SCK EXP2_02_PIN - #define DOGLCD_MOSI EXP2_06_PIN - - #define SOFTWARE_SPI - #define FORCE_SOFT_SPI // Use this if default of hardware SPI causes display problems - // results in LCD soft SPI mode 3, SD soft SPI mode 0 - //#define LCD_BACKLIGHT_PIN -1 - #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. - #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) - #ifndef RGB_LED_R_PIN - #define RGB_LED_R_PIN EXP1_06_PIN - #endif - #ifndef RGB_LED_G_PIN - #define RGB_LED_G_PIN EXP1_07_PIN - #endif - #ifndef RGB_LED_B_PIN - #define RGB_LED_B_PIN EXP1_08_PIN - #endif - #elif ENABLED(FYSETC_MINI_12864_2_1) - #define NEOPIXEL_PIN EXP1_06_PIN - #endif - #endif // !FYSETC_MINI_12864 - - #if IS_ULTIPANEL - #define LCD_PINS_D5 EXP1_06_PIN - #define LCD_PINS_D6 EXP1_07_PIN - #define LCD_PINS_D7 EXP1_08_PIN - - #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) - #define BTN_ENC_EN LCD_PINS_D7 // Detect the presence of the encoder - #endif - - #endif - - #endif -#endif // HAS_WIRED_LCD - -// Alter timing for graphical display -#if IS_U8GLIB_ST7920 - #define BOARD_ST7920_DELAY_1 120 - #define BOARD_ST7920_DELAY_2 80 - #define BOARD_ST7920_DELAY_3 580 -#endif - -#if HAS_SPI_TFT - #define TFT_CS_PIN EXP2_04_PIN - #define TFT_A0_PIN EXP2_07_PIN - #define TFT_SCK_PIN EXP2_02_PIN - #define TFT_MISO_PIN EXP2_01_PIN - #define TFT_MOSI_PIN EXP2_06_PIN - - #define TOUCH_INT_PIN EXP1_07_PIN - #define TOUCH_MISO_PIN EXP1_06_PIN - #define TOUCH_MOSI_PIN EXP1_03_PIN - #define TOUCH_SCK_PIN EXP1_05_PIN - #define TOUCH_CS_PIN EXP1_04_PIN + #define LCD_PINS_RS EXP1_04_PIN #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define BTN_ENC EXP1_02_PIN + + #define LCD_PINS_EN EXP1_03_PIN + #define LCD_PINS_D4 EXP1_05_PIN + #define LCD_PINS_D5 EXP1_06_PIN + #define LCD_PINS_D6 EXP1_07_PIN + #define LCD_PINS_D7 EXP1_08_PIN + + #define DOGLCD_CS EXP1_03_PIN + #define DOGLCD_A0 EXP1_04_PIN + #define DOGLCD_SCK EXP2_02_PIN + #define DOGLCD_MOSI EXP2_06_PIN + + #define SOFTWARE_SPI + #define FORCE_SOFT_SPI // Use this if Hardware SPI causes display problems. + // Results in LCD Software SPI mode 3, SD Software SPI mode 0. + + //#define LCD_BACKLIGHT_PIN -1 + #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. + #define NEOPIXEL_PIN EXP1_06_PIN + +#elif HAS_WIRED_LCD + #error "Only BTT_MINI_12864_V1 is currently supported on the BIGTREE_OCTOPUS_MAX_EZ." #endif // @@ -500,28 +438,26 @@ #ifndef NEOPIXEL_PIN #define NEOPIXEL_PIN PE10 #endif - #ifndef NEOPIXEL2_PIN #define NEOPIXEL2_PIN PE9 #endif +// +// WIFI +// #if ENABLED(WIFISUPPORT) - // - // WIFI - // - /** - * ------- - * GND | 9 | | 8 | 3.3V - * (ESP-CS) PG1 | 10 | | 7 | PB15 (ESP-MOSI) - * 3.3V | 11 | | 6 | PB14 (ESP-MISO) - * (ESP-IO0) PG0 | 12 | | 5 | PB13 (ESP-CLK) - * (ESP-IO4) PF15 | 13 | | 4 | -- - * -- | 14 | | 3 | 3.3V (ESP-EN) - * (ESP-RX) PE7 | 15 | | 2 | -- - * (ESP-TX) PE8 | 16 | | 1 | PB2 (ESP-RST) - * ------- - * WIFI + * -------- + * GND | 9 8 | 3.3V + * (ESP-CS) PG1 | 10 7 | PB15 (ESP-MOSI) + * 3.3V | 11 6 | PB14 (ESP-MISO) + * (ESP-IO0) PG0 | 12 5 | PB13 (ESP-CLK) + * (ESP-IO4) PF15 | 13 4 | -- + * -- | 14 3 | 3.3V (ESP-EN) + * (ESP-RX) PE7 | 15 2 | -- + * (ESP-TX) PE8 | 16 1 | PB2 (ESP-RST) + * -------- + * WIFI */ #define ESP_WIFI_MODULE_COM 7 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this #define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 From 0878b99b2cb38ffd40faa12d9e3de3bd659af205 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 30 Jun 2023 19:21:56 -0500 Subject: [PATCH 596/659] =?UTF-8?q?=F0=9F=8C=90=20Language=20Import/Export?= =?UTF-8?q?=20(#25889)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- Marlin/src/feature/pause.cpp | 6 +- Marlin/src/lcd/e3v2/proui/dwin.h | 4 +- .../ftdi_eve_touch_ui/language/language_en.h | 2 + Marlin/src/lcd/language/language_an.h | 93 +- Marlin/src/lcd/language/language_bg.h | 51 +- Marlin/src/lcd/language/language_ca.h | 90 +- Marlin/src/lcd/language/language_cz.h | 182 ++-- Marlin/src/lcd/language/language_da.h | 85 +- Marlin/src/lcd/language/language_de.h | 154 +-- Marlin/src/lcd/language/language_el.h | 51 +- Marlin/src/lcd/language/language_el_gr.h | 51 +- Marlin/src/lcd/language/language_en.h | 197 ++-- Marlin/src/lcd/language/language_es.h | 128 +-- Marlin/src/lcd/language/language_eu.h | 82 +- Marlin/src/lcd/language/language_fi.h | 51 +- Marlin/src/lcd/language/language_fr.h | 135 +-- Marlin/src/lcd/language/language_fr_na.h | 135 +-- Marlin/src/lcd/language/language_gl.h | 126 +-- Marlin/src/lcd/language/language_hr.h | 84 +- Marlin/src/lcd/language/language_hu.h | 131 +-- Marlin/src/lcd/language/language_it.h | 150 ++- Marlin/src/lcd/language/language_jp_kana.h | 51 +- Marlin/src/lcd/language/language_ko_KR.h | 39 +- Marlin/src/lcd/language/language_nl.h | 92 +- Marlin/src/lcd/language/language_pl.h | 124 +-- Marlin/src/lcd/language/language_pt.h | 51 +- Marlin/src/lcd/language/language_pt_br.h | 116 ++- Marlin/src/lcd/language/language_ro.h | 98 +- Marlin/src/lcd/language/language_ru.h | 941 ++++++++---------- Marlin/src/lcd/language/language_sk.h | 191 ++-- Marlin/src/lcd/language/language_sv.h | 129 +-- Marlin/src/lcd/language/language_tr.h | 183 ++-- Marlin/src/lcd/language/language_uk.h | 537 ++++------ Marlin/src/lcd/language/language_vi.h | 57 +- Marlin/src/lcd/language/language_zh_CN.h | 131 +-- Marlin/src/lcd/language/language_zh_TW.h | 114 ++- Marlin/src/lcd/menu/menu_main.cpp | 16 +- buildroot/share/scripts/__init__.py | 0 ...xportTranslations.py => languageExport.py} | 100 +- buildroot/share/scripts/languageImport.py | 219 ++++ buildroot/share/scripts/languageUtil.py | 41 + 42 files changed, 2751 insertions(+), 2470 deletions(-) create mode 100644 buildroot/share/scripts/__init__.py rename buildroot/share/scripts/{exportTranslations.py => languageExport.py} (65%) create mode 100755 buildroot/share/scripts/languageImport.py create mode 100755 buildroot/share/scripts/languageUtil.py diff --git a/.gitignore b/.gitignore index fcdeb5e521..c7d47c607f 100755 --- a/.gitignore +++ b/.gitignore @@ -26,7 +26,8 @@ genpages.exe marlin_config.json mczip.h language*.csv -csv-out/ +out-csv/ +out-language/ *.gen *.sublime-workspace diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp index 02287a51b8..f098ad9c51 100644 --- a/Marlin/src/feature/pause.cpp +++ b/Marlin/src/feature/pause.cpp @@ -546,7 +546,11 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_HEATER_TIMEOUT), GET_TEXT_F(MSG_REHEAT))); - TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_HEATER_TIMEOUT))); + #if ENABLED(TOUCH_UI_FTDI_EVE) + ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FTDI_HEATER_TIMEOUT)); + #elif ENABLED(EXTENSIBLE_UI) + ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_HEATER_TIMEOUT)); + #endif TERN_(HAS_RESUME_CONTINUE, wait_for_user_response(0, true)); // Wait for LCD click or M108 diff --git a/Marlin/src/lcd/e3v2/proui/dwin.h b/Marlin/src/lcd/e3v2/proui/dwin.h index 62bf2ad99e..3c5bad1e9a 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.h +++ b/Marlin/src/lcd/e3v2/proui/dwin.h @@ -47,8 +47,8 @@ namespace GET_LANG(LCD_LANGUAGE) { #define _MSG_PREHEAT(N) \ LSTR MSG_PREHEAT_##N = _UxGT("Preheat ") PREHEAT_## N ##_LABEL; \ LSTR MSG_PREHEAT_## N ##_SETTINGS = _UxGT("Preheat ") PREHEAT_## N ##_LABEL _UxGT(" Conf"); - #if PREHEAT_COUNT > 3 - REPEAT_S(4, PREHEAT_COUNT, _MSG_PREHEAT) + #if PREHEAT_COUNT > 1 + REPEAT_S(2, INCREMENT(PREHEAT_COUNT), _MSG_PREHEAT) #endif } diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h index 9c069d9d24..db37ccfd22 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h @@ -147,6 +147,8 @@ namespace Language_en { LSTR MSG_MOVE_Z_TO_TOP = u8"Raise Z to Top"; LSTR MSG_MAX_SPEED_NO_UNITS = u8"Max Speed"; + //LSTR MSG_FTDI_HEATER_TIMEOUT = u8"Idle timeout, temperature decreased. Press Okay to reheat and again to resume."; + #if ENABLED(TOUCH_UI_LULZBOT_BIO) LSTR MSG_MOVE_TO_HOME = u8"Move to Home"; LSTR MSG_RAISE_PLUNGER = u8"Raise Plunger"; diff --git a/Marlin/src/lcd/language/language_an.h b/Marlin/src/lcd/language/language_an.h index 7d6b6de33b..0d2b96d5a4 100644 --- a/Marlin/src/lcd/language/language_an.h +++ b/Marlin/src/lcd/language/language_an.h @@ -31,7 +31,7 @@ #define DISPLAY_CHARSET_ISO10646_1 #define NOT_EXTENDED_ISO10646_1_5X7 -namespace Language_an { +namespace LanguageNarrow_an { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 1; @@ -55,23 +55,23 @@ namespace Language_an { LSTR MSG_LEVEL_BED_DONE = _UxGT("Nivelacion feita!"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Achustar desfases"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Desfase aplicau"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Precalentar ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Precalentar ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Tot"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Base"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Conf"); - LSTR MSG_PREHEAT_M = _UxGT("Precalentar $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Precalentar $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Precal. $ Boquilla"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Precal. $ Boquilla ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Precalentar $ Tot"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Precalentar $ Base"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Precalentar $ Conf"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Precalentar ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Precalentar ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Tot"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Base"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Conf"); + + LSTR MSG_PREHEAT_M = _UxGT("Precalentar $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Precalentar $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Precal. $ Boquilla"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Precal. $ Boquilla ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Precalentar $ Tot"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Precalentar $ Base"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Precalentar $ Conf"); + LSTR MSG_COOLDOWN = _UxGT("Enfriar"); LSTR MSG_SWITCH_PS_ON = _UxGT("Enchegar Fuent"); LSTR MSG_SWITCH_PS_OFF = _UxGT("Amortar Fuent"); @@ -192,19 +192,11 @@ namespace Language_an { LSTR MSG_INFO_PROTOCOL = _UxGT("Protocolo"); LSTR MSG_CASE_LIGHT = _UxGT("Luz"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Conteo de impresion"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tiempo total d'imp."); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impresion mas larga"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total d'extrusion"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impresions"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Mas larga"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrusion"); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impresions"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Mas larga"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrusion"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Temperatura menima"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Temperatura maxima"); @@ -214,22 +206,35 @@ namespace Language_an { LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Escri. DAC EEPROM"); LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Resumir imp."); - // - // Filament Change screens show up to 3 lines on a 4-line display - // ...or up to 2 lines on a 3-line display - // - - #if LCD_HEIGHT >= 4 - // Up to 3 lines allowed - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Aguardand iniciar", "d'o filamento", "cambear")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Meta o filamento", "y prete lo boton", "pa continar...")); - #else // LCD_HEIGHT < 4 - // Up to 2 lines allowed - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Aguardand iniciar", "d'o fil. cambear")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("Meta o filamento", "y prete lo boton")); - #endif // LCD_HEIGHT < 4 + // Up to 2 lines allowed + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Aguardand iniciar", "d'o fil. cambear")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("Meta o filamento", "y prete lo boton")); LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Aguardando a", "expulsar filament")); LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Aguardando a", "cargar filamento")); LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Aguardando impre.", "pa continar")); } + +namespace LanguageWide_an { + using namespace LanguageNarrow_an; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Conteo de impresion"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tiempo total d'imp."); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impresion mas larga"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total d'extrusion"); + #endif +} + +namespace LanguageTall_an { + using namespace LanguageWide_an; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Aguardand iniciar", "d'o filamento", "cambear")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Meta o filamento", "y prete lo boton", "pa continar...")); + #endif +} + +namespace Language_an { + using namespace LanguageTall_an; +} diff --git a/Marlin/src/lcd/language/language_bg.h b/Marlin/src/lcd/language/language_bg.h index 17f631090d..ed76dfa48d 100644 --- a/Marlin/src/lcd/language/language_bg.h +++ b/Marlin/src/lcd/language/language_bg.h @@ -30,7 +30,7 @@ #define DISPLAY_CHARSET_ISO10646_5 -namespace Language_bg { +namespace LanguageNarrow_bg { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -44,23 +44,23 @@ namespace Language_bg { LSTR MSG_DISABLE_STEPPERS = _UxGT("Изкл. двигатели"); LSTR MSG_AUTO_HOME = _UxGT("Паркиране"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Задай Начало"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Подгряване ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Подгряване ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Всички"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Легло"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Настройки ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_M = _UxGT("Подгряване $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Подгряване $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Подгряване $ Дюза"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Подгряване $ Дюза ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Подгр. $ Всички"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Подгр. $ Легло"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Настройки $"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Подгряване ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Подгряване ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Всички"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Легло"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Настройки ") PREHEAT_1_LABEL; + + LSTR MSG_PREHEAT_M = _UxGT("Подгряване $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Подгряване $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Подгряване $ Дюза"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Подгряване $ Дюза ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Подгр. $ Всички"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Подгр. $ Легло"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Настройки $"); + LSTR MSG_COOLDOWN = _UxGT("Охлаждане"); LSTR MSG_SWITCH_PS_ON = _UxGT("Вкл. захранване"); LSTR MSG_SWITCH_PS_OFF = _UxGT("Изкл. захранване"); @@ -157,3 +157,20 @@ namespace Language_bg { LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Калибровка Център"); LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Неправилен принтер"); } + +namespace LanguageWide_bg { + using namespace LanguageNarrow_bg; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #endif +} + +namespace LanguageTall_bg { + using namespace LanguageWide_bg; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + #endif +} + +namespace Language_bg { + using namespace LanguageTall_bg; +} diff --git a/Marlin/src/lcd/language/language_ca.h b/Marlin/src/lcd/language/language_ca.h index b750ff1551..7a83da7d4e 100644 --- a/Marlin/src/lcd/language/language_ca.h +++ b/Marlin/src/lcd/language/language_ca.h @@ -27,7 +27,7 @@ * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html */ -namespace Language_ca { +namespace LanguageNarrow_ca { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -53,23 +53,23 @@ namespace Language_ca { LSTR MSG_LEVEL_BED_DONE = _UxGT("Anivellament fet!"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ajusta decalatge"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Decalatge aplicat"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Preescalfa ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Preescalfa ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Tot"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Llit"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Conf."); - LSTR MSG_PREHEAT_M = _UxGT("Preescalfa $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Preescalfa $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Preescalfa $ End"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Preescalfa $ End ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Preescalfa $ Tot"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preescalfa $ Llit"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preescalfa $ Conf."); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Preescalfa ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Preescalfa ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Tot"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Llit"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Conf."); + + LSTR MSG_PREHEAT_M = _UxGT("Preescalfa $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Preescalfa $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Preescalfa $ End"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Preescalfa $ End ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Preescalfa $ Tot"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preescalfa $ Llit"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preescalfa $ Conf."); + LSTR MSG_COOLDOWN = _UxGT("Refreda"); LSTR MSG_EXTRUDE = _UxGT("Extrudeix"); @@ -183,19 +183,11 @@ namespace Language_ca { LSTR MSG_INFO_PROTOCOL = _UxGT("Protocol"); LSTR MSG_CASE_LIGHT = _UxGT("Llum"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total impressions"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Acabades"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Temps imprimint"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Treball mes llarg"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total extrudit"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impressions"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Acabades"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Mes llarg"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudit"); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impressions"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Acabades"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Mes llarg"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudit"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp. mínima"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp. màxima"); @@ -208,10 +200,31 @@ namespace Language_ca { LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Impressora incorrecta"); // - // Filament Change screens show up to 3 lines on a 4-line display - // ...or up to 2 lines on a 3-line display + // Filament Change screens show up to 2 lines on a 3-line display // + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Espereu...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Expulsant...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insereix i prem")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Escalfant...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Carregant...")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprenent...")); +} + +namespace LanguageWide_ca { + using namespace LanguageNarrow_ca; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total impressions"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Acabades"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Temps imprimint"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Treball mes llarg"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total extrudit"); + #endif +} + +namespace LanguageTall_ca { + using namespace LanguageWide_ca; #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Esperant per", "iniciar el canvi", "de filament")); LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Esperant per", "treure filament")); LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Poseu filament", "i premeu el boto", "per continuar...")); @@ -219,12 +232,9 @@ namespace Language_ca { LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Escalfant nozzle", "Espereu...")); LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Esperant carrega", "de filament")); LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Esperant per", "reprendre")); - #else // LCD_HEIGHT < 4 - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Espereu...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Expulsant...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insereix i prem")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Escalfant...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Carregant...")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprenent...")); - #endif // LCD_HEIGHT < 4 + #endif +} + +namespace Language_ca { + using namespace LanguageTall_ca; } diff --git a/Marlin/src/lcd/language/language_cz.h b/Marlin/src/lcd/language/language_cz.h index 1f697f8d5a..ba54eb051e 100644 --- a/Marlin/src/lcd/language/language_cz.h +++ b/Marlin/src/lcd/language/language_cz.h @@ -35,7 +35,7 @@ #define DISPLAY_CHARSET_ISO10646_CZ -namespace Language_cz { +namespace LanguageNarrow_cz { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -60,11 +60,7 @@ namespace Language_cz { LSTR MSG_RUN_AUTO_FILES = _UxGT("Autostart"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Uvolnit motory"); LSTR MSG_DEBUG_MENU = _UxGT("Nabídka ladění"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test ukaz. průběhu"); - #else - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test uk. průběhu"); - #endif + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test uk. průběhu"); LSTR MSG_AUTO_HOME = _UxGT("Domovská pozice"); LSTR MSG_AUTO_HOME_X = _UxGT("Domů osa X"); LSTR MSG_AUTO_HOME_Y = _UxGT("Domů osa Y"); @@ -77,23 +73,23 @@ namespace Language_cz { LSTR MSG_Z_FADE_HEIGHT = _UxGT("Výška srovnávání"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Nastavit ofsety"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Ofsety nastaveny"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Zahřát ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Zahřát ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" vše"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" podlož"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" nast"); - LSTR MSG_PREHEAT_M = _UxGT("Zahřát $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Zahřát $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Zahřát $ end"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Zahřát $ end ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Zahřát $ vše"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Zahřát $ podlož"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Zahřát $ nast"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Zahřát ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Zahřát ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" vše"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" podlož"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" nast"); + + LSTR MSG_PREHEAT_M = _UxGT("Zahřát $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Zahřát $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Zahřát $ end"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Zahřát $ end ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Zahřát $ vše"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Zahřát $ podlož"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Zahřát $ nast"); + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Zahřát vlastní"); LSTR MSG_COOLDOWN = _UxGT("Zchladit"); LSTR MSG_LASER_MENU = _UxGT("Ovládání laseru"); @@ -152,10 +148,8 @@ namespace Language_cz { LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Konec úprav sítě"); LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Vlastní síť"); LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Vytvořit síť"); - #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Síť bodů $"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Kontrola sítě $"); - #endif + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Síť bodů $"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Kontrola sítě $"); LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Studená síť bodů"); LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Upravit výšku sítě"); LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Výška"); @@ -414,16 +408,8 @@ namespace Language_cz { LSTR MSG_PLEASE_RESET = _UxGT("Proveďte reset"); LSTR MSG_HEATING = _UxGT("Zahřívání..."); LSTR MSG_COOLING = _UxGT("Chlazení..."); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_BED_HEATING = _UxGT("Zahřívání podložky"); - #else - LSTR MSG_BED_HEATING = _UxGT("Zahřívání podl."); - #endif - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_BED_COOLING = _UxGT("Chlazení podložky"); - #else - LSTR MSG_BED_COOLING = _UxGT("Chlazení podl."); - #endif + LSTR MSG_BED_HEATING = _UxGT("Zahřívání podl."); + LSTR MSG_BED_COOLING = _UxGT("Chlazení podl."); LSTR MSG_CHAMBER_HEATING = _UxGT("Zahřívání komory..."); LSTR MSG_CHAMBER_COOLING = _UxGT("Chlazení komory..."); LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibrace"); @@ -456,19 +442,11 @@ namespace Language_cz { LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Jas světla"); LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("NESPRÁVNÁ TISKÁRNA"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Počet tisků"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Dokončeno"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Celkový čas"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Nejdelší tisk"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Celkem vytlačeno"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Tisky"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Hotovo"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Čas"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Nejdelší"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Vytlačeno"); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Tisky"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Hotovo"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Čas"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Nejdelší"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Vytlačeno"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Teplota min"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Teplota max"); @@ -520,23 +498,13 @@ namespace Language_cz { LSTR MSG_CYCLE_MIX = _UxGT("Střídat mix"); LSTR MSG_GRADIENT_MIX = _UxGT("Přechod mix"); LSTR MSG_REVERSE_GRADIENT = _UxGT("Opačný přechod"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktivní V-nástroj"); - LSTR MSG_START_VTOOL = _UxGT("Spustit V-nástroj"); - LSTR MSG_END_VTOOL = _UxGT("Ukončit V-nástroj"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-nástroje"); - LSTR MSG_RESET_VTOOLS = _UxGT("Resetovat V-nástroj"); - LSTR MSG_COMMIT_VTOOL = _UxGT("Uložit V-nástroj mix"); - LSTR MSG_VTOOLS_RESET = _UxGT("V-nástroj resetovat"); - #else - LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktivní V-nástr."); - LSTR MSG_START_VTOOL = _UxGT("Spustit V-nástr."); - LSTR MSG_END_VTOOL = _UxGT("Ukončit V-nástr."); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-nástr."); - LSTR MSG_RESET_VTOOLS = _UxGT("Reset. V-nástr."); - LSTR MSG_COMMIT_VTOOL = _UxGT("Uložit V-nás. mix"); - LSTR MSG_VTOOLS_RESET = _UxGT("V-nástr. reset."); - #endif + LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktivní V-nástr."); + LSTR MSG_START_VTOOL = _UxGT("Spustit V-nástr."); + LSTR MSG_END_VTOOL = _UxGT("Ukončit V-nástr."); + LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-nástr."); + LSTR MSG_RESET_VTOOLS = _UxGT("Reset. V-nástr."); + LSTR MSG_COMMIT_VTOOL = _UxGT("Uložit V-nás. mix"); + LSTR MSG_VTOOLS_RESET = _UxGT("V-nástr. reset."); LSTR MSG_START_Z = _UxGT("Počáteční Z:"); LSTR MSG_END_Z = _UxGT(" Koncové Z:"); @@ -546,33 +514,18 @@ namespace Language_cz { LSTR MSG_SNAKE = _UxGT("Sn4k3"); LSTR MSG_MAZE = _UxGT("Bludiště"); - #if LCD_HEIGHT >= 4 - // Up to 3 lines allowed - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stikněte tlačítko", "pro obnovení tisku")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkování...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čekejte prosím", "na zahájení", "výměny filamentu")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Vložte filament", "a stiskněte", "tlačítko...")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klikněte pro", "nahřátí trysky")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Čekejte prosím", "na nahřátí tr.")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Čekejte prosím", "na vysunuti", "filamentu")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Čekejte prosím", "na zavedení", "filamentu")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Vyčkejte na", "vytlačení")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Klikněte pro", "ukončení", "vytlačování")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Čekejte prosím", "na pokračování", "tisku")); - #else // LCD_HEIGHT < 4 - // Up to 2 lines allowed - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stikněte tlač.", "pro obnovení")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkování...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Čekejte...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Vložte, klikněte")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klikněte pro", "nahřátí")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Nahřívání...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Vysouvání...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Zavádění...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Vytlačování...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Klikněte pro", "ukončení")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Pokračování...")); - #endif // LCD_HEIGHT < 4 + // Up to 2 lines allowed + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stikněte tlač.", "pro obnovení")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkování...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Čekejte...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Vložte, klikněte")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klikněte pro", "nahřátí")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Nahřívání...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Vysouvání...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Zavádění...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Vytlačování...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Klikněte pro", "ukončení")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Pokračování...")); LSTR MSG_TMC_DRIVERS = _UxGT("TMC budiče"); LSTR MSG_TMC_CURRENT = _UxGT("Proud budičů"); @@ -586,3 +539,46 @@ namespace Language_cz { LSTR MSG_BACKLASH_CORRECTION = _UxGT("Korekce"); LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Vyhlazení"); } + +namespace LanguageWide_cz { + using namespace LanguageNarrow_cz; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test ukaz. průběhu"); + LSTR MSG_BED_HEATING = _UxGT("Zahřívání podložky"); + LSTR MSG_BED_COOLING = _UxGT("Chlazení podložky"); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Počet tisků"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Dokončeno"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Celkový čas"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Nejdelší tisk"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Celkem vytlačeno"); + LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktivní V-nástroj"); + LSTR MSG_START_VTOOL = _UxGT("Spustit V-nástroj"); + LSTR MSG_END_VTOOL = _UxGT("Ukončit V-nástroj"); + LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-nástroje"); + LSTR MSG_RESET_VTOOLS = _UxGT("Resetovat V-nástroj"); + LSTR MSG_COMMIT_VTOOL = _UxGT("Uložit V-nástroj mix"); + LSTR MSG_VTOOLS_RESET = _UxGT("V-nástroj resetovat"); + #endif +} + +namespace LanguageTall_cz { + using namespace LanguageWide_cz; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stikněte tlačítko", "pro obnovení tisku")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkování...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čekejte prosím", "na zahájení", "výměny filamentu")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Vložte filament", "a stiskněte", "tlačítko...")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klikněte pro", "nahřátí trysky")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Čekejte prosím", "na nahřátí tr.")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Čekejte prosím", "na vysunuti", "filamentu")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Čekejte prosím", "na zavedení", "filamentu")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Vyčkejte na", "vytlačení")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Klikněte pro", "ukončení", "vytlačování")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Čekejte prosím", "na pokračování", "tisku")); + #endif +} + +namespace Language_cz { + using namespace LanguageTall_cz; +} diff --git a/Marlin/src/lcd/language/language_da.h b/Marlin/src/lcd/language/language_da.h index 91dc3513f7..6a7bcad598 100644 --- a/Marlin/src/lcd/language/language_da.h +++ b/Marlin/src/lcd/language/language_da.h @@ -30,7 +30,7 @@ #define DISPLAY_CHARSET_ISO10646_1 -namespace Language_da { +namespace LanguageNarrow_da { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -47,23 +47,23 @@ namespace Language_da { LSTR MSG_LEVEL_BED_DONE = _UxGT("Bed level er færdig!"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Sæt forsk. af home"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Forsk. er nu aktiv"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Forvarm ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Forvarm ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Alle"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Bed"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" conf"); - LSTR MSG_PREHEAT_M = _UxGT("Forvarm $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Forvarm $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Forvarm $ end"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Forvarm $ end ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Forvarm $ Alle"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Forvarm $ Bed"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Forvarm $ conf"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Forvarm ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Forvarm ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Alle"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Bed"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" conf"); + + LSTR MSG_PREHEAT_M = _UxGT("Forvarm $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Forvarm $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Forvarm $ end"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Forvarm $ end ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Forvarm $ Alle"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Forvarm $ Bed"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Forvarm $ conf"); + LSTR MSG_COOLDOWN = _UxGT("Afkøl"); LSTR MSG_SWITCH_PS_ON = _UxGT("Slå strøm til"); LSTR MSG_SWITCH_PS_OFF = _UxGT("Slå strøm fra"); @@ -158,19 +158,11 @@ namespace Language_da { LSTR MSG_INFO_BOARD_MENU = _UxGT("Kort Info"); LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistors"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Ant. Prints"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Færdige"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total print tid"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Længste print"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extruderet"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Prints"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Færdige"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Længste"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruderet"); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Prints"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Færdige"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Længste"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruderet"); LSTR MSG_INFO_PSU = _UxGT("Strømfors."); @@ -183,17 +175,36 @@ namespace Language_da { LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Forkert printer"); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Vent venligst...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Udskyder...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Indsæt og klik")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Indtager...")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Fortsætter...")); +} + +namespace LanguageWide_da { + using namespace LanguageNarrow_da; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Ant. Prints"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Færdige"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total print tid"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Længste print"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extruderet"); + #endif +} + +namespace LanguageTall_da { + using namespace LanguageWide_da; #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Vent på start", "af filament", "skift")); LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Vent på", "filament udskyd.")); LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Indsæt filament", "og tryk på knap", "for at fortsætte...")); LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Vent på", "filament indtag")); LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Vent på at print", "fortsætter")); - #else // LCD_HEIGHT < 4 - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Vent venligst...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Udskyder...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Indsæt og klik")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Indtager...")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Fortsætter...")); - #endif // LCD_HEIGHT < 4 + #endif +} + +namespace Language_da { + using namespace LanguageTall_da; } diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h index 33abdbee23..30e2521d23 100644 --- a/Marlin/src/lcd/language/language_de.h +++ b/Marlin/src/lcd/language/language_de.h @@ -28,7 +28,7 @@ * See also https://marlinfw.org/docs/development/lcd_language.html */ -namespace Language_de { +namespace LanguageNarrow_de { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -92,30 +92,23 @@ namespace Language_de { LSTR MSG_TRAMMING_WIZARD = _UxGT("Tramming Assistent"); LSTR MSG_SELECT_ORIGIN = _UxGT("Wählen Sie Ursprung"); LSTR MSG_LAST_VALUE_SP = _UxGT("Letzter Wert "); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" Vorwärmen"); - LSTR MSG_PREHEAT_1_H = PREHEAT_1_LABEL _UxGT(" Vorwärmen ~"); - LSTR MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärmen"); - LSTR MSG_PREHEAT_1_END_E = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärm. ~"); - LSTR MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" Alles Vorwärmen"); - LSTR MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" Bett Vorwärmen"); - LSTR MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" Einstellungen"); - #ifdef PREHEAT_2_LABEL - LSTR MSG_PREHEAT_2 = PREHEAT_2_LABEL _UxGT(" Vorwärmen"); - LSTR MSG_PREHEAT_2_SETTINGS = PREHEAT_2_LABEL _UxGT(" Vorwärmen Konf"); - #endif - #ifdef PREHEAT_3_LABEL - LSTR MSG_PREHEAT_3 = PREHEAT_3_LABEL _UxGT(" Vorwärmen"); - LSTR MSG_PREHEAT_3_SETTINGS = PREHEAT_3_LABEL _UxGT(" Vorwärmen Konf"); - #endif - LSTR MSG_PREHEAT_M = _UxGT("$ Vorwärmen"); - LSTR MSG_PREHEAT_M_H = _UxGT("$ Vorwärmen") " ~"; - LSTR MSG_PREHEAT_M_END = _UxGT("$ Extr. Vorwärmen"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("$ Extr. Vorwärm. ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("$ Alles Vorwärmen"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("$ Bett Vorwärmen"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("$ Einstellungen"); - #endif + + LSTR MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" Vorwärmen"); + LSTR MSG_PREHEAT_1_H = PREHEAT_1_LABEL _UxGT(" Vorwärmen ~"); + LSTR MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärmen"); + LSTR MSG_PREHEAT_1_END_E = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärm. ~"); + LSTR MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" Alles Vorwärmen"); + LSTR MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" Bett Vorwärmen"); + LSTR MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" Einstellungen"); + + LSTR MSG_PREHEAT_M = _UxGT("$ Vorwärmen"); + LSTR MSG_PREHEAT_M_H = _UxGT("$ Vorwärmen") " ~"; + LSTR MSG_PREHEAT_M_END = _UxGT("$ Extr. Vorwärmen"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("$ Extr. Vorwärm. ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("$ Alles Vorwärmen"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("$ Bett Vorwärmen"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("$ Einstellungen"); + LSTR MSG_PREHEAT_CUSTOM = _UxGT("benutzerdef. Heizen"); LSTR MSG_COOLDOWN = _UxGT("Abkühlen"); @@ -622,25 +615,13 @@ namespace Language_de { LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Drucker ist gesperrt,"); LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Scrollen zum Entsper."); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Kein Medium eingelegt."); - LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Bitte auf Neustart warten."); - LSTR MSG_PLEASE_PREHEAT = _UxGT("Bitte das Hotend vorheizen."); - LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Druckzähler zurücksetzen"); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Gesamte Drucke"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Komplette Drucke"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Gesamte Druckzeit"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längste Druckzeit"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Gesamt Extrudiert"); - #else - LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Auf Neustart warten"); - LSTR MSG_PLEASE_PREHEAT = _UxGT("Bitte vorheizen"); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Drucke"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Komplette"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Gesamte"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längste"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrud."); - #endif + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Auf Neustart warten"); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Bitte vorheizen"); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Drucke"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Komplette"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Gesamte"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längste"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrud."); LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Temp"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Max Temp"); @@ -729,34 +710,19 @@ namespace Language_de { LSTR MSG_PASSWORD_REMOVED = _UxGT("Passwort gelöscht"); // - // Die Filament-Change-Bildschirme können bis zu 3 Zeilen auf einem 4-Zeilen-Display anzeigen - // ...oder 2 Zeilen auf einem 3-Zeilen-Display. - - #if LCD_HEIGHT >= 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Knopf drücken um", "Druck fortzusetzen")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_2_LINE("Druck ist", "pausiert...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Warte auf den", "Start des", "Filamentwechsels...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Filament einlegen", "und Knopf drücken", "um fortzusetzen")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Knopf drücken um", "Düse aufzuheizen")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Düse heizt auf", "bitte warten...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Warte auf", "Entnahme", "des Filaments...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Warte auf", "Laden des", "Filaments...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Warte auf", "Spülung", "der Düse...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Klicke um", "die Düsenspülung", "zu beenden")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Warte auf", "Fortsetzen des", "Drucks...")); - #else // LCD_HEIGHT < 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Klick zum Fortsetzen")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Pausiert...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Bitte warten...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Laden und Klick")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Klick zum Heizen")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Heizen...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Entnehmen...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Laden...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Spülen...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Klick zum beenden", "der Düsenspülung")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Fortsetzen...")); - #endif // LCD_HEIGHT < 4 + // Die Filament-Change-Bildschirme können bis zu 2 Zeilen auf einem 3-Zeilen-Display. + // + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Klick zum Fortsetzen")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Pausiert...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Bitte warten...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Laden und Klick")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Klick zum Heizen")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Heizen...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Entnehmen...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Laden...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Spülen...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Klick zum beenden", "der Düsenspülung")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Fortsetzen...")); LSTR MSG_TMC_DRIVERS = _UxGT("TMC Treiber"); // Max length 18 characters LSTR MSG_TMC_CURRENT = _UxGT("Treiber Strom"); @@ -772,11 +738,8 @@ namespace Language_de { LSTR MSG_LEVEL_X_AXIS = _UxGT("X Achse leveln"); LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto. Kalibiren"); - #if ENABLED(TOUCH_UI_FTDI_EVE) - LSTR MSG_HEATER_TIMEOUT = _UxGT("Idle Timeout, Temperatur gefallen. Drücke Okay, um erneut aufzuheizen und fortzufahren."); - #else - LSTR MSG_HEATER_TIMEOUT = _UxGT("Heizungs Timeout"); - #endif + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Idle Timeout, Temperatur gefallen. Drücke Okay, um erneut aufzuheizen und fortzufahren."); + LSTR MSG_HEATER_TIMEOUT = _UxGT("Heizungs Timeout"); LSTR MSG_REHEAT = _UxGT("Erneut aufheizen"); LSTR MSG_REHEATING = _UxGT("Erneut aufhei. ..."); LSTR MSG_REHEATDONE = _UxGT("Aufwärmen fertig"); @@ -809,3 +772,40 @@ namespace Language_de { LSTR MSG_SHORT_HOUR = _UxGT("h"); // One character only LSTR MSG_SHORT_MINUTE = _UxGT("m"); // One character only } + +namespace LanguageWide_de { + using namespace LanguageNarrow_de; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Kein Medium eingelegt."); + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Bitte auf Neustart warten."); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Bitte das Hotend vorheizen."); + LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Druckzähler zurücksetzen"); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Gesamte Drucke"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Komplette Drucke"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Gesamte Druckzeit"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längste Druckzeit"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Gesamt Extrudiert"); + #endif +} + +namespace LanguageTall_de { + using namespace LanguageWide_de; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Knopf drücken um", "Druck fortzusetzen")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_2_LINE("Druck ist", "pausiert...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Warte auf den", "Start des", "Filamentwechsels...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Filament einlegen", "und Knopf drücken", "um fortzusetzen")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Knopf drücken um", "Düse aufzuheizen")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Düse heizt auf", "bitte warten...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Warte auf", "Entnahme", "des Filaments...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Warte auf", "Laden des", "Filaments...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Warte auf", "Spülung", "der Düse...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Klicke um", "die Düsenspülung", "zu beenden")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Warte auf", "Fortsetzen des", "Drucks...")); + #endif +} + +namespace Language_de { + using namespace LanguageTall_de; +} diff --git a/Marlin/src/lcd/language/language_el.h b/Marlin/src/lcd/language/language_el.h index aab74cc494..0a8e50109b 100644 --- a/Marlin/src/lcd/language/language_el.h +++ b/Marlin/src/lcd/language/language_el.h @@ -30,7 +30,7 @@ #define DISPLAY_CHARSET_ISO10646_GREEK -namespace Language_el { +namespace LanguageNarrow_el { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -64,23 +64,23 @@ namespace Language_el { LSTR MSG_LEVEL_BED_DONE = _UxGT("Τέλος επιπεδοποίησης!"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ορισμός μετατοπίσεων"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Εφαρμογή μετατοπίσεων"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" bed"); // SHORTEN - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); // SHORTEN - LSTR MSG_PREHEAT_M = _UxGT("Προθέρμανση $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Προθέρμανση $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Προθέρμανση $ End"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Προθέρμανση $ End ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Προθέρμανση $ όλα"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Προθέρμανση $ bed"); // SHORTEN - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Προθέρμανση $ επιβεβαίωση"); // SHORTEN - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" bed"); // SHORTEN + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); // SHORTEN + + LSTR MSG_PREHEAT_M = _UxGT("Προθέρμανση $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Προθέρμανση $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Προθέρμανση $ End"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Προθέρμανση $ End ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Προθέρμανση $ όλα"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Προθέρμανση $ bed"); // SHORTEN + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Προθέρμανση $ επιβεβαίωση"); // SHORTEN + LSTR MSG_COOLDOWN = _UxGT("Αποθέρμανση"); LSTR MSG_SWITCH_PS_ON = _UxGT("Ενεργοποίηση"); LSTR MSG_SWITCH_PS_OFF = _UxGT("Απενεργοποίηση"); @@ -209,3 +209,20 @@ namespace Language_el { LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Εσφαλμένος εκτυπωτής"); } + +namespace LanguageWide_el { + using namespace LanguageNarrow_el; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #endif +} + +namespace LanguageTall_el { + using namespace LanguageWide_el; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + #endif +} + +namespace Language_el { + using namespace LanguageTall_el; +} diff --git a/Marlin/src/lcd/language/language_el_gr.h b/Marlin/src/lcd/language/language_el_gr.h index 696b1d055d..e766ecb941 100644 --- a/Marlin/src/lcd/language/language_el_gr.h +++ b/Marlin/src/lcd/language/language_el_gr.h @@ -30,7 +30,7 @@ #define DISPLAY_CHARSET_ISO10646_GREEK -namespace Language_el_gr { +namespace LanguageNarrow_el_gr { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -53,23 +53,23 @@ namespace Language_el_gr { LSTR MSG_LEVEL_BED_DONE = _UxGT("Ολοκλήρωση επιπεδοποίησης!"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ορισμός βασικών μετατοπίσεων"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Εφαρμόστηκαν οι μετατοπίσεις"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" κλίνη"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); - LSTR MSG_PREHEAT_M = _UxGT("Προθέρμανση $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Προθέρμανση $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Προθέρμανση $ End"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Προθέρμανση $ End ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Προθέρμανση $ όλα"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Προθέρμανση $ κλίνη"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Προθέρμανση $ επιβεβαίωση"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" κλίνη"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); + + LSTR MSG_PREHEAT_M = _UxGT("Προθέρμανση $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Προθέρμανση $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Προθέρμανση $ End"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Προθέρμανση $ End ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Προθέρμανση $ όλα"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Προθέρμανση $ κλίνη"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Προθέρμανση $ επιβεβαίωση"); + LSTR MSG_COOLDOWN = _UxGT("Μειωση θερμοκρασιας"); LSTR MSG_SWITCH_PS_ON = _UxGT("Ενεργοποίηση"); LSTR MSG_SWITCH_PS_OFF = _UxGT("Απενεργοποίηση"); @@ -197,3 +197,20 @@ namespace Language_el_gr { LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Εσφαλμένος εκτυπωτής"); } + +namespace LanguageWide_el_gr { + using namespace LanguageNarrow_el_gr; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #endif +} + +namespace LanguageTall_el_gr { + using namespace LanguageWide_el_gr; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + #endif +} + +namespace Language_el_gr { + using namespace LanguageTall_el_gr; +} diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index c5288ec9c0..ea86812d0e 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -44,7 +44,11 @@ #define MEDIA_TYPE_EN "Media" -namespace Language_en { +#ifndef PREHEAT_1_LABEL + #define PREHEAT_1_LABEL "" +#endif + +namespace LanguageNarrow_en { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("English"); @@ -113,30 +117,23 @@ namespace Language_en { LSTR MSG_TRAMMING_WIZARD = _UxGT("Tramming Wizard"); LSTR MSG_SELECT_ORIGIN = _UxGT("Select Origin"); LSTR MSG_LAST_VALUE_SP = _UxGT("Last value "); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Preheat ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Preheat ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" All"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Bed"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Conf"); - #ifdef PREHEAT_2_LABEL - LSTR MSG_PREHEAT_2 = _UxGT("Preheat ") PREHEAT_2_LABEL; - LSTR MSG_PREHEAT_2_SETTINGS = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" Conf"); - #endif - #ifdef PREHEAT_3_LABEL - LSTR MSG_PREHEAT_3 = _UxGT("Preheat ") PREHEAT_3_LABEL; - LSTR MSG_PREHEAT_3_SETTINGS = _UxGT("Preheat ") PREHEAT_3_LABEL _UxGT(" Conf"); - #endif - LSTR MSG_PREHEAT_M = _UxGT("Preheat $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Preheat $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Preheat $ End"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Preheat $ End ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Preheat $ All"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preheat $ Bed"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preheat $ Conf"); - #endif + + LSTR MSG_PREHEAT_1 = _UxGT("Preheat ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Preheat ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" All"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Bed"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Conf"); + + LSTR MSG_PREHEAT_M = _UxGT("Preheat $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Preheat $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Preheat $ End"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Preheat $ End ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Preheat $ All"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preheat $ Bed"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preheat $ Conf"); + LSTR MSG_PREHEAT_HOTEND = _UxGT("Preheat Hotend"); LSTR MSG_PREHEAT_CUSTOM = _UxGT("Preheat Custom"); LSTR MSG_COOLDOWN = _UxGT("Cooldown"); @@ -511,25 +508,14 @@ namespace Language_en { LSTR MSG_RESUME_PRINT = _UxGT("Resume Print"); LSTR MSG_STOP_PRINT = _UxGT("Stop Print"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Power Outage"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_HOST_START_PRINT = _UxGT("Start Host Print"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Printing Object"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Cancel Object"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Object {"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Continue Print Job"); - LSTR MSG_MEDIA_MENU = _UxGT("Select from ") MEDIA_TYPE_EN; - LSTR MSG_TURN_OFF = _UxGT("Turn off the printer"); - LSTR MSG_END_LOOPS = _UxGT("End Repeat Loops"); - #else - LSTR MSG_HOST_START_PRINT = _UxGT("Host Start"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Print Obj"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Cancel Obj"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Obj {"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Continue Job"); - LSTR MSG_MEDIA_MENU = MEDIA_TYPE_EN _UxGT(" Print"); - LSTR MSG_TURN_OFF = _UxGT("Turn off now"); - LSTR MSG_END_LOOPS = _UxGT("End Loops"); - #endif + LSTR MSG_HOST_START_PRINT = _UxGT("Host Start"); + LSTR MSG_PRINTING_OBJECT = _UxGT("Print Obj"); + LSTR MSG_CANCEL_OBJECT = _UxGT("Cancel Obj"); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Obj {"); + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Continue Job"); + LSTR MSG_MEDIA_MENU = MEDIA_TYPE_EN _UxGT(" Print"); + LSTR MSG_TURN_OFF = _UxGT("Turn off now"); + LSTR MSG_END_LOOPS = _UxGT("End Loops"); LSTR MSG_NO_MEDIA = _UxGT("No ") MEDIA_TYPE_EN; LSTR MSG_DWELL = _UxGT("Sleep..."); LSTR MSG_USERWAIT = _UxGT("Click to Resume..."); @@ -579,12 +565,9 @@ namespace Language_en { LSTR MSG_FILAMENTUNLOAD = _UxGT("Unload Filament"); LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Unload * Filament"); LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Unload All"); - #if ENABLED(MULTI_VOLUME) - LSTR MSG_ATTACH_MEDIA = _UxGT("Attach SD Card"); - LSTR MSG_ATTACH_USB_MEDIA = _UxGT("Attach USB Drive"); - #else - LSTR MSG_ATTACH_MEDIA = _UxGT("Attach ") MEDIA_TYPE_EN; - #endif + LSTR MSG_ATTACH_MEDIA = _UxGT("Attach ") MEDIA_TYPE_EN; + LSTR MSG_ATTACH_SD_MEDIA = _UxGT("Attach SD Card"); + LSTR MSG_ATTACH_USB_MEDIA = _UxGT("Attach USB Drive"); LSTR MSG_CHANGE_MEDIA = _UxGT("Change ") MEDIA_TYPE_EN; LSTR MSG_RELEASE_MEDIA = _UxGT("Release ") MEDIA_TYPE_EN; LSTR MSG_ZPROBE_OUT = _UxGT("Z Probe Past Bed"); @@ -703,22 +686,12 @@ namespace Language_en { LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Scroll to unlock."); LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Please wait until reboot."); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("No media inserted."); - LSTR MSG_PLEASE_PREHEAT = _UxGT("Please preheat the hot end."); - LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Reset Print Count"); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Print Count"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Print Time"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest Job Time"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruded Total"); - #else - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("No Media"); - LSTR MSG_PLEASE_PREHEAT = _UxGT("Please Preheat"); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Prints"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruded"); - #endif + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("No Media"); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Please Preheat"); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Prints"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruded"); LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completed"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Temp"); @@ -808,35 +781,18 @@ namespace Language_en { LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Remember to Save!"); LSTR MSG_PASSWORD_REMOVED = _UxGT("Password Removed"); - // - // Filament Change screens show up to 3 lines on a 4-line display - // ...or up to 2 lines on a 3-line display - // - #if LCD_HEIGHT >= 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Press Button", "to resume print")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Wait for", "filament change", "to start")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Insert filament", "and press button", "to continue")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Press button", "to heat nozzle")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozzle heating", "Please wait...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Wait for", "filament unload")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Wait for", "filament load")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Wait for", "filament purge")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Click to finish", "filament purge")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Wait for print", "to resume...")); - #else - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Click to continue")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Please wait...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insert and Click")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Click to heat")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Heating...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Ejecting...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Loading...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purging...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Click to finish")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Resuming...")); - #endif + // Filament Change screens show up to 2 lines on a 3-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Click to continue")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Please wait...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insert and Click")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Click to heat")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Heating...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Ejecting...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Loading...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purging...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Click to finish")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Resuming...")); LSTR MSG_TMC_DRIVERS = _UxGT("TMC Drivers"); LSTR MSG_TMC_CURRENT = _UxGT("Driver Current"); LSTR MSG_TMC_ACURRENT = STR_A _UxGT("Driver Current"); @@ -871,11 +827,8 @@ namespace Language_en { LSTR MSG_LEVEL_X_AXIS = _UxGT("Level X Axis"); LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibrate"); - #if ENABLED(TOUCH_UI_FTDI_EVE) - LSTR MSG_HEATER_TIMEOUT = _UxGT("Idle timeout, temperature decreased. Press Okay to reheat and again to resume."); - #else - LSTR MSG_HEATER_TIMEOUT = _UxGT("Heater Timeout"); - #endif + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Idle timeout, temperature decreased. Press Okay to reheat and again to resume."); + LSTR MSG_HEATER_TIMEOUT = _UxGT("Heater Timeout"); LSTR MSG_REHEAT = _UxGT("Reheat"); LSTR MSG_REHEATING = _UxGT("Reheating..."); LSTR MSG_REHEATDONE = _UxGT("Reheat Done"); @@ -944,5 +897,47 @@ namespace Language_en { LSTR DGUS_MSG_WRITE_EEPROM_FAILED = _UxGT("EEPROM write failed"); LSTR DGUS_MSG_READ_EEPROM_FAILED = _UxGT("EEPROM read failed"); LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Filament runout E%d"); - +} + +namespace LanguageWide_en { + using namespace LanguageNarrow_en; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_HOST_START_PRINT = _UxGT("Start Host Print"); + LSTR MSG_PRINTING_OBJECT = _UxGT("Printing Object"); + LSTR MSG_CANCEL_OBJECT = _UxGT("Cancel Object"); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Object {"); + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Continue Print Job"); + LSTR MSG_MEDIA_MENU = _UxGT("Select from ") MEDIA_TYPE_EN; + LSTR MSG_TURN_OFF = _UxGT("Turn off the printer"); + LSTR MSG_END_LOOPS = _UxGT("End Repeat Loops"); + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("No media inserted."); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Please preheat the hot end."); + LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Reset Print Count"); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Print Count"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Print Time"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest Job Time"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruded Total"); + #endif +} + +namespace LanguageTall_en { + using namespace LanguageWide_en; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Press Button", "to resume print")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Wait for", "filament change", "to start")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Insert filament", "and press button", "to continue")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Press button", "to heat nozzle")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozzle heating", "Please wait...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Wait for", "filament unload")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Wait for", "filament load")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Wait for", "filament purge")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Click to finish", "filament purge")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Wait for print", "to resume...")); + #endif +} + +namespace Language_en { + using namespace LanguageTall_en; } diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h index a487c7d289..3726e25270 100644 --- a/Marlin/src/lcd/language/language_es.h +++ b/Marlin/src/lcd/language/language_es.h @@ -28,7 +28,7 @@ * See also https://marlinfw.org/docs/development/lcd_language.html */ -namespace Language_es { +namespace LanguageNarrow_es { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -72,23 +72,23 @@ namespace Language_es { LSTR MSG_Z_FADE_HEIGHT = _UxGT("Compen. Altura"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ajustar desfases"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Desfase aplicada"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Precal. ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Precal. ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Todo"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Cama"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Ajuste"); - LSTR MSG_PREHEAT_M = _UxGT("Precal. $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Precal. $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Precal. $ Fusor"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Precal. $ Fusor ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Precal. $ Todo"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Precal. $ Cama"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Precal. $ Ajuste"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Precal. ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Precal. ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Todo"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Cama"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Ajuste"); + + LSTR MSG_PREHEAT_M = _UxGT("Precal. $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Precal. $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Precal. $ Fusor"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Precal. $ Fusor ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Precal. $ Todo"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Precal. $ Cama"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Precal. $ Ajuste"); + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Precal. manual"); LSTR MSG_COOLDOWN = _UxGT("Enfriar"); LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frecuencia"); @@ -146,10 +146,8 @@ namespace Language_es { LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Term. edici. Mallado"); LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Crear Mallado Pers."); LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Crear Mallado"); - #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Crear Mallado ($)"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Valid. Mall. ($)"); - #endif + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Crear Mallado ($)"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Valid. Mall. ($)"); LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Crear Mallado Frío"); LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajustar alt. Mallado"); LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Cantidad de altura"); @@ -454,19 +452,11 @@ namespace Language_es { LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Brillo cabina"); LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Impresora incorrecta"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Cont. de impresión"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tiempo total de imp."); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impresión más larga"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extruido"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impresiones"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Más larga"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruido"); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impresiones"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Más larga"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruido"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp. Mínima"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp. Máxima"); @@ -534,31 +524,18 @@ namespace Language_es { LSTR MSG_SNAKE = _UxGT("Sn4k3"); LSTR MSG_MAZE = _UxGT("Maze"); - #if LCD_HEIGHT >= 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Pulsar el botón para", "reanudar impresión")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Aparcando...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Esperando para", "iniciar el cambio", "de filamento")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserte el filamento", "y pulse el botón", "para continuar...")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Pulse el botón para", "calentar la boquilla")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Calentando boquilla", "Espere por favor...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Espere para", "liberar el filamento")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Espere para", "cargar el filamento")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Espere para", "purgar el filamento")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Pulse para finalizar", "la purga de filamen.")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Esperando impresora", "para reanudar...")); - #else - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Pulse para continuar")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Aparcando...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Por Favor espere...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserte y Pulse")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Pulse para Calentar")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Calentando...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Liberando...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Cargando...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purgando...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Pulse para finalizar")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reanudando...")); - #endif + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Pulse para continuar")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Aparcando...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Por Favor espere...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserte y Pulse")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Pulse para Calentar")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Calentando...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Liberando...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Cargando...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purgando...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Pulse para finalizar")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reanudando...")); + LSTR MSG_TMC_DRIVERS = _UxGT("Controladores TMC"); LSTR MSG_TMC_CURRENT = _UxGT("Amperaje Controlador"); LSTR MSG_TMC_HYBRID_THRS = _UxGT("Límite Hibrido"); @@ -577,3 +554,36 @@ namespace Language_es { LSTR MSG_REHEAT = _UxGT("Recalentar"); LSTR MSG_REHEATING = _UxGT("Recalentando..."); } + +namespace LanguageWide_es { + using namespace LanguageNarrow_es; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Cont. de impresión"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tiempo total de imp."); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impresión más larga"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extruido"); + #endif +} + +namespace LanguageTall_es { + using namespace LanguageWide_es; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Pulsar el botón para", "reanudar impresión")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Aparcando...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Esperando para", "iniciar el cambio", "de filamento")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserte el filamento", "y pulse el botón", "para continuar...")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Pulse el botón para", "calentar la boquilla")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Calentando boquilla", "Espere por favor...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Espere para", "liberar el filamento")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Espere para", "cargar el filamento")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Espere para", "purgar el filamento")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Pulse para finalizar", "la purga de filamen.")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Esperando impresora", "para reanudar...")); + #endif +} + +namespace Language_es { + using namespace LanguageTall_es; +} diff --git a/Marlin/src/lcd/language/language_eu.h b/Marlin/src/lcd/language/language_eu.h index 6433fde99f..d96b099f3e 100644 --- a/Marlin/src/lcd/language/language_eu.h +++ b/Marlin/src/lcd/language/language_eu.h @@ -31,7 +31,7 @@ #define DISPLAY_CHARSET_ISO10646_1 #define NOT_EXTENDED_ISO10646_1_5X7 -namespace Language_eu { +namespace LanguageNarrow_eu { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 1; @@ -56,23 +56,23 @@ namespace Language_eu { LSTR MSG_LEVEL_BED_DONE = _UxGT("Berdintzea eginda"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Etxe. offset eza."); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsetak ezarrita"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Berotu ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Berotu ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Guztia"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ohea"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ezarp."); - LSTR MSG_PREHEAT_M = _UxGT("Berotu $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Berotu $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Berotu $ Amaia"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Berotu $ Amaia ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Berotu $ Guztia"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Berotu $ Ohea"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Berotu $ Ezarp."); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Berotu ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Berotu ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Guztia"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ohea"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ezarp."); + + LSTR MSG_PREHEAT_M = _UxGT("Berotu $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Berotu $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Berotu $ Amaia"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Berotu $ Amaia ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Berotu $ Guztia"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Berotu $ Ohea"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Berotu $ Ezarp."); + LSTR MSG_COOLDOWN = _UxGT("Hoztu"); LSTR MSG_SWITCH_PS_ON = _UxGT("Energia piztu"); LSTR MSG_SWITCH_PS_OFF = _UxGT("Energia itzali"); @@ -99,10 +99,8 @@ namespace Language_eu { LSTR MSG_UBL_MESH_EDIT = _UxGT("Sarea editatu"); LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Sarea editatzea eginda"); LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Sarea sortu"); - #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("$ sarea sortu"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("$ sarea balioetsi"); - #endif + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("$ sarea sortu"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("$ sarea balioetsi"); LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Sare hotza sortu"); LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Sarearen altuera doitu"); LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Sarea balioetsi"); @@ -276,19 +274,13 @@ namespace Language_eu { LSTR MSG_INFO_PROTOCOL = _UxGT("Protokoloa"); LSTR MSG_CASE_LIGHT = _UxGT("Kabina Argia"); LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Argiaren Distira"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Inprim. Zenbaketa"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Burututa"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Inprim. denbora"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Imprimatze luzeena"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Estruituta guztira"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Inprimatze"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Burututa"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Guztira"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Luzeena"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Estrusio"); - #endif + + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Inprimatze"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Burututa"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Guztira"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Luzeena"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Estrusio"); + LSTR MSG_INFO_MIN_TEMP = _UxGT("Tenp. Minimoa"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Tenp. Maximoa"); LSTR MSG_INFO_PSU = _UxGT("Elikadura-iturria"); @@ -316,3 +308,25 @@ namespace Language_eu { LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Berotzen...")); LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Kargatzen...")); } + +namespace LanguageWide_eu { + using namespace LanguageNarrow_eu; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Inprim. Zenbaketa"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Burututa"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Inprim. denbora"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Imprimatze luzeena"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Estruituta guztira"); + #endif +} + +namespace LanguageTall_eu { + using namespace LanguageWide_eu; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + #endif +} + +namespace Language_eu { + using namespace LanguageTall_eu; +} diff --git a/Marlin/src/lcd/language/language_fi.h b/Marlin/src/lcd/language/language_fi.h index 8d5e4c7143..9e87bb7578 100644 --- a/Marlin/src/lcd/language/language_fi.h +++ b/Marlin/src/lcd/language/language_fi.h @@ -30,7 +30,7 @@ #define DISPLAY_CHARSET_ISO10646_1 -namespace Language_fi { +namespace LanguageNarrow_fi { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -43,23 +43,23 @@ namespace Language_fi { LSTR MSG_RUN_AUTO_FILES = _UxGT("Automaatti"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Vapauta moottorit"); LSTR MSG_AUTO_HOME = _UxGT("Aja referenssiin"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Esilämmitä ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Kaikki"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Alusta"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Esilämm. ") PREHEAT_1_LABEL _UxGT(" konf"); - LSTR MSG_PREHEAT_M = _UxGT("Esilämmitä $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Esilämmitä $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Esilä. $Suutin"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Esilä. $Suutin ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Esilä. $ Kaikki"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Esilä. $ Alusta"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Esilämm. $ konf"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Esilämmitä ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Kaikki"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Alusta"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Esilämm. ") PREHEAT_1_LABEL _UxGT(" konf"); + + LSTR MSG_PREHEAT_M = _UxGT("Esilämmitä $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Esilämmitä $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Esilä. $Suutin"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Esilä. $Suutin ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Esilä. $ Kaikki"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Esilä. $ Alusta"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Esilämm. $ konf"); + LSTR MSG_COOLDOWN = _UxGT("Jäähdytä"); LSTR MSG_SWITCH_PS_ON = _UxGT("Virta päälle"); LSTR MSG_SWITCH_PS_OFF = _UxGT("Virta pois"); @@ -130,3 +130,20 @@ namespace Language_fi { LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Väärä tulostin"); } + +namespace LanguageWide_fi { + using namespace LanguageNarrow_fi; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #endif +} + +namespace LanguageTall_fi { + using namespace LanguageWide_fi; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + #endif +} + +namespace Language_fi { + using namespace LanguageTall_fi; +} diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h index 4f04345252..c281497e96 100644 --- a/Marlin/src/lcd/language/language_fr.h +++ b/Marlin/src/lcd/language/language_fr.h @@ -30,7 +30,7 @@ #define DISPLAY_CHARSET_ISO10646_1 -namespace Language_fr { +namespace LanguageNarrow_fr { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -76,23 +76,23 @@ namespace Language_fr { LSTR MSG_TRAMMING_WIZARD = _UxGT("Assistant Molettes"); LSTR MSG_SELECT_ORIGIN = _UxGT("Molette du lit"); // Not a selection of the origin LSTR MSG_LAST_VALUE_SP = _UxGT("Ecart origine "); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Préchauffage ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Préchauffage ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" Tout"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" lit"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Régler préch. ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_M = _UxGT("Préchauffage $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Préchauffage $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Préch. $ buse"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Préch. $ buse ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Préch. $ Tout"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Préch. $ lit"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Régler préch. $"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Préchauffage ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Préchauffage ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" Tout"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" lit"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Régler préch. ") PREHEAT_1_LABEL; + + LSTR MSG_PREHEAT_M = _UxGT("Préchauffage $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Préchauffage $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Préch. $ buse"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Préch. $ buse ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Préch. $ Tout"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Préch. $ lit"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Régler préch. $"); + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Préchauf. perso"); LSTR MSG_COOLDOWN = _UxGT("Refroidir"); LSTR MSG_LASER_MENU = _UxGT("Contrôle Laser"); @@ -156,10 +156,8 @@ namespace Language_fr { LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Réglage fin"); LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Terminer"); LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Créer la grille"); - #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Créer grille $"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Impr. grille $"); - #endif + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Créer grille $"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Impr. grille $"); LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Créer grille ..."); LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Mesure à froid"); LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajuster haut. couche"); @@ -485,19 +483,11 @@ namespace Language_fr { LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Luminosité"); LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Imprimante incorrecte"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nbre impressions"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminées"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tps impr. total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impr. la + longue"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total filament"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impressions"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminées"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("+ long"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Filament"); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impressions"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminées"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("+ long"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Filament"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp Min"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp Max"); @@ -566,32 +556,17 @@ namespace Language_fr { LSTR MSG_BAD_PAGE = _UxGT("Erreur index page"); LSTR MSG_BAD_PAGE_SPEED = _UxGT("Erreur vitesse page"); - #if LCD_HEIGHT >= 4 - // Up to 3 lines allowed - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Presser bouton", "pour reprendre")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Attente filament", "pour démarrer")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Insérer filament", "et app. bouton", "pour continuer...")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Presser le bouton", "pour chauffer...")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Buse en chauffe", "Patienter SVP...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Attente", "retrait du filament")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Attente", "chargement filament")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Attente", "Purge filament")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Presser pour finir", "la purge du filament")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Attente reprise", "impression")); - #else // LCD_HEIGHT < 4 - // Up to 2 lines allowed - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clic pour continuer")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Patience...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insérer fil.")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Chauffer ?")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Chauffage...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Retrait fil...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Chargement...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purge...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Terminer ?")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprise...")); - #endif // LCD_HEIGHT < 4 + // Up to 2 lines allowed + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clic pour continuer")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Patience...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insérer fil.")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Chauffer ?")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Chauffage...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Retrait fil...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Chargement...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purge...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Terminer ?")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprise...")); LSTR MSG_TMC_CURRENT = _UxGT("Courant driver"); LSTR MSG_TMC_HYBRID_THRS = _UxGT("Seuil hybride"); @@ -605,11 +580,8 @@ namespace Language_fr { LSTR MSG_LEVEL_X_AXIS = _UxGT("Niveau axe X"); LSTR MSG_AUTO_CALIBRATE = _UxGT("Etalon. auto."); - #if ENABLED(TOUCH_UI_FTDI_EVE) - LSTR MSG_HEATER_TIMEOUT = _UxGT("En protection, temp. réduite. Ok pour rechauffer et continuer."); - #else - LSTR MSG_HEATER_TIMEOUT = _UxGT("En protection"); - #endif + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("En protection, temp. réduite. Ok pour rechauffer et continuer."); + LSTR MSG_HEATER_TIMEOUT = _UxGT("En protection"); LSTR MSG_REHEAT = _UxGT("Chauffer"); LSTR MSG_REHEATING = _UxGT("Réchauffe..."); @@ -656,3 +628,36 @@ namespace Language_fr { LSTR MSG_SHORT_HOUR = _UxGT("h"); // One character only LSTR MSG_SHORT_MINUTE = _UxGT("m"); // One character only } + +namespace LanguageWide_fr { + using namespace LanguageNarrow_fr; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nbre impressions"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminées"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tps impr. total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impr. la + longue"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total filament"); + #endif +} + +namespace LanguageTall_fr { + using namespace LanguageWide_fr; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Presser bouton", "pour reprendre")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Attente filament", "pour démarrer")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Insérer filament", "et app. bouton", "pour continuer...")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Presser le bouton", "pour chauffer...")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Buse en chauffe", "Patienter SVP...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Attente", "retrait du filament")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Attente", "chargement filament")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Attente", "Purge filament")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Presser pour finir", "la purge du filament")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Attente reprise", "impression")); + #endif +} + +namespace Language_fr { + using namespace LanguageTall_fr; +} diff --git a/Marlin/src/lcd/language/language_fr_na.h b/Marlin/src/lcd/language/language_fr_na.h index 4441a7970a..05e5b061dd 100644 --- a/Marlin/src/lcd/language/language_fr_na.h +++ b/Marlin/src/lcd/language/language_fr_na.h @@ -31,7 +31,7 @@ #define DISPLAY_CHARSET_ISO10646_1 #define NOT_EXTENDED_ISO10646_1_5X7 -namespace Language_fr_na { +namespace LanguageNarrow_fr_na { using namespace Language_en; // Inherit undefined strings from English LSTR LANGUAGE = _UxGT("Francais"); @@ -76,23 +76,23 @@ namespace Language_fr_na { LSTR MSG_TRAMMING_WIZARD = _UxGT("Assistant Molettes"); LSTR MSG_SELECT_ORIGIN = _UxGT("Molette du lit"); // Not a selection of the origin LSTR MSG_LAST_VALUE_SP = _UxGT("Ecart origine "); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Prechauffage ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Prechauffage ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" buse"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" buse ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" Tout"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" lit"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Regler prech. ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_M = _UxGT("Prechauffage $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Prechauffage $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Prech. $ buse"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Prech. $ buse ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Prech. $ Tout"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Prech. $ lit"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Regler prech. $"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Prechauffage ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Prechauffage ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" buse"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" buse ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" Tout"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" lit"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Regler prech. ") PREHEAT_1_LABEL; + + LSTR MSG_PREHEAT_M = _UxGT("Prechauffage $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Prechauffage $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Prech. $ buse"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Prech. $ buse ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Prech. $ Tout"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Prech. $ lit"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Regler prech. $"); + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Prechauf. perso"); LSTR MSG_COOLDOWN = _UxGT("Refroidir"); LSTR MSG_LASER_MENU = _UxGT("Controle Laser"); @@ -156,10 +156,8 @@ namespace Language_fr_na { LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Reglage fin"); LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Terminer"); LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Creer la grille"); - #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Creer grille $"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Impr. grille $"); - #endif + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Creer grille $"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Impr. grille $"); LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Creer grille ..."); LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Mesure a froid"); LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajuster haut. couche"); @@ -488,19 +486,11 @@ namespace Language_fr_na { LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Luminosite"); LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Imprimante incorrecte"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nbre impressions"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminees"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tps impr. total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impr. la + longue"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total filament"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impressions"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminees"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("+ long"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Filament"); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impressions"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminees"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("+ long"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Filament"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp Min"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp Max"); @@ -569,32 +559,17 @@ namespace Language_fr_na { LSTR MSG_BAD_PAGE = _UxGT("Erreur index page"); LSTR MSG_BAD_PAGE_SPEED = _UxGT("Erreur vitesse page"); - #if LCD_HEIGHT >= 4 - // Up to 3 lines allowed - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Presser bouton", "pour reprendre")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Attente filament", "pour demarrer")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserer filament", "et app. bouton", "pour continuer...")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Presser le bouton", "pour chauffer...")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Buse en chauffe", "Patienter SVP...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Attente", "retrait du filament")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Attente", "chargement filament")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Attente", "Purge filament")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Presser pour finir", "la purge du filament")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Attente reprise", "impression")); - #else // LCD_HEIGHT < 4 - // Up to 2 lines allowed - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clic pour continuer")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Patience...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserer fil.")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Chauffer ?")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Chauffage...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Retrait fil...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Chargement...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purge...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Terminer ?")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprise...")); - #endif // LCD_HEIGHT < 4 + // Up to 2 lines allowed + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clic pour continuer")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Patience...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserer fil.")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Chauffer ?")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Chauffage...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Retrait fil...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Chargement...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purge...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Terminer ?")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprise...")); LSTR MSG_TMC_CURRENT = _UxGT("Courant driver"); LSTR MSG_TMC_HYBRID_THRS = _UxGT("Seuil hybride"); @@ -608,11 +583,8 @@ namespace Language_fr_na { LSTR MSG_LEVEL_X_AXIS = _UxGT("Niveau axe X"); LSTR MSG_AUTO_CALIBRATE = _UxGT("Etalon. auto."); - #if ENABLED(TOUCH_UI_FTDI_EVE) - LSTR MSG_HEATER_TIMEOUT = _UxGT("En protection, temp. reduite. Ok pour rechauffer et continuer."); - #else - LSTR MSG_HEATER_TIMEOUT = _UxGT("En protection"); - #endif + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("En protection, temp. reduite. Ok pour rechauffer et continuer."); + LSTR MSG_HEATER_TIMEOUT = _UxGT("En protection"); LSTR MSG_REHEAT = _UxGT("Chauffer"); LSTR MSG_REHEATING = _UxGT("Rechauffe..."); @@ -656,3 +628,36 @@ namespace Language_fr_na { LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Sortie de filament E%d"); } + +namespace LanguageWide_fr_na { + using namespace LanguageNarrow_fr_na; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nbre impressions"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminees"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tps impr. total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impr. la + longue"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total filament"); + #endif +} + +namespace LanguageTall_fr_na { + using namespace LanguageWide_fr_na; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Presser bouton", "pour reprendre")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Attente filament", "pour demarrer")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserer filament", "et app. bouton", "pour continuer...")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Presser le bouton", "pour chauffer...")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Buse en chauffe", "Patienter SVP...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Attente", "retrait du filament")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Attente", "chargement filament")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Attente", "Purge filament")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Presser pour finir", "la purge du filament")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Attente reprise", "impression")); + #endif +} + +namespace Language_fr_na { + using namespace LanguageTall_fr_na; +} diff --git a/Marlin/src/lcd/language/language_gl.h b/Marlin/src/lcd/language/language_gl.h index 25b30f71eb..b55a74bb17 100644 --- a/Marlin/src/lcd/language/language_gl.h +++ b/Marlin/src/lcd/language/language_gl.h @@ -30,7 +30,7 @@ #define DISPLAY_CHARSET_ISO10646_1 -namespace Language_gl { +namespace LanguageNarrow_gl { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 1; @@ -69,23 +69,23 @@ namespace Language_gl { LSTR MSG_Z_FADE_HEIGHT = _UxGT("Compensación Altura"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Axustar Desfases"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Desfases aplicados"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Prequentar ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Prequentar ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Todo"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Cama"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" conf"); - LSTR MSG_PREHEAT_M = _UxGT("Prequentar $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Prequentar $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Preque. $ Bico"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Preque. $ Bico ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Preque. $ Todo"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preque. $ Cama"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preque. $ conf"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Prequentar ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Prequentar ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Todo"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Cama"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" conf"); + + LSTR MSG_PREHEAT_M = _UxGT("Prequentar $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Prequentar $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Preque. $ Bico"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Preque. $ Bico ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Preque. $ Todo"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preque. $ Cama"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preque. $ conf"); + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Preque. Personali."); LSTR MSG_COOLDOWN = _UxGT("Arrefriar"); LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frecuencia"); @@ -143,10 +143,8 @@ namespace Language_gl { LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Fin Edición da Malla"); LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Crear Malla Person."); LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Crear Malla"); - #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Crear Malla ($)"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Validar Malla ($)"); - #endif + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Crear Malla ($)"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Validar Malla ($)"); LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Crear Malla Fría"); LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Axustar Altura Malla"); LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Altura"); @@ -469,19 +467,11 @@ namespace Language_gl { LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Brillo Luces"); LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("IMPRESORA INCORRECTA"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total Impresións"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo Total Imp."); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impresión máis longa"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extruído"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impresións"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Máis Longa"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruido"); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impresións"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Máis Longa"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruido"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp Mín"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp Máx"); @@ -549,31 +539,17 @@ namespace Language_gl { LSTR MSG_SNAKE = _UxGT("Sn4k3"); LSTR MSG_MAZE = _UxGT("Labirinto"); - #if LCD_HEIGHT >= 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Preme o botón para", "continuar impresión")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Estacionando...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Agarde para", "comezar cambio", "de filamento")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Introduza o", "filamento e", "faga click")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Prema o botón para", "quentar o bico")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Quentando bico", "Agarde, por favor...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Agarde pola", "descarga do", "filamento")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Agarde pola", "carga do", "filamento")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Agarde para", "purgar o filamento")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Prema para finalizar", "a purga do filamen.")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Agarde a que", "se retome", "a impresión")); - #else - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Premer para continuar")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Estacionando...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Agarde...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Introduza e click")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Prema para quentar")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Quentando...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Descargando...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Cargando...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purgando...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Prema para finalizar")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Retomando...")); - #endif + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Premer para continuar")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Estacionando...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Agarde...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Introduza e click")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Prema para quentar")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Quentando...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Descargando...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Cargando...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purgando...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Prema para finalizar")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Retomando...")); LSTR MSG_TMC_DRIVERS = _UxGT("Controladores TMC"); LSTR MSG_TMC_CURRENT = _UxGT("Controlador Actual"); @@ -593,3 +569,35 @@ namespace Language_gl { LSTR MSG_REHEAT = _UxGT("Requentar"); LSTR MSG_REHEATING = _UxGT("Requentando..."); } + +namespace LanguageWide_gl { + using namespace LanguageNarrow_gl; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total Impresións"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo Total Imp."); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impresión máis longa"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extruído"); + #endif +} + +namespace LanguageTall_gl { + using namespace LanguageWide_gl; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Preme o botón para", "continuar impresión")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Agarde para", "comezar cambio", "de filamento")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Introduza o", "filamento e", "faga click")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Prema o botón para", "quentar o bico")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Quentando bico", "Agarde, por favor...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Agarde pola", "descarga do", "filamento")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Agarde pola", "carga do", "filamento")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Agarde para", "purgar o filamento")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Prema para finalizar", "a purga do filamen.")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Agarde a que", "se retome", "a impresión")); + #endif +} + +namespace Language_gl { + using namespace LanguageTall_gl; +} diff --git a/Marlin/src/lcd/language/language_hr.h b/Marlin/src/lcd/language/language_hr.h index a857fb3619..8480708e78 100644 --- a/Marlin/src/lcd/language/language_hr.h +++ b/Marlin/src/lcd/language/language_hr.h @@ -30,7 +30,7 @@ #define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays. -namespace Language_hr { +namespace LanguageNarrow_hr { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -53,23 +53,23 @@ namespace Language_hr { LSTR MSG_LEVEL_BED_DONE = _UxGT("Niveliranje gotovo!"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Postavi home offsete"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets postavljeni"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Predgrij ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Predgrij ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Sve"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Bed"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" conf"); - LSTR MSG_PREHEAT_M = _UxGT("Predgrij $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Predgrij $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Predgrij $ Dizna"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Predgrij $ Dizna ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Predgrij $ Sve"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Predgrij $ Bed"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Predgrij $ conf"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Predgrij ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Predgrij ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Sve"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Bed"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" conf"); + + LSTR MSG_PREHEAT_M = _UxGT("Predgrij $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Predgrij $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Predgrij $ Dizna"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Predgrij $ Dizna ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Predgrij $ Sve"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Predgrij $ Bed"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Predgrij $ conf"); + LSTR MSG_COOLDOWN = _UxGT("Hlađenje"); LSTR MSG_SWITCH_PS_ON = _UxGT("Uključi napajanje"); LSTR MSG_SWITCH_PS_OFF = _UxGT("Isključi napajanje"); @@ -140,19 +140,11 @@ namespace Language_hr { LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Neispravan pisač"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Broj printova"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Završeni"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Ukupno printanja"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najduži print"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudirano ukupno"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Printovi"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Završeni"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Ukupno"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najduži"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudirano"); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Printovi"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Završeni"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Ukupno"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najduži"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudirano"); LSTR MSG_INFO_PSU = _UxGT("Napajanje"); @@ -162,12 +154,30 @@ namespace Language_hr { LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Pričekaj", "filament load")); LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Nastavljam...")); - #if LCD_HEIGHT >= 4 - // Up to 3 lines allowed - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čekaj početak", "filamenta", "promijeni")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Umetni filament", "i pritisni tipku", "za nastavak...")); - #else - // Up to 2 lines allowed - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT("Pričekaj..."); + // Up to 2 lines allowed + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT("Pričekaj..."); +} + +namespace LanguageWide_hr { + using namespace LanguageNarrow_hr; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Broj printova"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Završeni"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Ukupno printanja"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najduži print"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudirano ukupno"); #endif } + +namespace LanguageTall_hr { + using namespace LanguageWide_hr; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čekaj početak", "filamenta", "promijeni")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Umetni filament", "i pritisni tipku", "za nastavak...")); + #endif +} + +namespace Language_hr { + using namespace LanguageTall_hr; +} diff --git a/Marlin/src/lcd/language/language_hu.h b/Marlin/src/lcd/language/language_hu.h index f3880a31a6..39ee0fc558 100644 --- a/Marlin/src/lcd/language/language_hu.h +++ b/Marlin/src/lcd/language/language_hu.h @@ -33,7 +33,7 @@ * A Fordítás utolsó frissítése: 2021.08.30. - 22:20 */ -namespace Language_hu { +namespace LanguageNarrow_hu { using namespace Language_en; // A fordítás az örökölt Amerikai Angol (English) karakterláncokat használja. constexpr uint8_t CHARSIZE = 2; @@ -83,23 +83,23 @@ namespace Language_hu { LSTR MSG_TRAMMING_WIZARD = _UxGT("Elektromos varázsló"); LSTR MSG_SELECT_ORIGIN = _UxGT("Eredeti választása"); LSTR MSG_LAST_VALUE_SP = _UxGT("Utolsó érték "); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Fütés ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Fütés ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Mind"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Ágy"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Beáll"); - LSTR MSG_PREHEAT_M = _UxGT("Fütés $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Fütés $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Fütés $ Fej"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Fütés $ Fej ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Fütés $ Mind"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Fütés $ Ágy"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Fütés $ Beáll"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Fütés ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Fütés ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Mind"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Ágy"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Beáll"); + + LSTR MSG_PREHEAT_M = _UxGT("Fütés $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Fütés $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Fütés $ Fej"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Fütés $ Fej ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Fütés $ Mind"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Fütés $ Ágy"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Fütés $ Beáll"); + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Egyedi elömelegítés"); LSTR MSG_COOLDOWN = _UxGT("Visszahütés"); @@ -531,19 +531,11 @@ namespace Language_hu { LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Fényerösség"); LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("HELYTELEN NYOMTATÓ"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nyomtatás számláló"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Befejezett"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Összes nyomtatási idö"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Leghosszabb munkaidö"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Összes anyag"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nyomtatások"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Befejezett"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Összes"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Leghosszabb"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Kiadott"); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nyomtatások"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Befejezett"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Összes"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Leghosszabb"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Kiadott"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Min höfok"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Max höfok"); @@ -626,34 +618,20 @@ namespace Language_hu { LSTR MSG_PASSWORD_REMOVED = _UxGT("Jelszó törölve"); // - // Filament Change screens show up to 3 lines on a 4-line display - // ...or up to 2 lines on a 3-line display + // Filament Change screens show up to 2 lines on a 3-line display // - #if LCD_HEIGHT >= 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Nyomj gombot", "nyomtatás folytatáshoz")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkolás...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Várj míg", "szálcsere", "indítás")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Szál behelyezés", "majd nyomj gombot", "a folytatáshoz")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Nyomj gombot", "a fej fütéséhez")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Fej fütése", "Kérlek várj...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Várj a", "szál kiadására")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Várj a", "szál betöltésére")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Várj a", "szál tisztításra")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Kattints a készre", "szál tiszta")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Várj a nyomtatóra", "majd folytat...")); - #else - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Katt a folytatáshoz")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkolás...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Kérlek várj...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Behelyez majd katt")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Katt a fütéshez")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Fütés...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Kiadás...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Betöltés...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Tisztítás...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Katt ha kész")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Folytatás...")); - #endif + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Katt a folytatáshoz")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkolás...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Kérlek várj...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Behelyez majd katt")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Katt a fütéshez")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Fütés...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Kiadás...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Betöltés...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Tisztítás...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Katt ha kész")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Folytatás...")); + LSTR MSG_TMC_DRIVERS = _UxGT("TMC meghajtók"); LSTR MSG_TMC_CURRENT = _UxGT("Meghajtó áram"); LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hibrid küszöbérték"); @@ -668,11 +646,8 @@ namespace Language_hu { LSTR MSG_LEVEL_X_AXIS = _UxGT("X tengely szint"); LSTR MSG_AUTO_CALIBRATE = _UxGT("Önkalibrálás"); - #if ENABLED(TOUCH_UI_FTDI_EVE) - LSTR MSG_HEATER_TIMEOUT = _UxGT("Tétlenségi idökorlát, a hömérséklet csökkent. Nyomd meg az OK gombot az ismételt felfütéshez, és újra a folytatáshoz."); - #else - LSTR MSG_HEATER_TIMEOUT = _UxGT("Fütés idökorlátja"); - #endif + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Tétlenségi idökorlát, a hömérséklet csökkent. Nyomd meg az OK gombot az ismételt felfütéshez, és újra a folytatáshoz."); + LSTR MSG_HEATER_TIMEOUT = _UxGT("Fütés idökorlátja"); LSTR MSG_REHEAT = _UxGT("Újrafüt"); LSTR MSG_REHEATING = _UxGT("Újrafütés..."); @@ -698,3 +673,35 @@ namespace Language_hu { LSTR MSG_SHORT_HOUR = _UxGT("ó"); // Csak egy karakter LSTR MSG_SHORT_MINUTE = _UxGT("p"); // Csak egy karakter } + +namespace LanguageWide_hu { + using namespace LanguageNarrow_hu; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nyomtatás számláló"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Befejezett"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Összes nyomtatási idö"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Leghosszabb munkaidö"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Összes anyag"); + #endif +} + +namespace LanguageTall_hu { + using namespace LanguageWide_hu; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Nyomj gombot", "nyomtatás folytatáshoz")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Várj míg", "szálcsere", "indítás")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Szál behelyezés", "majd nyomj gombot", "a folytatáshoz")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Nyomj gombot", "a fej fütéséhez")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Fej fütése", "Kérlek várj...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Várj a", "szál kiadására")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Várj a", "szál betöltésére")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Várj a", "szál tisztításra")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Kattints a készre", "szál tiszta")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Várj a nyomtatóra", "majd folytat...")); + #endif +} + +namespace Language_hu { + using namespace LanguageTall_hu; +} diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index cbdd308f9b..9c78918fcf 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -38,7 +38,7 @@ #define DISPLAY_CHARSET_ISO10646_1 -namespace Language_it { +namespace LanguageNarrow_it { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 1; @@ -106,30 +106,23 @@ namespace Language_it { LSTR MSG_TRAMMING_WIZARD = _UxGT("Wizard Tramming"); LSTR MSG_SELECT_ORIGIN = _UxGT("Selez. origine"); LSTR MSG_LAST_VALUE_SP = _UxGT("Ultimo valore "); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Preriscalda ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Preriscalda ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Tutto"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Piatto"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" conf"); - #ifdef PREHEAT_2_LABEL - LSTR MSG_PREHEAT_2 = _UxGT("Preris.") PREHEAT_2_LABEL; - LSTR MSG_PREHEAT_2_SETTINGS = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" conf"); - #endif - #ifdef PREHEAT_3_LABEL - LSTR MSG_PREHEAT_3 = _UxGT("Preris.") PREHEAT_3_LABEL; - LSTR MSG_PREHEAT_3_SETTINGS = _UxGT("Preris.") PREHEAT_3_LABEL _UxGT(" conf"); - #endif - LSTR MSG_PREHEAT_M = _UxGT("Preriscalda $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Preriscalda $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Preris.$ Ugello"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Preris.$ Ugello ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Preris.$ Tutto"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preris.$ Piatto"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preris.$ conf"); - #endif + + LSTR MSG_PREHEAT_1 = _UxGT("Preriscalda ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Preriscalda ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Tutto"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Piatto"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" conf"); + + LSTR MSG_PREHEAT_M = _UxGT("Preriscalda $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Preriscalda $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Preris.$ Ugello"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Preris.$ Ugello ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Preris.$ Tutto"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preris.$ Piatto"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preris.$ conf"); + LSTR MSG_PREHEAT_HOTEND = _UxGT("Prerisc.Hotend"); LSTR MSG_PREHEAT_CUSTOM = _UxGT("Prerisc.personal."); LSTR MSG_COOLDOWN = _UxGT("Raffredda"); @@ -221,10 +214,8 @@ namespace Language_it { LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Modif.Mesh fatta"); LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Crea Mesh personal."); LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Crea Mesh"); - #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Crea Mesh ($)"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Valida Mesh ($)"); - #endif + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Crea Mesh ($)"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Valida Mesh ($)"); LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Crea Mesh a freddo"); LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Aggiusta Alt. Mesh"); LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Altezza"); @@ -672,22 +663,12 @@ namespace Language_it { LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Scroll x sbloccare."); LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Attendere fino al riavvio."); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Nessun supporto inserito."); - LSTR MSG_PLEASE_PREHEAT = _UxGT("Si prega di preriscaldare l'hot end."); - LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Azzera contatori stampa"); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Contatori stampa"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo totale"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Lavoro più lungo"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Totale estruso"); - #else - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("No Supporto"); - LSTR MSG_PLEASE_PREHEAT = _UxGT("Prerisc. hot end."); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Stampe"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Durata"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Più lungo"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Estruso"); - #endif + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("No Supporto"); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Prerisc. hot end."); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Stampe"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Durata"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Più lungo"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Estruso"); LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completate"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp min"); @@ -778,33 +759,18 @@ namespace Language_it { LSTR MSG_PASSWORD_REMOVED = _UxGT("Password eliminata"); // - // Filament Change screens show up to 3 lines on a 4-line display - // ...or up to 2 lines on a 3-line display + // Filament Change screens show up to 2 lines on a 3-line display // - #if LCD_HEIGHT >= 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Premi per", "riprendere", "la stampa")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Sto parcheggiando...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Attendere avvio", "del cambio", "di filamento")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserisci il", "filamento e premi", "per continuare")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Premi per", "riscaldare ugello")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Riscaldam. ugello", "Attendere prego...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Attendere", "l'espulsione", "del filamento")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Attendere", "il caricamento", "del filamento")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Attendere", "lo spurgo", "del filamento")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Premi x terminare", "lo spurgo", "del filamento")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Attendere", "la ripresa", "della stampa...")); - #else // LCD_HEIGHT < 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Premi x continuare")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Attendere...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserisci e premi")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Riscalda ugello")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Riscaldamento...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Espulsione...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Caricamento...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Spurgo filamento")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Premi x terminare")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Ripresa...")); - #endif // LCD_HEIGHT < 4 + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Premi x continuare")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Attendere...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserisci e premi")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Riscalda ugello")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Riscaldamento...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Espulsione...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Caricamento...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Spurgo filamento")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Premi x terminare")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Ripresa...")); LSTR MSG_TMC_DRIVERS = _UxGT("Driver TMC"); LSTR MSG_TMC_CURRENT = _UxGT("Correnti driver"); @@ -838,11 +804,8 @@ namespace Language_it { LSTR MSG_LEVEL_X_AXIS = _UxGT("Livello asse X"); LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibra"); - #if ENABLED(TOUCH_UI_FTDI_EVE) - LSTR MSG_HEATER_TIMEOUT = _UxGT("Timeout inattività, temperatura diminuita. Premere OK per riscaldare e riprendere di nuovo."); - #else - LSTR MSG_HEATER_TIMEOUT = _UxGT("Timeout riscaldatore"); - #endif + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Timeout inattività, temperatura diminuita. Premere OK per riscaldare e riprendere di nuovo."); + LSTR MSG_HEATER_TIMEOUT = _UxGT("Timeout riscaldatore"); LSTR MSG_REHEAT = _UxGT("Riscalda"); LSTR MSG_REHEATING = _UxGT("Riscaldando..."); LSTR MSG_REHEATDONE = _UxGT("Riscaldato"); @@ -895,3 +858,38 @@ namespace Language_it { LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Filament runout E%d"); } + +namespace LanguageWide_it { + using namespace LanguageNarrow_it; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Nessun supporto inserito."); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Si prega di preriscaldare l'hot end."); + LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Azzera contatori stampa"); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Contatori stampa"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo totale"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Lavoro più lungo"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Totale estruso"); + #endif +} + +namespace LanguageTall_it { + using namespace LanguageWide_it; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Premi per", "riprendere", "la stampa")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Sto parcheggiando...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Attendere avvio", "del cambio", "di filamento")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserisci il", "filamento e premi", "per continuare")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Premi per", "riscaldare ugello")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Riscaldam. ugello", "Attendere prego...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Attendere", "l'espulsione", "del filamento")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Attendere", "il caricamento", "del filamento")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Attendere", "lo spurgo", "del filamento")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Premi x terminare", "lo spurgo", "del filamento")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Attendere", "la ripresa", "della stampa...")); + #endif +} + +namespace Language_it { + using namespace LanguageTall_it; +} diff --git a/Marlin/src/lcd/language/language_jp_kana.h b/Marlin/src/lcd/language/language_jp_kana.h index 950ddcb5e5..d40b972427 100644 --- a/Marlin/src/lcd/language/language_jp_kana.h +++ b/Marlin/src/lcd/language/language_jp_kana.h @@ -31,7 +31,7 @@ //#define DISPLAY_CHARSET_ISO10646_KANA -namespace Language_jp_kana { +namespace LanguageNarrow_jp_kana { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 3; @@ -61,23 +61,23 @@ namespace Language_jp_kana { LSTR MSG_LEVEL_BED_DONE = _UxGT("レベリングカンリョウ"); // "Leveling Done!" LSTR MSG_SET_HOME_OFFSETS = _UxGT("キジュンオフセットセッテイ"); // "Set home offsets" LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("オフセットガテキヨウサレマシタ"); // "Offsets applied" - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" ヨネツ"); // "Preheat " PREHEAT_1_LABEL - LSTR MSG_PREHEAT_1_H = PREHEAT_1_LABEL _UxGT(" ヨネツ ~"); // "Preheat " PREHEAT_1_LABEL - LSTR MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" ヨネツノズル"); // " Nozzle" - LSTR MSG_PREHEAT_1_END_E = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ~"); // " Nozzle" - LSTR MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" スベテヨネツ"); // " All" - LSTR MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" ベッドヨネツ"); // " Bed" - LSTR MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" ヨネツセッテイ"); // " conf" - LSTR MSG_PREHEAT_M = _UxGT("$ ヨネツ"); // "Preheat " PREHEAT_1_LABEL - LSTR MSG_PREHEAT_M_H = _UxGT("$ ヨネツ ~"); // "Preheat " PREHEAT_1_LABEL - LSTR MSG_PREHEAT_M_END = _UxGT("$ ヨネツノズル"); // " Nozzle" - LSTR MSG_PREHEAT_M_END_E = _UxGT("$ ヨネツノズル ~"); // " Nozzle" - LSTR MSG_PREHEAT_M_ALL = _UxGT("$ スベテヨネツ"); // " All" - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("$ ベッドヨネツ"); // " Bed" - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("$ ヨネツセッテイ"); // " conf" - #endif + LSTR MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" ヨネツ"); // "Preheat " PREHEAT_1_LABEL + LSTR MSG_PREHEAT_1_H = PREHEAT_1_LABEL _UxGT(" ヨネツ ~"); // "Preheat " PREHEAT_1_LABEL + LSTR MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" ヨネツノズル"); // " Nozzle" + LSTR MSG_PREHEAT_1_END_E = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ~"); // " Nozzle" + LSTR MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" スベテヨネツ"); // " All" + LSTR MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" ベッドヨネツ"); // " Bed" + LSTR MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" ヨネツセッテイ"); // " conf" + + LSTR MSG_PREHEAT_M = _UxGT("$ ヨネツ"); // "Preheat " PREHEAT_1_LABEL + LSTR MSG_PREHEAT_M_H = _UxGT("$ ヨネツ ~"); // "Preheat " PREHEAT_1_LABEL + LSTR MSG_PREHEAT_M_END = _UxGT("$ ヨネツノズル"); // " Nozzle" + LSTR MSG_PREHEAT_M_END_E = _UxGT("$ ヨネツノズル ~"); // " Nozzle" + LSTR MSG_PREHEAT_M_ALL = _UxGT("$ スベテヨネツ"); // " All" + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("$ ベッドヨネツ"); // " Bed" + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("$ ヨネツセッテイ"); // " conf" + LSTR MSG_COOLDOWN = _UxGT("カネツテイシ"); // "Cooldown" LSTR MSG_SWITCH_PS_ON = _UxGT("デンゲン オン"); // "Switch power on" LSTR MSG_SWITCH_PS_OFF = _UxGT("デンゲン オフ"); // "Switch power off" @@ -247,3 +247,20 @@ namespace Language_jp_kana { LSTR MSG_PRINT_PAUSED = _UxGT("プリントガイチジテイシサレマシタ"); LSTR MSG_PRINTING = _UxGT("プリントチュウ..."); } + +namespace LanguageWide_jp_kana { + using namespace LanguageNarrow_jp_kana; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #endif +} + +namespace LanguageTall_jp_kana { + using namespace LanguageWide_jp_kana; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + #endif +} + +namespace Language_jp_kana { + using namespace LanguageTall_jp_kana; +} diff --git a/Marlin/src/lcd/language/language_ko_KR.h b/Marlin/src/lcd/language/language_ko_KR.h index 27be037344..ee53819741 100644 --- a/Marlin/src/lcd/language/language_ko_KR.h +++ b/Marlin/src/lcd/language/language_ko_KR.h @@ -27,7 +27,7 @@ * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html */ -namespace Language_ko_KR { +namespace LanguageNarrow_ko_KR { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 1; @@ -54,17 +54,17 @@ namespace Language_ko_KR { LSTR MSG_LEVEL_BED_WAITING = _UxGT("누르면 시작합니다"); LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("다음 Point"); LSTR MSG_LEVEL_BED_DONE = _UxGT("레벨링 완료!"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("예열하기 - ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("예열하기 - ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ~"); - LSTR MSG_PREHEAT_M = _UxGT("예열하기 - $"); - LSTR MSG_PREHEAT_M_H = _UxGT("예열하기 - $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("예열하기 - $ 노즐"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("예열하기 - $ 노즐 ~"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("예열하기 - ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("예열하기 - ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ~"); + + LSTR MSG_PREHEAT_M = _UxGT("예열하기 - $"); + LSTR MSG_PREHEAT_M_H = _UxGT("예열하기 - $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("예열하기 - $ 노즐"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("예열하기 - $ 노즐 ~"); + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Custom 예열"); LSTR MSG_COOLDOWN = _UxGT("식히기"); LSTR MSG_SWITCH_PS_ON = _UxGT("스위치 전원 켜기"); @@ -104,3 +104,20 @@ namespace Language_ko_KR { LSTR MSG_STOPPED = _UxGT("멈춤. "); LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("잘못된 프린터"); } + +namespace LanguageWide_ko_KR { + using namespace LanguageNarrow_ko_KR; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #endif +} + +namespace LanguageTall_ko_KR { + using namespace LanguageWide_ko_KR; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + #endif +} + +namespace Language_ko_KR { + using namespace LanguageTall_ko_KR; +} diff --git a/Marlin/src/lcd/language/language_nl.h b/Marlin/src/lcd/language/language_nl.h index bc60d19946..85b484a100 100644 --- a/Marlin/src/lcd/language/language_nl.h +++ b/Marlin/src/lcd/language/language_nl.h @@ -31,7 +31,7 @@ #define DISPLAY_CHARSET_ISO10646_1 #define NOT_EXTENDED_ISO10646_1_5X7 -namespace Language_nl { +namespace LanguageNarrow_nl { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 1; @@ -53,23 +53,23 @@ namespace Language_nl { LSTR MSG_LEVEL_BED_DONE = _UxGT("Bed level kompl."); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Zet home offsets"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("H offset toegep."); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" voorverwarmen"); - LSTR MSG_PREHEAT_1_H = PREHEAT_1_LABEL _UxGT(" voorverw. ~"); - LSTR MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" voorverw. Einde"); - LSTR MSG_PREHEAT_1_END_E = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ~"); - LSTR MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" voorverw. aan"); - LSTR MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" voorverw. Bed"); - LSTR MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" verw. conf"); - LSTR MSG_PREHEAT_M = _UxGT("$ voorverwarmen"); - LSTR MSG_PREHEAT_M_H = _UxGT("$ voorverw. ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("$ voorverw. Einde"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("$ voorverw. Einde ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("$ voorverw. aan"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("$ voorverw. Bed"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("$ verw. conf"); - #endif + LSTR MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" voorverwarmen"); + LSTR MSG_PREHEAT_1_H = PREHEAT_1_LABEL _UxGT(" voorverw. ~"); + LSTR MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" voorverw. Einde"); + LSTR MSG_PREHEAT_1_END_E = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ~"); + LSTR MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" voorverw. aan"); + LSTR MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" voorverw. Bed"); + LSTR MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" verw. conf"); + + LSTR MSG_PREHEAT_M = _UxGT("$ voorverwarmen"); + LSTR MSG_PREHEAT_M_H = _UxGT("$ voorverw. ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("$ voorverw. Einde"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("$ voorverw. Einde ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("$ voorverw. aan"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("$ voorverw. Bed"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("$ verw. conf"); + LSTR MSG_COOLDOWN = _UxGT("Afkoelen"); LSTR MSG_SWITCH_PS_ON = _UxGT("Stroom aan"); LSTR MSG_SWITCH_PS_OFF = _UxGT("Stroom uit"); @@ -180,19 +180,11 @@ namespace Language_nl { LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Onjuiste printer"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Printed Aantal"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Totaal Voltooid"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Totale Printtijd"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Langste Printtijd"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Totaal Extrudeert"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Aantal"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Voltooid"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Printtijd "); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Langste"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrud."); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Aantal"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Voltooid"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Printtijd "); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Langste"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrud."); LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Temp"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Max Temp"); @@ -204,11 +196,32 @@ namespace Language_nl { LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Hervat print"); LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Nozzle: "); // accepted English term // - // Filament Change screens show up to 3 lines on a 4-line display - // ...or up to 2 lines on a 3-line display + // Filament Change screens show up to 2 lines on a 3-line display // + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Wacht voor", "start...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Wacht voor", "uitladen...")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klik knop om...", "verw. nozzle.")); //nozzle accepted English term + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Verwarmen...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("Laad filament", "en druk knop")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Wacht voor", "inladen...")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Wacht voor", "printing...")); +} + +namespace LanguageWide_nl { + using namespace LanguageNarrow_nl; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Printed Aantal"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Totaal Voltooid"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Totale Printtijd"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Langste Printtijd"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Totaal Extrudeert"); + #endif +} + +namespace LanguageTall_nl { + using namespace LanguageWide_nl; #if LCD_HEIGHT >= 4 - // Up to 3 lines + // Filament Change screens show up to 3 lines on a 4-line display LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Wacht voor start", "filament te", "verwisselen")); LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Wacht voor", "filament uit", "te laden")); LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klik knop om...", "verw. nozzle.")); //nozzle accepted English term @@ -216,14 +229,9 @@ namespace Language_nl { LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Laad filament", "en druk knop", "om verder...")); LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Wacht voor", "filament te", "laden")); LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Wacht voor print", "om verder", "te gaan")); - #else - // Up to 2 lines - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Wacht voor", "start...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Wacht voor", "uitladen...")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klik knop om...", "verw. nozzle.")); //nozzle accepted English term - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Verwarmen...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("Laad filament", "en druk knop")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Wacht voor", "inladen...")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Wacht voor", "printing...")); #endif } + +namespace Language_nl { + using namespace LanguageTall_nl; +} diff --git a/Marlin/src/lcd/language/language_pl.h b/Marlin/src/lcd/language/language_pl.h index 8aa12d903d..4efc1720db 100644 --- a/Marlin/src/lcd/language/language_pl.h +++ b/Marlin/src/lcd/language/language_pl.h @@ -38,7 +38,7 @@ #define DISPLAY_CHARSET_ISO10646_PL -namespace Language_pl { +namespace LanguageNarrow_pl { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -81,23 +81,23 @@ namespace Language_pl { LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Poz. zerowa ust."); LSTR MSG_SELECT_ORIGIN = _UxGT("Wybierz punkt zero"); LSTR MSG_LAST_VALUE_SP = _UxGT("Poprzednia wartość "); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" wsz."); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" stół"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" ustaw."); - LSTR MSG_PREHEAT_M = _UxGT("Rozgrzej $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Rozgrzej $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Rozgrzej $ Dysza"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Rozgrzej $ Dysza ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Rozgrzej $ wsz."); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Rozgrzej $ stół"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Rozgrzej $ ustaw."); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" wsz."); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" stół"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" ustaw."); + + LSTR MSG_PREHEAT_M = _UxGT("Rozgrzej $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Rozgrzej $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Rozgrzej $ Dysza"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Rozgrzej $ Dysza ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Rozgrzej $ wsz."); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Rozgrzej $ stół"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Rozgrzej $ ustaw."); + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Rozgrzej własne ust."); LSTR MSG_COOLDOWN = _UxGT("Chłodzenie"); @@ -422,19 +422,11 @@ namespace Language_pl { LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Jasność oświetlenia"); LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Niepoprawna drukarka"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Wydrukowano"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Ukończono"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Czas druku"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdł. druk"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Użyty fil."); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Wydrukowano"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Ukończono"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Razem"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdł. druk"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Użyty fil."); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Wydrukowano"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Ukończono"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Razem"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdł. druk"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Użyty fil."); LSTR MSG_INFO_PSU = _UxGT("Zasilacz"); LSTR MSG_DRIVE_STRENGTH = _UxGT("Siła silnika"); @@ -495,34 +487,20 @@ namespace Language_pl { LSTR MSG_PASSWORD_REMOVED = _UxGT("Hasło usunięte"); // - // Filament Change screens show up to 3 lines on a 4-line display - // ...or up to 2 lines on a 3-line display + // Filament Change screens show up to 2 lines on a 3-line display // - #if LCD_HEIGHT >= 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Nacisnik przycisk", "by wznowić drukowanie")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkowanie...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Czekam na", "zmianę filamentu", "by wystartować")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Włóż filament", "i naciśnij przycisk", "by kontynuować")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Naciśnij przycisk", "by nagrzać dyszę")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nagrzewanie dyszy", "Proszę czekać...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Czekam na", "wyjęcie filamentu")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Czekam na", "włożenie filamentu")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Czekam na", "oczyszczenie filamentu")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Kliknij by zakończyć", "oczyszczanie filamentu")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Czekam na", "wznowienie wydruku...")); - #else - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Kliknij by kontynuować")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkowanie...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Proszę czekać...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Włóż i kliknij")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Kliknij by nagrzać")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Nagrzewanie...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Wysuwanie...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Wsuwanie...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Oczyszczanie...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Kliknij by zakończyć")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Wznawianie...")); - #endif + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Kliknij by kontynuować")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkowanie...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Proszę czekać...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Włóż i kliknij")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Kliknij by nagrzać")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Nagrzewanie...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Wysuwanie...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Wsuwanie...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Oczyszczanie...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Kliknij by zakończyć")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Wznawianie...")); + LSTR MSG_TMC_DRIVERS = _UxGT("Sterowniki TMC"); LSTR MSG_TMC_CURRENT = _UxGT("Prąd sterownika"); LSTR MSG_TMC_HOMING_THRS = _UxGT("Zerowanie bezczujnikowe"); @@ -538,3 +516,35 @@ namespace Language_pl { LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibracja nie powiodła się"); } + +namespace LanguageWide_pl { + using namespace LanguageNarrow_pl; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Wydrukowano"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Ukończono"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Czas druku"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdł. druk"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Użyty fil."); + #endif +} + +namespace LanguageTall_pl { + using namespace LanguageWide_pl; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Nacisnik przycisk", "by wznowić drukowanie")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Czekam na", "zmianę filamentu", "by wystartować")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Włóż filament", "i naciśnij przycisk", "by kontynuować")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Naciśnij przycisk", "by nagrzać dyszę")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nagrzewanie dyszy", "Proszę czekać...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Czekam na", "wyjęcie filamentu")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Czekam na", "włożenie filamentu")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Czekam na", "oczyszczenie filamentu")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Kliknij by zakończyć", "oczyszczanie filamentu")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Czekam na", "wznowienie wydruku...")); + #endif +} + +namespace Language_pl { + using namespace LanguageTall_pl; +} diff --git a/Marlin/src/lcd/language/language_pt.h b/Marlin/src/lcd/language/language_pt.h index ac2cbbdc20..e339c8afd4 100644 --- a/Marlin/src/lcd/language/language_pt.h +++ b/Marlin/src/lcd/language/language_pt.h @@ -31,7 +31,7 @@ #define DISPLAY_CHARSET_ISO10646_1 -namespace Language_pt { +namespace LanguageNarrow_pt { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -52,23 +52,23 @@ namespace Language_pt { LSTR MSG_LEVEL_BED_DONE = _UxGT("Pronto !"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Definir desvio"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets aplicados"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" Tudo"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" ") LCD_STR_THERMOMETER _UxGT("Base"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Definições ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_M = _UxGT("Pre-aquecer $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Pre-aquecer $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Pre-aquecer $ Bico"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Pre-aquecer $ Bico ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Pre-aq. $ Tudo"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Pre-aq. $ ") LCD_STR_THERMOMETER _UxGT("Base"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Definições $"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" Tudo"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" ") LCD_STR_THERMOMETER _UxGT("Base"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Definições ") PREHEAT_1_LABEL; + + LSTR MSG_PREHEAT_M = _UxGT("Pre-aquecer $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Pre-aquecer $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Pre-aquecer $ Bico"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Pre-aquecer $ Bico ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Pre-aq. $ Tudo"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Pre-aq. $ ") LCD_STR_THERMOMETER _UxGT("Base"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Definições $"); + LSTR MSG_COOLDOWN = _UxGT("Arrefecer"); LSTR MSG_SWITCH_PS_ON = _UxGT("Ligar"); LSTR MSG_SWITCH_PS_OFF = _UxGT("Desligar"); @@ -170,3 +170,20 @@ namespace Language_pt { LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibração Completa"); LSTR MSG_CALIBRATION_FAILED = _UxGT("Calibração Falhou"); } + +namespace LanguageWide_pt { + using namespace LanguageNarrow_pt; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #endif +} + +namespace LanguageTall_pt { + using namespace LanguageWide_pt; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + #endif +} + +namespace Language_pt { + using namespace LanguageTall_pt; +} diff --git a/Marlin/src/lcd/language/language_pt_br.h b/Marlin/src/lcd/language/language_pt_br.h index 81344b60c4..14b057d980 100644 --- a/Marlin/src/lcd/language/language_pt_br.h +++ b/Marlin/src/lcd/language/language_pt_br.h @@ -28,7 +28,7 @@ * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html */ -namespace Language_pt_br { +namespace LanguageNarrow_pt_br { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -67,23 +67,23 @@ namespace Language_pt_br { LSTR MSG_Z_FADE_HEIGHT = _UxGT("Suavizar altura"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Compensar origem"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Alteração aplicada"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Extrusora ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_END_E = _UxGT("Extrusora ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_ALL = _UxGT("Pre-aq.Todo ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Pre-aq.Mesa ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Ajustar ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_M = _UxGT("Pre-aquecer $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Pre-aquecer $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Extrusora $"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Extrusora $ ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Pre-aq.Todo $"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Pre-aq.Mesa $"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Ajustar $"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Extrusora ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_END_E = _UxGT("Extrusora ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_ALL = _UxGT("Pre-aq.Todo ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Pre-aq.Mesa ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Ajustar ") PREHEAT_1_LABEL; + + LSTR MSG_PREHEAT_M = _UxGT("Pre-aquecer $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Pre-aquecer $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Extrusora $"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Extrusora $ ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Pre-aq.Todo $"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Pre-aq.Mesa $"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Ajustar $"); + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Customizar Pre-aq."); LSTR MSG_COOLDOWN = _UxGT("Esfriar"); LSTR MSG_SWITCH_PS_ON = _UxGT("Ligar"); @@ -132,10 +132,8 @@ namespace Language_pt_br { LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Fim da Edição"); LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Montar Malha Custom"); LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Montar "); - #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Montar $"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Checar $"); - #endif + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Montar $"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Checar $"); LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Montar Malha fria"); LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajustar Altura"); LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Quant. de Altura"); @@ -394,19 +392,11 @@ namespace Language_pt_br { LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Intensidade Brilho"); LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Impressora Incorreta"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total de Impressões"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Realizadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo de Impressão"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Trabalho Mais longo"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total de Extrusão"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Qtd de Impressões"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Realizadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo de Impressão"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Maior trabalho"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("T. Extrusão"); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Qtd de Impressões"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Realizadas"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo de Impressão"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Maior trabalho"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("T. Extrusão"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp Mín"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp Máx"); @@ -450,9 +440,42 @@ namespace Language_pt_br { LSTR MSG_SNAKE = _UxGT("Sn4k3"); LSTR MSG_MAZE = _UxGT("Labirinto"); + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clique p. continuar")); + LSTR MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Estacionando...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Aguarde...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insira e Clique")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Clique para Aquecer")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Aquecendo...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Ejetando...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Carregando...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purgando...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Clique p. finalizar")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Continuando...")); + + LSTR MSG_TOP_LEFT = _UxGT("Superior Esquerdo"); + LSTR MSG_BOTTOM_LEFT = _UxGT("Inferior Esquerdo"); + LSTR MSG_TOP_RIGHT = _UxGT("Superior Direto"); + LSTR MSG_BOTTOM_RIGHT = _UxGT("Inferior Direto"); + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibração Completa"); + LSTR MSG_CALIBRATION_FAILED = _UxGT("Calibração Falhou"); +} + +namespace LanguageWide_pt_br { + using namespace LanguageNarrow_pt_br; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total de Impressões"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Realizadas"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo de Impressão"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Trabalho Mais longo"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total de Extrusão"); + #endif +} + +namespace LanguageTall_pt_br { + using namespace LanguageWide_pt_br; #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Aperte o botão para", "continuar impressão")); - LSTR MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Estacionando...")); LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Esperando o", "inicio da", "troca de filamento")); LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Coloque filamento", "pressione o botão", "para continuar...")); LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Pressione o botão", "p/ aquecer o bocal")); @@ -462,24 +485,9 @@ namespace Language_pt_br { LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Espere pela", "purga de filamento")); LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Clique para finaliz.", "purga de filamento")); LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Esperando impressão", "continuar")); - #else // LCD_HEIGHT < 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clique p. continuar")); - LSTR MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Estacionando...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Aguarde...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insira e Clique")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Clique para Aquecer")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Aquecendo...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Ejetando...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Carregando...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purgando...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Clique p. finalizar")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Continuando...")); #endif - - LSTR MSG_TOP_LEFT = _UxGT("Superior Esquerdo"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Inferior Esquerdo"); - LSTR MSG_TOP_RIGHT = _UxGT("Superior Direto"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Inferior Direto"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibração Completa"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Calibração Falhou"); +} + +namespace Language_pt_br { + using namespace LanguageTall_pt_br; } diff --git a/Marlin/src/lcd/language/language_ro.h b/Marlin/src/lcd/language/language_ro.h index b4f7550a7f..579c7eb224 100644 --- a/Marlin/src/lcd/language/language_ro.h +++ b/Marlin/src/lcd/language/language_ro.h @@ -29,7 +29,7 @@ * * Translation by cristyanul */ -namespace Language_ro { +namespace LanguageNarrow_ro { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -68,23 +68,23 @@ namespace Language_ro { LSTR MSG_Z_FADE_HEIGHT = _UxGT("Fade Inaltime"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Seteaza Offseturile Acasa"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offseturi Aplicate"); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Preincalzeste ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Preincalzeste ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Tot"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Patul"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Conf"); - LSTR MSG_PREHEAT_M = _UxGT("Preincalzeste $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Preincalzeste $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Preincalzeste $ Capatul"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Preincalzeste $ Capatul ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Preincalzeste $ Tot"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preincalzeste $ Patul"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preincalzeste $ Conf"); - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Preincalzeste ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Preincalzeste ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Tot"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Patul"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Conf"); + + LSTR MSG_PREHEAT_M = _UxGT("Preincalzeste $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Preincalzeste $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Preincalzeste $ Capatul"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Preincalzeste $ Capatul ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Preincalzeste $ Tot"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preincalzeste $ Patul"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preincalzeste $ Conf"); + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Preincalzeste Personalizat"); LSTR MSG_COOLDOWN = _UxGT("Racire"); LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frecventa"); @@ -142,10 +142,8 @@ namespace Language_ro { LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Done Editing Mesh"); LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Build Custom Mesh"); LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Build Mesh"); - #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Build Mesh ($)"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Validate Mesh ($)"); - #endif + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Build Mesh ($)"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Validate Mesh ($)"); LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Build Cold Mesh"); LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Adjust Mesh Height"); LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Height Amount"); @@ -476,19 +474,11 @@ namespace Language_ro { LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Light Brightness"); LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("INCORRECT PRINTER"); -#if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total Printuri"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completat"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Timp Imprimare Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest Job Time"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extrudat"); -#else LSTR MSG_INFO_PRINT_COUNT = _UxGT("Prints"); LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completed"); LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest"); LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruded"); -#endif LSTR MSG_INFO_MIN_TEMP = _UxGT("Temperatura Minima"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Temperatura Maxima"); @@ -560,22 +550,8 @@ namespace Language_ro { LSTR MSG_BAD_PAGE_SPEED = _UxGT("Bad page speed"); // - // Filament Inlocuire screens show up to 3 lines on a 4-line display - // ...or up to 2 lines on a 3-line display + // Filament Inlocuire screens show up to 2 lines on a 3-line display // -#if LCD_HEIGHT >= 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Apasa Butonul", "pentru a reveni la print")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parcare...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Astept ca", "inlocuirea filamentului", "sa inceapa")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Insert filament", "and press button", "to continue")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Press button", "to heat nozzle")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozzle heating", "Please wait...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Wait for", "filament unload")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Wait for", "filament load")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Wait for", "filament purge")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Click to finish", "filament purge")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Wait for print", "to resume...")); -#else LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Click to continue")); LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parcare...")); LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Va rog asteptati...")); @@ -587,7 +563,7 @@ namespace Language_ro { LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Curatare...")); LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Click pentru a termina")); LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Se Reia...")); -#endif + LSTR MSG_TMC_DRIVERS = _UxGT("TMC Drivers"); LSTR MSG_TMC_CURRENT = _UxGT("Driver Current"); LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hybrid Threshold"); @@ -606,3 +582,35 @@ namespace Language_ro { LSTR MSG_REHEAT = _UxGT("Reincalzire"); LSTR MSG_REHEATING = _UxGT("Reincalzire..."); } + +namespace LanguageWide_ro { + using namespace LanguageNarrow_ro; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total Printuri"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completat"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Timp Imprimare Total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest Job Time"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extrudat"); + #endif +} + +namespace LanguageTall_ro { + using namespace LanguageWide_ro; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Apasa Butonul", "pentru a reveni la print")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Astept ca", "inlocuirea filamentului", "sa inceapa")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Insert filament", "and press button", "to continue")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Press button", "to heat nozzle")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozzle heating", "Please wait...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Wait for", "filament unload")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Wait for", "filament load")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Wait for", "filament purge")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Click to finish", "filament purge")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Wait for print", "to resume...")); + #endif +} + +namespace Language_ro { + using namespace LanguageTall_ro; +} diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index 7e00467fa1..46bace2ad9 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -29,7 +29,7 @@ */ #define DISPLAY_CHARSET_ISO10646_5 -namespace Language_ru { +namespace LanguageNarrow_ru { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -43,15 +43,9 @@ namespace Language_ru { LSTR MSG_MEDIA_INSERTED = _UxGT("SD карта вставлена"); LSTR MSG_MEDIA_REMOVED = _UxGT("SD карта извлечена"); LSTR MSG_MEDIA_WAITING = _UxGT("Вставьте SD карту"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Сбой инициализации SD"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Расширенные настройки"); - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переполнение вызова"); - #else - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Сбой инициализ. SD"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Расшир. настройки"); - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переполн. вызова"); - #endif + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Сбой инициализ. SD"); + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Расшир. настройки"); + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переполн. вызова"); LSTR MSG_MEDIA_READ_ERROR = _UxGT("Ошибка чтения"); LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB диск удалён"); LSTR MSG_MEDIA_USB_FAILED = _UxGT("Ошибка USB диска"); @@ -77,71 +71,46 @@ namespace Language_ru { LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Следующая точка"); LSTR MSG_LEVEL_BED_DONE = _UxGT("Выравнивание готово!"); LSTR MSG_Z_FADE_HEIGHT = _UxGT("Лимит выранивания"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Установ. смещения дома"); - LSTR MSG_HOME_OFFSET_X = _UxGT("Смещение дома X"); - LSTR MSG_HOME_OFFSET_Y = _UxGT("Смещение дома Y"); - LSTR MSG_HOME_OFFSET_Z = _UxGT("Смещение дома Z"); - #else - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Установ.смещ.дома"); - LSTR MSG_HOME_OFFSET_X = _UxGT("Смещ. дома X"); - LSTR MSG_HOME_OFFSET_Y = _UxGT("Смещ. дома Y"); - LSTR MSG_HOME_OFFSET_Z = _UxGT("Смещ. дома Z"); - #endif + + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Установ.смещ.дома"); + LSTR MSG_HOME_OFFSET_X = _UxGT("Смещ. дома X"); + LSTR MSG_HOME_OFFSET_Y = _UxGT("Смещ. дома Y"); + LSTR MSG_HOME_OFFSET_Z = _UxGT("Смещ. дома Z"); + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Смещения применены"); LSTR MSG_SELECT_ORIGIN = _UxGT("Выберите ноль"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_LAST_VALUE_SP = _UxGT("Последнее значение "); - #else - LSTR MSG_LAST_VALUE_SP = _UxGT("Послед. знач. "); - #endif - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Нагрев ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Нагреть ~ ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Нагреть сопло ") PREHEAT_1_LABEL _UxGT(" сопло"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Нагреть сопло ~") PREHEAT_1_LABEL _UxGT(" сопло ~");; - LSTR MSG_PREHEAT_1_ALL = _UxGT("Нагреть всё ") PREHEAT_1_LABEL _UxGT(" всё"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Нагреть стол ") PREHEAT_1_LABEL _UxGT(" стол"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Правка предн. ") PREHEAT_1_LABEL _UxGT(" наст."); - #ifdef PREHEAT_2_LABEL - LSTR MSG_PREHEAT_2 = _UxGT("Нагрев ") PREHEAT_2_LABEL; - LSTR MSG_PREHEAT_2_SETTINGS = _UxGT("Нагрев ") PREHEAT_2_LABEL _UxGT(" настр."); - #endif - #ifdef PREHEAT_3_LABEL - LSTR MSG_PREHEAT_3 = _UxGT("Нагрев ") PREHEAT_3_LABEL; - LSTR MSG_PREHEAT_3_SETTINGS = _UxGT("Нагрев ") PREHEAT_3_LABEL _UxGT(" настр."); - #endif - LSTR MSG_PREHEAT_M = _UxGT("Нагрев $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Нагреть ~ $"); - LSTR MSG_PREHEAT_M_END = _UxGT("Нагреть сопло $"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Нагреть сопло ~ $"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Нагреть всё $"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Нагреть стол $"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Настр.нагрева $"); - #endif + LSTR MSG_LAST_VALUE_SP = _UxGT("Послед. знач. "); + + LSTR MSG_PREHEAT_1 = _UxGT("Нагрев ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Нагреть ~ ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Нагреть сопло ") PREHEAT_1_LABEL _UxGT(" сопло"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Нагреть сопло ~") PREHEAT_1_LABEL _UxGT(" сопло ~");; + LSTR MSG_PREHEAT_1_ALL = _UxGT("Нагреть всё ") PREHEAT_1_LABEL _UxGT(" всё"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Нагреть стол ") PREHEAT_1_LABEL _UxGT(" стол"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Правка предн. ") PREHEAT_1_LABEL _UxGT(" наст."); + + LSTR MSG_PREHEAT_M = _UxGT("Нагрев $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Нагреть ~ $"); + LSTR MSG_PREHEAT_M_END = _UxGT("Нагреть сопло $"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Нагреть сопло ~ $"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Нагреть всё $"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Нагреть стол $"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Настр.нагрева $"); + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Нагрев Свой"); LSTR MSG_COOLDOWN = _UxGT("Охлаждение"); LSTR MSG_CUTTER_FREQUENCY = _UxGT("Частота"); LSTR MSG_LASER_MENU = _UxGT("Управление лазером"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_SPINDLE_MENU = _UxGT("Управлен.шпинделем"); - LSTR MSG_LASER_TOGGLE = _UxGT("Переключить лазер"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Переключ. шпиндель"); - LSTR MSG_SPINDLE_POWER = _UxGT("Мощность шпинделя"); - LSTR MSG_LASER_POWER = _UxGT("Мощность лазера"); - LSTR MSG_LASER_PULSE_MS = _UxGT("Тестовый импульс мс"); - LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Переключить обдув"); - LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Переключить вакуум"); - #else - LSTR MSG_SPINDLE_MENU = _UxGT("Управл. шпинд."); - LSTR MSG_LASER_TOGGLE = _UxGT("Переключ.лазер"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Переключ.шпинд"); - LSTR MSG_SPINDLE_POWER = _UxGT("Мощн.шпинделя"); - LSTR MSG_LASER_POWER = _UxGT("Мощн. лазера"); - LSTR MSG_LASER_PULSE_MS = _UxGT("Тест. имп. мс"); - LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Переключ. обдув"); - LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Переключ. вакуум"); - #endif + + LSTR MSG_SPINDLE_MENU = _UxGT("Управл. шпинд."); + LSTR MSG_LASER_TOGGLE = _UxGT("Переключ.лазер"); + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Переключ.шпинд"); + LSTR MSG_SPINDLE_POWER = _UxGT("Мощн.шпинделя"); + LSTR MSG_LASER_POWER = _UxGT("Мощн. лазера"); + LSTR MSG_LASER_PULSE_MS = _UxGT("Тест. имп. мс"); + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Переключ. обдув"); + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Переключ. вакуум"); + LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Управление обдувом"); LSTR MSG_FLOWMETER_FAULT = _UxGT("Ошибка обдува"); LSTR MSG_LASER_FIRE_PULSE = _UxGT("Импульс лазера"); @@ -157,22 +126,12 @@ namespace Language_ru { LSTR MSG_LEVEL_BED = _UxGT("Выровнять стол"); LSTR MSG_BED_TRAMMING = _UxGT("Выровнять углы"); LSTR MSG_NEXT_CORNER = _UxGT("Следующий угол"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вверх до срабатыв. зонда"); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Углы в норме. Вырав.стола"); - #else - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вверх до сраб. зонда"); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Углы в норме. Вырав."); - #endif + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вверх до сраб. зонда"); + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Углы в норме. Вырав."); LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Хорошие точки: "); LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Последняя Z: "); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_MESH_EDITOR = _UxGT("Смещение по Z"); - LSTR MSG_EDITING_STOPPED = _UxGT("Правка сетки окончена"); - #else - LSTR MSG_MESH_EDITOR = _UxGT("Смещение Z"); - LSTR MSG_EDITING_STOPPED = _UxGT("Правка окончена"); - #endif + LSTR MSG_MESH_EDITOR = _UxGT("Смещение Z"); + LSTR MSG_EDITING_STOPPED = _UxGT("Правка окончена"); LSTR MSG_EDIT_MESH = _UxGT("Редактировать сетку"); LSTR MSG_PROBING_POINT = _UxGT("Точка сетки"); LSTR MSG_MESH_X = _UxGT("Индекс X"); @@ -201,13 +160,8 @@ namespace Language_ru { LSTR MSG_UBL_LEVEL_BED = _UxGT("Настройка UBL"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Точка разворота"); LSTR MSG_UBL_MANUAL_MESH = _UxGT("Ручной ввод сетки"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_UBL_BC_INSERT = _UxGT("Разместить шайбу,измерить"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Убрать и замерить стол"); - #else - LSTR MSG_UBL_BC_INSERT = _UxGT("Разм.шайбу, измерить"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Убрать, измер. стол"); - #endif + LSTR MSG_UBL_BC_INSERT = _UxGT("Разм.шайбу, измерить"); + LSTR MSG_UBL_BC_REMOVE = _UxGT("Убрать, измер. стол"); LSTR MSG_UBL_MESH_WIZARD = _UxGT("Мастер сеток UBL"); LSTR MSG_UBL_BC_INSERT2 = _UxGT("Измерение"); LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Двигаемся дальше"); @@ -215,39 +169,21 @@ namespace Language_ru { LSTR MSG_UBL_DEACTIVATE_MESH = _UxGT("Деактивировать UBL"); LSTR MSG_UBL_MESH_EDIT = _UxGT("Редактор сеток"); LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Править свою сетку"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Температура стола"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Температура стола"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Температура сопла"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Температура сопла"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Построить свою сетку"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Правка сетки завершена"); - #else - LSTR MSG_UBL_SET_TEMP_BED = LCD_STR_THERMOMETER _UxGT(" стола, ") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" стола,") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_UBL_SET_TEMP_HOTEND = LCD_STR_THERMOMETER _UxGT(" сопла, ") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" сопла,") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Построить свою"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Правка завершена"); - #endif + LSTR MSG_UBL_SET_TEMP_BED = LCD_STR_THERMOMETER _UxGT(" стола, ") LCD_STR_DEGREE _UxGT("C"); + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" стола,") LCD_STR_DEGREE _UxGT("C"); + LSTR MSG_UBL_SET_TEMP_HOTEND = LCD_STR_THERMOMETER _UxGT(" сопла, ") LCD_STR_DEGREE _UxGT("C"); + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" сопла,") LCD_STR_DEGREE _UxGT("C"); + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Построить свою"); + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Правка завершена"); LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Точная правка сетки"); LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Построить сетку"); LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Построить сетку $"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Построить холодную сетку"); - #else - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Строить холод.сетку"); - #endif + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Строить холод.сетку"); LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Правка высоты сетки"); LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Высота"); LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Проверить сетку"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Проверить сетку $"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Проверить свою сетку"); - #else - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Провер. сетку $"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Провер. свою сетку"); - #endif + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Провер. сетку $"); + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Провер. свою сетку"); LSTR MSG_G26_HEATING_BED = _UxGT("G26 нагрев стола"); LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 нагрев сопла"); LSTR MSG_G26_MANUAL_PRIME = _UxGT("Ручная прочистка"); @@ -257,11 +193,7 @@ namespace Language_ru { LSTR MSG_G26_LEAVING = _UxGT("Выйти из G26"); LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Продолжить сетку"); LSTR MSG_UBL_MESH_LEVELING = _UxGT("Выравнивание сетки"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-х точечное выравнивание"); - #else - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-точечное выравн."); - #endif + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-точечное выравн."); LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Выравнивание сеткой"); LSTR MSG_UBL_MESH_LEVEL = _UxGT("Выровнять сетку"); LSTR MSG_UBL_SIDE_POINTS = _UxGT("Крайние точки"); @@ -269,15 +201,9 @@ namespace Language_ru { LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Вывести карту сетки"); LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Вывести на хост"); LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Вывести в CSV"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Сохранить сетку снаружи"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Вывод информации UBL"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Кол-во заполнителя"); - #else - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Сохранить снаружи"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Информация UBL"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Кол-во заполн."); - #endif + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Сохранить снаружи"); + LSTR MSG_UBL_INFO_UBL = _UxGT("Информация UBL"); + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Кол-во заполн."); LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Ручное заполнение"); LSTR MSG_UBL_SMART_FILLIN = _UxGT("Умное заполнение"); LSTR MSG_UBL_FILLIN_MESH = _UxGT("Заполнить сетку"); @@ -319,11 +245,7 @@ namespace Language_ru { LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Свет по умолчанию"); LSTR MSG_LED_CHANNEL_N = _UxGT("Канал {"); LSTR MSG_LEDS2 = _UxGT("Свет #2"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_NEO2_PRESETS = _UxGT("Свет #2 предустановки"); - #else - LSTR MSG_NEO2_PRESETS = _UxGT("Свет #2 предустан."); - #endif + LSTR MSG_NEO2_PRESETS = _UxGT("Свет #2 предустан."); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Яркость"); LSTR MSG_CUSTOM_LEDS = _UxGT("Свой цвет подсветки"); LSTR MSG_INTENSITY_R = _UxGT("Уровень красного"); @@ -359,15 +281,9 @@ namespace Language_ru { LSTR MSG_NOZZLE_STANDBY = _UxGT("Сопло ожидает"); LSTR MSG_BED = _UxGT("Стол, ") LCD_STR_DEGREE _UxGT("C"); LSTR MSG_CHAMBER = _UxGT("Камера,") LCD_STR_DEGREE _UxGT("C"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_COOLER = _UxGT("Охлаждение лазера"); - LSTR MSG_COOLER_TOGGLE = _UxGT("Переключ. охлажд."); - LSTR MSG_FLOWMETER_SAFETY = _UxGT("Безопасн. потока"); - #else - LSTR MSG_COOLER = _UxGT("Охлажд. лазера"); - LSTR MSG_COOLER_TOGGLE = _UxGT("Переключ. охл."); - LSTR MSG_FLOWMETER_SAFETY = _UxGT("Безопас.потока"); - #endif + LSTR MSG_COOLER = _UxGT("Охлажд. лазера"); + LSTR MSG_COOLER_TOGGLE = _UxGT("Переключ. охл."); + LSTR MSG_FLOWMETER_SAFETY = _UxGT("Безопас.потока"); LSTR MSG_LASER = _UxGT("Лазер"); LSTR MSG_FAN_SPEED = _UxGT("Кулер"); LSTR MSG_FAN_SPEED_N = _UxGT("Кулер ~"); @@ -404,11 +320,7 @@ namespace Language_ru { LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-рывок"); LSTR MSG_VN_JERK = _UxGT("V@-рывок"); LSTR MSG_VE_JERK = _UxGT("Ve-рывок"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Отклонение угла"); - #else - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Отклон.угла"); - #endif + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Отклон.угла"); LSTR MSG_MAX_SPEED = _UxGT("Скорость, мм/с"); LSTR MSG_VMAX_A = _UxGT("Скор.макс ") STR_A; LSTR MSG_VMAX_B = _UxGT("Скор.макс ") STR_B; @@ -442,13 +354,8 @@ namespace Language_ru { LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E в мм") SUPERSCRIPT_THREE; LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E огран.,мм") SUPERSCRIPT_THREE; LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E огран. *"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_FILAMENT_DIAM = _UxGT("Диам. филамента"); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Диам. филамента *"); - #else - LSTR MSG_FILAMENT_DIAM = _UxGT("Диам. филам."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Диам. филам. *"); - #endif + LSTR MSG_FILAMENT_DIAM = _UxGT("Диам. филам."); + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Диам. филам. *"); LSTR MSG_FILAMENT_UNLOAD = _UxGT("Загрузка, мм"); LSTR MSG_FILAMENT_LOAD = _UxGT("Выгрузка, мм"); LSTR MSG_ADVANCE_K = _UxGT("К-фактор LA"); @@ -456,13 +363,8 @@ namespace Language_ru { LSTR MSG_CONTRAST = _UxGT("Контраст экрана"); LSTR MSG_STORE_EEPROM = _UxGT("Сохранить настройки"); LSTR MSG_LOAD_EEPROM = _UxGT("Загрузить настройки"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_RESTORE_DEFAULTS = _UxGT("На базовые параметры"); - LSTR MSG_INIT_EEPROM = _UxGT("Инициализация EEPROM"); - #else - LSTR MSG_RESTORE_DEFAULTS = _UxGT("На базовые парам."); - LSTR MSG_INIT_EEPROM = _UxGT("Инициализ. EEPROM"); - #endif + LSTR MSG_RESTORE_DEFAULTS = _UxGT("На базовые парам."); + LSTR MSG_INIT_EEPROM = _UxGT("Инициализ. EEPROM"); LSTR MSG_ERR_EEPROM_CRC = _UxGT("Сбой EEPROM: CRC"); LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Сбой EEPROM: размер"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Сбой EEPROM: версия"); @@ -511,41 +413,24 @@ namespace Language_ru { LSTR MSG_NO_MOVE = _UxGT("Нет движения."); LSTR MSG_KILLED = _UxGT("УБИТО. "); LSTR MSG_STOPPED = _UxGT("ОСТАНОВЛЕНО. "); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_CONTROL_RETRACT = _UxGT("Откат, мм"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Откат при смене, мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Возврат при смене, мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Возврат при смене, V"); - LSTR MSG_AUTORETRACT = _UxGT("Автооткат"); - #else - LSTR MSG_CONTROL_RETRACT = _UxGT("Откат, мм"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Откат смены,мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Возвр.смены,мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Возвр.смены V"); - LSTR MSG_AUTORETRACT = _UxGT("Автооткат"); - #endif + LSTR MSG_CONTROL_RETRACT = _UxGT("Откат, мм"); + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Откат смены,мм"); + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Возвр.смены,мм"); + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Возвр.смены V"); + LSTR MSG_AUTORETRACT = _UxGT("Автооткат"); LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Подскок Z, мм"); LSTR MSG_CONTROL_RETRACTF = _UxGT("Втягивание V"); LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Возврат, мм"); LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Возврат V"); LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Длина замены"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Дополнительная длина"); - #else - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Доп. длина"); - #endif + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Доп. длина"); LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Длина прочистки"); LSTR MSG_TOOL_CHANGE = _UxGT("Смена сопел"); LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Поднятие по Z"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Начальная скор."); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Скорость отката"); - #else - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Началь.скор."); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Скор.отката"); - #endif + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Началь.скор."); + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Скор.отката"); LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Парковать голову"); LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Скорость возврата"); LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Скорость кулера"); @@ -559,13 +444,8 @@ namespace Language_ru { LSTR MSG_FILAMENTCHANGE = _UxGT("Смена филамента"); LSTR MSG_FILAMENTCHANGE_E = _UxGT("Смена филамента *"); LSTR MSG_FILAMENTLOAD = _UxGT("Загрузить филамент"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_FILAMENTLOAD_E = _UxGT("Загрузить филамент *"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Выгрузить филамент *"); - #else - LSTR MSG_FILAMENTLOAD_E = _UxGT("Подать филамент *"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Убрать филамент *"); - #endif + LSTR MSG_FILAMENTLOAD_E = _UxGT("Подать филамент *"); + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Убрать филамент *"); LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Выгрузить всё"); LSTR MSG_ATTACH_MEDIA = _UxGT("Установить SD карту"); LSTR MSG_CHANGE_MEDIA = _UxGT("Сменить SD карту"); @@ -597,11 +477,7 @@ namespace Language_ru { LSTR MSG_ZPROBE_XOFFSET = _UxGT("Смещение X"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Смещение Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Смещение Z"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Двигать сопло к столу"); - #else - LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Двиг. сопло к столу"); - #endif + LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Двиг. сопло к столу"); LSTR MSG_BABYSTEP_X = _UxGT("Микрошаг X"); LSTR MSG_BABYSTEP_Y = _UxGT("Микрошаг Y"); LSTR MSG_BABYSTEP_Z = _UxGT("Микрошаг Z"); @@ -640,22 +516,12 @@ namespace Language_ru { LSTR MSG_DELTA_RADIUS = _UxGT("Радиус"); LSTR MSG_INFO_MENU = _UxGT("О принтере"); LSTR MSG_INFO_PRINTER_MENU = _UxGT("Данные принтера"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_3POINT_LEVELING = _UxGT("3-точечное выравнивание"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Линейное выравнивание"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Билинейное выравнивание"); - #else - LSTR MSG_3POINT_LEVELING = _UxGT("3-точ. выравнив."); - LSTR MSG_LINEAR_LEVELING = _UxGT("Линейное выравн."); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Билин. выравнив."); - #endif + LSTR MSG_3POINT_LEVELING = _UxGT("3-точ. выравнив."); + LSTR MSG_LINEAR_LEVELING = _UxGT("Линейное выравн."); + LSTR MSG_BILINEAR_LEVELING = _UxGT("Билин. выравнив."); LSTR MSG_UBL_LEVELING = _UxGT("Выравнивание UBL"); LSTR MSG_MESH_LEVELING = _UxGT("Выравнивание сеткой"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_MESH_DONE = _UxGT("Зондирование выполнено"); - #else - LSTR MSG_MESH_DONE = _UxGT("Зондиров. выполнено"); - #endif + LSTR MSG_MESH_DONE = _UxGT("Зондиров. выполнено"); LSTR MSG_INFO_STATS_MENU = _UxGT("Статистика принтера"); LSTR MSG_INFO_BOARD_MENU = _UxGT("Данные платы"); @@ -663,30 +529,17 @@ namespace Language_ru { LSTR MSG_INFO_EXTRUDERS = _UxGT("Экструдеры"); LSTR MSG_INFO_BAUDRATE = _UxGT("Скорость,БОД"); LSTR MSG_INFO_PROTOCOL = _UxGT("Протокол"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контроль утечки Т: Выкл"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контроль утечки Т: Вкл"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Время простоя хотенда"); - #else - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контр.утечки Т:Выкл"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контр.утечки Т:Вкл"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Время прост.хот-а"); - #endif + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контр.утечки Т:Выкл"); + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контр.утечки Т:Вкл"); + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Время прост.хот-а"); LSTR MSG_CASE_LIGHT = _UxGT("Подсветка корпуса"); LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Яркость подсветки"); LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("НЕВЕРНЫЙ ПРИНТЕР"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Счётчик печати"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Общее время печати"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Наидольшее задание"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Длина филамента"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Напечатано"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Общее время"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Наидольшее"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Выдавлено"); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Напечатано"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Общее время"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Наидольшее"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Выдавлено"); LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Завершено"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Мин. ") LCD_STR_THERMOMETER; @@ -704,22 +557,14 @@ namespace Language_ru { LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Выдавить ещё"); LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Возобновить печать"); LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Сопла: "); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик оконч. филамента"); - #else - LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик оконч.филам."); - #endif + LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик оконч.филам."); LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("До конца, мм"); LSTR MSG_KILL_HOMING_FAILED = _UxGT("Ошибка парковки"); LSTR MSG_LCD_PROBING_FAILED = _UxGT("Ошибка зондирования"); LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("ВЫБИРЕТЕ ФИЛАМЕНТ"); LSTR MSG_MMU2_MENU = _UxGT("Настройки MMU"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Обновить прошивку MMU!"); - #else - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Обнови прошивку MMU"); - #endif + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Обнови прошивку MMU"); LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU требует внимания"); LSTR MSG_MMU2_RESUME = _UxGT("Продолжить печать"); LSTR MSG_MMU2_RESUMING = _UxGT("Продолжение..."); @@ -730,11 +575,7 @@ namespace Language_ru { LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Извлечь филамент ~"); LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Выгрузить филамент"); LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Загрузка %i..."); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Извлечение филамента..."); - #else - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Извлеч.филамента..."); - #endif + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Извлеч.филамента..."); LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Выгрузка...."); LSTR MSG_MMU2_ALL = _UxGT("Всё"); LSTR MSG_MMU2_FILAMENT_N = _UxGT("Филамент ~"); @@ -742,11 +583,7 @@ namespace Language_ru { LSTR MSG_MMU2_RESETTING = _UxGT("Перезапуск MMU..."); LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Удалите и нажмите"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_MIX = _UxGT("Смешивание"); - #else - LSTR MSG_MIX = _UxGT("Смешив."); - #endif + LSTR MSG_MIX = _UxGT("Смешив."); LSTR MSG_MIX_COMPONENT_N = _UxGT("Компонент {"); LSTR MSG_MIXER = _UxGT("Смеситель"); LSTR MSG_GRADIENT = _UxGT("Градиент"); @@ -754,25 +591,15 @@ namespace Language_ru { LSTR MSG_CYCLE_MIX = _UxGT("Цикличное смешивание"); LSTR MSG_GRADIENT_MIX = _UxGT("Градиент смешивания"); LSTR MSG_REVERSE_GRADIENT = _UxGT("Сменить градиент"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_TOGGLE_MIX = _UxGT("Переключить смешивание"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Активация В-инструм."); - LSTR MSG_START_VTOOL = _UxGT("Начало В-инструмента"); - LSTR MSG_END_VTOOL = _UxGT("Конец В-инструмента"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдоним В-инструмента"); - LSTR MSG_RESET_VTOOLS = _UxGT("Сброс В-инструментов"); - LSTR MSG_COMMIT_VTOOL = _UxGT("Смешать В-инструменты"); - LSTR MSG_VTOOLS_RESET = _UxGT("В-инструменты сброшены"); - #else - LSTR MSG_TOGGLE_MIX = _UxGT("Перекл. смешивание"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Актив.В-инструм."); - LSTR MSG_START_VTOOL = _UxGT("В-инструм.нач."); - LSTR MSG_END_VTOOL = _UxGT("В-инструм.кон."); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдоним В-инстр."); - LSTR MSG_RESET_VTOOLS = _UxGT("Сброс В-инструм."); - LSTR MSG_COMMIT_VTOOL = _UxGT("Смешать В-инструм."); - LSTR MSG_VTOOLS_RESET = _UxGT("В-инструм. сброшены"); - #endif + LSTR MSG_TOGGLE_MIX = _UxGT("Перекл. смешивание"); + LSTR MSG_ACTIVE_VTOOL = _UxGT("Актив.В-инструм."); + LSTR MSG_START_VTOOL = _UxGT("В-инструм.нач."); + LSTR MSG_END_VTOOL = _UxGT("В-инструм.кон."); + LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдоним В-инстр."); + LSTR MSG_RESET_VTOOLS = _UxGT("Сброс В-инструм."); + LSTR MSG_COMMIT_VTOOL = _UxGT("Смешать В-инструм."); + LSTR MSG_VTOOLS_RESET = _UxGT("В-инструм. сброшены"); + LSTR MSG_START_Z = _UxGT("Начало Z"); LSTR MSG_END_Z = _UxGT(" Конец Z"); @@ -782,269 +609,341 @@ namespace Language_ru { LSTR MSG_SNAKE = _UxGT("Sn4k3"); LSTR MSG_MAZE = _UxGT("Maze"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_BAD_PAGE = _UxGT("Плохой индекс страницы"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Плохая скорость страницы"); - #else - LSTR MSG_BAD_PAGE = _UxGT("Плохая страница"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Плохая скор.стран."); - #endif + LSTR MSG_BAD_PAGE = _UxGT("Плохая страница"); + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Плохая скор.стран."); - LSTR MSG_EDIT_PASSWORD = _UxGT("Редактировать пароль"); - LSTR MSG_LOGIN_REQUIRED = _UxGT("Нужен логин"); - LSTR MSG_PASSWORD_SETTINGS = _UxGT("Настройки пароля"); - LSTR MSG_ENTER_DIGIT = _UxGT("Введите цифру"); - LSTR MSG_CHANGE_PASSWORD = _UxGT("Смените пароль"); - LSTR MSG_REMOVE_PASSWORD = _UxGT("Удалить пароль"); - LSTR MSG_PASSWORD_SET = _UxGT("Пароль это "); - LSTR MSG_START_OVER = _UxGT("Старт через"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь сохранить!"); - #else - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь сохранить"); - #endif - LSTR MSG_PASSWORD_REMOVED = _UxGT("Пароль удалён"); + LSTR MSG_EDIT_PASSWORD = _UxGT("Редактировать пароль"); + LSTR MSG_LOGIN_REQUIRED = _UxGT("Нужен логин"); + LSTR MSG_PASSWORD_SETTINGS = _UxGT("Настройки пароля"); + LSTR MSG_ENTER_DIGIT = _UxGT("Введите цифру"); + LSTR MSG_CHANGE_PASSWORD = _UxGT("Смените пароль"); + LSTR MSG_REMOVE_PASSWORD = _UxGT("Удалить пароль"); + LSTR MSG_PASSWORD_SET = _UxGT("Пароль это "); + LSTR MSG_START_OVER = _UxGT("Старт через"); + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь сохранить"); + LSTR MSG_PASSWORD_REMOVED = _UxGT("Пароль удалён"); // // Filament Change screens show up to 3 lines on a 4-line display // ...or up to 2 lines on a 3-line display // - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Парковка...")); - #if LCD_HEIGHT >= 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Нажмите кнопку", "для продолжения", "печати")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Ожидайте начала", "смены филамента")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Вставьте филамент", "и нажмите кнопку", "для продолжения")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_3_LINE("Нажмите кнопку", "для нагрева", "сопла...")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Нагрев сопла", "Ждите...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Ожидайте", "выгрузки", "филамента")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Ожидайте", "загрузки", "филамента")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Ожидайте", "экструзии", "филамента")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Нажмите кнопку", "для завершения", "прочистки филамента")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Ожидайте", "возобновления", "печати")); - #else - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Продолжить печать")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Ожидайте...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Вставь и нажми")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Нагреть сопло")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Нагрев...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Выгрузка...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Загрузка...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Прочистка...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Завершить прочистку")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Возобновление...")); - #endif + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Парковка...")); + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Продолжить печать")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Ожидайте...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Вставь и нажми")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Нагреть сопло")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Нагрев...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Выгрузка...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Загрузка...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Прочистка...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Завершить прочистку")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Возобновление...")); - LSTR MSG_TMC_DRIVERS = _UxGT("Драйвера TMC"); - LSTR MSG_TMC_CURRENT = _UxGT("Ток двигателей"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Гибридный режим"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Чувствительность"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Режим драйвера"); - LSTR MSG_TMC_STEALTH_ENABLED = _UxGT("Тихий режим вкл"); + LSTR MSG_TMC_DRIVERS = _UxGT("Драйвера TMC"); + LSTR MSG_TMC_CURRENT = _UxGT("Ток двигателей"); + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Гибридный режим"); + LSTR MSG_TMC_HOMING_THRS = _UxGT("Чувствительность"); + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Режим драйвера"); + LSTR MSG_TMC_STEALTH_ENABLED = _UxGT("Тихий режим вкл"); - LSTR MSG_SERVICE_RESET = _UxGT("Сброс"); - LSTR MSG_SERVICE_IN = _UxGT(" в:"); - LSTR MSG_BACKLASH = _UxGT("Люфт"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Исправление"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Сглаживание"); + LSTR MSG_SERVICE_RESET = _UxGT("Сброс"); + LSTR MSG_SERVICE_IN = _UxGT(" в:"); + LSTR MSG_BACKLASH = _UxGT("Люфт"); + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Исправление"); + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Сглаживание"); - LSTR MSG_LEVEL_X_AXIS = _UxGT("Выровнять ось X"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Автокалибровка"); - LSTR MSG_HEATER_TIMEOUT = _UxGT("Таймаут нагрева"); - LSTR MSG_REHEAT = _UxGT("Возобновить нагрев"); - LSTR MSG_REHEATING = _UxGT("Нагрев..."); + LSTR MSG_LEVEL_X_AXIS = _UxGT("Выровнять ось X"); + LSTR MSG_AUTO_CALIBRATE = _UxGT("Автокалибровка"); + LSTR MSG_HEATER_TIMEOUT = _UxGT("Таймаут нагрева"); + LSTR MSG_REHEAT = _UxGT("Возобновить нагрев"); + LSTR MSG_REHEATING = _UxGT("Нагрев..."); - LSTR MSG_PROBE_WIZARD = _UxGT("Мастер Z-зонда"); - #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондиров. контр. точки Z"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Движение к точке зондиров."); - #else - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондир.контр.точки Z"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Движ.к точке зондир."); - #endif + LSTR MSG_PROBE_WIZARD = _UxGT("Мастер Z-зонда"); + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондир.контр.точки Z"); + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Движ.к точке зондир."); - LSTR MSG_SOUND = _UxGT("Звук"); + LSTR MSG_SOUND = _UxGT("Звук"); - LSTR MSG_TOP_LEFT = _UxGT("Верхний левый"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Нижний левый"); - LSTR MSG_TOP_RIGHT = _UxGT("Верхний правый"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Нижний правый"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Калибровка успешна"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Ошибка калибровки"); + LSTR MSG_TOP_LEFT = _UxGT("Верхний левый"); + LSTR MSG_BOTTOM_LEFT = _UxGT("Нижний левый"); + LSTR MSG_TOP_RIGHT = _UxGT("Верхний правый"); + LSTR MSG_BOTTOM_RIGHT = _UxGT("Нижний правый"); + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Калибровка успешна"); + LSTR MSG_CALIBRATION_FAILED = _UxGT("Ошибка калибровки"); - LSTR MSG_DRIVER_BACKWARD = _UxGT(" драйвер наоборот"); + LSTR MSG_DRIVER_BACKWARD = _UxGT(" драйвер наоборот"); - LSTR MSG_SD_CARD = _UxGT("SD Карта"); - LSTR MSG_USB_DISK = _UxGT("USB Диск"); + LSTR MSG_SD_CARD = _UxGT("SD Карта"); + LSTR MSG_USB_DISK = _UxGT("USB Диск"); - LSTR MSG_SHORT_DAY = _UxGT("д"); // One character only - LSTR MSG_SHORT_HOUR = _UxGT("ч"); // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("м"); // One character only + LSTR MSG_SHORT_DAY = _UxGT("д"); // One character only + LSTR MSG_SHORT_HOUR = _UxGT("ч"); // One character only + LSTR MSG_SHORT_MINUTE = _UxGT("м"); // One character only - LSTR MSG_HIGH = _UxGT("ВЫСОКИЙ"); - LSTR MSG_LOW = _UxGT("НИЗКИЙ"); - LSTR MSG_ERROR = _UxGT("Ошибка"); - LSTR MSG_ENDSTOP_TEST = _UxGT("Тест концевиков"); - LSTR MSG_Z_PROBE = _UxGT("Z-зонд"); - LSTR MSG_HOMING = _UxGT("Парковка"); - LSTR MSG_Z_AFTER_HOME = _UxGT("Z после парковки"); - LSTR MSG_FILAMENT_SET = _UxGT("Настройки филамента"); - #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 - LSTR MSG_FILAMENT_MAN = _UxGT("Управление филаментом"); - #else - LSTR MSG_FILAMENT_MAN = _UxGT("Управл.филаментом"); - #endif - LSTR MSG_MANUAL_LEVELING = _UxGT("Ручное выравнивание"); - LSTR MSG_TRAM_FL = _UxGT("Передний левый"); - LSTR MSG_TRAM_FR = _UxGT("Передний правый"); - LSTR MSG_TRAM_C = _UxGT("Центр"); - LSTR MSG_TRAM_BL = _UxGT("Задний левый"); - LSTR MSG_TRAM_BR = _UxGT("Задний правый"); - LSTR MSG_MANUAL_MESH = _UxGT("Сетка вручную"); - LSTR MSG_AUTO_MESH = _UxGT("Сетка автоматически"); - LSTR MSG_ERR_M428_TOO_FAR = _UxGT("Ошибка: слишком далеко!"); - LSTR MSG_TRAMMING_WIZARD = _UxGT("Помощник выравнив."); - LSTR MSG_PREHEAT_HOTEND = _UxGT("Нагреть сопло"); - LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Ручное выравнив."); - LSTR MSG_MESH_VIEWER = _UxGT("Просмотр сетки"); - LSTR MSG_MESH_VIEW = _UxGT("Смотреть сетку"); - LSTR MSG_NO_VALID_MESH = _UxGT("Нет годной сетки"); - LSTR MSG_ACTIVATE_MESH = _UxGT("Включить сетку"); - LSTR MSG_MESH_INSET = _UxGT("Отступы сетки"); - LSTR MSG_MESH_MIN_X = _UxGT("Сетка X минимум"); - LSTR MSG_MESH_MAX_X = _UxGT("Сетка X максимум"); - LSTR MSG_MESH_MIN_Y = _UxGT("Сетка Y минимум"); - LSTR MSG_MESH_MAX_Y = _UxGT("Сетка Y максимум"); - LSTR MSG_MESH_AMAX = _UxGT("Максимальная зона"); - LSTR MSG_MESH_CENTER = _UxGT("Центрировать зону"); - LSTR MSG_MESH_CANCEL = _UxGT("Сетка отменена"); - LSTR MSG_UBL_TILT_MESH = _UxGT("Наколнить сетку"); - LSTR MSG_UBL_TILTING_GRID = _UxGT("Величина наклона"); - LSTR MSG_UBL_MESH_TILTED = _UxGT("Сетка наклонена"); - LSTR MSG_UBL_MESH_FILLED = _UxGT("Попущенные точки заполнены"); - LSTR MSG_UBL_MESH_INVALID = _UxGT("Негодная сетка"); - LSTR MSG_UBL_INVALID_SLOT = _UxGT("Сперва выберите слот сетки"); - LSTR MSG_MESH_ACTIVE = _UxGT("Сетка %i активна"); - LSTR MSG_MOVE_50MM = _UxGT("Двигать 50mm"); - LSTR MSG_LIVE_MOVE = _UxGT("Живое перемещение"); - LSTR MSG_CUTTER = _UxGT("Резак"); - LSTR MSG_PID_CYCLE = _UxGT("Циклы PID"); - LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Автонастройка PID не удалась!"); - LSTR MSG_BAD_HEATER_ID = _UxGT("Неверный экструдер."); - LSTR MSG_TEMP_TOO_HIGH = _UxGT("Слишком высокая температура."); - LSTR MSG_TIMEOUT = _UxGT("Таймаут."); - LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Тест потери тепла"); - LSTR MSG_MPC_HEATING_PAST_200 = _UxGT("Нагрев выше >200C"); - LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Охлаждение до окружающей"); - LSTR MSG_MPC_AUTOTUNE = _UxGT("Автонастройка MPC"); - LSTR MSG_MPC_EDIT = _UxGT("Изменить * MPC"); - LSTR MSG_MPC_POWER = _UxGT("Мощность нагревателя"); - LSTR MSG_MPC_POWER_E = _UxGT("Мощность *"); - LSTR MSG_MPC_BLOCK_HEAT_CAPACITY = _UxGT("Теплоёмкость"); - LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Теплоёмк. *"); - LSTR MSG_SENSOR_RESPONSIVENESS = _UxGT("Отклик датчика"); - LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Отклик датч. *"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF = _UxGT("Коэфф.окружения"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Коэфф.окруж *"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN = _UxGT("Коэфф.кулера"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Коэфф.кулер *"); - LSTR MSG_INPUT_SHAPING = _UxGT("Input Shaping"); - LSTR MSG_SHAPING_ENABLE = _UxGT("Включить шейпинг @"); - LSTR MSG_SHAPING_DISABLE = _UxGT("Выключить шейпинг @"); - LSTR MSG_SHAPING_FREQ = _UxGT("@ частота"); - LSTR MSG_SHAPING_ZETA = _UxGT("@ подавление"); - LSTR MSG_FILAMENT_EN = _UxGT("Филамент *"); - LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Сегментов/сек"); - LSTR MSG_DRAW_MIN_X = _UxGT("Рисовать мин X"); - LSTR MSG_DRAW_MAX_X = _UxGT("Рисовать макс X"); - LSTR MSG_DRAW_MIN_Y = _UxGT("Рисовать мин Y"); - LSTR MSG_DRAW_MAX_Y = _UxGT("Рисовать макс Y"); - LSTR MSG_MAX_BELT_LEN = _UxGT("Макс.длина ремня"); - LSTR MSG_LINEAR_ADVANCE = _UxGT("Linear Advance"); - LSTR MSG_BRIGHTNESS = _UxGT("Яркость LCD"); - LSTR MSG_SCREEN_TIMEOUT = _UxGT("Таймаут LCD (м)"); - LSTR MSG_BRIGHTNESS_OFF = _UxGT("Выкл.подсветку"); - LSTR MSG_INFO_MACHINENAME = _UxGT("Название машины"); - LSTR MSG_INFO_SIZE = _UxGT("Размер"); - LSTR MSG_INFO_FWVERSION = _UxGT("Версия прошивки"); - LSTR MSG_INFO_BUILD = _UxGT("Дата сборки"); - LSTR MSG_BUTTON_CONFIRM = _UxGT("Подтвердить"); - LSTR MSG_BUTTON_CONTINUE = _UxGT("Продолжить"); - LSTR MSG_BUTTON_INFO = _UxGT("Инфо"); - LSTR MSG_BUTTON_LEVEL = _UxGT("Выровнять"); - LSTR MSG_BUTTON_PAUSE = _UxGT("Пауза"); - LSTR MSG_BUTTON_RESUME = _UxGT("Продолжить"); - LSTR MSG_BUTTON_ADVANCED = _UxGT("Расширанные"); - LSTR MSG_BUTTON_SAVE = _UxGT("Сохранить"); - LSTR MSG_BUTTON_PURGE = _UxGT("Прочистить"); - LSTR MSG_PAUSING = _UxGT("Пауза..."); - LSTR MSG_ADVANCED_PAUSE = _UxGT("Расширенная пауза"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Продолжить печать"); - LSTR MSG_TURN_OFF = _UxGT("Выключить принтер"); - LSTR MSG_END_LOOPS = _UxGT("Завершить петлю"); - LSTR MSG_STOPPING = _UxGT("Остановка..."); - LSTR MSG_REMAINING_TIME = _UxGT("Осталось"); - LSTR MSG_PRINTER_KILLED = _UxGT("Принтер убит!"); - LSTR MSG_FWRETRACT = _UxGT("Откат принтера"); - LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Вытирание при откате"); - LSTR MSG_PARK_FAILED = _UxGT("Не удалось запарковать"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Выгрузить филамент"); - LSTR MSG_ATTACH_USB_MEDIA = _UxGT("Монтировать USB"); - LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("Высокая скорость"); - LSTR MSG_MANUAL_PENUP = _UxGT("Поднять перо"); - LSTR MSG_MANUAL_PENDOWN = _UxGT("Опустить перо"); - LSTR MSG_ZPROBE_SETTINGS = _UxGT("Наторойки зонда"); - LSTR MSG_ZPROBE_MARGIN = _UxGT("Отступы зонда"); - LSTR MSG_Z_FEED_RATE = _UxGT("Скорость Z"); - LSTR MSG_ENABLE_HS_MODE = _UxGT("Включить режим ВС"); - LSTR MSG_TEMP_MALFUNCTION = _UxGT("СБОЙ ТЕМПЕРАТУРЫ"); - LSTR MSG_PLEASE_WAIT = _UxGT("Ожидайте..."); - LSTR MSG_PREHEATING = _UxGT("Нагреваю..."); - LSTR MSG_DELTA_CALIBRATION_IN_PROGRESS = _UxGT("Делаю дельта-калибровку"); - LSTR MSG_RESET_STATS = _UxGT("Сбросить статистику печати?"); - LSTR MSG_FAN_SPEED_FAULT = _UxGT("Сбой скорости кулера"); - LSTR MSG_COLORS_GET = _UxGT("Получить цвет"); - LSTR MSG_COLORS_SELECT = _UxGT("Выбрать цвета"); - LSTR MSG_COLORS_APPLIED = _UxGT("Цвета применены"); - LSTR MSG_COLORS_RED = _UxGT("Красный"); - LSTR MSG_COLORS_GREEN = _UxGT("Зелёный"); - LSTR MSG_COLORS_BLUE = _UxGT("Синий"); - LSTR MSG_COLORS_WHITE = _UxGT("Белый"); - LSTR MSG_UI_LANGUAGE = _UxGT("UI Language"); - LSTR MSG_SOUND_ENABLE = _UxGT("Включить звук"); - LSTR MSG_LOCKSCREEN = _UxGT("Блокировать экран"); - LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Принтер заблокирован,"); - LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Крутить для разблокировки."); - LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Ждите перезагрузки."); - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Нет носителя."); - LSTR MSG_PLEASE_PREHEAT = _UxGT("Нагрейте сопло."); - LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Сбросить счетчик"); - LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Прочистить или продолжить?"); - LSTR MSG_RUNOUT_ENABLE = _UxGT("Включить датч.филамента"); - LSTR MSG_RUNOUT_ACTIVE = _UxGT("Датч.филам. активен"); - LSTR MSG_INVERT_EXTRUDER = _UxGT("Инвертировать экструдер"); - LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Миню темп. экструдера."); - LSTR MSG_FANCHECK = _UxGT("Пров.тахометра кулера"); - LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Уберите и кликните..."); - LSTR MSG_REHEATDONE = _UxGT("Нагрето"); - LSTR MSG_XATC = _UxGT("Помощник перекоса X"); - LSTR MSG_XATC_DONE = _UxGT("Перекос Х настроен!"); - LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Новое смещение Z-зонда "); - LSTR MSG_HOST_SHUTDOWN = _UxGT("Выключить хост"); + LSTR MSG_FILAMENT_MAN = _UxGT("Управл.филаментом"); + LSTR MSG_MANUAL_LEVELING = _UxGT("Ручное выравнивание"); + LSTR MSG_TRAM_FL = _UxGT("Передний левый"); + LSTR MSG_TRAM_FR = _UxGT("Передний правый"); + LSTR MSG_TRAM_C = _UxGT("Центр"); + LSTR MSG_TRAM_BL = _UxGT("Задний левый"); + LSTR MSG_TRAM_BR = _UxGT("Задний правый"); + LSTR MSG_MANUAL_MESH = _UxGT("Сетка вручную"); + LSTR MSG_AUTO_MESH = _UxGT("Сетка автоматически"); + LSTR MSG_ERR_M428_TOO_FAR = _UxGT("Ошибка: слишком далеко!"); + LSTR MSG_TRAMMING_WIZARD = _UxGT("Помощник выравнив."); + LSTR MSG_PREHEAT_HOTEND = _UxGT("Нагреть сопло"); + LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Ручное выравнив."); + LSTR MSG_MESH_VIEWER = _UxGT("Просмотр сетки"); + LSTR MSG_MESH_VIEW = _UxGT("Смотреть сетку"); + LSTR MSG_NO_VALID_MESH = _UxGT("Нет годной сетки"); + LSTR MSG_ACTIVATE_MESH = _UxGT("Включить сетку"); + LSTR MSG_MESH_INSET = _UxGT("Отступы сетки"); + LSTR MSG_MESH_MIN_X = _UxGT("Сетка X минимум"); + LSTR MSG_MESH_MAX_X = _UxGT("Сетка X максимум"); + LSTR MSG_MESH_MIN_Y = _UxGT("Сетка Y минимум"); + LSTR MSG_MESH_MAX_Y = _UxGT("Сетка Y максимум"); + LSTR MSG_MESH_AMAX = _UxGT("Максимальная зона"); + LSTR MSG_MESH_CENTER = _UxGT("Центрировать зону"); + LSTR MSG_MESH_CANCEL = _UxGT("Сетка отменена"); + LSTR MSG_UBL_TILT_MESH = _UxGT("Наколнить сетку"); + LSTR MSG_UBL_TILTING_GRID = _UxGT("Величина наклона"); + LSTR MSG_UBL_MESH_TILTED = _UxGT("Сетка наклонена"); + LSTR MSG_UBL_MESH_FILLED = _UxGT("Попущенные точки заполнены"); + LSTR MSG_UBL_MESH_INVALID = _UxGT("Негодная сетка"); + LSTR MSG_UBL_INVALID_SLOT = _UxGT("Сперва выберите слот сетки"); + LSTR MSG_MESH_ACTIVE = _UxGT("Сетка %i активна"); + LSTR MSG_MOVE_50MM = _UxGT("Двигать 50mm"); + LSTR MSG_LIVE_MOVE = _UxGT("Живое перемещение"); + LSTR MSG_CUTTER = _UxGT("Резак"); + LSTR MSG_PID_CYCLE = _UxGT("Циклы PID"); + LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Автонастройка PID не удалась!"); + LSTR MSG_BAD_HEATER_ID = _UxGT("Неверный экструдер."); + LSTR MSG_TEMP_TOO_HIGH = _UxGT("Слишком высокая температура."); + LSTR MSG_TIMEOUT = _UxGT("Таймаут."); + LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Тест потери тепла"); + LSTR MSG_MPC_HEATING_PAST_200 = _UxGT("Нагрев выше >200C"); + LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Охлаждение до окружающей"); + LSTR MSG_MPC_AUTOTUNE = _UxGT("Автонастройка MPC"); + LSTR MSG_MPC_EDIT = _UxGT("Изменить * MPC"); + LSTR MSG_MPC_POWER = _UxGT("Мощность нагревателя"); + LSTR MSG_MPC_POWER_E = _UxGT("Мощность *"); + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY = _UxGT("Теплоёмкость"); + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Теплоёмк. *"); + LSTR MSG_SENSOR_RESPONSIVENESS = _UxGT("Отклик датчика"); + LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Отклик датч. *"); + LSTR MSG_MPC_AMBIENT_XFER_COEFF = _UxGT("Коэфф.окружения"); + LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Коэфф.окруж *"); + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN = _UxGT("Коэфф.кулера"); + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Коэфф.кулер *"); + LSTR MSG_INPUT_SHAPING = _UxGT("Input Shaping"); + LSTR MSG_SHAPING_ENABLE = _UxGT("Включить шейпинг @"); + LSTR MSG_SHAPING_DISABLE = _UxGT("Выключить шейпинг @"); + LSTR MSG_SHAPING_FREQ = _UxGT("@ частота"); + LSTR MSG_SHAPING_ZETA = _UxGT("@ подавление"); + LSTR MSG_FILAMENT_EN = _UxGT("Филамент *"); + LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Сегментов/сек"); + LSTR MSG_DRAW_MIN_X = _UxGT("Рисовать мин X"); + LSTR MSG_DRAW_MAX_X = _UxGT("Рисовать макс X"); + LSTR MSG_DRAW_MIN_Y = _UxGT("Рисовать мин Y"); + LSTR MSG_DRAW_MAX_Y = _UxGT("Рисовать макс Y"); + LSTR MSG_MAX_BELT_LEN = _UxGT("Макс.длина ремня"); + LSTR MSG_LINEAR_ADVANCE = _UxGT("Linear Advance"); + LSTR MSG_BRIGHTNESS = _UxGT("Яркость LCD"); + LSTR MSG_SCREEN_TIMEOUT = _UxGT("Таймаут LCD (м)"); + LSTR MSG_BRIGHTNESS_OFF = _UxGT("Выкл.подсветку"); + LSTR MSG_INFO_MACHINENAME = _UxGT("Название машины"); + LSTR MSG_INFO_SIZE = _UxGT("Размер"); + LSTR MSG_INFO_FWVERSION = _UxGT("Версия прошивки"); + LSTR MSG_INFO_BUILD = _UxGT("Дата сборки"); + LSTR MSG_BUTTON_CONFIRM = _UxGT("Подтвердить"); + LSTR MSG_BUTTON_CONTINUE = _UxGT("Продолжить"); + LSTR MSG_BUTTON_INFO = _UxGT("Инфо"); + LSTR MSG_BUTTON_LEVEL = _UxGT("Выровнять"); + LSTR MSG_BUTTON_PAUSE = _UxGT("Пауза"); + LSTR MSG_BUTTON_RESUME = _UxGT("Продолжить"); + LSTR MSG_BUTTON_ADVANCED = _UxGT("Расширанные"); + LSTR MSG_BUTTON_SAVE = _UxGT("Сохранить"); + LSTR MSG_BUTTON_PURGE = _UxGT("Прочистить"); + LSTR MSG_PAUSING = _UxGT("Пауза..."); + LSTR MSG_ADVANCED_PAUSE = _UxGT("Расширенная пауза"); + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Продолжить печать"); + LSTR MSG_TURN_OFF = _UxGT("Выключить принтер"); + LSTR MSG_END_LOOPS = _UxGT("Завершить петлю"); + LSTR MSG_STOPPING = _UxGT("Остановка..."); + LSTR MSG_REMAINING_TIME = _UxGT("Осталось"); + LSTR MSG_PRINTER_KILLED = _UxGT("Принтер убит!"); + LSTR MSG_FWRETRACT = _UxGT("Откат принтера"); + LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Вытирание при откате"); + LSTR MSG_PARK_FAILED = _UxGT("Не удалось запарковать"); + LSTR MSG_FILAMENTUNLOAD = _UxGT("Выгрузить филамент"); + LSTR MSG_ATTACH_USB_MEDIA = _UxGT("Монтировать USB"); + LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("Высокая скорость"); + LSTR MSG_MANUAL_PENUP = _UxGT("Поднять перо"); + LSTR MSG_MANUAL_PENDOWN = _UxGT("Опустить перо"); + LSTR MSG_ZPROBE_SETTINGS = _UxGT("Наторойки зонда"); + LSTR MSG_ZPROBE_MARGIN = _UxGT("Отступы зонда"); + LSTR MSG_Z_FEED_RATE = _UxGT("Скорость Z"); + LSTR MSG_ENABLE_HS_MODE = _UxGT("Включить режим ВС"); + LSTR MSG_TEMP_MALFUNCTION = _UxGT("СБОЙ ТЕМПЕРАТУРЫ"); + LSTR MSG_PLEASE_WAIT = _UxGT("Ожидайте..."); + LSTR MSG_PREHEATING = _UxGT("Нагреваю..."); + LSTR MSG_DELTA_CALIBRATION_IN_PROGRESS = _UxGT("Делаю дельта-калибровку"); + LSTR MSG_RESET_STATS = _UxGT("Сбросить статистику печати?"); + LSTR MSG_FAN_SPEED_FAULT = _UxGT("Сбой скорости кулера"); + LSTR MSG_COLORS_GET = _UxGT("Получить цвет"); + LSTR MSG_COLORS_SELECT = _UxGT("Выбрать цвета"); + LSTR MSG_COLORS_APPLIED = _UxGT("Цвета применены"); + LSTR MSG_COLORS_RED = _UxGT("Красный"); + LSTR MSG_COLORS_GREEN = _UxGT("Зелёный"); + LSTR MSG_COLORS_BLUE = _UxGT("Синий"); + LSTR MSG_COLORS_WHITE = _UxGT("Белый"); + LSTR MSG_UI_LANGUAGE = _UxGT("UI Language"); + LSTR MSG_SOUND_ENABLE = _UxGT("Включить звук"); + LSTR MSG_LOCKSCREEN = _UxGT("Блокировать экран"); + LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Принтер заблокирован,"); + LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Крутить для разблокировки."); + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Ждите перезагрузки."); + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Нет носителя."); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Нагрейте сопло."); + LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Сбросить счетчик"); + LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Прочистить или продолжить?"); + LSTR MSG_RUNOUT_ENABLE = _UxGT("Включить датч.филамента"); + LSTR MSG_RUNOUT_ACTIVE = _UxGT("Датч.филам. активен"); + LSTR MSG_INVERT_EXTRUDER = _UxGT("Инвертировать экструдер"); + LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Миню темп. экструдера."); + LSTR MSG_FANCHECK = _UxGT("Пров.тахометра кулера"); + LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Уберите и кликните..."); + LSTR MSG_REHEATDONE = _UxGT("Нагрето"); + LSTR MSG_XATC = _UxGT("Помощник перекоса X"); + LSTR MSG_XATC_DONE = _UxGT("Перекос Х настроен!"); + LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Новое смещение Z-зонда "); + LSTR MSG_HOST_SHUTDOWN = _UxGT("Выключить хост"); // did not translate as there is no local terms/slang yet - LSTR MSG_FIXED_TIME_MOTION = _UxGT("Fixed-Time Motion"); - LSTR MSG_FTM_MODE = _UxGT("Motion Mode:"); - LSTR MSG_FTM_ZV = _UxGT("ZV"); - LSTR MSG_FTM_ZVD = _UxGT("ZVD"); - LSTR MSG_FTM_EI = _UxGT("EI"); - LSTR MSG_FTM_2HEI = _UxGT("2HEI"); - LSTR MSG_FTM_3HEI = _UxGT("3HEI"); - LSTR MSG_FTM_MZV = _UxGT("MZV"); - //LSTR MSG_FTM_ULENDO_FBS = _UxGT("Ulendo ФBС"); - //LSTR MSG_FTM_DISCTF = _UxGT("DISCTF"); - LSTR MSG_FTM_DYN_MODE = _UxGT("DF Mode:"); - LSTR MSG_FTM_Z_BASED = _UxGT("Z-based"); - LSTR MSG_FTM_MASS_BASED = _UxGT("Mass-based"); - LSTR MSG_FTM_BASE_FREQ_N = _UxGT("@ Base Freq."); - LSTR MSG_FTM_DFREQ_K_N = _UxGT("@ Dyn. Freq."); + LSTR MSG_FIXED_TIME_MOTION = _UxGT("Fixed-Time Motion"); + LSTR MSG_FTM_MODE = _UxGT("Motion Mode:"); + LSTR MSG_FTM_ZV = _UxGT("ZV"); + LSTR MSG_FTM_ZVD = _UxGT("ZVD"); + LSTR MSG_FTM_EI = _UxGT("EI"); + LSTR MSG_FTM_2HEI = _UxGT("2HEI"); + LSTR MSG_FTM_3HEI = _UxGT("3HEI"); + LSTR MSG_FTM_MZV = _UxGT("MZV"); + //LSTR MSG_FTM_ULENDO_FBS = _UxGT("Ulendo ФBС"); + //LSTR MSG_FTM_DISCTF = _UxGT("DISCTF"); + LSTR MSG_FTM_DYN_MODE = _UxGT("DF Mode:"); + LSTR MSG_FTM_Z_BASED = _UxGT("Z-based"); + LSTR MSG_FTM_MASS_BASED = _UxGT("Mass-based"); + LSTR MSG_FTM_BASE_FREQ_N = _UxGT("@ Base Freq."); + LSTR MSG_FTM_DFREQ_K_N = _UxGT("@ Dyn. Freq."); +} + +namespace LanguageWide_ru { + using namespace LanguageNarrow_ru; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Сбой инициализации SD"); + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Расширенные настройки"); + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переполнение вызова"); + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Установ. смещения дома"); + LSTR MSG_HOME_OFFSET_X = _UxGT("Смещение дома X"); + LSTR MSG_HOME_OFFSET_Y = _UxGT("Смещение дома Y"); + LSTR MSG_HOME_OFFSET_Z = _UxGT("Смещение дома Z"); + LSTR MSG_LAST_VALUE_SP = _UxGT("Последнее значение "); + LSTR MSG_SPINDLE_MENU = _UxGT("Управлен.шпинделем"); + LSTR MSG_LASER_TOGGLE = _UxGT("Переключить лазер"); + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Переключ. шпиндель"); + LSTR MSG_SPINDLE_POWER = _UxGT("Мощность шпинделя"); + LSTR MSG_LASER_POWER = _UxGT("Мощность лазера"); + LSTR MSG_LASER_PULSE_MS = _UxGT("Тестовый импульс мс"); + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Переключить обдув"); + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Переключить вакуум"); + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вверх до срабатыв. зонда"); + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Углы в норме. Вырав.стола"); + LSTR MSG_MESH_EDITOR = _UxGT("Смещение по Z"); + LSTR MSG_EDITING_STOPPED = _UxGT("Правка сетки окончена"); + LSTR MSG_UBL_BC_INSERT = _UxGT("Разместить шайбу,измерить"); + LSTR MSG_UBL_BC_REMOVE = _UxGT("Убрать и замерить стол"); + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Температура стола"); + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Температура стола"); + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Температура сопла"); + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Температура сопла"); + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Построить свою сетку"); + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Правка сетки завершена"); + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Построить холодную сетку"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Проверить сетку $"); + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Проверить свою сетку"); + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-х точечное выравнивание"); + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Сохранить сетку снаружи"); + LSTR MSG_UBL_INFO_UBL = _UxGT("Вывод информации UBL"); + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Кол-во заполнителя"); + LSTR MSG_NEO2_PRESETS = _UxGT("Свет #2 предустановки"); + LSTR MSG_COOLER = _UxGT("Охлаждение лазера"); + LSTR MSG_COOLER_TOGGLE = _UxGT("Переключ. охлажд."); + LSTR MSG_FLOWMETER_SAFETY = _UxGT("Безопасн. потока"); + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Отклонение угла"); + LSTR MSG_FILAMENT_DIAM = _UxGT("Диам. филамента"); + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Диам. филамента *"); + LSTR MSG_RESTORE_DEFAULTS = _UxGT("На базовые параметры"); + LSTR MSG_INIT_EEPROM = _UxGT("Инициализация EEPROM"); + LSTR MSG_CONTROL_RETRACT = _UxGT("Откат, мм"); + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Откат при смене, мм"); + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Возврат при смене, мм"); + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Возврат при смене, V"); + LSTR MSG_AUTORETRACT = _UxGT("Автооткат"); + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Дополнительная длина"); + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Начальная скор."); + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Скорость отката"); + LSTR MSG_FILAMENTLOAD_E = _UxGT("Загрузить филамент *"); + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Выгрузить филамент *"); + LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Двигать сопло к столу"); + LSTR MSG_3POINT_LEVELING = _UxGT("3-точечное выравнивание"); + LSTR MSG_LINEAR_LEVELING = _UxGT("Линейное выравнивание"); + LSTR MSG_BILINEAR_LEVELING = _UxGT("Билинейное выравнивание"); + LSTR MSG_MESH_DONE = _UxGT("Зондирование выполнено"); + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контроль утечки Т: Выкл"); + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контроль утечки Т: Вкл"); + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Время простоя хотенда"); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Счётчик печати"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Общее время печати"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Наидольшее задание"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Длина филамента"); + LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик оконч. филамента"); + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Обновить прошивку MMU!"); + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Извлечение филамента..."); + LSTR MSG_MIX = _UxGT("Смешивание"); + LSTR MSG_TOGGLE_MIX = _UxGT("Переключить смешивание"); + LSTR MSG_ACTIVE_VTOOL = _UxGT("Активация В-инструм."); + LSTR MSG_START_VTOOL = _UxGT("Начало В-инструмента"); + LSTR MSG_END_VTOOL = _UxGT("Конец В-инструмента"); + LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдоним В-инструмента"); + LSTR MSG_RESET_VTOOLS = _UxGT("Сброс В-инструментов"); + LSTR MSG_COMMIT_VTOOL = _UxGT("Смешать В-инструменты"); + LSTR MSG_VTOOLS_RESET = _UxGT("В-инструменты сброшены"); + LSTR MSG_BAD_PAGE = _UxGT("Плохой индекс страницы"); + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Плохая скорость страницы"); + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь сохранить!"); + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондиров. контр. точки Z"); + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Движение к точке зондиров."); + LSTR MSG_FILAMENT_MAN = _UxGT("Управление филаментом"); + #endif +} + +namespace LanguageTall_ru { + using namespace LanguageWide_ru; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Нажмите кнопку", "для продолжения", "печати")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Ожидайте начала", "смены филамента")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Вставьте филамент", "и нажмите кнопку", "для продолжения")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_3_LINE("Нажмите кнопку", "для нагрева", "сопла...")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Нагрев сопла", "Ждите...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Ожидайте", "выгрузки", "филамента")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Ожидайте", "загрузки", "филамента")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Ожидайте", "экструзии", "филамента")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Нажмите кнопку", "для завершения", "прочистки филамента")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Ожидайте", "возобновления", "печати")); + #endif +} + +namespace Language_ru { + using namespace LanguageTall_ru; } diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h index 7dc1c5357e..290b0cdcde 100644 --- a/Marlin/src/lcd/language/language_sk.h +++ b/Marlin/src/lcd/language/language_sk.h @@ -41,7 +41,7 @@ */ #define DISPLAY_CHARSET_ISO10646_SK -namespace Language_sk { +namespace LanguageNarrow_sk { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -107,30 +107,23 @@ namespace Language_sk { LSTR MSG_TRAMMING_WIZARD = _UxGT("Spriev. vyrovn."); LSTR MSG_SELECT_ORIGIN = _UxGT("Vyberte začiatok"); LSTR MSG_LAST_VALUE_SP = _UxGT("Posl. hodnota "); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Zahriať ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Zahriať ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" všetko"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" podlož"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" nast."); - #ifdef PREHEAT_2_LABEL - LSTR MSG_PREHEAT_2 = _UxGT("Zahriať ") PREHEAT_2_LABEL; - LSTR MSG_PREHEAT_2_SETTINGS = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" nast."); - #endif - #ifdef PREHEAT_3_LABEL - LSTR MSG_PREHEAT_3 = _UxGT("Zahriať ") PREHEAT_3_LABEL; - LSTR MSG_PREHEAT_3_SETTINGS = _UxGT("Zahriať ") PREHEAT_3_LABEL _UxGT(" nast."); - #endif - LSTR MSG_PREHEAT_M = _UxGT("Zahriať $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Zahriať $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Zahriať $ hotend"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Zahriať $ hotend ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Zahriať $ všetko"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Zahriať $ podlož"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Zahriať $ nast."); - #endif + + LSTR MSG_PREHEAT_1 = _UxGT("Zahriať ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Zahriať ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" všetko"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" podlož"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" nast."); + + LSTR MSG_PREHEAT_M = _UxGT("Zahriať $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Zahriať $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Zahriať $ hotend"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Zahriať $ hotend ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Zahriať $ všetko"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Zahriať $ podlož"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Zahriať $ nast."); + LSTR MSG_PREHEAT_HOTEND = _UxGT("Zahriať hotend"); LSTR MSG_PREHEAT_CUSTOM = _UxGT("Vlastná teplota"); LSTR MSG_COOLDOWN = _UxGT("Schladiť"); @@ -494,25 +487,14 @@ namespace Language_sk { LSTR MSG_RESUME_PRINT = _UxGT("Obnoviť tlač"); LSTR MSG_STOP_PRINT = _UxGT("Zastaviť tlač"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Obnova po výp. nap."); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_HOST_START_PRINT = _UxGT("Spustiť z hosta"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Tlačím objekt"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Zrušiť objekt"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušiť objekt {"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Pokračovať v úlohe"); - LSTR MSG_MEDIA_MENU = _UxGT("Vytlačiť z karty"); - LSTR MSG_TURN_OFF = _UxGT("Vypnite tlačiareň"); - LSTR MSG_END_LOOPS = _UxGT("Ukončiť opak. sluč."); - #else - LSTR MSG_HOST_START_PRINT = _UxGT("Spustiť z hosta"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Tlačím obj."); - LSTR MSG_CANCEL_OBJECT = _UxGT("Zrušiť obj."); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušiť obj. {"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Pokrač. v úlohe"); - LSTR MSG_MEDIA_MENU = _UxGT("Tlač z karty"); - LSTR MSG_TURN_OFF = _UxGT("Vypnit. teraz"); - LSTR MSG_END_LOOPS = _UxGT("Ukončiť sluč."); - #endif + LSTR MSG_HOST_START_PRINT = _UxGT("Spustiť z hosta"); + LSTR MSG_PRINTING_OBJECT = _UxGT("Tlačím obj."); + LSTR MSG_CANCEL_OBJECT = _UxGT("Zrušiť obj."); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušiť obj. {"); + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Pokrač. v úlohe"); + LSTR MSG_MEDIA_MENU = _UxGT("Tlač z karty"); + LSTR MSG_TURN_OFF = _UxGT("Vypnit. teraz"); + LSTR MSG_END_LOOPS = _UxGT("Ukončiť sluč."); LSTR MSG_NO_MEDIA = _UxGT("Žiadna karta"); LSTR MSG_DWELL = _UxGT("Spím..."); LSTR MSG_USERWAIT = _UxGT("Pokrač. kliknutím..."); @@ -562,12 +544,9 @@ namespace Language_sk { LSTR MSG_FILAMENTUNLOAD = _UxGT("Vysunúť filament"); LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Vysunúť filament *"); LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Vysunúť všetko"); - #if ENABLED(MULTI_VOLUME) - LSTR MSG_ATTACH_MEDIA = _UxGT("Načítať SD kartu"); - LSTR MSG_ATTACH_USB_MEDIA = _UxGT("Načítať USB disk"); - #else - LSTR MSG_ATTACH_MEDIA = _UxGT("Načítať kartu"); - #endif + LSTR MSG_ATTACH_MEDIA = _UxGT("Načítať kartu"); + LSTR MSG_ATTACH_SD_MEDIA = _UxGT("Načítať SD kartu"); + LSTR MSG_ATTACH_USB_MEDIA = _UxGT("Načítať USB disk"); LSTR MSG_CHANGE_MEDIA = _UxGT("Vymeniť kartu"); LSTR MSG_RELEASE_MEDIA = _UxGT("Odpojiť kartu"); LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z mimo podl."); @@ -680,22 +659,12 @@ namespace Language_sk { LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("potiahnite pre odomknutie."); LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Prosím čakajte do reštartu."); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Nie je vložená karta."); - LSTR MSG_PLEASE_PREHEAT = _UxGT("Prosím zahrejte hotend."); - LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Vynulovať počítadlo"); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Počet tlačí"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Celkový čas"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdlhšia tlač"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Celkom vytlačené"); - #else - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Žiadna karta"); - LSTR MSG_PLEASE_PREHEAT = _UxGT("Prosím zahrejte"); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Tlače"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Čas"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdlhšia"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Vytlačené"); - #endif + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Žiadna karta"); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Prosím zahrejte"); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Tlače"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Čas"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdlhšia"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Vytlačené"); LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Dokončené"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Teplota min"); @@ -785,34 +754,20 @@ namespace Language_sk { LSTR MSG_PASSWORD_REMOVED = _UxGT("Heslo odstránené"); // - // Filament Change screens show up to 3 lines on a 4-line display - // ...or up to 2 lines on a 3-line display + // Filament Change screens show up to 2 lines on a 3-line display // - #if LCD_HEIGHT >= 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stlačte tlačidlo", "pre obnovu tlače")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkovanie...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čakajte prosím", "na spustenie", "výmeny filamentu")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Vložte filament", "a stlačte tlačidlo", "pre pokračovanie")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Stlačte tlačidlo", "pre ohrev trysky")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Ohrev trysky", "Čakajte prosím...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Čakajte prosím", "na vysunutie", "filamentu")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Čakajte prosím", "na zavedenie", "filamentu")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Čakajte prosím", "na vytlačenie", "filamentu")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Stlačte tlačidlo", "pre dokončenie", "vytláčania filam.")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Čakajte prosím na", "obnovenie tlače...")); - #else - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Kliknite pre pokr.")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkovanie...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Čakajte prosím...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Vložte a kliknite")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Kliknite pre ohrev")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Ohrev...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Vysúvanie...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Zavádzanie...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Vytlačovanie...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Klik. pre dokonč.")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Pokračovanie...")); - #endif + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Kliknite pre pokr.")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkovanie...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Čakajte prosím...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Vložte a kliknite")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Kliknite pre ohrev")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Ohrev...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Vysúvanie...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Zavádzanie...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Vytlačovanie...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Klik. pre dokonč.")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Pokračovanie...")); + LSTR MSG_TMC_DRIVERS = _UxGT("Ovládače TMC"); LSTR MSG_TMC_CURRENT = _UxGT("Prúd ovládača"); LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hybridný prah"); @@ -827,11 +782,8 @@ namespace Language_sk { LSTR MSG_LEVEL_X_AXIS = _UxGT("Vyrovnať os X"); LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto-kalibrovať"); - #if ENABLED(TOUCH_UI_FTDI_EVE) - LSTR MSG_HEATER_TIMEOUT = _UxGT("Vypršal čas ohrevu, znížená teplota. Stlačte OK pre ohrev a ešte raz pre obnovu."); - #else - LSTR MSG_HEATER_TIMEOUT = _UxGT("Vypršal čas ohrevu"); - #endif + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Vypršal čas ohrevu, znížená teplota. Stlačte OK pre ohrev a ešte raz pre obnovu."); + LSTR MSG_HEATER_TIMEOUT = _UxGT("Vypršal čas ohrevu"); LSTR MSG_REHEAT = _UxGT("Zohriať"); LSTR MSG_REHEATING = _UxGT("Zohrievanie..."); LSTR MSG_REHEATDONE = _UxGT("Zohrievanie dokonč."); @@ -860,3 +812,46 @@ namespace Language_sk { LSTR MSG_HOST_SHUTDOWN = _UxGT("Vypnúť hosta"); } + +namespace LanguageWide_sk { + using namespace LanguageNarrow_sk; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_HOST_START_PRINT = _UxGT("Spustiť z hosta"); + LSTR MSG_PRINTING_OBJECT = _UxGT("Tlačím objekt"); + LSTR MSG_CANCEL_OBJECT = _UxGT("Zrušiť objekt"); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušiť objekt {"); + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Pokračovať v úlohe"); + LSTR MSG_MEDIA_MENU = _UxGT("Vytlačiť z karty"); + LSTR MSG_TURN_OFF = _UxGT("Vypnite tlačiareň"); + LSTR MSG_END_LOOPS = _UxGT("Ukončiť opak. sluč."); + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Nie je vložená karta."); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Prosím zahrejte hotend."); + LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Vynulovať počítadlo"); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Počet tlačí"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Celkový čas"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdlhšia tlač"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Celkom vytlačené"); + #endif +} + +namespace LanguageTall_sk { + using namespace LanguageWide_sk; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stlačte tlačidlo", "pre obnovu tlače")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkovanie...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čakajte prosím", "na spustenie", "výmeny filamentu")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Vložte filament", "a stlačte tlačidlo", "pre pokračovanie")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Stlačte tlačidlo", "pre ohrev trysky")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Ohrev trysky", "Čakajte prosím...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Čakajte prosím", "na vysunutie", "filamentu")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Čakajte prosím", "na zavedenie", "filamentu")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Čakajte prosím", "na vytlačenie", "filamentu")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Stlačte tlačidlo", "pre dokončenie", "vytláčania filam.")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Čakajte prosím na", "obnovenie tlače...")); + #endif +} + +namespace Language_sk { + using namespace LanguageTall_sk; +} diff --git a/Marlin/src/lcd/language/language_sv.h b/Marlin/src/lcd/language/language_sv.h index d264c1e6e2..ea3c1c61dd 100644 --- a/Marlin/src/lcd/language/language_sv.h +++ b/Marlin/src/lcd/language/language_sv.h @@ -30,7 +30,7 @@ #define DISPLAY_CHARSET_ISO10646_1 -namespace Language_sv { +namespace LanguageNarrow_sv { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -77,23 +77,21 @@ namespace Language_sv { LSTR MSG_SELECT_ORIGIN = _UxGT("Välj Origo"); LSTR MSG_LAST_VALUE_SP = _UxGT("Senaste värde "); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Förvärmning ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Förvärmning ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Stoppa"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Stoppa ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Alla"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Bädd"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Konf"); + LSTR MSG_PREHEAT_1 = _UxGT("Förvärmning ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Förvärmning ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Stoppa"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Stoppa ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Alla"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Bädd"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Konf"); - LSTR MSG_PREHEAT_M = _UxGT("Förvärmning $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Förvärmning $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Förvärmning $ Stoppa"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Förvärmning $ Stoppa ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Förvärmning $ Alla"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Förvärmning $ Bädd"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Förvärmning $ Donf"); - #endif + LSTR MSG_PREHEAT_M = _UxGT("Förvärmning $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Förvärmning $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Förvärmning $ Stoppa"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Förvärmning $ Stoppa ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Förvärmning $ Alla"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Förvärmning $ Bädd"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Förvärmning $ Donf"); LSTR MSG_PREHEAT_CUSTOM = _UxGT("Förvärmning Anpassad"); LSTR MSG_COOLDOWN = _UxGT("Nedkylning"); @@ -513,19 +511,11 @@ namespace Language_sv { LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Ljus ljusstyrka"); LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("INKORREKT SKRIVARE"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Utskriftsantal"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Färdiga"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total Utskriftstid"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längsta Jobbtid"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruderade Totalt"); - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Utskrift"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Färdig"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längsta"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruderad"); - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Utskrift"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Färdig"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längsta"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruderad"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Temp"); LSTR MSG_INFO_MAX_TEMP = _UxGT("Max Temp"); @@ -608,34 +598,20 @@ namespace Language_sv { LSTR MSG_PASSWORD_REMOVED = _UxGT("Lösenord Bort taget"); // - // Filament Change screens show up to 3 lines on a 4-line display - // ...or up to 2 lines on a 3-line display + // Filament Change screens show up to 2 lines on a 3-line display // - #if LCD_HEIGHT >= 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Tryck på knappen", "för att fortsätta utskrift")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkera...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Vänta på", "trådbyte", "att börja")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Sätt in tråd", "och tryck på knappen", "för att fortsätta")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Tryck på knappen", "för att värma munstycke")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Munstycke värms", "Var snäll och vänta...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Väntar på", "trådlossning")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Väntar på", "trådladdning")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Väntar på", "tråd utrensning")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Klicka för att slutföra", "tråd utrensning")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Väntar på utskrift", "att återstarta...")); - #else - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Klick för att fortsätta")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkera...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Vänta...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Sätt in och klicka")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Klicka för att värma")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Värmer...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Lossar...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Laddar...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Rensar...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Klicka för att slutföra")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Återgår...")); - #endif + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Klick för att fortsätta")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkera...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Vänta...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Sätt in och klicka")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Klicka för att värma")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Värmer...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Lossar...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Laddar...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Rensar...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Klicka för att slutföra")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Återgår...")); + LSTR MSG_TMC_DRIVERS = _UxGT("TMC Drivers"); LSTR MSG_TMC_CURRENT = _UxGT("Driver Ström"); LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hybrid Tröskelvärde"); @@ -650,11 +626,8 @@ namespace Language_sv { LSTR MSG_LEVEL_X_AXIS = _UxGT("Nivå X Axel"); LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Kalibrera"); - #if ENABLED(TOUCH_UI_FTDI_EVE) - LSTR MSG_HEATER_TIMEOUT = _UxGT("Overksam tidsgräns, temperatur minskning. Tryck ok för att återvärma och igen för att fortsätta."); - #else - LSTR MSG_HEATER_TIMEOUT = _UxGT("Värmare Tidsgräns"); - #endif + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Overksam tidsgräns, temperatur minskning. Tryck ok för att återvärma och igen för att fortsätta."); + LSTR MSG_HEATER_TIMEOUT = _UxGT("Värmare Tidsgräns"); LSTR MSG_REHEAT = _UxGT("Återvärm"); LSTR MSG_REHEATING = _UxGT("Återvärmning..."); @@ -671,3 +644,35 @@ namespace Language_sv { LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Kalibrering Färdig"); LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibrering Misslyckad"); } + +namespace LanguageWide_sv { + using namespace LanguageNarrow_sv; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Utskriftsantal"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Färdiga"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total Utskriftstid"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längsta Jobbtid"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruderade Totalt"); + #endif +} + +namespace LanguageTall_sv { + using namespace LanguageWide_sv; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Tryck på knappen", "för att fortsätta utskrift")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Vänta på", "trådbyte", "att börja")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Sätt in tråd", "och tryck på knappen", "för att fortsätta")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Tryck på knappen", "för att värma munstycke")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Munstycke värms", "Var snäll och vänta...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Väntar på", "trådlossning")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Väntar på", "trådladdning")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Väntar på", "tråd utrensning")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Klicka för att slutföra", "tråd utrensning")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Väntar på utskrift", "att återstarta...")); + #endif +} + +namespace Language_sv { + using namespace LanguageTall_sv; +} diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h index 667db7b77a..a6a75a2ace 100644 --- a/Marlin/src/lcd/language/language_tr.h +++ b/Marlin/src/lcd/language/language_tr.h @@ -30,7 +30,7 @@ #define DISPLAY_CHARSET_ISO10646_TR -namespace Language_tr { +namespace LanguageNarrow_tr { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -95,30 +95,23 @@ namespace Language_tr { LSTR MSG_TRAMMING_WIZARD = _UxGT("Hizalama Sihirbazı"); LSTR MSG_SELECT_ORIGIN = _UxGT("Başlangıç Seç"); LSTR MSG_LAST_VALUE_SP = _UxGT("Son değer "); - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tüm"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tabla"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Ayarlar"); - #ifdef PREHEAT_2_LABEL - LSTR MSG_PREHEAT_2 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL; - LSTR MSG_PREHEAT_2_SETTINGS = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Conf"); - #endif - #ifdef PREHEAT_3_LABEL - LSTR MSG_PREHEAT_3 = _UxGT("Ön Isınma ") PREHEAT_3_LABEL; - LSTR MSG_PREHEAT_3_SETTINGS = _UxGT("Ön Isınma ") PREHEAT_3_LABEL _UxGT(" Conf"); - #endif - LSTR MSG_PREHEAT_M = _UxGT("Ön Isınma $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Ön Isınma $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Ön Isınma $ Nozul"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Ön Isınma $ Nozul ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Ön Isınma $ Tüm"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Ön Isınma $ Tabla"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Ön Isınma $ Ayarlar"); - #endif + + LSTR MSG_PREHEAT_1 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tüm"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tabla"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Ayarlar"); + + LSTR MSG_PREHEAT_M = _UxGT("Ön Isınma $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Ön Isınma $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Ön Isınma $ Nozul"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Ön Isınma $ Nozul ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Ön Isınma $ Tüm"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Ön Isınma $ Tabla"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Ön Isınma $ Ayarlar"); + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Özel Ön Isınma"); LSTR MSG_COOLDOWN = _UxGT("Soğut/(Durdur)"); @@ -473,25 +466,16 @@ namespace Language_tr { LSTR MSG_RESUME_PRINT = _UxGT("Baskıyı Sürdür"); LSTR MSG_STOP_PRINT = _UxGT("Baskıyı Durdur"); LSTR MSG_OUTAGE_RECOVERY = _UxGT("Kesinti Kurtarma"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_HOST_START_PRINT = _UxGT("Host Baskıyı başlat"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Yazdırma Nesnesi"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Nesneyi İptal Et"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et {"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Yazdırmaya Devam Et"); - LSTR MSG_MEDIA_MENU = _UxGT("SD Karttan Yazdır"); - LSTR MSG_TURN_OFF = _UxGT("Yazıcıyı kapat"); - LSTR MSG_END_LOOPS = _UxGT("Tekrr Döngüler Bitir"); - #else - LSTR MSG_HOST_START_PRINT = _UxGT("Host Başlatma"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Nesneyi Yazdır"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Nesneyi İptal Et"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et {"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("İşe Devam Et"); - LSTR MSG_MEDIA_MENU = MEDIA_TYPE_EN _UxGT(" Yazdır"); - LSTR MSG_TURN_OFF = _UxGT("Şimdi kapat"); - LSTR MSG_END_LOOPS = _UxGT("Son Döngüler"); - #endif + + LSTR MSG_HOST_START_PRINT = _UxGT("Host Başlatma"); + LSTR MSG_PRINTING_OBJECT = _UxGT("Nesneyi Yazdır"); + LSTR MSG_CANCEL_OBJECT = _UxGT("Nesneyi İptal Et"); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et {"); + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("İşe Devam Et"); + LSTR MSG_MEDIA_MENU = MEDIA_TYPE_EN _UxGT(" Yazdır"); + LSTR MSG_TURN_OFF = _UxGT("Şimdi kapat"); + LSTR MSG_END_LOOPS = _UxGT("Son Döngüler"); + LSTR MSG_NO_MEDIA = _UxGT("SD Kart Yok!"); LSTR MSG_DWELL = _UxGT("Uyku..."); LSTR MSG_USERWAIT = _UxGT("Devam için tıkla..."); @@ -652,22 +636,12 @@ namespace Language_tr { LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Açmak için kaydırın."); LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Y.Başlatma bekleyin."); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Ortam yerleştirilmedi."); - LSTR MSG_PLEASE_PREHEAT = _UxGT("Lütfen önce hotend'i ısıtın."); - LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Baskı Sayısını Sıfırla"); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Baskı Sayısı"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Toplam Baskı Süresi"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("En Uzun Baskı Süresi"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Toplam Filaman"); - #else - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Medya Yok"); - LSTR MSG_PLEASE_PREHEAT = _UxGT("Ön Isıtma Lütfen"); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Baskı"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Süre"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("En Uzun"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Filaman"); - #endif + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Medya Yok"); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Ön Isıtma Lütfen"); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Baskı"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Süre"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("En Uzun"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Filaman"); LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Tamamlanan"); LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Sıc."); @@ -757,35 +731,20 @@ namespace Language_tr { LSTR MSG_PASSWORD_REMOVED = _UxGT("Şifre Kaldırıldı"); // - // Filament Değişim ekranları 4 satırlı ekranda 3 satıra kadar gösterilir - // ...veya 3 satırlı ekranda 2 satıra kadar + // Filament Değişim ekranları 3 satırlı ekranda 2 satıra kadar // - #if LCD_HEIGHT >= 4 + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Sürdürmek İçin Tıkla")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Park Ediliyor...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Lütfen bekleyiniz...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Yükle ve bas")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Isıtmak için Tıkla")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Isınıyor...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Çıkartılıyor...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Yüklüyor...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Temizleniyor...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Bitirmek için Tıkla")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Sürdürülüyor...")); - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Baskıya devam etmek", "için Butona bas")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Park Ediliyor...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Filaman değişimi", "için başlama", "bekleniyor")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Filamanı yükle", "ve devam için", "tuşa bas...")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Nozulü Isıtmak için", "Butona Bas.")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozul Isınıyor", "Lütfen Bekleyin...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Filamanın çıkması", "bekleniyor")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Filamanın yüklenmesi", "bekleniyor..")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Filaman Temizlemesi", "için bekle")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Filaman Temizlemesi", "bitirmek için tıkla")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Baskının devam ", "etmesi için bekle")); - #else - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Sürdürmek İçin Tıkla")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Park Ediliyor...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Lütfen bekleyiniz...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Yükle ve bas")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Isıtmak için Tıkla")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Isınıyor...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Çıkartılıyor...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Yüklüyor...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Temizleniyor...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Bitirmek için Tıkla")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Sürdürülüyor...")); - #endif LSTR MSG_TMC_DRIVERS = _UxGT("TMC Sürücüleri"); LSTR MSG_TMC_CURRENT = _UxGT("Sürücü Akımı"); LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hibrit Eşiği"); @@ -800,11 +759,8 @@ namespace Language_tr { LSTR MSG_LEVEL_X_AXIS = _UxGT("Seviye X Ekseni"); LSTR MSG_AUTO_CALIBRATE = _UxGT("Otomatik Kalibre Et"); - #if ENABLED(TOUCH_UI_FTDI_EVE) - LSTR MSG_HEATER_TIMEOUT = _UxGT("Boşta kalma zaman aşımı, sıcaklık düştü. Yeniden ısıtmak ve tekrar devam etmek için için Tamam'a basın."); - #else - LSTR MSG_HEATER_TIMEOUT = _UxGT("Isıtıcı Zaman Aşımı"); - #endif + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Boşta kalma zaman aşımı, sıcaklık düştü. Yeniden ısıtmak ve tekrar devam etmek için için Tamam'a basın."); + LSTR MSG_HEATER_TIMEOUT = _UxGT("Isıtıcı Zaman Aşımı"); LSTR MSG_REHEAT = _UxGT("Yeniden ısıt"); LSTR MSG_REHEATING = _UxGT("Yeniden ısıtılıyor..."); LSTR MSG_REHEATDONE = _UxGT("Y. Isıtma Tamam"); @@ -837,3 +793,46 @@ namespace Language_tr { LSTR MSG_SHORT_HOUR = _UxGT("s"); // One character only LSTR MSG_SHORT_MINUTE = _UxGT("d"); // One character only } + +namespace LanguageWide_tr { + using namespace LanguageNarrow_tr; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_HOST_START_PRINT = _UxGT("Host Baskıyı başlat"); + LSTR MSG_PRINTING_OBJECT = _UxGT("Yazdırma Nesnesi"); + LSTR MSG_CANCEL_OBJECT = _UxGT("Nesneyi İptal Et"); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et {"); + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Yazdırmaya Devam Et"); + LSTR MSG_MEDIA_MENU = _UxGT("SD Karttan Yazdır"); + LSTR MSG_TURN_OFF = _UxGT("Yazıcıyı kapat"); + LSTR MSG_END_LOOPS = _UxGT("Tekrr Döngüler Bitir"); + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Ortam yerleştirilmedi."); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Lütfen önce hotend'i ısıtın."); + LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Baskı Sayısını Sıfırla"); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Baskı Sayısı"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Toplam Baskı Süresi"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("En Uzun Baskı Süresi"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Toplam Filaman"); + #endif +} + +namespace LanguageTall_tr { + using namespace LanguageWide_tr; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Baskıya devam etmek", "için Butona bas")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Park Ediliyor...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Filaman değişimi", "için başlama", "bekleniyor")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Filamanı yükle", "ve devam için", "tuşa bas...")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Nozulü Isıtmak için", "Butona Bas.")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozul Isınıyor", "Lütfen Bekleyin...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Filamanın çıkması", "bekleniyor")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Filamanın yüklenmesi", "bekleniyor..")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Filaman Temizlemesi", "için bekle")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Filaman Temizlemesi", "bitirmek için tıkla")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Baskının devam ", "etmesi için bekle")); + #endif +} + +namespace Language_tr { + using namespace LanguageTall_tr; +} diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h index 7a7f4a5f44..78e91b0484 100644 --- a/Marlin/src/lcd/language/language_uk.h +++ b/Marlin/src/lcd/language/language_uk.h @@ -30,7 +30,7 @@ #define DISPLAY_CHARSET_ISO10646_5 -namespace Language_uk { +namespace LanguageNarrow_uk { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -44,21 +44,12 @@ namespace Language_uk { LSTR MSG_MEDIA_INSERTED = _UxGT("SD-картка вставлена"); LSTR MSG_MEDIA_REMOVED = _UxGT("SD-картка видалена"); LSTR MSG_MEDIA_WAITING = _UxGT("Вставте SD-картку"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Збій ініціалізації SD"); - #else - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Збій ініціаліз. SD"); - #endif + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Збій ініціаліз. SD"); LSTR MSG_MEDIA_READ_ERROR = _UxGT("Помилка зчитування"); LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB диск видалений"); LSTR MSG_MEDIA_USB_FAILED = _UxGT("Помилка USB диску"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переповнення виклику"); - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Програмні кінцевики"); - #else - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переповн. виклику"); - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Прогр.кінцевики"); - #endif + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переповн. виклику"); + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Прогр.кінцевики"); LSTR MSG_LCD_ENDSTOPS = _UxGT("Кінцевик"); // Max length 8 characters LSTR MSG_MAIN_MENU = _UxGT("Основне меню"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Інші налаштування"); @@ -81,64 +72,43 @@ namespace Language_uk { LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Наступна точка"); LSTR MSG_LEVEL_BED_DONE = _UxGT("Завершено!"); LSTR MSG_Z_FADE_HEIGHT = _UxGT("Висота спаду"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Встанов. зміщення дому"); - LSTR MSG_HOME_OFFSET_X = _UxGT("Зміщення дому X"); - LSTR MSG_HOME_OFFSET_Y = _UxGT("Зміщення дому Y"); - LSTR MSG_HOME_OFFSET_Z = _UxGT("Зміщення дому Z"); - #else - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Встан. зміщ. дому"); - LSTR MSG_HOME_OFFSET_X = _UxGT("Зміщ. дому X"); - LSTR MSG_HOME_OFFSET_Y = _UxGT("Зміщ. дому Y"); - LSTR MSG_HOME_OFFSET_Z = _UxGT("Зміщ. дому Z"); - #endif + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Встан. зміщ. дому"); + LSTR MSG_HOME_OFFSET_X = _UxGT("Зміщ. дому X"); + LSTR MSG_HOME_OFFSET_Y = _UxGT("Зміщ. дому Y"); + LSTR MSG_HOME_OFFSET_Z = _UxGT("Зміщ. дому Z"); LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Зміщення прийняті"); LSTR MSG_SELECT_ORIGIN = _UxGT("Оберіть нуль"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_LAST_VALUE_SP = _UxGT("Останнє значення "); - #else - LSTR MSG_LAST_VALUE_SP = _UxGT("Останнє знач. "); - #endif - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Нагрів ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Нагрів ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" все"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" стіл"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" налашт"); + LSTR MSG_LAST_VALUE_SP = _UxGT("Останнє знач. "); + + LSTR MSG_PREHEAT_1 = _UxGT("Нагрів ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_H = _UxGT("Нагрів ") PREHEAT_1_LABEL " ~"; + LSTR MSG_PREHEAT_1_END = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" все"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" стіл"); + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" налашт"); + + LSTR MSG_PREHEAT_M = _UxGT("Нагрів $"); + LSTR MSG_PREHEAT_M_H = _UxGT("Нагрів $ ~"); + LSTR MSG_PREHEAT_M_END = _UxGT("Нагрів $ сопло"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Нагрів $ сопло ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Нагрів $ все"); + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Нагрів $ стіл"); + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Нагрів $ налашт"); - LSTR MSG_PREHEAT_M = _UxGT("Нагрів $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Нагрів $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Нагрів $ сопло"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Нагрів $ сопло ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Нагрів $ все"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Нагрів $ стіл"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Нагрів $ налашт"); - #endif LSTR MSG_PREHEAT_CUSTOM = _UxGT("Нагрів свого"); LSTR MSG_COOLDOWN = _UxGT("Вимкнути нагрів"); LSTR MSG_CUTTER_FREQUENCY = _UxGT("Частота"); LSTR MSG_LASER_MENU = _UxGT("Керування лазером"); LSTR MSG_SPINDLE_MENU = _UxGT("Керування шпінделем"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_LASER_POWER = _UxGT("Потужність лазера"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Перемкн. шпіндель"); - LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Перемкнути вакуум"); - LSTR MSG_LASER_TOGGLE = _UxGT("Перемкнути лазер"); - LSTR MSG_SPINDLE_POWER = _UxGT("Потужн. шпінделя"); - LSTR MSG_LASER_PULSE_MS = _UxGT("Тестовий імпульс мс"); - LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Перемкнути обдув"); - #else - LSTR MSG_LASER_POWER = _UxGT("Потужн. лазера"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Перемк. шпінд."); - LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Перемк. вакуум"); - LSTR MSG_LASER_TOGGLE = _UxGT("Перемкн. лазер"); - LSTR MSG_SPINDLE_POWER = _UxGT("Потужн. шпінд."); - LSTR MSG_LASER_PULSE_MS = _UxGT("Тест. імп., мс"); - LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Перемкн. обдув"); - #endif + LSTR MSG_LASER_POWER = _UxGT("Потужн. лазера"); + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Перемк. шпінд."); + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Перемк. вакуум"); + LSTR MSG_LASER_TOGGLE = _UxGT("Перемкн. лазер"); + LSTR MSG_SPINDLE_POWER = _UxGT("Потужн. шпінд."); + LSTR MSG_LASER_PULSE_MS = _UxGT("Тест. імп., мс"); + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Перемкн. обдув"); LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Керування обдувом"); LSTR MSG_FLOWMETER_FAULT = _UxGT("Помилка обдуву"); LSTR MSG_LASER_FIRE_PULSE = _UxGT("Імпульс лазеру"); @@ -153,21 +123,12 @@ namespace Language_uk { LSTR MSG_BED_LEVELING = _UxGT("Вирівнювання столу"); LSTR MSG_LEVEL_BED = _UxGT("Вирівняти стіл"); LSTR MSG_BED_TRAMMING = _UxGT("Вирівняти кути"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вгору до спрацюв. зонду"); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Кути в межах. Вирів.столу"); - #else - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вгору до спрац.зонду"); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Кути в межах. Вирівн"); - #endif + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вгору до спрац.зонду"); + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Кути в межах. Вирівн"); LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Хороші точки: "); LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Остання Z: "); LSTR MSG_NEXT_CORNER = _UxGT("Наступний кут"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_MESH_EDITOR = _UxGT("Зміщення по Z"); - #else - LSTR MSG_MESH_EDITOR = _UxGT("Зміщення Z"); - #endif + LSTR MSG_MESH_EDITOR = _UxGT("Зміщення Z"); LSTR MSG_EDIT_MESH = _UxGT("Редагувати сітку"); LSTR MSG_EDITING_STOPPED = _UxGT("Редагув. зупинено"); LSTR MSG_PROBING_POINT = _UxGT("Точка сітки"); @@ -196,20 +157,11 @@ namespace Language_uk { LSTR MSG_UBL_TOOLS = _UxGT("Інструменти UBL"); LSTR MSG_UBL_LEVEL_BED = _UxGT("Налаштування UBL"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Точка нахилу"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Ручне введення сітки"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Розмістити шайбу і вимір."); - #else - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Ручне введ. сітки"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Розм. шайбу і вимір."); - #endif + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Ручне введ. сітки"); + LSTR MSG_UBL_BC_INSERT = _UxGT("Розм. шайбу і вимір."); LSTR MSG_UBL_MESH_WIZARD = _UxGT("Майстер сіток UBL"); LSTR MSG_UBL_BC_INSERT2 = _UxGT("Вимірювання"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_UBL_BC_REMOVE = _UxGT("Видалити і виміряти стіл"); - #else - LSTR MSG_UBL_BC_REMOVE = _UxGT("Видали і вимір. стіл"); - #endif + LSTR MSG_UBL_BC_REMOVE = _UxGT("Видали і вимір. стіл"); LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Рух до наступної"); LSTR MSG_UBL_ACTIVATE_MESH = _UxGT("Активувати UBL"); LSTR MSG_UBL_DEACTIVATE_MESH = _UxGT("Деактивувати UBL"); @@ -217,15 +169,9 @@ namespace Language_uk { LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" столу,") LCD_STR_DEGREE _UxGT("C"); LSTR MSG_UBL_SET_TEMP_HOTEND = LCD_STR_THERMOMETER _UxGT(" сопла, ") LCD_STR_DEGREE _UxGT("C"); LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" сопла,") LCD_STR_DEGREE _UxGT("C"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Редагувати свою сітку"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Точне редагування сітки"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Будувати свою сітку"); - #else - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Редагувати свою"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Точне редаг. сітки"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Будувати свою"); - #endif + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Редагувати свою"); + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Точне редаг. сітки"); + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Будувати свою"); LSTR MSG_UBL_MESH_EDIT = _UxGT("Редагування сітки"); LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Сітка побудована"); LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Будувати сітку"); @@ -247,11 +193,7 @@ namespace Language_uk { LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Продовжити сітку"); LSTR MSG_UBL_MESH_LEVELING = _UxGT("Вирівнювання сітки"); LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-точкове вирівн."); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Вирівнювання растру"); - #else - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Вирівнюв. растру"); - #endif + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Вирівнюв. растру"); LSTR MSG_UBL_MESH_LEVEL = _UxGT("Вирівняти сітку"); LSTR MSG_UBL_SIDE_POINTS = _UxGT("Крайні точки"); LSTR MSG_UBL_MAP_TYPE = _UxGT("Тип мапи сітки"); @@ -260,23 +202,14 @@ namespace Language_uk { LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Вивести в CSV"); LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Зберегти зовні"); LSTR MSG_UBL_INFO_UBL = _UxGT("Інформація по UBL"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Обсяг заповнюв."); - #else - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Обсяг заповн."); - #endif + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Обсяг заповн."); LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Ручне заповнення"); LSTR MSG_UBL_SMART_FILLIN = _UxGT("Розумне заповнення"); LSTR MSG_UBL_FILLIN_MESH = _UxGT("Заповнити сітку"); LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Анулювати все"); LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Анулювати найближчу"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Точно налаштувати все"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Точно налашт.найближчу"); - #else - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Точно налашт. все"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Точно найближчу"); - #endif + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Точно налашт. все"); + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Точно найближчу"); LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Збереження сітки"); LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Слот пам'яті"); LSTR MSG_UBL_LOAD_MESH = _UxGT("Завантажити сітку"); @@ -299,11 +232,7 @@ namespace Language_uk { LSTR MSG_LED_CONTROL = _UxGT("Керування світлом"); LSTR MSG_LEDS = _UxGT("Підсвітка"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_LED_PRESETS = _UxGT("Передустановки світла"); - #else - LSTR MSG_LED_PRESETS = _UxGT("Передустан. світла"); - #endif + LSTR MSG_LED_PRESETS = _UxGT("Передустан. світла"); LSTR MSG_SET_LEDS_RED = _UxGT("Червоний"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Помаранчевий"); LSTR MSG_SET_LEDS_YELLOW = _UxGT("Жовтий"); @@ -315,11 +244,7 @@ namespace Language_uk { LSTR MSG_SET_LEDS_DEFAULT = _UxGT("За умовчанням"); LSTR MSG_LED_CHANNEL_N = _UxGT("Канал {"); LSTR MSG_LEDS2 = _UxGT("Світло #2"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_NEO2_PRESETS = _UxGT("Передустановка світла #2"); - #else - LSTR MSG_NEO2_PRESETS = _UxGT("Передуст. світла #2"); - #endif + LSTR MSG_NEO2_PRESETS = _UxGT("Передуст. світла #2"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Яскравість"); LSTR MSG_CUSTOM_LEDS = _UxGT("Своє світло"); LSTR MSG_INTENSITY_R = _UxGT("Рівень червоного"); @@ -350,24 +275,14 @@ namespace Language_uk { LSTR MSG_NOZZLE_STANDBY = _UxGT("Сопло очікує"); LSTR MSG_BED = _UxGT("Стіл, ") LCD_STR_DEGREE _UxGT("C"); LSTR MSG_CHAMBER = _UxGT("Камера,") LCD_STR_DEGREE _UxGT("C"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_COOLER = _UxGT("Охолодження лазеру"); - LSTR MSG_COOLER_TOGGLE = _UxGT("Перемк. охолодж."); - #else - LSTR MSG_COOLER = _UxGT("Охолодж. лазеру"); - LSTR MSG_COOLER_TOGGLE = _UxGT("Перемк.охолод"); - #endif + LSTR MSG_COOLER = _UxGT("Охолодж. лазеру"); + LSTR MSG_COOLER_TOGGLE = _UxGT("Перемк.охолод"); LSTR MSG_FLOWMETER_SAFETY = _UxGT("Безпека потоку"); LSTR MSG_LASER = _UxGT("Лазер"); LSTR MSG_FAN_SPEED = _UxGT("Швидк. вент."); LSTR MSG_FAN_SPEED_N = _UxGT("Швидк. вент. ~"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_STORED_FAN_N = _UxGT("Збереж.швидк.вент. ~"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Дод. швидк. вент. ~"); - #else - LSTR MSG_STORED_FAN_N = _UxGT("Збереж. вент. ~"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Додат.вент. ~"); - #endif + LSTR MSG_STORED_FAN_N = _UxGT("Збереж. вент. ~"); + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Додат.вент. ~"); LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Дод. швидк. вент."); LSTR MSG_CONTROLLER_FAN = _UxGT("Вент. контролера"); LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Холості оберти"); @@ -399,11 +314,7 @@ namespace Language_uk { LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-ривок"); LSTR MSG_VN_JERK = _UxGT("V@-ривок"); LSTR MSG_VE_JERK = _UxGT("Ve-ривок"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Відхилення вузла"); - #else - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Відхил.вузла"); - #endif + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Відхил.вузла"); LSTR MSG_MAX_SPEED = _UxGT("Швидкість, мм/с"); LSTR MSG_VMAX_A = _UxGT("Швидк.макс ") STR_A; LSTR MSG_VMAX_B = _UxGT("Швидк.макс ") STR_B; @@ -412,11 +323,7 @@ namespace Language_uk { LSTR MSG_VMAX_E = _UxGT("Швидк.макс E"); LSTR MSG_VMAX_EN = _UxGT("Швидк.макс *"); LSTR MSG_VMIN = _UxGT("Швидк. мін"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_VTRAV_MIN = _UxGT("Переміщення мін"); - #else - LSTR MSG_VTRAV_MIN = _UxGT("Переміщ. мін"); - #endif + LSTR MSG_VTRAV_MIN = _UxGT("Переміщ. мін"); LSTR MSG_ACCELERATION = _UxGT("Прискорення, мм/с2"); LSTR MSG_AMAX_A = _UxGT("Приск.макс ") STR_A; LSTR MSG_AMAX_B = _UxGT("Приск.макс ") STR_B; @@ -447,23 +354,14 @@ namespace Language_uk { LSTR MSG_FILAMENT_LOAD = _UxGT("Завантаж., мм"); LSTR MSG_ADVANCE_K = _UxGT("Kоеф. просув."); LSTR MSG_ADVANCE_K_E = _UxGT("Kоеф. просув. *"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_CONTRAST = _UxGT("Контраст екрану"); - LSTR MSG_BRIGHTNESS = _UxGT("Яскравість LCD"); - #else - LSTR MSG_CONTRAST = _UxGT("Контраст"); - LSTR MSG_BRIGHTNESS = _UxGT("Яскравість"); - #endif + LSTR MSG_CONTRAST = _UxGT("Контраст"); + LSTR MSG_BRIGHTNESS = _UxGT("Яскравість"); LSTR MSG_SCREEN_TIMEOUT = _UxGT("LCD Таймаут, x"); LSTR MSG_BRIGHTNESS_OFF = _UxGT("Підсвітка вимк."); LSTR MSG_STORE_EEPROM = _UxGT("Зберегти в EEPROM"); LSTR MSG_LOAD_EEPROM = _UxGT("Зчитати з EEPROM"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("На базові параметри"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_INIT_EEPROM = _UxGT("Ініціалізація EEPROM"); - #else - LSTR MSG_INIT_EEPROM = _UxGT("Ініціаліз. EEPROM"); - #endif + LSTR MSG_INIT_EEPROM = _UxGT("Ініціаліз. EEPROM"); LSTR MSG_ERR_EEPROM_CRC = _UxGT("Збій EEPROM: CRC"); LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Збій EEPROM: розмір"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Збій EEPROM: версія"); @@ -522,19 +420,11 @@ namespace Language_uk { LSTR MSG_NO_MOVE = _UxGT("Немає руху."); LSTR MSG_KILLED = _UxGT("ПЕРЕРВАНО. "); LSTR MSG_STOPPED = _UxGT("ЗУПИНЕНО. "); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_CONTROL_RETRACT = _UxGT("Втягування, мм"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Зміна втягув.,мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Повернення, мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Поверн.зміни, мм"); - LSTR MSG_AUTORETRACT = _UxGT("Автовтягування"); - #else - LSTR MSG_CONTROL_RETRACT = _UxGT("Втягув., мм"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Зміна втяг.мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Поверн., мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Повер.зміни,мм"); - LSTR MSG_AUTORETRACT = _UxGT("Автовтягув."); - #endif + LSTR MSG_CONTROL_RETRACT = _UxGT("Втягув., мм"); + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Зміна втяг.мм"); + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Поверн., мм"); + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Повер.зміни,мм"); + LSTR MSG_AUTORETRACT = _UxGT("Автовтягув."); LSTR MSG_CONTROL_RETRACTF = _UxGT("Втягування V"); LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Підскок, мм"); LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Повернення V"); @@ -544,22 +434,12 @@ namespace Language_uk { LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Очистити довжину"); LSTR MSG_TOOL_CHANGE = _UxGT("Зміна сопла"); LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Підняти по Z"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Початк.швидкість"); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Швидкість втягув."); - #else - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Початк.швидк."); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Швидк.втягув."); - #endif + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Початк.швидк."); + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Швидк.втягув."); LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Паркувати голову"); LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Відновити швидкість"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Оберти вентилятора"); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Час вентилятора"); - #else - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Оберти вент."); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Час вент."); - #endif + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Оберти вент."); + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Час вент."); LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Авто Увімк."); LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Авто Вимкн."); LSTR MSG_TOOL_MIGRATION = _UxGT("Заміна інструменту"); @@ -616,11 +496,7 @@ namespace Language_uk { LSTR MSG_THERMAL_RUNAWAY_BED = _UxGT("ВИТІК ТЕПЛА СТОЛУ"); LSTR MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("ВИТІК ТЕПЛА КАМЕРИ"); LSTR MSG_THERMAL_RUNAWAY_COOLER = _UxGT("ВИТІК ОХОЛОДЖЕННЯ"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_COOLING_FAILED = _UxGT("ОХОЛОДЖЕННЯ НЕ ВДАЛОСЬ"); - #else - LSTR MSG_COOLING_FAILED = _UxGT("ОХОЛОДЖ. НЕ ВДАЛОСЬ"); - #endif + LSTR MSG_COOLING_FAILED = _UxGT("ОХОЛОДЖ. НЕ ВДАЛОСЬ"); LSTR MSG_ERR_MAXTEMP = _UxGT("МАКСИМАЛЬНА Т") LCD_STR_DEGREE; LSTR MSG_ERR_MINTEMP = _UxGT("МІНІМАЛЬНА Т") LCD_STR_DEGREE; LSTR MSG_HALTED = _UxGT("ПРИНТЕР ЗУПИНЕНО"); @@ -630,17 +506,10 @@ namespace Language_uk { LSTR MSG_BED_HEATING = _UxGT("Нагрів столу..."); LSTR MSG_PROBE_HEATING = _UxGT("Нагрів зонду..."); LSTR MSG_CHAMBER_HEATING = _UxGT("Нагрів камери..."); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_BED_COOLING = _UxGT("Охолодження столу..."); - LSTR MSG_PROBE_COOLING = _UxGT("Охолодження зонду..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Охолодження камери..."); - LSTR MSG_LASER_COOLING = _UxGT("Охолодження лазеру..."); - #else - LSTR MSG_BED_COOLING = _UxGT("Охолодж. столу..."); - LSTR MSG_PROBE_COOLING = _UxGT("Охолодж. зонду..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Охолодж. камери..."); - LSTR MSG_LASER_COOLING = _UxGT("Охолодж. лазеру..."); - #endif + LSTR MSG_BED_COOLING = _UxGT("Охолодж. столу..."); + LSTR MSG_PROBE_COOLING = _UxGT("Охолодж. зонду..."); + LSTR MSG_CHAMBER_COOLING = _UxGT("Охолодж. камери..."); + LSTR MSG_LASER_COOLING = _UxGT("Охолодж. лазеру..."); LSTR MSG_DELTA_CALIBRATE = _UxGT("Калібрування Delta"); LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Калібрувати X"); LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Калібрувати Y"); @@ -655,22 +524,12 @@ namespace Language_uk { LSTR MSG_INFO_MENU = _UxGT("Про принтер"); LSTR MSG_INFO_PRINTER_MENU = _UxGT("Дані принтера"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_3POINT_LEVELING = _UxGT("3-точкове вирівнювання"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Лінійне вирівнювання"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Білінійне вирівнювання"); - #else - LSTR MSG_3POINT_LEVELING = _UxGT("3-точкове вирівн."); - LSTR MSG_LINEAR_LEVELING = _UxGT("Лінійне вирівн."); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Білінійне вирівн."); - #endif + LSTR MSG_3POINT_LEVELING = _UxGT("3-точкове вирівн."); + LSTR MSG_LINEAR_LEVELING = _UxGT("Лінійне вирівн."); + LSTR MSG_BILINEAR_LEVELING = _UxGT("Білінійне вирівн."); LSTR MSG_UBL_LEVELING = _UxGT("UBL"); LSTR MSG_MESH_LEVELING = _UxGT("Вирівнювання сітки"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_MESH_DONE = _UxGT("Зондування сітки виконано"); - #else - LSTR MSG_MESH_DONE = _UxGT("Зондування виконано"); - #endif + LSTR MSG_MESH_DONE = _UxGT("Зондування виконано"); LSTR MSG_INFO_STATS_MENU = _UxGT("Статистика принтера"); LSTR MSG_INFO_BOARD_MENU = _UxGT("Про плату"); @@ -678,15 +537,9 @@ namespace Language_uk { LSTR MSG_INFO_EXTRUDERS = _UxGT("Екструдери"); LSTR MSG_INFO_BAUDRATE = _UxGT("Бод"); LSTR MSG_INFO_PROTOCOL = _UxGT("Протокол"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контроль витіку ") LCD_STR_THERMOMETER _UxGT(" Вимк"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контроль витіку ") LCD_STR_THERMOMETER _UxGT(" Увімк"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Час простою хотенду"); - #else - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контр.витіку ") LCD_STR_THERMOMETER _UxGT(" Вимк"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контр.витіку ") LCD_STR_THERMOMETER _UxGT(" Увімк"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Час прост. хот-у"); - #endif + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контр.витіку ") LCD_STR_THERMOMETER _UxGT(" Вимк"); + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контр.витіку ") LCD_STR_THERMOMETER _UxGT(" Увімк"); + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Час прост. хот-у"); LSTR MSG_CASE_LIGHT = _UxGT("Підсвітка"); LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Яскравість світла"); @@ -696,23 +549,13 @@ namespace Language_uk { LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Екструдовано"); LSTR MSG_PLEASE_PREHEAT = _UxGT("Нагрійте хотенд"); LSTR MSG_COLORS_GET = _UxGT("Отримати колір"); - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Носій не вставлений"); - LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Перезавантаження..."); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Кількість друків"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Час друку"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Найдовший час"); - LSTR MSG_COLORS_SELECT = _UxGT("Обрати кольори"); - LSTR MSG_COLORS_APPLIED = _UxGT("Кольори застосовані"); - #else - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Немає носія"); - LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Перезавантаж..."); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Друків"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Загалом"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Найдовше"); - LSTR MSG_COLORS_SELECT = _UxGT("Кольори"); - LSTR MSG_COLORS_APPLIED = _UxGT("Кольори застос."); - #endif + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Немає носія"); + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Перезавантаж..."); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Друків"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Загалом"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Найдовше"); + LSTR MSG_COLORS_SELECT = _UxGT("Кольори"); + LSTR MSG_COLORS_APPLIED = _UxGT("Кольори застос."); LSTR MSG_COLORS_RED = _UxGT("Червоний"); LSTR MSG_COLORS_GREEN = _UxGT("Зелений"); LSTR MSG_COLORS_BLUE = _UxGT("Синій"); @@ -732,21 +575,12 @@ namespace Language_uk { LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("ЗУПИНКА ДРУКУ"); LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("ЗАВАНТАЖИТИ ПРУТОК"); LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("ВИВАНТАЖИТИ ПРУТОК"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ПАРАМЕТРИ ПРОДОВЖЕННЯ:"); - #else - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ПАРАМ.ПРОДОВЖЕННЯ:"); - #endif + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ПАРАМ.ПРОДОВЖЕННЯ:"); LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Видавити ще"); LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Відновити друк"); LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Сопло: "); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик закінчення прутка"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Відстань закінч.,мм"); - #else - LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик закінч.прутка"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("До закінч.,мм"); - #endif + LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик закінч.прутка"); + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("До закінч.,мм"); LSTR MSG_KILL_HOMING_FAILED = _UxGT("Помилка паркування"); LSTR MSG_LCD_PROBING_FAILED = _UxGT("Помилка зондування"); @@ -758,11 +592,7 @@ namespace Language_uk { LSTR MSG_MMU2_RESUMING = _UxGT("MMU Продовження..."); LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("MMU Завантажити"); LSTR MSG_MMU2_LOAD_ALL = _UxGT("MMU Завантажити все"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("MMU Завантажити в сопло"); - #else - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("MMU Завант. в сопло"); - #endif + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("MMU Завант. в сопло"); LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("MMU Звільнити"); LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("MMU Звільнити ~"); LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("MMU Вивантажити"); @@ -775,33 +605,18 @@ namespace Language_uk { LSTR MSG_MMU2_RESETTING = _UxGT("MMU Перезапуск..."); LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Видаліть, натисніть"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_MIX = _UxGT("Змішування"); - #else - LSTR MSG_MIX = _UxGT("Змішув."); - #endif + LSTR MSG_MIX = _UxGT("Змішув."); LSTR MSG_MIX_COMPONENT_N = _UxGT("Компонент {"); LSTR MSG_MIXER = _UxGT("Змішувач"); LSTR MSG_GRADIENT = _UxGT("Градієнт"); LSTR MSG_FULL_GRADIENT = _UxGT("Повний градієнт"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_TOGGLE_MIX = _UxGT("Переключити змішування"); - #else - LSTR MSG_TOGGLE_MIX = _UxGT("Переключ.змішування"); - #endif + LSTR MSG_TOGGLE_MIX = _UxGT("Переключ.змішування"); LSTR MSG_CYCLE_MIX = _UxGT("Циклічне змішування"); LSTR MSG_GRADIENT_MIX = _UxGT("Градієнт змішування"); LSTR MSG_REVERSE_GRADIENT = _UxGT("Змінити градієнт"); - - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_ACTIVE_VTOOL = _UxGT("Активація В-інструменту"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдонім В-інструменту"); - LSTR MSG_RESET_VTOOLS = _UxGT("Зкидання В-інструментів"); - #else - LSTR MSG_ACTIVE_VTOOL = _UxGT("Актив. В-інструм."); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдонім В-інструм"); - LSTR MSG_RESET_VTOOLS = _UxGT("Зкидання В-інструм."); - #endif + LSTR MSG_ACTIVE_VTOOL = _UxGT("Актив. В-інструм."); + LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдонім В-інструм"); + LSTR MSG_RESET_VTOOLS = _UxGT("Зкидання В-інструм."); LSTR MSG_START_VTOOL = _UxGT("Початок В-інструменту"); LSTR MSG_END_VTOOL = _UxGT("Кінець В-інструменту"); LSTR MSG_COMMIT_VTOOL = _UxGT("Змішати В-інструменти"); @@ -816,11 +631,7 @@ namespace Language_uk { LSTR MSG_MAZE = _UxGT("Лабіринт"); LSTR MSG_BAD_PAGE = _UxGT("Погана сторінка"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Погана швидкість стор."); - #else - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Погана швидк. стор."); - #endif + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Погана швидк. стор."); LSTR MSG_EDIT_PASSWORD = _UxGT("Редагувати пароль"); LSTR MSG_LOGIN_REQUIRED = _UxGT("Потрібен логін"); @@ -835,35 +646,19 @@ namespace Language_uk { // - // Filament Change screens show up to 3 lines on a 4-line display - // ...or up to 2 lines on a 3-line display + // Filament Change screens show up to 2 lines on a 3-line display // LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Паркування...")); - #if LCD_HEIGHT >= 4 - // Up to 3 lines allowed - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Натисніть кнопку", "для продовження", "друку")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Зачекайте", "на початок", "заміни прутка")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Вставте пруток", "та натисніть", "для продовження")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Натисніть кнопку", "для нагріву сопла")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Сопло нагрівається", "зачекайте...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Зачекайте", "на вивід прутка")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Зачекайте", "на ввід прутка")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Дочекайтесь", "очищення прутка")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Натисніть кнопку", "для завершення", "очищення прутка")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Зачекайте", "на відновлення", "друку")); - #else - // Up to 2 lines allowed - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Продовжити друк")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Зачекайте...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Вставте і натисніть")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Нагріти сопло")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Нагрів сопла...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Вивід прутка...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Ввід прутка...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Очищення прутка...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Завершити очищення")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Поновлення друку...")); - #endif + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Продовжити друк")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Зачекайте...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Вставте і натисніть")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Нагріти сопло")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Нагрів сопла...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Вивід прутка...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Ввід прутка...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Очищення прутка...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Завершити очищення")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Поновлення друку...")); LSTR MSG_TMC_DRIVERS = _UxGT("Драйвери TMC"); LSTR MSG_TMC_CURRENT = _UxGT("Струм драйвера"); @@ -880,22 +675,14 @@ namespace Language_uk { LSTR MSG_LEVEL_X_AXIS = _UxGT("Рівень вісі X"); LSTR MSG_AUTO_CALIBRATE = _UxGT("Авто калібрування"); - #if ENABLED(TOUCH_UI_FTDI_EVE) - LSTR MSG_HEATER_TIMEOUT = _UxGT("Час простою збіг, температура впала. Натисніть ОК, щоби знову нагріти та продовжити"); - #else - LSTR MSG_HEATER_TIMEOUT = _UxGT("Час нагрівача збіг"); - #endif + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Час простою збіг, температура впала. Натисніть ОК, щоби знову нагріти та продовжити"); + LSTR MSG_HEATER_TIMEOUT = _UxGT("Час нагрівача збіг"); LSTR MSG_REHEAT = _UxGT("Поновити нагрів"); LSTR MSG_REHEATING = _UxGT("Нагрівання..."); LSTR MSG_PROBE_WIZARD = _UxGT("Майстер Z-зонда"); - #if LCD_WIDTH > 21 || HAS_DWIN_E3V2 - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондув. контрольної точки Z"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Рух до точки зондування"); - #else - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондув.контр.точки Z"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Рух до точки зондув."); - #endif + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондув.контр.точки Z"); + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Рух до точки зондув."); LSTR MSG_SOUND = _UxGT("Звук"); @@ -915,3 +702,109 @@ namespace Language_uk { LSTR MSG_SHORT_HOUR = _UxGT("г"); // One character only LSTR MSG_SHORT_MINUTE = _UxGT("х"); // One character only } + +namespace LanguageWide_uk { + using namespace LanguageNarrow_uk; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Збій ініціалізації SD"); + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переповнення виклику"); + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Програмні кінцевики"); + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Встанов. зміщення дому"); + LSTR MSG_HOME_OFFSET_X = _UxGT("Зміщення дому X"); + LSTR MSG_HOME_OFFSET_Y = _UxGT("Зміщення дому Y"); + LSTR MSG_HOME_OFFSET_Z = _UxGT("Зміщення дому Z"); + LSTR MSG_LAST_VALUE_SP = _UxGT("Останнє значення "); + LSTR MSG_LASER_POWER = _UxGT("Потужність лазера"); + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Перемкн. шпіндель"); + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Перемкнути вакуум"); + LSTR MSG_LASER_TOGGLE = _UxGT("Перемкнути лазер"); + LSTR MSG_SPINDLE_POWER = _UxGT("Потужн. шпінделя"); + LSTR MSG_LASER_PULSE_MS = _UxGT("Тестовий імпульс мс"); + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Перемкнути обдув"); + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вгору до спрацюв. зонду"); + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Кути в межах. Вирів.столу"); + LSTR MSG_MESH_EDITOR = _UxGT("Зміщення по Z"); + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Ручне введення сітки"); + LSTR MSG_UBL_BC_INSERT = _UxGT("Розмістити шайбу і вимір."); + LSTR MSG_UBL_BC_REMOVE = _UxGT("Видалити і виміряти стіл"); + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Редагувати свою сітку"); + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Точне редагування сітки"); + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Будувати свою сітку"); + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Вирівнювання растру"); + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Обсяг заповнюв."); + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Точно налаштувати все"); + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Точно налашт.найближчу"); + LSTR MSG_LED_PRESETS = _UxGT("Передустановки світла"); + LSTR MSG_NEO2_PRESETS = _UxGT("Передустановка світла #2"); + LSTR MSG_COOLER = _UxGT("Охолодження лазеру"); + LSTR MSG_COOLER_TOGGLE = _UxGT("Перемк. охолодж."); + LSTR MSG_STORED_FAN_N = _UxGT("Збереж.швидк.вент. ~"); + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Дод. швидк. вент. ~"); + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Відхилення вузла"); + LSTR MSG_VTRAV_MIN = _UxGT("Переміщення мін"); + LSTR MSG_CONTRAST = _UxGT("Контраст екрану"); + LSTR MSG_BRIGHTNESS = _UxGT("Яскравість LCD"); + LSTR MSG_INIT_EEPROM = _UxGT("Ініціалізація EEPROM"); + LSTR MSG_CONTROL_RETRACT = _UxGT("Втягування, мм"); + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Зміна втягув.,мм"); + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Повернення, мм"); + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Поверн.зміни, мм"); + LSTR MSG_AUTORETRACT = _UxGT("Автовтягування"); + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Початк.швидкість"); + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Швидкість втягув."); + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Оберти вентилятора"); + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Час вентилятора"); + LSTR MSG_COOLING_FAILED = _UxGT("ОХОЛОДЖЕННЯ НЕ ВДАЛОСЬ"); + LSTR MSG_BED_COOLING = _UxGT("Охолодження столу..."); + LSTR MSG_PROBE_COOLING = _UxGT("Охолодження зонду..."); + LSTR MSG_CHAMBER_COOLING = _UxGT("Охолодження камери..."); + LSTR MSG_LASER_COOLING = _UxGT("Охолодження лазеру..."); + LSTR MSG_3POINT_LEVELING = _UxGT("3-точкове вирівнювання"); + LSTR MSG_LINEAR_LEVELING = _UxGT("Лінійне вирівнювання"); + LSTR MSG_BILINEAR_LEVELING = _UxGT("Білінійне вирівнювання"); + LSTR MSG_MESH_DONE = _UxGT("Зондування сітки виконано"); + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контроль витіку ") LCD_STR_THERMOMETER _UxGT(" Вимк"); + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контроль витіку ") LCD_STR_THERMOMETER _UxGT(" Увімк"); + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Час простою хотенду"); + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Носій не вставлений"); + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Перезавантаження..."); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Кількість друків"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Час друку"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Найдовший час"); + LSTR MSG_COLORS_SELECT = _UxGT("Обрати кольори"); + LSTR MSG_COLORS_APPLIED = _UxGT("Кольори застосовані"); + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ПАРАМЕТРИ ПРОДОВЖЕННЯ:"); + LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик закінчення прутка"); + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Відстань закінч.,мм"); + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("MMU Завантажити в сопло"); + LSTR MSG_MIX = _UxGT("Змішування"); + LSTR MSG_TOGGLE_MIX = _UxGT("Переключити змішування"); + LSTR MSG_ACTIVE_VTOOL = _UxGT("Активація В-інструменту"); + LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдонім В-інструменту"); + LSTR MSG_RESET_VTOOLS = _UxGT("Зкидання В-інструментів"); + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Погана швидкість стор."); + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондув. контрольної точки Z"); + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Рух до точки зондування"); + #endif +} + +namespace LanguageTall_uk { + using namespace LanguageWide_uk; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Натисніть кнопку", "для продовження", "друку")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Зачекайте", "на початок", "заміни прутка")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Вставте пруток", "та натисніть", "для продовження")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Натисніть кнопку", "для нагріву сопла")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Сопло нагрівається", "зачекайте...")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Зачекайте", "на вивід прутка")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Зачекайте", "на ввід прутка")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Дочекайтесь", "очищення прутка")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Натисніть кнопку", "для завершення", "очищення прутка")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Зачекайте", "на відновлення", "друку")); + #endif +} + +namespace Language_uk { + using namespace LanguageTall_uk; +} diff --git a/Marlin/src/lcd/language/language_vi.h b/Marlin/src/lcd/language/language_vi.h index 69b58f71f0..d37358219d 100644 --- a/Marlin/src/lcd/language/language_vi.h +++ b/Marlin/src/lcd/language/language_vi.h @@ -27,7 +27,7 @@ * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html */ -namespace Language_vi { +namespace LanguageNarrow_vi { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 2; @@ -63,23 +63,23 @@ namespace Language_vi { LSTR MSG_Z_FADE_HEIGHT = _UxGT("Chiều cao mờ dần"); // Fade Height LSTR MSG_SET_HOME_OFFSETS = _UxGT("Đặt bù đắp nhà"); // Set home offsets LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Bù đắp được áp dụng"); // Offsets applied - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước"); // Preheat - LSTR MSG_PREHEAT_1_H = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ~"); // Preheat - LSTR MSG_PREHEAT_1_END = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Tất cả"); // All - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Bàn"); // Bed -- using vietnamese term for 'table' instead - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Cấu hình"); // Conf - LSTR MSG_PREHEAT_M = _UxGT("Làm nóng $ trước"); // Preheat - LSTR MSG_PREHEAT_M_H = _UxGT("Làm nóng $ trước ~"); // Preheat - LSTR MSG_PREHEAT_M_END = _UxGT("Làm nóng $ Đầu"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Làm nóng $ Đầu ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Làm nóng $ Tất cả"); // All - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Làm nóng $ Bàn"); // Bed -- using vietnamese term for 'table' instead - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Làm nóng $ Cấu hình"); // Conf - #endif + LSTR MSG_PREHEAT_1 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước"); // Preheat + LSTR MSG_PREHEAT_1_H = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ~"); // Preheat + LSTR MSG_PREHEAT_1_END = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu"); + LSTR MSG_PREHEAT_1_END_E = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ~"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Tất cả"); // All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Bàn"); // Bed -- using vietnamese term for 'table' instead + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Cấu hình"); // Conf + + LSTR MSG_PREHEAT_M = _UxGT("Làm nóng $ trước"); // Preheat + LSTR MSG_PREHEAT_M_H = _UxGT("Làm nóng $ trước ~"); // Preheat + LSTR MSG_PREHEAT_M_END = _UxGT("Làm nóng $ Đầu"); + LSTR MSG_PREHEAT_M_END_E = _UxGT("Làm nóng $ Đầu ~"); + LSTR MSG_PREHEAT_M_ALL = _UxGT("Làm nóng $ Tất cả"); // All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Làm nóng $ Bàn"); // Bed -- using vietnamese term for 'table' instead + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Làm nóng $ Cấu hình"); // Conf + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Sự nóng trước tự chọn"); // Preheat Custom LSTR MSG_COOLDOWN = _UxGT("Nguội xuống"); // Cooldown LSTR MSG_SWITCH_PS_ON = _UxGT("Bật nguồn"); // Switch power on @@ -125,10 +125,8 @@ namespace Language_vi { LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Chỉnh sửa xong lưới"); // Done Editing Mesh LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Xây dựng lưới tự chọn"); // Build Custom Mesh LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Xây dựng lưới"); // Build Mesh - #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Xây dựng lưới ($)"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Thẩm tra lưới ($)"); - #endif + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Xây dựng lưới ($)"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Thẩm tra lưới ($)"); LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Xây dựng lưới lạnh"); // Build cold mesh LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Điều chỉnh chiều cao lưới"); // Adjust Mesh Height LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Số lượng chiều cao"); // Height Amount @@ -439,3 +437,20 @@ namespace Language_vi { LSTR MSG_SHORT_HOUR = _UxGT("g"); // h - giờ - One character only LSTR MSG_SHORT_MINUTE = _UxGT("p"); // m - phút - One character only } + +namespace LanguageWide_vi { + using namespace LanguageNarrow_vi; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #endif +} + +namespace LanguageTall_vi { + using namespace LanguageWide_vi; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + #endif +} + +namespace Language_vi { + using namespace LanguageTall_vi; +} diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h index 03c8d80bca..7f4d5af374 100644 --- a/Marlin/src/lcd/language/language_zh_CN.h +++ b/Marlin/src/lcd/language/language_zh_CN.h @@ -27,7 +27,7 @@ * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html */ -namespace Language_zh_CN { +namespace LanguageNarrow_zh_CN { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 3; @@ -68,23 +68,23 @@ namespace Language_zh_CN { LSTR MSG_Z_FADE_HEIGHT = _UxGT("淡出高度"); // "Fade Height" LSTR MSG_SET_HOME_OFFSETS = _UxGT("设置原点偏移"); // "Set home offsets" LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("偏移已启用"); // "Offsets applied" - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("预热 ") PREHEAT_1_LABEL; // "Preheat PREHEAT_2_LABEL" - LSTR MSG_PREHEAT_1_H = _UxGT("预热 ") PREHEAT_1_LABEL " ~"; // "Preheat PREHEAT_2_LABEL" - LSTR MSG_PREHEAT_1_END = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_1_END_E = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ~"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_1_ALL = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All" - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 热床"); //MSG_PREHEAT_1 " Bed" - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 设置"); //MSG_PREHEAT_1 " conf" - LSTR MSG_PREHEAT_M = _UxGT("预热 $"); // "Preheat PREHEAT_2_LABEL" - LSTR MSG_PREHEAT_M_H = _UxGT("预热 $ ~"); // "Preheat PREHEAT_2_LABEL" - LSTR MSG_PREHEAT_M_END = _UxGT("预热 $ 喷嘴"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_M_END_E = _UxGT("预热 $ 喷嘴 ~"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_M_ALL = _UxGT("预热 $ 全部"); //MSG_PREHEAT_1 " All" - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("预热 $ 热床"); //MSG_PREHEAT_1 " Bed" - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("预热 $ 设置"); //MSG_PREHEAT_1 " conf" - #endif + LSTR MSG_PREHEAT_1 = _UxGT("预热 ") PREHEAT_1_LABEL; // "Preheat PREHEAT_2_LABEL" + LSTR MSG_PREHEAT_1_H = _UxGT("预热 ") PREHEAT_1_LABEL " ~"; // "Preheat PREHEAT_2_LABEL" + LSTR MSG_PREHEAT_1_END = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_1_END_E = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ~"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_1_ALL = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All" + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 热床"); //MSG_PREHEAT_1 " Bed" + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 设置"); //MSG_PREHEAT_1 " conf" + + LSTR MSG_PREHEAT_M = _UxGT("预热 $"); // "Preheat PREHEAT_2_LABEL" + LSTR MSG_PREHEAT_M_H = _UxGT("预热 $ ~"); // "Preheat PREHEAT_2_LABEL" + LSTR MSG_PREHEAT_M_END = _UxGT("预热 $ 喷嘴"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_M_END_E = _UxGT("预热 $ 喷嘴 ~"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_M_ALL = _UxGT("预热 $ 全部"); //MSG_PREHEAT_1 " All" + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("预热 $ 热床"); //MSG_PREHEAT_1 " Bed" + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("预热 $ 设置"); //MSG_PREHEAT_1 " conf" + LSTR MSG_PREHEAT_CUSTOM = _UxGT("预热自定义"); LSTR MSG_COOLDOWN = _UxGT("降温"); // "Cooldown" LSTR MSG_CUTTER_FREQUENCY = _UxGT("切割频率"); @@ -142,10 +142,8 @@ namespace Language_zh_CN { LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("完成编辑网格"); // "Done Editing Mesh" LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("创设客户网格"); // "Build Custom Mesh" LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("创设网格"); // "Build Mesh" - #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("创设 $ 网格"); // "Build PREHEAT_1_LABEL Mesh" - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("批准 $ 网格"); // "Validate PREHEAT_1_LABEL Mesh" - #endif + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("创设 $ 网格"); // "Build PREHEAT_1_LABEL Mesh" + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("批准 $ 网格"); // "Validate PREHEAT_1_LABEL Mesh" LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("创设冷网格"); // "Build Cold Mesh" LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("调整网格高度"); // "Adjust Mesh Height" LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("高度合计"); // "Height Amount" @@ -476,19 +474,11 @@ namespace Language_zh_CN { LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("打印机不正确"); // "The printer is incorrect" - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("打印计数"); // "Print Count" - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成了"); // "Completed" - LSTR MSG_INFO_PRINT_TIME = _UxGT("总打印时间"); // "Total print time" - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最长工作时间"); // "Longest job time" - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("总计挤出"); // "Extruded total" - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("打印数"); // "Prints" - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成"); // "Completed" - LSTR MSG_INFO_PRINT_TIME = _UxGT("总共"); // "Total" - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最长"); // "Longest" - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("已挤出"); // "Extruded" - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("打印数"); // "Prints" + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成"); // "Completed" + LSTR MSG_INFO_PRINT_TIME = _UxGT("总共"); // "Total" + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最长"); // "Longest" + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("已挤出"); // "Extruded" LSTR MSG_INFO_MIN_TEMP = _UxGT("最低温度"); // "Min Temp" LSTR MSG_INFO_MAX_TEMP = _UxGT("最高温度"); // "Max Temp" @@ -560,34 +550,20 @@ namespace Language_zh_CN { LSTR MSG_BAD_PAGE_SPEED = _UxGT("错误页面速度"); // - // Filament Change screens show up to 3 lines on a 4-line display - // ...or up to 2 lines on a 3-line display + // Filament Change screens show up to 2 lines on a 3-line display // - #if LCD_HEIGHT >= 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("按下按钮", "恢复打印")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停靠中...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("等待开始", "丝料", "变更")); // "Wait for start of the filament change" - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("插入料", "并按下", "以继续")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("按下按钮来", "加热喷嘴.")); // "Press button to heat nozzle." - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("加热喷嘴", "请等待 ...")); // "Heating nozzle Please wait..." - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("等待", "卸下丝料")); // "Wait for filament unload" - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("等待", "进料")); // "Wait for filament load" - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("等待", "丝料清除")); // "Wait for filament purge" - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("按下已完成", "料的清洗")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("等待打印", "恢复")); // "Wait for print to resume" - #else - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("按下继续")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停靠中...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("请等待 ...")); // "Please wait..." - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("插入并单击")); // "Insert and Click" - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("按下加热")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("加热中 ...")); // "Heating..." - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("退出中 ...")); // "Ejecting..." - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("装载中 ...")); // "Loading..." - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("清除中 ...")); // "Purging..." - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("按下完成")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢复中 ...")); // "Resuming..." - #endif + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("按下继续")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停靠中...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("请等待 ...")); // "Please wait..." + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("插入并单击")); // "Insert and Click" + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("按下加热")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("加热中 ...")); // "Heating..." + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("退出中 ...")); // "Ejecting..." + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("装载中 ...")); // "Loading..." + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("清除中 ...")); // "Purging..." + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("按下完成")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢复中 ...")); // "Resuming..." + LSTR MSG_TMC_DRIVERS = _UxGT("TMC驱动器"); LSTR MSG_TMC_CURRENT = _UxGT("驱动电流"); LSTR MSG_TMC_HYBRID_THRS = _UxGT("混合阈值"); @@ -610,3 +586,36 @@ namespace Language_zh_CN { LSTR MSG_SHORT_HOUR = _UxGT("时"); // "h" // One character only LSTR MSG_SHORT_MINUTE = _UxGT("分"); // "m" // One character only } + +namespace LanguageWide_zh_CN { + using namespace LanguageNarrow_zh_CN; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("打印计数"); // "Print Count" + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成了"); // "Completed" + LSTR MSG_INFO_PRINT_TIME = _UxGT("总打印时间"); // "Total print time" + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最长工作时间"); // "Longest job time" + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("总计挤出"); // "Extruded total" + #endif +} + +namespace LanguageTall_zh_CN { + using namespace LanguageWide_zh_CN; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("按下按钮", "恢复打印")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停靠中...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("等待开始", "丝料", "变更")); // "Wait for start of the filament change" + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("插入料", "并按下", "以继续")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("按下按钮来", "加热喷嘴.")); // "Press button to heat nozzle." + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("加热喷嘴", "请等待 ...")); // "Heating nozzle Please wait..." + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("等待", "卸下丝料")); // "Wait for filament unload" + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("等待", "进料")); // "Wait for filament load" + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("等待", "丝料清除")); // "Wait for filament purge" + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("按下已完成", "料的清洗")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("等待打印", "恢复")); // "Wait for print to resume" + #endif +} + +namespace Language_zh_CN { + using namespace LanguageTall_zh_CN; +} diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h index 968ad4424e..b22a3cd1ac 100644 --- a/Marlin/src/lcd/language/language_zh_TW.h +++ b/Marlin/src/lcd/language/language_zh_TW.h @@ -27,7 +27,7 @@ * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html */ -namespace Language_zh_TW { +namespace LanguageNarrow_zh_TW { using namespace Language_en; // Inherit undefined strings from English constexpr uint8_t CHARSIZE = 3; @@ -65,23 +65,23 @@ namespace Language_zh_TW { LSTR MSG_Z_FADE_HEIGHT = _UxGT("淡出高度"); // "Fade Height" LSTR MSG_SET_HOME_OFFSETS = _UxGT("設置原點偏移"); // "Set home offsets" LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("偏移已啟用"); // "Offsets applied" - #if HAS_PREHEAT - LSTR MSG_PREHEAT_1 = _UxGT("預熱 ") PREHEAT_1_LABEL; // "Preheat PREHEAT_1_LABEL" - LSTR MSG_PREHEAT_1_H = _UxGT("預熱 ") PREHEAT_1_LABEL " ~"; // "Preheat PREHEAT_1_LABEL" - LSTR MSG_PREHEAT_1_END = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_1_END_E = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ~"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_1_ALL = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All" - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 熱床"); //MSG_PREHEAT_1 " Bed" - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 設置"); //MSG_PREHEAT_1 " conf" - LSTR MSG_PREHEAT_M = _UxGT("預熱 $"); // "Preheat PREHEAT_1_LABEL" - LSTR MSG_PREHEAT_M_H = _UxGT("預熱 $ ~"); // "Preheat PREHEAT_1_LABEL" - LSTR MSG_PREHEAT_M_END = _UxGT("預熱 $ 噴嘴"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_M_END_E = _UxGT("預熱 $ 噴嘴 ~"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_M_ALL = _UxGT("預熱 $ 全部"); //MSG_PREHEAT_1 " All" - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("預熱 $ 熱床"); //MSG_PREHEAT_1 " Bed" - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("預熱 $ 設置"); //MSG_PREHEAT_1 " conf" - #endif + LSTR MSG_PREHEAT_1 = _UxGT("預熱 ") PREHEAT_1_LABEL; // "Preheat PREHEAT_1_LABEL" + LSTR MSG_PREHEAT_1_H = _UxGT("預熱 ") PREHEAT_1_LABEL " ~"; // "Preheat PREHEAT_1_LABEL" + LSTR MSG_PREHEAT_1_END = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_1_END_E = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ~"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_1_ALL = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All" + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 熱床"); //MSG_PREHEAT_1 " Bed" + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 設置"); //MSG_PREHEAT_1 " conf" + + LSTR MSG_PREHEAT_M = _UxGT("預熱 $"); // "Preheat PREHEAT_1_LABEL" + LSTR MSG_PREHEAT_M_H = _UxGT("預熱 $ ~"); // "Preheat PREHEAT_1_LABEL" + LSTR MSG_PREHEAT_M_END = _UxGT("預熱 $ 噴嘴"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_M_END_E = _UxGT("預熱 $ 噴嘴 ~"); //MSG_PREHEAT_1 " " + LSTR MSG_PREHEAT_M_ALL = _UxGT("預熱 $ 全部"); //MSG_PREHEAT_1 " All" + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("預熱 $ 熱床"); //MSG_PREHEAT_1 " Bed" + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("預熱 $ 設置"); //MSG_PREHEAT_1 " conf" + LSTR MSG_PREHEAT_CUSTOM = _UxGT("自定預熱"); // "Preheat Custom" LSTR MSG_COOLDOWN = _UxGT("降溫"); // "Cooldown" LSTR MSG_LASER_MENU = _UxGT("激光控制"); // "Laser Control" @@ -138,10 +138,8 @@ namespace Language_zh_TW { LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("完成編輯網格"); // "Done Editing Mesh" LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("創設客戶網格"); // "Build Custom Mesh" LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("創設網格"); // "Build Mesh" - #if HAS_PREHEAT - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("創設 $ 網格"); // "Build PREHEAT_1_LABEL Mesh" - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("批准 $ 網格"); // "Validate PREHEAT_1_LABEL Mesh" - #endif + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("創設 $ 網格"); // "Build PREHEAT_1_LABEL Mesh" + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("批准 $ 網格"); // "Validate PREHEAT_1_LABEL Mesh" LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("創設冷網格"); // "Build Cold Mesh" LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("調整網格高度"); // "Adjust Mesh Height" LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("高度合計"); // "Height Amount" @@ -424,19 +422,11 @@ namespace Language_zh_TW { LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("燈亮度"); // "Light BRIGHTNESS" LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("打印機不正確"); // "The printer is incorrect" - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("列印計數"); // "Print Count" - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("已完成"); // "Completed" - LSTR MSG_INFO_PRINT_TIME = _UxGT("總列印時間"); // "Total print time" - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最長工作時間"); // "Longest job time" - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("總計擠出"); // "Extruded total" - #else - LSTR MSG_INFO_PRINT_COUNT = _UxGT("列印數"); // "Prints" - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成"); // "Completed" - LSTR MSG_INFO_PRINT_TIME = _UxGT("總共"); // "Total" - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最長"); // "Longest" - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("已擠出"); // "Extruded" - #endif + LSTR MSG_INFO_PRINT_COUNT = _UxGT("列印數"); // "Prints" + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成"); // "Completed" + LSTR MSG_INFO_PRINT_TIME = _UxGT("總共"); // "Total" + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最長"); // "Longest" + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("已擠出"); // "Extruded" LSTR MSG_INFO_MIN_TEMP = _UxGT("最低溫度"); // "Min Temp" LSTR MSG_INFO_MAX_TEMP = _UxGT("最高溫度"); // "Max Temp" @@ -459,10 +449,40 @@ namespace Language_zh_TW { LSTR MSG_LCD_PROBING_FAILED = _UxGT("探針探測失敗"); // "Probing failed" // - // Filament Change screens show up to 3 lines on a 4-line display - // ...or up to 2 lines on a 3-line display + // Filament Change screens show up to 2 lines on a 3-line display // + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("按下繼續..")); // "Click to continue" + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停車中 ...")); // "Parking..." + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("請等待 ...")); // "Please wait..." + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("插入並點擊")); // "Insert and Click" + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("按下加熱..")); // "Click to heat" + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("加熱中 ...")); // "Heating..." + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("退出中 ...")); // "Ejecting..." + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("載入中 ...")); // "Loading..." + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("清除中 ...")); // "Purging..." + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("按下完成..")); // "Click to finish" + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢復中 ...")); // "Resuming..." + + LSTR MSG_SHORT_DAY = _UxGT("天"); // "d" // One character only + LSTR MSG_SHORT_HOUR = _UxGT("時"); // "h" // One character only + LSTR MSG_SHORT_MINUTE = _UxGT("分"); // "m" // One character only +} + +namespace LanguageWide_zh_TW { + using namespace LanguageNarrow_zh_TW; + #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("列印計數"); // "Print Count" + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("已完成"); // "Completed" + LSTR MSG_INFO_PRINT_TIME = _UxGT("總列印時間"); // "Total print time" + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最長工作時間"); // "Longest job time" + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("總計擠出"); // "Extruded total" + #endif +} + +namespace LanguageTall_zh_TW { + using namespace LanguageWide_zh_TW; #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("按下按鈕", "恢復列印")); //"Press Button to resume print" LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停車中 ...")); // "Parking..." LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("等待開始", "絲料", "變更")); // "Wait for start of the filament change" @@ -474,21 +494,9 @@ namespace Language_zh_TW { LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("等待", "絲料清除")); // "Wait for filament purge" LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("按下完成","絲料清除")); //"Press button to filament purge" LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("等待列印", "恢復")); // "Wait for print to resume" - #else // LCD_HEIGHT < 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("按下繼續..")); // "Click to continue" - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停車中 ...")); // "Parking..." - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("請等待 ...")); // "Please wait..." - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("插入並點擊")); // "Insert and Click" - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("按下加熱..")); // "Click to heat" - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("加熱中 ...")); // "Heating..." - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("退出中 ...")); // "Ejecting..." - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("載入中 ...")); // "Loading..." - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("清除中 ...")); // "Purging..." - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("按下完成..")); // "Click to finish" - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢復中 ...")); // "Resuming..." - #endif // LCD_HEIGHT < 4 - - LSTR MSG_SHORT_DAY = _UxGT("天"); // "d" // One character only - LSTR MSG_SHORT_HOUR = _UxGT("時"); // "h" // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("分"); // "m" // One character only + #endif +} + +namespace Language_zh_TW { + using namespace LanguageTall_zh_TW; } diff --git a/Marlin/src/lcd/menu/menu_main.cpp b/Marlin/src/lcd/menu/menu_main.cpp index 5ad5d18c0e..1bf380e360 100644 --- a/Marlin/src/lcd/menu/menu_main.cpp +++ b/Marlin/src/lcd/menu/menu_main.cpp @@ -307,9 +307,11 @@ void menu_main() { #if HAS_SD_DETECT ACTION_ITEM(MSG_NO_MEDIA, nullptr); // "No Media" #else - GCODES_ITEM(MSG_ATTACH_MEDIA, F("M21" TERN_(MULTI_VOLUME, "S"))); // M21 Attach Media #if ENABLED(MULTI_VOLUME) - GCODES_ITEM(MSG_ATTACH_USB_MEDIA, F("M21U")); // M21 Attach USB Media + GCODES_ITEM(MSG_ATTACH_SD_MEDIA, F("M21S")); // M21S Attach SD Card + GCODES_ITEM(MSG_ATTACH_USB_MEDIA, F("M21U")); // M21U Attach USB Media + #else + GCODES_ITEM(MSG_ATTACH_MEDIA, F("M21")); // M21 Attach Media #endif #endif } @@ -422,10 +424,12 @@ void menu_main() { #if HAS_SD_DETECT ACTION_ITEM(MSG_NO_MEDIA, nullptr); // "No Media" #else - GCODES_ITEM(MSG_ATTACH_MEDIA, F("M21" TERN_(MULTI_VOLUME, "S"))); // M21 Attach Media - #if ENABLED(MULTI_VOLUME) - GCODES_ITEM(MSG_ATTACH_USB_MEDIA, F("M21U")); // M21 Attach USB Media - #endif + #if ENABLED(MULTI_VOLUME) + GCODES_ITEM(MSG_ATTACH_SD_MEDIA, F("M21S")); // M21S Attach SD Card + GCODES_ITEM(MSG_ATTACH_USB_MEDIA, F("M21U")); // M21U Attach USB Media + #else + GCODES_ITEM(MSG_ATTACH_MEDIA, F("M21")); // M21 Attach Media + #endif #endif } // END MEDIA MENU diff --git a/buildroot/share/scripts/__init__.py b/buildroot/share/scripts/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/buildroot/share/scripts/exportTranslations.py b/buildroot/share/scripts/languageExport.py similarity index 65% rename from buildroot/share/scripts/exportTranslations.py rename to buildroot/share/scripts/languageExport.py index 620c2e77b1..46485aa124 100755 --- a/buildroot/share/scripts/exportTranslations.py +++ b/buildroot/share/scripts/languageExport.py @@ -1,19 +1,21 @@ #!/usr/bin/env python3 -# -# exportTranslations.py -# -# Export LCD language strings to CSV files for easier translation. -# Use importTranslations.py to import CSV into the language files. -# +''' +languageExport.py + +Export LCD language strings to CSV files for easier translation. +Use importTranslations.py to import CSV into the language files. + +''' import re from pathlib import Path +from languageUtil import namebyid + +LANGHOME = "Marlin/src/lcd/language" # Write multiple sheets if true, otherwise write one giant sheet MULTISHEET = True - -# Where to look for the language files -LANGHOME = "Marlin/src/lcd/language" +OUTDIR = 'out-csv' # Check for the path to the language files if not Path(LANGHOME).is_dir(): @@ -21,39 +23,6 @@ if not Path(LANGHOME).is_dir(): print("Edit LANGHOME or cd to the root of the repo before running.") exit(1) -# A dictionary to contain language names -LANGNAME = { - 'an': "Aragonese", - 'bg': "Bulgarian", - 'ca': "Catalan", - 'cz': "Czech", - 'da': "Danish", - 'de': "German", - 'el': "Greek", 'el_CY': "Greek (Cyprus)", 'el_gr': "Greek (Greece)", - 'en': "English", - 'es': "Spanish", - 'eu': "Basque-Euskera", - 'fi': "Finnish", - 'fr': "French", 'fr_na': "French (no accent)", - 'gl': "Galician", - 'hr': "Croatian (Hrvatski)", - 'hu': "Hungarian / Magyar", - 'it': "Italian", - 'jp_kana': "Japanese (Kana)", - 'ko_KR': "Korean", - 'nl': "Dutch", - 'pl': "Polish", - 'pt': "Portuguese", 'pt_br': "Portuguese (Brazil)", - 'ro': "Romanian", - 'ru': "Russian", - 'sk': "Slovak", - 'sv': "Swedish", - 'tr': "Turkish", - 'uk': "Ukrainian", - 'vi': "Vietnamese", - 'zh_CN': "Simplified Chinese", 'zh_TW': "Traditional Chinese" -} - # A limit just for testing LIMIT = 0 @@ -80,8 +49,7 @@ for langfile in langfiles: if not f: continue # Flags to indicate a wide or tall section - wideflag = False - tallflag = False + wideflag, tallflag = False, False # A counter for the number of strings in the file stringcount = 0 # A dictionary to hold all the strings @@ -94,25 +62,20 @@ for langfile in langfiles: # Check for wide or tall sections, assume no complicated nesting if line.startswith("#endif") or line.startswith("#else"): - wideflag = False - tallflag = False + wideflag, tallflag = False, False elif re.match(r'#if.*WIDTH\s*>=?\s*2[01].*', line): wideflag = True elif re.match(r'#if.*LCD_HEIGHT\s*>=?\s*4.*', line): tallflag = True # For string-defining lines capture the string data match = re.match(r'LSTR\s+([A-Z0-9_]+)\s*=\s*(.+)\s*', line) if match: - # The name is the first captured group - name = match.group(1) - # The value is the second captured group - value = match.group(2) - # Replace escaped quotes temporarily - value = value.replace('\\"', '__Q__') + # Name and quote-sanitized value + name, value = match.group(1), match.group(2).replace('\\"', '$$$') # Remove all _UxGT wrappers from the value in a non-greedy way value = re.sub(r'_UxGT\((".*?")\)', r'\1', value) - # Multi-line strings will get one or more bars | for identification + # Multi-line strings get one or more bars | for identification multiline = 0 multimatch = re.match(r'.*MSG_(\d)_LINE\s*\(\s*(.+?)\s*\).*', value) if multimatch: @@ -122,7 +85,7 @@ for langfile in langfiles: # Wrap inline defines in parentheses value = re.sub(r' *([A-Z0-9]+_[A-Z0-9_]+) *', r'(\1)', value) # Remove quotes around strings - value = re.sub(r'"(.*?)"', r'\1', value).replace('__Q__', '"') + value = re.sub(r'"(.*?)"', r'\1', value).replace('$$$', '""') # Store all unique names as dictionary keys names[name] = 1 # Store the string as narrow or wide @@ -144,6 +107,9 @@ langcodes = list(language_strings.keys()) # Print the array #print(language_strings) +# Report the total number of unique strings +print("Found %s distinct LCD strings." % len(names)) + # Write a single language entry to the CSV file with narrow, wide, and tall strings def write_csv_lang(f, strings, name): f.write(',') @@ -157,32 +123,27 @@ if MULTISHEET: # # Export a separate sheet for each language # - OUTDIR = 'csv-out' Path.mkdir(Path(OUTDIR), exist_ok=True) for lang in langcodes: - f = open("%s/language_%s.csv" % (OUTDIR, lang), 'w', encoding='utf-8') - if not f: continue + with open("%s/language_%s.csv" % (OUTDIR, lang), 'w', encoding='utf-8') as f: + lname = lang + ' ' + namebyid(lang) + header = ['name', lname, lname + ' (wide)', lname + ' (tall)'] + f.write('"' + '","'.join(header) + '"\n') - lname = lang + ' ' + LANGNAME[lang] - header = ['name', lname, lname + ' (wide)', lname + ' (tall)'] - f.write('"' + '","'.join(header) + '"\n') - - for name in names.keys(): - f.write('"' + name + '"') - write_csv_lang(f, language_strings[lang], name) - f.write('\n') - f.close() + for name in names.keys(): + f.write('"' + name + '"') + write_csv_lang(f, language_strings[lang], name) + f.write('\n') else: # # Export one large sheet containing all languages # - f = open("languages.csv", 'w', encoding='utf-8') - if f: + with open("languages.csv", 'w', encoding='utf-8') as f: header = ['name'] for lang in langcodes: - lname = lang + ' ' + LANGNAME[lang] + lname = lang + ' ' + namebyid(lang) header += [lname, lname + ' (wide)', lname + ' (tall)'] f.write('"' + '","'.join(header) + '"\n') @@ -190,4 +151,3 @@ else: f.write('"' + name + '"') for lang in langcodes: write_csv_lang(f, language_strings[lang], name) f.write('\n') - f.close() diff --git a/buildroot/share/scripts/languageImport.py b/buildroot/share/scripts/languageImport.py new file mode 100755 index 0000000000..a535040ad0 --- /dev/null +++ b/buildroot/share/scripts/languageImport.py @@ -0,0 +1,219 @@ +#!/usr/bin/env python3 +""" +languageImport.py + +Import LCD language strings from a CSV file or Google Sheets +and write Marlin LCD language files based on the data. + +Use languageExport.py to export CSV from the language files. + +Google Sheets Link: +https://docs.google.com/spreadsheets/d/12yiy-kS84ajKFm7oQIrC4CF8ZWeu9pAR4zrgxH4ruk4/edit#gid=84528699 + +TODO: Use the defines and comments above the namespace from existing language files. + Get the 'constexpr uint8_t CHARSIZE' from existing language files. + Get the correct 'using namespace' for languages that don't inherit from English. + +""" + +import sys, re, requests, csv, datetime +from languageUtil import namebyid + +LANGHOME = "Marlin/src/lcd/language" +OUTDIR = 'out-language' + +# Get the file path from the command line +FILEPATH = sys.argv[1] if len(sys.argv) > 1 else None + +download = FILEPATH == 'download' + +if not FILEPATH or download: + SHEETID = "12yiy-kS84ajKFm7oQIrC4CF8ZWeu9pAR4zrgxH4ruk4" + FILEPATH = 'https://docs.google.com/spreadsheet/ccc?key=%s&output=csv' % SHEETID + +if FILEPATH.startswith('http'): + response = requests.get(FILEPATH) + assert response.status_code == 200, 'GET failed for %s' % FILEPATH + csvdata = response.content.decode('utf-8') +else: + if not FILEPATH.endswith('.csv'): FILEPATH += '.csv' + with open(FILEPATH, 'r', encoding='utf-8') as f: csvdata = f.read() + +if not csvdata: + print("Error: couldn't read CSV data from %s" % FILEPATH) + exit(1) + +if download: + DLNAME = sys.argv[2] if len(sys.argv) > 2 else 'languages.csv' + if not DLNAME.endswith('.csv'): DLNAME += '.csv' + with open(DLNAME, 'w', encoding='utf-8') as f: f.write(csvdata) + print("Downloaded %s from %s" % (DLNAME, FILEPATH)) + exit(0) + +lines = csvdata.splitlines() +print(lines) +reader = csv.reader(lines, delimiter=',') +gothead = False +columns = [''] +numcols = 0 +strings_per_lang = {} +for row in reader: + if not gothead: + gothead = True + numcols = len(row) + if row[0] != 'name': + print('Error: first column should be "name"') + exit(1) + # The rest of the columns are language codes and names + for i in range(1, numcols): + elms = row[i].split(' ') + lang = elms[0] + style = ('Wide' if elms[-1] == '(wide)' else 'Tall' if elms[-1] == '(tall)' else 'Narrow') + columns.append({ 'lang': lang, 'style': style }) + if not lang in strings_per_lang: strings_per_lang[lang] = {} + if not style in strings_per_lang[lang]: strings_per_lang[lang][style] = {} + continue + # Add the named string for all the included languages + name = row[0] + for i in range(1, numcols): + str = row[i] + if str: + col = columns[i] + strings_per_lang[col['lang']][col['style']][name] = str + +# Create a folder for the imported language outfiles +from pathlib import Path +Path.mkdir(Path(OUTDIR), exist_ok=True) + +FILEHEADER = ''' +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * %s + * + * LCD Menu Messages + * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder + */ + +''' + +# Iterate over the languages which correspond to the columns +# The columns are assumed to be grouped by language in the order Narrow, Wide, Tall +# TODO: Go through lang only, then impose the order Narrow, Wide, Tall. +# So if something is missing or out of order everything still gets built correctly. + +f = None +gotlang = {} +for i in range(1, numcols): + #if i > 6: break # Testing + col = columns[i] + lang, style = col['lang'], col['style'] + + # If we haven't already opened a file for this language, do so now + if not lang in gotlang: + gotlang[lang] = {} + if f: f.close() + fn = "%s/language_%s.h" % (OUTDIR, lang) + f = open(fn, 'w', encoding='utf-8') + if not f: + print("Failed to open %s." % fn) + exit(1) + + # Write the opening header for the new language file + #f.write(FILEHEADER % namebyid(lang)) + f.write('/**\n * Imported from %s on %s at %s\n */\n' % (FILEPATH, datetime.date.today(), datetime.datetime.now().strftime("%H:%M:%S"))) + + # Start a namespace for the language and style + f.write('\nnamespace Language%s_%s {\n' % (style, lang)) + + # Wide and tall namespaces inherit from the others + if style == 'Wide': + f.write(' using namespace LanguageNarrow_%s;\n' % lang) + f.write(' #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2\n') + elif style == 'Tall': + f.write(' using namespace LanguageWide_%s;\n' % lang) + f.write(' #if LCD_HEIGHT >= 4\n') + elif lang != 'en': + f.write(' using namespace Language_en; // Inherit undefined strings from English\n') + + # Formatting for the lines + indent = ' ' if style == 'Narrow' else ' ' + width = 34 if style == 'Narrow' else 32 + lstr_fmt = '%sLSTR %%-%ds = %%s;%%s\n' % (indent, width) + + # Emit all the strings for this language and style + for name in strings_per_lang[lang][style].keys(): + # Get the raw string value + val = strings_per_lang[lang][style][name] + # Count the number of bars + if val.startswith('|'): + bars = val.count('|') + val = val[1:] + else: + bars = 0 + # Escape backslashes, substitute quotes, and wrap in _UxGT("...") + val = '_UxGT("%s")' % val.replace('\\', '\\\\').replace('"', '$$$') + # Move named references outside of the macro + val = re.sub(r'\(([A-Z0-9]+_[A-Z0-9_]+)\)', r'") \1 _UxGT("', val) + # Remove all empty _UxGT("") that result from the above + val = re.sub(r'\s*_UxGT\(""\)\s*', '', val) + # No wrapper needed for just spaces + val = re.sub(r'_UxGT\((" +")\)', r'\1', val) + # Multi-line strings start with a bar... + if bars: + # Wrap the string in MSG_#_LINE(...) and split on bars + val = re.sub(r'^_UxGT\((.+)\)', r'_UxGT(MSG_%s_LINE(\1))' % bars, val) + val = val.replace('|', '", "') + # Restore quotes inside the string + val = val.replace('$$$', '\\"') + # Add a comment with the English string for reference + comm = '' + if lang != 'en' and 'en' in strings_per_lang: + en = strings_per_lang['en'] + if name in en[style]: str = en[style][name] + elif name in en['Narrow']: str = en['Narrow'][name] + if str: + cfmt = '%%%ss// %%s' % (50 - len(val) if len(val) < 50 else 1) + comm = cfmt % (' ', str) + + # Write out the string definition + f.write(lstr_fmt % (name, val, comm)) + + if style == 'Wide' or style == 'Tall': f.write(' #endif\n') + + f.write('}\n') # End namespace + + # Assume the 'Tall' namespace comes last + if style == 'Tall': f.write('\nnamespace Language_%s {\n using namespace LanguageTall_%s;\n}\n' % (lang, lang)) + +# Close the last-opened output file +if f: f.close() diff --git a/buildroot/share/scripts/languageUtil.py b/buildroot/share/scripts/languageUtil.py new file mode 100755 index 0000000000..789561e7b9 --- /dev/null +++ b/buildroot/share/scripts/languageUtil.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 +# +# marlang.py +# + +# A dictionary to contain language names +LANGNAME = { + 'an': "Aragonese", + 'bg': "Bulgarian", + 'ca': "Catalan", + 'cz': "Czech", + 'da': "Danish", + 'de': "German", + 'el': "Greek", 'el_CY': "Greek (Cyprus)", 'el_gr': "Greek (Greece)", + 'en': "English", + 'es': "Spanish", + 'eu': "Basque-Euskera", + 'fi': "Finnish", + 'fr': "French", 'fr_na': "French (no accent)", + 'gl': "Galician", + 'hr': "Croatian (Hrvatski)", + 'hu': "Hungarian / Magyar", + 'it': "Italian", + 'jp_kana': "Japanese (Kana)", + 'ko_KR': "Korean", + 'nl': "Dutch", + 'pl': "Polish", + 'pt': "Portuguese", 'pt_br': "Portuguese (Brazil)", + 'ro': "Romanian", + 'ru': "Russian", + 'sk': "Slovak", + 'sv': "Swedish", + 'tr': "Turkish", + 'uk': "Ukrainian", + 'vi': "Vietnamese", + 'zh_CN': "Simplified Chinese", 'zh_TW': "Traditional Chinese" +} + +def namebyid(id): + if id in LANGNAME: return LANGNAME[id] + return '' From f766a90f5ff300d02eb6ac7917f2355b71f1f237 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 1 Jul 2023 00:53:49 +0000 Subject: [PATCH 597/659] [cron] Bump distribution date (2023-07-01) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 7bcfb4284a..8bba778082 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-06-30" +//#define STRING_DISTRIBUTION_DATE "2023-07-01" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index bea99e823a..5f7753132b 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-06-30" + #define STRING_DISTRIBUTION_DATE "2023-07-01" #endif /** From b77e2a5020714ad17fc12052093231ad4520ce14 Mon Sep 17 00:00:00 2001 From: Christophe Huriaux Date: Sat, 1 Jul 2023 06:06:08 +0200 Subject: [PATCH 598/659] =?UTF-8?q?=E2=9C=A8=20Ender=203=20S1=20Pro/Plus?= =?UTF-8?q?=20stock=20touchscreen=20(#25905)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration.h | 6 +- Marlin/Configuration_adv.h | 16 + Marlin/src/core/endianness.h | 76 ++ Marlin/src/core/macros.h | 35 + Marlin/src/feature/runout.cpp | 47 +- Marlin/src/inc/Conditionals_LCD.h | 2 + Marlin/src/inc/MarlinConfig.h | 1 + Marlin/src/inc/SanityCheck.h | 37 +- .../extui/dgus/fysetc/DGUSScreenHandler.cpp | 10 +- .../lcd/extui/dgus_e3s1pro/DGUSDisplay.cpp | 381 ++++++++++ .../src/lcd/extui/dgus_e3s1pro/DGUSDisplay.h | 163 +++++ .../dgus_e3s1pro/DGUSReturnKeyCodeHandler.cpp | 684 ++++++++++++++++++ .../dgus_e3s1pro/DGUSReturnKeyCodeHandler.h | 42 ++ .../lcd/extui/dgus_e3s1pro/DGUSRxHandler.cpp | 168 +++++ .../lcd/extui/dgus_e3s1pro/DGUSRxHandler.h | 128 ++++ .../extui/dgus_e3s1pro/DGUSSDCardHandler.cpp | 39 + .../extui/dgus_e3s1pro/DGUSSDCardHandler.h | 75 ++ .../DGUSSDCardHandler_Advanced.cpp | 157 ++++ .../dgus_e3s1pro/DGUSSDCardHandler_Basic.cpp | 137 ++++ .../extui/dgus_e3s1pro/DGUSScreenHandler.cpp | 549 ++++++++++++++ .../extui/dgus_e3s1pro/DGUSScreenHandler.h | 166 +++++ .../extui/dgus_e3s1pro/DGUSSetupHandler.cpp | 60 ++ .../lcd/extui/dgus_e3s1pro/DGUSSetupHandler.h | 26 + .../lcd/extui/dgus_e3s1pro/DGUSTxHandler.cpp | 223 ++++++ .../lcd/extui/dgus_e3s1pro/DGUSTxHandler.h | 150 ++++ .../lcd/extui/dgus_e3s1pro/config/DGUS_Addr.h | 251 +++++++ .../dgus_e3s1pro/config/DGUS_Constants.h | 57 ++ .../extui/dgus_e3s1pro/config/DGUS_Control.h | 41 ++ .../lcd/extui/dgus_e3s1pro/config/DGUS_Data.h | 199 +++++ .../extui/dgus_e3s1pro/config/DGUS_Screen.h | 106 +++ .../definition/DGUS_ScreenAddrList.cpp | 505 +++++++++++++ .../definition/DGUS_ScreenAddrList.h | 32 + .../definition/DGUS_ScreenSetup.cpp | 44 ++ .../definition/DGUS_ScreenSetup.h | 31 + .../extui/dgus_e3s1pro/definition/DGUS_VP.h | 43 ++ .../dgus_e3s1pro/definition/DGUS_VPList.cpp | 589 +++++++++++++++ .../dgus_e3s1pro/definition/DGUS_VPList.h | 31 + .../extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp | 165 +++++ .../extui/dgus_reloaded/DGUSScreenHandler.cpp | 36 +- .../extui/dgus_reloaded/config/DGUS_Addr.h | 1 + .../definition/DGUS_ScreenAddrList.cpp | 44 +- ini/features.ini | 1 + 42 files changed, 5478 insertions(+), 76 deletions(-) create mode 100644 Marlin/src/core/endianness.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSDisplay.cpp create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSDisplay.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSReturnKeyCodeHandler.cpp create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSReturnKeyCodeHandler.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSRxHandler.cpp create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSRxHandler.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler.cpp create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler_Advanced.cpp create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler_Basic.cpp create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSScreenHandler.cpp create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSScreenHandler.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSetupHandler.cpp create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSetupHandler.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSTxHandler.cpp create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/DGUSTxHandler.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Addr.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Constants.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Control.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Data.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Screen.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenAddrList.cpp create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenAddrList.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenSetup.cpp create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenSetup.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_VP.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_VPList.cpp create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_VPList.h create mode 100644 Marlin/src/lcd/extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index b573d2d9ec..b21eba76a0 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -3107,13 +3107,17 @@ * - Download https://github.com/InsanityAutomation/Marlin/raw/CrealityDwin_2.0/TM3D_Combined480272_Landscape_V7.7z * - Copy the downloaded DWIN_SET folder to the SD card. * + * E3S1PRO (T5UID1) + * - Download https://github.com/CrealityOfficial/Ender-3S1/archive/3S1_Plus_Screen.zip + * - Copy the downloaded DWIN_SET folder to the SD card. + * * Flash display with DGUS Displays for Marlin: * - Format the SD card to FAT32 with an allocation size of 4kb. * - Download files as specified for your type of display. * - Plug the microSD card into the back of the display. * - Boot the display and wait for the update to complete. * - * :[ 'ORIGIN', 'FYSETC', 'HYPRECY', 'MKS', 'RELOADED', 'IA_CREALITY' ] + * :[ 'ORIGIN', 'FYSETC', 'HYPRECY', 'MKS', 'RELOADED', 'IA_CREALITY', 'E3S1PRO' ] */ //#define DGUS_LCD_UI ORIGIN #if DGUS_UI_IS(MKS) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index be54354d5c..4d0791c341 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2015,6 +2015,22 @@ #define DGUS_UI_WAITING_STATUS 10 #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping #endif + + #elif DGUS_UI_IS(E3S1PRO) + /** + * The stock Ender-3 S1 Pro/Plus display firmware has rather poor SD file handling. + * + * The autoscroll is mainly useful for status messages, filenames, and the "About" page. + * + * NOTE: The Advanced SD Card option is affected by the stock touchscreen firmware, so + * pages 5 and up will display "4/4". This may get fixed in a screen firmware update. + */ + #define DGUS_SOFTWARE_AUTOSCROLL // Enable long text software auto-scroll + #define DGUS_AUTOSCROLL_START_CYCLES 1 // Refresh cycles without scrolling at the beginning of text strings + #define DGUS_AUTOSCROLL_END_CYCLES 1 // ... at the end of text strings + + #define DGUS_ADVANCED_SDCARD // Allow more than 20 files and navigating directories + #define DGUS_USERCONFIRM // Reuse the SD Card page to show various messages #endif #endif // HAS_DGUS_LCD diff --git a/Marlin/src/core/endianness.h b/Marlin/src/core/endianness.h new file mode 100644 index 0000000000..8fa8e40078 --- /dev/null +++ b/Marlin/src/core/endianness.h @@ -0,0 +1,76 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "../core/types.h" +#include "../core/macros.h" + +#ifdef __cplusplus + +namespace Endianness { + static constexpr uint32_t _dword = 0x01020304; + static constexpr uint8_t _lsb = (const uint8_t&)_dword; + + static constexpr bool cpuIsLittleEndian = _lsb == 0x04; + static constexpr bool cpuIsBigEndian = _lsb == 0x01; + static_assert(cpuIsLittleEndian ^ cpuIsBigEndian, "Unknown CPU endianness"); + + // constexpr byte swapping for integral types + template static constexpr typename Private::enable_if::value, T>::type swap(T V, T swappedV=(T)0, size_t byteIndex=0) { + return byteIndex == sizeof(T) + ? swappedV + : swap((T)(V >> 8), (swappedV << 8) | (V & (T)0xFF), byteIndex + 1); + } + + // constexpr byte swapping for types derived from integral types (e.g. enums) + template static constexpr typename Private::enable_if< + Private::is_same::type>::value, T>::type swap(T V) { return (T)swap((uint16_t)V); } + template static constexpr typename Private::enable_if< + Private::is_same::type>::value, T>::type swap(T V) { return (T)swap((uint32_t)V); } + template static constexpr typename Private::enable_if< + Private::is_same::type>::value, T>::type swap(T V) { return (T)swap((uint64_t)V); } + + // Generic byte swapping + // CANNOT be used to initialize constexpr declarations + template static constexpr typename Private::enable_if::value && !Private::is_enum::value, T>::type swap(T V) { + union { + T val; + char byte[sizeof(T)]; + } src{}, dst{}; + + src.val = V; + for (uint8_t i = 0; i < sizeof(T); ++i) dst.byte[i] = src.byte[sizeof(T) - i - 1]; + return dst.val; + } + + // Convert to / from known endianness, depending on the host endianness + template static constexpr T toBE(T V) { return cpuIsLittleEndian ? swap(V) : V; } + template static constexpr T toLE(T V) { return cpuIsLittleEndian ? V : swap(V); } + template static constexpr T fromBE(T V) { return cpuIsLittleEndian ? swap(V) : V; } + template static constexpr T fromLE(T V) { return cpuIsLittleEndian ? V : swap(V); } + + // Reads a big/little endian from a pointer and converts it to the host endianness + template static constexpr T fromBE_P(void* V) { return fromBE(*(T*)V); } + template static constexpr T fromLE_P(void* V) { return fromLE(*(T*)V); } +}; + +#endif // __cplusplus diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h index 565de2436c..e4b9d479c4 100644 --- a/Marlin/src/core/macros.h +++ b/Marlin/src/core/macros.h @@ -408,7 +408,41 @@ template struct first_type_of { typedef T type; }; template struct first_type_of { typedef T type; }; + + // remove const/volatile type qualifiers + template struct remove_const { typedef T type; }; + template struct remove_const { typedef T type; }; + + template struct remove_volatile { typedef T type; }; + template struct remove_volatile { typedef T type; }; + + template struct remove_cv { typedef typename remove_const::type>::type type; }; + + // test if type is integral + template struct _is_integral { enum { value = false }; }; + template<> struct _is_integral { enum { value = true }; }; + template<> struct _is_integral { enum { value = true }; }; + template<> struct _is_integral { enum { value = true }; }; + template<> struct _is_integral { enum { value = true }; }; + template<> struct _is_integral { enum { value = true }; }; + template<> struct _is_integral { enum { value = true }; }; + template<> struct _is_integral { enum { value = true }; }; + template<> struct _is_integral { enum { value = true }; }; + template<> struct _is_integral { enum { value = true }; }; + template<> struct _is_integral { enum { value = true }; }; + template struct is_integral : public _is_integral::type> {}; } + + // enum type check and regression to its underlying integral. + namespace Private { + template struct is_enum { enum { value = __is_enum(T) }; }; + + template::value> struct _underlying_type { using type = __underlying_type(T); }; + template struct _underlying_type { }; + + template struct underlying_type : public _underlying_type { }; + } + // C++11 solution using SFINAE to detect the existence of a member in a class at compile time. // It creates a HasMember structure containing 'value' set to true if the member exists #define HAS_MEMBER_IMPL(Member) \ @@ -712,5 +746,6 @@ #define _UI_MKS 104 #define _UI_RELOADED 105 #define _UI_IA_CREALITY 106 +#define _UI_E3S1PRO 107 #define _DGUS_UI_IS(N) || (CAT(_UI_, DGUS_LCD_UI) == CAT(_UI_, N)) #define DGUS_UI_IS(V...) (0 MAP(_DGUS_UI_IS, V)) diff --git a/Marlin/src/feature/runout.cpp b/Marlin/src/feature/runout.cpp index db325dee7a..b34e87ca5e 100644 --- a/Marlin/src/feature/runout.cpp +++ b/Marlin/src/feature/runout.cpp @@ -101,13 +101,16 @@ void event_filament_runout(const uint8_t extruder) { const bool run_runout_script = !runout.host_handling; + const bool park_or_pause = (false + #ifdef FILAMENT_RUNOUT_SCRIPT + || strstr(FILAMENT_RUNOUT_SCRIPT, "M600") + || strstr(FILAMENT_RUNOUT_SCRIPT, "M125") + || TERN0(ADVANCED_PAUSE_FEATURE, strstr(FILAMENT_RUNOUT_SCRIPT, "M25")) + #endif + ); + #if ENABLED(HOST_ACTION_COMMANDS) - if (run_runout_script - && ( strstr(FILAMENT_RUNOUT_SCRIPT, "M600") - || strstr(FILAMENT_RUNOUT_SCRIPT, "M125") - || TERN0(ADVANCED_PAUSE_FEATURE, strstr(FILAMENT_RUNOUT_SCRIPT, "M25")) - ) - ) { + if (run_runout_script && park_or_pause) { hostui.paused(false); } else { @@ -126,22 +129,24 @@ void event_filament_runout(const uint8_t extruder) { SERIAL_EOL(); #endif // HOST_ACTION_COMMANDS - if (run_runout_script) { - #if MULTI_FILAMENT_SENSOR - MString script; - script.setf(F(FILAMENT_RUNOUT_SCRIPT), AS_CHAR(tool)); - #if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG) - SERIAL_ECHOLNPGM("Runout Command: ", &script); + #ifdef FILAMENT_RUNOUT_SCRIPT + if (run_runout_script) { + #if MULTI_FILAMENT_SENSOR + MString script; + script.setf(F(FILAMENT_RUNOUT_SCRIPT), AS_CHAR(tool)); + #if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG) + SERIAL_ECHOLNPGM("Runout Command: ", &script); + #endif + queue.inject(&script); + #else + #if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG) + SERIAL_ECHOPGM("Runout Command: "); + SERIAL_ECHOLNPGM(FILAMENT_RUNOUT_SCRIPT); + #endif + queue.inject(F(FILAMENT_RUNOUT_SCRIPT)); #endif - queue.inject(&script); - #else - #if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG) - SERIAL_ECHOPGM("Runout Command: "); - SERIAL_ECHOLNPGM(FILAMENT_RUNOUT_SCRIPT); - #endif - queue.inject(F(FILAMENT_RUNOUT_SCRIPT)); - #endif - } + } + #endif } #endif // HAS_FILAMENT_SENSOR diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 0ab42cb22f..bfc5bfd0ff 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -53,6 +53,8 @@ #define DGUS_LCD_UI_RELOADED 1 #elif DGUS_UI_IS(IA_CREALITY) #define DGUS_LCD_UI_IA_CREALITY 1 +#elif DGUS_UI_IS(E3S1PRO) + #define DGUS_LCD_UI_E3S1PRO 1 #endif /** diff --git a/Marlin/src/inc/MarlinConfig.h b/Marlin/src/inc/MarlinConfig.h index d61a6b55e7..8f6519dbaf 100644 --- a/Marlin/src/inc/MarlinConfig.h +++ b/Marlin/src/inc/MarlinConfig.h @@ -57,6 +57,7 @@ #include "../core/utility.h" #include "../core/mstring.h" #include "../core/serial.h" + #include "../core/endianness.h" #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 9fdd0d603e..4a948ceba3 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -545,7 +545,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #error "You can't enable FIL_RUNOUT8_PULLUP and FIL_RUNOUT8_PULLDOWN at the same time." #elif FILAMENT_RUNOUT_DISTANCE_MM < 0 #error "FILAMENT_RUNOUT_DISTANCE_MM must be greater than or equal to zero." - #elif DISABLED(ADVANCED_PAUSE_FEATURE) + #elif DISABLED(ADVANCED_PAUSE_FEATURE) && defined(FILAMENT_RUNOUT_SCRIPT) static_assert(nullptr == strstr(FILAMENT_RUNOUT_SCRIPT, "M600"), "ADVANCED_PAUSE_FEATURE is required to use M600 with FILAMENT_RUNOUT_SENSOR."); #endif #endif @@ -3994,6 +3994,41 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." #endif #endif +/** + * Require certain features for DGUS_LCD_UI E3S1PRO. + */ +#if DGUS_UI_IS(E3S1PRO) + #if BUFSIZE < 4 + #error "DGUS_LCD_UI E3S1PRO requires a BUFSIZE of at least 4." + #elif !(HOTENDS == 1) + #error "DGUS_LCD_UI E3S1PRO requires 1 hotend." + #elif !(EXTRUDERS == 1) + #error "DGUS_LCD_UI E3S1PRO requires at least 1 extruder." + #elif !HAS_HEATED_BED + #error "DGUS_LCD_UI E3S1PRO requires a heated bed." + #elif FAN_COUNT < 1 + #error "DGUS_LCD_UI E3S1PRO requires a fan." + #elif !HAS_BED_PROBE + #error "DGUS_LCD_UI E3S1PRO requires a bed probe." + #elif !HAS_MESH + #error "DGUS_LCD_UI E3S1PRO requires mesh leveling." + #elif !HAS_MEDIA + #error "DGUS_LCD_UI E3S1PRO requires SDSUPPORT." + #elif DISABLED(POWER_LOSS_RECOVERY) + #error "DGUS_LCD_UI E3S1PRO requires POWER_LOSS_RECOVERY." + #elif DISABLED(LCD_BED_TRAMMING) + #error "DGUS_LCD_UI E3S1PRO requires LCD_BED_TRAMMING." + #elif DISABLED(BABYSTEP_ALWAYS_AVAILABLE) + #error "DGUS_LCD_UI E3S1PRO requires BABYSTEP_ALWAYS_AVAILABLE." + #elif DISABLED(BABYSTEP_ZPROBE_OFFSET) + #error "DGUS_LCD_UI E3S1PRO requires BABYSTEP_ZPROBE_OFFSET." + #elif !defined(PREHEAT_1_TEMP_HOTEND) || !defined(PREHEAT_2_TEMP_HOTEND) + #error "DGUS_LCD_UI E3S1PRO requires 2 preheating presets." + #elif ENABLED(AUTO_BED_LEVELING_UBL) && DISABLED(UBL_SAVE_ACTIVE_ON_M500) + #warning "Without UBL_SAVE_ACTIVE_ON_M500, your mesh will not be saved when using the touchscreen." + #endif +#endif + // JTAG support in the HAL #if ENABLED(DISABLE_DEBUG) && !defined(JTAGSWD_DISABLE) #error "DISABLE_DEBUG is not supported for the selected MCU/Board." diff --git a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp index 768092633e..8c26066b28 100644 --- a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp @@ -77,20 +77,18 @@ if (!ExtUI::isPrintingFromMedia()) return; // avoid race condition when user stays in this menu and printer finishes. switch (swap16(*(uint16_t*)val_ptr)) { - case 0: { // Resume - if (ExtUI::isPrintingFromMediaPaused()) { - ExtUI::resumePrint(); - } - } break; + case 0: // Resume + if (ExtUI::isPrintingFromMediaPaused()) ExtUI::resumePrint(); + break; case 1: // Pause - gotoScreen(DGUS_SCREEN_SDPRINTMANIPULATION); if (!ExtUI::isPrintingFromMediaPaused()) { ExtUI::pausePrint(); //ExtUI::mks_pausePrint(); } break; + case 2: // Abort handleUserConfirmationPopUp(VP_SD_AbortPrintConfirmed, nullptr, PSTR("Abort printing"), filelist.filename(), PSTR("?"), true, true, false, true); break; diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSDisplay.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSDisplay.cpp new file mode 100644 index 0000000000..b897466c6a --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSDisplay.cpp @@ -0,0 +1,381 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/* DGUS implementation written by coldtobi in 2019 for Marlin */ + +#include "../../../inc/MarlinConfigPre.h" + +#if ENABLED(DGUS_LCD_UI_E3S1PRO) + +#include "DGUSDisplay.h" + +#include "config/DGUS_Addr.h" +#include "config/DGUS_Constants.h" +#include "definition/DGUS_VPList.h" + +#include "../ui_api.h" + +long map_precise(float x, long in_min, long in_max, long out_min, long out_max) { + return LROUND((x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min); +} + +uint8_t DGUSDisplay::gui_version = 0; +uint8_t DGUSDisplay::os_version = 0; + +uint8_t DGUSDisplay::volume = 255; +uint8_t DGUSDisplay::brightness = 100; + +DGUSDisplay::rx_datagram_state_t DGUSDisplay::rx_datagram_state = DGUS_IDLE; +uint8_t DGUSDisplay::rx_datagram_len = 0; + +bool DGUSDisplay::initialized = false; + +void DGUSDisplay::loop() { + processRx(); +} + +void DGUSDisplay::init() { + LCD_SERIAL.begin(LCD_BAUDRATE); + + readVersions(); +} + +void DGUSDisplay::read(uint16_t addr, uint8_t size) { + writeHeader(addr, DGUS_READVAR, size); + + LCD_SERIAL.write(size); +} + +void DGUSDisplay::write(uint16_t addr, const void* data_ptr, uint8_t size) { + if (!data_ptr) return; + + writeHeader(addr, DGUS_WRITEVAR, size); + + const char* data = static_cast(data_ptr); + + while (size--) LCD_SERIAL.write(*data++); +} + +void DGUSDisplay::writeString(uint16_t addr, const void* data_ptr, uint8_t size, bool left, bool right, bool use_space) { + if (!data_ptr) return; + + writeHeader(addr, DGUS_WRITEVAR, size); + + const char* data = static_cast(data_ptr); + size_t len = strlen(data); + uint8_t left_spaces = 0; + uint8_t right_spaces = 0; + + if (len < size) { + if (!len) { + right_spaces = size; + } + else { + const uint8_t rem = size - len; + if ((left && right) || (!left && !right)) { + left_spaces = rem / 2; + right_spaces = rem - left_spaces; + } + else if (left) + right_spaces = rem; + else + left_spaces = rem; + } + } + else { + len = size; + } + + while (left_spaces--) LCD_SERIAL.write(' '); + while (len--) LCD_SERIAL.write(*data++); + while (right_spaces--) LCD_SERIAL.write(use_space ? ' ' : '\0'); +} + +void DGUSDisplay::writeStringPGM(uint16_t addr, const void* data_ptr, uint8_t size, bool left, bool right, bool use_space) { + if (!data_ptr) return; + + writeHeader(addr, DGUS_WRITEVAR, size); + + const char* data = static_cast(data_ptr); + size_t len = strlen_P(data); + uint8_t left_spaces = 0, right_spaces = 0; + + if (len < size) { + if (!len) { + right_spaces = size; + } + else if ((left && right) || (!left && !right)) { + left_spaces = (size - len) / 2; + right_spaces = size - len - left_spaces; + } + else if (left) { + right_spaces = size - len; + } + else { + left_spaces = size - len; + } + } + else { + len = size; + } + + while (left_spaces--) LCD_SERIAL.write(' '); + while (len--) LCD_SERIAL.write(pgm_read_byte(data++)); + while (right_spaces--) LCD_SERIAL.write(use_space ? ' ' : '\0'); +} + +void DGUSDisplay::readVersions() { + if (gui_version != 0 && os_version != 0) return; + read(DGUS_VERSION, 1); +} + +void DGUSDisplay::switchScreen(DGUS_ScreenID screen) { + const uint8_t command[] = { 0x5A, 0x01, 0x00, (uint8_t)screen }; + write(0x84, command, sizeof(command)); +} + +void DGUSDisplay::playSound(uint8_t start, uint8_t len, uint8_t volume) { + if (volume == 0) volume = DGUSDisplay::volume; + else volume = map_precise(constrain(volume, 0, 100), 0, 100, 0, 0x40); + + if (volume == 0) return; + const uint8_t command[] = { start, len, volume, 0x00 }; + write(0xA0, command, sizeof(command)); +} + +void DGUSDisplay::enableControl(DGUS_ScreenID screen, DGUS_ControlType type, DGUS_Control control) { + const uint8_t command[] = { 0x5A, 0xA5, 0x00, (uint8_t)screen, (uint8_t)control, type, 0x00, 0x01 }; + write(0xB0, command, sizeof(command)); + + flushTx(); + delay(50); +} + +void DGUSDisplay::disableControl(DGUS_ScreenID screen, DGUS_ControlType type, DGUS_Control control) { + const uint8_t command[] = { 0x5A, 0xA5, 0x00, (uint8_t)screen, (uint8_t)control, type, 0x00, 0x00 }; + write(0xB0, command, sizeof(command)); + + flushTx(); + delay(50); +} + +uint8_t DGUSDisplay::getBrightness() { + return brightness; +} + +uint8_t DGUSDisplay::getVolume() { + return map_precise(volume, 0, 0x40, 0, 100); +} + +void DGUSDisplay::setBrightness(uint8_t new_brightness) { + brightness = constrain(new_brightness, 0, 100); + new_brightness = map_precise(brightness, 0, 100, 5, 100); + const uint8_t command[] = { new_brightness, new_brightness }; + write(0x82, command, sizeof(command)); +} + +void DGUSDisplay::setVolume(uint8_t new_volume) { + volume = map_precise(constrain(new_volume, 0, 100), 0, 100, 0, 0x40); + const uint8_t command[] = { volume, 0x00 }; + write(0xA1, command, sizeof(command)); +} + +void DGUSDisplay::processRx() { + + #if ENABLED(LCD_SERIAL_STATS_RX_BUFFER_OVERRUNS) + if (!LCD_SERIAL.available() && LCD_SERIAL.buffer_overruns()) { + // Overrun, but reset the flag only when the buffer is empty + // We want to extract as many as valid datagrams possible... + rx_datagram_state = DGUS_IDLE; + //LCD_SERIAL.reset_rx_overun(); + LCD_SERIAL.flush(); + } + #endif + + uint8_t receivedbyte; + while (LCD_SERIAL.available()) { + switch (rx_datagram_state) { + case DGUS_IDLE: // Waiting for the first header byte + receivedbyte = LCD_SERIAL.read(); + if (DGUS_HEADER1 == receivedbyte) rx_datagram_state = DGUS_HEADER1_SEEN; + break; + + case DGUS_HEADER1_SEEN: // Waiting for the second header byte + receivedbyte = LCD_SERIAL.read(); + rx_datagram_state = (DGUS_HEADER2 == receivedbyte) ? DGUS_HEADER2_SEEN : DGUS_IDLE; + break; + + case DGUS_HEADER2_SEEN: // Waiting for the length byte + rx_datagram_len = LCD_SERIAL.read(); + // Telegram min len is 3 (command and one word of payload) + rx_datagram_state = WITHIN(rx_datagram_len, 3, DGUS_RX_BUFFER_SIZE) ? DGUS_WAIT_TELEGRAM : DGUS_IDLE; + break; + + case DGUS_WAIT_TELEGRAM: // wait for complete datagram to arrive. + if (LCD_SERIAL.available() < rx_datagram_len) return; + + initialized = true; // We've talked to it, so we defined it as initialized. + uint8_t command = LCD_SERIAL.read(); + uint8_t readlen = rx_datagram_len - 1; // command is part of len. + unsigned char tmp[rx_datagram_len - 1]; + unsigned char *ptmp = tmp; + + while (readlen--) { + receivedbyte = LCD_SERIAL.read(); + *ptmp++ = receivedbyte; + } + // mostly we'll get this: 5A A5 03 82 4F 4B -- ACK on 0x82, so discard it. + if (command == DGUS_WRITEVAR && 'O' == tmp[0] && 'K' == tmp[1]) { + rx_datagram_state = DGUS_IDLE; + break; + } + + /** + * AutoUpload, (and answer to) Command 0x83 : + * tmp[0 1 2 3 4 ... ] + * Example 5A A5 06 83 20 01 01 78 01 …… + * / / | | \ / | \ \ + * Header | | | | \_____\_ DATA (Words!) + * DatagramLen / VPAdr | + * Command DataLen (in Words) + */ + if (command == DGUS_READVAR) { + const uint16_t addr = Endianness::fromBE_P(tmp); + const uint8_t dlen = tmp[2] << 1; // Convert to Bytes. (Display works with words) + if (addr == DGUS_VERSION && dlen == 2) { + gui_version = tmp[3]; + os_version = tmp[4]; + + #if ENABLED(DEBUG_DGUSLCD) + DEBUG_ECHOLNPGM("DGUS version: GUI ", gui_version, "OS ", os_version); + #endif + rx_datagram_state = DGUS_IDLE; + break; + } + + DGUS_VP vp; + if (!DGUS_PopulateVP((DGUS_Addr)addr, &vp)) { + rx_datagram_state = DGUS_IDLE; + break; + } + + if (!vp.rx_handler) { + rx_datagram_state = DGUS_IDLE; + break; + } + + gcode.reset_stepper_timeout(); + + if (!vp.size) { + DEBUG_EOL(); + vp.rx_handler(vp, nullptr); + + rx_datagram_state = DGUS_IDLE; + break; + } + + if (vp.flags & VPFLAG_RXSTRING) { + unsigned char buffer[vp.size]; + memset(buffer, 0, vp.size); + + for (uint8_t i = 0; i < dlen; i++) { + if (i >= vp.size) break; + + if (i + 1 < dlen && tmp[i + 3] == 0xFF && tmp[i + 4] == 0xFF) + break; + + buffer[i] = tmp[i + 3]; + } + + DEBUG_EOL(); + vp.rx_handler(vp, buffer); + + rx_datagram_state = DGUS_IDLE; + break; + } + + if (dlen != vp.size) { + rx_datagram_state = DGUS_IDLE; + break; + } + + DEBUG_EOL(); + vp.rx_handler(vp, &tmp[3]); + + rx_datagram_state = DGUS_IDLE; + break; + } + + #if ENABLED(DEBUG_DGUSLCD) + DEBUG_ECHOLNPGM("DGUS unknown command ", command); + #endif + + rx_datagram_state = DGUS_IDLE; + break; + } + } +} + +size_t DGUSDisplay::getFreeTxBuffer() { + return ( + #ifdef LCD_SERIAL_GET_TX_BUFFER_FREE + LCD_SERIAL_GET_TX_BUFFER_FREE() + #else + SIZE_MAX + #endif + ); +} + +void DGUSDisplay::flushTx() { + TERN(ARDUINO_ARCH_STM32, LCD_SERIAL.flush(), LCD_SERIAL.flushTX()); +} + +void DGUSDisplay::writeHeader(uint16_t addr, uint8_t command, uint8_t len) { + LCD_SERIAL.write(DGUS_HEADER1); + LCD_SERIAL.write(DGUS_HEADER2); + LCD_SERIAL.write(len + 3); + LCD_SERIAL.write(command); + + union { + uint16_t u16; + uint8_t u8[2]; + } data = { Endianness::toBE(addr) }; + + for (uint8_t i = 0; i < sizeof(data.u8); ++i) LCD_SERIAL.write(data.u8[i]); +} + +bool DGUS_PopulateVP(const DGUS_Addr addr, DGUS_VP * const buffer) { + const DGUS_VP *ret = vp_list; + + do { + const uint16_t *paddr = (uint16_t *)(&ret->addr); + const uint16_t addrcheck = pgm_read_word(paddr); + if (addrcheck == 0) break; + if ((DGUS_Addr)addrcheck == addr) { + memcpy_P(buffer, ret, sizeof(*ret)); + return true; + } + } while (++ret); + return false; +} + +#endif // DGUS_LCD_UI_E3S1PRO diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSDisplay.h b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSDisplay.h new file mode 100644 index 0000000000..8d8a3cf013 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSDisplay.h @@ -0,0 +1,163 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * DGUS implementation written by coldtobi in 2019. + * Updated for STM32G0B1RE by Protomosh in 2022. + */ + +#include "config/DGUS_Screen.h" +#include "config/DGUS_Control.h" +#include "definition/DGUS_VP.h" + +#include "../ui_api.h" +#include "../../../inc/MarlinConfigPre.h" +#include "../../../MarlinCore.h" + +//#define DEBUG_DGUSLCD // Uncomment for debug messages +#define DEBUG_OUT ENABLED(DEBUG_DGUSLCD) +#include "../../../core/debug_out.h" + +// Low-Level access to the display. +class DGUSDisplay { +public: + + enum DGUS_ControlType : uint8_t { + VARIABLE_DATA_INPUT = 0x00, + POPUP_WINDOW = 0x01, + INCREMENTAL_ADJUST = 0x02, + SLIDER_ADJUST = 0x03, + RTC_SETTINGS = 0x04, + RETURN_KEY_CODE = 0x05, + TEXT_INPUT = 0x06, + FIRMWARE_SETTINGS = 0x07 + }; + + DGUSDisplay() = default; + + static void init(); + + static void read(uint16_t addr, uint8_t size); + static void write(uint16_t addr, const void* data_ptr, uint8_t size); + + static void writeString(uint16_t addr, const void* data_ptr, uint8_t size, bool left=true, bool right=false, bool use_space=true); + static void writeStringPGM(uint16_t addr, const void* data_ptr, uint8_t size, bool left=true, bool right=false, bool use_space=true); + static void writeString(uint16_t addr, FSTR_P const fstr, uint8_t size, bool left=true, bool right=false, bool use_space=true) { + writeStringPGM(addr, FTOP(fstr), size, left, right, use_space); + } + + template + static void write(uint16_t addr, T data) { + write(addr, static_cast(&data), sizeof(T)); + } + + // Until now I did not need to actively read from the display. That's why there is no ReadVariable + // (I extensively use the auto upload of the display) + + // Read GUI and OS version from screen + static void readVersions(); + + // Force display into another screen. + static void switchScreen(DGUS_ScreenID screen); + // Play sounds using the display speaker. + // start: position at which the sound was stored on the display. + // len: how many sounds to play. Sounds will play consecutively from start to start+len-1. + // volume: playback volume. 0 keeps the current volume. + static void playSound(uint8_t start, uint8_t len=1, uint8_t volume=0); + // Enable/disable a specific touch control. + // type: control type. + // control: index of the control on the page (set during screen development). + static void enableControl(DGUS_ScreenID screen, DGUS_ControlType type, DGUS_Control control); + static void disableControl(DGUS_ScreenID screen, DGUS_ControlType type, DGUS_Control control); + + static uint8_t getBrightness(); + static uint8_t getVolume(); + + // Set the display brightness/volume, ranging 0 - 100 + static void setBrightness(uint8_t brightness); + static void setVolume(uint8_t volume); + + // Periodic tasks, eg. Rx-Queue handling. + static void loop(); + + // Helper for users of this class to estimate if an interaction would be blocking. + static size_t getFreeTxBuffer(); + static void flushTx(); + + // Checks two things: Can we confirm the presence of the display and has we initialized it. + // (both boils down that the display answered to our chatting) + static bool isInitialized() { + return initialized; + } + + static uint8_t gui_version; + static uint8_t os_version; + + template + T_out fromFixedPoint(const T_in value) { + return (T_out)((float)value / POW(10, decimals)); + } + + template + T_out toFixedPoint(const T_in value) { + return (T_out)LROUND((float)value * POW(10, decimals)); + } + +private: + enum dgus_header : uint8_t { + DGUS_HEADER1 = 0x5A, + DGUS_HEADER2 = 0xA5 + }; + + enum dgus_command : uint8_t { + DGUS_WRITEVAR = 0x82, + DGUS_READVAR = 0x83 + }; + + enum rx_datagram_state_t : uint8_t { + DGUS_IDLE, //< waiting for DGUS_HEADER1. + DGUS_HEADER1_SEEN, //< DGUS_HEADER1 received + DGUS_HEADER2_SEEN, //< DGUS_HEADER2 received + DGUS_WAIT_TELEGRAM, //< LEN received, Waiting for to receive all bytes. + }; + + enum dgus_system_addr : uint16_t { + DGUS_VERSION = 0x000F // OS/GUI version + }; + + static void writeHeader(uint16_t addr, uint8_t command, uint8_t len); + static void processRx(); + + static uint8_t volume; + static uint8_t brightness; + + static rx_datagram_state_t rx_datagram_state; + static uint8_t rx_datagram_len; + + static bool initialized; +}; + +extern DGUSDisplay dgus; + +/// Helper to populate a DGUS_VP for a given VP. Return false if not found. +extern bool DGUS_PopulateVP(const DGUS_Addr addr, DGUS_VP * const buffer); diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSReturnKeyCodeHandler.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSReturnKeyCodeHandler.cpp new file mode 100644 index 0000000000..f6d2e2bb89 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSReturnKeyCodeHandler.cpp @@ -0,0 +1,684 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../../inc/MarlinConfigPre.h" + +#if ENABLED(DGUS_LCD_UI_E3S1PRO) + +#include "DGUSReturnKeyCodeHandler.h" + +#include "DGUSDisplay.h" +#include "DGUSScreenHandler.h" +#include "config/DGUS_Screen.h" + +#include "../ui_api.h" +#include "../../../core/language.h" +#include "../../../module/temperature.h" +#include "../../../module/printcounter.h" +#include "../../../module/stepper.h" +#include "../../../gcode/queue.h" +#if ENABLED(ADVANCED_PAUSE_FEATURE) + #include "../../../feature/pause.h" +#endif +#if ENABLED(POWER_LOSS_RECOVERY) + #include "../../../feature/powerloss.h" +#endif + +#define DGUS_UNKNOWN_COMMAND_DEBUG // uncomment to debug unknown commands + +static uint16_t plaExtruderTempSave = 0; +static uint16_t plaBedTempSave = 0; +static uint16_t absExtruderTempSave = 0; +static uint16_t absBedTempSave = 0; + +static DGUS_ScreenID GetJogScreenForSavedJogLength() { + DGUS_ScreenID jogscreen = DGUS_ScreenID::MOVEAXIS_10; + switch (screen.config.jogLength) { + case DGUS_Data::AxisControlCommand::Jog_10mm: jogscreen = DGUS_ScreenID::MOVEAXIS_10; break; + case DGUS_Data::AxisControlCommand::Jog_1mm: jogscreen = DGUS_ScreenID::MOVEAXIS_1; break; + case DGUS_Data::AxisControlCommand::Jog_0_1mm: jogscreen = DGUS_ScreenID::MOVEAXIS_01; break; + default: break; + } + + return jogscreen; +} + +// 1002 +void DGUSReturnKeyCodeHandler::Command_MenuSelect(DGUS_VP &vp, void *data) { + DGUS_Data::MenuSelectCommand submenu = Endianness::fromBE_P(data); + + switch (submenu) { + case DGUS_Data::MenuSelectCommand::Main: + screen.triggerScreenChange(DGUS_ScreenID::MAIN); + break; + + case DGUS_Data::MenuSelectCommand::Print: + if (ExtUI::isMediaInserted()) { + dgus_sdcard_handler.Reset(); + screen.triggerScreenChange(DGUS_ScreenID::FILE1); + } + else + screen.triggerTempScreenChange(DGUS_ScreenID::SDCARDCHECK, screen.getCurrentScreen()); + break; + + case DGUS_Data::MenuSelectCommand::Ready: { + DGUS_ScreenID jogscreen = GetJogScreenForSavedJogLength(); + if (ExtUI::isPositionKnown()) + screen.triggerScreenChange(jogscreen); + else + screen.homeThenChangeScreen(jogscreen); + } break; + + case DGUS_Data::MenuSelectCommand::Settings: + screen.triggerScreenChange(DGUS_ScreenID::TEMP); + break; + + case DGUS_Data::MenuSelectCommand::StartAutoLevel: + if (!ExtUI::isPositionKnown()) + screen.homeThenChangeScreen(screen.getCurrentScreen()); + + ExtUI::injectCommands(F("M420 S0\n" TERN(AUTO_BED_LEVELING_UBL, "G29 P1", "G29"))); + break; + + case DGUS_Data::MenuSelectCommand::PrintFinished: + screen.triggerScreenChange(DGUS_ScreenID::HOME); + break; + + case DGUS_Data::MenuSelectCommand::PausePrint: + screen.triggerTempScreenChange(DGUS_ScreenID::PAUSE_STOP, DGUS_ScreenID::PAUSE); + break; + + case DGUS_Data::MenuSelectCommand::PauseStopPrint: + screen.triggerTempScreenChange(DGUS_ScreenID::CONTINUE_STOP, DGUS_ScreenID::RESUME); + break; + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Command_MenuSelect: unknown id ", (uint16_t)submenu); + #endif + break; + } +} + +// 1004 +void DGUSReturnKeyCodeHandler::Command_Adjust(DGUS_VP &vp, void *data) { + DGUS_Data::AdjustCommand command = Endianness::fromBE_P(data); + + switch (command) { + case DGUS_Data::AdjustCommand::Show_Adjust: + screen.triggerScreenChange(DGUS_ScreenID::ADJUST); + break; + + case DGUS_Data::AdjustCommand::Show_PrintStatus: + screen.triggerScreenChange(DGUS_ScreenID::PAUSE); + break; + + case DGUS_Data::AdjustCommand::Show_Adjust_ZOffset: + screen.triggerScreenChange(DGUS_ScreenID::PREPARE); + break; + + case DGUS_Data::AdjustCommand::Validate_ZOffset: + screen.triggerScreenChange(DGUS_ScreenID::ADJUST); + break; + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Command_Adjust: unknown id ", (uint16_t)command); + #endif + break; + } +} + +// 1008 +void DGUSReturnKeyCodeHandler::Command_CheckKO(DGUS_VP &vp, void *data) { + DGUS_Data::CheckKOCommand command = Endianness::fromBE_P(data); + + if (command != DGUS_Data::CheckKOCommand::KO && command != DGUS_Data::CheckKOCommand::SDCard_No) { + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Command_CheckKO: unknown id ", (uint16_t)command); + #endif + return; + } + + switch (screen.getCurrentScreen()) { + case DGUS_ScreenID::CONTINUE_STOP: + case DGUS_ScreenID::STOP_CONFIRM: + case DGUS_ScreenID::PAUSE_STOP: + case DGUS_ScreenID::FILAMENTUSEUP: + case DGUS_ScreenID::FILAMENTLOAD: + ExtUI::stopPrint(); + TERN_(HAS_FILAMENT_SENSOR,ExtUI::setFilamentRunoutState(false)); + screen.triggerScreenChange(DGUS_ScreenID::FINISH); + break; + + case DGUS_ScreenID::SDCARDCHECK: + case DGUS_ScreenID::PAUSE_LASER: + break; + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Command_CheckKO: unknown src screen ", (uint16_t)screen.getCurrentScreen()); + #endif + return; + } + + screen.triggerScreenChange(DGUS_ScreenID::HOME); +} + +// 100A +void DGUSReturnKeyCodeHandler::Command_StopPause(DGUS_VP &vp, void *data) { + DGUS_Data::StopPauseCommand command = Endianness::fromBE_P(data); + + switch (command) { + case DGUS_Data::StopPauseCommand::Pause: + ExtUI::pausePrint(); + screen.triggerScreenChange(DGUS_ScreenID::RESUME); + break; + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Command_StopPause: unknown id ", (uint16_t)command); + #endif + break; + } +} + +// 100C +void DGUSReturnKeyCodeHandler::Command_CheckOK(DGUS_VP &vp, void *data) { + DGUS_Data::CheckOKCommand command = Endianness::fromBE_P(data); + + switch (command) { + case DGUS_Data::CheckOKCommand::ContinueStop_Continue: + #if HAS_FILAMENT_SENSOR + if (ExtUI::getFilamentRunoutEnabled() && READ(FIL_RUNOUT1_PIN) == FIL_RUNOUT1_STATE) { + screen.triggerScreenChange(DGUS_ScreenID::FILAMENTUSEUP); + break; + } + #endif + ExtUI::resumePrint(); + screen.triggerScreenChange(DGUS_ScreenID::PAUSE); + break; + + #if HAS_FILAMENT_SENSOR + case DGUS_Data::CheckOKCommand::FilamentRunout_Yes: + if (ExtUI::getTargetTemp_celsius(ExtUI::E0) < EXTRUDE_MINTEMP) + ExtUI::setTargetTemp_celsius(EXTRUDE_MINTEMP, ExtUI::E0); + + if (ExtUI::getFilamentRunoutEnabled() && READ(FIL_RUNOUT1_PIN) == FIL_RUNOUT1_STATE) + screen.triggerScreenChange(DGUS_ScreenID::FILAMENTUSEUP); + else + screen.triggerScreenChange(DGUS_ScreenID::FILAMENTLOAD); + break; + + case DGUS_Data::CheckOKCommand::FilamentLoad_Yes: + if (ExtUI::getFilamentRunoutEnabled() && READ(FIL_RUNOUT1_PIN) == FIL_RUNOUT1_STATE) { + screen.triggerScreenChange(DGUS_ScreenID::FILAMENTLOAD); + break; + } + + ExtUI::setFilamentRunoutState(false); + ExtUI::resumePrint(); + break; + #endif // HAS_FILAMENT_SENSOR + + case DGUS_Data::CheckOKCommand::SDCardCheck_Yes: + if (ExtUI::isMediaInserted()) { + dgus_sdcard_handler.Reset(); + screen.triggerScreenChange(DGUS_ScreenID::FILE1); + } + break; + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Command_CheckOK: unknown id ", (uint16_t)command); + #endif + break; + } +} + +// 1030 +void DGUSReturnKeyCodeHandler::Command_PresetControl(DGUS_VP &vp, void *data) { + DGUS_Data::PresetControlCommand command = Endianness::fromBE_P(data); + + switch (command) { + case DGUS_Data::PresetControlCommand::Show_Ready_Manual: + screen.triggerScreenChange(DGUS_ScreenID::CONTROL); + break; + + case DGUS_Data::PresetControlCommand::Show_Settings_PLA_Settings: + plaExtruderTempSave = screen.config.plaExtruderTemp; + plaBedTempSave = screen.config.plaBedTemp; + absExtruderTempSave = screen.config.absExtruderTemp; + absBedTempSave = screen.config.absBedTemp; + screen.triggerScreenChange(DGUS_ScreenID::PLA_TEMP); + break; + + case DGUS_Data::PresetControlCommand::Show_Settings_ABS_Settings: + plaExtruderTempSave = screen.config.plaExtruderTemp; + plaBedTempSave = screen.config.plaBedTemp; + absExtruderTempSave = screen.config.absExtruderTemp; + absBedTempSave = screen.config.absBedTemp; + screen.triggerScreenChange(DGUS_ScreenID::ABS_TEMP); + break; + + case DGUS_Data::PresetControlCommand::Apply_PLA_Settings: + ExtUI::setTargetTemp_celsius(screen.config.plaExtruderTemp, ExtUI::E0); + ExtUI::setTargetTemp_celsius(screen.config.plaBedTemp, ExtUI::BED); + break; + + case DGUS_Data::PresetControlCommand::Apply_ABS_Settings: + ExtUI::setTargetTemp_celsius(screen.config.absExtruderTemp, ExtUI::E0); + ExtUI::setTargetTemp_celsius(screen.config.absBedTemp, ExtUI::BED); + break; + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Settings_Submenu: unknown id ", (uint16_t)command); + #endif + break; + } +} + +// 1032 +void DGUSReturnKeyCodeHandler::Control_TemperatureCommand(DGUS_VP &vp, void *data) { + DGUS_Data::TemperatureControlCommand command = Endianness::fromBE_P(data); + + switch (command) { + case DGUS_Data::TemperatureControlCommand::Cooldown: + ExtUI::coolDown(); + break; + + case DGUS_Data::TemperatureControlCommand::Exit_Temperature_Preset_And_Discard_Temperature: + screen.config.plaExtruderTemp = plaExtruderTempSave; + screen.config.plaBedTemp = plaBedTempSave; + screen.config.absExtruderTemp = absExtruderTempSave; + screen.config.absBedTemp = absBedTempSave; + screen.triggerScreenChange(DGUS_ScreenID::TEMP); + break; + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Control_TemperatureCommand: unknown id ", (uint16_t)command); + #endif + break; + } +} + +// 103E +void DGUSReturnKeyCodeHandler::Command_SettingsMenu(DGUS_VP &vp, void *data) { + DGUS_Data::SettingsMenuCommand command = Endianness::fromBE_P(data); + + switch (command) { + case DGUS_Data::SettingsMenuCommand::DisableStepperMotors: { + const bool areSteppersEnabled = stepper.axis_enabled.bits & (_BV(NUM_AXES) - 1); + if (areSteppersEnabled) + stepper.disable_all_steppers(); + else + stepper.enable_all_steppers(); + } break; + + case DGUS_Data::SettingsMenuCommand::Reset_All_Settings: + screen.triggerScreenChange(DGUS_ScreenID::FACTORYRESET_CONFIRM); + break; + + case DGUS_Data::SettingsMenuCommand::FactoryReset_Validate: + ExtUI::injectCommands(F("M502")); + + case DGUS_Data::SettingsMenuCommand::FactoryReset_Cancel: + screen.triggerScreenChange(DGUS_ScreenID::CONTROL_DEVICE); + break; + + case DGUS_Data::SettingsMenuCommand::Show_Settings_Device_and_Save_Temperatures: + screen.triggerEEPROMSave(); + screen.triggerScreenChange(DGUS_ScreenID::TEMP); + break; + + case DGUS_Data::SettingsMenuCommand::Show_Settings_Device_and_Discard_Temperatures: + screen.config.plaExtruderTemp = plaExtruderTempSave; + screen.config.plaBedTemp = plaBedTempSave; + screen.config.absExtruderTemp = absExtruderTempSave; + screen.config.absBedTemp = absBedTempSave; + screen.triggerScreenChange(DGUS_ScreenID::TEMP); + break; + + case DGUS_Data::SettingsMenuCommand::Show_Settings_Device_Language: + screen.triggerScreenChange(DGUS_ScreenID::LANGUAGE); + break; + + case DGUS_Data::SettingsMenuCommand::Show_Settings_About: + screen.triggerScreenChange(DGUS_ScreenID::INFORMATION); + break; + + case DGUS_Data::SettingsMenuCommand::Show_Settings_Advanced: + screen.triggerScreenChange(DGUS_ScreenID::CONTROL_DEVICE); + break; + + case DGUS_Data::SettingsMenuCommand::Show_Ready_Jog: + screen.triggerScreenChange(GetJogScreenForSavedJogLength()); + break; + + case DGUS_Data::SettingsMenuCommand::Exit_Settings_Tramming: + screen.triggerEEPROMSave(); + screen.triggerScreenChange(DGUS_ScreenID::TEMP); + break; + + case DGUS_Data::SettingsMenuCommand::Exit_Settings_Leveling: + screen.triggerEEPROMSave(); + screen.triggerScreenChange(DGUS_ScreenID::TEMP); + break; + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Command_SettingsMenu: unknown id ", (uint16_t)command); + #endif + break; + } +} + +static void _gotoTrammingPoint(unsigned char point) { + constexpr float lfrb[4] = BED_TRAMMING_INSET_LFRB; + float x, y; + + switch (point) { + default: return; + case 1: x = X_CENTER; y = Y_CENTER; break; + case 2: x = X_MIN_POS + lfrb[0]; y = Y_MIN_POS + lfrb[1]; break; + case 3: x = X_MAX_POS - lfrb[2]; y = Y_MIN_POS + lfrb[1]; break; + case 4: x = X_MAX_POS - lfrb[2]; y = Y_MAX_POS - lfrb[3]; break; + case 5: x = X_MIN_POS + lfrb[0]; y = Y_MAX_POS - lfrb[3]; break; + } + + if (ExtUI::getAxisPosition_mm(ExtUI::Z) < (Z_MIN_POS) + (BED_TRAMMING_Z_HOP)) + ExtUI::setAxisPosition_mm((Z_MIN_POS) + (BED_TRAMMING_Z_HOP), ExtUI::Z); + + ExtUI::setAxisPosition_mm(x, ExtUI::X); + ExtUI::setAxisPosition_mm(y, ExtUI::Y); + ExtUI::setAxisPosition_mm((Z_MIN_POS) + (BED_TRAMMING_HEIGHT), ExtUI::Z); +} + +// 1044 +void DGUSReturnKeyCodeHandler::Command_Leveling(DGUS_VP &vp, void *data) { + DGUS_Data::LevelingCommand command = Endianness::fromBE_P(data); + + switch (command) { + case DGUS_Data::LevelingCommand::Show_AuxLeveling: + if (ExtUI::isPositionKnown()) + screen.triggerScreenChange(DGUS_ScreenID::LEVELINGMODE); + _gotoTrammingPoint(1); + break; + + case DGUS_Data::LevelingCommand::Show_Settings_Leveling: + case DGUS_Data::LevelingCommand::Show_AutoLeveling: + screen.homeThenChangeScreen(DGUS_ScreenID::LEVELING); + break; + + case DGUS_Data::LevelingCommand::Goto_Center: + _gotoTrammingPoint(1); + break; + + case DGUS_Data::LevelingCommand::Goto_LF: + _gotoTrammingPoint(2); + break; + + case DGUS_Data::LevelingCommand::Goto_RF: + _gotoTrammingPoint(3); + break; + + case DGUS_Data::LevelingCommand::Goto_RB: + _gotoTrammingPoint(4); + break; + + case DGUS_Data::LevelingCommand::Goto_LB: + _gotoTrammingPoint(5); + break; + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Command_Leveling: unknown id ", (uint16_t)command); + #endif + break; + } +} + +// 1046 +void DGUSReturnKeyCodeHandler::Command_AxisControl(DGUS_VP &vp, void *data) { + DGUS_Data::AxisControlCommand control = Endianness::fromBE_P(data); + + switch (control) { + case DGUS_Data::AxisControlCommand::Jog_10mm: + case DGUS_Data::AxisControlCommand::Jog_1mm: + case DGUS_Data::AxisControlCommand::Jog_0_1mm: + screen.config.jogLength = control; + break; + + case DGUS_Data::AxisControlCommand::Home_XY: + ExtUI::injectCommands(F("G28XY")); + break; + + case DGUS_Data::AxisControlCommand::Home_Z: + ExtUI::injectCommands(F("G28Z")); + break; + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Command_AxisControl: unknown id ", (uint16_t)control); + #endif + break; + } +} + +// 1056 +void DGUSReturnKeyCodeHandler::Command_FilamentIO(DGUS_VP &vp, void *data) { + DGUS_Data::FilamentIoCommand command = Endianness::fromBE_P(data); + + switch (command) { + case DGUS_Data::FilamentIoCommand::FilamentCheck_Yes: + case DGUS_Data::FilamentIoCommand::FilamentCheck_No: + screen.triggerReturnScreen(); + break; + + case DGUS_Data::FilamentIoCommand::Show_Ready_IO: + screen.triggerScreenChange(DGUS_ScreenID::FEEDRETURN); + break; + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Command_FilamentIO: unknown id ", (uint16_t)command); + #endif + break; + } +} + +// 105F +void DGUSReturnKeyCodeHandler::Command_PowerLoss(DGUS_VP &vp, void *data) { + DGUS_Data::PowerLossCommand command = Endianness::fromBE_P(data); + + switch (command) { + case DGUS_Data::PowerLossCommand::PowerLoss_Continue: + if (!recovery.valid()) { + screen.setStatusMessage(GET_TEXT_F(DGUS_MSG_INVALID_RECOVERY_DATA)); + screen.triggerScreenChange(DGUS_ScreenID::HOME); + return; + } + + screen.triggerScreenChange(DGUS_ScreenID::PAUSE); + ExtUI::injectCommands(F("M1000")); + break; + + case DGUS_Data::PowerLossCommand::PowerLoss_No: + screen.triggerScreenChange(DGUS_ScreenID::HOME); + ExtUI::injectCommands(F("M1000 C")); + break; + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Command_PowerLoss: unknown id ", (uint16_t)command); + #endif + break; + } +} + +// 1098 +void DGUSReturnKeyCodeHandler::Command_AdvancedSettings(DGUS_VP &vp, void *data) { + DGUS_Data::AdvancedSettingsCommand command = Endianness::fromBE_P(data); + + switch (command) { + case DGUS_Data::AdvancedSettingsCommand::Show_AdvSettings_Movement: + screen.triggerScreenChange(DGUS_ScreenID::MOTION); + break; + + case DGUS_Data::AdvancedSettingsCommand::Show_AdvSettings_PID: + #if NONE(PIDTEMP, PIDTEMPBED) + screen.angryBeeps(2); + screen.triggerScreenChange(DGUS_ScreenID::CONTROL_DEVICE); + #else + screen.triggerScreenChange(DGUS_ScreenID::PIDCONTROL); + #endif + break; + + case DGUS_Data::AdvancedSettingsCommand::Show_AdvSettings_Movement_MaxFeedrate: + screen.triggerScreenChange(DGUS_ScreenID::MAX_FEEDRATE); + break; + + case DGUS_Data::AdvancedSettingsCommand::Show_AdvSettings_Movement_Acceleration: + screen.triggerScreenChange(DGUS_ScreenID::ACCELERATION); + break; + + case DGUS_Data::AdvancedSettingsCommand::Show_AdvSettings_Movement_Jerk: + screen.triggerScreenChange(DGUS_ScreenID::JERK); + break; + + case DGUS_Data::AdvancedSettingsCommand::Show_AdvSettings_Movement_StepsPerMm: + screen.triggerScreenChange(DGUS_ScreenID::STEPSMM); + break; + + case DGUS_Data::AdvancedSettingsCommand::Exit_AdvSettings_Movement_Submenu: + screen.triggerScreenChange(DGUS_ScreenID::MOTION); + break; + + case DGUS_Data::AdvancedSettingsCommand::Show_AdvSettings: + screen.triggerScreenChange(DGUS_ScreenID::CONTROL_DEVICE); + break; + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Command_AdvancedSettings: unknown id ", (uint16_t)command); + #endif + break; + } +} + +// 2198 +void DGUSReturnKeyCodeHandler::Command_FilelistControl(DGUS_VP &vp, void *data) { + DGUS_Data::FilelistControlCommand control = Endianness::fromBE_P(data); + DGUS_SDCardHandler::page_t newPage; + + switch (control) { + #if HAS_MEDIA + case DGUS_Data::FilelistControlCommand::Start_Print: + if (!screen.getSDCardPrintFilename()[0]) { + screen.angryBeeps(2); + return; + } + + #if HAS_FILAMENT_SENSOR + if (ExtUI::getFilamentRunoutEnabled() && READ(FIL_RUNOUT1_PIN) == FIL_RUNOUT1_STATE) { + screen.triggerTempScreenChange(DGUS_ScreenID::FILAMENTCHECK, DGUS_ScreenID::HOME); + return; + } + #endif + + ExtUI::printFile(screen.getSDCardPrintFilename()); + screen.triggerScreenChange(DGUS_ScreenID::PAUSE); + return; + #endif + + case DGUS_Data::FilelistControlCommand::F1_Up: + //case DGUS_Data::FilelistControlCommand::F2_Up: + case DGUS_Data::FilelistControlCommand::F3_Up: + case DGUS_Data::FilelistControlCommand::F4_Up: + newPage = dgus_sdcard_handler.onPreviousPage(); + break; + + case DGUS_Data::FilelistControlCommand::F1_Down: + case DGUS_Data::FilelistControlCommand::F2_Down: + case DGUS_Data::FilelistControlCommand::F3_Down: + case DGUS_Data::FilelistControlCommand::F4_Down: + newPage = dgus_sdcard_handler.onNextPage(); + break; + + case DGUS_Data::FilelistControlCommand::Begin: + newPage = dgus_sdcard_handler.onFirstPage(); + break; + + case DGUS_Data::FilelistControlCommand::End: + newPage = dgus_sdcard_handler.onLastPage(); + break; + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Command_FilelistControl: unknown id ", (uint16_t)control); + #endif + return; + } + + screen.triggerScreenChange(DGUS_PAGE_TO_SCREEN(newPage)); +} + +// 2201 +void DGUSReturnKeyCodeHandler::Command_LaserControl(DGUS_VP &vp, void *data) { + DGUS_Data::LaserControlCommand control = Endianness::fromBE_P(data); + + switch (control) { + case DGUS_Data::LaserControlCommand::Mode_FDM: + screen.triggerScreenChange(DGUS_ScreenID::SW_FDM_TIPS); + break; + case DGUS_Data::LaserControlCommand::Mode_FDM_Confirm: + screen.triggerScreenChange(DGUS_ScreenID::SW_FDM_TIPS); + break; + + #if HAS_CUTTER + case DGUS_Data::LaserControlCommand::Mode_Cutter: + screen.triggerScreenChange(DGUS_ScreenID::SW_LASER_TIPS); + break; + + case DGUS_Data::LaserControlCommand::Mode_Cutter_Confirm: + screen.triggerScreenChange(DGUS_ScreenID::SW_LASER_TIPS); + break; + #endif + + case DGUS_Data::LaserControlCommand::Mode_Change: + #if HAS_CUTTER + screen.triggerScreenChange(DGUS_ScreenID::LASER_FDM); + #else + screen.angryBeeps(2); + #endif + + default: + #if ALL(DEBUG_DGUSLCD, DGUS_UNKNOWN_COMMAND_DEBUG) + DEBUG_ECHOLNPGM("Command_LaserControl: unknown id ", (uint16_t)control); + #endif + return; + } +} + +#endif // DGUS_LCD_UI_E3S1PRO diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSReturnKeyCodeHandler.h b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSReturnKeyCodeHandler.h new file mode 100644 index 0000000000..03a7224ca6 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSReturnKeyCodeHandler.h @@ -0,0 +1,42 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "definition/DGUS_VP.h" + +namespace DGUSReturnKeyCodeHandler { + void Command_MenuSelect(DGUS_VP &vp, void *data); + void Command_Adjust(DGUS_VP &vp, void *data); + void Command_CheckKO(DGUS_VP &vp, void *data); + void Command_StopPause(DGUS_VP &vp, void *data); + void Command_CheckOK(DGUS_VP &vp, void *data); + void Command_PresetControl(DGUS_VP &vp, void *data); + void Control_TemperatureCommand(DGUS_VP &vp, void *data); + void Command_SettingsMenu(DGUS_VP &vp, void *data); + void Command_Leveling(DGUS_VP &vp, void *data); + void Command_AxisControl(DGUS_VP &vp, void *data); + void Command_FilamentIO(DGUS_VP &vp, void *data); + void Command_PowerLoss(DGUS_VP &vp, void *data); + void Command_AdvancedSettings(DGUS_VP &vp, void *data); + void Command_FilelistControl(DGUS_VP &vp, void *data); + void Command_LaserControl(DGUS_VP &vp, void *data); +} diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSRxHandler.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSRxHandler.cpp new file mode 100644 index 0000000000..118cfd3514 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSRxHandler.cpp @@ -0,0 +1,168 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../../inc/MarlinConfigPre.h" + +#if ENABLED(DGUS_LCD_UI_E3S1PRO) + +#include "DGUSRxHandler.h" + +#include "DGUSScreenHandler.h" +#include "config/DGUS_Screen.h" + +#include "../ui_api.h" +#include "../../../core/language.h" +#include "../../../module/stepper.h" + +void DGUSRxHandler::printSpeedPercentage(DGUS_VP &vp, void *data) { + const_float_t feedratePercentage = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setFeedrate_percent(feedratePercentage); +} + +void DGUSRxHandler::zOffset(DGUS_VP &vp, void *data) { + const_float_t zoffset = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + const_float_t currentzOffset = ExtUI::getZOffset_mm(); + const_float_t zStepsPerMm = ExtUI::getAxisSteps_per_mm(ExtUI::Z); + int16_t zStepsDiff = zStepsPerMm * (zoffset - currentzOffset); + + ExtUI::babystepAxis_steps(zStepsDiff, ExtUI::Z); + ExtUI::setZOffset_mm(zoffset); +} + +void DGUSRxHandler::extruderTargetTemp(DGUS_VP &vp, void *data) { + const_float_t temperature = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setTargetTemp_celsius(temperature, ExtUI::H0); +} + +void DGUSRxHandler::bedTargetTemp(DGUS_VP &vp, void *data) { + const_float_t temperature = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setTargetTemp_celsius(temperature, ExtUI::BED); +} + +void DGUSRxHandler::axis_X(DGUS_VP &vp, void *data) { + const_float_t axisValue = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setAxisPosition_mm(axisValue, ExtUI::X); +} + +void DGUSRxHandler::axis_Y(DGUS_VP &vp, void *data) { + const_float_t axisValue = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setAxisPosition_mm(axisValue, ExtUI::Y); +} + +void DGUSRxHandler::axis_Z(DGUS_VP &vp, void *data) { + const_float_t axisValue = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setAxisPosition_mm(axisValue, ExtUI::Z); +} + +void DGUSRxHandler::extrudeLength(DGUS_VP &vp, void *data) { + const_float_t length = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + const_float_t currentPosition = ExtUI::getAxisPosition_mm(ExtUI::E0); + + #if HAS_FILAMENT_SENSOR + if (ExtUI::getFilamentRunoutEnabled() && ExtUI::getFilamentRunoutState()) { + screen.triggerTempScreenChange(DGUS_ScreenID::FILAMENTCHECK, DGUS_ScreenID::CONTROL_DEVICE); + return; + } + #endif + ExtUI::setAxisPosition_mm(currentPosition+length, ExtUI::E0); +} + +void DGUSRxHandler::retractLength(DGUS_VP &vp, void *data) { + const_float_t length = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + const_float_t currentPosition = ExtUI::getAxisPosition_mm(ExtUI::E0); + + #if HAS_FILAMENT_SENSOR + if (ExtUI::getFilamentRunoutEnabled() && ExtUI::getFilamentRunoutState()) { + screen.triggerTempScreenChange(DGUS_ScreenID::FILAMENTCHECK, DGUS_ScreenID::CONTROL_DEVICE); + return; + } + #endif + ExtUI::setAxisPosition_mm(currentPosition-length, ExtUI::E0); +} + +void DGUSRxHandler::setLanguage(DGUS_VP &vp, void *data) { + DGUS_Data::Language language = (DGUS_Data::Language)Endianness::fromBE_P(data); + screen.config.language = language; + screen.triggerEEPROMSave(); + screen.triggerFullUpdate(); +} + +#if ENABLED(PIDTEMPBED) + + void DGUSRxHandler::bed_PID_P(DGUS_VP &vp, void *data) { + float pidValue = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setBedPID( + pidValue, + ExtUI::getBedPID_Ki(), + ExtUI::getBedPID_Kd() + ); + } + + void DGUSRxHandler::bed_PID_I(DGUS_VP &vp, void *data) { + float pidValue = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setBedPID( + ExtUI::getBedPID_Kp(), + pidValue, + ExtUI::getBedPID_Kd() + ); + } + + void DGUSRxHandler::bed_PID_D(DGUS_VP &vp, void *data) { + float pidValue = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setBedPID( + ExtUI::getBedPID_Kp(), + ExtUI::getBedPID_Ki(), + pidValue + ); + } + +#endif // PIDTEMPBED + +void DGUSRxHandler::fanSpeed(DGUS_VP &vp, void *data) { + const_float_t percentage = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setTargetFan_percent(percentage, ExtUI::FAN0); +} + +void DGUSRxHandler::sdCardFileSection(DGUS_VP &vp, void *data) { + uint8_t sdFileIndex = Endianness::fromBE_P(data) - 1; + + #if ENABLED(DGUS_USERCONFIRM) + if (screen.isOnUserConfirmationScreen()) { + screen.userConfirmation(); + return; + } + #endif + dgus_sdcard_handler.onFileSelect(DGUS_FILE_FROM_INDEX(sdFileIndex % 5)); +} + +void DGUSRxHandler::stringToExtra(DGUS_VP &vp, void *data_ptr) { + if (!vp.size || !vp.extra) return; + memcpy(vp.extra, data_ptr, vp.size); +} + +void DGUSRxHandler::disabled(DGUS_VP &vp, void *data_ptr) { + UNUSED(vp); + UNUSED(data_ptr); + screen.angryBeeps(2); +} + +#endif // DGUS_LCD_UI_E3S1PRO diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSRxHandler.h b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSRxHandler.h new file mode 100644 index 0000000000..562edf9509 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSRxHandler.h @@ -0,0 +1,128 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "DGUSDisplay.h" +#include "definition/DGUS_VP.h" + +namespace DGUSRxHandler { + void printSpeedPercentage(DGUS_VP &vp, void *data); + void zOffset(DGUS_VP &vp, void *data); + void extruderTargetTemp(DGUS_VP &vp, void *data); + void bedTargetTemp(DGUS_VP &vp, void *data); + void axis_X(DGUS_VP &vp, void *data); + void axis_Y(DGUS_VP &vp, void *data); + void axis_Z(DGUS_VP &vp, void *data); + void extrudeLength(DGUS_VP &vp, void *data); + void retractLength(DGUS_VP &vp, void *data); + void setLanguage(DGUS_VP &vp, void *data); + + template + void maxFeedrate(DGUS_VP &vp, void *data) { + feedRate_t maxSpeed = (float)Endianness::fromBE_P(data); + ExtUI::setAxisMaxFeedrate_mm_s(maxSpeed, axis); + } + template + void maxAcceleration(DGUS_VP &vp, void *data) { + float maxAcceleration = (float)Endianness::fromBE_P(data); + ExtUI::setAxisMaxAcceleration_mm_s2(maxAcceleration, axis); + } + template + void maxJerk(DGUS_VP &vp, void *data) { + float maxJerk = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setAxisMaxJerk_mm_s(maxJerk, axis); + } + template + void stepsPerMM(DGUS_VP &vp, void *data) { + float stepsPerMm = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setAxisSteps_per_mm(stepsPerMm, axis); + } + + #if ENABLED(PIDTEMP) + template + void PID_P(DGUS_VP &vp, void *data) { + float pidValue = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setPID( + pidValue, + ExtUI::getPID_Ki(extruder), + ExtUI::getPID_Kd(extruder), + extruder + ); + } + template + void PID_I(DGUS_VP &vp, void *data) { + float pidValue = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setPID( + ExtUI::getPID_Kp(extruder), + pidValue, + ExtUI::getPID_Kd(extruder), + extruder + ); + } + template + void PID_D(DGUS_VP &vp, void *data) { + float pidValue = dgus.fromFixedPoint(Endianness::fromBE_P(data)); + ExtUI::setPID( + ExtUI::getPID_Kp(extruder), + ExtUI::getPID_Ki(extruder), + pidValue, + extruder + ); + } + #endif // PIDTEMP + + #if ENABLED(PIDTEMPBED) + void bed_PID_P(DGUS_VP &vp, void *data); + void bed_PID_I(DGUS_VP &vp, void *data); + void bed_PID_D(DGUS_VP &vp, void *data); + #endif + + void fanSpeed(DGUS_VP &vp, void *data); + void sdCardFileSection(DGUS_VP &vp, void *data); + + void stringToExtra(DGUS_VP &vp, void *data); + void disabled(DGUS_VP &vp, void *data); + + template + void integerToExtra(DGUS_VP &vp, void *data_ptr) { + if (!vp.size || !vp.extra) return; + switch (vp.size) { + default: return; + case 1: { + const uint8_t data = *(uint8_t*)data_ptr; + *(T*)vp.extra = (T)data; + break; + } + case 2: { + const uint16_t data = Endianness::fromBE_P(data_ptr); + *(T*)vp.extra = (T)data; + break; + } + case 4: { + const uint32_t data = Endianness::fromBE_P(data_ptr); + *(T*)vp.extra = (T)data; + break; + } + } + } + +} diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler.cpp new file mode 100644 index 0000000000..17a05ae655 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler.cpp @@ -0,0 +1,39 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../../inc/MarlinConfigPre.h" + +#if ENABLED(DGUS_LCD_UI_E3S1PRO) + +#include "../../../sd/cardreader.h" +#include "DGUSSDCardHandler.h" + +char DGUS_SDCardHandler::filenames[5][LONG_FILENAME_LENGTH] = {0}; + +void DGUS_SDCardHandler::setFilename(file_t file, const char* filename, bool isDir) { + const uint8_t fileIndex = DGUS_FILE_TO_INDEX(file); + filenames[fileIndex][0] = '\0'; + if (filename) strcat(filenames[fileIndex], filename); + if (isDir) strcat(filenames[fileIndex], "/"); +} + +#endif // DGUS_LCD_UI_E3S1PRO diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler.h b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler.h new file mode 100644 index 0000000000..8844184271 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler.h @@ -0,0 +1,75 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include +#include "../../../sd/cardreader.h" + +#define DGUS_E3S1PRO_BASIC_SDCARD_MAX_FILES 20 +#define DGUS_E3S1PRO_BASIC_SDCARD_FILES_PER_PAGE 5 + +#define DGUS_PAGE_TO_SCREEN(page) (DGUS_ScreenID)((uint8_t)DGUS_ScreenID::FILE1 + ((uint8_t)page - (uint8_t)DGUS_SDCardHandler::page_t::PAGE_1)) +#define DGUS_SCREEN_TO_PAGE(screen) (DGUS_SDCardHandler::page_t)((uint8_t)DGUS_SDCardHandler::page_t::PAGE_1 + ((uint8_t)screen - (uint8_t)DGUS_ScreenID::FILE1)) + +#define DGUS_PAGE_TO_INDEX(page) (uint8_t)((uint8_t)page - (uint8_t)DGUS_SDCardHandler::page_t::PAGE_1) +#define DGUS_FILE_TO_INDEX(file) (uint8_t)((uint8_t)file - (uint8_t)DGUS_SDCardHandler::file_t::FILE_1) + +#define DGUS_PAGE_FROM_INDEX(index) (DGUS_SDCardHandler::page_t)(index + (uint8_t)DGUS_SDCardHandler::page_t::PAGE_1) +#define DGUS_FILE_FROM_INDEX(index) (DGUS_SDCardHandler::file_t)(index + (uint8_t)DGUS_SDCardHandler::file_t::FILE_1) + +class DGUS_SDCardHandler { + public: + enum class page_t : uint8_t { + PAGE_1 = 1, + PAGE_2, + PAGE_3, + PAGE_4 + }; + + enum class file_t : uint8_t { + FILE_1 = 1, + FILE_2, + FILE_3, + FILE_4, + FILE_5, + FILE_Max = FILE_5, + FILE_Count + }; + + static char filenames[5][LONG_FILENAME_LENGTH]; + +public: + static void Reset(); + + static void onPageLoad(page_t page); + static bool onFileSelect(file_t file); + + static page_t onFirstPage(); + static page_t onLastPage(); + static page_t onPreviousPage(); + static page_t onNextPage(); + +private: + static void setFilename(file_t file, const char* filename, bool isDir = false) PROGMEM; +}; + +extern DGUS_SDCardHandler dgus_sdcard_handler; diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler_Advanced.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler_Advanced.cpp new file mode 100644 index 0000000000..e53f9b84e7 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler_Advanced.cpp @@ -0,0 +1,157 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../../inc/MarlinConfigPre.h" + +#if ALL(DGUS_LCD_UI_E3S1PRO, DGUS_ADVANCED_SDCARD) + +#include "DGUSSDCardHandler.h" +#include "DGUSScreenHandler.h" +#include "DGUSDisplay.h" + +static DGUS_SDCardHandler::page_t currentPage = DGUS_SDCardHandler::page_t::PAGE_1; +static uint8_t currentVirtualPage = 0; +static size_t fileCount = 0; +static ExtUI::FileList fileList = ExtUI::FileList(); + +void DGUS_SDCardHandler::Reset() { + currentPage = DGUS_SDCardHandler::page_t::PAGE_1; + currentVirtualPage = 0; + + while (!fileList.isAtRootDir()) + fileList.upDir(); + + fileList.refresh(); + fileCount = fileList.count(); +} + +void DGUS_SDCardHandler::onPageLoad(DGUS_SDCardHandler::page_t page) { + setFilename(file_t::FILE_1, NULL); + setFilename(file_t::FILE_2, NULL); + setFilename(file_t::FILE_3, NULL); + setFilename(file_t::FILE_4, NULL); + setFilename(file_t::FILE_5, NULL); + + uint8_t pageIndex = currentVirtualPage; + uint16_t currentSeekPos = 0; + + currentSeekPos += pageIndex * DGUS_E3S1PRO_BASIC_SDCARD_FILES_PER_PAGE; + + file_t currentFile = file_t::FILE_1; + if (!fileList.isAtRootDir()) { + if (currentPage == page_t::PAGE_1) { + setFilename(currentFile, "-- dir up --"); + currentFile = DGUS_FILE_FROM_INDEX(DGUS_FILE_TO_INDEX(currentFile) + 1); + } + else + currentSeekPos -= 1; // account for the updir entry on page 1 + } + + while (currentFile <= file_t::FILE_5 + && fileList.seek(currentSeekPos, true) + && currentSeekPos < fileCount) { + ++currentSeekPos; + setFilename(currentFile, fileList.filename(), fileList.isDir()); + currentFile = DGUS_FILE_FROM_INDEX(DGUS_FILE_TO_INDEX(currentFile) + 1); + } +} + +bool DGUS_SDCardHandler::onFileSelect(DGUS_SDCardHandler::file_t file) { + uint8_t fileIndex = DGUS_FILE_TO_INDEX(file); + if (!filenames[fileIndex][0]) + return false; + + bool changeDir = false; + if (!fileList.isAtRootDir() + && currentPage == page_t::PAGE_1 + && file == file_t::FILE_1) { + fileList.upDir(); + changeDir = true; + } + else if (filenames[fileIndex][strlen(filenames[fileIndex])-1] == '/') { + filenames[fileIndex][strlen(filenames[fileIndex])-1] = '\0'; + fileList.changeDir(filenames[fileIndex]); + changeDir = true; + } + + if (changeDir) { + fileList.refresh(); + currentPage = DGUS_SDCardHandler::page_t::PAGE_1; + currentVirtualPage = 0; + fileCount = fileList.count(); + + if (currentPage == page_t::PAGE_1) + onPageLoad(page_t::PAGE_1); + else + screen.triggerScreenChange(DGUS_ScreenID::FILE1); + return true; + } + + screen.startPrintFromSD(filenames[fileIndex]); + return true; +} + +DGUS_SDCardHandler::page_t DGUS_SDCardHandler::onFirstPage() { + currentPage = DGUS_SDCardHandler::page_t::PAGE_1; + currentVirtualPage = 0; + return currentPage; +} + +DGUS_SDCardHandler::page_t DGUS_SDCardHandler::onLastPage() { + currentVirtualPage = (fileCount - 1 + (fileList.isAtRootDir() ? 0 : 1)) / DGUS_E3S1PRO_BASIC_SDCARD_FILES_PER_PAGE; + + if (currentVirtualPage >= 4) { + currentPage = page_t::PAGE_4; + onPageLoad(page_t::PAGE_4); + } + else + currentPage = DGUS_PAGE_FROM_INDEX(currentVirtualPage); + + return currentPage; +} + +DGUS_SDCardHandler::page_t DGUS_SDCardHandler::onPreviousPage() { + if (currentVirtualPage > 0) { + currentVirtualPage -= 1; + + if (currentVirtualPage >= 4) + currentPage = page_t::PAGE_4; + else + currentPage = DGUS_PAGE_FROM_INDEX(currentVirtualPage); + } + return currentPage; +} + +DGUS_SDCardHandler::page_t DGUS_SDCardHandler::onNextPage() { + if (currentVirtualPage < (fileCount - 1 + (fileList.isAtRootDir() ? 0 : 1)) / DGUS_E3S1PRO_BASIC_SDCARD_FILES_PER_PAGE) { + if (++currentVirtualPage >= 4) { + currentPage = page_t::PAGE_4; + onPageLoad(page_t::PAGE_4); + } + else + currentPage = DGUS_PAGE_FROM_INDEX(currentVirtualPage); + } + + return currentPage; +} + +#endif // DGUS_LCD_UI_E3S1PRO && DGUS_ADVANCED_SDCARD diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler_Basic.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler_Basic.cpp new file mode 100644 index 0000000000..85c7b660a7 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSDCardHandler_Basic.cpp @@ -0,0 +1,137 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../../inc/MarlinConfigPre.h" + +#define DGUS_E3S1PRO_BASIC_SDCARD_MAX_FILES 20 +#define DGUS_E3S1PRO_BASIC_SDCARD_FILES_PER_PAGE 5 + +#if ENABLED(DGUS_LCD_UI_E3S1PRO) && DISABLED(DGUS_ADVANCED_SDCARD) + +#include "DGUSSDCardHandler.h" +#include "DGUSScreenHandler.h" +#include "DGUSDisplay.h" + +static DGUS_SDCardHandler::page_t currentPage = DGUS_SDCardHandler::page_t::PAGE_1; +static size_t fileCount = 0; +static ExtUI::FileList fileList = ExtUI::FileList(); + +void DGUS_SDCardHandler::Reset() { + currentPage = DGUS_SDCardHandler::page_t::PAGE_1; + + while (!fileList.isAtRootDir()) + fileList.upDir(); + + fileCount = 0; + uint16_t currentSeekPos = 0; + uint16_t entriesCount = fileList.count(); + while (currentSeekPos < entriesCount + && fileCount < DGUS_E3S1PRO_BASIC_SDCARD_MAX_FILES + && fileList.seek(currentSeekPos, true) + ) { + if (!fileList.isDir()) fileCount++; + currentSeekPos++; + } + + #ifdef DEBUG_DGUSLCD + DEBUG_ECHOPGM("Reset() :", fileCount); + DEBUG_CHAR('/'); + DEBUG_ECHOLN(currentSeekPos); + #endif +} + +void DGUS_SDCardHandler::onPageLoad(DGUS_SDCardHandler::page_t page) { + setFilename(file_t::FILE_1, NULL); + setFilename(file_t::FILE_2, NULL); + setFilename(file_t::FILE_3, NULL); + setFilename(file_t::FILE_4, NULL); + setFilename(file_t::FILE_5, NULL); + + uint8_t pageIndex = DGUS_PAGE_TO_INDEX(page); + uint16_t currentFilePos = 0; + uint16_t currentSeekPos = 0; + uint16_t entriesCount = fileList.count(); + + #ifdef DEBUG_DGUSLCD + DEBUG_ECHOLNPGM("onPageLoad(): seek page ", pageIndex); + #endif + while (currentFilePos < pageIndex * DGUS_E3S1PRO_BASIC_SDCARD_FILES_PER_PAGE + && fileList.seek(currentSeekPos, true) + && currentSeekPos < entriesCount + ) { + ++currentSeekPos; + if (!fileList.isDir()) + currentFilePos++; + } + + #ifdef DEBUG_DGUSLCD + DEBUG_ECHOPGM("onPageLoad() :", currentFilePos); + DEBUG_CHAR('/'); + DEBUG_ECHOLN(currentSeekPos - 1); + #endif + + file_t currentFile = file_t::FILE_1; + while (currentFilePos < (pageIndex + 1) * DGUS_E3S1PRO_BASIC_SDCARD_FILES_PER_PAGE + && fileList.seek(currentSeekPos, true) + && currentSeekPos < entriesCount + ) { + ++currentSeekPos; + if (!fileList.isDir()) { + ++currentFilePos; + setFilename(currentFile, fileList.longFilename()); + currentFile = DGUS_FILE_FROM_INDEX(DGUS_FILE_TO_INDEX(currentFile) + 1); + } + } +} + +bool DGUS_SDCardHandler::onFileSelect(DGUS_SDCardHandler::file_t file) { + uint8_t fileIndex = DGUS_FILE_TO_INDEX(file); + if (!filenames[fileIndex][0]) + return false; + + screen.startPrintFromSD(filenames[fileIndex]); + return true; +} + +DGUS_SDCardHandler::page_t DGUS_SDCardHandler::onFirstPage() { + currentPage = DGUS_SDCardHandler::page_t::PAGE_1; + return currentPage; +} + +DGUS_SDCardHandler::page_t DGUS_SDCardHandler::onLastPage() { + currentPage = DGUS_PAGE_FROM_INDEX(fileCount / DGUS_E3S1PRO_BASIC_SDCARD_FILES_PER_PAGE); + return currentPage; +} + +DGUS_SDCardHandler::page_t DGUS_SDCardHandler::onPreviousPage() { + if (currentPage > page_t::PAGE_1) + currentPage = DGUS_PAGE_FROM_INDEX(DGUS_PAGE_TO_INDEX(currentPage) - 1); + return currentPage; +} + +DGUS_SDCardHandler::page_t DGUS_SDCardHandler::onNextPage() { + if (DGUS_PAGE_TO_INDEX(currentPage) < (fileCount / DGUS_E3S1PRO_BASIC_SDCARD_FILES_PER_PAGE) - 1) + currentPage = DGUS_PAGE_FROM_INDEX(DGUS_PAGE_TO_INDEX(currentPage) + 1); + return currentPage; +} + +#endif // DGUS_LCD_UI_E3S1PRO && !DGUS_ADVANCED_SDCARD diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSScreenHandler.cpp new file mode 100644 index 0000000000..37c52d86cd --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSScreenHandler.cpp @@ -0,0 +1,549 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../../inc/MarlinConfigPre.h" + +#if ENABLED(DGUS_LCD_UI_E3S1PRO) + +#include "DGUSDisplay.h" +#include "DGUSScreenHandler.h" +#include "DGUSSDCardHandler.h" + +#include "definition/DGUS_ScreenAddrList.h" +#include "definition/DGUS_ScreenSetup.h" + +#include "../../../gcode/queue.h" + +#define DGUS_SCREEN_PAGE_DEBUG // uncomment to debug page changes + +DGUSScreenHandler::eeprom_data_t DGUSScreenHandler::config = {}; +uint16_t DGUSScreenHandler::currentMeshPointIndex = 0; +bool DGUSScreenHandler::isLeveling = false; +char DGUSScreenHandler::homeStatusMessage[128]; + +bool DGUSScreenHandler::settings_ready = false; +bool DGUSScreenHandler::booted = false; + +DGUS_ScreenID DGUSScreenHandler::current_screen = DGUS_ScreenID::BOOT; +DGUS_ScreenID DGUSScreenHandler::new_screen = DGUS_ScreenID::BOOT; +DGUS_ScreenID DGUSScreenHandler::wait_return_screen = DGUS_ScreenID::BOOT; +DGUS_ScreenID DGUSScreenHandler::confirm_return_screen = DGUS_ScreenID::BOOT; +bool DGUSScreenHandler::full_update = false; +uint8_t DGUSScreenHandler::angry_beeps = 0; + +#if HAS_MEDIA + static const char* const noFileSelected = ""; + const char* DGUSScreenHandler::sdPrintFilename = noFileSelected; +#endif + +#if ENABLED(POWER_LOSS_RECOVERY) + bool DGUSScreenHandler::powerLossRecoveryAvailable = false; +#endif + +#if ENABLED(DGUS_SOFTWARE_AUTOSCROLL) + ssize_t DGUSScreenHandler::currentScrollIndex = 0; + size_t DGUSScreenHandler::pageMaxStringLen = 0; + size_t DGUSScreenHandler::pageMaxControlLen = 0; +#endif + +millis_t DGUSScreenHandler::status_expire = 0; +millis_t DGUSScreenHandler::eeprom_save = 0; + +void DGUSScreenHandler::init() { + dgus.init(); + moveToScreen(DGUS_ScreenID::BOOT, true); +} + +void DGUSScreenHandler::ready() { + dgus.playSound(1); +} + +void DGUSScreenHandler::loop() { + const millis_t ms = ExtUI::safe_millis(); + static millis_t next_event_ms = 0, next_beep_ms = 0; + static bool wasLeveling = isLeveling; + + if (new_screen != DGUS_ScreenID::BOOT) { + const DGUS_ScreenID screen = new_screen; + new_screen = DGUS_ScreenID::BOOT; + + #if ENABLED(DGUS_SOFTWARE_AUTOSCROLL) + currentScrollIndex = -DGUS_AUTOSCROLL_START_CYCLES; + pageMaxStringLen = 0; + pageMaxControlLen = 0; + #endif + + if (current_screen == screen) + triggerFullUpdate(); + else + moveToScreen(screen); + return; + } + + if (!booted && current_screen == DGUS_ScreenID::HOME) { + // Boot complete + booted = true; + dgus.readVersions(); + return; + } + + #if ENABLED(POWER_LOSS_RECOVERY) + if (booted && powerLossRecoveryAvailable) + { + triggerScreenChange(DGUS_ScreenID::POWERCONTINUE); + powerLossRecoveryAvailable = false; + } + #endif + + if (ELAPSED(ms, next_event_ms) || full_update) { + next_event_ms = ms + (booted ? DGUS_UPDATE_INTERVAL_MS : 50); + + #if ENABLED(DGUS_SOFTWARE_AUTOSCROLL) + currentScrollIndex += 1; + if (currentScrollIndex > (ssize_t)(pageMaxStringLen - pageMaxControlLen) + DGUS_AUTOSCROLL_END_CYCLES) + currentScrollIndex = -DGUS_AUTOSCROLL_START_CYCLES; + #endif + + if (angry_beeps) { + --angry_beeps; + dgus.playSound(3); + } + + if (!sendScreenVPData(current_screen, full_update)) + DEBUG_ECHOLNPGM("SendScreenVPData failed"); + + return; + } + + if (ELAPSED(ms, next_beep_ms)) { + next_beep_ms = ms + 300; + + if (angry_beeps) { + --angry_beeps; + dgus.playSound(0, 500/8, 100); + } + } + + if (wasLeveling && !isLeveling) { + #if ENABLED(AUTO_BED_LEVELING_UBL) + ExtUI::injectCommands(ExtUI::getLevelingIsValid() ? F("G29 S0") : F("G29 S1\nG29 P3\nG29 S0")); + #endif + + config.levelingEnabled = ExtUI::getLevelingIsValid(); + ExtUI::setLevelingActive(config.levelingEnabled); + triggerEEPROMSave(); + } + wasLeveling = isLeveling; + + if (!settings_ready && booted) return; + + if (status_expire > 0 && ELAPSED(ms, status_expire)) { + setStatusMessage(FPSTR(NUL_STR), 0); + return; + } + + if (eeprom_save > 0 && ELAPSED(ms, eeprom_save) && isPrinterIdle()) { + eeprom_save = 0; + ExtUI::injectCommands(F("M500")); + return; + } + + dgus.loop(); +} + +void DGUSScreenHandler::printerKilled(FSTR_P const error, FSTR_P const component) { + dgus.playSound(0, (uint8_t)(3000/8), 100); + setStatusMessage(error); + moveToScreen(DGUS_ScreenID::ABNORMAL); +} + +void DGUSScreenHandler::userConfirmRequired(const char * const msg) { + #if ENABLED(DGUS_USERCONFIRM) + if (confirm_return_screen == DGUS_ScreenID::BOOT) + confirm_return_screen = getCurrentScreen(); + + strcpy(dgus_sdcard_handler.filenames[0], msg); + dgus_sdcard_handler.filenames[1][0] = '\0'; + dgus_sdcard_handler.filenames[2][0] = '\0'; + dgus_sdcard_handler.filenames[3][0] = '\0'; + + strcpy(dgus_sdcard_handler.filenames[4], "["); + strcat(dgus_sdcard_handler.filenames[4], GET_TEXT(MSG_BUTTON_CONFIRM)); + strcat(dgus_sdcard_handler.filenames[4], "]"); + + new_screen = DGUS_ScreenID::FILE1; + #if ALL(DEBUG_OUT, DGUS_SCREEN_PAGE_DEBUG) + DEBUG_ECHOLNPGM("trig confirm: ", msg, ", ret: ", (uint16_t)confirm_return_screen); + #endif + #else + UNUSED(msg); + #endif +} + +void DGUSScreenHandler::userConfirmation() { + #if ENABLED(DGUS_USERCONFIRM) + if (confirm_return_screen == DGUS_ScreenID::BOOT) { + DEBUG_ECHOLNPGM("DGUS: User confirmation triggered but no return screen"); + return; + } + + if (confirm_return_screen >= DGUS_ScreenID::FILE1 && confirm_return_screen <= DGUS_ScreenID::FILE4) + dgus_sdcard_handler.onPageLoad(DGUS_SCREEN_TO_PAGE(confirm_return_screen)); + + #ifdef DEBUG_DGUSLCD + DEBUG_ECHOLNPGM("trig confirmed, ret:", (uint16_t)confirm_return_screen); + #endif + + new_screen = confirm_return_screen; + confirm_return_screen = DGUS_ScreenID::BOOT; + ExtUI::setUserConfirmed(); + #endif +} + +void DGUSScreenHandler::settingsReset() { + config.initialized = true; + config.volume = DGUS_DEFAULT_VOLUME; + config.brightness = DGUS_DEFAULT_BRIGHTNESS; + config.language = DGUS_Data::Language::Default; + config.jogLength = DGUS_Data::AxisControlCommand::Jog_1mm; + config.plaExtruderTemp = PREHEAT_1_TEMP_HOTEND; + config.plaBedTemp = PREHEAT_1_TEMP_BED; + config.absExtruderTemp = PREHEAT_2_TEMP_HOTEND; + config.absBedTemp = PREHEAT_2_TEMP_BED; + config.levelingEnabled = ExtUI::getLevelingActive(); + + if (!settings_ready) { + settings_ready = true; + ready(); + } + + setStatusMessage(GET_TEXT_F(DGUS_MSG_RESET_EEPROM)); +} + +void DGUSScreenHandler::storeSettings(char *buff) { + static_assert(sizeof(config) <= ExtUI::eeprom_data_size, "sizeof(eeprom_data_t) > eeprom_data_size."); + + config.initialized = true; + config.volume = dgus.getVolume(); + config.brightness = dgus.getBrightness(); + + memcpy(buff, &config, sizeof(config)); +} + +void DGUSScreenHandler::loadSettings(const char *buff) { + static_assert(sizeof(config) <= ExtUI::eeprom_data_size, "sizeof(eeprom_data_t) > eeprom_data_size."); + memcpy(&config, buff, sizeof(config)); + + if (!config.initialized + || config.language < DGUS_Data::Language::Chinese_Simplified + || config.language > DGUS_Data::Language::Turkish + || config.jogLength < DGUS_Data::AxisControlCommand::Jog_10mm + || config.jogLength > DGUS_Data::AxisControlCommand::Jog_0_1mm) { + DEBUG_ECHOLNPGM("invalid DGUS settings, resetting"); + settingsReset(); + } + + ExtUI::setLevelingActive(config.levelingEnabled); + dgus.setVolume(config.volume); + dgus.setBrightness(config.brightness); +} + +void DGUSScreenHandler::configurationStoreWritten(bool success) { + if (!success) + setStatusMessage(GET_TEXT_F(DGUS_MSG_WRITE_EEPROM_FAILED)); +} + +void DGUSScreenHandler::configurationStoreRead(bool success) { + if (!success) { + setStatusMessage(GET_TEXT_F(DGUS_MSG_READ_EEPROM_FAILED)); + } + else if (!settings_ready) { + settings_ready = true; + ready(); + } +} + +void DGUSScreenHandler::playTone(const uint16_t frequency, const uint16_t duration) { + if (WITHIN(frequency, 1, 255)) { + if (WITHIN(duration, 1, 255)) + dgus.playSound((uint8_t)frequency, (uint8_t)duration); + else + dgus.playSound((uint8_t)frequency); + } +} + +void DGUSScreenHandler::angryBeeps(const uint8_t beepCount) { + angry_beeps = beepCount; +} + +void DGUSScreenHandler::levelingStart() { + isLeveling = true; + currentMeshPointIndex = 0; + triggerFullUpdate(); +} + +void DGUSScreenHandler::levelingEnd() { + if (!isLeveling) return; + + #if ENABLED(DEBUG_DGUSLCD) + DEBUG_ECHOLNPGM("levelingEnd(), valid=", ExtUI::getLevelingIsValid()); + #endif + + isLeveling = false; + currentMeshPointIndex = 0; + triggerFullUpdate(); +} + +void DGUSScreenHandler::meshUpdate(const int8_t xpos, const int8_t ypos) { + if (!isLeveling) return; + + currentMeshPointIndex++; + triggerFullUpdate(); +} + +void DGUSScreenHandler::printTimerStarted() { + TERN_(HAS_FILAMENT_SENSOR, ExtUI::setFilamentRunoutState(false)); + triggerScreenChange(DGUS_ScreenID::PAUSE); +} + +void DGUSScreenHandler::printTimerPaused() { + dgus.playSound(3); + triggerScreenChange(DGUS_ScreenID::RESUME); +} + +void DGUSScreenHandler::printTimerStopped() { + dgus.playSound(3); + triggerScreenChange(DGUS_ScreenID::FINISH); +} + +void DGUSScreenHandler::filamentRunout(const ExtUI::extruder_t extruder) { + triggerScreenChange(DGUS_ScreenID::FILAMENTUSEUP); + dgus.playSound(3); +} + +ssize_t DGUSScreenHandler::getScrollIndex() { + return currentScrollIndex; +} + +void DGUSScreenHandler::addCurrentPageStringLength(size_t stringLength, size_t textControlLength) { + NOLESS(pageMaxStringLen, stringLength); + NOLESS(pageMaxControlLen, textControlLength); +} + +#if HAS_MEDIA + + void DGUSScreenHandler::sdCardInserted() {} + + void DGUSScreenHandler::sdCardRemoved() { + sdPrintFilename = noFileSelected; + + if (getCurrentScreen() >= DGUS_ScreenID::FILE1 + && getCurrentScreen() <= DGUS_ScreenID::FILE4) { + triggerTempScreenChange(DGUS_ScreenID::SDCARDCHECK, DGUS_ScreenID::HOME); + } + } + + void DGUSScreenHandler::sdCardError() {} + +#endif // HAS_MEDIA + +#if ENABLED(POWER_LOSS_RECOVERY) + void DGUSScreenHandler::powerLossResume() { + powerLossRecoveryAvailable = true; + } +#endif + +#if HAS_PID_HEATING + void DGUSScreenHandler::pidTuning(const ExtUI::result_t rst) { + dgus.playSound(3); + } +#endif + +void DGUSScreenHandler::steppersStatusChanged(bool steppersEnabled) { + refreshVP(DGUS_Addr::AXIS_StepperStatus); +} + +void DGUSScreenHandler::homingDone() { + if (isOnTempScreen(DGUS_ScreenID::AUTOHOME)) + triggerReturnScreen(); +} + +void DGUSScreenHandler::startPrintFromSD(const char* const filename) { + triggerScreenChange(DGUS_ScreenID::HOME); + sdPrintFilename = filename; + setStatusMessage(sdPrintFilename, 0); +} + +void DGUSScreenHandler::setStatusMessage(FSTR_P msg, const millis_t duration) { + setStatusMessage(FTOP(msg), duration); +} + +void DGUSScreenHandler::setStatusMessage(const char* msg, const millis_t duration) { + homeStatusMessage[0] = '\0'; + strncat(homeStatusMessage, msg, sizeof(homeStatusMessage) / sizeof(char) - 1); + status_expire = duration ? ExtUI::safe_millis() + duration : 0; +} + +DGUS_ScreenID DGUSScreenHandler::getCurrentScreen() { return current_screen; } + +void DGUSScreenHandler::homeThenChangeScreen(DGUS_ScreenID screen) { + triggerTempScreenChange(DGUS_ScreenID::AUTOHOME, screen); + ExtUI::injectCommands(F("G28")); +} + +void DGUSScreenHandler::triggerScreenChange(DGUS_ScreenID screen) { + if (confirm_return_screen != DGUS_ScreenID::BOOT) + confirm_return_screen = screen; + else + new_screen = screen; + wait_return_screen = DGUS_ScreenID::BOOT; // cancel temp screen + + #if ALL(DEBUG_OUT, DGUS_SCREEN_PAGE_DEBUG) + DEBUG_ECHOLNPGM("trig scr: ", (uint16_t)screen); + #endif +} + +void DGUSScreenHandler::triggerTempScreenChange(DGUS_ScreenID screen, DGUS_ScreenID returnScreen) { + if (confirm_return_screen != DGUS_ScreenID::BOOT) + confirm_return_screen = screen; + else + new_screen = screen; + wait_return_screen = returnScreen; + + #if ALL(DEBUG_OUT, DGUS_SCREEN_PAGE_DEBUG) + DEBUG_ECHOLNPGM("trig tmp: ", (uint16_t)screen, " ret: ", (uint16_t)returnScreen); + #endif +} + +void DGUSScreenHandler::triggerReturnScreen() { + new_screen = wait_return_screen; + wait_return_screen = DGUS_ScreenID::BOOT; + #if ALL(DEBUG_OUT, DGUS_SCREEN_PAGE_DEBUG) + DEBUG_ECHOLNPGM("trig ret scr"); + #endif +} + +bool DGUSScreenHandler::isOnTempScreen(DGUS_ScreenID screen) { + return wait_return_screen != DGUS_ScreenID::BOOT + && (screen == DGUS_ScreenID::BOOT || current_screen == screen); +} + +void DGUSScreenHandler::triggerFullUpdate() { + full_update = true; +} + +void DGUSScreenHandler::triggerEEPROMSave() { + eeprom_save = ExtUI::safe_millis() + 500; +} + +bool DGUSScreenHandler::isPrinterIdle() { + return (!ExtUI::commandsInQueue() && !ExtUI::isMoving()); +} + +const DGUS_Addr* DGUSScreenHandler::findScreenAddrList(DGUS_ScreenID screen) { + DGUS_ScreenAddrList list; + const DGUS_ScreenAddrList *map = screen_addr_list_map; + + do { + memcpy_P(&list, map, sizeof(*map)); + if (!list.addr_list) break; + if (list.screen == screen) return list.addr_list; + } while (++map); + + return nullptr; +} + +bool DGUSScreenHandler::callScreenSetup(DGUS_ScreenID screen) { + DGUS_ScreenSetup setup; + const DGUS_ScreenSetup *list = screen_setup_list; + + do { + memcpy_P(&setup, list, sizeof(*list)); + if (!setup.setup_fn) break; + if (setup.screen == screen) return setup.setup_fn(); + } while (++list); + + return true; +} + +void DGUSScreenHandler::moveToScreen(DGUS_ScreenID screen, bool abort_wait) { + current_screen = screen; + + if (!callScreenSetup(screen)) return; + if (!sendScreenVPData(screen, true)) return; + + dgus.switchScreen(current_screen); +} + +bool DGUSScreenHandler::sendScreenVPData(DGUS_ScreenID screen, bool complete_update) { + if (complete_update) full_update = false; + + const DGUS_Addr *list = findScreenAddrList(screen); + + while (true) { + if (!list) return true; // Nothing left to send + + const uint16_t addr = pgm_read_word(list++); + if (!addr) return true; // Nothing left to send + + DGUS_VP vp; + if (!DGUS_PopulateVP((DGUS_Addr)addr, &vp)) continue; // Invalid VP + if (!vp.tx_handler) continue; // Nothing to send + if (!complete_update + && !(vp.flags & VPFLAG_AUTOUPLOAD) + && TERN1(DGUS_SOFTWARE_AUTOSCROLL, !(vp.flags & VPFLAG_TXSTRING_AUTOSCROLL)) + ) continue; // Unnecessary VP + + uint8_t expected_tx = 6 + vp.size; // 6 bytes header + payload. + const millis_t try_until = ExtUI::safe_millis() + 1000; + + while (expected_tx > dgus.getFreeTxBuffer()) { + if (ELAPSED(ExtUI::safe_millis(), try_until)) return false; // Stop trying after 1 second + + dgus.flushTx(); // Flush the TX buffer + delay(50); + } + + vp.tx_handler(vp); + } +} + +bool DGUSScreenHandler::refreshVP(DGUS_Addr vpAddr) { + const DGUS_Addr *list = findScreenAddrList(current_screen); + + while (list && (uint16_t)*list) { + if (*list == vpAddr) { + DGUS_VP vp; + if (!DGUS_PopulateVP((DGUS_Addr)vpAddr, &vp) || !vp.tx_handler) + return false; + + vp.tx_handler(vp); + return true; + } + + list++; + } + + return false; +} + +#endif // DGUS_LCD_UI_E3S1PRO diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSScreenHandler.h b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSScreenHandler.h new file mode 100644 index 0000000000..9220f09aa3 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSScreenHandler.h @@ -0,0 +1,166 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "../../../inc/MarlinConfigPre.h" + +#include "config/DGUS_Addr.h" +#include "config/DGUS_Data.h" +#include "config/DGUS_Screen.h" +#include "config/DGUS_Constants.h" + +#include "DGUSSDCardHandler.h" + +#include "../ui_api.h" + +class DGUSScreenHandler { +public: + typedef struct { + bool initialized; + bool levelingEnabled; + uint8_t volume; + uint8_t brightness; + DGUS_Data::Language language; + DGUS_Data::AxisControlCommand jogLength; + uint16_t plaExtruderTemp; + uint16_t plaBedTemp; + uint16_t absExtruderTemp; + uint16_t absBedTemp; + } eeprom_data_t; + +public: + static eeprom_data_t config; + static uint16_t currentMeshPointIndex; + static bool isLeveling; + + static char homeStatusMessage[128]; + +private: + static bool settings_ready; + static bool booted; + + static DGUS_ScreenID current_screen; + static DGUS_ScreenID new_screen; + static DGUS_ScreenID wait_return_screen; + static DGUS_ScreenID confirm_return_screen; + static bool full_update; + static uint8_t angry_beeps; + + #if HAS_MEDIA + static const char* sdPrintFilename; + #endif + + #if ENABLED(POWER_LOSS_RECOVERY) + static bool powerLossRecoveryAvailable; + #endif + + #if ENABLED(DGUS_SOFTWARE_AUTOSCROLL) + static ssize_t currentScrollIndex; + static size_t pageMaxStringLen; + static size_t pageMaxControlLen; + #endif + + static millis_t status_expire; + static millis_t eeprom_save; + +public: + DGUSScreenHandler() = default; + + static void init(); + static void ready(); + static void loop(); + + static void printerKilled(FSTR_P const error, FSTR_P const component); + static bool isOnUserConfirmationScreen() { return confirm_return_screen != DGUS_ScreenID::BOOT; } + static void userConfirmRequired(const char * const msg); + static void userConfirmation(); + static void settingsReset(); + static void storeSettings(char *buff); + static void loadSettings(const char *buff); + static void configurationStoreWritten(bool success); + static void configurationStoreRead(bool success); + + static void playTone(const uint16_t frequency, const uint16_t duration); + static void angryBeeps(const uint8_t beepCount); + + static void levelingStart(); + static void levelingEnd(); + static void meshUpdate(const int8_t xpos, const int8_t ypos); + + static void printTimerStarted(); + static void printTimerPaused(); + static void printTimerStopped(); + static void filamentRunout(const ExtUI::extruder_t extruder); + + #if ENABLED(DGUS_SOFTWARE_AUTOSCROLL) + static ssize_t getScrollIndex(); + static void addCurrentPageStringLength(size_t stringLength, size_t textControlLength); + #endif + + #if HAS_MEDIA + /// Marlin informed us that a new SD has been inserted. + static void sdCardInserted(); + /// Marlin informed us that the SD Card has been removed(). + static void sdCardRemoved(); + /// Marlin informed us about a bad SD Card. + static void sdCardError(); + + static const char* getSDCardPrintFilename() { return sdPrintFilename; } + #endif + + #if ENABLED(POWER_LOSS_RECOVERY) + static void powerLossResume(); + #endif + + #if HAS_PID_HEATING + static void pidTuning(const ExtUI::result_t rst); + #endif + + static void steppersStatusChanged(bool steppersEnabled); + static void homingDone(); + + static void startPrintFromSD(const char* const filename); + static void setStatusMessage(FSTR_P msg, const millis_t duration=DGUS_STATUS_EXPIRATION_MS); + static void setStatusMessage(const char* msg, const millis_t duration=DGUS_STATUS_EXPIRATION_MS); + + static DGUS_ScreenID getCurrentScreen(); + static void homeThenChangeScreen(DGUS_ScreenID screen); + static void triggerScreenChange(DGUS_ScreenID screen); + static void triggerTempScreenChange(DGUS_ScreenID screen, DGUS_ScreenID returnScreen); + static void triggerReturnScreen(); + static bool isOnTempScreen(DGUS_ScreenID screen = DGUS_ScreenID::BOOT); + static void triggerFullUpdate(); + + static void triggerEEPROMSave(); + + static bool isPrinterIdle(); + +private: + static const DGUS_Addr* findScreenAddrList(DGUS_ScreenID screen); + static bool callScreenSetup(DGUS_ScreenID screen); + + static void moveToScreen(DGUS_ScreenID screen, bool abort_wait=false); + static bool sendScreenVPData(DGUS_ScreenID screen, bool complete_update); + static bool refreshVP(DGUS_Addr vpAddr); +}; + +extern DGUSScreenHandler screen; diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSetupHandler.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSetupHandler.cpp new file mode 100644 index 0000000000..ddde2689de --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSetupHandler.cpp @@ -0,0 +1,60 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../../inc/MarlinConfigPre.h" + +#if ENABLED(DGUS_LCD_UI_E3S1PRO) + +#include "DGUSSetupHandler.h" + +#include "DGUSDisplay.h" +#include "DGUSScreenHandler.h" + +typedef void (*controlSet_t)(const DGUS_ScreenID, DGUSDisplay::DGUS_ControlType, DGUS_Control); + +bool DGUSSetupHandler::sdCardPrepare() { + bool isConfirm = false; + + #if ENABLED(DGUS_USERCONFIRM) + isConfirm = screen.isOnUserConfirmationScreen(); + controlSet_t controlSet = isConfirm ? dgus.disableControl : dgus.enableControl; + + // Only allow the fifth line used as the confirm button to be clicked + controlSet(DGUS_ScreenID::FILE1, DGUSDisplay::DGUS_ControlType::RETURN_KEY_CODE, DGUS_Control::FILE1_File1); + controlSet(DGUS_ScreenID::FILE1, DGUSDisplay::DGUS_ControlType::RETURN_KEY_CODE, DGUS_Control::FILE1_File2); + controlSet(DGUS_ScreenID::FILE1, DGUSDisplay::DGUS_ControlType::RETURN_KEY_CODE, DGUS_Control::FILE1_File3); + controlSet(DGUS_ScreenID::FILE1, DGUSDisplay::DGUS_ControlType::RETURN_KEY_CODE, DGUS_Control::FILE1_File4); + controlSet(DGUS_ScreenID::FILE1, DGUSDisplay::DGUS_ControlType::RETURN_KEY_CODE, DGUS_Control::FILE1_Start); + controlSet(DGUS_ScreenID::FILE1, DGUSDisplay::DGUS_ControlType::RETURN_KEY_CODE, DGUS_Control::FILE1_End); + controlSet(DGUS_ScreenID::FILE1, DGUSDisplay::DGUS_ControlType::RETURN_KEY_CODE, DGUS_Control::FILE1_Prev); + controlSet(DGUS_ScreenID::FILE1, DGUSDisplay::DGUS_ControlType::RETURN_KEY_CODE, DGUS_Control::FILE1_Next); + controlSet(DGUS_ScreenID::FILE1, DGUSDisplay::DGUS_ControlType::RETURN_KEY_CODE, DGUS_Control::FILE1_Home); + controlSet(DGUS_ScreenID::FILE1, DGUSDisplay::DGUS_ControlType::RETURN_KEY_CODE, DGUS_Control::FILE1_Print); + controlSet(DGUS_ScreenID::FILE1, DGUSDisplay::DGUS_ControlType::RETURN_KEY_CODE, DGUS_Control::FILE1_Ready); + controlSet(DGUS_ScreenID::FILE1, DGUSDisplay::DGUS_ControlType::RETURN_KEY_CODE, DGUS_Control::FILE1_Settings); + #endif + + if (!isConfirm) dgus_sdcard_handler.onPageLoad(DGUS_SCREEN_TO_PAGE(screen.getCurrentScreen())); + return true; +} + +#endif // DGUS_LCD_UI_E3S1PRO diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSetupHandler.h b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSetupHandler.h new file mode 100644 index 0000000000..f8e3b33da8 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSSetupHandler.h @@ -0,0 +1,26 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +namespace DGUSSetupHandler { + bool sdCardPrepare(); +} diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSTxHandler.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSTxHandler.cpp new file mode 100644 index 0000000000..0dd12b1612 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSTxHandler.cpp @@ -0,0 +1,223 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../../inc/MarlinConfigPre.h" + +#if ENABLED(DGUS_LCD_UI_E3S1PRO) + +#include "DGUSTxHandler.h" + +#include "DGUSScreenHandler.h" +#include "config/DGUS_Data.h" + +#include "../../../module/stepper.h" // for axis_enabled +#include "../../../libs/duration_t.h" + +void DGUSTxHandler::bootAnimation(DGUS_VP &vp) { + static uint16_t bootIcon = 0; + + dgus.write((uint16_t)vp.addr, Endianness::toBE(bootIcon)); + + if (++bootIcon > 100) { + bootIcon = 0; + screen.triggerScreenChange(DGUS_ScreenID::HOME); + } +} + +void DGUSTxHandler::zOffset(DGUS_VP &vp) { + const float position = ExtUI::getZOffset_mm(); + const int16_t data = dgus.toFixedPoint(position); // Round to 0.01 + dgus.write((int16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::elapsedHours(DGUS_VP &vp) { + const duration_t elapsedtime = ExtUI::getProgress_seconds_elapsed(); + const int16_t data = elapsedtime.hour(); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::elapsedMinutes(DGUS_VP &vp) { + const duration_t elapsedtime = ExtUI::getProgress_seconds_elapsed(); + const int16_t data = elapsedtime.minute() % 60; + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::levelingProgress(DGUS_VP &vp) { + const uint16_t data = (100 * screen.currentMeshPointIndex) / GRID_MAX_POINTS; + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::fanSpeed(DGUS_VP &vp) { + const int16_t data = (int16_t)ExtUI::getActualFan_percent(ExtUI::FAN0); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::levelingProgressIcon(DGUS_VP &vp) { + const uint16_t data = 1 + (50 * screen.currentMeshPointIndex) / GRID_MAX_POINTS; + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +#if HAS_FILAMENT_SENSOR + void DGUSTxHandler::filamentInsertionStatus(DGUS_VP &vp) { + const uint16_t data = ExtUI::getFilamentRunoutState() ? 1 : 0; + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); + } +#endif + +void DGUSTxHandler::sdCardInsertionStatus(DGUS_VP &vp) { + const uint16_t data = ExtUI::isMediaInserted() ? 1 : 0; + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +#if ENABLED(PIDTEMPBED) + void DGUSTxHandler::bed_PID_P(DGUS_VP &vp) { + const int16_t data = dgus.toFixedPoint(ExtUI::getBedPID_Kp()); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); + } + + void DGUSTxHandler::bed_PID_I(DGUS_VP &vp) { + const int16_t data = dgus.toFixedPoint(ExtUI::getBedPID_Ki()); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); + } + + void DGUSTxHandler::bed_PID_D(DGUS_VP &vp) { + const int16_t data = dgus.toFixedPoint(ExtUI::getBedPID_Kd()); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); + } +#endif // PIDTEMPBED + +static duration_t _PrintRemainingDurationEstimate() { + duration_t remainingDuration = 0; + + if (ExtUI::isPrinting()) { + const uint8_t progressPercentage = ExtUI::getProgress_percent(); + remainingDuration = duration_t(3600); + + if (progressPercentage >= 2) + remainingDuration = ExtUI::getProgress_seconds_elapsed() * ((100.0 / (float)progressPercentage) - 1.0); + } + + return remainingDuration; +} + +void DGUSTxHandler::printRemainingHours(DGUS_VP &vp) { + const int16_t data = _PrintRemainingDurationEstimate().hour(); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::printRemainingMinutes(DGUS_VP &vp) { + const int16_t data = _PrintRemainingDurationEstimate().minute() % 60; + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::printPercentage(DGUS_VP &vp) { + const int16_t data = ExtUI::getProgress_percent(); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::printSpeedPercentage(DGUS_VP &vp) { + const int16_t data = ExtUI::getFeedrate_percent(); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::extruderTargetTemp(DGUS_VP &vp) { + const int16_t data = ExtUI::getTargetTemp_celsius(ExtUI::H0); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::extruderCurrentTemp(DGUS_VP &vp) { + const int16_t data = ExtUI::getActualTemp_celsius(ExtUI::H0); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::bedTargetTemp(DGUS_VP &vp) { + const int16_t data = ExtUI::getTargetTemp_celsius(ExtUI::BED); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::bedCurrentTemp(DGUS_VP &vp) { + const int16_t data = ExtUI::getActualTemp_celsius(ExtUI::BED); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::axis_X(DGUS_VP &vp) { + const int16_t data = dgus.toFixedPoint(ExtUI::getAxisPosition_mm(ExtUI::X)); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::axis_Y(DGUS_VP &vp) { + const int16_t data = dgus.toFixedPoint(ExtUI::getAxisPosition_mm(ExtUI::Y)); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::axis_Z(DGUS_VP &vp) { + const int16_t data = dgus.toFixedPoint(ExtUI::getAxisPosition_mm(ExtUI::Z)); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::stepperStatus(DGUS_VP &vp) { + const bool areSteppersEnabled = stepper.axis_enabled.bits & (_BV(NUM_AXES) - 1); + const uint16_t data = areSteppersEnabled ? 1 : 0; + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::enableIfLanguageMatchesExtra(DGUS_VP &vp) { + const DGUS_Data::Language targetLanguage = (DGUS_Data::Language)reinterpret_cast(vp.extra); + const uint16_t data = targetLanguage == screen.config.language ? 1 : 0; + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); +} + +void DGUSTxHandler::extraToString(DGUS_VP &vp) { + if (!vp.size || !vp.extra) return; + + #if ENABLED(DGUS_SOFTWARE_AUTOSCROLL) + if (vp.flags & VPFLAG_TXSTRING_AUTOSCROLL) { + const char* stringStart = (const char*)vp.extra; + const size_t stringLength = strlen(stringStart); + screen.addCurrentPageStringLength(stringLength, vp.size); + + if (stringLength <= vp.size || screen.getScrollIndex() <= 0) { + // no scroll needed + } + else if ((ssize_t)stringLength - screen.getScrollIndex() <= vp.size) { + stringStart += (stringLength - vp.size); + } + else + stringStart += screen.getScrollIndex(); + + dgus.writeString((uint16_t)vp.addr, + stringStart, + vp.size, true, false, false); + return; + } + #endif // DGUS_SOFTWARE_AUTOSCROLL + + dgus.writeString((uint16_t)vp.addr, vp.extra, vp.size, true, false, false); +} + +void DGUSTxHandler::extraPGMToString(DGUS_VP &vp) { + if (!vp.size || !vp.extra) return; + + dgus.writeStringPGM((uint16_t)vp.addr, vp.extra, vp.size, true, false, false); +} + +#endif // DGUS_LCD_UI_E3S1PRO diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSTxHandler.h b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSTxHandler.h new file mode 100644 index 0000000000..2b22c7a62e --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/DGUSTxHandler.h @@ -0,0 +1,150 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "DGUSDisplay.h" +#include "definition/DGUS_VP.h" + +#define Swap16(val) (uint16_t((uint16_t(val) >> 8) | (uint16_t(val) << 8))) + +namespace DGUSTxHandler { + void bootAnimation(DGUS_VP &); + + void zOffset(DGUS_VP &); + void elapsedHours(DGUS_VP &); + void elapsedMinutes(DGUS_VP &); + void levelingProgress(DGUS_VP &vp); + void fanSpeed(DGUS_VP &vp); + void levelingProgressIcon(DGUS_VP &vp); + #if HAS_FILAMENT_SENSOR + void filamentInsertionStatus(DGUS_VP &vp); + #endif + void sdCardInsertionStatus(DGUS_VP &vp); + + template + void maxFeedrate(DGUS_VP &vp) { + const uint16_t data = (uint16_t)ExtUI::getAxisMaxFeedrate_mm_s(axis); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); + } + template + void maxAcceleration(DGUS_VP &vp) { + const uint16_t data = (uint16_t)ExtUI::getAxisMaxAcceleration_mm_s2(axis); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); + } + template + void maxJerk(DGUS_VP &vp) { + const uint16_t data = dgus.toFixedPoint(ExtUI::getAxisMaxJerk_mm_s(axis)); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); + } + template + void stepsPerMM(DGUS_VP &vp) { + const uint16_t data = dgus.toFixedPoint(ExtUI::getAxisSteps_per_mm(axis)); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); + } + + #if ENABLED(PIDTEMP) + template + void PID_P(DGUS_VP &vp) { + const uint16_t data = dgus.toFixedPoint(ExtUI::getPID_Kp(extruder)); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); + } + template + void PID_I(DGUS_VP &vp) { + const uint16_t data = dgus.toFixedPoint(ExtUI::getPID_Ki(extruder)); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); + } + template + void PID_D(DGUS_VP &vp) { + const uint16_t data = dgus.toFixedPoint(ExtUI::getPID_Kd(extruder)); + dgus.write((uint16_t)vp.addr, Endianness::toBE(data)); + } + #endif // PIDTEMP + + #if ENABLED(PIDTEMPBED) + void bed_PID_P(DGUS_VP &vp); + void bed_PID_I(DGUS_VP &vp); + void bed_PID_D(DGUS_VP &vp); + #endif + + void printRemainingHours(DGUS_VP &); + void printRemainingMinutes(DGUS_VP &); + void printPercentage(DGUS_VP &); + void printSpeedPercentage(DGUS_VP &); + void extruderTargetTemp(DGUS_VP &); + void extruderCurrentTemp(DGUS_VP &); + void bedTargetTemp(DGUS_VP &); + void bedCurrentTemp(DGUS_VP &); + void axis_X(DGUS_VP &); + void axis_Y(DGUS_VP &); + void axis_Z(DGUS_VP &); + void stepperStatus(DGUS_VP &); + void enableIfLanguageMatchesExtra(DGUS_VP &); + + void extraToString(DGUS_VP &); + void extraPGMToString(DGUS_VP &); + + template + void extraToInteger(DGUS_VP &vp) { + if (!vp.size || !vp.extra) return; + switch (vp.size) { + default: return; + case 1: { + const uint8_t data = uint8_t(*(T*)vp.extra); + dgus.write(uint16_t(vp.addr), data); + break; + } + case 2: { + const uint16_t data = uint16_t(*(T*)vp.extra); + dgus.write(uint16_t(vp.addr), Endianness::toBE(data)); + break; + } + case 4: { + const uint32_t data = uint32_t(*(T*)vp.extra); + dgus.write(uint16_t(vp.addr), Endianness::toBE(data)); + break; + } + } + } + + template + void extraToFixedPoint(DGUS_VP &vp) { + if (!vp.size || !vp.extra) return; + switch (vp.size) { + default: return; + case 1: { + const uint8_t data = dgus.toFixedPoint(*(T*)vp.extra); + dgus.write(uint16_t(vp.addr), data); + break; + } + case 2: { + const uint16_t data = dgus.toFixedPoint(*(T*)vp.extra); + dgus.write(uint16_t(vp.addr), Endianness::toBE(data)); + break; + } + case 4: { + const uint32_t data = dgus.toFixedPoint(*(T*)vp.extra); + dgus.write(uint16_t(vp.addr), Endianness::toBE(data)); + break; + } + } + } +} diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Addr.h b/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Addr.h new file mode 100644 index 0000000000..73694a4e09 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Addr.h @@ -0,0 +1,251 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#define DGUS_MAIN_STATUS_LEN 20 +#define DGUS_FILENAME_LEN 20 +#define DGUS_INFOSTRING_LEN 16 // 20 in the firmware, but really only shows 16 characters + +enum class DGUS_Addr : uint16_t { + END = 0, + BOOT_Logo = 0x1000, + CMD_MenuSelect = 0x1002, // r, int, DGUS_Data::MenuSelectCommand + CMD_Adjust = 0x1004, // r, int, DGUS_Data::AdjustCommand + MAIN_PrintSpeedPercentage = 0x1006, // rw, int, 3.0 + CMD_CheckKO = 0x1008, // r, int, DGUS_Data::CheckKOCommand + CMD_StopPause = 0x100A, // r, int, DGUS_Data::StopPauseCommand + CMD_CheckOK = 0x100C, // r, int, DGUS_Data::CheckOKCommand + MAIN_Icon_Percentage = 0x100E, // w, icon, 0-100 + MAIN_ElapsedHours = 0x1010, // w, int, 3.0 + MAIN_ElapsedMinutes = 0x1012, // w, int, 2.0 + MAIN_PrintPercentage = 0x1016, // w, int, 3.0 + MAIN_ZOffset = 0x1026, // w, int, 2.2 + CMD_PresetControl = 0x1030, // r, int, DGUS_Data::PresetControlCommand + CMD_TemperatureControl = 0x1032, // r, int, DGUS_Data::TemperatureControlCommand + MAIN_ExtruderTargetTemp = 0x1034, // rw, int, 3.0 + MAIN_ExtruderCurrentTemp = 0x1036, // w, int, 3.0 + MAIN_BedTargetTemp = 0x103A, // rw, int, 3.0 + MAIN_BedCurrentTemp = 0x103C, // w, int, 3.0 + CMD_SettingsMenu = 0x103E, // r, int, DGUS_Data::SettingsMenuCommand + CMD_Leveling = 0x1044, // r, int, DGUS_Data::LevelingCommand + CMD_AxisControl = 0x1046, // r, int, DGUS_Data::AxisControlCommand + AXIS_X = 0x1048, // rw, int, 3.1 + AXIS_Y = 0x104A, // rw, int, 3.1 + AXIS_Z = 0x104C, // rw, int, 3.1 + IO_ExtrudeLength = 0x1052, // r, int, 3.1 + IO_RetractLength = 0x1054, // r, int, 3.1 + CMD_AxisIO = 0x1056, // r, int, DGUS_Data::FilamentIoCommand + LANGUAGE_SetLanguage = 0x105C, // r, int, 1-9 + CMD_PowerLoss = 0x105F, // r, int, DGUS_Data::PowerLossCommand + LEVELING_Progress_Icon = 0x108D, // w, icon, progress 1-50 + FILAMENT_Icon_Inserted = 0x108E, // w, icon, on-off 0-1 + TEMP_PLA_ExtruderTemp = 0x1090, // rw, int, 3.0 + TEMP_PLA_BedTemp = 0x1092, // rw, int, 3.0 + TEMP_ABS_ExtruderTemp = 0x1094, // rw, int, 3.0 + TEMP_ABS_BedTemp = 0x1096, // rw, int, 3.0 + CMD_AdvancedSettings = 0x1098, // r, int, DGUS_Data::AdvancedSettingsCommand + LEVELING_Progress = 0x109C, // w, int, 3.0 + MOTION_MaxSpeed_X = 0x109E, // rw, int, 4.0 + MOTION_MaxSpeed_Y = 0x10A0, // rw, int, 4.0 + MOTION_MaxSpeed_Z = 0x10A2, // rw, int, 4.0 + MOTION_MaxSpeed_E = 0x10A4, // rw, int, 4.0 + MOTION_Acceleration_X = 0x10A6, // rw, int, 4.0 + MOTION_Acceleration_Y = 0x10A8, // rw, int, 4.0 + MOTION_Acceleration_Z = 0x10AA, // rw, int, 4.0 + MOTION_Acceleration_E = 0x10AC, // rw, int, 4.0 + MOTION_MaxJerk_X = 0x10AE, // rw, int, 2.2 + MOTION_MaxJerk_Y = 0x10B0, // rw, int, 2.2 + MOTION_MaxJerk_Z = 0x10B2, // rw, int, 2.2 + MOTION_MaxJerk_E = 0x10B4, // rw, int, 2.2 + MOTION_StepsPerMm_X = 0x10B6, // rw, int, 4.1 + MOTION_StepsPerMm_Y = 0x10B8, // rw, int, 4.1 + MOTION_StepsPerMm_Z = 0x10BA, // rw, int, 4.1 + MOTION_StepsPerMm_E = 0x10BC, // rw, int, 4.1 + PID_Extruder_P = 0x10BE, // rw, int, 3.2 + PID_Extruder_I = 0x10C0, // rw, int, 3.2 + PID_Extruder_D = 0x10C2, // rw, int, 3.2 + PID_Bed_P = 0x10C4, // rw, int, 3.2 + PID_Bed_I = 0x10C6, // rw, int, 3.2 + PID_Bed_D = 0x10C8, // rw, int, 4.1 + CONTROL_FanSpeed = 0x10CA, // rw, int, 3.0 + SDCard_InsertionStatus = 0x1168, // w, icon, on off 0-1 + FINISH_Icon_Finished = 0x1170, // w, icon, translated 1-9 + MAIN_RemainingHours = 0x1171, // w, int, 3.0 + MAIN_RemainingMinutes = 0x1173, // w, int, 2.0 + + AXIS_StepperStatus = 0x1200, // w, icon, on off 0-1 + SDCARD_Selection_File1 = 0x1221, // w, icon, on off 0-1 + SDCARD_Selection_File2 = 0x1222, // w, icon, on off 0-1 + SDCARD_Selection_File3 = 0x1223, // w, icon, on off 0-1 + SDCARD_Selection_File4 = 0x1224, // w, icon, on off 0-1 + SDCARD_Selection_File5 = 0x1225, // w, icon, on off 0-1 + SDCARD_Selection_File6 = 0x1226, // w, icon, on off 0-1 + SDCARD_Selection_File7 = 0x1227, // w, icon, on off 0-1 + SDCARD_Selection_File8 = 0x1228, // w, icon, on off 0-1 + SDCARD_Selection_File9 = 0x1229, // w, icon, on off 0-1 + SDCARD_Selection_File10 = 0x122A, // w, icon, on off 0-1 + SDCARD_Selection_File11 = 0x122B, // w, icon, on off 0-1 + SDCARD_Selection_File12 = 0x122C, // w, icon, on off 0-1 + SDCARD_Selection_File13 = 0x122D, // w, icon, on off 0-1 + SDCARD_Selection_File14 = 0x122E, // w, icon, on off 0-1 + SDCARD_Selection_File15 = 0x122F, // w, icon, on off 0-1 + SDCARD_Selection_File16 = 0x1230, // w, icon, on off 0-1 + SDCARD_Selection_File17 = 0x1231, // w, icon, on off 0-1 + SDCARD_Selection_File18 = 0x1232, // w, icon, on off 0-1 + SDCARD_Selection_File19 = 0x1233, // w, icon, on off 0-1 + SDCARD_Selection_File20 = 0x1234, // w, icon, on off 0-1 + MENU_Icon_Home_S = 0x1300, // w, icon, translated 1-9 + MENU_Icon_Print_S = 0x1301, // w, icon, translated 1-9 + MENU_Icon_Ready_S = 0x1302, // w, icon, translated 1-9 + MENU_Icon_Settings_S = 0x1303, // w, icon, translated 1-9 + MENU_Icon_Home = 0x1304, // w, icon, translated 1-9 + MENU_Icon_Print = 0x1305, // w, icon, translated 1-9 + MENU_Icon_Ready = 0x1306, // w, icon, translated 1-9 + MENU_Icon_Settings = 0x1307, // w, icon, translated 1-9 + ADJUST_Icon_Adjust = 0x130D, // w, icon, translated 1-9 + ADJUST_Icon_Feedrate = 0x130E, // w, icon, translated 1-9 + IO_Icon_ExtruderTemp = 0x130F, // w, icon, translated 1-9 + CONTROL_Icon_BedTemp = 0x1310, // w, icon, translated 1-9 + ADJUST_Icon_ZOffset = 0x1311, // w, icon, translated 1-9 + CONTROL_Icon_FanControl = 0x1312, // w, icon, translated 1-9 + ADJUST_Icon_FanControl = 0x1313, // w, icon, translated 1-9 + AXIS_Icon_MoveAxis = 0x1314, // w, icon, translated 1-9 + AXIS_Icon_IO = 0x1318, // w, icon, translated 1-9 + AXIS_Icon_Manual = 0x1319, // w, icon, translated 1-9 + CONTROL_Icon_Cooling = 0x131A, // w, icon, translated 1-9 + IO_Icon_Extrude = 0x1321, // w, icon, translated 1-9 + IO_Icon_Retract = 0x1322, // w, icon, translated 1-9 + SETTINGS_Icon_Language = 0x1323, // w, icon, translated 1-9 + SETTINGS_Icon_Leveling = 0x1325, // w, icon, translated 1-9 + SETTINGS_Icon_Device = 0x1326, // w, icon, translated 1-9 + ADV_Icon_ResetSettings = 0x1327, // w, icon, translated 1-9 + INFO_Icon_About = 0x1328, // w, icon, translated 1-9 + INFO_Icon_Device = 0x1329, // w, icon, translated 1-9 + SETTINGS_Icon_Advanced = 0x132A, // w, icon, translated 1-9 + SETTINGS_Icon_About = 0x132B, // w, icon, translated 1-9 + SETTINGS_Icon_PLA = 0x132D, // w, icon, translated 1-9 + SETTINGS_Icon_ABS = 0x132E, // w, icon, translated 1-9 + RUNOUT_Icon_Stop = 0x133E, // w, icon, translated 1-9 + RUNOUT_Icon_Message = 0x133F, // w, icon, translated 1-9 + RESET_Icon_Yes = 0x1340, // w, icon, translated 1-9 + RESET_Icon_No = 0x1341, // w, icon, translated 1-9 + LOAD_Icon_Message = 0x1342, // w, icon, translated 1-9 + LOAD_Icon_Continue = 0x1343, // w, icon, translated 1-9 + PAUSE_Icon_Message = 0x1344, // w, icon, translated 1-9 + RESUME_Icon_Message = 0x1347, // w, icon, translated 1-9 + POWERLOSS_Icon_Message = 0x1348, // w, icon, translated 1-9 + AUTOHOME_Icon_WaitMessage = 0x1349, // w, icon, translated 1-9 + LEVELING_Icon_Leveling = 0x134B, // w, icon, translated 1-9 + RESET_Icon_InfoMessage = 0x134D, // w, icon, translated 1-9 + LEVELING_Icon_Start = 0x1356, // w, icon, translated 1-9 + LEVELING_Icon_AuxLevel = 0x1357, // w, icon, translated 1-9 + LEVELING_Icon_AutoLevel = 0x1358, // w, icon, translated 1-9 + LEVELING_Icon_AuxLevel_S = 0x1359, // w, icon, translated 1-9 + LEVELING_Icon_AutoLevel_S = 0x135A, // w, icon, translated 1-9 + LANGUAGE_Icon_Language = 0x135B, // w, icon, translated 1-9 + ADV_Icon_Movement = 0x135C, // w, icon, translated 1-9 + ADV_Icon_PID = 0x135D, // w, icon, translated 1-9 + ADV_Icon_MotionSettings = 0x135F, // w, icon, translated 1-9 + ADV_Icon_MaxFeedrate = 0x1360, // w, icon, translated 1-9 + ADV_Icon_Acceleration = 0x1361, // w, icon, translated 1-9 + ADV_Icon_Jerk = 0x1362, // w, icon, translated 1-9 + ADV_Icon_StepsPerMm = 0x1363, // w, icon, translated 1-9 + ADV_Icon_MaxSpeed = 0x1364, // w, icon, translated 1-9 + ADV_Icon_MaxSpeed_X = 0x1365, // w, icon, translated 1-9 + ADV_Icon_MaxSpeed_Y = 0x1366, // w, icon, translated 1-9 + ADV_Icon_MaxSpeed_Z = 0x1367, // w, icon, translated 1-9 + ADV_Icon_MaxSpeed_E = 0x1368, // w, icon, translated 1-9 + ADV_Icon_AccelerationMenu = 0x1369, // w, icon, translated 1-9 + ADV_Icon_Acceleration_X = 0x136A, // w, icon, translated 1-9 + ADV_Icon_Acceleration_Y = 0x136B, // w, icon, translated 1-9 + ADV_Icon_Acceleration_Z = 0x136C, // w, icon, translated 1-9 + ADV_Icon_Acceleration_E = 0x136D, // w, icon, translated 1-9 + ADV_Icon_MaxJerkMenu = 0x136E, // w, icon, translated 1-9 + ADV_Icon_MaxJerk_X = 0x136F, // w, icon, translated 1-9 + ADV_Icon_MaxJerk_Y = 0x1370, // w, icon, translated 1-9 + ADV_Icon_MaxJerk_Z = 0x1371, // w, icon, translated 1-9 + ADV_Icon_MaxJerk_E = 0x1372, // w, icon, translated 1-9 + ADV_Icon_StepsPerMmMenu = 0x1373, // w, icon, translated 1-9 + ADV_Icon_StepsPerMm_X = 0x1374, // w, icon, translated 1-9 + ADV_Icon_StepsPerMm_Y = 0x1375, // w, icon, translated 1-9 + ADV_Icon_StepsPerMm_Z = 0x1376, // w, icon, translated 1-9 + ADV_Icon_StepsPerMm_E = 0x1377, // w, icon, translated 1-9 + PID_Icon_PIDMenu = 0x1378, // w, icon, translated 1-9 + PID_Icon_Extruder_P = 0x1379, // w, icon, translated 1-9 + PID_Icon_Extruder_I = 0x137A, // w, icon, translated 1-9 + PID_Icon_Extruder_D = 0x137B, // w, icon, translated 1-9 + PID_Icon_Bed_P = 0x137C, // w, icon, translated 1-9 + PID_Icon_Bed_I = 0x137D, // w, icon, translated 1-9 + PID_Icon_Bed_D = 0x137E, // w, icon, translated 1-9 + CUTTER_Icon_Message = 0x1381, // w, icon, translated 1-9 + FDM_Icon_Message = 0x1382, // w, icon, translated 1-9 + ADV_Icon_SwitchToLaser = 0x1388, // w, icon, translated 1-9 + PRTMODE_Icon_Message = 0x1389, // w, icon, translated 1-9 + PRTMODE_Icon_FDM = 0x138D, // w, icon, translated 1-9 + PRTMODE_Icon_Cutter = 0x138E, // w, icon, translated 1-9 + INFO_Icon_Model = 0x1400, // w, icon, translated 1-9 + INFO_Icon_FW_Version = 0x1401, // w, icon, translated 1-9 + INFO_Icon_Screen_Version = 0x1402, // w, icon, translated 1-9 + INFO_Icon_HW_Version = 0x1403, // w, icon, translated 1-9 + INFO_Icon_Website = 0x1405, // w, icon, translated 1-9 + INFO_Icon_Print_Size = 0x1406, // w, icon, translated 1-9 + LANGUAGE_Icon_Chinese = 0x1411, // w, icon, on off 0-1 + LANGUAGE_Icon_English = 0x1412, // w, icon, on off 0-1 + LANGUAGE_Icon_German = 0x1413, // w, icon, on off 0-1 + LANGUAGE_Icon_Spanish = 0x1414, // w, icon, on off 0-1 + LANGUAGE_Icon_French = 0x1415, // w, icon, on off 0-1 + LANGUAGE_Icon_Italian = 0x1416, // w, icon, on off 0-1 + LANGUAGE_Icon_Portuguese = 0x1417, // w, icon, on off 0-1 + LANGUAGE_Icon_Russian = 0x1418, // w, icon, on off 0-1 + LANGUAGE_Icon_Turkish = 0x1419, // w, icon, on off 0-1 + INFO_Model = 0x17B0, // w, text, 20 + INFO_FW_Version = 0x17C4, // w, text, 20 + INFO_Screen_Version = 0x17D8, // w, text, 20 + INFO_HW_Version = 0x17EC, // w, text, 20 + INFO_Print_Size = 0x1800, // w, text, 20 + INFO_Website = 0x1814, // w, text, 20 + SDCARD_Filename1 = 0x200A, // w, text, 20 + SDCARD_Filename2 = 0x201E, // w, text, 20 + SDCARD_Filename3 = 0x2032, // w, text, 20 + SDCARD_Filename4 = 0x2046, // w, text, 20 + SDCARD_Filename5 = 0x205A, // w, text, 20 + SDCARD_Filename6 = 0x206E, // w, text, 20 + SDCARD_Filename7 = 0x2082, // w, text, 20 + SDCARD_Filename8 = 0x2096, // w, text, 20 + SDCARD_Filename9 = 0x20AA, // w, text, 20 + SDCARD_Filename10 = 0x20BE, // w, text, 20 + SDCARD_Filename11 = 0x20D2, // w, text, 20 + SDCARD_Filename12 = 0x20E6, // w, text, 20 + SDCARD_Filename13 = 0x20FA, // w, text, 20 + SDCARD_Filename14 = 0x210E, // w, text, 20 + SDCARD_Filename15 = 0x2122, // w, text, 20 + SDCARD_Filename16 = 0x2136, // w, text, 20 + SDCARD_Filename17 = 0x214A, // w, text, 20 + SDCARD_Filename18 = 0x215E, // w, text, 20 + SDCARD_Filename19 = 0x2172, // w, text, 20 + SDCARD_Filename20 = 0x2186, // w, text, 20 + CMD_FilelistControl = 0x2198, // w, int, DGUS_Data::FilelistControlCommand + SDCARD_FileSelection = 0x2199, // r, int 1-20 + MAIN_StatusMessage = 0x219A, // w, text, 20 + ABNORMAL_StatusMessage = 0x21D4, // w, text, 30 + CMD_LaserControl = 0x2201, // w, int, DGUS_Data::LaserControlCommand +}; diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Constants.h b/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Constants.h new file mode 100644 index 0000000000..3c89f7ad8a --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Constants.h @@ -0,0 +1,57 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#define DGUS_BED_SIZE_STR STRINGIFY(X_BED_SIZE) "x" STRINGIFY(Y_BED_SIZE) "mm" + +#if ENABLED(DGUS_SOFTWARE_AUTOSCROLL) + #ifndef DGUS_AUTOSCROLL_START_CYCLES + // Additional refresh cycles where strings beginnings are shown + #define DGUS_AUTOSCROLL_START_CYCLES 1 + #endif + #ifndef DGUS_AUTOSCROLL_END_CYCLES + // Additional refresh cycles where strings endings are shown + #define DGUS_AUTOSCROLL_END_CYCLES 1 + #endif +#endif + +#ifndef DGUS_DEFAULT_VOLUME + #define DGUS_DEFAULT_VOLUME 50 +#endif + +#ifndef DGUS_DEFAULT_BRIGHTNESS + #define DGUS_DEFAULT_BRIGHTNESS 100 +#endif + +#ifndef DGUS_STATUS_EXPIRATION_MS + #define DGUS_STATUS_EXPIRATION_MS 30000 +#endif + +#ifndef BED_TRAMMING_Z_HOP + #define BED_TRAMMING_Z_HOP 4.0 +#endif + +#ifndef BED_TRAMMING_HEIGHT + #define BED_TRAMMING_HEIGHT 0.0 +#endif + +static_assert(BED_TRAMMING_Z_HOP >= 0, "BED_TRAMMING_Z_HOP must be >= 0. Please update your configuration."); diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Control.h b/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Control.h new file mode 100644 index 0000000000..c846b56bf4 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Control.h @@ -0,0 +1,41 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include + +enum class DGUS_Control : uint8_t { + // FILE1 + FILE1_File1 = 4, // RETURN_KEY_CODE + FILE1_File2 = 3, // RETURN_KEY_CODE + FILE1_File3 = 2, // RETURN_KEY_CODE + FILE1_File4 = 1, // RETURN_KEY_CODE + FILE1_File5 = 0, // RETURN_KEY_CODE + FILE1_Start = 8, // RETURN_KEY_CODE + FILE1_End = 7, // RETURN_KEY_CODE + FILE1_Prev = 5, // RETURN_KEY_CODE + FILE1_Next = 6, // RETURN_KEY_CODE + FILE1_Home = 9, // RETURN_KEY_CODE + FILE1_Print = 12, // RETURN_KEY_CODE + FILE1_Ready = 10, // RETURN_KEY_CODE + FILE1_Settings = 11, // RETURN_KEY_CODE +}; diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Data.h b/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Data.h new file mode 100644 index 0000000000..237cec7795 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Data.h @@ -0,0 +1,199 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include + +namespace DGUS_Data { + + // RX constants + + enum class Language : uint16_t { + Chinese_Simplified = 1, + English, + German, + Spanish, + French, + Italian, + Portuguese, + Russian, + Turkish, + + // Compatibility with LCD_LANGUAGE + zh_CN = Chinese_Simplified, + en = English, + de = German, + es = Spanish, + fr = French, + fr_na = French, + it = Italian, + pt = Portuguese, + ru = Russian, + tr = Turkish, + + Default = LCD_LANGUAGE + }; + + // 1002 + enum class MenuSelectCommand : uint16_t { + Print = 1, + Ready = 2, + Settings = 3, + PrintFinished = 5, + StartAutoLevel = 6, + Main = 8, + PausePrint = 9, + PauseStopPrint = 10 + }; + + // 1004 + enum class AdjustCommand : uint16_t { + Show_Adjust = 1, + Show_PrintStatus = 2, + Show_Adjust_ZOffset = 5, + Validate_ZOffset = 7, + }; + + // 1008 + enum class CheckKOCommand : uint16_t { + KO = 2, + SDCard_No = 4, // screen fw 1.0.3 + }; + + // 100A + enum class StopPauseCommand : uint16_t { + Pause_Laser = 1, + Pause = 2, + Stop_Confirm = 3 + }; + + // 100C + enum class CheckOKCommand : uint16_t { + ContinueStop_Continue = 1, + FilamentRunout_Yes = 2, + FilamentLoad_Yes = 3, + SDCardCheck_Yes = 4, + }; + + // 1030 + enum class PresetControlCommand : uint16_t { + Show_Settings_PLA_Settings = 3, + Show_Settings_ABS_Settings = 4, + Apply_PLA_Settings = 5, + Apply_ABS_Settings = 6, + Show_Ready_Manual = 8, + }; + + // 1032 + enum class TemperatureControlCommand : uint16_t { + Cooldown = 1, + Exit_Temperature_Preset_And_Discard_Temperature = 2 + }; + + // 103E + enum class SettingsMenuCommand : uint16_t { + Show_Settings_Device_Language = 1, + Show_Settings_Advanced = 2, + Show_Ready_Jog = 3, + Show_Settings_About = 5, + DisableStepperMotors = 6, + Reset_All_Settings = 7, + Show_Settings_Device_and_Save_Temperatures = 8, + FactoryReset_Validate = 11, + FactoryReset_Cancel = 14, + Exit_Settings_Tramming = 15, + Exit_Settings_Leveling = 16, + Show_Settings_Device_and_Discard_Temperatures = 17 + }; + + // 1044 + enum class LevelingCommand : uint16_t { + Show_Settings_Leveling = 1, + Show_AuxLeveling = 4, + Goto_Center = 5, + Goto_LF = 6, + Goto_RF = 7, + Goto_RB = 8, + Goto_LB = 9, + Show_AutoLeveling = 10, + }; + + // 1046 + enum class AxisControlCommand : uint16_t { + Jog_10mm = 1, + Jog_1mm = 2, + Jog_0_1mm = 3, + Home_XY = 4, + Home_Z = 5, + }; + + // 1056 + enum class FilamentIoCommand : uint16_t { + FilamentCheck_Yes = 1, + FilamentCheck_No = 2, + Show_Ready_IO = 3 + }; + + // 105F + enum class PowerLossCommand : uint16_t { + PowerLoss_Continue = 1, + PowerLoss_No = 2 + }; + + // 1098 + enum class AdvancedSettingsCommand : uint16_t { + Show_AdvSettings_Movement = 4, + Show_AdvSettings_PID = 5, + Show_AdvSettings_Movement_StepsPerMm = 7, + Show_AdvSettings_Movement_Acceleration = 8, + Show_AdvSettings_Movement_Jerk = 9, + Show_AdvSettings_Movement_MaxFeedrate = 10, + Exit_AdvSettings_Movement_Submenu = 12, + Show_AdvSettings = 13, + }; + + // 2198 + enum class FilelistControlCommand : uint16_t { + Start_Print = 1, + F1_Down = 2, + F1_Up = 3, + F2_Down = 4, + F2_Up = F1_Up, + F3_Down = 6, + F3_Up = 5, + F4_Down = 8, + F4_Up = 7, + Begin = 9, + End = 10 + }; + + // 2198 + enum class LaserControlCommand : uint16_t { + Mode_FDM = 1, + Mode_Cutter = 2, + Mode_FDM_Confirm = 3, + Mode_FDM_Cancel = 4, + Mode_Cutter_Confirm = 5, + Mode_Cutter_Cancel = 6, + Mode_Change = 0xB + }; +}; diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Screen.h b/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Screen.h new file mode 100644 index 0000000000..8e890aa14f --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/config/DGUS_Screen.h @@ -0,0 +1,106 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +enum class DGUS_ScreenID : uint8_t { + START = 0, + MAIN, + FILE1, + FILE2, + FILE3, + FILE4, + FILE5, + FILAMENTUSEUP, + FILAMENTLOAD, + FINISH, + PAUSE, + PAUSE_STOP, + RESUME, + CONTINUE_STOP, + ADJUST, + PREPARE, + MOVEAXIS_10, + MOVEAXIS_1, + MOVEAXIS_01, + FEEDRETURN, + CONTROL, + TEMP, + PLA_TEMP, + ABS_TEMP, + INFORMATION, + LEVELINGMODE, + LEVELING, + POWERCONTINUE, + LANGUAGE, + KEYBOARD, + KEYBOARD_CONFIRM, + THERMAL_RUNAWAY, + LEVEL_OFFSET, + CONTROL_DEVICE, + MOTION, + MAX_FEEDRATE, + ACCELERATION, + JERK, + STEPSMM, + PIDCONTROL, + AUTOHOME, + ABNORMAL, + WIFI_CONFIRM, + FACTORYRESET_CONFIRM, + SHUTDOWN, + SMOKE_ALARM, + FILAMENTCHECK, + SDCARDCHECK, + LASER_FDM, + MAIN_LASER, + _52_FILE1, + _53_FILE2, + _54_FILE3, + _55_FILE4, + SW_LASER_TIPS, + SW_FDM_TIPS, + STOP_CONFIRM, + PAUSE_LASER, + FINISH_LASER, + RESUME_LASER, + PAUSE_CONFIRM, + FOCUS, + DEVICE_LASER, + LANGE, + LASER_INFORMATION, + ACCEL_LASER, + JERK_SPEED_LASER, + MAX_SPEED_LASER, + AXIS_MOVE_10, + AXIS_MOVE_1, + AXIS_MOVE_01, + ADJUST_LASER, + ENGRAVE_TIPS, + RATIO, + SW_FOCUS, + AXIS_ADJUST_10, + AXIS_ADJUST_1, + AXIS_ADJUST_01, + + BOOT = START, + HOME = MAIN +}; diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenAddrList.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenAddrList.cpp new file mode 100644 index 0000000000..00083ced8c --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenAddrList.cpp @@ -0,0 +1,505 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../../../inc/MarlinConfigPre.h" + +#if ENABLED(DGUS_LCD_UI_E3S1PRO) + +#include "DGUS_ScreenAddrList.h" + +#include "../../ui_api.h" + +constexpr DGUS_Addr LIST_BOOT[] PROGMEM = { + DGUS_Addr::BOOT_Logo, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_HOME[] PROGMEM = { + DGUS_Addr::MAIN_PrintSpeedPercentage, + DGUS_Addr::MAIN_Icon_Percentage, + DGUS_Addr::MAIN_ElapsedHours, + DGUS_Addr::MAIN_ElapsedMinutes, + DGUS_Addr::MAIN_PrintPercentage, + DGUS_Addr::MAIN_ZOffset, + DGUS_Addr::MAIN_ExtruderTargetTemp, + DGUS_Addr::MAIN_ExtruderCurrentTemp, + DGUS_Addr::MAIN_BedTargetTemp, + DGUS_Addr::MAIN_BedCurrentTemp, + DGUS_Addr::MAIN_RemainingHours, + DGUS_Addr::MAIN_RemainingMinutes, + DGUS_Addr::MAIN_StatusMessage, + DGUS_Addr::MENU_Icon_Home_S, + DGUS_Addr::MENU_Icon_Print, + DGUS_Addr::MENU_Icon_Ready, + DGUS_Addr::MENU_Icon_Settings, + DGUS_Addr::FINISH_Icon_Finished, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_PRINTING[] PROGMEM = { + DGUS_Addr::MAIN_PrintSpeedPercentage, + DGUS_Addr::MAIN_Icon_Percentage, + DGUS_Addr::MAIN_ElapsedHours, + DGUS_Addr::MAIN_ElapsedMinutes, + DGUS_Addr::MAIN_PrintPercentage, + DGUS_Addr::MAIN_ZOffset, + DGUS_Addr::MAIN_ExtruderTargetTemp, + DGUS_Addr::MAIN_ExtruderCurrentTemp, + DGUS_Addr::MAIN_BedTargetTemp, + DGUS_Addr::MAIN_BedCurrentTemp, + DGUS_Addr::MAIN_RemainingHours, + DGUS_Addr::MAIN_RemainingMinutes, + DGUS_Addr::MAIN_StatusMessage, + DGUS_Addr::MENU_Icon_Home, + DGUS_Addr::MENU_Icon_Print_S, + DGUS_Addr::MENU_Icon_Ready, + DGUS_Addr::MENU_Icon_Settings, + DGUS_Addr::FINISH_Icon_Finished, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_RUNOUT[] PROGMEM = { + DGUS_Addr::RESET_Icon_Yes, + DGUS_Addr::RUNOUT_Icon_Stop, + DGUS_Addr::RUNOUT_Icon_Message, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_FILAMENTLOAD[] PROGMEM = { + DGUS_Addr::LOAD_Icon_Continue, + DGUS_Addr::RESET_Icon_No, + DGUS_Addr::LOAD_Icon_Message, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_PAUSE_STOP[] PROGMEM = { + DGUS_Addr::RESET_Icon_Yes, + DGUS_Addr::RESET_Icon_No, + DGUS_Addr::PAUSE_Icon_Message, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_CONTINUE_STOP[] PROGMEM = { + DGUS_Addr::RESET_Icon_Yes, + DGUS_Addr::RESET_Icon_No, + DGUS_Addr::RESUME_Icon_Message, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_MOVEAXIS[] PROGMEM = { + DGUS_Addr::AXIS_StepperStatus, + DGUS_Addr::AXIS_X, + DGUS_Addr::AXIS_Y, + DGUS_Addr::AXIS_Z, + DGUS_Addr::MENU_Icon_Home, + DGUS_Addr::MENU_Icon_Print_S, + DGUS_Addr::MENU_Icon_Ready_S, + DGUS_Addr::MENU_Icon_Settings, + DGUS_Addr::AXIS_Icon_MoveAxis, + DGUS_Addr::AXIS_Icon_IO, + DGUS_Addr::AXIS_Icon_Manual, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_IO[] PROGMEM = { + DGUS_Addr::AXIS_Icon_MoveAxis, + DGUS_Addr::AXIS_Icon_IO, + DGUS_Addr::AXIS_Icon_Manual, + DGUS_Addr::MAIN_ExtruderTargetTemp, + DGUS_Addr::MAIN_ExtruderCurrentTemp, + DGUS_Addr::MENU_Icon_Home, + DGUS_Addr::MENU_Icon_Print_S, + DGUS_Addr::MENU_Icon_Ready_S, + DGUS_Addr::MENU_Icon_Settings, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_CONTROL[] PROGMEM = { + DGUS_Addr::AXIS_Icon_MoveAxis, + DGUS_Addr::AXIS_Icon_IO, + DGUS_Addr::AXIS_Icon_Manual, + DGUS_Addr::MAIN_ExtruderTargetTemp, + DGUS_Addr::MAIN_BedTargetTemp, + DGUS_Addr::IO_Icon_ExtruderTemp, + DGUS_Addr::CONTROL_Icon_BedTemp, + DGUS_Addr::AXIS_Icon_IO, // bogus, it's for "PLA temp" icon + DGUS_Addr::AXIS_Icon_Manual, // bogus, it's for "ABS temp" icon + DGUS_Addr::CONTROL_FanSpeed, + DGUS_Addr::ADJUST_Icon_FanControl, + DGUS_Addr::CONTROL_Icon_Cooling, + DGUS_Addr::MENU_Icon_Home, + DGUS_Addr::MENU_Icon_Print_S, + DGUS_Addr::MENU_Icon_Ready_S, + DGUS_Addr::MENU_Icon_Settings, + DGUS_Addr::END +}; + + +constexpr DGUS_Addr LIST_ADJUST[] PROGMEM = { + DGUS_Addr::ADJUST_Icon_Adjust, + DGUS_Addr::IO_Icon_ExtruderTemp, + DGUS_Addr::CONTROL_Icon_BedTemp, + DGUS_Addr::ADJUST_Icon_Feedrate, + DGUS_Addr::ADJUST_Icon_FanControl, + DGUS_Addr::ADJUST_Icon_ZOffset, + DGUS_Addr::MAIN_ExtruderTargetTemp, + DGUS_Addr::MAIN_BedTargetTemp, + DGUS_Addr::MAIN_PrintSpeedPercentage, + DGUS_Addr::CONTROL_FanSpeed, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_ADJUST_ZOFFSET[] PROGMEM = { + DGUS_Addr::MAIN_ZOffset, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_AUTOHOME[] PROGMEM = { + DGUS_Addr::AUTOHOME_Icon_WaitMessage, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_ABNORMAL[] PROGMEM = { + DGUS_Addr::ABNORMAL_StatusMessage, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_SETTINGS[] PROGMEM = { + DGUS_Addr::MENU_Icon_Home, + DGUS_Addr::MENU_Icon_Print_S, + DGUS_Addr::MENU_Icon_Ready_S, + DGUS_Addr::MENU_Icon_Settings_S, + DGUS_Addr::SETTINGS_Icon_Language, + DGUS_Addr::SETTINGS_Icon_Leveling, + DGUS_Addr::SETTINGS_Icon_Device, + DGUS_Addr::SETTINGS_Icon_Advanced, + DGUS_Addr::SETTINGS_Icon_About, + DGUS_Addr::SETTINGS_Icon_PLA, + DGUS_Addr::SETTINGS_Icon_ABS, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_TEMPERATURE_PRESETS[] PROGMEM = { + DGUS_Addr::SETTINGS_Icon_PLA, + DGUS_Addr::SETTINGS_Icon_ABS, + DGUS_Addr::IO_Icon_ExtruderTemp, + DGUS_Addr::CONTROL_Icon_BedTemp, + DGUS_Addr::TEMP_PLA_ExtruderTemp, + DGUS_Addr::TEMP_PLA_BedTemp, + DGUS_Addr::TEMP_ABS_ExtruderTemp, + DGUS_Addr::TEMP_ABS_BedTemp, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_TRAMMING[] PROGMEM = { + DGUS_Addr::LEVELING_Icon_Leveling, + DGUS_Addr::LEVELING_Icon_AutoLevel, + DGUS_Addr::LEVELING_Icon_AuxLevel_S, + DGUS_Addr::MAIN_ZOffset, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_AUTOLEVEL[] PROGMEM = { + DGUS_Addr::LEVELING_Icon_Start, + DGUS_Addr::LEVELING_Icon_Leveling, + DGUS_Addr::LEVELING_Icon_AutoLevel_S, + DGUS_Addr::LEVELING_Icon_AuxLevel, + DGUS_Addr::LEVELING_Progress_Icon, + DGUS_Addr::LEVELING_Progress, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_POWERLOSS[] PROGMEM = { + DGUS_Addr::POWERLOSS_Icon_Message, + DGUS_Addr::LOAD_Icon_Continue, + DGUS_Addr::RESET_Icon_No, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_LANGUAGE[] PROGMEM = { + DGUS_Addr::LANGUAGE_Icon_Language, + DGUS_Addr::LANGUAGE_Icon_Chinese, + DGUS_Addr::LANGUAGE_Icon_English, + DGUS_Addr::LANGUAGE_Icon_German, + DGUS_Addr::LANGUAGE_Icon_Spanish, + DGUS_Addr::LANGUAGE_Icon_French, + DGUS_Addr::LANGUAGE_Icon_Italian, + DGUS_Addr::LANGUAGE_Icon_Portuguese, + DGUS_Addr::LANGUAGE_Icon_Russian, + DGUS_Addr::LANGUAGE_Icon_Turkish, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_INFO[] PROGMEM = { + DGUS_Addr::MENU_Icon_Home, + DGUS_Addr::MENU_Icon_Print_S, + DGUS_Addr::MENU_Icon_Ready_S, + DGUS_Addr::MENU_Icon_Settings_S, + DGUS_Addr::INFO_Icon_Device, + DGUS_Addr::SETTINGS_Icon_Advanced, + DGUS_Addr::INFO_Icon_About, + DGUS_Addr::INFO_Icon_Model, + DGUS_Addr::INFO_Icon_FW_Version, + DGUS_Addr::INFO_Icon_Screen_Version, + DGUS_Addr::INFO_Icon_HW_Version, + DGUS_Addr::INFO_Icon_Print_Size, + DGUS_Addr::INFO_Icon_Website, + DGUS_Addr::INFO_Model, + DGUS_Addr::INFO_FW_Version, + DGUS_Addr::INFO_Screen_Version, + DGUS_Addr::INFO_HW_Version, + DGUS_Addr::INFO_Print_Size, + DGUS_Addr::INFO_Website, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_ADV_SETTINGS[] PROGMEM = { + DGUS_Addr::MENU_Icon_Home, + DGUS_Addr::MENU_Icon_Print_S, + DGUS_Addr::MENU_Icon_Ready_S, + DGUS_Addr::MENU_Icon_Settings_S, + DGUS_Addr::SETTINGS_Icon_Device, + DGUS_Addr::SETTINGS_Icon_Advanced, + DGUS_Addr::INFO_Icon_About, + DGUS_Addr::ADV_Icon_Movement, + DGUS_Addr::ADV_Icon_ResetSettings, + DGUS_Addr::ADV_Icon_PID, + DGUS_Addr::ADV_Icon_SwitchToLaser, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_MOTION[] PROGMEM = { + DGUS_Addr::ADV_Icon_MotionSettings, + DGUS_Addr::ADV_Icon_MaxFeedrate, + DGUS_Addr::ADV_Icon_Acceleration, + DGUS_Addr::ADV_Icon_Jerk, + DGUS_Addr::ADV_Icon_StepsPerMm, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_MAX_FEEDRATE[] PROGMEM = { + DGUS_Addr::ADV_Icon_MaxSpeed, + DGUS_Addr::ADV_Icon_MaxSpeed_X, + DGUS_Addr::ADV_Icon_MaxSpeed_Y, + DGUS_Addr::ADV_Icon_MaxSpeed_Z, + DGUS_Addr::ADV_Icon_MaxSpeed_E, + DGUS_Addr::MOTION_MaxSpeed_X, + DGUS_Addr::MOTION_MaxSpeed_Y, + DGUS_Addr::MOTION_MaxSpeed_Z, + DGUS_Addr::MOTION_MaxSpeed_E, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_ACCELERATION[] PROGMEM = { + DGUS_Addr::ADV_Icon_AccelerationMenu, + DGUS_Addr::ADV_Icon_Acceleration_X, + DGUS_Addr::ADV_Icon_Acceleration_Y, + DGUS_Addr::ADV_Icon_Acceleration_Z, + DGUS_Addr::ADV_Icon_Acceleration_E, + DGUS_Addr::MOTION_Acceleration_X, + DGUS_Addr::MOTION_Acceleration_Y, + DGUS_Addr::MOTION_Acceleration_Z, + DGUS_Addr::MOTION_Acceleration_E, + + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_JERK[] PROGMEM = { + DGUS_Addr::ADV_Icon_MaxJerkMenu, + DGUS_Addr::ADV_Icon_MaxJerk_X, + DGUS_Addr::ADV_Icon_MaxJerk_Y, + DGUS_Addr::ADV_Icon_MaxJerk_Z, + DGUS_Addr::ADV_Icon_MaxJerk_E, + DGUS_Addr::MOTION_MaxJerk_X, + DGUS_Addr::MOTION_MaxJerk_Y, + DGUS_Addr::MOTION_MaxJerk_Z, + DGUS_Addr::MOTION_MaxJerk_E, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_STEPSMM[] PROGMEM = { + DGUS_Addr::ADV_Icon_StepsPerMmMenu, + DGUS_Addr::ADV_Icon_StepsPerMm_X, + DGUS_Addr::ADV_Icon_StepsPerMm_Y, + DGUS_Addr::ADV_Icon_StepsPerMm_Z, + DGUS_Addr::ADV_Icon_StepsPerMm_E, + DGUS_Addr::MOTION_StepsPerMm_X, + DGUS_Addr::MOTION_StepsPerMm_Y, + DGUS_Addr::MOTION_StepsPerMm_Z, + DGUS_Addr::MOTION_StepsPerMm_E, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_PIDCONTROL[] PROGMEM = { + DGUS_Addr::PID_Icon_PIDMenu, + DGUS_Addr::PID_Icon_Extruder_P, + DGUS_Addr::PID_Icon_Extruder_I, + DGUS_Addr::PID_Icon_Extruder_D, + DGUS_Addr::PID_Icon_Bed_P, + DGUS_Addr::PID_Icon_Bed_I, + DGUS_Addr::PID_Icon_Bed_D, + DGUS_Addr::PID_Extruder_P, + DGUS_Addr::PID_Extruder_I, + DGUS_Addr::PID_Extruder_D, + DGUS_Addr::PID_Bed_P, + DGUS_Addr::PID_Bed_I, + DGUS_Addr::PID_Bed_D, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_RESET_CONFIRM[] PROGMEM = { + DGUS_Addr::RESET_Icon_InfoMessage, + DGUS_Addr::RESET_Icon_Yes, + DGUS_Addr::RESET_Icon_No, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_FILAMENTCHECK[] PROGMEM = { + DGUS_Addr::FILAMENT_Icon_Inserted, + DGUS_Addr::RESET_Icon_Yes, + DGUS_Addr::RESET_Icon_No, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_SDCARDCHECK[] PROGMEM = { + DGUS_Addr::RESET_Icon_Yes, + DGUS_Addr::RESET_Icon_No, + DGUS_Addr::SDCard_InsertionStatus, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_PRINTMODE[] PROGMEM = { + DGUS_Addr::PRTMODE_Icon_Message, + DGUS_Addr::PRTMODE_Icon_FDM, + DGUS_Addr::PRTMODE_Icon_Cutter, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_PRINTMODE_CONFIRM[] PROGMEM = { + DGUS_Addr::CUTTER_Icon_Message, + DGUS_Addr::FDM_Icon_Message, + DGUS_Addr::RESET_Icon_Yes, + DGUS_Addr::RESET_Icon_No, + DGUS_Addr::END +}; + +constexpr DGUS_Addr LIST_SDCARD[] PROGMEM = { + DGUS_Addr::MENU_Icon_Home_S, + DGUS_Addr::MENU_Icon_Print_S, + DGUS_Addr::MENU_Icon_Ready, + DGUS_Addr::MENU_Icon_Settings, + DGUS_Addr::SDCARD_Filename1, + DGUS_Addr::SDCARD_Filename2, + DGUS_Addr::SDCARD_Filename3, + DGUS_Addr::SDCARD_Filename4, + DGUS_Addr::SDCARD_Filename5, + DGUS_Addr::SDCARD_Filename6, + DGUS_Addr::SDCARD_Filename7, + DGUS_Addr::SDCARD_Filename8, + DGUS_Addr::SDCARD_Filename9, + DGUS_Addr::SDCARD_Filename10, + DGUS_Addr::SDCARD_Filename11, + DGUS_Addr::SDCARD_Filename12, + DGUS_Addr::SDCARD_Filename13, + DGUS_Addr::SDCARD_Filename14, + DGUS_Addr::SDCARD_Filename15, + DGUS_Addr::SDCARD_Filename16, + DGUS_Addr::SDCARD_Filename17, + DGUS_Addr::SDCARD_Filename18, + DGUS_Addr::SDCARD_Filename19, + DGUS_Addr::SDCARD_Filename20, + DGUS_Addr::SDCARD_Selection_File1, + DGUS_Addr::SDCARD_Selection_File2, + DGUS_Addr::SDCARD_Selection_File3, + DGUS_Addr::SDCARD_Selection_File4, + DGUS_Addr::SDCARD_Selection_File5, + DGUS_Addr::SDCARD_Selection_File6, + DGUS_Addr::SDCARD_Selection_File7, + DGUS_Addr::SDCARD_Selection_File8, + DGUS_Addr::SDCARD_Selection_File9, + DGUS_Addr::SDCARD_Selection_File10, + DGUS_Addr::SDCARD_Selection_File11, + DGUS_Addr::SDCARD_Selection_File12, + DGUS_Addr::SDCARD_Selection_File13, + DGUS_Addr::SDCARD_Selection_File14, + DGUS_Addr::SDCARD_Selection_File15, + DGUS_Addr::SDCARD_Selection_File16, + DGUS_Addr::SDCARD_Selection_File17, + DGUS_Addr::SDCARD_Selection_File18, + DGUS_Addr::SDCARD_Selection_File19, + DGUS_Addr::SDCARD_Selection_File20, + DGUS_Addr::END +}; + +#define MAP_HELPER(SCREEN, LIST) \ + { .screen = SCREEN, \ + .addr_list = LIST } + +const struct DGUS_ScreenAddrList screen_addr_list_map[] PROGMEM = { + MAP_HELPER(DGUS_ScreenID::BOOT, LIST_BOOT), + MAP_HELPER(DGUS_ScreenID::HOME, LIST_HOME), + MAP_HELPER(DGUS_ScreenID::FILE1, LIST_SDCARD), + MAP_HELPER(DGUS_ScreenID::FILE2, LIST_SDCARD), + MAP_HELPER(DGUS_ScreenID::FILE3, LIST_SDCARD), + MAP_HELPER(DGUS_ScreenID::FILE4, LIST_SDCARD), + MAP_HELPER(DGUS_ScreenID::FILAMENTUSEUP, LIST_RUNOUT), + MAP_HELPER(DGUS_ScreenID::FILAMENTLOAD, LIST_FILAMENTLOAD), + MAP_HELPER(DGUS_ScreenID::FINISH, LIST_PRINTING), + MAP_HELPER(DGUS_ScreenID::PAUSE, LIST_PRINTING), + MAP_HELPER(DGUS_ScreenID::PAUSE_STOP, LIST_PAUSE_STOP), + MAP_HELPER(DGUS_ScreenID::RESUME, LIST_PRINTING), + MAP_HELPER(DGUS_ScreenID::CONTINUE_STOP, LIST_CONTINUE_STOP), + MAP_HELPER(DGUS_ScreenID::ADJUST, LIST_ADJUST), + MAP_HELPER(DGUS_ScreenID::PREPARE, LIST_ADJUST_ZOFFSET), + MAP_HELPER(DGUS_ScreenID::MOVEAXIS_01, LIST_MOVEAXIS), + MAP_HELPER(DGUS_ScreenID::MOVEAXIS_1, LIST_MOVEAXIS), + MAP_HELPER(DGUS_ScreenID::MOVEAXIS_10, LIST_MOVEAXIS), + MAP_HELPER(DGUS_ScreenID::FEEDRETURN, LIST_IO), + MAP_HELPER(DGUS_ScreenID::CONTROL, LIST_CONTROL), + MAP_HELPER(DGUS_ScreenID::TEMP, LIST_SETTINGS), + MAP_HELPER(DGUS_ScreenID::PLA_TEMP, LIST_TEMPERATURE_PRESETS), + MAP_HELPER(DGUS_ScreenID::ABS_TEMP, LIST_TEMPERATURE_PRESETS), + MAP_HELPER(DGUS_ScreenID::AUTOHOME, LIST_AUTOHOME), + MAP_HELPER(DGUS_ScreenID::ABNORMAL, LIST_ABNORMAL), + MAP_HELPER(DGUS_ScreenID::LEVELINGMODE, LIST_TRAMMING), + MAP_HELPER(DGUS_ScreenID::LEVELING, LIST_AUTOLEVEL), + MAP_HELPER(DGUS_ScreenID::POWERCONTINUE, LIST_POWERLOSS), + MAP_HELPER(DGUS_ScreenID::LANGUAGE, LIST_LANGUAGE), + MAP_HELPER(DGUS_ScreenID::INFORMATION, LIST_INFO), + MAP_HELPER(DGUS_ScreenID::CONTROL_DEVICE, LIST_ADV_SETTINGS), + MAP_HELPER(DGUS_ScreenID::MOTION, LIST_MOTION), + MAP_HELPER(DGUS_ScreenID::MAX_FEEDRATE, LIST_MAX_FEEDRATE), + MAP_HELPER(DGUS_ScreenID::ACCELERATION, LIST_ACCELERATION), + MAP_HELPER(DGUS_ScreenID::JERK, LIST_JERK), + MAP_HELPER(DGUS_ScreenID::STEPSMM, LIST_STEPSMM), + MAP_HELPER(DGUS_ScreenID::PIDCONTROL, LIST_PIDCONTROL), + MAP_HELPER(DGUS_ScreenID::FACTORYRESET_CONFIRM, LIST_RESET_CONFIRM), + MAP_HELPER(DGUS_ScreenID::FILAMENTCHECK, LIST_FILAMENTCHECK), + MAP_HELPER(DGUS_ScreenID::SDCARDCHECK, LIST_SDCARDCHECK), + MAP_HELPER(DGUS_ScreenID::LASER_FDM, LIST_PRINTMODE), + MAP_HELPER(DGUS_ScreenID::SW_LASER_TIPS, LIST_PRINTMODE_CONFIRM), + MAP_HELPER(DGUS_ScreenID::SW_FDM_TIPS, LIST_PRINTMODE_CONFIRM), + + MAP_HELPER((DGUS_ScreenID)0, nullptr) +}; + +#endif // DGUS_LCD_UI_E3S1PRO diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenAddrList.h b/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenAddrList.h new file mode 100644 index 0000000000..b20bab1336 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenAddrList.h @@ -0,0 +1,32 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "../config/DGUS_Screen.h" +#include "../config/DGUS_Addr.h" + +struct DGUS_ScreenAddrList { + DGUS_ScreenID screen; + const DGUS_Addr *addr_list; +}; + +extern const struct DGUS_ScreenAddrList screen_addr_list_map[]; diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenSetup.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenSetup.cpp new file mode 100644 index 0000000000..3e4d191c8d --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenSetup.cpp @@ -0,0 +1,44 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../../../inc/MarlinConfigPre.h" + +#if ENABLED(DGUS_LCD_UI_E3S1PRO) + +#include "DGUS_ScreenSetup.h" +#include "../DGUSSetupHandler.h" + +#include "../../ui_api.h" + +#define SETUP_HELPER(SCREEN, SETUP) \ + { .screen = SCREEN, \ + .setup_fn = SETUP } + +const struct DGUS_ScreenSetup screen_setup_list[] PROGMEM = { + SETUP_HELPER(DGUS_ScreenID::FILE1, &DGUSSetupHandler::sdCardPrepare), + SETUP_HELPER(DGUS_ScreenID::FILE2, &DGUSSetupHandler::sdCardPrepare), + SETUP_HELPER(DGUS_ScreenID::FILE3, &DGUSSetupHandler::sdCardPrepare), + SETUP_HELPER(DGUS_ScreenID::FILE4, &DGUSSetupHandler::sdCardPrepare), + SETUP_HELPER((DGUS_ScreenID)0, nullptr) +}; + +#endif // DGUS_LCD_UI_E3S1PRO diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenSetup.h b/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenSetup.h new file mode 100644 index 0000000000..4321413fd1 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_ScreenSetup.h @@ -0,0 +1,31 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "../config/DGUS_Screen.h" + +struct DGUS_ScreenSetup { + DGUS_ScreenID screen; + bool (*setup_fn)(void); +}; + +extern const struct DGUS_ScreenSetup screen_setup_list[]; diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_VP.h b/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_VP.h new file mode 100644 index 0000000000..60eb9cfae2 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_VP.h @@ -0,0 +1,43 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "../config/DGUS_Addr.h" + +#define VPFLAG_NONE 0 +#define VPFLAG_AUTOUPLOAD (1U << 0) // Upload on every DGUS update +#define VPFLAG_RXSTRING (1U << 1) // Treat the received data as a string (terminated with 0xFFFF) +#define VPFLAG_TXSTRING_AUTOSCROLL (1U << 2) + +#define VP_U16_FROM_EXTRA(N) (*(uint16_t*)N) + +struct DGUS_VP { + DGUS_Addr addr; + uint8_t size; + uint8_t flags; + void *extra; + + // Callback that will be called if the display modified the value. + // nullptr makes it readonly for the display. + void (*rx_handler)(DGUS_VP &, void *); + void (*tx_handler)(DGUS_VP &); +}; diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_VPList.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_VPList.cpp new file mode 100644 index 0000000000..dddc6f889e --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_VPList.cpp @@ -0,0 +1,589 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../../../inc/MarlinConfigPre.h" + +#if ENABLED(DGUS_LCD_UI_E3S1PRO) + +#include "DGUS_VPList.h" + +#include "../config/DGUS_Addr.h" +#include "../DGUSScreenHandler.h" +#include "../DGUSReturnKeyCodeHandler.h" +#include "../DGUSRxHandler.h" +#include "../DGUSTxHandler.h" + +#include "../../ui_api.h" + +const char DGUS_MACHINENAME[] PROGMEM = MACHINE_NAME; +const char DGUS_MARLINVERSION[] PROGMEM = SHORT_BUILD_VERSION; +const char DGUS_BOARD[] PROGMEM = BOARD_INFO_NAME; +const char DGUS_BEDSIZE[] PROGMEM = DGUS_BED_SIZE_STR; +const char DGUS_WEBSITE[] PROGMEM = "http://marlinfw.org"; +const uint16_t DGUS_ZERO = 0; + +#define VP_HELPER(ADDR, SIZE, FLAGS, EXTRA, RXHANDLER, TXHANDLER) \ + { .addr = ADDR, \ + .size = SIZE, \ + .flags = FLAGS, \ + .extra = EXTRA, \ + .rx_handler = RXHANDLER, \ + .tx_handler = TXHANDLER } + +#define VP_HELPER_WORD(ADDR, FLAGS, EXTRA, RXHANDLER, TXHANDLER) \ + VP_HELPER(ADDR, 2, FLAGS, EXTRA, RXHANDLER, TXHANDLER) + +#define VP_HELPER_DWORD(ADDR, FLAGS, EXTRA, RXHANDLER, TXHANDLER) \ + VP_HELPER(ADDR, 4, FLAGS, EXTRA, RXHANDLER, TXHANDLER) + +#define VP_HELPER_RX(ADDR, RXHANDLER) \ + VP_HELPER_WORD(ADDR, VPFLAG_NONE, nullptr, RXHANDLER, nullptr) + +#define VP_HELPER_RX_EXTRA(ADDR, EXTRA, RXHANDLER) \ + VP_HELPER_WORD(ADDR, VPFLAG_NONE, EXTRA, RXHANDLER, nullptr) + +#define VP_HELPER_RX_NODATA(ADDR, RXHANDLER) \ + VP_HELPER(ADDR, 0, VPFLAG_NONE, nullptr, RXHANDLER, nullptr) + +#define VP_HELPER_TX(ADDR, TXHANDLER) \ + VP_HELPER_WORD(ADDR, VPFLAG_NONE, nullptr, nullptr, TXHANDLER) + +#define VP_HELPER_TX_SIZE(ADDR, SIZE, TXHANDLER) \ + VP_HELPER(ADDR, SIZE, VPFLAG_NONE, nullptr, nullptr, TXHANDLER) + +#define VP_HELPER_TX_EXTRA(ADDR, EXTRA, TXHANDLER) \ + VP_HELPER_WORD(ADDR, VPFLAG_NONE, EXTRA, nullptr, TXHANDLER) + +#define VP_HELPER_TX_AUTO(ADDR, EXTRA, TXHANDLER) \ + VP_HELPER_WORD(ADDR, VPFLAG_AUTOUPLOAD, EXTRA, nullptr, TXHANDLER) + +#define VP_HELPER_LANG_ICON(ADDR) \ + VP_HELPER_TX_EXTRA(ADDR, &screen.config.language, (&DGUSTxHandler::extraToInteger)) + +#define VP_HELPER_FILENAME(ADDR, filenameIndex) \ + VP_HELPER(ADDR, DGUS_FILENAME_LEN, VPFLAG_TXSTRING_AUTOSCROLL, \ + VP_EXTRA_TO_STR(DGUS_SDCardHandler::filenames[filenameIndex]), \ + nullptr, DGUSTxHandler::extraToString) + +const struct DGUS_VP vp_list[] PROGMEM = { + VP_HELPER_TX_AUTO( DGUS_Addr::BOOT_Logo, + nullptr, + &DGUSTxHandler::bootAnimation), + VP_HELPER_RX( DGUS_Addr::CMD_MenuSelect, + &DGUSReturnKeyCodeHandler::Command_MenuSelect), + VP_HELPER_RX( DGUS_Addr::CMD_Adjust, + &DGUSReturnKeyCodeHandler::Command_Adjust), + VP_HELPER_WORD( DGUS_Addr::MAIN_PrintSpeedPercentage, + VPFLAG_AUTOUPLOAD, + nullptr, + &DGUSRxHandler::printSpeedPercentage, + &DGUSTxHandler::printSpeedPercentage), + VP_HELPER_RX( DGUS_Addr::CMD_CheckKO, + &DGUSReturnKeyCodeHandler::Command_CheckKO), + VP_HELPER_RX( DGUS_Addr::CMD_StopPause, + &DGUSReturnKeyCodeHandler::Command_StopPause), + VP_HELPER_RX( DGUS_Addr::CMD_CheckOK, + &DGUSReturnKeyCodeHandler::Command_CheckOK), + VP_HELPER_TX_AUTO( DGUS_Addr::MAIN_Icon_Percentage, nullptr, + &DGUSTxHandler::printPercentage), + VP_HELPER_TX_AUTO( DGUS_Addr::MAIN_ElapsedHours, + nullptr, + &DGUSTxHandler::elapsedHours), + VP_HELPER_TX_AUTO( DGUS_Addr::MAIN_ElapsedMinutes, + nullptr, + &DGUSTxHandler::elapsedMinutes), + VP_HELPER_TX_AUTO( DGUS_Addr::MAIN_PrintPercentage, + nullptr, + &DGUSTxHandler::printPercentage), + VP_HELPER_WORD( DGUS_Addr::MAIN_ZOffset, + VPFLAG_AUTOUPLOAD, + nullptr, + &DGUSRxHandler::zOffset, + &DGUSTxHandler::zOffset), + VP_HELPER_RX( DGUS_Addr::CMD_PresetControl, + &DGUSReturnKeyCodeHandler::Command_PresetControl), + VP_HELPER_RX( DGUS_Addr::CMD_TemperatureControl, + &DGUSReturnKeyCodeHandler::Control_TemperatureCommand), + VP_HELPER_WORD( DGUS_Addr::MAIN_ExtruderTargetTemp, + VPFLAG_AUTOUPLOAD, + nullptr, + &DGUSRxHandler::extruderTargetTemp, + &DGUSTxHandler::extruderTargetTemp), + VP_HELPER_TX_AUTO( DGUS_Addr::MAIN_ExtruderCurrentTemp, + nullptr, + &DGUSTxHandler::extruderCurrentTemp), + VP_HELPER_WORD( DGUS_Addr::MAIN_BedTargetTemp, + VPFLAG_AUTOUPLOAD, + nullptr, + &DGUSRxHandler::bedTargetTemp, + &DGUSTxHandler::bedTargetTemp), + VP_HELPER_TX_AUTO( DGUS_Addr::MAIN_BedCurrentTemp, + nullptr, + &DGUSTxHandler::bedCurrentTemp), + VP_HELPER_RX( DGUS_Addr::CMD_SettingsMenu, + &DGUSReturnKeyCodeHandler::Command_SettingsMenu), + VP_HELPER_RX( DGUS_Addr::CMD_Leveling, + &DGUSReturnKeyCodeHandler::Command_Leveling), + VP_HELPER_RX( DGUS_Addr::CMD_AxisControl, + &DGUSReturnKeyCodeHandler::Command_AxisControl), + VP_HELPER_WORD( DGUS_Addr::AXIS_X, + VPFLAG_AUTOUPLOAD, + nullptr, + &DGUSRxHandler::axis_X, + &DGUSTxHandler::axis_X), + VP_HELPER_WORD( DGUS_Addr::AXIS_Y, + VPFLAG_AUTOUPLOAD, + nullptr, + &DGUSRxHandler::axis_Y, + &DGUSTxHandler::axis_Y), + VP_HELPER_WORD( DGUS_Addr::AXIS_Z, + VPFLAG_AUTOUPLOAD, + nullptr, + &DGUSRxHandler::axis_Z, + &DGUSTxHandler::axis_Z), + VP_HELPER_RX( DGUS_Addr::IO_ExtrudeLength, + &DGUSRxHandler::extrudeLength), + VP_HELPER_RX( DGUS_Addr::IO_RetractLength, + &DGUSRxHandler::retractLength), + VP_HELPER_RX( DGUS_Addr::CMD_AxisIO, + &DGUSReturnKeyCodeHandler::Command_FilamentIO), + VP_HELPER_RX( DGUS_Addr::LANGUAGE_SetLanguage, + &DGUSRxHandler::setLanguage), + VP_HELPER_RX( DGUS_Addr::CMD_PowerLoss, + &DGUSReturnKeyCodeHandler::Command_PowerLoss), + VP_HELPER_TX( DGUS_Addr::LEVELING_Progress_Icon, + &DGUSTxHandler::levelingProgressIcon), + #if HAS_FILAMENT_SENSOR + VP_HELPER_TX_AUTO( DGUS_Addr::FILAMENT_Icon_Inserted, + nullptr, + &DGUSTxHandler::filamentInsertionStatus), + #endif + VP_HELPER_WORD( DGUS_Addr::TEMP_PLA_ExtruderTemp, + VPFLAG_NONE, + &screen.config.plaExtruderTemp, + &DGUSRxHandler::integerToExtra, + &DGUSTxHandler::extraToInteger), + VP_HELPER_WORD( DGUS_Addr::TEMP_PLA_BedTemp, + VPFLAG_NONE, + &screen.config.plaBedTemp, + &DGUSRxHandler::integerToExtra, + &DGUSTxHandler::extraToInteger), + VP_HELPER_WORD( DGUS_Addr::TEMP_ABS_ExtruderTemp, + VPFLAG_NONE, + &screen.config.absExtruderTemp, + &DGUSRxHandler::integerToExtra, + &DGUSTxHandler::extraToInteger), + VP_HELPER_WORD( DGUS_Addr::TEMP_ABS_BedTemp, + VPFLAG_NONE, + &screen.config.absBedTemp, + &DGUSRxHandler::integerToExtra, + &DGUSTxHandler::extraToInteger), + VP_HELPER_RX( DGUS_Addr::CMD_AdvancedSettings, + &DGUSReturnKeyCodeHandler::Command_AdvancedSettings), + VP_HELPER_TX( DGUS_Addr::LEVELING_Progress, + &DGUSTxHandler::levelingProgress), + VP_HELPER_WORD( DGUS_Addr::MOTION_MaxSpeed_X, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::maxFeedrate), + (&DGUSTxHandler::maxFeedrate)), + VP_HELPER_WORD( DGUS_Addr::MOTION_MaxSpeed_Y, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::maxFeedrate), + (&DGUSTxHandler::maxFeedrate)), + VP_HELPER_WORD( DGUS_Addr::MOTION_MaxSpeed_Z, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::maxFeedrate), + (&DGUSTxHandler::maxFeedrate)), + VP_HELPER_WORD( DGUS_Addr::MOTION_MaxSpeed_E, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::maxFeedrate), + (&DGUSTxHandler::maxFeedrate)), + VP_HELPER_WORD( DGUS_Addr::MOTION_Acceleration_X, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::maxAcceleration), + (&DGUSTxHandler::maxAcceleration)), + VP_HELPER_WORD( DGUS_Addr::MOTION_Acceleration_Y, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::maxAcceleration), + (&DGUSTxHandler::maxAcceleration)), + VP_HELPER_WORD( DGUS_Addr::MOTION_Acceleration_Z, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::maxAcceleration), + (&DGUSTxHandler::maxAcceleration)), + VP_HELPER_WORD( DGUS_Addr::MOTION_Acceleration_E, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::maxAcceleration), + (&DGUSTxHandler::maxAcceleration)), + VP_HELPER_WORD( DGUS_Addr::MOTION_MaxJerk_X, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::maxJerk), + (&DGUSTxHandler::maxJerk)), + VP_HELPER_WORD( DGUS_Addr::MOTION_MaxJerk_Y, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::maxJerk), + (&DGUSTxHandler::maxJerk)), + VP_HELPER_WORD( DGUS_Addr::MOTION_MaxJerk_Z, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::maxJerk), + (&DGUSTxHandler::maxJerk)), + VP_HELPER_WORD( DGUS_Addr::MOTION_MaxJerk_E, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::maxJerk), + (&DGUSTxHandler::maxJerk)), + VP_HELPER_WORD( DGUS_Addr::MOTION_StepsPerMm_X, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::stepsPerMM), + (&DGUSTxHandler::stepsPerMM)), + VP_HELPER_WORD( DGUS_Addr::MOTION_StepsPerMm_Y, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::stepsPerMM), + (&DGUSTxHandler::stepsPerMM)), + VP_HELPER_WORD( DGUS_Addr::MOTION_StepsPerMm_Z, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::stepsPerMM), + (&DGUSTxHandler::stepsPerMM)), + VP_HELPER_WORD( DGUS_Addr::MOTION_StepsPerMm_E, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::stepsPerMM), + (&DGUSTxHandler::stepsPerMM)), + #if ENABLED(PIDTEMP) + VP_HELPER_WORD( DGUS_Addr::PID_Extruder_P, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::PID_P), + (&DGUSTxHandler::PID_P)), + VP_HELPER_WORD( DGUS_Addr::PID_Extruder_I, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::PID_I), + (&DGUSTxHandler::PID_I)), + VP_HELPER_WORD( DGUS_Addr::PID_Extruder_D, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::PID_D), + (&DGUSTxHandler::PID_D)), + #else + VP_HELPER_WORD( DGUS_Addr::PID_Extruder_P, + VPFLAG_AUTOUPLOAD, + const_cast(&DGUS_ZERO), + DGUSRxHandler::disabled, + (DGUSTxHandler::extraToFixedPoint)), + VP_HELPER_WORD( DGUS_Addr::PID_Extruder_I, + VPFLAG_AUTOUPLOAD, + const_cast(&DGUS_ZERO), + DGUSRxHandler::disabled, + (DGUSTxHandler::extraToFixedPoint)), + VP_HELPER_WORD( DGUS_Addr::PID_Extruder_D, + VPFLAG_AUTOUPLOAD, + const_cast(&DGUS_ZERO), + DGUSRxHandler::disabled, + (DGUSTxHandler::extraToFixedPoint)), + #endif // PIDTEMP + #if ENABLED(PIDTEMPBED) + VP_HELPER_WORD( DGUS_Addr::PID_Bed_P, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::bed_PID_P), + (&DGUSTxHandler::bed_PID_P)), + VP_HELPER_WORD( DGUS_Addr::PID_Bed_I, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::bed_PID_I), + (&DGUSTxHandler::bed_PID_I)), + VP_HELPER_WORD( DGUS_Addr::PID_Bed_D, + VPFLAG_AUTOUPLOAD, + nullptr, + (&DGUSRxHandler::bed_PID_D), + (&DGUSTxHandler::bed_PID_D)), + #else + VP_HELPER_WORD( DGUS_Addr::PID_Bed_P, + VPFLAG_AUTOUPLOAD, + const_cast(&DGUS_ZERO), + DGUSRxHandler::disabled, + (DGUSTxHandler::extraToFixedPoint)), + VP_HELPER_WORD( DGUS_Addr::PID_Bed_I, + VPFLAG_AUTOUPLOAD, + const_cast(&DGUS_ZERO), + DGUSRxHandler::disabled, + (DGUSTxHandler::extraToFixedPoint)), + VP_HELPER_WORD( DGUS_Addr::PID_Bed_D, + VPFLAG_AUTOUPLOAD, + const_cast(&DGUS_ZERO), + DGUSRxHandler::disabled, + (DGUSTxHandler::extraToFixedPoint)), + #endif // PIDTEMPBED + VP_HELPER_WORD( DGUS_Addr::CONTROL_FanSpeed, + VPFLAG_AUTOUPLOAD, + nullptr, + &DGUSRxHandler::fanSpeed, + &DGUSTxHandler::fanSpeed), + VP_HELPER_TX( DGUS_Addr::SDCard_InsertionStatus, + DGUSTxHandler::sdCardInsertionStatus), + VP_HELPER_LANG_ICON(DGUS_Addr::FINISH_Icon_Finished), + VP_HELPER_TX_AUTO( DGUS_Addr::MAIN_RemainingHours, + nullptr, + &DGUSTxHandler::printRemainingHours), + VP_HELPER_TX_AUTO( DGUS_Addr::MAIN_RemainingMinutes, + nullptr, + &DGUSTxHandler::printRemainingMinutes), + VP_HELPER_TX_AUTO( DGUS_Addr::AXIS_StepperStatus, + nullptr, + &DGUSTxHandler::stepperStatus), + VP_HELPER_LANG_ICON(DGUS_Addr::MENU_Icon_Home_S), + VP_HELPER_LANG_ICON(DGUS_Addr::MENU_Icon_Print_S), + VP_HELPER_LANG_ICON(DGUS_Addr::MENU_Icon_Ready_S), + VP_HELPER_LANG_ICON(DGUS_Addr::MENU_Icon_Settings_S), + VP_HELPER_LANG_ICON(DGUS_Addr::MENU_Icon_Home), + VP_HELPER_LANG_ICON(DGUS_Addr::MENU_Icon_Print), + VP_HELPER_LANG_ICON(DGUS_Addr::MENU_Icon_Ready), + VP_HELPER_LANG_ICON(DGUS_Addr::MENU_Icon_Settings), + VP_HELPER_LANG_ICON(DGUS_Addr::ADJUST_Icon_Adjust), + VP_HELPER_LANG_ICON(DGUS_Addr::ADJUST_Icon_Feedrate), + VP_HELPER_LANG_ICON(DGUS_Addr::IO_Icon_ExtruderTemp), + VP_HELPER_LANG_ICON(DGUS_Addr::CONTROL_Icon_BedTemp), + VP_HELPER_LANG_ICON(DGUS_Addr::ADJUST_Icon_ZOffset), + VP_HELPER_LANG_ICON(DGUS_Addr::CONTROL_Icon_FanControl), + VP_HELPER_LANG_ICON(DGUS_Addr::ADJUST_Icon_FanControl), + VP_HELPER_LANG_ICON(DGUS_Addr::AXIS_Icon_MoveAxis), + VP_HELPER_LANG_ICON(DGUS_Addr::AXIS_Icon_IO), + VP_HELPER_LANG_ICON(DGUS_Addr::AXIS_Icon_Manual), + VP_HELPER_LANG_ICON(DGUS_Addr::CONTROL_Icon_Cooling), + VP_HELPER_LANG_ICON(DGUS_Addr::IO_Icon_Extrude), + VP_HELPER_LANG_ICON(DGUS_Addr::IO_Icon_Retract), + VP_HELPER_LANG_ICON(DGUS_Addr::SETTINGS_Icon_Language), + VP_HELPER_LANG_ICON(DGUS_Addr::SETTINGS_Icon_Leveling), + VP_HELPER_LANG_ICON(DGUS_Addr::SETTINGS_Icon_Device), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_ResetSettings), + VP_HELPER_LANG_ICON(DGUS_Addr::INFO_Icon_About), + VP_HELPER_LANG_ICON(DGUS_Addr::INFO_Icon_Device), + VP_HELPER_LANG_ICON(DGUS_Addr::SETTINGS_Icon_Advanced), + VP_HELPER_LANG_ICON(DGUS_Addr::SETTINGS_Icon_About), + VP_HELPER_LANG_ICON(DGUS_Addr::SETTINGS_Icon_PLA), + VP_HELPER_LANG_ICON(DGUS_Addr::SETTINGS_Icon_ABS), + VP_HELPER_LANG_ICON(DGUS_Addr::RUNOUT_Icon_Stop), + VP_HELPER_LANG_ICON(DGUS_Addr::RUNOUT_Icon_Message), + VP_HELPER_LANG_ICON(DGUS_Addr::RESET_Icon_Yes), + VP_HELPER_LANG_ICON(DGUS_Addr::RESET_Icon_No), + VP_HELPER_LANG_ICON(DGUS_Addr::LOAD_Icon_Message), + VP_HELPER_LANG_ICON(DGUS_Addr::LOAD_Icon_Continue), + VP_HELPER_LANG_ICON(DGUS_Addr::PAUSE_Icon_Message), + VP_HELPER_LANG_ICON(DGUS_Addr::RESUME_Icon_Message), + VP_HELPER_LANG_ICON(DGUS_Addr::POWERLOSS_Icon_Message), + VP_HELPER_LANG_ICON(DGUS_Addr::AUTOHOME_Icon_WaitMessage), + VP_HELPER_LANG_ICON(DGUS_Addr::LEVELING_Icon_Leveling), + VP_HELPER_LANG_ICON(DGUS_Addr::LEVELING_Icon_Start), + VP_HELPER_LANG_ICON(DGUS_Addr::LEVELING_Icon_AuxLevel), + VP_HELPER_LANG_ICON(DGUS_Addr::LEVELING_Icon_AutoLevel), + VP_HELPER_LANG_ICON(DGUS_Addr::LEVELING_Icon_AuxLevel_S), + VP_HELPER_LANG_ICON(DGUS_Addr::LEVELING_Icon_AutoLevel_S), + VP_HELPER_LANG_ICON(DGUS_Addr::LANGUAGE_Icon_Language), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_Movement), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_PID), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_MotionSettings), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_MaxFeedrate), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_Acceleration), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_Jerk), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_StepsPerMm), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_MaxSpeed), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_MaxSpeed_X), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_MaxSpeed_Y), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_MaxSpeed_Z), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_MaxSpeed_E), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_AccelerationMenu), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_Acceleration_X), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_Acceleration_Y), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_Acceleration_Z), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_Acceleration_E), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_MaxJerkMenu), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_MaxJerk_X), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_MaxJerk_Y), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_MaxJerk_Z), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_MaxJerk_E), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_StepsPerMmMenu), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_StepsPerMm_X), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_StepsPerMm_Y), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_StepsPerMm_Z), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_StepsPerMm_E), + VP_HELPER_LANG_ICON(DGUS_Addr::PID_Icon_PIDMenu), + VP_HELPER_LANG_ICON(DGUS_Addr::PID_Icon_Extruder_P), + VP_HELPER_LANG_ICON(DGUS_Addr::PID_Icon_Extruder_I), + VP_HELPER_LANG_ICON(DGUS_Addr::PID_Icon_Extruder_D), + VP_HELPER_LANG_ICON(DGUS_Addr::PID_Icon_Bed_P), + VP_HELPER_LANG_ICON(DGUS_Addr::PID_Icon_Bed_I), + VP_HELPER_LANG_ICON(DGUS_Addr::PID_Icon_Bed_D), + VP_HELPER_LANG_ICON(DGUS_Addr::CUTTER_Icon_Message), + VP_HELPER_LANG_ICON(DGUS_Addr::FDM_Icon_Message), + VP_HELPER_LANG_ICON(DGUS_Addr::ADV_Icon_SwitchToLaser), + VP_HELPER_LANG_ICON(DGUS_Addr::PRTMODE_Icon_Message), + VP_HELPER_LANG_ICON(DGUS_Addr::PRTMODE_Icon_FDM), + VP_HELPER_LANG_ICON(DGUS_Addr::PRTMODE_Icon_Cutter), + VP_HELPER_LANG_ICON(DGUS_Addr::INFO_Icon_Model), + VP_HELPER_LANG_ICON(DGUS_Addr::INFO_Icon_FW_Version), + VP_HELPER_LANG_ICON(DGUS_Addr::INFO_Icon_Screen_Version), + VP_HELPER_LANG_ICON(DGUS_Addr::INFO_Icon_HW_Version), + VP_HELPER_LANG_ICON(DGUS_Addr::INFO_Icon_Website), + VP_HELPER_LANG_ICON(DGUS_Addr::INFO_Icon_Print_Size), + VP_HELPER_TX_AUTO( DGUS_Addr::LANGUAGE_Icon_Chinese, + (void*)DGUS_Data::Language::Chinese_Simplified, + &DGUSTxHandler::enableIfLanguageMatchesExtra), + VP_HELPER_TX_AUTO( DGUS_Addr::LANGUAGE_Icon_English, + (void*)DGUS_Data::Language::English, + &DGUSTxHandler::enableIfLanguageMatchesExtra), + VP_HELPER_TX_AUTO( DGUS_Addr::LANGUAGE_Icon_German, + (void*)DGUS_Data::Language::German, + &DGUSTxHandler::enableIfLanguageMatchesExtra), + VP_HELPER_TX_AUTO( DGUS_Addr::LANGUAGE_Icon_Spanish, + (void*)DGUS_Data::Language::Spanish, + &DGUSTxHandler::enableIfLanguageMatchesExtra), + VP_HELPER_TX_AUTO( DGUS_Addr::LANGUAGE_Icon_French, + (void*)DGUS_Data::Language::French, + &DGUSTxHandler::enableIfLanguageMatchesExtra), + VP_HELPER_TX_AUTO( DGUS_Addr::LANGUAGE_Icon_Italian, + (void*)DGUS_Data::Language::Italian, + &DGUSTxHandler::enableIfLanguageMatchesExtra), + VP_HELPER_TX_AUTO( DGUS_Addr::LANGUAGE_Icon_Portuguese, + (void*)DGUS_Data::Language::Portuguese, + &DGUSTxHandler::enableIfLanguageMatchesExtra), + VP_HELPER_TX_AUTO( DGUS_Addr::LANGUAGE_Icon_Russian, + (void*)DGUS_Data::Language::Russian, + &DGUSTxHandler::enableIfLanguageMatchesExtra), + VP_HELPER_TX_AUTO( DGUS_Addr::LANGUAGE_Icon_Turkish, + (void*)DGUS_Data::Language::Turkish, + &DGUSTxHandler::enableIfLanguageMatchesExtra), + + VP_HELPER( DGUS_Addr::INFO_Model, + DGUS_INFOSTRING_LEN, + VPFLAG_TXSTRING_AUTOSCROLL, + VP_EXTRA_TO_STR(DGUS_MACHINENAME), + nullptr, + DGUSTxHandler::extraToString), + VP_HELPER( DGUS_Addr::INFO_FW_Version, + DGUS_INFOSTRING_LEN, + VPFLAG_TXSTRING_AUTOSCROLL, + VP_EXTRA_TO_STR(DGUS_MARLINVERSION), + nullptr, + DGUSTxHandler::extraToString), + //already set in the screen memory: + /* + VP_HELPER(DGUS_Addr::INFO_Screen_Version, + DGUS_INFOSTRING_LEN, + VPFLAG_NONE, + (void*)"", + nullptr, + DGUSTxHandler::extraToString), + */ + VP_HELPER( DGUS_Addr::INFO_HW_Version, + DGUS_INFOSTRING_LEN, + VPFLAG_TXSTRING_AUTOSCROLL, + VP_EXTRA_TO_STR(DGUS_BOARD), + nullptr, + DGUSTxHandler::extraToString), + VP_HELPER( DGUS_Addr::INFO_Print_Size, + DGUS_INFOSTRING_LEN, + VPFLAG_TXSTRING_AUTOSCROLL, + VP_EXTRA_TO_STR(DGUS_BEDSIZE), + nullptr, + DGUSTxHandler::extraToString), + VP_HELPER( DGUS_Addr::INFO_Website, + DGUS_INFOSTRING_LEN, + VPFLAG_TXSTRING_AUTOSCROLL, + VP_EXTRA_TO_STR(DGUS_WEBSITE), + nullptr, + DGUSTxHandler::extraToString), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename1, + 0), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename2, + 1), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename3, + 2), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename4, + 3), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename5, + 4), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename6, + 0), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename7, + 1), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename8, + 2), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename9, + 3), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename10, + 4), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename11, + 0), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename12, + 1), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename13, + 2), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename14, + 3), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename15, + 4), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename16, + 0), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename17, + 1), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename18, + 2), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename19, + 3), + VP_HELPER_FILENAME( DGUS_Addr::SDCARD_Filename20, + 4), + VP_HELPER_RX( DGUS_Addr::CMD_FilelistControl, + &DGUSReturnKeyCodeHandler::Command_FilelistControl), + VP_HELPER_RX( DGUS_Addr::SDCARD_FileSelection, + &DGUSRxHandler::sdCardFileSection), + VP_HELPER( DGUS_Addr::MAIN_StatusMessage, + DGUS_INFOSTRING_LEN, + VPFLAG_TXSTRING_AUTOSCROLL, + VP_EXTRA_TO_STR(screen.homeStatusMessage), + nullptr, + DGUSTxHandler::extraToString), + VP_HELPER( DGUS_Addr::ABNORMAL_StatusMessage, + DGUS_INFOSTRING_LEN, + VPFLAG_TXSTRING_AUTOSCROLL, + VP_EXTRA_TO_STR(screen.homeStatusMessage), + nullptr, + DGUSTxHandler::extraToString), + VP_HELPER_RX( DGUS_Addr::CMD_LaserControl, + &DGUSReturnKeyCodeHandler::Command_LaserControl), + VP_HELPER((DGUS_Addr)0, 0, VPFLAG_NONE, nullptr, nullptr, nullptr) +}; + +#endif // DGUS_LCD_UI_E3S1PRO diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_VPList.h b/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_VPList.h new file mode 100644 index 0000000000..8ca16e924e --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/definition/DGUS_VPList.h @@ -0,0 +1,31 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "DGUS_VP.h" + +#define VP_EXTRA_TO_U16(N) (void*)(uint16_t)(N) +#define VP_U16_FROM_EXTRA(N) (*(uint16_t*)N) + +#define VP_EXTRA_TO_STR(N) (void*)(N) + +extern const struct DGUS_VP vp_list[]; diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp new file mode 100644 index 0000000000..530ce9bcf0 --- /dev/null +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp @@ -0,0 +1,165 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/** + * lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp + */ + +#include "../../../inc/MarlinConfigPre.h" + +#if ENABLED(DGUS_LCD_UI_E3S1PRO) + +#include "../ui_api.h" +#include "DGUSScreenHandler.h" + +#define DEBUG_OUT 1 +#include "../../../core/debug_out.h" + +namespace ExtUI { + + void onStartup() { + screen.init(); + } + + void onIdle() { + static bool processing = false; + + // Prevent recursion + if (!processing) { + processing = true; + screen.loop(); + processing = false; + } + } + + void onPrinterKilled(FSTR_P const error, FSTR_P const component) { + screen.printerKilled(error, component); + } + + void onMediaInserted() { TERN_(HAS_MEDIA, screen.sdCardInserted()); } + void onMediaError() { TERN_(HAS_MEDIA, screen.sdCardError()); } + void onMediaRemoved() { TERN_(HAS_MEDIA, screen.sdCardRemoved()); } + + void onPlayTone(const uint16_t frequency, const uint16_t duration) { + screen.playTone(frequency, duration); + } + + void onPrintTimerStarted() { + screen.printTimerStarted(); + } + + void onPrintTimerPaused() { + screen.printTimerPaused(); + } + + void onPrintTimerStopped() { + screen.printTimerStopped(); + } + + void onFilamentRunout(const extruder_t extruder) { + screen.filamentRunout(extruder); + } + + void onUserConfirmRequired(const char * const msg) { + screen.userConfirmRequired(msg); + } + + void onStatusChanged(const char * const msg) { + screen.setStatusMessage(msg); + } + + void onHomingStart() {} + + void onHomingDone() { + screen.homingDone(); + } + + void onPrintDone() {} + + void onFactoryReset() { + screen.settingsReset(); + } + + void onStoreSettings(char *buff) { + screen.storeSettings(buff); + } + + void onLoadSettings(const char *buff) { + screen.loadSettings(buff); + } + + void onPostprocessSettings() {} + + void onSettingsStored(const bool success) { + screen.configurationStoreWritten(success); + } + + void onSettingsLoaded(const bool success) { + screen.configurationStoreRead(success); + } + + #if HAS_MESH + void onLevelingStart() { + screen.levelingStart(); + } + + void onLevelingDone() { + screen.levelingEnd(); + } + + void onMeshUpdate(const int8_t xpos, const int8_t ypos, const_float_t zval) { + screen.meshUpdate(xpos, ypos); + } + + void onMeshUpdate(const int8_t xpos, const int8_t ypos, const probe_state_t state) { } + #endif + + #if ENABLED(POWER_LOSS_RECOVERY) + void onSetPowerLoss(const bool onoff) { + // Called when power-loss is enabled/disabled + } + void onPowerLoss() { + // Called when power-loss state is detected + } + void onPowerLossResume() { + // Called on resume from power-loss + screen.powerLossResume(); + } + #endif + + #if HAS_PID_HEATING + void onPidTuning(const result_t rst) { + // Called for temperature PID tuning result + screen.pidTuning(rst); + } + #endif + + void onSteppersDisabled() { + screen.steppersStatusChanged(false); + } + + void onSteppersEnabled() { + screen.steppersStatusChanged(true); + } +} + +#endif // DGUS_LCD_UI_RELOADED diff --git a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp index 793a2c1579..76aa3de872 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/DGUSScreenHandler.cpp @@ -80,9 +80,8 @@ void DGUSScreenHandler::ready() { } void DGUSScreenHandler::loop() { - if (!settings_ready || current_screenID == DGUS_ScreenID::KILL) { + if (!settings_ready || current_screenID == DGUS_ScreenID::KILL) return; - } const millis_t ms = ExtUI::safe_millis(); static millis_t next_event_ms = 0; @@ -226,10 +225,8 @@ void DGUSScreenHandler::configurationStoreRead(bool success) { } void DGUSScreenHandler::playTone(const uint16_t frequency, const uint16_t duration) { - UNUSED(duration); - - if (frequency >= 1 && frequency <= 255) { - if (duration >= 1 && duration <= 255) + if (WITHIN(frequency, 1, 255)) { + if (WITHIN(duration, 1, 255)) dgus.playSound((uint8_t)frequency, (uint8_t)duration); else dgus.playSound((uint8_t)frequency); @@ -301,12 +298,10 @@ void DGUSScreenHandler::filamentRunout(const ExtUI::extruder_t extruder) { #endif // HAS_MEDIA #if ENABLED(POWER_LOSS_RECOVERY) - void DGUSScreenHandler::powerLossResume() { moveToScreen(DGUS_ScreenID::POWERLOSS, true); } - -#endif // POWER_LOSS_RECOVERY +#endif #if HAS_PID_HEATING @@ -374,20 +369,18 @@ void DGUSScreenHandler::setMessageLinePGM(PGM_P const msg, const uint8_t line) { void DGUSScreenHandler::setStatusMessage(const char* msg, const millis_t duration) { dgus.writeString((uint16_t)DGUS_Addr::MESSAGE_Status, msg, DGUS_STATUS_LEN, false, true); - status_expire = (duration > 0 ? ExtUI::safe_millis() + duration : 0); } void DGUSScreenHandler::setStatusMessage(FSTR_P const fmsg, const millis_t duration) { dgus.writeString((uint16_t)DGUS_Addr::MESSAGE_Status, fmsg, DGUS_STATUS_LEN, false, true); - status_expire = (duration > 0 ? ExtUI::safe_millis() + duration : 0); } void DGUSScreenHandler::showWaitScreen(const DGUS_ScreenID return_screenID, const bool has_continue/*=false*/) { - if (return_screenID != DGUS_ScreenID::WAIT) { + if (return_screenID != DGUS_ScreenID::WAIT) wait_return_screenID = return_screenID; - } + wait_continue = has_continue; triggerScreenChange(DGUS_ScreenID::WAIT); @@ -418,8 +411,7 @@ void DGUSScreenHandler::triggerEEPROMSave() { } bool DGUSScreenHandler::isPrinterIdle() { - return (!ExtUI::commandsInQueue() - && !ExtUI::isMoving()); + return (!ExtUI::commandsInQueue() && !ExtUI::isMoving()); } const DGUS_Addr* DGUSScreenHandler::findScreenAddrList(const DGUS_ScreenID screenID) { @@ -429,9 +421,7 @@ const DGUS_Addr* DGUSScreenHandler::findScreenAddrList(const DGUS_ScreenID scree do { memcpy_P(&list, map, sizeof(*map)); if (!list.addr_list) break; - if (list.screenID == screenID) { - return list.addr_list; - } + if (list.screenID == screenID) return list.addr_list; } while (++map); return nullptr; @@ -453,20 +443,16 @@ bool DGUSScreenHandler::callScreenSetup(const DGUS_ScreenID screenID) { } void DGUSScreenHandler::moveToScreen(const DGUS_ScreenID screenID, bool abort_wait) { - if (current_screenID == DGUS_ScreenID::KILL) { - return; - } + if (current_screenID == DGUS_ScreenID::KILL) return; if (current_screenID == DGUS_ScreenID::WAIT) { - if (screenID != DGUS_ScreenID::WAIT) { + if (screenID != DGUS_ScreenID::WAIT) wait_return_screenID = screenID; - } if (!abort_wait) return; - if (wait_continue && wait_for_user) { + if (wait_continue && wait_for_user) ExtUI::setUserConfirmed(); - } } if (!callScreenSetup(screenID)) return; diff --git a/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h b/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h index 8cec8e59c9..ec4962e6b2 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h +++ b/Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h @@ -36,6 +36,7 @@ #define DGUS_GCODE_LEN 32 enum class DGUS_Addr : uint16_t { + END = 0, MESSAGE_Line1 = 0x1100, // 0x1100 - 0x111F MESSAGE_Line2 = 0x1120, // 0x1120 - 0x113F MESSAGE_Line3 = 0x1140, // 0x1140 - 0x115F diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp index 1a99eceeff..32e95f2508 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_ScreenAddrList.cpp @@ -33,7 +33,7 @@ constexpr DGUS_Addr LIST_HOME[] PROGMEM = { DGUS_Addr::TEMP_Target_H0, DGUS_Addr::TEMP_Current_Bed, DGUS_Addr::TEMP_Target_Bed, - (DGUS_Addr)0 + DGUS_Addr::END }; #if HAS_MEDIA @@ -46,7 +46,7 @@ constexpr DGUS_Addr LIST_HOME[] PROGMEM = { DGUS_Addr::SD_FileName4, DGUS_Addr::SD_ScrollIcons, DGUS_Addr::SD_SelectedFileName, - (DGUS_Addr)0 + DGUS_Addr::END }; #endif @@ -59,7 +59,7 @@ constexpr DGUS_Addr LIST_PRINT_STATUS[] PROGMEM = { DGUS_Addr::STATUS_Elapsed, DGUS_Addr::STATUS_Percent, DGUS_Addr::STATUS_Icons, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_PRINT_ADJUST[] PROGMEM = { @@ -69,7 +69,7 @@ constexpr DGUS_Addr LIST_PRINT_ADJUST[] PROGMEM = { DGUS_Addr::ADJUST_Feedrate, DGUS_Addr::ADJUST_Flowrate_CUR, DGUS_Addr::LEVEL_OFFSET_Current, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_PRINT_FINISHED[] PROGMEM = { @@ -80,7 +80,7 @@ constexpr DGUS_Addr LIST_PRINT_FINISHED[] PROGMEM = { DGUS_Addr::STATUS_PositionZ, DGUS_Addr::STATUS_Elapsed, DGUS_Addr::STATUS_Percent_Complete, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_TEMP_MENU[] PROGMEM = { @@ -88,7 +88,7 @@ constexpr DGUS_Addr LIST_TEMP_MENU[] PROGMEM = { DGUS_Addr::TEMP_Target_H0, DGUS_Addr::TEMP_Current_Bed, DGUS_Addr::TEMP_Target_Bed, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_TEMP_MANUAL[] PROGMEM = { @@ -98,23 +98,23 @@ constexpr DGUS_Addr LIST_TEMP_MANUAL[] PROGMEM = { DGUS_Addr::TEMP_Current_Bed, DGUS_Addr::TEMP_Target_Bed, DGUS_Addr::TEMP_Max_Bed, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_FAN[] PROGMEM = { DGUS_Addr::FAN0_Speed, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_SETTINGS_MENU[] PROGMEM = { DGUS_Addr::STEPPER_Status, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_LEVELING_OFFSET[] PROGMEM = { DGUS_Addr::LEVEL_OFFSET_Current, DGUS_Addr::LEVEL_OFFSET_StepIcons, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_LEVELING_MANUAL[] PROGMEM = { @@ -122,7 +122,7 @@ constexpr DGUS_Addr LIST_LEVELING_MANUAL[] PROGMEM = { DGUS_Addr::TEMP_Target_H0, DGUS_Addr::TEMP_Current_Bed, DGUS_Addr::TEMP_Target_Bed, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_LEVELING_AUTOMATIC[] PROGMEM = { @@ -132,13 +132,13 @@ constexpr DGUS_Addr LIST_LEVELING_AUTOMATIC[] PROGMEM = { DGUS_Addr::TEMP_Target_Bed, DGUS_Addr::LEVEL_AUTO_DisableIcon, DGUS_Addr::LEVEL_AUTO_Grid, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_LEVELING_PROBING[] PROGMEM = { DGUS_Addr::LEVEL_PROBING_Icons1, DGUS_Addr::LEVEL_PROBING_Icons2, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_FILAMENT[] PROGMEM = { @@ -146,7 +146,7 @@ constexpr DGUS_Addr LIST_FILAMENT[] PROGMEM = { DGUS_Addr::TEMP_Target_H0, DGUS_Addr::FILAMENT_ExtruderIcons, DGUS_Addr::FILAMENT_Length, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_MOVE[] PROGMEM = { @@ -154,17 +154,17 @@ constexpr DGUS_Addr LIST_MOVE[] PROGMEM = { DGUS_Addr::MOVE_CurrentY, DGUS_Addr::MOVE_CurrentZ, DGUS_Addr::MOVE_StepIcons, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_GCODE[] PROGMEM = { DGUS_Addr::GCODE_Data, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_SETTINGS_MENU2[] PROGMEM = { DGUS_Addr::SETTINGS2_BLTouch, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_PID[] PROGMEM = { @@ -174,17 +174,17 @@ constexpr DGUS_Addr LIST_PID[] PROGMEM = { DGUS_Addr::PID_Kp, DGUS_Addr::PID_Ki, DGUS_Addr::PID_Kd, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_VOLUME[] PROGMEM = { DGUS_Addr::VOLUME_Level, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_BRIGHTNESS[] PROGMEM = { DGUS_Addr::BRIGHTNESS_Level, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_INFOS[] PROGMEM = { @@ -196,12 +196,12 @@ constexpr DGUS_Addr LIST_INFOS[] PROGMEM = { DGUS_Addr::INFOS_PrintTime, DGUS_Addr::INFOS_LongestPrint, DGUS_Addr::INFOS_FilamentUsed, - (DGUS_Addr)0 + DGUS_Addr::END }; constexpr DGUS_Addr LIST_WAIT[] PROGMEM = { DGUS_Addr::WAIT_Icons, - (DGUS_Addr)0 + DGUS_Addr::END }; #define MAP_HELPER(SCREEN, LIST) { .screenID = SCREEN, .addr_list = LIST } diff --git a/ini/features.ini b/ini/features.ini index 63da77cf76..96a27b3ff9 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -96,6 +96,7 @@ ANYCUBIC_LCD_CHIRON = build_src_filter=+ ANYCUBIC_LCD_I3MEGA = build_src_filter=+ HAS_DGUS_LCD_CLASSIC = build_src_filter=+ +DGUS_LCD_UI_E3S1PRO = build_src_filter=+ DGUS_LCD_UI_RELOADED = build_src_filter=+ DGUS_LCD_UI_FYSETC = build_src_filter=+ DGUS_LCD_UI_HIPRECY = build_src_filter=+ From f9c8703e778a10f0a2a46c199712a7555f2aca33 Mon Sep 17 00:00:00 2001 From: Anson Liu Date: Sat, 1 Jul 2023 03:19:16 -0400 Subject: [PATCH 599/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20missing=20include?= =?UTF-8?q?=20cycles.h=20(#25927)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 9f49e353a7..8ec4024ea6 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -45,6 +45,7 @@ #include "planner.h" #include "stepper/indirection.h" +#include "stepper/cycles.h" #ifdef __AVR__ #include "stepper/speed_lookuptable.h" #endif From 4985acafada69dcb17b813d76b359bcfb5b57b43 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 1 Jul 2023 04:33:53 -0500 Subject: [PATCH 600/659] =?UTF-8?q?=F0=9F=90=9B=20Prevent=20MString=20infi?= =?UTF-8?q?nite=20recursion=20(#26037)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #24390 --- Marlin/src/core/mstring.h | 25 ++++++++++++++++++------- Marlin/src/tests/marlin_tests.cpp | 5 +++-- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/Marlin/src/core/mstring.h b/Marlin/src/core/mstring.h index 67591ba3ae..77a03d7ff1 100644 --- a/Marlin/src/core/mstring.h +++ b/Marlin/src/core/mstring.h @@ -70,6 +70,9 @@ extern void SERIAL_CHAR(char c); #define SNPRINTF_P(V...) snprintf_P(V) #endif +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + /** * @brief MString class template * @details A class template providing convenient string operators, @@ -112,6 +115,7 @@ public: MString& set(const MString &s) { strncpy(str, s.str, SIZE); debug(F("MString")); return *this; } MString& set(const bool &b) { return set(b ? F("true") : F("false")); } MString& set(const char c) { str[0] = c; if (1 < SIZE) str[1] = '\0'; debug(F("char")); return *this; } + MString& set(const int8_t &i) { SNPRINTF_P(str, SIZE, PSTR("%d"), i); debug(F("int8_t")); return *this; } MString& set(const short &i) { SNPRINTF_P(str, SIZE, PSTR("%d"), i); debug(F("short")); return *this; } MString& set(const int &i) { SNPRINTF_P(str, SIZE, PSTR("%d"), i); debug(F("int")); return *this; } MString& set(const long &l) { SNPRINTF_P(str, SIZE, PSTR("%ld"), l); debug(F("long")); return *this; } @@ -157,6 +161,7 @@ public: MString& append(const bool &b) { return append(b ? F("true") : F("false")); } MString& append(const char c) { int sz = length(); if (sz < SIZE) { str[sz] = c; if (sz < SIZE - 1) str[sz + 1] = '\0'; } return *this; } #if ENABLED(FASTER_APPEND) + MString& append(const int8_t &i) { int sz = length(); SNPRINTF(&str[sz], SIZE - sz, "%d", i); return *this; } MString& append(const short &i) { int sz = length(); SNPRINTF(&str[sz], SIZE - sz, "%d", i); return *this; } MString& append(const int &i) { int sz = length(); SNPRINTF(&str[sz], SIZE - sz, "%d", i); return *this; } MString& append(const long &l) { int sz = length(); SNPRINTF(&str[sz], SIZE - sz, "%ld", l); return *this; } @@ -165,13 +170,14 @@ public: MString& append(const unsigned int &i) { int sz = length(); SNPRINTF(&str[sz], SIZE - sz, "%u", i); return *this; } MString& append(const unsigned long &l) { int sz = length(); SNPRINTF(&str[sz], SIZE - sz, "%lu", l); return *this; } #else - MString& append(const short &i) { char buf[20]; sprintf(buf, "%d", i); return append(buf); } - MString& append(const int &i) { char buf[20]; sprintf(buf, "%d", i); return append(buf); } - MString& append(const long &l) { char buf[20]; sprintf(buf, "%ld", l); return append(buf); } - MString& append(const unsigned char &i) { char buf[20]; sprintf(buf, "%u", i); return append(buf); } - MString& append(const unsigned short &i) { char buf[20]; sprintf(buf, "%u", i); return append(buf); } - MString& append(const unsigned int &i) { char buf[20]; sprintf(buf, "%u", i); return append(buf); } - MString& append(const unsigned long &l) { char buf[20]; sprintf(buf, "%lu", l); return append(buf); } + MString& append(const int8_t &i) { char buf[ 5]; sprintf(buf, "%d", i); return append(buf); } + MString& append(const short &i) { char buf[12]; sprintf(buf, "%d", i); return append(buf); } + MString& append(const int &i) { char buf[12]; sprintf(buf, "%d", i); return append(buf); } + MString& append(const long &l) { char buf[12]; sprintf(buf, "%ld", l); return append(buf); } + MString& append(const unsigned char &i) { char buf[ 5]; sprintf(buf, "%u", i); return append(buf); } + MString& append(const unsigned short &i) { char buf[11]; sprintf(buf, "%u", i); return append(buf); } + MString& append(const unsigned int &i) { char buf[11]; sprintf(buf, "%u", i); return append(buf); } + MString& append(const unsigned long &l) { char buf[11]; sprintf(buf, "%lu", l); return append(buf); } #endif MString& append(const float &f) { return append(p_float_t(f, SERIAL_FLOAT_PRECISION)); } MString& append(const p_float_t &pf) { return append(w_float_t(pf.value, 1, pf.prec)); } @@ -220,6 +226,9 @@ public: template MString(T arg1, Args... more) { set(arg1); append(more...); } + // Catch unhandled types to prevent infinite recursion + template MString& append(T) { return append('?'); } + // Take a list of any number of arguments and append them to the string template MString& append(T arg1, Args... more) { return append(arg1).append(more...); } @@ -299,6 +308,8 @@ public: }; +#pragma GCC diagnostic pop + #ifndef TS_SIZE #define TS_SIZE 63 #endif diff --git a/Marlin/src/tests/marlin_tests.cpp b/Marlin/src/tests/marlin_tests.cpp index 3d14f094a2..f61f840176 100644 --- a/Marlin/src/tests/marlin_tests.cpp +++ b/Marlin/src/tests/marlin_tests.cpp @@ -52,16 +52,17 @@ void runStartupTests() { // 100 dashes, but chopped down to DEFAULT_MSTRING_SIZE (20) TSS(repchr_t('-', 100)).echoln(); - // Hello World!-123456------ str(F("Hello")); str.append(F(" World!")); str += '-'; - str += "123"; + str += uint8_t(123); str += F("456"); str += repchr_t('-', 6); str += Spaces(3); str += "< spaces!"; + str += int8_t(33); str.eol(); str += "^ eol!"; From 1a241e6e86512b570267d672e2f00a80df41b2e9 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 1 Jul 2023 16:50:42 -0500 Subject: [PATCH 601/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20M105=20(MString=20?= =?UTF-8?q?append=20TS)=20and=20EEPROM=20ver?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #24390 --- Marlin/src/core/mstring.h | 15 ++++++++++----- Marlin/src/module/settings.cpp | 4 ++-- Marlin/src/module/temperature.cpp | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Marlin/src/core/mstring.h b/Marlin/src/core/mstring.h index 77a03d7ff1..bdfc95f9dc 100644 --- a/Marlin/src/core/mstring.h +++ b/Marlin/src/core/mstring.h @@ -112,10 +112,9 @@ public: MString& set(const char *s) { return set(const_cast(s)); } MString& set_P(PGM_P const s) { strncpy_P(str, s, SIZE); debug(F("pstring")); return *this; } MString& set(FSTR_P const f) { return set_P(FTOP(f)); } - MString& set(const MString &s) { strncpy(str, s.str, SIZE); debug(F("MString")); return *this; } MString& set(const bool &b) { return set(b ? F("true") : F("false")); } MString& set(const char c) { str[0] = c; if (1 < SIZE) str[1] = '\0'; debug(F("char")); return *this; } - MString& set(const int8_t &i) { SNPRINTF_P(str, SIZE, PSTR("%d"), i); debug(F("int8_t")); return *this; } + MString& set(const int8_t &i) { SNPRINTF_P(str, SIZE, PSTR("%d"), i); debug(F("int8_t")); return *this; } MString& set(const short &i) { SNPRINTF_P(str, SIZE, PSTR("%d"), i); debug(F("short")); return *this; } MString& set(const int &i) { SNPRINTF_P(str, SIZE, PSTR("%d"), i); debug(F("int")); return *this; } MString& set(const long &l) { SNPRINTF_P(str, SIZE, PSTR("%ld"), l); debug(F("long")); return *this; } @@ -130,6 +129,9 @@ public: MString& set(const xyz_pos_t &v) { set(); return append(v); } MString& set(const xyze_pos_t &v) { set(); return append(v); } + template + MString& set(const MString &m) { strncpy(str, &m, SIZE); debug(F("MString")); return *this; } + MString& setn(char *s, int len) { int c = _MIN(len, SIZE); strncpy(str, s, c); str[c] = '\0'; debug(F("string")); return *this; } MString& setn(const char *s, int len) { return setn(const_cast(s), len); } MString& setn_P(PGM_P const s, int len) { int c = _MIN(len, SIZE); strncpy_P(str, s, c); str[c] = '\0'; debug(F("pstring")); return *this; } @@ -157,7 +159,6 @@ public: MString& append(const char *s) { return append(const_cast(s)); } MString& append_P(PGM_P const s) { int sz = length(); if (sz < SIZE) strncpy_P(str + sz, s, SIZE - sz); debug(F("pstring")); return *this; } MString& append(FSTR_P const f) { return append_P(FTOP(f)); } - MString& append(const MString &s) { return append(s.str); } MString& append(const bool &b) { return append(b ? F("true") : F("false")); } MString& append(const char c) { int sz = length(); if (sz < SIZE) { str[sz] = c; if (sz < SIZE - 1) str[sz + 1] = '\0'; } return *this; } #if ENABLED(FASTER_APPEND) @@ -186,6 +187,9 @@ public: MString& append(const xyz_pos_t &v) { LOOP_NUM_AXES(i) { if (i) append(' '); append(AXIS_CHAR(i), v[i]); } debug(F("xyz")); return *this; } MString& append(const xyze_pos_t &v) { LOOP_LOGICAL_AXES(i) { if (i) append(' '); append(AXIS_CHAR(i), v[i]); } debug(F("xyze")); return *this; } + template + MString& append(const MString &m) { return append(&m); } + // Append only if the given space is available MString& appendn(char *s, int len) { int sz = length(), c = _MIN(len, SIZE - sz); if (c > 0) { strncpy(str + sz, s, c); str[sz + c] = '\0'; } debug(F("string")); return *this; } MString& appendn(const char *s, int len) { return appendn(const_cast(s), len); } @@ -227,7 +231,7 @@ public: MString(T arg1, Args... more) { set(arg1); append(more...); } // Catch unhandled types to prevent infinite recursion - template MString& append(T) { return append('?'); } + template MString& append(T) { return append(TERN(MSTRING_DEBUG, typeid(T).name(), '?')); } // Take a list of any number of arguments and append them to the string template @@ -313,4 +317,5 @@ public: #ifndef TS_SIZE #define TS_SIZE 63 #endif -#define TS(V...) MString(V) +typedef MString TString; +#define TS(V...) TString(V) diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 479b43c4bd..c8ce84cd83 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -814,14 +814,14 @@ void MarlinSettings::postprocess() { */ bool MarlinSettings::save() { float dummyf = 0; - MString<4> ver(F("ERR")); + MString<3> ver(F("ERR")); if (!EEPROM_START(EEPROM_OFFSET)) return false; EEPROM_Error eeprom_error = ERR_EEPROM_NOERR; // Write or Skip version. (Flash doesn't allow rewrite without erase.) - TERN(FLASH_EEPROM_EMULATION, EEPROM_SKIP, EEPROM_WRITE)(&ver); + TERN(FLASH_EEPROM_EMULATION, EEPROM_SKIP, EEPROM_WRITE)(ver); #if ENABLED(EEPROM_INIT_NOW) EEPROM_SKIP(build_hash); // Skip the hash slot which will be written later diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index e209d6f835..d7bf9c8b79 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -4185,7 +4185,7 @@ void Temperature::isr() { SString<50> s(' ', k); if (TERN0(HAS_MULTI_HOTEND, e >= 0)) s += char('0' + e); - s += TS(':', p_float_t(c, SFP)); + s += ':'; s += p_float_t(c, SFP); if (show_t) { s += F(" /"); s += p_float_t(t, SFP); } #if ENABLED(SHOW_TEMP_ADC_VALUES) // Temperature MAX SPI boards do not have an OVERSAMPLENR defined From 60f74f3cb3c95e9d1c6408b80a489d422cf945e6 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 1 Jul 2023 18:20:22 -0500 Subject: [PATCH 602/659] =?UTF-8?q?=F0=9F=94=A8=20Suppress=20truncation=20?= =?UTF-8?q?warning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/mstring.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Marlin/src/core/mstring.h b/Marlin/src/core/mstring.h index bdfc95f9dc..f78ba601b1 100644 --- a/Marlin/src/core/mstring.h +++ b/Marlin/src/core/mstring.h @@ -73,6 +73,10 @@ extern void SERIAL_CHAR(char c); #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#if DISABLED(UNSAFE_MSTRING) + #pragma GCC diagnostic ignored "-Wstringop-truncation" +#endif + /** * @brief MString class template * @details A class template providing convenient string operators, From 7f5b0b4008c4e4853903f4f790392451f82362c2 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 1 Jul 2023 18:20:36 -0500 Subject: [PATCH 603/659] =?UTF-8?q?=F0=9F=A9=B9=20Define=20drawTrinamicCon?= =?UTF-8?q?figMenu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25982 --- Marlin/src/lcd/e3v2/proui/dwin.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Marlin/src/lcd/e3v2/proui/dwin.h b/Marlin/src/lcd/e3v2/proui/dwin.h index 3c5bad1e9a..41d8020b72 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.h +++ b/Marlin/src/lcd/e3v2/proui/dwin.h @@ -355,6 +355,9 @@ void drawStepsMenu(); void drawEditMeshMenu(); #endif #endif +#if HAS_TRINAMIC_CONFIG + void drawTrinamicConfigMenu(); +#endif // Custom colors editing #if HAS_CUSTOM_COLORS From 38e92b522b8abc2a5b2c4050dd8d8231127d1aeb Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 1 Jul 2023 18:56:53 -0500 Subject: [PATCH 604/659] =?UTF-8?q?=F0=9F=93=9D=20mm/m=20=3D>=20mm/min?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/feature/camera/M240.cpp | 2 +- Marlin/src/module/tool_change.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/gcode/feature/camera/M240.cpp b/Marlin/src/gcode/feature/camera/M240.cpp index f79e80bcc2..bb1d3f9eee 100644 --- a/Marlin/src/gcode/feature/camera/M240.cpp +++ b/Marlin/src/gcode/feature/camera/M240.cpp @@ -111,7 +111,7 @@ * B - Y offset to the return position * F - Override the XY movement feedrate * R - Retract/recover length (current units) - * S - Retract/recover feedrate (mm/m) + * S - Retract/recover feedrate (mm/min) * X - Move to X before triggering the shutter * Y - Move to Y before triggering the shutter * Z - Raise Z by a distance before triggering the shutter diff --git a/Marlin/src/module/tool_change.h b/Marlin/src/module/tool_change.h index 5f03a5495e..3cb8b4a637 100644 --- a/Marlin/src/module/tool_change.h +++ b/Marlin/src/module/tool_change.h @@ -34,8 +34,8 @@ float extra_resume; // M217 B int16_t prime_speed; // M217 P int16_t wipe_retract; // M217 G - int16_t retract_speed; // M217 R (mm/m) - int16_t unretract_speed; // M217 U (mm/m) + int16_t retract_speed; // M217 R (mm/min) + int16_t unretract_speed; // M217 U (mm/min) uint8_t fan_speed; // M217 F uint8_t fan_time; // M217 D #endif From 275642b2977af95024e2c8b55538a5dbc0fa09c5 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 2 Jul 2023 00:31:20 +0000 Subject: [PATCH 605/659] [cron] Bump distribution date (2023-07-02) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 8bba778082..5b9b21662c 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-01" +//#define STRING_DISTRIBUTION_DATE "2023-07-02" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 5f7753132b..7d97a2da45 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-01" + #define STRING_DISTRIBUTION_DATE "2023-07-02" #endif /** From b50add4694e66209acd3c5d6fe62f062817fd79e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 1 Jul 2023 19:54:39 -0500 Subject: [PATCH 606/659] =?UTF-8?q?=F0=9F=94=A8=20Wrapper=20for=20GCC=20= 80000 #pragma GCC diagnostic ignored "-Wstringop-truncation" #endif From c483fe76c7c750d1ee08a6d5fdfe363f1beb4e03 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 1 Jul 2023 20:01:45 -0500 Subject: [PATCH 607/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20ProUI=20=5Fremain?= =?UTF-8?q?=5Ftime?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #25982 --- Marlin/src/lcd/e3v2/proui/dwin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index 2e4047e05f..34a37da45f 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -575,6 +575,7 @@ void drawPrintProgressElapsed() { } #if ENABLED(SHOW_REMAINING_TIME) + uint32_t _remain_time = 0; void drawPrintProgressRemain() { MString<12> buf; buf.setf(F("%02i:%02i "), _remain_time / 3600, (_remain_time % 3600) / 60); @@ -1319,7 +1320,6 @@ void eachMomentUpdate() { // Remaining time #if ENABLED(SHOW_REMAINING_TIME) - static uint32_t _remain_time = 0; if (_remain_time != ui.get_remaining_time()) { _remain_time = ui.get_remaining_time(); drawPrintProgressRemain(); From 3ea87ad54c1e445a1c8cfef1489809edae5decb3 Mon Sep 17 00:00:00 2001 From: Alexander Gavrilenko Date: Sun, 2 Jul 2023 04:16:12 +0300 Subject: [PATCH 608/659] =?UTF-8?q?=E2=9C=A8=20SPI=20TFT=20/=20Touchscreen?= =?UTF-8?q?=20for=20STM32H7=20(#25784)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: thisiskeithb <13375512+thisiskeithb@users.noreply.github.com> Co-authored-by: Scott Lahteine --- Marlin/src/HAL/STM32/tft/tft_spi.cpp | 159 +++++++++++++----- Marlin/src/HAL/STM32/tft/tft_spi.h | 9 +- Marlin/src/HAL/STM32/tft/xpt2046.cpp | 44 ++++- Marlin/src/HAL/STM32/tft/xpt2046.h | 8 +- Marlin/src/inc/Conditionals_LCD.h | 14 ++ Marlin/src/inc/SanityCheck.h | 6 +- Marlin/src/lcd/marlinui.cpp | 26 +-- Marlin/src/lcd/marlinui.h | 5 +- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h | 66 +++++--- .../pins/stm32f4/pins_BTT_SKR_V2_0_common.h | 78 ++++++--- .../pins/stm32h7/pins_BTT_SKR_V3_0_common.h | 113 ++++++++++--- 11 files changed, 388 insertions(+), 140 deletions(-) diff --git a/Marlin/src/HAL/STM32/tft/tft_spi.cpp b/Marlin/src/HAL/STM32/tft/tft_spi.cpp index eb81a27bf1..cca247e20d 100644 --- a/Marlin/src/HAL/STM32/tft/tft_spi.cpp +++ b/Marlin/src/HAL/STM32/tft/tft_spi.cpp @@ -52,7 +52,6 @@ void TFT_SPI::init() { SPIx.Init.NSS = SPI_NSS_SOFT; SPIx.Init.Mode = SPI_MODE_MASTER; SPIx.Init.Direction = (TFT_MISO_PIN == TFT_MOSI_PIN) ? SPI_DIRECTION_1LINE : SPI_DIRECTION_2LINES; - SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; SPIx.Init.CLKPhase = SPI_PHASE_1EDGE; SPIx.Init.CLKPolarity = SPI_POLARITY_LOW; SPIx.Init.DataSize = SPI_DATASIZE_8BIT; @@ -61,12 +60,25 @@ void TFT_SPI::init() { SPIx.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; SPIx.Init.CRCPolynomial = 10; + #ifndef STM32H7xx + SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; // 18 MBit/s for F103, 21 MBit/s for F407, 25 MBit/s for F411 + #else + SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; // 20 MBit/s for H743 + SPIx.Init.NSSPMode = SPI_NSS_PULSE_ENABLE; + SPIx.Init.NSSPolarity = SPI_NSS_POLARITY_LOW; + SPIx.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA; + SPIx.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE; + SPIx.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE; + SPIx.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE; + SPIx.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_ENABLE; + SPIx.Init.IOSwap = SPI_IO_SWAP_DISABLE; + #endif + pinmap_pinout(digitalPinToPinName(TFT_SCK_PIN), PinMap_SPI_SCLK); pinmap_pinout(digitalPinToPinName(TFT_MOSI_PIN), PinMap_SPI_MOSI); #if PIN_EXISTS(TFT_MISO) && TFT_MISO_PIN != TFT_MOSI_PIN pinmap_pinout(digitalPinToPinName(TFT_MISO_PIN), PinMap_SPI_MISO); #endif - pin_PullConfig(get_GPIO_Port(STM_PORT(digitalPinToPinName(TFT_SCK_PIN))), STM_LL_GPIO_PIN(digitalPinToPinName(TFT_SCK_PIN)), GPIO_PULLDOWN); #ifdef SPI1_BASE if (SPIx.Instance == SPI1) { @@ -74,12 +86,17 @@ void TFT_SPI::init() { #ifdef STM32F1xx __HAL_RCC_DMA1_CLK_ENABLE(); DMAtx.Instance = DMA1_Channel3; + SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; // SPI1 clock on F1 and F4 is two times faster than SPI2 and SPI3 clock #elif defined(STM32F4xx) __HAL_RCC_DMA2_CLK_ENABLE(); DMAtx.Instance = DMA2_Stream3; DMAtx.Init.Channel = DMA_CHANNEL_3; + SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; // SPI1 clock on F1 and F4 is two times faster than SPI2 and SPI3 clock + #elif defined(STM32H7xx) + __HAL_RCC_DMA1_CLK_ENABLE(); + DMAtx.Instance = DMA1_Stream4; + DMAtx.Init.Request = DMA_REQUEST_SPI1_TX; #endif - SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; } #endif #ifdef SPI2_BASE @@ -92,6 +109,10 @@ void TFT_SPI::init() { __HAL_RCC_DMA1_CLK_ENABLE(); DMAtx.Instance = DMA1_Stream4; DMAtx.Init.Channel = DMA_CHANNEL_0; + #elif defined(STM32H7xx) + __HAL_RCC_DMA1_CLK_ENABLE(); + DMAtx.Instance = DMA1_Stream4; + DMAtx.Init.Request = DMA_REQUEST_SPI2_TX; #endif } #endif @@ -105,25 +126,27 @@ void TFT_SPI::init() { __HAL_RCC_DMA1_CLK_ENABLE(); DMAtx.Instance = DMA1_Stream5; DMAtx.Init.Channel = DMA_CHANNEL_0; + #elif defined(STM32H7xx) + __HAL_RCC_DMA1_CLK_ENABLE(); + DMAtx.Instance = DMA1_Stream4; + DMAtx.Init.Request = DMA_REQUEST_SPI3_TX; #endif } #endif - HAL_SPI_Init(&SPIx); - DMAtx.Init.Direction = DMA_MEMORY_TO_PERIPH; DMAtx.Init.PeriphInc = DMA_PINC_DISABLE; DMAtx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; DMAtx.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; DMAtx.Init.Mode = DMA_NORMAL; DMAtx.Init.Priority = DMA_PRIORITY_LOW; - #ifdef STM32F4xx + #if ANY(STM32F4xx, STM32H7xx) DMAtx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; #endif } void TFT_SPI::dataTransferBegin(uint16_t dataSize) { - SPIx.Init.DataSize = dataSize == DATASIZE_8BIT ? SPI_DATASIZE_8BIT : SPI_DATASIZE_16BIT; + SPIx.Init.DataSize = dataSize; HAL_SPI_Init(&SPIx); WRITE(TFT_CS_PIN, LOW); } @@ -148,28 +171,43 @@ uint32_t TFT_SPI::getID() { uint32_t TFT_SPI::readID(const uint16_t inReg) { uint32_t data = 0; #if PIN_EXISTS(TFT_MISO) - uint32_t BaudRatePrescaler = SPIx.Init.BaudRatePrescaler; - uint32_t i; + const uint32_t oldPrescaler = SPIx.Init.BaudRatePrescaler; - SPIx.Init.BaudRatePrescaler = SPIx.Instance == SPI1 ? SPI_BAUDRATEPRESCALER_8 : SPI_BAUDRATEPRESCALER_4; + SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64; dataTransferBegin(DATASIZE_8BIT); writeReg(inReg); if (SPIx.Init.Direction == SPI_DIRECTION_1LINE) SPI_1LINE_RX(&SPIx); - __HAL_SPI_ENABLE(&SPIx); - for (i = 0; i < 4; i++) { - #if TFT_MISO_PIN != TFT_MOSI_PIN - while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_TXE)) {} - SPIx.Instance->DR = 0; - #endif - while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_RXNE)) {} - data = (data << 8) | SPIx.Instance->DR; - } + #ifdef STM32H7xx + for (uint32_t i = 0; i < 4; i++) { + MODIFY_REG(SPIx.Instance->CR2, SPI_CR2_TSIZE, 1); + __HAL_SPI_ENABLE(&SPIx); + SET_BIT(SPIx.Instance->CR1, SPI_CR1_CSTART); + + #if TFT_MISO_PIN != TFT_MOSI_PIN + SPIx.Instance->TXDR = 0; + #endif + while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_EOT)) {} + data = (data << 8) | SPIx.Instance->RXDR; + __HAL_SPI_DISABLE(&SPIx); + __HAL_SPI_CLEAR_EOTFLAG(&SPIx); + __HAL_SPI_CLEAR_TXTFFLAG(&SPIx); + } + #else + __HAL_SPI_ENABLE(&SPIx); + for (uint32_t i = 0; i < 4; i++) { + #if TFT_MISO_PIN != TFT_MOSI_PIN + while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_TXE)) {} + SPIx.Instance->DR = 0; + #endif + while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_RXNE)) {} + data = (data << 8) | SPIx.Instance->DR; + } + #endif dataTransferEnd(); - - SPIx.Init.BaudRatePrescaler = BaudRatePrescaler; + SPIx.Init.BaudRatePrescaler = oldPrescaler; #endif return data >> 7; @@ -182,6 +220,9 @@ bool TFT_SPI::isBusy() { #elif defined(STM32F4xx) #define __IS_DMA_ENABLED(__HANDLE__) ((__HANDLE__)->Instance->CR & DMA_SxCR_EN) #define __IS_DMA_CONFIGURED(__HANDLE__) ((__HANDLE__)->Instance->PAR != 0) + #elif defined(STM32H7xx) + #define __IS_DMA_ENABLED(__HANDLE__) (((DMA_Stream_TypeDef *)((__HANDLE__)->Instance))->CR & DMA_SxCR_EN) + #define __IS_DMA_CONFIGURED(__HANDLE__) (((DMA_Stream_TypeDef *)((__HANDLE__)->Instance))->PAR != 0) #endif if (!__IS_DMA_CONFIGURED(&DMAtx)) return false; @@ -193,8 +234,13 @@ bool TFT_SPI::isBusy() { else { // Check if DMA transfer completed flag is set if (__HAL_DMA_GET_FLAG(&DMAtx, __HAL_DMA_GET_TC_FLAG_INDEX(&DMAtx)) == 0) return true; - // Check if SPI transmit butter is empty and SPI is idle - if ((!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_TXE)) || (__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY))) return true; + #ifdef STM32H7xx + // Check if SPI data transfer is completed + if (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_EOT)) return true; + #else + // Check if SPI is idle + if (__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY)) return true; + #endif } abort(); @@ -205,9 +251,15 @@ void TFT_SPI::abort() { HAL_DMA_Abort(&DMAtx); // Abort DMA transfer if any HAL_DMA_DeInit(&DMAtx); - CLEAR_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); + #ifdef STM32H7xx + CLEAR_BIT(SPIx.Instance->CFG1, SPI_CFG1_TXDMAEN); + __HAL_SPI_CLEAR_EOTFLAG(&SPIx); + __HAL_SPI_CLEAR_TXTFFLAG(&SPIx); + #else + CLEAR_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); + #endif - dataTransferEnd(); // Stop SPI and deselect CS + dataTransferEnd(); // Stop SPI and deselect CS } void TFT_SPI::transmit(uint16_t data) { @@ -215,12 +267,24 @@ void TFT_SPI::transmit(uint16_t data) { SPI_1LINE_TX(&SPIx); #endif - __HAL_SPI_ENABLE(&SPIx); + #ifdef STM32H7xx + MODIFY_REG(SPIx.Instance->CR2, SPI_CR2_TSIZE, 1); + __HAL_SPI_ENABLE(&SPIx); + SET_BIT(SPIx.Instance->CR1, SPI_CR1_CSTART); - SPIx.Instance->DR = data; + SPIx.Instance->TXDR = data; - while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_TXE)) {} - while ( __HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY)) {} + while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_SR_EOT)) {} + + __HAL_SPI_CLEAR_EOTFLAG(&SPIx); + __HAL_SPI_CLEAR_TXTFFLAG(&SPIx); + #else + __HAL_SPI_ENABLE(&SPIx); + SPIx.Instance->DR = data; + while (__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY)) {} + #endif + + __HAL_SPI_DISABLE(&SPIx); #if TFT_MISO_PIN != TFT_MOSI_PIN __HAL_SPI_CLEAR_OVRFLAG(&SPIx); // Clear overrun flag in 2 Lines communication mode because received data is not read @@ -237,35 +301,38 @@ void TFT_SPI::transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t coun dataTransferBegin(); - HAL_DMA_Start(&DMAtx, (uint32_t)data, (uint32_t)&(SPIx.Instance->DR), count); - __HAL_SPI_ENABLE(&SPIx); + #ifdef STM32H7xx + HAL_DMA_Start(&DMAtx, (uint32_t)data, (uint32_t)&(SPIx.Instance->TXDR), count); - SET_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); // Enable Tx DMA Request + CLEAR_BIT(SPIx.Instance->CFG1, SPI_CFG1_TXDMAEN); + MODIFY_REG(SPIx.Instance->CR2, SPI_CR2_TSIZE, count); + SET_BIT(SPIx.Instance->CFG1, SPI_CFG1_TXDMAEN); // Enable Tx DMA Request + __HAL_SPI_ENABLE(&SPIx); + SET_BIT(SPIx.Instance->CR1, SPI_CR1_CSTART); + #else + HAL_DMA_Start(&DMAtx, (uint32_t)data, (uint32_t)&(SPIx.Instance->DR), count); + + __HAL_SPI_ENABLE(&SPIx); + SET_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); // Enable Tx DMA Request + #endif TERN_(TFT_SHARED_IO, while (isBusy())); } void TFT_SPI::transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { - DMAtx.Init.MemInc = memoryIncrease; - HAL_DMA_Init(&DMAtx); - - if (TFT_MISO_PIN == TFT_MOSI_PIN) - SPI_1LINE_TX(&SPIx); - - dataTransferBegin(); - - HAL_DMA_Start(&DMAtx, (uint32_t)data, (uint32_t)&(SPIx.Instance->DR), count); - __HAL_SPI_ENABLE(&SPIx); - - SET_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); // Enable Tx DMA Request + transmitDMA(memoryIncrease, data, count); HAL_DMA_PollForTransfer(&DMAtx, HAL_DMA_FULL_TRANSFER, HAL_MAX_DELAY); - while ( __HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY)) {} + #ifdef STM32H7xx + while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_SR_EOT)) {} + #else + while (__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY)) {} + #endif abort(); } #if ENABLED(USE_SPI_DMA_TC) - void TFT_SPI::TransmitDMA_IT(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { + void TFT_SPI::transmitDMA_IT(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { DMAtx.Init.MemInc = memoryIncrease; HAL_DMA_Init(&DMAtx); diff --git a/Marlin/src/HAL/STM32/tft/tft_spi.h b/Marlin/src/HAL/STM32/tft/tft_spi.h index 0535113b16..3d1f9829e3 100644 --- a/Marlin/src/HAL/STM32/tft/tft_spi.h +++ b/Marlin/src/HAL/STM32/tft/tft_spi.h @@ -25,8 +25,10 @@ #include "stm32f1xx_hal.h" #elif defined(STM32F4xx) #include "stm32f4xx_hal.h" +#elif defined(STM32H7xx) + #include "stm32h7xx_hal.h" #else - #error SPI TFT is currently only supported on STM32F1 and STM32F4 hardware. + #error SPI TFT is currently only supported on STM32F1, STM32F4 and STM32H7 hardware. #endif #ifndef LCD_READ_ID @@ -38,6 +40,7 @@ #define DATASIZE_8BIT SPI_DATASIZE_8BIT #define DATASIZE_16BIT SPI_DATASIZE_16BIT +#define DATASIZE_32BIT SPI_DATASIZE_32BIT #define TFT_IO_DRIVER TFT_SPI #define DMA_MAX_SIZE 0xFFFF @@ -51,7 +54,7 @@ private: static void transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count); static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count); #if ENABLED(USE_SPI_DMA_TC) - static void TransmitDMA_IT(uint32_t memoryIncrease, uint16_t *data, uint16_t count); + static void transmitDMA_IT(uint32_t memoryIncrease, uint16_t *data, uint16_t count); #endif public: @@ -71,7 +74,7 @@ public: static void writeMultiple_DMA(uint16_t color, uint16_t count) { static uint16_t data; data = color; transmitDMA(DMA_MINC_DISABLE, &data, count); } #if ENABLED(USE_SPI_DMA_TC) - static void writeSequenceIT(uint16_t *data, uint16_t count) { TransmitDMA_IT(DMA_MINC_ENABLE, data, count); } + static void writeSequenceIT(uint16_t *data, uint16_t count) { transmitDMA_IT(DMA_MINC_ENABLE, data, count); } inline static void DMA_IRQHandler() { HAL_DMA_IRQHandler(&TFT_SPI::DMAtx); } #endif diff --git a/Marlin/src/HAL/STM32/tft/xpt2046.cpp b/Marlin/src/HAL/STM32/tft/xpt2046.cpp index 8efbfb84f8..f0c54f3690 100644 --- a/Marlin/src/HAL/STM32/tft/xpt2046.cpp +++ b/Marlin/src/HAL/STM32/tft/xpt2046.cpp @@ -56,7 +56,6 @@ void XPT2046::init() { SPIx.Init.NSS = SPI_NSS_SOFT; SPIx.Init.Mode = SPI_MODE_MASTER; SPIx.Init.Direction = SPI_DIRECTION_2LINES; - SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; SPIx.Init.CLKPhase = SPI_PHASE_2EDGE; SPIx.Init.CLKPolarity = SPI_POLARITY_HIGH; SPIx.Init.DataSize = SPI_DATASIZE_8BIT; @@ -65,6 +64,20 @@ void XPT2046::init() { SPIx.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; SPIx.Init.CRCPolynomial = 10; + #ifndef STM32H7xx + SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; // 4.5 MBit/s for F103 and 5.25 MBit/s for F407 + #else + SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; // 5 MBit/s for H743 + SPIx.Init.NSSPMode = SPI_NSS_PULSE_ENABLE; + SPIx.Init.NSSPolarity = SPI_NSS_POLARITY_LOW; + SPIx.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA; + SPIx.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE; + SPIx.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE; + SPIx.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE; + SPIx.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_ENABLE; + SPIx.Init.IOSwap = SPI_IO_SWAP_DISABLE; + #endif + pinmap_pinout(digitalPinToPinName(TOUCH_SCK_PIN), PinMap_SPI_SCLK); pinmap_pinout(digitalPinToPinName(TOUCH_MOSI_PIN), PinMap_SPI_MOSI); pinmap_pinout(digitalPinToPinName(TOUCH_MISO_PIN), PinMap_SPI_MISO); @@ -141,13 +154,30 @@ uint16_t XPT2046::getRawData(const XPTCoordinate coordinate) { } uint16_t XPT2046::hardwareIO(uint16_t data) { - __HAL_SPI_ENABLE(&SPIx); - while ((SPIx.Instance->SR & SPI_FLAG_TXE) != SPI_FLAG_TXE) {} - SPIx.Instance->DR = data; - while ((SPIx.Instance->SR & SPI_FLAG_RXNE) != SPI_FLAG_RXNE) {} - __HAL_SPI_DISABLE(&SPIx); + #ifdef STM32H7xx + MODIFY_REG(SPIx.Instance->CR2, SPI_CR2_TSIZE, 1); + __HAL_SPI_ENABLE(&SPIx); + SET_BIT(SPIx.Instance->CR1, SPI_CR1_CSTART); - return SPIx.Instance->DR; + SPIx.Instance->TXDR = data; + + while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_SR_EOT)) {} + data = SPIx.Instance->RXDR; + + __HAL_SPI_DISABLE(&SPIx); + __HAL_SPI_CLEAR_EOTFLAG(&SPIx); + __HAL_SPI_CLEAR_TXTFFLAG(&SPIx); + + return data; + #else + __HAL_SPI_ENABLE(&SPIx); + while ((SPIx.Instance->SR & SPI_FLAG_TXE) != SPI_FLAG_TXE) {} + SPIx.Instance->DR = data; + while ((SPIx.Instance->SR & SPI_FLAG_RXNE) != SPI_FLAG_RXNE) {} + __HAL_SPI_DISABLE(&SPIx); + + return SPIx.Instance->DR; + #endif } uint16_t XPT2046::softwareIO(uint16_t data) { diff --git a/Marlin/src/HAL/STM32/tft/xpt2046.h b/Marlin/src/HAL/STM32/tft/xpt2046.h index 6b2492c339..5ed0881ec6 100644 --- a/Marlin/src/HAL/STM32/tft/xpt2046.h +++ b/Marlin/src/HAL/STM32/tft/xpt2046.h @@ -22,9 +22,13 @@ #pragma once #ifdef STM32F1xx - #include + #include "stm32f1xx_hal.h" #elif defined(STM32F4xx) - #include + #include "stm32f4xx_hal.h" +#elif defined(STM32H7xx) + #include "stm32h7xx_hal.h" +#else + #error SPI Touch Screen is currently only supported on STM32F1, STM32F4 and STM32H7 hardware. #endif #include "../../../inc/MarlinConfig.h" diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index bfc5bfd0ff..341c9d0bc0 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -533,6 +533,20 @@ #endif #if ANY(HAS_WIRED_LCD, EXTENSIBLE_UI, DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI) + /** + * HAS_DISPLAY indicates the display uses these MarlinUI methods... + * - update + * - abort_print + * - pause_print + * - resume_print + * - poweroff (for PSU_CONTROL and HAS_MARLINUI_MENU) + * + * ...and implements these MarlinUI methods: + * - zoffset_overlay (if BABYSTEP_GFX_OVERLAY or MESH_EDIT_GFX_OVERLAY are supported) + * - draw_kill_screen + * - kill_screen + * - draw_status_message + */ #define HAS_DISPLAY 1 #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 4a948ceba3..8eb8662c32 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2587,7 +2587,8 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L + COUNT_ENABLED(FYSETC_MINI_12864_X_X, FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0, FYSETC_GENERIC_12864_1_1) \ + COUNT_ENABLED(LCD_SAINSMART_I2C_1602, LCD_SAINSMART_I2C_2004) \ + COUNT_ENABLED(MKS_12864OLED, MKS_12864OLED_SSD1306) \ - + COUNT_ENABLED(MKS_TS35_V2_0, MKS_ROBIN_TFT24, MKS_ROBIN_TFT28, MKS_ROBIN_TFT32, MKS_ROBIN_TFT35, MKS_ROBIN_TFT43, MKS_ROBIN_TFT_V1_1R, ANET_ET4_TFT28, ANET_ET5_TFT35, BIQU_BX_TFT70, BTT_TFT35_SPI_V1_0) \ + + COUNT_ENABLED(MKS_TS35_V2_0, MKS_ROBIN_TFT24, MKS_ROBIN_TFT28, MKS_ROBIN_TFT32, MKS_ROBIN_TFT35, MKS_ROBIN_TFT43, \ + MKS_ROBIN_TFT_V1_1R, ANET_ET4_TFT28, ANET_ET5_TFT35, BIQU_BX_TFT70, BTT_TFT35_SPI_V1_0) \ + COUNT_ENABLED(TFTGLCD_PANEL_SPI, TFTGLCD_PANEL_I2C) \ + COUNT_ENABLED(VIKI2, miniVIKI) \ + ENABLED(WYH_L12864) \ @@ -2638,7 +2639,8 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #undef IS_U8GLIB_SSD1306 #undef IS_EXTUI -#if ANY(TFT_GENERIC, MKS_TS35_V2_0, MKS_ROBIN_TFT24, MKS_ROBIN_TFT28, MKS_ROBIN_TFT32, MKS_ROBIN_TFT35, MKS_ROBIN_TFT43, MKS_ROBIN_TFT_V1_1R, TFT_TRONXY_X5SA, ANYCUBIC_TFT35, ANYCUBIC_TFT35, LONGER_LK_TFT28, ANET_ET4_TFT28, ANET_ET5_TFT35, BIQU_BX_TFT70, BTT_TFT35_SPI_V1_0) +#if ANY(TFT_GENERIC, MKS_TS35_V2_0, MKS_ROBIN_TFT24, MKS_ROBIN_TFT28, MKS_ROBIN_TFT32, MKS_ROBIN_TFT35, MKS_ROBIN_TFT43, MKS_ROBIN_TFT_V1_1R, \ + TFT_TRONXY_X5SA, ANYCUBIC_TFT35, ANYCUBIC_TFT35, LONGER_LK_TFT28, ANET_ET4_TFT28, ANET_ET5_TFT35, BIQU_BX_TFT70, BTT_TFT35_SPI_V1_0) #if NONE(TFT_COLOR_UI, TFT_CLASSIC_UI, TFT_LVGL_UI) #error "TFT_COLOR_UI, TFT_CLASSIC_UI, TFT_LVGL_UI is required for your TFT. Please enable one." #elif MANY(TFT_COLOR_UI, TFT_CLASSIC_UI, TFT_LVGL_UI) diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index f8fde21777..cbab4676c2 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -1679,11 +1679,13 @@ void MarlinUI::host_status() { #endif - void MarlinUI::flow_fault() { - LCD_ALERTMESSAGE(MSG_FLOWMETER_FAULT); - BUZZ(1000, 440); - TERN_(HAS_MARLINUI_MENU, return_to_status()); - } + #if ENABLED(FLOWMETER_SAFETY) + void MarlinUI::flow_fault() { + LCD_ALERTMESSAGE(MSG_FLOWMETER_FAULT); + BUZZ(1000, 440); + TERN_(HAS_MARLINUI_MENU, return_to_status()); + } + #endif void MarlinUI::pause_print() { #if HAS_MARLINUI_MENU @@ -1718,13 +1720,13 @@ void MarlinUI::host_status() { #if HAS_TOUCH_BUTTONS - // - // Screen Click - // - On menu screens move directly to the touched item - // - On menu screens, right side (last 3 cols) acts like a scroll - half up => prev page, half down = next page - // - On select screens (and others) touch the Right Half for +, Left Half for - - // - On edit screens, touch Up Half for -, Bottom Half to + - // + /** + * Screen Click + * - On menu screens move directly to the touched item + * - On menu screens, right side (last 3 cols) acts like a scroll - half up => prev page, half down = next page + * - On select screens (and others) touch the Left Half for ←, Right Half for → + * - On edit screens, touch Top Half for ↑, Bottom Half for ↓ + */ void MarlinUI::screen_click(const uint8_t row, const uint8_t col, const uint8_t, const uint8_t) { const millis_t now = millis(); if (PENDING(now, next_button_update_ms)) return; diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index 8810dcac72..3a39d840e2 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -505,7 +505,10 @@ public: static void abort_print(); static void pause_print(); static void resume_print(); - static void flow_fault(); + + #if ENABLED(FLOWMETER_SAFETY) + static void flow_fault(); + #endif #if ALL(HAS_MARLINUI_MENU, PSU_CONTROL) static void poweroff(); diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h index 8cca8ec440..ffb8fe8d12 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h @@ -311,28 +311,15 @@ #elif HAS_SPI_TFT // Config for Classic UI (emulated DOGM) and Color UI - #define TFT_A0_PIN EXP1_08_PIN - #define TFT_DC_PIN EXP1_08_PIN - #define TFT_CS_PIN EXP1_07_PIN - #define TFT_RESET_PIN EXP1_04_PIN - #define TFT_BACKLIGHT_PIN EXP1_03_PIN - - //#define TFT_RST_PIN EXP2_07_PIN - #define TFT_MOSI_PIN EXP2_06_PIN - #define TFT_SCK_PIN EXP2_02_PIN - #define TFT_MISO_PIN EXP2_01_PIN - - #define BTN_EN2 EXP2_05_PIN - #define BTN_EN1 EXP2_03_PIN - #define BTN_ENC EXP1_02_PIN - - #define BEEPER_PIN EXP1_01_PIN #define SDCARD_CONNECTION ONBOARD - #define TOUCH_BUTTONS_HW_SPI - #define TOUCH_BUTTONS_HW_SPI_DEVICE 1 + #define BEEPER_PIN EXP1_01_PIN - #define TFT_BUFFER_SIZE 2400 + #define BTN_ENC EXP1_02_PIN + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #define TFT_DC_PIN TFT_A0_PIN #ifndef TFT_WIDTH #define TFT_WIDTH 480 @@ -341,8 +328,41 @@ #define TFT_HEIGHT 320 #endif - #define LCD_READ_ID 0xD3 - #define LCD_USE_DMA_SPI + #if ENABLED(BTT_TFT35_SPI_V1_0) + // 480x320, 3.5", SPI Display with Rotary Encoder. + // Stock Display for the BIQU B1 SE. + #define TFT_CS_PIN EXP2_04_PIN + #define TFT_A0_PIN EXP2_07_PIN + + #define TOUCH_CS_PIN EXP1_04_PIN + #define TOUCH_SCK_PIN EXP1_05_PIN + #define TOUCH_MISO_PIN EXP1_06_PIN + #define TOUCH_MOSI_PIN EXP1_03_PIN + #define TOUCH_INT_PIN EXP1_07_PIN + + #elif ENABLED(MKS_TS35_V2_0) + + #define TFT_CS_PIN EXP1_07_PIN + #define TFT_A0_PIN EXP1_08_PIN + + #define TFT_RESET_PIN EXP1_04_PIN + + #define TFT_BACKLIGHT_PIN EXP1_03_PIN + + #define TOUCH_BUTTONS_HW_SPI + #define TOUCH_BUTTONS_HW_SPI_DEVICE 1 + + //#define TFT_RST_PIN EXP2_07_PIN + #define TFT_SCK_PIN EXP2_02_PIN + #define TFT_MISO_PIN EXP2_01_PIN + #define TFT_MOSI_PIN EXP2_06_PIN + + #define LCD_READ_ID 0xD3 + #define LCD_USE_DMA_SPI + + #define TFT_BUFFER_SIZE 2400 + + #endif #if ENABLED(TFT_CLASSIC_UI) #ifndef TOUCH_CALIBRATION_X @@ -380,7 +400,7 @@ #define SD_DETECT_PIN EXP2_07_PIN - #else // !CR10_STOCKDISPLAY + #else // !CR10_STOCKDISPLAY #define LCD_PINS_RS EXP1_04_PIN @@ -421,7 +441,7 @@ #define NEOPIXEL_PIN EXP1_06_PIN #endif - #else // !FYSETC_MINI_12864 + #else // !FYSETC_MINI_12864 #if ENABLED(MKS_MINI_12864) diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h index 055338f45b..be7e0ab35f 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h @@ -514,6 +514,61 @@ #endif // HAS_WIRED_LCD +#if HAS_SPI_TFT + + #define BTN_ENC EXP1_02_PIN + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #if ENABLED(BTT_TFT35_SPI_V1_0) + // 480x320, 3.5", SPI Display with Rotary Encoder. + // Stock Display for the BIQU B1 SE. + #define TFT_CS_PIN EXP2_04_PIN + #define TFT_A0_PIN EXP2_07_PIN + + #define TOUCH_CS_PIN EXP1_04_PIN + #define TOUCH_SCK_PIN EXP1_05_PIN + #define TOUCH_MISO_PIN EXP1_06_PIN + #define TOUCH_MOSI_PIN EXP1_03_PIN + #define TOUCH_INT_PIN EXP1_07_PIN + + #elif ENABLED(MKS_TS35_V2_0) + + /** ------ ------ + * BEEPER | 1 2 | BTN_ENC SPI1_MISO | 1 2 | SPI1_SCK + * TFT_BKL / LCD_EN | 3 4 | TFT_RESET / LCD_RS BTN_EN1 | 3 4 | SPI1_CS + * TOUCH_CS / LCD_D4 | 5 6 TOUCH_INT / LCD_D5 BTN_EN2 | 5 6 SPI1_MOSI + * SPI1_CS / LCD_D6 | 7 8 | SPI1_RS / LCD_D7 SPI1_RS | 7 8 | RESET + * GND | 9 10 | VCC GND | 9 10 | VCC + * ------ ------ + * EXP1 EXP2 + */ + #define TFT_CS_PIN EXP1_07_PIN // SPI1_CS + #define TFT_A0_PIN EXP1_08_PIN // SPI1_RS + #define TFT_DC_PIN TFT_DC_PIN + + #define TFT_RESET_PIN EXP1_04_PIN + + #define LCD_BACKLIGHT_PIN EXP1_03_PIN + #define TFT_BACKLIGHT_PIN LCD_BACKLIGHT_PIN + + #define TOUCH_BUTTONS_HW_SPI + #define TOUCH_BUTTONS_HW_SPI_DEVICE 1 + + #define TOUCH_CS_PIN EXP1_05_PIN // SPI1_NSS + #define TOUCH_SCK_PIN EXP2_02_PIN // SPI1_SCK + #define TOUCH_MISO_PIN EXP2_01_PIN // SPI1_MISO + #define TOUCH_MOSI_PIN EXP2_06_PIN // SPI1_MOSI + + #define LCD_READ_ID 0xD3 + #define LCD_USE_DMA_SPI + + #define TFT_BUFFER_SIZE 14400 + + #endif + +#endif // HAS_SPI_TFT + // Alter timing for graphical display #if IS_U8GLIB_ST7920 #ifndef BOARD_ST7920_DELAY_1 @@ -527,29 +582,6 @@ #endif #endif -#if HAS_SPI_TFT - - #define BTN_EN1 EXP2_03_PIN - #define BTN_EN2 EXP2_05_PIN - #define BTN_ENC EXP1_02_PIN - - // - // e.g., BTT_TFT35_SPI_V1_0 (480x320, 3.5", SPI Stock Display with Rotary Encoder in BIQU B1 SE) - // - #define TFT_CS_PIN EXP2_04_PIN - #define TFT_A0_PIN EXP2_07_PIN - #define TFT_SCK_PIN EXP2_02_PIN - #define TFT_MISO_PIN EXP2_01_PIN - #define TFT_MOSI_PIN EXP2_06_PIN - - #define TOUCH_INT_PIN EXP1_07_PIN - #define TOUCH_MISO_PIN EXP1_06_PIN - #define TOUCH_MOSI_PIN EXP1_03_PIN - #define TOUCH_SCK_PIN EXP1_05_PIN - #define TOUCH_CS_PIN EXP1_04_PIN - -#endif - // // NeoPixel LED // diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h index d6a7358f3e..2d2df4c68a 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h @@ -459,6 +459,98 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN + #elif HAS_SPI_TFT // Config for Classic UI (emulated DOGM) and Color UI + + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #define TFT_DC_PIN TFT_A0_PIN + + #ifndef TFT_WIDTH + #define TFT_WIDTH 480 + #endif + #ifndef TFT_HEIGHT + #define TFT_HEIGHT 320 + #endif + + #if ENABLED(BTT_TFT35_SPI_V1_0) + // 480x320, 3.5", SPI Display with Rotary Encoder. + // Stock Display for the BIQU B1 SE. + #define TFT_CS_PIN EXP2_04_PIN + #define TFT_A0_PIN EXP2_07_PIN + + #define TOUCH_CS_PIN EXP1_04_PIN + #define TOUCH_SCK_PIN EXP1_05_PIN + #define TOUCH_MISO_PIN EXP1_06_PIN + #define TOUCH_MOSI_PIN EXP1_03_PIN + #define TOUCH_INT_PIN EXP1_07_PIN + + #ifndef TOUCH_CALIBRATION_X + #define TOUCH_CALIBRATION_X 17540 + #endif + #ifndef TOUCH_CALIBRATION_Y + #define TOUCH_CALIBRATION_Y -11388 + #endif + #ifndef TOUCH_OFFSET_X + #define TOUCH_OFFSET_X -21 + #endif + #ifndef TOUCH_OFFSET_Y + #define TOUCH_OFFSET_Y 337 + #endif + #ifndef TOUCH_ORIENTATION + #define TOUCH_ORIENTATION TOUCH_LANDSCAPE + #endif + + #elif ENABLED(MKS_TS35_V2_0) + + /** ------ ------ + * BEEPER | 1 2 | BTN_ENC SPI1_MISO | 1 2 | SPI1_SCK + * TFT_BKL / LCD_EN | 3 4 | TFT_RESET / LCD_RS BTN_EN1 | 3 4 | SPI1_CS + * TOUCH_CS / LCD_D4 | 5 6 TOUCH_INT / LCD_D5 BTN_EN2 | 5 6 SPI1_MOSI + * SPI1_CS / LCD_D6 | 7 8 | SPI1_RS / LCD_D7 SPI1_RS | 7 8 | RESET + * GND | 9 10 | VCC GND | 9 10 | VCC + * ------ ------ + * EXP1 EXP2 + */ + #define TFT_CS_PIN EXP1_07_PIN // SPI1_CS + #define TFT_A0_PIN EXP1_08_PIN // SPI1_RS + + #define TFT_RESET_PIN EXP1_04_PIN + + #define LCD_BACKLIGHT_PIN EXP1_03_PIN + #define TFT_BACKLIGHT_PIN LCD_BACKLIGHT_PIN + + #define TOUCH_BUTTONS_HW_SPI + #define TOUCH_BUTTONS_HW_SPI_DEVICE 1 + + #define TOUCH_CS_PIN EXP1_05_PIN // SPI1_NSS + #define TOUCH_SCK_PIN EXP2_02_PIN // SPI1_SCK + #define TOUCH_MISO_PIN EXP2_01_PIN // SPI1_MISO + #define TOUCH_MOSI_PIN EXP2_06_PIN // SPI1_MOSI + + #define LCD_READ_ID 0xD3 + #define LCD_USE_DMA_SPI + + #define TFT_BUFFER_SIZE 14400 + + #ifndef TOUCH_CALIBRATION_X + #define TOUCH_CALIBRATION_X -17253 + #endif + #ifndef TOUCH_CALIBRATION_Y + #define TOUCH_CALIBRATION_Y 11579 + #endif + #ifndef TOUCH_OFFSET_X + #define TOUCH_OFFSET_X 514 + #endif + #ifndef TOUCH_OFFSET_Y + #define TOUCH_OFFSET_Y -24 + #endif + #ifndef TOUCH_ORIENTATION + #define TOUCH_ORIENTATION TOUCH_LANDSCAPE + #endif + + #endif + #else #define LCD_PINS_RS EXP1_04_PIN @@ -517,27 +609,6 @@ #endif #endif -#if HAS_SPI_TFT - // - // e.g., BTT_TFT35_SPI_V1_0 (480x320, 3.5", SPI Stock Display with Rotary Encoder in BIQU B1 SE) - // - #define TFT_CS_PIN EXP2_04_PIN - #define TFT_A0_PIN EXP2_07_PIN - #define TFT_SCK_PIN EXP2_02_PIN - #define TFT_MISO_PIN EXP2_01_PIN - #define TFT_MOSI_PIN EXP2_06_PIN - - #define TOUCH_INT_PIN EXP1_07_PIN - #define TOUCH_MISO_PIN EXP1_06_PIN - #define TOUCH_MOSI_PIN EXP1_03_PIN - #define TOUCH_SCK_PIN EXP1_05_PIN - #define TOUCH_CS_PIN EXP1_04_PIN - - #define BTN_EN1 EXP2_03_PIN - #define BTN_EN2 EXP2_05_PIN - #define BTN_ENC EXP1_02_PIN -#endif - // // NeoPixel LED // From 7b8a2180ff0a0924a0558a6fbf4c75903f250511 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 3 Jul 2023 00:25:59 +0000 Subject: [PATCH 609/659] [cron] Bump distribution date (2023-07-03) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 5b9b21662c..2489ff9a45 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-02" +//#define STRING_DISTRIBUTION_DATE "2023-07-03" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 7d97a2da45..b18e53e0d7 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-02" + #define STRING_DISTRIBUTION_DATE "2023-07-03" #endif /** From 179260878feb6fd575f8d341454e7c4a5add6c2e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 1 Jul 2023 20:38:17 -0500 Subject: [PATCH 610/659] =?UTF-8?q?=F0=9F=8E=A8=20Misc.=20fixes=20and=20fo?= =?UTF-8?q?rmatting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/MarlinCore.cpp | 4 +--- Marlin/src/core/macros.h | 2 ++ Marlin/src/core/serial.h | 9 ++++++--- Marlin/src/gcode/calibrate/G28.cpp | 14 +++++++++----- Marlin/src/gcode/sd/M24_M25.cpp | 2 +- Marlin/src/pins/ramps/pins_MKS_BASE_16.h | 2 +- Marlin/src/pins/ramps/pins_RAMPS.h | 18 ++++++++++-------- Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h | 2 ++ 8 files changed, 32 insertions(+), 21 deletions(-) diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 260464185f..03b5e8c7a9 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -356,9 +356,7 @@ void startOrResumeJob() { TERN_(GCODE_REPEAT_MARKERS, repeat.reset()); TERN_(CANCEL_OBJECTS, cancelable.reset()); TERN_(LCD_SHOW_E_TOTAL, e_move_accumulator = 0); - #if ENABLED(SET_REMAINING_TIME) - ui.reset_remaining_time(); - #endif + TERN_(SET_REMAINING_TIME, ui.reset_remaining_time()); } print_job_timer.start(); } diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h index e4b9d479c4..da17450c2b 100644 --- a/Marlin/src/core/macros.h +++ b/Marlin/src/core/macros.h @@ -375,6 +375,8 @@ extern "C++" { // C++11 solution that is standards compliant. Return type is deduced automatically + template static constexpr N _MIN(const N val) { return val; } + template static constexpr N _MAX(const N val) { return val; } template static constexpr auto _MIN(const L lhs, const R rhs) -> decltype(lhs + rhs) { return lhs < rhs ? lhs : rhs; } diff --git a/Marlin/src/core/serial.h b/Marlin/src/core/serial.h index 1c23696985..fceaa0992c 100644 --- a/Marlin/src/core/serial.h +++ b/Marlin/src/core/serial.h @@ -242,11 +242,14 @@ void serialprint_truefalse(const bool tf); void serial_offset(const_float_t v, const uint8_t sp=0); // For v==0 draw space (sp==1) or plus (sp==2) void print_bin(const uint16_t val); + void print_pos(NUM_AXIS_ARGS_(const_float_t) FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr); -inline void print_pos(const xyze_pos_t &xyze, FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr) { - print_pos(NUM_AXIS_ELEM_(xyze) prefix, suffix); -} +#if LOGICAL_AXES > 1 + inline void print_pos(const xyze_pos_t &xyze, FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr) { + print_pos(NUM_AXIS_ELEM_(xyze) prefix, suffix); + } +#endif #define SERIAL_POS(SUFFIX,VAR) do { print_pos(VAR, F(" " STRINGIFY(VAR) "="), F(" : " SUFFIX "\n")); }while(0) #define SERIAL_XYZ(PREFIX,V...) do { print_pos(V, F(PREFIX)); }while(0) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 6fb062c170..33a8ed76e6 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -352,7 +352,9 @@ void GcodeSuite::G28() { endstops.enable(true); // Enable endstops for next homing move - bool finalRaiseZ = false; + #if HAS_Z_AXIS + bool finalRaiseZ = false; + #endif #if ENABLED(DELTA) @@ -622,10 +624,12 @@ void GcodeSuite::G28() { // Move to a height where we can use the full xy-area TERN_(DELTA_HOME_TO_SAFE_ZONE, do_blocking_move_to_z(delta_clip_start_height)); - // Move to the configured Z only if Z was homed to MIN, because machines that - // home to MAX historically expect 'G28 Z' to be safe to use at the end of a - // print, and do_move_after_z_homing is not very nuanced. - if (finalRaiseZ) do_move_after_z_homing(); + #if HAS_Z_AXIS + // Move to the configured Z only if Z was homed to MIN, because machines that + // home to MAX historically expect 'G28 Z' to be safe to use at the end of a + // print, and do_move_after_z_homing is not very nuanced. + if (finalRaiseZ) do_move_after_z_homing(); + #endif TERN_(CAN_SET_LEVELING_AFTER_G28, if (leveling_restore_state) set_bed_leveling_enabled()); diff --git a/Marlin/src/gcode/sd/M24_M25.cpp b/Marlin/src/gcode/sd/M24_M25.cpp index 45c596ae99..7bf1ab74d5 100644 --- a/Marlin/src/gcode/sd/M24_M25.cpp +++ b/Marlin/src/gcode/sd/M24_M25.cpp @@ -70,7 +70,7 @@ void GcodeSuite::M24() { #endif if (card.isFileOpen()) { - card.startOrResumeFilePrinting(); // SD card will now be read for commands + card.startOrResumeFilePrinting(); // SD card will now be read for commands startOrResumeJob(); // Start (or resume) the print job timer TERN_(POWER_LOSS_RECOVERY, recovery.prepare()); } diff --git a/Marlin/src/pins/ramps/pins_MKS_BASE_16.h b/Marlin/src/pins/ramps/pins_MKS_BASE_16.h index 765a601fd0..bb6def5ca4 100644 --- a/Marlin/src/pins/ramps/pins_MKS_BASE_16.h +++ b/Marlin/src/pins/ramps/pins_MKS_BASE_16.h @@ -38,7 +38,7 @@ // // Servos // -#define SERVO1_PIN 12 // Digital 12 / Pin 25 +#define SERVO1_PIN 12 // // Omitted RAMPS pins diff --git a/Marlin/src/pins/ramps/pins_RAMPS.h b/Marlin/src/pins/ramps/pins_RAMPS.h index 8b15f82736..08c059477b 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS.h +++ b/Marlin/src/pins/ramps/pins_RAMPS.h @@ -320,14 +320,16 @@ // // TMC software SPI // -#ifndef TMC_SPI_MOSI - #define TMC_SPI_MOSI 66 -#endif -#ifndef TMC_SPI_MISO - #define TMC_SPI_MISO 44 -#endif -#ifndef TMC_SPI_SCK - #define TMC_SPI_SCK 64 +#if HAS_TMC_SPI + #ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI 66 + #endif + #ifndef TMC_SPI_MISO + #define TMC_SPI_MISO 44 + #endif + #ifndef TMC_SPI_SCK + #define TMC_SPI_SCK 64 + #endif #endif #if HAS_TMC_UART diff --git a/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h b/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h index 8c65b2e0b4..49a8c196d0 100644 --- a/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h +++ b/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h @@ -57,6 +57,8 @@ #define CASE_LIGHT_PIN 65 #endif +#define SERVO1_PIN 12 + #include "pins_RAMPS.h" #ifndef BEEPER_PIN From 1feb70c91beced527e2abd29d9465e5d998a694b Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 4 Jul 2023 06:06:45 +0000 Subject: [PATCH 611/659] [cron] Bump distribution date (2023-07-04) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 2489ff9a45..a0bd1552eb 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-03" +//#define STRING_DISTRIBUTION_DATE "2023-07-04" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index b18e53e0d7..c2c0cab989 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-03" + #define STRING_DISTRIBUTION_DATE "2023-07-04" #endif /** From f479f8377d4a6b21ef3b429ed6a6d627c16ffd88 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Tue, 4 Jul 2023 13:25:26 -0700 Subject: [PATCH 612/659] =?UTF-8?q?=F0=9F=8E=A8=20Clean=20up=20TFT=20Color?= =?UTF-8?q?s=20(#26050)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dogm/u8g_dev_tft_upscale_from_128x64.cpp | 6 ++--- Marlin/src/lcd/tft/tft_color.h | 22 +++++++++---------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp index 160ee44122..48c49b5c33 100644 --- a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp +++ b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp @@ -88,8 +88,8 @@ TFT_IO tftio; #define X_HI (UPSCALE(TFT_PIXEL_OFFSET_X, WIDTH) - 1) #define Y_HI (UPSCALE(TFT_PIXEL_OFFSET_Y, HEIGHT) - 1) -// 16 bit color generator: https://ee-programming-notepad.blogspot.com/2016/10/16-bit-color-generator-picker.html -// RGB565 color picker: https://trolsoft.ru/en/articles/rgb565-color-picker +// RGB565 color picker: https://embeddednotepad.com/page/rgb565-color-picker +// Hex code to color name: https://www.color-name.com/ #define COLOR_BLACK 0x0000 // #000000 #define COLOR_WHITE 0xFFFF // #FFFFFF @@ -104,9 +104,7 @@ TFT_IO tftio; #define COLOR_BLUE 0x001F // #0000FF #define COLOR_YELLOW 0xFFE0 // #FFFF00 #define COLOR_MAGENTA 0xF81F // #FF00FF -#define COLOR_FUCHSIA 0xF81F // #FF00FF #define COLOR_CYAN 0x07FF // #00FFFF -#define COLOR_AQUA 0x07FF // #00FFFF #define COLOR_MAROON 0x7800 // #800000 #define COLOR_GREEN 0x03E0 // #008000 diff --git a/Marlin/src/lcd/tft/tft_color.h b/Marlin/src/lcd/tft/tft_color.h index 07518028aa..66ec41e711 100644 --- a/Marlin/src/lcd/tft/tft_color.h +++ b/Marlin/src/lcd/tft/tft_color.h @@ -30,8 +30,8 @@ #define COLOR(color) RGB(((color >> 16) & 0xFF), ((color >> 8) & 0xFF), (color & 0xFF)) #define HALF(color) RGB(RED(color) >> 1, GREEN(color) >> 1, BLUE(color) >> 1) -// 16 bit color generator: https://ee-programming-notepad.blogspot.com/2016/10/16-bit-color-generator-picker.html -// RGB565 color picker: https://trolsoft.ru/en/articles/rgb565-color-picker +// RGB565 color picker: https://embeddednotepad.com/page/rgb565-color-picker +// Hex code to color name: https://www.color-name.com/ #define COLOR_BLACK 0x0000 // #000000 #define COLOR_WHITE 0xFFFF // #FFFFFF @@ -44,13 +44,13 @@ #define COLOR_RED 0xF800 // #FF0000 #define COLOR_SCARLET 0xF904 // #FF2020 #define COLOR_LIME 0x7E00 // #00FF00 +#define COLOR_MIDNIGHT_BLUE 0x20AC // #1E156E #define COLOR_BLUE 0x001F // #0000FF +#define COLOR_OCEAN_BOAT_BLUE 0x03B7 // #0075BD #define COLOR_LIGHT_BLUE 0x061F // #00C3FF #define COLOR_YELLOW 0xFFE0 // #FFFF00 #define COLOR_MAGENTA 0xF81F // #FF00FF -#define COLOR_FUCHSIA 0xF81F // #FF00FF #define COLOR_CYAN 0x07FF // #00FFFF -#define COLOR_AQUA 0x07FF // #00FFFF #define COLOR_DODGER_BLUE 0x041F // #0080FF #define COLOR_VIVID_VIOLET 0x7933 // #772399 @@ -68,23 +68,21 @@ #define COLOR_DARK_ORANGE 0xFC40 // #FF8C00 #define COLOR_CORAL_RED 0xF9E7 // #FF3F3F -#define COLOR_DARK_PURPLE 0x9930 // #992380 - #ifndef COLOR_BACKGROUND - #define COLOR_BACKGROUND 0x20AC // #1E156E + #define COLOR_BACKGROUND COLOR_MIDNIGHT_BLUE #endif #ifndef COLOR_SELECTION_BG - #define COLOR_SELECTION_BG 0x9930 // #992380 + #define COLOR_SELECTION_BG COLOR_DARK_PURPLE #endif #ifndef COLOR_WEBSITE_URL - #define COLOR_WEBSITE_URL 0x03B7 // #0075BD + #define COLOR_WEBSITE_URL COLOR_OCEAN_BOAT_BLUE #endif #ifndef COLOR_INACTIVE #define COLOR_INACTIVE COLOR_GREY #endif #ifndef COLOR_COLD - #define COLOR_COLD COLOR_AQUA + #define COLOR_COLD COLOR_CYAN #endif #ifndef COLOR_HOTEND #define COLOR_HOTEND COLOR_SCARLET @@ -99,7 +97,7 @@ #define COLOR_COOLER COLOR_DARK_ORANGE #endif #ifndef COLOR_FAN - #define COLOR_FAN COLOR_AQUA + #define COLOR_FAN COLOR_CYAN #endif #ifndef COLOR_AXIS_HOMED @@ -117,7 +115,7 @@ #endif #ifndef COLOR_PRINT_TIME - #define COLOR_PRINT_TIME COLOR_AQUA + #define COLOR_PRINT_TIME COLOR_CYAN #endif #ifndef COLOR_PROGRESS_FRAME From 929497d52762f87243d1b521d9703f75b7501aa4 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Tue, 4 Jul 2023 14:07:56 -0700 Subject: [PATCH 613/659] =?UTF-8?q?=F0=9F=93=9D=20Update=20config=20URLs?= =?UTF-8?q?=20(#26049)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 40 +++++++++++---------- Marlin/Configuration_adv.h | 8 ++--- Marlin/src/inc/Conditionals_LCD.h | 2 +- Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 2 +- Marlin/src/lcd/HD44780/marlinui_HD44780.h | 2 +- 5 files changed, 29 insertions(+), 25 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index b21eba76a0..c59bbba32a 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -46,12 +46,13 @@ * * Example Configs: https://github.com/MarlinFirmware/Configurations/branches/all * - * Průša Calculator: https://blog.prusaprinters.org/calculator_3416/ + * Průša Calculator: https://blog.prusa3d.com/calculator_3416/ * * Calibration Guides: https://reprap.org/wiki/Calibration * https://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap + * https://web.archive.org/web/20220907014303/https://sites.google.com/site/repraplogphase/calibration-of-your-reprap * https://youtu.be/wAL9d7FgInk + * https://teachingtechyt.github.io/calibration.html * * Calibration Objects: https://www.thingiverse.com/thing:5573 * https://www.thingiverse.com/thing:1278865 @@ -990,8 +991,8 @@ // Radius around the center where the arm cannot reach #define MIDDLE_DEAD_ZONE_R 0 // (mm) - #define THETA_HOMING_OFFSET 0 // Calculated from Calibration Guide and M360 / M114. See http://reprap.harleystudio.co.za/?page_id=1073 - #define PSI_HOMING_OFFSET 0 // Calculated from Calibration Guide and M364 / M114. See http://reprap.harleystudio.co.za/?page_id=1073 + #define THETA_HOMING_OFFSET 0 // Calculated from Calibration Guide and M360 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/ + #define PSI_HOMING_OFFSET 0 // Calculated from Calibration Guide and M364 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/ #elif ENABLED(MP_SCARA) @@ -1025,7 +1026,7 @@ // Radius around the center where the arm cannot reach #define MIDDLE_DEAD_ZONE_R 0 // (mm) - // Calculated from Calibration Guide and M360 / M114. See http://reprap.harleystudio.co.za/?page_id=1073 + // Calculated from Calibration Guide and M360 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/ #define THETA_HOMING_OFFSET 0 #define PSI_HOMING_OFFSET 0 #endif @@ -1449,7 +1450,7 @@ #define MAG_MOUNTED_STOW_5 { PROBE_STOW_FEEDRATE, { 0, 0, 0 } } // Extra move if needed #endif -// Duet Smart Effector (for delta printers) - https://bit.ly/2ul5U7J +// Duet Smart Effector (for delta printers) - https://docs.duet3d.com/en/Duet3D_hardware/Accessories/Smart_Effector // When the pin is defined you can use M672 to set/reset the probe sensitivity. //#define DUET_SMART_EFFECTOR #if ENABLED(DUET_SMART_EFFECTOR) @@ -1465,7 +1466,7 @@ //#define SENSORLESS_PROBING /** - * Allen key retractable z-probe as seen on many Kossel delta printers - https://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe + * Allen key retractable z-probe as seen on many Kossel delta printers - https://reprap.org/wiki/Kossel#Autolevel_probe * Deploys by touching z-axis belt. Retracts by pushing the probe down. */ //#define Z_PROBE_ALLEN_KEY @@ -2726,7 +2727,7 @@ // // Original RADDS LCD Display+Encoder+SDCardReader -// http://doku.radds.org/dokumentation/lcd-display/ +// https://web.archive.org/web/20200719145306/http://doku.radds.org/dokumentation/lcd-display/ // //#define RADDS_DISPLAY @@ -2756,7 +2757,6 @@ // // RigidBot Panel V1.0 -// http://www.inventapart.com/ // //#define RIGIDBOT_PANEL @@ -2800,8 +2800,9 @@ // // Sainsmart (YwRobot) LCD Displays // -// These require F.Malpartida's LiquidCrystal_I2C library -// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home +// These require LiquidCrystal_I2C library: +// https://github.com/MarlinFirmware/New-LiquidCrystal +// https://github.com/fmalpartida/New-LiquidCrystal/wiki // //#define LCD_SAINSMART_I2C_1602 //#define LCD_SAINSMART_I2C_2004 @@ -2834,7 +2835,7 @@ // // -// 2-wire Non-latching LCD SR from https://goo.gl/aJJ4sH +// 2-wire Non-latching LCD SR from https://github.com/fmalpartida/New-LiquidCrystal/wiki/schematics#user-content-ShiftRegister_connection // LCD configuration: https://reprap.org/wiki/SAV_3D_LCD // //#define SAV_3DLCD @@ -2906,7 +2907,7 @@ // // MaKr3d Makr-Panel with graphic controller and SD support. -// https://reprap.org/wiki/MaKr3d_MaKrPanel +// https://reprap.org/wiki/MaKrPanel // //#define MAKRPANEL @@ -2924,7 +2925,7 @@ // // Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface +// https://web.archive.org/web/20180605050442/http://mauk.cc/webshop/cartesio-shop/electronics/user-interface // //#define CARTESIO_UI @@ -2969,15 +2970,15 @@ // // BigTreeTech Mini 12864 V1.0 is an alias for FYSETC_MINI_12864_2_1. Type A/B. NeoPixel RGB Backlight. +// https://github.com/bigtreetech/MINI-12864/tree/master/mini12864_v1.0 // //#define BTT_MINI_12864_V1 // -// Factory display for Creality CR-10 +// Factory display for Creality CR-10 / CR-7 / Ender-3 // https://www.aliexpress.com/item/32833148327.html // -// This is RAMPS-compatible using a single 10-pin connector. -// (For CR-10 owners who want to replace the Melzi Creality board but retain the display) +// Connect to EXP1 on RAMPS and compatible boards. // //#define CR10_STOCKDISPLAY @@ -3183,6 +3184,7 @@ // // 480x320, 3.5", SPI Display with Rotary Encoder from MKS // Usually paired with MKS Robin Nano V2 & V3 +// https://github.com/makerbase-mks/MKS-TFT-Hardware/tree/master/MKS%20TS35 // //#define MKS_TS35_V2_0 @@ -3247,12 +3249,14 @@ //#define ANET_ET5_TFT35 // -// 1024x600, 7", RGB Stock Display with Rotary Encoder from BIQU-BX +// 1024x600, 7", RGB Stock Display with Rotary Encoder from BIQU BX +// https://github.com/bigtreetech/BIQU-BX/tree/master/Hardware // //#define BIQU_BX_TFT70 // // 480x320, 3.5", SPI Stock Display with Rotary Encoder from BIQU B1 SE Series +// https://github.com/bigtreetech/TFT35-SPI/tree/master/v1 // //#define BTT_TFT35_SPI_V1_0 diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 4d0791c341..b1fde0a45d 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -190,7 +190,7 @@ /** * Hephestos 2 24V heated bed upgrade kit. - * https://store.bq.com/en/heated-bed-kit-hephestos2 + * https://www.en3dstudios.com/product/bq-hephestos-2-heated-bed-kit/ */ //#define HEPHESTOS2_HEATED_BED_KIT #if ENABLED(HEPHESTOS2_HEATED_BED_KIT) @@ -3426,7 +3426,7 @@ //#define PHOTOGRAPH_PIN 23 // Canon Hack Development Kit - // https://captain-slow.dk/2014/03/09/3d-printing-timelapses/ + // https://web.archive.org/web/20200920094805/https://captain-slow.dk/2014/03/09/3d-printing-timelapses/ //#define CHDK_PIN 4 // Optional second move with delay to trigger the camera shutter @@ -4028,7 +4028,7 @@ * Wiki: https://wiki.aus3d.com.au/Magnetic_Encoder * Github: https://github.com/Aus3D/MagneticEncoder * - * Supplier: https://aus3d.com.au/magnetic-encoder-module + * Supplier: https://aus3d.com.au/products/magnetic-encoder-module * Alternative Supplier: https://reliabuild3d.com/ * * Reliabuild encoders have been modified to improve reliability. @@ -4299,7 +4299,7 @@ /** * Using a sensor like the MMU2S * This mode requires a MK3S extruder with a sensor at the extruder idler, like the MMU2S. - * See https://help.prusa3d.com/en/guide/3b-mk3s-mk2-5s-extruder-upgrade_41560, step 11 + * See https://help.prusa3d.com/guide/3b-mk3s-mk2-5s-extruder-upgrade_41560#42048, step 11 */ #if HAS_PRUSA_MMU2S #define MMU2_C0_RETRY 5 // Number of retries (total time = timeout*retries) diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 341c9d0bc0..b052021bb7 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -454,7 +454,7 @@ // Shift register panels // --------------------- // 2 wire Non-latching LCD SR from: -// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection +// https://github.com/fmalpartida/New-LiquidCrystal/wiki/schematics#user-content-ShiftRegister_connection #if ENABLED(FF_INTERFACEBOARD) #define SR_LCD_3W_NL // Non latching 3 wire shift register #define IS_ULTIPANEL 1 diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index c5b4df46f2..148d0877cf 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -81,7 +81,7 @@ #elif ENABLED(SR_LCD_2W_NL) // 2 wire Non-latching LCD SR from: - // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection + // https://github.com/fmalpartida/New-LiquidCrystal/wiki/schematics#user-content-ShiftRegister_connection LCD_CLASS lcd(SR_DATA_PIN, SR_CLK_PIN #if PIN_EXISTS(SR_STROBE) diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.h b/Marlin/src/lcd/HD44780/marlinui_HD44780.h index 719514fb11..6f6f5a6855 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.h +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.h @@ -70,7 +70,7 @@ #elif ENABLED(SR_LCD_2W_NL) // 2 wire Non-latching LCD SR from: - // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection + // https://github.com/fmalpartida/New-LiquidCrystal/wiki/schematics#user-content-ShiftRegister_connection #include #include #define LCD_CLASS LiquidCrystal_SR From ed4e22b548a3ffb348e9d20f995f67a9aa7d2dd6 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 4 Jul 2023 18:31:20 -0500 Subject: [PATCH 614/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20pri?= =?UTF-8?q?nt=5Fpos=20=3D>=20print=5Fxyz?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/debug_section.h | 2 +- Marlin/src/core/serial.cpp | 14 +++++++++++- Marlin/src/core/serial.h | 18 ++++++++------- Marlin/src/core/types.h | 37 +++++++++++++++++++++---------- Marlin/src/gcode/control/M211.cpp | 4 ++-- Marlin/src/module/motion.cpp | 4 +++- 6 files changed, 54 insertions(+), 25 deletions(-) diff --git a/Marlin/src/core/debug_section.h b/Marlin/src/core/debug_section.h index dc4cc0143c..eb3d12fdf5 100644 --- a/Marlin/src/core/debug_section.h +++ b/Marlin/src/core/debug_section.h @@ -41,6 +41,6 @@ private: SERIAL_ECHO(fpre); if (the_msg) SERIAL_ECHO(AS_CHAR(' '), the_msg); SERIAL_CHAR(' '); - print_pos(current_position); + print_xyz(xyz_pos_t(current_position)); } }; diff --git a/Marlin/src/core/serial.cpp b/Marlin/src/core/serial.cpp index bda1527545..2e07f3335a 100644 --- a/Marlin/src/core/serial.cpp +++ b/Marlin/src/core/serial.cpp @@ -121,12 +121,24 @@ void print_bin(uint16_t val) { } } -void print_pos(NUM_AXIS_ARGS_(const_float_t) FSTR_P const prefix/*=nullptr*/, FSTR_P const suffix/*=nullptr*/) { +void _print_xyz(NUM_AXIS_ARGS_(const_float_t) FSTR_P const prefix) { if (prefix) SERIAL_ECHO(prefix); #if NUM_AXES SERIAL_ECHOPGM_P( LIST_N(DOUBLE(NUM_AXES), SP_X_STR, x, SP_Y_STR, y, SP_Z_STR, z, SP_I_STR, i, SP_J_STR, j, SP_K_STR, k, SP_U_STR, u, SP_V_STR, v, SP_W_STR, w) ); #endif +} + +void print_xyz(NUM_AXIS_ARGS_(const_float_t) FSTR_P const prefix/*=nullptr*/, FSTR_P const suffix/*=nullptr*/) { + _print_xyz(NUM_AXIS_LIST_(x, y, z, i, j, k, u, v, w) prefix); + if (suffix) SERIAL_ECHO(suffix); else SERIAL_EOL(); +} + +void print_xyze(LOGICAL_AXIS_ARGS_(const_float_t) FSTR_P const prefix/*=nullptr*/, FSTR_P const suffix/*=nullptr*/) { + _print_xyz(NUM_AXIS_LIST_(x, y, z, i, j, k, u, v, w) prefix); + #if HAS_EXTRUDERS + SERIAL_ECHOPGM_P(SP_E_STR, e); + #endif if (suffix) SERIAL_ECHO(suffix); else SERIAL_EOL(); } diff --git a/Marlin/src/core/serial.h b/Marlin/src/core/serial.h index fceaa0992c..96cff02508 100644 --- a/Marlin/src/core/serial.h +++ b/Marlin/src/core/serial.h @@ -243,16 +243,18 @@ void serial_offset(const_float_t v, const uint8_t sp=0); // For v==0 draw space void print_bin(const uint16_t val); -void print_pos(NUM_AXIS_ARGS_(const_float_t) FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr); +void print_xyz(NUM_AXIS_ARGS_(const_float_t) FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr); +inline void print_xyz(const xyz_pos_t &xyz, FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr) { + print_xyz(NUM_AXIS_ELEM_(xyz) prefix, suffix); +} -#if LOGICAL_AXES > 1 - inline void print_pos(const xyze_pos_t &xyze, FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr) { - print_pos(NUM_AXIS_ELEM_(xyze) prefix, suffix); - } -#endif +void print_xyze(LOGICAL_AXIS_ARGS_(const_float_t) FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr); +inline void print_xyze(const xyze_pos_t &xyze, FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr) { + print_xyze(LOGICAL_AXIS_ELEM_(xyze) prefix, suffix); +} -#define SERIAL_POS(SUFFIX,VAR) do { print_pos(VAR, F(" " STRINGIFY(VAR) "="), F(" : " SUFFIX "\n")); }while(0) -#define SERIAL_XYZ(PREFIX,V...) do { print_pos(V, F(PREFIX)); }while(0) +#define SERIAL_POS(SUFFIX,VAR) do { print_xyz(VAR, F(" " STRINGIFY(VAR) "="), F(" : " SUFFIX "\n")); }while(0) +#define SERIAL_XYZ(PREFIX,V...) do { print_xyz(V, F(PREFIX)); }while(0) /** * Extended string that can echo itself to serial diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 6c0983694c..679cb2ce13 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -48,6 +48,19 @@ template struct IF { typedef L type; }; #define MAIN_AXIS_NAMES NUM_AXIS_LIST(X, Y, Z, I, J, K, U, V, W) #define STR_AXES_MAIN NUM_AXIS_GANG("X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W) +#define LOGICAL_AXIS_GANG(E,V...) NUM_AXIS_GANG(V) GANG_ITEM_E(E) +#define LOGICAL_AXIS_CODE(E,V...) NUM_AXIS_CODE(V) CODE_ITEM_E(E) +#define LOGICAL_AXIS_LIST(E,V...) NUM_AXIS_LIST(V) LIST_ITEM_E(E) +#define LOGICAL_AXIS_LIST_1(V) NUM_AXIS_LIST_1(V) LIST_ITEM_E(V) +#define LOGICAL_AXIS_ARRAY(E,V...) { LOGICAL_AXIS_LIST(E,V) } +#define LOGICAL_AXIS_ARRAY_1(V) { LOGICAL_AXIS_LIST_1(V) } +#define LOGICAL_AXIS_ARGS(T) LOGICAL_AXIS_LIST(T e, T x, T y, T z, T i, T j, T k, T u, T v, T w) +#define LOGICAL_AXIS_ELEM(O) LOGICAL_AXIS_LIST(O.e, O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w) +#define LOGICAL_AXIS_DECL(T,V) LOGICAL_AXIS_LIST(T e=V, T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V) +#define LOGICAL_AXIS_NAMES LOGICAL_AXIS_LIST(E, X, Y, Z, I, J, K, U, V, W) +#define LOGICAL_AXIS_MAP(F) MAP(F, LOGICAL_AXIS_NAMES) +#define STR_AXES_LOGICAL LOGICAL_AXIS_GANG("E", "X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W) + #if NUM_AXES #define NUM_AXES_SEP , #define MAIN_AXIS_MAP(F) MAP(F, MAIN_AXIS_NAMES) @@ -67,18 +80,18 @@ template struct IF { typedef L type; }; #define NUM_AXIS_ELEM_(T) NUM_AXIS_ELEM(T) NUM_AXES_SEP #define MAIN_AXIS_NAMES_ MAIN_AXIS_NAMES NUM_AXES_SEP -#define LOGICAL_AXIS_GANG(E,V...) NUM_AXIS_GANG(V) GANG_ITEM_E(E) -#define LOGICAL_AXIS_CODE(E,V...) NUM_AXIS_CODE(V) CODE_ITEM_E(E) -#define LOGICAL_AXIS_LIST(E,V...) NUM_AXIS_LIST(V) LIST_ITEM_E(E) -#define LOGICAL_AXIS_LIST_1(V) NUM_AXIS_LIST_1(V) LIST_ITEM_E(V) -#define LOGICAL_AXIS_ARRAY(E,V...) { LOGICAL_AXIS_LIST(E,V) } -#define LOGICAL_AXIS_ARRAY_1(V) { LOGICAL_AXIS_LIST_1(V) } -#define LOGICAL_AXIS_ARGS(T) LOGICAL_AXIS_LIST(T e, T x, T y, T z, T i, T j, T k, T u, T v, T w) -#define LOGICAL_AXIS_ELEM(O) LOGICAL_AXIS_LIST(O.e, O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w) -#define LOGICAL_AXIS_DECL(T,V) LOGICAL_AXIS_LIST(T e=V, T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V) -#define LOGICAL_AXIS_NAMES LOGICAL_AXIS_LIST(E, X, Y, Z, I, J, K, U, V, W) -#define LOGICAL_AXIS_MAP(F) MAP(F, LOGICAL_AXIS_NAMES) -#define STR_AXES_LOGICAL LOGICAL_AXIS_GANG("E", "X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W) +#if LOGICAL_AXES + #define LOGICAL_AXES_SEP , +#else + #define LOGICAL_AXES_SEP +#endif + +#define LOGICAL_AXIS_GANG_(V...) LOGICAL_AXIS_GANG(V) LOGICAL_AXES_SEP +#define LOGICAL_AXIS_LIST_(V...) LOGICAL_AXIS_LIST(V) LOGICAL_AXES_SEP +#define LOGICAL_AXIS_LIST_1_(V...) LOGICAL_AXIS_LIST_1(V) LOGICAL_AXES_SEP +#define LOGICAL_AXIS_ARGS_(T) LOGICAL_AXIS_ARGS(T) LOGICAL_AXES_SEP +#define LOGICAL_AXIS_ELEM_(T) LOGICAL_AXIS_ELEM(T) LOGICAL_AXES_SEP +#define LOGICAL_AXIS_NAMES_ LOGICAL_AXIS_NAMES LOGICAL_AXES_SEP #define SECONDARY_AXIS_GANG(V...) GANG_N(SECONDARY_AXES, V) #define SECONDARY_AXIS_CODE(V...) CODE_N(SECONDARY_AXES, V) diff --git a/Marlin/src/gcode/control/M211.cpp b/Marlin/src/gcode/control/M211.cpp index 95ae052a7b..8e7d10ce65 100644 --- a/Marlin/src/gcode/control/M211.cpp +++ b/Marlin/src/gcode/control/M211.cpp @@ -47,8 +47,8 @@ void GcodeSuite::M211_report(const bool forReplay/*=true*/) { report_echo_start(forReplay); const xyz_pos_t l_soft_min = soft_endstop.min.asLogical(), l_soft_max = soft_endstop.max.asLogical(); - print_pos(l_soft_min, F(STR_SOFT_MIN), F(" ")); - print_pos(l_soft_max, F(STR_SOFT_MAX)); + print_xyz(l_soft_min, F(STR_SOFT_MIN), F(" ")); + print_xyz(l_soft_max, F(STR_SOFT_MAX)); } #endif // HAS_SOFTWARE_ENDSTOPS diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 3970273af0..c97523cbd3 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -577,7 +577,9 @@ void _internal_move_to_destination(const_feedRate_t fr_mm_s/*=0.0f*/ */ void do_blocking_move_to(NUM_AXIS_ARGS_(const_float_t) const_feedRate_t fr_mm_s/*=0.0f*/) { DEBUG_SECTION(log_move, "do_blocking_move_to", DEBUGGING(LEVELING)); - if (DEBUGGING(LEVELING)) DEBUG_XYZ("> ", NUM_AXIS_ARGS()); + #if NUM_AXES + if (DEBUGGING(LEVELING)) DEBUG_XYZ("> ", NUM_AXIS_ARGS()); + #endif const feedRate_t xy_feedrate = fr_mm_s ?: feedRate_t(XY_PROBE_FEEDRATE_MM_S); From 16f19b2c1fa6b64abd4de2558c13c9fdc162d600 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 4 Jul 2023 19:19:44 -0500 Subject: [PATCH 615/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20ProUI=20tramming?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/e3v2/proui/dwin.cpp | 28 ++++++++++------------------ buildroot/tests/STM32F103RE_creality | 2 +- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index 34a37da45f..5ea8c71be0 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -2357,7 +2357,7 @@ void setFlow() { setPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refr if (isnan(zval)) LCD_MESSAGE(MSG_ZPROBE_OUT); else - ui.set_status(TS(F("X:"), p_float_t(xpos, 1), F(" Y:"), p_float_t(ypos, 1), F(" Z:"))); + ui.set_status(TS(F("X:"), p_float_t(xpos, 1), F(" Y:"), p_float_t(ypos, 1), F(" Z:"), p_float_t(zval, 2))); inLev = false; } return zval; @@ -2375,14 +2375,6 @@ void setFlow() { setPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refr #endif - inline void tramFL() { tram(0); } - inline void tramFR() { tram(1); } - inline void tramBR() { tram(2); } - inline void tramBL() { tram(3); } - #if ENABLED(BED_TRAMMING_INCLUDE_CENTER) - inline void tramC() { tram(4); } - #endif - #if HAS_BED_PROBE && HAS_MESH void trammingwizard() { @@ -2391,14 +2383,14 @@ void setFlow() { setPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refr return; } bed_mesh_t zval = {0}; - zval[0][0] = tramFL(); + zval[0][0] = tram(0); checkkey = ID_NothingToDo; meshViewer.drawMesh(zval, 2, 2); - zval[1][0] = tramFR(); + zval[1][0] = tram(1); meshViewer.drawMesh(zval, 2, 2); - zval[1][1] = tramBR(); + zval[1][1] = tram(2); meshViewer.drawMesh(zval, 2, 2); - zval[0][1] = tramBL(); + zval[0][1] = tram(3); meshViewer.drawMesh(zval, 2, 2); DWINUI::drawCenteredString(140, F("Calculating average")); @@ -3031,12 +3023,12 @@ void drawPrepareMenu() { #elif !HAS_BED_PROBE && HAS_ZOFFSET_ITEM MENU_ITEM_F(ICON_MoveZ0, "Home Z and disable", onDrawMenuItem, homeZAndDisable); #endif - MENU_ITEM(ICON_Axis, MSG_TRAM_FL, onDrawMenuItem, tramFL); - MENU_ITEM(ICON_Axis, MSG_TRAM_FR, onDrawMenuItem, tramFR); - MENU_ITEM(ICON_Axis, MSG_TRAM_BR, onDrawMenuItem, tramBR); - MENU_ITEM(ICON_Axis, MSG_TRAM_BL, onDrawMenuItem, tramBL); + MENU_ITEM(ICON_Axis, MSG_TRAM_FL, onDrawMenuItem, []{ (void)tram(0); }); + MENU_ITEM(ICON_Axis, MSG_TRAM_FR, onDrawMenuItem, []{ (void)tram(1); }); + MENU_ITEM(ICON_Axis, MSG_TRAM_BR, onDrawMenuItem, []{ (void)tram(2); }); + MENU_ITEM(ICON_Axis, MSG_TRAM_BL, onDrawMenuItem, []{ (void)tram(3); }); #if ENABLED(BED_TRAMMING_INCLUDE_CENTER) - MENU_ITEM(ICON_Axis, MSG_TRAM_C, onDrawMenuItem, tramC); + MENU_ITEM(ICON_Axis, MSG_TRAM_C, onDrawMenuItem, []{ (void)tram(4); }); #endif } updateMenu(trammingMenu); diff --git a/buildroot/tests/STM32F103RE_creality b/buildroot/tests/STM32F103RE_creality index bf56e12d7d..9115d62d1b 100755 --- a/buildroot/tests/STM32F103RE_creality +++ b/buildroot/tests/STM32F103RE_creality @@ -27,7 +27,7 @@ use_example_configs "Creality/Ender-3 S1/STM32F1" opt_disable DWIN_CREALITY_LCD Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN AUTO_BED_LEVELING_BILINEAR CANCEL_OBJECTS FWRETRACT opt_enable DWIN_LCD_PROUI INDIVIDUAL_AXIS_HOMING_SUBMENU SET_PROGRESS_MANUALLY SET_PROGRESS_PERCENT STATUS_MESSAGE_SCROLLING \ SOUND_MENU_ITEM PRINTCOUNTER NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE FILAMENT_RUNOUT_SENSOR \ - BLTOUCH Z_SAFE_HOMING AUTO_BED_LEVELING_UBL MESH_EDIT_MENU \ + BLTOUCH Z_SAFE_HOMING AUTO_BED_LEVELING_UBL MESH_EDIT_MENU LCD_BED_TRAMMING \ LIMITED_MAX_FR_EDITING LIMITED_MAX_ACCEL_EDITING LIMITED_JERK_EDITING BAUD_RATE_GCODE opt_set PREHEAT_3_LABEL '"CUSTOM"' PREHEAT_3_TEMP_HOTEND 240 PREHEAT_3_TEMP_BED 60 PREHEAT_3_FAN_SPEED 128 BOOTSCREEN_TIMEOUT 1100 exec_test $1 $2 "Ender-3 S1 - ProUI (PIDTEMP)" "$3" From 67a9a7e66f1706b56ab76fa9866470fe85e7612a Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 5 Jul 2023 00:32:14 +0000 Subject: [PATCH 616/659] [cron] Bump distribution date (2023-07-05) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index a0bd1552eb..121d03295f 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-04" +//#define STRING_DISTRIBUTION_DATE "2023-07-05" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index c2c0cab989..18388e7eaa 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-04" + #define STRING_DISTRIBUTION_DATE "2023-07-05" #endif /** From 57d26f7e4f614ee4e05e7e97fdc7109d8cfdc702 Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Wed, 5 Jul 2023 08:21:54 +0200 Subject: [PATCH 617/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20HOST=5FSTATUS=5FNO?= =?UTF-8?q?TIFICATIONS=20compile=20(#26040)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/marlinui.cpp | 7 ++----- Marlin/src/lcd/marlinui.h | 1 - buildroot/tests/LPC1768 | 2 +- buildroot/tests/rambo | 4 ++-- buildroot/tests/teensy31 | 2 +- buildroot/tests/teensy35 | 2 +- buildroot/tests/teensy41 | 2 +- 7 files changed, 8 insertions(+), 12 deletions(-) diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index cbab4676c2..69a8e23363 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -1431,9 +1431,6 @@ void MarlinUI::host_notify_P(PGM_P const pstr) { void MarlinUI::host_notify(const char * const cstr) { TERN_(HOST_STATUS_NOTIFICATIONS, hostui.notify(cstr)); } -void MarlinUI::host_status() { - TERN_(HOST_STATUS_NOTIFICATIONS, hostui.notify(status_message)); -} #include @@ -1562,7 +1559,7 @@ void MarlinUI::host_status() { vsnprintf_P(status_message, MAX_MESSAGE_LENGTH, fmt, args); va_end(args); - host_status(); + host_notify(status_message); finish_status(level > 0); } @@ -1644,7 +1641,7 @@ void MarlinUI::host_status() { vsnprintf_P(&msg, 30, fmt, args); va_end(args); - host_status(); + host_notify(msg); } #endif // !HAS_STATUS_MESSAGE diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index 3a39d840e2..9c301e03f6 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -361,7 +361,6 @@ public: static void host_notify_P(PGM_P const fstr); static void host_notify(FSTR_P const fstr) { host_notify_P(FTOP(fstr)); } static void host_notify(const char * const cstr); - static void host_status(); #if HAS_STATUS_MESSAGE diff --git a/buildroot/tests/LPC1768 b/buildroot/tests/LPC1768 index 52769d2967..53fc6f6d7f 100755 --- a/buildroot/tests/LPC1768 +++ b/buildroot/tests/LPC1768 @@ -47,7 +47,7 @@ opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER ADAPTIVE_FAN_SLOWING TE BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET EP_BABYSTEPPING BABYSTEP_GFX_OVERLAY \ PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE SLOW_PWM_HEATERS PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT \ Z_SAFE_HOMING ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE \ - HOST_KEEPALIVE_FEATURE HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT \ + HOST_KEEPALIVE_FEATURE HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT HOST_STATUS_NOTIFICATIONS \ LCD_INFO_MENU ARC_SUPPORT BEZIER_CURVE_SUPPORT EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES \ SDSUPPORT SDCARD_SORT_ALPHA AUTO_REPORT_SD_STATUS EMERGENCY_PARSER SOFT_RESET_ON_KILL SOFT_RESET_VIA_SERIAL exec_test $1 $2 "Re-ARM with NOZZLE_AS_PROBE and many features." "$3" diff --git a/buildroot/tests/rambo b/buildroot/tests/rambo index c0784b95a0..d977fe1b42 100755 --- a/buildroot/tests/rambo +++ b/buildroot/tests/rambo @@ -35,7 +35,7 @@ opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER LCD_PROGRESS_BAR LCD_PROGRESS_BAR_TE PSU_CONTROL LED_POWEROFF_TIMEOUT PS_OFF_CONFIRM PS_OFF_SOUND POWER_OFF_WAIT_FOR_COOLDOWN \ POWER_LOSS_RECOVERY POWER_LOSS_PIN POWER_LOSS_STATE POWER_LOSS_RECOVER_ZHOME POWER_LOSS_ZHOME_POS \ SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER LIN_ADVANCE ADVANCE_K_EXTRA \ - HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT PINS_DEBUGGING MAX7219_DEBUG M114_DETAIL + HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT HOST_STATUS_NOTIFICATIONS PINS_DEBUGGING MAX7219_DEBUG M114_DETAIL opt_add DEBUG_POWER_LOSS_RECOVERY exec_test $1 $2 "RAMBO | EXTRUDERS 2 | CHAR LCD + SD | FIX Probe | ABL-Linear | Advanced Pause | PLR | LEDs ..." "$3" @@ -129,7 +129,7 @@ opt_enable COREYX MIXING_EXTRUDER GRADIENT_MIX \ FIX_MOUNTED_PROBE PROBING_ESTEPPERS_OFF PROBE_OFFSET_WIZARD \ AUTO_BED_LEVELING_BILINEAR X_AXIS_TWIST_COMPENSATION MESH_EDIT_MENU DEBUG_LEVELING_FEATURE G26_MESH_VALIDATION \ Z_SAFE_HOMING SHOW_TEMP_ADC_VALUES HOME_Y_BEFORE_X EMERGENCY_PARSER \ - SD_ABORT_ON_ENDSTOP_HIT HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT HOST_PAUSE_M76 ADVANCED_OK M114_DETAIL \ + SD_ABORT_ON_ENDSTOP_HIT HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT HOST_STATUS_NOTIFICATIONS HOST_PAUSE_M76 ADVANCED_OK M114_DETAIL \ VOLUMETRIC_DEFAULT_ON NO_WORKSPACE_OFFSETS EXTRA_FAN_SPEED FWRETRACT \ USE_CONTROLLER_FAN CONTROLLER_FAN_EDITABLE CONTROLLER_FAN_USE_Z_ONLY opt_disable DISABLE_OTHER_EXTRUDERS diff --git a/buildroot/tests/teensy31 b/buildroot/tests/teensy31 index 5f5b84e0c4..5043bb9644 100755 --- a/buildroot/tests/teensy31 +++ b/buildroot/tests/teensy31 @@ -32,5 +32,5 @@ opt_enable EEPROM_SETTINGS FILAMENT_WIDTH_SENSOR CALIBRATION_GCODE BAUD_RATE_GCO NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE PARK_HEAD_ON_PAUSE \ ARC_SUPPORT BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES \ PHOTO_GCODE PHOTO_POSITION PHOTO_SWITCH_POSITION PHOTO_SWITCH_MS PHOTO_DELAY_MS PHOTO_RETRACT_MM \ - HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT + HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT HOST_STATUS_NOTIFICATIONS exec_test $1 $2 "Teensy3.1 with many features" "$3" diff --git a/buildroot/tests/teensy35 b/buildroot/tests/teensy35 index 38da97c25b..959a207aee 100755 --- a/buildroot/tests/teensy35 +++ b/buildroot/tests/teensy35 @@ -28,7 +28,7 @@ opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT SDCARD_SORT_A PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE SLOW_PWM_HEATERS PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT M100_FREE_MEMORY_WATCHER \ ADVANCED_PAUSE_FEATURE ARC_SUPPORT BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES PARK_HEAD_ON_PAUSE \ PHOTO_GCODE PHOTO_POSITION PHOTO_SWITCH_POSITION PHOTO_SWITCH_MS PHOTO_DELAY_MS PHOTO_RETRACT_MM \ - HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT + HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT HOST_STATUS_NOTIFICATIONS exec_test $1 $2 "Teensy3.5 with many features" "$3" # diff --git a/buildroot/tests/teensy41 b/buildroot/tests/teensy41 index e6a769c282..894abc15b9 100755 --- a/buildroot/tests/teensy41 +++ b/buildroot/tests/teensy41 @@ -28,7 +28,7 @@ opt_enable MAX31865_SENSOR_OHMS_0 MAX31865_CALIBRATION_OHMS_0 \ PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE SLOW_PWM_HEATERS PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT \ ADVANCED_PAUSE_FEATURE ARC_SUPPORT BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES PARK_HEAD_ON_PAUSE \ PHOTO_GCODE PHOTO_POSITION PHOTO_SWITCH_POSITION PHOTO_SWITCH_MS PHOTO_DELAY_MS PHOTO_RETRACT_MM \ - HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT + HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT HOST_STATUS_NOTIFICATIONS opt_add EXTUI_EXAMPLE exec_test $1 $2 "Teensy4.1 with many features" "$3" From bcf61cc91c00b2c0d82aa0e88d0f88e5a18bbe8b Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 6 Jul 2023 00:27:11 +0000 Subject: [PATCH 618/659] [cron] Bump distribution date (2023-07-06) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 121d03295f..1ee4620d26 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-05" +//#define STRING_DISTRIBUTION_DATE "2023-07-06" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 18388e7eaa..a00e1e1887 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-05" + #define STRING_DISTRIBUTION_DATE "2023-07-06" #endif /** From ef3054d1a8d368f5789a07ad5f0b14224ec1ce19 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Fri, 14 Jul 2023 16:24:17 -0700 Subject: [PATCH 619/659] =?UTF-8?q?=E2=9C=A8=20BTT=20Octopus=20Pro=20V1.1?= =?UTF-8?q?=20(STM32H723ZE)=20(#26043)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/boards.h | 1 + Marlin/src/pins/pins.h | 2 + .../pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h | 24 +- .../pins/stm32f4/pins_BTT_SKR_V2_0_common.h | 6 +- .../pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h | 6 +- .../pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h | 6 +- .../pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h | 6 +- .../pins/stm32g0/pins_BTT_MANTA_M8P_common.h | 6 +- .../pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h | 80 +-- .../pins/stm32h7/pins_BTT_OCTOPUS_PRO_V1_1.h | 572 ++++++++++++++++++ .../pins/stm32h7/pins_BTT_SKR_V3_0_common.h | 6 +- ini/stm32h7.ini | 2 +- 12 files changed, 643 insertions(+), 74 deletions(-) create mode 100644 Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_PRO_V1_1.h diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index e9940fc344..50a4ebc194 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -472,6 +472,7 @@ #define BOARD_BTT_SKR_V3_0 6006 // BigTreeTech SKR V3.0 (STM32H743VI / STM32H723VG) #define BOARD_BTT_SKR_V3_0_EZ 6007 // BigTreeTech SKR V3.0 EZ (STM32H743VI / STM32H723VG) #define BOARD_BTT_OCTOPUS_MAX_EZ_V1_0 6008 // BigTreeTech Octopus Max EZ V1.0 (STM32H723ZE) +#define BOARD_BTT_OCTOPUS_PRO_V1_1 6009 // BigTreeTech Octopus Pro v1.1 (STM32H723ZE) // // Espressif ESP32 WiFi diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 4d41d76d88..5c90dbc962 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -821,6 +821,8 @@ #include "stm32h7/pins_BTT_SKR_V3_0_EZ.h" // STM32H7 env:STM32H743VI_btt env:STM32H723VG_btt #elif MB(BTT_OCTOPUS_MAX_EZ_V1_0) #include "stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h" // STM32H7 env:STM32H723ZE_btt +#elif MB(BTT_OCTOPUS_PRO_V1_1) + #include "stm32h7/pins_BTT_OCTOPUS_PRO_V1_1.h" // STM32H7 env:STM32H723ZE_btt #elif MB(TEENSY41) #include "teensy4/pins_TEENSY41.h" // Teensy-4.x env:teensy41 #elif MB(T41U5XBB) diff --git a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h index 4cfb8e7b7e..87ee6ca2ef 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h @@ -44,11 +44,6 @@ // #define SERVO0_PIN PB6 -// -// Misc. Functions -// -#define LED_PIN PA13 - // // Trinamic Stallguard pins // @@ -61,13 +56,6 @@ #define E2_DIAG_PIN PG14 // E2DET #define E3_DIAG_PIN PG15 // E3DET -// -// Z Probe (when not Z_MIN_PIN) -// -#ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN PB7 -#endif - // // Limit Switches // @@ -125,6 +113,13 @@ #define Z_STOP_PIN Z_DIAG_PIN // Z-STOP #endif +// +// Z Probe (when not Z_MIN_PIN) +// +#ifndef Z_MIN_PROBE_PIN + #define Z_MIN_PROBE_PIN PB7 +#endif + // // Filament Runout Sensor // @@ -147,6 +142,11 @@ #define POWER_LOSS_PIN PC0 // PWRDET #endif +// +// Misc. Functions +// +#define LED_PIN PA13 + // // Steppers // diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h index be7e0ab35f..25bce4a140 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h @@ -137,10 +137,8 @@ // // Probe enable // -#if ENABLED(PROBE_ENABLE_DISABLE) - #ifndef PROBE_ENABLE_PIN - #define PROBE_ENABLE_PIN SERVO0_PIN - #endif +#if ENABLED(PROBE_ENABLE_DISABLE) && !defined(PROBE_ENABLE_PIN) + #define PROBE_ENABLE_PIN SERVO0_PIN #endif // diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h index fdcdd36ae8..c2c16ba696 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_E3_EZ_V1_0.h @@ -53,10 +53,8 @@ // // Probe enable // -#if ENABLED(PROBE_ENABLE_DISABLE) - #ifndef PROBE_ENABLE_PIN - #define PROBE_ENABLE_PIN SERVO0_PIN - #endif +#if ENABLED(PROBE_ENABLE_DISABLE) && !defined(PROBE_ENABLE_PIN) + #define PROBE_ENABLE_PIN SERVO0_PIN #endif // diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h index 33b957f53a..f3c79f0cdc 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M4P_V1_0.h @@ -55,10 +55,8 @@ // // Probe enable // -#if ENABLED(PROBE_ENABLE_DISABLE) - #ifndef PROBE_ENABLE_PIN - #define PROBE_ENABLE_PIN SERVO0_PIN - #endif +#if ENABLED(PROBE_ENABLE_DISABLE) && !defined(PROBE_ENABLE_PIN) + #define PROBE_ENABLE_PIN SERVO0_PIN #endif // diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h index 286a59a00b..ed3fb4e9dc 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M5P_V1_0.h @@ -53,10 +53,8 @@ // // Probe enable // -#if ENABLED(PROBE_ENABLE_DISABLE) - #ifndef PROBE_ENABLE_PIN - #define PROBE_ENABLE_PIN SERVO0_PIN - #endif +#if ENABLED(PROBE_ENABLE_DISABLE) && !defined(PROBE_ENABLE_PIN) + #define PROBE_ENABLE_PIN SERVO0_PIN #endif // diff --git a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h index d4a21ba2f2..fc3f679b8d 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_MANTA_M8P_common.h @@ -51,10 +51,8 @@ // // Probe enable // -#if ENABLED(PROBE_ENABLE_DISABLE) - #ifndef PROBE_ENABLE_PIN - #define PROBE_ENABLE_PIN SERVO0_PIN - #endif +#if ENABLED(PROBE_ENABLE_DISABLE) && !defined(PROBE_ENABLE_PIN) + #define PROBE_ENABLE_PIN SERVO0_PIN #endif // diff --git a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h index bd230da6fc..9d30d853b5 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_MAX_EZ.h @@ -45,45 +45,33 @@ // #define SERVO0_PIN PB14 -// -// Misc. Functions -// -#define LED_PIN PA14 - // // Trinamic Stallguard pins // #define X_DIAG_PIN PF0 // M1-STOP #define Y_DIAG_PIN PF2 // M2-STOP #define Z_DIAG_PIN PF4 // M3-STOP -#define Z2_DIAG_PIN PF3 // M4-STOP -#define E0_DIAG_PIN PF1 // M5-STOP -#define E1_DIAG_PIN PC15 // M6-STOP +#define Z2_DIAG_PIN PF3 // M4-DET +#define E0_DIAG_PIN PF1 // M5-DET +#define E1_DIAG_PIN PC15 // M6-DET #define E2_DIAG_PIN PF12 // PWRDET -// -// Z Probe (when not Z_MIN_PIN) -// -#ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN PB15 -#endif - // // Limit Switches // #ifdef X_STALL_SENSITIVITY #define X_STOP_PIN X_DIAG_PIN #if X_HOME_TO_MIN - #define X_MAX_PIN E0_DIAG_PIN // E0DET + #define X_MAX_PIN E0_DIAG_PIN // M4-DET #else - #define X_MIN_PIN E0_DIAG_PIN // E0DET + #define X_MIN_PIN E0_DIAG_PIN // M4-DET #endif #elif NEEDS_X_MINMAX #ifndef X_MIN_PIN #define X_MIN_PIN X_DIAG_PIN // X-STOP #endif #ifndef X_MAX_PIN - #define X_MAX_PIN E0_DIAG_PIN // E0DET + #define X_MAX_PIN E0_DIAG_PIN // M4-DET #endif #else #define X_STOP_PIN X_DIAG_PIN // X-STOP @@ -92,16 +80,16 @@ #ifdef Y_STALL_SENSITIVITY #define Y_STOP_PIN Y_DIAG_PIN #if Y_HOME_TO_MIN - #define Y_MAX_PIN E1_DIAG_PIN // E1DET + #define Y_MAX_PIN E1_DIAG_PIN // M5-DET #else - #define Y_MIN_PIN E1_DIAG_PIN // E1DET + #define Y_MIN_PIN E1_DIAG_PIN // M5-DET #endif #elif NEEDS_Y_MINMAX #ifndef Y_MIN_PIN #define Y_MIN_PIN Y_DIAG_PIN // Y-STOP #endif #ifndef Y_MAX_PIN - #define Y_MAX_PIN E1_DIAG_PIN // E1DET + #define Y_MAX_PIN E1_DIAG_PIN // M5-DET #endif #else #define Y_STOP_PIN Y_DIAG_PIN // Y-STOP @@ -125,25 +113,18 @@ #define Z_STOP_PIN Z_DIAG_PIN // Z-STOP #endif +// +// Z Probe (when not Z_MIN_PIN) +// +#ifndef Z_MIN_PROBE_PIN + #define Z_MIN_PROBE_PIN PB15 +#endif + // // Filament Runout Sensor // -#define FIL_RUNOUT_PIN PF1 // E0DET -#define FIL_RUNOUT2_PIN PF15 // E1DET - -// -// Power Supply Control -// -#ifndef PS_ON_PIN - #define PS_ON_PIN PF13 // PS-ON -#endif - -// -// Power Loss Detection -// -#ifndef POWER_LOSS_PIN - #define POWER_LOSS_PIN PF12 // PWRDET -#endif +#define FIL_RUNOUT_PIN PF1 // M5-DET +#define FIL_RUNOUT2_PIN PC15 // M6-DET // // Steppers @@ -244,6 +225,31 @@ #define FAN5_PIN PF8 // 4 wire Fan5 #define FAN6_PIN PA2 // 4 wire Fan6 +// +// Power Supply Control +// +#ifndef PS_ON_PIN + #define PS_ON_PIN PF13 // PS-ON +#endif + +// +// Power Loss Detection +// +#ifndef POWER_LOSS_PIN + #define POWER_LOSS_PIN PF12 // PWRDET +#endif + +// +// Misc. Functions +// +#define LED_PIN PA14 +#ifndef FILWIDTH_PIN + #define FILWIDTH_PIN PC0 +#endif +#ifndef FILWIDTH2_PIN + #define FILWIDTH2_PIN PF10 +#endif + // // SD Support // diff --git a/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_PRO_V1_1.h b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_PRO_V1_1.h new file mode 100644 index 0000000000..64e1b828f0 --- /dev/null +++ b/Marlin/src/pins/stm32h7/pins_BTT_OCTOPUS_PRO_V1_1.h @@ -0,0 +1,572 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "env_validate.h" + +#define BOARD_INFO_NAME "BTT OCTOPUS PRO V1.1" + +#define HAS_OTG_USB_HOST_SUPPORT // USB Flash Drive support +#define USES_DIAG_JUMPERS + +// Onboard I2C EEPROM +#if ANY(NO_EEPROM_SELECTED, I2C_EEPROM) + #undef NO_EEPROM_SELECTED + #define I2C_EEPROM + #define MARLIN_EEPROM_SIZE 0x1000 // 4K (AT24C32) + #define SOFT_I2C_EEPROM // Force the use of Software I2C + #define I2C_SCL_PIN PB8 + #define I2C_SDA_PIN PB9 +#endif + +// Avoid conflict with TIMER_TONE +#define STEP_TIMER 8 + +// +// Servos +// +#define SERVO0_PIN PB6 + +// +// Trinamic Stallguard pins +// +#define X_DIAG_PIN PG6 // X-STOP +#define Y_DIAG_PIN PG9 // Y-STOP +#define Z_DIAG_PIN PG10 // Z-STOP +#define Z2_DIAG_PIN PG11 // Z2-STOP +#define E0_DIAG_PIN PG12 // E0DET +#define E1_DIAG_PIN PG13 // E1DET +#define E2_DIAG_PIN PG14 // E2DET +#define E3_DIAG_PIN PG15 // E3DET + +// +// Limit Switches +// +#ifdef X_STALL_SENSITIVITY + #define X_STOP_PIN X_DIAG_PIN + #if X_HOME_TO_MIN + #define X_MAX_PIN E0_DIAG_PIN // E0DET + #else + #define X_MIN_PIN E0_DIAG_PIN // E0DET + #endif +#elif NEEDS_X_MINMAX + #ifndef X_MIN_PIN + #define X_MIN_PIN X_DIAG_PIN // X-STOP + #endif + #ifndef X_MAX_PIN + #define X_MAX_PIN E0_DIAG_PIN // E0DET + #endif +#else + #define X_STOP_PIN X_DIAG_PIN // X-STOP +#endif + +#ifdef Y_STALL_SENSITIVITY + #define Y_STOP_PIN Y_DIAG_PIN + #if Y_HOME_TO_MIN + #define Y_MAX_PIN E1_DIAG_PIN // E1DET + #else + #define Y_MIN_PIN E1_DIAG_PIN // E1DET + #endif +#elif NEEDS_Y_MINMAX + #ifndef Y_MIN_PIN + #define Y_MIN_PIN Y_DIAG_PIN // Y-STOP + #endif + #ifndef Y_MAX_PIN + #define Y_MAX_PIN E1_DIAG_PIN // E1DET + #endif +#else + #define Y_STOP_PIN Y_DIAG_PIN // Y-STOP +#endif + +#ifdef Z_STALL_SENSITIVITY + #define Z_STOP_PIN Z_DIAG_PIN + #if Z_HOME_TO_MIN + #define Z_MAX_PIN E2_DIAG_PIN // PWRDET + #else + #define Z_MIN_PIN E2_DIAG_PIN // PWRDET + #endif +#elif NEEDS_Z_MINMAX + #ifndef Z_MIN_PIN + #define Z_MIN_PIN Z_DIAG_PIN // Z-STOP + #endif + #ifndef Z_MAX_PIN + #define Z_MAX_PIN E2_DIAG_PIN // PWRDET + #endif +#else + #define Z_STOP_PIN Z_DIAG_PIN // Z-STOP +#endif + +// +// Z Probe (when not Z_MIN_PIN) +// +#ifndef Z_MIN_PROBE_PIN + #if DISABLED(BLTOUCH) + #define Z_MIN_PROBE_PIN PC5 // Probe (Proximity switch) port + #else + #define Z_MIN_PROBE_PIN PB7 + #endif +#endif + +// +// Filament Runout Sensor +// +#define FIL_RUNOUT_PIN PG12 // E0DET +#define FIL_RUNOUT2_PIN PG13 // E1DET +#define FIL_RUNOUT3_PIN PG14 // E2DET +#define FIL_RUNOUT4_PIN PG15 // E3DET + +// +// Power Supply Control +// +#ifndef PS_ON_PIN + #define PS_ON_PIN PE11 // PS-ON +#endif + +// +// Power Loss Detection +// +#ifndef POWER_LOSS_PIN + #define POWER_LOSS_PIN PC0 // PWRDET +#endif + +// +// Misc. Functions +// +#define LED_PIN PA13 + +// +// Steppers +// +#define X_STEP_PIN PF13 // MOTOR 0 +#define X_DIR_PIN PF12 +#define X_ENABLE_PIN PF14 +#ifndef X_CS_PIN + #define X_CS_PIN PC4 +#endif + +#define Y_STEP_PIN PG0 // MOTOR 1 +#define Y_DIR_PIN PG1 +#define Y_ENABLE_PIN PF15 +#ifndef Y_CS_PIN + #define Y_CS_PIN PD11 +#endif + +#define Z_STEP_PIN PF11 // MOTOR 2 +#define Z_DIR_PIN PG3 +#define Z_ENABLE_PIN PG5 +#ifndef Z_CS_PIN + #define Z_CS_PIN PC6 +#endif + +#define Z2_STEP_PIN PG4 // MOTOR 3 +#define Z2_DIR_PIN PC1 +#define Z2_ENABLE_PIN PA2 +#ifndef Z2_CS_PIN + #define Z2_CS_PIN PC7 +#endif + +#define E0_STEP_PIN PF9 // MOTOR 4 +#define E0_DIR_PIN PF10 +#define E0_ENABLE_PIN PG2 +#ifndef E0_CS_PIN + #define E0_CS_PIN PF2 +#endif + +#define E1_STEP_PIN PC13 // MOTOR 5 +#define E1_DIR_PIN PF0 +#define E1_ENABLE_PIN PF1 +#ifndef E1_CS_PIN + #define E1_CS_PIN PE4 +#endif + +#define E2_STEP_PIN PE2 // MOTOR 6 +#define E2_DIR_PIN PE3 +#define E2_ENABLE_PIN PD4 +#ifndef E2_CS_PIN + + #define E2_CS_PIN PE1 +#endif + +#define E3_STEP_PIN PE6 // MOTOR 7 +#define E3_DIR_PIN PA14 +#define E3_ENABLE_PIN PE0 +#ifndef E3_CS_PIN + #define E3_CS_PIN PD3 +#endif + +// +// Temperature Sensors +// +#define TEMP_BED_PIN PF3 // TB +#define TEMP_1_PIN PF5 // TH1 +#define TEMP_2_PIN PF6 // TH2 +#define TEMP_3_PIN PF7 // TH3 + +#if TEMP_SENSOR_0 == -5 + #define TEMP_0_CS_PIN PF8 // Max31865 CS + #define TEMP_0_SCK_PIN PA5 + #define TEMP_0_MISO_PIN PA6 + #define TEMP_0_MOSI_PIN PA7 + #define SOFTWARE_SPI // Max31865 and LCD SD share a set of SPIs, Set SD to softwareSPI for Max31865 + #define FORCE_SOFT_SPI +#else + #define TEMP_0_PIN PF4 // TH0 +#endif + +// +// Heaters / Fans +// +#define HEATER_BED_PIN PA1 // Hotbed +#define HEATER_0_PIN PA0 // Heater0 +#define HEATER_1_PIN PA3 // Heater1 +#define HEATER_2_PIN PB0 // Heater2 +#define HEATER_3_PIN PB11 // Heater3 + +#define FAN0_PIN PA8 // Fan0 +#define FAN1_PIN PE5 // Fan1 +#define FAN2_PIN PD12 // Fan2 +#define FAN3_PIN PD13 // Fan3 +#define FAN4_PIN PD14 // Fan4 +#define FAN5_PIN PD15 // Fan5 + +// +// SD Support +// +#ifndef SDCARD_CONNECTION + #if HAS_WIRED_LCD + #define SDCARD_CONNECTION LCD + #else + #define SDCARD_CONNECTION ONBOARD + #endif +#endif + +// +// SPI pins for TMC2130 stepper drivers +// +#ifndef TMC_SPI_MOSI + #define TMC_SPI_MOSI PA7 +#endif +#ifndef TMC_SPI_MISO + #define TMC_SPI_MISO PA6 +#endif +#ifndef TMC_SPI_SCK + #define TMC_SPI_SCK PA5 +#endif + +#if HAS_TMC_UART + /** + * TMC2208/TMC2209 stepper drivers + * + * Hardware serial communication ports. + * If undefined software serial is used according to the pins below + */ + //#define X_HARDWARE_SERIAL Serial1 + //#define X2_HARDWARE_SERIAL Serial1 + //#define Y_HARDWARE_SERIAL Serial1 + //#define Y2_HARDWARE_SERIAL Serial1 + //#define Z_HARDWARE_SERIAL Serial1 + //#define Z2_HARDWARE_SERIAL Serial1 + //#define E0_HARDWARE_SERIAL Serial1 + //#define E1_HARDWARE_SERIAL Serial1 + //#define E2_HARDWARE_SERIAL Serial1 + //#define E3_HARDWARE_SERIAL Serial1 + //#define E4_HARDWARE_SERIAL Serial1 + + #define X_SERIAL_TX_PIN PC4 + #define X_SERIAL_RX_PIN X_SERIAL_TX_PIN + + #define Y_SERIAL_TX_PIN PD11 + #define Y_SERIAL_RX_PIN Y_SERIAL_TX_PIN + + #define Z_SERIAL_TX_PIN PC6 + #define Z_SERIAL_RX_PIN Z_SERIAL_TX_PIN + + #define Z2_SERIAL_TX_PIN PC7 + #define Z2_SERIAL_RX_PIN Z2_SERIAL_TX_PIN + + #define E0_SERIAL_TX_PIN PF2 + #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN + + #define E1_SERIAL_TX_PIN PE4 + #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN + + #define E2_SERIAL_TX_PIN PE1 + #define E2_SERIAL_RX_PIN E2_SERIAL_TX_PIN + + #define E3_SERIAL_TX_PIN PD3 + #define E3_SERIAL_RX_PIN E3_SERIAL_TX_PIN + + // Reduce baud rate to improve software serial reliability + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART + +/** ------ ------ + * (BEEPER) PE8 | 1 2 | PE7 (BTN_ENC) (MISO) PA6 | 1 2 | PA5 (SCK) + * (LCD_EN) PE9 | 3 4 | PE10 (LCD_RS) (BTN_EN1) PB2 | 3 4 | PA4 (SD_SS) + * (LCD_D4) PE12 5 6 | PE13 (LCD_D5) (BTN_EN2) PB1 5 6 | PA7 (MOSI) + * (LCD_D6) PE14 | 7 8 | PE15 (LCD_D7) (SD_DETECT) PC15 | 7 8 | RESET + * GND | 9 10 | 5V GND | 9 10 | -- + * ------ ------ + * EXP1 EXP2 + */ +#define EXP1_01_PIN PE8 +#define EXP1_02_PIN PE7 +#define EXP1_03_PIN PE9 +#define EXP1_04_PIN PE10 +#define EXP1_05_PIN PE12 +#define EXP1_06_PIN PE13 +#define EXP1_07_PIN PE14 +#define EXP1_08_PIN PE15 + +#define EXP2_01_PIN PA6 +#define EXP2_02_PIN PA5 +#define EXP2_03_PIN PB1 +#define EXP2_04_PIN PA4 +#define EXP2_05_PIN PB2 +#define EXP2_06_PIN PA7 +#define EXP2_07_PIN PC15 +#define EXP2_08_PIN -1 + +// +// Onboard SD card +// Must use soft SPI because Marlin's default hardware SPI is tied to LCD's EXP2 +// +#if SD_CONNECTION_IS(ONBOARD) + #define ONBOARD_SDIO // Use SDIO for onboard SD + #ifndef SD_DETECT_STATE + #define SD_DETECT_STATE HIGH + #elif SD_DETECT_STATE == LOW + #error "BOARD_BTT_OCTOPUS_V1_1 onboard SD requires SD_DETECT_STATE set to HIGH." + #endif + #define SD_DETECT_PIN PC14 +#elif SD_CONNECTION_IS(LCD) + + #define SDSS PA4 + #define SD_SS_PIN SDSS + #define SD_SCK_PIN PA5 + #define SD_MISO_PIN PA6 + #define SD_MOSI_PIN PA7 + #define SD_DETECT_PIN PC15 + +#elif SD_CONNECTION_IS(CUSTOM_CABLE) + #error "CUSTOM_CABLE is not a supported SDCARD_CONNECTION for this board" +#endif + +#if ENABLED(BTT_MOTOR_EXPANSION) + /** + * ------ ------ + * M3DIAG | 1 2 | M3RX M3STP | 1 2 | M3DIR + * M2DIAG | 3 4 | M2RX M2STP | 3 4 | M2DIR + * M1DIAG 5 6 | M1RX M1DIR 5 6 | M1STP + * M3EN | 7 8 | M2EN M1EN | 7 8 | -- + * GND | 9 10 | -- GND | 9 10 | -- + * ------ ------ + * EXP1 EXP2 + */ + + // M1 on Driver Expansion Module + #define E4_STEP_PIN EXP2_06_PIN + #define E4_DIR_PIN EXP2_05_PIN + #define E4_ENABLE_PIN EXP2_07_PIN + #define E4_DIAG_PIN EXP1_05_PIN + #define E4_CS_PIN EXP1_06_PIN + #if HAS_TMC_UART + #define E4_SERIAL_TX_PIN EXP1_06_PIN + #define E4_SERIAL_RX_PIN E4_SERIAL_TX_PIN + #endif + + // M2 on Driver Expansion Module + #define E5_STEP_PIN EXP2_03_PIN + #define E5_DIR_PIN EXP2_04_PIN + #define E5_ENABLE_PIN EXP1_08_PIN + #define E5_DIAG_PIN EXP1_03_PIN + #define E5_CS_PIN EXP1_04_PIN + #if HAS_TMC_UART + #define E5_SERIAL_TX_PIN EXP1_04_PIN + #define E5_SERIAL_RX_PIN E5_SERIAL_TX_PIN + #endif + + // M3 on Driver Expansion Module + #define E6_STEP_PIN EXP2_01_PIN + #define E6_DIR_PIN EXP2_02_PIN + #define E6_ENABLE_PIN EXP1_07_PIN + #define E6_DIAG_PIN EXP1_01_PIN + #define E6_CS_PIN EXP1_02_PIN + #if HAS_TMC_UART + #define E6_SERIAL_TX_PIN EXP1_02_PIN + #define E6_SERIAL_RX_PIN E6_SERIAL_TX_PIN + #endif + +#endif // BTT_MOTOR_EXPANSION + +// +// LCDs and Controllers +// +#if IS_TFTGLCD_PANEL + + #if ENABLED(TFTGLCD_PANEL_SPI) + #define TFTGLCD_CS EXP2_03_PIN + #endif + +#elif HAS_DWIN_E3V2 || IS_DWIN_MARLINUI + /** + * ------ ------ --- + * | 1 2 | | 1 2 | 1 | + * | 3 4 | RX | 3 4 | TX | 2 | RX + * ENT 5 6 | BEEP ENT 5 6 | BEEP | 3 | TX + * B | 7 8 | A B | 7 8 | A | 4 | + * GND | 9 10 | VCC GND | 9 10 | VCC 5 | + * ------ ------ --- + * EXP1 DWIN TFT + * + * DWIN pins are labeled as printed on DWIN PCB. GND, VCC, A, B, ENT & BEEP can be connected in the same + * orientation as the existing plug/DWIN to EXP1. TX/RX need to be connected to the TFT port, with TX->RX, RX->TX. + */ + + #ifndef NO_CONTROLLER_CUSTOM_WIRING_WARNING + #error "CAUTION! Ender-3 V2 display requires a custom cable. See 'pins_BTT_OCTOPUS_V1_common.h' for details. (Define NO_CONTROLLER_CUSTOM_WIRING_WARNING to suppress this warning.)" + #endif + + #define BEEPER_PIN EXP1_06_PIN + #define BTN_EN1 EXP1_08_PIN + #define BTN_EN2 EXP1_07_PIN + #define BTN_ENC EXP1_05_PIN + +#elif HAS_WIRED_LCD + + #define BEEPER_PIN EXP1_01_PIN + #define BTN_ENC EXP1_02_PIN + + #if ENABLED(CR10_STOCKDISPLAY) + + #define LCD_PINS_RS EXP1_07_PIN + + #define BTN_EN1 EXP1_03_PIN + #define BTN_EN2 EXP1_05_PIN + + #define LCD_PINS_EN EXP1_08_PIN + #define LCD_PINS_D4 EXP1_06_PIN + + #else + + #define LCD_PINS_RS EXP1_04_PIN + + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #define LCD_PINS_EN EXP1_03_PIN + #define LCD_PINS_D4 EXP1_05_PIN + + #if ENABLED(FYSETC_MINI_12864) + #define DOGLCD_CS EXP1_03_PIN + #define DOGLCD_A0 EXP1_04_PIN + //#define LCD_BACKLIGHT_PIN -1 + #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #ifndef RGB_LED_R_PIN + #define RGB_LED_R_PIN EXP1_06_PIN + #endif + #ifndef RGB_LED_G_PIN + #define RGB_LED_G_PIN EXP1_07_PIN + #endif + #ifndef RGB_LED_B_PIN + #define RGB_LED_B_PIN EXP1_08_PIN + #endif + #elif ENABLED(FYSETC_MINI_12864_2_1) + #define NEOPIXEL_PIN EXP1_06_PIN + #endif + #endif // !FYSETC_MINI_12864 + + #if IS_ULTIPANEL + #define LCD_PINS_D5 EXP1_06_PIN + #define LCD_PINS_D6 EXP1_07_PIN + #define LCD_PINS_D7 EXP1_08_PIN + + #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define BTN_ENC_EN LCD_PINS_D7 // Detect the presence of the encoder + #endif + + #endif + + #endif +#endif // HAS_WIRED_LCD + +// Alter timing for graphical display +#if IS_U8GLIB_ST7920 + #define BOARD_ST7920_DELAY_1 120 + #define BOARD_ST7920_DELAY_2 80 + #define BOARD_ST7920_DELAY_3 580 +#endif + +#if HAS_SPI_TFT + #define TFT_CS_PIN EXP2_04_PIN + #define TFT_A0_PIN EXP2_07_PIN + #define TFT_SCK_PIN EXP2_02_PIN + #define TFT_MISO_PIN EXP2_01_PIN + #define TFT_MOSI_PIN EXP2_06_PIN + + #define TOUCH_INT_PIN EXP1_07_PIN + #define TOUCH_MISO_PIN EXP1_06_PIN + #define TOUCH_MOSI_PIN EXP1_03_PIN + #define TOUCH_SCK_PIN EXP1_05_PIN + #define TOUCH_CS_PIN EXP1_04_PIN + + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + #define BTN_ENC EXP1_02_PIN +#endif + +// +// NeoPixel LED +// +#ifndef NEOPIXEL_PIN + #define NEOPIXEL_PIN PB10 +#endif + +#if ENABLED(WIFISUPPORT) + // + // WIFI + // + + /** + * ------- + * GND | 9 | | 8 | 3.3V + * (ESP-CS) PB12 | 10 | | 7 | PB15 (ESP-MOSI) + * 3.3V | 11 | | 6 | PB14 (ESP-MISO) + * (ESP-IO0) PD7 | 12 | | 5 | PB13 (ESP-CLK) + * (ESP-IO4) PD10 | 13 | | 4 | -- + * -- | 14 | | 3 | PE15 (ESP-EN) + * (ESP-RX) PD8 | 15 | | 2 | -- + * (ESP-TX) PD9 | 16 | | 1 | PE14 (ESP-RST) + * ------- + * WIFI + */ + #define ESP_WIFI_MODULE_COM 3 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this + #define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 + #define ESP_WIFI_MODULE_RESET_PIN PG7 + #define ESP_WIFI_MODULE_ENABLE_PIN PG8 + #define ESP_WIFI_MODULE_GPIO0_PIN PD7 + #define ESP_WIFI_MODULE_GPIO4_PIN PD10 +#endif diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h index 2d2df4c68a..f85545a9d3 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h @@ -131,10 +131,8 @@ // // Probe enable // -#if ENABLED(PROBE_ENABLE_DISABLE) - #ifndef PROBE_ENABLE_PIN - #define PROBE_ENABLE_PIN SERVO0_PIN - #endif +#if ENABLED(PROBE_ENABLE_DISABLE) && !defined(PROBE_ENABLE_PIN) + #define PROBE_ENABLE_PIN SERVO0_PIN #endif // diff --git a/ini/stm32h7.ini b/ini/stm32h7.ini index 73d3b8779b..3a64e0644f 100644 --- a/ini/stm32h7.ini +++ b/ini/stm32h7.ini @@ -124,7 +124,7 @@ upload_protocol = cmsis-dap debug_tool = cmsis-dap # -# BigTreeTech Octopus Pro V1.0 / Octopus Max EZ V1.0 (STM32H723ZET6 ARM Cortex-M7) +# BigTreeTech Octopus Pro V1.1 / Octopus Max EZ V1.0 (STM32H723ZET6 ARM Cortex-M7) # [env:STM32H723ZE_btt] extends = STM32H723Zx_btt From 28f69a052c197b07ef7d404e738f2fa9ba641d0d Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 15 Jul 2023 00:26:39 +0000 Subject: [PATCH 620/659] [cron] Bump distribution date (2023-07-15) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 1ee4620d26..d2cb857d7c 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-06" +//#define STRING_DISTRIBUTION_DATE "2023-07-15" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index a00e1e1887..c07aea0bf4 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-06" + #define STRING_DISTRIBUTION_DATE "2023-07-15" #endif /** From 45f7ebb92b11ced03998d590ae1431609c9da68f Mon Sep 17 00:00:00 2001 From: tombrazier <68918209+tombrazier@users.noreply.github.com> Date: Sun, 16 Jul 2023 02:06:21 +0100 Subject: [PATCH 621/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20Input=20Shaping=20?= =?UTF-8?q?"enable"=20for=20SHAPING=5FFREQ=5F[XY]=20=3D=3D=200=20(#26075)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/menu/menu_advanced.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/lcd/menu/menu_advanced.cpp b/Marlin/src/lcd/menu/menu_advanced.cpp index 7ef11d0e06..7c142d8390 100644 --- a/Marlin/src/lcd/menu/menu_advanced.cpp +++ b/Marlin/src/lcd/menu/menu_advanced.cpp @@ -568,7 +568,7 @@ void menu_backlash(); EDIT_ITEM_FAST_N(float42_52, X_AXIS, MSG_SHAPING_ZETA, &editable.decimal, 0.0f, 1.0f, []{ stepper.set_shaping_damping_ratio(X_AXIS, editable.decimal); }); } else - ACTION_ITEM_N(X_AXIS, MSG_SHAPING_ENABLE, []{ stepper.set_shaping_frequency(X_AXIS, SHAPING_FREQ_X); }); + ACTION_ITEM_N(X_AXIS, MSG_SHAPING_ENABLE, []{ stepper.set_shaping_frequency(X_AXIS, (SHAPING_FREQ_X) ?: (SHAPING_MIN_FREQ)); }); #endif #if ENABLED(INPUT_SHAPING_Y) editable.decimal = stepper.get_shaping_frequency(Y_AXIS); @@ -579,7 +579,7 @@ void menu_backlash(); EDIT_ITEM_FAST_N(float42_52, Y_AXIS, MSG_SHAPING_ZETA, &editable.decimal, 0.0f, 1.0f, []{ stepper.set_shaping_damping_ratio(Y_AXIS, editable.decimal); }); } else - ACTION_ITEM_N(Y_AXIS, MSG_SHAPING_ENABLE, []{ stepper.set_shaping_frequency(Y_AXIS, SHAPING_FREQ_Y); }); + ACTION_ITEM_N(Y_AXIS, MSG_SHAPING_ENABLE, []{ stepper.set_shaping_frequency(Y_AXIS, (SHAPING_FREQ_Y) ?: (SHAPING_MIN_FREQ)); }); #endif END_MENU(); From fc2272c4b473a45f2033d4dd82aef4b259b99759 Mon Sep 17 00:00:00 2001 From: Andrew <18502096+classicrocker883@users.noreply.github.com> Date: Sat, 15 Jul 2023 21:10:42 -0400 Subject: [PATCH 622/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix,=20clean=20up=20ProU?= =?UTF-8?q?I,=20JyersUI=20(#26078)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 117 +++++++++++------------ Marlin/src/lcd/e3v2/jyersui/dwin.h | 4 - Marlin/src/lcd/e3v2/proui/dwin.cpp | 40 ++++---- Marlin/src/lcd/e3v2/proui/dwin.h | 38 ++++---- Marlin/src/lcd/e3v2/proui/dwin_defines.h | 2 - 5 files changed, 98 insertions(+), 103 deletions(-) diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 7139f3cdf9..fea1f081f6 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -254,7 +254,7 @@ private: #if HAS_MESH - struct Mesh_Settings { + struct { bool viewer_asymmetric_range = false; bool viewer_print_value = false; bool goto_mesh_value = false; @@ -436,8 +436,7 @@ private: drawing_mesh = false; } - }; - Mesh_Settings mesh_conf; + } mesh_conf; #endif // HAS_MESH @@ -817,14 +816,14 @@ void JyersDWIN::drawStatusArea(const bool icons/*=false*/) { dwinIconShow(ICON, ICON_HotendTemp, 10, 383); dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 25 + 3 * STAT_CHR_W + 5, 384, F("/")); } - if (thermalManager.temp_hotend[0].celsius != hotend) { - hotend = thermalManager.temp_hotend[0].celsius; - dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 28, 384, thermalManager.temp_hotend[0].celsius); + if (thermalManager.degHotend(0) != hotend) { + hotend = thermalManager.degHotend(0); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 28, 384, hotend); dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, COLOR_WHITE), 25 + 3 * STAT_CHR_W + 5, 386); } - if (thermalManager.temp_hotend[0].target != hotendtarget) { - hotendtarget = thermalManager.temp_hotend[0].target; - dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 25 + 4 * STAT_CHR_W + 6, 384, thermalManager.temp_hotend[0].target); + if (thermalManager.wholeDegHotend(0) != hotendtarget) { + hotendtarget = thermalManager.degTargetHotend(0); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 25 + 4 * STAT_CHR_W + 6, 384, hotendtarget); dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, COLOR_WHITE), 25 + 4 * STAT_CHR_W + 39, 386); } if (icons) { @@ -847,14 +846,14 @@ void JyersDWIN::drawStatusArea(const bool icons/*=false*/) { dwinIconShow(ICON, ICON_BedTemp, 10, 416); dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 25 + 3 * STAT_CHR_W + 5, 417, F("/")); } - if (thermalManager.temp_bed.celsius != bed) { - bed = thermalManager.temp_bed.celsius; - dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 28, 417, thermalManager.temp_bed.celsius); + if (thermalManager.degBed() != bed) { + bed = thermalManager.degBed(); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 28, 417, bed); dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, COLOR_WHITE), 25 + 3 * STAT_CHR_W + 5, 419); } - if (thermalManager.temp_bed.target != bedtarget) { - bedtarget = thermalManager.temp_bed.target; - dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 25 + 4 * STAT_CHR_W + 6, 417, thermalManager.temp_bed.target); + if (thermalManager.degTargetBed() != bedtarget) { + bedtarget = thermalManager.degTargetBed(); + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 25 + 4 * STAT_CHR_W + 6, 417, bedtarget); dwinDrawDegreeSymbol(getColor(eeprom_settings.status_area_text, COLOR_WHITE), 25 + 4 * STAT_CHR_W + 39, 419); } #endif @@ -1173,7 +1172,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) drawMenu(ID_ChangeFilament); #else - if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) + if (thermalManager.targetTooColdToExtrude(0)) popupHandler(Popup_ETemp); else { if (thermalManager.temp_hotend[0].is_below_target(2)) { @@ -1181,7 +1180,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra thermalManager.wait_for_hotend(0); } popupHandler(Popup_FilChange); - gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.temp_hotend[0].target)); + gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.degTargetHotend(0))); } #endif } @@ -1314,7 +1313,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawFloat(current_position.e, row); } else { - if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) { + if (thermalManager.targetTooColdToExtrude(0)) { popupHandler(Popup_ETemp); } else { @@ -1338,7 +1337,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawCheckbox(row, probe_deployed); } else { - probe_deployed = !probe_deployed; + probe_deployed ^= true; probe.set_deployed(probe_deployed); drawCheckbox(row, probe_deployed); } @@ -1351,7 +1350,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawCheckbox(row, livemove); } else { - livemove = !livemove; + livemove ^= true; drawCheckbox(row, livemove); } break; @@ -1612,7 +1611,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra planner.synchronize(); redrawMenu(); } - liveadjust = !liveadjust; + liveadjust ^= true; drawCheckbox(row, liveadjust); } break; @@ -1728,7 +1727,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_WriteEEPROM, GET_TEXT_F(MSG_FILAMENTLOAD)); else { - if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) + if (thermalManager.targetTooColdToExtrude(0)) popupHandler(Popup_ETemp); else { if (thermalManager.temp_hotend[0].is_below_target(2)) { @@ -1746,7 +1745,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_ReadEEPROM, GET_TEXT_F(MSG_FILAMENTUNLOAD)); else { - if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) { + if (thermalManager.targetTooColdToExtrude(0)) { popupHandler(Popup_ETemp); } else { @@ -1765,7 +1764,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_ResumeEEPROM, GET_TEXT_F(MSG_FILAMENTCHANGE)); else { - if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) + if (thermalManager.targetTooColdToExtrude(0)) popupHandler(Popup_ETemp); else { if (thermalManager.temp_hotend[0].is_below_target(2)) { @@ -1773,7 +1772,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra thermalManager.wait_for_hotend(0); } popupHandler(Popup_FilChange); - gcode.process_subcommands_now(TS(F("M600B1R"), thermalManager.temp_hotend[0].target)); + gcode.process_subcommands_now(TS(F("M600B1R"), thermalManager.degTargetHotend(0))); } } break; @@ -2002,7 +2001,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case TEMP_HOTEND: if (draw) { drawMenuItem(row, ICON_SetEndTemp, F("Hotend")); - drawFloat(thermalManager.temp_hotend[0].target, row, false, 1); + drawFloat(thermalManager.degTargetHotend(0), row, false, 1); } else modifyValue(thermalManager.temp_hotend[0].target, MIN_E_TEMP, MAX_E_TEMP, 1); @@ -2012,7 +2011,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case TEMP_BED: if (draw) { drawMenuItem(row, ICON_SetBedTemp, F("Bed")); - drawFloat(thermalManager.temp_bed.target, row, false, 1); + drawFloat(thermalManager.degTargetBed(), row, false, 1); } else modifyValue(thermalManager.temp_bed.target, MIN_BED_TEMP, MAX_BED_TEMP, 1); @@ -2690,7 +2689,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawCheckbox(row, eeprom_settings.time_format_textual); } else { - eeprom_settings.time_format_textual = !eeprom_settings.time_format_textual; + eeprom_settings.time_format_textual ^= true; drawCheckbox(row, eeprom_settings.time_format_textual); } break; @@ -2848,7 +2847,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawCheckbox(row, ui.sound_on); } else { - ui.sound_on = !ui.sound_on; + ui.sound_on ^= true; drawCheckbox(row, ui.sound_on); } break; @@ -2931,7 +2930,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawCheckbox(row, runout.enabled); } else { - runout.enabled = !runout.enabled; + runout.enabled ^= true; drawCheckbox(row, runout.enabled); } break; @@ -3378,7 +3377,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawCheckbox(row, mesh_conf.viewer_print_value); } else { - mesh_conf.viewer_print_value = !mesh_conf.viewer_print_value; + mesh_conf.viewer_print_value ^= true; drawCheckbox(row, mesh_conf.viewer_print_value); } break; @@ -3388,7 +3387,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawCheckbox(row, mesh_conf.viewer_asymmetric_range); } else { - mesh_conf.viewer_asymmetric_range = !mesh_conf.viewer_asymmetric_range; + mesh_conf.viewer_asymmetric_range ^= true; drawCheckbox(row, mesh_conf.viewer_asymmetric_range); } break; @@ -3571,7 +3570,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawCheckbox(row, mesh_conf.goto_mesh_value); } else { - mesh_conf.goto_mesh_value = !mesh_conf.goto_mesh_value; + mesh_conf.goto_mesh_value ^= true; current_position.z = 0; mesh_conf.manual_mesh_move(true); drawCheckbox(row, mesh_conf.goto_mesh_value); @@ -3836,7 +3835,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case TUNE_HOTEND: if (draw) { drawMenuItem(row, ICON_SetEndTemp, F("Hotend")); - drawFloat(thermalManager.temp_hotend[0].target, row, false, 1); + drawFloat(thermalManager.degTargetHotend(0), row, false, 1); } else modifyValue(thermalManager.temp_hotend[0].target, MIN_E_TEMP, MAX_E_TEMP, 1); @@ -3847,7 +3846,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case TUNE_BED: if (draw) { drawMenuItem(row, ICON_SetBedTemp, F("Bed")); - drawFloat(thermalManager.temp_bed.target, row, false, 1); + drawFloat(thermalManager.degTargetBed(), row, false, 1); } else modifyValue(thermalManager.temp_bed.target, MIN_BED_TEMP, MAX_BED_TEMP, 1); @@ -3910,7 +3909,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawCheckbox(row, runout.enabled); } else { - runout.enabled = !runout.enabled; + runout.enabled ^= true; drawCheckbox(row, runout.enabled); } break; @@ -3966,7 +3965,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (last_menu) { case ID_Prepare: popupHandler(Popup_FilChange); - gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.temp_hotend[0].target)); + gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.degTargetHotend(0))); break; #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) case ID_ChangeFilament: @@ -3985,7 +3984,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case CHANGEFIL_CHANGE: popupHandler(Popup_FilChange); - gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.temp_hotend[0].target)); + gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.degTargetHotend(0))); break; } break; @@ -4009,7 +4008,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case PREHEATHOTEND_CUSTOM: if (draw) { drawMenuItem(row, ICON_Temperature, F("Custom")); - drawFloat(thermalManager.temp_hotend[0].target, row, false, 1); + drawFloat(thermalManager.degTargetHotend(0), row, false, 1); } else modifyValue(thermalManager.temp_hotend[0].target, EXTRUDE_MINTEMP, MAX_E_TEMP, 1); @@ -4532,8 +4531,8 @@ void JyersDWIN::popupControl() { planner.synchronize(); #else queue.inject(F("M25")); - TERN_(HAS_HOTEND, pausetemp = thermalManager.temp_hotend[0].target); - TERN_(HAS_HEATED_BED, pausebed = thermalManager.temp_bed.target); + TERN_(HAS_HOTEND, pausetemp = thermalManager.degTargetHotend(0)); + TERN_(HAS_HEATED_BED, pausebed = thermalManager.degTargetBed()); TERN_(HAS_FAN, pausefan = thermalManager.fan_speed[0]); thermalManager.cooldown(); #endif @@ -4594,7 +4593,7 @@ void JyersDWIN::popupControl() { #if ENABLED(ADVANCED_PAUSE_FEATURE) case Popup_ConfFilChange: if (selection == 0) { - if (thermalManager.temp_hotend[0].target < thermalManager.extrude_min_temp) + if (thermalManager.targetTooColdToExtrude(0)) popupHandler(Popup_ETemp); else { if (thermalManager.temp_hotend[0].is_below_target(2)) { @@ -4602,7 +4601,7 @@ void JyersDWIN::popupControl() { thermalManager.wait_for_hotend(0); } popupHandler(Popup_FilChange); - gcode.process_subcommands_now(TS(F("M600B1R"), thermalManager.temp_hotend[0].target)); + gcode.process_subcommands_now(TS(F("M600B1R"), thermalManager.degTargetHotend(0))); } } else @@ -4786,12 +4785,12 @@ void JyersDWIN::update() { stateUpdate(); screenUpdate(); switch (process) { - case Proc_Main: mainMenuControl(); break; + case Proc_Main: mainMenuControl(); break; case Proc_Menu: menuControl(); break; case Proc_Value: valueControl(); break; case Proc_Option: optionControl(); break; case Proc_File: fileControl(); break; - case Proc_Print: printScreenControl(); break; + case Proc_Print: printScreenControl(); break; case Proc_Popup: popupControl(); break; case Proc_Confirm: confirmControl(); break; } @@ -4900,20 +4899,20 @@ void JyersDWIN::screenUpdate() { switch (active_menu) { case ID_TempMenu: #if HAS_HOTEND - if (thermalManager.temp_hotend[0].target != hotendtarget) { - hotendtarget = thermalManager.temp_hotend[0].target; + if (thermalManager.degTargetHotend(0) != hotendtarget) { + hotendtarget = thermalManager.degTargetHotend(0); if (scrollpos <= TEMP_HOTEND && TEMP_HOTEND <= scrollpos + MROWS) { if (process != Proc_Value || selection != TEMP_HOTEND - scrollpos) - drawFloat(thermalManager.temp_hotend[0].target, TEMP_HOTEND - scrollpos, false, 1); + drawFloat(hotendtarget, TEMP_HOTEND - scrollpos, false, 1); } } #endif #if HAS_HEATED_BED - if (thermalManager.temp_bed.target != bedtarget) { - bedtarget = thermalManager.temp_bed.target; + if (thermalManager.degTargetBed() != bedtarget) { + bedtarget = thermalManager.degTargetBed(); if (scrollpos <= TEMP_BED && TEMP_BED <= scrollpos + MROWS) { if (process != Proc_Value || selection != TEMP_HOTEND - scrollpos) - drawFloat(thermalManager.temp_bed.target, TEMP_BED - scrollpos, false, 1); + drawFloat(bedtarget, TEMP_BED - scrollpos, false, 1); } } #endif @@ -4922,27 +4921,27 @@ void JyersDWIN::screenUpdate() { fanspeed = thermalManager.fan_speed[0]; if (scrollpos <= TEMP_FAN && TEMP_FAN <= scrollpos + MROWS) { if (process != Proc_Value || selection != TEMP_HOTEND - scrollpos) - drawFloat(thermalManager.fan_speed[0], TEMP_FAN - scrollpos, false, 1); + drawFloat(fanspeed, TEMP_FAN - scrollpos, false, 1); } } #endif break; case ID_Tune: #if HAS_HOTEND - if (thermalManager.temp_hotend[0].target != hotendtarget) { - hotendtarget = thermalManager.temp_hotend[0].target; + if (thermalManager.degTargetHotend(0) != hotendtarget) { + hotendtarget = thermalManager.degTargetHotend(0); if (scrollpos <= TUNE_HOTEND && TUNE_HOTEND <= scrollpos + MROWS) { if (process != Proc_Value || selection != TEMP_HOTEND - scrollpos) - drawFloat(thermalManager.temp_hotend[0].target, TUNE_HOTEND - scrollpos, false, 1); + drawFloat(hotendtarget, TUNE_HOTEND - scrollpos, false, 1); } } #endif #if HAS_HEATED_BED - if (thermalManager.temp_bed.target != bedtarget) { - bedtarget = thermalManager.temp_bed.target; + if (thermalManager.degTargetBed() != bedtarget) { + bedtarget = thermalManager.degTargetBed(); if (scrollpos <= TUNE_BED && TUNE_BED <= scrollpos + MROWS) { if (process != Proc_Value || selection != TEMP_HOTEND - scrollpos) - drawFloat(thermalManager.temp_bed.target, TUNE_BED - scrollpos, false, 1); + drawFloat(bedtarget, TUNE_BED - scrollpos, false, 1); } } #endif @@ -4951,7 +4950,7 @@ void JyersDWIN::screenUpdate() { fanspeed = thermalManager.fan_speed[0]; if (scrollpos <= TUNE_FAN && TUNE_FAN <= scrollpos + MROWS) { if (process != Proc_Value || selection != TEMP_HOTEND - scrollpos) - drawFloat(thermalManager.fan_speed[0], TUNE_FAN - scrollpos, false, 1); + drawFloat(fanspeed, TUNE_FAN - scrollpos, false, 1); } } #endif diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.h b/Marlin/src/lcd/e3v2/jyersui/dwin.h index 17b6176f3d..4f0669f8d8 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.h +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.h @@ -233,10 +233,6 @@ public: static void popupSelect(); static void updateStatusBar(const bool refresh=false); - #if HAS_MESH - static void setMeshViewerStatus(); - #endif - static FSTR_P getMenuTitle(const uint8_t menu); static uint8_t getMenuSize(const uint8_t menu); static void menuItemHandler(const uint8_t menu, const uint8_t item, bool draw=true); diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index 5ea8c71be0..7aa9b1760d 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -129,9 +129,6 @@ #include "lockscreen.h" #endif -#define DEBUG_OUT ENABLED(DEBUG_DWIN) -#include "../../../core/debug_out.h" - #ifndef MACHINE_SIZE #define MACHINE_SIZE STRINGIFY(X_BED_SIZE) "x" STRINGIFY(Y_BED_SIZE) "x" STRINGIFY(Z_MAX_POS) #endif @@ -2203,10 +2200,14 @@ void setMoveZ() { hmiValue.axis = Z_AXIS; setPFloatOnClick(Z_MIN_POS, Z_MAX_POS, void setProbeOffsetX() { setPFloatOnClick(-60, 60, UNITFDIGITS); } void setProbeOffsetY() { setPFloatOnClick(-60, 60, UNITFDIGITS); } void setProbeOffsetZ() { setPFloatOnClick(-10, 10, 2); } - void probeTest() { - LCD_MESSAGE(MSG_M48_TEST); - queue.inject(F("G28O\nM48 P10")); - } + + #if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) + void probeTest() { + LCD_MESSAGE(MSG_M48_TEST); + queue.inject(F("G28O\nM48 P10")); + } + #endif + void probeStow() { probe.stow(); } void probeDeploy() { probe.deploy(); } @@ -3038,7 +3039,7 @@ void drawPrepareMenu() { void drawControlMenu() { checkkey = ID_Menu; - if (SET_MENU_R(ControlMenu, selrect({103, 1, 28, 14}), MSG_CONTROL, 10)) { + if (SET_MENU_R(ControlMenu, selrect({103, 1, 28, 14}), MSG_CONTROL, 11)) { BACK_ITEM(gotoMainMenu); MENU_ITEM(ICON_Temperature, MSG_TEMPERATURE, onDrawTempSubMenu, drawTemperatureMenu); MENU_ITEM(ICON_Motion, MSG_MOTION, onDrawMotionSubMenu, drawMotionMenu); @@ -3066,7 +3067,7 @@ void drawControlMenu() { void drawAdvancedSettingsMenu() { checkkey = ID_Menu; - if (SET_MENU(AdvancedSettings, MSG_ADVANCED_SETTINGS, 22)) { + if (SET_MENU(AdvancedSettings, MSG_ADVANCED_SETTINGS, 23)) { BACK_ITEM(gotoMainMenu); #if ENABLED(EEPROM_SETTINGS) MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, writeEEPROM); @@ -3077,6 +3078,9 @@ void drawAdvancedSettingsMenu() { #if HAS_BED_PROBE MENU_ITEM(ICON_ProbeSet, MSG_ZPROBE_SETTINGS, onDrawSubMenu, drawProbeSetMenu); #endif + #if HAS_HOME_OFFSET + MENU_ITEM(ICON_ProbeSet, MSG_SET_HOME_OFFSETS, onDrawSubMenu, drawHomeOffsetMenu); + #endif MENU_ITEM(ICON_FilSet, MSG_FILAMENT_SET, onDrawSubMenu, drawFilSetMenu); #if ENABLED(PIDTEMP) && ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU) MENU_ITEM_F(ICON_PIDNozzle, STR_HOTEND_PID " Settings", onDrawSubMenu, drawHotendPIDMenu); @@ -3156,7 +3160,7 @@ void drawMoveMenu() { void drawHomeOffsetMenu() { checkkey = ID_Menu; if (SET_MENU(homeOffsetMenu, MSG_SET_HOME_OFFSETS, 4)) { - BACK_ITEM(drawPhySetMenu); + BACK_ITEM(drawAdvancedSettingsMenu); #if HAS_X_AXIS EDIT_ITEM(ICON_HomeOffsetX, MSG_HOME_OFFSET_X, onDrawPFloatMenu, setHomeOffsetX, &home_offset.x); #endif @@ -3195,7 +3199,9 @@ void drawMoveMenu() { EDIT_ITEM(ICON_HSMode, MSG_ENABLE_HS_MODE, onDrawChkbMenu, setHSMode, &bltouch.high_speed_mode); #endif #endif - MENU_ITEM(ICON_ProbeTest, MSG_M48_TEST, onDrawMenuItem, probeTest); + #if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) + MENU_ITEM(ICON_ProbeTest, MSG_M48_TEST, onDrawMenuItem, probeTest); + #endif } updateMenu(ProbeSetMenu); } @@ -3794,9 +3800,9 @@ void drawStepsMenu() { EDIT_ITEM(ICON_PIDCycles, MSG_PID_CYCLE, onDrawPIntMenu, setPidCycles, &hmiData.pidCycles); #endif #if ENABLED(PID_EDIT_MENU) - EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KP, onDrawPFloat2Menu, SetKp, &thermalManager.temp_hotend[0].pid.Kp); - EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KI, onDrawPIDi, SetKi, &thermalManager.temp_hotend[0].pid.Ki); - EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KD, onDrawPIDd, SetKd, &thermalManager.temp_hotend[0].pid.Kd); + EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KP, onDrawPFloat2Menu, setKp, &thermalManager.temp_hotend[0].pid.Kp); + EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KI, onDrawPIDi, setKi, &thermalManager.temp_hotend[0].pid.Ki); + EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KD, onDrawPIDd, setKd, &thermalManager.temp_hotend[0].pid.Kd); #endif #if ENABLED(EEPROM_SETTINGS) MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, writeEEPROM); @@ -3824,9 +3830,9 @@ void drawStepsMenu() { EDIT_ITEM(ICON_PIDCycles, MSG_PID_CYCLE, onDrawPIntMenu, setPidCycles, &hmiData.pidCycles); #endif #if ENABLED(PID_EDIT_MENU) - EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KP, onDrawPFloat2Menu, SetKp, &thermalManager.temp_bed.pid.Kp); - EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KI, onDrawPIDi, SetKi, &thermalManager.temp_bed.pid.Ki); - EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KD, onDrawPIDd, SetKd, &thermalManager.temp_bed.pid.Kd); + EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KP, onDrawPFloat2Menu, setKp, &thermalManager.temp_bed.pid.Kp); + EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KI, onDrawPIDi, setKi, &thermalManager.temp_bed.pid.Ki); + EDIT_ITEM_F(ICON_PIDValue, "Set" STR_KD, onDrawPIDd, setKd, &thermalManager.temp_bed.pid.Kd); #endif #if ENABLED(EEPROM_SETTINGS) MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, writeEEPROM); diff --git a/Marlin/src/lcd/e3v2/proui/dwin.h b/Marlin/src/lcd/e3v2/proui/dwin.h index 41d8020b72..ccc90b3de6 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.h +++ b/Marlin/src/lcd/e3v2/proui/dwin.h @@ -212,8 +212,12 @@ void doCoolDown(); #if HAS_LCD_BRIGHTNESS void turnOffBacklight(); #endif -void applyExtMinT(); -void parkHead(); +#if ENABLED(PREVENT_COLD_EXTRUSION) + void applyExtMinT(); +#endif +#if ENABLED(NOZZLE_PARK_FEATURE) + void parkHead(); +#endif #if HAS_ONESTEP_LEVELING void trammingwizard(); #endif @@ -225,9 +229,6 @@ void parkHead(); void ublMeshSave(); void ublMeshLoad(); #endif -#if ENABLED(HOST_SHUTDOWN_MENU_ITEM) && defined(SHUTDOWN_ACTION) - void hostShutDown(); -#endif #if DISABLED(HAS_BED_PROBE) void homeZAndDisable(); #endif @@ -238,7 +239,7 @@ void gotoMainMenu(); void gotoInfoMenu(); void gotoPowerLossRecovery(); void gotoConfirmToPrint(); -void dwinDrawDashboard(const bool with_update); // Status Area +void dwinDrawDashboard(); // Status Area void drawMainArea(); // Redraw main area void dwinDrawStatusLine(const char *text = ""); // Draw simple status text void dwinRedrawDash(); // Redraw Dash and Status line @@ -291,15 +292,9 @@ void dwinRebootScreen(); #if HAS_MESH void dwinMeshViewer(); #endif -#if HAS_GCODE_PREVIEW - void hmiConfirmToPrint(); -#endif #if HAS_ESDIAG void drawEndStopDiag(); #endif -#if ENABLED(PRINTCOUNTER) - void drawPrintStats(); -#endif // Menu drawing functions void drawPrintFileMenu(); @@ -315,10 +310,6 @@ void drawTrammingMenu(); void drawProbeSetMenu(); #endif void drawFilSetMenu(); -#if ENABLED(NOZZLE_PARK_FEATURE) - void drawParkPosMenu(); -#endif -void drawPhySetMenu(); #if ALL(CASE_LIGHT_MENU, CASELIGHT_USES_BRIGHTNESS) void drawCaseLightMenu(); #endif @@ -371,6 +362,9 @@ void drawStepsMenu(); #include "../../../module/temperature.h" void dwinStartM303(const bool seenC, const int c, const bool seenS, const heater_id_t hid, const celsius_t temp); void dwinPidTuning(tempcontrol_t result); + #if PROUI_TUNING_GRAPH + void dwinDrawPIDMPCPopup(); + #endif #endif #if ENABLED(PIDTEMP) #if ENABLED(PID_AUTOTUNE_MENU) @@ -390,9 +384,11 @@ void drawStepsMenu(); #endif // MPC -#if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) - void drawHotendMPCMenu(); -#endif -#if ENABLED(MPC_AUTOTUNE) - void dwinMPCTuning(tempcontrol_t result); +#if ENABLED(MPCTEMP) + #if ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) + void drawHotendMPCMenu(); + #endif + #if ENABLED(MPC_AUTOTUNE) + void dwinMPCTuning(tempcontrol_t result); + #endif #endif diff --git a/Marlin/src/lcd/e3v2/proui/dwin_defines.h b/Marlin/src/lcd/e3v2/proui/dwin_defines.h index c52d57031c..8ac7c5eb62 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_defines.h +++ b/Marlin/src/lcd/e3v2/proui/dwin_defines.h @@ -28,8 +28,6 @@ * Date: 2022/08/08 */ -//#define DEBUG_DWIN 1 - #if defined(__STM32F1__) || defined(STM32F1) #define DASH_REDRAW 1 #endif From 810c1693aca079c6ecdb1584292c65b384ca1f5f Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 16 Jul 2023 06:08:45 +0000 Subject: [PATCH 623/659] [cron] Bump distribution date (2023-07-16) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index d2cb857d7c..564b67dd23 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-15" +//#define STRING_DISTRIBUTION_DATE "2023-07-16" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index c07aea0bf4..95139f2c1c 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-15" + #define STRING_DISTRIBUTION_DATE "2023-07-16" #endif /** From 381515721481d09c4f30ca8a526e90fc39602fd9 Mon Sep 17 00:00:00 2001 From: Scott Mikutsky Date: Mon, 17 Jul 2023 00:29:56 -0400 Subject: [PATCH 624/659] =?UTF-8?q?=F0=9F=90=9B=20Ensure=20BLTouch=20deplo?= =?UTF-8?q?y=20in=20HS=20Mode=20(#26033)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/probe.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index b3872146d1..8c13da36f9 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -596,10 +596,8 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { thermalManager.wait_for_hotend_heating(active_extruder); #endif - #if ENABLED(BLTOUCH) - if (!bltouch.high_speed_mode && bltouch.deploy()) - return true; // Deploy in LOW SPEED MODE on every probe action - #endif + // Ensure the BLTouch is deployed. Does nothing if already deployed. + if (TERN0(BLTOUCH, bltouch.deploy())) return true; #if HAS_Z_SERVO_PROBE && (ENABLED(Z_SERVO_INTERMEDIATE_STOW) || defined(Z_SERVO_MEASURE_ANGLE)) probe_specific_action(true); // Always re-deploy in this case From fef772ef29e502c8fd2f53e10de383dbcb3529fe Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Sun, 16 Jul 2023 21:32:16 -0700 Subject: [PATCH 625/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20SPI=20TFT=20build?= =?UTF-8?q?=20on=20SKR=20V2=20&=20V3/EZ=20(#26041)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/pins/linux/pins_RAMPS_LINUX.h | 2 +- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h | 32 +++++++-- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h | 2 +- Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h | 2 +- .../pins/stm32f4/pins_BTT_SKR_V2_0_common.h | 67 +++++++++++++++++-- .../pins/stm32h7/pins_BTT_SKR_V3_0_common.h | 29 ++++++-- 6 files changed, 115 insertions(+), 19 deletions(-) diff --git a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h index 19ea927531..bff1167bf6 100644 --- a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h +++ b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h @@ -377,9 +377,9 @@ #if ANY(TFT_COLOR_UI, TFT_CLASSIC_UI, TFT_LVGL_UI) - #define TFT_A0_PIN 43 #define TFT_CS_PIN 49 #define TFT_DC_PIN 43 + #define TFT_A0_PIN TFT_DC_PIN #define TFT_SCK_PIN SD_SCK_PIN #define TFT_MISO_PIN SD_MISO_PIN #define TFT_MOSI_PIN SD_MOSI_PIN diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h index ffb8fe8d12..cc3f91b4ea 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h @@ -319,7 +319,7 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define TFT_DC_PIN TFT_A0_PIN + #define TFT_A0_PIN TFT_DC_PIN #ifndef TFT_WIDTH #define TFT_WIDTH 480 @@ -329,10 +329,23 @@ #endif #if ENABLED(BTT_TFT35_SPI_V1_0) - // 480x320, 3.5", SPI Display with Rotary Encoder. - // Stock Display for the BIQU B1 SE. + + /** + * ------ ------ + * BEEPER | 1 2 | LCD-BTN MISO | 1 2 | CLK + * T_MOSI | 3 4 | T_CS LCD-ENCA | 3 4 | TFTCS + * T_CLK | 5 6 T_MISO LCD-ENCB | 5 6 MOSI + * PENIRQ | 7 8 | F_CS RS | 7 8 | RESET + * GND | 9 10 | VCC GND | 9 10 | NC + * ------ ------ + * EXP1 EXP2 + * + * 480x320, 3.5", SPI Display with Rotary Encoder. + * Stock Display for the BIQU B1 SE Series. + * Schematic: https://github.com/bigtreetech/TFT35-SPI/blob/master/v1/Hardware/BTT%20TFT35-SPI%20V1-SCH.pdf + */ #define TFT_CS_PIN EXP2_04_PIN - #define TFT_A0_PIN EXP2_07_PIN + #define TFT_DC_PIN EXP2_07_PIN #define TOUCH_CS_PIN EXP1_04_PIN #define TOUCH_SCK_PIN EXP1_05_PIN @@ -342,8 +355,17 @@ #elif ENABLED(MKS_TS35_V2_0) + /** ------ ------ + * BEEPER | 1 2 | BTN_ENC SPI1_MISO | 1 2 | SPI1_SCK + * TFT_BKL / LCD_EN | 3 4 | TFT_RESET / LCD_RS BTN_EN1 | 3 4 | SPI1_CS + * TOUCH_CS / LCD_D4 | 5 6 TOUCH_INT / LCD_D5 BTN_EN2 | 5 6 SPI1_MOSI + * SPI1_CS / LCD_D6 | 7 8 | SPI1_RS / LCD_D7 SPI1_RS | 7 8 | RESET + * GND | 9 10 | VCC GND | 9 10 | VCC + * ------ ------ + * EXP1 EXP2 + */ #define TFT_CS_PIN EXP1_07_PIN - #define TFT_A0_PIN EXP1_08_PIN + #define TFT_DC_PIN EXP1_08_PIN #define TFT_RESET_PIN EXP1_04_PIN diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h index a3fb8f6488..463814a5f0 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h @@ -396,8 +396,8 @@ #elif HAS_SPI_TFT // Config for Classic UI (emulated DOGM) and Color UI #define TFT_CS_PIN EXP1_07_PIN - #define TFT_A0_PIN EXP1_08_PIN #define TFT_DC_PIN EXP1_08_PIN + #define TFT_A0_PIN TFT_DC_PIN #define TFT_MISO_PIN EXP2_01_PIN #define TFT_BACKLIGHT_PIN EXP1_03_PIN #define TFT_RESET_PIN EXP1_04_PIN diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h index 42a0155471..748e8cc902 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h @@ -295,8 +295,8 @@ #elif HAS_SPI_TFT // Config for Classic UI (emulated DOGM) and Color UI #define TFT_CS_PIN EXP1_07_PIN - #define TFT_A0_PIN EXP1_08_PIN #define TFT_DC_PIN EXP1_08_PIN + #define TFT_A0_PIN TFT_DC_PIN #define TFT_MISO_PIN EXP2_01_PIN #define TFT_BACKLIGHT_PIN EXP1_03_PIN #define TFT_RESET_PIN EXP1_04_PIN diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h index 25bce4a140..f69f717d81 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h @@ -514,15 +514,40 @@ #if HAS_SPI_TFT + #define TFT_SCK_PIN EXP2_02_PIN + #define TFT_MISO_PIN EXP2_01_PIN + #define TFT_MOSI_PIN EXP2_06_PIN + #define BTN_ENC EXP1_02_PIN #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN + #ifndef TFT_WIDTH + #define TFT_WIDTH 480 + #endif + #ifndef TFT_HEIGHT + #define TFT_HEIGHT 320 + #endif + #if ENABLED(BTT_TFT35_SPI_V1_0) - // 480x320, 3.5", SPI Display with Rotary Encoder. - // Stock Display for the BIQU B1 SE. + + /** + * ------ ------ + * BEEPER | 1 2 | LCD-BTN MISO | 1 2 | CLK + * T_MOSI | 3 4 | T_CS LCD-ENCA | 3 4 | TFTCS + * T_CLK | 5 6 T_MISO LCD-ENCB | 5 6 MOSI + * PENIRQ | 7 8 | F_CS RS | 7 8 | RESET + * GND | 9 10 | VCC GND | 9 10 | NC + * ------ ------ + * EXP1 EXP2 + * + * 480x320, 3.5", SPI Display with Rotary Encoder. + * Stock Display for the BIQU B1 SE Series. + * Schematic: https://github.com/bigtreetech/TFT35-SPI/blob/master/v1/Hardware/BTT%20TFT35-SPI%20V1-SCH.pdf + */ #define TFT_CS_PIN EXP2_04_PIN - #define TFT_A0_PIN EXP2_07_PIN + #define TFT_DC_PIN EXP2_07_PIN + #define TFT_A0_PIN TFT_DC_PIN #define TOUCH_CS_PIN EXP1_04_PIN #define TOUCH_SCK_PIN EXP1_05_PIN @@ -530,6 +555,22 @@ #define TOUCH_MOSI_PIN EXP1_03_PIN #define TOUCH_INT_PIN EXP1_07_PIN + #ifndef TOUCH_CALIBRATION_X + #define TOUCH_CALIBRATION_X 17540 + #endif + #ifndef TOUCH_CALIBRATION_Y + #define TOUCH_CALIBRATION_Y -11388 + #endif + #ifndef TOUCH_OFFSET_X + #define TOUCH_OFFSET_X -21 + #endif + #ifndef TOUCH_OFFSET_Y + #define TOUCH_OFFSET_Y 337 + #endif + #ifndef TOUCH_ORIENTATION + #define TOUCH_ORIENTATION TOUCH_LANDSCAPE + #endif + #elif ENABLED(MKS_TS35_V2_0) /** ------ ------ @@ -542,8 +583,8 @@ * EXP1 EXP2 */ #define TFT_CS_PIN EXP1_07_PIN // SPI1_CS - #define TFT_A0_PIN EXP1_08_PIN // SPI1_RS - #define TFT_DC_PIN TFT_DC_PIN + #define TFT_DC_PIN EXP1_08_PIN // SPI1_RS + #define TFT_A0_PIN TFT_DC_PIN #define TFT_RESET_PIN EXP1_04_PIN @@ -563,6 +604,22 @@ #define TFT_BUFFER_SIZE 14400 + #ifndef TOUCH_CALIBRATION_X + #define TOUCH_CALIBRATION_X -17253 + #endif + #ifndef TOUCH_CALIBRATION_Y + #define TOUCH_CALIBRATION_Y 11579 + #endif + #ifndef TOUCH_OFFSET_X + #define TOUCH_OFFSET_X 514 + #endif + #ifndef TOUCH_OFFSET_Y + #define TOUCH_OFFSET_Y -24 + #endif + #ifndef TOUCH_ORIENTATION + #define TOUCH_ORIENTATION TOUCH_LANDSCAPE + #endif + #endif #endif // HAS_SPI_TFT diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h index f85545a9d3..81d338746a 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h @@ -459,11 +459,13 @@ #elif HAS_SPI_TFT // Config for Classic UI (emulated DOGM) and Color UI + #define TFT_SCK_PIN EXP2_02_PIN + #define TFT_MISO_PIN EXP2_01_PIN + #define TFT_MOSI_PIN EXP2_06_PIN + #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN - #define TFT_DC_PIN TFT_A0_PIN - #ifndef TFT_WIDTH #define TFT_WIDTH 480 #endif @@ -472,10 +474,24 @@ #endif #if ENABLED(BTT_TFT35_SPI_V1_0) - // 480x320, 3.5", SPI Display with Rotary Encoder. - // Stock Display for the BIQU B1 SE. + + /** + * ------ ------ + * BEEPER | 1 2 | LCD-BTN MISO | 1 2 | CLK + * T_MOSI | 3 4 | T_CS LCD-ENCA | 3 4 | TFTCS + * T_CLK | 5 6 T_MISO LCD-ENCB | 5 6 MOSI + * PENIRQ | 7 8 | F_CS RS | 7 8 | RESET + * GND | 9 10 | VCC GND | 9 10 | NC + * ------ ------ + * EXP1 EXP2 + * + * 480x320, 3.5", SPI Display with Rotary Encoder. + * Stock Display for the BIQU B1 SE Series. + * Schematic: https://github.com/bigtreetech/TFT35-SPI/blob/master/v1/Hardware/BTT%20TFT35-SPI%20V1-SCH.pdf + */ #define TFT_CS_PIN EXP2_04_PIN - #define TFT_A0_PIN EXP2_07_PIN + #define TFT_DC_PIN EXP2_07_PIN + #define TFT_A0_PIN TFT_DC_PIN #define TOUCH_CS_PIN EXP1_04_PIN #define TOUCH_SCK_PIN EXP1_05_PIN @@ -511,7 +527,8 @@ * EXP1 EXP2 */ #define TFT_CS_PIN EXP1_07_PIN // SPI1_CS - #define TFT_A0_PIN EXP1_08_PIN // SPI1_RS + #define TFT_DC_PIN EXP1_08_PIN // SPI1_RS + #define TFT_A0_PIN TFT_DC_PIN #define TFT_RESET_PIN EXP1_04_PIN From 821d77fe4c2ea0260d63e02ae65ab575da840801 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 16 Jul 2023 23:43:50 -0500 Subject: [PATCH 626/659] =?UTF-8?q?=F0=9F=8E=A8=20Misc.=20comment=20open?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/LPC1768/HAL_SPI.cpp | 2 +- Marlin/src/HAL/SAMD21/fastio.h | 2 +- Marlin/src/HAL/SAMD51/fastio.h | 4 ++-- Marlin/src/HAL/SAMD51/spi_pins.h | 2 +- Marlin/src/HAL/STM32F1/SPI.h | 10 +++++----- Marlin/src/feature/leds/leds.cpp | 2 +- Marlin/src/feature/leds/pca9533.cpp | 2 +- Marlin/src/feature/leds/pca9533.h | 4 ++-- Marlin/src/feature/meatpack.h | 2 +- Marlin/src/lcd/e3v2/proui/bedlevel_tools.h | 2 +- Marlin/src/lcd/extui/mks_ui/SPIFlashStorage.cpp | 4 ++-- Marlin/src/lcd/tft/tft_string.h | 4 ++-- Marlin/src/module/stepper.cpp | 2 +- Marlin/src/module/thermistor/thermistor_666.h | 2 +- Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h | 2 +- 15 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Marlin/src/HAL/LPC1768/HAL_SPI.cpp b/Marlin/src/HAL/LPC1768/HAL_SPI.cpp index 4d6cb55cff..6ce7f75552 100644 --- a/Marlin/src/HAL/LPC1768/HAL_SPI.cpp +++ b/Marlin/src/HAL/LPC1768/HAL_SPI.cpp @@ -318,7 +318,7 @@ void SPIClass::dmaSend(void *buf, uint16_t length, bool minc) { // Enable DMA GPDMA_ChannelCmd(0, ENABLE); - /* + /** * Observed behaviour on normal data transfer completion (SKR 1.3 board / LPC1768 MCU) * GPDMA_STAT_INTTC flag is SET * GPDMA_STAT_INTERR flag is NOT SET diff --git a/Marlin/src/HAL/SAMD21/fastio.h b/Marlin/src/HAL/SAMD21/fastio.h index df907ff7ec..471e8b62ab 100644 --- a/Marlin/src/HAL/SAMD21/fastio.h +++ b/Marlin/src/HAL/SAMD21/fastio.h @@ -129,7 +129,7 @@ * Added as necessary or if I feel like it- not a comprehensive list! */ -/* +/** * Some of these share the same source and so can't be used in the same time */ #define PWM_PIN(P) (WITHIN(P, 2, 13) || WITHIN(P, 22, 23) || WITHIN(P, 44, 45) || P == 48) diff --git a/Marlin/src/HAL/SAMD51/fastio.h b/Marlin/src/HAL/SAMD51/fastio.h index 0acf481317..3d43bdb24d 100644 --- a/Marlin/src/HAL/SAMD51/fastio.h +++ b/Marlin/src/HAL/SAMD51/fastio.h @@ -130,7 +130,7 @@ #ifdef ADAFRUIT_GRAND_CENTRAL_M4 - /* + /** * Adafruit Grand Central M4 has a lot of PWMs the availables are listed here. * Some of these share the same source and so can't be used in the same time */ @@ -176,7 +176,7 @@ #define digitalPinToAnalogInput(P) (WITHIN(P, 67, 74) ? (P) - 67 : WITHIN(P, 54, 61) ? 8 + (P) - 54 : WITHIN(P, 12, 13) ? 16 + (P) - 12 : P == 9 ? 18 : -1) - /* + /** * pins */ diff --git a/Marlin/src/HAL/SAMD51/spi_pins.h b/Marlin/src/HAL/SAMD51/spi_pins.h index f1e4fd4302..2c7cbeb994 100644 --- a/Marlin/src/HAL/SAMD51/spi_pins.h +++ b/Marlin/src/HAL/SAMD51/spi_pins.h @@ -27,7 +27,7 @@ #ifdef ADAFRUIT_GRAND_CENTRAL_M4 - /* + /** * AGCM4 Default SPI Pins * * SS SCK MISO MOSI diff --git a/Marlin/src/HAL/STM32F1/SPI.h b/Marlin/src/HAL/STM32F1/SPI.h index 0941fa55b7..27bf684388 100644 --- a/Marlin/src/HAL/STM32F1/SPI.h +++ b/Marlin/src/HAL/STM32F1/SPI.h @@ -58,7 +58,7 @@ #define SPI_CLOCK_DIV128 SPI_BAUD_PCLK_DIV_128 #define SPI_CLOCK_DIV256 SPI_BAUD_PCLK_DIV_256 -/* +/** * Roger Clark. 20150106 * Commented out redundant AVR defined * @@ -153,7 +153,7 @@ private: friend class SPIClass; }; -/* +/** * Kept for compat. */ static const uint8_t ff = 0xFF; @@ -233,7 +233,7 @@ public: void onReceive(void(*)()); void onTransmit(void(*)()); - /* + /** * I/O */ @@ -314,7 +314,7 @@ public: uint8_t dmaSendRepeat(uint16_t length); uint8_t dmaSendAsync(const void * transmitBuf, uint16_t length, bool minc = 1); - /* + /** * Pin accessors */ @@ -398,7 +398,7 @@ private: void updateSettings(); - /* + /** * Functions added for DMA transfers with Callback. * Experimental. */ diff --git a/Marlin/src/feature/leds/leds.cpp b/Marlin/src/feature/leds/leds.cpp index 7305581cd0..ac7f181516 100644 --- a/Marlin/src/feature/leds/leds.cpp +++ b/Marlin/src/feature/leds/leds.cpp @@ -105,7 +105,7 @@ void LEDLights::setup() { PCA9632_set_led_color(curColor); // blackout delay(200); - /* + /** * LED Pin Counter steps -> events * | 0-100 | 100-200 | 200-300 | 300-400 | * fade in steady | fade out diff --git a/Marlin/src/feature/leds/pca9533.cpp b/Marlin/src/feature/leds/pca9533.cpp index 914db21ba3..d71760e2cb 100644 --- a/Marlin/src/feature/leds/pca9533.cpp +++ b/Marlin/src/feature/leds/pca9533.cpp @@ -1,4 +1,4 @@ -/* +/** * Marlin 3D Printer Firmware * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * diff --git a/Marlin/src/feature/leds/pca9533.h b/Marlin/src/feature/leds/pca9533.h index 431058c491..3a18e96b24 100644 --- a/Marlin/src/feature/leds/pca9533.h +++ b/Marlin/src/feature/leds/pca9533.h @@ -1,4 +1,4 @@ -/* +/** * Marlin 3D Printer Firmware * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * @@ -21,7 +21,7 @@ */ #pragma once -/* +/** * Driver for the PCA9533 LED controller found on the MightyBoard * used by FlashForge Creator Pro, MakerBot, etc. * Written 2020 APR 01 by grauerfuchs diff --git a/Marlin/src/feature/meatpack.h b/Marlin/src/feature/meatpack.h index 98a535e592..37039c3056 100644 --- a/Marlin/src/feature/meatpack.h +++ b/Marlin/src/feature/meatpack.h @@ -20,7 +20,7 @@ * */ -/* +/** * MeatPack G-code Compression * * Algorithm & Implementation: Scott Mudge - mail@scottmudge.com diff --git a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h index 2e9b66aa30..7bd236760a 100644 --- a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h +++ b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h @@ -1,4 +1,4 @@ -/* +/** * Marlin 3D Printer Firmware * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * diff --git a/Marlin/src/lcd/extui/mks_ui/SPIFlashStorage.cpp b/Marlin/src/lcd/extui/mks_ui/SPIFlashStorage.cpp index 43149dc60c..2c6dda5121 100644 --- a/Marlin/src/lcd/extui/mks_ui/SPIFlashStorage.cpp +++ b/Marlin/src/lcd/extui/mks_ui/SPIFlashStorage.cpp @@ -59,7 +59,7 @@ uint32_t SPIFlashStorage::m_startAddress; while (index < inputLength && index - count < max && input[index] == pixel) index++; if (index - count == 1) { - /* + /** * Failed to "replicate" the current pixel. See how many to copy. * Avoid a replicate run of only 2-pixels after a literal run. There * is no gain in this, and there is a risK of loss if the run after @@ -68,7 +68,7 @@ uint32_t SPIFlashStorage::m_startAddress; */ while (index < inputLength && index - count < max && (input[index] != input[index - 1] || (index > 1 && input[index] != input[index - 2]))) index++; - /* + /** * Check why this run stopped. If it found two identical pixels, reset * the index so we can add a run. Do this twice: the previous run * tried to detect a replicate run of at least 3 pixels. So we may be diff --git a/Marlin/src/lcd/tft/tft_string.h b/Marlin/src/lcd/tft/tft_string.h index 1284d282f1..420a3cc2b5 100644 --- a/Marlin/src/lcd/tft/tft_string.h +++ b/Marlin/src/lcd/tft/tft_string.h @@ -27,7 +27,7 @@ #define NO_GLYPH 0xFF -/* +/** * Marlin fonts with optional antialiasing. Fonts use unifont_t font header and glyph_t glyphs headers. * Number of glyphs (fontEndEncoding - fontStartEncoding) can not exceed 256 (TBD). * Some glyphs may be left undefined with NO_GLYPH @@ -37,7 +37,7 @@ #define FONT_MARLIN_GLYPHS_2BPP 0x82 #define FONT_MARLIN_GLYPHS_4BPP 0x84 -/* +/** * TFT fonts with optional antialiasing. Fonts use unifont_t font header and uniglyph_t glyphs headers. * Each glyph is prepended with its unicode. * Designed to be used for Japanese, Korean, Simplified Chinese and Traditional Chinese glyphs. diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 6133b6e39b..d1c8eef69c 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -2411,7 +2411,7 @@ hal_timer_t Stepper::block_phase_isr() { } #endif // LIN_ADVANCE - /* + /** * Adjust Laser Power - Decelerating * trap_ramp_entry_decr - holds the precalculated value to decrease the current power per decel step. */ diff --git a/Marlin/src/module/thermistor/thermistor_666.h b/Marlin/src/module/thermistor/thermistor_666.h index bba3e606fc..14a03c23b5 100644 --- a/Marlin/src/module/thermistor/thermistor_666.h +++ b/Marlin/src/module/thermistor/thermistor_666.h @@ -27,7 +27,7 @@ */ //#include "output_table.h" -/* +/** * Parameters: * A: -0.000480634 * B: 0.00031362 diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h index 02daab3e63..18c8e22dff 100644 --- a/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h +++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h @@ -39,7 +39,7 @@ #include "pins_CHITU3D_common.h" -/* +/** * Circuit diagram https://github.com/MarlinFirmware/Marlin/files/3401484/x5sa-main_board-2.pdf * * Details on the 30 pin ribbon pins. From: https://3dtoday.ru/blogs/artem-sr/tronxy-x5sa-pro-ustanovka-bfp-touch-na-board-chitu3d-v6-cxy-v6-191017 From 5fd0247239445976dc38c1d238ebc718e2bfe9ce Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 17 Jul 2023 01:01:14 -0500 Subject: [PATCH 627/659] =?UTF-8?q?=F0=9F=8E=A8=20Rename=20Helvetica=2014?= =?UTF-8?q?=20(1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fontdata/Helvetica/{helvetica_14.cpp => Helvetica_14_.cpp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Marlin/src/lcd/tft/fontdata/Helvetica/{helvetica_14.cpp => Helvetica_14_.cpp} (100%) diff --git a/Marlin/src/lcd/tft/fontdata/Helvetica/helvetica_14.cpp b/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_14_.cpp similarity index 100% rename from Marlin/src/lcd/tft/fontdata/Helvetica/helvetica_14.cpp rename to Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_14_.cpp From a5d47f84ae9eeb5c29280b279bfc844bac559c0d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 17 Jul 2023 01:01:36 -0500 Subject: [PATCH 628/659] =?UTF-8?q?=F0=9F=8E=A8=20Rename=20Helvetica=2014?= =?UTF-8?q?=20(2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fontdata/Helvetica/{Helvetica_14_.cpp => Helvetica_14.cpp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Marlin/src/lcd/tft/fontdata/Helvetica/{Helvetica_14_.cpp => Helvetica_14.cpp} (100%) diff --git a/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_14_.cpp b/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_14.cpp similarity index 100% rename from Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_14_.cpp rename to Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_14.cpp From 4d6e5c12b3d40747ff62cb140fdc3c293c9dbab5 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 17 Jul 2023 06:20:28 +0000 Subject: [PATCH 629/659] [cron] Bump distribution date (2023-07-17) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 564b67dd23..9b48bdda72 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-16" +//#define STRING_DISTRIBUTION_DATE "2023-07-17" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 95139f2c1c..aa5089e42e 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-16" + #define STRING_DISTRIBUTION_DATE "2023-07-17" #endif /** From 244de2458ac6fd48f3031d0179ca1bcad6808583 Mon Sep 17 00:00:00 2001 From: Alexander Gavrilenko Date: Mon, 17 Jul 2023 10:53:36 +0300 Subject: [PATCH 630/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Imp?= =?UTF-8?q?rove=20TFT=20Color=20UI=20layout=20/=20theme=20(#26077)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration.h | 9 + Marlin/src/feature/runout.cpp | 18 +- Marlin/src/inc/Conditionals_LCD.h | 9 +- Marlin/src/inc/Conditionals_adv.h | 2 +- .../lcd/dogm/fontdata/fontdata_ISO10646_1.h | 44 +- Marlin/src/lcd/tft/canvas.h | 1 - .../tft/fontdata/Helvetica/Helvetica_14.cpp | 31 +- .../tft/fontdata/Helvetica/Helvetica_19.cpp | 31 +- .../Medium_14px/NotoSans_Medium_14.cpp | 7 +- .../Medium_14px/NotoSans_Medium_ASCII_14.cpp | 7 +- .../NotoSans_Medium_Cyrillic_14.cpp | 7 +- .../Medium_14px/NotoSans_Medium_Greek_14.cpp | 7 +- .../NotoSans_Medium_Katakana_14.cpp | 7 +- .../Medium_14px/NotoSans_Medium_Korean_14.cpp | 7 +- .../NotoSans_Medium_Latin_Extended_A_14.cpp | 7 +- .../NotoSans_Medium_Simplified_Chinese_14.cpp | 7 +- .../NotoSans_Medium_Symbols_14.cpp | 9 +- ...NotoSans_Medium_Traditional_Chinese_14.cpp | 7 +- .../NotoSans_Medium_Vietnamese_14.cpp | 7 +- .../Medium_16px/NotoSans_Medium_16.cpp | 7 +- .../Medium_16px/NotoSans_Medium_ASCII_16.cpp | 7 +- .../NotoSans_Medium_Cyrillic_16.cpp | 7 +- .../Medium_16px/NotoSans_Medium_Greek_16.cpp | 7 +- .../NotoSans_Medium_Katakana_16.cpp | 7 +- .../Medium_16px/NotoSans_Medium_Korean_16.cpp | 7 +- .../NotoSans_Medium_Latin_Extended_A_16.cpp | 7 +- .../NotoSans_Medium_Simplified_Chinese_16.cpp | 7 +- .../NotoSans_Medium_Symbols_16.cpp | 9 +- ...NotoSans_Medium_Traditional_Chinese_16.cpp | 7 +- .../NotoSans_Medium_Vietnamese_16.cpp | 7 +- .../Medium_19px/NotoSans_Medium_19.cpp | 7 +- .../Medium_19px/NotoSans_Medium_ASCII_19.cpp | 7 +- .../NotoSans_Medium_Cyrillic_19.cpp | 7 +- .../Medium_19px/NotoSans_Medium_Greek_19.cpp | 7 +- .../NotoSans_Medium_Katakana_19.cpp | 7 +- .../Medium_19px/NotoSans_Medium_Korean_19.cpp | 7 +- .../NotoSans_Medium_Latin_Extended_A_19.cpp | 7 +- .../NotoSans_Medium_Simplified_Chinese_19.cpp | 7 +- .../NotoSans_Medium_Symbols_19.cpp | 9 +- ...NotoSans_Medium_Traditional_Chinese_19.cpp | 7 +- .../NotoSans_Medium_Vietnamese_19.cpp | 7 +- .../Medium_26px/NotoSans_Medium_26.cpp | 416 ++++++ .../Medium_26px/NotoSans_Medium_ASCII_26.cpp | 222 +++ .../NotoSans_Medium_Cyrillic_26.cpp | 322 +++++ .../Medium_26px/NotoSans_Medium_Greek_26.cpp | 178 +++ .../NotoSans_Medium_Katakana_26.cpp | 238 ++++ .../Medium_26px/NotoSans_Medium_Korean_26.cpp | 252 ++++ .../NotoSans_Medium_Latin_Extended_A_26.cpp | 288 ++++ .../NotoSans_Medium_Simplified_Chinese_26.cpp | 778 +++++++++++ .../NotoSans_Medium_Symbols_26.cpp | 38 + ...NotoSans_Medium_Traditional_Chinese_26.cpp | 646 +++++++++ .../NotoSans_Medium_Vietnamese_26.cpp | 246 ++++ .../Medium_27px/NotoSans_Medium_27.cpp | 416 ++++++ .../Medium_27px/NotoSans_Medium_ASCII_27.cpp | 222 +++ .../NotoSans_Medium_Cyrillic_27.cpp | 322 +++++ .../Medium_27px/NotoSans_Medium_Greek_27.cpp | 178 +++ .../NotoSans_Medium_Katakana_27.cpp | 238 ++++ .../Medium_27px/NotoSans_Medium_Korean_27.cpp | 252 ++++ .../NotoSans_Medium_Latin_Extended_A_27.cpp | 288 ++++ .../NotoSans_Medium_Simplified_Chinese_27.cpp | 778 +++++++++++ .../NotoSans_Medium_Symbols_27.cpp | 38 + ...NotoSans_Medium_Traditional_Chinese_27.cpp | 646 +++++++++ .../NotoSans_Medium_Vietnamese_27.cpp | 246 ++++ .../Medium_28px/NotoSans_Medium_28.cpp | 416 ++++++ .../Medium_28px/NotoSans_Medium_ASCII_28.cpp | 222 +++ .../NotoSans_Medium_Cyrillic_28.cpp | 322 +++++ .../Medium_28px/NotoSans_Medium_Greek_28.cpp | 178 +++ .../NotoSans_Medium_Katakana_28.cpp | 238 ++++ .../Medium_28px/NotoSans_Medium_Korean_28.cpp | 252 ++++ .../NotoSans_Medium_Latin_Extended_A_28.cpp | 288 ++++ .../NotoSans_Medium_Simplified_Chinese_28.cpp | 778 +++++++++++ .../NotoSans_Medium_Symbols_28.cpp | 38 + ...NotoSans_Medium_Traditional_Chinese_28.cpp | 646 +++++++++ .../NotoSans_Medium_Vietnamese_28.cpp | 246 ++++ .../Medium_29px/NotoSans_Medium_29.cpp | 416 ++++++ .../Medium_29px/NotoSans_Medium_ASCII_29.cpp | 222 +++ .../NotoSans_Medium_Cyrillic_29.cpp | 322 +++++ .../Medium_29px/NotoSans_Medium_Greek_29.cpp | 178 +++ .../NotoSans_Medium_Katakana_29.cpp | 238 ++++ .../Medium_29px/NotoSans_Medium_Korean_29.cpp | 252 ++++ .../NotoSans_Medium_Latin_Extended_A_29.cpp | 288 ++++ .../NotoSans_Medium_Simplified_Chinese_29.cpp | 778 +++++++++++ .../NotoSans_Medium_Symbols_29.cpp | 38 + ...NotoSans_Medium_Traditional_Chinese_29.cpp | 646 +++++++++ .../NotoSans_Medium_Vietnamese_29.cpp | 246 ++++ .../tft/fontdata/Unifont/10px/Unifont_10.cpp | 7 +- .../Unifont/10px/Unifont_ASCII_10.cpp | 7 +- .../Unifont/10px/Unifont_Cyrillic_10.cpp | 7 +- .../Unifont/10px/Unifont_Greek_10.cpp | 7 +- .../Unifont/10px/Unifont_Katakana_10.cpp | 7 +- .../Unifont/10px/Unifont_Korean_10.cpp | 7 +- .../10px/Unifont_Latin_Extended_A_10.cpp | 7 +- .../10px/Unifont_Simplified_Chinese_10.cpp | 7 +- .../Unifont/10px/Unifont_Symbols_10.cpp | 9 +- .../10px/Unifont_Traditional_Chinese_10.cpp | 7 +- .../Unifont/10px/Unifont_Vietnamese_10.cpp | 7 +- .../tft/fontdata/Unifont/20px/Unifont_20.cpp | 7 +- .../Unifont/20px/Unifont_ASCII_20.cpp | 7 +- .../Unifont/20px/Unifont_Cyrillic_20.cpp | 7 +- .../Unifont/20px/Unifont_Greek_20.cpp | 7 +- .../Unifont/20px/Unifont_Katakana_20.cpp | 7 +- .../Unifont/20px/Unifont_Korean_20.cpp | 7 +- .../20px/Unifont_Latin_Extended_A_20.cpp | 7 +- .../20px/Unifont_Simplified_Chinese_20.cpp | 7 +- .../Unifont/20px/Unifont_Symbols_20.cpp | 9 +- .../20px/Unifont_Traditional_Chinese_20.cpp | 7 +- .../Unifont/20px/Unifont_Vietnamese_20.cpp | 7 +- .../tft/fontdata/Unifont/30px/Unifont_30.cpp | 416 ++++++ .../Unifont/30px/Unifont_ASCII_30.cpp | 222 +++ .../Unifont/30px/Unifont_Cyrillic_30.cpp | 322 +++++ .../Unifont/30px/Unifont_Greek_30.cpp | 178 +++ .../Unifont/30px/Unifont_Katakana_30.cpp | 238 ++++ .../Unifont/30px/Unifont_Korean_30.cpp | 252 ++++ .../30px/Unifont_Latin_Extended_A_30.cpp | 288 ++++ .../30px/Unifont_Simplified_Chinese_30.cpp | 778 +++++++++++ .../Unifont/30px/Unifont_Symbols_30.cpp | 38 + .../30px/Unifont_Traditional_Chinese_30.cpp | 646 +++++++++ .../Unifont/30px/Unifont_Vietnamese_30.cpp | 246 ++++ Marlin/src/lcd/tft/fontdata/fontdata.h | 117 ++ Marlin/src/lcd/tft/images/back_32x32x4.cpp | 6 +- .../lcd/tft/images/background_320x30x16.cpp | 6 +- .../lcd/tft/images/bootscreen_112x38x1.cpp | 6 +- .../lcd/tft/images/bootscreen_195x59x16.cpp | 6 +- .../lcd/tft/images/bootscreen_228x255x2.cpp | 6 +- .../lcd/tft/images/bootscreen_228x255x4.cpp | 6 +- .../lcd/tft/images/bootscreen_320x240x16.cpp | 6 +- .../lcd/tft/images/bootscreen_480x320x16.cpp | 6 +- .../lcd/tft/images/btn_rounded_42x39x4.cpp | 6 +- .../lcd/tft/images/btn_rounded_64x52x4.cpp | 6 +- Marlin/src/lcd/tft/images/cancel_64x64x4.cpp | 6 +- Marlin/src/lcd/tft/images/chamber_64x64x4.cpp | 9 +- Marlin/src/lcd/tft/images/confirm_64x64x4.cpp | 6 +- .../src/lcd/tft/images/decrease_64x64x4.cpp | 6 +- .../src/lcd/tft/images/directory_32x32x4.cpp | 6 +- Marlin/src/lcd/tft/images/down_32x32x4.cpp | 6 +- Marlin/src/lcd/tft/images/fan_64x64x4.cpp | 9 +- .../src/lcd/tft/images/fan_fast_64x64x4.cpp | 9 +- .../src/lcd/tft/images/fan_slow_64x64x4.cpp | 9 +- .../src/lcd/tft/images/feedrate_32x32x4.cpp | 6 +- .../src/lcd/tft/images/flowrate_32x32x4.cpp | 6 +- .../src/lcd/tft/images/heated_bed_64x64x4.cpp | 9 +- Marlin/src/lcd/tft/images/home_64x64x4.cpp | 6 +- Marlin/src/lcd/tft/images/hotend_64x64x4.cpp | 6 +- .../src/lcd/tft/images/increase_64x64x4.cpp | 6 +- Marlin/src/lcd/tft/images/left_32x32x4.cpp | 6 +- .../src/lcd/tft/images/leveling_32x32x4.cpp | 6 +- Marlin/src/lcd/tft/images/menu_64x64x4.cpp | 6 +- Marlin/src/lcd/tft/images/pause_64x64x4.cpp | 6 +- Marlin/src/lcd/tft/images/refresh_32x32x4.cpp | 6 +- Marlin/src/lcd/tft/images/right_32x32x4.cpp | 6 +- Marlin/src/lcd/tft/images/sd_64x64x4.cpp | 4 + .../src/lcd/tft/images/settings_64x64x4.cpp | 6 +- Marlin/src/lcd/tft/images/slider_8x16x4.cpp | 6 +- .../lcd/tft/images/time_elapsed_32x32x4.cpp | 6 +- .../lcd/tft/images/time_remaining_32x32x4.cpp | 6 +- Marlin/src/lcd/tft/images/up_32x32x4.cpp | 6 +- Marlin/src/lcd/tft/tft.h | 2 +- Marlin/src/lcd/tft/tft_color.h | 122 -- Marlin/src/lcd/tft/tft_font.h | 6 - Marlin/src/lcd/tft/tft_image.cpp | 52 +- Marlin/src/lcd/tft/tft_image.h | 41 - Marlin/src/lcd/tft/tft_string.h | 93 +- Marlin/src/lcd/tft/themes/theme_ANET_BLACK.h | 53 + .../src/lcd/tft/themes/theme_BLACK_MARLIN.h | 30 + Marlin/src/lcd/tft/themes/theme_BLUE_MARLIN.h | 133 ++ Marlin/src/lcd/tft/themes/theme_CUSTOM.h | 30 + Marlin/src/lcd/tft/themes/theme_default.h | 144 ++ Marlin/src/lcd/tft/touch.cpp | 11 - Marlin/src/lcd/tft/touch.h | 17 +- Marlin/src/lcd/tft/ui_1024x600.cpp | 1083 --------------- Marlin/src/lcd/tft/ui_1024x600.h | 288 +++- Marlin/src/lcd/tft/ui_240x320.h | 294 ++++ Marlin/src/lcd/tft/ui_320x240.cpp | 1221 ----------------- Marlin/src/lcd/tft/ui_320x240.h | 291 +++- Marlin/src/lcd/tft/ui_320x480.h | 294 ++++ Marlin/src/lcd/tft/ui_480x272.h | 306 +++++ Marlin/src/lcd/tft/ui_480x320.cpp | 1196 ---------------- Marlin/src/lcd/tft/ui_480x320.h | 366 +++-- Marlin/src/lcd/tft/ui_color_ui.cpp | 588 ++++++++ Marlin/src/lcd/tft/ui_common.cpp | 223 ++- Marlin/src/lcd/tft/ui_common.h | 148 +- .../src/lcd/tft/ui_move_axis_screen_1024.cpp | 265 ++++ .../src/lcd/tft/ui_move_axis_screen_320.cpp | 399 ++++++ .../src/lcd/tft/ui_move_axis_screen_480.cpp | 400 ++++++ Marlin/src/lcd/tft/ui_theme.h | 35 + Marlin/src/lcd/tft_io/tft_orientation.h | 5 - .../PlatformIO/scripts/common-dependencies.h | 217 ++- .../PlatformIO/scripts/common-dependencies.py | 22 +- ini/features.ini | 112 +- 189 files changed, 23074 insertions(+), 4425 deletions(-) create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_26.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_ASCII_26.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Cyrillic_26.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Greek_26.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Katakana_26.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Korean_26.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Latin_Extended_A_26.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Simplified_Chinese_26.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Symbols_26.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Traditional_Chinese_26.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Vietnamese_26.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_27.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_ASCII_27.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Cyrillic_27.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Greek_27.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Katakana_27.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Korean_27.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Latin_Extended_A_27.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Simplified_Chinese_27.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Symbols_27.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Traditional_Chinese_27.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Vietnamese_27.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_28.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_ASCII_28.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Cyrillic_28.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Greek_28.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Katakana_28.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Korean_28.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Latin_Extended_A_28.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Simplified_Chinese_28.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Symbols_28.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Traditional_Chinese_28.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Vietnamese_28.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_29.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_ASCII_29.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Cyrillic_29.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Greek_29.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Katakana_29.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Korean_29.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Latin_Extended_A_29.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Simplified_Chinese_29.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Symbols_29.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Traditional_Chinese_29.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Vietnamese_29.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_30.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_ASCII_30.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Cyrillic_30.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Greek_30.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Katakana_30.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Korean_30.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Latin_Extended_A_30.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Simplified_Chinese_30.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Symbols_30.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Traditional_Chinese_30.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Vietnamese_30.cpp create mode 100644 Marlin/src/lcd/tft/fontdata/fontdata.h create mode 100644 Marlin/src/lcd/tft/themes/theme_ANET_BLACK.h create mode 100644 Marlin/src/lcd/tft/themes/theme_BLACK_MARLIN.h create mode 100644 Marlin/src/lcd/tft/themes/theme_BLUE_MARLIN.h create mode 100644 Marlin/src/lcd/tft/themes/theme_CUSTOM.h create mode 100644 Marlin/src/lcd/tft/themes/theme_default.h delete mode 100644 Marlin/src/lcd/tft/ui_1024x600.cpp create mode 100644 Marlin/src/lcd/tft/ui_240x320.h delete mode 100644 Marlin/src/lcd/tft/ui_320x240.cpp create mode 100644 Marlin/src/lcd/tft/ui_320x480.h create mode 100644 Marlin/src/lcd/tft/ui_480x272.h delete mode 100644 Marlin/src/lcd/tft/ui_480x320.cpp create mode 100644 Marlin/src/lcd/tft/ui_color_ui.cpp create mode 100644 Marlin/src/lcd/tft/ui_move_axis_screen_1024.cpp create mode 100644 Marlin/src/lcd/tft/ui_move_axis_screen_320.cpp create mode 100644 Marlin/src/lcd/tft/ui_move_axis_screen_480.cpp create mode 100644 Marlin/src/lcd/tft/ui_theme.h diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index c59bbba32a..90a5939a24 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -3303,6 +3303,15 @@ */ #define TFT_FONT NOTOSANS + /** + * TFT Theme for Color_UI. Choose one of the following or add a new one to 'Marlin/src/lcd/tft/themes' directory + * + * BLUE_MARLIN - Default theme with 'midnight blue' background + * BLACK_MARLIN - Theme with 'black' background + * ANET_BLACK - Theme used for Anet ET4/5 + */ + #define TFT_THEME BLACK_MARLIN + //#define TFT_SHARED_IO // I/O is shared between TFT display and other devices. Disable async data transfer. #endif diff --git a/Marlin/src/feature/runout.cpp b/Marlin/src/feature/runout.cpp index b34e87ca5e..7c7d61e7eb 100644 --- a/Marlin/src/feature/runout.cpp +++ b/Marlin/src/feature/runout.cpp @@ -101,15 +101,16 @@ void event_filament_runout(const uint8_t extruder) { const bool run_runout_script = !runout.host_handling; - const bool park_or_pause = (false - #ifdef FILAMENT_RUNOUT_SCRIPT - || strstr(FILAMENT_RUNOUT_SCRIPT, "M600") - || strstr(FILAMENT_RUNOUT_SCRIPT, "M125") - || TERN0(ADVANCED_PAUSE_FEATURE, strstr(FILAMENT_RUNOUT_SCRIPT, "M25")) - #endif - ); - #if ENABLED(HOST_ACTION_COMMANDS) + + const bool park_or_pause = (false + #ifdef FILAMENT_RUNOUT_SCRIPT + || strstr(FILAMENT_RUNOUT_SCRIPT, "M600") + || strstr(FILAMENT_RUNOUT_SCRIPT, "M125") + || TERN0(ADVANCED_PAUSE_FEATURE, strstr(FILAMENT_RUNOUT_SCRIPT, "M25")) + #endif + ); + if (run_runout_script && park_or_pause) { hostui.paused(false); } @@ -127,6 +128,7 @@ void event_filament_runout(const uint8_t extruder) { SERIAL_ECHOPGM(" " ACTION_REASON_ON_FILAMENT_RUNOUT " "); SERIAL_CHAR(tool); SERIAL_EOL(); + #endif // HOST_ACTION_COMMANDS #ifdef FILAMENT_RUNOUT_SCRIPT diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index b052021bb7..01bc2805d9 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -1781,12 +1781,19 @@ #elif ANY(TFT_1024x600_LTDC, TFT_1024x600_SIM) #define HAS_UI_1024x600 1 #endif -#if ANY(HAS_UI_320x240, HAS_UI_480x320, HAS_UI_480x272) + +#if ANY(HAS_UI_320x240, HAS_UI_480x272) #if ENABLED(TFT_COLOR_UI_PORTRAIT) #define LCD_HEIGHT TERN(TOUCH_SCREEN, 8, 9) // Fewer lines with touch buttons onscreen #else #define LCD_HEIGHT TERN(TOUCH_SCREEN, 6, 7) // Fewer lines with touch buttons onscreen #endif +#elif HAS_UI_480x320 + #if ENABLED(TFT_COLOR_UI_PORTRAIT) + #define LCD_HEIGHT TERN(TOUCH_SCREEN, 9, 10) // Fewer lines with touch buttons onscreen + #else + #define LCD_HEIGHT TERN(TOUCH_SCREEN, 6, 7) // Fewer lines with touch buttons onscreen + #endif #elif HAS_UI_1024x600 #define LCD_HEIGHT TERN(TOUCH_SCREEN, 12, 13) // Fewer lines with touch buttons onscreen #endif diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index d5f4be18b9..eac9e21110 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -833,7 +833,7 @@ #define HAS_MEDIA_SUBCALLS 1 #endif -#if ANY(SHOW_PROGRESS_PERCENT, SHOW_ELAPSED_TIME, SHOW_REMAINING_TIME, SHOW_INTERACTION_TIME) +#if ANY(SHOW_PROGRESS_PERCENT, SHOW_ELAPSED_TIME, SHOW_REMAINING_TIME, SHOW_INTERACTION_TIME) && !HAS_GRAPHICAL_TFT #define HAS_EXTRA_PROGRESS 1 #endif diff --git a/Marlin/src/lcd/dogm/fontdata/fontdata_ISO10646_1.h b/Marlin/src/lcd/dogm/fontdata/fontdata_ISO10646_1.h index 6f55d3bc3d..1ebe9884c0 100644 --- a/Marlin/src/lcd/dogm/fontdata/fontdata_ISO10646_1.h +++ b/Marlin/src/lcd/dogm/fontdata/fontdata_ISO10646_1.h @@ -25,17 +25,17 @@ #if defined(__AVR__) && ENABLED(NOT_EXTENDED_ISO10646_1_5X7) // reduced font (only symbols 1 - 127) - saves about 1278 bytes of FLASH -/* - Fontname: -Marlin6x12-Fixed-Medium-R-SemiCondensed--12-90-100-100-C-111-ISO10646-1 - Copyright: Public domain terminal emulator font. Share and enjoy. original font -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 - Capital A Height: 7, '1' Height: 7 - Calculated Max Values w= 7 h=10 x= 5 y= 5 dx= 7 dy= 0 ascent= 8 len=10 - Font Bounding box w=12 h=15 x= 0 y=-2 - Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 - Pure Font ascent = 7 descent=-2 - X Font ascent = 8 descent=-2 - Max Font ascent = 8 descent=-2 -*/ +/** + * Fontname: -Marlin6x12-Fixed-Medium-R-SemiCondensed--12-90-100-100-C-111-ISO10646-1 + * Copyright: Public domain terminal emulator font. Share and enjoy. original font -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + * Capital A Height: 7, '1' Height: 7 + * Calculated Max Values w= 7 h=10 x= 5 y= 5 dx= 7 dy= 0 ascent= 8 len=10 + * Font Bounding box w=12 h=15 x= 0 y=-2 + * Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + * Pure Font ascent = 7 descent=-2 + * X Font ascent = 8 descent=-2 + * Max Font ascent = 8 descent=-2 + */ const u8g_fntpgm_uint8_t ISO10646_1_5x7[1324] U8G_FONT_SECTION("ISO10646_1_5x7") = { 0x00,0x0C,0x0F,0x00,0xFE,0x07,0x02,0x25,0x03,0xBB,0x01,0x7F,0xFE,0x08,0xFE,0x08, 0xFE,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0xF0,0xC8,0x88,0x88,0x98,0x78,0x10,0x05, @@ -123,17 +123,17 @@ const u8g_fntpgm_uint8_t ISO10646_1_5x7[1324] U8G_FONT_SECTION("ISO10646_1_5x7") #else // extended (original) font (symbols 1 - 255) -/* - Fontname: -Marlin6x12-Fixed-Medium-R-SemiCondensed--12-90-100-100-C-111-ISO10646-1 - Copyright: Public domain terminal emulator font. Share and enjoy. original font -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 - Capital A Height: 7, '1' Height: 7 - Calculated Max Values w= 7 h=10 x= 5 y= 7 dx= 7 dy= 0 ascent=10 len=10 - Font Bounding box w=12 h=15 x= 0 y=-2 - Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 - Pure Font ascent = 7 descent=-2 - X Font ascent = 8 descent=-2 - Max Font ascent =10 descent=-2 -*/ +/** + * Fontname: -Marlin6x12-Fixed-Medium-R-SemiCondensed--12-90-100-100-C-111-ISO10646-1 + * Copyright: Public domain terminal emulator font. Share and enjoy. original font -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + * Capital A Height: 7, '1' Height: 7 + * Calculated Max Values w= 7 h=10 x= 5 y= 7 dx= 7 dy= 0 ascent=10 len=10 + * Font Bounding box w=12 h=15 x= 0 y=-2 + * Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + * Pure Font ascent = 7 descent=-2 + * X Font ascent = 8 descent=-2 + * Max Font ascent =10 descent=-2 + */ const u8g_fntpgm_uint8_t ISO10646_1_5x7[2647] U8G_FONT_SECTION("ISO10646_1_5x7") = { 0x00,0x0C,0x0F,0x00,0xFE,0x07,0x02,0x25,0x03,0xBB,0x01,0xFF,0xFE,0x0A,0xFE,0x08, 0xFE,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0xF0,0xC8,0x88,0x88,0x98,0x78,0x10,0x05, diff --git a/Marlin/src/lcd/tft/canvas.h b/Marlin/src/lcd/tft/canvas.h index d271ae7af3..e97da2f23b 100644 --- a/Marlin/src/lcd/tft/canvas.h +++ b/Marlin/src/lcd/tft/canvas.h @@ -21,7 +21,6 @@ */ #pragma once -#include "tft_color.h" #include "tft_string.h" #include "tft_image.h" #include "tft.h" diff --git a/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_14.cpp b/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_14.cpp index 2fbf812369..fef4d9b9fa 100644 --- a/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_14.cpp @@ -20,26 +20,23 @@ * */ -/* - Fontname: Helvetica - Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. - Capital A Height: 14, '1' Height: 13 - Calculated Max Values w=16 h=18 x= 2 y=12 dx=18 dy= 0 ascent=16 len=36 - Font Bounding box w=18 h=19 x= 0 y=-4 - Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 - Pure Font ascent =14 descent=-4 - X Font ascent =14 descent=-4 - Max Font ascent =16 descent=-4 -*/ +/** + * Fontname: Helvetica + * Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + * Capital A Height: 14, '1' Height: 13 + * Calculated Max Values w=16 h=18 x= 2 y=12 dx=18 dy= 0 ascent=16 len=36 + * Font Bounding box w=18 h=19 x= 0 y=-4 + * Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + * Pure Font ascent =14 descent=-4 + * X Font ascent =14 descent=-4 + * Max Font ascent =16 descent=-4 + */ -#include "../../../../inc/MarlinConfigPre.h" +#include "../fontdata.h" -#define HELVETICA 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == HELVETICA -#include - -// Helvetica Symbols, capital 'A' heigth: 14px +// Helvetica Symbols, capital 'A' height: 14px extern const uint8_t Helvetica_Symbols_14[43] = { 129,14,8,0,9,0,16,252, // unifont_t // 0x08 - LCD_STR_THERMOMETER a.k.a 0x1f321 🌡 @@ -48,7 +45,7 @@ extern const uint8_t Helvetica_Symbols_14[43] = { 5,5,5,7,1,8,112,216,136,216,112, }; -// Helvetica, capital 'A' heigth: 14px +// Helvetica, capital 'A' height: 14px extern const uint8_t Helvetica_14[4831] = { 129,14,32,0,255,0,16,252, // unifont_t // 0x0020 " " diff --git a/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_19.cpp b/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_19.cpp index ab2f91577a..40012d7501 100644 --- a/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/Helvetica/Helvetica_19.cpp @@ -20,26 +20,23 @@ * */ -/* - Fontname: -Adobe-Helvetica-Medium-R-Normal--25-180-100-100-P-130-ISO10646-1 - Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. - Capital A Height: 19, '1' Height: 18 - Calculated Max Values w=22 h=24 x= 3 y=16 dx=25 dy= 0 ascent=24 len=69 - Font Bounding box w=28 h=37 x=-3 y=-8 - Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 - Pure Font ascent =19 descent=-5 - X Font ascent =19 descent=-5 - Max Font ascent =24 descent=-5 -*/ +/** + * Fontname: -Adobe-Helvetica-Medium-R-Normal--25-180-100-100-P-130-ISO10646-1 + * Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + * Capital A Height: 19, '1' Height: 18 + * Calculated Max Values w=22 h=24 x= 3 y=16 dx=25 dy= 0 ascent=24 len=69 + * Font Bounding box w=28 h=37 x=-3 y=-8 + * Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + * Pure Font ascent =19 descent=-5 + * X Font ascent =19 descent=-5 + * Max Font ascent =24 descent=-5 + */ -#include "../../../../inc/MarlinConfigPre.h" +#include "../fontdata.h" -#define HELVETICA 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == HELVETICA -#include - -// Helvetica Symbols, capital 'A' heigth: 19px +// Helvetica Symbols, capital 'A' height: 19px extern const uint8_t Helvetica_Symbols_19[45] = { 129,19,8,0,9,0,24,251, // unifont_t // 0x08 - LCD_STR_THERMOMETER a.k.a 0x1f321 🌡 @@ -49,7 +46,7 @@ extern const uint8_t Helvetica_Symbols_19[45] = { }; -// Helvetica, capital 'A' heigth: 19px +// Helvetica, capital 'A' height: 19px extern const uint8_t Helvetica_19[7298] = { 129,19,32,0,255,0,24,251, // unifont_t // 0x0020 " " diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_14.cpp index d9bdde8b2d..924033db51 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_14.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium 19pt, capital 'A' heigth: 14px, width: 100%, range: 0x0020-0x00ff +// NotoSans Medium 19pt, capital 'A' height: 14px, width: 100%, range: 0x0020-0x00ff extern const uint8_t NotoSans_Medium_14[8358] = { 130,14,32,0,255,0,18,251, // unifont_t // 0x0020 " " diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_ASCII_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_ASCII_14.cpp index 0d452c9441..38960aae7d 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_ASCII_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_ASCII_14.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium ASCII 19pt, capital 'A' heigth: 14px, width: 100%, range: 0x0020-0x007e +// NotoSans Medium ASCII 19pt, capital 'A' height: 14px, width: 100%, range: 0x0020-0x007e extern const uint8_t NotoSans_Medium_ASCII_14[3865] = { 130,14,32,0,126,0,18,251, // unifont_t // 0x0020 " " diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Cyrillic_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Cyrillic_14.cpp index 7c1fc2ac4e..ddda8029a5 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Cyrillic_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Cyrillic_14.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Cyrillic 19pt, capital 'A' heigth: 14px, width: 100%, range: 0x0401-0x0491, glyphs: 74 +// NotoSans Medium Cyrillic 19pt, capital 'A' height: 14px, width: 100%, range: 0x0401-0x0491, glyphs: 74 extern const uint8_t NotoSans_Medium_Cyrillic_14[3616] = { 130,14,1,4,145,4,18,251, // unifont_t // 0x0401 Ё diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Greek_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Greek_14.cpp index bb0cec7aca..e8ebafb2b3 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Greek_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Greek_14.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Greek 19pt, capital 'A' heigth: 14px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 +// NotoSans Medium Greek 19pt, capital 'A' height: 14px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 extern const uint8_t NotoSans_Medium_Greek_14[3253] = { 130,14,134,3,206,3,18,251, // unifont_t // 0x0386 Ά diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Katakana_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Katakana_14.cpp index eda142fef1..c2d932784a 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Katakana_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Katakana_14.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Katakana 19pt, capital 'A' heigth: 14px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 +// NotoSans Medium Katakana 19pt, capital 'A' height: 14px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 extern const uint8_t NotoSans_Medium_Katakana_14[7913] = { 162,14,160,48,104,136,18,251, // unifont_t // 0x30a0 ゠ diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Korean_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Korean_14.cpp index 258ccf8799..c9cee89c78 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Korean_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Korean_14.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Korean 19pt, capital 'A' heigth: 14px, width: 100%, range: 0xac70-0xd788, glyphs: 110 +// NotoSans Medium Korean 19pt, capital 'A' height: 14px, width: 100%, range: 0xac70-0xd788, glyphs: 110 extern const uint8_t NotoSans_Medium_Korean_14[8848] = { 162,14,112,172,136,215,18,251, // unifont_t // 0xac70 거 diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Latin_Extended_A_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Latin_Extended_A_14.cpp index d736d12c17..e2480d02e2 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Latin_Extended_A_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Latin_Extended_A_14.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Latin Extended-A 19pt, capital 'A' heigth: 14px, width: 100%, range: 0x0100-0x017f +// NotoSans Medium Latin Extended-A 19pt, capital 'A' height: 14px, width: 100%, range: 0x0100-0x017f extern const uint8_t NotoSans_Medium_Latin_Extended_A_14[6668] = { 130,14,0,1,127,1,18,251, // unifont_t // 0x0100 Ā diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Simplified_Chinese_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Simplified_Chinese_14.cpp index 04825f3659..d40ed58a96 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Simplified_Chinese_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Simplified_Chinese_14.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Simplified Chinese 19pt, capital 'A' heigth: 14px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 +// NotoSans Medium Simplified Chinese 19pt, capital 'A' height: 14px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 extern const uint8_t NotoSans_Medium_Simplified_Chinese_14[37028] = { 162,14,28,32,26,255,18,251, // unifont_t // 0x201c “ diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Symbols_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Symbols_14.cpp index a806753a97..1dd62b795f 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Symbols_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Symbols_14.cpp @@ -20,21 +20,18 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Symbols 19pt, capital 'A' heigth: 14px, width: 100% +// NotoSans Medium Symbols 19pt, capital 'A' height: 14px, width: 100% extern const uint8_t NotoSans_Medium_Symbols_14[131] = { 130,14,8,0,10,0,18,251, // unifont_t // 0x08 - LCD_STR_THERMOMETER a.k.a 0x1f321 🌡 11,25,75,13,1,251,1,84,0,11,254,0,15,7,0,15,135,0,14,7,0,14,7,0,15,135,0,14,39,0,15,247,0,14,119,0,15,247,0,14,119,0,15,247,0,14,119,0,14,119,0,47,247,192,120,180,240,247,253,56,223,255,28,223,255,28,235,254,44,117,244,116,46,86,208,6,254,64,0,0,0, // 0x09 - LCD_STR_DEGREE a.k.a 0x00b0 ° 6,7,14,8,1,7,26,64,122,224,224,112,208,112,240,176,63,192,0,0, - // 0x0a - replacement for 0x2026 used in Greek languange files … + // 0x0a - replacement for 0x2026 used in Greek language files … 13,4,16,15,1,255,16,4,1,0,188,47,7,192,184,31,7,192,0,0,0,0, }; diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Traditional_Chinese_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Traditional_Chinese_14.cpp index 863d0c2805..4b63aebf18 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Traditional_Chinese_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Traditional_Chinese_14.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Traditional Chinese 19pt, capital 'A' heigth: 14px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 +// NotoSans Medium Traditional Chinese 19pt, capital 'A' height: 14px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 extern const uint8_t NotoSans_Medium_Traditional_Chinese_14[30758] = { 162,14,191,34,26,255,18,251, // unifont_t // 0x22bf ⊿ diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Vietnamese_14.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Vietnamese_14.cpp index 6a363582e1..42e50e1814 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Vietnamese_14.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_14px/NotoSans_Medium_Vietnamese_14.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Vietnamese 19pt, capital 'A' heigth: 14px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 +// NotoSans Medium Vietnamese 19pt, capital 'A' height: 14px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 extern const uint8_t NotoSans_Medium_Vietnamese_14[6582] = { 162,14,2,1,249,30,18,251, // unifont_t // 0x0102 Ă diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_16.cpp index 08ec0bf9d0..95441c443c 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_16.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium 22pt, capital 'A' heigth: 16px, width: 100%, range: 0x0020-0x00ff +// NotoSans Medium 22pt, capital 'A' height: 16px, width: 100%, range: 0x0020-0x00ff extern const uint8_t NotoSans_Medium_16[10298] = { 130,16,32,0,255,0,21,250, // unifont_t // 0x0020 " " diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_ASCII_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_ASCII_16.cpp index cac0216a75..0c96bd8857 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_ASCII_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_ASCII_16.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium ASCII 22pt, capital 'A' heigth: 16px, width: 100%, range: 0x0020-0x007e +// NotoSans Medium ASCII 22pt, capital 'A' height: 16px, width: 100%, range: 0x0020-0x007e extern const uint8_t NotoSans_Medium_ASCII_16[4704] = { 130,16,32,0,126,0,21,250, // unifont_t // 0x0020 " " diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Cyrillic_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Cyrillic_16.cpp index 58ecea399f..628dc214f6 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Cyrillic_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Cyrillic_16.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Cyrillic 22pt, capital 'A' heigth: 16px, width: 100%, range: 0x0401-0x0491, glyphs: 74 +// NotoSans Medium Cyrillic 22pt, capital 'A' height: 16px, width: 100%, range: 0x0401-0x0491, glyphs: 74 extern const uint8_t NotoSans_Medium_Cyrillic_16[4473] = { 130,16,1,4,145,4,21,250, // unifont_t // 0x0401 Ё diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Greek_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Greek_16.cpp index f20b747cc4..1f2b966c8f 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Greek_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Greek_16.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Greek 22pt, capital 'A' heigth: 16px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 +// NotoSans Medium Greek 22pt, capital 'A' height: 16px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 extern const uint8_t NotoSans_Medium_Greek_16[4013] = { 130,16,134,3,206,3,21,250, // unifont_t // 0x0386 Ά diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Katakana_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Katakana_16.cpp index 18c9345ca3..8da7297cd9 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Katakana_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Katakana_16.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Katakana 22pt, capital 'A' heigth: 16px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 +// NotoSans Medium Katakana 22pt, capital 'A' height: 16px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 extern const uint8_t NotoSans_Medium_Katakana_16[9720] = { 162,16,160,48,104,136,21,250, // unifont_t // 0x30a0 ゠ diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Korean_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Korean_16.cpp index 3839ed419e..bf9698000d 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Korean_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Korean_16.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Korean 22pt, capital 'A' heigth: 16px, width: 100%, range: 0xac70-0xd788, glyphs: 110 +// NotoSans Medium Korean 22pt, capital 'A' height: 16px, width: 100%, range: 0xac70-0xd788, glyphs: 110 extern const uint8_t NotoSans_Medium_Korean_16[11557] = { 162,16,112,172,136,215,21,250, // unifont_t // 0xac70 거 diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Latin_Extended_A_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Latin_Extended_A_16.cpp index afce518424..23fb2b27c6 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Latin_Extended_A_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Latin_Extended_A_16.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Latin Extended-A 22pt, capital 'A' heigth: 16px, width: 100%, range: 0x0100-0x017f +// NotoSans Medium Latin Extended-A 22pt, capital 'A' height: 16px, width: 100%, range: 0x0100-0x017f extern const uint8_t NotoSans_Medium_Latin_Extended_A_16[8564] = { 130,16,0,1,127,1,21,250, // unifont_t // 0x0100 Ā diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Simplified_Chinese_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Simplified_Chinese_16.cpp index aa76df275a..a720bf0a3f 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Simplified_Chinese_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Simplified_Chinese_16.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Simplified Chinese 22pt, capital 'A' heigth: 16px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 +// NotoSans Medium Simplified Chinese 22pt, capital 'A' height: 16px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 extern const uint8_t NotoSans_Medium_Simplified_Chinese_16[43240] = { 162,16,28,32,26,255,21,250, // unifont_t // 0x201c “ diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Symbols_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Symbols_16.cpp index 63a2a7d071..9a2c2eb9b4 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Symbols_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Symbols_16.cpp @@ -20,21 +20,18 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Symbols 22pt, capital 'A' heigth: 16px, width: 100% +// NotoSans Medium Symbols 22pt, capital 'A' height: 16px, width: 100% extern const uint8_t NotoSans_Medium_Symbols_16[166] = { 130,16,8,0,10,0,21,250, // unifont_t // 0x08 - LCD_STR_THERMOMETER a.k.a 0x1f321 🌡 13,27,108,15,1,251,1,255,208,0,3,234,240,0,3,128,240,0,3,224,240,0,3,128,240,0,3,224,240,0,3,128,240,0,3,156,240,0,3,253,240,0,3,173,240,0,3,173,240,0,3,253,240,0,3,173,240,0,3,253,240,0,3,173,240,0,3,173,240,0,11,253,248,0,61,45,46,0,116,255,139,0,242,255,227,64,227,255,243,128,227,255,243,64,177,255,215,0,56,127,79,0,31,64,188,0,7,255,224,0,0,89,0,0, // 0x09 - LCD_STR_DEGREE a.k.a 0x00b0 ° 8,8,16,9,1,8,11,208,62,184,176,44,240,29,176,44,126,184,31,224,0,0, - // 0x0a - replacement for 0x2026 used in Greek languange files … + // 0x0a - replacement for 0x2026 used in Greek language files … 16,4,16,18,1,255,56,3,128,56,125,11,208,189,125,7,192,124,0,0,0,0, }; diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Traditional_Chinese_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Traditional_Chinese_16.cpp index 606625646b..7aa67765d8 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Traditional_Chinese_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Traditional_Chinese_16.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Traditional Chinese 22pt, capital 'A' heigth: 16px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 +// NotoSans Medium Traditional Chinese 22pt, capital 'A' height: 16px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 extern const uint8_t NotoSans_Medium_Traditional_Chinese_16[36120] = { 162,16,191,34,26,255,21,250, // unifont_t // 0x22bf ⊿ diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Vietnamese_16.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Vietnamese_16.cpp index 3905fba3e9..099a5b7fcb 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Vietnamese_16.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_16px/NotoSans_Medium_Vietnamese_16.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Vietnamese 22pt, capital 'A' heigth: 16px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 +// NotoSans Medium Vietnamese 22pt, capital 'A' height: 16px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 extern const uint8_t NotoSans_Medium_Vietnamese_16[8448] = { 162,16,2,1,249,30,21,250, // unifont_t // 0x0102 Ă diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_19.cpp index 925254e7f8..407fc3b5e2 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_19.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium 26pt, capital 'A' heigth: 19px, width: 100%, range: 0x0020-0x00ff +// NotoSans Medium 26pt, capital 'A' height: 19px, width: 100%, range: 0x0020-0x00ff extern const uint8_t NotoSans_Medium_19[13901] = { 130,19,32,0,255,0,25,249, // unifont_t // 0x0020 " " diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_ASCII_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_ASCII_19.cpp index 97ef16cf44..fd4fa1a659 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_ASCII_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_ASCII_19.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium ASCII 26pt, capital 'A' heigth: 19px, width: 100%, range: 0x0020-0x007e +// NotoSans Medium ASCII 26pt, capital 'A' height: 19px, width: 100%, range: 0x0020-0x007e extern const uint8_t NotoSans_Medium_ASCII_19[6379] = { 130,19,32,0,126,0,25,249, // unifont_t // 0x0020 " " diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Cyrillic_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Cyrillic_19.cpp index dba08111ce..707963c946 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Cyrillic_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Cyrillic_19.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Cyrillic 26pt, capital 'A' heigth: 19px, width: 100%, range: 0x0401-0x0491, glyphs: 74 +// NotoSans Medium Cyrillic 26pt, capital 'A' height: 19px, width: 100%, range: 0x0401-0x0491, glyphs: 74 extern const uint8_t NotoSans_Medium_Cyrillic_19[6037] = { 130,19,1,4,145,4,25,249, // unifont_t // 0x0401 Ё diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Greek_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Greek_19.cpp index 497e7fa8e8..155e93684f 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Greek_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Greek_19.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Greek 26pt, capital 'A' heigth: 19px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 +// NotoSans Medium Greek 26pt, capital 'A' height: 19px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 extern const uint8_t NotoSans_Medium_Greek_19[5416] = { 130,19,134,3,206,3,25,249, // unifont_t // 0x0386 Ά diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Katakana_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Katakana_19.cpp index f5d92c5fd5..d833702914 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Katakana_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Katakana_19.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Katakana 26pt, capital 'A' heigth: 19px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 +// NotoSans Medium Katakana 26pt, capital 'A' height: 19px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 extern const uint8_t NotoSans_Medium_Katakana_19[13182] = { 162,19,160,48,104,136,25,249, // unifont_t // 0x30a0 ゠ diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Korean_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Korean_19.cpp index 14a0073211..436989afc8 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Korean_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Korean_19.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Korean 26pt, capital 'A' heigth: 19px, width: 100%, range: 0xac70-0xd788, glyphs: 110 +// NotoSans Medium Korean 26pt, capital 'A' height: 19px, width: 100%, range: 0xac70-0xd788, glyphs: 110 extern const uint8_t NotoSans_Medium_Korean_19[15510] = { 162,19,112,172,136,215,25,249, // unifont_t // 0xac70 거 diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Latin_Extended_A_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Latin_Extended_A_19.cpp index ccc23097fe..eba3fb1e08 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Latin_Extended_A_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Latin_Extended_A_19.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Latin Extended-A 26pt, capital 'A' heigth: 19px, width: 100%, range: 0x0100-0x017f +// NotoSans Medium Latin Extended-A 26pt, capital 'A' height: 19px, width: 100%, range: 0x0100-0x017f extern const uint8_t NotoSans_Medium_Latin_Extended_A_19[11379] = { 130,19,0,1,127,1,25,249, // unifont_t // 0x0100 Ā diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Simplified_Chinese_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Simplified_Chinese_19.cpp index 86621477e1..a4accd8307 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Simplified_Chinese_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Simplified_Chinese_19.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Simplified Chinese 26pt, capital 'A' heigth: 19px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 +// NotoSans Medium Simplified Chinese 26pt, capital 'A' height: 19px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 extern const uint8_t NotoSans_Medium_Simplified_Chinese_19[58924] = { 162,19,28,32,26,255,25,249, // unifont_t // 0x201c “ diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Symbols_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Symbols_19.cpp index d28f2800d6..9aa12ceb07 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Symbols_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Symbols_19.cpp @@ -20,21 +20,18 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Symbols 26pt, capital 'A' heigth: 19px, width: 100% +// NotoSans Medium Symbols 26pt, capital 'A' height: 19px, width: 100% extern const uint8_t NotoSans_Medium_Symbols_19[206] = { 130,19,8,0,10,0,25,249, // unifont_t // 0x08 - LCD_STR_THERMOMETER a.k.a 0x1f321 🌡 15,32,128,17,1,250,0,127,252,0,0,255,254,0,0,240,15,0,0,252,15,0,0,224,15,0,0,224,15,0,0,224,15,0,0,252,15,0,0,224,15,0,0,231,207,0,0,255,207,0,0,231,207,0,0,231,207,0,0,255,207,0,0,231,207,0,0,231,207,0,0,255,207,0,0,231,207,0,0,231,207,0,2,255,207,64,15,135,199,208,62,11,209,240,120,127,252,180,180,255,254,56,240,255,255,60,240,255,255,60,180,255,254,120,124,63,252,244,62,10,146,224,15,208,31,192,2,255,254,0,0,47,224,0, // 0x09 - LCD_STR_DEGREE a.k.a 0x00b0 ° 9,9,27,11,1,10,6,228,0,47,254,0,124,15,64,180,7,128,180,3,192,184,7,128,62,111,0,31,253,0,1,80,0, - // 0x0a - replacement for 0x2026 used in Greek languange files … + // 0x0a - replacement for 0x2026 used in Greek language files … 18,5,25,21,2,255,16,0,64,1,0,252,3,240,15,192,253,3,244,15,208,252,3,240,15,192,16,0,64,1,0, }; diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Traditional_Chinese_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Traditional_Chinese_19.cpp index c34f5bb7f1..3f5ee91514 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Traditional_Chinese_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Traditional_Chinese_19.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Traditional Chinese 26pt, capital 'A' heigth: 19px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 +// NotoSans Medium Traditional Chinese 26pt, capital 'A' height: 19px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 extern const uint8_t NotoSans_Medium_Traditional_Chinese_19[48872] = { 162,19,191,34,26,255,25,249, // unifont_t // 0x22bf ⊿ diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Vietnamese_19.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Vietnamese_19.cpp index 5ff24ab3b0..354e7bd29d 100644 --- a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Vietnamese_19.cpp +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_19px/NotoSans_Medium_Vietnamese_19.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define NOTOSANS 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == NOTOSANS -#include - -// NotoSans Medium Vietnamese 26pt, capital 'A' heigth: 19px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 +// NotoSans Medium Vietnamese 26pt, capital 'A' height: 19px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 extern const uint8_t NotoSans_Medium_Vietnamese_19[11142] = { 162,19,2,1,249,30,25,249, // unifont_t // 0x0102 Ă diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_26.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_26.cpp new file mode 100644 index 0000000000..fd49cf1d29 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_26.cpp @@ -0,0 +1,416 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium 36pt, capital 'A' height: 26px, width: 100%, range: 0x0020-0x00ff +extern const uint8_t NotoSans_Medium_26[24099] = { + 130,26,32,0,255,0,34,247, // unifont_t + // 0x0020 " " + 0,0,0,9,0,0, + // 0x0021 ! + 6,27,54,10,2,255,42,128,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,128,63,128,47,128,47,128,47,128,47,64,47,64,47,64,31,64,5,0,0,0,0,0,26,0,63,192,127,208,127,208,63,192,5,0, + // 0x0022 " + 11,10,30,15,2,16,106,2,168,191,2,252,127,2,252,127,2,252,127,1,248,127,1,248,62,1,248,62,1,244,62,0,244,41,0,160, + // 0x0023 # + 22,26,156,23,1,0,0,0,164,1,160,0,0,1,248,3,240,0,0,2,244,3,240,0,0,3,240,3,224,0,0,3,240,7,224,0,0,3,240,11,208,0,0,7,224,11,192,0,0,11,224,15,192,0,63,255,255,255,255,208,63,255,255,255,255,208,26,175,234,191,170,128,0,31,128,63,0,0,0,47,64,63,0,0,0,47,0,63,0,0,0,63,0,126,0,0,0,127,0,190,0,0,255,255,255,255,255,0,255,255,255,255,255,0,170,254,170,254,170,0,0,252,1,248,0,0,0,252,2,244,0,0,0,248,2,240,0,0,1,244,3,240,0,0,2,244,3,240,0,0,3,240,7,224,0,0,3,240,7,208,0,0, + // 0x0024 $ + 17,31,155,21,2,253,0,1,64,0,0,0,3,208,0,0,0,3,208,0,0,0,3,228,0,0,1,255,255,228,0,15,255,255,255,0,63,255,255,254,0,191,211,208,108,0,255,3,208,0,0,255,3,208,0,0,255,3,208,0,0,191,131,208,0,0,127,251,208,0,0,47,255,224,0,0,7,255,255,64,0,0,127,255,244,0,0,3,255,253,0,0,3,235,255,0,0,3,208,191,128,0,3,208,63,128,0,3,208,63,128,64,3,208,127,128,249,3,210,255,0,255,255,255,254,0,255,255,255,244,0,47,255,255,128,0,0,23,224,0,0,0,3,208,0,0,0,3,208,0,0,0,3,208,0,0,0,0,0,0,0, + // 0x0025 % + 28,27,189,31,1,255,1,255,64,0,0,168,0,11,255,224,0,3,244,0,31,235,244,0,7,240,0,63,129,252,0,15,208,0,63,0,253,0,31,128,0,63,0,189,0,63,0,0,127,0,190,0,190,0,0,126,0,126,0,252,0,0,126,0,126,2,244,0,0,127,0,190,7,240,0,0,63,0,189,15,208,106,64,63,0,253,31,195,255,240,47,129,252,63,79,255,248,15,235,248,126,31,209,252,11,255,240,252,47,128,190,1,255,130,248,63,64,127,0,0,3,240,63,0,63,0,0,11,224,63,0,63,0,0,15,192,63,0,63,0,0,63,64,63,0,63,0,0,127,0,63,64,63,0,0,253,0,47,64,127,0,1,248,0,31,192,253,0,3,240,0,15,230,252,0,11,224,0,7,255,244,0,15,192,0,1,255,208,0,0,0,0,0,21,0, + // 0x0026 & + 24,27,162,27,2,255,0,31,255,64,0,0,0,255,255,240,0,0,3,255,255,248,0,0,7,252,7,252,0,0,15,240,1,253,0,0,15,240,0,254,0,0,15,240,1,253,0,0,11,240,2,252,0,0,3,252,11,248,0,0,2,254,47,240,0,0,0,255,255,192,0,0,0,63,254,0,0,0,1,255,248,0,0,0,7,255,254,0,3,252,47,249,255,128,7,248,127,208,127,224,11,240,255,128,15,248,15,240,255,0,3,254,47,208,255,0,0,255,255,192,255,0,0,63,255,64,255,0,0,15,254,0,255,128,0,31,255,0,127,228,1,255,255,192,63,255,255,255,191,240,15,255,255,252,15,252,1,255,255,144,3,255,0,1,80,0,0,0, + // 0x0027 ' + 4,10,10,9,2,16,106,191,127,127,127,127,62,62,62,41, + // 0x0028 ( + 9,32,96,11,1,250,0,26,128,0,63,64,0,254,0,1,252,0,3,248,0,7,240,0,15,240,0,15,208,0,47,192,0,63,192,0,63,128,0,63,64,0,127,64,0,127,0,0,191,0,0,191,0,0,191,0,0,191,0,0,127,0,0,127,64,0,63,64,0,63,128,0,63,192,0,47,192,0,31,208,0,15,240,0,11,240,0,3,248,0,2,252,0,0,254,0,0,63,64,0,26,128, + // 0x0029 ) + 9,32,96,11,1,250,106,0,0,63,64,0,31,192,0,15,224,0,7,240,0,3,248,0,2,252,0,1,253,0,0,254,0,0,191,0,0,127,0,0,127,64,0,63,128,0,63,128,0,63,128,0,63,192,0,63,192,0,63,128,0,63,128,0,63,128,0,63,64,0,127,64,0,191,0,0,255,0,0,253,0,2,252,0,3,248,0,7,240,0,15,224,0,31,192,0,63,64,0,106,0,0, + // 0x002a * + 18,18,90,20,1,10,0,1,84,0,0,0,3,248,0,0,0,3,248,0,0,0,3,244,0,0,0,2,244,0,0,16,2,240,0,64,63,65,240,111,192,127,255,251,255,192,191,255,255,255,208,5,111,254,149,0,0,15,254,0,0,0,47,191,64,0,0,127,31,192,0,0,254,15,240,0,3,252,11,248,0,2,252,3,248,0,0,36,1,128,0,0,0,0,0,0, + // 0x002b + + 18,18,90,21,1,4,0,0,84,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,1,252,0,0,127,255,255,255,240,127,255,255,255,240,63,255,255,255,224,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0, + // 0x002c , + 6,9,18,10,1,251,15,240,15,240,31,224,47,192,47,192,63,64,63,0,126,0,104,0, + // 0x002d - + 10,4,12,12,1,8,21,85,64,191,255,208,191,255,208,191,255,208, + // 0x002e . + 6,6,12,10,2,255,26,0,63,192,127,208,127,208,63,192,5,0, + // 0x002f / + 14,26,104,14,0,0,0,0,10,144,0,0,47,192,0,0,63,128,0,0,127,64,0,0,191,0,0,0,254,0,0,1,252,0,0,3,252,0,0,3,244,0,0,11,240,0,0,15,224,0,0,31,208,0,0,47,192,0,0,63,128,0,0,127,0,0,0,255,0,0,0,253,0,0,2,252,0,0,3,248,0,0,7,244,0,0,11,240,0,0,15,224,0,0,31,208,0,0,47,192,0,0,63,128,0,0,127,0,0,0, + // 0x0030 0 + 18,27,135,21,1,255,0,27,255,64,0,0,191,255,240,0,3,255,255,252,0,7,254,7,255,0,15,240,0,191,64,31,224,0,63,192,47,192,0,47,192,63,192,0,31,208,63,192,0,15,224,63,128,0,15,224,127,128,0,15,240,127,64,0,15,240,127,64,0,15,240,127,64,0,15,240,127,64,0,15,240,127,128,0,15,240,63,128,0,15,240,63,128,0,15,224,63,192,0,31,208,47,192,0,47,208,31,208,0,63,192,15,240,0,191,128,7,252,2,255,0,3,255,255,253,0,0,255,255,248,0,0,31,255,208,0,0,0,84,0,0, + // 0x0031 1 + 11,26,78,21,3,0,0,2,164,0,31,244,0,191,244,3,255,244,15,255,244,127,215,244,255,71,244,60,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244, + // 0x0032 2 + 18,26,130,21,1,0,0,31,255,128,0,2,255,255,244,0,31,255,255,253,0,63,249,7,255,0,15,128,0,255,128,5,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,127,128,0,0,0,255,0,0,0,1,254,0,0,0,3,252,0,0,0,15,244,0,0,0,63,208,0,0,0,255,64,0,0,3,254,0,0,0,15,248,0,0,0,63,224,0,0,0,255,64,0,0,3,253,0,0,0,15,244,0,0,0,63,245,85,85,80,127,255,255,255,240,127,255,255,255,240,127,255,255,255,240, + // 0x0033 3 + 18,27,135,21,1,255,0,111,255,128,0,11,255,255,248,0,63,255,255,254,0,47,228,7,255,64,14,0,0,191,128,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,127,128,0,0,0,255,0,0,0,7,253,0,0,127,255,240,0,0,191,255,64,0,0,191,255,248,0,0,21,107,255,0,0,0,0,191,192,0,0,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,47,224,0,0,0,127,192,121,0,2,255,128,127,255,255,255,0,127,255,255,248,0,27,255,255,144,0,0,21,80,0,0, + // 0x0034 4 + 20,26,130,21,0,0,0,0,0,191,64,0,0,1,255,64,0,0,3,255,64,0,0,11,255,64,0,0,31,255,64,0,0,63,127,64,0,0,254,127,64,0,2,252,127,64,0,3,240,127,64,0,15,224,127,64,0,47,192,127,64,0,127,0,127,64,0,253,0,127,64,2,252,0,127,64,7,240,0,127,64,15,208,0,127,64,47,128,0,127,64,127,255,255,255,255,127,255,255,255,255,127,255,255,255,255,21,85,85,191,149,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64, + // 0x0035 5 + 17,27,135,21,2,255,26,170,170,168,0,31,255,255,252,0,47,255,255,252,0,47,234,170,168,0,47,192,0,0,0,47,192,0,0,0,63,128,0,0,0,63,128,0,0,0,63,128,0,0,0,63,64,0,0,0,63,255,249,0,0,63,255,255,224,0,63,255,255,248,0,10,81,111,254,0,0,0,2,255,0,0,0,0,255,64,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,64,0,0,0,255,0,64,0,1,255,0,249,0,27,253,0,255,255,255,248,0,255,255,255,208,0,47,255,254,0,0,0,21,64,0,0, + // 0x0036 6 + 17,27,135,21,2,255,0,1,191,252,0,0,47,255,252,0,0,255,255,252,0,3,255,144,4,0,11,248,0,0,0,31,224,0,0,0,63,192,0,0,0,63,128,0,0,0,127,0,0,0,0,191,0,0,0,0,254,11,255,208,0,254,127,255,248,0,254,255,255,254,0,255,240,2,255,0,255,128,0,191,128,255,0,0,63,192,254,0,0,63,192,254,0,0,47,192,255,0,0,63,192,191,0,0,63,192,127,64,0,63,128,63,192,0,191,64,31,244,2,255,0,11,255,255,252,0,2,255,255,244,0,0,127,255,128,0,0,1,80,0,0, + // 0x0037 7 + 18,26,130,21,1,0,106,170,170,170,160,191,255,255,255,240,191,255,255,255,240,106,170,170,175,240,0,0,0,31,208,0,0,0,63,192,0,0,0,127,64,0,0,0,255,0,0,0,1,254,0,0,0,3,252,0,0,0,3,248,0,0,0,11,240,0,0,0,15,240,0,0,0,47,208,0,0,0,63,192,0,0,0,191,64,0,0,0,255,0,0,0,1,254,0,0,0,3,252,0,0,0,7,248,0,0,0,15,240,0,0,0,31,240,0,0,0,63,208,0,0,0,63,192,0,0,0,191,64,0,0,0,255,0,0,0, + // 0x0038 8 + 18,27,135,21,1,255,0,27,255,128,0,1,255,255,248,0,7,255,255,255,0,15,248,1,255,128,31,224,0,63,192,47,192,0,47,192,47,192,0,47,192,31,208,0,63,192,15,240,0,63,128,11,252,1,255,0,2,255,155,252,0,0,191,255,224,0,0,47,255,128,0,0,191,255,244,0,3,255,95,254,0,15,244,1,255,128,47,208,0,63,192,63,128,0,15,224,127,64,0,15,240,127,64,0,15,240,127,64,0,15,240,63,192,0,31,224,47,240,0,127,192,15,255,171,255,64,3,255,255,253,0,0,127,255,224,0,0,0,84,0,0, + // 0x0039 9 + 18,27,135,21,1,255,0,27,254,64,0,0,255,255,240,0,7,255,255,252,0,15,253,7,255,0,47,224,0,191,64,63,192,0,63,192,63,128,0,31,208,127,64,0,15,224,127,64,0,15,224,127,64,0,15,240,63,128,0,15,240,63,192,0,63,240,47,224,0,191,240,15,254,91,255,240,7,255,255,207,224,1,255,255,15,224,0,6,144,15,208,0,0,0,31,192,0,0,0,47,192,0,0,0,63,128,0,0,0,255,0,0,0,2,254,0,0,0,31,252,0,11,255,255,240,0,11,255,255,128,0,11,255,248,0,0,0,84,0,0,0, + // 0x003a : + 6,21,42,10,2,255,31,64,127,192,191,208,127,208,63,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,63,192,127,208,127,208,63,192,5,0, + // 0x003b ; + 7,25,50,10,1,251,11,208,31,240,47,244,47,240,15,224,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,240,31,224,47,208,47,192,63,128,63,0,127,0,189,0,168,0, + // 0x003c < + 18,18,90,21,1,4,0,0,0,0,96,0,0,0,7,240,0,0,0,127,240,0,0,7,255,208,0,0,127,248,0,0,7,255,128,0,0,127,248,0,0,7,255,128,0,0,63,244,0,0,0,127,208,0,0,0,63,254,0,0,0,6,255,228,0,0,0,47,255,64,0,0,1,255,248,0,0,0,31,255,208,0,0,0,191,240,0,0,0,11,240,0,0,0,0,96, + // 0x003d = + 17,11,55,21,2,7,170,170,170,170,64,255,255,255,255,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,170,170,64,255,255,255,255,128,255,255,255,255,128,85,85,85,85,0, + // 0x003e > + 18,18,90,21,1,4,96,0,0,0,0,126,0,0,0,0,127,224,0,0,0,47,254,0,0,0,1,255,224,0,0,0,31,254,0,0,0,1,255,224,0,0,0,31,254,0,0,0,0,191,224,0,0,0,47,240,0,0,6,255,224,0,0,127,254,0,0,11,255,208,0,1,255,249,0,0,47,255,128,0,0,127,244,0,0,0,127,64,0,0,0,96,0,0,0,0, + // 0x003f ? + 15,27,108,16,0,255,1,191,249,0,47,255,255,192,127,255,255,240,63,144,111,248,20,0,3,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,3,252,0,0,15,244,0,0,63,224,0,0,255,128,0,3,254,0,0,15,244,0,0,31,208,0,0,63,128,0,0,63,64,0,0,63,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,127,192,0,0,191,192,0,0,191,192,0,0,127,128,0,0,5,0,0, + // 0x0040 @ + 29,30,240,32,2,252,0,0,1,106,164,0,0,0,0,0,111,255,255,208,0,0,0,3,255,255,255,252,0,0,0,31,249,0,6,255,64,0,0,191,128,0,0,63,208,0,1,253,0,0,0,11,240,0,7,244,0,0,0,2,252,0,15,208,0,111,164,0,252,0,31,192,11,255,255,128,126,0,63,0,63,255,255,128,63,0,63,0,191,64,47,128,63,0,126,0,253,0,47,128,47,0,189,2,252,0,47,64,47,64,252,3,244,0,47,64,47,64,252,3,244,0,63,64,47,64,252,3,240,0,63,64,63,0,252,3,244,0,63,64,63,0,252,2,248,0,127,64,126,0,252,1,252,0,255,128,252,0,189,0,255,155,251,231,248,0,126,0,63,255,195,255,224,0,63,0,11,254,0,255,64,0,47,128,0,0,0,0,0,0,15,224,0,0,0,0,0,0,7,248,0,0,0,0,0,0,2,255,64,0,1,160,0,0,0,127,254,170,191,224,0,0,0,11,255,255,255,208,0,0,0,0,111,255,249,0,0,0,0,0,0,0,0,0,0,0, + // 0x0041 A + 24,26,156,24,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x0042 B + 19,26,130,24,3,0,106,170,169,64,0,191,255,255,248,0,191,255,255,255,64,191,170,175,255,192,191,64,0,127,224,191,64,0,47,240,191,64,0,15,240,191,64,0,15,240,191,64,0,31,224,191,64,0,63,208,191,64,1,255,128,191,255,255,254,0,191,255,255,224,0,191,255,255,255,0,191,64,5,255,208,191,64,0,47,240,191,64,0,15,244,191,64,0,7,248,191,64,0,7,248,191,64,0,11,248,191,64,0,15,244,191,64,0,47,240,191,64,22,255,224,191,255,255,255,192,191,255,255,254,0,191,255,255,144,0, + // 0x0043 C + 20,27,135,23,2,255,0,0,191,255,144,0,15,255,255,253,0,127,255,255,252,2,255,245,91,252,7,255,0,0,36,15,252,0,0,0,47,240,0,0,0,63,208,0,0,0,63,192,0,0,0,127,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,224,0,0,0,31,244,0,0,0,15,253,0,0,0,3,255,208,1,184,0,255,255,255,248,0,63,255,255,248,0,6,255,255,224,0,0,5,80,0, + // 0x0044 D + 21,26,156,26,3,0,106,170,169,0,0,0,191,255,255,248,0,0,191,255,255,255,64,0,191,170,175,255,224,0,191,64,0,127,248,0,191,64,0,11,253,0,191,64,0,2,255,0,191,64,0,0,255,64,191,64,0,0,191,128,191,64,0,0,127,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,127,192,191,64,0,0,191,128,191,64,0,0,255,64,191,64,0,2,255,0,191,64,0,11,253,0,191,64,0,127,248,0,191,149,91,255,240,0,191,255,255,255,128,0,191,255,255,248,0,0,191,255,254,64,0,0, + // 0x0045 E + 15,26,104,20,3,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x0046 F + 15,26,104,19,3,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,240,191,255,255,240,191,255,255,240,191,85,85,80,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0, + // 0x0047 G + 22,27,162,26,2,255,0,0,111,255,228,0,0,11,255,255,255,192,0,63,255,255,255,128,1,255,249,85,191,64,3,255,128,0,2,0,15,252,0,0,0,0,31,240,0,0,0,0,63,224,0,0,0,0,63,192,0,0,0,0,127,128,0,0,0,0,191,64,0,0,0,0,255,64,0,0,0,0,255,0,0,191,255,208,255,0,0,255,255,208,255,64,0,255,255,208,191,64,0,106,175,208,191,128,0,0,31,208,127,192,0,0,31,208,63,192,0,0,31,208,47,224,0,0,31,208,31,244,0,0,31,208,11,254,0,0,31,208,3,255,208,0,111,208,0,255,255,255,255,208,0,47,255,255,255,208,0,2,255,255,254,64,0,0,1,84,0,0, + // 0x0048 H + 21,26,156,27,3,0,106,0,0,0,106,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,255,255,255,255,64,191,255,255,255,255,64,191,255,255,255,255,64,191,85,85,85,191,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64, + // 0x0049 I + 11,26,78,13,1,0,106,170,160,191,255,244,127,255,240,2,254,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,47,255,208,191,255,244,191,255,244, + // 0x004a J + 10,34,102,10,253,248,0,10,160,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,15,240,0,15,240,0,47,224,85,191,208,255,255,128,255,254,0,191,228,0,0,0,0, + // 0x004b K + 20,26,130,23,3,0,106,0,0,2,168,191,64,0,15,244,191,64,0,63,224,191,64,0,191,128,191,64,2,255,0,191,64,7,252,0,191,64,31,240,0,191,64,63,192,0,191,64,255,64,0,191,67,253,0,0,191,79,248,0,0,191,111,240,0,0,191,255,244,0,0,191,255,252,0,0,191,247,254,0,0,191,208,255,64,0,191,64,191,192,0,191,64,63,240,0,191,64,15,248,0,191,64,7,252,0,191,64,2,255,0,191,64,0,255,128,191,64,0,63,208,191,64,0,47,240,191,64,0,15,248,191,64,0,3,253, + // 0x004c L + 16,26,104,19,3,0,106,0,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,253,191,255,255,253,191,255,255,253, + // 0x004d M + 27,26,182,33,3,0,106,160,0,0,0,42,164,191,244,0,0,0,127,248,191,252,0,0,0,191,248,191,252,0,0,0,255,248,191,253,0,0,1,255,248,191,191,0,0,3,247,248,191,127,0,0,3,243,248,191,63,128,0,11,227,248,191,47,192,0,15,211,248,191,31,208,0,31,195,248,191,15,224,0,47,131,248,191,11,240,0,63,67,248,191,3,244,0,127,3,248,191,3,248,0,254,3,248,191,1,252,0,252,3,248,191,0,253,2,252,3,248,191,0,255,3,244,3,248,191,0,127,7,240,3,248,191,0,63,75,224,3,248,191,0,47,207,208,3,248,191,0,31,239,192,3,248,191,0,15,255,128,3,248,191,0,11,255,0,3,248,191,0,7,255,0,3,248,191,0,3,254,0,3,248,191,0,2,252,0,3,248, + // 0x004e N + 22,26,156,28,3,0,106,128,0,0,10,144,191,240,0,0,15,224,191,244,0,0,15,224,191,252,0,0,15,224,191,254,0,0,15,224,191,255,64,0,15,224,190,127,192,0,15,224,191,63,224,0,15,224,191,15,240,0,15,224,191,11,252,0,15,224,191,3,253,0,15,224,191,1,255,0,15,224,191,0,191,128,15,224,191,0,63,208,15,224,191,0,31,240,15,224,191,0,15,248,15,224,191,0,3,253,15,224,191,0,2,255,15,224,191,0,0,255,143,224,191,0,0,127,207,224,191,0,0,47,255,224,191,0,0,15,255,224,191,0,0,7,255,224,191,0,0,3,255,224,191,0,0,0,255,224,191,0,0,0,191,224, + // 0x004f O + 24,27,162,28,2,255,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x0050 P + 17,26,130,22,3,0,106,170,165,0,0,191,255,255,224,0,191,255,255,252,0,191,170,191,255,0,191,64,2,255,128,191,64,0,127,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,127,192,191,64,0,255,128,191,64,27,255,0,191,255,255,253,0,191,255,255,240,0,191,255,254,64,0,191,84,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0, + // 0x0051 Q + 24,33,198,28,2,249,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,208,0,0,0,5,127,240,0,0,0,0,15,252,0,0,0,0,7,254,0,0,0,0,1,255,128,0,0,0,0,191,224,0,0,0,0,47,248,0,0,0,0,0,0, + // 0x0052 R + 19,26,130,23,3,0,106,170,165,0,0,191,255,255,224,0,191,255,255,253,0,191,170,191,255,0,191,64,1,255,128,191,64,0,127,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,127,128,191,64,2,255,0,191,234,191,253,0,191,255,255,244,0,191,255,255,128,0,191,170,191,192,0,191,64,47,208,0,191,64,15,240,0,191,64,11,248,0,191,64,3,253,0,191,64,1,255,0,191,64,0,191,128,191,64,0,63,192,191,64,0,47,240,191,64,0,15,244,191,64,0,7,252, + // 0x0053 S + 16,27,108,20,2,255,0,111,255,144,7,255,255,253,31,255,255,253,63,249,86,252,191,192,0,20,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,208,0,0,63,253,0,0,15,255,208,0,3,255,253,0,0,127,255,208,0,6,255,244,0,0,47,252,0,0,7,254,0,0,0,255,0,0,0,255,0,0,0,191,0,0,0,255,64,0,1,255,249,0,11,253,255,255,255,248,255,255,255,224,111,255,254,0,0,21,64,0, + // 0x0054 T + 20,26,130,20,0,0,106,170,170,170,170,191,255,255,255,255,191,255,255,255,255,106,170,255,170,169,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0, + // 0x0055 U + 21,27,162,27,3,255,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,255,0,63,224,0,3,253,0,15,253,0,47,248,0,7,255,255,255,240,0,1,255,255,255,128,0,0,47,255,249,0,0,0,0,21,0,0,0, + // 0x0056 V + 22,26,156,22,0,0,170,0,0,0,10,160,191,64,0,0,31,224,63,192,0,0,47,208,63,192,0,0,63,192,47,208,0,0,127,128,15,240,0,0,191,64,15,240,0,0,255,0,7,244,0,1,254,0,3,252,0,2,252,0,3,252,0,3,252,0,1,253,0,7,248,0,0,255,0,11,240,0,0,191,0,15,240,0,0,127,128,31,208,0,0,63,192,63,192,0,0,47,192,63,192,0,0,31,224,127,64,0,0,15,240,255,0,0,0,11,240,254,0,0,0,7,245,253,0,0,0,3,250,252,0,0,0,2,255,248,0,0,0,0,255,244,0,0,0,0,255,240,0,0,0,0,127,224,0,0,0,0,63,192,0,0, + // 0x0057 W + 34,26,234,34,0,0,106,64,0,2,168,0,0,26,144,127,128,0,7,252,0,0,47,192,63,192,0,11,253,0,0,63,192,63,192,0,15,254,0,0,63,128,47,208,0,31,255,0,0,127,64,31,224,0,47,255,64,0,191,0,15,240,0,63,191,128,0,255,0,15,240,0,63,111,192,0,254,0,11,244,0,127,31,192,1,253,0,7,248,0,191,15,208,2,252,0,3,252,0,254,15,240,3,252,0,3,252,1,253,11,240,3,248,0,2,253,2,252,3,244,7,244,0,1,254,3,248,3,248,11,240,0,0,255,3,244,2,252,15,240,0,0,191,7,240,1,252,15,224,0,0,127,75,240,0,253,31,208,0,0,63,143,224,0,254,47,192,0,0,63,143,208,0,191,63,192,0,0,47,223,192,0,63,63,64,0,0,31,239,128,0,63,191,0,0,0,15,255,64,0,47,255,0,0,0,15,255,0,0,31,254,0,0,0,11,255,0,0,15,253,0,0,0,7,254,0,0,15,252,0,0,0,3,253,0,0,11,252,0,0, + // 0x0058 X + 22,26,156,22,0,0,42,128,0,0,42,128,47,224,0,0,191,64,15,244,0,1,255,0,7,252,0,3,252,0,2,254,0,11,248,0,0,255,0,15,240,0,0,127,192,47,192,0,0,47,208,127,128,0,0,15,240,255,0,0,0,7,250,253,0,0,0,2,255,248,0,0,0,0,255,240,0,0,0,0,191,208,0,0,0,0,255,240,0,0,0,2,255,244,0,0,0,3,255,252,0,0,0,15,241,254,0,0,0,31,208,255,64,0,0,63,192,63,192,0,0,191,64,47,224,0,1,254,0,15,244,0,3,252,0,7,252,0,11,244,0,2,254,0,31,240,0,0,255,0,63,192,0,0,127,192,191,128,0,0,63,224, + // 0x0059 Y + 21,26,156,21,0,0,170,64,0,0,106,128,127,192,0,0,255,64,63,208,0,1,255,0,31,240,0,3,252,0,11,244,0,7,248,0,3,252,0,15,240,0,2,253,0,31,224,0,0,255,0,63,192,0,0,191,128,127,128,0,0,63,192,255,0,0,0,47,226,253,0,0,0,15,243,252,0,0,0,7,255,244,0,0,0,3,255,240,0,0,0,1,255,208,0,0,0,0,255,128,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0, + // 0x005a Z + 19,26,130,21,1,0,106,170,170,170,160,127,255,255,255,240,127,255,255,255,240,42,170,170,191,240,0,0,0,63,192,0,0,0,255,64,0,0,2,255,0,0,0,3,252,0,0,0,15,244,0,0,0,47,224,0,0,0,63,192,0,0,0,255,64,0,0,2,254,0,0,0,3,252,0,0,0,15,244,0,0,0,47,224,0,0,0,127,192,0,0,0,255,64,0,0,2,254,0,0,0,7,252,0,0,0,15,244,0,0,0,47,224,0,0,0,127,213,85,85,80,255,255,255,255,244,255,255,255,255,244,255,255,255,255,244, + // 0x005b [ + 8,32,64,12,3,250,170,170,255,255,255,255,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,255,255,255,255,170,170, + // 0x005c "\" + 14,26,104,14,0,0,106,0,0,0,63,64,0,0,63,128,0,0,31,192,0,0,15,208,0,0,11,240,0,0,7,240,0,0,3,248,0,0,2,252,0,0,0,253,0,0,0,254,0,0,0,127,0,0,0,63,64,0,0,63,192,0,0,31,192,0,0,15,224,0,0,11,240,0,0,7,244,0,0,3,248,0,0,2,252,0,0,0,253,0,0,0,255,0,0,0,127,0,0,0,63,128,0,0,47,192,0,0,31,208, + // 0x005d ] + 8,32,64,12,1,250,170,170,255,255,255,255,0,191,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,191,255,255,255,255,170,170, + // 0x005e ^ + 18,17,85,21,1,9,0,1,240,0,0,0,3,248,0,0,0,7,252,0,0,0,11,254,0,0,0,15,255,0,0,0,47,95,128,0,0,63,15,192,0,0,189,7,224,0,0,252,3,240,0,2,248,1,248,0,3,240,0,253,0,7,224,0,127,0,15,192,0,63,64,31,128,0,31,192,63,64,0,15,208,127,0,0,7,240,105,0,0,2,160, + // 0x005f _ + 16,3,12,16,0,250,255,255,255,254,255,255,255,254,170,170,170,169, + // 0x0060 ` + 9,7,21,11,1,21,106,128,0,63,224,0,15,240,0,3,252,0,0,254,0,0,63,64,0,0,0, + // 0x0061 a + 17,21,105,21,1,255,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x0062 b + 18,29,145,22,3,255,85,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,1,170,0,0,254,47,255,224,0,254,191,255,252,0,255,254,91,255,0,255,208,1,255,64,255,128,0,127,128,255,0,0,63,192,255,0,0,47,192,255,0,0,47,208,255,0,0,47,208,255,0,0,31,208,255,0,0,47,208,255,0,0,47,208,255,0,0,63,192,255,64,0,63,192,255,192,0,191,128,255,240,2,255,0,255,255,255,253,0,252,127,255,248,0,252,11,255,208,0,0,0,20,0,0, + // 0x0063 c + 15,21,84,18,2,255,0,6,170,64,0,255,255,244,7,255,255,240,15,254,171,224,63,240,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,128,0,0,63,192,0,0,63,244,0,176,15,255,255,240,3,255,255,240,0,127,255,208,0,1,84,0, + // 0x0064 d + 18,29,145,22,2,255,0,0,0,5,64,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,26,164,31,208,1,255,255,31,208,11,255,255,223,208,31,254,91,255,208,63,224,0,255,208,127,192,0,127,208,191,64,0,63,208,255,0,0,47,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,47,208,191,64,0,63,208,127,192,0,127,208,63,240,1,255,208,15,255,255,239,208,7,255,255,143,208,0,191,253,15,208,0,5,64,0,0, + // 0x0065 e + 17,21,105,21,2,255,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x0066 f + 14,28,112,13,0,0,0,0,89,64,0,11,255,240,0,63,255,240,0,127,250,224,0,255,64,0,0,255,0,0,0,255,0,0,0,254,0,0,1,255,85,0,47,255,255,64,127,255,255,64,42,255,170,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0, + // 0x0067 g + 18,29,145,22,2,247,0,26,160,5,64,2,255,255,15,208,11,255,255,207,208,31,254,91,255,208,63,224,0,255,208,127,192,0,127,208,191,64,0,63,208,255,0,0,47,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,47,208,191,64,0,63,208,127,192,0,127,208,63,240,1,255,208,15,255,191,255,208,7,255,255,159,208,0,191,253,31,208,0,5,64,31,208,0,0,0,47,192,0,0,0,63,192,0,0,0,63,192,36,0,0,255,64,47,233,91,255,0,47,255,255,252,0,31,255,255,224,0,0,90,165,0,0, + // 0x0068 h + 17,28,140,23,3,0,85,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,1,170,64,0,254,31,255,244,0,254,191,255,253,0,255,254,91,255,0,255,224,0,255,64,255,128,0,127,128,255,64,0,63,128,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192, + // 0x0069 i + 4,27,27,10,3,0,104,255,255,255,40,0,0,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x006a j + 9,36,108,10,254,247,0,26,0,0,63,192,0,63,192,0,63,192,0,10,0,0,0,0,0,0,0,0,21,64,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,128,0,191,128,170,255,64,255,254,0,255,248,0,106,64,0, + // 0x006b k + 17,28,140,20,3,0,85,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,85,0,255,0,3,254,0,255,0,15,248,0,255,0,47,224,0,255,0,191,128,0,255,2,255,0,0,255,11,252,0,0,254,31,240,0,0,254,127,192,0,0,254,255,192,0,0,255,255,240,0,0,255,239,248,0,0,255,131,253,0,0,255,1,255,0,0,255,0,191,192,0,255,0,63,224,0,255,0,15,244,0,255,0,7,252,0,255,0,2,255,0,255,0,0,255,128, + // 0x006c l + 4,28,28,10,3,0,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x006d m + 29,20,160,34,3,0,84,1,170,0,1,170,64,0,252,47,255,224,47,255,240,0,253,191,255,252,191,255,252,0,255,253,95,255,254,91,254,0,255,208,2,255,224,1,255,0,255,128,0,255,192,0,255,0,255,64,0,255,64,0,191,64,255,0,0,255,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64, + // 0x006e n + 17,20,100,23,3,0,84,1,170,64,0,252,47,255,244,0,253,191,255,253,0,255,254,91,255,0,255,224,0,255,64,255,128,0,127,128,255,64,0,63,128,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192, + // 0x006f o + 18,21,105,22,2,255,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x0070 p + 18,29,145,22,3,247,84,1,170,0,0,253,31,255,224,0,253,191,255,252,0,255,254,91,255,0,255,208,1,255,64,255,128,0,127,192,255,0,0,63,192,255,0,0,63,192,255,0,0,47,208,255,0,0,47,208,255,0,0,31,208,255,0,0,47,208,255,0,0,47,208,255,0,0,63,192,255,64,0,63,192,255,192,0,255,128,255,240,2,255,0,255,255,255,253,0,254,127,255,248,0,254,11,255,208,0,255,0,20,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,170,0,0,0,0, + // 0x0071 q + 18,29,145,22,2,247,0,26,160,5,64,1,255,255,15,208,11,255,255,207,208,31,254,91,255,208,63,224,0,255,208,127,192,0,127,208,191,64,0,63,208,255,0,0,47,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,47,208,191,64,0,63,208,127,192,0,127,208,63,240,1,255,208,15,255,255,239,208,7,255,255,159,208,0,191,253,31,208,0,5,64,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,26,128, + // 0x0072 r + 12,20,60,15,3,0,84,1,169,252,15,254,253,63,253,254,255,253,255,248,0,255,208,0,255,128,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, + // 0x0073 s + 14,21,84,17,2,255,0,106,164,0,15,255,255,192,63,255,255,192,255,149,111,128,254,0,0,0,254,0,0,0,255,0,0,0,255,208,0,0,63,254,0,0,15,255,244,0,1,255,254,0,0,27,255,192,0,0,191,208,0,0,31,240,0,0,15,240,0,0,15,240,208,0,47,224,255,170,255,192,255,255,255,64,127,255,248,0,0,85,0,0, + // 0x0074 t + 13,25,100,14,0,255,0,60,0,0,0,188,0,0,0,252,0,0,0,252,0,0,3,253,85,64,47,255,255,128,127,255,255,128,43,254,170,64,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,253,0,0,1,255,0,0,0,255,255,192,0,127,255,192,0,31,255,128,0,0,80,0, + // 0x0075 u + 17,21,105,23,3,255,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,31,128,0,21,0,0,0, + // 0x0076 v + 19,20,100,19,0,0,85,0,0,1,84,191,64,0,7,248,127,128,0,15,240,63,192,0,15,240,47,208,0,31,208,15,240,0,63,192,15,240,0,63,128,7,244,0,191,64,3,252,0,255,0,2,252,1,254,0,1,254,2,252,0,0,255,3,252,0,0,127,7,244,0,0,63,139,240,0,0,47,207,224,0,0,31,223,208,0,0,15,255,192,0,0,11,255,128,0,0,3,255,0,0,0,3,255,0,0, + // 0x0077 w + 29,20,160,29,0,0,21,0,0,85,64,0,21,64,127,128,0,255,192,0,127,64,63,192,0,255,192,0,191,0,63,192,1,255,208,0,255,0,47,208,2,251,240,0,254,0,15,224,3,243,240,2,253,0,15,240,7,243,244,3,252,0,11,240,11,226,248,3,248,0,7,244,15,209,252,7,244,0,3,248,15,192,252,11,240,0,3,252,31,192,254,15,240,0,2,252,63,128,191,15,224,0,1,253,63,0,127,31,208,0,0,254,127,0,63,111,192,0,0,254,126,0,47,175,192,0,0,127,189,0,31,191,64,0,0,63,252,0,15,255,0,0,0,63,252,0,15,255,0,0,0,47,244,0,11,254,0,0,0,31,240,0,7,253,0,0, + // 0x0078 x + 18,20,100,20,1,0,85,0,0,21,64,191,192,0,63,192,63,208,0,255,64,15,240,2,254,0,7,252,3,252,0,3,253,15,244,0,0,255,31,224,0,0,127,255,192,0,0,47,255,0,0,0,15,254,0,0,0,15,253,0,0,0,47,255,0,0,0,127,255,192,0,0,255,47,224,0,2,254,15,240,0,7,252,7,252,0,15,240,2,254,0,47,224,0,255,64,127,192,0,127,192,255,0,0,47,224, + // 0x0079 y + 19,29,145,19,0,247,85,0,0,1,84,191,64,0,7,248,63,192,0,15,240,63,192,0,15,240,31,224,0,31,208,15,240,0,63,192,11,244,0,63,128,3,248,0,191,64,3,252,0,255,0,1,253,0,254,0,0,255,2,252,0,0,191,3,252,0,0,63,71,244,0,0,63,203,240,0,0,31,207,224,0,0,15,223,208,0,0,11,255,192,0,0,3,255,128,0,0,3,255,0,0,0,1,255,0,0,0,1,253,0,0,0,3,252,0,0,0,3,248,0,0,0,11,244,0,0,0,47,240,0,0,38,255,192,0,0,127,255,64,0,0,127,253,0,0,0,42,144,0,0,0, + // 0x007a z + 15,20,80,17,1,0,21,85,85,80,63,255,255,248,63,255,255,248,42,170,175,244,0,0,31,224,0,0,63,192,0,0,255,0,0,2,254,0,0,7,252,0,0,15,240,0,0,47,208,0,0,127,128,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,192,0,0,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x007b { + 12,32,96,14,1,250,0,0,105,0,11,254,0,47,254,0,127,228,0,191,64,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,254,0,2,253,0,175,248,0,255,144,0,255,208,0,175,252,0,2,253,0,0,254,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,64,0,127,228,0,47,254,0,11,254,0,0,105, + // 0x007c | + 4,37,37,20,8,247,20,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,104, + // 0x007d } + 12,32,96,14,1,250,169,0,0,255,208,0,255,248,0,95,252,0,2,253,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,255,0,0,191,64,0,63,250,0,7,255,0,7,255,0,63,250,0,191,64,0,255,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,2,253,0,95,252,0,255,248,0,255,208,0,169,0,0, + // 0x007e ~ + 18,5,25,21,1,10,11,255,128,0,32,63,255,253,66,240,127,255,255,255,240,120,1,191,255,192,16,0,6,249,0, + // 0x007f - 0x009a Control Characters + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x00a0 "�" + 0,0,0,9,0,0, + // 0x00a1 ¡ + 6,27,54,10,2,249,10,0,63,192,127,208,127,208,63,192,5,0,0,0,0,0,10,0,47,64,47,64,47,64,47,64,47,128,63,128,63,128,63,128,63,128,63,192,63,192,63,192,63,192,63,192,63,192,127,192,127,192,42,128, + // 0x00a2 ¢ + 15,27,108,21,3,255,0,3,240,0,0,3,240,0,0,3,240,0,0,47,255,224,2,255,255,244,11,255,255,240,31,248,1,160,63,208,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,192,0,0,63,224,0,0,31,254,86,244,11,255,255,244,1,255,255,240,0,27,254,64,0,3,240,0,0,3,240,0,0,3,240,0,0,1,80,0, + // 0x00a3 £ + 19,26,130,21,1,0,0,1,191,249,0,0,15,255,255,208,0,63,255,255,192,0,191,208,27,128,0,255,0,0,0,0,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,22,254,85,80,0,191,255,255,248,0,191,255,255,248,0,106,255,170,164,0,1,254,0,0,0,1,254,0,0,0,1,253,0,0,0,1,253,0,0,0,1,253,0,0,0,3,252,0,0,0,11,244,0,0,0,127,229,85,85,80,255,255,255,255,244,255,255,255,255,244,255,255,255,255,244, + // 0x00a4 ¤ + 16,17,68,21,2,4,20,0,0,8,125,6,164,63,191,191,255,255,47,255,255,252,15,244,11,244,15,192,1,248,31,64,0,252,47,0,0,188,47,0,0,125,47,0,0,188,31,128,0,252,15,224,3,248,15,254,111,244,63,255,255,253,191,111,253,191,60,0,64,45,0,0,0,0, + // 0x00a5 ¥ + 20,26,130,21,0,0,106,64,0,0,170,63,192,0,1,253,31,208,0,3,252,15,240,0,7,244,7,244,0,15,240,3,252,0,31,208,1,253,0,63,192,0,255,0,127,64,0,127,64,255,0,0,63,193,252,0,0,31,211,248,0,0,15,247,240,0,0,3,255,224,0,0,87,255,213,64,2,255,255,255,192,2,255,255,255,192,0,85,191,85,64,0,0,191,0,0,0,0,191,0,0,2,255,255,255,192,2,255,255,255,192,1,170,255,170,128,0,0,191,0,0,0,0,191,0,0,0,0,191,0,0,0,0,191,0,0, + // 0x00a6 ¦ + 4,37,37,20,8,247,20,189,189,189,189,189,189,189,189,189,189,189,189,189,104,0,0,0,0,0,0,0,20,189,189,189,189,189,189,189,189,189,189,189,189,189,104, + // 0x00a7 § + 14,29,116,18,2,255,0,22,80,0,7,255,255,144,47,255,255,208,63,208,27,192,191,0,0,64,191,0,0,0,127,64,0,0,63,228,0,0,15,255,64,0,7,255,248,0,31,239,255,0,63,64,191,192,126,0,31,224,189,0,7,240,190,0,3,240,127,64,7,240,63,224,11,224,15,255,111,192,2,255,255,0,0,31,255,64,0,1,255,192,0,0,31,224,0,0,11,240,0,0,11,240,208,0,15,224,255,166,191,192,255,255,255,64,47,255,248,0,0,0,0,0, + // 0x00a8 ¨ + 11,5,15,21,5,22,20,0,80,191,2,248,191,3,252,127,2,248,20,0,80, + // 0x00a9 © + 26,27,189,30,2,255,0,0,111,255,144,0,0,0,7,255,255,253,0,0,0,63,208,0,191,192,0,1,253,0,0,7,240,0,3,224,0,0,0,252,0,15,128,6,255,128,63,0,47,0,47,255,240,15,64,61,0,255,155,208,7,192,124,1,252,0,0,3,208,180,3,240,0,0,2,224,240,7,224,0,0,1,240,240,7,208,0,0,0,240,240,11,208,0,0,0,240,240,11,208,0,0,0,240,240,11,208,0,0,0,240,240,7,208,0,0,1,240,244,3,240,0,0,2,240,184,3,244,0,0,3,208,60,0,254,65,144,7,192,47,0,127,255,208,15,128,15,128,11,255,128,47,0,7,208,0,0,0,189,0,2,248,0,0,3,248,0,0,127,128,0,111,208,0,0,15,255,175,255,0,0,0,1,191,255,228,0,0,0,0,0,80,0,0,0, + // 0x00aa ª + 11,13,39,13,1,13,6,254,64,63,255,224,45,7,240,0,1,244,0,1,244,11,255,244,63,234,244,189,0,244,252,1,244,252,3,244,191,191,244,47,248,180,1,64,0, + // 0x00ab « + 17,16,80,19,1,1,0,15,0,30,0,0,63,192,63,128,0,191,64,255,0,2,254,3,252,0,7,248,11,244,0,15,240,47,224,0,63,192,127,128,0,127,128,255,0,0,63,208,63,192,0,15,240,31,224,0,3,252,11,248,0,1,254,2,253,0,0,191,128,255,0,0,47,192,63,128,0,14,0,13,0,0,0,0,0,0, + // 0x00ac ¬ + 18,10,50,21,1,4,127,255,255,255,240,127,255,255,255,240,63,255,255,255,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,1,80, + // 0x00ad ­ + 10,4,12,12,1,8,21,85,64,191,255,208,191,255,208,191,255,208, + // 0x00ae ® + 26,27,189,30,2,255,0,0,111,255,144,0,0,0,7,255,255,253,0,0,0,63,208,0,191,192,0,1,253,0,0,7,240,0,3,224,0,0,0,252,0,15,128,170,169,0,63,0,47,0,255,255,192,15,64,61,0,254,175,240,7,192,124,0,252,3,240,3,208,180,0,252,2,244,2,224,240,0,252,2,244,1,240,240,0,252,3,240,0,240,240,0,253,111,224,0,240,240,0,255,255,64,0,240,240,0,255,255,0,0,240,240,0,252,47,64,1,240,244,0,252,15,192,2,240,184,0,252,7,224,3,208,60,0,252,3,240,7,192,47,0,252,1,252,15,128,15,128,252,0,189,47,0,7,208,0,0,0,189,0,2,248,0,0,3,248,0,0,127,128,0,111,208,0,0,15,255,175,255,0,0,0,1,191,255,228,0,0,0,0,0,80,0,0,0, + // 0x00af ¯ + 18,3,15,18,0,27,255,255,255,255,240,255,255,255,255,240,170,170,170,170,160, + // 0x00b0 ° + 12,12,36,15,2,14,6,255,64,47,255,240,127,155,248,252,0,252,248,0,125,248,0,62,248,0,61,252,0,189,127,70,252,47,255,240,11,255,128,0,16,0, + // 0x00b1 ± + 18,22,110,21,1,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,42,170,254,170,144,127,255,255,255,240,127,255,255,255,240,21,86,253,85,80,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,164,0,0,0,0,0,0,0,127,255,255,255,240,127,255,255,255,240,127,255,255,255,240, + // 0x00b2 ² + 11,17,51,13,1,14,1,169,0,47,255,192,255,255,240,56,3,240,0,3,244,0,3,240,0,3,240,0,15,208,0,47,128,0,190,0,2,248,0,11,224,0,47,128,0,191,170,160,255,255,244,255,255,244,0,0,0, + // 0x00b3 ³ + 12,17,51,13,0,14,1,170,64,31,255,240,63,235,252,13,0,252,0,0,188,0,0,252,0,2,244,3,255,208,3,255,224,0,6,252,0,0,190,0,0,126,0,0,126,121,1,253,127,255,248,47,255,208,0,20,0, + // 0x00b4 ´ + 9,7,21,11,1,21,0,170,64,2,255,0,3,252,0,15,240,0,47,192,0,126,0,0,0,0,0, + // 0x00b5 µ + 17,29,145,23,3,247,85,0,0,21,64,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,0,0,191,192,255,64,0,255,192,255,208,7,255,192,255,255,255,255,192,255,255,255,31,192,254,127,252,31,192,254,1,64,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,170,0,0,0,0, + // 0x00b6 ¶ + 18,33,165,24,2,251,0,1,85,85,80,1,255,255,255,240,11,255,255,255,240,47,255,255,65,240,63,255,255,1,240,127,255,255,1,240,191,255,255,1,240,255,255,255,1,240,255,255,255,1,240,255,255,255,1,240,255,255,255,1,240,255,255,255,1,240,255,255,255,1,240,191,255,255,1,240,127,255,255,1,240,63,255,255,1,240,15,255,255,1,240,2,255,255,1,240,0,21,95,1,240,0,0,15,1,240,0,0,15,1,240,0,0,15,1,240,0,0,15,1,240,0,0,15,1,240,0,0,15,1,240,0,0,15,1,240,0,0,15,1,240,0,0,15,1,240,0,0,15,1,240,0,0,15,1,240,0,0,15,1,240,0,0,15,1,240,0,0,10,0,160, + // 0x00b7 · + 6,6,12,10,2,10,26,0,63,192,127,208,127,208,63,192,5,0, + // 0x00b8 ¸ + 8,9,18,8,0,247,7,192,15,128,31,244,2,252,0,189,0,189,171,252,255,244,106,64, + // 0x00b9 ¹ + 8,17,34,13,1,14,0,21,0,255,7,255,47,255,127,63,40,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,0, + // 0x00ba º + 12,13,39,14,1,13,2,255,64,15,255,240,63,86,248,125,0,188,188,0,125,252,0,62,252,0,62,252,0,61,188,0,124,63,1,252,47,255,240,7,255,192,0,20,0, + // 0x00bb » + 17,16,80,19,1,1,31,0,45,0,0,127,128,191,64,0,47,208,63,192,0,11,244,15,240,0,3,252,7,248,0,0,255,1,254,0,0,127,128,191,64,0,63,208,63,192,0,127,128,255,64,1,255,2,253,0,3,252,7,248,0,15,240,31,240,0,47,208,63,192,0,127,64,191,0,0,10,0,29,0,0,0,0,0,0,0, + // 0x00bc ¼ + 27,26,182,28,1,0,0,106,0,0,2,160,0,2,255,0,0,11,224,0,15,255,0,0,15,192,0,127,191,0,0,63,64,0,125,63,0,0,127,0,0,16,63,0,0,252,0,0,0,63,0,2,248,0,0,0,63,0,3,240,0,0,0,63,0,11,208,0,0,0,63,0,31,192,0,0,0,63,0,63,0,42,0,0,63,0,190,0,191,0,0,63,0,252,1,255,0,0,63,2,244,3,255,0,0,63,7,240,11,191,0,0,42,15,192,31,63,0,0,0,47,128,62,63,0,0,0,63,0,188,63,0,0,0,189,1,240,63,0,0,1,252,3,208,63,0,0,3,244,11,234,191,160,0,7,224,15,255,255,244,0,15,192,11,255,255,244,0,47,64,0,0,63,0,0,127,0,0,0,63,0,0,253,0,0,0,63,0, + // 0x00bd ½ + 27,26,182,29,1,0,0,169,0,0,10,128,0,3,254,0,0,31,192,0,31,254,0,0,63,0,0,191,190,0,0,190,0,0,188,126,0,0,252,0,0,32,190,0,2,244,0,0,0,190,0,7,240,0,0,0,190,0,15,192,0,0,0,190,0,47,128,0,0,0,190,0,63,0,0,0,0,190,0,189,2,169,0,0,190,1,252,63,255,192,0,190,3,244,255,255,240,0,190,7,224,56,7,240,0,190,15,192,0,3,240,0,105,47,64,0,3,240,0,0,127,0,0,3,240,0,0,253,0,0,15,208,0,1,248,0,0,63,128,0,3,240,0,0,254,0,0,11,224,0,3,248,0,0,15,192,0,15,224,0,0,63,64,0,63,128,0,0,126,0,0,255,170,160,0,252,0,0,255,255,244,2,248,0,0,255,255,244, + // 0x00be ¾ + 28,26,182,29,1,0,11,254,64,0,0,105,0,191,255,208,0,0,252,0,190,91,240,0,2,244,0,16,3,244,0,7,240,0,0,2,244,0,15,208,0,0,3,240,0,31,128,0,5,95,208,0,63,0,0,15,255,0,0,189,0,0,11,255,208,1,252,0,0,0,7,244,3,244,0,0,0,1,248,7,224,6,128,0,0,252,15,192,47,208,64,2,248,47,128,63,208,249,91,244,63,0,255,208,255,255,208,253,2,255,208,47,254,1,248,7,207,208,0,0,3,240,15,143,208,0,0,11,224,47,15,208,0,0,15,192,124,15,208,0,0,63,64,248,15,208,0,0,127,2,250,175,233,0,0,252,3,255,255,253,0,2,248,2,255,255,253,0,3,240,0,0,15,208,0,15,208,0,0,15,208,0,31,192,0,0,15,208, + // 0x00bf ¿ + 15,27,108,16,1,249,0,1,144,0,0,11,244,0,0,15,252,0,0,15,252,0,0,11,244,0,0,1,80,0,0,0,0,0,0,0,0,0,0,2,160,0,0,3,240,0,0,7,240,0,0,11,240,0,0,31,208,0,0,127,192,0,2,255,0,0,11,252,0,0,47,224,0,0,127,128,0,0,255,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,255,64,0,144,127,229,111,240,63,255,255,244,11,255,255,224,0,191,233,0, + // 0x00c0 À + 24,34,204,24,0,0,0,6,168,0,0,0,0,3,254,0,0,0,0,0,255,0,0,0,0,0,63,192,0,0,0,0,15,224,0,0,0,0,2,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x00c1 Á + 24,34,204,24,0,0,0,0,0,42,144,0,0,0,0,127,192,0,0,0,0,255,0,0,0,0,2,252,0,0,0,0,7,240,0,0,0,0,15,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x00c2 Â + 24,34,204,24,0,0,0,0,26,160,0,0,0,0,63,244,0,0,0,0,255,253,0,0,0,2,252,191,0,0,0,11,240,47,192,0,0,47,128,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x00c3 Ã + 24,33,198,24,0,0,0,1,164,0,100,0,0,11,255,64,244,0,0,31,255,251,240,0,0,47,91,255,208,0,0,60,0,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x00c4 Ä + 24,33,198,24,0,0,0,1,64,5,0,0,0,7,240,31,192,0,0,11,240,47,192,0,0,7,240,31,192,0,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x00c5 Å + 24,32,192,24,0,0,0,0,6,144,0,0,0,0,127,248,0,0,0,0,253,189,0,0,0,1,240,46,0,0,0,1,240,31,0,0,0,0,240,62,0,0,0,0,255,252,0,0,0,0,63,248,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x00c6 Æ + 31,26,208,32,0,0,0,0,0,170,170,170,170,160,0,0,2,255,255,255,255,244,0,0,3,255,255,255,255,244,0,0,11,250,255,170,170,160,0,0,15,240,191,0,0,0,0,0,31,208,191,0,0,0,0,0,63,192,191,0,0,0,0,0,127,64,191,0,0,0,0,0,255,0,191,0,0,0,0,1,254,0,191,0,0,0,0,3,252,0,191,64,0,0,0,7,248,0,191,255,255,224,0,11,240,0,191,255,255,224,0,15,224,0,191,255,255,224,0,47,192,0,191,64,0,0,0,63,255,255,255,0,0,0,0,191,255,255,255,0,0,0,0,255,255,255,255,0,0,0,2,254,170,170,255,0,0,0,3,252,0,0,191,0,0,0,7,248,0,0,191,0,0,0,15,240,0,0,191,0,0,0,31,224,0,0,191,85,85,80,63,192,0,0,191,255,255,244,127,128,0,0,191,255,255,244,255,0,0,0,191,255,255,244, + // 0x00c7 Ç + 20,35,175,23,2,247,0,0,191,255,144,0,15,255,255,253,0,127,255,255,252,2,255,245,91,252,7,255,0,0,36,15,252,0,0,0,47,240,0,0,0,63,208,0,0,0,63,192,0,0,0,127,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,224,0,0,0,31,244,0,0,0,15,253,0,0,0,3,255,208,1,184,0,255,255,255,248,0,63,255,255,248,0,6,255,255,224,0,0,15,208,0,0,0,31,64,0,0,0,63,224,0,0,0,7,252,0,0,0,0,252,0,0,0,0,252,0,0,0,171,252,0,0,0,255,240,0,0,0,170,64,0, + // 0x00c8 È + 15,34,136,20,3,0,2,168,0,0,2,255,0,0,0,191,64,0,0,47,192,0,0,11,240,0,0,2,248,0,0,0,0,0,0,0,0,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x00c9 É + 15,34,136,20,3,0,0,0,26,160,0,0,63,208,0,0,255,64,0,1,253,0,0,3,244,0,0,15,208,0,0,0,0,0,0,0,0,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x00ca Ê + 15,34,136,20,3,0,0,10,160,0,0,63,248,0,0,191,253,0,2,253,191,64,7,244,31,208,31,192,3,240,0,0,0,0,0,0,0,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x00cb Ë + 15,33,132,20,3,0,0,64,5,0,3,240,31,192,7,244,47,192,3,240,15,192,0,64,1,0,0,0,0,0,0,0,0,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x00cc Ì + 11,34,102,13,1,0,106,64,0,127,192,0,31,240,0,7,248,0,1,253,0,0,63,0,0,0,0,0,0,0,106,170,160,191,255,244,127,255,240,2,254,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,47,255,208,191,255,244,191,255,244, + // 0x00cd Í + 11,34,102,13,1,0,0,2,168,0,11,248,0,31,240,0,63,192,0,254,0,2,248,0,0,0,0,0,0,0,106,170,160,191,255,244,127,255,240,2,254,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,47,255,208,191,255,244,191,255,244, + // 0x00ce Î + 13,34,136,13,0,0,0,106,64,0,1,255,192,0,3,255,240,0,15,227,252,0,63,128,254,0,253,0,47,128,0,0,0,0,0,0,0,0,26,170,168,0,47,255,253,0,31,255,252,0,0,191,128,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,11,255,244,0,47,255,253,0,47,255,253,0, + // 0x00cf Ï + 11,33,99,13,1,0,20,0,80,190,3,244,255,3,248,190,3,244,20,0,64,0,0,0,0,0,0,106,170,160,191,255,244,127,255,240,2,254,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,47,255,208,191,255,244,191,255,244, + // 0x00d0 Ð + 23,26,156,26,1,0,6,170,170,144,0,0,7,255,255,255,128,0,7,255,255,255,244,0,7,254,170,255,254,0,7,244,0,7,255,128,7,244,0,0,191,208,7,244,0,0,47,240,7,244,0,0,15,244,7,244,0,0,11,248,7,244,0,0,7,252,7,244,0,0,3,252,91,249,85,0,3,252,255,255,255,64,3,252,255,255,255,64,3,252,255,255,255,0,3,252,7,244,0,0,3,252,7,244,0,0,7,252,7,244,0,0,11,248,7,244,0,0,15,244,7,244,0,0,47,240,7,244,0,0,191,208,7,244,0,7,255,128,7,249,85,191,254,0,7,255,255,255,248,0,7,255,255,255,128,0,7,255,255,228,0,0, + // 0x00d1 Ñ + 22,33,198,28,3,0,0,2,144,1,144,0,0,31,254,3,224,0,0,63,255,239,192,0,0,189,47,255,128,0,0,180,2,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,128,0,0,10,144,191,240,0,0,15,224,191,244,0,0,15,224,191,252,0,0,15,224,191,254,0,0,15,224,191,255,64,0,15,224,190,127,192,0,15,224,191,63,224,0,15,224,191,15,240,0,15,224,191,11,252,0,15,224,191,3,253,0,15,224,191,1,255,0,15,224,191,0,191,128,15,224,191,0,63,208,15,224,191,0,31,240,15,224,191,0,15,248,15,224,191,0,3,253,15,224,191,0,2,255,15,224,191,0,0,255,143,224,191,0,0,127,207,224,191,0,0,47,255,224,191,0,0,15,255,224,191,0,0,7,255,224,191,0,0,3,255,224,191,0,0,0,255,224,191,0,0,0,191,224, + // 0x00d2 Ò + 24,35,210,28,2,255,0,2,169,0,0,0,0,1,255,0,0,0,0,0,191,128,0,0,0,0,47,208,0,0,0,0,11,240,0,0,0,0,1,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x00d3 Ó + 24,35,210,28,2,255,0,0,0,26,160,0,0,0,0,63,224,0,0,0,0,191,128,0,0,0,1,254,0,0,0,0,3,248,0,0,0,0,11,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x00d4 Ô + 24,35,210,28,2,255,0,0,10,160,0,0,0,0,47,252,0,0,0,0,127,254,0,0,0,1,254,127,128,0,0,7,244,31,208,0,0,15,192,3,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x00d5 Õ + 24,34,204,28,2,255,0,0,100,0,40,0,0,3,255,128,184,0,0,15,255,251,244,0,0,31,71,255,240,0,0,46,0,127,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x00d6 Ö + 24,34,204,28,2,255,0,0,80,1,64,0,0,3,244,15,208,0,0,3,248,31,208,0,0,3,244,15,192,0,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x00d7 × + 16,17,68,21,2,4,4,0,0,4,46,0,0,61,127,128,0,255,47,224,3,252,11,248,15,240,2,254,63,192,0,191,255,0,0,47,252,0,0,15,248,0,0,63,254,0,0,255,191,128,3,252,47,224,15,240,11,248,63,192,2,253,127,0,0,191,28,0,0,44,0,0,0,0, + // 0x00d8 Ø + 24,29,174,28,2,254,0,0,0,0,0,128,0,1,191,254,67,240,0,31,255,255,255,240,0,191,255,255,255,192,3,255,229,91,255,192,11,254,0,0,255,224,15,248,0,1,255,244,47,240,0,3,255,252,63,208,0,11,227,253,127,192,0,31,194,254,191,128,0,63,65,254,191,64,0,254,0,255,255,64,2,252,0,255,255,64,3,244,0,255,255,64,15,224,0,255,255,64,47,192,0,255,191,64,127,0,0,255,191,128,253,0,1,255,127,194,252,0,2,254,63,199,240,0,3,253,47,239,208,0,7,252,31,255,128,0,15,248,11,255,0,0,63,240,3,255,144,6,255,208,3,255,255,255,255,64,11,255,255,255,252,0,15,194,255,255,144,0,7,128,5,80,0,0,0,0,0,0,0,0, + // 0x00d9 Ù + 21,35,210,27,3,255,0,42,144,0,0,0,0,31,240,0,0,0,0,7,252,0,0,0,0,1,253,0,0,0,0,0,127,0,0,0,0,0,31,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,255,0,63,224,0,3,253,0,15,253,0,47,248,0,7,255,255,255,240,0,1,255,255,255,128,0,0,47,255,249,0,0,0,0,21,0,0,0, + // 0x00da Ú + 21,35,210,27,3,255,0,0,0,170,0,0,0,0,3,254,0,0,0,0,7,248,0,0,0,0,15,224,0,0,0,0,63,128,0,0,0,0,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,255,0,63,224,0,3,253,0,15,253,0,47,248,0,7,255,255,255,240,0,1,255,255,255,128,0,0,47,255,249,0,0,0,0,21,0,0,0, + // 0x00db Û + 21,35,210,27,3,255,0,0,170,64,0,0,0,2,255,192,0,0,0,7,255,240,0,0,0,15,231,248,0,0,0,63,128,254,0,0,0,253,0,47,128,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,255,0,63,224,0,3,253,0,15,253,0,47,248,0,7,255,255,255,240,0,1,255,255,255,128,0,0,47,255,249,0,0,0,0,21,0,0,0, + // 0x00dc Ü + 21,34,204,27,3,255,0,5,0,20,0,0,0,63,128,253,0,0,0,63,192,254,0,0,0,47,64,253,0,0,0,5,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,255,0,63,224,0,3,253,0,15,253,0,47,248,0,7,255,255,255,240,0,1,255,255,255,128,0,0,47,255,249,0,0,0,0,21,0,0,0, + // 0x00dd Ý + 21,34,204,21,0,0,0,0,0,170,64,0,0,0,2,255,0,0,0,0,7,252,0,0,0,0,15,240,0,0,0,0,47,192,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,64,0,0,106,128,127,192,0,0,255,64,63,208,0,1,255,0,31,240,0,3,252,0,11,244,0,7,248,0,3,252,0,15,240,0,2,253,0,31,224,0,0,255,0,63,192,0,0,191,128,127,128,0,0,63,192,255,0,0,0,47,226,253,0,0,0,15,243,252,0,0,0,7,255,244,0,0,0,3,255,240,0,0,0,1,255,208,0,0,0,0,255,128,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0, + // 0x00de Þ + 17,26,130,22,3,0,106,0,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,149,80,0,0,191,255,255,144,0,191,255,255,248,0,191,255,255,254,0,191,64,7,255,64,191,64,0,191,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,191,128,191,64,2,255,0,191,234,255,254,0,191,255,255,248,0,191,255,255,128,0,191,170,148,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0, + // 0x00df ß + 19,29,145,24,3,255,0,5,148,0,0,2,255,255,224,0,15,255,255,253,0,63,254,175,255,0,191,192,0,255,128,255,0,0,127,128,255,0,0,63,128,255,0,0,127,64,255,0,0,255,0,255,0,7,252,0,255,0,31,240,0,255,0,127,192,0,255,0,255,0,0,255,0,255,0,0,255,0,255,64,0,255,0,191,224,0,255,0,63,252,0,255,0,11,255,64,255,0,1,255,224,255,0,0,47,244,255,0,0,11,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,6,0,11,248,255,7,250,191,244,255,7,255,255,224,255,2,255,255,64,0,0,5,80,0, + // 0x00e0 à + 17,29,145,21,1,255,0,106,64,0,0,0,127,192,0,0,0,31,240,0,0,0,7,248,0,0,0,1,253,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x00e1 á + 17,29,145,21,1,255,0,0,2,168,0,0,0,15,248,0,0,0,31,240,0,0,0,63,128,0,0,0,254,0,0,0,2,248,0,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x00e2 â + 17,29,145,21,1,255,0,2,169,0,0,0,7,255,0,0,0,31,255,192,0,0,63,143,224,0,0,254,3,248,0,3,244,0,190,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x00e3 ã + 17,28,140,21,1,255,0,26,0,10,0,0,255,224,31,0,2,255,255,190,0,3,225,255,252,0,7,192,31,240,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x00e4 ä + 17,28,140,21,1,255,0,20,0,80,0,0,254,3,244,0,0,255,3,248,0,0,190,3,244,0,0,20,0,64,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x00e5 å + 17,31,155,21,1,255,0,1,164,0,0,0,11,255,64,0,0,31,159,192,0,0,46,3,208,0,0,61,3,208,0,0,46,7,192,0,0,15,255,128,0,0,7,254,0,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x00e6 æ + 29,21,168,32,1,255,0,22,169,0,6,169,0,0,2,255,255,224,127,255,208,0,7,255,255,249,255,255,248,0,3,249,27,255,253,7,253,0,1,64,0,255,240,0,255,0,0,0,0,191,192,0,191,64,0,0,0,127,192,0,63,128,0,0,0,127,128,0,63,192,0,6,171,255,234,170,191,192,1,255,255,255,255,255,255,192,11,255,250,255,255,255,255,192,47,244,0,127,128,0,0,0,63,192,0,127,128,0,0,0,127,128,0,191,192,0,0,0,127,128,0,255,192,0,0,0,127,128,1,255,224,0,0,0,63,208,7,255,248,0,11,0,47,254,191,211,255,255,255,0,15,255,255,64,255,255,255,0,2,255,248,0,31,255,249,0,0,5,0,0,0,21,0,0, + // 0x00e7 ç + 15,29,116,18,2,247,0,6,170,64,0,255,255,244,7,255,255,240,15,254,171,224,63,240,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,128,0,0,63,192,0,0,63,244,0,176,15,255,255,240,3,255,255,240,0,127,255,208,0,3,244,0,0,7,192,0,0,15,248,0,0,1,254,0,0,0,63,0,0,0,63,0,0,106,254,0,0,127,252,0,0,42,80,0, + // 0x00e8 è + 17,29,145,21,2,255,1,169,0,0,0,1,255,0,0,0,0,127,192,0,0,0,31,224,0,0,0,7,244,0,0,0,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x00e9 é + 17,29,145,21,2,255,0,0,10,160,0,0,0,47,224,0,0,0,127,192,0,0,0,255,0,0,0,3,248,0,0,0,11,224,0,0,0,0,0,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x00ea ê + 17,29,145,21,2,255,0,10,164,0,0,0,31,252,0,0,0,63,255,0,0,0,254,63,192,0,3,248,15,224,0,15,208,2,248,0,0,0,0,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x00eb ë + 17,28,140,21,2,255,0,80,1,64,0,2,248,15,208,0,3,252,15,224,0,2,248,15,208,0,0,80,1,0,0,0,0,0,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x00ec ì + 8,28,56,10,0,0,170,0,191,128,63,208,15,240,2,252,0,190,0,0,0,0,1,84,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252, + // 0x00ed í + 8,28,56,10,3,0,1,170,3,253,15,244,47,208,127,64,253,0,0,0,0,0,85,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, + // 0x00ee î + 13,28,112,10,254,0,0,42,128,0,0,255,224,0,2,255,244,0,11,246,253,0,31,192,127,0,127,0,31,192,0,0,0,0,0,0,0,0,0,21,64,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0, + // 0x00ef ï + 11,27,81,10,255,0,4,0,80,63,1,252,127,66,252,63,1,252,4,0,16,0,0,0,0,0,0,0,85,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0, + // 0x00f0 ð + 18,28,140,22,2,255,0,62,0,60,0,0,127,226,254,0,0,47,255,248,0,0,3,255,192,0,0,11,255,208,0,0,191,239,240,0,0,255,7,252,0,0,52,1,253,0,0,0,0,191,0,0,0,0,63,128,0,127,254,47,192,3,255,255,239,208,15,255,255,255,224,63,244,1,255,240,127,192,0,63,240,191,64,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,224,191,64,0,31,208,127,192,0,63,192,63,224,0,255,128,15,255,175,255,0,3,255,255,248,0,0,127,255,208,0,0,1,80,0,0, + // 0x00f1 ñ + 17,27,135,23,3,0,0,104,0,40,0,3,255,128,124,0,11,255,254,248,0,15,135,255,240,0,31,0,127,192,0,0,0,0,0,0,0,0,0,0,0,84,1,170,64,0,252,47,255,244,0,253,191,255,253,0,255,254,91,255,0,255,224,0,255,64,255,128,0,127,128,255,64,0,63,128,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192, + // 0x00f2 ò + 18,29,145,22,2,255,0,170,0,0,0,0,191,192,0,0,0,47,208,0,0,0,11,240,0,0,0,2,252,0,0,0,0,190,0,0,0,0,0,0,0,0,0,0,0,0,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x00f3 ó + 18,29,145,22,2,255,0,0,6,168,0,0,0,15,244,0,0,0,63,208,0,0,0,127,64,0,0,0,253,0,0,0,3,244,0,0,0,0,0,0,0,0,0,0,0,0,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x00f4 ô + 18,29,145,22,2,255,0,2,168,0,0,0,15,254,0,0,0,47,255,128,0,0,191,111,208,0,1,253,7,244,0,7,240,0,253,0,0,0,0,0,0,0,0,0,0,0,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x00f5 õ + 18,28,140,22,2,255,0,41,0,25,0,1,255,224,62,0,3,255,254,253,0,7,210,255,248,0,11,64,47,224,0,0,0,0,0,0,0,0,0,0,0,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x00f6 ö + 18,28,140,22,2,255,0,20,1,64,0,0,253,3,240,0,1,253,7,244,0,0,252,3,240,0,0,16,0,64,0,0,0,0,0,0,0,0,0,0,0,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x00f7 ÷ + 18,17,85,21,1,4,0,1,248,0,0,0,3,253,0,0,0,3,253,0,0,0,2,252,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,240,127,255,255,255,240,63,255,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,180,0,0,0,2,252,0,0,0,3,253,0,0,0,2,252,0,0,0,0,164,0,0, + // 0x00f8 ø + 18,22,110,22,2,254,0,6,169,11,64,0,191,255,255,192,7,255,255,255,0,15,254,91,255,0,63,224,2,255,128,127,192,7,255,192,191,64,15,255,224,255,0,47,143,240,255,0,127,15,240,255,0,253,15,240,255,2,248,15,240,255,7,240,15,240,255,15,192,15,240,191,127,64,31,224,127,255,0,47,208,63,252,0,63,192,31,248,1,255,128,15,255,255,255,0,31,255,255,248,0,63,127,255,144,0,14,1,80,0,0,0,0,0,0,0, + // 0x00f9 ù + 17,29,145,23,3,255,1,169,0,0,0,1,255,0,0,0,0,127,192,0,0,0,31,224,0,0,0,7,244,0,0,0,1,252,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,31,128,0,21,0,0,0, + // 0x00fa ú + 17,29,145,23,3,255,0,0,10,160,0,0,0,63,224,0,0,0,127,192,0,0,0,255,0,0,0,3,248,0,0,0,11,224,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,31,128,0,21,0,0,0, + // 0x00fb û + 17,29,145,23,3,255,0,10,164,0,0,0,47,252,0,0,0,127,255,0,0,0,254,127,128,0,3,248,15,224,0,15,208,2,248,0,0,0,0,0,0,0,0,0,0,0,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,31,128,0,21,0,0,0, + // 0x00fc ü + 17,28,140,23,3,255,0,80,1,64,0,3,248,15,208,0,3,252,15,224,0,2,248,15,208,0,0,80,1,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,31,128,0,21,0,0,0, + // 0x00fd ý + 19,37,185,19,0,247,0,0,2,169,0,0,0,11,252,0,0,0,31,240,0,0,0,63,192,0,0,0,191,0,0,0,1,248,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,1,84,191,64,0,7,248,63,192,0,15,240,63,192,0,15,240,31,224,0,31,208,15,240,0,63,192,11,244,0,63,128,3,248,0,191,64,3,252,0,255,0,1,253,0,254,0,0,255,2,252,0,0,191,3,252,0,0,63,71,244,0,0,63,203,240,0,0,31,207,224,0,0,15,223,208,0,0,11,255,192,0,0,3,255,128,0,0,3,255,0,0,0,1,255,0,0,0,1,253,0,0,0,3,252,0,0,0,3,248,0,0,0,11,244,0,0,0,47,240,0,0,38,255,192,0,0,127,255,64,0,0,127,253,0,0,0,42,144,0,0,0, + // 0x00fe þ + 18,37,185,22,3,247,85,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,1,170,0,0,255,31,255,224,0,254,191,255,252,0,255,254,91,255,0,255,208,0,255,64,255,128,0,127,128,255,0,0,63,192,255,0,0,47,192,255,0,0,47,208,255,0,0,47,208,255,0,0,31,208,255,0,0,47,208,255,0,0,47,208,255,0,0,63,192,255,64,0,63,192,255,192,0,191,128,255,240,2,255,0,255,255,255,253,0,254,127,255,248,0,254,11,255,208,0,255,0,20,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,170,0,0,0,0, + // 0x00ff ÿ + 19,36,180,19,0,247,0,20,0,80,0,0,191,3,248,0,0,255,3,252,0,0,190,2,248,0,0,20,0,80,0,0,0,0,0,0,0,0,0,0,0,85,0,0,1,84,191,64,0,7,248,63,192,0,15,240,63,192,0,15,240,31,224,0,31,208,15,240,0,63,192,11,244,0,63,128,3,248,0,191,64,3,252,0,255,0,1,253,0,254,0,0,255,2,252,0,0,191,3,252,0,0,63,71,244,0,0,63,203,240,0,0,31,207,224,0,0,15,223,208,0,0,11,255,192,0,0,3,255,128,0,0,3,255,0,0,0,1,255,0,0,0,1,253,0,0,0,3,252,0,0,0,3,248,0,0,0,11,244,0,0,0,47,240,0,0,38,255,192,0,0,127,255,64,0,0,127,253,0,0,0,42,144,0,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_ASCII_26.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_ASCII_26.cpp new file mode 100644 index 0000000000..dcf12a3935 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_ASCII_26.cpp @@ -0,0 +1,222 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium ASCII 36pt, capital 'A' height: 26px, width: 100%, range: 0x0020-0x007e +extern const uint8_t NotoSans_Medium_ASCII_26[10989] = { + 130,26,32,0,126,0,34,247, // unifont_t + // 0x0020 " " + 0,0,0,9,0,0, + // 0x0021 ! + 6,27,54,10,2,255,42,128,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,128,63,128,47,128,47,128,47,128,47,64,47,64,47,64,31,64,5,0,0,0,0,0,26,0,63,192,127,208,127,208,63,192,5,0, + // 0x0022 " + 11,10,30,15,2,16,106,2,168,191,2,252,127,2,252,127,2,252,127,1,248,127,1,248,62,1,248,62,1,244,62,0,244,41,0,160, + // 0x0023 # + 22,26,156,23,1,0,0,0,164,1,160,0,0,1,248,3,240,0,0,2,244,3,240,0,0,3,240,3,224,0,0,3,240,7,224,0,0,3,240,11,208,0,0,7,224,11,192,0,0,11,224,15,192,0,63,255,255,255,255,208,63,255,255,255,255,208,26,175,234,191,170,128,0,31,128,63,0,0,0,47,64,63,0,0,0,47,0,63,0,0,0,63,0,126,0,0,0,127,0,190,0,0,255,255,255,255,255,0,255,255,255,255,255,0,170,254,170,254,170,0,0,252,1,248,0,0,0,252,2,244,0,0,0,248,2,240,0,0,1,244,3,240,0,0,2,244,3,240,0,0,3,240,7,224,0,0,3,240,7,208,0,0, + // 0x0024 $ + 17,31,155,21,2,253,0,1,64,0,0,0,3,208,0,0,0,3,208,0,0,0,3,228,0,0,1,255,255,228,0,15,255,255,255,0,63,255,255,254,0,191,211,208,108,0,255,3,208,0,0,255,3,208,0,0,255,3,208,0,0,191,131,208,0,0,127,251,208,0,0,47,255,224,0,0,7,255,255,64,0,0,127,255,244,0,0,3,255,253,0,0,3,235,255,0,0,3,208,191,128,0,3,208,63,128,0,3,208,63,128,64,3,208,127,128,249,3,210,255,0,255,255,255,254,0,255,255,255,244,0,47,255,255,128,0,0,23,224,0,0,0,3,208,0,0,0,3,208,0,0,0,3,208,0,0,0,0,0,0,0, + // 0x0025 % + 28,27,189,31,1,255,1,255,64,0,0,168,0,11,255,224,0,3,244,0,31,235,244,0,7,240,0,63,129,252,0,15,208,0,63,0,253,0,31,128,0,63,0,189,0,63,0,0,127,0,190,0,190,0,0,126,0,126,0,252,0,0,126,0,126,2,244,0,0,127,0,190,7,240,0,0,63,0,189,15,208,106,64,63,0,253,31,195,255,240,47,129,252,63,79,255,248,15,235,248,126,31,209,252,11,255,240,252,47,128,190,1,255,130,248,63,64,127,0,0,3,240,63,0,63,0,0,11,224,63,0,63,0,0,15,192,63,0,63,0,0,63,64,63,0,63,0,0,127,0,63,64,63,0,0,253,0,47,64,127,0,1,248,0,31,192,253,0,3,240,0,15,230,252,0,11,224,0,7,255,244,0,15,192,0,1,255,208,0,0,0,0,0,21,0, + // 0x0026 & + 24,27,162,27,2,255,0,31,255,64,0,0,0,255,255,240,0,0,3,255,255,248,0,0,7,252,7,252,0,0,15,240,1,253,0,0,15,240,0,254,0,0,15,240,1,253,0,0,11,240,2,252,0,0,3,252,11,248,0,0,2,254,47,240,0,0,0,255,255,192,0,0,0,63,254,0,0,0,1,255,248,0,0,0,7,255,254,0,3,252,47,249,255,128,7,248,127,208,127,224,11,240,255,128,15,248,15,240,255,0,3,254,47,208,255,0,0,255,255,192,255,0,0,63,255,64,255,0,0,15,254,0,255,128,0,31,255,0,127,228,1,255,255,192,63,255,255,255,191,240,15,255,255,252,15,252,1,255,255,144,3,255,0,1,80,0,0,0, + // 0x0027 ' + 4,10,10,9,2,16,106,191,127,127,127,127,62,62,62,41, + // 0x0028 ( + 9,32,96,11,1,250,0,26,128,0,63,64,0,254,0,1,252,0,3,248,0,7,240,0,15,240,0,15,208,0,47,192,0,63,192,0,63,128,0,63,64,0,127,64,0,127,0,0,191,0,0,191,0,0,191,0,0,191,0,0,127,0,0,127,64,0,63,64,0,63,128,0,63,192,0,47,192,0,31,208,0,15,240,0,11,240,0,3,248,0,2,252,0,0,254,0,0,63,64,0,26,128, + // 0x0029 ) + 9,32,96,11,1,250,106,0,0,63,64,0,31,192,0,15,224,0,7,240,0,3,248,0,2,252,0,1,253,0,0,254,0,0,191,0,0,127,0,0,127,64,0,63,128,0,63,128,0,63,128,0,63,192,0,63,192,0,63,128,0,63,128,0,63,128,0,63,64,0,127,64,0,191,0,0,255,0,0,253,0,2,252,0,3,248,0,7,240,0,15,224,0,31,192,0,63,64,0,106,0,0, + // 0x002a * + 18,18,90,20,1,10,0,1,84,0,0,0,3,248,0,0,0,3,248,0,0,0,3,244,0,0,0,2,244,0,0,16,2,240,0,64,63,65,240,111,192,127,255,251,255,192,191,255,255,255,208,5,111,254,149,0,0,15,254,0,0,0,47,191,64,0,0,127,31,192,0,0,254,15,240,0,3,252,11,248,0,2,252,3,248,0,0,36,1,128,0,0,0,0,0,0, + // 0x002b + + 18,18,90,21,1,4,0,0,84,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,1,252,0,0,127,255,255,255,240,127,255,255,255,240,63,255,255,255,224,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0, + // 0x002c , + 6,9,18,10,1,251,15,240,15,240,31,224,47,192,47,192,63,64,63,0,126,0,104,0, + // 0x002d - + 10,4,12,12,1,8,21,85,64,191,255,208,191,255,208,191,255,208, + // 0x002e . + 6,6,12,10,2,255,26,0,63,192,127,208,127,208,63,192,5,0, + // 0x002f / + 14,26,104,14,0,0,0,0,10,144,0,0,47,192,0,0,63,128,0,0,127,64,0,0,191,0,0,0,254,0,0,1,252,0,0,3,252,0,0,3,244,0,0,11,240,0,0,15,224,0,0,31,208,0,0,47,192,0,0,63,128,0,0,127,0,0,0,255,0,0,0,253,0,0,2,252,0,0,3,248,0,0,7,244,0,0,11,240,0,0,15,224,0,0,31,208,0,0,47,192,0,0,63,128,0,0,127,0,0,0, + // 0x0030 0 + 18,27,135,21,1,255,0,27,255,64,0,0,191,255,240,0,3,255,255,252,0,7,254,7,255,0,15,240,0,191,64,31,224,0,63,192,47,192,0,47,192,63,192,0,31,208,63,192,0,15,224,63,128,0,15,224,127,128,0,15,240,127,64,0,15,240,127,64,0,15,240,127,64,0,15,240,127,64,0,15,240,127,128,0,15,240,63,128,0,15,240,63,128,0,15,224,63,192,0,31,208,47,192,0,47,208,31,208,0,63,192,15,240,0,191,128,7,252,2,255,0,3,255,255,253,0,0,255,255,248,0,0,31,255,208,0,0,0,84,0,0, + // 0x0031 1 + 11,26,78,21,3,0,0,2,164,0,31,244,0,191,244,3,255,244,15,255,244,127,215,244,255,71,244,60,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244,0,7,244, + // 0x0032 2 + 18,26,130,21,1,0,0,31,255,128,0,2,255,255,244,0,31,255,255,253,0,63,249,7,255,0,15,128,0,255,128,5,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,127,128,0,0,0,255,0,0,0,1,254,0,0,0,3,252,0,0,0,15,244,0,0,0,63,208,0,0,0,255,64,0,0,3,254,0,0,0,15,248,0,0,0,63,224,0,0,0,255,64,0,0,3,253,0,0,0,15,244,0,0,0,63,245,85,85,80,127,255,255,255,240,127,255,255,255,240,127,255,255,255,240, + // 0x0033 3 + 18,27,135,21,1,255,0,111,255,128,0,11,255,255,248,0,63,255,255,254,0,47,228,7,255,64,14,0,0,191,128,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,127,128,0,0,0,255,0,0,0,7,253,0,0,127,255,240,0,0,191,255,64,0,0,191,255,248,0,0,21,107,255,0,0,0,0,191,192,0,0,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,47,224,0,0,0,127,192,121,0,2,255,128,127,255,255,255,0,127,255,255,248,0,27,255,255,144,0,0,21,80,0,0, + // 0x0034 4 + 20,26,130,21,0,0,0,0,0,191,64,0,0,1,255,64,0,0,3,255,64,0,0,11,255,64,0,0,31,255,64,0,0,63,127,64,0,0,254,127,64,0,2,252,127,64,0,3,240,127,64,0,15,224,127,64,0,47,192,127,64,0,127,0,127,64,0,253,0,127,64,2,252,0,127,64,7,240,0,127,64,15,208,0,127,64,47,128,0,127,64,127,255,255,255,255,127,255,255,255,255,127,255,255,255,255,21,85,85,191,149,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64, + // 0x0035 5 + 17,27,135,21,2,255,26,170,170,168,0,31,255,255,252,0,47,255,255,252,0,47,234,170,168,0,47,192,0,0,0,47,192,0,0,0,63,128,0,0,0,63,128,0,0,0,63,128,0,0,0,63,64,0,0,0,63,255,249,0,0,63,255,255,224,0,63,255,255,248,0,10,81,111,254,0,0,0,2,255,0,0,0,0,255,64,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,64,0,0,0,255,0,64,0,1,255,0,249,0,27,253,0,255,255,255,248,0,255,255,255,208,0,47,255,254,0,0,0,21,64,0,0, + // 0x0036 6 + 17,27,135,21,2,255,0,1,191,252,0,0,47,255,252,0,0,255,255,252,0,3,255,144,4,0,11,248,0,0,0,31,224,0,0,0,63,192,0,0,0,63,128,0,0,0,127,0,0,0,0,191,0,0,0,0,254,11,255,208,0,254,127,255,248,0,254,255,255,254,0,255,240,2,255,0,255,128,0,191,128,255,0,0,63,192,254,0,0,63,192,254,0,0,47,192,255,0,0,63,192,191,0,0,63,192,127,64,0,63,128,63,192,0,191,64,31,244,2,255,0,11,255,255,252,0,2,255,255,244,0,0,127,255,128,0,0,1,80,0,0, + // 0x0037 7 + 18,26,130,21,1,0,106,170,170,170,160,191,255,255,255,240,191,255,255,255,240,106,170,170,175,240,0,0,0,31,208,0,0,0,63,192,0,0,0,127,64,0,0,0,255,0,0,0,1,254,0,0,0,3,252,0,0,0,3,248,0,0,0,11,240,0,0,0,15,240,0,0,0,47,208,0,0,0,63,192,0,0,0,191,64,0,0,0,255,0,0,0,1,254,0,0,0,3,252,0,0,0,7,248,0,0,0,15,240,0,0,0,31,240,0,0,0,63,208,0,0,0,63,192,0,0,0,191,64,0,0,0,255,0,0,0, + // 0x0038 8 + 18,27,135,21,1,255,0,27,255,128,0,1,255,255,248,0,7,255,255,255,0,15,248,1,255,128,31,224,0,63,192,47,192,0,47,192,47,192,0,47,192,31,208,0,63,192,15,240,0,63,128,11,252,1,255,0,2,255,155,252,0,0,191,255,224,0,0,47,255,128,0,0,191,255,244,0,3,255,95,254,0,15,244,1,255,128,47,208,0,63,192,63,128,0,15,224,127,64,0,15,240,127,64,0,15,240,127,64,0,15,240,63,192,0,31,224,47,240,0,127,192,15,255,171,255,64,3,255,255,253,0,0,127,255,224,0,0,0,84,0,0, + // 0x0039 9 + 18,27,135,21,1,255,0,27,254,64,0,0,255,255,240,0,7,255,255,252,0,15,253,7,255,0,47,224,0,191,64,63,192,0,63,192,63,128,0,31,208,127,64,0,15,224,127,64,0,15,224,127,64,0,15,240,63,128,0,15,240,63,192,0,63,240,47,224,0,191,240,15,254,91,255,240,7,255,255,207,224,1,255,255,15,224,0,6,144,15,208,0,0,0,31,192,0,0,0,47,192,0,0,0,63,128,0,0,0,255,0,0,0,2,254,0,0,0,31,252,0,11,255,255,240,0,11,255,255,128,0,11,255,248,0,0,0,84,0,0,0, + // 0x003a : + 6,21,42,10,2,255,31,64,127,192,191,208,127,208,63,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,63,192,127,208,127,208,63,192,5,0, + // 0x003b ; + 7,25,50,10,1,251,11,208,31,240,47,244,47,240,15,224,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,240,31,224,47,208,47,192,63,128,63,0,127,0,189,0,168,0, + // 0x003c < + 18,18,90,21,1,4,0,0,0,0,96,0,0,0,7,240,0,0,0,127,240,0,0,7,255,208,0,0,127,248,0,0,7,255,128,0,0,127,248,0,0,7,255,128,0,0,63,244,0,0,0,127,208,0,0,0,63,254,0,0,0,6,255,228,0,0,0,47,255,64,0,0,1,255,248,0,0,0,31,255,208,0,0,0,191,240,0,0,0,11,240,0,0,0,0,96, + // 0x003d = + 17,11,55,21,2,7,170,170,170,170,64,255,255,255,255,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,170,170,64,255,255,255,255,128,255,255,255,255,128,85,85,85,85,0, + // 0x003e > + 18,18,90,21,1,4,96,0,0,0,0,126,0,0,0,0,127,224,0,0,0,47,254,0,0,0,1,255,224,0,0,0,31,254,0,0,0,1,255,224,0,0,0,31,254,0,0,0,0,191,224,0,0,0,47,240,0,0,6,255,224,0,0,127,254,0,0,11,255,208,0,1,255,249,0,0,47,255,128,0,0,127,244,0,0,0,127,64,0,0,0,96,0,0,0,0, + // 0x003f ? + 15,27,108,16,0,255,1,191,249,0,47,255,255,192,127,255,255,240,63,144,111,248,20,0,3,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,3,252,0,0,15,244,0,0,63,224,0,0,255,128,0,3,254,0,0,15,244,0,0,31,208,0,0,63,128,0,0,63,64,0,0,63,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,127,192,0,0,191,192,0,0,191,192,0,0,127,128,0,0,5,0,0, + // 0x0040 @ + 29,30,240,32,2,252,0,0,1,106,164,0,0,0,0,0,111,255,255,208,0,0,0,3,255,255,255,252,0,0,0,31,249,0,6,255,64,0,0,191,128,0,0,63,208,0,1,253,0,0,0,11,240,0,7,244,0,0,0,2,252,0,15,208,0,111,164,0,252,0,31,192,11,255,255,128,126,0,63,0,63,255,255,128,63,0,63,0,191,64,47,128,63,0,126,0,253,0,47,128,47,0,189,2,252,0,47,64,47,64,252,3,244,0,47,64,47,64,252,3,244,0,63,64,47,64,252,3,240,0,63,64,63,0,252,3,244,0,63,64,63,0,252,2,248,0,127,64,126,0,252,1,252,0,255,128,252,0,189,0,255,155,251,231,248,0,126,0,63,255,195,255,224,0,63,0,11,254,0,255,64,0,47,128,0,0,0,0,0,0,15,224,0,0,0,0,0,0,7,248,0,0,0,0,0,0,2,255,64,0,1,160,0,0,0,127,254,170,191,224,0,0,0,11,255,255,255,208,0,0,0,0,111,255,249,0,0,0,0,0,0,0,0,0,0,0, + // 0x0041 A + 24,26,156,24,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x0042 B + 19,26,130,24,3,0,106,170,169,64,0,191,255,255,248,0,191,255,255,255,64,191,170,175,255,192,191,64,0,127,224,191,64,0,47,240,191,64,0,15,240,191,64,0,15,240,191,64,0,31,224,191,64,0,63,208,191,64,1,255,128,191,255,255,254,0,191,255,255,224,0,191,255,255,255,0,191,64,5,255,208,191,64,0,47,240,191,64,0,15,244,191,64,0,7,248,191,64,0,7,248,191,64,0,11,248,191,64,0,15,244,191,64,0,47,240,191,64,22,255,224,191,255,255,255,192,191,255,255,254,0,191,255,255,144,0, + // 0x0043 C + 20,27,135,23,2,255,0,0,191,255,144,0,15,255,255,253,0,127,255,255,252,2,255,245,91,252,7,255,0,0,36,15,252,0,0,0,47,240,0,0,0,63,208,0,0,0,63,192,0,0,0,127,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,224,0,0,0,31,244,0,0,0,15,253,0,0,0,3,255,208,1,184,0,255,255,255,248,0,63,255,255,248,0,6,255,255,224,0,0,5,80,0, + // 0x0044 D + 21,26,156,26,3,0,106,170,169,0,0,0,191,255,255,248,0,0,191,255,255,255,64,0,191,170,175,255,224,0,191,64,0,127,248,0,191,64,0,11,253,0,191,64,0,2,255,0,191,64,0,0,255,64,191,64,0,0,191,128,191,64,0,0,127,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,127,192,191,64,0,0,191,128,191,64,0,0,255,64,191,64,0,2,255,0,191,64,0,11,253,0,191,64,0,127,248,0,191,149,91,255,240,0,191,255,255,255,128,0,191,255,255,248,0,0,191,255,254,64,0,0, + // 0x0045 E + 15,26,104,20,3,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x0046 F + 15,26,104,19,3,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,240,191,255,255,240,191,255,255,240,191,85,85,80,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0, + // 0x0047 G + 22,27,162,26,2,255,0,0,111,255,228,0,0,11,255,255,255,192,0,63,255,255,255,128,1,255,249,85,191,64,3,255,128,0,2,0,15,252,0,0,0,0,31,240,0,0,0,0,63,224,0,0,0,0,63,192,0,0,0,0,127,128,0,0,0,0,191,64,0,0,0,0,255,64,0,0,0,0,255,0,0,191,255,208,255,0,0,255,255,208,255,64,0,255,255,208,191,64,0,106,175,208,191,128,0,0,31,208,127,192,0,0,31,208,63,192,0,0,31,208,47,224,0,0,31,208,31,244,0,0,31,208,11,254,0,0,31,208,3,255,208,0,111,208,0,255,255,255,255,208,0,47,255,255,255,208,0,2,255,255,254,64,0,0,1,84,0,0, + // 0x0048 H + 21,26,156,27,3,0,106,0,0,0,106,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,255,255,255,255,64,191,255,255,255,255,64,191,255,255,255,255,64,191,85,85,85,191,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64, + // 0x0049 I + 11,26,78,13,1,0,106,170,160,191,255,244,127,255,240,2,254,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,47,255,208,191,255,244,191,255,244, + // 0x004a J + 10,34,102,10,253,248,0,10,160,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,11,240,0,15,240,0,15,240,0,47,224,85,191,208,255,255,128,255,254,0,191,228,0,0,0,0, + // 0x004b K + 20,26,130,23,3,0,106,0,0,2,168,191,64,0,15,244,191,64,0,63,224,191,64,0,191,128,191,64,2,255,0,191,64,7,252,0,191,64,31,240,0,191,64,63,192,0,191,64,255,64,0,191,67,253,0,0,191,79,248,0,0,191,111,240,0,0,191,255,244,0,0,191,255,252,0,0,191,247,254,0,0,191,208,255,64,0,191,64,191,192,0,191,64,63,240,0,191,64,15,248,0,191,64,7,252,0,191,64,2,255,0,191,64,0,255,128,191,64,0,63,208,191,64,0,47,240,191,64,0,15,248,191,64,0,3,253, + // 0x004c L + 16,26,104,19,3,0,106,0,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,253,191,255,255,253,191,255,255,253, + // 0x004d M + 27,26,182,33,3,0,106,160,0,0,0,42,164,191,244,0,0,0,127,248,191,252,0,0,0,191,248,191,252,0,0,0,255,248,191,253,0,0,1,255,248,191,191,0,0,3,247,248,191,127,0,0,3,243,248,191,63,128,0,11,227,248,191,47,192,0,15,211,248,191,31,208,0,31,195,248,191,15,224,0,47,131,248,191,11,240,0,63,67,248,191,3,244,0,127,3,248,191,3,248,0,254,3,248,191,1,252,0,252,3,248,191,0,253,2,252,3,248,191,0,255,3,244,3,248,191,0,127,7,240,3,248,191,0,63,75,224,3,248,191,0,47,207,208,3,248,191,0,31,239,192,3,248,191,0,15,255,128,3,248,191,0,11,255,0,3,248,191,0,7,255,0,3,248,191,0,3,254,0,3,248,191,0,2,252,0,3,248, + // 0x004e N + 22,26,156,28,3,0,106,128,0,0,10,144,191,240,0,0,15,224,191,244,0,0,15,224,191,252,0,0,15,224,191,254,0,0,15,224,191,255,64,0,15,224,190,127,192,0,15,224,191,63,224,0,15,224,191,15,240,0,15,224,191,11,252,0,15,224,191,3,253,0,15,224,191,1,255,0,15,224,191,0,191,128,15,224,191,0,63,208,15,224,191,0,31,240,15,224,191,0,15,248,15,224,191,0,3,253,15,224,191,0,2,255,15,224,191,0,0,255,143,224,191,0,0,127,207,224,191,0,0,47,255,224,191,0,0,15,255,224,191,0,0,7,255,224,191,0,0,3,255,224,191,0,0,0,255,224,191,0,0,0,191,224, + // 0x004f O + 24,27,162,28,2,255,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x0050 P + 17,26,130,22,3,0,106,170,165,0,0,191,255,255,224,0,191,255,255,252,0,191,170,191,255,0,191,64,2,255,128,191,64,0,127,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,127,192,191,64,0,255,128,191,64,27,255,0,191,255,255,253,0,191,255,255,240,0,191,255,254,64,0,191,84,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0, + // 0x0051 Q + 24,33,198,28,2,249,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,208,0,0,0,5,127,240,0,0,0,0,15,252,0,0,0,0,7,254,0,0,0,0,1,255,128,0,0,0,0,191,224,0,0,0,0,47,248,0,0,0,0,0,0, + // 0x0052 R + 19,26,130,23,3,0,106,170,165,0,0,191,255,255,224,0,191,255,255,253,0,191,170,191,255,0,191,64,1,255,128,191,64,0,127,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,127,128,191,64,2,255,0,191,234,191,253,0,191,255,255,244,0,191,255,255,128,0,191,170,191,192,0,191,64,47,208,0,191,64,15,240,0,191,64,11,248,0,191,64,3,253,0,191,64,1,255,0,191,64,0,191,128,191,64,0,63,192,191,64,0,47,240,191,64,0,15,244,191,64,0,7,252, + // 0x0053 S + 16,27,108,20,2,255,0,111,255,144,7,255,255,253,31,255,255,253,63,249,86,252,191,192,0,20,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,208,0,0,63,253,0,0,15,255,208,0,3,255,253,0,0,127,255,208,0,6,255,244,0,0,47,252,0,0,7,254,0,0,0,255,0,0,0,255,0,0,0,191,0,0,0,255,64,0,1,255,249,0,11,253,255,255,255,248,255,255,255,224,111,255,254,0,0,21,64,0, + // 0x0054 T + 20,26,130,20,0,0,106,170,170,170,170,191,255,255,255,255,191,255,255,255,255,106,170,255,170,169,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0, + // 0x0055 U + 21,27,162,27,3,255,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,255,0,63,224,0,3,253,0,15,253,0,47,248,0,7,255,255,255,240,0,1,255,255,255,128,0,0,47,255,249,0,0,0,0,21,0,0,0, + // 0x0056 V + 22,26,156,22,0,0,170,0,0,0,10,160,191,64,0,0,31,224,63,192,0,0,47,208,63,192,0,0,63,192,47,208,0,0,127,128,15,240,0,0,191,64,15,240,0,0,255,0,7,244,0,1,254,0,3,252,0,2,252,0,3,252,0,3,252,0,1,253,0,7,248,0,0,255,0,11,240,0,0,191,0,15,240,0,0,127,128,31,208,0,0,63,192,63,192,0,0,47,192,63,192,0,0,31,224,127,64,0,0,15,240,255,0,0,0,11,240,254,0,0,0,7,245,253,0,0,0,3,250,252,0,0,0,2,255,248,0,0,0,0,255,244,0,0,0,0,255,240,0,0,0,0,127,224,0,0,0,0,63,192,0,0, + // 0x0057 W + 34,26,234,34,0,0,106,64,0,2,168,0,0,26,144,127,128,0,7,252,0,0,47,192,63,192,0,11,253,0,0,63,192,63,192,0,15,254,0,0,63,128,47,208,0,31,255,0,0,127,64,31,224,0,47,255,64,0,191,0,15,240,0,63,191,128,0,255,0,15,240,0,63,111,192,0,254,0,11,244,0,127,31,192,1,253,0,7,248,0,191,15,208,2,252,0,3,252,0,254,15,240,3,252,0,3,252,1,253,11,240,3,248,0,2,253,2,252,3,244,7,244,0,1,254,3,248,3,248,11,240,0,0,255,3,244,2,252,15,240,0,0,191,7,240,1,252,15,224,0,0,127,75,240,0,253,31,208,0,0,63,143,224,0,254,47,192,0,0,63,143,208,0,191,63,192,0,0,47,223,192,0,63,63,64,0,0,31,239,128,0,63,191,0,0,0,15,255,64,0,47,255,0,0,0,15,255,0,0,31,254,0,0,0,11,255,0,0,15,253,0,0,0,7,254,0,0,15,252,0,0,0,3,253,0,0,11,252,0,0, + // 0x0058 X + 22,26,156,22,0,0,42,128,0,0,42,128,47,224,0,0,191,64,15,244,0,1,255,0,7,252,0,3,252,0,2,254,0,11,248,0,0,255,0,15,240,0,0,127,192,47,192,0,0,47,208,127,128,0,0,15,240,255,0,0,0,7,250,253,0,0,0,2,255,248,0,0,0,0,255,240,0,0,0,0,191,208,0,0,0,0,255,240,0,0,0,2,255,244,0,0,0,3,255,252,0,0,0,15,241,254,0,0,0,31,208,255,64,0,0,63,192,63,192,0,0,191,64,47,224,0,1,254,0,15,244,0,3,252,0,7,252,0,11,244,0,2,254,0,31,240,0,0,255,0,63,192,0,0,127,192,191,128,0,0,63,224, + // 0x0059 Y + 21,26,156,21,0,0,170,64,0,0,106,128,127,192,0,0,255,64,63,208,0,1,255,0,31,240,0,3,252,0,11,244,0,7,248,0,3,252,0,15,240,0,2,253,0,31,224,0,0,255,0,63,192,0,0,191,128,127,128,0,0,63,192,255,0,0,0,47,226,253,0,0,0,15,243,252,0,0,0,7,255,244,0,0,0,3,255,240,0,0,0,1,255,208,0,0,0,0,255,128,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0, + // 0x005a Z + 19,26,130,21,1,0,106,170,170,170,160,127,255,255,255,240,127,255,255,255,240,42,170,170,191,240,0,0,0,63,192,0,0,0,255,64,0,0,2,255,0,0,0,3,252,0,0,0,15,244,0,0,0,47,224,0,0,0,63,192,0,0,0,255,64,0,0,2,254,0,0,0,3,252,0,0,0,15,244,0,0,0,47,224,0,0,0,127,192,0,0,0,255,64,0,0,2,254,0,0,0,7,252,0,0,0,15,244,0,0,0,47,224,0,0,0,127,213,85,85,80,255,255,255,255,244,255,255,255,255,244,255,255,255,255,244, + // 0x005b [ + 8,32,64,12,3,250,170,170,255,255,255,255,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,253,0,255,255,255,255,170,170, + // 0x005c "\" + 14,26,104,14,0,0,106,0,0,0,63,64,0,0,63,128,0,0,31,192,0,0,15,208,0,0,11,240,0,0,7,240,0,0,3,248,0,0,2,252,0,0,0,253,0,0,0,254,0,0,0,127,0,0,0,63,64,0,0,63,192,0,0,31,192,0,0,15,224,0,0,11,240,0,0,7,244,0,0,3,248,0,0,2,252,0,0,0,253,0,0,0,255,0,0,0,127,0,0,0,63,128,0,0,47,192,0,0,31,208, + // 0x005d ] + 8,32,64,12,1,250,170,170,255,255,255,255,0,191,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,191,255,255,255,255,170,170, + // 0x005e ^ + 18,17,85,21,1,9,0,1,240,0,0,0,3,248,0,0,0,7,252,0,0,0,11,254,0,0,0,15,255,0,0,0,47,95,128,0,0,63,15,192,0,0,189,7,224,0,0,252,3,240,0,2,248,1,248,0,3,240,0,253,0,7,224,0,127,0,15,192,0,63,64,31,128,0,31,192,63,64,0,15,208,127,0,0,7,240,105,0,0,2,160, + // 0x005f _ + 16,3,12,16,0,250,255,255,255,254,255,255,255,254,170,170,170,169, + // 0x0060 ` + 9,7,21,11,1,21,106,128,0,63,224,0,15,240,0,3,252,0,0,254,0,0,63,64,0,0,0, + // 0x0061 a + 17,21,105,21,1,255,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x0062 b + 18,29,145,22,3,255,85,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,1,170,0,0,254,47,255,224,0,254,191,255,252,0,255,254,91,255,0,255,208,1,255,64,255,128,0,127,128,255,0,0,63,192,255,0,0,47,192,255,0,0,47,208,255,0,0,47,208,255,0,0,31,208,255,0,0,47,208,255,0,0,47,208,255,0,0,63,192,255,64,0,63,192,255,192,0,191,128,255,240,2,255,0,255,255,255,253,0,252,127,255,248,0,252,11,255,208,0,0,0,20,0,0, + // 0x0063 c + 15,21,84,18,2,255,0,6,170,64,0,255,255,244,7,255,255,240,15,254,171,224,63,240,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,128,0,0,63,192,0,0,63,244,0,176,15,255,255,240,3,255,255,240,0,127,255,208,0,1,84,0, + // 0x0064 d + 18,29,145,22,2,255,0,0,0,5,64,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,26,164,31,208,1,255,255,31,208,11,255,255,223,208,31,254,91,255,208,63,224,0,255,208,127,192,0,127,208,191,64,0,63,208,255,0,0,47,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,47,208,191,64,0,63,208,127,192,0,127,208,63,240,1,255,208,15,255,255,239,208,7,255,255,143,208,0,191,253,15,208,0,5,64,0,0, + // 0x0065 e + 17,21,105,21,2,255,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x0066 f + 14,28,112,13,0,0,0,0,89,64,0,11,255,240,0,63,255,240,0,127,250,224,0,255,64,0,0,255,0,0,0,255,0,0,0,254,0,0,1,255,85,0,47,255,255,64,127,255,255,64,42,255,170,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0, + // 0x0067 g + 18,29,145,22,2,247,0,26,160,5,64,2,255,255,15,208,11,255,255,207,208,31,254,91,255,208,63,224,0,255,208,127,192,0,127,208,191,64,0,63,208,255,0,0,47,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,47,208,191,64,0,63,208,127,192,0,127,208,63,240,1,255,208,15,255,191,255,208,7,255,255,159,208,0,191,253,31,208,0,5,64,31,208,0,0,0,47,192,0,0,0,63,192,0,0,0,63,192,36,0,0,255,64,47,233,91,255,0,47,255,255,252,0,31,255,255,224,0,0,90,165,0,0, + // 0x0068 h + 17,28,140,23,3,0,85,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,1,170,64,0,254,31,255,244,0,254,191,255,253,0,255,254,91,255,0,255,224,0,255,64,255,128,0,127,128,255,64,0,63,128,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192, + // 0x0069 i + 4,27,27,10,3,0,104,255,255,255,40,0,0,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x006a j + 9,36,108,10,254,247,0,26,0,0,63,192,0,63,192,0,63,192,0,10,0,0,0,0,0,0,0,0,21,64,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,128,0,191,128,170,255,64,255,254,0,255,248,0,106,64,0, + // 0x006b k + 17,28,140,20,3,0,85,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,85,0,255,0,3,254,0,255,0,15,248,0,255,0,47,224,0,255,0,191,128,0,255,2,255,0,0,255,11,252,0,0,254,31,240,0,0,254,127,192,0,0,254,255,192,0,0,255,255,240,0,0,255,239,248,0,0,255,131,253,0,0,255,1,255,0,0,255,0,191,192,0,255,0,63,224,0,255,0,15,244,0,255,0,7,252,0,255,0,2,255,0,255,0,0,255,128, + // 0x006c l + 4,28,28,10,3,0,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x006d m + 29,20,160,34,3,0,84,1,170,0,1,170,64,0,252,47,255,224,47,255,240,0,253,191,255,252,191,255,252,0,255,253,95,255,254,91,254,0,255,208,2,255,224,1,255,0,255,128,0,255,192,0,255,0,255,64,0,255,64,0,191,64,255,0,0,255,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64,255,0,0,191,0,0,191,64, + // 0x006e n + 17,20,100,23,3,0,84,1,170,64,0,252,47,255,244,0,253,191,255,253,0,255,254,91,255,0,255,224,0,255,64,255,128,0,127,128,255,64,0,63,128,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192, + // 0x006f o + 18,21,105,22,2,255,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x0070 p + 18,29,145,22,3,247,84,1,170,0,0,253,31,255,224,0,253,191,255,252,0,255,254,91,255,0,255,208,1,255,64,255,128,0,127,192,255,0,0,63,192,255,0,0,63,192,255,0,0,47,208,255,0,0,47,208,255,0,0,31,208,255,0,0,47,208,255,0,0,47,208,255,0,0,63,192,255,64,0,63,192,255,192,0,255,128,255,240,2,255,0,255,255,255,253,0,254,127,255,248,0,254,11,255,208,0,255,0,20,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,170,0,0,0,0, + // 0x0071 q + 18,29,145,22,2,247,0,26,160,5,64,1,255,255,15,208,11,255,255,207,208,31,254,91,255,208,63,224,0,255,208,127,192,0,127,208,191,64,0,63,208,255,0,0,47,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,47,208,191,64,0,63,208,127,192,0,127,208,63,240,1,255,208,15,255,255,239,208,7,255,255,159,208,0,191,253,31,208,0,5,64,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,31,208,0,0,0,26,128, + // 0x0072 r + 12,20,60,15,3,0,84,1,169,252,15,254,253,63,253,254,255,253,255,248,0,255,208,0,255,128,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, + // 0x0073 s + 14,21,84,17,2,255,0,106,164,0,15,255,255,192,63,255,255,192,255,149,111,128,254,0,0,0,254,0,0,0,255,0,0,0,255,208,0,0,63,254,0,0,15,255,244,0,1,255,254,0,0,27,255,192,0,0,191,208,0,0,31,240,0,0,15,240,0,0,15,240,208,0,47,224,255,170,255,192,255,255,255,64,127,255,248,0,0,85,0,0, + // 0x0074 t + 13,25,100,14,0,255,0,60,0,0,0,188,0,0,0,252,0,0,0,252,0,0,3,253,85,64,47,255,255,128,127,255,255,128,43,254,170,64,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,253,0,0,1,255,0,0,0,255,255,192,0,127,255,192,0,31,255,128,0,0,80,0, + // 0x0075 u + 17,21,105,23,3,255,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,31,128,0,21,0,0,0, + // 0x0076 v + 19,20,100,19,0,0,85,0,0,1,84,191,64,0,7,248,127,128,0,15,240,63,192,0,15,240,47,208,0,31,208,15,240,0,63,192,15,240,0,63,128,7,244,0,191,64,3,252,0,255,0,2,252,1,254,0,1,254,2,252,0,0,255,3,252,0,0,127,7,244,0,0,63,139,240,0,0,47,207,224,0,0,31,223,208,0,0,15,255,192,0,0,11,255,128,0,0,3,255,0,0,0,3,255,0,0, + // 0x0077 w + 29,20,160,29,0,0,21,0,0,85,64,0,21,64,127,128,0,255,192,0,127,64,63,192,0,255,192,0,191,0,63,192,1,255,208,0,255,0,47,208,2,251,240,0,254,0,15,224,3,243,240,2,253,0,15,240,7,243,244,3,252,0,11,240,11,226,248,3,248,0,7,244,15,209,252,7,244,0,3,248,15,192,252,11,240,0,3,252,31,192,254,15,240,0,2,252,63,128,191,15,224,0,1,253,63,0,127,31,208,0,0,254,127,0,63,111,192,0,0,254,126,0,47,175,192,0,0,127,189,0,31,191,64,0,0,63,252,0,15,255,0,0,0,63,252,0,15,255,0,0,0,47,244,0,11,254,0,0,0,31,240,0,7,253,0,0, + // 0x0078 x + 18,20,100,20,1,0,85,0,0,21,64,191,192,0,63,192,63,208,0,255,64,15,240,2,254,0,7,252,3,252,0,3,253,15,244,0,0,255,31,224,0,0,127,255,192,0,0,47,255,0,0,0,15,254,0,0,0,15,253,0,0,0,47,255,0,0,0,127,255,192,0,0,255,47,224,0,2,254,15,240,0,7,252,7,252,0,15,240,2,254,0,47,224,0,255,64,127,192,0,127,192,255,0,0,47,224, + // 0x0079 y + 19,29,145,19,0,247,85,0,0,1,84,191,64,0,7,248,63,192,0,15,240,63,192,0,15,240,31,224,0,31,208,15,240,0,63,192,11,244,0,63,128,3,248,0,191,64,3,252,0,255,0,1,253,0,254,0,0,255,2,252,0,0,191,3,252,0,0,63,71,244,0,0,63,203,240,0,0,31,207,224,0,0,15,223,208,0,0,11,255,192,0,0,3,255,128,0,0,3,255,0,0,0,1,255,0,0,0,1,253,0,0,0,3,252,0,0,0,3,248,0,0,0,11,244,0,0,0,47,240,0,0,38,255,192,0,0,127,255,64,0,0,127,253,0,0,0,42,144,0,0,0, + // 0x007a z + 15,20,80,17,1,0,21,85,85,80,63,255,255,248,63,255,255,248,42,170,175,244,0,0,31,224,0,0,63,192,0,0,255,0,0,2,254,0,0,7,252,0,0,15,240,0,0,47,208,0,0,127,128,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,192,0,0,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x007b { + 12,32,96,14,1,250,0,0,105,0,11,254,0,47,254,0,127,228,0,191,64,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,254,0,2,253,0,175,248,0,255,144,0,255,208,0,175,252,0,2,253,0,0,254,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,64,0,127,228,0,47,254,0,11,254,0,0,105, + // 0x007c | + 4,37,37,20,8,247,20,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,104, + // 0x007d } + 12,32,96,14,1,250,169,0,0,255,208,0,255,248,0,95,252,0,2,253,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,255,0,0,191,64,0,63,250,0,7,255,0,7,255,0,63,250,0,191,64,0,255,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,2,253,0,95,252,0,255,248,0,255,208,0,169,0,0, + // 0x007e ~ + 18,5,25,21,1,10,11,255,128,0,32,63,255,253,66,240,127,255,255,255,240,120,1,191,255,192,16,0,6,249,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Cyrillic_26.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Cyrillic_26.cpp new file mode 100644 index 0000000000..312da738b8 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Cyrillic_26.cpp @@ -0,0 +1,322 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Cyrillic 36pt, capital 'A' height: 26px, width: 100%, range: 0x0401-0x0491, glyphs: 74 +extern const uint8_t NotoSans_Medium_Cyrillic_26[10307] = { + 130,26,1,4,145,4,34,247, // unifont_t + // 0x0401 Ё + 15,33,132,20,3,0,0,64,5,0,3,240,31,192,7,244,47,192,3,240,15,192,0,64,1,0,0,0,0,0,0,0,0,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x0402 Ђ + 255, + // 0x0403 Ѓ + 255, + // 0x0404 Є + 20,27,135,24,2,255,0,0,127,255,144,0,11,255,255,255,0,127,255,255,255,1,255,249,86,253,7,255,0,0,24,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,63,192,0,0,0,127,128,0,0,0,191,64,0,0,0,255,255,255,255,64,255,255,255,255,64,255,255,255,255,64,255,149,85,85,0,191,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,224,0,0,0,31,244,0,0,0,15,253,0,0,0,3,255,208,0,109,0,255,255,255,253,0,47,255,255,253,0,6,255,255,248,0,0,5,84,0, + // 0x0405 Ѕ + 255, + // 0x0406 І + 11,26,78,13,1,0,106,170,160,191,255,244,127,255,240,2,254,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,47,255,208,191,255,244,191,255,244, + // 0x0407 Ї + 11,33,99,13,1,0,20,0,80,190,3,244,255,3,248,190,3,244,20,0,64,0,0,0,0,0,0,106,170,160,191,255,244,127,255,240,2,254,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,47,255,208,191,255,244,191,255,244, + // 0x0408 Ј + 255, + // 0x0409 Љ + 255, + // 0x040a Њ + 255, + // 0x040b Ћ + 255, + // 0x040c Ќ + 255, + // 0x040d Ѝ + 255, + // 0x040e Ў + 255, + // 0x040f Џ + 255, + // 0x0410 А + 24,26,156,24,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x0411 Б + 18,26,130,22,3,0,106,170,170,170,0,191,255,255,255,0,191,255,255,255,0,191,234,170,170,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,255,255,128,0,191,255,255,248,0,191,255,255,255,0,191,64,23,255,128,191,64,0,127,192,191,64,0,47,208,191,64,0,31,224,191,64,0,31,224,191,64,0,47,224,191,64,0,63,208,191,64,0,191,192,191,149,91,255,128,191,255,255,254,0,191,255,255,248,0,191,255,254,64,0, + // 0x0412 В + 19,26,130,24,3,0,106,170,169,64,0,191,255,255,248,0,191,255,255,255,64,191,170,175,255,192,191,64,0,127,224,191,64,0,47,240,191,64,0,15,240,191,64,0,15,240,191,64,0,31,224,191,64,0,63,208,191,64,1,255,128,191,255,255,254,0,191,255,255,224,0,191,255,255,255,0,191,64,5,255,208,191,64,0,47,240,191,64,0,15,244,191,64,0,7,248,191,64,0,7,248,191,64,0,11,248,191,64,0,15,244,191,64,0,47,240,191,64,22,255,224,191,255,255,255,192,191,255,255,254,0,191,255,255,144,0, + // 0x0413 Г + 16,26,104,19,3,0,106,170,170,169,191,255,255,253,191,255,255,253,191,234,170,169,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0, + // 0x0414 Д + 25,33,231,26,0,249,0,0,42,170,170,144,0,0,0,127,255,255,224,0,0,0,127,255,255,224,0,0,0,191,170,191,224,0,0,0,191,0,31,224,0,0,0,255,0,31,224,0,0,0,254,0,31,224,0,0,1,253,0,31,224,0,0,2,253,0,31,224,0,0,3,252,0,31,224,0,0,3,252,0,31,224,0,0,7,248,0,31,224,0,0,11,244,0,31,224,0,0,15,240,0,31,224,0,0,31,224,0,31,224,0,0,47,208,0,31,224,0,0,63,192,0,31,224,0,0,127,128,0,31,224,0,0,255,0,0,31,224,0,0,255,0,0,31,224,0,2,253,0,0,31,224,0,3,252,0,0,31,224,0,95,249,85,85,111,229,64,255,255,255,255,255,255,192,255,255,255,255,255,255,192,255,255,255,255,255,255,192,255,0,0,0,0,63,192,255,0,0,0,0,63,192,255,0,0,0,0,63,192,255,0,0,0,0,63,192,255,0,0,0,0,63,192,255,0,0,0,0,63,192,255,0,0,0,0,63,192, + // 0x0415 Е + 15,26,104,20,3,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x0416 Ж + 32,26,208,32,0,0,42,128,0,10,144,0,2,168,47,224,0,15,224,0,15,244,15,244,0,15,224,0,47,224,3,252,0,15,224,0,127,192,1,255,0,15,224,0,255,0,0,191,128,15,224,3,253,0,0,63,208,15,224,11,244,0,0,15,240,15,224,31,224,0,0,7,252,15,224,63,192,0,0,1,254,15,224,255,0,0,0,0,191,79,226,253,0,0,0,0,63,207,231,248,0,0,0,0,15,255,255,240,0,0,0,0,47,239,239,244,0,0,0,0,127,207,227,252,0,0,0,0,255,15,225,254,0,0,0,3,253,15,224,191,128,0,0,11,248,15,224,63,208,0,0,31,240,15,224,31,240,0,0,63,192,15,224,11,248,0,0,255,64,15,224,3,254,0,2,254,0,15,224,0,255,64,7,252,0,15,224,0,127,192,15,240,0,15,224,0,47,224,63,208,0,15,224,0,15,248,191,128,0,15,224,0,3,253, + // 0x0417 З + 19,27,135,22,1,255,0,111,255,224,0,7,255,255,254,0,63,255,255,255,192,63,228,1,255,224,14,0,0,31,240,0,0,0,15,244,0,0,0,11,244,0,0,0,11,244,0,0,0,15,240,0,0,0,63,208,0,0,6,255,128,1,255,255,253,0,1,255,255,144,0,1,255,255,254,0,0,85,91,255,192,0,0,0,47,240,0,0,0,11,248,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,7,248,0,0,0,15,244,121,0,0,191,240,127,255,255,255,192,127,255,255,255,0,27,255,255,228,0,0,5,80,0,0, + // 0x0418 И + 22,26,156,28,3,0,106,0,0,0,42,160,191,0,0,0,127,240,191,0,0,0,255,240,191,0,0,2,255,240,191,0,0,7,255,240,191,0,0,15,251,240,191,0,0,47,235,240,191,0,0,127,203,240,191,0,0,255,11,240,191,0,2,254,11,240,191,0,3,252,11,240,191,0,15,244,11,240,191,0,47,224,11,240,191,0,63,192,11,240,191,0,255,64,11,240,191,1,254,0,11,240,191,3,252,0,11,240,191,15,244,0,11,240,191,31,240,0,11,240,191,63,192,0,11,240,191,191,64,0,11,240,191,255,0,0,11,240,191,252,0,0,11,240,191,248,0,0,11,240,191,240,0,0,11,240,191,208,0,0,11,240, + // 0x0419 Й + 22,34,204,28,3,0,0,127,0,2,248,0,0,127,0,3,248,0,0,63,128,11,244,0,0,47,250,191,224,0,0,11,255,255,128,0,0,1,191,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,0,0,0,42,160,191,0,0,0,127,240,191,0,0,0,255,240,191,0,0,2,255,240,191,0,0,7,255,240,191,0,0,15,251,240,191,0,0,47,235,240,191,0,0,127,203,240,191,0,0,255,11,240,191,0,2,254,11,240,191,0,3,252,11,240,191,0,15,244,11,240,191,0,47,224,11,240,191,0,63,192,11,240,191,0,255,64,11,240,191,1,254,0,11,240,191,3,252,0,11,240,191,15,244,0,11,240,191,31,240,0,11,240,191,63,192,0,11,240,191,191,64,0,11,240,191,255,0,0,11,240,191,252,0,0,11,240,191,248,0,0,11,240,191,240,0,0,11,240,191,208,0,0,11,240, + // 0x041a К + 20,26,130,23,3,0,106,0,0,2,168,191,64,0,15,244,191,64,0,63,208,191,64,0,191,128,191,64,2,254,0,191,64,7,252,0,191,64,31,240,0,191,64,63,192,0,191,64,255,64,0,191,67,253,0,0,191,75,248,0,0,191,111,224,0,0,191,255,192,0,0,191,191,208,0,0,191,95,240,0,0,191,75,252,0,0,191,66,255,0,0,191,64,255,128,0,191,64,63,224,0,191,64,15,244,0,191,64,7,252,0,191,64,2,255,0,191,64,0,191,192,191,64,0,63,224,191,64,0,15,248,191,64,0,3,253, + // 0x041b Л + 23,27,162,26,0,255,0,0,170,170,170,164,0,1,255,255,255,244,0,2,255,255,255,244,0,2,254,170,175,244,0,3,252,0,7,244,0,3,248,0,7,244,0,3,248,0,7,244,0,3,244,0,7,244,0,7,244,0,7,244,0,7,240,0,7,244,0,11,240,0,7,244,0,15,240,0,7,244,0,15,240,0,7,244,0,15,224,0,7,244,0,31,208,0,7,244,0,31,208,0,7,244,0,47,192,0,7,244,0,63,192,0,7,244,0,63,192,0,7,244,0,63,128,0,7,244,0,191,64,0,7,244,0,255,0,0,7,244,2,255,0,0,7,244,255,253,0,0,7,244,255,248,0,0,7,244,255,224,0,0,7,244,21,0,0,0,0,0, + // 0x041c М + 27,26,182,33,3,0,106,160,0,0,0,42,164,191,244,0,0,0,127,248,191,252,0,0,0,191,248,191,252,0,0,0,255,248,191,253,0,0,1,255,248,191,191,0,0,3,247,248,191,127,0,0,3,243,248,191,63,128,0,11,227,248,191,47,192,0,15,211,248,191,31,208,0,31,195,248,191,15,224,0,47,131,248,191,11,240,0,63,67,248,191,3,244,0,127,3,248,191,3,248,0,254,3,248,191,1,252,0,252,3,248,191,0,253,2,252,3,248,191,0,255,3,244,3,248,191,0,127,7,240,3,248,191,0,63,75,224,3,248,191,0,47,207,208,3,248,191,0,31,239,192,3,248,191,0,15,255,128,3,248,191,0,11,255,0,3,248,191,0,7,255,0,3,248,191,0,3,254,0,3,248,191,0,2,252,0,3,248, + // 0x041d Н + 21,26,156,27,3,0,106,0,0,0,106,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,255,255,255,255,64,191,255,255,255,255,64,191,255,255,255,255,64,191,85,85,85,191,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64, + // 0x041e О + 24,27,162,28,2,255,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x041f П + 20,26,130,26,3,0,106,170,170,170,170,191,255,255,255,255,191,255,255,255,255,191,234,170,170,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255,191,64,0,0,255, + // 0x0420 Р + 17,26,130,22,3,0,106,170,165,0,0,191,255,255,224,0,191,255,255,252,0,191,170,191,255,0,191,64,2,255,128,191,64,0,127,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,127,192,191,64,0,255,128,191,64,27,255,0,191,255,255,253,0,191,255,255,240,0,191,255,254,64,0,191,84,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0, + // 0x0421 С + 20,27,135,23,2,255,0,0,191,255,144,0,15,255,255,253,0,127,255,255,252,2,255,245,91,252,7,255,0,0,36,15,252,0,0,0,47,240,0,0,0,63,208,0,0,0,63,192,0,0,0,127,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,224,0,0,0,31,244,0,0,0,15,253,0,0,0,3,255,208,1,184,0,255,255,255,248,0,63,255,255,248,0,6,255,255,224,0,0,5,80,0, + // 0x0422 Т + 20,26,130,20,0,0,106,170,170,170,170,191,255,255,255,255,191,255,255,255,255,106,170,255,170,169,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0, + // 0x0423 У + 23,27,162,23,0,255,106,128,0,0,2,168,63,192,0,0,11,244,31,224,0,0,15,240,15,240,0,0,47,208,7,248,0,0,63,192,3,252,0,0,127,128,1,254,0,0,255,0,0,255,0,1,254,0,0,127,128,2,253,0,0,63,192,3,252,0,0,31,224,11,244,0,0,15,240,15,240,0,0,7,248,31,208,0,0,3,252,63,192,0,0,1,253,63,128,0,0,0,255,191,0,0,0,0,127,254,0,0,0,0,63,253,0,0,0,0,31,252,0,0,0,0,15,244,0,0,0,0,47,240,0,0,0,0,127,208,0,0,25,6,255,128,0,0,31,255,255,0,0,0,31,255,252,0,0,0,31,255,208,0,0,0,0,84,0,0,0,0, + // 0x0424 Ф + 26,27,189,30,2,255,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,6,191,255,228,0,0,0,191,255,255,255,208,0,3,255,255,255,255,248,0,15,255,151,249,111,254,0,63,244,3,248,2,255,64,127,192,3,248,0,127,192,255,64,3,248,0,47,208,255,0,3,248,0,31,224,254,0,3,248,0,15,224,254,0,3,248,0,15,224,254,0,3,248,0,15,224,255,0,3,248,0,31,224,255,0,3,248,0,47,208,191,128,3,248,0,63,192,63,224,3,248,0,255,128,31,253,3,248,11,255,0,11,255,255,255,255,252,0,1,255,255,255,255,224,0,0,31,255,255,254,0,0,0,0,23,253,64,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,1,80,0,0,0, + // 0x0425 Х + 22,26,156,22,0,0,42,128,0,0,42,128,47,224,0,0,191,64,15,244,0,1,255,0,7,252,0,3,252,0,2,254,0,11,248,0,0,255,0,15,240,0,0,127,192,47,192,0,0,47,208,127,128,0,0,15,240,255,0,0,0,7,250,253,0,0,0,2,255,248,0,0,0,0,255,240,0,0,0,0,191,208,0,0,0,0,255,240,0,0,0,2,255,244,0,0,0,3,255,252,0,0,0,15,241,254,0,0,0,31,208,255,64,0,0,63,192,63,192,0,0,191,64,47,224,0,1,254,0,15,244,0,3,252,0,7,252,0,11,244,0,2,254,0,31,240,0,0,255,0,63,192,0,0,127,192,191,128,0,0,63,224, + // 0x0426 Ц + 24,33,198,27,3,249,106,0,0,0,170,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,64,0,0,255,0,191,149,85,85,255,84,191,255,255,255,255,253,191,255,255,255,255,253,191,255,255,255,255,253,0,0,0,0,1,253,0,0,0,0,1,253,0,0,0,0,1,253,0,0,0,0,1,253,0,0,0,0,1,253,0,0,0,0,1,253,0,0,0,0,1,253, + // 0x0427 Ч + 20,26,130,25,2,0,106,64,0,0,170,127,64,0,0,255,127,64,0,0,255,127,64,0,0,255,127,64,0,0,255,127,64,0,0,255,127,64,0,0,255,127,64,0,0,255,127,64,0,0,255,127,64,0,0,255,127,128,0,0,255,127,128,0,0,255,63,192,0,1,255,63,244,1,111,255,31,255,255,255,255,7,255,255,255,255,0,191,255,144,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255, + // 0x0428 Ш + 32,26,208,38,3,0,106,0,0,10,160,0,1,168,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,64,0,15,240,0,2,253,191,149,85,95,245,85,86,253,191,255,255,255,255,255,255,253,191,255,255,255,255,255,255,253,191,255,255,255,255,255,255,253, + // 0x0429 Щ + 35,33,41,38,3,249,106,0,0,10,144,0,2,168,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,64,0,31,224,0,3,252,0,191,149,85,111,245,85,87,253,80,191,255,255,255,255,255,255,255,244,191,255,255,255,255,255,255,255,244,191,255,255,255,255,255,255,255,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244, + // 0x042a Ъ + 24,26,156,25,0,0,170,170,160,0,0,0,255,255,240,0,0,0,255,255,240,0,0,0,170,175,240,0,0,0,0,11,240,0,0,0,0,11,240,0,0,0,0,11,240,0,0,0,0,11,240,0,0,0,0,11,240,0,0,0,0,11,240,0,0,0,0,11,244,0,0,0,0,11,255,255,228,0,0,11,255,255,255,128,0,11,255,255,255,224,0,11,244,1,191,244,0,11,240,0,11,252,0,11,240,0,3,253,0,11,240,0,2,253,0,11,240,0,2,253,0,11,240,0,2,253,0,11,240,0,3,252,0,11,240,0,11,252,0,11,245,85,191,244,0,11,255,255,255,224,0,11,255,255,255,64,0,11,255,255,228,0, + // 0x042b Ы + 25,26,182,31,3,0,106,0,0,0,0,42,128,191,64,0,0,0,63,192,191,64,0,0,0,63,192,191,64,0,0,0,63,192,191,64,0,0,0,63,192,191,64,0,0,0,63,192,191,64,0,0,0,63,192,191,64,0,0,0,63,192,191,64,0,0,0,63,192,191,64,0,0,0,63,192,191,64,0,0,0,63,192,191,255,254,64,0,63,192,191,255,255,244,0,63,192,191,255,255,254,0,63,192,191,64,27,255,64,63,192,191,64,0,191,192,63,192,191,64,0,63,192,63,192,191,64,0,47,208,63,192,191,64,0,47,208,63,192,191,64,0,63,208,63,192,191,64,0,63,192,63,192,191,64,0,255,192,63,192,191,64,91,255,0,63,192,191,255,255,253,0,63,192,191,255,255,244,0,63,192,191,255,254,64,0,63,192, + // 0x042c Ь + 19,26,130,23,3,0,106,0,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,255,255,144,0,191,255,255,253,0,191,255,255,255,64,191,64,6,255,208,191,64,0,47,224,191,64,0,15,240,191,64,0,15,240,191,64,0,11,244,191,64,0,15,240,191,64,0,15,240,191,64,0,63,224,191,149,86,255,192,191,255,255,255,64,191,255,255,252,0,191,255,255,144,0, + // 0x042d Э + 20,27,135,23,1,255,6,255,254,64,0,191,255,255,244,0,127,255,255,254,0,63,165,91,255,192,20,0,0,191,224,0,0,0,47,240,0,0,0,11,248,0,0,0,3,252,0,0,0,2,253,0,0,0,1,254,0,0,0,1,255,1,255,255,255,255,1,255,255,255,255,1,255,255,255,255,0,85,85,86,255,0,0,0,1,254,0,0,0,1,254,0,0,0,2,253,0,0,0,3,252,0,0,0,11,252,0,0,0,31,244,0,0,0,127,224,185,0,7,255,192,191,255,255,255,0,191,255,255,248,0,47,255,255,128,0,0,21,64,0,0, + // 0x042e Ю + 33,27,243,38,3,255,106,0,0,0,47,255,208,0,0,191,64,0,2,255,255,254,0,0,191,64,0,15,255,255,255,192,0,191,64,0,63,253,85,255,240,0,191,64,0,255,208,0,31,248,0,191,64,1,255,0,0,7,252,0,191,64,3,254,0,0,2,254,0,191,64,3,252,0,0,0,255,0,191,64,7,248,0,0,0,255,64,191,64,11,244,0,0,0,191,128,191,64,15,240,0,0,0,127,128,191,255,255,240,0,0,0,127,192,191,255,255,240,0,0,0,63,192,191,255,255,240,0,0,0,63,192,191,85,95,240,0,0,0,63,192,191,64,15,240,0,0,0,127,128,191,64,11,244,0,0,0,127,128,191,64,11,248,0,0,0,191,64,191,64,7,252,0,0,0,255,0,191,64,3,253,0,0,1,255,0,191,64,2,255,0,0,3,253,0,191,64,0,255,192,0,15,252,0,191,64,0,127,244,0,191,240,0,191,64,0,31,255,255,255,208,0,191,64,0,7,255,255,255,0,0,191,64,0,0,127,255,244,0,0,0,0,0,0,0,84,0,0,0, + // 0x042f Я + 19,26,130,23,1,0,0,1,106,170,168,0,47,255,255,252,1,255,255,255,252,3,255,234,171,252,11,253,0,3,252,15,240,0,3,252,31,240,0,3,252,31,224,0,3,252,31,224,0,3,252,15,240,0,3,252,15,248,0,3,252,7,254,0,3,252,2,255,250,171,252,0,191,255,255,252,0,11,255,255,252,0,15,250,171,252,0,31,240,3,252,0,63,192,3,252,0,191,128,3,252,1,255,0,3,252,3,253,0,3,252,11,248,0,3,252,31,240,0,3,252,63,224,0,3,252,191,192,0,3,252,255,64,0,3,252, + // 0x0430 а + 17,21,105,21,1,255,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x0431 б + 18,29,145,22,2,255,0,0,0,1,64,0,0,6,255,208,0,6,255,255,224,0,127,255,255,224,1,255,255,148,0,7,255,64,0,0,15,244,0,0,0,47,208,0,0,0,63,192,0,0,0,63,64,0,0,0,191,2,255,224,0,191,31,255,252,0,255,127,255,255,0,255,253,1,255,192,255,224,0,63,192,255,128,0,47,224,255,0,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,191,0,0,15,240,127,128,0,31,224,63,192,0,47,208,47,224,0,63,192,15,248,1,255,128,7,255,255,255,0,1,255,255,248,0,0,47,255,208,0,0,0,80,0,0, + // 0x0432 в + 17,20,100,21,3,0,85,85,84,0,0,255,255,255,208,0,255,255,255,252,0,255,170,175,254,0,255,0,1,255,0,255,0,0,255,0,255,0,0,255,0,255,0,2,254,0,255,170,175,248,0,255,255,255,144,0,255,255,255,244,0,255,85,91,254,0,255,0,0,255,64,255,0,0,127,128,255,0,0,127,128,255,0,0,191,128,255,0,2,255,0,255,255,255,254,0,255,255,255,248,0,255,255,254,128,0, + // 0x0433 г + 13,20,80,16,3,0,85,85,85,0,255,255,255,64,255,255,255,64,255,170,170,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0, + // 0x0434 д + 21,27,162,22,0,249,0,1,85,85,80,0,0,3,255,255,244,0,0,3,255,255,244,0,0,3,250,175,244,0,0,7,244,7,244,0,0,7,240,7,244,0,0,11,240,7,244,0,0,15,240,7,244,0,0,15,224,7,244,0,0,31,208,7,244,0,0,47,192,7,244,0,0,63,128,7,244,0,0,127,64,7,244,0,0,255,0,7,244,0,1,254,0,7,244,0,3,252,0,7,244,0,11,244,0,7,244,0,127,255,255,255,255,192,127,255,255,255,255,192,127,255,255,255,255,192,127,0,0,0,31,192,127,0,0,0,31,192,127,0,0,0,31,192,127,0,0,0,31,192,127,0,0,0,31,192,127,0,0,0,31,192,127,0,0,0,31,192, + // 0x0435 е + 17,21,105,21,2,255,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x0436 ж + 28,20,140,28,0,0,21,64,0,85,0,1,84,47,224,0,191,0,3,252,11,244,0,191,0,15,240,3,252,0,191,0,63,192,0,255,0,191,0,191,64,0,127,128,191,1,253,0,0,31,224,191,7,248,0,0,11,244,191,15,240,0,0,3,252,191,63,192,0,0,0,255,191,191,0,0,0,0,255,255,255,64,0,0,3,253,191,63,192,0,0,11,244,191,15,240,0,0,47,224,191,7,248,0,0,127,192,191,2,254,0,0,255,0,191,0,191,64,3,252,0,191,0,63,208,15,244,0,191,0,15,240,47,208,0,191,0,3,252,191,128,0,191,0,1,255, + // 0x0437 з + 16,21,84,18,1,255,1,171,164,0,63,255,255,128,63,255,255,240,47,149,95,252,0,0,3,252,0,0,1,252,0,0,2,252,0,0,7,248,0,170,191,224,0,255,255,0,0,255,255,208,0,85,111,248,0,0,3,253,0,0,0,254,0,0,0,254,0,0,1,254,228,0,7,253,255,251,255,252,255,255,255,240,47,255,255,64,0,21,64,0, + // 0x0438 и + 18,20,100,24,3,0,85,0,0,21,80,254,0,0,127,240,254,0,0,255,240,254,0,2,255,240,254,0,3,255,240,254,0,15,251,240,254,0,31,219,240,254,0,63,139,240,254,0,255,11,240,254,1,253,11,240,254,3,252,11,240,254,11,240,11,240,254,31,208,11,240,254,63,192,11,240,253,191,0,11,240,254,254,0,11,240,255,252,0,11,240,255,244,0,11,240,255,224,0,11,240,255,192,0,11,240, + // 0x0439 й + 18,28,140,24,3,0,6,144,0,42,64,15,224,0,63,64,11,240,0,191,0,3,253,87,254,0,1,255,255,252,0,0,47,255,208,0,0,0,0,0,0,0,0,0,0,0,85,0,0,21,80,254,0,0,127,240,254,0,0,255,240,254,0,2,255,240,254,0,3,255,240,254,0,15,251,240,254,0,31,219,240,254,0,63,139,240,254,0,255,11,240,254,1,253,11,240,254,3,252,11,240,254,11,240,11,240,254,31,208,11,240,254,63,192,11,240,253,191,0,11,240,254,254,0,11,240,255,252,0,11,240,255,244,0,11,240,255,224,0,11,240,255,192,0,11,240, + // 0x043a к + 17,20,100,20,3,0,85,0,0,85,0,255,0,3,253,0,255,0,15,244,0,255,0,47,208,0,255,0,127,128,0,255,1,254,0,0,255,3,252,0,0,255,15,240,0,0,255,63,192,0,0,255,191,64,0,0,255,255,64,0,0,255,63,208,0,0,255,15,240,0,0,255,7,252,0,0,255,1,255,0,0,255,0,191,128,0,255,0,47,224,0,255,0,15,248,0,255,0,3,253,0,255,0,0,255,64, + // 0x043b л + 19,21,105,22,0,255,0,5,85,85,80,0,15,255,255,248,0,15,255,255,248,0,31,234,175,248,0,31,192,7,248,0,31,192,7,248,0,47,192,7,248,0,47,192,7,248,0,63,128,7,248,0,63,128,7,248,0,63,64,7,248,0,127,64,7,248,0,191,0,7,248,0,255,0,7,248,0,254,0,7,248,2,253,0,7,248,7,252,0,7,248,255,244,0,7,248,255,240,0,7,248,255,128,0,7,248,4,0,0,0,0, + // 0x043c м + 22,20,120,28,3,0,85,64,0,0,21,80,255,224,0,0,191,240,255,240,0,0,255,240,255,244,0,1,255,240,255,248,0,3,255,240,254,252,0,3,251,240,253,253,0,11,235,240,253,127,0,15,219,240,253,63,0,31,203,240,253,47,128,47,139,240,253,31,192,63,11,240,253,15,208,191,11,240,253,11,240,253,11,240,253,3,241,252,11,240,253,2,250,248,11,240,253,1,255,240,11,240,253,0,255,240,11,240,253,0,191,208,11,240,253,0,63,192,11,240,253,0,63,128,11,240, + // 0x043d н + 17,20,100,23,3,0,85,0,0,21,64,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,170,170,191,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192, + // 0x043e о + 18,21,105,22,2,255,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x043f п + 17,20,100,23,3,0,85,85,85,85,64,255,255,255,255,192,255,255,255,255,192,255,170,170,191,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192, + // 0x0440 р + 18,29,145,22,3,247,84,1,170,0,0,253,31,255,224,0,253,191,255,252,0,255,254,91,255,0,255,208,1,255,64,255,128,0,127,192,255,0,0,63,192,255,0,0,63,192,255,0,0,47,208,255,0,0,47,208,255,0,0,31,208,255,0,0,47,208,255,0,0,47,208,255,0,0,63,192,255,64,0,63,192,255,192,0,255,128,255,240,2,255,0,255,255,255,253,0,254,127,255,248,0,254,11,255,208,0,255,0,20,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,170,0,0,0,0, + // 0x0441 с + 15,21,84,18,2,255,0,6,170,64,0,255,255,244,7,255,255,240,15,254,171,224,63,240,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,128,0,0,63,192,0,0,63,244,0,176,15,255,255,240,3,255,255,240,0,127,255,208,0,1,84,0, + // 0x0442 т + 17,20,100,18,0,0,21,85,85,85,64,127,255,255,255,192,127,255,255,255,192,42,171,254,170,128,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0, + // 0x0443 у + 19,29,145,19,0,247,85,0,0,1,84,191,64,0,7,248,63,192,0,15,240,63,192,0,15,240,31,224,0,31,208,15,240,0,63,192,11,244,0,63,128,3,248,0,191,64,3,252,0,255,0,1,253,0,254,0,0,255,2,252,0,0,191,3,252,0,0,63,71,244,0,0,63,203,240,0,0,31,207,224,0,0,15,223,208,0,0,11,255,192,0,0,3,255,128,0,0,3,255,0,0,0,1,255,0,0,0,1,253,0,0,0,3,252,0,0,0,3,248,0,0,0,11,244,0,0,0,47,240,0,0,38,255,192,0,0,127,255,64,0,0,127,253,0,0,0,42,144,0,0,0, + // 0x0444 ф + 23,37,222,27,2,247,0,0,5,64,0,0,0,0,15,208,0,0,0,0,15,208,0,0,0,0,15,208,0,0,0,0,15,208,0,0,0,0,15,208,0,0,0,0,15,208,0,0,0,0,15,208,0,0,0,1,111,229,0,0,0,47,255,255,224,0,2,255,255,255,253,0,11,255,175,235,255,128,47,244,15,208,191,208,63,208,15,208,31,240,191,128,15,208,11,244,255,0,15,208,3,252,255,0,15,208,3,252,255,0,15,208,3,252,255,0,15,208,3,252,255,0,15,208,3,252,255,0,15,208,3,252,191,64,15,208,7,248,127,192,15,208,15,244,63,224,15,208,47,240,15,253,15,209,255,192,3,255,255,255,255,64,0,191,255,255,252,0,0,11,255,255,144,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,10,128,0,0, + // 0x0445 х + 18,20,100,20,1,0,85,0,0,21,64,191,192,0,63,192,63,208,0,255,64,15,240,2,254,0,7,252,3,252,0,3,253,15,244,0,0,255,31,224,0,0,127,255,192,0,0,47,255,0,0,0,15,254,0,0,0,15,253,0,0,0,47,255,0,0,0,127,255,192,0,0,255,47,224,0,2,254,15,240,0,7,252,7,252,0,15,240,2,254,0,47,224,0,255,64,127,192,0,127,192,255,0,0,47,224, + // 0x0446 ц + 20,27,135,23,3,249,85,0,0,21,64,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,190, + // 0x0447 ч + 18,20,100,23,2,0,21,0,0,5,64,127,64,0,31,224,127,64,0,31,224,127,64,0,31,224,127,64,0,31,224,127,64,0,31,224,127,64,0,31,224,127,64,0,31,224,127,64,0,31,224,127,192,0,127,224,63,245,91,255,224,31,255,255,255,224,7,255,255,95,224,0,106,144,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224, + // 0x0448 ш + 27,20,140,33,3,0,85,0,0,84,0,1,84,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252, + // 0x0449 щ + 30,27,216,33,3,249,85,0,0,84,0,1,84,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,0,1,253,0,3,252,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,11,224, + // 0x044a ъ + 24,20,120,25,0,0,21,85,80,0,0,0,191,255,244,0,0,0,191,255,244,0,0,0,106,175,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,254,170,148,0,0,7,255,255,255,128,0,7,255,255,255,240,0,7,249,85,111,252,0,7,244,0,3,253,0,7,244,0,1,253,0,7,244,0,1,253,0,7,244,0,2,253,0,7,244,0,11,252,0,7,255,255,255,244,0,7,255,255,255,208,0,7,255,255,249,0, + // 0x044b ы + 23,20,120,29,3,0,85,0,0,0,1,84,255,0,0,0,3,252,255,0,0,0,3,252,255,0,0,0,3,252,255,0,0,0,3,252,255,0,0,0,3,252,255,0,0,0,3,252,255,0,0,0,3,252,255,170,164,0,3,252,255,255,255,208,3,252,255,255,255,248,3,252,255,85,111,253,3,252,255,0,1,254,3,252,255,0,0,255,3,252,255,0,0,255,3,252,255,0,1,254,3,252,255,0,7,253,3,252,255,255,255,252,3,252,255,255,255,224,3,252,255,255,254,64,3,252, + // 0x044c ь + 17,20,100,22,3,0,85,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,170,169,0,0,255,255,255,244,0,255,255,255,254,0,255,85,91,255,64,255,0,0,191,128,255,0,0,63,192,255,0,0,63,192,255,0,0,127,128,255,0,1,255,64,255,255,255,254,0,255,255,255,248,0,255,255,255,128,0, + // 0x044d э + 15,21,84,18,1,255,6,170,64,0,127,255,253,0,127,255,255,64,62,86,255,208,0,0,47,240,0,0,11,244,0,0,7,248,0,0,3,252,5,85,87,252,11,255,255,252,11,255,255,252,6,170,171,252,0,0,3,252,0,0,3,252,0,0,11,244,0,0,15,240,144,0,127,224,255,239,255,192,255,255,254,0,127,255,228,0,0,84,0,0, + // 0x044e ю + 26,21,147,31,3,255,85,0,0,6,169,0,0,255,0,0,191,255,224,0,255,0,3,255,255,252,0,255,0,15,254,91,254,0,255,0,47,240,0,255,64,255,0,63,192,0,63,192,255,0,127,128,0,63,192,255,0,127,64,0,47,208,255,170,255,64,0,31,224,255,255,255,0,0,31,224,255,255,255,0,0,31,224,255,170,255,0,0,31,224,255,0,191,64,0,31,208,255,0,127,128,0,47,208,255,0,63,192,0,63,192,255,0,63,208,0,127,128,255,0,31,244,1,255,0,255,0,11,255,255,253,0,255,0,2,255,255,244,0,255,0,0,111,255,128,0,0,0,0,0,80,0,0, + // 0x044f я + 18,20,100,20,0,0,0,1,85,85,64,0,191,255,255,224,3,255,255,255,224,11,254,170,175,224,15,240,0,31,224,31,208,0,31,224,31,208,0,31,224,31,208,0,31,224,15,240,0,31,224,11,255,149,111,224,3,255,255,255,224,0,127,255,255,224,0,31,229,111,224,0,63,192,31,224,0,255,0,31,224,2,254,0,31,224,3,252,0,31,224,15,244,0,31,224,47,224,0,31,224,127,192,0,31,224, + // 0x0450 ѐ + 255, + // 0x0451 ё + 17,28,140,21,2,255,0,80,1,64,0,3,248,15,208,0,3,252,15,224,0,2,248,15,208,0,0,80,1,0,0,0,0,0,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x0452 ђ + 255, + // 0x0453 ѓ + 255, + // 0x0454 є + 15,21,84,18,2,255,0,6,170,64,0,255,255,248,7,255,255,244,31,254,86,240,63,224,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,85,85,64,255,255,255,128,255,255,255,128,255,170,170,64,255,0,0,0,255,0,0,0,191,64,0,0,63,192,0,0,47,244,0,36,15,255,255,248,3,255,255,248,0,127,255,224,0,0,84,0, + // 0x0455 ѕ + 255, + // 0x0456 і + 4,27,27,10,3,0,104,255,255,255,40,0,0,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x0457 ї + 11,27,81,10,255,0,4,0,80,63,1,252,127,66,252,63,1,252,4,0,16,0,0,0,0,0,0,0,85,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0, + // 0x0458 ј + 255, + // 0x0459 љ + 255, + // 0x045a њ + 255, + // 0x045b ћ + 255, + // 0x045c ќ + 255, + // 0x045d ѝ + 255, + // 0x045e ў + 255, + // 0x045f џ + 255, + // 0x0460 Ѡ + 255, + // 0x0461 ѡ + 255, + // 0x0462 Ѣ + 255, + // 0x0463 ѣ + 255, + // 0x0464 Ѥ + 255, + // 0x0465 ѥ + 255, + // 0x0466 Ѧ + 255, + // 0x0467 ѧ + 255, + // 0x0468 Ѩ + 255, + // 0x0469 ѩ + 255, + // 0x046a Ѫ + 255, + // 0x046b ѫ + 255, + // 0x046c Ѭ + 255, + // 0x046d ѭ + 255, + // 0x046e Ѯ + 255, + // 0x046f ѯ + 255, + // 0x0470 Ѱ + 255, + // 0x0471 ѱ + 255, + // 0x0472 Ѳ + 255, + // 0x0473 ѳ + 255, + // 0x0474 Ѵ + 255, + // 0x0475 ѵ + 255, + // 0x0476 Ѷ + 255, + // 0x0477 ѷ + 255, + // 0x0478 Ѹ + 255, + // 0x0479 ѹ + 255, + // 0x047a Ѻ + 255, + // 0x047b ѻ + 255, + // 0x047c Ѽ + 255, + // 0x047d ѽ + 255, + // 0x047e Ѿ + 255, + // 0x047f ѿ + 255, + // 0x0480 Ҁ + 255, + // 0x0481 ҁ + 255, + // 0x0482 ҂ + 255, + // 0x0483 ҃ + 255, + // 0x0484 ҄ + 255, + // 0x0485 ҅ + 255, + // 0x0486 ҆ + 255, + // 0x0487 ҇ + 255, + // 0x0488 ҈ + 255, + // 0x0489 ҉ + 255, + // 0x048a Ҋ + 255, + // 0x048b ҋ + 255, + // 0x048c Ҍ + 255, + // 0x048d ҍ + 255, + // 0x048e Ҏ + 255, + // 0x048f ҏ + 255, + // 0x0490 Ґ + 16,31,124,20,3,0,0,0,0,191,0,0,0,191,0,0,0,191,0,0,0,191,0,0,0,191,106,170,170,255,191,255,255,255,191,255,255,255,191,234,170,170,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0, + // 0x0491 ґ + 13,25,100,16,3,0,0,0,63,128,0,0,63,128,0,0,63,128,0,0,63,128,0,0,63,128,85,85,127,128,255,255,255,128,255,255,255,128,255,170,170,64,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Greek_26.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Greek_26.cpp new file mode 100644 index 0000000000..fcb06f5a10 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Greek_26.cpp @@ -0,0 +1,178 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Greek 36pt, capital 'A' height: 26px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 +extern const uint8_t NotoSans_Medium_Greek_26[9565] = { + 130,26,134,3,206,3,34,247, // unifont_t + // 0x0386 Ά + 26,26,182,26,0,0,15,244,0,127,128,0,0,31,240,0,255,192,0,0,47,192,0,255,224,0,0,63,128,2,255,240,0,0,127,0,3,251,244,0,0,189,0,7,243,248,0,0,0,0,11,242,252,0,0,0,0,15,224,253,0,0,0,0,31,192,255,0,0,0,0,63,192,191,0,0,0,0,63,128,63,128,0,0,0,191,0,63,192,0,0,0,255,0,31,208,0,0,1,253,0,15,224,0,0,2,252,0,11,240,0,0,3,255,255,255,244,0,0,7,255,255,255,252,0,0,15,255,255,255,252,0,0,15,250,170,170,254,0,0,47,208,0,0,255,0,0,63,192,0,0,191,64,0,127,128,0,0,127,128,0,255,0,0,0,63,192,0,255,0,0,0,47,208,2,254,0,0,0,15,240,3,252,0,0,0,15,240, + // 0x0387 · + 255, + // 0x0388 Έ + 25,26,182,27,0,0,15,244,10,170,170,170,64,31,240,15,255,255,255,64,47,192,15,255,255,255,64,63,128,15,250,170,170,64,127,0,15,240,0,0,0,189,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,255,255,255,0,0,0,15,255,255,255,0,0,0,15,255,255,255,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,245,85,85,0,0,0,15,255,255,255,64,0,0,15,255,255,255,64,0,0,15,255,255,255,64, + // 0x0389 Ή + 30,26,208,33,0,0,15,244,10,160,0,0,10,160,31,240,15,240,0,0,15,240,47,192,15,240,0,0,15,240,63,128,15,240,0,0,15,240,127,0,15,240,0,0,15,240,189,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,255,255,255,255,240,0,0,15,255,255,255,255,240,0,0,15,255,255,255,255,240,0,0,15,245,85,85,95,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240, + // 0x038a Ί + 19,26,130,20,0,0,15,244,106,170,164,31,240,127,255,248,47,192,63,255,244,63,128,2,254,0,127,0,1,254,0,189,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,31,255,224,0,0,127,255,248,0,0,127,255,248, + // 0x038b ΋ + 255, + // 0x038c Ό + 31,27,216,33,0,255,15,244,0,6,255,249,0,0,31,240,0,191,255,255,208,0,47,192,3,255,255,255,248,0,63,128,15,255,149,111,255,0,127,0,63,244,0,2,255,128,189,0,127,208,0,0,127,192,0,0,255,128,0,0,63,224,0,1,255,0,0,0,15,240,0,2,254,0,0,0,15,244,0,3,253,0,0,0,11,248,0,3,252,0,0,0,7,248,0,3,252,0,0,0,7,252,0,3,252,0,0,0,7,252,0,3,252,0,0,0,7,252,0,3,252,0,0,0,7,252,0,3,252,0,0,0,7,248,0,3,253,0,0,0,11,248,0,2,254,0,0,0,15,244,0,1,255,0,0,0,15,240,0,0,255,64,0,0,47,224,0,0,191,192,0,0,127,208,0,0,63,240,0,1,255,128,0,0,31,254,64,27,255,0,0,0,7,255,255,255,252,0,0,0,0,255,255,255,224,0,0,0,0,27,255,254,0,0,0,0,0,0,21,64,0,0, + // 0x038d ΍ + 255, + // 0x038e Ύ + 29,26,208,29,0,0,15,244,106,128,0,0,42,128,31,240,63,192,0,0,127,128,47,192,31,224,0,0,255,0,63,128,15,244,0,2,254,0,127,0,7,252,0,3,252,0,189,0,3,253,0,11,248,0,0,0,1,255,0,15,240,0,0,0,0,255,64,47,208,0,0,0,0,63,192,63,192,0,0,0,0,47,208,191,64,0,0,0,0,15,240,255,0,0,0,0,0,11,246,252,0,0,0,0,0,3,255,248,0,0,0,0,0,2,255,240,0,0,0,0,0,0,255,224,0,0,0,0,0,0,127,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0, + // 0x038f Ώ + 31,26,208,31,0,0,15,244,0,27,255,228,0,0,31,240,1,255,255,255,128,0,47,192,11,255,255,255,240,0,63,128,47,254,85,191,252,0,127,0,127,224,0,7,255,0,189,0,255,128,0,0,255,128,0,2,255,0,0,0,127,192,0,3,253,0,0,0,63,208,0,7,252,0,0,0,31,240,0,7,248,0,0,0,15,240,0,11,248,0,0,0,15,240,0,11,244,0,0,0,15,240,0,11,244,0,0,0,15,240,0,11,244,0,0,0,15,240,0,7,248,0,0,0,15,240,0,3,252,0,0,0,15,224,0,3,252,0,0,0,31,208,0,2,253,0,0,0,63,192,0,0,255,0,0,0,127,128,0,0,127,128,0,0,255,0,0,0,47,208,0,3,252,0,0,0,11,244,0,15,240,0,0,5,87,254,0,127,213,80,0,15,255,255,0,191,255,244,0,15,255,255,0,191,255,244,0,15,255,255,0,191,255,244, + // 0x0390 ΐ + 255, + // 0x0391 Α + 24,26,156,24,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x0392 Β + 19,26,130,24,3,0,106,170,169,64,0,191,255,255,248,0,191,255,255,255,64,191,170,175,255,192,191,64,0,127,224,191,64,0,47,240,191,64,0,15,240,191,64,0,15,240,191,64,0,31,224,191,64,0,63,208,191,64,1,255,128,191,255,255,254,0,191,255,255,224,0,191,255,255,255,0,191,64,5,255,208,191,64,0,47,240,191,64,0,15,244,191,64,0,7,248,191,64,0,7,248,191,64,0,11,248,191,64,0,15,244,191,64,0,47,240,191,64,22,255,224,191,255,255,255,192,191,255,255,254,0,191,255,255,144,0, + // 0x0393 Γ + 14,26,104,18,3,0,106,170,170,160,191,255,255,240,191,255,255,240,191,170,170,160,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0, + // 0x0394 Δ + 23,26,156,23,0,0,0,0,31,224,0,0,0,0,63,240,0,0,0,0,127,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,252,255,0,0,0,3,252,127,0,0,0,3,244,63,128,0,0,11,240,47,192,0,0,15,224,31,208,0,0,31,208,15,224,0,0,63,192,11,240,0,0,63,128,7,248,0,0,191,0,3,252,0,0,255,0,2,253,0,1,253,0,0,254,0,3,252,0,0,255,0,3,248,0,0,127,64,11,244,0,0,63,192,15,240,0,0,47,192,31,224,0,0,31,224,47,192,0,0,15,240,63,213,85,85,95,244,127,255,255,255,255,252,191,255,255,255,255,252,191,255,255,255,255,252, + // 0x0395 Ε + 15,26,104,20,3,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x0396 Ζ + 19,26,130,21,1,0,106,170,170,170,160,127,255,255,255,240,127,255,255,255,240,42,170,170,191,240,0,0,0,63,192,0,0,0,255,64,0,0,2,255,0,0,0,3,252,0,0,0,15,244,0,0,0,47,224,0,0,0,63,192,0,0,0,255,64,0,0,2,254,0,0,0,3,252,0,0,0,15,244,0,0,0,47,224,0,0,0,127,192,0,0,0,255,64,0,0,2,254,0,0,0,7,252,0,0,0,15,244,0,0,0,47,224,0,0,0,127,213,85,85,80,255,255,255,255,244,255,255,255,255,244,255,255,255,255,244, + // 0x0397 Η + 21,26,156,27,3,0,106,0,0,0,106,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,255,255,255,255,64,191,255,255,255,255,64,191,255,255,255,255,64,191,85,85,85,191,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64, + // 0x0398 Θ + 24,27,162,28,2,255,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,66,170,170,128,255,255,67,255,255,208,255,255,67,255,255,208,255,255,66,170,170,128,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x0399 Ι + 11,26,78,13,1,0,106,170,160,191,255,244,127,255,240,2,254,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,47,255,208,191,255,244,191,255,244, + // 0x039a Κ + 20,26,130,23,3,0,106,0,0,2,168,191,64,0,15,244,191,64,0,63,224,191,64,0,191,128,191,64,2,255,0,191,64,7,252,0,191,64,31,240,0,191,64,63,192,0,191,64,255,64,0,191,67,253,0,0,191,79,248,0,0,191,111,240,0,0,191,255,244,0,0,191,255,252,0,0,191,247,254,0,0,191,208,255,64,0,191,64,191,192,0,191,64,63,240,0,191,64,15,248,0,191,64,7,252,0,191,64,2,255,0,191,64,0,255,128,191,64,0,63,208,191,64,0,47,240,191,64,0,15,248,191,64,0,3,253, + // 0x039b Λ + 23,26,156,23,0,0,0,0,47,208,0,0,0,0,63,240,0,0,0,0,191,240,0,0,0,0,255,244,0,0,0,1,254,252,0,0,0,2,253,252,0,0,0,3,248,254,0,0,0,7,240,191,0,0,0,11,240,127,64,0,0,15,224,63,128,0,0,31,192,47,192,0,0,63,192,31,208,0,0,63,128,15,224,0,0,191,0,11,240,0,0,255,0,7,244,0,0,254,0,3,252,0,2,252,0,2,252,0,3,252,0,1,253,0,7,248,0,0,255,0,11,240,0,0,191,0,15,240,0,0,127,128,31,224,0,0,63,192,47,192,0,0,47,208,63,192,0,0,31,224,127,128,0,0,15,240,255,0,0,0,11,244, + // 0x039c Μ + 27,26,182,33,3,0,106,160,0,0,0,42,164,191,244,0,0,0,127,248,191,252,0,0,0,191,248,191,252,0,0,0,255,248,191,253,0,0,1,255,248,191,191,0,0,3,247,248,191,127,0,0,3,243,248,191,63,128,0,11,227,248,191,47,192,0,15,211,248,191,31,208,0,31,195,248,191,15,224,0,47,131,248,191,11,240,0,63,67,248,191,3,244,0,127,3,248,191,3,248,0,254,3,248,191,1,252,0,252,3,248,191,0,253,2,252,3,248,191,0,255,3,244,3,248,191,0,127,7,240,3,248,191,0,63,75,224,3,248,191,0,47,207,208,3,248,191,0,31,239,192,3,248,191,0,15,255,128,3,248,191,0,11,255,0,3,248,191,0,7,255,0,3,248,191,0,3,254,0,3,248,191,0,2,252,0,3,248, + // 0x039d Ν + 22,26,156,28,3,0,106,128,0,0,10,144,191,240,0,0,15,224,191,244,0,0,15,224,191,252,0,0,15,224,191,254,0,0,15,224,191,255,64,0,15,224,190,127,192,0,15,224,191,63,224,0,15,224,191,15,240,0,15,224,191,11,252,0,15,224,191,3,253,0,15,224,191,1,255,0,15,224,191,0,191,128,15,224,191,0,63,208,15,224,191,0,31,240,15,224,191,0,15,248,15,224,191,0,3,253,15,224,191,0,2,255,15,224,191,0,0,255,143,224,191,0,0,127,207,224,191,0,0,47,255,224,191,0,0,15,255,224,191,0,0,7,255,224,191,0,0,3,255,224,191,0,0,0,255,224,191,0,0,0,191,224, + // 0x039e Ξ + 19,26,130,23,2,0,42,170,170,170,144,63,255,255,255,224,63,255,255,255,224,42,170,170,170,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,255,255,0,11,255,255,255,0,11,255,255,255,0,1,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,80,255,255,255,255,244,255,255,255,255,244,255,255,255,255,244, + // 0x039f Ο + 24,27,162,28,2,255,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x03a0 Π + 20,26,130,27,3,0,106,170,170,170,170,191,255,255,255,255,191,255,255,255,255,191,234,170,170,255,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191,191,64,0,0,191, + // 0x03a1 Ρ + 17,26,130,22,3,0,106,170,165,0,0,191,255,255,224,0,191,255,255,252,0,191,170,191,255,0,191,64,2,255,128,191,64,0,127,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,127,192,191,64,0,255,128,191,64,27,255,0,191,255,255,253,0,191,255,255,240,0,191,255,254,64,0,191,84,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0, + // 0x03a2 ΢ + 255, + // 0x03a3 Σ + 19,26,130,21,1,0,106,170,170,170,160,127,255,255,255,240,127,255,255,255,240,127,250,170,170,160,31,240,0,0,0,11,252,0,0,0,2,255,0,0,0,0,255,128,0,0,0,63,224,0,0,0,15,244,0,0,0,7,253,0,0,0,1,255,0,0,0,0,191,64,0,0,0,255,0,0,0,3,252,0,0,0,11,244,0,0,0,47,224,0,0,0,127,192,0,0,0,255,0,0,0,3,252,0,0,0,15,244,0,0,0,47,224,0,0,0,127,213,85,85,80,255,255,255,255,244,255,255,255,255,244,255,255,255,255,244, + // 0x03a4 Τ + 20,26,130,20,0,0,106,170,170,170,170,191,255,255,255,255,191,255,255,255,255,106,170,255,170,169,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0, + // 0x03a5 Υ + 21,26,156,21,0,0,170,64,0,0,106,128,127,192,0,0,255,64,63,208,0,1,255,0,31,240,0,3,252,0,11,244,0,7,248,0,3,252,0,15,240,0,2,253,0,31,224,0,0,255,0,63,192,0,0,191,128,127,128,0,0,63,192,255,0,0,0,47,226,253,0,0,0,15,243,252,0,0,0,7,255,244,0,0,0,3,255,240,0,0,0,1,255,208,0,0,0,0,255,128,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0, + // 0x03a6 Φ + 27,27,189,31,2,255,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,2,254,0,0,0,0,11,255,255,255,128,0,0,191,255,255,255,248,0,7,255,255,255,255,255,64,15,254,65,253,6,255,208,63,240,1,253,0,47,240,127,192,1,253,0,15,244,191,64,1,253,0,7,252,255,0,1,253,0,3,252,254,0,1,253,0,2,252,254,0,1,253,0,2,252,254,0,1,253,0,2,252,255,0,1,253,0,3,252,255,0,1,253,0,3,252,191,128,1,253,0,11,244,63,208,1,253,0,31,240,31,248,1,253,0,191,208,11,255,230,254,111,255,128,1,255,255,255,255,253,0,0,47,255,255,255,224,0,0,1,107,255,165,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,0,0,0,0,0, + // 0x03a7 Χ + 22,26,156,22,0,0,42,128,0,0,42,128,47,224,0,0,191,64,15,244,0,1,255,0,7,252,0,3,252,0,2,254,0,11,248,0,0,255,0,15,240,0,0,127,192,47,192,0,0,47,208,127,128,0,0,15,240,255,0,0,0,7,250,253,0,0,0,2,255,248,0,0,0,0,255,240,0,0,0,0,191,208,0,0,0,0,255,240,0,0,0,2,255,244,0,0,0,3,255,252,0,0,0,15,241,254,0,0,0,31,208,255,64,0,0,63,192,63,192,0,0,191,64,47,224,0,1,254,0,15,244,0,3,252,0,7,252,0,11,244,0,2,254,0,31,240,0,0,255,0,63,192,0,0,127,192,191,128,0,0,63,224, + // 0x03a8 Ψ + 24,26,156,30,3,0,170,0,10,160,0,170,255,0,15,240,0,255,255,0,15,240,0,255,255,0,15,240,0,255,255,0,15,240,0,255,255,0,15,240,0,255,255,0,15,240,0,255,255,0,15,240,0,255,255,0,15,240,0,255,191,0,15,240,0,255,191,0,15,240,0,255,191,64,15,240,0,254,127,128,15,240,1,253,63,192,15,240,3,252,47,224,15,240,11,248,15,253,15,240,127,240,3,255,255,255,255,208,0,255,255,255,255,0,0,27,255,255,228,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0, + // 0x03a9 Ω + 25,26,182,26,1,0,0,1,191,254,64,0,0,0,31,255,255,248,0,0,0,191,255,255,255,0,0,3,255,229,91,255,192,0,11,254,0,0,127,240,0,15,248,0,0,31,244,0,47,240,0,0,11,252,0,63,192,0,0,3,253,0,127,192,0,0,2,254,0,191,128,0,0,1,255,0,191,64,0,0,0,255,0,255,64,0,0,0,255,0,191,64,0,0,0,255,0,191,64,0,0,0,255,0,191,64,0,0,0,255,0,127,128,0,0,1,254,0,63,192,0,0,2,253,0,47,208,0,0,3,252,0,15,240,0,0,7,244,0,7,244,0,0,15,224,0,2,253,0,0,63,192,0,0,191,64,0,255,0,0,85,127,224,7,253,85,0,255,255,240,11,255,255,64,255,255,240,11,255,255,64,255,255,240,11,255,255,64, + // 0x03aa Ϊ + 255, + // 0x03ab Ϋ + 255, + // 0x03ac ά + 20,29,145,23,2,255,0,0,47,224,0,0,0,63,192,0,0,0,127,128,0,0,0,191,0,0,0,0,253,0,0,0,1,248,0,0,0,0,0,0,0,0,0,0,0,0,0,26,160,5,64,2,255,254,15,208,11,255,255,207,208,31,254,91,255,208,63,224,0,255,208,127,192,0,127,208,191,64,0,63,208,255,0,0,47,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,47,208,191,64,0,63,208,127,192,0,127,208,63,240,1,255,224,15,255,255,239,255,7,255,255,139,255,0,191,253,3,255,0,5,64,0,20, + // 0x03ad έ + 15,29,116,17,1,255,0,0,63,224,0,0,63,192,0,0,127,64,0,0,191,0,0,0,252,0,0,1,248,0,0,0,0,0,0,0,0,0,0,26,233,64,2,255,255,248,11,255,255,252,31,249,86,244,47,208,0,16,47,192,0,0,47,192,0,0,31,224,0,0,11,254,149,0,1,255,254,0,2,255,254,0,31,249,84,0,63,192,0,0,127,128,0,0,127,64,0,0,127,128,0,0,63,224,0,24,47,255,255,248,11,255,255,248,1,255,255,224,0,1,84,0, + // 0x03ae ή + 17,37,185,22,3,247,0,3,253,0,0,0,7,248,0,0,0,15,240,0,0,0,15,208,0,0,0,31,192,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,84,1,170,64,0,252,47,255,240,0,253,191,255,252,0,255,254,91,254,0,255,224,1,255,0,255,128,0,255,64,255,64,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,42,64, + // 0x03af ί + 9,29,87,13,3,255,7,252,0,11,248,0,15,240,0,31,208,0,47,128,0,63,0,0,0,0,0,0,0,0,85,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,255,0,0,255,0,0,255,64,0,127,255,192,63,255,192,11,255,192,0,84,0, + // 0x03b0 ΰ + 255, + // 0x03b1 α + 20,21,105,23,2,255,0,26,160,5,64,2,255,254,15,208,11,255,255,207,208,31,254,91,255,208,63,224,0,255,208,127,192,0,127,208,191,64,0,63,208,255,0,0,47,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,47,208,191,64,0,63,208,127,192,0,127,208,63,240,1,255,224,15,255,255,239,255,7,255,255,139,255,0,191,253,3,255,0,5,64,0,20, + // 0x03b2 β + 18,37,185,22,3,247,0,5,148,0,0,1,255,255,192,0,11,255,255,244,0,47,254,175,252,0,63,208,3,254,0,191,128,0,255,0,255,0,0,255,0,255,0,0,191,0,255,0,0,255,0,255,0,0,255,0,255,0,1,253,0,255,0,7,248,0,255,11,255,208,0,255,15,254,0,0,255,15,255,244,0,255,0,7,253,0,255,0,0,255,64,255,0,0,63,192,255,0,0,47,192,255,0,0,47,208,255,0,0,31,208,255,0,0,47,208,255,0,0,63,192,255,0,0,127,192,255,208,2,255,64,255,255,255,254,0,255,255,255,248,0,255,127,255,144,0,255,1,80,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,170,0,0,0,0, + // 0x03b3 γ + 18,28,140,19,0,248,85,0,0,5,80,191,0,0,15,240,127,128,0,15,240,63,192,0,15,240,47,192,0,15,240,31,224,0,15,224,15,240,0,15,224,11,240,0,31,208,3,248,0,47,192,3,252,0,63,192,1,252,0,63,128,0,254,0,127,0,0,255,0,254,0,0,127,1,253,0,0,63,131,252,0,0,47,203,240,0,0,31,239,224,0,0,15,255,192,0,0,11,255,0,0,0,7,252,0,0,0,3,248,0,0,0,3,248,0,0,0,3,248,0,0,0,3,248,0,0,0,3,248,0,0,0,3,248,0,0,0,3,248,0,0,0,2,164,0,0, + // 0x03b4 δ + 19,29,145,21,1,255,0,0,89,64,0,0,11,255,254,0,0,63,255,255,208,0,255,230,191,208,0,255,0,11,192,1,253,0,0,0,1,253,0,0,0,1,255,0,0,0,0,255,192,0,0,0,63,248,0,0,0,15,255,64,0,0,11,255,240,0,0,191,255,253,0,3,255,66,255,64,15,248,0,191,192,31,224,0,47,224,63,192,0,15,240,63,128,0,11,244,127,64,0,7,244,127,64,0,7,248,127,64,0,7,244,127,128,0,11,244,63,192,0,15,240,63,224,0,31,240,15,248,0,191,208,7,255,255,255,64,1,255,255,253,0,0,47,255,224,0,0,0,84,0,0, + // 0x03b5 ε + 15,21,84,17,1,255,0,26,233,64,2,255,255,248,11,255,255,252,31,249,86,244,47,208,0,16,47,192,0,0,47,192,0,0,31,224,0,0,11,254,149,0,1,255,254,0,2,255,254,0,31,249,84,0,63,192,0,0,127,128,0,0,127,64,0,0,127,128,0,0,63,224,0,24,47,255,255,248,11,255,255,248,1,255,255,224,0,1,84,0, + // 0x03b6 ζ + 15,36,144,17,2,248,21,85,85,84,63,255,255,248,63,255,255,248,42,169,95,244,0,0,31,224,0,0,127,192,0,0,255,0,0,3,253,0,0,11,248,0,0,31,224,0,0,63,192,0,0,255,64,0,2,254,0,0,7,252,0,0,15,240,0,0,47,208,0,0,63,192,0,0,127,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,0,191,208,0,0,63,249,0,0,31,255,248,0,7,255,255,192,0,111,255,240,0,1,191,244,0,0,11,248,0,0,3,248,0,0,3,244,0,0,7,240,0,0,15,240,0,0,31,208,0,0,5,64, + // 0x03b7 η + 17,29,145,22,3,247,84,1,170,64,0,252,47,255,240,0,253,191,255,252,0,255,254,91,254,0,255,224,1,255,0,255,128,0,255,64,255,64,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,255,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,42,64, + // 0x03b8 θ + 18,29,145,22,2,255,0,5,148,0,0,0,127,255,128,0,2,255,255,240,0,11,254,175,252,0,31,240,2,254,0,47,192,0,191,0,63,128,0,63,128,127,64,0,63,192,191,0,0,47,192,255,0,0,31,208,255,0,0,31,208,255,0,0,31,224,255,85,85,95,224,255,255,255,255,224,255,255,255,255,224,255,170,170,175,224,255,0,0,15,224,255,0,0,31,224,255,0,0,31,208,191,0,0,31,208,191,0,0,47,192,63,64,0,63,192,63,192,0,127,128,47,208,0,255,0,15,244,2,254,0,7,255,175,252,0,1,255,255,240,0,0,47,255,128,0,0,0,80,0,0, + // 0x03b9 ι + 9,21,63,13,3,255,85,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,255,0,0,255,0,0,255,64,0,127,255,192,63,255,192,11,255,192,0,84,0, + // 0x03ba κ + 17,20,100,20,3,0,85,0,0,85,0,255,0,3,254,0,255,0,11,248,0,255,0,31,240,0,255,0,127,192,0,255,0,255,0,0,255,3,253,0,0,255,15,244,0,0,255,47,224,0,0,255,191,192,0,0,255,255,240,0,0,255,255,248,0,0,255,211,253,0,0,255,1,255,0,0,255,0,191,192,0,255,0,63,224,0,255,0,15,244,0,255,0,7,252,0,255,0,2,255,0,255,0,0,255,128, + // 0x03bb λ + 20,29,145,19,0,255,89,64,0,0,0,255,248,0,0,0,255,255,0,0,0,170,255,192,0,0,0,63,208,0,0,0,15,240,0,0,0,11,244,0,0,0,3,248,0,0,0,3,252,0,0,0,3,253,0,0,0,7,255,0,0,0,15,255,0,0,0,15,255,128,0,0,31,175,192,0,0,63,95,208,0,0,63,15,224,0,0,191,11,240,0,0,254,7,244,0,1,253,3,252,0,2,252,2,252,0,3,248,1,254,0,7,244,0,255,0,15,240,0,191,64,15,240,0,63,128,47,208,0,63,192,63,192,0,47,253,63,192,0,15,253,191,128,0,7,253,0,0,0,0,80, + // 0x03bc μ + 19,29,145,23,3,247,85,0,0,21,64,255,0,0,63,128,255,0,0,63,128,255,0,0,63,128,255,0,0,63,128,255,0,0,63,128,255,0,0,63,128,255,0,0,63,128,255,0,0,63,128,255,0,0,63,128,255,0,0,63,128,255,0,0,63,128,255,0,0,127,128,255,0,0,191,128,255,0,0,255,128,255,64,1,255,128,255,208,7,255,192,255,255,255,255,252,255,255,255,31,252,254,127,248,11,252,254,1,64,0,80,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,170,0,0,0,0, + // 0x03bd ν + 18,20,100,19,0,0,85,0,0,5,80,191,0,0,15,240,127,128,0,15,240,63,192,0,15,240,47,192,0,15,240,31,224,0,15,224,15,240,0,15,224,11,240,0,31,208,3,248,0,47,192,3,252,0,63,192,1,252,0,63,128,0,254,0,127,0,0,255,0,255,0,0,127,1,253,0,0,63,131,252,0,0,47,203,240,0,0,31,239,224,0,0,15,255,192,0,0,11,255,0,0,0,7,252,0,0, + // 0x03be ξ + 15,36,144,18,2,248,21,85,85,84,63,255,255,252,63,255,255,252,41,191,233,84,1,253,0,0,15,224,0,0,31,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,47,208,0,0,15,248,0,0,7,255,255,240,0,127,255,244,1,255,255,244,15,253,0,0,63,208,0,0,127,128,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,0,191,192,0,0,63,249,0,0,31,255,248,0,3,255,255,192,0,111,255,240,0,1,191,248,0,0,11,248,0,0,3,248,0,0,3,248,0,0,7,244,0,0,15,240,0,0,15,208,0,0,5,64, + // 0x03bf ο + 18,21,105,22,2,255,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x03c0 π + 24,21,126,25,0,255,21,85,85,85,85,84,127,255,255,255,255,254,127,255,255,255,255,254,42,191,170,170,255,169,0,127,64,0,254,0,0,127,64,0,254,0,0,127,64,0,254,0,0,127,64,0,254,0,0,127,64,0,254,0,0,127,64,0,254,0,0,127,64,0,254,0,0,127,64,0,254,0,0,127,64,0,254,0,0,127,64,0,254,0,0,127,64,0,254,0,0,127,64,0,255,0,0,127,64,0,255,0,0,127,64,0,255,236,0,127,64,0,127,252,0,127,64,0,31,252,0,0,0,0,1,64, + // 0x03c1 ρ + 18,29,145,22,2,247,0,6,169,0,0,0,191,255,224,0,3,255,255,252,0,15,254,91,255,0,31,240,0,255,128,63,192,0,63,192,63,192,0,47,208,127,128,0,31,224,127,64,0,15,240,191,64,0,15,240,191,64,0,15,240,191,64,0,15,240,191,64,0,15,240,191,64,0,31,224,191,64,0,47,208,191,64,0,127,192,191,224,1,255,64,191,255,255,254,0,191,255,255,248,0,191,31,255,144,0,191,0,84,0,0,191,0,0,0,0,191,0,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,106,0,0,0,0, + // 0x03c2 ς + 15,28,112,18,2,248,0,6,170,64,0,191,255,244,7,255,255,240,15,254,155,224,63,224,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,0,191,192,0,0,63,224,0,0,47,253,0,0,11,255,248,0,2,255,255,128,0,47,255,240,0,1,191,244,0,0,11,248,0,0,3,248,0,0,3,244,0,0,7,240,0,0,15,240,0,0,31,208,0,0,5,64, + // 0x03c3 σ + 20,21,105,23,2,255,0,0,85,85,84,0,111,255,255,253,2,255,255,255,253,15,255,170,254,168,47,244,0,254,0,63,192,0,127,64,191,128,0,63,192,255,0,0,47,192,255,0,0,31,208,255,0,0,15,224,255,0,0,15,224,255,0,0,15,224,255,0,0,31,224,255,0,0,47,208,191,64,0,63,192,63,192,0,191,128,47,240,2,255,0,15,255,255,253,0,3,255,255,244,0,0,127,255,128,0,0,1,80,0,0, + // 0x03c4 τ + 17,21,105,18,0,255,21,85,85,85,64,127,255,255,255,192,127,255,255,255,192,42,175,250,170,64,0,15,224,0,0,0,15,224,0,0,0,15,224,0,0,0,15,224,0,0,0,15,224,0,0,0,15,224,0,0,0,15,224,0,0,0,15,224,0,0,0,15,224,0,0,0,15,224,0,0,0,15,224,0,0,0,15,240,0,0,0,15,244,0,0,0,11,255,175,0,0,3,255,255,0,0,0,191,255,0,0,0,5,80,0, + // 0x03c5 υ + 17,21,105,22,3,255,85,0,0,84,0,254,0,1,254,0,254,0,0,255,0,254,0,0,255,0,254,0,0,191,0,254,0,0,191,64,254,0,0,127,64,254,0,0,127,64,254,0,0,127,128,254,0,0,127,128,254,0,0,127,64,254,0,0,127,64,254,0,0,191,64,254,0,0,255,0,255,0,0,255,0,255,64,2,253,0,127,192,11,252,0,63,255,255,244,0,31,255,255,208,0,2,255,254,0,0,0,5,64,0,0, + // 0x03c6 φ + 23,37,222,27,2,247,0,0,5,64,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,1,111,229,0,0,0,47,255,255,224,0,2,255,255,255,253,0,11,255,175,235,255,128,47,244,31,208,127,208,63,192,31,208,31,240,191,128,31,208,11,248,255,0,31,208,3,252,255,0,31,208,3,252,255,0,31,208,3,252,255,0,31,208,2,252,255,0,31,208,3,252,255,0,31,208,3,252,191,64,31,208,7,248,127,192,31,208,11,244,63,224,31,208,47,240,15,248,31,208,191,192,3,255,255,255,255,64,0,191,255,255,252,0,0,11,255,255,144,0,0,0,31,224,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,31,208,0,0,0,0,10,128,0,0, + // 0x03c7 χ + 21,29,174,22,1,247,101,0,0,0,21,0,255,192,0,0,255,0,255,224,0,1,253,0,175,244,0,3,252,0,3,252,0,11,244,0,2,253,0,15,224,0,0,255,0,47,192,0,0,191,64,63,128,0,0,63,192,191,0,0,0,47,209,253,0,0,0,15,243,252,0,0,0,11,251,240,0,0,0,3,255,224,0,0,0,2,255,192,0,0,0,0,255,64,0,0,0,0,255,0,0,0,0,3,255,128,0,0,0,7,255,192,0,0,0,15,255,224,0,0,0,47,207,240,0,0,0,127,71,248,0,0,0,255,3,252,0,0,2,252,1,254,0,0,3,248,0,255,0,0,15,240,0,127,192,0,31,208,0,63,250,64,63,192,0,15,255,128,191,0,0,7,255,128,169,0,0,0,105,0, + // 0x03c8 ψ + 23,37,222,28,3,247,0,0,21,64,0,0,0,0,63,128,0,0,0,0,63,128,0,0,0,0,63,128,0,0,0,0,63,128,0,0,0,0,63,128,0,0,0,0,63,128,0,0,0,0,63,128,0,0,84,0,63,128,5,64,253,0,63,128,31,208,253,0,63,128,15,224,253,0,63,128,15,240,253,0,63,128,11,240,253,0,63,128,11,240,253,0,63,128,7,240,253,0,63,128,7,244,253,0,63,128,7,244,253,0,63,128,3,244,253,0,63,128,7,244,254,0,63,128,7,244,254,0,63,128,7,240,255,0,63,128,15,240,191,0,63,128,15,224,127,128,63,128,63,208,63,244,63,130,255,128,15,255,255,255,255,0,3,255,255,255,248,0,0,111,255,255,128,0,0,0,127,192,0,0,0,0,63,128,0,0,0,0,63,128,0,0,0,0,63,128,0,0,0,0,63,128,0,0,0,0,63,128,0,0,0,0,63,128,0,0,0,0,63,128,0,0,0,0,42,64,0,0, + // 0x03c9 ω + 26,21,147,29,2,255,1,84,0,0,1,80,0,3,248,0,0,3,248,0,15,240,0,0,1,253,0,31,208,0,0,0,255,0,47,192,0,0,0,127,64,63,128,0,0,0,63,128,127,64,0,0,0,63,192,191,0,3,248,0,47,192,191,0,3,248,0,47,192,191,0,3,248,0,47,192,191,0,3,248,0,31,208,191,0,3,248,0,31,192,191,0,3,248,0,47,192,191,0,3,248,0,47,192,127,64,7,252,0,63,192,63,192,11,252,0,127,64,47,224,31,190,1,255,0,15,255,255,47,255,253,0,3,255,254,15,255,248,0,0,191,248,3,255,208,0,0,5,0,0,20,0,0, + // 0x03ca ϊ + 255, + // 0x03cb ϋ + 255, + // 0x03cc ό + 18,29,145,22,2,255,0,0,31,240,0,0,0,47,224,0,0,0,63,192,0,0,0,127,64,0,0,0,190,0,0,0,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x03cd ύ + 17,29,145,22,3,255,0,0,255,128,0,0,0,255,0,0,0,2,253,0,0,0,3,248,0,0,0,3,240,0,0,0,7,208,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,84,0,254,0,1,254,0,254,0,0,255,0,254,0,0,255,0,254,0,0,191,0,254,0,0,191,64,254,0,0,127,64,254,0,0,127,64,254,0,0,127,128,254,0,0,127,128,254,0,0,127,64,254,0,0,127,64,254,0,0,191,64,254,0,0,255,0,255,0,0,255,0,255,64,2,253,0,127,192,11,252,0,63,255,255,244,0,31,255,255,208,0,2,255,254,0,0,0,5,64,0,0, + // 0x03ce ώ + 26,29,203,29,2,255,0,0,0,47,240,0,0,0,0,0,63,208,0,0,0,0,0,63,128,0,0,0,0,0,191,0,0,0,0,0,0,253,0,0,0,0,0,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,84,0,0,1,80,0,3,248,0,0,3,248,0,15,240,0,0,1,253,0,31,208,0,0,0,255,0,47,192,0,0,0,127,64,63,128,0,0,0,63,128,127,64,0,0,0,63,192,191,0,3,248,0,47,192,191,0,3,248,0,47,192,191,0,3,248,0,47,192,191,0,3,248,0,31,208,191,0,3,248,0,31,192,191,0,3,248,0,47,192,191,0,3,248,0,47,192,127,64,7,252,0,63,192,63,192,11,252,0,127,64,47,224,31,190,1,255,0,15,255,255,47,255,253,0,3,255,254,15,255,248,0,0,191,248,3,255,208,0,0,5,0,0,20,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Katakana_26.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Katakana_26.cpp new file mode 100644 index 0000000000..8683316b67 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Katakana_26.cpp @@ -0,0 +1,238 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Katakana 36pt, capital 'A' height: 26px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 +extern const uint8_t NotoSans_Medium_Katakana_26[14440] = { + 162,26,160,48,104,136,34,247, // unifont_t + // 0x30a0 ゠ + 160,48,16,8,32,36,10,10,85,85,85,85,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,85,85,85,85, + // 0x30a1 ァ + 161,48,26,25,175,36,6,252,85,85,85,85,85,85,0,255,255,255,255,255,255,128,255,255,255,255,255,255,208,255,255,255,255,255,255,128,0,0,0,0,0,255,0,0,0,0,0,2,253,0,0,0,31,192,11,248,0,0,0,47,208,31,240,0,0,0,31,192,127,192,0,0,0,31,194,255,64,0,0,0,31,195,253,0,0,0,0,47,192,180,0,0,0,0,47,192,0,0,0,0,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,191,0,0,0,0,0,0,255,0,0,0,0,0,2,253,0,0,0,0,0,11,252,0,0,0,0,0,47,244,0,0,0,0,0,255,224,0,0,0,0,11,255,128,0,0,0,0,7,253,0,0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30a2 ア + 162,48,30,29,232,36,4,254,191,255,255,255,255,255,255,64,191,255,255,255,255,255,255,208,191,255,255,255,255,255,255,208,106,85,85,85,85,85,255,128,0,0,0,0,0,1,255,0,0,0,0,0,0,3,253,0,0,0,0,0,0,15,248,0,0,0,2,253,0,47,240,0,0,0,2,253,0,191,192,0,0,0,2,253,2,255,64,0,0,0,2,252,31,253,0,0,0,0,2,252,47,244,0,0,0,0,2,252,11,208,0,0,0,0,2,252,1,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,63,208,0,0,0,0,0,0,191,192,0,0,0,0,0,2,255,64,0,0,0,0,0,11,254,0,0,0,0,0,0,127,252,0,0,0,0,0,6,255,240,0,0,0,0,0,7,255,128,0,0,0,0,0,0,253,0,0,0,0,0,0,0,32,0,0,0,0,0,0, + // 0x30a3 ィ + 163,48,25,25,175,36,4,253,0,0,0,0,0,60,0,0,0,0,0,0,255,0,0,0,0,0,3,255,64,0,0,0,0,15,253,0,0,0,0,0,127,244,0,0,0,0,2,255,192,0,0,0,0,31,254,0,0,0,0,0,191,244,0,0,0,0,11,255,192,0,0,0,0,191,255,128,0,0,0,27,255,255,128,0,0,6,255,255,191,128,0,0,191,255,228,127,128,0,0,127,254,0,127,128,0,0,63,144,0,127,128,0,0,4,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0, + // 0x30a4 イ + 164,48,28,30,210,36,3,255,0,0,0,0,0,0,32,0,0,0,0,0,0,252,0,0,0,0,0,3,255,0,0,0,0,0,15,255,0,0,0,0,0,63,248,0,0,0,0,1,255,224,0,0,0,0,7,255,128,0,0,0,0,63,253,0,0,0,0,1,255,240,0,0,0,0,31,255,128,0,0,0,0,191,253,0,0,0,0,27,255,252,0,0,0,1,255,255,252,0,0,0,47,255,251,252,0,0,27,255,255,67,252,0,0,255,255,244,3,252,0,0,191,254,0,3,252,0,0,63,144,0,3,252,0,0,36,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,7,252,0,0,0,0,0,7,252,0,0,0,0,0,7,252,0,0, + // 0x30a5 ゥ + 165,48,24,27,162,36,6,252,0,0,15,240,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,21,85,95,229,85,80,191,255,255,255,255,254,127,255,255,255,255,255,127,255,255,255,255,255,127,0,0,0,1,254,127,0,0,0,1,254,127,0,0,0,2,253,127,0,0,0,3,252,127,0,0,0,3,252,127,0,0,0,11,244,127,0,0,0,15,240,0,0,0,0,47,224,0,0,0,0,127,192,0,0,0,0,255,128,0,0,0,3,255,0,0,0,0,31,253,0,0,0,0,191,244,0,0,0,27,255,208,0,0,6,255,255,0,0,0,15,255,244,0,0,0,3,255,128,0,0,0,0,228,0,0,0,0,0,0,0,0,0, + // 0x30a6 ウ + 166,48,28,32,224,36,4,254,0,0,1,254,0,0,0,0,0,1,255,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,85,85,85,255,85,85,96,127,255,255,255,255,255,254,127,255,255,255,255,255,255,127,255,255,255,255,255,254,127,64,0,0,0,2,254,127,64,0,0,0,3,253,127,64,0,0,0,3,252,127,64,0,0,0,7,252,127,64,0,0,0,11,248,127,64,0,0,0,15,244,127,64,0,0,0,15,240,127,64,0,0,0,47,224,21,0,0,0,0,63,208,0,0,0,0,0,191,192,0,0,0,0,0,255,64,0,0,0,0,3,255,0,0,0,0,0,15,252,0,0,0,0,0,63,244,0,0,0,0,1,255,224,0,0,0,0,11,255,128,0,0,0,0,191,254,0,0,0,0,27,255,244,0,0,0,3,255,255,128,0,0,0,1,255,253,0,0,0,0,0,127,144,0,0,0,0,0,20,0,0,0,0, + // 0x30a7 ェ + 167,48,26,21,147,36,5,255,5,85,85,85,85,85,0,15,255,255,255,255,255,0,15,255,255,255,255,255,0,15,255,255,255,255,255,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,191,255,255,255,255,255,224,191,255,255,255,255,255,224,191,255,255,255,255,255,224,105,85,85,85,85,85,144, + // 0x30a8 エ + 168,48,30,24,192,36,3,1,15,255,255,255,255,255,255,0,15,255,255,255,255,255,255,0,15,255,255,255,255,255,255,0,10,170,170,191,234,170,170,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,254,170,170,170,170,170,170,240, + // 0x30a9 ォ + 169,48,25,26,182,36,6,253,0,0,0,10,160,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,11,224,0,0,0,0,0,11,224,0,0,21,0,0,11,224,1,64,63,255,255,255,255,255,192,63,255,255,255,255,255,192,63,255,255,255,255,255,192,0,0,0,191,240,0,0,0,0,1,255,240,0,0,0,0,3,255,240,0,0,0,0,15,255,240,0,0,0,0,63,231,240,0,0,0,0,255,135,240,0,0,0,7,255,7,240,0,0,0,47,252,7,240,0,0,0,255,240,7,240,0,0,7,255,128,7,240,0,0,127,253,0,7,240,0,0,255,244,0,7,240,0,0,63,128,0,7,240,0,0,13,0,21,11,240,0,0,0,0,47,255,240,0,0,0,0,47,255,224,0,0,0,0,31,255,128,0,0, + // 0x30aa オ + 170,48,30,31,248,36,3,254,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,26,85,85,85,127,213,86,144,47,255,255,255,255,255,255,208,47,255,255,255,255,255,255,208,47,255,255,255,255,255,255,208,0,0,0,1,255,192,0,0,0,0,0,3,255,192,0,0,0,0,0,15,255,192,0,0,0,0,0,63,255,192,0,0,0,0,0,255,223,192,0,0,0,0,3,255,31,192,0,0,0,0,15,252,31,192,0,0,0,0,63,240,31,192,0,0,0,1,255,192,31,192,0,0,0,11,255,0,31,192,0,0,0,47,252,0,31,192,0,0,1,255,240,0,31,192,0,0,31,255,128,0,31,208,0,0,191,253,0,0,31,208,0,0,191,240,0,0,31,208,0,0,63,64,0,0,31,208,0,0,8,0,0,64,47,208,0,0,0,0,2,255,255,208,0,0,0,0,1,255,255,192,0,0,0,0,1,255,255,64,0,0,0,0,0,85,100,0,0,0, + // 0x30ab カ + 171,48,27,31,217,36,4,254,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,101,85,91,249,85,86,128,191,255,255,255,255,255,248,191,255,255,255,255,255,252,191,255,255,255,255,255,252,0,0,15,240,0,3,252,0,0,15,224,0,3,248,0,0,31,208,0,3,248,0,0,31,208,0,3,248,0,0,47,192,0,3,248,0,0,63,192,0,3,244,0,0,127,128,0,3,244,0,0,191,0,0,3,244,0,0,255,0,0,7,244,0,2,254,0,0,7,240,0,7,252,0,0,11,240,0,15,248,0,0,11,240,0,47,240,0,0,15,240,0,191,208,0,0,15,224,2,255,128,0,0,31,208,11,255,0,5,0,127,192,63,252,0,11,255,255,192,255,240,0,11,255,255,64,63,128,0,7,255,254,0,14,0,0,1,90,160,0,0,0,0,0,0,0,0, + // 0x30ac ガ + 172,48,31,33,8,36,3,254,0,0,0,0,0,0,1,64,0,0,0,0,0,0,11,192,0,0,3,252,0,7,195,240,0,0,3,252,0,11,209,244,0,0,3,252,0,3,240,252,0,0,3,248,0,1,244,124,0,0,3,248,0,0,252,0,0,0,3,248,0,0,116,0,0,0,3,248,0,0,0,0,127,255,255,255,255,255,244,0,127,255,255,255,255,255,253,0,127,255,255,255,255,255,252,0,37,85,91,245,85,87,252,0,0,0,11,240,0,2,252,0,0,0,15,240,0,2,252,0,0,0,15,224,0,2,252,0,0,0,31,208,0,2,252,0,0,0,47,192,0,3,252,0,0,0,63,192,0,3,248,0,0,0,127,128,0,3,248,0,0,0,191,64,0,3,248,0,0,0,255,0,0,3,244,0,0,3,254,0,0,7,244,0,0,7,252,0,0,7,240,0,0,15,248,0,0,11,240,0,0,63,240,0,0,15,240,0,0,255,192,0,0,15,240,0,3,255,64,0,0,47,224,0,31,254,0,7,234,255,208,0,191,248,0,7,255,255,192,0,127,224,0,7,255,255,64,0,15,64,0,3,255,249,0,0,0,0,0,0,0,0,0,0, + // 0x30ad キ + 173,48,29,31,248,36,4,254,0,0,27,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,47,208,0,0,0,0,0,0,31,224,0,0,0,0,0,0,15,224,0,1,128,0,0,0,15,240,22,255,192,0,0,0,11,255,255,255,192,0,0,90,255,255,255,255,208,0,255,255,255,255,255,229,0,0,255,255,255,254,64,0,0,0,255,255,151,252,0,0,0,0,185,64,2,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,254,0,0,27,0,0,0,0,255,1,175,255,0,0,0,0,255,255,255,255,64,0,1,175,255,255,255,255,64,107,255,255,255,255,250,80,0,255,255,255,255,228,0,0,0,255,255,249,127,192,0,0,0,255,164,0,63,192,0,0,0,80,0,0,47,192,0,0,0,0,0,0,31,208,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,11,244,0,0,0,0,0,0,11,248,0,0,0,0,0,0,7,252,0,0,0,0,0,0,2,64,0,0,0, + // 0x30ae ギ + 174,48,31,33,8,36,3,254,0,0,0,0,0,0,11,192,0,0,0,0,0,2,71,224,0,0,1,144,0,15,195,240,0,0,47,224,0,3,224,248,0,0,15,224,0,2,244,184,0,0,15,240,0,0,252,0,0,0,11,240,0,0,164,0,0,0,11,240,1,111,208,0,0,0,7,250,255,255,208,0,0,1,175,255,255,255,224,0,171,255,255,255,255,254,144,0,255,255,255,255,229,0,0,0,191,255,251,252,0,0,0,0,127,164,1,253,0,0,0,0,16,0,0,254,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,1,0,0,0,0,191,0,22,255,64,0,0,0,127,175,255,255,128,0,0,22,255,255,255,255,192,5,175,255,255,255,255,229,0,255,255,255,255,250,64,0,0,191,255,255,191,192,0,0,0,127,250,64,31,208,0,0,0,37,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,248,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,228,0,0,0, + // 0x30af ク + 175,48,29,33,8,36,3,253,0,0,0,116,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,255,64,0,0,0,0,0,2,254,0,0,0,0,0,0,7,252,0,0,0,0,0,0,15,252,0,1,96,0,0,0,31,255,255,255,254,0,0,0,63,255,255,255,255,128,0,0,255,255,255,255,255,0,0,2,255,0,0,2,255,0,0,11,252,0,0,3,253,0,0,47,244,0,0,3,252,0,0,191,224,0,0,11,252,0,3,255,128,0,0,15,244,0,31,254,0,0,0,31,240,0,191,244,0,0,0,63,208,0,47,208,0,0,0,191,192,0,7,0,0,0,0,255,64,0,0,0,0,0,3,255,0,0,0,0,0,0,11,252,0,0,0,0,0,0,31,244,0,0,0,0,0,0,127,224,0,0,0,0,0,1,255,192,0,0,0,0,0,11,255,0,0,0,0,0,0,63,252,0,0,0,0,0,1,255,240,0,0,0,0,0,31,255,192,0,0,0,0,1,255,254,0,0,0,0,0,111,255,240,0,0,0,0,0,191,255,64,0,0,0,0,0,47,248,0,0,0,0,0,0,11,64,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30b0 グ + 176,48,33,34,50,36,2,253,0,0,0,0,0,0,0,244,0,0,0,0,0,0,0,32,252,0,0,0,0,228,0,1,244,126,0,0,0,0,255,64,0,252,63,0,0,0,2,255,0,0,126,31,128,0,0,3,253,0,0,63,9,0,0,0,11,252,0,0,31,64,0,0,0,15,248,0,1,104,0,0,0,0,63,255,255,255,253,0,0,0,0,191,255,255,255,255,64,0,0,1,255,255,255,255,255,0,0,0,3,254,0,0,3,253,0,0,0,15,252,0,0,3,252,0,0,0,63,240,0,0,7,252,0,0,0,255,192,0,0,15,244,0,0,7,255,64,0,0,31,240,0,0,47,252,0,0,0,47,224,0,0,255,240,0,0,0,127,192,0,0,63,192,0,0,0,255,128,0,0,10,0,0,0,1,255,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,255,208,0,0,0,0,0,0,2,255,128,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,127,248,0,0,0,0,0,0,2,255,224,0,0,0,0,0,0,47,255,64,0,0,0,0,0,2,255,253,0,0,0,0,0,0,127,255,224,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,63,228,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0, + // 0x30b1 ケ + 177,48,31,32,0,36,2,254,0,0,16,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,2,254,0,0,0,0,0,0,3,254,170,170,170,170,168,0,7,255,255,255,255,255,252,0,15,255,255,255,255,255,252,0,47,255,255,255,255,255,252,0,127,192,0,15,240,0,0,0,255,128,0,15,224,0,0,3,255,0,0,31,224,0,0,11,253,0,0,31,224,0,0,47,248,0,0,47,208,0,0,191,240,0,0,63,192,0,0,47,192,0,0,63,192,0,0,2,0,0,0,127,128,0,0,0,0,0,0,255,64,0,0,0,0,0,1,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,7,252,0,0,0,0,0,0,15,248,0,0,0,0,0,0,63,240,0,0,0,0,0,0,255,208,0,0,0,0,0,3,255,128,0,0,0,0,0,15,255,0,0,0,0,0,0,191,252,0,0,0,0,0,1,255,224,0,0,0,0,0,0,47,128,0,0,0,0,0,0,5,0,0,0,0,0, + // 0x30b2 ゲ + 178,48,33,34,50,36,2,253,0,0,0,0,0,0,0,176,0,0,0,0,0,0,0,17,248,0,0,0,101,0,0,1,240,188,0,0,0,191,192,0,0,252,63,0,0,0,255,64,0,0,189,47,64,0,0,255,0,0,0,63,13,0,0,1,254,0,0,0,31,0,0,0,3,253,0,0,0,4,0,0,0,3,252,0,0,0,0,0,0,0,11,255,255,255,255,255,248,0,0,15,255,255,255,255,255,248,0,0,63,255,255,255,255,255,248,0,0,127,234,170,191,250,170,164,0,0,255,64,0,47,208,0,0,0,3,255,0,0,47,208,0,0,0,11,252,0,0,63,192,0,0,0,47,248,0,0,63,192,0,0,0,191,240,0,0,63,192,0,0,0,255,192,0,0,127,128,0,0,0,31,0,0,0,191,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,191,208,0,0,0,0,0,0,2,255,192,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,63,253,0,0,0,0,0,0,2,255,244,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0, + // 0x30b3 コ + 179,48,26,27,189,36,5,255,58,170,170,170,170,170,160,63,255,255,255,255,255,240,63,255,255,255,255,255,240,63,255,255,255,255,255,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,234,170,170,170,191,240,0,0,0,0,0,15,240,0,0,0,0,0,10,160, + // 0x30b4 ゴ + 180,48,29,34,16,36,5,254,0,0,0,0,0,0,20,0,0,0,0,0,0,16,252,0,0,0,0,0,1,244,126,0,0,0,0,0,0,252,63,0,0,0,0,0,0,189,15,128,0,0,0,0,0,63,11,128,0,0,0,0,0,47,64,0,0,0,0,0,0,8,0,0,255,255,255,255,255,255,192,0,255,255,255,255,255,255,192,0,255,255,255,255,255,255,192,0,170,170,170,170,170,191,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,255,255,255,255,255,255,192,0,255,255,255,255,255,255,192,0,255,255,255,255,255,255,192,0,254,170,170,170,170,191,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,42,128,0, + // 0x30b5 サ + 181,48,32,32,0,36,2,253,0,1,168,0,0,127,128,0,0,2,253,0,0,127,64,0,0,2,252,0,0,127,64,0,0,1,252,0,0,127,64,0,0,1,252,0,0,127,64,0,0,1,252,0,0,127,64,0,0,1,252,0,0,127,64,0,170,86,254,85,85,191,149,168,191,255,255,255,255,255,255,253,191,255,255,255,255,255,255,253,191,255,255,255,255,255,255,253,0,1,252,0,0,127,64,0,0,1,252,0,0,127,64,0,0,1,252,0,0,127,64,0,0,1,252,0,0,127,64,0,0,1,252,0,0,127,0,0,0,1,252,0,0,191,0,0,0,2,252,0,0,191,0,0,0,2,252,0,0,255,0,0,0,2,253,0,0,254,0,0,0,0,0,0,2,253,0,0,0,0,0,0,3,252,0,0,0,0,0,0,7,252,0,0,0,0,0,0,15,244,0,0,0,0,0,0,63,240,0,0,0,0,0,1,255,192,0,0,0,0,0,11,255,64,0,0,0,0,0,191,253,0,0,0,0,0,3,255,240,0,0,0,0,0,0,191,128,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30b6 ザ + 182,48,34,33,41,36,1,253,0,0,0,0,0,0,0,6,0,0,0,85,0,0,42,129,15,0,0,0,254,0,0,63,207,75,128,0,0,254,0,0,63,199,199,192,0,0,254,0,0,63,131,211,208,0,0,254,0,0,63,130,226,208,0,0,254,0,0,63,129,224,0,0,0,254,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,127,255,255,255,255,255,255,254,0,127,255,255,255,255,255,255,254,0,127,255,255,255,255,255,255,254,0,42,150,255,85,85,127,213,169,0,0,0,254,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,0,254,0,0,127,64,0,0,0,0,254,0,0,127,64,0,0,0,0,254,0,0,191,0,0,0,0,0,169,0,0,255,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,127,240,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,31,255,64,0,0,0,0,0,1,255,253,0,0,0,0,0,0,0,255,240,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,4,0,0,0,0,0, + // 0x30b7 シ + 183,48,30,29,232,36,3,255,0,2,208,0,0,0,0,0,0,7,252,0,0,0,0,0,0,15,255,128,0,0,0,0,0,2,255,240,0,0,0,0,0,0,127,253,0,0,0,0,0,0,11,253,0,0,0,0,0,0,1,248,0,0,0,0,0,0,0,32,0,0,0,0,14,0,0,0,0,0,1,64,47,208,0,0,0,0,3,192,127,252,0,0,0,0,15,208,47,255,128,0,0,0,47,240,2,255,240,0,0,0,127,208,0,127,240,0,0,1,255,128,0,11,208,0,0,3,255,0,0,1,128,0,0,31,252,0,0,0,0,0,0,127,240,0,0,0,0,0,2,255,192,0,0,0,0,0,11,255,64,0,0,0,0,0,127,252,0,0,0,0,0,2,255,240,0,0,0,0,0,31,255,128,0,0,0,0,2,255,253,0,0,0,0,0,111,255,224,0,0,0,0,31,255,255,64,0,0,0,11,255,255,244,0,0,0,0,7,255,254,64,0,0,0,0,2,255,208,0,0,0,0,0,0,228,0,0,0,0,0,0, + // 0x30b8 ジ + 184,48,31,31,248,36,3,255,0,0,0,0,0,0,1,0,0,0,0,0,0,0,31,64,0,3,192,0,0,8,15,192,0,11,248,0,0,63,7,240,0,31,255,0,0,47,66,244,0,7,255,224,0,15,192,252,0,0,191,252,0,7,224,180,0,0,31,252,0,3,240,0,0,0,2,244,0,1,128,0,0,0,0,96,0,0,0,0,29,0,0,0,0,0,2,0,63,192,0,0,0,0,11,64,191,248,0,0,0,0,31,192,63,255,64,0,0,0,63,224,7,255,224,0,0,0,255,192,0,191,224,0,0,2,255,64,0,31,192,0,0,11,254,0,0,2,64,0,0,47,248,0,0,0,0,0,0,191,224,0,0,0,0,0,3,255,128,0,0,0,0,0,31,254,0,0,0,0,0,0,191,248,0,0,0,0,0,7,255,208,0,0,0,0,0,47,255,64,0,0,0,0,6,255,248,0,0,0,0,0,191,255,208,0,0,0,0,111,255,254,0,0,0,0,15,255,255,224,0,0,0,0,15,255,254,0,0,0,0,0,3,255,144,0,0,0,0,0,2,228,0,0,0,0,0,0, + // 0x30b9 ス + 185,48,30,29,232,36,3,254,0,0,0,0,0,1,0,0,1,255,255,255,255,255,208,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,224,0,1,234,170,170,170,191,192,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,64,0,0,0,0,0,2,255,0,0,0,0,0,0,3,253,0,0,0,0,0,0,11,248,0,0,0,0,0,0,15,240,0,0,0,0,0,0,63,208,0,0,0,0,0,0,191,192,0,0,0,0,0,1,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,15,255,64,0,0,0,0,0,63,255,208,0,0,0,0,0,255,255,244,0,0,0,0,7,255,15,253,0,0,0,0,31,252,7,255,64,0,0,0,191,240,1,255,208,0,0,7,255,192,0,127,240,0,0,47,254,0,0,31,252,0,1,255,248,0,0,7,255,0,47,255,208,0,0,2,255,192,127,254,0,0,0,0,191,208,47,244,0,0,0,0,63,128,11,64,0,0,0,0,13,0,0,0,0,0,0,0,0,0, + // 0x30ba ズ + 186,48,32,35,24,36,3,253,0,0,0,0,0,0,0,64,0,0,0,0,0,0,7,208,0,0,0,0,0,11,195,240,0,0,0,0,0,7,224,248,0,0,0,0,0,2,240,188,0,0,0,0,0,0,248,61,3,170,170,170,170,175,252,0,3,255,255,255,255,255,224,0,3,255,255,255,255,255,192,0,3,255,255,255,255,255,128,0,0,0,0,0,0,255,0,0,0,0,0,0,2,254,0,0,0,0,0,0,3,253,0,0,0,0,0,0,11,252,0,0,0,0,0,0,15,244,0,0,0,0,0,0,47,224,0,0,0,0,0,0,127,192,0,0,0,0,0,0,255,64,0,0,0,0,0,2,255,0,0,0,0,0,0,7,252,0,0,0,0,0,0,31,252,0,0,0,0,0,0,127,255,0,0,0,0,0,1,255,255,192,0,0,0,0,7,255,191,240,0,0,0,0,47,252,47,252,0,0,0,0,191,240,11,255,0,0,0,3,255,192,2,255,192,0,0,47,255,0,0,191,240,0,0,255,248,0,0,47,248,0,11,255,208,0,0,15,254,0,191,255,0,0,0,3,255,64,255,248,0,0,0,0,255,128,63,192,0,0,0,0,126,0,13,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0, + // 0x30bb セ + 187,48,30,30,240,36,2,255,0,0,127,64,0,0,0,0,0,0,191,128,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,111,128,0,0,127,64,1,175,255,240,0,0,127,70,191,255,255,240,0,0,127,255,255,255,255,208,0,111,255,255,255,249,191,128,191,255,255,255,229,0,255,0,255,255,255,228,0,2,254,0,191,255,255,64,0,3,252,0,126,64,127,64,0,15,244,0,0,0,127,64,0,47,224,0,0,0,127,64,0,127,192,0,0,0,127,64,1,255,0,0,0,0,127,64,3,253,0,0,0,0,127,64,0,120,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,128,0,0,0,0,0,0,63,192,0,0,5,64,0,0,63,254,170,175,255,128,0,0,47,255,255,255,255,128,0,0,15,255,255,255,255,64,0,0,1,191,255,255,165,0, + // 0x30bc ゼ + 188,48,34,33,41,36,1,254,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,24,63,0,0,0,0,0,0,0,125,31,64,0,0,63,192,0,0,63,15,192,0,0,63,192,0,0,31,135,208,0,0,63,192,0,0,15,194,0,0,0,63,192,0,0,7,192,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,1,64,0,0,0,63,192,0,1,191,224,0,0,0,63,192,6,255,255,248,0,0,0,63,219,255,255,255,240,0,0,0,127,255,255,255,255,224,0,5,191,255,255,255,228,63,192,0,127,255,255,255,144,0,191,64,0,127,255,255,192,0,1,255,0,0,63,249,63,192,0,3,252,0,0,41,0,63,192,0,11,248,0,0,0,0,63,192,0,47,240,0,0,0,0,63,192,0,127,192,0,0,0,0,63,192,1,255,64,0,0,0,0,63,192,0,190,0,0,0,0,0,63,192,0,24,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,47,244,0,1,107,192,0,0,0,31,255,255,255,255,192,0,0,0,15,255,255,255,255,192,0,0,0,2,255,255,255,255,192,0,0,0,0,5,105,85,64,0,0, + // 0x30bd ソ + 189,48,27,28,196,36,4,255,1,0,0,0,0,7,148,47,64,0,0,0,11,252,255,192,0,0,0,11,248,63,224,0,0,0,15,244,47,240,0,0,0,15,240,15,252,0,0,0,31,240,7,253,0,0,0,47,224,3,255,0,0,0,63,208,0,255,64,0,0,63,192,0,191,192,0,0,127,128,0,63,224,0,0,255,64,0,47,64,0,1,255,0,0,8,0,0,3,254,0,0,0,0,0,7,252,0,0,0,0,0,15,248,0,0,0,0,0,47,240,0,0,0,0,0,127,208,0,0,0,0,0,255,192,0,0,0,0,3,255,0,0,0,0,0,15,253,0,0,0,0,0,127,244,0,0,0,0,2,255,208,0,0,0,0,15,255,128,0,0,0,0,191,253,0,0,0,0,11,255,240,0,0,0,0,31,255,128,0,0,0,0,7,253,0,0,0,0,0,0,208,0,0,0,0, + // 0x30be ゾ + 190,48,31,33,8,36,3,254,0,0,0,0,0,0,2,192,0,0,0,0,0,7,11,224,0,0,0,0,0,31,195,240,0,0,0,0,0,11,209,248,0,0,0,0,0,3,240,188,1,0,0,0,0,1,244,32,31,128,0,0,0,0,144,0,127,208,0,0,0,7,228,0,63,240,0,0,0,11,252,0,15,248,0,0,0,11,248,0,11,252,0,0,0,15,244,0,3,254,0,0,0,15,240,0,1,255,64,0,0,31,224,0,0,255,192,0,0,47,208,0,0,127,208,0,0,63,192,0,0,47,240,0,0,127,192,0,0,15,128,0,0,255,64,0,0,9,0,0,1,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,11,252,0,0,0,0,0,0,15,244,0,0,0,0,0,0,63,240,0,0,0,0,0,0,191,208,0,0,0,0,0,2,255,64,0,0,0,0,0,11,254,0,0,0,0,0,0,47,252,0,0,0,0,0,1,255,240,0,0,0,0,0,11,255,192,0,0,0,0,0,127,254,0,0,0,0,0,7,255,248,0,0,0,0,0,15,255,208,0,0,0,0,0,2,254,0,0,0,0,0,0,0,160,0,0,0,0,0, + // 0x30bf タ + 191,48,29,33,8,36,3,253,0,0,0,189,0,0,0,0,0,0,0,255,64,0,0,0,0,0,1,255,0,0,0,0,0,0,3,253,0,0,0,0,0,0,11,252,0,0,16,0,0,0,15,255,255,255,253,0,0,0,63,255,255,255,255,128,0,0,191,255,255,255,255,64,0,1,255,64,0,2,255,0,0,7,253,0,0,2,254,0,0,31,248,0,0,3,252,0,0,63,240,0,0,7,252,0,1,255,192,0,0,15,244,0,11,255,1,192,0,31,240,0,63,252,7,248,0,63,208,0,255,240,15,255,64,191,192,0,63,128,3,255,224,255,64,0,9,0,0,127,255,255,0,0,0,0,0,15,255,252,0,0,0,0,0,2,255,248,0,0,0,0,0,0,127,253,0,0,0,0,0,0,255,255,128,0,0,0,0,3,255,255,224,0,0,0,0,31,253,127,240,0,0,0,0,191,244,31,192,0,0,0,3,255,208,3,64,0,0,0,47,255,0,0,0,0,0,2,255,248,0,0,0,0,0,127,255,208,0,0,0,0,1,255,254,0,0,0,0,0,0,127,224,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30c0 ダ + 192,48,33,35,59,36,2,253,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,244,0,0,0,0,16,0,0,112,252,0,0,0,0,190,64,0,248,62,0,0,0,0,255,64,0,189,47,64,0,0,2,254,0,0,63,15,64,0,0,3,252,0,0,47,68,0,0,0,15,252,0,1,110,0,0,0,0,31,255,255,255,254,0,0,0,0,63,255,255,255,255,128,0,0,0,255,255,255,255,255,0,0,0,2,255,0,0,1,255,0,0,0,7,252,0,0,3,253,0,0,0,31,244,0,0,3,252,0,0,0,127,224,0,0,11,248,0,0,2,255,128,0,0,15,244,0,0,11,254,2,208,0,47,240,0,0,63,248,11,252,0,63,208,0,0,255,224,15,255,64,191,192,0,0,47,64,2,255,240,255,64,0,0,5,0,0,127,255,254,0,0,0,0,0,0,11,255,252,0,0,0,0,0,0,1,255,248,0,0,0,0,0,0,0,191,253,0,0,0,0,0,0,1,255,255,128,0,0,0,0,0,7,255,255,240,0,0,0,0,0,47,252,127,240,0,0,0,0,0,255,240,15,192,0,0,0,0,7,255,192,3,0,0,0,0,0,127,254,0,0,0,0,0,0,6,255,248,0,0,0,0,0,0,191,255,192,0,0,0,0,0,1,255,253,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0, + // 0x30c1 チ + 193,48,30,31,248,36,3,254,0,0,0,0,0,1,0,0,0,0,0,0,1,127,192,0,0,0,0,6,191,255,224,0,3,255,255,255,255,255,240,0,3,255,255,255,255,249,0,0,2,255,255,255,228,0,0,0,0,85,80,31,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,149,85,85,111,229,85,85,96,0,0,0,47,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,128,0,0,0,0,0,0,191,64,0,0,0,0,0,0,255,0,0,0,0,0,0,2,254,0,0,0,0,0,0,7,253,0,0,0,0,0,0,31,248,0,0,0,0,0,0,127,240,0,0,0,0,0,1,255,208,0,0,0,0,0,31,255,64,0,0,0,0,0,63,253,0,0,0,0,0,0,11,240,0,0,0,0,0,0,1,128,0,0,0,0,0, + // 0x30c2 ヂ + 194,48,32,31,248,36,2,253,0,0,0,0,0,27,128,0,0,0,0,0,91,255,208,0,1,85,106,191,255,255,240,0,3,255,255,255,255,255,144,96,2,255,255,255,254,64,1,244,1,255,234,111,224,0,240,188,0,0,0,15,224,0,252,62,0,0,0,15,224,0,125,47,0,0,0,15,224,0,63,8,0,0,0,15,224,0,31,0,0,0,0,15,224,0,0,0,85,85,85,95,229,85,85,96,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,31,208,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,128,0,0,0,0,0,0,255,64,0,0,0,0,0,1,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,11,252,0,0,0,0,0,0,47,244,0,0,0,0,0,0,191,240,0,0,0,0,0,7,255,192,0,0,0,0,0,47,255,0,0,0,0,0,0,31,248,0,0,0,0,0,0,3,208,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30c3 ッ + 195,48,25,24,168,36,6,253,0,0,27,0,0,0,0,0,0,127,64,0,52,0,30,0,63,128,0,127,128,255,0,47,192,0,191,64,127,64,31,208,0,191,0,63,192,15,240,0,255,0,47,208,11,240,1,254,0,15,224,3,244,2,253,0,15,240,3,128,3,252,0,7,244,0,0,11,244,0,3,208,0,0,15,240,0,0,0,0,0,47,224,0,0,0,0,0,127,192,0,0,0,0,0,255,64,0,0,0,0,3,254,0,0,0,0,0,15,252,0,0,0,0,0,127,240,0,0,0,0,2,255,192,0,0,0,0,31,255,0,0,0,0,0,255,252,0,0,0,0,31,255,224,0,0,0,0,63,255,64,0,0,0,0,15,248,0,0,0,0,0,3,64,0,0,0,0, + // 0x30c4 ツ + 196,48,30,29,232,36,3,255,0,0,0,96,0,0,0,0,0,0,11,244,0,0,4,0,5,0,7,248,0,0,47,144,191,0,3,252,0,0,47,224,191,128,2,253,0,0,63,208,63,192,0,255,0,0,63,192,47,208,0,191,0,0,127,128,15,240,0,127,128,0,191,64,15,244,0,63,192,0,255,0,7,248,0,47,192,1,254,0,3,252,0,25,0,3,253,0,2,253,0,0,0,3,252,0,1,249,0,0,0,11,248,0,0,64,0,0,0,15,240,0,0,0,0,0,0,63,224,0,0,0,0,0,0,127,192,0,0,0,0,0,0,255,64,0,0,0,0,0,3,255,0,0,0,0,0,0,15,252,0,0,0,0,0,0,63,244,0,0,0,0,0,1,255,208,0,0,0,0,0,11,255,64,0,0,0,0,0,63,253,0,0,0,0,0,2,255,244,0,0,0,0,0,47,255,192,0,0,0,0,7,255,254,0,0,0,0,0,11,255,240,0,0,0,0,0,2,255,64,0,0,0,0,0,0,180,0,0,0,0,0, + // 0x30c5 ヅ + 197,48,33,33,41,36,2,254,0,0,0,0,0,0,1,244,0,0,0,0,0,0,2,224,252,0,0,0,0,0,0,3,240,126,0,0,0,0,0,0,0,252,63,0,0,0,0,96,0,0,189,31,64,0,0,3,248,0,0,62,4,0,2,0,3,252,0,0,16,0,0,127,128,1,253,0,0,4,0,0,63,192,0,255,0,0,47,208,0,47,208,0,191,0,0,63,208,0,15,240,0,127,128,0,63,192,0,15,244,0,63,192,0,127,192,0,7,248,0,47,208,0,191,128,0,3,252,0,31,208,0,255,0,0,2,253,0,9,0,1,255,0,0,0,255,0,0,0,3,253,0,0,0,253,0,0,0,7,252,0,0,0,64,0,0,0,15,244,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,11,253,0,0,0,0,0,0,0,47,248,0,0,0,0,0,0,0,255,224,0,0,0,0,0,0,7,255,192,0,0,0,0,0,0,47,254,0,0,0,0,0,0,1,255,248,0,0,0,0,0,0,31,255,208,0,0,0,0,0,2,255,255,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,52,0,0,0,0,0,0, + // 0x30c6 テ + 198,48,30,31,248,36,3,253,0,101,85,85,85,85,96,0,0,127,255,255,255,255,240,0,0,127,255,255,255,255,240,0,0,127,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,240,191,255,255,255,255,255,255,240,191,255,255,255,255,255,255,240,85,85,85,95,245,85,85,80,0,0,0,15,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,128,0,0,0,0,0,0,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,7,253,0,0,0,0,0,0,31,252,0,0,0,0,0,0,127,240,0,0,0,0,0,2,255,192,0,0,0,0,0,31,255,0,0,0,0,0,0,11,252,0,0,0,0,0,0,1,208,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30c7 デ + 199,48,32,35,24,36,3,253,0,0,0,0,0,0,0,80,0,0,0,0,0,0,2,240,0,0,0,0,0,1,160,252,0,0,0,0,0,2,244,189,0,0,0,0,0,0,252,63,0,255,255,255,255,253,125,31,0,255,255,255,255,253,63,0,0,255,255,255,255,253,25,0,0,85,85,85,85,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,224,255,255,255,255,255,255,255,224,255,255,255,255,255,255,255,224,165,85,85,111,229,85,85,144,0,0,0,47,208,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,128,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,11,252,0,0,0,0,0,0,31,248,0,0,0,0,0,0,127,240,0,0,0,0,0,2,255,192,0,0,0,0,0,31,255,0,0,0,0,0,0,47,252,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30c8 ト + 200,48,20,30,150,36,11,255,21,64,0,0,0,127,192,0,0,0,127,128,0,0,0,127,128,0,0,0,63,128,0,0,0,63,128,0,0,0,63,128,0,0,0,63,128,0,0,0,63,128,0,0,0,63,128,0,0,0,63,224,0,0,0,63,255,128,0,0,63,255,253,0,0,63,255,255,228,0,63,175,255,255,128,63,129,191,255,248,63,128,7,255,254,63,128,0,47,252,63,128,0,2,252,63,128,0,0,36,63,128,0,0,0,63,128,0,0,0,63,128,0,0,0,63,128,0,0,0,63,128,0,0,0,63,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,192,0,0,0,127,192,0,0,0, + // 0x30c9 ド + 201,48,22,30,180,36,10,254,85,64,0,0,44,0,191,128,0,0,190,0,127,128,0,116,63,0,127,128,0,252,31,192,127,64,0,126,11,208,127,64,0,63,67,208,127,64,0,15,193,0,127,64,0,11,128,0,127,64,0,0,0,0,127,64,0,0,0,0,127,224,0,0,0,0,127,255,128,0,0,0,127,255,253,0,0,0,127,255,255,228,0,0,127,175,255,255,128,0,127,65,191,255,248,0,127,64,7,255,253,0,127,64,0,47,252,0,127,64,0,2,248,0,127,64,0,0,32,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0, + // 0x30ca ナ + 202,48,31,31,248,36,3,254,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,191,255,255,255,255,255,255,244,191,255,255,255,255,255,255,244,191,255,255,255,255,255,255,244,106,170,170,175,250,170,170,160,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,47,208,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,0,0,0,0,0,0,3,255,0,0,0,0,0,0,11,252,0,0,0,0,0,0,47,248,0,0,0,0,0,0,191,240,0,0,0,0,0,3,255,192,0,0,0,0,0,47,255,0,0,0,0,0,0,127,252,0,0,0,0,0,0,15,224,0,0,0,0,0,0,2,64,0,0,0,0,0, + // 0x30cb ニ + 203,48,29,23,184,36,3,1,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0, + // 0x30cc ヌ + 204,48,25,30,210,36,5,253,0,0,0,0,0,20,0,47,255,255,255,255,253,0,47,255,255,255,255,255,128,47,255,255,255,255,255,64,26,170,170,170,170,255,0,0,0,0,0,2,254,0,0,0,0,0,3,253,0,0,0,0,0,3,252,0,0,0,0,0,11,248,0,0,56,0,0,15,240,0,0,255,64,0,31,224,0,2,255,240,0,63,208,0,0,127,254,0,191,192,0,0,11,255,192,255,64,0,0,1,255,251,254,0,0,0,0,47,255,252,0,0,0,0,7,255,244,0,0,0,0,0,255,248,0,0,0,0,1,255,255,0,0,0,0,7,255,255,208,0,0,0,47,253,255,244,0,0,0,255,244,47,254,0,0,7,255,208,7,255,128,0,127,255,0,1,255,64,7,255,248,0,0,126,0,191,255,208,0,0,8,0,255,254,0,0,0,0,0,63,224,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30cd ネ + 205,48,31,32,0,36,3,254,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,5,85,85,127,213,86,128,0,15,255,255,255,255,255,240,0,15,255,255,255,255,255,252,0,15,255,255,255,255,255,244,0,0,0,0,0,0,191,208,0,0,0,0,0,1,255,128,0,0,0,0,0,7,254,0,0,0,0,0,0,31,248,0,0,0,0,0,0,191,240,0,0,0,0,0,3,255,128,0,0,0,0,0,31,254,0,0,0,0,0,0,191,244,0,0,0,0,0,11,255,208,29,0,0,0,0,191,255,192,127,192,0,0,27,255,255,192,255,248,0,6,255,255,191,192,47,255,64,255,255,248,47,192,7,255,224,255,255,64,47,192,0,191,248,127,228,0,47,192,0,31,240,41,0,0,47,192,0,2,192,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0, + // 0x30ce ノ + 206,48,24,28,168,36,5,255,0,0,0,0,0,249,0,0,0,0,1,255,0,0,0,0,2,255,0,0,0,0,3,253,0,0,0,0,7,252,0,0,0,0,11,248,0,0,0,0,15,244,0,0,0,0,31,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,255,128,0,0,0,1,255,0,0,0,0,3,254,0,0,0,0,11,252,0,0,0,0,31,244,0,0,0,0,63,240,0,0,0,0,255,192,0,0,0,3,255,64,0,0,0,15,254,0,0,0,0,127,248,0,0,0,2,255,224,0,0,0,15,255,128,0,0,0,191,254,0,0,0,11,255,244,0,0,0,191,255,192,0,0,0,191,253,0,0,0,0,47,224,0,0,0,0,10,0,0,0,0,0, + // 0x30cf ハ + 207,48,32,26,208,36,2,0,0,0,20,0,0,116,0,0,0,0,63,208,7,252,0,0,0,0,63,192,3,253,0,0,0,0,63,192,1,255,0,0,0,0,127,128,0,255,64,0,0,0,191,64,0,127,192,0,0,0,255,0,0,63,192,0,0,0,255,0,0,47,224,0,0,1,254,0,0,15,240,0,0,2,253,0,0,11,248,0,0,3,252,0,0,7,252,0,0,3,252,0,0,3,253,0,0,11,248,0,0,2,255,0,0,15,240,0,0,0,255,0,0,31,240,0,0,0,255,128,0,63,208,0,0,0,127,192,0,127,192,0,0,0,63,192,0,255,128,0,0,0,63,224,1,255,0,0,0,0,31,240,3,254,0,0,0,0,15,244,11,252,0,0,0,0,15,248,15,248,0,0,0,0,11,252,63,240,0,0,0,0,7,252,127,208,0,0,0,0,3,254,27,192,0,0,0,0,2,228,0,0,0,0,0,0,0,0, + // 0x30d0 バ + 208,48,33,30,14,36,2,0,0,0,0,0,0,0,0,244,0,0,0,0,0,0,0,96,252,0,0,0,0,0,0,1,248,62,0,0,0,0,0,0,0,189,47,64,0,0,0,0,0,16,63,15,64,0,0,57,64,6,240,47,68,0,0,0,127,192,11,248,14,0,0,0,0,127,128,3,252,0,0,0,0,0,191,64,2,254,0,0,0,0,0,255,0,0,255,0,0,0,0,0,255,0,0,191,128,0,0,0,1,254,0,0,63,192,0,0,0,2,253,0,0,63,208,0,0,0,3,252,0,0,31,240,0,0,0,3,252,0,0,15,244,0,0,0,7,248,0,0,11,248,0,0,0,15,244,0,0,3,252,0,0,0,15,240,0,0,3,253,0,0,0,47,224,0,0,1,255,0,0,0,63,192,0,0,0,255,0,0,0,127,192,0,0,0,191,128,0,0,255,64,0,0,0,127,192,0,1,255,0,0,0,0,63,208,0,3,253,0,0,0,0,47,224,0,11,252,0,0,0,0,31,240,0,31,244,0,0,0,0,15,244,0,63,240,0,0,0,0,15,248,0,191,208,0,0,0,0,11,252,0,191,128,0,0,0,0,7,252,0,7,0,0,0,0,0,3,64,0, + // 0x30d1 パ + 209,48,33,31,23,36,2,255,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,31,255,0,0,0,0,0,0,0,61,15,64,0,0,0,0,0,0,120,3,192,0,0,0,0,0,16,120,3,192,0,0,62,64,7,240,61,11,128,0,0,127,192,11,248,31,255,0,0,0,127,128,3,252,7,248,0,0,0,191,64,2,254,0,0,0,0,0,255,0,0,255,0,0,0,0,0,255,0,0,191,128,0,0,0,1,254,0,0,63,192,0,0,0,2,253,0,0,63,208,0,0,0,3,252,0,0,31,240,0,0,0,3,252,0,0,15,244,0,0,0,7,248,0,0,11,248,0,0,0,15,244,0,0,3,252,0,0,0,15,240,0,0,3,253,0,0,0,47,224,0,0,1,255,0,0,0,63,208,0,0,0,255,0,0,0,127,192,0,0,0,255,64,0,0,255,128,0,0,0,127,192,0,1,255,0,0,0,0,63,192,0,3,254,0,0,0,0,63,208,0,7,252,0,0,0,0,47,240,0,15,248,0,0,0,0,31,240,0,47,240,0,0,0,0,15,244,0,127,224,0,0,0,0,11,248,0,255,192,0,0,0,0,7,252,0,47,64,0,0,0,0,3,228,0,1,0,0,0,0,0,1,0,0, + // 0x30d2 ヒ + 210,48,23,30,180,36,8,255,170,0,0,0,0,0,255,0,0,0,0,0,254,0,0,0,0,0,254,0,0,0,0,0,254,0,0,0,0,0,254,0,0,0,0,64,254,0,0,0,11,192,254,0,0,0,191,224,254,0,0,31,255,240,254,0,6,255,255,208,254,1,255,255,248,0,255,191,255,255,64,0,255,255,255,208,0,0,255,255,244,0,0,0,255,249,0,0,0,0,255,64,0,0,0,0,254,0,0,0,0,0,254,0,0,0,0,0,254,0,0,0,0,0,254,0,0,0,0,0,254,0,0,0,0,0,254,0,0,0,0,0,254,0,0,0,0,0,254,0,0,0,0,0,255,0,0,0,0,0,255,208,0,0,86,188,191,255,255,255,255,252,63,255,255,255,255,252,11,255,255,255,255,252,0,90,170,170,149,0, + // 0x30d3 ビ + 211,48,27,32,224,36,6,255,0,0,0,0,0,1,128,0,0,0,0,0,11,208,0,0,0,0,11,195,240,191,64,0,0,7,209,248,191,64,0,0,3,240,252,191,64,0,0,1,248,120,191,64,0,0,0,188,0,127,0,0,0,0,16,0,127,0,0,0,1,192,0,127,0,0,0,31,224,0,127,0,0,1,255,240,0,127,0,0,111,255,244,0,127,0,27,255,255,128,0,127,75,255,255,244,0,0,127,255,255,254,0,0,0,127,255,255,128,0,0,0,127,255,208,0,0,0,0,127,228,0,0,0,0,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,127,208,0,0,0,89,0,63,255,170,171,255,254,0,47,255,255,255,255,254,0,11,255,255,255,255,254,0,0,111,255,255,254,164,0, + // 0x30d4 ピ + 212,48,28,31,217,36,6,255,0,0,0,0,0,11,224,0,0,0,0,0,127,252,191,64,0,0,0,244,46,191,64,0,0,1,224,15,191,64,0,0,1,224,15,191,64,0,0,0,244,46,127,0,0,0,0,127,252,127,0,0,0,2,219,224,127,0,0,0,47,224,0,127,0,0,6,255,240,0,127,0,0,191,255,240,0,127,0,111,255,254,64,0,127,95,255,255,224,0,0,127,255,255,249,0,0,0,127,255,254,64,0,0,0,127,255,144,0,0,0,0,127,208,0,0,0,0,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,127,208,0,0,0,90,0,63,255,170,171,255,254,0,47,255,255,255,255,254,0,11,255,255,255,255,254,0,0,111,255,255,254,164,0, + // 0x30d5 フ + 213,48,26,28,196,36,5,254,255,255,255,255,255,255,128,255,255,255,255,255,255,240,255,255,255,255,255,255,240,170,170,170,170,170,191,240,0,0,0,0,0,47,224,0,0,0,0,0,63,208,0,0,0,0,0,63,192,0,0,0,0,0,127,192,0,0,0,0,0,191,64,0,0,0,0,0,255,0,0,0,0,0,1,255,0,0,0,0,0,3,253,0,0,0,0,0,7,252,0,0,0,0,0,15,248,0,0,0,0,0,47,240,0,0,0,0,0,127,208,0,0,0,0,1,255,192,0,0,0,0,7,255,0,0,0,0,0,31,253,0,0,0,0,0,191,244,0,0,0,0,7,255,208,0,0,0,0,63,255,64,0,0,0,6,255,252,0,0,0,1,191,255,224,0,0,0,1,255,255,64,0,0,0,0,127,244,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30d6 ブ + 214,48,31,34,16,36,4,254,0,0,0,0,0,0,2,64,0,0,0,0,0,9,15,192,0,0,0,0,0,63,11,208,0,0,0,0,0,31,131,240,0,0,0,0,0,15,193,248,0,0,0,0,0,3,240,244,186,170,170,170,170,171,208,0,255,255,255,255,255,255,240,0,255,255,255,255,255,255,248,0,255,255,255,255,255,255,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,224,0,0,0,0,0,0,47,208,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,3,253,0,0,0,0,0,0,7,252,0,0,0,0,0,0,15,248,0,0,0,0,0,0,63,240,0,0,0,0,0,0,191,208,0,0,0,0,0,2,255,128,0,0,0,0,0,11,255,0,0,0,0,0,0,63,252,0,0,0,0,0,1,255,240,0,0,0,0,0,11,255,192,0,0,0,0,0,191,255,0,0,0,0,0,31,255,248,0,0,0,0,1,255,255,208,0,0,0,0,0,191,253,0,0,0,0,0,0,47,208,0,0,0,0,0,0,8,0,0,0,0,0,0, + // 0x30d7 プ + 215,48,32,33,8,36,4,254,0,0,0,0,0,0,47,128,0,0,0,0,0,0,255,244,0,0,0,0,0,2,240,124,0,0,0,0,0,3,192,60,0,0,0,0,0,3,192,45,186,170,170,170,170,171,192,60,191,255,255,255,255,255,240,188,191,255,255,255,255,255,255,244,191,255,255,255,255,255,255,128,0,0,0,0,0,15,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,47,224,0,0,0,0,0,0,63,208,0,0,0,0,0,0,127,192,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,64,0,0,0,0,0,1,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,7,252,0,0,0,0,0,0,15,248,0,0,0,0,0,0,47,240,0,0,0,0,0,0,191,208,0,0,0,0,0,2,255,192,0,0,0,0,0,11,255,0,0,0,0,0,0,47,252,0,0,0,0,0,0,255,240,0,0,0,0,0,11,255,192,0,0,0,0,0,191,255,0,0,0,0,0,31,255,248,0,0,0,0,1,255,255,208,0,0,0,0,0,191,253,0,0,0,0,0,0,47,208,0,0,0,0,0,0,8,0,0,0,0,0,0, + // 0x30d8 ヘ + 216,48,32,23,184,36,2,1,0,0,2,248,0,0,0,0,0,0,11,255,0,0,0,0,0,0,47,255,192,0,0,0,0,0,191,255,240,0,0,0,0,1,255,175,252,0,0,0,0,3,254,7,255,0,0,0,0,15,252,1,255,192,0,0,0,63,240,0,127,240,0,0,0,191,208,0,47,248,0,0,1,255,128,0,11,254,0,0,7,255,0,0,3,255,128,0,31,252,0,0,0,255,208,0,127,244,0,0,0,63,244,0,191,224,0,0,0,15,253,0,63,192,0,0,0,7,255,0,15,0,0,0,0,2,255,192,1,0,0,0,0,0,191,240,0,0,0,0,0,0,63,252,0,0,0,0,0,0,15,254,0,0,0,0,0,0,7,255,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,16, + // 0x30d9 ベ + 217,48,32,27,216,36,2,0,0,0,0,0,0,0,7,64,0,0,0,0,0,0,31,192,0,0,0,0,0,30,15,224,0,0,0,0,0,63,3,240,0,0,2,244,0,31,130,248,0,0,15,254,0,15,208,252,0,0,63,255,128,7,240,96,0,0,255,255,224,3,244,0,0,2,255,191,248,1,128,0,0,7,253,11,254,0,0,0,0,31,244,2,255,128,0,0,0,63,224,0,191,224,0,0,0,255,192,0,47,244,0,0,3,255,0,0,15,253,0,0,11,253,0,0,3,255,64,0,47,248,0,0,0,255,208,0,191,240,0,0,0,127,240,0,255,192,0,0,0,31,252,0,63,64,0,0,0,11,255,0,15,0,0,0,0,2,255,192,0,0,0,0,0,0,255,240,0,0,0,0,0,0,63,248,0,0,0,0,0,0,31,254,0,0,0,0,0,0,7,254,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,240,0,0,0,0,0,0,0,0, + // 0x30da ペ + 218,48,32,27,216,36,2,0,0,0,0,0,0,0,190,0,0,0,0,0,0,3,255,208,0,0,0,0,0,15,130,240,0,0,0,0,0,15,0,180,0,0,2,244,0,30,0,120,0,0,15,254,0,15,0,180,0,0,63,255,128,15,129,240,0,0,255,255,224,3,255,208,0,2,255,191,248,0,190,64,0,7,253,11,254,0,0,0,0,31,244,2,255,128,0,0,0,63,224,0,191,224,0,0,0,255,192,0,47,244,0,0,3,255,0,0,15,253,0,0,11,253,0,0,3,255,64,0,63,248,0,0,0,255,208,0,255,240,0,0,0,127,240,0,191,192,0,0,0,31,252,0,63,64,0,0,0,11,255,0,14,0,0,0,0,2,255,192,0,0,0,0,0,0,255,240,0,0,0,0,0,0,63,248,0,0,0,0,0,0,31,254,0,0,0,0,0,0,7,254,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,240,0,0,0,0,0,0,0,0, + // 0x30db ホ + 219,48,31,32,0,36,3,254,0,0,0,5,64,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,63,255,255,255,255,255,255,224,63,255,255,255,255,255,255,224,63,255,255,255,255,255,255,224,41,85,85,111,229,85,85,144,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,4,0,31,208,0,64,0,0,31,64,31,208,7,208,0,0,63,192,31,208,15,240,0,0,127,128,31,208,7,252,0,0,255,0,31,208,3,253,0,2,254,0,31,208,0,255,0,7,252,0,31,208,0,191,128,15,244,0,31,208,0,63,208,63,224,0,31,208,0,31,240,255,192,0,31,208,0,15,244,255,0,0,31,208,0,7,244,45,0,0,31,208,0,3,128,0,0,0,31,208,0,0,0,0,0,64,47,208,0,0,0,0,0,191,255,208,0,0,0,0,0,191,255,192,0,0,0,0,0,191,255,128,0,0,0,0,0,21,84,0,0,0,0, + // 0x30dc ボ + 220,48,32,33,8,36,2,254,0,0,0,0,0,0,0,16,0,0,0,0,0,0,1,244,0,0,0,15,224,2,240,252,0,0,0,15,240,1,244,126,0,0,0,15,240,0,252,47,0,0,0,15,240,0,126,15,0,0,0,15,224,0,62,0,0,0,0,15,224,0,0,0,26,85,85,95,245,85,85,160,63,255,255,255,255,255,255,240,63,255,255,255,255,255,255,240,63,255,255,255,255,255,255,240,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,10,0,15,224,0,144,0,0,15,208,15,224,11,240,0,0,47,208,15,224,7,252,0,0,127,192,15,224,3,254,0,0,255,64,15,224,0,255,0,2,254,0,15,224,0,127,192,7,252,0,15,224,0,63,208,15,244,0,15,224,0,31,240,63,224,0,15,224,0,15,248,255,192,0,15,224,0,3,252,127,0,0,15,224,0,2,244,9,0,0,15,224,0,0,128,0,0,0,15,224,0,0,0,0,0,105,111,224,0,0,0,0,0,127,255,224,0,0,0,0,0,63,255,208,0,0,0,0,0,63,255,64,0,0,0, + // 0x30dd ポ + 221,48,32,34,16,36,2,254,0,0,0,0,0,0,11,144,0,0,0,0,0,0,127,248,0,0,0,0,0,0,244,124,0,0,0,15,240,0,224,30,0,0,0,15,240,1,224,30,0,0,0,15,240,0,224,30,0,0,0,15,224,0,244,124,0,0,0,15,224,0,127,248,0,0,0,15,224,0,11,144,26,85,85,95,245,85,85,160,63,255,255,255,255,255,255,240,63,255,255,255,255,255,255,240,63,255,255,255,255,255,255,240,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,10,0,15,224,0,144,0,0,15,208,15,224,11,240,0,0,47,208,15,224,7,252,0,0,127,192,15,224,3,254,0,0,255,64,15,224,0,255,0,2,254,0,15,224,0,127,192,7,252,0,15,224,0,63,208,15,244,0,15,224,0,31,240,63,224,0,15,224,0,15,248,255,192,0,15,224,0,3,252,127,0,0,15,224,0,2,244,9,0,0,15,224,0,0,128,0,0,0,15,224,0,0,0,0,0,105,111,224,0,0,0,0,0,127,255,224,0,0,0,0,0,63,255,208,0,0,0,0,0,63,255,64,0,0,0, + // 0x30de マ + 222,48,31,29,232,36,3,253,106,170,170,170,170,170,170,64,191,255,255,255,255,255,255,224,191,255,255,255,255,255,255,248,191,255,255,255,255,255,255,240,0,0,0,0,0,0,191,208,0,0,0,0,0,1,255,128,0,0,0,0,0,3,255,0,0,0,0,0,0,11,253,0,0,0,0,0,0,31,248,0,0,0,0,0,0,63,240,0,0,0,0,0,0,255,192,0,0,7,192,0,3,255,0,0,0,47,244,0,15,253,0,0,0,31,253,0,63,244,0,0,0,7,255,128,255,224,0,0,0,0,255,231,255,128,0,0,0,0,63,255,253,0,0,0,0,0,15,255,244,0,0,0,0,0,2,255,208,0,0,0,0,0,0,191,240,0,0,0,0,0,0,47,248,0,0,0,0,0,0,15,254,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,255,208,0,0,0,0,0,0,63,244,0,0,0,0,0,0,31,248,0,0,0,0,0,0,11,208,0,0,0,0,0,0,2,64,0,0,0,0,0,0,0,0,0,0, + // 0x30df ミ + 223,48,25,29,203,36,5,255,0,62,80,0,0,0,0,0,127,255,164,0,0,0,0,191,255,255,228,0,0,0,111,255,255,255,228,0,0,0,27,255,255,255,64,0,0,0,6,255,255,0,0,0,0,0,6,254,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,254,80,0,0,0,0,3,255,255,144,0,0,0,7,255,255,255,144,0,0,0,111,255,255,255,128,0,0,0,27,255,255,240,0,0,0,0,27,255,208,0,0,0,0,0,27,192,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,144,0,0,0,0,0,63,255,144,0,0,0,0,127,255,255,228,0,0,0,111,255,255,255,144,0,0,0,91,255,255,255,144,0,0,0,27,255,255,253,0,0,0,0,27,255,252,0,0,0,0,0,27,248,0,0,0,0,0,0,96,0, + // 0x30e0 ム + 224,48,32,31,248,36,2,254,0,0,0,16,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,191,192,0,0,0,0,0,0,255,128,0,0,0,0,0,0,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,2,254,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,7,248,0,0,0,0,0,0,15,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,31,224,0,0,0,0,0,0,47,208,0,0,0,0,0,0,63,192,0,11,64,0,0,0,127,128,0,127,192,0,0,0,191,64,0,47,224,0,0,0,255,0,0,15,240,0,0,1,254,0,0,11,248,0,0,2,253,0,0,3,253,0,0,3,252,0,0,2,255,0,0,7,248,0,0,0,255,64,0,11,244,0,0,0,191,192,0,15,240,1,106,255,255,208,0,111,255,255,255,255,255,240,127,255,255,255,255,255,255,244,127,255,255,255,255,250,91,252,63,255,255,169,64,0,3,253,62,149,0,0,0,0,3,254,0,0,0,0,0,0,1,248,0,0,0,0,0,0,0,64, + // 0x30e1 メ + 225,48,28,29,203,36,4,255,0,0,0,0,0,45,0,0,0,0,0,0,63,208,0,0,0,0,0,63,192,0,0,0,0,0,191,128,0,0,0,0,0,255,0,0,8,0,0,1,255,0,0,63,64,0,3,253,0,0,191,224,0,3,252,0,0,127,253,0,15,244,0,0,15,255,128,31,240,0,0,1,255,240,63,208,0,0,0,63,253,127,192,0,0,0,11,255,255,64,0,0,0,1,255,254,0,0,0,0,0,63,253,0,0,0,0,0,31,255,64,0,0,0,0,127,255,224,0,0,0,1,255,255,248,0,0,0,7,255,31,255,0,0,0,31,252,3,255,192,0,0,127,240,0,255,240,0,2,255,192,0,63,252,0,15,255,0,0,15,254,0,127,252,0,0,3,252,7,255,224,0,0,0,240,47,255,64,0,0,0,16,191,253,0,0,0,0,0,47,208,0,0,0,0,0,10,0,0,0,0,0,0, + // 0x30e2 モ + 226,48,29,28,224,36,4,255,5,85,85,85,85,85,80,0,11,255,255,255,255,255,240,0,11,255,255,255,255,255,240,0,11,255,255,255,255,255,240,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,165,85,95,245,85,85,85,64,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,11,252,0,0,0,0,0,0,11,255,234,175,254,0,0,0,3,255,255,255,254,0,0,0,1,255,255,255,254,0,0,0,0,27,255,255,249,0, + // 0x30e3 ャ + 227,48,26,26,182,36,5,253,0,1,128,0,0,0,0,0,47,208,0,0,0,0,0,15,224,0,0,0,0,0,15,240,0,0,0,0,0,11,240,0,0,107,192,0,3,244,1,175,255,240,0,3,254,255,255,255,224,0,91,255,255,255,255,192,191,255,255,255,144,63,128,191,255,255,64,0,255,0,127,249,255,0,2,253,0,37,0,191,0,7,248,0,0,0,127,64,31,240,0,0,0,63,128,127,192,0,0,0,63,192,255,0,0,0,0,47,192,45,0,0,0,0,31,208,0,0,0,0,0,15,224,0,0,0,0,0,11,240,0,0,0,0,0,7,244,0,0,0,0,0,3,248,0,0,0,0,0,3,252,0,0,0,0,0,2,252,0,0,0,0,0,1,254,0,0,0,0,0,0,255,0,0,0,0,0,0,228,0,0,0, + // 0x30e4 ヤ + 228,48,31,31,248,36,2,254,0,1,184,0,0,0,0,0,0,7,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,2,253,0,0,0,0,0,0,1,254,0,0,0,1,128,0,0,255,0,0,1,191,244,0,0,255,0,22,255,255,252,0,0,191,171,255,255,255,248,0,1,191,255,255,255,239,240,90,255,255,255,255,144,47,208,255,255,255,254,64,0,127,192,191,255,255,208,0,0,255,0,63,228,15,240,0,3,253,0,36,0,15,240,0,15,248,0,0,0,11,244,0,47,240,0,0,0,7,248,0,191,192,0,0,0,3,252,2,255,64,0,0,0,3,252,2,253,0,0,0,0,2,253,0,40,0,0,0,0,1,254,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,191,128,0,0,0,0,0,0,127,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,47,208,0,0,0,0,0,0,31,224,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,244,0,0,0,0,0,0,11,248,0,0,0,0,0,0,6,64,0,0,0, + // 0x30e5 ュ + 229,48,26,20,140,36,5,255,1,165,85,85,90,0,0,1,255,255,255,255,208,0,1,255,255,255,255,224,0,1,255,255,255,255,208,0,0,0,0,0,47,208,0,0,0,0,0,47,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,128,0,0,0,0,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,191,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,105,85,85,85,255,85,160,255,255,255,255,255,255,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,0,0,0,0,0,0,0, + // 0x30e6 ユ + 230,48,32,25,200,36,2,1,0,0,0,0,0,1,0,0,0,127,255,255,255,255,208,0,0,127,255,255,255,255,244,0,0,127,255,255,255,255,240,0,0,42,170,170,170,175,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,224,0,0,0,0,0,0,47,224,0,0,0,0,0,0,47,208,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,128,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,127,170,170,170,171,255,170,253,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,0,0,0,0,0,0,0,0, + // 0x30e7 ョ + 231,48,21,24,144,36,7,253,20,0,0,0,0,64,63,255,255,255,255,192,63,255,255,255,255,192,63,255,255,255,255,192,0,0,0,0,31,192,0,0,0,0,31,192,0,0,0,0,31,192,0,0,0,0,31,192,0,0,0,0,31,192,5,0,0,0,47,192,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,0,0,31,192,0,0,0,0,31,192,0,0,0,0,31,192,0,0,0,0,31,192,0,0,0,0,31,192,21,85,85,85,111,192,191,255,255,255,255,192,191,255,255,255,255,192,191,255,255,255,255,192,0,0,0,0,31,192,0,0,0,0,5,64, + // 0x30e8 ヨ + 232,48,25,28,196,36,5,254,63,255,255,255,255,255,192,63,255,255,255,255,255,192,63,255,255,255,255,255,192,37,85,85,85,85,127,192,0,0,0,0,0,47,192,0,0,0,0,0,47,192,0,0,0,0,0,47,192,0,0,0,0,0,47,192,0,0,0,0,0,47,192,0,0,0,0,0,47,192,9,85,85,85,85,127,192,15,255,255,255,255,255,192,15,255,255,255,255,255,192,15,255,255,255,255,255,192,0,0,0,0,0,47,192,0,0,0,0,0,47,192,0,0,0,0,0,47,192,0,0,0,0,0,47,192,0,0,0,0,0,47,192,0,0,0,0,0,47,192,0,0,0,0,0,47,192,0,0,0,0,0,47,192,191,255,255,255,255,255,192,191,255,255,255,255,255,192,191,255,255,255,255,255,192,106,170,170,170,170,191,192,0,0,0,0,0,47,192,0,0,0,0,0,5,64, + // 0x30e9 ラ + 233,48,27,30,210,36,5,254,1,85,85,85,85,86,0,3,255,255,255,255,255,0,3,255,255,255,255,255,0,3,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,224,255,255,255,255,255,255,252,255,255,255,255,255,255,244,85,85,85,85,85,95,240,0,0,0,0,0,31,240,0,0,0,0,0,47,208,0,0,0,0,0,63,192,0,0,0,0,0,191,128,0,0,0,0,0,255,0,0,0,0,0,3,254,0,0,0,0,0,11,252,0,0,0,0,0,47,240,0,0,0,0,0,255,208,0,0,0,0,7,255,128,0,0,0,0,47,254,0,0,0,0,2,255,248,0,0,0,0,111,255,208,0,0,0,15,255,254,0,0,0,0,11,255,244,0,0,0,0,3,254,64,0,0,0,0,0,144,0,0,0,0, + // 0x30ea リ + 234,48,22,30,180,36,7,254,106,64,0,0,63,208,127,128,0,0,63,208,127,128,0,0,47,192,127,128,0,0,47,192,127,128,0,0,47,192,127,128,0,0,47,192,127,128,0,0,47,192,127,128,0,0,47,192,127,128,0,0,47,192,127,128,0,0,47,192,127,128,0,0,47,192,127,128,0,0,47,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,128,127,128,0,0,191,128,0,0,0,0,255,64,0,0,0,1,255,0,0,0,0,3,254,0,0,0,0,11,252,0,0,0,0,47,244,0,0,0,0,255,224,0,0,0,11,255,128,0,0,1,191,254,0,0,0,15,255,244,0,0,0,3,255,128,0,0,0,0,248,0,0,0,0,0,0,0,0,0, + // 0x30eb ル + 235,48,33,29,5,36,2,255,0,1,84,0,21,64,0,0,0,0,3,252,0,127,128,0,0,0,0,3,252,0,127,128,0,0,0,0,3,252,0,63,128,0,0,0,0,3,252,0,63,128,0,0,0,0,3,252,0,63,128,0,0,0,0,3,252,0,63,128,0,0,0,0,3,252,0,63,128,0,0,0,0,3,252,0,63,128,0,0,0,0,3,252,0,63,128,0,0,0,0,3,252,0,63,128,0,0,0,0,3,248,0,63,128,0,0,0,0,3,248,0,63,128,0,0,0,0,3,248,0,63,128,0,0,0,0,3,244,0,63,128,0,0,0,0,7,244,0,63,128,0,8,0,0,7,240,0,63,128,0,61,0,0,11,240,0,63,128,0,191,0,0,15,240,0,63,128,2,255,64,0,31,224,0,63,128,11,253,0,0,63,192,0,63,128,63,244,0,0,127,192,0,63,129,255,224,0,0,255,64,0,63,139,255,64,0,3,255,0,0,63,255,253,0,0,11,253,0,0,63,255,240,0,0,47,248,0,0,127,255,128,0,0,191,240,0,0,127,252,0,0,0,47,192,0,0,63,208,0,0,0,7,0,0,0,10,0,0,0,0, + // 0x30ec レ + 236,48,26,28,196,36,7,255,127,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,1,0,63,192,0,0,0,7,192,63,192,0,0,0,31,208,63,192,0,0,0,127,224,63,192,0,0,1,255,192,63,192,0,0,11,255,0,63,192,0,0,127,252,0,63,192,0,2,255,224,0,63,192,0,31,255,64,0,63,192,1,255,252,0,0,63,192,31,255,224,0,0,63,198,255,255,0,0,0,63,255,255,244,0,0,0,63,255,255,64,0,0,0,127,255,224,0,0,0,0,47,249,0,0,0,0,0,7,64,0,0,0,0,0, + // 0x30ed ロ + 237,48,26,27,189,36,5,255,170,170,170,170,170,170,160,255,255,255,255,255,255,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,254,0,0,0,0,11,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,255,170,170,170,170,175,240,255,0,0,0,0,11,240,169,0,0,0,0,6,160, + // 0x30ee ヮ + 238,48,24,24,144,36,6,252,127,255,255,255,255,248,127,255,255,255,255,255,127,255,255,255,255,255,127,149,85,85,86,254,127,64,0,0,2,253,127,64,0,0,2,252,127,64,0,0,3,252,127,64,0,0,3,252,127,64,0,0,7,248,127,64,0,0,11,244,127,64,0,0,15,240,0,0,0,0,47,224,0,0,0,0,63,192,0,0,0,0,255,128,0,0,0,2,255,0,0,0,0,11,253,0,0,0,0,47,248,0,0,0,1,255,224,0,0,0,11,255,128,0,0,1,191,253,0,0,0,15,255,244,0,0,0,7,255,128,0,0,0,1,248,0,0,0,0,0,0,0,0,0, + // 0x30ef ワ + 239,48,28,28,196,36,4,254,191,255,255,255,255,255,244,127,255,255,255,255,255,254,127,255,255,255,255,255,254,127,170,170,170,170,171,253,127,64,0,0,0,3,252,127,64,0,0,0,3,252,127,64,0,0,0,3,252,127,64,0,0,0,7,248,127,64,0,0,0,11,244,127,64,0,0,0,15,244,127,64,0,0,0,15,240,127,64,0,0,0,31,224,191,128,0,0,0,63,208,0,0,0,0,0,127,192,0,0,0,0,0,255,128,0,0,0,0,1,255,0,0,0,0,0,3,254,0,0,0,0,0,15,252,0,0,0,0,0,63,244,0,0,0,0,0,255,224,0,0,0,0,7,255,192,0,0,0,0,47,254,0,0,0,0,2,255,248,0,0,0,0,111,255,208,0,0,0,3,255,255,0,0,0,0,1,255,244,0,0,0,0,0,191,64,0,0,0,0,0,20,0,0,0,0, + // 0x30f0 ヰ + 240,48,30,31,248,36,3,254,0,0,0,0,2,164,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,47,255,255,255,255,255,255,208,47,255,255,255,255,255,255,208,47,255,255,255,255,255,255,208,21,86,253,85,87,249,85,64,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,169,87,253,85,91,253,85,160,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,2,164,0,0, + // 0x30f1 ヱ + 241,48,31,26,208,36,3,0,10,170,170,170,170,170,171,0,15,255,255,255,255,255,255,208,15,255,255,255,255,255,255,224,15,255,255,255,255,255,255,192,0,0,0,0,0,0,255,64,0,0,0,0,0,2,254,0,0,0,0,0,0,7,252,0,0,0,0,191,64,15,244,0,0,0,0,191,64,63,224,0,0,0,0,191,64,255,192,0,0,0,0,191,67,255,0,0,0,0,0,191,65,252,0,0,0,0,0,191,64,32,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,254,170,170,255,234,170,171,244,255,255,255,255,255,255,255,244,255,255,255,255,255,255,255,244,255,255,255,255,255,255,255,244,0,0,0,0,0,0,0,0, + // 0x30f2 ヲ + 242,48,27,29,203,36,5,254,106,85,85,85,85,90,128,127,255,255,255,255,255,244,127,255,255,255,255,255,252,127,255,255,255,255,255,248,0,0,0,0,0,15,244,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,31,224,0,0,0,0,0,47,208,0,0,0,0,0,63,192,31,255,255,255,255,255,192,31,255,255,255,255,255,128,31,255,255,255,255,255,0,5,85,85,85,86,255,0,0,0,0,0,2,254,0,0,0,0,0,3,252,0,0,0,0,0,15,248,0,0,0,0,0,47,240,0,0,0,0,0,191,192,0,0,0,0,1,255,64,0,0,0,0,11,254,0,0,0,0,0,63,252,0,0,0,0,1,255,224,0,0,0,0,31,255,128,0,0,0,2,255,253,0,0,0,0,127,255,224,0,0,0,0,63,255,64,0,0,0,0,15,244,0,0,0,0,0,6,64,0,0,0,0, + // 0x30f3 ン + 243,48,29,28,224,36,5,255,3,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,63,248,0,0,0,0,0,0,31,255,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,191,244,0,0,0,0,0,0,47,253,0,0,0,28,0,0,7,255,64,0,0,61,0,0,1,254,0,0,0,127,0,0,0,120,0,0,0,255,64,0,0,0,0,0,3,255,0,0,0,0,0,0,11,252,0,0,0,0,0,0,31,244,0,0,0,0,0,0,127,224,0,0,0,0,0,1,255,192,0,0,0,0,0,11,255,0,0,0,0,0,0,47,252,0,0,0,0,0,0,255,240,0,0,0,0,0,7,255,192,0,0,0,0,0,63,255,0,0,0,0,0,2,255,248,0,0,0,0,0,111,255,208,0,0,0,0,27,255,254,0,0,0,0,22,255,255,240,0,0,0,0,255,255,255,64,0,0,0,0,127,255,224,0,0,0,0,0,63,249,0,0,0,0,0,0,9,0,0,0,0,0,0,0, + // 0x30f4 ヴ + 244,48,31,35,24,36,3,253,0,0,0,0,0,0,0,64,0,0,0,0,0,0,11,192,0,0,0,85,0,11,135,224,0,0,0,255,0,15,194,244,0,0,0,255,0,3,224,252,0,0,0,255,0,2,240,188,0,0,0,255,0,0,248,16,0,0,0,255,0,0,160,0,0,0,0,255,0,0,16,0,127,255,255,255,255,255,253,0,63,255,255,255,255,255,255,0,63,255,255,255,255,255,255,0,63,149,85,85,85,86,255,0,63,64,0,0,0,2,254,0,63,64,0,0,0,2,253,0,63,64,0,0,0,3,252,0,63,64,0,0,0,3,252,0,63,64,0,0,0,7,248,0,63,64,0,0,0,15,244,0,63,128,0,0,0,15,240,0,127,64,0,0,0,47,224,0,0,0,0,0,0,63,192,0,0,0,0,0,0,191,192,0,0,0,0,0,1,255,64,0,0,0,0,0,7,254,0,0,0,0,0,0,31,252,0,0,0,0,0,0,127,240,0,0,0,0,0,2,255,208,0,0,0,0,0,47,255,64,0,0,0,0,6,255,252,0,0,0,0,1,191,255,224,0,0,0,0,1,255,255,64,0,0,0,0,0,191,244,0,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30f5 ヵ + 245,48,23,26,156,36,6,253,0,0,63,64,0,0,0,0,63,64,0,0,0,0,63,64,0,0,0,0,63,64,0,0,0,0,63,0,0,0,84,0,127,64,1,64,191,255,255,255,255,248,191,255,255,255,255,252,191,255,255,255,255,252,0,0,191,0,2,252,0,0,254,0,2,248,0,0,253,0,2,248,0,0,252,0,2,248,0,2,252,0,3,248,0,3,248,0,3,244,0,7,244,0,3,244,0,15,240,0,3,244,0,31,208,0,3,240,0,63,192,0,7,240,0,255,64,0,11,240,3,254,0,0,15,224,31,252,0,149,111,208,191,240,0,255,255,192,191,192,0,255,255,128,47,0,0,191,253,0,4,0,0,0,0,0, + // 0x30f6 ヶ + 246,48,27,27,189,36,4,252,0,0,144,0,0,0,0,0,1,254,0,0,0,0,0,2,253,0,0,0,0,0,3,252,0,0,0,0,0,3,248,0,0,0,0,0,11,240,0,0,0,0,0,15,255,255,255,255,252,0,47,255,255,255,255,252,0,127,255,255,255,255,252,0,255,64,2,253,1,84,2,254,0,2,252,0,0,11,252,0,3,252,0,0,47,240,0,3,248,0,0,191,208,0,7,244,0,0,47,128,0,11,240,0,0,1,0,0,15,240,0,0,0,0,0,31,208,0,0,0,0,0,63,192,0,0,0,0,0,191,128,0,0,0,0,1,255,64,0,0,0,0,3,254,0,0,0,0,0,15,252,0,0,0,0,0,127,240,0,0,0,0,2,255,208,0,0,0,0,3,255,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,0,0,0, + // 0x30f7 ヷ + 247,48,31,35,24,36,3,253,0,0,0,0,0,0,1,128,0,0,0,0,0,6,15,208,0,0,0,0,0,47,71,240,0,0,0,0,0,15,195,244,0,0,0,0,0,11,208,248,0,0,0,0,0,3,224,64,0,0,0,0,0,1,0,0,127,255,255,255,255,255,248,0,127,255,255,255,255,255,255,0,63,255,255,255,255,255,255,0,63,234,170,170,170,171,254,0,63,128,0,0,0,2,253,0,63,128,0,0,0,3,253,0,63,128,0,0,0,3,252,0,63,128,0,0,0,3,252,0,63,128,0,0,0,7,248,0,63,128,0,0,0,11,248,0,63,128,0,0,0,15,244,0,127,128,0,0,0,31,240,0,127,128,0,0,0,47,224,0,0,0,0,0,0,63,208,0,0,0,0,0,0,191,192,0,0,0,0,0,0,255,64,0,0,0,0,0,3,255,0,0,0,0,0,0,11,253,0,0,0,0,0,0,47,248,0,0,0,0,0,0,191,240,0,0,0,0,0,3,255,192,0,0,0,0,0,31,255,0,0,0,0,0,1,255,252,0,0,0,0,0,31,255,224,0,0,0,0,3,255,255,64,0,0,0,0,1,255,248,0,0,0,0,0,0,127,128,0,0,0,0,0,0,20,0,0,0,0,0, + // 0x30f8 ヸ + 248,48,33,33,41,36,2,254,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,24,60,0,0,0,0,0,1,168,61,46,0,0,0,0,0,2,252,31,31,0,0,0,0,0,2,252,15,79,64,0,0,0,0,1,252,11,133,0,0,0,0,0,1,252,6,64,0,0,0,0,0,1,252,0,0,0,15,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,240,0,5,85,255,85,86,253,85,80,0,0,0,254,0,1,252,0,0,0,0,0,254,0,1,252,0,0,0,0,0,254,0,1,252,0,0,0,0,0,254,0,1,252,0,0,0,0,0,254,0,1,252,0,0,0,0,0,254,0,1,252,0,0,0,0,0,254,0,1,252,0,0,0,0,0,254,0,1,252,0,0,0,0,0,254,0,1,252,0,0,0,41,85,255,85,86,254,85,168,0,127,255,255,255,255,255,255,252,0,127,255,255,255,255,255,255,252,0,127,255,255,255,255,255,255,252,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,1,168,0,0,0, + // 0x30f9 ヹ + 249,48,32,33,8,36,2,255,0,0,0,0,0,0,0,16,0,0,0,0,0,0,3,240,0,0,0,0,0,7,209,248,0,0,0,0,0,3,240,252,0,0,0,0,0,2,244,126,0,0,0,0,0,0,252,36,0,0,0,0,0,0,164,0,6,170,170,170,170,170,171,128,11,255,255,255,255,255,255,240,11,255,255,255,255,255,255,240,11,255,255,255,255,255,255,208,0,0,0,0,0,0,127,192,0,0,0,0,0,0,255,64,0,0,0,0,0,2,254,0,0,0,0,63,192,11,252,0,0,0,0,63,192,47,240,0,0,0,0,63,192,191,208,0,0,0,0,63,194,255,128,0,0,0,0,63,192,254,0,0,0,0,0,63,192,24,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,191,255,255,255,255,255,255,252,191,255,255,255,255,255,255,252,191,255,255,255,255,255,255,252,191,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0x30fa ヺ + 250,48,30,35,24,36,4,253,0,0,0,0,0,0,10,0,0,0,0,0,0,40,63,64,0,0,0,0,0,189,15,192,0,0,0,0,0,63,11,208,0,0,0,0,0,47,131,224,0,0,0,0,0,15,129,0,170,85,85,85,85,110,64,0,255,255,255,255,255,255,224,0,255,255,255,255,255,255,248,0,255,255,255,255,255,255,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,31,224,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,63,255,255,255,255,255,128,0,63,255,255,255,255,255,64,0,63,255,255,255,255,255,0,0,21,85,85,85,86,254,0,0,0,0,0,0,3,252,0,0,0,0,0,0,7,248,0,0,0,0,0,0,15,240,0,0,0,0,0,0,63,224,0,0,0,0,0,0,255,192,0,0,0,0,0,2,255,0,0,0,0,0,0,15,253,0,0,0,0,0,0,63,248,0,0,0,0,0,2,255,208,0,0,0,0,0,31,255,64,0,0,0,0,2,255,253,0,0,0,0,0,191,255,224,0,0,0,0,0,191,255,64,0,0,0,0,0,47,244,0,0,0,0,0,0,10,64,0,0,0,0,0, + // 0x30fb ・ + 251,48,8,8,16,36,14,10,31,244,127,253,255,255,255,255,255,255,255,255,63,252,11,224, + // 0x30fc ー + 252,48,30,5,40,36,3,11,191,255,255,255,255,255,255,208,191,255,255,255,255,255,255,208,191,255,255,255,255,255,255,208,191,255,255,255,255,255,255,208,0,0,0,0,0,0,0,0, + // 0x30fd ヽ + 253,48,17,18,90,36,10,4,6,0,0,0,0,47,128,0,0,0,191,240,0,0,0,63,252,0,0,0,15,255,0,0,0,3,255,192,0,0,0,255,224,0,0,0,63,248,0,0,0,15,254,0,0,0,3,255,128,0,0,0,255,208,0,0,0,63,244,0,0,0,31,252,0,0,0,11,255,0,0,0,2,255,128,0,0,0,255,192,0,0,0,126,0,0,0,0,40,0, + // 0x30fe ヾ + 254,48,20,24,120,36,9,3,0,0,0,1,208,0,0,0,7,240,0,0,15,194,248,0,0,11,208,252,0,0,3,240,126,2,0,1,248,63,31,192,0,252,0,191,240,0,116,0,63,252,0,0,0,15,255,0,0,0,3,255,192,0,0,0,191,240,0,0,0,63,252,0,0,0,15,254,0,0,0,3,255,128,0,0,0,255,208,0,0,0,63,244,0,0,0,31,252,0,0,0,7,255,0,0,0,2,255,128,0,0,0,255,192,0,0,0,63,0,0,0,0,24,0,0,0,0,0,0, + // 0x30ff ヿ + 255,48,22,31,186,36,7,254,85,85,85,85,85,64,255,255,255,255,255,224,255,255,255,255,255,224,255,255,255,255,255,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224, + // 0x4eee 仮 + 238,78,34,35,59,36,1,252,0,0,100,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,253,47,255,255,255,255,192,0,2,252,47,255,255,255,255,192,0,3,244,47,255,255,255,255,192,0,15,240,47,192,0,0,0,0,0,31,208,47,128,0,0,0,0,0,63,192,47,128,0,0,0,0,0,127,64,47,128,0,0,0,0,0,255,64,47,128,0,0,0,0,3,255,64,47,128,0,0,0,0,11,255,64,47,192,0,0,0,0,31,255,64,47,255,255,255,254,0,127,255,64,47,255,255,255,255,0,255,191,64,47,255,255,255,255,0,190,63,64,47,255,0,0,190,0,60,63,64,47,255,0,0,253,0,16,63,64,47,175,128,1,252,0,0,63,64,63,159,192,3,248,0,0,63,64,63,79,208,3,244,0,0,63,64,63,71,240,11,240,0,0,63,64,63,3,248,15,208,0,0,63,64,63,1,253,63,192,0,0,63,64,127,0,255,127,64,0,0,63,64,190,0,63,255,0,0,0,63,64,254,0,47,252,0,0,0,63,64,253,0,15,252,0,0,0,63,65,252,0,63,255,0,0,0,63,67,248,1,255,255,208,0,0,63,67,244,11,254,127,248,0,0,63,79,240,191,248,15,255,128,0,63,95,211,255,208,2,255,224,0,63,79,192,254,0,0,127,192,0,63,66,64,116,0,0,7,0,0,0,0,0,0,0,0,0,0, + // 0x540d 名 + 13,84,31,34,16,36,1,253,0,0,0,249,0,0,0,0,0,0,2,254,0,0,0,0,0,0,3,252,0,0,0,0,0,0,15,244,0,0,0,0,0,0,47,255,255,255,208,0,0,0,191,255,255,255,240,0,0,1,255,255,255,255,224,0,0,11,253,0,0,47,192,0,0,47,244,0,0,127,128,0,0,255,240,0,0,255,0,0,11,255,252,0,2,253,0,0,63,255,255,64,7,252,0,0,63,224,191,224,15,240,0,0,15,64,31,248,63,208,0,0,4,0,7,254,255,128,0,0,0,0,1,255,254,0,0,0,0,0,0,127,248,0,0,0,0,0,0,191,224,0,0,0,0,0,3,255,255,255,255,252,0,0,47,255,255,255,255,252,0,1,255,255,255,255,255,252,0,31,255,240,0,0,2,252,6,255,255,240,0,0,1,252,127,255,215,240,0,0,1,252,63,253,7,240,0,0,1,252,31,128,7,240,0,0,1,252,4,0,7,240,0,0,1,252,0,0,7,240,0,0,1,252,0,0,7,240,0,0,1,252,0,0,7,255,255,255,255,252,0,0,7,255,255,255,255,252,0,0,7,255,255,255,255,252,0,0,7,240,0,0,2,252,0,0,6,160,0,0,1,252, + // 0x5b9a 定 + 154,91,33,35,59,36,1,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,208,0,0,0,0,0,127,0,15,192,0,0,0,0,0,127,0,15,192,0,0,0,0,0,127,0,15,192,0,0,0,0,0,127,0,15,195,255,255,255,255,252,127,0,5,67,255,255,255,255,252,21,0,0,3,255,255,255,255,252,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,7,224,3,248,0,0,0,0,0,7,240,3,248,0,0,0,0,0,11,240,3,248,0,0,0,0,0,15,224,3,255,255,255,192,0,0,15,208,3,255,255,255,192,0,0,31,224,3,255,255,255,192,0,0,47,240,3,248,0,0,0,0,0,63,244,3,248,0,0,0,0,0,127,252,3,248,0,0,0,0,0,255,255,3,248,0,0,0,0,1,253,63,211,248,0,0,0,0,3,252,31,251,248,0,0,0,0,11,244,7,255,253,0,0,0,0,47,240,1,255,255,255,255,255,192,127,192,0,47,255,255,255,255,128,47,64,0,1,191,255,255,255,64,9,0,0,0,0,5,85,85,0,0,0,0,0,0,0,0,0,0, + // 0x7247 片 + 71,114,32,35,24,36,1,252,0,0,0,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,213,85,95,245,85,84,0,47,255,255,255,255,255,253,0,47,255,255,255,255,255,253,0,47,255,255,255,255,255,253,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,213,85,85,85,80,0,0,63,255,255,255,255,244,0,0,63,255,255,255,255,244,0,0,127,255,255,255,255,244,0,0,127,0,0,0,7,244,0,0,191,0,0,0,7,244,0,0,255,0,0,0,7,244,0,0,254,0,0,0,7,244,0,2,252,0,0,0,7,244,0,3,252,0,0,0,7,244,0,11,248,0,0,0,7,244,0,15,240,0,0,0,7,244,0,63,224,0,0,0,7,244,0,127,192,0,0,0,7,244,0,31,0,0,0,0,7,244,0,9,0,0,0,0,7,244,0,0,0,0,0,0,0,0,0, + // 0x793a 示 + 58,121,33,32,32,36,1,253,0,21,85,85,85,85,85,64,0,0,191,255,255,255,255,255,224,0,0,191,255,255,255,255,255,224,0,0,191,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,85,85,85,85,85,85,85,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,2,64,2,252,0,24,0,0,0,11,244,2,252,1,253,0,0,0,15,240,2,252,0,255,0,0,0,31,208,2,252,0,127,128,0,0,63,192,2,252,0,47,208,0,0,191,64,2,252,0,15,240,0,0,255,0,2,252,0,11,244,0,3,253,0,2,252,0,3,252,0,11,248,0,2,252,0,2,254,0,47,240,0,2,252,0,0,255,0,127,208,0,2,252,0,0,191,64,31,64,0,2,252,0,0,63,64,1,0,21,87,252,0,0,36,0,0,0,47,255,248,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,15,254,128,0,0,0,0, + // 0x7fa9 義 + 169,127,33,34,50,36,2,253,0,0,96,0,0,30,64,0,0,0,3,252,0,0,63,192,0,0,0,1,253,0,0,63,64,0,0,0,0,191,0,0,255,0,0,0,31,255,255,255,255,255,255,244,0,31,255,255,255,255,255,255,244,0,10,170,170,175,250,170,170,160,0,0,0,0,15,224,0,0,0,0,1,255,255,255,255,255,255,64,0,1,255,255,255,255,255,255,64,0,0,85,85,95,245,85,85,0,0,0,0,0,15,224,0,0,0,0,170,170,170,175,250,170,170,170,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,0,0,0,100,0,0,64,0,0,1,90,255,252,63,66,244,0,0,63,255,255,254,47,135,255,64,0,63,235,254,64,47,128,191,224,0,0,2,248,0,31,192,15,224,0,0,2,248,0,31,192,1,128,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,170,171,254,170,175,250,170,170,0,0,2,248,0,3,240,15,128,0,0,2,254,191,131,244,63,128,0,170,255,255,255,129,252,254,0,0,255,255,255,233,0,255,248,0,0,255,171,248,0,0,255,208,13,0,0,2,248,0,27,255,224,15,64,0,2,248,2,255,255,249,47,64,2,171,248,63,255,135,255,255,0,3,255,244,31,248,0,255,254,0,2,255,144,10,64,0,27,248,0, + // 0x8868 表 + 104,136,34,34,50,36,1,253,0,0,0,2,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,7,255,255,255,255,255,255,253,0,7,255,255,255,255,255,255,253,0,7,255,255,255,255,255,255,253,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,170,170,171,254,170,170,160,0,0,191,255,255,255,255,255,240,0,0,191,255,255,255,255,255,240,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,0,0,0,191,239,128,0,0,0,0,0,7,255,15,192,0,116,0,0,0,47,248,15,208,2,254,0,0,2,255,208,7,240,15,253,0,0,47,255,64,3,244,127,240,0,7,255,255,0,2,254,255,64,0,191,255,191,0,0,255,248,0,0,63,244,63,0,0,191,208,0,0,30,64,63,0,0,63,208,0,0,0,0,63,0,0,31,240,0,0,0,0,63,0,27,139,253,0,0,0,0,63,91,255,194,255,128,0,0,0,127,255,255,192,191,248,0,0,111,255,255,249,0,31,255,128,0,255,255,249,0,0,7,255,208,0,191,249,0,0,0,0,127,64,0,57,0,0,0,0,0,6,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Korean_26.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Korean_26.cpp new file mode 100644 index 0000000000..d0b9e1fa8c --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Korean_26.cpp @@ -0,0 +1,252 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Korean 36pt, capital 'A' height: 26px, width: 100%, range: 0xac70-0xd788, glyphs: 110 +extern const uint8_t NotoSans_Medium_Korean_26[17586] = { + 162,26,112,172,136,215,34,247, // unifont_t + // 0xac70 거 + 112,172,27,34,238,33,2,253,0,0,0,0,0,1,84,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,63,255,255,255,0,3,248,63,255,255,255,0,3,248,63,255,255,255,0,3,248,0,0,0,191,0,3,248,0,0,0,255,0,3,248,0,0,0,254,0,3,248,0,0,0,254,0,3,248,0,0,1,253,0,3,248,0,0,2,252,0,3,248,0,0,3,252,0,3,248,0,0,7,244,255,255,248,0,0,15,240,255,255,248,0,0,47,224,255,255,248,0,0,63,192,0,3,248,0,0,255,64,0,3,248,0,2,255,0,0,3,248,0,11,252,0,0,3,248,0,63,240,0,0,3,248,1,255,208,0,0,3,248,11,255,64,0,0,3,248,127,252,0,0,0,3,248,255,224,0,0,0,3,248,127,64,0,0,0,3,248,36,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248, + // 0xace0 고 + 224,172,29,26,208,33,2,1,3,255,255,255,255,255,240,0,3,255,255,255,255,255,240,0,3,255,255,255,255,255,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,1,80,0,15,240,0,0,0,3,248,0,15,224,0,0,0,3,248,0,15,224,0,0,0,3,248,0,15,224,0,0,0,3,248,0,31,208,0,0,0,3,248,0,47,192,0,0,0,3,248,0,47,192,0,0,0,3,248,0,63,192,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0, + // 0xadf8 그 + 248,173,29,26,208,33,2,1,3,255,255,255,255,255,208,0,3,255,255,255,255,255,208,0,3,255,255,255,255,255,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,127,64,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0, + // 0xae09 급 + 9,174,30,31,248,33,2,254,1,255,255,255,255,255,224,0,1,255,255,255,255,255,224,0,1,255,255,255,255,255,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,192,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,0,0,0,15,224,0,1,252,0,0,0,15,224,0,1,252,0,0,0,15,224,0,1,252,0,0,0,15,224,0,1,255,255,255,255,255,224,0,1,255,255,255,255,255,224,0,1,255,255,255,255,255,224,0,1,252,0,0,0,15,224,0,1,252,0,0,0,15,224,0,1,252,0,0,0,15,224,0,1,255,255,255,255,255,224,0,1,255,255,255,255,255,224,0,1,255,255,255,255,255,224,0, + // 0xae30 기 + 48,174,27,34,238,33,2,253,0,0,0,0,0,1,84,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,31,255,255,255,192,3,248,31,255,255,255,192,3,248,31,255,255,255,192,3,248,0,0,0,63,192,3,248,0,0,0,63,128,3,248,0,0,0,63,128,3,248,0,0,0,127,64,3,248,0,0,0,191,0,3,248,0,0,0,255,0,3,248,0,0,1,254,0,3,248,0,0,3,252,0,3,248,0,0,7,248,0,3,248,0,0,15,244,0,3,248,0,0,47,240,0,3,248,0,0,127,192,0,3,248,0,1,255,64,0,3,248,0,7,254,0,0,3,248,0,47,248,0,0,3,248,0,255,240,0,0,3,248,7,255,128,0,0,3,248,127,253,0,0,0,3,248,191,244,0,0,0,3,248,63,128,0,0,0,3,248,24,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248, + // 0xae45 깅 + 69,174,27,34,238,33,2,253,0,0,0,0,0,1,80,0,0,0,0,0,3,248,0,0,0,0,0,3,248,15,255,255,255,192,3,248,15,255,255,255,128,3,248,15,255,255,255,128,3,248,0,0,0,63,64,3,248,0,0,0,127,0,3,248,0,0,0,255,0,3,248,0,0,0,254,0,3,248,0,0,3,252,0,3,248,0,0,11,248,0,3,248,0,0,31,240,0,3,248,0,0,127,192,0,3,248,0,2,255,64,0,3,248,0,31,253,0,0,3,248,1,255,244,0,0,3,248,111,255,128,0,0,3,248,191,253,0,0,0,3,248,63,208,0,0,0,3,248,40,0,0,0,0,2,164,0,0,6,255,254,64,0,0,0,191,255,255,253,0,0,7,255,255,255,255,128,0,31,254,0,1,191,224,0,63,224,0,0,15,244,0,63,128,0,0,7,248,0,63,64,0,0,3,248,0,63,128,0,0,7,248,0,63,224,0,0,15,244,0,31,254,64,1,191,224,0,7,255,255,255,255,128,0,0,191,255,255,253,0,0,0,6,191,254,64,0, + // 0xb044 끄 + 68,176,29,25,200,33,2,2,15,255,255,195,255,255,240,0,15,255,255,195,255,255,240,0,15,255,255,195,255,255,240,0,0,0,63,192,0,11,240,0,0,0,63,128,0,11,240,0,0,0,63,128,0,11,240,0,0,0,63,128,0,11,240,0,0,0,63,128,0,11,240,0,0,0,63,64,0,15,240,0,0,0,127,64,0,15,240,0,0,0,191,0,0,15,224,0,0,0,191,0,0,15,224,0,0,0,255,0,0,15,224,0,0,0,254,0,0,31,208,0,0,1,253,0,0,31,208,0,0,2,253,0,0,47,192,0,0,3,252,0,0,63,192,0,0,3,252,0,0,63,192,0,0,0,100,0,0,22,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192, + // 0xb0b4 내 + 180,176,27,34,238,33,3,253,0,0,0,0,0,1,80,0,0,0,1,252,3,244,0,0,0,1,252,3,244,0,0,0,1,252,3,244,106,0,0,1,252,3,244,191,0,0,1,252,3,244,191,0,0,1,252,3,244,191,0,0,1,252,3,244,191,0,0,1,252,3,244,191,0,0,1,252,3,244,191,0,0,1,252,3,244,191,0,0,1,252,3,244,191,0,0,1,252,3,244,191,0,0,1,252,3,244,191,0,0,1,255,255,244,191,0,0,1,255,255,244,191,0,0,1,255,255,244,191,0,0,1,252,3,244,191,0,0,1,252,3,244,191,0,0,1,252,3,244,191,0,0,1,252,3,244,191,0,90,225,252,3,244,191,255,255,225,252,3,244,191,255,255,241,252,3,244,191,255,250,65,252,3,244,0,0,0,1,252,3,244,0,0,0,1,252,3,244,0,0,0,1,252,3,244,0,0,0,1,252,3,244,0,0,0,1,252,3,244,0,0,0,1,252,3,244,0,0,0,1,252,3,244,0,0,0,0,0,3,244,0,0,0,0,0,3,244, + // 0xb178 노 + 120,177,30,27,216,33,2,1,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xb204 누 + 4,178,30,32,0,33,2,253,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0, + // 0xb274 뉴 + 116,178,29,32,0,33,2,253,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,3,248,0,11,240,0,0,0,3,248,0,11,240,0,0,0,3,248,0,11,240,0,0,0,3,248,0,11,240,0,0,0,3,248,0,11,240,0,0,0,3,248,0,11,240,0,0,0,3,248,0,11,240,0,0,0,3,248,0,11,240,0,0,0,3,248,0,11,240,0,0,0,3,248,0,11,240,0,0,0,3,248,0,11,240,0,0,0,3,248,0,11,240,0,0, + // 0xb2c8 니 + 200,178,26,34,238,33,3,253,0,0,0,0,0,10,144,0,0,0,0,0,15,224,0,0,0,0,0,15,224,21,0,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,20,15,224,127,64,21,175,252,15,224,127,255,255,255,252,15,224,127,255,255,255,252,15,224,127,255,255,165,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224, + // 0xb2e4 다 + 228,178,29,34,16,33,3,253,0,0,0,0,0,85,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,255,255,255,252,0,191,0,0,255,255,255,252,0,191,0,0,255,255,255,252,0,191,0,0,255,0,0,0,0,191,0,0,255,0,0,0,0,191,0,0,255,0,0,0,0,191,0,0,255,0,0,0,0,191,0,0,255,0,0,0,0,191,0,0,255,0,0,0,0,191,0,0,255,0,0,0,0,191,255,192,255,0,0,0,0,191,255,192,255,0,0,0,0,191,255,192,255,0,0,0,0,191,0,0,255,0,0,0,0,191,0,0,255,0,0,0,0,191,0,0,255,0,0,0,0,191,0,0,255,0,0,0,0,191,0,0,255,0,0,0,0,191,0,0,255,0,21,175,224,191,0,0,255,255,255,255,240,191,0,0,255,255,255,255,240,191,0,0,255,255,254,148,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0, + // 0xb2f9 당 + 249,178,29,34,16,33,3,253,0,0,0,0,0,21,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,255,255,255,248,0,127,64,0,255,255,255,248,0,127,64,0,255,255,255,248,0,127,64,0,255,0,0,0,0,127,64,0,255,0,0,0,0,127,64,0,255,0,0,0,0,127,64,0,255,0,0,0,0,127,255,192,255,0,0,0,0,127,255,192,255,0,0,0,0,127,255,192,255,0,0,0,0,127,64,0,255,0,0,0,0,127,64,0,255,0,1,107,224,127,64,0,255,255,255,255,224,127,64,0,255,255,255,255,240,127,64,0,255,255,255,165,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,21,0,0,0,0,107,255,228,0,0,0,0,11,255,255,255,208,0,0,0,127,255,255,255,248,0,0,0,255,228,0,27,254,0,0,2,254,0,0,1,255,0,0,3,252,0,0,0,127,64,0,3,248,0,0,0,63,128,0,3,252,0,0,0,127,64,0,2,254,0,0,1,255,0,0,0,255,228,0,31,254,0,0,0,127,255,255,255,248,0,0,0,11,255,255,255,208,0,0,0,0,111,255,228,0,0,0, + // 0xb3c4 도 + 196,179,30,27,216,33,2,1,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xb3cc 돌 + 204,179,29,32,0,33,2,253,1,255,255,255,255,255,208,0,1,255,255,255,255,255,208,0,1,255,255,255,255,255,208,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,224,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,1,170,170,170,170,175,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0, + // 0xb3d9 동 + 217,179,29,32,0,33,2,253,1,255,255,255,255,255,224,0,1,255,255,255,255,255,224,0,1,255,255,255,255,255,224,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,250,0,0,0,0,11,255,255,255,244,0,0,0,63,255,255,255,255,0,0,0,255,224,0,6,255,192,0,1,254,0,0,0,63,208,0,2,252,0,0,0,31,224,0,2,252,0,0,0,31,224,0,1,255,0,0,0,63,208,0,0,255,228,0,6,255,192,0,0,63,255,255,255,255,0,0,0,7,255,255,255,244,0,0,0,0,26,255,233,0,0,0, + // 0xb418 되 + 24,180,27,34,238,33,2,253,0,0,0,0,0,1,80,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,15,255,255,255,252,3,248,15,255,255,255,252,3,248,15,255,255,255,252,3,248,15,240,0,0,0,3,248,15,240,0,0,0,3,248,15,240,0,0,0,3,248,15,240,0,0,0,3,248,15,240,0,0,0,3,248,15,240,0,0,0,3,248,15,240,0,0,0,3,248,15,240,0,0,0,3,248,15,255,255,255,252,3,248,15,255,255,255,252,3,248,15,255,255,255,252,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,150,171,195,248,255,255,255,255,255,195,248,255,255,255,255,255,195,248,191,255,255,170,80,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248, + // 0xb41c 된 + 28,180,28,34,238,33,2,253,0,0,0,0,0,1,80,0,0,0,0,0,3,248,0,0,0,0,0,3,248,3,255,255,255,244,3,248,3,255,255,255,244,3,248,3,255,255,255,244,3,248,3,244,0,0,0,3,248,3,244,0,0,0,3,248,3,244,0,0,0,3,248,3,244,0,0,0,3,248,3,244,0,0,0,3,248,3,255,255,255,248,3,248,3,255,255,255,248,3,248,3,255,255,255,248,3,248,0,0,127,64,0,3,248,0,0,63,64,0,3,248,0,0,63,64,0,3,248,0,0,63,64,0,3,248,0,0,127,154,191,131,248,255,255,255,255,255,131,248,255,255,255,255,255,131,248,191,255,254,169,64,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,47,192,0,0,3,248,0,63,192,0,0,2,164,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,255,255,255,255,254,0,63,255,255,255,255,254,0,63,255,255,255,255,254,0,0,0,0,0,0,0, + // 0xb428 됨 + 40,180,27,33,231,33,2,254,0,0,0,0,0,2,164,0,0,0,0,0,3,248,3,255,255,255,244,3,248,3,255,255,255,244,3,248,3,255,255,255,244,3,248,3,248,0,0,0,3,248,3,244,0,0,0,3,248,3,244,0,0,0,3,248,3,244,0,0,0,3,248,3,244,0,0,0,3,248,3,255,255,255,248,3,248,3,255,255,255,248,3,248,3,255,255,255,248,3,248,0,0,63,64,0,3,248,0,0,63,64,0,3,248,0,0,63,64,0,3,248,0,0,127,154,191,195,248,255,255,255,255,255,195,248,255,255,255,255,255,131,248,191,255,234,149,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,0,0,0,63,255,255,255,255,248,0,63,255,255,255,255,248,0,63,255,255,255,255,248,0,63,192,0,0,3,248,0,63,192,0,0,3,248,0,63,192,0,0,3,248,0,63,192,0,0,3,248,0,63,192,0,0,3,248,0,63,255,255,255,255,248,0,63,255,255,255,255,248,0,63,255,255,255,255,248, + // 0xb4a4 뒤 + 164,180,27,34,238,33,2,253,0,0,0,0,0,2,164,0,0,0,0,0,3,248,7,255,255,255,244,3,248,7,255,255,255,244,3,248,7,255,255,255,244,3,248,7,244,0,0,0,3,248,7,244,0,0,0,3,248,7,244,0,0,0,3,248,7,244,0,0,0,3,248,7,244,0,0,0,3,248,7,244,0,0,0,3,248,7,244,0,0,0,3,248,7,255,255,255,248,3,248,7,255,255,255,248,3,248,7,255,255,255,248,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,21,67,248,255,255,255,255,255,195,248,255,255,255,255,255,195,248,255,255,255,254,149,3,248,255,255,255,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,0,0,0,3,248, + // 0xb4dc 드 + 220,180,30,27,216,33,2,1,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xb514 디 + 20,181,25,35,245,33,4,252,0,0,0,0,0,21,0,0,0,0,0,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,63,128,255,255,255,253,0,63,128,255,255,255,253,0,63,128,255,255,255,253,0,63,128,254,0,0,0,0,63,128,254,0,0,0,0,63,128,254,0,0,0,0,63,128,254,0,0,0,0,63,128,254,0,0,0,0,63,128,254,0,0,0,0,63,128,254,0,0,0,0,63,128,254,0,0,0,0,63,128,254,0,0,0,0,63,128,254,0,0,0,0,63,128,254,0,0,0,0,63,128,254,0,0,0,0,63,128,254,0,0,0,0,63,128,254,0,0,0,0,63,128,254,0,0,0,0,63,128,254,0,5,107,240,63,128,255,255,255,255,240,63,128,255,255,255,255,240,63,128,255,255,255,165,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,0,0, + // 0xb77c 라 + 124,183,29,34,16,33,3,253,0,0,0,0,0,21,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,255,255,255,252,0,191,0,0,255,255,255,252,0,191,0,0,255,255,255,252,0,191,0,0,0,0,2,252,0,191,0,0,0,0,2,252,0,191,0,0,0,0,2,252,0,191,0,0,0,0,2,252,0,191,0,0,0,0,2,252,0,191,0,0,0,0,2,252,0,191,0,0,255,255,255,252,0,191,0,0,255,255,255,252,0,191,255,192,255,255,255,252,0,191,255,192,255,0,0,0,0,191,255,192,255,0,0,0,0,191,0,0,255,0,0,0,0,191,0,0,255,0,0,0,0,191,0,0,255,0,0,0,0,191,0,0,255,0,0,0,0,191,0,0,255,0,5,107,240,191,0,0,255,255,255,255,240,191,0,0,255,255,255,255,240,191,0,0,255,255,254,148,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0, + // 0xb7ec 러 + 236,183,26,34,238,33,3,253,0,0,0,0,0,10,160,0,0,0,0,0,15,224,0,0,0,0,0,15,224,255,255,255,244,0,15,224,255,255,255,244,0,15,224,255,255,255,244,0,15,224,0,0,3,244,0,15,224,0,0,3,244,0,15,224,0,0,3,244,0,15,224,0,0,3,244,0,15,224,0,0,3,244,0,15,224,0,0,3,244,0,15,224,0,0,3,244,0,15,224,255,255,255,244,191,255,224,255,255,255,244,191,255,224,255,255,255,244,191,255,224,254,0,0,0,0,15,224,254,0,0,0,0,15,224,254,0,0,0,0,15,224,254,0,0,0,0,15,224,254,0,0,0,0,15,224,254,0,0,0,0,15,224,254,0,5,107,192,15,224,255,255,255,255,192,15,224,255,255,255,255,192,15,224,255,255,254,148,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224, + // 0xb808 레 + 8,184,27,34,238,33,3,253,0,0,0,0,0,1,84,0,0,0,0,106,3,248,0,0,0,0,191,3,248,0,0,0,0,191,3,248,255,255,253,0,191,3,248,255,255,253,0,191,3,248,255,255,253,0,191,3,248,0,0,253,0,191,3,248,0,0,253,0,191,3,248,0,0,253,0,191,3,248,0,0,253,0,191,3,248,0,0,253,0,191,3,248,0,0,253,63,255,3,248,255,255,253,63,255,3,248,255,255,253,63,255,3,248,255,255,253,0,191,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,253,0,90,240,191,3,248,255,255,255,240,191,3,248,255,255,255,240,191,3,248,255,255,233,64,191,3,248,0,0,0,0,191,3,248,0,0,0,0,191,3,248,0,0,0,0,191,3,248,0,0,0,0,191,3,248,0,0,0,0,191,3,248,0,0,0,0,191,3,248,0,0,0,0,21,3,248,0,0,0,0,0,3,248, + // 0xb825 력 + 37,184,26,35,245,33,3,252,0,0,0,0,0,10,144,0,0,0,0,0,15,224,255,255,255,240,0,15,224,255,255,255,240,0,15,224,255,255,255,240,0,15,224,0,0,11,240,255,255,224,0,0,11,240,255,255,224,0,0,11,240,255,255,224,0,0,11,240,0,15,224,191,255,255,240,0,15,224,255,255,255,240,0,15,224,255,255,255,240,0,15,224,255,0,0,0,255,255,224,255,0,0,0,255,255,224,255,0,0,0,255,255,224,255,0,0,0,0,15,224,255,0,5,191,0,15,224,255,255,255,255,0,15,224,255,255,255,255,0,15,224,255,255,254,165,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,5,64,0,0,0,0,0,0,0,0,255,255,255,255,255,224,0,255,255,255,255,255,224,0,255,255,255,255,255,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,0,0, + // 0xb85c 로 + 92,184,30,27,216,33,2,1,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xb8cc 료 + 204,184,30,27,216,33,2,1,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,0,1,253,0,15,224,0,0,0,1,253,0,15,224,0,0,0,1,253,0,15,224,0,0,0,1,253,0,15,224,0,0,0,1,253,0,15,224,0,0,0,1,253,0,15,224,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xb974 르 + 116,185,30,27,216,33,2,1,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xb9ac 리 + 172,185,26,34,238,33,3,253,0,0,0,0,0,5,64,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,127,255,255,254,0,15,224,127,255,255,254,0,15,224,127,255,255,254,0,15,224,0,0,0,254,0,15,224,0,0,0,254,0,15,224,0,0,0,254,0,15,224,0,0,0,254,0,15,224,0,0,0,254,0,15,224,0,0,0,254,0,15,224,127,255,255,254,0,15,224,127,255,255,254,0,15,224,127,255,255,254,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,0,0,0,15,224,127,64,5,106,253,15,224,127,255,255,255,253,15,224,127,255,255,255,253,15,224,127,255,255,169,64,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224, + // 0xb9b0 린 + 176,185,27,34,238,33,3,253,0,0,0,0,0,5,64,0,0,0,0,0,15,224,0,0,0,0,0,15,224,191,255,255,253,0,15,224,191,255,255,253,0,15,224,191,255,255,253,0,15,224,0,0,1,253,0,15,224,0,0,1,253,0,15,224,0,0,1,253,0,15,224,0,0,1,253,0,15,224,191,255,255,253,0,15,224,191,255,255,253,0,15,224,191,255,255,252,0,15,224,191,0,0,0,0,15,224,191,0,0,0,0,15,224,191,0,0,0,0,15,224,191,0,0,0,0,15,224,191,0,1,107,248,15,224,191,255,255,255,252,15,224,191,255,255,255,252,15,224,191,255,255,165,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,106,0,0,0,15,224,0,255,0,0,0,15,224,0,255,0,0,0,5,64,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,255,255,255,255,244,0,255,255,255,255,255,244,0,255,255,255,255,255,244,0,0,0,0,0,0,0, + // 0xb9bd 립 + 189,185,26,33,231,33,3,254,0,0,0,0,0,10,144,0,0,0,0,0,15,224,191,255,255,253,0,15,224,191,255,255,253,0,15,224,191,255,255,253,0,15,224,0,0,1,253,0,15,224,0,0,1,253,0,15,224,0,0,1,253,0,15,224,0,0,1,253,0,15,224,191,255,255,253,0,15,224,191,255,255,253,0,15,224,191,255,255,252,0,15,224,191,0,0,0,0,15,224,191,0,0,0,0,15,224,191,0,0,22,180,15,224,191,255,255,255,248,15,224,191,255,255,255,252,15,224,191,255,255,233,64,15,224,0,0,0,0,0,10,144,0,0,0,0,0,0,0,0,106,0,0,0,10,144,0,191,0,0,0,15,224,0,191,0,0,0,15,224,0,191,0,0,0,15,224,0,191,255,255,255,255,224,0,191,255,255,255,255,224,0,191,255,255,255,255,224,0,191,0,0,0,15,224,0,191,0,0,0,15,224,0,191,0,0,0,15,224,0,191,255,255,255,255,224,0,191,255,255,255,255,224,0,191,255,255,255,255,224, + // 0xb9c1 링 + 193,185,26,34,238,33,3,253,0,0,0,0,0,5,64,0,0,0,0,0,15,224,0,0,0,0,0,15,224,191,255,255,253,0,15,224,191,255,255,253,0,15,224,191,255,255,253,0,15,224,0,0,1,253,0,15,224,0,0,1,253,0,15,224,0,0,1,253,0,15,224,127,255,255,253,0,15,224,191,255,255,253,0,15,224,191,255,255,253,0,15,224,191,0,0,0,0,15,224,191,0,0,0,0,15,224,191,0,0,0,0,15,224,191,0,0,90,248,15,224,191,255,255,255,248,15,224,191,255,255,255,252,15,224,191,255,255,233,64,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,27,255,250,64,0,0,2,255,255,255,248,0,0,47,255,255,255,255,0,0,127,228,0,6,255,192,0,255,64,0,0,47,224,0,254,0,0,0,15,240,0,254,0,0,0,15,224,0,255,64,0,0,47,224,0,127,245,0,6,255,192,0,31,255,255,255,255,0,0,2,255,255,255,248,0,0,0,26,255,250,64,0, + // 0xba48 멈 + 72,186,26,33,231,33,3,254,0,0,0,0,0,5,80,0,0,0,0,0,15,224,0,0,0,0,0,15,224,255,255,255,253,0,15,224,255,255,255,253,0,15,224,255,255,255,253,0,15,224,255,0,1,253,0,15,224,255,0,1,253,0,15,224,255,0,1,253,0,15,224,255,0,1,255,255,255,224,255,0,1,255,255,255,224,255,0,1,255,255,255,224,255,0,1,253,0,15,224,255,0,1,253,0,15,224,255,0,1,253,0,15,224,255,255,255,253,0,15,224,255,255,255,253,0,15,224,191,255,255,253,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,10,144,0,0,0,0,0,0,0,0,191,255,255,255,255,224,0,191,255,255,255,255,224,0,191,255,255,255,255,224,0,191,0,0,0,15,224,0,191,0,0,0,15,224,0,191,0,0,0,15,224,0,191,0,0,0,15,224,0,191,0,0,0,15,224,0,191,0,0,0,15,224,0,191,255,255,255,255,224,0,191,255,255,255,255,224,0,191,255,255,255,255,224, + // 0xba54 메 + 84,186,27,34,238,33,3,253,0,0,0,0,0,2,164,0,0,0,0,127,3,248,0,0,0,0,127,3,248,0,0,0,0,127,3,248,255,255,255,64,127,3,248,255,255,255,64,127,3,248,255,255,255,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,255,255,3,248,253,0,63,255,255,3,248,253,0,63,255,255,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,255,255,255,64,127,3,248,255,255,255,64,127,3,248,255,255,255,64,127,3,248,0,0,0,0,127,3,248,0,0,0,0,127,3,248,0,0,0,0,127,3,248,0,0,0,0,127,3,248,0,0,0,0,127,3,248,0,0,0,0,127,3,248,0,0,0,0,127,3,248,0,0,0,0,21,3,248,0,0,0,0,0,3,244, + // 0xba74 면 + 116,186,27,34,238,33,3,253,0,0,0,0,0,6,144,0,0,0,0,0,15,224,0,0,0,0,0,15,224,191,255,255,253,0,15,224,255,255,255,253,0,15,224,255,255,255,253,0,15,224,255,0,1,255,255,255,224,255,0,1,255,255,255,224,255,0,1,255,255,255,224,255,0,1,253,0,15,224,255,0,1,253,0,15,224,255,0,1,253,0,15,224,255,0,1,253,0,15,224,255,0,1,255,255,255,224,255,0,1,255,255,255,224,255,0,1,255,255,255,224,255,255,255,253,0,15,224,255,255,255,253,0,15,224,255,255,255,253,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,42,0,0,0,15,224,0,127,64,0,0,15,224,0,127,64,0,0,10,144,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,127,255,255,255,255,248,0,127,255,255,255,255,248,0,127,255,255,255,255,248,0,0,0,0,0,0,0, + // 0xbaa8 모 + 168,186,30,27,216,33,2,1,3,255,255,255,255,255,240,0,3,255,255,255,255,255,240,0,3,255,255,255,255,255,240,0,3,248,0,0,0,15,240,0,3,248,0,0,0,15,240,0,3,248,0,0,0,15,240,0,3,248,0,0,0,15,240,0,3,248,0,0,0,15,240,0,3,248,0,0,0,15,240,0,3,248,0,0,0,15,240,0,3,248,0,0,0,15,240,0,3,248,0,0,0,15,240,0,3,248,0,0,0,15,240,0,3,255,255,255,255,255,240,0,3,255,255,255,255,255,240,0,3,255,255,255,255,255,240,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xbabb 못 + 187,186,29,32,0,33,2,253,1,255,255,255,255,255,208,0,1,255,255,255,255,255,208,0,1,255,255,255,255,255,208,0,1,252,0,0,0,15,208,0,1,252,0,0,0,15,208,0,1,252,0,0,0,15,208,0,1,252,0,0,0,15,208,0,1,252,0,0,0,15,208,0,1,255,255,255,255,255,208,0,1,255,255,255,255,255,208,0,1,255,255,255,255,255,208,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,192,0,0,0,0,0,3,255,240,0,0,0,0,0,15,251,252,0,0,0,0,0,127,226,255,64,0,0,0,7,255,128,191,244,0,0,6,255,254,0,47,255,228,0,11,255,240,0,3,255,252,0,7,254,0,0,0,47,244,0,2,64,0,0,0,0,96,0, + // 0xbbf8 미 + 248,187,26,35,245,33,3,252,0,0,0,0,0,5,64,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,127,255,255,255,0,15,224,127,255,255,255,0,15,224,127,255,255,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,0,0,255,0,15,224,127,255,255,255,0,15,224,127,255,255,255,0,15,224,127,255,255,255,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,0,0, + // 0xbc00 밀 + 0,188,27,34,238,33,3,253,0,0,0,0,0,10,144,0,0,0,0,0,15,224,127,255,255,255,0,15,224,191,255,255,255,0,15,224,191,255,255,255,0,15,224,191,0,0,191,0,15,224,191,0,0,191,0,15,224,191,0,0,191,0,15,224,191,0,0,191,0,15,224,191,0,0,191,0,15,224,191,0,0,191,0,15,224,191,0,0,191,0,15,224,191,0,0,191,0,15,224,191,255,255,255,0,15,224,191,255,255,255,0,15,224,191,255,255,255,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,5,80,0,0,0,0,0,0,0,0,191,255,255,255,255,224,0,191,255,255,255,255,224,0,191,255,255,255,255,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,191,255,255,255,255,224,0,191,255,255,255,255,224,0,191,170,170,170,170,144,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,255,255,255,255,248,0,191,255,255,255,255,248,0,191,255,255,255,255,248, + // 0xbc14 바 + 20,188,29,34,16,33,3,253,0,0,0,0,0,106,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,169,0,0,169,0,191,0,0,254,0,1,253,0,191,0,0,254,0,1,253,0,191,0,0,254,0,1,253,0,191,0,0,254,0,1,253,0,191,0,0,254,0,1,253,0,191,0,0,254,0,1,253,0,191,0,0,254,0,1,253,0,191,0,0,254,0,1,253,0,191,0,0,255,255,255,253,0,191,0,0,255,255,255,253,0,191,255,192,255,255,255,253,0,191,255,192,254,0,1,253,0,191,255,192,254,0,1,253,0,191,0,0,254,0,1,253,0,191,0,0,254,0,1,253,0,191,0,0,254,0,1,253,0,191,0,0,254,0,1,253,0,191,0,0,254,0,1,253,0,191,0,0,254,0,1,253,0,191,0,0,255,255,255,253,0,191,0,0,255,255,255,253,0,191,0,0,255,255,255,253,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0, + // 0xbc84 버 + 132,188,26,35,245,33,3,252,0,0,0,0,0,5,80,0,0,0,0,0,15,240,0,0,0,0,0,15,240,170,0,1,168,0,15,240,254,0,1,253,0,15,240,254,0,1,253,0,15,240,254,0,1,253,0,15,240,254,0,1,253,0,15,240,254,0,1,253,0,15,240,254,0,1,253,0,15,240,254,0,1,253,0,15,240,254,0,1,253,0,15,240,255,255,255,253,0,15,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,254,0,1,255,255,255,240,254,0,1,253,0,15,240,254,0,1,253,0,15,240,254,0,1,253,0,15,240,254,0,1,253,0,15,240,254,0,1,253,0,15,240,254,0,1,253,0,15,240,254,0,1,253,0,15,240,255,255,255,253,0,15,240,255,255,255,253,0,15,240,255,255,255,253,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,0,0, + // 0xbca0 베 + 160,188,27,34,238,33,3,253,0,0,0,0,0,1,84,0,0,0,0,127,3,248,0,0,0,0,127,3,248,0,0,21,0,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,255,255,255,64,127,3,248,255,255,255,255,255,3,248,255,255,255,255,255,3,248,253,0,63,255,255,3,248,253,0,63,128,191,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,253,0,63,64,127,3,248,255,255,255,64,127,3,248,255,255,255,64,127,3,248,255,255,255,64,127,3,248,0,0,0,0,127,3,248,0,0,0,0,127,3,248,0,0,0,0,127,3,248,0,0,0,0,127,3,248,0,0,0,0,127,3,248,0,0,0,0,127,3,248,0,0,0,0,21,3,248,0,0,0,0,0,3,248, + // 0xbca8 벨 + 168,188,28,34,238,33,3,253,0,0,0,0,0,1,80,0,0,0,0,126,3,244,169,0,26,64,191,3,244,254,0,47,192,191,3,244,254,0,47,192,191,3,244,254,0,47,192,191,3,244,255,255,255,192,191,3,244,255,255,255,192,191,3,244,255,255,255,255,255,3,244,254,0,47,255,255,3,244,254,0,47,255,255,3,244,254,0,47,192,191,3,244,254,0,47,192,191,3,244,254,0,47,192,191,3,244,255,255,255,192,191,3,244,255,255,255,192,191,3,244,255,255,255,128,191,3,244,0,0,0,0,126,3,244,0,0,0,0,0,0,0,0,127,255,255,255,255,244,0,127,255,255,255,255,244,0,127,255,255,255,255,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,127,255,255,255,255,244,0,127,255,255,255,255,244,0,127,234,170,170,170,160,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,127,255,255,255,255,254,0,127,255,255,255,255,254,0,127,255,255,255,255,253, + // 0xbcf8 본 + 248,188,29,32,0,33,2,253,1,253,0,0,0,15,208,0,1,253,0,0,0,15,208,0,1,253,0,0,0,15,208,0,1,253,0,0,0,15,208,0,1,255,255,255,255,255,208,0,1,255,255,255,255,255,208,0,1,255,255,255,255,255,208,0,1,253,0,0,0,15,208,0,1,253,0,0,0,15,208,0,1,253,0,0,0,15,208,0,1,255,255,255,255,255,208,0,1,255,255,255,255,255,208,0,1,255,255,255,255,255,208,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0, + // 0xbe44 비 + 68,190,26,34,238,33,3,253,0,0,0,0,0,5,80,0,0,0,0,0,15,224,0,0,0,0,0,15,224,106,0,0,106,0,15,224,127,0,0,191,0,15,224,127,0,0,191,0,15,224,127,0,0,191,0,15,224,127,0,0,191,0,15,224,127,0,0,191,0,15,224,127,0,0,191,0,15,224,127,0,0,191,0,15,224,127,0,0,191,0,15,224,127,255,255,255,0,15,224,127,255,255,255,0,15,224,127,255,255,255,0,15,224,127,0,0,191,0,15,224,127,0,0,191,0,15,224,127,0,0,191,0,15,224,127,0,0,191,0,15,224,127,0,0,191,0,15,224,127,0,0,191,0,15,224,127,0,0,191,0,15,224,127,0,0,191,0,15,224,127,255,255,255,0,15,224,127,255,255,255,0,15,224,127,255,255,255,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224, + // 0xc0ac 사 + 172,192,31,34,16,33,1,253,0,0,0,0,0,5,80,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,106,0,0,11,240,0,0,0,127,0,0,11,240,0,0,0,127,0,0,11,240,0,0,0,127,0,0,11,240,0,0,0,127,0,0,11,240,0,0,0,191,0,0,11,240,0,0,0,191,0,0,11,240,0,0,0,191,64,0,11,240,0,0,0,191,64,0,11,240,0,0,0,255,128,0,11,240,0,0,0,255,192,0,11,240,0,0,1,255,192,0,11,255,252,0,2,255,224,0,11,255,252,0,3,255,240,0,11,255,252,0,11,247,244,0,11,240,0,0,31,227,252,0,11,240,0,0,63,193,255,0,11,240,0,0,191,128,255,128,11,240,0,2,255,0,63,224,11,240,0,11,253,0,47,248,11,240,0,127,248,0,11,255,11,240,0,127,224,0,2,252,11,240,0,47,128,0,0,116,11,240,0,9,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0, + // 0xc0bd 삽 + 189,192,30,33,8,33,2,254,0,0,0,0,0,26,128,0,0,0,0,0,0,31,192,0,0,1,252,0,0,31,192,0,0,1,252,0,0,31,192,0,0,2,252,0,0,31,192,0,0,2,253,0,0,31,192,0,0,2,253,0,0,31,192,0,0,3,254,0,0,31,192,0,0,3,255,0,0,31,255,240,0,11,255,64,0,31,255,240,0,15,255,192,0,31,255,240,0,47,223,240,0,31,208,0,0,191,139,252,0,31,192,0,2,255,3,255,0,31,192,0,11,253,0,255,224,31,192,0,191,248,0,127,248,31,192,0,255,208,0,15,240,31,192,0,127,64,0,1,208,31,192,0,36,0,0,0,0,31,192,0,0,0,0,0,0,0,0,0,0,106,0,0,0,26,128,0,0,191,0,0,0,31,192,0,0,191,0,0,0,31,192,0,0,191,0,0,0,31,192,0,0,191,255,255,255,255,192,0,0,191,255,255,255,255,192,0,0,191,255,255,255,255,192,0,0,191,0,0,0,31,192,0,0,191,0,0,0,31,192,0,0,191,0,0,0,31,192,0,0,191,255,255,255,255,192,0,0,191,255,255,255,255,192,0,0,191,255,255,255,255,192,0, + // 0xc0c8 새 + 200,192,29,34,16,33,1,253,0,0,0,0,0,0,21,64,0,0,0,0,15,208,63,128,0,0,0,0,15,208,63,128,0,1,84,0,15,208,63,128,0,2,252,0,15,208,63,128,0,2,252,0,15,208,63,128,0,2,252,0,15,208,63,128,0,2,252,0,15,208,63,128,0,2,252,0,15,208,63,128,0,2,252,0,15,208,63,128,0,3,252,0,15,208,63,128,0,3,252,0,15,208,63,128,0,3,252,0,15,208,63,128,0,3,252,0,15,208,63,128,0,7,253,0,15,255,255,128,0,11,255,0,15,255,255,128,0,15,255,0,15,255,255,128,0,31,255,64,15,208,63,128,0,47,239,192,15,208,63,128,0,127,79,224,15,208,63,128,0,255,15,244,15,208,63,128,2,253,3,253,15,208,63,128,11,252,2,255,79,208,63,128,47,244,0,255,207,208,63,128,127,208,0,63,79,208,63,128,47,128,0,10,15,208,63,128,9,0,0,0,15,208,63,128,0,0,0,0,15,208,63,128,0,0,0,0,15,208,63,128,0,0,0,0,15,208,63,128,0,0,0,0,15,208,63,128,0,0,0,0,15,208,63,128,0,0,0,0,5,64,63,128,0,0,0,0,0,0,63,128, + // 0xc124 설 + 36,193,28,34,238,33,2,253,0,0,0,0,0,2,164,0,0,84,0,0,3,248,0,1,253,0,0,3,248,0,1,253,0,0,3,248,0,1,253,0,0,3,248,0,1,253,0,0,3,248,0,2,254,0,191,255,248,0,3,255,0,191,255,248,0,7,255,64,191,255,248,0,15,255,192,0,3,248,0,31,239,224,0,3,248,0,127,203,252,0,3,248,1,255,67,255,0,3,248,11,254,0,255,224,3,248,191,248,0,127,248,3,248,255,208,0,11,240,3,248,63,64,0,1,144,3,248,20,0,0,0,0,2,164,0,0,0,0,0,0,0,0,31,255,255,255,255,248,0,31,255,255,255,255,248,0,31,255,255,255,255,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,31,255,255,255,255,248,0,31,255,255,255,255,248,0,31,250,170,170,170,168,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,255,255,255,255,255,0,31,255,255,255,255,255,0,31,255,255,255,255,255, + // 0xc18c 소 + 140,193,30,28,224,33,2,1,0,0,0,21,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,192,0,0,0,0,0,1,255,192,0,0,0,0,0,3,255,224,0,0,0,0,0,7,255,240,0,0,0,0,0,15,243,252,0,0,0,0,0,63,209,255,0,0,0,0,1,255,128,255,192,0,0,0,11,254,0,63,248,0,0,0,191,248,0,15,255,128,0,47,255,224,0,2,255,254,0,47,254,0,0,0,127,254,0,15,228,0,0,0,7,252,0,9,0,0,127,0,0,20,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xc18d 속 + 141,193,30,33,8,33,2,253,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,192,0,0,0,0,0,1,255,208,0,0,0,0,0,3,255,240,0,0,0,0,0,15,247,252,0,0,0,0,0,127,210,255,64,0,0,0,7,255,128,191,228,0,0,1,191,253,0,31,255,144,0,31,255,240,0,3,255,253,0,15,254,64,42,0,127,252,0,7,144,0,127,64,1,180,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,255,255,224,0,3,255,255,255,255,255,224,0,3,255,255,255,255,255,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0, + // 0xc2a4 스 + 164,194,30,28,224,33,2,1,0,0,0,21,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,128,0,0,0,0,0,0,255,192,0,0,0,0,0,2,255,208,0,0,0,0,0,3,255,240,0,0,0,0,0,15,247,248,0,0,0,0,0,47,210,254,0,0,0,0,0,191,192,255,128,0,0,0,3,255,0,127,224,0,0,0,47,252,0,31,253,0,0,6,255,240,0,7,255,228,0,63,255,128,0,0,255,255,0,31,253,0,0,0,31,253,0,15,144,0,0,0,1,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xc2ac 슬 + 172,194,29,34,16,33,2,253,0,0,0,21,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,192,0,0,0,0,0,1,255,208,0,0,0,0,0,3,255,244,0,0,0,0,0,31,247,253,0,0,0,0,0,255,192,255,192,0,0,0,31,255,64,127,253,64,0,31,255,248,0,11,255,253,0,15,255,144,0,0,191,252,0,15,228,0,0,0,6,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,1,170,170,170,170,175,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0, + // 0xc2dc 시 + 220,194,27,33,231,33,2,253,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,255,0,0,3,248,0,0,255,0,0,3,248,0,0,255,0,0,3,248,0,0,255,0,0,3,248,0,0,255,0,0,3,248,0,0,255,0,0,3,248,0,0,255,0,0,3,248,0,0,255,0,0,3,248,0,1,255,0,0,3,248,0,1,255,64,0,3,248,0,3,255,128,0,3,248,0,3,255,192,0,3,248,0,11,255,224,0,3,248,0,15,235,240,0,3,248,0,47,195,252,0,3,248,0,127,194,254,0,3,248,0,255,64,255,64,3,248,3,254,0,127,208,3,248,31,252,0,47,248,3,248,191,240,0,11,255,3,248,255,192,0,2,253,3,248,127,0,0,0,120,3,248,40,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,2,164, + // 0xc2dd 식 + 221,194,27,34,238,33,2,253,0,0,0,0,0,2,164,0,0,0,0,0,3,248,0,0,254,0,0,3,248,0,0,254,0,0,3,248,0,0,254,0,0,3,248,0,0,254,0,0,3,248,0,0,255,0,0,3,248,0,1,255,0,0,3,248,0,2,255,0,0,3,248,0,3,255,128,0,3,248,0,7,255,192,0,3,248,0,15,255,240,0,3,248,0,63,203,248,0,3,248,0,255,131,254,0,3,248,3,255,0,255,208,3,248,47,252,0,127,252,3,248,255,244,0,15,252,3,248,127,192,0,2,244,3,248,45,0,0,0,16,3,248,0,0,0,0,0,3,248,0,0,0,0,0,1,84,0,0,0,0,0,0,0,0,127,255,255,255,255,248,0,127,255,255,255,255,248,0,127,255,255,255,255,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248, + // 0xc5b4 어 + 180,197,27,34,238,33,2,253,0,0,0,0,0,1,84,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,27,249,0,0,3,252,0,191,255,192,0,3,252,2,255,255,240,0,3,252,11,254,111,248,0,3,252,15,240,3,253,0,3,252,47,208,0,254,0,3,252,63,192,0,191,0,3,252,63,64,0,127,0,3,252,127,0,0,63,64,3,252,127,0,0,63,128,3,252,191,0,0,63,255,255,252,191,0,0,47,255,255,252,191,0,0,63,255,255,252,191,0,0,63,128,3,252,127,0,0,63,128,3,252,63,64,0,63,64,3,252,63,128,0,191,0,3,252,47,192,0,255,0,3,252,31,224,2,253,0,3,252,11,248,11,252,0,3,252,3,255,255,240,0,3,252,0,255,255,208,0,3,252,0,47,254,0,0,3,252,0,0,64,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252, + // 0xc5c6 없 + 198,197,30,35,24,33,2,252,0,0,0,0,0,1,84,0,0,0,0,0,0,3,248,0,0,47,254,0,0,3,248,0,1,255,255,224,0,3,248,0,11,255,255,252,0,3,248,0,47,244,7,255,0,3,248,0,63,192,0,191,64,3,248,0,127,64,0,63,192,3,248,0,191,0,0,47,255,255,248,0,191,0,0,31,255,255,248,0,191,0,0,47,255,255,248,0,127,64,0,63,192,3,248,0,63,192,0,191,64,3,248,0,47,244,7,255,0,3,248,0,11,255,255,252,0,3,248,0,1,255,255,240,0,3,248,0,0,47,254,64,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,2,252,1,252,0,127,64,0,2,252,1,252,0,127,64,0,2,252,1,252,0,127,64,0,2,252,1,252,0,127,64,0,2,255,255,252,0,191,128,0,2,255,255,252,0,255,192,0,2,254,171,252,1,255,208,0,2,252,1,252,3,255,224,0,2,252,1,252,11,251,244,0,2,252,1,252,31,243,253,0,2,252,1,252,191,193,255,128,2,255,255,255,255,64,191,240,2,255,255,253,253,0,31,208,1,255,255,252,176,0,2,128,0,0,0,0,0,0,0,0, + // 0xc5d1 엑 + 209,197,28,34,238,33,2,253,0,0,0,0,0,0,84,0,0,0,0,26,128,253,0,0,0,0,31,192,253,0,191,244,0,31,192,253,3,255,255,0,31,192,253,15,255,255,192,31,192,253,63,224,47,240,31,192,253,127,64,7,240,31,192,253,191,0,3,248,31,192,253,254,0,2,255,255,192,253,253,0,2,255,255,192,253,253,0,2,255,255,192,253,254,0,3,248,31,192,253,191,0,3,244,31,192,253,63,128,15,240,31,192,253,47,244,127,224,31,192,253,15,255,255,192,31,192,253,3,255,254,0,31,192,253,0,111,228,0,31,192,253,0,0,0,0,31,192,253,0,0,0,0,5,64,168,0,0,0,0,0,0,0,0,47,255,255,255,255,253,0,47,255,255,255,255,253,0,47,255,255,255,255,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253, + // 0xc5d4 엔 + 212,197,28,34,238,33,2,253,0,0,0,0,0,0,84,0,0,0,0,31,192,253,0,0,0,0,31,192,253,0,111,228,0,31,192,253,3,255,254,0,31,192,253,15,255,255,192,31,192,253,47,244,127,224,31,192,253,63,128,15,240,31,192,253,191,0,3,244,31,192,253,254,0,3,248,31,192,253,253,0,2,255,255,192,253,253,0,2,255,255,192,253,254,0,2,255,255,192,253,191,0,3,248,31,192,253,127,64,11,240,31,192,253,63,224,47,240,31,192,253,15,255,255,192,31,192,253,3,255,255,0,31,192,253,0,191,244,0,31,192,253,0,0,0,0,31,192,253,0,0,0,0,31,192,253,0,0,0,0,31,192,253,0,15,224,0,31,192,253,0,15,224,0,31,192,253,0,15,224,0,0,0,253,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,255,255,255,255,255,0,15,255,255,255,255,255,0,15,255,255,255,255,255,0,0,0,0,0,0,0, + // 0xc5f4 열 + 244,197,28,34,238,33,2,253,0,0,0,0,0,2,164,0,0,0,0,0,3,248,0,47,254,64,0,3,248,1,255,255,244,0,3,248,11,255,255,255,255,255,248,47,244,7,255,255,255,248,63,192,0,191,255,255,248,127,64,0,63,192,3,248,191,0,0,47,192,3,248,191,0,0,31,192,3,248,191,0,0,47,192,3,248,127,64,0,63,255,255,248,63,192,0,191,255,255,248,47,248,7,255,255,255,248,11,255,255,252,0,3,248,1,255,255,224,0,3,248,0,27,253,0,0,3,248,0,0,0,0,0,1,84,0,0,0,0,0,0,0,0,31,255,255,255,255,248,0,31,255,255,255,255,248,0,31,255,255,255,255,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,31,255,255,255,255,248,0,31,255,255,255,255,248,0,31,250,170,170,170,168,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,255,255,255,255,255,0,31,255,255,255,255,255,0,31,255,255,255,255,255, + // 0xc608 예 + 8,198,28,34,238,33,2,253,0,0,0,0,0,0,169,0,0,0,0,31,192,254,0,0,0,0,31,192,254,0,111,208,0,31,192,254,2,255,252,0,31,192,254,7,255,254,0,31,192,254,15,250,255,64,31,192,254,47,192,63,192,31,192,254,63,128,31,255,255,192,254,63,0,15,255,255,192,254,127,0,11,255,255,192,254,190,0,7,240,31,192,254,190,0,7,240,31,192,254,254,0,7,240,31,192,254,254,0,7,240,31,192,254,254,0,7,240,31,192,254,254,0,7,240,31,192,254,190,0,7,240,31,192,254,190,0,7,240,31,192,254,127,0,11,255,255,192,254,63,0,15,255,255,192,254,63,128,31,255,255,192,254,47,192,63,192,31,192,254,15,250,255,64,31,192,254,7,255,254,0,31,192,254,2,255,252,0,31,192,254,0,111,208,0,31,192,254,0,0,0,0,31,192,254,0,0,0,0,31,192,254,0,0,0,0,31,192,254,0,0,0,0,31,192,254,0,0,0,0,31,192,254,0,0,0,0,5,64,254,0,0,0,0,0,0,254, + // 0xc624 오 + 36,198,30,28,224,33,2,1,0,0,6,255,228,0,0,0,0,1,255,255,255,208,0,0,0,15,255,255,255,252,0,0,0,63,249,64,91,255,0,0,0,255,128,0,0,191,192,0,2,254,0,0,0,47,224,0,3,252,0,0,0,15,240,0,7,244,0,0,0,7,244,0,7,240,0,0,0,3,244,0,7,240,0,0,0,3,244,0,7,244,0,0,0,7,244,0,3,252,0,0,0,15,240,0,2,253,0,0,0,47,224,0,0,255,128,0,0,191,192,0,0,127,249,0,27,255,64,0,0,31,255,255,255,253,0,0,0,2,255,255,255,224,0,0,0,0,27,255,249,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xc628 온 + 40,198,29,33,8,33,2,253,0,0,27,255,249,0,0,0,0,7,255,255,255,244,0,0,0,47,255,255,255,254,0,0,0,255,249,0,27,255,192,0,1,255,64,0,0,127,208,0,3,252,0,0,0,15,240,0,3,252,0,0,0,15,240,0,3,252,0,0,0,15,240,0,3,252,0,0,0,15,240,0,1,255,64,0,0,127,224,0,0,255,244,0,11,255,192,0,0,63,255,255,255,255,0,0,0,7,255,255,255,244,0,0,0,0,26,255,233,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0, + // 0xc644 완 + 68,198,30,33,8,33,2,254,0,0,0,0,0,5,64,0,0,0,0,0,0,31,208,0,0,10,254,128,0,31,208,0,0,191,255,248,0,31,208,0,3,255,255,255,0,31,208,0,11,252,0,191,128,31,208,0,15,240,0,47,192,31,208,0,31,208,0,15,208,31,208,0,31,192,0,15,224,31,208,0,31,192,0,15,208,31,208,0,15,208,0,15,208,31,208,0,15,240,0,63,192,31,208,0,7,254,65,255,64,31,255,224,2,255,255,254,0,31,255,224,0,63,255,244,0,31,255,224,0,1,254,0,0,31,208,0,0,0,253,0,0,31,208,0,0,1,254,86,174,31,208,0,255,255,255,255,255,31,208,0,255,255,255,255,254,31,208,0,255,255,250,165,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,85,0,0,0,31,208,0,0,191,0,0,0,31,208,0,0,191,0,0,0,31,192,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,255,255,255,255,244,0,0,191,255,255,255,255,244,0,0,191,255,255,255,255,244,0, + // 0xc6d0 원 + 208,198,29,34,16,33,1,253,0,0,0,0,0,0,85,0,0,0,0,0,0,0,254,0,0,1,191,232,0,0,254,0,0,31,255,255,128,0,254,0,0,191,255,255,240,0,254,0,1,255,64,11,248,0,254,0,2,252,0,3,252,0,254,0,3,252,0,1,252,0,254,0,3,252,0,1,252,0,254,0,2,253,0,3,252,0,254,0,0,255,128,31,244,0,254,0,0,127,255,255,224,0,254,0,0,11,255,255,64,0,254,0,0,0,106,148,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,85,171,224,254,0,127,255,255,255,255,224,254,0,63,255,255,255,255,224,254,0,63,255,255,249,64,0,254,0,0,0,31,208,0,0,254,0,0,0,31,208,31,255,254,0,0,0,31,208,31,255,254,0,0,0,31,208,10,170,254,0,0,21,95,208,0,0,254,0,0,63,159,208,0,0,254,0,0,63,128,0,0,0,170,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,255,255,255,255,255,128,0,63,255,255,255,255,255,128,0,63,255,255,255,255,255,128,0,0,0,0,0,0,0,0, + // 0xc704 위 + 4,199,27,34,238,33,2,253,0,0,0,0,0,1,84,0,0,0,0,0,3,248,0,2,255,224,0,3,248,0,47,255,254,0,3,248,0,255,255,255,192,3,248,3,255,64,127,240,3,248,7,248,0,15,244,3,248,15,240,0,3,248,3,248,15,224,0,3,248,3,248,15,224,0,3,248,3,248,15,240,0,3,248,3,248,7,248,0,15,244,3,248,3,255,64,127,240,3,248,0,255,255,255,192,3,248,0,47,255,254,0,3,248,0,2,191,160,0,3,248,0,0,0,0,0,3,248,0,0,0,85,171,195,248,255,255,255,255,255,195,248,255,255,255,255,255,131,248,255,255,255,233,64,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,63,64,0,3,248,0,0,0,0,0,3,248, + // 0xc73c 으 + 60,199,30,28,224,33,2,1,0,0,6,255,228,0,0,0,0,1,255,255,255,208,0,0,0,11,255,255,255,248,0,0,0,63,253,64,95,255,0,0,0,255,208,0,1,255,192,0,1,255,0,0,0,63,208,0,3,252,0,0,0,15,240,0,3,248,0,0,0,11,240,0,7,244,0,0,0,7,244,0,7,240,0,0,0,3,244,0,7,244,0,0,0,7,244,0,3,248,0,0,0,11,240,0,3,252,0,0,0,15,240,0,1,254,0,0,0,47,224,0,0,255,208,0,1,255,192,0,0,63,253,64,95,255,0,0,0,15,255,255,255,252,0,0,0,1,255,255,255,208,0,0,0,0,27,255,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xc74c 음 + 76,199,29,32,0,33,2,254,0,0,26,255,233,0,0,0,0,7,255,255,255,244,0,0,0,63,255,255,255,255,0,0,0,255,228,0,6,255,192,0,2,255,0,0,0,63,224,0,3,252,0,0,0,15,240,0,3,252,0,0,0,15,240,0,3,252,0,0,0,15,240,0,2,255,0,0,0,63,224,0,0,255,228,0,6,255,192,0,0,63,255,255,255,255,0,0,0,7,255,255,255,248,0,0,0,0,43,255,250,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,252,0,0,0,15,224,0,2,252,0,0,0,15,224,0,2,252,0,0,0,15,224,0,2,252,0,0,0,15,224,0,2,252,0,0,0,15,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0, + // 0xc774 이 + 116,199,26,34,238,33,3,253,0,0,0,0,0,5,80,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,31,248,0,0,15,224,0,255,255,128,0,15,224,3,255,255,224,0,15,224,15,253,111,244,0,15,224,47,224,3,252,0,15,224,63,192,1,254,0,15,224,127,64,0,255,0,15,224,191,0,0,191,0,15,224,255,0,0,63,64,15,224,254,0,0,63,128,15,224,254,0,0,63,128,15,224,253,0,0,63,128,15,224,254,0,0,63,128,15,224,254,0,0,63,128,15,224,255,0,0,63,64,15,224,191,0,0,127,0,15,224,127,64,0,255,0,15,224,63,128,0,254,0,15,224,47,208,3,252,0,15,224,15,248,31,248,0,15,224,7,255,255,240,0,15,224,1,255,255,192,0,15,224,0,47,254,0,0,15,224,0,0,64,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,0,0,15,224, + // 0xc77c 일 + 124,199,28,34,238,33,2,253,0,0,0,0,0,1,80,0,0,0,0,0,3,248,0,27,254,64,0,3,248,1,255,255,244,0,3,248,11,255,255,253,0,3,248,31,248,6,255,64,3,248,63,208,0,127,192,3,248,127,128,0,47,192,3,248,127,0,0,31,208,3,248,191,0,0,15,208,3,248,127,0,0,31,208,3,248,127,128,0,47,192,3,248,63,208,0,127,192,3,248,31,248,6,255,64,3,248,11,255,255,253,0,3,248,1,255,255,244,0,3,248,0,27,254,64,0,3,248,0,0,0,0,0,2,164,0,0,0,0,0,0,0,0,47,255,255,255,255,248,0,47,255,255,255,255,248,0,47,255,255,255,255,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,47,255,255,255,255,248,0,47,255,255,255,255,248,0,47,234,170,170,170,164,0,47,192,0,0,0,0,0,47,192,0,0,0,0,0,47,192,0,0,0,0,0,47,255,255,255,255,254,0,47,255,255,255,255,254,0,47,255,255,255,255,254, + // 0xc77d 읽 + 125,199,27,35,245,33,2,252,0,0,0,0,0,1,84,0,0,0,0,0,3,248,0,27,254,64,0,3,248,1,255,255,240,0,3,248,11,255,255,253,0,3,248,31,248,6,255,64,3,248,63,208,0,127,192,3,248,127,128,0,47,192,3,248,127,0,0,31,208,3,248,191,0,0,15,208,3,248,127,0,0,31,208,3,248,127,128,0,47,192,3,248,63,208,0,127,192,3,248,31,248,6,255,64,3,248,11,255,255,253,0,3,248,1,255,255,244,0,3,248,0,27,254,64,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,0,0,1,255,255,248,255,255,248,1,255,255,248,255,255,248,1,255,255,248,255,255,248,0,0,3,248,0,3,248,0,0,3,248,0,3,248,0,0,3,248,0,3,248,0,255,255,248,0,3,248,0,255,255,248,0,3,248,0,255,170,164,0,3,248,0,253,0,0,0,3,248,0,253,0,0,0,3,248,0,253,0,22,128,3,248,0,255,255,255,192,3,248,0,255,255,255,192,3,248,0,255,254,165,0,3,248,0,0,0,0,0,0,0, + // 0xc785 입 + 133,199,27,33,231,33,2,254,0,0,0,0,0,1,84,0,0,0,0,0,3,248,0,27,254,64,0,3,248,0,255,255,244,0,3,248,7,255,255,254,0,3,248,31,249,6,255,64,3,248,63,208,0,63,192,3,248,127,128,0,31,208,3,248,127,64,0,15,224,3,248,191,0,0,15,224,3,248,127,64,0,15,224,3,248,127,128,0,31,208,3,248,63,208,0,63,192,3,248,31,248,2,255,64,3,248,11,255,255,254,0,3,248,1,255,255,244,0,3,248,0,27,255,64,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,192,0,0,3,248,0,47,192,0,0,3,248,0,47,192,0,0,3,248,0,47,192,0,0,3,248,0,47,255,255,255,255,248,0,47,255,255,255,255,248,0,47,255,255,255,255,248,0,47,192,0,0,3,248,0,47,192,0,0,3,248,0,47,192,0,0,3,248,0,47,255,255,255,255,248,0,47,255,255,255,255,248,0,47,255,255,255,255,248, + // 0xc790 자 + 144,199,31,34,16,33,1,253,0,0,0,0,0,5,80,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,47,255,255,255,252,11,240,0,47,255,255,255,252,11,240,0,47,255,255,255,252,11,240,0,0,0,127,0,0,11,240,0,0,0,127,0,0,11,240,0,0,0,127,0,0,11,240,0,0,0,191,0,0,11,240,0,0,0,191,64,0,11,240,0,0,0,191,64,0,11,240,0,0,0,255,128,0,11,240,0,0,0,255,192,0,11,255,252,0,1,255,192,0,11,255,252,0,3,255,224,0,11,255,252,0,3,251,240,0,11,240,0,0,11,243,248,0,11,240,0,0,31,210,253,0,11,240,0,0,63,192,255,64,11,240,0,0,255,64,127,192,11,240,0,2,255,0,47,244,11,240,0,15,252,0,15,254,11,240,0,127,244,0,3,255,11,240,0,63,208,0,0,188,11,240,0,31,0,0,0,20,11,240,0,4,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0, + // 0xc791 작 + 145,199,30,34,16,33,2,253,0,0,0,0,0,5,64,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,127,255,255,255,240,31,192,0,127,255,255,255,240,31,192,0,127,255,255,255,240,31,192,0,0,2,252,0,0,31,192,0,0,2,253,0,0,31,192,0,0,2,253,0,0,31,192,0,0,3,255,0,0,31,255,240,0,7,255,64,0,31,255,240,0,15,255,192,0,31,255,240,0,47,239,224,0,31,208,0,0,127,143,248,0,31,192,0,1,255,7,254,0,31,192,0,11,253,1,255,208,31,192,0,191,248,0,127,248,31,192,0,255,208,0,15,240,31,192,0,127,0,0,1,208,31,192,0,36,0,0,0,0,31,192,0,0,0,0,0,0,5,64,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,192,0,0,255,255,255,255,255,192,0,0,255,255,255,255,255,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0, + // 0xc798 잘 + 152,199,31,34,16,33,1,253,0,0,0,0,0,6,160,0,0,0,0,0,0,7,240,0,31,255,255,255,252,7,240,0,31,255,255,255,252,7,240,0,31,255,255,255,252,7,240,0,0,0,191,0,0,7,240,0,0,0,191,64,0,7,240,0,0,0,255,64,0,7,240,0,0,0,255,192,0,7,255,252,0,1,255,208,0,7,255,252,0,3,255,240,0,7,255,252,0,11,251,248,0,7,240,0,0,47,227,255,0,7,240,0,0,255,192,255,224,7,240,0,11,255,0,63,254,7,240,0,127,252,0,11,253,7,240,0,63,224,0,0,188,7,240,0,14,0,0,0,0,7,240,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,240,0,0,63,255,255,255,255,240,0,0,63,255,255,255,255,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,47,255,255,255,255,240,0,0,47,255,255,255,255,240,0,0,47,234,170,170,170,160,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,255,255,255,255,253,0,0,47,255,255,255,255,253,0,0,47,255,255,255,255,253,0, + // 0xc7a5 장 + 165,199,30,34,16,33,2,253,0,0,0,0,0,5,64,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,127,255,255,255,240,31,192,0,127,255,255,255,240,31,192,0,127,255,255,255,240,31,192,0,0,2,252,0,0,31,192,0,0,2,253,0,0,31,192,0,0,2,254,0,0,31,192,0,0,3,254,0,0,31,255,240,0,3,255,0,0,31,255,240,0,11,255,128,0,31,255,240,0,15,255,208,0,31,192,0,0,63,207,244,0,31,192,0,0,255,71,253,0,31,192,0,3,255,2,255,208,31,192,0,47,252,0,191,248,31,192,0,255,240,0,31,240,31,192,0,191,128,0,1,208,31,192,0,56,0,0,0,0,31,192,0,0,0,0,0,0,5,64,0,0,0,26,255,233,0,0,0,0,2,255,255,255,244,0,0,0,31,255,255,255,254,0,0,0,63,249,0,6,255,128,0,0,191,128,0,0,127,192,0,0,255,0,0,0,31,208,0,0,254,0,0,0,15,224,0,0,255,0,0,0,31,208,0,0,191,128,0,0,127,192,0,0,63,249,0,6,255,128,0,0,31,255,255,255,254,0,0,0,2,255,255,255,244,0,0,0,0,26,255,249,0,0,0, + // 0xc7ac 재 + 172,199,29,34,16,33,1,253,0,0,0,0,0,0,26,64,0,0,0,0,15,224,63,128,0,0,0,0,15,224,63,128,0,0,0,0,15,224,63,128,47,255,255,255,15,224,63,128,47,255,255,255,15,224,63,128,47,255,255,255,15,224,63,128,0,3,252,0,15,224,63,128,0,3,248,0,15,224,63,128,0,3,252,0,15,224,63,128,0,3,252,0,15,224,63,128,0,3,252,0,15,224,63,128,0,3,252,0,15,224,63,128,0,3,252,0,15,224,63,128,0,7,253,0,15,255,255,128,0,11,254,0,15,255,255,128,0,15,255,0,15,255,255,128,0,15,255,64,15,224,63,128,0,47,239,192,15,224,63,128,0,63,95,224,15,224,63,128,0,255,15,240,15,224,63,128,1,254,7,252,15,224,63,128,3,252,2,255,79,224,63,128,31,248,0,255,207,224,63,128,127,224,0,63,143,224,63,128,63,192,0,11,15,224,63,128,14,0,0,0,15,224,63,128,0,0,0,0,15,224,63,128,0,0,0,0,15,224,63,128,0,0,0,0,15,224,63,128,0,0,0,0,15,224,63,128,0,0,0,0,15,224,63,128,0,0,0,0,5,80,63,128,0,0,0,0,0,0,47,128, + // 0xc800 저 + 0,200,28,34,238,33,1,253,0,0,0,0,0,0,85,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,31,255,255,255,254,0,255,31,255,255,255,254,0,255,31,255,255,255,254,0,255,0,0,63,64,0,0,255,0,0,63,64,0,0,255,0,0,127,64,0,0,255,0,0,127,128,0,0,255,0,0,127,128,0,0,255,0,0,191,192,31,255,255,0,0,255,192,31,255,255,0,0,255,208,31,255,255,0,1,255,224,0,0,255,0,3,255,240,0,0,255,0,7,243,248,0,0,255,0,15,241,253,0,0,255,0,47,208,255,0,0,255,0,127,192,127,192,0,255,0,255,64,63,240,0,255,3,255,0,15,252,0,255,31,252,0,7,255,64,255,127,240,0,1,255,0,255,47,208,0,0,61,0,255,14,0,0,0,4,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,254, + // 0xc804 전 + 4,200,28,34,238,33,2,253,0,0,0,0,0,1,84,0,0,0,0,0,3,248,0,0,0,0,0,3,248,63,255,255,255,244,3,248,63,255,255,255,244,3,248,63,255,255,255,244,3,248,0,0,254,0,0,3,248,0,0,254,0,0,3,248,0,1,254,0,0,3,248,0,1,255,0,0,3,248,0,2,255,0,63,255,248,0,3,255,128,63,255,248,0,11,255,192,63,255,248,0,15,255,224,0,3,248,0,63,203,248,0,3,248,0,255,131,254,0,3,248,3,255,1,255,208,3,248,47,252,0,127,252,3,248,255,240,0,31,248,3,248,127,128,0,2,240,3,248,41,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,31,208,0,0,3,248,0,31,208,0,0,3,248,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,255,255,255,255,254,0,31,255,255,255,255,254,0,31,255,255,255,255,254,0,0,0,0,0,0,0, + // 0xc815 정 + 21,200,27,34,238,33,2,253,0,0,0,0,0,1,84,0,0,0,0,0,3,248,0,0,0,0,0,3,248,63,255,255,255,244,3,248,63,255,255,255,244,3,248,63,255,255,255,244,3,248,0,0,254,0,0,3,248,0,1,254,0,0,3,248,0,1,255,0,0,3,248,0,2,255,0,47,255,248,0,3,255,128,47,255,248,0,11,255,192,47,255,248,0,15,239,240,0,3,248,0,63,203,252,0,3,248,0,255,131,255,0,3,248,7,255,0,255,224,3,248,127,252,0,63,252,3,248,255,240,0,15,244,3,248,127,128,0,1,240,3,248,40,0,0,0,0,3,248,0,0,0,0,0,0,0,0,0,1,175,250,64,0,0,0,127,255,255,253,0,0,3,255,255,255,255,192,0,15,254,64,1,191,240,0,47,224,0,0,15,244,0,63,192,0,0,3,252,0,63,192,0,0,3,252,0,63,192,0,0,3,252,0,47,224,0,0,15,244,0,15,254,64,1,191,240,0,3,255,255,255,255,192,0,0,191,255,255,253,0,0,0,1,191,254,64,0, + // 0xc81c 제 + 28,200,29,34,16,33,1,253,0,0,0,0,0,0,42,64,0,0,0,0,7,240,63,128,0,0,0,0,11,240,63,128,0,0,0,0,11,240,63,128,47,255,255,255,11,240,63,128,47,255,255,255,11,240,63,128,47,255,255,255,11,240,63,128,0,3,248,0,11,240,63,128,0,3,248,0,11,240,63,128,0,3,248,0,11,240,63,128,0,3,252,0,11,240,63,128,0,3,252,0,11,240,63,128,0,3,252,31,255,240,63,128,0,7,252,31,255,240,63,128,0,11,253,31,255,240,63,128,0,15,254,0,11,240,63,128,0,15,255,0,11,240,63,128,0,31,255,64,11,240,63,128,0,63,175,192,11,240,63,128,0,127,31,208,11,240,63,128,0,255,15,240,11,240,63,128,2,253,7,248,11,240,63,128,7,252,3,254,11,240,63,128,31,240,0,255,203,240,63,128,127,208,0,63,139,240,63,128,63,128,0,15,11,240,63,128,14,0,0,0,11,240,63,128,0,0,0,0,11,240,63,128,0,0,0,0,11,240,63,128,0,0,0,0,11,240,63,128,0,0,0,0,11,240,63,128,0,0,0,0,11,240,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,64, + // 0xc8fd 죽 + 253,200,30,32,0,33,2,253,7,255,255,255,255,255,248,0,7,255,255,255,255,255,248,0,7,255,255,255,255,255,248,0,0,0,0,255,192,0,0,0,0,0,2,255,224,0,0,0,0,0,7,255,244,0,0,0,0,0,47,243,253,0,0,0,0,1,255,192,255,208,0,0,0,111,255,64,127,254,64,0,31,255,248,0,15,255,253,0,15,255,144,0,1,191,252,0,15,232,0,0,0,10,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,3,255,255,255,255,255,224,0,3,255,255,255,255,255,224,0,3,255,255,255,255,255,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0, + // 0xc900 준 + 0,201,30,32,0,33,2,253,7,255,255,255,255,255,248,0,7,255,255,255,255,255,248,0,7,255,255,255,255,255,248,0,0,0,0,255,192,0,0,0,0,0,1,255,208,0,0,0,0,0,3,255,240,0,0,0,0,0,15,247,252,0,0,0,0,0,127,210,255,64,0,0,0,2,255,128,191,228,0,0,1,191,254,0,47,255,144,0,31,255,244,0,7,255,253,0,15,255,64,0,0,127,252,0,7,144,0,0,0,1,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,2,252,0,63,128,0,0,0,2,252,0,63,128,0,0,0,2,252,0,63,128,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0, + // 0xc911 중 + 17,201,29,32,0,33,2,253,7,255,255,255,255,255,248,0,7,255,255,255,255,255,248,0,7,255,255,255,255,255,248,0,0,0,0,255,192,0,0,0,0,0,2,255,224,0,0,0,0,0,7,255,244,0,0,0,0,0,47,243,254,0,0,0,0,1,255,192,255,208,0,0,0,111,255,64,127,254,64,0,31,255,248,0,11,255,253,0,15,255,144,0,1,191,252,0,15,232,0,0,0,10,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,107,255,229,0,0,0,0,11,255,255,255,244,0,0,0,63,255,255,255,255,0,0,0,255,208,0,6,255,192,0,1,254,0,0,0,63,208,0,2,252,0,0,0,31,224,0,2,252,0,0,0,31,224,0,1,255,0,0,0,63,208,0,0,255,228,0,6,255,192,0,0,63,255,255,255,255,0,0,0,7,255,255,255,244,0,0,0,0,26,255,233,0,0,0, + // 0xc990 즐 + 144,201,29,32,0,33,2,253,7,255,255,255,255,255,248,0,7,255,255,255,255,255,248,0,7,255,255,255,255,255,248,0,0,0,0,255,192,0,0,0,0,0,2,255,224,0,0,0,0,0,11,255,248,0,0,0,0,0,191,226,255,128,0,0,0,95,255,128,191,253,64,0,31,255,253,0,31,255,254,0,15,255,144,0,1,191,252,0,11,164,0,0,0,6,188,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,1,170,170,170,170,175,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0, + // 0xc9c0 지 + 192,201,27,34,238,33,2,253,0,0,0,0,0,1,84,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,63,255,255,255,252,3,248,63,255,255,255,252,3,248,63,255,255,255,252,3,248,0,0,255,0,0,3,248,0,0,255,0,0,3,248,0,0,255,0,0,3,248,0,0,255,0,0,3,248,0,0,255,0,0,3,248,0,0,255,0,0,3,248,0,1,255,0,0,3,248,0,2,255,64,0,3,248,0,3,255,192,0,3,248,0,3,255,192,0,3,248,0,11,255,224,0,3,248,0,15,215,244,0,3,248,0,63,195,252,0,3,248,0,191,129,255,0,3,248,1,255,0,191,192,3,248,7,253,0,63,240,3,248,47,248,0,15,254,3,248,255,224,0,3,254,3,248,191,128,0,0,188,3,248,61,0,0,0,20,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248, + // 0xcc98 처 + 152,204,27,35,245,33,2,252,0,0,0,0,0,2,164,0,0,253,0,0,3,252,0,0,253,0,0,3,252,0,0,253,0,0,3,252,0,0,253,0,0,3,252,0,0,253,0,0,3,252,63,255,255,255,244,3,252,63,255,255,255,244,3,252,63,255,255,255,244,3,252,0,0,253,0,0,3,252,0,0,253,0,0,3,252,0,0,253,0,0,3,252,0,1,254,0,0,3,252,0,1,254,0,0,3,252,0,2,255,0,127,255,252,0,3,255,0,127,255,252,0,3,255,64,127,255,252,0,11,255,192,0,3,252,0,15,239,208,0,3,252,0,47,203,240,0,3,252,0,127,131,252,0,3,252,0,255,2,254,0,3,252,3,253,0,255,128,3,252,15,252,0,63,244,3,252,191,240,0,15,252,3,252,255,192,0,3,248,3,252,62,0,0,0,176,3,252,20,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,0,0, + // 0xcd08 초 + 8,205,30,29,232,33,2,1,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,11,255,255,255,255,255,248,0,11,255,255,255,255,255,248,0,11,255,255,255,255,255,248,0,0,0,0,127,128,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,192,0,0,0,0,0,1,255,208,0,0,0,0,0,3,255,240,0,0,0,0,0,15,251,252,0,0,0,0,0,63,226,255,0,0,0,0,2,255,192,255,224,0,0,0,47,255,0,47,254,0,0,27,255,248,0,11,255,249,0,31,255,208,0,1,255,254,0,15,253,0,21,0,27,252,0,10,64,0,127,64,0,104,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xcd95 축 + 149,205,29,34,16,33,2,253,0,0,0,21,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,7,255,255,255,255,255,240,0,7,255,255,255,255,255,240,0,7,255,255,255,255,255,240,0,0,0,0,255,192,0,0,0,0,0,0,255,192,0,0,0,0,0,3,255,240,0,0,0,0,0,31,251,253,0,0,0,0,1,191,210,255,144,0,0,1,175,255,64,191,254,80,0,31,255,248,0,11,255,253,0,15,255,128,0,0,191,252,0,10,144,0,0,0,1,168,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,3,255,255,255,255,255,224,0,3,255,255,255,255,255,224,0,3,255,255,255,255,255,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0, + // 0xcd9c 출 + 156,205,29,34,16,33,2,253,0,0,0,42,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,3,255,255,255,255,255,240,0,3,255,255,255,255,255,244,0,3,255,255,255,255,255,244,0,0,0,0,255,192,0,0,0,0,0,2,255,224,0,0,0,0,0,11,255,248,0,0,0,0,0,127,243,255,64,0,0,1,111,255,192,255,254,80,0,47,255,253,0,31,255,254,0,15,255,144,0,1,191,252,0,10,80,0,0,0,1,104,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,2,170,170,255,234,170,144,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,1,170,170,170,170,175,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0, + // 0xcda4 춤 + 164,205,29,33,8,33,2,254,0,0,0,21,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,3,255,255,255,255,255,240,0,3,255,255,255,255,255,240,0,3,255,255,255,255,255,240,0,0,0,0,255,192,0,0,0,0,0,1,255,208,0,0,0,0,0,7,255,244,0,0,0,0,0,127,247,255,64,0,0,0,27,255,192,255,249,0,0,31,255,253,0,31,255,253,0,15,255,208,0,1,255,252,0,15,164,0,0,0,6,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,252,0,0,0,15,224,0,2,252,0,0,0,15,224,0,2,252,0,0,0,15,224,0,2,252,0,0,0,15,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0, + // 0xcde8 취 + 232,205,27,34,238,33,2,253,0,0,21,0,0,1,84,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,15,255,255,255,252,3,248,15,255,255,255,252,3,248,15,255,255,255,252,3,248,0,0,127,128,0,3,248,0,0,191,192,0,3,248,0,0,255,192,0,3,248,0,2,255,240,0,3,248,0,11,255,252,0,3,248,0,63,242,255,128,3,248,6,255,192,191,253,3,248,47,255,0,31,253,3,248,15,248,0,2,252,3,248,11,64,0,0,20,3,248,0,0,0,0,0,3,248,0,0,0,85,175,195,248,255,255,255,255,255,195,248,255,255,255,255,255,195,248,255,255,255,233,64,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,127,64,0,3,248,0,0,0,0,0,3,248, + // 0xce58 치 + 88,206,27,34,238,33,2,253,0,0,0,0,0,2,164,0,0,191,0,0,3,248,0,0,191,0,0,3,248,0,0,191,0,0,3,248,0,0,191,0,0,3,248,0,0,191,0,0,3,248,63,255,255,255,252,3,248,63,255,255,255,252,3,248,63,255,255,255,252,3,248,0,0,191,0,0,3,248,0,0,191,0,0,3,248,0,0,191,0,0,3,248,0,0,191,0,0,3,248,0,0,255,64,0,3,248,0,0,255,128,0,3,248,0,1,255,192,0,3,248,0,2,255,208,0,3,248,0,3,255,224,0,3,248,0,11,247,244,0,3,248,0,15,227,252,0,3,248,0,63,193,255,0,3,248,0,255,128,191,128,3,248,2,255,0,63,240,3,248,15,252,0,31,253,3,248,127,244,0,7,255,3,248,63,208,0,0,253,3,248,30,0,0,0,24,3,248,4,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248, + // 0xce68 침 + 104,206,27,33,231,33,2,254,0,0,106,0,0,1,84,0,0,191,0,0,3,248,0,0,191,0,0,3,248,0,0,191,0,0,3,248,47,255,255,255,252,3,248,63,255,255,255,252,3,248,63,255,255,255,252,3,248,0,0,255,0,0,3,248,0,0,255,0,0,3,248,0,0,255,64,0,3,248,0,1,255,192,0,3,248,0,3,255,208,0,3,248,0,11,255,240,0,3,248,0,31,231,252,0,3,248,0,127,194,255,64,3,248,2,255,64,255,244,3,248,47,254,0,63,254,3,248,127,248,0,11,253,3,248,63,208,0,0,184,3,248,29,0,0,0,0,3,248,0,0,0,0,0,1,80,0,0,0,0,0,0,0,0,47,255,255,255,255,248,0,47,255,255,255,255,248,0,47,255,255,255,255,248,0,47,192,0,0,3,248,0,47,192,0,0,3,248,0,47,192,0,0,3,248,0,47,192,0,0,3,248,0,47,192,0,0,3,248,0,47,255,255,255,255,248,0,47,255,255,255,255,248,0,47,255,255,255,255,248, + // 0xce74 카 + 116,206,30,34,16,33,2,253,0,0,0,0,0,21,64,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,15,255,255,255,128,47,192,0,15,255,255,255,128,47,192,0,15,255,255,255,128,47,192,0,0,0,0,63,64,47,192,0,0,0,0,127,64,47,192,0,0,0,0,127,0,47,192,0,0,0,0,191,0,47,192,0,0,0,0,255,0,47,192,0,0,5,90,254,0,47,192,0,191,255,255,253,0,47,192,0,191,255,255,252,0,47,255,240,127,254,171,248,0,47,255,240,16,0,11,244,0,47,255,240,0,0,31,240,0,47,192,0,0,0,63,208,0,47,192,0,0,0,255,128,0,47,192,0,0,2,255,0,0,47,192,0,0,11,253,0,0,47,192,0,0,63,244,0,0,47,192,0,1,255,208,0,0,47,192,0,11,255,64,0,0,47,192,0,191,252,0,0,0,47,192,0,191,224,0,0,0,47,192,0,63,0,0,0,0,47,192,0,4,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0, + // 0xcf1c 켜 + 28,207,27,34,238,33,2,253,0,0,0,0,0,1,84,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,31,255,255,255,64,3,248,31,255,255,255,0,3,248,31,255,255,255,0,3,248,0,0,0,127,0,3,248,0,0,0,191,0,3,248,0,0,0,191,0,3,248,0,0,0,255,255,255,248,0,0,0,255,255,255,248,0,0,86,255,255,255,248,255,255,255,252,0,3,248,255,255,255,248,0,3,248,255,255,239,244,0,3,248,84,0,15,240,0,3,248,0,0,47,224,0,3,248,0,0,63,192,0,3,248,0,0,255,67,255,255,248,0,3,255,3,255,255,248,0,15,252,3,255,255,248,0,63,240,0,0,3,248,1,255,208,0,0,3,248,11,255,0,0,0,3,248,191,252,0,0,0,3,248,255,224,0,0,0,3,248,63,0,0,0,0,3,248,20,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248, + // 0xd0d1 탑 + 209,208,29,33,8,33,3,254,0,0,0,0,0,106,0,0,0,0,0,0,0,127,0,0,255,255,255,252,0,127,0,0,255,255,255,252,0,127,0,0,255,255,255,252,0,127,0,0,255,0,0,0,0,127,0,0,255,0,0,0,0,127,0,0,255,0,0,0,0,127,0,0,255,0,0,0,0,127,255,192,255,255,255,248,0,127,255,192,255,255,255,248,0,127,255,192,255,255,255,248,0,127,64,0,255,0,0,0,0,127,0,0,255,0,0,0,0,127,0,0,255,0,0,90,128,127,0,0,255,255,255,255,208,127,0,0,255,255,255,255,208,127,0,0,255,255,255,165,0,127,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,1,168,0,0,0,106,0,0,2,252,0,0,0,127,0,0,2,252,0,0,0,127,0,0,2,252,0,0,0,127,0,0,2,255,255,255,255,255,0,0,2,255,255,255,255,255,0,0,2,255,255,255,255,255,0,0,2,252,0,0,0,127,0,0,2,252,0,0,0,127,0,0,2,252,0,0,0,127,0,0,2,255,255,255,255,255,0,0,2,255,255,255,255,255,0,0,2,255,255,255,255,255,0,0, + // 0xd130 터 + 48,209,26,34,238,33,3,253,0,0,0,0,0,10,160,0,0,0,0,0,15,240,0,0,0,0,0,15,240,191,255,255,253,0,15,240,191,255,255,253,0,15,240,191,255,255,253,0,15,240,191,0,0,0,0,15,240,191,0,0,0,0,15,240,191,0,0,0,0,15,240,191,0,0,0,0,15,240,191,0,0,0,0,15,240,191,0,0,0,0,15,240,191,0,0,0,0,15,240,191,255,255,240,255,255,240,191,255,255,240,255,255,240,191,255,255,240,255,255,240,191,0,0,0,0,15,240,191,0,0,0,0,15,240,191,0,0,0,0,15,240,191,0,0,0,0,15,240,191,0,0,0,0,15,240,191,0,0,0,0,15,240,191,0,1,106,192,15,240,191,255,255,255,208,15,240,191,255,255,255,208,15,240,191,255,255,165,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240, + // 0xd14c 테 + 76,209,27,34,238,33,3,253,0,0,0,0,0,2,164,0,0,0,0,191,3,248,0,0,0,0,191,3,248,0,0,0,0,191,3,248,255,255,255,0,191,3,248,255,255,255,0,191,3,248,255,255,255,0,191,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,255,255,248,255,255,3,248,255,255,248,255,255,3,248,255,255,248,255,255,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,253,0,0,0,191,3,248,253,0,22,144,191,3,248,255,255,255,224,191,3,248,255,255,255,224,191,3,248,255,255,250,64,191,3,248,0,0,0,0,191,3,248,0,0,0,0,191,3,248,0,0,0,0,191,3,248,0,0,0,0,191,3,248,0,0,0,0,191,3,248,0,0,0,0,191,3,248,0,0,0,0,21,3,248,0,0,0,0,0,3,244, + // 0xd1a0 토 + 160,209,30,27,216,33,2,1,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,253,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,192,0,2,255,255,255,255,255,192,0,2,255,255,255,255,255,192,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xd2b8 트 + 184,210,30,27,216,33,2,1,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,192,0,2,255,255,255,255,255,192,0,2,255,255,255,255,255,192,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xd39c 펜 + 156,211,30,34,16,33,1,253,0,0,0,0,0,0,21,0,0,0,0,0,2,160,63,64,0,0,0,0,3,244,63,64,0,0,0,0,3,244,63,64,63,255,255,255,3,244,63,64,63,255,255,255,3,244,63,64,63,255,255,255,3,244,63,64,1,252,11,224,3,244,63,64,1,252,11,224,3,244,63,64,1,252,11,224,3,244,63,64,1,252,11,227,255,244,63,64,1,252,11,227,255,244,63,64,1,252,11,227,255,244,63,64,1,252,11,224,3,244,63,64,1,252,11,224,3,244,63,64,1,252,11,224,3,244,63,64,1,252,11,246,131,244,63,64,127,255,255,255,195,244,63,64,63,255,255,255,195,244,63,64,63,255,254,165,3,244,63,64,0,0,0,0,3,244,63,64,0,0,0,0,3,244,63,64,0,1,84,0,3,244,63,64,0,3,252,0,3,244,63,64,0,3,252,0,2,160,63,64,0,3,252,0,0,0,21,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,255,255,255,255,255,208,0,3,255,255,255,255,255,208,0,3,255,255,255,255,255,208,0,0,0,0,0,0,0,0, + // 0xd504 프 + 4,213,30,26,208,33,2,1,15,255,255,255,255,255,248,0,15,255,255,255,255,255,248,0,15,255,255,255,255,255,248,0,0,3,248,0,15,240,0,0,0,3,248,0,15,240,0,0,0,3,248,0,15,240,0,0,0,3,248,0,15,240,0,0,0,3,248,0,15,240,0,0,0,3,248,0,15,240,0,0,0,3,248,0,15,240,0,0,0,3,248,0,15,240,0,0,0,3,248,0,15,240,0,0,0,3,248,0,15,240,0,0,0,3,248,0,15,240,0,0,11,255,255,255,255,255,248,0,11,255,255,255,255,255,248,0,11,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208, + // 0xd558 하 + 88,213,31,34,16,33,1,253,0,0,0,0,0,5,80,0,0,0,191,0,0,11,240,0,0,0,191,0,0,11,240,0,0,0,191,0,0,11,240,0,0,0,191,0,0,11,240,0,0,0,191,0,0,11,240,0,127,255,255,255,254,11,240,0,127,255,255,255,254,11,240,0,127,255,255,255,254,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,2,255,144,0,11,240,0,0,31,255,252,0,11,240,0,0,191,255,255,64,11,240,0,2,255,65,191,192,11,255,252,3,252,0,31,224,11,255,252,7,244,0,15,240,11,255,252,11,240,0,7,240,11,240,0,11,240,0,7,244,11,240,0,11,240,0,7,244,11,240,0,11,240,0,7,240,11,240,0,7,244,0,15,240,11,240,0,3,252,0,31,224,11,240,0,2,255,65,191,192,11,240,0,0,191,255,255,64,11,240,0,0,31,255,252,0,11,240,0,0,2,255,144,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0, + // 0xd569 합 + 105,213,30,33,8,33,2,254,0,1,168,0,0,0,0,0,0,1,253,0,0,31,192,0,0,1,253,0,0,31,192,0,0,1,253,0,0,31,192,0,255,255,255,255,252,31,192,0,255,255,255,255,252,31,192,0,255,255,255,255,252,31,192,0,0,0,0,0,0,31,192,0,0,10,254,128,0,31,192,0,0,255,255,248,0,31,255,240,3,255,255,255,0,31,255,240,15,248,0,191,128,31,255,240,15,224,0,47,192,31,192,0,31,192,0,31,208,31,192,0,31,208,0,31,208,31,192,0,15,224,0,63,192,31,192,0,11,253,1,255,128,31,192,0,3,255,255,254,0,31,192,0,0,191,255,244,0,31,192,0,0,6,170,64,0,31,192,0,0,0,0,0,0,0,0,0,0,191,0,0,0,31,192,0,0,191,0,0,0,31,192,0,0,191,0,0,0,31,192,0,0,191,255,255,255,255,192,0,0,191,255,255,255,255,192,0,0,191,255,255,255,255,192,0,0,191,0,0,0,31,192,0,0,191,0,0,0,31,192,0,0,191,0,0,0,31,192,0,0,191,255,255,255,255,192,0,0,191,255,255,255,255,192,0,0,191,255,255,255,255,192,0, + // 0xd648 홈 + 72,214,29,34,16,33,2,253,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,47,255,255,255,255,255,253,0,47,255,255,255,255,255,254,0,47,255,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,111,255,254,64,0,0,0,11,255,255,255,248,0,0,0,127,254,170,175,255,64,0,0,255,128,0,0,191,192,0,0,255,0,0,0,63,192,0,0,255,0,0,0,63,192,0,0,191,228,0,6,255,128,0,0,47,255,255,255,254,0,0,0,6,255,255,255,228,0,0,0,0,5,191,148,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,252,0,0,0,15,224,0,2,252,0,0,0,15,224,0,2,252,0,0,0,15,224,0,2,252,0,0,0,15,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0,2,255,255,255,255,255,224,0, + // 0xd654 화 + 84,214,31,34,16,33,1,253,0,0,0,0,0,7,240,0,0,0,63,128,0,7,240,0,0,0,63,128,0,7,240,0,0,0,63,128,0,7,240,0,63,255,255,255,255,71,240,0,63,255,255,255,255,71,240,0,63,255,255,255,255,71,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,1,174,144,0,7,240,0,0,31,255,254,0,7,240,0,0,127,255,255,192,7,240,0,0,255,128,127,224,7,240,0,2,253,0,15,240,7,240,0,3,248,0,7,244,7,244,0,3,244,0,3,244,7,255,252,3,248,0,3,244,7,255,252,2,252,0,11,240,7,255,252,1,255,64,111,224,7,240,0,0,191,255,255,192,7,240,0,0,31,255,254,0,7,240,0,0,1,191,208,0,7,240,0,0,0,63,128,0,7,240,0,0,0,63,128,0,7,240,0,0,0,127,150,175,135,240,0,127,255,255,255,255,199,240,0,127,255,255,255,255,135,240,0,63,255,254,169,64,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0, + // 0xd788 히 + 136,215,27,34,238,33,2,253,0,0,0,0,0,1,80,0,0,191,0,0,3,248,0,0,191,0,0,3,248,0,0,191,0,0,3,248,0,0,191,0,0,3,248,0,0,191,0,0,3,248,127,255,255,255,255,3,248,127,255,255,255,255,3,248,127,255,255,255,255,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,2,255,144,0,3,248,0,31,255,252,0,3,248,0,255,255,255,64,3,248,2,255,65,191,192,3,248,3,252,0,31,224,3,248,11,244,0,15,240,3,248,15,240,0,7,244,3,248,15,224,0,3,244,3,248,15,224,0,3,244,3,248,15,240,0,7,244,3,248,11,244,0,15,240,3,248,3,252,0,31,224,3,248,2,255,65,191,192,3,248,0,255,255,255,64,3,248,0,47,255,252,0,3,248,0,2,255,144,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Latin_Extended_A_26.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Latin_Extended_A_26.cpp new file mode 100644 index 0000000000..fe1b4bdc12 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Latin_Extended_A_26.cpp @@ -0,0 +1,288 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Latin Extended-A 36pt, capital 'A' height: 26px, width: 100%, range: 0x0100-0x017f +extern const uint8_t NotoSans_Medium_Latin_Extended_A_26[19795] = { + 130,26,0,1,127,1,34,247, // unifont_t + // 0x0100 Ā + 24,31,186,24,0,0,0,10,170,170,128,0,0,15,255,255,192,0,0,15,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x0101 ā + 17,26,130,21,1,255,0,170,170,168,0,0,255,255,252,0,0,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x0102 Ă + 24,33,198,24,0,0,0,15,0,2,224,0,0,15,128,7,208,0,0,11,255,255,192,0,0,3,255,255,0,0,0,0,191,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x0103 ă + 17,28,140,21,1,255,2,224,0,60,0,1,244,0,188,0,0,255,255,248,0,0,127,255,224,0,0,11,255,64,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x0104 Ą + 24,35,210,24,0,247,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,3,253,0,0,0,0,2,240,0,0,0,0,11,192,0,0,0,0,31,64,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,63,148,0,0,0,0,31,253,0,0,0,0,7,253,0,0,0,0,0,0, + // 0x0105 ą + 18,29,145,21,1,247,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,47,0,0,0,0,125,0,0,0,0,248,0,0,0,2,244,0,0,0,2,244,0,0,0,2,253,80,0,0,0,255,224,0,0,0,127,208,0,0,0,0,0, + // 0x0106 Ć + 20,35,175,23,2,255,0,0,0,42,144,0,0,0,127,192,0,0,0,255,0,0,0,3,252,0,0,0,11,240,0,0,0,15,192,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,144,0,15,255,255,253,0,127,255,255,252,2,255,245,91,252,7,255,0,0,36,15,252,0,0,0,47,240,0,0,0,63,208,0,0,0,63,192,0,0,0,127,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,224,0,0,0,31,244,0,0,0,15,253,0,0,0,3,255,208,1,184,0,255,255,255,248,0,63,255,255,248,0,6,255,255,224,0,0,5,80,0, + // 0x0107 ć + 15,29,116,18,2,255,0,0,10,160,0,0,63,224,0,0,127,128,0,0,254,0,0,3,248,0,0,11,224,0,0,0,0,0,0,0,0,0,0,6,170,64,0,255,255,244,7,255,255,240,15,254,171,224,63,240,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,128,0,0,63,192,0,0,63,244,0,176,15,255,255,240,3,255,255,240,0,127,255,208,0,1,84,0, + // 0x0108 Ĉ + 20,35,175,23,2,255,0,0,26,144,0,0,0,63,244,0,0,0,255,252,0,0,3,252,255,0,0,11,240,47,192,0,47,128,7,240,0,0,0,0,0,0,0,0,0,0,0,0,191,255,144,0,15,255,255,253,0,127,255,255,252,2,255,245,91,252,7,255,0,0,36,15,252,0,0,0,47,240,0,0,0,63,208,0,0,0,63,192,0,0,0,127,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,224,0,0,0,31,244,0,0,0,15,253,0,0,0,3,255,208,1,184,0,255,255,255,248,0,63,255,255,248,0,6,255,255,224,0,0,5,80,0, + // 0x0109 ĉ + 15,29,116,18,2,255,0,10,164,0,0,47,252,0,0,127,255,0,0,254,127,128,3,248,15,224,15,208,2,248,0,0,0,0,0,0,0,0,0,6,170,64,0,255,255,244,7,255,255,240,15,254,171,224,63,240,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,128,0,0,63,192,0,0,63,244,0,176,15,255,255,240,3,255,255,240,0,127,255,208,0,1,84,0, + // 0x010a Ċ + 20,34,170,23,2,255,0,0,6,128,0,0,0,31,224,0,0,0,31,240,0,0,0,31,224,0,0,0,6,64,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,144,0,15,255,255,253,0,127,255,255,252,2,255,245,91,252,7,255,0,0,36,15,252,0,0,0,47,240,0,0,0,63,208,0,0,0,63,192,0,0,0,127,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,224,0,0,0,31,244,0,0,0,15,253,0,0,0,3,255,208,1,184,0,255,255,255,248,0,63,255,255,248,0,6,255,255,224,0,0,5,80,0, + // 0x010b ċ + 15,28,112,18,2,255,0,2,144,0,0,11,240,0,0,15,244,0,0,11,240,0,0,1,128,0,0,0,0,0,0,0,0,0,0,6,170,64,0,255,255,244,7,255,255,240,15,254,171,224,63,240,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,128,0,0,63,192,0,0,63,244,0,176,15,255,255,240,3,255,255,240,0,127,255,208,0,1,84,0, + // 0x010c Č + 20,35,175,23,2,255,0,42,0,1,160,0,31,208,15,224,0,7,244,63,128,0,2,254,254,0,0,0,191,252,0,0,0,63,240,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,144,0,15,255,255,253,0,127,255,255,252,2,255,245,91,252,7,255,0,0,36,15,252,0,0,0,47,240,0,0,0,63,208,0,0,0,63,192,0,0,0,127,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,224,0,0,0,31,244,0,0,0,15,253,0,0,0,3,255,208,1,184,0,255,255,255,248,0,63,255,255,248,0,6,255,255,224,0,0,5,80,0, + // 0x010d č + 15,29,116,18,2,255,10,64,0,164,11,224,7,240,3,252,47,208,0,255,191,64,0,63,253,0,0,31,248,0,0,0,0,0,0,0,0,0,0,6,170,64,0,255,255,244,7,255,255,240,15,254,171,224,63,240,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,128,0,0,63,192,0,0,63,244,0,176,15,255,255,240,3,255,255,240,0,127,255,208,0,1,84,0, + // 0x010e Ď + 21,34,204,26,3,0,1,164,0,10,64,0,0,254,0,127,0,0,0,63,130,252,0,0,0,15,251,240,0,0,0,3,255,208,0,0,0,1,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,170,169,0,0,0,191,255,255,248,0,0,191,255,255,255,64,0,191,170,175,255,224,0,191,64,0,127,248,0,191,64,0,11,253,0,191,64,0,2,255,0,191,64,0,0,255,64,191,64,0,0,191,128,191,64,0,0,127,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,127,192,191,64,0,0,191,128,191,64,0,0,255,64,191,64,0,2,255,0,191,64,0,11,253,0,191,64,0,127,248,0,191,149,91,255,240,0,191,255,255,255,128,0,191,255,255,248,0,0,191,255,254,64,0,0, + // 0x010f ď + 24,29,174,22,2,255,0,0,0,5,64,84,0,0,0,31,209,253,0,0,0,31,209,252,0,0,0,31,210,244,0,0,0,31,211,240,0,0,0,31,211,208,0,0,0,31,209,64,0,0,0,31,208,0,0,26,164,31,208,0,1,255,255,31,208,0,11,255,255,223,208,0,31,254,91,255,208,0,63,224,0,255,208,0,127,192,0,127,208,0,191,64,0,63,208,0,255,0,0,47,208,0,255,0,0,31,208,0,255,0,0,31,208,0,255,0,0,31,208,0,255,0,0,31,208,0,255,0,0,31,208,0,255,0,0,47,208,0,191,64,0,63,208,0,127,192,0,127,208,0,63,240,1,255,208,0,15,255,255,239,208,0,7,255,255,143,208,0,0,191,253,15,208,0,0,5,64,0,0,0, + // 0x0110 Đ + 23,26,156,26,1,0,6,170,170,144,0,0,7,255,255,255,128,0,7,255,255,255,244,0,7,254,170,255,254,0,7,244,0,7,255,128,7,244,0,0,191,208,7,244,0,0,47,240,7,244,0,0,15,244,7,244,0,0,11,248,7,244,0,0,7,252,7,244,0,0,3,252,91,249,85,0,3,252,255,255,255,64,3,252,255,255,255,64,3,252,255,255,255,0,3,252,7,244,0,0,3,252,7,244,0,0,7,252,7,244,0,0,11,248,7,244,0,0,15,244,7,244,0,0,47,240,7,244,0,0,191,208,7,244,0,7,255,128,7,249,85,191,254,0,7,255,255,255,248,0,7,255,255,255,128,0,7,255,255,228,0,0, + // 0x0111 đ + 20,29,145,23,2,255,0,0,0,5,64,0,0,0,31,208,0,0,0,31,208,0,1,85,111,229,0,11,255,255,255,0,11,255,255,255,0,1,85,111,229,0,0,0,31,208,0,5,64,31,208,0,191,253,31,208,7,255,255,159,208,31,255,255,255,208,63,240,2,255,208,127,192,0,127,208,191,128,0,63,208,255,0,0,47,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,47,208,191,64,0,63,208,127,192,0,127,208,63,240,1,255,208,31,255,255,239,208,7,255,255,143,208,0,191,253,15,208,0,5,64,0,0, + // 0x0112 Ē + 15,31,124,20,3,0,6,170,170,144,11,255,255,208,11,255,255,208,0,0,0,0,0,0,0,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x0113 ē + 17,26,130,21,2,255,2,170,170,160,0,3,255,255,240,0,3,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x0114 Ĕ + 15,33,132,20,3,0,15,64,2,240,15,192,7,224,7,255,255,192,2,255,255,64,0,127,248,0,0,0,0,0,0,0,0,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x0115 ĕ + 17,28,140,21,2,255,11,128,0,244,0,7,208,2,240,0,3,255,255,224,0,1,255,255,192,0,0,47,253,0,0,0,0,0,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x0116 Ė + 15,33,132,20,3,0,0,6,128,0,0,15,240,0,0,15,240,0,0,15,240,0,0,2,128,0,0,0,0,0,0,0,0,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x0117 ė + 17,28,140,21,2,255,0,2,144,0,0,0,11,244,0,0,0,15,244,0,0,0,11,244,0,0,0,1,144,0,0,0,0,0,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x0118 Ę + 15,35,140,20,3,247,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252,0,0,7,208,0,0,31,128,0,0,63,0,0,0,126,0,0,0,125,0,0,0,127,84,0,0,63,252,0,0,15,248,0,0,0,0, + // 0x0119 ę + 17,29,145,21,2,247,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,253,0,0,0,86,244,0,0,0,7,208,0,0,0,15,128,0,0,0,31,64,0,0,0,47,64,0,0,0,47,213,0,0,0,15,254,0,0,0,7,254,0,0,0,0,0,0, + // 0x011a Ě + 15,34,136,20,3,0,26,0,1,164,15,208,11,240,3,248,63,192,0,254,255,0,0,127,252,0,0,47,244,0,0,0,0,0,0,0,0,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x011b ě + 17,29,145,21,2,255,10,64,0,168,0,11,240,7,244,0,2,252,31,208,0,0,191,191,64,0,0,63,254,0,0,0,15,252,0,0,0,0,0,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x011c Ĝ + 22,35,210,26,2,255,0,0,6,164,0,0,0,0,31,253,0,0,0,0,63,255,0,0,0,0,255,63,192,0,0,3,248,15,240,0,0,11,224,2,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,255,228,0,0,11,255,255,255,192,0,63,255,255,255,128,1,255,249,85,191,64,3,255,128,0,2,0,15,252,0,0,0,0,31,240,0,0,0,0,63,224,0,0,0,0,63,192,0,0,0,0,127,128,0,0,0,0,191,64,0,0,0,0,255,64,0,0,0,0,255,0,0,191,255,208,255,0,0,255,255,208,255,64,0,255,255,208,191,64,0,106,175,208,191,128,0,0,31,208,127,192,0,0,31,208,63,192,0,0,31,208,47,224,0,0,31,208,31,244,0,0,31,208,11,254,0,0,31,208,3,255,208,0,111,208,0,255,255,255,255,208,0,47,255,255,255,208,0,2,255,255,254,64,0,0,1,84,0,0, + // 0x011d ĝ + 18,37,185,22,2,247,0,2,168,0,0,0,15,254,0,0,0,47,255,64,0,0,191,111,208,0,2,252,11,240,0,7,224,1,252,0,0,0,0,0,0,0,0,0,0,0,0,26,160,5,64,2,255,255,15,208,11,255,255,207,208,31,254,91,255,208,63,224,0,255,208,127,192,0,127,208,191,64,0,63,208,255,0,0,47,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,47,208,191,64,0,63,208,127,192,0,127,208,63,240,1,255,208,15,255,191,255,208,7,255,255,159,208,0,191,253,31,208,0,5,64,31,208,0,0,0,47,192,0,0,0,63,192,0,0,0,63,192,36,0,0,255,64,47,233,91,255,0,47,255,255,252,0,31,255,255,224,0,0,90,165,0,0, + // 0x011e Ğ + 22,34,204,26,2,255,0,7,192,0,244,0,0,3,208,2,240,0,0,3,255,255,224,0,0,0,255,255,192,0,0,0,47,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,255,228,0,0,11,255,255,255,192,0,63,255,255,255,128,1,255,249,85,191,64,3,255,128,0,2,0,15,252,0,0,0,0,31,240,0,0,0,0,63,224,0,0,0,0,63,192,0,0,0,0,127,128,0,0,0,0,191,64,0,0,0,0,255,64,0,0,0,0,255,0,0,191,255,208,255,0,0,255,255,208,255,64,0,255,255,208,191,64,0,106,175,208,191,128,0,0,31,208,127,192,0,0,31,208,63,192,0,0,31,208,47,224,0,0,31,208,31,244,0,0,31,208,11,254,0,0,31,208,3,255,208,0,111,208,0,255,255,255,255,208,0,47,255,255,255,208,0,2,255,255,254,64,0,0,1,84,0,0, + // 0x011f ğ + 18,36,180,22,2,247,3,192,0,184,0,3,224,1,248,0,1,255,255,240,0,0,191,255,208,0,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,26,160,5,64,2,255,255,15,208,11,255,255,207,208,31,254,91,255,208,63,224,0,255,208,127,192,0,127,208,191,64,0,63,208,255,0,0,47,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,47,208,191,64,0,63,208,127,192,0,127,208,63,240,1,255,208,15,255,191,255,208,7,255,255,159,208,0,191,253,31,208,0,5,64,31,208,0,0,0,47,192,0,0,0,63,192,0,0,0,63,192,36,0,0,255,64,47,233,91,255,0,47,255,255,252,0,31,255,255,224,0,0,90,165,0,0, + // 0x0120 Ġ + 22,34,204,26,2,255,0,0,2,160,0,0,0,0,7,248,0,0,0,0,11,248,0,0,0,0,7,244,0,0,0,0,1,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,255,228,0,0,11,255,255,255,192,0,63,255,255,255,128,1,255,249,85,191,64,3,255,128,0,2,0,15,252,0,0,0,0,31,240,0,0,0,0,63,224,0,0,0,0,63,192,0,0,0,0,127,128,0,0,0,0,191,64,0,0,0,0,255,64,0,0,0,0,255,0,0,191,255,208,255,0,0,255,255,208,255,64,0,255,255,208,191,64,0,106,175,208,191,128,0,0,31,208,127,192,0,0,31,208,63,192,0,0,31,208,47,224,0,0,31,208,31,244,0,0,31,208,11,254,0,0,31,208,3,255,208,0,111,208,0,255,255,255,255,208,0,47,255,255,255,208,0,2,255,255,254,64,0,0,1,84,0,0, + // 0x0121 ġ + 18,36,180,22,2,247,0,1,160,0,0,0,3,252,0,0,0,7,252,0,0,0,3,252,0,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,26,160,5,64,2,255,255,15,208,11,255,255,207,208,31,254,91,255,208,63,224,0,255,208,127,192,0,127,208,191,64,0,63,208,255,0,0,47,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,47,208,191,64,0,63,208,127,192,0,127,208,63,240,1,255,208,15,255,191,255,208,7,255,255,159,208,0,191,253,31,208,0,5,64,31,208,0,0,0,47,192,0,0,0,63,192,0,0,0,63,192,36,0,0,255,64,47,233,91,255,0,47,255,255,252,0,31,255,255,224,0,0,90,165,0,0, + // 0x0122 Ģ + 22,34,204,26,2,248,0,0,111,255,228,0,0,11,255,255,255,192,0,63,255,255,255,128,1,255,249,85,191,64,3,255,128,0,2,0,15,252,0,0,0,0,31,240,0,0,0,0,63,224,0,0,0,0,63,192,0,0,0,0,127,128,0,0,0,0,191,64,0,0,0,0,255,64,0,0,0,0,255,0,0,191,255,208,255,0,0,255,255,208,255,64,0,255,255,208,191,64,0,106,175,208,191,128,0,0,31,208,127,192,0,0,31,208,63,192,0,0,31,208,47,224,0,0,31,208,31,244,0,0,31,208,11,254,0,0,31,208,3,255,208,0,111,208,0,255,255,255,255,208,0,47,255,255,255,208,0,2,255,255,254,64,0,0,1,84,0,0,0,0,0,0,0,0,0,0,2,248,0,0,0,0,3,244,0,0,0,0,7,240,0,0,0,0,11,224,0,0,0,0,15,192,0,0,0,0,15,64,0,0, + // 0x0123 ģ + 18,37,185,22,2,247,0,0,40,0,0,0,0,188,0,0,0,0,252,0,0,0,2,248,0,0,0,3,244,0,0,0,11,240,0,0,0,0,0,0,0,0,0,0,0,0,0,26,160,5,64,2,255,255,15,208,11,255,255,207,208,31,254,91,255,208,63,224,0,255,208,127,192,0,127,208,191,64,0,63,208,255,0,0,47,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,47,208,191,64,0,63,208,127,192,0,127,208,63,240,1,255,208,15,255,191,255,208,7,255,255,159,208,0,191,253,31,208,0,5,64,31,208,0,0,0,47,192,0,0,0,63,192,0,0,0,63,192,36,0,0,255,64,47,233,91,255,0,47,255,255,252,0,31,255,255,224,0,0,90,165,0,0, + // 0x0124 Ĥ + 21,34,204,27,3,0,0,0,106,64,0,0,0,1,255,208,0,0,0,3,255,240,0,0,0,15,243,252,0,0,0,63,128,255,0,0,0,253,0,47,128,0,0,0,0,0,0,0,0,0,0,0,0,0,106,0,0,0,106,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,255,255,255,255,64,191,255,255,255,255,64,191,255,255,255,255,64,191,85,85,85,191,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64,191,64,0,0,127,64, + // 0x0125 ĥ + 22,36,216,23,254,0,0,42,128,0,0,0,0,255,224,0,0,0,2,255,244,0,0,0,11,246,253,0,0,0,31,208,127,64,0,0,127,0,15,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,64,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,106,144,0,0,63,135,255,253,0,0,63,175,255,255,64,0,63,255,150,255,192,0,63,248,0,63,208,0,63,224,0,31,224,0,63,208,0,15,224,0,63,192,0,15,240,0,63,192,0,15,240,0,63,192,0,15,240,0,63,192,0,15,240,0,63,192,0,15,240,0,63,192,0,15,240,0,63,192,0,15,240,0,63,192,0,15,240,0,63,192,0,15,240,0,63,192,0,15,240,0,63,192,0,15,240,0,63,192,0,15,240,0,63,192,0,15,240, + // 0x0126 Ħ + 27,26,182,27,0,0,1,168,0,0,1,169,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,171,255,170,170,171,255,168,255,255,255,255,255,255,252,255,255,255,255,255,255,252,2,253,0,0,2,254,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,255,255,255,255,253,0,2,255,255,255,255,253,0,2,255,255,255,255,253,0,2,253,85,85,86,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0, + // 0x0127 ħ + 20,28,140,23,0,0,1,84,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,255,255,255,240,0,255,255,255,240,0,87,253,85,80,0,3,252,0,0,0,3,252,0,0,0,3,252,11,254,0,3,248,191,255,224,3,250,255,255,248,3,255,228,31,252,3,255,64,3,253,3,254,0,1,254,3,253,0,0,255,3,252,0,0,255,3,252,0,0,255,3,252,0,0,255,3,252,0,0,255,3,252,0,0,255,3,252,0,0,255,3,252,0,0,255,3,252,0,0,255,3,252,0,0,255,3,252,0,0,255,3,252,0,0,255,3,252,0,0,255, + // 0x0128 Ĩ + 14,33,132,13,255,0,1,160,0,160,15,254,1,240,47,255,251,224,62,31,255,192,124,1,255,0,0,0,0,0,0,0,0,0,6,170,170,0,11,255,255,64,7,255,255,0,0,47,224,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,2,255,253,0,11,255,255,64,11,255,255,64, + // 0x0129 ĩ + 14,27,108,10,254,0,2,144,1,144,31,253,3,208,63,255,239,192,189,47,255,128,244,2,254,0,0,0,0,0,0,0,0,0,0,21,64,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0, + // 0x012a Ī + 11,31,93,13,1,0,170,170,168,255,255,252,255,255,252,0,0,0,0,0,0,106,170,160,191,255,244,127,255,240,2,254,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,47,255,208,191,255,244,191,255,244, + // 0x012b ī + 12,25,75,10,255,0,106,170,169,191,255,253,191,255,253,0,0,0,0,0,0,0,85,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0, + // 0x012c Ĭ + 13,33,132,13,0,0,184,0,15,64,125,0,47,0,63,255,254,0,31,255,252,0,2,255,208,0,0,0,0,0,0,0,0,0,26,170,168,0,47,255,253,0,31,255,252,0,0,191,128,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,11,255,244,0,47,255,253,0,47,255,253,0, + // 0x012d ĭ + 12,27,81,10,255,0,240,0,46,248,0,126,127,255,252,47,255,244,7,255,128,0,0,0,0,0,0,0,85,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0, + // 0x012e Į + 11,35,105,13,1,247,106,170,160,191,255,244,127,255,240,2,254,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,47,255,208,191,255,244,191,255,244,0,15,192,0,63,0,0,125,0,0,252,0,0,252,0,0,254,80,0,127,244,0,47,240,0,0,0, + // 0x012f į + 7,36,72,10,1,247,6,128,15,240,15,240,15,240,2,128,0,0,0,0,5,80,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,11,192,47,0,126,0,188,0,252,0,190,80,127,244,31,244,0,0, + // 0x0130 İ + 11,33,99,13,1,0,0,168,0,2,253,0,2,254,0,1,253,0,0,100,0,0,0,0,0,0,0,106,170,160,191,255,244,127,255,240,2,254,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,47,255,208,191,255,244,191,255,244, + // 0x0131 ı + 4,20,20,10,3,0,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x0132 IJ + 19,34,170,23,1,248,106,170,160,2,168,191,255,244,3,252,127,255,240,3,252,2,254,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,2,253,0,3,252,47,255,208,3,252,191,255,244,3,252,191,255,244,3,252,0,0,0,3,252,0,0,0,7,248,0,0,0,15,244,0,0,37,127,240,0,0,63,255,208,0,0,63,255,128,0,0,47,248,0,0,0,0,0,0, + // 0x0133 ij + 14,36,144,20,3,247,104,0,6,128,255,0,31,224,255,0,31,240,255,0,15,224,40,0,6,64,0,0,0,0,0,0,0,0,85,0,5,64,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,255,0,15,224,0,0,15,224,0,0,15,224,0,0,15,224,0,0,31,224,0,0,47,208,0,42,255,192,0,127,255,128,0,127,254,0,0,26,144,0, + // 0x0134 Ĵ + 15,42,168,10,253,248,0,10,164,0,0,47,252,0,0,127,255,0,0,254,127,128,3,248,15,224,15,208,2,248,0,0,0,0,0,0,0,0,0,10,160,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,11,240,0,0,15,240,0,0,15,240,0,0,47,224,0,85,191,208,0,255,255,128,0,255,254,0,0,191,228,0,0,0,0,0,0, + // 0x0135 ĵ + 13,37,148,10,254,247,0,42,128,0,0,255,224,0,2,255,244,0,11,246,253,0,31,192,127,0,127,0,31,192,0,0,0,0,0,0,0,0,0,21,64,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,128,0,0,191,128,0,170,255,64,0,255,254,0,0,255,248,0,0,106,64,0,0, + // 0x0136 Ķ + 20,34,170,23,3,248,106,0,0,2,168,191,64,0,15,244,191,64,0,63,224,191,64,0,191,128,191,64,2,255,0,191,64,7,252,0,191,64,31,240,0,191,64,63,192,0,191,64,255,64,0,191,67,253,0,0,191,79,248,0,0,191,111,240,0,0,191,255,244,0,0,191,255,252,0,0,191,247,254,0,0,191,208,255,64,0,191,64,191,192,0,191,64,63,240,0,191,64,15,248,0,191,64,7,252,0,191,64,2,255,0,191,64,0,255,128,191,64,0,63,208,191,64,0,47,240,191,64,0,15,248,191,64,0,3,253,0,0,0,0,0,0,0,0,0,0,0,0,253,0,0,0,1,252,0,0,0,2,252,0,0,0,3,244,0,0,0,3,224,0,0,0,7,192,0,0, + // 0x0137 ķ + 17,36,180,20,3,248,85,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,85,0,255,0,3,254,0,255,0,15,248,0,255,0,47,224,0,255,0,191,128,0,255,2,255,0,0,255,11,252,0,0,254,31,240,0,0,254,127,192,0,0,254,255,192,0,0,255,255,240,0,0,255,239,248,0,0,255,131,253,0,0,255,1,255,0,0,255,0,191,192,0,255,0,63,224,0,255,0,15,244,0,255,0,7,252,0,255,0,2,255,0,255,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,15,208,0,0,0,31,192,0,0,0,47,192,0,0,0,63,64,0,0,0,62,0,0,0,0,124,0,0,0, + // 0x0138 ĸ + 17,20,100,20,3,0,85,0,0,85,0,255,0,3,254,0,255,0,11,248,0,255,0,31,240,0,255,0,127,192,0,255,0,255,0,0,255,3,253,0,0,255,15,244,0,0,255,47,224,0,0,255,191,192,0,0,255,255,240,0,0,255,255,248,0,0,255,211,253,0,0,255,1,255,0,0,255,0,191,192,0,255,0,63,224,0,255,0,15,244,0,255,0,7,252,0,255,0,2,255,0,255,0,0,255,128, + // 0x0139 Ĺ + 16,34,136,19,3,0,0,170,0,0,3,254,0,0,7,248,0,0,15,224,0,0,63,128,0,0,190,0,0,0,0,0,0,0,0,0,0,0,106,0,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,253,191,255,255,253,191,255,255,253, + // 0x013a ĺ + 8,36,72,10,3,0,1,170,3,253,15,244,47,208,127,64,253,0,0,0,0,0,85,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, + // 0x013b Ļ + 16,34,136,19,3,248,106,0,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,253,191,255,255,253,191,255,255,253,0,0,0,0,0,0,0,0,0,7,244,0,0,11,240,0,0,11,224,0,0,15,192,0,0,31,64,0,0,47,0,0, + // 0x013c ļ + 6,36,72,10,2,248,21,64,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,0,0,0,0,31,208,31,192,47,128,63,0,126,0,188,0, + // 0x013d Ľ + 16,26,104,19,3,0,106,0,0,169,191,64,1,253,191,64,1,252,191,64,2,244,191,64,3,240,191,64,3,192,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,253,191,255,255,253,191,255,255,253, + // 0x013e ľ + 10,28,84,10,3,0,85,1,80,255,15,240,255,15,208,255,15,192,255,31,64,255,47,0,255,20,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, + // 0x013f Ŀ + 16,26,104,19,3,0,106,0,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,10,64,191,64,47,208,191,64,63,208,191,64,47,208,191,64,6,64,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,253,191,255,255,253,191,255,255,253, + // 0x0140 ŀ + 10,28,84,11,3,0,85,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,10,64,255,63,192,255,63,208,255,47,192,255,6,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, + // 0x0141 Ł + 19,26,130,19,0,0,1,168,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,7,0,0,2,253,127,64,0,2,255,255,128,0,2,255,253,0,0,2,255,224,0,0,11,255,0,0,0,127,253,0,0,0,63,253,0,0,0,42,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,254,85,85,80,2,255,255,255,244,2,255,255,255,244,2,255,255,255,244, + // 0x0142 ł + 10,28,84,10,0,0,1,80,0,3,248,0,3,248,0,3,248,0,3,248,0,3,248,0,3,248,0,3,248,0,3,248,0,3,248,0,3,248,0,3,248,128,3,255,224,3,255,240,3,255,128,31,253,0,191,248,0,255,248,0,123,248,0,3,248,0,3,248,0,3,248,0,3,248,0,3,248,0,3,248,0,3,248,0,3,248,0,3,248,0, + // 0x0143 Ń + 22,34,204,28,3,0,0,0,0,106,128,0,0,0,0,255,64,0,0,0,3,253,0,0,0,0,7,244,0,0,0,0,15,208,0,0,0,0,63,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,128,0,0,10,144,191,240,0,0,15,224,191,244,0,0,15,224,191,252,0,0,15,224,191,254,0,0,15,224,191,255,64,0,15,224,190,127,192,0,15,224,191,63,224,0,15,224,191,15,240,0,15,224,191,11,252,0,15,224,191,3,253,0,15,224,191,1,255,0,15,224,191,0,191,128,15,224,191,0,63,208,15,224,191,0,31,240,15,224,191,0,15,248,15,224,191,0,3,253,15,224,191,0,2,255,15,224,191,0,0,255,143,224,191,0,0,127,207,224,191,0,0,47,255,224,191,0,0,15,255,224,191,0,0,7,255,224,191,0,0,3,255,224,191,0,0,0,255,224,191,0,0,0,191,224, + // 0x0144 ń + 17,28,140,23,3,0,0,0,10,160,0,0,0,63,224,0,0,0,127,192,0,0,0,255,0,0,0,3,248,0,0,0,11,224,0,0,0,0,0,0,0,0,0,0,0,0,84,1,170,64,0,252,47,255,244,0,253,191,255,253,0,255,254,91,255,0,255,224,0,255,64,255,128,0,127,128,255,64,0,63,128,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192, + // 0x0145 Ņ + 22,34,204,28,3,248,106,128,0,0,10,144,191,240,0,0,15,224,191,244,0,0,15,224,191,252,0,0,15,224,191,254,0,0,15,224,191,255,64,0,15,224,190,127,192,0,15,224,191,63,224,0,15,224,191,15,240,0,15,224,191,11,252,0,15,224,191,3,253,0,15,224,191,1,255,0,15,224,191,0,191,128,15,224,191,0,63,208,15,224,191,0,31,240,15,224,191,0,15,248,15,224,191,0,3,253,15,224,191,0,2,255,15,224,191,0,0,255,143,224,191,0,0,127,207,224,191,0,0,47,255,224,191,0,0,15,255,224,191,0,0,7,255,224,191,0,0,3,255,224,191,0,0,0,255,224,191,0,0,0,191,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,208,0,0,0,0,31,192,0,0,0,0,47,128,0,0,0,0,63,0,0,0,0,0,62,0,0,0,0,0,124,0,0,0, + // 0x0146 ņ + 17,28,140,23,3,248,84,1,170,64,0,252,47,255,244,0,253,191,255,253,0,255,254,91,255,0,255,224,0,255,64,255,128,0,127,128,255,64,0,63,128,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,0,0,0,0,0,0,0,0,0,0,0,2,248,0,0,0,3,244,0,0,0,7,240,0,0,0,11,224,0,0,0,15,192,0,0,0,15,64,0,0, + // 0x0147 Ň + 22,34,204,28,3,0,0,104,0,6,144,0,0,63,64,47,192,0,0,15,224,255,0,0,0,3,251,252,0,0,0,1,255,240,0,0,0,0,191,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,128,0,0,10,144,191,240,0,0,15,224,191,244,0,0,15,224,191,252,0,0,15,224,191,254,0,0,15,224,191,255,64,0,15,224,190,127,192,0,15,224,191,63,224,0,15,224,191,15,240,0,15,224,191,11,252,0,15,224,191,3,253,0,15,224,191,1,255,0,15,224,191,0,191,128,15,224,191,0,63,208,15,224,191,0,31,240,15,224,191,0,15,248,15,224,191,0,3,253,15,224,191,0,2,255,15,224,191,0,0,255,143,224,191,0,0,127,207,224,191,0,0,47,255,224,191,0,0,15,255,224,191,0,0,7,255,224,191,0,0,3,255,224,191,0,0,0,255,224,191,0,0,0,191,224, + // 0x0148 ň + 17,28,140,23,3,0,10,64,0,164,0,11,224,7,244,0,2,252,31,208,0,0,255,191,64,0,0,63,254,0,0,0,15,252,0,0,0,0,0,0,0,0,0,0,0,0,84,1,170,64,0,252,47,255,244,0,253,191,255,253,0,255,254,91,255,0,255,224,0,255,64,255,128,0,127,128,255,64,0,63,128,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192, + // 0x0149 ʼn + 23,26,156,26,0,0,10,160,0,0,0,0,31,224,0,0,0,0,47,208,0,0,0,0,47,192,0,0,0,0,63,128,0,0,0,0,63,64,0,0,0,0,127,5,64,26,164,0,190,15,194,255,255,64,252,15,219,255,255,208,0,15,255,229,191,240,0,15,253,0,15,244,0,15,248,0,7,248,0,15,244,0,3,248,0,15,240,0,3,252,0,15,240,0,3,252,0,15,240,0,3,252,0,15,240,0,3,252,0,15,240,0,3,252,0,15,240,0,3,252,0,15,240,0,3,252,0,15,240,0,3,252,0,15,240,0,3,252,0,15,240,0,3,252,0,15,240,0,3,252,0,15,240,0,3,252,0,15,240,0,3,252, + // 0x014a Ŋ + 22,34,204,28,3,248,106,128,0,0,10,144,191,240,0,0,15,224,191,248,0,0,15,224,191,253,0,0,15,224,191,255,0,0,15,224,191,255,128,0,15,224,190,127,208,0,15,224,191,47,240,0,15,224,191,15,248,0,15,224,191,7,253,0,15,224,191,2,255,0,15,224,191,0,255,128,15,224,191,0,63,208,15,224,191,0,47,240,15,224,191,0,15,248,15,224,191,0,3,253,15,224,191,0,1,255,15,224,191,0,0,255,143,224,191,0,0,63,223,224,191,0,0,31,255,224,191,0,0,15,255,224,191,0,0,3,255,224,191,0,0,1,255,224,191,0,0,0,191,224,191,0,0,0,63,224,191,0,0,0,31,224,0,0,0,0,15,208,0,0,0,0,31,208,0,0,0,0,47,192,0,0,1,85,255,192,0,0,2,255,255,0,0,0,2,255,253,0,0,0,1,255,224,0,0,0,0,0,0,0, + // 0x014b ŋ + 17,29,145,23,3,247,84,1,170,64,0,252,47,255,244,0,253,191,255,253,0,255,254,91,255,0,255,224,0,255,64,255,192,0,127,128,255,64,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,127,128,0,0,106,255,64,0,0,127,255,0,0,0,127,252,0,0,0,26,144,0, + // 0x014c Ō + 24,32,192,28,2,255,0,6,170,170,144,0,0,7,255,255,224,0,0,7,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x014d ō + 18,26,130,22,2,255,1,170,170,164,0,2,255,255,244,0,2,255,255,244,0,0,0,0,0,0,0,0,0,0,0,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x014e Ŏ + 24,34,204,28,2,255,0,15,64,1,240,0,0,11,192,3,240,0,0,3,255,255,208,0,0,1,255,255,128,0,0,0,127,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x014f ŏ + 18,28,140,22,2,255,3,208,0,124,0,3,240,1,248,0,1,255,255,240,0,0,191,255,208,0,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x0150 Ő + 24,35,210,28,2,255,0,0,106,66,168,0,0,0,255,11,244,0,0,2,252,15,224,0,0,7,240,47,128,0,0,15,208,126,0,0,0,47,64,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x0151 ő + 18,29,145,22,2,255,0,26,128,169,0,0,127,194,253,0,0,255,7,244,0,1,252,15,224,0,3,240,47,128,0,11,192,62,0,0,0,0,0,0,0,0,0,0,0,0,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x0152 Œ + 30,27,216,34,2,255,0,1,191,254,170,170,170,160,0,47,255,255,255,255,255,240,0,255,255,255,255,255,255,240,3,255,229,91,255,170,170,144,11,254,0,1,254,0,0,0,15,244,0,1,254,0,0,0,47,224,0,1,254,0,0,0,63,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,191,128,0,1,254,0,0,0,191,64,0,1,254,0,0,0,255,64,0,1,255,255,255,192,255,0,0,1,255,255,255,192,255,0,0,1,255,255,255,192,255,64,0,1,254,0,0,0,191,64,0,1,254,0,0,0,191,128,0,1,254,0,0,0,127,192,0,1,254,0,0,0,63,192,0,1,254,0,0,0,63,224,0,1,254,0,0,0,31,240,0,1,254,0,0,0,15,252,0,1,254,0,0,0,3,255,144,6,254,85,85,80,0,255,255,255,255,255,255,240,0,63,255,255,255,255,255,240,0,6,255,255,255,255,255,240,0,0,5,80,0,0,0,0, + // 0x0153 œ + 31,21,168,34,2,255,0,6,169,0,0,170,128,0,0,255,255,208,11,255,252,0,7,255,255,248,63,255,255,64,15,254,91,254,255,145,191,192,63,224,0,255,253,0,31,224,127,192,0,63,248,0,15,240,191,64,0,47,240,0,7,244,255,0,0,31,240,0,7,244,255,0,0,31,250,170,175,248,255,0,0,15,255,255,255,248,255,0,0,15,255,255,255,248,255,0,0,15,240,0,0,0,255,0,0,31,240,0,0,0,255,0,0,47,240,0,0,0,191,64,0,63,244,0,0,0,63,192,0,127,252,0,0,0,47,244,1,255,255,64,1,160,15,255,255,253,127,254,255,224,2,255,255,244,31,255,255,224,0,127,255,128,2,255,255,128,0,1,80,0,0,5,64,0, + // 0x0154 Ŕ + 19,34,170,23,3,0,0,0,10,164,0,0,0,47,240,0,0,0,127,192,0,0,0,255,0,0,0,2,252,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,106,170,165,0,0,191,255,255,224,0,191,255,255,253,0,191,170,191,255,0,191,64,1,255,128,191,64,0,127,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,127,128,191,64,2,255,0,191,234,191,253,0,191,255,255,244,0,191,255,255,128,0,191,170,191,192,0,191,64,47,208,0,191,64,15,240,0,191,64,11,248,0,191,64,3,253,0,191,64,1,255,0,191,64,0,191,128,191,64,0,63,192,191,64,0,47,240,191,64,0,15,244,191,64,0,7,252, + // 0x0155 ŕ + 12,28,84,15,3,0,0,1,169,0,7,252,0,15,244,0,47,208,0,127,64,0,252,0,0,0,0,0,0,0,84,1,169,252,15,254,253,63,253,254,255,253,255,248,0,255,208,0,255,128,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, + // 0x0156 Ŗ + 19,34,170,23,3,248,106,170,165,0,0,191,255,255,224,0,191,255,255,253,0,191,170,191,255,0,191,64,1,255,128,191,64,0,127,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,127,128,191,64,2,255,0,191,234,191,253,0,191,255,255,244,0,191,255,255,128,0,191,170,191,192,0,191,64,47,208,0,191,64,15,240,0,191,64,11,248,0,191,64,3,253,0,191,64,1,255,0,191,64,0,191,128,191,64,0,63,192,191,64,0,47,240,191,64,0,15,244,191,64,0,7,252,0,0,0,0,0,0,0,0,0,0,0,0,253,0,0,0,1,253,0,0,0,1,252,0,0,0,3,244,0,0,0,3,224,0,0,0,7,192,0,0, + // 0x0157 ŗ + 13,28,112,15,2,248,21,0,106,64,63,3,255,128,63,79,255,64,63,191,255,64,63,254,0,0,63,244,0,0,63,224,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,0,0,0,0,0,0,0,0,31,208,0,0,47,192,0,0,63,128,0,0,63,0,0,0,125,0,0,0,188,0,0,0, + // 0x0158 Ř + 19,34,170,23,3,0,10,64,0,168,0,11,240,3,244,0,2,252,31,208,0,0,191,191,128,0,0,63,254,0,0,0,15,252,0,0,0,0,0,0,0,0,0,0,0,0,106,170,165,0,0,191,255,255,224,0,191,255,255,253,0,191,170,191,255,0,191,64,1,255,128,191,64,0,127,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,63,192,191,64,0,127,128,191,64,2,255,0,191,234,191,253,0,191,255,255,244,0,191,255,255,128,0,191,170,191,192,0,191,64,47,208,0,191,64,15,240,0,191,64,11,248,0,191,64,3,253,0,191,64,1,255,0,191,64,0,191,128,191,64,0,63,192,191,64,0,47,240,191,64,0,15,244,191,64,0,7,252, + // 0x0159 ř + 13,28,112,15,2,0,104,0,6,128,63,64,47,128,31,208,254,0,7,251,252,0,2,255,240,0,0,255,208,0,0,0,0,0,0,0,0,0,21,0,106,64,63,3,255,128,63,79,255,64,63,191,255,64,63,254,0,0,63,244,0,0,63,224,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0, + // 0x015a Ś + 16,35,140,20,2,255,0,0,10,160,0,0,63,224,0,0,191,128,0,0,254,0,0,3,248,0,0,11,224,0,0,0,0,0,0,0,0,0,0,111,255,144,7,255,255,253,31,255,255,253,63,249,86,252,191,192,0,20,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,208,0,0,63,253,0,0,15,255,208,0,3,255,253,0,0,127,255,208,0,6,255,244,0,0,47,252,0,0,7,254,0,0,0,255,0,0,0,255,0,0,0,191,0,0,0,255,64,0,1,255,249,0,11,253,255,255,255,248,255,255,255,224,111,255,254,0,0,21,64,0, + // 0x015b ś + 14,29,116,17,2,255,0,0,170,64,0,1,255,0,0,3,252,0,0,11,240,0,0,31,192,0,0,63,0,0,0,0,0,0,0,0,0,0,0,106,164,0,15,255,255,192,63,255,255,192,255,149,111,128,254,0,0,0,254,0,0,0,255,0,0,0,255,208,0,0,63,254,0,0,15,255,244,0,1,255,254,0,0,27,255,192,0,0,191,208,0,0,31,240,0,0,15,240,0,0,15,240,208,0,47,224,255,170,255,192,255,255,255,64,127,255,248,0,0,85,0,0, + // 0x015c Ŝ + 16,35,140,20,2,255,0,10,164,0,0,47,252,0,0,127,255,0,0,254,127,128,3,248,15,224,15,208,2,248,0,0,0,0,0,0,0,0,0,111,255,144,7,255,255,253,31,255,255,253,63,249,86,252,191,192,0,20,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,208,0,0,63,253,0,0,15,255,208,0,3,255,253,0,0,127,255,208,0,6,255,244,0,0,47,252,0,0,7,254,0,0,0,255,0,0,0,255,0,0,0,191,0,0,0,255,64,0,1,255,249,0,11,253,255,255,255,248,255,255,255,224,111,255,254,0,0,21,64,0, + // 0x015d ŝ + 14,29,116,17,2,255,0,106,128,0,0,255,208,0,3,255,244,0,11,242,252,0,47,192,191,0,190,0,31,192,0,0,0,0,0,0,0,0,0,106,164,0,15,255,255,192,63,255,255,192,255,149,111,128,254,0,0,0,254,0,0,0,255,0,0,0,255,208,0,0,63,254,0,0,15,255,244,0,1,255,254,0,0,27,255,192,0,0,191,208,0,0,31,240,0,0,15,240,0,0,15,240,208,0,47,224,255,170,255,192,255,255,255,64,127,255,248,0,0,85,0,0, + // 0x015e Ş + 16,35,140,20,2,247,0,111,255,144,7,255,255,253,31,255,255,253,63,249,86,252,191,192,0,20,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,208,0,0,63,253,0,0,15,255,208,0,3,255,253,0,0,127,255,208,0,6,255,244,0,0,47,252,0,0,7,254,0,0,0,255,0,0,0,255,0,0,0,191,0,0,0,255,64,0,1,255,249,0,11,253,255,255,255,248,255,255,255,224,111,255,254,0,0,31,192,0,0,31,64,0,0,63,224,0,0,7,248,0,0,0,252,0,0,0,252,0,0,171,248,0,1,255,240,0,0,169,64,0, + // 0x015f ş + 14,29,116,17,2,247,0,106,164,0,15,255,255,192,63,255,255,192,255,149,111,128,254,0,0,0,254,0,0,0,255,0,0,0,255,208,0,0,63,254,0,0,15,255,244,0,1,255,254,0,0,27,255,192,0,0,191,208,0,0,31,240,0,0,15,240,0,0,15,240,208,0,47,224,255,170,255,192,255,255,255,64,127,255,248,0,0,127,0,0,0,62,0,0,0,191,208,0,0,27,240,0,0,2,244,0,0,3,244,0,2,175,240,0,3,255,208,0,1,169,0,0, + // 0x0160 Š + 16,35,140,20,2,255,10,64,0,164,11,224,7,240,3,252,47,208,0,255,191,64,0,63,253,0,0,31,248,0,0,0,0,0,0,0,0,0,0,111,255,144,7,255,255,253,31,255,255,253,63,249,86,252,191,192,0,20,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,208,0,0,63,253,0,0,15,255,208,0,3,255,253,0,0,127,255,208,0,6,255,244,0,0,47,252,0,0,7,254,0,0,0,255,0,0,0,255,0,0,0,191,0,0,0,255,64,0,1,255,249,0,11,253,255,255,255,248,255,255,255,224,111,255,254,0,0,21,64,0, + // 0x0161 š + 14,29,116,17,2,255,104,0,6,128,127,64,47,128,31,208,254,0,7,251,252,0,2,255,240,0,0,255,192,0,0,0,0,0,0,0,0,0,0,106,164,0,15,255,255,192,63,255,255,192,255,149,111,128,254,0,0,0,254,0,0,0,255,0,0,0,255,208,0,0,63,254,0,0,15,255,244,0,1,255,254,0,0,27,255,192,0,0,191,208,0,0,31,240,0,0,15,240,0,0,15,240,208,0,47,224,255,170,255,192,255,255,255,64,127,255,248,0,0,85,0,0, + // 0x0162 Ţ + 20,35,175,20,0,247,106,170,170,170,170,191,255,255,255,255,191,255,255,255,255,106,170,255,170,169,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,61,0,0,0,0,188,0,0,0,0,255,128,0,0,0,31,224,0,0,0,7,240,0,0,0,7,240,0,0,6,175,224,0,0,7,255,128,0,0,2,164,0,0, + // 0x0163 ţ + 13,33,132,14,0,247,0,60,0,0,0,188,0,0,0,252,0,0,0,252,0,0,3,253,85,64,47,255,255,128,127,255,255,128,43,254,170,64,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,253,0,0,1,255,0,0,0,255,255,192,0,127,255,192,0,31,255,128,0,3,224,0,0,11,192,0,0,15,248,0,0,1,253,0,0,0,126,0,0,0,126,0,0,106,253,0,0,191,248,0,0,106,64,0, + // 0x0164 Ť + 20,34,170,20,0,0,0,164,0,10,64,0,254,0,127,0,0,63,194,252,0,0,15,251,244,0,0,3,255,208,0,0,1,255,128,0,0,0,0,0,0,0,0,0,0,0,106,170,170,170,170,191,255,255,255,255,191,255,255,255,255,106,170,255,170,169,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0, + // 0x0165 ť + 18,29,145,14,0,255,0,0,0,5,80,0,0,0,15,240,0,0,0,15,208,0,0,0,15,192,0,60,0,31,64,0,188,0,47,0,0,252,0,20,0,0,252,0,0,0,3,253,85,64,0,47,255,255,128,0,127,255,255,128,0,43,254,170,64,0,2,252,0,0,0,2,252,0,0,0,2,252,0,0,0,2,252,0,0,0,2,252,0,0,0,2,252,0,0,0,2,252,0,0,0,2,252,0,0,0,2,252,0,0,0,2,252,0,0,0,2,252,0,0,0,2,253,0,0,0,1,255,0,0,0,0,255,255,192,0,0,127,255,192,0,0,31,255,128,0,0,0,80,0,0, + // 0x0166 Ŧ + 20,26,130,20,0,0,106,170,170,170,170,191,255,255,255,255,191,255,255,255,255,106,170,255,170,170,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,1,170,255,170,128,3,255,255,255,192,3,255,255,255,192,2,170,255,170,128,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0, + // 0x0167 ŧ + 13,25,100,14,0,255,0,60,0,0,0,188,0,0,0,252,0,0,0,252,0,0,3,253,85,64,47,255,255,128,127,255,255,128,43,254,170,64,2,252,0,0,2,252,0,0,2,252,0,0,23,253,85,0,63,255,255,64,63,255,255,64,23,253,85,0,2,252,0,0,2,252,0,0,2,252,0,0,2,252,0,0,2,253,0,0,1,255,0,0,0,255,255,192,0,127,255,192,0,31,255,128,0,0,80,0, + // 0x0168 Ũ + 21,34,204,27,3,255,0,6,128,2,128,0,0,63,248,7,192,0,0,191,255,239,128,0,0,248,127,255,0,0,1,240,7,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,255,0,63,224,0,3,253,0,15,253,0,47,248,0,7,255,255,255,240,0,1,255,255,255,128,0,0,47,255,249,0,0,0,0,21,0,0,0, + // 0x0169 ũ + 17,28,140,23,3,255,0,104,0,40,0,3,255,128,124,0,11,255,254,248,0,15,135,255,240,0,31,0,127,192,0,0,0,0,0,0,0,0,0,0,0,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,31,128,0,21,0,0,0, + // 0x016a Ū + 21,32,192,27,3,255,0,42,170,170,0,0,0,63,255,255,0,0,0,63,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,255,0,63,224,0,3,253,0,15,253,0,47,248,0,7,255,255,255,240,0,1,255,255,255,128,0,0,47,255,249,0,0,0,0,21,0,0,0, + // 0x016b ū + 17,26,130,23,3,255,2,170,170,160,0,3,255,255,240,0,3,255,255,240,0,0,0,0,0,0,0,0,0,0,0,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,31,128,0,21,0,0,0, + // 0x016c Ŭ + 21,34,204,27,3,255,0,184,0,15,0,0,0,125,0,47,0,0,0,63,255,254,0,0,0,31,255,248,0,0,0,2,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,255,0,63,224,0,3,253,0,15,253,0,47,248,0,7,255,255,255,240,0,1,255,255,255,128,0,0,47,255,249,0,0,0,0,21,0,0,0, + // 0x016d ŭ + 17,28,140,23,3,255,11,128,0,240,0,7,208,2,240,0,3,255,255,224,0,1,255,255,128,0,0,47,253,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,31,128,0,21,0,0,0, + // 0x016e Ů + 21,37,222,27,3,255,0,0,105,0,0,0,0,2,255,208,0,0,0,7,231,240,0,0,0,11,128,244,0,0,0,15,64,244,0,0,0,11,129,240,0,0,0,3,255,224,0,0,0,1,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,255,0,63,224,0,3,253,0,15,253,0,47,248,0,7,255,255,255,240,0,1,255,255,255,128,0,0,47,255,249,0,0,0,0,21,0,0,0, + // 0x016f ů + 17,31,155,23,3,255,0,6,144,0,0,0,47,253,0,0,0,126,127,0,0,0,184,15,64,0,0,180,15,64,0,0,188,31,0,0,0,63,254,0,0,0,31,248,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,31,128,0,21,0,0,0, + // 0x0170 Ű + 21,35,210,27,3,255,0,6,164,42,128,0,0,15,240,127,128,0,0,47,208,255,0,0,0,63,66,252,0,0,0,189,3,240,0,0,1,244,15,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,255,0,63,224,0,3,253,0,15,253,0,47,248,0,7,255,255,255,240,0,1,255,255,255,128,0,0,47,255,249,0,0,0,0,21,0,0,0, + // 0x0171 ű + 17,29,145,23,3,255,0,106,66,168,0,0,255,7,248,0,1,253,15,240,0,3,244,47,192,0,11,208,63,0,0,31,64,252,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,31,128,0,21,0,0,0, + // 0x0172 Ų + 21,35,210,27,3,247,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,254,0,63,224,0,3,253,0,15,253,0,47,252,0,7,255,255,255,240,0,1,255,255,255,192,0,0,47,255,255,0,0,0,0,20,125,0,0,0,0,0,248,0,0,0,0,2,240,0,0,0,0,3,240,0,0,0,0,3,240,0,0,0,0,3,249,64,0,0,0,1,255,208,0,0,0,0,127,208,0,0,0,0,0,0,0, + // 0x0173 ų + 17,29,145,23,3,247,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,47,128,0,21,0,125,0,0,0,1,248,0,0,0,3,240,0,0,0,7,224,0,0,0,7,208,0,0,0,7,245,64,0,0,3,255,192,0,0,0,255,128,0,0,0,0,0, + // 0x0174 Ŵ + 34,34,50,34,0,0,0,0,0,2,168,0,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,47,255,64,0,0,0,0,0,0,191,111,208,0,0,0,0,0,1,253,7,244,0,0,0,0,0,7,240,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,2,168,0,0,26,144,127,128,0,7,252,0,0,47,192,63,192,0,11,253,0,0,63,192,63,192,0,15,254,0,0,63,128,47,208,0,31,255,0,0,127,64,31,224,0,47,255,64,0,191,0,15,240,0,63,191,128,0,255,0,15,240,0,63,111,192,0,254,0,11,244,0,127,31,192,1,253,0,7,248,0,191,15,208,2,252,0,3,252,0,254,15,240,3,252,0,3,252,1,253,11,240,3,248,0,2,253,2,252,3,244,7,244,0,1,254,3,248,3,248,11,240,0,0,255,3,244,2,252,15,240,0,0,191,7,240,1,252,15,224,0,0,127,75,240,0,253,31,208,0,0,63,143,224,0,254,47,192,0,0,63,143,208,0,191,63,192,0,0,47,223,192,0,63,63,64,0,0,31,239,128,0,63,191,0,0,0,15,255,64,0,47,255,0,0,0,15,255,0,0,31,254,0,0,0,11,255,0,0,15,253,0,0,0,7,254,0,0,15,252,0,0,0,3,253,0,0,11,252,0,0, + // 0x0175 ŵ + 29,28,224,29,0,0,0,0,0,106,64,0,0,0,0,0,1,255,208,0,0,0,0,0,3,255,240,0,0,0,0,0,15,243,252,0,0,0,0,0,63,128,255,0,0,0,0,0,190,0,47,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,85,64,0,21,64,127,128,0,255,192,0,127,64,63,192,0,255,192,0,191,0,63,192,1,255,208,0,255,0,47,208,2,251,240,0,254,0,15,224,3,243,240,2,253,0,15,240,7,243,244,3,252,0,11,240,11,226,248,3,248,0,7,244,15,209,252,7,244,0,3,248,15,192,252,11,240,0,3,252,31,192,254,15,240,0,2,252,63,128,191,15,224,0,1,253,63,0,127,31,208,0,0,254,127,0,63,111,192,0,0,254,126,0,47,175,192,0,0,127,189,0,31,191,64,0,0,63,252,0,15,255,0,0,0,63,252,0,15,255,0,0,0,47,244,0,11,254,0,0,0,31,240,0,7,253,0,0, + // 0x0176 Ŷ + 21,34,204,21,0,0,0,0,106,64,0,0,0,1,255,208,0,0,0,3,255,240,0,0,0,15,243,252,0,0,0,63,128,255,0,0,0,253,0,47,128,0,0,0,0,0,0,0,0,0,0,0,0,0,170,64,0,0,106,128,127,192,0,0,255,64,63,208,0,1,255,0,31,240,0,3,252,0,11,244,0,7,248,0,3,252,0,15,240,0,2,253,0,31,224,0,0,255,0,63,192,0,0,191,128,127,128,0,0,63,192,255,0,0,0,47,226,253,0,0,0,15,243,252,0,0,0,7,255,244,0,0,0,3,255,240,0,0,0,1,255,208,0,0,0,0,255,128,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0, + // 0x0177 ŷ + 19,37,185,19,0,247,0,1,169,0,0,0,7,255,64,0,0,15,255,192,0,0,63,207,240,0,0,254,3,252,0,3,244,0,190,0,0,0,0,0,0,0,0,0,0,0,85,0,0,1,84,191,64,0,7,248,63,192,0,15,240,63,192,0,15,240,31,224,0,31,208,15,240,0,63,192,11,244,0,63,128,3,248,0,191,64,3,252,0,255,0,1,253,0,254,0,0,255,2,252,0,0,191,3,252,0,0,63,71,244,0,0,63,203,240,0,0,31,207,224,0,0,15,223,208,0,0,11,255,192,0,0,3,255,128,0,0,3,255,0,0,0,1,255,0,0,0,1,253,0,0,0,3,252,0,0,0,3,248,0,0,0,11,244,0,0,0,47,240,0,0,38,255,192,0,0,127,255,64,0,0,127,253,0,0,0,42,144,0,0,0, + // 0x0178 Ÿ + 21,33,198,21,0,0,0,5,0,20,0,0,0,47,192,254,0,0,0,63,192,255,0,0,0,47,128,190,0,0,0,5,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,64,0,0,106,128,127,192,0,0,255,64,63,208,0,1,255,0,31,240,0,3,252,0,11,244,0,7,248,0,3,252,0,15,240,0,2,253,0,31,224,0,0,255,0,63,192,0,0,191,128,127,128,0,0,63,192,255,0,0,0,47,226,253,0,0,0,15,243,252,0,0,0,7,255,244,0,0,0,3,255,240,0,0,0,1,255,208,0,0,0,0,255,128,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0, + // 0x0179 Ź + 19,34,170,21,1,0,0,0,2,169,0,0,0,11,252,0,0,0,31,240,0,0,0,63,192,0,0,0,191,0,0,0,1,248,0,0,0,0,0,0,0,0,0,0,0,0,106,170,170,170,160,127,255,255,255,240,127,255,255,255,240,42,170,170,191,240,0,0,0,63,192,0,0,0,255,64,0,0,2,255,0,0,0,3,252,0,0,0,15,244,0,0,0,47,224,0,0,0,63,192,0,0,0,255,64,0,0,2,254,0,0,0,3,252,0,0,0,15,244,0,0,0,47,224,0,0,0,127,192,0,0,0,255,64,0,0,2,254,0,0,0,7,252,0,0,0,15,244,0,0,0,47,224,0,0,0,127,213,85,85,80,255,255,255,255,244,255,255,255,255,244,255,255,255,255,244, + // 0x017a ź + 15,28,112,17,1,0,0,0,42,144,0,0,191,192,0,0,255,0,0,3,252,0,0,11,240,0,0,31,128,0,0,0,0,0,0,0,0,0,21,85,85,80,63,255,255,248,63,255,255,248,42,170,175,244,0,0,31,224,0,0,63,192,0,0,255,0,0,2,254,0,0,7,252,0,0,15,240,0,0,47,208,0,0,127,128,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,192,0,0,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x017b Ż + 19,33,165,21,1,0,0,0,168,0,0,0,1,253,0,0,0,2,254,0,0,0,1,253,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,106,170,170,170,160,127,255,255,255,240,127,255,255,255,240,42,170,170,191,240,0,0,0,63,192,0,0,0,255,64,0,0,2,255,0,0,0,3,252,0,0,0,15,244,0,0,0,47,224,0,0,0,63,192,0,0,0,255,64,0,0,2,254,0,0,0,3,252,0,0,0,15,244,0,0,0,47,224,0,0,0,127,192,0,0,0,255,64,0,0,2,254,0,0,0,7,252,0,0,0,15,244,0,0,0,47,224,0,0,0,127,213,85,85,80,255,255,255,255,244,255,255,255,255,244,255,255,255,255,244, + // 0x017c ż + 15,27,108,17,1,0,0,10,128,0,0,31,224,0,0,47,224,0,0,31,208,0,0,6,64,0,0,0,0,0,0,0,0,0,21,85,85,80,63,255,255,248,63,255,255,248,42,170,175,244,0,0,31,224,0,0,63,192,0,0,255,0,0,2,254,0,0,7,252,0,0,15,240,0,0,47,208,0,0,127,128,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,192,0,0,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x017d Ž + 19,34,170,21,1,0,2,160,0,42,0,1,252,0,253,0,0,191,7,244,0,0,47,239,224,0,0,15,255,128,0,0,3,255,0,0,0,0,0,0,0,0,0,0,0,0,106,170,170,170,160,127,255,255,255,240,127,255,255,255,240,42,170,170,191,240,0,0,0,63,192,0,0,0,255,64,0,0,2,255,0,0,0,3,252,0,0,0,15,244,0,0,0,47,224,0,0,0,63,192,0,0,0,255,64,0,0,2,254,0,0,0,3,252,0,0,0,15,244,0,0,0,47,224,0,0,0,127,192,0,0,0,255,64,0,0,2,254,0,0,0,7,252,0,0,0,15,244,0,0,0,47,224,0,0,0,127,213,85,85,80,255,255,255,255,244,255,255,255,255,244,255,255,255,255,244, + // 0x017e ž + 15,28,112,17,1,0,42,0,2,160,31,192,15,224,7,244,127,128,2,254,254,0,0,191,252,0,0,63,240,0,0,0,0,0,0,0,0,0,21,85,85,80,63,255,255,248,63,255,255,248,42,170,175,244,0,0,31,224,0,0,63,192,0,0,255,0,0,2,254,0,0,7,252,0,0,15,240,0,0,47,208,0,0,127,128,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,192,0,0,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x017f ſ + 11,28,84,12,3,0,0,89,64,11,255,244,47,255,240,127,250,224,191,128,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Simplified_Chinese_26.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Simplified_Chinese_26.cpp new file mode 100644 index 0000000000..607d9118ae --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Simplified_Chinese_26.cpp @@ -0,0 +1,778 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Simplified Chinese 36pt, capital 'A' height: 26px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 +extern const uint8_t NotoSans_Medium_Simplified_Chinese_26[20454] = { + 162,26,28,32,26,255,34,247, // unifont_t + // 0x201c “ + 28,32,13,10,40,14,0,16,1,160,6,128,3,240,15,192,7,240,31,192,15,224,47,128,15,208,63,64,47,192,191,0,63,192,255,0,63,192,255,0,127,129,254,0,0,0,0,0, + // 0x201d ” + 29,32,13,10,40,14,0,16,10,160,42,128,15,240,63,192,15,240,63,192,31,208,127,128,47,192,127,0,63,128,191,0,63,64,253,0,63,0,252,0,125,1,248,0,0,0,0,0, + // 0x22bf ⊿ + 191,34,28,29,203,36,3,0,0,0,0,0,0,0,2,0,0,0,0,0,0,11,0,0,0,0,0,0,31,0,0,0,0,0,0,127,0,0,0,0,0,1,255,0,0,0,0,0,7,255,0,0,0,0,0,31,255,0,0,0,0,0,127,255,0,0,0,0,1,255,63,0,0,0,0,3,252,63,0,0,0,0,15,240,63,0,0,0,0,63,192,63,0,0,0,0,255,0,63,0,0,0,3,252,0,63,0,0,0,15,240,0,63,0,0,0,63,192,0,63,0,0,0,255,64,0,63,0,0,3,253,0,0,63,0,0,15,244,0,0,63,0,0,63,208,0,0,63,0,0,255,64,0,0,63,0,2,253,0,0,0,63,0,11,244,0,0,0,63,0,47,224,0,0,0,63,0,191,128,0,0,0,63,2,254,0,0,0,0,63,11,255,255,255,255,255,255,47,255,255,255,255,255,255,191,255,255,255,255,255,255, + // 0x4e00 一 + 0,78,34,4,36,36,1,12,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,42,170,170,170,170,170,170,170,144, + // 0x4e09 三 + 9,78,32,29,232,36,2,255,1,85,85,85,85,85,85,64,7,255,255,255,255,255,255,224,7,255,255,255,255,255,255,224,7,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,85,85,85,85,84,0,0,63,255,255,255,255,248,0,0,63,255,255,255,255,248,0,0,63,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,253,191,255,255,255,255,255,255,253,191,255,255,255,255,255,255,253,21,85,85,85,85,85,85,84, + // 0x4e0a 上 + 10,78,32,32,0,36,2,255,0,0,0,21,64,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,213,85,85,64,0,0,0,63,255,255,255,224,0,0,0,63,255,255,255,224,0,0,0,63,255,255,255,224,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,85,85,85,127,213,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x4e0b 下 + 11,78,32,32,0,36,2,253,85,85,85,85,85,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,253,0,0,0,0,0,0,47,255,208,0,0,0,0,0,47,255,252,0,0,0,0,0,47,223,255,128,0,0,0,0,47,194,255,244,0,0,0,0,47,192,127,255,0,0,0,0,47,192,11,255,208,0,0,0,47,192,0,255,240,0,0,0,47,192,0,47,192,0,0,0,47,192,0,7,64,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,31,192,0,0,0, + // 0x4e0d 不 + 13,78,33,32,32,36,2,253,21,85,85,85,85,85,85,84,0,127,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,253,0,0,0,0,2,255,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,127,240,0,0,0,0,0,0,0,255,240,0,0,0,0,0,0,3,255,242,224,0,0,0,0,0,15,255,251,252,0,0,0,0,0,63,255,247,255,64,0,0,0,0,255,207,240,255,224,0,0,0,7,255,79,240,47,252,0,0,0,31,253,15,240,7,255,64,0,0,191,240,15,240,1,255,208,0,7,255,192,15,240,0,63,248,0,47,254,0,15,240,0,15,254,0,255,248,0,15,240,0,2,255,64,191,208,0,15,240,0,0,253,0,62,0,0,15,240,0,0,52,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0, + // 0x4e13 专 + 19,78,32,35,24,36,2,252,0,0,0,127,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,254,0,0,0,0,3,255,255,255,255,255,255,192,3,255,255,255,255,255,255,192,3,255,255,255,255,255,255,192,0,0,3,244,0,0,0,0,0,0,7,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,15,208,0,0,0,0,255,255,255,255,255,255,255,253,255,255,255,255,255,255,255,253,255,255,255,255,255,255,255,253,0,0,127,64,0,0,0,0,0,0,191,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,253,0,0,0,0,0,0,2,255,255,255,255,255,0,0,3,255,255,255,255,255,192,0,3,255,255,255,255,255,0,0,0,0,0,0,11,252,0,0,0,0,0,0,47,240,0,0,0,0,0,0,191,192,0,0,0,0,0,2,255,0,0,0,0,190,64,11,252,0,0,0,1,255,249,47,240,0,0,0,1,191,255,255,208,0,0,0,0,6,255,255,128,0,0,0,0,0,31,255,244,0,0,0,0,0,0,191,255,64,0,0,0,0,0,11,255,208,0,0,0,0,0,0,127,192,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0, + // 0x4e1d 丝 + 29,78,32,32,0,36,2,255,0,0,144,0,0,2,64,0,0,1,252,0,0,7,240,0,0,2,252,0,0,15,240,0,0,3,244,0,0,15,208,0,0,7,240,0,0,47,192,0,0,15,224,0,0,63,0,0,0,31,192,0,0,190,0,0,0,63,128,56,1,252,0,244,0,127,0,191,3,248,2,253,0,253,0,254,7,240,3,248,1,252,2,252,15,208,15,240,3,244,7,244,63,128,31,208,15,224,15,240,255,255,255,128,63,255,255,192,255,255,255,0,63,255,255,64,191,255,253,0,31,255,255,0,101,7,248,0,4,2,252,0,0,15,240,0,0,7,244,0,0,47,192,0,0,15,224,0,0,127,64,0,0,63,192,0,0,254,0,0,0,255,0,0,3,248,0,0,2,252,0,0,15,240,0,0,15,255,255,252,127,255,255,252,31,255,255,252,191,255,255,252,15,255,255,252,127,255,255,248,10,149,0,0,58,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x4e2a 个 + 42,78,34,33,41,36,1,253,0,0,0,7,252,0,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,63,255,64,0,0,0,0,0,0,191,255,192,0,0,0,0,0,1,255,31,240,0,0,0,0,0,7,253,11,252,0,0,0,0,0,31,248,2,255,0,0,0,0,0,127,224,0,191,192,0,0,0,1,255,128,0,47,244,0,0,0,11,254,0,0,11,254,0,0,0,47,248,0,0,2,255,192,0,0,255,208,0,0,0,127,244,0,11,255,64,3,248,0,15,255,64,127,252,0,3,248,0,3,255,224,255,224,0,3,248,0,0,127,240,63,0,0,3,248,0,0,11,192,24,0,0,3,248,0,0,1,64,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0, + // 0x4e2d 中 + 45,78,30,34,16,36,3,253,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,21,85,85,127,149,85,85,64,191,255,255,255,255,255,255,208,191,255,255,255,255,255,255,208,191,255,255,255,255,255,255,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,191,85,85,127,149,85,95,208,191,255,255,255,255,255,255,208,191,255,255,255,255,255,255,208,191,255,255,255,255,255,255,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0, + // 0x4e3a 为 + 58,78,31,34,16,36,2,253,0,0,0,190,0,0,0,0,0,44,0,191,0,0,0,0,0,254,0,191,0,0,0,0,0,191,64,191,0,0,0,0,0,63,192,191,0,0,0,0,0,15,224,191,0,0,0,0,0,11,224,191,0,0,0,0,0,2,0,190,0,0,0,0,21,85,85,255,85,85,85,80,63,255,255,255,255,255,255,244,63,255,255,255,255,255,255,244,63,255,255,255,255,255,255,244,0,0,0,253,0,0,3,244,0,0,1,252,0,0,3,244,0,0,2,252,0,0,3,244,0,0,3,248,0,0,7,240,0,0,3,244,24,0,7,240,0,0,7,240,254,0,7,240,0,0,15,240,191,64,7,240,0,0,15,224,63,192,7,240,0,0,47,192,15,224,11,240,0,0,63,128,7,244,11,240,0,0,255,64,3,252,11,240,0,1,254,0,1,244,15,224,0,3,252,0,0,64,15,224,0,15,248,0,0,0,15,224,0,63,224,0,0,0,15,208,0,255,192,0,0,0,31,208,3,255,0,0,0,0,47,192,31,252,0,0,0,0,127,192,191,240,0,0,15,255,255,128,63,192,0,0,7,255,255,0,14,0,0,0,3,255,252,0,0,0,0,0,1,85,64,0, + // 0x4e3b 主 + 59,78,32,33,8,36,2,254,0,0,0,36,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,63,244,0,0,0,0,0,0,11,253,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,189,0,0,0,31,255,255,255,255,255,255,240,31,255,255,255,255,255,255,240,31,255,255,255,255,255,255,240,5,85,85,95,245,85,85,80,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,2,255,255,255,255,255,255,128,2,255,255,255,255,255,255,128,2,255,255,255,255,255,255,128,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,21,85,85,95,245,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x4e49 义 + 73,78,34,34,50,36,1,253,0,0,0,6,128,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,7,240,0,3,224,0,0,4,0,3,248,0,7,244,0,0,190,0,2,252,0,15,240,0,0,127,0,0,253,0,15,224,0,0,63,128,0,190,0,47,192,0,0,47,192,0,127,0,63,192,0,0,15,208,0,32,0,127,64,0,0,11,240,0,0,0,255,0,0,0,3,248,0,0,1,253,0,0,0,2,252,0,0,3,252,0,0,0,0,254,0,0,11,244,0,0,0,0,191,64,0,31,240,0,0,0,0,63,192,0,63,192,0,0,0,0,31,240,0,191,64,0,0,0,0,11,248,1,255,0,0,0,0,0,3,254,7,252,0,0,0,0,0,0,255,79,244,0,0,0,0,0,0,127,255,208,0,0,0,0,0,0,31,255,128,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,31,255,128,0,0,0,0,0,0,191,255,240,0,0,0,0,0,7,255,111,254,0,0,0,0,0,47,252,7,255,208,0,0,0,2,255,224,0,255,253,0,0,0,47,255,64,0,31,255,208,0,7,255,248,0,0,2,255,254,64,127,255,128,0,0,0,47,255,208,63,248,0,0,0,0,2,255,64,14,64,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0, + // 0x4e4b 之 + 75,78,34,34,50,36,1,253,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,7,255,255,255,255,255,255,244,0,7,255,255,255,255,255,255,253,0,7,255,255,255,255,255,255,252,0,1,85,85,85,85,85,95,244,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,2,255,0,0,0,0,1,0,0,11,252,0,0,0,0,11,224,0,47,240,0,0,0,0,15,224,0,191,192,0,0,0,0,31,208,2,255,0,0,0,0,0,63,192,15,252,0,0,0,0,0,127,240,127,240,0,0,0,0,0,255,249,255,192,0,0,0,0,1,255,255,254,0,0,0,0,0,3,252,255,244,0,0,0,0,0,11,244,63,248,0,0,0,0,0,15,240,15,255,229,0,0,0,0,63,208,2,255,255,255,255,255,208,191,192,0,47,255,255,255,255,192,47,64,0,1,175,255,255,255,128,6,0,0,0,0,1,85,85,0, + // 0x4e86 了 + 134,78,29,32,0,36,3,253,21,85,85,85,85,85,84,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,192,127,255,255,255,255,255,255,0,0,0,0,0,0,11,253,0,0,0,0,0,0,47,244,0,0,0,0,0,0,191,208,0,0,0,0,0,3,255,64,0,0,0,0,0,15,253,0,0,0,0,0,0,127,240,0,0,0,0,0,26,255,192,0,0,0,0,0,47,254,0,0,0,0,0,0,47,244,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,5,85,127,192,0,0,0,0,11,255,255,128,0,0,0,0,7,255,255,0,0,0,0,0,3,255,232,0,0,0,0, + // 0x4e8c 二 + 140,78,32,26,208,36,2,0,2,170,170,170,170,170,170,128,3,255,255,255,255,255,255,192,3,255,255,255,255,255,255,192,3,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,254, + // 0x4e8e 于 + 142,78,32,32,0,36,2,253,1,85,85,85,85,85,85,64,7,255,255,255,255,255,255,208,7,255,255,255,255,255,255,208,7,255,255,255,255,255,255,208,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,85,85,85,91,245,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,0,0,1,85,111,240,0,0,0,0,1,255,255,240,0,0,0,0,0,255,255,208,0,0,0,0,0,191,250,0,0,0,0, + // 0x4ea4 交 + 164,78,32,35,24,36,2,252,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,21,85,85,95,229,85,85,84,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,0,0,0,0,0,4,0,0,0,0,121,0,0,47,0,0,0,1,255,64,0,255,208,0,0,7,253,0,0,63,248,0,0,31,248,0,0,11,255,0,0,191,224,0,0,1,255,192,3,255,128,0,0,0,127,240,31,254,5,0,0,100,15,252,191,244,191,0,0,255,3,255,63,192,63,64,1,254,0,252,14,0,47,192,3,252,0,32,0,0,15,224,7,248,0,0,0,0,11,244,15,240,0,0,0,0,3,252,63,208,0,0,0,0,1,255,191,128,0,0,0,0,0,191,255,0,0,0,0,0,0,63,252,0,0,0,0,0,0,127,253,0,0,0,0,0,2,255,255,128,0,0,0,0,47,255,255,248,0,0,0,2,255,248,47,255,128,0,0,191,255,192,7,255,254,0,111,255,253,0,0,191,255,254,255,255,208,0,0,11,255,255,127,248,0,0,0,0,111,253,62,64,0,0,0,0,1,184,0,0,0,0,0,0,0,0, + // 0x4eae 亮 + 174,78,32,35,24,36,2,252,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,254,0,0,0,0,0,0,0,0,0,5,85,85,85,85,84,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,64,0,0,1,252,0,0,63,64,0,0,1,252,0,0,63,64,0,0,1,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,21,85,85,85,85,84,0,0,0,0,0,0,0,0,0,106,170,170,170,170,170,170,169,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,125,0,0,0,0,0,0,189,125,0,47,192,11,224,0,189,125,0,63,128,15,224,0,189,125,0,63,128,15,224,0,189,0,0,63,64,15,224,0,0,0,0,127,0,15,224,0,0,0,0,255,0,15,224,0,0,0,1,254,0,15,224,0,52,0,7,252,0,15,224,0,63,0,47,244,0,15,240,0,63,6,255,224,0,15,240,0,191,255,255,64,0,11,255,255,254,191,248,0,0,7,255,255,252,62,64,0,0,1,191,255,224,0,0,0,0,0,0,0,0, + // 0x4ece 从 + 206,78,34,32,32,36,1,253,0,0,254,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,0,253,0,0,63,128,0,0,0,0,253,0,0,63,64,0,0,0,1,253,0,0,63,64,0,0,0,1,253,0,0,63,128,0,0,0,1,252,0,0,127,192,0,0,0,2,252,0,0,127,192,0,0,0,2,252,0,0,191,192,0,0,0,3,252,0,0,191,192,0,0,0,3,248,0,0,255,208,0,0,0,3,253,0,0,255,224,0,0,0,7,255,0,1,255,240,0,0,0,7,255,192,2,255,240,0,0,0,11,255,224,3,255,248,0,0,0,15,255,244,3,250,252,0,0,0,15,231,252,7,245,252,0,0,0,31,210,255,15,240,253,0,0,0,47,192,255,95,240,255,0,0,0,63,192,63,111,208,127,64,0,0,127,128,46,63,192,63,192,0,0,255,0,8,255,64,47,208,0,1,255,0,1,255,0,15,240,0,3,253,0,3,253,0,11,252,0,7,252,0,15,252,0,3,254,0,15,244,0,63,240,0,1,255,128,63,240,0,255,208,0,0,255,224,127,208,0,255,128,0,0,63,192,31,128,0,46,0,0,0,15,0,2,0,0,4,0,0,0,1,0, + // 0x4ee4 令 + 228,78,34,34,50,36,1,253,0,0,0,7,248,0,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,47,255,64,0,0,0,0,0,0,191,255,192,0,0,0,0,0,1,255,31,240,0,0,0,0,0,7,253,11,252,0,0,0,0,0,31,244,2,255,64,0,0,0,0,127,224,0,191,208,0,0,0,2,255,64,0,47,248,0,0,0,11,253,0,0,11,255,0,0,0,63,244,0,0,1,255,208,0,1,255,255,255,255,255,255,248,0,15,255,31,255,255,255,143,255,128,127,248,31,255,255,255,130,255,224,63,208,0,0,0,0,0,127,192,14,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,0,0,63,0,0,15,208,0,0,0,0,63,0,0,15,208,0,0,0,0,63,0,0,15,208,0,0,0,0,63,0,0,15,208,0,0,0,0,63,0,0,15,208,0,0,0,0,63,0,0,15,208,0,0,0,0,63,0,0,31,208,0,0,0,0,63,0,63,255,192,0,0,0,0,63,0,63,255,192,0,0,0,0,63,0,47,254,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0, + // 0x4ee5 以 + 229,78,34,31,23,36,1,253,0,127,0,0,0,0,11,240,0,0,127,0,0,0,0,15,240,0,0,127,0,8,0,0,15,224,0,0,127,0,191,0,0,15,224,0,0,127,0,127,128,0,15,208,0,0,127,0,47,208,0,31,208,0,0,127,0,15,244,0,47,192,0,0,127,0,7,252,0,47,192,0,0,63,0,2,253,0,63,128,0,0,63,64,0,255,0,63,128,0,0,63,64,0,191,64,127,64,0,0,63,64,0,61,0,191,0,0,0,63,64,0,16,0,254,0,0,0,63,64,0,0,1,253,0,0,0,63,64,0,0,2,252,0,0,0,63,64,0,0,3,252,0,0,0,63,64,0,0,11,244,0,0,0,63,128,4,0,15,240,0,0,0,63,128,124,0,47,224,0,0,0,63,139,253,0,127,244,0,0,0,63,255,254,0,255,253,0,0,0,63,255,228,3,255,255,0,0,7,255,254,0,15,252,191,192,0,127,255,224,0,63,240,63,240,0,127,253,0,1,255,208,15,252,0,63,128,0,11,255,64,3,255,0,40,0,0,127,253,0,1,255,128,0,0,11,255,240,0,0,127,208,0,0,31,255,128,0,0,47,224,0,0,7,248,0,0,0,15,64,0,0,1,128,0,0,0,1,0, + // 0x4ef6 件 + 246,78,34,34,50,36,1,253,0,0,144,0,0,21,0,0,0,0,0,253,0,0,191,0,0,0,0,2,252,10,64,191,0,0,0,0,3,248,15,208,191,0,0,0,0,7,240,15,192,191,0,0,0,0,15,240,31,192,191,0,0,0,0,31,208,47,128,191,0,0,0,0,63,192,63,149,191,85,84,0,0,127,64,63,255,255,255,254,0,0,255,0,191,255,255,255,254,0,2,255,0,255,255,255,255,254,0,7,255,1,252,0,191,0,0,0,15,255,3,248,0,191,0,0,0,63,255,7,244,0,191,0,0,0,191,255,11,240,0,191,0,0,0,127,127,0,128,0,191,0,0,0,44,63,0,0,0,191,0,0,0,4,63,0,0,0,191,0,0,0,0,63,11,255,255,255,255,255,208,0,63,11,255,255,255,255,255,208,0,63,11,255,255,255,255,255,208,0,63,1,85,85,191,85,85,64,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,190,0,0,0, + // 0x4efd 份 + 253,78,34,35,59,36,1,252,0,0,144,0,0,0,0,0,0,0,1,252,0,63,255,252,0,0,0,3,252,0,63,255,253,0,0,0,3,244,0,63,255,254,0,0,0,11,240,6,64,0,127,0,0,0,15,208,15,224,0,63,64,0,0,47,192,15,208,0,63,128,0,0,63,128,47,192,0,47,192,0,0,255,0,63,64,0,15,224,0,1,255,0,127,0,0,11,240,0,3,255,0,254,0,0,7,252,0,11,255,2,252,0,0,2,253,0,47,255,3,244,0,0,0,255,64,127,255,15,240,0,0,0,191,208,255,255,63,192,0,0,0,63,224,254,127,63,191,255,255,255,239,192,124,127,14,63,255,255,255,226,0,32,127,0,63,255,255,255,208,0,0,127,0,0,47,128,15,208,0,0,127,0,0,63,64,15,208,0,0,127,0,0,63,0,15,208,0,0,127,0,0,63,0,15,208,0,0,127,0,0,127,0,15,208,0,0,127,0,0,190,0,15,208,0,0,127,0,0,253,0,15,192,0,0,127,0,1,252,0,15,192,0,0,127,0,3,248,0,15,192,0,0,127,0,7,244,0,31,192,0,0,127,0,15,224,0,31,192,0,0,127,0,63,192,0,47,192,0,0,127,0,255,64,0,127,128,0,0,127,7,254,0,63,255,64,0,0,127,7,244,0,63,255,0,0,0,127,1,208,0,47,248,0,0,0,0,0,0,0,0,0,0,0, + // 0x4f11 休 + 17,79,34,34,50,36,1,253,0,0,36,0,0,84,0,0,0,0,0,127,64,0,252,0,0,0,0,0,255,0,0,252,0,0,0,0,0,254,0,0,252,0,0,0,0,2,252,0,0,252,0,0,0,0,7,248,0,0,252,0,0,0,0,15,240,0,0,252,0,0,0,0,31,224,0,0,252,0,0,0,0,63,192,0,0,252,0,0,0,0,255,139,255,255,255,255,255,192,2,255,139,255,255,255,255,255,192,7,255,139,255,255,255,255,255,192,31,255,129,85,95,255,213,85,64,127,255,128,0,15,255,224,0,0,255,239,128,0,47,255,240,0,0,191,47,128,0,63,255,244,0,0,61,47,128,0,127,254,252,0,0,20,47,128,0,254,253,253,0,0,0,47,128,2,252,252,127,0,0,0,47,128,3,248,252,63,128,0,0,47,128,11,240,252,47,192,0,0,47,128,31,208,252,15,240,0,0,47,128,63,192,252,7,248,0,0,47,128,255,64,252,3,253,0,0,47,130,254,0,252,0,255,0,0,47,139,252,0,252,0,191,192,0,47,255,240,0,252,0,63,240,0,47,159,208,0,252,0,15,192,0,47,139,64,0,252,0,3,64,0,47,129,0,0,252,0,0,0,0,47,128,0,0,252,0,0,0,0,47,128,0,0,252,0,0,0,0,47,128,0,0,252,0,0,0,0,31,128,0,0,252,0,0,0, + // 0x4f20 传 + 32,79,34,35,59,36,1,252,0,0,144,0,2,144,0,0,0,0,1,252,0,3,244,0,0,0,0,2,252,0,7,240,0,0,0,0,3,244,0,11,240,0,0,0,0,11,241,255,255,255,255,254,0,0,15,225,255,255,255,255,254,0,0,47,193,255,255,255,255,254,0,0,63,128,0,47,192,0,0,0,0,255,0,0,63,128,0,0,0,1,255,0,0,63,64,0,0,0,3,255,0,0,127,0,0,0,0,15,255,31,255,255,255,255,255,208,47,255,31,255,255,255,255,255,208,191,255,31,255,255,255,255,255,208,255,191,0,2,252,0,0,0,0,189,127,0,3,248,0,0,0,0,56,127,0,3,244,0,0,0,0,16,127,0,7,240,0,0,0,0,0,127,0,11,255,255,255,244,0,0,127,0,15,255,255,255,253,0,0,127,0,31,255,255,255,248,0,0,127,0,0,0,0,47,240,0,0,127,0,0,0,0,127,192,0,0,127,0,0,0,0,255,0,0,0,127,0,0,20,3,252,0,0,0,127,0,0,126,15,244,0,0,0,127,0,0,255,255,208,0,0,0,127,0,0,47,255,64,0,0,0,127,0,0,7,255,0,0,0,0,127,0,0,0,255,208,0,0,0,127,0,0,0,47,248,0,0,0,127,0,0,0,11,253,0,0,0,127,0,0,0,1,248,0,0,0,127,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0, + // 0x4f4d 位 + 77,79,34,34,50,36,1,253,0,0,100,0,0,168,0,0,0,0,0,254,0,0,253,0,0,0,0,1,253,0,0,253,0,0,0,0,3,252,0,0,253,0,0,0,0,7,244,0,0,253,0,0,0,0,15,240,0,0,253,0,0,0,0,31,208,0,0,253,0,0,0,0,63,195,255,255,255,255,255,192,0,191,67,255,255,255,255,255,192,1,255,67,255,255,255,255,255,192,3,255,64,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,47,255,64,5,128,0,11,144,0,191,255,64,15,192,0,15,240,0,255,127,64,15,208,0,15,224,0,125,63,64,11,224,0,15,208,0,56,63,64,7,240,0,31,192,0,0,63,64,3,240,0,47,192,0,0,63,64,3,244,0,63,128,0,0,63,64,3,248,0,63,64,0,0,63,64,2,248,0,127,0,0,0,63,64,1,252,0,127,0,0,0,63,64,1,252,0,254,0,0,0,63,64,0,252,0,253,0,0,0,63,64,0,253,1,252,0,0,0,63,64,0,253,2,252,0,0,0,63,64,0,254,3,244,0,0,0,63,64,0,80,3,240,0,0,0,63,64,0,0,7,240,0,0,0,63,75,255,255,255,255,255,224,0,63,75,255,255,255,255,255,224,0,63,75,255,255,255,255,255,224,0,63,64,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0, + // 0x4f4e 低 + 78,79,34,34,50,36,1,253,0,0,144,0,0,0,0,0,0,0,1,252,0,0,0,0,96,0,0,2,252,0,0,0,111,248,0,0,3,244,0,5,191,255,254,0,0,11,240,251,255,255,255,228,0,0,15,224,255,255,255,228,0,0,0,47,192,255,254,95,192,0,0,0,63,128,254,0,15,192,0,0,0,191,0,253,0,15,208,0,0,1,255,0,253,0,15,208,0,0,3,255,0,253,0,15,208,0,0,11,255,0,253,0,15,208,0,0,31,255,0,253,0,15,208,0,0,127,255,0,255,255,255,255,255,208,255,255,0,255,255,255,255,255,208,254,127,0,255,255,255,255,255,208,124,127,0,253,0,7,240,0,0,32,127,0,253,0,7,240,0,0,0,127,0,253,0,3,240,0,0,0,127,0,253,0,3,244,0,0,0,127,0,253,0,3,248,0,0,0,127,0,253,0,2,252,0,0,0,127,0,253,0,1,252,0,0,0,127,0,253,1,172,253,0,0,0,127,0,255,255,252,254,0,0,0,127,15,255,255,252,191,2,208,0,127,15,255,254,144,63,66,240,0,127,11,249,0,0,63,194,240,0,127,0,0,0,0,31,227,240,0,127,0,0,0,0,15,255,224,0,127,3,255,255,255,227,255,208,0,127,3,255,255,255,225,255,128,0,127,3,255,255,255,224,21,0,0,106,0,0,0,0,0,0,0, + // 0x4f53 体 + 83,79,34,34,50,36,1,253,0,1,144,0,1,248,0,0,0,0,3,248,0,1,252,0,0,0,0,3,244,0,1,252,0,0,0,0,11,240,0,1,252,0,0,0,0,15,224,0,1,252,0,0,0,0,31,192,0,1,252,0,0,0,0,63,128,0,1,252,0,0,0,0,127,15,255,255,255,255,255,192,0,255,15,255,255,255,255,255,192,2,255,15,255,255,255,255,255,192,3,255,0,0,31,255,192,0,0,15,255,0,0,47,255,208,0,0,47,255,0,0,63,255,240,0,0,127,255,0,0,127,255,240,0,0,255,191,0,0,253,253,248,0,0,62,127,0,1,249,252,252,0,0,44,127,0,3,241,252,190,0,0,0,127,0,11,241,252,63,0,0,0,127,0,15,209,252,47,128,0,0,127,0,47,129,252,15,208,0,0,127,0,127,1,252,11,240,0,0,127,0,254,1,252,3,252,0,0,127,3,252,1,252,1,254,0,0,127,15,244,1,252,0,255,128,0,127,47,235,255,255,255,127,208,0,127,127,203,255,255,255,31,224,0,127,31,11,255,255,255,11,128,0,127,8,0,1,252,0,2,0,0,127,0,0,1,252,0,0,0,0,127,0,0,1,252,0,0,0,0,127,0,0,1,252,0,0,0,0,127,0,0,1,252,0,0,0,0,127,0,0,1,252,0,0,0,0,126,0,0,0,168,0,0,0, + // 0x4f59 余 + 89,79,34,35,59,36,1,252,0,0,0,7,248,0,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,63,255,128,0,0,0,0,0,0,255,191,208,0,0,0,0,0,3,255,15,248,0,0,0,0,0,15,252,3,254,0,0,0,0,0,63,240,0,255,192,0,0,0,1,255,192,0,63,244,0,0,0,11,254,0,0,11,255,0,0,0,127,244,0,0,1,255,208,0,3,255,208,0,0,0,63,254,0,47,255,255,255,255,255,251,255,208,127,245,255,255,255,255,241,255,192,31,65,255,255,255,255,240,31,64,4,0,0,3,248,0,0,1,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,7,255,255,255,255,255,255,254,0,7,255,255,255,255,255,255,254,0,7,255,255,255,255,255,255,254,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,144,3,248,0,208,0,0,0,3,252,3,248,7,248,0,0,0,11,244,3,248,7,254,0,0,0,47,224,3,248,0,255,192,0,0,191,192,3,248,0,63,240,0,2,255,0,3,248,0,15,252,0,31,252,0,3,248,0,3,255,0,63,240,0,3,248,0,0,255,128,31,128,15,255,244,0,0,62,0,5,0,7,255,240,0,0,20,0,0,0,3,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x4f5c 作 + 92,79,34,34,50,36,1,253,0,0,100,0,4,0,0,0,0,0,0,191,0,47,128,0,0,0,0,0,253,0,63,64,0,0,0,0,2,252,0,127,0,0,0,0,0,3,248,0,254,0,0,0,0,0,11,240,1,253,0,0,0,0,0,15,224,3,255,255,255,255,224,0,47,192,7,255,255,255,255,224,0,127,128,15,255,255,255,255,224,0,255,64,31,210,252,0,0,0,2,255,64,63,193,252,0,0,0,7,255,64,191,1,252,0,0,0,15,255,65,254,1,252,0,0,0,63,255,71,252,1,252,0,0,0,191,255,75,244,1,255,255,255,128,63,63,66,208,1,255,255,255,128,29,63,64,64,1,255,255,255,128,4,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,255,255,255,192,0,63,64,0,1,255,255,255,192,0,63,64,0,1,255,255,255,192,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0, + // 0x4f7f 使 + 127,79,34,35,59,36,1,252,0,0,116,0,0,189,0,0,0,0,0,254,0,0,190,0,0,0,0,1,252,0,0,190,0,0,0,0,3,252,0,0,190,0,0,0,0,7,251,255,255,255,255,255,224,0,15,243,255,255,255,255,255,224,0,31,211,255,255,255,255,255,224,0,63,192,0,0,190,0,0,0,0,191,64,0,0,190,0,0,0,1,255,64,0,0,190,0,0,0,3,255,64,255,255,255,255,255,64,15,255,65,255,255,255,255,255,64,47,255,65,255,255,255,255,255,64,191,255,65,252,0,190,0,47,64,255,127,65,252,0,190,0,47,64,126,63,65,252,0,190,0,47,64,60,63,65,252,0,190,0,47,64,16,63,65,252,0,190,0,47,64,0,63,65,255,255,255,255,255,64,0,63,65,255,255,255,255,255,64,0,63,64,255,255,255,255,255,64,0,63,64,20,0,252,0,0,0,0,63,64,253,1,252,0,0,0,0,63,64,127,2,252,0,0,0,0,63,64,63,195,248,0,0,0,0,63,64,15,251,240,0,0,0,0,63,64,3,255,224,0,0,0,0,63,64,0,255,224,0,0,0,0,63,64,1,255,253,0,0,0,0,63,64,11,255,255,244,0,0,0,63,65,255,244,191,255,233,0,0,63,95,255,208,11,255,255,224,0,63,75,253,0,0,111,255,192,0,63,67,144,0,0,0,111,64,0,0,0,0,0,0,0,0,0, + // 0x4f9b 供 + 155,79,34,34,50,36,1,253,0,0,144,1,164,0,42,0,0,0,0,253,1,252,0,63,0,0,0,2,252,1,252,0,63,0,0,0,3,248,1,252,0,63,0,0,0,7,240,1,252,0,63,0,0,0,15,224,1,252,0,63,0,0,0,31,192,1,252,0,63,0,0,0,63,128,2,252,0,63,64,0,0,191,3,255,255,255,255,255,192,1,255,3,255,255,255,255,255,192,3,255,3,255,255,255,255,255,192,11,255,0,1,252,0,63,0,0,47,255,0,1,252,0,63,0,0,127,255,0,1,252,0,63,0,0,255,191,0,1,252,0,63,0,0,126,127,0,1,252,0,63,0,0,56,127,0,1,252,0,63,0,0,16,127,0,1,252,0,63,0,0,0,127,0,1,252,0,63,0,0,0,127,11,255,255,255,255,255,224,0,127,11,255,255,255,255,255,224,0,127,11,255,255,255,255,255,224,0,127,1,85,85,85,85,85,64,0,127,0,0,0,0,0,0,0,0,127,0,0,160,0,9,0,0,0,127,0,2,253,0,127,0,0,0,127,0,3,248,0,63,192,0,0,127,0,15,240,0,31,240,0,0,127,0,63,208,0,7,248,0,0,127,0,191,128,0,2,253,0,0,127,2,255,0,0,0,255,0,0,127,15,252,0,0,0,63,192,0,127,3,240,0,0,0,31,128,0,127,0,128,0,0,0,8,0, + // 0x4fb5 侵 + 181,79,34,35,59,36,1,252,0,0,144,0,0,0,0,0,0,0,1,252,42,170,170,170,164,0,0,3,252,127,255,255,255,252,0,0,3,244,127,255,255,255,252,0,0,11,240,0,0,0,1,252,0,0,15,224,0,0,0,1,252,0,0,47,192,21,85,85,86,252,0,0,63,128,47,255,255,255,252,0,0,255,0,47,255,255,255,252,0,2,255,0,0,0,0,1,252,0,3,255,0,0,0,0,1,252,0,15,255,0,255,255,255,255,252,0,63,255,0,255,255,255,255,252,0,191,255,0,106,170,170,170,168,0,255,191,0,0,0,0,0,0,0,189,127,6,170,170,170,170,170,128,52,127,11,255,255,255,255,255,192,0,127,11,255,255,255,255,255,192,0,127,11,208,0,0,0,15,192,0,127,11,208,0,0,0,15,192,0,127,11,234,170,170,170,159,192,0,127,11,255,255,255,255,255,192,0,127,0,63,255,255,255,240,0,0,127,0,2,240,0,31,208,0,0,127,0,3,252,0,127,192,0,0,127,0,1,254,1,255,0,0,0,127,0,0,127,203,253,0,0,0,127,0,0,31,255,240,0,0,0,127,0,0,11,255,208,0,0,0,127,0,0,191,255,253,0,0,0,127,1,111,255,255,255,249,64,0,127,15,255,254,1,255,255,224,0,127,3,255,208,0,11,255,192,0,126,3,228,0,0,0,27,0,0,0,0,0,0,0,0,0,0, + // 0x4fdd 保 + 221,79,34,35,59,36,1,252,0,0,80,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,253,63,255,255,255,253,0,0,2,252,63,255,255,255,253,0,0,3,244,63,255,255,255,253,0,0,11,240,63,0,0,0,253,0,0,15,208,63,0,0,0,253,0,0,47,192,63,0,0,0,253,0,0,127,128,63,0,0,0,253,0,0,255,64,63,0,0,0,253,0,2,255,64,63,0,0,0,253,0,7,255,64,63,255,255,255,253,0,31,255,64,63,255,255,255,253,0,63,255,64,63,255,255,255,253,0,255,191,64,0,0,254,0,0,0,127,63,64,0,0,254,0,0,0,60,63,64,0,0,254,0,0,0,16,63,64,0,0,254,0,0,0,0,63,75,255,255,255,255,255,208,0,63,75,255,255,255,255,255,208,0,63,75,255,255,255,255,255,208,0,63,64,0,15,255,224,0,0,0,63,64,0,47,255,244,0,0,0,63,64,0,127,255,252,0,0,0,63,64,1,254,254,191,0,0,0,63,64,7,252,254,63,192,0,0,63,64,31,240,254,15,240,0,0,63,64,127,192,254,7,252,0,0,63,66,255,64,254,2,255,64,0,63,95,253,0,254,0,191,224,0,63,79,240,0,254,0,47,224,0,63,71,128,0,254,0,7,128,0,63,64,0,0,254,0,0,0,0,63,64,0,0,254,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x4fe1 信 + 225,79,34,34,50,36,1,253,0,0,184,0,0,0,0,0,0,0,0,254,10,170,170,170,160,0,0,1,252,15,255,255,255,244,0,0,3,248,15,255,255,255,244,0,0,7,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,63,199,255,255,255,255,255,224,0,191,71,255,255,255,255,255,224,1,255,71,255,255,255,255,255,208,3,255,64,0,0,0,0,0,0,11,255,64,0,0,0,0,0,0,47,255,64,47,255,255,255,252,0,191,255,64,47,255,255,255,252,0,255,127,64,26,170,170,170,168,0,125,63,64,0,0,0,0,0,0,56,63,64,0,0,0,0,0,0,0,63,64,47,255,255,255,252,0,0,63,64,47,255,255,255,252,0,0,63,64,26,170,170,170,168,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,42,170,170,170,168,0,0,63,64,63,255,255,255,253,0,0,63,64,63,255,255,255,253,0,0,63,64,63,0,0,0,253,0,0,63,64,63,0,0,0,253,0,0,63,64,63,0,0,0,253,0,0,63,64,63,0,0,0,253,0,0,63,64,63,170,170,170,253,0,0,63,64,63,255,255,255,253,0,0,63,64,63,255,255,255,253,0,0,63,64,63,0,0,0,253,0,0,42,0,63,0,0,0,168,0, + // 0x503c 值 + 60,80,34,34,50,36,1,253,0,0,144,0,0,170,0,0,0,0,1,252,0,0,254,0,0,0,0,2,252,0,0,253,0,0,0,0,3,244,0,0,253,0,0,0,0,7,243,255,255,255,255,255,64,0,15,227,255,255,255,255,255,64,0,47,195,255,255,255,255,255,64,0,63,128,0,2,244,0,0,0,0,191,0,0,3,240,0,0,0,1,254,0,42,171,250,170,160,0,3,254,0,63,255,255,255,244,0,11,254,0,63,255,255,255,244,0,31,254,0,62,0,0,2,244,0,63,254,0,62,0,0,2,244,0,191,254,0,62,0,0,2,244,0,127,126,0,63,255,255,255,244,0,44,126,0,63,255,255,255,244,0,20,126,0,63,85,85,87,244,0,0,126,0,62,0,0,2,244,0,0,126,0,62,0,0,2,244,0,0,126,0,63,255,255,255,244,0,0,126,0,63,255,255,255,244,0,0,126,0,63,85,85,87,244,0,0,126,0,62,0,0,2,244,0,0,126,0,62,0,0,2,244,0,0,126,0,63,255,255,255,244,0,0,126,0,63,255,255,255,244,0,0,126,0,63,85,85,87,244,0,0,126,0,62,0,0,2,244,0,0,126,0,62,0,0,2,244,0,0,126,31,255,255,255,255,255,208,0,126,47,255,255,255,255,255,208,0,126,47,255,255,255,255,255,208,0,126,0,0,0,0,0,0,0, + // 0x503e 倾 + 62,80,34,35,59,36,1,252,0,10,64,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,31,192,0,63,255,255,255,208,0,47,128,0,63,255,255,255,208,0,63,15,192,63,255,255,255,208,0,127,15,192,0,2,252,0,0,0,253,15,192,0,3,244,0,0,1,252,15,192,0,3,240,0,0,3,252,15,192,11,255,255,255,0,7,252,15,192,11,255,255,255,0,15,252,15,192,11,255,255,255,0,47,252,15,255,203,208,0,63,0,63,252,15,255,203,208,80,63,0,255,252,15,255,203,209,244,63,0,253,252,15,192,11,209,244,63,0,188,252,15,192,11,209,244,63,0,48,252,15,192,11,209,244,63,0,16,252,15,192,11,209,244,63,0,0,252,15,192,11,209,244,63,0,0,252,15,192,11,209,244,63,0,0,252,15,192,11,209,244,63,0,0,252,15,193,139,209,240,63,0,0,252,15,223,203,210,240,63,0,0,252,15,255,203,210,240,63,0,0,252,31,255,11,211,240,63,0,0,252,63,244,6,135,224,21,0,0,252,31,128,0,15,213,0,0,0,252,12,0,0,31,207,128,0,0,252,0,0,0,127,95,240,0,0,252,0,0,1,254,7,253,0,0,252,0,0,11,252,0,255,128,0,252,0,0,127,224,0,47,208,0,252,0,0,191,64,0,11,192,0,252,0,0,56,0,0,2,0,0,0,0,0,0,0,0,0,0, + // 0x504f 偏 + 79,80,34,34,50,36,1,253,0,2,64,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,11,231,255,255,255,255,255,208,0,15,215,255,255,255,255,255,208,0,31,199,255,255,255,255,255,208,0,63,128,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,191,0,255,255,255,255,255,0,0,253,0,255,255,255,255,255,0,3,253,0,254,170,170,170,191,0,7,253,0,252,0,0,0,127,0,15,253,0,252,0,0,0,127,0,47,253,0,252,0,0,0,127,0,127,253,0,255,255,255,255,255,0,255,253,0,255,255,255,255,255,0,254,189,0,254,170,170,170,170,0,124,189,0,252,0,0,0,0,0,48,189,0,252,0,0,0,0,0,0,189,1,255,255,255,255,255,128,0,189,1,255,255,255,255,255,128,0,189,2,255,235,250,254,175,128,0,189,2,255,194,240,124,31,128,0,189,3,255,194,240,124,31,128,0,189,3,255,194,240,124,31,128,0,189,7,255,235,250,254,175,128,0,189,11,239,255,255,255,255,128,0,189,15,223,255,255,255,255,128,0,189,31,207,194,240,124,31,128,0,189,63,143,194,240,124,31,128,0,189,127,15,194,240,124,31,128,0,189,254,15,194,240,124,31,128,0,189,60,15,194,240,125,255,128,0,189,4,15,194,240,124,255,64,0,189,0,15,129,160,104,253,0, + // 0x505c 停 + 92,80,34,34,50,36,1,253,0,0,144,0,0,253,0,0,0,0,1,252,0,0,253,0,0,0,0,3,252,0,0,253,0,0,0,0,3,251,255,255,255,255,255,208,0,11,247,255,255,255,255,255,208,0,15,215,255,255,255,255,255,208,0,63,192,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,255,0,63,255,255,255,248,0,2,255,0,63,255,255,255,248,0,7,255,0,63,85,85,86,248,0,15,255,0,63,64,0,2,248,0,63,255,0,63,64,0,2,248,0,255,255,0,63,255,255,255,248,0,255,127,0,63,255,255,255,248,0,188,127,0,21,85,85,85,80,0,52,127,0,0,0,0,0,0,0,16,127,10,170,170,170,170,170,144,0,127,15,255,255,255,255,255,224,0,127,15,255,255,255,255,255,224,0,127,15,192,0,0,0,7,224,0,127,15,192,0,0,0,7,224,0,127,15,198,170,170,170,151,224,0,127,15,203,255,255,255,215,224,0,127,0,11,255,255,255,208,0,0,127,0,0,0,253,0,0,0,0,127,0,0,0,253,0,0,0,0,127,0,0,0,253,0,0,0,0,127,0,0,0,253,0,0,0,0,127,0,0,0,253,0,0,0,0,127,0,0,0,253,0,0,0,0,127,0,3,255,253,0,0,0,0,127,0,1,255,252,0,0,0,0,126,0,0,255,224,0,0,0, + // 0x50a8 储 + 168,80,34,34,50,36,1,253,0,15,64,0,0,47,64,0,0,0,15,192,0,0,63,64,14,64,0,31,130,0,0,63,64,31,192,0,47,95,192,0,63,64,63,64,0,63,15,224,63,255,255,127,0,0,126,3,248,63,255,255,254,0,0,253,1,253,63,255,255,252,0,0,252,0,189,0,63,67,248,0,2,248,0,48,0,63,75,240,0,3,248,0,0,0,63,79,208,0,11,248,0,0,0,63,127,192,0,15,248,0,0,255,255,255,255,208,47,248,255,240,255,255,255,255,208,127,248,255,240,255,255,255,255,208,255,248,255,240,0,31,240,0,0,189,248,2,240,0,127,192,0,0,56,248,2,240,1,255,64,0,0,32,248,2,240,11,253,0,0,0,0,248,2,240,63,255,255,255,0,0,248,2,241,255,255,255,255,0,0,248,2,242,255,250,170,191,0,0,248,2,240,255,240,0,63,0,0,248,2,240,19,240,0,63,0,0,248,2,240,3,249,85,127,0,0,248,2,240,3,255,255,255,0,0,248,2,240,3,255,255,255,0,0,248,2,242,227,240,0,63,0,0,248,3,255,243,240,0,63,0,0,248,3,255,211,240,0,63,0,0,248,15,254,3,250,170,191,0,0,248,11,244,3,255,255,255,0,0,248,3,128,3,255,255,255,0,0,248,0,0,3,240,0,63,0,0,248,0,0,2,240,0,42,0, + // 0x50cf 像 + 207,80,34,34,50,36,1,253,0,2,64,1,164,0,0,0,0,0,7,240,3,248,0,0,0,0,0,11,240,11,249,85,144,0,0,0,15,208,31,255,255,248,0,0,0,31,192,63,255,255,244,0,0,0,63,128,255,0,11,240,0,0,0,63,66,253,0,31,208,0,0,0,191,11,253,85,127,213,85,0,0,254,63,255,255,255,255,255,0,3,253,127,255,255,255,255,255,0,7,253,11,240,0,252,0,63,0,15,253,3,240,0,252,0,63,0,47,253,3,240,0,252,0,63,0,191,253,3,255,255,255,255,255,0,255,253,3,255,255,255,255,255,0,188,189,1,85,191,219,229,85,0,120,189,0,2,255,7,224,1,0,32,189,0,111,255,3,240,15,64,0,189,11,255,239,194,244,127,192,0,189,47,253,15,225,249,255,0,0,189,11,144,47,244,255,252,0,0,189,0,1,255,252,255,224,0,0,189,0,31,248,253,127,64,0,0,189,1,255,192,190,63,64,0,0,189,31,253,2,255,47,192,0,0,189,15,224,11,255,15,224,0,0,189,1,0,127,255,75,240,0,0,189,0,2,255,63,67,252,0,0,189,0,47,248,63,64,255,0,0,189,2,255,208,63,0,191,208,0,189,63,253,0,191,0,47,192,0,189,47,225,255,253,0,11,64,0,189,10,0,255,248,0,1,0,0,189,0,0,255,208,0,0,0, + // 0x5145 充 + 69,81,33,35,59,36,2,252,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,191,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,254,0,0,0,15,240,0,20,0,0,0,0,0,31,208,0,124,0,0,0,0,0,63,192,1,255,64,0,0,0,0,63,64,0,127,208,0,0,0,0,191,0,0,31,244,0,0,0,0,253,0,0,7,253,0,0,0,2,254,170,255,255,255,64,0,31,255,255,255,255,255,255,208,0,31,255,255,255,255,255,255,240,0,31,255,255,234,149,80,7,252,0,9,80,0,0,0,0,2,248,0,0,0,31,192,3,240,0,208,0,0,0,47,192,3,240,0,0,0,0,0,63,192,3,240,0,0,0,0,0,63,128,3,240,0,0,0,0,0,63,128,3,240,0,0,0,0,0,127,64,3,240,0,0,0,0,0,191,0,3,240,0,16,0,0,0,255,0,3,240,0,46,0,0,2,253,0,3,240,0,47,64,0,7,252,0,3,240,0,47,64,0,31,244,0,3,240,0,47,64,0,191,224,0,3,240,0,63,0,27,255,128,0,3,248,0,127,0,255,253,0,0,3,255,255,255,0,191,224,0,0,1,255,255,253,0,62,0,0,0,0,127,255,244,0,0,0,0,0,0,0,0,0,0, + // 0x5148 先 + 72,81,32,35,24,36,2,252,0,0,0,11,224,0,0,0,0,11,144,11,224,0,0,0,0,15,224,11,224,0,0,0,0,15,208,11,224,0,0,0,0,31,192,11,224,0,0,0,0,63,192,11,240,0,0,0,0,63,255,255,255,255,255,192,0,191,255,255,255,255,255,192,0,255,255,255,255,255,255,192,1,252,0,11,224,0,0,0,3,248,0,11,224,0,0,0,11,240,0,11,224,0,0,0,15,224,0,11,224,0,0,0,3,192,0,11,224,0,0,0,0,0,0,11,224,0,0,0,0,0,0,11,240,0,0,0,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,0,0,63,128,3,240,0,0,0,0,63,64,3,240,0,0,0,0,63,64,3,240,0,0,0,0,127,0,3,240,0,0,0,0,191,0,3,240,0,0,0,0,254,0,3,240,0,0,0,2,252,0,3,240,0,52,0,7,252,0,3,240,0,63,0,15,240,0,3,240,0,63,0,127,224,0,3,240,0,63,2,255,192,0,3,244,0,191,111,254,0,0,3,255,255,254,255,248,0,0,2,255,255,252,63,192,0,0,0,191,255,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5149 光 + 73,81,34,35,59,36,1,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,1,0,0,0,109,0,3,248,0,7,224,0,0,255,0,3,248,0,15,240,0,0,127,64,3,248,0,15,224,0,0,63,192,3,248,0,47,192,0,0,31,208,3,248,0,63,128,0,0,15,240,3,248,0,127,0,0,0,7,244,3,248,0,254,0,0,0,3,248,3,248,2,252,0,0,0,2,252,3,248,3,248,0,0,0,1,208,3,248,0,96,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,15,240,0,252,0,0,0,0,0,15,224,0,252,0,0,0,0,0,15,208,0,252,0,0,0,0,0,15,208,0,252,0,0,0,0,0,31,192,0,252,0,0,0,0,0,47,192,0,252,0,0,0,0,0,63,192,0,252,0,0,0,0,0,127,64,0,252,0,0,0,0,0,255,0,0,252,0,10,0,0,2,254,0,0,252,0,11,208,0,7,252,0,0,252,0,11,208,0,31,244,0,0,252,0,15,208,0,191,224,0,0,252,0,15,192,27,255,128,0,0,253,0,31,192,127,254,0,0,0,255,255,255,128,47,240,0,0,0,191,255,255,64,14,0,0,0,0,31,255,253,0,0,0,0,0,0,0,0,0,0, + // 0x5165 入 + 101,81,34,32,32,36,1,253,0,2,255,255,252,0,0,0,0,0,2,255,255,252,0,0,0,0,0,2,255,255,252,0,0,0,0,0,1,85,85,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,5,255,0,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,47,255,128,0,0,0,0,0,0,63,255,192,0,0,0,0,0,0,63,223,192,0,0,0,0,0,0,127,79,224,0,0,0,0,0,0,255,11,240,0,0,0,0,0,1,254,7,248,0,0,0,0,0,3,253,3,252,0,0,0,0,0,7,252,2,254,0,0,0,0,0,15,244,0,255,0,0,0,0,0,31,240,0,191,192,0,0,0,0,63,192,0,63,224,0,0,0,0,255,128,0,31,244,0,0,0,2,255,0,0,11,252,0,0,0,11,253,0,0,3,255,0,0,0,47,244,0,0,0,255,208,0,0,191,224,0,0,0,127,244,0,3,255,128,0,0,0,31,254,0,47,254,0,0,0,0,7,255,208,127,248,0,0,0,0,0,255,192,15,208,0,0,0,0,0,47,0,2,0,0,0,0,0,0,5,0, + // 0x5168 全 + 104,81,34,33,41,36,1,254,0,0,0,7,252,0,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,47,255,64,0,0,0,0,0,0,127,191,192,0,0,0,0,0,1,255,15,240,0,0,0,0,0,7,252,7,252,0,0,0,0,0,15,240,1,255,0,0,0,0,0,63,208,0,127,192,0,0,0,1,255,64,0,31,244,0,0,0,7,252,0,0,3,254,0,0,0,47,240,0,0,0,255,192,0,0,255,192,0,0,0,47,244,0,11,254,0,0,0,0,7,255,0,63,255,255,255,255,255,255,255,208,127,235,255,255,255,255,254,191,192,31,71,255,255,255,255,254,31,64,8,0,0,3,248,0,0,1,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,15,255,255,255,255,255,255,255,64,15,255,255,255,255,255,255,255,64,15,255,255,255,255,255,255,255,64, + // 0x5171 共 + 113,81,32,34,16,36,2,253,0,0,168,0,0,42,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,1,253,0,0,191,64,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,85,85,254,85,85,191,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,0,0,120,0,0,0,0,255,128,3,255,0,0,0,3,255,0,0,255,208,0,0,15,252,0,0,47,248,0,0,127,240,0,0,11,255,0,2,255,192,0,0,1,255,192,31,254,0,0,0,0,127,240,127,244,0,0,0,0,15,253,47,208,0,0,0,0,3,248,10,0,0,0,0,0,0,144, + // 0x5173 关 + 115,81,26,35,245,36,5,252,0,4,0,0,3,128,0,0,188,0,0,11,244,0,0,255,0,0,15,240,0,0,63,128,0,31,208,0,0,47,192,0,63,128,0,0,15,240,0,191,0,0,0,7,240,0,253,0,0,0,3,64,0,24,0,0,11,255,255,255,255,254,0,11,255,255,255,255,254,0,11,255,255,255,255,254,0,0,0,3,248,0,0,0,0,0,3,244,0,0,0,0,0,3,244,0,0,0,0,0,3,244,0,0,0,0,0,3,244,0,0,0,0,0,3,244,0,0,0,63,255,255,255,255,255,192,63,255,255,255,255,255,192,63,255,255,255,255,255,192,0,0,7,254,0,0,0,0,0,11,255,0,0,0,0,0,15,255,64,0,0,0,0,31,255,192,0,0,0,0,63,207,208,0,0,0,0,191,75,244,0,0,0,1,255,3,252,0,0,0,7,252,1,255,0,0,0,47,244,0,191,208,0,1,255,208,0,63,248,0,31,255,64,0,15,255,208,191,252,0,0,2,255,208,63,208,0,0,0,127,128,13,0,0,0,0,6,0,0,0,0,0,0,0,0, + // 0x5177 具 + 119,81,32,33,8,36,2,253,0,26,170,170,170,170,168,0,0,47,255,255,255,255,252,0,0,47,255,255,255,255,252,0,0,47,128,0,0,1,252,0,0,47,128,0,0,1,252,0,0,47,128,0,0,1,252,0,0,47,255,255,255,255,252,0,0,47,255,255,255,255,252,0,0,47,149,85,85,86,252,0,0,47,128,0,0,1,252,0,0,47,128,0,0,1,252,0,0,47,149,85,85,86,252,0,0,47,255,255,255,255,252,0,0,47,255,255,255,255,252,0,0,47,128,0,0,1,252,0,0,47,128,0,0,1,252,0,0,47,128,0,0,1,252,0,0,47,255,255,255,255,252,0,0,47,255,255,255,255,252,0,0,26,170,170,170,170,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,4,0,0,0,0,0,0,0,63,0,0,184,0,0,0,2,255,192,3,255,208,0,0,127,255,64,1,255,254,0,11,255,248,0,0,31,255,228,255,255,64,0,0,0,191,254,63,228,0,0,0,0,11,252,13,0,0,0,0,0,0,160, + // 0x5197 冗 + 151,81,33,32,32,36,2,253,21,85,85,85,85,85,85,84,0,63,255,255,255,255,255,255,252,0,63,255,255,255,255,255,255,252,0,63,255,255,255,255,255,255,252,0,63,64,0,0,0,0,1,252,0,63,64,0,0,0,0,1,252,0,63,64,0,0,0,0,1,252,0,63,64,0,0,0,0,1,252,0,63,64,0,0,0,0,1,252,0,63,64,0,0,0,0,1,252,0,0,0,255,255,255,255,0,0,0,0,0,255,255,255,255,0,0,0,0,0,255,255,255,255,0,0,0,0,0,254,0,0,191,0,0,0,0,0,254,0,0,191,0,0,0,0,0,254,0,0,191,0,0,0,0,0,254,0,0,191,0,0,0,0,0,254,0,0,191,0,0,0,0,0,253,0,0,191,0,0,0,0,0,253,0,0,191,0,0,0,0,1,252,0,0,191,0,0,0,0,2,252,0,0,191,0,0,0,0,3,252,0,0,191,0,40,0,0,11,244,0,0,191,0,47,64,0,15,240,0,0,191,0,47,64,0,63,208,0,0,191,0,63,64,1,255,192,0,0,191,0,63,64,11,255,0,0,0,191,0,127,0,191,252,0,0,0,191,255,255,0,255,224,0,0,0,63,255,254,0,127,64,0,0,0,31,255,248,0,36,0,0,0,0,0,85,64,0, + // 0x51b7 冷 + 183,81,34,34,50,36,1,253,0,0,0,0,7,244,0,0,0,0,0,0,0,15,252,0,0,0,7,0,0,0,47,255,0,0,0,31,208,0,0,63,255,128,0,0,63,244,0,0,255,47,208,0,0,15,254,0,3,253,15,244,0,0,2,255,128,11,248,3,253,0,0,0,191,192,47,240,1,255,64,0,0,47,64,191,192,0,127,224,0,0,9,2,255,0,0,31,248,0,0,0,11,252,0,0,7,255,64,0,0,63,255,255,255,253,255,224,0,1,255,203,255,255,252,63,208,0,1,255,11,255,255,252,11,128,0,0,184,0,0,0,0,1,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,255,255,255,255,252,0,0,15,211,255,255,255,255,252,0,0,31,227,255,255,255,255,252,0,0,63,192,0,63,128,1,252,0,0,191,64,0,63,128,1,252,0,0,255,0,0,63,128,1,252,0,3,252,0,0,63,128,1,252,0,11,248,0,0,63,128,1,252,0,31,240,0,0,63,128,1,252,0,63,208,0,0,63,130,255,252,0,127,128,0,0,63,129,255,248,0,31,0,0,0,63,128,255,224,0,5,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,47,64,0,0,0, + // 0x51c6 准 + 198,81,34,34,50,36,1,253,0,0,0,0,228,0,100,0,0,0,0,0,2,252,0,191,0,0,2,0,0,3,248,0,254,0,0,15,208,0,7,240,0,252,0,0,31,248,0,15,224,1,252,0,0,7,255,0,31,208,3,244,0,0,0,255,192,63,192,3,240,0,0,0,47,224,127,255,255,255,255,128,0,11,192,255,255,255,255,255,128,0,2,2,255,255,255,255,255,128,0,0,7,255,64,15,208,0,0,0,0,15,255,64,15,192,0,0,0,0,63,255,64,15,192,0,0,0,0,255,255,64,15,192,0,0,0,0,127,63,255,255,255,255,0,0,0,28,63,255,255,255,255,0,0,0,0,63,255,255,255,255,0,0,0,0,63,64,15,192,0,0,0,1,0,63,64,15,192,0,0,0,11,64,63,64,15,192,0,0,0,15,192,63,64,15,192,0,0,0,47,192,63,64,15,192,0,0,0,127,128,63,255,255,255,255,0,0,255,0,63,255,255,255,255,0,2,253,0,63,255,255,255,255,0,3,252,0,63,64,15,192,0,0,15,240,0,63,64,15,192,0,0,47,224,0,63,64,15,192,0,0,127,192,0,63,64,15,192,0,0,63,0,0,63,255,255,255,255,224,10,0,0,63,255,255,255,255,224,0,0,0,63,255,255,255,255,224,0,0,0,63,64,0,0,0,0,0,0,0,63,0,0,0,0,0, + // 0x51fa 出 + 250,81,28,35,245,36,4,252,0,0,0,169,0,0,0,0,0,0,253,0,0,0,0,0,0,253,0,0,0,26,64,0,253,0,1,164,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,255,255,255,255,255,248,47,255,255,255,255,255,248,47,255,255,255,255,255,248,0,0,0,254,0,0,0,0,0,0,253,0,0,0,84,0,0,253,0,0,21,253,0,0,253,0,0,127,253,0,0,253,0,0,127,253,0,0,253,0,0,127,253,0,0,253,0,0,127,253,0,0,253,0,0,127,253,0,0,253,0,0,127,253,0,0,253,0,0,127,253,0,0,253,0,0,127,253,0,0,253,0,0,127,254,85,85,254,85,85,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,0,0,0,0,0,127,253,0,0,0,0,0,127,0,0,0,0,0,0,0, + // 0x51fb 击 + 251,81,32,34,16,36,2,253,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,1,85,85,91,245,85,85,64,3,255,255,255,255,255,255,208,3,255,255,255,255,255,255,208,3,255,255,255,255,255,255,208,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,21,85,85,91,245,85,85,84,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,3,252,0,11,240,0,47,192,3,252,0,11,240,0,47,192,3,252,0,11,240,0,47,192,3,252,0,11,240,0,47,192,3,252,0,11,240,0,47,192,3,252,0,11,240,0,47,192,3,252,0,11,240,0,47,192,3,252,0,11,240,0,47,192,3,253,85,91,245,85,127,192,3,255,255,255,255,255,255,192,3,255,255,255,255,255,255,192,3,255,255,255,255,255,255,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192, + // 0x5206 分 + 6,82,34,34,50,36,1,252,0,0,15,144,0,47,0,0,0,0,0,31,224,0,191,64,0,0,0,0,63,192,0,63,192,0,0,0,0,127,192,0,31,224,0,0,0,0,255,64,0,15,244,0,0,0,2,254,0,0,7,252,0,0,0,7,252,0,0,2,255,0,0,0,15,244,0,0,0,255,128,0,0,63,240,0,0,0,63,224,0,0,255,192,0,0,0,47,244,0,3,255,64,0,0,0,11,253,0,15,253,0,0,0,0,3,255,128,127,253,85,85,85,85,85,255,224,255,223,255,255,255,255,255,127,208,63,79,255,255,255,255,255,15,64,13,15,255,255,255,255,255,1,0,0,0,0,127,0,0,127,0,0,0,0,0,191,0,0,127,0,0,0,0,0,255,0,0,127,0,0,0,0,0,254,0,0,191,0,0,0,0,0,253,0,0,191,0,0,0,0,2,252,0,0,191,0,0,0,0,3,252,0,0,191,0,0,0,0,7,248,0,0,254,0,0,0,0,15,240,0,0,254,0,0,0,0,63,224,0,0,254,0,0,0,0,191,192,0,0,253,0,0,0,3,255,64,0,1,253,0,0,0,31,253,0,0,2,252,0,0,1,255,244,0,21,23,252,0,0,15,255,208,0,63,255,248,0,0,7,254,0,0,63,255,240,0,0,2,224,0,0,47,255,128,0,0,0,0,0,0,0,0,0,0,0, + // 0x5207 切 + 7,82,33,33,41,36,1,253,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,47,255,255,255,255,192,0,190,0,47,255,255,255,255,192,0,190,0,47,255,255,255,255,192,0,190,0,0,3,248,0,47,192,0,190,0,0,2,248,0,47,128,0,190,0,24,3,248,0,47,128,0,190,27,253,3,248,0,47,128,0,255,255,254,3,244,0,63,128,127,255,255,253,3,244,0,63,128,191,255,249,0,3,244,0,63,128,191,254,0,0,3,244,0,63,128,100,190,0,0,3,244,0,63,128,0,190,0,0,3,240,0,63,64,0,190,0,0,7,240,0,63,64,0,190,0,0,7,240,0,63,64,0,190,0,0,11,240,0,63,64,0,190,0,224,15,224,0,63,64,0,190,0,252,15,208,0,63,64,0,190,0,252,31,192,0,63,0,0,190,0,252,47,192,0,127,0,0,191,65,252,63,128,0,127,0,0,191,255,248,191,0,0,127,0,0,63,255,240,255,0,0,191,0,0,31,255,210,253,0,0,191,0,0,0,0,7,248,0,0,254,0,0,0,0,31,240,0,0,254,0,0,0,0,127,208,0,2,253,0,0,0,3,255,128,31,255,252,0,0,0,7,254,0,15,255,244,0,0,0,1,244,0,11,255,224,0,0,0,0,128,0,1,84,0,0, + // 0x521b 创 + 27,82,32,34,16,36,1,253,0,0,14,0,0,0,0,21,0,0,47,192,0,0,0,127,0,0,63,128,0,0,0,127,0,0,191,208,0,0,0,127,0,1,255,244,0,10,128,127,0,3,255,252,0,31,192,127,0,11,240,255,0,31,192,127,0,31,208,63,192,31,192,127,0,127,128,31,240,31,192,127,0,255,0,7,248,31,192,127,3,252,0,2,253,31,192,127,31,240,0,0,255,31,192,127,127,208,0,0,63,31,192,127,127,255,255,255,252,31,192,127,30,255,255,255,228,31,192,127,0,255,255,255,208,31,192,127,0,253,0,15,208,31,192,127,0,253,0,15,208,31,192,127,0,253,0,15,208,31,192,127,0,253,0,15,192,31,192,127,0,253,0,15,192,31,192,127,0,253,0,31,192,31,192,127,0,253,0,47,192,31,192,127,0,253,31,255,128,31,192,127,0,253,15,255,0,31,192,127,0,253,10,164,0,0,0,127,0,253,0,0,57,0,0,127,0,253,0,0,63,0,0,127,0,253,0,0,63,0,0,127,0,254,0,0,190,0,0,127,0,191,255,255,253,0,0,191,0,63,255,255,252,7,255,254,0,27,255,255,224,3,255,253,0,0,0,0,0,3,255,224, + // 0x521d 初 + 29,82,33,34,50,36,1,253,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,15,255,255,255,255,192,0,15,192,15,255,255,255,255,192,0,15,192,15,255,255,255,255,192,0,15,208,0,2,252,0,47,192,63,255,255,208,1,252,0,47,128,63,255,255,240,2,252,0,47,128,63,255,255,208,2,252,0,47,128,0,0,31,192,2,252,0,63,128,0,0,63,64,2,248,0,63,128,0,0,191,0,2,248,0,63,128,0,0,253,16,3,248,0,63,128,0,3,248,120,3,248,0,63,128,0,11,240,253,3,244,0,63,128,0,31,242,244,3,244,0,63,64,0,63,255,224,7,240,0,63,64,0,255,255,128,7,240,0,63,64,3,255,255,128,11,224,0,63,64,15,255,239,224,15,224,0,63,64,127,239,199,248,15,208,0,63,64,191,143,194,244,47,192,0,63,0,62,15,192,224,63,128,0,127,0,40,15,192,0,127,64,0,127,0,0,15,192,0,255,0,0,127,0,0,15,192,1,253,0,0,191,0,0,15,192,7,252,0,0,254,0,0,15,192,15,244,0,0,254,0,0,15,192,63,224,0,2,253,0,0,15,193,255,192,15,255,252,0,0,15,193,255,0,15,255,248,0,0,15,192,124,0,11,255,224,0,0,15,192,16,0,1,84,0,0, + // 0x522b 别 + 43,82,32,34,16,36,1,252,0,0,0,0,0,0,0,127,11,255,255,255,192,0,0,127,11,255,255,255,192,0,0,127,11,255,255,255,192,0,0,127,11,208,0,31,192,63,64,127,11,208,0,31,192,63,64,127,11,208,0,31,192,63,64,127,11,208,0,31,192,63,64,127,11,208,0,31,192,63,64,127,11,208,0,31,192,63,64,127,11,255,255,255,192,63,64,127,11,255,255,255,192,63,64,127,11,255,255,255,192,63,64,127,0,0,0,0,0,63,64,127,0,3,240,0,0,63,64,127,0,3,240,0,0,63,64,127,0,3,240,0,0,63,64,127,63,255,255,255,224,63,64,127,63,255,255,255,208,63,64,127,63,255,255,255,208,63,64,127,0,7,224,15,208,63,64,127,0,11,224,15,208,63,64,127,0,15,208,15,208,63,64,127,0,15,192,15,192,63,64,127,0,31,192,15,192,0,0,127,0,63,128,15,192,0,0,127,0,127,0,31,192,0,0,127,0,254,0,31,192,0,0,127,3,252,0,47,192,0,0,127,15,244,0,63,128,1,85,255,127,224,63,255,64,3,255,254,63,128,47,255,0,2,255,253,13,0,47,248,0,1,255,224,0,0,0,0,0,0,0,0, + // 0x5230 到 + 48,82,32,33,8,36,1,253,0,0,0,0,0,0,0,63,63,255,255,255,252,0,0,63,63,255,255,255,252,0,0,63,63,255,255,255,252,126,0,63,0,15,240,0,0,126,0,63,0,15,208,0,0,126,0,63,0,47,192,60,0,126,0,63,0,63,192,254,0,126,0,63,0,63,64,63,64,126,0,63,0,127,0,47,192,126,0,63,0,254,0,15,240,126,0,63,63,255,255,255,244,126,0,63,63,255,255,255,252,126,0,63,63,255,255,255,253,126,0,63,5,85,0,0,126,126,0,63,0,0,190,0,32,126,0,63,0,0,190,0,0,126,0,63,0,0,190,0,0,126,0,63,0,0,190,0,0,126,0,63,15,255,255,255,240,126,0,63,15,255,255,255,240,126,0,63,15,255,255,255,240,126,0,63,0,0,190,0,0,126,0,63,0,0,190,0,0,126,0,63,0,0,190,0,0,0,0,63,0,0,190,0,0,0,0,63,0,0,190,0,88,0,0,63,0,0,191,255,252,0,0,63,26,255,255,255,252,0,0,63,127,255,255,255,248,1,85,191,127,255,250,80,0,3,255,255,62,148,0,0,0,1,255,253,0,0,0,0,0,0,255,228, + // 0x5236 制 + 54,82,33,34,50,36,1,253,0,0,47,0,0,0,0,21,0,1,248,63,64,0,0,0,63,64,2,248,63,64,0,0,0,63,64,3,244,63,64,0,3,224,63,64,3,240,63,64,0,3,240,63,64,7,255,255,255,252,3,240,63,64,15,255,255,255,252,3,240,63,64,31,255,255,255,252,3,240,63,64,47,192,63,64,0,3,240,63,64,63,64,63,64,0,3,240,63,64,127,0,63,64,0,3,240,63,64,10,0,63,64,0,3,240,63,64,127,255,255,255,255,131,240,63,64,127,255,255,255,255,131,240,63,64,127,255,255,255,255,131,240,63,64,0,0,63,64,0,3,240,63,64,0,0,63,64,0,3,240,63,64,0,0,63,64,0,3,240,63,64,15,255,255,255,254,3,240,63,64,15,255,255,255,254,3,240,63,64,15,255,255,255,254,3,240,63,64,15,192,63,64,190,3,240,63,64,15,192,63,64,190,3,240,63,64,15,192,63,64,190,2,160,63,64,15,192,63,64,190,0,0,63,64,15,192,63,64,190,0,0,63,64,15,192,63,64,190,0,0,63,64,15,192,63,64,190,0,0,63,64,15,192,63,95,253,0,0,63,64,15,192,63,79,252,0,0,63,64,15,192,63,79,228,0,85,127,64,0,0,63,64,0,0,255,255,0,0,0,63,64,0,0,191,254,0,0,0,63,64,0,0,63,228,0, + // 0x5237 刷 + 55,82,32,34,16,36,1,253,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,63,7,255,255,255,254,0,0,63,7,255,255,255,254,5,64,63,7,255,255,255,254,15,192,63,7,224,0,0,190,15,192,63,7,224,0,0,190,15,192,63,7,224,0,0,190,15,192,63,7,224,0,0,190,15,192,63,7,255,255,255,254,15,192,63,7,255,255,255,254,15,192,63,7,255,255,255,254,15,192,63,7,224,3,240,0,15,192,63,7,224,3,240,0,15,192,63,7,224,3,240,0,15,192,63,7,224,3,240,0,15,192,63,7,239,255,255,255,15,192,63,7,239,255,255,255,15,192,63,7,239,255,255,255,15,192,63,7,239,67,240,63,15,192,63,11,223,67,240,63,15,192,63,11,223,67,240,63,15,192,63,11,223,67,240,63,15,192,63,15,207,67,240,63,15,192,63,15,207,67,240,63,10,128,63,15,207,67,240,63,0,0,63,31,143,67,240,63,0,0,63,31,143,67,247,254,0,0,63,63,79,67,243,253,0,0,63,63,15,67,241,160,0,0,63,190,0,3,240,0,0,85,191,189,0,3,240,0,0,255,255,28,0,3,240,0,0,191,254,0,0,3,240,0,0,127,228, + // 0x5272 割 + 114,82,31,34,16,36,2,253,0,1,248,0,0,0,0,84,0,1,252,0,0,0,0,252,0,1,252,0,0,0,0,252,170,171,254,170,164,0,0,252,255,255,255,255,248,127,0,252,255,255,255,255,248,127,0,252,252,0,0,1,248,127,0,252,252,1,252,1,248,127,0,252,252,1,252,1,248,127,0,252,15,255,255,255,192,127,0,252,15,255,255,255,192,127,0,252,5,86,253,85,64,127,0,252,0,1,252,0,0,127,0,252,5,86,253,85,0,127,0,252,15,255,255,255,64,127,0,252,15,255,255,255,64,127,0,252,0,1,252,0,0,127,0,252,0,1,252,0,0,127,0,252,170,170,254,170,160,127,0,252,255,255,255,255,244,127,0,252,255,255,255,255,244,127,0,252,0,0,0,0,0,127,0,252,6,170,170,170,64,127,0,252,15,255,255,255,192,127,0,252,15,255,255,255,192,0,0,252,15,192,0,31,192,0,0,252,15,192,0,31,192,0,0,252,15,192,0,31,192,0,0,252,15,192,0,31,192,0,0,252,15,234,170,175,192,0,0,252,15,255,255,255,192,5,86,252,15,255,255,255,192,7,255,252,15,192,0,31,192,3,255,248,15,192,0,5,64,3,255,144, + // 0x529b 力 + 155,82,31,35,24,36,2,252,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,63,255,255,255,255,255,255,248,63,255,255,255,255,255,255,248,63,255,255,255,255,255,255,248,21,85,85,255,85,85,87,244,0,0,0,254,0,0,3,244,0,0,0,254,0,0,3,244,0,0,0,253,0,0,3,244,0,0,1,252,0,0,3,240,0,0,2,252,0,0,7,240,0,0,3,252,0,0,7,240,0,0,3,248,0,0,7,240,0,0,11,244,0,0,11,240,0,0,15,240,0,0,11,240,0,0,31,224,0,0,11,240,0,0,63,192,0,0,15,224,0,0,191,192,0,0,15,224,0,0,255,0,0,0,15,208,0,3,254,0,0,0,15,208,0,11,252,0,0,0,31,192,0,47,244,0,0,0,47,192,0,191,208,0,0,0,63,192,3,255,128,0,0,0,63,128,31,254,0,0,21,85,255,64,191,244,0,0,15,255,255,0,127,208,0,0,15,255,253,0,30,0,0,0,11,255,224,0,0,0,0,0,0,0,0,0, + // 0x529f 功 + 159,82,33,34,50,36,1,253,0,0,0,0,0,84,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,63,255,255,240,0,253,0,0,0,63,255,255,240,0,253,0,0,0,63,255,255,240,0,253,0,0,0,0,31,208,0,0,253,0,0,0,0,15,192,11,255,255,255,255,128,0,15,192,11,255,255,255,255,128,0,15,192,11,255,255,255,255,128,0,15,192,0,1,253,0,47,128,0,15,192,0,1,252,0,47,128,0,15,192,0,1,252,0,47,128,0,15,192,0,2,252,0,63,64,0,15,192,0,2,248,0,63,64,0,15,192,0,3,248,0,63,64,0,15,192,0,3,244,0,63,64,0,15,192,0,3,244,0,63,64,0,15,192,0,7,240,0,63,64,0,15,193,184,11,240,0,63,0,0,15,255,252,15,224,0,63,0,0,111,255,252,31,208,0,63,0,111,255,255,224,63,192,0,127,0,127,255,228,0,127,128,0,127,0,63,249,0,0,255,0,0,191,0,57,0,0,2,254,0,0,190,0,0,0,0,11,252,0,0,254,0,0,0,0,47,240,0,0,253,0,0,0,0,191,208,0,2,252,0,0,0,7,255,128,31,255,252,0,0,0,7,254,0,15,255,244,0,0,0,1,244,0,15,255,208,0,0,0,0,64,0,0,0,0,0, + // 0x52a0 加 + 160,82,32,34,16,36,1,253,0,5,64,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,2,255,255,255,21,95,213,85,2,255,255,255,63,255,255,255,194,255,255,255,63,255,255,255,194,248,0,191,63,255,255,255,194,248,0,191,0,31,192,31,194,248,0,191,0,31,192,31,130,248,0,191,0,47,128,31,130,248,0,191,0,47,128,47,130,248,0,191,0,47,128,47,130,248,0,191,0,47,128,47,130,248,0,191,0,63,64,47,130,248,0,191,0,63,64,47,130,248,0,191,0,63,0,47,130,248,0,191,0,63,0,47,130,248,0,191,0,127,0,47,130,248,0,191,0,190,0,63,66,248,0,191,0,190,0,63,66,248,0,191,0,253,0,63,66,248,0,191,1,252,0,63,66,248,0,191,2,252,0,63,66,248,0,191,3,244,0,63,2,248,0,191,7,240,0,63,2,248,0,191,15,240,0,127,2,255,255,255,31,208,0,255,2,255,255,255,63,193,255,254,2,255,255,255,191,64,255,252,2,248,0,191,46,0,255,244,2,248,0,191,8,0,20,0,1,84,0,0, + // 0x52a8 动 + 168,82,32,34,16,36,2,253,0,0,0,0,0,21,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,63,0,0,63,255,255,252,0,63,0,0,63,255,255,252,0,63,0,0,47,255,255,252,0,63,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,63,0,0,0,0,0,0,255,255,255,255,0,0,0,0,255,255,255,255,0,0,0,0,255,255,255,255,0,0,0,0,0,127,0,191,255,255,255,254,0,127,0,127,255,255,255,254,0,190,0,127,255,255,255,254,0,190,0,190,0,127,0,0,0,190,0,190,0,190,0,0,0,253,0,190,0,253,0,0,0,253,0,190,0,252,7,208,0,252,0,190,1,252,3,240,1,252,0,190,2,248,3,240,2,252,0,253,3,240,1,248,2,248,0,253,7,240,0,252,3,244,0,253,15,208,1,253,7,240,0,253,15,197,191,254,11,240,0,253,63,255,255,255,15,224,0,252,191,255,254,127,95,208,1,252,127,254,64,46,127,192,1,252,62,64,0,0,191,64,2,252,0,0,0,1,255,0,3,248,0,0,0,3,253,47,255,244,0,0,0,7,248,15,255,240,0,0,0,0,240,15,255,128,0,0,0,0,64,0,0,0, + // 0x5316 化 + 22,83,34,33,41,36,1,253,0,0,47,128,190,0,0,0,0,0,0,63,192,190,0,0,0,0,0,0,191,64,190,0,0,0,0,0,0,255,0,190,0,0,0,0,0,2,253,0,190,0,0,0,0,0,3,252,0,190,0,0,0,0,0,15,240,0,190,0,0,48,0,0,31,224,0,190,0,0,252,0,0,63,208,0,190,0,7,255,0,0,255,208,0,190,0,47,253,0,3,255,208,0,190,1,255,240,0,11,255,208,0,190,11,255,64,0,47,255,208,0,190,127,248,0,0,191,239,208,0,191,255,208,0,0,255,143,208,0,191,253,0,0,0,127,15,208,0,191,224,0,0,0,60,15,208,0,191,0,0,0,0,0,15,208,0,190,0,0,0,0,0,15,208,0,190,0,0,0,0,0,15,208,0,190,0,0,0,0,0,15,208,0,190,0,0,0,0,0,15,208,0,190,0,0,0,0,0,15,208,0,190,0,0,0,0,0,15,208,0,190,0,0,7,128,0,15,208,0,190,0,0,11,224,0,15,208,0,190,0,0,11,224,0,15,208,0,190,0,0,11,208,0,15,208,0,191,0,0,15,208,0,15,208,0,127,64,0,47,192,0,15,208,0,63,255,255,255,192,0,15,208,0,63,255,255,255,64,0,15,208,0,11,255,255,253,0,0,10,128,0,0,0,0,0,0, + // 0x5347 升 + 71,83,32,35,24,36,2,252,0,0,0,1,0,5,0,0,0,0,0,31,64,47,128,0,0,0,2,255,208,47,128,0,0,0,111,255,208,47,128,0,0,31,255,253,0,47,128,0,27,255,255,144,0,47,128,0,191,255,252,0,0,47,128,0,63,250,252,0,0,47,128,0,41,0,252,0,0,47,128,0,0,0,252,0,0,47,128,0,0,0,252,0,0,47,128,0,0,0,252,0,0,47,128,0,0,0,252,0,0,47,128,0,0,0,252,0,0,47,128,0,0,1,253,0,0,63,128,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,252,0,0,47,128,0,0,2,252,0,0,47,128,0,0,2,248,0,0,47,128,0,0,3,248,0,0,47,128,0,0,3,244,0,0,47,128,0,0,7,240,0,0,47,128,0,0,15,240,0,0,47,128,0,0,31,224,0,0,47,128,0,0,63,192,0,0,47,128,0,0,191,128,0,0,47,128,0,2,255,0,0,0,47,128,0,11,253,0,0,0,47,128,0,63,244,0,0,0,47,128,0,255,208,0,0,0,47,128,0,127,64,0,0,0,47,128,0,24,0,0,0,0,47,128,0,0,0,0,0,0,0,0,0, + // 0x534a 半 + 74,83,32,34,16,36,2,253,0,0,0,15,224,0,0,0,0,120,0,15,224,0,62,0,2,252,0,15,224,0,127,192,0,254,0,15,224,0,191,0,0,191,64,15,224,0,254,0,0,63,192,15,224,2,252,0,0,47,208,15,224,3,248,0,0,15,240,15,224,11,240,0,0,11,240,15,224,31,208,0,0,7,144,15,224,7,192,0,0,0,0,15,224,0,0,0,1,85,85,95,229,85,85,80,15,255,255,255,255,255,255,240,15,255,255,255,255,255,255,240,15,255,255,255,255,255,255,240,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,85,85,85,95,245,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0, + // 0x534f 协 + 79,83,33,34,50,36,2,253,1,248,0,0,26,64,0,0,0,1,248,0,0,47,128,0,0,0,1,248,0,0,47,128,0,0,0,1,248,0,0,47,128,0,0,0,1,248,0,0,47,128,0,0,0,1,248,0,0,47,128,0,0,0,1,248,0,0,47,128,0,0,0,1,248,2,255,255,255,255,0,0,2,252,2,255,255,255,255,0,0,255,255,246,255,255,255,255,0,0,255,255,244,0,63,128,127,0,0,255,255,244,0,63,64,127,0,0,1,248,0,0,63,64,127,0,0,1,248,0,0,63,0,127,0,0,1,248,2,244,63,0,127,248,0,1,248,3,240,63,0,127,252,0,1,248,3,240,127,0,127,189,0,1,248,7,224,190,0,126,126,0,1,248,15,208,254,0,126,63,0,1,248,15,192,253,0,190,63,0,1,248,47,129,252,0,190,47,64,1,248,63,3,248,0,190,47,128,1,248,126,3,244,0,190,31,128,1,248,12,11,240,0,189,15,192,1,248,0,31,224,0,253,4,0,1,248,0,63,192,0,253,0,0,1,248,0,127,128,0,252,0,0,1,248,1,255,0,0,252,0,0,1,248,3,253,0,1,252,0,0,1,248,15,248,0,3,252,0,0,1,248,63,240,31,255,244,0,0,1,248,127,192,15,255,240,0,0,1,248,31,0,11,255,128,0,0,1,164,4,0,0,0,0,0,0, + // 0x5355 单 + 85,83,32,34,16,36,2,253,0,0,144,0,0,2,64,0,0,7,240,0,0,11,244,0,0,3,252,0,0,15,240,0,0,1,254,0,0,47,208,0,0,0,191,64,0,63,128,0,0,0,63,128,0,255,0,0,2,170,191,170,171,255,170,128,2,255,255,255,255,255,255,192,2,255,255,255,255,255,255,192,2,248,0,15,224,0,31,192,2,248,0,15,224,0,31,192,2,248,0,15,224,0,31,192,2,254,170,175,250,170,191,192,2,255,255,255,255,255,255,192,2,255,255,255,255,255,255,192,2,248,0,15,224,0,31,192,2,248,0,15,224,0,31,192,2,248,0,15,224,0,31,192,2,255,255,255,255,255,255,192,2,255,255,255,255,255,255,192,2,255,255,255,255,255,255,192,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,11,224,0,0,0, + // 0x5361 卡 + 97,83,32,34,16,36,2,253,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,255,255,255,0,0,0,0,47,255,255,255,0,0,0,0,47,255,255,255,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,111,213,85,85,85,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,238,0,0,0,0,0,0,47,255,248,0,0,0,0,0,47,255,255,208,0,0,0,0,47,203,255,254,0,0,0,0,47,192,111,255,208,0,0,0,47,192,1,255,192,0,0,0,47,192,0,31,64,0,0,0,47,192,0,1,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,31,192,0,0,0, + // 0x5370 印 + 112,83,30,34,16,36,3,253,0,0,6,0,0,0,0,0,0,0,127,192,0,0,0,0,0,7,255,224,85,85,85,80,17,191,255,145,255,255,255,240,127,255,248,1,255,255,255,240,127,254,64,1,255,255,255,240,127,144,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,64,0,1,252,0,3,240,127,255,255,209,252,0,3,240,127,255,255,209,252,0,3,240,127,255,255,209,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,255,255,225,252,0,7,240,127,255,255,225,252,15,255,240,127,255,255,225,252,11,255,240,127,64,0,1,252,7,255,192,127,0,0,1,252,2,148,0,127,0,0,1,252,0,0,0,21,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0, + // 0x5371 危 + 113,83,34,35,59,36,1,252,0,0,31,144,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,255,255,244,0,0,0,0,0,255,255,255,255,0,0,0,0,2,255,255,255,254,0,0,0,0,7,252,0,3,252,0,0,0,0,15,240,0,7,248,0,0,0,0,63,224,0,15,240,0,0,0,0,191,192,0,31,224,0,0,0,2,255,255,255,255,255,255,255,128,11,255,255,255,255,255,255,255,128,63,255,255,255,255,255,255,255,128,127,255,64,0,0,0,0,0,0,31,63,64,0,0,0,0,0,0,4,63,64,0,0,0,0,0,0,0,63,65,255,255,255,255,0,0,0,63,65,255,255,255,255,0,0,0,63,65,255,255,255,255,0,0,0,63,1,252,0,0,63,0,0,0,63,1,252,0,0,127,0,0,0,63,1,252,0,0,127,0,0,0,127,1,252,0,0,190,0,0,0,191,1,252,0,0,254,0,0,0,190,1,252,2,255,253,0,0,0,253,1,252,1,255,252,0,0,0,252,1,252,0,255,224,9,0,2,252,1,252,0,0,0,11,208,3,248,1,252,0,0,0,15,208,7,244,1,252,0,0,0,15,208,15,240,1,252,0,0,0,15,192,47,208,1,254,0,0,0,127,192,127,192,0,255,255,255,255,255,64,127,0,0,127,255,255,255,255,0,13,0,0,27,255,255,255,248,0,0,0,0,0,0,0,0,0,0, + // 0x5374 却 + 116,83,32,34,16,36,1,253,0,0,252,0,0,0,0,0,0,0,252,0,0,0,0,0,0,0,252,0,2,255,255,255,0,0,252,0,2,255,255,255,0,0,252,0,2,255,255,255,0,0,252,0,2,248,0,127,15,255,255,255,194,248,0,127,15,255,255,255,194,248,0,127,15,255,255,255,194,248,0,127,0,0,252,0,2,248,0,127,0,0,252,0,2,248,0,127,0,0,252,0,2,248,0,127,0,0,252,0,2,248,0,127,0,0,252,0,2,248,0,127,191,255,255,255,242,248,0,127,191,255,255,255,242,248,0,127,191,255,255,255,242,248,0,127,0,15,224,0,2,248,0,127,0,31,208,0,2,248,0,127,0,47,192,0,2,248,0,127,0,63,128,16,2,248,0,127,0,63,65,244,2,248,0,127,0,127,1,252,2,248,0,127,0,254,0,253,2,248,0,127,0,252,0,127,2,248,21,191,1,252,0,63,130,248,63,255,3,249,90,255,194,248,47,253,111,255,255,255,210,248,31,228,127,255,255,255,242,248,0,0,127,255,233,67,242,248,0,0,37,64,0,3,246,248,0,0,0,0,0,1,66,248,0,0,0,0,0,0,2,248,0,0,0,0,0,0,2,248,0,0, + // 0x5378 卸 + 120,83,32,34,16,36,1,253,0,62,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,127,0,0,2,255,255,255,0,254,0,0,2,255,255,255,0,255,255,255,226,255,255,255,2,255,255,255,226,252,0,63,7,255,255,255,226,248,0,63,15,224,126,0,2,248,0,63,47,192,126,0,2,248,0,63,63,128,126,0,2,248,0,63,15,0,126,0,2,248,0,63,0,0,126,0,2,248,0,63,63,255,255,255,242,248,0,63,63,255,255,255,242,248,0,63,63,255,255,255,242,248,0,63,0,0,126,0,2,248,0,63,0,0,126,0,2,248,0,63,1,80,126,0,2,248,0,63,3,224,126,0,2,248,0,63,3,224,127,255,194,248,0,63,3,224,127,255,194,248,0,63,3,224,127,255,194,248,0,63,3,224,126,0,2,248,0,63,3,224,126,0,2,248,0,63,3,224,126,0,2,248,0,63,3,224,126,0,2,248,63,255,3,224,126,6,178,248,47,255,3,224,191,255,246,248,31,253,27,255,255,255,246,248,5,64,191,255,255,254,82,248,0,0,191,255,233,0,2,248,0,0,126,144,0,0,2,248,0,0,0,0,0,0,2,248,0,0,0,0,0,0,2,248,0,0, + // 0x538b 压 + 139,83,34,32,32,36,1,253,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,3,244,0,0,0,0,0,0,0,3,244,0,0,5,64,0,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,0,0,3,244,191,255,255,255,255,254,0,3,240,191,255,255,255,255,254,0,3,240,191,255,255,255,255,254,0,3,240,0,0,31,208,0,0,0,3,240,0,0,15,192,0,0,0,3,240,0,0,15,192,32,0,0,3,240,0,0,15,192,252,0,0,3,240,0,0,15,192,255,64,0,7,240,0,0,15,192,63,208,0,7,224,0,0,15,192,15,240,0,11,224,0,0,15,192,3,248,0,15,208,0,0,15,192,1,240,0,15,192,0,0,15,192,0,64,0,15,192,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,0,63,143,255,255,255,255,255,255,192,127,15,255,255,255,255,255,255,192,191,15,255,255,255,255,255,255,192,45,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0, + // 0x539f 原 + 159,83,33,32,32,36,1,253,1,255,255,255,255,255,255,255,192,1,255,255,255,255,255,255,255,192,1,255,255,255,255,255,255,255,192,1,252,0,0,31,208,0,0,0,1,252,0,0,47,192,0,0,0,1,252,0,0,63,192,0,0,0,1,252,31,255,255,255,255,240,0,1,252,31,255,255,255,255,240,0,1,252,31,234,170,170,171,240,0,1,252,31,192,0,0,7,240,0,1,252,31,192,0,0,7,240,0,1,252,31,213,85,85,91,240,0,1,252,31,255,255,255,255,240,0,1,252,31,255,255,255,255,240,0,2,252,31,192,0,0,7,240,0,2,248,31,192,0,0,7,240,0,2,248,31,192,0,0,7,240,0,2,248,31,255,255,255,255,240,0,3,244,31,255,255,255,255,240,0,3,244,10,170,175,234,170,160,0,3,244,0,0,15,208,0,0,0,3,240,0,144,15,208,28,0,0,7,240,2,252,15,208,191,0,0,11,240,7,248,15,208,63,208,0,15,224,15,240,15,208,15,244,0,15,208,63,192,15,208,3,252,0,31,192,255,64,15,208,0,255,0,47,199,253,0,15,208,0,127,192,63,79,244,0,15,208,0,31,192,191,2,208,31,255,208,0,10,0,126,0,0,15,255,192,0,0,0,5,0,0,11,254,0,0,0,0, + // 0x53cc 双 + 204,83,33,32,32,36,1,252,47,255,255,252,127,255,255,255,0,47,255,255,253,127,255,255,255,0,47,255,255,252,127,255,255,255,0,0,0,1,252,47,128,0,190,0,0,0,1,252,31,192,0,254,0,0,0,2,252,31,192,0,253,0,1,0,3,248,15,192,0,252,0,7,192,3,244,15,208,1,252,0,31,224,3,240,11,224,2,248,0,11,244,7,240,7,240,3,244,0,3,253,11,240,7,240,3,240,0,0,255,15,224,3,240,11,240,0,0,127,207,208,3,248,15,224,0,0,47,255,192,1,252,31,208,0,0,15,255,128,0,252,47,192,0,0,3,255,64,0,254,63,128,0,0,1,255,0,0,191,191,0,0,0,0,255,64,0,63,254,0,0,0,1,255,192,0,63,252,0,0,0,3,255,224,0,31,248,0,0,0,7,255,244,0,15,240,0,0,0,15,243,252,0,63,248,0,0,0,47,210,253,0,191,253,0,0,0,127,192,255,2,255,255,0,0,0,255,0,188,11,253,191,192,0,3,254,0,48,47,244,63,240,0,15,252,0,1,255,208,15,252,0,63,240,0,11,255,64,3,255,128,127,192,0,15,253,0,0,255,192,31,64,0,7,224,0,0,63,0,8,0,0,2,64,0,0,9,0,0,0,0,0,0,0,0,0,0, + // 0x53cd 反 + 205,83,32,33,8,36,2,252,0,255,255,255,255,255,255,248,0,255,255,255,255,255,255,248,0,255,255,255,255,255,255,248,0,254,85,85,85,85,85,80,0,253,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,254,0,0,0,0,4,0,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,0,0,253,47,192,0,0,255,0,0,252,15,224,0,1,253,0,0,252,11,240,0,3,252,0,0,252,7,248,0,7,248,0,1,252,3,252,0,15,240,0,1,252,1,254,0,47,224,0,2,252,0,191,128,127,192,0,2,248,0,63,209,255,64,0,3,244,0,31,247,254,0,0,3,244,0,11,255,248,0,0,7,240,0,2,255,240,0,0,11,240,0,2,255,224,0,0,15,208,0,31,255,253,0,0,31,192,0,255,255,255,208,0,63,192,31,255,193,255,254,64,127,70,255,253,0,47,255,249,255,11,255,224,0,7,255,253,125,3,254,0,0,0,47,248,8,1,144,0,0,0,1,176,0,0,0,0,0,0,0,0, + // 0x53d6 取 + 214,83,34,32,32,36,1,253,63,255,255,255,244,0,0,0,0,63,255,255,255,244,0,0,0,0,63,255,255,255,244,0,0,0,0,2,248,0,127,47,255,255,255,64,2,248,0,63,31,255,255,255,64,2,248,0,63,31,255,255,255,64,2,248,0,63,5,149,85,127,0,2,248,0,63,15,208,0,127,0,2,255,255,255,15,224,0,127,0,2,255,255,255,11,240,0,190,0,2,255,255,255,7,240,0,253,0,2,248,0,63,3,244,0,252,0,2,248,0,63,3,248,1,252,0,2,248,0,63,1,252,3,248,0,2,248,0,63,0,253,3,244,0,2,255,255,255,0,255,11,240,0,2,255,255,255,0,127,15,224,0,2,255,255,255,0,63,175,208,0,2,248,0,63,0,31,255,192,0,2,248,0,63,0,15,255,64,0,2,248,0,63,0,11,255,0,0,2,248,0,63,0,3,253,0,0,2,248,26,255,0,7,253,0,0,7,255,255,255,0,15,255,64,0,255,255,255,255,0,63,255,192,0,191,255,254,191,0,255,175,240,0,127,229,0,63,3,255,15,252,0,16,0,0,63,31,252,3,255,64,0,0,0,63,191,240,0,255,224,0,0,0,63,127,128,0,63,208,0,0,0,63,45,0,0,11,128,0,0,0,63,0,0,0,1,0, + // 0x53d8 变 + 216,83,32,35,24,36,2,252,0,0,0,27,192,0,0,0,0,0,0,31,208,0,0,0,0,0,0,15,240,0,0,0,0,0,0,7,244,0,0,0,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,0,0,15,208,11,240,0,0,0,41,15,208,11,240,80,0,0,63,79,208,11,243,244,0,0,255,15,208,11,242,253,0,1,253,15,208,11,240,191,128,7,248,15,208,11,240,47,208,15,240,15,208,11,240,11,244,63,192,15,208,11,240,3,252,11,0,15,208,11,240,0,224,0,0,15,208,11,240,0,0,0,0,0,0,0,0,0,0,3,255,255,255,255,255,248,0,3,255,255,255,255,255,254,0,3,255,255,255,255,255,252,0,0,15,224,0,0,11,248,0,0,3,248,0,0,47,224,0,0,1,254,0,0,191,192,0,0,0,191,192,3,255,0,0,0,0,31,248,47,248,0,0,0,0,7,255,255,224,0,0,0,0,0,255,255,0,0,0,0,0,7,255,255,144,0,0,0,6,255,255,255,255,64,0,26,255,255,244,47,255,255,164,255,255,254,64,1,191,255,255,63,254,128,0,0,6,255,252,62,64,0,0,0,0,1,184,0,0,0,0,0,0,0,0, + // 0x53f0 台 + 240,83,32,34,16,36,2,253,0,0,3,208,0,0,0,0,0,0,3,252,0,0,0,0,0,0,11,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,47,208,0,9,0,0,0,0,63,192,0,63,64,0,0,0,191,64,0,191,208,0,0,0,254,0,0,31,244,0,0,3,252,0,0,7,254,0,0,7,244,0,0,1,255,64,0,15,245,170,175,255,255,208,191,255,255,255,255,255,255,244,191,255,255,255,255,255,255,252,127,255,255,250,170,85,66,255,21,64,0,0,0,0,0,255,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,191,255,255,255,255,254,0,0,191,255,255,255,255,254,0,0,191,255,255,255,255,254,0,0,191,0,0,0,0,254,0,0,191,0,0,0,0,254,0,0,191,0,0,0,0,254,0,0,191,0,0,0,0,254,0,0,191,0,0,0,0,254,0,0,191,0,0,0,0,254,0,0,191,0,0,0,0,254,0,0,191,0,0,0,0,254,0,0,191,255,255,255,255,254,0,0,191,255,255,255,255,254,0,0,191,255,255,255,255,254,0,0,191,0,0,0,1,254,0,0,127,0,0,0,0,253,0, + // 0x5403 吃 + 3,84,32,34,16,36,3,253,0,0,0,0,144,0,0,0,0,0,0,2,252,0,0,0,0,0,0,3,252,0,0,0,255,255,224,3,244,0,0,0,255,255,224,11,240,0,0,0,255,255,224,15,240,0,0,0,252,11,224,31,255,255,255,252,252,7,224,63,255,255,255,252,252,7,224,191,255,255,255,252,252,7,224,254,0,0,0,0,252,7,227,252,0,0,0,0,252,7,239,244,0,0,0,0,252,7,235,224,0,0,0,0,252,7,225,207,255,255,255,64,252,7,224,15,255,255,255,192,252,7,224,15,255,255,255,0,252,7,224,0,0,31,252,0,252,7,224,0,0,127,224,0,252,7,224,0,1,255,128,0,252,7,224,0,7,253,0,0,252,7,224,0,31,244,0,0,252,11,224,0,127,192,0,0,255,255,224,1,255,0,0,0,255,255,224,7,252,0,0,0,255,255,224,15,240,0,0,0,252,0,0,63,192,0,0,116,252,0,0,191,0,0,0,126,248,0,0,253,0,0,0,126,0,0,1,252,0,0,0,189,0,0,1,253,0,0,0,253,0,0,0,255,255,255,255,252,0,0,0,191,255,255,255,248,0,0,0,31,255,255,255,224,0,0,0,0,21,85,84,0, + // 0x5408 合 + 8,84,34,35,59,36,1,252,0,0,0,3,248,0,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,47,255,64,0,0,0,0,0,0,127,255,192,0,0,0,0,0,1,255,31,240,0,0,0,0,0,7,253,11,252,0,0,0,0,0,31,248,2,255,64,0,0,0,0,127,224,0,191,208,0,0,0,1,255,128,0,47,248,0,0,0,11,254,0,0,7,255,0,0,0,63,248,0,0,1,255,208,0,1,255,208,0,0,0,127,253,0,15,255,255,255,255,255,255,255,128,127,248,255,255,255,255,241,255,224,63,192,255,255,255,255,240,47,192,13,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,0,0,0,15,255,255,255,255,255,0,0,0,15,255,255,255,255,255,0,0,0,15,208,0,0,0,127,0,0,0,15,208,0,0,0,63,0,0,0,15,208,0,0,0,63,0,0,0,15,208,0,0,0,63,0,0,0,15,208,0,0,0,63,0,0,0,15,208,0,0,0,63,0,0,0,15,208,0,0,0,63,0,0,0,15,208,0,0,0,63,0,0,0,15,255,255,255,255,255,0,0,0,15,255,255,255,255,255,0,0,0,15,255,255,255,255,255,0,0,0,15,208,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0, + // 0x540d 名 + 13,84,31,34,16,36,1,253,0,0,0,249,0,0,0,0,0,0,2,254,0,0,0,0,0,0,3,252,0,0,0,0,0,0,15,244,0,0,0,0,0,0,47,255,255,255,208,0,0,0,191,255,255,255,240,0,0,1,255,255,255,255,224,0,0,11,253,0,0,47,192,0,0,47,244,0,0,127,128,0,0,255,240,0,0,255,0,0,11,255,252,0,2,253,0,0,63,255,255,64,7,252,0,0,63,224,191,224,15,240,0,0,15,64,31,248,63,208,0,0,4,0,7,254,255,128,0,0,0,0,1,255,254,0,0,0,0,0,0,127,248,0,0,0,0,0,0,191,224,0,0,0,0,0,3,255,255,255,255,252,0,0,47,255,255,255,255,252,0,1,255,255,255,255,255,252,0,31,255,240,0,0,2,252,6,255,255,240,0,0,1,252,127,255,215,240,0,0,1,252,63,253,7,240,0,0,1,252,31,128,7,240,0,0,1,252,4,0,7,240,0,0,1,252,0,0,7,240,0,0,1,252,0,0,7,240,0,0,1,252,0,0,7,255,255,255,255,252,0,0,7,255,255,255,255,252,0,0,7,255,255,255,255,252,0,0,7,240,0,0,2,252,0,0,6,160,0,0,1,252, + // 0x540e 后 + 14,84,34,34,50,36,1,253,0,0,0,0,0,0,6,64,0,0,0,0,0,0,91,255,208,0,0,0,0,22,191,255,255,244,0,0,191,255,255,255,255,254,64,0,0,191,255,255,255,233,64,0,0,0,191,255,169,64,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,224,0,191,255,255,255,255,255,255,224,0,191,255,255,255,255,255,255,224,0,190,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,253,11,255,255,255,255,248,0,0,253,11,255,255,255,255,248,0,0,252,11,255,255,255,255,248,0,1,252,11,224,0,0,3,248,0,1,252,11,224,0,0,3,248,0,2,252,11,224,0,0,3,248,0,3,248,11,224,0,0,3,248,0,3,244,11,224,0,0,3,248,0,7,240,11,224,0,0,3,248,0,11,240,11,224,0,0,3,248,0,15,224,11,224,0,0,3,248,0,47,192,11,255,255,255,255,248,0,63,128,11,255,255,255,255,248,0,191,64,11,255,255,255,255,248,0,46,0,11,224,0,0,3,248,0,8,0,11,224,0,0,2,244,0, + // 0x5411 向 + 17,84,30,34,16,36,3,253,0,0,0,190,64,0,0,0,0,0,0,255,0,0,0,0,0,0,1,254,0,0,0,0,0,0,2,253,0,0,0,0,0,0,3,252,0,0,0,0,0,0,7,244,0,0,0,0,127,255,255,255,255,255,255,224,127,255,255,255,255,255,255,224,127,255,255,255,255,255,255,224,127,85,85,85,85,85,95,224,127,0,0,0,0,0,11,224,127,0,0,0,0,0,11,224,127,0,0,0,0,0,11,224,127,0,0,0,0,0,11,224,127,0,255,255,255,240,11,224,127,0,255,255,255,240,11,224,127,0,255,255,255,240,11,224,127,0,252,0,3,240,11,224,127,0,252,0,3,240,11,224,127,0,252,0,3,240,11,224,127,0,252,0,3,240,11,224,127,0,252,0,3,240,11,224,127,0,252,0,3,240,11,224,127,0,255,255,255,240,11,224,127,0,255,255,255,240,11,224,127,0,255,255,255,240,11,224,127,0,252,0,0,0,11,224,127,0,252,0,0,0,11,224,127,0,252,0,0,0,11,224,127,0,0,0,0,0,11,224,127,0,0,0,0,85,95,224,127,0,0,0,0,255,255,208,127,0,0,0,0,127,255,192,127,0,0,0,0,63,250,0, + // 0x5426 否 + 38,84,33,32,32,36,1,253,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,0,0,0,0,255,192,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,127,248,4,0,0,0,0,0,2,255,248,63,128,0,0,0,0,31,255,248,255,248,0,0,0,1,255,247,248,47,255,64,0,0,31,255,131,248,2,255,240,0,1,255,253,3,248,0,47,254,0,111,255,224,3,248,0,7,255,192,63,254,0,3,248,0,0,191,192,31,224,0,3,248,0,0,31,0,10,0,0,3,248,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,128,0,0,0,47,192,0,0,47,128,0,0,0,47,192,0,0,47,128,0,0,0,47,192,0,0,47,128,0,0,0,47,192,0,0,47,128,0,0,0,47,192,0,0,47,128,0,0,0,47,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,128,0,0,0,47,192,0,0,47,128,0,0,0,26,128,0, + // 0x542f 启 + 47,84,31,35,24,36,1,252,0,0,0,0,0,0,25,0,0,0,0,0,1,111,255,64,0,0,1,106,255,255,255,192,0,235,255,255,255,255,233,0,0,255,255,255,255,148,0,0,0,255,254,149,0,0,0,0,0,253,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,255,255,255,255,255,255,244,0,255,255,255,255,255,255,244,0,255,255,255,255,255,255,244,0,253,0,0,0,0,3,244,0,253,0,0,0,0,3,244,0,253,0,0,0,0,3,244,0,253,0,0,0,0,3,244,0,255,255,255,255,255,255,244,0,255,255,255,255,255,255,244,0,255,255,255,255,255,255,244,0,253,0,0,0,0,0,0,0,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,127,255,255,255,255,248,1,252,127,255,255,255,255,252,2,248,127,255,255,255,255,252,3,248,127,0,0,0,2,252,3,244,127,0,0,0,2,252,7,240,127,0,0,0,2,252,11,240,127,0,0,0,2,252,15,224,127,0,0,0,2,252,31,208,127,0,0,0,2,252,63,192,127,255,255,255,255,252,127,64,127,255,255,255,255,252,47,0,127,255,255,255,255,252,5,0,127,0,0,0,2,252,0,0,0,0,0,0,0,0, + // 0x544a 告 + 74,84,32,35,24,36,2,252,0,6,64,3,248,0,0,0,0,15,240,3,248,0,0,0,0,15,208,3,248,0,0,0,0,47,192,3,248,0,0,0,0,63,128,3,248,0,0,0,0,191,255,255,255,255,255,208,1,255,255,255,255,255,255,208,3,255,255,255,255,255,255,208,11,244,0,3,248,0,0,0,31,240,0,3,248,0,0,0,63,192,0,3,248,0,0,0,31,64,0,3,248,0,0,0,1,0,0,3,248,0,0,0,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,127,0,0,0,0,191,0,0,127,0,0,0,0,191,0,0,127,0,0,0,0,191,0,0,127,0,0,0,0,191,0,0,127,0,0,0,0,191,0,0,127,0,0,0,0,191,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,127,0,0,0,0,191,0,0,127,0,0,0,0,191,0,0,0,0,0,0,0,0,0, + // 0x5468 周 + 104,84,31,33,8,36,1,252,0,255,255,255,255,255,255,252,0,255,255,255,255,255,255,252,0,255,255,255,255,255,255,252,0,253,0,0,84,0,1,252,0,253,0,1,248,0,1,252,0,253,0,1,248,0,1,252,0,253,10,171,254,170,129,252,0,253,31,255,255,255,193,252,0,253,31,255,255,255,193,252,0,253,0,1,248,0,1,252,0,253,0,1,248,0,1,252,0,253,0,1,248,0,1,252,0,253,42,171,254,170,161,252,0,253,63,255,255,255,241,252,0,253,63,255,255,255,241,252,0,253,0,0,0,0,1,252,0,253,0,0,0,0,1,252,0,252,6,170,170,170,1,252,0,252,11,255,255,255,1,252,1,252,11,255,255,255,1,252,1,252,11,208,0,63,1,252,2,248,11,208,0,63,1,252,3,248,11,208,0,63,1,252,3,244,11,208,0,63,1,252,7,240,11,208,0,63,1,252,11,240,11,255,255,255,1,252,15,224,11,255,255,255,1,252,31,208,11,250,170,170,1,252,63,192,11,208,0,0,2,252,127,64,6,128,0,15,255,248,127,0,0,0,0,11,255,244,13,0,0,0,0,7,255,128,0,0,0,0,0,0,0,0, + // 0x547d 命 + 125,84,34,35,59,36,1,252,0,0,0,11,252,0,0,0,0,0,0,0,31,255,0,0,0,0,0,0,0,127,255,128,0,0,0,0,0,1,255,111,224,0,0,0,0,0,7,253,11,252,0,0,0,0,0,47,248,2,255,0,0,0,0,0,255,208,0,191,208,0,0,0,7,255,64,0,31,248,0,0,0,47,252,0,0,3,255,64,0,2,255,255,255,255,255,255,240,0,31,255,223,255,255,255,111,255,64,255,253,15,255,255,255,71,255,240,127,224,0,0,0,0,0,191,208,46,0,0,0,0,0,0,11,128,0,0,0,0,0,0,0,0,0,0,255,255,252,15,255,255,248,0,0,255,255,252,15,255,255,248,0,0,255,255,252,15,255,255,248,0,0,252,0,252,15,192,2,248,0,0,252,0,252,15,192,2,248,0,0,252,0,252,15,192,2,248,0,0,252,0,252,15,192,2,248,0,0,252,0,252,15,192,2,248,0,0,252,0,252,15,192,2,248,0,0,252,0,252,15,192,2,248,0,0,255,255,252,15,192,2,248,0,0,255,255,252,15,192,2,248,0,0,255,255,252,15,195,255,244,0,0,252,0,0,15,194,255,240,0,0,252,0,0,15,193,255,144,0,0,252,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x548c 和 + 140,84,32,34,16,36,1,253,0,0,0,4,0,0,0,0,0,0,1,252,0,0,0,0,0,1,191,255,0,0,0,0,6,255,255,255,64,0,0,0,47,255,255,144,15,255,255,254,15,255,252,0,15,255,255,254,4,1,252,0,15,255,255,254,0,1,252,0,15,192,0,254,0,1,252,0,15,192,0,254,0,1,252,0,15,192,0,254,0,1,252,0,15,192,0,254,63,255,255,255,143,192,0,254,63,255,255,255,143,192,0,254,63,255,255,255,143,192,0,254,0,7,252,0,15,192,0,254,0,15,254,0,15,192,0,254,0,15,255,64,15,192,0,254,0,47,255,208,15,192,0,254,0,63,255,240,15,192,0,254,0,191,254,252,15,192,0,254,0,253,252,255,15,192,0,254,3,245,252,63,143,192,0,254,7,241,252,47,15,192,0,254,15,209,252,13,15,192,0,254,63,193,252,0,15,192,0,254,191,65,252,0,15,192,0,254,190,1,252,0,15,255,255,254,60,1,252,0,15,255,255,254,16,1,252,0,15,255,255,254,0,1,252,0,15,208,0,254,0,1,252,0,15,192,0,254,0,1,252,0,15,192,0,254,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0, + // 0x54cd 响 + 205,84,32,34,16,36,2,253,0,0,0,0,0,233,0,0,0,0,0,0,1,254,0,0,0,0,0,0,2,252,0,0,127,255,240,0,3,252,0,0,127,255,240,0,7,244,0,0,127,255,240,0,11,240,0,0,126,3,240,191,255,255,255,254,126,3,240,191,255,255,255,254,126,3,240,191,255,255,255,254,126,3,240,189,0,0,0,190,126,3,240,189,0,0,0,190,126,3,240,189,0,0,0,190,126,3,240,189,5,85,80,190,126,3,240,189,15,255,240,190,126,3,240,189,15,255,240,190,126,3,240,189,15,65,240,190,126,3,240,189,15,65,240,190,126,3,240,189,15,65,240,190,126,3,240,189,15,65,240,190,126,3,240,189,15,65,240,190,126,3,240,189,15,65,240,190,127,255,240,189,15,65,240,190,127,255,240,189,15,150,240,190,127,255,240,189,15,255,240,190,126,0,0,189,15,255,240,190,126,0,0,189,15,64,0,190,126,0,0,189,15,64,0,190,41,0,0,189,0,0,0,190,0,0,0,189,0,0,0,190,0,0,0,189,0,0,0,190,0,0,0,189,0,0,0,190,0,0,0,189,0,0,127,254,0,0,0,189,0,0,63,252,0,0,0,189,0,0,47,224, + // 0x55b7 喷 + 183,85,33,34,50,36,2,253,0,0,0,0,1,164,0,0,0,0,0,0,0,1,248,0,0,0,0,0,0,0,1,248,0,0,0,127,255,192,170,171,254,170,168,0,127,255,193,255,255,255,255,252,0,127,255,193,255,255,255,255,252,0,125,11,192,0,1,248,0,0,0,124,11,192,11,193,248,47,0,0,124,11,192,15,208,0,63,0,0,124,11,198,175,250,170,191,170,0,124,11,203,255,255,255,255,255,0,124,11,203,255,255,255,255,255,0,124,11,192,15,208,0,63,0,0,124,11,192,15,208,0,63,0,0,124,11,192,0,0,0,0,0,0,124,11,192,42,170,170,170,160,0,124,11,192,127,255,255,255,240,0,124,11,192,127,255,255,255,240,0,124,11,192,126,0,0,3,240,0,124,11,192,126,0,0,3,240,0,124,11,192,126,1,164,3,240,0,127,255,192,126,1,248,3,240,0,127,255,192,126,1,248,3,240,0,127,255,192,126,1,248,3,240,0,125,0,0,126,1,248,3,240,0,124,0,0,126,2,248,3,240,0,124,0,0,126,3,244,3,240,0,40,0,0,21,11,241,145,80,0,0,0,0,0,63,211,253,0,0,0,0,0,2,255,65,255,208,0,0,0,1,191,252,0,47,253,0,0,0,63,255,208,0,2,255,192,0,0,15,249,0,0,0,63,64,0,0,5,0,0,0,0,6,0, + // 0x5634 嘴 + 52,86,33,35,59,36,2,252,0,0,0,2,240,15,192,0,0,0,0,0,3,240,15,192,0,0,0,0,1,131,240,15,192,112,0,127,255,195,211,240,15,194,252,0,127,255,195,211,255,223,239,244,0,127,255,195,211,255,223,255,64,0,124,11,195,211,245,79,244,0,0,124,11,195,211,240,15,192,0,0,124,11,195,211,240,15,192,15,64,124,11,195,211,246,159,192,15,64,124,11,195,255,255,223,229,111,64,124,11,239,255,255,219,255,255,0,124,11,239,255,252,2,255,252,0,124,11,218,67,248,1,0,0,0,124,11,192,11,255,255,192,0,0,124,11,192,31,255,255,208,0,0,124,11,192,127,64,47,128,0,0,124,11,193,255,0,127,64,0,0,124,11,203,255,255,255,255,248,0,124,11,255,255,255,255,255,248,0,127,255,207,190,0,248,2,248,0,127,255,192,126,0,248,2,248,0,127,255,192,127,255,255,255,248,0,124,0,0,127,255,255,255,248,0,124,0,0,190,0,248,2,248,0,124,0,0,189,0,248,2,248,0,40,0,0,254,1,252,2,248,0,0,0,0,255,255,255,255,248,0,0,0,2,255,255,255,255,248,0,0,0,3,248,0,0,2,248,0,0,0,15,240,0,0,2,248,0,0,0,63,208,0,1,87,244,0,0,0,191,64,0,3,255,240,0,0,0,29,0,0,1,255,144,0,0,0,0,0,0,0,0,0,0, + // 0x5668 器 + 104,86,34,34,50,36,1,252,1,170,170,168,2,170,170,168,0,2,255,255,252,3,255,255,248,0,2,255,255,252,3,255,255,248,0,2,244,0,252,3,240,1,248,0,2,244,0,252,3,240,1,248,0,2,244,0,252,3,240,1,248,0,2,244,0,252,3,240,1,248,0,2,244,0,252,3,240,1,248,0,2,254,170,252,3,250,171,248,0,2,255,255,252,3,255,255,248,0,2,255,255,255,147,255,255,248,0,0,0,0,15,240,0,0,0,0,0,0,0,63,192,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,63,240,0,255,64,0,0,0,1,255,192,0,63,224,0,0,0,11,255,0,0,31,253,0,0,0,191,252,0,0,3,255,208,0,27,255,224,0,0,0,255,253,0,255,255,255,253,11,255,255,255,224,127,255,255,253,11,255,255,255,208,47,255,255,253,11,255,255,255,128,0,252,0,189,11,208,3,240,0,0,252,0,189,11,208,3,240,0,0,252,0,189,11,208,3,240,0,0,252,0,189,11,208,3,240,0,0,252,0,189,11,208,3,240,0,0,255,255,253,11,255,255,240,0,0,255,255,253,11,255,255,240,0,0,255,255,253,11,255,255,240,0,0,252,0,189,11,208,3,240,0,0,0,0,0,0,0,0,0,0, + // 0x5674 噴 + 116,86,33,35,59,36,2,252,0,0,0,0,0,252,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0,85,85,253,85,84,0,0,0,0,255,255,255,255,252,0,127,255,240,255,255,255,255,252,0,127,255,240,0,0,252,0,0,0,127,255,240,7,208,252,47,0,0,125,3,240,7,208,168,47,0,0,125,3,241,91,229,85,127,85,0,125,3,251,255,255,255,255,255,128,125,3,251,255,255,255,255,255,128,125,3,240,7,208,0,47,0,0,125,3,240,7,208,0,47,0,0,125,3,240,0,0,0,0,0,0,125,3,240,127,255,255,255,240,0,125,3,240,127,255,255,255,240,0,125,3,240,126,0,0,3,240,0,125,3,240,126,0,0,3,240,0,125,3,240,127,255,255,255,240,0,125,3,240,127,255,255,255,240,0,125,3,240,126,0,0,3,240,0,127,255,240,126,0,0,3,240,0,127,255,240,127,255,255,255,240,0,127,255,240,127,255,255,255,240,0,125,0,0,126,0,0,3,240,0,125,0,0,126,0,0,3,240,0,61,0,0,127,255,255,255,240,0,0,0,0,127,255,255,255,240,0,0,0,0,2,228,0,248,0,0,0,0,0,31,252,2,255,64,0,0,0,6,255,224,0,127,244,0,0,0,127,255,0,0,11,254,0,0,0,63,228,0,0,0,255,64,0,0,14,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0, + // 0x56de 回 + 222,86,30,33,8,36,3,253,85,85,85,85,85,85,85,80,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,253,0,255,255,255,240,11,240,253,0,255,255,255,240,11,240,253,0,255,255,255,240,11,240,253,0,252,0,7,240,11,240,253,0,252,0,7,240,11,240,253,0,252,0,7,240,11,240,253,0,252,0,7,240,11,240,253,0,252,0,7,240,11,240,253,0,252,0,7,240,11,240,253,0,252,0,7,240,11,240,253,0,252,0,7,240,11,240,253,0,255,255,255,240,11,240,253,0,255,255,255,240,11,240,253,0,255,255,255,240,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,254,0,0,0,0,0,11,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240, + // 0x56e0 因 + 224,86,30,32,0,36,3,253,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,253,0,0,0,0,0,7,240,253,0,0,26,64,0,7,240,253,0,0,47,64,0,7,240,253,0,0,63,64,0,7,240,253,0,0,63,64,0,7,240,253,0,0,63,0,0,7,240,253,0,0,63,0,0,7,240,253,63,255,255,255,255,199,240,253,63,255,255,255,255,199,240,253,63,255,255,255,255,199,240,253,0,0,127,192,0,7,240,253,0,0,191,208,0,7,240,253,0,0,255,240,0,7,240,253,0,1,255,240,0,7,240,253,0,3,249,252,0,7,240,253,0,7,240,253,0,7,240,253,0,31,240,191,64,7,240,253,0,127,192,63,208,7,240,253,1,255,64,15,248,7,240,253,31,253,0,7,255,135,240,253,63,240,0,0,255,135,240,253,31,128,0,0,47,7,240,253,4,0,0,0,0,7,240,253,0,0,0,0,0,7,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,7,240, + // 0x56fa 固 + 250,86,30,32,0,36,3,253,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,253,0,0,0,0,0,11,240,253,0,0,21,64,0,11,240,253,0,0,47,128,0,11,240,253,0,0,47,128,0,11,240,253,0,0,47,128,0,11,240,253,26,170,191,234,170,139,240,253,47,255,255,255,255,139,240,253,47,255,255,255,255,139,240,253,0,0,47,128,0,11,240,253,0,0,47,128,0,11,240,253,0,0,47,128,0,11,240,253,1,170,191,234,164,11,240,253,2,255,255,255,252,11,240,253,2,255,255,255,252,11,240,253,2,244,0,1,252,11,240,253,2,244,0,1,252,11,240,253,2,244,0,1,252,11,240,253,2,244,0,1,252,11,240,253,2,254,170,170,252,11,240,253,2,255,255,255,252,11,240,253,2,255,255,255,252,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,254,0,0,0,0,0,11,240,253,0,0,0,0,0,7,240, + // 0x56fe 图 + 254,86,30,33,8,36,3,252,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,252,0,1,64,0,0,7,240,252,0,3,244,0,0,7,240,252,0,15,224,0,0,7,240,252,0,63,255,255,253,7,240,252,0,255,255,255,255,7,240,252,3,254,170,171,252,7,240,252,31,255,0,11,240,7,240,252,191,239,208,47,208,7,240,252,62,11,249,255,0,7,240,252,4,1,255,252,0,7,240,252,0,1,255,248,0,7,240,252,0,47,255,255,208,7,240,252,27,255,244,191,255,151,240,254,255,255,64,11,255,247,240,252,191,226,144,0,111,199,240,252,121,7,255,128,0,71,240,252,0,2,255,253,0,7,240,252,0,0,7,255,0,7,240,252,0,0,0,45,0,7,240,252,0,255,228,0,0,7,240,252,3,255,255,228,0,7,240,252,0,27,255,255,228,7,240,252,0,0,6,255,244,7,240,252,0,0,0,7,240,7,240,252,0,0,0,0,0,7,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,252,0,0,0,0,0,7,240,0,0,0,0,0,0,0,0, + // 0x5728 在 + 40,87,33,34,50,36,1,253,0,0,0,100,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,0,0,47,192,0,0,0,0,0,0,0,127,128,0,20,0,0,0,0,0,255,0,0,190,0,0,0,0,2,253,0,0,190,0,0,0,0,7,252,0,0,190,0,0,0,0,15,240,0,0,190,0,0,0,0,63,208,0,0,190,0,0,0,0,191,192,0,0,190,0,0,0,2,255,192,127,255,255,255,253,0,15,255,192,127,255,255,255,253,0,63,255,192,127,255,255,255,253,0,127,223,192,0,0,254,0,0,0,63,31,192,0,0,190,0,0,0,24,31,192,0,0,190,0,0,0,0,31,192,0,0,190,0,0,0,0,31,192,0,0,190,0,0,0,0,31,192,0,0,190,0,0,0,0,31,192,0,0,190,0,0,0,0,31,192,0,0,190,0,0,0,0,31,192,0,0,190,0,0,0,0,31,192,0,0,254,0,0,0,0,31,195,255,255,255,255,255,128,0,31,195,255,255,255,255,255,128,0,31,195,255,255,255,255,255,128,0,31,192,0,0,0,0,0,0, + // 0x574f 坏 + 79,87,34,34,50,36,1,253,0,42,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,1,255,255,255,255,255,208,0,63,1,255,255,255,255,255,208,0,63,1,255,255,255,255,255,208,0,63,0,0,0,15,240,0,0,0,63,0,0,0,31,224,0,0,0,63,0,0,0,63,192,0,0,0,63,0,0,0,191,128,0,0,63,255,255,0,0,255,0,0,0,63,255,255,0,3,254,0,0,0,63,255,255,0,15,254,32,0,0,0,63,64,0,47,254,253,0,0,0,63,0,0,191,255,255,128,0,0,63,0,2,255,254,63,224,0,0,63,0,15,253,190,15,252,0,0,63,0,127,240,190,2,255,0,0,63,3,255,192,190,0,191,192,0,63,7,255,0,190,0,47,240,0,63,2,248,0,190,0,11,192,0,63,0,144,0,190,0,2,0,0,63,7,64,0,190,0,0,0,0,63,255,64,0,190,0,0,0,0,127,255,128,0,190,0,0,0,27,255,254,0,0,190,0,0,0,191,255,208,0,0,190,0,0,0,127,248,0,0,0,190,0,0,0,63,64,0,0,0,190,0,0,0,16,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0, + // 0x5757 块 + 87,87,33,35,59,36,1,252,0,21,0,0,1,164,0,0,0,0,63,0,0,2,248,0,0,0,0,63,0,0,2,248,0,0,0,0,63,0,0,2,248,0,0,0,0,63,0,0,2,248,0,0,0,0,63,0,0,2,248,0,0,0,0,63,0,31,255,255,255,248,0,0,63,0,31,255,255,255,248,0,0,63,64,31,255,255,255,248,0,63,255,255,0,2,248,2,248,0,63,255,255,0,2,248,1,248,0,63,255,255,0,2,248,1,248,0,0,63,0,0,2,248,1,248,0,0,63,0,0,2,248,1,248,0,0,63,0,0,2,248,1,248,0,0,63,0,0,2,248,1,248,0,0,63,0,0,2,248,2,248,0,0,63,0,191,255,255,255,255,192,0,63,0,191,255,255,255,255,192,0,63,0,191,255,255,255,255,192,0,63,11,0,7,255,128,0,0,0,63,255,0,11,255,192,0,0,0,63,255,64,15,239,208,0,0,6,255,253,0,31,199,240,0,0,127,255,208,0,63,195,248,0,0,127,249,0,0,191,66,252,0,0,63,128,0,1,255,0,255,0,0,40,0,0,3,252,0,127,192,0,0,0,0,31,248,0,63,240,0,0,0,0,191,224,0,15,253,0,0,0,7,255,128,0,3,255,128,0,0,31,254,0,0,0,255,192,0,0,11,240,0,0,0,63,64,0,0,3,64,0,0,0,6,0,0,0,0,0,0,0,0,0,0, + // 0x578b 型 + 139,87,32,33,8,36,2,254,0,0,0,0,0,0,3,240,31,255,255,255,224,0,3,240,31,255,255,255,224,190,3,240,31,255,255,255,224,190,3,240,0,63,1,252,0,190,3,240,0,63,1,252,0,190,3,240,0,63,1,252,0,190,3,240,0,63,1,252,0,190,3,240,0,63,1,252,0,190,3,240,191,255,255,255,248,190,3,240,191,255,255,255,248,190,3,240,191,255,255,255,248,190,3,240,0,190,1,252,0,190,3,240,0,253,1,252,0,190,3,240,1,252,1,252,0,20,3,240,3,248,1,252,0,0,3,240,15,240,1,252,0,0,3,240,127,208,1,252,0,11,255,240,191,128,1,252,0,3,255,240,62,0,0,175,240,3,255,128,4,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,1,255,255,255,255,255,255,64,1,255,255,255,255,255,255,64,1,255,255,255,255,255,255,64,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x57ab 垫 + 171,87,33,33,41,36,2,254,0,47,64,0,11,208,0,0,0,0,47,64,0,11,208,0,0,0,0,47,64,0,11,208,0,0,0,0,47,128,0,11,208,0,0,0,255,255,255,143,255,255,255,128,0,255,255,255,143,255,255,255,128,0,255,255,255,143,255,255,255,128,0,0,47,64,0,15,192,31,128,0,0,47,64,0,15,192,31,128,0,0,47,65,71,159,192,31,128,0,0,47,255,207,255,128,31,128,0,91,255,255,203,255,128,31,128,0,255,255,254,64,255,208,31,128,0,255,255,128,0,127,248,31,128,0,185,47,64,0,255,255,95,128,0,0,47,64,2,252,191,79,139,64,0,47,64,11,244,31,15,203,192,0,47,64,63,224,0,15,207,192,47,255,64,255,128,0,11,255,128,15,255,0,62,0,0,3,255,0,15,248,0,31,224,0,0,189,0,0,0,0,11,224,0,0,0,0,0,0,0,11,224,0,0,0,0,2,255,255,255,255,255,255,128,0,2,255,255,255,255,255,255,128,0,1,255,255,255,255,255,255,128,0,0,0,0,11,224,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,11,224,0,0,0,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0, + // 0x586b 填 + 107,88,34,35,59,36,1,252,0,21,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,1,255,255,255,255,255,192,0,63,1,255,255,255,255,255,192,0,63,1,255,255,255,255,255,192,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,11,255,255,255,244,0,63,255,254,11,255,255,255,244,0,63,255,254,11,208,0,3,244,0,63,255,254,11,208,0,3,244,0,0,63,0,11,255,255,255,244,0,0,63,0,11,255,255,255,244,0,0,63,0,11,208,0,3,244,0,0,63,0,11,208,0,3,244,0,0,63,0,11,255,255,255,244,0,0,63,0,11,255,255,255,244,0,0,63,0,11,208,0,3,244,0,0,63,0,11,208,0,3,244,0,0,63,11,11,255,255,255,244,0,0,63,255,11,255,255,255,244,0,0,63,255,64,0,0,0,0,0,2,255,254,0,0,0,0,0,0,111,255,235,255,255,255,255,255,208,191,254,11,255,255,255,255,255,224,63,208,11,255,255,255,255,255,224,61,0,0,0,16,0,8,0,0,0,0,0,1,255,0,127,64,0,0,0,0,11,253,0,127,224,0,0,0,1,191,240,0,11,253,0,0,0,15,255,128,0,1,255,128,0,0,11,248,0,0,0,63,208,0,0,2,144,0,0,0,10,0,0,0,0,0,0,0,0,0,0, + // 0x58f3 壳 + 243,88,32,34,16,36,2,253,0,0,0,11,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,106,170,170,175,250,170,170,169,0,0,0,15,224,0,0,0,1,85,85,95,245,85,85,64,2,255,255,255,255,255,255,192,2,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,170,170,170,170,170,170,252,63,0,0,0,0,0,0,252,63,5,85,85,85,85,80,252,63,15,255,255,255,255,240,252,0,15,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,255,0,0,0,3,255,255,255,255,0,0,0,3,255,255,255,255,0,0,0,3,244,0,0,191,0,0,0,3,244,0,0,191,0,0,0,7,240,0,0,191,0,16,0,15,240,0,0,191,0,61,0,63,208,0,0,191,0,63,2,255,128,0,0,127,0,126,111,254,0,0,0,127,255,253,127,248,0,0,0,63,255,252,63,128,0,0,0,31,255,240,8,0,0,0,0,0,0,0, + // 0x5907 备 + 7,89,34,35,59,36,1,252,0,0,0,249,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,47,255,255,255,253,0,0,0,0,191,255,255,255,255,0,0,0,3,255,255,255,255,253,0,0,0,31,253,0,0,11,248,0,0,0,191,255,128,0,63,240,0,0,11,255,191,224,1,255,192,0,0,11,253,15,253,11,254,0,0,0,3,224,2,255,255,244,0,0,0,0,0,0,127,255,192,0,0,0,0,0,1,255,255,249,0,0,0,0,0,127,255,255,255,228,0,0,1,175,255,254,11,255,255,250,64,191,255,255,208,0,111,255,255,224,127,255,244,0,0,1,191,255,192,63,249,0,0,0,0,1,175,0,20,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,64,3,248,0,63,192,0,0,63,64,3,248,0,63,192,0,0,63,64,3,248,0,63,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,234,171,254,170,191,192,0,0,63,64,3,248,0,63,192,0,0,63,64,3,248,0,63,192,0,0,63,64,3,248,0,63,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,64,0,0,0,63,128,0,0,0,0,0,0,0,0,0,0, + // 0x590d 复 + 13,89,24,35,210,36,6,252,0,15,128,0,0,0,0,31,192,0,0,0,0,63,128,0,0,0,0,191,255,255,255,224,0,255,255,255,255,240,3,255,255,255,255,240,11,244,0,0,0,0,31,240,0,0,0,0,127,224,0,0,0,0,255,255,255,255,255,0,190,255,255,255,255,0,24,189,0,0,63,0,0,189,0,0,63,0,0,191,255,255,255,0,0,191,255,255,255,0,0,189,0,0,63,0,0,189,0,0,63,0,0,191,255,255,255,0,0,191,255,255,255,0,0,1,254,0,0,0,0,3,252,0,0,0,0,15,255,255,254,0,0,63,255,255,255,0,1,255,149,86,254,0,11,255,192,3,252,0,191,251,244,15,244,0,127,130,254,127,208,0,28,0,191,255,64,0,0,0,63,254,0,0,0,6,255,255,224,0,1,191,255,191,255,148,127,255,228,11,255,253,63,254,0,0,191,248,30,64,0,0,1,176,0,0,0,0,0,0, + // 0x5916 外 + 22,89,34,34,50,36,1,253,0,0,164,0,0,3,244,0,0,0,0,254,0,0,3,244,0,0,0,0,253,0,0,3,244,0,0,0,2,252,0,0,3,244,0,0,0,3,248,0,0,3,244,0,0,0,3,248,0,0,3,244,0,0,0,11,255,255,248,3,244,0,0,0,15,255,255,252,3,244,0,0,0,31,255,255,252,3,244,0,0,0,63,192,3,255,3,244,0,0,0,127,64,3,255,195,244,0,0,0,255,0,7,255,211,244,0,0,2,252,0,11,251,243,244,0,0,7,252,0,15,227,255,244,0,0,15,254,0,15,208,255,244,0,0,63,255,208,31,192,127,244,0,0,255,175,248,63,128,47,244,0,0,47,7,255,127,64,15,248,0,0,8,0,255,255,0,3,255,0,0,0,0,47,254,0,3,255,208,0,0,0,11,252,0,3,255,248,0,0,0,3,248,0,3,255,255,64,0,0,15,240,0,3,246,255,240,0,0,47,208,0,3,244,127,224,0,0,63,192,0,3,244,11,128,0,0,255,64,0,3,244,1,0,0,3,254,0,0,3,244,0,0,0,15,248,0,0,3,244,0,0,0,63,240,0,0,3,244,0,0,1,255,192,0,0,3,244,0,0,15,255,0,0,0,3,244,0,0,47,248,0,0,0,3,244,0,0,11,208,0,0,0,3,244,0,0,2,0,0,0,0,3,244,0,0, + // 0x591a 多 + 26,89,32,35,24,36,2,252,0,0,0,46,64,0,0,0,0,0,0,191,192,0,0,0,0,0,2,255,0,0,0,0,0,0,11,255,255,255,224,0,0,0,127,255,255,255,244,0,0,2,255,255,255,255,224,0,0,47,253,0,0,63,192,0,6,255,252,0,0,255,64,0,63,255,255,128,3,253,0,0,31,244,127,244,15,248,0,0,11,64,11,254,127,224,0,0,0,0,1,255,255,64,0,0,0,0,0,127,253,64,0,0,0,0,2,255,231,252,0,0,0,0,127,255,79,244,0,0,0,27,255,244,127,224,0,0,26,255,255,66,255,255,255,248,127,255,224,15,255,255,255,253,47,249,0,191,255,255,255,252,25,0,11,255,128,0,11,244,0,0,191,253,0,0,31,240,0,31,255,255,64,0,63,192,0,127,253,191,240,0,255,64,0,31,144,31,253,3,254,0,0,8,0,2,255,159,248,0,0,0,0,0,127,255,224,0,0,0,0,0,31,255,64,0,0,0,0,0,191,252,0,0,0,0,0,27,255,224,0,0,0,0,22,255,254,0,0,0,0,91,255,255,224,0,0,0,2,255,255,249,0,0,0,0,0,255,254,64,0,0,0,0,0,186,64,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5927 大 + 39,89,32,34,16,36,2,253,0,0,0,15,224,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,85,85,85,111,229,85,85,85,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,0,0,0,63,252,0,0,0,0,0,0,127,253,0,0,0,0,0,0,191,254,0,0,0,0,0,0,255,191,0,0,0,0,0,1,254,127,64,0,0,0,0,2,252,63,192,0,0,0,0,3,252,31,224,0,0,0,0,11,244,15,240,0,0,0,0,31,240,11,252,0,0,0,0,63,208,3,253,0,0,0,0,191,192,0,255,64,0,0,2,255,0,0,191,208,0,0,11,253,0,0,63,244,0,0,47,248,0,0,15,253,0,0,255,224,0,0,3,255,128,7,255,128,0,0,0,255,240,127,254,0,0,0,0,63,254,255,244,0,0,0,0,15,254,63,128,0,0,0,0,1,252,8,0,0,0,0,0,0,32, + // 0x5929 天 + 41,89,33,33,41,36,2,252,85,85,85,85,85,85,85,85,0,191,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,254,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,47,255,255,255,255,255,255,252,0,47,255,255,255,255,255,255,252,0,47,255,255,255,255,255,255,252,0,21,85,85,127,249,85,85,84,0,0,0,0,63,252,0,0,0,0,0,0,0,63,253,0,0,0,0,0,0,0,127,255,0,0,0,0,0,0,0,255,191,0,0,0,0,0,0,1,254,63,192,0,0,0,0,0,3,252,47,224,0,0,0,0,0,15,248,15,244,0,0,0,0,0,63,240,7,252,0,0,0,0,0,255,208,2,255,64,0,0,0,7,255,64,0,255,208,0,0,0,47,253,0,0,63,253,0,0,2,255,244,0,0,15,255,208,0,127,255,128,0,0,2,255,254,64,255,253,0,0,0,0,127,255,0,127,208,0,0,0,0,7,253,0,57,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0, + // 0x592a 太 + 42,89,34,35,59,36,1,252,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,21,85,85,91,245,85,85,85,64,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,0,0,0,15,255,0,0,0,0,0,0,0,31,255,128,0,0,0,0,0,0,47,255,192,0,0,0,0,0,0,63,159,208,0,0,0,0,0,0,63,79,224,0,0,0,0,0,0,191,11,240,0,0,0,0,0,0,255,3,248,0,0,0,0,0,1,253,3,252,0,0,0,0,0,3,252,1,255,0,0,0,0,0,11,248,0,191,64,0,0,0,0,31,240,0,63,192,0,0,0,0,63,215,0,47,240,0,0,0,0,255,239,208,15,248,0,0,0,3,255,63,244,7,254,0,0,0,15,253,11,253,2,255,128,0,0,127,244,2,255,64,191,240,0,2,255,208,0,191,208,47,253,0,47,255,64,0,63,240,11,255,208,127,252,0,0,15,224,2,255,208,31,208,0,0,3,64,0,127,64,10,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0, + // 0x5931 失 + 49,89,33,35,59,36,2,252,0,4,0,15,224,0,0,0,0,0,15,208,15,224,0,0,0,0,0,47,192,15,224,0,0,0,0,0,63,192,15,224,0,0,0,0,0,63,128,15,224,0,0,0,0,0,191,0,15,224,0,0,0,0,0,255,255,255,255,255,255,192,0,1,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,192,0,11,249,85,95,229,85,85,64,0,15,240,0,15,224,0,0,0,0,47,208,0,15,224,0,0,0,0,127,192,0,15,224,0,0,0,0,127,64,0,15,208,0,0,0,0,10,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,85,85,85,111,229,85,85,85,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,0,0,0,127,252,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,1,254,127,64,0,0,0,0,0,3,252,63,192,0,0,0,0,0,11,248,31,240,0,0,0,0,0,47,240,15,252,0,0,0,0,0,191,208,3,254,0,0,0,0,3,255,128,0,255,208,0,0,0,47,254,0,0,63,248,0,0,2,255,244,0,0,31,255,144,0,111,255,192,0,0,2,255,254,64,255,253,0,0,0,0,127,255,64,127,208,0,0,0,0,7,254,0,41,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0, + // 0x5934 头 + 52,89,32,34,16,36,2,253,0,0,0,0,42,0,0,0,0,4,0,0,63,0,0,0,0,31,128,0,63,0,0,0,0,63,253,0,63,0,0,0,0,31,255,128,63,0,0,0,0,1,255,244,127,0,0,0,0,0,31,244,127,0,0,0,0,0,2,224,127,0,0,0,1,0,0,64,127,0,0,0,7,224,0,0,127,0,0,0,15,254,0,0,127,0,0,0,7,255,224,0,127,0,0,0,0,127,252,0,191,0,0,0,0,7,253,0,191,0,0,0,0,0,248,0,254,0,0,0,0,0,16,0,254,0,0,0,0,0,0,0,253,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,7,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,31,224,0,0,0,0,0,0,63,194,0,0,0,0,0,0,191,143,224,0,0,0,0,2,255,31,254,0,0,0,0,11,252,2,255,224,0,0,0,127,240,0,63,253,0,0,3,255,192,0,7,255,128,0,127,255,0,0,0,191,244,27,255,244,0,0,0,15,254,191,255,128,0,0,0,2,254,63,244,0,0,0,0,0,120,25,0,0,0,0,0,0,0, + // 0x597d 好 + 125,89,34,35,59,36,1,252,0,30,128,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,47,128,3,255,255,255,254,0,0,63,64,3,255,255,255,255,128,0,63,0,3,255,255,255,255,0,0,63,0,0,0,0,3,253,0,0,127,0,0,0,0,7,248,0,0,190,0,0,0,0,15,240,0,127,255,255,240,0,0,63,192,0,127,255,255,240,0,0,255,0,0,127,255,255,240,0,11,252,0,0,1,252,3,240,0,15,240,0,0,2,248,7,240,0,15,208,0,0,3,244,7,224,0,15,208,0,0,3,240,11,224,0,15,208,0,0,3,240,15,223,255,255,255,255,224,7,224,15,223,255,255,255,255,224,11,208,15,207,255,255,255,255,224,15,192,47,192,0,15,208,0,0,15,192,63,128,0,15,208,0,0,31,244,63,64,0,15,208,0,0,47,254,191,0,0,15,208,0,0,63,255,254,0,0,15,208,0,0,11,63,253,0,0,15,208,0,0,0,11,254,0,0,15,208,0,0,0,7,255,128,0,15,208,0,0,0,15,255,224,0,15,208,0,0,0,47,223,248,0,15,208,0,0,0,127,131,248,0,15,208,0,0,1,255,0,240,0,15,208,0,0,11,252,0,0,0,31,208,0,0,63,244,0,0,63,255,192,0,0,31,208,0,0,47,255,192,0,0,10,0,0,0,31,253,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x59cb 始 + 203,89,34,34,50,36,1,253,0,30,128,0,0,57,0,0,0,0,31,192,0,0,127,64,0,0,0,47,128,0,0,191,0,0,0,0,63,64,0,0,254,0,0,0,0,63,0,0,0,253,0,0,0,0,63,0,0,2,252,0,0,0,0,127,0,0,3,248,1,128,0,0,190,0,0,3,244,15,208,0,127,255,255,240,7,240,11,240,0,127,255,255,240,11,224,3,248,0,127,255,255,240,15,192,1,253,0,1,248,3,240,31,192,0,191,0,2,244,7,241,127,235,255,255,128,3,240,7,235,255,255,255,255,192,3,240,11,235,255,255,255,255,224,7,240,15,215,250,165,64,11,240,11,224,15,192,0,0,0,3,128,15,208,31,192,0,0,0,0,0,15,192,47,128,0,0,0,0,0,31,192,63,64,127,255,255,255,0,47,244,63,0,127,255,255,255,0,63,255,191,0,127,255,255,255,0,63,255,254,0,127,0,0,127,0,6,47,252,0,127,0,0,127,0,0,7,255,0,127,0,0,127,0,0,11,255,192,127,0,0,127,0,0,15,255,240,127,0,0,127,0,0,63,203,252,127,0,0,127,0,0,255,66,244,127,0,0,127,0,3,254,0,160,127,255,255,255,0,31,252,0,0,127,255,255,255,0,47,224,0,0,127,255,255,255,0,15,128,0,0,127,0,0,127,0,5,0,0,0,126,0,0,42,0, + // 0x5b50 子 + 80,91,33,33,41,36,2,252,0,85,85,85,85,85,84,0,0,2,255,255,255,255,255,255,64,0,2,255,255,255,255,255,255,192,0,2,255,255,255,255,255,255,64,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,127,240,0,0,0,0,0,0,2,255,128,0,0,0,0,0,0,31,253,0,0,0,0,0,0,6,255,240,0,0,0,0,0,0,11,255,64,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,85,85,85,95,245,85,85,85,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,1,85,95,224,0,0,0,0,0,1,255,255,224,0,0,0,0,0,0,255,255,192,0,0,0,0,0,0,191,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5b58 存 + 88,91,34,34,50,36,1,253,0,0,0,185,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,3,253,0,0,0,0,0,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,0,0,47,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,2,253,11,255,255,255,240,0,0,7,252,11,255,255,255,252,0,0,15,240,11,255,255,255,240,0,0,47,224,0,0,0,63,192,0,0,191,192,0,0,1,255,0,0,2,255,192,0,0,7,252,0,0,11,255,192,0,0,63,224,0,0,63,255,192,0,0,63,128,0,0,191,255,192,0,0,63,64,0,0,63,95,194,255,255,255,255,255,208,44,31,194,255,255,255,255,255,208,0,31,194,255,255,255,255,255,208,0,31,192,0,0,63,64,0,0,0,31,192,0,0,63,64,0,0,0,31,192,0,0,63,64,0,0,0,31,192,0,0,63,64,0,0,0,31,192,0,0,63,64,0,0,0,31,192,0,0,63,64,0,0,0,31,192,0,0,127,64,0,0,0,31,192,1,255,255,0,0,0,0,31,192,0,255,255,0,0,0,0,31,192,0,255,248,0,0,0, + // 0x5b89 安 + 137,91,32,35,24,36,2,252,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,64,0,0,0,0,1,252,63,64,0,16,0,0,1,252,63,64,0,191,0,0,1,252,63,64,0,254,0,0,1,252,63,64,2,252,0,0,1,252,0,0,3,248,0,0,0,0,0,0,11,240,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,255,64,0,31,224,0,0,0,254,0,0,47,192,0,0,3,252,0,0,63,192,0,0,7,248,0,0,127,64,0,0,15,240,0,0,255,0,0,0,31,244,0,2,253,0,0,0,63,255,144,7,252,0,0,0,127,255,254,95,240,0,0,0,191,47,255,255,208,0,0,0,5,1,191,255,208,0,0,0,0,0,31,255,253,0,0,0,0,1,255,255,255,208,0,0,0,127,255,130,255,253,0,5,191,255,248,0,47,255,208,47,255,255,128,0,2,255,240,15,255,228,0,0,0,47,192,7,164,0,0,0,0,7,0,0,0,0,0,0,0,0,0, + // 0x5b8c 完 + 140,91,32,34,16,36,2,253,0,0,0,11,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,64,0,0,0,0,1,252,63,64,0,0,0,0,1,252,63,64,0,0,0,0,1,252,63,64,0,0,0,0,1,252,63,75,255,255,255,255,209,252,0,11,255,255,255,255,208,0,0,11,255,255,255,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,63,128,15,224,0,0,0,0,63,64,11,224,0,0,0,0,127,0,11,224,0,0,0,0,191,0,11,224,0,0,0,0,255,0,11,224,0,0,0,1,253,0,11,224,0,16,0,3,252,0,11,224,0,62,0,15,248,0,11,224,0,63,0,127,240,0,11,224,0,63,6,255,192,0,11,240,0,127,191,255,0,0,11,255,255,254,255,248,0,0,3,255,255,253,127,128,0,0,1,255,255,244,36,0,0,0,0,0,0,0, + // 0x5b9a 定 + 154,91,33,35,59,36,1,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,208,0,0,0,0,0,127,0,15,192,0,0,0,0,0,127,0,15,192,0,0,0,0,0,127,0,15,192,0,0,0,0,0,127,0,15,195,255,255,255,255,252,127,0,5,67,255,255,255,255,252,21,0,0,3,255,255,255,255,252,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,7,224,3,248,0,0,0,0,0,7,240,3,248,0,0,0,0,0,11,240,3,248,0,0,0,0,0,15,224,3,255,255,255,192,0,0,15,208,3,255,255,255,192,0,0,31,224,3,255,255,255,192,0,0,47,240,3,248,0,0,0,0,0,63,244,3,248,0,0,0,0,0,127,252,3,248,0,0,0,0,0,255,255,3,248,0,0,0,0,1,253,63,211,248,0,0,0,0,3,252,31,251,248,0,0,0,0,11,244,7,255,253,0,0,0,0,47,240,1,255,255,255,255,255,192,127,192,0,47,255,255,255,255,128,47,64,0,1,191,255,255,255,64,9,0,0,0,0,5,85,85,0,0,0,0,0,0,0,0,0,0, + // 0x5ba2 客 + 162,91,34,34,50,36,1,253,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,192,0,80,0,0,0,127,0,15,192,0,255,0,0,0,127,0,15,192,3,253,0,0,0,127,0,15,192,15,254,170,170,128,127,0,0,0,63,255,255,255,244,0,0,0,0,255,255,255,255,240,0,0,0,7,255,64,0,47,208,0,0,0,127,255,208,0,191,128,0,0,3,255,223,248,2,255,0,0,0,3,254,3,255,31,248,0,0,0,0,244,0,191,255,224,0,0,0,0,0,0,47,255,128,0,0,0,0,0,0,191,255,244,0,0,0,0,0,27,255,255,255,208,0,0,0,2,255,254,11,255,255,164,0,1,191,255,224,0,191,255,255,208,127,255,253,0,0,6,255,255,128,63,255,255,255,255,255,255,255,0,31,147,255,255,255,255,252,5,0,0,3,255,255,255,255,252,0,0,0,3,244,0,0,1,252,0,0,0,3,244,0,0,1,252,0,0,0,3,244,0,0,1,252,0,0,0,3,244,0,0,1,252,0,0,0,3,255,255,255,255,252,0,0,0,3,255,255,255,255,252,0,0,0,3,255,255,255,255,252,0,0,0,3,244,0,0,1,252,0,0, + // 0x5bab 宫 + 171,91,30,35,24,36,3,252,0,0,0,110,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,254,85,85,85,85,85,91,240,253,0,0,0,0,0,7,240,253,0,0,0,0,0,7,240,253,42,170,170,170,170,135,240,253,63,255,255,255,255,199,240,0,63,255,255,255,255,192,0,0,63,0,0,0,15,192,0,0,63,0,0,0,15,192,0,0,63,0,0,0,15,192,0,0,63,170,170,170,175,192,0,0,63,255,255,255,255,192,0,0,63,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,255,255,255,255,255,254,0,7,255,255,255,255,255,254,0,7,255,255,255,255,255,254,0,7,240,0,0,0,0,190,0,7,240,0,0,0,0,190,0,7,240,0,0,0,0,190,0,7,240,0,0,0,0,190,0,7,240,0,0,0,0,190,0,7,255,255,255,255,255,254,0,7,255,255,255,255,255,254,0,7,255,255,255,255,255,254,0,7,240,0,0,0,0,190,0,0,0,0,0,0,0,0,0, + // 0x5bf9 对 + 249,91,33,34,50,36,2,253,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,127,255,255,248,0,0,63,64,0,127,255,255,248,0,0,63,64,0,127,255,255,244,0,0,63,64,0,0,0,3,244,0,0,63,128,0,0,0,3,242,255,255,255,255,64,0,0,7,242,255,255,255,255,64,0,0,11,242,255,255,255,255,64,1,0,11,224,0,0,63,64,0,15,128,15,208,0,0,63,64,0,47,224,31,192,0,0,63,64,0,15,248,47,192,4,0,63,64,0,3,254,63,128,188,0,63,64,0,0,255,191,64,254,0,63,64,0,0,63,255,0,127,64,63,64,0,0,15,255,0,63,192,63,64,0,0,3,254,0,15,208,63,64,0,0,2,255,64,15,224,63,64,0,0,3,255,192,7,240,63,64,0,0,15,255,240,3,240,63,64,0,0,31,239,248,2,64,63,64,0,0,63,195,252,0,0,63,64,0,0,191,129,255,0,0,63,64,0,1,255,0,190,0,0,63,64,0,7,252,0,52,0,0,63,64,0,31,244,0,0,0,0,63,64,0,127,224,0,0,0,165,191,64,0,255,128,0,0,0,255,255,0,0,62,0,0,0,0,255,254,0,0,20,0,0,0,0,191,228,0,0, + // 0x5c06 将 + 6,92,34,34,50,36,1,253,0,3,240,0,0,0,6,224,0,0,3,240,0,0,22,255,248,0,0,3,240,5,175,255,255,252,0,0,3,242,255,255,255,254,64,0,4,3,241,255,255,233,0,0,0,126,3,240,233,64,16,0,20,0,63,67,240,0,2,244,0,63,64,47,195,240,109,2,248,0,191,64,15,211,240,127,0,252,0,254,0,11,243,240,63,64,253,3,252,0,3,247,240,47,128,190,7,244,0,3,255,240,15,192,126,15,224,0,1,231,240,15,208,100,63,192,0,0,3,240,11,128,0,191,0,0,0,3,240,0,0,0,127,64,0,0,3,240,0,0,0,47,128,0,0,3,240,0,0,0,47,128,0,0,3,242,255,255,255,255,255,224,0,3,242,255,255,255,255,255,224,0,11,242,255,255,255,255,255,224,0,127,240,0,0,0,47,128,0,2,255,240,0,128,0,47,128,0,31,255,240,11,240,0,47,128,0,191,251,240,7,248,0,47,128,0,191,195,240,2,253,0,47,128,0,63,3,240,0,255,0,47,128,0,40,3,240,0,127,128,47,128,0,0,3,240,0,47,192,47,128,0,0,3,240,0,15,64,47,128,0,0,3,240,0,4,0,47,128,0,0,3,240,0,0,0,63,128,0,0,3,240,0,0,191,255,128,0,0,3,240,0,0,127,255,0,0,0,3,240,0,0,63,248,0,0, + // 0x5c0f 小 + 15,92,34,35,59,36,1,252,0,0,0,1,84,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,14,64,2,252,0,46,0,0,0,31,224,2,252,0,255,0,0,0,47,208,2,252,0,127,128,0,0,63,192,2,252,0,63,192,0,0,63,192,2,252,0,31,224,0,0,127,128,2,252,0,15,240,0,0,191,0,2,252,0,7,248,0,0,255,0,2,252,0,3,252,0,1,254,0,2,252,0,2,254,0,2,253,0,2,252,0,0,255,0,3,252,0,2,252,0,0,255,64,11,244,0,2,252,0,0,127,128,15,240,0,2,252,0,0,63,192,47,224,0,2,252,0,0,47,208,127,192,0,2,252,0,0,31,224,127,64,0,2,252,0,0,15,240,6,0,0,2,252,0,0,15,208,0,0,0,2,252,0,0,4,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,21,87,252,0,0,0,0,0,0,63,255,248,0,0,0,0,0,0,47,255,240,0,0,0,0,0,0,31,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5c31 就 + 49,92,34,35,59,36,1,252,0,0,252,0,0,7,224,0,0,0,0,252,0,0,7,224,80,0,0,0,252,0,0,7,227,240,0,0,0,252,0,0,7,226,252,0,0,0,252,0,0,7,224,254,0,63,255,255,255,240,7,224,127,64,63,255,255,255,240,7,224,47,192,63,255,255,255,240,7,224,15,128,0,0,0,0,0,7,224,4,0,0,0,0,0,0,11,240,0,0,3,255,255,255,79,255,255,255,208,7,255,255,255,79,255,255,255,208,7,255,255,255,79,255,255,255,208,7,240,0,47,64,11,224,0,0,7,240,0,47,64,15,228,0,0,7,240,0,47,64,15,254,0,0,7,240,0,47,64,15,254,0,0,7,255,255,255,64,15,254,0,0,7,255,255,255,64,31,254,0,0,7,255,255,255,64,47,254,0,0,0,0,253,0,0,63,254,0,0,0,0,253,4,0,63,190,0,0,3,240,253,63,0,127,126,0,0,7,240,253,63,0,191,126,0,0,11,224,253,47,128,254,126,0,0,15,208,253,15,194,252,126,1,0,15,192,253,15,211,248,126,2,208,47,128,253,7,235,244,126,2,240,63,64,253,2,95,240,126,2,240,191,0,253,0,63,192,126,3,224,44,0,252,0,255,128,127,71,224,0,127,252,3,255,0,63,255,208,0,63,252,2,252,0,63,255,192,0,63,224,0,112,0,15,255,64,0,0,0,0,0,0,0,0,0, + // 0x5c4f 屏 + 79,92,33,33,41,36,1,252,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,253,0,0,0,0,1,252,0,0,253,0,0,0,0,1,252,0,0,253,0,0,0,0,1,252,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,253,0,188,0,0,127,64,0,0,253,0,254,0,0,255,0,0,0,253,0,63,64,1,252,0,0,0,253,0,47,128,3,248,0,0,0,253,127,255,255,255,255,255,0,0,253,191,255,255,255,255,255,0,0,252,191,255,255,255,255,255,0,0,252,0,31,192,3,240,0,0,1,252,0,31,192,3,240,0,0,1,252,0,31,192,3,240,0,0,1,252,0,31,192,3,240,0,0,2,248,0,31,192,3,240,0,0,3,250,255,255,255,255,255,255,192,3,246,255,255,255,255,255,255,192,3,242,255,255,255,255,255,255,192,7,240,0,63,64,3,240,0,0,11,224,0,191,0,3,240,0,0,15,224,1,254,0,3,240,0,0,31,192,7,252,0,3,240,0,0,63,192,47,244,0,3,240,0,0,127,65,255,208,0,3,240,0,0,127,0,255,64,0,3,240,0,0,9,0,56,0,0,3,240,0,0,0,0,0,0,0,0,0,0,0, + // 0x5de5 工 + 229,93,32,28,224,36,2,255,15,255,255,255,255,255,255,244,15,255,255,255,255,255,255,244,15,255,255,255,255,255,255,244,5,85,85,95,245,85,85,80,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,85,85,85,85,85, + // 0x5dee 差 + 238,93,33,34,50,36,1,253,0,0,20,0,0,3,144,0,0,0,1,252,0,0,7,248,0,0,0,0,255,0,0,15,240,0,0,0,0,127,64,0,31,208,0,0,0,0,63,192,0,63,192,0,0,7,255,255,255,255,255,255,253,0,7,255,255,255,255,255,255,253,0,7,255,255,255,255,255,255,253,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,127,255,255,255,255,255,224,0,0,127,255,255,255,255,255,224,0,0,127,255,255,255,255,255,224,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,253,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,3,254,255,255,255,255,224,0,0,3,250,255,255,255,255,240,0,0,11,242,255,255,255,255,240,0,0,15,240,0,15,224,0,0,0,0,47,208,0,15,224,0,0,0,0,63,192,0,15,224,0,0,0,0,255,64,0,15,224,0,0,0,2,254,0,0,15,224,0,0,0,7,252,0,0,15,224,0,0,0,47,244,255,255,255,255,255,255,0,127,224,255,255,255,255,255,255,0,31,128,255,255,255,255,255,255,0,6,0,0,0,0,0,0,0,0, + // 0x5df2 已 + 242,93,31,31,248,36,3,254,191,255,255,255,255,255,248,0,191,255,255,255,255,255,248,0,191,255,255,255,255,255,248,0,21,85,85,85,85,87,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,15,224,0,0,0,3,248,0,15,224,0,0,0,3,248,0,15,224,0,0,0,3,248,0,15,224,0,0,0,3,248,0,15,224,0,0,0,3,248,0,15,229,85,85,85,87,248,0,15,255,255,255,255,255,248,0,15,255,255,255,255,255,248,0,15,255,255,255,255,255,248,0,15,224,0,0,0,3,248,0,15,224,0,0,0,2,248,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,208,15,224,0,0,0,0,1,252,15,224,0,0,0,0,1,252,15,224,0,0,0,0,2,252,15,224,0,0,0,0,3,252,15,240,0,0,0,0,7,248,11,254,85,85,85,85,111,240,3,255,255,255,255,255,255,224,1,255,255,255,255,255,255,192,0,43,255,255,255,255,249,0, + // 0x5e73 平 + 115,94,32,32,0,36,2,253,5,85,85,85,85,85,85,80,15,255,255,255,255,255,255,240,15,255,255,255,255,255,255,240,15,255,255,255,255,255,255,240,0,0,0,15,224,0,0,0,0,4,0,15,224,0,80,0,0,126,0,15,224,0,255,0,0,127,0,15,224,0,254,0,0,63,128,15,224,2,252,0,0,47,192,15,224,3,248,0,0,15,208,15,224,7,244,0,0,11,240,15,224,15,224,0,0,7,240,15,224,31,192,0,0,3,224,15,224,47,128,0,0,1,0,15,224,1,0,0,0,0,0,15,224,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,95,245,85,85,85,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0, + // 0x5e76 并 + 118,94,32,35,24,36,2,252,0,1,192,0,0,3,144,0,0,15,224,0,0,11,248,0,0,11,244,0,0,15,240,0,0,3,252,0,0,47,208,0,0,1,253,0,0,63,192,0,0,0,255,0,0,191,0,0,0,0,127,0,0,253,0,0,0,0,56,0,0,44,0,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,253,0,0,191,0,0,0,2,252,0,0,127,0,0,0,3,248,0,0,127,0,0,0,3,248,0,0,127,0,0,0,11,240,0,0,127,0,0,0,15,224,0,0,127,0,0,0,63,208,0,0,127,0,0,0,191,128,0,0,127,0,0,3,255,0,0,0,127,0,0,31,252,0,0,0,127,0,0,191,244,0,0,0,127,0,0,63,192,0,0,0,127,0,0,30,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0, + // 0x5e8a 床 + 138,94,34,34,50,36,1,253,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,255,0,0,0,0,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,248,0,0,0,0,0,0,0,2,248,0,0,11,240,0,0,0,2,248,0,0,11,240,0,0,0,2,248,0,0,11,240,0,0,0,2,248,0,0,11,240,0,0,0,2,248,0,0,11,240,0,0,0,2,248,191,255,255,255,255,255,192,2,248,191,255,255,255,255,255,192,2,248,191,255,255,255,255,255,192,2,248,0,0,127,253,0,0,0,3,248,0,0,191,255,0,0,0,3,244,0,1,255,255,128,0,0,3,244,0,3,255,255,208,0,0,3,244,0,11,251,251,240,0,0,3,240,0,47,219,243,252,0,0,7,240,0,127,203,241,255,0,0,7,240,1,255,11,240,191,192,0,11,224,7,253,11,240,47,240,0,15,208,31,244,11,240,15,253,0,15,208,191,224,11,240,3,255,128,31,195,255,128,11,240,0,255,224,63,194,253,0,11,240,0,47,128,63,64,180,0,11,240,0,7,0,191,0,0,0,11,240,0,0,0,62,0,0,0,11,240,0,0,0,8,0,0,0,11,224,0,0,0, + // 0x5e94 应 + 148,94,34,35,59,36,1,252,0,0,0,0,189,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,192,0,0,0,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,248,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,2,248,0,0,24,0,0,208,0,2,248,0,0,253,0,1,253,0,2,248,26,0,190,0,2,252,0,2,248,127,0,127,0,3,252,0,2,248,63,64,63,0,3,244,0,2,248,47,128,63,128,7,240,0,2,248,31,192,47,192,15,240,0,2,248,15,208,31,192,15,208,0,3,248,11,240,15,208,47,192,0,3,248,7,240,15,224,63,128,0,3,244,3,244,11,224,127,0,0,3,244,2,248,7,240,191,0,0,3,244,1,252,7,224,253,0,0,3,240,0,253,0,2,252,0,0,7,240,0,248,0,3,244,0,0,11,240,0,64,0,11,240,0,0,15,224,0,0,0,15,208,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,63,64,0,0,47,199,255,255,255,255,255,255,208,63,135,255,255,255,255,255,255,208,127,71,255,255,255,255,255,255,208,63,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5e9f 废 + 159,94,33,35,59,36,1,252,0,0,0,0,109,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,127,192,0,0,0,3,255,255,255,255,255,255,255,192,3,255,255,255,255,255,255,255,192,3,255,255,255,255,255,255,255,192,3,248,0,0,4,0,0,0,0,3,248,3,160,15,192,20,0,0,3,248,7,240,31,192,253,0,0,3,248,11,240,47,192,191,64,0,3,248,15,224,63,128,47,192,0,3,248,31,192,63,64,15,240,0,3,248,63,192,127,0,3,128,0,3,248,191,255,255,255,255,255,64,3,244,127,255,255,255,255,255,64,3,244,63,255,255,255,255,255,64,3,244,16,2,252,0,0,0,0,3,244,0,3,244,0,0,0,0,3,244,0,11,240,0,0,0,0,3,244,0,15,255,255,255,128,0,3,240,0,47,255,255,255,224,0,7,240,0,127,255,255,255,192,0,7,240,0,255,208,0,127,64,0,11,240,3,255,244,1,255,0,0,11,224,15,251,253,7,252,0,0,15,208,63,224,191,159,240,0,0,15,209,255,128,47,255,192,0,0,31,203,255,0,15,255,128,0,0,47,207,248,0,191,255,248,0,0,63,131,208,27,255,239,255,228,0,127,1,3,255,253,2,255,255,192,127,0,3,255,208,0,31,255,0,9,0,0,248,0,0,0,109,0,0,0,0,0,0,0,0,0,0, + // 0x5ea6 度 + 166,94,33,35,59,36,1,252,0,0,0,0,190,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,248,0,0,0,0,0,0,0,2,248,0,63,0,0,252,0,0,2,248,0,63,0,0,252,0,0,2,249,170,255,234,171,255,170,64,2,249,255,255,255,255,255,255,128,2,249,255,255,255,255,255,255,128,2,248,0,63,0,0,252,0,0,2,248,0,63,0,0,252,0,0,2,248,0,63,0,0,252,0,0,2,244,0,63,170,170,252,0,0,2,244,0,63,255,255,252,0,0,3,244,0,63,255,255,252,0,0,3,244,0,0,0,0,0,0,0,3,240,0,0,0,0,0,0,0,3,240,255,255,255,255,255,224,0,3,240,255,255,255,255,255,240,0,3,240,170,191,170,170,191,224,0,7,240,0,255,0,0,127,192,0,11,224,0,63,192,1,255,0,0,15,208,0,31,244,11,252,0,0,15,192,0,7,255,127,240,0,0,31,192,0,0,255,255,128,0,0,63,128,0,6,255,255,144,0,0,63,64,22,255,255,255,255,148,0,191,3,255,255,248,31,255,255,192,126,2,255,254,0,0,191,255,128,8,1,249,0,0,0,1,111,0,0,0,0,0,0,0,0,0,0, + // 0x5f00 开 + 0,95,32,33,8,36,2,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,0,0,255,0,0,63,128,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,255,0,0,127,128,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,253,0,0,63,64,0,0,1,252,0,0,63,64,0,0,1,252,0,0,63,64,0,0,2,252,0,0,63,64,0,0,3,248,0,0,63,64,0,0,11,244,0,0,63,64,0,0,15,240,0,0,63,64,0,0,47,224,0,0,63,64,0,0,127,192,0,0,63,64,0,0,255,64,0,0,63,64,0,7,254,0,0,0,63,64,0,31,252,0,0,0,63,64,0,191,240,0,0,0,63,64,0,63,192,0,0,0,63,64,0,14,0,0,0,0,63,64,0,0,0,0,0,0,0,0,0, + // 0x5f03 弃 + 3,95,33,35,59,36,1,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,3,252,0,0,0,0,0,0,0,7,248,0,11,64,0,0,0,0,15,240,0,63,240,0,0,0,0,47,208,0,11,253,0,0,0,0,63,128,0,1,255,128,0,15,255,255,239,255,255,255,224,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,255,0,1,85,85,64,0,0,0,191,64,0,0,63,64,0,31,192,44,0,0,0,63,64,0,31,192,0,0,0,0,63,64,0,31,192,0,0,0,0,63,64,0,31,192,0,0,0,0,63,64,0,31,192,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,191,0,0,31,192,0,0,0,0,254,0,0,31,192,0,0,0,2,253,0,0,31,192,0,0,0,7,252,0,0,31,192,0,0,0,31,244,0,0,31,192,0,0,0,191,208,0,0,31,192,0,0,7,255,128,0,0,31,192,0,0,127,253,0,0,0,31,192,0,0,47,224,0,0,0,31,192,0,0,14,0,0,0,0,31,192,0,0,0,0,0,0,0,0,0,0,0, + // 0x5f0f 式 + 15,95,33,34,50,36,2,253,0,0,0,0,15,208,32,0,0,0,0,0,0,15,224,189,0,0,0,0,0,0,15,224,255,128,0,0,0,0,0,15,224,63,224,0,0,0,0,0,15,224,11,244,0,0,0,0,0,15,224,2,224,0,21,85,85,85,95,229,85,149,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,244,0,0,0,47,255,255,255,195,244,0,0,0,47,255,255,255,195,248,0,0,0,47,255,255,255,195,248,0,0,0,0,2,252,0,2,252,0,0,0,0,2,248,0,2,252,0,0,0,0,2,248,0,1,252,0,0,0,0,2,248,0,0,253,0,0,0,0,2,248,0,0,254,0,0,0,0,2,248,0,0,255,0,0,0,0,2,248,0,0,127,0,8,0,0,2,248,0,0,63,128,31,64,0,2,248,5,176,63,192,31,128,0,2,254,255,240,31,208,47,128,0,91,255,255,240,15,240,47,64,111,255,255,254,80,11,248,63,0,191,255,254,64,0,3,255,191,0,63,254,64,0,0,1,255,254,0,57,0,0,0,0,0,127,252,0,0,0,0,0,0,0,11,224,0, + // 0x5f15 引 + 21,95,29,35,24,36,2,252,0,0,0,0,0,0,5,0,0,0,0,0,0,0,63,128,31,255,255,255,0,0,63,128,31,255,255,255,0,0,63,128,31,255,255,255,0,0,63,128,0,0,0,63,0,0,63,128,0,0,0,63,0,0,63,128,0,0,0,63,0,0,63,128,0,0,0,63,0,0,63,128,0,0,0,63,0,0,63,128,7,255,255,255,0,0,63,128,11,255,255,255,0,0,63,128,11,255,255,255,0,0,63,128,15,208,0,0,0,0,63,128,15,208,0,0,0,0,63,128,15,192,0,0,0,0,63,128,31,192,0,0,0,0,63,128,47,192,0,0,0,0,63,128,47,255,255,255,64,0,63,128,63,255,255,255,64,0,63,128,63,255,255,255,0,0,63,128,127,0,0,127,0,0,63,128,26,0,0,127,0,0,63,128,0,0,0,127,0,0,63,128,0,0,0,191,0,0,63,128,0,0,0,190,0,0,63,128,0,0,0,254,0,0,63,128,0,0,0,253,0,0,63,128,0,0,1,253,0,0,63,128,0,0,2,252,0,0,63,128,0,149,91,252,0,0,63,128,0,191,255,244,0,0,63,128,0,127,255,240,0,0,63,128,0,63,254,64,0,0,63,128,0,0,0,0,0,0,0,0, + // 0x5f39 弹 + 57,95,33,35,59,36,2,252,0,0,0,0,64,0,10,64,0,0,0,0,7,224,0,15,224,0,255,255,244,7,244,0,47,192,0,255,255,244,2,252,0,63,128,0,255,255,244,0,253,0,127,0,0,0,2,244,0,191,0,253,0,0,0,2,244,0,61,1,252,0,0,0,2,244,0,0,3,244,0,0,0,2,244,63,255,255,255,252,0,0,3,244,63,255,255,255,252,0,63,255,244,63,170,255,170,252,0,127,255,244,63,0,254,0,252,0,127,255,244,63,0,254,0,252,0,126,0,0,63,170,255,170,252,0,126,0,0,63,255,255,255,252,0,125,0,0,63,255,255,255,252,0,125,0,0,63,0,254,0,252,0,125,0,0,63,0,254,0,252,0,127,255,244,63,0,254,0,252,0,191,255,244,63,255,255,255,252,0,191,255,244,63,255,255,255,252,0,0,3,244,42,170,255,170,168,0,0,3,240,0,0,254,0,0,0,0,3,240,0,0,254,0,0,0,0,3,247,255,255,255,255,255,64,0,3,243,255,255,255,255,255,64,0,3,243,255,255,255,255,255,64,0,7,240,0,0,254,0,0,0,0,7,224,0,0,254,0,0,0,0,11,224,0,0,254,0,0,0,0,31,208,0,0,254,0,0,0,63,255,192,0,0,254,0,0,0,47,255,128,0,0,254,0,0,0,31,254,0,0,0,253,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5f52 归 + 82,95,30,35,24,36,3,252,0,2,244,0,0,0,0,0,0,3,244,0,0,0,0,0,0,3,244,0,0,0,0,0,0,3,244,63,255,255,255,240,168,3,244,63,255,255,255,240,253,3,244,63,255,255,255,240,253,3,244,0,0,0,11,240,253,3,244,0,0,0,11,240,253,3,244,0,0,0,11,240,253,3,244,0,0,0,11,240,253,3,244,0,0,0,11,240,253,3,244,0,0,0,11,240,253,3,244,0,0,0,11,240,253,3,244,0,0,0,11,240,253,3,244,0,0,0,11,240,253,3,244,15,255,255,255,240,253,3,244,15,255,255,255,240,253,3,244,15,255,255,255,240,253,3,244,5,85,85,91,240,253,3,244,0,0,0,11,240,253,3,240,0,0,0,11,240,253,7,240,0,0,0,11,240,169,11,240,0,0,0,11,240,0,15,240,0,0,0,11,240,0,15,224,0,0,0,11,240,0,31,208,0,0,0,11,240,0,63,192,0,0,0,11,240,0,127,128,21,85,85,91,240,0,255,0,191,255,255,255,240,3,254,0,191,255,255,255,240,11,252,0,191,255,255,255,240,47,240,0,0,0,0,11,240,31,208,0,0,0,0,11,240,3,64,0,0,0,0,6,160,0,0,0,0,0,0,0,0, + // 0x5f84 径 + 132,95,34,34,50,36,1,253,0,0,144,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,11,244,63,255,255,255,253,0,0,47,224,63,255,255,255,253,0,0,191,192,63,255,255,255,252,0,3,255,0,2,244,0,3,248,0,15,252,0,2,252,0,15,240,0,127,240,16,0,254,0,47,208,0,63,128,126,0,127,128,127,128,0,45,0,255,0,47,225,255,0,0,0,2,252,0,11,251,252,0,0,0,11,244,0,3,255,240,0,0,0,31,224,0,1,255,224,0,0,0,127,192,0,31,255,254,0,0,1,255,192,1,255,251,255,224,0,7,255,192,111,255,64,191,255,144,47,255,195,255,248,0,11,255,224,255,255,193,255,64,21,0,191,192,191,95,192,160,0,63,0,2,0,61,31,192,0,0,63,0,0,0,20,31,192,0,0,63,0,0,0,0,31,192,0,0,63,0,0,0,0,31,192,63,255,255,255,254,0,0,31,192,63,255,255,255,254,0,0,31,192,63,255,255,255,254,0,0,31,192,0,0,63,0,0,0,0,31,192,0,0,63,0,0,0,0,31,192,0,0,63,0,0,0,0,31,192,0,0,63,0,0,0,0,31,192,0,0,63,0,0,0,0,31,195,255,255,255,255,255,208,0,31,195,255,255,255,255,255,208,0,31,195,255,255,255,255,255,208,0,31,192,0,0,0,0,0,0, + // 0x5f85 待 + 133,95,34,34,50,36,1,253,0,1,128,0,0,106,0,0,0,0,3,248,0,0,127,0,0,0,0,11,244,0,0,127,0,0,0,0,47,224,0,0,127,0,0,0,0,127,192,0,0,191,0,0,0,2,255,0,63,255,255,255,255,0,11,252,0,63,255,255,255,255,0,63,240,0,63,255,255,255,255,0,63,192,0,0,0,127,0,0,0,30,0,252,0,0,127,0,0,0,4,2,252,0,0,127,0,0,0,0,7,244,0,0,191,0,0,0,0,15,243,255,255,255,255,255,224,0,63,195,255,255,255,255,255,224,0,255,131,255,255,255,255,255,224,3,255,128,0,0,0,47,192,0,31,255,128,0,0,0,47,192,0,191,255,128,0,0,0,47,192,0,127,95,131,255,255,255,255,255,208,61,31,131,255,255,255,255,255,208,16,31,131,255,255,255,255,255,208,0,31,128,0,0,0,47,192,0,0,31,128,2,192,0,47,192,0,0,31,128,15,224,0,47,192,0,0,31,128,11,244,0,47,192,0,0,31,128,3,252,0,47,192,0,0,31,128,1,254,0,47,192,0,0,31,128,0,191,0,47,192,0,0,31,128,0,63,64,47,192,0,0,31,128,0,44,0,47,192,0,0,31,128,0,0,0,47,128,0,0,31,128,0,0,127,255,128,0,0,31,128,0,0,63,255,64,0,0,31,128,0,0,63,248,0,0, + // 0x5faa 循 + 170,95,34,34,50,36,1,253,0,3,144,0,0,0,0,80,0,0,11,240,0,0,0,111,248,0,0,31,208,80,22,255,255,254,0,0,127,128,255,255,255,255,144,0,1,255,0,255,255,255,240,0,0,7,252,0,254,64,7,240,0,0,47,240,0,253,0,7,240,0,0,191,128,64,253,0,7,240,0,0,62,1,252,255,255,255,255,255,208,4,3,248,255,255,255,255,255,208,0,11,240,255,255,255,255,255,208,0,31,208,253,0,7,224,0,0,0,63,192,253,0,11,224,0,0,0,255,64,253,0,11,208,0,0,2,255,64,253,0,11,208,0,0,11,255,64,253,63,255,255,255,0,47,255,64,252,63,255,255,255,0,255,255,64,252,63,170,170,255,0,191,63,64,252,63,0,0,63,0,60,63,64,252,63,0,0,63,0,0,63,64,252,63,255,255,255,0,0,63,64,252,63,255,255,255,0,0,63,65,252,63,85,85,127,0,0,63,65,248,63,0,0,63,0,0,63,66,248,63,0,0,63,0,0,63,67,244,63,255,255,255,0,0,63,67,240,63,255,255,255,0,0,63,71,240,63,85,85,127,0,0,63,75,224,63,0,0,63,0,0,63,79,208,63,0,0,63,0,0,63,95,192,63,255,255,255,0,0,63,111,128,63,255,255,255,0,0,63,71,0,63,85,85,127,0,0,47,65,0,63,0,0,42,0, + // 0x5fae 微 + 174,95,34,34,50,36,1,253,0,29,0,15,64,0,184,0,0,0,63,192,15,64,0,252,0,0,0,191,0,15,64,0,252,0,0,1,254,31,15,67,193,252,0,0,7,248,31,15,67,193,248,0,0,15,240,31,15,67,194,244,0,0,63,192,31,15,67,195,244,0,0,191,0,31,15,67,195,255,255,208,61,15,239,15,67,199,255,255,224,16,31,239,15,67,203,255,255,224,0,63,159,255,255,223,208,63,0,0,127,31,255,255,239,208,63,0,0,254,31,255,255,255,224,62,0,3,253,0,0,0,127,224,126,0,11,253,0,0,0,255,240,125,0,31,253,0,0,0,253,240,188,0,63,253,63,255,255,244,240,252,0,255,253,63,255,255,224,244,252,0,189,253,63,255,255,208,249,248,0,56,253,2,240,125,0,190,244,0,16,253,2,240,125,0,127,240,0,0,253,3,240,125,0,63,240,0,0,253,3,240,125,0,63,224,0,0,253,3,240,125,0,47,192,0,0,253,3,224,125,0,31,192,0,0,253,7,224,126,184,63,208,0,0,253,11,208,191,248,191,240,0,0,253,15,194,255,245,255,244,0,0,253,31,129,254,3,249,252,0,0,253,63,64,144,15,240,255,0,0,253,255,0,0,127,192,63,208,0,253,60,0,0,255,0,31,240,0,253,20,0,0,188,0,7,192,0,189,0,0,0,32,0,1,64, + // 0x5fc3 心 + 195,95,34,34,50,36,1,253,0,0,0,144,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,11,255,224,0,0,0,0,0,0,1,255,254,0,0,0,0,0,0,0,11,255,224,0,0,0,0,0,0,0,191,253,0,0,0,0,0,0,0,31,255,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,31,0,0,1,228,15,208,0,0,127,128,0,1,252,15,208,0,0,47,208,0,2,252,15,208,0,0,15,240,0,2,248,15,208,0,0,7,248,0,3,248,15,208,0,0,3,252,0,3,244,15,208,0,0,1,254,0,7,240,15,208,0,0,0,255,0,11,240,15,208,0,0,0,127,128,15,224,15,208,0,0,0,63,192,31,208,15,208,0,0,0,47,208,47,192,15,208,0,0,208,15,224,127,128,15,208,0,0,252,15,240,255,0,15,208,0,0,252,11,208,126,0,15,208,0,1,252,1,0,4,0,15,208,0,1,252,0,0,0,0,15,208,0,2,248,0,0,0,0,15,240,0,7,244,0,0,0,0,15,255,255,255,240,0,0,0,0,7,255,255,255,224,0,0,0,0,1,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x5ffd 忽 + 253,95,34,34,50,36,1,253,0,0,45,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,3,255,255,255,255,255,248,0,0,11,255,255,255,255,255,244,0,0,47,255,255,255,255,255,244,0,0,191,192,127,64,254,3,244,0,2,255,0,254,1,252,3,244,0,11,252,2,252,3,248,3,240,0,63,240,7,244,7,240,3,240,0,31,192,31,224,15,224,7,240,0,3,0,127,192,47,192,7,240,0,0,1,255,0,127,64,7,240,0,0,11,252,0,255,0,11,240,0,0,63,240,3,252,0,15,224,0,2,255,192,15,244,0,15,208,0,3,254,0,63,208,0,47,192,0,0,244,2,255,64,127,255,192,0,0,0,15,253,0,63,255,64,0,0,0,11,244,0,47,249,0,0,0,0,2,199,208,0,0,0,0,0,0,0,15,252,0,0,0,0,0,16,5,71,255,64,14,0,0,0,63,15,192,191,208,127,128,0,0,127,15,192,31,192,63,224,0,0,254,15,192,7,0,15,244,0,1,252,15,192,0,3,67,252,0,3,252,15,192,0,3,241,255,0,11,244,15,192,0,3,240,191,128,47,224,15,208,0,11,240,63,192,127,192,15,255,255,255,224,31,208,15,0,7,255,255,255,192,14,0,0,0,1,255,255,254,0,0,0, + // 0x6027 性 + 39,96,33,35,59,36,1,252,0,63,64,0,0,47,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,3,244,63,64,0,0,0,63,64,3,240,63,64,0,0,0,63,64,7,240,63,64,0,0,0,63,64,11,240,63,64,0,0,0,63,88,11,224,63,64,0,0,10,63,252,15,224,63,128,0,0,31,63,190,31,255,255,255,255,0,47,63,127,47,255,255,255,255,0,47,63,95,127,255,255,255,255,0,63,63,79,255,64,63,64,0,0,62,63,79,255,0,63,64,0,0,61,63,64,254,0,63,64,0,0,125,63,66,252,0,63,64,0,0,188,63,64,120,0,63,64,0,0,188,63,64,0,0,63,64,0,0,0,63,64,0,0,63,128,0,0,0,63,64,15,255,255,255,253,0,0,63,64,15,255,255,255,253,0,0,63,64,15,255,255,255,253,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,128,0,0,0,63,67,255,255,255,255,255,192,0,63,67,255,255,255,255,255,192,0,63,67,255,255,255,255,255,192,0,63,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x603b 总 + 59,96,33,34,50,36,2,253,0,0,96,0,0,13,0,0,0,0,2,252,0,0,47,208,0,0,0,0,254,0,0,63,192,0,0,0,0,191,64,0,191,64,0,0,0,0,63,192,0,254,0,0,0,0,0,31,208,2,252,0,0,0,0,0,15,128,3,248,0,0,0,0,127,255,255,255,255,254,0,0,0,127,255,255,255,255,254,0,0,0,127,255,255,255,255,254,0,0,0,127,0,0,0,0,254,0,0,0,127,0,0,0,0,254,0,0,0,127,0,0,0,0,254,0,0,0,127,0,0,0,0,254,0,0,0,127,0,0,0,0,254,0,0,0,127,0,0,0,0,254,0,0,0,127,255,255,255,255,254,0,0,0,127,255,255,255,255,254,0,0,0,127,255,255,255,255,254,0,0,0,0,0,7,0,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,47,240,0,0,0,0,1,0,169,11,252,0,7,0,0,11,240,254,1,255,0,47,128,0,15,224,254,0,127,192,31,208,0,15,208,254,0,47,192,11,240,0,31,192,254,0,11,0,3,252,0,47,192,254,0,0,1,1,253,0,63,64,254,0,0,3,224,191,0,191,0,254,0,0,3,244,63,64,254,0,255,0,0,7,240,47,0,124,0,255,255,255,255,240,20,0,4,0,127,255,255,255,208,0,0,0,0,27,255,255,255,64,0,0, + // 0x6062 恢 + 98,96,34,35,59,36,1,252,0,63,0,31,64,0,0,0,0,0,63,0,31,64,0,0,0,0,0,63,0,31,64,0,0,0,0,0,63,0,47,64,0,0,0,0,0,63,3,255,255,255,255,255,208,0,63,3,255,255,255,255,255,208,0,63,103,255,255,255,255,255,208,10,63,248,31,64,0,0,0,0,31,63,188,31,64,3,240,0,0,31,63,61,31,64,3,240,0,0,31,63,46,31,64,3,240,0,0,46,63,31,47,64,3,240,0,0,46,63,15,47,73,3,240,11,128,61,63,14,47,79,131,240,15,192,60,63,0,47,79,67,240,31,128,188,63,0,47,79,3,240,47,0,248,63,0,47,95,3,240,63,0,16,63,0,47,47,3,240,125,0,0,63,0,63,62,3,240,188,0,0,63,0,63,61,3,244,248,0,0,63,0,63,124,7,244,96,0,0,63,0,63,4,11,248,0,0,0,63,0,126,0,15,252,0,0,0,63,0,190,0,31,189,0,0,0,63,0,253,0,63,63,0,0,0,63,0,252,0,127,47,64,0,0,63,1,252,0,253,15,192,0,0,63,2,248,2,252,15,224,0,0,63,3,240,11,240,7,248,0,0,63,11,240,47,224,2,254,0,0,63,15,209,255,128,0,255,192,0,63,47,195,254,0,0,63,224,0,63,15,66,248,0,0,15,192,0,63,2,0,208,0,0,2,64,0,0,0,0,0,0,0,0,0, + // 0x606f 息 + 111,96,33,34,50,36,2,253,0,0,0,15,240,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,31,192,0,0,0,0,0,63,255,255,255,255,253,0,0,0,63,255,255,255,255,253,0,0,0,63,170,170,170,170,253,0,0,0,63,64,0,0,0,253,0,0,0,63,64,0,0,0,253,0,0,0,63,255,255,255,255,253,0,0,0,63,255,255,255,255,253,0,0,0,63,149,85,85,85,253,0,0,0,63,64,0,0,0,253,0,0,0,63,64,0,0,0,253,0,0,0,63,255,255,255,255,253,0,0,0,63,255,255,255,255,253,0,0,0,63,149,85,85,85,253,0,0,0,63,64,0,0,0,253,0,0,0,63,64,0,0,0,253,0,0,0,63,170,170,170,170,253,0,0,0,63,255,255,255,255,253,0,0,0,63,255,255,255,255,253,0,0,0,0,0,9,0,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,224,0,8,0,0,3,224,127,11,248,0,190,0,0,3,240,127,2,254,0,191,128,0,11,240,127,0,255,0,63,224,0,15,208,127,0,56,0,15,244,0,47,192,127,0,0,30,3,252,0,127,128,127,0,0,31,128,255,0,255,0,127,0,0,63,128,191,64,253,0,63,255,255,255,64,63,64,36,0,47,255,255,255,0,24,0,0,0,11,255,255,248,0,0,0, + // 0x611f 感 + 31,97,34,33,41,36,1,254,0,0,0,0,11,224,189,0,0,0,0,0,0,7,225,255,208,0,0,0,0,0,7,240,31,224,0,1,170,170,170,175,250,171,234,64,1,255,255,255,255,255,255,255,128,1,255,255,255,255,255,255,255,128,1,248,0,0,3,244,0,0,0,1,248,0,0,2,248,1,0,0,1,248,0,0,1,252,11,224,0,1,249,255,255,244,252,15,208,0,2,249,255,255,244,253,31,192,0,2,244,0,0,0,190,63,128,0,2,244,0,0,0,127,127,0,0,3,244,255,255,240,63,254,0,0,3,240,255,255,240,47,252,0,0,3,240,253,87,240,15,244,1,0,7,240,252,3,240,15,240,3,128,11,224,252,3,240,63,244,3,224,15,192,253,87,240,255,252,7,208,31,192,255,255,247,254,255,75,192,63,128,255,255,255,248,127,255,192,191,0,0,5,7,224,31,255,64,61,0,0,47,129,64,2,253,0,8,0,5,111,244,0,1,0,0,0,36,31,199,254,0,47,128,0,0,127,31,192,255,64,47,224,0,0,254,31,192,46,0,11,248,0,1,252,31,192,4,7,147,253,0,3,248,31,192,0,7,224,255,0,15,240,31,192,0,15,224,63,192,63,208,15,255,255,255,192,31,208,47,128,11,255,255,255,192,15,64,5,0,1,255,255,254,0,0,0, + // 0x620f 戏 + 15,98,34,35,59,36,1,252,0,0,0,0,7,224,8,0,0,0,0,0,0,11,240,63,0,0,0,0,0,0,11,240,127,192,0,0,0,0,0,7,240,31,240,0,63,255,255,224,7,240,7,252,0,63,255,255,244,7,240,1,252,0,63,255,255,240,7,240,0,96,0,0,0,3,240,3,240,0,0,0,0,0,7,240,3,244,1,107,128,6,0,11,224,7,255,255,255,192,31,128,15,215,255,255,255,255,192,47,208,15,215,255,255,255,233,64,15,240,31,199,255,253,64,0,0,3,248,47,193,67,248,0,96,0,1,253,63,64,2,252,0,189,0,0,191,127,0,2,252,0,253,0,0,63,255,0,1,252,2,252,0,0,31,254,0,1,253,3,244,0,0,11,252,0,0,253,11,240,0,0,3,252,0,0,254,31,208,0,0,7,254,0,0,255,63,192,0,0,15,255,0,0,191,191,0,0,0,47,255,192,0,127,253,0,0,0,127,223,224,0,63,248,0,0,0,255,15,240,0,63,240,5,0,3,254,7,248,0,63,208,11,128,11,252,2,248,1,255,224,11,208,47,240,0,224,7,255,240,15,192,191,208,0,64,47,255,252,15,192,63,64,0,1,255,227,255,111,192,13,0,0,11,255,65,255,255,128,0,0,0,2,252,0,127,255,0,0,0,0,0,160,0,31,254,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,0,0,0, + // 0x6210 成 + 16,98,34,35,59,36,1,252,0,0,0,0,15,224,96,0,0,0,0,0,0,15,225,254,0,0,0,0,0,0,15,225,255,192,0,0,0,0,0,15,224,47,244,0,0,0,0,0,15,224,7,252,0,0,0,0,0,15,224,0,240,0,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,253,85,85,91,245,85,85,64,2,252,0,0,7,240,0,0,0,2,252,0,0,7,240,0,0,0,2,252,0,0,3,240,1,228,0,2,252,0,0,3,244,3,252,0,2,255,255,255,3,244,3,244,0,2,255,255,255,3,248,11,240,0,2,255,255,255,2,248,15,224,0,2,252,0,127,2,252,31,192,0,2,252,0,127,1,252,63,192,0,2,252,0,127,0,253,127,64,0,2,252,0,127,0,254,255,0,0,2,252,0,127,0,255,253,0,0,3,248,0,190,0,191,248,0,0,3,248,0,190,0,127,240,0,0,3,244,0,190,0,63,208,5,0,7,244,0,253,0,191,192,11,128,11,241,255,253,1,255,208,11,208,11,240,255,252,11,255,240,11,208,15,224,191,224,63,255,248,15,192,47,208,0,2,255,211,254,31,192,63,192,0,31,255,1,255,255,128,127,64,0,15,248,0,127,255,0,47,0,0,3,208,0,15,253,0,9,0,0,1,0,0,0,80,0,0,0,0,0,0,0,0,0,0, + // 0x6237 户 + 55,98,30,35,24,36,1,252,0,0,0,1,240,0,0,0,0,0,0,3,248,0,0,0,0,0,0,2,252,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,63,255,255,255,255,255,224,0,63,255,255,255,255,255,224,0,63,255,255,255,255,255,224,0,63,64,0,0,0,15,224,0,63,64,0,0,0,15,224,0,63,64,0,0,0,15,224,0,63,64,0,0,0,15,224,0,63,64,0,0,0,15,224,0,63,64,0,0,0,15,224,0,63,64,0,0,0,15,224,0,63,255,255,255,255,255,224,0,63,255,255,255,255,255,224,0,127,255,255,255,255,255,224,0,127,0,0,0,0,15,224,0,191,0,0,0,0,15,224,0,191,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,1,253,0,0,0,0,0,0,2,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,248,0,0,0,0,0,0,11,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,47,208,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,64,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6240 所 + 64,98,34,34,50,36,1,253,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,189,0,47,255,255,255,192,0,31,255,128,47,255,255,255,196,7,255,255,64,47,255,255,255,207,255,255,224,0,0,0,0,0,15,255,249,0,0,0,0,0,0,15,253,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,11,255,255,255,15,208,0,0,0,11,255,255,255,15,208,0,0,0,11,255,255,255,15,208,0,0,0,11,224,0,127,15,224,0,0,0,11,224,0,127,15,255,255,255,224,11,224,0,127,15,255,255,255,224,11,224,0,127,15,255,255,255,224,11,224,0,127,15,208,7,240,0,11,255,255,255,15,208,7,240,0,11,255,255,255,15,192,7,240,0,11,255,255,255,15,192,7,240,0,11,224,0,0,31,192,7,240,0,11,224,0,0,47,192,7,240,0,11,208,0,0,47,128,7,240,0,15,208,0,0,63,64,7,240,0,15,208,0,0,127,0,7,240,0,15,192,0,0,191,0,7,240,0,31,192,0,0,253,0,7,240,0,31,192,0,2,252,0,7,240,0,47,128,0,3,248,0,7,240,0,63,64,0,11,240,0,7,240,0,191,0,0,47,224,0,7,240,0,254,0,0,63,192,0,7,240,0,124,0,0,15,64,0,7,240,0,8,0,0,1,0,0,7,240,0, + // 0x6247 扇 + 71,98,32,32,0,36,1,253,31,255,255,255,255,255,255,255,31,255,255,255,255,255,255,255,15,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,240,0,255,255,255,255,255,255,240,0,255,170,170,170,170,171,240,0,253,0,0,0,0,3,240,0,253,0,0,0,0,3,240,0,255,170,170,170,170,171,240,0,255,255,255,255,255,255,240,0,255,255,255,255,255,255,240,0,253,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,253,255,255,241,255,255,252,0,253,255,255,241,255,255,252,0,252,170,171,240,170,170,252,1,252,24,3,240,44,1,252,1,252,127,3,240,191,1,252,2,252,47,131,240,47,193,252,2,248,15,211,240,15,209,252,3,244,7,131,240,3,65,252,7,240,0,3,240,0,21,252,11,240,1,243,240,2,253,252,15,224,111,247,240,111,253,252,31,215,255,211,243,255,209,252,47,195,253,3,242,253,1,252,127,67,144,3,241,128,1,252,255,0,1,171,240,0,171,248,45,0,0,255,224,0,191,244,4,0,0,255,128,0,63,208, + // 0x624b 手 + 75,98,32,35,24,36,2,252,0,0,0,0,0,0,104,0,0,0,0,0,22,191,254,0,0,5,90,191,255,255,255,64,11,255,255,255,255,255,228,0,7,255,255,255,254,80,0,0,3,255,169,95,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,15,240,0,0,0,11,255,255,255,255,255,255,240,11,255,255,255,255,255,255,240,11,255,255,255,255,255,255,240,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,95,245,85,85,85,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,1,64,31,224,0,0,0,0,3,255,255,224,0,0,0,0,2,255,255,192,0,0,0,0,0,255,249,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6253 打 + 83,98,34,34,50,36,1,253,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,15,255,255,255,255,224,0,15,192,15,255,255,255,255,224,0,15,192,15,255,255,255,255,224,0,15,192,5,85,85,254,85,64,63,255,255,240,0,0,253,0,0,63,255,255,240,0,0,253,0,0,63,255,255,240,0,0,253,0,0,0,31,208,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,214,240,0,0,253,0,0,0,31,255,240,0,0,253,0,0,6,255,255,240,0,0,253,0,0,127,255,254,64,0,0,253,0,0,63,255,208,0,0,0,253,0,0,63,175,192,0,0,0,253,0,0,20,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,1,253,0,0,0,31,192,0,47,255,253,0,0,15,255,192,0,31,255,252,0,0,15,255,128,0,15,255,240,0,0,7,249,0,0,6,165,0,0,0, + // 0x6267 执 + 103,98,34,35,59,36,1,252,0,63,0,0,31,192,0,0,0,0,63,0,0,31,192,0,0,0,0,63,0,0,31,192,0,0,0,0,63,0,0,31,192,0,0,0,0,63,0,0,31,192,0,0,0,0,63,0,0,31,192,0,0,0,0,63,0,0,31,192,0,0,0,0,63,0,0,31,192,0,0,0,63,255,254,191,255,255,255,192,0,63,255,254,191,255,255,255,128,0,63,255,254,191,255,255,255,128,0,0,63,0,0,47,128,47,128,0,0,63,0,0,47,128,47,128,0,0,63,0,0,47,128,47,128,0,0,63,0,0,63,64,47,128,0,0,63,0,4,63,64,47,128,0,0,63,91,63,127,64,47,128,0,0,63,255,191,255,0,47,128,0,1,191,255,31,255,0,47,128,0,127,255,249,2,255,208,47,128,0,127,255,64,0,191,248,47,64,0,63,191,0,0,255,255,111,64,0,36,63,0,0,253,255,255,64,0,0,63,0,2,252,47,175,128,0,0,63,0,3,244,7,47,128,0,0,63,0,11,240,0,47,128,0,0,63,0,15,224,0,31,130,0,0,63,0,63,192,0,31,131,208,0,63,0,191,128,0,15,195,224,0,63,2,255,0,0,15,199,208,0,127,11,252,0,0,15,235,208,47,255,47,244,0,0,7,255,192,15,254,15,208,0,0,3,255,128,15,228,3,64,0,0,0,190,0,0,0,0,0,0,0,0,0,0, + // 0x6279 批 + 121,98,34,34,50,36,1,253,0,63,0,42,0,2,160,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,127,255,253,63,64,7,240,0,0,127,255,253,63,64,7,240,4,0,127,255,253,63,64,7,240,31,0,0,127,0,63,64,7,240,127,128,0,63,0,63,64,7,241,255,128,0,63,0,63,255,215,247,254,0,0,63,0,63,255,215,255,244,0,0,63,0,63,255,215,255,192,0,0,63,0,63,64,7,253,0,0,0,63,188,63,64,7,240,0,0,0,127,253,63,64,7,240,0,0,27,255,253,63,64,7,240,0,0,255,255,208,63,64,7,240,0,0,191,255,0,63,64,7,240,0,0,126,127,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,7,128,0,63,0,63,64,7,240,7,224,0,63,0,63,86,151,240,7,224,0,63,0,63,255,231,240,11,208,0,127,11,255,255,227,240,15,208,63,254,15,255,255,147,255,255,192,31,253,15,254,144,3,255,255,128,15,228,6,64,0,0,191,254,0, + // 0x6296 抖 + 150,98,34,35,59,36,1,252,0,47,128,0,0,0,47,128,0,0,47,128,0,0,0,47,128,0,0,47,128,0,16,0,47,128,0,0,47,128,0,126,0,47,128,0,0,47,128,0,255,208,47,128,0,0,47,128,0,47,248,47,128,0,0,47,128,0,7,254,47,128,0,63,255,255,192,0,253,47,128,0,63,255,255,192,0,36,47,128,0,63,255,255,192,0,0,47,128,0,0,47,128,0,0,0,47,128,0,0,47,128,1,64,0,47,128,0,0,47,128,3,244,0,47,128,0,0,47,128,11,254,0,47,128,0,0,47,128,2,255,208,47,128,0,0,47,128,64,127,244,47,128,0,0,47,223,192,11,240,47,128,0,0,47,255,192,1,192,47,128,0,27,255,255,192,0,0,47,128,0,191,255,249,0,0,0,47,128,0,127,255,192,0,0,0,47,239,208,63,175,128,0,0,6,191,255,208,16,47,128,0,107,255,255,255,224,0,47,128,63,255,255,255,249,64,0,47,128,63,255,255,191,128,0,0,47,128,47,250,64,47,128,0,0,47,128,21,0,0,47,128,0,0,47,128,0,0,0,47,128,0,0,47,128,0,0,0,47,128,0,0,47,128,0,0,0,47,128,0,0,47,128,0,0,0,47,128,0,47,255,128,0,0,0,47,128,0,15,255,0,0,0,0,47,128,0,15,248,0,0,0,0,47,128,0,0,0,0,0,0,0,0,0,0, + // 0x62a5 报 + 165,98,34,35,59,36,1,252,0,31,192,0,0,0,0,0,0,0,31,192,15,255,255,255,253,0,0,31,192,15,255,255,255,253,0,0,31,192,15,255,255,255,253,0,0,31,192,15,208,0,0,253,0,0,31,192,15,208,0,0,252,0,0,31,192,15,208,0,0,252,0,63,255,255,143,208,0,1,252,0,63,255,255,143,208,0,2,252,0,63,255,255,143,208,42,171,248,0,0,47,192,15,208,63,255,244,0,0,31,192,15,208,47,255,208,0,0,31,192,15,208,0,0,0,0,0,31,192,15,208,0,0,0,0,0,31,192,15,255,255,255,254,0,0,31,192,15,255,255,255,255,0,0,31,219,143,255,255,255,255,0,0,47,255,207,219,224,0,191,0,27,255,255,207,215,240,0,253,0,191,255,254,79,211,244,1,252,0,127,255,192,15,209,252,2,252,0,63,175,192,15,208,253,3,244,0,16,31,192,15,208,191,11,240,0,0,31,192,15,208,63,207,224,0,0,31,192,15,208,31,255,192,0,0,31,192,15,208,11,255,64,0,0,31,192,15,208,3,255,0,0,0,31,192,15,208,7,255,64,0,0,31,192,15,208,31,255,208,0,0,31,192,15,208,127,255,248,0,0,47,192,15,211,255,75,255,128,63,255,192,15,255,253,2,255,208,63,255,64,15,223,240,0,127,64,47,249,0,15,211,128,0,10,0,0,0,0,0,0,0,0,0,0, + // 0x62ac 抬 + 172,98,34,35,59,36,1,252,0,31,192,0,3,228,0,0,0,0,31,192,0,3,252,0,0,0,0,31,192,0,7,244,0,0,0,0,31,192,0,11,240,0,0,0,0,31,192,0,15,224,0,0,0,0,31,192,0,31,208,1,0,0,0,31,192,0,47,192,31,0,0,127,255,255,128,63,64,63,192,0,127,255,255,128,127,0,15,224,0,127,255,255,128,254,0,11,244,0,0,47,192,0,253,0,3,252,0,0,31,192,2,252,0,1,254,0,0,31,192,87,253,170,255,255,0,0,31,192,191,255,255,255,255,128,0,31,192,191,255,255,255,255,192,0,31,192,191,250,165,80,15,224,0,31,219,192,0,0,0,11,192,0,47,255,192,0,0,0,1,0,6,255,255,192,0,0,0,0,0,255,255,249,11,255,255,255,252,0,191,255,192,11,255,255,255,252,0,126,111,192,11,255,255,255,252,0,0,31,192,11,224,0,1,252,0,0,31,192,11,224,0,1,252,0,0,31,192,11,224,0,1,252,0,0,31,192,11,224,0,1,252,0,0,31,192,11,224,0,1,252,0,0,31,192,11,224,0,1,252,0,0,31,192,11,224,0,1,252,0,0,31,192,11,255,255,255,252,0,0,47,192,11,255,255,255,252,0,31,255,128,11,255,255,255,252,0,15,255,64,11,224,0,1,252,0,15,249,0,11,224,0,0,168,0,0,0,0,0,0,0,0,0,0, + // 0x62bd 抽 + 189,98,33,35,59,36,1,252,0,47,64,0,0,47,64,0,0,0,47,64,0,0,47,64,0,0,0,47,64,0,0,47,64,0,0,0,47,64,0,0,47,64,0,0,0,47,64,0,0,47,64,0,0,0,47,64,0,0,47,64,0,0,0,47,64,0,0,47,64,0,0,127,255,255,0,0,47,64,0,0,127,255,255,47,255,255,255,255,192,127,255,255,47,255,255,255,255,192,0,47,128,47,255,255,255,255,192,0,47,64,47,128,63,128,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,159,111,64,47,64,47,192,0,63,255,111,64,47,64,47,192,27,255,255,175,255,255,255,255,192,255,255,248,47,255,255,255,255,192,191,255,128,47,255,255,255,255,192,126,127,64,47,128,47,128,47,192,16,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,255,255,255,255,192,0,47,64,47,255,255,255,255,192,0,63,64,47,255,255,255,255,192,47,255,64,47,128,0,0,47,192,31,255,0,47,64,0,0,47,192,15,248,0,47,64,0,0,26,128,0,0,0,0,0,0,0,0,0, + // 0x62d4 拔 + 212,98,34,35,59,36,1,252,0,47,64,0,31,192,16,0,0,0,47,64,0,31,192,125,0,0,0,47,64,0,31,192,255,192,0,0,47,64,0,31,192,47,244,0,0,47,64,0,31,192,7,254,0,0,47,64,0,31,192,0,254,0,0,47,64,0,31,192,0,44,0,127,255,255,0,31,192,0,0,0,127,255,255,127,255,255,255,255,192,127,255,255,127,255,255,255,255,192,106,191,234,127,255,255,255,255,192,0,47,64,0,47,128,0,0,0,0,47,64,0,47,128,0,0,0,0,47,64,0,63,192,0,64,0,0,47,64,0,63,208,2,248,0,0,47,64,0,63,224,3,244,0,0,47,135,64,63,240,3,240,0,0,47,255,64,127,240,7,240,0,6,255,255,128,191,248,11,224,0,191,255,253,0,254,252,15,208,0,191,255,128,0,252,189,31,192,0,127,191,64,1,252,127,47,192,0,32,47,64,2,248,63,127,64,0,0,47,64,3,244,31,255,0,0,0,47,64,7,240,15,254,0,0,0,47,64,15,224,7,252,0,0,0,47,64,31,208,7,252,0,0,0,47,64,63,192,15,255,64,0,0,47,64,191,64,63,255,208,0,0,47,65,254,0,255,95,244,0,0,63,67,252,7,254,7,255,64,47,255,79,244,47,248,1,255,224,31,255,11,208,47,208,0,47,192,15,248,2,128,7,0,0,3,64,0,0,0,0,0,0,0,0,0, + // 0x62e9 择 + 233,98,34,35,59,36,1,252,0,47,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,47,255,255,255,248,0,0,63,64,47,255,255,255,253,0,0,63,64,47,255,255,255,252,0,0,63,64,0,253,0,7,244,0,0,63,64,0,127,0,31,208,0,127,255,255,64,47,192,127,128,0,127,255,255,64,11,246,254,0,0,127,255,255,64,3,255,248,0,0,0,63,64,0,0,255,224,0,0,0,63,64,0,7,255,248,0,0,0,63,64,0,127,255,255,128,0,0,63,64,11,255,208,255,254,0,0,63,64,255,254,0,31,255,224,0,63,65,191,224,0,2,255,192,0,63,175,61,0,63,64,27,64,0,63,255,0,0,63,64,0,0,11,255,255,64,0,63,64,0,0,191,255,228,15,255,255,255,252,0,127,255,64,15,255,255,255,252,0,62,127,64,15,255,255,255,252,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,255,255,255,255,255,208,0,63,64,255,255,255,255,255,208,0,63,64,255,255,255,255,255,208,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,31,255,64,0,0,63,64,0,0,15,255,0,0,0,63,64,0,0,15,248,0,0,0,63,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x6309 按 + 9,99,34,35,59,36,1,252,0,47,64,0,0,63,0,0,0,0,47,64,0,0,63,64,0,0,0,47,64,0,0,63,64,0,0,0,47,64,0,0,63,64,0,0,0,47,64,0,0,63,64,0,0,0,47,64,63,255,255,255,255,192,0,47,64,63,255,255,255,255,192,127,255,255,127,255,255,255,255,192,127,255,255,127,0,0,0,15,192,127,255,255,127,1,252,0,15,192,0,47,128,63,2,252,0,15,192,0,47,64,63,3,248,0,15,192,0,47,64,0,3,240,0,0,0,0,47,64,0,7,240,0,0,0,0,47,64,0,15,224,0,0,0,0,47,64,127,255,255,255,255,224,0,47,70,191,255,255,255,255,224,0,47,255,255,255,255,255,255,224,1,191,255,128,63,64,7,240,0,191,255,254,0,127,0,15,240,0,191,255,128,0,254,0,15,224,0,127,191,64,0,252,0,31,208,0,36,47,64,2,252,0,47,192,0,0,47,64,3,255,64,63,64,0,0,47,64,7,255,248,255,0,0,0,47,64,11,255,255,253,0,0,0,47,64,0,65,255,252,0,0,0,47,64,0,0,63,255,64,0,0,47,64,0,1,255,255,240,0,0,47,64,0,31,255,47,253,0,0,63,64,6,255,248,7,255,128,47,255,65,255,255,128,0,191,208,31,255,0,255,244,0,0,31,128,15,248,0,121,0,0,0,2,0,0,0,0,0,0,0,0,0,0, + // 0x6321 挡 + 33,99,33,35,59,36,1,252,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,1,0,63,64,20,0,0,63,64,47,128,63,64,63,64,0,63,64,31,192,63,64,127,0,0,63,64,15,208,63,64,190,0,0,63,64,11,224,63,64,253,0,127,255,255,67,240,63,65,252,0,127,255,255,67,244,63,66,248,0,127,255,255,66,248,63,67,240,0,0,63,128,1,248,63,71,224,0,0,63,64,0,128,63,66,208,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,128,0,0,0,63,64,63,255,255,255,255,0,0,63,64,63,255,255,255,255,0,0,63,91,63,255,255,255,255,0,0,63,255,64,0,0,0,127,0,6,255,255,64,0,0,0,127,0,191,255,249,0,0,0,0,127,0,191,255,128,0,0,0,0,127,0,127,127,64,31,255,255,255,255,0,16,63,64,31,255,255,255,255,0,0,63,64,31,255,255,255,255,0,0,63,64,0,0,0,0,127,0,0,63,64,0,0,0,0,127,0,0,63,64,0,0,0,0,127,0,0,63,64,0,0,0,0,127,0,0,63,64,191,255,255,255,255,0,0,63,64,191,255,255,255,255,0,0,63,64,191,255,255,255,255,0,47,255,64,0,0,0,0,127,0,31,255,0,0,0,0,0,127,0,15,248,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0, + // 0x6324 挤 + 36,99,34,34,50,36,1,253,0,126,0,0,1,180,0,0,0,0,126,0,0,2,252,0,0,0,0,126,0,0,0,253,0,0,0,0,126,0,0,0,191,0,0,0,0,126,2,255,255,255,255,255,192,0,126,2,255,255,255,255,255,192,0,126,2,255,255,255,255,255,192,127,255,252,3,244,0,15,224,0,127,255,252,1,252,0,47,192,0,127,255,252,0,254,0,63,128,0,0,191,0,0,127,64,255,0,0,0,126,0,0,47,211,253,0,0,0,126,0,0,11,255,244,0,0,0,126,0,0,3,255,224,0,0,0,126,0,0,11,255,244,0,0,0,126,0,1,255,255,255,212,0,0,127,186,255,255,215,255,255,224,0,191,253,255,253,0,111,255,192,11,255,252,255,144,0,1,191,128,191,255,144,80,252,0,63,65,0,127,254,0,0,252,0,63,64,0,62,190,0,0,252,0,63,64,0,16,126,0,0,252,0,63,64,0,0,126,0,0,252,0,63,64,0,0,126,0,1,252,0,63,64,0,0,126,0,1,252,0,63,64,0,0,126,0,3,248,0,63,64,0,0,126,0,3,244,0,63,64,0,0,126,0,11,240,0,63,64,0,0,126,0,47,224,0,63,64,0,0,190,0,191,192,0,63,64,0,63,254,7,255,0,0,63,64,0,31,252,7,248,0,0,63,64,0,15,224,0,144,0,0,63,64,0, + // 0x635f 损 + 95,99,34,35,59,36,1,252,0,63,0,0,0,0,0,0,0,0,63,0,6,170,170,170,160,0,0,63,0,7,255,255,255,240,0,0,63,0,7,255,255,255,240,0,0,63,0,7,240,0,3,240,0,0,63,0,7,240,0,3,240,0,0,63,0,7,240,0,3,240,0,127,255,255,7,240,0,3,240,0,127,255,255,7,255,255,255,240,0,127,255,255,7,255,255,255,240,0,0,127,0,6,170,170,170,160,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,31,255,255,255,253,0,0,63,0,31,255,255,255,253,0,0,63,0,31,234,170,170,253,0,0,63,6,31,128,0,0,253,0,0,63,255,31,128,0,0,253,0,0,191,255,95,128,63,0,253,0,111,255,254,31,128,127,0,253,0,191,255,144,31,128,127,0,253,0,191,255,0,31,128,127,0,253,0,120,63,0,31,128,127,0,253,0,0,63,0,31,128,127,0,253,0,0,63,0,31,128,190,0,253,0,0,63,0,31,128,253,0,253,0,0,63,0,26,67,252,16,84,0,0,63,0,0,15,244,125,0,0,0,63,0,0,127,240,255,128,0,0,63,0,6,255,192,127,244,0,21,191,0,127,254,0,11,254,0,63,255,7,255,244,0,1,255,208,31,254,2,255,64,0,0,47,208,15,228,0,224,0,0,0,7,64,0,0,0,0,0,0,0,0,0, + // 0x6362 换 + 98,99,34,35,59,36,1,252,0,127,0,0,14,128,0,0,0,0,127,0,0,47,192,0,0,0,0,127,0,0,63,128,0,0,0,0,127,0,0,191,255,255,128,0,0,127,0,1,255,255,255,240,0,0,127,0,3,255,255,255,208,0,0,127,0,15,240,0,63,192,0,127,255,252,63,208,0,191,0,0,127,255,252,255,128,1,253,0,0,127,255,254,255,170,171,254,168,0,0,127,0,191,255,255,255,252,0,0,127,0,63,255,255,255,252,0,0,127,0,31,128,127,1,252,0,0,127,0,31,128,127,1,252,0,0,127,0,31,128,127,1,252,0,0,127,0,31,128,127,1,252,0,0,127,109,31,128,127,1,252,0,0,127,253,31,128,127,1,252,0,27,255,254,31,128,127,1,252,0,191,255,244,31,128,190,1,252,0,127,255,3,255,255,255,255,255,192,62,191,3,255,255,255,255,255,192,0,127,3,255,255,255,255,255,192,0,127,0,0,3,255,64,0,0,0,127,0,0,11,255,192,0,0,0,127,0,0,15,235,224,0,0,0,127,0,0,63,195,248,0,0,0,127,0,0,255,65,254,0,0,0,127,0,7,253,0,191,128,0,0,127,0,47,244,0,47,244,0,0,191,1,255,208,0,11,254,64,47,255,31,255,0,0,1,255,224,15,253,15,248,0,0,0,127,192,15,228,3,128,0,0,0,7,0,0,0,0,0,0,0,0,0,0, + // 0x6389 掉 + 137,99,34,35,59,36,1,252,0,63,0,0,0,190,0,0,0,0,63,0,0,0,190,0,0,0,0,63,0,0,0,190,0,0,0,0,63,0,0,0,191,255,255,192,0,63,0,0,0,191,255,255,192,0,63,0,0,0,191,255,255,192,0,63,0,0,0,190,0,0,0,127,255,255,0,0,190,0,0,0,127,255,255,0,0,190,0,0,0,127,255,255,63,255,255,255,253,0,0,127,0,63,255,255,255,253,0,0,63,0,63,170,170,170,253,0,0,63,0,63,0,0,0,253,0,0,63,0,63,0,0,0,253,0,0,63,0,63,255,255,255,253,0,0,63,1,63,255,255,255,253,0,0,63,190,63,85,85,85,253,0,0,127,255,63,0,0,0,253,0,47,255,255,63,0,0,0,253,0,127,255,208,63,170,170,170,253,0,63,255,0,63,255,255,255,253,0,57,127,0,63,255,255,255,253,0,0,63,0,0,0,190,0,0,0,0,63,0,0,0,190,0,0,0,0,63,0,0,0,190,0,0,0,0,63,3,255,255,255,255,255,208,0,63,3,255,255,255,255,255,208,0,63,3,255,255,255,255,255,208,0,63,0,0,0,190,0,0,0,0,63,0,0,0,190,0,0,0,0,127,0,0,0,190,0,0,0,63,255,0,0,0,190,0,0,0,63,254,0,0,0,190,0,0,0,47,228,0,0,0,190,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x63a2 探 + 162,99,34,34,50,36,1,253,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,191,255,255,255,255,192,0,63,0,191,255,255,255,255,192,0,63,0,191,255,255,255,255,192,0,63,0,189,0,0,0,15,192,0,63,0,189,15,193,248,15,192,127,255,253,189,15,193,248,15,192,127,255,253,189,31,129,248,10,128,127,255,253,0,47,129,248,0,0,0,127,0,0,63,65,248,3,64,0,63,0,0,191,1,248,3,224,0,63,0,2,253,1,252,7,208,0,63,0,31,248,1,255,255,192,0,63,0,255,224,0,255,255,128,0,63,0,127,64,127,26,169,0,0,63,188,16,0,127,0,0,0,0,191,253,0,0,127,0,0,0,111,255,253,0,0,127,0,0,0,191,255,144,255,255,255,255,255,192,127,255,0,255,255,255,255,255,192,120,63,0,255,255,255,255,255,192,0,63,0,0,11,255,244,0,0,0,63,0,0,31,255,252,0,0,0,63,0,0,63,255,255,0,0,0,63,0,0,255,127,63,128,0,0,63,0,3,252,127,31,224,0,0,63,0,15,244,127,7,248,0,0,63,0,127,208,127,2,255,0,0,63,7,255,64,127,0,191,224,0,127,11,253,0,127,0,47,208,63,254,3,224,0,127,0,7,128,31,253,0,64,0,127,0,0,0,15,228,0,0,0,127,0,0,0, + // 0x63a5 接 + 165,99,34,35,59,36,1,252,0,47,64,0,0,127,0,0,0,0,47,64,0,0,127,0,0,0,0,47,64,0,0,127,0,0,0,0,47,64,0,0,127,0,0,0,0,47,64,191,255,255,255,255,64,0,47,64,191,255,255,255,255,64,0,47,64,127,255,255,255,255,64,0,47,128,0,252,0,15,192,0,127,255,254,0,253,0,31,192,0,127,255,254,0,126,0,63,64,0,127,255,254,0,127,0,63,0,0,0,47,64,0,63,0,126,0,0,0,47,66,255,255,255,255,255,208,0,47,67,255,255,255,255,255,208,0,47,67,255,255,255,255,255,208,0,47,64,0,7,244,0,0,0,0,47,174,0,11,240,0,0,0,0,63,255,0,15,208,0,0,0,27,255,255,255,255,255,255,255,208,255,255,230,255,255,255,255,255,208,191,255,66,255,255,255,255,255,208,126,47,64,0,253,0,31,192,0,0,47,64,1,252,0,47,192,0,0,47,64,3,248,0,63,64,0,0,47,64,7,244,0,127,0,0,0,47,64,15,255,128,254,0,0,0,47,64,31,255,255,252,0,0,0,47,64,6,159,255,248,0,0,0,47,64,0,0,255,254,0,0,0,47,64,0,7,255,255,224,0,0,63,64,5,191,253,191,253,0,47,255,71,255,255,224,11,255,64,15,255,3,255,249,0,0,191,0,15,248,2,249,0,0,0,28,0,0,0,0,0,0,0,0,0,0, + // 0x63a7 控 + 167,99,34,34,50,36,1,253,0,62,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,255,255,255,255,255,192,0,63,0,255,255,255,255,255,192,0,63,0,255,255,255,255,255,192,0,127,1,248,31,193,248,15,192,127,255,253,248,31,129,248,15,192,127,255,253,248,31,129,248,15,192,127,255,253,248,47,65,248,0,0,0,63,0,0,63,1,248,1,0,0,63,0,0,127,1,248,7,192,0,63,0,1,253,1,248,11,192,0,63,0,11,252,1,255,175,192,0,63,25,191,240,0,255,255,128,0,63,253,191,128,0,127,254,0,0,191,254,56,0,0,0,0,0,47,255,248,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,191,255,0,63,255,255,255,254,0,125,127,0,63,255,255,255,254,0,0,63,0,63,255,255,255,254,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,127,3,255,255,255,255,255,224,63,254,3,255,255,255,255,255,224,31,253,3,255,255,255,255,255,224,15,228,0,0,0,0,0,0,0, + // 0x63d0 提 + 208,99,34,35,59,36,1,252,0,126,0,0,0,0,0,0,0,0,126,0,15,255,255,255,252,0,0,126,0,15,255,255,255,252,0,0,126,0,15,213,85,86,252,0,0,126,0,15,192,0,0,252,0,0,126,0,15,192,0,0,252,0,0,126,0,15,255,255,255,252,0,127,255,254,15,255,255,255,252,0,127,255,254,15,213,85,85,252,0,127,255,254,15,192,0,0,252,0,0,127,0,15,192,0,0,252,0,0,126,0,15,255,255,255,252,0,0,126,0,15,255,255,255,252,0,0,126,0,5,85,85,85,84,0,0,126,0,0,0,0,0,0,0,0,126,0,0,0,0,0,0,0,0,126,24,255,255,255,255,255,192,0,127,253,255,255,255,255,255,192,6,255,254,170,170,255,170,170,128,191,255,248,0,0,127,0,0,0,191,255,0,11,128,127,0,0,0,126,190,0,15,192,127,0,0,0,0,126,0,15,192,127,170,168,0,0,126,0,31,192,127,255,252,0,0,126,0,47,192,127,255,252,0,0,126,0,63,192,127,0,0,0,0,126,0,63,224,127,0,0,0,0,126,0,191,244,127,0,0,0,0,126,0,253,252,127,0,0,0,0,126,2,252,63,191,0,0,0,0,126,7,244,31,255,255,255,224,63,254,15,240,2,255,255,255,208,47,252,47,192,0,27,255,255,192,31,228,7,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x63d2 插 + 210,99,33,34,50,36,1,253,0,62,0,0,0,0,0,0,0,0,63,0,0,0,0,22,248,0,0,63,0,1,90,191,255,253,0,0,63,0,127,255,255,255,254,0,0,63,0,63,255,255,233,64,0,0,63,0,42,85,127,0,0,0,0,63,0,0,0,63,0,0,0,127,255,253,0,0,63,0,0,0,127,255,254,255,255,255,255,255,192,127,255,254,255,255,255,255,255,192,0,127,1,255,255,255,255,255,192,0,63,0,0,0,63,0,0,0,0,63,0,0,0,63,0,0,0,0,63,0,0,4,63,0,0,0,0,63,0,0,62,63,0,0,0,0,63,0,182,255,255,63,255,64,0,63,124,191,254,191,63,255,64,0,127,253,191,208,63,47,255,64,111,255,253,190,0,63,0,47,64,191,255,144,189,0,63,0,47,64,127,191,0,189,0,63,0,47,64,32,63,0,191,253,63,47,255,64,0,63,0,191,253,63,47,255,64,0,63,0,191,253,63,47,255,64,0,63,0,189,0,63,0,47,64,0,63,0,189,0,63,0,47,64,0,63,0,189,0,63,0,47,64,0,63,0,189,0,63,0,47,64,0,63,0,189,0,63,0,47,64,0,63,0,191,255,255,255,255,64,0,127,0,191,255,255,255,255,64,63,254,0,191,255,255,255,255,64,31,253,0,189,0,0,0,47,64,15,228,0,125,0,0,0,47,64, + // 0x6536 收 + 54,101,34,35,59,36,1,252,0,0,15,192,3,144,0,0,0,0,0,31,192,3,244,0,0,0,0,0,31,192,7,240,0,0,0,0,0,31,192,11,240,0,0,0,2,144,31,192,15,224,0,0,0,7,240,31,192,31,208,0,0,0,7,240,31,192,47,192,0,0,0,7,240,31,192,63,255,255,255,224,7,240,31,192,127,255,255,255,224,7,240,31,192,255,255,255,255,224,7,240,31,193,255,0,0,253,0,7,240,31,195,255,64,1,252,0,7,240,31,199,255,128,2,252,0,7,240,31,207,255,192,3,248,0,7,240,31,239,239,192,3,244,0,7,240,31,255,203,224,7,240,0,7,240,31,223,7,240,11,240,0,7,240,31,198,3,244,15,208,0,7,240,31,192,2,252,47,192,0,7,240,31,192,1,252,63,128,0,7,240,31,192,0,254,191,0,0,7,241,191,192,0,127,254,0,0,7,255,255,192,0,63,252,0,0,127,255,255,192,0,47,248,0,0,127,255,175,192,0,31,240,0,0,63,228,31,192,0,127,252,0,0,41,0,31,192,1,255,254,0,0,0,0,31,192,7,254,255,128,0,0,0,31,192,47,248,63,240,0,0,0,31,193,255,224,15,253,0,0,0,31,203,255,128,7,255,128,0,0,31,239,253,0,0,255,224,0,0,31,207,224,0,0,47,192,0,0,31,199,0,0,0,3,0,0,0,0,0,0,0,0,0,0, + // 0x653e 放 + 62,101,34,35,59,36,1,252,0,3,240,0,0,185,0,0,0,0,3,240,0,0,254,0,0,0,0,3,240,0,0,254,0,0,0,0,3,240,0,0,253,0,0,0,0,3,240,0,1,252,0,0,0,0,7,244,0,2,252,0,0,0,127,255,255,255,67,248,0,0,0,127,255,255,255,67,255,255,255,224,127,255,255,255,71,255,255,255,224,0,126,0,0,15,255,255,255,224,0,126,0,0,31,224,2,252,0,0,126,0,0,47,240,2,248,0,0,126,0,0,63,240,3,244,0,0,127,255,252,191,244,3,240,0,0,127,255,253,255,248,7,240,0,0,127,255,255,254,252,11,224,0,0,126,0,253,248,252,15,208,0,0,126,0,252,112,190,31,192,0,0,126,0,252,0,127,47,192,0,0,190,0,252,0,63,127,64,0,0,190,1,252,0,63,255,0,0,0,253,1,252,0,31,254,0,0,0,253,1,252,0,15,253,0,0,0,252,1,252,0,11,252,0,0,1,252,1,252,0,11,252,0,0,2,252,1,248,0,31,253,0,0,3,248,2,248,0,127,255,64,0,7,240,2,248,1,255,191,192,0,15,240,2,248,7,253,47,240,0,31,208,3,244,47,244,15,253,0,63,192,7,245,255,208,3,255,128,255,67,255,251,255,64,0,255,208,126,2,255,227,252,0,0,47,128,8,1,255,64,208,0,0,6,0,0,0,0,0,0,0,0,0,0, + // 0x6570 数 + 112,101,34,35,59,36,1,252,0,0,252,0,0,46,64,0,0,7,192,252,15,128,63,128,0,0,11,208,252,31,192,63,64,0,0,3,240,252,63,0,127,0,0,0,2,244,252,189,0,127,0,0,0,1,240,252,120,0,190,0,0,0,42,234,254,170,160,254,0,0,0,127,255,255,255,241,255,255,255,224,127,255,255,255,242,255,255,255,224,0,7,255,0,3,255,255,255,224,0,31,255,224,3,248,0,253,0,0,127,255,252,11,252,1,252,0,2,254,253,255,79,252,2,252,0,31,244,252,63,239,253,2,252,0,127,208,252,11,127,254,3,248,0,63,0,252,0,255,191,3,244,0,24,2,252,0,254,63,7,240,0,0,11,240,0,124,63,79,240,0,0,15,208,0,4,47,207,224,0,127,255,255,255,240,31,239,192,0,191,255,255,255,240,15,255,192,0,191,255,255,255,240,11,255,64,0,0,253,0,252,0,3,255,0,0,2,252,2,252,0,3,254,0,0,3,248,3,244,0,3,253,0,0,11,255,71,240,0,15,255,0,0,15,255,255,224,0,63,255,192,0,6,159,255,192,0,191,255,224,0,0,2,255,240,3,255,15,248,0,0,31,255,254,31,252,3,254,0,6,255,247,255,255,240,1,255,208,63,255,128,127,255,192,0,127,208,47,248,0,13,190,0,0,31,64,14,64,0,0,52,0,0,2,0,0,0,0,0,0,0,0,0,0, + // 0x6572 敲 + 114,101,34,35,59,36,1,252,0,1,252,0,0,11,224,0,0,0,1,252,0,0,11,224,0,0,0,1,252,0,0,11,224,0,0,0,1,252,0,0,11,224,0,0,42,171,254,170,160,11,224,0,0,127,255,255,255,240,11,255,255,192,127,255,255,255,240,11,255,255,192,0,0,0,0,0,11,255,255,192,0,85,85,84,0,11,224,0,0,1,255,255,252,0,11,224,0,0,1,255,255,252,0,11,224,0,0,1,248,0,252,0,11,224,0,0,1,248,0,252,0,11,224,0,0,1,249,85,252,63,255,255,254,0,1,255,255,252,63,255,255,255,0,1,255,255,252,63,255,255,255,0,0,0,0,0,2,160,0,190,0,5,85,85,85,67,240,0,253,0,31,255,255,255,194,244,1,252,0,31,255,255,255,193,252,3,248,0,31,64,0,15,192,253,7,244,0,31,64,0,15,192,191,15,240,0,31,79,255,79,192,63,95,208,0,31,79,255,79,192,47,255,192,0,31,79,7,79,192,15,255,64,0,31,79,7,79,192,7,254,0,0,31,79,7,79,192,7,254,0,0,31,79,255,79,192,31,255,128,0,31,79,255,79,192,191,255,224,0,31,79,0,15,195,255,95,253,0,31,79,0,15,223,254,7,255,128,31,68,1,95,255,248,1,255,224,31,64,3,255,159,208,0,63,192,31,64,1,254,14,0,0,7,0,0,0,0,0,0,0,0,0,0, + // 0x6574 整 + 116,101,33,33,41,36,2,254,0,3,240,0,0,120,0,0,0,0,3,240,0,0,254,0,0,0,255,255,255,255,128,252,0,0,0,255,255,255,255,130,252,0,0,0,85,87,245,85,3,255,255,255,0,0,3,240,0,11,255,255,255,0,63,255,255,255,31,250,175,250,0,63,255,255,255,63,224,11,208,0,63,3,240,63,255,240,15,192,0,62,3,240,63,253,252,47,128,0,63,3,240,63,56,190,63,0,0,63,255,255,255,0,63,254,0,0,63,255,255,255,0,31,252,0,0,0,63,254,0,0,15,248,0,0,0,255,255,208,0,127,254,0,0,7,251,251,253,2,255,255,208,0,63,211,240,254,127,252,47,254,0,255,67,240,45,255,224,7,255,64,120,3,240,0,126,0,0,190,0,0,1,80,0,16,0,0,8,0,10,170,170,170,170,170,170,160,0,15,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,240,0,0,0,0,11,224,0,0,0,0,0,26,64,11,224,0,0,0,0,0,47,128,11,250,170,168,0,0,0,47,128,11,255,255,253,0,0,0,47,128,11,255,255,253,0,0,0,47,128,11,224,0,0,0,0,0,47,128,11,224,0,0,0,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64, + // 0x6599 料 + 153,101,34,34,50,36,1,253,0,11,208,0,0,0,15,208,0,0,11,208,0,0,0,15,208,0,24,11,208,164,1,0,15,208,0,62,11,208,252,15,128,15,208,0,47,11,208,252,31,244,15,208,0,31,11,209,244,7,253,15,208,0,15,75,210,240,0,255,79,208,0,15,139,211,240,0,47,15,208,0,11,203,211,208,0,9,15,208,0,11,203,215,192,0,0,15,208,0,7,139,219,128,0,0,15,208,0,0,11,208,0,0,0,15,208,0,127,255,255,252,120,0,15,208,0,127,255,255,252,255,64,15,208,0,127,255,255,252,191,224,15,208,0,0,63,224,0,31,252,15,208,0,0,63,240,0,2,248,15,208,0,0,191,252,0,0,176,15,208,0,0,255,255,0,0,0,15,208,0,1,255,255,128,0,0,15,208,64,3,251,239,208,0,0,15,255,208,3,235,215,240,0,22,255,255,224,15,203,211,248,107,255,255,255,224,31,203,209,243,255,255,255,228,0,63,75,208,131,255,254,95,208,0,191,11,208,2,249,0,15,208,0,189,11,208,0,0,0,15,208,0,60,11,208,0,0,0,15,208,0,36,11,208,0,0,0,15,208,0,0,11,208,0,0,0,15,208,0,0,11,208,0,0,0,15,208,0,0,11,208,0,0,0,15,208,0,0,11,208,0,0,0,15,208,0,0,11,208,0,0,0,15,208,0, + // 0x659c 斜 + 156,101,34,34,50,36,1,253,0,2,253,0,0,0,3,240,0,0,3,255,64,0,0,3,240,0,0,7,255,208,0,0,3,240,0,0,15,255,244,0,180,3,240,0,0,47,203,253,2,253,3,240,0,0,127,130,255,64,255,67,240,0,0,255,0,191,192,63,211,240,0,3,252,0,47,240,15,247,240,0,11,244,0,15,192,3,247,240,0,47,224,0,3,64,0,195,240,0,191,255,255,254,0,0,3,240,0,255,255,255,254,0,0,3,240,0,61,255,255,254,2,192,3,240,0,0,0,253,0,15,244,3,240,0,0,0,253,0,3,254,3,240,0,0,0,253,0,0,191,195,240,0,63,255,255,255,224,47,227,240,0,63,255,255,255,224,11,131,240,0,63,255,255,255,224,1,3,240,0,0,0,253,0,0,0,3,240,64,0,0,253,0,0,0,3,255,208,3,224,253,46,0,1,191,255,224,3,240,253,63,5,191,255,255,224,7,224,253,47,95,255,255,248,0,11,208,253,31,207,255,231,240,0,15,192,253,15,207,164,3,240,0,47,128,253,11,224,0,3,240,0,63,64,253,3,240,0,3,240,0,191,0,253,3,224,0,3,240,0,125,0,253,1,0,0,3,240,0,8,0,253,0,0,0,3,240,0,0,191,252,0,0,0,3,240,0,0,63,252,0,0,0,3,240,0,0,63,224,0,0,0,3,240,0, + // 0x65ad 断 + 173,101,32,35,24,36,3,252,0,0,104,0,0,0,0,64,168,0,188,0,0,0,11,224,248,16,188,0,0,2,255,248,248,244,188,63,41,191,255,228,248,248,188,62,63,255,249,0,248,124,188,124,63,249,0,0,248,60,188,188,63,64,0,0,248,61,188,244,63,64,0,0,248,61,189,240,63,64,0,0,248,16,188,16,63,64,0,0,248,0,188,0,63,64,0,0,249,255,255,255,63,64,0,0,249,255,255,255,63,255,255,254,249,255,255,254,63,255,255,254,248,1,252,0,63,255,255,254,248,3,255,0,63,64,63,0,248,7,255,192,63,64,63,0,248,15,255,240,63,64,63,0,248,31,254,252,63,64,63,0,248,62,188,190,63,0,63,0,248,252,188,60,63,0,63,0,255,248,188,0,63,0,63,0,255,240,188,0,127,0,63,0,249,192,188,0,126,0,63,0,248,0,188,0,190,0,63,0,248,0,188,0,253,0,63,0,248,0,20,1,252,0,63,0,255,255,255,255,252,0,63,0,255,255,255,255,244,0,63,0,255,255,255,255,240,0,63,0,248,0,0,31,208,0,63,0,248,0,0,63,192,0,63,0,248,0,0,31,64,0,63,0,0,0,0,10,0,0,63,0,0,0,0,0,0,0,0,0, + // 0x65b0 新 + 176,101,34,35,59,36,1,252,0,1,168,0,0,0,0,4,0,0,1,252,0,0,0,0,189,0,0,1,252,0,0,0,31,255,128,0,1,252,0,6,91,255,255,64,47,255,255,255,199,255,255,224,0,47,255,255,255,199,255,228,0,0,47,255,255,255,199,244,0,0,0,1,240,0,252,7,240,0,0,0,1,244,1,252,7,240,0,0,0,0,252,2,244,7,240,0,0,0,0,252,3,240,7,240,0,0,0,0,184,2,224,7,240,0,0,0,63,255,255,255,215,255,255,255,224,63,255,255,255,215,255,255,255,224,63,255,255,255,215,255,255,255,224,0,1,252,0,7,240,11,240,0,0,1,252,0,7,240,7,224,0,0,1,252,0,7,240,7,224,0,63,255,255,255,199,224,7,224,0,63,255,255,255,203,224,7,224,0,63,255,255,255,203,224,7,224,0,0,7,252,0,15,208,7,224,0,0,15,255,0,15,208,7,224,0,0,47,255,192,15,192,7,224,0,0,127,255,244,31,192,7,224,0,1,254,254,254,47,128,7,224,0,7,249,252,191,63,64,7,224,0,31,241,252,60,127,0,7,224,0,127,193,252,4,254,0,7,224,0,127,1,252,1,253,0,7,224,0,44,1,252,3,252,0,7,224,0,0,1,252,15,240,0,7,224,0,0,1,252,3,224,0,7,224,0,0,1,248,0,128,0,6,160,0,0,0,0,0,0,0,0,0,0, + // 0x65b9 方 + 185,101,32,35,24,36,2,252,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,11,244,0,0,0,0,0,0,7,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,255,255,255,255,0,0,0,15,255,255,255,255,0,0,0,31,255,255,255,254,0,0,0,31,208,0,0,254,0,0,0,47,192,0,0,254,0,0,0,63,128,0,0,254,0,0,0,127,64,0,0,253,0,0,0,255,0,0,0,253,0,0,0,255,0,0,0,253,0,0,2,253,0,0,1,252,0,0,7,252,0,0,1,252,0,0,15,244,0,0,2,252,0,0,63,224,0,0,3,248,0,0,255,192,0,0,3,248,0,3,255,0,0,0,7,244,0,47,253,0,0,0,15,240,0,255,244,0,3,255,255,224,0,191,192,0,3,255,255,192,0,45,0,0,2,255,254,0,0,0,0,0,0,0,0,0,0, + // 0x65e0 无 + 224,101,33,31,23,36,2,253,15,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,240,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,0,0,0,127,64,0,0,0,0,0,0,0,127,85,0,0,0,0,0,0,0,191,191,0,0,0,0,0,0,0,254,191,0,0,0,0,0,0,0,253,191,0,0,0,0,0,0,2,252,191,0,0,0,0,0,0,3,248,191,0,0,0,0,0,0,11,240,191,0,0,0,0,0,0,31,224,191,0,0,16,0,0,0,127,192,191,0,0,46,0,0,1,255,64,191,0,0,47,128,0,11,254,0,191,0,0,63,128,0,127,248,0,191,0,0,63,64,7,255,224,0,191,0,0,127,0,191,255,64,0,127,255,255,255,0,255,248,0,0,63,255,255,253,0,63,128,0,0,31,255,255,248,0,36,0,0,0,0,85,85,0,0, + // 0x65f6 时 + 246,101,32,34,16,36,3,253,0,0,0,0,0,0,169,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,255,255,253,0,0,0,254,0,255,255,253,0,0,0,254,0,255,255,253,0,0,0,254,0,252,0,189,0,0,0,254,0,252,0,189,63,255,255,255,254,252,0,189,63,255,255,255,254,252,0,189,63,255,255,255,254,252,0,189,21,85,85,254,84,252,0,189,0,0,0,254,0,252,0,189,0,0,0,254,0,255,255,253,2,192,0,254,0,255,255,253,15,224,0,254,0,255,255,253,7,244,0,254,0,252,0,189,3,252,0,254,0,252,0,189,0,254,0,254,0,252,0,189,0,191,64,254,0,252,0,189,0,63,192,254,0,252,0,189,0,31,224,254,0,252,0,189,0,15,240,254,0,252,0,189,0,7,64,254,0,252,0,189,0,0,0,254,0,255,255,253,0,0,0,254,0,255,255,253,0,0,0,254,0,255,255,253,0,0,0,254,0,252,0,0,0,0,0,254,0,252,0,0,0,0,0,254,0,252,0,0,0,0,0,254,0,0,0,0,0,47,255,253,0,0,0,0,0,31,255,252,0,0,0,0,0,15,255,224,0,0,0,0,0,5,80,0,0, + // 0x660e 明 + 14,102,31,33,8,36,3,252,255,255,255,3,255,255,255,244,255,255,255,3,255,255,255,244,255,255,255,3,255,255,255,244,252,0,127,3,240,0,3,244,252,0,63,3,240,0,3,244,252,0,63,3,240,0,3,244,252,0,63,3,240,0,3,244,252,0,63,3,240,0,3,244,252,0,63,3,255,255,255,244,252,0,63,3,255,255,255,244,255,255,255,3,255,255,255,244,255,255,255,3,240,0,3,244,255,255,255,3,240,0,3,244,252,0,63,3,240,0,3,244,252,0,63,7,240,0,3,244,252,0,63,7,240,0,3,244,252,0,63,7,240,0,3,244,252,0,63,7,255,255,255,244,252,0,63,11,255,255,255,244,255,255,255,15,255,255,255,244,255,255,255,15,208,0,3,244,255,255,255,15,192,0,3,244,252,0,0,47,192,0,3,244,252,0,0,63,128,0,3,244,252,0,0,127,0,0,3,244,84,0,0,255,0,0,3,244,0,0,2,253,0,0,3,244,0,0,7,252,0,0,3,244,0,0,15,240,0,0,7,244,0,0,127,224,0,31,255,240,0,0,127,128,0,15,255,240,0,0,14,0,0,11,254,64,0,0,0,0,0,0,0,0, + // 0x662f 是 + 47,102,34,33,41,36,1,253,0,21,85,85,85,85,85,64,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,0,0,0,0,31,192,0,0,63,0,0,0,0,31,192,0,0,63,85,85,85,85,111,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,0,0,0,0,31,192,0,0,63,0,0,0,0,31,192,0,0,63,149,85,85,85,111,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,0,0,0,1,252,0,0,0,0,0,3,144,1,252,0,0,0,0,0,7,244,1,252,0,0,0,0,0,11,240,1,252,0,0,0,0,0,15,240,1,255,255,255,244,0,0,15,224,1,255,255,255,244,0,0,47,240,1,255,255,255,244,0,0,63,252,1,252,0,0,0,0,0,191,255,1,252,0,0,0,0,1,254,127,209,252,0,0,0,0,7,252,31,255,252,0,0,0,0,31,240,7,255,255,255,255,255,208,127,208,0,127,255,255,255,255,192,47,64,0,1,191,255,255,255,128,9,0,0,0,0,0,0,0,0, + // 0x6682 暂 + 130,102,32,34,16,36,2,253,0,14,64,0,0,0,0,16,0,31,208,0,0,0,91,244,170,191,234,170,70,191,255,252,255,255,255,255,139,255,255,228,255,255,255,255,139,250,80,0,3,248,0,0,11,192,0,0,7,240,189,0,11,192,0,0,31,192,189,0,11,192,0,0,127,234,255,170,79,234,170,170,127,255,255,255,207,255,255,255,63,255,255,255,207,255,255,255,16,0,189,0,15,192,63,0,0,0,189,0,15,192,63,0,0,5,255,255,95,128,63,0,191,255,255,255,111,64,63,0,255,255,255,169,63,0,63,0,190,149,189,0,191,0,63,0,0,0,189,0,253,0,63,0,0,0,189,0,60,0,63,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,0,0,255,255,255,255,255,255,0,0,255,170,170,170,170,255,0,0,253,0,0,0,0,127,0,0,253,0,0,0,0,127,0,0,255,255,255,255,255,255,0,0,255,255,255,255,255,255,0,0,254,85,85,85,85,191,0,0,253,0,0,0,0,127,0,0,253,0,0,0,0,127,0,0,255,255,255,255,255,255,0,0,255,255,255,255,255,255,0,0,255,170,170,170,170,255,0,0,189,0,0,0,0,127,0, + // 0x66ab 暫 + 171,102,32,34,16,36,2,253,0,3,240,0,0,0,1,128,0,3,240,0,0,1,111,240,191,255,255,255,95,191,255,248,191,255,255,255,95,255,254,64,0,3,240,0,31,249,0,0,26,171,250,169,31,128,0,0,63,255,255,254,31,128,0,0,62,3,240,62,31,128,0,0,62,3,240,62,31,255,255,255,63,255,255,254,31,255,255,255,63,171,250,190,31,234,191,170,62,3,240,62,47,64,63,0,63,255,255,254,63,0,63,0,26,171,250,169,63,0,63,0,0,3,240,0,190,0,63,0,255,255,255,255,253,0,63,0,255,255,255,255,248,0,63,0,0,3,240,11,240,0,63,0,0,3,240,2,208,0,63,0,0,1,64,0,64,0,0,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,170,170,170,170,252,0,0,63,0,0,0,0,252,0,0,63,0,0,0,0,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,85,85,85,85,252,0,0,63,0,0,0,0,252,0,0,63,0,0,0,0,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,170,170,170,170,252,0,0,63,0,0,0,0,252,0, + // 0x66f4 更 + 244,102,33,33,41,36,2,252,191,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,254,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,1,254,170,175,250,170,175,208,0,1,252,0,7,240,0,15,208,0,1,252,0,7,240,0,15,208,0,1,254,170,175,250,170,175,208,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,1,252,0,7,240,0,15,208,0,1,252,0,7,240,0,15,208,0,1,252,0,11,240,0,15,208,0,1,254,170,175,250,170,175,208,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,0,6,0,15,208,0,0,0,0,0,127,64,47,192,0,0,0,0,0,63,208,63,128,0,0,0,0,0,15,244,255,64,0,0,0,0,0,7,255,255,0,0,0,0,0,0,1,255,252,0,0,0,0,0,0,0,191,253,0,0,0,0,0,0,11,255,255,249,0,0,0,0,6,255,255,255,255,255,169,85,0,255,255,244,27,255,255,255,255,64,127,254,0,0,107,255,255,255,0,47,144,0,0,0,21,175,254,0,0,0,0,0,0,0,0,0,0, + // 0x6700 最 + 0,103,32,33,8,36,2,253,0,191,255,255,255,255,254,0,0,191,255,255,255,255,254,0,0,190,85,85,85,85,254,0,0,190,0,0,0,0,190,0,0,190,0,0,0,0,190,0,0,191,255,255,255,255,254,0,0,191,255,255,255,255,254,0,0,190,0,0,0,0,190,0,0,190,0,0,0,0,190,0,0,191,255,255,255,255,254,0,0,191,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,254,255,255,255,255,255,255,255,254,171,254,171,255,170,170,170,170,3,240,0,252,0,0,0,0,3,240,0,252,0,0,0,0,3,255,255,252,255,255,255,244,3,255,255,252,255,255,255,244,3,249,85,252,107,234,175,240,3,240,0,252,31,192,15,208,3,249,85,252,15,208,47,192,3,255,255,252,7,240,127,128,3,255,255,252,2,252,255,0,3,240,0,252,0,255,252,0,3,240,0,252,0,127,244,0,3,250,191,252,0,127,240,0,255,255,255,252,7,255,254,0,255,255,255,252,127,253,255,228,254,148,0,255,255,224,47,255,0,0,0,252,254,0,7,254,0,0,0,252,96,0,0,44, + // 0x6709 有 + 9,103,33,35,59,36,1,252,0,0,0,100,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,2,252,0,0,0,0,0,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,0,0,31,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,2,255,255,255,255,255,128,0,0,7,255,255,255,255,255,128,0,0,15,255,255,255,255,255,128,0,0,63,253,0,0,0,47,128,0,0,255,253,0,0,0,47,128,0,3,255,253,0,0,0,47,128,0,31,252,255,255,255,255,255,128,0,127,240,255,255,255,255,255,128,0,63,128,255,255,255,255,255,128,0,14,0,253,0,0,0,47,128,0,0,0,253,0,0,0,47,128,0,0,0,253,0,0,0,47,128,0,0,0,255,255,255,255,255,128,0,0,0,255,255,255,255,255,128,0,0,0,255,255,255,255,255,128,0,0,0,253,0,0,0,47,128,0,0,0,253,0,0,0,47,128,0,0,0,253,0,0,0,47,128,0,0,0,253,0,0,0,63,128,0,0,0,253,0,0,255,255,64,0,0,0,253,0,0,191,255,0,0,0,0,253,0,0,127,248,0,0,0,0,0,0,0,0,0,0,0, + // 0x671f 期 + 31,103,33,34,50,36,1,252,0,252,0,190,0,0,0,0,0,0,252,0,190,1,255,255,255,64,0,252,0,190,1,255,255,255,64,0,252,0,190,1,255,255,255,64,63,255,255,255,241,252,0,63,64,63,255,255,255,241,252,0,63,64,63,255,255,255,241,252,0,63,64,0,252,0,190,1,252,0,63,64,0,252,0,190,1,252,0,63,64,0,254,170,254,1,255,255,255,64,0,255,255,254,1,255,255,255,64,0,255,255,254,1,255,255,255,64,0,252,0,190,1,252,0,63,64,0,252,0,190,1,252,0,63,64,0,252,0,190,1,252,0,63,64,0,254,170,254,1,252,0,63,64,0,255,255,254,1,248,0,63,64,0,255,255,254,1,248,0,63,64,0,252,0,190,1,255,255,255,64,0,252,0,190,2,255,255,255,64,0,252,0,190,2,255,255,255,64,127,255,255,255,242,244,0,63,64,191,255,255,255,243,244,0,63,64,191,255,255,255,243,240,0,63,64,0,16,0,64,3,240,0,63,64,0,126,2,224,7,240,0,63,64,0,255,7,244,11,224,0,63,64,2,252,2,253,15,208,0,63,64,7,248,0,255,31,192,0,63,64,31,240,0,63,175,192,0,63,64,63,208,0,47,127,128,127,255,0,47,64,0,4,63,0,63,255,0,10,0,0,0,10,0,47,248,0,0,0,0,0,0,0,0,0,0, + // 0x673a 机 + 58,103,34,35,59,36,1,252,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,127,255,255,192,0,0,7,240,0,127,255,255,192,0,0,7,240,0,127,255,255,192,0,0,7,240,0,127,0,31,192,0,0,7,240,0,127,0,15,192,0,0,7,240,0,127,0,15,192,0,63,255,255,252,127,0,15,192,0,63,255,255,252,127,0,15,192,0,63,255,255,252,127,0,15,192,0,0,15,240,0,127,0,15,192,0,0,31,240,0,127,0,15,192,0,0,47,240,0,127,0,15,192,0,0,63,244,0,127,0,15,192,0,0,63,252,0,127,0,15,192,0,0,191,255,0,127,0,15,192,0,0,255,255,192,127,0,15,192,0,1,251,255,224,127,0,15,192,0,3,247,243,248,190,0,15,192,0,7,215,241,252,190,0,15,192,0,15,199,240,240,253,0,15,192,0,47,135,240,32,253,0,15,192,0,63,71,240,0,252,0,15,192,0,254,7,240,1,252,0,15,192,64,124,7,240,2,248,0,15,193,224,56,7,240,3,244,0,15,193,240,16,7,240,7,240,0,15,193,240,0,7,240,15,224,0,15,193,240,0,7,240,31,208,0,15,193,240,0,7,240,63,192,0,15,210,240,0,7,240,255,0,0,15,255,240,0,7,240,254,0,0,15,255,208,0,7,240,40,0,0,2,255,128,0,1,64,0,0,0,0,0,0, + // 0x6740 杀 + 64,103,32,34,16,36,2,253,0,0,0,0,0,0,160,0,0,100,0,0,0,3,253,0,1,255,64,0,0,31,252,0,2,255,248,0,0,191,240,0,0,31,255,144,7,255,128,0,0,1,255,253,63,253,0,0,0,0,31,255,255,224,0,0,0,0,0,255,255,64,0,0,0,0,2,255,255,224,0,0,0,0,111,255,255,253,0,0,0,7,255,248,15,255,208,0,1,191,255,128,1,255,253,0,111,255,248,0,0,31,255,128,127,255,64,0,0,1,255,192,31,224,0,11,240,0,47,0,5,0,0,11,240,0,4,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,255,255,255,255,255,255,255,254,255,255,255,255,255,255,255,254,255,255,255,255,255,255,255,254,0,0,0,11,240,0,0,0,0,1,0,11,240,0,0,0,0,7,224,11,240,11,192,0,0,31,240,11,240,31,240,0,0,63,192,11,240,7,253,0,0,255,0,11,240,1,255,64,7,253,0,11,240,0,63,208,31,244,0,11,240,0,15,244,191,208,0,11,240,0,3,253,255,64,0,15,240,0,1,254,61,0,15,255,224,0,0,116,0,0,11,255,208,0,0,0,0,0,7,254,64,0,0,0, + // 0x675f 束 + 95,103,33,34,50,36,2,253,0,0,0,11,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,63,255,255,255,255,255,255,253,0,63,255,255,255,255,255,255,253,0,63,255,255,255,255,255,255,253,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,3,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,192,0,3,244,0,15,224,0,31,192,0,3,244,0,15,224,0,31,192,0,3,244,0,15,224,0,31,192,0,3,244,0,15,224,0,31,192,0,3,244,0,15,224,0,31,192,0,3,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,192,0,0,0,0,255,255,0,0,0,0,0,0,3,255,255,192,0,0,0,0,0,15,255,255,240,0,0,0,0,0,127,223,231,253,0,0,0,0,2,255,79,225,255,128,0,0,0,31,253,15,224,127,244,0,0,0,191,244,15,224,31,255,0,0,11,255,192,15,224,3,255,224,0,191,254,0,15,224,0,191,255,64,255,240,0,15,224,0,15,255,0,63,64,0,15,224,0,1,252,0,20,0,0,15,224,0,0,40,0,0,0,0,11,224,0,0,0,0, + // 0x6761 条 + 97,103,34,34,50,36,1,253,0,0,0,249,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,31,255,255,255,224,0,0,0,0,127,255,255,255,252,0,0,0,2,255,255,255,255,248,0,0,0,11,255,0,0,31,240,0,0,0,127,255,192,0,127,192,0,0,3,255,223,244,1,255,64,0,0,15,254,3,254,11,253,0,0,0,3,244,0,255,255,244,0,0,0,0,64,0,47,255,192,0,0,0,0,0,0,47,255,208,0,0,0,0,0,7,255,255,255,64,0,0,0,1,191,255,91,255,254,64,0,1,191,255,244,0,191,255,255,128,47,255,254,65,84,6,255,255,128,15,255,144,3,248,0,6,255,0,11,164,0,3,248,0,0,5,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,0,255,255,240,0,0,0,0,0,3,255,255,252,0,0,0,0,0,31,243,249,255,64,0,0,0,0,191,195,248,127,224,0,0,0,7,255,3,248,15,253,0,0,0,127,252,3,248,3,255,208,0,7,255,224,3,248,0,191,254,0,127,255,0,3,248,0,15,255,208,47,244,0,3,248,0,1,255,128,15,64,0,3,248,0,0,31,0,0,0,0,2,248,0,0,0,0, + // 0x6765 来 + 101,103,34,34,50,36,1,253,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,3,255,255,255,255,255,255,253,0,3,255,255,255,255,255,255,253,0,3,255,255,255,255,255,255,253,0,0,0,64,3,252,0,20,0,0,0,11,192,3,248,0,47,128,0,0,15,208,3,248,0,63,192,0,0,11,240,3,248,0,127,64,0,0,3,248,3,248,0,255,0,0,0,2,252,3,248,1,253,0,0,0,1,253,3,248,3,248,0,0,0,0,253,3,248,7,240,0,0,0,0,80,3,248,1,160,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,0,127,255,208,0,0,0,0,0,0,255,255,240,0,0,0,0,0,3,255,255,252,0,0,0,0,0,11,247,249,254,0,0,0,0,0,63,211,248,127,192,0,0,0,0,255,131,248,47,240,0,0,0,3,254,3,248,11,252,0,0,0,47,248,3,248,2,255,64,0,0,255,224,3,248,0,191,240,0,11,255,64,3,248,0,47,254,0,127,253,0,3,248,0,7,255,208,63,224,0,3,248,0,0,255,192,15,64,0,3,248,0,0,31,0,0,0,0,3,248,0,0,1,0,0,0,0,3,248,0,0,0,0, + // 0x677f 板 + 127,103,34,35,59,36,1,252,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,2,255,255,255,255,192,0,15,192,2,255,255,255,255,192,0,15,192,2,255,255,255,255,192,0,15,192,2,248,0,0,0,0,0,15,192,2,244,0,0,0,0,0,15,192,2,244,0,0,0,0,63,255,255,226,244,0,0,0,0,63,255,255,226,244,0,0,0,0,63,255,255,226,244,0,0,0,0,0,31,192,2,248,0,0,0,0,0,47,192,2,255,255,255,255,64,0,63,192,3,255,255,255,255,64,0,127,224,3,255,255,255,255,0,0,191,244,3,255,208,0,127,0,0,255,252,3,255,224,0,190,0,1,255,255,3,247,240,0,253,0,2,255,239,131,242,244,1,252,0,3,223,207,211,241,252,2,248,0,11,207,199,243,240,253,3,244,0,15,143,194,199,240,191,11,240,0,63,79,192,71,224,63,95,208,0,127,15,192,11,224,47,255,192,0,253,15,192,15,208,15,255,64,0,60,15,192,31,192,7,254,0,0,36,15,192,47,192,3,253,0,0,0,15,192,63,128,15,255,64,0,0,15,192,127,0,127,255,208,0,0,15,192,191,1,255,159,248,0,0,15,193,253,31,253,7,255,128,0,15,195,252,63,244,1,255,224,0,15,193,244,31,128,0,63,128,0,15,192,32,9,0,0,7,0,0,0,0,0,0,0,0,0,0, + // 0x6797 林 + 151,103,34,34,50,36,1,253,0,3,244,0,0,3,240,0,0,0,3,244,0,0,3,240,0,0,0,3,244,0,0,3,240,0,0,0,3,244,0,0,3,240,0,0,0,3,244,0,0,3,240,0,0,0,3,244,0,0,3,240,0,0,0,3,244,0,0,3,240,0,0,0,3,244,0,0,7,244,0,0,63,255,255,253,127,255,255,255,192,63,255,255,253,127,255,255,255,192,63,255,255,253,127,255,255,255,192,0,11,244,0,0,15,252,0,0,0,15,252,0,0,31,253,0,0,0,15,255,0,0,47,255,0,0,0,47,255,192,0,63,255,0,0,0,63,255,224,0,127,255,128,0,0,127,251,248,0,255,255,192,0,0,255,246,253,1,255,255,208,0,1,251,244,255,3,247,247,240,0,3,243,244,60,7,243,243,244,0,7,243,244,36,15,211,241,252,0,15,211,244,0,47,195,240,253,0,47,195,244,0,127,67,240,191,0,127,67,244,0,255,3,240,63,128,191,3,244,3,252,3,240,47,208,61,3,244,11,248,3,240,15,224,40,3,244,7,240,3,240,11,128,0,3,244,2,192,3,240,2,0,0,3,244,0,0,3,240,0,0,0,3,244,0,0,3,240,0,0,0,3,244,0,0,3,240,0,0,0,3,244,0,0,3,240,0,0,0,3,244,0,0,3,240,0,0,0,3,244,0,0,3,240,0,0, + // 0x67f1 柱 + 241,103,34,35,59,36,1,252,0,11,224,0,0,176,0,0,0,0,11,224,0,3,253,0,0,0,0,11,224,0,2,255,128,0,0,0,11,224,0,0,127,240,0,0,0,11,224,0,0,15,252,0,0,0,11,224,0,0,2,253,0,0,0,11,224,0,0,0,244,0,0,0,11,224,3,255,255,255,255,192,63,255,255,247,255,255,255,255,192,63,255,255,247,255,255,255,255,192,63,255,255,244,0,11,240,0,0,0,15,224,0,0,11,240,0,0,0,31,224,0,0,11,240,0,0,0,47,224,0,0,11,240,0,0,0,63,244,0,0,11,240,0,0,0,127,252,0,0,11,240,0,0,0,255,255,0,0,11,240,0,0,0,255,255,192,0,11,240,0,0,2,251,239,224,255,255,255,255,128,3,235,227,244,255,255,255,255,128,11,219,226,244,255,255,255,255,128,15,203,224,224,0,11,240,0,0,47,139,224,64,0,11,240,0,0,127,11,224,0,0,11,240,0,0,190,11,224,0,0,11,240,0,0,60,11,224,0,0,11,240,0,0,36,11,224,0,0,11,240,0,0,0,11,224,0,0,11,240,0,0,0,11,224,0,0,11,240,0,0,0,11,224,0,0,11,240,0,0,0,11,224,63,255,255,255,255,224,0,11,224,63,255,255,255,255,224,0,11,224,63,255,255,255,255,224,0,11,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6821 校 + 33,104,34,35,59,36,1,252,0,15,192,0,0,31,192,0,0,0,15,192,0,0,31,192,0,0,0,15,192,0,0,31,192,0,0,0,15,192,0,0,31,192,0,0,0,15,192,0,0,31,192,0,0,0,15,192,31,255,255,255,255,192,0,15,192,31,255,255,255,255,192,0,15,192,31,255,255,255,255,192,63,255,255,218,170,170,170,170,128,63,255,255,192,4,0,1,0,0,63,255,255,192,47,64,15,192,0,0,47,192,0,63,128,15,240,0,0,63,192,0,191,0,7,248,0,0,63,192,1,253,0,1,253,0,0,127,240,3,248,0,0,191,0,0,191,244,15,240,0,0,63,192,0,255,252,63,235,0,15,159,208,1,255,255,47,127,64,31,203,192,3,255,223,73,31,192,63,129,0,7,239,207,192,15,192,63,64,0,11,207,199,208,11,240,191,0,0,15,143,195,128,3,244,253,0,0,63,79,193,0,2,255,252,0,0,127,15,192,0,0,255,244,0,0,189,15,192,0,0,127,224,0,0,60,15,192,0,0,63,224,0,0,36,15,192,0,0,255,248,0,0,0,15,192,0,7,255,255,0,0,0,15,192,0,31,245,255,192,0,0,15,192,1,255,208,63,248,0,0,15,192,27,255,0,15,255,128,0,15,192,191,248,0,3,255,208,0,15,192,63,208,0,0,127,128,0,15,192,45,0,0,0,11,0,0,0,0,0,0,0,0,0,0, + // 0x683c 格 + 60,104,34,35,59,36,1,252,0,15,192,0,1,224,0,0,0,0,15,192,0,3,248,0,0,0,0,15,192,0,7,244,0,0,0,0,15,192,0,15,240,0,0,0,0,15,192,0,31,255,255,244,0,0,15,192,0,63,255,255,252,0,0,15,192,0,191,255,255,244,0,0,15,192,1,255,0,7,240,0,63,255,255,231,255,64,15,224,0,63,255,255,239,255,192,47,192,0,63,255,255,255,223,224,127,64,0,0,31,192,191,71,248,254,0,0,0,47,208,29,2,255,252,0,0,0,63,244,0,0,191,240,0,0,0,127,252,0,0,127,240,0,0,0,191,255,0,2,255,253,0,0,0,255,239,192,15,255,255,128,0,1,255,207,208,191,240,127,248,0,3,239,195,203,255,128,31,255,208,7,223,194,255,253,0,2,255,224,15,207,192,255,255,255,255,255,128,31,143,192,126,255,255,255,253,0,63,15,192,17,255,255,255,252,0,191,15,192,1,248,0,1,252,0,189,15,192,1,248,0,1,252,0,60,15,192,1,248,0,1,252,0,36,15,192,1,248,0,1,252,0,0,15,192,1,248,0,1,252,0,0,15,192,1,248,0,1,252,0,0,15,192,1,248,0,1,252,0,0,15,192,1,255,255,255,252,0,0,15,192,1,255,255,255,252,0,0,15,192,1,255,255,255,252,0,0,15,192,1,248,0,1,252,0,0,0,0,0,0,0,0,0,0, + // 0x68af 梯 + 175,104,33,34,50,36,1,253,0,15,192,0,24,0,2,144,0,0,15,192,0,252,0,3,248,0,0,15,192,0,190,0,7,240,0,0,15,192,0,63,0,15,224,0,0,15,192,0,63,128,31,192,0,0,15,192,0,31,64,31,64,0,0,15,192,15,255,255,255,255,0,0,15,192,15,255,255,255,255,0,63,255,255,207,255,255,255,255,0,63,255,255,192,0,47,64,63,0,63,255,255,192,0,47,64,63,0,0,47,192,0,0,47,64,63,0,0,63,192,0,0,47,64,63,0,0,63,208,7,255,255,255,255,0,0,127,240,11,255,255,255,255,0,0,255,248,11,255,255,255,255,0,0,255,253,15,192,47,64,0,0,2,255,239,15,192,47,64,0,0,3,255,207,223,192,47,64,0,0,7,223,203,239,255,255,255,255,192,15,207,195,111,255,255,255,255,192,31,143,192,63,255,255,255,255,192,63,15,192,63,0,255,64,15,192,190,15,192,0,3,255,64,31,192,124,15,192,0,11,255,64,31,192,56,15,192,0,47,255,64,31,128,16,15,192,0,255,111,64,47,128,0,15,192,3,253,47,64,63,64,0,15,192,31,244,47,95,255,0,0,15,193,255,224,47,79,255,0,0,15,193,255,64,47,79,248,0,0,15,192,124,0,47,64,0,0,0,15,192,16,0,47,64,0,0,0,15,192,0,0,47,64,0,0, + // 0x68c0 检 + 192,104,34,34,50,36,1,253,0,47,64,0,0,61,0,0,0,0,63,64,0,0,255,0,0,0,0,63,64,0,1,254,0,0,0,0,63,64,0,3,255,128,0,0,0,63,64,0,11,255,208,0,0,0,63,64,0,47,219,244,0,0,0,63,64,0,127,66,254,0,0,63,255,254,1,254,0,255,128,0,63,255,254,7,252,0,63,240,0,63,255,254,31,240,0,11,253,0,0,63,64,127,192,0,2,255,192,0,127,66,255,255,255,255,191,224,0,191,203,253,255,255,255,15,192,0,255,227,240,255,255,255,2,64,0,255,245,128,0,0,0,0,0,2,255,252,0,0,0,0,0,0,3,255,190,0,0,0,0,16,0,3,255,127,6,0,188,0,126,0,11,255,94,47,0,188,0,253,0,15,191,72,31,128,125,0,252,0,47,127,64,15,192,125,1,244,0,63,63,64,11,192,62,3,240,0,190,63,64,7,208,63,3,224,0,60,63,64,3,224,63,11,192,0,40,63,64,3,240,47,15,192,0,16,63,64,3,240,26,47,64,0,0,63,64,1,64,0,63,0,0,0,63,64,0,0,0,125,0,0,0,63,64,0,0,0,252,0,0,0,63,66,255,255,255,255,255,128,0,63,66,255,255,255,255,255,128,0,63,66,255,255,255,255,255,128,0,63,64,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0, + // 0x69fd 槽 + 253,105,34,35,59,36,1,252,0,47,64,0,11,208,252,0,0,0,47,64,0,11,208,252,0,0,0,47,64,0,11,208,252,0,0,0,47,64,255,255,255,255,255,224,0,47,64,255,255,255,255,255,224,0,47,64,170,175,250,254,170,144,0,47,64,0,11,208,252,0,0,0,47,128,5,91,229,253,85,0,63,255,255,47,255,255,255,255,64,63,255,255,47,255,255,255,255,64,63,255,255,47,3,208,248,31,64,0,63,64,47,3,208,248,31,64,0,63,64,47,255,255,255,255,64,0,127,128,47,255,255,255,255,64,0,191,192,47,7,208,248,31,64,0,255,240,47,3,208,248,31,64,1,255,244,47,3,208,248,31,64,2,255,252,47,255,255,255,255,64,3,255,190,47,255,255,255,255,64,7,239,111,69,85,85,85,85,0,15,239,79,0,0,0,0,0,0,31,111,73,7,255,255,255,252,0,63,47,64,7,255,255,255,252,0,126,47,64,7,250,170,170,252,0,188,47,64,7,240,0,0,252,0,56,47,64,7,245,85,85,252,0,32,47,64,7,255,255,255,252,0,0,47,64,7,255,255,255,252,0,0,47,64,7,240,0,0,252,0,0,47,64,7,240,0,0,252,0,0,47,64,7,250,170,170,252,0,0,47,64,7,255,255,255,252,0,0,47,64,7,255,255,255,252,0,0,47,64,7,240,0,0,252,0,0,0,0,0,0,0,0,0,0, + // 0x6a21 模 + 33,106,34,35,59,36,1,252,0,63,0,0,63,0,63,64,0,0,63,0,0,63,0,63,64,0,0,63,0,0,63,0,63,64,0,0,63,0,255,255,255,255,255,192,0,63,0,255,255,255,255,255,192,0,63,0,191,255,255,255,255,128,0,63,0,0,63,0,63,64,0,63,255,254,0,63,0,63,64,0,63,255,254,0,21,0,21,0,0,63,255,254,47,255,255,255,252,0,0,63,84,47,255,255,255,252,0,0,63,64,47,213,85,86,252,0,0,127,128,47,128,0,0,252,0,0,191,208,47,149,85,85,252,0,0,255,240,47,255,255,255,252,0,1,255,248,47,255,255,255,252,0,2,255,253,47,128,0,0,252,0,3,255,127,47,128,0,0,252,0,7,255,47,111,255,255,255,252,0,15,255,14,47,255,255,255,252,0,15,191,8,5,85,191,85,84,0,47,63,0,0,0,190,0,0,0,127,63,0,0,0,254,0,0,0,189,63,1,255,255,255,255,255,128,124,63,1,255,255,255,255,255,192,56,63,1,255,255,255,255,255,192,16,63,0,0,7,255,240,0,0,0,63,0,0,15,243,252,0,0,0,63,0,0,63,208,255,0,0,0,63,0,2,255,128,127,224,0,0,63,0,111,254,0,31,254,64,0,63,7,255,244,0,7,255,208,0,63,2,255,64,0,0,191,128,0,63,0,228,0,0,0,7,0,0,0,0,0,0,0,0,0,0, + // 0x6a59 橙 + 89,106,34,34,50,36,1,253,0,31,192,0,0,0,80,0,0,0,31,192,26,170,130,240,32,0,0,31,192,47,255,241,244,244,0,0,31,192,47,255,224,255,252,0,0,31,192,0,15,192,255,224,0,0,31,192,4,15,192,191,66,0,0,31,192,62,47,128,63,11,192,0,31,192,127,255,0,47,175,192,63,255,255,159,254,0,31,254,0,63,255,255,131,253,0,15,244,0,63,255,255,131,255,255,255,252,0,0,47,192,15,239,255,254,255,0,0,63,192,47,202,170,168,191,208,0,63,192,255,0,0,0,47,240,0,191,226,253,0,0,0,11,192,0,255,244,179,255,255,255,249,64,0,255,252,3,255,255,255,248,0,2,255,255,3,245,85,87,248,0,3,255,223,131,240,0,2,248,0,7,239,207,195,240,0,2,248,0,15,223,199,67,240,0,2,248,0,15,159,194,3,250,170,171,248,0,63,31,192,3,255,255,255,248,0,127,31,192,3,255,255,255,248,0,189,31,192,0,8,0,14,64,0,60,31,192,0,189,0,31,192,0,36,31,192,0,127,0,47,128,0,0,31,192,0,63,0,63,0,0,0,31,192,0,47,64,126,0,0,0,31,192,0,30,0,124,0,0,0,31,192,255,255,255,255,255,224,0,31,192,255,255,255,255,255,224,0,31,192,255,255,255,255,255,208,0,31,192,0,0,0,0,0,0, + // 0x6b62 止 + 98,107,32,32,0,36,2,255,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,255,255,255,244,0,127,0,1,255,255,255,244,0,127,0,1,255,255,255,244,0,127,0,1,253,85,85,80,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,85,191,85,86,253,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x6b63 正 + 99,107,32,31,248,36,2,254,5,85,85,85,85,85,85,84,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,106,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,255,255,255,208,0,127,0,3,255,255,255,208,0,127,0,3,255,255,255,208,0,127,0,3,252,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0, + // 0x6b65 步 + 101,107,32,34,16,36,2,253,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,21,0,11,240,0,0,0,0,63,128,11,240,0,0,0,0,63,128,11,255,255,255,64,0,63,128,11,255,255,255,64,0,63,128,11,255,255,255,64,0,63,128,11,240,0,0,0,0,63,128,11,240,0,0,0,0,63,128,11,240,0,0,0,0,63,128,11,240,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,11,224,0,0,0,0,7,144,11,224,0,0,0,0,15,244,11,224,0,57,0,0,63,224,11,224,0,191,64,0,255,128,11,224,0,255,0,3,255,0,11,224,2,253,0,31,252,0,11,224,3,252,0,191,224,0,11,224,15,244,0,127,128,15,255,224,47,240,0,13,0,11,255,208,191,192,0,0,0,7,254,66,255,64,0,0,0,0,0,15,253,0,0,0,0,0,0,191,244,0,0,0,0,0,7,255,208,0,0,0,0,1,191,255,0,0,0,0,1,111,255,244,0,0,0,2,191,255,255,64,0,0,0,3,255,255,228,0,0,0,0,1,255,249,0,0,0,0,0,0,233,0,0,0,0,0,0, + // 0x6bd4 比 + 212,107,34,34,50,36,1,253,0,42,64,0,6,160,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,40,0,0,63,128,0,7,240,1,254,0,0,63,128,0,7,240,11,255,64,0,63,255,255,7,240,191,253,0,0,63,255,255,7,251,255,224,0,0,63,255,255,7,255,254,0,0,0,63,149,85,7,255,208,0,0,0,63,128,0,7,253,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,7,128,0,63,128,0,7,240,0,7,240,0,63,128,6,199,240,0,7,224,0,63,150,255,199,240,0,11,224,0,63,255,255,215,240,0,15,208,43,255,255,255,135,244,0,31,208,127,255,255,144,3,255,255,255,192,63,255,144,0,2,255,255,255,128,46,64,0,0,0,191,255,254,0,0,0,0,0,0,0,0,0,0, + // 0x6ca1 没 + 161,108,34,35,59,36,1,252,0,144,0,0,0,0,0,0,0,3,253,0,11,255,255,253,0,0,7,255,192,11,255,255,253,0,0,0,191,244,11,255,255,253,0,0,0,15,244,11,224,0,253,0,0,0,2,224,11,224,0,253,0,0,0,0,64,15,208,0,253,0,0,0,0,0,15,208,0,253,3,64,0,0,0,15,192,0,253,3,224,0,0,0,47,192,0,253,3,224,30,0,0,127,128,0,253,7,208,63,224,0,255,0,0,255,255,208,127,253,7,254,0,0,127,255,192,11,255,143,248,0,0,47,254,0,0,191,67,224,0,0,0,0,0,0,30,0,64,0,0,0,0,0,0,0,2,255,255,255,255,244,0,0,0,2,255,255,255,255,248,0,0,0,2,255,255,255,255,244,0,0,0,0,6,208,0,15,240,0,0,2,208,15,240,0,47,208,0,0,3,244,3,244,0,63,192,0,0,11,240,2,252,0,255,0,0,0,15,224,0,255,3,254,0,0,0,47,192,0,127,207,252,0,0,0,63,128,0,31,255,240,0,0,0,191,0,0,11,255,192,0,0,0,254,0,0,31,255,208,0,0,3,252,0,1,255,255,252,0,0,7,248,0,31,255,239,255,208,0,15,240,27,255,254,2,255,255,128,15,224,63,255,224,0,47,255,208,2,192,31,249,0,0,2,255,128,0,0,14,64,0,0,0,27,0,0,0,0,0,0,0,0,0,0, + // 0x6ce2 波 + 226,108,34,35,59,36,1,252,0,64,0,0,0,253,0,0,0,2,244,0,0,0,253,0,0,0,7,255,64,0,0,253,0,0,0,1,255,224,0,0,253,0,0,0,0,47,240,0,0,253,0,0,0,0,7,209,255,255,255,255,255,128,0,0,129,255,255,255,255,255,192,0,0,1,255,255,255,255,255,128,0,0,1,252,0,254,0,63,64,0,0,1,252,0,253,0,127,0,13,0,1,252,0,253,0,190,0,63,208,1,252,0,253,0,252,0,127,252,1,252,0,253,0,120,0,11,255,65,252,0,253,0,0,0,1,255,1,255,255,255,255,244,0,0,45,1,255,255,255,255,252,0,0,0,1,255,255,255,255,248,0,0,0,1,254,248,0,3,244,0,0,0,1,252,252,0,11,240,0,0,0,1,248,190,0,15,208,0,0,7,66,248,63,0,47,192,0,0,15,210,248,47,192,63,128,0,0,31,195,244,15,224,255,0,0,0,63,195,240,11,246,253,0,0,0,63,67,240,3,255,252,0,0,0,191,11,240,0,255,240,0,0,0,253,15,224,0,191,224,0,0,2,252,15,208,2,255,248,0,0,3,248,31,192,15,255,255,64,0,11,240,63,128,191,245,255,228,0,31,224,127,91,255,192,63,255,64,47,192,254,63,254,0,11,255,208,7,128,188,31,224,0,0,191,64,0,0,24,10,0,0,0,10,0,0,0,0,0,0,0,0,0,0, + // 0x6ce8 注 + 232,108,34,34,50,36,1,253,0,128,0,0,40,0,0,0,0,1,253,0,0,127,128,0,0,0,3,255,192,0,255,244,0,0,0,1,255,244,0,47,254,0,0,0,0,31,252,0,7,255,192,0,0,0,2,244,0,0,191,240,0,0,0,0,80,0,0,31,224,0,0,0,0,0,0,0,7,128,0,0,0,0,1,255,255,255,255,255,192,0,0,1,255,255,255,255,255,192,9,0,1,255,255,255,255,255,192,63,224,0,0,0,254,0,0,0,127,254,0,0,0,254,0,0,0,11,255,192,0,0,254,0,0,0,0,191,64,0,0,254,0,0,0,0,10,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,63,255,255,255,253,0,0,0,64,63,255,255,255,253,0,0,0,240,63,255,255,255,253,0,0,2,252,0,0,255,0,0,0,0,3,244,0,0,254,0,0,0,0,11,240,0,0,254,0,0,0,0,15,224,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,63,128,0,0,254,0,0,0,0,255,0,0,0,254,0,0,0,1,254,0,0,0,254,0,0,0,3,252,0,0,0,255,0,0,0,11,244,11,255,255,255,255,255,224,15,240,11,255,255,255,255,255,224,2,208,11,255,255,255,255,255,224,0,64,0,0,0,0,0,0,0, + // 0x6d17 洗 + 23,109,34,35,59,36,1,252,0,64,0,0,0,190,0,0,0,3,224,0,11,224,190,0,0,0,11,254,0,15,224,190,0,0,0,2,255,192,15,208,190,0,0,0,0,127,240,31,192,190,0,0,0,0,15,224,47,192,191,0,0,0,0,2,128,63,255,255,255,255,0,0,0,0,127,255,255,255,255,0,0,0,0,255,255,255,255,255,0,0,0,0,253,0,190,0,0,0,13,0,2,252,0,190,0,0,0,63,128,7,248,0,190,0,0,0,127,248,11,240,0,190,0,0,0,15,255,1,224,0,190,0,0,0,1,255,64,0,0,190,0,0,0,0,46,11,255,255,255,255,255,208,0,4,11,255,255,255,255,255,208,0,0,11,255,255,255,255,255,208,0,0,0,0,254,2,252,0,0,0,0,0,0,253,2,248,0,0,0,7,64,0,253,2,248,0,0,0,11,208,0,252,2,248,0,0,0,15,208,1,252,2,248,0,0,0,47,192,2,252,2,248,0,0,0,63,64,3,248,2,248,0,0,0,127,0,3,244,2,248,1,0,0,254,0,7,240,2,248,3,208,1,253,0,15,224,2,248,3,240,3,252,0,47,208,2,248,3,240,7,244,0,191,128,2,248,3,240,15,240,3,255,0,1,252,7,224,31,224,47,252,0,1,255,255,208,11,192,63,224,0,0,255,255,192,1,128,15,64,0,0,127,254,0,0,0,0,0,0,0,0,0,0, + // 0x6d3b 活 + 59,109,33,34,50,36,2,253,1,0,0,0,0,0,2,128,0,11,128,0,0,0,5,191,224,0,31,248,0,0,26,255,255,248,0,11,255,129,191,255,255,255,144,0,1,255,225,255,255,255,144,0,0,0,47,192,255,250,252,0,0,0,0,3,64,80,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,125,0,31,255,255,255,255,255,64,255,208,31,255,255,255,255,255,64,191,248,31,255,255,255,255,255,64,15,255,0,0,1,252,0,0,0,1,253,0,0,1,252,0,0,0,0,56,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,2,0,255,255,255,255,244,0,0,15,128,255,255,255,255,244,0,0,31,208,255,255,255,255,244,0,0,63,192,252,0,0,3,244,0,0,191,0,252,0,0,3,244,0,0,254,0,252,0,0,3,244,0,3,252,0,252,0,0,3,244,0,7,248,0,252,0,0,3,244,0,15,240,0,252,0,0,3,244,0,47,208,0,255,255,255,255,244,0,127,192,0,255,255,255,255,244,0,63,0,0,255,255,255,255,244,0,10,0,0,252,0,0,3,244,0,0,0,0,188,0,0,2,160,0, + // 0x6d41 流 + 65,109,34,34,50,36,1,253,0,64,0,0,1,252,0,0,0,2,244,0,0,1,252,0,0,0,7,255,0,0,1,252,0,0,0,2,255,224,0,1,252,0,0,0,0,63,244,0,1,252,0,0,0,0,7,247,255,255,255,255,255,192,0,0,199,255,255,255,255,255,192,0,0,7,255,255,255,255,255,192,0,0,0,0,63,192,0,0,0,0,0,0,0,127,64,47,0,0,9,0,0,0,190,0,63,192,0,63,224,0,0,252,0,15,240,0,127,253,0,2,254,170,175,252,0,11,255,131,255,255,255,255,255,0,0,191,3,255,255,255,255,255,128,0,13,3,255,234,149,64,31,208,0,0,0,0,0,0,0,15,64,0,0,0,31,128,0,5,64,0,0,0,0,31,129,248,15,192,0,0,1,0,31,129,248,15,192,0,0,3,208,31,129,248,15,192,0,0,7,240,31,129,248,15,192,0,0,15,240,31,129,248,15,192,0,0,31,208,47,65,248,15,192,0,0,63,192,47,65,248,15,192,0,0,127,64,63,1,248,15,192,0,0,255,0,127,1,248,15,193,0,1,253,0,255,1,248,15,193,224,3,252,1,253,1,248,15,194,240,11,244,3,252,1,248,15,194,224,15,240,15,244,1,248,15,195,224,15,208,63,224,1,248,15,255,208,3,192,15,128,0,164,11,255,192,0,0,2,0,0,0,1,170,0, + // 0x6d4b 测 + 75,109,33,34,50,36,1,253,0,64,0,0,0,0,0,10,0,3,224,0,0,0,0,0,31,64,15,254,15,255,255,244,0,31,64,3,255,207,255,255,244,61,31,64,0,127,223,213,86,244,61,31,64,0,15,143,192,0,244,61,31,64,0,2,15,192,0,244,61,31,64,0,0,15,195,208,244,61,31,64,0,0,15,195,208,244,61,31,64,0,0,15,195,208,244,61,31,64,8,0,15,195,208,244,61,31,64,47,128,15,195,208,244,61,31,64,127,244,15,195,208,244,61,31,64,31,255,15,195,208,244,61,31,64,2,254,15,195,208,244,61,31,64,0,60,15,195,208,244,61,31,64,0,0,15,195,208,244,61,31,64,0,0,15,195,208,244,61,31,64,0,0,15,195,208,244,61,31,64,0,0,15,195,208,244,61,31,64,0,24,15,195,208,244,61,31,64,0,63,15,195,208,244,61,31,64,0,63,15,195,208,244,61,31,64,0,191,15,199,192,244,61,31,64,0,254,15,203,192,244,61,31,64,1,252,5,79,192,80,20,31,64,2,252,0,15,132,0,0,31,64,3,244,0,47,125,0,0,31,64,7,240,0,126,63,64,0,31,64,15,224,1,252,15,208,0,31,64,31,208,7,244,3,240,0,31,64,63,192,63,208,1,252,63,255,64,11,64,63,64,0,184,31,254,0,0,0,8,0,0,16,10,164,0, + // 0x6d88 消 + 136,109,32,35,24,36,2,252,1,0,0,0,2,252,0,0,15,208,0,96,2,252,0,164,47,248,3,244,2,252,0,254,11,255,66,252,2,252,2,252,0,255,192,254,2,252,3,248,0,47,64,191,2,252,11,240,0,6,0,63,130,252,15,208,0,0,0,47,194,252,47,192,0,0,0,13,2,252,6,0,0,0,0,0,2,252,0,0,120,0,1,255,255,255,255,244,255,128,1,255,255,255,255,244,255,240,1,255,255,255,255,244,31,253,1,252,0,0,3,244,3,253,1,252,0,0,3,244,0,184,1,252,0,0,3,244,0,32,1,252,0,0,3,244,0,0,1,255,255,255,255,244,0,0,1,255,255,255,255,244,0,0,1,255,255,255,255,244,0,14,1,252,0,0,3,244,0,31,193,252,0,0,3,244,0,63,129,252,0,0,3,244,0,127,1,255,255,255,255,244,0,255,1,255,255,255,255,244,1,253,1,255,255,255,255,244,3,252,1,252,0,0,3,244,7,244,1,252,0,0,3,244,15,240,1,252,0,0,3,244,31,224,1,252,0,0,3,244,63,192,1,252,0,0,3,244,127,128,1,252,0,11,255,240,31,0,1,252,0,7,255,240,1,0,1,252,0,3,255,128,0,0,0,0,0,0,0,0, + // 0x6de1 淡 + 225,109,34,34,50,36,1,253,0,0,0,0,0,253,0,0,0,2,224,0,0,0,253,0,0,0,7,254,0,9,64,253,0,160,0,2,255,208,31,128,253,0,254,0,0,127,244,63,64,252,2,252,0,0,11,240,63,0,252,3,244,0,0,1,192,254,1,252,11,240,0,0,0,1,252,2,248,31,192,0,0,0,2,248,3,253,47,64,0,0,0,0,16,7,255,129,0,0,8,0,0,0,15,255,248,0,0,47,128,0,0,63,219,255,64,0,127,244,0,2,255,64,255,240,0,31,255,0,111,254,0,31,254,0,1,255,67,255,244,0,2,255,64,0,46,2,255,128,253,0,126,0,0,4,0,228,0,252,0,8,0,0,0,0,0,0,252,0,0,0,0,0,0,47,64,252,0,190,0,0,3,0,63,65,252,0,255,0,0,11,192,127,1,252,2,253,0,0,15,224,190,2,254,3,248,0,0,47,192,252,3,255,11,240,0,0,63,131,252,3,255,95,208,0,0,191,7,240,11,255,223,128,0,0,254,0,96,15,239,224,0,0,2,253,0,0,63,199,248,0,0,7,252,0,1,255,131,254,0,0,15,240,0,27,254,0,255,208,0,31,224,2,255,248,0,63,254,64,31,192,47,255,208,0,11,255,208,3,128,15,253,0,0,1,255,128,0,0,7,144,0,0,0,7,0,0,0,0,0,0,0,0,0,0, + // 0x6df7 混 + 247,109,34,34,50,36,1,253,0,128,0,0,0,0,0,0,0,3,248,0,170,170,170,170,168,0,7,255,129,255,255,255,255,252,0,1,255,241,255,255,255,255,252,0,0,31,225,252,0,0,1,252,0,0,3,193,252,0,0,1,252,0,0,0,65,252,0,0,1,252,0,0,0,1,255,255,255,255,252,0,0,0,1,255,255,255,255,252,0,0,0,1,254,170,170,170,252,0,13,0,1,252,0,0,1,252,0,63,224,1,252,0,0,1,252,0,127,253,1,254,170,170,171,252,0,7,255,1,255,255,255,255,252,0,0,190,1,255,255,255,255,252,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,0,15,208,0,0,0,0,0,252,0,15,208,0,0,0,1,0,252,0,15,208,8,0,0,7,128,252,0,15,208,127,0,0,15,224,255,255,207,215,255,128,0,31,208,255,255,207,255,253,0,0,47,192,255,255,207,255,208,0,0,63,64,252,0,15,253,0,0,0,191,0,252,0,15,208,0,0,0,254,0,252,0,15,208,2,0,2,252,0,252,0,15,208,3,224,3,248,0,253,111,207,208,7,224,11,240,22,255,255,207,208,11,208,15,240,63,255,255,207,255,255,192,31,208,63,255,148,7,255,255,192,3,192,42,64,0,1,255,254,0,0,0,0,0,0,0,0,0,0, + // 0x6e05 清 + 5,110,34,34,50,36,1,253,0,64,0,0,0,253,0,0,0,3,248,0,0,0,253,0,0,0,11,255,66,255,255,255,255,255,64,1,255,226,255,255,255,255,255,64,0,47,241,85,85,254,85,85,0,0,7,208,0,0,253,0,0,0,0,0,128,21,85,254,85,84,0,0,0,0,191,255,255,255,253,0,0,0,0,191,255,255,255,253,0,0,0,0,0,0,253,0,0,0,13,0,0,0,0,253,0,0,0,63,208,11,255,255,255,255,255,224,127,253,11,255,255,255,255,255,224,11,255,133,85,85,85,85,85,64,1,255,0,0,0,0,0,0,0,0,46,0,26,170,170,170,164,0,0,4,0,47,255,255,255,252,0,0,0,0,47,255,255,255,252,0,0,0,0,47,128,0,1,252,0,0,1,0,47,128,0,1,252,0,0,3,208,47,255,255,255,252,0,0,7,240,47,255,255,255,252,0,0,15,240,47,128,0,1,252,0,0,31,208,47,128,0,1,252,0,0,63,192,47,128,0,1,252,0,0,127,64,47,255,255,255,252,0,0,255,0,47,255,255,255,252,0,1,254,0,47,149,85,86,252,0,3,252,0,47,128,0,1,252,0,7,244,0,47,128,0,1,252,0,15,240,0,47,128,0,1,252,0,31,208,0,47,128,2,255,248,0,3,192,0,47,128,1,255,244,0,0,0,0,47,128,0,255,144,0, + // 0x6e29 温 + 41,110,34,33,41,36,1,253,0,224,0,0,0,0,0,0,0,3,254,0,127,255,255,255,240,0,3,255,224,127,255,255,255,240,0,0,127,248,127,255,255,255,240,0,0,7,240,127,0,0,3,240,0,0,0,144,127,0,0,3,240,0,0,0,0,127,170,170,171,240,0,0,0,0,127,255,255,255,240,0,0,0,0,127,255,255,255,240,0,4,0,0,127,0,0,3,240,0,47,128,0,127,0,0,3,240,0,127,248,0,127,0,0,3,240,0,31,255,64,127,255,255,255,240,0,1,255,128,127,255,255,255,240,0,0,47,0,127,255,255,255,240,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,253,0,0,3,66,255,255,255,255,253,0,0,7,226,255,255,255,255,253,0,0,15,226,244,47,7,208,253,0,0,31,194,244,47,7,208,253,0,0,63,130,244,47,7,208,253,0,0,127,2,244,47,7,208,253,0,0,254,2,244,47,7,208,253,0,2,252,2,244,47,7,208,253,0,3,248,2,244,47,7,208,253,0,11,240,2,244,47,7,208,253,0,31,224,127,255,255,255,255,255,224,31,192,127,255,255,255,255,255,224,3,128,127,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x6e38 游 + 56,110,34,34,50,36,1,253,1,0,0,47,64,2,160,0,0,3,224,0,47,64,3,244,0,0,15,253,0,47,64,7,240,0,0,7,255,128,47,64,7,240,0,0,0,191,192,47,64,11,224,0,0,0,31,64,63,128,15,255,255,224,0,6,191,255,255,223,255,255,224,0,0,191,255,255,239,255,255,224,0,0,191,255,255,255,64,0,0,0,0,2,244,0,191,0,0,0,13,0,2,244,1,253,0,0,0,63,224,2,244,0,127,255,255,64,127,253,3,244,0,15,255,255,208,11,255,3,244,0,11,255,255,128,0,188,3,255,255,0,0,191,0,0,20,3,255,255,0,1,253,0,0,0,3,255,255,0,11,248,0,0,0,3,240,63,0,31,224,0,0,0,3,240,63,0,31,192,0,0,0,7,240,63,0,31,192,0,0,52,7,224,63,63,255,255,224,0,62,11,224,63,63,255,255,224,0,190,11,208,63,63,255,255,224,0,253,15,192,63,0,31,192,0,1,252,15,192,63,0,31,192,0,2,252,31,128,127,0,31,192,0,3,244,63,64,126,0,31,192,0,7,240,63,0,126,0,31,192,0,11,240,190,0,190,0,31,192,0,15,208,252,0,189,0,31,192,0,47,195,252,0,253,0,31,192,0,63,135,240,191,252,31,255,128,0,11,66,208,127,248,15,255,64,0,0,0,128,63,208,15,249,0,0, + // 0x6e90 源 + 144,110,34,34,50,36,1,253,0,64,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,11,255,3,255,255,255,255,255,192,2,255,211,255,255,255,255,255,192,0,63,227,255,255,255,255,255,192,0,11,195,244,0,15,240,0,0,0,1,3,244,0,15,224,0,0,0,0,3,244,0,15,192,0,0,0,0,3,244,85,111,213,85,0,0,0,3,244,255,255,255,255,0,13,0,3,244,255,255,255,255,0,63,208,3,244,252,0,0,63,0,127,248,3,244,252,0,0,63,0,11,255,3,244,253,85,85,127,0,1,254,3,244,255,255,255,255,0,0,44,3,240,255,255,255,255,0,0,0,3,240,252,0,0,63,0,0,0,3,240,252,0,0,63,0,0,0,3,240,252,0,0,63,0,0,0,7,240,255,255,255,255,0,0,13,7,240,255,255,255,255,0,0,31,139,224,85,95,229,85,0,0,63,139,224,0,15,208,0,0,0,127,15,208,36,15,208,116,0,0,191,15,192,191,15,210,252,0,0,253,31,192,253,15,208,254,0,2,252,47,129,252,15,208,127,64,3,248,63,67,244,15,208,63,192,7,240,127,11,240,15,208,31,208,15,240,254,31,208,15,208,15,224,31,209,253,47,128,15,208,7,208,63,195,252,2,11,255,192,0,0,11,65,244,0,7,255,192,0,0,0,0,16,0,3,249,0,0,0, + // 0x6ea2 溢 + 162,110,34,34,50,36,1,253,0,64,0,0,0,0,0,0,0,3,244,0,0,15,255,252,0,0,11,255,0,6,79,255,253,0,0,2,255,208,15,223,255,255,0,0,0,47,208,47,192,0,63,64,0,0,7,128,127,64,0,47,192,0,0,0,1,254,0,0,15,244,0,0,0,7,254,170,170,175,253,0,0,0,31,243,255,255,253,255,192,0,0,15,195,255,255,252,127,64,14,0,3,0,0,0,0,13,0,63,208,0,0,0,0,0,0,0,127,252,0,0,0,0,0,0,0,11,255,0,0,15,255,253,0,0,1,254,0,10,79,255,255,0,0,0,44,0,15,223,255,255,64,0,0,0,0,63,192,0,47,192,0,0,0,0,191,64,0,15,224,0,0,0,1,254,0,0,11,248,0,0,0,3,252,0,0,2,254,0,0,0,31,240,0,0,0,255,208,0,29,127,255,255,255,255,255,208,0,63,175,255,255,255,255,251,64,0,63,73,255,255,255,255,244,0,0,191,0,252,47,11,194,244,0,0,254,0,252,47,11,194,244,0,1,252,0,252,47,11,194,244,0,3,248,0,252,47,11,194,244,0,7,244,0,252,47,11,194,244,0,15,240,0,252,47,11,194,244,0,31,208,127,255,255,255,255,255,224,47,192,127,255,255,255,255,255,224,11,128,127,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x6ed1 滑 + 209,110,33,34,50,36,1,253,0,64,0,0,0,0,0,0,0,2,248,0,26,170,170,170,144,0,7,255,64,31,255,255,255,224,0,1,255,240,31,255,255,255,224,0,0,31,244,31,128,0,7,224,0,0,2,224,31,128,0,7,224,0,0,0,64,31,128,255,255,224,0,0,0,0,31,128,255,255,224,0,0,0,0,31,128,244,11,224,0,0,0,0,31,128,244,7,224,0,8,0,0,31,128,244,7,224,0,47,128,10,191,234,250,175,250,128,127,248,15,255,255,255,255,255,192,31,255,79,255,255,255,255,255,192,1,255,79,192,0,0,0,15,192,0,46,15,192,0,0,0,15,192,0,0,15,239,255,255,255,239,192,0,0,6,175,255,255,255,234,128,0,0,0,31,234,170,175,224,0,0,0,0,31,128,0,7,224,0,0,3,192,31,128,0,7,224,0,0,7,240,31,255,255,255,224,0,0,15,240,31,255,255,255,224,0,0,31,208,31,213,85,91,224,0,0,63,192,31,128,0,7,224,0,0,127,64,31,213,85,91,224,0,0,255,0,31,255,255,255,224,0,1,254,0,31,255,255,255,224,0,3,252,0,31,128,0,7,224,0,7,244,0,31,128,0,7,224,0,15,240,0,31,128,0,7,224,0,31,208,0,31,128,6,175,224,0,3,192,0,31,128,7,255,208,0,0,0,0,31,128,3,254,64,0, + // 0x6f0f 漏 + 15,111,33,34,50,36,1,253,1,0,0,0,0,0,0,0,0,3,224,6,170,170,170,170,170,0,15,253,7,255,255,255,255,255,0,3,255,199,255,255,255,255,255,0,0,191,199,224,0,0,0,127,0,0,31,71,224,0,0,0,127,0,0,2,7,224,0,0,0,127,0,0,0,7,250,170,170,170,255,0,0,0,7,255,255,255,255,255,0,0,0,7,255,255,255,255,255,0,4,0,7,224,0,0,0,0,0,47,128,7,224,0,0,0,0,0,127,244,7,250,170,170,170,170,128,31,255,7,255,255,255,255,255,192,2,255,11,255,255,255,255,255,192,0,61,11,224,0,31,64,0,0,0,4,11,208,0,31,64,0,0,0,0,11,234,170,191,170,170,64,0,0,11,255,255,255,255,255,64,0,0,15,255,255,255,255,255,64,0,40,15,239,0,31,64,31,64,0,63,15,239,20,31,84,31,64,0,127,15,239,126,31,126,31,64,0,254,31,175,47,239,95,223,64,0,253,47,175,7,159,67,159,64,2,252,63,111,0,31,64,31,64,3,248,63,47,20,31,100,31,64,7,244,127,47,125,31,190,31,64,11,240,190,47,47,159,95,159,64,15,208,253,47,11,239,71,95,64,47,194,252,47,1,31,64,31,64,63,131,244,47,0,31,65,111,64,31,1,240,47,0,31,71,255,64,1,0,16,47,0,31,3,253,0, + // 0x6fc0 激 + 192,111,34,35,59,36,1,252,1,0,0,15,144,1,228,0,0,3,224,0,31,192,1,252,0,0,15,253,0,47,192,2,248,0,0,3,255,133,127,149,66,244,0,0,0,127,223,255,255,195,244,0,0,0,15,15,255,255,195,240,0,0,0,1,15,64,15,195,240,0,0,0,0,15,64,15,199,255,255,224,0,0,15,149,95,203,255,255,224,0,0,15,255,255,207,255,255,224,13,0,15,255,255,223,192,63,0,63,208,15,64,15,239,192,126,0,127,248,15,64,15,255,208,126,0,15,254,15,149,95,255,208,189,0,1,253,15,255,255,255,224,189,0,0,56,15,255,255,255,240,252,0,0,0,0,31,192,186,240,252,0,0,0,0,31,192,33,244,252,0,0,0,106,191,234,160,249,248,0,0,0,191,255,255,240,254,244,0,0,24,191,255,255,240,191,240,0,0,47,0,252,0,0,127,240,0,0,63,64,252,0,0,63,208,0,0,127,0,254,170,128,47,192,0,0,254,0,255,255,128,47,192,0,0,252,1,255,255,128,63,192,0,2,252,2,244,31,128,191,240,0,3,248,3,240,31,129,255,244,0,7,240,7,240,31,131,253,252,0,15,240,15,208,47,79,240,255,0,31,208,63,192,63,127,208,63,192,63,192,255,15,255,255,128,31,224,11,130,253,15,254,189,0,7,192,0,0,112,6,148,36,0,1,0,0,0,0,0,0,0,0,0,0, + // 0x706f 灯 + 111,112,33,34,50,36,2,253,0,10,128,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,15,255,255,255,255,128,0,31,192,15,255,255,255,255,128,0,31,192,15,255,255,255,255,128,0,31,192,5,85,87,249,85,0,0,31,194,144,0,3,248,0,0,47,31,195,240,0,3,248,0,0,62,31,195,224,0,3,248,0,0,62,31,203,208,0,3,248,0,0,62,31,207,192,0,3,248,0,0,61,31,207,64,0,3,248,0,0,125,31,239,0,0,3,248,0,0,188,31,238,0,0,3,248,0,0,252,31,192,0,0,3,248,0,0,248,47,128,0,0,3,248,0,0,20,47,128,0,0,3,248,0,0,0,47,128,0,0,3,248,0,0,0,63,64,0,0,3,248,0,0,0,63,128,0,0,3,248,0,0,0,63,208,0,0,3,248,0,0,0,127,244,0,0,3,248,0,0,0,191,253,0,0,3,248,0,0,0,253,191,64,0,3,248,0,0,2,252,63,208,0,3,248,0,0,3,252,15,240,0,3,248,0,0,11,244,3,208,0,3,248,0,0,15,240,1,128,0,3,248,0,0,63,208,0,0,0,3,248,0,0,255,128,0,0,191,255,244,0,0,255,0,0,0,63,255,240,0,0,60,0,0,0,47,255,208,0,0,16,0,0,0,26,84,0,0,0, + // 0x70b9 点 + 185,112,32,34,16,36,2,253,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,255,255,255,248,0,0,0,15,255,255,255,248,0,0,0,15,255,255,255,248,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,255,255,255,255,255,255,0,0,255,255,255,255,255,255,0,0,255,255,255,255,255,255,0,0,252,0,0,0,0,127,0,0,252,0,0,0,0,127,0,0,252,0,0,0,0,127,0,0,252,0,0,0,0,127,0,0,252,0,0,0,0,127,0,0,252,0,0,0,0,127,0,0,255,255,255,255,255,255,0,0,255,255,255,255,255,255,0,0,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,0,0,1,0,31,0,2,252,15,208,31,192,63,192,3,248,15,208,15,192,31,208,11,240,11,224,15,224,11,240,15,224,11,240,7,240,3,252,63,192,7,240,3,244,1,253,191,64,7,240,2,248,0,255,254,0,7,240,1,252,0,126,24,0,2,80,0,64,0,32, + // 0x70ed 热 + 237,112,33,35,59,36,2,252,0,31,128,0,15,192,0,0,0,0,47,128,0,15,192,0,0,0,0,47,128,0,15,192,0,0,0,0,47,128,0,15,192,0,0,0,0,47,128,0,15,192,0,0,0,191,255,255,175,255,255,255,0,0,191,255,255,175,255,255,255,0,0,191,255,255,175,255,255,255,0,0,0,47,128,0,15,192,63,0,0,0,47,128,0,31,192,63,0,0,0,47,128,0,31,128,63,0,0,0,47,129,64,47,128,63,0,0,0,47,255,137,47,64,63,0,0,1,191,255,223,191,64,63,0,0,191,255,255,191,255,0,63,0,0,255,255,208,7,255,0,63,0,0,255,255,128,0,255,224,63,0,0,180,47,128,0,255,252,63,0,0,0,47,128,2,255,255,47,8,0,0,47,128,7,244,191,47,75,128,0,47,128,31,240,29,31,79,192,0,47,128,127,192,0,15,207,128,31,255,66,255,64,0,15,255,64,15,255,0,253,0,0,7,255,0,15,248,0,48,0,0,1,248,0,0,0,0,0,0,0,2,0,0,0,248,0,0,1,64,47,128,0,3,252,15,208,31,192,47,208,0,7,244,11,224,15,208,15,240,0,15,240,7,240,11,240,7,248,0,47,192,7,240,7,240,2,252,0,127,128,7,240,3,244,0,255,0,255,0,3,240,3,248,0,191,0,44,0,2,144,1,144,0,56,0,0,0,0,0,0,0,0,0,0, + // 0x7247 片 + 71,114,32,35,24,36,1,252,0,0,0,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,213,85,95,245,85,84,0,47,255,255,255,255,255,253,0,47,255,255,255,255,255,253,0,47,255,255,255,255,255,253,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,213,85,85,85,80,0,0,63,255,255,255,255,244,0,0,63,255,255,255,255,244,0,0,127,255,255,255,255,244,0,0,127,0,0,0,7,244,0,0,191,0,0,0,7,244,0,0,255,0,0,0,7,244,0,0,254,0,0,0,7,244,0,2,252,0,0,0,7,244,0,3,252,0,0,0,7,244,0,11,248,0,0,0,7,244,0,15,240,0,0,0,7,244,0,63,224,0,0,0,7,244,0,127,192,0,0,0,7,244,0,31,0,0,0,0,7,244,0,9,0,0,0,0,7,244,0,0,0,0,0,0,0,0,0, + // 0x7269 物 + 105,114,34,34,50,36,1,253,0,3,240,0,14,64,0,0,0,0,3,240,0,31,128,0,0,0,11,131,240,0,47,64,0,0,0,15,195,240,0,63,0,0,0,0,15,195,240,0,63,0,0,0,0,15,195,240,0,190,0,0,0,0,15,131,240,0,255,255,255,255,208,31,255,255,209,255,255,255,255,192,31,255,255,211,255,255,255,255,192,47,255,255,215,240,126,15,207,192,63,7,240,15,224,188,31,143,192,62,3,240,31,192,252,47,79,192,125,3,240,63,129,248,63,15,192,252,3,240,255,2,244,63,15,192,44,3,240,125,3,240,126,31,192,0,3,240,4,11,208,189,31,192,0,3,240,96,15,192,252,31,128,0,3,255,240,47,129,248,31,128,0,47,255,240,127,3,244,47,128,27,255,255,144,253,3,240,47,128,127,255,244,2,252,11,224,47,64,63,251,240,11,244,15,192,63,64,62,3,240,47,224,47,192,63,64,0,3,240,63,192,63,64,63,0,0,3,240,15,0,191,0,63,0,0,3,240,0,1,253,0,127,0,0,3,240,0,3,248,0,127,0,0,3,240,0,15,240,0,190,0,0,3,240,0,47,208,0,253,0,0,3,240,0,191,128,2,252,0,0,3,240,3,255,3,255,252,0,0,3,240,1,252,2,255,244,0,0,3,240,0,32,1,255,208,0,0,3,240,0,0,0,0,0,0, + // 0x7279 特 + 121,114,34,34,50,36,1,253,0,3,240,0,0,31,192,0,0,0,3,240,0,0,31,192,0,0,10,67,240,0,0,31,192,0,0,15,195,240,0,0,31,192,0,0,15,195,240,3,255,255,255,255,0,15,195,240,3,255,255,255,255,0,15,131,240,3,255,255,255,255,0,31,239,250,128,0,31,192,0,0,31,255,255,208,0,31,192,0,0,47,255,255,208,0,31,192,0,0,63,91,245,64,0,31,192,0,0,62,3,240,63,255,255,255,255,208,125,3,240,63,255,255,255,255,208,252,3,240,63,255,255,255,255,208,124,3,240,0,0,0,15,208,0,4,3,240,0,0,0,15,208,0,0,3,241,176,0,0,15,208,0,0,3,255,240,0,0,15,208,0,0,111,255,255,255,255,255,255,192,47,255,255,111,255,255,255,255,192,127,255,240,47,255,255,255,255,192,63,251,240,0,0,0,15,208,0,57,3,240,0,180,0,15,208,0,0,3,240,2,252,0,15,208,0,0,3,240,0,255,0,15,208,0,0,3,240,0,63,128,15,208,0,0,3,240,0,31,208,15,208,0,0,3,240,0,11,240,15,208,0,0,3,240,0,3,128,15,208,0,0,3,240,0,0,0,15,208,0,0,3,240,0,0,21,95,192,0,0,3,240,0,0,63,255,192,0,0,3,240,0,0,47,255,128,0,0,3,240,0,0,31,249,0,0, + // 0x7387 率 + 135,115,32,35,24,36,2,252,0,0,0,11,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,0,0,0,63,64,0,0,0,2,0,0,190,0,0,3,208,31,208,1,252,7,64,15,244,31,248,31,240,15,208,63,208,2,255,127,208,63,65,255,0,0,127,95,240,190,3,248,0,0,28,3,254,248,0,80,0,0,0,0,191,241,64,0,0,0,0,64,47,207,193,128,0,0,27,192,127,7,247,248,0,1,255,209,252,3,255,255,64,111,255,255,255,255,252,191,240,255,228,191,255,255,254,15,253,126,0,127,255,165,127,2,254,32,0,0,15,224,30,0,116,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0,0, + // 0x73af 环 + 175,115,33,32,32,36,1,253,127,255,253,63,255,255,255,255,192,127,255,253,63,255,255,255,255,192,127,255,253,63,255,255,255,255,192,0,126,0,0,0,31,208,0,0,0,126,0,0,0,63,192,0,0,0,126,0,0,0,63,128,0,0,0,126,0,0,0,191,0,0,0,0,126,0,0,0,255,0,0,0,0,126,0,0,2,254,0,0,0,0,126,0,0,3,254,16,0,0,0,126,0,0,11,255,188,0,0,63,255,248,0,15,255,254,0,0,63,255,248,0,63,254,191,64,0,63,255,248,0,191,254,63,192,0,0,126,0,1,255,190,15,240,0,0,126,0,3,253,190,7,248,0,0,126,0,15,248,190,2,253,0,0,126,0,63,240,190,0,255,0,0,126,0,255,192,190,0,127,192,0,126,0,191,64,190,0,47,64,0,126,0,45,0,190,0,12,0,0,126,24,4,0,190,0,0,0,0,127,253,0,0,190,0,0,0,1,191,253,0,0,190,0,0,0,111,255,248,0,0,190,0,0,0,191,254,64,0,0,190,0,0,0,127,208,0,0,0,190,0,0,0,52,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0, + // 0x7528 用 + 40,117,31,32,0,36,1,252,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,252,0,191,0,1,252,0,1,252,0,191,0,1,252,0,1,252,0,191,0,1,252,0,1,252,0,191,0,1,252,0,1,252,0,191,0,1,252,0,1,252,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,252,0,191,0,1,252,0,1,252,0,191,0,1,252,0,1,252,0,190,0,1,252,0,1,252,0,190,0,1,252,0,1,252,0,190,0,1,252,0,1,252,0,190,0,1,252,0,1,252,0,191,255,255,255,255,255,252,0,255,255,255,255,255,255,252,0,255,255,255,255,255,255,252,0,252,0,1,252,0,1,252,1,252,0,1,252,0,1,252,2,252,0,1,252,0,1,252,3,248,0,1,252,0,1,252,3,244,0,1,252,0,1,252,11,240,0,1,252,0,1,252,15,224,0,1,252,0,1,252,47,192,0,1,252,0,2,252,127,192,0,1,252,31,255,252,127,0,0,1,252,15,255,244,13,0,0,1,248,11,255,144,0,0,0,0,0,0,0,0, + // 0x7535 电 + 53,117,31,34,16,36,4,253,0,0,0,169,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,253,0,0,0,0,21,85,85,254,85,85,84,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,252,0,191,0,0,253,0,0,252,0,191,0,0,253,0,0,252,0,191,0,0,253,0,0,252,0,191,0,0,253,0,0,252,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,252,0,191,0,0,254,0,1,252,0,191,0,0,253,0,0,252,0,191,0,0,253,0,0,252,0,191,0,0,253,0,0,252,0,191,0,0,253,0,0,252,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,252,0,191,85,85,254,85,85,85,0,191,0,0,253,0,0,3,224,85,0,0,253,0,0,3,248,0,0,0,254,0,0,3,244,0,0,0,254,0,0,7,244,0,0,0,255,0,0,15,240,0,0,0,191,255,255,255,224,0,0,0,127,255,255,255,192,0,0,0,31,255,255,255,0,0,0,0,0,85,85,80,0, + // 0x7565 略 + 101,117,32,35,24,36,3,252,0,0,0,0,10,64,0,0,0,0,0,0,15,208,0,0,255,255,255,0,47,192,0,0,255,255,255,0,63,128,0,0,255,255,255,0,191,255,255,208,244,124,63,1,255,255,255,240,244,124,63,3,255,255,255,208,244,124,63,15,248,0,47,192,244,124,63,63,252,0,127,0,244,124,63,255,191,0,254,0,244,124,63,253,63,130,252,0,244,124,63,180,15,219,240,0,255,255,255,16,7,255,208,0,255,255,255,0,2,255,128,0,255,255,255,0,7,255,192,0,244,124,63,0,47,255,244,0,244,124,63,0,255,215,254,0,244,124,63,11,255,1,255,228,244,124,63,191,248,0,63,255,244,124,63,255,208,0,7,254,244,124,63,255,255,255,255,252,244,124,63,255,255,255,255,224,244,124,63,31,255,255,255,208,244,124,63,15,208,0,15,208,255,255,255,15,208,0,15,208,255,255,255,15,208,0,15,208,255,255,255,15,208,0,15,208,244,0,0,15,208,0,15,208,244,0,0,15,208,0,15,208,244,0,0,15,208,0,15,208,0,0,0,15,255,255,255,208,0,0,0,15,255,255,255,208,0,0,0,15,255,255,255,208,0,0,0,15,208,0,15,208,0,0,0,0,0,0,0,0, + // 0x767d 白 + 125,118,26,34,238,36,5,253,0,0,11,228,0,0,0,0,0,15,244,0,0,0,0,0,15,240,0,0,0,0,0,31,224,0,0,0,0,0,63,192,0,0,0,85,85,127,213,85,85,80,255,255,255,255,255,255,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,254,85,85,85,85,91,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,254,85,85,85,85,91,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240, + // 0x7684 的 + 132,118,31,34,16,36,3,253,0,46,64,0,14,64,0,0,0,63,128,0,15,208,0,0,0,63,64,0,31,192,0,0,0,127,0,0,47,128,0,0,0,190,0,0,63,64,0,0,0,253,0,0,127,0,0,0,255,255,255,192,191,255,255,244,255,255,255,192,255,255,255,244,255,255,255,194,255,255,255,244,252,0,15,195,248,0,2,244,252,0,15,203,240,0,3,244,252,0,15,207,224,0,3,244,252,0,15,255,192,0,3,244,252,0,15,239,128,0,3,240,252,0,15,199,5,0,3,240,252,0,15,192,63,0,3,240,255,255,255,192,63,192,3,240,255,255,255,192,15,224,3,240,255,255,255,192,11,244,3,240,252,0,15,192,3,252,3,240,252,0,15,192,0,254,3,240,252,0,15,192,0,191,7,240,252,0,15,192,0,63,71,240,252,0,15,192,0,24,7,224,252,0,15,192,0,0,11,224,252,0,15,192,0,0,11,224,252,0,15,192,0,0,15,208,255,255,255,192,0,0,15,208,255,255,255,192,0,0,31,192,255,255,255,192,0,0,63,192,252,0,0,0,7,255,255,128,252,0,0,0,3,255,255,0,252,0,0,0,2,255,248,0,0,0,0,0,0,0,0,0, + // 0x76d1 监 + 209,118,33,34,50,36,2,253,0,0,47,128,1,228,0,0,0,6,144,47,128,2,252,0,0,0,11,224,47,128,3,248,0,0,0,11,224,47,128,3,240,0,0,0,11,224,47,128,7,240,0,0,0,11,224,47,128,15,255,255,255,0,11,224,47,128,31,255,255,255,0,11,224,47,128,47,255,255,255,0,11,224,47,128,63,64,0,0,0,11,224,47,128,191,0,0,0,0,11,224,47,129,253,7,0,0,0,11,224,47,131,252,47,192,0,0,11,224,47,139,244,47,244,0,0,11,224,47,159,224,7,253,0,0,11,224,47,135,192,1,255,128,0,11,224,47,129,64,0,63,208,0,11,208,47,128,0,0,15,224,0,0,0,47,128,0,0,7,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,255,255,255,128,0,1,255,255,255,255,255,255,128,0,1,255,255,255,255,255,255,128,0,1,252,3,240,15,192,47,128,0,1,252,3,240,15,192,47,128,0,1,252,3,240,15,192,47,128,0,1,252,3,240,15,192,47,128,0,1,252,3,240,15,192,47,128,0,1,252,3,240,15,192,47,128,0,1,252,3,240,15,192,47,128,0,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0, + // 0x76f4 直 + 244,118,32,34,16,36,2,253,0,0,0,3,248,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,0,0,0,15,240,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,208,0,0,0,0,0,63,255,255,255,255,0,15,208,63,255,255,255,255,0,15,208,63,85,85,85,191,0,15,208,63,0,0,0,127,0,15,208,63,0,0,0,127,0,15,208,63,255,255,255,255,0,15,208,63,255,255,255,255,0,15,208,63,85,85,85,191,0,15,208,63,0,0,0,127,0,15,208,63,0,0,0,127,0,15,208,63,255,255,255,255,0,15,208,63,255,255,255,255,0,15,208,63,85,85,85,191,0,15,208,63,0,0,0,127,0,15,208,63,0,0,0,127,0,15,208,63,255,255,255,255,0,15,208,63,255,255,255,255,0,15,208,21,85,85,85,85,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,255,255,255,255,255,255,255,15,255,255,255,255,255,255,255,15,255,255,255,255,255,255,255,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0, + // 0x7701 省 + 1,119,32,34,16,36,2,253,0,0,0,11,224,0,0,0,0,0,0,11,224,0,0,0,0,3,208,11,224,2,224,0,0,11,244,11,224,15,252,0,0,47,224,11,224,2,255,0,0,191,192,11,224,0,191,208,2,255,0,11,224,0,31,244,11,252,0,11,224,10,7,253,127,240,0,15,224,47,225,255,191,192,63,255,224,255,192,125,30,0,31,255,219,255,0,16,0,0,15,250,191,244,0,0,0,0,0,27,255,128,0,0,0,0,6,255,253,0,0,0,0,22,255,255,128,0,0,0,111,255,255,255,255,255,255,0,255,255,255,255,255,255,255,0,127,255,250,170,170,170,255,0,21,7,240,0,0,0,191,0,0,7,240,0,0,0,191,0,0,7,255,255,255,255,255,0,0,7,255,255,255,255,255,0,0,7,245,85,85,85,191,0,0,7,240,0,0,0,191,0,0,7,240,0,0,0,191,0,0,7,255,255,255,255,255,0,0,7,255,255,255,255,255,0,0,7,245,85,85,85,191,0,0,7,240,0,0,0,191,0,0,7,240,0,0,0,191,0,0,7,255,255,255,255,255,0,0,7,255,255,255,255,255,0,0,7,250,170,170,170,255,0,0,7,240,0,0,0,106,0, + // 0x7720 眠 + 32,119,33,32,32,36,2,253,127,255,252,15,255,255,255,253,0,127,255,252,15,255,255,255,253,0,127,255,252,15,255,255,255,253,0,126,0,252,15,192,0,0,253,0,126,0,252,15,192,0,0,253,0,126,0,252,15,192,0,0,253,0,126,0,252,15,192,0,0,253,0,127,255,252,15,255,255,255,253,0,127,255,252,15,255,255,255,253,0,127,255,252,15,255,255,255,253,0,126,0,252,15,192,15,192,0,0,126,0,252,15,192,15,192,0,0,126,0,252,15,192,15,208,0,0,126,0,252,15,192,15,208,0,0,126,0,252,15,192,11,208,0,0,127,255,252,15,255,255,255,255,64,127,255,252,15,255,255,255,255,64,127,255,252,15,255,255,255,255,64,126,0,252,15,208,7,240,0,0,126,0,252,15,192,3,240,0,0,126,0,252,15,192,3,240,0,0,126,0,252,15,192,3,244,0,0,127,0,252,15,192,2,248,0,0,127,255,252,15,192,1,252,0,0,127,255,252,15,192,0,252,7,64,127,255,252,15,192,0,253,7,192,126,0,0,15,192,105,190,11,192,126,0,0,15,255,254,63,11,192,126,0,2,255,255,254,47,223,192,0,0,3,255,255,228,15,255,128,0,0,3,255,164,0,7,255,0,0,0,1,144,0,0,1,252,0, + // 0x786e 确 + 110,120,33,35,59,36,1,252,0,0,0,0,3,144,0,0,0,0,0,0,0,7,240,0,0,0,63,255,255,244,11,224,0,0,0,63,255,255,244,15,255,254,0,0,63,255,255,244,47,255,255,192,0,0,63,64,0,63,255,255,64,0,0,63,0,0,255,0,191,0,0,0,127,0,1,252,0,252,0,0,0,190,0,3,248,3,248,0,0,0,189,0,15,255,255,255,255,64,0,252,0,63,255,255,255,255,64,0,252,0,15,255,255,255,255,64,1,252,0,3,248,11,208,63,64,2,255,255,193,248,11,208,63,64,3,255,255,193,248,11,208,63,64,7,255,255,193,248,11,208,63,64,15,244,15,193,255,255,255,255,64,15,244,15,193,255,255,255,255,64,47,244,15,193,254,175,234,191,64,63,244,15,193,248,11,208,63,64,255,244,15,193,248,11,208,63,64,127,244,15,193,248,11,208,63,64,62,244,15,194,255,255,255,255,64,2,244,15,194,255,255,255,255,64,2,244,15,195,255,255,255,255,64,2,244,15,195,240,0,0,63,64,2,255,255,199,240,0,0,63,64,2,255,255,203,224,0,0,63,64,2,255,255,223,208,0,0,63,64,2,244,0,31,192,0,0,63,64,2,244,0,63,128,0,0,63,64,2,244,0,255,0,0,63,255,0,0,0,0,125,0,0,63,255,0,0,0,0,24,0,0,47,248,0,0,0,0,0,0,0,0,0,0, + // 0x79bb 离 + 187,121,32,34,16,36,2,253,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,191,255,255,255,255,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,1,0,0,0,0,105,2,64,15,208,106,0,0,190,11,248,63,128,191,0,0,190,7,255,254,0,191,0,0,190,0,63,252,0,191,0,0,190,1,191,255,128,191,0,0,190,47,253,47,240,191,0,0,190,47,208,7,208,191,0,0,190,9,0,0,64,191,0,0,191,255,255,255,255,255,0,0,191,255,255,255,255,255,0,0,106,170,191,234,170,170,0,0,0,0,63,128,0,0,0,0,0,0,127,64,0,0,0,15,255,255,255,255,255,255,240,15,255,255,255,255,255,255,240,15,255,255,255,255,255,255,240,15,224,1,252,2,224,11,240,15,224,2,252,3,244,11,240,15,224,3,244,0,252,11,240,15,231,255,250,255,254,11,240,15,227,255,255,255,255,75,240,15,227,255,255,234,175,203,240,15,224,0,0,0,15,75,240,15,224,0,0,0,0,11,240,15,224,0,0,0,15,255,240,15,224,0,0,0,11,255,208,15,224,0,0,0,3,254,64, + // 0x79fb 移 + 251,121,34,34,50,36,1,253,0,0,1,0,0,46,64,0,0,0,0,111,128,0,63,64,0,0,0,111,255,208,0,255,0,0,0,47,255,255,144,3,255,255,248,0,63,255,244,0,15,255,255,254,0,46,159,224,0,63,255,255,252,0,0,11,224,1,255,64,3,248,0,0,11,224,31,255,128,11,240,0,0,11,224,63,255,240,47,208,0,0,11,224,15,67,253,191,128,0,63,255,255,240,0,255,254,0,0,63,255,255,240,0,63,252,0,0,63,255,255,240,0,191,224,0,0,0,31,224,0,11,255,128,0,0,0,47,224,1,191,255,248,0,0,0,63,240,15,255,219,240,0,0,0,127,252,11,254,31,224,0,0,0,255,255,3,144,63,255,255,64,1,255,255,192,0,255,255,255,208,3,251,235,240,7,255,255,255,192,7,235,227,240,31,240,0,63,128,15,203,225,208,255,208,0,191,0,47,139,224,75,255,244,1,254,0,127,11,224,15,251,254,3,252,0,190,11,224,3,192,255,207,244,0,60,11,224,0,0,47,255,208,0,36,11,224,0,0,7,255,128,0,0,11,224,0,0,11,254,0,0,0,11,224,0,0,191,244,0,0,0,11,224,0,27,255,192,0,0,0,11,224,6,255,254,0,0,0,0,11,224,63,255,224,0,0,0,0,11,224,31,253,0,0,0,0,0,11,224,14,64,0,0,0,0, + // 0x7a7a 空 + 122,122,32,33,8,36,2,254,0,0,0,11,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,0,15,224,15,208,0,252,63,0,15,208,15,208,0,252,63,0,31,192,15,208,0,252,63,0,47,192,15,208,0,252,0,0,63,128,15,208,0,0,0,0,255,0,15,208,0,248,0,7,254,0,15,224,0,252,0,127,248,0,11,255,255,248,47,255,224,0,7,255,255,244,63,255,0,0,1,255,255,208,31,228,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,0,255,255,255,255,255,255,128,0,255,255,255,255,255,255,128,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254, + // 0x7aef 端 + 239,122,34,34,50,36,1,253,0,26,0,0,0,47,64,0,0,0,63,0,0,0,47,128,0,0,0,63,0,15,192,47,128,63,0,0,63,0,15,192,47,128,63,0,0,63,0,15,192,47,128,63,0,0,63,0,15,192,47,128,63,0,0,63,0,15,192,47,128,63,0,63,255,255,15,192,47,128,63,0,63,255,255,15,255,255,255,255,0,63,255,255,15,255,255,255,255,0,0,0,0,15,255,255,255,255,0,6,0,120,0,0,0,0,0,0,31,0,190,0,0,0,0,0,0,15,64,189,127,255,255,255,255,208,15,128,252,127,255,255,255,255,208,15,128,252,127,255,255,255,255,208,11,192,252,0,0,63,64,0,0,11,192,248,0,0,127,0,0,0,11,193,244,0,0,191,0,0,0,7,209,244,31,255,255,255,255,128,7,210,240,31,255,255,255,255,128,7,211,240,31,255,255,255,255,128,7,211,224,31,131,224,188,31,128,0,3,230,159,131,224,188,31,128,0,7,255,223,131,224,188,31,128,27,255,255,239,131,224,188,31,128,191,255,254,95,131,224,188,31,128,127,254,64,31,131,224,188,31,128,62,64,0,31,131,224,188,31,128,0,0,0,31,131,224,188,31,128,0,0,0,31,131,224,188,31,128,0,0,0,31,131,224,189,191,128,0,0,0,31,131,224,188,255,64,0,0,0,26,64,0,0,254,0, + // 0x7b2c 第 + 44,123,33,34,50,36,1,253,0,46,64,0,1,244,0,0,0,0,63,64,0,3,248,0,0,0,0,191,0,0,7,240,0,0,0,0,255,255,255,79,255,255,255,192,3,255,255,255,111,255,255,255,192,11,251,254,170,255,239,250,170,128,31,225,252,1,255,3,248,0,0,63,192,253,7,252,1,252,0,0,127,64,190,3,240,0,254,0,0,13,0,96,0,144,0,100,0,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,0,2,248,0,7,240,0,0,0,0,2,248,0,7,240,0,0,0,0,2,248,0,7,240,0,0,47,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,127,0,2,248,0,0,0,0,0,191,0,2,248,0,0,0,0,0,254,0,2,248,0,0,0,0,0,255,255,255,255,255,255,255,0,1,255,255,255,255,255,255,255,0,2,255,255,255,255,255,255,255,0,1,164,1,255,248,0,0,190,0,0,0,15,251,248,0,0,254,0,0,0,191,210,248,0,0,253,0,0,11,255,2,248,0,1,252,0,1,255,244,2,248,11,255,252,0,63,255,128,2,248,3,255,244,0,31,248,0,2,248,3,255,208,0,11,128,0,2,248,0,0,0,0,0,0,0,2,244,0,0,0,0, + // 0x7b49 等 + 73,123,34,34,50,36,1,253,0,46,64,0,1,228,0,0,0,0,63,128,0,3,248,0,0,0,0,191,0,0,7,244,0,0,0,0,255,255,255,143,255,255,255,192,2,255,255,255,175,255,255,255,192,7,255,255,255,255,255,255,255,192,15,241,252,0,255,3,248,0,0,63,192,253,3,253,1,252,0,0,127,64,190,2,248,0,254,0,0,30,0,100,3,248,0,116,0,0,0,0,0,3,248,0,0,0,0,0,191,255,255,255,255,255,240,0,0,191,255,255,255,255,255,240,0,0,127,255,255,255,255,255,224,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,208,63,255,255,255,255,255,255,255,208,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,0,0,184,0,0,11,240,0,0,0,2,254,0,0,11,240,0,0,0,0,255,192,0,11,240,0,0,0,0,63,240,0,11,240,0,0,0,0,11,252,0,11,240,0,0,0,0,2,252,0,11,240,0,0,0,0,0,224,63,255,224,0,0,0,0,0,0,47,255,208,0,0,0,0,0,0,15,254,0,0,0, + // 0x7bb1 箱 + 177,123,33,35,59,36,1,252,0,47,64,0,1,248,0,0,0,0,63,128,0,3,248,0,0,0,0,127,0,0,7,244,0,0,0,0,255,255,255,75,255,255,255,192,1,255,255,255,159,255,255,255,192,3,255,255,255,191,255,255,255,192,11,241,252,0,191,71,240,0,0,15,224,253,1,255,2,252,0,0,63,192,190,3,252,0,253,0,0,127,64,127,2,248,0,191,0,0,31,0,124,0,112,0,56,0,0,0,2,248,0,0,0,0,0,0,0,2,248,0,63,255,255,255,0,0,2,248,0,63,255,255,255,0,0,2,248,0,63,255,255,255,0,47,255,255,255,63,0,0,127,0,47,255,255,255,63,0,0,127,0,47,255,255,255,63,0,0,127,0,0,11,248,0,63,255,255,255,0,0,15,252,0,63,255,255,255,0,0,47,255,0,63,170,170,255,0,0,63,255,208,63,0,0,127,0,0,191,255,244,63,0,0,127,0,1,255,250,253,63,0,0,127,0,3,246,248,255,63,255,255,255,0,15,242,248,60,63,255,255,255,0,47,194,248,20,63,170,170,255,0,191,130,248,0,63,0,0,127,0,63,2,248,0,63,0,0,127,0,12,2,248,0,63,234,170,255,0,0,2,248,0,63,255,255,255,0,0,2,248,0,63,255,255,255,0,0,2,248,0,63,0,0,127,0,0,2,248,0,42,0,0,21,0,0,0,0,0,0,0,0,0,0, + // 0x7c7b 类 + 123,124,32,35,24,36,2,252,0,0,0,11,224,0,0,0,0,31,0,11,224,0,249,0,0,127,128,11,224,2,253,0,0,47,224,11,224,7,248,0,0,11,244,11,224,15,240,0,0,3,252,11,224,63,192,0,0,2,244,15,224,47,64,0,127,255,255,255,255,255,255,254,127,255,255,255,255,255,255,254,127,255,255,255,255,255,255,254,0,0,3,255,255,192,0,0,0,0,31,255,255,244,0,0,0,0,191,219,231,254,0,0,0,7,255,75,225,255,208,0,0,127,252,11,224,63,254,64,27,255,224,11,224,7,255,249,255,255,64,11,224,0,191,254,63,244,0,5,64,16,11,252,30,64,0,11,224,254,0,100,0,0,0,15,224,191,224,0,0,0,0,15,224,11,252,0,0,0,0,15,208,1,244,0,127,255,255,255,255,255,255,255,127,255,255,255,255,255,255,255,127,255,255,255,255,255,255,255,0,0,0,255,253,0,0,0,0,0,2,254,191,64,0,0,0,0,11,252,63,224,0,0,0,0,127,244,15,253,0,0,0,27,255,208,3,255,228,0,27,255,255,0,0,191,255,233,255,255,244,0,0,31,255,255,127,254,0,0,0,0,191,253,62,64,0,0,0,0,1,188,0,0,0,0,0,0,0,0, + // 0x7d22 索 + 34,125,32,34,16,36,2,253,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,0,1,254,0,0,0,253,127,0,7,252,0,64,0,253,127,0,31,240,1,248,0,253,127,30,127,192,11,253,0,253,0,127,254,0,63,240,0,0,0,47,252,1,255,128,0,0,0,3,255,71,253,9,0,0,0,0,127,255,240,63,192,0,0,0,15,255,128,47,244,0,0,0,31,252,0,7,254,0,106,170,255,250,170,170,255,192,127,255,255,255,255,255,255,244,127,255,255,255,255,255,255,253,21,80,64,15,224,0,0,248,0,2,228,15,224,10,0,16,0,15,252,15,224,63,224,0,0,127,224,15,224,31,253,0,7,255,128,15,224,2,255,192,127,253,0,15,224,0,63,244,255,224,0,15,224,0,7,254,63,64,0,15,224,0,0,248,4,0,0,15,224,0,0,0, + // 0x7d2b 紫 + 43,125,33,35,59,36,1,252,0,0,126,0,11,224,0,0,0,0,0,126,0,11,224,0,0,0,1,80,126,0,11,224,1,180,0,3,240,127,170,139,224,111,254,0,3,240,127,255,203,251,255,249,0,3,240,127,255,203,255,255,64,0,3,240,126,0,11,255,144,0,0,3,240,126,0,11,240,0,0,0,3,240,126,0,11,224,0,10,64,3,240,126,1,75,224,0,15,192,3,240,191,255,203,240,0,31,192,27,255,255,255,199,255,255,255,192,127,255,255,254,67,255,255,255,64,127,254,148,47,128,191,255,253,0,37,0,0,191,128,0,0,0,0,0,0,2,253,0,126,0,0,0,0,11,79,244,1,255,64,0,0,0,47,255,192,11,252,0,0,0,0,47,255,64,127,224,16,0,0,0,2,255,246,255,66,248,0,0,0,0,47,255,248,2,255,0,0,0,0,7,255,208,0,127,208,0,0,0,2,255,170,171,255,244,0,63,255,255,255,255,255,255,253,0,63,255,255,255,255,255,255,255,64,63,255,255,255,248,0,0,63,192,0,0,80,3,248,0,64,14,0,0,1,253,3,248,7,244,0,0,0,11,252,3,248,11,255,0,0,0,127,240,3,248,1,255,224,0,7,255,128,3,248,0,47,252,0,63,253,0,3,248,0,3,255,64,15,224,0,3,248,0,0,191,0,2,0,0,3,248,0,0,20,0,0,0,0,0,0,0,0,0,0, + // 0x7ea2 红 + 162,126,34,33,41,36,1,254,0,2,64,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,15,240,5,85,85,85,85,0,0,31,208,15,255,255,255,255,128,0,63,192,15,255,255,255,255,128,0,127,64,15,255,255,255,255,128,0,255,0,0,0,31,208,0,0,2,252,3,64,0,31,208,0,0,3,248,11,224,0,31,208,0,0,11,240,31,240,0,31,208,0,0,31,208,63,192,0,31,208,0,0,191,255,255,64,0,31,208,0,0,191,255,254,0,0,31,208,0,0,63,255,252,0,0,31,208,0,0,41,11,244,0,0,31,208,0,0,0,31,208,0,0,31,208,0,0,0,127,128,0,0,31,208,0,0,1,254,0,0,0,31,208,0,0,7,252,22,144,0,31,208,0,0,31,255,255,208,0,31,208,0,0,127,255,255,224,0,31,208,0,0,63,255,233,0,0,31,208,0,0,46,144,0,0,0,31,208,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,31,208,0,0,0,0,27,192,0,31,208,0,0,0,107,255,192,0,31,208,0,0,127,255,255,239,255,255,255,255,208,127,255,249,95,255,255,255,255,208,127,249,0,31,255,255,255,255,208,57,0,0,5,85,85,85,85,64,0,0,0,0,0,0,0,0,0, + // 0x7ea7 级 + 167,126,34,35,59,36,1,252,0,3,128,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,15,224,47,255,255,255,208,0,0,31,192,47,255,255,255,192,0,0,63,128,47,255,255,255,192,0,0,127,0,0,63,128,63,128,0,0,254,0,0,63,64,63,64,0,1,252,4,0,63,64,127,0,0,3,244,15,128,63,64,191,0,0,7,240,31,192,63,64,254,0,0,15,208,63,128,63,0,252,0,0,47,133,191,0,63,1,252,0,0,191,255,253,0,127,2,255,254,0,127,255,252,0,127,3,255,255,64,63,239,240,0,127,131,255,255,0,16,15,208,0,191,192,0,127,0,0,63,128,0,191,208,0,254,0,0,191,0,0,255,224,0,252,0,1,253,27,192,255,240,1,252,0,3,255,255,192,255,248,3,248,0,15,255,255,129,252,253,7,240,0,127,255,228,2,248,191,15,224,0,127,249,0,3,248,63,95,192,0,62,64,0,3,244,47,255,128,0,16,0,1,199,240,15,255,0,0,0,0,111,207,224,7,254,0,0,0,11,255,239,208,7,254,0,0,1,255,255,111,192,31,255,128,0,47,255,224,63,128,127,255,224,0,63,253,0,191,2,255,79,253,0,63,144,1,254,31,253,3,255,128,40,0,3,252,127,244,0,255,208,0,0,2,248,47,128,0,47,128,0,0,0,48,13,0,0,2,0,0,0,0,0,0,0,0,0,0, + // 0x7ebf 线 + 191,126,33,34,50,36,2,253,0,9,0,0,3,240,0,0,0,0,15,192,0,3,240,184,0,0,0,31,192,0,3,241,255,64,0,0,63,128,0,3,240,63,224,0,0,127,0,0,3,240,11,208,0,0,191,0,0,3,240,1,64,0,0,253,0,0,3,240,5,164,0,2,248,0,0,3,251,255,248,0,3,240,29,6,191,255,255,252,0,15,224,63,159,255,255,254,144,0,31,192,127,15,255,249,0,0,0,63,65,254,10,83,248,0,0,0,255,255,252,0,2,248,0,0,0,255,255,244,0,2,248,0,89,0,191,255,224,0,1,253,175,254,0,16,47,192,0,6,255,255,255,0,0,127,64,27,255,255,255,228,0,0,254,0,63,255,255,144,0,0,3,252,0,63,254,253,0,32,0,11,240,107,25,0,254,0,190,0,47,255,255,0,0,190,1,253,0,255,255,255,0,0,127,3,248,0,191,255,144,0,0,127,15,240,0,127,144,0,0,0,63,191,192,0,16,0,0,0,0,63,255,0,0,0,0,2,0,0,47,252,0,0,0,1,191,0,0,127,240,0,0,0,111,255,64,3,255,224,8,0,111,255,254,0,47,255,240,15,64,255,255,128,7,255,247,252,15,64,191,224,0,191,255,65,255,111,64,116,0,0,191,244,0,255,255,0,0,0,0,62,64,0,63,254,0,0,0,0,0,0,0,7,248,0, + // 0x7ec6 细 + 198,126,33,34,50,36,1,253,0,1,208,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,7,244,11,255,255,255,255,64,0,15,240,11,255,255,255,255,64,0,31,208,11,255,255,255,255,64,0,63,192,11,229,95,213,127,64,0,127,64,11,224,15,192,63,64,0,254,0,11,224,15,192,63,64,2,252,1,11,224,15,192,63,64,3,244,3,219,224,15,192,63,64,15,224,15,251,224,15,192,63,64,63,213,175,219,224,15,192,63,64,191,255,255,139,224,15,192,63,64,127,255,255,11,224,15,192,63,64,63,167,252,11,224,15,192,63,64,0,11,244,11,255,255,255,255,64,0,31,208,11,255,255,255,255,64,0,127,64,11,255,255,255,255,64,1,254,0,11,224,15,192,63,64,7,253,111,219,224,15,192,63,64,31,255,255,235,224,15,192,63,64,127,255,255,219,224,15,192,63,64,63,255,164,11,224,15,192,63,64,46,80,0,11,224,15,192,63,64,0,0,0,11,224,15,192,63,64,0,0,0,11,224,15,192,63,64,0,0,0,91,224,15,192,63,64,0,5,191,235,224,15,192,63,64,26,255,255,235,255,255,255,255,64,127,255,255,219,255,255,255,255,64,127,254,144,11,255,255,255,255,64,58,64,0,11,224,0,0,63,64,0,0,0,11,224,0,0,63,64,0,0,0,1,64,0,0,0,0, + // 0x7ec8 终 + 200,126,34,34,50,36,1,253,0,6,64,0,1,164,0,0,0,0,11,240,0,3,252,0,0,0,0,15,224,0,7,244,0,0,0,0,31,192,0,15,240,0,0,0,0,63,128,0,47,255,255,248,0,0,127,64,0,63,255,255,253,0,0,191,0,0,255,255,255,252,0,0,253,0,2,255,0,3,244,0,3,248,9,11,255,192,15,240,0,7,240,31,239,255,224,47,192,0,15,224,63,255,199,244,127,64,0,47,192,127,47,1,254,254,0,0,191,255,254,4,0,191,252,0,0,127,255,252,0,0,63,240,0,0,63,255,240,0,0,255,252,0,0,16,15,224,0,11,255,255,64,0,0,63,192,0,127,248,191,244,0,0,191,0,7,255,208,31,255,64,1,252,0,63,254,0,3,255,240,7,244,22,111,244,16,0,127,192,31,255,255,143,64,253,0,7,64,127,255,255,128,2,255,224,0,0,63,255,233,0,0,111,253,0,0,63,144,0,0,0,2,255,64,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,8,0,0,0,0,1,128,126,64,0,0,0,0,6,255,209,255,248,0,0,0,107,255,255,208,191,255,208,0,0,191,255,254,64,2,255,254,0,0,127,254,64,0,0,27,255,224,0,57,0,0,0,0,0,191,252,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,0,144,0, + // 0x7ed3 结 + 211,126,33,34,50,36,1,253,0,6,0,0,0,31,192,0,0,0,11,224,0,0,31,192,0,0,0,15,240,0,0,31,192,0,0,0,31,208,0,0,31,192,0,0,0,63,192,0,0,31,208,0,0,0,127,64,15,255,255,255,255,192,0,255,0,15,255,255,255,255,192,1,253,0,15,255,255,255,255,192,3,248,11,128,0,31,192,0,0,11,240,31,224,0,31,192,0,0,31,208,63,192,0,31,192,0,0,127,218,191,128,0,31,192,0,0,191,255,255,0,0,31,192,0,0,127,255,252,7,255,255,255,255,0,63,175,248,7,255,255,255,255,0,0,15,240,7,255,255,255,255,0,0,63,192,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,7,252,26,208,0,0,0,0,0,31,255,255,225,255,255,255,253,0,127,255,255,225,255,255,255,253,0,63,255,233,1,255,255,255,253,0,63,148,0,1,252,0,0,253,0,0,0,0,1,252,0,0,253,0,0,0,0,1,252,0,0,253,0,0,0,5,161,252,0,0,253,0,0,27,255,241,252,0,0,253,0,111,255,255,241,252,0,0,253,0,191,255,254,65,255,255,255,253,0,127,249,0,1,255,255,255,253,0,37,0,0,1,255,255,255,253,0,0,0,0,1,252,0,0,253,0,0,0,0,1,248,0,0,169,0, + // 0x7ed9 给 + 217,126,33,34,50,36,1,253,0,6,0,0,0,41,0,0,0,0,11,224,0,0,63,64,0,0,0,15,224,0,0,191,64,0,0,0,31,192,0,0,255,192,0,0,0,63,128,0,1,255,224,0,0,0,127,64,0,3,255,240,0,0,0,255,0,0,11,242,252,0,0,1,253,0,0,31,224,254,0,0,3,248,15,64,63,192,127,128,0,7,240,47,192,255,64,47,224,0,15,208,63,131,254,0,15,248,0,47,197,191,15,252,0,3,255,0,191,255,253,63,255,255,255,255,192,127,255,252,255,255,255,255,191,128,63,239,240,63,63,255,255,79,0,16,15,224,8,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,3,248,26,131,255,255,255,240,0,15,255,255,131,255,255,255,240,0,127,255,255,131,255,255,255,240,0,63,255,164,3,244,0,7,240,0,63,144,0,3,244,0,7,240,0,0,0,0,3,244,0,7,240,0,0,0,0,3,244,0,7,240,0,0,0,6,195,244,0,7,240,0,0,27,255,195,244,0,7,240,0,43,255,255,195,244,0,7,240,0,127,255,249,3,255,255,255,240,0,63,249,0,3,255,255,255,240,0,57,0,0,3,255,255,255,240,0,0,0,0,3,244,0,7,240,0,0,0,0,3,244,0,7,240,0, + // 0x7edf 统 + 223,126,34,34,50,36,1,253,0,7,64,0,0,110,0,0,0,0,11,240,0,0,191,0,0,0,0,15,240,0,0,63,128,0,0,0,31,208,0,0,47,192,0,0,0,63,192,0,0,31,128,0,0,0,127,64,31,255,255,255,255,192,0,255,0,31,255,255,255,255,192,1,253,4,31,255,255,255,255,192,3,248,15,64,3,252,0,0,0,11,240,47,192,11,244,2,0,0,31,208,127,128,15,240,31,192,0,127,218,255,0,63,192,15,224,0,191,255,253,0,191,64,7,244,0,127,255,248,2,254,0,7,252,0,63,175,240,31,254,191,255,254,0,0,31,208,63,255,255,255,255,0,0,63,128,47,255,255,234,127,192,0,255,0,31,165,0,0,31,192,2,252,6,64,63,64,252,9,0,11,254,255,64,63,64,252,0,0,47,255,255,64,63,0,252,0,0,127,255,254,0,63,0,252,0,0,63,249,0,0,63,0,252,0,0,45,0,0,0,127,0,252,0,0,0,0,0,0,190,0,252,0,0,0,0,27,64,254,0,252,6,0,0,6,255,129,252,0,252,7,208,1,191,255,131,252,0,252,7,208,63,255,248,11,244,0,252,7,208,63,254,64,63,240,0,252,11,192,63,208,2,255,192,0,255,255,192,36,0,3,255,0,0,255,255,128,0,0,0,252,0,0,47,254,0,0,0,0,80,0,0,0,0,0, + // 0x7ee7 继 + 231,126,34,32,32,36,1,255,0,10,0,0,0,0,164,0,0,0,15,208,10,64,0,248,0,0,0,31,192,31,128,0,248,4,0,0,47,192,31,143,128,248,31,64,0,63,64,31,139,192,248,47,0,0,127,0,31,131,208,248,62,0,0,253,0,31,131,224,248,124,0,1,252,0,31,130,240,248,248,0,3,244,14,31,129,240,248,240,0,7,240,47,223,128,144,248,160,0,15,208,63,95,128,0,248,0,0,47,192,191,31,159,255,255,255,192,191,255,252,31,159,255,255,255,192,127,255,248,31,159,255,255,255,192,63,239,240,31,128,7,253,0,0,16,15,208,31,128,15,255,0,0,0,63,128,31,128,31,255,192,0,0,191,0,31,128,63,255,224,0,1,252,0,31,128,125,250,244,0,3,244,107,95,128,248,248,252,0,15,255,255,31,131,240,248,127,0,127,255,255,31,139,224,248,47,128,63,254,144,31,159,192,248,15,64,46,64,0,31,143,64,248,6,0,0,0,0,31,134,0,248,0,0,0,0,0,31,128,0,248,0,0,0,0,111,159,128,0,248,0,0,1,111,255,159,128,0,244,0,0,127,255,255,95,128,0,0,0,0,127,255,144,31,255,255,255,255,208,63,144,0,31,255,255,255,255,208,16,0,0,31,255,255,255,255,208, + // 0x7eea 绪 + 234,126,34,35,59,36,1,252,0,6,0,0,0,252,0,0,0,0,11,224,0,0,252,0,0,0,0,15,208,0,0,252,0,46,0,0,31,192,0,0,252,0,63,64,0,63,64,11,255,255,254,191,0,0,127,0,11,255,255,255,253,0,0,253,0,11,255,255,255,252,0,1,252,0,0,0,252,11,240,0,3,244,15,64,0,252,31,224,0,7,224,31,192,0,252,63,192,0,15,192,63,128,0,252,255,0,0,47,149,191,127,255,255,255,255,224,191,255,253,127,255,255,255,255,224,63,255,248,127,255,255,255,255,224,63,155,240,0,0,255,128,0,0,16,15,224,0,3,255,0,0,0,0,47,192,0,15,252,0,0,0,0,63,0,0,127,240,0,0,0,0,253,0,2,255,255,255,254,0,2,248,5,31,255,255,255,254,0,11,255,255,255,255,255,255,254,0,47,255,254,191,255,0,0,190,0,63,255,233,61,127,0,0,190,0,63,228,0,0,127,0,0,190,0,20,0,0,0,127,255,255,254,0,0,0,0,0,127,255,255,254,0,0,0,1,128,127,170,170,254,0,0,5,191,192,127,0,0,190,0,6,255,255,192,127,0,0,190,0,127,255,254,64,127,0,0,190,0,63,254,64,0,127,255,255,254,0,63,128,0,0,127,255,255,254,0,0,0,0,0,127,255,255,254,0,0,0,0,0,127,0,0,189,0,0,0,0,0,0,0,0,0,0, + // 0x7eed 续 + 237,126,33,35,59,36,1,252,0,2,0,0,0,63,64,0,0,0,7,224,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,192,3,255,255,255,248,0,0,47,128,3,255,255,255,252,0,0,63,0,3,255,255,255,252,0,0,190,0,0,0,63,64,0,0,0,252,0,0,0,63,64,0,0,2,248,29,0,0,63,64,0,0,3,240,63,111,255,255,255,255,64,11,208,127,47,255,255,255,255,64,31,192,253,31,255,255,255,255,0,127,255,252,0,0,0,0,63,0,127,255,240,0,52,15,192,126,0,63,239,224,0,255,15,192,188,0,16,31,192,0,47,223,192,252,0,0,63,64,9,7,223,192,16,0,0,190,0,31,192,79,192,0,0,1,252,26,11,244,15,192,0,0,7,251,254,1,252,15,192,0,0,15,255,254,0,52,31,192,0,0,63,255,144,127,255,255,255,255,128,63,228,0,127,255,255,255,255,128,40,0,0,127,255,255,255,255,128,0,0,6,0,0,254,0,0,0,0,1,191,0,1,252,36,0,0,0,47,255,0,7,252,254,0,0,7,255,249,0,15,240,191,128,0,127,255,128,0,127,208,47,240,0,63,244,0,2,255,64,7,252,0,62,0,0,31,253,0,0,255,0,16,0,0,255,240,0,0,63,192,0,0,0,63,128,0,0,15,128,0,0,0,24,0,0,0,2,0,0,0,0,0,0,0,0,0,0, + // 0x7eff 绿 + 255,126,34,34,50,36,1,253,0,14,0,0,0,0,0,0,0,0,15,208,3,255,255,255,252,0,0,31,192,3,255,255,255,252,0,0,63,128,3,255,255,255,252,0,0,127,64,0,0,0,0,252,0,0,191,0,0,0,0,0,252,0,0,253,0,0,0,0,0,252,0,2,252,0,1,255,255,255,252,0,3,244,29,1,255,255,255,252,0,7,240,63,65,170,170,170,252,0,15,208,127,0,0,0,1,248,0,47,192,254,0,0,0,1,248,0,191,255,252,0,0,0,2,248,0,127,255,244,15,255,255,255,255,208,63,255,240,15,255,255,255,255,208,20,31,208,15,255,255,255,255,208,0,63,128,0,0,31,192,0,0,0,191,0,1,64,31,192,8,0,1,252,0,11,224,31,192,63,128,3,244,26,7,248,31,192,255,128,15,255,254,1,254,31,195,253,0,63,255,254,0,127,31,239,240,0,63,255,148,0,44,47,255,128,0,47,144,0,0,1,255,254,0,0,0,0,0,0,11,255,255,0,0,0,0,1,0,127,239,239,192,0,0,1,190,2,255,95,207,244,0,0,111,255,31,248,31,195,254,0,31,255,253,127,208,31,192,255,224,127,255,128,47,0,31,192,47,192,63,228,0,8,0,31,192,7,64,57,0,0,0,11,255,128,0,0,0,0,0,0,7,255,64,0,0,0,0,0,0,3,249,0,0,0, + // 0x7f16 编 + 22,127,33,34,50,36,1,253,0,10,0,0,0,47,0,0,0,0,15,208,0,0,63,64,0,0,0,31,192,0,0,63,192,0,0,0,47,128,0,0,31,208,0,0,0,63,0,15,255,255,255,255,0,0,126,0,15,255,255,255,255,0,0,253,0,15,255,255,255,255,0,1,252,0,15,192,0,0,63,0,3,244,45,15,192,0,0,63,0,7,240,63,15,192,0,0,63,0,15,192,190,15,234,170,170,255,0,31,129,252,31,255,255,255,255,0,127,255,248,31,255,255,255,255,0,127,255,240,31,192,0,0,0,0,63,255,224,31,192,0,0,0,0,41,31,192,31,128,0,0,0,0,0,63,64,31,255,255,255,255,64,0,190,0,31,255,255,255,255,64,0,252,0,47,254,191,191,175,64,3,244,104,47,252,46,31,15,64,15,255,252,47,252,46,31,15,64,63,255,252,63,252,46,31,15,64,63,255,144,63,188,46,31,15,64,63,144,0,63,190,191,191,175,64,16,0,0,126,191,255,255,255,64,0,0,108,189,191,255,255,255,64,0,11,253,253,188,46,31,15,64,1,191,253,252,188,46,31,15,64,47,255,145,248,188,46,31,15,64,127,248,3,244,188,46,31,15,64,63,64,7,240,188,46,31,15,64,36,0,11,224,188,46,31,191,64,0,0,1,192,188,25,9,127,0,0,0,0,0,84,0,0,20,0, + // 0x7f3a 缺 + 58,127,34,34,50,36,1,253,2,144,0,0,0,47,128,0,0,3,244,0,0,0,47,128,0,0,3,240,0,0,0,47,128,0,0,7,240,0,0,0,47,128,0,0,11,240,0,0,0,47,128,0,0,15,255,255,252,0,47,128,0,0,15,255,255,252,191,255,255,252,0,31,255,255,252,191,255,255,252,0,47,135,240,0,191,255,255,252,0,63,71,240,0,0,47,128,252,0,191,7,240,0,0,47,128,252,0,126,7,240,0,0,47,128,252,0,8,7,240,0,0,47,128,252,0,127,255,255,254,0,47,128,252,0,127,255,255,254,0,47,128,252,0,127,255,255,254,0,47,128,252,0,0,7,240,0,0,47,128,252,0,0,7,240,0,255,255,255,255,224,26,7,240,188,255,255,255,255,224,31,7,240,188,255,255,255,255,224,31,7,240,188,0,63,240,0,0,31,7,240,188,0,127,248,0,0,31,7,240,188,0,191,252,0,0,31,7,240,188,0,254,253,0,0,31,7,240,188,1,252,191,0,0,31,7,240,188,3,252,63,64,0,31,255,255,252,11,244,63,192,0,31,255,255,252,31,224,15,240,0,31,255,255,252,127,192,11,248,0,31,0,0,189,255,64,3,254,0,31,0,0,31,254,0,0,255,208,26,0,0,47,248,0,0,127,208,0,0,0,11,208,0,0,31,128,0,0,0,2,64,0,0,2,0, + // 0x7f51 网 + 81,127,30,32,0,36,3,253,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,254,0,31,128,3,240,7,240,253,0,31,128,3,240,3,240,253,0,31,128,3,240,3,240,253,0,31,128,3,240,3,240,253,0,31,64,3,240,3,240,253,0,47,66,3,240,3,240,253,60,47,75,199,224,3,240,253,191,47,15,247,224,3,240,253,63,255,3,255,208,3,240,253,15,255,0,255,208,3,240,253,3,255,0,63,208,3,240,253,0,255,0,31,224,3,240,253,0,127,128,15,248,3,240,253,0,191,208,15,253,3,240,253,0,255,240,31,255,3,240,253,0,255,252,47,127,195,240,253,1,252,252,63,15,211,240,253,2,244,116,63,7,131,240,253,3,240,16,190,2,3,240,253,7,240,0,253,0,3,240,253,15,224,1,252,0,3,240,253,31,192,3,248,0,3,240,253,63,128,11,240,0,3,240,253,191,0,31,224,0,3,240,253,46,0,11,192,0,3,240,253,4,0,1,0,0,11,240,253,0,0,0,0,31,255,240,253,0,0,0,0,15,255,208,253,0,0,0,0,15,254,64, + // 0x7f6e 置 + 110,127,33,34,50,36,2,252,5,85,85,85,85,85,85,80,0,15,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,240,0,15,208,11,208,11,224,7,240,0,15,208,11,208,11,224,7,240,0,15,229,95,229,91,229,91,240,0,15,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,240,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,127,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,253,0,106,170,170,175,234,170,170,169,0,0,0,0,15,192,0,0,0,0,0,0,63,255,255,255,255,128,0,11,240,63,255,255,255,255,128,0,11,240,63,0,0,0,31,128,0,11,240,63,0,0,0,31,128,0,11,240,63,255,255,255,255,128,0,11,240,63,255,255,255,255,128,0,11,240,63,0,0,0,31,128,0,11,240,63,255,255,255,255,128,0,11,240,63,255,255,255,255,128,0,11,240,63,0,0,0,31,128,0,11,240,63,0,0,0,31,128,0,11,240,63,255,255,255,255,128,0,11,240,63,255,255,255,255,128,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,255,255,255,255,255,255,255,64,11,255,255,255,255,255,255,255,64,11,250,170,170,170,170,170,170,0,11,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x7f72 署 + 114,127,33,34,50,36,1,252,1,85,85,85,85,85,85,84,0,3,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,252,0,3,244,2,244,2,248,0,252,0,3,244,2,244,2,248,0,252,0,3,244,2,244,2,248,0,252,0,3,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,252,0,1,85,85,95,229,85,85,84,0,0,0,0,11,224,0,0,80,0,0,42,170,175,250,170,130,248,0,0,63,255,255,255,255,219,252,0,0,63,255,255,255,255,255,224,0,0,0,0,11,224,1,255,128,0,0,0,0,11,224,15,253,0,0,42,170,170,175,250,191,254,170,128,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,0,31,255,192,0,0,0,0,0,6,255,253,0,0,0,0,0,0,191,255,249,85,85,80,0,0,111,255,255,255,255,255,240,0,47,255,255,255,255,255,255,240,0,127,255,254,0,0,0,7,240,0,47,228,126,0,0,0,11,240,0,9,0,127,255,255,255,255,240,0,0,0,127,255,255,255,255,240,0,0,0,126,0,0,0,7,240,0,0,0,126,0,0,0,7,240,0,0,0,127,85,85,85,91,240,0,0,0,127,255,255,255,255,240,0,0,0,127,255,255,255,255,240,0,0,0,126,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0, + // 0x8005 者 + 5,128,33,34,50,36,1,253,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,144,0,0,0,0,63,64,0,2,252,0,0,0,0,63,64,0,7,248,0,0,255,255,255,255,255,159,240,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,64,0,0,0,0,63,64,3,254,0,0,0,0,0,63,64,15,248,0,0,0,0,0,63,64,63,224,0,0,0,0,0,63,64,255,192,0,0,0,0,0,63,67,255,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,0,47,248,0,0,0,0,0,0,2,255,208,0,0,0,0,0,0,47,254,0,0,0,0,0,0,2,255,255,255,255,255,128,0,0,127,255,255,255,255,255,128,0,11,255,255,255,255,255,255,128,0,191,255,254,0,0,0,63,128,0,63,244,190,0,0,0,63,128,0,30,0,190,0,0,0,63,128,0,0,0,191,255,255,255,255,128,0,0,0,191,255,255,255,255,128,0,0,0,191,170,170,170,191,128,0,0,0,190,0,0,0,63,128,0,0,0,190,0,0,0,63,128,0,0,0,190,0,0,0,63,128,0,0,0,191,255,255,255,255,128,0,0,0,191,255,255,255,255,128,0,0,0,191,255,255,255,255,128,0,0,0,190,0,0,0,47,128,0, + // 0x806a 聪 + 106,128,34,35,59,36,1,252,0,0,0,0,9,0,2,128,0,0,0,0,0,63,0,3,244,0,63,255,255,240,47,128,7,240,0,63,255,255,240,15,192,15,208,0,63,255,255,240,11,224,31,192,0,7,208,47,0,3,240,47,64,0,7,208,47,0,3,208,63,0,0,7,208,47,1,255,255,255,254,0,7,208,47,2,255,255,255,255,0,7,250,191,2,255,255,255,255,0,7,255,255,2,244,0,0,127,0,7,255,255,2,244,0,0,127,0,7,208,47,2,244,0,0,127,0,7,208,47,2,244,0,0,127,0,7,208,47,2,244,0,0,127,0,7,208,47,2,244,0,0,127,0,7,208,47,2,255,255,255,255,0,7,255,255,2,255,255,255,255,0,7,255,255,1,255,255,255,254,0,7,250,191,0,0,5,0,0,0,7,208,47,0,0,63,0,0,0,7,208,47,0,1,95,192,0,0,7,208,47,1,11,199,240,40,0,7,208,47,243,235,194,244,188,0,7,235,255,243,219,192,252,62,0,31,255,255,247,219,192,180,47,0,127,255,255,7,203,192,0,15,128,127,249,47,15,203,192,3,143,192,36,0,47,15,139,192,3,231,208,0,0,47,31,75,208,3,211,224,0,0,47,47,7,250,175,194,128,0,0,47,5,3,255,255,192,0,0,0,47,0,1,255,255,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x80fd 能 + 253,128,34,35,59,36,1,252,0,15,128,0,3,240,0,0,0,0,31,208,0,3,240,0,0,0,0,47,192,16,3,240,0,16,0,0,63,66,240,3,240,1,244,0,0,127,2,252,3,240,47,253,0,0,254,0,253,3,247,255,248,0,1,252,0,191,3,255,254,64,0,7,254,191,255,131,255,208,0,0,127,255,255,255,195,244,0,0,0,127,255,255,255,227,240,0,9,0,127,169,84,7,247,240,0,11,208,0,0,0,3,131,240,0,15,208,0,0,0,0,3,244,0,15,192,7,255,255,254,3,255,255,255,192,7,255,255,254,2,255,255,255,64,7,255,255,254,0,191,255,253,0,7,224,0,190,0,0,0,0,0,7,224,0,190,2,160,0,0,0,7,250,170,254,3,240,0,0,0,7,255,255,254,3,240,0,36,0,7,255,255,254,3,240,2,252,0,7,224,0,190,3,240,47,255,0,7,224,0,190,3,246,255,248,0,7,224,0,190,3,255,255,64,0,7,255,255,254,3,255,224,0,0,7,255,255,254,3,249,0,0,0,7,250,170,254,3,240,0,1,0,7,224,0,190,3,240,0,3,208,7,224,0,190,3,240,0,7,224,7,224,0,190,3,240,0,7,224,7,224,0,190,3,244,0,15,208,7,224,127,254,3,255,255,255,192,7,224,63,252,2,255,255,255,128,7,224,63,224,0,111,255,253,0,0,0,0,0,0,0,0,0,0, + // 0x81ea 自 + 234,129,26,35,245,36,5,252,0,0,3,232,0,0,0,0,0,7,248,0,0,0,0,0,11,240,0,0,0,0,0,15,240,0,0,0,0,0,15,208,0,0,0,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,64,0,0,0,15,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,0,0,0,0,11,240,127,0,0,0,0,11,224,0,0,0,0,0,0,0, + // 0x81f3 至 + 243,129,32,31,248,36,2,254,63,255,255,255,255,255,255,253,63,255,255,255,255,255,255,253,63,255,255,255,255,255,255,253,0,0,15,244,0,0,0,0,0,0,31,224,0,124,0,0,0,0,63,192,2,255,64,0,0,0,63,128,0,191,208,0,0,0,191,0,0,47,248,0,0,0,254,0,0,7,254,0,0,2,254,170,191,255,255,192,47,255,255,255,255,255,255,240,47,255,255,255,255,255,255,252,47,255,255,170,85,64,3,253,21,0,0,0,0,0,1,244,0,0,0,15,224,0,0,64,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,3,255,255,255,255,255,255,192,3,255,255,255,255,255,255,192,3,255,255,255,255,255,255,192,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0, + // 0x83dc 菜 + 220,131,33,34,50,36,1,253,0,0,47,128,0,47,128,0,0,0,0,47,128,0,47,128,0,0,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,0,0,47,128,0,47,128,0,0,0,0,47,128,0,47,128,0,0,0,0,26,128,0,22,175,128,0,0,0,5,86,175,255,255,224,0,11,255,255,255,255,255,255,244,0,7,255,255,255,255,254,148,0,0,3,255,254,169,84,0,1,64,0,0,0,0,6,192,0,3,248,0,0,124,0,15,208,0,11,244,0,0,255,0,11,240,0,15,224,0,0,63,128,3,244,0,47,192,0,0,47,192,3,248,0,63,128,0,0,15,224,2,224,0,191,0,0,0,11,208,2,248,0,252,0,0,0,1,0,3,248,0,20,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,1,255,255,240,0,0,0,0,0,11,255,255,253,0,0,0,0,0,127,243,248,255,128,0,0,0,7,255,131,248,63,248,0,0,0,127,253,3,248,11,255,144,0,11,255,240,3,248,0,255,254,64,127,255,64,3,248,0,31,255,192,47,248,0,3,248,0,2,255,64,15,64,0,3,248,0,0,26,0,0,0,0,3,248,0,0,0,0, + // 0x84dd 蓝 + 221,132,33,33,41,36,2,254,0,0,253,0,0,127,0,0,0,0,0,253,0,0,127,0,0,0,191,255,255,255,255,255,255,254,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,0,0,253,0,0,127,0,0,0,0,0,253,0,0,127,0,0,0,0,0,0,0,1,0,0,0,0,0,0,21,0,11,224,0,0,0,1,64,47,64,15,208,0,0,0,7,240,47,64,15,192,0,0,0,7,240,47,64,47,255,255,248,0,7,240,47,64,63,255,255,248,0,7,240,47,64,127,255,255,244,0,7,240,47,64,254,2,64,0,0,7,240,47,65,252,31,192,0,0,7,240,47,67,248,15,240,0,0,7,240,47,75,240,3,248,0,0,7,240,47,66,208,1,252,0,0,7,240,47,64,64,0,254,0,0,0,0,47,64,0,0,125,0,0,0,0,0,0,0,0,16,0,0,1,255,255,255,255,255,255,128,0,1,255,255,255,255,255,255,128,0,1,254,171,250,175,234,191,128,0,1,252,3,240,15,192,47,128,0,1,252,3,240,15,192,47,128,0,1,252,3,240,15,192,47,128,0,1,252,3,240,15,192,47,128,0,1,252,3,240,15,192,47,128,0,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64, + // 0x86c7 蛇 + 199,134,34,33,41,36,1,254,0,5,64,0,0,11,208,0,0,0,11,192,0,0,15,208,0,0,0,11,192,0,0,15,208,0,0,0,11,192,0,0,15,208,0,0,0,11,192,0,0,15,208,0,0,0,11,192,3,255,255,255,255,192,0,11,192,3,255,255,255,255,192,31,255,255,243,255,255,255,255,192,31,255,255,243,240,0,0,15,192,31,239,235,243,240,0,0,15,192,31,7,194,243,240,0,0,15,192,31,7,194,243,240,0,0,15,192,31,7,194,243,255,192,0,0,0,31,7,194,240,15,192,0,0,0,31,7,194,240,15,192,0,32,0,31,7,194,240,15,192,1,252,0,31,7,194,240,15,192,47,254,0,31,239,235,240,15,194,255,244,0,31,255,255,240,15,255,255,64,0,31,255,255,240,15,255,228,0,0,31,11,192,0,15,253,0,0,0,31,11,192,0,15,208,0,0,0,0,11,194,208,15,192,0,0,0,0,11,195,240,15,192,0,0,0,0,11,194,240,15,192,0,0,0,0,11,193,244,15,192,0,10,0,0,11,193,252,15,192,0,11,208,0,31,255,252,15,192,0,11,192,127,255,255,253,15,192,0,15,192,127,255,255,190,15,192,0,31,192,127,250,64,62,15,255,255,255,128,36,0,0,61,11,255,255,255,0,0,0,0,0,1,255,255,248,0, + // 0x884c 行 + 76,136,34,35,59,36,1,252,0,0,228,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,11,248,3,255,255,255,255,64,0,47,240,3,255,255,255,255,64,0,191,192,3,255,255,255,255,64,3,255,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,127,224,0,0,0,0,0,0,0,63,128,46,64,0,0,0,0,0,29,0,127,128,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,11,248,47,255,255,255,255,208,0,31,240,47,255,255,255,255,208,0,127,192,47,255,255,255,255,208,1,255,192,0,0,0,127,64,0,7,255,192,0,0,0,127,0,0,47,255,192,0,0,0,127,0,0,191,255,192,0,0,0,127,0,0,127,143,192,0,0,0,127,0,0,46,15,192,0,0,0,127,0,0,8,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,1,85,191,0,0,0,15,192,0,3,255,255,0,0,0,15,192,0,3,255,254,0,0,0,15,192,0,2,255,228,0,0,0,0,0,0,0,0,0,0,0, + // 0x88ab 被 + 171,136,34,34,50,36,1,253,0,47,64,0,0,11,208,0,0,0,47,128,0,0,11,224,0,0,0,47,128,0,0,11,224,0,0,0,47,128,0,0,11,224,0,0,0,47,128,0,0,11,224,0,0,0,47,128,0,0,11,224,0,0,0,47,128,3,255,255,255,255,208,63,255,255,67,255,255,255,255,192,63,255,255,195,255,255,255,255,192,63,255,255,131,240,11,224,47,128,0,0,63,3,240,11,224,63,64,0,0,190,3,240,11,224,63,0,0,1,252,3,240,11,224,126,0,0,3,244,131,240,11,224,0,0,0,15,225,247,255,255,255,254,0,0,47,211,231,255,255,255,255,0,0,191,255,199,255,255,255,254,0,2,255,255,7,255,192,0,253,0,11,255,254,7,239,208,1,252,0,47,255,191,75,231,240,3,248,0,255,239,143,203,227,244,3,244,0,127,47,139,203,210,252,15,240,0,60,47,131,79,208,253,31,208,0,16,47,128,15,192,191,63,192,0,0,47,128,31,192,63,255,64,0,0,47,128,47,128,31,254,0,0,0,47,128,63,64,15,252,0,0,0,47,128,63,0,47,254,0,0,0,47,128,191,0,255,255,208,0,0,47,128,254,7,255,127,248,0,0,47,129,252,127,252,15,255,128,0,47,131,248,255,224,2,255,208,0,47,130,240,127,64,0,127,128,0,47,128,80,36,0,0,7,0, + // 0x88c5 装 + 197,136,34,35,59,36,1,252,0,0,190,0,0,47,128,0,0,0,0,190,0,0,47,128,0,0,7,64,190,0,0,47,128,0,0,31,224,190,0,0,47,128,0,0,11,248,190,0,0,47,128,0,0,1,253,190,63,255,255,255,255,192,0,120,190,63,255,255,255,255,192,0,16,190,63,255,255,255,255,192,0,0,190,0,0,47,128,0,0,0,0,190,0,0,47,128,0,0,0,31,190,0,0,47,128,0,0,1,255,190,0,0,47,128,0,0,47,255,190,0,0,47,128,0,0,127,244,190,15,255,255,255,255,0,63,64,190,15,255,255,255,255,0,20,0,190,11,255,255,255,255,0,0,0,190,0,0,0,0,0,0,0,0,20,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,42,170,170,171,254,170,170,170,128,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,2,255,63,64,0,80,0,0,0,47,248,31,192,2,248,0,0,6,255,208,11,224,31,248,0,1,191,255,0,3,249,255,192,0,127,255,255,0,1,255,253,0,0,47,248,127,0,0,191,224,0,0,9,0,63,0,0,47,244,0,0,0,0,63,90,254,11,255,64,0,0,26,255,255,254,1,255,249,0,0,127,255,255,253,0,47,255,208,0,63,255,148,0,0,2,255,128,0,41,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0, + // 0x8981 要 + 129,137,33,34,50,36,2,252,127,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,253,0,0,0,15,208,11,208,0,0,0,0,0,15,208,11,208,0,0,0,0,0,15,208,11,208,0,0,0,10,170,175,250,175,250,170,160,0,15,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,240,0,15,208,15,208,11,208,7,240,0,15,208,15,208,11,208,7,240,0,15,208,15,208,11,208,7,240,0,15,208,15,208,11,208,7,240,0,15,250,175,250,175,250,175,240,0,15,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,240,0,0,0,3,252,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,15,224,0,0,0,0,0,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,170,171,255,170,170,191,250,170,0,0,3,252,0,0,63,192,0,0,0,11,244,0,0,191,64,0,0,0,15,244,0,2,254,0,0,0,0,63,255,249,11,252,0,0,0,0,127,255,255,255,240,0,0,0,0,5,6,255,255,244,0,0,0,0,0,1,191,255,255,228,0,0,0,90,255,255,231,255,255,144,0,127,255,255,249,0,27,255,252,0,63,255,254,64,0,0,111,244,0,46,165,0,0,0,0,1,224,0,0,0,0,0,0,0,0,0,0, + // 0x89d2 角 + 210,137,31,35,24,36,1,252,0,0,11,160,0,0,0,0,0,0,15,240,0,0,0,0,0,0,47,255,255,248,0,0,0,0,127,255,255,255,0,0,0,0,255,255,255,254,0,0,0,3,253,0,2,252,0,0,0,15,244,0,7,244,0,0,0,63,224,0,15,224,0,0,0,255,255,255,255,255,255,244,7,255,255,255,255,255,255,244,47,255,255,255,255,255,255,244,15,239,192,0,189,0,3,244,3,79,192,0,189,0,3,244,0,15,192,0,189,0,3,244,0,15,192,0,189,0,3,244,0,15,192,0,189,0,3,244,0,15,255,255,255,255,255,244,0,15,255,255,255,255,255,244,0,15,255,255,255,255,255,244,0,15,192,0,189,0,3,244,0,31,192,0,189,0,3,244,0,31,192,0,189,0,3,244,0,47,192,0,189,0,3,244,0,47,255,255,255,255,255,244,0,63,255,255,255,255,255,244,0,63,255,255,255,255,255,244,0,191,0,0,0,0,3,244,0,253,0,0,0,0,3,244,2,252,0,0,0,0,3,244,7,248,0,0,0,0,3,244,31,240,0,0,0,0,7,244,127,192,0,0,0,255,255,244,63,64,0,0,0,127,255,240,13,0,0,0,0,63,254,64,0,0,0,0,0,0,0,0, + // 0x8ba1 计 + 161,139,34,34,50,36,1,253,0,0,0,0,0,47,128,0,0,0,60,0,0,0,63,192,0,0,0,255,0,0,0,63,192,0,0,0,127,208,0,0,63,192,0,0,0,31,244,0,0,63,192,0,0,0,7,253,0,0,63,192,0,0,0,1,253,0,0,63,192,0,0,0,0,116,0,0,63,192,0,0,0,0,16,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,21,85,64,0,0,63,192,0,0,127,255,224,191,255,255,255,255,208,127,255,224,191,255,255,255,255,208,127,255,224,191,255,255,255,255,208,0,15,224,85,85,127,213,85,64,0,15,224,0,0,63,192,0,0,0,15,224,0,0,63,192,0,0,0,15,224,0,0,63,192,0,0,0,15,224,0,0,63,192,0,0,0,15,224,0,0,63,192,0,0,0,15,224,0,0,63,192,0,0,0,15,224,0,0,63,192,0,0,0,15,224,0,0,63,192,0,0,0,15,224,176,0,63,192,0,0,0,15,227,240,0,63,192,0,0,0,15,255,248,0,63,192,0,0,0,15,255,224,0,63,192,0,0,0,15,255,64,0,63,192,0,0,0,63,252,0,0,63,192,0,0,0,127,224,0,0,63,192,0,0,0,63,64,0,0,63,192,0,0,0,28,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0, + // 0x8bae 议 + 174,139,33,34,50,36,2,252,1,128,0,0,11,128,0,0,0,11,224,0,0,31,192,1,64,0,11,244,1,244,15,224,3,248,0,3,252,2,248,11,240,3,248,0,0,255,1,252,3,244,3,244,0,0,127,64,252,2,252,7,240,0,0,47,0,252,1,252,7,240,0,0,8,0,253,0,253,11,240,0,0,0,0,190,0,160,15,224,0,0,0,0,127,0,0,15,208,0,0,0,0,63,64,0,31,192,0,255,254,0,47,128,0,63,128,0,255,254,0,31,192,0,63,64,0,255,254,0,15,208,0,127,0,0,0,190,0,15,224,0,255,0,0,0,190,0,7,240,0,253,0,0,0,190,0,3,248,2,252,0,0,0,190,0,2,252,3,248,0,0,0,190,0,0,254,11,240,0,0,0,190,0,0,191,15,224,0,0,0,190,0,0,63,255,192,0,0,0,190,0,0,47,255,64,0,0,0,190,0,0,15,255,0,0,0,0,190,3,0,7,253,0,0,0,0,190,31,0,15,255,0,0,0,0,191,255,128,63,255,192,0,0,0,191,255,0,255,255,244,0,0,0,255,248,7,254,15,254,0,0,0,255,208,47,248,2,255,208,0,3,254,2,255,224,0,191,254,0,2,248,31,255,64,0,31,255,128,0,208,15,248,0,0,2,255,0,0,0,7,128,0,0,0,44,0,0,0,0,0,0,0,0,0,0, + // 0x8bbe 设 + 190,139,33,35,59,36,1,252,0,16,0,0,0,0,0,0,0,0,248,0,0,191,255,255,64,0,2,254,0,0,191,255,255,64,0,0,191,192,0,191,255,255,64,0,0,47,240,0,189,0,63,64,0,0,11,248,0,189,0,63,64,0,0,2,244,0,253,0,63,64,0,0,0,208,0,252,0,63,64,0,0,0,0,1,252,0,63,64,0,0,0,0,3,248,0,63,64,0,0,0,0,11,244,0,63,64,0,0,0,0,47,240,0,47,255,192,127,255,129,255,192,0,31,255,192,127,255,129,255,0,0,6,255,128,127,255,128,120,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,47,128,63,255,255,255,248,0,0,47,128,63,255,255,255,252,0,0,47,128,63,255,255,255,252,0,0,47,128,11,208,0,3,244,0,0,47,128,7,240,0,11,240,0,0,47,128,3,248,0,15,208,0,0,47,128,1,253,0,63,192,0,0,47,128,0,191,0,191,64,0,0,47,131,64,63,194,254,0,0,0,47,159,192,15,251,252,0,0,0,47,255,192,7,255,240,0,0,0,63,255,0,3,255,192,0,0,0,63,248,0,31,255,248,0,0,0,191,224,1,255,255,255,128,0,1,255,64,191,255,130,255,254,64,0,189,3,255,248,0,47,255,192,0,48,0,255,128,0,6,255,64,0,0,0,164,0,0,0,27,0,0,0,0,0,0,0,0,0,0, + // 0x8bd5 试 + 213,139,33,34,50,36,2,253,0,0,0,0,0,10,128,0,0,1,192,0,0,0,15,215,192,0,7,240,0,0,0,15,219,240,0,7,253,0,0,0,15,211,248,0,1,255,0,0,0,15,208,253,0,0,127,192,0,0,15,208,127,0,0,31,224,0,0,15,208,60,0,0,11,128,0,0,15,224,16,0,0,1,7,255,255,255,255,255,64,0,0,7,255,255,255,255,255,64,0,0,7,255,255,255,255,255,64,0,0,0,0,0,15,224,0,0,255,255,0,0,0,11,224,0,0,255,255,0,0,0,11,224,0,0,255,255,0,0,0,11,224,0,0,0,127,0,0,0,11,240,0,0,0,127,1,255,255,199,240,0,0,0,127,1,255,255,199,240,0,0,0,127,1,255,255,199,240,0,0,0,127,0,3,240,3,240,0,0,0,127,0,3,240,3,244,0,0,0,127,0,3,240,3,244,0,0,0,127,0,3,240,3,248,0,0,0,127,0,3,240,2,248,0,0,0,127,0,3,240,2,252,4,0,0,127,10,3,240,17,252,14,0,0,127,127,3,250,240,253,15,128,0,127,255,7,255,244,254,15,128,0,191,254,255,255,244,191,31,64,1,255,226,255,249,0,127,255,0,3,255,1,254,64,0,63,255,0,1,248,0,128,0,0,31,254,0,0,208,0,0,0,0,11,252,0,0,0,0,0,0,0,2,240,0, + // 0x8bef 误 + 239,139,34,34,50,36,1,252,0,144,0,0,0,0,0,0,0,2,244,0,15,255,255,255,252,0,3,254,0,15,255,255,255,252,0,0,255,128,15,255,255,255,252,0,0,63,224,15,192,0,0,252,0,0,15,240,15,192,0,0,252,0,0,3,208,15,192,0,0,252,0,0,1,64,15,192,0,0,252,0,0,0,0,15,255,255,255,252,0,0,0,0,15,255,255,255,252,0,127,255,128,15,255,255,255,252,0,127,255,128,0,0,0,0,0,0,127,255,128,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,47,128,47,255,255,255,255,0,0,47,128,47,255,255,255,255,0,0,47,128,47,255,255,255,255,0,0,47,128,0,0,63,0,0,0,0,47,128,0,0,63,0,0,0,0,47,128,0,0,127,0,0,0,0,47,128,255,255,255,255,255,224,0,47,128,255,255,255,255,255,224,0,47,128,255,255,255,255,255,224,0,47,129,0,1,255,192,0,0,0,47,139,64,3,255,240,0,0,0,47,255,128,7,251,244,0,0,0,47,255,128,31,242,253,0,0,0,63,253,0,127,192,255,128,0,0,191,240,3,255,64,63,244,0,0,191,128,127,253,0,31,255,64,0,61,1,255,240,0,3,255,208,0,36,0,191,128,0,0,191,128,0,0,0,52,0,0,0,11,0,0,0,0,0,0,0,0,0,0, + // 0x8bf7 请 + 247,139,34,34,50,36,1,253,0,0,0,0,0,63,0,0,0,0,208,0,0,0,63,0,0,0,3,248,0,0,0,63,0,0,0,3,254,0,63,255,255,255,255,64,0,191,128,63,255,255,255,255,64,0,47,224,21,85,191,149,85,0,0,11,240,0,0,63,0,0,0,0,2,192,31,255,255,255,253,0,0,0,0,31,255,255,255,253,0,0,0,0,5,85,127,85,84,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,127,255,129,255,255,255,255,255,208,127,255,129,255,255,255,255,255,208,127,255,128,85,85,85,85,85,64,0,31,128,0,0,0,0,0,0,0,31,128,15,255,255,255,252,0,0,31,128,15,255,255,255,252,0,0,31,128,15,234,170,170,252,0,0,31,128,15,192,0,1,252,0,0,31,128,15,192,0,1,252,0,0,31,128,15,255,255,255,252,0,0,31,128,15,255,255,255,252,0,0,31,128,15,213,85,86,252,0,0,31,130,79,192,0,1,252,0,0,31,143,143,192,0,1,252,0,0,31,255,207,255,255,255,252,0,0,47,255,79,255,255,255,252,0,0,63,252,15,213,85,86,252,0,0,127,240,15,192,0,1,252,0,0,255,128,15,192,0,1,252,0,0,189,0,15,192,2,255,248,0,0,52,0,15,192,1,255,244,0,0,0,0,15,192,0,254,64,0, + // 0x8bfb 读 + 251,139,33,35,59,36,1,252,0,0,0,0,0,127,0,0,0,0,224,0,0,0,127,0,0,0,3,248,0,0,0,127,0,0,0,3,255,0,31,255,255,255,252,0,0,191,192,47,255,255,255,252,0,0,47,240,47,255,255,255,252,0,0,11,240,0,0,127,0,0,0,0,2,192,0,0,127,0,0,0,0,0,64,0,0,127,0,0,0,0,0,0,255,255,255,255,255,64,0,0,0,255,255,255,255,255,64,0,0,0,191,255,255,255,255,0,127,255,64,0,0,0,0,63,0,127,255,64,1,208,10,64,125,0,127,255,64,3,253,31,192,252,0,0,47,64,0,191,159,192,252,0,0,47,64,20,15,239,192,16,0,0,47,64,190,2,95,128,0,0,0,47,64,47,224,31,128,0,0,0,47,64,3,248,47,128,0,0,0,47,64,0,176,63,64,0,0,0,47,66,255,255,255,255,255,192,0,47,66,255,255,255,255,255,192,0,47,66,255,255,255,255,255,192,0,47,78,0,1,253,0,0,0,0,47,191,0,3,252,48,0,0,0,47,255,64,15,244,253,0,0,0,47,253,0,63,224,255,128,0,0,63,244,0,255,192,47,240,0,0,63,208,11,255,0,7,253,0,0,255,0,127,252,0,1,255,64,0,252,3,255,224,0,0,63,192,0,48,1,255,0,0,0,15,192,0,0,0,180,0,0,0,3,0,0,0,0,0,0,0,0,0,0, + // 0x8c03 调 + 3,140,32,34,16,36,1,252,0,144,0,0,0,0,0,0,2,244,0,127,255,255,255,255,3,253,0,127,255,255,255,255,0,255,64,127,255,255,255,255,0,63,208,126,0,0,0,63,0,15,240,126,0,62,0,63,0,3,208,126,0,62,0,63,0,1,64,126,5,127,84,63,0,0,0,126,31,255,253,63,0,0,0,126,31,255,253,63,0,0,0,126,0,62,0,63,127,255,128,126,0,62,0,63,127,255,128,126,0,62,0,63,127,255,128,126,63,255,255,63,0,47,128,126,63,255,255,63,0,47,128,126,21,85,85,63,0,47,128,126,0,0,0,63,0,47,128,126,0,0,0,63,0,47,128,126,47,255,252,63,0,47,128,125,47,255,252,63,0,47,128,189,47,85,188,63,0,47,128,252,47,0,124,63,0,47,128,252,47,0,124,63,0,47,136,252,47,0,124,63,0,47,190,252,47,85,188,63,0,47,255,248,47,255,252,63,0,63,255,244,47,255,252,63,0,63,247,240,47,0,0,63,0,191,215,240,26,0,0,63,1,255,15,208,0,0,0,63,1,252,31,192,0,0,63,255,0,112,31,128,0,0,47,254,0,0,3,0,0,0,31,244,0,0,0,0,0,0,0,0, + // 0x8d25 败 + 37,141,33,35,59,36,2,252,0,0,0,0,0,64,0,0,0,0,0,0,0,0,252,0,0,0,63,255,255,244,1,252,0,0,0,63,255,255,244,2,248,0,0,0,63,255,255,244,2,244,0,0,0,63,0,1,244,3,240,0,0,0,63,0,1,244,7,240,0,0,0,63,5,65,244,11,255,255,255,0,63,11,193,244,15,255,255,255,0,63,11,193,244,31,255,255,255,0,63,11,193,244,63,128,3,224,0,63,11,193,244,63,0,7,208,0,63,11,193,244,191,0,7,208,0,63,11,193,244,255,0,11,192,0,63,11,193,247,255,0,15,192,0,63,11,193,251,255,128,15,192,0,63,11,193,246,255,192,31,128,0,63,11,193,244,207,192,47,64,0,63,11,193,244,7,224,63,0,0,63,15,193,244,3,240,63,0,0,63,15,193,244,2,248,125,0,0,63,15,193,244,0,252,252,0,0,63,15,193,244,0,191,252,0,0,63,31,129,244,0,63,244,0,0,21,47,64,0,0,47,240,0,0,0,63,8,0,0,15,224,0,0,0,126,62,0,0,47,248,0,0,0,253,63,64,0,191,254,0,0,2,252,15,192,2,253,255,64,0,11,240,11,240,11,248,63,224,0,47,208,3,248,127,224,15,252,0,255,128,0,253,255,128,3,255,64,189,0,0,160,253,0,0,190,0,52,0,0,0,32,0,0,8,0,0,0,0,0,0,0,0,0,0, + // 0x8d2a 贪 + 42,141,33,35,59,36,2,252,0,0,0,2,224,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,127,253,0,0,0,0,0,0,7,255,255,208,0,0,0,0,0,127,252,47,254,0,0,0,0,11,255,210,3,255,228,0,0,1,255,254,31,128,127,255,144,0,191,255,224,31,240,7,255,255,64,255,253,0,3,252,0,47,255,0,127,144,0,1,244,0,1,188,0,20,127,255,255,255,255,240,0,0,0,127,255,255,255,255,252,0,0,0,42,170,170,170,191,240,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,2,252,0,0,0,0,191,255,255,255,255,253,0,0,0,191,255,255,255,255,253,0,0,0,191,255,255,255,255,253,0,0,0,190,0,0,0,0,253,0,0,0,190,0,11,224,0,253,0,0,0,190,0,15,224,0,253,0,0,0,190,0,15,224,0,253,0,0,0,190,0,15,224,0,253,0,0,0,190,0,15,208,0,253,0,0,0,190,0,47,192,0,253,0,0,0,190,0,127,197,0,253,0,0,0,0,1,255,31,228,0,0,0,0,0,31,253,63,255,128,0,0,0,1,255,244,6,255,253,0,0,1,191,255,128,0,31,255,224,0,47,255,248,0,0,1,191,252,0,15,255,64,0,0,0,11,240,0,7,208,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0, + // 0x8d77 起 + 119,141,34,35,59,36,1,252,0,1,164,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,2,248,0,11,255,255,254,0,0,2,248,0,11,255,255,254,0,15,255,255,255,11,255,255,254,0,15,255,255,255,0,0,0,190,0,15,255,255,255,0,0,0,190,0,0,2,248,0,0,0,0,190,0,0,2,248,0,0,0,0,190,0,0,2,248,0,0,0,0,190,0,0,2,248,0,0,0,0,190,0,63,255,255,255,194,170,170,254,0,63,255,255,255,199,255,255,254,0,63,255,255,255,199,255,255,254,0,0,0,253,0,7,240,0,190,0,0,0,253,0,7,240,0,0,0,0,0,253,0,7,240,0,0,0,11,208,253,0,7,240,0,0,0,11,208,253,0,7,240,0,0,0,11,208,255,255,135,240,0,0,0,11,208,255,255,135,240,0,7,64,15,208,255,255,135,240,0,7,224,15,224,253,0,7,240,0,11,208,15,240,253,0,7,240,0,11,208,15,240,253,0,7,240,0,31,192,15,252,253,0,3,255,255,255,192,31,253,253,0,2,255,255,255,64,31,255,253,0,0,191,255,253,0,47,175,253,0,0,0,0,0,0,63,79,255,229,80,0,0,0,64,63,2,255,255,255,255,255,255,208,191,0,47,255,255,255,255,255,192,253,0,0,111,255,255,255,255,128,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x8d85 超 + 133,141,34,34,50,36,1,253,0,3,244,0,0,0,0,0,0,0,3,244,0,63,255,255,255,64,0,3,244,0,63,255,255,255,64,0,3,244,0,63,255,255,255,64,31,255,255,254,0,63,64,63,64,31,255,255,254,0,63,0,63,0,31,255,255,254,0,127,0,63,0,0,3,244,0,0,190,0,63,0,0,3,244,0,0,252,0,63,0,0,3,244,0,2,248,0,127,0,0,3,244,0,11,244,0,254,0,63,255,255,255,111,224,255,253,0,63,255,255,255,255,128,127,252,0,63,255,255,255,254,0,42,144,0,0,1,248,0,20,0,0,0,0,0,1,248,0,10,170,170,169,0,10,129,248,0,15,255,255,254,0,11,209,248,0,15,255,255,254,0,15,193,248,0,15,192,0,190,0,15,193,255,255,15,192,0,190,0,15,193,255,255,15,192,0,190,0,15,193,255,255,15,192,0,190,0,15,209,248,0,15,192,0,190,0,15,241,248,0,15,192,0,190,0,15,241,248,0,15,234,170,254,0,15,253,248,0,15,255,255,254,0,31,255,248,0,15,255,255,254,0,47,255,248,0,0,0,0,0,0,47,111,252,0,0,0,0,0,0,63,15,255,229,80,0,0,1,64,127,2,255,255,255,255,255,255,208,190,0,47,255,255,255,255,255,192,188,0,0,111,255,255,255,255,128,8,0,0,0,0,0,0,0,0, + // 0x8ddd 距 + 221,141,34,33,41,36,1,253,11,255,255,244,0,0,0,0,0,15,255,255,244,127,255,255,255,192,15,255,255,244,127,255,255,255,192,15,192,3,244,127,255,255,255,192,15,192,3,244,127,0,0,0,0,15,192,3,244,127,0,0,0,0,15,192,3,244,127,0,0,0,0,15,192,3,244,127,0,0,0,0,15,192,3,244,127,0,0,0,0,15,255,255,244,127,255,255,254,0,15,255,255,244,127,255,255,254,0,15,255,255,244,127,255,255,254,0,0,3,240,0,127,0,0,190,0,0,3,240,0,127,0,0,190,0,0,3,240,0,127,0,0,190,0,15,195,240,0,127,0,0,190,0,15,195,240,0,127,0,0,190,0,15,195,255,252,127,0,0,190,0,15,195,255,252,127,0,0,190,0,15,195,255,252,127,255,255,254,0,15,195,240,0,127,255,255,254,0,15,195,240,0,127,255,255,254,0,15,195,240,0,127,0,0,0,0,15,195,240,0,127,0,0,0,0,15,195,240,4,127,0,0,0,0,15,195,246,253,127,0,0,0,0,15,199,255,253,127,0,0,0,0,31,255,255,253,127,0,0,0,0,191,255,254,64,127,255,255,255,224,191,254,64,0,127,255,255,255,224,126,64,0,0,127,255,255,255,224,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0, + // 0x8f6c 转 + 108,143,34,35,59,36,1,252,0,15,128,0,0,7,224,0,0,0,15,192,0,0,11,240,0,0,0,31,192,0,0,11,224,0,0,0,47,128,0,0,15,208,0,0,127,255,255,241,255,255,255,255,0,127,255,255,241,255,255,255,255,0,127,255,255,241,255,255,255,255,0,0,190,0,0,0,63,64,0,0,0,252,0,0,0,127,0,0,0,0,252,0,0,0,191,0,0,0,1,249,248,0,0,254,0,0,0,2,241,252,11,255,255,255,255,208,3,241,252,11,255,255,255,255,208,7,209,252,11,255,255,255,255,208,11,193,252,0,3,248,0,0,0,15,193,252,0,3,244,0,0,0,63,255,255,240,11,240,0,0,0,47,255,255,240,15,240,0,0,0,31,255,255,240,15,255,255,254,0,4,1,252,0,31,255,255,255,0,0,1,252,0,63,255,255,252,0,0,1,252,0,0,0,7,248,0,0,1,253,108,0,0,15,240,0,0,2,255,252,0,0,63,192,0,26,255,255,252,2,128,127,64,0,127,255,255,232,11,244,254,0,0,63,255,252,0,15,255,252,0,0,62,65,252,0,1,255,240,0,0,0,1,252,0,0,63,248,0,0,0,1,252,0,0,11,255,0,0,0,1,252,0,0,1,255,192,0,0,1,252,0,0,0,63,240,0,0,1,252,0,0,0,15,192,0,0,1,248,0,0,0,3,64,0,0,0,0,0,0,0,0,0,0, + // 0x8f6f 软 + 111,143,34,35,59,36,1,252,0,2,160,0,0,228,0,0,0,0,3,244,0,1,252,0,0,0,0,7,240,0,1,252,0,0,0,0,11,240,0,2,248,0,0,0,63,255,255,255,3,244,0,0,0,63,255,255,255,3,244,0,0,0,63,255,255,255,3,255,255,255,208,0,47,128,0,7,255,255,255,208,0,63,0,0,11,255,255,255,192,0,127,0,0,15,208,0,31,192,0,190,21,0,31,192,0,31,128,0,253,63,0,63,128,0,47,64,1,252,63,0,127,71,224,63,0,2,248,63,0,255,7,224,63,0,3,240,63,1,253,7,224,126,0,11,240,63,0,188,11,224,125,0,31,255,255,255,20,11,224,4,0,31,255,255,255,0,11,224,0,0,15,255,255,255,0,11,240,0,0,4,0,63,0,0,15,240,0,0,0,0,63,0,0,15,244,0,0,0,0,63,0,0,31,248,0,0,0,0,63,1,0,47,252,0,0,0,0,127,255,64,63,253,0,0,26,255,255,255,64,127,191,0,0,127,255,255,254,0,255,63,64,0,63,255,255,64,1,253,47,192,0,62,148,63,0,3,252,15,224,0,0,0,63,0,15,240,11,244,0,0,0,63,0,47,224,3,253,0,0,0,63,0,255,128,1,255,128,0,0,63,3,255,0,0,127,208,0,0,63,1,252,0,0,31,128,0,0,63,0,96,0,0,3,0,0,0,0,0,0,0,0,0,0, + // 0x8f74 轴 + 116,143,33,35,59,36,1,252,0,14,128,0,0,11,224,0,0,0,31,192,0,0,11,224,0,0,0,31,192,0,0,11,224,0,0,0,47,128,0,0,11,224,0,0,63,255,255,240,0,11,224,0,0,63,255,255,240,0,11,224,0,0,63,255,255,240,0,11,224,0,0,0,190,0,0,0,11,224,0,0,0,252,0,1,255,255,255,255,64,0,252,0,1,255,255,255,255,64,1,248,252,1,255,255,255,255,64,2,244,252,1,248,11,224,47,64,3,240,252,1,248,11,224,47,64,3,224,252,1,248,11,224,47,64,11,208,252,1,248,11,224,47,64,15,192,252,1,248,11,224,47,64,47,255,255,241,248,11,224,47,64,47,255,255,241,248,11,224,47,64,31,255,255,241,255,255,255,255,64,4,0,252,1,255,255,255,255,64,0,0,252,1,255,255,255,255,64,0,0,252,1,248,11,224,47,64,0,0,253,161,248,11,224,47,64,0,1,255,245,248,11,224,47,64,26,255,255,245,248,11,224,47,64,127,255,255,225,248,11,224,47,64,63,255,252,1,248,11,224,47,64,62,64,252,1,248,11,224,47,64,0,0,252,1,248,11,224,47,64,0,0,252,1,255,255,255,255,64,0,0,252,1,255,255,255,255,64,0,0,252,1,255,255,255,255,64,0,0,252,1,248,0,0,47,64,0,0,252,1,248,0,0,47,64,0,0,0,0,0,0,0,0,0, + // 0x8f7d 载 + 125,143,33,35,59,36,2,252,0,0,189,0,1,252,0,0,0,0,0,253,0,1,252,30,0,0,0,0,253,0,1,252,127,128,0,15,255,255,255,225,252,47,224,0,15,255,255,255,225,252,11,244,0,10,170,255,170,145,252,3,252,0,0,0,253,0,1,252,0,224,0,0,0,253,0,1,252,0,0,0,170,170,255,170,170,254,170,170,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,0,11,144,0,0,252,0,0,0,0,15,224,0,0,252,0,0,0,0,31,192,0,0,253,1,228,0,106,191,234,170,168,253,3,244,0,191,255,255,255,252,189,3,240,0,191,255,255,255,252,190,7,224,0,0,252,0,0,0,190,15,208,0,3,248,31,192,0,127,31,192,0,7,240,31,192,0,63,63,128,0,31,255,255,255,240,63,127,0,0,31,255,255,255,240,63,254,0,0,15,255,255,255,240,47,252,0,0,4,0,31,192,0,31,248,0,0,0,0,31,192,0,31,240,0,0,0,0,31,192,0,15,224,12,0,0,0,31,255,252,47,224,15,64,26,175,255,255,252,127,240,15,128,191,255,255,255,165,255,244,31,64,127,255,255,192,3,254,252,47,0,37,64,31,192,15,244,255,127,0,0,0,31,192,63,224,191,254,0,0,0,31,192,127,128,63,253,0,0,0,31,192,29,0,7,244,0,0,0,0,0,0,0,0,0,0, + // 0x8f91 辑 + 145,143,34,34,50,36,1,253,0,14,128,0,0,0,0,0,0,0,31,192,0,255,255,255,252,0,0,47,128,0,255,255,255,252,0,0,63,64,0,254,85,86,252,0,127,255,255,240,252,0,0,252,0,127,255,255,240,252,0,0,252,0,127,255,255,240,254,85,86,252,0,0,254,0,0,255,255,255,252,0,0,252,0,0,255,255,255,252,0,0,252,0,0,0,0,0,0,0,1,249,248,0,0,0,0,0,0,2,245,248,10,170,170,170,170,128,3,241,248,15,255,255,255,255,192,7,225,248,15,255,255,255,255,192,11,209,248,0,189,0,1,252,0,15,193,248,0,189,0,1,252,0,63,255,255,224,190,85,86,252,0,47,255,255,224,191,255,255,252,0,31,255,255,224,191,255,255,252,0,4,1,248,0,189,0,1,252,0,0,1,248,0,189,0,1,252,0,0,1,248,0,189,0,1,252,0,0,1,248,16,191,255,255,252,0,0,6,255,240,191,255,255,252,0,43,255,255,244,190,85,86,252,0,127,255,255,224,189,0,1,252,0,63,255,252,0,189,0,1,254,208,62,65,248,0,190,106,255,255,208,0,1,248,47,255,255,255,255,208,0,1,248,31,255,255,255,252,0,0,1,248,31,234,84,1,252,0,0,1,248,0,0,0,1,252,0,0,1,248,0,0,0,1,252,0,0,1,248,0,0,0,1,252,0, + // 0x8f93 输 + 147,143,34,34,50,36,1,253,0,121,0,0,0,14,0,0,0,0,126,0,0,0,47,192,0,0,0,189,0,0,0,127,192,0,0,0,189,0,0,1,255,224,0,0,127,255,255,64,11,255,252,0,0,127,255,255,64,47,240,255,64,0,127,255,255,64,255,192,63,224,0,1,244,0,11,254,0,15,254,0,2,240,0,127,244,0,2,255,224,3,240,1,255,255,255,255,255,208,3,227,224,126,255,255,255,231,128,7,211,224,16,170,170,170,144,0,11,195,224,0,0,0,0,0,0,15,195,224,0,0,0,0,10,0,15,131,224,15,255,253,21,31,64,31,67,224,15,255,253,62,31,64,63,255,255,15,234,189,62,31,64,63,255,255,15,64,61,62,31,64,47,255,255,15,64,61,62,31,64,0,3,224,15,255,253,62,31,64,0,3,224,15,255,253,62,31,64,0,3,224,15,149,189,62,31,64,0,3,251,15,64,61,62,31,64,0,27,255,79,64,61,62,31,64,47,255,255,79,255,253,62,31,64,63,255,244,15,255,253,62,31,64,63,235,224,15,149,189,62,31,64,36,3,224,15,64,61,62,31,64,0,3,224,15,64,61,0,31,64,0,3,224,15,64,61,0,31,64,0,3,224,15,64,125,0,31,64,0,3,224,15,75,253,15,255,0,0,3,224,15,71,252,15,255,0,0,3,224,10,66,144,6,164,0, + // 0x8fb9 边 + 185,143,34,34,50,36,1,253,0,64,0,0,1,80,0,0,0,2,208,0,0,7,240,0,0,0,15,244,0,0,7,240,0,0,0,3,253,0,0,11,240,0,0,0,1,255,0,0,11,240,0,0,0,0,127,192,0,11,240,0,0,0,0,47,240,0,11,240,0,0,0,0,15,210,255,255,255,255,255,0,0,2,2,255,255,255,255,255,0,0,0,2,255,255,255,255,255,0,0,0,0,0,15,224,0,127,0,0,0,0,0,15,208,0,127,0,21,85,0,0,15,208,0,127,0,127,255,64,0,31,192,0,127,0,127,255,64,0,47,192,0,191,0,127,255,64,0,63,192,0,191,0,0,63,64,0,63,64,0,191,0,0,63,64,0,127,0,0,190,0,0,63,64,0,255,0,0,254,0,0,63,64,0,253,0,0,254,0,0,63,64,3,252,0,0,253,0,0,63,64,7,248,0,0,253,0,0,63,64,15,240,0,1,253,0,0,63,64,63,208,0,2,252,0,0,63,64,255,128,21,7,252,0,0,63,71,254,0,63,255,248,0,0,63,67,248,0,31,255,240,0,1,255,192,208,0,15,255,128,0,11,255,248,0,0,0,0,0,0,63,246,255,228,0,0,0,21,160,255,192,127,255,255,255,255,255,224,127,0,11,255,255,255,255,255,208,61,0,0,111,255,255,255,255,192,8,0,0,0,5,85,64,0,0, + // 0x8fc1 迁 + 193,143,34,34,50,36,1,253,0,64,0,0,0,0,0,64,0,1,244,0,0,0,0,111,240,0,7,254,0,0,1,175,255,248,0,1,255,192,107,255,255,255,228,0,0,63,242,255,255,255,228,0,0,0,11,240,255,255,252,0,0,0,0,2,192,148,0,252,0,0,0,0,0,0,0,0,252,0,0,0,7,0,0,0,0,252,0,0,0,31,224,0,0,0,252,0,0,0,31,253,0,0,0,252,0,0,0,3,255,64,0,0,252,0,0,0,0,127,192,0,0,252,0,0,0,0,31,139,255,255,255,255,255,192,0,2,11,255,255,255,255,255,192,0,0,11,255,255,255,255,255,192,0,0,0,0,0,252,0,0,0,63,255,192,0,0,252,0,0,0,63,255,192,0,0,252,0,0,0,63,255,192,0,0,252,0,0,0,0,31,192,0,0,252,0,0,0,0,31,192,0,0,252,0,0,0,0,31,192,0,0,252,0,0,0,0,31,192,0,0,252,0,0,0,0,31,192,0,0,252,0,0,0,0,31,192,0,0,252,0,0,0,0,47,192,0,0,252,0,0,0,0,191,240,0,0,252,0,0,0,3,255,253,0,0,252,0,0,0,31,253,255,144,0,0,0,0,0,191,240,127,255,234,170,170,255,208,63,128,15,255,255,255,255,255,192,45,0,1,191,255,255,255,255,192,4,0,0,0,85,85,85,85,0, + // 0x8fd0 运 + 208,143,34,34,50,36,1,253,0,64,0,0,0,0,0,0,0,2,244,0,0,0,0,0,0,0,7,254,0,63,255,255,255,252,0,1,255,192,63,255,255,255,252,0,0,47,240,63,255,255,255,252,0,0,7,224,0,0,0,0,0,0,0,1,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,64,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,31,253,7,255,255,255,255,255,224,2,255,135,255,255,255,255,255,224,0,127,135,255,255,255,255,255,224,0,14,0,0,63,192,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,127,64,8,0,0,0,0,0,0,191,0,191,0,0,63,255,64,0,254,0,127,64,0,63,255,64,1,252,0,47,192,0,63,255,64,2,252,0,15,240,0,0,63,64,3,244,0,7,248,0,0,63,64,7,240,0,2,252,0,0,63,64,15,230,175,255,254,0,0,63,67,255,255,255,255,255,0,0,63,67,255,255,255,255,255,128,0,63,67,255,254,165,0,31,192,0,63,193,80,0,0,0,15,128,0,255,224,0,0,0,0,4,0,7,255,248,0,0,0,0,0,0,47,250,255,144,0,0,0,0,0,191,224,191,255,234,170,170,255,208,63,64,31,255,255,255,255,255,192,45,0,1,191,255,255,255,255,192,0,0,0,1,86,170,165,85,0, + // 0x8fd1 近 + 209,143,34,34,50,36,1,253,0,0,0,0,0,0,1,128,0,3,64,0,0,0,1,191,240,0,31,208,0,4,5,191,255,252,0,31,248,0,15,255,255,255,208,0,7,254,0,15,255,255,164,0,0,0,255,128,15,254,80,0,0,0,0,63,208,15,192,0,0,0,0,0,15,192,15,192,0,0,0,0,0,6,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,255,255,255,255,192,0,0,0,31,255,255,255,255,192,0,0,0,31,255,255,255,255,192,0,0,0,31,192,1,252,0,0,63,255,128,31,192,1,252,0,0,63,255,128,47,128,1,252,0,0,63,255,128,63,128,1,252,0,0,0,47,128,63,64,1,252,0,0,0,47,128,127,0,1,252,0,0,0,47,128,191,0,1,252,0,0,0,47,128,253,0,1,252,0,0,0,47,130,252,0,1,252,0,0,0,47,131,248,0,1,252,0,0,0,47,143,240,0,1,252,0,0,0,47,143,208,0,1,252,0,0,0,63,195,128,0,1,252,0,0,1,255,240,0,0,1,252,0,0,11,255,254,0,0,0,0,0,0,127,248,255,249,64,0,0,85,80,127,208,63,255,255,255,255,255,208,63,64,7,255,255,255,255,255,192,28,0,0,43,255,255,255,255,128,0,0,0,0,0,0,0,0,0, + // 0x8fd4 返 + 212,143,34,33,41,36,1,253,2,0,0,0,0,0,0,0,0,31,208,0,63,255,255,255,255,0,31,244,0,63,255,255,255,255,0,7,253,0,63,255,255,255,255,0,0,255,64,63,0,0,0,0,0,0,63,192,63,0,0,0,0,0,0,15,64,63,0,0,0,0,0,0,4,0,63,0,0,0,0,0,0,0,0,127,255,255,255,248,0,0,0,0,127,255,255,255,252,0,0,0,0,127,255,255,255,248,0,0,0,0,127,127,0,3,244,0,0,0,0,127,63,0,11,240,0,63,255,64,127,47,128,15,224,0,63,255,64,190,15,192,31,192,0,63,255,64,190,15,240,63,128,0,0,63,64,253,7,244,255,0,0,0,63,64,252,2,254,254,0,0,0,63,65,252,0,255,252,0,0,0,63,66,252,0,127,240,0,0,0,63,67,244,0,127,240,0,0,0,63,71,240,2,255,254,0,0,0,63,79,240,15,255,255,192,0,0,63,95,209,255,244,191,253,0,0,63,111,203,255,192,31,255,192,0,127,199,67,254,0,2,255,128,2,255,240,1,224,0,0,47,0,11,255,253,0,0,0,0,0,0,127,245,255,229,64,0,0,21,80,191,192,127,255,255,255,255,255,208,63,0,11,255,255,255,255,255,192,44,0,0,111,255,255,255,255,128,0,0,0,0,0,0,0,0,0, + // 0x8fd8 还 + 216,143,34,33,41,36,1,253,2,208,0,0,0,0,0,0,0,15,244,1,85,85,85,85,85,0,7,253,3,255,255,255,255,255,64,1,255,67,255,255,255,255,255,64,0,127,195,255,255,255,255,255,64,0,47,240,0,0,127,128,0,0,0,15,192,0,0,255,0,0,0,0,2,0,0,1,254,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,11,252,0,0,0,0,0,0,0,47,252,0,0,0,21,85,0,0,127,252,48,0,0,127,255,64,0,255,253,252,0,0,127,255,64,3,255,253,255,0,0,127,255,64,15,250,252,127,192,0,0,63,64,63,226,252,31,240,0,0,63,65,255,194,252,7,252,0,0,63,75,255,2,252,1,255,0,0,63,111,248,2,252,0,191,192,0,63,79,224,2,252,0,47,64,0,63,67,64,2,252,0,8,0,0,63,64,0,2,252,0,0,0,0,63,64,0,2,252,0,0,0,0,63,64,0,2,252,0,0,0,0,63,64,0,2,252,0,0,0,0,127,64,0,2,252,0,0,0,3,255,224,0,2,252,0,0,0,15,255,253,0,0,0,0,0,0,63,230,255,229,0,0,0,86,160,255,128,63,255,255,255,255,255,224,127,0,11,255,255,255,255,255,208,61,0,0,111,255,255,255,255,192,8,0,0,0,5,85,64,0,0, + // 0x8fdb 进 + 219,143,34,33,41,36,1,253,2,192,0,0,253,0,127,0,0,15,240,0,0,253,0,127,0,0,11,252,0,0,253,0,127,0,0,2,254,0,0,253,0,127,0,0,0,191,128,0,253,0,127,0,0,0,63,208,0,254,0,191,0,0,0,15,194,255,255,255,255,255,0,0,3,2,255,255,255,255,255,0,0,0,2,255,255,255,255,255,0,0,0,0,0,253,0,127,0,0,0,0,0,0,253,0,127,0,0,0,0,0,0,253,0,127,0,0,63,255,128,0,253,0,127,0,0,63,255,128,0,253,0,127,0,0,63,255,128,0,253,0,191,0,0,0,47,131,255,255,255,255,255,192,0,47,131,255,255,255,255,255,192,0,47,131,255,255,255,255,255,192,0,47,128,2,252,0,127,0,0,0,47,128,3,248,0,127,0,0,0,47,128,3,244,0,127,0,0,0,47,128,11,240,0,127,0,0,0,47,128,31,224,0,127,0,0,0,47,128,63,192,0,127,0,0,0,47,128,255,64,0,127,0,0,0,63,192,191,0,0,127,0,0,1,255,240,44,0,0,127,0,0,11,255,254,0,0,0,0,0,0,47,245,255,229,0,0,0,86,144,127,192,47,255,255,255,255,255,192,63,0,2,255,255,255,255,255,192,13,0,0,27,255,255,255,255,128,4,0,0,0,0,0,0,0,0, + // 0x8fde 连 + 222,143,34,34,50,36,1,253,0,64,0,0,41,0,0,0,0,3,208,0,0,63,192,0,0,0,15,240,0,0,63,128,0,0,0,3,252,0,0,127,0,0,0,0,1,255,3,255,255,255,255,255,0,0,127,131,255,255,255,255,255,0,0,63,195,255,255,255,255,255,0,0,15,192,3,248,0,0,0,0,0,6,0,7,240,21,0,0,0,0,0,0,15,224,63,128,0,0,0,0,0,31,192,63,128,0,0,0,0,0,63,128,63,128,0,0,127,255,64,191,64,63,128,0,0,127,255,65,255,255,255,255,252,0,127,255,64,255,255,255,255,252,0,0,63,64,191,255,255,255,252,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,75,255,255,255,255,255,128,0,63,75,255,255,255,255,255,128,0,63,75,255,255,255,255,255,128,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,127,64,0,0,63,128,0,0,3,255,224,0,0,63,128,0,0,15,255,253,0,0,63,128,0,0,63,226,255,229,0,0,0,86,160,255,192,63,255,255,255,255,255,224,127,0,11,255,255,255,255,255,208,45,0,0,111,255,255,255,255,192,8,0,0,0,5,85,64,0,0, + // 0x8ff7 迷 + 247,143,34,34,50,36,1,253,0,0,0,0,0,84,0,0,0,3,64,0,0,1,252,0,0,0,31,208,0,120,1,252,0,185,0,31,248,1,252,1,252,0,254,0,7,254,0,254,1,252,1,252,0,1,255,128,127,1,252,3,248,0,0,63,208,63,129,252,7,240,0,0,15,192,47,193,252,11,224,0,0,7,0,15,193,252,31,192,0,0,0,0,15,129,252,31,64,0,0,0,0,4,1,252,1,0,0,0,0,0,0,1,252,0,0,0,0,0,15,255,255,255,255,255,192,0,0,15,255,255,255,255,255,192,63,255,143,255,255,255,255,255,192,63,255,128,0,31,255,192,0,0,63,255,128,0,63,255,224,0,0,0,47,128,0,191,255,244,0,0,0,47,128,1,253,253,253,0,0,0,47,128,7,245,252,191,0,0,0,47,128,15,241,252,63,192,0,0,47,128,127,193,252,15,244,0,0,47,129,255,65,252,7,253,0,0,47,139,253,1,252,1,255,192,0,47,143,244,1,252,0,127,128,0,47,195,208,1,252,0,15,0,0,63,208,0,1,252,0,0,0,1,255,244,0,1,252,0,0,0,11,255,254,0,0,84,0,0,0,127,244,255,249,64,0,0,85,80,127,208,63,255,255,255,255,255,208,63,0,7,255,255,255,255,255,192,28,0,0,43,255,255,255,255,128,0,0,0,0,0,0,0,0,0, + // 0x9000 退 + 0,144,34,33,41,36,1,253,3,128,0,47,255,255,255,240,0,31,240,0,47,255,255,255,240,0,11,253,0,47,255,255,255,240,0,2,255,64,47,128,0,3,240,0,0,191,192,47,128,0,3,240,0,0,47,224,47,128,0,3,240,0,0,11,128,47,255,255,255,240,0,0,1,0,47,255,255,255,240,0,0,0,0,47,234,170,171,240,0,0,0,0,47,128,0,3,240,0,0,0,0,47,128,0,3,240,0,0,0,0,47,128,0,3,240,0,0,0,0,47,255,255,255,240,0,63,255,128,47,255,255,255,240,0,63,255,128,47,255,255,255,244,0,63,255,128,47,128,126,0,62,0,0,47,128,47,128,63,1,255,64,0,47,128,47,128,47,139,253,0,0,47,128,47,128,15,255,224,0,0,47,128,47,128,11,255,0,0,0,47,128,47,128,3,252,0,0,0,47,128,47,128,25,255,0,0,0,47,128,47,155,252,191,208,0,0,47,128,127,255,252,47,253,0,0,47,195,255,255,228,7,255,192,0,63,211,255,228,0,1,255,64,1,255,246,228,0,0,0,30,0,11,255,254,0,0,0,0,0,0,127,244,255,249,64,0,0,85,80,127,208,63,255,255,255,255,255,208,63,0,7,255,255,255,255,255,192,28,0,0,43,255,255,255,255,128,0,0,0,0,0,0,0,0,0, + // 0x9009 选 + 9,144,33,35,59,36,2,252,0,0,0,0,1,248,0,0,0,8,0,0,25,2,252,0,0,0,63,0,0,47,130,252,0,0,0,191,192,0,63,66,252,0,0,0,47,240,0,127,2,252,0,0,0,11,252,0,255,255,255,255,248,0,2,255,1,255,255,255,255,248,0,0,191,3,255,255,255,255,248,0,0,56,11,240,2,252,0,0,0,0,0,31,224,2,252,0,0,0,0,0,7,192,2,252,0,0,0,0,0,0,64,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,31,255,255,255,255,255,0,255,253,31,255,255,255,255,255,0,255,253,31,255,255,255,255,255,0,255,253,0,1,252,15,208,0,0,0,253,0,2,252,15,208,0,0,0,253,0,3,248,15,208,0,0,0,253,0,3,244,15,208,0,0,0,253,0,11,240,15,208,0,0,0,253,0,15,224,15,208,29,0,0,253,0,47,208,15,208,31,64,0,253,0,191,192,15,224,47,64,0,253,3,255,0,11,224,63,64,0,253,63,252,0,11,255,255,0,0,253,47,240,0,7,255,254,0,0,255,79,64,0,1,255,248,0,2,255,240,0,0,0,0,0,0,31,255,253,0,0,0,0,0,0,127,224,255,229,0,0,21,106,64,255,128,47,255,255,255,255,255,0,190,0,6,255,255,255,255,255,0,56,0,0,26,255,255,255,234,0,0,0,0,0,0,0,0,0,0, + // 0x901f 速 + 31,144,34,34,50,36,1,253,0,0,0,0,0,252,0,0,0,2,0,0,0,0,252,0,0,0,15,208,0,0,0,252,0,0,0,47,244,0,0,0,252,0,0,0,7,254,7,255,255,255,255,255,192,1,255,135,255,255,255,255,255,192,0,63,215,255,255,255,255,255,128,0,15,128,0,0,252,0,0,0,0,1,0,0,0,252,0,0,0,0,0,0,255,255,255,255,253,0,0,0,0,255,255,255,255,253,0,0,0,0,254,170,254,170,253,0,0,0,0,252,0,252,0,253,0,0,0,0,252,0,252,0,253,0,63,255,128,252,0,252,0,253,0,63,255,128,252,0,252,0,253,0,63,255,128,255,255,255,255,253,0,0,47,128,255,255,255,255,253,0,0,47,128,170,175,255,234,169,0,0,47,128,0,47,255,192,0,0,0,47,128,0,127,255,244,0,0,0,47,128,2,253,254,253,0,0,0,47,128,11,244,252,191,128,0,0,47,128,127,208,252,47,244,0,0,47,130,255,64,252,11,255,64,0,47,207,253,0,252,1,255,128,0,63,211,240,0,252,0,63,0,1,255,245,64,0,252,0,4,0,11,255,254,0,0,168,0,0,0,127,244,255,249,64,0,0,85,80,127,208,63,255,255,255,255,255,208,63,0,7,255,255,255,255,255,192,28,0,0,43,255,255,255,255,128,0,0,0,0,0,0,0,0,0, + // 0x90e8 部 + 232,144,34,34,50,36,1,253,0,0,169,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,191,255,255,64,0,0,190,0,0,191,255,255,208,47,255,255,255,244,191,255,255,192,47,255,255,255,244,190,0,63,192,47,255,255,255,244,190,0,63,64,0,16,0,20,0,190,0,191,0,1,248,0,63,64,190,0,254,0,0,252,0,63,0,190,1,252,0,0,189,0,126,0,190,2,248,0,0,126,0,189,0,190,3,244,0,0,127,0,252,0,190,7,240,0,0,36,0,100,0,190,15,208,0,127,255,255,255,252,190,31,192,0,127,255,255,255,252,190,15,240,0,127,255,255,255,252,190,3,248,0,0,0,0,0,0,190,0,253,0,0,0,0,0,0,190,0,191,0,0,0,0,0,0,190,0,63,64,3,255,255,255,192,190,0,47,128,3,255,255,255,192,190,0,31,192,3,255,255,255,192,190,0,31,192,3,240,0,15,192,190,0,31,192,3,240,0,15,192,190,0,31,192,3,240,0,15,192,190,0,127,192,3,240,0,15,192,190,63,255,128,3,240,0,15,192,190,31,255,0,3,240,0,15,192,190,31,248,0,3,255,255,255,192,190,5,64,0,3,255,255,255,192,190,0,0,0,3,255,255,255,192,190,0,0,0,3,240,0,15,192,190,0,0,0,3,240,0,15,192,190,0,0,0, + // 0x914d 配 + 77,145,33,33,41,36,2,253,255,255,255,255,0,0,0,0,0,255,255,255,255,31,255,255,253,0,255,255,255,255,31,255,255,253,0,0,61,61,0,31,255,255,253,0,0,61,61,0,0,0,0,253,0,0,61,61,0,0,0,0,253,0,0,61,61,0,0,0,0,253,0,63,255,255,253,0,0,0,253,0,63,255,255,253,0,0,0,253,0,63,255,255,253,0,0,0,253,0,61,44,56,125,0,0,0,253,0,61,44,56,125,0,0,0,253,0,61,44,56,125,15,255,255,253,0,61,44,56,125,15,255,255,253,0,61,44,56,125,15,255,255,253,0,61,60,56,125,15,192,0,253,0,61,56,56,125,15,192,0,253,0,61,180,63,253,15,192,0,104,0,63,240,31,253,15,192,0,0,0,61,128,0,125,15,192,0,0,0,61,0,0,125,15,192,0,0,0,61,0,0,125,15,192,0,0,0,63,255,255,253,15,192,0,0,0,63,255,255,253,15,192,0,24,0,62,85,85,189,15,192,0,31,64,61,0,0,125,15,192,0,31,128,61,0,0,125,15,192,0,47,128,61,0,0,125,15,192,0,47,64,63,255,255,253,15,208,0,127,0,63,255,255,253,15,255,255,255,0,63,170,170,253,11,255,255,253,0,61,0,0,125,2,255,255,248,0,61,0,0,20,0,0,0,0,0, + // 0x91ca 释 + 202,145,34,34,50,36,1,253,0,0,0,64,0,0,0,0,0,0,1,175,240,0,0,0,0,0,43,255,255,245,255,255,255,255,64,63,255,254,145,255,255,255,255,192,63,175,208,1,255,255,255,255,0,0,11,208,0,31,64,0,254,0,25,11,208,248,15,192,3,252,0,47,11,208,248,3,240,15,240,0,15,139,210,240,1,252,63,208,0,11,203,211,224,0,191,255,64,0,7,219,219,192,0,63,253,0,0,3,75,209,64,0,191,252,0,0,0,11,208,0,11,255,255,128,0,63,255,255,241,191,253,191,249,0,63,255,255,255,255,224,15,255,224,63,255,255,251,254,0,1,255,208,0,31,224,3,208,15,208,11,192,0,63,248,0,0,15,208,0,0,0,63,254,0,0,15,208,0,0,0,255,255,128,255,255,255,254,0,1,255,239,224,255,255,255,254,0,3,251,215,244,255,255,255,254,0,11,235,210,240,0,15,208,0,0,31,203,208,128,0,15,208,0,0,127,75,208,0,0,15,208,0,0,191,11,208,7,255,255,255,255,192,61,11,208,7,255,255,255,255,192,40,11,208,7,255,255,255,255,192,0,11,208,0,0,15,208,0,0,0,11,208,0,0,15,208,0,0,0,11,208,0,0,15,208,0,0,0,11,208,0,0,15,208,0,0,0,11,208,0,0,15,208,0,0,0,11,208,0,0,15,208,0,0, + // 0x91cd 重 + 205,145,32,33,8,36,2,254,0,0,0,0,0,5,172,0,0,0,5,90,191,255,254,0,3,255,255,255,255,255,255,0,2,255,255,255,255,169,64,0,1,170,85,95,208,0,0,0,0,0,0,15,208,0,0,0,170,170,170,175,250,170,170,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,253,85,95,229,85,127,64,0,252,0,15,208,0,63,64,0,252,0,15,224,0,63,64,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,252,0,15,208,0,63,64,0,252,0,15,208,0,63,64,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,85,85,95,229,85,85,0,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,7,255,255,255,255,255,255,240,7,255,255,255,255,255,255,240,2,170,170,175,250,170,170,160,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,170,170,170,170,170, + // 0x91cf 量 + 207,145,33,32,32,36,2,254,0,127,255,255,255,255,253,0,0,0,191,255,255,255,255,254,0,0,0,190,0,0,0,0,254,0,0,0,190,0,0,0,0,254,0,0,0,191,255,255,255,255,254,0,0,0,191,255,255,255,255,254,0,0,0,190,0,0,0,0,254,0,0,0,191,255,255,255,255,254,0,0,0,191,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,85,85,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,252,0,11,224,0,63,64,0,0,252,0,11,224,0,63,64,0,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,252,0,11,224,0,63,64,0,0,252,0,11,224,0,63,64,0,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,0,0,11,224,0,0,0,0,1,85,85,95,229,85,85,64,0,3,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,192,0,0,0,0,11,224,0,0,0,0,170,170,170,175,250,170,170,170,0,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64, + // 0x9488 针 + 136,148,33,34,50,36,1,253,0,41,0,0,0,6,160,0,0,0,63,64,0,0,11,240,0,0,0,127,0,0,0,11,240,0,0,0,253,0,0,0,11,240,0,0,2,255,255,240,0,11,240,0,0,7,255,255,240,0,11,240,0,0,15,255,255,240,0,11,240,0,0,63,208,0,0,0,11,240,0,0,191,128,0,0,0,11,240,0,0,127,0,0,0,0,11,240,0,0,61,0,0,0,0,11,240,0,0,19,255,255,208,0,11,240,0,0,3,255,255,219,255,255,255,255,192,2,175,250,139,255,255,255,255,192,0,11,224,11,255,255,255,255,192,0,11,224,1,85,91,245,85,64,0,11,224,0,0,11,240,0,0,0,11,224,0,0,11,240,0,0,47,255,255,240,0,11,240,0,0,47,255,255,240,0,11,240,0,0,47,255,255,240,0,11,240,0,0,0,11,224,0,0,11,240,0,0,0,11,224,0,0,11,240,0,0,0,11,224,0,0,11,240,0,0,0,11,224,0,0,11,240,0,0,0,11,224,0,0,11,240,0,0,0,11,224,40,0,11,240,0,0,0,11,226,248,0,11,240,0,0,0,15,255,252,0,11,240,0,0,0,15,255,224,0,11,240,0,0,0,63,254,0,0,11,240,0,0,0,63,244,0,0,11,240,0,0,0,31,64,0,0,11,240,0,0,0,8,0,0,0,11,224,0,0, + // 0x94ae 钮 + 174,148,34,34,50,36,1,253,0,164,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,1,252,0,7,255,255,255,255,0,3,248,0,7,255,255,255,255,0,3,255,255,231,255,255,255,255,0,11,255,255,224,0,190,0,127,0,15,255,255,224,0,254,0,127,0,47,192,0,0,0,253,0,190,0,127,64,0,0,0,253,0,190,0,255,0,0,0,0,252,0,190,0,125,0,0,0,0,252,0,189,0,59,255,255,192,0,252,0,253,0,3,255,255,192,1,252,0,253,0,3,255,255,192,1,252,0,253,0,0,15,192,2,171,254,170,252,0,0,15,192,3,255,255,255,252,0,0,15,192,3,255,255,255,252,0,0,15,192,2,171,254,171,252,0,63,255,255,224,3,240,1,252,0,63,255,255,224,3,240,1,252,0,63,255,255,224,7,240,2,248,0,0,15,192,0,7,240,2,248,0,0,15,192,0,11,224,2,248,0,0,15,192,0,11,224,3,244,0,0,15,192,0,15,208,3,244,0,0,15,192,64,15,208,3,244,0,0,15,195,192,15,192,3,240,0,0,15,239,208,15,192,3,240,0,0,15,255,208,31,192,7,240,0,0,31,254,85,111,213,91,245,64,0,63,244,255,255,255,255,255,224,0,255,128,255,255,255,255,255,224,0,125,0,255,255,255,255,255,224,0,32,0,0,0,0,0,0,0, + // 0x9519 错 + 25,149,34,35,59,36,1,252,0,57,0,0,11,192,31,128,0,0,63,0,0,15,192,31,128,0,0,190,0,0,15,192,31,128,0,0,252,0,0,15,192,31,128,0,2,255,255,208,15,192,31,128,0,3,255,255,211,255,255,255,255,128,15,255,255,211,255,255,255,255,128,47,192,0,3,255,255,255,255,128,127,64,0,0,15,192,31,128,0,127,0,0,0,15,192,31,128,0,61,0,0,0,15,192,31,128,0,23,255,255,192,15,192,31,128,0,3,255,255,207,255,255,255,255,208,3,255,255,207,255,255,255,255,208,0,15,192,15,255,255,255,255,208,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,191,255,255,252,0,47,255,255,224,255,255,255,252,0,47,255,255,224,255,255,255,252,0,47,255,255,224,252,0,0,252,0,0,15,192,0,252,0,0,252,0,0,15,192,0,252,0,0,252,0,0,15,192,0,252,0,0,252,0,0,15,192,0,255,255,255,252,0,0,15,192,0,255,255,255,252,0,0,15,193,192,254,170,170,252,0,0,15,223,192,252,0,0,252,0,0,15,255,208,252,0,0,252,0,0,47,255,128,252,0,0,252,0,0,127,248,0,255,255,255,252,0,0,127,192,0,255,255,255,252,0,0,45,0,0,255,170,170,252,0,0,0,0,0,252,0,0,252,0,0,0,0,0,0,0,0,0,0, + // 0x955c 镜 + 92,149,34,35,59,36,1,252,0,36,0,0,0,31,128,0,0,0,127,0,0,0,15,192,0,0,0,190,0,2,170,175,250,170,0,0,253,0,3,255,255,255,255,64,2,255,255,195,255,255,255,255,64,7,255,255,192,6,128,2,64,0,15,255,255,192,15,192,11,224,0,47,192,0,0,11,208,15,192,0,127,128,0,0,7,208,31,128,0,127,0,0,15,255,255,255,255,192,62,0,0,15,255,255,255,255,192,27,255,255,79,255,255,255,255,192,3,255,255,64,0,0,0,0,0,3,255,255,64,0,0,0,0,0,0,31,192,1,255,255,255,254,0,0,31,192,1,255,255,255,254,0,0,31,192,1,248,0,0,126,0,0,31,192,1,248,0,0,126,0,63,255,255,209,255,255,255,254,0,63,255,255,209,255,255,255,254,0,63,255,255,209,248,0,0,126,0,0,31,192,1,248,0,0,126,0,0,31,192,1,255,255,255,254,0,0,31,192,1,255,255,255,254,0,0,31,192,0,7,240,127,0,0,0,31,192,128,7,224,126,0,0,0,31,199,208,11,224,126,0,0,0,31,255,224,15,208,126,1,0,0,47,255,192,47,192,126,3,208,0,63,254,0,127,64,126,3,224,0,255,240,7,255,0,127,3,224,0,191,64,191,252,0,63,255,208,0,60,0,127,224,0,63,255,192,0,16,0,46,0,0,5,85,0,0,0,0,0,0,0,0,0,0, + // 0x957f 长 + 127,149,33,34,50,36,2,253,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,120,0,0,0,7,240,0,0,1,255,64,0,0,7,240,0,0,11,253,0,0,0,7,240,0,0,63,244,0,0,0,7,240,0,1,255,208,0,0,0,7,240,0,11,255,0,0,0,0,7,240,0,191,248,0,0,0,0,7,240,11,255,208,0,0,0,0,7,240,127,254,0,0,0,0,0,7,240,47,244,0,0,0,0,0,7,240,11,64,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,85,91,245,86,253,85,85,85,0,0,7,240,0,253,0,0,0,0,0,7,240,0,191,0,0,0,0,0,7,240,0,63,64,0,0,0,0,7,240,0,63,192,0,0,0,0,7,240,0,31,240,0,0,0,0,7,240,0,11,252,0,0,0,0,7,240,0,3,254,0,0,0,0,7,240,0,0,255,192,0,0,0,7,240,0,0,127,244,0,0,0,7,240,6,244,31,254,0,0,0,7,250,255,244,7,255,228,0,0,11,255,255,248,0,255,255,64,0,47,255,255,144,0,47,255,0,0,31,255,144,0,0,2,252,0,0,15,208,0,0,0,0,24,0,0,4,0,0,0,0,0,0,0, + // 0x95ed 闭 + 237,149,30,35,24,36,3,252,1,0,0,0,0,0,0,0,47,64,0,0,0,0,0,0,63,208,31,255,255,255,255,240,15,240,31,255,255,255,255,240,7,252,31,255,255,255,255,240,1,254,0,0,0,0,7,240,0,184,0,0,0,0,3,240,0,16,0,0,63,64,3,240,84,0,0,0,63,64,3,240,253,0,0,0,63,64,3,240,253,0,0,0,63,64,3,240,253,0,0,0,63,64,3,240,253,15,255,255,255,255,195,240,253,15,255,255,255,255,195,240,253,15,255,255,255,255,195,240,253,0,0,7,255,64,3,240,253,0,0,15,255,64,3,240,253,0,0,63,255,64,3,240,253,0,0,191,191,64,3,240,253,0,2,254,63,64,3,240,253,0,11,252,63,64,3,240,253,0,63,240,63,64,3,240,253,0,255,192,63,64,3,240,253,11,255,0,63,64,3,240,253,127,248,0,63,64,3,240,253,127,224,0,63,64,3,240,253,31,0,0,63,64,3,240,253,4,0,0,127,64,3,240,253,0,0,255,255,0,3,240,253,0,0,255,255,0,3,240,253,0,0,127,228,0,7,240,253,0,0,0,0,7,255,240,253,0,0,0,0,3,255,208,253,0,0,0,0,3,255,64,0,0,0,0,0,0,0,0, + // 0x95f2 闲 + 242,149,30,34,16,36,3,253,1,0,0,0,0,0,0,0,11,128,0,0,0,0,0,0,47,208,15,255,255,255,255,240,11,244,15,255,255,255,255,240,3,252,15,255,255,255,255,240,0,255,0,0,0,0,3,240,0,127,128,0,0,0,3,240,0,47,128,0,0,0,3,240,84,13,0,26,64,0,3,240,252,0,0,47,64,0,3,240,252,0,0,47,64,0,3,240,252,0,0,47,64,0,3,240,252,0,0,47,64,0,3,240,252,31,255,255,255,255,195,240,252,31,255,255,255,255,195,240,252,31,255,255,255,255,131,240,252,0,0,255,240,0,3,240,252,0,3,255,252,0,3,240,252,0,7,255,255,0,3,240,252,0,15,239,191,192,3,240,252,0,63,111,79,240,3,240,252,0,254,47,67,252,3,240,252,3,252,47,65,254,3,240,252,31,244,47,64,127,67,240,252,63,208,47,64,47,3,240,252,31,64,47,64,8,3,240,252,8,0,47,64,0,3,240,252,0,0,47,64,0,3,240,252,0,0,47,64,0,3,240,252,0,0,47,64,0,7,240,252,0,0,5,0,127,255,240,252,0,0,0,0,63,255,224,252,0,0,0,0,47,255,64,168,0,0,0,0,0,0,0, + // 0x95f4 间 + 244,149,30,35,24,36,3,252,1,0,0,0,0,0,0,0,31,64,0,0,0,0,0,0,63,208,31,255,255,255,255,240,15,240,31,255,255,255,255,240,3,252,31,255,255,255,255,240,1,253,0,0,0,0,11,240,0,180,0,0,0,0,7,240,0,0,0,0,0,0,7,240,169,0,0,0,0,0,7,240,254,0,0,0,0,0,7,240,254,0,170,170,170,160,7,240,254,0,255,255,255,240,7,240,254,0,255,255,255,240,7,240,254,0,252,0,3,240,7,240,254,0,252,0,3,240,7,240,254,0,252,0,3,240,7,240,254,0,252,0,3,240,7,240,254,0,254,170,171,240,7,240,254,0,255,255,255,240,7,240,254,0,255,255,255,240,7,240,254,0,252,0,3,240,7,240,254,0,252,0,3,240,7,240,254,0,252,0,3,240,7,240,254,0,252,0,3,240,7,240,254,0,252,0,3,240,7,240,254,0,255,255,255,240,7,240,254,0,255,255,255,240,7,240,254,0,170,170,170,160,7,240,254,0,0,0,0,0,7,240,254,0,0,0,0,0,7,240,254,0,0,0,0,0,11,240,254,0,0,0,0,3,255,240,254,0,0,0,0,2,255,224,254,0,0,0,0,1,254,64,0,0,0,0,0,0,0,0, + // 0x9608 阈 + 8,150,30,35,24,36,3,252,3,192,0,0,0,0,0,0,15,224,15,255,255,255,255,240,7,248,15,255,255,255,255,240,2,253,15,255,255,255,255,240,0,255,64,0,0,0,11,240,0,63,192,0,0,0,7,240,0,31,128,1,240,144,7,240,84,9,0,1,242,244,7,240,253,0,0,1,244,189,7,240,253,0,0,1,244,56,7,240,253,26,170,170,254,170,71,240,253,63,255,255,255,255,199,240,253,63,255,255,255,255,199,240,253,0,0,0,248,0,7,240,253,0,0,0,248,21,7,240,253,15,255,244,248,63,7,240,253,15,255,244,252,62,7,240,253,15,64,244,188,124,7,240,253,15,64,244,188,188,7,240,253,15,64,244,124,248,7,240,253,15,64,244,126,240,7,240,253,15,255,244,63,224,7,240,253,15,255,244,63,192,7,240,253,0,0,0,47,129,135,240,253,0,0,20,63,66,231,240,253,1,175,252,191,195,215,240,253,63,255,254,255,231,199,240,253,63,254,75,243,255,199,240,253,41,0,47,193,255,71,240,253,0,0,31,0,126,7,240,253,0,0,4,0,0,11,240,253,0,0,0,0,63,255,224,253,0,0,0,0,47,255,192,253,0,0,0,0,31,254,0,0,0,0,0,0,0,0,0, + // 0x964d 降 + 77,150,32,35,24,36,3,252,0,0,0,0,14,64,0,0,0,0,0,0,63,128,0,0,255,255,208,0,127,0,0,0,255,255,244,0,255,170,170,0,255,255,240,3,255,255,255,192,252,7,240,11,255,255,255,64,252,11,208,47,240,0,191,0,252,15,192,191,248,0,253,0,252,15,195,254,253,3,252,0,252,47,71,244,127,79,240,0,252,63,1,208,47,255,192,0,252,62,0,0,11,255,64,0,252,125,0,0,11,255,64,0,252,190,0,0,191,255,244,0,252,63,0,11,255,159,255,144,252,15,194,255,253,1,255,254,252,15,215,255,208,47,175,252,252,7,226,249,0,47,129,180,252,3,240,64,0,47,128,0,252,3,240,255,255,255,255,240,252,3,240,255,255,255,255,240,252,3,240,255,255,255,255,240,252,11,240,11,192,47,128,0,252,255,224,11,192,47,128,0,252,255,192,11,192,47,128,0,252,190,0,11,192,47,128,0,252,0,15,255,255,255,255,252,252,0,15,255,255,255,255,252,252,0,11,255,255,255,255,252,252,0,0,0,0,47,128,0,252,0,0,0,0,47,128,0,252,0,0,0,0,47,128,0,252,0,0,0,0,47,128,0,252,0,0,0,0,47,128,0,0,0,0,0,0,0,0,0, + // 0x9650 限 + 80,150,31,33,8,36,3,252,255,255,244,63,255,255,255,192,255,255,252,63,255,255,255,192,255,255,252,63,255,255,255,192,252,2,244,63,0,0,15,192,252,3,240,63,0,0,15,192,252,7,224,63,0,0,15,192,252,11,208,63,255,255,255,192,252,15,192,63,255,255,255,192,252,31,128,63,255,255,255,192,252,63,0,63,0,0,15,192,252,63,0,63,0,0,15,192,252,63,64,63,0,0,15,192,252,15,192,63,0,0,15,192,252,7,224,63,255,255,255,192,252,3,240,63,255,255,255,192,252,2,248,63,255,255,255,192,252,1,252,63,1,248,0,0,252,0,252,63,0,252,2,208,252,0,252,63,0,253,7,248,252,1,252,63,0,126,47,224,252,3,252,63,0,63,191,128,252,255,248,63,0,63,254,0,252,191,240,63,0,31,244,0,252,127,128,63,0,15,224,0,252,0,0,63,0,7,244,0,252,0,0,63,0,19,253,0,252,0,0,63,111,244,255,0,252,0,1,191,255,244,127,208,252,0,63,255,255,244,47,248,252,0,47,255,228,0,11,252,252,0,15,228,0,0,2,244,252,0,4,0,0,0,0,32,0,0,0,0,0,0,0,0, + // 0x9664 除 + 100,150,32,34,16,36,3,253,0,0,0,0,6,160,0,0,0,0,0,0,15,248,0,0,255,255,208,0,47,252,0,0,255,255,244,0,127,255,0,0,255,255,240,0,254,63,192,0,252,7,240,3,252,31,240,0,252,11,208,15,240,7,252,0,252,15,192,63,208,2,255,0,252,15,192,255,64,0,127,208,252,47,75,253,0,0,31,248,252,63,63,244,0,0,7,254,252,62,31,239,255,255,254,252,252,189,14,31,255,255,253,40,252,190,0,31,255,255,253,0,252,63,0,0,3,240,0,0,252,15,192,0,3,240,0,0,252,11,208,0,3,240,0,0,252,7,224,0,3,240,0,0,252,3,242,255,255,255,255,240,252,3,242,255,255,255,255,240,252,3,242,255,255,255,255,240,252,3,240,0,3,240,0,0,252,11,240,0,3,240,0,0,252,255,224,62,3,240,124,0,252,255,192,190,3,240,191,0,252,190,0,252,3,240,63,128,252,0,2,248,3,240,31,192,252,0,7,240,3,240,11,240,252,0,15,224,3,240,3,244,252,0,63,192,3,240,1,252,252,0,47,0,7,240,0,252,252,0,9,3,255,240,0,80,252,0,0,2,255,224,0,0,252,0,0,1,254,64,0,0, + // 0x9669 险 + 105,150,32,34,16,36,3,253,0,0,0,0,2,144,0,0,0,0,0,0,3,244,0,0,255,255,208,0,15,240,0,0,255,255,244,0,31,252,0,0,255,255,240,0,63,254,0,0,252,7,224,0,255,127,128,0,252,11,208,2,252,31,224,0,252,15,192,11,244,7,252,0,252,31,128,47,208,1,255,64,252,47,64,191,128,0,127,224,252,63,3,254,0,0,31,253,252,126,47,255,255,255,251,255,252,189,47,223,255,255,244,189,252,63,15,79,255,255,244,28,252,31,192,0,0,0,0,0,252,15,192,0,0,0,0,0,252,7,224,0,1,80,1,0,252,3,240,24,3,224,3,240,252,3,240,188,3,240,7,224,252,3,240,125,2,240,11,208,252,3,240,62,1,244,15,192,252,7,240,63,1,244,31,64,252,255,240,47,64,248,63,0,252,255,208,31,128,252,126,0,252,190,64,15,128,252,188,0,252,0,0,15,192,64,248,0,252,0,0,4,0,2,240,0,252,0,0,0,0,3,224,0,252,0,0,0,0,11,192,0,252,0,11,255,255,255,255,252,252,0,11,255,255,255,255,252,252,0,11,255,255,255,255,252,252,0,0,0,0,0,0,0,168,0,0,0,0,0,0,0, + // 0x96f6 零 + 246,150,34,33,41,36,1,253,0,85,85,85,85,85,85,80,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,0,2,244,0,0,0,0,0,0,0,3,248,0,0,0,0,31,255,255,255,255,255,255,255,64,31,255,255,255,255,255,255,255,64,31,128,0,2,244,0,0,47,64,31,134,170,146,244,170,169,47,64,31,143,255,226,244,255,254,47,64,31,143,255,226,244,255,254,47,64,0,0,0,2,244,0,0,0,0,0,47,255,240,80,255,255,128,0,0,47,255,247,248,255,255,128,0,0,0,0,47,255,64,0,0,0,0,0,0,191,255,224,0,0,0,0,0,11,254,15,253,0,0,0,0,0,127,244,2,255,208,0,0,0,11,255,128,0,47,254,64,0,1,255,255,255,255,255,255,249,0,127,255,151,255,255,254,47,255,208,63,248,1,85,85,84,1,255,192,30,64,0,0,0,0,0,6,64,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,21,85,127,85,85,127,64,0,0,0,0,63,0,0,63,64,0,0,0,0,63,0,0,63,64,0,0,0,0,63,0,42,191,0,0,0,0,0,63,0,63,255,0,0,0,0,0,63,0,31,248,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0, + // 0x9700 需 + 0,151,32,33,8,36,2,253,2,170,170,170,170,170,170,128,3,255,255,255,255,255,255,192,3,255,255,255,255,255,255,192,0,0,0,11,208,0,0,0,0,0,0,11,208,0,0,0,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,85,85,95,229,85,85,253,126,0,0,11,208,0,0,189,126,63,255,139,211,255,248,189,126,63,255,139,211,255,248,189,126,0,0,11,208,0,0,189,0,0,0,11,208,0,0,0,0,191,255,139,211,255,254,0,0,191,255,139,211,255,254,0,0,0,0,11,208,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,106,170,170,175,250,170,170,169,0,0,0,15,192,0,0,0,0,0,0,31,192,0,0,0,3,255,255,255,255,255,255,224,3,255,255,255,255,255,255,224,3,254,171,250,175,250,175,224,3,244,3,240,7,224,7,224,3,244,3,240,7,224,7,224,3,244,3,240,7,224,7,224,3,244,3,240,7,224,7,224,3,244,3,240,7,224,7,224,3,244,3,240,7,225,175,224,3,244,3,240,7,225,255,208,3,240,2,160,6,144,255,64, + // 0x9752 青 + 82,151,32,35,24,36,2,252,0,0,0,11,224,0,0,0,0,0,0,15,224,0,0,0,6,170,170,175,250,170,170,144,11,255,255,255,255,255,255,240,11,255,255,255,255,255,255,240,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,85,85,95,245,85,85,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,106,170,170,170,170,170,170,169,0,0,0,0,0,0,0,0,0,26,170,170,170,170,168,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,64,0,0,0,252,0,0,63,64,0,0,0,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,149,85,85,85,252,0,0,63,64,0,0,0,252,0,0,63,149,85,85,85,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,64,0,0,0,252,0,0,63,64,0,0,0,252,0,0,63,64,0,0,1,252,0,0,63,64,0,6,171,252,0,0,63,64,0,7,255,252,0,0,63,64,0,3,255,224,0,0,0,0,0,0,0,0,0, + // 0x975e 非 + 94,151,34,35,59,36,1,252,0,0,3,240,1,248,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,15,255,255,240,2,255,255,255,192,15,255,255,240,2,255,255,255,192,15,255,255,240,2,255,255,255,192,0,0,7,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,15,255,255,240,2,255,255,255,0,15,255,255,240,2,255,255,255,0,15,255,255,240,2,255,255,255,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,7,240,2,252,0,0,0,0,0,7,246,130,252,0,0,0,0,5,175,255,194,252,0,0,0,107,255,255,255,194,255,255,255,208,127,255,255,249,2,255,255,255,208,63,255,191,192,2,255,255,255,208,57,64,127,64,2,252,0,0,0,0,0,255,0,2,252,0,0,0,0,2,253,0,2,252,0,0,0,0,11,252,0,2,252,0,0,0,0,47,240,0,2,252,0,0,0,1,255,192,0,2,252,0,0,0,11,255,0,0,2,252,0,0,0,11,252,0,0,2,252,0,0,0,2,208,0,0,2,248,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9760 靠 + 96,151,33,35,59,36,2,252,0,14,128,11,224,0,0,0,0,0,63,128,11,224,0,0,0,0,0,127,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,3,252,0,15,224,0,0,0,0,11,244,0,11,224,0,0,0,0,23,245,85,95,229,85,85,84,0,191,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,254,0,0,0,0,11,224,0,0,0,0,0,0,0,5,80,0,0,0,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,253,0,0,0,0,63,128,0,0,253,0,0,0,0,63,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,0,15,208,11,240,0,0,0,0,0,15,208,7,240,0,0,0,127,255,255,208,7,255,255,253,0,127,255,255,208,7,255,255,253,0,0,0,15,208,7,240,0,0,0,0,0,15,208,7,240,0,0,0,31,255,255,208,7,255,255,248,0,31,255,255,208,7,255,255,248,0,0,0,15,208,7,240,0,0,0,0,0,15,192,7,240,0,0,0,175,255,255,192,7,255,255,255,64,255,255,255,128,7,255,255,255,64,165,64,191,0,7,245,85,85,0,0,7,253,0,7,240,0,0,0,1,191,244,0,7,240,0,0,0,3,255,128,0,7,240,0,0,0,1,248,0,0,7,240,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9762 面 + 98,151,32,33,8,36,2,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,47,208,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,64,0,0,0,31,255,255,255,255,255,255,244,31,255,255,255,255,255,255,244,31,255,255,255,255,255,255,244,31,192,47,64,3,240,3,244,31,192,47,64,3,240,3,244,31,192,47,64,3,240,3,244,31,192,47,234,171,240,3,244,31,192,47,255,255,240,3,244,31,192,47,255,255,240,3,244,31,192,47,64,3,240,3,244,31,192,47,64,3,240,3,244,31,192,47,64,3,240,3,244,31,192,47,234,171,240,3,244,31,192,47,255,255,240,3,244,31,192,47,255,255,240,3,244,31,192,47,64,3,240,3,244,31,192,47,64,3,240,3,244,31,192,47,64,3,240,3,244,31,192,47,64,3,240,3,244,31,255,255,255,255,255,255,244,31,255,255,255,255,255,255,244,31,255,255,255,255,255,255,244,31,192,0,0,0,0,3,244,31,192,0,0,0,0,3,244,0,0,0,0,0,0,0,0, + // 0x9875 页 + 117,152,32,33,8,36,2,252,127,255,255,255,255,255,255,254,127,255,255,255,255,255,255,254,127,255,255,255,255,255,255,254,0,0,0,47,192,0,0,0,0,0,0,63,128,0,0,0,0,0,0,127,64,0,0,0,0,0,0,191,0,0,0,0,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,253,0,0,0,0,63,64,0,253,0,0,0,0,63,64,0,253,0,11,240,0,63,64,0,253,0,11,240,0,63,64,0,253,0,11,240,0,63,64,0,253,0,11,240,0,63,64,0,253,0,11,240,0,63,64,0,253,0,11,240,0,63,64,0,253,0,11,240,0,63,64,0,253,0,11,240,0,63,64,0,253,0,15,224,0,63,64,0,253,0,15,224,0,63,64,0,253,0,47,192,0,63,64,0,253,0,127,199,144,63,64,0,0,1,255,79,253,0,0,0,0,11,254,11,255,208,0,0,0,127,248,0,191,252,0,0,27,255,208,0,11,255,128,6,255,254,0,0,0,255,244,255,255,224,0,0,0,31,253,63,253,0,0,0,0,2,252,30,64,0,0,0,0,0,112,0,0,0,0,0,0,0,0, + // 0x9879 项 + 121,152,34,32,32,36,1,253,0,0,0,63,255,255,255,255,208,0,0,0,63,255,255,255,255,208,127,255,255,85,85,255,255,255,208,127,255,255,0,0,255,0,0,0,127,255,255,0,0,254,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,15,255,255,255,252,0,0,63,64,15,255,255,255,252,0,0,63,64,15,255,255,255,252,0,0,63,64,15,192,0,0,252,0,0,63,64,15,192,0,0,252,0,0,63,64,15,192,63,64,252,0,0,63,64,15,192,63,64,252,0,0,63,64,15,192,63,64,252,0,0,63,64,15,192,63,64,252,0,0,63,64,15,192,63,64,252,0,0,63,64,15,192,63,64,252,0,0,63,64,15,192,63,64,252,0,0,63,66,79,192,63,64,252,0,0,63,255,143,192,63,0,252,0,0,127,255,207,192,127,0,252,0,111,255,254,15,192,127,0,252,0,191,255,144,15,192,254,0,252,0,191,244,0,0,1,253,0,0,0,125,0,0,0,3,252,56,0,0,0,0,0,0,15,244,255,64,0,0,0,0,0,127,224,127,224,0,0,0,0,2,255,128,15,253,0,0,0,0,127,253,0,2,255,64,0,0,7,255,224,0,0,127,208,0,0,2,254,64,0,0,15,128,0,0,0,224,0,0,0,2,0, + // 0x9884 预 + 132,152,34,33,41,36,1,252,63,255,255,245,255,255,255,255,208,63,255,255,249,255,255,255,255,208,63,255,255,241,255,255,255,255,208,0,0,31,208,0,3,244,0,0,0,0,63,128,0,7,240,0,0,2,64,255,0,0,11,224,0,0,7,247,252,0,63,255,255,255,0,11,255,240,0,63,255,255,255,0,0,255,208,0,63,255,255,255,0,0,47,248,0,63,0,0,63,0,0,7,254,0,63,0,0,63,0,0,1,254,0,63,2,160,63,0,191,255,255,254,63,3,240,63,0,191,255,255,254,63,3,240,63,0,191,255,255,253,63,3,240,63,0,0,15,192,252,63,3,240,63,0,0,15,192,248,63,3,240,63,0,0,15,193,244,63,3,240,63,0,0,15,195,240,63,3,240,63,0,0,15,195,224,63,7,240,63,0,0,15,192,64,63,7,224,63,0,0,15,192,0,63,11,224,63,0,0,15,192,0,63,15,208,63,0,0,15,192,0,42,31,192,42,0,0,15,192,0,0,63,129,0,0,0,15,192,0,0,191,95,128,0,0,15,192,0,2,254,47,240,0,0,15,192,0,15,248,11,252,0,0,31,192,0,191,224,1,255,64,15,255,192,15,255,64,0,127,208,15,255,192,7,248,0,0,31,192,11,249,0,2,128,0,0,7,0,0,0,0,0,0,0,0,0,0, + // 0x9891 频 + 145,152,34,35,59,36,1,252,0,0,189,0,0,0,0,0,0,0,0,189,0,0,0,0,0,0,0,0,189,0,31,255,255,255,192,3,208,189,0,31,255,255,255,192,3,224,191,255,31,255,255,255,192,3,224,191,255,64,0,252,0,0,3,224,191,255,64,1,252,0,0,3,224,189,0,0,2,244,0,0,3,224,189,0,0,3,240,0,0,3,224,189,0,11,255,255,255,0,3,224,189,0,11,255,255,255,0,191,255,255,255,203,234,170,191,0,191,255,255,255,203,192,0,47,0,191,255,255,255,203,192,248,47,0,0,1,248,0,11,192,248,47,0,0,1,248,0,11,192,248,47,0,1,145,248,0,11,192,248,47,0,3,241,248,15,139,192,248,47,0,3,225,248,31,139,192,248,47,0,11,209,248,47,75,192,244,47,0,15,193,248,63,11,193,244,47,0,31,129,248,126,11,193,244,47,0,63,65,248,253,11,193,244,47,0,127,1,249,252,11,194,240,47,0,44,1,255,244,11,195,240,47,0,0,0,175,240,11,195,240,47,0,0,0,47,192,0,7,208,0,0,0,0,191,64,0,15,223,64,0,0,3,254,0,0,47,175,224,0,0,31,248,0,0,191,11,252,0,1,255,208,0,7,253,1,255,0,47,255,0,1,191,244,0,63,192,47,244,0,1,255,128,0,15,208,14,64,0,0,184,0,0,3,64,0,0,0,0,0,0,0,0,0, + // 0x989d 额 + 157,152,34,35,59,36,1,252,0,1,160,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,2,252,0,31,255,255,255,192,42,171,255,170,159,255,255,255,208,63,255,255,255,223,255,255,255,208,63,255,255,255,192,1,248,0,0,63,0,0,15,192,2,244,0,0,63,5,0,15,192,3,240,0,0,63,15,192,15,192,7,224,0,0,47,47,128,15,143,255,255,255,0,0,127,255,252,15,255,255,255,0,0,255,255,254,15,234,170,191,0,3,250,171,252,15,192,0,63,0,31,224,3,248,15,193,244,63,0,127,137,15,240,15,193,244,63,0,46,63,255,192,15,193,244,63,0,4,63,255,0,15,193,244,63,0,0,15,255,192,15,193,244,63,0,0,191,255,248,15,194,244,63,0,11,255,135,255,143,194,244,63,0,127,253,0,191,207,194,240,63,0,63,208,0,31,15,195,240,63,0,47,170,170,168,15,195,240,63,0,1,255,255,252,15,195,240,63,0,1,255,255,252,15,199,224,63,0,1,244,0,252,15,139,208,42,0,1,244,0,252,0,15,194,0,0,1,244,0,252,0,47,143,192,0,1,244,0,252,0,127,15,244,0,1,244,0,252,1,254,3,253,0,1,255,255,252,11,252,0,255,128,1,255,255,252,191,240,0,47,224,1,254,170,253,255,128,0,11,208,1,164,0,252,184,0,0,2,128,0,0,0,0,0,0,0,0,0, + // 0x98ce 风 + 206,152,34,33,41,36,1,252,0,127,255,255,255,255,255,192,0,0,127,255,255,255,255,255,192,0,0,127,255,255,255,255,255,192,0,0,127,0,0,0,0,31,192,0,0,127,0,0,0,0,31,192,0,0,127,0,0,0,80,31,192,0,0,127,0,0,0,253,31,192,0,0,127,7,128,1,252,31,192,0,0,127,47,208,2,248,31,192,0,0,127,15,240,3,240,31,192,0,0,127,3,252,7,240,31,192,0,0,127,0,254,15,208,31,192,0,0,127,0,127,159,192,15,192,0,0,127,0,47,255,128,15,192,0,0,127,0,15,255,0,15,192,0,0,191,0,7,254,0,15,192,0,0,191,0,2,254,0,15,192,0,0,190,0,7,255,0,15,192,0,0,254,0,15,255,192,15,192,0,0,253,0,47,239,224,15,192,0,0,253,0,127,143,244,15,192,0,1,252,1,255,3,252,15,208,0,2,252,7,252,2,254,15,208,0,3,248,31,244,0,255,11,208,128,3,244,127,224,0,127,203,224,208,7,240,255,128,0,63,135,225,240,15,240,62,0,0,13,3,241,240,31,224,8,0,0,0,3,246,224,63,192,0,0,0,0,2,255,224,127,128,0,0,0,0,0,255,192,31,0,0,0,0,0,0,127,128,6,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0, + // 0x9971 饱 + 113,153,34,34,50,36,1,253,0,168,0,0,9,0,0,0,0,0,252,0,0,47,128,0,0,0,0,252,0,0,63,64,0,0,0,1,248,0,0,127,0,0,0,0,2,248,0,0,191,255,255,254,0,3,255,255,128,255,255,255,254,0,3,255,255,210,255,255,255,254,0,3,255,255,195,240,0,0,190,0,11,224,31,207,224,0,0,190,0,15,192,47,95,192,0,0,190,0,15,192,63,127,128,0,0,190,0,47,128,63,255,255,255,224,190,0,63,64,189,191,255,255,224,190,0,191,42,108,59,254,175,224,190,0,189,63,0,19,244,3,224,190,0,44,63,0,3,244,3,224,190,0,0,63,0,3,244,3,224,190,0,0,63,0,3,244,3,224,189,0,0,63,0,3,244,3,224,189,0,0,63,0,3,254,175,224,189,0,0,63,0,3,255,255,224,253,0,0,63,0,3,255,255,224,252,0,0,63,0,3,244,1,255,252,0,0,63,0,3,244,0,255,248,0,0,63,2,3,244,0,255,224,0,0,63,15,67,244,0,0,0,0,0,63,191,131,244,0,0,6,0,0,63,255,3,244,0,0,11,208,0,63,252,3,244,0,0,11,208,0,127,224,2,248,0,0,31,192,0,255,64,1,255,255,255,255,192,0,253,0,0,255,255,255,255,64,0,116,0,0,47,255,255,248,0,0,0,0,0,0,0,0,0,0, + // 0x9a6c 马 + 108,154,31,33,8,36,2,252,3,255,255,255,255,255,244,0,3,255,255,255,255,255,240,0,3,255,255,255,255,255,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240,0,0,5,64,0,0,7,240,0,0,15,208,0,0,11,240,0,0,15,192,0,0,11,224,0,0,15,192,0,0,15,224,0,0,31,192,0,0,15,208,0,0,31,192,0,0,15,208,0,0,47,192,0,0,15,192,0,0,47,128,0,0,15,192,0,0,47,128,0,0,31,192,0,0,63,255,255,255,255,255,252,0,63,255,255,255,255,255,252,0,63,255,255,255,255,255,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,244,255,255,255,255,255,254,3,244,255,255,255,255,255,254,3,240,255,255,255,255,255,254,7,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,208,0,0,0,0,0,0,63,192,0,0,0,0,11,255,255,192,0,0,0,0,3,255,255,0,0,0,0,0,3,255,248,0,0,0,0,0,0,0,0,0, + // 0x9a71 驱 + 113,154,34,32,32,36,1,253,47,255,255,66,255,255,255,255,192,47,255,255,66,255,255,255,255,192,47,255,255,66,255,255,255,255,192,0,0,47,66,248,0,0,0,0,0,0,47,2,244,0,0,0,0,7,208,63,2,244,0,0,184,0,11,208,63,2,244,112,0,253,0,11,208,63,2,245,252,1,252,0,11,192,63,2,244,254,2,248,0,11,192,63,2,244,63,67,244,0,15,192,62,2,244,31,199,240,0,15,192,126,2,244,15,255,224,0,15,192,126,2,244,3,255,192,0,15,192,125,2,244,1,255,128,0,15,128,189,2,244,0,255,0,0,31,255,255,242,244,0,191,64,0,31,255,255,242,244,1,255,192,0,26,170,171,226,244,3,255,224,0,0,0,7,226,244,7,247,244,0,0,0,7,226,244,15,226,252,0,0,0,7,226,244,63,192,253,0,0,27,215,210,244,191,64,191,0,27,255,219,210,245,254,0,63,128,255,255,75,210,247,252,0,47,0,191,144,15,194,244,180,0,8,0,16,0,15,194,244,16,0,0,0,0,0,15,194,244,0,0,0,0,0,0,31,130,255,255,255,255,224,0,0,63,130,255,255,255,255,224,0,191,255,2,255,255,255,255,224,0,127,253,0,0,0,0,0,0,0,42,160,0,0,0,0,0,0, + // 0x9ad8 高 + 216,154,32,35,24,36,2,252,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,191,255,255,255,255,255,255,253,191,255,255,255,255,255,255,253,191,255,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,255,255,255,224,0,0,11,255,255,255,255,224,0,0,11,229,85,85,95,224,0,0,11,224,0,0,11,224,0,0,11,224,0,0,11,224,0,0,11,229,85,85,95,224,0,0,11,255,255,255,255,224,0,0,11,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,255,244,15,255,255,255,255,255,255,244,15,255,255,255,255,255,255,244,15,192,0,0,0,0,3,244,15,192,21,85,85,84,3,244,15,192,63,255,255,252,3,244,15,192,63,255,255,252,3,244,15,192,63,0,0,252,3,244,15,192,63,0,0,252,3,244,15,192,63,0,0,252,3,244,15,192,63,85,85,252,3,244,15,192,63,255,255,252,3,244,15,192,63,255,255,252,7,244,15,192,63,0,0,15,255,240,15,192,42,0,0,11,255,240,15,192,0,0,0,7,255,128,0,0,0,0,0,0,0,0, + // 0x9ec4 黄 + 196,158,32,35,24,36,2,252,0,0,127,0,0,253,0,0,0,0,127,0,0,253,0,0,0,0,127,0,0,253,0,0,7,255,255,255,255,255,255,224,7,255,255,255,255,255,255,224,7,255,255,255,255,255,255,224,0,0,127,0,0,253,0,0,0,0,127,0,0,253,0,0,0,0,127,0,0,253,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,11,224,0,0,0,0,0,0,11,224,0,0,0,0,85,85,95,245,85,85,0,0,255,255,255,255,255,255,128,0,255,255,255,255,255,255,128,0,252,0,11,224,0,63,128,0,252,0,11,224,0,63,128,0,253,85,95,245,85,127,128,0,255,255,255,255,255,255,128,0,255,255,255,255,255,255,128,0,252,0,11,224,0,63,128,0,252,0,11,224,0,63,128,0,252,0,11,224,0,63,128,0,255,255,255,255,255,255,128,0,255,255,255,255,255,255,128,0,85,89,85,85,165,85,0,0,0,62,0,0,253,0,0,0,7,255,192,2,255,228,0,1,191,254,0,0,111,255,128,111,255,224,0,0,1,255,253,63,253,0,0,0,0,27,252,15,128,0,0,0,0,0,176,0,0,0,0,0,0,0,0, + // 0x9ede 點 + 222,158,34,34,50,36,1,253,0,0,0,0,0,3,240,0,0,15,255,255,255,64,3,240,0,0,15,255,255,255,64,3,240,0,0,15,149,245,111,64,3,240,0,0,15,64,240,31,64,3,240,0,0,15,180,241,255,64,3,240,0,0,15,120,242,239,64,3,240,0,0,15,124,243,223,64,3,244,0,0,15,108,243,95,64,3,255,255,224,15,93,247,31,64,3,255,255,224,15,68,246,31,64,3,255,255,224,15,64,240,31,64,3,240,0,0,15,255,255,255,64,3,240,0,0,15,255,255,255,64,3,240,0,0,5,86,249,85,0,3,240,0,0,0,2,244,0,0,3,240,0,0,10,171,250,170,0,3,240,0,0,31,255,255,255,79,255,255,255,0,31,255,255,255,79,255,255,255,0,0,2,244,0,15,255,255,255,0,0,2,244,0,15,192,0,63,0,0,2,249,90,143,192,0,63,0,63,255,255,255,207,192,0,63,0,63,255,255,255,207,192,0,63,0,63,234,149,84,15,192,0,63,0,0,0,4,60,15,192,0,63,0,6,31,46,62,15,192,0,63,0,11,207,31,31,79,192,0,63,0,15,143,79,11,207,192,0,63,0,15,79,75,71,223,255,255,255,0,47,11,139,131,143,255,255,255,0,63,11,134,64,15,255,255,255,0,189,5,0,0,15,192,0,63,0,40,0,0,0,15,192,0,42,0, + // 0x9f50 齐 + 80,159,33,35,59,36,2,252,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,191,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,255,0,191,255,255,255,255,255,255,255,0,0,7,244,0,0,31,224,0,0,0,2,252,0,0,127,192,0,0,0,0,255,0,0,255,0,0,0,0,0,63,208,7,253,0,0,0,0,0,15,252,31,244,0,0,0,0,0,2,255,255,208,0,0,0,0,0,0,191,255,0,0,0,0,0,0,1,191,255,144,0,0,0,0,0,111,255,255,254,64,0,0,0,107,255,253,47,255,254,144,0,191,255,255,144,1,255,255,255,64,255,255,228,0,0,7,255,255,0,127,251,164,0,0,10,235,253,0,36,3,248,0,0,15,208,4,0,0,3,248,0,0,15,208,0,0,0,3,248,0,0,15,208,0,0,0,3,248,0,0,15,208,0,0,0,3,244,0,0,15,208,0,0,0,3,244,0,0,15,208,0,0,0,7,244,0,0,15,208,0,0,0,11,240,0,0,15,208,0,0,0,15,240,0,0,15,208,0,0,0,47,224,0,0,15,208,0,0,0,191,192,0,0,15,208,0,0,2,255,64,0,0,15,208,0,0,31,254,0,0,0,15,208,0,0,15,248,0,0,0,15,208,0,0,2,208,0,0,0,15,208,0,0,0,0,0,0,0,0,0,0,0, + // 0xff1a : + 26,255,6,24,48,36,15,2,47,128,191,224,255,240,255,240,191,224,47,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,128,191,224,255,240,255,240,191,224,47,128, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Symbols_26.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Symbols_26.cpp new file mode 100644 index 0000000000..cd343edcdb --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Symbols_26.cpp @@ -0,0 +1,38 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium_Symbols 36pt, capital 'A' height: 26px, width: 100% +extern const uint8_t NotoSans_Medium_Symbols_26[112] = { + 130,26,8,0,10,0,34,247, // unifont_t + // 0x08 - LCD_STR_THERMOMETER a.k.a 0x1f321 🌡 + 21,44,8,24,2,248,0,15,255,248,0,0,0,63,255,253,0,0,0,63,170,254,0,0,0,61,0,62,0,0,0,61,0,62,0,0,0,63,192,62,0,0,0,61,0,62,0,0,0,61,0,62,0,0,0,61,0,62,0,0,0,63,192,62,0,0,0,61,0,62,0,0,0,61,0,62,0,0,0,61,126,62,0,0,0,63,254,62,0,0,0,62,190,62,0,0,0,61,126,62,0,0,0,61,126,62,0,0,0,62,190,62,0,0,0,63,254,62,0,0,0,61,126,62,0,0,0,61,126,62,0,0,0,61,190,62,0,0,0,63,254,62,0,0,0,61,126,62,0,0,0,61,126,62,0,0,0,61,126,62,0,0,0,255,254,63,64,0,3,253,190,47,224,0,15,208,126,3,248,0,47,66,255,128,253,0,62,15,255,244,63,0,188,47,255,252,47,0,252,63,255,254,15,64,248,127,255,255,15,128,248,127,255,255,15,128,248,63,255,255,15,64,188,63,255,253,31,0,125,15,255,248,63,0,63,2,255,208,189,0,31,192,20,2,252,0,11,248,0,31,240,0,2,255,234,255,192,0,0,127,255,254,0,0,0,6,255,208,0,0, + // 0x09 - LCD_STR_DEGREE a.k.a 0x00b0 ° + 12,12,36,15,2,14,6,255,64,47,255,240,127,155,248,252,0,252,248,0,125,248,0,62,248,0,61,252,0,189,127,70,252,47,255,240,11,255,128,0,16,0, + // 0x0a - replacement for 0x2026 used in Greek language files … + 25,6,42,29,2,255,26,0,1,160,0,41,0,63,192,11,248,0,255,64,127,208,15,252,0,255,128,127,208,15,252,0,255,128,63,192,7,248,0,255,0,5,0,0,80,0,20,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Traditional_Chinese_26.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Traditional_Chinese_26.cpp new file mode 100644 index 0000000000..b2d1dd9e99 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Traditional_Chinese_26.cpp @@ -0,0 +1,646 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Traditional Chinese 36pt, capital 'A' height: 26px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 +extern const uint8_t NotoSans_Medium_Traditional_Chinese_26[17084] = { + 162,26,191,34,26,255,34,247, // unifont_t + // 0x22bf ⊿ + 191,34,28,29,203,36,3,0,0,0,0,0,0,0,2,0,0,0,0,0,0,11,0,0,0,0,0,0,31,0,0,0,0,0,0,127,0,0,0,0,0,1,255,0,0,0,0,0,7,255,0,0,0,0,0,31,255,0,0,0,0,0,127,255,0,0,0,0,1,255,63,0,0,0,0,3,252,63,0,0,0,0,15,240,63,0,0,0,0,63,192,63,0,0,0,0,255,0,63,0,0,0,3,252,0,63,0,0,0,15,240,0,63,0,0,0,63,192,0,63,0,0,0,255,64,0,63,0,0,3,253,0,0,63,0,0,15,244,0,0,63,0,0,63,208,0,0,63,0,0,255,64,0,0,63,0,2,253,0,0,0,63,0,11,244,0,0,0,63,0,47,224,0,0,0,63,0,191,128,0,0,0,63,2,254,0,0,0,0,63,11,255,255,255,255,255,255,47,255,255,255,255,255,255,191,255,255,255,255,255,255, + // 0x4e00 一 + 0,78,34,4,36,36,1,12,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,42,170,170,170,170,170,170,170,144, + // 0x4e09 三 + 9,78,32,29,232,36,2,255,1,85,85,85,85,85,85,64,7,255,255,255,255,255,255,224,7,255,255,255,255,255,255,224,7,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,85,85,85,85,84,0,0,63,255,255,255,255,248,0,0,63,255,255,255,255,248,0,0,63,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,253,191,255,255,255,255,255,255,253,191,255,255,255,255,255,255,253,21,85,85,85,85,85,85,84, + // 0x4e0a 上 + 10,78,32,32,0,36,2,255,0,0,0,21,64,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,213,85,85,64,0,0,0,63,255,255,255,224,0,0,0,63,255,255,255,224,0,0,0,63,255,255,255,224,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,85,85,85,127,213,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x4e0b 下 + 11,78,32,32,0,36,2,253,85,85,85,85,85,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,253,0,0,0,0,0,0,47,255,208,0,0,0,0,0,47,255,252,0,0,0,0,0,47,223,255,128,0,0,0,0,47,194,255,244,0,0,0,0,47,192,127,255,0,0,0,0,47,192,11,255,208,0,0,0,47,192,0,255,240,0,0,0,47,192,0,47,192,0,0,0,47,192,0,7,64,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,31,192,0,0,0, + // 0x4e0d 不 + 13,78,33,32,32,36,2,253,21,85,85,85,85,85,85,84,0,127,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,253,0,0,0,0,2,255,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,127,240,0,0,0,0,0,0,0,255,240,0,0,0,0,0,0,3,255,242,224,0,0,0,0,0,15,255,251,252,0,0,0,0,0,63,255,247,255,64,0,0,0,0,255,207,240,255,224,0,0,0,7,255,79,240,47,252,0,0,0,31,253,15,240,7,255,64,0,0,191,240,15,240,1,255,208,0,7,255,192,15,240,0,63,248,0,47,254,0,15,240,0,15,254,0,255,248,0,15,240,0,2,255,64,191,208,0,15,240,0,0,253,0,62,0,0,15,240,0,0,52,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0, + // 0x4e26 並 + 38,78,32,33,8,36,2,254,0,1,128,0,0,3,144,0,0,15,208,0,0,7,252,0,0,11,240,0,0,11,244,0,0,3,248,0,0,15,224,0,0,2,253,0,0,47,192,0,0,0,254,0,0,127,64,0,0,0,189,0,0,255,0,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,21,85,91,245,95,229,85,84,0,0,11,240,15,208,0,0,0,0,11,240,15,208,0,0,0,0,11,240,15,208,9,64,7,240,11,240,15,208,15,240,3,240,11,240,15,208,15,208,2,248,11,240,15,208,31,192,1,252,11,240,15,208,63,192,0,253,11,240,15,208,63,64,0,190,11,240,15,208,127,0,0,127,11,240,15,208,191,0,0,63,11,240,15,208,253,0,0,63,75,240,15,209,252,0,0,47,139,240,15,210,248,0,0,47,203,240,15,211,244,0,0,25,11,240,15,209,160,0,0,0,11,240,15,208,0,0,0,0,11,240,15,208,0,0,0,0,11,240,15,208,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,85,85,85,85,85, + // 0x4e2d 中 + 45,78,30,34,16,36,3,253,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,21,85,85,127,149,85,85,64,191,255,255,255,255,255,255,208,191,255,255,255,255,255,255,208,191,255,255,255,255,255,255,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,191,85,85,127,149,85,95,208,191,255,255,255,255,255,255,208,191,255,255,255,255,255,255,208,191,255,255,255,255,255,255,208,191,0,0,63,128,0,15,208,191,0,0,63,128,0,15,208,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0, + // 0x4e3b 主 + 59,78,32,33,8,36,2,254,0,0,0,36,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,63,244,0,0,0,0,0,0,11,253,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,189,0,0,0,31,255,255,255,255,255,255,240,31,255,255,255,255,255,255,240,31,255,255,255,255,255,255,240,5,85,85,95,245,85,85,80,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,2,255,255,255,255,255,255,128,2,255,255,255,255,255,255,128,2,255,255,255,255,255,255,128,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,21,85,85,95,245,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x4e4b 之 + 75,78,34,34,50,36,1,253,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,7,255,255,255,255,255,255,244,0,7,255,255,255,255,255,255,253,0,7,255,255,255,255,255,255,252,0,1,85,85,85,85,85,95,244,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,2,255,0,0,0,0,1,0,0,11,252,0,0,0,0,11,224,0,47,240,0,0,0,0,15,224,0,191,192,0,0,0,0,31,208,2,255,0,0,0,0,0,63,192,15,252,0,0,0,0,0,127,240,127,240,0,0,0,0,0,255,249,255,192,0,0,0,0,1,255,255,254,0,0,0,0,0,3,252,255,244,0,0,0,0,0,11,244,63,248,0,0,0,0,0,15,240,15,255,229,0,0,0,0,63,208,2,255,255,255,255,255,208,191,192,0,47,255,255,255,255,192,47,64,0,1,175,255,255,255,128,6,0,0,0,0,1,85,85,0, + // 0x4ea4 交 + 164,78,32,35,24,36,2,252,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,21,85,85,95,229,85,85,84,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,0,0,0,0,0,4,0,0,0,0,121,0,0,47,0,0,0,1,255,64,0,255,208,0,0,7,253,0,0,63,248,0,0,31,248,0,0,11,255,0,0,191,224,0,0,1,255,192,3,255,128,0,0,0,127,240,31,254,5,0,0,100,15,252,191,244,191,0,0,255,3,255,63,192,63,64,1,254,0,252,14,0,47,192,3,252,0,32,0,0,15,224,7,248,0,0,0,0,11,244,15,240,0,0,0,0,3,252,63,208,0,0,0,0,1,255,191,128,0,0,0,0,0,191,255,0,0,0,0,0,0,63,252,0,0,0,0,0,0,127,253,0,0,0,0,0,2,255,255,128,0,0,0,0,47,255,255,248,0,0,0,2,255,248,47,255,128,0,0,191,255,192,7,255,254,0,111,255,253,0,0,191,255,254,255,255,208,0,0,11,255,255,127,248,0,0,0,0,111,253,62,64,0,0,0,0,1,184,0,0,0,0,0,0,0,0, + // 0x4eae 亮 + 174,78,32,35,24,36,2,252,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,254,0,0,0,0,0,0,0,0,0,5,85,85,85,85,84,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,64,0,0,1,252,0,0,63,64,0,0,1,252,0,0,63,64,0,0,1,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,21,85,85,85,85,84,0,0,0,0,0,0,0,0,0,106,170,170,170,170,170,170,169,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,125,0,0,0,0,0,0,189,125,0,47,192,11,224,0,189,125,0,63,128,15,224,0,189,125,0,63,128,15,224,0,189,0,0,63,64,15,224,0,0,0,0,127,0,15,224,0,0,0,0,255,0,15,224,0,0,0,1,254,0,15,224,0,52,0,7,252,0,15,224,0,63,0,47,244,0,15,240,0,63,6,255,224,0,15,240,0,191,255,255,64,0,11,255,255,254,191,248,0,0,7,255,255,252,62,64,0,0,1,191,255,224,0,0,0,0,0,0,0,0, + // 0x4ee4 令 + 228,78,34,34,50,36,1,253,0,0,0,7,248,0,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,47,255,64,0,0,0,0,0,0,191,255,192,0,0,0,0,0,1,255,31,240,0,0,0,0,0,7,253,11,252,0,0,0,0,0,31,244,2,255,64,0,0,0,0,127,224,0,191,208,0,0,0,2,255,64,0,47,248,0,0,0,11,253,0,0,11,255,0,0,0,63,244,0,0,1,255,208,0,1,255,255,255,255,255,255,248,0,15,255,31,255,255,255,143,255,128,127,248,31,255,255,255,130,255,224,63,208,0,0,0,0,0,127,192,14,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,0,0,63,0,0,15,208,0,0,0,0,63,0,0,15,208,0,0,0,0,63,0,0,15,208,0,0,0,0,63,0,0,15,208,0,0,0,0,63,0,0,15,208,0,0,0,0,63,0,0,15,208,0,0,0,0,63,0,0,31,208,0,0,0,0,63,0,63,255,192,0,0,0,0,63,0,63,255,192,0,0,0,0,63,0,47,254,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0, + // 0x4ef6 件 + 246,78,34,34,50,36,1,253,0,0,144,0,0,21,0,0,0,0,0,253,0,0,191,0,0,0,0,2,252,10,64,191,0,0,0,0,3,248,15,208,191,0,0,0,0,7,240,15,192,191,0,0,0,0,15,240,31,192,191,0,0,0,0,31,208,47,128,191,0,0,0,0,63,192,63,149,191,85,84,0,0,127,64,63,255,255,255,254,0,0,255,0,191,255,255,255,254,0,2,255,0,255,255,255,255,254,0,7,255,1,252,0,191,0,0,0,15,255,3,248,0,191,0,0,0,63,255,7,244,0,191,0,0,0,191,255,11,240,0,191,0,0,0,127,127,0,128,0,191,0,0,0,44,63,0,0,0,191,0,0,0,4,63,0,0,0,191,0,0,0,0,63,11,255,255,255,255,255,208,0,63,11,255,255,255,255,255,208,0,63,11,255,255,255,255,255,208,0,63,1,85,85,191,85,85,64,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,191,0,0,0,0,63,0,0,0,190,0,0,0, + // 0x4efd 份 + 253,78,34,35,59,36,1,252,0,0,144,0,0,0,0,0,0,0,1,252,0,63,255,252,0,0,0,3,252,0,63,255,253,0,0,0,3,244,0,63,255,254,0,0,0,11,240,6,64,0,127,0,0,0,15,208,15,224,0,63,64,0,0,47,192,15,208,0,63,128,0,0,63,128,47,192,0,47,192,0,0,255,0,63,64,0,15,224,0,1,255,0,127,0,0,11,240,0,3,255,0,254,0,0,7,252,0,11,255,2,252,0,0,2,253,0,47,255,3,244,0,0,0,255,64,127,255,15,240,0,0,0,191,208,255,255,63,192,0,0,0,63,224,254,127,63,191,255,255,255,239,192,124,127,14,63,255,255,255,226,0,32,127,0,63,255,255,255,208,0,0,127,0,0,47,128,15,208,0,0,127,0,0,63,64,15,208,0,0,127,0,0,63,0,15,208,0,0,127,0,0,63,0,15,208,0,0,127,0,0,127,0,15,208,0,0,127,0,0,190,0,15,208,0,0,127,0,0,253,0,15,192,0,0,127,0,1,252,0,15,192,0,0,127,0,3,248,0,15,192,0,0,127,0,7,244,0,31,192,0,0,127,0,15,224,0,31,192,0,0,127,0,63,192,0,47,192,0,0,127,0,255,64,0,127,128,0,0,127,7,254,0,63,255,64,0,0,127,7,244,0,63,255,0,0,0,127,1,208,0,47,248,0,0,0,0,0,0,0,0,0,0,0, + // 0x4f11 休 + 17,79,34,34,50,36,1,253,0,0,36,0,0,84,0,0,0,0,0,127,64,0,252,0,0,0,0,0,255,0,0,252,0,0,0,0,0,254,0,0,252,0,0,0,0,2,252,0,0,252,0,0,0,0,7,248,0,0,252,0,0,0,0,15,240,0,0,252,0,0,0,0,31,224,0,0,252,0,0,0,0,63,192,0,0,252,0,0,0,0,255,139,255,255,255,255,255,192,2,255,139,255,255,255,255,255,192,7,255,139,255,255,255,255,255,192,31,255,129,85,95,255,213,85,64,127,255,128,0,15,255,224,0,0,255,239,128,0,47,255,240,0,0,191,47,128,0,63,255,244,0,0,61,47,128,0,127,254,252,0,0,20,47,128,0,254,253,253,0,0,0,47,128,2,252,252,127,0,0,0,47,128,3,248,252,63,128,0,0,47,128,11,240,252,47,192,0,0,47,128,31,208,252,15,240,0,0,47,128,63,192,252,7,248,0,0,47,128,255,64,252,3,253,0,0,47,130,254,0,252,0,255,0,0,47,139,252,0,252,0,191,192,0,47,255,240,0,252,0,63,240,0,47,159,208,0,252,0,15,192,0,47,139,64,0,252,0,3,64,0,47,129,0,0,252,0,0,0,0,47,128,0,0,252,0,0,0,0,47,128,0,0,252,0,0,0,0,47,128,0,0,252,0,0,0,0,31,128,0,0,252,0,0,0, + // 0x4f4d 位 + 77,79,34,34,50,36,1,253,0,0,100,0,0,168,0,0,0,0,0,254,0,0,253,0,0,0,0,1,253,0,0,253,0,0,0,0,3,252,0,0,253,0,0,0,0,7,244,0,0,253,0,0,0,0,15,240,0,0,253,0,0,0,0,31,208,0,0,253,0,0,0,0,63,195,255,255,255,255,255,192,0,191,67,255,255,255,255,255,192,1,255,67,255,255,255,255,255,192,3,255,64,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,47,255,64,5,128,0,11,144,0,191,255,64,15,192,0,15,240,0,255,127,64,15,208,0,15,224,0,125,63,64,11,224,0,15,208,0,56,63,64,7,240,0,31,192,0,0,63,64,3,240,0,47,192,0,0,63,64,3,244,0,63,128,0,0,63,64,3,248,0,63,64,0,0,63,64,2,248,0,127,0,0,0,63,64,1,252,0,127,0,0,0,63,64,1,252,0,254,0,0,0,63,64,0,252,0,253,0,0,0,63,64,0,253,1,252,0,0,0,63,64,0,253,2,252,0,0,0,63,64,0,254,3,244,0,0,0,63,64,0,80,3,240,0,0,0,63,64,0,0,7,240,0,0,0,63,75,255,255,255,255,255,224,0,63,75,255,255,255,255,255,224,0,63,75,255,255,255,255,255,224,0,63,64,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0, + // 0x4f4e 低 + 78,79,34,34,50,36,1,253,0,0,144,0,0,0,0,0,0,0,1,252,0,0,0,0,96,0,0,2,252,0,0,0,111,248,0,0,3,244,0,5,191,255,254,0,0,11,240,251,255,255,255,228,0,0,15,224,255,255,255,228,0,0,0,47,192,255,254,95,192,0,0,0,63,128,254,0,15,192,0,0,0,191,0,253,0,15,208,0,0,1,255,0,253,0,15,208,0,0,3,255,0,253,0,15,208,0,0,11,255,0,253,0,15,208,0,0,31,255,0,253,0,15,208,0,0,127,255,0,255,255,255,255,255,208,255,255,0,255,255,255,255,255,208,254,127,0,255,255,255,255,255,208,124,127,0,253,0,7,240,0,0,32,127,0,253,0,7,240,0,0,0,127,0,253,0,3,240,0,0,0,127,0,253,0,3,244,0,0,0,127,0,253,0,3,248,0,0,0,127,0,253,0,2,252,0,0,0,127,0,253,0,1,252,0,0,0,127,0,253,1,172,253,0,0,0,127,0,255,255,252,254,0,0,0,127,15,255,255,252,191,2,208,0,127,15,255,254,144,63,66,240,0,127,11,249,0,0,63,194,240,0,127,0,0,0,0,31,227,240,0,127,0,0,0,0,15,255,224,0,127,3,255,255,255,227,255,208,0,127,3,255,255,255,225,255,128,0,127,3,255,255,255,224,21,0,0,106,0,0,0,0,0,0,0, + // 0x4f5c 作 + 92,79,34,34,50,36,1,253,0,0,100,0,4,0,0,0,0,0,0,191,0,47,128,0,0,0,0,0,253,0,63,64,0,0,0,0,2,252,0,127,0,0,0,0,0,3,248,0,254,0,0,0,0,0,11,240,1,253,0,0,0,0,0,15,224,3,255,255,255,255,224,0,47,192,7,255,255,255,255,224,0,127,128,15,255,255,255,255,224,0,255,64,31,210,252,0,0,0,2,255,64,63,193,252,0,0,0,7,255,64,191,1,252,0,0,0,15,255,65,254,1,252,0,0,0,63,255,71,252,1,252,0,0,0,191,255,75,244,1,255,255,255,128,63,63,66,208,1,255,255,255,128,29,63,64,64,1,255,255,255,128,4,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,255,255,255,192,0,63,64,0,1,255,255,255,192,0,63,64,0,1,255,255,255,192,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0, + // 0x4f9b 供 + 155,79,34,34,50,36,1,253,0,0,144,1,164,0,42,0,0,0,0,253,1,252,0,63,0,0,0,2,252,1,252,0,63,0,0,0,3,248,1,252,0,63,0,0,0,7,240,1,252,0,63,0,0,0,15,224,1,252,0,63,0,0,0,31,192,1,252,0,63,0,0,0,63,128,2,252,0,63,64,0,0,191,3,255,255,255,255,255,192,1,255,3,255,255,255,255,255,192,3,255,3,255,255,255,255,255,192,11,255,0,1,252,0,63,0,0,47,255,0,1,252,0,63,0,0,127,255,0,1,252,0,63,0,0,255,191,0,1,252,0,63,0,0,126,127,0,1,252,0,63,0,0,56,127,0,1,252,0,63,0,0,16,127,0,1,252,0,63,0,0,0,127,0,1,252,0,63,0,0,0,127,11,255,255,255,255,255,224,0,127,11,255,255,255,255,255,224,0,127,11,255,255,255,255,255,224,0,127,1,85,85,85,85,85,64,0,127,0,0,0,0,0,0,0,0,127,0,0,160,0,9,0,0,0,127,0,2,253,0,127,0,0,0,127,0,3,248,0,63,192,0,0,127,0,15,240,0,31,240,0,0,127,0,63,208,0,7,248,0,0,127,0,191,128,0,2,253,0,0,127,2,255,0,0,0,255,0,0,127,15,252,0,0,0,63,192,0,127,3,240,0,0,0,31,128,0,127,0,128,0,0,0,8,0, + // 0x4fdd 保 + 221,79,34,35,59,36,1,252,0,0,80,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,253,63,255,255,255,253,0,0,2,252,63,255,255,255,253,0,0,3,244,63,255,255,255,253,0,0,11,240,63,0,0,0,253,0,0,15,208,63,0,0,0,253,0,0,47,192,63,0,0,0,253,0,0,127,128,63,0,0,0,253,0,0,255,64,63,0,0,0,253,0,2,255,64,63,0,0,0,253,0,7,255,64,63,255,255,255,253,0,31,255,64,63,255,255,255,253,0,63,255,64,63,255,255,255,253,0,255,191,64,0,0,254,0,0,0,127,63,64,0,0,254,0,0,0,60,63,64,0,0,254,0,0,0,16,63,64,0,0,254,0,0,0,0,63,75,255,255,255,255,255,208,0,63,75,255,255,255,255,255,208,0,63,75,255,255,255,255,255,208,0,63,64,0,15,255,224,0,0,0,63,64,0,47,255,244,0,0,0,63,64,0,127,255,252,0,0,0,63,64,1,254,254,191,0,0,0,63,64,7,252,254,63,192,0,0,63,64,31,240,254,15,240,0,0,63,64,127,192,254,7,252,0,0,63,66,255,64,254,2,255,64,0,63,95,253,0,254,0,191,224,0,63,79,240,0,254,0,47,224,0,63,71,128,0,254,0,7,128,0,63,64,0,0,254,0,0,0,0,63,64,0,0,254,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x4fe1 信 + 225,79,34,34,50,36,1,253,0,0,184,0,0,0,0,0,0,0,0,254,10,170,170,170,160,0,0,1,252,15,255,255,255,244,0,0,3,248,15,255,255,255,244,0,0,7,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,63,199,255,255,255,255,255,224,0,191,71,255,255,255,255,255,224,1,255,71,255,255,255,255,255,208,3,255,64,0,0,0,0,0,0,11,255,64,0,0,0,0,0,0,47,255,64,47,255,255,255,252,0,191,255,64,47,255,255,255,252,0,255,127,64,26,170,170,170,168,0,125,63,64,0,0,0,0,0,0,56,63,64,0,0,0,0,0,0,0,63,64,47,255,255,255,252,0,0,63,64,47,255,255,255,252,0,0,63,64,26,170,170,170,168,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,42,170,170,170,168,0,0,63,64,63,255,255,255,253,0,0,63,64,63,255,255,255,253,0,0,63,64,63,0,0,0,253,0,0,63,64,63,0,0,0,253,0,0,63,64,63,0,0,0,253,0,0,63,64,63,0,0,0,253,0,0,63,64,63,170,170,170,253,0,0,63,64,63,255,255,255,253,0,0,63,64,63,255,255,255,253,0,0,63,64,63,0,0,0,253,0,0,42,0,63,0,0,0,168,0, + // 0x500b 個 + 11,80,33,35,59,36,1,252,0,2,64,0,0,0,0,0,0,0,3,240,0,0,0,0,0,0,0,11,242,255,255,255,255,255,64,0,15,210,255,255,255,255,255,64,0,31,194,255,255,255,255,255,64,0,63,130,244,0,0,0,63,64,0,127,2,244,0,188,0,63,64,0,191,2,244,0,188,0,63,64,1,254,2,244,0,188,0,63,64,3,254,2,244,0,188,0,63,64,7,254,2,245,255,255,255,63,64,15,254,2,245,255,255,255,63,64,63,254,2,244,85,254,85,63,64,191,254,2,244,0,188,0,63,64,255,254,2,244,0,188,0,63,64,253,190,2,244,0,188,0,63,64,124,190,2,244,21,189,84,63,64,48,190,2,244,63,255,252,63,64,0,190,2,244,63,255,252,63,64,0,190,2,244,61,0,188,63,64,0,190,2,244,61,0,188,63,64,0,190,2,244,61,0,188,63,64,0,190,2,244,61,0,188,63,64,0,190,2,244,62,85,252,63,64,0,190,2,244,63,255,252,63,64,0,190,2,244,63,255,252,63,64,0,190,2,244,0,0,0,63,64,0,190,2,244,0,0,0,63,64,0,190,2,244,0,0,0,63,64,0,190,2,255,255,255,255,255,64,0,190,2,255,255,255,255,255,64,0,190,2,255,255,255,255,255,64,0,190,2,244,0,0,0,63,64,0,190,2,244,0,0,0,42,64,0,0,0,0,0,0,0,0,0, + // 0x503c 值 + 60,80,34,34,50,36,1,253,0,0,144,0,0,170,0,0,0,0,1,252,0,0,254,0,0,0,0,2,252,0,0,253,0,0,0,0,3,244,0,0,253,0,0,0,0,7,243,255,255,255,255,255,64,0,15,227,255,255,255,255,255,64,0,47,195,255,255,255,255,255,64,0,63,128,0,2,244,0,0,0,0,191,0,0,3,240,0,0,0,1,254,0,42,171,250,170,160,0,3,254,0,63,255,255,255,244,0,11,254,0,63,255,255,255,244,0,31,254,0,62,0,0,2,244,0,63,254,0,62,0,0,2,244,0,191,254,0,62,0,0,2,244,0,127,126,0,63,255,255,255,244,0,44,126,0,63,255,255,255,244,0,20,126,0,63,85,85,87,244,0,0,126,0,62,0,0,2,244,0,0,126,0,62,0,0,2,244,0,0,126,0,63,255,255,255,244,0,0,126,0,63,255,255,255,244,0,0,126,0,63,85,85,87,244,0,0,126,0,62,0,0,2,244,0,0,126,0,62,0,0,2,244,0,0,126,0,63,255,255,255,244,0,0,126,0,63,255,255,255,244,0,0,126,0,63,85,85,87,244,0,0,126,0,62,0,0,2,244,0,0,126,0,62,0,0,2,244,0,0,126,31,255,255,255,255,255,208,0,126,47,255,255,255,255,255,208,0,126,47,255,255,255,255,255,208,0,126,0,0,0,0,0,0,0, + // 0x504f 偏 + 79,80,34,34,50,36,1,253,0,2,64,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,11,231,255,255,255,255,255,208,0,15,215,255,255,255,255,255,208,0,31,199,255,255,255,255,255,208,0,63,128,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,191,0,255,255,255,255,255,0,0,253,0,255,255,255,255,255,0,3,253,0,254,170,170,170,191,0,7,253,0,252,0,0,0,127,0,15,253,0,252,0,0,0,127,0,47,253,0,252,0,0,0,127,0,127,253,0,255,255,255,255,255,0,255,253,0,255,255,255,255,255,0,254,189,0,254,170,170,170,170,0,124,189,0,252,0,0,0,0,0,48,189,0,252,0,0,0,0,0,0,189,1,255,255,255,255,255,128,0,189,1,255,255,255,255,255,128,0,189,2,255,235,250,254,175,128,0,189,2,255,194,240,124,31,128,0,189,3,255,194,240,124,31,128,0,189,3,255,194,240,124,31,128,0,189,7,255,235,250,254,175,128,0,189,11,239,255,255,255,255,128,0,189,15,223,255,255,255,255,128,0,189,31,207,194,240,124,31,128,0,189,63,143,194,240,124,31,128,0,189,127,15,194,240,124,31,128,0,189,254,15,194,240,124,31,128,0,189,60,15,194,240,125,255,128,0,189,4,15,194,240,124,255,64,0,189,0,15,129,160,104,253,0, + // 0x505c 停 + 92,80,34,34,50,36,1,253,0,0,144,0,0,253,0,0,0,0,1,252,0,0,253,0,0,0,0,3,252,0,0,253,0,0,0,0,3,251,255,255,255,255,255,208,0,11,247,255,255,255,255,255,208,0,15,215,255,255,255,255,255,208,0,63,192,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,255,0,63,255,255,255,248,0,2,255,0,63,255,255,255,248,0,7,255,0,63,85,85,86,248,0,15,255,0,63,64,0,2,248,0,63,255,0,63,64,0,2,248,0,255,255,0,63,255,255,255,248,0,255,127,0,63,255,255,255,248,0,188,127,0,21,85,85,85,80,0,52,127,0,0,0,0,0,0,0,16,127,10,170,170,170,170,170,144,0,127,15,255,255,255,255,255,224,0,127,15,255,255,255,255,255,224,0,127,15,192,0,0,0,7,224,0,127,15,192,0,0,0,7,224,0,127,15,198,170,170,170,151,224,0,127,15,203,255,255,255,215,224,0,127,0,11,255,255,255,208,0,0,127,0,0,0,253,0,0,0,0,127,0,0,0,253,0,0,0,0,127,0,0,0,253,0,0,0,0,127,0,0,0,253,0,0,0,0,127,0,0,0,253,0,0,0,0,127,0,0,0,253,0,0,0,0,127,0,3,255,253,0,0,0,0,127,0,1,255,252,0,0,0,0,126,0,0,255,224,0,0,0, + // 0x5075 偵 + 117,80,33,35,59,36,1,252,0,0,100,0,0,252,0,0,0,0,0,254,0,0,252,0,0,0,0,1,253,0,0,252,0,0,0,0,3,252,0,0,255,255,255,192,0,7,244,0,0,255,255,255,192,0,15,240,0,0,255,255,255,128,0,31,208,0,0,252,0,0,0,0,63,192,0,0,252,0,0,0,0,191,64,106,170,254,170,168,0,1,255,64,127,255,255,255,252,0,3,255,64,127,255,255,255,252,0,11,255,64,127,0,0,0,252,0,47,255,64,127,0,0,0,252,0,127,255,64,127,0,0,0,252,0,255,127,64,127,255,255,255,252,0,190,63,64,127,255,255,255,252,0,60,63,64,127,85,85,86,252,0,16,63,64,127,0,0,0,252,0,0,63,64,127,0,0,0,252,0,0,63,64,127,255,255,255,252,0,0,63,64,127,255,255,255,252,0,0,63,64,127,85,85,86,252,0,0,63,64,127,0,0,0,252,0,0,63,64,127,0,0,0,252,0,0,63,64,127,255,255,255,252,0,0,63,64,127,255,255,255,252,0,0,63,64,42,170,170,170,168,0,0,63,64,0,96,0,9,0,0,0,63,64,2,255,0,191,128,0,0,63,64,15,253,0,127,244,0,0,63,64,191,240,0,15,254,0,0,63,75,255,128,0,2,255,192,0,63,71,253,0,0,0,127,192,0,47,65,224,0,0,0,13,0,0,0,0,0,0,0,0,0,0, + // 0x5099 備 + 153,80,34,35,59,36,1,252,0,2,128,0,248,0,63,0,0,0,7,240,0,252,0,63,0,0,0,11,224,0,252,0,63,0,0,0,15,219,255,255,255,255,255,208,0,31,203,255,255,255,255,255,208,0,63,75,255,255,255,255,255,208,0,127,0,0,252,0,63,0,0,0,254,0,0,252,0,63,0,0,1,253,0,0,248,0,63,0,0,3,253,0,0,0,0,0,0,0,7,253,3,255,255,255,255,255,224,15,253,7,255,255,255,255,255,224,47,253,7,255,255,255,255,255,224,127,253,7,240,0,0,0,0,0,255,253,7,240,0,0,0,0,0,253,189,7,240,170,170,170,170,64,120,189,7,241,255,255,255,255,128,48,189,7,241,255,255,255,255,128,0,189,7,241,244,7,208,15,128,0,189,7,225,244,7,208,15,128,0,189,7,225,248,7,208,31,128,0,189,7,225,255,255,255,255,128,0,189,7,225,255,255,255,255,128,0,189,11,209,244,7,208,15,128,0,189,11,209,244,7,208,15,128,0,189,15,193,248,7,208,31,128,0,189,15,193,255,255,255,255,128,0,189,31,193,255,255,255,255,128,0,189,47,129,244,7,208,15,128,0,189,63,65,244,7,208,15,128,0,189,127,1,244,7,208,15,128,0,189,254,1,244,7,210,175,128,0,189,124,1,244,7,211,255,64,0,189,24,1,244,7,211,253,0,0,0,0,0,0,0,0,0,0, + // 0x50b3 傳 + 179,80,34,34,50,36,1,253,0,0,224,0,0,189,0,0,0,0,1,252,0,0,253,0,0,0,0,3,254,170,170,254,170,170,128,0,3,255,255,255,255,255,255,192,0,11,247,255,255,255,255,255,192,0,15,208,0,0,253,0,0,0,0,63,192,0,0,253,0,0,0,0,127,64,255,255,255,255,255,0,0,255,0,255,255,255,255,255,0,2,255,0,252,0,253,0,127,0,3,255,0,252,0,253,0,127,0,15,255,0,255,255,255,255,255,0,47,255,0,255,255,255,255,255,0,191,255,0,252,0,253,0,127,0,255,191,0,252,0,253,0,127,0,189,127,0,255,255,255,255,255,0,56,127,0,255,255,255,255,255,0,16,127,0,0,0,253,7,244,0,0,127,0,0,0,253,2,253,0,0,127,11,255,255,255,255,255,64,0,127,7,255,255,255,255,255,208,0,127,2,170,85,85,47,135,192,0,127,0,0,0,0,47,129,0,0,127,10,170,170,170,191,234,144,0,127,31,255,255,255,255,255,224,0,127,31,255,255,255,255,255,224,0,127,0,11,128,0,47,128,0,0,127,0,31,224,0,47,128,0,0,127,0,11,248,0,47,128,0,0,127,0,2,253,0,47,128,0,0,127,0,0,191,0,47,128,0,0,127,0,0,56,127,255,128,0,0,127,0,0,0,63,255,64,0,0,126,0,0,0,47,249,0,0, + // 0x50be 傾 + 190,80,34,35,59,36,1,252,0,5,0,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,192,0,191,255,255,255,208,0,47,128,0,191,255,255,255,208,0,63,95,128,191,255,255,255,208,0,127,31,128,0,3,248,0,0,0,190,31,128,0,3,240,0,0,0,253,31,128,10,171,250,170,0,2,252,31,128,15,255,255,255,64,3,252,31,130,79,255,255,255,64,11,252,31,139,239,192,0,47,64,15,252,31,175,223,192,0,47,64,63,252,31,255,79,192,0,47,64,127,252,31,253,15,255,255,255,64,255,252,31,240,15,255,255,255,64,252,252,31,192,15,213,85,127,64,116,252,31,128,15,192,0,47,64,48,252,31,128,15,192,0,47,64,0,252,31,128,15,213,85,127,64,0,252,31,128,15,255,255,255,64,0,252,31,129,79,255,255,255,64,0,252,31,130,255,192,0,47,64,0,252,31,130,255,192,0,47,64,0,252,31,130,255,192,0,47,64,0,252,31,131,255,255,255,255,64,0,252,31,255,239,255,255,255,64,0,252,15,255,218,170,170,170,0,0,252,7,255,64,96,0,128,0,0,252,0,0,2,253,7,240,0,0,252,0,0,15,252,7,253,0,0,252,0,0,191,240,0,255,64,0,252,0,7,255,128,0,63,224,0,252,0,7,252,0,0,15,208,0,252,0,1,208,0,0,3,64,0,0,0,0,0,0,0,0,0, + // 0x5132 儲 + 50,81,34,34,50,36,1,253,0,10,64,0,0,7,224,0,0,0,15,218,170,160,7,224,15,128,0,15,207,255,240,7,224,15,192,0,47,143,255,240,7,224,47,128,0,63,0,0,0,175,250,127,0,0,127,0,0,0,255,255,191,0,0,253,42,170,169,255,255,253,0,1,252,63,255,253,7,224,252,0,3,252,63,255,253,7,226,244,0,7,252,0,0,0,7,227,240,0,15,252,0,0,0,7,239,208,0,47,252,10,170,163,255,255,255,224,63,252,15,255,247,255,255,255,224,255,252,15,255,246,170,255,186,144,253,252,0,0,0,2,252,176,0,120,252,0,0,0,11,241,252,0,48,252,10,170,160,31,208,63,0,0,252,15,255,244,191,128,28,0,0,252,15,255,246,255,255,255,64,0,252,0,0,15,255,255,255,64,0,252,0,0,7,255,255,255,64,0,252,10,170,170,143,192,47,64,0,252,31,255,252,15,192,47,64,0,252,31,255,252,15,192,47,64,0,252,31,64,252,15,255,255,64,0,252,31,64,252,15,255,255,64,0,252,31,64,252,15,213,127,64,0,252,31,64,252,15,192,47,64,0,252,31,64,252,15,192,47,64,0,252,31,255,252,15,192,47,64,0,252,31,255,252,15,255,255,64,0,252,31,234,168,15,255,255,64,0,252,31,64,0,15,234,191,64,0,252,10,0,0,15,192,47,0, + // 0x5145 充 + 69,81,33,35,59,36,2,252,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,191,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,254,0,0,0,15,240,0,20,0,0,0,0,0,31,208,0,124,0,0,0,0,0,63,192,1,255,64,0,0,0,0,63,64,0,127,208,0,0,0,0,191,0,0,31,244,0,0,0,0,253,0,0,7,253,0,0,0,2,254,170,255,255,255,64,0,31,255,255,255,255,255,255,208,0,31,255,255,255,255,255,255,240,0,31,255,255,234,149,80,7,252,0,9,80,0,0,0,0,2,248,0,0,0,31,192,3,240,0,208,0,0,0,47,192,3,240,0,0,0,0,0,63,192,3,240,0,0,0,0,0,63,128,3,240,0,0,0,0,0,63,128,3,240,0,0,0,0,0,127,64,3,240,0,0,0,0,0,191,0,3,240,0,16,0,0,0,255,0,3,240,0,46,0,0,2,253,0,3,240,0,47,64,0,7,252,0,3,240,0,47,64,0,31,244,0,3,240,0,47,64,0,191,224,0,3,240,0,63,0,27,255,128,0,3,248,0,127,0,255,253,0,0,3,255,255,255,0,191,224,0,0,1,255,255,253,0,62,0,0,0,0,127,255,244,0,0,0,0,0,0,0,0,0,0, + // 0x5148 先 + 72,81,32,35,24,36,2,252,0,0,0,11,224,0,0,0,0,11,144,11,224,0,0,0,0,15,224,11,224,0,0,0,0,15,208,11,224,0,0,0,0,31,192,11,224,0,0,0,0,63,192,11,240,0,0,0,0,63,255,255,255,255,255,192,0,191,255,255,255,255,255,192,0,255,255,255,255,255,255,192,1,252,0,11,224,0,0,0,3,248,0,11,224,0,0,0,11,240,0,11,224,0,0,0,15,224,0,11,224,0,0,0,3,192,0,11,224,0,0,0,0,0,0,11,224,0,0,0,0,0,0,11,240,0,0,0,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,0,0,63,128,3,240,0,0,0,0,63,64,3,240,0,0,0,0,63,64,3,240,0,0,0,0,127,0,3,240,0,0,0,0,191,0,3,240,0,0,0,0,254,0,3,240,0,0,0,2,252,0,3,240,0,52,0,7,252,0,3,240,0,63,0,15,240,0,3,240,0,63,0,127,224,0,3,240,0,63,2,255,192,0,3,244,0,191,111,254,0,0,3,255,255,254,255,248,0,0,2,255,255,252,63,192,0,0,0,191,255,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5149 光 + 73,81,34,35,59,36,1,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,1,0,0,0,109,0,3,248,0,7,224,0,0,255,0,3,248,0,15,240,0,0,127,64,3,248,0,15,224,0,0,63,192,3,248,0,47,192,0,0,31,208,3,248,0,63,128,0,0,15,240,3,248,0,127,0,0,0,7,244,3,248,0,254,0,0,0,3,248,3,248,2,252,0,0,0,2,252,3,248,3,248,0,0,0,1,208,3,248,0,96,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,15,240,0,252,0,0,0,0,0,15,224,0,252,0,0,0,0,0,15,208,0,252,0,0,0,0,0,15,208,0,252,0,0,0,0,0,31,192,0,252,0,0,0,0,0,47,192,0,252,0,0,0,0,0,63,192,0,252,0,0,0,0,0,127,64,0,252,0,0,0,0,0,255,0,0,252,0,10,0,0,2,254,0,0,252,0,11,208,0,7,252,0,0,252,0,11,208,0,31,244,0,0,252,0,15,208,0,191,224,0,0,252,0,15,192,27,255,128,0,0,253,0,31,192,127,254,0,0,0,255,255,255,128,47,240,0,0,0,191,255,255,64,14,0,0,0,0,31,255,253,0,0,0,0,0,0,0,0,0,0, + // 0x5165 入 + 101,81,34,32,32,36,1,253,0,2,255,255,252,0,0,0,0,0,2,255,255,252,0,0,0,0,0,2,255,255,252,0,0,0,0,0,1,85,85,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,5,255,0,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,47,255,128,0,0,0,0,0,0,63,255,192,0,0,0,0,0,0,63,223,192,0,0,0,0,0,0,127,79,224,0,0,0,0,0,0,255,11,240,0,0,0,0,0,1,254,7,248,0,0,0,0,0,3,253,3,252,0,0,0,0,0,7,252,2,254,0,0,0,0,0,15,244,0,255,0,0,0,0,0,31,240,0,191,192,0,0,0,0,63,192,0,63,224,0,0,0,0,255,128,0,31,244,0,0,0,2,255,0,0,11,252,0,0,0,11,253,0,0,3,255,0,0,0,47,244,0,0,0,255,208,0,0,191,224,0,0,0,127,244,0,3,255,128,0,0,0,31,254,0,47,254,0,0,0,0,7,255,208,127,248,0,0,0,0,0,255,192,15,208,0,0,0,0,0,47,0,2,0,0,0,0,0,0,5,0, + // 0x5168 全 + 104,81,34,33,41,36,1,254,0,0,0,7,252,0,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,47,255,64,0,0,0,0,0,0,127,191,192,0,0,0,0,0,1,255,15,240,0,0,0,0,0,7,252,7,252,0,0,0,0,0,15,240,1,255,0,0,0,0,0,63,208,0,127,192,0,0,0,1,255,64,0,31,244,0,0,0,7,252,0,0,3,254,0,0,0,47,240,0,0,0,255,192,0,0,255,192,0,0,0,47,244,0,11,254,0,0,0,0,7,255,0,63,255,255,255,255,255,255,255,208,127,235,255,255,255,255,254,191,192,31,71,255,255,255,255,254,31,64,8,0,0,3,248,0,0,1,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,15,255,255,255,255,255,255,255,64,15,255,255,255,255,255,255,255,64,15,255,255,255,255,255,255,255,64, + // 0x5171 共 + 113,81,32,34,16,36,2,253,0,0,168,0,0,42,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,1,253,0,0,191,64,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,85,85,254,85,85,191,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,0,0,120,0,0,0,0,255,128,3,255,0,0,0,3,255,0,0,255,208,0,0,15,252,0,0,47,248,0,0,127,240,0,0,11,255,0,2,255,192,0,0,1,255,192,31,254,0,0,0,0,127,240,127,244,0,0,0,0,15,253,47,208,0,0,0,0,3,248,10,0,0,0,0,0,0,144, + // 0x5177 具 + 119,81,32,33,8,36,2,253,0,26,170,170,170,170,168,0,0,47,255,255,255,255,252,0,0,47,255,255,255,255,252,0,0,47,128,0,0,1,252,0,0,47,128,0,0,1,252,0,0,47,128,0,0,1,252,0,0,47,255,255,255,255,252,0,0,47,255,255,255,255,252,0,0,47,149,85,85,86,252,0,0,47,128,0,0,1,252,0,0,47,128,0,0,1,252,0,0,47,149,85,85,86,252,0,0,47,255,255,255,255,252,0,0,47,255,255,255,255,252,0,0,47,128,0,0,1,252,0,0,47,128,0,0,1,252,0,0,47,128,0,0,1,252,0,0,47,255,255,255,255,252,0,0,47,255,255,255,255,252,0,0,26,170,170,170,170,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,4,0,0,0,0,0,0,0,63,0,0,184,0,0,0,2,255,192,3,255,208,0,0,127,255,64,1,255,254,0,11,255,248,0,0,31,255,228,255,255,64,0,0,0,191,254,63,228,0,0,0,0,11,252,13,0,0,0,0,0,0,160, + // 0x5197 冗 + 151,81,33,32,32,36,2,253,21,85,85,85,85,85,85,84,0,63,255,255,255,255,255,255,252,0,63,255,255,255,255,255,255,252,0,63,255,255,255,255,255,255,252,0,63,64,0,0,0,0,1,252,0,63,64,0,0,0,0,1,252,0,63,64,0,0,0,0,1,252,0,63,64,0,0,0,0,1,252,0,63,64,0,0,0,0,1,252,0,63,64,0,0,0,0,1,252,0,0,0,255,255,255,255,0,0,0,0,0,255,255,255,255,0,0,0,0,0,255,255,255,255,0,0,0,0,0,254,0,0,191,0,0,0,0,0,254,0,0,191,0,0,0,0,0,254,0,0,191,0,0,0,0,0,254,0,0,191,0,0,0,0,0,254,0,0,191,0,0,0,0,0,253,0,0,191,0,0,0,0,0,253,0,0,191,0,0,0,0,1,252,0,0,191,0,0,0,0,2,252,0,0,191,0,0,0,0,3,252,0,0,191,0,40,0,0,11,244,0,0,191,0,47,64,0,15,240,0,0,191,0,47,64,0,63,208,0,0,191,0,63,64,1,255,192,0,0,191,0,63,64,11,255,0,0,0,191,0,127,0,191,252,0,0,0,191,255,255,0,255,224,0,0,0,63,255,254,0,127,64,0,0,0,31,255,248,0,36,0,0,0,0,0,85,64,0, + // 0x51b7 冷 + 183,81,34,34,50,36,1,253,0,0,0,0,7,244,0,0,0,0,0,0,0,15,252,0,0,0,7,0,0,0,47,255,0,0,0,31,208,0,0,63,255,128,0,0,63,244,0,0,255,47,208,0,0,15,254,0,3,253,15,244,0,0,2,255,128,11,248,3,253,0,0,0,191,192,47,240,1,255,64,0,0,47,64,191,192,0,127,224,0,0,9,2,255,0,0,31,248,0,0,0,11,252,0,0,7,255,64,0,0,63,255,255,255,253,255,224,0,1,255,203,255,255,252,63,208,0,1,255,11,255,255,252,11,128,0,0,184,0,0,0,0,1,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,255,255,255,255,252,0,0,15,211,255,255,255,255,252,0,0,31,227,255,255,255,255,252,0,0,63,192,0,63,128,1,252,0,0,191,64,0,63,128,1,252,0,0,255,0,0,63,128,1,252,0,3,252,0,0,63,128,1,252,0,11,248,0,0,63,128,1,252,0,31,240,0,0,63,128,1,252,0,63,208,0,0,63,130,255,252,0,127,128,0,0,63,129,255,248,0,31,0,0,0,63,128,255,224,0,5,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,47,64,0,0,0, + // 0x51c6 准 + 198,81,34,34,50,36,1,253,0,0,0,0,228,0,100,0,0,0,0,0,2,252,0,191,0,0,2,0,0,3,248,0,254,0,0,15,208,0,7,240,0,252,0,0,31,248,0,15,224,1,252,0,0,7,255,0,31,208,3,244,0,0,0,255,192,63,192,3,240,0,0,0,47,224,127,255,255,255,255,128,0,11,192,255,255,255,255,255,128,0,2,2,255,255,255,255,255,128,0,0,7,255,64,15,208,0,0,0,0,15,255,64,15,192,0,0,0,0,63,255,64,15,192,0,0,0,0,255,255,64,15,192,0,0,0,0,127,63,255,255,255,255,0,0,0,28,63,255,255,255,255,0,0,0,0,63,255,255,255,255,0,0,0,0,63,64,15,192,0,0,0,1,0,63,64,15,192,0,0,0,11,64,63,64,15,192,0,0,0,15,192,63,64,15,192,0,0,0,47,192,63,64,15,192,0,0,0,127,128,63,255,255,255,255,0,0,255,0,63,255,255,255,255,0,2,253,0,63,255,255,255,255,0,3,252,0,63,64,15,192,0,0,15,240,0,63,64,15,192,0,0,47,224,0,63,64,15,192,0,0,127,192,0,63,64,15,192,0,0,63,0,0,63,255,255,255,255,224,10,0,0,63,255,255,255,255,224,0,0,0,63,255,255,255,255,224,0,0,0,63,64,0,0,0,0,0,0,0,63,0,0,0,0,0, + // 0x51fa 出 + 250,81,28,35,245,36,4,252,0,0,0,169,0,0,0,0,0,0,253,0,0,0,0,0,0,253,0,0,0,26,64,0,253,0,1,164,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,128,0,253,0,3,248,47,255,255,255,255,255,248,47,255,255,255,255,255,248,47,255,255,255,255,255,248,0,0,0,254,0,0,0,0,0,0,253,0,0,0,84,0,0,253,0,0,21,253,0,0,253,0,0,127,253,0,0,253,0,0,127,253,0,0,253,0,0,127,253,0,0,253,0,0,127,253,0,0,253,0,0,127,253,0,0,253,0,0,127,253,0,0,253,0,0,127,253,0,0,253,0,0,127,253,0,0,253,0,0,127,254,85,85,254,85,85,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,0,0,0,0,0,127,253,0,0,0,0,0,127,0,0,0,0,0,0,0, + // 0x5206 分 + 6,82,34,34,50,36,1,252,0,0,15,144,0,47,0,0,0,0,0,31,224,0,191,64,0,0,0,0,63,192,0,63,192,0,0,0,0,127,192,0,31,224,0,0,0,0,255,64,0,15,244,0,0,0,2,254,0,0,7,252,0,0,0,7,252,0,0,2,255,0,0,0,15,244,0,0,0,255,128,0,0,63,240,0,0,0,63,224,0,0,255,192,0,0,0,47,244,0,3,255,64,0,0,0,11,253,0,15,253,0,0,0,0,3,255,128,127,253,85,85,85,85,85,255,224,255,223,255,255,255,255,255,127,208,63,79,255,255,255,255,255,15,64,13,15,255,255,255,255,255,1,0,0,0,0,127,0,0,127,0,0,0,0,0,191,0,0,127,0,0,0,0,0,255,0,0,127,0,0,0,0,0,254,0,0,191,0,0,0,0,0,253,0,0,191,0,0,0,0,2,252,0,0,191,0,0,0,0,3,252,0,0,191,0,0,0,0,7,248,0,0,254,0,0,0,0,15,240,0,0,254,0,0,0,0,63,224,0,0,254,0,0,0,0,191,192,0,0,253,0,0,0,3,255,64,0,1,253,0,0,0,31,253,0,0,2,252,0,0,1,255,244,0,21,23,252,0,0,15,255,208,0,63,255,248,0,0,7,254,0,0,63,255,240,0,0,2,224,0,0,47,255,128,0,0,0,0,0,0,0,0,0,0,0, + // 0x5217 列 + 23,82,32,34,16,36,1,252,0,0,0,0,0,0,0,127,47,255,255,255,252,0,0,127,47,255,255,255,252,0,0,127,47,255,255,255,252,169,0,127,0,3,244,0,0,253,0,127,0,7,240,0,0,253,0,127,0,11,240,0,0,253,0,127,0,15,224,0,0,253,0,127,0,15,208,0,0,253,0,127,0,47,255,255,224,253,0,127,0,63,255,255,240,253,0,127,0,127,255,255,224,253,0,127,0,254,0,15,208,253,0,127,1,252,0,15,192,253,0,127,3,248,0,31,192,253,0,127,11,248,0,47,128,253,0,127,31,255,64,63,64,253,0,127,63,255,224,127,0,253,0,127,255,31,253,190,0,253,0,127,61,3,255,253,0,253,0,127,4,0,191,252,0,253,0,127,0,0,31,248,0,253,0,127,0,0,11,240,0,253,0,127,0,0,31,224,0,84,0,127,0,0,63,192,0,0,0,127,0,0,255,64,0,0,0,127,0,2,254,0,0,0,0,127,0,11,252,0,0,0,0,127,0,63,240,0,0,0,0,127,1,255,192,0,0,1,85,191,11,255,0,0,0,3,255,255,3,252,0,0,0,2,255,253,0,208,0,0,0,1,255,224,0,0,0,0,0,0,0,0, + // 0x521d 初 + 29,82,33,34,50,36,1,253,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,15,255,255,255,255,192,0,15,192,15,255,255,255,255,192,0,15,192,15,255,255,255,255,192,0,15,208,0,2,252,0,47,192,63,255,255,208,1,252,0,47,128,63,255,255,240,2,252,0,47,128,63,255,255,208,2,252,0,47,128,0,0,31,192,2,252,0,63,128,0,0,63,64,2,248,0,63,128,0,0,191,0,2,248,0,63,128,0,0,253,16,3,248,0,63,128,0,3,248,120,3,248,0,63,128,0,11,240,253,3,244,0,63,128,0,31,242,244,3,244,0,63,64,0,63,255,224,7,240,0,63,64,0,255,255,128,7,240,0,63,64,3,255,255,128,11,224,0,63,64,15,255,239,224,15,224,0,63,64,127,239,199,248,15,208,0,63,64,191,143,194,244,47,192,0,63,0,62,15,192,224,63,128,0,127,0,40,15,192,0,127,64,0,127,0,0,15,192,0,255,0,0,127,0,0,15,192,1,253,0,0,191,0,0,15,192,7,252,0,0,254,0,0,15,192,15,244,0,0,254,0,0,15,192,63,224,0,2,253,0,0,15,193,255,192,15,255,252,0,0,15,193,255,0,15,255,248,0,0,15,192,124,0,11,255,224,0,0,15,192,16,0,1,84,0,0, + // 0x5230 到 + 48,82,32,33,8,36,1,253,0,0,0,0,0,0,0,63,63,255,255,255,252,0,0,63,63,255,255,255,252,0,0,63,63,255,255,255,252,126,0,63,0,15,240,0,0,126,0,63,0,15,208,0,0,126,0,63,0,47,192,60,0,126,0,63,0,63,192,254,0,126,0,63,0,63,64,63,64,126,0,63,0,127,0,47,192,126,0,63,0,254,0,15,240,126,0,63,63,255,255,255,244,126,0,63,63,255,255,255,252,126,0,63,63,255,255,255,253,126,0,63,5,85,0,0,126,126,0,63,0,0,190,0,32,126,0,63,0,0,190,0,0,126,0,63,0,0,190,0,0,126,0,63,0,0,190,0,0,126,0,63,15,255,255,255,240,126,0,63,15,255,255,255,240,126,0,63,15,255,255,255,240,126,0,63,0,0,190,0,0,126,0,63,0,0,190,0,0,126,0,63,0,0,190,0,0,0,0,63,0,0,190,0,0,0,0,63,0,0,190,0,88,0,0,63,0,0,191,255,252,0,0,63,26,255,255,255,252,0,0,63,127,255,255,255,248,1,85,191,127,255,250,80,0,3,255,255,62,148,0,0,0,1,255,253,0,0,0,0,0,0,255,228, + // 0x5236 制 + 54,82,33,34,50,36,1,253,0,0,47,0,0,0,0,21,0,1,248,63,64,0,0,0,63,64,2,248,63,64,0,0,0,63,64,3,244,63,64,0,3,224,63,64,3,240,63,64,0,3,240,63,64,7,255,255,255,252,3,240,63,64,15,255,255,255,252,3,240,63,64,31,255,255,255,252,3,240,63,64,47,192,63,64,0,3,240,63,64,63,64,63,64,0,3,240,63,64,127,0,63,64,0,3,240,63,64,10,0,63,64,0,3,240,63,64,127,255,255,255,255,131,240,63,64,127,255,255,255,255,131,240,63,64,127,255,255,255,255,131,240,63,64,0,0,63,64,0,3,240,63,64,0,0,63,64,0,3,240,63,64,0,0,63,64,0,3,240,63,64,15,255,255,255,254,3,240,63,64,15,255,255,255,254,3,240,63,64,15,255,255,255,254,3,240,63,64,15,192,63,64,190,3,240,63,64,15,192,63,64,190,3,240,63,64,15,192,63,64,190,2,160,63,64,15,192,63,64,190,0,0,63,64,15,192,63,64,190,0,0,63,64,15,192,63,64,190,0,0,63,64,15,192,63,64,190,0,0,63,64,15,192,63,95,253,0,0,63,64,15,192,63,79,252,0,0,63,64,15,192,63,79,228,0,85,127,64,0,0,63,64,0,0,255,255,0,0,0,63,64,0,0,191,254,0,0,0,63,64,0,0,63,228,0, + // 0x5237 刷 + 55,82,32,34,16,36,1,253,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,63,7,255,255,255,254,0,0,63,7,255,255,255,254,5,64,63,7,255,255,255,254,15,192,63,7,224,0,0,190,15,192,63,7,224,0,0,190,15,192,63,7,224,0,0,190,15,192,63,7,224,0,0,190,15,192,63,7,255,255,255,254,15,192,63,7,255,255,255,254,15,192,63,7,255,255,255,254,15,192,63,7,224,3,240,0,15,192,63,7,224,3,240,0,15,192,63,7,224,3,240,0,15,192,63,7,224,3,240,0,15,192,63,7,239,255,255,255,15,192,63,7,239,255,255,255,15,192,63,7,239,255,255,255,15,192,63,7,239,67,240,63,15,192,63,11,223,67,240,63,15,192,63,11,223,67,240,63,15,192,63,11,223,67,240,63,15,192,63,15,207,67,240,63,15,192,63,15,207,67,240,63,10,128,63,15,207,67,240,63,0,0,63,31,143,67,240,63,0,0,63,31,143,67,247,254,0,0,63,63,79,67,243,253,0,0,63,63,15,67,241,160,0,0,63,190,0,3,240,0,0,85,191,189,0,3,240,0,0,255,255,28,0,3,240,0,0,191,254,0,0,3,240,0,0,127,228, + // 0x5275 創 + 117,82,32,35,24,36,1,252,0,0,26,64,0,0,0,0,0,0,127,224,0,0,0,63,0,0,255,252,0,0,0,63,0,3,254,255,64,0,0,63,0,11,244,127,208,42,0,63,0,47,224,31,244,63,0,63,0,191,128,3,253,63,0,63,3,255,255,255,255,63,0,63,31,250,255,255,60,63,0,63,191,209,85,85,16,63,0,63,63,64,0,0,0,63,0,63,8,255,255,255,244,63,0,63,0,255,255,255,244,63,0,63,0,253,85,87,244,63,0,63,0,252,0,2,244,63,0,63,0,252,0,2,244,63,0,63,0,255,255,255,244,63,0,63,0,255,255,255,244,63,0,63,0,252,0,2,244,63,0,63,0,253,85,87,244,63,0,63,0,255,255,255,244,63,0,63,1,255,255,255,244,63,0,63,2,244,0,0,0,63,0,63,2,244,0,0,0,63,0,63,3,255,255,255,252,63,0,63,3,255,255,255,252,0,0,63,7,255,213,85,252,0,0,63,11,239,128,0,252,0,0,63,15,223,128,0,252,0,0,63,47,143,128,0,252,0,0,63,127,15,255,255,252,1,85,191,125,15,255,255,252,3,255,255,12,15,234,170,252,1,255,253,0,15,128,0,168,0,255,228,0,0,0,0,0,0,0,0, + // 0x529b 力 + 155,82,31,35,24,36,2,252,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,63,255,255,255,255,255,255,248,63,255,255,255,255,255,255,248,63,255,255,255,255,255,255,248,21,85,85,255,85,85,87,244,0,0,0,254,0,0,3,244,0,0,0,254,0,0,3,244,0,0,0,253,0,0,3,244,0,0,1,252,0,0,3,240,0,0,2,252,0,0,7,240,0,0,3,252,0,0,7,240,0,0,3,248,0,0,7,240,0,0,11,244,0,0,11,240,0,0,15,240,0,0,11,240,0,0,31,224,0,0,11,240,0,0,63,192,0,0,15,224,0,0,191,192,0,0,15,224,0,0,255,0,0,0,15,208,0,3,254,0,0,0,15,208,0,11,252,0,0,0,31,192,0,47,244,0,0,0,47,192,0,191,208,0,0,0,63,192,3,255,128,0,0,0,63,128,31,254,0,0,21,85,255,64,191,244,0,0,15,255,255,0,127,208,0,0,15,255,253,0,30,0,0,0,11,255,224,0,0,0,0,0,0,0,0,0, + // 0x52a0 加 + 160,82,32,34,16,36,1,253,0,5,64,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,2,255,255,255,21,95,213,85,2,255,255,255,63,255,255,255,194,255,255,255,63,255,255,255,194,248,0,191,63,255,255,255,194,248,0,191,0,31,192,31,194,248,0,191,0,31,192,31,130,248,0,191,0,47,128,31,130,248,0,191,0,47,128,47,130,248,0,191,0,47,128,47,130,248,0,191,0,47,128,47,130,248,0,191,0,63,64,47,130,248,0,191,0,63,64,47,130,248,0,191,0,63,0,47,130,248,0,191,0,63,0,47,130,248,0,191,0,127,0,47,130,248,0,191,0,190,0,63,66,248,0,191,0,190,0,63,66,248,0,191,0,253,0,63,66,248,0,191,1,252,0,63,66,248,0,191,2,252,0,63,66,248,0,191,3,244,0,63,2,248,0,191,7,240,0,63,2,248,0,191,15,240,0,127,2,255,255,255,31,208,0,255,2,255,255,255,63,193,255,254,2,255,255,255,191,64,255,252,2,248,0,191,46,0,255,244,2,248,0,191,8,0,20,0,1,84,0,0, + // 0x52d5 動 + 213,82,33,35,59,36,1,252,0,0,0,6,64,5,64,0,0,0,86,175,255,192,15,208,0,0,63,255,255,255,224,15,208,0,0,47,255,254,148,0,15,208,0,0,5,64,252,0,0,15,208,0,0,0,0,252,0,0,15,208,0,0,21,85,254,85,80,15,208,0,0,127,255,255,255,244,15,208,0,0,127,255,255,255,249,95,208,0,0,0,0,252,0,15,255,255,255,128,0,0,252,0,15,255,255,255,128,31,255,255,255,251,255,255,255,128,31,255,255,255,240,15,192,47,128,31,64,252,3,240,15,192,47,128,31,64,252,3,240,15,192,47,128,31,255,255,255,240,31,192,47,128,31,255,255,255,240,31,192,47,128,31,64,252,3,240,31,128,47,128,31,64,252,3,240,47,128,47,64,31,64,253,3,240,63,64,63,64,31,255,255,255,240,63,0,63,64,31,255,255,255,240,63,0,63,64,0,0,252,0,0,191,0,63,64,0,0,252,0,0,254,0,63,64,47,255,255,255,240,253,0,63,0,47,255,255,255,242,252,0,63,0,5,85,254,85,83,248,0,63,0,0,0,252,0,11,240,0,127,0,0,0,252,22,175,224,0,127,0,0,86,255,255,255,192,0,190,0,127,255,255,255,255,128,0,254,0,127,255,254,171,254,3,255,253,0,58,148,0,2,252,1,255,252,0,0,0,0,0,160,0,255,224,0,0,0,0,0,0,0,0,0,0, + // 0x5316 化 + 22,83,34,33,41,36,1,253,0,0,47,128,190,0,0,0,0,0,0,63,192,190,0,0,0,0,0,0,191,64,190,0,0,0,0,0,0,255,0,190,0,0,0,0,0,2,253,0,190,0,0,0,0,0,3,252,0,190,0,0,0,0,0,15,240,0,190,0,0,48,0,0,31,224,0,190,0,0,252,0,0,63,208,0,190,0,7,255,0,0,255,208,0,190,0,47,253,0,3,255,208,0,190,1,255,240,0,11,255,208,0,190,11,255,64,0,47,255,208,0,190,127,248,0,0,191,239,208,0,191,255,208,0,0,255,143,208,0,191,253,0,0,0,127,15,208,0,191,224,0,0,0,60,15,208,0,191,0,0,0,0,0,15,208,0,190,0,0,0,0,0,15,208,0,190,0,0,0,0,0,15,208,0,190,0,0,0,0,0,15,208,0,190,0,0,0,0,0,15,208,0,190,0,0,0,0,0,15,208,0,190,0,0,0,0,0,15,208,0,190,0,0,7,128,0,15,208,0,190,0,0,11,224,0,15,208,0,190,0,0,11,224,0,15,208,0,190,0,0,11,208,0,15,208,0,191,0,0,15,208,0,15,208,0,127,64,0,47,192,0,15,208,0,63,255,255,255,192,0,15,208,0,63,255,255,255,64,0,15,208,0,11,255,255,253,0,0,10,128,0,0,0,0,0,0, + // 0x534a 半 + 74,83,32,34,16,36,2,253,0,0,0,15,224,0,0,0,0,120,0,15,224,0,62,0,2,252,0,15,224,0,127,192,0,254,0,15,224,0,191,0,0,191,64,15,224,0,254,0,0,63,192,15,224,2,252,0,0,47,208,15,224,3,248,0,0,15,240,15,224,11,240,0,0,11,240,15,224,31,208,0,0,7,144,15,224,7,192,0,0,0,0,15,224,0,0,0,1,85,85,95,229,85,85,80,15,255,255,255,255,255,255,240,15,255,255,255,255,255,255,240,15,255,255,255,255,255,255,240,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,85,85,85,95,245,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0, + // 0x5354 協 + 84,83,33,35,59,36,1,252,0,127,0,0,0,189,0,0,0,0,127,0,0,0,253,0,0,0,0,127,0,0,0,252,0,0,0,0,127,0,0,0,252,0,0,0,0,127,0,47,255,255,255,254,0,0,127,0,47,255,255,255,254,0,0,127,0,26,171,254,170,254,0,0,127,0,0,3,240,0,189,0,0,127,0,0,11,224,0,189,0,0,127,0,0,31,192,0,252,0,191,255,255,0,63,128,0,252,0,191,255,255,1,255,0,2,252,0,191,255,255,27,252,3,255,248,0,0,127,0,255,224,1,255,240,0,0,127,0,127,64,0,170,64,0,0,127,0,36,0,0,0,0,0,0,127,0,47,0,0,63,0,0,0,127,0,47,0,0,63,0,0,0,127,0,47,0,0,63,0,0,0,127,10,191,170,138,191,170,128,0,127,15,255,255,207,255,255,192,0,127,15,255,255,207,255,255,192,0,127,0,63,15,192,126,15,192,0,127,0,62,15,192,189,15,192,0,127,0,125,15,192,188,15,192,0,127,0,189,15,192,252,15,192,0,127,0,252,15,128,248,15,192,0,127,0,248,15,130,244,15,128,0,127,2,244,15,131,240,15,128,0,127,3,240,31,139,224,15,128,0,127,11,208,31,95,192,31,64,0,127,47,198,191,127,134,191,64,0,127,47,3,255,62,7,255,0,0,127,9,3,248,8,3,252,0,0,0,0,0,0,0,0,0,0, + // 0x5361 卡 + 97,83,32,34,16,36,2,253,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,255,255,255,0,0,0,0,47,255,255,255,0,0,0,0,47,255,255,255,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,111,213,85,85,85,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,238,0,0,0,0,0,0,47,255,248,0,0,0,0,0,47,255,255,208,0,0,0,0,47,203,255,254,0,0,0,0,47,192,111,255,208,0,0,0,47,192,1,255,192,0,0,0,47,192,0,31,64,0,0,0,47,192,0,1,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,31,192,0,0,0, + // 0x5370 印 + 112,83,30,34,16,36,3,253,0,0,6,0,0,0,0,0,0,0,127,192,0,0,0,0,0,7,255,224,85,85,85,80,17,191,255,145,255,255,255,240,127,255,248,1,255,255,255,240,127,254,64,1,255,255,255,240,127,144,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,64,0,1,252,0,3,240,127,255,255,209,252,0,3,240,127,255,255,209,252,0,3,240,127,255,255,209,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,0,0,1,252,0,3,240,127,255,255,225,252,0,7,240,127,255,255,225,252,15,255,240,127,255,255,225,252,11,255,240,127,64,0,1,252,7,255,192,127,0,0,1,252,2,148,0,127,0,0,1,252,0,0,0,21,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0, + // 0x5378 卸 + 120,83,32,34,16,36,1,253,0,62,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,127,0,0,2,255,255,255,0,254,0,0,2,255,255,255,0,255,255,255,226,255,255,255,2,255,255,255,226,252,0,63,7,255,255,255,226,248,0,63,15,224,126,0,2,248,0,63,47,192,126,0,2,248,0,63,63,128,126,0,2,248,0,63,15,0,126,0,2,248,0,63,0,0,126,0,2,248,0,63,63,255,255,255,242,248,0,63,63,255,255,255,242,248,0,63,63,255,255,255,242,248,0,63,0,0,126,0,2,248,0,63,0,0,126,0,2,248,0,63,1,80,126,0,2,248,0,63,3,224,126,0,2,248,0,63,3,224,127,255,194,248,0,63,3,224,127,255,194,248,0,63,3,224,127,255,194,248,0,63,3,224,126,0,2,248,0,63,3,224,126,0,2,248,0,63,3,224,126,0,2,248,0,63,3,224,126,0,2,248,63,255,3,224,126,6,178,248,47,255,3,224,191,255,246,248,31,253,27,255,255,255,246,248,5,64,191,255,255,254,82,248,0,0,191,255,233,0,2,248,0,0,126,144,0,0,2,248,0,0,0,0,0,0,2,248,0,0,0,0,0,0,2,248,0,0, + // 0x537b 卻 + 123,83,32,34,16,36,1,253,0,0,21,0,0,0,0,0,0,0,255,128,0,0,0,0,0,2,255,240,1,255,255,255,0,7,255,252,1,255,255,255,0,31,242,255,1,255,255,255,0,127,192,191,209,252,0,63,1,255,0,31,241,252,0,63,11,252,0,11,245,252,0,63,63,240,0,2,225,252,0,63,15,128,106,0,129,252,0,63,5,0,255,192,1,252,0,63,0,2,255,240,1,252,0,63,0,7,255,252,1,252,0,63,0,15,242,255,1,252,0,63,0,63,192,191,193,252,0,63,0,255,64,47,241,252,0,63,3,253,0,11,249,252,0,63,15,244,0,3,245,252,0,63,127,208,0,0,225,252,0,63,191,255,255,255,129,252,0,63,45,255,255,255,65,252,0,63,0,255,255,255,65,252,0,63,0,252,0,47,65,252,0,63,0,252,0,47,65,252,0,63,0,252,0,47,65,252,63,255,0,252,0,47,65,252,47,255,0,252,0,47,65,252,31,252,0,252,0,47,65,252,5,64,0,255,255,255,65,252,0,0,0,255,255,255,65,252,0,0,0,255,255,255,65,252,0,0,0,252,0,47,65,252,0,0,0,252,0,47,65,252,0,0,0,84,0,0,1,248,0,0, + // 0x539f 原 + 159,83,33,32,32,36,1,253,1,255,255,255,255,255,255,255,192,1,255,255,255,255,255,255,255,192,1,255,255,255,255,255,255,255,192,1,252,0,0,31,208,0,0,0,1,252,0,0,47,192,0,0,0,1,252,0,0,63,192,0,0,0,1,252,31,255,255,255,255,240,0,1,252,31,255,255,255,255,240,0,1,252,31,234,170,170,171,240,0,1,252,31,192,0,0,7,240,0,1,252,31,192,0,0,7,240,0,1,252,31,213,85,85,91,240,0,1,252,31,255,255,255,255,240,0,1,252,31,255,255,255,255,240,0,2,252,31,192,0,0,7,240,0,2,248,31,192,0,0,7,240,0,2,248,31,192,0,0,7,240,0,2,248,31,255,255,255,255,240,0,3,244,31,255,255,255,255,240,0,3,244,10,170,175,234,170,160,0,3,244,0,0,15,208,0,0,0,3,240,0,144,15,208,28,0,0,7,240,2,252,15,208,191,0,0,11,240,7,248,15,208,63,208,0,15,224,15,240,15,208,15,244,0,15,208,63,192,15,208,3,252,0,31,192,255,64,15,208,0,255,0,47,199,253,0,15,208,0,127,192,63,79,244,0,15,208,0,31,192,191,2,208,31,255,208,0,10,0,126,0,0,15,255,192,0,0,0,5,0,0,11,254,0,0,0,0, + // 0x53cd 反 + 205,83,32,33,8,36,2,252,0,255,255,255,255,255,255,248,0,255,255,255,255,255,255,248,0,255,255,255,255,255,255,248,0,254,85,85,85,85,85,80,0,253,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,254,0,0,0,0,4,0,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,0,0,253,47,192,0,0,255,0,0,252,15,224,0,1,253,0,0,252,11,240,0,3,252,0,0,252,7,248,0,7,248,0,1,252,3,252,0,15,240,0,1,252,1,254,0,47,224,0,2,252,0,191,128,127,192,0,2,248,0,63,209,255,64,0,3,244,0,31,247,254,0,0,3,244,0,11,255,248,0,0,7,240,0,2,255,240,0,0,11,240,0,2,255,224,0,0,15,208,0,31,255,253,0,0,31,192,0,255,255,255,208,0,63,192,31,255,193,255,254,64,127,70,255,253,0,47,255,249,255,11,255,224,0,7,255,253,125,3,254,0,0,0,47,248,8,1,144,0,0,0,1,176,0,0,0,0,0,0,0,0, + // 0x53d6 取 + 214,83,34,32,32,36,1,253,63,255,255,255,244,0,0,0,0,63,255,255,255,244,0,0,0,0,63,255,255,255,244,0,0,0,0,2,248,0,127,47,255,255,255,64,2,248,0,63,31,255,255,255,64,2,248,0,63,31,255,255,255,64,2,248,0,63,5,149,85,127,0,2,248,0,63,15,208,0,127,0,2,255,255,255,15,224,0,127,0,2,255,255,255,11,240,0,190,0,2,255,255,255,7,240,0,253,0,2,248,0,63,3,244,0,252,0,2,248,0,63,3,248,1,252,0,2,248,0,63,1,252,3,248,0,2,248,0,63,0,253,3,244,0,2,255,255,255,0,255,11,240,0,2,255,255,255,0,127,15,224,0,2,255,255,255,0,63,175,208,0,2,248,0,63,0,31,255,192,0,2,248,0,63,0,15,255,64,0,2,248,0,63,0,11,255,0,0,2,248,0,63,0,3,253,0,0,2,248,26,255,0,7,253,0,0,7,255,255,255,0,15,255,64,0,255,255,255,255,0,63,255,192,0,191,255,254,191,0,255,175,240,0,127,229,0,63,3,255,15,252,0,16,0,0,63,31,252,3,255,64,0,0,0,63,191,240,0,255,224,0,0,0,63,127,128,0,63,208,0,0,0,63,45,0,0,11,128,0,0,0,63,0,0,0,1,0, + // 0x53f0 台 + 240,83,32,34,16,36,2,253,0,0,3,208,0,0,0,0,0,0,3,252,0,0,0,0,0,0,11,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,47,208,0,9,0,0,0,0,63,192,0,63,64,0,0,0,191,64,0,191,208,0,0,0,254,0,0,31,244,0,0,3,252,0,0,7,254,0,0,7,244,0,0,1,255,64,0,15,245,170,175,255,255,208,191,255,255,255,255,255,255,244,191,255,255,255,255,255,255,252,127,255,255,250,170,85,66,255,21,64,0,0,0,0,0,255,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,191,255,255,255,255,254,0,0,191,255,255,255,255,254,0,0,191,255,255,255,255,254,0,0,191,0,0,0,0,254,0,0,191,0,0,0,0,254,0,0,191,0,0,0,0,254,0,0,191,0,0,0,0,254,0,0,191,0,0,0,0,254,0,0,191,0,0,0,0,254,0,0,191,0,0,0,0,254,0,0,191,0,0,0,0,254,0,0,191,255,255,255,255,254,0,0,191,255,255,255,255,254,0,0,191,255,255,255,255,254,0,0,191,0,0,0,1,254,0,0,127,0,0,0,0,253,0, + // 0x5408 合 + 8,84,34,35,59,36,1,252,0,0,0,3,248,0,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,47,255,64,0,0,0,0,0,0,127,255,192,0,0,0,0,0,1,255,31,240,0,0,0,0,0,7,253,11,252,0,0,0,0,0,31,248,2,255,64,0,0,0,0,127,224,0,191,208,0,0,0,1,255,128,0,47,248,0,0,0,11,254,0,0,7,255,0,0,0,63,248,0,0,1,255,208,0,1,255,208,0,0,0,127,253,0,15,255,255,255,255,255,255,255,128,127,248,255,255,255,255,241,255,224,63,192,255,255,255,255,240,47,192,13,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,0,0,0,15,255,255,255,255,255,0,0,0,15,255,255,255,255,255,0,0,0,15,208,0,0,0,127,0,0,0,15,208,0,0,0,63,0,0,0,15,208,0,0,0,63,0,0,0,15,208,0,0,0,63,0,0,0,15,208,0,0,0,63,0,0,0,15,208,0,0,0,63,0,0,0,15,208,0,0,0,63,0,0,0,15,208,0,0,0,63,0,0,0,15,255,255,255,255,255,0,0,0,15,255,255,255,255,255,0,0,0,15,255,255,255,255,255,0,0,0,15,208,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0, + // 0x5426 否 + 38,84,33,32,32,36,1,253,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,0,0,0,0,255,192,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,127,248,4,0,0,0,0,0,2,255,248,63,128,0,0,0,0,31,255,248,255,248,0,0,0,1,255,247,248,47,255,64,0,0,31,255,131,248,2,255,240,0,1,255,253,3,248,0,47,254,0,111,255,224,3,248,0,7,255,192,63,254,0,3,248,0,0,191,192,31,224,0,3,248,0,0,31,0,10,0,0,3,248,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,128,0,0,0,47,192,0,0,47,128,0,0,0,47,192,0,0,47,128,0,0,0,47,192,0,0,47,128,0,0,0,47,192,0,0,47,128,0,0,0,47,192,0,0,47,128,0,0,0,47,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,128,0,0,0,47,192,0,0,47,128,0,0,0,26,128,0, + // 0x544a 告 + 74,84,32,35,24,36,2,252,0,6,64,3,248,0,0,0,0,15,240,3,248,0,0,0,0,15,208,3,248,0,0,0,0,47,192,3,248,0,0,0,0,63,128,3,248,0,0,0,0,191,255,255,255,255,255,208,1,255,255,255,255,255,255,208,3,255,255,255,255,255,255,208,11,244,0,3,248,0,0,0,31,240,0,3,248,0,0,0,63,192,0,3,248,0,0,0,31,64,0,3,248,0,0,0,1,0,0,3,248,0,0,0,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,127,0,0,0,0,191,0,0,127,0,0,0,0,191,0,0,127,0,0,0,0,191,0,0,127,0,0,0,0,191,0,0,127,0,0,0,0,191,0,0,127,0,0,0,0,191,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,127,0,0,0,0,191,0,0,127,0,0,0,0,191,0,0,0,0,0,0,0,0,0, + // 0x547d 命 + 125,84,34,35,59,36,1,252,0,0,0,11,252,0,0,0,0,0,0,0,31,255,0,0,0,0,0,0,0,127,255,128,0,0,0,0,0,1,255,111,224,0,0,0,0,0,7,253,11,252,0,0,0,0,0,47,248,2,255,0,0,0,0,0,255,208,0,191,208,0,0,0,7,255,64,0,31,248,0,0,0,47,252,0,0,3,255,64,0,2,255,255,255,255,255,255,240,0,31,255,223,255,255,255,111,255,64,255,253,15,255,255,255,71,255,240,127,224,0,0,0,0,0,191,208,46,0,0,0,0,0,0,11,128,0,0,0,0,0,0,0,0,0,0,255,255,252,15,255,255,248,0,0,255,255,252,15,255,255,248,0,0,255,255,252,15,255,255,248,0,0,252,0,252,15,192,2,248,0,0,252,0,252,15,192,2,248,0,0,252,0,252,15,192,2,248,0,0,252,0,252,15,192,2,248,0,0,252,0,252,15,192,2,248,0,0,252,0,252,15,192,2,248,0,0,252,0,252,15,192,2,248,0,0,255,255,252,15,192,2,248,0,0,255,255,252,15,192,2,248,0,0,255,255,252,15,195,255,244,0,0,252,0,0,15,194,255,240,0,0,252,0,0,15,193,255,144,0,0,252,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x548c 和 + 140,84,32,34,16,36,1,253,0,0,0,4,0,0,0,0,0,0,1,252,0,0,0,0,0,1,191,255,0,0,0,0,6,255,255,255,64,0,0,0,47,255,255,144,15,255,255,254,15,255,252,0,15,255,255,254,4,1,252,0,15,255,255,254,0,1,252,0,15,192,0,254,0,1,252,0,15,192,0,254,0,1,252,0,15,192,0,254,0,1,252,0,15,192,0,254,63,255,255,255,143,192,0,254,63,255,255,255,143,192,0,254,63,255,255,255,143,192,0,254,0,7,252,0,15,192,0,254,0,15,254,0,15,192,0,254,0,15,255,64,15,192,0,254,0,47,255,208,15,192,0,254,0,63,255,240,15,192,0,254,0,191,254,252,15,192,0,254,0,253,252,255,15,192,0,254,3,245,252,63,143,192,0,254,7,241,252,47,15,192,0,254,15,209,252,13,15,192,0,254,63,193,252,0,15,192,0,254,191,65,252,0,15,192,0,254,190,1,252,0,15,255,255,254,60,1,252,0,15,255,255,254,16,1,252,0,15,255,255,254,0,1,252,0,15,208,0,254,0,1,252,0,15,192,0,254,0,1,252,0,15,192,0,254,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0, + // 0x555f 啟 + 95,85,34,35,59,36,1,252,0,0,100,0,0,3,160,0,0,0,1,252,0,0,7,240,0,0,0,0,252,0,0,11,224,0,0,0,0,190,0,0,11,208,0,0,0,0,127,0,0,15,192,0,0,3,255,255,255,192,15,192,0,0,3,255,255,255,192,31,192,0,0,3,255,255,255,192,47,255,255,208,3,240,0,15,192,63,255,255,208,3,240,0,15,192,127,255,255,208,3,240,0,15,192,191,0,190,0,3,240,0,15,192,255,0,189,0,3,240,0,15,194,255,0,253,0,3,255,255,255,195,255,64,252,0,3,255,255,255,203,255,64,252,0,3,255,255,255,223,239,129,252,0,3,240,0,0,7,207,194,248,0,3,240,0,0,1,75,211,244,0,7,240,0,0,0,7,227,240,0,7,250,170,170,144,3,247,240,0,7,239,255,255,224,3,255,208,0,7,239,255,255,224,1,255,192,0,11,223,192,7,224,0,255,192,0,15,223,192,7,224,0,191,64,0,15,207,192,7,224,0,191,0,0,15,207,192,7,224,1,255,128,0,31,143,192,7,224,3,255,208,0,47,143,192,7,224,11,255,240,0,63,79,234,175,224,31,231,248,0,127,15,255,255,224,127,194,254,0,190,15,255,255,226,255,0,255,128,44,15,192,7,235,253,0,63,224,4,15,192,7,227,240,0,15,192,0,5,64,0,1,192,0,2,0,0,0,0,0,0,0,0,0,0, + // 0x55ae 單 + 174,85,32,32,0,36,2,253,7,255,255,252,47,255,255,224,7,255,255,252,47,255,255,224,7,224,1,252,47,64,11,224,7,224,1,252,47,64,11,224,7,224,1,252,47,64,11,224,7,255,255,252,47,255,255,224,7,255,255,252,47,255,255,224,0,0,0,0,0,0,0,0,0,170,170,170,170,170,170,64,1,255,255,255,255,255,255,128,1,255,255,255,255,255,255,128,1,252,0,15,224,0,63,128,1,252,0,15,224,0,63,128,1,253,85,95,245,85,127,128,1,255,255,255,255,255,255,128,1,255,255,255,255,255,255,128,1,252,0,15,224,0,63,128,1,252,0,15,224,0,63,128,1,252,0,15,224,0,63,128,1,255,255,255,255,255,255,128,1,255,255,255,255,255,255,128,0,170,170,175,250,170,170,64,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,10,144,0,0,0, + // 0x5634 嘴 + 52,86,33,35,59,36,2,252,0,0,0,2,240,15,192,0,0,0,0,0,3,240,15,192,0,0,0,0,1,131,240,15,192,112,0,127,255,195,211,240,15,194,252,0,127,255,195,211,255,223,239,244,0,127,255,195,211,255,223,255,64,0,124,11,195,211,245,79,244,0,0,124,11,195,211,240,15,192,0,0,124,11,195,211,240,15,192,15,64,124,11,195,211,246,159,192,15,64,124,11,195,255,255,223,229,111,64,124,11,239,255,255,219,255,255,0,124,11,239,255,252,2,255,252,0,124,11,218,67,248,1,0,0,0,124,11,192,11,255,255,192,0,0,124,11,192,31,255,255,208,0,0,124,11,192,127,64,47,128,0,0,124,11,193,255,0,127,64,0,0,124,11,203,255,255,255,255,248,0,124,11,255,255,255,255,255,248,0,127,255,207,190,0,248,2,248,0,127,255,192,126,0,248,2,248,0,127,255,192,127,255,255,255,248,0,124,0,0,127,255,255,255,248,0,124,0,0,190,0,248,2,248,0,124,0,0,189,0,248,2,248,0,40,0,0,254,1,252,2,248,0,0,0,0,255,255,255,255,248,0,0,0,2,255,255,255,255,248,0,0,0,3,248,0,0,2,248,0,0,0,15,240,0,0,2,248,0,0,0,63,208,0,1,87,244,0,0,0,191,64,0,3,255,240,0,0,0,29,0,0,1,255,144,0,0,0,0,0,0,0,0,0,0, + // 0x5668 器 + 104,86,34,34,50,36,1,252,1,170,170,168,2,170,170,168,0,2,255,255,252,3,255,255,248,0,2,255,255,252,3,255,255,248,0,2,244,0,252,3,240,1,248,0,2,244,0,252,3,240,1,248,0,2,244,0,252,3,240,1,248,0,2,244,0,252,3,240,1,248,0,2,244,0,252,3,240,1,248,0,2,254,170,252,3,250,171,248,0,2,255,255,252,3,255,255,248,0,2,255,255,255,147,255,255,248,0,0,0,0,15,240,0,0,0,0,0,0,0,63,192,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,63,240,0,255,64,0,0,0,1,255,192,0,63,224,0,0,0,11,255,0,0,31,253,0,0,0,191,252,0,0,3,255,208,0,27,255,224,0,0,0,255,253,0,255,255,255,253,11,255,255,255,224,127,255,255,253,11,255,255,255,208,47,255,255,253,11,255,255,255,128,0,252,0,189,11,208,3,240,0,0,252,0,189,11,208,3,240,0,0,252,0,189,11,208,3,240,0,0,252,0,189,11,208,3,240,0,0,252,0,189,11,208,3,240,0,0,255,255,253,11,255,255,240,0,0,255,255,253,11,255,255,240,0,0,255,255,253,11,255,255,240,0,0,252,0,189,11,208,3,240,0,0,0,0,0,0,0,0,0,0, + // 0x5674 噴 + 116,86,33,35,59,36,2,252,0,0,0,0,0,252,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0,85,85,253,85,84,0,0,0,0,255,255,255,255,252,0,127,255,240,255,255,255,255,252,0,127,255,240,0,0,252,0,0,0,127,255,240,7,208,252,47,0,0,125,3,240,7,208,168,47,0,0,125,3,241,91,229,85,127,85,0,125,3,251,255,255,255,255,255,128,125,3,251,255,255,255,255,255,128,125,3,240,7,208,0,47,0,0,125,3,240,7,208,0,47,0,0,125,3,240,0,0,0,0,0,0,125,3,240,127,255,255,255,240,0,125,3,240,127,255,255,255,240,0,125,3,240,126,0,0,3,240,0,125,3,240,126,0,0,3,240,0,125,3,240,127,255,255,255,240,0,125,3,240,127,255,255,255,240,0,125,3,240,126,0,0,3,240,0,127,255,240,126,0,0,3,240,0,127,255,240,127,255,255,255,240,0,127,255,240,127,255,255,255,240,0,125,0,0,126,0,0,3,240,0,125,0,0,126,0,0,3,240,0,61,0,0,127,255,255,255,240,0,0,0,0,127,255,255,255,240,0,0,0,0,2,228,0,248,0,0,0,0,0,31,252,2,255,64,0,0,0,6,255,224,0,127,244,0,0,0,127,255,0,0,11,254,0,0,0,63,228,0,0,0,255,64,0,0,14,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0, + // 0x56de 回 + 222,86,30,33,8,36,3,253,85,85,85,85,85,85,85,80,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,253,0,255,255,255,240,11,240,253,0,255,255,255,240,11,240,253,0,255,255,255,240,11,240,253,0,252,0,7,240,11,240,253,0,252,0,7,240,11,240,253,0,252,0,7,240,11,240,253,0,252,0,7,240,11,240,253,0,252,0,7,240,11,240,253,0,252,0,7,240,11,240,253,0,252,0,7,240,11,240,253,0,252,0,7,240,11,240,253,0,255,255,255,240,11,240,253,0,255,255,255,240,11,240,253,0,255,255,255,240,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,254,0,0,0,0,0,11,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240, + // 0x56e0 因 + 224,86,30,32,0,36,3,253,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,253,0,0,0,0,0,7,240,253,0,0,26,64,0,7,240,253,0,0,47,64,0,7,240,253,0,0,63,64,0,7,240,253,0,0,63,64,0,7,240,253,0,0,63,0,0,7,240,253,0,0,63,0,0,7,240,253,63,255,255,255,255,199,240,253,63,255,255,255,255,199,240,253,63,255,255,255,255,199,240,253,0,0,127,192,0,7,240,253,0,0,191,208,0,7,240,253,0,0,255,240,0,7,240,253,0,1,255,240,0,7,240,253,0,3,249,252,0,7,240,253,0,7,240,253,0,7,240,253,0,31,240,191,64,7,240,253,0,127,192,63,208,7,240,253,1,255,64,15,248,7,240,253,31,253,0,7,255,135,240,253,63,240,0,0,255,135,240,253,31,128,0,0,47,7,240,253,4,0,0,0,0,7,240,253,0,0,0,0,0,7,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,7,240, + // 0x56fa 固 + 250,86,30,32,0,36,3,253,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,253,0,0,0,0,0,11,240,253,0,0,21,64,0,11,240,253,0,0,47,128,0,11,240,253,0,0,47,128,0,11,240,253,0,0,47,128,0,11,240,253,26,170,191,234,170,139,240,253,47,255,255,255,255,139,240,253,47,255,255,255,255,139,240,253,0,0,47,128,0,11,240,253,0,0,47,128,0,11,240,253,0,0,47,128,0,11,240,253,1,170,191,234,164,11,240,253,2,255,255,255,252,11,240,253,2,255,255,255,252,11,240,253,2,244,0,1,252,11,240,253,2,244,0,1,252,11,240,253,2,244,0,1,252,11,240,253,2,244,0,1,252,11,240,253,2,254,170,170,252,11,240,253,2,255,255,255,252,11,240,253,2,255,255,255,252,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,253,0,0,0,0,0,11,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,254,0,0,0,0,0,11,240,253,0,0,0,0,0,7,240, + // 0x5716 圖 + 22,87,30,34,16,36,3,252,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,252,0,0,0,0,0,3,240,252,0,0,0,0,0,3,240,252,0,255,255,255,240,3,240,252,0,255,255,255,240,3,240,252,0,248,0,3,240,3,240,252,0,248,0,3,240,3,240,252,0,255,255,255,240,3,240,252,0,255,255,255,240,3,240,252,0,0,47,64,0,3,240,252,127,255,255,255,255,211,240,252,127,255,255,255,255,211,240,252,0,0,0,0,0,3,240,252,7,255,255,255,252,3,240,252,7,255,255,255,253,3,240,252,7,208,0,0,125,3,240,252,7,209,170,164,125,3,240,252,7,211,255,248,125,3,240,252,7,211,192,120,125,3,240,252,7,211,192,120,125,3,240,252,7,211,255,248,125,3,240,252,7,209,170,164,125,3,240,252,7,208,0,0,125,3,240,252,7,255,255,255,253,3,240,252,7,255,255,255,253,3,240,252,0,0,0,0,0,3,240,252,0,0,0,0,0,3,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,252,0,0,0,0,0,3,240,0,0,0,0,0,0,0,0, + // 0x5728 在 + 40,87,33,34,50,36,1,253,0,0,0,100,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,0,0,47,192,0,0,0,0,0,0,0,127,128,0,20,0,0,0,0,0,255,0,0,190,0,0,0,0,2,253,0,0,190,0,0,0,0,7,252,0,0,190,0,0,0,0,15,240,0,0,190,0,0,0,0,63,208,0,0,190,0,0,0,0,191,192,0,0,190,0,0,0,2,255,192,127,255,255,255,253,0,15,255,192,127,255,255,255,253,0,63,255,192,127,255,255,255,253,0,127,223,192,0,0,254,0,0,0,63,31,192,0,0,190,0,0,0,24,31,192,0,0,190,0,0,0,0,31,192,0,0,190,0,0,0,0,31,192,0,0,190,0,0,0,0,31,192,0,0,190,0,0,0,0,31,192,0,0,190,0,0,0,0,31,192,0,0,190,0,0,0,0,31,192,0,0,190,0,0,0,0,31,192,0,0,254,0,0,0,0,31,195,255,255,255,255,255,128,0,31,195,255,255,255,255,255,128,0,31,195,255,255,255,255,255,128,0,31,192,0,0,0,0,0,0, + // 0x578b 型 + 139,87,32,33,8,36,2,254,0,0,0,0,0,0,3,240,31,255,255,255,224,0,3,240,31,255,255,255,224,190,3,240,31,255,255,255,224,190,3,240,0,63,1,252,0,190,3,240,0,63,1,252,0,190,3,240,0,63,1,252,0,190,3,240,0,63,1,252,0,190,3,240,0,63,1,252,0,190,3,240,191,255,255,255,248,190,3,240,191,255,255,255,248,190,3,240,191,255,255,255,248,190,3,240,0,190,1,252,0,190,3,240,0,253,1,252,0,190,3,240,1,252,1,252,0,20,3,240,3,248,1,252,0,0,3,240,15,240,1,252,0,0,3,240,127,208,1,252,0,11,255,240,191,128,1,252,0,3,255,240,62,0,0,175,240,3,255,128,4,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,1,255,255,255,255,255,255,64,1,255,255,255,255,255,255,64,1,255,255,255,255,255,255,64,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x57f7 執 + 247,87,34,35,59,36,1,252,0,3,240,0,0,126,0,0,0,0,3,240,0,0,126,0,0,0,0,3,240,0,0,126,0,0,0,0,3,240,0,0,126,0,0,0,15,255,255,252,0,126,0,0,0,15,255,255,252,0,126,0,0,0,15,255,255,252,0,126,0,0,0,0,3,240,0,0,127,0,0,0,0,3,240,0,255,255,255,244,0,127,255,255,255,255,255,255,244,0,127,255,255,255,128,127,255,244,0,127,255,255,255,128,126,3,244,0,2,224,1,244,0,126,3,244,0,3,240,2,244,0,126,3,244,0,2,244,3,240,0,190,3,244,0,0,248,3,240,32,190,3,244,0,0,252,7,208,189,190,3,244,0,0,252,7,192,255,253,3,244,0,63,255,255,255,127,253,3,244,0,63,255,255,255,11,253,3,244,0,63,255,255,255,2,255,131,244,0,0,3,240,0,2,255,226,244,0,0,3,240,0,3,255,250,244,0,0,3,240,0,3,246,254,244,0,47,255,255,254,11,240,182,244,0,47,255,255,254,15,224,18,244,128,31,255,255,253,47,192,1,248,240,0,3,240,0,127,128,1,248,240,0,3,240,0,255,0,0,252,240,0,3,240,3,253,0,0,252,240,0,3,240,15,248,0,0,191,240,0,3,240,63,240,0,0,127,224,0,3,240,31,192,0,0,63,192,0,3,240,6,0,0,0,11,128,0,0,0,0,0,0,0,0,0, + // 0x584a 塊 + 74,88,34,35,59,36,1,252,0,42,0,0,0,250,0,0,0,0,63,0,0,0,254,0,0,0,0,63,0,0,1,252,0,0,0,0,63,0,0,3,252,0,0,0,0,63,0,127,255,255,255,255,0,0,63,0,127,255,255,255,255,0,0,63,0,127,255,255,255,255,0,0,63,0,126,0,190,0,127,0,63,255,254,126,0,190,0,127,0,63,255,254,126,0,190,0,127,0,63,255,254,127,255,255,255,255,0,0,63,0,127,255,255,255,255,0,0,63,0,127,170,255,170,191,0,0,63,0,126,0,190,0,127,0,0,63,0,126,0,190,0,127,0,0,63,0,126,0,190,0,127,0,0,63,0,127,255,255,255,255,0,0,63,0,127,255,255,255,255,0,0,63,0,127,255,255,255,255,0,0,63,1,0,252,63,65,0,0,0,63,111,1,252,63,75,192,0,0,63,255,65,252,63,75,128,0,1,255,255,2,252,63,79,95,0,111,255,228,2,248,63,79,15,0,191,254,0,3,244,63,95,31,128,63,208,0,3,240,63,191,255,192,57,0,0,11,240,63,191,255,208,0,0,0,15,224,63,105,2,64,0,0,0,63,192,63,64,2,0,0,0,0,255,128,63,64,3,208,0,0,7,255,0,47,64,7,224,0,0,191,252,0,47,255,255,208,0,0,127,224,0,31,255,255,192,0,0,47,64,0,6,255,254,0,0,0,0,0,0,0,0,0,0, + // 0x586b 填 + 107,88,34,35,59,36,1,252,0,21,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,1,255,255,255,255,255,192,0,63,1,255,255,255,255,255,192,0,63,1,255,255,255,255,255,192,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,11,255,255,255,244,0,63,255,254,11,255,255,255,244,0,63,255,254,11,208,0,3,244,0,63,255,254,11,208,0,3,244,0,0,63,0,11,255,255,255,244,0,0,63,0,11,255,255,255,244,0,0,63,0,11,208,0,3,244,0,0,63,0,11,208,0,3,244,0,0,63,0,11,255,255,255,244,0,0,63,0,11,255,255,255,244,0,0,63,0,11,208,0,3,244,0,0,63,0,11,208,0,3,244,0,0,63,11,11,255,255,255,244,0,0,63,255,11,255,255,255,244,0,0,63,255,64,0,0,0,0,0,2,255,254,0,0,0,0,0,0,111,255,235,255,255,255,255,255,208,191,254,11,255,255,255,255,255,224,63,208,11,255,255,255,255,255,224,61,0,0,0,16,0,8,0,0,0,0,0,1,255,0,127,64,0,0,0,0,11,253,0,127,224,0,0,0,1,191,240,0,11,253,0,0,0,15,255,128,0,1,255,128,0,0,11,248,0,0,0,63,208,0,0,2,144,0,0,0,10,0,0,0,0,0,0,0,0,0,0, + // 0x588a 墊 + 138,88,34,33,41,36,1,254,0,2,244,0,0,47,0,0,0,0,3,244,0,0,63,0,0,0,5,87,245,84,0,63,0,0,0,15,255,255,253,0,63,0,0,0,15,255,255,253,47,255,255,240,0,0,3,244,0,63,255,255,240,0,21,87,244,0,63,255,255,240,0,127,255,255,255,213,127,3,240,0,127,255,255,255,192,63,3,240,0,2,240,2,240,0,63,3,240,0,1,244,3,224,45,62,3,240,0,0,248,7,192,127,254,3,240,0,63,255,255,255,223,253,3,240,0,63,255,255,255,194,255,67,240,0,21,87,249,85,65,255,227,240,0,0,3,244,0,3,255,250,240,64,5,87,249,84,7,242,242,240,208,15,255,255,254,15,208,146,244,240,15,255,255,254,63,192,1,244,240,0,3,244,0,255,0,0,253,224,0,3,244,2,253,0,0,255,208,0,3,244,1,244,0,0,127,192,0,0,0,2,248,0,0,31,64,0,0,0,2,248,0,0,0,0,0,191,255,255,255,255,255,224,0,0,191,255,255,255,255,255,224,0,0,191,255,255,255,255,255,208,0,0,0,0,2,248,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,2,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192, + // 0x5916 外 + 22,89,34,34,50,36,1,253,0,0,164,0,0,3,244,0,0,0,0,254,0,0,3,244,0,0,0,0,253,0,0,3,244,0,0,0,2,252,0,0,3,244,0,0,0,3,248,0,0,3,244,0,0,0,3,248,0,0,3,244,0,0,0,11,255,255,248,3,244,0,0,0,15,255,255,252,3,244,0,0,0,31,255,255,252,3,244,0,0,0,63,192,3,255,3,244,0,0,0,127,64,3,255,195,244,0,0,0,255,0,7,255,211,244,0,0,2,252,0,11,251,243,244,0,0,7,252,0,15,227,255,244,0,0,15,254,0,15,208,255,244,0,0,63,255,208,31,192,127,244,0,0,255,175,248,63,128,47,244,0,0,47,7,255,127,64,15,248,0,0,8,0,255,255,0,3,255,0,0,0,0,47,254,0,3,255,208,0,0,0,11,252,0,3,255,248,0,0,0,3,248,0,3,255,255,64,0,0,15,240,0,3,246,255,240,0,0,47,208,0,3,244,127,224,0,0,63,192,0,3,244,11,128,0,0,255,64,0,3,244,1,0,0,3,254,0,0,3,244,0,0,0,15,248,0,0,3,244,0,0,0,63,240,0,0,3,244,0,0,1,255,192,0,0,3,244,0,0,15,255,0,0,0,3,244,0,0,47,248,0,0,0,3,244,0,0,11,208,0,0,0,3,244,0,0,2,0,0,0,0,3,244,0,0, + // 0x591a 多 + 26,89,32,35,24,36,2,252,0,0,0,46,64,0,0,0,0,0,0,191,192,0,0,0,0,0,2,255,0,0,0,0,0,0,11,255,255,255,224,0,0,0,127,255,255,255,244,0,0,2,255,255,255,255,224,0,0,47,253,0,0,63,192,0,6,255,252,0,0,255,64,0,63,255,255,128,3,253,0,0,31,244,127,244,15,248,0,0,11,64,11,254,127,224,0,0,0,0,1,255,255,64,0,0,0,0,0,127,253,64,0,0,0,0,2,255,231,252,0,0,0,0,127,255,79,244,0,0,0,27,255,244,127,224,0,0,26,255,255,66,255,255,255,248,127,255,224,15,255,255,255,253,47,249,0,191,255,255,255,252,25,0,11,255,128,0,11,244,0,0,191,253,0,0,31,240,0,31,255,255,64,0,63,192,0,127,253,191,240,0,255,64,0,31,144,31,253,3,254,0,0,8,0,2,255,159,248,0,0,0,0,0,127,255,224,0,0,0,0,0,31,255,64,0,0,0,0,0,191,252,0,0,0,0,0,27,255,224,0,0,0,0,22,255,254,0,0,0,0,91,255,255,224,0,0,0,2,255,255,249,0,0,0,0,0,255,254,64,0,0,0,0,0,186,64,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5920 夠 + 32,89,33,34,50,36,1,253,0,3,224,0,0,164,0,0,0,0,7,240,0,0,252,0,0,0,0,15,192,0,1,248,0,0,0,0,63,234,168,3,244,0,0,0,0,191,255,254,7,240,0,0,0,2,255,255,252,11,255,255,255,128,7,244,1,252,15,255,255,255,128,47,208,3,244,47,255,255,255,128,127,132,11,240,127,0,0,31,128,30,62,31,208,254,0,0,47,64,4,127,255,130,252,0,0,47,64,0,31,255,7,248,0,0,47,64,0,7,252,11,251,255,252,47,64,0,47,240,1,219,255,252,47,64,1,255,255,0,11,234,252,47,64,31,254,254,0,11,192,124,47,64,47,245,252,0,11,192,124,47,64,15,131,255,255,75,192,124,47,64,4,15,255,255,203,192,124,47,64,0,63,255,255,139,192,124,63,64,1,255,0,63,11,192,124,63,0,11,248,0,191,11,192,124,63,0,63,225,0,253,11,234,252,63,0,47,79,195,252,11,255,252,63,0,8,15,251,240,11,255,252,63,0,0,2,255,208,11,192,0,63,0,0,0,255,128,11,192,0,63,0,0,3,254,0,6,128,0,127,0,0,31,248,0,0,0,0,190,0,1,255,224,0,0,0,0,253,0,47,255,64,0,0,3,255,252,0,63,248,0,0,0,1,255,248,0,47,128,0,0,0,0,255,224,0,8,0,0,0,0,0,0,0,0, + // 0x5927 大 + 39,89,32,34,16,36,2,253,0,0,0,15,224,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,85,85,85,111,229,85,85,85,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,0,0,0,63,252,0,0,0,0,0,0,127,253,0,0,0,0,0,0,191,254,0,0,0,0,0,0,255,191,0,0,0,0,0,1,254,127,64,0,0,0,0,2,252,63,192,0,0,0,0,3,252,31,224,0,0,0,0,11,244,15,240,0,0,0,0,31,240,11,252,0,0,0,0,63,208,3,253,0,0,0,0,191,192,0,255,64,0,0,2,255,0,0,191,208,0,0,11,253,0,0,63,244,0,0,47,248,0,0,15,253,0,0,255,224,0,0,3,255,128,7,255,128,0,0,0,255,240,127,254,0,0,0,0,63,254,255,244,0,0,0,0,15,254,63,128,0,0,0,0,1,252,8,0,0,0,0,0,0,32, + // 0x5929 天 + 41,89,33,33,41,36,2,252,85,85,85,85,85,85,85,85,0,191,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,254,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,47,255,255,255,255,255,255,252,0,47,255,255,255,255,255,255,252,0,47,255,255,255,255,255,255,252,0,21,85,85,127,249,85,85,84,0,0,0,0,63,252,0,0,0,0,0,0,0,63,253,0,0,0,0,0,0,0,127,255,0,0,0,0,0,0,0,255,191,0,0,0,0,0,0,1,254,63,192,0,0,0,0,0,3,252,47,224,0,0,0,0,0,15,248,15,244,0,0,0,0,0,63,240,7,252,0,0,0,0,0,255,208,2,255,64,0,0,0,7,255,64,0,255,208,0,0,0,47,253,0,0,63,253,0,0,2,255,244,0,0,15,255,208,0,127,255,128,0,0,2,255,254,64,255,253,0,0,0,0,127,255,0,127,208,0,0,0,0,7,253,0,57,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0, + // 0x5931 失 + 49,89,33,35,59,36,2,252,0,4,0,15,224,0,0,0,0,0,15,208,15,224,0,0,0,0,0,47,192,15,224,0,0,0,0,0,63,192,15,224,0,0,0,0,0,63,128,15,224,0,0,0,0,0,191,0,15,224,0,0,0,0,0,255,255,255,255,255,255,192,0,1,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,192,0,11,249,85,95,229,85,85,64,0,15,240,0,15,224,0,0,0,0,47,208,0,15,224,0,0,0,0,127,192,0,15,224,0,0,0,0,127,64,0,15,208,0,0,0,0,10,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,85,85,85,111,229,85,85,85,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,0,0,0,127,252,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,1,254,127,64,0,0,0,0,0,3,252,63,192,0,0,0,0,0,11,248,31,240,0,0,0,0,0,47,240,15,252,0,0,0,0,0,191,208,3,254,0,0,0,0,3,255,128,0,255,208,0,0,0,47,254,0,0,63,248,0,0,2,255,244,0,0,31,255,144,0,111,255,192,0,0,2,255,254,64,255,253,0,0,0,0,127,255,64,127,208,0,0,0,0,7,254,0,41,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0, + // 0x59cb 始 + 203,89,34,34,50,36,1,253,0,30,128,0,0,57,0,0,0,0,31,192,0,0,127,64,0,0,0,47,128,0,0,191,0,0,0,0,63,64,0,0,254,0,0,0,0,63,0,0,0,253,0,0,0,0,63,0,0,2,252,0,0,0,0,127,0,0,3,248,1,128,0,0,190,0,0,3,244,15,208,0,127,255,255,240,7,240,11,240,0,127,255,255,240,11,224,3,248,0,127,255,255,240,15,192,1,253,0,1,248,3,240,31,192,0,191,0,2,244,7,241,127,235,255,255,128,3,240,7,235,255,255,255,255,192,3,240,11,235,255,255,255,255,224,7,240,15,215,250,165,64,11,240,11,224,15,192,0,0,0,3,128,15,208,31,192,0,0,0,0,0,15,192,47,128,0,0,0,0,0,31,192,63,64,127,255,255,255,0,47,244,63,0,127,255,255,255,0,63,255,191,0,127,255,255,255,0,63,255,254,0,127,0,0,127,0,6,47,252,0,127,0,0,127,0,0,7,255,0,127,0,0,127,0,0,11,255,192,127,0,0,127,0,0,15,255,240,127,0,0,127,0,0,63,203,252,127,0,0,127,0,0,255,66,244,127,0,0,127,0,3,254,0,160,127,255,255,255,0,31,252,0,0,127,255,255,255,0,47,224,0,0,127,255,255,255,0,15,128,0,0,127,0,0,127,0,5,0,0,0,126,0,0,42,0, + // 0x5a92 媒 + 146,90,34,34,50,36,1,253,0,62,0,0,252,0,7,240,0,0,63,0,0,252,0,7,240,0,0,127,0,0,252,0,7,240,0,0,126,0,0,252,0,7,240,0,0,190,0,127,255,255,255,255,208,0,253,0,127,255,255,255,255,208,0,252,0,127,255,255,255,255,192,0,252,0,0,252,0,7,240,0,191,255,255,192,252,0,7,240,0,191,255,255,192,254,85,91,240,0,191,255,255,192,255,255,255,240,0,3,244,31,128,255,255,255,240,0,3,240,31,128,252,0,7,240,0,7,240,47,64,252,0,7,240,0,7,224,63,64,252,0,7,240,0,11,208,63,0,255,255,255,240,0,15,192,63,0,255,255,255,240,0,15,192,127,0,170,191,234,160,0,31,192,190,0,0,47,128,0,0,31,128,253,0,0,47,128,0,0,47,224,253,0,0,47,128,0,0,63,253,252,127,255,255,255,255,208,63,255,248,127,255,255,255,255,208,10,127,244,127,255,255,255,255,208,0,31,244,0,3,255,248,0,0,0,15,253,0,15,255,254,0,0,0,47,255,0,63,255,191,128,0,0,63,255,192,255,47,143,224,0,0,255,31,135,252,47,135,252,0,3,253,7,47,244,47,130,255,64,15,248,2,255,208,47,128,191,224,63,224,0,255,0,47,128,31,192,31,64,0,56,0,47,128,7,0,9,0,0,0,0,47,128,0,0, + // 0x5b50 子 + 80,91,33,33,41,36,2,252,0,85,85,85,85,85,84,0,0,2,255,255,255,255,255,255,64,0,2,255,255,255,255,255,255,192,0,2,255,255,255,255,255,255,64,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,127,240,0,0,0,0,0,0,2,255,128,0,0,0,0,0,0,31,253,0,0,0,0,0,0,6,255,240,0,0,0,0,0,0,11,255,64,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,85,85,85,95,245,85,85,85,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,1,85,95,224,0,0,0,0,0,1,255,255,224,0,0,0,0,0,0,255,255,192,0,0,0,0,0,0,191,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5b58 存 + 88,91,34,34,50,36,1,253,0,0,0,185,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,3,253,0,0,0,0,0,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,0,0,47,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,2,253,11,255,255,255,240,0,0,7,252,11,255,255,255,252,0,0,15,240,11,255,255,255,240,0,0,47,224,0,0,0,63,192,0,0,191,192,0,0,1,255,0,0,2,255,192,0,0,7,252,0,0,11,255,192,0,0,63,224,0,0,63,255,192,0,0,63,128,0,0,191,255,192,0,0,63,64,0,0,63,95,194,255,255,255,255,255,208,44,31,194,255,255,255,255,255,208,0,31,194,255,255,255,255,255,208,0,31,192,0,0,63,64,0,0,0,31,192,0,0,63,64,0,0,0,31,192,0,0,63,64,0,0,0,31,192,0,0,63,64,0,0,0,31,192,0,0,63,64,0,0,0,31,192,0,0,63,64,0,0,0,31,192,0,0,127,64,0,0,0,31,192,1,255,255,0,0,0,0,31,192,0,255,255,0,0,0,0,31,192,0,255,248,0,0,0, + // 0x5b89 安 + 137,91,32,35,24,36,2,252,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,64,0,0,0,0,1,252,63,64,0,16,0,0,1,252,63,64,0,191,0,0,1,252,63,64,0,254,0,0,1,252,63,64,2,252,0,0,1,252,0,0,3,248,0,0,0,0,0,0,11,240,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,255,64,0,31,224,0,0,0,254,0,0,47,192,0,0,3,252,0,0,63,192,0,0,7,248,0,0,127,64,0,0,15,240,0,0,255,0,0,0,31,244,0,2,253,0,0,0,63,255,144,7,252,0,0,0,127,255,254,95,240,0,0,0,191,47,255,255,208,0,0,0,5,1,191,255,208,0,0,0,0,0,31,255,253,0,0,0,0,1,255,255,255,208,0,0,0,127,255,130,255,253,0,5,191,255,248,0,47,255,208,47,255,255,128,0,2,255,240,15,255,228,0,0,0,47,192,7,164,0,0,0,0,7,0,0,0,0,0,0,0,0,0, + // 0x5b8c 完 + 140,91,32,34,16,36,2,253,0,0,0,11,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,64,0,0,0,0,1,252,63,64,0,0,0,0,1,252,63,64,0,0,0,0,1,252,63,64,0,0,0,0,1,252,63,75,255,255,255,255,209,252,0,11,255,255,255,255,208,0,0,11,255,255,255,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,63,128,15,224,0,0,0,0,63,64,11,224,0,0,0,0,127,0,11,224,0,0,0,0,191,0,11,224,0,0,0,0,255,0,11,224,0,0,0,1,253,0,11,224,0,16,0,3,252,0,11,224,0,62,0,15,248,0,11,224,0,63,0,127,240,0,11,224,0,63,6,255,192,0,11,240,0,127,191,255,0,0,11,255,255,254,255,248,0,0,3,255,255,253,127,128,0,0,1,255,255,244,36,0,0,0,0,0,0,0, + // 0x5b9a 定 + 154,91,33,35,59,36,1,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,208,0,0,0,0,0,127,0,15,192,0,0,0,0,0,127,0,15,192,0,0,0,0,0,127,0,15,192,0,0,0,0,0,127,0,15,195,255,255,255,255,252,127,0,5,67,255,255,255,255,252,21,0,0,3,255,255,255,255,252,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,7,224,3,248,0,0,0,0,0,7,240,3,248,0,0,0,0,0,11,240,3,248,0,0,0,0,0,15,224,3,255,255,255,192,0,0,15,208,3,255,255,255,192,0,0,31,224,3,255,255,255,192,0,0,47,240,3,248,0,0,0,0,0,63,244,3,248,0,0,0,0,0,127,252,3,248,0,0,0,0,0,255,255,3,248,0,0,0,0,1,253,63,211,248,0,0,0,0,3,252,31,251,248,0,0,0,0,11,244,7,255,253,0,0,0,0,47,240,1,255,255,255,255,255,192,127,192,0,47,255,255,255,255,128,47,64,0,1,191,255,255,255,64,9,0,0,0,0,5,85,85,0,0,0,0,0,0,0,0,0,0, + // 0x5ba2 客 + 162,91,34,34,50,36,1,253,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,192,0,80,0,0,0,127,0,15,192,0,255,0,0,0,127,0,15,192,3,253,0,0,0,127,0,15,192,15,254,170,170,128,127,0,0,0,63,255,255,255,244,0,0,0,0,255,255,255,255,240,0,0,0,7,255,64,0,47,208,0,0,0,127,255,208,0,191,128,0,0,3,255,223,248,2,255,0,0,0,3,254,3,255,31,248,0,0,0,0,244,0,191,255,224,0,0,0,0,0,0,47,255,128,0,0,0,0,0,0,191,255,244,0,0,0,0,0,27,255,255,255,208,0,0,0,2,255,254,11,255,255,164,0,1,191,255,224,0,191,255,255,208,127,255,253,0,0,6,255,255,128,63,255,255,255,255,255,255,255,0,31,147,255,255,255,255,252,5,0,0,3,255,255,255,255,252,0,0,0,3,244,0,0,1,252,0,0,0,3,244,0,0,1,252,0,0,0,3,244,0,0,1,252,0,0,0,3,244,0,0,1,252,0,0,0,3,255,255,255,255,252,0,0,0,3,255,255,255,255,252,0,0,0,3,255,255,255,255,252,0,0,0,3,244,0,0,1,252,0,0, + // 0x5bb9 容 + 185,91,33,35,59,36,2,252,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,63,255,255,255,255,255,255,252,0,63,255,255,255,255,255,255,252,0,63,255,255,255,255,255,255,252,0,63,64,0,0,0,0,1,252,0,63,0,20,0,0,80,1,252,0,63,0,63,128,1,248,1,252,0,63,0,255,0,3,255,65,252,0,0,7,253,0,0,191,224,0,0,0,31,244,5,80,31,252,0,0,0,191,208,31,244,3,255,64,0,7,255,64,63,252,0,191,208,0,15,253,0,255,255,0,47,240,0,7,240,3,254,191,192,11,192,0,2,128,15,252,63,240,2,0,0,0,0,63,240,15,253,0,0,0,0,0,255,192,3,255,64,0,0,0,7,255,0,0,191,240,0,0,0,47,252,0,0,47,253,0,0,1,255,240,0,0,7,255,208,0,11,255,255,255,255,255,255,253,0,191,255,255,255,255,255,255,255,64,191,239,255,255,255,255,242,255,0,62,15,208,0,0,7,240,44,0,16,15,208,0,0,7,240,0,0,0,15,208,0,0,7,240,0,0,0,15,208,0,0,7,240,0,0,0,15,208,0,0,7,240,0,0,0,15,255,255,255,255,240,0,0,0,15,255,255,255,255,240,0,0,0,15,255,255,255,255,240,0,0,0,15,208,0,0,7,240,0,0,0,0,0,0,0,0,0,0,0, + // 0x5c0d 對 + 13,92,34,35,59,36,1,252,0,10,66,144,0,0,2,160,0,9,15,131,224,164,0,7,240,0,63,15,131,224,252,0,7,240,0,47,79,131,226,248,0,7,240,0,15,207,131,227,240,0,7,240,0,11,223,131,231,224,0,7,240,0,7,223,131,239,192,0,7,240,0,2,15,131,226,64,0,7,240,0,127,255,255,255,252,0,7,240,0,127,255,255,255,252,0,7,240,0,127,255,255,255,255,255,255,255,224,0,244,0,62,7,255,255,255,224,0,252,0,63,7,255,255,255,224,0,253,0,190,0,0,7,240,0,0,126,0,252,0,0,7,240,0,0,61,0,248,0,0,7,240,0,15,255,255,255,224,252,7,240,0,15,255,255,255,224,253,7,240,0,15,255,255,255,224,190,7,240,0,0,0,189,0,0,63,7,240,0,0,0,189,0,0,47,135,240,0,0,0,189,0,0,31,199,240,0,7,255,255,255,192,15,199,240,0,7,255,255,255,192,15,215,240,0,2,170,255,170,128,5,7,240,0,0,0,189,0,0,0,7,240,0,0,0,189,0,0,0,7,240,0,0,0,189,5,164,0,7,240,0,0,5,255,255,248,0,7,240,0,47,255,255,255,248,0,7,240,0,63,255,255,254,144,0,11,240,0,63,254,148,0,0,31,255,224,0,20,0,0,0,0,15,255,208,0,0,0,0,0,0,11,254,64,0,0,0,0,0,0,0,0,0,0, + // 0x5c0f 小 + 15,92,34,35,59,36,1,252,0,0,0,1,84,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,14,64,2,252,0,46,0,0,0,31,224,2,252,0,255,0,0,0,47,208,2,252,0,127,128,0,0,63,192,2,252,0,63,192,0,0,63,192,2,252,0,31,224,0,0,127,128,2,252,0,15,240,0,0,191,0,2,252,0,7,248,0,0,255,0,2,252,0,3,252,0,1,254,0,2,252,0,2,254,0,2,253,0,2,252,0,0,255,0,3,252,0,2,252,0,0,255,64,11,244,0,2,252,0,0,127,128,15,240,0,2,252,0,0,63,192,47,224,0,2,252,0,0,47,208,127,192,0,2,252,0,0,31,224,127,64,0,2,252,0,0,15,240,6,0,0,2,252,0,0,15,208,0,0,0,2,252,0,0,4,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,21,87,252,0,0,0,0,0,0,63,255,248,0,0,0,0,0,0,47,255,240,0,0,0,0,0,0,31,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5c31 就 + 49,92,34,35,59,36,1,252,0,0,252,0,0,7,224,0,0,0,0,252,0,0,7,224,80,0,0,0,252,0,0,7,227,240,0,0,0,252,0,0,7,226,252,0,0,0,252,0,0,7,224,254,0,63,255,255,255,240,7,224,127,64,63,255,255,255,240,7,224,47,192,63,255,255,255,240,7,224,15,128,0,0,0,0,0,7,224,4,0,0,0,0,0,0,11,240,0,0,3,255,255,255,79,255,255,255,208,7,255,255,255,79,255,255,255,208,7,255,255,255,79,255,255,255,208,7,240,0,47,64,11,224,0,0,7,240,0,47,64,15,228,0,0,7,240,0,47,64,15,254,0,0,7,240,0,47,64,15,254,0,0,7,255,255,255,64,15,254,0,0,7,255,255,255,64,31,254,0,0,7,255,255,255,64,47,254,0,0,0,0,253,0,0,63,254,0,0,0,0,253,4,0,63,190,0,0,3,240,253,63,0,127,126,0,0,7,240,253,63,0,191,126,0,0,11,224,253,47,128,254,126,0,0,15,208,253,15,194,252,126,1,0,15,192,253,15,211,248,126,2,208,47,128,253,7,235,244,126,2,240,63,64,253,2,95,240,126,2,240,191,0,253,0,63,192,126,3,224,44,0,252,0,255,128,127,71,224,0,127,252,3,255,0,63,255,208,0,63,252,2,252,0,63,255,192,0,63,224,0,112,0,15,255,64,0,0,0,0,0,0,0,0,0, + // 0x5de5 工 + 229,93,32,28,224,36,2,255,15,255,255,255,255,255,255,244,15,255,255,255,255,255,255,244,15,255,255,255,255,255,255,244,5,85,85,95,245,85,85,80,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,85,85,85,85,85, + // 0x5dee 差 + 238,93,33,34,50,36,1,253,0,0,20,0,0,3,144,0,0,0,1,252,0,0,7,248,0,0,0,0,255,0,0,15,240,0,0,0,0,127,64,0,31,208,0,0,0,0,63,192,0,63,192,0,0,7,255,255,255,255,255,255,253,0,7,255,255,255,255,255,255,253,0,7,255,255,255,255,255,255,253,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,127,255,255,255,255,255,224,0,0,127,255,255,255,255,255,224,0,0,127,255,255,255,255,255,224,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,253,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,3,254,255,255,255,255,224,0,0,3,250,255,255,255,255,240,0,0,11,242,255,255,255,255,240,0,0,15,240,0,15,224,0,0,0,0,47,208,0,15,224,0,0,0,0,63,192,0,15,224,0,0,0,0,255,64,0,15,224,0,0,0,2,254,0,0,15,224,0,0,0,7,252,0,0,15,224,0,0,0,47,244,255,255,255,255,255,255,0,127,224,255,255,255,255,255,255,0,31,128,255,255,255,255,255,255,0,6,0,0,0,0,0,0,0,0, + // 0x5df2 已 + 242,93,31,31,248,36,3,254,191,255,255,255,255,255,248,0,191,255,255,255,255,255,248,0,191,255,255,255,255,255,248,0,21,85,85,85,85,87,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,15,224,0,0,0,3,248,0,15,224,0,0,0,3,248,0,15,224,0,0,0,3,248,0,15,224,0,0,0,3,248,0,15,224,0,0,0,3,248,0,15,229,85,85,85,87,248,0,15,255,255,255,255,255,248,0,15,255,255,255,255,255,248,0,15,255,255,255,255,255,248,0,15,224,0,0,0,3,248,0,15,224,0,0,0,2,248,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,208,15,224,0,0,0,0,1,252,15,224,0,0,0,0,1,252,15,224,0,0,0,0,2,252,15,224,0,0,0,0,3,252,15,240,0,0,0,0,7,248,11,254,85,85,85,85,111,240,3,255,255,255,255,255,255,224,1,255,255,255,255,255,255,192,0,43,255,255,255,255,249,0, + // 0x5e73 平 + 115,94,32,32,0,36,2,253,5,85,85,85,85,85,85,80,15,255,255,255,255,255,255,240,15,255,255,255,255,255,255,240,15,255,255,255,255,255,255,240,0,0,0,15,224,0,0,0,0,4,0,15,224,0,80,0,0,126,0,15,224,0,255,0,0,127,0,15,224,0,254,0,0,63,128,15,224,2,252,0,0,47,192,15,224,3,248,0,0,15,208,15,224,7,244,0,0,11,240,15,224,15,224,0,0,7,240,15,224,31,192,0,0,3,224,15,224,47,128,0,0,1,0,15,224,1,0,0,0,0,0,15,224,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,95,245,85,85,85,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0, + // 0x5e8a 床 + 138,94,34,34,50,36,1,253,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,255,0,0,0,0,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,248,0,0,0,0,0,0,0,2,248,0,0,11,240,0,0,0,2,248,0,0,11,240,0,0,0,2,248,0,0,11,240,0,0,0,2,248,0,0,11,240,0,0,0,2,248,0,0,11,240,0,0,0,2,248,191,255,255,255,255,255,192,2,248,191,255,255,255,255,255,192,2,248,191,255,255,255,255,255,192,2,248,0,0,127,253,0,0,0,3,248,0,0,191,255,0,0,0,3,244,0,1,255,255,128,0,0,3,244,0,3,255,255,208,0,0,3,244,0,11,251,251,240,0,0,3,240,0,47,219,243,252,0,0,7,240,0,127,203,241,255,0,0,7,240,1,255,11,240,191,192,0,11,224,7,253,11,240,47,240,0,15,208,31,244,11,240,15,253,0,15,208,191,224,11,240,3,255,128,31,195,255,128,11,240,0,255,224,63,194,253,0,11,240,0,47,128,63,64,180,0,11,240,0,7,0,191,0,0,0,11,240,0,0,0,62,0,0,0,11,240,0,0,0,8,0,0,0,11,224,0,0,0, + // 0x5ea6 度 + 166,94,33,35,59,36,1,252,0,0,0,0,190,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,248,0,0,0,0,0,0,0,2,248,0,63,0,0,252,0,0,2,248,0,63,0,0,252,0,0,2,249,170,255,234,171,255,170,64,2,249,255,255,255,255,255,255,128,2,249,255,255,255,255,255,255,128,2,248,0,63,0,0,252,0,0,2,248,0,63,0,0,252,0,0,2,248,0,63,0,0,252,0,0,2,244,0,63,170,170,252,0,0,2,244,0,63,255,255,252,0,0,3,244,0,63,255,255,252,0,0,3,244,0,0,0,0,0,0,0,3,240,0,0,0,0,0,0,0,3,240,255,255,255,255,255,224,0,3,240,255,255,255,255,255,240,0,3,240,170,191,170,170,191,224,0,7,240,0,255,0,0,127,192,0,11,224,0,63,192,1,255,0,0,15,208,0,31,244,11,252,0,0,15,192,0,7,255,127,240,0,0,31,192,0,0,255,255,128,0,0,63,128,0,6,255,255,144,0,0,63,64,22,255,255,255,255,148,0,191,3,255,255,248,31,255,255,192,126,2,255,254,0,0,191,255,128,8,1,249,0,0,0,1,111,0,0,0,0,0,0,0,0,0,0, + // 0x5ee2 廢 + 226,94,34,35,59,36,1,252,0,0,0,0,190,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,3,255,255,255,255,255,255,255,192,3,255,255,255,255,255,255,255,192,3,255,255,255,255,255,255,255,192,3,240,0,0,0,84,0,0,0,3,240,191,255,244,189,15,128,0,3,240,191,255,244,63,127,64,0,3,240,21,91,240,31,252,0,0,3,240,48,15,208,15,224,46,0,3,240,254,63,128,7,244,255,0,3,240,127,255,0,1,255,248,0,3,240,15,252,0,0,127,208,0,3,240,31,244,0,85,127,248,0,3,241,255,255,194,255,255,255,208,3,255,255,255,194,255,254,191,192,3,247,224,7,194,240,62,11,64,3,241,0,7,194,240,62,13,0,7,240,21,91,195,224,62,30,0,7,224,127,255,223,208,63,254,0,7,224,191,255,239,192,31,252,0,7,224,248,0,11,0,0,0,0,11,208,244,0,5,0,0,64,0,15,209,255,255,207,255,255,240,0,15,195,255,255,207,255,255,240,0,15,194,229,95,193,240,11,208,0,31,128,0,15,193,248,31,192,0,47,64,0,15,128,190,127,0,0,63,64,0,31,64,47,252,0,0,127,0,0,47,64,47,254,0,0,190,0,21,127,7,255,255,249,64,125,0,63,254,63,248,31,255,64,12,0,63,248,30,64,0,191,0,0,0,0,0,0,0,0,0,0, + // 0x5efa 建 + 250,94,34,35,59,36,1,252,0,0,0,0,0,168,0,0,0,0,0,0,0,0,252,0,0,0,127,255,224,0,0,252,0,0,0,127,255,240,63,255,255,255,252,0,127,255,208,63,255,255,255,252,0,0,31,192,42,170,254,171,252,0,0,63,128,0,0,252,1,252,0,0,63,6,170,170,254,171,254,144,0,191,11,255,255,255,255,255,208,0,253,11,255,255,255,255,255,208,1,252,0,0,0,252,1,252,0,3,248,0,0,0,252,1,252,0,7,240,0,42,170,254,171,252,0,15,255,253,127,255,255,255,252,0,31,255,252,127,255,255,255,252,0,63,255,252,0,0,252,0,0,0,47,0,252,0,0,252,0,0,0,0,1,252,106,170,254,170,168,0,1,2,248,191,255,255,255,252,0,31,66,244,191,255,255,255,252,0,15,195,240,0,0,252,0,0,0,11,215,240,0,0,252,0,0,0,7,251,226,170,170,254,170,170,64,3,255,211,255,255,255,255,255,128,1,255,195,255,255,255,255,255,128,0,191,128,0,0,252,0,0,0,0,127,208,0,0,252,0,0,0,0,255,248,0,0,252,0,0,0,2,255,255,144,0,168,0,0,0,7,252,255,255,149,0,0,0,0,31,240,47,255,255,255,255,255,208,127,208,1,255,255,255,255,255,192,47,64,0,5,191,255,255,255,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5f15 引 + 21,95,29,35,24,36,2,252,0,0,0,0,0,0,5,0,0,0,0,0,0,0,63,128,31,255,255,255,0,0,63,128,31,255,255,255,0,0,63,128,31,255,255,255,0,0,63,128,0,0,0,63,0,0,63,128,0,0,0,63,0,0,63,128,0,0,0,63,0,0,63,128,0,0,0,63,0,0,63,128,0,0,0,63,0,0,63,128,7,255,255,255,0,0,63,128,11,255,255,255,0,0,63,128,11,255,255,255,0,0,63,128,15,208,0,0,0,0,63,128,15,208,0,0,0,0,63,128,15,192,0,0,0,0,63,128,31,192,0,0,0,0,63,128,47,192,0,0,0,0,63,128,47,255,255,255,64,0,63,128,63,255,255,255,64,0,63,128,63,255,255,255,0,0,63,128,127,0,0,127,0,0,63,128,26,0,0,127,0,0,63,128,0,0,0,127,0,0,63,128,0,0,0,191,0,0,63,128,0,0,0,190,0,0,63,128,0,0,0,254,0,0,63,128,0,0,0,253,0,0,63,128,0,0,1,253,0,0,63,128,0,0,2,252,0,0,63,128,0,149,91,252,0,0,63,128,0,191,255,244,0,0,63,128,0,127,255,240,0,0,63,128,0,63,254,64,0,0,63,128,0,0,0,0,0,0,0,0, + // 0x5f85 待 + 133,95,34,34,50,36,1,253,0,1,128,0,0,106,0,0,0,0,3,248,0,0,127,0,0,0,0,11,244,0,0,127,0,0,0,0,47,224,0,0,127,0,0,0,0,127,192,0,0,191,0,0,0,2,255,0,63,255,255,255,255,0,11,252,0,63,255,255,255,255,0,63,240,0,63,255,255,255,255,0,63,192,0,0,0,127,0,0,0,30,0,252,0,0,127,0,0,0,4,2,252,0,0,127,0,0,0,0,7,244,0,0,191,0,0,0,0,15,243,255,255,255,255,255,224,0,63,195,255,255,255,255,255,224,0,255,131,255,255,255,255,255,224,3,255,128,0,0,0,47,192,0,31,255,128,0,0,0,47,192,0,191,255,128,0,0,0,47,192,0,127,95,131,255,255,255,255,255,208,61,31,131,255,255,255,255,255,208,16,31,131,255,255,255,255,255,208,0,31,128,0,0,0,47,192,0,0,31,128,2,192,0,47,192,0,0,31,128,15,224,0,47,192,0,0,31,128,11,244,0,47,192,0,0,31,128,3,252,0,47,192,0,0,31,128,1,254,0,47,192,0,0,31,128,0,191,0,47,192,0,0,31,128,0,63,64,47,192,0,0,31,128,0,44,0,47,192,0,0,31,128,0,0,0,47,128,0,0,31,128,0,0,127,255,128,0,0,31,128,0,0,63,255,64,0,0,31,128,0,0,63,248,0,0, + // 0x5f8c 後 + 140,95,34,35,59,36,1,252,0,2,128,0,3,64,0,0,0,0,11,244,0,15,240,0,0,0,0,31,224,0,47,208,0,0,0,0,127,192,0,127,128,45,0,0,1,255,0,96,254,0,127,192,0,7,252,1,255,248,1,255,0,0,31,240,2,255,240,3,252,0,0,191,192,0,127,224,15,240,0,0,63,0,248,31,252,63,192,0,0,24,3,252,3,255,255,2,128,0,0,7,240,0,255,252,15,208,0,0,31,224,0,63,240,11,244,0,0,63,192,0,63,128,2,252,0,0,255,64,0,255,170,170,255,0,3,255,79,255,255,255,255,255,128,15,255,79,255,255,255,255,255,192,63,255,79,255,255,228,0,15,224,255,255,64,0,47,192,0,7,192,127,63,64,0,127,64,0,1,0,60,63,64,1,255,255,255,224,0,0,63,64,7,255,255,255,240,0,0,63,64,47,250,170,175,224,0,0,63,64,255,244,0,63,192,0,0,63,75,255,252,0,191,64,0,0,63,79,244,191,2,254,0,0,0,63,67,192,63,219,248,0,0,0,63,64,0,15,255,224,0,0,0,63,64,0,3,255,192,0,0,0,63,64,0,47,255,244,0,0,0,63,64,2,255,255,255,64,0,0,63,65,191,255,66,255,254,64,0,63,79,255,244,0,63,255,224,0,63,75,254,64,0,6,255,192,0,63,67,144,0,0,0,27,64,0,0,0,0,0,0,0,0,0, + // 0x5f91 徑 + 145,95,34,34,50,36,1,253,0,2,128,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,31,224,255,255,255,255,255,192,0,63,192,255,255,255,255,255,192,0,255,0,255,255,255,255,255,192,3,252,0,0,0,0,0,0,0,31,240,0,3,144,25,0,164,0,127,192,0,11,224,63,64,252,0,63,0,244,15,192,127,2,248,0,24,3,252,47,128,252,7,240,0,0,7,240,63,2,248,15,208,0,0,15,224,253,7,240,47,128,0,0,63,193,252,15,208,127,0,0,0,255,64,252,11,224,63,64,0,2,255,64,127,3,244,15,192,0,11,255,64,63,64,252,7,240,0,63,255,64,15,192,191,2,252,0,255,255,64,11,224,63,64,254,0,191,63,64,3,244,31,192,127,0,60,63,64,2,144,10,64,41,0,16,63,64,0,0,0,0,0,0,0,63,64,191,255,255,255,254,0,0,63,64,255,255,255,255,255,0,0,63,64,255,255,255,255,255,0,0,63,64,0,0,190,0,0,0,0,63,64,0,0,190,0,0,0,0,63,64,0,0,190,0,0,0,0,63,64,0,0,190,0,0,0,0,63,64,0,0,190,0,0,0,0,63,64,0,0,190,0,0,0,0,63,79,255,255,255,255,255,224,0,63,79,255,255,255,255,255,224,0,63,79,255,255,255,255,255,224,0,47,64,0,0,0,0,0,0, + // 0x5f9e 從 + 158,95,34,35,59,36,1,252,0,3,128,0,185,0,15,128,0,0,11,244,0,253,0,31,192,0,0,31,224,0,252,0,31,128,0,0,127,192,1,252,0,47,128,0,1,255,0,2,248,0,63,64,0,7,252,0,3,244,0,127,0,0,47,240,0,7,248,0,191,0,0,191,192,0,15,255,0,255,192,0,62,1,248,31,255,194,255,240,0,24,3,248,63,143,227,251,252,0,0,11,240,191,3,207,241,255,0,0,31,209,254,0,111,208,127,192,0,63,199,252,0,191,128,31,224,0,255,71,240,0,127,0,11,192,3,255,65,208,0,62,0,2,0,15,255,64,0,0,63,0,0,0,63,255,64,0,0,63,0,0,0,255,191,64,15,192,63,0,0,0,127,63,64,15,192,63,0,0,0,56,63,64,31,192,63,0,0,0,0,63,64,31,192,63,255,254,0,0,63,64,31,128,63,255,254,0,0,63,64,47,128,63,255,254,0,0,63,64,63,192,63,0,0,0,0,63,64,63,208,63,0,0,0,0,63,64,127,224,63,0,0,0,0,63,64,191,240,63,0,0,0,0,63,64,255,252,63,0,0,0,0,63,66,252,254,63,0,0,0,0,63,67,248,127,255,0,0,0,0,63,79,240,47,255,64,0,0,0,63,111,224,11,255,255,255,208,0,63,111,192,1,255,255,255,192,0,63,71,0,0,6,255,255,128,0,21,0,0,0,0,0,0,0, + // 0x5fa9 復 + 169,95,34,35,59,36,1,252,0,3,144,2,228,0,0,0,0,0,11,240,3,248,0,0,0,0,0,47,208,7,244,0,0,0,0,0,127,128,15,250,170,170,170,128,1,255,0,31,255,255,255,255,192,11,252,0,63,255,255,255,255,192,47,240,0,191,64,0,0,0,0,191,192,0,255,0,0,0,0,0,63,0,247,254,0,0,0,0,0,28,3,255,255,255,255,255,252,0,0,7,251,251,255,255,255,252,0,0,15,224,139,208,0,1,252,0,0,63,192,11,208,0,1,252,0,0,255,64,11,255,255,255,252,0,3,255,64,11,255,255,255,252,0,15,255,64,11,208,0,1,252,0,63,255,64,11,208,0,1,252,0,255,191,64,11,255,255,255,252,0,126,63,64,11,255,255,255,252,0,56,63,64,0,31,208,0,0,0,0,63,64,0,63,128,0,0,0,0,63,64,0,255,85,85,64,0,0,63,64,2,255,255,255,248,0,0,63,64,15,255,255,255,244,0,0,63,64,63,252,0,15,224,0,0,63,66,255,255,0,63,192,0,0,63,71,252,47,209,255,0,0,0,63,64,224,15,251,252,0,0,0,63,64,0,3,255,240,0,0,0,63,64,0,47,255,249,0,0,0,63,64,91,255,255,255,249,0,0,63,75,255,255,129,191,255,224,0,63,67,255,228,0,11,255,192,0,63,66,228,0,0,0,27,0,0,0,0,0,0,0,0,0,0, + // 0x5fae 微 + 174,95,34,34,50,36,1,253,0,29,0,15,64,0,184,0,0,0,63,192,15,64,0,252,0,0,0,191,0,15,64,0,252,0,0,1,254,31,15,67,193,252,0,0,7,248,31,15,67,193,248,0,0,15,240,31,15,67,194,244,0,0,63,192,31,15,67,195,244,0,0,191,0,31,15,67,195,255,255,208,61,15,239,15,67,199,255,255,224,16,31,239,15,67,203,255,255,224,0,63,159,255,255,223,208,63,0,0,127,31,255,255,239,208,63,0,0,254,31,255,255,255,224,62,0,3,253,0,0,0,127,224,126,0,11,253,0,0,0,255,240,125,0,31,253,0,0,0,253,240,188,0,63,253,63,255,255,244,240,252,0,255,253,63,255,255,224,244,252,0,189,253,63,255,255,208,249,248,0,56,253,2,240,125,0,190,244,0,16,253,2,240,125,0,127,240,0,0,253,3,240,125,0,63,240,0,0,253,3,240,125,0,63,224,0,0,253,3,240,125,0,47,192,0,0,253,3,224,125,0,31,192,0,0,253,7,224,126,184,63,208,0,0,253,11,208,191,248,191,240,0,0,253,15,194,255,245,255,244,0,0,253,31,129,254,3,249,252,0,0,253,63,64,144,15,240,255,0,0,253,255,0,0,127,192,63,208,0,253,60,0,0,255,0,31,240,0,253,20,0,0,188,0,7,192,0,189,0,0,0,32,0,1,64, + // 0x5fc3 心 + 195,95,34,34,50,36,1,253,0,0,0,144,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,11,255,224,0,0,0,0,0,0,1,255,254,0,0,0,0,0,0,0,11,255,224,0,0,0,0,0,0,0,191,253,0,0,0,0,0,0,0,31,255,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,31,0,0,1,228,15,208,0,0,127,128,0,1,252,15,208,0,0,47,208,0,2,252,15,208,0,0,15,240,0,2,248,15,208,0,0,7,248,0,3,248,15,208,0,0,3,252,0,3,244,15,208,0,0,1,254,0,7,240,15,208,0,0,0,255,0,11,240,15,208,0,0,0,127,128,15,224,15,208,0,0,0,63,192,31,208,15,208,0,0,0,47,208,47,192,15,208,0,0,208,15,224,127,128,15,208,0,0,252,15,240,255,0,15,208,0,0,252,11,208,126,0,15,208,0,1,252,1,0,4,0,15,208,0,1,252,0,0,0,0,15,208,0,2,248,0,0,0,0,15,240,0,7,244,0,0,0,0,15,255,255,255,240,0,0,0,0,7,255,255,255,224,0,0,0,0,1,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x6027 性 + 39,96,33,35,59,36,1,252,0,63,64,0,0,47,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,3,244,63,64,0,0,0,63,64,3,240,63,64,0,0,0,63,64,7,240,63,64,0,0,0,63,64,11,240,63,64,0,0,0,63,88,11,224,63,64,0,0,10,63,252,15,224,63,128,0,0,31,63,190,31,255,255,255,255,0,47,63,127,47,255,255,255,255,0,47,63,95,127,255,255,255,255,0,63,63,79,255,64,63,64,0,0,62,63,79,255,0,63,64,0,0,61,63,64,254,0,63,64,0,0,125,63,66,252,0,63,64,0,0,188,63,64,120,0,63,64,0,0,188,63,64,0,0,63,64,0,0,0,63,64,0,0,63,128,0,0,0,63,64,15,255,255,255,253,0,0,63,64,15,255,255,255,253,0,0,63,64,15,255,255,255,253,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,128,0,0,0,63,67,255,255,255,255,255,192,0,63,67,255,255,255,255,255,192,0,63,67,255,255,255,255,255,192,0,63,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6062 恢 + 98,96,34,35,59,36,1,252,0,63,0,31,64,0,0,0,0,0,63,0,31,64,0,0,0,0,0,63,0,31,64,0,0,0,0,0,63,0,47,64,0,0,0,0,0,63,3,255,255,255,255,255,208,0,63,3,255,255,255,255,255,208,0,63,103,255,255,255,255,255,208,10,63,248,31,64,0,0,0,0,31,63,188,31,64,3,240,0,0,31,63,61,31,64,3,240,0,0,31,63,46,31,64,3,240,0,0,46,63,31,47,64,3,240,0,0,46,63,15,47,73,3,240,11,128,61,63,14,47,79,131,240,15,192,60,63,0,47,79,67,240,31,128,188,63,0,47,79,3,240,47,0,248,63,0,47,95,3,240,63,0,16,63,0,47,47,3,240,125,0,0,63,0,63,62,3,240,188,0,0,63,0,63,61,3,244,248,0,0,63,0,63,124,7,244,96,0,0,63,0,63,4,11,248,0,0,0,63,0,126,0,15,252,0,0,0,63,0,190,0,31,189,0,0,0,63,0,253,0,63,63,0,0,0,63,0,252,0,127,47,64,0,0,63,1,252,0,253,15,192,0,0,63,2,248,2,252,15,224,0,0,63,3,240,11,240,7,248,0,0,63,11,240,47,224,2,254,0,0,63,15,209,255,128,0,255,192,0,63,47,195,254,0,0,63,224,0,63,15,66,248,0,0,15,192,0,63,2,0,208,0,0,2,64,0,0,0,0,0,0,0,0,0, + // 0x606f 息 + 111,96,33,34,50,36,2,253,0,0,0,15,240,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,31,192,0,0,0,0,0,63,255,255,255,255,253,0,0,0,63,255,255,255,255,253,0,0,0,63,170,170,170,170,253,0,0,0,63,64,0,0,0,253,0,0,0,63,64,0,0,0,253,0,0,0,63,255,255,255,255,253,0,0,0,63,255,255,255,255,253,0,0,0,63,149,85,85,85,253,0,0,0,63,64,0,0,0,253,0,0,0,63,64,0,0,0,253,0,0,0,63,255,255,255,255,253,0,0,0,63,255,255,255,255,253,0,0,0,63,149,85,85,85,253,0,0,0,63,64,0,0,0,253,0,0,0,63,64,0,0,0,253,0,0,0,63,170,170,170,170,253,0,0,0,63,255,255,255,255,253,0,0,0,63,255,255,255,255,253,0,0,0,0,0,9,0,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,224,0,8,0,0,3,224,127,11,248,0,190,0,0,3,240,127,2,254,0,191,128,0,11,240,127,0,255,0,63,224,0,15,208,127,0,56,0,15,244,0,47,192,127,0,0,30,3,252,0,127,128,127,0,0,31,128,255,0,255,0,127,0,0,63,128,191,64,253,0,63,255,255,255,64,63,64,36,0,47,255,255,255,0,24,0,0,0,11,255,255,248,0,0,0, + // 0x61b6 憶 + 182,97,34,34,50,36,1,253,0,63,0,0,0,63,0,0,0,0,63,0,0,0,63,0,0,0,0,63,0,21,85,191,149,85,0,0,63,0,127,255,255,255,255,0,0,63,0,127,255,255,255,255,0,0,63,0,0,252,0,15,192,0,0,63,96,0,189,0,31,128,0,10,63,248,0,126,0,47,64,0,31,63,188,0,63,0,63,0,0,31,63,62,255,255,255,255,255,208,31,63,47,255,255,255,255,255,208,46,63,31,170,170,170,170,170,144,46,63,15,0,0,0,0,0,0,61,63,9,15,255,255,255,253,0,60,63,0,15,255,255,255,253,0,124,63,0,15,192,0,0,189,0,248,63,0,15,192,0,0,189,0,16,63,0,15,255,255,255,253,0,0,63,0,15,255,255,255,253,0,0,63,0,15,192,0,0,189,0,0,63,0,15,192,0,0,189,0,0,63,0,15,255,255,255,253,0,0,63,0,15,255,255,255,253,0,0,63,0,0,1,248,0,0,0,0,63,0,0,1,255,0,0,0,0,63,0,36,42,127,193,224,0,0,63,0,126,63,11,211,244,0,0,63,0,189,63,2,65,253,0,0,63,0,252,63,0,4,191,0,0,63,1,252,63,0,11,191,128,0,63,3,244,47,64,15,207,192,0,63,15,240,47,255,255,139,224,0,63,7,192,31,255,255,3,64,0,63,0,0,2,170,168,0,0, + // 0x61c9 應 + 201,97,34,35,59,36,1,252,0,0,0,0,190,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,3,255,255,255,255,255,255,255,192,3,255,255,255,255,255,255,255,192,3,255,255,255,255,255,255,255,192,3,240,2,224,15,128,184,0,0,3,240,3,240,47,128,252,0,0,3,240,11,224,63,2,248,0,0,3,240,31,192,255,255,255,255,0,3,240,63,65,255,255,255,255,0,3,240,255,67,252,3,240,0,0,3,243,255,79,252,3,240,0,0,3,255,255,127,255,255,255,252,0,3,255,255,111,255,255,255,252,0,3,251,95,68,188,3,240,0,0,3,241,31,64,191,255,255,252,0,3,240,31,64,191,255,255,252,0,3,240,31,64,188,3,240,0,0,7,240,31,64,188,3,240,0,0,7,224,31,64,191,255,255,255,128,7,224,31,64,191,255,255,255,128,7,224,31,64,56,0,0,0,0,11,208,0,0,255,64,0,0,0,15,208,0,0,127,240,0,0,0,15,192,36,10,135,253,7,192,0,15,192,63,15,192,252,15,240,0,31,128,190,15,192,32,3,248,0,47,128,252,15,192,0,81,253,0,63,66,252,15,192,0,188,191,0,127,7,244,15,192,0,252,63,192,190,15,224,15,255,255,252,15,208,124,3,128,11,255,255,244,11,64,8,0,0,1,170,170,128,0,0,0,0,0,0,0,0,0,0,0, + // 0x6210 成 + 16,98,34,35,59,36,1,252,0,0,0,0,15,224,96,0,0,0,0,0,0,15,225,254,0,0,0,0,0,0,15,225,255,192,0,0,0,0,0,15,224,47,244,0,0,0,0,0,15,224,7,252,0,0,0,0,0,15,224,0,240,0,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,253,85,85,91,245,85,85,64,2,252,0,0,7,240,0,0,0,2,252,0,0,7,240,0,0,0,2,252,0,0,3,240,1,228,0,2,252,0,0,3,244,3,252,0,2,255,255,255,3,244,3,244,0,2,255,255,255,3,248,11,240,0,2,255,255,255,2,248,15,224,0,2,252,0,127,2,252,31,192,0,2,252,0,127,1,252,63,192,0,2,252,0,127,0,253,127,64,0,2,252,0,127,0,254,255,0,0,2,252,0,127,0,255,253,0,0,3,248,0,190,0,191,248,0,0,3,248,0,190,0,127,240,0,0,3,244,0,190,0,63,208,5,0,7,244,0,253,0,191,192,11,128,11,241,255,253,1,255,208,11,208,11,240,255,252,11,255,240,11,208,15,224,191,224,63,255,248,15,192,47,208,0,2,255,211,254,31,192,63,192,0,31,255,1,255,255,128,127,64,0,15,248,0,127,255,0,47,0,0,3,208,0,15,253,0,9,0,0,1,0,0,0,80,0,0,0,0,0,0,0,0,0,0, + // 0x6236 戶 + 54,98,30,34,16,36,1,253,0,0,0,0,0,0,176,0,0,0,0,0,0,111,252,0,0,0,0,1,175,255,255,0,0,20,22,255,255,255,228,0,0,47,255,255,255,228,0,0,0,47,255,254,144,0,0,0,0,47,233,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,255,255,255,255,255,208,0,47,255,255,255,255,255,208,0,47,255,255,255,255,255,208,0,47,192,0,0,0,15,208,0,47,192,0,0,0,15,208,0,47,128,0,0,0,15,208,0,47,128,0,0,0,15,208,0,47,128,0,0,0,15,208,0,63,128,0,0,0,15,208,0,63,255,255,255,255,255,208,0,63,255,255,255,255,255,208,0,63,255,255,255,255,255,208,0,127,0,0,0,0,15,208,0,191,0,0,0,0,15,208,0,254,0,0,0,0,0,0,0,253,0,0,0,0,0,0,2,252,0,0,0,0,0,0,3,248,0,0,0,0,0,0,7,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,63,208,0,0,0,0,0,0,127,192,0,0,0,0,0,0,31,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0, + // 0x6240 所 + 64,98,34,34,50,36,1,253,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,189,0,47,255,255,255,192,0,31,255,128,47,255,255,255,196,7,255,255,64,47,255,255,255,207,255,255,224,0,0,0,0,0,15,255,249,0,0,0,0,0,0,15,253,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,11,255,255,255,15,208,0,0,0,11,255,255,255,15,208,0,0,0,11,255,255,255,15,208,0,0,0,11,224,0,127,15,224,0,0,0,11,224,0,127,15,255,255,255,224,11,224,0,127,15,255,255,255,224,11,224,0,127,15,255,255,255,224,11,224,0,127,15,208,7,240,0,11,255,255,255,15,208,7,240,0,11,255,255,255,15,192,7,240,0,11,255,255,255,15,192,7,240,0,11,224,0,0,31,192,7,240,0,11,224,0,0,47,192,7,240,0,11,208,0,0,47,128,7,240,0,15,208,0,0,63,64,7,240,0,15,208,0,0,127,0,7,240,0,15,192,0,0,191,0,7,240,0,31,192,0,0,253,0,7,240,0,31,192,0,2,252,0,7,240,0,47,128,0,3,248,0,7,240,0,63,64,0,11,240,0,7,240,0,191,0,0,47,224,0,7,240,0,254,0,0,63,192,0,7,240,0,124,0,0,15,64,0,7,240,0,8,0,0,1,0,0,7,240,0, + // 0x6247 扇 + 71,98,32,32,0,36,1,253,31,255,255,255,255,255,255,255,31,255,255,255,255,255,255,255,15,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,240,0,255,255,255,255,255,255,240,0,255,170,170,170,170,171,240,0,253,0,0,0,0,3,240,0,253,0,0,0,0,3,240,0,255,170,170,170,170,171,240,0,255,255,255,255,255,255,240,0,255,255,255,255,255,255,240,0,253,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,253,255,255,241,255,255,252,0,253,255,255,241,255,255,252,0,252,170,171,240,170,170,252,1,252,24,3,240,44,1,252,1,252,127,3,240,191,1,252,2,252,47,131,240,47,193,252,2,248,15,211,240,15,209,252,3,244,7,131,240,3,65,252,7,240,0,3,240,0,21,252,11,240,1,243,240,2,253,252,15,224,111,247,240,111,253,252,31,215,255,211,243,255,209,252,47,195,253,3,242,253,1,252,127,67,144,3,241,128,1,252,255,0,1,171,240,0,171,248,45,0,0,255,224,0,191,244,4,0,0,255,128,0,63,208, + // 0x624b 手 + 75,98,32,35,24,36,2,252,0,0,0,0,0,0,104,0,0,0,0,0,22,191,254,0,0,5,90,191,255,255,255,64,11,255,255,255,255,255,228,0,7,255,255,255,254,80,0,0,3,255,169,95,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,15,240,0,0,0,11,255,255,255,255,255,255,240,11,255,255,255,255,255,255,240,11,255,255,255,255,255,255,240,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,95,245,85,85,85,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,1,64,31,224,0,0,0,0,3,255,255,224,0,0,0,0,2,255,255,192,0,0,0,0,0,255,249,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6253 打 + 83,98,34,34,50,36,1,253,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,15,255,255,255,255,224,0,15,192,15,255,255,255,255,224,0,15,192,15,255,255,255,255,224,0,15,192,5,85,85,254,85,64,63,255,255,240,0,0,253,0,0,63,255,255,240,0,0,253,0,0,63,255,255,240,0,0,253,0,0,0,31,208,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,214,240,0,0,253,0,0,0,31,255,240,0,0,253,0,0,6,255,255,240,0,0,253,0,0,127,255,254,64,0,0,253,0,0,63,255,208,0,0,0,253,0,0,63,175,192,0,0,0,253,0,0,20,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,0,253,0,0,0,15,192,0,0,1,253,0,0,0,31,192,0,47,255,253,0,0,15,255,192,0,31,255,252,0,0,15,255,128,0,15,255,240,0,0,7,249,0,0,6,165,0,0,0, + // 0x6279 批 + 121,98,34,34,50,36,1,253,0,63,0,42,0,2,160,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,127,255,253,63,64,7,240,0,0,127,255,253,63,64,7,240,4,0,127,255,253,63,64,7,240,31,0,0,127,0,63,64,7,240,127,128,0,63,0,63,64,7,241,255,128,0,63,0,63,255,215,247,254,0,0,63,0,63,255,215,255,244,0,0,63,0,63,255,215,255,192,0,0,63,0,63,64,7,253,0,0,0,63,188,63,64,7,240,0,0,0,127,253,63,64,7,240,0,0,27,255,253,63,64,7,240,0,0,255,255,208,63,64,7,240,0,0,191,255,0,63,64,7,240,0,0,126,127,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,0,0,0,63,0,63,64,7,240,7,128,0,63,0,63,64,7,240,7,224,0,63,0,63,86,151,240,7,224,0,63,0,63,255,231,240,11,208,0,127,11,255,255,227,240,15,208,63,254,15,255,255,147,255,255,192,31,253,15,254,144,3,255,255,128,15,228,6,64,0,0,191,254,0, + // 0x6296 抖 + 150,98,34,35,59,36,1,252,0,47,128,0,0,0,47,128,0,0,47,128,0,0,0,47,128,0,0,47,128,0,16,0,47,128,0,0,47,128,0,126,0,47,128,0,0,47,128,0,255,208,47,128,0,0,47,128,0,47,248,47,128,0,0,47,128,0,7,254,47,128,0,63,255,255,192,0,253,47,128,0,63,255,255,192,0,36,47,128,0,63,255,255,192,0,0,47,128,0,0,47,128,0,0,0,47,128,0,0,47,128,1,64,0,47,128,0,0,47,128,3,244,0,47,128,0,0,47,128,11,254,0,47,128,0,0,47,128,2,255,208,47,128,0,0,47,128,64,127,244,47,128,0,0,47,223,192,11,240,47,128,0,0,47,255,192,1,192,47,128,0,27,255,255,192,0,0,47,128,0,191,255,249,0,0,0,47,128,0,127,255,192,0,0,0,47,239,208,63,175,128,0,0,6,191,255,208,16,47,128,0,107,255,255,255,224,0,47,128,63,255,255,255,249,64,0,47,128,63,255,255,191,128,0,0,47,128,47,250,64,47,128,0,0,47,128,21,0,0,47,128,0,0,47,128,0,0,0,47,128,0,0,47,128,0,0,0,47,128,0,0,47,128,0,0,0,47,128,0,0,47,128,0,0,0,47,128,0,47,255,128,0,0,0,47,128,0,15,255,0,0,0,0,47,128,0,15,248,0,0,0,0,47,128,0,0,0,0,0,0,0,0,0,0, + // 0x62bd 抽 + 189,98,33,35,59,36,1,252,0,47,64,0,0,47,64,0,0,0,47,64,0,0,47,64,0,0,0,47,64,0,0,47,64,0,0,0,47,64,0,0,47,64,0,0,0,47,64,0,0,47,64,0,0,0,47,64,0,0,47,64,0,0,0,47,64,0,0,47,64,0,0,127,255,255,0,0,47,64,0,0,127,255,255,47,255,255,255,255,192,127,255,255,47,255,255,255,255,192,0,47,128,47,255,255,255,255,192,0,47,64,47,128,63,128,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,159,111,64,47,64,47,192,0,63,255,111,64,47,64,47,192,27,255,255,175,255,255,255,255,192,255,255,248,47,255,255,255,255,192,191,255,128,47,255,255,255,255,192,126,127,64,47,128,47,128,47,192,16,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,64,47,64,47,192,0,47,64,47,255,255,255,255,192,0,47,64,47,255,255,255,255,192,0,63,64,47,255,255,255,255,192,47,255,64,47,128,0,0,47,192,31,255,0,47,64,0,0,47,192,15,248,0,47,64,0,0,26,128,0,0,0,0,0,0,0,0,0, + // 0x62d4 拔 + 212,98,34,35,59,36,1,252,0,47,64,0,31,192,16,0,0,0,47,64,0,31,192,125,0,0,0,47,64,0,31,192,255,192,0,0,47,64,0,31,192,47,244,0,0,47,64,0,31,192,7,254,0,0,47,64,0,31,192,0,254,0,0,47,64,0,31,192,0,44,0,127,255,255,0,31,192,0,0,0,127,255,255,127,255,255,255,255,192,127,255,255,127,255,255,255,255,192,106,191,234,127,255,255,255,255,192,0,47,64,0,47,128,0,0,0,0,47,64,0,47,128,0,0,0,0,47,64,0,63,192,0,64,0,0,47,64,0,63,208,2,248,0,0,47,64,0,63,224,3,244,0,0,47,135,64,63,240,3,240,0,0,47,255,64,127,240,7,240,0,6,255,255,128,191,248,11,224,0,191,255,253,0,254,252,15,208,0,191,255,128,0,252,189,31,192,0,127,191,64,1,252,127,47,192,0,32,47,64,2,248,63,127,64,0,0,47,64,3,244,31,255,0,0,0,47,64,7,240,15,254,0,0,0,47,64,15,224,7,252,0,0,0,47,64,31,208,7,252,0,0,0,47,64,63,192,15,255,64,0,0,47,64,191,64,63,255,208,0,0,47,65,254,0,255,95,244,0,0,63,67,252,7,254,7,255,64,47,255,79,244,47,248,1,255,224,31,255,11,208,47,208,0,47,192,15,248,2,128,7,0,0,3,64,0,0,0,0,0,0,0,0,0, + // 0x6309 按 + 9,99,34,35,59,36,1,252,0,47,64,0,0,63,0,0,0,0,47,64,0,0,63,64,0,0,0,47,64,0,0,63,64,0,0,0,47,64,0,0,63,64,0,0,0,47,64,0,0,63,64,0,0,0,47,64,63,255,255,255,255,192,0,47,64,63,255,255,255,255,192,127,255,255,127,255,255,255,255,192,127,255,255,127,0,0,0,15,192,127,255,255,127,1,252,0,15,192,0,47,128,63,2,252,0,15,192,0,47,64,63,3,248,0,15,192,0,47,64,0,3,240,0,0,0,0,47,64,0,7,240,0,0,0,0,47,64,0,15,224,0,0,0,0,47,64,127,255,255,255,255,224,0,47,70,191,255,255,255,255,224,0,47,255,255,255,255,255,255,224,1,191,255,128,63,64,7,240,0,191,255,254,0,127,0,15,240,0,191,255,128,0,254,0,15,224,0,127,191,64,0,252,0,31,208,0,36,47,64,2,252,0,47,192,0,0,47,64,3,255,64,63,64,0,0,47,64,7,255,248,255,0,0,0,47,64,11,255,255,253,0,0,0,47,64,0,65,255,252,0,0,0,47,64,0,0,63,255,64,0,0,47,64,0,1,255,255,240,0,0,47,64,0,31,255,47,253,0,0,63,64,6,255,248,7,255,128,47,255,65,255,255,128,0,191,208,31,255,0,255,244,0,0,31,128,15,248,0,121,0,0,0,2,0,0,0,0,0,0,0,0,0,0, + // 0x6389 掉 + 137,99,34,35,59,36,1,252,0,63,0,0,0,190,0,0,0,0,63,0,0,0,190,0,0,0,0,63,0,0,0,190,0,0,0,0,63,0,0,0,191,255,255,192,0,63,0,0,0,191,255,255,192,0,63,0,0,0,191,255,255,192,0,63,0,0,0,190,0,0,0,127,255,255,0,0,190,0,0,0,127,255,255,0,0,190,0,0,0,127,255,255,63,255,255,255,253,0,0,127,0,63,255,255,255,253,0,0,63,0,63,170,170,170,253,0,0,63,0,63,0,0,0,253,0,0,63,0,63,0,0,0,253,0,0,63,0,63,255,255,255,253,0,0,63,1,63,255,255,255,253,0,0,63,190,63,85,85,85,253,0,0,127,255,63,0,0,0,253,0,47,255,255,63,0,0,0,253,0,127,255,208,63,170,170,170,253,0,63,255,0,63,255,255,255,253,0,57,127,0,63,255,255,255,253,0,0,63,0,0,0,190,0,0,0,0,63,0,0,0,190,0,0,0,0,63,0,0,0,190,0,0,0,0,63,3,255,255,255,255,255,208,0,63,3,255,255,255,255,255,208,0,63,3,255,255,255,255,255,208,0,63,0,0,0,190,0,0,0,0,63,0,0,0,190,0,0,0,0,127,0,0,0,190,0,0,0,63,255,0,0,0,190,0,0,0,63,254,0,0,0,190,0,0,0,47,228,0,0,0,190,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x63a2 探 + 162,99,34,34,50,36,1,253,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,191,255,255,255,255,192,0,63,0,191,255,255,255,255,192,0,63,0,191,255,255,255,255,192,0,63,0,189,0,0,0,15,192,0,63,0,189,15,193,248,15,192,127,255,253,189,15,193,248,15,192,127,255,253,189,31,129,248,10,128,127,255,253,0,47,129,248,0,0,0,127,0,0,63,65,248,3,64,0,63,0,0,191,1,248,3,224,0,63,0,2,253,1,252,7,208,0,63,0,31,248,1,255,255,192,0,63,0,255,224,0,255,255,128,0,63,0,127,64,127,26,169,0,0,63,188,16,0,127,0,0,0,0,191,253,0,0,127,0,0,0,111,255,253,0,0,127,0,0,0,191,255,144,255,255,255,255,255,192,127,255,0,255,255,255,255,255,192,120,63,0,255,255,255,255,255,192,0,63,0,0,11,255,244,0,0,0,63,0,0,31,255,252,0,0,0,63,0,0,63,255,255,0,0,0,63,0,0,255,127,63,128,0,0,63,0,3,252,127,31,224,0,0,63,0,15,244,127,7,248,0,0,63,0,127,208,127,2,255,0,0,63,7,255,64,127,0,191,224,0,127,11,253,0,127,0,47,208,63,254,3,224,0,127,0,7,128,31,253,0,64,0,127,0,0,0,15,228,0,0,0,127,0,0,0, + // 0x63a5 接 + 165,99,34,35,59,36,1,252,0,47,64,0,0,127,0,0,0,0,47,64,0,0,127,0,0,0,0,47,64,0,0,127,0,0,0,0,47,64,0,0,127,0,0,0,0,47,64,191,255,255,255,255,64,0,47,64,191,255,255,255,255,64,0,47,64,127,255,255,255,255,64,0,47,128,0,252,0,15,192,0,127,255,254,0,253,0,31,192,0,127,255,254,0,126,0,63,64,0,127,255,254,0,127,0,63,0,0,0,47,64,0,63,0,126,0,0,0,47,66,255,255,255,255,255,208,0,47,67,255,255,255,255,255,208,0,47,67,255,255,255,255,255,208,0,47,64,0,7,244,0,0,0,0,47,174,0,11,240,0,0,0,0,63,255,0,15,208,0,0,0,27,255,255,255,255,255,255,255,208,255,255,230,255,255,255,255,255,208,191,255,66,255,255,255,255,255,208,126,47,64,0,253,0,31,192,0,0,47,64,1,252,0,47,192,0,0,47,64,3,248,0,63,64,0,0,47,64,7,244,0,127,0,0,0,47,64,15,255,128,254,0,0,0,47,64,31,255,255,252,0,0,0,47,64,6,159,255,248,0,0,0,47,64,0,0,255,254,0,0,0,47,64,0,7,255,255,224,0,0,63,64,5,191,253,191,253,0,47,255,71,255,255,224,11,255,64,15,255,3,255,249,0,0,191,0,15,248,2,249,0,0,0,28,0,0,0,0,0,0,0,0,0,0, + // 0x63a7 控 + 167,99,34,34,50,36,1,253,0,62,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,255,255,255,255,255,192,0,63,0,255,255,255,255,255,192,0,63,0,255,255,255,255,255,192,0,127,1,248,31,193,248,15,192,127,255,253,248,31,129,248,15,192,127,255,253,248,31,129,248,15,192,127,255,253,248,47,65,248,0,0,0,63,0,0,63,1,248,1,0,0,63,0,0,127,1,248,7,192,0,63,0,1,253,1,248,11,192,0,63,0,11,252,1,255,175,192,0,63,25,191,240,0,255,255,128,0,63,253,191,128,0,127,254,0,0,191,254,56,0,0,0,0,0,47,255,248,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,191,255,0,63,255,255,255,254,0,125,127,0,63,255,255,255,254,0,0,63,0,63,255,255,255,254,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,127,3,255,255,255,255,255,224,63,254,3,255,255,255,255,255,224,31,253,3,255,255,255,255,255,224,15,228,0,0,0,0,0,0,0, + // 0x63d0 提 + 208,99,34,35,59,36,1,252,0,126,0,0,0,0,0,0,0,0,126,0,15,255,255,255,252,0,0,126,0,15,255,255,255,252,0,0,126,0,15,213,85,86,252,0,0,126,0,15,192,0,0,252,0,0,126,0,15,192,0,0,252,0,0,126,0,15,255,255,255,252,0,127,255,254,15,255,255,255,252,0,127,255,254,15,213,85,85,252,0,127,255,254,15,192,0,0,252,0,0,127,0,15,192,0,0,252,0,0,126,0,15,255,255,255,252,0,0,126,0,15,255,255,255,252,0,0,126,0,5,85,85,85,84,0,0,126,0,0,0,0,0,0,0,0,126,0,0,0,0,0,0,0,0,126,24,255,255,255,255,255,192,0,127,253,255,255,255,255,255,192,6,255,254,170,170,255,170,170,128,191,255,248,0,0,127,0,0,0,191,255,0,11,128,127,0,0,0,126,190,0,15,192,127,0,0,0,0,126,0,15,192,127,170,168,0,0,126,0,31,192,127,255,252,0,0,126,0,47,192,127,255,252,0,0,126,0,63,192,127,0,0,0,0,126,0,63,224,127,0,0,0,0,126,0,191,244,127,0,0,0,0,126,0,253,252,127,0,0,0,0,126,2,252,63,191,0,0,0,0,126,7,244,31,255,255,255,224,63,254,15,240,2,255,255,255,208,47,252,47,192,0,27,255,255,192,31,228,7,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x63d2 插 + 210,99,33,34,50,36,1,253,0,62,0,0,0,0,0,0,0,0,63,0,0,0,0,22,248,0,0,63,0,1,90,191,255,253,0,0,63,0,127,255,255,255,254,0,0,63,0,63,255,255,233,64,0,0,63,0,42,85,127,0,0,0,0,63,0,0,0,63,0,0,0,127,255,253,0,0,63,0,0,0,127,255,254,255,255,255,255,255,192,127,255,254,255,255,255,255,255,192,0,127,1,255,255,255,255,255,192,0,63,0,0,0,63,0,0,0,0,63,0,0,0,63,0,0,0,0,63,0,0,4,63,0,0,0,0,63,0,0,62,63,0,0,0,0,63,0,182,255,255,63,255,64,0,63,124,191,254,191,63,255,64,0,127,253,191,208,63,47,255,64,111,255,253,190,0,63,0,47,64,191,255,144,189,0,63,0,47,64,127,191,0,189,0,63,0,47,64,32,63,0,191,253,63,47,255,64,0,63,0,191,253,63,47,255,64,0,63,0,191,253,63,47,255,64,0,63,0,189,0,63,0,47,64,0,63,0,189,0,63,0,47,64,0,63,0,189,0,63,0,47,64,0,63,0,189,0,63,0,47,64,0,63,0,189,0,63,0,47,64,0,63,0,191,255,255,255,255,64,0,127,0,191,255,255,255,255,64,63,254,0,191,255,255,255,255,64,31,253,0,189,0,0,0,47,64,15,228,0,125,0,0,0,47,64, + // 0x63db 換 + 219,99,34,35,59,36,1,252,0,62,0,0,58,0,0,0,0,0,63,0,0,127,0,0,0,0,0,63,0,0,254,0,0,0,0,0,63,0,1,255,255,244,0,0,0,63,0,3,255,255,252,0,0,0,63,0,15,250,171,248,0,0,0,63,0,47,208,3,240,0,0,127,255,254,255,128,11,224,0,0,127,255,255,255,0,15,192,0,0,127,255,255,255,255,255,255,255,0,0,127,0,191,255,255,255,255,0,0,63,0,63,175,235,250,191,0,0,63,0,63,7,195,224,63,0,0,63,0,63,11,195,224,63,0,0,63,0,63,15,67,224,63,0,0,63,4,63,63,3,255,255,0,0,63,189,63,253,1,255,255,0,1,191,253,63,176,0,0,63,0,111,255,253,63,0,0,0,63,0,191,255,144,63,0,126,0,63,0,127,255,0,42,0,189,0,42,0,120,63,0,0,0,189,0,0,0,0,63,3,255,255,255,255,255,192,0,63,3,255,255,255,255,255,192,0,63,2,255,255,255,255,255,192,0,63,0,0,3,255,192,0,0,0,63,0,0,7,255,224,0,0,0,63,0,0,15,231,244,0,0,0,63,0,0,63,194,254,0,0,0,63,0,2,255,64,255,208,0,0,127,0,47,252,0,63,253,0,63,254,11,255,224,0,11,255,208,31,253,11,255,0,0,1,255,128,15,228,3,208,0,0,0,11,0,0,0,0,0,0,0,0,0,0, + // 0x64c7 擇 + 199,100,34,35,59,36,1,252,0,63,0,0,0,0,0,0,0,0,63,0,21,85,85,85,85,0,0,63,0,63,255,255,255,255,64,0,63,0,63,255,255,255,255,64,0,63,0,62,11,192,248,31,64,0,63,0,62,11,192,248,31,64,0,63,0,62,11,192,248,31,64,127,255,253,63,255,255,255,255,64,127,255,253,63,255,255,255,255,64,127,255,253,21,85,127,85,85,0,0,127,0,0,0,63,0,0,0,0,63,0,21,85,191,85,85,0,0,63,0,47,255,255,255,255,0,0,63,0,47,255,255,255,255,0,0,63,0,0,0,63,0,0,0,0,63,4,0,0,63,0,0,0,0,63,254,255,255,255,255,255,224,1,191,255,255,255,255,255,255,224,127,255,254,170,254,170,175,250,144,191,255,128,0,252,0,15,192,0,127,255,0,0,190,0,47,128,0,121,63,0,0,63,0,63,0,0,0,63,0,255,255,255,255,255,192,0,63,0,255,255,255,255,255,192,0,63,0,170,170,191,170,170,128,0,63,0,0,0,63,0,0,0,0,63,0,0,0,63,0,0,0,0,63,0,63,255,255,255,255,0,0,63,0,63,255,255,255,255,0,0,63,0,42,170,191,170,170,0,0,127,0,0,0,63,0,0,0,63,254,0,0,0,63,0,0,0,31,253,0,0,0,63,0,0,0,15,228,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x64ca 擊 + 202,100,32,34,16,36,2,253,0,7,192,0,0,0,0,0,0,7,208,0,11,255,255,0,191,255,255,255,11,255,255,0,191,255,255,254,11,213,127,4,5,91,229,84,15,192,63,15,47,255,255,252,31,128,63,95,46,7,208,188,127,64,63,255,47,255,255,252,254,0,15,252,47,91,213,188,56,0,0,0,47,91,229,188,127,255,255,240,47,255,255,252,127,255,255,224,0,7,208,0,11,208,15,192,255,255,255,255,7,240,47,128,255,255,255,254,2,253,254,0,31,7,208,244,0,191,248,0,31,7,208,248,27,255,249,0,31,255,255,248,255,255,255,233,31,255,255,248,127,64,47,255,0,0,0,0,21,107,209,189,1,255,255,255,255,255,244,0,0,255,255,255,254,149,0,0,0,0,0,11,224,0,0,0,0,0,0,11,224,0,0,0,11,255,255,255,255,255,255,240,11,255,255,255,255,255,255,240,0,0,0,11,224,0,0,0,21,85,85,95,229,85,85,84,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,11,224,0,0,0,0,0,0,11,224,0,0,0,0,0,21,95,224,0,0,0,0,0,47,255,208,0,0,0,0,0,15,254,64,0,0,0, + // 0x64cb 擋 + 203,100,33,34,50,36,1,253,0,63,0,1,0,127,0,80,0,0,63,0,31,128,127,0,253,0,0,63,0,15,208,127,1,252,0,0,63,0,7,240,127,3,244,0,0,63,0,3,240,127,7,224,0,0,63,0,2,224,127,7,192,0,0,63,0,255,255,255,255,255,192,127,255,253,255,255,255,255,255,192,127,255,253,254,170,170,170,175,192,127,255,253,252,0,0,0,15,192,0,127,0,253,85,85,85,95,192,0,63,0,254,255,255,255,255,192,0,63,0,2,255,255,255,240,0,0,63,0,2,249,85,91,240,0,0,63,0,2,244,0,7,240,0,0,63,4,2,244,0,7,240,0,0,63,253,2,255,255,255,240,0,1,255,253,2,255,255,255,240,0,191,255,253,0,85,85,85,80,0,191,255,64,0,0,0,0,0,0,127,255,0,63,255,255,255,255,0,36,63,0,63,255,255,255,255,0,0,63,0,63,149,191,85,191,0,0,63,0,63,0,62,0,127,0,0,63,0,63,0,62,0,127,0,0,63,0,63,255,255,255,255,0,0,63,0,63,255,255,255,255,0,0,63,0,63,149,191,85,191,0,0,63,0,63,0,62,0,127,0,0,63,0,63,0,62,0,127,0,0,127,0,63,255,255,255,255,0,63,254,0,63,255,255,255,255,0,31,253,0,63,170,170,170,191,0,15,228,0,47,0,0,0,127,0, + // 0x64e0 擠 + 224,100,34,35,59,36,1,252,0,126,0,0,0,127,0,0,0,0,126,0,0,0,127,0,0,0,0,126,0,0,0,127,0,0,0,0,126,3,255,255,255,255,255,192,0,126,3,255,255,255,255,255,192,0,126,2,170,175,170,254,170,128,0,126,0,0,15,0,248,0,0,127,255,252,0,11,128,240,9,0,127,255,252,0,7,194,240,191,64,127,255,254,255,255,227,255,255,64,0,126,2,255,254,190,111,252,0,0,126,0,61,61,61,46,45,0,0,126,0,60,61,61,45,31,0,0,126,0,188,61,61,45,15,0,0,126,0,248,60,61,46,171,192,0,126,107,243,252,61,191,243,224,0,127,255,195,244,61,126,65,192,6,255,253,5,64,40,0,84,0,191,255,224,15,192,0,1,252,0,191,255,0,15,192,0,1,252,0,127,190,0,15,255,255,255,252,0,32,126,0,15,255,255,255,252,0,0,126,0,15,234,170,170,252,0,0,126,0,15,192,0,1,252,0,0,126,0,31,192,0,1,252,0,0,126,0,31,234,170,171,252,0,0,126,0,47,255,255,255,252,0,0,126,0,63,255,255,255,252,0,0,126,0,63,0,0,1,252,0,0,126,0,191,0,0,1,252,0,0,126,1,253,0,0,1,252,0,63,254,3,252,0,0,1,252,0,47,252,11,240,0,0,1,252,0,31,228,1,208,0,0,1,252,0,0,0,0,0,0,0,0,0,0, + // 0x6536 收 + 54,101,34,35,59,36,1,252,0,0,15,192,3,144,0,0,0,0,0,31,192,3,244,0,0,0,0,0,31,192,7,240,0,0,0,0,0,31,192,11,240,0,0,0,2,144,31,192,15,224,0,0,0,7,240,31,192,31,208,0,0,0,7,240,31,192,47,192,0,0,0,7,240,31,192,63,255,255,255,224,7,240,31,192,127,255,255,255,224,7,240,31,192,255,255,255,255,224,7,240,31,193,255,0,0,253,0,7,240,31,195,255,64,1,252,0,7,240,31,199,255,128,2,252,0,7,240,31,207,255,192,3,248,0,7,240,31,239,239,192,3,244,0,7,240,31,255,203,224,7,240,0,7,240,31,223,7,240,11,240,0,7,240,31,198,3,244,15,208,0,7,240,31,192,2,252,47,192,0,7,240,31,192,1,252,63,128,0,7,240,31,192,0,254,191,0,0,7,241,191,192,0,127,254,0,0,7,255,255,192,0,63,252,0,0,127,255,255,192,0,47,248,0,0,127,255,175,192,0,31,240,0,0,63,228,31,192,0,127,252,0,0,41,0,31,192,1,255,254,0,0,0,0,31,192,7,254,255,128,0,0,0,31,192,47,248,63,240,0,0,0,31,193,255,224,15,253,0,0,0,31,203,255,128,7,255,128,0,0,31,239,253,0,0,255,224,0,0,31,207,224,0,0,47,192,0,0,31,199,0,0,0,3,0,0,0,0,0,0,0,0,0,0, + // 0x653e 放 + 62,101,34,35,59,36,1,252,0,3,240,0,0,185,0,0,0,0,3,240,0,0,254,0,0,0,0,3,240,0,0,254,0,0,0,0,3,240,0,0,253,0,0,0,0,3,240,0,1,252,0,0,0,0,7,244,0,2,252,0,0,0,127,255,255,255,67,248,0,0,0,127,255,255,255,67,255,255,255,224,127,255,255,255,71,255,255,255,224,0,126,0,0,15,255,255,255,224,0,126,0,0,31,224,2,252,0,0,126,0,0,47,240,2,248,0,0,126,0,0,63,240,3,244,0,0,127,255,252,191,244,3,240,0,0,127,255,253,255,248,7,240,0,0,127,255,255,254,252,11,224,0,0,126,0,253,248,252,15,208,0,0,126,0,252,112,190,31,192,0,0,126,0,252,0,127,47,192,0,0,190,0,252,0,63,127,64,0,0,190,1,252,0,63,255,0,0,0,253,1,252,0,31,254,0,0,0,253,1,252,0,15,253,0,0,0,252,1,252,0,11,252,0,0,1,252,1,252,0,11,252,0,0,2,252,1,248,0,31,253,0,0,3,248,2,248,0,127,255,64,0,7,240,2,248,1,255,191,192,0,15,240,2,248,7,253,47,240,0,31,208,3,244,47,244,15,253,0,63,192,7,245,255,208,3,255,128,255,67,255,251,255,64,0,255,208,126,2,255,227,252,0,0,47,128,8,1,255,64,208,0,0,6,0,0,0,0,0,0,0,0,0,0, + // 0x6557 敗 + 87,101,34,35,59,36,1,252,0,0,0,0,0,249,0,0,0,10,170,170,168,0,253,0,0,0,11,255,255,252,1,252,0,0,0,11,255,255,252,2,252,0,0,0,11,208,0,252,3,248,0,0,0,11,208,0,252,3,244,0,0,0,11,208,0,252,7,244,0,0,0,11,208,0,252,11,255,255,255,224,11,250,170,252,15,255,255,255,224,11,255,255,252,31,255,255,255,224,11,255,255,252,63,192,2,248,0,11,208,0,252,127,208,3,248,0,11,208,0,252,255,224,3,244,0,11,208,0,254,255,240,7,240,0,11,208,0,255,255,240,11,240,0,11,255,255,255,247,244,15,224,0,11,255,255,255,242,252,15,208,0,11,250,170,253,193,252,31,192,0,11,208,0,252,0,254,63,192,0,11,208,0,252,0,191,63,128,0,11,208,0,252,0,127,191,0,0,11,208,0,252,0,63,255,0,0,11,255,255,252,0,31,253,0,0,11,255,255,252,0,15,252,0,0,6,170,170,168,0,15,248,0,0,0,100,1,64,0,47,252,0,0,0,254,15,208,0,127,255,0,0,1,252,11,240,1,255,255,192,0,3,248,3,248,11,253,63,240,0,11,240,1,253,63,244,15,253,0,31,224,0,191,255,208,3,255,208,63,192,0,59,255,64,0,255,224,127,0,0,1,248,0,0,47,128,13,0,0,0,208,0,0,3,0,0,0,0,0,0,0,0,0,0, + // 0x6574 整 + 116,101,33,33,41,36,2,254,0,3,240,0,0,120,0,0,0,0,3,240,0,0,254,0,0,0,255,255,255,255,128,252,0,0,0,255,255,255,255,130,252,0,0,0,85,87,245,85,3,255,255,255,0,0,3,240,0,11,255,255,255,0,63,255,255,255,31,250,175,250,0,63,255,255,255,63,224,11,208,0,63,3,240,63,255,240,15,192,0,62,3,240,63,253,252,47,128,0,63,3,240,63,56,190,63,0,0,63,255,255,255,0,63,254,0,0,63,255,255,255,0,31,252,0,0,0,63,254,0,0,15,248,0,0,0,255,255,208,0,127,254,0,0,7,251,251,253,2,255,255,208,0,63,211,240,254,127,252,47,254,0,255,67,240,45,255,224,7,255,64,120,3,240,0,126,0,0,190,0,0,1,80,0,16,0,0,8,0,10,170,170,170,170,170,170,160,0,15,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,240,0,0,0,0,11,224,0,0,0,0,0,26,64,11,224,0,0,0,0,0,47,128,11,250,170,168,0,0,0,47,128,11,255,255,253,0,0,0,47,128,11,255,255,253,0,0,0,47,128,11,224,0,0,0,0,0,47,128,11,224,0,0,0,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64, + // 0x6578 數 + 120,101,34,35,59,36,1,252,0,0,125,0,0,11,144,0,0,0,0,125,0,0,15,224,0,0,3,255,255,255,224,15,208,0,0,3,255,255,255,224,15,192,0,0,3,224,190,11,224,15,192,0,0,3,224,125,7,224,31,192,0,0,191,255,255,255,255,47,128,0,0,191,255,255,255,255,63,255,255,224,27,224,190,7,229,63,255,255,224,3,224,125,7,224,127,255,255,224,3,255,255,255,224,190,0,189,0,3,255,255,255,224,255,0,253,0,0,0,190,0,1,255,0,252,0,0,0,190,0,3,255,64,252,0,15,255,255,255,251,255,65,252,0,15,255,255,255,255,255,130,248,0,15,192,125,2,255,223,195,244,0,15,192,125,2,251,207,195,240,0,15,255,255,255,245,75,215,240,0,15,255,255,255,244,7,251,224,0,0,3,244,0,0,3,255,208,0,0,7,224,0,0,2,255,192,0,106,175,255,255,255,1,255,128,0,127,255,255,255,255,0,255,0,0,127,255,170,191,149,0,255,0,0,0,189,0,63,0,2,255,64,0,0,254,64,190,0,7,255,192,0,2,255,245,252,0,15,255,224,0,3,255,255,244,0,63,219,244,0,0,0,255,248,0,255,131,253,0,0,11,255,255,71,254,1,255,64,27,255,253,191,239,248,0,127,208,15,255,144,15,139,208,0,31,128,11,164,0,1,3,64,0,3,0,0,0,0,0,0,0,0,0,0, + // 0x6599 料 + 153,101,34,34,50,36,1,253,0,11,208,0,0,0,15,208,0,0,11,208,0,0,0,15,208,0,24,11,208,164,1,0,15,208,0,62,11,208,252,15,128,15,208,0,47,11,208,252,31,244,15,208,0,31,11,209,244,7,253,15,208,0,15,75,210,240,0,255,79,208,0,15,139,211,240,0,47,15,208,0,11,203,211,208,0,9,15,208,0,11,203,215,192,0,0,15,208,0,7,139,219,128,0,0,15,208,0,0,11,208,0,0,0,15,208,0,127,255,255,252,120,0,15,208,0,127,255,255,252,255,64,15,208,0,127,255,255,252,191,224,15,208,0,0,63,224,0,31,252,15,208,0,0,63,240,0,2,248,15,208,0,0,191,252,0,0,176,15,208,0,0,255,255,0,0,0,15,208,0,1,255,255,128,0,0,15,208,64,3,251,239,208,0,0,15,255,208,3,235,215,240,0,22,255,255,224,15,203,211,248,107,255,255,255,224,31,203,209,243,255,255,255,228,0,63,75,208,131,255,254,95,208,0,191,11,208,2,249,0,15,208,0,189,11,208,0,0,0,15,208,0,60,11,208,0,0,0,15,208,0,36,11,208,0,0,0,15,208,0,0,11,208,0,0,0,15,208,0,0,11,208,0,0,0,15,208,0,0,11,208,0,0,0,15,208,0,0,11,208,0,0,0,15,208,0,0,11,208,0,0,0,15,208,0, + // 0x659c 斜 + 156,101,34,34,50,36,1,253,0,2,253,0,0,0,3,240,0,0,3,255,64,0,0,3,240,0,0,7,255,208,0,0,3,240,0,0,15,255,244,0,180,3,240,0,0,47,203,253,2,253,3,240,0,0,127,130,255,64,255,67,240,0,0,255,0,191,192,63,211,240,0,3,252,0,47,240,15,247,240,0,11,244,0,15,192,3,247,240,0,47,224,0,3,64,0,195,240,0,191,255,255,254,0,0,3,240,0,255,255,255,254,0,0,3,240,0,61,255,255,254,2,192,3,240,0,0,0,253,0,15,244,3,240,0,0,0,253,0,3,254,3,240,0,0,0,253,0,0,191,195,240,0,63,255,255,255,224,47,227,240,0,63,255,255,255,224,11,131,240,0,63,255,255,255,224,1,3,240,0,0,0,253,0,0,0,3,240,64,0,0,253,0,0,0,3,255,208,3,224,253,46,0,1,191,255,224,3,240,253,63,5,191,255,255,224,7,224,253,47,95,255,255,248,0,11,208,253,31,207,255,231,240,0,15,192,253,15,207,164,3,240,0,47,128,253,11,224,0,3,240,0,63,64,253,3,240,0,3,240,0,191,0,253,3,224,0,3,240,0,125,0,253,1,0,0,3,240,0,8,0,253,0,0,0,3,240,0,0,191,252,0,0,0,3,240,0,0,63,252,0,0,0,3,240,0,0,63,224,0,0,0,3,240,0, + // 0x65b0 新 + 176,101,34,35,59,36,1,252,0,1,168,0,0,0,0,4,0,0,1,252,0,0,0,0,189,0,0,1,252,0,0,0,31,255,128,0,1,252,0,6,91,255,255,64,47,255,255,255,199,255,255,224,0,47,255,255,255,199,255,228,0,0,47,255,255,255,199,244,0,0,0,1,240,0,252,7,240,0,0,0,1,244,1,252,7,240,0,0,0,0,252,2,244,7,240,0,0,0,0,252,3,240,7,240,0,0,0,0,184,2,224,7,240,0,0,0,63,255,255,255,215,255,255,255,224,63,255,255,255,215,255,255,255,224,63,255,255,255,215,255,255,255,224,0,1,252,0,7,240,11,240,0,0,1,252,0,7,240,7,224,0,0,1,252,0,7,240,7,224,0,63,255,255,255,199,224,7,224,0,63,255,255,255,203,224,7,224,0,63,255,255,255,203,224,7,224,0,0,7,252,0,15,208,7,224,0,0,15,255,0,15,208,7,224,0,0,47,255,192,15,192,7,224,0,0,127,255,244,31,192,7,224,0,1,254,254,254,47,128,7,224,0,7,249,252,191,63,64,7,224,0,31,241,252,60,127,0,7,224,0,127,193,252,4,254,0,7,224,0,127,1,252,1,253,0,7,224,0,44,1,252,3,252,0,7,224,0,0,1,252,15,240,0,7,224,0,0,1,252,3,224,0,7,224,0,0,1,248,0,128,0,6,160,0,0,0,0,0,0,0,0,0,0, + // 0x65b7 斷 + 183,101,32,34,16,36,3,253,0,20,0,80,0,0,1,64,164,60,0,240,0,0,31,224,248,120,2,208,0,2,255,248,249,241,11,202,9,191,255,208,251,227,223,95,15,255,248,0,250,235,75,188,15,253,0,0,248,255,3,248,15,192,0,0,248,61,1,241,15,192,0,0,248,122,129,219,15,192,0,0,248,242,195,219,143,192,0,0,255,255,255,255,207,192,0,0,251,234,254,81,207,192,0,0,248,0,64,0,15,255,255,254,255,255,255,255,143,255,255,254,255,255,255,255,143,255,255,254,253,126,85,249,79,192,63,64,248,60,1,240,15,192,63,0,248,180,2,208,15,192,63,0,251,242,79,142,15,192,63,0,251,215,223,31,15,192,63,0,249,255,7,189,15,192,63,0,248,190,3,248,15,192,63,0,248,60,0,240,31,128,63,0,248,122,194,235,31,128,63,0,248,242,211,199,111,64,63,0,255,255,255,255,239,64,63,0,251,233,254,150,255,0,63,0,248,0,0,0,127,0,63,0,255,255,255,255,254,0,63,0,255,255,255,255,252,0,63,0,254,170,170,171,252,0,63,0,248,0,0,3,244,0,63,0,248,0,0,1,240,0,63,0,80,0,0,0,80,0,63,0, + // 0x65bc 於 + 188,101,34,35,59,36,1,252,0,7,240,0,0,15,240,0,0,0,7,240,0,0,31,240,0,0,0,7,240,0,0,47,248,0,0,0,7,240,0,0,63,252,0,0,0,7,240,0,0,127,253,0,0,0,7,240,0,0,253,127,0,0,127,255,255,255,1,252,63,128,0,127,255,255,255,3,248,47,192,0,127,255,255,255,11,240,15,224,0,0,190,0,0,31,224,7,244,0,0,190,0,0,63,192,3,252,0,0,190,0,0,255,64,0,255,0,0,190,0,2,254,0,0,191,208,0,190,0,7,252,0,0,63,224,0,255,255,251,240,4,0,15,192,0,255,255,245,192,62,0,3,128,0,255,255,244,0,191,208,0,0,0,253,2,244,0,47,244,0,0,0,252,3,244,0,7,254,0,0,0,252,3,244,0,0,255,64,0,0,252,3,244,0,0,63,0,0,1,252,3,244,0,0,12,0,0,1,252,3,244,0,0,0,0,0,2,248,3,240,0,0,0,0,0,3,244,3,240,11,128,0,0,0,3,240,3,240,31,248,0,0,0,7,240,3,240,31,255,128,0,0,11,224,3,240,2,255,244,0,0,15,208,3,240,0,47,254,0,0,47,192,7,240,0,7,255,208,0,63,128,15,224,0,0,191,248,0,191,11,255,224,0,0,15,252,0,62,7,255,192,0,0,2,240,0,12,3,254,0,0,0,0,144,0,0,0,0,0,0,0,0,0,0, + // 0x6607 昇 + 7,102,32,33,8,36,2,253,1,170,170,170,170,170,170,64,1,255,255,255,255,255,255,64,1,255,255,255,255,255,255,64,1,252,0,0,0,0,63,64,1,252,0,0,0,0,63,64,1,252,0,0,0,0,63,64,1,255,255,255,255,255,255,64,1,255,255,255,255,255,255,64,1,254,170,170,170,170,191,64,1,252,0,0,0,0,63,64,1,252,0,0,0,0,63,64,1,255,255,255,255,255,255,64,1,255,255,255,255,255,255,64,1,170,170,170,170,170,170,64,0,0,0,27,64,5,64,0,0,0,91,255,208,47,192,0,6,255,255,255,224,47,192,0,15,255,255,228,0,47,192,0,11,250,127,64,0,47,192,0,0,0,63,64,0,47,192,0,0,0,63,64,0,47,192,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,191,0,0,47,192,0,0,0,254,0,0,47,192,0,0,3,253,0,0,47,192,0,0,11,248,0,0,47,192,0,0,127,240,0,0,47,192,0,7,255,208,0,0,47,192,0,47,255,0,0,0,47,192,0,15,244,0,0,0,47,192,0,3,64,0,0,0,47,192,0, + // 0x660e 明 + 14,102,31,33,8,36,3,252,255,255,255,3,255,255,255,244,255,255,255,3,255,255,255,244,255,255,255,3,255,255,255,244,252,0,127,3,240,0,3,244,252,0,63,3,240,0,3,244,252,0,63,3,240,0,3,244,252,0,63,3,240,0,3,244,252,0,63,3,240,0,3,244,252,0,63,3,255,255,255,244,252,0,63,3,255,255,255,244,255,255,255,3,255,255,255,244,255,255,255,3,240,0,3,244,255,255,255,3,240,0,3,244,252,0,63,3,240,0,3,244,252,0,63,7,240,0,3,244,252,0,63,7,240,0,3,244,252,0,63,7,240,0,3,244,252,0,63,7,255,255,255,244,252,0,63,11,255,255,255,244,255,255,255,15,255,255,255,244,255,255,255,15,208,0,3,244,255,255,255,15,192,0,3,244,252,0,0,47,192,0,3,244,252,0,0,63,128,0,3,244,252,0,0,127,0,0,3,244,84,0,0,255,0,0,3,244,0,0,2,253,0,0,3,244,0,0,7,252,0,0,3,244,0,0,15,240,0,0,7,244,0,0,127,224,0,31,255,240,0,0,127,128,0,15,255,240,0,0,14,0,0,11,254,64,0,0,0,0,0,0,0,0, + // 0x662f 是 + 47,102,34,33,41,36,1,253,0,21,85,85,85,85,85,64,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,0,0,0,0,31,192,0,0,63,0,0,0,0,31,192,0,0,63,85,85,85,85,111,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,0,0,0,0,31,192,0,0,63,0,0,0,0,31,192,0,0,63,149,85,85,85,111,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,0,0,0,1,252,0,0,0,0,0,3,144,1,252,0,0,0,0,0,7,244,1,252,0,0,0,0,0,11,240,1,252,0,0,0,0,0,15,240,1,255,255,255,244,0,0,15,224,1,255,255,255,244,0,0,47,240,1,255,255,255,244,0,0,63,252,1,252,0,0,0,0,0,191,255,1,252,0,0,0,0,1,254,127,209,252,0,0,0,0,7,252,31,255,252,0,0,0,0,31,240,7,255,255,255,255,255,208,127,208,0,127,255,255,255,255,192,47,64,0,1,191,255,255,255,128,9,0,0,0,0,0,0,0,0, + // 0x6642 時 + 66,102,33,34,50,36,2,253,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,127,255,253,0,0,191,0,0,0,127,255,253,0,0,191,0,0,0,127,255,253,47,255,255,255,252,0,127,0,253,47,255,255,255,252,0,127,0,253,47,255,255,255,252,0,127,0,253,0,0,191,0,0,0,127,0,253,0,0,191,0,0,0,127,0,253,0,0,191,0,0,0,127,0,253,0,0,191,0,0,0,127,0,253,255,255,255,255,255,128,127,0,253,255,255,255,255,255,128,127,255,253,255,255,255,255,255,128,127,255,253,0,0,0,63,64,0,127,255,253,0,0,0,63,64,0,127,0,253,0,0,0,63,64,0,127,0,253,0,0,0,63,64,0,127,0,253,255,255,255,255,255,0,127,0,253,255,255,255,255,255,64,127,0,253,255,255,255,255,255,64,127,0,253,0,0,0,63,64,0,127,0,253,0,192,0,63,64,0,127,0,253,11,240,0,63,64,0,127,255,253,11,248,0,63,64,0,127,255,253,2,253,0,63,64,0,127,255,253,0,255,0,63,64,0,127,0,0,0,63,128,63,64,0,127,0,0,0,47,128,63,64,0,127,0,0,0,13,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,191,255,0,0,0,0,0,0,0,63,248,0,0, + // 0x66ab 暫 + 171,102,32,34,16,36,2,253,0,3,240,0,0,0,1,128,0,3,240,0,0,1,111,240,191,255,255,255,95,191,255,248,191,255,255,255,95,255,254,64,0,3,240,0,31,249,0,0,26,171,250,169,31,128,0,0,63,255,255,254,31,128,0,0,62,3,240,62,31,128,0,0,62,3,240,62,31,255,255,255,63,255,255,254,31,255,255,255,63,171,250,190,31,234,191,170,62,3,240,62,47,64,63,0,63,255,255,254,63,0,63,0,26,171,250,169,63,0,63,0,0,3,240,0,190,0,63,0,255,255,255,255,253,0,63,0,255,255,255,255,248,0,63,0,0,3,240,11,240,0,63,0,0,3,240,2,208,0,63,0,0,1,64,0,64,0,0,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,170,170,170,170,252,0,0,63,0,0,0,0,252,0,0,63,0,0,0,0,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,85,85,85,85,252,0,0,63,0,0,0,0,252,0,0,63,0,0,0,0,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,170,170,170,170,252,0,0,63,0,0,0,0,252,0, + // 0x66f4 更 + 244,102,33,33,41,36,2,252,191,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,254,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,1,254,170,175,250,170,175,208,0,1,252,0,7,240,0,15,208,0,1,252,0,7,240,0,15,208,0,1,254,170,175,250,170,175,208,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,1,252,0,7,240,0,15,208,0,1,252,0,7,240,0,15,208,0,1,252,0,11,240,0,15,208,0,1,254,170,175,250,170,175,208,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,0,6,0,15,208,0,0,0,0,0,127,64,47,192,0,0,0,0,0,63,208,63,128,0,0,0,0,0,15,244,255,64,0,0,0,0,0,7,255,255,0,0,0,0,0,0,1,255,252,0,0,0,0,0,0,0,191,253,0,0,0,0,0,0,11,255,255,249,0,0,0,0,6,255,255,255,255,255,169,85,0,255,255,244,27,255,255,255,255,64,127,254,0,0,107,255,255,255,0,47,144,0,0,0,21,175,254,0,0,0,0,0,0,0,0,0,0, + // 0x6700 最 + 0,103,32,33,8,36,2,253,0,191,255,255,255,255,254,0,0,191,255,255,255,255,254,0,0,190,85,85,85,85,254,0,0,190,0,0,0,0,190,0,0,190,0,0,0,0,190,0,0,191,255,255,255,255,254,0,0,191,255,255,255,255,254,0,0,190,0,0,0,0,190,0,0,190,0,0,0,0,190,0,0,191,255,255,255,255,254,0,0,191,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,254,255,255,255,255,255,255,255,254,171,254,171,255,170,170,170,170,3,240,0,252,0,0,0,0,3,240,0,252,0,0,0,0,3,255,255,252,255,255,255,244,3,255,255,252,255,255,255,244,3,249,85,252,107,234,175,240,3,240,0,252,31,192,15,208,3,249,85,252,15,208,47,192,3,255,255,252,7,240,127,128,3,255,255,252,2,252,255,0,3,240,0,252,0,255,252,0,3,240,0,252,0,127,244,0,3,250,191,252,0,127,240,0,255,255,255,252,7,255,254,0,255,255,255,252,127,253,255,228,254,148,0,255,255,224,47,255,0,0,0,252,254,0,7,254,0,0,0,252,96,0,0,44, + // 0x6709 有 + 9,103,33,35,59,36,1,252,0,0,0,100,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,2,252,0,0,0,0,0,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,0,0,31,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,2,255,255,255,255,255,128,0,0,7,255,255,255,255,255,128,0,0,15,255,255,255,255,255,128,0,0,63,253,0,0,0,47,128,0,0,255,253,0,0,0,47,128,0,3,255,253,0,0,0,47,128,0,31,252,255,255,255,255,255,128,0,127,240,255,255,255,255,255,128,0,63,128,255,255,255,255,255,128,0,14,0,253,0,0,0,47,128,0,0,0,253,0,0,0,47,128,0,0,0,253,0,0,0,47,128,0,0,0,255,255,255,255,255,128,0,0,0,255,255,255,255,255,128,0,0,0,255,255,255,255,255,128,0,0,0,253,0,0,0,47,128,0,0,0,253,0,0,0,47,128,0,0,0,253,0,0,0,47,128,0,0,0,253,0,0,0,63,128,0,0,0,253,0,0,255,255,64,0,0,0,253,0,0,191,255,0,0,0,0,253,0,0,127,248,0,0,0,0,0,0,0,0,0,0,0, + // 0x677f 板 + 127,103,34,35,59,36,1,252,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,2,255,255,255,255,192,0,15,192,2,255,255,255,255,192,0,15,192,2,255,255,255,255,192,0,15,192,2,248,0,0,0,0,0,15,192,2,244,0,0,0,0,0,15,192,2,244,0,0,0,0,63,255,255,226,244,0,0,0,0,63,255,255,226,244,0,0,0,0,63,255,255,226,244,0,0,0,0,0,31,192,2,248,0,0,0,0,0,47,192,2,255,255,255,255,64,0,63,192,3,255,255,255,255,64,0,127,224,3,255,255,255,255,0,0,191,244,3,255,208,0,127,0,0,255,252,3,255,224,0,190,0,1,255,255,3,247,240,0,253,0,2,255,239,131,242,244,1,252,0,3,223,207,211,241,252,2,248,0,11,207,199,243,240,253,3,244,0,15,143,194,199,240,191,11,240,0,63,79,192,71,224,63,95,208,0,127,15,192,11,224,47,255,192,0,253,15,192,15,208,15,255,64,0,60,15,192,31,192,7,254,0,0,36,15,192,47,192,3,253,0,0,0,15,192,63,128,15,255,64,0,0,15,192,127,0,127,255,208,0,0,15,192,191,1,255,159,248,0,0,15,193,253,31,253,7,255,128,0,15,195,252,63,244,1,255,224,0,15,193,244,31,128,0,63,128,0,15,192,32,9,0,0,7,0,0,0,0,0,0,0,0,0,0, + // 0x67f1 柱 + 241,103,34,35,59,36,1,252,0,11,224,0,0,176,0,0,0,0,11,224,0,3,253,0,0,0,0,11,224,0,2,255,128,0,0,0,11,224,0,0,127,240,0,0,0,11,224,0,0,15,252,0,0,0,11,224,0,0,2,253,0,0,0,11,224,0,0,0,244,0,0,0,11,224,3,255,255,255,255,192,63,255,255,247,255,255,255,255,192,63,255,255,247,255,255,255,255,192,63,255,255,244,0,11,240,0,0,0,15,224,0,0,11,240,0,0,0,31,224,0,0,11,240,0,0,0,47,224,0,0,11,240,0,0,0,63,244,0,0,11,240,0,0,0,127,252,0,0,11,240,0,0,0,255,255,0,0,11,240,0,0,0,255,255,192,0,11,240,0,0,2,251,239,224,255,255,255,255,128,3,235,227,244,255,255,255,255,128,11,219,226,244,255,255,255,255,128,15,203,224,224,0,11,240,0,0,47,139,224,64,0,11,240,0,0,127,11,224,0,0,11,240,0,0,190,11,224,0,0,11,240,0,0,60,11,224,0,0,11,240,0,0,36,11,224,0,0,11,240,0,0,0,11,224,0,0,11,240,0,0,0,11,224,0,0,11,240,0,0,0,11,224,0,0,11,240,0,0,0,11,224,63,255,255,255,255,224,0,11,224,63,255,255,255,255,224,0,11,224,63,255,255,255,255,224,0,11,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6821 校 + 33,104,34,35,59,36,1,252,0,15,192,0,0,31,192,0,0,0,15,192,0,0,31,192,0,0,0,15,192,0,0,31,192,0,0,0,15,192,0,0,31,192,0,0,0,15,192,0,0,31,192,0,0,0,15,192,31,255,255,255,255,192,0,15,192,31,255,255,255,255,192,0,15,192,31,255,255,255,255,192,63,255,255,218,170,170,170,170,128,63,255,255,192,4,0,1,0,0,63,255,255,192,47,64,15,192,0,0,47,192,0,63,128,15,240,0,0,63,192,0,191,0,7,248,0,0,63,192,1,253,0,1,253,0,0,127,240,3,248,0,0,191,0,0,191,244,15,240,0,0,63,192,0,255,252,63,235,0,15,159,208,1,255,255,47,127,64,31,203,192,3,255,223,73,31,192,63,129,0,7,239,207,192,15,192,63,64,0,11,207,199,208,11,240,191,0,0,15,143,195,128,3,244,253,0,0,63,79,193,0,2,255,252,0,0,127,15,192,0,0,255,244,0,0,189,15,192,0,0,127,224,0,0,60,15,192,0,0,63,224,0,0,36,15,192,0,0,255,248,0,0,0,15,192,0,7,255,255,0,0,0,15,192,0,31,245,255,192,0,0,15,192,1,255,208,63,248,0,0,15,192,27,255,0,15,255,128,0,15,192,191,248,0,3,255,208,0,15,192,63,208,0,0,127,128,0,15,192,45,0,0,0,11,0,0,0,0,0,0,0,0,0,0, + // 0x683c 格 + 60,104,34,35,59,36,1,252,0,15,192,0,1,224,0,0,0,0,15,192,0,3,248,0,0,0,0,15,192,0,7,244,0,0,0,0,15,192,0,15,240,0,0,0,0,15,192,0,31,255,255,244,0,0,15,192,0,63,255,255,252,0,0,15,192,0,191,255,255,244,0,0,15,192,1,255,0,7,240,0,63,255,255,231,255,64,15,224,0,63,255,255,239,255,192,47,192,0,63,255,255,255,223,224,127,64,0,0,31,192,191,71,248,254,0,0,0,47,208,29,2,255,252,0,0,0,63,244,0,0,191,240,0,0,0,127,252,0,0,127,240,0,0,0,191,255,0,2,255,253,0,0,0,255,239,192,15,255,255,128,0,1,255,207,208,191,240,127,248,0,3,239,195,203,255,128,31,255,208,7,223,194,255,253,0,2,255,224,15,207,192,255,255,255,255,255,128,31,143,192,126,255,255,255,253,0,63,15,192,17,255,255,255,252,0,191,15,192,1,248,0,1,252,0,189,15,192,1,248,0,1,252,0,60,15,192,1,248,0,1,252,0,36,15,192,1,248,0,1,252,0,0,15,192,1,248,0,1,252,0,0,15,192,1,248,0,1,252,0,0,15,192,1,248,0,1,252,0,0,15,192,1,255,255,255,252,0,0,15,192,1,255,255,255,252,0,0,15,192,1,255,255,255,252,0,0,15,192,1,248,0,1,252,0,0,0,0,0,0,0,0,0,0, + // 0x689d 條 + 157,104,34,35,59,36,1,252,0,2,64,0,2,144,0,0,0,0,7,240,0,3,240,0,0,0,0,11,224,0,11,240,0,0,0,0,15,208,0,15,208,0,0,0,0,31,197,64,63,255,255,255,192,0,63,143,192,191,255,255,255,192,0,127,15,193,255,170,171,254,128,0,191,15,195,255,0,11,240,0,0,253,15,207,255,128,15,208,0,3,253,15,255,223,224,63,192,0,7,253,15,207,71,248,255,0,0,15,253,15,193,1,255,252,0,0,47,253,15,192,0,127,244,0,0,127,253,15,192,1,255,253,0,0,255,253,15,192,31,255,255,208,0,254,189,15,203,255,244,127,255,144,124,189,15,223,255,64,7,255,208,48,189,15,203,228,15,192,111,128,0,189,15,193,0,15,192,1,0,0,189,15,192,0,15,192,0,0,0,189,15,207,255,255,255,255,192,0,189,15,207,255,255,255,255,192,0,189,15,207,255,255,255,255,192,0,189,15,192,0,191,248,0,0,0,189,15,192,1,255,253,0,0,0,189,15,192,7,255,255,0,0,0,189,15,192,31,239,239,192,0,0,189,15,128,127,143,203,240,0,0,189,0,2,255,15,195,253,0,0,189,0,31,252,15,192,255,128,0,189,0,191,224,15,192,63,240,0,189,0,63,64,15,192,15,192,0,189,0,8,0,15,192,2,0,0,189,0,0,0,15,192,0,0,0,0,0,0,0,0,0,0,0, + // 0x68c4 棄 + 196,104,32,34,16,36,2,253,0,0,0,11,224,0,0,0,0,0,0,11,224,0,0,0,0,0,0,11,224,0,0,0,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,106,170,191,234,170,255,170,170,0,0,127,64,0,255,128,0,0,0,254,0,0,31,248,0,31,255,255,255,255,255,255,128,31,255,255,255,255,255,255,244,31,255,255,170,170,85,87,244,0,0,0,6,144,0,0,144,0,47,128,11,208,2,248,0,0,47,128,11,208,2,248,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,106,191,234,175,250,171,254,169,0,47,128,11,208,2,248,0,0,47,128,11,208,2,248,0,0,47,255,255,255,255,248,0,0,47,255,255,255,255,248,0,0,5,85,95,245,85,84,0,0,0,0,15,224,0,0,0,170,170,170,175,250,170,170,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,11,255,255,224,0,0,0,0,127,223,231,253,0,0,0,7,255,15,225,255,208,0,0,191,248,15,224,47,254,64,111,255,128,15,224,2,255,249,255,248,0,15,224,0,47,255,127,128,0,15,224,0,2,253,20,0,0,11,224,0,0,4, + // 0x69fd 槽 + 253,105,34,35,59,36,1,252,0,47,64,0,11,208,252,0,0,0,47,64,0,11,208,252,0,0,0,47,64,0,11,208,252,0,0,0,47,64,255,255,255,255,255,224,0,47,64,255,255,255,255,255,224,0,47,64,170,175,250,254,170,144,0,47,64,0,11,208,252,0,0,0,47,128,5,91,229,253,85,0,63,255,255,47,255,255,255,255,64,63,255,255,47,255,255,255,255,64,63,255,255,47,3,208,248,31,64,0,63,64,47,3,208,248,31,64,0,63,64,47,255,255,255,255,64,0,127,128,47,255,255,255,255,64,0,191,192,47,7,208,248,31,64,0,255,240,47,3,208,248,31,64,1,255,244,47,3,208,248,31,64,2,255,252,47,255,255,255,255,64,3,255,190,47,255,255,255,255,64,7,239,111,69,85,85,85,85,0,15,239,79,0,0,0,0,0,0,31,111,73,7,255,255,255,252,0,63,47,64,7,255,255,255,252,0,126,47,64,7,250,170,170,252,0,188,47,64,7,240,0,0,252,0,56,47,64,7,245,85,85,252,0,32,47,64,7,255,255,255,252,0,0,47,64,7,255,255,255,252,0,0,47,64,7,240,0,0,252,0,0,47,64,7,240,0,0,252,0,0,47,64,7,250,170,170,252,0,0,47,64,7,255,255,255,252,0,0,47,64,7,255,255,255,252,0,0,47,64,7,240,0,0,252,0,0,0,0,0,0,0,0,0,0, + // 0x6a59 橙 + 89,106,34,34,50,36,1,253,0,31,192,0,0,0,80,0,0,0,31,192,26,170,130,240,32,0,0,31,192,47,255,241,244,244,0,0,31,192,47,255,224,255,252,0,0,31,192,0,15,192,255,224,0,0,31,192,4,15,192,191,66,0,0,31,192,62,47,128,63,11,192,0,31,192,127,255,0,47,175,192,63,255,255,159,254,0,31,254,0,63,255,255,131,253,0,15,244,0,63,255,255,131,255,255,255,252,0,0,47,192,15,239,255,254,255,0,0,63,192,47,202,170,168,191,208,0,63,192,255,0,0,0,47,240,0,191,226,253,0,0,0,11,192,0,255,244,179,255,255,255,249,64,0,255,252,3,255,255,255,248,0,2,255,255,3,245,85,87,248,0,3,255,223,131,240,0,2,248,0,7,239,207,195,240,0,2,248,0,15,223,199,67,240,0,2,248,0,15,159,194,3,250,170,171,248,0,63,31,192,3,255,255,255,248,0,127,31,192,3,255,255,255,248,0,189,31,192,0,8,0,14,64,0,60,31,192,0,189,0,31,192,0,36,31,192,0,127,0,47,128,0,0,31,192,0,63,0,63,0,0,0,31,192,0,47,64,126,0,0,0,31,192,0,30,0,124,0,0,0,31,192,255,255,255,255,255,224,0,31,192,255,255,255,255,255,224,0,31,192,255,255,255,255,255,208,0,31,192,0,0,0,0,0,0, + // 0x6a5f 機 + 95,106,34,34,50,36,1,253,0,63,0,1,0,189,1,0,0,0,63,0,7,208,189,3,224,0,0,63,0,15,192,189,11,192,0,0,63,0,15,128,189,15,128,0,0,63,0,47,8,189,31,8,0,0,63,0,253,47,189,254,31,64,0,63,3,252,62,127,252,63,0,0,63,0,253,188,126,254,188,0,63,255,254,63,244,125,63,248,0,63,255,254,15,240,126,15,240,0,63,255,254,11,208,126,7,210,0,0,127,0,15,173,62,15,143,64,0,127,0,47,31,62,63,11,192,0,191,128,125,31,63,255,255,208,0,255,210,255,255,127,255,255,224,1,255,242,255,255,191,87,65,224,2,255,249,149,7,127,11,208,64,3,255,188,0,0,47,7,244,0,3,255,62,0,0,47,64,252,0,11,255,47,255,255,255,255,255,208,15,191,14,255,255,255,255,255,208,31,63,1,175,234,175,234,170,128,63,63,0,15,192,15,192,228,0,125,63,0,31,192,11,193,252,0,188,63,0,31,244,7,211,244,0,56,63,0,47,254,3,251,240,0,32,63,0,63,191,195,255,192,0,0,63,0,127,31,194,255,0,0,0,63,0,254,3,2,253,1,208,0,63,1,252,0,31,254,2,240,0,63,7,248,1,191,255,131,224,0,63,15,240,31,254,31,255,208,0,63,11,192,15,240,11,255,192,0,63,2,0,6,0,1,190,0, + // 0x6aa2 檢 + 162,106,34,35,59,36,1,252,0,31,128,0,0,63,64,0,0,0,31,128,0,0,255,192,0,0,0,31,128,0,2,255,240,0,0,0,31,128,0,7,251,252,0,0,0,31,128,0,31,241,255,0,0,0,31,128,0,127,192,191,192,0,0,31,128,1,255,64,47,240,0,0,31,192,7,253,0,11,253,0,63,255,255,175,244,0,2,255,128,63,255,255,255,255,255,255,255,240,63,255,255,255,63,255,255,95,192,0,63,128,56,42,170,170,67,128,0,63,128,16,0,0,0,0,0,0,127,192,5,85,80,85,85,0,0,191,224,31,255,241,255,255,64,0,255,244,31,255,241,255,255,64,0,255,252,31,2,241,240,31,64,2,255,254,31,2,241,240,31,64,3,255,175,95,2,241,240,31,64,7,239,143,223,2,241,240,31,64,11,223,139,95,255,241,255,255,64,15,159,130,31,255,241,255,255,64,47,31,128,5,85,80,85,85,0,127,31,128,0,121,0,15,128,0,189,31,128,0,253,0,15,192,0,60,31,128,0,252,0,31,128,0,32,31,128,2,252,0,63,64,0,0,31,128,3,254,0,63,192,0,0,31,128,11,255,128,255,244,0,0,31,128,31,239,226,255,254,0,0,31,128,127,135,235,244,255,128,0,31,130,255,1,191,224,47,224,0,31,129,252,0,31,128,11,208,0,31,128,160,0,9,0,2,64,0,0,0,0,0,0,0,0,0, + // 0x6b62 止 + 98,107,32,32,0,36,2,255,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,0,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,255,255,255,244,0,127,0,1,255,255,255,244,0,127,0,1,255,255,255,244,0,127,0,1,253,85,85,80,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,0,127,0,1,252,0,0,0,85,191,85,86,253,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x6b63 正 + 99,107,32,31,248,36,2,254,5,85,85,85,85,85,85,84,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,106,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,255,255,255,208,0,127,0,3,255,255,255,208,0,127,0,3,255,255,255,208,0,127,0,3,252,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,0,127,0,3,248,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0, + // 0x6b65 步 + 101,107,32,34,16,36,2,253,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,21,0,11,240,0,0,0,0,63,128,11,240,0,0,0,0,63,128,11,255,255,255,64,0,63,128,11,255,255,255,64,0,63,128,11,255,255,255,64,0,63,128,11,240,0,0,0,0,63,128,11,240,0,0,0,0,63,128,11,240,0,0,0,0,63,128,11,240,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,11,224,0,0,0,0,7,144,11,224,0,0,0,0,15,244,11,224,0,57,0,0,63,224,11,224,0,191,64,0,255,128,11,224,0,255,0,3,255,0,11,224,2,253,0,31,252,0,11,224,3,252,0,191,224,0,11,224,15,244,0,127,128,15,255,224,47,240,0,13,0,11,255,208,191,192,0,0,0,7,254,66,255,64,0,0,0,0,0,15,253,0,0,0,0,0,0,191,244,0,0,0,0,0,7,255,208,0,0,0,0,1,191,255,0,0,0,0,1,111,255,244,0,0,0,2,191,255,255,64,0,0,0,3,255,255,228,0,0,0,0,1,255,249,0,0,0,0,0,0,233,0,0,0,0,0,0, + // 0x6b78 歸 + 120,107,34,34,50,36,1,253,0,15,128,0,0,0,0,0,0,0,31,192,0,63,255,255,248,0,0,47,64,0,63,255,255,248,0,15,255,255,240,21,85,86,248,0,15,255,255,240,0,0,1,248,0,15,213,87,241,85,85,86,249,64,15,192,3,247,255,255,255,255,224,15,192,3,247,255,255,255,255,224,15,255,255,240,0,0,1,248,0,15,255,255,240,0,0,1,248,0,15,213,85,80,63,255,255,248,0,15,192,0,0,63,255,255,248,0,15,255,255,240,21,85,85,80,0,15,255,255,241,170,170,170,170,64,15,213,87,242,255,255,255,255,192,15,192,3,242,255,255,255,255,192,15,192,3,242,240,11,208,15,192,15,255,255,242,240,11,208,15,192,15,255,255,242,240,11,208,15,192,5,91,229,80,0,11,208,0,0,0,3,224,0,191,255,255,254,0,15,67,224,0,191,255,255,254,0,15,131,250,160,191,175,250,254,0,15,131,255,240,189,11,208,126,0,15,131,255,240,189,11,208,126,0,15,131,224,0,189,11,208,126,0,15,131,224,0,189,11,208,126,0,15,131,224,4,189,11,208,126,0,15,135,255,252,189,11,213,190,0,31,255,255,252,189,11,215,253,0,191,255,255,228,189,11,211,248,0,127,254,144,0,0,11,208,0,0,41,0,0,0,0,11,208,0,0,0,0,0,0,0,11,208,0,0, + // 0x6bbc 殼 + 188,107,33,35,59,36,2,252,0,11,208,0,0,0,0,0,0,0,11,224,0,7,255,255,128,0,0,11,224,0,11,255,255,128,0,255,255,255,255,11,255,255,128,0,255,255,255,255,11,208,31,128,0,85,95,245,85,11,208,31,128,0,0,11,224,0,11,208,31,128,0,21,95,229,84,11,208,31,128,0,63,255,255,252,11,208,31,135,64,63,255,255,252,15,192,31,135,192,0,0,0,0,31,192,31,135,192,0,0,0,0,63,128,31,239,192,255,255,255,254,191,0,15,255,128,255,255,255,255,254,0,7,254,0,253,85,85,126,188,0,0,0,0,248,0,0,62,16,0,0,0,0,251,255,255,190,63,255,255,248,0,3,255,255,128,63,255,255,252,0,1,85,85,64,63,255,255,248,0,0,0,0,0,6,192,3,240,0,2,170,170,128,15,208,11,240,0,3,255,255,192,7,240,15,208,0,3,255,255,192,3,244,47,192,0,3,240,15,192,1,252,127,64,0,7,240,15,192,0,254,255,0,0,7,224,15,192,0,127,252,0,0,7,224,15,193,0,47,244,0,0,11,208,15,255,64,127,248,0,0,15,192,111,255,66,255,255,0,0,47,192,191,249,31,254,255,208,0,127,64,63,130,255,240,63,254,0,255,0,16,15,255,128,11,255,64,60,0,0,7,248,0,1,254,0,0,0,0,3,128,0,0,28,0,0,0,0,0,0,0,0,0,0, + // 0x6bd4 比 + 212,107,34,34,50,36,1,253,0,42,64,0,6,160,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,40,0,0,63,128,0,7,240,1,254,0,0,63,128,0,7,240,11,255,64,0,63,255,255,7,240,191,253,0,0,63,255,255,7,251,255,224,0,0,63,255,255,7,255,254,0,0,0,63,149,85,7,255,208,0,0,0,63,128,0,7,253,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,7,128,0,63,128,0,7,240,0,7,240,0,63,128,6,199,240,0,7,224,0,63,150,255,199,240,0,11,224,0,63,255,255,215,240,0,15,208,43,255,255,255,135,244,0,31,208,127,255,255,144,3,255,255,255,192,63,255,144,0,2,255,255,255,128,46,64,0,0,0,191,255,254,0,0,0,0,0,0,0,0,0,0, + // 0x6c92 沒 + 146,108,33,34,50,36,1,253,0,144,0,0,190,0,0,0,0,3,253,0,0,254,0,0,0,0,7,255,128,0,253,0,0,0,0,0,191,244,0,255,255,255,253,0,0,15,244,1,255,255,255,253,0,0,2,224,2,255,255,255,253,0,0,0,64,3,248,0,0,252,0,0,0,0,7,240,0,0,252,0,0,0,0,11,240,0,1,252,0,0,0,0,15,224,0,1,252,0,8,0,0,47,192,0,2,252,0,47,128,0,63,128,0,3,248,0,127,244,0,255,0,0,7,244,0,47,255,3,254,0,31,255,240,0,2,255,139,252,0,15,255,224,0,0,47,2,240,0,11,255,128,0,0,4,0,64,0,0,0,0,0,0,0,0,255,255,255,255,248,0,0,0,0,255,255,255,255,252,0,0,0,0,255,255,255,255,252,0,0,2,208,2,240,0,7,244,0,0,3,244,3,248,0,15,240,0,0,11,240,1,253,0,63,208,0,0,15,224,0,255,64,191,128,0,0,47,192,0,63,210,255,0,0,0,63,128,0,31,255,252,0,0,0,191,0,0,7,255,240,0,0,0,254,0,0,3,255,224,0,0,3,252,0,0,111,255,253,0,0,7,248,0,7,255,255,255,208,0,15,240,6,255,255,129,255,255,128,15,224,15,255,248,0,47,255,192,2,192,7,254,64,0,1,255,64,0,0,2,144,0,0,0,10,0, + // 0x6d88 消 + 136,109,32,35,24,36,2,252,1,0,0,0,2,252,0,0,15,208,0,96,2,252,0,164,47,248,3,244,2,252,0,254,11,255,66,252,2,252,2,252,0,255,192,254,2,252,3,248,0,47,64,191,2,252,11,240,0,6,0,63,130,252,15,208,0,0,0,47,194,252,47,192,0,0,0,13,2,252,6,0,0,0,0,0,2,252,0,0,120,0,1,255,255,255,255,244,255,128,1,255,255,255,255,244,255,240,1,255,255,255,255,244,31,253,1,252,0,0,3,244,3,253,1,252,0,0,3,244,0,184,1,252,0,0,3,244,0,32,1,252,0,0,3,244,0,0,1,255,255,255,255,244,0,0,1,255,255,255,255,244,0,0,1,255,255,255,255,244,0,14,1,252,0,0,3,244,0,31,193,252,0,0,3,244,0,63,129,252,0,0,3,244,0,127,1,255,255,255,255,244,0,255,1,255,255,255,255,244,1,253,1,255,255,255,255,244,3,252,1,252,0,0,3,244,7,244,1,252,0,0,3,244,15,240,1,252,0,0,3,244,31,224,1,252,0,0,3,244,63,192,1,252,0,0,3,244,127,128,1,252,0,11,255,240,31,0,1,252,0,7,255,240,1,0,1,252,0,3,255,128,0,0,0,0,0,0,0,0, + // 0x6de1 淡 + 225,109,34,34,50,36,1,253,0,0,0,0,0,253,0,0,0,2,224,0,0,0,253,0,0,0,7,254,0,9,64,253,0,160,0,2,255,208,31,128,253,0,254,0,0,127,244,63,64,252,2,252,0,0,11,240,63,0,252,3,244,0,0,1,192,254,1,252,11,240,0,0,0,1,252,2,248,31,192,0,0,0,2,248,3,253,47,64,0,0,0,0,16,7,255,129,0,0,8,0,0,0,15,255,248,0,0,47,128,0,0,63,219,255,64,0,127,244,0,2,255,64,255,240,0,31,255,0,111,254,0,31,254,0,1,255,67,255,244,0,2,255,64,0,46,2,255,128,253,0,126,0,0,4,0,228,0,252,0,8,0,0,0,0,0,0,252,0,0,0,0,0,0,47,64,252,0,190,0,0,3,0,63,65,252,0,255,0,0,11,192,127,1,252,2,253,0,0,15,224,190,2,254,3,248,0,0,47,192,252,3,255,11,240,0,0,63,131,252,3,255,95,208,0,0,191,7,240,11,255,223,128,0,0,254,0,96,15,239,224,0,0,2,253,0,0,63,199,248,0,0,7,252,0,1,255,131,254,0,0,15,240,0,27,254,0,255,208,0,31,224,2,255,248,0,63,254,64,31,192,47,255,208,0,11,255,208,3,128,15,253,0,0,1,255,128,0,0,7,144,0,0,0,7,0,0,0,0,0,0,0,0,0,0, + // 0x6e05 清 + 5,110,34,34,50,36,1,253,0,64,0,0,0,253,0,0,0,3,248,0,0,0,253,0,0,0,11,255,66,255,255,255,255,255,64,1,255,226,255,255,255,255,255,64,0,47,241,85,85,254,85,85,0,0,7,208,0,0,253,0,0,0,0,0,128,21,85,254,85,84,0,0,0,0,191,255,255,255,253,0,0,0,0,191,255,255,255,253,0,0,0,0,0,0,253,0,0,0,13,0,0,0,0,253,0,0,0,63,208,11,255,255,255,255,255,224,127,253,11,255,255,255,255,255,224,11,255,133,85,85,85,85,85,64,1,255,0,0,0,0,0,0,0,0,46,0,26,170,170,170,164,0,0,4,0,47,255,255,255,252,0,0,0,0,47,255,255,255,252,0,0,0,0,47,128,0,1,252,0,0,1,0,47,128,0,1,252,0,0,3,208,47,255,255,255,252,0,0,7,240,47,255,255,255,252,0,0,15,240,47,128,0,1,252,0,0,31,208,47,128,0,1,252,0,0,63,192,47,128,0,1,252,0,0,127,64,47,255,255,255,252,0,0,255,0,47,255,255,255,252,0,1,254,0,47,149,85,86,252,0,3,252,0,47,128,0,1,252,0,7,244,0,47,128,0,1,252,0,15,240,0,47,128,0,1,252,0,31,208,0,47,128,2,255,248,0,3,192,0,47,128,1,255,244,0,0,0,0,47,128,0,255,144,0, + // 0x6e2c 測 + 44,110,32,35,24,36,1,252,0,0,0,0,0,0,0,47,3,224,0,0,0,0,0,63,15,253,15,255,255,192,0,63,7,255,143,255,255,192,0,63,0,127,207,255,255,194,240,63,0,15,79,192,15,195,240,63,0,1,15,192,15,195,240,63,0,0,15,192,15,195,240,63,0,0,15,255,255,195,240,63,0,0,15,255,255,195,240,63,8,0,15,255,255,195,240,63,47,128,15,192,15,195,240,63,127,248,15,192,15,195,240,63,31,255,15,192,15,195,240,63,1,253,15,192,15,195,240,63,0,56,15,234,175,195,240,63,0,0,15,255,255,195,240,63,0,0,15,255,255,195,240,63,0,0,15,192,15,195,240,63,0,0,15,192,15,195,240,63,0,24,15,192,15,195,240,63,0,47,15,192,15,195,240,63,0,63,79,255,255,195,240,63,0,127,15,255,255,195,240,63,0,254,15,255,255,194,240,63,0,253,0,0,4,0,0,63,2,252,3,244,63,0,0,63,3,248,7,240,63,128,0,63,7,240,15,208,31,192,0,63,15,224,47,192,15,240,0,63,31,208,127,64,3,248,0,63,63,193,254,0,1,244,255,255,11,66,252,0,0,128,127,254,0,0,112,0,0,0,63,228,0,0,0,0,0,0,0,0, + // 0x6e90 源 + 144,110,34,34,50,36,1,253,0,64,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,11,255,3,255,255,255,255,255,192,2,255,211,255,255,255,255,255,192,0,63,227,255,255,255,255,255,192,0,11,195,244,0,15,240,0,0,0,1,3,244,0,15,224,0,0,0,0,3,244,0,15,192,0,0,0,0,3,244,85,111,213,85,0,0,0,3,244,255,255,255,255,0,13,0,3,244,255,255,255,255,0,63,208,3,244,252,0,0,63,0,127,248,3,244,252,0,0,63,0,11,255,3,244,253,85,85,127,0,1,254,3,244,255,255,255,255,0,0,44,3,240,255,255,255,255,0,0,0,3,240,252,0,0,63,0,0,0,3,240,252,0,0,63,0,0,0,3,240,252,0,0,63,0,0,0,7,240,255,255,255,255,0,0,13,7,240,255,255,255,255,0,0,31,139,224,85,95,229,85,0,0,63,139,224,0,15,208,0,0,0,127,15,208,36,15,208,116,0,0,191,15,192,191,15,210,252,0,0,253,31,192,253,15,208,254,0,2,252,47,129,252,15,208,127,64,3,248,63,67,244,15,208,63,192,7,240,127,11,240,15,208,31,208,15,240,254,31,208,15,208,15,224,31,209,253,47,128,15,208,7,208,63,195,252,2,11,255,192,0,0,11,65,244,0,7,255,192,0,0,0,0,16,0,3,249,0,0,0, + // 0x6e96 準 + 150,110,33,34,50,36,1,253,0,96,0,7,144,11,144,0,0,0,254,0,15,240,15,224,0,0,2,255,224,31,208,31,192,0,0,0,47,240,63,192,63,128,0,0,0,3,208,255,255,255,255,254,0,0,0,66,255,255,255,255,254,0,9,0,7,255,170,255,170,169,0,63,208,31,254,0,127,0,0,0,127,253,127,254,0,127,0,0,0,7,253,255,255,255,255,255,244,0,0,120,62,191,255,255,255,244,0,0,0,4,191,85,191,85,80,0,0,0,128,190,0,127,0,0,0,0,2,224,190,85,191,85,80,0,0,11,240,191,255,255,255,248,0,0,47,208,191,255,255,255,248,0,0,127,128,190,0,127,0,0,0,1,254,0,190,0,127,0,0,0,11,252,0,191,170,255,170,170,64,31,240,0,191,255,255,255,255,128,11,192,0,191,255,255,255,255,128,3,64,0,2,244,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0, + // 0x6eab 溫 + 171,110,34,34,50,36,1,253,0,128,0,0,0,0,0,0,0,3,248,0,42,170,170,170,160,0,7,255,128,127,255,255,255,240,0,1,255,240,127,255,255,255,240,0,0,31,224,126,0,80,7,240,0,0,3,192,126,0,244,7,240,0,0,0,0,126,0,240,7,240,0,0,0,0,126,2,240,7,240,0,0,0,0,126,3,252,7,240,0,0,0,0,126,15,255,71,240,0,14,0,0,126,63,11,215,240,0,63,224,0,126,189,3,247,240,0,127,253,0,126,32,0,135,240,0,11,255,0,127,170,170,171,240,0,0,254,0,127,255,255,255,240,0,0,28,0,127,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,252,0,0,6,2,255,255,255,255,252,0,0,15,194,255,255,255,255,252,0,0,31,210,244,62,7,192,252,0,0,47,194,244,62,7,192,252,0,0,63,66,244,62,7,192,252,0,0,191,2,244,62,7,192,252,0,0,254,2,244,62,7,192,252,0,2,252,2,244,62,7,192,252,0,3,248,2,244,62,7,192,252,0,11,240,2,244,62,7,192,252,0,31,224,191,255,255,255,255,255,224,47,192,191,255,255,255,255,255,224,7,128,191,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x6fc0 激 + 192,111,34,35,59,36,1,252,1,0,0,15,144,1,228,0,0,3,224,0,31,192,1,252,0,0,15,253,0,47,192,2,248,0,0,3,255,133,127,149,66,244,0,0,0,127,223,255,255,195,244,0,0,0,15,15,255,255,195,240,0,0,0,1,15,64,15,195,240,0,0,0,0,15,64,15,199,255,255,224,0,0,15,149,95,203,255,255,224,0,0,15,255,255,207,255,255,224,13,0,15,255,255,223,192,63,0,63,208,15,64,15,239,192,126,0,127,248,15,64,15,255,208,126,0,15,254,15,149,95,255,208,189,0,1,253,15,255,255,255,224,189,0,0,56,15,255,255,255,240,252,0,0,0,0,31,192,186,240,252,0,0,0,0,31,192,33,244,252,0,0,0,106,191,234,160,249,248,0,0,0,191,255,255,240,254,244,0,0,24,191,255,255,240,191,240,0,0,47,0,252,0,0,127,240,0,0,63,64,252,0,0,63,208,0,0,127,0,254,170,128,47,192,0,0,254,0,255,255,128,47,192,0,0,252,1,255,255,128,63,192,0,2,252,2,244,31,128,191,240,0,3,248,3,240,31,129,255,244,0,7,240,7,240,31,131,253,252,0,15,240,15,208,47,79,240,255,0,31,208,63,192,63,127,208,63,192,63,192,255,15,255,255,128,31,224,11,130,253,15,254,189,0,7,192,0,0,112,6,148,36,0,1,0,0,0,0,0,0,0,0,0,0, + // 0x7121 無 + 33,113,33,34,50,36,2,253,0,7,144,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,255,255,255,255,255,255,248,0,2,255,255,255,255,255,255,248,0,11,255,255,255,255,255,255,248,0,31,255,2,240,31,64,252,0,0,191,255,2,240,31,64,252,0,0,255,127,2,240,31,64,252,0,0,61,63,2,240,31,64,252,0,0,4,63,2,240,31,64,252,0,0,0,63,2,240,31,64,252,0,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,0,63,2,240,31,64,252,0,0,0,63,2,240,31,64,252,0,0,0,63,2,240,31,64,252,0,0,0,63,2,240,31,64,252,0,0,0,63,2,240,31,64,252,0,0,127,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,6,0,0,2,252,6,208,27,192,63,128,0,3,248,11,224,15,192,47,208,0,7,240,7,240,15,224,15,240,0,15,240,7,240,11,240,7,252,0,47,208,3,240,3,240,2,253,0,127,128,3,240,3,244,0,255,0,255,0,3,240,2,248,0,191,64,29,0,1,64,1,64,0,52,0, + // 0x71b1 熱 + 177,113,33,34,50,36,2,253,0,6,144,0,0,252,0,0,0,0,7,224,0,0,252,0,0,0,5,91,229,80,0,252,0,0,0,31,255,255,248,0,252,0,0,0,31,255,255,248,0,252,0,0,0,0,7,224,0,127,255,255,192,0,0,7,224,0,127,255,255,192,0,191,255,255,255,127,255,255,192,0,191,255,255,255,0,252,15,192,0,85,253,127,85,0,252,15,192,0,0,244,62,4,0,252,15,192,0,3,240,62,15,57,248,15,192,0,31,224,47,255,191,248,15,192,0,255,128,31,253,191,244,15,192,0,125,7,224,0,31,253,15,192,0,0,7,224,0,3,255,79,192,0,21,91,245,84,3,255,239,192,0,63,255,255,252,11,239,223,195,128,63,255,255,252,15,211,207,195,192,0,7,224,0,31,192,15,195,192,0,7,224,0,63,64,15,195,192,0,7,250,190,191,0,15,199,192,175,255,255,255,253,0,15,255,128,255,255,255,251,248,0,11,255,64,255,233,80,0,240,0,1,169,0,0,0,0,0,64,0,0,0,0,0,144,0,0,1,0,11,0,0,2,252,11,208,31,192,63,192,0,3,248,11,224,15,208,31,224,0,11,240,11,240,15,224,11,244,0,31,224,7,240,7,240,3,252,0,63,192,7,240,3,244,1,254,0,255,0,7,240,3,244,0,191,0,29,0,1,0,0,0,0,32,0, + // 0x71c8 燈 + 200,113,34,34,50,36,1,253,0,10,64,0,0,11,128,64,0,0,31,128,26,170,79,193,224,0,0,31,128,47,255,231,215,244,0,0,31,128,47,255,211,255,192,0,0,31,128,0,15,194,255,0,0,0,31,129,8,15,192,252,15,64,0,31,139,255,111,64,190,63,192,9,31,143,239,255,0,63,254,0,15,31,159,75,253,0,31,244,0,15,31,191,3,248,0,15,240,0,31,31,253,11,255,255,255,252,0,31,31,252,47,255,255,254,255,64,31,31,144,191,90,170,168,127,240,47,31,135,253,0,0,0,31,224,62,31,135,244,0,0,0,2,192,124,47,130,135,255,255,255,244,0,120,47,64,7,255,255,255,244,0,0,47,64,7,250,170,171,244,0,0,47,64,7,224,0,3,244,0,0,63,64,7,224,0,3,244,0,0,63,0,7,224,0,3,244,0,0,63,128,7,250,170,171,244,0,0,63,208,7,255,255,255,244,0,0,127,240,7,255,255,255,244,0,0,255,252,0,20,0,25,0,0,0,252,254,0,252,0,47,192,0,2,252,127,64,126,0,63,64,0,3,244,47,192,63,0,127,0,0,11,240,15,64,47,64,189,0,0,15,224,5,0,30,0,188,0,0,63,192,1,255,255,255,255,255,192,127,64,2,255,255,255,255,255,192,46,0,2,255,255,255,255,255,192,8,0,0,0,0,0,0,0,0, + // 0x7247 片 + 71,114,32,35,24,36,1,252,0,0,0,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,47,213,85,95,245,85,84,0,47,255,255,255,255,255,253,0,47,255,255,255,255,255,253,0,47,255,255,255,255,255,253,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,213,85,85,85,80,0,0,63,255,255,255,255,244,0,0,63,255,255,255,255,244,0,0,127,255,255,255,255,244,0,0,127,0,0,0,7,244,0,0,191,0,0,0,7,244,0,0,255,0,0,0,7,244,0,0,254,0,0,0,7,244,0,2,252,0,0,0,7,244,0,3,252,0,0,0,7,244,0,11,248,0,0,0,7,244,0,15,240,0,0,0,7,244,0,63,224,0,0,0,7,244,0,127,192,0,0,0,7,244,0,31,0,0,0,0,7,244,0,9,0,0,0,0,7,244,0,0,0,0,0,0,0,0,0, + // 0x7269 物 + 105,114,34,34,50,36,1,253,0,3,240,0,14,64,0,0,0,0,3,240,0,31,128,0,0,0,11,131,240,0,47,64,0,0,0,15,195,240,0,63,0,0,0,0,15,195,240,0,63,0,0,0,0,15,195,240,0,190,0,0,0,0,15,131,240,0,255,255,255,255,208,31,255,255,209,255,255,255,255,192,31,255,255,211,255,255,255,255,192,47,255,255,215,240,126,15,207,192,63,7,240,15,224,188,31,143,192,62,3,240,31,192,252,47,79,192,125,3,240,63,129,248,63,15,192,252,3,240,255,2,244,63,15,192,44,3,240,125,3,240,126,31,192,0,3,240,4,11,208,189,31,192,0,3,240,96,15,192,252,31,128,0,3,255,240,47,129,248,31,128,0,47,255,240,127,3,244,47,128,27,255,255,144,253,3,240,47,128,127,255,244,2,252,11,224,47,64,63,251,240,11,244,15,192,63,64,62,3,240,47,224,47,192,63,64,0,3,240,63,192,63,64,63,0,0,3,240,15,0,191,0,63,0,0,3,240,0,1,253,0,127,0,0,3,240,0,3,248,0,127,0,0,3,240,0,15,240,0,190,0,0,3,240,0,47,208,0,253,0,0,3,240,0,191,128,2,252,0,0,3,240,3,255,3,255,252,0,0,3,240,1,252,2,255,244,0,0,3,240,0,32,1,255,208,0,0,3,240,0,0,0,0,0,0, + // 0x7387 率 + 135,115,32,35,24,36,2,252,0,0,0,11,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,0,0,0,63,64,0,0,0,2,0,0,190,0,0,3,208,31,208,1,252,7,64,15,244,31,248,31,240,15,208,63,208,2,255,127,208,63,65,255,0,0,127,95,240,190,3,248,0,0,28,3,254,248,0,80,0,0,0,0,191,241,64,0,0,0,0,64,47,207,193,128,0,0,27,192,127,7,247,248,0,1,255,209,252,3,255,255,64,111,255,255,255,255,252,191,240,255,228,191,255,255,254,15,253,126,0,127,255,165,127,2,254,32,0,0,15,224,30,0,116,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0,0, + // 0x7528 用 + 40,117,31,32,0,36,1,252,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,252,0,191,0,1,252,0,1,252,0,191,0,1,252,0,1,252,0,191,0,1,252,0,1,252,0,191,0,1,252,0,1,252,0,191,0,1,252,0,1,252,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,252,0,191,0,1,252,0,1,252,0,191,0,1,252,0,1,252,0,190,0,1,252,0,1,252,0,190,0,1,252,0,1,252,0,190,0,1,252,0,1,252,0,190,0,1,252,0,1,252,0,191,255,255,255,255,255,252,0,255,255,255,255,255,255,252,0,255,255,255,255,255,255,252,0,252,0,1,252,0,1,252,1,252,0,1,252,0,1,252,2,252,0,1,252,0,1,252,3,248,0,1,252,0,1,252,3,244,0,1,252,0,1,252,11,240,0,1,252,0,1,252,15,224,0,1,252,0,1,252,47,192,0,1,252,0,2,252,127,192,0,1,252,31,255,252,127,0,0,1,252,15,255,244,13,0,0,1,248,11,255,144,0,0,0,0,0,0,0,0, + // 0x754c 界 + 76,117,32,34,16,36,2,252,1,170,170,170,170,170,170,64,1,255,255,255,255,255,255,128,1,255,255,255,255,255,255,128,1,252,0,11,224,0,63,128,1,252,0,11,224,0,63,128,1,252,0,11,224,0,63,128,1,254,170,175,250,170,191,128,1,255,255,255,255,255,255,128,1,255,255,255,255,255,255,128,1,252,0,11,224,0,63,128,1,252,0,11,224,0,63,128,1,252,0,11,224,0,63,128,1,254,170,175,250,170,191,128,1,255,255,255,255,255,255,128,1,255,255,255,255,255,255,128,0,0,31,240,11,248,0,0,0,0,191,192,2,254,0,0,0,2,255,0,0,255,192,0,0,31,252,0,0,63,248,0,1,255,240,0,0,11,255,128,31,255,191,64,0,255,255,249,255,253,63,64,0,254,47,255,127,208,63,64,0,254,7,253,45,0,63,64,0,254,0,40,0,0,127,0,0,254,0,0,0,0,191,0,0,254,0,0,0,0,255,0,0,254,0,0,0,3,253,0,0,254,0,0,0,15,252,0,0,254,0,0,0,191,240,0,0,254,0,0,7,255,192,0,0,254,0,0,2,254,0,0,0,254,0,0,0,244,0,0,0,254,0,0,0,0,0,0,0,0,0,0, + // 0x767d 白 + 125,118,26,34,238,36,5,253,0,0,11,228,0,0,0,0,0,15,244,0,0,0,0,0,15,240,0,0,0,0,0,31,224,0,0,0,0,0,63,192,0,0,0,85,85,127,213,85,85,80,255,255,255,255,255,255,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,254,85,85,85,85,91,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,255,255,255,255,255,255,240,254,85,85,85,85,91,240,253,0,0,0,0,7,240,253,0,0,0,0,7,240, + // 0x7684 的 + 132,118,31,34,16,36,3,253,0,46,64,0,14,64,0,0,0,63,128,0,15,208,0,0,0,63,64,0,31,192,0,0,0,127,0,0,47,128,0,0,0,190,0,0,63,64,0,0,0,253,0,0,127,0,0,0,255,255,255,192,191,255,255,244,255,255,255,192,255,255,255,244,255,255,255,194,255,255,255,244,252,0,15,195,248,0,2,244,252,0,15,203,240,0,3,244,252,0,15,207,224,0,3,244,252,0,15,255,192,0,3,244,252,0,15,239,128,0,3,240,252,0,15,199,5,0,3,240,252,0,15,192,63,0,3,240,255,255,255,192,63,192,3,240,255,255,255,192,15,224,3,240,255,255,255,192,11,244,3,240,252,0,15,192,3,252,3,240,252,0,15,192,0,254,3,240,252,0,15,192,0,191,7,240,252,0,15,192,0,63,71,240,252,0,15,192,0,24,7,224,252,0,15,192,0,0,11,224,252,0,15,192,0,0,11,224,252,0,15,192,0,0,15,208,255,255,255,192,0,0,15,208,255,255,255,192,0,0,31,192,255,255,255,192,0,0,63,192,252,0,0,0,7,255,255,128,252,0,0,0,3,255,255,0,252,0,0,0,2,255,248,0,0,0,0,0,0,0,0,0, + // 0x76e3 監 + 227,118,33,33,41,36,2,254,0,0,0,0,0,164,0,0,0,42,170,170,170,0,252,0,0,0,63,255,255,255,1,252,0,0,0,63,255,255,255,2,244,0,0,0,63,1,244,0,3,240,0,0,0,63,1,244,0,7,255,255,254,0,63,255,255,253,11,255,255,255,0,63,255,255,253,15,255,255,255,0,63,0,0,189,47,64,0,0,0,63,0,0,125,127,0,0,0,0,63,0,0,125,254,0,0,0,0,63,0,0,126,252,0,0,0,0,63,255,255,253,56,0,0,0,0,63,255,255,253,0,0,0,0,0,63,1,244,0,0,0,0,0,0,63,1,244,0,3,255,255,252,0,63,171,254,170,67,255,255,252,0,63,255,255,255,67,255,255,252,0,63,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,170,170,170,170,64,0,1,255,255,255,255,255,255,64,0,1,255,255,255,255,255,255,64,0,1,252,3,240,15,192,63,64,0,1,252,3,240,15,192,63,64,0,1,252,3,240,15,192,63,64,0,1,252,3,240,15,192,63,64,0,1,252,3,240,15,192,63,64,0,1,252,3,240,15,192,63,64,0,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64, + // 0x76f4 直 + 244,118,32,34,16,36,2,253,0,0,0,3,248,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,0,0,0,15,240,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,208,0,0,0,0,0,63,255,255,255,255,0,15,208,63,255,255,255,255,0,15,208,63,85,85,85,191,0,15,208,63,0,0,0,127,0,15,208,63,0,0,0,127,0,15,208,63,255,255,255,255,0,15,208,63,255,255,255,255,0,15,208,63,85,85,85,191,0,15,208,63,0,0,0,127,0,15,208,63,0,0,0,127,0,15,208,63,255,255,255,255,0,15,208,63,255,255,255,255,0,15,208,63,85,85,85,191,0,15,208,63,0,0,0,127,0,15,208,63,0,0,0,127,0,15,208,63,255,255,255,255,0,15,208,63,255,255,255,255,0,15,208,21,85,85,85,85,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,255,255,255,255,255,255,255,15,255,255,255,255,255,255,255,15,255,255,255,255,255,255,255,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0, + // 0x7720 眠 + 32,119,33,32,32,36,2,253,127,255,252,15,255,255,255,253,0,127,255,252,15,255,255,255,253,0,127,255,252,15,255,255,255,253,0,126,0,252,15,192,0,0,253,0,126,0,252,15,192,0,0,253,0,126,0,252,15,192,0,0,253,0,126,0,252,15,192,0,0,253,0,127,255,252,15,255,255,255,253,0,127,255,252,15,255,255,255,253,0,127,255,252,15,255,255,255,253,0,126,0,252,15,192,15,192,0,0,126,0,252,15,192,15,192,0,0,126,0,252,15,192,15,208,0,0,126,0,252,15,192,15,208,0,0,126,0,252,15,192,11,208,0,0,127,255,252,15,255,255,255,255,64,127,255,252,15,255,255,255,255,64,127,255,252,15,255,255,255,255,64,126,0,252,15,208,7,240,0,0,126,0,252,15,192,3,240,0,0,126,0,252,15,192,3,240,0,0,126,0,252,15,192,3,244,0,0,127,0,252,15,192,2,248,0,0,127,255,252,15,192,1,252,0,0,127,255,252,15,192,0,252,7,64,127,255,252,15,192,0,253,7,192,126,0,0,15,192,105,190,11,192,126,0,0,15,255,254,63,11,192,126,0,2,255,255,254,47,223,192,0,0,3,255,255,228,15,255,128,0,0,3,255,164,0,7,255,0,0,0,1,144,0,0,1,252,0, + // 0x780d 砍 + 13,120,34,35,59,36,1,252,0,0,0,0,31,128,0,0,0,0,0,0,0,47,192,0,0,0,63,255,255,252,63,128,0,0,0,63,255,255,252,63,128,0,0,0,63,255,255,252,63,64,0,0,0,0,63,0,0,127,0,0,0,0,0,127,0,0,191,0,0,0,0,0,126,0,0,255,255,255,255,208,0,189,0,0,255,255,255,255,208,0,253,0,1,255,255,255,255,192,0,252,0,2,252,47,128,47,192,0,252,0,3,248,47,128,63,128,1,248,0,7,240,47,128,63,64,3,255,255,223,240,47,128,63,0,3,255,255,255,208,47,128,190,0,7,255,255,255,192,47,128,253,0,15,244,11,215,64,47,128,252,0,15,244,11,208,0,63,128,4,0,47,244,11,208,0,63,192,0,0,63,244,11,208,0,63,192,0,0,255,244,11,208,0,127,208,0,0,191,244,11,208,0,255,224,0,0,62,244,11,208,0,251,240,0,0,22,244,11,208,2,246,248,0,0,2,244,11,208,3,240,252,0,0,2,244,11,208,11,224,190,0,0,2,255,255,208,31,192,63,64,0,2,255,255,208,63,128,47,192,0,2,255,255,209,255,0,15,240,0,2,244,0,7,253,0,7,253,0,2,244,0,47,244,0,2,255,128,2,244,0,255,208,0,0,191,224,0,0,0,63,64,0,0,31,192,0,0,0,24,0,0,0,3,64,0,0,0,0,0,0,0,0,0, + // 0x78ba 確 + 186,120,34,35,59,36,1,252,0,0,0,0,0,14,64,0,0,0,0,0,0,0,31,192,0,0,63,255,255,224,0,47,128,0,0,63,255,255,224,0,63,64,0,0,63,255,255,255,255,255,255,255,208,0,127,0,31,255,255,255,255,208,0,126,0,31,255,255,255,255,208,0,190,0,31,66,252,0,11,208,0,253,0,31,71,244,30,75,208,0,252,0,31,79,240,47,75,208,0,252,0,5,47,208,63,1,64,1,252,0,0,63,192,190,0,0,2,248,0,0,255,255,255,255,64,3,255,255,195,255,255,255,255,64,3,255,255,207,255,255,255,255,64,7,255,255,255,253,1,248,0,0,15,240,15,255,253,1,248,0,0,15,240,15,206,253,1,248,0,0,47,240,15,192,255,255,255,255,0,63,240,15,192,255,255,255,255,0,191,240,15,192,254,170,254,169,0,255,240,15,192,253,1,248,0,0,190,240,15,192,253,1,248,0,0,58,240,15,192,254,170,254,169,0,18,240,15,192,255,255,255,255,0,2,240,15,192,255,255,255,255,0,2,240,15,192,253,1,248,0,0,2,255,255,192,253,1,248,0,0,2,255,255,192,253,1,248,0,0,2,255,255,192,253,1,248,0,0,2,240,0,0,255,255,255,255,224,2,240,0,0,255,255,255,255,224,1,160,0,0,255,255,255,255,208,0,0,0,0,253,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x79fb 移 + 251,121,34,34,50,36,1,253,0,0,1,0,0,46,64,0,0,0,0,111,128,0,63,64,0,0,0,111,255,208,0,255,0,0,0,47,255,255,144,3,255,255,248,0,63,255,244,0,15,255,255,254,0,46,159,224,0,63,255,255,252,0,0,11,224,1,255,64,3,248,0,0,11,224,31,255,128,11,240,0,0,11,224,63,255,240,47,208,0,0,11,224,15,67,253,191,128,0,63,255,255,240,0,255,254,0,0,63,255,255,240,0,63,252,0,0,63,255,255,240,0,191,224,0,0,0,31,224,0,11,255,128,0,0,0,47,224,1,191,255,248,0,0,0,63,240,15,255,219,240,0,0,0,127,252,11,254,31,224,0,0,0,255,255,3,144,63,255,255,64,1,255,255,192,0,255,255,255,208,3,251,235,240,7,255,255,255,192,7,235,227,240,31,240,0,63,128,15,203,225,208,255,208,0,191,0,47,139,224,75,255,244,1,254,0,127,11,224,15,251,254,3,252,0,190,11,224,3,192,255,207,244,0,60,11,224,0,0,47,255,208,0,36,11,224,0,0,7,255,128,0,0,11,224,0,0,11,254,0,0,0,11,224,0,0,191,244,0,0,0,11,224,0,27,255,192,0,0,0,11,224,6,255,254,0,0,0,0,11,224,63,255,224,0,0,0,0,11,224,31,253,0,0,0,0,0,11,224,14,64,0,0,0,0, + // 0x7a4d 積 + 77,122,34,35,59,36,1,252,0,0,0,0,0,47,128,0,0,0,0,111,64,0,47,192,0,0,1,111,255,207,255,255,255,255,128,63,255,255,143,255,255,255,255,128,63,255,224,0,0,47,192,0,0,26,95,208,0,0,47,192,0,0,0,15,208,3,255,255,255,254,0,0,15,208,3,255,255,255,254,0,0,15,208,0,0,47,192,0,0,0,15,208,0,0,47,192,0,0,63,255,255,255,255,255,255,255,208,63,255,255,255,255,255,255,255,208,63,255,255,192,0,0,0,0,0,0,31,208,2,255,255,255,253,0,0,47,208,2,255,255,255,253,0,0,63,240,2,244,0,0,189,0,0,127,252,2,244,0,0,189,0,0,255,254,2,244,0,0,189,0,1,255,255,66,255,255,255,253,0,2,255,239,210,255,255,255,253,0,7,239,219,226,244,0,0,189,0,15,207,211,194,244,0,0,189,0,31,143,209,66,255,255,255,253,0,63,15,208,2,255,255,255,253,0,254,15,208,2,244,0,0,189,0,188,15,208,2,244,0,0,189,0,56,15,208,2,255,255,255,253,0,16,15,208,2,255,255,255,253,0,0,15,208,0,11,64,10,0,0,0,15,208,0,127,224,63,208,0,0,15,208,7,255,128,15,252,0,0,15,208,191,253,0,2,255,128,0,15,208,255,208,0,0,127,208,0,15,208,57,0,0,0,10,0,0,0,0,0,0,0,0,0,0, + // 0x7aef 端 + 239,122,34,34,50,36,1,253,0,26,0,0,0,47,64,0,0,0,63,0,0,0,47,128,0,0,0,63,0,15,192,47,128,63,0,0,63,0,15,192,47,128,63,0,0,63,0,15,192,47,128,63,0,0,63,0,15,192,47,128,63,0,0,63,0,15,192,47,128,63,0,63,255,255,15,192,47,128,63,0,63,255,255,15,255,255,255,255,0,63,255,255,15,255,255,255,255,0,0,0,0,15,255,255,255,255,0,6,0,120,0,0,0,0,0,0,31,0,190,0,0,0,0,0,0,15,64,189,127,255,255,255,255,208,15,128,252,127,255,255,255,255,208,15,128,252,127,255,255,255,255,208,11,192,252,0,0,63,64,0,0,11,192,248,0,0,127,0,0,0,11,193,244,0,0,191,0,0,0,7,209,244,31,255,255,255,255,128,7,210,240,31,255,255,255,255,128,7,211,240,31,255,255,255,255,128,7,211,224,31,131,224,188,31,128,0,3,230,159,131,224,188,31,128,0,7,255,223,131,224,188,31,128,27,255,255,239,131,224,188,31,128,191,255,254,95,131,224,188,31,128,127,254,64,31,131,224,188,31,128,62,64,0,31,131,224,188,31,128,0,0,0,31,131,224,188,31,128,0,0,0,31,131,224,188,31,128,0,0,0,31,131,224,189,191,128,0,0,0,31,131,224,188,255,64,0,0,0,26,64,0,0,254,0, + // 0x7b49 等 + 73,123,34,34,50,36,1,253,0,46,64,0,1,228,0,0,0,0,63,128,0,3,248,0,0,0,0,191,0,0,7,244,0,0,0,0,255,255,255,143,255,255,255,192,2,255,255,255,175,255,255,255,192,7,255,255,255,255,255,255,255,192,15,241,252,0,255,3,248,0,0,63,192,253,3,253,1,252,0,0,127,64,190,2,248,0,254,0,0,30,0,100,3,248,0,116,0,0,0,0,0,3,248,0,0,0,0,0,191,255,255,255,255,255,240,0,0,191,255,255,255,255,255,240,0,0,127,255,255,255,255,255,224,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,208,63,255,255,255,255,255,255,255,208,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,0,0,184,0,0,11,240,0,0,0,2,254,0,0,11,240,0,0,0,0,255,192,0,11,240,0,0,0,0,63,240,0,11,240,0,0,0,0,11,252,0,11,240,0,0,0,0,2,252,0,11,240,0,0,0,0,0,224,63,255,224,0,0,0,0,0,0,47,255,208,0,0,0,0,0,0,15,254,0,0,0, + // 0x7ba1 管 + 161,123,34,35,59,36,1,252,0,46,0,0,2,228,0,0,0,0,63,64,0,3,248,0,0,0,0,191,0,0,7,240,0,0,0,0,255,255,255,79,255,255,255,208,3,255,255,255,191,255,255,255,208,11,255,254,171,255,239,254,170,144,47,225,252,3,254,2,252,0,0,127,192,253,3,248,0,254,0,0,31,0,125,2,244,0,126,0,0,0,0,0,2,244,0,0,0,0,10,170,170,171,254,170,170,170,0,15,255,255,255,255,255,255,255,64,15,255,255,255,255,255,255,255,64,15,192,0,0,0,0,0,63,64,15,192,0,0,0,0,0,63,64,15,194,255,255,255,255,252,63,64,15,194,255,255,255,255,252,63,64,5,66,249,85,85,86,252,21,0,0,2,244,0,0,1,252,0,0,0,2,244,0,0,1,252,0,0,0,2,255,255,255,255,252,0,0,0,2,255,255,255,255,252,0,0,0,2,249,85,85,85,84,0,0,0,2,244,0,0,0,0,0,0,0,2,244,0,0,0,0,0,0,0,2,255,255,255,255,255,208,0,0,2,255,255,255,255,255,208,0,0,2,250,170,170,170,175,208,0,0,2,244,0,0,0,15,208,0,0,2,244,0,0,0,15,208,0,0,2,250,170,170,170,175,208,0,0,2,255,255,255,255,255,208,0,0,2,255,255,255,255,255,208,0,0,2,244,0,0,0,15,208,0,0,0,0,0,0,0,0,0,0, + // 0x7bb1 箱 + 177,123,33,35,59,36,1,252,0,47,64,0,1,248,0,0,0,0,63,128,0,3,248,0,0,0,0,127,0,0,7,244,0,0,0,0,255,255,255,75,255,255,255,192,1,255,255,255,159,255,255,255,192,3,255,255,255,191,255,255,255,192,11,241,252,0,191,71,240,0,0,15,224,253,1,255,2,252,0,0,63,192,190,3,252,0,253,0,0,127,64,127,2,248,0,191,0,0,31,0,124,0,112,0,56,0,0,0,2,248,0,0,0,0,0,0,0,2,248,0,63,255,255,255,0,0,2,248,0,63,255,255,255,0,0,2,248,0,63,255,255,255,0,47,255,255,255,63,0,0,127,0,47,255,255,255,63,0,0,127,0,47,255,255,255,63,0,0,127,0,0,11,248,0,63,255,255,255,0,0,15,252,0,63,255,255,255,0,0,47,255,0,63,170,170,255,0,0,63,255,208,63,0,0,127,0,0,191,255,244,63,0,0,127,0,1,255,250,253,63,0,0,127,0,3,246,248,255,63,255,255,255,0,15,242,248,60,63,255,255,255,0,47,194,248,20,63,170,170,255,0,191,130,248,0,63,0,0,127,0,63,2,248,0,63,0,0,127,0,12,2,248,0,63,234,170,255,0,0,2,248,0,63,255,255,255,0,0,2,248,0,63,255,255,255,0,0,2,248,0,63,0,0,127,0,0,2,248,0,42,0,0,21,0,0,0,0,0,0,0,0,0,0, + // 0x7cfb 系 + 251,124,33,34,50,36,2,253,0,0,0,0,0,0,4,0,0,0,0,0,0,0,90,255,0,0,0,5,90,171,255,255,255,192,0,47,255,255,255,255,255,255,208,0,31,255,255,255,255,250,80,0,0,15,255,235,254,64,0,0,0,0,0,0,11,252,0,16,0,0,0,0,0,31,240,0,126,0,0,0,0,0,127,192,1,255,64,0,0,0,160,255,0,7,254,0,0,0,2,255,253,0,31,248,0,0,0,2,255,244,0,127,224,0,0,0,0,127,244,1,255,64,0,0,0,0,11,253,7,253,0,0,0,0,0,1,255,159,244,2,64,0,0,0,0,63,255,192,31,224,0,0,0,0,15,255,0,15,248,0,0,0,0,31,248,0,3,254,0,0,0,0,191,224,0,0,255,192,0,255,255,255,255,255,255,255,224,0,255,255,255,255,255,255,255,248,0,191,255,255,255,255,255,255,254,0,85,84,0,15,245,0,0,255,64,0,0,0,15,224,0,0,125,0,0,2,64,15,224,7,0,16,0,0,11,244,15,224,47,208,0,0,0,47,240,15,224,47,248,0,0,0,191,192,15,224,7,255,0,0,3,255,0,15,224,0,255,208,0,31,252,0,15,224,0,47,244,0,191,240,0,15,224,0,11,254,0,255,192,0,15,224,0,2,254,0,46,0,0,15,224,0,0,180,0,0,0,0,15,224,0,0,0,0, + // 0x7d05 紅 + 5,125,34,35,59,36,1,252,0,6,64,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,127,1,1,255,255,255,255,192,0,253,7,225,255,255,255,255,192,46,248,15,241,255,255,255,255,192,127,240,31,208,0,11,240,0,0,63,224,63,128,0,11,240,0,0,15,244,255,0,0,11,240,0,0,2,254,252,0,0,11,240,0,0,0,255,244,0,0,11,240,0,0,0,63,225,240,0,11,240,0,0,0,47,194,248,0,11,240,0,0,0,191,0,252,0,11,240,0,0,1,253,0,191,0,11,240,0,0,191,255,255,255,64,11,240,0,0,191,255,255,255,192,11,240,0,0,127,255,255,239,208,11,240,0,0,0,3,244,7,208,11,240,0,0,0,3,244,2,0,11,240,0,0,1,3,244,20,0,11,240,0,0,11,227,245,252,0,11,240,0,0,15,211,244,253,0,11,240,0,0,15,195,244,190,0,11,240,0,0,15,195,244,63,0,11,240,0,0,31,131,244,63,64,11,240,0,0,63,67,244,31,128,11,240,0,0,63,3,244,15,192,11,240,0,0,191,3,244,14,0,11,240,0,0,109,3,244,11,255,255,255,255,224,4,3,244,11,255,255,255,255,224,0,3,244,11,255,255,255,255,224,0,3,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x7d22 索 + 34,125,32,34,16,36,2,253,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,0,1,254,0,0,0,253,127,0,7,252,0,64,0,253,127,0,31,240,1,248,0,253,127,30,127,192,11,253,0,253,0,127,254,0,63,240,0,0,0,47,252,1,255,128,0,0,0,3,255,71,253,9,0,0,0,0,127,255,240,63,192,0,0,0,15,255,128,47,244,0,0,0,31,252,0,7,254,0,106,170,255,250,170,170,255,192,127,255,255,255,255,255,255,244,127,255,255,255,255,255,255,253,21,80,64,15,224,0,0,248,0,2,228,15,224,10,0,16,0,15,252,15,224,63,224,0,0,127,224,15,224,31,253,0,7,255,128,15,224,2,255,192,127,253,0,15,224,0,63,244,255,224,0,15,224,0,7,254,63,64,0,15,224,0,0,248,4,0,0,15,224,0,0,0, + // 0x7d2b 紫 + 43,125,33,35,59,36,1,252,0,0,126,0,11,224,0,0,0,0,0,126,0,11,224,0,0,0,1,80,126,0,11,224,1,180,0,3,240,127,170,139,224,111,254,0,3,240,127,255,203,251,255,249,0,3,240,127,255,203,255,255,64,0,3,240,126,0,11,255,144,0,0,3,240,126,0,11,240,0,0,0,3,240,126,0,11,224,0,10,64,3,240,126,1,75,224,0,15,192,3,240,191,255,203,240,0,31,192,27,255,255,255,199,255,255,255,192,127,255,255,254,67,255,255,255,64,127,254,148,47,128,191,255,253,0,37,0,0,191,128,0,0,0,0,0,0,2,253,0,126,0,0,0,0,11,79,244,1,255,64,0,0,0,47,255,192,11,252,0,0,0,0,47,255,64,127,224,16,0,0,0,2,255,246,255,66,248,0,0,0,0,47,255,248,2,255,0,0,0,0,7,255,208,0,127,208,0,0,0,2,255,170,171,255,244,0,63,255,255,255,255,255,255,253,0,63,255,255,255,255,255,255,255,64,63,255,255,255,248,0,0,63,192,0,0,80,3,248,0,64,14,0,0,1,253,3,248,7,244,0,0,0,11,252,3,248,11,255,0,0,0,127,240,3,248,1,255,224,0,7,255,128,3,248,0,47,252,0,63,253,0,3,248,0,3,255,64,15,224,0,3,248,0,0,191,0,2,0,0,3,248,0,0,20,0,0,0,0,0,0,0,0,0,0, + // 0x7d30 細 + 48,125,33,34,50,36,1,253,0,13,0,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,126,0,2,255,255,255,255,64,0,252,8,2,255,255,255,255,64,1,248,31,130,255,255,255,255,64,43,240,63,130,244,15,192,47,64,63,208,127,2,244,15,192,47,64,127,192,253,2,244,15,192,47,64,31,226,248,2,244,15,192,47,64,7,251,240,2,244,15,192,47,64,2,255,192,2,244,15,192,47,64,0,255,79,66,244,15,192,47,64,0,126,15,194,244,15,192,47,64,0,252,11,210,244,15,192,47,64,2,249,175,242,244,15,192,47,64,191,255,255,246,255,255,255,255,64,191,255,255,254,255,255,255,255,64,127,239,208,255,255,255,255,255,64,0,15,192,123,244,15,192,47,64,0,15,192,2,244,15,192,47,64,9,15,193,130,244,15,192,47,64,15,207,207,194,244,15,192,47,64,15,143,199,210,244,15,192,47,64,31,79,195,242,244,15,192,47,64,47,79,194,242,244,15,192,47,64,63,15,193,250,244,15,192,47,64,63,15,192,250,244,15,192,47,64,189,15,192,146,255,255,255,255,64,188,15,192,2,255,255,255,255,64,4,15,192,2,255,255,255,255,64,0,15,192,2,244,0,0,47,64,0,15,192,2,244,0,0,47,64,0,11,192,0,80,0,0,0,0, + // 0x7d42 終 + 66,125,34,35,59,36,1,252,0,8,0,0,1,164,0,0,0,0,47,128,0,3,248,0,0,0,0,63,64,0,7,244,0,0,0,0,127,0,0,15,240,0,0,0,0,253,0,0,31,255,255,248,0,1,248,46,0,63,255,255,253,0,23,240,63,64,191,255,255,248,0,63,224,190,2,255,0,3,240,0,127,192,252,7,255,128,15,224,0,31,210,244,31,255,208,47,192,0,7,251,224,191,199,240,127,128,0,2,255,192,63,2,253,254,0,0,0,255,89,8,0,255,252,0,0,0,126,63,0,0,63,240,0,0,0,252,31,64,0,191,244,0,0,2,244,15,192,3,255,254,0,0,107,255,255,192,31,253,255,192,0,191,255,255,225,255,224,63,248,0,191,255,255,255,255,64,11,255,144,16,15,193,255,248,16,1,255,224,0,15,192,71,128,189,0,31,128,9,79,203,64,1,255,208,2,0,15,207,207,128,0,127,248,0,0,31,143,203,192,0,7,255,0,0,31,79,199,208,0,0,190,0,0,47,15,195,224,0,0,8,0,0,63,15,194,240,57,0,0,0,0,63,15,193,240,255,224,0,0,0,125,15,192,65,255,255,64,0,0,252,15,192,0,7,255,248,0,0,44,15,192,0,0,47,255,128,0,0,15,192,0,0,1,255,248,0,0,15,192,0,0,0,31,244,0,0,15,192,0,0,0,1,224,0,0,0,0,0,0,0,0,0,0, + // 0x7d71 統 + 113,125,34,35,59,36,1,252,0,8,0,0,0,47,128,0,0,0,47,128,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,127,0,0,0,63,128,0,0,0,253,0,0,0,63,128,0,0,1,252,46,47,255,255,255,255,192,7,240,63,111,255,255,255,255,192,63,224,190,47,255,255,255,255,192,127,192,252,0,7,244,0,0,0,47,210,244,0,11,240,7,64,0,11,251,240,0,15,224,31,192,0,2,255,192,0,31,192,11,240,0,0,255,72,0,63,128,3,248,0,0,126,63,0,63,85,171,253,0,0,252,31,95,255,255,255,255,0,2,244,15,223,255,255,255,255,128,107,255,255,223,255,234,84,31,192,191,255,255,224,0,0,0,15,192,191,255,255,240,10,128,105,5,0,16,15,193,240,15,192,190,0,0,0,15,192,64,31,192,190,0,0,9,79,199,0,31,192,190,0,0,15,207,207,128,31,192,190,0,0,31,143,207,192,47,128,190,0,0,31,79,199,208,63,64,190,0,0,47,15,195,224,63,64,190,0,0,63,15,195,240,127,0,190,1,0,63,15,194,240,190,0,190,3,208,125,15,192,65,253,0,190,3,240,252,15,192,3,252,0,190,3,240,44,15,192,31,240,0,126,3,224,0,15,192,191,208,0,127,255,208,0,15,192,255,64,0,63,255,192,0,15,192,56,0,0,31,255,64,0,0,0,0,0,0,0,0,0, + // 0x7d72 絲 + 114,125,34,34,50,36,1,253,0,10,64,0,0,7,64,0,0,0,15,224,0,0,15,224,0,0,0,31,192,0,0,31,192,0,0,0,63,64,0,0,63,128,0,0,0,191,2,0,0,127,1,64,0,0,252,11,224,0,253,3,244,0,46,248,15,224,42,248,15,240,0,63,240,63,192,127,240,31,208,0,127,208,127,0,127,208,63,128,0,31,240,253,0,15,240,191,0,0,3,254,252,0,3,253,253,0,0,0,255,240,0,0,255,248,0,0,0,127,209,192,0,63,241,240,0,0,63,135,240,0,63,195,248,0,0,190,3,244,0,191,1,252,0,1,252,1,252,1,253,0,191,0,191,255,255,253,127,255,255,255,64,191,255,255,255,127,255,255,255,192,127,255,255,255,127,255,255,255,208,0,3,240,47,80,3,240,11,208,0,3,240,8,0,3,240,3,0,6,147,240,96,0,3,240,16,0,11,227,242,244,11,211,242,244,0,15,211,241,252,15,211,242,252,0,15,195,240,252,31,195,240,253,0,15,195,240,126,47,131,240,191,0,31,131,240,63,63,67,240,63,64,63,67,240,62,127,3,240,47,192,63,3,240,0,254,3,240,15,192,190,3,240,2,252,3,240,15,224,28,3,240,0,184,3,240,7,128,0,3,240,0,0,3,240,0,0,0,3,240,0,0,3,240,0,0,0,3,240,0,0,3,240,0,0, + // 0x7da0 綠 + 160,125,34,34,50,36,1,253,0,25,0,0,14,128,0,0,0,0,47,128,0,31,192,0,0,0,0,63,0,0,47,128,0,0,0,0,126,0,0,63,255,255,244,0,0,252,4,0,63,255,255,244,0,1,248,47,64,127,170,171,240,0,27,240,63,0,190,0,3,240,0,63,224,190,0,253,0,7,240,0,127,193,252,0,255,255,255,224,0,31,211,244,1,255,255,255,208,0,11,251,224,2,254,170,175,192,0,2,255,192,1,96,0,15,192,0,0,255,92,0,0,0,31,192,0,0,190,62,31,255,255,255,255,192,1,252,47,95,255,255,255,255,192,3,240,31,223,255,255,255,255,192,255,255,255,192,0,15,192,0,0,191,255,255,224,0,15,208,4,0,191,255,235,241,208,15,224,31,64,0,15,130,251,244,15,240,127,192,0,15,129,66,253,15,241,254,0,10,79,134,0,191,15,255,248,0,15,143,159,64,63,79,255,224,0,31,79,143,192,12,15,255,64,0,47,15,139,192,1,79,255,64,0,47,15,135,208,11,207,223,192,0,63,15,131,224,127,223,207,240,0,62,15,131,226,255,79,195,252,0,189,15,129,31,252,15,193,255,64,252,15,128,127,224,15,192,191,224,40,15,128,63,64,15,192,47,192,0,15,128,28,11,255,192,7,64,0,15,128,0,7,255,64,0,0,0,15,128,0,3,249,0,0,0, + // 0x7db2 網 + 178,125,33,35,59,36,1,252,0,8,0,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,63,64,15,255,255,255,255,128,0,127,0,15,255,255,255,255,128,0,252,0,15,255,255,255,255,128,1,248,46,15,192,0,0,31,128,27,240,63,15,198,64,46,31,128,63,224,190,15,203,192,63,31,128,127,193,252,15,195,208,61,31,128,47,211,240,15,195,224,188,31,128,11,251,224,15,194,240,244,31,128,3,255,192,15,202,234,186,31,128,0,255,109,15,207,255,255,95,128,0,190,63,15,207,255,255,95,128,1,252,47,79,192,31,64,31,128,3,240,31,207,192,31,64,31,128,255,255,255,239,192,31,64,31,128,191,255,255,255,202,175,234,95,128,191,255,235,255,207,255,255,95,128,0,15,130,255,207,255,255,95,128,0,15,129,159,195,240,0,31,128,10,79,135,15,195,240,0,31,128,15,143,143,79,195,240,0,31,128,31,79,143,207,195,240,0,31,128,47,79,139,223,195,240,0,31,128,47,15,135,239,195,240,0,31,128,63,15,131,255,194,255,255,31,128,62,15,131,255,193,255,255,31,128,125,15,129,95,192,106,170,31,128,252,15,128,15,192,0,0,31,128,40,15,128,15,192,0,0,31,128,0,15,128,15,192,0,47,255,64,0,15,128,15,192,0,15,255,0,0,15,128,15,192,0,15,248,0,0,0,0,0,0,0,0,0,0, + // 0x7dd2 緒 + 210,125,34,34,50,36,1,253,0,29,0,0,1,248,0,0,0,0,47,128,0,1,248,0,14,64,0,63,0,0,1,248,0,47,128,0,126,0,0,1,248,0,63,0,0,252,24,11,255,255,253,190,0,1,248,63,79,255,255,254,253,0,47,240,127,15,255,255,255,252,0,127,208,253,0,1,248,7,240,0,127,193,252,0,1,248,15,224,0,31,211,240,0,1,248,47,192,0,11,251,224,0,1,248,127,64,0,3,255,192,63,255,255,255,255,208,0,255,93,63,255,255,255,255,208,0,190,63,63,255,255,255,255,208,1,252,47,64,0,127,192,0,0,3,240,31,192,1,255,0,0,0,255,255,255,208,11,252,0,0,0,191,255,255,224,63,255,255,253,0,191,255,235,242,255,255,255,253,0,0,15,130,255,255,255,255,253,0,0,15,128,255,254,0,0,253,0,10,79,135,63,190,0,0,253,0,15,143,143,68,126,0,0,253,0,31,79,143,192,127,170,170,253,0,47,15,139,192,127,255,255,253,0,47,15,135,208,127,255,255,253,0,63,15,131,224,126,0,0,253,0,62,15,131,208,126,0,0,253,0,189,15,128,0,126,0,0,253,0,188,15,128,0,127,255,255,253,0,4,15,128,0,127,255,255,253,0,0,15,128,0,127,255,255,253,0,0,15,128,0,126,0,0,253,0,0,15,128,0,41,0,0,168,0, + // 0x7dda 線 + 218,125,34,34,50,36,1,253,0,25,0,0,0,14,64,0,0,0,47,128,0,0,47,208,0,0,0,63,0,0,0,63,192,0,0,0,126,0,0,0,63,64,0,0,0,252,4,3,255,255,255,255,0,1,248,47,67,255,255,255,255,0,27,240,63,3,250,170,170,191,0,63,224,190,3,240,0,0,63,0,127,193,252,3,240,0,0,63,0,31,211,244,3,255,255,255,255,0,11,251,224,3,255,255,255,255,0,2,255,192,3,245,85,85,191,0,0,255,92,3,240,0,0,63,0,0,190,62,3,240,0,0,63,0,1,252,47,67,250,170,170,191,0,3,240,31,195,255,255,255,255,0,255,255,255,195,255,255,255,255,0,191,255,255,224,0,15,192,0,0,191,255,235,240,0,15,208,4,0,0,15,130,240,0,15,224,31,64,0,15,129,95,255,159,240,127,192,9,15,134,31,255,223,245,255,0,15,143,143,95,255,207,255,252,0,31,79,143,192,31,143,255,224,0,47,15,139,192,63,79,255,128,0,47,15,135,208,127,15,239,192,0,63,15,131,224,253,15,207,240,0,62,15,131,227,252,15,199,248,0,189,15,128,15,240,15,194,255,64,252,15,128,127,208,15,192,191,224,40,15,128,191,64,15,192,47,208,0,15,128,61,11,255,192,7,128,0,15,128,0,7,255,128,0,0,0,15,128,0,3,249,0,0,0, + // 0x7de8 編 + 232,125,33,34,50,36,1,253,0,25,0,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,63,0,63,255,255,255,255,192,0,126,0,63,255,255,255,255,192,0,252,20,63,255,255,255,255,192,1,248,63,0,0,0,0,0,0,27,240,127,0,0,0,0,0,0,63,224,253,6,170,170,170,170,0,127,193,248,11,255,255,255,255,0,31,211,240,11,255,255,255,255,0,7,251,224,11,208,0,0,63,0,2,255,192,11,208,0,0,63,0,0,255,92,11,208,0,0,63,0,0,190,125,11,250,170,170,191,0,0,252,63,11,255,255,255,255,0,3,240,31,75,255,255,255,255,0,255,255,255,203,208,0,0,0,0,191,255,255,203,208,0,0,0,0,191,191,239,219,255,255,255,255,192,0,31,67,239,255,255,255,255,192,0,31,66,79,254,190,191,175,192,14,95,90,15,252,61,30,15,192,31,95,111,15,252,61,30,15,192,31,95,95,79,252,61,30,15,192,47,31,79,159,253,126,111,95,192,47,31,75,239,191,255,255,255,192,63,31,75,255,127,255,255,255,192,62,31,71,255,124,61,30,15,192,188,31,64,190,124,61,30,15,192,252,31,64,252,124,61,30,15,192,20,31,66,248,124,61,30,15,192,0,31,67,240,124,61,30,175,128,0,31,64,160,124,61,30,127,128,0,31,64,0,104,20,4,62,0, + // 0x7e2e 縮 + 46,126,33,35,59,36,1,252,0,30,0,0,0,63,128,0,0,0,47,64,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,189,0,47,255,255,255,255,128,0,252,45,63,255,255,255,255,192,1,244,63,63,255,255,255,255,192,47,240,126,63,0,0,0,15,192,127,208,252,63,0,0,0,15,192,127,193,248,63,0,0,0,15,192,31,211,240,63,126,0,0,5,64,11,251,208,0,127,170,170,170,128,2,255,192,0,190,255,255,255,192,0,255,109,0,253,255,255,255,192,0,190,62,1,248,0,127,0,0,0,252,47,3,240,0,190,0,0,3,240,15,135,240,0,252,0,0,255,255,255,203,240,106,254,170,64,191,255,255,223,240,191,255,255,64,191,191,251,255,240,191,255,255,64,0,31,67,255,240,188,0,31,64,0,31,64,255,240,188,0,31,64,9,31,73,59,240,188,0,31,64,15,159,111,19,240,188,0,31,64,31,95,95,3,240,191,255,255,64,47,31,79,131,240,191,255,255,64,47,31,79,131,240,190,170,191,64,63,31,75,195,240,188,0,31,64,62,31,71,195,240,188,0,31,64,125,31,65,3,240,188,0,31,64,252,31,64,3,240,188,0,31,64,40,31,64,3,240,191,255,255,64,0,31,64,3,240,191,255,255,64,0,31,64,3,240,190,170,191,64,0,31,64,3,240,188,0,31,64,0,0,0,0,0,0,0,0,0, + // 0x7e3d 總 + 61,126,34,34,50,36,1,253,0,25,0,0,0,15,144,0,0,0,47,128,0,0,47,192,0,0,0,63,0,0,0,63,128,0,0,0,126,0,6,170,191,170,170,0,0,252,20,15,255,255,255,255,0,1,248,63,15,255,255,255,255,0,27,240,127,15,192,14,0,47,0,63,224,253,15,192,31,0,47,0,127,193,248,15,192,63,255,111,0,31,211,240,15,207,191,255,47,0,7,251,224,15,207,248,47,47,0,2,255,192,15,199,255,125,47,0,0,255,92,15,223,159,248,47,0,0,190,125,15,206,7,252,47,0,0,252,63,15,192,31,255,111,0,3,240,31,79,192,191,15,47,0,255,255,255,207,195,248,0,47,0,191,255,255,207,234,234,170,191,0,191,191,239,223,255,255,255,255,0,0,31,67,239,255,255,255,255,0,0,31,66,64,0,248,0,0,0,9,31,69,0,2,255,64,0,0,15,159,111,0,0,127,208,0,0,31,95,95,0,0,11,244,0,0,47,31,79,65,11,210,240,180,0,47,31,79,135,219,208,64,252,0,63,31,75,203,203,208,0,190,0,62,31,71,207,203,208,0,63,64,125,31,65,15,139,208,4,31,192,252,31,64,47,75,208,15,143,208,40,31,64,127,11,208,15,135,224,0,31,64,189,7,255,255,67,224,0,31,64,24,3,255,255,1,0,0,31,64,0,0,170,168,0,0, + // 0x7e7c 繼 + 124,126,34,34,50,36,1,253,0,52,0,188,1,0,1,0,0,0,190,0,252,7,192,3,192,0,0,252,0,252,15,64,11,128,0,0,248,0,252,31,40,15,13,0,2,244,80,252,252,61,253,47,0,3,240,252,252,252,184,188,124,0,63,209,248,252,63,240,47,244,0,127,195,240,252,15,208,11,228,0,63,135,224,252,11,124,11,173,0,15,223,192,252,30,45,31,15,0,7,255,64,253,255,255,255,255,128,2,255,0,253,255,255,255,255,192,0,254,240,253,229,7,249,65,192,0,249,244,252,0,1,0,0,0,3,240,248,255,255,255,255,255,192,7,208,188,255,255,255,255,255,192,255,255,254,254,171,170,171,170,128,255,255,255,252,7,192,3,208,0,191,191,191,252,11,128,7,192,0,0,63,31,252,15,8,15,73,0,0,63,4,252,189,62,191,31,0,29,63,40,252,252,124,252,61,0,47,63,124,252,125,244,62,184,0,47,63,61,252,31,224,15,240,0,63,63,62,252,11,212,7,236,0,62,63,47,252,15,124,11,174,0,62,63,31,252,46,30,31,15,64,125,63,15,253,255,255,255,255,192,188,63,4,253,233,67,249,65,208,252,63,0,252,0,1,0,0,64,56,63,0,255,255,255,255,255,208,0,63,0,255,255,255,255,255,208,0,63,0,254,170,170,170,170,128,0,62,0,188,0,0,0,0,0, + // 0x7e8c 續 + 140,126,34,35,59,36,1,252,0,25,0,0,0,63,128,0,0,0,63,128,0,0,63,128,0,0,0,63,0,63,255,255,255,255,192,0,189,0,63,255,255,255,255,192,0,252,20,0,0,63,128,0,0,1,244,63,0,0,63,128,0,0,27,240,190,7,255,255,255,255,0,63,208,252,7,255,255,255,255,0,127,194,248,0,0,0,0,0,0,31,211,240,15,255,255,255,255,64,11,255,208,15,255,255,255,255,64,3,255,128,15,66,240,244,31,64,0,255,124,15,175,192,255,255,64,0,189,125,15,125,0,21,111,64,0,248,63,15,64,0,0,31,64,2,240,47,79,255,255,255,255,64,107,255,255,143,255,255,255,255,64,191,255,255,192,0,0,0,0,0,127,255,235,211,255,255,255,253,0,16,31,67,131,255,255,255,253,0,0,31,64,3,240,0,0,189,0,5,31,90,3,255,255,255,253,0,15,159,111,3,250,170,170,253,0,31,95,95,67,240,0,0,189,0,47,31,79,131,255,255,255,253,0,47,31,75,195,250,170,170,253,0,63,31,75,195,240,0,0,189,0,62,31,70,3,250,170,170,253,0,125,31,64,3,255,255,255,253,0,252,31,64,0,31,64,47,64,0,40,31,64,2,255,192,127,244,0,0,31,64,191,254,0,11,255,64,0,31,65,255,208,0,0,191,208,0,31,64,56,0,0,0,14,0,0,0,0,0,0,0,0,0,0, + // 0x7ea2 红 + 162,126,34,33,41,36,1,254,0,2,64,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,15,240,5,85,85,85,85,0,0,31,208,15,255,255,255,255,128,0,63,192,15,255,255,255,255,128,0,127,64,15,255,255,255,255,128,0,255,0,0,0,31,208,0,0,2,252,3,64,0,31,208,0,0,3,248,11,224,0,31,208,0,0,11,240,31,240,0,31,208,0,0,31,208,63,192,0,31,208,0,0,191,255,255,64,0,31,208,0,0,191,255,254,0,0,31,208,0,0,63,255,252,0,0,31,208,0,0,41,11,244,0,0,31,208,0,0,0,31,208,0,0,31,208,0,0,0,127,128,0,0,31,208,0,0,1,254,0,0,0,31,208,0,0,7,252,22,144,0,31,208,0,0,31,255,255,208,0,31,208,0,0,127,255,255,224,0,31,208,0,0,63,255,233,0,0,31,208,0,0,46,144,0,0,0,31,208,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,31,208,0,0,0,0,27,192,0,31,208,0,0,0,107,255,192,0,31,208,0,0,127,255,255,239,255,255,255,255,208,127,255,249,95,255,255,255,255,208,127,249,0,31,255,255,255,255,208,57,0,0,5,85,85,85,85,64,0,0,0,0,0,0,0,0,0, + // 0x7f6e 置 + 110,127,33,34,50,36,2,252,5,85,85,85,85,85,85,80,0,15,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,240,0,15,208,11,208,11,224,7,240,0,15,208,11,208,11,224,7,240,0,15,229,95,229,91,229,91,240,0,15,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,240,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,127,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,253,0,106,170,170,175,234,170,170,169,0,0,0,0,15,192,0,0,0,0,0,0,63,255,255,255,255,128,0,11,240,63,255,255,255,255,128,0,11,240,63,0,0,0,31,128,0,11,240,63,0,0,0,31,128,0,11,240,63,255,255,255,255,128,0,11,240,63,255,255,255,255,128,0,11,240,63,0,0,0,31,128,0,11,240,63,255,255,255,255,128,0,11,240,63,255,255,255,255,128,0,11,240,63,0,0,0,31,128,0,11,240,63,0,0,0,31,128,0,11,240,63,255,255,255,255,128,0,11,240,63,255,255,255,255,128,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,255,255,255,255,255,255,255,64,11,255,255,255,255,255,255,255,64,11,250,170,170,170,170,170,170,0,11,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x7f72 署 + 114,127,33,34,50,36,1,252,1,85,85,85,85,85,85,84,0,3,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,252,0,3,244,2,244,2,248,0,252,0,3,244,2,244,2,248,0,252,0,3,244,2,244,2,248,0,252,0,3,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,252,0,1,85,85,95,229,85,85,84,0,0,0,0,11,224,0,0,80,0,0,42,170,175,250,170,130,248,0,0,63,255,255,255,255,219,252,0,0,63,255,255,255,255,255,224,0,0,0,0,11,224,1,255,128,0,0,0,0,11,224,15,253,0,0,42,170,170,175,250,191,254,170,128,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,0,31,255,192,0,0,0,0,0,6,255,253,0,0,0,0,0,0,191,255,249,85,85,80,0,0,111,255,255,255,255,255,240,0,47,255,255,255,255,255,255,240,0,127,255,254,0,0,0,7,240,0,47,228,126,0,0,0,11,240,0,9,0,127,255,255,255,255,240,0,0,0,127,255,255,255,255,240,0,0,0,126,0,0,0,7,240,0,0,0,126,0,0,0,7,240,0,0,0,127,85,85,85,91,240,0,0,0,127,255,255,255,255,240,0,0,0,127,255,255,255,255,240,0,0,0,126,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0, + // 0x8070 聰 + 112,128,34,35,59,36,1,252,0,0,0,0,0,15,144,0,0,0,0,0,0,0,15,208,0,0,63,255,255,252,0,47,192,0,0,63,255,255,253,170,191,234,170,0,63,255,255,255,255,255,255,255,0,3,240,15,195,255,255,255,255,0,3,240,15,195,240,11,64,47,0,3,240,15,195,240,15,0,47,0,3,240,15,195,240,47,255,47,0,3,255,255,195,243,254,175,47,0,3,255,255,195,243,252,46,47,0,3,255,255,195,247,255,188,47,0,3,240,15,195,243,75,244,47,0,3,240,15,195,240,3,252,47,0,3,240,15,195,240,31,191,47,0,3,240,15,195,240,253,8,47,0,3,240,15,195,240,240,0,47,0,3,255,255,195,255,255,255,255,0,3,255,255,195,255,255,255,255,0,3,255,255,193,170,191,170,170,0,3,240,15,192,0,191,128,0,0,3,240,15,192,0,63,240,0,0,3,240,15,192,0,7,252,0,0,3,240,15,192,3,240,252,16,0,3,240,111,192,247,240,48,252,0,27,255,255,194,247,240,0,253,0,191,255,255,195,243,240,0,127,0,127,255,175,195,243,240,0,63,64,62,64,15,199,227,240,7,95,192,0,0,15,207,195,240,7,207,192,0,0,15,239,131,240,11,203,224,0,0,15,239,2,255,255,199,224,0,0,15,193,1,255,255,66,0,0,0,15,192,0,42,169,0,0,0,0,0,0,0,0,0,0,0, + // 0x81ea 自 + 234,129,26,35,245,36,5,252,0,0,3,232,0,0,0,0,0,7,248,0,0,0,0,0,11,240,0,0,0,0,0,15,240,0,0,0,0,0,15,208,0,0,0,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,64,0,0,0,15,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,0,0,0,0,11,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,0,0,0,0,11,240,127,0,0,0,0,11,224,0,0,0,0,0,0,0, + // 0x85cd 藍 + 205,133,32,33,8,36,2,254,0,0,190,0,0,190,0,0,0,0,190,0,0,254,0,0,191,255,255,255,255,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,190,0,0,254,0,0,0,0,190,0,0,189,0,0,0,0,0,0,0,248,0,0,15,255,255,255,129,252,0,0,15,255,255,255,131,248,0,0,15,64,252,0,7,254,170,169,15,255,255,254,15,255,255,253,15,255,255,254,47,255,255,253,15,64,0,62,127,64,0,0,15,64,0,63,255,0,0,0,15,255,255,254,124,0,0,0,15,255,255,254,4,0,0,0,15,64,252,0,2,170,170,164,15,64,252,0,3,255,255,248,15,255,255,255,195,255,255,248,15,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,170,170,170,170,170,170,64,0,255,255,255,255,255,255,128,0,255,255,255,255,255,255,128,0,252,3,240,11,192,47,128,0,252,3,240,11,192,47,128,0,252,3,240,11,192,47,128,0,252,3,240,11,192,47,128,0,252,3,240,11,192,47,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x884c 行 + 76,136,34,35,59,36,1,252,0,0,228,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,11,248,3,255,255,255,255,64,0,47,240,3,255,255,255,255,64,0,191,192,3,255,255,255,255,64,3,255,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,127,224,0,0,0,0,0,0,0,63,128,46,64,0,0,0,0,0,29,0,127,128,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,11,248,47,255,255,255,255,208,0,31,240,47,255,255,255,255,208,0,127,192,47,255,255,255,255,208,1,255,192,0,0,0,127,64,0,7,255,192,0,0,0,127,0,0,47,255,192,0,0,0,127,0,0,191,255,192,0,0,0,127,0,0,127,143,192,0,0,0,127,0,0,46,15,192,0,0,0,127,0,0,8,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,0,0,127,0,0,0,15,192,0,1,85,191,0,0,0,15,192,0,3,255,255,0,0,0,15,192,0,3,255,254,0,0,0,15,192,0,2,255,228,0,0,0,0,0,0,0,0,0,0,0, + // 0x8868 表 + 104,136,34,34,50,36,1,253,0,0,0,2,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,7,255,255,255,255,255,255,253,0,7,255,255,255,255,255,255,253,0,7,255,255,255,255,255,255,253,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,170,170,171,254,170,170,160,0,0,191,255,255,255,255,255,240,0,0,191,255,255,255,255,255,240,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,128,0,0,0,191,239,128,0,0,0,0,0,7,255,15,192,0,116,0,0,0,47,248,15,208,2,254,0,0,2,255,208,7,240,15,253,0,0,47,255,64,3,244,127,240,0,7,255,255,0,2,254,255,64,0,191,255,191,0,0,255,248,0,0,63,244,63,0,0,191,208,0,0,30,64,63,0,0,63,208,0,0,0,0,63,0,0,31,240,0,0,0,0,63,0,27,139,253,0,0,0,0,63,91,255,194,255,128,0,0,0,127,255,255,192,191,248,0,0,111,255,255,249,0,31,255,128,0,255,255,249,0,0,7,255,208,0,191,249,0,0,0,0,127,64,0,57,0,0,0,0,0,6,0, + // 0x88ab 被 + 171,136,34,34,50,36,1,253,0,47,64,0,0,11,208,0,0,0,47,128,0,0,11,224,0,0,0,47,128,0,0,11,224,0,0,0,47,128,0,0,11,224,0,0,0,47,128,0,0,11,224,0,0,0,47,128,0,0,11,224,0,0,0,47,128,3,255,255,255,255,208,63,255,255,67,255,255,255,255,192,63,255,255,195,255,255,255,255,192,63,255,255,131,240,11,224,47,128,0,0,63,3,240,11,224,63,64,0,0,190,3,240,11,224,63,0,0,1,252,3,240,11,224,126,0,0,3,244,131,240,11,224,0,0,0,15,225,247,255,255,255,254,0,0,47,211,231,255,255,255,255,0,0,191,255,199,255,255,255,254,0,2,255,255,7,255,192,0,253,0,11,255,254,7,239,208,1,252,0,47,255,191,75,231,240,3,248,0,255,239,143,203,227,244,3,244,0,127,47,139,203,210,252,15,240,0,60,47,131,79,208,253,31,208,0,16,47,128,15,192,191,63,192,0,0,47,128,31,192,63,255,64,0,0,47,128,47,128,31,254,0,0,0,47,128,63,64,15,252,0,0,0,47,128,63,0,47,254,0,0,0,47,128,191,0,255,255,208,0,0,47,128,254,7,255,127,248,0,0,47,129,252,127,252,15,255,128,0,47,131,248,255,224,2,255,208,0,47,130,240,127,64,0,127,128,0,47,128,80,36,0,0,7,0, + // 0x88c5 装 + 197,136,34,35,59,36,1,252,0,0,190,0,0,47,128,0,0,0,0,190,0,0,47,128,0,0,7,64,190,0,0,47,128,0,0,31,224,190,0,0,47,128,0,0,11,248,190,0,0,47,128,0,0,1,253,190,63,255,255,255,255,192,0,120,190,63,255,255,255,255,192,0,16,190,63,255,255,255,255,192,0,0,190,0,0,47,128,0,0,0,0,190,0,0,47,128,0,0,0,31,190,0,0,47,128,0,0,1,255,190,0,0,47,128,0,0,47,255,190,0,0,47,128,0,0,127,244,190,15,255,255,255,255,0,63,64,190,15,255,255,255,255,0,20,0,190,11,255,255,255,255,0,0,0,190,0,0,0,0,0,0,0,0,20,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,42,170,170,171,254,170,170,170,128,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,2,255,63,64,0,80,0,0,0,47,248,31,192,2,248,0,0,6,255,208,11,224,31,248,0,1,191,255,0,3,249,255,192,0,127,255,255,0,1,255,253,0,0,47,248,127,0,0,191,224,0,0,9,0,63,0,0,47,244,0,0,0,0,63,90,254,11,255,64,0,0,26,255,255,254,1,255,249,0,0,127,255,255,253,0,47,255,208,0,63,255,148,0,0,2,255,128,0,41,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0, + // 0x88dd 裝 + 221,136,34,35,59,36,1,252,2,144,15,192,0,15,192,0,0,7,224,15,192,0,15,192,0,0,7,224,15,192,0,15,192,0,0,7,224,15,192,0,15,192,0,0,7,250,175,192,0,15,192,0,0,7,255,255,203,255,255,255,255,128,7,255,255,203,255,255,255,255,128,3,208,15,203,255,255,255,255,128,0,0,15,192,0,15,192,0,0,42,170,175,192,0,15,192,0,0,63,255,255,192,0,15,192,0,0,63,255,255,192,0,15,192,0,0,2,244,15,192,0,15,192,0,0,3,244,15,194,255,255,255,255,0,7,240,15,195,255,255,255,255,0,15,224,15,195,255,255,255,255,0,127,192,15,192,0,0,0,0,0,63,0,15,194,252,0,0,0,0,24,0,0,2,252,0,0,0,0,42,170,170,171,254,170,170,170,128,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,2,255,63,64,0,80,0,0,0,111,248,31,192,2,248,0,0,27,255,192,11,224,31,248,0,6,255,255,0,3,249,255,208,0,127,255,255,0,1,255,253,0,0,47,228,127,0,0,191,224,0,0,4,0,127,0,5,47,248,0,0,0,0,127,111,255,11,255,64,0,0,107,255,255,255,1,255,249,0,0,191,255,255,233,0,47,255,208,0,127,250,80,0,0,2,255,128,0,20,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0, + // 0x8907 複 + 7,137,34,34,50,36,1,253,0,63,0,0,62,0,0,0,0,0,63,0,0,127,0,0,0,0,0,63,0,0,254,0,0,0,0,0,63,0,1,255,255,255,255,192,0,63,0,3,255,255,255,255,192,0,63,0,11,255,255,255,255,192,0,63,0,15,208,0,0,0,0,63,255,254,63,192,0,0,0,0,63,255,255,255,128,0,0,0,0,63,255,254,126,255,255,255,252,0,0,0,188,21,255,255,255,252,0,0,0,252,1,248,0,0,252,0,0,2,248,1,248,0,0,252,0,0,3,240,1,255,255,255,252,0,0,11,226,129,255,255,255,252,0,0,31,195,225,248,0,0,252,0,0,63,203,193,248,0,0,252,0,0,191,255,1,255,255,255,252,0,2,255,253,1,255,255,255,252,0,7,255,254,0,3,252,0,0,0,31,255,127,64,11,240,0,0,0,127,255,31,128,47,255,255,244,0,191,63,11,0,255,255,255,252,0,60,63,0,7,255,170,175,244,0,16,63,0,47,255,64,15,224,0,0,63,0,255,239,208,63,192,0,0,63,0,62,11,249,255,0,0,0,63,0,0,2,255,252,0,0,0,63,0,0,1,255,244,0,0,0,63,0,0,47,255,255,64,0,0,63,0,27,255,255,255,254,64,0,63,0,255,255,128,127,255,224,0,63,0,191,248,0,6,255,192,0,63,0,57,0,0,0,27,0, + // 0x89d2 角 + 210,137,31,35,24,36,1,252,0,0,11,160,0,0,0,0,0,0,15,240,0,0,0,0,0,0,47,255,255,248,0,0,0,0,127,255,255,255,0,0,0,0,255,255,255,254,0,0,0,3,253,0,2,252,0,0,0,15,244,0,7,244,0,0,0,63,224,0,15,224,0,0,0,255,255,255,255,255,255,244,7,255,255,255,255,255,255,244,47,255,255,255,255,255,255,244,15,239,192,0,189,0,3,244,3,79,192,0,189,0,3,244,0,15,192,0,189,0,3,244,0,15,192,0,189,0,3,244,0,15,192,0,189,0,3,244,0,15,255,255,255,255,255,244,0,15,255,255,255,255,255,244,0,15,255,255,255,255,255,244,0,15,192,0,189,0,3,244,0,31,192,0,189,0,3,244,0,31,192,0,189,0,3,244,0,47,192,0,189,0,3,244,0,47,255,255,255,255,255,244,0,63,255,255,255,255,255,244,0,63,255,255,255,255,255,244,0,191,0,0,0,0,3,244,0,253,0,0,0,0,3,244,2,252,0,0,0,0,3,244,7,248,0,0,0,0,3,244,31,240,0,0,0,0,7,244,127,192,0,0,0,255,255,244,63,64,0,0,0,127,255,240,13,0,0,0,0,63,254,64,0,0,0,0,0,0,0,0, + // 0x8a08 計 + 8,138,34,34,50,36,1,253,0,0,0,0,0,3,240,0,0,6,170,170,144,0,7,240,0,0,11,255,255,208,0,7,240,0,0,11,255,255,208,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,191,255,255,252,0,7,240,0,0,191,255,255,252,0,7,240,0,0,106,170,170,168,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,15,255,255,208,0,7,240,0,0,15,255,255,209,85,87,245,85,80,10,170,170,151,255,255,255,255,240,0,0,0,7,255,255,255,255,240,0,0,0,7,255,255,255,255,240,15,255,255,208,0,7,240,0,0,15,255,255,208,0,7,240,0,0,10,170,170,144,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,15,255,255,208,0,7,240,0,0,15,255,255,208,0,7,240,0,0,15,234,175,208,0,7,240,0,0,15,192,11,208,0,7,240,0,0,15,192,11,208,0,7,240,0,0,15,192,11,208,0,7,240,0,0,15,192,11,208,0,7,240,0,0,15,192,11,208,0,7,240,0,0,15,234,175,208,0,7,240,0,0,15,255,255,208,0,7,240,0,0,15,255,255,208,0,7,240,0,0,15,192,0,0,0,7,240,0,0,10,128,0,0,0,7,240,0,0, + // 0x8a0a 訊 + 10,138,35,34,50,36,1,252,6,170,170,64,0,0,0,0,0,15,255,255,139,255,255,255,240,0,15,255,255,139,255,255,255,240,0,0,0,0,11,255,255,255,240,0,0,0,0,0,11,208,7,240,0,191,255,255,240,11,208,7,240,0,191,255,255,240,11,208,7,240,0,106,170,170,160,11,208,7,240,0,0,0,0,0,11,208,7,240,0,0,0,0,0,11,208,7,240,0,15,255,255,128,11,208,7,240,0,15,255,255,128,11,208,7,240,0,10,170,170,64,11,208,7,240,0,0,0,0,15,255,255,231,240,0,0,0,0,15,255,255,231,240,0,15,255,255,143,255,255,231,240,0,15,255,255,128,15,208,7,240,0,10,170,170,64,15,192,7,240,0,0,0,0,0,15,192,7,240,0,0,0,0,0,31,192,7,240,0,15,255,255,128,31,192,3,240,0,15,255,255,128,47,128,3,240,0,15,234,191,128,63,64,3,240,0,15,192,15,128,127,0,3,240,0,15,192,15,128,191,0,3,244,64,15,192,15,128,254,0,2,244,160,15,192,15,130,252,0,2,248,180,15,192,15,131,248,0,1,252,244,15,234,191,143,240,0,0,252,240,15,255,255,175,224,0,0,255,240,15,255,255,255,192,0,0,127,224,15,192,0,47,0,0,0,63,208,10,128,0,9,0,0,0,11,128,0,0,0,0,0,0,0,0,0, + // 0x8a18 記 + 24,138,34,33,41,36,1,253,6,170,170,144,0,0,0,0,0,11,255,255,224,191,255,255,254,0,11,255,255,224,191,255,255,254,0,0,0,0,0,191,255,255,254,0,0,0,0,0,0,0,0,190,0,191,255,255,252,0,0,0,190,0,191,255,255,252,0,0,0,190,0,106,170,170,168,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,15,255,255,208,0,0,0,190,0,15,255,255,208,0,0,0,190,0,10,170,170,144,0,0,0,190,0,0,0,0,0,127,255,255,254,0,0,0,0,0,127,255,255,254,0,15,255,255,208,127,255,255,254,0,15,255,255,208,127,0,0,190,0,10,170,170,144,127,0,0,190,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,15,255,255,208,127,0,0,0,0,15,255,255,208,127,0,0,0,0,15,234,175,208,127,0,0,0,0,15,192,11,208,127,0,0,4,0,15,192,11,208,127,0,0,11,144,15,192,11,208,127,0,0,11,224,15,192,11,208,127,0,0,11,208,15,192,11,208,127,0,0,15,208,15,234,175,208,127,64,0,47,192,15,255,255,208,63,255,255,255,192,15,255,255,208,47,255,255,255,64,15,192,0,0,11,255,255,253,0,10,128,0,0,0,0,0,0,0, + // 0x8a2d 設 + 45,138,34,33,41,36,1,253,6,170,170,128,127,255,255,0,0,11,255,255,192,127,255,255,0,0,11,255,255,192,127,255,255,0,0,0,0,0,0,127,0,63,0,0,0,0,0,0,127,0,63,0,0,191,255,255,240,127,0,63,0,0,191,255,255,240,126,0,63,3,0,106,170,170,160,190,0,63,3,224,0,0,0,0,253,0,63,67,224,0,0,0,2,252,0,63,71,224,15,255,255,199,248,0,63,255,208,15,255,255,223,240,0,31,255,192,10,170,170,175,208,0,7,254,0,0,0,0,7,64,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,199,255,255,255,253,0,15,255,255,199,255,255,255,253,0,10,170,170,135,255,255,255,252,0,0,0,0,0,25,0,3,252,0,0,0,0,0,127,0,7,244,0,15,255,255,192,63,128,15,240,0,15,255,255,192,31,192,31,208,0,15,234,175,192,15,240,127,192,0,15,192,15,192,3,252,255,0,0,15,192,15,192,1,255,253,0,0,15,192,15,192,0,191,248,0,0,15,192,15,192,0,191,244,0,0,15,192,15,192,7,255,254,0,0,15,234,175,192,47,255,255,208,0,15,255,255,203,255,244,127,254,64,15,255,255,239,255,64,11,255,208,15,192,0,15,248,0,1,191,128,10,128,0,10,64,0,0,11,0, + // 0x8a66 試 + 102,138,34,35,59,36,1,252,0,0,0,0,0,0,126,20,0,10,170,170,0,0,0,126,189,0,15,255,255,0,0,0,126,127,0,15,255,255,0,0,0,126,47,192,0,0,0,0,0,0,126,15,208,0,0,0,0,0,0,126,3,128,191,255,255,192,0,0,126,0,0,191,255,255,218,170,170,255,170,128,191,255,255,223,255,255,255,255,192,0,0,0,15,255,255,255,255,192,0,0,0,0,0,0,127,0,0,15,255,255,64,0,0,127,0,0,15,255,255,64,0,0,127,0,0,10,170,170,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,15,255,254,63,0,0,15,255,255,79,255,254,63,0,0,15,255,255,79,255,254,63,0,0,10,170,170,0,47,64,63,0,0,0,0,0,0,47,64,63,0,0,0,0,0,0,47,64,63,0,0,15,255,255,64,47,64,47,64,0,15,255,255,64,47,64,47,64,0,15,234,191,64,47,64,47,128,0,15,192,47,64,47,64,31,128,0,15,192,47,64,47,64,15,192,0,15,192,47,64,47,65,79,193,208,15,192,47,64,47,255,143,209,240,15,192,47,91,255,255,139,226,240,15,234,191,111,255,250,7,247,224,15,255,255,95,249,0,3,255,208,15,255,255,73,0,0,2,255,192,15,192,0,0,0,0,0,255,128,10,64,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,0, + // 0x8a8d 認 + 141,138,34,33,41,36,1,253,10,170,170,3,255,255,255,255,64,15,255,255,3,255,255,255,255,64,15,255,255,3,255,255,255,255,64,0,0,0,0,0,126,0,63,0,0,0,0,0,0,189,0,63,0,191,255,255,209,224,253,0,63,0,191,255,255,211,255,252,0,63,0,106,170,170,130,255,252,0,63,0,0,0,0,0,31,255,64,63,0,0,0,0,0,7,255,224,127,0,15,255,255,64,15,255,240,127,0,15,255,255,64,47,194,224,190,0,10,170,170,0,191,64,64,254,0,0,0,0,3,254,0,255,253,0,0,0,0,31,248,0,255,252,0,15,255,255,75,208,96,191,224,0,15,255,255,66,0,253,0,0,0,10,170,170,0,0,255,192,0,0,0,0,0,0,0,47,244,0,0,0,0,0,0,0,7,253,0,0,15,255,255,64,6,144,252,0,0,15,255,255,66,71,224,48,116,0,15,234,191,67,231,224,1,252,0,15,192,47,71,215,224,0,253,0,15,192,47,75,215,224,0,127,0,15,192,47,79,199,224,0,63,128,15,192,47,79,199,224,9,31,192,15,192,47,95,135,224,11,207,208,15,234,191,127,71,224,11,203,224,15,255,255,191,7,224,15,199,240,15,255,255,76,7,255,255,131,128,15,192,0,0,3,255,255,64,0,10,64,0,0,0,191,253,0,0, + // 0x8aa4 誤 + 164,138,34,34,50,36,1,252,6,170,169,0,0,255,255,255,0,15,255,254,0,0,255,255,255,0,15,255,254,0,0,255,255,255,0,0,0,0,7,224,252,0,127,0,0,0,0,7,224,252,0,127,0,191,255,255,199,224,252,0,127,0,191,255,255,199,224,252,0,127,0,106,170,170,135,224,252,0,127,0,0,0,0,7,224,255,255,255,0,0,0,0,7,224,255,255,255,0,15,255,254,7,224,255,255,255,0,15,255,254,7,224,0,0,0,0,10,170,169,7,224,0,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,7,255,255,255,252,0,15,255,254,7,255,255,255,252,0,15,255,254,7,255,255,255,252,0,10,170,169,7,224,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,15,255,255,0,0,0,1,252,0,15,255,255,63,255,255,255,255,224,15,234,191,63,255,255,255,255,224,15,128,63,63,255,255,255,255,224,15,128,63,0,10,0,2,0,0,15,128,63,0,15,208,47,192,0,15,128,63,0,63,208,31,240,0,15,128,63,0,255,128,7,252,0,15,234,191,3,254,0,2,254,0,15,255,255,15,248,0,0,191,128,15,255,255,127,224,0,0,63,208,15,128,0,63,128,0,0,15,208,10,64,0,13,0,0,0,6,0,0,0,0,0,0,0,0,0,0, + // 0x8abf 調 + 191,138,33,34,50,36,1,252,10,170,168,15,255,255,255,255,64,15,255,252,31,255,255,255,255,64,15,255,252,31,255,255,255,255,64,0,0,0,31,128,0,0,47,64,0,0,0,31,128,31,0,47,64,191,255,255,31,128,31,64,47,64,191,255,255,31,128,31,64,47,64,106,170,170,31,139,255,254,47,64,0,0,0,31,139,255,254,47,64,0,0,0,31,134,175,169,47,64,15,255,252,31,128,31,64,47,64,15,255,252,31,128,31,64,47,64,10,170,168,31,134,175,170,47,64,0,0,0,31,143,255,255,47,64,0,0,0,31,143,255,255,47,64,15,255,252,31,128,0,0,47,64,15,255,252,31,128,0,0,47,64,10,170,168,31,129,85,84,47,64,0,0,0,31,139,255,253,47,64,0,0,0,31,139,255,253,47,64,15,255,252,47,75,192,61,47,64,15,255,252,47,75,192,61,47,64,15,234,252,47,75,192,61,47,64,15,64,188,63,11,192,61,47,64,15,64,188,63,11,213,125,47,64,15,64,188,63,11,255,253,47,64,15,64,188,126,11,255,253,47,64,15,64,188,189,11,192,0,47,64,15,234,252,252,1,64,0,47,64,15,255,254,252,0,0,16,127,64,15,255,255,248,0,0,63,255,64,15,64,3,244,0,0,63,255,0,10,64,0,112,0,0,47,248,0,0,0,0,0,0,0,0,0,0, + // 0x8acb 請 + 203,138,34,34,50,36,1,253,0,0,0,0,0,15,192,0,0,6,170,170,64,0,15,192,0,0,15,255,255,129,85,95,229,85,64,15,255,255,135,255,255,255,255,128,0,0,0,7,255,255,255,255,128,0,0,0,0,0,15,192,0,0,191,255,255,240,85,95,213,85,0,191,255,255,241,255,255,255,255,0,106,170,170,161,255,255,255,255,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,15,255,255,143,255,255,255,255,208,15,255,255,143,255,255,255,255,208,10,170,170,69,85,85,85,85,64,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,84,0,15,255,255,128,191,255,255,253,0,15,255,255,128,191,255,255,253,0,10,170,170,64,189,0,0,253,0,0,0,0,0,189,0,0,253,0,0,0,0,0,191,255,255,253,0,15,255,255,128,191,255,255,253,0,15,255,255,128,190,85,85,253,0,15,234,191,128,189,0,0,253,0,15,192,15,128,190,85,85,253,0,15,192,15,128,191,255,255,253,0,15,192,15,128,191,255,255,253,0,15,192,15,128,189,0,0,253,0,15,192,15,128,189,0,0,253,0,15,234,191,128,189,0,0,253,0,15,255,255,128,189,0,0,253,0,15,255,255,128,189,0,191,253,0,15,192,0,0,189,0,63,248,0,10,128,0,0,105,0,42,144,0, + // 0x8b70 議 + 112,139,34,34,50,36,1,253,0,0,0,0,100,0,3,144,0,10,170,168,0,252,0,11,224,0,15,255,252,0,127,0,15,192,0,15,255,252,21,127,85,111,149,0,0,0,0,47,255,255,255,255,64,0,0,0,47,255,255,255,255,64,191,255,255,0,0,63,0,0,0,191,255,255,0,0,63,0,0,0,106,170,170,11,255,255,255,253,0,0,0,0,11,255,255,255,253,0,0,0,0,0,0,63,64,0,0,15,255,252,0,0,63,0,0,0,15,255,252,255,255,255,255,255,192,10,170,168,255,255,255,255,255,192,0,0,0,170,170,170,170,170,128,0,0,0,0,0,81,160,0,0,15,255,252,5,175,250,245,244,0,15,255,252,127,255,209,245,254,0,10,170,168,63,254,1,244,63,64,0,0,0,0,62,1,244,15,64,0,0,0,0,62,1,244,0,0,15,255,252,255,255,255,255,255,192,15,255,252,255,255,255,255,255,192,15,234,252,85,191,85,253,85,64,15,64,188,0,62,0,252,36,0,15,64,188,0,127,188,188,190,0,15,64,188,191,255,252,190,252,0,15,64,188,255,255,232,127,240,0,15,64,188,250,190,0,63,192,0,15,234,252,0,62,0,191,129,208,15,255,252,0,62,7,255,194,224,15,255,252,21,190,127,219,251,208,15,64,0,47,253,61,3,255,192,10,64,0,15,244,0,0,191,0, + // 0x8b80 讀 + 128,139,34,35,59,36,1,252,0,0,0,0,0,63,64,0,0,10,170,168,0,0,63,64,0,0,15,255,252,63,255,255,255,255,192,15,255,252,63,255,255,255,255,192,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,191,255,255,11,255,255,255,255,0,191,255,255,6,170,170,170,170,0,106,170,170,0,0,0,0,0,0,0,0,0,47,255,255,255,255,128,0,0,0,47,255,255,255,255,128,15,255,252,47,1,224,240,15,128,15,255,252,47,11,192,255,255,128,10,170,168,47,121,0,21,95,128,0,0,0,47,0,0,0,15,128,0,0,0,47,255,255,255,255,128,15,255,252,47,255,255,255,255,128,15,255,252,0,0,0,0,0,0,10,170,168,11,255,255,255,254,0,0,0,0,11,255,255,255,254,0,0,0,0,11,208,0,0,126,0,15,255,252,11,255,255,255,254,0,15,255,252,11,229,85,85,190,0,15,234,252,11,208,0,0,126,0,15,64,188,11,255,255,255,254,0,15,64,188,11,229,85,85,190,0,15,64,188,11,208,0,0,126,0,15,64,188,11,255,255,255,254,0,15,64,188,11,255,255,255,254,0,15,234,252,0,47,64,47,64,0,15,255,252,2,255,192,127,244,0,15,255,252,127,253,0,7,255,64,15,64,0,255,208,0,0,127,208,10,64,0,56,0,0,0,11,0,0,0,0,0,0,0,0,0,0, + // 0x8b8a 變 + 138,139,34,35,59,36,1,252,0,40,0,0,0,0,29,0,0,0,62,0,63,255,128,63,0,0,0,252,0,63,255,128,188,0,0,10,240,144,0,0,5,244,120,0,31,210,245,255,255,255,224,252,0,15,215,226,255,255,255,227,240,0,3,255,192,0,0,3,255,208,0,0,255,16,42,170,128,255,84,0,0,252,180,63,255,192,189,124,0,2,240,124,0,0,1,244,47,0,63,255,255,0,0,63,255,255,128,63,255,255,191,255,255,255,255,208,21,111,10,63,255,169,111,66,192,0,47,0,0,0,0,31,64,0,11,175,120,127,255,199,159,109,0,15,175,60,126,175,203,159,111,0,31,47,46,124,11,207,95,79,128,47,47,31,124,11,223,31,71,192,62,47,5,127,255,254,31,67,208,44,47,11,250,170,156,31,65,0,0,26,31,208,0,0,10,0,0,0,0,127,192,0,0,0,0,0,0,1,255,255,255,255,255,255,0,0,11,255,255,255,255,255,255,0,0,63,254,170,170,175,254,170,0,2,255,255,0,0,47,224,0,0,31,253,127,224,1,255,128,0,0,11,208,15,254,31,253,0,0,0,1,0,1,255,255,240,0,0,0,0,0,1,191,255,228,0,0,0,0,22,191,255,255,255,249,64,0,127,255,255,249,6,255,255,255,208,63,255,249,0,0,7,255,255,192,31,229,0,0,0,0,5,175,0,0,0,0,0,0,0,0,0,0, + // 0x8cc7 資 + 199,140,32,35,24,36,2,252,0,0,0,3,224,0,0,0,11,144,0,7,240,0,0,0,31,255,64,15,229,85,85,80,7,255,240,47,255,255,255,253,0,31,224,191,255,255,255,252,0,1,194,252,7,248,3,240,0,0,7,240,11,252,15,224,0,0,16,192,31,254,15,192,0,27,240,0,127,191,128,0,27,255,240,7,254,31,248,0,255,255,145,191,248,7,255,228,191,228,3,255,128,0,191,255,121,0,2,244,0,0,11,253,0,127,255,255,255,255,255,104,0,127,255,255,255,255,255,0,0,127,0,0,0,0,127,0,0,126,0,0,0,0,127,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,127,0,0,0,0,127,0,0,126,0,0,0,0,127,0,0,127,0,0,0,0,127,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,126,0,0,0,0,127,0,0,127,0,0,0,0,127,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,0,29,0,0,100,0,0,0,2,255,192,2,255,144,0,1,191,254,0,1,191,254,0,191,255,224,0,0,7,255,228,63,249,0,0,0,0,111,254,14,64,0,0,0,0,2,224,0,0,0,0,0,0,0,0, + // 0x8ddd 距 + 221,141,34,33,41,36,1,253,11,255,255,244,0,0,0,0,0,15,255,255,244,127,255,255,255,192,15,255,255,244,127,255,255,255,192,15,192,3,244,127,255,255,255,192,15,192,3,244,127,0,0,0,0,15,192,3,244,127,0,0,0,0,15,192,3,244,127,0,0,0,0,15,192,3,244,127,0,0,0,0,15,192,3,244,127,0,0,0,0,15,255,255,244,127,255,255,254,0,15,255,255,244,127,255,255,254,0,15,255,255,244,127,255,255,254,0,0,3,240,0,127,0,0,190,0,0,3,240,0,127,0,0,190,0,0,3,240,0,127,0,0,190,0,15,195,240,0,127,0,0,190,0,15,195,240,0,127,0,0,190,0,15,195,255,252,127,0,0,190,0,15,195,255,252,127,0,0,190,0,15,195,255,252,127,255,255,254,0,15,195,240,0,127,255,255,254,0,15,195,240,0,127,255,255,254,0,15,195,240,0,127,0,0,0,0,15,195,240,0,127,0,0,0,0,15,195,240,4,127,0,0,0,0,15,195,246,253,127,0,0,0,0,15,199,255,253,127,0,0,0,0,31,255,255,253,127,0,0,0,0,191,255,254,64,127,255,255,255,224,191,254,64,0,127,255,255,255,224,126,64,0,0,127,255,255,255,224,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0, + // 0x8eca 車 + 202,142,32,35,24,36,2,252,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,63,255,255,255,255,255,255,252,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,1,255,255,255,255,255,255,64,1,255,255,255,255,255,255,64,1,255,255,255,255,255,255,64,1,252,0,15,224,0,63,64,1,252,0,15,224,0,63,64,1,254,170,175,250,170,191,64,1,255,255,255,255,255,255,64,1,255,255,255,255,255,255,64,1,252,0,15,224,0,63,64,1,252,0,15,224,0,63,64,1,252,0,15,224,0,63,64,1,254,170,175,250,170,191,64,1,255,255,255,255,255,255,64,1,255,255,255,255,255,255,64,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0,0, + // 0x8edf 軟 + 223,142,34,35,59,36,1,252,0,3,244,0,1,228,0,0,0,0,3,244,0,2,248,0,0,0,0,3,244,0,2,248,0,0,0,0,3,244,0,3,244,0,0,0,63,255,255,255,67,240,0,0,0,63,255,255,255,71,240,0,0,0,63,255,255,255,75,240,0,0,0,0,3,244,0,11,255,255,255,192,0,3,244,0,15,255,255,255,192,31,255,255,255,31,255,255,255,192,31,255,255,255,47,135,240,31,128,31,151,245,127,63,71,240,47,64,31,66,240,63,191,7,240,63,0,31,66,240,63,254,7,240,63,0,31,86,245,127,252,7,240,62,0,31,255,255,255,248,7,240,125,0,31,255,255,255,48,7,240,188,0,31,66,240,63,0,7,240,4,0,31,66,240,63,0,11,240,0,0,31,151,245,127,0,15,244,0,0,31,255,255,255,0,15,248,0,0,31,255,255,255,0,31,252,0,0,0,3,244,0,0,47,189,0,0,0,3,244,0,0,63,62,0,0,0,3,244,0,0,189,63,0,0,127,255,255,255,192,252,47,128,0,127,255,255,255,195,248,15,208,0,127,255,255,255,203,240,11,240,0,0,3,244,0,47,224,3,252,0,0,3,244,0,191,192,1,255,0,0,3,244,3,255,0,0,255,208,0,3,244,15,252,0,0,63,224,0,3,244,3,240,0,0,15,192,0,3,244,2,128,0,0,2,64,0,0,0,0,0,0,0,0,0, + // 0x8ef8 軸 + 248,142,33,35,59,36,1,252,0,3,224,0,0,3,240,0,0,0,3,224,0,0,3,240,0,0,0,3,224,0,0,3,240,0,0,0,3,224,0,0,3,240,0,0,63,255,255,254,0,3,240,0,0,63,255,255,254,0,3,240,0,0,63,255,255,254,0,3,240,0,0,0,3,224,0,0,3,240,0,0,0,3,224,0,127,255,255,255,64,31,255,255,252,127,255,255,255,64,31,255,255,252,127,255,255,255,64,31,151,229,188,126,3,240,31,64,31,3,208,188,126,3,240,31,64,31,3,208,188,126,3,240,31,64,31,87,229,188,126,3,240,31,64,31,255,255,252,126,3,240,31,64,31,255,255,252,126,3,240,31,64,31,3,208,188,126,3,240,31,64,31,3,208,188,127,255,255,255,64,31,151,229,188,127,255,255,255,64,31,255,255,252,127,255,255,255,64,31,255,255,252,126,3,240,31,64,0,3,224,0,126,3,240,31,64,0,3,224,0,126,3,240,31,64,0,3,224,0,126,3,240,31,64,191,255,255,255,126,3,240,31,64,191,255,255,255,126,3,240,31,64,191,255,255,255,126,3,240,31,64,0,3,224,0,126,3,240,31,64,0,3,224,0,127,255,255,255,64,0,3,224,0,127,255,255,255,64,0,3,224,0,127,255,255,255,64,0,3,224,0,126,0,0,31,64,0,3,224,0,126,0,0,31,64,0,0,0,0,0,0,0,0,0, + // 0x8f09 載 + 9,143,33,35,59,36,2,252,0,0,252,0,3,240,4,0,0,0,0,252,0,3,244,46,0,0,0,0,252,0,3,244,191,128,0,31,255,255,255,195,244,47,224,0,31,255,255,255,195,244,11,248,0,26,170,254,170,131,244,2,252,0,0,0,252,0,3,244,0,240,0,0,0,252,0,3,244,0,0,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,0,0,252,0,2,248,0,0,0,0,0,252,0,2,248,0,0,0,63,255,255,255,226,252,2,244,0,63,255,255,255,225,252,3,244,0,21,86,253,85,81,252,7,240,0,0,0,252,0,1,252,11,224,0,10,171,254,170,128,252,15,208,0,31,255,255,255,192,253,31,192,0,31,0,248,7,192,253,63,128,0,31,0,248,7,192,190,127,0,0,31,255,255,255,192,191,254,0,0,31,234,254,175,192,127,252,0,0,31,0,248,7,192,63,244,0,0,31,255,255,255,192,63,240,0,0,31,255,255,255,192,63,192,12,0,0,0,252,0,0,191,192,15,64,0,0,252,0,2,255,208,31,128,191,255,255,255,251,255,240,31,64,191,255,255,255,255,247,248,47,0,85,86,253,86,255,194,254,127,0,0,0,252,3,255,0,255,254,0,0,0,252,1,248,0,63,252,0,0,0,252,0,160,0,11,244,0,0,0,0,0,0,0,0,0,0, + // 0x8f2f 輯 + 47,143,34,35,59,36,1,252,0,3,224,0,0,0,0,0,0,0,3,224,0,15,255,255,254,0,0,3,224,0,15,255,255,254,0,0,3,224,0,15,213,85,254,0,63,255,255,254,15,192,0,190,0,63,255,255,254,15,192,0,190,0,63,255,255,254,15,213,85,254,0,0,3,224,0,15,255,255,254,0,0,3,224,0,15,255,255,254,0,31,255,255,252,0,0,0,0,0,31,255,255,252,0,0,0,0,0,31,151,229,188,255,255,255,255,224,31,3,208,188,255,255,255,255,224,31,3,208,188,175,234,170,255,144,31,87,229,188,15,192,0,190,0,31,255,255,252,15,192,0,190,0,31,255,255,252,15,213,85,190,0,31,3,208,188,15,255,255,254,0,31,3,208,188,15,255,255,254,0,31,151,229,188,15,192,0,190,0,31,255,255,252,15,192,0,190,0,31,255,255,252,15,213,85,254,0,0,3,224,0,15,255,255,254,0,0,3,224,0,15,255,255,254,0,0,3,224,0,15,192,0,190,0,191,255,255,255,15,192,0,190,0,191,255,255,255,15,192,0,191,208,191,255,255,255,15,234,191,255,224,0,3,224,3,255,255,255,255,224,0,3,224,3,255,255,255,254,0,0,3,224,2,250,148,0,190,0,0,3,224,0,0,0,0,190,0,0,3,224,0,0,0,0,190,0,0,3,224,0,0,0,0,190,0,0,0,0,0,0,0,0,0,0, + // 0x8f38 輸 + 56,143,34,34,50,36,1,253,0,15,192,0,0,15,208,0,0,0,15,192,0,0,31,240,0,0,0,15,192,0,0,63,252,0,0,0,15,192,0,0,191,254,0,0,63,255,255,248,1,252,127,64,0,63,255,255,248,7,244,47,208,0,63,255,255,248,31,240,15,244,0,0,15,192,0,127,192,3,254,0,0,15,192,2,255,0,0,255,192,47,255,255,255,255,170,170,191,240,47,255,255,251,227,255,255,207,224,47,91,215,243,67,255,255,194,192,46,7,130,240,0,0,0,0,0,46,7,130,240,0,0,0,0,0,47,91,150,241,85,84,0,15,128,47,255,255,242,255,253,25,15,128,47,255,255,242,255,253,62,15,128,46,7,130,242,224,61,62,15,128,46,7,130,242,224,61,62,15,128,47,91,215,242,245,125,62,15,128,47,255,255,242,255,253,62,15,128,47,255,255,242,255,253,62,15,128,0,15,192,2,224,61,62,15,128,0,15,192,2,224,61,62,15,128,0,15,192,2,245,125,62,15,128,191,255,255,246,255,253,62,15,128,191,255,255,246,255,253,62,15,128,191,255,255,246,224,61,62,15,128,0,15,192,2,224,61,21,15,128,0,15,192,2,224,61,0,15,128,0,15,192,2,224,61,0,15,128,0,15,192,2,224,125,5,111,128,0,15,192,2,225,253,7,255,64,0,15,192,2,224,248,3,253,0, + // 0x8f49 轉 + 73,143,34,35,59,36,1,252,0,11,208,0,0,7,224,0,0,0,11,208,0,0,7,224,0,0,0,11,208,0,170,171,250,170,128,0,11,229,85,255,255,255,255,192,63,255,255,253,255,255,255,255,192,63,255,255,252,0,7,224,0,0,63,255,255,252,0,7,224,0,0,0,11,208,0,191,255,255,255,64,0,11,208,0,191,255,255,255,64,31,255,255,244,188,7,224,47,64,31,255,255,244,188,7,224,47,64,31,91,213,244,191,255,255,255,64,31,3,192,244,191,255,255,255,64,31,3,192,244,188,7,224,47,64,31,87,213,244,188,7,224,47,64,31,255,255,244,191,255,255,255,64,31,255,255,244,191,255,255,255,64,31,3,192,244,0,7,224,248,0,31,3,192,244,0,7,224,190,0,31,91,213,247,255,255,255,255,128,31,255,255,246,255,255,255,255,208,31,255,255,245,165,84,5,67,192,0,11,208,0,0,0,15,208,0,0,11,208,1,170,170,175,234,144,0,11,208,3,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,253,11,0,15,208,0,191,255,255,253,47,192,15,208,0,0,11,208,0,15,224,15,208,0,0,11,208,0,3,244,15,208,0,0,11,208,0,1,240,15,208,0,0,11,208,0,0,74,175,192,0,0,11,208,0,0,15,255,192,0,0,11,208,0,0,7,254,0,0,0,0,0,0,0,0,0,0,0, + // 0x8fd1 近 + 209,143,34,34,50,36,1,253,0,0,0,0,0,0,1,128,0,3,64,0,0,0,1,191,240,0,31,208,0,4,5,191,255,252,0,31,248,0,15,255,255,255,208,0,7,254,0,15,255,255,164,0,0,0,255,128,15,254,80,0,0,0,0,63,208,15,192,0,0,0,0,0,15,192,15,192,0,0,0,0,0,6,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,255,255,255,255,192,0,0,0,31,255,255,255,255,192,0,0,0,31,255,255,255,255,192,0,0,0,31,192,1,252,0,0,63,255,128,31,192,1,252,0,0,63,255,128,47,128,1,252,0,0,63,255,128,63,128,1,252,0,0,0,47,128,63,64,1,252,0,0,0,47,128,127,0,1,252,0,0,0,47,128,191,0,1,252,0,0,0,47,128,253,0,1,252,0,0,0,47,130,252,0,1,252,0,0,0,47,131,248,0,1,252,0,0,0,47,143,240,0,1,252,0,0,0,47,143,208,0,1,252,0,0,0,63,195,128,0,1,252,0,0,1,255,240,0,0,1,252,0,0,11,255,254,0,0,0,0,0,0,127,248,255,249,64,0,0,85,80,127,208,63,255,255,255,255,255,208,63,64,7,255,255,255,255,255,192,28,0,0,43,255,255,255,255,128,0,0,0,0,0,0,0,0,0, + // 0x8fd4 返 + 212,143,34,33,41,36,1,253,2,0,0,0,0,0,0,0,0,31,208,0,63,255,255,255,255,0,31,244,0,63,255,255,255,255,0,7,253,0,63,255,255,255,255,0,0,255,64,63,0,0,0,0,0,0,63,192,63,0,0,0,0,0,0,15,64,63,0,0,0,0,0,0,4,0,63,0,0,0,0,0,0,0,0,127,255,255,255,248,0,0,0,0,127,255,255,255,252,0,0,0,0,127,255,255,255,248,0,0,0,0,127,127,0,3,244,0,0,0,0,127,63,0,11,240,0,63,255,64,127,47,128,15,224,0,63,255,64,190,15,192,31,192,0,63,255,64,190,15,240,63,128,0,0,63,64,253,7,244,255,0,0,0,63,64,252,2,254,254,0,0,0,63,65,252,0,255,252,0,0,0,63,66,252,0,127,240,0,0,0,63,67,244,0,127,240,0,0,0,63,71,240,2,255,254,0,0,0,63,79,240,15,255,255,192,0,0,63,95,209,255,244,191,253,0,0,63,111,203,255,192,31,255,192,0,127,199,67,254,0,2,255,128,2,255,240,1,224,0,0,47,0,11,255,253,0,0,0,0,0,0,127,245,255,229,64,0,0,21,80,191,192,127,255,255,255,255,255,208,63,0,11,255,255,255,255,255,192,44,0,0,111,255,255,255,255,128,0,0,0,0,0,0,0,0,0, + // 0x9000 退 + 0,144,34,33,41,36,1,253,3,128,0,47,255,255,255,240,0,31,240,0,47,255,255,255,240,0,11,253,0,47,255,255,255,240,0,2,255,64,47,128,0,3,240,0,0,191,192,47,128,0,3,240,0,0,47,224,47,128,0,3,240,0,0,11,128,47,255,255,255,240,0,0,1,0,47,255,255,255,240,0,0,0,0,47,234,170,171,240,0,0,0,0,47,128,0,3,240,0,0,0,0,47,128,0,3,240,0,0,0,0,47,128,0,3,240,0,0,0,0,47,255,255,255,240,0,63,255,128,47,255,255,255,240,0,63,255,128,47,255,255,255,244,0,63,255,128,47,128,126,0,62,0,0,47,128,47,128,63,1,255,64,0,47,128,47,128,47,139,253,0,0,47,128,47,128,15,255,224,0,0,47,128,47,128,11,255,0,0,0,47,128,47,128,3,252,0,0,0,47,128,47,128,25,255,0,0,0,47,128,47,155,252,191,208,0,0,47,128,127,255,252,47,253,0,0,47,195,255,255,228,7,255,192,0,63,211,255,228,0,1,255,64,1,255,246,228,0,0,0,30,0,11,255,254,0,0,0,0,0,0,127,244,255,249,64,0,0,85,80,127,208,63,255,255,255,255,255,208,63,0,7,255,255,255,255,255,192,28,0,0,43,255,255,255,255,128,0,0,0,0,0,0,0,0,0, + // 0x901f 速 + 31,144,34,34,50,36,1,253,0,0,0,0,0,252,0,0,0,2,0,0,0,0,252,0,0,0,15,208,0,0,0,252,0,0,0,47,244,0,0,0,252,0,0,0,7,254,7,255,255,255,255,255,192,1,255,135,255,255,255,255,255,192,0,63,215,255,255,255,255,255,128,0,15,128,0,0,252,0,0,0,0,1,0,0,0,252,0,0,0,0,0,0,255,255,255,255,253,0,0,0,0,255,255,255,255,253,0,0,0,0,254,170,254,170,253,0,0,0,0,252,0,252,0,253,0,0,0,0,252,0,252,0,253,0,63,255,128,252,0,252,0,253,0,63,255,128,252,0,252,0,253,0,63,255,128,255,255,255,255,253,0,0,47,128,255,255,255,255,253,0,0,47,128,170,175,255,234,169,0,0,47,128,0,47,255,192,0,0,0,47,128,0,127,255,244,0,0,0,47,128,2,253,254,253,0,0,0,47,128,11,244,252,191,128,0,0,47,128,127,208,252,47,244,0,0,47,130,255,64,252,11,255,64,0,47,207,253,0,252,1,255,128,0,63,211,240,0,252,0,63,0,1,255,245,64,0,252,0,4,0,11,255,254,0,0,168,0,0,0,127,244,255,249,64,0,0,85,80,127,208,63,255,255,255,255,255,208,63,0,7,255,255,255,255,255,192,28,0,0,43,255,255,255,255,128,0,0,0,0,0,0,0,0,0, + // 0x9023 連 + 35,144,34,34,50,36,1,253,0,0,0,0,2,248,0,0,0,7,0,0,0,2,248,0,0,0,47,208,0,0,2,248,0,0,0,31,244,15,255,255,255,255,255,64,7,253,15,255,255,255,255,255,64,1,255,75,255,255,255,255,255,64,0,127,192,0,2,248,0,0,0,0,47,64,0,2,248,0,0,0,0,9,1,255,255,255,255,248,0,0,0,1,255,255,255,255,248,0,0,0,1,253,86,253,86,248,0,0,0,1,248,2,248,1,248,0,0,0,1,248,2,248,1,248,0,0,0,1,255,255,255,255,248,0,127,255,1,255,255,255,255,248,0,127,255,1,253,86,253,86,248,0,127,255,1,248,2,248,1,248,0,0,63,1,253,86,253,86,248,0,0,63,1,255,255,255,255,248,0,0,63,1,255,255,255,255,248,0,0,63,0,0,2,248,0,0,0,0,63,0,0,2,248,0,0,0,0,63,26,170,171,254,170,170,128,0,63,31,255,255,255,255,255,192,0,63,31,255,255,255,255,255,192,0,63,0,0,2,248,0,0,0,0,63,128,0,2,248,0,0,0,0,255,208,0,2,248,0,0,0,7,255,244,0,2,248,0,0,0,47,251,255,128,0,0,0,0,0,127,208,255,255,234,170,170,255,208,63,64,47,255,255,255,255,255,192,45,0,1,255,255,255,255,255,128,4,0,0,1,85,85,85,85,0, + // 0x9032 進 + 50,144,34,34,50,36,1,253,0,0,0,2,144,1,144,0,0,7,64,0,3,248,3,252,0,0,47,208,0,11,240,3,244,0,0,15,248,0,15,224,11,240,0,0,3,254,0,47,192,15,208,0,0,0,255,64,127,255,255,255,255,0,0,63,192,255,255,255,255,255,0,0,31,2,255,255,255,255,255,0,0,4,7,255,0,47,128,0,0,0,0,31,255,0,47,128,0,0,0,0,63,255,0,47,128,0,0,0,0,255,255,0,47,128,0,0,0,0,255,191,255,255,255,252,0,0,0,60,127,255,255,255,252,0,127,255,0,127,255,255,255,252,0,127,255,0,127,0,47,128,0,0,127,255,0,127,0,47,128,0,0,0,63,0,127,0,47,128,0,0,0,63,0,127,255,255,255,252,0,0,63,0,127,255,255,255,252,0,0,63,0,127,255,255,255,252,0,0,63,0,127,0,47,128,0,0,0,63,0,127,0,47,128,0,0,0,63,0,127,0,47,128,0,0,0,63,0,127,255,255,255,255,128,0,63,0,127,255,255,255,255,128,0,63,128,127,255,255,255,255,128,0,255,208,0,0,0,0,0,0,7,255,244,0,0,0,0,0,0,47,251,255,128,0,0,0,0,0,127,208,255,255,234,170,170,255,208,63,64,47,255,255,255,255,255,192,45,0,1,255,255,255,255,255,128,4,0,0,1,85,85,85,85,0, + // 0x904b 運 + 75,144,34,33,41,36,1,253,7,0,5,85,85,85,85,85,0,47,208,11,255,255,255,255,255,64,31,244,11,255,255,255,255,255,64,7,253,11,192,0,84,0,47,64,1,255,75,192,1,252,0,47,64,0,127,193,64,1,252,0,5,0,0,31,67,255,255,255,255,254,0,0,8,3,255,255,255,255,254,0,0,0,1,85,86,253,85,84,0,0,0,0,0,1,252,0,0,0,0,0,0,255,255,255,255,248,0,0,0,0,255,255,255,255,248,0,0,0,0,252,1,252,1,248,0,127,255,0,252,1,252,1,248,0,127,255,0,255,255,255,255,248,0,127,255,0,255,255,255,255,248,0,0,63,0,252,1,252,1,248,0,0,63,0,252,1,252,1,248,0,0,63,0,252,1,252,1,248,0,0,63,0,255,255,255,255,248,0,0,63,0,255,255,255,255,248,0,0,63,0,0,1,252,0,0,0,0,63,10,170,170,254,170,170,128,0,63,15,255,255,255,255,255,192,0,63,15,255,255,255,255,255,192,0,63,128,0,1,252,0,0,0,0,255,208,0,1,252,0,0,0,7,255,244,0,1,252,0,0,0,47,251,255,128,0,0,0,0,0,127,208,255,255,234,170,170,255,208,63,64,47,255,255,255,255,255,192,45,0,1,255,255,255,255,255,128,4,0,0,1,85,85,85,85,0, + // 0x9054 達 + 84,144,34,34,50,36,1,253,0,0,0,0,1,252,0,0,0,3,0,0,0,1,252,0,0,0,31,208,0,85,86,253,85,84,0,31,244,0,255,255,255,255,248,0,7,253,0,255,255,255,255,248,0,1,255,0,0,1,252,0,0,0,0,127,192,0,1,252,0,0,0,0,47,133,85,86,253,85,85,64,0,13,31,255,255,255,255,255,192,0,0,31,255,255,255,255,255,192,0,0,0,11,208,0,63,64,0,0,0,0,7,240,0,191,0,0,0,0,0,3,244,0,253,0,0,0,0,5,87,249,85,253,85,64,127,255,11,255,255,255,255,255,128,127,255,11,255,255,255,255,255,128,127,255,0,0,1,252,0,0,0,0,63,0,0,1,252,0,0,0,0,63,0,255,255,255,255,252,0,0,63,0,255,255,255,255,252,0,0,63,0,85,86,253,85,84,0,0,63,0,0,1,252,0,0,0,0,63,0,0,1,252,0,0,0,0,63,15,255,255,255,255,255,128,0,63,15,255,255,255,255,255,128,0,63,6,170,170,254,170,170,64,0,63,64,0,1,252,0,0,0,0,255,208,0,1,252,0,0,0,7,255,244,0,0,168,0,0,0,31,251,255,64,0,0,0,0,0,127,208,255,255,234,170,170,255,208,63,64,47,255,255,255,255,255,192,45,0,1,255,255,255,255,255,128,4,0,0,1,85,85,85,85,0, + // 0x9078 選 + 120,144,34,33,41,36,1,253,11,0,15,255,255,47,255,254,0,63,192,15,255,255,47,255,254,0,47,240,0,0,63,0,0,126,0,11,252,0,0,63,0,0,126,0,2,254,1,85,127,1,85,126,0,0,255,75,255,255,15,255,254,0,0,63,11,255,255,15,255,254,0,0,36,11,192,0,15,192,1,0,0,0,11,208,7,207,192,7,192,0,0,7,255,255,203,255,255,192,0,0,3,255,255,67,255,255,64,0,0,0,21,84,0,21,84,0,0,0,0,2,248,1,252,0,0,127,255,0,2,248,1,252,0,0,127,255,5,87,253,86,253,85,0,127,255,11,255,255,255,255,255,0,0,127,11,255,255,255,255,255,0,0,63,0,2,248,1,252,0,0,0,63,0,2,248,1,252,0,0,0,63,0,2,248,1,252,0,0,0,63,47,255,255,255,255,255,192,0,63,47,255,255,255,255,255,192,0,63,26,170,170,170,170,170,128,0,63,0,1,248,0,188,0,0,0,63,0,31,248,1,255,128,0,0,127,1,255,208,0,47,248,0,1,255,203,254,0,0,3,255,0,7,255,245,240,0,0,0,190,0,47,247,254,128,0,0,0,16,0,191,192,255,255,170,170,170,255,224,63,0,47,255,255,255,255,255,192,44,0,1,191,255,255,255,255,192,0,0,0,0,85,85,85,84,0, + // 0x9084 還 + 132,144,34,33,41,36,1,253,7,64,3,255,255,255,255,252,0,47,208,3,255,255,255,255,252,0,31,244,3,240,61,7,192,252,0,3,253,3,240,61,7,192,188,0,0,255,67,240,61,7,192,188,0,0,63,195,255,255,255,255,252,0,0,31,67,255,255,255,255,252,0,0,8,0,0,0,0,0,0,0,0,0,21,85,85,85,85,85,64,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,0,255,255,255,255,240,0,127,255,0,255,255,255,255,240,0,127,255,0,252,0,0,3,240,0,0,63,0,252,0,0,3,240,0,0,63,0,255,255,255,255,240,0,0,63,0,255,255,255,255,248,0,0,63,0,0,31,248,0,255,0,0,63,0,0,191,254,3,252,0,0,63,0,7,255,255,223,224,0,0,63,0,127,247,255,255,64,0,0,63,7,255,195,246,255,144,0,0,63,15,253,3,240,63,254,64,0,63,131,224,3,240,11,255,64,0,255,209,0,3,240,0,126,0,7,255,244,0,3,240,0,0,0,47,251,255,128,0,0,0,0,0,127,208,255,255,234,170,170,255,208,63,64,47,255,255,255,255,255,192,45,0,1,255,255,255,255,255,128,4,0,0,1,85,85,85,85,0, + // 0x908a 邊 + 138,144,34,34,50,36,1,253,0,64,0,0,1,232,0,0,0,2,224,0,0,2,248,0,0,0,11,253,0,127,255,255,255,240,0,2,255,128,127,170,170,171,240,0,0,127,224,127,85,85,91,240,0,0,15,192,127,255,255,255,240,0,0,2,0,127,0,0,3,240,0,0,0,0,127,85,85,91,240,0,11,64,0,127,255,255,255,240,0,47,224,0,127,0,0,3,240,0,31,252,0,127,85,85,91,240,0,2,255,64,127,255,255,255,240,0,0,127,64,0,1,248,0,0,0,0,29,10,170,171,254,170,170,128,0,0,15,255,255,255,255,255,128,0,0,15,192,124,15,64,31,128,0,0,15,192,248,15,65,255,128,127,255,0,27,240,15,255,224,0,127,255,2,255,129,255,255,128,0,127,255,0,248,1,248,0,0,0,0,63,15,255,255,255,255,255,192,0,63,15,255,255,255,255,255,192,0,63,0,0,126,0,0,0,0,0,63,0,0,191,255,255,192,0,0,63,0,2,255,255,255,192,0,0,63,0,11,240,0,15,192,0,0,127,65,191,208,0,31,128,0,1,255,215,255,0,62,255,0,0,7,255,251,244,0,63,253,0,0,47,247,255,128,0,0,0,0,0,191,208,255,255,234,170,170,191,208,63,64,47,255,255,255,255,255,192,45,0,1,191,255,255,255,255,192,0,0,0,1,85,85,85,85,0, + // 0x90e8 部 + 232,144,34,34,50,36,1,253,0,0,169,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,191,255,255,64,0,0,190,0,0,191,255,255,208,47,255,255,255,244,191,255,255,192,47,255,255,255,244,190,0,63,192,47,255,255,255,244,190,0,63,64,0,16,0,20,0,190,0,191,0,1,248,0,63,64,190,0,254,0,0,252,0,63,0,190,1,252,0,0,189,0,126,0,190,2,248,0,0,126,0,189,0,190,3,244,0,0,127,0,252,0,190,7,240,0,0,36,0,100,0,190,15,208,0,127,255,255,255,252,190,31,192,0,127,255,255,255,252,190,15,240,0,127,255,255,255,252,190,3,248,0,0,0,0,0,0,190,0,253,0,0,0,0,0,0,190,0,191,0,0,0,0,0,0,190,0,63,64,3,255,255,255,192,190,0,47,128,3,255,255,255,192,190,0,31,192,3,255,255,255,192,190,0,31,192,3,240,0,15,192,190,0,31,192,3,240,0,15,192,190,0,31,192,3,240,0,15,192,190,0,127,192,3,240,0,15,192,190,63,255,128,3,240,0,15,192,190,31,255,0,3,240,0,15,192,190,31,248,0,3,255,255,255,192,190,5,64,0,3,255,255,255,192,190,0,0,0,3,255,255,255,192,190,0,0,0,3,240,0,15,192,190,0,0,0,3,240,0,15,192,190,0,0,0, + // 0x91cb 釋 + 203,145,34,35,59,36,1,252,0,0,27,128,0,0,0,0,0,1,107,255,241,85,85,85,85,0,127,255,255,147,255,255,255,255,64,63,255,208,3,255,255,255,255,64,21,11,192,3,240,244,60,31,64,0,11,192,147,240,244,60,31,64,31,11,193,247,240,244,60,31,64,31,11,194,243,245,249,125,111,64,15,139,195,227,255,255,255,255,64,15,203,195,211,255,255,255,255,64,11,203,203,192,0,15,192,0,0,7,203,207,128,21,95,213,84,0,1,11,194,0,191,255,255,252,0,106,175,250,164,191,255,255,252,0,127,255,255,244,0,15,192,0,0,127,255,255,244,0,15,192,0,0,0,47,192,15,255,255,255,255,208,0,63,208,15,255,255,255,255,208,0,127,244,5,95,85,87,229,64,0,255,253,0,15,128,7,224,0,0,255,255,64,15,192,11,192,0,2,255,223,208,7,208,15,128,0,3,235,199,241,87,229,111,85,64,11,203,194,231,255,255,255,255,192,31,139,192,135,255,255,255,255,192,63,75,192,0,0,15,192,0,0,191,11,192,0,0,15,192,0,0,125,11,192,1,255,255,255,255,0,56,11,192,1,255,255,255,255,0,16,11,192,0,85,95,229,85,0,0,11,192,0,0,15,192,0,0,0,11,192,0,0,15,192,0,0,0,11,192,0,0,15,192,0,0,0,11,192,0,0,15,192,0,0,0,0,0,0,0,0,0,0,0, + // 0x91cd 重 + 205,145,32,33,8,36,2,254,0,0,0,0,0,5,172,0,0,0,5,90,191,255,254,0,3,255,255,255,255,255,255,0,2,255,255,255,255,169,64,0,1,170,85,95,208,0,0,0,0,0,0,15,208,0,0,0,170,170,170,175,250,170,170,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,253,85,95,229,85,127,64,0,252,0,15,208,0,63,64,0,252,0,15,224,0,63,64,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,252,0,15,208,0,63,64,0,252,0,15,208,0,63,64,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,85,85,95,229,85,85,0,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,7,255,255,255,255,255,255,240,7,255,255,255,255,255,255,240,2,170,170,175,250,170,170,160,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,170,170,170,170,170, + // 0x91cf 量 + 207,145,33,32,32,36,2,254,0,127,255,255,255,255,253,0,0,0,191,255,255,255,255,254,0,0,0,190,0,0,0,0,254,0,0,0,190,0,0,0,0,254,0,0,0,191,255,255,255,255,254,0,0,0,191,255,255,255,255,254,0,0,0,190,0,0,0,0,254,0,0,0,191,255,255,255,255,254,0,0,0,191,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,85,85,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,252,0,11,224,0,63,64,0,0,252,0,11,224,0,63,64,0,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,252,0,11,224,0,63,64,0,0,252,0,11,224,0,63,64,0,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,0,0,11,224,0,0,0,0,1,85,85,95,229,85,85,64,0,3,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,192,0,0,0,0,11,224,0,0,0,0,170,170,170,175,250,170,170,170,0,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64, + // 0x91dd 針 + 221,145,34,34,50,36,1,253,0,3,248,0,0,2,164,0,0,0,11,254,0,0,3,248,0,0,0,15,255,192,0,3,248,0,0,0,63,239,240,0,3,248,0,0,0,127,75,252,0,3,248,0,0,0,254,2,255,0,3,248,0,0,3,252,0,191,128,3,248,0,0,15,240,0,63,192,3,248,0,0,63,208,0,15,64,3,248,0,0,255,255,255,253,0,3,248,0,0,63,255,255,244,0,3,248,0,0,22,255,255,244,0,3,248,0,0,0,2,244,0,255,255,255,255,224,0,2,244,0,255,255,255,255,224,0,2,244,0,255,255,255,255,224,0,2,244,0,85,87,253,85,64,47,255,255,255,64,3,248,0,0,47,255,255,255,64,3,248,0,0,47,255,255,255,64,3,248,0,0,0,2,244,0,0,3,248,0,0,0,2,244,36,0,3,248,0,0,15,130,244,62,0,3,248,0,0,11,194,244,125,0,3,248,0,0,7,194,244,188,0,3,248,0,0,3,210,244,248,0,3,248,0,0,3,226,245,244,0,3,248,0,0,3,242,245,240,0,3,248,0,0,1,66,244,1,0,3,248,0,0,0,2,250,255,64,3,248,0,0,1,175,255,255,64,3,248,0,0,63,255,255,255,64,3,248,0,0,63,255,249,64,0,3,248,0,0,47,148,0,0,0,3,248,0,0,0,0,0,0,0,2,248,0,0, + // 0x9215 鈕 + 21,146,34,34,50,36,1,253,0,15,224,0,0,0,0,0,0,0,31,248,0,0,0,0,0,0,0,63,254,0,255,255,255,252,0,0,127,127,128,255,255,255,252,0,0,253,47,224,255,255,255,252,0,2,252,11,248,1,253,2,252,0,7,240,3,253,0,252,1,252,0,31,208,0,252,0,252,1,252,0,127,192,0,112,1,252,2,248,0,255,255,255,208,1,252,2,248,0,63,255,255,192,1,252,2,248,0,7,255,255,192,1,248,2,248,0,0,11,208,0,2,248,2,248,0,0,11,208,0,2,248,2,248,0,0,11,208,0,2,244,2,248,0,63,255,255,247,255,255,255,255,224,63,255,255,247,255,255,255,255,224,63,255,255,247,255,255,255,255,224,0,11,208,0,7,244,3,248,0,0,11,208,64,3,240,3,244,0,15,11,210,240,7,240,3,244,0,15,75,210,240,7,240,3,244,0,15,139,211,224,7,224,3,240,0,11,203,211,208,11,224,3,240,0,7,203,215,192,11,224,3,240,0,7,203,219,128,11,208,3,240,0,3,139,210,64,15,208,7,240,0,0,11,208,20,15,192,7,240,0,0,11,235,252,15,192,7,240,0,1,191,255,252,31,192,11,240,0,63,255,255,255,255,255,255,255,224,63,255,228,31,255,255,255,255,224,46,144,0,31,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x932f 錯 + 47,147,34,34,50,36,1,253,0,15,224,0,3,240,15,192,0,0,31,248,0,3,240,15,192,0,0,63,254,0,3,240,15,192,0,0,127,191,128,3,240,15,192,0,0,254,47,209,255,255,255,255,128,2,252,15,245,255,255,255,255,128,7,244,3,254,255,255,255,255,128,31,224,0,252,3,240,15,192,0,127,192,0,112,3,240,15,192,0,255,255,255,208,3,240,15,192,0,63,255,255,192,3,240,15,192,0,7,255,255,192,3,240,15,192,0,0,11,208,11,255,255,255,255,224,0,11,208,11,255,255,255,255,224,0,11,208,11,255,255,255,255,224,63,255,255,244,0,0,0,0,0,63,255,255,244,0,0,0,0,0,63,255,255,244,0,0,0,0,0,0,11,208,0,63,255,255,253,0,0,11,208,64,63,255,255,253,0,11,11,209,240,63,170,170,253,0,15,75,210,240,63,0,0,189,0,15,139,211,224,63,0,0,189,0,11,203,211,208,63,0,0,189,0,7,203,215,192,63,255,255,253,0,7,203,219,128,63,255,255,253,0,3,203,210,64,63,170,170,253,0,0,11,208,104,63,0,0,189,0,0,11,255,252,63,0,0,189,0,26,255,255,252,63,255,255,253,0,63,255,255,164,63,255,255,253,0,63,255,144,0,63,255,255,253,0,46,64,0,0,63,0,0,189,0,0,0,0,0,42,0,0,105,0, + // 0x9375 鍵 + 117,147,34,34,50,36,1,253,0,31,128,0,0,0,188,0,0,0,47,224,0,0,0,188,0,0,0,63,244,0,0,0,188,0,0,0,191,252,63,253,63,255,255,0,0,253,255,127,252,63,255,255,0,3,248,63,255,252,42,254,175,0,11,240,31,208,248,0,188,31,0,31,208,11,193,244,0,188,31,0,127,64,3,3,242,255,255,255,240,255,170,170,3,226,255,255,255,240,127,255,255,7,209,170,254,175,224,27,255,255,15,192,0,188,31,0,0,31,64,15,128,0,188,31,0,0,31,64,31,233,63,255,255,0,0,31,64,63,255,63,255,255,0,63,255,255,127,255,42,254,170,0,63,255,255,93,47,0,188,0,0,63,255,255,64,63,0,188,0,0,0,31,64,8,62,191,255,255,64,0,31,68,61,62,191,255,255,64,9,31,79,62,125,106,254,170,64,30,31,79,47,188,0,188,0,0,15,31,94,31,252,0,188,0,0,15,31,110,15,249,255,255,255,208,15,95,125,15,245,255,255,255,208,11,95,124,7,241,255,255,255,192,11,159,68,7,240,0,188,0,0,0,31,64,79,252,0,188,0,0,0,47,255,223,255,0,188,0,0,27,255,255,255,127,228,0,0,0,127,255,255,253,15,255,255,255,224,63,249,11,248,2,255,255,255,208,36,0,3,224,0,27,255,255,192,0,0,0,64,0,0,0,0,0, + // 0x9577 長 + 119,149,32,34,16,36,2,252,0,11,255,255,255,255,255,64,0,15,255,255,255,255,255,64,0,15,255,255,255,255,255,64,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,255,255,255,255,253,0,0,15,255,255,255,255,253,0,0,15,250,170,170,170,168,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,255,255,255,255,253,0,0,15,255,255,255,255,253,0,0,15,250,170,170,170,168,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,15,224,11,240,0,2,128,0,15,224,3,248,0,15,240,0,15,224,2,252,0,127,224,0,15,224,0,255,3,255,64,0,15,224,0,127,159,252,0,0,15,224,0,47,255,208,0,0,15,224,0,15,254,0,0,0,15,224,0,3,255,64,0,0,15,224,91,244,255,244,0,0,15,255,255,244,63,255,64,11,255,255,255,244,11,255,254,15,255,255,233,0,0,255,255,15,255,148,0,0,0,11,253,5,64,0,0,0,0,0,108,0,0,0,0,0,0,0,0, + // 0x9589 閉 + 137,149,30,33,8,36,3,253,106,170,170,144,106,170,170,144,255,255,255,224,191,255,255,240,255,255,255,224,191,255,255,240,254,0,11,224,190,0,7,240,254,0,11,224,190,0,7,240,254,85,95,224,190,85,91,240,255,255,255,224,191,255,255,240,255,255,255,224,191,255,255,240,254,0,11,224,190,0,7,240,254,0,11,224,190,0,7,240,254,0,11,224,190,0,7,240,255,255,255,224,191,255,255,240,255,255,255,224,191,255,255,240,255,85,85,64,85,85,91,240,254,0,0,0,168,0,7,240,254,0,0,0,252,0,7,240,254,0,0,0,252,0,7,240,254,10,170,171,254,170,7,240,254,15,255,255,255,255,7,240,254,15,255,255,255,255,7,240,254,0,0,15,252,0,7,240,254,0,0,63,252,0,7,240,254,0,0,255,252,0,7,240,254,0,3,253,252,0,7,240,254,0,31,240,252,0,7,240,254,0,191,192,252,0,7,240,254,7,255,0,252,0,7,240,254,47,248,0,252,0,7,240,254,15,208,0,252,0,7,240,254,2,0,191,248,21,95,240,254,0,0,191,244,63,255,240,254,0,0,63,144,63,255,208,190,0,0,0,0,47,254,0, + // 0x958b 開 + 139,149,30,34,16,36,3,252,85,85,85,80,85,85,85,80,255,255,255,224,191,255,255,240,255,255,255,224,191,255,255,240,253,0,11,224,190,0,7,240,253,0,11,224,190,0,7,240,254,85,91,224,190,85,91,240,255,255,255,224,191,255,255,240,255,255,255,224,191,255,255,240,253,0,11,224,190,0,7,240,253,0,11,224,190,0,7,240,254,85,95,224,190,85,91,240,255,255,255,224,191,255,255,240,255,255,255,224,191,255,255,240,253,0,0,0,0,0,7,240,253,0,0,0,0,0,7,240,253,6,170,170,170,169,7,240,253,11,255,255,255,254,7,240,253,11,255,255,255,254,7,240,253,0,15,128,63,0,7,240,253,0,15,128,63,0,7,240,253,0,15,128,63,0,7,240,253,31,255,255,255,255,71,240,253,31,255,255,255,255,71,240,253,31,255,255,255,255,71,240,253,0,31,128,63,0,7,240,253,0,47,64,63,0,7,240,253,0,63,0,63,0,7,240,253,0,126,0,63,0,7,240,253,0,253,0,63,0,7,240,253,3,252,0,63,5,91,240,253,15,240,0,63,15,255,240,253,7,208,0,63,11,255,208,253,1,64,0,0,7,254,64,0,0,0,0,0,0,0,0, + // 0x9593 間 + 147,149,30,33,8,36,3,253,106,170,170,144,106,170,170,144,255,255,255,224,191,255,255,240,255,255,255,224,191,255,255,240,254,0,11,224,190,0,7,240,254,0,11,224,190,0,7,240,254,85,95,224,190,85,91,240,255,255,255,224,191,255,255,240,255,255,255,224,191,255,255,240,254,0,11,224,190,0,7,240,254,0,11,224,190,0,7,240,254,0,11,224,190,0,7,240,255,255,255,224,191,255,255,240,255,255,255,224,191,255,255,240,255,85,85,64,85,85,91,240,254,0,0,0,0,0,7,240,254,0,0,0,0,0,7,240,254,0,255,255,255,224,7,240,254,0,255,255,255,224,7,240,254,0,254,170,171,224,7,240,254,0,252,0,7,224,7,240,254,0,252,0,7,224,7,240,254,0,254,85,91,224,7,240,254,0,255,255,255,224,7,240,254,0,255,255,255,224,7,240,254,0,252,0,7,224,7,240,254,0,252,0,7,224,7,240,254,0,252,0,7,224,7,240,254,0,255,255,255,224,7,240,254,0,255,255,255,224,7,240,254,0,254,170,170,181,95,240,254,0,252,0,0,47,255,240,254,0,84,0,0,31,255,208,254,0,0,0,0,15,254,64, + // 0x95dc 關 + 220,149,30,34,16,36,3,252,85,85,85,64,21,85,85,80,255,255,255,224,191,255,255,240,255,255,255,224,191,255,255,240,253,0,11,224,190,0,3,240,253,0,11,224,190,0,3,240,255,255,255,224,191,255,255,240,255,255,255,224,191,255,255,240,253,0,11,224,190,0,7,240,253,0,11,224,190,0,3,240,254,85,91,224,190,85,87,240,255,255,255,224,191,255,255,240,255,255,255,224,191,255,255,240,253,0,61,0,15,64,3,240,253,0,124,0,62,0,3,240,253,10,240,131,184,100,3,240,253,15,210,231,240,244,3,240,253,3,231,193,251,208,3,240,253,0,255,0,127,88,3,240,253,0,125,208,45,45,3,240,253,1,240,240,190,191,3,240,253,47,255,255,255,255,67,240,253,47,255,191,229,7,67,240,253,0,1,176,160,0,3,240,253,7,129,240,244,61,3,240,253,7,129,240,244,61,3,240,253,7,129,240,244,61,3,240,253,7,255,240,255,253,3,240,253,7,255,224,255,253,3,240,253,0,7,208,244,0,3,240,253,0,31,192,244,1,7,240,253,1,255,0,244,3,255,240,253,0,252,0,244,2,255,224,253,0,80,0,0,1,254,64,0,0,0,0,0,0,0,0, + // 0x964d 降 + 77,150,32,35,24,36,3,252,0,0,0,0,14,64,0,0,0,0,0,0,63,128,0,0,255,255,208,0,127,0,0,0,255,255,244,0,255,170,170,0,255,255,240,3,255,255,255,192,252,7,240,11,255,255,255,64,252,11,208,47,240,0,191,0,252,15,192,191,248,0,253,0,252,15,195,254,253,3,252,0,252,47,71,244,127,79,240,0,252,63,1,208,47,255,192,0,252,62,0,0,11,255,64,0,252,125,0,0,11,255,64,0,252,190,0,0,191,255,244,0,252,63,0,11,255,159,255,144,252,15,194,255,253,1,255,254,252,15,215,255,208,47,175,252,252,7,226,249,0,47,129,180,252,3,240,64,0,47,128,0,252,3,240,255,255,255,255,240,252,3,240,255,255,255,255,240,252,3,240,255,255,255,255,240,252,11,240,11,192,47,128,0,252,255,224,11,192,47,128,0,252,255,192,11,192,47,128,0,252,190,0,11,192,47,128,0,252,0,15,255,255,255,255,252,252,0,15,255,255,255,255,252,252,0,11,255,255,255,255,252,252,0,0,0,0,47,128,0,252,0,0,0,0,47,128,0,252,0,0,0,0,47,128,0,252,0,0,0,0,47,128,0,252,0,0,0,0,47,128,0,0,0,0,0,0,0,0,0, + // 0x9664 除 + 100,150,32,34,16,36,3,253,0,0,0,0,6,160,0,0,0,0,0,0,15,248,0,0,255,255,208,0,47,252,0,0,255,255,244,0,127,255,0,0,255,255,240,0,254,63,192,0,252,7,240,3,252,31,240,0,252,11,208,15,240,7,252,0,252,15,192,63,208,2,255,0,252,15,192,255,64,0,127,208,252,47,75,253,0,0,31,248,252,63,63,244,0,0,7,254,252,62,31,239,255,255,254,252,252,189,14,31,255,255,253,40,252,190,0,31,255,255,253,0,252,63,0,0,3,240,0,0,252,15,192,0,3,240,0,0,252,11,208,0,3,240,0,0,252,7,224,0,3,240,0,0,252,3,242,255,255,255,255,240,252,3,242,255,255,255,255,240,252,3,242,255,255,255,255,240,252,3,240,0,3,240,0,0,252,11,240,0,3,240,0,0,252,255,224,62,3,240,124,0,252,255,192,190,3,240,191,0,252,190,0,252,3,240,63,128,252,0,2,248,3,240,31,192,252,0,7,240,3,240,11,240,252,0,15,224,3,240,3,244,252,0,63,192,3,240,1,252,252,0,47,0,7,240,0,252,252,0,9,3,255,240,0,80,252,0,0,2,255,224,0,0,252,0,0,1,254,64,0,0, + // 0x968e 階 + 142,150,32,35,24,36,3,252,0,0,0,80,0,21,0,0,0,0,1,248,0,63,0,0,255,255,209,248,0,63,0,0,255,255,241,248,0,63,1,224,255,255,241,248,0,63,11,248,252,11,225,255,254,63,191,244,252,15,193,255,254,63,255,64,252,15,193,254,170,63,244,0,252,31,129,248,0,63,64,0,252,47,65,248,0,63,0,0,252,63,1,248,0,63,0,56,252,62,1,248,6,63,0,62,252,188,1,254,255,63,64,126,252,189,31,255,255,63,255,253,252,63,31,255,144,31,255,252,252,31,143,144,15,150,255,160,252,15,192,0,15,208,0,0,252,11,208,0,31,192,0,0,252,7,224,191,255,255,255,224,252,3,240,255,255,255,255,240,252,3,240,255,255,255,255,240,252,3,240,253,0,0,7,240,252,11,224,253,0,0,7,240,252,255,208,253,0,0,7,240,252,255,192,255,255,255,255,240,252,189,0,255,255,255,255,240,252,0,0,254,170,170,175,240,252,0,0,253,0,0,7,240,252,0,0,253,0,0,7,240,252,0,0,253,0,0,7,240,252,0,0,255,255,255,255,240,252,0,0,255,255,255,255,240,252,0,0,255,255,255,255,240,252,0,0,189,0,0,7,224,0,0,0,0,0,0,0,0, + // 0x96d9 雙 + 217,150,33,35,59,36,1,252,0,41,1,0,0,100,4,0,0,0,63,7,208,0,252,31,128,0,0,125,15,192,1,252,63,0,0,0,252,31,64,3,244,62,0,0,1,255,255,255,131,255,255,255,64,3,255,255,255,143,255,255,255,64,15,248,63,0,31,240,125,0,0,47,244,47,0,63,224,125,0,0,127,255,255,255,255,255,255,254,0,63,255,255,255,255,255,255,254,0,25,244,63,0,115,240,125,0,0,1,244,47,0,3,224,125,0,0,1,255,255,255,3,255,255,254,0,1,255,255,255,3,255,255,254,0,1,248,63,0,3,240,125,0,0,1,244,47,0,3,224,125,0,0,1,255,255,255,195,255,255,255,192,1,255,255,255,195,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,170,170,170,170,170,174,0,0,3,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,128,0,0,1,253,0,0,2,255,0,0,0,1,255,128,0,15,252,0,0,0,0,127,240,0,127,240,0,0,0,0,31,254,7,255,128,0,0,0,0,2,255,255,252,0,0,0,0,0,0,191,255,240,0,0,0,0,0,27,255,255,255,144,0,0,5,175,255,255,255,255,255,233,64,63,255,255,228,2,255,255,255,128,31,255,249,0,0,7,255,255,0,15,148,0,0,0,0,5,189,0,0,0,0,0,0,0,0,0,0, + // 0x96e2 離 + 226,150,34,35,59,36,1,252,0,1,252,0,0,30,0,64,0,0,1,252,0,0,47,128,252,0,0,1,252,0,0,63,2,248,0,127,255,255,255,240,63,3,244,0,127,255,255,255,240,190,3,240,0,106,170,170,170,160,253,7,224,0,0,0,5,0,1,252,15,208,0,11,128,15,79,66,255,255,255,192,15,143,111,15,67,255,255,255,192,15,143,253,15,75,255,255,255,192,15,130,253,15,79,248,15,192,0,15,131,255,143,111,248,15,192,0,15,143,219,223,191,248,15,192,0,15,175,66,79,255,248,15,192,0,15,136,0,15,190,255,255,255,128,15,255,255,255,85,255,255,255,192,15,255,255,255,65,255,255,255,192,5,86,249,85,1,248,15,192,0,0,1,244,0,1,248,15,192,0,26,171,250,170,129,248,15,192,0,47,255,255,255,209,248,15,192,0,47,255,255,255,209,248,15,192,0,47,3,208,11,209,255,255,255,192,47,3,210,75,209,255,255,255,192,47,7,199,139,209,255,255,255,128,47,7,195,203,209,248,15,192,0,47,31,255,219,209,248,15,192,0,47,127,255,251,209,248,15,192,0,47,58,80,251,209,248,15,192,0,47,0,0,155,209,255,255,255,224,47,0,0,11,209,255,255,255,224,47,0,1,95,193,255,255,255,224,47,0,3,255,193,248,0,0,0,47,0,2,254,1,248,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x96fb 電 + 251,150,33,33,41,36,2,253,2,170,170,170,170,170,170,128,0,3,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,192,0,0,0,0,11,208,0,0,0,0,0,0,0,11,208,0,0,0,0,127,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,253,0,127,85,85,95,229,85,85,253,0,126,0,0,11,208,0,0,189,0,126,47,255,139,211,255,244,189,0,126,47,255,139,211,255,248,189,0,126,0,0,11,208,0,0,189,0,0,0,0,11,208,0,0,0,0,0,127,255,139,211,255,253,0,0,0,127,255,139,211,255,253,0,0,0,0,0,6,144,0,0,0,0,0,85,85,85,85,85,85,0,0,0,255,255,255,255,255,255,0,0,0,255,255,255,255,255,255,0,0,0,252,0,15,208,0,63,0,0,0,252,0,15,208,0,63,0,0,0,255,255,255,255,255,255,0,0,0,255,255,255,255,255,255,0,0,0,252,0,15,208,0,63,0,0,0,252,0,15,208,0,63,0,0,0,253,85,95,229,85,127,0,0,0,255,255,255,255,255,255,4,0,0,255,255,255,255,255,255,31,64,0,252,0,15,208,0,0,47,64,0,168,0,15,224,0,0,63,64,0,0,0,11,255,255,255,255,0,0,0,0,3,255,255,255,253,0,0,0,0,0,26,170,170,144,0, + // 0x9752 青 + 82,151,32,35,24,36,2,252,0,0,0,11,224,0,0,0,0,0,0,15,224,0,0,0,6,170,170,175,250,170,170,144,11,255,255,255,255,255,255,240,11,255,255,255,255,255,255,240,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,85,85,95,245,85,85,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,106,170,170,170,170,170,170,169,0,0,0,0,0,0,0,0,0,26,170,170,170,170,168,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,64,0,0,0,252,0,0,63,64,0,0,0,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,149,85,85,85,252,0,0,63,64,0,0,0,252,0,0,63,149,85,85,85,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,64,0,0,0,252,0,0,63,64,0,0,0,252,0,0,63,64,0,0,1,252,0,0,63,64,0,6,171,252,0,0,63,64,0,7,255,252,0,0,63,64,0,3,255,224,0,0,0,0,0,0,0,0,0, + // 0x975e 非 + 94,151,34,35,59,36,1,252,0,0,3,240,1,248,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,15,255,255,240,2,255,255,255,192,15,255,255,240,2,255,255,255,192,15,255,255,240,2,255,255,255,192,0,0,7,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,15,255,255,240,2,255,255,255,0,15,255,255,240,2,255,255,255,0,15,255,255,240,2,255,255,255,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,7,240,2,252,0,0,0,0,0,7,246,130,252,0,0,0,0,5,175,255,194,252,0,0,0,107,255,255,255,194,255,255,255,208,127,255,255,249,2,255,255,255,208,63,255,191,192,2,255,255,255,208,57,64,127,64,2,252,0,0,0,0,0,255,0,2,252,0,0,0,0,2,253,0,2,252,0,0,0,0,11,252,0,2,252,0,0,0,0,47,240,0,2,252,0,0,0,1,255,192,0,2,252,0,0,0,11,255,0,0,2,252,0,0,0,11,252,0,0,2,252,0,0,0,2,208,0,0,2,248,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9762 面 + 98,151,32,33,8,36,2,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,47,208,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,64,0,0,0,31,255,255,255,255,255,255,244,31,255,255,255,255,255,255,244,31,255,255,255,255,255,255,244,31,192,47,64,3,240,3,244,31,192,47,64,3,240,3,244,31,192,47,64,3,240,3,244,31,192,47,234,171,240,3,244,31,192,47,255,255,240,3,244,31,192,47,255,255,240,3,244,31,192,47,64,3,240,3,244,31,192,47,64,3,240,3,244,31,192,47,64,3,240,3,244,31,192,47,234,171,240,3,244,31,192,47,255,255,240,3,244,31,192,47,255,255,240,3,244,31,192,47,64,3,240,3,244,31,192,47,64,3,240,3,244,31,192,47,64,3,240,3,244,31,192,47,64,3,240,3,244,31,255,255,255,255,255,255,244,31,255,255,255,255,255,255,244,31,255,255,255,255,255,255,244,31,192,0,0,0,0,3,244,31,192,0,0,0,0,3,244,0,0,0,0,0,0,0,0, + // 0x9805 項 + 5,152,34,33,41,36,1,252,0,0,0,47,255,255,255,255,224,0,0,0,47,255,255,255,255,224,63,255,255,213,85,127,255,255,208,63,255,255,192,0,47,192,0,0,63,255,255,192,0,63,128,0,0,0,47,128,0,0,63,64,0,0,0,47,128,3,255,255,255,255,0,0,47,128,3,255,255,255,255,0,0,47,128,3,250,170,170,191,0,0,47,128,3,240,0,0,63,0,0,47,128,3,240,0,0,63,0,0,47,128,3,245,85,85,127,0,0,47,128,3,255,255,255,255,0,0,47,128,3,255,255,255,255,0,0,47,128,3,240,0,0,63,0,0,47,128,3,240,0,0,63,0,0,47,128,3,240,0,0,63,0,0,47,128,3,255,255,255,255,0,0,47,134,227,255,255,255,255,0,0,47,255,243,245,85,85,127,0,1,191,255,227,240,0,0,63,0,111,255,253,3,240,0,0,63,0,191,255,128,3,250,170,170,191,0,63,228,0,3,255,255,255,255,0,57,0,0,3,255,255,255,255,0,0,0,0,0,9,0,5,0,0,0,0,0,0,63,128,47,192,0,0,0,0,2,255,192,63,248,0,0,0,0,111,254,0,7,255,64,0,0,3,255,240,0,0,191,224,0,0,2,255,64,0,0,31,208,0,0,0,224,0,0,0,3,64,0,0,0,0,0,0,0,0,0, + // 0x9810 預 + 16,152,34,33,41,36,1,252,63,255,255,247,255,255,255,255,192,63,255,255,251,255,255,255,255,192,63,255,255,243,255,255,255,255,192,0,0,31,208,0,15,240,0,0,0,0,63,128,0,15,208,0,0,3,208,254,0,85,111,229,85,0,11,255,252,0,191,255,255,255,0,2,255,240,0,191,255,255,255,0,0,47,248,0,190,0,0,63,0,0,7,254,0,190,0,0,63,0,0,0,190,0,190,0,0,63,0,191,255,255,254,191,255,255,255,0,191,255,255,254,191,255,255,255,0,191,255,255,253,190,85,85,127,0,0,15,192,252,190,0,0,63,0,0,15,192,248,190,0,0,63,0,0,15,193,244,190,85,85,127,0,0,15,194,240,191,255,255,255,0,0,15,195,240,191,255,255,255,0,0,15,194,208,190,0,0,63,0,0,15,192,0,190,0,0,63,0,0,15,192,0,190,0,0,63,0,0,15,192,0,191,170,170,191,0,0,15,192,0,191,255,255,255,0,0,15,192,0,191,255,255,255,0,0,15,192,0,1,64,1,0,0,0,15,192,0,7,224,11,208,0,0,15,192,0,47,244,31,248,0,0,31,192,1,255,208,7,255,0,15,255,192,31,254,0,0,191,192,15,255,192,63,244,0,0,47,224,11,250,0,15,64,0,0,7,64,0,0,0,0,0,0,0,0,0, + // 0x984d 額 + 77,152,34,34,50,36,1,253,0,3,240,0,0,0,0,0,0,0,3,240,0,0,0,0,0,0,0,3,240,0,191,255,255,255,192,42,171,250,170,191,255,255,255,192,63,255,255,255,191,255,255,255,192,63,255,255,255,0,7,240,0,0,62,0,0,63,0,11,224,0,0,62,11,128,63,10,175,250,170,0,62,15,192,63,31,255,255,255,0,0,63,149,64,31,255,255,255,0,0,127,255,248,31,128,0,63,0,1,255,255,244,31,128,0,63,0,3,244,3,240,31,128,0,63,0,31,248,15,208,31,255,255,255,0,127,255,31,192,31,255,255,255,0,126,127,255,0,31,213,85,127,0,8,15,254,0,31,128,0,63,0,0,7,255,64,31,128,0,63,0,0,31,255,208,31,149,85,127,0,0,191,143,248,31,255,255,255,0,11,254,2,255,31,255,255,255,0,191,244,0,127,31,128,0,63,0,127,255,255,252,31,128,0,63,0,47,255,255,240,31,128,0,63,0,3,250,171,240,31,234,170,191,0,3,240,3,240,31,255,255,255,0,3,240,3,240,31,255,255,255,0,3,240,3,240,0,64,0,0,0,3,240,3,240,2,244,7,208,0,3,255,255,240,31,252,11,248,0,3,255,255,241,255,224,2,255,64,3,250,170,175,255,64,0,127,208,3,240,0,7,248,0,0,15,224,1,64,0,1,128,0,0,3,64, + // 0x985e 類 + 94,152,34,34,50,36,1,253,0,2,160,0,0,0,0,0,0,6,3,240,56,0,0,0,0,0,31,67,240,126,191,255,255,255,208,15,195,240,252,191,255,255,255,208,7,211,241,244,191,255,255,255,192,3,147,241,240,0,7,240,0,0,42,171,250,170,0,11,224,0,0,63,255,255,255,26,175,234,170,0,63,255,255,255,47,255,255,255,0,0,31,244,0,47,255,255,255,0,0,63,255,0,47,64,0,63,0,0,255,255,224,47,64,0,63,0,3,247,247,252,47,64,0,63,0,31,227,240,255,47,255,255,255,0,127,131,240,61,47,255,255,255,0,46,3,240,4,47,149,85,127,0,4,2,160,0,47,64,0,63,0,0,2,160,0,47,64,0,63,0,0,3,240,0,47,149,85,127,0,0,3,240,0,47,255,255,255,0,63,255,255,255,47,255,255,255,0,63,255,255,255,47,64,0,63,0,63,255,255,255,47,64,0,63,0,0,7,240,0,47,64,0,63,0,0,11,240,0,47,255,255,255,0,0,15,253,0,47,255,255,255,0,0,47,255,128,26,170,170,170,0,0,127,175,240,0,208,1,64,0,1,255,11,252,3,252,11,240,0,11,253,1,254,31,248,11,253,0,127,244,0,120,255,224,1,255,64,63,192,0,15,255,64,0,63,224,46,0,0,7,248,0,0,15,208,0,0,0,1,128,0,0,2,0, + // 0x98a8 風 + 168,152,34,33,41,36,1,252,0,191,255,255,255,255,255,208,0,0,191,255,255,255,255,255,208,0,0,191,255,255,255,255,255,208,0,0,190,0,0,0,0,15,208,0,0,190,0,0,1,108,15,208,0,0,190,1,90,255,255,15,208,0,0,190,127,255,255,255,79,208,0,0,190,63,255,250,64,15,208,0,0,190,21,67,240,0,15,208,0,0,190,0,3,240,0,15,208,0,0,190,0,3,240,0,15,208,0,0,190,47,255,255,255,15,208,0,0,190,47,255,255,255,15,208,0,0,190,47,171,250,191,15,208,0,0,189,47,3,240,47,11,208,0,0,189,47,3,240,47,11,208,0,0,253,47,3,240,47,11,224,0,0,253,47,3,240,47,11,224,0,0,252,47,171,250,191,11,224,0,0,252,47,255,255,255,11,224,0,0,252,47,255,255,255,7,224,0,1,252,0,3,240,4,7,224,0,2,248,0,3,240,125,7,240,0,3,244,0,3,240,63,3,240,64,3,240,0,3,240,47,131,240,192,7,240,0,3,250,191,195,240,240,15,225,171,255,255,255,226,244,240,15,210,255,255,255,255,241,249,224,63,194,255,250,149,2,244,255,224,127,64,80,0,0,1,248,255,208,63,0,0,0,0,0,128,127,192,9,0,0,0,0,0,0,31,64,0,0,0,0,0,0,0,0,0, + // 0x98fd 飽 + 253,152,34,34,50,36,1,253,0,7,244,0,3,144,0,0,0,0,15,253,0,3,240,0,0,0,0,31,255,64,11,240,0,0,0,0,63,175,208,15,224,0,0,0,0,191,15,244,15,192,0,0,0,1,253,3,252,47,255,255,255,128,3,252,0,255,63,255,255,255,128,15,241,248,61,127,255,255,255,128,63,193,248,20,254,0,0,47,128,255,65,248,2,252,0,0,47,64,63,255,255,255,244,0,0,47,64,7,255,255,255,255,255,240,47,64,3,245,86,250,239,255,240,47,64,3,240,1,248,31,255,240,47,64,3,240,2,248,0,2,240,47,64,3,255,255,248,0,2,240,63,64,3,255,255,248,0,2,240,63,64,3,240,1,248,0,2,240,63,0,3,240,1,248,63,255,240,63,0,3,245,86,248,63,255,240,63,0,3,255,255,248,63,255,240,127,0,3,255,255,248,63,0,63,255,0,3,240,0,0,63,0,47,253,0,3,240,11,0,63,0,31,244,0,3,240,47,128,63,0,0,0,0,3,240,15,192,63,0,0,0,0,3,240,11,240,63,0,0,2,0,3,240,31,244,63,0,0,3,224,3,251,255,252,63,0,0,7,224,27,255,255,253,63,0,0,7,224,127,255,228,190,63,64,0,15,208,63,249,0,127,63,255,255,255,192,41,0,0,36,31,255,255,255,128,0,0,0,0,6,255,255,253,0, + // 0x9918 餘 + 24,153,34,34,50,36,1,253,0,15,240,0,0,15,224,0,0,0,31,252,0,0,47,240,0,0,0,63,255,0,0,63,248,0,0,0,191,63,192,0,255,253,0,0,0,252,15,240,1,252,191,0,0,3,248,3,248,3,248,63,192,0,15,245,86,252,15,240,15,240,0,63,255,255,184,63,208,11,248,0,255,63,255,32,191,64,2,254,0,124,0,0,3,254,0,0,255,192,21,85,85,95,252,0,0,63,240,7,255,255,251,255,255,255,255,208,7,255,255,243,143,255,255,243,128,7,208,3,240,15,255,255,240,0,7,208,3,240,0,11,208,0,0,7,255,255,240,0,11,208,0,0,7,255,255,240,0,11,208,0,0,7,224,3,242,255,255,255,255,192,7,208,3,243,255,255,255,255,192,7,229,87,243,255,255,255,255,192,7,255,255,240,0,11,208,0,0,7,255,255,240,0,11,208,16,0,7,208,0,0,42,11,209,248,0,7,208,0,0,63,11,208,252,0,7,255,255,240,126,11,208,190,0,7,255,255,240,252,11,208,127,0,7,250,170,161,252,11,208,63,64,7,208,0,3,248,11,208,31,192,7,250,170,171,240,11,208,15,192,7,255,255,255,224,11,208,15,208,7,255,255,250,192,11,208,7,64,7,208,0,0,3,255,208,0,0,7,208,0,0,2,255,192,0,0,7,208,0,0,1,254,0,0,0, + // 0x99ac 馬 + 172,153,33,32,32,36,1,253,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,63,0,0,252,0,0,0,0,0,63,0,0,252,0,0,0,0,0,63,0,0,252,0,0,0,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,170,170,254,170,170,128,0,0,63,0,0,252,0,0,0,0,0,63,0,0,252,0,0,0,0,0,63,170,170,254,170,170,128,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,0,0,252,0,0,0,0,0,63,0,0,252,0,0,0,0,0,63,0,0,252,0,0,0,0,0,63,255,255,255,255,255,255,128,0,63,255,255,255,255,255,255,128,0,63,255,255,255,255,255,255,64,0,0,0,0,0,0,0,63,64,0,80,0,0,0,6,0,63,64,0,252,6,0,176,47,128,63,64,1,252,47,64,248,15,192,63,0,2,248,31,128,252,7,224,127,0,3,244,15,192,189,3,240,127,0,7,240,15,192,62,1,244,191,0,15,224,15,192,63,0,64,254,0,31,208,11,208,47,0,1,254,0,127,192,11,208,20,3,255,252,0,47,0,5,0,0,2,255,248,0,4,0,0,0,0,1,255,208,0, + // 0x9a45 驅 + 69,154,34,34,50,36,1,252,10,170,170,160,170,170,170,170,64,15,255,255,241,255,255,255,255,192,15,255,255,241,255,255,255,255,192,15,130,240,1,244,0,0,0,0,15,130,240,1,244,0,0,0,0,15,130,240,1,244,31,255,248,0,15,255,255,209,244,31,255,248,0,15,255,255,209,244,31,0,248,0,15,235,250,145,244,31,0,248,0,15,130,240,1,244,31,0,248,0,15,130,240,1,244,31,0,248,0,15,235,250,145,244,31,0,248,0,15,255,255,225,244,31,255,248,0,15,255,255,225,244,31,255,248,0,15,130,240,1,244,0,0,0,0,15,130,240,1,244,0,0,0,0,15,130,240,1,245,255,211,255,128,15,255,255,245,245,255,211,255,128,15,255,255,245,245,225,211,135,128,10,170,170,245,245,209,211,131,128,0,0,1,245,245,209,211,131,128,4,0,33,245,245,209,211,131,128,30,171,57,245,245,209,211,131,128,30,179,109,245,245,209,211,131,128,45,179,143,241,245,255,211,255,128,45,179,207,241,245,255,211,255,128,60,114,194,241,244,0,0,0,0,60,113,194,241,244,0,0,0,0,124,112,3,241,250,170,170,170,144,180,0,3,241,255,255,255,255,224,16,1,91,225,255,255,255,255,224,0,0,255,193,244,0,0,0,0,0,0,255,65,244,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9ad4 體 + 212,154,33,35,59,36,2,252,0,0,0,0,0,244,124,0,0,5,85,85,64,0,244,124,0,0,15,255,255,192,0,244,124,0,0,15,255,255,192,255,255,255,253,0,15,128,15,192,255,255,255,253,0,15,128,15,192,248,184,184,125,0,15,139,255,192,244,180,116,125,0,15,139,255,192,244,180,120,125,0,15,139,15,192,255,255,255,253,0,15,139,15,192,255,255,255,253,0,15,139,15,192,244,180,116,125,0,95,223,95,212,244,180,116,125,0,255,255,255,252,255,255,255,253,0,255,255,255,252,255,255,255,253,0,248,0,0,188,0,0,0,0,0,248,0,0,188,0,0,0,0,0,255,255,255,255,255,255,255,255,64,11,255,255,131,255,255,255,255,64,11,213,111,129,85,85,85,85,0,11,192,15,128,0,0,0,0,0,11,213,95,128,127,255,255,248,0,11,255,255,128,127,255,255,248,0,11,255,255,128,124,0,0,248,0,11,192,15,128,124,0,0,248,0,11,192,15,128,125,0,0,248,0,11,255,255,128,127,255,255,248,0,11,255,255,128,127,255,255,248,0,11,213,95,128,7,128,15,128,0,11,192,15,128,11,192,15,128,0,11,192,15,128,7,224,47,0,0,11,192,15,128,3,240,62,0,0,11,193,175,139,255,255,255,255,128,11,194,255,75,255,255,255,255,128,11,193,254,5,85,85,85,85,64,0,0,0,0,0,0,0,0,0, + // 0x9ad8 高 + 216,154,32,35,24,36,2,252,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,208,0,0,0,191,255,255,255,255,255,255,253,191,255,255,255,255,255,255,253,191,255,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,255,255,255,224,0,0,11,255,255,255,255,224,0,0,11,229,85,85,95,224,0,0,11,224,0,0,11,224,0,0,11,224,0,0,11,224,0,0,11,229,85,85,95,224,0,0,11,255,255,255,255,224,0,0,11,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,255,244,15,255,255,255,255,255,255,244,15,255,255,255,255,255,255,244,15,192,0,0,0,0,3,244,15,192,21,85,85,84,3,244,15,192,63,255,255,252,3,244,15,192,63,255,255,252,3,244,15,192,63,0,0,252,3,244,15,192,63,0,0,252,3,244,15,192,63,0,0,252,3,244,15,192,63,85,85,252,3,244,15,192,63,255,255,252,3,244,15,192,63,255,255,252,7,244,15,192,63,0,0,15,255,240,15,192,42,0,0,11,255,240,15,192,0,0,0,7,255,128,0,0,0,0,0,0,0,0, + // 0x9ec3 黃 + 195,158,32,35,24,36,2,252,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,10,170,255,170,170,191,170,164,31,255,255,255,255,255,255,248,31,255,255,255,255,255,255,248,0,0,253,0,0,127,0,0,0,0,253,0,0,127,0,0,0,0,254,85,85,191,0,0,0,0,255,255,255,255,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,254,85,95,229,85,127,64,0,252,0,15,224,0,63,64,0,253,0,15,224,0,127,64,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,252,0,15,224,0,63,64,0,252,0,15,224,0,63,64,0,254,85,95,229,85,127,64,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,0,189,0,0,190,64,0,0,11,255,64,1,255,249,0,2,255,253,0,0,111,255,224,191,255,144,0,0,1,191,254,191,248,0,0,0,0,11,254,46,0,0,0,0,0,0,116,0,0,0,0,0,0,0,0, + // 0x9ede 點 + 222,158,34,34,50,36,1,253,0,0,0,0,0,3,240,0,0,15,255,255,255,64,3,240,0,0,15,255,255,255,64,3,240,0,0,15,149,245,111,64,3,240,0,0,15,64,240,31,64,3,240,0,0,15,180,241,255,64,3,240,0,0,15,120,242,239,64,3,240,0,0,15,124,243,223,64,3,244,0,0,15,108,243,95,64,3,255,255,224,15,93,247,31,64,3,255,255,224,15,68,246,31,64,3,255,255,224,15,64,240,31,64,3,240,0,0,15,255,255,255,64,3,240,0,0,15,255,255,255,64,3,240,0,0,5,86,249,85,0,3,240,0,0,0,2,244,0,0,3,240,0,0,10,171,250,170,0,3,240,0,0,31,255,255,255,79,255,255,255,0,31,255,255,255,79,255,255,255,0,0,2,244,0,15,255,255,255,0,0,2,244,0,15,192,0,63,0,0,2,249,90,143,192,0,63,0,63,255,255,255,207,192,0,63,0,63,255,255,255,207,192,0,63,0,63,234,149,84,15,192,0,63,0,0,0,4,60,15,192,0,63,0,6,31,46,62,15,192,0,63,0,11,207,31,31,79,192,0,63,0,15,143,79,11,207,192,0,63,0,15,79,75,71,223,255,255,255,0,47,11,139,131,143,255,255,255,0,63,11,134,64,15,255,255,255,0,189,5,0,0,15,192,0,63,0,40,0,0,0,15,192,0,42,0, + // 0x9f4a 齊 + 74,159,34,35,59,36,1,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,128,63,255,255,255,255,255,255,255,128,42,170,170,170,171,234,170,170,64,0,0,0,36,3,224,0,16,0,0,0,0,188,7,224,6,248,0,31,255,255,255,15,218,255,253,0,31,255,255,159,95,95,255,208,0,5,189,95,142,81,31,155,192,0,0,252,15,131,240,31,67,224,0,0,248,15,67,240,31,66,240,0,2,244,31,67,240,31,64,252,0,7,240,47,3,240,31,150,254,0,47,203,255,3,240,255,255,127,192,127,71,253,3,240,255,255,31,208,44,1,80,2,160,165,0,3,128,0,10,144,0,0,0,42,64,0,0,15,208,0,0,0,63,64,0,0,15,250,170,170,170,191,64,0,0,15,255,255,255,255,255,64,0,0,15,255,255,255,255,255,64,0,0,15,208,0,0,0,63,64,0,0,15,208,0,0,0,63,64,0,0,31,234,170,170,170,191,64,0,0,47,255,255,255,255,255,64,0,0,63,255,255,255,255,255,64,0,0,191,64,0,0,0,63,64,0,1,255,0,0,0,0,63,64,0,7,253,0,0,0,0,63,64,0,31,248,0,0,0,0,63,64,0,15,240,0,0,0,0,63,64,0,3,128,0,0,0,0,63,64,0,0,0,0,0,0,0,0,0,0, + // 0xff1a : + 26,255,6,24,48,36,15,2,47,128,191,224,255,240,255,240,191,224,47,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,128,191,224,255,240,255,240,191,224,47,128, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Vietnamese_26.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Vietnamese_26.cpp new file mode 100644 index 0000000000..d291f24576 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_26px/NotoSans_Medium_Vietnamese_26.cpp @@ -0,0 +1,246 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Vietnamese 36pt, capital 'A' height: 26px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 +extern const uint8_t NotoSans_Medium_Vietnamese_26[18855] = { + 162,26,2,1,249,30,34,247, // unifont_t + // 0x0102 Ă + 2,1,24,33,198,24,0,0,0,15,0,2,224,0,0,15,128,7,208,0,0,11,255,255,192,0,0,3,255,255,0,0,0,0,191,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x0103 ă + 3,1,17,28,140,21,1,255,2,224,0,60,0,1,244,0,188,0,0,255,255,248,0,0,127,255,224,0,0,11,255,64,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x0110 Đ + 16,1,23,26,156,26,1,0,6,170,170,144,0,0,7,255,255,255,128,0,7,255,255,255,244,0,7,254,170,255,254,0,7,244,0,7,255,128,7,244,0,0,191,208,7,244,0,0,47,240,7,244,0,0,15,244,7,244,0,0,11,248,7,244,0,0,7,252,7,244,0,0,3,252,91,249,85,0,3,252,255,255,255,64,3,252,255,255,255,64,3,252,255,255,255,0,3,252,7,244,0,0,3,252,7,244,0,0,7,252,7,244,0,0,11,248,7,244,0,0,15,244,7,244,0,0,47,240,7,244,0,0,191,208,7,244,0,7,255,128,7,249,85,191,254,0,7,255,255,255,248,0,7,255,255,255,128,0,7,255,255,228,0,0, + // 0x0111 đ + 17,1,20,29,145,23,2,255,0,0,0,5,64,0,0,0,31,208,0,0,0,31,208,0,1,85,111,229,0,11,255,255,255,0,11,255,255,255,0,1,85,111,229,0,0,0,31,208,0,5,64,31,208,0,191,253,31,208,7,255,255,159,208,31,255,255,255,208,63,240,2,255,208,127,192,0,127,208,191,128,0,63,208,255,0,0,47,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,31,208,255,0,0,47,208,191,64,0,63,208,127,192,0,127,208,63,240,1,255,208,31,255,255,239,208,7,255,255,143,208,0,191,253,15,208,0,5,64,0,0, + // 0x0128 Ĩ + 40,1,14,33,132,13,255,0,1,160,0,160,15,254,1,240,47,255,251,224,62,31,255,192,124,1,255,0,0,0,0,0,0,0,0,0,6,170,170,0,11,255,255,64,7,255,255,0,0,47,224,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,0,47,208,0,2,255,253,0,11,255,255,64,11,255,255,64, + // 0x0129 ĩ + 41,1,14,27,108,10,254,0,2,144,1,144,31,253,3,208,63,255,239,192,189,47,255,128,244,2,254,0,0,0,0,0,0,0,0,0,0,21,64,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0, + // 0x0168 Ũ + 104,1,21,34,204,27,3,255,0,6,128,2,128,0,0,63,248,7,192,0,0,191,255,239,128,0,0,248,127,255,0,0,1,240,7,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,255,0,63,224,0,3,253,0,15,253,0,47,248,0,7,255,255,255,240,0,1,255,255,255,128,0,0,47,255,249,0,0,0,0,21,0,0,0, + // 0x0169 ũ + 105,1,17,28,140,23,3,255,0,104,0,40,0,3,255,128,124,0,11,255,254,248,0,15,135,255,240,0,31,0,127,192,0,0,0,0,0,0,0,0,0,0,0,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,31,128,0,21,0,0,0, + // 0x01a0 Ơ + 160,1,28,29,203,29,2,255,0,0,0,0,0,1,84,0,0,0,0,0,3,253,0,1,191,254,64,3,252,0,31,255,255,248,3,252,0,255,255,255,255,11,244,3,255,229,91,255,239,240,11,254,0,0,127,255,192,15,248,0,0,15,253,0,47,240,0,0,11,252,0,63,208,0,0,3,253,0,127,192,0,0,2,254,0,191,128,0,0,1,255,0,191,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,191,64,0,0,0,255,0,191,128,0,0,1,255,0,127,192,0,0,2,254,0,63,192,0,0,3,253,0,63,224,0,0,7,252,0,31,244,0,0,15,248,0,15,253,0,0,63,240,0,3,255,144,2,255,208,0,0,255,255,255,255,64,0,0,47,255,255,252,0,0,0,6,255,255,144,0,0,0,0,5,80,0,0,0, + // 0x01a1 ơ + 161,1,22,24,144,23,2,255,0,0,0,0,5,80,0,0,0,0,15,240,0,0,0,0,31,224,0,6,169,0,31,208,0,191,255,224,63,192,7,255,255,253,255,64,15,254,91,255,253,0,63,224,0,191,224,0,127,192,0,63,192,0,191,64,0,31,208,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,224,0,127,128,0,47,208,0,63,192,0,63,192,0,31,244,1,255,128,0,11,255,255,255,0,0,2,255,255,248,0,0,0,111,255,144,0,0,0,1,80,0,0,0, + // 0x01af Ư + 175,1,27,29,203,29,3,255,0,0,0,0,0,1,84,0,0,0,0,0,3,252,170,0,0,0,106,67,252,255,0,0,0,127,71,248,255,0,0,0,127,75,240,255,0,0,0,127,175,208,255,0,0,0,127,255,128,255,0,0,0,127,249,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,191,64,0,191,64,0,0,191,0,0,127,128,0,0,255,0,0,63,192,0,1,255,0,0,63,224,0,3,253,0,0,15,253,0,47,252,0,0,7,255,255,255,240,0,0,1,255,255,255,192,0,0,0,31,255,253,0,0,0,0,0,21,0,0,0,0, + // 0x01b0 ư + 176,1,24,24,144,25,3,255,0,0,0,0,1,84,0,0,0,0,2,253,0,0,0,0,3,252,84,0,0,21,67,252,254,0,0,63,135,244,254,0,0,63,239,240,254,0,0,63,255,192,254,0,0,63,253,0,254,0,0,63,192,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,127,128,0,254,0,0,127,128,0,255,0,0,255,128,0,255,64,1,255,128,0,191,192,7,255,128,0,63,255,255,255,128,0,31,255,255,47,128,0,7,255,248,31,128,0,0,21,0,0,0,0, + // 0x0303 ̃ + 3,3,14,6,24,0,238,21,2,144,1,144,31,253,3,208,63,255,239,192,189,47,255,128,244,2,254,0,0,0,0,0, + // 0x0309 ̉ + 9,3,8,9,18,0,242,21,106,64,191,244,107,252,0,253,0,252,7,248,31,224,15,64,10,0, + // 0x0323 ̣ + 35,3,4,5,5,0,243,249,40,255,255,255,40, + // 0x0340 ̀ + 64,3,8,7,14,0,250,21,170,0,191,128,63,208,15,240,2,252,0,190,0,0, + // 0x0341 ́ + 65,3,8,7,14,0,254,21,0,170,2,254,7,252,15,240,63,128,190,0,0,0, + // 0x1ea0 Ạ + 160,30,24,33,198,24,0,249,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,128,0,0,0,0,15,240,0,0,0,0,31,240,0,0,0,0,15,240,0,0,0,0,6,128,0,0, + // 0x1ea1 ạ + 161,30,17,27,135,21,1,249,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0,0,0,0,0,0,0,0,164,0,0,0,2,252,0,0,0,3,253,0,0,0,2,252,0,0,0,0,164,0,0, + // 0x1ea2 Ả + 162,30,24,36,216,24,0,0,0,0,42,128,0,0,0,0,127,248,0,0,0,0,106,253,0,0,0,0,0,190,0,0,0,0,0,189,0,0,0,0,6,252,0,0,0,0,15,224,0,0,0,0,15,128,0,0,0,0,10,64,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x1ea3 ả + 163,30,17,31,155,21,1,255,0,6,164,0,0,0,15,255,64,0,0,10,191,192,0,0,0,15,192,0,0,0,15,192,0,0,0,127,128,0,0,1,253,0,0,0,1,240,0,0,0,0,160,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x1ea4 Ấ + 164,30,24,35,210,24,0,0,0,0,0,0,15,224,0,0,0,0,47,128,0,0,47,240,126,0,0,0,127,252,184,0,0,0,254,254,0,0,0,3,244,63,64,0,0,15,192,11,208,0,0,5,0,0,64,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x1ea5 ấ + 165,30,19,30,150,21,1,255,0,0,0,1,252,0,0,0,3,240,0,3,254,15,192,0,15,255,94,0,0,47,239,192,0,0,126,7,240,0,1,244,0,252,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x1ea6 Ầ + 166,30,24,35,210,24,0,0,15,208,0,0,0,0,3,240,0,0,0,0,1,248,47,240,0,0,0,61,127,248,0,0,0,0,254,254,0,0,0,3,244,63,64,0,0,15,192,11,208,0,0,4,0,0,64,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x1ea7 ầ + 167,30,18,30,150,21,0,255,127,0,0,0,0,47,128,0,0,0,11,208,255,128,0,1,227,255,208,0,0,11,251,240,0,0,31,193,252,0,0,62,0,63,0,0,0,0,0,0,0,0,0,0,0,0,1,170,144,0,0,127,255,253,0,0,255,255,255,128,0,190,85,255,192,0,16,0,47,208,0,0,0,15,224,0,0,0,15,240,0,0,0,15,240,0,1,170,255,240,0,127,255,255,240,2,255,255,175,240,11,253,0,15,240,15,240,0,15,240,31,224,0,15,240,31,224,0,31,240,31,224,0,63,240,15,244,0,255,240,11,255,175,251,240,3,255,255,199,240,0,191,254,3,240,0,5,64,0,0, + // 0x1ea8 Ẩ + 168,30,24,38,228,24,0,0,0,0,0,0,80,0,0,0,0,1,254,0,0,0,0,0,95,64,0,0,0,0,11,128,0,0,0,0,47,0,0,0,47,240,184,0,0,0,127,248,116,0,0,1,254,253,0,0,0,3,244,63,64,0,0,15,192,11,192,0,0,4,0,0,64,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x1ea9 ẩ + 169,30,19,33,165,21,1,255,0,0,0,5,0,0,0,0,47,224,0,0,0,21,240,0,0,0,0,244,0,0,0,6,240,0,3,254,15,64,0,11,255,75,0,0,47,223,192,0,0,127,7,240,0,0,248,0,252,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x1eaa Ẫ + 170,30,24,38,228,24,0,0,0,0,168,0,208,0,0,3,255,146,208,0,0,11,239,255,192,0,0,15,1,255,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,63,248,0,0,0,0,254,253,0,0,0,3,244,63,64,0,0,11,192,11,208,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x1eab ẫ + 171,30,17,33,165,21,1,255,0,31,128,44,0,0,191,249,124,0,0,250,255,244,0,1,208,31,224,0,0,0,0,0,0,0,2,253,0,0,0,11,255,0,0,0,31,239,192,0,0,127,7,240,0,1,244,0,252,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x1eac Ậ + 172,30,24,41,246,24,0,249,0,0,26,160,0,0,0,0,63,248,0,0,0,0,255,253,0,0,0,2,253,191,0,0,0,11,240,47,192,0,0,31,128,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,128,0,0,0,0,15,240,0,0,0,0,31,240,0,0,0,0,15,240,0,0,0,0,6,128,0,0, + // 0x1ead ậ + 173,30,17,35,175,21,1,249,0,2,169,0,0,0,7,255,0,0,0,15,255,192,0,0,63,143,240,0,0,254,3,248,0,3,244,0,190,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0,0,0,0,0,0,0,0,160,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,0,160,0,0, + // 0x1eae Ắ + 174,30,24,37,222,24,0,0,0,0,0,21,0,0,0,0,0,254,0,0,0,0,1,248,0,0,0,0,3,224,0,0,0,11,70,66,208,0,0,11,192,7,192,0,0,3,245,111,192,0,0,2,255,255,0,0,0,0,127,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x1eaf ắ + 175,30,17,32,160,21,1,255,0,0,5,64,0,0,0,31,192,0,0,0,63,0,0,0,0,188,0,0,0,240,160,120,0,0,244,0,248,0,0,190,91,240,0,0,63,255,224,0,0,11,255,64,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x1eb0 Ằ + 176,30,24,37,222,24,0,0,0,0,84,0,0,0,0,0,252,0,0,0,0,0,127,0,0,0,0,0,31,64,0,0,0,11,66,130,208,0,0,11,128,7,192,0,0,7,245,111,128,0,0,2,255,255,0,0,0,0,191,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x1eb1 ằ + 177,30,17,32,160,21,1,255,0,21,0,0,0,0,47,128,0,0,0,11,208,0,0,0,2,240,0,0,1,240,100,120,0,0,244,0,248,0,0,254,91,240,0,0,63,255,224,0,0,11,255,64,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x1eb2 Ẳ + 178,30,24,38,228,24,0,0,0,0,9,64,0,0,0,0,47,240,0,0,0,0,0,244,0,0,0,0,0,240,0,0,0,0,7,224,0,0,0,11,71,66,208,0,0,11,128,7,192,0,0,7,245,111,128,0,0,2,255,255,0,0,0,0,191,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x1eb3 ẳ + 179,30,17,33,165,21,1,255,0,1,160,0,0,0,3,253,0,0,0,0,31,0,0,0,0,31,0,0,0,0,252,0,0,0,240,160,124,0,0,244,0,184,0,0,190,91,244,0,0,63,255,224,0,0,11,255,64,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x1eb4 Ẵ + 180,30,24,38,228,24,0,0,0,0,168,0,144,0,0,3,255,146,208,0,0,11,239,255,192,0,0,15,1,191,64,0,0,0,0,0,0,0,0,10,0,2,128,0,0,11,128,3,192,0,0,7,229,111,192,0,0,3,255,255,0,0,0,0,191,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253, + // 0x1eb5 ẵ + 181,30,17,33,165,21,1,255,0,26,64,28,0,0,127,248,124,0,0,250,255,248,0,1,224,31,224,0,0,0,0,0,0,0,160,0,40,0,0,240,0,184,0,0,254,87,244,0,0,63,255,224,0,0,11,255,64,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0, + // 0x1eb6 Ặ + 182,30,24,40,240,24,0,249,0,15,64,2,240,0,0,15,128,7,224,0,0,7,255,255,192,0,0,2,255,255,64,0,0,0,127,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,0,0,0,0,47,244,0,0,0,0,63,248,0,0,0,0,191,252,0,0,0,0,254,253,0,0,0,1,253,255,0,0,0,2,252,127,0,0,0,3,248,63,128,0,0,7,244,63,192,0,0,15,240,31,208,0,0,15,224,15,224,0,0,47,192,11,240,0,0,63,192,7,244,0,0,127,128,3,252,0,0,191,0,2,252,0,0,255,255,255,254,0,1,255,255,255,255,0,3,255,255,255,255,64,3,254,170,170,191,128,11,244,0,0,63,192,15,240,0,0,47,208,31,224,0,0,15,240,47,208,0,0,15,240,63,192,0,0,7,248,127,128,0,0,3,252,255,0,0,0,2,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,128,0,0,0,0,15,240,0,0,0,0,31,240,0,0,0,0,15,240,0,0,0,0,6,128,0,0, + // 0x1eb7 ặ + 183,30,17,34,170,21,1,249,1,240,0,61,0,0,244,0,188,0,0,255,255,248,0,0,63,255,240,0,0,11,255,128,0,0,0,0,0,0,0,0,0,0,0,0,6,170,64,0,1,255,255,244,0,3,255,255,254,0,2,249,87,255,0,0,64,0,191,64,0,0,0,63,128,0,0,0,63,192,0,0,0,63,192,0,6,171,255,192,1,255,255,255,192,11,255,254,191,192,47,244,0,63,192,63,192,0,63,192,127,128,0,63,192,127,128,0,127,192,127,128,0,255,192,63,208,3,255,192,47,254,191,239,192,15,255,255,31,192,2,255,248,15,192,0,21,0,0,0,0,0,0,0,0,0,1,160,0,0,0,7,248,0,0,0,7,252,0,0,0,7,248,0,0,0,1,160,0,0, + // 0x1eb8 Ẹ + 184,30,15,33,132,20,3,249,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252,0,0,0,0,0,0,0,0,0,6,128,0,0,15,224,0,0,31,240,0,0,15,224,0,0,6,128,0, + // 0x1eb9 ẹ + 185,30,17,27,135,21,2,249,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0,0,0,0,0,0,0,1,160,0,0,0,3,248,0,0,0,7,252,0,0,0,3,248,0,0,0,1,160,0,0, + // 0x1eba Ẻ + 186,30,15,36,144,20,3,0,0,42,144,0,0,63,252,0,0,42,254,0,0,0,126,0,0,0,126,0,0,6,252,0,0,15,240,0,0,11,192,0,0,6,128,0,0,0,0,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x1ebb ẻ + 187,30,17,31,155,21,2,255,0,6,164,0,0,0,15,255,0,0,0,10,191,128,0,0,0,15,192,0,0,0,15,192,0,0,0,191,64,0,0,2,253,0,0,0,2,240,0,0,0,1,160,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x1ebc Ẽ + 188,30,15,33,132,20,3,0,0,164,0,100,7,255,64,244,15,255,251,240,47,75,255,224,61,0,191,128,0,0,0,0,0,0,0,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x1ebd ẽ + 189,30,17,28,140,21,2,255,0,104,0,40,0,3,255,128,124,0,11,255,254,248,0,15,135,255,240,0,31,0,127,192,0,0,0,0,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x1ebe Ế + 190,30,18,35,175,20,3,0,0,0,0,15,224,0,0,0,47,128,0,47,240,126,0,0,127,248,244,0,0,254,253,0,0,3,244,63,64,0,15,192,11,192,0,4,0,0,64,0,0,0,0,0,0,106,170,170,168,0,191,255,255,252,0,191,255,255,252,0,191,170,170,168,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,255,255,244,0,191,255,255,244,0,191,255,255,244,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,149,85,84,0,191,255,255,252,0,191,255,255,252,0,191,255,255,252,0, + // 0x1ebf ế + 191,30,19,30,150,21,2,255,0,0,0,3,244,0,0,0,15,208,0,11,252,31,64,0,47,254,45,0,0,127,127,64,0,0,252,15,208,0,3,224,2,240,0,0,0,0,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x1ec0 Ề + 192,30,17,35,175,20,1,0,254,0,0,0,0,63,0,0,0,0,15,193,255,0,0,3,215,255,192,0,0,15,239,224,0,0,63,66,244,0,0,188,0,189,0,0,80,0,4,0,0,0,0,0,0,6,170,170,170,128,11,255,255,255,192,11,255,255,255,192,11,250,170,170,128,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,255,255,255,64,11,255,255,255,64,11,255,255,255,64,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,249,85,85,64,11,255,255,255,192,11,255,255,255,192,11,255,255,255,192, + // 0x1ec1 ề + 193,30,18,30,150,21,1,255,253,0,0,0,0,63,0,0,0,0,15,130,255,0,0,2,199,255,192,0,0,15,239,224,0,0,63,66,244,0,0,252,0,189,0,0,0,0,0,0,0,0,0,0,0,0,2,170,64,0,0,63,255,244,0,1,255,255,253,0,3,254,70,255,64,15,244,0,63,192,31,224,0,47,208,47,192,0,15,224,63,192,0,15,224,63,234,170,175,240,63,255,255,255,240,63,255,255,255,240,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,47,224,0,0,0,15,244,0,0,0,11,253,0,6,192,3,255,255,255,192,0,191,255,255,192,0,27,255,254,0,0,0,21,64,0, + // 0x1ec2 Ể + 194,30,17,38,190,20,3,0,0,0,0,80,0,0,0,1,254,0,0,0,0,95,64,0,0,0,11,128,0,0,0,47,0,0,47,240,184,0,0,127,248,116,0,0,254,253,0,0,3,244,63,64,0,15,192,11,192,0,4,0,0,64,0,0,0,0,0,0,106,170,170,168,0,191,255,255,252,0,191,255,255,252,0,191,170,170,168,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,255,255,244,0,191,255,255,244,0,191,255,255,244,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,149,85,84,0,191,255,255,252,0,191,255,255,252,0,191,255,255,252,0, + // 0x1ec3 ể + 195,30,18,33,165,21,2,255,0,0,0,20,0,0,0,0,191,128,0,0,0,23,208,0,0,0,3,208,0,0,0,27,192,0,15,252,46,0,0,47,254,44,0,0,127,127,64,0,1,252,15,192,0,3,224,2,240,0,0,0,0,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x1ec4 Ễ + 196,30,15,38,152,20,3,0,0,168,1,208,3,255,147,208,11,239,255,192,15,1,255,0,0,0,0,0,0,31,224,0,0,63,248,0,0,254,253,0,3,244,63,64,15,192,11,192,4,0,0,64,0,0,0,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252, + // 0x1ec5 ễ + 197,30,17,33,165,21,2,255,0,110,0,116,0,1,255,229,240,0,3,235,255,224,0,3,128,127,128,0,0,0,0,0,0,0,11,248,0,0,0,31,253,0,0,0,63,191,64,0,0,252,15,192,0,3,224,2,240,0,0,0,0,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0, + // 0x1ec6 Ệ + 198,30,15,41,164,20,3,249,0,10,160,0,0,63,252,0,0,191,254,0,1,253,127,64,7,244,31,208,31,192,3,244,0,0,0,0,0,0,0,0,106,170,170,168,191,255,255,252,191,255,255,252,191,170,170,168,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,255,255,244,191,255,255,244,191,255,255,244,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,149,85,84,191,255,255,252,191,255,255,252,191,255,255,252,0,0,0,0,0,0,0,0,0,6,128,0,0,15,224,0,0,31,240,0,0,15,224,0,0,6,128,0, + // 0x1ec7 ệ + 199,30,17,35,175,21,2,249,0,6,164,0,0,0,31,252,0,0,0,63,255,0,0,0,255,63,192,0,3,248,15,224,0,15,208,2,248,0,0,0,0,0,0,0,0,0,0,0,0,10,169,0,0,0,255,255,208,0,7,255,255,244,0,15,249,27,253,0,63,208,0,255,0,127,128,0,191,64,191,0,0,63,128,255,0,0,63,128,255,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,191,128,0,0,0,63,208,0,0,0,47,244,0,27,0,15,255,255,255,0,2,255,255,255,0,0,111,255,248,0,0,0,85,0,0,0,0,0,0,0,0,1,160,0,0,0,3,248,0,0,0,7,252,0,0,0,3,248,0,0,0,1,160,0,0, + // 0x1ec8 Ỉ + 200,30,11,36,108,13,1,0,2,164,0,7,255,128,6,191,208,0,11,224,0,11,208,0,111,192,0,254,0,0,248,0,0,180,0,0,0,0,106,170,160,191,255,244,127,255,240,2,254,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,47,255,208,191,255,244,191,255,244, + // 0x1ec9 ỉ + 201,30,7,30,60,10,2,0,106,64,255,240,171,252,0,252,0,252,7,248,31,208,31,0,10,0,0,0,21,64,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192, + // 0x1eca Ị + 202,30,11,33,99,13,1,249,106,170,160,191,255,244,127,255,240,2,254,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,2,253,0,47,255,208,191,255,244,191,255,244,0,0,0,0,0,0,0,164,0,2,253,0,3,253,0,2,253,0,0,164,0, + // 0x1ecb ị + 203,30,4,34,34,10,3,249,104,255,255,255,40,0,0,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,40,255,255,255,40, + // 0x1ecc Ọ + 204,30,24,33,198,28,2,249,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0,0,0,0,0,0,0,0,0,2,144,0,0,0,0,15,240,0,0,0,0,15,244,0,0,0,0,15,240,0,0,0,0,2,144,0,0, + // 0x1ecd ọ + 205,30,18,27,135,22,2,249,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0,0,0,0,0,0,0,1,160,0,0,0,3,252,0,0,0,7,252,0,0,0,3,252,0,0,0,1,160,0,0, + // 0x1ece Ỏ + 206,30,24,37,222,28,2,255,0,0,10,144,0,0,0,0,47,253,0,0,0,0,42,255,0,0,0,0,0,63,64,0,0,0,0,63,0,0,0,0,1,191,0,0,0,0,7,248,0,0,0,0,3,208,0,0,0,0,3,192,0,0,0,0,0,0,0,0,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x1ecf ỏ + 207,30,18,31,155,22,2,255,0,6,164,0,0,0,15,255,64,0,0,10,191,192,0,0,0,15,192,0,0,0,15,192,0,0,0,127,128,0,0,1,253,0,0,0,1,240,0,0,0,0,160,0,0,0,0,0,0,0,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x1ed0 Ố + 208,30,24,36,216,28,2,255,0,0,0,0,11,240,0,0,0,0,15,192,0,0,15,244,63,0,0,0,63,252,120,0,0,0,191,191,0,0,0,2,248,47,128,0,0,7,208,7,224,0,0,1,0,0,64,0,0,0,0,0,0,0,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x1ed1 ố + 209,30,19,30,150,22,2,255,0,0,0,3,248,0,0,0,7,224,0,7,253,15,128,0,15,255,46,0,0,63,191,128,0,0,253,11,224,0,2,240,1,244,0,0,0,0,0,0,0,0,0,0,0,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x1ed2 Ồ + 210,30,24,36,216,28,2,255,11,240,0,0,0,0,2,244,0,0,0,0,0,188,15,244,0,0,0,46,63,252,0,0,0,0,191,191,0,0,0,2,248,31,192,0,0,7,208,7,224,0,0,1,0,0,64,0,0,0,0,0,0,0,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x1ed3 ồ + 211,30,19,30,150,22,1,255,254,0,0,0,0,63,64,0,0,0,15,193,255,64,0,2,211,255,192,0,0,15,235,240,0,0,47,66,248,0,0,189,0,126,0,0,0,0,0,0,0,0,0,0,0,0,1,170,64,0,0,47,255,248,0,1,255,255,255,0,3,255,150,255,192,15,248,0,47,224,31,240,0,15,240,47,208,0,7,248,63,192,0,3,252,63,192,0,3,252,63,192,0,3,252,63,192,0,3,252,63,192,0,3,252,63,192,0,3,252,63,192,0,7,248,31,224,0,11,244,15,240,0,15,240,7,253,0,127,224,2,255,255,255,192,0,191,255,254,0,0,27,255,228,0,0,0,84,0,0, + // 0x1ed4 Ổ + 212,30,24,39,234,28,2,255,0,0,0,0,16,0,0,0,0,0,255,64,0,0,0,0,91,192,0,0,0,0,3,192,0,0,0,0,31,128,0,0,31,244,61,0,0,0,63,252,56,0,0,0,255,191,0,0,0,2,248,47,128,0,0,7,208,7,224,0,0,1,0,0,64,0,0,0,0,0,0,0,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x1ed5 ổ + 213,30,18,33,165,22,2,255,0,0,0,20,0,0,0,0,63,192,0,0,0,22,224,0,0,0,1,240,0,0,0,11,208,0,7,253,31,0,0,15,255,13,0,0,63,191,128,0,0,253,11,224,0,2,240,1,244,0,0,0,0,0,0,0,0,0,0,0,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x1ed6 Ỗ + 214,30,24,39,234,28,2,255,0,0,105,0,176,0,0,2,255,209,224,0,0,7,235,255,208,0,0,11,64,191,64,0,0,0,0,0,0,0,0,0,11,240,0,0,0,0,47,252,0,0,0,0,191,190,0,0,0,1,248,47,128,0,0,7,208,7,224,0,0,1,0,0,64,0,0,0,0,0,0,0,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0, + // 0x1ed7 ỗ + 215,30,18,33,165,22,2,255,0,46,64,56,0,0,255,244,184,0,1,250,255,240,0,2,192,47,208,0,0,0,0,0,0,0,3,252,0,0,0,15,255,0,0,0,47,191,128,0,0,190,11,224,0,2,244,1,244,0,0,0,0,0,0,0,0,0,0,0,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0, + // 0x1ed8 Ộ + 216,30,24,41,246,28,2,249,0,0,10,164,0,0,0,0,47,252,0,0,0,0,127,254,0,0,0,1,254,127,128,0,0,3,244,15,224,0,0,15,208,2,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,254,64,0,0,31,255,255,248,0,0,191,255,255,255,0,3,255,229,91,255,192,11,254,0,0,127,240,15,248,0,0,15,244,47,240,0,0,11,252,63,208,0,0,3,253,127,192,0,0,2,254,191,128,0,0,1,255,191,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,255,64,0,0,0,255,191,64,0,0,0,255,191,128,0,0,1,255,127,192,0,0,2,254,63,192,0,0,3,253,63,224,0,0,7,252,31,244,0,0,15,248,15,253,0,0,63,240,3,255,144,6,255,208,0,255,255,255,255,64,0,47,255,255,252,0,0,6,255,255,144,0,0,0,5,80,0,0,0,0,0,0,0,0,0,0,2,144,0,0,0,0,15,240,0,0,0,0,15,244,0,0,0,0,15,240,0,0,0,0,2,144,0,0, + // 0x1ed9 ộ + 217,30,18,35,175,22,2,249,0,2,168,0,0,0,15,255,0,0,0,47,255,128,0,0,127,95,208,0,1,253,7,244,0,7,240,0,253,0,0,0,0,0,0,0,0,0,0,0,0,6,169,0,0,0,191,255,224,0,7,255,255,252,0,15,254,91,255,0,63,224,0,191,128,127,192,0,63,192,191,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,127,128,0,47,208,63,192,0,63,192,31,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,111,255,144,0,0,1,80,0,0,0,0,0,0,0,0,1,160,0,0,0,3,252,0,0,0,7,252,0,0,0,3,252,0,0,0,1,160,0,0, + // 0x1eda Ớ + 218,30,28,35,245,29,2,255,0,0,0,42,144,0,0,0,0,0,127,192,0,0,0,0,0,255,64,0,0,0,0,2,253,0,0,0,0,0,7,240,0,0,0,0,0,15,192,0,0,0,0,0,0,0,0,1,84,0,0,0,0,0,3,253,0,1,191,254,64,3,252,0,31,255,255,248,3,252,0,255,255,255,255,11,244,3,255,229,91,255,239,240,11,254,0,0,127,255,192,15,248,0,0,15,253,0,47,240,0,0,11,252,0,63,208,0,0,3,253,0,127,192,0,0,2,254,0,191,128,0,0,1,255,0,191,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,191,64,0,0,0,255,0,191,128,0,0,1,255,0,127,192,0,0,2,254,0,63,192,0,0,3,253,0,63,224,0,0,7,252,0,31,244,0,0,15,248,0,15,253,0,0,63,240,0,3,255,144,2,255,208,0,0,255,255,255,255,64,0,0,47,255,255,252,0,0,0,6,255,255,144,0,0,0,0,5,80,0,0,0, + // 0x1edb ớ + 219,30,22,29,174,23,2,255,0,0,10,164,0,0,0,0,47,240,0,0,0,0,63,192,0,0,0,0,255,0,0,0,0,2,252,0,0,0,0,7,240,0,5,80,0,0,0,0,15,240,0,0,0,0,31,224,0,6,169,0,31,208,0,191,255,224,63,192,7,255,255,253,255,64,15,254,91,255,253,0,63,224,0,191,224,0,127,192,0,63,192,0,191,64,0,31,208,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,224,0,127,128,0,47,208,0,63,192,0,63,192,0,31,244,1,255,128,0,11,255,255,255,0,0,2,255,255,248,0,0,0,111,255,144,0,0,0,1,80,0,0,0, + // 0x1edc Ờ + 220,30,28,35,245,29,2,255,0,2,168,0,0,0,0,0,2,255,0,0,0,0,0,0,191,64,0,0,0,0,0,47,192,0,0,0,0,0,11,240,0,0,0,0,0,2,248,0,0,0,0,0,0,0,0,1,84,0,0,0,0,0,3,253,0,1,191,254,64,3,252,0,31,255,255,248,3,252,0,255,255,255,255,11,244,3,255,229,91,255,239,240,11,254,0,0,127,255,192,15,248,0,0,15,253,0,47,240,0,0,11,252,0,63,208,0,0,3,253,0,127,192,0,0,2,254,0,191,128,0,0,1,255,0,191,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,191,64,0,0,0,255,0,191,128,0,0,1,255,0,127,192,0,0,2,254,0,63,192,0,0,3,253,0,63,224,0,0,7,252,0,31,244,0,0,15,248,0,15,253,0,0,63,240,0,3,255,144,2,255,208,0,0,255,255,255,255,64,0,0,47,255,255,252,0,0,0,6,255,255,144,0,0,0,0,5,80,0,0,0, + // 0x1edd ờ + 221,30,22,29,174,23,2,255,0,170,0,0,0,0,0,255,128,0,0,0,0,63,208,0,0,0,0,15,240,0,0,0,0,3,248,0,0,0,0,0,189,0,5,80,0,0,0,0,15,240,0,0,0,0,31,224,0,6,169,0,31,208,0,191,255,224,63,192,7,255,255,253,255,64,15,254,91,255,253,0,63,224,0,191,224,0,127,192,0,63,192,0,191,64,0,31,208,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,224,0,127,128,0,47,208,0,63,192,0,63,192,0,31,244,1,255,128,0,11,255,255,255,0,0,2,255,255,248,0,0,0,111,255,144,0,0,0,1,80,0,0,0, + // 0x1ede Ở + 222,30,28,37,3,29,2,255,0,0,26,144,0,0,0,0,0,63,252,0,0,0,0,0,42,255,0,0,0,0,0,0,63,0,0,0,0,0,0,63,0,0,0,0,0,2,253,0,0,0,0,0,11,244,0,0,0,0,0,7,192,0,0,0,0,0,6,128,0,1,84,0,0,0,0,0,3,253,0,1,191,254,64,3,252,0,31,255,255,248,3,252,0,255,255,255,255,11,244,3,255,229,91,255,239,240,11,254,0,0,127,255,192,15,248,0,0,15,253,0,47,240,0,0,11,252,0,63,208,0,0,3,253,0,127,192,0,0,2,254,0,191,128,0,0,1,255,0,191,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,191,64,0,0,0,255,0,191,128,0,0,1,255,0,127,192,0,0,2,254,0,63,192,0,0,3,253,0,63,224,0,0,7,252,0,31,244,0,0,15,248,0,15,253,0,0,63,240,0,3,255,144,2,255,208,0,0,255,255,255,255,64,0,0,47,255,255,252,0,0,0,6,255,255,144,0,0,0,0,5,80,0,0,0, + // 0x1edf ở + 223,30,22,31,186,23,2,255,0,10,164,0,0,0,0,15,255,0,0,0,0,10,191,128,0,0,0,0,31,192,0,0,0,0,31,128,0,0,0,1,191,64,0,0,0,2,253,0,0,0,0,2,240,0,5,80,0,1,160,0,15,240,0,0,0,0,31,224,0,6,169,0,31,208,0,191,255,224,63,192,7,255,255,253,255,64,15,254,91,255,253,0,63,224,0,191,224,0,127,192,0,63,192,0,191,64,0,31,208,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,224,0,127,128,0,47,208,0,63,192,0,63,192,0,31,244,1,255,128,0,11,255,255,255,0,0,2,255,255,248,0,0,0,111,255,144,0,0,0,1,80,0,0,0, + // 0x1ee0 Ỡ + 224,30,28,34,238,29,2,255,0,0,100,0,40,0,0,0,3,255,128,184,0,0,0,15,255,251,244,0,0,0,31,71,255,240,0,0,0,46,0,127,128,0,0,0,0,0,0,0,1,84,0,0,0,0,0,3,253,0,1,191,254,64,3,252,0,31,255,255,248,3,252,0,255,255,255,255,11,244,3,255,229,91,255,239,240,11,254,0,0,127,255,192,15,248,0,0,15,253,0,47,240,0,0,11,252,0,63,208,0,0,3,253,0,127,192,0,0,2,254,0,191,128,0,0,1,255,0,191,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,191,64,0,0,0,255,0,191,128,0,0,1,255,0,127,192,0,0,2,254,0,63,192,0,0,3,253,0,63,224,0,0,7,252,0,31,244,0,0,15,248,0,15,253,0,0,63,240,0,3,255,144,2,255,208,0,0,255,255,255,255,64,0,0,47,255,255,252,0,0,0,6,255,255,144,0,0,0,0,5,80,0,0,0, + // 0x1ee1 ỡ + 225,30,22,28,168,23,2,255,0,41,0,25,0,0,1,255,208,62,0,0,3,255,254,252,0,0,11,210,255,248,0,0,15,64,47,224,5,80,0,0,0,0,15,240,0,0,0,0,31,224,0,6,169,0,31,208,0,191,255,224,63,192,7,255,255,253,255,64,15,254,91,255,253,0,63,224,0,191,224,0,127,192,0,63,192,0,191,64,0,31,208,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,224,0,127,128,0,47,208,0,63,192,0,63,192,0,31,244,1,255,128,0,11,255,255,255,0,0,2,255,255,248,0,0,0,111,255,144,0,0,0,1,80,0,0,0, + // 0x1ee2 Ợ + 226,30,28,35,245,29,2,249,0,0,0,0,0,1,84,0,0,0,0,0,3,253,0,1,191,254,64,3,252,0,31,255,255,248,3,252,0,255,255,255,255,11,244,3,255,229,91,255,239,240,11,254,0,0,127,255,192,15,248,0,0,15,253,0,47,240,0,0,11,252,0,63,208,0,0,3,253,0,127,192,0,0,2,254,0,191,128,0,0,1,255,0,191,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,255,64,0,0,0,255,0,191,64,0,0,0,255,0,191,128,0,0,1,255,0,127,192,0,0,2,254,0,63,192,0,0,3,253,0,63,224,0,0,7,252,0,31,244,0,0,15,248,0,15,253,0,0,63,240,0,3,255,144,2,255,208,0,0,255,255,255,255,64,0,0,47,255,255,252,0,0,0,6,255,255,144,0,0,0,0,5,80,0,0,0,0,0,0,0,0,0,0,0,0,2,128,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,2,128,0,0,0, + // 0x1ee3 ợ + 227,30,22,30,180,23,2,249,0,0,0,0,5,80,0,0,0,0,15,240,0,0,0,0,31,224,0,6,169,0,31,208,0,191,255,224,63,192,7,255,255,253,255,64,15,254,91,255,253,0,63,224,0,191,224,0,127,192,0,63,192,0,191,64,0,31,208,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,224,0,127,128,0,47,208,0,63,192,0,63,192,0,31,244,1,255,128,0,11,255,255,255,0,0,2,255,255,248,0,0,0,111,255,144,0,0,0,1,80,0,0,0,0,0,0,0,0,0,0,0,160,0,0,0,0,3,252,0,0,0,0,3,252,0,0,0,0,3,252,0,0,0,0,0,160,0,0,0, + // 0x1ee4 Ụ + 228,30,21,33,198,27,3,249,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,255,0,63,224,0,3,253,0,15,253,0,47,248,0,7,255,255,255,240,0,1,255,255,255,128,0,0,47,255,249,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,255,0,0,0,0,0,255,64,0,0,0,0,255,0,0,0,0,0,41,0,0,0, + // 0x1ee5 ụ + 229,30,17,27,135,23,3,249,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,31,128,0,21,0,0,0,0,0,0,0,0,0,6,128,0,0,0,15,224,0,0,0,31,240,0,0,0,15,224,0,0,0,6,128,0,0, + // 0x1ee6 Ủ + 230,30,21,37,222,27,3,255,0,0,169,0,0,0,0,2,255,208,0,0,0,2,175,240,0,0,0,0,3,244,0,0,0,0,3,240,0,0,0,0,27,240,0,0,0,0,63,128,0,0,0,0,61,0,0,0,0,0,60,0,0,0,0,0,0,0,0,0,170,0,0,0,106,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,127,64,255,0,0,0,191,64,191,64,0,0,191,0,127,128,0,0,255,0,63,192,0,1,255,0,63,224,0,3,253,0,15,253,0,47,248,0,7,255,255,255,240,0,1,255,255,255,128,0,0,47,255,249,0,0,0,0,21,0,0,0, + // 0x1ee7 ủ + 231,30,17,31,155,23,3,255,0,26,144,0,0,0,47,253,0,0,0,42,255,0,0,0,0,63,0,0,0,0,63,0,0,0,1,254,0,0,0,7,248,0,0,0,3,208,0,0,0,2,128,0,0,0,0,0,0,0,85,0,0,21,64,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,63,128,254,0,0,127,128,254,0,0,127,128,255,0,0,255,128,255,64,1,255,128,191,192,7,255,128,127,255,255,255,128,47,255,255,47,128,7,255,248,31,128,0,21,0,0,0, + // 0x1ee8 Ứ + 232,30,27,35,245,29,3,255,0,0,1,170,0,0,0,0,0,3,253,0,0,0,0,0,15,244,0,0,0,0,0,47,208,0,0,0,0,0,63,64,0,0,0,0,0,253,0,0,0,0,0,0,0,0,0,1,84,0,0,0,0,0,3,252,170,0,0,0,106,67,252,255,0,0,0,127,71,248,255,0,0,0,127,75,240,255,0,0,0,127,175,208,255,0,0,0,127,255,128,255,0,0,0,127,249,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,191,64,0,191,64,0,0,191,0,0,127,128,0,0,255,0,0,63,192,0,1,255,0,0,63,224,0,3,253,0,0,15,253,0,47,252,0,0,7,255,255,255,240,0,0,1,255,255,255,192,0,0,0,31,255,253,0,0,0,0,0,21,0,0,0,0, + // 0x1ee9 ứ + 233,30,24,29,174,25,3,255,0,0,26,160,0,0,0,0,63,208,0,0,0,0,255,64,0,0,0,1,253,0,0,0,0,3,244,0,0,0,0,15,208,0,1,84,0,0,0,0,2,253,0,0,0,0,3,252,84,0,0,21,67,252,254,0,0,63,135,244,254,0,0,63,239,240,254,0,0,63,255,192,254,0,0,63,253,0,254,0,0,63,192,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,127,128,0,254,0,0,127,128,0,255,0,0,255,128,0,255,64,1,255,128,0,191,192,7,255,128,0,63,255,255,255,128,0,31,255,255,47,128,0,7,255,248,31,128,0,0,21,0,0,0,0, + // 0x1eea Ừ + 234,30,27,35,245,29,3,255,0,42,144,0,0,0,0,0,31,240,0,0,0,0,0,11,248,0,0,0,0,0,2,253,0,0,0,0,0,0,127,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,0,1,84,0,0,0,0,0,3,252,170,0,0,0,106,67,252,255,0,0,0,127,71,248,255,0,0,0,127,75,240,255,0,0,0,127,175,208,255,0,0,0,127,255,128,255,0,0,0,127,249,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,191,64,0,191,64,0,0,191,0,0,127,128,0,0,255,0,0,63,192,0,1,255,0,0,63,224,0,3,253,0,0,15,253,0,47,252,0,0,7,255,255,255,240,0,0,1,255,255,255,192,0,0,0,31,255,253,0,0,0,0,0,21,0,0,0,0, + // 0x1eeb ừ + 235,30,24,29,174,25,3,255,2,169,0,0,0,0,1,255,0,0,0,0,0,191,128,0,0,0,0,47,208,0,0,0,0,7,240,0,0,0,0,1,252,0,1,84,0,0,0,0,2,253,0,0,0,0,3,252,84,0,0,21,67,252,254,0,0,63,135,244,254,0,0,63,239,240,254,0,0,63,255,192,254,0,0,63,253,0,254,0,0,63,192,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,127,128,0,254,0,0,127,128,0,255,0,0,255,128,0,255,64,1,255,128,0,191,192,7,255,128,0,63,255,255,255,128,0,31,255,255,47,128,0,7,255,248,31,128,0,0,21,0,0,0,0, + // 0x1eec Ử + 236,30,27,37,3,29,3,255,0,0,169,0,0,0,0,0,1,255,224,0,0,0,0,1,175,240,0,0,0,0,0,2,244,0,0,0,0,0,2,244,0,0,0,0,0,27,240,0,0,0,0,0,63,128,0,0,0,0,0,62,0,0,0,0,0,0,45,0,0,1,84,0,0,0,0,0,3,252,170,0,0,0,106,67,252,255,0,0,0,127,71,248,255,0,0,0,127,75,240,255,0,0,0,127,175,208,255,0,0,0,127,255,128,255,0,0,0,127,249,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,191,64,0,191,64,0,0,191,0,0,127,128,0,0,255,0,0,63,192,0,1,255,0,0,63,224,0,3,253,0,0,15,253,0,47,252,0,0,7,255,255,255,240,0,0,1,255,255,255,192,0,0,0,31,255,253,0,0,0,0,0,21,0,0,0,0, + // 0x1eed ử + 237,30,24,31,186,25,3,255,0,26,144,0,0,0,0,47,253,0,0,0,0,26,255,0,0,0,0,0,47,64,0,0,0,0,63,0,0,0,0,1,255,0,0,0,0,3,248,0,0,0,0,3,208,0,1,84,0,2,128,0,2,253,0,0,0,0,3,252,84,0,0,21,67,252,254,0,0,63,135,244,254,0,0,63,239,240,254,0,0,63,255,192,254,0,0,63,253,0,254,0,0,63,192,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,127,128,0,254,0,0,127,128,0,255,0,0,255,128,0,255,64,1,255,128,0,191,192,7,255,128,0,63,255,255,255,128,0,31,255,255,47,128,0,7,255,248,31,128,0,0,21,0,0,0,0, + // 0x1eee Ữ + 238,30,27,34,238,29,3,255,0,6,128,2,128,0,0,0,63,248,7,192,0,0,0,255,255,239,128,0,0,0,248,127,255,0,0,0,1,240,7,252,0,0,0,0,0,0,0,0,1,84,0,0,0,0,0,3,252,170,0,0,0,106,67,252,255,0,0,0,127,71,248,255,0,0,0,127,75,240,255,0,0,0,127,175,208,255,0,0,0,127,255,128,255,0,0,0,127,249,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,191,64,0,191,64,0,0,191,0,0,127,128,0,0,255,0,0,63,192,0,1,255,0,0,63,224,0,3,253,0,0,15,253,0,47,252,0,0,7,255,255,255,240,0,0,1,255,255,255,192,0,0,0,31,255,253,0,0,0,0,0,21,0,0,0,0, + // 0x1eef ữ + 239,30,24,28,168,25,3,255,0,104,0,40,0,0,3,255,128,124,0,0,11,255,254,248,0,0,15,135,255,240,0,0,31,0,127,192,1,84,0,0,0,0,2,253,0,0,0,0,3,252,84,0,0,21,67,252,254,0,0,63,135,244,254,0,0,63,239,240,254,0,0,63,255,192,254,0,0,63,253,0,254,0,0,63,192,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,127,128,0,254,0,0,127,128,0,255,0,0,255,128,0,255,64,1,255,128,0,191,192,7,255,128,0,63,255,255,255,128,0,31,255,255,47,128,0,7,255,248,31,128,0,0,21,0,0,0,0, + // 0x1ef0 Ự + 240,30,27,35,245,29,3,249,0,0,0,0,0,1,84,0,0,0,0,0,3,252,170,0,0,0,106,67,252,255,0,0,0,127,71,248,255,0,0,0,127,75,240,255,0,0,0,127,175,208,255,0,0,0,127,255,128,255,0,0,0,127,249,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,127,64,0,255,0,0,0,191,64,0,191,64,0,0,191,0,0,127,128,0,0,255,0,0,63,192,0,1,255,0,0,63,224,0,3,253,0,0,15,253,0,47,252,0,0,7,255,255,255,240,0,0,1,255,255,255,192,0,0,0,31,255,253,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,191,64,0,0,0,0,0,255,64,0,0,0,0,0,191,64,0,0,0,0,0,41,0,0,0,0, + // 0x1ef1 ự + 241,30,24,30,180,25,3,249,0,0,0,0,1,84,0,0,0,0,2,253,0,0,0,0,3,252,84,0,0,21,67,252,254,0,0,63,135,244,254,0,0,63,239,240,254,0,0,63,255,192,254,0,0,63,253,0,254,0,0,63,192,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,63,128,0,254,0,0,127,128,0,254,0,0,127,128,0,255,0,0,255,128,0,255,64,1,255,128,0,191,192,7,255,128,0,63,255,255,255,128,0,31,255,255,47,128,0,7,255,248,31,128,0,0,21,0,0,0,0,0,0,0,0,0,0,0,6,128,0,0,0,0,15,224,0,0,0,0,31,240,0,0,0,0,15,224,0,0,0,0,6,128,0,0,0, + // 0x1ef2 Ỳ + 242,30,21,34,204,21,0,0,0,26,160,0,0,0,0,15,244,0,0,0,0,3,252,0,0,0,0,0,254,0,0,0,0,0,63,64,0,0,0,0,15,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,64,0,0,106,128,127,192,0,0,255,64,63,208,0,1,255,0,31,240,0,3,252,0,11,244,0,7,248,0,3,252,0,15,240,0,2,253,0,31,224,0,0,255,0,63,192,0,0,191,128,127,128,0,0,63,192,255,0,0,0,47,226,253,0,0,0,15,243,252,0,0,0,7,255,244,0,0,0,3,255,240,0,0,0,1,255,208,0,0,0,0,255,128,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0, + // 0x1ef3 ỳ + 243,30,19,37,185,19,0,247,0,106,128,0,0,0,63,208,0,0,0,15,240,0,0,0,3,248,0,0,0,0,253,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,1,84,191,64,0,7,248,63,192,0,15,240,63,192,0,15,240,31,224,0,31,208,15,240,0,63,192,11,244,0,63,128,3,248,0,191,64,3,252,0,255,0,1,253,0,254,0,0,255,2,252,0,0,191,3,252,0,0,63,71,244,0,0,63,203,240,0,0,31,207,224,0,0,15,223,208,0,0,11,255,192,0,0,3,255,128,0,0,3,255,0,0,0,1,255,0,0,0,1,253,0,0,0,3,252,0,0,0,3,248,0,0,0,11,244,0,0,0,47,240,0,0,38,255,192,0,0,127,255,64,0,0,127,253,0,0,0,42,144,0,0,0, + // 0x1ef4 Ỵ + 244,30,21,33,198,21,0,249,170,64,0,0,106,128,127,192,0,0,255,64,63,208,0,1,255,0,31,240,0,3,252,0,11,244,0,7,248,0,3,252,0,15,240,0,2,253,0,31,224,0,0,255,0,63,192,0,0,191,128,127,128,0,0,63,192,255,0,0,0,47,226,253,0,0,0,15,243,252,0,0,0,7,255,244,0,0,0,3,255,240,0,0,0,1,255,208,0,0,0,0,255,128,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,191,64,0,0,0,0,191,128,0,0,0,0,191,64,0,0,0,0,25,0,0,0, + // 0x1ef5 ỵ + 245,30,19,29,145,19,0,247,85,0,0,1,84,191,64,0,7,248,63,192,0,15,240,63,192,0,15,240,31,224,0,31,208,15,240,0,63,192,11,244,0,63,128,3,248,0,191,64,3,252,0,255,0,1,253,0,254,0,0,255,2,252,0,0,191,3,252,0,0,63,71,244,0,0,63,203,240,0,0,31,207,224,0,0,15,223,208,0,0,11,255,192,0,0,3,255,128,0,0,3,255,0,0,0,1,255,0,0,0,1,253,0,0,0,3,252,0,0,0,3,248,25,0,0,11,244,127,128,0,47,240,191,128,38,255,192,127,128,127,255,64,25,0,127,253,0,0,0,42,144,0,0,0, + // 0x1ef6 Ỷ + 246,30,21,36,216,21,0,0,0,0,105,0,0,0,0,1,255,224,0,0,0,1,175,244,0,0,0,0,2,248,0,0,0,0,2,244,0,0,0,0,27,240,0,0,0,0,63,192,0,0,0,0,62,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,170,64,0,0,106,128,127,192,0,0,255,64,63,208,0,1,255,0,31,240,0,3,252,0,11,244,0,7,248,0,3,252,0,15,240,0,2,253,0,31,224,0,0,255,0,63,192,0,0,191,128,127,128,0,0,63,192,255,0,0,0,47,226,253,0,0,0,15,243,252,0,0,0,7,255,244,0,0,0,3,255,240,0,0,0,1,255,208,0,0,0,0,255,128,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0, + // 0x1ef7 ỷ + 247,30,19,39,195,19,0,247,0,2,164,0,0,0,7,255,128,0,0,6,191,208,0,0,0,11,208,0,0,0,11,208,0,0,0,111,192,0,0,0,254,0,0,0,0,248,0,0,0,0,164,0,0,0,0,0,0,0,85,0,0,1,84,191,64,0,7,248,63,192,0,15,240,63,192,0,15,240,31,224,0,31,208,15,240,0,63,192,11,244,0,63,128,3,248,0,191,64,3,252,0,255,0,1,253,0,254,0,0,255,2,252,0,0,191,3,252,0,0,63,71,244,0,0,63,203,240,0,0,31,207,224,0,0,15,223,208,0,0,11,255,192,0,0,3,255,128,0,0,3,255,0,0,0,1,255,0,0,0,1,253,0,0,0,3,252,0,0,0,3,248,0,0,0,11,244,0,0,0,47,240,0,0,38,255,192,0,0,127,255,64,0,0,127,253,0,0,0,42,144,0,0,0, + // 0x1ef8 Ỹ + 248,30,21,33,198,21,0,0,0,6,144,2,128,0,0,63,252,7,192,0,0,191,255,239,192,0,0,248,127,255,0,0,0,240,7,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,64,0,0,106,128,127,192,0,0,255,64,63,208,0,1,255,0,31,240,0,3,252,0,11,244,0,7,248,0,3,252,0,15,240,0,2,253,0,31,224,0,0,255,0,63,192,0,0,191,128,127,128,0,0,63,192,255,0,0,0,47,226,253,0,0,0,15,243,252,0,0,0,7,255,244,0,0,0,3,255,240,0,0,0,1,255,208,0,0,0,0,255,128,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0, + // 0x1ef9 ỹ + 249,30,19,36,180,19,0,247,0,26,64,10,0,0,255,240,31,0,2,255,255,190,0,3,225,255,252,0,3,192,31,244,0,0,0,0,0,0,0,0,0,0,0,85,0,0,1,84,191,64,0,7,248,63,192,0,15,240,63,192,0,15,240,31,224,0,31,208,15,240,0,63,192,11,244,0,63,128,3,248,0,191,64,3,252,0,255,0,1,253,0,254,0,0,255,2,252,0,0,191,3,252,0,0,63,71,244,0,0,63,203,240,0,0,31,207,224,0,0,15,223,208,0,0,11,255,192,0,0,3,255,128,0,0,3,255,0,0,0,1,255,0,0,0,1,253,0,0,0,3,252,0,0,0,3,248,0,0,0,11,244,0,0,0,47,240,0,0,38,255,192,0,0,127,255,64,0,0,127,253,0,0,0,42,144,0,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_27.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_27.cpp new file mode 100644 index 0000000000..f94284c758 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_27.cpp @@ -0,0 +1,416 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium 37pt, capital 'A' height: 27px, width: 100%, range: 0x0020-0x00ff +extern const uint8_t NotoSans_Medium_27[25343] = { + 130,27,32,0,255,0,35,247, // unifont_t + // 0x0020 " " + 0,0,0,10,0,0, + // 0x0021 ! + 6,28,56,10,2,255,21,64,63,208,63,208,63,208,63,192,63,192,63,192,63,192,63,192,63,192,47,192,47,192,47,192,47,192,47,128,31,128,31,128,31,128,31,128,0,0,0,0,0,0,26,64,63,208,127,224,127,208,63,192,5,0, + // 0x0022 " + 12,11,33,16,2,16,21,0,84,191,65,253,127,1,252,127,1,252,127,1,252,63,0,252,63,0,252,63,0,252,62,0,252,62,0,248,0,0,0, + // 0x0023 # + 22,27,162,24,1,0,0,0,84,0,84,0,0,0,252,1,248,0,0,1,248,1,248,0,0,2,248,2,244,0,0,2,244,3,240,0,0,3,240,3,240,0,0,3,240,3,224,0,0,7,240,7,224,0,42,175,250,175,250,160,63,255,255,255,255,240,63,255,255,255,255,240,0,15,192,31,192,0,0,15,192,31,128,0,0,31,128,47,64,0,0,47,64,63,0,0,0,63,0,63,0,0,85,127,85,191,85,64,255,255,255,255,255,128,255,255,255,255,255,128,85,254,85,253,85,64,0,252,0,252,0,0,0,252,0,252,0,0,0,252,1,248,0,0,1,248,2,244,0,0,1,244,3,244,0,0,2,244,3,240,0,0,3,240,3,240,0,0, + // 0x0024 $ + 17,31,155,21,2,253,0,2,240,0,0,0,2,240,0,0,0,2,240,0,0,0,111,255,164,0,7,255,255,255,64,47,255,255,255,0,127,251,246,191,0,191,130,240,5,0,255,2,240,0,0,255,2,240,0,0,255,66,240,0,0,127,210,240,0,0,63,255,240,0,0,15,255,249,0,0,2,255,255,208,0,0,31,255,252,0,0,2,255,255,0,0,2,242,255,192,0,2,240,63,192,0,2,240,47,192,0,2,240,47,192,64,2,240,63,192,254,66,246,255,128,255,255,255,255,0,255,255,255,248,0,27,255,255,128,0,0,6,240,0,0,0,2,240,0,0,0,2,240,0,0,0,2,240,0,0,0,0,0,0,0, + // 0x0025 % + 29,28,224,32,1,255,0,170,64,0,0,85,0,0,7,255,224,0,0,252,0,0,15,255,248,0,2,248,0,0,47,193,252,0,3,240,0,0,63,64,254,0,15,224,0,0,63,0,126,0,31,192,0,0,127,0,127,0,63,64,0,0,127,0,63,0,127,0,0,0,127,0,63,0,253,0,0,0,127,0,63,2,252,0,0,0,127,0,127,3,240,0,0,0,63,0,127,11,224,191,224,0,63,64,254,15,195,255,252,0,31,193,252,47,135,250,254,0,15,255,248,127,15,224,127,0,3,255,240,253,15,192,63,64,0,110,65,252,31,192,47,128,0,0,3,244,31,192,31,192,0,0,11,240,47,128,31,192,0,0,15,192,47,128,31,192,0,0,47,128,31,192,31,192,0,0,63,0,31,192,47,128,0,0,190,0,15,192,63,128,0,1,252,0,15,208,63,0,0,3,244,0,7,249,255,0,0,7,240,0,3,255,252,0,0,15,208,0,0,191,244,0,0,0,0,0,0,5,0,0, + // 0x0026 & + 25,28,196,27,2,255,0,6,250,64,0,0,0,0,127,255,240,0,0,0,2,255,255,252,0,0,0,3,254,91,254,0,0,0,11,248,1,255,0,0,0,11,240,0,255,0,0,0,11,240,0,255,0,0,0,11,240,0,255,0,0,0,7,248,2,253,0,0,0,3,253,11,252,0,0,0,0,255,191,240,0,0,0,0,127,255,128,0,0,0,0,63,253,0,0,0,0,2,255,253,0,0,169,0,11,255,255,64,2,253,0,47,248,191,208,3,252,0,127,208,47,244,3,252,0,255,128,11,253,11,244,0,255,0,2,255,79,240,0,255,0,0,191,255,208,0,255,0,0,47,255,128,0,255,64,0,11,255,0,0,255,192,0,31,255,128,0,127,244,1,255,255,224,0,47,255,255,255,175,248,0,11,255,255,253,7,254,0,1,191,255,208,1,255,128,0,1,80,0,0,0,0, + // 0x0027 ' + 5,11,22,9,2,16,21,0,191,64,127,0,127,0,127,0,63,0,63,0,63,0,62,0,62,0,0,0, + // 0x0028 ( + 9,33,99,12,1,250,0,5,64,0,63,192,0,127,0,0,254,0,2,252,0,3,248,0,11,240,0,15,240,0,31,208,0,47,192,0,63,192,0,63,128,0,63,128,0,127,64,0,127,64,0,127,64,0,191,0,0,127,0,0,127,64,0,127,64,0,127,64,0,63,128,0,63,192,0,47,192,0,31,208,0,15,224,0,15,240,0,7,244,0,3,252,0,1,253,0,0,255,0,0,63,64,0,31,192, + // 0x0029 ) + 9,33,99,12,1,250,85,0,0,127,64,0,47,192,0,15,224,0,11,240,0,3,248,0,2,252,0,1,253,0,0,255,0,0,191,0,0,127,64,0,63,128,0,63,128,0,63,192,0,63,192,0,63,192,0,47,192,0,47,192,0,63,192,0,63,192,0,63,192,0,63,128,0,127,64,0,191,64,0,255,0,0,254,0,1,253,0,3,252,0,7,244,0,15,240,0,31,208,0,63,128,0,127,0,0, + // 0x002a * + 18,17,85,20,1,11,0,3,252,0,0,0,2,252,0,0,0,2,252,0,0,0,1,248,0,0,0,1,248,0,0,57,1,244,6,208,127,249,249,255,224,127,255,255,255,224,111,255,255,255,160,0,7,254,0,0,0,15,255,64,0,0,63,159,192,0,0,191,15,224,0,1,254,7,248,0,3,253,3,252,0,1,252,2,244,0,0,20,0,64,0, + // 0x002b + + 18,18,90,21,2,4,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,170,171,250,170,128,255,255,255,255,208,255,255,255,255,208,85,87,245,85,64,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0, + // 0x002c , + 7,10,20,10,1,251,1,80,15,244,15,240,15,224,31,208,47,192,63,128,63,0,127,0,125,0, + // 0x002d - + 10,4,12,12,1,8,106,170,144,191,255,224,191,255,224,127,255,208, + // 0x002e . + 6,6,12,10,2,255,26,64,63,208,127,224,127,208,63,192,5,0, + // 0x002f / + 14,27,108,14,0,0,0,0,5,80,0,0,15,224,0,0,47,192,0,0,63,192,0,0,127,64,0,0,191,0,0,0,254,0,0,1,253,0,0,3,252,0,0,3,248,0,0,11,240,0,0,15,240,0,0,31,208,0,0,47,192,0,0,63,128,0,0,127,64,0,0,255,0,0,0,254,0,0,2,252,0,0,3,252,0,0,7,244,0,0,11,240,0,0,15,224,0,0,31,208,0,0,47,192,0,0,63,128,0,0,127,0,0,0, + // 0x0030 0 + 19,28,140,21,1,255,0,6,250,64,0,0,127,255,240,0,1,255,255,253,0,3,255,171,255,0,11,252,0,191,128,15,240,0,63,192,31,224,0,31,208,47,192,0,15,240,63,192,0,15,240,63,192,0,11,240,63,128,0,11,244,127,128,0,11,244,127,128,0,7,244,127,128,0,7,244,127,128,0,7,244,127,128,0,11,244,63,128,0,11,244,63,192,0,11,244,63,192,0,15,240,63,192,0,15,240,31,208,0,31,224,15,224,0,47,208,15,244,0,63,192,7,253,1,255,128,2,255,255,255,0,0,191,255,252,0,0,31,255,224,0,0,0,84,0,0, + // 0x0031 1 + 11,27,81,21,3,0,0,1,84,0,11,252,0,63,252,1,255,252,7,255,252,47,247,252,255,195,252,127,3,252,24,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252, + // 0x0032 2 + 19,27,135,21,1,0,0,6,186,64,0,0,255,255,244,0,11,255,255,254,0,63,255,171,255,64,31,208,0,255,192,11,0,0,63,192,0,0,0,47,208,0,0,0,47,208,0,0,0,47,208,0,0,0,63,192,0,0,0,63,192,0,0,0,191,64,0,0,1,255,0,0,0,3,252,0,0,0,15,244,0,0,0,63,224,0,0,0,255,128,0,0,3,254,0,0,0,15,248,0,0,0,63,224,0,0,0,255,128,0,0,3,254,0,0,0,15,244,0,0,0,63,245,85,85,80,127,255,255,255,244,127,255,255,255,244,127,255,255,255,244, + // 0x0033 3 + 18,28,140,21,1,255,0,26,186,64,0,2,255,255,248,0,47,255,255,254,0,63,254,171,255,128,15,128,0,191,192,4,0,0,63,208,0,0,0,47,208,0,0,0,47,208,0,0,0,47,192,0,0,0,63,192,0,0,0,255,64,0,21,91,253,0,0,127,255,224,0,0,127,255,144,0,0,127,255,254,0,0,0,6,255,192,0,0,0,63,224,0,0,0,31,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,31,240,0,0,0,63,224,126,64,1,255,192,127,255,255,255,64,127,255,255,253,0,27,255,255,208,0,0,5,80,0,0, + // 0x0034 4 + 21,27,162,21,0,0,0,0,0,42,64,0,0,0,0,255,192,0,0,0,2,255,192,0,0,0,3,255,192,0,0,0,15,255,192,0,0,0,47,191,192,0,0,0,127,63,192,0,0,0,254,63,192,0,0,2,252,63,192,0,0,7,240,63,192,0,0,15,208,63,192,0,0,47,192,63,192,0,0,127,0,63,192,0,0,253,0,63,192,0,3,248,0,63,192,0,11,240,0,63,192,0,15,208,0,63,192,0,63,192,0,63,192,0,127,255,255,255,255,64,127,255,255,255,255,64,127,255,255,255,255,64,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0, + // 0x0035 5 + 17,28,140,21,2,255,5,85,85,84,0,31,255,255,253,0,31,255,255,253,0,31,255,255,253,0,47,192,0,0,0,47,192,0,0,0,47,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,128,0,0,0,63,133,80,0,0,63,255,255,128,0,63,255,255,248,0,63,255,255,254,0,4,0,7,255,0,0,0,0,255,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,127,128,64,0,0,255,64,249,0,11,255,0,255,255,255,252,0,255,255,255,224,0,31,255,254,64,0,0,21,64,0,0, + // 0x0036 6 + 18,28,140,21,2,255,0,0,106,169,0,0,11,255,254,0,0,127,255,254,0,2,255,249,89,0,7,254,0,0,0,15,244,0,0,0,47,224,0,0,0,63,192,0,0,0,127,128,0,0,0,191,0,0,0,0,191,1,170,64,0,255,31,255,244,0,254,127,255,254,0,255,254,91,255,64,255,224,0,191,192,255,128,0,63,192,255,0,0,47,208,255,0,0,31,224,255,0,0,31,224,255,0,0,31,208,191,64,0,47,208,127,128,0,63,192,63,208,0,127,192,31,248,2,255,64,11,255,255,254,0,2,255,255,248,0,0,47,255,208,0,0,0,84,0,0, + // 0x0037 7 + 19,27,135,21,1,0,21,85,85,85,80,191,255,255,255,248,191,255,255,255,248,191,255,255,255,244,0,0,0,15,240,0,0,0,31,224,0,0,0,63,192,0,0,0,127,128,0,0,0,191,64,0,0,0,255,0,0,0,2,253,0,0,0,3,252,0,0,0,11,244,0,0,0,15,240,0,0,0,31,224,0,0,0,63,192,0,0,0,127,128,0,0,0,255,64,0,0,1,255,0,0,0,3,253,0,0,0,3,252,0,0,0,11,244,0,0,0,15,240,0,0,0,47,224,0,0,0,63,192,0,0,0,191,128,0,0,0,255,64,0,0, + // 0x0038 8 + 19,28,140,21,1,255,0,6,186,64,0,0,191,255,248,0,3,255,255,255,0,11,254,86,255,192,15,240,0,63,208,31,224,0,31,224,31,208,0,15,224,31,208,0,31,224,15,224,0,47,208,15,244,0,127,192,3,254,2,255,0,1,255,239,252,0,0,63,255,224,0,0,47,255,208,0,1,255,255,252,0,7,254,7,255,64,15,244,0,191,208,47,208,0,31,240,63,192,0,11,240,63,128,0,7,244,127,64,0,7,244,63,128,0,11,244,63,192,0,15,240,47,244,0,127,224,15,255,171,255,192,3,255,255,254,0,0,127,255,228,0,0,0,84,0,0, + // 0x0039 9 + 19,28,140,21,1,255,0,6,169,0,0,0,191,255,224,0,2,255,255,252,0,11,255,171,255,0,31,244,0,255,128,47,208,0,63,208,63,192,0,31,224,63,128,0,15,240,127,128,0,11,240,127,128,0,11,244,63,128,0,11,244,63,192,0,15,244,63,208,0,47,244,31,244,0,255,244,15,255,255,251,244,3,255,255,219,240,0,127,254,11,240,0,1,64,15,240,0,0,0,15,224,0,0,0,31,208,0,0,0,63,192,0,0,0,191,128,0,0,2,255,0,0,0,31,253,0,7,255,255,244,0,7,255,255,192,0,7,255,249,0,0,0,85,0,0,0, + // 0x003a : + 6,22,44,10,2,255,5,0,63,192,127,208,127,224,63,208,31,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,64,63,208,127,224,127,208,63,192,5,0, + // 0x003b ; + 7,26,52,10,1,251,1,64,15,240,31,244,47,244,31,244,7,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,80,15,240,31,240,31,224,47,192,63,192,63,64,127,0,190,0,188,0, + // 0x003c < + 18,19,95,21,2,4,0,0,0,0,64,0,0,0,7,208,0,0,0,127,208,0,0,7,255,192,0,0,127,253,0,0,7,255,208,0,0,127,253,0,0,7,255,208,0,0,127,249,0,0,0,255,128,0,0,0,255,208,0,0,0,127,254,0,0,0,7,255,228,0,0,0,47,255,64,0,0,2,255,248,0,0,0,31,255,192,0,0,1,255,208,0,0,0,11,208,0,0,0,0,144, + // 0x003d = + 17,11,55,21,2,7,255,255,255,255,192,255,255,255,255,192,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,192,255,255,255,255,192,255,255,255,255,192,0,0,0,0,0, + // 0x003e > + 18,19,95,21,2,4,64,0,0,0,0,244,0,0,0,0,255,64,0,0,0,255,244,0,0,0,31,255,64,0,0,1,255,244,0,0,0,31,255,64,0,0,1,191,244,0,0,0,11,255,64,0,0,0,191,208,0,0,1,191,208,0,0,31,255,128,0,2,255,244,0,0,127,254,64,0,11,255,224,0,0,191,253,0,0,0,255,208,0,0,0,249,0,0,0,0,128,0,0,0,0, + // 0x003f ? + 16,28,112,17,0,255,0,106,164,0,31,255,255,128,127,255,255,240,63,250,191,252,45,0,7,252,0,0,1,253,0,0,0,254,0,0,0,254,0,0,1,253,0,0,3,252,0,0,15,244,0,0,63,224,0,1,255,128,0,7,253,0,0,15,244,0,0,31,208,0,0,47,128,0,0,63,64,0,0,63,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,64,0,0,127,192,0,0,191,208,0,0,191,208,0,0,63,192,0,0,5,0,0, + // 0x0040 @ + 29,31,248,33,2,252,0,0,0,21,80,0,0,0,0,0,27,255,255,144,0,0,0,1,255,255,255,253,0,0,0,11,255,149,91,255,128,0,0,63,224,0,0,127,224,0,0,255,64,0,0,7,248,0,3,252,0,0,0,1,253,0,11,240,0,5,64,0,191,0,15,208,1,255,255,128,63,64,47,128,15,255,255,208,47,128,63,0,63,229,111,192,15,192,63,0,191,64,15,192,15,192,126,0,253,0,15,192,15,192,189,1,252,0,15,192,15,192,252,2,248,0,15,192,15,192,252,2,248,0,31,192,15,192,252,2,248,0,31,192,15,192,252,2,248,0,47,192,31,128,253,1,252,0,63,192,47,64,189,0,254,0,191,208,127,0,190,0,191,235,247,250,253,0,63,0,47,255,209,255,244,0,63,64,6,254,0,127,128,0,31,192,0,0,0,0,0,0,15,240,0,0,0,0,0,0,3,252,0,0,0,0,0,0,1,255,128,0,1,180,0,0,0,127,254,170,191,244,0,0,0,11,255,255,255,240,0,0,0,0,111,255,254,64,0,0,0,0,0,0,0,0,0,0, + // 0x0041 A + 24,27,162,24,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x0042 B + 20,27,135,24,3,0,21,85,84,0,0,127,255,255,248,0,127,255,255,255,64,127,255,255,255,208,127,128,1,191,240,127,128,0,31,244,127,128,0,15,244,127,128,0,11,244,127,128,0,11,244,127,128,0,15,240,127,128,0,47,224,127,149,86,255,128,127,255,255,253,0,127,255,255,249,0,127,255,255,255,192,127,128,0,127,240,127,128,0,15,248,127,128,0,3,252,127,128,0,3,252,127,128,0,3,253,127,128,0,3,252,127,128,0,11,252,127,128,0,31,248,127,149,86,255,240,127,255,255,255,208,127,255,255,255,0,127,255,255,228,0, + // 0x0043 C + 20,28,140,23,2,255,0,0,26,234,64,0,7,255,255,253,0,47,255,255,255,0,255,255,175,253,3,255,208,0,108,11,254,0,0,0,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,127,192,0,0,0,127,192,0,0,0,191,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,128,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,208,0,0,0,47,240,0,0,0,15,248,0,0,0,11,254,0,0,0,3,255,228,1,188,0,255,255,255,252,0,47,255,255,252,0,2,255,255,244,0,0,5,84,0, + // 0x0044 D + 22,27,162,27,3,0,21,85,84,0,0,0,127,255,255,244,0,0,127,255,255,255,64,0,127,255,255,255,224,0,127,128,1,191,252,0,127,128,0,11,254,0,127,128,0,2,255,64,127,128,0,0,255,192,127,128,0,0,127,192,127,128,0,0,63,208,127,128,0,0,47,224,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,47,224,127,128,0,0,63,208,127,128,0,0,63,192,127,128,0,0,191,192,127,128,0,1,255,64,127,128,0,7,255,0,127,128,0,47,252,0,127,149,91,255,244,0,127,255,255,255,192,0,127,255,255,253,0,0,127,255,254,64,0,0, + // 0x0045 E + 16,27,108,21,3,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x0046 F + 16,27,108,20,3,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0, + // 0x0047 G + 22,28,168,27,2,255,0,0,6,190,148,0,0,2,255,255,255,144,0,31,255,255,255,224,0,191,255,235,255,192,2,255,224,0,7,128,7,255,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,64,0,0,0,0,255,64,0,127,255,240,191,64,0,127,255,240,191,64,0,127,255,240,191,128,0,0,15,240,127,192,0,0,15,240,63,192,0,0,15,240,63,208,0,0,15,240,47,240,0,0,15,240,15,252,0,0,15,240,7,255,0,0,15,240,2,255,228,0,95,240,0,191,255,255,255,240,0,31,255,255,255,240,0,1,255,255,254,64,0,0,1,85,0,0, + // 0x0048 H + 21,27,162,28,3,0,21,0,0,0,21,64,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,149,85,85,127,192,127,255,255,255,255,192,127,255,255,255,255,192,127,255,255,255,255,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192, + // 0x0049 I + 11,27,81,13,1,0,85,85,84,191,255,248,191,255,248,11,255,128,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,2,254,0,47,255,228,191,255,248,191,255,248, + // 0x004a J + 11,35,105,11,253,248,0,5,80,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,15,240,0,31,240,81,191,224,255,255,192,255,255,0,191,248,0,0,0,0, + // 0x004b K + 20,27,135,23,3,0,21,0,0,1,85,127,128,0,7,253,127,128,0,15,244,127,128,0,63,224,127,128,0,255,128,127,128,2,255,0,127,128,11,252,0,127,128,31,240,0,127,128,127,192,0,127,128,255,64,0,127,131,253,0,0,127,143,248,0,0,127,175,244,0,0,127,255,252,0,0,127,255,254,0,0,127,245,255,64,0,127,192,191,192,0,127,128,63,224,0,127,128,31,244,0,127,128,11,252,0,127,128,3,255,0,127,128,0,255,128,127,128,0,127,192,127,128,0,47,240,127,128,0,15,248,127,128,0,7,253,127,128,0,2,255, + // 0x004c L + 16,27,108,20,3,0,21,0,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,85,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x004d M + 28,27,189,34,3,0,21,80,0,0,0,5,84,127,248,0,0,0,47,253,127,252,0,0,0,63,253,127,253,0,0,0,127,253,127,254,0,0,0,191,253,127,191,0,0,0,254,253,127,127,64,0,1,253,253,127,63,128,0,3,249,253,127,47,192,0,3,241,253,127,15,208,0,11,241,253,127,15,240,0,15,225,253,127,7,240,0,31,193,253,127,3,244,0,47,193,253,127,3,252,0,63,65,253,127,1,252,0,127,1,253,127,0,254,0,190,1,253,127,0,191,0,253,1,253,127,0,127,65,252,1,253,127,0,63,131,248,1,253,127,0,47,195,240,1,253,127,0,31,219,240,1,253,127,0,15,239,208,1,253,127,0,11,255,192,1,253,127,0,3,255,128,1,253,127,0,3,255,64,1,253,127,0,2,255,0,1,253,127,0,0,254,0,1,253, + // 0x004e N + 22,27,162,29,3,0,21,64,0,0,1,80,127,240,0,0,11,240,127,248,0,0,11,240,127,252,0,0,11,240,127,255,0,0,11,240,127,255,64,0,11,240,127,127,192,0,11,240,127,63,224,0,11,240,127,15,244,0,11,240,127,11,252,0,11,240,127,3,254,0,11,240,127,1,255,0,11,240,127,0,191,192,11,240,127,0,63,208,11,240,127,0,31,240,7,240,127,0,15,248,7,240,127,0,3,253,7,240,127,0,2,255,7,240,127,0,0,255,135,240,127,0,0,127,199,240,127,0,0,47,247,240,127,0,0,15,251,240,127,0,0,7,255,240,127,0,0,3,255,240,127,0,0,0,255,240,127,0,0,0,191,240,127,0,0,0,63,240, + // 0x004f O + 25,28,196,29,2,255,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x0050 P + 18,27,135,23,3,0,21,85,80,0,0,127,255,255,208,0,127,255,255,253,0,127,255,255,255,0,127,128,6,255,192,127,128,0,127,208,127,128,0,47,224,127,128,0,31,224,127,128,0,31,240,127,128,0,31,224,127,128,0,47,224,127,128,0,63,208,127,128,1,255,192,127,149,111,255,64,127,255,255,253,0,127,255,255,240,0,127,255,250,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0, + // 0x0051 Q + 25,34,238,29,2,249,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,240,0,0,0,0,5,111,244,0,0,0,0,0,11,253,0,0,0,0,0,3,255,64,0,0,0,0,0,255,192,0,0,0,0,0,63,240,0,0,0,0,0,31,252,0,0,0,0,0,1,84,0, + // 0x0052 R + 20,27,135,23,3,0,21,85,84,0,0,127,255,255,224,0,127,255,255,253,0,127,255,255,255,64,127,128,6,255,192,127,128,0,127,208,127,128,0,47,224,127,128,0,31,240,127,128,0,31,240,127,128,0,31,224,127,128,0,47,208,127,128,0,127,192,127,128,6,255,64,127,255,255,254,0,127,255,255,244,0,127,255,255,192,0,127,149,127,208,0,127,128,15,240,0,127,128,11,248,0,127,128,3,253,0,127,128,1,255,0,127,128,0,255,128,127,128,0,63,192,127,128,0,47,240,127,128,0,15,244,127,128,0,7,252,127,128,0,3,254, + // 0x0053 S + 17,28,140,20,2,255,0,26,234,64,0,2,255,255,253,0,15,255,255,255,0,63,254,175,254,0,127,208,0,108,0,191,128,0,0,0,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,191,192,0,0,0,63,244,0,0,0,31,255,64,0,0,11,255,244,0,0,1,255,255,128,0,0,31,255,240,0,0,1,191,252,0,0,0,15,255,0,0,0,2,255,64,0,0,0,191,128,0,0,0,127,128,0,0,0,127,128,0,0,0,191,128,128,0,0,255,0,254,64,27,254,0,255,255,255,252,0,255,255,255,240,0,111,255,254,64,0,0,21,64,0,0, + // 0x0054 T + 21,27,162,21,0,0,21,85,85,85,85,0,191,255,255,255,255,64,191,255,255,255,255,64,191,255,255,255,255,64,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0, + // 0x0055 U + 21,28,168,27,3,255,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,254,0,0,0,0,21,64,0,0, + // 0x0056 V + 23,27,162,23,0,0,85,0,0,0,1,84,191,64,0,0,11,244,127,192,0,0,15,240,63,192,0,0,31,224,47,208,0,0,47,208,31,240,0,0,63,192,15,240,0,0,127,128,11,244,0,0,255,64,3,252,0,0,255,0,3,252,0,1,254,0,2,253,0,3,253,0,0,255,0,3,252,0,0,255,0,7,248,0,0,127,128,15,240,0,0,63,192,15,240,0,0,63,192,31,208,0,0,31,224,63,192,0,0,15,240,63,192,0,0,11,240,127,64,0,0,7,248,255,0,0,0,3,252,254,0,0,0,2,253,253,0,0,0,1,255,252,0,0,0,0,255,248,0,0,0,0,191,244,0,0,0,0,63,240,0,0,0,0,63,224,0,0, + // 0x0057 W + 34,27,243,35,0,0,85,0,0,1,84,0,0,5,80,127,128,0,3,254,0,0,15,240,63,192,0,3,255,0,0,15,240,63,192,0,11,255,0,0,31,224,47,208,0,15,255,64,0,47,208,31,224,0,15,255,128,0,63,192,15,240,0,31,239,192,0,63,192,15,240,0,47,207,208,0,127,128,11,244,0,63,143,224,0,191,64,7,248,0,63,75,240,0,255,0,3,252,0,127,7,240,0,255,0,3,252,0,255,3,244,1,254,0,2,253,0,254,3,252,2,253,0,1,254,1,253,2,252,3,252,0,0,255,2,252,1,253,3,252,0,0,255,3,248,0,254,7,248,0,0,191,67,244,0,191,11,244,0,0,127,135,240,0,127,15,240,0,0,63,203,240,0,63,79,240,0,0,47,207,224,0,63,143,224,0,0,31,223,208,0,47,223,192,0,0,15,239,192,0,31,239,192,0,0,15,255,128,0,15,255,128,0,0,11,255,64,0,11,255,64,0,0,7,255,0,0,7,255,0,0,0,3,255,0,0,3,255,0,0,0,3,254,0,0,3,254,0,0, + // 0x0058 X + 22,27,162,23,0,0,21,64,0,0,5,80,47,224,0,0,63,192,15,244,0,0,191,128,7,252,0,0,255,0,3,254,0,3,253,0,0,255,0,7,248,0,0,191,128,15,240,0,0,63,208,47,208,0,0,15,240,127,128,0,0,11,248,255,0,0,0,3,254,253,0,0,0,1,255,252,0,0,0,0,191,240,0,0,0,0,127,240,0,0,0,0,255,244,0,0,0,2,255,252,0,0,0,3,254,254,0,0,0,15,240,255,64,0,0,31,224,127,192,0,0,63,192,47,224,0,0,191,64,15,244,0,1,255,0,7,252,0,3,252,0,3,254,0,11,248,0,0,255,0,31,240,0,0,191,192,63,208,0,0,63,208,191,128,0,0,31,240, + // 0x0059 Y + 21,27,162,22,0,0,85,0,0,0,21,64,191,192,0,0,63,192,63,208,0,0,191,128,31,240,0,1,255,0,15,244,0,3,253,0,7,252,0,7,252,0,3,253,0,15,244,0,1,255,0,31,240,0,0,191,64,63,208,0,0,63,192,127,128,0,0,47,224,255,0,0,0,15,241,254,0,0,0,11,251,252,0,0,0,3,255,248,0,0,0,1,255,240,0,0,0,0,255,208,0,0,0,0,127,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x005a Z + 19,27,135,21,1,0,21,85,85,85,84,127,255,255,255,248,127,255,255,255,248,127,255,255,255,248,0,0,0,47,240,0,0,0,63,192,0,0,0,255,128,0,0,2,255,0,0,0,3,252,0,0,0,15,248,0,0,0,47,240,0,0,0,63,192,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,192,0,0,0,255,64,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,229,85,85,84,191,255,255,255,252,191,255,255,255,252,191,255,255,255,252, + // 0x005b [ + 9,33,99,12,3,250,85,85,0,255,255,64,255,255,64,255,170,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,254,0,0,255,255,64,255,255,64,255,255,0, + // 0x005c "\" + 14,27,108,14,0,0,85,0,0,0,127,64,0,0,63,128,0,0,47,192,0,0,15,208,0,0,15,240,0,0,7,240,0,0,3,248,0,0,2,252,0,0,1,253,0,0,0,254,0,0,0,191,0,0,0,63,64,0,0,63,192,0,0,31,192,0,0,15,224,0,0,11,240,0,0,7,244,0,0,3,248,0,0,2,252,0,0,1,253,0,0,0,255,0,0,0,191,0,0,0,63,128,0,0,63,192,0,0,31,208,0,0,15,224, + // 0x005d ] + 9,33,99,12,1,250,85,85,0,255,255,64,255,255,64,170,191,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,255,255,64,255,255,64,255,255,64, + // 0x005e ^ + 19,18,90,21,1,9,0,0,160,0,0,0,1,248,0,0,0,3,253,0,0,0,7,255,0,0,0,15,255,64,0,0,31,223,192,0,0,47,79,208,0,0,63,7,240,0,0,189,3,244,0,0,252,1,252,0,2,248,0,253,0,3,240,0,127,0,11,224,0,63,64,15,192,0,31,192,31,128,0,15,208,63,64,0,7,240,127,0,0,3,248,20,0,0,0,80, + // 0x005f _ + 16,3,12,16,0,250,170,170,170,170,255,255,255,255,170,170,170,170, + // 0x0060 ` + 8,7,14,11,2,22,85,0,255,128,127,192,31,240,7,248,0,253,0,41, + // 0x0061 a + 18,22,110,21,1,255,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x0062 b + 18,29,145,23,3,255,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,7,255,208,0,255,63,255,252,0,255,255,255,255,0,255,244,2,255,128,255,192,0,127,192,255,128,0,63,208,255,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,64,0,31,224,255,128,0,63,208,255,192,0,127,192,255,244,1,255,128,255,255,255,255,0,253,63,255,252,0,252,11,255,224,0,0,0,20,0,0, + // 0x0063 c + 15,22,88,18,2,255,0,0,84,0,0,47,255,228,2,255,255,248,11,255,255,244,31,253,1,176,63,224,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,192,0,0,63,208,0,0,47,248,0,120,15,255,255,248,2,255,255,248,0,127,255,224,0,1,84,0, + // 0x0064 d + 18,29,145,23,2,255,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,1,64,15,240,0,191,254,15,240,3,255,255,207,240,15,255,255,255,240,47,248,1,255,240,63,208,0,127,240,127,192,0,47,240,191,64,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,191,64,0,15,240,191,128,0,47,240,63,208,0,63,240,47,244,1,255,240,15,255,255,255,240,3,255,255,203,240,0,191,254,7,240,0,1,64,0,0, + // 0x0065 e + 18,22,110,21,2,255,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x0066 f + 15,29,116,13,0,0,0,0,4,0,0,7,255,248,0,31,255,244,0,63,255,240,0,191,192,16,0,255,64,0,0,255,0,0,0,255,0,0,0,255,0,0,7,255,255,128,127,255,255,192,127,255,255,192,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0, + // 0x0067 g + 18,30,150,23,2,247,0,1,64,0,0,0,191,253,7,240,3,255,255,203,240,15,255,255,255,240,47,248,2,255,240,63,208,0,127,240,127,192,0,47,240,191,64,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,191,64,0,15,240,127,128,0,31,240,63,208,0,63,240,47,244,1,255,240,15,255,255,255,240,3,255,255,207,240,0,191,254,15,240,0,1,64,15,240,0,0,0,15,240,0,0,0,31,224,0,0,0,47,208,20,0,0,191,192,47,165,87,255,128,47,255,255,254,0,31,255,255,244,0,1,175,254,64,0, + // 0x0068 h + 18,28,140,23,3,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,4,0,0,255,7,255,224,0,255,63,255,253,0,255,191,255,255,64,255,248,1,255,192,255,208,0,127,192,255,192,0,63,192,255,64,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208, + // 0x0069 i + 4,28,28,10,3,0,20,255,255,255,125,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x006a j + 9,37,111,10,254,247,0,5,0,0,63,192,0,63,192,0,63,192,0,31,64,0,0,0,0,0,0,0,0,0,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,127,192,150,255,128,255,255,0,255,253,0,191,144,0, + // 0x006b k + 17,28,140,21,3,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,255,64,255,0,3,254,0,255,0,15,248,0,255,0,63,224,0,255,0,191,128,0,255,2,255,0,0,255,11,252,0,0,255,31,240,0,0,255,127,192,0,0,255,255,224,0,0,255,255,244,0,0,255,231,252,0,0,255,130,255,0,0,255,0,255,128,0,255,0,63,208,0,255,0,31,240,0,255,0,11,252,0,255,0,3,254,0,255,0,1,255,64,255,0,0,191,192, + // 0x006c l + 4,28,28,10,3,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x006d m + 29,21,168,35,3,0,0,0,16,0,0,4,0,0,253,11,255,224,7,255,244,0,253,63,255,252,47,255,253,0,255,255,255,254,191,255,255,0,255,244,3,255,253,1,255,128,255,192,0,255,240,0,127,192,255,128,0,191,192,0,63,192,255,64,0,127,192,0,63,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192, + // 0x006e n + 18,21,105,23,3,0,0,0,4,0,0,253,7,255,244,0,253,63,255,254,0,255,255,255,255,64,255,248,1,255,192,255,208,0,127,192,255,192,0,63,192,255,64,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208, + // 0x006f o + 19,22,110,23,2,255,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x0070 p + 18,30,150,23,3,247,0,0,20,0,0,253,11,255,224,0,254,63,255,252,0,255,255,255,255,0,255,244,2,255,128,255,192,0,127,192,255,128,0,63,208,255,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,64,0,47,224,255,128,0,63,208,255,208,0,127,192,255,244,2,255,128,255,255,255,255,0,255,63,255,252,0,255,11,255,224,0,255,0,20,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0, + // 0x0071 q + 18,30,150,23,2,247,0,1,64,0,0,0,191,253,7,240,3,255,255,203,240,15,255,255,255,240,47,248,1,255,240,63,208,0,127,240,127,192,0,47,240,191,64,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,191,64,0,15,240,191,128,0,47,240,63,208,0,63,240,47,244,1,255,240,15,255,255,255,240,3,255,255,207,240,0,191,254,15,240,0,1,64,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240, + // 0x0072 r + 12,21,63,16,3,0,0,0,20,252,7,255,253,31,255,254,127,255,255,255,85,255,244,0,255,208,0,255,128,0,255,64,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, + // 0x0073 s + 15,22,88,18,2,255,0,5,64,0,2,255,255,64,47,255,255,240,127,255,255,208,255,64,6,192,254,0,0,0,255,0,0,0,255,128,0,0,191,244,0,0,63,255,128,0,11,255,252,0,0,191,255,128,0,7,255,208,0,0,127,240,0,0,15,240,0,0,11,244,0,0,11,240,228,0,31,240,255,234,255,208,255,255,255,128,111,255,248,0,0,85,0,0, + // 0x0074 t + 14,26,104,14,0,255,0,20,0,0,0,125,0,0,0,189,0,0,0,253,0,0,1,253,0,0,11,255,255,192,127,255,255,192,127,255,255,192,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,1,254,0,0,1,255,64,0,0,255,255,208,0,127,255,208,0,31,255,192,0,0,84,0, + // 0x0075 u + 17,21,105,23,3,255,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,0,0, + // 0x0076 v + 20,20,100,19,0,0,255,64,0,3,253,127,128,0,3,252,63,192,0,11,248,47,208,0,15,240,31,224,0,31,240,15,240,0,47,208,11,244,0,63,192,3,252,0,127,128,3,252,0,191,64,1,253,0,255,0,0,255,1,253,0,0,191,3,252,0,0,127,131,248,0,0,63,199,244,0,0,47,203,240,0,0,15,223,224,0,0,15,255,192,0,0,7,255,192,0,0,3,255,64,0,0,2,255,0,0, + // 0x0077 w + 30,20,160,30,0,0,127,128,0,127,192,0,47,208,63,192,0,191,224,0,63,192,63,192,0,255,240,0,63,192,47,208,0,255,240,0,127,64,31,224,2,251,244,0,191,0,15,240,3,246,248,0,255,0,15,240,3,241,252,0,254,0,11,244,7,240,253,1,253,0,7,248,11,224,254,2,252,0,3,252,15,208,191,3,252,0,2,252,31,192,127,7,248,0,1,253,47,192,63,75,240,0,0,254,63,128,63,139,240,0,0,255,63,0,31,207,224,0,0,191,127,0,15,223,208,0,0,127,190,0,15,239,192,0,0,63,253,0,11,255,192,0,0,63,252,0,7,255,128,0,0,31,248,0,3,255,64,0,0,15,244,0,2,255,0,0, + // 0x0078 x + 18,20,100,20,1,0,255,128,0,31,240,63,208,0,63,192,31,240,0,255,128,15,248,1,255,0,3,253,3,252,0,1,255,15,244,0,0,191,159,240,0,0,63,255,192,0,0,31,255,64,0,0,11,254,0,0,0,15,255,0,0,0,47,255,128,0,0,127,255,208,0,0,255,79,240,0,2,254,11,248,0,7,252,3,253,0,15,244,0,255,0,47,224,0,191,192,127,192,0,63,224,255,64,0,15,240, + // 0x0079 y + 20,29,145,20,0,247,191,64,0,3,253,127,192,0,3,252,63,192,0,11,248,47,224,0,15,240,15,240,0,31,240,15,240,0,47,208,7,248,0,63,192,3,252,0,127,128,2,253,0,191,64,0,254,0,255,0,0,255,1,254,0,0,127,66,252,0,0,63,195,252,0,0,47,199,244,0,0,15,219,240,0,0,15,239,224,0,0,7,255,208,0,0,3,255,192,0,0,2,255,128,0,0,0,255,0,0,0,0,255,0,0,0,2,253,0,0,0,3,252,0,0,0,7,248,0,0,0,31,240,0,0,21,191,224,0,0,127,255,128,0,0,127,254,0,0,0,47,224,0,0,0, + // 0x007a z + 16,20,80,18,1,0,63,255,255,252,63,255,255,252,63,255,255,252,0,0,15,244,0,0,31,240,0,0,63,192,0,0,255,64,0,2,254,0,0,7,252,0,0,15,240,0,0,47,208,0,0,127,192,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,208,0,0,191,255,255,253,191,255,255,253,191,255,255,253, + // 0x007b { + 12,33,99,14,1,250,0,0,5,0,2,255,0,31,255,0,63,254,0,127,208,0,191,64,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,255,0,7,254,0,255,248,0,255,128,0,255,244,0,91,253,0,1,255,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,127,128,0,63,245,0,47,255,0,11,255,0,0,111, + // 0x007c | + 4,37,37,20,8,247,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, + // 0x007d } + 13,33,132,14,1,250,80,0,0,0,191,144,0,0,191,244,0,0,191,252,0,0,3,254,0,0,0,254,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,0,0,0,127,208,0,0,31,255,64,0,1,255,64,0,11,255,64,0,63,245,0,0,191,128,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,254,0,0,1,254,0,0,27,253,0,0,191,252,0,0,191,224,0,0,185,0,0,0, + // 0x007e ~ + 18,6,30,21,2,10,6,164,0,0,0,127,255,144,0,208,255,255,254,175,208,249,111,255,255,192,192,0,191,255,64,0,0,5,164,0, + // 0x007f - 0x009a Control Characters + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x00a0 "�" + 0,0,0,10,0,0, + // 0x00a1 ¡ + 6,27,54,10,2,249,47,128,127,208,127,224,127,208,47,128,0,0,0,0,0,0,31,64,31,128,31,128,47,128,47,128,47,128,47,192,47,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,208,42,128, + // 0x00a2 ¢ + 15,28,112,21,3,255,0,1,240,0,0,2,240,0,0,2,240,0,0,7,254,144,0,191,255,252,7,255,255,248,15,255,150,244,47,244,0,16,63,208,0,0,127,192,0,0,191,64,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,0,191,64,0,0,127,192,0,0,63,208,0,0,47,244,0,20,15,255,170,252,7,255,255,252,0,255,255,248,0,7,254,64,0,2,240,0,0,2,240,0,0,2,240,0,0,0,80,0, + // 0x00a3 £ + 19,27,135,21,1,0,0,0,106,164,0,0,7,255,255,224,0,31,255,255,240,0,63,250,175,208,0,191,128,1,128,0,255,0,0,0,0,255,0,0,0,0,254,0,0,0,0,254,0,0,0,0,254,0,0,0,0,254,0,0,0,0,254,0,0,0,107,255,170,168,0,191,255,255,252,0,191,255,255,252,0,1,255,0,0,0,0,254,0,0,0,0,254,0,0,0,0,254,0,0,0,0,254,0,0,0,1,254,0,0,0,3,252,0,0,0,11,244,0,0,0,127,229,85,85,84,191,255,255,255,252,191,255,255,255,252,191,255,255,255,252, + // 0x00a4 ¤ + 17,17,85,21,2,4,44,0,64,15,0,191,111,254,127,128,63,255,255,255,0,15,254,175,252,0,11,240,2,252,0,15,192,0,253,0,31,64,0,126,0,47,64,0,63,0,47,64,0,63,0,31,128,0,126,0,15,192,0,253,0,11,240,3,252,0,15,255,191,252,0,63,255,255,255,0,191,31,253,63,128,44,0,0,14,0,0,0,0,0,0, + // 0x00a5 ¥ + 19,27,135,21,1,0,85,0,0,0,84,255,0,0,3,252,191,64,0,7,248,63,192,0,15,240,47,208,0,31,224,15,240,0,63,192,11,244,0,127,128,3,252,0,255,0,1,253,1,253,0,0,255,3,252,0,0,127,71,244,0,0,63,207,240,0,0,31,239,208,0,0,15,255,192,0,6,175,255,234,64,11,255,255,255,128,11,255,255,255,128,0,1,253,0,0,0,1,253,0,0,0,1,254,0,0,11,255,255,255,128,11,255,255,255,128,5,86,254,85,64,0,1,253,0,0,0,1,253,0,0,0,1,253,0,0,0,1,253,0,0, + // 0x00a6 ¦ + 4,37,37,20,8,247,126,126,126,126,126,126,126,126,126,126,126,126,126,126,0,0,0,0,0,0,0,0,41,126,126,126,126,126,126,126,126,126,126,126,126,126,126, + // 0x00a7 § + 15,30,120,19,2,255,0,1,64,0,2,255,255,128,15,255,255,240,63,233,175,224,127,64,0,128,127,0,0,0,127,64,0,0,63,208,0,0,31,254,0,0,7,255,224,0,11,255,254,0,47,214,255,192,63,0,47,240,126,0,7,240,190,0,3,244,127,0,3,244,63,192,3,240,47,248,11,240,11,255,255,192,0,191,255,0,0,11,255,192,0,0,127,240,0,0,11,240,0,0,3,244,0,0,3,244,224,0,15,240,255,170,191,224,255,255,255,128,47,255,248,0,0,0,0,0, + // 0x00a8 ¨ + 12,4,12,22,5,23,127,0,252,191,66,253,127,1,252,41,0,164, + // 0x00a9 © + 27,28,196,31,2,255,0,0,22,186,64,0,0,0,2,255,255,253,0,0,0,31,249,85,191,192,0,0,191,64,0,7,244,0,2,244,0,0,0,253,0,7,208,0,89,0,47,0,15,64,11,255,244,15,192,46,0,63,255,240,3,208,60,0,255,0,96,2,240,188,2,252,0,0,0,244,244,3,240,0,0,0,248,240,3,240,0,0,0,188,240,7,224,0,0,0,124,240,7,224,0,0,0,124,240,7,224,0,0,0,124,240,7,224,0,0,0,124,244,3,240,0,0,0,184,184,3,244,0,0,0,244,124,1,252,0,0,0,240,61,0,255,149,176,2,240,47,0,63,255,240,7,208,15,192,7,255,208,15,192,3,240,0,0,0,63,0,1,253,0,0,1,252,0,0,127,144,0,31,240,0,0,11,255,239,255,128,0,0,0,191,255,244,0,0,0,0,0,84,0,0,0, + // 0x00aa ª + 11,14,42,14,1,13,1,170,0,63,255,224,47,155,244,0,1,248,0,0,248,1,171,248,47,255,248,127,64,248,252,0,248,252,1,248,253,11,248,127,255,184,31,244,56,0,0,0, + // 0x00ab « + 17,17,85,20,1,1,0,5,0,5,0,0,15,192,31,192,0,63,192,63,192,0,255,64,255,0,2,253,3,253,0,11,248,11,248,0,31,240,31,224,0,63,192,127,192,0,127,192,191,128,0,47,224,47,224,0,11,244,15,244,0,3,253,3,252,0,0,255,0,255,0,0,127,192,127,128,0,31,208,47,192,0,10,0,10,0,0,0,0,0,0, + // 0x00ac ¬ + 18,11,55,21,2,4,170,170,170,170,128,255,255,255,255,208,255,255,255,255,208,85,85,85,95,208,0,0,0,11,208,0,0,0,11,208,0,0,0,11,208,0,0,0,11,208,0,0,0,11,208,0,0,0,11,208,0,0,0,1,64, + // 0x00ad ­ + 10,4,12,12,1,8,106,170,144,191,255,224,191,255,224,127,255,208, + // 0x00ae ® + 27,28,196,31,2,255,0,0,22,186,64,0,0,0,2,255,255,253,0,0,0,31,249,85,191,192,0,0,191,64,0,7,244,0,2,244,0,0,0,253,0,7,208,21,80,0,47,0,15,64,191,255,128,15,192,46,0,191,255,240,3,208,60,0,188,7,248,2,240,188,0,188,0,252,0,244,244,0,188,0,252,0,248,240,0,188,0,252,0,188,240,0,188,3,244,0,124,240,0,191,255,224,0,124,240,0,191,255,64,0,124,240,0,190,175,64,0,124,244,0,188,15,192,0,184,184,0,188,7,224,0,244,124,0,188,3,244,0,240,61,0,188,1,252,2,240,47,0,188,0,189,7,208,15,192,188,0,63,15,192,3,240,0,0,0,63,0,1,253,0,0,1,252,0,0,127,144,0,31,240,0,0,11,255,239,255,128,0,0,0,191,255,244,0,0,0,0,0,84,0,0,0, + // 0x00af ¯ + 19,3,15,19,0,28,255,255,255,255,248,255,255,255,255,248,255,255,255,255,248, + // 0x00b0 ° + 12,12,36,16,2,15,1,170,64,15,255,224,63,255,252,190,0,253,252,0,63,248,0,63,248,0,63,252,0,63,190,0,189,63,235,252,31,255,240,1,254,64, + // 0x00b1 ± + 18,23,115,21,2,0,0,1,80,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,1,80,0,0,0,0,0,0,0,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208, + // 0x00b2 ² + 11,17,51,13,1,15,1,101,0,31,255,192,191,255,240,125,7,244,16,2,248,0,2,248,0,3,244,0,7,240,0,15,192,0,63,64,0,253,0,7,244,0,31,208,0,127,64,0,255,255,248,255,255,248,170,170,164, + // 0x00b3 ³ + 11,17,51,13,1,15,1,101,0,47,255,192,255,255,240,120,3,244,0,2,248,0,2,244,0,3,240,10,191,192,15,255,64,6,175,240,0,2,248,0,0,252,0,0,252,128,2,252,254,175,244,255,255,224,27,254,0, + // 0x00b4 ´ + 9,7,21,11,1,22,0,85,64,1,255,64,3,253,0,11,248,0,31,208,0,63,64,0,104,0,0, + // 0x00b5 µ + 18,29,145,23,3,247,255,0,0,31,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,63,208,255,64,0,127,208,255,128,0,255,208,255,224,7,255,208,255,255,255,239,208,255,255,255,143,208,255,63,253,15,208,255,1,64,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0, + // 0x00b6 ¶ + 19,33,165,24,2,251,0,127,255,255,248,7,255,255,255,248,31,255,255,213,248,63,255,255,128,248,127,255,255,128,248,191,255,255,128,248,255,255,255,128,248,255,255,255,128,248,255,255,255,128,248,255,255,255,128,248,255,255,255,128,248,255,255,255,128,248,191,255,255,128,248,127,255,255,128,248,63,255,255,128,248,31,255,255,128,248,11,255,255,128,248,1,191,255,128,248,0,0,15,128,248,0,0,15,128,248,0,0,15,128,248,0,0,15,128,248,0,0,15,128,248,0,0,15,128,248,0,0,15,128,248,0,0,15,128,248,0,0,15,128,248,0,0,15,128,248,0,0,15,128,248,0,0,15,128,248,0,0,15,128,248,0,0,15,128,248,0,0,10,64,164, + // 0x00b7 · + 6,6,12,10,2,10,26,64,63,208,127,224,127,208,63,192,5,0, + // 0x00b8 ¸ + 8,9,18,8,0,247,7,192,15,192,31,244,6,253,0,190,0,126,86,253,255,248,191,144, + // 0x00b9 ¹ + 9,16,48,13,1,15,0,191,64,3,255,64,31,255,64,127,111,64,44,47,64,0,47,64,0,63,64,0,63,64,0,63,64,0,63,64,0,63,64,0,63,64,0,63,64,0,63,64,0,63,64,0,26,0, + // 0x00ba º + 12,14,42,14,1,13,0,170,0,11,255,224,47,235,248,126,0,189,188,0,62,252,0,63,252,0,63,252,0,63,188,0,62,125,0,125,63,150,252,15,255,240,2,255,128,0,0,0, + // 0x00bb » + 18,17,85,20,1,1,5,0,5,0,0,63,64,63,0,0,63,192,63,192,0,15,240,31,240,0,7,252,7,248,0,2,254,2,253,0,0,191,64,255,64,0,63,208,63,192,0,47,208,63,208,0,191,128,191,128,1,255,1,254,0,3,252,7,252,0,15,240,15,240,0,63,208,63,192,0,127,128,127,64,0,10,0,10,0,0,0,0,0,0,0, + // 0x00bc ¼ + 27,27,189,28,1,0,0,21,0,0,0,84,0,1,255,0,0,3,244,0,11,255,0,0,7,240,0,63,255,0,0,15,192,0,191,63,0,0,47,128,0,56,63,0,0,63,0,0,0,63,0,0,253,0,0,0,63,0,1,252,0,0,0,63,0,3,240,0,0,0,63,0,11,224,0,0,0,63,0,15,192,0,0,0,63,0,63,64,47,192,0,63,0,127,0,127,192,0,63,0,252,0,255,192,0,63,2,248,2,255,192,0,63,3,240,7,223,192,0,21,15,208,15,159,192,0,0,31,192,47,31,192,0,0,63,64,124,31,192,0,0,190,0,248,31,192,0,0,252,2,240,31,192,0,2,244,7,255,255,252,0,7,240,7,255,255,252,0,15,208,6,170,191,232,0,47,128,0,0,31,192,0,63,0,0,0,31,192,0,190,0,0,0,31,192, + // 0x00bd ½ + 27,27,189,30,1,0,0,21,0,0,1,80,0,1,254,0,0,11,224,0,11,254,0,0,15,192,0,127,254,0,0,63,64,0,254,126,0,0,127,0,0,116,126,0,0,252,0,0,0,126,0,2,248,0,0,0,126,0,3,240,0,0,0,126,0,15,208,0,0,0,126,0,31,192,0,0,0,126,0,63,0,0,0,0,126,0,190,7,255,128,0,126,0,252,63,255,240,0,126,3,244,63,155,248,0,126,7,240,24,1,252,0,126,15,208,0,0,252,0,21,47,128,0,1,252,0,0,63,0,0,2,244,0,0,189,0,0,7,240,0,1,252,0,0,31,192,0,3,244,0,0,127,0,0,11,224,0,1,252,0,0,15,192,0,7,240,0,0,47,128,0,31,192,0,0,127,0,0,127,234,168,0,253,0,0,191,255,252,1,248,0,0,191,255,252, + // 0x00be ¾ + 29,27,216,30,1,0,6,169,0,0,0,21,0,0,127,255,208,0,0,127,0,0,255,175,240,0,0,253,0,0,52,3,248,0,2,248,0,0,0,1,248,0,3,240,0,0,0,2,244,0,11,224,0,0,0,7,240,0,31,192,0,0,11,255,192,0,63,64,0,0,11,255,128,0,190,0,0,0,5,91,244,0,252,0,0,0,0,1,252,2,248,0,0,0,0,0,252,7,240,7,240,0,0,0,252,15,208,15,240,0,208,2,252,31,192,63,240,0,255,191,244,63,0,191,240,0,255,255,208,190,0,247,240,0,22,169,1,252,3,227,240,0,0,0,3,244,11,195,240,0,0,0,7,240,31,67,240,0,0,0,15,192,62,3,240,0,0,0,47,128,188,3,240,0,0,0,63,0,255,255,255,0,0,0,253,1,255,255,255,64,0,1,252,0,170,171,250,0,0,3,244,0,0,3,240,0,0,11,224,0,0,3,240,0,0,15,192,0,0,3,240,0, + // 0x00bf ¿ + 15,28,112,17,1,248,0,3,244,0,0,15,252,0,0,15,252,0,0,15,252,0,0,3,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,244,0,0,3,244,0,0,3,244,0,0,11,240,0,0,31,224,0,0,191,192,0,2,255,0,0,15,252,0,0,47,240,0,0,127,192,0,0,255,0,0,0,255,0,0,0,254,0,0,0,255,0,0,0,255,64,0,96,127,229,91,244,63,255,255,252,11,255,255,244,1,191,254,64,0,0,0,0, + // 0x00c0 À + 24,35,210,24,0,0,0,1,84,0,0,0,0,3,255,0,0,0,0,0,255,64,0,0,0,0,63,192,0,0,0,0,15,240,0,0,0,0,3,248,0,0,0,0,0,168,0,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x00c1 Á + 24,35,210,24,0,0,0,0,0,5,80,0,0,0,0,63,240,0,0,0,0,127,192,0,0,0,0,255,0,0,0,0,3,252,0,0,0,0,11,224,0,0,0,0,10,64,0,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x00c2  + 24,35,210,24,0,0,0,0,5,80,0,0,0,0,47,248,0,0,0,0,127,253,0,0,0,1,254,191,64,0,0,3,248,47,192,0,0,15,208,7,240,0,0,26,0,0,164,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x00c3 à + 24,34,204,24,0,0,0,0,80,0,20,0,0,3,255,64,124,0,0,15,255,245,248,0,0,31,175,255,240,0,0,46,1,255,208,0,0,40,0,25,0,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x00c4 Ä + 24,33,198,24,0,0,0,3,240,15,192,0,0,7,244,31,224,0,0,7,244,15,208,0,0,1,160,6,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x00c5 Å + 24,33,198,24,0,0,0,0,1,64,0,0,0,0,47,248,0,0,0,0,190,190,0,0,0,0,244,31,0,0,0,0,240,15,0,0,0,0,244,31,0,0,0,0,191,255,0,0,0,0,63,252,0,0,0,0,63,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x00c6 Æ + 31,27,216,33,0,0,0,0,0,85,85,85,85,84,0,0,0,255,255,255,255,252,0,0,2,255,255,255,255,252,0,0,3,255,255,255,255,252,0,0,11,244,127,192,0,0,0,0,15,240,63,192,0,0,0,0,31,208,63,192,0,0,0,0,63,192,63,192,0,0,0,0,127,128,63,192,0,0,0,0,255,0,63,192,0,0,0,1,254,0,63,192,0,0,0,3,252,0,63,213,85,80,0,7,248,0,63,255,255,244,0,11,244,0,63,255,255,244,0,15,240,0,63,255,255,244,0,47,208,0,127,192,0,0,0,63,255,255,255,192,0,0,0,191,255,255,255,192,0,0,0,255,255,255,255,192,0,0,2,254,85,85,191,192,0,0,3,252,0,0,63,192,0,0,7,248,0,0,63,192,0,0,15,240,0,0,63,192,0,0,31,224,0,0,63,213,85,84,63,192,0,0,63,255,255,252,127,192,0,0,63,255,255,252,255,64,0,0,63,255,255,252, + // 0x00c7 Ç + 20,36,180,23,2,247,0,0,26,234,64,0,7,255,255,253,0,47,255,255,255,0,255,255,175,253,3,255,208,0,108,11,254,0,0,0,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,127,192,0,0,0,127,192,0,0,0,191,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,128,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,208,0,0,0,47,240,0,0,0,15,248,0,0,0,11,254,0,0,0,3,255,228,1,188,0,255,255,255,252,0,47,255,255,252,0,2,255,255,244,0,0,11,212,0,0,0,15,128,0,0,0,31,244,0,0,0,6,252,0,0,0,0,190,0,0,0,0,190,0,0,0,150,253,0,0,0,255,248,0,0,0,191,144,0, + // 0x00c8 È + 16,35,140,21,3,0,1,84,0,0,2,255,0,0,0,255,128,0,0,63,208,0,0,15,240,0,0,2,248,0,0,0,104,0,0,0,0,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x00c9 É + 16,35,140,21,3,0,0,0,5,80,0,0,47,240,0,0,127,192,0,0,255,0,0,2,252,0,0,7,240,0,0,10,128,0,0,0,0,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x00ca Ê + 16,35,140,21,3,0,0,5,80,0,0,31,252,0,0,127,254,0,0,255,191,128,3,252,31,208,15,224,7,244,26,64,0,168,0,0,0,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x00cb Ë + 16,33,132,21,3,0,3,244,15,208,3,248,15,224,3,248,15,224,1,160,6,128,0,0,0,0,0,0,0,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x00cc Ì + 11,35,105,13,1,0,85,64,0,127,192,0,47,240,0,11,248,0,2,253,0,0,127,0,0,26,64,0,0,0,85,85,84,191,255,248,191,255,248,11,255,128,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,2,254,0,47,255,228,191,255,248,191,255,248, + // 0x00cd Í + 12,35,105,13,1,0,0,1,85,0,7,253,0,15,244,0,47,208,0,127,64,0,253,0,1,160,0,0,0,0,85,85,84,191,255,248,191,255,248,11,255,128,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,2,254,0,47,255,228,191,255,248,191,255,248, + // 0x00ce Î + 13,35,140,13,0,0,0,21,64,0,0,255,192,0,3,255,240,0,11,251,252,0,47,192,254,0,191,0,63,128,164,0,6,128,0,0,0,0,21,85,85,0,47,255,254,0,47,255,254,0,2,255,224,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,191,128,0,11,255,249,0,47,255,254,0,47,255,254,0, + // 0x00cf Ï + 11,33,99,13,1,0,190,1,248,255,3,252,255,2,252,40,0,160,0,0,0,0,0,0,85,85,84,191,255,248,191,255,248,11,255,128,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,2,254,0,47,255,228,191,255,248,191,255,248, + // 0x00d0 Ð + 24,27,162,27,1,0,1,85,85,64,0,0,7,255,255,255,64,0,7,255,255,255,244,0,7,255,255,255,254,0,7,248,0,27,255,192,7,248,0,0,191,224,7,248,0,0,47,244,7,248,0,0,15,252,7,248,0,0,7,252,7,248,0,0,3,253,7,248,0,0,2,254,7,248,0,0,1,255,191,255,255,64,1,255,255,255,255,128,1,255,255,255,255,128,1,255,171,254,170,64,1,255,7,248,0,0,2,254,7,248,0,0,3,253,7,248,0,0,3,252,7,248,0,0,11,252,7,248,0,0,31,244,7,248,0,0,127,240,7,248,0,2,255,192,7,253,85,191,255,64,7,255,255,255,252,0,7,255,255,255,208,0,7,255,255,228,0,0, + // 0x00d1 Ñ + 22,34,204,29,3,0,0,0,80,0,80,0,0,11,253,0,240,0,0,47,255,215,240,0,0,63,175,255,208,0,0,124,2,255,128,0,0,100,0,25,0,0,0,0,0,0,0,0,21,64,0,0,1,80,127,240,0,0,11,240,127,248,0,0,11,240,127,252,0,0,11,240,127,255,0,0,11,240,127,255,64,0,11,240,127,127,192,0,11,240,127,63,224,0,11,240,127,15,244,0,11,240,127,11,252,0,11,240,127,3,254,0,11,240,127,1,255,0,11,240,127,0,191,192,11,240,127,0,63,208,11,240,127,0,31,240,7,240,127,0,15,248,7,240,127,0,3,253,7,240,127,0,2,255,7,240,127,0,0,255,135,240,127,0,0,127,199,240,127,0,0,47,247,240,127,0,0,15,251,240,127,0,0,7,255,240,127,0,0,3,255,240,127,0,0,0,255,240,127,0,0,0,191,240,127,0,0,0,63,240, + // 0x00d2 Ò + 25,36,252,29,2,255,0,1,85,0,0,0,0,0,1,255,0,0,0,0,0,0,191,192,0,0,0,0,0,47,224,0,0,0,0,0,11,244,0,0,0,0,0,1,252,0,0,0,0,0,0,105,0,0,0,0,0,0,0,0,0,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x00d3 Ó + 25,36,252,29,2,255,0,0,0,5,84,0,0,0,0,0,31,244,0,0,0,0,0,63,208,0,0,0,0,0,191,64,0,0,0,0,1,253,0,0,0,0,0,3,244,0,0,0,0,0,6,128,0,0,0,0,0,0,0,0,0,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x00d4 Ô + 25,36,252,29,2,255,0,0,5,80,0,0,0,0,0,15,252,0,0,0,0,0,63,255,0,0,0,0,0,255,191,192,0,0,0,2,252,31,224,0,0,0,11,240,3,248,0,0,0,10,64,0,104,0,0,0,0,0,0,0,0,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x00d5 Õ + 25,35,245,29,2,255,0,0,20,0,20,0,0,0,2,255,128,61,0,0,0,7,255,249,188,0,0,0,15,235,255,248,0,0,0,31,0,191,240,0,0,0,9,0,6,64,0,0,0,0,0,0,0,0,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x00d6 Ö + 25,34,238,29,2,255,0,2,248,7,224,0,0,0,3,252,15,240,0,0,0,3,252,11,240,0,0,0,0,160,2,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x00d7 × + 16,17,68,21,3,4,116,0,0,52,253,0,0,253,255,64,3,252,63,208,15,240,15,244,63,192,3,253,255,0,0,255,252,0,0,63,240,0,0,63,244,0,0,255,253,0,3,253,255,64,15,240,63,208,63,192,15,240,255,0,3,252,252,0,0,252,48,0,0,48,0,0,0,0, + // 0x00d8 Ø + 25,30,210,29,2,254,0,0,0,0,0,64,0,0,0,107,250,64,244,0,0,11,255,255,251,252,0,0,127,255,255,255,240,0,1,255,254,175,255,224,0,3,255,128,0,191,240,0,15,252,0,0,191,252,0,31,244,0,0,255,253,0,63,224,0,3,250,255,0,63,208,0,11,240,255,0,127,192,0,31,192,255,64,191,128,0,63,128,191,128,191,128,0,191,0,191,128,191,128,1,252,0,127,128,255,64,3,244,0,127,192,191,64,15,224,0,127,192,191,128,47,192,0,127,128,191,128,63,64,0,191,128,127,192,254,0,0,255,64,63,194,252,0,0,255,64,63,215,244,0,1,255,0,47,255,224,0,3,254,0,15,255,192,0,11,252,0,11,255,64,0,47,248,0,3,255,228,2,255,240,0,2,255,255,255,255,192,0,7,255,255,255,254,0,0,15,210,255,255,224,0,0,3,128,1,84,0,0,0,0,0,0,0,0,0,0, + // 0x00d9 Ù + 21,36,216,27,3,255,0,5,80,0,0,0,0,31,244,0,0,0,0,7,252,0,0,0,0,1,254,0,0,0,0,0,127,64,0,0,0,0,31,192,0,0,0,0,2,144,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,254,0,0,0,0,21,64,0,0, + // 0x00da Ú + 21,36,216,27,3,255,0,0,0,85,64,0,0,0,1,255,64,0,0,0,3,254,0,0,0,0,11,248,0,0,0,0,31,224,0,0,0,0,63,64,0,0,0,0,105,0,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,254,0,0,0,0,21,64,0,0, + // 0x00db Û + 21,36,216,27,3,255,0,0,21,64,0,0,0,0,255,208,0,0,0,3,255,240,0,0,0,11,251,252,0,0,0,47,208,255,0,0,0,127,0,47,128,0,0,168,0,6,128,0,0,0,0,0,0,0,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,254,0,0,0,0,21,64,0,0, + // 0x00dc Ü + 21,34,204,27,3,255,0,31,128,126,0,0,0,63,192,191,0,0,0,47,192,191,0,0,0,10,64,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,254,0,0,0,0,21,64,0,0, + // 0x00dd Ý + 21,35,210,22,0,0,0,0,0,85,64,0,0,0,0,255,128,0,0,0,3,254,0,0,0,0,7,248,0,0,0,0,15,224,0,0,0,0,63,128,0,0,0,0,41,0,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,192,0,0,63,192,63,208,0,0,191,128,31,240,0,1,255,0,15,244,0,3,253,0,7,252,0,7,252,0,3,253,0,15,244,0,1,255,0,31,240,0,0,191,64,63,208,0,0,63,192,127,128,0,0,47,224,255,0,0,0,15,241,254,0,0,0,11,251,252,0,0,0,3,255,248,0,0,0,1,255,240,0,0,0,0,255,208,0,0,0,0,127,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x00de Þ + 18,27,135,23,3,0,21,0,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,255,254,64,0,127,255,255,248,0,127,255,255,255,0,127,149,111,255,128,127,128,0,255,192,127,128,0,63,208,127,128,0,47,224,127,128,0,31,240,127,128,0,31,240,127,128,0,31,224,127,128,0,63,208,127,128,0,127,192,127,128,7,255,128,127,255,255,255,0,127,255,255,248,0,127,255,255,144,0,127,149,80,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0, + // 0x00df ß + 20,30,150,24,3,255,0,0,80,0,0,0,191,255,224,0,11,255,255,253,0,47,255,255,255,64,127,224,1,255,192,191,128,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,128,255,0,1,255,0,255,0,11,252,0,255,0,47,240,0,255,0,127,192,0,255,0,191,0,0,255,0,191,64,0,255,0,191,208,0,255,0,63,248,0,255,0,15,255,0,255,0,2,255,208,255,0,0,127,244,255,0,0,15,252,255,0,0,3,253,255,0,0,1,254,255,0,0,1,254,255,0,0,1,254,255,3,64,3,253,255,3,254,191,252,255,3,255,255,240,255,1,255,255,128,0,0,5,80,0, + // 0x00e0 à + 18,30,150,21,1,255,0,85,64,0,0,0,127,208,0,0,0,31,240,0,0,0,7,248,0,0,0,1,253,0,0,0,0,127,0,0,0,0,10,64,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x00e1 á + 18,30,150,21,1,255,0,0,1,85,0,0,0,7,253,0,0,0,15,244,0,0,0,47,224,0,0,0,127,64,0,0,0,253,0,0,0,1,160,0,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x00e2 â + 18,30,150,21,1,255,0,0,85,0,0,0,3,255,64,0,0,15,255,192,0,0,47,239,240,0,0,191,67,252,0,1,252,0,254,0,2,160,0,26,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x00e3 ã + 18,29,145,21,1,255,0,5,0,1,64,0,127,224,15,128,1,255,254,111,0,3,250,255,255,0,3,192,47,252,0,2,128,1,144,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x00e4 ä + 18,28,140,21,1,255,0,126,1,248,0,0,255,2,252,0,0,191,2,252,0,0,40,0,164,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x00e5 å + 18,32,160,21,1,255,0,0,84,0,0,0,7,255,64,0,0,15,239,208,0,0,31,3,224,0,0,46,1,240,0,0,31,2,224,0,0,15,155,208,0,0,7,255,128,0,0,0,100,0,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x00e6 æ + 30,22,176,33,1,255,0,0,16,0,0,20,0,0,0,127,255,208,11,255,208,0,7,255,255,248,127,255,248,0,3,255,255,254,255,239,255,0,2,208,1,255,252,0,255,64,0,0,0,127,240,0,63,192,0,0,0,63,224,0,47,208,0,0,0,63,192,0,31,224,0,0,0,63,192,0,31,224,0,27,255,255,255,255,255,224,2,255,255,255,255,255,255,240,15,255,165,127,255,255,255,224,47,244,0,63,192,0,0,0,63,192,0,63,192,0,0,0,127,192,0,63,208,0,0,0,127,128,0,191,224,0,0,0,63,192,0,255,244,0,0,0,63,224,7,251,254,0,6,192,47,254,191,225,255,255,255,192,15,255,255,128,127,255,255,192,2,255,253,0,11,255,254,0,0,5,64,0,0,21,0,0, + // 0x00e7 ç + 15,30,120,18,2,247,0,0,84,0,0,47,255,228,2,255,255,248,11,255,255,244,31,253,1,176,63,224,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,192,0,0,63,208,0,0,47,248,0,120,15,255,255,248,2,255,255,248,0,127,255,224,0,3,244,0,0,3,224,0,0,11,252,0,0,1,255,0,0,0,63,64,0,0,63,64,0,37,191,0,0,63,253,0,0,63,224,0, + // 0x00e8 è + 18,30,150,21,2,255,0,85,0,0,0,1,255,64,0,0,0,127,192,0,0,0,31,224,0,0,0,7,244,0,0,0,1,252,0,0,0,0,41,0,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x00e9 é + 18,30,150,21,2,255,0,0,5,84,0,0,0,31,244,0,0,0,63,224,0,0,0,191,128,0,0,1,254,0,0,0,3,244,0,0,0,6,144,0,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x00ea ê + 18,30,150,21,2,255,0,1,84,0,0,0,15,253,0,0,0,63,255,0,0,0,191,191,192,0,2,253,15,240,0,7,240,2,248,0,10,128,0,104,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x00eb ë + 18,28,140,21,2,255,1,248,7,224,0,3,252,11,240,0,2,252,11,240,0,0,164,2,144,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x00ec ì + 8,29,58,10,0,0,85,0,255,128,63,208,15,240,3,248,0,253,0,42,0,0,0,0,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252, + // 0x00ed í + 8,29,58,10,3,0,0,85,3,255,11,252,15,240,63,192,190,0,164,0,0,0,0,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, + // 0x00ee î + 14,29,116,10,254,0,0,21,64,0,0,191,224,0,1,255,244,0,7,250,253,0,15,224,191,0,63,64,31,192,104,0,2,144,0,0,0,0,0,0,0,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0, + // 0x00ef ï + 12,27,81,10,255,0,63,0,252,127,65,253,127,64,253,25,0,104,0,0,0,0,0,0,0,0,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0, + // 0x00f0 ð + 19,29,145,23,2,255,0,30,0,29,0,0,63,208,191,0,0,47,255,254,0,0,7,255,240,0,0,3,255,208,0,0,47,255,240,0,0,255,199,252,0,0,125,1,254,0,0,16,0,191,64,0,0,0,63,192,0,6,165,31,208,0,255,255,223,224,7,255,255,255,240,31,254,91,255,240,63,224,0,127,244,127,192,0,31,248,191,64,0,15,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,244,255,0,0,11,240,191,128,0,15,240,63,192,0,47,224,47,244,0,191,192,15,255,239,255,64,2,255,255,252,0,0,111,255,224,0,0,0,84,0,0, + // 0x00f1 ñ + 18,28,140,23,3,0,0,20,0,5,0,1,255,128,62,0,7,255,249,188,0,15,235,255,252,0,15,0,191,240,0,10,0,6,64,0,0,0,0,0,0,0,0,4,0,0,253,7,255,244,0,253,63,255,254,0,255,255,255,255,64,255,248,1,255,192,255,208,0,127,192,255,192,0,63,192,255,64,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208, + // 0x00f2 ò + 19,30,150,23,2,255,0,85,0,0,0,0,191,192,0,0,0,63,224,0,0,0,15,244,0,0,0,2,252,0,0,0,0,190,0,0,0,0,26,0,0,0,0,0,0,0,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x00f3 ó + 19,30,150,23,2,255,0,0,1,84,0,0,0,11,252,0,0,0,31,240,0,0,0,63,192,0,0,0,191,0,0,0,1,252,0,0,0,1,160,0,0,0,0,0,0,0,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x00f4 ô + 19,30,150,23,2,255,0,1,84,0,0,0,7,255,0,0,0,15,255,128,0,0,63,239,224,0,0,255,7,244,0,3,248,1,253,0,2,144,0,42,0,0,0,0,0,0,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x00f5 õ + 19,29,145,23,2,255,0,5,0,5,0,0,255,208,15,0,2,255,253,127,0,3,251,255,253,0,11,192,63,248,0,6,64,1,64,0,0,0,0,0,0,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x00f6 ö + 19,28,140,23,2,255,0,253,2,244,0,0,254,3,248,0,0,254,3,248,0,0,104,1,160,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x00f7 ÷ + 18,18,90,21,2,4,0,1,144,0,0,0,7,244,0,0,0,11,248,0,0,0,11,248,0,0,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,170,170,170,170,128,255,255,255,255,208,255,255,255,255,208,85,85,85,85,64,0,0,0,0,0,0,0,0,0,0,0,3,240,0,0,0,11,248,0,0,0,11,248,0,0,0,7,244,0,0,0,1,144,0,0, + // 0x00f8 ø + 19,23,115,23,2,254,0,0,16,3,0,0,47,255,219,208,2,255,255,255,192,11,255,255,255,64,31,248,1,255,192,63,208,1,255,208,127,192,3,255,240,191,64,15,239,240,255,0,47,203,244,255,0,127,11,248,255,0,253,7,248,255,2,252,7,248,255,7,240,7,248,255,15,208,11,244,191,127,128,15,240,127,255,0,31,240,63,253,0,63,224,31,252,1,255,192,15,255,255,255,0,31,255,255,252,0,63,175,255,208,0,14,0,84,0,0,0,0,0,0,0, + // 0x00f9 ù + 17,30,150,23,3,255,0,85,0,0,0,1,255,64,0,0,0,127,192,0,0,0,31,224,0,0,0,7,244,0,0,0,1,252,0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,0,0, + // 0x00fa ú + 17,30,150,23,3,255,0,0,5,84,0,0,0,31,244,0,0,0,63,224,0,0,0,191,128,0,0,1,254,0,0,0,3,244,0,0,0,6,144,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,0,0, + // 0x00fb û + 17,30,150,23,3,255,0,1,84,0,0,0,15,253,0,0,0,63,255,0,0,0,191,191,192,0,2,253,15,240,0,7,240,3,248,0,10,128,0,104,0,0,0,0,0,0,0,0,0,0,0,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,0,0, + // 0x00fc ü + 17,28,140,23,3,255,1,248,7,224,0,3,252,11,240,0,2,252,11,240,0,0,160,2,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,0,0, + // 0x00fd ý + 20,38,190,20,0,247,0,0,1,85,0,0,0,3,254,0,0,0,15,248,0,0,0,31,224,0,0,0,63,128,0,0,0,254,0,0,0,0,164,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,3,253,127,192,0,3,252,63,192,0,11,248,47,224,0,15,240,15,240,0,31,240,15,240,0,47,208,7,248,0,63,192,3,252,0,127,128,2,253,0,191,64,0,254,0,255,0,0,255,1,254,0,0,127,66,252,0,0,63,195,252,0,0,47,199,244,0,0,15,219,240,0,0,15,239,224,0,0,7,255,208,0,0,3,255,192,0,0,2,255,128,0,0,0,255,0,0,0,0,255,0,0,0,2,253,0,0,0,3,252,0,0,0,7,248,0,0,0,31,240,0,0,21,191,224,0,0,127,255,128,0,0,127,254,0,0,0,47,224,0,0,0, + // 0x00fe þ + 18,37,185,23,3,247,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,20,0,0,255,7,255,224,0,255,63,255,252,0,255,255,255,255,0,255,244,2,255,128,255,192,0,127,192,255,128,0,63,208,255,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,64,0,31,224,255,128,0,63,208,255,208,0,127,192,255,244,1,255,128,255,255,255,255,0,255,63,255,252,0,255,11,255,224,0,255,0,20,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0, + // 0x00ff ÿ + 20,36,180,20,0,247,0,127,1,252,0,0,191,2,252,0,0,191,2,252,0,0,41,0,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,3,253,127,192,0,3,252,63,192,0,11,248,47,224,0,15,240,15,240,0,31,240,15,240,0,47,208,7,248,0,63,192,3,252,0,127,128,2,253,0,191,64,0,254,0,255,0,0,255,1,254,0,0,127,66,252,0,0,63,195,252,0,0,47,199,244,0,0,15,219,240,0,0,15,239,224,0,0,7,255,208,0,0,3,255,192,0,0,2,255,128,0,0,0,255,0,0,0,0,255,0,0,0,2,253,0,0,0,3,252,0,0,0,7,248,0,0,0,31,240,0,0,21,191,224,0,0,127,255,128,0,0,127,254,0,0,0,47,224,0,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_ASCII_27.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_ASCII_27.cpp new file mode 100644 index 0000000000..384408c9d3 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_ASCII_27.cpp @@ -0,0 +1,222 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium ASCII 37pt, capital 'A' height: 27px, width: 100%, range: 0x0020-0x007e +extern const uint8_t NotoSans_Medium_ASCII_27[11627] = { + 130,27,32,0,126,0,35,247, // unifont_t + // 0x0020 " " + 0,0,0,10,0,0, + // 0x0021 ! + 6,28,56,10,2,255,21,64,63,208,63,208,63,208,63,192,63,192,63,192,63,192,63,192,63,192,47,192,47,192,47,192,47,192,47,128,31,128,31,128,31,128,31,128,0,0,0,0,0,0,26,64,63,208,127,224,127,208,63,192,5,0, + // 0x0022 " + 12,11,33,16,2,16,21,0,84,191,65,253,127,1,252,127,1,252,127,1,252,63,0,252,63,0,252,63,0,252,62,0,252,62,0,248,0,0,0, + // 0x0023 # + 22,27,162,24,1,0,0,0,84,0,84,0,0,0,252,1,248,0,0,1,248,1,248,0,0,2,248,2,244,0,0,2,244,3,240,0,0,3,240,3,240,0,0,3,240,3,224,0,0,7,240,7,224,0,42,175,250,175,250,160,63,255,255,255,255,240,63,255,255,255,255,240,0,15,192,31,192,0,0,15,192,31,128,0,0,31,128,47,64,0,0,47,64,63,0,0,0,63,0,63,0,0,85,127,85,191,85,64,255,255,255,255,255,128,255,255,255,255,255,128,85,254,85,253,85,64,0,252,0,252,0,0,0,252,0,252,0,0,0,252,1,248,0,0,1,248,2,244,0,0,1,244,3,244,0,0,2,244,3,240,0,0,3,240,3,240,0,0, + // 0x0024 $ + 17,31,155,21,2,253,0,2,240,0,0,0,2,240,0,0,0,2,240,0,0,0,111,255,164,0,7,255,255,255,64,47,255,255,255,0,127,251,246,191,0,191,130,240,5,0,255,2,240,0,0,255,2,240,0,0,255,66,240,0,0,127,210,240,0,0,63,255,240,0,0,15,255,249,0,0,2,255,255,208,0,0,31,255,252,0,0,2,255,255,0,0,2,242,255,192,0,2,240,63,192,0,2,240,47,192,0,2,240,47,192,64,2,240,63,192,254,66,246,255,128,255,255,255,255,0,255,255,255,248,0,27,255,255,128,0,0,6,240,0,0,0,2,240,0,0,0,2,240,0,0,0,2,240,0,0,0,0,0,0,0, + // 0x0025 % + 29,28,224,32,1,255,0,170,64,0,0,85,0,0,7,255,224,0,0,252,0,0,15,255,248,0,2,248,0,0,47,193,252,0,3,240,0,0,63,64,254,0,15,224,0,0,63,0,126,0,31,192,0,0,127,0,127,0,63,64,0,0,127,0,63,0,127,0,0,0,127,0,63,0,253,0,0,0,127,0,63,2,252,0,0,0,127,0,127,3,240,0,0,0,63,0,127,11,224,191,224,0,63,64,254,15,195,255,252,0,31,193,252,47,135,250,254,0,15,255,248,127,15,224,127,0,3,255,240,253,15,192,63,64,0,110,65,252,31,192,47,128,0,0,3,244,31,192,31,192,0,0,11,240,47,128,31,192,0,0,15,192,47,128,31,192,0,0,47,128,31,192,31,192,0,0,63,0,31,192,47,128,0,0,190,0,15,192,63,128,0,1,252,0,15,208,63,0,0,3,244,0,7,249,255,0,0,7,240,0,3,255,252,0,0,15,208,0,0,191,244,0,0,0,0,0,0,5,0,0, + // 0x0026 & + 25,28,196,27,2,255,0,6,250,64,0,0,0,0,127,255,240,0,0,0,2,255,255,252,0,0,0,3,254,91,254,0,0,0,11,248,1,255,0,0,0,11,240,0,255,0,0,0,11,240,0,255,0,0,0,11,240,0,255,0,0,0,7,248,2,253,0,0,0,3,253,11,252,0,0,0,0,255,191,240,0,0,0,0,127,255,128,0,0,0,0,63,253,0,0,0,0,2,255,253,0,0,169,0,11,255,255,64,2,253,0,47,248,191,208,3,252,0,127,208,47,244,3,252,0,255,128,11,253,11,244,0,255,0,2,255,79,240,0,255,0,0,191,255,208,0,255,0,0,47,255,128,0,255,64,0,11,255,0,0,255,192,0,31,255,128,0,127,244,1,255,255,224,0,47,255,255,255,175,248,0,11,255,255,253,7,254,0,1,191,255,208,1,255,128,0,1,80,0,0,0,0, + // 0x0027 ' + 5,11,22,9,2,16,21,0,191,64,127,0,127,0,127,0,63,0,63,0,63,0,62,0,62,0,0,0, + // 0x0028 ( + 9,33,99,12,1,250,0,5,64,0,63,192,0,127,0,0,254,0,2,252,0,3,248,0,11,240,0,15,240,0,31,208,0,47,192,0,63,192,0,63,128,0,63,128,0,127,64,0,127,64,0,127,64,0,191,0,0,127,0,0,127,64,0,127,64,0,127,64,0,63,128,0,63,192,0,47,192,0,31,208,0,15,224,0,15,240,0,7,244,0,3,252,0,1,253,0,0,255,0,0,63,64,0,31,192, + // 0x0029 ) + 9,33,99,12,1,250,85,0,0,127,64,0,47,192,0,15,224,0,11,240,0,3,248,0,2,252,0,1,253,0,0,255,0,0,191,0,0,127,64,0,63,128,0,63,128,0,63,192,0,63,192,0,63,192,0,47,192,0,47,192,0,63,192,0,63,192,0,63,192,0,63,128,0,127,64,0,191,64,0,255,0,0,254,0,1,253,0,3,252,0,7,244,0,15,240,0,31,208,0,63,128,0,127,0,0, + // 0x002a * + 18,17,85,20,1,11,0,3,252,0,0,0,2,252,0,0,0,2,252,0,0,0,1,248,0,0,0,1,248,0,0,57,1,244,6,208,127,249,249,255,224,127,255,255,255,224,111,255,255,255,160,0,7,254,0,0,0,15,255,64,0,0,63,159,192,0,0,191,15,224,0,1,254,7,248,0,3,253,3,252,0,1,252,2,244,0,0,20,0,64,0, + // 0x002b + + 18,18,90,21,2,4,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,170,171,250,170,128,255,255,255,255,208,255,255,255,255,208,85,87,245,85,64,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0, + // 0x002c , + 7,10,20,10,1,251,1,80,15,244,15,240,15,224,31,208,47,192,63,128,63,0,127,0,125,0, + // 0x002d - + 10,4,12,12,1,8,106,170,144,191,255,224,191,255,224,127,255,208, + // 0x002e . + 6,6,12,10,2,255,26,64,63,208,127,224,127,208,63,192,5,0, + // 0x002f / + 14,27,108,14,0,0,0,0,5,80,0,0,15,224,0,0,47,192,0,0,63,192,0,0,127,64,0,0,191,0,0,0,254,0,0,1,253,0,0,3,252,0,0,3,248,0,0,11,240,0,0,15,240,0,0,31,208,0,0,47,192,0,0,63,128,0,0,127,64,0,0,255,0,0,0,254,0,0,2,252,0,0,3,252,0,0,7,244,0,0,11,240,0,0,15,224,0,0,31,208,0,0,47,192,0,0,63,128,0,0,127,0,0,0, + // 0x0030 0 + 19,28,140,21,1,255,0,6,250,64,0,0,127,255,240,0,1,255,255,253,0,3,255,171,255,0,11,252,0,191,128,15,240,0,63,192,31,224,0,31,208,47,192,0,15,240,63,192,0,15,240,63,192,0,11,240,63,128,0,11,244,127,128,0,11,244,127,128,0,7,244,127,128,0,7,244,127,128,0,7,244,127,128,0,11,244,63,128,0,11,244,63,192,0,11,244,63,192,0,15,240,63,192,0,15,240,31,208,0,31,224,15,224,0,47,208,15,244,0,63,192,7,253,1,255,128,2,255,255,255,0,0,191,255,252,0,0,31,255,224,0,0,0,84,0,0, + // 0x0031 1 + 11,27,81,21,3,0,0,1,84,0,11,252,0,63,252,1,255,252,7,255,252,47,247,252,255,195,252,127,3,252,24,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252, + // 0x0032 2 + 19,27,135,21,1,0,0,6,186,64,0,0,255,255,244,0,11,255,255,254,0,63,255,171,255,64,31,208,0,255,192,11,0,0,63,192,0,0,0,47,208,0,0,0,47,208,0,0,0,47,208,0,0,0,63,192,0,0,0,63,192,0,0,0,191,64,0,0,1,255,0,0,0,3,252,0,0,0,15,244,0,0,0,63,224,0,0,0,255,128,0,0,3,254,0,0,0,15,248,0,0,0,63,224,0,0,0,255,128,0,0,3,254,0,0,0,15,244,0,0,0,63,245,85,85,80,127,255,255,255,244,127,255,255,255,244,127,255,255,255,244, + // 0x0033 3 + 18,28,140,21,1,255,0,26,186,64,0,2,255,255,248,0,47,255,255,254,0,63,254,171,255,128,15,128,0,191,192,4,0,0,63,208,0,0,0,47,208,0,0,0,47,208,0,0,0,47,192,0,0,0,63,192,0,0,0,255,64,0,21,91,253,0,0,127,255,224,0,0,127,255,144,0,0,127,255,254,0,0,0,6,255,192,0,0,0,63,224,0,0,0,31,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,31,240,0,0,0,63,224,126,64,1,255,192,127,255,255,255,64,127,255,255,253,0,27,255,255,208,0,0,5,80,0,0, + // 0x0034 4 + 21,27,162,21,0,0,0,0,0,42,64,0,0,0,0,255,192,0,0,0,2,255,192,0,0,0,3,255,192,0,0,0,15,255,192,0,0,0,47,191,192,0,0,0,127,63,192,0,0,0,254,63,192,0,0,2,252,63,192,0,0,7,240,63,192,0,0,15,208,63,192,0,0,47,192,63,192,0,0,127,0,63,192,0,0,253,0,63,192,0,3,248,0,63,192,0,11,240,0,63,192,0,15,208,0,63,192,0,63,192,0,63,192,0,127,255,255,255,255,64,127,255,255,255,255,64,127,255,255,255,255,64,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0, + // 0x0035 5 + 17,28,140,21,2,255,5,85,85,84,0,31,255,255,253,0,31,255,255,253,0,31,255,255,253,0,47,192,0,0,0,47,192,0,0,0,47,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,128,0,0,0,63,133,80,0,0,63,255,255,128,0,63,255,255,248,0,63,255,255,254,0,4,0,7,255,0,0,0,0,255,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,127,128,64,0,0,255,64,249,0,11,255,0,255,255,255,252,0,255,255,255,224,0,31,255,254,64,0,0,21,64,0,0, + // 0x0036 6 + 18,28,140,21,2,255,0,0,106,169,0,0,11,255,254,0,0,127,255,254,0,2,255,249,89,0,7,254,0,0,0,15,244,0,0,0,47,224,0,0,0,63,192,0,0,0,127,128,0,0,0,191,0,0,0,0,191,1,170,64,0,255,31,255,244,0,254,127,255,254,0,255,254,91,255,64,255,224,0,191,192,255,128,0,63,192,255,0,0,47,208,255,0,0,31,224,255,0,0,31,224,255,0,0,31,208,191,64,0,47,208,127,128,0,63,192,63,208,0,127,192,31,248,2,255,64,11,255,255,254,0,2,255,255,248,0,0,47,255,208,0,0,0,84,0,0, + // 0x0037 7 + 19,27,135,21,1,0,21,85,85,85,80,191,255,255,255,248,191,255,255,255,248,191,255,255,255,244,0,0,0,15,240,0,0,0,31,224,0,0,0,63,192,0,0,0,127,128,0,0,0,191,64,0,0,0,255,0,0,0,2,253,0,0,0,3,252,0,0,0,11,244,0,0,0,15,240,0,0,0,31,224,0,0,0,63,192,0,0,0,127,128,0,0,0,255,64,0,0,1,255,0,0,0,3,253,0,0,0,3,252,0,0,0,11,244,0,0,0,15,240,0,0,0,47,224,0,0,0,63,192,0,0,0,191,128,0,0,0,255,64,0,0, + // 0x0038 8 + 19,28,140,21,1,255,0,6,186,64,0,0,191,255,248,0,3,255,255,255,0,11,254,86,255,192,15,240,0,63,208,31,224,0,31,224,31,208,0,15,224,31,208,0,31,224,15,224,0,47,208,15,244,0,127,192,3,254,2,255,0,1,255,239,252,0,0,63,255,224,0,0,47,255,208,0,1,255,255,252,0,7,254,7,255,64,15,244,0,191,208,47,208,0,31,240,63,192,0,11,240,63,128,0,7,244,127,64,0,7,244,63,128,0,11,244,63,192,0,15,240,47,244,0,127,224,15,255,171,255,192,3,255,255,254,0,0,127,255,228,0,0,0,84,0,0, + // 0x0039 9 + 19,28,140,21,1,255,0,6,169,0,0,0,191,255,224,0,2,255,255,252,0,11,255,171,255,0,31,244,0,255,128,47,208,0,63,208,63,192,0,31,224,63,128,0,15,240,127,128,0,11,240,127,128,0,11,244,63,128,0,11,244,63,192,0,15,244,63,208,0,47,244,31,244,0,255,244,15,255,255,251,244,3,255,255,219,240,0,127,254,11,240,0,1,64,15,240,0,0,0,15,224,0,0,0,31,208,0,0,0,63,192,0,0,0,191,128,0,0,2,255,0,0,0,31,253,0,7,255,255,244,0,7,255,255,192,0,7,255,249,0,0,0,85,0,0,0, + // 0x003a : + 6,22,44,10,2,255,5,0,63,192,127,208,127,224,63,208,31,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,64,63,208,127,224,127,208,63,192,5,0, + // 0x003b ; + 7,26,52,10,1,251,1,64,15,240,31,244,47,244,31,244,7,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,80,15,240,31,240,31,224,47,192,63,192,63,64,127,0,190,0,188,0, + // 0x003c < + 18,19,95,21,2,4,0,0,0,0,64,0,0,0,7,208,0,0,0,127,208,0,0,7,255,192,0,0,127,253,0,0,7,255,208,0,0,127,253,0,0,7,255,208,0,0,127,249,0,0,0,255,128,0,0,0,255,208,0,0,0,127,254,0,0,0,7,255,228,0,0,0,47,255,64,0,0,2,255,248,0,0,0,31,255,192,0,0,1,255,208,0,0,0,11,208,0,0,0,0,144, + // 0x003d = + 17,11,55,21,2,7,255,255,255,255,192,255,255,255,255,192,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,192,255,255,255,255,192,255,255,255,255,192,0,0,0,0,0, + // 0x003e > + 18,19,95,21,2,4,64,0,0,0,0,244,0,0,0,0,255,64,0,0,0,255,244,0,0,0,31,255,64,0,0,1,255,244,0,0,0,31,255,64,0,0,1,191,244,0,0,0,11,255,64,0,0,0,191,208,0,0,1,191,208,0,0,31,255,128,0,2,255,244,0,0,127,254,64,0,11,255,224,0,0,191,253,0,0,0,255,208,0,0,0,249,0,0,0,0,128,0,0,0,0, + // 0x003f ? + 16,28,112,17,0,255,0,106,164,0,31,255,255,128,127,255,255,240,63,250,191,252,45,0,7,252,0,0,1,253,0,0,0,254,0,0,0,254,0,0,1,253,0,0,3,252,0,0,15,244,0,0,63,224,0,1,255,128,0,7,253,0,0,15,244,0,0,31,208,0,0,47,128,0,0,63,64,0,0,63,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,64,0,0,127,192,0,0,191,208,0,0,191,208,0,0,63,192,0,0,5,0,0, + // 0x0040 @ + 29,31,248,33,2,252,0,0,0,21,80,0,0,0,0,0,27,255,255,144,0,0,0,1,255,255,255,253,0,0,0,11,255,149,91,255,128,0,0,63,224,0,0,127,224,0,0,255,64,0,0,7,248,0,3,252,0,0,0,1,253,0,11,240,0,5,64,0,191,0,15,208,1,255,255,128,63,64,47,128,15,255,255,208,47,128,63,0,63,229,111,192,15,192,63,0,191,64,15,192,15,192,126,0,253,0,15,192,15,192,189,1,252,0,15,192,15,192,252,2,248,0,15,192,15,192,252,2,248,0,31,192,15,192,252,2,248,0,31,192,15,192,252,2,248,0,47,192,31,128,253,1,252,0,63,192,47,64,189,0,254,0,191,208,127,0,190,0,191,235,247,250,253,0,63,0,47,255,209,255,244,0,63,64,6,254,0,127,128,0,31,192,0,0,0,0,0,0,15,240,0,0,0,0,0,0,3,252,0,0,0,0,0,0,1,255,128,0,1,180,0,0,0,127,254,170,191,244,0,0,0,11,255,255,255,240,0,0,0,0,111,255,254,64,0,0,0,0,0,0,0,0,0,0, + // 0x0041 A + 24,27,162,24,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x0042 B + 20,27,135,24,3,0,21,85,84,0,0,127,255,255,248,0,127,255,255,255,64,127,255,255,255,208,127,128,1,191,240,127,128,0,31,244,127,128,0,15,244,127,128,0,11,244,127,128,0,11,244,127,128,0,15,240,127,128,0,47,224,127,149,86,255,128,127,255,255,253,0,127,255,255,249,0,127,255,255,255,192,127,128,0,127,240,127,128,0,15,248,127,128,0,3,252,127,128,0,3,252,127,128,0,3,253,127,128,0,3,252,127,128,0,11,252,127,128,0,31,248,127,149,86,255,240,127,255,255,255,208,127,255,255,255,0,127,255,255,228,0, + // 0x0043 C + 20,28,140,23,2,255,0,0,26,234,64,0,7,255,255,253,0,47,255,255,255,0,255,255,175,253,3,255,208,0,108,11,254,0,0,0,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,127,192,0,0,0,127,192,0,0,0,191,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,128,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,208,0,0,0,47,240,0,0,0,15,248,0,0,0,11,254,0,0,0,3,255,228,1,188,0,255,255,255,252,0,47,255,255,252,0,2,255,255,244,0,0,5,84,0, + // 0x0044 D + 22,27,162,27,3,0,21,85,84,0,0,0,127,255,255,244,0,0,127,255,255,255,64,0,127,255,255,255,224,0,127,128,1,191,252,0,127,128,0,11,254,0,127,128,0,2,255,64,127,128,0,0,255,192,127,128,0,0,127,192,127,128,0,0,63,208,127,128,0,0,47,224,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,47,224,127,128,0,0,63,208,127,128,0,0,63,192,127,128,0,0,191,192,127,128,0,1,255,64,127,128,0,7,255,0,127,128,0,47,252,0,127,149,91,255,244,0,127,255,255,255,192,0,127,255,255,253,0,0,127,255,254,64,0,0, + // 0x0045 E + 16,27,108,21,3,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x0046 F + 16,27,108,20,3,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0, + // 0x0047 G + 22,28,168,27,2,255,0,0,6,190,148,0,0,2,255,255,255,144,0,31,255,255,255,224,0,191,255,235,255,192,2,255,224,0,7,128,7,255,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,64,0,0,0,0,255,64,0,127,255,240,191,64,0,127,255,240,191,64,0,127,255,240,191,128,0,0,15,240,127,192,0,0,15,240,63,192,0,0,15,240,63,208,0,0,15,240,47,240,0,0,15,240,15,252,0,0,15,240,7,255,0,0,15,240,2,255,228,0,95,240,0,191,255,255,255,240,0,31,255,255,255,240,0,1,255,255,254,64,0,0,1,85,0,0, + // 0x0048 H + 21,27,162,28,3,0,21,0,0,0,21,64,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,149,85,85,127,192,127,255,255,255,255,192,127,255,255,255,255,192,127,255,255,255,255,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192, + // 0x0049 I + 11,27,81,13,1,0,85,85,84,191,255,248,191,255,248,11,255,128,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,2,254,0,47,255,228,191,255,248,191,255,248, + // 0x004a J + 11,35,105,11,253,248,0,5,80,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,11,244,0,15,240,0,31,240,81,191,224,255,255,192,255,255,0,191,248,0,0,0,0, + // 0x004b K + 20,27,135,23,3,0,21,0,0,1,85,127,128,0,7,253,127,128,0,15,244,127,128,0,63,224,127,128,0,255,128,127,128,2,255,0,127,128,11,252,0,127,128,31,240,0,127,128,127,192,0,127,128,255,64,0,127,131,253,0,0,127,143,248,0,0,127,175,244,0,0,127,255,252,0,0,127,255,254,0,0,127,245,255,64,0,127,192,191,192,0,127,128,63,224,0,127,128,31,244,0,127,128,11,252,0,127,128,3,255,0,127,128,0,255,128,127,128,0,127,192,127,128,0,47,240,127,128,0,15,248,127,128,0,7,253,127,128,0,2,255, + // 0x004c L + 16,27,108,20,3,0,21,0,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,85,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x004d M + 28,27,189,34,3,0,21,80,0,0,0,5,84,127,248,0,0,0,47,253,127,252,0,0,0,63,253,127,253,0,0,0,127,253,127,254,0,0,0,191,253,127,191,0,0,0,254,253,127,127,64,0,1,253,253,127,63,128,0,3,249,253,127,47,192,0,3,241,253,127,15,208,0,11,241,253,127,15,240,0,15,225,253,127,7,240,0,31,193,253,127,3,244,0,47,193,253,127,3,252,0,63,65,253,127,1,252,0,127,1,253,127,0,254,0,190,1,253,127,0,191,0,253,1,253,127,0,127,65,252,1,253,127,0,63,131,248,1,253,127,0,47,195,240,1,253,127,0,31,219,240,1,253,127,0,15,239,208,1,253,127,0,11,255,192,1,253,127,0,3,255,128,1,253,127,0,3,255,64,1,253,127,0,2,255,0,1,253,127,0,0,254,0,1,253, + // 0x004e N + 22,27,162,29,3,0,21,64,0,0,1,80,127,240,0,0,11,240,127,248,0,0,11,240,127,252,0,0,11,240,127,255,0,0,11,240,127,255,64,0,11,240,127,127,192,0,11,240,127,63,224,0,11,240,127,15,244,0,11,240,127,11,252,0,11,240,127,3,254,0,11,240,127,1,255,0,11,240,127,0,191,192,11,240,127,0,63,208,11,240,127,0,31,240,7,240,127,0,15,248,7,240,127,0,3,253,7,240,127,0,2,255,7,240,127,0,0,255,135,240,127,0,0,127,199,240,127,0,0,47,247,240,127,0,0,15,251,240,127,0,0,7,255,240,127,0,0,3,255,240,127,0,0,0,255,240,127,0,0,0,191,240,127,0,0,0,63,240, + // 0x004f O + 25,28,196,29,2,255,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x0050 P + 18,27,135,23,3,0,21,85,80,0,0,127,255,255,208,0,127,255,255,253,0,127,255,255,255,0,127,128,6,255,192,127,128,0,127,208,127,128,0,47,224,127,128,0,31,224,127,128,0,31,240,127,128,0,31,224,127,128,0,47,224,127,128,0,63,208,127,128,1,255,192,127,149,111,255,64,127,255,255,253,0,127,255,255,240,0,127,255,250,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0, + // 0x0051 Q + 25,34,238,29,2,249,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,240,0,0,0,0,5,111,244,0,0,0,0,0,11,253,0,0,0,0,0,3,255,64,0,0,0,0,0,255,192,0,0,0,0,0,63,240,0,0,0,0,0,31,252,0,0,0,0,0,1,84,0, + // 0x0052 R + 20,27,135,23,3,0,21,85,84,0,0,127,255,255,224,0,127,255,255,253,0,127,255,255,255,64,127,128,6,255,192,127,128,0,127,208,127,128,0,47,224,127,128,0,31,240,127,128,0,31,240,127,128,0,31,224,127,128,0,47,208,127,128,0,127,192,127,128,6,255,64,127,255,255,254,0,127,255,255,244,0,127,255,255,192,0,127,149,127,208,0,127,128,15,240,0,127,128,11,248,0,127,128,3,253,0,127,128,1,255,0,127,128,0,255,128,127,128,0,63,192,127,128,0,47,240,127,128,0,15,244,127,128,0,7,252,127,128,0,3,254, + // 0x0053 S + 17,28,140,20,2,255,0,26,234,64,0,2,255,255,253,0,15,255,255,255,0,63,254,175,254,0,127,208,0,108,0,191,128,0,0,0,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,191,192,0,0,0,63,244,0,0,0,31,255,64,0,0,11,255,244,0,0,1,255,255,128,0,0,31,255,240,0,0,1,191,252,0,0,0,15,255,0,0,0,2,255,64,0,0,0,191,128,0,0,0,127,128,0,0,0,127,128,0,0,0,191,128,128,0,0,255,0,254,64,27,254,0,255,255,255,252,0,255,255,255,240,0,111,255,254,64,0,0,21,64,0,0, + // 0x0054 T + 21,27,162,21,0,0,21,85,85,85,85,0,191,255,255,255,255,64,191,255,255,255,255,64,191,255,255,255,255,64,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0, + // 0x0055 U + 21,28,168,27,3,255,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,254,0,0,0,0,21,64,0,0, + // 0x0056 V + 23,27,162,23,0,0,85,0,0,0,1,84,191,64,0,0,11,244,127,192,0,0,15,240,63,192,0,0,31,224,47,208,0,0,47,208,31,240,0,0,63,192,15,240,0,0,127,128,11,244,0,0,255,64,3,252,0,0,255,0,3,252,0,1,254,0,2,253,0,3,253,0,0,255,0,3,252,0,0,255,0,7,248,0,0,127,128,15,240,0,0,63,192,15,240,0,0,63,192,31,208,0,0,31,224,63,192,0,0,15,240,63,192,0,0,11,240,127,64,0,0,7,248,255,0,0,0,3,252,254,0,0,0,2,253,253,0,0,0,1,255,252,0,0,0,0,255,248,0,0,0,0,191,244,0,0,0,0,63,240,0,0,0,0,63,224,0,0, + // 0x0057 W + 34,27,243,35,0,0,85,0,0,1,84,0,0,5,80,127,128,0,3,254,0,0,15,240,63,192,0,3,255,0,0,15,240,63,192,0,11,255,0,0,31,224,47,208,0,15,255,64,0,47,208,31,224,0,15,255,128,0,63,192,15,240,0,31,239,192,0,63,192,15,240,0,47,207,208,0,127,128,11,244,0,63,143,224,0,191,64,7,248,0,63,75,240,0,255,0,3,252,0,127,7,240,0,255,0,3,252,0,255,3,244,1,254,0,2,253,0,254,3,252,2,253,0,1,254,1,253,2,252,3,252,0,0,255,2,252,1,253,3,252,0,0,255,3,248,0,254,7,248,0,0,191,67,244,0,191,11,244,0,0,127,135,240,0,127,15,240,0,0,63,203,240,0,63,79,240,0,0,47,207,224,0,63,143,224,0,0,31,223,208,0,47,223,192,0,0,15,239,192,0,31,239,192,0,0,15,255,128,0,15,255,128,0,0,11,255,64,0,11,255,64,0,0,7,255,0,0,7,255,0,0,0,3,255,0,0,3,255,0,0,0,3,254,0,0,3,254,0,0, + // 0x0058 X + 22,27,162,23,0,0,21,64,0,0,5,80,47,224,0,0,63,192,15,244,0,0,191,128,7,252,0,0,255,0,3,254,0,3,253,0,0,255,0,7,248,0,0,191,128,15,240,0,0,63,208,47,208,0,0,15,240,127,128,0,0,11,248,255,0,0,0,3,254,253,0,0,0,1,255,252,0,0,0,0,191,240,0,0,0,0,127,240,0,0,0,0,255,244,0,0,0,2,255,252,0,0,0,3,254,254,0,0,0,15,240,255,64,0,0,31,224,127,192,0,0,63,192,47,224,0,0,191,64,15,244,0,1,255,0,7,252,0,3,252,0,3,254,0,11,248,0,0,255,0,31,240,0,0,191,192,63,208,0,0,63,208,191,128,0,0,31,240, + // 0x0059 Y + 21,27,162,22,0,0,85,0,0,0,21,64,191,192,0,0,63,192,63,208,0,0,191,128,31,240,0,1,255,0,15,244,0,3,253,0,7,252,0,7,252,0,3,253,0,15,244,0,1,255,0,31,240,0,0,191,64,63,208,0,0,63,192,127,128,0,0,47,224,255,0,0,0,15,241,254,0,0,0,11,251,252,0,0,0,3,255,248,0,0,0,1,255,240,0,0,0,0,255,208,0,0,0,0,127,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x005a Z + 19,27,135,21,1,0,21,85,85,85,84,127,255,255,255,248,127,255,255,255,248,127,255,255,255,248,0,0,0,47,240,0,0,0,63,192,0,0,0,255,128,0,0,2,255,0,0,0,3,252,0,0,0,15,248,0,0,0,47,240,0,0,0,63,192,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,192,0,0,0,255,64,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,229,85,85,84,191,255,255,255,252,191,255,255,255,252,191,255,255,255,252, + // 0x005b [ + 9,33,99,12,3,250,85,85,0,255,255,64,255,255,64,255,170,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,253,0,0,254,0,0,255,255,64,255,255,64,255,255,0, + // 0x005c "\" + 14,27,108,14,0,0,85,0,0,0,127,64,0,0,63,128,0,0,47,192,0,0,15,208,0,0,15,240,0,0,7,240,0,0,3,248,0,0,2,252,0,0,1,253,0,0,0,254,0,0,0,191,0,0,0,63,64,0,0,63,192,0,0,31,192,0,0,15,224,0,0,11,240,0,0,7,244,0,0,3,248,0,0,2,252,0,0,1,253,0,0,0,255,0,0,0,191,0,0,0,63,128,0,0,63,192,0,0,31,208,0,0,15,224, + // 0x005d ] + 9,33,99,12,1,250,85,85,0,255,255,64,255,255,64,170,191,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,255,255,64,255,255,64,255,255,64, + // 0x005e ^ + 19,18,90,21,1,9,0,0,160,0,0,0,1,248,0,0,0,3,253,0,0,0,7,255,0,0,0,15,255,64,0,0,31,223,192,0,0,47,79,208,0,0,63,7,240,0,0,189,3,244,0,0,252,1,252,0,2,248,0,253,0,3,240,0,127,0,11,224,0,63,64,15,192,0,31,192,31,128,0,15,208,63,64,0,7,240,127,0,0,3,248,20,0,0,0,80, + // 0x005f _ + 16,3,12,16,0,250,170,170,170,170,255,255,255,255,170,170,170,170, + // 0x0060 ` + 8,7,14,11,2,22,85,0,255,128,127,192,31,240,7,248,0,253,0,41, + // 0x0061 a + 18,22,110,21,1,255,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x0062 b + 18,29,145,23,3,255,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,7,255,208,0,255,63,255,252,0,255,255,255,255,0,255,244,2,255,128,255,192,0,127,192,255,128,0,63,208,255,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,64,0,31,224,255,128,0,63,208,255,192,0,127,192,255,244,1,255,128,255,255,255,255,0,253,63,255,252,0,252,11,255,224,0,0,0,20,0,0, + // 0x0063 c + 15,22,88,18,2,255,0,0,84,0,0,47,255,228,2,255,255,248,11,255,255,244,31,253,1,176,63,224,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,192,0,0,63,208,0,0,47,248,0,120,15,255,255,248,2,255,255,248,0,127,255,224,0,1,84,0, + // 0x0064 d + 18,29,145,23,2,255,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,1,64,15,240,0,191,254,15,240,3,255,255,207,240,15,255,255,255,240,47,248,1,255,240,63,208,0,127,240,127,192,0,47,240,191,64,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,191,64,0,15,240,191,128,0,47,240,63,208,0,63,240,47,244,1,255,240,15,255,255,255,240,3,255,255,203,240,0,191,254,7,240,0,1,64,0,0, + // 0x0065 e + 18,22,110,21,2,255,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x0066 f + 15,29,116,13,0,0,0,0,4,0,0,7,255,248,0,31,255,244,0,63,255,240,0,191,192,16,0,255,64,0,0,255,0,0,0,255,0,0,0,255,0,0,7,255,255,128,127,255,255,192,127,255,255,192,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0, + // 0x0067 g + 18,30,150,23,2,247,0,1,64,0,0,0,191,253,7,240,3,255,255,203,240,15,255,255,255,240,47,248,2,255,240,63,208,0,127,240,127,192,0,47,240,191,64,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,191,64,0,15,240,127,128,0,31,240,63,208,0,63,240,47,244,1,255,240,15,255,255,255,240,3,255,255,207,240,0,191,254,15,240,0,1,64,15,240,0,0,0,15,240,0,0,0,31,224,0,0,0,47,208,20,0,0,191,192,47,165,87,255,128,47,255,255,254,0,31,255,255,244,0,1,175,254,64,0, + // 0x0068 h + 18,28,140,23,3,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,4,0,0,255,7,255,224,0,255,63,255,253,0,255,191,255,255,64,255,248,1,255,192,255,208,0,127,192,255,192,0,63,192,255,64,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208, + // 0x0069 i + 4,28,28,10,3,0,20,255,255,255,125,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x006a j + 9,37,111,10,254,247,0,5,0,0,63,192,0,63,192,0,63,192,0,31,64,0,0,0,0,0,0,0,0,0,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,127,192,150,255,128,255,255,0,255,253,0,191,144,0, + // 0x006b k + 17,28,140,21,3,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,255,64,255,0,3,254,0,255,0,15,248,0,255,0,63,224,0,255,0,191,128,0,255,2,255,0,0,255,11,252,0,0,255,31,240,0,0,255,127,192,0,0,255,255,224,0,0,255,255,244,0,0,255,231,252,0,0,255,130,255,0,0,255,0,255,128,0,255,0,63,208,0,255,0,31,240,0,255,0,11,252,0,255,0,3,254,0,255,0,1,255,64,255,0,0,191,192, + // 0x006c l + 4,28,28,10,3,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x006d m + 29,21,168,35,3,0,0,0,16,0,0,4,0,0,253,11,255,224,7,255,244,0,253,63,255,252,47,255,253,0,255,255,255,254,191,255,255,0,255,244,3,255,253,1,255,128,255,192,0,255,240,0,127,192,255,128,0,191,192,0,63,192,255,64,0,127,192,0,63,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192,255,0,0,127,128,0,47,192, + // 0x006e n + 18,21,105,23,3,0,0,0,4,0,0,253,7,255,244,0,253,63,255,254,0,255,255,255,255,64,255,248,1,255,192,255,208,0,127,192,255,192,0,63,192,255,64,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208, + // 0x006f o + 19,22,110,23,2,255,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x0070 p + 18,30,150,23,3,247,0,0,20,0,0,253,11,255,224,0,254,63,255,252,0,255,255,255,255,0,255,244,2,255,128,255,192,0,127,192,255,128,0,63,208,255,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,64,0,47,224,255,128,0,63,208,255,208,0,127,192,255,244,2,255,128,255,255,255,255,0,255,63,255,252,0,255,11,255,224,0,255,0,20,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0, + // 0x0071 q + 18,30,150,23,2,247,0,1,64,0,0,0,191,253,7,240,3,255,255,203,240,15,255,255,255,240,47,248,1,255,240,63,208,0,127,240,127,192,0,47,240,191,64,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,191,64,0,15,240,191,128,0,47,240,63,208,0,63,240,47,244,1,255,240,15,255,255,255,240,3,255,255,207,240,0,191,254,15,240,0,1,64,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240, + // 0x0072 r + 12,21,63,16,3,0,0,0,20,252,7,255,253,31,255,254,127,255,255,255,85,255,244,0,255,208,0,255,128,0,255,64,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, + // 0x0073 s + 15,22,88,18,2,255,0,5,64,0,2,255,255,64,47,255,255,240,127,255,255,208,255,64,6,192,254,0,0,0,255,0,0,0,255,128,0,0,191,244,0,0,63,255,128,0,11,255,252,0,0,191,255,128,0,7,255,208,0,0,127,240,0,0,15,240,0,0,11,244,0,0,11,240,228,0,31,240,255,234,255,208,255,255,255,128,111,255,248,0,0,85,0,0, + // 0x0074 t + 14,26,104,14,0,255,0,20,0,0,0,125,0,0,0,189,0,0,0,253,0,0,1,253,0,0,11,255,255,192,127,255,255,192,127,255,255,192,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,1,254,0,0,1,255,64,0,0,255,255,208,0,127,255,208,0,31,255,192,0,0,84,0, + // 0x0075 u + 17,21,105,23,3,255,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,0,0, + // 0x0076 v + 20,20,100,19,0,0,255,64,0,3,253,127,128,0,3,252,63,192,0,11,248,47,208,0,15,240,31,224,0,31,240,15,240,0,47,208,11,244,0,63,192,3,252,0,127,128,3,252,0,191,64,1,253,0,255,0,0,255,1,253,0,0,191,3,252,0,0,127,131,248,0,0,63,199,244,0,0,47,203,240,0,0,15,223,224,0,0,15,255,192,0,0,7,255,192,0,0,3,255,64,0,0,2,255,0,0, + // 0x0077 w + 30,20,160,30,0,0,127,128,0,127,192,0,47,208,63,192,0,191,224,0,63,192,63,192,0,255,240,0,63,192,47,208,0,255,240,0,127,64,31,224,2,251,244,0,191,0,15,240,3,246,248,0,255,0,15,240,3,241,252,0,254,0,11,244,7,240,253,1,253,0,7,248,11,224,254,2,252,0,3,252,15,208,191,3,252,0,2,252,31,192,127,7,248,0,1,253,47,192,63,75,240,0,0,254,63,128,63,139,240,0,0,255,63,0,31,207,224,0,0,191,127,0,15,223,208,0,0,127,190,0,15,239,192,0,0,63,253,0,11,255,192,0,0,63,252,0,7,255,128,0,0,31,248,0,3,255,64,0,0,15,244,0,2,255,0,0, + // 0x0078 x + 18,20,100,20,1,0,255,128,0,31,240,63,208,0,63,192,31,240,0,255,128,15,248,1,255,0,3,253,3,252,0,1,255,15,244,0,0,191,159,240,0,0,63,255,192,0,0,31,255,64,0,0,11,254,0,0,0,15,255,0,0,0,47,255,128,0,0,127,255,208,0,0,255,79,240,0,2,254,11,248,0,7,252,3,253,0,15,244,0,255,0,47,224,0,191,192,127,192,0,63,224,255,64,0,15,240, + // 0x0079 y + 20,29,145,20,0,247,191,64,0,3,253,127,192,0,3,252,63,192,0,11,248,47,224,0,15,240,15,240,0,31,240,15,240,0,47,208,7,248,0,63,192,3,252,0,127,128,2,253,0,191,64,0,254,0,255,0,0,255,1,254,0,0,127,66,252,0,0,63,195,252,0,0,47,199,244,0,0,15,219,240,0,0,15,239,224,0,0,7,255,208,0,0,3,255,192,0,0,2,255,128,0,0,0,255,0,0,0,0,255,0,0,0,2,253,0,0,0,3,252,0,0,0,7,248,0,0,0,31,240,0,0,21,191,224,0,0,127,255,128,0,0,127,254,0,0,0,47,224,0,0,0, + // 0x007a z + 16,20,80,18,1,0,63,255,255,252,63,255,255,252,63,255,255,252,0,0,15,244,0,0,31,240,0,0,63,192,0,0,255,64,0,2,254,0,0,7,252,0,0,15,240,0,0,47,208,0,0,127,192,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,208,0,0,191,255,255,253,191,255,255,253,191,255,255,253, + // 0x007b { + 12,33,99,14,1,250,0,0,5,0,2,255,0,31,255,0,63,254,0,127,208,0,191,64,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,255,0,7,254,0,255,248,0,255,128,0,255,244,0,91,253,0,1,255,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,191,0,0,127,128,0,63,245,0,47,255,0,11,255,0,0,111, + // 0x007c | + 4,37,37,20,8,247,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, + // 0x007d } + 13,33,132,14,1,250,80,0,0,0,191,144,0,0,191,244,0,0,191,252,0,0,3,254,0,0,0,254,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,0,0,0,127,208,0,0,31,255,64,0,1,255,64,0,11,255,64,0,63,245,0,0,191,128,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,254,0,0,1,254,0,0,27,253,0,0,191,252,0,0,191,224,0,0,185,0,0,0, + // 0x007e ~ + 18,6,30,21,2,10,6,164,0,0,0,127,255,144,0,208,255,255,254,175,208,249,111,255,255,192,192,0,191,255,64,0,0,5,164,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Cyrillic_27.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Cyrillic_27.cpp new file mode 100644 index 0000000000..c621bdfc9e --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Cyrillic_27.cpp @@ -0,0 +1,322 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Cyrillic 37pt, capital 'A' height: 27px, width: 100%, range: 0x0401-0x0491, glyphs: 74 +extern const uint8_t NotoSans_Medium_Cyrillic_27[10855] = { + 130,27,1,4,145,4,35,247, // unifont_t + // 0x0401 Ё + 16,33,132,21,3,0,3,244,15,208,3,248,15,224,3,248,15,224,1,160,6,128,0,0,0,0,0,0,0,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x0402 Ђ + 255, + // 0x0403 Ѓ + 255, + // 0x0404 Є + 21,28,168,24,2,255,0,0,26,254,144,0,0,7,255,255,254,64,0,47,255,255,255,128,0,255,255,175,255,64,3,255,208,0,47,0,11,253,0,0,0,0,15,244,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,128,0,0,0,0,191,149,85,85,64,0,191,255,255,255,192,0,255,255,255,255,192,0,255,255,255,255,192,0,191,128,0,0,0,0,191,128,0,0,0,0,127,192,0,0,0,0,63,192,0,0,0,0,63,208,0,0,0,0,47,240,0,0,0,0,15,248,0,0,0,0,11,255,0,0,0,0,3,255,228,0,111,0,0,255,255,255,255,0,0,47,255,255,255,0,0,2,255,255,249,0,0,0,1,84,0,0, + // 0x0405 Ѕ + 255, + // 0x0406 І + 11,27,81,13,1,0,85,85,84,191,255,248,191,255,248,11,255,128,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,2,254,0,47,255,228,191,255,248,191,255,248, + // 0x0407 Ї + 11,33,99,13,1,0,190,1,248,255,3,252,255,2,252,40,0,160,0,0,0,0,0,0,85,85,84,191,255,248,191,255,248,11,255,128,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,2,254,0,47,255,228,191,255,248,191,255,248, + // 0x0408 Ј + 255, + // 0x0409 Љ + 255, + // 0x040a Њ + 255, + // 0x040b Ћ + 255, + // 0x040c Ќ + 255, + // 0x040d Ѝ + 255, + // 0x040e Ў + 255, + // 0x040f Џ + 255, + // 0x0410 А + 24,27,162,24,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x0411 Б + 18,27,135,23,3,0,21,85,85,85,0,127,255,255,255,128,127,255,255,255,128,127,255,255,255,128,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,234,149,0,0,127,255,255,244,0,127,255,255,254,0,127,255,255,255,192,127,128,1,255,208,127,128,0,47,240,127,128,0,15,240,127,128,0,15,240,127,128,0,15,240,127,128,0,15,240,127,128,0,31,240,127,128,0,127,224,127,149,91,255,192,127,255,255,255,64,127,255,255,252,0,127,255,254,128,0, + // 0x0412 В + 20,27,135,24,3,0,21,85,84,0,0,127,255,255,248,0,127,255,255,255,64,127,255,255,255,208,127,128,1,191,240,127,128,0,31,244,127,128,0,15,244,127,128,0,11,244,127,128,0,11,244,127,128,0,15,240,127,128,0,47,224,127,149,86,255,128,127,255,255,253,0,127,255,255,249,0,127,255,255,255,192,127,128,0,127,240,127,128,0,15,248,127,128,0,3,252,127,128,0,3,252,127,128,0,3,253,127,128,0,3,252,127,128,0,11,252,127,128,0,31,248,127,149,86,255,240,127,255,255,255,208,127,255,255,255,0,127,255,255,228,0, + // 0x0413 Г + 16,27,108,20,3,0,21,85,85,85,127,255,255,255,127,255,255,255,127,255,255,255,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0, + // 0x0414 Д + 26,35,245,26,0,248,0,0,21,85,85,80,0,0,0,63,255,255,240,0,0,0,63,255,255,240,0,0,0,127,255,255,240,0,0,0,127,64,15,240,0,0,0,191,0,15,240,0,0,0,255,0,15,240,0,0,0,255,0,15,240,0,0,0,254,0,15,240,0,0,1,253,0,15,240,0,0,2,253,0,15,240,0,0,3,252,0,15,240,0,0,3,248,0,15,240,0,0,11,244,0,15,240,0,0,15,240,0,15,240,0,0,15,240,0,15,240,0,0,47,208,0,15,240,0,0,63,192,0,15,240,0,0,127,128,0,15,240,0,0,255,64,0,15,240,0,0,255,0,0,15,240,0,2,253,0,0,15,240,0,3,252,0,0,15,240,0,95,253,85,85,95,249,80,255,255,255,255,255,255,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,255,0,0,0,0,31,224,255,0,0,0,0,31,224,255,0,0,0,0,31,224,255,0,0,0,0,31,224,255,0,0,0,0,31,224,255,0,0,0,0,31,224,255,0,0,0,0,31,224,0,0,0,0,0,0,0, + // 0x0415 Е + 16,27,108,21,3,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x0416 Ж + 32,27,216,33,0,0,21,64,0,5,80,0,0,85,63,208,0,11,240,0,3,253,15,240,0,11,240,0,11,248,7,252,0,11,240,0,31,240,2,254,0,11,240,0,63,192,0,255,64,11,240,0,255,64,0,63,192,11,240,2,254,0,0,31,240,11,240,7,252,0,0,7,248,11,240,15,240,0,0,2,253,11,240,63,208,0,0,0,255,11,240,191,64,0,0,0,63,203,241,254,0,0,0,0,31,235,247,252,0,0,0,0,15,255,255,244,0,0,0,0,47,235,247,252,0,0,0,0,127,203,241,255,0,0,0,0,255,75,240,191,128,0,0,3,254,11,240,63,208,0,0,11,252,11,240,15,240,0,0,31,240,11,240,7,252,0,0,63,208,11,240,2,254,0,0,255,128,11,240,0,255,64,2,255,0,11,240,0,127,192,7,252,0,11,240,0,47,240,15,244,0,11,240,0,15,248,63,224,0,11,240,0,3,253,191,192,0,11,240,0,1,255, + // 0x0417 З + 20,28,140,22,1,255,0,6,170,144,0,2,255,255,254,0,47,255,255,255,192,63,254,154,255,240,31,128,0,47,244,4,0,0,11,252,0,0,0,3,252,0,0,0,3,252,0,0,0,7,248,0,0,0,15,244,0,0,0,127,224,0,85,91,255,128,0,255,255,248,0,0,255,255,228,0,0,255,255,255,128,0,0,1,191,240,0,0,0,15,248,0,0,0,3,252,0,0,0,2,253,0,0,0,2,254,0,0,0,2,253,0,0,0,3,252,0,0,0,15,252,126,64,0,127,244,127,255,255,255,224,127,255,255,255,64,27,255,255,244,0,0,5,84,0,0, + // 0x0418 И + 23,27,162,29,3,0,21,0,0,0,5,80,127,0,0,0,47,248,127,0,0,0,127,248,127,0,0,0,255,248,127,0,0,2,255,248,127,0,0,7,255,248,127,0,0,15,247,248,127,0,0,47,227,248,127,0,0,63,195,248,127,0,0,255,67,248,127,0,1,255,3,248,127,0,3,252,3,248,127,0,15,248,3,248,127,0,31,240,3,248,127,0,63,192,3,248,127,0,191,128,3,248,127,1,255,0,3,248,127,3,253,0,3,248,127,11,248,0,3,248,127,31,240,0,3,248,127,63,208,0,3,248,127,191,128,0,3,248,127,255,0,0,3,248,127,253,0,0,3,248,127,252,0,0,3,248,127,240,0,0,3,248,127,208,0,0,3,248, + // 0x0419 Й + 23,35,210,29,3,0,0,127,0,0,253,0,0,63,64,1,253,0,0,63,192,3,252,0,0,31,249,111,244,0,0,11,255,255,224,0,0,1,191,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,5,80,127,0,0,0,47,248,127,0,0,0,127,248,127,0,0,0,255,248,127,0,0,2,255,248,127,0,0,7,255,248,127,0,0,15,247,248,127,0,0,47,227,248,127,0,0,63,195,248,127,0,0,255,67,248,127,0,1,255,3,248,127,0,3,252,3,248,127,0,15,248,3,248,127,0,31,240,3,248,127,0,63,192,3,248,127,0,191,128,3,248,127,1,255,0,3,248,127,3,253,0,3,248,127,11,248,0,3,248,127,31,240,0,3,248,127,63,208,0,3,248,127,191,128,0,3,248,127,255,0,0,3,248,127,253,0,0,3,248,127,252,0,0,3,248,127,240,0,0,3,248,127,208,0,0,3,248, + // 0x041a К + 20,27,135,23,3,0,21,0,0,1,85,127,128,0,7,252,127,128,0,15,244,127,128,0,63,208,127,128,0,255,128,127,128,2,254,0,127,128,11,252,0,127,128,31,240,0,127,128,127,192,0,127,128,255,64,0,127,131,253,0,0,127,143,248,0,0,127,175,240,0,0,127,255,208,0,0,127,175,240,0,0,127,143,252,0,0,127,131,254,0,0,127,128,255,64,0,127,128,127,208,0,127,128,47,240,0,127,128,11,252,0,127,128,3,255,0,127,128,0,255,128,127,128,0,63,224,127,128,0,31,244,127,128,0,7,252,127,128,0,2,255, + // 0x041b Л + 23,28,168,27,0,255,0,0,85,85,85,84,0,0,255,255,255,252,0,1,255,255,255,252,0,1,255,255,255,252,0,2,252,0,3,252,0,2,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,248,0,3,252,0,3,248,0,3,252,0,7,244,0,3,252,0,11,244,0,3,252,0,11,240,0,3,252,0,15,240,0,3,252,0,15,240,0,3,252,0,15,224,0,3,252,0,31,224,0,3,252,0,31,208,0,3,252,0,47,192,0,3,252,0,63,192,0,3,252,0,63,192,0,3,252,0,127,128,0,3,252,0,255,64,0,3,252,2,255,0,0,3,252,255,253,0,0,3,252,255,252,0,0,3,252,255,224,0,0,3,252,21,0,0,0,0,0, + // 0x041c М + 28,27,189,34,3,0,21,80,0,0,0,5,84,127,248,0,0,0,47,253,127,252,0,0,0,63,253,127,253,0,0,0,127,253,127,254,0,0,0,191,253,127,191,0,0,0,254,253,127,127,64,0,1,253,253,127,63,128,0,3,249,253,127,47,192,0,3,241,253,127,15,208,0,11,241,253,127,15,240,0,15,225,253,127,7,240,0,31,193,253,127,3,244,0,47,193,253,127,3,252,0,63,65,253,127,1,252,0,127,1,253,127,0,254,0,190,1,253,127,0,191,0,253,1,253,127,0,127,65,252,1,253,127,0,63,131,248,1,253,127,0,47,195,240,1,253,127,0,31,219,240,1,253,127,0,15,239,208,1,253,127,0,11,255,192,1,253,127,0,3,255,128,1,253,127,0,3,255,64,1,253,127,0,2,255,0,1,253,127,0,0,254,0,1,253, + // 0x041d Н + 21,27,162,28,3,0,21,0,0,0,21,64,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,149,85,85,127,192,127,255,255,255,255,192,127,255,255,255,255,192,127,255,255,255,255,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192, + // 0x041e О + 25,28,196,29,2,255,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x041f П + 21,27,162,27,3,0,21,85,85,85,85,64,127,255,255,255,255,128,127,255,255,255,255,128,127,255,255,255,255,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128, + // 0x0420 Р + 18,27,135,23,3,0,21,85,80,0,0,127,255,255,208,0,127,255,255,253,0,127,255,255,255,0,127,128,6,255,192,127,128,0,127,208,127,128,0,47,224,127,128,0,31,224,127,128,0,31,240,127,128,0,31,224,127,128,0,47,224,127,128,0,63,208,127,128,1,255,192,127,149,111,255,64,127,255,255,253,0,127,255,255,240,0,127,255,250,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0, + // 0x0421 С + 20,28,140,23,2,255,0,0,26,234,64,0,7,255,255,253,0,47,255,255,255,0,255,255,175,253,3,255,208,0,108,11,254,0,0,0,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,127,192,0,0,0,127,192,0,0,0,191,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,128,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,208,0,0,0,47,240,0,0,0,15,248,0,0,0,11,254,0,0,0,3,255,228,1,188,0,255,255,255,252,0,47,255,255,252,0,2,255,255,244,0,0,5,84,0, + // 0x0422 Т + 21,27,162,21,0,0,21,85,85,85,85,0,191,255,255,255,255,64,191,255,255,255,255,64,191,255,255,255,255,64,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0, + // 0x0423 У + 22,28,168,24,1,255,85,0,0,0,5,80,255,0,0,0,15,240,191,128,0,0,31,224,63,192,0,0,63,192,47,224,0,0,127,192,15,240,0,0,255,64,11,248,0,0,255,0,3,252,0,2,253,0,2,254,0,3,252,0,0,255,0,7,248,0,0,191,128,15,240,0,0,63,192,31,224,0,0,47,224,63,192,0,0,15,240,63,192,0,0,11,248,191,64,0,0,3,252,255,0,0,0,2,255,253,0,0,0,0,255,252,0,0,0,0,191,248,0,0,0,0,63,240,0,0,0,0,63,224,0,0,0,0,191,192,0,0,0,1,255,128,0,0,101,91,255,0,0,0,127,255,252,0,0,0,127,255,244,0,0,0,127,255,128,0,0,0,1,80,0,0,0,0, + // 0x0424 Ф + 27,28,196,30,2,255,0,0,2,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,87,254,80,0,0,0,47,255,255,255,128,0,1,255,255,255,255,248,0,11,255,255,255,255,255,0,31,253,3,252,6,255,192,63,224,3,252,0,127,208,191,192,3,252,0,31,240,255,64,3,252,0,15,240,255,0,3,252,0,11,244,255,0,3,252,0,7,244,255,0,3,252,0,7,248,255,0,3,252,0,7,244,255,0,3,252,0,11,244,191,64,3,252,0,15,240,127,192,3,252,0,47,224,63,240,3,252,0,191,192,15,254,67,252,7,255,64,7,255,255,255,255,254,0,0,191,255,255,255,244,0,0,11,255,255,254,64,0,0,0,7,253,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,1,84,0,0,0, + // 0x0425 Х + 22,27,162,23,0,0,21,64,0,0,5,80,47,224,0,0,63,192,15,244,0,0,191,128,7,252,0,0,255,0,3,254,0,3,253,0,0,255,0,7,248,0,0,191,128,15,240,0,0,63,208,47,208,0,0,15,240,127,128,0,0,11,248,255,0,0,0,3,254,253,0,0,0,1,255,252,0,0,0,0,191,240,0,0,0,0,127,240,0,0,0,0,255,244,0,0,0,2,255,252,0,0,0,3,254,254,0,0,0,15,240,255,64,0,0,31,224,127,192,0,0,63,192,47,224,0,0,191,64,15,244,0,1,255,0,7,252,0,3,252,0,3,254,0,11,248,0,0,255,0,31,240,0,0,191,192,63,208,0,0,63,208,191,128,0,0,31,240, + // 0x0426 Ц + 24,35,210,28,3,248,21,0,0,0,21,64,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,213,85,85,191,213,127,255,255,255,255,255,127,255,255,255,255,255,127,255,255,255,255,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,0, + // 0x0427 Ч + 21,27,162,26,2,0,21,64,0,0,21,64,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,128,0,0,127,128,127,192,0,0,127,128,63,192,0,0,127,128,63,224,0,2,255,128,47,254,90,255,255,128,15,255,255,255,255,128,3,255,255,254,191,128,0,111,255,144,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128, + // 0x0428 Ш + 33,27,243,39,3,0,21,0,0,5,80,0,0,85,0,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,128,0,11,244,0,0,191,64,127,213,85,95,249,85,85,255,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64, + // 0x0429 Щ + 36,35,59,39,3,248,21,0,0,5,80,0,0,85,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,128,0,15,240,0,0,255,0,127,213,85,95,249,85,86,255,84,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,0,0, + // 0x042a Ъ + 24,27,162,26,0,0,85,85,80,0,0,0,255,255,244,0,0,0,255,255,244,0,0,0,255,255,244,0,0,0,0,11,244,0,0,0,0,11,244,0,0,0,0,11,244,0,0,0,0,11,244,0,0,0,0,11,244,0,0,0,0,11,244,0,0,0,0,11,244,0,0,0,0,11,254,169,80,0,0,11,255,255,254,0,0,11,255,255,255,224,0,11,255,255,255,248,0,11,244,0,31,253,0,11,244,0,2,254,0,11,244,0,0,255,0,11,244,0,0,255,0,11,244,0,0,255,0,11,244,0,0,255,0,11,244,0,2,255,0,11,244,0,7,253,0,11,249,85,191,252,0,11,255,255,255,240,0,11,255,255,255,128,0,11,255,255,232,0, + // 0x042b Ы + 26,27,189,32,3,0,21,0,0,0,0,5,80,127,128,0,0,0,31,240,127,128,0,0,0,31,240,127,128,0,0,0,31,240,127,128,0,0,0,31,240,127,128,0,0,0,31,240,127,128,0,0,0,31,240,127,128,0,0,0,31,240,127,128,0,0,0,31,240,127,128,0,0,0,31,240,127,128,0,0,0,31,240,127,234,148,0,0,31,240,127,255,255,224,0,31,240,127,255,255,253,0,31,240,127,255,255,255,64,31,240,127,128,1,255,192,31,240,127,128,0,63,208,31,240,127,128,0,31,224,31,240,127,128,0,15,240,31,240,127,128,0,15,240,31,240,127,128,0,31,240,31,240,127,128,0,63,224,31,240,127,128,0,191,208,31,240,127,149,91,255,128,31,240,127,255,255,255,0,31,240,127,255,255,248,0,31,240,127,255,254,64,0,31,240, + // 0x042c Ь + 19,27,135,24,3,0,21,0,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,234,165,0,0,127,255,255,248,0,127,255,255,255,64,127,255,255,255,208,127,128,0,191,240,127,128,0,15,244,127,128,0,7,248,127,128,0,7,252,127,128,0,3,252,127,128,0,7,252,127,128,0,15,248,127,128,0,47,240,127,149,90,255,224,127,255,255,255,192,127,255,255,254,0,127,255,255,144,0, + // 0x042d Э + 21,28,168,24,1,255,1,107,233,0,0,0,111,255,255,244,0,0,191,255,255,254,0,0,63,254,191,255,192,0,45,0,1,255,240,0,0,0,0,47,248,0,0,0,0,11,252,0,0,0,0,3,253,0,0,0,0,1,255,0,0,0,0,0,255,0,0,0,0,0,255,64,0,85,85,85,255,64,0,255,255,255,255,64,0,255,255,255,255,64,0,255,255,255,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,0,0,0,0,1,255,0,0,0,0,2,254,0,0,0,0,7,252,0,0,0,0,15,252,0,0,0,0,127,240,0,185,64,27,255,208,0,191,255,255,255,64,0,191,255,255,252,0,0,47,255,255,144,0,0,0,21,80,0,0,0, + // 0x042e Ю + 34,28,252,39,3,255,21,0,0,0,6,190,144,0,0,127,128,0,0,191,255,254,0,0,127,128,0,7,255,255,255,208,0,127,128,0,31,255,234,255,248,0,127,128,0,63,244,0,31,253,0,127,128,0,191,192,0,3,255,0,127,128,0,255,64,0,0,255,64,127,128,2,254,0,0,0,127,192,127,128,3,253,0,0,0,63,192,127,128,3,252,0,0,0,63,208,127,128,7,252,0,0,0,47,224,127,149,91,248,0,0,0,31,224,127,255,255,248,0,0,0,31,240,127,255,255,248,0,0,0,31,240,127,255,255,248,0,0,0,31,240,127,128,11,248,0,0,0,31,240,127,128,7,248,0,0,0,31,224,127,128,7,252,0,0,0,47,224,127,128,3,252,0,0,0,63,208,127,128,3,253,0,0,0,63,192,127,128,1,255,0,0,0,191,128,127,128,0,255,128,0,1,255,64,127,128,0,127,224,0,7,254,0,127,128,0,63,253,0,111,252,0,127,128,0,15,255,255,255,240,0,127,128,0,2,255,255,255,192,0,127,128,0,0,47,255,249,0,0,0,0,0,0,0,85,0,0,0, + // 0x042f Я + 20,27,135,24,1,0,0,0,21,85,84,0,11,255,255,253,0,191,255,255,253,2,255,255,255,253,7,255,64,2,253,15,252,0,2,253,15,240,0,2,253,15,240,0,2,253,15,240,0,2,253,15,240,0,2,253,15,244,0,2,253,11,252,0,2,253,3,255,144,2,253,1,255,255,255,253,0,63,255,255,253,0,7,255,255,253,0,11,249,86,253,0,31,240,2,253,0,63,208,2,253,0,191,128,2,253,1,255,0,2,253,3,254,0,2,253,11,252,0,2,253,15,244,0,2,253,63,224,0,2,253,191,192,0,2,253,255,64,0,2,253, + // 0x0430 а + 18,22,110,21,1,255,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x0431 б + 19,29,145,22,2,255,0,0,1,111,240,0,1,191,255,240,0,31,255,255,240,0,255,255,250,80,3,255,228,0,0,11,253,0,0,0,15,240,0,0,0,47,208,0,0,0,63,192,0,0,0,127,128,90,64,0,191,71,255,248,0,191,47,255,255,0,255,191,171,255,192,255,248,0,127,224,255,208,0,31,240,255,128,0,15,240,255,0,0,15,244,255,0,0,11,244,255,0,0,11,244,255,64,0,11,244,191,64,0,11,244,127,192,0,15,240,63,192,0,15,240,47,240,0,63,224,15,253,0,255,192,7,255,255,255,64,1,255,255,253,0,0,47,255,224,0,0,0,84,0,0, + // 0x0432 в + 17,20,100,22,3,0,255,255,254,128,0,255,255,255,248,0,255,255,255,255,0,255,0,6,255,64,255,0,0,191,128,255,0,0,127,128,255,0,0,191,64,255,0,2,255,0,255,255,255,248,0,255,255,255,208,0,255,255,255,253,0,255,0,6,255,64,255,0,0,127,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,1,255,128,255,255,255,255,0,255,255,255,252,0,255,255,255,144,0, + // 0x0433 г + 13,20,80,17,3,0,255,255,255,128,255,255,255,128,255,255,255,128,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0, + // 0x0434 д + 22,27,162,22,0,249,0,2,255,255,248,0,0,3,255,255,252,0,0,3,255,255,252,0,0,3,248,3,252,0,0,3,244,3,252,0,0,7,244,3,252,0,0,11,240,3,252,0,0,11,240,3,252,0,0,15,240,3,252,0,0,31,208,3,252,0,0,47,192,3,252,0,0,63,192,3,252,0,0,127,128,3,252,0,0,255,0,3,252,0,1,254,0,3,252,0,3,252,0,3,252,0,11,248,0,3,252,0,127,255,255,255,255,224,127,255,255,255,255,224,127,255,255,255,255,224,127,64,0,0,15,224,127,64,0,0,15,224,127,64,0,0,15,224,127,64,0,0,15,224,127,64,0,0,15,224,127,64,0,0,15,224,127,64,0,0,15,224, + // 0x0435 е + 18,22,110,21,2,255,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x0436 ж + 29,20,160,29,0,0,63,208,0,127,64,0,255,0,15,240,0,127,64,3,252,0,7,252,0,127,64,15,244,0,1,254,0,127,64,47,208,0,0,191,64,127,64,127,128,0,0,63,208,127,64,255,0,0,0,15,240,127,67,252,0,0,0,3,252,127,79,240,0,0,0,1,254,127,111,208,0,0,0,0,191,255,255,128,0,0,0,0,255,191,191,192,0,0,0,3,253,127,95,240,0,0,0,11,248,127,75,248,0,0,0,31,224,127,66,254,0,0,0,127,192,127,64,255,64,0,0,255,0,127,64,63,192,0,3,253,0,127,64,15,240,0,15,244,0,127,64,7,252,0,47,224,0,127,64,2,254,0,191,192,0,127,64,0,191,128, + // 0x0437 з + 16,22,88,19,1,255,0,1,64,0,27,255,255,64,127,255,255,240,63,255,255,252,30,0,7,253,0,0,0,254,0,0,0,254,0,0,1,253,0,0,11,252,0,191,255,224,0,255,255,64,0,255,255,240,0,0,27,253,0,0,1,255,0,0,0,191,0,0,0,191,0,0,0,255,180,0,7,254,191,255,255,252,191,255,255,244,47,255,255,128,0,21,64,0, + // 0x0438 и + 19,20,100,25,3,0,255,0,0,47,244,255,0,0,63,248,255,0,0,255,248,255,0,1,255,248,255,0,3,255,248,255,0,11,243,248,255,0,31,227,248,255,0,63,195,248,255,0,191,67,248,255,1,254,3,248,255,3,252,3,248,255,11,244,3,248,255,31,224,3,248,254,63,192,3,248,254,191,64,3,248,255,255,0,3,248,255,252,0,3,248,255,244,0,3,248,255,240,0,3,248,255,192,0,3,248, + // 0x0439 й + 19,29,145,25,3,0,1,64,0,5,64,11,240,0,47,192,7,240,0,63,128,3,253,1,255,64,2,255,255,254,0,0,127,255,244,0,0,5,169,64,0,0,0,0,0,0,0,0,0,0,0,255,0,0,47,244,255,0,0,63,248,255,0,0,255,248,255,0,1,255,248,255,0,3,255,248,255,0,11,243,248,255,0,31,227,248,255,0,63,195,248,255,0,191,67,248,255,1,254,3,248,255,3,252,3,248,255,11,244,3,248,255,31,224,3,248,254,63,192,3,248,254,191,64,3,248,255,255,0,3,248,255,252,0,3,248,255,244,0,3,248,255,240,0,3,248,255,192,0,3,248, + // 0x043a к + 17,20,100,21,3,0,255,0,0,255,0,255,0,3,253,0,255,0,15,244,0,255,0,47,224,0,255,0,191,128,0,255,1,255,0,0,255,7,252,0,0,255,15,240,0,0,255,63,192,0,0,255,255,64,0,0,255,127,192,0,0,255,47,240,0,0,255,11,248,0,0,255,3,254,0,0,255,0,255,64,0,255,0,63,208,0,255,0,31,240,0,255,0,7,252,0,255,0,2,255,0,255,0,0,191,192, + // 0x043b л + 19,21,105,22,0,255,0,15,255,255,252,0,15,255,255,252,0,15,255,255,252,0,15,224,3,252,0,31,208,3,252,0,31,208,3,252,0,31,192,3,252,0,47,192,3,252,0,47,192,3,252,0,63,192,3,252,0,63,128,3,252,0,63,64,3,252,0,127,64,3,252,0,255,0,3,252,0,255,0,3,252,2,253,0,3,252,7,252,0,3,252,255,248,0,3,252,255,240,0,3,252,255,128,0,3,252,4,0,0,0,0, + // 0x043c м + 23,20,120,29,3,0,255,224,0,0,63,248,255,240,0,0,127,248,255,244,0,0,191,248,255,252,0,0,255,248,255,252,0,1,255,248,254,254,0,3,251,248,254,127,0,3,243,248,254,63,64,11,243,248,254,47,128,15,211,248,254,31,192,31,195,248,254,15,208,63,131,248,254,11,240,63,3,248,254,3,240,191,3,248,254,3,248,253,3,248,254,1,253,252,3,248,254,0,255,248,3,248,254,0,191,244,3,248,254,0,63,240,3,248,254,0,63,208,3,248,254,0,31,192,3,248, + // 0x043d н + 18,20,100,24,3,0,255,0,0,15,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,255,85,85,95,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240, + // 0x043e о + 19,22,110,23,2,255,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x043f п + 18,20,100,23,3,0,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208, + // 0x0440 р + 18,30,150,23,3,247,0,0,20,0,0,253,11,255,224,0,254,63,255,252,0,255,255,255,255,0,255,244,2,255,128,255,192,0,127,192,255,128,0,63,208,255,64,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,64,0,47,224,255,128,0,63,208,255,208,0,127,192,255,244,2,255,128,255,255,255,255,0,255,63,255,252,0,255,11,255,224,0,255,0,20,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0, + // 0x0441 с + 15,22,88,18,2,255,0,0,84,0,0,47,255,228,2,255,255,248,11,255,255,244,31,253,1,176,63,224,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,192,0,0,63,208,0,0,47,248,0,120,15,255,255,248,2,255,255,248,0,127,255,224,0,1,84,0, + // 0x0442 т + 17,20,100,18,1,0,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,0,15,244,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0, + // 0x0443 у + 20,29,145,20,0,247,191,64,0,3,253,127,192,0,3,252,63,192,0,11,248,47,224,0,15,240,15,240,0,31,240,15,240,0,47,208,7,248,0,63,192,3,252,0,127,128,2,253,0,191,64,0,254,0,255,0,0,255,1,254,0,0,127,66,252,0,0,63,195,252,0,0,47,199,244,0,0,15,219,240,0,0,15,239,224,0,0,7,255,208,0,0,3,255,192,0,0,2,255,128,0,0,0,255,0,0,0,0,255,0,0,0,2,253,0,0,0,3,252,0,0,0,7,248,0,0,0,31,240,0,0,21,191,224,0,0,127,255,128,0,0,127,254,0,0,0,47,224,0,0,0, + // 0x0444 ф + 24,37,222,28,2,247,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,7,255,255,144,0,0,191,255,255,253,0,3,255,255,255,255,128,15,254,79,241,255,224,47,240,15,240,31,244,63,192,15,240,7,252,191,128,15,240,3,253,255,64,15,240,2,254,255,0,15,240,1,254,255,0,15,240,0,255,255,0,15,240,0,255,255,0,15,240,1,254,255,64,15,240,1,254,191,128,15,240,3,253,63,192,15,240,7,252,47,240,15,240,31,244,15,254,15,240,191,224,3,255,255,255,255,128,0,191,255,255,254,0,0,11,255,255,208,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,224,0,0, + // 0x0445 х + 18,20,100,20,1,0,255,128,0,31,240,63,208,0,63,192,31,240,0,255,128,15,248,1,255,0,3,253,3,252,0,1,255,15,244,0,0,191,159,240,0,0,63,255,192,0,0,31,255,64,0,0,11,254,0,0,0,15,255,0,0,0,47,255,128,0,0,127,255,208,0,0,255,79,240,0,2,254,11,248,0,7,252,3,253,0,15,244,0,255,0,47,224,0,191,192,127,192,0,63,224,255,64,0,15,240, + // 0x0446 ц + 21,27,162,24,3,249,255,0,0,31,208,0,255,0,0,31,224,0,255,0,0,31,224,0,255,0,0,31,224,0,255,0,0,31,224,0,255,0,0,31,224,0,255,0,0,31,224,0,255,0,0,31,224,0,255,0,0,31,224,0,255,0,0,31,224,0,255,0,0,31,224,0,255,0,0,31,224,0,255,0,0,31,224,0,255,0,0,31,224,0,255,0,0,31,224,0,255,0,0,31,224,0,255,0,0,31,224,0,255,255,255,255,255,64,255,255,255,255,255,64,255,255,255,255,255,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64,0,0,0,0,127,64, + // 0x0447 ч + 18,20,100,23,2,0,127,64,0,15,240,127,128,0,15,240,127,128,0,15,240,127,128,0,15,240,127,128,0,15,240,127,128,0,15,240,127,128,0,15,240,127,128,0,15,240,127,128,0,15,240,63,208,0,191,240,47,250,175,255,240,15,255,255,255,240,3,255,254,79,240,0,26,80,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240, + // 0x0448 ш + 28,20,140,34,3,0,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x0449 щ + 31,27,216,34,3,249,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,248, + // 0x044a ъ + 24,20,120,26,0,0,127,255,248,0,0,0,191,255,252,0,0,0,191,255,252,0,0,0,0,7,252,0,0,0,0,3,252,0,0,0,0,3,252,0,0,0,0,3,252,0,0,0,0,3,252,0,0,0,0,3,255,255,250,0,0,3,255,255,255,240,0,3,255,255,255,252,0,3,252,0,27,254,0,3,252,0,0,255,0,3,252,0,0,255,0,3,252,0,0,255,0,3,252,0,0,255,0,3,252,0,7,254,0,3,255,255,255,252,0,3,255,255,255,240,0,3,255,255,254,64, + // 0x044b ы + 24,20,120,30,3,0,255,0,0,0,1,253,255,0,0,0,1,253,255,0,0,0,1,253,255,0,0,0,1,253,255,0,0,0,1,253,255,0,0,0,1,253,255,0,0,0,1,253,255,0,0,0,1,253,255,255,254,64,1,253,255,255,255,244,1,253,255,255,255,253,1,253,255,0,7,255,1,253,255,0,0,255,1,253,255,0,0,191,65,253,255,0,0,191,65,253,255,0,0,255,1,253,255,0,7,255,1,253,255,255,255,252,1,253,255,255,255,244,1,253,255,255,254,64,1,253, + // 0x044c ь + 18,20,100,22,3,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,255,255,144,0,255,255,255,253,0,255,255,255,255,64,255,0,5,255,192,255,0,0,63,208,255,0,0,47,208,255,0,0,47,208,255,0,0,63,192,255,0,1,255,192,255,255,255,255,0,255,255,255,253,0,255,255,255,144,0, + // 0x044d э + 16,22,88,18,1,255,0,20,0,0,47,255,244,0,127,255,255,64,63,255,255,208,41,0,127,240,0,0,15,248,0,0,3,252,0,0,3,252,0,0,2,253,6,170,171,253,11,255,255,254,11,255,255,254,1,85,86,253,0,0,2,253,0,0,3,252,0,0,7,252,0,0,15,244,160,0,127,240,255,255,255,192,255,255,255,0,127,255,244,0,0,84,0,0, + // 0x044e ю + 27,22,154,31,3,255,0,0,0,0,20,0,0,255,0,0,31,255,208,0,255,0,0,255,255,252,0,255,0,3,255,255,255,0,255,0,15,253,1,255,192,255,0,31,240,0,63,208,255,0,63,208,0,31,240,255,0,63,192,0,15,240,255,0,63,192,0,15,240,255,255,255,128,0,11,244,255,255,255,128,0,11,244,255,255,255,128,0,11,244,255,85,191,128,0,11,244,255,0,63,192,0,15,244,255,0,63,192,0,15,240,255,0,63,208,0,31,240,255,0,31,240,0,63,208,255,0,15,252,0,255,192,255,0,3,255,255,255,0,255,0,0,255,255,252,0,255,0,0,47,255,224,0,0,0,0,0,84,0,0, + // 0x044f я + 18,20,100,21,0,0,0,27,255,255,240,1,255,255,255,240,7,255,255,255,240,15,253,0,15,240,15,240,0,15,240,31,224,0,15,240,31,208,0,15,240,15,240,0,15,240,15,248,0,15,240,7,255,255,255,240,1,255,255,255,240,0,47,255,255,240,0,31,224,15,240,0,63,192,15,240,0,255,64,15,240,2,254,0,15,240,3,252,0,15,240,15,244,0,15,240,47,240,0,15,240,127,192,0,15,240, + // 0x0450 ѐ + 255, + // 0x0451 ё + 18,28,140,21,2,255,1,248,7,224,0,3,252,11,240,0,2,252,11,240,0,0,160,2,144,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x0452 ђ + 255, + // 0x0453 ѓ + 255, + // 0x0454 є + 15,22,88,19,2,255,0,0,84,0,0,47,255,244,2,255,255,252,11,255,255,252,31,248,0,100,63,208,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,170,170,128,255,255,255,192,255,255,255,192,255,85,85,64,255,0,0,0,191,64,0,0,127,128,0,0,63,208,0,0,47,248,0,44,15,255,255,252,2,255,255,252,0,111,255,244,0,0,84,0, + // 0x0455 ѕ + 255, + // 0x0456 і + 4,28,28,10,3,0,20,255,255,255,125,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x0457 ї + 12,27,81,10,255,0,63,0,252,127,65,253,127,64,253,25,0,104,0,0,0,0,0,0,0,0,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0, + // 0x0458 ј + 255, + // 0x0459 љ + 255, + // 0x045a њ + 255, + // 0x045b ћ + 255, + // 0x045c ќ + 255, + // 0x045d ѝ + 255, + // 0x045e ў + 255, + // 0x045f џ + 255, + // 0x0460 Ѡ + 255, + // 0x0461 ѡ + 255, + // 0x0462 Ѣ + 255, + // 0x0463 ѣ + 255, + // 0x0464 Ѥ + 255, + // 0x0465 ѥ + 255, + // 0x0466 Ѧ + 255, + // 0x0467 ѧ + 255, + // 0x0468 Ѩ + 255, + // 0x0469 ѩ + 255, + // 0x046a Ѫ + 255, + // 0x046b ѫ + 255, + // 0x046c Ѭ + 255, + // 0x046d ѭ + 255, + // 0x046e Ѯ + 255, + // 0x046f ѯ + 255, + // 0x0470 Ѱ + 255, + // 0x0471 ѱ + 255, + // 0x0472 Ѳ + 255, + // 0x0473 ѳ + 255, + // 0x0474 Ѵ + 255, + // 0x0475 ѵ + 255, + // 0x0476 Ѷ + 255, + // 0x0477 ѷ + 255, + // 0x0478 Ѹ + 255, + // 0x0479 ѹ + 255, + // 0x047a Ѻ + 255, + // 0x047b ѻ + 255, + // 0x047c Ѽ + 255, + // 0x047d ѽ + 255, + // 0x047e Ѿ + 255, + // 0x047f ѿ + 255, + // 0x0480 Ҁ + 255, + // 0x0481 ҁ + 255, + // 0x0482 ҂ + 255, + // 0x0483 ҃ + 255, + // 0x0484 ҄ + 255, + // 0x0485 ҅ + 255, + // 0x0486 ҆ + 255, + // 0x0487 ҇ + 255, + // 0x0488 ҈ + 255, + // 0x0489 ҉ + 255, + // 0x048a Ҋ + 255, + // 0x048b ҋ + 255, + // 0x048c Ҍ + 255, + // 0x048d ҍ + 255, + // 0x048e Ҏ + 255, + // 0x048f ҏ + 255, + // 0x0490 Ґ + 17,32,160,20,3,0,0,0,0,63,64,0,0,0,63,64,0,0,0,63,64,0,0,0,63,64,0,0,0,63,64,21,85,85,191,64,127,255,255,255,64,127,255,255,255,64,127,255,255,255,64,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0, + // 0x0491 ґ + 13,26,104,17,3,0,0,0,26,128,0,0,47,192,0,0,47,192,0,0,47,192,0,0,47,192,0,0,47,192,255,255,255,192,255,255,255,192,255,255,255,192,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Greek_27.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Greek_27.cpp new file mode 100644 index 0000000000..4767eed15a --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Greek_27.cpp @@ -0,0 +1,178 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Greek 37pt, capital 'A' height: 27px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 +extern const uint8_t NotoSans_Medium_Greek_27[10040] = { + 130,27,134,3,206,3,35,247, // unifont_t + // 0x0386 Ά + 27,27,189,27,0,0,10,164,0,42,128,0,0,15,240,0,127,224,0,0,47,224,0,191,240,0,0,63,192,0,255,244,0,0,63,64,1,255,248,0,0,126,0,3,250,252,0,0,104,0,7,244,253,0,0,0,0,11,240,255,0,0,0,0,15,240,191,0,0,0,0,31,208,63,128,0,0,0,63,192,63,192,0,0,0,63,128,47,208,0,0,0,191,64,15,224,0,0,0,255,0,15,240,0,0,1,254,0,7,244,0,0,2,253,0,3,252,0,0,3,255,255,255,252,0,0,7,255,255,255,254,0,0,15,255,255,255,255,0,0,15,245,85,85,255,64,0,47,224,0,0,127,128,0,63,192,0,0,63,192,0,127,192,0,0,47,208,0,191,64,0,0,31,240,0,255,0,0,0,15,240,1,254,0,0,0,11,248,3,253,0,0,0,3,252, + // 0x0387 · + 255, + // 0x0388 Έ + 25,27,189,27,0,0,10,164,5,85,85,85,64,15,240,15,255,255,255,192,47,224,15,255,255,255,192,63,192,15,255,255,255,192,63,64,15,244,0,0,0,126,0,15,244,0,0,0,104,0,15,244,0,0,0,0,0,15,244,0,0,0,0,0,15,244,0,0,0,0,0,15,244,0,0,0,0,0,15,244,0,0,0,0,0,15,249,85,85,0,0,0,15,255,255,255,64,0,0,15,255,255,255,64,0,0,15,255,255,255,64,0,0,15,244,0,0,0,0,0,15,244,0,0,0,0,0,15,244,0,0,0,0,0,15,244,0,0,0,0,0,15,244,0,0,0,0,0,15,244,0,0,0,0,0,15,244,0,0,0,0,0,15,244,0,0,0,0,0,15,249,85,85,64,0,0,15,255,255,255,192,0,0,15,255,255,255,192,0,0,15,255,255,255,192, + // 0x0389 Ή + 31,27,216,34,0,0,10,164,5,80,0,0,1,84,15,240,15,244,0,0,3,252,47,224,15,244,0,0,3,252,63,192,15,244,0,0,3,252,63,64,15,244,0,0,3,252,126,0,15,244,0,0,3,252,104,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252,0,0,15,249,85,85,91,252,0,0,15,255,255,255,255,252,0,0,15,255,255,255,255,252,0,0,15,255,255,255,255,252,0,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252,0,0,15,244,0,0,3,252, + // 0x038a Ί + 19,27,135,21,0,0,10,164,21,85,84,15,240,63,255,252,47,224,63,255,252,63,192,6,255,144,63,64,0,255,0,126,0,0,255,0,104,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,31,255,244,0,0,63,255,252,0,0,63,255,252, + // 0x038b ΋ + 255, + // 0x038c Ό + 32,28,224,34,0,255,10,164,0,1,175,233,0,0,15,240,0,47,255,255,224,0,47,224,1,255,255,255,252,0,63,192,7,255,250,191,255,64,63,64,31,253,0,2,255,192,126,0,63,240,0,0,63,240,104,0,127,192,0,0,31,244,0,0,255,128,0,0,11,248,0,0,255,0,0,0,7,252,0,1,255,0,0,0,3,253,0,2,254,0,0,0,3,253,0,3,253,0,0,0,2,254,0,3,253,0,0,0,2,254,0,3,253,0,0,0,2,254,0,3,253,0,0,0,2,254,0,3,253,0,0,0,2,254,0,2,254,0,0,0,2,254,0,2,254,0,0,0,3,253,0,1,255,0,0,0,3,252,0,0,255,64,0,0,11,252,0,0,191,192,0,0,15,248,0,0,127,224,0,0,47,240,0,0,47,248,0,0,191,208,0,0,15,255,64,11,255,128,0,0,3,255,255,255,254,0,0,0,0,191,255,255,244,0,0,0,0,11,255,255,128,0,0,0,0,0,21,64,0,0, + // 0x038d ΍ + 255, + // 0x038e Ύ + 30,27,216,30,0,0,10,164,21,64,0,0,5,80,15,240,63,208,0,0,47,224,47,224,31,240,0,0,63,192,63,192,15,244,0,0,191,128,63,64,7,252,0,0,255,0,126,0,3,253,0,2,253,0,104,0,0,255,0,3,252,0,0,0,0,191,128,15,244,0,0,0,0,63,192,31,240,0,0,0,0,47,224,63,208,0,0,0,0,15,240,127,128,0,0,0,0,11,248,255,0,0,0,0,0,3,254,254,0,0,0,0,0,1,255,252,0,0,0,0,0,0,255,248,0,0,0,0,0,0,127,240,0,0,0,0,0,0,63,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0, + // 0x038f Ώ + 31,27,216,32,0,0,10,164,0,1,191,164,0,0,15,240,0,127,255,255,128,0,47,224,3,255,255,255,244,0,63,192,15,255,234,255,254,0,63,64,63,248,0,7,255,64,126,0,191,208,0,0,255,192,104,0,255,128,0,0,63,224,0,2,255,0,0,0,31,240,0,3,253,0,0,0,15,244,0,3,252,0,0,0,11,248,0,7,252,0,0,0,7,252,0,7,252,0,0,0,7,252,0,7,248,0,0,0,3,252,0,7,248,0,0,0,3,252,0,7,252,0,0,0,3,252,0,3,252,0,0,0,7,248,0,3,252,0,0,0,11,244,0,2,253,0,0,0,15,240,0,0,255,0,0,0,31,224,0,0,191,64,0,0,63,192,0,0,63,192,0,0,127,128,0,0,15,240,0,1,254,0,0,0,7,252,0,7,248,0,0,5,86,255,0,47,245,84,0,11,255,255,64,63,255,252,0,11,255,255,64,63,255,252,0,11,255,255,64,63,255,252, + // 0x0390 ΐ + 255, + // 0x0391 Α + 24,27,162,24,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x0392 Β + 20,27,135,24,3,0,21,85,84,0,0,127,255,255,248,0,127,255,255,255,64,127,255,255,255,208,127,128,1,191,240,127,128,0,31,244,127,128,0,15,244,127,128,0,11,244,127,128,0,11,244,127,128,0,15,240,127,128,0,47,224,127,149,86,255,128,127,255,255,253,0,127,255,255,249,0,127,255,255,255,192,127,128,0,127,240,127,128,0,15,248,127,128,0,3,252,127,128,0,3,252,127,128,0,3,253,127,128,0,3,252,127,128,0,11,252,127,128,0,31,248,127,149,86,255,240,127,255,255,255,208,127,255,255,255,0,127,255,255,228,0, + // 0x0393 Γ + 15,27,108,19,3,0,21,85,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0, + // 0x0394 Δ + 24,27,162,24,0,0,0,0,10,160,0,0,0,0,31,244,0,0,0,0,63,252,0,0,0,0,127,252,0,0,0,0,191,254,0,0,0,0,254,191,0,0,0,1,252,127,64,0,0,3,252,63,192,0,0,3,248,47,192,0,0,11,240,15,224,0,0,15,240,15,240,0,0,31,208,7,244,0,0,63,192,3,252,0,0,63,128,2,252,0,0,191,64,1,254,0,0,255,0,0,255,0,1,254,0,0,191,64,3,252,0,0,63,128,3,252,0,0,63,192,11,244,0,0,31,224,15,240,0,0,15,240,31,224,0,0,15,244,47,208,0,0,7,248,63,234,170,170,171,252,127,255,255,255,255,253,191,255,255,255,255,254,191,255,255,255,255,254, + // 0x0395 Ε + 16,27,108,21,3,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x0396 Ζ + 19,27,135,21,1,0,21,85,85,85,84,127,255,255,255,248,127,255,255,255,248,127,255,255,255,248,0,0,0,47,240,0,0,0,63,192,0,0,0,255,128,0,0,2,255,0,0,0,3,252,0,0,0,15,248,0,0,0,47,240,0,0,0,63,192,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,192,0,0,0,255,64,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,229,85,85,84,191,255,255,255,252,191,255,255,255,252,191,255,255,255,252, + // 0x0397 Η + 21,27,162,28,3,0,21,0,0,0,21,64,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,149,85,85,127,192,127,255,255,255,255,192,127,255,255,255,255,192,127,255,255,255,255,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192, + // 0x0398 Θ + 25,28,196,29,2,255,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,131,255,255,240,127,192,255,67,255,255,240,127,192,255,67,255,255,240,127,192,191,128,85,85,64,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x0399 Ι + 11,27,81,13,1,0,85,85,84,191,255,248,191,255,248,11,255,128,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,2,254,0,47,255,228,191,255,248,191,255,248, + // 0x039a Κ + 20,27,135,23,3,0,21,0,0,1,85,127,128,0,7,253,127,128,0,15,244,127,128,0,63,224,127,128,0,255,128,127,128,2,255,0,127,128,11,252,0,127,128,31,240,0,127,128,127,192,0,127,128,255,64,0,127,131,253,0,0,127,143,248,0,0,127,175,244,0,0,127,255,252,0,0,127,255,254,0,0,127,245,255,64,0,127,192,191,192,0,127,128,63,224,0,127,128,31,244,0,127,128,11,252,0,127,128,3,255,0,127,128,0,255,128,127,128,0,127,192,127,128,0,47,240,127,128,0,15,248,127,128,0,7,253,127,128,0,2,255, + // 0x039b Λ + 23,27,162,23,0,0,0,0,26,144,0,0,0,0,63,240,0,0,0,0,63,244,0,0,0,0,191,248,0,0,0,0,255,252,0,0,0,1,253,253,0,0,0,2,252,255,0,0,0,3,248,127,0,0,0,7,244,63,128,0,0,11,240,63,192,0,0,15,224,31,192,0,0,31,208,15,224,0,0,63,192,15,240,0,0,63,128,7,244,0,0,191,64,3,248,0,0,255,0,3,252,0,0,254,0,1,253,0,2,253,0,0,255,0,3,252,0,0,255,0,7,248,0,0,127,64,11,244,0,0,63,192,15,240,0,0,63,192,31,224,0,0,47,224,47,208,0,0,15,240,63,192,0,0,15,244,127,128,0,0,11,248,255,64,0,0,3,252, + // 0x039c Μ + 28,27,189,34,3,0,21,80,0,0,0,5,84,127,248,0,0,0,47,253,127,252,0,0,0,63,253,127,253,0,0,0,127,253,127,254,0,0,0,191,253,127,191,0,0,0,254,253,127,127,64,0,1,253,253,127,63,128,0,3,249,253,127,47,192,0,3,241,253,127,15,208,0,11,241,253,127,15,240,0,15,225,253,127,7,240,0,31,193,253,127,3,244,0,47,193,253,127,3,252,0,63,65,253,127,1,252,0,127,1,253,127,0,254,0,190,1,253,127,0,191,0,253,1,253,127,0,127,65,252,1,253,127,0,63,131,248,1,253,127,0,47,195,240,1,253,127,0,31,219,240,1,253,127,0,15,239,208,1,253,127,0,11,255,192,1,253,127,0,3,255,128,1,253,127,0,3,255,64,1,253,127,0,2,255,0,1,253,127,0,0,254,0,1,253, + // 0x039d Ν + 22,27,162,29,3,0,21,64,0,0,1,80,127,240,0,0,11,240,127,248,0,0,11,240,127,252,0,0,11,240,127,255,0,0,11,240,127,255,64,0,11,240,127,127,192,0,11,240,127,63,224,0,11,240,127,15,244,0,11,240,127,11,252,0,11,240,127,3,254,0,11,240,127,1,255,0,11,240,127,0,191,192,11,240,127,0,63,208,11,240,127,0,31,240,7,240,127,0,15,248,7,240,127,0,3,253,7,240,127,0,2,255,7,240,127,0,0,255,135,240,127,0,0,127,199,240,127,0,0,47,247,240,127,0,0,15,251,240,127,0,0,7,255,240,127,0,0,3,255,240,127,0,0,0,255,240,127,0,0,0,191,240,127,0,0,0,63,240, + // 0x039e Ξ + 19,27,135,23,2,0,21,85,85,85,80,63,255,255,255,240,63,255,255,255,240,63,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,170,170,170,64,11,255,255,255,128,11,255,255,255,128,11,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,84,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252, + // 0x039f Ο + 25,28,196,29,2,255,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x03a0 Π + 21,27,162,27,3,0,21,85,85,85,85,64,127,255,255,255,255,192,127,255,255,255,255,192,127,255,255,255,255,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192, + // 0x03a1 Ρ + 18,27,135,23,3,0,21,85,80,0,0,127,255,255,208,0,127,255,255,253,0,127,255,255,255,0,127,128,6,255,192,127,128,0,127,208,127,128,0,47,224,127,128,0,31,224,127,128,0,31,240,127,128,0,31,224,127,128,0,47,224,127,128,0,63,208,127,128,1,255,192,127,149,111,255,64,127,255,255,253,0,127,255,255,240,0,127,255,250,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0, + // 0x03a2 ΢ + 255, + // 0x03a3 Σ + 19,27,135,21,1,0,21,85,85,85,80,127,255,255,255,248,127,255,255,255,248,127,255,255,255,248,47,240,0,0,0,15,252,0,0,0,3,254,0,0,0,0,255,128,0,0,0,127,208,0,0,0,31,244,0,0,0,11,252,0,0,0,2,255,0,0,0,0,255,192,0,0,0,127,192,0,0,0,255,0,0,0,3,253,0,0,0,15,244,0,0,0,47,224,0,0,0,127,192,0,0,1,255,0,0,0,3,252,0,0,0,15,244,0,0,0,47,224,0,0,0,127,213,85,85,84,191,255,255,255,252,191,255,255,255,252,191,255,255,255,252, + // 0x03a4 Τ + 21,27,162,21,0,0,21,85,85,85,85,0,191,255,255,255,255,64,191,255,255,255,255,64,191,255,255,255,255,64,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0, + // 0x03a5 Υ + 21,27,162,22,0,0,85,0,0,0,21,64,191,192,0,0,63,192,63,208,0,0,191,128,31,240,0,1,255,0,15,244,0,3,253,0,7,252,0,7,252,0,3,253,0,15,244,0,1,255,0,31,240,0,0,191,64,63,208,0,0,63,192,127,128,0,0,47,224,255,0,0,0,15,241,254,0,0,0,11,251,252,0,0,0,3,255,248,0,0,0,1,255,240,0,0,0,0,255,208,0,0,0,0,127,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x03a6 Φ + 28,28,196,32,2,255,0,0,0,169,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,1,175,255,250,64,0,0,47,255,255,255,248,0,2,255,255,255,255,255,64,11,255,229,255,91,255,224,31,248,0,255,0,63,244,63,208,0,255,0,11,252,191,128,0,255,0,3,253,255,64,0,255,0,1,254,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,0,0,255,191,64,0,255,0,2,254,127,192,0,255,0,3,252,63,240,0,255,0,15,248,15,253,0,255,0,127,240,7,255,250,255,175,255,208,1,255,255,255,255,255,0,0,31,255,255,255,244,0,0,0,90,255,165,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0, + // 0x03a7 Χ + 22,27,162,23,0,0,21,64,0,0,5,80,47,224,0,0,63,192,15,244,0,0,191,128,7,252,0,0,255,0,3,254,0,3,253,0,0,255,0,7,248,0,0,191,128,15,240,0,0,63,208,47,208,0,0,15,240,127,128,0,0,11,248,255,0,0,0,3,254,253,0,0,0,1,255,252,0,0,0,0,191,240,0,0,0,0,127,240,0,0,0,0,255,244,0,0,0,2,255,252,0,0,0,3,254,254,0,0,0,15,240,255,64,0,0,31,224,127,192,0,0,63,192,47,224,0,0,191,64,15,244,0,1,255,0,7,252,0,3,252,0,3,254,0,11,248,0,0,255,0,31,240,0,0,191,192,63,208,0,0,63,208,191,128,0,0,31,240, + // 0x03a8 Ψ + 25,27,189,31,3,0,85,0,1,80,0,21,64,191,0,7,244,0,127,128,191,0,7,244,0,127,128,191,0,7,244,0,127,128,191,0,7,244,0,127,128,191,0,7,244,0,127,128,191,0,7,244,0,127,128,191,0,7,244,0,127,128,191,0,7,244,0,127,128,191,0,7,244,0,127,128,191,64,7,244,0,127,128,191,64,7,244,0,127,128,127,128,7,244,0,191,64,63,192,7,244,0,255,0,63,224,7,244,2,255,0,31,244,7,244,7,253,0,11,255,91,249,191,248,0,2,255,255,255,255,224,0,0,127,255,255,255,64,0,0,6,255,255,228,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0, + // 0x03a9 Ω + 25,27,189,27,1,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,191,240,0,15,253,0,0,31,252,0,31,244,0,0,7,253,0,63,224,0,0,2,255,0,63,192,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,64,0,0,0,127,128,191,64,0,0,0,127,128,191,128,0,0,0,127,128,127,128,0,0,0,191,64,63,192,0,0,0,255,0,63,192,0,0,0,255,0,31,224,0,0,2,253,0,15,240,0,0,3,252,0,7,248,0,0,11,244,0,1,254,0,0,47,208,0,0,127,128,0,191,64,0,85,111,240,3,254,85,64,255,255,240,3,255,255,192,255,255,240,3,255,255,192,255,255,240,3,255,255,192, + // 0x03aa Ϊ + 255, + // 0x03ab Ϋ + 255, + // 0x03ac ά + 21,30,180,23,2,255,0,0,26,160,0,0,0,0,47,224,0,0,0,0,63,192,0,0,0,0,127,64,0,0,0,0,191,0,0,0,0,0,252,0,0,0,0,0,164,0,0,0,0,0,0,0,0,0,0,1,64,0,0,0,0,191,253,7,240,0,3,255,255,203,240,0,15,255,255,255,240,0,47,248,1,255,240,0,63,208,0,127,240,0,127,192,0,47,240,0,191,64,0,31,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,191,64,0,31,240,0,191,128,0,47,240,0,63,208,0,63,240,0,47,244,1,255,244,0,15,255,255,251,255,64,3,255,255,195,255,128,0,191,254,1,255,64,0,1,64,0,20,0, + // 0x03ad έ + 16,30,120,18,1,255,0,0,26,160,0,0,63,224,0,0,63,192,0,0,127,64,0,0,191,0,0,0,252,0,0,0,164,0,0,0,0,0,0,0,80,0,0,191,255,228,3,255,255,253,15,255,255,252,31,240,0,120,47,208,0,0,47,192,0,0,31,208,0,0,15,244,0,0,3,255,254,0,0,191,255,0,3,255,255,0,31,249,0,0,63,192,0,0,127,128,0,0,127,128,0,0,127,192,0,0,63,224,0,28,47,255,255,252,11,255,255,252,1,191,255,244,0,1,84,0, + // 0x03ae ή + 17,38,190,23,3,247,0,2,170,0,0,0,3,253,0,0,0,7,248,0,0,0,11,240,0,0,0,15,208,0,0,0,31,192,0,0,0,26,0,0,0,0,0,0,0,0,0,0,20,0,0,253,11,255,224,0,253,63,255,252,0,255,255,255,255,0,255,248,2,255,64,255,208,0,191,128,255,192,0,63,192,255,64,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192, + // 0x03af ί + 9,30,90,13,3,255,2,169,0,7,252,0,11,244,0,15,224,0,31,192,0,47,64,0,26,0,0,0,0,0,0,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,191,128,0,127,255,192,47,255,192,11,255,192,0,21,0, + // 0x03b0 ΰ + 255, + // 0x03b1 α + 21,22,132,23,2,255,0,1,64,0,0,0,0,191,253,7,240,0,3,255,255,203,240,0,15,255,255,255,240,0,47,248,1,255,240,0,63,208,0,127,240,0,127,192,0,47,240,0,191,64,0,31,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,191,64,0,31,240,0,191,128,0,47,240,0,63,208,0,63,240,0,47,244,1,255,244,0,15,255,255,251,255,64,3,255,255,195,255,128,0,191,254,1,255,64,0,1,64,0,20,0, + // 0x03b2 β + 18,38,190,23,3,247,0,0,80,0,0,0,127,255,128,0,3,255,255,248,0,15,255,255,253,0,63,244,7,255,0,127,192,0,255,64,191,128,0,191,128,255,0,0,127,128,255,0,0,127,128,255,0,0,127,128,255,0,0,255,0,255,0,1,254,0,255,1,91,248,0,255,11,255,144,0,255,11,255,144,0,255,11,255,253,0,255,0,1,255,64,255,0,0,63,192,255,0,0,47,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,224,255,0,0,63,208,255,224,1,255,192,255,255,255,255,0,255,255,255,253,0,255,111,255,224,0,255,1,84,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0, + // 0x03b3 γ + 19,28,140,20,0,248,255,0,0,7,244,127,128,0,7,244,63,192,0,7,244,63,192,0,11,244,31,224,0,11,240,15,240,0,15,240,11,240,0,15,240,7,244,0,15,240,3,252,0,31,208,2,252,0,47,192,1,253,0,63,192,0,255,0,63,128,0,191,0,191,0,0,63,64,254,0,0,63,195,252,0,0,47,199,248,0,0,15,239,240,0,0,15,255,192,0,0,7,255,64,0,0,3,253,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,2,252,0,0, + // 0x03b4 δ + 19,30,150,22,1,255,0,0,5,0,0,0,2,255,253,0,0,31,255,255,208,0,127,255,255,240,0,255,64,11,224,1,254,0,0,192,1,254,0,0,0,1,255,0,0,0,0,255,128,0,0,0,127,240,0,0,0,31,254,0,0,0,7,255,224,0,0,47,255,252,0,0,255,231,255,0,3,254,0,255,192,15,244,0,47,240,47,224,0,15,244,63,192,0,7,248,63,192,0,3,252,127,128,0,3,252,127,128,0,3,252,127,128,0,3,252,127,192,0,3,252,63,208,0,11,248,47,240,0,15,244,15,253,0,127,224,7,255,255,255,192,1,255,255,255,0,0,47,255,228,0,0,0,84,0,0, + // 0x03b5 ε + 16,22,88,18,1,255,0,0,80,0,0,191,255,228,3,255,255,253,15,255,255,252,31,240,0,120,47,208,0,0,47,192,0,0,31,208,0,0,15,244,0,0,3,255,254,0,0,191,255,0,3,255,255,0,31,249,0,0,63,192,0,0,127,128,0,0,127,128,0,0,127,192,0,0,63,224,0,28,47,255,255,252,11,255,255,252,1,191,255,244,0,1,84,0, + // 0x03b6 ζ + 15,36,144,17,2,248,63,255,255,252,63,255,255,252,63,255,255,252,0,0,15,244,0,0,47,224,0,0,127,128,0,0,255,0,0,3,252,0,0,11,244,0,0,47,224,0,0,127,192,0,0,255,0,0,3,253,0,0,7,252,0,0,15,240,0,0,47,208,0,0,63,192,0,0,127,128,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,128,0,0,191,224,0,0,63,254,0,0,31,255,249,0,3,255,255,208,0,111,255,244,0,1,191,252,0,0,7,252,0,0,3,252,0,0,3,252,0,0,3,248,0,0,7,244,0,0,15,240,0,0,5,64, + // 0x03b7 η + 17,30,150,23,3,247,0,0,20,0,0,253,11,255,224,0,253,63,255,252,0,255,255,255,255,0,255,248,2,255,64,255,208,0,191,128,255,192,0,63,192,255,64,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192, + // 0x03b8 θ + 18,30,150,22,2,255,0,0,80,0,0,0,47,255,128,0,1,255,255,244,0,7,255,255,252,0,15,248,2,255,0,31,224,0,191,64,63,192,0,63,192,63,128,0,47,192,127,64,0,31,224,191,64,0,15,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,191,0,0,15,240,127,64,0,31,224,63,128,0,47,208,63,192,0,63,192,31,224,0,127,128,15,248,1,255,0,3,255,255,253,0,1,255,255,248,0,0,47,255,144,0,0,0,84,0,0, + // 0x03b9 ι + 9,21,63,13,3,255,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,191,128,0,127,255,192,47,255,192,11,255,192,0,21,0, + // 0x03ba κ + 17,20,100,21,3,0,255,0,0,255,64,255,0,3,254,0,255,0,11,252,0,255,0,47,240,0,255,0,127,192,0,255,1,255,64,0,255,3,253,0,0,255,15,248,0,0,255,47,224,0,0,255,191,224,0,0,255,255,244,0,0,255,251,252,0,0,255,210,255,0,0,255,0,255,128,0,255,0,63,208,0,255,0,31,240,0,255,0,11,252,0,255,0,3,254,0,255,0,0,255,64,255,0,0,127,192, + // 0x03bb λ + 20,30,150,20,0,255,5,0,0,0,0,255,248,0,0,0,255,255,0,0,0,255,255,192,0,0,0,127,224,0,0,0,15,240,0,0,0,11,244,0,0,0,3,252,0,0,0,2,252,0,0,0,2,254,0,0,0,3,255,0,0,0,7,255,64,0,0,11,255,128,0,0,15,239,192,0,0,31,207,208,0,0,63,143,240,0,0,63,75,240,0,0,191,7,248,0,0,255,3,252,0,1,253,2,253,0,2,252,0,254,0,3,252,0,255,0,7,248,0,191,64,15,240,0,63,192,15,240,0,63,208,47,224,0,31,224,63,208,0,15,255,63,192,0,11,255,191,128,0,3,255,0,0,0,0,84, + // 0x03bc μ + 20,29,145,24,3,247,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,64,0,127,192,255,128,0,255,208,255,224,7,255,224,255,255,255,239,255,255,255,255,79,255,255,63,253,3,255,255,1,64,0,20,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0, + // 0x03bd ν + 19,20,100,20,0,0,255,0,0,7,244,127,128,0,7,244,63,192,0,7,244,63,192,0,11,244,31,224,0,11,240,15,240,0,15,240,11,240,0,15,240,7,244,0,15,240,3,252,0,31,224,2,252,0,47,192,1,253,0,63,192,0,255,0,63,128,0,191,0,191,0,0,63,64,254,0,0,63,195,252,0,0,47,199,248,0,0,15,239,240,0,0,15,255,192,0,0,7,255,64,0,0,3,253,0,0, + // 0x03be ξ + 16,36,144,19,2,248,63,255,255,253,63,255,255,253,63,255,255,168,0,191,64,0,7,244,0,0,15,224,0,0,47,192,0,0,63,192,0,0,63,192,0,0,47,208,0,0,31,240,0,0,11,254,80,0,1,255,255,248,0,127,255,248,3,255,255,248,15,248,0,0,63,208,0,0,127,128,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,128,0,0,191,208,0,0,63,254,0,0,15,255,249,0,2,255,255,224,0,47,255,248,0,0,127,252,0,0,3,252,0,0,3,252,0,0,3,252,0,0,3,252,0,0,7,244,0,0,15,240,0,0,5,80, + // 0x03bf ο + 19,22,110,23,2,255,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x03c0 π + 25,21,147,25,0,255,127,255,255,255,255,255,0,127,255,255,255,255,255,64,127,255,255,255,255,255,64,0,127,128,0,191,64,0,0,63,128,0,191,64,0,0,63,128,0,191,64,0,0,63,128,0,191,64,0,0,63,128,0,191,64,0,0,63,128,0,191,64,0,0,63,128,0,191,64,0,0,63,128,0,191,64,0,0,63,128,0,191,64,0,0,63,128,0,191,64,0,0,63,128,0,191,64,0,0,63,128,0,191,64,0,0,63,128,0,191,64,0,0,63,128,0,191,128,0,0,63,128,0,127,255,0,0,63,128,0,63,255,0,0,63,128,0,15,254,0,0,0,0,0,0,80,0, + // 0x03c1 ρ + 19,30,150,22,2,247,0,0,80,0,0,0,47,255,208,0,1,255,255,252,0,7,255,255,255,0,15,248,1,255,192,47,240,0,63,208,63,192,0,31,224,63,192,0,15,240,127,128,0,15,240,127,128,0,11,244,127,64,0,11,244,127,64,0,11,244,127,64,0,11,244,127,64,0,15,244,127,64,0,15,240,127,64,0,31,240,127,128,0,63,208,127,244,1,255,192,127,255,255,255,0,127,255,255,252,0,127,95,255,208,0,127,64,84,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0,127,64,0,0,0, + // 0x03c2 ς + 15,29,116,18,2,248,0,0,20,0,0,47,255,228,1,255,255,248,11,255,255,244,31,249,1,176,63,224,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,128,0,0,127,192,0,0,63,240,0,0,31,254,0,0,11,255,249,0,1,255,255,208,0,47,255,244,0,0,127,252,0,0,7,252,0,0,3,252,0,0,3,252,0,0,3,248,0,0,7,244,0,0,15,240,0,0,5,64, + // 0x03c3 σ + 20,21,105,23,2,255,0,6,255,255,255,0,191,255,255,255,7,255,255,255,255,15,254,64,254,0,63,240,0,63,128,127,192,0,47,192,191,128,0,31,224,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,11,240,255,0,0,15,240,255,0,0,15,240,191,64,0,15,240,127,128,0,47,224,63,208,0,127,192,47,244,1,255,128,11,255,255,255,0,2,255,255,248,0,0,127,255,208,0,0,1,84,0,0, + // 0x03c4 τ + 18,21,105,19,0,255,127,255,255,255,208,127,255,255,255,208,127,255,255,255,208,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,252,0,0,0,7,255,255,64,0,2,255,255,64,0,0,191,255,0,0,0,1,80,0, + // 0x03c5 υ + 17,21,105,23,3,255,255,0,0,255,0,255,0,0,255,0,255,0,0,191,64,255,0,0,127,128,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,128,255,0,0,255,64,191,128,1,255,0,127,208,11,253,0,63,255,255,248,0,15,255,255,224,0,2,255,255,64,0,0,5,64,0,0, + // 0x03c6 φ + 24,37,222,28,2,247,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,7,255,255,144,0,0,191,255,255,253,0,3,255,255,255,255,128,15,254,15,241,191,224,47,240,15,240,31,244,63,192,15,240,7,252,191,128,15,240,3,253,255,64,15,240,1,254,255,0,15,240,1,255,255,0,15,240,0,255,255,0,15,240,0,255,255,0,15,240,0,255,255,64,15,240,1,254,191,128,15,240,3,253,63,192,15,240,7,252,47,240,15,240,15,244,15,253,15,240,191,240,3,255,255,255,255,192,0,191,255,255,254,0,0,11,255,255,208,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,224,0,0, + // 0x03c7 χ + 21,29,174,22,1,247,255,64,0,0,63,192,255,224,0,0,191,64,255,240,0,1,254,0,11,252,0,3,252,0,3,253,0,7,248,0,1,255,0,15,240,0,0,255,64,31,208,0,0,127,192,63,192,0,0,63,192,191,0,0,0,31,224,254,0,0,0,15,242,252,0,0,0,7,255,244,0,0,0,3,255,240,0,0,0,1,255,208,0,0,0,0,255,128,0,0,0,0,255,128,0,0,0,2,255,192,0,0,0,7,255,224,0,0,0,15,255,240,0,0,0,47,215,248,0,0,0,63,131,252,0,0,0,255,1,254,0,0,1,253,0,255,0,0,3,252,0,191,128,0,11,244,0,63,208,0,31,224,0,47,249,64,63,192,0,15,255,192,191,64,0,3,255,192,255,0,0,0,191,128, + // 0x03c8 ψ + 23,37,222,29,3,247,0,0,47,192,0,0,0,0,47,192,0,0,0,0,47,192,0,0,0,0,47,192,0,0,0,0,47,192,0,0,0,0,47,192,0,0,0,0,47,192,0,0,0,0,47,192,0,0,254,0,47,192,11,240,254,0,47,192,11,240,254,0,47,192,7,244,254,0,47,192,3,248,254,0,47,192,3,252,254,0,47,192,3,252,254,0,47,192,3,252,254,0,47,192,2,252,254,0,47,192,2,252,254,0,47,192,2,252,254,0,47,192,2,252,254,0,47,192,2,252,255,0,47,192,3,252,255,0,47,192,3,248,191,64,47,192,11,244,63,192,47,192,47,240,47,244,47,193,255,208,15,255,255,255,255,64,3,255,255,255,253,0,0,111,255,255,144,0,0,0,47,208,0,0,0,0,47,192,0,0,0,0,47,192,0,0,0,0,47,192,0,0,0,0,47,192,0,0,0,0,47,192,0,0,0,0,47,192,0,0,0,0,47,192,0,0,0,0,31,192,0,0, + // 0x03c9 ω + 26,21,147,30,2,255,2,252,0,0,2,252,0,7,244,0,0,0,254,0,15,240,0,0,0,191,64,31,208,0,0,0,63,128,63,192,0,0,0,47,192,63,128,0,0,0,31,208,127,64,0,84,0,15,224,191,64,2,252,0,15,240,191,0,2,252,0,15,240,191,0,2,252,0,15,240,191,0,2,252,0,15,240,191,0,2,252,0,15,240,191,64,2,252,0,15,240,127,64,3,252,0,15,224,63,128,3,252,0,31,208,63,192,7,254,0,63,192,31,240,15,239,64,191,128,15,255,255,159,255,255,0,3,255,255,11,255,253,0,0,191,248,2,255,240,0,0,5,64,0,5,0,0, + // 0x03ca ϊ + 255, + // 0x03cb ϋ + 255, + // 0x03cc ό + 19,30,150,23,2,255,0,0,10,164,0,0,0,31,240,0,0,0,47,208,0,0,0,63,192,0,0,0,63,0,0,0,0,190,0,0,0,0,104,0,0,0,0,0,0,0,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x03cd ύ + 17,30,150,23,3,255,0,0,106,128,0,0,0,255,128,0,0,0,255,0,0,0,1,253,0,0,0,2,248,0,0,0,3,240,0,0,0,2,144,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,255,0,255,0,0,255,0,255,0,0,191,64,255,0,0,127,128,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,128,255,0,0,255,64,191,128,1,255,0,127,208,11,253,0,63,255,255,248,0,15,255,255,224,0,2,255,255,64,0,0,5,64,0,0, + // 0x03ce ώ + 26,30,210,30,2,255,0,0,0,10,164,0,0,0,0,0,31,240,0,0,0,0,0,47,208,0,0,0,0,0,63,128,0,0,0,0,0,127,0,0,0,0,0,0,189,0,0,0,0,0,0,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,252,0,0,2,252,0,7,244,0,0,0,254,0,15,240,0,0,0,191,64,31,208,0,0,0,63,128,63,192,0,0,0,47,192,63,128,0,0,0,31,208,127,64,0,84,0,15,224,191,64,2,252,0,15,240,191,0,2,252,0,15,240,191,0,2,252,0,15,240,191,0,2,252,0,15,240,191,0,2,252,0,15,240,191,64,2,252,0,15,240,127,64,3,252,0,15,224,63,128,3,252,0,31,208,63,192,7,254,0,63,192,31,240,15,239,64,191,128,15,255,255,159,255,255,0,3,255,255,11,255,253,0,0,191,248,2,255,240,0,0,5,64,0,5,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Katakana_27.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Katakana_27.cpp new file mode 100644 index 0000000000..7fd80a5ebf --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Katakana_27.cpp @@ -0,0 +1,238 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Katakana 37pt, capital 'A' height: 27px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 +extern const uint8_t NotoSans_Medium_Katakana_27[13151] = { + 162,27,160,48,104,136,35,247, // unifont_t + // 0x30a0 ゠ + 160,48,17,8,40,37,10,10,191,255,255,255,128,21,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,21,85,85,85,0, + // 0x30a1 ァ + 161,48,26,25,175,37,6,252,191,255,255,255,255,255,192,191,255,255,255,255,255,240,191,255,255,255,255,255,240,101,85,85,85,85,191,192,0,0,0,0,0,191,64,0,0,5,80,1,255,0,0,0,15,240,7,252,0,0,0,15,240,31,244,0,0,0,15,224,127,208,0,0,0,15,225,255,128,0,0,0,15,224,254,0,0,0,0,15,224,40,0,0,0,0,31,208,0,0,0,0,0,47,192,0,0,0,0,0,63,192,0,0,0,0,0,63,128,0,0,0,0,0,255,64,0,0,0,0,1,255,0,0,0,0,0,7,253,0,0,0,0,0,31,248,0,0,0,0,0,191,240,0,0,0,0,11,255,192,0,0,0,0,3,254,0,0,0,0,0,0,180,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30a2 ア + 162,48,31,30,240,37,4,254,186,170,170,170,170,170,170,128,191,255,255,255,255,255,255,240,191,255,255,255,255,255,255,248,191,255,255,255,255,255,255,240,0,0,0,0,0,0,127,208,0,0,0,0,0,0,255,128,0,0,0,0,0,2,255,0,0,0,0,170,0,7,252,0,0,0,0,255,0,31,244,0,0,0,0,255,0,127,224,0,0,0,0,255,2,255,128,0,0,0,0,255,15,255,0,0,0,0,0,254,11,248,0,0,0,0,0,254,2,224,0,0,0,0,1,254,0,0,0,0,0,0,1,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,11,248,0,0,0,0,0,0,15,244,0,0,0,0,0,0,47,240,0,0,0,0,0,0,127,208,0,0,0,0,0,1,255,128,0,0,0,0,0,11,255,0,0,0,0,0,0,127,252,0,0,0,0,0,6,255,240,0,0,0,0,0,3,255,192,0,0,0,0,0,0,189,0,0,0,0,0,0,0,16,0,0,0,0,0,0, + // 0x30a3 ィ + 163,48,25,26,182,37,4,253,0,0,0,0,0,13,0,0,0,0,0,0,63,64,0,0,0,0,0,255,192,0,0,0,0,3,255,128,0,0,0,0,31,254,0,0,0,0,0,191,244,0,0,0,0,3,255,192,0,0,0,0,31,254,0,0,0,0,1,255,244,0,0,0,0,31,255,208,0,0,0,1,255,255,192,0,0,0,111,255,255,192,0,0,27,255,254,63,192,0,0,127,255,224,63,192,0,0,63,253,0,63,192,0,0,31,128,0,63,192,0,0,4,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0, + // 0x30a4 イ + 164,48,29,31,248,37,3,255,0,0,0,0,0,0,4,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,255,128,0,0,0,0,0,3,255,192,0,0,0,0,0,15,255,0,0,0,0,0,0,127,248,0,0,0,0,0,1,255,224,0,0,0,0,0,11,255,128,0,0,0,0,0,127,253,0,0,0,0,0,2,255,224,0,0,0,0,0,47,255,64,0,0,0,0,2,255,253,0,0,0,0,0,47,255,253,0,0,0,0,7,255,255,253,0,0,0,1,191,255,226,253,0,0,0,111,255,254,2,253,0,0,0,255,255,224,2,253,0,0,0,127,249,0,2,253,0,0,0,63,64,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,3,253,0,0,0,0,0,0,3,253,0,0,0,0,0,0,3,253,0,0,0,0,0,0,3,254,0,0,0, + // 0x30a5 ゥ + 165,48,25,28,196,37,6,252,0,0,11,244,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,7,240,0,0,0,0,0,7,240,0,0,0,127,255,255,255,255,254,0,127,255,255,255,255,255,192,63,255,255,255,255,255,192,63,149,85,85,85,191,128,63,64,0,0,0,191,64,63,64,0,0,0,255,0,63,64,0,0,0,255,0,63,64,0,0,1,254,0,127,64,0,0,2,253,0,127,64,0,0,3,252,0,21,0,0,0,11,248,0,0,0,0,0,15,244,0,0,0,0,0,63,240,0,0,0,0,0,191,192,0,0,0,0,2,255,64,0,0,0,0,15,255,0,0,0,0,0,191,248,0,0,0,0,27,255,224,0,0,0,6,255,255,64,0,0,0,7,255,248,0,0,0,0,2,255,144,0,0,0,0,0,180,0,0,0,0,0,0,0,0,0,0,0, + // 0x30a6 ウ + 166,48,29,33,8,37,4,254,0,0,0,191,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,41,85,85,255,149,85,104,0,127,255,255,255,255,255,255,128,127,255,255,255,255,255,255,192,63,255,255,255,255,255,255,128,63,64,0,0,0,0,255,64,63,64,0,0,0,0,255,0,63,64,0,0,0,0,255,0,63,64,0,0,0,1,255,0,63,64,0,0,0,2,254,0,63,64,0,0,0,3,253,0,127,128,0,0,0,7,252,0,127,128,0,0,0,11,248,0,127,64,0,0,0,15,244,0,0,0,0,0,0,47,240,0,0,0,0,0,0,63,208,0,0,0,0,0,0,255,192,0,0,0,0,0,2,255,0,0,0,0,0,0,11,254,0,0,0,0,0,0,63,252,0,0,0,0,0,1,255,240,0,0,0,0,0,11,255,192,0,0,0,0,0,191,255,0,0,0,0,0,111,255,248,0,0,0,0,2,255,255,192,0,0,0,0,0,191,253,0,0,0,0,0,0,63,144,0,0,0,0,0,0,8,0,0,0,0,0, + // 0x30a7 ェ + 167,48,27,21,147,37,5,255,11,255,255,255,255,255,192,11,255,255,255,255,255,192,11,255,255,255,255,255,192,5,85,86,254,85,85,64,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,127,255,255,255,255,255,244,127,255,255,255,255,255,244,127,255,255,255,255,255,244,106,170,170,170,170,170,164, + // 0x30a8 エ + 168,48,31,25,200,37,3,1,11,170,170,170,170,170,171,192,11,255,255,255,255,255,255,192,11,255,255,255,255,255,255,192,11,255,255,255,255,255,255,192,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252, + // 0x30a9 ォ + 169,48,26,27,189,37,6,253,0,0,0,2,160,0,0,0,0,0,7,244,0,0,0,0,0,3,244,0,0,0,0,0,3,244,0,0,0,0,0,3,244,0,0,0,0,0,3,244,0,0,47,255,255,255,255,255,240,47,255,255,255,255,255,240,47,255,255,255,255,255,240,21,85,85,127,249,85,80,0,0,0,191,244,0,0,0,0,1,255,244,0,0,0,0,7,255,244,0,0,0,0,31,247,244,0,0,0,0,127,211,248,0,0,0,2,255,131,248,0,0,0,15,254,3,248,0,0,0,127,244,3,248,0,0,2,255,208,3,248,0,0,47,255,0,3,248,0,0,191,248,0,3,248,0,0,63,208,0,3,248,0,0,14,0,4,3,248,0,0,0,0,15,255,248,0,0,0,0,15,255,244,0,0,0,0,15,255,224,0,0,0,0,0,0,0,0,0, + // 0x30aa オ + 170,48,31,31,248,37,3,255,0,0,0,0,31,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,26,170,170,170,175,250,170,164,47,255,255,255,255,255,255,244,47,255,255,255,255,255,255,244,47,255,255,255,255,255,255,244,0,0,0,0,255,224,0,0,0,0,0,2,255,224,0,0,0,0,0,7,255,240,0,0,0,0,0,31,255,240,0,0,0,0,0,127,223,240,0,0,0,0,1,255,143,240,0,0,0,0,7,254,15,240,0,0,0,0,31,252,15,240,0,0,0,0,191,224,15,240,0,0,0,3,255,128,15,240,0,0,0,31,254,0,15,240,0,0,0,191,248,0,15,240,0,0,11,255,208,0,11,240,0,0,127,255,0,0,11,240,0,0,255,248,0,0,11,240,0,0,63,208,0,0,11,240,0,0,14,0,0,0,15,240,0,0,0,0,0,250,191,240,0,0,0,0,0,255,255,240,0,0,0,0,0,255,255,208,0,0,0,0,0,191,255,64,0,0, + // 0x30ab カ + 171,48,28,32,224,37,4,254,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,127,255,255,255,255,255,248,127,255,255,255,255,255,255,127,255,255,255,255,255,254,106,149,91,249,85,86,254,0,0,11,240,0,0,254,0,0,15,240,0,0,254,0,0,15,240,0,0,254,0,0,15,224,0,0,253,0,0,31,208,0,1,253,0,0,63,192,0,1,253,0,0,63,192,0,1,252,0,0,191,128,0,2,252,0,0,255,0,0,2,252,0,2,255,0,0,3,252,0,3,253,0,0,3,252,0,11,252,0,0,3,248,0,47,244,0,0,3,248,0,127,224,0,0,7,244,1,255,192,0,0,15,240,11,255,0,1,0,47,240,47,253,0,3,255,255,224,255,244,0,3,255,255,208,63,208,0,3,255,255,128,15,0,0,1,170,168,0,0,0,0,0,0,0,0, + // 0x30ac ガ + 172,48,32,34,16,37,3,254,0,0,0,0,0,0,0,80,0,0,0,0,0,0,3,240,0,0,2,253,0,1,225,248,0,0,3,253,0,3,240,189,0,0,2,253,0,1,252,63,0,0,2,252,0,0,189,47,0,0,2,252,0,0,63,0,0,0,2,252,0,0,40,0,0,0,3,252,0,0,0,0,63,255,255,255,255,255,253,0,63,255,255,255,255,255,255,0,63,255,255,255,255,255,255,0,42,149,91,253,85,85,255,0,0,0,7,248,0,0,255,0,0,0,7,244,0,0,255,0,0,0,11,240,0,0,255,0,0,0,15,240,0,0,254,0,0,0,15,224,0,0,254,0,0,0,31,208,0,0,254,0,0,0,63,192,0,0,253,0,0,0,63,192,0,0,253,0,0,0,191,128,0,1,253,0,0,0,255,0,0,1,252,0,0,2,254,0,0,2,252,0,0,7,252,0,0,2,252,0,0,15,248,0,0,3,252,0,0,63,240,0,0,3,248,0,0,255,208,0,0,7,248,0,3,255,128,0,0,15,244,0,31,255,0,3,254,191,240,0,191,248,0,3,255,255,224,0,127,224,0,3,255,255,192,0,15,128,0,2,255,254,0,0,1,0,0,0,0,0,0,0, + // 0x30ad キ + 173,48,30,32,0,37,4,254,0,0,10,208,0,0,0,0,0,0,31,224,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,11,240,0,0,80,0,0,0,11,244,1,175,240,0,0,0,7,254,255,255,240,0,0,5,191,255,255,255,240,0,175,255,255,255,255,254,80,0,255,255,255,255,165,0,0,0,255,255,251,253,0,0,0,0,191,164,1,254,0,0,0,0,16,0,0,254,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,191,0,0,1,64,0,0,0,191,64,5,191,192,0,0,0,127,155,255,255,192,0,0,5,191,255,255,255,208,0,107,255,255,255,255,250,64,255,255,255,255,255,164,0,0,255,255,255,255,208,0,0,0,255,255,148,31,208,0,0,0,186,64,0,15,224,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,11,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,248,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,253,0,0,0,0,0,0,1,64,0,0,0, + // 0x30ae ギ + 174,48,32,34,16,37,3,254,0,0,0,0,0,0,2,224,0,0,0,0,0,0,130,244,0,0,0,80,0,3,240,252,0,0,15,240,0,2,244,126,0,0,15,240,0,0,252,63,0,0,11,244,0,0,126,20,0,0,7,244,0,0,61,0,0,0,3,248,0,6,240,0,0,0,3,252,107,255,240,0,0,0,23,255,255,255,244,0,21,175,255,255,255,255,244,0,191,255,255,255,255,148,0,0,191,255,255,255,64,0,0,0,127,254,144,255,0,0,0,0,57,0,0,255,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,128,0,26,192,0,0,0,63,193,111,255,208,0,0,0,63,255,255,255,224,0,1,111,255,255,255,255,224,107,255,255,255,255,254,144,0,191,255,255,255,249,0,0,0,191,255,254,159,240,0,0,0,127,233,0,15,240,0,0,0,20,0,0,11,240,0,0,0,0,0,0,11,244,0,0,0,0,0,0,7,248,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,2,254,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,229,0,0,0, + // 0x30af ク + 175,48,30,33,8,37,3,254,0,0,0,57,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,255,192,0,0,0,0,0,1,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,7,253,85,85,88,0,0,0,15,255,255,255,255,128,0,0,63,255,255,255,255,224,0,0,191,255,255,255,255,192,0,1,255,64,0,0,255,128,0,7,254,0,0,0,255,64,0,31,252,0,0,1,255,0,0,127,240,0,0,3,254,0,2,255,192,0,0,3,252,0,11,255,0,0,0,11,252,0,127,252,0,0,0,15,244,0,63,240,0,0,0,47,240,0,11,128,0,0,0,127,208,0,0,0,0,0,0,255,192,0,0,0,0,0,2,255,0,0,0,0,0,0,7,253,0,0,0,0,0,0,31,252,0,0,0,0,0,0,127,240,0,0,0,0,0,1,255,192,0,0,0,0,0,11,255,64,0,0,0,0,0,63,253,0,0,0,0,0,2,255,244,0,0,0,0,0,31,255,192,0,0,0,0,2,255,254,0,0,0,0,0,127,255,244,0,0,0,0,0,127,255,128,0,0,0,0,0,31,248,0,0,0,0,0,0,3,64,0,0,0,0,0, + // 0x30b0 グ + 176,48,34,35,59,37,2,253,0,0,0,0,0,0,0,125,0,0,0,0,0,0,0,20,63,0,0,0,0,120,0,0,189,47,128,0,0,0,191,192,0,63,15,192,0,0,0,255,64,0,47,71,224,0,0,2,255,0,0,15,194,64,0,0,3,253,0,0,7,192,0,0,0,15,253,85,85,105,0,0,0,0,31,255,255,255,255,64,0,0,0,63,255,255,255,255,192,0,0,0,255,255,255,255,255,192,0,0,2,255,0,0,0,255,64,0,0,11,253,0,0,1,255,0,0,0,47,248,0,0,2,254,0,0,0,191,224,0,0,3,253,0,0,3,255,128,0,0,11,252,0,0,31,254,0,0,0,15,244,0,0,191,248,0,0,0,31,240,0,0,127,208,0,0,0,63,224,0,0,15,0,0,0,0,191,192,0,0,0,0,0,0,1,255,64,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,63,244,0,0,0,0,0,0,0,191,224,0,0,0,0,0,0,2,255,192,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,127,252,0,0,0,0,0,0,7,255,224,0,0,0,0,0,0,47,255,128,0,0,0,0,0,7,255,253,0,0,0,0,0,0,191,255,224,0,0,0,0,0,0,191,255,64,0,0,0,0,0,0,47,244,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0, + // 0x30b1 ケ + 177,48,32,33,8,37,2,254,0,0,20,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,63,208,0,0,0,0,0,0,127,192,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,3,255,170,170,170,170,171,0,7,255,255,255,255,255,255,0,15,255,255,255,255,255,255,0,31,255,255,255,255,255,255,0,63,224,0,7,248,0,0,0,255,192,0,11,244,0,0,2,255,64,0,11,244,0,0,7,254,0,0,15,240,0,0,31,252,0,0,15,240,0,0,127,240,0,0,31,240,0,0,63,208,0,0,47,224,0,0,7,64,0,0,63,208,0,0,0,0,0,0,63,192,0,0,0,0,0,0,191,192,0,0,0,0,0,0,255,64,0,0,0,0,0,2,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,15,252,0,0,0,0,0,0,63,244,0,0,0,0,0,0,255,240,0,0,0,0,0,3,255,192,0,0,0,0,0,15,255,0,0,0,0,0,0,191,252,0,0,0,0,0,0,191,240,0,0,0,0,0,0,31,128,0,0,0,0,0,0,1,0,0,0,0,0, + // 0x30b2 ゲ + 178,48,33,35,59,37,2,253,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,189,0,0,0,36,0,0,0,188,63,0,0,0,127,192,0,0,189,31,128,0,0,191,192,0,0,63,15,192,0,0,191,128,0,0,31,131,128,0,0,255,0,0,0,15,192,0,0,1,255,0,0,0,6,0,0,0,3,253,0,0,0,0,0,0,0,7,254,170,170,170,170,173,0,0,15,255,255,255,255,255,254,0,0,31,255,255,255,255,255,254,0,0,63,255,255,255,255,255,254,0,0,191,192,0,15,240,0,0,0,1,255,64,0,15,240,0,0,0,3,255,0,0,15,240,0,0,0,15,252,0,0,31,224,0,0,0,63,244,0,0,47,224,0,0,0,255,224,0,0,47,208,0,0,0,127,192,0,0,63,192,0,0,0,11,0,0,0,127,192,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,11,252,0,0,0,0,0,0,0,47,244,0,0,0,0,0,0,0,127,240,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,7,255,64,0,0,0,0,0,0,47,254,0,0,0,0,0,0,1,255,248,0,0,0,0,0,0,0,255,208,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30b3 コ + 179,48,27,27,189,37,5,255,63,255,255,255,255,255,248,63,255,255,255,255,255,248,63,255,255,255,255,255,248,63,250,170,170,170,175,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,127,255,255,255,255,255,248,127,255,255,255,255,255,248,127,255,255,255,255,255,248,127,255,255,255,255,255,248,0,0,0,0,0,7,248,0,0,0,0,0,7,252,0,0,0,0,0,0,0, + // 0x30b4 ゴ + 180,48,30,35,24,37,5,254,0,0,0,0,0,0,5,0,0,0,0,0,0,4,63,0,0,0,0,0,0,188,47,128,0,0,0,0,0,126,15,192,0,0,0,0,0,63,7,224,0,0,0,0,0,31,131,224,0,0,0,0,0,15,192,0,0,0,0,0,0,5,0,0,191,255,255,255,255,255,240,0,191,255,255,255,255,255,240,0,191,255,255,255,255,255,240,0,191,234,170,170,170,191,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,255,255,255,255,255,255,240,0,255,255,255,255,255,255,240,0,255,255,255,255,255,255,240,0,255,255,255,255,255,255,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0, + // 0x30b5 サ + 181,48,32,33,8,37,2,253,0,0,169,0,0,47,192,0,0,1,254,0,0,63,192,0,0,1,254,0,0,47,192,0,0,0,254,0,0,47,192,0,0,0,254,0,0,47,192,0,0,0,254,0,0,47,192,0,0,0,254,0,0,47,192,0,0,0,254,0,0,47,192,0,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,106,170,255,170,170,191,234,170,0,0,254,0,0,47,192,0,0,0,254,0,0,47,192,0,0,0,254,0,0,63,192,0,0,0,254,0,0,63,192,0,0,0,254,0,0,63,192,0,0,0,254,0,0,63,192,0,0,0,254,0,0,63,128,0,0,1,254,0,0,127,128,0,0,1,254,0,0,191,64,0,0,0,0,0,0,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,3,253,0,0,0,0,0,0,15,252,0,0,0,0,0,0,47,244,0,0,0,0,0,0,255,224,0,0,0,0,0,11,255,192,0,0,0,0,0,191,255,0,0,0,0,0,1,255,248,0,0,0,0,0,0,127,208,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30b6 ザ + 182,48,35,33,41,37,1,253,0,0,0,0,0,0,0,7,192,0,0,170,0,0,47,226,195,208,0,0,255,0,0,31,227,210,240,0,0,255,0,0,31,209,241,240,0,0,255,0,0,31,208,244,244,0,0,255,0,0,31,208,184,80,0,0,255,0,0,31,208,80,0,0,0,255,0,0,31,208,0,0,122,170,255,170,170,175,250,170,64,127,255,255,255,255,255,255,255,128,127,255,255,255,255,255,255,255,128,127,255,255,255,255,255,255,255,128,0,0,255,0,0,31,208,0,0,0,0,255,0,0,31,208,0,0,0,0,255,0,0,31,208,0,0,0,0,255,0,0,31,208,0,0,0,0,255,0,0,31,208,0,0,0,0,255,0,0,47,208,0,0,0,0,255,0,0,63,192,0,0,0,0,255,0,0,63,192,0,0,0,0,255,0,0,63,192,0,0,0,0,85,0,0,127,128,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,63,244,0,0,0,0,0,0,1,255,224,0,0,0,0,0,0,31,255,128,0,0,0,0,0,0,255,254,0,0,0,0,0,0,0,191,244,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,4,0,0,0,0,0, + // 0x30b7 シ + 183,48,30,30,240,37,4,255,0,3,64,0,0,0,0,0,0,15,240,0,0,0,0,0,0,47,254,0,0,0,0,0,0,15,255,192,0,0,0,0,0,1,255,248,0,0,0,0,0,0,47,252,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,176,0,0,0,0,20,0,0,0,0,0,1,0,62,0,0,0,0,0,3,128,255,224,0,0,0,0,11,192,255,253,0,0,0,0,31,224,47,255,128,0,0,0,63,240,3,255,224,0,0,0,255,192,0,127,192,0,0,3,255,64,0,11,64,0,0,15,254,0,0,1,0,0,0,63,248,0,0,0,0,0,0,255,224,0,0,0,0,0,7,255,128,0,0,0,0,0,47,254,0,0,0,0,0,0,255,244,0,0,0,0,0,11,255,208,0,0,0,0,0,127,255,0,0,0,0,0,11,255,248,0,0,0,0,1,191,255,192,0,0,0,1,191,255,253,0,0,0,0,47,255,255,224,0,0,0,0,15,255,253,0,0,0,0,0,11,255,128,0,0,0,0,0,3,144,0,0,0,0,0,0, + // 0x30b8 ジ + 184,48,32,31,248,37,3,255,0,0,0,0,0,0,7,208,0,2,192,0,0,1,7,240,0,7,248,0,0,31,66,248,0,15,255,64,0,15,192,252,0,11,255,224,0,11,224,126,0,0,255,253,0,3,240,62,0,0,31,254,0,1,248,0,0,0,2,252,0,0,244,0,0,0,0,116,0,0,0,0,8,0,0,0,0,0,0,64,47,64,0,0,0,0,2,192,127,240,0,0,0,0,3,224,191,254,0,0,0,0,15,240,15,255,208,0,0,0,47,244,1,255,240,0,0,0,191,224,0,47,224,0,0,1,255,192,0,7,192,0,0,7,255,0,0,0,0,0,0,31,252,0,0,0,0,0,0,191,240,0,0,0,0,0,2,255,208,0,0,0,0,0,15,255,64,0,0,0,0,0,191,252,0,0,0,0,0,3,255,224,0,0,0,0,0,47,255,128,0,0,0,0,6,255,252,0,0,0,0,0,191,255,224,0,0,0,0,111,255,255,0,0,0,0,15,255,255,244,0,0,0,0,11,255,254,0,0,0,0,0,3,255,144,0,0,0,0,0,1,228,0,0,0,0,0,0, + // 0x30b9 ス + 185,48,30,30,240,37,4,254,0,0,0,0,0,1,0,0,3,255,255,255,255,255,192,0,3,255,255,255,255,255,240,0,3,255,255,255,255,255,224,0,3,250,170,170,170,255,192,0,0,0,0,0,0,255,128,0,0,0,0,0,1,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,7,252,0,0,0,0,0,0,15,248,0,0,0,0,0,0,31,240,0,0,0,0,0,0,63,208,0,0,0,0,0,0,191,128,0,0,0,0,0,2,255,0,0,0,0,0,0,7,253,0,0,0,0,0,0,31,253,0,0,0,0,0,0,63,255,64,0,0,0,0,0,255,255,208,0,0,0,0,7,255,127,248,0,0,0,0,31,253,15,253,0,0,0,0,191,244,7,255,64,0,0,3,255,208,1,255,208,0,0,31,255,0,0,127,244,0,0,255,252,0,0,31,252,0,11,255,224,0,0,7,255,0,191,255,64,0,0,2,255,192,255,248,0,0,0,0,255,208,127,208,0,0,0,0,63,64,29,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0, + // 0x30ba ズ + 186,48,33,36,68,37,3,253,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,244,0,0,0,0,0,0,1,224,252,0,0,0,0,0,0,3,240,189,0,0,0,0,0,0,1,248,63,0,0,0,0,0,0,0,189,47,64,0,0,0,0,0,1,127,13,0,3,255,255,255,255,255,254,0,0,3,255,255,255,255,255,240,0,0,3,255,255,255,255,255,240,0,0,3,255,170,170,170,255,208,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,11,252,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,1,255,64,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,63,255,128,0,0,0,0,0,0,255,255,240,0,0,0,0,0,3,255,127,252,0,0,0,0,0,31,253,15,255,0,0,0,0,0,127,244,3,255,192,0,0,0,3,255,208,0,255,224,0,0,0,31,255,0,0,63,248,0,0,0,255,252,0,0,15,254,0,0,11,255,224,0,0,3,255,64,0,255,255,64,0,0,1,255,208,0,191,248,0,0,0,0,127,208,0,47,208,0,0,0,0,47,64,0,9,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0, + // 0x30bb セ + 187,48,31,31,248,37,2,255,0,0,42,128,0,0,0,0,0,0,127,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,6,192,0,0,63,128,0,22,255,244,0,0,63,128,27,255,255,252,0,0,63,239,255,255,255,244,0,5,191,255,255,255,255,240,91,255,255,255,255,144,63,208,255,255,255,254,80,0,191,128,191,255,255,192,0,0,255,0,127,249,63,128,0,3,253,0,100,0,63,128,0,11,252,0,0,0,63,128,0,31,240,0,0,0,63,128,0,63,208,0,0,0,63,128,0,255,128,0,0,0,63,128,0,255,0,0,0,0,63,128,0,28,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,224,0,0,5,144,0,0,63,255,170,255,255,208,0,0,31,255,255,255,255,208,0,0,7,255,255,255,255,208,0,0,0,111,255,255,169,64, + // 0x30bc ゼ + 188,48,35,34,50,37,1,254,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,5,31,128,0,0,0,0,0,0,47,11,208,0,0,63,208,0,0,31,131,240,0,0,63,208,0,0,11,194,244,0,0,47,208,0,0,3,240,208,0,0,47,208,0,0,2,240,0,0,0,47,192,0,0,0,64,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,27,240,0,0,0,47,192,0,91,255,253,0,0,0,47,193,111,255,255,253,0,0,0,47,255,255,255,255,248,0,0,26,255,255,255,255,159,240,0,47,255,255,255,254,64,47,224,0,127,255,255,249,0,0,63,192,0,63,255,255,192,0,0,255,64,0,63,164,47,192,0,2,254,0,0,16,0,47,192,0,7,252,0,0,0,0,47,192,0,15,244,0,0,0,0,47,192,0,63,224,0,0,0,0,47,192,0,255,192,0,0,0,0,47,192,0,47,0,0,0,0,0,47,192,0,4,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,249,0,1,91,240,0,0,0,15,255,255,255,255,240,0,0,0,11,255,255,255,255,240,0,0,0,1,255,255,255,255,224,0,0,0,0,6,170,165,80,0,0, + // 0x30bd ソ + 189,48,28,29,203,37,4,255,0,0,0,0,0,1,80,11,64,0,0,0,3,254,191,192,0,0,0,3,253,127,224,0,0,0,3,252,47,240,0,0,0,7,252,15,252,0,0,0,7,252,7,253,0,0,0,11,248,3,255,0,0,0,15,244,1,255,128,0,0,31,240,0,191,192,0,0,47,224,0,63,224,0,0,63,208,0,47,224,0,0,127,192,0,15,0,0,0,255,128,0,0,0,0,1,255,0,0,0,0,0,3,254,0,0,0,0,0,11,252,0,0,0,0,0,31,248,0,0,0,0,0,63,240,0,0,0,0,0,255,208,0,0,0,0,3,255,128,0,0,0,0,15,255,0,0,0,0,0,63,252,0,0,0,0,1,255,240,0,0,0,0,11,255,192,0,0,0,0,191,254,0,0,0,0,11,255,248,0,0,0,0,15,255,208,0,0,0,0,3,254,0,0,0,0,0,0,160,0,0,0,0, + // 0x30be ゾ + 190,48,31,34,16,37,4,254,0,0,0,0,0,0,2,128,0,0,0,0,0,6,15,208,0,0,0,0,0,47,67,240,0,0,0,0,0,15,193,248,0,0,0,0,0,7,224,252,0,0,0,0,0,3,240,100,31,0,0,0,0,1,224,0,255,64,0,0,0,10,144,0,255,192,0,0,0,15,248,0,63,224,0,0,0,15,244,0,47,240,0,0,0,15,240,0,15,252,0,0,0,31,240,0,7,253,0,0,0,47,224,0,3,255,0,0,0,63,208,0,1,255,128,0,0,63,192,0,0,255,192,0,0,191,128,0,0,127,192,0,0,255,64,0,0,61,0,0,1,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,11,252,0,0,0,0,0,0,15,248,0,0,0,0,0,0,63,240,0,0,0,0,0,0,191,208,0,0,0,0,0,1,255,128,0,0,0,0,0,7,255,0,0,0,0,0,0,31,252,0,0,0,0,0,0,191,244,0,0,0,0,0,3,255,208,0,0,0,0,0,31,255,64,0,0,0,0,1,255,253,0,0,0,0,0,31,255,240,0,0,0,0,0,47,255,128,0,0,0,0,0,7,248,0,0,0,0,0,0,1,208,0,0,0,0,0, + // 0x30bf タ + 191,48,30,34,16,37,3,254,0,0,0,16,0,0,0,0,0,0,0,62,64,0,0,0,0,0,0,191,192,0,0,0,0,0,0,255,64,0,0,0,0,0,2,255,0,0,0,0,0,0,3,253,0,0,4,0,0,0,15,255,255,255,255,64,0,0,47,255,255,255,255,208,0,0,127,255,255,255,255,192,0,0,255,149,85,85,255,192,0,3,255,0,0,0,255,64,0,15,252,0,0,0,255,0,0,47,244,0,0,2,254,0,0,191,208,0,0,3,253,0,3,255,128,128,0,11,252,0,31,254,2,248,0,15,244,0,191,248,11,255,64,47,240,0,127,208,3,255,224,127,208,0,15,0,0,191,253,255,192,0,0,0,0,31,255,255,0,0,0,0,0,2,255,254,0,0,0,0,0,0,127,253,0,0,0,0,0,0,63,255,128,0,0,0,0,0,255,255,240,0,0,0,0,3,255,191,252,0,0,0,0,31,254,31,244,0,0,0,0,191,248,3,224,0,0,0,7,255,208,0,128,0,0,0,63,255,64,0,0,0,0,6,255,252,0,0,0,0,0,191,255,208,0,0,0,0,0,255,254,0,0,0,0,0,0,63,228,0,0,0,0,0,0,10,0,0,0,0,0,0, + // 0x30c0 ダ + 192,48,34,36,68,37,2,253,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,125,0,0,0,0,16,0,0,40,63,0,0,0,0,126,64,0,189,31,128,0,0,0,191,192,0,63,15,192,0,0,0,255,64,0,31,135,224,0,0,2,255,0,0,15,193,0,0,0,7,253,0,0,11,128,0,0,0,15,255,255,255,255,0,0,0,0,47,255,255,255,255,208,0,0,0,127,255,255,255,255,192,0,0,0,255,149,85,85,255,128,0,0,3,255,0,0,0,255,64,0,0,15,252,0,0,1,255,0,0,0,63,244,0,0,2,254,0,0,0,255,208,0,0,3,252,0,0,3,255,128,128,0,11,252,0,0,31,253,2,248,0,15,244,0,0,191,244,11,255,64,47,240,0,0,127,208,3,255,224,127,208,0,0,15,0,0,191,253,255,128,0,0,0,0,0,31,255,255,0,0,0,0,0,0,2,255,253,0,0,0,0,0,0,0,127,253,0,0,0,0,0,0,0,63,255,128,0,0,0,0,0,0,255,255,240,0,0,0,0,0,7,255,191,252,0,0,0,0,0,31,253,31,244,0,0,0,0,0,191,244,3,224,0,0,0,0,7,255,208,0,128,0,0,0,0,127,255,0,0,0,0,0,0,7,255,248,0,0,0,0,0,0,191,255,208,0,0,0,0,0,0,255,254,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0, + // 0x30c1 チ + 193,48,31,32,0,37,3,254,0,0,0,0,0,0,128,0,0,0,0,0,0,111,240,0,0,0,0,22,191,255,248,0,3,255,255,255,255,255,252,0,2,255,255,255,255,249,0,0,1,255,255,255,245,0,0,0,0,149,84,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,170,85,85,95,249,85,85,168,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,15,240,0,0,0,0,0,0,15,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,47,208,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,255,128,0,0,0,0,0,1,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,15,252,0,0,0,0,0,0,63,244,0,0,0,0,0,1,255,224,0,0,0,0,0,11,255,128,0,0,0,0,0,47,254,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,128,0,0,0,0,0, + // 0x30c2 ヂ + 194,48,33,32,32,37,2,253,0,0,0,0,0,6,208,0,0,0,0,0,0,26,255,240,0,0,1,85,106,191,255,255,252,0,0,3,255,255,255,255,255,228,24,0,2,255,255,255,255,144,0,125,0,0,255,250,175,240,0,124,63,0,0,0,0,11,240,0,126,31,128,0,0,0,11,240,0,47,11,192,0,0,0,11,240,0,15,131,64,0,0,0,11,240,0,11,192,0,0,0,0,11,240,0,1,0,0,0,0,0,11,240,0,0,0,0,255,255,255,255,255,255,255,252,0,255,255,255,255,255,255,255,252,0,255,255,255,255,255,255,255,252,0,169,85,85,95,245,85,85,168,0,0,0,0,15,240,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,11,253,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,47,255,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,2,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30c3 ッ + 195,48,26,25,175,37,6,253,0,0,7,64,0,0,0,0,0,63,192,0,25,0,27,0,47,192,0,47,208,191,64,31,224,0,63,208,63,128,15,240,0,63,192,63,192,11,244,0,63,192,31,224,3,248,0,191,64,15,240,3,252,0,255,0,11,244,2,228,1,255,0,3,248,0,0,2,253,0,3,248,0,0,3,252,0,1,64,0,0,15,244,0,0,0,0,0,31,240,0,0,0,0,0,63,208,0,0,0,0,0,255,128,0,0,0,0,3,255,0,0,0,0,0,15,252,0,0,0,0,0,127,244,0,0,0,0,2,255,208,0,0,0,0,47,255,64,0,0,0,2,255,252,0,0,0,0,63,255,224,0,0,0,0,31,255,0,0,0,0,0,7,244,0,0,0,0,0,1,64,0,0,0,0, + // 0x30c4 ツ + 196,48,31,30,240,37,3,255,0,0,0,16,0,0,0,0,0,0,3,248,0,0,0,0,1,0,3,252,0,0,11,144,47,64,2,253,0,0,15,248,191,128,0,255,0,0,15,244,63,192,0,255,64,0,31,240,47,224,0,127,128,0,47,224,31,240,0,63,192,0,63,208,15,244,0,47,208,0,63,192,7,252,0,31,224,0,127,128,3,252,0,15,128,0,255,64,2,254,0,0,0,1,255,0,1,255,0,0,0,2,254,0,0,228,0,0,0,3,252,0,0,0,0,0,0,15,248,0,0,0,0,0,0,31,240,0,0,0,0,0,0,63,224,0,0,0,0,0,0,255,192,0,0,0,0,0,2,255,64,0,0,0,0,0,11,254,0,0,0,0,0,0,47,248,0,0,0,0,0,0,255,240,0,0,0,0,0,7,255,192,0,0,0,0,0,47,255,0,0,0,0,0,2,255,248,0,0,0,0,0,47,255,208,0,0,0,0,7,255,255,0,0,0,0,0,3,255,244,0,0,0,0,0,0,255,128,0,0,0,0,0,0,116,0,0,0,0,0, + // 0x30c5 ヅ + 197,48,33,34,50,37,3,254,0,0,0,0,0,0,1,240,0,0,0,0,0,0,2,209,252,0,0,0,0,0,0,3,240,189,0,0,0,0,0,0,2,248,63,0,0,0,0,80,0,0,252,31,64,0,0,11,240,0,0,126,8,0,0,0,11,244,0,0,36,0,0,126,0,3,252,0,0,0,0,0,255,0,3,252,0,0,63,128,0,191,64,1,254,0,0,63,208,0,127,192,0,255,0,0,63,192,0,63,208,0,191,64,0,127,192,0,31,224,0,127,128,0,255,128,0,15,240,0,63,192,0,255,0,0,11,248,0,46,64,1,255,0,0,7,252,0,0,0,3,253,0,0,3,252,0,0,0,7,252,0,0,2,208,0,0,0,15,248,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,1,255,64,0,0,0,0,0,0,7,254,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,127,240,0,0,0,0,0,0,2,255,192,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,127,253,0,0,0,0,0,0,7,255,240,0,0,0,0,0,0,127,255,128,0,0,0,0,0,11,255,253,0,0,0,0,0,0,15,255,224,0,0,0,0,0,0,3,254,64,0,0,0,0,0,0,0,224,0,0,0,0,0,0, + // 0x30c6 テ + 198,48,31,32,0,37,3,253,0,41,85,85,85,85,168,0,0,127,255,255,255,255,252,0,0,127,255,255,255,255,252,0,0,127,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,85,85,85,85,85,85,168,191,255,255,255,255,255,255,252,191,255,255,255,255,255,255,252,191,255,255,255,255,255,255,252,0,0,0,11,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,31,224,0,0,0,0,0,0,47,208,0,0,0,0,0,0,63,192,0,0,0,0,0,0,191,128,0,0,0,0,0,1,255,64,0,0,0,0,0,3,255,0,0,0,0,0,0,15,252,0,0,0,0,0,0,127,244,0,0,0,0,0,2,255,224,0,0,0,0,0,31,255,64,0,0,0,0,0,7,253,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30c7 デ + 199,48,33,36,68,37,3,253,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0,0,116,126,0,0,0,0,0,0,0,252,47,64,0,0,0,0,0,0,126,15,192,0,191,255,255,255,255,47,75,192,0,191,255,255,255,255,15,192,0,0,191,255,255,255,255,10,64,0,0,101,85,85,85,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,170,170,170,170,170,164,0,255,255,255,255,255,255,255,248,0,255,255,255,255,255,255,255,248,0,255,255,255,255,255,255,255,248,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,7,253,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,127,240,0,0,0,0,0,0,2,255,208,0,0,0,0,0,0,31,255,64,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,3,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30c8 ト + 200,48,20,31,155,37,12,255,85,0,0,0,0,255,64,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,248,0,0,0,255,255,224,0,0,255,255,255,64,0,255,255,255,249,0,255,27,255,255,208,255,0,127,255,253,255,0,2,255,253,255,0,0,31,252,255,0,0,1,244,255,0,0,0,16,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,64,0,0,0, + // 0x30c9 ド + 201,48,23,31,186,37,10,254,21,64,0,0,10,0,127,192,0,0,63,64,63,192,0,44,15,192,63,192,0,126,11,224,63,192,0,63,67,240,63,192,0,15,193,244,63,192,0,11,208,128,63,192,0,3,224,0,63,192,0,1,0,0,63,192,0,0,0,0,63,208,0,0,0,0,63,254,64,0,0,0,63,255,249,0,0,0,63,255,255,224,0,0,63,255,255,255,64,0,63,194,255,255,248,0,63,192,27,255,255,64,63,192,0,127,255,0,63,192,0,6,254,0,63,192,0,0,44,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0, + // 0x30ca ナ + 202,48,31,32,0,37,3,254,0,0,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,191,255,255,255,255,255,255,252,191,255,255,255,255,255,255,252,191,255,255,255,255,255,255,252,122,170,170,175,254,170,170,172,0,0,0,11,244,0,0,0,0,0,0,11,244,0,0,0,0,0,0,11,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,47,224,0,0,0,0,0,0,63,208,0,0,0,0,0,0,191,192,0,0,0,0,0,0,255,128,0,0,0,0,0,3,255,0,0,0,0,0,0,11,253,0,0,0,0,0,0,47,252,0,0,0,0,0,0,191,240,0,0,0,0,0,3,255,208,0,0,0,0,0,47,255,64,0,0,0,0,0,47,252,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,64,0,0,0,0,0, + // 0x30cb ニ + 203,48,30,24,192,37,3,1,2,255,255,255,255,255,252,0,2,255,255,255,255,255,252,0,2,255,255,255,255,255,252,0,2,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,255,255,255,255,255,255,240,191,255,255,255,255,255,255,240,191,255,255,255,255,255,255,240,191,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0, + // 0x30cc ヌ + 204,48,26,31,217,37,5,253,0,0,0,0,0,4,0,31,255,255,255,255,255,64,31,255,255,255,255,255,208,31,255,255,255,255,255,208,26,170,170,170,170,255,192,0,0,0,0,0,255,128,0,0,0,0,0,255,0,0,0,0,0,1,255,0,0,0,0,0,3,253,0,0,40,0,0,7,252,0,0,127,64,0,11,248,0,1,255,240,0,15,240,0,0,191,253,0,47,224,0,0,31,255,192,127,192,0,0,1,255,244,255,128,0,0,0,63,255,255,0,0,0,0,11,255,253,0,0,0,0,1,255,252,0,0,0,0,0,127,255,0,0,0,0,1,255,255,208,0,0,0,7,255,255,244,0,0,0,47,253,63,254,0,0,0,255,244,11,255,128,0,11,255,208,1,255,224,0,191,255,0,0,127,192,11,255,248,0,0,31,64,255,255,208,0,0,1,0,255,254,0,0,0,0,0,63,224,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30cd ネ + 205,48,32,33,8,37,3,254,0,0,0,26,160,0,0,0,0,0,0,31,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,11,255,255,255,255,255,244,0,11,255,255,255,255,255,254,0,11,255,255,255,255,255,254,0,6,165,85,85,85,127,248,0,0,0,0,0,0,127,240,0,0,0,0,0,0,255,192,0,0,0,0,0,7,255,0,0,0,0,0,0,31,252,0,0,0,0,0,0,191,240,0,0,0,0,0,3,255,192,0,0,0,0,0,31,254,0,0,0,0,0,1,255,248,0,0,0,0,0,31,255,224,15,128,0,0,1,255,255,224,63,244,0,0,47,255,255,224,63,255,0,27,255,255,95,224,11,255,224,255,255,244,15,224,0,255,252,191,255,64,15,224,0,31,253,63,208,0,15,224,0,3,248,24,0,0,15,224,0,0,176,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0, + // 0x30ce ノ + 206,48,25,29,203,37,5,255,0,0,0,0,0,121,0,0,0,0,0,0,191,192,0,0,0,0,0,255,128,0,0,0,0,0,255,64,0,0,0,0,2,255,0,0,0,0,0,3,254,0,0,0,0,0,3,252,0,0,0,0,0,11,252,0,0,0,0,0,15,244,0,0,0,0,0,31,240,0,0,0,0,0,63,208,0,0,0,0,0,127,192,0,0,0,0,0,255,128,0,0,0,0,2,255,0,0,0,0,0,7,253,0,0,0,0,0,15,252,0,0,0,0,0,63,240,0,0,0,0,0,255,208,0,0,0,0,3,255,192,0,0,0,0,15,255,0,0,0,0,0,127,252,0,0,0,0,1,255,240,0,0,0,0,31,255,192,0,0,0,0,191,254,0,0,0,0,11,255,248,0,0,0,0,255,255,192,0,0,0,0,127,254,0,0,0,0,0,31,224,0,0,0,0,0,10,0,0,0,0,0,0, + // 0x30cf ハ + 207,48,33,27,243,37,2,0,0,0,4,0,0,44,0,0,0,0,0,31,224,3,254,0,0,0,0,0,47,224,1,255,0,0,0,0,0,63,208,0,255,128,0,0,0,0,63,192,0,127,192,0,0,0,0,63,192,0,63,208,0,0,0,0,127,128,0,31,240,0,0,0,0,191,64,0,15,244,0,0,0,0,255,0,0,11,252,0,0,0,1,255,0,0,3,252,0,0,0,2,254,0,0,2,254,0,0,0,3,253,0,0,1,255,0,0,0,3,252,0,0,0,255,64,0,0,11,248,0,0,0,191,192,0,0,15,244,0,0,0,63,192,0,0,31,240,0,0,0,63,224,0,0,63,224,0,0,0,47,240,0,0,127,192,0,0,0,15,244,0,0,255,128,0,0,0,15,248,0,1,255,0,0,0,0,7,252,0,3,254,0,0,0,0,3,253,0,11,252,0,0,0,0,3,254,0,31,248,0,0,0,0,2,255,0,63,240,0,0,0,0,1,255,64,127,208,0,0,0,0,0,255,64,7,192,0,0,0,0,0,228,0,0,0,0,0,0,0,0,0,0, + // 0x30d0 バ + 208,48,34,31,23,37,2,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,4,63,0,0,0,0,0,0,0,189,31,64,0,0,0,0,0,0,63,15,192,0,0,0,0,0,0,31,71,224,0,0,36,0,0,184,15,194,64,0,0,63,208,3,252,7,192,0,0,0,63,192,2,254,1,0,0,0,0,127,192,0,255,0,0,0,0,0,127,128,0,191,128,0,0,0,0,191,64,0,127,192,0,0,0,0,255,0,0,63,224,0,0,0,0,255,0,0,31,240,0,0,0,1,254,0,0,15,244,0,0,0,2,253,0,0,11,252,0,0,0,3,252,0,0,3,253,0,0,0,7,252,0,0,2,254,0,0,0,11,244,0,0,1,255,0,0,0,15,240,0,0,0,255,64,0,0,31,240,0,0,0,191,192,0,0,63,208,0,0,0,127,192,0,0,127,192,0,0,0,63,224,0,0,255,128,0,0,0,47,240,0,1,255,0,0,0,0,15,240,0,3,254,0,0,0,0,15,248,0,11,252,0,0,0,0,11,252,0,31,248,0,0,0,0,7,252,0,63,240,0,0,0,0,3,254,0,191,224,0,0,0,0,3,255,0,191,192,0,0,0,0,1,254,0,7,64,0,0,0,0,0,144,0, + // 0x30d1 パ + 209,48,34,32,32,37,2,255,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,11,255,128,0,0,0,0,0,0,31,67,208,0,0,0,0,0,0,45,1,224,0,0,0,0,0,0,45,0,224,0,0,62,128,2,252,31,3,208,0,0,63,192,3,253,11,255,192,0,0,63,192,1,255,1,253,0,0,0,127,128,0,255,64,0,0,0,0,191,64,0,191,192,0,0,0,0,255,64,0,63,208,0,0,0,0,255,0,0,47,224,0,0,0,0,255,0,0,15,240,0,0,0,2,254,0,0,15,248,0,0,0,3,253,0,0,7,252,0,0,0,3,252,0,0,3,253,0,0,0,7,248,0,0,2,255,0,0,0,15,244,0,0,1,255,0,0,0,15,240,0,0,0,255,64,0,0,47,240,0,0,0,191,192,0,0,63,208,0,0,0,127,192,0,0,127,192,0,0,0,63,224,0,0,255,128,0,0,0,47,240,0,1,255,0,0,0,0,31,240,0,3,254,0,0,0,0,15,248,0,7,253,0,0,0,0,11,252,0,15,252,0,0,0,0,7,252,0,47,244,0,0,0,0,3,253,0,127,224,0,0,0,0,3,254,0,255,192,0,0,0,0,2,255,0,31,128,0,0,0,0,1,244,0,1,0,0,0,0,0,0,0,0, + // 0x30d2 ヒ + 210,48,24,30,180,37,8,0,170,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,16,255,0,0,0,2,240,255,0,0,0,111,244,255,0,0,11,255,248,255,0,1,255,255,244,255,0,191,255,254,0,255,111,255,255,208,0,255,255,255,244,0,0,255,255,249,0,0,0,255,254,64,0,0,0,255,64,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,191,208,0,0,1,111,127,255,255,255,255,255,63,255,255,255,255,255,15,255,255,255,255,255,0,111,255,255,250,165, + // 0x30d3 ビ + 211,48,28,33,231,37,6,255,0,0,0,0,0,0,144,0,0,0,0,0,3,240,0,0,0,0,2,224,252,127,128,0,0,3,240,189,127,128,0,0,0,252,63,127,128,0,0,0,189,46,127,128,0,0,0,63,0,127,128,0,0,0,40,0,127,128,0,0,0,16,0,127,128,0,0,2,240,0,127,128,0,0,47,248,0,127,128,0,7,255,252,0,127,128,1,255,255,244,0,127,129,191,255,254,64,0,127,239,255,255,208,0,0,127,255,255,248,0,0,0,127,255,254,0,0,0,0,127,254,64,0,0,0,0,127,208,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,192,0,0,0,0,0,63,224,0,0,0,91,64,63,255,255,255,255,255,64,31,255,255,255,255,255,64,7,255,255,255,255,255,64,0,111,255,255,254,165,0, + // 0x30d4 ピ + 212,48,29,32,0,37,6,255,0,0,0,0,0,7,244,0,0,0,0,0,0,47,254,0,106,128,0,0,0,61,15,64,127,128,0,0,0,120,7,128,127,128,0,0,0,180,3,192,127,128,0,0,0,120,7,128,127,128,0,0,0,61,31,64,127,128,0,0,0,47,254,0,127,128,0,0,1,247,244,0,127,128,0,0,27,244,0,0,127,128,0,2,255,252,0,0,127,128,0,127,255,252,0,0,127,128,111,255,255,128,0,0,127,155,255,255,228,0,0,0,127,255,255,253,0,0,0,0,127,255,254,64,0,0,0,0,127,255,144,0,0,0,0,0,127,208,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,192,0,0,0,0,0,0,63,224,0,0,0,91,64,0,63,255,255,255,255,255,64,0,31,255,255,255,255,255,64,0,7,255,255,255,255,255,64,0,0,111,255,255,254,165,0,0, + // 0x30d5 フ + 213,48,27,29,203,37,5,254,255,255,255,255,255,255,224,255,255,255,255,255,255,252,255,255,255,255,255,255,252,186,170,170,170,170,175,248,0,0,0,0,0,15,244,0,0,0,0,0,15,240,0,0,0,0,0,31,240,0,0,0,0,0,47,224,0,0,0,0,0,63,208,0,0,0,0,0,63,192,0,0,0,0,0,191,128,0,0,0,0,0,255,64,0,0,0,0,2,255,0,0,0,0,0,3,254,0,0,0,0,0,11,252,0,0,0,0,0,31,244,0,0,0,0,0,127,240,0,0,0,0,0,255,208,0,0,0,0,3,255,64,0,0,0,0,31,254,0,0,0,0,0,191,248,0,0,0,0,7,255,224,0,0,0,0,127,255,128,0,0,0,11,255,253,0,0,0,1,255,255,224,0,0,0,0,255,255,64,0,0,0,0,63,244,0,0,0,0,0,14,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x30d6 ブ + 214,48,32,35,24,37,4,254,0,0,0,0,0,0,0,128,0,0,0,0,0,6,7,240,0,0,0,0,0,15,194,244,0,0,0,0,0,11,224,252,0,0,0,0,0,3,240,126,0,0,0,0,0,1,248,56,191,170,170,170,170,171,240,0,191,255,255,255,255,255,252,0,191,255,255,255,255,255,253,0,191,255,255,255,255,255,252,0,0,0,0,0,0,11,252,0,0,0,0,0,0,11,248,0,0,0,0,0,0,15,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,47,224,0,0,0,0,0,0,63,208,0,0,0,0,0,0,63,192,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,64,0,0,0,0,0,2,255,0,0,0,0,0,0,7,253,0,0,0,0,0,0,15,252,0,0,0,0,0,0,47,244,0,0,0,0,0,0,191,224,0,0,0,0,0,1,255,192,0,0,0,0,0,11,255,0,0,0,0,0,0,63,253,0,0,0,0,0,1,255,244,0,0,0,0,0,31,255,208,0,0,0,0,1,255,255,0,0,0,0,0,111,255,248,0,0,0,0,0,255,255,208,0,0,0,0,0,63,254,0,0,0,0,0,0,31,208,0,0,0,0,0,0,4,0,0,0,0,0,0, + // 0x30d7 プ + 215,48,33,34,50,37,4,254,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,63,252,0,0,0,0,0,0,0,184,47,0,0,0,0,0,0,0,240,15,0,0,0,0,0,0,0,240,11,64,191,170,170,170,170,171,240,15,0,191,255,255,255,255,255,248,47,0,191,255,255,255,255,255,255,252,0,191,255,255,255,255,255,255,224,0,0,0,0,0,0,11,252,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,47,244,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,11,255,64,0,0,0,0,0,0,63,253,0,0,0,0,0,0,1,255,244,0,0,0,0,0,0,31,255,208,0,0,0,0,0,1,255,255,0,0,0,0,0,0,111,255,248,0,0,0,0,0,0,255,255,208,0,0,0,0,0,0,63,254,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0, + // 0x30d8 ヘ + 216,48,33,24,216,37,2,1,0,0,0,100,0,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,15,255,192,0,0,0,0,0,0,63,255,240,0,0,0,0,0,0,191,255,252,0,0,0,0,0,1,255,135,255,0,0,0,0,0,7,254,1,255,192,0,0,0,0,15,252,0,127,240,0,0,0,0,63,240,0,47,252,0,0,0,0,191,208,0,11,254,0,0,0,2,255,128,0,2,255,128,0,0,11,255,0,0,0,255,224,0,0,47,252,0,0,0,63,248,0,0,191,244,0,0,0,15,253,0,0,127,224,0,0,0,7,255,64,0,31,192,0,0,0,1,255,192,0,11,0,0,0,0,0,191,240,0,0,0,0,0,0,0,63,252,0,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0, + // 0x30d9 ベ + 217,48,33,28,252,37,2,0,0,0,0,0,0,0,2,192,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,3,244,0,0,0,0,0,0,31,193,252,0,0,0,1,248,0,15,208,190,0,0,0,11,255,0,3,240,63,0,0,0,47,255,192,2,248,40,0,0,0,127,255,240,0,252,0,0,0,1,255,239,252,0,160,0,0,0,3,255,7,255,0,0,0,0,0,15,252,1,255,192,0,0,0,0,47,240,0,127,240,0,0,0,0,191,208,0,31,252,0,0,0,1,255,128,0,11,255,0,0,0,7,255,0,0,2,255,128,0,0,31,253,0,0,0,255,224,0,0,127,244,0,0,0,63,248,0,0,255,224,0,0,0,15,253,0,0,127,192,0,0,0,7,255,64,0,31,64,0,0,0,1,255,208,0,6,0,0,0,0,0,191,240,0,0,0,0,0,0,0,63,252,0,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,1,255,64,0,0,0,0,0,0,0,189,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0,0,0, + // 0x30da ペ + 218,48,33,28,252,37,2,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,1,255,240,0,0,0,0,0,0,3,225,252,0,0,0,0,0,0,7,192,61,0,0,0,2,248,0,11,64,45,0,0,0,11,255,0,11,64,45,0,0,0,47,255,192,7,128,61,0,0,0,127,255,240,3,224,188,0,0,1,255,239,252,1,255,244,0,0,3,255,7,255,0,47,128,0,0,15,252,1,255,192,0,0,0,0,47,240,0,127,240,0,0,0,0,191,208,0,31,252,0,0,0,1,255,128,0,11,255,0,0,0,7,255,0,0,2,255,128,0,0,15,253,0,0,0,255,224,0,0,63,248,0,0,0,63,248,0,0,255,240,0,0,0,15,253,0,0,191,192,0,0,0,7,255,64,0,47,128,0,0,0,1,255,208,0,11,0,0,0,0,0,191,240,0,0,0,0,0,0,0,63,252,0,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,1,255,64,0,0,0,0,0,0,0,189,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0,0,0, + // 0x30db ホ + 219,48,32,32,0,37,3,254,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,42,170,170,175,250,170,170,164,63,255,255,255,255,255,255,248,63,255,255,255,255,255,255,248,63,255,255,255,255,255,255,248,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,9,0,15,240,0,96,0,0,15,208,15,240,3,248,0,0,47,208,15,240,7,252,0,0,127,192,15,240,2,255,0,0,255,64,15,240,0,255,128,2,254,0,15,240,0,127,192,7,252,0,15,240,0,47,224,15,244,0,15,240,0,15,244,63,224,0,15,240,0,11,252,255,192,0,15,240,0,3,253,255,64,0,15,240,0,1,253,45,0,0,15,240,0,0,224,0,0,0,15,240,0,0,0,0,0,16,31,240,0,0,0,0,0,127,255,240,0,0,0,0,0,127,255,224,0,0,0,0,0,63,255,192,0,0,0,0,0,21,169,0,0,0,0, + // 0x30dc ボ + 220,48,34,34,50,37,2,254,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,124,0,0,0,0,6,164,0,184,63,0,0,0,0,11,244,0,252,47,64,0,0,0,11,244,0,126,15,192,0,0,0,7,244,0,47,71,208,0,0,0,7,244,0,15,130,0,0,0,0,7,244,0,9,0,0,0,0,0,7,244,0,0,0,0,47,255,255,255,255,255,255,252,0,47,255,255,255,255,255,255,252,0,47,255,255,255,255,255,255,252,0,26,170,170,175,250,170,170,168,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,16,0,0,0,11,128,7,244,0,248,0,0,0,15,240,7,244,3,253,0,0,0,63,208,7,244,1,255,0,0,0,127,192,7,244,0,191,128,0,0,255,0,7,244,0,63,208,0,3,254,0,7,244,0,31,240,0,11,252,0,7,244,0,15,248,0,31,240,0,7,244,0,3,252,0,127,208,0,7,244,0,2,255,0,191,128,0,7,244,0,0,254,0,31,0,0,7,244,0,0,180,0,0,0,0,7,244,0,0,0,0,0,0,16,15,244,0,0,0,0,0,0,63,255,244,0,0,0,0,0,0,63,255,240,0,0,0,0,0,0,63,255,224,0,0,0,0,0,0,5,89,0,0,0,0,0, + // 0x30dd ポ + 221,48,33,35,59,37,2,254,0,0,0,0,0,0,6,228,0,0,0,0,0,0,0,47,253,0,0,0,0,0,0,0,61,31,0,0,0,0,11,248,0,180,11,64,0,0,0,11,244,0,180,7,128,0,0,0,11,244,0,180,11,64,0,0,0,7,244,0,61,31,0,0,0,0,7,244,0,47,253,0,0,0,0,7,244,0,6,228,0,0,0,0,7,244,0,0,0,0,47,255,255,255,255,255,255,252,0,47,255,255,255,255,255,255,252,0,47,255,255,255,255,255,255,252,0,26,170,170,175,250,170,170,168,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,16,0,0,0,11,128,7,244,0,248,0,0,0,15,240,7,244,3,253,0,0,0,63,208,7,244,1,255,0,0,0,127,192,7,244,0,191,128,0,0,255,0,7,244,0,63,208,0,3,254,0,7,244,0,31,240,0,11,252,0,7,244,0,15,248,0,31,240,0,7,244,0,3,252,0,127,208,0,7,244,0,2,255,0,191,128,0,7,244,0,0,254,0,31,0,0,7,244,0,0,180,0,0,0,0,7,244,0,0,0,0,0,0,16,15,244,0,0,0,0,0,0,63,255,244,0,0,0,0,0,0,63,255,240,0,0,0,0,0,0,63,255,224,0,0,0,0,0,0,5,89,0,0,0,0,0, + // 0x30de マ + 222,48,32,30,240,37,3,253,0,0,0,0,0,0,0,64,127,255,255,255,255,255,255,240,127,255,255,255,255,255,255,252,127,255,255,255,255,255,255,253,122,170,170,170,170,170,191,248,0,0,0,0,0,0,63,240,0,0,0,0,0,0,255,208,0,0,0,0,0,1,255,128,0,0,0,0,0,3,255,0,0,0,0,0,0,15,252,0,0,0,0,0,0,63,244,0,0,1,128,0,0,191,224,0,0,7,224,0,2,255,128,0,0,47,252,0,11,255,0,0,0,15,255,0,47,252,0,0,0,2,255,208,191,240,0,0,0,0,191,251,255,192,0,0,0,0,31,255,255,0,0,0,0,0,7,255,248,0,0,0,0,0,0,255,240,0,0,0,0,0,0,63,248,0,0,0,0,0,0,15,253,0,0,0,0,0,0,7,255,64,0,0,0,0,0,1,255,208,0,0,0,0,0,0,127,240,0,0,0,0,0,0,47,252,0,0,0,0,0,0,11,253,0,0,0,0,0,0,3,240,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0, + // 0x30df ミ + 223,48,24,30,180,37,6,255,0,186,64,0,0,0,0,255,255,144,0,0,1,255,255,255,144,0,1,191,255,255,255,144,0,0,111,255,255,255,0,0,0,27,255,255,0,0,0,0,27,253,0,0,0,0,0,108,0,0,0,0,0,0,0,0,0,0,0,0,7,229,0,0,0,0,11,255,249,0,0,0,15,255,255,249,0,0,10,255,255,255,249,0,0,6,191,255,255,224,0,0,1,191,255,208,0,0,0,1,191,192,0,0,0,0,6,128,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,127,228,0,0,0,0,255,255,229,0,0,0,255,255,255,249,0,0,107,255,255,255,228,0,0,26,255,255,255,224,0,0,6,255,255,252,0,0,0,6,255,248,0,0,0,0,27,240,0,0,0,0,0,96, + // 0x30e0 ム + 224,48,33,32,32,37,2,254,0,0,0,20,0,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,47,208,0,2,192,0,0,0,0,63,192,0,47,224,0,0,0,0,127,192,0,15,244,0,0,0,0,191,64,0,11,252,0,0,0,0,255,0,0,3,253,0,0,0,1,255,0,0,1,255,0,0,0,2,253,0,0,0,255,128,0,0,3,252,0,0,0,127,192,0,0,7,252,0,0,0,63,224,0,0,11,244,0,21,175,255,240,0,0,15,250,255,255,255,255,248,0,127,255,255,255,255,255,255,252,0,63,255,255,255,255,255,167,254,0,63,255,255,254,149,0,2,255,0,63,250,80,0,0,0,0,255,128,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,0,0,0, + // 0x30e1 メ + 225,48,29,31,248,37,4,254,0,0,0,0,0,14,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,63,224,0,0,0,0,0,0,63,192,0,0,0,0,0,0,191,128,0,0,31,0,0,0,255,64,0,0,63,224,0,1,255,0,0,0,191,252,0,3,253,0,0,0,31,255,64,7,252,0,0,0,2,255,240,15,244,0,0,0,0,127,253,47,240,0,0,0,0,15,255,191,208,0,0,0,0,2,255,255,128,0,0,0,0,0,127,255,0,0,0,0,0,0,15,255,64,0,0,0,0,0,31,255,224,0,0,0,0,0,63,255,248,0,0,0,0,0,255,239,254,0,0,0,0,3,255,71,255,192,0,0,0,31,253,1,255,240,0,0,0,127,244,0,63,252,0,0,2,255,208,0,15,255,0,0,15,255,64,0,3,255,128,0,127,253,0,0,0,255,0,7,255,240,0,0,0,60,0,63,255,128,0,0,0,16,0,191,253,0,0,0,0,0,0,31,224,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30e2 モ + 226,48,30,29,232,37,4,255,6,85,85,85,85,85,84,0,7,255,255,255,255,255,252,0,7,255,255,255,255,255,252,0,7,255,255,255,255,255,252,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,170,170,175,254,170,170,170,144,255,255,255,255,255,255,255,224,255,255,255,255,255,255,255,224,255,255,255,255,255,255,255,224,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,252,0,0,0,0,0,0,7,255,64,0,21,64,0,0,3,255,255,255,255,128,0,0,2,255,255,255,255,64,0,0,0,191,255,255,255,64,0,0,0,6,175,170,170,0, + // 0x30e3 ャ + 227,48,27,27,189,37,5,253,0,0,80,0,0,0,0,0,15,224,0,0,0,0,0,15,240,0,0,0,0,0,11,240,0,0,0,0,0,7,244,0,0,1,144,0,3,248,0,6,255,248,0,2,252,27,255,255,252,0,2,255,255,255,255,244,22,191,255,255,254,95,224,191,255,255,249,0,63,192,127,255,255,0,0,191,64,63,148,127,64,1,254,0,16,0,63,128,3,252,0,0,0,63,192,15,244,0,0,0,47,192,63,208,0,0,0,31,208,127,128,0,0,0,15,240,10,0,0,0,0,15,240,0,0,0,0,0,11,244,0,0,0,0,0,3,248,0,0,0,0,0,3,252,0,0,0,0,0,2,252,0,0,0,0,0,1,253,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,191,64,0,0,0,0,0,121,0,0,0, + // 0x30e4 ヤ + 228,48,32,32,0,37,2,254,0,0,108,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,253,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,255,0,0,0,0,16,0,0,255,0,0,0,107,252,0,0,191,64,1,175,255,255,0,0,127,134,255,255,255,254,0,0,127,255,255,255,255,252,5,175,255,255,255,249,15,244,255,255,255,255,228,0,31,240,191,255,255,240,0,0,63,192,127,254,79,240,0,0,255,64,57,64,11,244,0,2,255,0,0,0,7,248,0,11,252,0,0,0,3,252,0,47,244,0,0,0,3,252,0,191,208,0,0,0,2,254,1,255,128,0,0,0,1,255,0,126,0,0,0,0,0,255,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,191,128,0,0,0,0,0,0,127,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,208,0,0,0,0,0,0,47,224,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,244,0,0,0,0,0,0,11,248,0,0,0,0,0,0,7,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,2,64,0,0,0, + // 0x30e5 ュ + 229,48,27,20,140,37,5,255,0,255,255,255,255,208,0,0,255,255,255,255,244,0,0,255,255,255,255,244,0,0,170,170,170,175,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,224,0,0,0,0,0,31,224,0,0,0,0,0,31,208,0,0,0,0,0,47,208,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,128,0,0,0,0,0,127,128,0,106,170,170,170,255,234,168,191,255,255,255,255,255,252,191,255,255,255,255,255,252,191,255,255,255,255,255,252,0,0,0,0,0,0,0, + // 0x30e6 ユ + 230,48,32,25,200,37,3,1,0,254,170,170,170,191,128,0,0,255,255,255,255,255,240,0,0,255,255,255,255,255,240,0,0,255,255,255,255,255,240,0,0,0,0,0,0,47,240,0,0,0,0,0,0,47,224,0,0,0,0,0,0,47,224,0,0,0,0,0,0,63,208,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,191,128,0,0,0,0,0,0,191,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,254,0,0,0,0,0,0,2,254,0,0,255,255,255,255,255,255,255,253,255,255,255,255,255,255,255,253,255,255,255,255,255,255,255,253,255,255,255,255,255,255,255,253,0,0,0,0,0,0,0,0, + // 0x30e7 ョ + 231,48,22,24,144,37,7,253,63,255,255,255,255,240,63,255,255,255,255,240,63,255,255,255,255,240,21,85,85,85,95,240,0,0,0,0,11,240,0,0,0,0,11,240,0,0,0,0,11,240,0,0,0,0,11,240,0,0,0,0,11,240,15,255,255,255,255,240,15,255,255,255,255,240,15,255,255,255,255,240,5,85,85,85,95,240,0,0,0,0,11,240,0,0,0,0,11,240,0,0,0,0,11,240,0,0,0,0,11,240,0,0,0,0,11,240,21,85,85,85,95,240,127,255,255,255,255,240,127,255,255,255,255,240,127,255,255,255,255,240,0,0,0,0,11,240,0,0,0,0,5,80, + // 0x30e8 ヨ + 232,48,26,28,196,37,5,255,63,255,255,255,255,255,240,63,255,255,255,255,255,240,63,255,255,255,255,255,240,42,170,170,170,170,175,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,15,255,255,255,255,255,240,15,255,255,255,255,255,240,15,255,255,255,255,255,240,10,170,170,170,170,175,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,106,170,170,170,170,175,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,127,255,255,255,255,255,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240, + // 0x30e9 ラ + 233,48,28,31,217,37,5,254,1,169,85,85,85,106,128,2,255,255,255,255,255,192,2,255,255,255,255,255,192,2,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,85,85,85,85,85,160,255,255,255,255,255,255,253,255,255,255,255,255,255,254,255,255,255,255,255,255,252,0,0,0,0,0,7,252,0,0,0,0,0,11,248,0,0,0,0,0,15,240,0,0,0,0,0,47,224,0,0,0,0,0,63,208,0,0,0,0,0,191,192,0,0,0,0,1,255,0,0,0,0,0,7,254,0,0,0,0,0,31,252,0,0,0,0,0,127,240,0,0,0,0,2,255,192,0,0,0,0,31,255,0,0,0,0,2,255,252,0,0,0,0,111,255,224,0,0,0,15,255,255,64,0,0,0,7,255,244,0,0,0,0,1,255,64,0,0,0,0,0,160,0,0,0,0, + // 0x30ea リ + 234,48,21,31,186,37,8,254,170,0,0,0,63,192,255,0,0,0,63,192,255,0,0,0,63,192,255,0,0,0,63,192,255,0,0,0,63,192,255,0,0,0,63,192,255,0,0,0,63,192,255,0,0,0,63,192,255,0,0,0,63,192,255,0,0,0,63,192,255,0,0,0,63,192,255,0,0,0,63,192,255,0,0,0,63,192,255,0,0,0,63,192,255,0,0,0,63,192,255,0,0,0,127,128,255,0,0,0,127,128,255,0,0,0,191,64,85,0,0,0,255,0,0,0,0,1,255,0,0,0,0,3,254,0,0,0,0,11,252,0,0,0,0,47,248,0,0,0,0,191,240,0,0,0,7,255,192,0,0,0,111,255,0,0,0,11,255,252,0,0,0,31,255,224,0,0,0,7,254,0,0,0,0,2,224,0,0,0,0,0,0,0,0,0, + // 0x30eb ル + 235,48,33,29,5,37,2,255,0,2,253,0,63,208,0,0,0,0,2,253,0,63,192,0,0,0,0,2,253,0,47,192,0,0,0,0,2,253,0,47,192,0,0,0,0,2,253,0,47,192,0,0,0,0,2,253,0,47,192,0,0,0,0,2,252,0,47,192,0,0,0,0,2,252,0,47,192,0,0,0,0,2,252,0,47,192,0,0,0,0,2,252,0,47,192,0,0,0,0,2,252,0,47,192,0,0,0,0,2,252,0,47,192,0,0,0,0,3,252,0,47,192,0,0,0,0,3,252,0,47,192,0,0,0,0,3,252,0,47,192,0,0,0,0,3,248,0,47,192,0,7,0,0,7,248,0,47,192,0,15,128,0,11,244,0,47,192,0,63,192,0,15,240,0,47,192,0,255,192,0,31,240,0,47,192,3,255,0,0,63,208,0,47,192,31,252,0,0,127,192,0,47,192,191,240,0,0,255,128,0,47,203,255,192,0,2,255,0,0,47,255,255,0,0,11,253,0,0,47,255,248,0,0,47,248,0,0,63,255,208,0,0,191,240,0,0,63,254,0,0,0,47,192,0,0,31,224,0,0,0,7,0,0,0,3,64,0,0,0, + // 0x30ec レ + 236,48,26,29,203,37,8,255,255,64,0,0,0,0,0,255,64,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,3,64,255,0,0,0,0,15,192,255,0,0,0,0,63,224,255,0,0,0,0,255,192,255,0,0,0,7,255,0,255,0,0,0,47,253,0,255,0,0,1,255,244,0,255,0,0,11,255,192,0,255,0,0,191,254,0,0,255,0,11,255,244,0,0,255,0,191,255,128,0,0,255,95,255,252,0,0,0,255,255,255,208,0,0,0,255,255,253,0,0,0,0,255,255,128,0,0,0,0,63,228,0,0,0,0,0,9,0,0,0,0,0,0, + // 0x30ed ロ + 237,48,27,28,196,37,5,255,170,170,170,170,170,170,168,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,170,170,170,170,171,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,0,0,0,0,0,0,0, + // 0x30ee ヮ + 238,48,25,25,175,37,6,252,21,85,85,85,85,104,0,127,255,255,255,255,255,64,63,255,255,255,255,255,192,63,255,255,255,255,255,128,63,128,0,0,0,191,64,63,128,0,0,0,255,0,63,128,0,0,0,255,0,63,128,0,0,0,255,0,63,128,0,0,1,254,0,63,128,0,0,2,253,0,127,128,0,0,3,252,0,42,64,0,0,11,248,0,0,0,0,0,15,240,0,0,0,0,0,47,240,0,0,0,0,0,127,208,0,0,0,0,1,255,128,0,0,0,0,7,255,0,0,0,0,0,31,252,0,0,0,0,0,191,244,0,0,0,0,11,255,192,0,0,0,1,191,255,0,0,0,0,11,255,248,0,0,0,0,3,255,192,0,0,0,0,0,248,0,0,0,0,0,0,0,0,0,0,0, + // 0x30ef ワ + 239,48,29,29,232,37,4,254,127,255,255,255,255,255,253,0,127,255,255,255,255,255,255,128,127,255,255,255,255,255,255,128,127,234,170,170,170,170,255,64,127,128,0,0,0,0,255,0,127,128,0,0,0,1,255,0,127,128,0,0,0,1,255,0,127,128,0,0,0,2,254,0,127,128,0,0,0,3,253,0,127,128,0,0,0,3,252,0,127,128,0,0,0,7,252,0,127,128,0,0,0,11,248,0,127,128,0,0,0,15,244,0,21,64,0,0,0,31,240,0,0,0,0,0,0,63,224,0,0,0,0,0,0,127,192,0,0,0,0,0,0,255,128,0,0,0,0,0,3,255,0,0,0,0,0,0,11,254,0,0,0,0,0,0,47,248,0,0,0,0,0,0,255,240,0,0,0,0,0,7,255,192,0,0,0,0,0,47,255,0,0,0,0,0,2,255,252,0,0,0,0,0,111,255,224,0,0,0,0,3,255,255,64,0,0,0,0,0,255,248,0,0,0,0,0,0,63,128,0,0,0,0,0,0,4,0,0,0,0,0, + // 0x30f0 ヰ + 240,48,31,32,0,37,3,254,0,0,0,0,1,168,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,31,255,255,255,255,255,255,240,31,255,255,255,255,255,255,240,31,255,255,255,255,255,255,240,26,86,254,85,86,254,85,96,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,170,170,170,170,171,254,170,168,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,1,168,0,0, + // 0x30f1 ヱ + 241,48,32,27,216,37,3,0,14,170,170,170,170,170,171,192,15,255,255,255,255,255,255,244,15,255,255,255,255,255,255,244,15,255,255,255,255,255,255,240,0,0,0,0,0,0,63,192,0,0,0,0,0,0,191,128,0,0,0,0,0,1,255,0,0,0,0,63,192,7,253,0,0,0,0,63,192,31,248,0,0,0,0,63,192,127,224,0,0,0,0,63,193,255,192,0,0,0,0,63,193,255,0,0,0,0,0,63,192,44,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,253,255,255,255,255,255,255,255,253,255,255,255,255,255,255,255,253,255,255,255,255,255,255,255,253,0,0,0,0,0,0,0,0, + // 0x30f2 ヲ + 242,48,28,30,210,37,5,254,58,170,170,170,170,170,224,127,255,255,255,255,255,253,127,255,255,255,255,255,255,127,255,255,255,255,255,253,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,7,248,0,0,0,0,0,11,248,0,0,0,0,0,11,244,0,0,0,0,0,15,240,10,85,85,85,85,95,240,31,255,255,255,255,255,224,31,255,255,255,255,255,192,31,255,255,255,255,255,192,0,0,0,0,0,191,128,0,0,0,0,0,255,0,0,0,0,0,2,254,0,0,0,0,0,7,252,0,0,0,0,0,31,248,0,0,0,0,0,63,240,0,0,0,0,1,255,192,0,0,0,0,7,255,64,0,0,0,0,47,253,0,0,0,0,1,255,244,0,0,0,0,31,255,192,0,0,0,2,255,254,0,0,0,0,127,255,244,0,0,0,0,47,255,128,0,0,0,0,15,248,0,0,0,0,0,2,64,0,0,0,0, + // 0x30f3 ン + 243,48,30,29,232,37,5,255,2,64,0,0,0,0,0,0,15,224,0,0,0,0,0,0,47,252,0,0,0,0,0,0,31,255,64,0,0,0,0,0,3,255,208,0,0,0,0,0,0,191,248,0,0,0,0,0,0,31,254,0,0,0,6,0,0,7,255,192,0,0,15,0,0,1,255,64,0,0,31,192,0,0,61,0,0,0,63,208,0,0,4,0,0,0,255,192,0,0,0,0,0,2,255,64,0,0,0,0,0,7,254,0,0,0,0,0,0,31,252,0,0,0,0,0,0,127,240,0,0,0,0,0,1,255,208,0,0,0,0,0,7,255,64,0,0,0,0,0,47,253,0,0,0,0,0,1,255,244,0,0,0,0,0,11,255,208,0,0,0,0,0,127,255,0,0,0,0,0,7,255,248,0,0,0,0,0,191,255,208,0,0,0,0,47,255,254,0,0,0,0,111,255,255,224,0,0,0,0,191,255,254,0,0,0,0,0,63,255,224,0,0,0,0,0,31,248,0,0,0,0,0,0,5,0,0,0,0,0,0,0, + // 0x30f4 ヴ + 244,48,31,35,24,37,4,253,0,0,0,0,0,0,15,192,0,0,1,84,0,11,71,224,0,0,2,254,0,15,195,240,0,0,2,254,0,11,224,252,0,0,2,253,0,3,240,188,0,0,2,253,0,1,248,16,0,0,2,253,0,0,144,0,0,0,2,253,0,0,16,0,255,255,255,255,255,255,252,0,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,0,255,85,85,85,85,87,254,0,254,0,0,0,0,3,253,0,254,0,0,0,0,3,253,0,254,0,0,0,0,3,252,0,254,0,0,0,0,7,252,0,254,0,0,0,0,11,248,0,254,0,0,0,0,15,244,0,254,0,0,0,0,31,240,0,255,0,0,0,0,47,224,0,84,0,0,0,0,63,192,0,0,0,0,0,0,255,192,0,0,0,0,0,1,255,64,0,0,0,0,0,3,254,0,0,0,0,0,0,15,252,0,0,0,0,0,0,63,244,0,0,0,0,0,1,255,224,0,0,0,0,0,11,255,128,0,0,0,0,0,191,254,0,0,0,0,0,27,255,244,0,0,0,0,7,255,255,192,0,0,0,0,3,255,253,0,0,0,0,0,0,255,224,0,0,0,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30f5 ヵ + 245,48,24,27,162,37,6,253,0,0,42,128,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,47,192,0,0,0,0,63,128,0,0,0,0,63,128,0,0,191,255,255,255,255,248,191,255,255,255,255,254,191,255,255,255,255,254,85,85,127,149,85,254,0,0,127,0,0,254,0,0,191,0,0,254,0,0,191,0,0,253,0,0,254,0,0,253,0,1,253,0,0,253,0,2,252,0,0,252,0,3,248,0,1,252,0,11,240,0,1,252,0,31,224,0,2,252,0,63,208,0,2,248,0,255,128,0,3,248,3,255,0,0,7,244,15,252,0,105,95,240,191,244,0,127,255,240,191,208,0,127,255,192,31,0,0,63,255,64,0,0,0,0,0,0, + // 0x30f6 ヶ + 246,48,28,27,189,37,4,252,0,0,254,0,0,0,0,0,0,255,0,0,0,0,0,1,254,0,0,0,0,0,2,253,0,0,0,0,0,3,252,0,0,0,0,0,7,249,85,85,85,85,0,15,255,255,255,255,254,0,47,255,255,255,255,254,0,63,255,255,255,255,254,0,255,64,0,254,0,0,2,254,0,0,253,0,0,11,252,0,1,253,0,0,47,244,0,2,252,0,0,127,208,0,3,252,0,0,31,128,0,3,252,0,0,1,0,0,11,244,0,0,0,0,0,15,240,0,0,0,0,0,47,224,0,0,0,0,0,63,192,0,0,0,0,0,255,192,0,0,0,0,2,255,0,0,0,0,0,15,253,0,0,0,0,0,63,248,0,0,0,0,2,255,224,0,0,0,0,2,255,128,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0, + // 0x30f7 ヷ + 247,48,31,36,32,37,4,253,0,0,0,0,0,0,2,128,0,0,0,0,0,26,15,192,0,0,0,0,0,63,7,240,0,0,0,0,0,31,131,244,0,0,0,0,0,15,193,248,0,0,0,0,0,7,224,64,0,0,0,0,0,1,0,0,255,255,255,255,255,255,244,0,255,255,255,255,255,255,254,0,255,255,255,255,255,255,255,0,255,170,170,170,170,171,254,0,255,0,0,0,0,3,253,0,255,0,0,0,0,3,252,0,255,0,0,0,0,3,252,0,255,0,0,0,0,7,252,0,255,0,0,0,0,11,248,0,255,0,0,0,0,15,244,0,255,0,0,0,0,15,240,0,255,0,0,0,0,31,240,0,255,0,0,0,0,63,224,0,85,0,0,0,0,63,192,0,0,0,0,0,0,191,192,0,0,0,0,0,0,255,64,0,0,0,0,0,3,255,0,0,0,0,0,0,11,253,0,0,0,0,0,0,31,248,0,0,0,0,0,0,127,240,0,0,0,0,0,2,255,192,0,0,0,0,0,15,255,64,0,0,0,0,0,191,253,0,0,0,0,0,7,255,244,0,0,0,0,0,191,255,192,0,0,0,0,11,255,254,0,0,0,0,0,3,255,240,0,0,0,0,0,0,254,0,0,0,0,0,0,0,32,0,0,0,0,0, + // 0x30f8 ヸ + 248,48,33,34,50,37,3,254,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,4,124,0,0,0,0,0,1,84,60,61,0,0,0,0,0,3,252,62,47,0,0,0,0,0,3,252,31,15,64,0,0,0,0,3,252,15,79,64,0,0,0,0,3,252,11,64,0,0,0,0,0,3,252,0,0,0,42,85,85,85,87,253,86,160,0,63,255,255,255,255,255,255,240,0,63,255,255,255,255,255,255,240,0,63,255,255,255,255,255,255,240,0,0,2,252,0,3,252,0,0,0,0,2,252,0,3,252,0,0,0,0,2,252,0,3,252,0,0,0,0,2,252,0,3,252,0,0,0,0,2,252,0,3,252,0,0,0,0,2,252,0,3,252,0,0,0,0,2,252,0,3,252,0,0,0,0,2,252,0,3,252,0,0,0,0,2,252,0,3,252,0,0,0,0,2,252,0,3,252,0,0,0,255,255,255,255,255,255,255,248,0,255,255,255,255,255,255,255,248,0,255,255,255,255,255,255,255,248,0,170,170,170,170,171,254,170,164,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,2,168,0,0,0, + // 0x30f9 ヹ + 249,48,33,34,50,37,2,255,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0,2,240,190,0,0,0,0,0,0,1,248,63,0,0,0,0,0,0,0,252,31,128,0,0,0,0,0,0,126,9,0,0,0,0,0,0,0,40,0,0,7,170,170,170,170,170,171,224,0,7,255,255,255,255,255,255,252,0,7,255,255,255,255,255,255,252,0,7,255,255,255,255,255,255,244,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,255,128,0,0,0,0,47,224,2,255,0,0,0,0,0,47,224,11,252,0,0,0,0,0,47,208,47,244,0,0,0,0,0,47,208,255,224,0,0,0,0,0,47,208,191,128,0,0,0,0,0,47,208,30,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,191,255,255,255,255,255,255,255,0,191,255,255,255,255,255,255,255,0,191,255,255,255,255,255,255,255,0,191,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0, + // 0x30fa ヺ + 250,48,31,36,32,37,4,253,0,0,0,0,0,0,6,128,0,0,0,0,0,26,15,208,0,0,0,0,0,63,71,240,0,0,0,0,0,31,195,244,0,0,0,0,0,15,209,248,0,0,0,0,0,7,208,64,170,170,170,170,170,171,208,0,191,255,255,255,255,255,248,0,191,255,255,255,255,255,253,0,191,255,255,255,255,255,252,0,0,0,0,0,0,7,252,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,31,224,0,25,85,85,85,85,111,208,0,47,255,255,255,255,255,192,0,47,255,255,255,255,255,192,0,47,255,255,255,255,255,128,0,0,0,0,0,0,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,3,253,0,0,0,0,0,0,15,252,0,0,0,0,0,0,47,240,0,0,0,0,0,0,127,208,0,0,0,0,0,1,255,128,0,0,0,0,0,11,255,0,0,0,0,0,0,63,252,0,0,0,0,0,2,255,240,0,0,0,0,0,31,255,192,0,0,0,0,2,255,254,0,0,0,0,0,127,255,240,0,0,0,0,0,63,255,64,0,0,0,0,0,31,244,0,0,0,0,0,0,6,64,0,0,0,0,0, + // 0x30fb ・ + 251,48,9,9,27,37,14,10,1,144,0,31,253,0,63,255,0,191,255,128,191,255,128,191,255,128,127,255,64,47,254,0,7,244,0, + // 0x30fc ー + 252,48,31,5,40,37,3,12,127,255,255,255,255,255,255,244,127,255,255,255,255,255,255,244,127,255,255,255,255,255,255,244,127,255,255,255,255,255,255,244,20,0,0,0,0,0,0,80, + // 0x30fd ヽ + 253,48,18,18,90,37,10,4,11,128,0,0,0,47,224,0,0,0,127,248,0,0,0,31,254,0,0,0,3,255,128,0,0,0,255,224,0,0,0,63,248,0,0,0,15,254,0,0,0,3,255,64,0,0,1,255,208,0,0,0,127,244,0,0,0,47,252,0,0,0,11,255,0,0,0,3,255,128,0,0,0,255,224,0,0,0,127,224,0,0,0,47,64,0,0,0,9,0, + // 0x30fe ヾ + 254,48,21,24,144,37,9,4,0,0,0,0,32,0,0,0,0,2,244,0,0,0,2,192,252,0,0,0,7,240,126,0,0,0,3,244,63,64,0,0,0,252,31,192,7,128,0,190,10,0,47,224,0,62,0,0,127,252,0,16,0,0,15,255,0,0,0,0,3,255,192,0,0,0,0,255,224,0,0,0,0,63,248,0,0,0,0,15,254,0,0,0,0,3,255,128,0,0,0,0,255,208,0,0,0,0,127,244,0,0,0,0,31,253,0,0,0,0,11,255,0,0,0,0,2,255,192,0,0,0,0,255,224,0,0,0,0,63,224,0,0,0,0,31,128,0,0,0,0,9,0,0, + // 0x30ff ヿ + 255,48,23,32,192,37,7,254,85,85,85,85,85,80,255,255,255,255,255,244,255,255,255,255,255,244,255,255,255,255,255,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244,0,0,0,0,7,244, + // 0x4eee 仮 + 238,78,35,36,68,37,1,252,0,0,36,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,254,15,255,255,255,255,240,0,1,252,15,255,255,255,255,240,0,3,252,15,255,255,255,255,240,0,11,244,15,213,85,85,85,64,0,15,240,15,192,0,0,0,0,0,47,208,15,192,0,0,0,0,0,127,128,15,192,0,0,0,0,0,255,128,15,192,0,0,0,0,2,255,128,15,192,0,0,0,0,7,255,128,15,192,0,0,0,0,31,255,128,15,255,255,255,255,128,63,255,128,15,255,255,255,255,192,255,239,128,15,255,255,255,255,192,191,47,128,15,255,64,0,63,128,60,47,128,15,255,128,0,63,64,36,47,128,31,223,192,0,127,0,0,47,128,31,207,224,0,254,0,0,47,128,31,199,240,0,253,0,0,47,128,47,195,244,2,252,0,0,47,128,47,194,252,3,248,0,0,47,128,47,128,254,15,240,0,0,47,128,63,64,191,95,224,0,0,47,128,63,64,63,255,192,0,0,47,128,127,0,31,255,64,0,0,47,128,191,0,11,254,0,0,0,47,128,254,0,11,255,0,0,0,47,128,253,0,63,255,192,0,0,47,130,252,0,255,255,244,0,0,47,131,248,11,255,15,255,64,0,47,139,244,127,252,3,255,244,0,47,143,241,255,224,0,191,248,0,47,135,192,191,64,0,15,224,0,47,65,128,36,0,0,1,192,0,0,0,0,0,0,0,0,0, + // 0x540d 名 + 13,84,32,35,24,37,1,253,0,0,0,185,0,0,0,0,0,0,1,255,0,0,0,0,0,0,3,253,0,0,0,0,0,0,11,252,0,0,0,0,0,0,31,255,255,255,244,0,0,0,127,255,255,255,252,0,0,0,255,255,255,255,244,0,0,7,254,0,0,15,240,0,0,31,248,0,0,47,208,0,0,191,240,0,0,63,192,0,3,255,252,0,0,255,64,0,31,255,255,64,1,254,0,0,127,244,255,224,7,252,0,0,31,192,47,248,15,244,0,0,10,0,11,254,63,224,0,0,0,0,2,255,255,192,0,0,0,0,0,191,255,0,0,0,0,0,0,63,252,0,0,0,0,0,0,191,244,0,0,0,0,0,3,255,255,255,255,255,0,0,47,255,255,255,255,255,0,1,255,255,255,255,255,255,0,31,255,244,0,0,0,191,6,255,255,244,0,0,0,191,127,255,211,244,0,0,0,191,63,253,3,244,0,0,0,191,31,128,3,244,0,0,0,191,4,0,3,244,0,0,0,191,0,0,3,244,0,0,0,191,0,0,3,244,0,0,0,191,0,0,3,255,255,255,255,255,0,0,3,255,255,255,255,255,0,0,3,255,255,255,255,255,0,0,3,244,0,0,0,191,0,0,2,160,0,0,0,190, + // 0x5b9a 定 + 154,91,34,36,68,37,1,252,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,229,85,85,85,85,85,111,192,15,208,0,0,0,0,0,47,192,15,208,0,0,0,0,0,47,192,15,208,0,0,0,0,0,47,192,15,208,85,85,85,85,85,47,192,15,211,255,255,255,255,255,47,192,0,3,255,255,255,255,255,0,0,0,3,255,255,255,255,255,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,3,244,1,252,0,0,0,0,0,7,244,1,252,0,0,0,0,0,7,240,1,253,0,0,0,0,0,11,240,1,255,255,255,240,0,0,15,240,1,255,255,255,240,0,0,15,240,1,255,255,255,240,0,0,31,244,1,252,0,0,0,0,0,63,252,1,252,0,0,0,0,0,63,254,1,252,0,0,0,0,0,191,255,65,252,0,0,0,0,0,254,63,225,252,0,0,0,0,3,252,15,254,252,0,0,0,0,11,248,3,255,253,0,0,0,0,47,240,0,255,255,255,255,255,240,127,208,0,31,255,255,255,255,224,47,128,0,0,111,255,255,255,208,10,0,0,0,0,21,85,85,64,0,0,0,0,0,0,0,0,0, + // 0x7247 片 + 71,114,32,36,32,37,1,252,0,0,0,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,234,170,171,254,170,170,0,31,255,255,255,255,255,255,0,31,255,255,255,255,255,255,0,31,255,255,255,255,255,255,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,234,170,170,171,252,0,0,127,64,0,0,2,252,0,0,191,0,0,0,2,252,0,0,255,0,0,0,2,252,0,0,254,0,0,0,2,252,0,2,253,0,0,0,2,252,0,3,252,0,0,0,2,252,0,11,248,0,0,0,2,252,0,31,240,0,0,0,2,252,0,63,224,0,0,0,2,252,0,127,192,0,0,0,2,252,0,31,64,0,0,0,2,252,0,6,0,0,0,0,2,252,0,0,0,0,0,0,0,0,0, + // 0x793a 示 + 58,121,34,33,41,37,1,253,0,21,85,85,85,85,85,80,0,0,127,255,255,255,255,255,244,0,0,127,255,255,255,255,255,244,0,0,127,255,255,255,255,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,21,85,85,86,254,85,85,85,80,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,3,228,1,253,0,47,0,0,0,11,244,1,253,0,191,64,0,0,15,240,1,253,0,63,192,0,0,47,224,1,253,0,31,240,0,0,63,192,1,253,0,15,244,0,0,191,128,1,253,0,3,252,0,1,255,0,1,253,0,2,253,0,3,253,0,1,253,0,0,255,0,15,248,0,1,253,0,0,191,128,47,240,0,1,253,0,0,63,192,127,208,0,1,253,0,0,47,208,31,64,0,1,253,0,0,31,128,1,0,26,171,253,0,0,8,0,0,0,15,255,252,0,0,0,0,0,0,15,255,248,0,0,0,0,0,0,11,255,144,0,0,0,0, + // 0x7fa9 義 + 169,127,34,35,59,37,2,253,0,0,100,0,0,11,144,0,0,0,2,252,0,0,15,240,0,0,0,0,255,0,0,47,192,0,0,0,0,127,64,0,63,128,0,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,10,170,170,171,250,170,170,168,0,0,0,0,7,240,0,0,0,0,0,85,85,91,249,85,85,64,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,170,170,170,174,170,170,170,170,128,0,0,90,252,10,128,180,0,0,47,255,255,255,15,193,255,64,0,63,255,255,228,15,208,191,240,0,26,86,252,0,15,208,11,252,0,0,1,252,0,15,224,1,240,0,170,170,254,170,175,250,170,170,128,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,1,252,0,3,248,2,64,0,0,1,252,0,2,252,15,240,0,86,175,254,175,192,254,63,208,0,255,255,255,255,192,255,255,128,0,255,255,255,250,64,127,253,0,0,80,1,252,0,0,127,244,3,64,0,1,252,0,11,255,244,7,208,0,1,252,1,255,255,254,75,208,2,171,252,47,255,209,255,255,192,3,255,248,15,249,0,127,255,128,2,255,224,7,64,0,6,253,0, + // 0x8868 表 + 104,136,35,35,59,37,1,253,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,7,255,255,255,255,255,255,255,64,7,255,255,255,255,255,255,255,64,7,255,255,255,255,255,255,255,64,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,127,255,255,255,255,255,252,0,0,191,255,255,255,255,255,252,0,0,191,255,255,255,255,255,252,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,0,0,0,127,239,192,0,0,0,0,0,2,255,143,224,0,28,0,0,0,31,253,7,240,0,191,0,0,0,255,240,3,244,2,255,64,0,27,255,192,2,252,31,253,0,1,255,255,128,1,253,191,224,0,111,255,255,128,0,255,255,64,0,127,254,63,128,0,127,248,0,0,47,208,63,128,0,47,224,0,0,9,0,63,128,0,15,244,0,0,0,0,63,128,0,71,253,0,0,0,0,63,128,111,210,255,128,0,0,0,63,239,255,208,191,244,0,0,0,127,255,255,208,47,254,64,0,127,255,255,249,0,7,255,244,0,191,255,249,0,0,0,255,240,0,127,249,0,0,0,0,31,208,0,57,0,0,0,0,0,1,128, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Korean_27.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Korean_27.cpp new file mode 100644 index 0000000000..02cce9dcca --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Korean_27.cpp @@ -0,0 +1,252 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Korean 37pt, capital 'A' height: 27px, width: 100%, range: 0xac70-0xd788, glyphs: 110 +extern const uint8_t NotoSans_Medium_Korean_27[16344] = { + 162,27,112,172,136,215,35,247, // unifont_t + // 0xac70 거 + 112,172,28,35,245,34,2,253,0,0,0,0,0,0,85,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,63,255,255,255,128,1,254,63,255,255,255,128,1,254,63,255,255,255,128,1,254,0,0,0,127,64,1,254,0,0,0,127,64,1,254,0,0,0,191,0,1,254,0,0,0,191,0,1,254,0,0,0,255,0,1,254,0,0,0,254,0,1,254,0,0,2,253,0,1,254,0,0,3,252,127,255,254,0,0,7,248,127,255,254,0,0,15,240,127,255,254,0,0,47,224,0,1,254,0,0,127,192,0,1,254,0,0,255,64,0,1,254,0,3,254,0,0,1,254,0,31,252,0,0,1,254,0,127,240,0,0,1,254,3,255,192,0,0,1,254,47,255,0,0,0,1,254,255,248,0,0,0,1,254,191,208,0,0,0,1,254,62,0,0,0,0,1,254,16,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254, + // 0xace0 고 + 224,172,30,27,216,34,2,1,3,255,255,255,255,255,252,0,3,255,255,255,255,255,252,0,3,255,255,255,255,255,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,3,252,0,7,248,0,0,0,3,252,0,7,244,0,0,0,3,252,0,11,244,0,0,0,3,252,0,11,240,0,0,0,3,252,0,15,240,0,0,0,3,252,0,15,240,0,0,0,3,252,0,15,240,0,0,0,3,252,0,15,224,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0, + // 0xadf8 그 + 248,173,30,26,208,34,2,2,3,255,255,255,255,255,240,0,3,255,255,255,255,255,240,0,3,255,255,255,255,255,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240, + // 0xae09 급 + 9,174,30,33,8,34,2,253,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,224,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,253,0,0,0,7,244,0,1,253,0,0,0,7,244,0,1,253,0,0,0,7,244,0,1,253,0,0,0,7,244,0,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,253,0,0,0,7,244,0,1,253,0,0,0,7,244,0,1,253,0,0,0,7,244,0,1,253,0,0,0,7,244,0,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,0,0,0,0,0,0,0,0, + // 0xae30 기 + 48,174,28,35,245,34,2,253,0,0,0,0,0,0,84,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,15,255,255,255,224,1,253,15,255,255,255,224,1,253,15,255,255,255,208,1,253,0,0,0,31,208,1,253,0,0,0,47,208,1,253,0,0,0,47,192,1,253,0,0,0,63,192,1,253,0,0,0,63,128,1,253,0,0,0,127,64,1,253,0,0,0,255,0,1,253,0,0,1,255,0,1,253,0,0,2,253,0,1,253,0,0,7,252,0,1,253,0,0,15,244,0,1,253,0,0,47,240,0,1,253,0,0,191,192,0,1,253,0,2,255,64,0,1,253,0,11,254,0,0,1,253,0,63,248,0,0,1,253,1,255,224,0,0,1,253,15,255,128,0,0,1,253,191,253,0,0,0,1,253,127,224,0,0,0,1,253,47,64,0,0,0,1,253,4,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253, + // 0xae45 깅 + 69,174,28,35,245,34,2,253,0,0,0,0,0,0,84,0,0,0,0,0,2,253,0,0,0,0,0,2,253,15,255,255,255,208,2,253,15,255,255,255,192,2,253,15,255,255,255,192,2,253,0,0,0,63,192,2,253,0,0,0,63,128,2,253,0,0,0,127,64,2,253,0,0,0,255,0,2,253,0,0,1,254,0,2,253,0,0,3,252,0,2,253,0,0,15,244,0,2,253,0,0,63,224,0,2,253,0,1,255,128,0,2,253,0,31,254,0,0,2,253,1,255,248,0,0,2,253,47,255,208,0,0,2,253,191,253,0,0,0,2,253,63,208,0,0,0,2,253,24,0,0,0,0,1,168,0,0,2,191,255,144,0,0,0,127,255,255,254,0,0,3,255,255,255,255,208,0,15,255,80,1,191,244,0,47,244,0,0,11,252,0,63,192,0,0,2,253,0,63,192,0,0,1,253,0,63,192,0,0,1,253,0,63,192,0,0,2,253,0,47,240,0,0,11,252,0,15,255,80,1,191,244,0,3,255,255,255,255,208,0,0,127,255,255,254,0,0,0,6,191,255,144,0, + // 0xb044 끄 + 68,176,30,26,208,34,2,2,15,255,255,194,255,255,252,0,15,255,255,194,255,255,252,0,15,255,255,194,255,255,252,0,0,0,47,192,0,3,252,0,0,0,47,192,0,3,252,0,0,0,47,192,0,3,252,0,0,0,47,192,0,3,252,0,0,0,63,192,0,3,248,0,0,0,63,192,0,3,248,0,0,0,63,192,0,3,248,0,0,0,63,128,0,3,248,0,0,0,127,128,0,7,244,0,0,0,127,64,0,7,244,0,0,0,191,0,0,11,244,0,0,0,255,0,0,11,240,0,0,0,255,0,0,15,240,0,0,1,254,0,0,15,240,0,0,2,253,0,0,15,224,0,0,2,252,0,0,31,224,0,0,0,4,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240, + // 0xb0b4 내 + 180,176,28,35,245,34,3,253,0,0,0,0,0,0,84,0,0,0,0,190,1,253,0,0,0,0,254,1,253,0,0,0,0,254,1,253,106,0,0,0,254,1,253,191,0,0,0,254,1,253,191,0,0,0,254,1,253,191,0,0,0,254,1,253,191,0,0,0,254,1,253,191,0,0,0,254,1,253,191,0,0,0,254,1,253,191,0,0,0,254,1,253,191,0,0,0,254,1,253,191,0,0,0,254,1,253,191,0,0,0,255,255,253,191,0,0,0,255,255,253,191,0,0,0,255,255,253,191,0,0,0,255,1,253,191,0,0,0,254,1,253,191,0,0,0,254,1,253,191,0,0,0,254,1,253,191,0,0,0,254,1,253,191,0,90,240,254,1,253,191,255,255,240,254,1,253,191,255,255,244,254,1,253,191,255,254,144,254,1,253,20,0,0,0,254,1,253,0,0,0,0,254,1,253,0,0,0,0,254,1,253,0,0,0,0,254,1,253,0,0,0,0,254,1,253,0,0,0,0,254,1,253,0,0,0,0,254,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253, + // 0xb178 노 + 120,177,30,28,224,34,2,1,1,168,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,255,255,255,255,255,252,0,2,255,255,255,255,255,252,0,2,255,255,255,255,255,252,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240, + // 0xb204 누 + 4,178,30,33,8,34,2,253,0,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0, + // 0xb274 뉴 + 116,178,30,33,8,34,2,253,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0, + // 0xb2c8 니 + 200,178,26,35,245,34,4,253,0,0,0,0,0,5,64,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,20,31,208,254,0,21,191,248,31,208,255,255,255,255,252,31,208,255,255,255,255,248,31,208,255,255,255,165,0,31,208,84,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208, + // 0xb2e4 다 + 228,178,30,35,24,34,3,253,0,0,0,0,0,21,64,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,255,255,255,254,0,63,128,0,255,255,255,254,0,63,128,0,255,255,255,254,0,63,128,0,255,0,0,0,0,63,128,0,255,0,0,0,0,63,128,0,255,0,0,0,0,63,128,0,255,0,0,0,0,63,128,0,255,0,0,0,0,63,128,0,255,0,0,0,0,63,128,0,255,0,0,0,0,63,192,0,255,0,0,0,0,63,255,240,255,0,0,0,0,63,255,240,255,0,0,0,0,63,255,240,255,0,0,0,0,63,128,0,255,0,0,0,0,63,128,0,255,0,0,0,0,63,128,0,255,0,0,0,0,63,128,0,255,0,0,0,0,63,128,0,255,0,1,90,240,63,128,0,255,255,255,255,244,63,128,0,255,255,255,255,244,63,128,0,255,255,255,233,64,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0, + // 0xb2f9 당 + 249,178,30,35,24,34,3,253,0,0,0,0,0,21,64,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,255,255,255,252,0,63,192,0,255,255,255,252,0,63,192,0,255,255,255,252,0,63,192,0,255,0,0,0,0,63,192,0,255,0,0,0,0,63,192,0,255,0,0,0,0,63,192,0,255,0,0,0,0,63,255,224,255,0,0,0,0,63,255,224,255,0,0,0,0,63,255,224,255,0,0,0,0,63,192,0,255,0,0,0,0,63,192,0,255,0,0,91,240,63,192,0,255,255,255,255,244,63,192,0,255,255,255,255,244,63,192,0,255,255,255,233,64,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,21,64,0,0,0,43,255,233,0,0,0,0,7,255,255,255,224,0,0,0,47,255,255,255,253,0,0,0,255,249,0,91,255,0,0,1,255,64,0,0,255,192,0,2,253,0,0,0,63,192,0,3,252,0,0,0,47,208,0,3,252,0,0,0,47,208,0,2,253,0,0,0,63,192,0,1,255,64,0,0,255,192,0,0,191,249,0,91,255,0,0,0,47,255,255,255,253,0,0,0,7,255,255,255,224,0,0,0,0,43,255,249,0,0,0, + // 0xb3c4 도 + 196,179,30,28,224,34,2,1,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240, + // 0xb3cc 돌 + 204,179,30,33,8,34,2,253,0,255,255,255,255,255,240,0,0,255,255,255,255,255,240,0,0,255,255,255,255,255,240,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,255,255,255,255,255,248,0,0,255,255,255,255,255,248,0,0,255,255,255,255,255,248,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,255,170,170,170,170,160,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,252,0, + // 0xb3d9 동 + 217,179,30,33,8,34,2,253,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,255,250,64,0,0,0,6,255,255,255,248,0,0,0,47,255,255,255,255,64,0,0,191,249,0,6,255,208,0,0,255,64,0,0,47,240,0,1,254,0,0,0,11,244,0,2,253,0,0,0,7,244,0,1,254,0,0,0,11,244,0,0,255,64,0,0,47,240,0,0,191,249,0,6,255,208,0,0,47,255,255,255,255,128,0,0,7,255,255,255,248,0,0,0,0,27,255,250,64,0,0, + // 0xb418 되 + 24,180,28,35,245,34,2,253,0,0,0,0,0,0,84,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,11,255,255,255,253,1,253,11,255,255,255,253,1,253,11,255,255,255,253,1,253,11,240,0,0,0,1,253,11,240,0,0,0,1,253,11,240,0,0,0,1,253,11,240,0,0,0,1,253,11,240,0,0,0,1,253,11,240,0,0,0,1,253,11,240,0,0,0,1,253,11,240,0,0,0,1,253,11,255,255,255,254,1,253,11,255,255,255,254,1,253,11,255,255,255,254,1,253,0,0,63,192,0,1,253,0,0,63,192,0,1,253,0,0,63,192,0,1,253,0,0,63,192,0,1,253,0,0,63,192,0,1,253,0,0,63,192,0,1,253,0,0,127,218,191,225,253,255,255,255,255,255,225,253,191,255,255,255,255,225,253,191,255,255,170,80,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253, + // 0xb41c 된 + 28,180,29,35,24,34,2,253,0,0,0,0,0,0,84,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,3,255,255,255,252,1,253,0,3,255,255,255,252,1,253,0,3,255,255,255,252,1,253,0,3,248,0,0,0,1,253,0,3,248,0,0,0,1,253,0,3,248,0,0,0,1,253,0,3,248,0,0,0,1,253,0,3,248,0,0,0,1,253,0,3,248,0,0,0,1,253,0,3,255,255,255,252,1,253,0,3,255,255,255,252,1,253,0,3,255,255,255,252,1,253,0,0,0,63,192,0,1,253,0,0,0,63,192,0,1,253,0,0,0,63,192,0,1,253,0,0,0,63,213,170,193,253,0,255,255,255,255,255,209,253,0,255,255,255,255,255,209,253,0,191,255,255,170,80,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,26,128,0,0,1,253,0,0,47,192,0,0,1,253,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,255,255,255,255,255,64,0,47,255,255,255,255,255,64,0,47,255,255,255,255,255,64,0,0,0,0,0,0,0,0, + // 0xb428 됨 + 40,180,28,35,245,34,2,253,0,0,0,0,0,0,169,0,0,0,0,0,1,254,3,255,255,255,252,1,254,3,255,255,255,252,1,254,3,255,255,255,252,1,254,3,248,0,0,0,1,254,3,248,0,0,0,1,254,3,248,0,0,0,1,254,3,248,0,0,0,1,254,3,248,0,0,0,1,254,3,255,255,255,253,1,254,3,255,255,255,253,1,254,3,255,255,255,253,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,214,175,209,254,255,255,255,255,255,209,254,191,255,255,255,255,209,254,191,255,254,169,64,1,254,0,0,0,0,0,1,254,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,47,255,255,255,255,254,0,47,255,255,255,255,254,0,47,255,255,255,255,254,0,47,192,0,0,1,254,0,47,192,0,0,0,254,0,47,192,0,0,0,254,0,47,192,0,0,0,254,0,47,192,0,0,0,254,0,47,255,255,255,255,254,0,47,255,255,255,255,254,0,47,255,255,255,255,254,0,0,0,0,0,0,0, + // 0xb4a4 뒤 + 164,180,28,35,245,34,2,253,0,0,0,0,0,0,169,0,0,0,0,0,1,254,3,255,255,255,252,1,254,3,255,255,255,252,1,254,3,255,255,255,252,1,254,3,248,0,0,0,1,254,3,248,0,0,0,1,254,3,248,0,0,0,1,254,3,248,0,0,0,1,254,3,248,0,0,0,1,254,3,248,0,0,0,1,254,3,248,0,0,0,1,254,3,255,255,255,253,1,254,3,255,255,255,253,1,254,3,255,255,255,253,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,86,145,254,255,255,255,255,255,225,254,255,255,255,255,255,241,254,255,255,255,254,165,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,128,0,1,254,0,0,0,0,0,1,253, + // 0xb4dc 드 + 220,180,30,27,216,34,2,1,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0, + // 0xb514 디 + 20,181,26,35,245,34,4,253,0,0,0,0,0,5,64,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,255,255,255,255,0,31,208,255,255,255,255,0,31,208,255,255,255,255,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,0,0,31,208,254,0,0,90,244,31,208,255,255,255,255,248,31,208,255,255,255,255,248,31,208,255,255,255,250,80,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208, + // 0xb77c 라 + 124,183,30,35,24,34,3,253,0,0,0,0,0,21,64,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,255,255,255,253,0,63,192,0,255,255,255,253,0,63,192,0,255,255,255,253,0,63,192,0,0,0,1,253,0,63,192,0,0,0,1,253,0,63,192,0,0,0,1,253,0,63,192,0,0,0,1,253,0,63,192,0,0,0,1,253,0,63,192,0,0,0,1,253,0,63,192,0,255,255,255,253,0,63,192,0,255,255,255,253,0,63,255,240,255,255,255,253,0,63,255,240,255,0,0,0,0,63,255,240,255,0,0,0,0,63,192,0,255,0,0,0,0,63,192,0,255,0,0,0,0,63,192,0,255,0,0,0,0,63,192,0,255,0,0,0,0,63,192,0,255,0,0,0,16,63,192,0,255,0,21,175,244,63,192,0,255,255,255,255,248,63,192,0,255,255,255,255,248,63,192,0,255,255,254,165,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0, + // 0xb7ec 러 + 236,183,27,35,245,34,3,253,0,0,0,0,0,1,80,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,255,255,255,252,0,3,248,255,255,255,252,0,3,248,255,255,255,252,0,3,248,0,0,3,252,0,3,248,0,0,3,252,0,3,248,0,0,3,252,0,3,248,0,0,3,252,0,3,248,0,0,3,252,0,3,248,0,0,3,252,0,3,248,255,255,255,252,63,255,248,255,255,255,252,63,255,248,255,255,255,252,63,255,248,255,0,0,0,0,7,248,255,0,0,0,0,3,248,255,0,0,0,0,3,248,255,0,0,0,0,3,248,255,0,0,0,0,3,248,255,0,0,0,0,3,248,255,0,0,0,0,3,248,255,0,85,175,224,3,248,255,255,255,255,224,3,248,255,255,255,255,240,3,248,255,255,254,148,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248, + // 0xb808 레 + 8,184,28,35,245,34,3,253,0,0,0,0,0,0,84,0,0,0,0,63,64,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,255,255,254,0,63,128,253,255,255,254,0,63,128,253,255,255,254,0,63,128,253,0,0,254,0,63,128,253,0,0,254,0,63,128,253,0,0,254,0,63,128,253,0,0,254,0,63,128,253,0,0,254,0,63,128,253,0,0,254,0,63,128,253,0,0,254,63,255,128,253,255,255,254,63,255,128,253,255,255,254,63,255,128,253,255,255,254,0,63,128,253,254,0,0,0,63,128,253,254,0,0,0,63,128,253,254,0,0,0,63,128,253,254,0,0,0,63,128,253,254,0,0,0,63,128,253,254,0,0,0,63,128,253,254,5,90,244,63,128,253,255,255,255,244,63,128,253,255,255,255,248,63,128,253,255,255,233,80,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,21,0,253,0,0,0,0,0,0,253, + // 0xb825 력 + 37,184,27,35,245,34,3,253,0,0,0,0,0,0,80,0,0,0,0,0,3,248,0,0,0,0,0,3,248,255,255,255,248,0,3,248,255,255,255,248,0,3,248,255,255,255,248,0,7,248,0,0,3,248,63,255,248,0,0,3,248,63,255,248,0,0,3,248,63,255,248,0,0,3,248,0,3,248,255,255,255,248,0,3,248,255,255,255,248,0,3,248,255,255,255,248,0,7,248,255,0,0,0,63,255,248,255,0,0,0,63,255,248,255,0,0,0,63,255,248,255,0,0,21,0,3,248,255,255,255,255,64,3,248,255,255,255,255,128,3,248,255,255,255,233,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,1,80,0,0,0,0,0,0,0,0,255,255,255,255,255,248,0,255,255,255,255,255,248,0,255,255,255,255,255,248,0,0,0,0,0,7,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,244, + // 0xb85c 로 + 92,184,30,28,224,34,2,1,2,255,255,255,255,255,248,0,2,255,255,255,255,255,248,0,2,255,255,255,255,255,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240, + // 0xb8cc 료 + 204,184,30,28,224,34,2,1,2,255,255,255,255,255,248,0,2,255,255,255,255,255,248,0,2,255,255,255,255,255,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,0,0,254,0,7,244,0,0,0,0,254,0,7,244,0,0,0,0,254,0,7,244,0,0,0,0,254,0,7,244,0,0,0,0,254,0,7,244,0,0,0,0,255,0,7,244,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240, + // 0xb974 르 + 116,185,30,28,224,34,2,1,2,255,255,255,255,255,248,0,2,255,255,255,255,255,248,0,2,255,255,255,255,255,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240, + // 0xb9ac 리 + 172,185,27,35,245,34,3,253,0,0,0,0,0,1,80,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,127,255,255,255,64,7,244,127,255,255,255,64,7,244,127,255,255,255,64,7,244,0,0,0,191,64,7,244,0,0,0,191,64,7,244,0,0,0,191,64,7,244,0,0,0,191,64,7,244,0,0,0,191,64,7,244,0,0,0,191,64,7,244,63,255,255,255,64,7,244,63,255,255,255,64,7,244,63,255,255,255,64,7,244,63,128,0,0,0,7,244,63,128,0,0,0,7,244,63,128,0,0,0,7,244,63,128,0,0,0,7,244,63,128,0,0,0,7,244,63,128,0,0,0,7,244,63,128,0,0,1,7,244,63,128,85,107,255,7,244,63,255,255,255,255,7,244,63,255,255,255,255,7,244,63,255,255,169,64,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244, + // 0xb9b0 린 + 176,185,28,35,245,34,3,253,0,0,0,0,0,1,80,0,0,0,0,0,7,244,0,0,0,0,0,7,244,127,255,255,255,0,7,244,127,255,255,255,0,7,244,127,255,255,255,0,7,244,0,0,0,255,0,7,244,0,0,0,255,0,7,244,0,0,0,255,0,7,244,0,0,0,255,0,7,244,127,255,255,255,0,7,244,127,255,255,255,0,7,244,127,255,255,255,0,7,244,127,64,0,0,0,7,244,127,64,0,0,0,7,244,127,64,0,0,0,7,244,127,64,0,0,0,7,244,127,64,0,90,252,7,244,127,255,255,255,253,7,244,127,255,255,255,253,7,244,127,255,255,233,80,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,191,0,0,0,7,244,0,191,0,0,0,7,244,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,255,255,255,255,253,0,191,255,255,255,255,253,0,191,255,255,255,255,253,0,0,0,0,0,0,0, + // 0xb9bd 립 + 189,185,27,35,245,34,3,253,0,0,0,0,0,2,160,0,0,0,0,0,7,244,127,255,255,255,0,7,244,127,255,255,255,0,7,244,127,255,255,255,0,7,244,0,0,0,255,0,7,244,0,0,0,255,0,7,244,0,0,0,255,0,7,244,0,0,0,255,0,7,244,127,255,255,255,0,7,244,127,255,255,255,0,7,244,127,255,255,254,0,7,244,127,64,0,0,0,7,244,127,64,0,0,0,7,244,127,64,0,0,0,7,244,127,64,1,90,252,7,244,127,255,255,255,253,7,244,127,255,255,255,253,7,244,127,255,255,233,64,7,244,0,0,0,0,0,6,164,0,0,0,0,0,0,0,0,106,0,0,0,2,164,0,127,64,0,0,7,244,0,127,64,0,0,7,244,0,127,64,0,0,7,244,0,127,255,255,255,255,244,0,127,255,255,255,255,244,0,127,255,255,255,255,244,0,127,64,0,0,7,244,0,127,64,0,0,7,244,0,127,64,0,0,7,244,0,127,255,255,255,255,244,0,127,255,255,255,255,244,0,127,255,255,255,255,244,0,0,0,0,0,0,0, + // 0xb9c1 링 + 193,185,27,35,245,34,3,253,0,0,0,0,0,1,80,0,0,0,0,0,7,244,0,0,0,0,0,7,244,127,255,255,255,0,7,244,127,255,255,255,0,7,244,127,255,255,255,0,7,244,0,0,0,255,0,7,244,0,0,0,255,0,7,244,0,0,0,255,0,7,244,0,0,0,255,0,7,244,127,255,255,255,0,7,244,127,255,255,255,0,7,244,127,255,255,254,0,7,244,127,64,0,0,0,7,244,127,64,0,0,0,7,244,127,64,0,0,0,7,244,127,64,1,90,252,7,244,127,255,255,255,253,7,244,127,255,255,255,253,7,244,127,255,255,233,64,7,244,0,0,0,0,0,7,244,0,0,0,0,0,1,80,0,0,26,255,254,64,0,0,2,255,255,255,253,0,0,15,255,255,255,255,128,0,63,249,0,6,255,224,0,191,192,0,0,31,240,0,255,0,0,0,11,244,0,255,0,0,0,7,248,0,255,0,0,0,11,244,0,191,192,0,0,31,240,0,63,249,0,6,255,224,0,15,255,255,255,255,128,0,2,255,255,255,253,0,0,0,26,255,254,64,0, + // 0xba48 멈 + 72,186,27,35,245,34,3,253,0,0,0,0,0,1,80,0,0,0,0,0,3,248,0,0,0,0,0,3,248,191,255,255,255,0,3,248,191,255,255,255,0,3,248,191,255,255,255,0,3,248,191,0,0,255,0,3,248,191,0,0,255,0,3,248,191,0,0,255,0,7,248,191,0,0,255,255,255,248,191,0,0,255,255,255,248,191,0,0,255,255,255,248,191,0,0,255,0,3,248,191,0,0,255,0,3,248,191,0,0,255,0,3,248,191,255,255,255,0,3,248,191,255,255,255,0,3,248,191,255,255,255,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,248,0,127,255,255,255,255,248,0,127,255,255,255,255,248,0,127,64,0,0,3,248,0,127,64,0,0,3,248,0,127,64,0,0,3,248,0,127,64,0,0,3,248,0,127,64,0,0,3,248,0,127,64,0,0,3,248,0,127,255,255,255,255,248,0,127,255,255,255,255,248,0,127,255,255,255,255,248,0,0,0,0,0,0,0, + // 0xba54 메 + 84,186,28,35,245,34,3,253,0,0,0,0,0,0,168,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,255,255,255,192,63,128,253,255,255,255,192,63,128,253,255,255,255,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,255,255,128,253,254,0,47,255,255,128,253,254,0,47,255,255,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,255,255,255,192,63,128,253,255,255,255,192,63,128,253,255,255,255,192,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,5,0,253,0,0,0,0,0,0,253, + // 0xba74 면 + 116,186,28,35,245,34,3,253,0,0,0,0,0,2,164,0,0,0,0,0,3,248,0,0,0,0,0,3,248,191,255,255,255,0,3,248,191,255,255,255,0,3,248,191,255,255,255,0,3,248,191,0,0,255,255,255,248,191,0,0,255,255,255,248,191,0,0,255,255,255,248,191,0,0,255,0,7,248,191,0,0,255,0,3,248,191,0,0,255,0,3,248,191,0,0,255,0,3,248,191,0,0,255,0,7,248,191,0,0,255,255,255,248,191,0,0,255,255,255,248,191,0,0,255,255,255,248,191,255,255,255,0,3,248,191,255,255,255,0,3,248,191,255,255,255,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,42,64,0,0,3,248,0,63,128,0,0,3,248,0,63,128,0,0,2,164,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,63,255,255,255,255,253,0,63,255,255,255,255,253,0,63,255,255,255,255,253,0,0,0,0,0,0,0, + // 0xbaa8 모 + 168,186,30,28,224,34,2,1,2,255,255,255,255,255,248,0,2,255,255,255,255,255,248,0,2,255,255,255,255,255,248,0,2,252,0,0,0,3,248,0,2,252,0,0,0,3,248,0,2,252,0,0,0,3,248,0,2,252,0,0,0,3,248,0,2,252,0,0,0,3,248,0,2,252,0,0,0,3,248,0,2,252,0,0,0,3,248,0,2,252,0,0,0,3,248,0,2,252,0,0,0,3,248,0,2,252,0,0,0,3,248,0,2,252,0,0,0,3,248,0,2,255,255,255,255,255,248,0,2,255,255,255,255,255,248,0,2,255,255,255,255,255,248,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240, + // 0xbabb 못 + 187,186,30,33,8,34,2,253,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,1,253,0,0,0,11,240,0,1,253,0,0,0,11,240,0,1,253,0,0,0,11,240,0,1,253,0,0,0,11,240,0,1,253,0,0,0,11,240,0,1,253,0,0,0,11,240,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,191,224,0,0,0,0,0,0,255,240,0,0,0,0,0,3,255,252,0,0,0,0,0,15,250,255,0,0,0,0,0,191,224,255,208,0,0,0,27,255,128,63,254,0,0,7,255,254,0,11,255,249,0,11,255,224,0,1,255,253,0,3,254,0,0,0,11,252,0,1,64,0,0,0,0,20,0, + // 0xbbf8 미 + 248,187,27,35,245,34,3,253,0,0,0,0,0,1,80,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,127,255,255,255,64,7,244,127,255,255,255,64,7,244,127,255,255,255,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,255,255,255,64,7,244,127,255,255,255,64,7,244,127,255,255,255,64,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244, + // 0xbc00 밀 + 0,188,28,35,245,34,3,253,0,0,0,0,0,6,164,0,0,0,0,0,7,244,127,255,255,255,64,7,244,127,255,255,255,64,7,244,127,255,255,255,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,64,0,127,64,7,244,127,255,255,255,64,7,244,127,255,255,255,64,7,244,127,255,255,255,64,7,244,0,0,0,0,0,7,244,0,0,0,0,0,1,80,0,0,0,0,0,0,0,0,191,255,255,255,255,244,0,191,255,255,255,255,244,0,191,255,255,255,255,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,127,255,255,255,255,244,0,127,255,255,255,255,244,0,127,255,255,255,255,244,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,127,255,255,255,255,253,0,127,255,255,255,255,253,0,127,255,255,255,255,253, + // 0xbc14 바 + 20,188,30,35,24,34,3,253,0,0,0,0,0,21,64,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,170,0,0,170,0,63,128,0,255,0,0,255,0,63,128,0,255,0,0,255,0,63,128,0,255,0,0,255,0,63,128,0,255,0,0,255,0,63,128,0,255,0,0,255,0,63,128,0,255,0,0,255,0,63,128,0,255,0,0,255,0,63,128,0,255,0,0,255,0,63,128,0,255,255,255,255,0,63,128,0,255,255,255,255,0,63,192,0,255,255,255,255,0,63,255,240,255,0,0,255,0,63,255,240,255,0,0,255,0,63,255,240,255,0,0,255,0,63,128,0,255,0,0,255,0,63,128,0,255,0,0,255,0,63,128,0,255,0,0,255,0,63,128,0,255,0,0,255,0,63,128,0,255,0,0,255,0,63,128,0,255,0,0,255,0,63,128,0,255,255,255,255,0,63,128,0,255,255,255,255,0,63,128,0,255,255,255,255,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0, + // 0xbc84 버 + 132,188,27,35,245,34,3,253,0,0,0,0,0,1,84,0,0,0,0,0,3,248,0,0,0,0,0,3,248,170,0,0,170,0,3,248,255,0,0,255,0,3,248,255,0,0,255,0,3,248,255,0,0,255,0,3,248,255,0,0,255,0,3,248,255,0,0,255,0,3,248,255,0,0,255,0,3,248,255,0,0,255,0,3,248,255,0,0,255,0,3,248,255,255,255,255,0,3,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,255,0,0,255,255,255,248,255,0,0,255,0,7,248,255,0,0,255,0,3,248,255,0,0,255,0,3,248,255,0,0,255,0,3,248,255,0,0,255,0,3,248,255,0,0,255,0,3,248,255,0,0,255,0,3,248,255,255,255,255,0,3,248,255,255,255,255,0,3,248,255,255,255,255,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248, + // 0xbca0 베 + 160,188,28,35,245,34,3,253,0,0,0,0,0,0,84,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,5,64,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,255,255,255,192,63,128,253,255,255,255,255,255,128,253,255,255,255,255,255,128,253,254,0,47,255,255,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,254,0,47,192,63,128,253,255,255,255,192,63,128,253,255,255,255,192,63,128,253,255,255,255,192,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,0,0,253,0,0,0,0,0,0,253, + // 0xbca8 벨 + 168,188,29,35,24,34,3,253,0,0,0,0,0,0,84,0,0,0,0,0,63,65,252,0,20,0,10,128,63,65,252,0,255,0,31,208,63,65,252,0,255,0,31,208,63,65,252,0,255,0,31,208,63,65,252,0,255,0,31,208,63,65,252,0,255,255,255,208,63,65,252,0,255,255,255,255,255,65,252,0,255,255,255,255,255,65,252,0,255,0,31,255,255,65,252,0,255,0,31,208,63,65,252,0,255,0,31,208,63,65,252,0,255,0,31,208,63,65,252,0,255,255,255,208,63,65,252,0,255,255,255,208,63,65,252,0,255,255,255,208,63,65,252,0,0,0,0,0,63,65,252,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,255,255,255,255,255,64,0,63,255,255,255,255,255,64,0,63,255,255,255,255,255,64, + // 0xbcf8 본 + 248,188,30,33,8,34,2,253,0,254,0,0,0,11,240,0,0,254,0,0,0,11,240,0,0,254,0,0,0,11,240,0,0,254,0,0,0,11,240,0,0,255,255,255,255,255,240,0,0,255,255,255,255,255,240,0,0,255,255,255,255,255,240,0,0,254,0,0,0,11,240,0,0,254,0,0,0,11,240,0,0,254,0,0,0,11,240,0,0,254,0,0,0,11,240,0,0,255,255,255,255,255,240,0,0,255,255,255,255,255,240,0,0,255,255,255,255,255,240,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0xbe44 비 + 68,190,27,35,245,34,3,253,0,0,0,0,0,1,80,0,0,0,0,0,7,244,0,0,0,0,0,7,244,42,64,0,42,64,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,255,255,255,128,7,244,127,255,255,255,128,7,244,127,255,255,255,128,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,64,0,63,128,7,244,127,255,255,255,128,7,244,127,255,255,255,128,7,244,127,255,255,255,128,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244, + // 0xc0ac 사 + 172,192,32,35,24,34,1,253,0,0,0,0,0,1,84,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,42,64,0,3,248,0,0,0,63,128,0,3,248,0,0,0,63,128,0,3,248,0,0,0,63,128,0,3,248,0,0,0,63,128,0,3,248,0,0,0,63,128,0,3,248,0,0,0,127,128,0,3,248,0,0,0,127,128,0,3,248,0,0,0,127,192,0,3,248,0,0,0,191,192,0,3,248,0,0,0,255,192,0,3,248,0,0,0,255,208,0,3,255,255,0,1,255,240,0,3,255,255,0,3,255,240,0,3,255,255,0,7,247,248,0,3,252,0,0,15,242,253,0,3,248,0,0,47,224,255,0,3,248,0,0,127,192,191,192,3,248,0,0,255,128,63,224,3,248,0,3,255,0,31,248,3,248,0,31,252,0,11,255,67,248,0,127,244,0,2,255,3,248,0,63,208,0,0,189,3,248,0,15,0,0,0,24,3,248,0,4,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0, + // 0xc0bd 삽 + 189,192,31,35,24,34,2,253,0,0,0,0,0,6,160,0,0,0,0,0,0,15,240,0,0,0,254,0,0,15,240,0,0,0,254,0,0,15,240,0,0,0,254,0,0,15,240,0,0,1,254,0,0,15,240,0,0,1,255,0,0,15,240,0,0,2,255,0,0,15,240,0,0,3,255,64,0,15,255,248,0,3,255,192,0,15,255,248,0,11,255,208,0,15,255,248,0,31,239,240,0,15,240,0,0,63,199,252,0,15,240,0,0,255,131,255,0,15,240,0,7,255,0,255,224,15,240,0,127,252,0,127,252,15,240,0,255,244,0,15,252,15,240,0,191,192,0,2,240,15,240,0,62,0,0,0,16,15,240,0,0,0,0,0,0,6,160,0,0,0,0,0,0,0,0,0,0,127,64,0,0,11,240,0,0,127,64,0,0,15,240,0,0,127,64,0,0,15,240,0,0,127,64,0,0,15,240,0,0,127,255,255,255,255,240,0,0,127,255,255,255,255,240,0,0,127,255,255,255,255,240,0,0,127,64,0,0,15,240,0,0,127,64,0,0,15,240,0,0,127,64,0,0,15,240,0,0,127,255,255,255,255,240,0,0,127,255,255,255,255,240,0,0,127,255,255,255,255,240,0,0,0,0,0,0,0,0,0, + // 0xc0c8 새 + 200,192,30,35,24,34,1,253,0,0,0,0,0,0,5,64,0,0,0,0,7,240,15,208,0,0,0,0,7,240,15,208,0,0,84,0,7,240,15,208,0,1,252,0,7,240,15,208,0,1,252,0,7,240,15,208,0,1,252,0,7,240,15,208,0,1,252,0,7,240,15,208,0,1,252,0,7,240,15,208,0,2,252,0,7,240,15,208,0,2,253,0,7,240,15,208,0,2,253,0,7,240,15,208,0,3,253,0,7,240,15,208,0,3,254,0,7,240,15,208,0,3,255,0,7,255,255,208,0,7,255,0,7,255,255,208,0,11,255,64,7,255,255,208,0,15,255,192,7,240,31,208,0,31,223,208,7,240,15,208,0,63,143,240,7,240,15,208,0,191,75,248,7,240,15,208,0,255,3,253,7,240,15,208,3,253,2,255,71,240,15,208,15,252,0,255,231,240,15,208,127,240,0,63,199,240,15,208,63,208,0,15,71,240,15,208,15,0,0,1,7,240,15,208,4,0,0,0,7,240,15,208,0,0,0,0,7,240,15,208,0,0,0,0,7,240,15,208,0,0,0,0,7,240,15,208,0,0,0,0,7,240,15,208,0,0,0,0,7,240,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,208, + // 0xc124 설 + 36,193,29,34,16,34,2,254,0,0,0,0,0,0,169,0,0,0,85,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0,0,255,0,0,0,254,0,0,1,255,0,63,255,254,0,0,2,255,64,63,255,254,0,0,3,255,192,63,255,254,0,0,7,255,208,0,1,254,0,0,15,255,240,0,0,254,0,0,63,215,252,0,0,254,0,0,255,195,255,0,0,254,0,3,255,0,255,224,0,254,0,47,253,0,127,253,0,254,0,255,244,0,15,252,0,254,0,127,208,0,2,244,0,254,0,62,0,0,0,16,0,254,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,254,0,0,15,255,255,255,255,254,0,0,15,255,255,255,255,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,15,255,255,255,255,254,0,0,15,255,255,255,255,254,0,0,15,255,255,255,255,253,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,255,255,255,255,255,128,0,15,255,255,255,255,255,128,0,15,255,255,255,255,255,128, + // 0xc18c 소 + 140,193,30,29,232,34,2,1,0,0,0,21,64,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,191,208,0,0,0,0,0,0,255,224,0,0,0,0,0,1,255,240,0,0,0,0,0,3,255,252,0,0,0,0,0,15,246,254,0,0,0,0,0,47,240,255,128,0,0,0,0,255,192,127,224,0,0,0,11,255,64,31,253,0,0,0,191,252,0,7,255,208,0,47,255,240,0,1,255,255,64,47,255,64,0,0,47,255,64,15,244,0,0,0,2,255,0,5,0,0,63,128,0,9,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0, + // 0xc18d 속 + 141,193,30,34,16,34,2,253,0,0,0,63,128,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,208,0,0,0,0,0,0,255,224,0,0,0,0,0,1,255,244,0,0,0,0,0,7,255,252,0,0,0,0,0,31,241,255,64,0,0,0,0,191,208,191,224,0,0,0,27,255,128,47,254,0,0,6,255,253,0,7,255,249,0,15,255,224,0,0,191,255,0,11,254,0,63,192,11,254,0,2,64,0,63,192,0,104,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,255,255,244,0,3,255,255,255,255,255,244,0,3,255,255,255,255,255,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0, + // 0xc2a4 스 + 164,194,30,29,232,34,2,1,0,0,0,21,64,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,255,224,0,0,0,0,0,0,255,240,0,0,0,0,0,3,255,248,0,0,0,0,0,11,251,253,0,0,0,0,0,31,240,255,0,0,0,0,0,127,208,191,208,0,0,0,2,255,128,63,244,0,0,0,31,254,0,11,255,64,0,2,255,244,0,2,255,244,0,63,255,208,0,0,127,255,128,31,253,0,0,0,11,255,0,15,144,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0, + // 0xc2ac 슬 + 172,194,30,34,16,34,2,253,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,208,0,0,0,0,0,0,255,224,0,0,0,0,0,1,255,244,0,0,0,0,0,7,255,253,0,0,0,0,0,47,240,255,128,0,0,0,2,255,208,127,248,0,0,1,191,255,0,15,255,228,0,31,255,248,0,2,255,255,64,15,255,128,0,0,47,255,0,11,164,0,0,0,1,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,255,170,170,170,170,160,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,252,0, + // 0xc2dc 시 + 220,194,28,34,238,34,2,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,191,0,0,1,253,0,0,191,0,0,1,253,0,0,191,0,0,1,253,0,0,191,0,0,1,253,0,0,191,0,0,1,253,0,0,191,0,0,1,253,0,0,191,64,0,1,253,0,0,255,64,0,1,253,0,0,255,128,0,1,253,0,0,255,128,0,1,253,0,1,255,192,0,1,253,0,2,255,208,0,1,253,0,3,255,240,0,1,253,0,11,251,244,0,1,253,0,15,227,252,0,1,253,0,47,210,254,0,1,253,0,127,192,255,64,1,253,1,255,64,127,208,1,253,7,254,0,47,244,1,253,47,252,0,15,255,1,253,255,240,0,3,255,65,253,191,192,0,0,190,1,253,62,0,0,0,28,1,253,20,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,0,168, + // 0xc2dd 식 + 221,194,28,35,245,34,2,253,0,0,0,0,0,0,84,0,0,0,0,0,1,253,0,0,191,0,0,1,253,0,0,255,0,0,1,253,0,0,255,0,0,1,253,0,0,255,0,0,1,253,0,0,255,0,0,1,253,0,0,255,0,0,1,253,0,0,255,64,0,1,253,0,2,255,192,0,1,253,0,3,255,208,0,1,253,0,7,255,240,0,1,253,0,15,247,248,0,1,253,0,63,211,254,0,1,253,0,255,129,255,128,1,253,7,255,0,127,248,1,253,127,252,0,31,255,1,253,191,240,0,7,253,1,253,63,128,0,0,188,1,253,24,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,63,255,255,255,255,253,0,63,255,255,255,255,253,0,63,255,255,255,255,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253, + // 0xc5b4 어 + 180,197,28,35,245,34,2,253,0,0,0,0,0,0,85,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,11,253,0,0,0,254,0,127,255,208,0,0,254,2,255,255,244,0,0,254,7,255,175,252,0,0,254,15,244,2,254,0,0,254,31,224,0,255,0,0,254,63,192,0,127,128,0,254,63,128,0,63,192,0,254,127,64,0,47,192,0,254,127,64,0,47,192,0,254,127,0,0,31,255,255,254,191,0,0,31,255,255,254,191,0,0,31,255,255,254,127,0,0,31,208,1,254,127,64,0,47,192,0,254,63,64,0,47,192,0,254,63,128,0,63,192,0,254,63,192,0,63,128,0,254,31,208,0,191,0,0,254,15,240,1,255,0,0,254,11,253,7,253,0,0,254,3,255,255,248,0,0,254,0,255,255,224,0,0,254,0,47,255,64,0,0,254,0,0,80,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254, + // 0xc5c6 없 + 198,197,31,35,24,34,2,253,0,0,0,0,0,0,84,0,0,0,0,0,0,0,254,0,0,27,254,64,0,0,254,0,1,255,255,244,0,0,254,0,11,255,255,253,0,0,254,0,31,253,6,255,64,0,254,0,63,208,0,127,192,0,254,0,127,128,0,47,208,0,254,0,191,0,0,15,255,255,254,0,191,0,0,15,255,255,254,0,191,0,0,15,255,255,254,0,127,64,0,31,224,1,254,0,63,192,0,63,192,0,254,0,63,224,0,191,128,0,254,0,31,253,7,255,0,0,254,0,7,255,255,253,0,0,254,0,1,255,255,244,0,0,254,0,0,27,254,64,0,0,254,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,64,0,1,252,0,253,0,47,192,0,1,252,0,253,0,47,192,0,1,252,0,253,0,47,192,0,1,252,0,253,0,63,192,0,1,255,255,253,0,63,208,0,1,255,255,253,0,127,224,0,1,255,255,253,0,255,240,0,1,252,0,253,1,255,248,0,1,252,0,253,7,249,254,0,1,252,0,253,47,240,255,208,1,255,255,254,255,208,63,248,1,255,255,253,255,64,15,244,1,255,255,253,60,0,2,224,0,0,0,0,0,0,0,0, + // 0xc5d1 엑 + 209,197,28,35,245,34,2,253,0,0,0,0,0,0,21,0,0,0,0,10,144,127,0,0,0,0,15,224,127,0,191,248,0,15,224,127,3,255,255,128,15,224,127,15,255,255,208,15,224,127,47,224,31,244,15,224,127,127,128,3,248,15,224,127,191,0,2,252,15,224,127,254,0,1,255,255,224,127,254,0,0,255,255,224,127,254,0,0,255,255,224,127,191,0,1,252,15,224,127,191,0,3,252,15,224,127,63,192,7,244,15,224,127,47,244,47,240,15,224,127,15,255,255,208,15,224,127,3,255,255,64,15,224,127,0,127,248,0,15,224,127,0,0,0,0,15,224,127,0,0,0,0,15,224,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,255,0,31,255,255,255,255,255,0,31,255,255,255,255,255,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191, + // 0xc5d4 엔 + 212,197,29,35,24,34,2,253,0,0,0,0,0,0,21,0,0,0,0,0,15,224,127,0,0,0,0,0,15,224,127,0,0,111,228,0,15,224,127,0,2,255,255,0,15,224,127,0,15,255,255,192,15,224,127,0,31,249,127,240,15,224,127,0,63,192,11,244,15,224,127,0,127,64,3,252,15,224,127,0,191,0,1,252,15,224,127,0,254,0,0,255,255,224,127,0,254,0,0,255,255,224,127,0,254,0,0,255,255,224,127,0,191,0,1,252,15,224,127,0,127,64,3,252,15,224,127,0,63,192,11,244,15,224,127,0,31,249,127,240,15,224,127,0,15,255,255,192,15,224,127,0,2,255,255,0,15,224,127,0,0,111,228,0,15,224,127,0,0,0,0,0,15,224,127,0,0,0,0,0,15,224,127,0,0,0,0,0,15,224,127,0,0,15,240,0,15,224,127,0,0,15,240,0,15,224,127,0,0,15,240,0,0,0,127,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,255,255,255,255,255,192,0,15,255,255,255,255,255,192,0,15,255,255,255,255,255,192,0,0,0,0,0,0,0,0, + // 0xc5f4 열 + 244,197,29,34,16,34,2,254,0,0,0,0,0,0,169,0,0,0,0,0,0,1,254,0,0,31,255,128,0,1,254,0,1,255,255,252,0,1,254,0,11,255,255,255,255,255,254,0,31,248,2,255,255,255,254,0,63,192,0,63,255,255,254,0,127,64,0,31,224,1,254,0,191,0,0,15,224,1,254,0,191,0,0,15,224,1,254,0,191,0,0,15,224,1,254,0,127,64,0,31,255,255,254,0,63,192,0,63,255,255,254,0,31,248,2,255,255,255,254,0,11,255,255,253,0,1,254,0,1,255,255,244,0,1,254,0,0,47,255,128,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,254,0,0,15,255,255,255,255,254,0,0,15,255,255,255,255,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,15,255,255,255,255,254,0,0,15,255,255,255,255,254,0,0,15,255,255,255,255,254,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,255,255,255,255,255,128,0,15,255,255,255,255,255,128,0,15,255,255,255,255,255,128, + // 0xc608 예 + 8,198,29,35,24,34,2,253,0,0,0,0,0,0,21,0,0,0,0,0,10,144,63,64,0,0,0,0,15,224,63,64,0,6,64,0,15,224,63,64,0,191,248,0,15,224,63,64,3,255,254,0,15,224,63,64,11,255,255,64,15,224,63,64,15,240,127,192,15,224,63,64,47,192,31,208,15,224,63,64,63,128,15,255,255,224,63,64,127,64,11,255,255,224,63,64,127,0,7,255,255,224,63,64,191,0,3,244,15,224,63,64,191,0,3,244,15,224,63,64,190,0,3,244,15,224,63,64,254,0,3,248,15,224,63,64,190,0,3,244,15,224,63,64,191,0,3,244,15,224,63,64,191,0,3,244,15,224,63,64,127,0,7,255,255,224,63,64,127,64,11,255,255,224,63,64,63,128,15,255,255,224,63,64,47,192,31,208,15,224,63,64,15,240,127,192,15,224,63,64,11,255,255,64,15,224,63,64,3,255,254,0,15,224,63,64,0,191,248,0,15,224,63,64,0,6,64,0,15,224,63,64,0,0,0,0,15,224,63,64,0,0,0,0,15,224,63,64,0,0,0,0,15,224,63,64,0,0,0,0,15,224,63,64,0,0,0,0,15,224,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64, + // 0xc624 오 + 36,198,30,28,224,34,2,1,0,0,6,255,249,0,0,0,0,1,255,255,255,244,0,0,0,15,255,255,255,254,0,0,0,63,253,64,23,255,192,0,0,255,208,0,0,127,240,0,1,255,0,0,0,15,244,0,3,252,0,0,0,3,252,0,3,248,0,0,0,2,252,0,7,244,0,0,0,2,252,0,7,244,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,252,0,0,0,3,252,0,1,255,0,0,0,15,244,0,0,255,208,0,0,127,240,0,0,63,253,64,23,255,192,0,0,15,255,255,255,255,0,0,0,1,255,255,255,244,0,0,0,0,10,255,254,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240, + // 0xc628 온 + 40,198,30,33,8,34,2,253,0,0,27,255,254,64,0,0,0,7,255,255,255,253,0,0,0,47,255,255,255,255,128,0,0,255,249,0,6,255,224,0,1,255,64,0,0,31,244,0,3,253,0,0,0,7,248,0,3,252,0,0,0,3,252,0,3,253,0,0,0,7,248,0,1,255,0,0,0,31,244,0,0,255,249,0,6,255,240,0,0,47,255,255,255,255,128,0,0,7,255,255,255,253,0,0,0,0,26,255,250,64,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0xc644 완 + 68,198,31,35,24,34,2,253,0,0,0,0,0,5,80,0,0,0,0,0,0,15,240,0,0,6,190,64,0,15,240,0,0,127,255,248,0,15,240,0,2,255,255,255,64,15,240,0,7,254,0,191,192,15,240,0,15,240,0,31,224,15,240,0,15,224,0,11,240,15,240,0,31,208,0,7,240,15,240,0,31,208,0,11,240,15,240,0,15,224,0,15,240,15,240,0,15,244,0,31,224,15,240,0,3,254,69,255,192,15,255,248,1,255,255,255,0,15,255,248,0,63,255,248,0,15,255,248,0,1,255,64,0,15,240,0,0,0,255,0,0,15,240,0,0,0,255,0,0,15,240,0,0,0,255,106,255,79,240,0,255,255,255,255,255,79,240,0,255,255,255,255,255,79,240,0,255,255,250,165,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,85,0,0,0,15,240,0,0,191,0,0,0,15,240,0,0,191,0,0,0,11,240,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,255,255,255,255,252,0,0,191,255,255,255,255,252,0,0,191,255,255,255,255,252,0,0,0,0,0,0,0,0,0, + // 0xc6d0 원 + 208,198,29,35,24,34,2,253,0,0,0,0,0,0,84,0,0,0,0,0,0,0,254,0,0,6,191,164,0,0,254,0,0,127,255,255,64,0,254,0,1,255,255,255,208,0,254,0,3,254,0,31,240,0,254,0,11,244,0,7,248,0,254,0,11,240,0,3,248,0,254,0,11,240,0,3,248,0,254,0,7,248,0,7,244,0,254,0,3,254,64,111,240,0,254,0,1,255,255,255,208,0,254,0,0,47,255,254,0,0,254,0,0,1,174,144,0,0,254,0,0,0,0,0,0,0,254,0,0,0,1,85,175,192,254,0,255,255,255,255,255,208,254,0,255,255,255,255,255,208,254,0,255,255,255,254,149,0,254,0,0,0,63,192,0,0,254,0,0,0,63,192,0,0,254,0,0,0,63,192,63,255,254,0,0,0,63,192,63,255,254,0,0,0,63,192,42,171,254,0,0,85,63,192,0,0,254,0,0,255,63,192,0,0,254,0,0,255,0,0,0,0,169,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0, + // 0xc704 위 + 4,199,28,35,245,34,2,253,0,0,0,0,0,0,84,0,0,0,0,0,1,254,0,2,255,228,0,1,254,0,47,255,255,64,1,254,0,255,255,255,208,1,254,3,255,145,127,244,1,254,7,252,0,7,252,1,254,11,240,0,2,252,1,254,15,240,0,1,253,1,254,15,240,0,1,253,1,254,11,240,0,2,252,1,254,7,252,0,7,252,1,254,3,255,64,47,244,1,254,0,255,255,255,224,1,254,0,47,255,255,64,1,254,0,2,255,244,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,1,90,191,225,254,255,255,255,255,255,225,254,255,255,255,255,255,225,254,255,255,255,234,80,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,128,0,1,254,0,0,0,0,0,1,253, + // 0xc73c 으 + 60,199,30,28,224,34,2,1,0,0,11,255,250,0,0,0,0,1,255,255,255,244,0,0,0,11,255,255,255,254,0,0,0,63,254,64,27,255,192,0,0,191,208,0,0,127,224,0,1,255,0,0,0,15,244,0,3,252,0,0,0,7,248,0,3,252,0,0,0,3,252,0,3,244,0,0,0,2,252,0,7,244,0,0,0,1,252,0,3,248,0,0,0,2,252,0,3,252,0,0,0,3,252,0,2,253,0,0,0,7,248,0,1,255,0,0,0,31,240,0,0,191,224,0,0,191,224,0,0,47,254,80,91,255,128,0,0,11,255,255,255,254,0,0,0,0,191,255,255,224,0,0,0,0,6,255,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0, + // 0xc74c 음 + 76,199,30,34,16,34,2,253,0,0,26,255,250,64,0,0,0,7,255,255,255,249,0,0,0,47,255,255,255,255,128,0,0,255,249,0,6,255,224,0,1,255,64,0,0,31,244,0,3,253,0,0,0,7,248,0,3,252,0,0,0,3,252,0,3,252,0,0,0,7,248,0,1,255,0,0,0,31,244,0,0,255,249,0,6,255,240,0,0,47,255,255,255,255,128,0,0,7,255,255,255,253,0,0,0,0,27,255,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,253,0,0,0,7,244,0,2,252,0,0,0,7,244,0,2,252,0,0,0,7,244,0,2,252,0,0,0,7,244,0,2,252,0,0,0,7,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,0,0,0,0,0,0,0,0, + // 0xc774 이 + 116,199,27,35,245,34,3,253,0,0,0,0,0,1,80,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,27,249,0,0,7,244,0,191,255,192,0,7,244,3,255,255,240,0,7,244,11,254,111,252,0,7,244,31,240,3,253,0,7,244,63,192,0,255,0,7,244,63,192,0,191,64,7,244,127,64,0,63,128,7,244,191,0,0,63,192,7,244,255,0,0,47,192,7,244,255,0,0,47,192,7,244,254,0,0,47,192,7,244,254,0,0,47,192,7,244,255,0,0,47,192,7,244,255,0,0,47,192,7,244,191,0,0,63,192,7,244,191,0,0,63,128,7,244,127,128,0,127,64,7,244,63,192,0,255,0,7,244,47,224,1,254,0,7,244,15,248,11,252,0,7,244,7,255,255,244,0,7,244,1,255,255,208,0,7,244,0,47,255,0,0,7,244,0,1,80,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244,0,0,0,0,0,7,244, + // 0xc77c 일 + 124,199,29,34,16,34,2,254,0,0,0,0,0,0,84,0,0,0,0,0,0,1,253,0,0,31,255,128,0,1,253,0,1,255,255,248,0,1,253,0,7,255,255,255,0,1,253,0,31,249,1,255,192,1,253,0,63,208,0,63,208,1,253,0,63,128,0,15,224,1,253,0,127,64,0,15,240,1,253,0,127,64,0,11,240,1,253,0,127,64,0,15,240,1,253,0,63,128,0,15,224,1,253,0,63,208,0,63,208,1,253,0,31,249,1,255,192,1,253,0,7,255,255,255,0,1,253,0,1,255,255,248,0,1,253,0,0,27,255,128,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,253,0,0,31,255,255,255,255,253,0,0,31,255,255,255,255,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,31,255,255,255,255,253,0,0,31,255,255,255,255,253,0,0,31,255,255,255,255,253,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,255,255,255,255,255,64,0,31,255,255,255,255,255,64,0,31,255,255,255,255,255,64, + // 0xc77d 읽 + 125,199,28,35,245,34,2,253,0,0,0,0,0,0,84,0,0,0,0,0,1,253,0,27,254,64,0,1,253,0,255,255,248,0,1,253,7,255,255,255,0,1,253,15,253,6,255,128,1,253,47,224,0,63,192,1,253,63,192,0,31,224,1,253,127,64,0,15,240,1,253,127,64,0,15,240,1,253,127,64,0,15,240,1,253,127,64,0,15,240,1,253,63,192,0,31,224,1,253,47,224,0,63,208,1,253,15,253,6,255,128,1,253,7,255,255,255,0,1,253,0,191,255,244,0,1,253,0,27,255,128,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,0,0,0,255,255,252,127,255,253,0,255,255,252,127,255,253,0,255,255,252,127,255,253,0,0,2,252,0,1,253,0,0,2,252,0,1,253,0,0,2,252,0,1,253,0,255,255,252,0,1,253,0,255,255,252,0,1,253,0,255,170,168,0,1,253,0,254,0,0,0,1,253,0,254,0,1,64,1,253,0,255,255,255,208,1,253,0,255,255,255,208,1,253,0,255,255,250,64,1,253,0,0,0,0,0,0,84, + // 0xc785 입 + 133,199,28,35,245,34,2,253,0,0,0,0,0,0,84,0,0,0,0,0,1,253,0,11,255,128,0,1,253,0,191,255,248,0,1,253,7,255,255,255,0,1,253,15,253,70,255,192,1,253,47,224,0,63,208,1,253,63,192,0,15,240,1,253,127,128,0,15,240,1,253,127,64,0,11,240,1,253,127,64,0,11,240,1,253,127,128,0,15,240,1,253,63,192,0,15,240,1,253,47,224,0,63,208,1,253,15,253,70,255,192,1,253,7,255,255,255,0,1,253,0,255,255,248,0,1,253,0,27,255,128,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,0,0,0,26,128,0,0,0,168,0,31,208,0,0,1,253,0,31,208,0,0,1,253,0,31,208,0,0,1,253,0,31,255,255,255,255,253,0,31,255,255,255,255,253,0,31,255,255,255,255,253,0,31,208,0,0,1,253,0,31,208,0,0,1,253,0,31,208,0,0,1,253,0,31,208,0,0,1,253,0,31,255,255,255,255,253,0,31,255,255,255,255,253,0,31,255,255,255,255,253,0,0,0,0,0,0,0, + // 0xc790 자 + 144,199,32,35,24,34,1,253,0,0,0,0,0,1,84,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,47,255,255,255,254,3,248,0,47,255,255,255,254,3,248,0,47,255,255,255,254,3,248,0,0,0,127,128,0,3,248,0,0,0,63,128,0,3,248,0,0,0,63,128,0,3,248,0,0,0,63,128,0,3,248,0,0,0,127,128,0,3,248,0,0,0,127,192,0,3,248,0,0,0,191,192,0,3,248,0,0,0,255,192,0,3,255,255,0,0,255,224,0,3,255,255,0,1,255,240,0,3,255,255,0,3,255,244,0,3,252,0,0,7,247,252,0,3,248,0,0,15,241,254,0,3,248,0,0,47,208,255,64,3,248,0,0,127,192,127,208,3,248,0,1,255,64,47,244,3,248,0,7,254,0,15,254,3,248,0,47,252,0,3,255,131,248,0,127,240,0,0,255,3,248,0,63,192,0,0,45,3,248,0,14,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0, + // 0xc791 작 + 145,199,31,35,24,34,2,253,0,0,0,0,0,5,80,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,127,255,255,255,248,15,240,0,127,255,255,255,248,15,240,0,127,255,255,255,248,15,240,0,0,0,254,0,0,15,240,0,0,1,254,0,0,15,240,0,0,1,255,0,0,15,240,0,0,2,255,0,0,15,255,248,0,3,255,128,0,15,255,248,0,11,255,192,0,15,255,248,0,15,255,224,0,15,240,0,0,63,203,248,0,15,240,0,0,255,131,254,0,15,240,0,7,255,1,255,208,15,240,0,47,252,0,191,252,15,240,0,255,244,0,31,252,15,240,0,191,192,0,3,244,15,240,0,62,0,0,0,96,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,240,0,0,255,255,255,255,255,240,0,0,255,255,255,255,255,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,11,240,0, + // 0xc798 잘 + 152,199,31,35,24,34,2,253,0,0,0,0,0,10,160,0,0,0,0,0,0,15,240,0,127,255,255,255,248,15,240,0,127,255,255,255,248,15,240,0,127,255,255,255,248,15,240,0,0,1,254,0,0,15,240,0,0,1,254,0,0,15,240,0,0,2,255,0,0,15,240,0,0,3,255,0,0,15,255,248,0,3,255,128,0,15,255,248,0,11,255,192,0,15,255,248,0,31,239,240,0,15,240,0,0,127,203,253,0,15,240,0,1,255,67,255,128,15,240,0,11,254,0,255,248,15,240,0,255,252,0,63,252,15,240,0,255,224,0,7,248,15,240,0,191,64,0,0,112,15,240,0,36,0,0,0,0,5,80,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,240,0,0,191,255,255,255,255,240,0,0,191,255,255,255,255,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,106,170,170,170,175,240,0,0,191,255,255,255,255,240,0,0,191,255,255,255,255,240,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,255,255,255,255,252,0,0,191,255,255,255,255,252,0,0,191,255,255,255,255,252,0, + // 0xc7a5 장 + 165,199,31,35,24,34,2,253,0,0,0,0,0,5,80,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,127,255,255,255,248,15,240,0,127,255,255,255,248,15,240,0,127,255,255,255,248,15,240,0,0,1,254,0,0,15,240,0,0,1,254,0,0,15,240,0,0,1,255,0,0,15,240,0,0,2,255,0,0,15,255,248,0,3,255,64,0,15,255,248,0,7,255,192,0,15,255,248,0,15,255,224,0,15,240,0,0,31,223,244,0,15,240,0,0,127,199,253,0,15,240,0,1,255,66,255,128,15,240,0,11,254,0,191,248,15,240,0,191,252,0,47,252,15,240,0,255,224,0,7,244,15,240,0,127,64,0,0,96,15,240,0,36,0,0,0,0,15,240,0,0,0,0,0,0,0,0,0,0,0,26,255,254,64,0,0,0,2,255,255,255,248,0,0,0,15,255,255,255,255,64,0,0,63,249,0,6,255,208,0,0,191,192,0,0,47,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,11,244,0,0,255,0,0,0,15,240,0,0,191,192,0,0,47,240,0,0,63,249,0,6,255,208,0,0,15,255,255,255,255,64,0,0,2,255,255,255,248,0,0,0,0,26,255,254,64,0,0, + // 0xc7ac 재 + 172,199,29,35,24,34,2,253,0,0,0,0,0,0,42,64,0,0,0,0,31,208,63,128,0,0,0,0,31,208,63,128,0,0,0,0,31,208,63,128,191,255,255,254,31,208,63,128,191,255,255,254,31,208,63,128,191,255,255,254,31,208,63,128,0,11,240,0,31,208,63,128,0,11,240,0,31,208,63,128,0,11,240,0,31,208,63,128,0,15,240,0,31,208,63,128,0,15,244,0,31,208,63,128,0,15,244,0,31,208,63,128,0,15,244,0,31,208,63,128,0,15,248,0,31,255,255,128,0,31,252,0,31,255,255,128,0,47,253,0,31,255,255,128,0,63,254,0,31,208,63,128,0,127,191,0,31,208,63,128,0,255,63,192,31,208,63,128,1,253,47,208,31,208,63,128,3,252,15,240,31,208,63,128,11,248,11,253,31,208,63,128,47,240,3,255,159,208,63,128,255,208,0,255,95,208,63,128,255,128,0,62,31,208,63,128,126,0,0,8,31,208,63,128,36,0,0,0,31,208,63,128,0,0,0,0,31,208,63,128,0,0,0,0,31,208,63,128,0,0,0,0,31,208,63,128,0,0,0,0,31,208,63,128,0,0,0,0,31,208,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,64, + // 0xc800 저 + 0,200,28,35,245,34,2,253,0,0,0,0,0,0,85,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,63,255,255,255,252,0,254,63,255,255,255,252,0,254,63,255,255,255,252,0,254,0,0,255,0,0,0,254,0,0,255,0,0,0,254,0,0,255,0,0,0,254,0,0,255,0,0,0,254,0,0,255,0,0,0,254,0,0,255,0,0,1,254,0,1,255,64,63,255,254,0,2,255,128,63,255,254,0,3,255,192,63,255,254,0,3,255,192,0,0,254,0,11,255,224,0,0,254,0,15,231,240,0,0,254,0,47,195,252,0,0,254,0,127,130,254,0,0,254,0,255,0,255,64,0,254,3,254,0,127,208,0,254,15,252,0,47,248,0,254,127,240,0,11,255,0,254,255,208,0,3,254,0,254,191,64,0,0,188,0,254,60,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254, + // 0xc804 전 + 4,200,29,35,24,34,2,253,0,0,0,0,0,0,85,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,63,255,255,255,252,0,254,0,63,255,255,255,252,0,254,0,63,255,255,255,252,0,254,0,0,0,255,0,0,0,254,0,0,0,255,0,0,0,254,0,0,0,255,0,0,0,254,0,0,0,255,0,0,1,254,0,0,1,255,64,31,255,254,0,0,3,255,192,31,255,254,0,0,3,255,208,31,255,254,0,0,15,255,240,0,0,254,0,0,47,231,252,0,0,254,0,0,191,195,255,0,0,254,0,2,255,64,255,208,0,254,0,31,254,0,127,253,0,254,0,255,248,0,31,253,0,254,0,191,208,0,2,248,0,254,0,63,0,0,0,32,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,5,80,0,0,0,254,0,0,15,224,0,0,0,254,0,0,15,224,0,0,0,169,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,255,255,255,255,255,64,0,15,255,255,255,255,255,64,0,15,255,255,255,255,255,64,0,0,0,0,0,0,0,0, + // 0xc815 정 + 21,200,28,35,245,34,2,253,0,0,0,0,0,0,84,0,0,0,0,0,0,254,0,0,0,0,0,0,254,63,255,255,255,252,0,254,63,255,255,255,252,0,254,63,255,255,255,252,0,254,0,0,255,0,0,0,254,0,0,255,0,0,0,254,0,0,255,0,0,0,254,0,1,255,64,15,255,254,0,3,255,192,15,255,254,0,3,255,208,15,255,254,0,15,255,240,0,1,254,0,47,231,252,0,0,254,0,191,194,255,0,0,254,1,255,64,255,208,0,254,31,254,0,63,253,0,254,191,252,0,15,253,0,254,191,224,0,2,248,0,254,63,64,0,0,32,0,254,24,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,1,191,255,144,0,0,0,127,255,255,255,64,0,3,255,255,255,255,224,0,15,254,64,0,111,248,0,31,240,0,0,7,253,0,47,208,0,0,1,254,0,63,192,0,0,0,254,0,47,208,0,0,1,254,0,31,240,0,0,7,253,0,15,254,64,0,127,248,0,3,255,255,255,255,224,0,0,127,255,255,255,64,0,0,1,191,255,144,0, + // 0xc81c 제 + 28,200,30,35,24,34,1,253,0,0,0,0,0,0,10,128,0,0,0,0,3,248,15,208,0,0,0,0,3,248,15,208,0,0,0,0,3,248,15,208,47,255,255,255,131,248,15,208,47,255,255,255,131,248,15,208,47,255,255,255,131,248,15,208,0,2,252,0,3,248,15,208,0,2,252,0,3,248,15,208,0,2,252,0,3,248,15,208,0,2,252,0,3,248,15,208,0,3,252,0,3,248,15,208,0,3,252,0,3,248,15,208,0,3,253,15,255,248,15,208,0,3,253,15,255,248,15,208,0,7,254,15,255,248,15,208,0,11,255,0,3,248,15,208,0,15,255,64,3,248,15,208,0,31,255,128,3,248,15,208,0,47,223,192,3,248,15,208,0,127,79,240,3,248,15,208,0,255,11,244,3,248,15,208,1,254,3,253,3,248,15,208,7,252,1,255,67,248,15,208,31,244,0,191,211,248,15,208,127,224,0,63,195,248,15,208,63,192,0,11,67,248,15,208,14,0,0,0,3,248,15,208,0,0,0,0,3,248,15,208,0,0,0,0,3,248,15,208,0,0,0,0,3,248,15,208,0,0,0,0,3,248,15,208,0,0,0,0,3,248,15,208,0,0,0,0,0,0,15,208,0,0,0,0,0,0,15,208, + // 0xc8fd 죽 + 253,200,30,33,8,34,2,253,7,255,255,255,255,255,253,0,7,255,255,255,255,255,253,0,7,255,255,255,255,255,253,0,0,0,0,255,224,0,0,0,0,0,0,255,240,0,0,0,0,0,3,255,248,0,0,0,0,0,15,250,254,0,0,0,0,0,127,240,255,208,0,0,0,7,255,192,127,249,0,0,6,255,255,0,15,255,249,0,31,255,248,0,2,255,255,64,15,255,64,0,0,47,255,0,11,148,0,0,0,1,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,3,255,255,255,255,255,244,0,3,255,255,255,255,255,244,0,3,255,255,255,255,255,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0, + // 0xc900 준 + 0,201,30,33,8,34,2,253,7,255,255,255,255,255,253,0,7,255,255,255,255,255,253,0,7,255,255,255,255,255,253,0,0,0,0,191,224,0,0,0,0,0,0,255,240,0,0,0,0,0,1,255,244,0,0,0,0,0,7,255,252,0,0,0,0,0,31,241,255,64,0,0,0,0,191,224,191,224,0,0,0,27,255,128,47,254,64,0,11,255,253,0,7,255,254,0,15,255,224,0,1,255,255,0,11,254,0,0,0,11,254,0,6,144,0,0,0,0,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,47,208,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,1,253,0,47,192,0,0,0,1,253,0,47,192,0,0,0,1,253,0,47,192,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0, + // 0xc911 중 + 17,201,30,33,8,34,2,253,7,255,255,255,255,255,253,0,7,255,255,255,255,255,253,0,7,255,255,255,255,255,253,0,0,0,0,255,224,0,0,0,0,0,0,255,240,0,0,0,0,0,3,255,252,0,0,0,0,0,31,246,255,0,0,0,0,1,191,224,191,228,0,0,0,111,255,128,47,255,80,0,31,255,253,0,7,255,255,64,15,255,208,0,0,127,255,0,11,249,0,0,0,6,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,27,255,254,64,0,0,0,7,255,255,255,253,0,0,0,63,255,255,255,255,128,0,0,255,228,0,1,191,224,0,1,255,0,0,0,31,240,0,2,253,0,0,0,11,244,0,2,253,0,0,0,11,244,0,1,255,64,0,0,31,240,0,0,255,228,0,6,255,224,0,0,63,255,255,255,255,128,0,0,7,255,255,255,249,0,0,0,0,26,255,250,64,0,0, + // 0xc990 즐 + 144,201,30,33,8,34,2,253,7,255,255,255,255,255,253,0,7,255,255,255,255,255,253,0,7,255,255,255,255,255,253,0,0,0,0,191,224,0,0,0,0,0,1,255,244,0,0,0,0,0,7,255,253,0,0,0,0,0,127,240,255,208,0,0,0,95,255,192,63,255,80,0,31,255,253,0,7,255,255,64,15,255,208,0,0,127,255,0,11,164,0,0,0,1,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,255,170,170,170,170,160,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,252,0, + // 0xc9c0 지 + 192,201,28,35,245,34,2,253,0,0,0,0,0,0,84,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,63,255,255,255,254,1,253,63,255,255,255,254,1,253,63,255,255,255,254,1,253,0,0,191,64,0,1,253,0,0,191,0,0,1,253,0,0,191,0,0,1,253,0,0,191,0,0,1,253,0,0,191,64,0,1,253,0,0,255,64,0,1,253,0,0,255,128,0,1,253,0,0,255,192,0,1,253,0,1,255,192,0,1,253,0,3,255,208,0,1,253,0,3,255,240,0,1,253,0,11,247,244,0,1,253,0,31,227,253,0,1,253,0,63,193,255,0,1,253,0,255,128,191,192,1,253,2,255,0,63,240,1,253,11,253,0,31,253,1,253,127,248,0,7,255,129,253,255,224,0,1,255,1,253,127,128,0,0,45,1,253,45,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253, + // 0xcc98 처 + 152,204,28,35,245,34,2,253,0,0,0,0,0,0,169,0,0,255,0,0,0,254,0,0,255,0,0,0,254,0,0,255,0,0,0,254,0,0,255,0,0,0,254,0,0,255,0,0,0,254,63,255,255,255,252,0,254,63,255,255,255,252,0,254,63,255,255,255,252,0,254,0,0,255,0,0,0,254,0,0,255,0,0,0,254,0,0,255,0,0,0,254,0,0,255,0,0,0,254,0,0,255,0,0,0,254,0,1,255,0,63,255,254,0,2,255,64,63,255,254,0,3,255,192,63,255,254,0,3,255,192,0,1,254,0,11,255,224,0,0,254,0,15,215,244,0,0,254,0,63,195,252,0,0,254,0,191,129,255,0,0,254,1,255,0,255,192,0,254,11,253,0,63,240,0,254,47,248,0,15,254,0,254,255,224,0,3,254,0,254,127,128,0,0,252,0,254,45,0,0,0,16,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254, + // 0xcd08 초 + 8,205,30,30,240,34,2,1,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,7,255,255,255,255,255,253,0,7,255,255,255,255,255,253,0,7,255,255,255,255,255,253,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,191,224,0,0,0,0,0,0,255,240,0,0,0,0,0,2,255,248,0,0,0,0,0,11,255,254,0,0,0,0,0,47,240,255,128,0,0,0,1,255,208,127,244,0,0,0,47,255,64,31,255,64,0,27,255,252,0,3,255,254,64,31,255,208,0,0,127,255,64,15,253,0,21,64,7,255,0,6,64,0,63,192,0,25,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240, + // 0xcd95 축 + 149,205,30,35,24,34,2,253,0,0,0,21,64,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,3,255,255,255,255,255,252,0,3,255,255,255,255,255,252,0,3,255,255,255,255,255,252,0,0,0,0,127,208,0,0,0,0,0,0,255,224,0,0,0,0,0,2,255,244,0,0,0,0,0,11,255,254,0,0,0,0,0,191,240,255,208,0,0,0,111,255,192,63,254,80,0,31,255,253,0,11,255,255,64,15,255,208,0,0,191,255,0,11,164,0,0,0,1,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,3,255,255,255,255,255,244,0,3,255,255,255,255,255,244,0,3,255,255,255,255,255,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0, + // 0xcd9c 출 + 156,205,30,35,24,34,2,253,0,0,0,42,128,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,3,255,255,255,255,255,252,0,3,255,255,255,255,255,252,0,3,255,255,255,255,255,252,0,0,0,0,127,208,0,0,0,0,0,0,255,240,0,0,0,0,0,7,255,252,0,0,0,0,0,111,246,255,144,0,0,0,91,255,208,191,254,80,0,47,255,254,0,31,255,255,64,15,255,228,0,1,191,255,0,15,164,0,0,0,1,174,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,1,255,255,255,255,255,240,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,1,170,170,170,170,175,244,0,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,252,0, + // 0xcda4 춤 + 164,205,30,35,24,34,2,253,0,0,0,21,64,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,3,255,255,255,255,255,252,0,3,255,255,255,255,255,252,0,3,255,255,255,255,255,252,0,0,0,0,127,208,0,0,0,0,0,0,255,224,0,0,0,0,0,2,255,244,0,0,0,0,0,11,255,254,0,0,0,0,0,191,240,255,224,0,0,0,111,255,192,63,255,144,0,31,255,253,0,7,255,255,64,15,255,144,0,0,111,255,0,10,148,0,0,0,1,109,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,252,0,0,0,7,244,0,2,252,0,0,0,7,244,0,2,252,0,0,0,7,244,0,2,252,0,0,0,7,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,0,0,0,0,0,0,0,0, + // 0xcde8 취 + 232,205,28,35,245,34,2,253,0,0,21,64,0,0,169,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,15,255,255,255,255,1,254,15,255,255,255,255,1,254,15,255,255,255,255,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,191,224,0,1,254,0,0,255,240,0,1,254,0,3,255,252,0,1,254,0,31,250,255,128,1,254,0,191,240,255,248,1,254,31,255,192,47,255,65,254,31,254,0,7,255,1,254,15,244,0,0,125,1,254,6,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,85,90,191,225,254,255,255,255,255,255,225,254,255,255,255,255,255,225,254,191,255,255,233,64,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,63,192,0,1,254,0,0,0,0,0,1,253, + // 0xce58 치 + 88,206,28,35,245,34,2,253,0,0,0,0,0,0,168,0,0,127,64,0,1,253,0,0,127,64,0,1,253,0,0,127,64,0,1,253,0,0,127,64,0,1,253,0,0,127,64,0,1,253,47,255,255,255,254,1,253,47,255,255,255,254,1,253,47,255,255,255,254,1,253,0,0,127,128,0,1,253,0,0,127,64,0,1,253,0,0,127,128,0,1,253,0,0,127,128,0,1,253,0,0,191,128,0,1,253,0,0,191,192,0,1,253,0,0,255,192,0,1,253,0,1,255,224,0,1,253,0,2,255,240,0,1,253,0,3,251,248,0,1,253,0,11,242,252,0,1,253,0,31,224,255,0,1,253,0,63,192,191,192,1,253,0,255,64,63,224,1,253,3,255,0,31,252,1,253,47,252,0,7,255,129,253,127,240,0,1,255,65,253,63,192,0,0,62,1,253,14,0,0,0,4,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253, + // 0xce68 침 + 104,206,28,35,245,34,2,253,0,0,127,64,0,0,168,0,0,127,64,0,1,253,0,0,127,64,0,1,253,0,0,127,64,0,1,253,47,255,255,255,254,1,253,47,255,255,255,254,1,253,47,255,255,255,254,1,253,0,0,191,64,0,1,253,0,0,191,64,0,1,253,0,0,255,128,0,1,253,0,0,255,192,0,1,253,0,2,255,224,0,1,253,0,3,255,244,0,1,253,0,15,243,253,0,1,253,0,127,209,255,128,1,253,1,255,192,191,248,1,253,47,255,0,47,255,65,253,127,248,0,7,255,1,253,63,208,0,0,125,1,253,13,0,0,0,0,1,253,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,31,255,255,255,255,253,0,31,255,255,255,255,253,0,31,255,255,255,255,253,0,31,208,0,0,1,253,0,31,208,0,0,1,253,0,31,208,0,0,1,253,0,31,208,0,0,1,253,0,31,208,0,0,1,253,0,31,208,0,0,1,253,0,31,255,255,255,255,253,0,31,255,255,255,255,253,0,31,255,255,255,255,253,0,0,0,0,0,0,0, + // 0xce74 카 + 116,206,31,35,24,34,2,253,0,0,0,0,0,5,80,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,15,255,255,255,192,15,224,0,15,255,255,255,192,15,224,0,15,255,255,255,192,15,224,0,0,0,0,63,192,15,224,0,0,0,0,63,192,15,224,0,0,0,0,63,128,15,224,0,0,0,0,63,128,15,224,0,0,0,0,127,64,15,224,0,0,0,85,255,0,15,224,0,191,255,255,255,0,15,224,0,191,255,255,254,0,15,255,252,127,255,235,253,0,15,255,252,21,0,7,252,0,15,255,252,0,0,15,244,0,15,240,0,0,0,31,240,0,15,224,0,0,0,127,208,0,15,224,0,0,0,255,128,0,15,224,0,0,3,255,0,0,15,224,0,0,31,252,0,0,15,224,0,0,127,240,0,0,15,224,0,3,255,192,0,0,15,224,0,47,255,0,0,0,15,224,0,255,248,0,0,0,15,224,0,63,208,0,0,0,15,224,0,46,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0, + // 0xcf1c 켜 + 28,207,28,35,245,34,2,253,0,0,0,0,0,0,85,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,31,255,255,255,192,1,254,31,255,255,255,128,1,254,31,255,255,255,128,1,254,0,0,0,63,128,1,254,0,0,0,63,128,1,254,0,0,0,127,64,1,254,0,0,0,127,255,255,254,0,0,0,191,255,255,254,0,0,85,255,255,255,254,255,255,255,254,0,1,254,255,255,255,252,0,1,254,191,255,235,252,0,1,254,85,0,11,244,0,1,254,0,0,15,240,0,1,254,0,0,63,224,0,1,254,0,0,191,194,255,255,254,0,2,255,66,255,255,254,0,7,254,2,255,255,254,0,47,248,0,0,1,254,0,191,240,0,0,1,254,7,255,128,0,0,1,254,47,254,0,0,0,1,254,255,244,0,0,0,1,254,127,192,0,0,0,1,254,45,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,0,253, + // 0xd0d1 탑 + 209,208,30,35,24,34,3,253,0,0,0,0,0,42,128,0,0,0,0,0,0,63,192,0,191,255,255,254,0,63,192,0,191,255,255,254,0,63,192,0,191,255,255,254,0,63,192,0,191,0,0,0,0,63,192,0,191,0,0,0,0,63,192,0,191,0,0,0,0,63,192,0,191,0,0,0,0,63,255,224,191,255,255,252,0,63,255,224,191,255,255,252,0,63,255,224,191,255,255,252,0,63,192,0,191,0,0,0,0,63,192,0,191,0,0,0,0,63,192,0,191,0,0,0,0,63,192,0,191,0,1,107,240,63,192,0,191,255,255,255,240,63,192,0,191,255,255,255,240,63,192,0,191,255,255,165,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,0,0,168,0,0,0,26,128,0,1,253,0,0,0,63,192,0,1,253,0,0,0,63,192,0,1,253,0,0,0,63,192,0,1,255,255,255,255,255,192,0,1,255,255,255,255,255,192,0,1,255,255,255,255,255,192,0,1,253,0,0,0,63,192,0,1,253,0,0,0,63,192,0,1,253,0,0,0,63,192,0,1,255,255,255,255,255,192,0,1,255,255,255,255,255,192,0,1,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0, + // 0xd130 터 + 48,209,27,35,245,34,3,253,0,0,0,0,0,1,80,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,191,255,255,255,0,3,248,191,255,255,255,0,3,248,191,255,255,255,0,3,248,191,0,0,0,0,3,248,191,0,0,0,0,3,248,191,0,0,0,0,3,248,191,0,0,0,0,3,248,191,0,0,0,0,3,248,191,0,0,0,0,3,248,191,255,255,244,191,255,248,191,255,255,244,191,255,248,191,255,255,244,191,255,248,191,0,0,0,0,7,248,191,0,0,0,0,3,248,191,0,0,0,0,3,248,191,0,0,0,0,3,248,191,0,0,0,0,3,248,191,0,0,0,0,3,248,191,0,0,0,0,3,248,191,64,5,107,224,3,248,191,255,255,255,240,3,248,191,255,255,255,240,3,248,191,255,255,165,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248,0,0,0,0,0,3,248, + // 0xd14c 테 + 76,209,28,35,245,34,3,253,0,0,0,0,0,0,84,0,0,0,0,42,64,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,255,255,255,64,63,128,253,255,255,255,64,63,128,253,255,255,255,64,63,128,253,254,0,0,0,63,128,253,254,0,0,0,63,128,253,254,0,0,0,63,128,253,254,0,0,0,63,128,253,254,0,0,0,63,128,253,254,0,0,127,255,128,253,255,255,252,127,255,128,253,255,255,252,127,255,128,253,255,255,252,0,63,128,253,254,0,0,0,63,128,253,254,0,0,0,63,128,253,254,0,0,0,63,128,253,254,0,0,0,63,128,253,254,0,0,0,63,128,253,254,0,0,0,63,128,253,254,0,86,176,63,128,253,255,255,255,240,63,128,253,255,255,255,240,63,128,253,255,255,250,80,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,63,128,253,0,0,0,0,21,0,253,0,0,0,0,0,0,253, + // 0xd1a0 토 + 160,209,30,28,224,34,2,1,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,255,255,255,255,255,244,0,1,254,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,224,0,1,255,255,255,255,255,224,0,1,255,255,255,255,255,224,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240, + // 0xd2b8 트 + 184,210,30,28,224,34,2,1,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,1,255,255,255,255,255,248,0,1,254,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240, + // 0xd39c 펜 + 156,211,30,35,24,34,1,253,0,0,0,0,0,0,5,64,0,0,0,0,1,168,31,208,0,0,0,0,2,252,31,208,0,0,0,0,2,252,31,208,47,255,255,255,130,252,31,208,47,255,255,255,130,252,31,208,47,255,255,255,130,252,31,208,1,252,7,240,2,252,31,208,1,252,7,240,2,252,31,208,1,252,7,240,2,252,31,208,1,252,7,241,255,252,31,208,1,252,7,241,255,252,31,208,1,252,7,241,255,252,31,208,1,252,7,240,2,252,31,208,1,252,7,240,2,252,31,208,1,252,7,240,2,252,31,208,1,252,7,240,2,252,31,208,1,253,27,250,210,252,31,208,127,255,255,255,210,252,31,208,63,255,255,255,210,252,31,208,63,255,250,164,2,252,31,208,0,0,0,0,2,252,31,208,0,0,0,0,2,252,31,208,0,1,168,0,2,252,31,208,0,2,252,0,2,252,31,208,0,2,252,0,1,168,31,208,0,2,252,0,0,0,5,64,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,2,255,255,255,255,255,240,0,0,0,0,0,0,0,0, + // 0xd504 프 + 4,213,30,27,216,34,2,1,11,255,255,255,255,255,253,0,11,255,255,255,255,255,253,0,11,255,255,255,255,255,253,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,0,2,252,0,3,248,0,0,11,255,255,255,255,255,253,0,11,255,255,255,255,255,253,0,11,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240, + // 0xd558 하 + 88,213,32,35,24,34,1,253,0,0,0,0,0,1,84,0,0,0,42,64,0,3,252,0,0,0,127,64,0,3,252,0,0,0,127,64,0,3,252,0,0,0,127,64,0,3,252,0,0,0,127,128,0,3,252,0,127,255,255,255,255,67,252,0,127,255,255,255,255,67,252,0,127,255,255,255,255,67,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,2,255,224,0,3,252,0,0,31,255,254,0,3,252,0,0,191,255,255,192,3,255,255,2,255,64,127,224,3,255,255,3,252,0,15,244,3,255,255,7,244,0,3,248,3,252,0,11,240,0,3,252,3,252,0,11,240,0,3,252,3,252,0,11,240,0,3,252,3,252,0,7,248,0,3,248,3,252,0,3,252,0,15,244,3,252,0,2,255,128,127,224,3,252,0,0,191,255,255,192,3,252,0,0,47,255,254,0,3,252,0,0,2,255,224,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,248,0, + // 0xd569 합 + 105,213,31,35,24,34,2,253,0,0,169,0,0,0,0,0,0,0,254,0,0,15,240,0,0,0,254,0,0,15,240,0,0,0,254,0,0,15,240,0,255,255,255,255,254,15,240,0,255,255,255,255,254,15,240,0,255,255,255,255,254,15,240,0,0,0,0,0,0,15,240,0,0,6,186,64,0,15,240,0,0,127,255,249,0,15,255,248,3,255,255,255,64,15,255,248,11,253,0,191,192,15,255,248,15,240,0,31,224,15,240,0,31,208,0,15,240,15,240,0,31,208,0,15,240,15,240,0,15,240,0,31,224,15,240,0,11,248,0,127,192,15,240,0,3,255,255,255,128,15,240,0,0,191,255,253,0,15,240,0,0,10,255,144,0,15,240,0,0,0,0,0,0,5,80,0,0,0,0,0,0,0,0,0,0,127,64,0,0,15,240,0,0,127,64,0,0,15,240,0,0,127,64,0,0,15,240,0,0,127,255,255,255,255,240,0,0,127,255,255,255,255,240,0,0,127,255,255,255,255,240,0,0,127,64,0,0,15,240,0,0,127,64,0,0,15,240,0,0,127,64,0,0,15,240,0,0,127,255,255,255,255,240,0,0,127,255,255,255,255,240,0,0,127,255,255,255,255,240,0,0,0,0,0,0,0,0,0, + // 0xd648 홈 + 72,214,30,34,16,34,2,254,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,47,255,255,255,255,255,255,64,47,255,255,255,255,255,255,64,47,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,5,170,165,0,0,0,0,2,255,255,255,248,0,0,0,47,255,255,255,255,128,0,0,191,228,0,1,191,208,0,0,255,64,0,0,31,240,0,0,255,0,0,0,31,240,0,0,191,208,0,0,127,224,0,0,63,255,170,175,255,192,0,0,11,255,255,255,254,0,0,0,0,111,255,254,144,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,252,0,0,0,7,244,0,2,252,0,0,0,7,244,0,2,252,0,0,0,7,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0,2,255,255,255,255,255,244,0, + // 0xd654 화 + 84,214,32,34,16,34,1,253,0,0,63,192,0,3,252,0,0,0,63,192,0,3,252,0,0,0,63,192,0,3,252,0,0,0,63,192,0,3,252,0,63,255,255,255,255,195,252,0,63,255,255,255,255,195,252,0,63,255,255,255,255,195,252,0,0,0,0,0,0,3,252,0,0,1,175,164,0,3,252,0,0,31,255,255,64,3,252,0,0,127,255,255,208,3,252,0,0,255,128,47,240,3,252,0,2,253,0,7,248,3,252,0,3,252,0,3,252,3,252,0,3,248,0,2,252,3,255,254,3,252,0,2,252,3,255,254,2,252,0,3,248,3,255,254,0,255,64,31,244,3,252,0,0,191,255,255,224,3,252,0,0,31,255,255,128,3,252,0,0,2,255,248,0,3,252,0,0,0,63,192,0,3,252,0,0,0,63,192,0,3,252,0,0,0,63,192,0,3,252,0,0,0,63,218,191,211,252,0,127,255,255,255,255,211,252,0,127,255,255,255,255,211,252,0,63,255,255,169,64,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0, + // 0xd788 히 + 136,215,28,35,245,34,2,253,0,0,0,0,0,0,84,0,0,127,64,0,1,253,0,0,127,64,0,1,253,0,0,127,64,0,1,253,0,0,127,64,0,1,253,0,0,127,128,0,1,253,127,255,255,255,255,129,253,127,255,255,255,255,129,253,127,255,255,255,255,129,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,2,255,224,0,1,253,0,47,255,254,0,1,253,0,255,255,255,192,1,253,2,255,64,127,240,1,253,3,252,0,15,244,1,253,11,244,0,3,248,1,253,11,240,0,3,252,1,253,15,240,0,2,252,1,253,11,240,0,3,252,1,253,11,244,0,3,248,1,253,3,252,0,15,244,1,253,2,255,64,127,240,1,253,0,255,255,255,192,1,253,0,47,255,254,0,1,253,0,2,255,228,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Latin_Extended_A_27.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Latin_Extended_A_27.cpp new file mode 100644 index 0000000000..16b5e7a8f9 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Latin_Extended_A_27.cpp @@ -0,0 +1,288 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Latin Extended-A 37pt, capital 'A' height: 27px, width: 100%, range: 0x0100-0x017f +extern const uint8_t NotoSans_Medium_Latin_Extended_A_27[20794] = { + 130,27,0,1,127,1,35,247, // unifont_t + // 0x0100 Ā + 24,32,192,24,0,0,0,1,85,85,80,0,0,11,255,255,224,0,0,11,255,255,224,0,0,6,170,170,144,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x0101 ā + 18,27,135,21,1,255,0,85,85,84,0,0,255,255,253,0,0,255,255,253,0,0,170,170,168,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x0102 Ă + 24,34,204,24,0,0,0,10,0,0,160,0,0,15,128,2,240,0,0,11,249,111,224,0,0,3,255,255,192,0,0,0,255,254,0,0,0,0,6,144,0,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x0103 ă + 18,29,145,21,1,255,1,160,0,26,0,1,240,0,62,0,0,254,86,252,0,0,127,255,248,0,0,31,255,208,0,0,1,169,0,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x0104 Ą + 24,36,216,24,0,247,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255,0,0,0,0,1,248,0,0,0,0,3,224,0,0,0,0,15,192,0,0,0,0,31,128,0,0,0,0,31,128,0,0,0,0,31,209,0,0,0,0,15,255,0,0,0,0,7,255,0,0,0,0,0,84, + // 0x0105 ą + 18,30,150,21,1,247,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,15,208,0,5,64,15,128,0,0,0,63,0,0,0,0,188,0,0,0,0,248,0,0,0,1,248,0,0,0,0,253,16,0,0,0,255,240,0,0,0,63,240,0,0,0,1,64, + // 0x0106 Ć + 20,36,180,23,2,255,0,0,0,5,80,0,0,0,63,240,0,0,0,191,192,0,0,0,255,0,0,0,3,252,0,0,0,11,224,0,0,0,10,64,0,0,0,0,0,0,0,0,26,234,64,0,7,255,255,253,0,47,255,255,255,0,255,255,175,253,3,255,208,0,108,11,254,0,0,0,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,127,192,0,0,0,127,192,0,0,0,191,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,128,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,208,0,0,0,47,240,0,0,0,15,248,0,0,0,11,254,0,0,0,3,255,228,1,188,0,255,255,255,252,0,47,255,255,252,0,2,255,255,244,0,0,5,84,0, + // 0x0107 ć + 15,30,120,18,2,255,0,0,5,84,0,0,31,244,0,0,63,208,0,0,191,64,0,1,253,0,0,3,244,0,0,6,128,0,0,0,0,0,0,0,84,0,0,47,255,228,2,255,255,248,11,255,255,244,31,253,1,176,63,224,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,192,0,0,63,208,0,0,47,248,0,120,15,255,255,248,2,255,255,248,0,127,255,224,0,1,84,0, + // 0x0108 Ĉ + 20,36,180,23,2,255,0,0,5,80,0,0,0,47,248,0,0,0,127,253,0,0,1,254,191,64,0,3,248,47,192,0,15,208,7,240,0,26,0,0,164,0,0,0,0,0,0,0,26,234,64,0,7,255,255,253,0,47,255,255,255,0,255,255,175,253,3,255,208,0,108,11,254,0,0,0,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,127,192,0,0,0,127,192,0,0,0,191,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,128,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,208,0,0,0,47,240,0,0,0,15,248,0,0,0,11,254,0,0,0,3,255,228,1,188,0,255,255,255,252,0,47,255,255,252,0,2,255,255,244,0,0,5,84,0, + // 0x0109 ĉ + 15,30,120,18,2,255,0,5,80,0,0,15,252,0,0,63,255,0,0,255,191,192,2,252,31,224,11,240,3,248,10,64,0,104,0,0,0,0,0,0,84,0,0,47,255,228,2,255,255,248,11,255,255,244,31,253,1,176,63,224,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,192,0,0,63,208,0,0,47,248,0,120,15,255,255,248,2,255,255,248,0,127,255,224,0,1,84,0, + // 0x010a Ċ + 20,35,175,23,2,255,0,0,1,64,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,7,208,0,0,0,0,0,0,0,0,0,0,0,0,0,26,234,64,0,7,255,255,253,0,47,255,255,255,0,255,255,175,253,3,255,208,0,108,11,254,0,0,0,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,127,192,0,0,0,127,192,0,0,0,191,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,128,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,208,0,0,0,47,240,0,0,0,15,248,0,0,0,11,254,0,0,0,3,255,228,1,188,0,255,255,255,252,0,47,255,255,252,0,2,255,255,244,0,0,5,84,0, + // 0x010b ċ + 15,29,116,18,2,255,0,1,80,0,0,7,244,0,0,11,248,0,0,11,248,0,0,2,240,0,0,0,0,0,0,0,0,0,0,0,84,0,0,47,255,228,2,255,255,248,11,255,255,244,31,253,1,176,63,224,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,192,0,0,63,208,0,0,47,248,0,120,15,255,255,248,2,255,255,248,0,127,255,224,0,1,84,0, + // 0x010c Č + 20,36,180,23,2,255,0,5,0,0,80,0,31,192,3,244,0,7,244,31,208,0,2,253,191,128,0,0,191,254,0,0,0,63,252,0,0,0,10,160,0,0,0,0,0,0,0,0,26,234,64,0,7,255,255,253,0,47,255,255,255,0,255,255,175,253,3,255,208,0,108,11,254,0,0,0,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,127,192,0,0,0,127,192,0,0,0,191,128,0,0,0,191,64,0,0,0,255,64,0,0,0,255,64,0,0,0,191,128,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,63,208,0,0,0,47,240,0,0,0,15,248,0,0,0,11,254,0,0,0,3,255,228,1,188,0,255,255,255,252,0,47,255,255,252,0,2,255,255,244,0,0,5,84,0, + // 0x010d č + 15,30,120,18,2,255,5,0,0,20,15,224,2,252,3,252,15,240,0,255,63,192,0,63,255,0,0,31,253,0,0,6,164,0,0,0,0,0,0,0,84,0,0,47,255,228,2,255,255,248,11,255,255,244,31,253,1,176,63,224,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,64,0,0,127,192,0,0,63,208,0,0,47,248,0,120,15,255,255,248,2,255,255,248,0,127,255,224,0,1,84,0, + // 0x010e Ď + 22,35,210,27,3,0,0,80,0,5,64,0,0,254,0,47,192,0,0,63,128,255,0,0,0,15,247,252,0,0,0,3,255,240,0,0,0,1,255,208,0,0,0,0,170,64,0,0,0,0,0,0,0,0,21,85,84,0,0,0,127,255,255,244,0,0,127,255,255,255,64,0,127,255,255,255,224,0,127,128,1,191,252,0,127,128,0,11,254,0,127,128,0,2,255,64,127,128,0,0,255,192,127,128,0,0,127,192,127,128,0,0,63,208,127,128,0,0,47,224,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,47,224,127,128,0,0,63,208,127,128,0,0,63,192,127,128,0,0,191,192,127,128,0,1,255,64,127,128,0,7,255,0,127,128,0,47,252,0,127,149,91,255,244,0,127,255,255,255,192,0,127,255,255,253,0,0,127,255,254,64,0,0, + // 0x010f ď + 24,29,174,23,2,255,0,0,0,15,240,191,0,0,0,15,240,254,0,0,0,15,240,253,0,0,0,15,240,252,0,0,0,15,242,240,0,0,0,15,242,224,0,0,0,15,240,0,0,1,64,15,240,0,0,191,254,15,240,0,3,255,255,207,240,0,15,255,255,255,240,0,47,248,1,255,240,0,63,208,0,127,240,0,127,192,0,47,240,0,191,64,0,31,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,191,64,0,15,240,0,191,128,0,47,240,0,63,208,0,63,240,0,47,244,1,255,240,0,15,255,255,255,240,0,3,255,255,203,240,0,0,191,254,7,240,0,0,1,64,0,0,0, + // 0x0110 Đ + 24,27,162,27,1,0,1,85,85,64,0,0,7,255,255,255,64,0,7,255,255,255,244,0,7,255,255,255,254,0,7,248,0,27,255,192,7,248,0,0,191,224,7,248,0,0,47,244,7,248,0,0,15,252,7,248,0,0,7,252,7,248,0,0,3,253,7,248,0,0,2,254,7,248,0,0,1,255,191,255,255,64,1,255,255,255,255,128,1,255,255,255,255,128,1,255,171,254,170,64,1,255,7,248,0,0,2,254,7,248,0,0,3,253,7,248,0,0,3,252,7,248,0,0,11,252,7,248,0,0,31,244,7,248,0,0,127,240,7,248,0,2,255,192,7,253,85,191,255,64,7,255,255,255,252,0,7,255,255,255,208,0,7,255,255,228,0,0, + // 0x0111 đ + 21,29,174,23,2,255,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,3,255,255,255,128,0,7,255,255,255,128,0,3,255,255,255,128,0,0,0,15,240,0,0,0,0,15,240,0,0,47,232,15,240,0,2,255,255,79,240,0,11,255,255,239,240,0,31,254,91,255,240,0,63,224,0,191,240,0,127,192,0,63,240,0,191,128,0,31,240,0,255,64,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,64,0,15,240,0,191,128,0,47,240,0,63,208,0,63,240,0,63,244,1,255,240,0,15,255,255,255,240,0,3,255,255,203,240,0,0,191,254,7,240,0,0,1,64,0,0,0, + // 0x0112 Ē + 16,32,128,21,3,0,1,85,85,80,7,255,255,240,7,255,255,240,6,170,170,160,0,0,0,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x0113 ē + 18,27,135,21,2,255,1,85,85,80,0,3,255,255,244,0,3,255,255,244,0,2,170,170,160,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x0114 Ĕ + 16,34,136,21,3,0,10,64,0,160,11,192,1,240,7,249,111,240,3,255,255,192,0,191,255,0,0,6,144,0,0,0,0,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x0115 ĕ + 18,29,145,21,2,255,6,128,0,104,0,7,192,0,248,0,3,249,91,240,0,1,255,255,224,0,0,127,255,64,0,0,6,164,0,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x0116 Ė + 16,34,136,21,3,0,0,1,64,0,0,11,240,0,0,15,244,0,0,15,244,0,0,3,224,0,0,0,0,0,0,0,0,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x0117 ė + 18,29,145,21,2,255,0,0,80,0,0,0,3,248,0,0,0,11,252,0,0,0,7,248,0,0,0,2,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x0118 Ę + 16,36,144,21,3,247,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253,0,0,3,240,0,0,15,192,0,0,47,64,0,0,63,0,0,0,63,0,0,0,63,68,0,0,47,253,0,0,15,253,0,0,0,80, + // 0x0119 ę + 18,30,150,21,2,247,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,255,0,0,0,85,248,0,0,0,3,240,0,0,0,11,192,0,0,0,15,192,0,0,0,31,128,0,0,0,15,209,0,0,0,15,255,0,0,0,3,255,0,0,0,0,20,0, + // 0x011a Ě + 16,35,140,21,3,0,5,0,0,84,15,208,3,248,3,248,15,224,1,254,127,128,0,127,255,0,0,47,252,0,0,10,164,0,0,0,0,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x011b ě + 18,30,150,21,2,255,5,64,0,20,0,11,224,1,252,0,2,252,11,240,0,0,255,127,192,0,0,63,255,64,0,0,15,253,0,0,0,6,168,0,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x011c Ĝ + 22,36,216,27,2,255,0,0,1,84,0,0,0,0,15,254,0,0,0,0,47,255,64,0,0,0,127,191,192,0,0,1,254,11,240,0,0,3,244,2,252,0,0,6,128,0,105,0,0,0,0,0,0,0,0,0,6,190,148,0,0,2,255,255,255,144,0,31,255,255,255,224,0,191,255,235,255,192,2,255,224,0,7,128,7,255,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,64,0,0,0,0,255,64,0,127,255,240,191,64,0,127,255,240,191,64,0,127,255,240,191,128,0,0,15,240,127,192,0,0,15,240,63,192,0,0,15,240,63,208,0,0,15,240,47,240,0,0,15,240,15,252,0,0,15,240,7,255,0,0,15,240,2,255,228,0,95,240,0,191,255,255,255,240,0,31,255,255,255,240,0,1,255,255,254,64,0,0,1,85,0,0, + // 0x011d ĝ + 18,38,190,23,2,247,0,1,84,0,0,0,11,255,0,0,0,31,255,128,0,0,63,239,208,0,0,254,11,244,0,3,248,1,253,0,6,144,0,41,0,0,0,0,0,0,0,1,64,0,0,0,191,253,7,240,3,255,255,203,240,15,255,255,255,240,47,248,2,255,240,63,208,0,127,240,127,192,0,47,240,191,64,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,191,64,0,15,240,127,128,0,31,240,63,208,0,63,240,47,244,1,255,240,15,255,255,255,240,3,255,255,207,240,0,191,254,15,240,0,1,64,15,240,0,0,0,15,240,0,0,0,31,224,0,0,0,47,208,20,0,0,191,192,47,165,87,255,128,47,255,255,254,0,31,255,255,244,0,1,175,254,64,0, + // 0x011e Ğ + 22,35,210,27,2,255,0,2,128,0,104,0,0,3,208,0,252,0,0,2,254,91,244,0,0,0,255,255,240,0,0,0,63,255,128,0,0,0,5,164,0,0,0,0,0,0,0,0,0,0,6,190,148,0,0,2,255,255,255,144,0,31,255,255,255,224,0,191,255,235,255,192,2,255,224,0,7,128,7,255,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,64,0,0,0,0,255,64,0,127,255,240,191,64,0,127,255,240,191,64,0,127,255,240,191,128,0,0,15,240,127,192,0,0,15,240,63,192,0,0,15,240,63,208,0,0,15,240,47,240,0,0,15,240,15,252,0,0,15,240,7,255,0,0,15,240,2,255,228,0,95,240,0,191,255,255,255,240,0,31,255,255,255,240,0,1,255,255,254,64,0,0,1,85,0,0, + // 0x011f ğ + 18,37,185,23,2,247,2,144,0,40,0,3,224,0,188,0,1,254,91,248,0,0,255,255,240,0,0,47,255,192,0,0,1,164,0,0,0,0,0,0,0,0,1,64,0,0,0,191,253,7,240,3,255,255,203,240,15,255,255,255,240,47,248,2,255,240,63,208,0,127,240,127,192,0,47,240,191,64,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,191,64,0,15,240,127,128,0,31,240,63,208,0,63,240,47,244,1,255,240,15,255,255,255,240,3,255,255,207,240,0,191,254,15,240,0,1,64,15,240,0,0,0,15,240,0,0,0,31,224,0,0,0,47,208,20,0,0,191,192,47,165,87,255,128,47,255,255,254,0,31,255,255,244,0,1,175,254,64,0, + // 0x0120 Ġ + 22,35,210,27,2,255,0,0,0,80,0,0,0,0,3,252,0,0,0,0,3,252,0,0,0,0,3,252,0,0,0,0,1,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,190,148,0,0,2,255,255,255,144,0,31,255,255,255,224,0,191,255,235,255,192,2,255,224,0,7,128,7,255,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,64,0,0,0,0,255,64,0,127,255,240,191,64,0,127,255,240,191,64,0,127,255,240,191,128,0,0,15,240,127,192,0,0,15,240,63,192,0,0,15,240,63,208,0,0,15,240,47,240,0,0,15,240,15,252,0,0,15,240,7,255,0,0,15,240,2,255,228,0,95,240,0,191,255,255,255,240,0,31,255,255,255,240,0,1,255,255,254,64,0,0,1,85,0,0, + // 0x0121 ġ + 18,37,185,23,2,247,0,0,80,0,0,0,2,252,0,0,0,3,253,0,0,0,3,253,0,0,0,1,248,0,0,0,0,0,0,0,0,0,0,0,0,0,1,64,0,0,0,191,253,7,240,3,255,255,203,240,15,255,255,255,240,47,248,2,255,240,63,208,0,127,240,127,192,0,47,240,191,64,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,191,64,0,15,240,127,128,0,31,240,63,208,0,63,240,47,244,1,255,240,15,255,255,255,240,3,255,255,207,240,0,191,254,15,240,0,1,64,15,240,0,0,0,15,240,0,0,0,31,224,0,0,0,47,208,20,0,0,191,192,47,165,87,255,128,47,255,255,254,0,31,255,255,244,0,1,175,254,64,0, + // 0x0122 Ģ + 22,36,216,27,2,247,0,0,6,190,148,0,0,2,255,255,255,144,0,31,255,255,255,224,0,191,255,235,255,192,2,255,224,0,7,128,7,255,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,64,0,0,0,0,255,64,0,127,255,240,191,64,0,127,255,240,191,64,0,127,255,240,191,128,0,0,15,240,127,192,0,0,15,240,63,192,0,0,15,240,63,208,0,0,15,240,47,240,0,0,15,240,15,252,0,0,15,240,7,255,0,0,15,240,2,255,228,0,95,240,0,191,255,255,255,240,0,31,255,255,255,240,0,1,255,255,254,64,0,0,1,85,0,0,0,0,0,0,0,0,0,0,1,252,0,0,0,0,2,252,0,0,0,0,3,248,0,0,0,0,3,240,0,0,0,0,7,208,0,0,0,0,15,192,0,0,0,0,0,0,0,0, + // 0x0123 ģ + 18,38,190,23,2,247,0,0,5,0,0,0,0,62,0,0,0,0,189,0,0,0,0,252,0,0,0,2,248,0,0,0,3,248,0,0,0,2,160,0,0,0,0,0,0,0,0,1,64,0,0,0,191,253,7,240,3,255,255,203,240,15,255,255,255,240,47,248,2,255,240,63,208,0,127,240,127,192,0,47,240,191,64,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,191,64,0,15,240,127,128,0,31,240,63,208,0,63,240,47,244,1,255,240,15,255,255,255,240,3,255,255,207,240,0,191,254,15,240,0,1,64,15,240,0,0,0,15,240,0,0,0,31,224,0,0,0,47,208,20,0,0,191,192,47,165,87,255,128,47,255,255,254,0,31,255,255,244,0,1,175,254,64,0, + // 0x0124 Ĥ + 21,35,210,28,3,0,0,0,21,64,0,0,0,0,255,224,0,0,0,2,255,244,0,0,0,7,251,252,0,0,0,31,208,255,0,0,0,127,64,47,192,0,0,104,0,6,144,0,0,0,0,0,0,0,21,0,0,0,21,64,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,149,85,85,127,192,127,255,255,255,255,192,127,255,255,255,255,192,127,255,255,255,255,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192,127,128,0,0,63,192, + // 0x0125 ĥ + 23,37,222,23,254,0,0,21,64,0,0,0,0,191,224,0,0,0,1,255,248,0,0,0,7,250,253,0,0,0,15,224,191,64,0,0,63,128,31,192,0,0,104,0,2,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,1,0,0,0,63,193,255,248,0,0,63,207,255,255,64,0,63,239,255,255,208,0,63,254,0,127,240,0,63,244,0,31,240,0,63,240,0,15,240,0,63,208,0,11,244,0,63,192,0,11,244,0,63,192,0,11,244,0,63,192,0,11,244,0,63,192,0,11,244,0,63,192,0,11,244,0,63,192,0,11,244,0,63,192,0,11,244,0,63,192,0,11,244,0,63,192,0,11,244,0,63,192,0,11,244,0,63,192,0,11,244,0,63,192,0,11,244,0,63,192,0,11,244, + // 0x0126 Ħ + 28,27,189,28,0,0,0,84,0,0,0,85,0,1,254,0,0,0,255,0,1,254,0,0,0,255,0,1,254,0,0,0,255,0,86,254,85,85,85,255,84,255,255,255,255,255,255,254,255,255,255,255,255,255,254,171,255,170,170,170,255,169,1,254,0,0,0,255,0,1,254,0,0,0,255,0,1,254,0,0,0,255,0,1,254,85,85,85,255,0,1,255,255,255,255,255,0,1,255,255,255,255,255,0,1,255,255,255,255,255,0,1,254,0,0,0,255,0,1,254,0,0,0,255,0,1,254,0,0,0,255,0,1,254,0,0,0,255,0,1,254,0,0,0,255,0,1,254,0,0,0,255,0,1,254,0,0,0,255,0,1,254,0,0,0,255,0,1,254,0,0,0,255,0,1,254,0,0,0,255,0,1,254,0,0,0,255,0,1,254,0,0,0,255,0, + // 0x0127 ħ + 21,28,168,23,0,0,3,252,0,0,0,0,3,252,0,0,0,0,3,252,0,0,0,0,191,255,255,240,0,0,191,255,255,240,0,0,191,255,255,240,0,0,3,252,0,0,0,0,3,252,0,0,0,0,3,252,1,84,0,0,3,252,47,255,208,0,3,252,255,255,248,0,3,255,255,255,253,0,3,255,208,3,255,0,3,255,0,0,255,0,3,254,0,0,255,64,3,253,0,0,191,64,3,252,0,0,191,64,3,252,0,0,191,64,3,252,0,0,191,64,3,252,0,0,191,64,3,252,0,0,191,64,3,252,0,0,191,64,3,252,0,0,191,64,3,252,0,0,191,64,3,252,0,0,191,64,3,252,0,0,191,64,3,252,0,0,191,64,3,252,0,0,191,64, + // 0x0128 Ĩ + 14,34,136,13,0,0,1,64,1,64,47,248,3,208,127,255,155,192,254,191,255,128,240,11,255,0,144,0,100,0,0,0,0,0,21,85,85,0,47,255,254,0,47,255,254,0,2,255,224,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,191,128,0,11,255,249,0,47,255,254,0,47,255,254,0, + // 0x0129 ĩ + 14,28,112,10,254,0,1,64,0,80,15,253,1,240,63,255,215,224,126,191,255,192,248,7,255,64,160,0,100,0,0,0,0,0,0,0,0,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0, + // 0x012a Ī + 11,32,96,13,1,0,85,85,84,255,255,252,255,255,252,170,170,168,0,0,0,85,85,84,191,255,248,191,255,248,11,255,128,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,2,254,0,47,255,228,191,255,248,191,255,248, + // 0x012b ī + 12,26,78,10,255,0,21,85,85,191,255,254,191,255,254,106,170,169,0,0,0,0,0,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0, + // 0x012c Ĭ + 13,34,136,13,0,0,104,0,10,64,124,0,15,64,63,149,191,0,31,255,253,0,7,255,244,0,0,106,64,0,0,0,0,0,21,85,85,0,47,255,254,0,47,255,254,0,2,255,224,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,191,128,0,11,255,249,0,47,255,254,0,47,255,254,0, + // 0x012d ĭ + 12,28,84,10,255,0,160,0,10,248,0,47,191,150,254,63,255,252,15,255,224,0,105,0,0,0,0,0,0,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0, + // 0x012e Į + 11,36,108,13,1,247,85,85,84,191,255,248,191,255,248,11,255,128,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,2,254,0,47,255,228,191,255,248,191,255,248,0,11,192,0,47,64,0,126,0,0,188,0,0,252,0,0,254,0,0,127,248,0,47,248,0,1,64, + // 0x012f į + 7,37,74,10,1,247,1,64,15,240,15,240,15,240,7,208,0,0,0,0,0,0,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,11,208,47,64,62,0,189,0,252,0,190,0,127,248,47,248,1,64, + // 0x0130 İ + 11,34,102,13,1,0,0,84,0,1,253,0,2,255,0,1,254,0,0,188,0,0,0,0,0,0,0,85,85,84,191,255,248,191,255,248,11,255,128,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,2,254,0,47,255,228,191,255,248,191,255,248, + // 0x0131 ı + 4,20,20,10,3,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x0132 IJ + 20,35,175,24,1,248,85,85,84,0,84,191,255,248,2,253,191,255,248,2,253,11,255,128,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,1,254,0,2,253,2,254,0,2,253,47,255,228,2,253,191,255,248,2,253,191,255,248,2,253,0,0,0,2,253,0,0,0,3,252,0,0,0,7,252,0,0,20,111,248,0,0,63,255,240,0,0,63,255,208,0,0,47,254,0,0,0,0,0,0, + // 0x0133 ij + 15,37,148,20,3,247,20,0,1,64,255,0,15,240,255,0,15,244,255,0,15,240,125,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,31,240,0,37,191,224,0,63,255,192,0,63,255,64,0,47,248,0, + // 0x0134 Ĵ + 15,43,172,11,253,248,0,5,80,0,0,31,252,0,0,63,255,0,0,255,191,128,3,252,31,224,11,224,3,244,10,64,0,168,0,0,0,0,0,5,80,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,15,240,0,0,31,240,0,81,191,224,0,255,255,192,0,255,255,0,0,191,248,0,0,0,0,0,0, + // 0x0135 ĵ + 14,38,152,10,254,247,0,21,64,0,0,191,224,0,1,255,244,0,7,250,253,0,15,224,191,0,63,64,31,192,104,0,2,144,0,0,0,0,0,0,0,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,127,192,0,150,255,128,0,255,255,0,0,255,253,0,0,191,144,0,0, + // 0x0136 Ķ + 20,36,180,23,3,247,21,0,0,1,85,127,128,0,7,253,127,128,0,15,244,127,128,0,63,224,127,128,0,255,128,127,128,2,255,0,127,128,11,252,0,127,128,31,240,0,127,128,127,192,0,127,128,255,64,0,127,131,253,0,0,127,143,248,0,0,127,175,244,0,0,127,255,252,0,0,127,255,254,0,0,127,245,255,64,0,127,192,191,192,0,127,128,63,224,0,127,128,31,244,0,127,128,11,252,0,127,128,3,255,0,127,128,0,255,128,127,128,0,127,192,127,128,0,47,240,127,128,0,15,248,127,128,0,7,253,127,128,0,2,255,0,0,0,0,0,0,0,0,0,0,0,0,190,0,0,0,0,254,0,0,0,0,252,0,0,0,1,248,0,0,0,3,240,0,0,0,3,208,0,0,0,0,0,0,0, + // 0x0137 ķ + 17,37,185,21,3,247,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,255,64,255,0,3,254,0,255,0,15,248,0,255,0,63,224,0,255,0,191,128,0,255,2,255,0,0,255,11,252,0,0,255,31,240,0,0,255,127,192,0,0,255,255,224,0,0,255,255,244,0,0,255,231,252,0,0,255,130,255,0,0,255,0,255,128,0,255,0,63,208,0,255,0,31,240,0,255,0,11,252,0,255,0,3,254,0,255,0,1,255,64,255,0,0,191,192,0,0,0,0,0,0,0,0,0,0,0,11,224,0,0,0,15,224,0,0,0,31,192,0,0,0,47,128,0,0,0,63,0,0,0,0,61,0,0,0,0,0,0,0,0, + // 0x0138 ĸ + 17,20,100,21,3,0,255,0,0,255,64,255,0,3,254,0,255,0,11,252,0,255,0,47,240,0,255,0,127,192,0,255,1,255,64,0,255,3,253,0,0,255,15,248,0,0,255,47,224,0,0,255,191,224,0,0,255,255,244,0,0,255,251,252,0,0,255,210,255,0,0,255,0,255,128,0,255,0,63,208,0,255,0,31,240,0,255,0,11,252,0,255,0,3,254,0,255,0,0,255,64,255,0,0,127,192, + // 0x0139 Ĺ + 16,35,140,20,3,0,0,85,0,0,1,255,0,0,3,253,0,0,15,244,0,0,31,208,0,0,63,64,0,0,104,0,0,0,0,0,0,0,21,0,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,85,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x013a ĺ + 8,37,74,10,3,0,0,85,3,255,11,252,15,240,63,192,190,0,164,0,0,0,0,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, + // 0x013b Ļ + 16,36,144,20,3,247,21,0,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,85,127,255,255,255,127,255,255,255,127,255,255,255,0,0,0,0,0,0,0,0,0,3,248,0,0,3,244,0,0,7,240,0,0,11,208,0,0,15,192,0,0,31,64,0,0,0,0,0, + // 0x013c ļ + 6,37,74,10,2,247,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,0,0,0,0,15,208,31,208,47,192,63,64,63,0,124,0,0,0, + // 0x013d Ľ + 16,27,108,20,3,0,21,0,0,85,127,128,0,255,127,128,0,254,127,128,0,252,127,128,1,248,127,128,2,240,127,128,1,144,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,85,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x013e ľ + 11,28,84,10,3,0,255,7,244,255,11,240,255,15,208,255,15,192,255,31,64,255,30,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, + // 0x013f Ŀ + 16,27,108,20,3,0,21,0,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,1,64,127,128,15,224,127,128,31,240,127,128,31,240,127,128,11,208,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,85,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x0140 ŀ + 10,28,84,11,3,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,5,64,255,31,208,255,47,224,255,47,224,255,15,128,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, + // 0x0141 Ł + 19,27,135,20,0,0,0,84,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,1,0,0,1,254,15,64,0,1,254,191,192,0,1,255,255,128,0,1,255,252,0,0,2,255,208,0,0,31,254,0,0,0,127,254,0,0,0,63,254,0,0,0,26,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,85,85,84,1,255,255,255,252,1,255,255,255,252,1,255,255,255,252, + // 0x0142 ł + 10,28,84,10,0,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,254,208,3,255,240,3,255,240,7,255,64,47,252,0,255,252,0,255,252,0,55,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0, + // 0x0143 Ń + 22,35,210,29,3,0,0,0,0,21,64,0,0,0,0,191,192,0,0,0,0,255,64,0,0,0,3,253,0,0,0,0,11,244,0,0,0,0,31,192,0,0,0,0,26,0,0,0,0,0,0,0,0,0,21,64,0,0,1,80,127,240,0,0,11,240,127,248,0,0,11,240,127,252,0,0,11,240,127,255,0,0,11,240,127,255,64,0,11,240,127,127,192,0,11,240,127,63,224,0,11,240,127,15,244,0,11,240,127,11,252,0,11,240,127,3,254,0,11,240,127,1,255,0,11,240,127,0,191,192,11,240,127,0,63,208,11,240,127,0,31,240,7,240,127,0,15,248,7,240,127,0,3,253,7,240,127,0,2,255,7,240,127,0,0,255,135,240,127,0,0,127,199,240,127,0,0,47,247,240,127,0,0,15,251,240,127,0,0,7,255,240,127,0,0,3,255,240,127,0,0,0,255,240,127,0,0,0,191,240,127,0,0,0,63,240, + // 0x0144 ń + 18,29,145,23,3,0,0,0,5,84,0,0,0,31,244,0,0,0,63,224,0,0,0,191,128,0,0,1,254,0,0,0,3,244,0,0,0,6,144,0,0,0,0,0,0,0,0,0,4,0,0,253,7,255,244,0,253,63,255,254,0,255,255,255,255,64,255,248,1,255,192,255,208,0,127,192,255,192,0,63,192,255,64,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208, + // 0x0145 Ņ + 22,36,216,29,3,247,21,64,0,0,1,80,127,240,0,0,11,240,127,248,0,0,11,240,127,252,0,0,11,240,127,255,0,0,11,240,127,255,64,0,11,240,127,127,192,0,11,240,127,63,224,0,11,240,127,15,244,0,11,240,127,11,252,0,11,240,127,3,254,0,11,240,127,1,255,0,11,240,127,0,191,192,11,240,127,0,63,208,11,240,127,0,31,240,7,240,127,0,15,248,7,240,127,0,3,253,7,240,127,0,2,255,7,240,127,0,0,255,135,240,127,0,0,127,199,240,127,0,0,47,247,240,127,0,0,15,251,240,127,0,0,7,255,240,127,0,0,3,255,240,127,0,0,0,255,240,127,0,0,0,191,240,127,0,0,0,63,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,224,0,0,0,0,15,224,0,0,0,0,31,192,0,0,0,0,47,128,0,0,0,0,63,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0, + // 0x0146 ņ + 18,30,150,23,3,247,0,0,4,0,0,253,7,255,244,0,253,63,255,254,0,255,255,255,255,64,255,248,1,255,192,255,208,0,127,192,255,192,0,63,192,255,64,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,0,0,0,0,0,0,0,0,0,0,0,1,252,0,0,0,2,252,0,0,0,3,244,0,0,0,3,240,0,0,0,11,208,0,0,0,15,128,0,0,0,0,0,0,0, + // 0x0147 Ň + 22,35,210,29,3,0,0,20,0,1,80,0,0,63,64,11,224,0,0,15,224,63,128,0,0,3,249,255,0,0,0,1,255,252,0,0,0,0,191,240,0,0,0,0,42,144,0,0,0,0,0,0,0,0,21,64,0,0,1,80,127,240,0,0,11,240,127,248,0,0,11,240,127,252,0,0,11,240,127,255,0,0,11,240,127,255,64,0,11,240,127,127,192,0,11,240,127,63,224,0,11,240,127,15,244,0,11,240,127,11,252,0,11,240,127,3,254,0,11,240,127,1,255,0,11,240,127,0,191,192,11,240,127,0,63,208,11,240,127,0,31,240,7,240,127,0,15,248,7,240,127,0,3,253,7,240,127,0,2,255,7,240,127,0,0,255,135,240,127,0,0,127,199,240,127,0,0,47,247,240,127,0,0,15,251,240,127,0,0,7,255,240,127,0,0,3,255,240,127,0,0,0,255,240,127,0,0,0,191,240,127,0,0,0,63,240, + // 0x0148 ň + 18,29,145,23,3,0,5,64,0,20,0,11,224,2,252,0,3,252,11,240,0,0,255,127,192,0,0,63,255,64,0,0,31,253,0,0,0,6,168,0,0,0,0,0,0,0,0,0,4,0,0,253,7,255,244,0,253,63,255,254,0,255,255,255,255,64,255,248,1,255,192,255,208,0,127,192,255,192,0,63,192,255,64,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208, + // 0x0149 ʼn + 24,27,162,26,0,0,5,80,0,0,0,0,31,240,0,0,0,0,31,224,0,0,0,0,47,208,0,0,0,0,63,192,0,0,0,0,63,128,0,0,0,0,63,0,0,0,64,0,127,15,208,127,255,64,189,15,227,255,255,224,168,15,255,255,255,244,0,15,255,128,31,252,0,15,253,0,3,252,0,15,252,0,2,253,0,15,244,0,2,253,0,15,244,0,1,253,0,15,240,0,1,253,0,15,240,0,1,253,0,15,240,0,1,253,0,15,240,0,1,253,0,15,240,0,1,253,0,15,240,0,1,253,0,15,240,0,1,253,0,15,240,0,1,253,0,15,240,0,1,253,0,15,240,0,1,253,0,15,240,0,1,253,0,15,240,0,1,253, + // 0x014a Ŋ + 22,35,210,29,3,248,21,64,0,0,1,80,127,240,0,0,11,240,127,248,0,0,11,240,127,253,0,0,11,240,127,255,0,0,11,240,127,255,128,0,11,240,127,127,208,0,11,240,127,47,240,0,11,240,127,15,248,0,11,240,127,7,253,0,11,240,127,2,255,0,11,240,127,0,255,128,11,240,127,0,127,208,11,240,127,0,47,240,7,240,127,0,15,248,7,240,127,0,7,253,7,240,127,0,2,255,7,240,127,0,0,255,135,240,127,0,0,63,215,240,127,0,0,47,247,240,127,0,0,15,255,240,127,0,0,3,255,240,127,0,0,1,255,240,127,0,0,0,255,240,127,0,0,0,63,240,127,0,0,0,31,240,127,0,0,0,11,240,0,0,0,0,7,240,0,0,0,0,11,240,0,0,0,0,15,240,0,0,0,64,191,224,0,0,0,255,255,192,0,0,0,255,255,0,0,0,0,255,248,0,0,0,0,0,0,0, + // 0x014b ŋ + 18,30,150,23,3,247,0,0,4,0,0,253,7,255,244,0,253,63,255,254,0,255,255,255,255,64,255,248,1,255,192,255,208,0,63,192,255,192,0,63,208,255,64,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,255,0,0,47,208,0,0,0,47,208,0,0,0,47,208,0,0,0,47,208,0,0,0,47,208,0,0,0,63,192,0,0,37,255,192,0,0,63,255,64,0,0,63,254,0,0,0,47,228,0, + // 0x014c Ō + 25,33,231,29,2,255,0,1,85,85,80,0,0,0,3,255,255,240,0,0,0,3,255,255,240,0,0,0,2,170,170,160,0,0,0,0,0,0,0,0,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x014d ō + 19,27,135,23,2,255,0,85,85,84,0,1,255,255,252,0,1,255,255,252,0,0,170,170,168,0,0,0,0,0,0,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x014e Ŏ + 25,35,245,29,2,255,0,6,128,0,164,0,0,0,7,192,0,244,0,0,0,3,249,107,240,0,0,0,2,255,255,208,0,0,0,0,127,255,64,0,0,0,0,6,148,0,0,0,0,0,0,0,0,0,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x014f ŏ + 19,29,145,23,2,255,2,144,0,41,0,2,240,0,124,0,1,254,91,252,0,0,255,255,240,0,0,47,255,192,0,0,1,164,0,0,0,0,0,0,0,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x0150 Ő + 25,36,252,29,2,255,0,0,21,64,84,0,0,0,0,191,131,253,0,0,0,0,254,11,244,0,0,0,3,252,15,224,0,0,0,7,240,47,128,0,0,0,15,192,126,0,0,0,0,26,0,100,0,0,0,0,0,0,0,0,0,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x0151 ő + 19,30,150,23,2,255,0,5,64,85,0,0,63,208,255,0,0,191,67,252,0,0,254,7,244,0,2,248,15,208,0,7,224,47,64,0,6,64,41,0,0,0,0,0,0,0,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x0152 Œ + 31,28,224,35,2,255,0,0,107,249,85,85,85,84,0,11,255,255,255,255,255,248,0,127,255,255,255,255,255,248,1,255,254,175,255,255,255,248,7,255,64,0,255,0,0,0,15,252,0,0,255,0,0,0,31,240,0,0,255,0,0,0,63,224,0,0,255,0,0,0,63,192,0,0,255,0,0,0,127,192,0,0,255,0,0,0,191,128,0,0,255,0,0,0,191,64,0,0,255,149,85,80,191,64,0,0,255,255,255,240,255,64,0,0,255,255,255,240,255,64,0,0,255,255,255,240,191,64,0,0,255,0,0,0,191,128,0,0,255,0,0,0,127,192,0,0,255,0,0,0,63,192,0,0,255,0,0,0,63,208,0,0,255,0,0,0,47,240,0,0,255,0,0,0,15,248,0,0,255,0,0,0,11,254,0,0,255,0,0,0,3,255,208,6,255,149,85,84,0,255,255,255,255,255,255,248,0,47,255,255,255,255,255,248,0,2,255,255,255,255,255,248,0,0,5,80,0,0,0,0, + // 0x0153 œ + 32,21,168,35,2,255,0,47,255,128,1,255,248,0,2,255,255,244,15,255,255,128,11,255,255,253,63,255,255,224,31,248,1,255,255,128,31,244,63,208,0,63,254,0,7,248,127,192,0,47,252,0,3,252,191,64,0,15,248,0,2,253,255,0,0,15,244,0,1,253,255,0,0,15,255,255,255,253,255,0,0,11,255,255,255,254,255,0,0,11,255,255,255,253,255,0,0,15,244,0,0,0,255,0,0,15,244,0,0,0,191,64,0,15,248,0,0,0,127,128,0,47,252,0,0,0,63,208,0,63,254,0,0,0,31,244,1,255,255,208,0,120,11,255,255,254,63,255,255,248,2,255,255,248,15,255,255,248,0,47,255,144,1,255,255,208,0,0,80,0,0,1,80,0, + // 0x0154 Ŕ + 20,35,175,23,3,0,0,0,1,84,0,0,0,15,248,0,0,0,47,224,0,0,0,127,128,0,0,0,254,0,0,0,3,248,0,0,0,2,144,0,0,0,0,0,0,0,21,85,84,0,0,127,255,255,224,0,127,255,255,253,0,127,255,255,255,64,127,128,6,255,192,127,128,0,127,208,127,128,0,47,224,127,128,0,31,240,127,128,0,31,240,127,128,0,31,224,127,128,0,47,208,127,128,0,127,192,127,128,6,255,64,127,255,255,254,0,127,255,255,244,0,127,255,255,192,0,127,149,127,208,0,127,128,15,240,0,127,128,11,248,0,127,128,3,253,0,127,128,1,255,0,127,128,0,255,128,127,128,0,63,192,127,128,0,47,240,127,128,0,15,244,127,128,0,7,252,127,128,0,3,254, + // 0x0155 ŕ + 12,29,87,16,3,0,0,0,85,0,3,255,0,11,252,0,15,240,0,63,192,0,190,0,0,164,0,0,0,0,0,0,20,252,7,255,253,31,255,254,127,255,255,255,85,255,244,0,255,208,0,255,128,0,255,64,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, + // 0x0156 Ŗ + 20,36,180,23,3,247,21,85,84,0,0,127,255,255,224,0,127,255,255,253,0,127,255,255,255,64,127,128,6,255,192,127,128,0,127,208,127,128,0,47,224,127,128,0,31,240,127,128,0,31,240,127,128,0,31,224,127,128,0,47,208,127,128,0,127,192,127,128,6,255,64,127,255,255,254,0,127,255,255,244,0,127,255,255,192,0,127,149,127,208,0,127,128,15,240,0,127,128,11,248,0,127,128,3,253,0,127,128,1,255,0,127,128,0,255,128,127,128,0,63,192,127,128,0,47,240,127,128,0,15,244,127,128,0,7,252,127,128,0,3,254,0,0,0,0,0,0,0,0,0,0,0,0,190,0,0,0,0,254,0,0,0,0,253,0,0,0,1,252,0,0,0,2,240,0,0,0,3,224,0,0,0,0,0,0,0, + // 0x0157 ŗ + 13,30,120,16,2,247,0,0,5,0,63,1,255,192,63,71,255,192,63,159,255,192,63,255,213,64,63,253,0,0,63,244,0,0,63,224,0,0,63,208,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,0,0,0,0,0,0,0,0,15,208,0,0,31,192,0,0,47,192,0,0,63,64,0,0,62,0,0,0,124,0,0,0,0,0,0,0, + // 0x0158 Ř + 20,35,175,23,3,0,5,64,0,20,0,11,240,1,252,0,2,252,11,244,0,0,191,111,208,0,0,63,255,64,0,0,15,254,0,0,0,6,168,0,0,0,0,0,0,0,21,85,84,0,0,127,255,255,224,0,127,255,255,253,0,127,255,255,255,64,127,128,6,255,192,127,128,0,127,208,127,128,0,47,224,127,128,0,31,240,127,128,0,31,240,127,128,0,31,224,127,128,0,47,208,127,128,0,127,192,127,128,6,255,64,127,255,255,254,0,127,255,255,244,0,127,255,255,192,0,127,149,127,208,0,127,128,15,240,0,127,128,11,248,0,127,128,3,253,0,127,128,1,255,0,127,128,0,255,128,127,128,0,63,192,127,128,0,47,240,127,128,0,15,244,127,128,0,7,252,127,128,0,3,254, + // 0x0159 ř + 14,29,116,16,2,0,20,0,1,64,127,0,15,208,31,208,127,64,11,246,254,0,2,255,248,0,0,255,240,0,0,42,128,0,0,0,0,0,0,0,5,0,63,1,255,192,63,71,255,192,63,159,255,192,63,255,213,64,63,253,0,0,63,244,0,0,63,224,0,0,63,208,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0, + // 0x015a Ś + 17,36,180,20,2,255,0,0,5,80,0,0,0,31,244,0,0,0,63,208,0,0,0,191,64,0,0,1,253,0,0,0,3,244,0,0,0,6,128,0,0,0,0,0,0,0,0,26,234,64,0,2,255,255,253,0,15,255,255,255,0,63,254,175,254,0,127,208,0,108,0,191,128,0,0,0,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,191,192,0,0,0,63,244,0,0,0,31,255,64,0,0,11,255,244,0,0,1,255,255,128,0,0,31,255,240,0,0,1,191,252,0,0,0,15,255,0,0,0,2,255,64,0,0,0,191,128,0,0,0,127,128,0,0,0,127,128,0,0,0,191,128,128,0,0,255,0,254,64,27,254,0,255,255,255,252,0,255,255,255,240,0,111,255,254,64,0,0,21,64,0,0, + // 0x015b ś + 15,30,120,18,2,255,0,0,21,64,0,0,255,128,0,2,255,0,0,7,252,0,0,15,240,0,0,47,128,0,0,41,0,0,0,0,0,0,0,5,64,0,2,255,255,64,47,255,255,240,127,255,255,208,255,64,6,192,254,0,0,0,255,0,0,0,255,128,0,0,191,244,0,0,63,255,128,0,11,255,252,0,0,191,255,128,0,7,255,208,0,0,127,240,0,0,15,240,0,0,11,244,0,0,11,240,228,0,31,240,255,234,255,208,255,255,255,128,111,255,248,0,0,85,0,0, + // 0x015c Ŝ + 17,36,180,20,2,255,0,5,80,0,0,0,15,252,0,0,0,63,255,0,0,0,255,191,192,0,2,252,31,224,0,11,240,3,248,0,10,64,0,104,0,0,0,0,0,0,0,26,234,64,0,2,255,255,253,0,15,255,255,255,0,63,254,175,254,0,127,208,0,108,0,191,128,0,0,0,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,191,192,0,0,0,63,244,0,0,0,31,255,64,0,0,11,255,244,0,0,1,255,255,128,0,0,31,255,240,0,0,1,191,252,0,0,0,15,255,0,0,0,2,255,64,0,0,0,191,128,0,0,0,127,128,0,0,0,127,128,0,0,0,191,128,128,0,0,255,0,254,64,27,254,0,255,255,255,252,0,255,255,255,240,0,111,255,254,64,0,0,21,64,0,0, + // 0x015d ŝ + 15,30,120,18,2,255,0,21,64,0,0,191,224,0,2,255,244,0,7,251,253,0,15,224,191,0,63,64,47,192,104,0,2,144,0,0,0,0,0,5,64,0,2,255,255,64,47,255,255,240,127,255,255,208,255,64,6,192,254,0,0,0,255,0,0,0,255,128,0,0,191,244,0,0,63,255,128,0,11,255,252,0,0,191,255,128,0,7,255,208,0,0,127,240,0,0,15,240,0,0,11,244,0,0,11,240,228,0,31,240,255,234,255,208,255,255,255,128,111,255,248,0,0,85,0,0, + // 0x015e Ş + 17,36,180,20,2,247,0,26,234,64,0,2,255,255,253,0,15,255,255,255,0,63,254,175,254,0,127,208,0,108,0,191,128,0,0,0,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,191,192,0,0,0,63,244,0,0,0,31,255,64,0,0,11,255,244,0,0,1,255,255,128,0,0,31,255,240,0,0,1,191,252,0,0,0,15,255,0,0,0,2,255,64,0,0,0,191,128,0,0,0,127,128,0,0,0,127,128,0,0,0,191,128,128,0,0,255,0,254,64,27,254,0,255,255,255,252,0,255,255,255,240,0,111,255,254,64,0,0,31,192,0,0,0,15,128,0,0,0,47,240,0,0,0,7,252,0,0,0,0,253,0,0,0,0,253,0,0,0,150,252,0,0,0,255,244,0,0,0,255,128,0,0, + // 0x015f ş + 15,30,120,18,2,247,0,5,64,0,2,255,255,64,47,255,255,240,127,255,255,208,255,64,6,192,254,0,0,0,255,0,0,0,255,128,0,0,191,244,0,0,63,255,128,0,11,255,252,0,0,191,255,128,0,7,255,208,0,0,127,240,0,0,15,240,0,0,11,244,0,0,11,240,228,0,31,240,255,234,255,208,255,255,255,128,111,255,248,0,0,111,64,0,0,63,0,0,0,127,208,0,0,27,244,0,0,2,248,0,0,1,248,0,1,91,244,0,3,255,240,0,2,254,64,0, + // 0x0160 Š + 17,36,180,20,2,255,5,0,0,20,0,15,224,2,252,0,3,252,15,240,0,0,255,63,192,0,0,63,255,0,0,0,31,253,0,0,0,6,164,0,0,0,0,0,0,0,0,26,234,64,0,2,255,255,253,0,15,255,255,255,0,63,254,175,254,0,127,208,0,108,0,191,128,0,0,0,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,191,192,0,0,0,63,244,0,0,0,31,255,64,0,0,11,255,244,0,0,1,255,255,128,0,0,31,255,240,0,0,1,191,252,0,0,0,15,255,0,0,0,2,255,64,0,0,0,191,128,0,0,0,127,128,0,0,0,127,128,0,0,0,191,128,128,0,0,255,0,254,64,27,254,0,255,255,255,252,0,255,255,255,240,0,111,255,254,64,0,0,21,64,0,0, + // 0x0161 š + 15,30,120,18,2,255,84,0,1,64,127,0,31,208,31,208,127,64,11,246,253,0,2,255,248,0,0,255,240,0,0,42,128,0,0,0,0,0,0,5,64,0,2,255,255,64,47,255,255,240,127,255,255,208,255,64,6,192,254,0,0,0,255,0,0,0,255,128,0,0,191,244,0,0,63,255,128,0,11,255,252,0,0,191,255,128,0,7,255,208,0,0,127,240,0,0,15,240,0,0,11,244,0,0,11,240,228,0,31,240,255,234,255,208,255,255,255,128,111,255,248,0,0,85,0,0, + // 0x0162 Ţ + 21,36,216,21,0,247,21,85,85,85,85,0,191,255,255,255,255,64,191,255,255,255,255,64,191,255,255,255,255,64,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,62,0,0,0,0,0,125,0,0,0,0,0,255,128,0,0,0,0,31,240,0,0,0,0,3,240,0,0,0,0,3,244,0,0,0,2,111,240,0,0,0,7,255,208,0,0,0,3,250,0,0,0, + // 0x0163 ţ + 14,34,136,14,0,247,0,20,0,0,0,125,0,0,0,189,0,0,0,253,0,0,1,253,0,0,11,255,255,192,127,255,255,192,127,255,255,192,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,1,254,0,0,1,255,64,0,0,255,255,208,0,127,255,208,0,31,255,192,0,3,244,0,0,7,192,0,0,15,248,0,0,1,254,0,0,0,63,0,0,0,63,0,0,102,255,0,0,127,252,0,0,127,144,0, + // 0x0164 Ť + 21,35,210,21,0,0,0,80,0,5,64,0,0,254,0,47,192,0,0,63,128,255,0,0,0,15,247,252,0,0,0,7,255,240,0,0,0,1,255,192,0,0,0,0,170,64,0,0,0,0,0,0,0,0,21,85,85,85,85,0,191,255,255,255,255,64,191,255,255,255,255,64,191,255,255,255,255,64,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0, + // 0x0165 ť + 19,29,145,14,0,255,0,0,0,7,244,0,0,0,11,240,0,0,0,15,224,0,20,0,15,192,0,125,0,15,64,0,189,0,30,0,0,253,0,0,0,1,253,0,0,0,11,255,255,192,0,127,255,255,192,0,127,255,255,192,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,1,254,0,0,0,1,255,64,0,0,0,255,255,208,0,0,127,255,208,0,0,31,255,192,0,0,0,84,0,0, + // 0x0166 Ŧ + 21,27,162,21,0,0,21,85,85,85,85,0,191,255,255,255,255,64,191,255,255,255,255,64,191,255,255,255,255,64,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,3,255,255,255,224,0,3,255,255,255,224,0,3,255,255,255,224,0,1,85,191,149,64,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0, + // 0x0167 ŧ + 14,26,104,14,0,255,0,20,0,0,0,125,0,0,0,189,0,0,0,253,0,0,1,253,0,0,11,255,255,192,127,255,255,192,127,255,255,192,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,43,255,170,64,63,255,255,128,63,255,255,128,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,2,253,0,0,1,254,0,0,1,255,64,0,0,255,255,208,0,127,255,208,0,31,255,192,0,0,84,0, + // 0x0168 Ũ + 21,35,210,27,3,255,0,1,64,0,80,0,0,31,248,3,224,0,0,127,255,155,208,0,0,254,191,255,192,0,0,240,11,255,0,0,0,160,0,100,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,254,0,0,0,0,21,64,0,0, + // 0x0169 ũ + 17,29,145,23,3,255,0,20,0,5,0,1,255,128,62,0,7,255,249,188,0,15,235,255,252,0,15,0,191,240,0,10,0,6,64,0,0,0,0,0,0,0,0,0,0,0,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,0,0, + // 0x016a Ū + 21,33,198,27,3,255,0,21,85,85,0,0,0,63,255,255,64,0,0,63,255,255,64,0,0,42,170,170,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,254,0,0,0,0,21,64,0,0, + // 0x016b ū + 17,27,135,23,3,255,1,85,85,80,0,3,255,255,244,0,3,255,255,244,0,2,170,170,160,0,0,0,0,0,0,0,0,0,0,0,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,0,0, + // 0x016c Ŭ + 21,35,210,27,3,255,0,104,0,6,128,0,0,124,0,15,128,0,0,63,149,191,0,0,0,31,255,254,0,0,0,7,255,244,0,0,0,0,106,64,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,254,0,0,0,0,21,64,0,0, + // 0x016d ŭ + 17,29,145,23,3,255,6,128,0,104,0,7,192,0,248,0,3,249,91,240,0,1,255,255,224,0,0,127,255,64,0,0,6,164,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,0,0, + // 0x016e Ů + 21,38,228,27,3,255,0,0,21,0,0,0,0,1,255,208,0,0,0,3,251,244,0,0,0,7,192,184,0,0,0,11,128,124,0,0,0,7,192,184,0,0,0,3,246,244,0,0,0,1,255,224,0,0,0,0,25,0,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,254,0,0,0,0,21,64,0,0, + // 0x016f ů + 17,32,160,23,3,255,0,1,80,0,0,0,31,253,0,0,0,63,191,64,0,0,124,11,128,0,0,184,7,192,0,0,124,11,128,0,0,63,111,64,0,0,31,254,0,0,0,1,144,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,0,0, + // 0x0170 Ű + 21,36,216,27,3,255,0,1,84,5,64,0,0,11,248,63,208,0,0,15,240,127,128,0,0,47,192,254,0,0,0,127,2,248,0,0,0,252,7,224,0,0,0,160,6,64,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,254,0,0,0,0,21,64,0,0, + // 0x0171 ű + 17,30,150,23,3,255,0,21,64,84,0,0,191,131,253,0,0,255,7,248,0,2,252,15,224,0,7,240,47,128,0,15,192,126,0,0,10,0,100,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,0,0, + // 0x0172 Ų + 21,36,216,27,3,247,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,255,128,0,0,0,21,127,0,0,0,0,0,188,0,0,0,0,0,248,0,0,0,0,1,248,0,0,0,0,2,248,0,0,0,0,1,253,16,0,0,0,0,255,240,0,0,0,0,127,240,0,0,0,0,5,64,0, + // 0x0173 ų + 18,29,145,23,3,247,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,63,0,0,0,0,252,0,0,0,1,244,0,0,0,3,240,0,0,0,3,240,0,0,0,3,244,64,0,0,2,255,208,0,0,0,255,208,0,0,0,5,0, + // 0x0174 Ŵ + 34,35,59,35,0,0,0,0,0,1,84,0,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,15,255,192,0,0,0,0,0,0,63,239,224,0,0,0,0,0,0,191,7,248,0,0,0,0,0,2,248,0,254,0,0,0,0,0,2,144,0,42,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,1,84,0,0,5,80,127,128,0,3,254,0,0,15,240,63,192,0,3,255,0,0,15,240,63,192,0,11,255,0,0,31,224,47,208,0,15,255,64,0,47,208,31,224,0,15,255,128,0,63,192,15,240,0,31,239,192,0,63,192,15,240,0,47,207,208,0,127,128,11,244,0,63,143,224,0,191,64,7,248,0,63,75,240,0,255,0,3,252,0,127,7,240,0,255,0,3,252,0,255,3,244,1,254,0,2,253,0,254,3,252,2,253,0,1,254,1,253,2,252,3,252,0,0,255,2,252,1,253,3,252,0,0,255,3,248,0,254,7,248,0,0,191,67,244,0,191,11,244,0,0,127,135,240,0,127,15,240,0,0,63,203,240,0,63,79,240,0,0,47,207,224,0,63,143,224,0,0,31,223,208,0,47,223,192,0,0,15,239,192,0,31,239,192,0,0,15,255,128,0,15,255,128,0,0,11,255,64,0,11,255,64,0,0,7,255,0,0,7,255,0,0,0,3,255,0,0,3,255,0,0,0,3,254,0,0,3,254,0,0, + // 0x0175 ŵ + 30,29,232,30,0,0,0,0,0,21,64,0,0,0,0,0,0,255,224,0,0,0,0,0,2,255,244,0,0,0,0,0,7,251,252,0,0,0,0,0,31,224,191,0,0,0,0,0,63,64,47,192,0,0,0,0,104,0,6,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,128,0,127,192,0,47,208,63,192,0,191,224,0,63,192,63,192,0,255,240,0,63,192,47,208,0,255,240,0,127,64,31,224,2,251,244,0,191,0,15,240,3,246,248,0,255,0,15,240,3,241,252,0,254,0,11,244,7,240,253,1,253,0,7,248,11,224,254,2,252,0,3,252,15,208,191,3,252,0,2,252,31,192,127,7,248,0,1,253,47,192,63,75,240,0,0,254,63,128,63,139,240,0,0,255,63,0,31,207,224,0,0,191,127,0,15,223,208,0,0,127,190,0,15,239,192,0,0,63,253,0,11,255,192,0,0,63,252,0,7,255,128,0,0,31,248,0,3,255,64,0,0,15,244,0,2,255,0,0, + // 0x0176 Ŷ + 21,35,210,22,0,0,0,0,21,64,0,0,0,0,255,208,0,0,0,2,255,240,0,0,0,11,251,252,0,0,0,31,208,255,0,0,0,127,64,47,192,0,0,168,0,6,144,0,0,0,0,0,0,0,85,0,0,0,21,64,191,192,0,0,63,192,63,208,0,0,191,128,31,240,0,1,255,0,15,244,0,3,253,0,7,252,0,7,252,0,3,253,0,15,244,0,1,255,0,31,240,0,0,191,64,63,208,0,0,63,192,127,128,0,0,47,224,255,0,0,0,15,241,254,0,0,0,11,251,252,0,0,0,3,255,248,0,0,0,1,255,240,0,0,0,0,255,208,0,0,0,0,127,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x0177 ŷ + 20,38,190,20,0,247,0,0,85,0,0,0,3,255,64,0,0,11,255,192,0,0,47,239,240,0,0,127,67,252,0,1,253,0,191,0,2,160,0,26,64,0,0,0,0,0,0,0,0,0,0,191,64,0,3,253,127,192,0,3,252,63,192,0,11,248,47,224,0,15,240,15,240,0,31,240,15,240,0,47,208,7,248,0,63,192,3,252,0,127,128,2,253,0,191,64,0,254,0,255,0,0,255,1,254,0,0,127,66,252,0,0,63,195,252,0,0,47,199,244,0,0,15,219,240,0,0,15,239,224,0,0,7,255,208,0,0,3,255,192,0,0,2,255,128,0,0,0,255,0,0,0,0,255,0,0,0,2,253,0,0,0,3,252,0,0,0,7,248,0,0,0,31,240,0,0,21,191,224,0,0,127,255,128,0,0,127,254,0,0,0,47,224,0,0,0, + // 0x0178 Ÿ + 21,33,198,22,0,0,0,31,192,127,0,0,0,47,192,191,0,0,0,47,192,127,0,0,0,10,64,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,192,0,0,63,192,63,208,0,0,191,128,31,240,0,1,255,0,15,244,0,3,253,0,7,252,0,7,252,0,3,253,0,15,244,0,1,255,0,31,240,0,0,191,64,63,208,0,0,63,192,127,128,0,0,47,224,255,0,0,0,15,241,254,0,0,0,11,251,252,0,0,0,3,255,248,0,0,0,1,255,240,0,0,0,0,255,208,0,0,0,0,127,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x0179 Ź + 19,35,175,21,1,0,0,0,1,85,0,0,0,3,254,0,0,0,15,248,0,0,0,31,224,0,0,0,63,128,0,0,0,254,0,0,0,0,164,0,0,0,0,0,0,0,21,85,85,85,84,127,255,255,255,248,127,255,255,255,248,127,255,255,255,248,0,0,0,47,240,0,0,0,63,192,0,0,0,255,128,0,0,2,255,0,0,0,3,252,0,0,0,15,248,0,0,0,47,240,0,0,0,63,192,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,192,0,0,0,255,64,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,229,85,85,84,191,255,255,255,252,191,255,255,255,252,191,255,255,255,252, + // 0x017a ź + 16,29,116,18,1,0,0,0,21,80,0,0,63,224,0,0,255,128,0,1,254,0,0,3,248,0,0,15,224,0,0,10,64,0,0,0,0,0,0,0,0,0,63,255,255,252,63,255,255,252,63,255,255,252,0,0,15,244,0,0,31,240,0,0,63,192,0,0,255,64,0,2,254,0,0,7,252,0,0,15,240,0,0,47,208,0,0,127,192,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,208,0,0,191,255,255,253,191,255,255,253,191,255,255,253, + // 0x017b Ż + 19,34,170,21,1,0,0,0,20,0,0,0,0,254,0,0,0,1,255,0,0,0,1,255,0,0,0,0,189,0,0,0,0,0,0,0,0,0,0,0,0,21,85,85,85,84,127,255,255,255,248,127,255,255,255,248,127,255,255,255,248,0,0,0,47,240,0,0,0,63,192,0,0,0,255,128,0,0,2,255,0,0,0,3,252,0,0,0,15,248,0,0,0,47,240,0,0,0,63,192,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,192,0,0,0,255,64,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,229,85,85,84,191,255,255,255,252,191,255,255,255,252,191,255,255,255,252, + // 0x017c ż + 16,28,112,18,1,0,0,1,64,0,0,15,224,0,0,31,240,0,0,31,240,0,0,11,208,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,252,63,255,255,252,63,255,255,252,0,0,15,244,0,0,31,240,0,0,63,192,0,0,255,64,0,2,254,0,0,7,252,0,0,15,240,0,0,47,208,0,0,127,192,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,208,0,0,191,255,255,253,191,255,255,253,191,255,255,253, + // 0x017d Ž + 19,35,175,21,1,0,1,80,0,5,0,2,252,0,127,0,0,191,2,253,0,0,47,219,244,0,0,15,255,208,0,0,3,255,128,0,0,1,170,0,0,0,0,0,0,0,21,85,85,85,84,127,255,255,255,248,127,255,255,255,248,127,255,255,255,248,0,0,0,47,240,0,0,0,63,192,0,0,0,255,128,0,0,2,255,0,0,0,3,252,0,0,0,15,248,0,0,0,47,240,0,0,0,63,192,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,192,0,0,0,255,64,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,229,85,85,84,191,255,255,255,252,191,255,255,255,252,191,255,255,255,252, + // 0x017e ž + 16,29,116,18,1,0,21,0,0,80,47,192,7,240,11,240,47,208,2,253,191,64,0,255,253,0,0,63,248,0,0,26,160,0,0,0,0,0,0,0,0,0,63,255,255,252,63,255,255,252,63,255,255,252,0,0,15,244,0,0,31,240,0,0,63,192,0,0,255,64,0,2,254,0,0,7,252,0,0,15,240,0,0,47,208,0,0,127,192,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,208,0,0,191,255,255,253,191,255,255,253,191,255,255,253, + // 0x017f ſ + 11,29,87,13,3,0,0,5,0,2,255,248,31,255,248,63,255,240,127,208,16,191,64,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Simplified_Chinese_27.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Simplified_Chinese_27.cpp new file mode 100644 index 0000000000..7228cff311 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Simplified_Chinese_27.cpp @@ -0,0 +1,778 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Simplified Chinese 37pt, capital 'A' height: 27px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 +extern const uint8_t NotoSans_Medium_Simplified_Chinese_27[24699] = { + 162,27,28,32,26,255,35,247, // unifont_t + // 0x201c “ + 28,32,14,10,40,14,0,17,0,80,1,80,3,240,7,224,3,240,15,208,11,240,31,192,15,224,47,192,31,208,63,128,47,192,127,64,63,192,255,64,127,192,255,0,106,64,170,0, + // 0x201d ” + 29,32,14,10,40,14,0,17,5,80,5,80,15,244,47,224,15,240,47,208,15,224,63,192,31,208,63,128,47,192,127,64,63,128,191,0,63,0,254,0,127,0,252,0,105,0,164,0, + // 0x22bf ⊿ + 191,34,29,30,240,37,3,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,2,192,0,0,0,0,0,0,11,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,191,192,0,0,0,0,0,2,255,192,0,0,0,0,0,11,255,192,0,0,0,0,0,47,239,192,0,0,0,0,0,191,143,192,0,0,0,0,2,254,15,192,0,0,0,0,11,248,15,192,0,0,0,0,47,224,15,192,0,0,0,0,191,128,15,192,0,0,0,2,254,0,15,192,0,0,0,11,248,0,15,192,0,0,0,31,224,0,15,192,0,0,0,127,128,0,15,192,0,0,1,255,0,0,15,192,0,0,7,252,0,0,15,192,0,0,31,240,0,0,15,192,0,0,127,192,0,0,15,192,0,1,255,0,0,0,15,192,0,7,252,0,0,0,15,192,0,31,240,0,0,0,15,192,0,127,192,0,0,0,15,192,1,255,0,0,0,0,15,192,7,255,255,255,255,255,255,192,31,255,255,255,255,255,255,192,127,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0, + // 0x4e00 一 + 0,78,35,4,36,37,1,13,63,255,255,255,255,255,255,255,244,127,255,255,255,255,255,255,255,244,127,255,255,255,255,255,255,255,244,127,255,255,255,255,255,255,255,244, + // 0x4e09 三 + 9,78,33,30,14,37,2,255,1,85,85,85,85,85,85,80,0,7,255,255,255,255,255,255,244,0,7,255,255,255,255,255,255,244,0,7,255,255,255,255,255,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,254,0,0,0,63,255,255,255,255,254,0,0,0,63,255,255,255,255,254,0,0,0,26,170,170,170,170,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,21,85,85,85,85,85,85,85,0, + // 0x4e0a 上 + 10,78,33,33,41,37,2,255,0,0,0,5,64,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,255,255,255,248,0,0,0,0,47,255,255,255,248,0,0,0,0,47,255,255,255,248,0,0,0,0,47,229,85,85,80,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,85,85,85,127,229,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x4e0b 下 + 11,78,33,32,32,37,2,253,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,106,170,170,175,250,170,170,170,64,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,232,0,0,0,0,0,0,0,15,255,128,0,0,0,0,0,0,15,255,248,0,0,0,0,0,0,15,255,255,64,0,0,0,0,0,15,231,255,240,0,0,0,0,0,15,224,191,254,0,0,0,0,0,15,224,15,255,192,0,0,0,0,15,224,1,255,248,0,0,0,0,15,224,0,63,248,0,0,0,0,15,224,0,11,240,0,0,0,0,15,224,0,1,192,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,208,0,0,0,0, + // 0x4e0d 不 + 13,78,33,33,41,37,2,253,21,85,85,85,85,85,85,85,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,0,0,0,0,255,64,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,63,244,0,0,0,0,0,0,0,191,244,0,0,0,0,0,0,2,255,244,176,0,0,0,0,0,7,255,246,253,0,0,0,0,0,31,255,251,255,128,0,0,0,0,127,247,244,191,240,0,0,0,2,255,199,244,31,253,0,0,0,11,255,7,244,7,255,128,0,0,63,252,7,244,0,255,224,0,1,255,240,7,244,0,47,252,0,15,255,128,7,244,0,11,255,0,191,253,0,7,244,0,2,255,192,255,240,0,7,244,0,0,127,192,63,128,0,7,244,0,0,47,0,28,0,0,7,244,0,0,4,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0, + // 0x4e13 专 + 19,78,33,36,68,37,2,252,0,0,0,63,64,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,191,0,0,0,0,0,3,255,255,255,255,255,255,240,0,3,255,255,255,255,255,255,240,0,3,255,255,255,255,255,255,240,0,1,85,87,253,85,85,85,64,0,0,0,3,248,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,11,240,0,0,0,0,0,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,85,85,127,213,85,85,85,85,0,0,0,63,64,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,255,0,0,0,1,0,0,0,1,255,255,255,255,255,192,0,0,2,255,255,255,255,255,224,0,0,3,255,255,255,255,255,192,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,255,192,0,0,0,0,126,64,3,255,0,0,0,0,0,255,253,15,252,0,0,0,0,0,191,255,255,240,0,0,0,0,0,2,255,255,192,0,0,0,0,0,0,27,255,253,0,0,0,0,0,0,0,127,255,208,0,0,0,0,0,0,6,255,240,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,2,192,0,0,0,0,0,0,0,0,0,0,0, + // 0x4e1d 丝 + 29,78,33,33,41,37,2,255,0,0,80,0,0,0,128,0,0,0,0,253,0,0,2,252,0,0,0,1,253,0,0,3,248,0,0,0,3,252,0,0,7,240,0,0,0,3,244,0,0,15,224,0,0,0,11,240,0,0,31,192,0,0,0,15,208,0,0,63,128,0,0,0,47,192,45,0,127,0,36,0,0,63,64,63,128,254,0,127,0,0,190,0,191,1,252,0,255,0,1,252,1,254,3,244,2,253,0,3,248,3,252,11,240,3,248,0,11,240,7,244,47,192,15,240,0,47,255,255,224,191,255,255,208,0,47,255,255,192,127,255,255,128,0,31,255,255,64,63,255,255,0,0,9,65,254,0,20,2,252,0,0,0,3,252,0,0,11,244,0,0,0,11,240,0,0,31,208,0,0,0,47,208,0,0,63,128,0,0,0,127,64,0,0,254,0,0,0,1,253,0,0,3,252,0,0,0,7,254,175,254,31,250,175,255,0,31,255,255,254,127,255,255,255,0,15,255,255,253,63,255,255,255,0,11,250,149,0,47,234,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x4e2a 个 + 42,78,35,34,50,37,1,253,0,0,0,3,253,0,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,31,255,192,0,0,0,0,0,0,63,255,224,0,0,0,0,0,0,255,143,248,0,0,0,0,0,3,255,3,254,0,0,0,0,0,15,252,1,255,128,0,0,0,0,47,244,0,127,224,0,0,0,0,255,208,0,31,248,0,0,0,3,255,64,0,7,255,0,0,0,31,253,0,0,1,255,208,0,0,127,240,0,0,0,63,248,0,3,255,192,1,252,0,11,255,128,31,254,0,1,252,0,2,255,244,255,244,0,1,252,0,0,127,252,127,192,0,1,252,0,0,11,244,45,0,0,1,252,0,0,1,224,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0, + // 0x4e2d 中 + 45,78,31,35,24,37,3,253,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,21,85,85,111,213,85,85,80,127,255,255,255,255,255,255,244,127,255,255,255,255,255,255,244,127,255,255,255,255,255,255,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,85,85,111,213,85,87,244,127,255,255,255,255,255,255,244,127,255,255,255,255,255,255,244,127,255,255,255,255,255,255,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0, + // 0x4e3a 为 + 58,78,32,35,24,37,2,253,0,0,0,63,64,0,0,0,0,24,0,63,64,0,0,0,0,255,0,63,64,0,0,0,0,127,128,63,64,0,0,0,0,63,208,63,64,0,0,0,0,15,240,63,64,0,0,0,0,7,244,63,64,0,0,0,0,3,128,63,0,0,0,0,0,0,0,127,0,0,0,0,63,255,255,255,255,255,255,253,63,255,255,255,255,255,255,253,63,255,255,255,255,255,255,253,21,85,85,255,85,85,86,253,0,0,0,254,0,0,1,252,0,0,0,254,0,0,1,252,0,0,1,253,0,0,1,252,0,0,2,252,0,0,2,252,0,0,3,252,46,0,2,252,0,0,3,248,191,64,2,252,0,0,11,240,63,192,2,252,0,0,15,240,15,240,2,252,0,0,47,208,7,248,3,252,0,0,63,192,3,252,3,252,0,0,191,128,0,254,3,248,0,1,255,0,0,184,3,248,0,3,253,0,0,0,3,248,0,15,252,0,0,0,3,244,0,63,240,0,0,0,7,244,0,255,192,0,0,0,11,240,3,255,64,0,0,0,15,240,31,253,0,0,0,0,47,240,191,244,0,0,3,255,255,208,63,192,0,0,2,255,255,192,14,0,0,0,1,255,255,0,0,0,0,0,0,85,80,0, + // 0x4e3b 主 + 59,78,33,34,50,37,2,254,0,0,0,24,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,255,208,0,0,0,0,0,0,0,63,244,0,0,0,0,0,0,0,15,253,0,0,0,0,0,0,0,2,255,64,0,0,0,0,0,0,0,191,192,0,0,0,5,85,85,85,127,85,85,84,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,85,85,91,249,85,85,64,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,85,85,85,85,85,85,85,85,64, + // 0x4e49 义 + 73,78,34,35,59,37,1,253,0,0,0,2,192,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,3,248,0,1,228,0,0,0,0,2,252,0,2,253,0,0,111,0,0,253,0,3,252,0,0,127,64,0,191,0,7,248,0,0,63,128,0,127,64,11,240,0,0,47,192,0,63,128,15,224,0,0,15,224,0,41,0,47,208,0,0,11,240,0,0,0,63,192,0,0,3,248,0,0,0,191,64,0,0,2,252,0,0,0,255,0,0,0,0,255,0,0,2,253,0,0,0,0,191,64,0,7,252,0,0,0,0,63,192,0,15,240,0,0,0,0,31,240,0,47,224,0,0,0,0,11,248,0,127,192,0,0,0,0,3,254,1,255,0,0,0,0,0,1,255,67,253,0,0,0,0,0,0,127,223,248,0,0,0,0,0,0,47,255,224,0,0,0,0,0,0,11,255,192,0,0,0,0,0,0,7,255,128,0,0,0,0,0,0,31,255,224,0,0,0,0,0,0,191,255,253,0,0,0,0,0,7,255,139,255,128,0,0,0,0,63,253,1,255,244,0,0,0,7,255,224,0,63,255,64,0,0,127,255,64,0,7,255,248,0,27,255,248,0,0,0,191,255,208,127,255,128,0,0,0,11,255,240,47,244,0,0,0,0,0,191,208,14,64,0,0,0,0,0,7,128,0,0,0,0,0,0,0,0,0, + // 0x4e4b 之 + 75,78,35,35,59,37,1,253,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,1,85,85,86,253,85,85,84,0,7,255,255,255,255,255,255,254,0,7,255,255,255,255,255,255,255,64,7,255,255,255,255,255,255,254,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,31,244,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,255,128,0,0,0,2,0,0,3,254,0,0,0,0,11,240,0,31,248,0,0,0,0,15,240,0,127,224,0,0,0,0,31,224,1,255,128,0,0,0,0,63,224,11,254,0,0,0,0,0,127,240,63,248,0,0,0,0,0,255,253,255,208,0,0,0,0,1,255,255,255,0,0,0,0,0,3,252,191,252,0,0,0,0,0,7,248,63,249,0,0,0,0,0,15,240,11,255,233,64,0,0,0,63,224,1,255,255,255,255,255,244,191,192,0,47,255,255,255,255,240,47,64,0,1,111,255,255,255,224,6,0,0,0,0,5,85,85,64, + // 0x4e86 了 + 134,78,29,32,0,37,4,253,255,255,255,255,255,255,253,0,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,64,85,85,85,85,85,95,254,0,0,0,0,0,0,47,248,0,0,0,0,0,0,191,224,0,0,0,0,0,2,255,128,0,0,0,0,0,15,254,0,0,0,0,0,0,63,244,0,0,0,0,0,1,255,208,0,0,0,0,0,63,255,0,0,0,0,0,0,63,248,0,0,0,0,0,0,63,208,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,21,85,191,64,0,0,0,0,31,255,255,0,0,0,0,0,15,255,254,0,0,0,0,0,11,255,228,0,0,0,0, + // 0x4e8c 二 + 140,78,33,26,234,37,2,1,1,170,170,170,170,170,170,160,0,2,255,255,255,255,255,255,224,0,2,255,255,255,255,255,255,224,0,2,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192, + // 0x4e8e 于 + 142,78,33,33,41,37,2,253,1,85,85,85,85,85,85,80,0,7,255,255,255,255,255,255,244,0,7,255,255,255,255,255,255,244,0,7,255,255,255,255,255,255,244,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,85,85,85,87,253,85,85,85,64,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,1,255,255,248,0,0,0,0,0,0,255,255,240,0,0,0,0,0,0,191,255,208,0,0,0,0,0,0,42,148,0,0,0,0,0, + // 0x4ea4 交 + 164,78,33,36,68,37,2,252,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,85,85,85,91,249,85,85,85,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,61,0,0,15,128,0,0,0,0,255,128,0,63,240,0,0,0,3,255,0,0,31,253,0,0,0,15,252,0,0,7,255,128,0,0,63,240,0,0,0,255,224,0,1,255,192,0,0,0,47,248,0,11,255,1,0,0,20,11,255,0,127,252,63,0,0,63,130,255,128,127,224,63,128,0,191,64,191,64,15,64,47,192,0,255,0,44,0,4,0,15,224,2,253,0,0,0,0,0,11,244,7,252,0,0,0,0,0,3,252,15,244,0,0,0,0,0,1,255,63,224,0,0,0,0,0,0,191,255,192,0,0,0,0,0,0,63,255,0,0,0,0,0,0,0,31,253,0,0,0,0,0,0,0,127,255,64,0,0,0,0,0,2,255,255,240,0,0,0,0,0,47,255,127,254,0,0,0,0,6,255,248,11,255,228,0,0,1,191,255,208,1,255,255,144,0,191,255,253,0,0,47,255,255,128,255,255,208,0,0,2,255,255,192,63,248,0,0,0,0,27,255,0,46,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0, + // 0x4eae 亮 + 174,78,33,36,68,37,2,252,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,47,213,85,85,85,255,0,0,0,47,128,0,0,0,191,0,0,0,47,128,0,0,0,191,0,0,0,47,213,85,85,85,255,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,170,170,170,170,170,170,191,64,126,0,0,0,0,0,0,63,64,126,0,31,192,7,244,0,63,64,126,0,31,192,7,244,0,63,64,126,0,47,192,7,244,0,63,64,0,0,63,192,7,244,0,0,0,0,0,63,128,7,244,0,0,0,0,0,191,64,7,244,0,0,0,0,0,255,0,7,244,0,13,0,0,3,253,0,7,244,0,15,192,0,47,252,0,7,244,0,31,192,6,255,240,0,3,248,0,47,192,255,255,128,0,3,255,255,255,64,191,248,0,0,2,255,255,255,0,62,64,0,0,0,191,255,248,0,0,0,0,0,0,0,0,0,0, + // 0x4ece 从 + 206,78,35,33,41,37,1,253,0,0,191,0,0,15,208,0,0,0,0,255,0,0,31,208,0,0,0,0,255,0,0,31,208,0,0,0,0,255,0,0,31,208,0,0,0,0,255,0,0,31,208,0,0,0,0,255,0,0,31,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,208,0,0,0,0,254,0,0,47,208,0,0,0,1,253,0,0,63,224,0,0,0,1,253,0,0,63,240,0,0,0,2,252,0,0,63,240,0,0,0,2,252,0,0,127,240,0,0,0,3,253,0,0,127,244,0,0,0,3,255,0,0,191,248,0,0,0,3,255,192,0,255,252,0,0,0,7,255,224,0,255,252,0,0,0,11,255,248,1,254,253,0,0,0,15,247,253,2,252,254,0,0,0,15,242,255,3,252,191,0,0,0,31,224,255,135,248,127,64,0,0,47,208,63,207,240,63,192,0,0,63,192,47,159,240,47,208,0,0,127,128,14,63,208,15,240,0,0,255,64,4,191,192,15,244,0,1,255,0,0,255,64,7,252,0,3,254,0,3,255,0,3,255,0,7,252,0,15,252,0,0,255,192,15,248,0,63,248,0,0,191,240,63,240,0,255,224,0,0,63,244,127,208,0,127,192,0,0,15,224,11,128,0,15,0,0,0,3,192,1,0,0,0,0,0,0,0,0, + // 0x4ee4 令 + 228,78,35,35,59,37,1,253,0,0,0,3,253,0,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,31,255,192,0,0,0,0,0,0,63,255,240,0,0,0,0,0,0,255,143,248,0,0,0,0,0,3,254,3,255,0,0,0,0,0,15,252,0,255,192,0,0,0,0,63,240,0,63,240,0,0,0,1,255,192,0,15,253,0,0,0,11,255,0,0,3,255,128,0,0,47,248,0,0,0,191,240,0,1,255,255,255,255,255,239,253,0,11,255,79,255,255,255,199,255,208,127,253,15,255,255,255,193,255,248,63,240,0,0,0,0,0,63,240,31,128,0,0,0,0,0,11,208,9,0,0,0,0,0,0,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,11,240,0,0,0,0,63,128,47,255,240,0,0,0,0,63,128,15,255,224,0,0,0,0,63,128,15,255,128,0,0,0,0,63,128,1,64,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0, + // 0x4ee5 以 + 229,78,35,32,32,37,1,253,0,127,64,0,0,0,3,248,0,0,127,64,0,0,0,3,252,0,0,127,64,1,0,0,3,248,0,0,63,64,47,64,0,7,244,0,0,63,64,127,192,0,7,244,0,0,63,64,31,240,0,11,240,0,0,63,64,11,248,0,11,240,0,0,63,64,3,252,0,15,240,0,0,63,128,1,255,0,15,224,0,0,63,128,0,255,64,31,208,0,0,63,128,0,127,192,47,192,0,0,63,128,0,63,128,63,192,0,0,63,128,0,24,0,63,128,0,0,63,128,0,0,0,127,64,0,0,63,128,0,0,0,255,0,0,0,63,128,0,0,0,255,0,0,0,63,128,0,0,2,253,0,0,0,63,192,0,0,3,252,0,0,0,63,192,9,0,11,248,0,0,0,47,192,190,0,31,248,0,0,0,47,223,255,0,63,253,0,0,0,47,255,255,0,191,255,64,0,0,127,255,224,2,255,255,208,0,11,255,254,0,11,254,63,240,0,127,255,208,0,47,248,15,252,0,63,249,0,0,255,240,3,255,0,63,128,0,7,255,192,0,255,192,20,0,0,127,254,0,0,127,224,0,0,7,255,244,0,0,47,244,0,0,15,255,192,0,0,11,244,0,0,3,253,0,0,0,3,208,0,0,0,208,0,0,0,1,64, + // 0x4ef6 件 + 246,78,35,35,59,37,1,253,0,0,80,0,0,21,0,0,0,0,0,254,0,0,63,64,0,0,0,1,253,7,144,63,64,0,0,0,2,252,11,240,63,64,0,0,0,3,248,15,224,63,64,0,0,0,11,240,15,208,63,64,0,0,0,15,224,15,192,63,64,0,0,0,47,192,47,213,127,149,85,0,0,63,128,63,255,255,255,255,128,0,255,0,63,255,255,255,255,128,2,255,0,191,255,255,255,255,128,3,255,0,254,0,63,64,0,0,15,255,1,252,0,63,64,0,0,47,255,3,252,0,63,64,0,0,191,255,7,244,0,63,64,0,0,127,127,1,240,0,63,64,0,0,62,63,0,0,0,63,64,0,0,28,63,0,0,0,63,64,0,0,0,63,1,85,85,127,149,85,80,0,63,3,255,255,255,255,255,244,0,63,3,255,255,255,255,255,244,0,63,3,255,255,255,255,255,244,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0, + // 0x4efd 份 + 253,78,35,35,59,37,1,253,0,0,160,0,0,0,0,0,0,0,0,253,0,31,255,255,0,0,0,2,252,0,31,255,255,0,0,0,3,248,0,31,255,255,64,0,0,7,244,2,64,0,47,192,0,0,15,240,7,240,0,31,192,0,0,31,208,11,240,0,15,224,0,0,63,192,15,208,0,15,240,0,0,191,64,47,192,0,7,244,0,1,255,0,63,128,0,3,252,0,3,255,0,191,0,0,1,254,0,11,255,1,253,0,0,0,255,64,31,255,3,252,0,0,0,127,192,127,255,11,240,0,0,0,47,244,255,255,31,224,0,0,0,15,248,255,127,63,255,255,255,255,251,240,124,63,15,47,255,255,255,244,192,32,63,0,47,255,255,255,244,0,0,63,0,0,31,208,3,244,0,0,63,0,0,31,192,3,244,0,0,63,0,0,31,192,3,244,0,0,63,0,0,47,128,3,240,0,0,63,0,0,63,128,7,240,0,0,63,0,0,63,64,7,240,0,0,63,0,0,127,0,7,240,0,0,63,0,0,254,0,7,240,0,0,63,0,1,252,0,7,240,0,0,63,0,3,252,0,11,240,0,0,63,0,11,244,0,11,240,0,0,63,0,31,240,0,15,224,0,0,63,0,191,192,0,31,224,0,0,63,3,255,0,47,255,208,0,0,63,3,252,0,15,255,192,0,0,63,1,240,0,15,255,0,0,0,42,0,64,0,1,64,0,0, + // 0x4f11 休 + 17,79,35,35,59,37,1,253,0,0,20,0,0,21,0,0,0,0,0,63,128,0,127,0,0,0,0,0,127,64,0,127,0,0,0,0,0,255,0,0,127,0,0,0,0,1,254,0,0,127,0,0,0,0,3,252,0,0,127,0,0,0,0,7,248,0,0,127,0,0,0,0,15,240,0,0,127,0,0,0,0,47,224,0,0,127,0,0,0,0,127,193,85,85,191,85,85,80,0,255,199,255,255,255,255,255,240,2,255,199,255,255,255,255,255,240,11,255,199,255,255,255,255,255,240,47,255,192,0,7,255,240,0,0,127,255,192,0,11,255,244,0,0,255,223,192,0,15,255,252,0,0,127,31,192,0,47,255,253,0,0,60,31,192,0,63,255,191,0,0,16,31,192,0,191,191,63,64,0,0,31,192,0,253,127,47,192,0,0,31,192,3,252,127,15,208,0,0,31,192,7,244,127,11,240,0,0,31,192,15,240,127,3,252,0,0,31,192,63,208,127,2,254,0,0,31,192,191,128,127,0,255,64,0,31,194,255,0,127,0,127,208,0,31,203,252,0,127,0,47,240,0,31,239,244,0,127,0,15,252,0,31,207,224,0,127,0,3,240,0,31,195,128,0,127,0,0,192,0,31,192,0,0,127,0,0,0,0,31,192,0,0,127,0,0,0,0,31,192,0,0,127,0,0,0,0,31,192,0,0,127,0,0,0,0,31,192,0,0,127,0,0,0, + // 0x4f20 传 + 32,79,34,36,68,37,1,252,0,0,164,0,0,164,0,0,0,0,0,254,0,1,252,0,0,0,0,1,252,0,3,248,0,0,0,0,3,248,0,3,244,0,0,0,0,7,244,255,255,255,255,255,64,0,15,240,255,255,255,255,255,64,0,31,208,255,255,255,255,255,64,0,63,192,0,15,224,0,0,0,0,191,64,0,31,192,0,0,0,1,255,0,0,47,192,0,0,0,3,255,0,0,63,128,0,0,0,11,255,15,255,255,255,255,255,240,47,255,15,255,255,255,255,255,240,127,255,15,255,255,255,255,255,240,255,255,0,0,254,0,0,0,0,191,127,0,0,253,0,0,0,0,60,127,0,2,252,0,0,0,0,52,127,0,3,252,0,0,0,0,0,127,0,3,248,0,0,0,0,0,127,0,7,255,255,255,254,0,0,127,0,11,255,255,255,255,64,0,127,0,15,255,255,255,253,0,0,127,0,0,0,0,11,248,0,0,127,0,0,0,0,47,224,0,0,127,0,0,0,0,191,192,0,0,127,0,0,8,1,255,0,0,0,127,0,0,63,135,252,0,0,0,127,0,0,191,255,240,0,0,0,127,0,0,31,255,192,0,0,0,127,0,0,2,255,192,0,0,0,127,0,0,0,127,240,0,0,0,127,0,0,0,15,253,0,0,0,127,0,0,0,3,255,0,0,0,127,0,0,0,0,189,0,0,0,63,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0, + // 0x4f4d 位 + 77,79,35,35,59,37,1,253,0,0,36,0,0,42,0,0,0,0,0,191,0,0,127,0,0,0,0,0,254,0,0,127,0,0,0,0,2,252,0,0,127,0,0,0,0,3,248,0,0,127,0,0,0,0,11,240,0,0,127,0,0,0,0,15,224,0,0,127,0,0,0,0,63,194,255,255,255,255,255,240,0,127,130,255,255,255,255,255,240,0,255,130,255,255,255,255,255,240,3,255,128,85,85,85,85,85,64,11,255,128,0,0,0,0,0,0,31,255,128,0,64,0,2,144,0,127,255,128,11,224,0,3,252,0,255,175,128,7,240,0,3,248,0,191,47,128,3,240,0,7,244,0,60,47,128,3,244,0,11,240,0,32,47,128,3,248,0,15,240,0,0,47,128,2,252,0,15,224,0,0,47,128,1,252,0,15,208,0,0,47,128,0,252,0,31,192,0,0,47,128,0,253,0,47,192,0,0,47,128,0,253,0,63,128,0,0,47,128,0,254,0,63,64,0,0,47,128,0,191,0,127,0,0,0,47,128,0,127,0,191,0,0,0,47,128,0,127,0,254,0,0,0,47,128,0,127,0,252,0,0,0,47,128,0,16,1,252,0,0,0,47,128,0,0,3,248,0,0,0,47,135,255,255,255,255,255,248,0,47,135,255,255,255,255,255,248,0,47,135,255,255,255,255,255,248,0,47,129,85,85,85,85,85,80,0,47,64,0,0,0,0,0,0, + // 0x4f4e 低 + 78,79,35,35,59,37,1,253,0,0,80,0,0,0,0,0,0,0,0,253,0,0,0,0,36,0,0,1,252,0,0,0,27,253,0,0,3,248,0,1,111,255,255,64,0,7,244,122,255,255,255,249,0,0,15,240,127,255,255,249,0,0,0,31,208,127,254,155,240,0,0,0,63,192,127,0,7,240,0,0,0,191,64,127,0,7,240,0,0,0,255,0,127,0,7,240,0,0,3,255,0,127,0,7,240,0,0,11,255,0,127,0,7,240,0,0,31,255,0,127,0,3,240,0,0,63,255,0,127,255,255,255,255,244,255,255,0,127,255,255,255,255,244,255,127,0,127,255,255,255,255,244,124,63,0,127,0,3,248,0,0,52,63,0,127,0,2,252,0,0,0,63,0,127,0,2,252,0,0,0,63,0,127,0,1,252,0,0,0,63,0,127,0,0,252,0,0,0,63,0,127,0,0,253,0,0,0,63,0,127,0,0,254,0,0,0,63,0,127,0,4,191,0,0,0,63,0,127,91,254,127,0,0,0,63,5,255,255,254,63,64,64,0,63,15,255,255,254,63,192,184,0,63,11,255,250,64,31,192,188,0,63,7,229,0,0,15,224,252,0,63,0,0,0,0,11,244,252,0,63,0,0,0,0,3,255,248,0,63,3,255,255,255,245,255,244,0,63,3,255,255,255,244,127,224,0,63,3,255,255,255,244,6,64,0,63,0,0,0,0,0,0,0, + // 0x4f53 体 + 83,79,35,35,59,37,1,253,0,0,144,0,0,189,0,0,0,0,2,252,0,0,254,0,0,0,0,3,248,0,0,254,0,0,0,0,7,240,0,0,254,0,0,0,0,15,240,0,0,254,0,0,0,0,31,208,0,0,254,0,0,0,0,63,192,0,0,254,0,0,0,0,63,75,255,255,255,255,255,240,0,255,11,255,255,255,255,255,240,1,255,11,255,255,255,255,255,240,3,255,1,85,95,255,245,85,80,11,255,0,0,15,255,240,0,0,31,255,0,0,31,255,244,0,0,63,255,0,0,63,255,252,0,0,255,255,0,0,126,254,252,0,0,127,127,0,0,189,254,126,0,0,61,127,0,1,252,254,63,0,0,24,127,0,3,248,254,47,128,0,0,127,0,7,240,254,15,192,0,0,127,0,15,224,254,11,240,0,0,127,0,47,192,254,3,244,0,0,127,0,63,128,254,2,252,0,0,127,0,255,0,254,0,255,0,0,127,2,253,0,254,0,191,128,0,127,7,248,0,254,0,63,208,0,127,31,247,255,255,255,223,244,0,127,63,215,255,255,255,203,248,0,127,15,71,255,255,255,194,224,0,127,6,0,0,254,0,0,128,0,127,0,0,0,254,0,0,0,0,127,0,0,0,254,0,0,0,0,127,0,0,0,254,0,0,0,0,127,0,0,0,254,0,0,0,0,127,0,0,0,254,0,0,0,0,63,0,0,0,169,0,0,0, + // 0x4f59 余 + 89,79,35,36,68,37,1,252,0,0,0,2,252,0,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,31,255,192,0,0,0,0,0,0,127,255,240,0,0,0,0,0,1,255,143,252,0,0,0,0,0,7,255,3,255,0,0,0,0,0,47,252,0,255,208,0,0,0,0,191,240,0,63,248,0,0,0,7,255,128,0,15,255,0,0,0,47,254,0,0,2,255,224,0,1,255,244,0,0,0,191,253,0,31,255,208,0,0,0,31,255,208,127,253,255,255,255,255,253,255,244,47,208,255,255,255,255,252,47,240,14,0,255,255,255,255,252,7,192,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,3,255,255,255,255,255,255,255,128,3,255,255,255,255,255,255,255,128,3,255,255,255,255,255,255,255,128,1,85,85,86,253,85,85,85,0,0,0,0,1,252,0,0,0,0,0,0,144,1,252,0,112,0,0,0,2,253,1,252,2,253,0,0,0,7,252,1,252,2,255,128,0,0,31,240,1,252,0,127,224,0,0,191,192,1,252,0,31,248,0,2,255,0,1,252,0,3,255,0,31,252,0,1,252,0,0,255,128,63,240,1,6,252,0,0,63,224,15,128,11,255,252,0,0,31,128,1,0,3,255,248,0,0,5,0,0,0,3,255,144,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x4f5c 作 + 92,79,35,35,59,37,1,253,0,0,36,0,5,0,0,0,0,0,0,127,0,15,208,0,0,0,0,0,255,0,31,192,0,0,0,0,1,253,0,63,128,0,0,0,0,3,252,0,127,64,0,0,0,0,7,248,0,255,0,0,0,0,0,15,240,0,255,255,255,255,248,0,31,208,2,255,255,255,255,248,0,63,192,3,255,255,255,255,248,0,191,192,15,245,254,85,85,80,0,255,192,31,208,254,0,0,0,3,255,192,63,192,254,0,0,0,11,255,192,191,64,254,0,0,0,31,255,193,255,0,254,0,0,0,63,255,195,252,0,254,0,0,0,127,255,199,248,0,255,255,255,224,63,47,192,240,0,255,255,255,224,29,47,192,0,0,255,255,255,224,4,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,255,255,255,240,0,47,192,0,0,255,255,255,240,0,47,192,0,0,255,255,255,240,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,128,0,0,254,0,0,0, + // 0x4f7f 使 + 127,79,35,36,68,37,1,252,0,0,56,0,0,42,0,0,0,0,0,191,0,0,63,64,0,0,0,0,254,0,0,63,64,0,0,0,2,252,0,0,63,64,0,0,0,3,251,255,255,255,255,255,244,0,11,243,255,255,255,255,255,244,0,15,227,255,255,255,255,255,244,0,63,192,0,0,127,64,0,0,0,127,128,0,0,63,64,0,0,0,255,128,0,0,63,64,0,0,3,255,128,255,255,255,255,255,208,11,255,128,255,255,255,255,255,208,47,255,128,255,255,255,255,255,208,191,255,128,252,0,63,64,15,208,255,111,128,252,0,63,64,15,208,127,47,128,252,0,63,64,15,208,60,47,128,252,0,63,64,15,208,16,47,128,252,0,63,64,15,208,0,47,128,255,255,255,255,255,208,0,47,128,255,255,255,255,255,208,0,47,128,255,255,255,255,255,208,0,47,128,0,0,127,0,0,0,0,47,128,189,0,190,0,0,0,0,47,128,127,0,254,0,0,0,0,47,128,47,193,253,0,0,0,0,47,128,15,242,252,0,0,0,0,47,128,3,255,248,0,0,0,0,47,128,0,255,240,0,0,0,0,47,128,0,127,248,0,0,0,0,47,128,1,255,255,144,0,0,0,47,128,31,255,255,254,64,0,0,47,130,255,248,31,255,255,148,0,47,143,255,208,1,255,255,244,0,47,131,254,0,0,11,255,224,0,47,130,144,0,0,0,26,192,0,0,0,0,0,0,0,0,0, + // 0x4f9b 供 + 155,79,35,35,59,37,1,253,0,0,96,0,168,0,10,128,0,0,0,254,0,253,0,31,192,0,0,1,253,0,253,0,31,192,0,0,2,252,0,253,0,31,192,0,0,3,248,0,253,0,31,192,0,0,11,240,0,253,0,31,192,0,0,15,224,0,253,0,31,192,0,0,47,192,0,253,0,31,192,0,0,127,129,255,255,255,255,255,240,0,255,1,255,255,255,255,255,240,2,255,1,255,255,255,255,255,240,7,255,0,85,254,85,111,213,80,15,255,0,0,253,0,31,192,0,63,255,0,0,253,0,31,192,0,255,255,0,0,253,0,31,192,0,191,127,0,0,253,0,31,192,0,61,63,0,0,253,0,31,192,0,36,63,0,0,253,0,31,192,0,0,63,0,0,253,0,31,192,0,0,63,1,85,254,85,111,213,80,0,63,7,255,255,255,255,255,244,0,63,7,255,255,255,255,255,244,0,63,7,255,255,255,255,255,244,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,185,0,7,64,0,0,63,0,0,254,0,47,192,0,0,63,0,3,252,0,15,240,0,0,63,0,11,244,0,7,252,0,0,63,0,47,224,0,2,254,0,0,63,0,191,192,0,0,191,64,0,63,2,255,0,0,0,63,192,0,63,11,253,0,0,0,15,240,0,63,2,244,0,0,0,11,208,0,63,0,80,0,0,0,2,0, + // 0x4fb5 侵 + 181,79,35,36,68,37,1,252,0,0,164,0,0,0,0,0,0,0,0,253,42,170,170,170,169,0,0,2,252,63,255,255,255,254,0,0,3,248,63,255,255,255,254,0,0,7,244,0,0,0,0,190,0,0,15,240,0,0,0,0,190,0,0,31,208,10,170,170,170,254,0,0,63,192,15,255,255,255,254,0,0,191,64,15,255,255,255,254,0,0,255,0,0,0,0,0,190,0,3,255,0,0,0,0,0,190,0,11,255,0,106,170,170,170,254,0,31,255,0,127,255,255,255,254,0,63,255,0,127,255,255,255,254,0,255,255,0,0,0,0,0,0,0,255,127,0,0,0,0,0,0,0,125,63,6,170,170,170,170,170,160,52,63,7,255,255,255,255,255,240,0,63,7,255,255,255,255,255,240,0,63,7,224,0,0,0,3,240,0,63,7,224,0,0,0,3,240,0,63,7,250,170,170,170,171,240,0,63,1,111,255,255,255,253,80,0,63,0,47,255,255,255,248,0,0,63,0,1,184,0,11,240,0,0,63,0,2,253,0,47,208,0,0,63,0,0,255,64,191,128,0,0,63,0,0,63,227,254,0,0,0,63,0,0,15,255,248,0,0,0,63,0,0,3,255,240,0,0,0,63,0,0,111,255,255,64,0,0,63,0,111,255,251,255,254,80,0,63,11,255,255,64,127,255,248,0,63,3,255,228,0,6,255,240,0,63,1,228,0,0,0,6,192,0,0,0,0,0,0,0,0,0, + // 0x4fdd 保 + 221,79,35,35,59,37,1,253,0,0,32,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,254,63,255,255,255,255,64,0,1,253,63,255,255,255,255,64,0,3,252,63,255,255,255,255,64,0,7,244,63,64,0,0,63,64,0,15,240,63,64,0,0,63,64,0,47,208,63,64,0,0,63,64,0,63,192,63,64,0,0,63,64,0,255,128,63,64,0,0,63,64,2,255,128,63,64,0,0,63,64,7,255,128,63,255,255,255,255,64,15,255,128,63,255,255,255,255,64,63,255,128,63,255,255,255,255,64,255,239,128,0,0,63,64,0,0,127,47,128,0,0,63,64,0,0,61,47,128,0,0,63,64,0,0,20,47,128,0,0,63,64,0,0,0,47,135,255,255,255,255,255,240,0,47,135,255,255,255,255,255,240,0,47,135,255,255,255,255,255,240,0,47,128,0,7,255,244,0,0,0,47,128,0,15,255,252,0,0,0,47,128,0,47,255,254,0,0,0,47,128,0,191,191,127,128,0,0,47,128,1,254,63,111,208,0,0,47,128,7,252,63,79,244,0,0,47,128,47,240,63,67,253,0,0,47,128,191,208,63,65,255,64,0,47,135,255,64,63,64,127,224,0,47,159,253,0,63,64,31,252,0,47,139,244,0,63,64,7,244,0,47,131,192,0,63,64,1,208,0,47,128,0,0,63,64,0,0,0,47,64,0,0,63,0,0,0, + // 0x4fe1 信 + 225,79,35,35,59,37,1,253,0,0,32,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,254,11,255,255,255,252,0,0,1,253,11,255,255,255,252,0,0,3,252,11,255,255,255,252,0,0,7,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,47,211,255,255,255,255,255,248,0,63,131,255,255,255,255,255,248,0,255,131,255,255,255,255,255,244,2,255,128,0,0,0,0,0,0,7,255,128,0,0,0,0,0,0,31,255,128,15,255,255,255,254,0,63,255,128,15,255,255,255,255,0,255,239,128,15,255,255,255,255,0,191,47,128,0,0,0,0,0,0,61,47,128,0,0,0,0,0,0,56,47,128,0,0,0,0,0,0,0,47,128,15,255,255,255,254,0,0,47,128,15,255,255,255,254,0,0,47,128,10,170,170,170,170,0,0,47,128,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,47,128,47,255,255,255,255,0,0,47,128,47,255,255,255,255,0,0,47,128,47,234,170,170,255,0,0,47,128,47,128,0,0,63,0,0,47,128,47,128,0,0,63,0,0,47,128,47,128,0,0,63,0,0,47,128,47,128,0,0,63,0,0,47,128,47,255,255,255,255,0,0,47,128,47,255,255,255,255,0,0,47,128,47,255,255,255,255,0,0,47,128,47,128,0,0,63,0,0,26,64,47,128,0,0,42,0, + // 0x503c 值 + 60,80,35,35,59,37,1,253,0,0,80,0,0,58,64,0,0,0,0,253,0,0,63,64,0,0,0,1,252,0,0,127,0,0,0,0,3,248,0,0,127,0,0,0,0,3,246,255,255,255,255,255,208,0,11,242,255,255,255,255,255,208,0,15,210,255,255,255,255,255,208,0,47,192,0,0,252,0,0,0,0,127,64,0,1,252,0,0,0,0,255,0,0,1,248,0,0,0,2,255,0,63,255,255,255,253,0,3,255,0,63,255,255,255,253,0,15,255,0,63,170,170,170,253,0,47,255,0,63,0,0,0,253,0,127,255,0,63,0,0,0,253,0,191,191,0,63,149,85,85,253,0,62,127,0,63,255,255,255,253,0,28,127,0,63,255,255,255,253,0,0,127,0,63,0,0,0,253,0,0,127,0,63,0,0,0,253,0,0,127,0,63,149,85,85,253,0,0,127,0,63,255,255,255,253,0,0,127,0,63,255,255,255,253,0,0,127,0,63,0,0,0,253,0,0,127,0,63,0,0,0,253,0,0,127,0,63,0,0,0,253,0,0,127,0,63,255,255,255,253,0,0,127,0,63,255,255,255,253,0,0,127,0,63,149,85,85,253,0,0,127,0,63,0,0,0,253,0,0,127,0,63,0,0,0,253,0,0,127,31,255,255,255,255,255,244,0,127,31,255,255,255,255,255,244,0,127,31,255,255,255,255,255,244,0,127,0,0,0,0,0,0,0, + // 0x503e 倾 + 62,80,35,36,68,37,1,252,0,6,64,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,192,0,47,255,255,255,244,0,31,192,0,47,255,255,255,244,0,63,139,208,47,255,255,255,244,0,63,11,208,0,0,254,0,0,0,191,11,208,0,0,253,0,0,0,254,11,208,0,1,252,0,0,1,253,11,208,0,2,248,0,0,3,252,11,208,3,255,255,255,192,7,252,11,208,3,255,255,255,192,15,252,11,255,227,255,255,255,192,47,252,11,255,227,240,0,31,192,63,252,11,255,227,240,84,31,192,255,252,11,208,3,240,188,31,192,254,252,11,208,3,240,188,31,192,188,252,11,208,3,240,188,31,192,52,252,11,208,3,240,188,31,192,16,252,11,208,3,240,188,31,192,0,252,11,208,3,240,188,31,192,0,252,11,208,3,240,188,31,192,0,252,11,208,3,240,188,31,192,0,252,11,208,147,240,252,31,192,0,252,11,219,211,240,252,31,192,0,252,15,255,211,240,252,31,192,0,252,31,255,67,241,248,31,192,0,252,47,248,2,146,244,5,64,0,252,15,128,0,3,242,64,0,0,252,9,0,0,15,231,224,0,0,252,0,0,0,47,203,252,0,0,252,0,0,0,191,65,255,64,0,252,0,0,3,254,0,127,208,0,252,0,0,47,244,0,15,244,0,252,0,0,127,192,0,3,224,0,252,0,0,29,0,0,0,128,0,0,0,0,0,0,0,0,0, + // 0x504f 偏 + 79,80,35,35,59,37,1,253,0,1,64,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,7,243,255,255,255,255,255,244,0,11,227,255,255,255,255,255,244,0,15,211,255,255,255,255,255,244,0,47,192,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,127,0,106,170,170,170,170,128,0,255,0,191,255,255,255,255,192,1,254,0,191,255,255,255,255,192,3,254,0,189,0,0,0,31,192,11,254,0,189,0,0,0,31,192,31,254,0,189,0,0,0,31,192,63,254,0,191,170,170,170,191,192,191,254,0,191,255,255,255,255,192,255,190,0,191,255,255,255,255,192,188,190,0,253,0,0,0,0,0,52,190,0,253,0,0,0,0,0,16,190,0,255,170,170,170,170,144,0,190,0,255,255,255,255,255,224,0,190,0,255,255,255,255,255,224,0,190,0,255,208,244,46,7,224,0,190,1,255,208,244,46,7,224,0,190,2,255,208,244,46,7,224,0,190,3,255,208,244,46,7,224,0,190,3,251,255,255,255,255,224,0,190,7,251,255,255,255,255,224,0,190,11,235,250,254,191,175,224,0,190,15,219,208,244,46,7,224,0,190,47,203,208,244,46,7,224,0,190,127,75,208,244,46,7,224,0,190,191,11,208,244,46,7,224,0,190,45,11,208,244,46,191,224,0,190,4,11,208,244,46,127,208,0,126,0,11,192,164,41,62,64, + // 0x505c 停 + 92,80,35,35,59,37,1,253,0,0,80,0,0,42,0,0,0,0,0,253,0,0,127,0,0,0,0,1,252,0,0,127,0,0,0,0,3,252,0,0,127,0,0,0,0,7,247,255,255,255,255,255,244,0,15,243,255,255,255,255,255,244,0,31,211,255,255,255,255,255,244,0,63,192,0,0,0,0,0,0,0,127,64,5,85,85,85,84,0,0,255,0,31,255,255,255,254,0,3,255,0,31,255,255,255,254,0,7,255,0,31,128,0,0,254,0,31,255,0,31,128,0,0,254,0,63,255,0,31,213,85,85,254,0,255,255,0,31,255,255,255,254,0,255,127,0,31,255,255,255,254,0,124,63,0,0,0,0,0,0,0,52,63,0,0,0,0,0,0,0,0,63,15,255,255,255,255,255,248,0,63,15,255,255,255,255,255,248,0,63,15,250,170,170,170,171,248,0,63,15,192,0,0,0,1,248,0,63,15,192,0,0,0,1,248,0,63,15,195,255,255,255,245,248,0,63,15,195,255,255,255,245,248,0,63,0,3,255,255,255,240,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,1,255,255,0,0,0,0,63,0,0,255,254,0,0,0,0,63,0,0,191,244,0,0,0, + // 0x50a8 储 + 168,80,35,35,59,37,1,253,0,11,64,0,0,15,192,0,0,0,15,208,0,0,15,192,3,144,0,15,193,0,0,15,192,11,240,0,31,143,192,0,15,192,15,208,0,63,79,240,31,255,255,223,192,0,63,3,252,47,255,255,255,128,0,190,0,254,47,255,255,255,0,0,252,0,127,0,15,192,253,0,1,252,0,40,0,15,194,252,0,3,252,0,0,0,15,199,244,0,7,252,0,0,0,15,207,224,0,15,252,0,0,191,255,255,255,244,47,252,255,248,191,255,255,255,244,127,252,255,248,191,255,255,255,244,255,252,255,248,0,11,248,0,0,189,252,22,248,0,47,240,0,0,56,252,1,248,0,191,192,0,0,32,252,1,248,2,255,64,0,0,0,252,1,248,15,255,255,255,128,0,252,1,248,191,255,255,255,192,0,252,1,249,255,255,255,255,192,0,252,1,248,191,248,0,15,192,0,252,1,248,56,248,0,15,192,0,252,1,248,0,248,0,15,192,0,252,1,248,0,254,170,175,192,0,252,1,248,0,255,255,255,192,0,252,1,248,16,255,255,255,192,0,252,1,249,240,248,0,15,192,0,252,1,255,244,248,0,15,192,0,252,3,255,224,248,0,15,192,0,252,11,255,0,255,255,255,192,0,252,7,244,0,255,255,255,192,0,252,3,192,0,255,255,255,192,0,252,0,0,0,248,0,15,192,0,248,0,0,0,248,0,10,128, + // 0x50cf 像 + 207,80,35,35,59,37,1,253,0,2,64,0,228,0,0,0,0,0,3,244,2,252,0,0,0,0,0,7,240,3,254,170,160,0,0,0,15,224,15,255,255,253,0,0,0,15,208,47,255,255,253,0,0,0,47,192,127,64,3,248,0,0,0,63,129,254,0,15,240,0,0,0,127,7,253,85,111,229,85,64,0,255,47,255,255,255,255,255,192,2,254,63,255,255,255,255,255,192,3,254,11,248,0,190,0,15,192,11,254,2,248,0,190,0,15,192,31,254,2,248,0,190,0,15,192,63,254,2,249,85,190,85,95,192,255,254,2,255,255,255,255,255,192,255,190,2,255,255,255,255,255,192,188,190,0,0,127,227,240,0,0,52,190,0,3,255,66,244,2,64,16,190,0,127,255,192,252,11,224,0,190,11,255,159,240,252,47,240,0,190,15,253,7,248,190,255,128,0,190,3,128,47,252,127,253,0,0,190,0,1,255,190,63,240,0,0,190,0,31,248,63,47,192,0,0,190,2,255,208,63,79,208,0,0,190,15,253,1,255,139,240,0,0,190,7,208,11,255,195,248,0,0,190,1,0,127,239,194,253,0,0,190,0,2,255,79,192,255,64,0,190,0,47,248,15,192,127,208,0,190,6,255,208,47,192,47,244,0,190,47,254,0,127,64,11,240,0,190,15,224,255,255,0,1,192,0,190,5,0,127,252,0,0,0,0,126,0,0,127,160,0,0,0, + // 0x5145 充 + 69,81,34,36,68,37,2,252,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,11,244,0,0,0,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,0,0,11,244,0,4,0,0,0,0,0,15,240,0,63,0,0,0,0,0,47,192,0,191,192,0,0,0,0,63,128,0,47,244,0,0,0,0,191,0,0,11,253,0,0,0,0,254,0,0,1,255,64,0,10,171,255,175,255,255,255,208,0,31,255,255,255,255,255,255,244,0,15,255,255,255,255,255,255,252,0,15,255,254,170,149,80,2,255,0,0,0,0,0,0,0,0,253,0,0,0,15,208,2,252,0,48,0,0,0,31,208,2,252,0,0,0,0,0,31,208,2,252,0,0,0,0,0,47,192,2,252,0,0,0,0,0,47,192,2,252,0,0,0,0,0,63,192,2,252,0,0,0,0,0,127,64,2,252,0,4,0,0,0,255,0,2,252,0,11,128,0,1,255,0,2,252,0,11,208,0,3,253,0,2,252,0,15,208,0,31,248,0,2,252,0,15,208,0,191,240,0,2,252,0,15,192,27,255,192,0,1,253,64,111,192,255,254,0,0,1,255,255,255,128,127,224,0,0,0,255,255,255,0,62,0,0,0,0,47,255,249,0,0,0,0,0,0,0,0,0,0, + // 0x5148 先 + 72,81,33,36,68,37,2,252,0,0,0,3,240,0,0,0,0,0,7,224,3,244,0,0,0,0,0,11,240,3,244,0,0,0,0,0,15,224,3,244,0,0,0,0,0,15,208,3,244,0,0,0,0,0,47,213,87,245,85,85,80,0,0,63,255,255,255,255,255,240,0,0,127,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,1,253,0,3,244,0,0,0,0,3,252,0,3,244,0,0,0,0,7,248,0,3,244,0,0,0,0,15,240,0,3,244,0,0,0,0,7,208,0,3,244,0,0,0,0,0,64,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,21,85,111,213,87,253,85,85,64,0,0,47,192,2,252,0,0,0,0,0,63,192,2,252,0,0,0,0,0,63,128,2,252,0,0,0,0,0,63,64,2,252,0,0,0,0,0,191,0,2,252,0,0,0,0,0,255,0,2,252,0,0,0,0,2,253,0,2,252,0,14,64,0,3,252,0,2,252,0,15,192,0,15,244,0,2,252,0,15,192,0,127,240,0,2,252,0,31,192,2,255,192,0,2,252,0,47,128,111,255,0,0,1,255,255,255,128,255,248,0,0,0,255,255,255,0,63,208,0,0,0,127,255,253,0,29,0,0,0,0,0,85,64,0,0,0,0,0,0,0,0,0,0, + // 0x5149 光 + 73,81,35,36,68,37,1,252,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,64,0,0,109,0,1,252,0,2,248,0,0,191,0,1,252,0,3,252,0,0,63,128,1,252,0,7,248,0,0,47,192,1,252,0,15,240,0,0,15,224,1,252,0,15,224,0,0,11,240,1,252,0,47,192,0,0,3,248,1,252,0,63,128,0,0,3,252,1,252,0,255,0,0,0,1,253,1,252,1,253,0,0,0,0,228,1,252,0,104,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,21,85,91,245,85,255,85,85,80,0,0,11,240,0,191,0,0,0,0,0,11,240,0,191,0,0,0,0,0,15,240,0,191,0,0,0,0,0,15,224,0,191,0,0,0,0,0,15,208,0,191,0,0,0,0,0,31,208,0,191,0,0,0,0,0,63,192,0,191,0,0,0,0,0,63,128,0,191,0,1,0,0,0,255,64,0,191,0,2,208,0,1,255,0,0,191,0,3,244,0,7,253,0,0,191,0,3,244,0,31,248,0,0,191,0,3,244,0,255,240,0,0,191,0,3,240,27,255,192,0,0,191,64,11,240,127,254,0,0,0,127,255,255,224,47,240,0,0,0,63,255,255,192,14,0,0,0,0,11,255,254,64,0,0,0,0,0,0,0,0,0, + // 0x5165 入 + 101,81,34,33,41,37,2,253,0,1,85,85,84,0,0,0,0,0,7,255,255,252,0,0,0,0,0,7,255,255,252,0,0,0,0,0,7,255,255,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,10,253,0,0,0,0,0,0,0,31,254,0,0,0,0,0,0,0,47,255,0,0,0,0,0,0,0,63,255,0,0,0,0,0,0,0,63,255,64,0,0,0,0,0,0,191,191,128,0,0,0,0,0,0,255,47,192,0,0,0,0,0,0,255,31,208,0,0,0,0,0,2,253,15,240,0,0,0,0,0,3,252,11,244,0,0,0,0,0,11,248,7,248,0,0,0,0,0,15,240,3,253,0,0,0,0,0,47,224,1,255,0,0,0,0,0,127,192,0,255,128,0,0,0,0,255,64,0,127,208,0,0,0,2,255,0,0,47,240,0,0,0,11,253,0,0,15,252,0,0,0,47,248,0,0,3,255,0,0,0,191,224,0,0,1,255,192,0,2,255,192,0,0,0,127,244,0,31,255,0,0,0,0,47,254,0,191,252,0,0,0,0,7,255,208,255,224,0,0,0,0,1,255,192,63,64,0,0,0,0,0,63,0,8,0,0,0,0,0,0,8,0, + // 0x5168 全 + 104,81,35,34,50,37,1,254,0,0,0,3,253,0,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,31,255,192,0,0,0,0,0,0,63,255,240,0,0,0,0,0,0,255,143,248,0,0,0,0,0,3,255,3,254,0,0,0,0,0,15,252,1,255,128,0,0,0,0,63,240,0,127,240,0,0,0,0,255,208,0,31,252,0,0,0,7,255,64,0,7,255,64,0,0,31,253,0,0,0,255,224,0,0,191,240,0,0,0,63,253,0,7,255,192,0,0,0,11,255,192,63,254,0,0,0,0,2,255,244,127,247,255,255,255,255,255,175,240,31,71,255,255,255,255,255,71,208,8,7,255,255,255,255,255,64,64,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,253,0,0,0,0,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192, + // 0x5171 共 + 113,81,33,35,59,37,2,253,0,0,169,0,0,26,128,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,5,85,255,85,85,127,213,85,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,85,85,255,85,85,127,213,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,45,0,0,0,0,0,191,192,0,255,128,0,0,0,2,255,64,0,127,240,0,0,0,15,253,0,0,15,253,0,0,0,63,244,0,0,3,255,128,0,1,255,208,0,0,0,191,240,0,15,255,0,0,0,0,31,252,0,127,248,0,0,0,0,7,255,0,47,208,0,0,0,0,0,254,0,6,0,0,0,0,0,0,48,0, + // 0x5173 关 + 115,81,26,36,252,37,5,252,0,4,0,0,1,144,0,0,125,0,0,3,252,0,0,255,0,0,3,252,0,0,63,192,0,11,244,0,0,47,208,0,15,224,0,0,15,240,0,47,192,0,0,7,244,0,63,64,0,0,3,224,0,47,0,0,1,86,85,85,85,85,0,7,255,255,255,255,255,64,7,255,255,255,255,255,64,7,255,255,255,255,255,64,0,0,1,252,0,0,0,0,0,1,252,0,0,0,0,0,1,252,0,0,0,0,0,1,252,0,0,0,0,0,1,252,0,0,0,0,0,2,253,0,0,0,47,255,255,255,255,255,224,47,255,255,255,255,255,224,47,255,255,255,255,255,224,0,0,3,255,0,0,0,0,0,7,255,128,0,0,0,0,11,255,192,0,0,0,0,15,255,224,0,0,0,0,47,219,240,0,0,0,0,127,195,252,0,0,0,0,255,66,255,0,0,0,7,254,0,255,192,0,0,31,248,0,63,244,0,1,255,224,0,15,254,0,27,255,128,0,3,255,224,191,253,0,0,0,255,240,63,224,0,0,0,31,208,14,0,0,0,0,1,128,0,0,0,0,0,0,0, + // 0x5177 具 + 119,81,33,34,50,37,2,253,0,26,170,170,170,170,170,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,47,192,0,0,0,191,0,0,0,47,192,0,0,0,191,0,0,0,47,192,0,0,0,191,0,0,0,47,234,170,170,170,255,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,47,192,0,0,0,191,0,0,0,47,192,0,0,0,191,0,0,0,47,192,0,0,0,191,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,47,234,170,170,170,255,0,0,0,47,192,0,0,0,191,0,0,0,47,192,0,0,0,191,0,0,0,47,234,170,170,170,255,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,47,64,0,62,0,0,0,0,2,255,224,1,255,228,0,0,0,111,255,128,0,191,255,128,0,11,255,248,0,0,7,255,248,0,191,255,128,0,0,0,111,255,128,63,244,0,0,0,0,2,255,0,14,0,0,0,0,0,0,56,0, + // 0x5197 冗 + 151,81,34,33,41,37,2,253,21,85,85,85,85,85,85,85,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,128,0,0,0,0,0,191,0,63,128,0,0,0,0,0,191,0,63,128,0,0,0,0,0,191,0,63,128,0,0,0,0,0,191,0,63,128,0,0,0,0,0,191,0,63,128,0,0,0,0,0,191,0,42,64,191,255,255,255,128,106,0,0,0,191,255,255,255,128,0,0,0,0,191,255,255,255,128,0,0,0,0,191,0,0,127,128,0,0,0,0,191,0,0,63,128,0,0,0,0,191,0,0,63,128,0,0,0,0,191,0,0,63,128,0,0,0,0,191,0,0,63,128,0,0,0,0,255,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,1,253,0,0,63,128,4,0,0,3,252,0,0,63,128,15,64,0,7,248,0,0,63,128,15,224,0,15,240,0,0,63,128,15,208,0,63,224,0,0,63,128,15,208,1,255,192,0,0,63,128,15,192,11,255,0,0,0,63,192,31,192,191,252,0,0,0,63,255,255,192,255,240,0,0,0,47,255,255,64,63,64,0,0,0,15,255,254,0,36,0,0,0,0,0,85,80,0, + // 0x51b7 冷 + 183,81,35,35,59,37,1,253,0,0,0,0,2,248,0,0,0,0,0,0,0,7,254,0,0,0,7,0,0,0,15,255,64,0,0,15,208,0,0,47,255,208,0,0,63,248,0,0,191,143,240,0,0,11,255,0,1,255,7,252,0,0,2,255,192,3,252,2,255,0,0,0,127,208,15,244,0,191,208,0,0,31,128,127,208,0,47,244,0,0,6,1,255,128,0,11,254,0,0,0,7,254,0,0,2,255,208,0,0,47,251,255,255,254,127,248,0,1,255,227,255,255,254,31,244,0,0,255,67,255,255,254,3,224,0,0,124,0,0,0,0,0,128,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,66,255,255,255,255,255,0,0,7,210,255,255,255,255,255,0,0,15,242,255,255,255,255,255,0,0,47,208,0,31,208,0,191,0,0,63,192,0,31,192,0,191,0,0,255,64,0,31,192,0,191,0,1,254,0,0,31,192,0,191,0,3,252,0,0,31,192,0,191,0,11,248,0,0,31,192,0,191,0,31,240,0,0,31,192,0,191,0,63,208,0,0,31,192,255,254,0,127,192,0,0,31,192,191,253,0,31,64,0,0,31,192,127,248,0,6,0,0,0,31,192,20,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0, + // 0x51c6 准 + 198,81,35,35,59,37,1,253,0,0,0,0,164,0,25,0,0,0,0,0,0,254,0,63,192,0,2,0,0,1,252,0,63,64,0,11,224,0,3,248,0,127,0,0,31,252,0,7,244,0,254,0,0,7,255,64,15,240,0,252,0,0,0,255,208,31,208,2,252,0,0,0,47,240,63,255,255,255,255,224,0,11,192,127,255,255,255,255,224,0,2,64,255,255,255,255,255,224,0,0,2,255,192,7,240,0,0,0,0,7,255,128,7,240,0,0,0,0,15,255,128,7,240,0,0,0,0,63,255,128,7,240,0,0,0,0,191,239,192,7,240,0,0,0,0,63,111,255,255,255,255,192,0,0,14,47,255,255,255,255,192,0,0,0,47,255,255,255,255,192,0,0,0,47,128,7,240,0,0,0,3,0,47,128,7,240,0,0,0,11,192,47,128,7,240,0,0,0,31,224,47,128,7,240,0,0,0,63,192,47,255,255,255,255,192,0,191,64,47,255,255,255,255,192,0,255,0,47,255,255,255,255,192,3,253,0,47,192,7,240,0,0,7,248,0,47,128,7,240,0,0,15,240,0,47,128,7,240,0,0,63,208,0,47,128,7,240,0,0,127,192,0,47,128,7,240,0,0,47,64,0,47,255,255,255,255,244,10,0,0,47,255,255,255,255,244,0,0,0,47,255,255,255,255,244,0,0,0,47,192,0,0,0,0,0,0,0,31,128,0,0,0,0, + // 0x51fa 出 + 250,81,29,35,24,37,4,253,0,0,0,106,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,0,5,64,0,127,0,0,84,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,213,85,191,85,85,254,0,31,255,255,255,255,255,254,0,31,255,255,255,255,255,254,0,31,255,255,255,255,255,254,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,0,189,0,0,127,0,0,31,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,85,85,85,85,85,111,192,254,0,0,0,0,0,47,192,190,0,0,0,0,0,31,192, + // 0x51fb 击 + 251,81,33,35,59,37,2,253,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,1,85,85,87,249,85,85,80,0,3,255,255,255,255,255,255,244,0,3,255,255,255,255,255,255,244,0,3,255,255,255,255,255,255,244,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,85,85,85,87,249,85,85,85,64,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,84,0,3,244,0,5,64,0,2,252,0,3,244,0,15,224,0,2,252,0,3,244,0,15,224,0,2,252,0,3,244,0,15,224,0,2,252,0,3,244,0,15,224,0,2,252,0,3,244,0,15,224,0,2,252,0,3,244,0,15,224,0,2,252,0,3,244,0,15,224,0,2,252,0,3,244,0,15,224,0,2,253,85,87,249,85,95,224,0,2,255,255,255,255,255,255,224,0,2,255,255,255,255,255,255,224,0,2,255,255,255,255,255,255,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0, + // 0x5206 分 + 6,82,35,35,59,37,1,252,0,0,11,208,0,27,128,0,0,0,0,15,240,0,63,192,0,0,0,0,47,224,0,31,224,0,0,0,0,63,192,0,15,244,0,0,0,0,191,128,0,7,252,0,0,0,1,255,0,0,2,255,0,0,0,3,254,0,0,0,255,128,0,0,11,252,0,0,0,127,208,0,0,31,240,0,0,0,47,244,0,0,127,224,0,0,0,15,252,0,1,255,128,0,0,0,3,255,0,7,255,0,0,0,0,1,255,208,47,252,0,0,0,0,0,127,244,191,255,255,255,255,255,255,239,248,127,207,255,255,255,255,255,203,224,31,15,255,255,255,255,255,194,128,4,5,85,127,213,85,127,192,0,0,0,0,63,128,0,47,192,0,0,0,0,127,64,0,47,192,0,0,0,0,191,0,0,63,192,0,0,0,0,191,0,0,63,128,0,0,0,0,255,0,0,63,128,0,0,0,1,254,0,0,63,128,0,0,0,3,252,0,0,63,128,0,0,0,7,252,0,0,63,64,0,0,0,15,244,0,0,63,64,0,0,0,47,240,0,0,127,64,0,0,0,191,192,0,0,127,0,0,0,3,255,64,0,0,191,0,0,0,31,254,0,0,0,255,0,0,1,255,248,0,37,87,254,0,0,15,255,208,0,47,255,253,0,0,3,254,0,0,31,255,248,0,0,1,224,0,0,15,255,144,0,0,0,0,0,0,0,0,0,0,0, + // 0x5207 切 + 7,82,34,34,50,37,1,253,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,15,255,255,255,255,240,0,191,0,15,255,255,255,255,224,0,191,0,15,255,255,255,255,224,0,191,0,5,85,254,85,95,224,0,191,0,0,0,253,0,15,224,0,191,0,5,0,252,0,15,224,0,191,22,255,0,252,0,15,224,0,191,255,255,1,252,0,15,224,111,255,255,255,1,252,0,15,224,191,255,254,64,1,252,0,15,224,191,255,64,0,1,252,0,15,224,121,191,0,0,1,252,0,15,208,0,191,0,0,2,252,0,15,208,0,191,0,0,2,248,0,15,208,0,191,0,0,3,248,0,15,208,0,191,0,0,3,244,0,15,208,0,191,0,96,3,244,0,31,208,0,191,0,125,7,240,0,31,192,0,191,0,190,11,240,0,31,192,0,191,0,189,15,224,0,31,192,0,127,0,253,31,208,0,31,192,0,127,255,252,63,192,0,47,192,0,63,255,248,127,128,0,47,192,0,31,255,240,255,0,0,63,192,0,0,85,2,254,0,0,63,128,0,0,0,7,252,0,0,63,128,0,0,0,15,244,0,0,127,64,0,0,0,127,224,0,0,255,0,0,0,2,255,192,11,255,255,0,0,0,3,255,0,3,255,253,0,0,0,0,248,0,3,255,248,0,0,0,0,96,0,1,85,64,0, + // 0x521b 创 + 27,82,33,35,59,37,1,253,0,0,10,0,0,0,0,5,64,0,0,31,208,0,0,0,47,192,0,0,63,192,0,0,0,47,192,0,0,127,208,0,0,0,47,192,0,0,255,244,0,6,144,47,192,0,2,255,253,0,11,224,47,192,0,3,252,255,0,11,224,47,192,0,15,240,63,192,11,224,47,192,0,47,208,31,240,11,224,47,192,0,191,128,11,248,11,224,47,192,2,255,0,2,253,11,224,47,192,11,252,0,0,255,11,224,47,192,47,244,0,0,127,203,224,47,192,191,208,0,0,47,11,224,47,192,63,255,255,255,248,11,224,47,192,12,191,255,255,240,11,224,47,192,0,191,255,255,240,11,224,47,192,0,190,0,7,240,11,224,47,192,0,190,0,7,240,11,224,47,192,0,190,0,11,224,11,224,47,192,0,190,0,11,224,11,224,47,192,0,190,0,15,224,11,224,47,192,0,190,0,15,208,11,224,47,192,0,190,15,191,192,11,224,47,192,0,190,15,255,128,11,224,47,192,0,190,11,254,0,1,64,47,192,0,190,0,0,20,0,0,47,192,0,190,0,0,47,64,0,47,192,0,190,0,0,47,64,0,47,192,0,190,0,0,63,64,0,47,192,0,191,0,0,127,0,0,47,192,0,127,255,255,255,1,80,127,192,0,63,255,255,253,3,255,255,128,0,11,255,255,228,1,255,255,0,0,0,0,0,0,0,255,232,0, + // 0x521d 初 + 29,82,34,35,59,37,1,253,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,11,255,255,255,255,224,0,15,208,11,255,255,255,255,224,0,15,208,11,255,255,255,255,224,0,15,224,1,85,255,85,95,224,63,255,255,224,0,254,0,15,224,63,255,255,244,0,254,0,15,224,63,255,255,240,0,254,0,15,224,0,0,15,208,0,253,0,15,224,0,0,47,192,0,253,0,15,224,0,0,63,64,0,253,0,15,224,0,0,255,0,0,253,0,15,224,0,1,252,40,1,252,0,15,208,0,3,248,126,1,252,0,15,208,0,15,240,253,1,252,0,15,208,0,47,250,244,2,252,0,15,208,0,191,255,208,3,248,0,15,208,2,255,255,192,3,248,0,15,208,11,255,255,224,3,244,0,15,208,47,255,219,248,7,240,0,31,192,191,223,210,252,15,240,0,31,192,127,79,208,244,15,224,0,31,192,45,15,208,32,47,192,0,31,192,0,15,208,0,63,192,0,47,192,0,15,208,0,191,64,0,47,192,0,15,208,0,255,0,0,63,192,0,15,208,3,253,0,0,63,128,0,15,208,11,252,0,0,63,64,0,15,208,47,240,0,0,255,64,0,15,208,255,208,11,255,255,0,0,15,208,255,128,3,255,253,0,0,15,208,62,0,3,255,248,0,0,15,208,4,0,1,85,64,0, + // 0x522b 别 + 43,82,33,35,59,37,1,252,0,0,0,0,0,0,0,47,192,11,255,255,255,208,0,0,47,192,11,255,255,255,208,0,0,47,192,11,255,255,255,208,0,0,47,192,11,224,0,15,208,31,192,47,192,11,224,0,15,208,31,192,47,192,11,224,0,15,208,31,192,47,192,11,224,0,15,208,31,192,47,192,11,224,0,15,208,31,192,47,192,11,224,0,15,208,31,192,47,192,11,255,255,255,208,31,192,47,192,11,255,255,255,208,31,192,47,192,11,255,255,255,208,31,192,47,192,0,0,0,0,0,31,192,47,192,0,2,248,0,0,31,192,47,192,0,2,244,0,0,31,192,47,192,0,3,244,0,0,31,192,47,192,63,255,255,255,240,31,192,47,192,63,255,255,255,240,31,192,47,192,63,255,255,255,240,31,192,47,192,0,7,240,11,240,31,192,47,192,0,7,240,11,240,31,192,47,192,0,11,224,11,240,31,192,47,192,0,15,224,11,224,31,192,47,192,0,15,208,11,224,5,64,47,192,0,31,192,15,224,0,0,47,192,0,63,128,15,224,0,0,47,192,0,127,0,15,208,0,0,47,192,0,255,0,15,208,0,0,47,192,3,252,0,47,192,0,0,47,192,15,244,63,255,192,0,85,127,128,127,224,31,255,64,0,255,255,128,63,128,15,253,0,0,255,255,0,13,0,0,0,0,0,191,248,0,0,0,0,0,0,0,0,0,0, + // 0x5230 到 + 48,82,33,34,50,37,1,253,0,0,0,0,0,0,0,26,128,0,0,0,0,0,0,0,31,192,63,255,255,255,254,0,0,31,192,63,255,255,255,254,0,0,31,192,63,255,255,255,254,63,64,31,192,0,15,240,0,0,63,64,31,192,0,15,224,4,0,63,64,31,192,0,31,192,127,0,63,64,31,192,0,47,192,63,128,63,64,31,192,0,63,64,31,208,63,64,31,192,0,127,0,11,240,63,64,31,192,21,255,255,255,252,63,64,31,192,63,255,255,255,253,63,64,31,192,63,255,255,255,255,63,64,31,192,63,169,84,0,63,63,64,31,192,0,0,127,0,24,63,64,31,192,0,0,127,0,0,63,64,31,192,0,0,127,0,0,63,64,31,192,0,0,127,0,0,63,64,31,192,15,255,255,255,248,63,64,31,192,15,255,255,255,248,63,64,31,192,15,255,255,255,248,63,64,31,192,0,0,127,0,0,63,64,31,192,0,0,127,0,0,63,64,31,192,0,0,127,0,0,21,0,31,192,0,0,127,0,0,0,0,31,192,0,0,127,0,0,0,0,31,192,0,0,127,22,190,0,0,31,192,0,5,191,255,255,0,0,31,192,111,255,255,255,255,0,0,31,192,127,255,255,255,233,0,149,127,192,63,255,250,80,0,0,255,255,192,62,148,0,0,0,0,255,255,64,0,0,0,0,0,0,191,248,0, + // 0x5236 制 + 54,82,34,35,59,37,1,253,0,0,31,128,0,0,0,5,64,0,248,47,128,0,0,0,15,208,2,252,47,128,0,0,0,15,208,3,248,47,128,0,1,248,15,208,3,244,47,128,0,2,248,15,208,7,255,255,255,254,2,248,15,208,11,255,255,255,254,2,248,15,208,15,255,255,255,254,2,248,15,208,47,192,47,128,0,2,248,15,208,63,128,47,128,0,2,248,15,208,127,0,47,128,0,2,248,15,208,10,0,47,128,0,2,248,15,208,127,255,255,255,255,194,248,15,208,127,255,255,255,255,194,248,15,208,127,255,255,255,255,194,248,15,208,0,0,47,128,0,2,248,15,208,0,0,47,128,0,2,248,15,208,0,0,47,128,0,2,248,15,208,0,0,47,128,0,2,248,15,208,11,255,255,255,255,2,248,15,208,11,255,255,255,255,2,248,15,208,11,255,255,255,255,2,248,15,208,11,208,47,128,63,2,248,15,208,11,208,47,128,63,2,248,15,208,11,208,47,128,63,1,164,15,208,11,208,47,128,63,0,0,15,208,11,208,47,128,63,0,0,15,208,11,208,47,128,63,0,0,15,208,11,208,47,128,63,0,0,15,208,11,208,47,143,255,0,0,15,208,11,208,47,143,254,0,0,15,208,11,208,47,139,248,0,21,111,192,0,0,47,128,0,0,63,255,192,0,0,47,128,0,0,63,255,128,0,0,31,128,0,0,47,249,0, + // 0x5237 刷 + 55,82,33,35,59,37,1,253,0,0,0,0,0,0,0,5,64,0,0,0,0,0,0,0,15,192,3,255,255,255,255,0,0,15,192,3,255,255,255,255,1,64,15,192,3,255,255,255,255,7,224,15,192,3,240,0,0,63,7,224,15,192,3,240,0,0,63,7,224,15,192,3,240,0,0,63,7,224,15,192,3,240,0,0,63,7,224,15,192,3,255,255,255,255,7,224,15,192,3,255,255,255,255,7,224,15,192,3,255,255,255,255,7,224,15,192,3,240,1,248,0,7,224,15,192,3,240,1,248,0,7,224,15,192,3,240,1,248,0,7,224,15,192,3,240,1,248,0,7,224,15,192,3,251,255,255,255,71,224,15,192,3,255,255,255,255,71,224,15,192,7,255,255,255,255,71,224,15,192,7,239,193,248,31,71,224,15,192,7,239,193,248,31,71,224,15,192,7,239,193,248,31,71,224,15,192,11,239,193,248,31,71,224,15,192,11,223,193,248,31,71,224,15,192,15,223,193,248,31,71,224,15,192,15,207,193,248,31,65,80,15,192,15,207,193,248,31,64,0,15,192,31,207,193,248,31,64,0,15,192,31,143,193,251,255,64,0,15,192,63,79,193,249,255,0,0,15,192,63,15,193,248,164,0,0,15,192,190,0,1,248,0,0,85,111,192,189,0,1,248,0,0,127,255,192,28,0,1,248,0,0,63,255,64,0,0,1,248,0,0,47,249,0, + // 0x5272 割 + 114,82,32,35,24,37,2,253,0,0,252,0,0,0,0,21,0,0,252,0,0,0,0,63,0,0,252,0,0,0,0,63,170,170,255,170,168,0,0,63,255,255,255,255,253,47,128,63,255,255,255,255,253,47,128,63,252,0,0,0,253,47,128,63,252,0,252,0,253,47,128,63,252,0,252,0,253,47,128,63,254,170,254,170,253,47,128,63,15,255,255,255,208,47,128,63,15,255,255,255,208,47,128,63,0,0,252,0,0,47,128,63,0,0,252,0,0,47,128,63,15,255,255,255,192,47,128,63,15,255,255,255,192,47,128,63,5,85,254,85,64,47,128,63,0,0,252,0,0,47,128,63,0,0,252,0,0,47,128,63,255,255,255,255,252,47,128,63,255,255,255,255,252,47,128,63,170,170,170,170,168,47,128,63,0,0,0,0,0,47,128,63,6,170,170,170,128,47,128,63,15,255,255,255,208,47,128,63,15,255,255,255,208,0,0,63,15,192,0,15,208,0,0,63,15,192,0,15,208,0,0,63,15,192,0,15,208,0,0,63,15,192,0,15,208,0,0,63,15,234,170,175,208,0,0,63,15,255,255,255,208,2,170,255,15,255,255,255,208,2,255,255,15,192,0,15,208,1,255,253,11,192,0,5,64,0,255,228, + // 0x529b 力 + 155,82,32,35,24,37,2,253,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,63,255,255,255,255,255,255,254,63,255,255,255,255,255,255,253,63,255,255,255,255,255,255,253,26,170,170,191,170,170,170,253,0,0,0,191,0,0,0,253,0,0,0,191,0,0,1,253,0,0,0,255,0,0,1,252,0,0,0,254,0,0,1,252,0,0,0,254,0,0,1,252,0,0,1,253,0,0,2,252,0,0,3,252,0,0,2,252,0,0,3,252,0,0,2,252,0,0,11,248,0,0,3,252,0,0,15,240,0,0,3,248,0,0,31,224,0,0,3,248,0,0,63,208,0,0,3,248,0,0,191,192,0,0,3,244,0,1,255,0,0,0,7,244,0,7,254,0,0,0,11,240,0,15,252,0,0,0,11,240,0,63,240,0,0,0,15,240,1,255,208,0,0,0,31,224,11,255,64,0,0,0,63,208,63,253,0,0,15,255,255,192,191,240,0,0,7,255,255,64,47,128,0,0,3,255,253,0,9,0,0,0,1,85,64,0, + // 0x529f 功 + 159,82,34,34,50,37,1,253,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,63,255,255,244,0,127,0,0,0,63,255,255,244,0,127,0,0,0,63,255,255,244,0,127,0,0,0,0,15,208,1,85,191,85,85,64,0,15,208,3,255,255,255,255,224,0,15,208,3,255,255,255,255,224,0,15,208,3,255,255,255,255,224,0,15,208,0,0,191,0,15,224,0,15,208,0,0,254,0,15,208,0,15,208,0,0,254,0,15,208,0,15,208,0,0,253,0,15,208,0,15,208,0,0,253,0,15,208,0,15,208,0,0,252,0,15,208,0,15,208,0,1,252,0,15,208,0,15,208,0,2,252,0,15,192,0,15,208,0,3,248,0,15,192,0,15,209,188,3,244,0,31,192,0,15,255,252,7,240,0,31,192,0,111,255,253,15,240,0,31,192,111,255,255,228,31,224,0,47,192,127,255,244,0,63,192,0,47,192,63,249,0,0,191,128,0,47,192,61,0,0,1,255,0,0,63,128,0,0,0,3,254,0,0,63,128,0,0,0,15,252,0,0,127,64,0,0,0,127,240,0,0,255,0,0,0,3,255,192,15,255,255,0,0,0,3,255,0,7,255,253,0,0,0,0,248,0,3,255,240,0,0,0,0,80,0,0,20,0,0, + // 0x52a0 加 + 160,82,33,36,68,37,1,252,0,5,64,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,85,85,85,64,0,15,208,0,0,255,255,255,192,0,15,208,0,0,255,255,255,192,63,255,255,255,208,255,255,255,192,63,255,255,255,208,252,0,47,192,63,255,255,255,208,252,0,47,192,21,111,213,95,208,252,0,47,192,0,31,192,15,208,252,0,47,192,0,31,192,15,192,252,0,47,192,0,31,192,15,192,252,0,47,192,0,31,192,15,192,252,0,47,192,0,31,192,15,192,252,0,47,192,0,47,192,15,192,252,0,47,192,0,47,128,15,192,252,0,47,192,0,63,128,15,192,252,0,47,192,0,63,64,31,192,252,0,47,192,0,63,64,31,192,252,0,47,192,0,63,0,31,192,252,0,47,192,0,127,0,31,192,252,0,47,192,0,191,0,31,192,252,0,47,192,0,254,0,31,192,252,0,47,192,1,253,0,47,192,252,0,47,192,2,252,0,47,192,252,0,47,192,3,252,0,47,128,252,0,47,192,7,244,0,63,128,255,255,255,192,15,240,0,63,64,255,255,255,192,31,224,0,191,64,255,255,255,192,63,192,255,255,0,253,85,127,192,191,128,191,254,0,252,0,47,192,47,0,191,248,0,252,0,47,128,8,0,21,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x52a8 动 + 168,82,33,35,59,37,2,253,0,0,0,0,0,5,64,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,47,255,255,254,0,31,192,0,0,47,255,255,254,0,31,192,0,0,47,255,255,254,0,31,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,21,111,213,85,0,0,0,0,0,127,255,255,255,192,0,0,0,0,127,255,255,255,192,0,0,0,0,127,255,255,255,192,255,255,255,255,0,47,128,47,192,255,255,255,255,0,63,128,47,128,255,255,255,255,0,63,64,47,128,0,127,64,0,0,63,64,47,128,0,127,0,0,0,63,64,47,128,0,191,0,0,0,63,0,63,128,0,253,1,160,0,127,0,63,128,0,252,3,240,0,191,0,63,128,1,252,2,244,0,190,0,63,64,3,248,1,252,0,254,0,63,64,3,240,0,253,0,253,0,63,64,7,240,0,190,1,252,0,63,64,15,208,6,255,2,252,0,63,0,31,219,255,255,67,248,0,63,0,63,255,255,255,139,244,0,127,0,127,255,254,95,207,240,0,127,0,63,254,64,15,95,208,0,191,0,62,64,0,0,63,192,0,254,0,0,0,0,0,255,128,1,254,0,0,0,0,2,255,15,255,252,0,0,0,0,3,253,7,255,248,0,0,0,0,0,180,3,255,224,0,0,0,0,0,16,0,20,0,0, + // 0x5316 化 + 22,83,35,34,50,37,1,253,0,0,15,128,63,64,0,0,0,0,0,47,192,63,64,0,0,0,0,0,63,192,63,64,0,0,0,0,0,191,64,63,64,0,0,0,0,0,255,0,63,64,0,0,0,0,3,253,0,63,64,0,0,0,0,7,248,0,63,64,0,8,0,0,15,240,0,63,64,0,62,0,0,63,224,0,63,64,0,255,64,0,191,224,0,63,64,7,255,128,1,255,224,0,63,64,63,253,0,3,255,224,0,63,65,255,240,0,15,255,224,0,63,79,255,64,0,63,255,224,0,63,255,248,0,0,255,223,224,0,63,255,192,0,0,191,79,224,0,63,253,0,0,0,62,15,224,0,63,208,0,0,0,40,15,224,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,15,224,0,63,64,0,1,0,0,15,224,0,63,64,0,2,228,0,15,224,0,63,64,0,2,248,0,15,224,0,63,64,0,2,248,0,15,224,0,63,64,0,3,244,0,15,224,0,63,64,0,3,244,0,15,224,0,63,192,0,11,240,0,15,224,0,63,255,255,255,224,0,15,224,0,31,255,255,255,192,0,15,224,0,7,255,255,255,64,0,10,144,0,0,0,0,0,0, + // 0x5347 升 + 71,83,33,35,59,37,2,253,0,0,0,0,0,5,64,0,0,0,0,0,11,192,15,208,0,0,0,0,1,191,240,15,208,0,0,0,0,47,255,240,15,208,0,0,0,27,255,255,64,15,208,0,0,6,255,255,224,0,15,208,0,0,191,255,254,0,0,15,208,0,0,63,254,253,0,0,15,208,0,0,62,64,253,0,0,15,208,0,0,0,0,253,0,0,15,208,0,0,0,0,253,0,0,15,208,0,0,0,0,253,0,0,15,208,0,0,0,0,253,0,0,15,208,0,0,0,0,253,0,0,15,208,0,0,0,0,253,0,0,15,208,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,85,85,254,85,85,95,229,85,64,0,0,253,0,0,15,208,0,0,0,1,252,0,0,15,208,0,0,0,1,252,0,0,15,208,0,0,0,2,252,0,0,15,208,0,0,0,3,248,0,0,15,208,0,0,0,7,244,0,0,15,208,0,0,0,15,240,0,0,15,208,0,0,0,31,224,0,0,15,208,0,0,0,63,208,0,0,15,208,0,0,0,255,128,0,0,15,208,0,0,2,255,0,0,0,15,208,0,0,15,253,0,0,0,15,208,0,0,127,244,0,0,0,15,208,0,0,255,208,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,24,0,0,0,0,15,208,0,0, + // 0x534a 半 + 74,83,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,104,0,7,240,0,15,64,0,1,253,0,7,240,0,31,224,0,0,255,0,7,240,0,63,192,0,0,127,128,7,240,0,127,128,0,0,63,192,7,240,0,255,0,0,0,31,224,7,240,1,254,0,0,0,15,240,7,240,3,252,0,0,0,7,244,7,240,7,244,0,0,0,3,224,7,240,7,240,0,0,0,1,0,7,240,0,64,0,0,0,0,0,7,240,0,0,0,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,5,85,85,91,249,85,85,84,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,85,85,85,91,249,85,85,85,64,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0, + // 0x534f 协 + 79,83,34,35,59,37,2,253,1,252,0,0,10,128,0,0,0,1,252,0,0,15,192,0,0,0,1,252,0,0,15,192,0,0,0,1,252,0,0,15,192,0,0,0,1,252,0,0,15,192,0,0,0,1,252,0,0,15,192,0,0,0,1,252,0,0,15,192,0,0,0,1,252,0,255,255,255,255,192,0,1,252,0,255,255,255,255,192,0,255,255,252,255,255,255,255,192,0,255,255,252,85,95,213,111,192,0,255,255,252,0,15,192,47,128,0,1,252,0,0,31,192,47,128,0,1,252,0,0,31,192,47,128,0,1,252,1,248,47,192,47,238,0,1,252,2,248,47,128,47,255,0,1,252,3,244,63,128,47,191,0,1,252,3,240,63,64,47,175,64,1,252,7,240,63,0,47,159,128,1,252,11,224,127,0,63,143,192,1,252,15,208,254,0,63,79,192,1,252,47,192,253,0,63,75,208,1,252,63,65,252,0,63,75,224,1,252,47,3,252,0,63,71,224,1,252,5,7,244,0,63,67,224,1,252,0,15,240,0,63,0,0,1,252,0,47,208,0,63,0,0,1,252,0,63,192,0,127,0,0,1,252,0,255,64,0,127,0,0,1,252,3,254,0,0,191,0,0,1,252,11,252,0,1,254,0,0,1,252,63,240,11,255,253,0,0,1,252,127,208,7,255,252,0,0,1,252,15,64,3,255,224,0,0,0,168,1,0,0,0,0,0,0, + // 0x5355 单 + 85,83,33,35,59,37,2,253,0,0,16,0,0,0,64,0,0,0,2,244,0,0,3,248,0,0,0,3,252,0,0,3,252,0,0,0,1,255,0,0,11,244,0,0,0,0,191,64,0,31,240,0,0,0,0,63,192,0,63,192,0,0,0,0,31,128,0,127,64,0,0,2,255,255,255,255,255,255,240,0,2,255,255,255,255,255,255,240,0,2,255,255,255,255,255,255,240,0,2,252,0,7,240,0,11,240,0,2,252,0,7,240,0,11,240,0,2,252,0,7,240,0,11,240,0,2,255,255,255,255,255,255,240,0,2,255,255,255,255,255,255,240,0,2,254,170,175,254,170,175,240,0,2,252,0,7,240,0,11,240,0,2,252,0,7,240,0,11,240,0,2,252,0,7,240,0,11,240,0,2,255,255,255,255,255,255,240,0,2,255,255,255,255,255,255,240,0,1,255,255,255,255,255,255,240,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,7,244,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0, + // 0x5361 卡 + 97,83,33,35,59,37,2,253,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,255,255,255,192,0,0,0,0,15,255,255,255,192,0,0,0,0,15,255,255,255,192,0,0,0,0,15,229,85,85,64,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,85,85,85,95,229,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,255,144,0,0,0,0,0,0,15,255,254,64,0,0,0,0,0,15,255,255,248,0,0,0,0,0,15,226,255,255,208,0,0,0,0,15,224,27,255,244,0,0,0,0,15,224,0,127,240,0,0,0,0,15,224,0,6,208,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,208,0,0,0,0, + // 0x5370 印 + 112,83,30,35,24,37,4,253,0,0,9,0,0,0,0,0,0,1,191,64,0,0,0,0,0,31,255,209,85,85,85,80,134,255,255,131,255,255,255,240,255,255,244,3,255,255,255,240,255,254,0,3,255,255,255,240,255,128,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,255,255,255,195,248,0,7,240,255,255,255,195,248,0,7,240,255,255,255,195,248,0,7,240,254,85,85,67,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,255,255,255,195,248,26,175,240,255,255,255,195,248,15,255,240,255,255,255,195,248,11,255,208,253,85,85,67,248,7,254,64,253,0,0,3,248,0,0,0,253,0,0,3,248,0,0,0,84,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,2,164,0,0,0, + // 0x5371 危 + 113,83,35,36,68,37,1,252,0,0,15,224,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,63,255,255,253,0,0,0,0,0,191,255,255,255,128,0,0,0,1,255,255,255,255,64,0,0,0,3,252,0,1,255,0,0,0,0,15,244,0,3,253,0,0,0,0,47,240,0,7,252,0,0,0,0,191,192,0,11,240,0,0,0,1,255,255,255,255,255,255,255,224,11,255,255,255,255,255,255,255,224,63,255,255,255,255,255,255,255,224,127,255,128,0,0,0,0,0,0,31,127,128,0,0,0,0,0,0,4,63,128,0,0,0,0,0,0,0,63,128,255,255,255,255,192,0,0,63,128,255,255,255,255,192,0,0,63,128,255,255,255,255,192,0,0,63,64,253,0,0,47,192,0,0,63,64,253,0,0,47,192,0,0,63,64,253,0,0,47,128,0,0,63,0,253,0,0,63,128,0,0,127,0,253,0,0,63,64,0,0,127,0,253,0,0,127,64,0,0,191,0,253,0,255,255,0,0,0,254,0,253,0,191,254,0,0,0,253,0,253,0,127,228,3,128,2,252,0,253,0,0,0,3,244,3,252,0,253,0,0,0,3,244,7,244,0,253,0,0,0,3,240,15,240,0,253,0,0,0,7,240,47,208,0,255,64,0,0,31,240,127,192,0,191,255,255,255,255,208,127,64,0,63,255,255,255,255,128,14,0,0,11,255,255,255,253,0,0,0,0,0,0,0,0,0,0, + // 0x5374 却 + 116,83,33,35,59,37,1,253,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,255,255,255,192,0,0,253,0,0,255,255,255,192,0,0,253,0,0,255,255,255,192,0,0,254,0,0,253,85,111,192,15,255,255,255,208,253,0,31,192,15,255,255,255,208,253,0,31,192,15,255,255,255,208,253,0,31,192,0,0,253,0,0,253,0,31,192,0,0,253,0,0,253,0,31,192,0,0,253,0,0,253,0,31,192,0,0,253,0,0,253,0,31,192,0,0,253,0,0,253,0,31,192,0,0,254,0,0,253,0,31,192,127,255,255,255,248,253,0,31,192,127,255,255,255,248,253,0,31,192,127,255,255,255,248,253,0,31,192,0,15,240,0,0,253,0,31,192,0,31,224,0,0,253,0,31,192,0,47,192,0,0,253,0,31,192,0,63,192,36,0,253,0,31,192,0,63,65,252,0,253,0,31,192,0,127,0,254,0,253,0,31,192,0,254,0,127,0,253,0,47,192,0,253,0,63,128,253,47,255,192,2,252,0,111,208,253,15,255,128,7,255,255,255,224,253,15,254,0,127,255,255,255,240,253,6,80,0,127,255,255,251,248,253,0,0,0,63,250,80,2,252,253,0,0,0,16,0,0,0,248,253,0,0,0,0,0,0,0,64,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,252,0,0,0, + // 0x5378 卸 + 120,83,33,35,59,37,1,253,0,46,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,127,0,0,0,255,255,255,192,0,190,0,0,0,255,255,255,192,0,255,255,255,240,255,255,255,192,2,255,255,255,240,254,0,31,192,3,255,255,255,240,253,0,15,192,11,240,127,0,0,253,0,15,192,31,208,63,0,0,253,0,15,192,63,192,63,0,0,253,0,15,192,15,0,63,0,0,253,0,15,192,0,0,63,0,0,253,0,15,192,63,255,255,255,252,253,0,15,192,63,255,255,255,252,253,0,15,192,63,255,255,255,252,253,0,15,192,0,0,127,0,0,253,0,15,192,0,0,63,0,0,253,0,15,192,1,80,63,0,0,253,0,15,192,3,240,63,0,0,253,0,15,192,3,240,63,255,224,253,0,15,192,3,240,63,255,224,253,0,15,192,3,240,63,255,224,253,0,15,192,3,240,63,0,0,253,0,15,192,3,240,63,0,0,253,0,15,192,3,240,63,0,0,253,0,15,192,3,240,63,0,0,253,10,175,192,3,240,63,0,20,253,15,255,192,3,240,63,111,252,253,11,255,128,3,246,255,255,252,253,7,249,0,111,255,255,255,252,253,0,0,0,191,255,255,249,0,253,0,0,0,127,255,148,0,0,253,0,0,0,122,64,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0, + // 0x538b 压 + 139,83,35,33,41,37,1,253,2,255,255,255,255,255,255,255,244,2,255,255,255,255,255,255,255,244,2,255,255,255,255,255,255,255,244,2,249,85,85,85,85,85,85,80,2,244,0,0,0,0,0,0,0,2,244,0,0,11,240,0,0,0,2,244,0,0,11,240,0,0,0,2,244,0,0,11,240,0,0,0,2,244,0,0,11,240,0,0,0,2,244,0,0,11,240,0,0,0,2,244,0,0,11,240,0,0,0,2,244,0,0,11,240,0,0,0,3,244,0,0,11,240,0,0,0,3,244,127,255,255,255,255,255,64,3,244,127,255,255,255,255,255,64,3,244,127,255,255,255,255,255,64,3,244,0,0,11,240,0,0,0,3,244,0,0,11,240,0,0,0,3,244,0,0,11,240,8,0,0,3,240,0,0,11,240,127,0,0,3,240,0,0,11,240,63,192,0,3,240,0,0,11,240,15,240,0,7,240,0,0,11,240,3,252,0,11,224,0,0,11,240,1,254,0,11,224,0,0,11,240,0,120,0,15,208,0,0,11,240,0,16,0,15,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,63,139,255,255,255,255,255,255,240,127,75,255,255,255,255,255,255,240,191,11,255,255,255,255,255,255,240,46,1,85,85,85,85,85,85,80,4,0,0,0,0,0,0,0,0, + // 0x539f 原 + 159,83,34,33,41,37,1,253,1,255,255,255,255,255,255,255,240,1,255,255,255,255,255,255,255,240,1,255,255,255,255,255,255,255,240,1,252,0,0,15,244,0,0,0,1,252,0,0,15,240,0,0,0,1,252,0,0,31,224,0,0,0,1,252,10,170,191,250,170,168,0,1,252,15,255,255,255,255,252,0,1,252,15,255,255,255,255,252,0,1,252,15,208,0,0,2,252,0,1,252,15,208,0,0,2,252,0,1,252,15,208,0,0,2,252,0,1,252,15,255,255,255,255,252,0,1,252,15,255,255,255,255,252,0,1,252,15,234,170,170,171,252,0,1,252,15,208,0,0,2,252,0,1,252,15,208,0,0,2,252,0,2,252,15,250,170,170,171,252,0,2,248,15,255,255,255,255,252,0,2,248,15,255,255,255,255,252,0,3,248,0,0,7,240,0,0,0,3,244,0,0,7,240,0,0,0,3,244,0,249,7,240,31,64,0,7,240,2,253,7,240,63,208,0,11,240,7,248,7,240,15,244,0,11,224,15,240,7,240,3,253,0,15,224,63,208,7,240,0,255,64,31,208,255,128,7,240,0,63,192,47,199,254,0,7,240,0,31,240,63,143,248,0,7,240,0,11,240,127,66,224,15,255,240,0,3,128,127,0,0,11,255,224,0,0,0,5,0,0,7,255,64,0,0,0, + // 0x53cc 双 + 204,83,34,33,41,37,1,252,47,255,255,253,63,255,255,255,128,47,255,255,254,63,255,255,255,192,47,255,255,254,63,255,255,255,192,5,85,85,254,31,213,85,127,128,0,0,0,253,15,208,0,63,64,0,0,0,253,15,224,0,63,64,0,0,1,252,11,224,0,127,0,3,128,2,252,7,240,0,191,0,15,208,2,248,7,240,0,254,0,15,244,3,248,3,244,0,253,0,3,252,3,244,3,244,1,252,0,1,255,11,240,2,252,2,252,0,0,191,143,240,1,252,3,248,0,0,63,239,224,0,253,7,244,0,0,15,255,208,0,254,11,240,0,0,7,255,192,0,127,15,224,0,0,2,255,128,0,63,111,192,0,0,0,255,64,0,63,255,192,0,0,0,255,192,0,31,255,64,0,0,1,255,224,0,15,255,0,0,0,3,255,244,0,11,253,0,0,0,7,255,252,0,11,252,0,0,0,15,242,253,0,31,254,0,0,0,47,224,255,0,127,255,0,0,0,127,192,191,65,255,255,192,0,0,255,64,61,7,254,47,240,0,3,254,0,20,47,252,15,252,0,15,252,0,0,255,240,3,255,64,63,240,0,11,255,192,1,255,224,127,208,0,11,254,0,0,127,240,31,64,0,3,244,0,0,15,192,9,0,0,0,128,0,0,2,64,0,0,0,0,0,0,0,0,0, + // 0x53cd 反 + 205,83,33,33,41,37,2,253,0,85,85,85,85,85,85,84,0,0,255,255,255,255,255,255,253,0,0,255,255,255,255,255,255,253,0,0,255,255,255,255,255,255,253,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,192,0,0,254,111,229,85,85,127,192,0,0,254,15,240,0,0,191,64,0,0,253,11,244,0,0,255,0,0,0,253,3,252,0,2,254,0,0,0,253,2,253,0,3,252,0,0,0,252,0,255,0,11,248,0,0,1,252,0,191,128,31,240,0,0,1,252,0,63,208,63,208,0,0,2,252,0,31,240,255,128,0,0,3,248,0,11,255,255,0,0,0,3,244,0,3,255,252,0,0,0,7,240,0,0,255,244,0,0,0,11,240,0,2,255,248,0,0,0,15,224,0,31,255,255,64,0,0,31,208,0,191,254,255,244,0,0,63,192,47,255,208,127,255,144,0,127,71,255,254,0,11,255,255,64,255,7,255,240,0,1,255,255,64,61,2,254,0,0,0,11,254,0,8,0,208,0,0,0,0,108,0, + // 0x53d6 取 + 214,83,35,33,41,37,1,253,63,255,255,255,252,0,0,0,0,63,255,255,255,252,0,0,0,0,63,255,255,255,252,0,0,0,0,2,252,0,63,143,255,255,255,208,1,252,0,63,143,255,255,255,208,1,252,0,63,143,255,255,255,208,1,252,0,63,133,165,85,111,192,1,252,0,63,135,240,0,31,192,1,255,255,255,135,240,0,47,192,1,255,255,255,131,244,0,63,128,1,255,255,255,131,248,0,63,64,1,252,0,63,130,252,0,127,0,1,252,0,63,129,252,0,191,0,1,252,0,63,128,253,0,254,0,1,252,0,63,128,191,0,253,0,1,252,0,63,128,127,2,252,0,1,255,255,255,128,63,67,252,0,1,255,255,255,128,47,199,244,0,1,255,255,255,128,31,223,240,0,1,252,0,63,128,15,255,224,0,1,252,0,63,128,7,255,192,0,1,252,0,63,128,3,255,128,0,1,252,0,63,128,2,255,0,0,1,252,26,255,128,2,255,64,0,6,255,255,255,128,11,255,192,0,255,255,255,255,128,31,255,240,0,191,255,254,127,128,127,239,252,0,127,233,0,63,129,255,131,255,0,16,0,0,63,139,254,0,255,208,0,0,0,63,255,248,0,127,248,0,0,0,63,191,208,0,15,244,0,0,0,63,143,0,0,2,208,0,0,0,47,64,0,0,0,64, + // 0x53d8 变 + 216,83,33,36,68,37,2,252,0,0,0,11,208,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,3,252,0,0,0,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,0,0,11,240,3,244,0,0,0,0,8,11,240,3,244,16,0,0,0,63,139,240,3,244,188,0,0,0,127,75,240,3,245,255,0,0,0,255,11,240,3,244,127,192,0,2,252,11,240,3,244,31,240,0,7,248,11,240,3,244,7,252,0,31,240,11,240,3,244,2,254,0,31,192,11,240,3,244,0,190,0,3,0,11,240,3,244,0,52,0,0,0,11,240,3,244,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,255,255,253,0,0,3,255,255,255,255,255,255,128,0,3,255,255,255,255,255,255,0,0,0,15,240,0,0,3,253,0,0,0,3,252,0,0,15,248,0,0,0,0,255,0,0,63,224,0,0,0,0,127,224,1,255,128,0,0,0,0,15,253,15,253,0,0,0,0,0,2,255,255,244,0,0,0,0,0,0,191,255,128,0,0,0,0,0,6,255,255,228,0,0,0,0,1,255,255,255,255,144,0,0,26,255,255,249,31,255,255,233,0,255,255,254,64,0,191,255,255,192,63,255,144,0,0,1,191,255,0,46,64,0,0,0,0,0,110,0,0,0,0,0,0,0,0,0,0, + // 0x53f0 台 + 240,83,33,35,59,37,2,253,0,0,1,228,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,31,240,0,6,0,0,0,0,0,63,208,0,47,192,0,0,0,0,127,128,0,63,244,0,0,0,0,255,0,0,11,253,0,0,0,2,253,0,0,2,255,64,0,0,3,252,0,0,0,191,208,0,0,11,249,106,171,255,255,240,0,127,255,255,255,255,255,255,252,0,127,255,255,255,255,255,255,255,0,127,255,255,255,250,169,85,255,128,37,84,0,0,0,0,0,127,192,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,21,85,85,85,85,85,0,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,0,0,0,0,127,64,0,0,127,0,0,0,0,127,64,0,0,127,0,0,0,0,127,64,0,0,127,0,0,0,0,127,64,0,0,127,0,0,0,0,127,64,0,0,127,0,0,0,0,127,64,0,0,127,0,0,0,0,127,64,0,0,127,0,0,0,0,127,64,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,85,85,85,85,191,64,0,0,127,0,0,0,0,127,64,0, + // 0x5403 吃 + 3,84,33,35,59,37,3,253,0,0,0,0,164,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,253,0,0,0,0,85,85,80,2,252,0,0,0,0,255,255,240,3,248,0,0,0,0,255,255,240,11,244,0,0,0,0,255,255,240,15,255,255,255,255,0,252,3,240,31,255,255,255,255,0,252,3,240,63,255,255,255,255,0,252,3,240,191,64,0,0,0,0,252,3,241,255,0,0,0,0,0,252,3,243,253,0,0,0,0,0,252,3,255,248,0,0,0,0,0,252,3,243,240,0,0,0,0,0,252,3,240,139,255,255,255,208,0,252,3,240,11,255,255,255,240,0,252,3,240,11,255,255,255,128,0,252,3,240,0,0,11,253,0,0,252,3,240,0,0,63,244,0,0,252,3,240,0,0,255,192,0,0,252,3,240,0,3,254,0,0,0,252,3,240,0,31,248,0,0,0,255,255,240,0,127,208,0,0,0,255,255,240,1,255,64,0,0,0,255,255,240,7,253,0,0,0,0,253,85,80,15,240,0,0,20,0,252,0,0,63,192,0,0,31,128,252,0,0,127,64,0,0,47,128,168,0,0,255,0,0,0,47,128,0,0,0,254,0,0,0,63,64,0,0,0,255,64,0,0,127,0,0,0,0,255,255,255,255,255,0,0,0,0,63,255,255,255,253,0,0,0,0,11,255,255,255,248,0,0,0,0,0,21,85,85,0,0, + // 0x5408 合 + 8,84,35,35,59,37,1,253,0,0,0,2,253,0,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,31,255,192,0,0,0,0,0,0,63,255,240,0,0,0,0,0,0,255,143,248,0,0,0,0,0,3,255,3,255,0,0,0,0,0,15,252,0,255,192,0,0,0,0,63,240,0,63,240,0,0,0,1,255,192,0,15,253,0,0,0,7,255,0,0,3,255,128,0,0,47,252,0,0,0,191,244,0,1,255,224,0,0,0,31,254,0,15,255,255,255,255,255,255,255,224,127,254,191,255,255,255,248,191,248,63,244,191,255,255,255,248,31,240,31,64,0,0,0,0,0,3,208,4,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,192,0,0,15,255,255,255,255,255,192,0,0,15,255,255,255,255,255,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,255,255,255,255,255,192,0,0,15,255,255,255,255,255,192,0,0,15,255,255,255,255,255,192,0,0,15,224,0,0,0,47,192,0,0,11,208,0,0,0,31,192,0, + // 0x540d 名 + 13,84,32,35,24,37,1,253,0,0,0,185,0,0,0,0,0,0,1,255,0,0,0,0,0,0,3,253,0,0,0,0,0,0,11,252,0,0,0,0,0,0,31,255,255,255,244,0,0,0,127,255,255,255,252,0,0,0,255,255,255,255,244,0,0,7,254,0,0,15,240,0,0,31,248,0,0,47,208,0,0,191,240,0,0,63,192,0,3,255,252,0,0,255,64,0,31,255,255,64,1,254,0,0,127,244,255,224,7,252,0,0,31,192,47,248,15,244,0,0,10,0,11,254,63,224,0,0,0,0,2,255,255,192,0,0,0,0,0,191,255,0,0,0,0,0,0,63,252,0,0,0,0,0,0,191,244,0,0,0,0,0,3,255,255,255,255,255,0,0,47,255,255,255,255,255,0,1,255,255,255,255,255,255,0,31,255,244,0,0,0,191,6,255,255,244,0,0,0,191,127,255,211,244,0,0,0,191,63,253,3,244,0,0,0,191,31,128,3,244,0,0,0,191,4,0,3,244,0,0,0,191,0,0,3,244,0,0,0,191,0,0,3,244,0,0,0,191,0,0,3,255,255,255,255,255,0,0,3,255,255,255,255,255,0,0,3,255,255,255,255,255,0,0,3,244,0,0,0,191,0,0,2,160,0,0,0,190, + // 0x540e 后 + 14,84,35,35,59,37,1,253,0,0,0,0,0,0,1,128,0,0,0,0,0,0,6,191,240,0,0,0,0,1,107,255,255,252,0,0,186,175,255,255,255,255,228,0,0,191,255,255,255,255,164,0,0,0,191,255,255,233,64,0,0,0,0,191,165,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,85,85,85,85,85,85,80,0,191,255,255,255,255,255,255,248,0,191,255,255,255,255,255,255,248,0,191,255,255,255,255,255,255,248,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,254,7,255,255,255,255,253,0,0,254,7,255,255,255,255,253,0,0,253,7,255,255,255,255,253,0,0,253,7,240,0,0,0,253,0,1,252,7,240,0,0,0,253,0,2,252,7,240,0,0,0,253,0,3,252,7,240,0,0,0,253,0,3,248,7,240,0,0,0,253,0,7,244,7,240,0,0,0,253,0,11,240,7,240,0,0,0,253,0,15,224,7,240,0,0,0,253,0,47,208,7,255,255,255,255,253,0,63,192,7,255,255,255,255,253,0,191,64,7,255,255,255,255,253,0,31,0,7,240,0,0,0,253,0,8,0,7,240,0,0,0,253,0, + // 0x5411 向 + 17,84,31,35,24,37,3,253,0,0,0,122,64,0,0,0,0,0,0,191,192,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,0,0,0,0,0,0,2,254,0,0,0,0,0,0,3,252,0,0,0,0,21,85,87,253,85,85,85,80,127,255,255,255,255,255,255,248,127,255,255,255,255,255,255,248,127,255,255,255,255,255,255,248,127,0,0,0,0,0,3,248,127,0,0,0,0,0,3,248,127,0,0,0,0,0,3,248,127,0,0,0,0,0,3,248,127,0,191,255,255,248,3,248,127,0,191,255,255,248,3,248,127,0,191,255,255,248,3,248,127,0,189,0,2,248,3,248,127,0,189,0,2,248,3,248,127,0,189,0,2,248,3,248,127,0,189,0,2,248,3,248,127,0,189,0,2,248,3,248,127,0,189,0,2,248,3,248,127,0,189,0,2,248,3,248,127,0,191,255,255,248,3,248,127,0,191,255,255,248,3,248,127,0,191,255,255,248,3,248,127,0,189,0,0,0,3,248,127,0,189,0,0,0,3,248,127,0,189,0,0,0,3,248,127,0,0,0,0,0,3,248,127,0,0,0,0,21,91,244,127,0,0,0,0,63,255,244,127,0,0,0,0,63,255,240,127,0,0,0,0,31,254,64, + // 0x5426 否 + 38,84,34,33,41,37,1,253,31,255,255,255,255,255,255,255,208,31,255,255,255,255,255,255,255,208,31,255,255,255,255,255,255,255,208,0,0,0,0,191,224,0,0,0,0,0,0,1,255,128,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,255,252,15,128,0,0,0,0,7,255,252,63,248,0,0,0,0,127,254,252,47,255,64,0,0,2,255,241,252,2,255,240,0,0,47,255,65,252,0,127,254,0,7,255,252,1,252,0,7,255,192,127,255,208,1,252,0,0,191,240,63,254,0,1,252,0,0,31,224,15,224,0,1,252,0,0,3,192,5,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,240,0,0,47,255,255,255,255,255,240,0,0,47,255,255,255,255,255,240,0,0,47,192,0,0,0,15,240,0,0,47,192,0,0,0,15,240,0,0,47,192,0,0,0,15,240,0,0,47,192,0,0,0,15,240,0,0,47,192,0,0,0,15,240,0,0,47,192,0,0,0,15,240,0,0,47,255,255,255,255,255,240,0,0,47,255,255,255,255,255,240,0,0,47,255,255,255,255,255,240,0,0,47,192,0,0,0,15,240,0,0,31,192,0,0,0,10,160,0, + // 0x542f 启 + 47,84,31,35,24,37,2,253,0,0,0,0,0,0,88,0,0,0,0,0,1,175,255,0,0,0,5,107,255,255,255,192,2,175,255,255,255,255,228,0,3,255,255,255,254,144,0,0,3,255,250,148,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,255,255,255,255,255,255,244,3,255,255,255,255,255,255,244,3,255,255,255,255,255,255,244,3,248,0,0,0,0,3,244,3,248,0,0,0,0,3,244,3,248,0,0,0,0,3,244,3,248,0,0,0,0,3,244,3,255,255,255,255,255,255,244,3,255,255,255,255,255,255,244,3,255,255,255,255,255,255,244,3,248,0,0,0,0,0,0,3,244,0,0,0,0,0,0,3,244,0,0,0,0,0,0,3,244,0,0,0,0,0,0,7,240,255,255,255,255,255,248,7,240,255,255,255,255,255,248,11,240,255,255,255,255,255,248,15,224,253,0,0,0,2,248,15,208,253,0,0,0,2,248,31,192,253,0,0,0,2,248,63,192,253,0,0,0,2,248,63,128,253,0,0,0,2,248,191,0,255,255,255,255,255,248,255,0,255,255,255,255,255,248,189,0,255,255,255,255,255,248,40,0,253,0,0,0,2,248,0,0,168,0,0,0,1,164, + // 0x544a 告 + 74,84,33,36,68,37,2,252,0,2,64,1,252,0,0,0,0,0,11,240,1,252,0,0,0,0,0,15,224,1,252,0,0,0,0,0,31,208,1,252,0,0,0,0,0,63,192,1,252,0,0,0,0,0,127,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,2,255,255,255,255,255,255,240,0,7,252,0,2,253,0,0,0,0,15,240,0,1,252,0,0,0,0,63,224,0,1,252,0,0,0,0,63,192,0,1,252,0,0,0,0,7,0,0,1,252,0,0,0,0,1,0,0,2,253,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,128,0,0,63,255,255,255,255,255,128,0,0,63,255,255,255,255,255,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,63,255,255,255,255,255,128,0,0,63,255,255,255,255,255,128,0,0,63,255,255,255,255,255,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,0,0,0,0,0,0,0,0, + // 0x5468 周 + 104,84,32,34,16,37,1,252,0,191,255,255,255,255,255,254,0,191,255,255,255,255,255,254,0,191,255,255,255,255,255,254,0,191,0,0,85,0,0,254,0,190,0,0,253,0,0,190,0,190,0,0,253,0,0,190,0,190,0,0,253,0,0,190,0,190,15,255,255,255,224,190,0,190,15,255,255,255,224,190,0,190,10,170,255,170,144,190,0,190,0,0,253,0,0,190,0,190,0,0,253,0,0,190,0,190,0,0,253,0,0,190,0,190,63,255,255,255,248,190,0,254,63,255,255,255,248,190,0,254,47,255,255,255,244,190,0,254,0,0,0,0,0,190,0,254,0,0,0,0,0,190,0,253,2,170,170,170,128,190,0,253,7,255,255,255,192,190,0,252,7,255,255,255,192,190,1,252,7,240,0,31,192,190,2,252,7,240,0,31,192,190,3,248,7,240,0,31,192,190,3,244,7,240,0,31,192,190,7,240,7,250,170,191,192,190,11,240,7,255,255,255,192,190,15,224,7,255,255,255,192,190,31,208,7,240,0,0,0,190,63,192,7,240,0,0,0,254,127,128,2,144,0,7,255,254,63,0,0,0,0,3,255,252,13,0,0,0,0,2,255,224,0,0,0,0,0,0,0,0, + // 0x547d 命 + 125,84,35,36,68,37,1,252,0,0,0,3,253,0,0,0,0,0,0,0,11,255,64,0,0,0,0,0,0,47,255,208,0,0,0,0,0,0,191,239,244,0,0,0,0,0,2,255,75,254,0,0,0,0,0,11,254,2,255,128,0,0,0,0,47,248,0,191,240,0,0,0,0,255,208,0,47,253,0,0,0,11,255,64,0,7,255,192,0,0,63,253,0,0,1,255,248,0,2,255,223,255,255,255,223,255,128,47,255,15,255,255,255,194,255,248,255,248,15,255,255,255,192,127,252,127,192,0,0,0,0,0,11,240,45,0,0,0,0,0,0,0,208,0,0,0,0,0,0,0,0,0,0,255,255,254,11,255,255,253,0,0,255,255,254,11,255,255,253,0,0,255,255,254,11,255,255,253,0,0,252,0,126,11,224,0,253,0,0,252,0,126,11,224,0,253,0,0,252,0,126,11,224,0,253,0,0,252,0,126,11,224,0,253,0,0,252,0,126,11,224,0,253,0,0,252,0,126,11,224,0,253,0,0,252,0,126,11,224,0,253,0,0,255,255,254,11,224,0,253,0,0,255,255,254,11,224,0,253,0,0,255,255,254,11,224,255,253,0,0,252,0,0,11,224,255,252,0,0,252,0,0,11,224,191,224,0,0,252,0,0,11,224,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x548c 和 + 140,84,33,35,59,37,1,253,0,0,0,4,0,0,0,0,0,0,0,1,190,0,0,0,0,0,0,1,191,255,128,0,0,0,0,22,255,255,255,129,85,85,85,0,47,255,255,144,11,255,255,255,64,15,255,253,0,11,255,255,255,64,4,0,253,0,11,255,255,255,64,0,0,253,0,11,224,0,63,64,0,0,253,0,11,224,0,63,64,0,0,253,0,11,224,0,63,64,0,0,253,0,11,224,0,63,64,63,255,255,255,203,224,0,63,64,63,255,255,255,203,224,0,63,64,63,255,255,255,203,224,0,63,64,0,7,253,0,11,224,0,63,64,0,11,254,0,11,224,0,63,64,0,15,255,128,11,224,0,63,64,0,31,255,208,11,224,0,63,64,0,63,255,244,11,224,0,63,64,0,127,255,252,11,224,0,63,64,0,253,253,255,11,224,0,63,64,1,252,253,63,139,224,0,63,64,3,244,253,31,203,224,0,63,64,11,240,253,15,75,224,0,63,64,31,208,253,2,11,224,0,63,64,63,192,253,0,11,224,0,63,64,191,64,253,0,11,245,85,127,64,126,0,253,0,11,255,255,255,64,60,0,253,0,11,255,255,255,64,0,0,253,0,11,255,255,255,64,0,0,253,0,11,224,0,63,64,0,0,253,0,11,224,0,63,64,0,0,253,0,11,224,0,63,64,0,0,253,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0, + // 0x54cd 响 + 205,84,32,36,32,37,3,252,0,0,0,0,2,232,0,0,0,0,0,0,3,253,0,0,0,0,0,0,3,252,0,0,0,0,0,0,7,244,0,0,255,255,208,0,11,240,0,0,255,255,208,0,15,224,0,0,255,255,209,255,255,255,255,254,252,11,209,255,255,255,255,254,252,11,209,255,255,255,255,254,252,11,209,252,0,0,0,254,252,11,209,252,0,0,0,254,252,11,209,252,0,0,0,254,252,11,209,252,0,0,0,254,252,11,209,252,31,255,224,254,252,11,209,252,31,255,224,254,252,11,209,252,31,87,224,254,252,11,209,252,31,2,224,254,252,11,209,252,31,2,224,254,252,11,209,252,31,2,224,254,252,11,209,252,31,2,224,254,252,11,209,252,31,2,224,254,252,11,209,252,31,2,224,254,255,255,209,252,31,2,224,254,255,255,209,252,31,87,224,254,255,255,209,252,31,255,224,254,252,0,1,252,31,255,224,254,252,0,1,252,31,0,0,254,252,0,1,252,31,0,0,254,164,0,1,252,0,0,0,254,0,0,1,252,0,0,0,254,0,0,1,252,0,0,0,254,0,0,1,252,0,0,0,254,0,0,1,252,0,0,191,253,0,0,1,252,0,0,63,252,0,0,1,252,0,0,63,224,0,0,0,0,0,0,0,0, + // 0x55b7 喷 + 183,85,34,35,59,37,2,253,0,0,0,0,0,169,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,191,255,255,255,254,0,127,255,208,255,255,255,255,254,0,127,255,208,255,255,255,255,254,0,127,255,208,0,0,253,0,0,0,125,7,208,0,0,253,0,0,0,125,7,208,7,240,189,15,192,0,125,7,208,7,240,0,15,192,0,125,7,215,255,255,255,255,255,192,125,7,215,255,255,255,255,255,192,125,7,215,255,255,255,255,255,192,125,7,208,7,240,0,15,192,0,125,7,208,7,240,0,15,192,0,125,7,208,0,0,0,0,0,0,125,7,208,63,255,255,255,248,0,125,7,208,63,255,255,255,248,0,125,7,208,63,255,255,255,248,0,125,7,208,63,0,0,1,248,0,125,7,208,63,0,0,1,248,0,125,7,208,63,0,189,1,248,0,127,255,208,63,0,253,1,248,0,127,255,208,63,0,253,1,248,0,127,255,208,63,0,253,1,248,0,125,0,0,63,0,253,1,248,0,125,0,0,63,0,252,1,248,0,125,0,0,63,1,252,1,248,0,40,0,0,21,7,248,164,0,0,0,0,0,0,47,242,255,64,0,0,0,0,2,255,192,191,244,0,0,0,1,191,254,0,11,255,64,0,0,47,255,224,0,0,191,224,0,0,15,253,0,0,0,31,192,0,0,2,64,0,0,0,1,128, + // 0x5634 嘴 + 52,86,34,36,68,37,2,252,0,0,0,1,244,3,224,0,0,0,0,0,1,244,3,224,0,0,0,0,1,145,244,3,224,24,0,127,255,210,241,244,3,225,255,0,127,255,210,241,255,243,255,253,0,127,255,210,241,255,243,255,208,0,125,7,210,241,249,83,253,0,0,125,7,210,241,244,3,224,0,0,125,7,210,241,244,3,224,3,64,125,7,210,241,245,103,224,3,208,125,7,210,251,255,247,240,7,208,125,7,239,255,255,243,255,255,192,125,7,239,255,254,2,255,255,128,125,7,223,149,252,0,90,165,0,125,7,208,3,255,255,224,0,0,125,7,208,11,255,255,244,0,0,125,7,208,47,213,95,224,0,0,125,7,208,191,64,47,192,0,0,125,7,211,255,255,255,255,253,0,125,7,255,255,255,255,255,253,0,125,7,255,255,85,190,85,253,0,127,255,219,127,0,125,0,189,0,127,255,208,63,0,125,0,189,0,127,255,208,63,255,255,255,253,0,125,0,0,63,255,255,255,253,0,125,0,0,63,0,125,0,189,0,125,0,0,127,0,125,0,189,0,0,0,0,191,255,255,255,253,0,0,0,0,255,255,255,255,253,0,0,0,1,253,85,85,85,253,0,0,0,3,248,0,0,0,189,0,0,0,15,240,0,0,0,189,0,0,0,63,224,0,0,150,253,0,0,0,127,128,0,0,255,252,0,0,0,14,0,0,0,191,228,0,0,0,0,0,0,0,0,0,0, + // 0x5668 器 + 104,86,35,34,50,37,1,252,2,255,255,254,2,255,255,254,0,2,255,255,254,2,255,255,254,0,2,255,255,254,2,255,255,254,0,2,248,0,190,2,248,0,190,0,2,248,0,190,2,248,0,190,0,2,248,0,190,2,248,0,190,0,2,248,0,190,2,248,0,190,0,2,254,170,254,2,254,170,254,0,2,255,255,254,2,255,255,254,0,2,255,255,255,226,255,255,254,0,0,0,0,7,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,47,224,0,0,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,0,0,47,244,0,127,192,0,0,0,1,255,224,0,47,244,0,0,0,11,255,128,0,11,255,0,0,0,191,253,0,0,1,255,224,0,11,255,240,0,0,0,127,255,64,191,255,255,255,3,255,255,255,248,63,255,255,255,3,255,255,255,244,30,255,255,255,3,255,255,255,224,0,252,0,127,3,240,0,252,0,0,252,0,127,3,240,0,252,0,0,252,0,127,3,240,0,252,0,0,252,0,127,3,240,0,252,0,0,252,0,127,3,240,0,252,0,0,255,255,255,3,255,255,252,0,0,255,255,255,3,255,255,252,0,0,255,255,255,3,255,255,252,0,0,252,0,127,3,240,0,252,0,0,0,0,0,0,0,0,0,0, + // 0x5674 噴 + 116,86,33,36,68,37,3,252,0,0,0,0,1,248,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,2,248,0,0,0,0,0,2,255,255,255,255,252,0,255,255,194,255,255,255,255,252,0,255,255,193,85,86,253,85,84,0,255,255,192,10,130,248,42,0,0,248,15,192,15,194,248,63,0,0,248,11,192,15,192,0,63,0,0,248,11,223,255,255,255,255,255,128,248,11,223,255,255,255,255,255,128,248,11,213,95,213,85,127,85,0,248,11,192,15,192,0,63,0,0,248,11,192,5,64,0,21,0,0,248,11,192,255,255,255,255,240,0,248,11,192,255,255,255,255,240,0,248,11,192,252,0,0,3,240,0,248,11,192,252,0,0,3,240,0,248,11,192,255,255,255,255,240,0,248,11,192,255,255,255,255,240,0,248,11,192,252,0,0,3,240,0,255,255,192,252,0,0,3,240,0,255,255,192,252,0,0,3,240,0,255,255,192,255,255,255,255,240,0,248,0,0,255,255,255,255,240,0,248,0,0,252,0,0,3,240,0,248,0,0,252,0,0,3,240,0,0,0,0,255,255,255,255,240,0,0,0,0,255,255,255,255,240,0,0,0,0,3,224,1,244,0,0,0,0,0,47,248,3,255,64,0,0,0,11,255,208,0,191,244,0,0,1,255,253,0,0,11,254,0,0,0,191,208,0,0,1,255,64,0,0,45,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0, + // 0x56de 回 + 222,86,31,34,16,37,3,253,85,85,85,85,85,85,85,84,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,255,255,255,248,2,252,254,0,255,255,255,248,2,252,254,0,255,255,255,248,2,252,254,0,253,0,3,248,2,252,254,0,253,0,3,248,2,252,254,0,253,0,3,248,2,252,254,0,253,0,3,248,2,252,254,0,253,0,3,248,2,252,254,0,253,0,3,248,2,252,254,0,253,0,3,248,2,252,254,0,253,0,3,248,2,252,254,0,255,255,255,248,2,252,254,0,255,255,255,248,2,252,254,0,255,255,255,248,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,3,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252, + // 0x56e0 因 + 224,86,31,34,16,37,3,253,85,85,85,85,85,85,85,84,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,253,0,0,0,0,0,2,252,253,0,0,10,128,0,2,252,253,0,0,31,192,0,2,252,253,0,0,31,192,0,2,252,253,0,0,31,192,0,2,252,253,0,0,31,192,0,2,252,253,0,0,31,128,0,2,252,253,47,255,255,255,255,226,252,253,47,255,255,255,255,226,252,253,47,255,255,255,255,226,252,253,0,0,63,224,0,2,252,253,0,0,63,240,0,2,252,253,0,0,191,244,0,2,252,253,0,0,255,248,0,2,252,253,0,1,253,252,0,2,252,253,0,3,252,191,0,2,252,253,0,7,244,63,128,2,252,253,0,31,240,47,208,2,252,253,0,127,192,15,248,2,252,253,2,255,64,7,255,66,252,253,47,253,0,1,255,242,252,253,47,244,0,0,127,210,252,253,15,128,0,0,11,130,252,253,0,0,0,0,0,2,252,253,0,0,0,0,0,2,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,254,85,85,85,85,85,86,252,253,0,0,0,0,0,2,252, + // 0x56fa 固 + 250,86,31,33,8,37,3,253,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,254,0,0,0,0,0,2,252,254,0,0,10,128,0,2,252,254,0,0,15,192,0,2,252,254,0,0,15,192,0,2,252,254,0,0,15,192,0,2,252,254,15,255,255,255,255,210,252,254,31,255,255,255,255,226,252,254,31,255,255,255,255,226,252,254,0,0,15,192,0,2,252,254,0,0,15,192,0,2,252,254,0,0,15,192,0,2,252,254,0,0,15,192,0,2,252,254,0,255,255,255,253,2,252,254,0,255,255,255,253,2,252,254,0,254,170,170,253,2,252,254,0,252,0,0,189,2,252,254,0,252,0,0,189,2,252,254,0,252,0,0,189,2,252,254,0,252,0,0,189,2,252,254,0,254,170,170,253,2,252,254,0,255,255,255,253,2,252,254,0,255,255,255,253,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,254,0,0,0,0,0,3,252,254,0,0,0,0,0,2,252, + // 0x56fe 图 + 254,86,31,33,8,37,3,253,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,253,0,0,64,0,0,2,252,253,0,2,248,0,0,2,252,253,0,7,244,0,0,2,252,253,0,31,250,170,169,2,252,253,0,127,255,255,255,130,252,253,1,255,255,255,255,2,252,253,11,255,0,1,253,2,252,253,63,255,192,11,244,2,252,253,63,75,248,127,208,2,252,253,13,1,255,255,0,2,252,253,0,0,191,252,0,2,252,253,0,11,255,255,144,2,252,253,6,255,253,191,254,66,252,254,255,255,208,11,255,254,252,253,191,249,144,0,111,242,252,253,62,66,255,64,0,146,252,253,0,2,255,253,0,2,252,253,0,0,6,255,128,2,252,253,0,0,0,31,0,2,252,253,0,255,164,0,0,2,252,253,2,255,255,228,0,2,252,253,0,91,255,255,228,2,252,253,0,0,6,255,252,2,252,253,0,0,0,6,248,2,252,253,0,0,0,0,0,2,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,253,0,0,0,0,0,2,252,169,0,0,0,0,0,1,168, + // 0x5728 在 + 40,87,34,35,59,37,1,253,0,0,0,57,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,5,85,86,253,85,85,85,85,64,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,0,0,31,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,64,0,63,64,0,0,0,0,255,0,0,63,64,0,0,0,2,253,0,0,63,64,0,0,0,7,252,0,0,63,64,0,0,0,15,240,0,0,63,64,0,0,0,63,224,0,0,63,64,0,0,0,255,208,0,0,127,64,0,0,3,255,208,63,255,255,255,255,0,15,255,208,63,255,255,255,255,0,127,255,208,63,255,255,255,255,0,127,223,208,0,0,63,64,0,0,47,15,208,0,0,63,64,0,0,8,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,127,64,0,0,0,15,209,255,255,255,255,255,224,0,15,209,255,255,255,255,255,224,0,15,209,255,255,255,255,255,224,0,15,208,0,0,0,0,0,0, + // 0x574f 坏 + 79,87,35,34,50,37,1,253,0,47,64,0,0,0,0,0,0,0,47,64,0,0,0,0,0,0,0,47,64,255,255,255,255,255,244,0,47,64,255,255,255,255,255,244,0,47,64,255,255,255,255,255,244,0,47,64,0,0,7,248,0,0,0,47,64,0,0,15,240,0,0,0,47,64,0,0,47,208,0,0,63,255,255,0,0,127,192,0,0,63,255,255,0,0,255,64,0,0,63,255,255,0,3,255,72,0,0,21,127,149,0,15,255,191,0,0,0,47,64,0,63,255,255,208,0,0,47,64,0,255,255,111,244,0,0,47,64,3,255,63,71,254,0,0,47,64,47,252,63,65,255,128,0,47,65,255,240,63,64,63,224,0,47,67,255,192,63,64,15,248,0,47,66,253,0,63,64,3,244,0,47,64,176,0,63,64,0,208,0,47,64,64,0,63,64,0,0,0,47,159,128,0,63,64,0,0,0,47,255,192,0,63,64,0,0,1,191,255,192,0,63,64,0,0,111,255,253,0,0,63,64,0,0,127,255,128,0,0,63,64,0,0,63,244,0,0,0,63,64,0,0,62,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0, + // 0x5757 块 + 87,87,34,35,59,37,1,253,0,21,0,0,0,168,0,0,0,0,63,64,0,0,253,0,0,0,0,63,64,0,0,253,0,0,0,0,63,64,0,0,253,0,0,0,0,63,64,0,0,253,0,0,0,0,63,64,0,0,253,0,0,0,0,63,64,15,255,255,255,254,0,0,63,64,15,255,255,255,254,0,0,63,64,15,255,255,255,254,0,63,255,255,64,0,253,0,254,0,63,255,255,64,0,253,0,190,0,63,255,255,64,0,253,0,190,0,21,127,149,0,0,253,0,190,0,0,63,64,0,0,253,0,190,0,0,63,64,0,0,253,0,190,0,0,63,64,0,0,253,0,190,0,0,63,64,0,0,252,0,190,0,0,63,64,63,255,255,255,255,240,0,63,64,63,255,255,255,255,240,0,63,64,63,255,255,255,255,240,0,63,66,85,87,255,213,85,80,0,63,191,64,3,255,224,0,0,0,63,255,192,7,251,240,0,0,0,191,255,64,11,243,244,0,0,31,255,244,0,15,226,252,0,0,127,255,64,0,63,208,254,0,0,63,244,0,0,127,128,191,64,0,47,64,0,0,255,0,63,192,0,4,0,0,3,254,0,31,240,0,0,0,0,31,252,0,15,252,0,0,0,0,191,240,0,3,255,64,0,0,7,255,192,0,0,255,240,0,0,15,254,0,0,0,127,240,0,0,7,244,0,0,0,15,192,0,0,2,128,0,0,0,1,128, + // 0x578b 型 + 139,87,33,34,50,37,2,254,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,252,0,31,255,255,255,244,63,0,252,0,31,255,255,255,244,63,0,252,0,31,255,255,255,244,63,0,252,0,0,63,0,253,0,63,0,252,0,0,63,0,253,0,63,0,252,0,0,63,0,253,0,63,0,252,0,0,63,0,253,0,63,0,252,0,191,255,255,255,252,63,0,252,0,191,255,255,255,252,63,0,252,0,191,255,255,255,252,63,0,252,0,0,191,0,253,0,63,0,252,0,0,254,0,253,0,63,0,252,0,0,253,0,253,0,63,0,252,0,3,252,0,253,0,0,0,252,0,11,244,0,253,0,0,0,252,0,47,240,0,253,0,0,1,252,0,191,192,0,253,0,3,255,252,0,63,0,0,254,160,1,255,248,0,8,0,0,3,244,0,255,144,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,0,0,0,7,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,7,244,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x57ab 垫 + 171,87,34,34,50,37,2,254,0,31,128,0,3,240,0,0,0,0,31,192,0,3,240,0,0,0,0,31,192,0,3,240,0,0,0,0,31,192,0,3,240,0,0,0,191,255,255,207,255,255,255,208,0,191,255,255,207,255,255,255,208,0,191,255,255,207,255,255,255,208,0,0,31,192,0,7,240,11,208,0,0,31,192,0,11,224,11,208,0,0,31,192,67,139,208,11,208,0,0,31,255,219,255,208,11,208,0,6,255,255,219,255,192,11,208,0,255,255,255,208,255,224,11,208,0,255,255,229,0,63,253,11,208,0,191,255,192,0,127,255,139,208,0,84,31,192,0,255,127,215,226,208,0,31,192,2,252,15,199,226,240,0,31,192,15,248,2,3,243,240,0,31,192,127,224,0,3,255,224,31,255,128,63,128,0,0,255,192,15,255,64,31,80,0,0,127,64,15,249,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,1,255,255,255,255,255,255,224,0,1,255,255,255,255,255,255,224,0,1,255,255,255,255,255,255,208,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x586b 填 + 107,88,35,35,59,37,1,253,0,21,0,0,0,63,64,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,255,255,255,255,255,240,0,63,0,255,255,255,255,255,240,0,63,0,255,255,255,255,255,240,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,7,255,255,255,253,0,63,255,255,7,255,255,255,253,0,63,255,255,7,240,0,0,253,0,63,255,255,7,240,0,0,253,0,21,127,84,7,255,255,255,253,0,0,63,0,7,255,255,255,253,0,0,63,0,7,240,0,0,253,0,0,63,0,7,240,0,0,253,0,0,63,0,7,240,0,0,253,0,0,63,0,7,255,255,255,253,0,0,63,0,7,255,255,255,253,0,0,63,0,7,240,0,0,253,0,0,63,0,7,240,0,0,253,0,0,63,75,71,255,255,255,253,0,0,63,255,135,255,255,255,253,0,0,127,255,128,0,0,0,0,0,7,255,253,0,0,0,0,0,0,127,255,211,255,255,255,255,255,248,127,253,3,255,255,255,255,255,248,63,128,3,255,255,255,255,255,244,40,0,0,0,41,0,10,0,0,0,0,0,0,255,128,63,208,0,0,0,0,11,254,0,31,252,0,0,0,1,191,244,0,2,255,64,0,0,15,255,128,0,0,127,224,0,0,3,253,0,0,0,15,244,0,0,0,208,0,0,0,2,64, + // 0x58f3 壳 + 243,88,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,106,170,170,175,250,170,170,170,64,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,2,255,255,255,255,255,255,224,0,2,255,255,255,255,255,255,224,0,1,170,170,170,170,170,170,144,0,0,0,0,0,0,0,0,0,0,42,170,170,170,170,170,170,170,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,0,0,0,0,0,0,127,0,63,0,0,0,0,0,0,127,0,63,15,255,255,255,255,252,127,0,63,15,255,255,255,255,252,127,0,0,5,85,85,85,85,84,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,255,64,0,0,0,2,255,255,255,255,128,0,0,0,2,255,255,255,255,128,0,0,0,2,252,0,0,63,128,0,0,0,2,248,0,0,63,128,0,0,0,3,248,0,0,63,128,0,0,0,3,244,0,0,63,128,8,0,0,15,240,0,0,63,128,31,128,0,63,224,0,0,63,128,31,128,2,255,192,0,0,63,128,47,128,111,255,0,0,0,47,255,255,64,127,248,0,0,0,31,255,255,0,47,208,0,0,0,11,255,252,0,8,0,0,0,0,0,0,0,0, + // 0x5907 备 + 7,89,35,36,68,37,1,252,0,0,0,250,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,31,255,255,255,255,0,0,0,0,127,255,255,255,255,192,0,0,2,255,255,255,255,255,0,0,0,15,254,0,0,3,253,0,0,0,191,255,192,0,31,248,0,0,7,255,191,244,0,191,224,0,0,11,253,11,254,7,255,64,0,0,2,224,1,255,255,252,0,0,0,0,64,0,63,255,224,0,0,0,0,0,1,191,255,249,0,0,0,0,0,111,255,255,255,249,0,0,1,111,255,255,71,255,255,254,144,191,255,255,224,0,47,255,255,248,63,255,249,0,0,0,111,255,240,63,249,0,0,0,0,0,107,192,21,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,128,1,252,0,15,224,0,0,63,128,1,252,0,15,224,0,0,63,128,1,252,0,15,224,0,0,63,234,171,254,170,175,224,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,128,1,252,0,15,224,0,0,63,128,1,252,0,15,224,0,0,63,128,1,252,0,15,224,0,0,63,128,1,252,0,15,224,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,128,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0, + // 0x590d 复 + 13,89,24,36,216,37,6,252,0,6,64,0,0,0,0,15,240,0,0,0,0,31,208,0,0,0,0,63,192,0,0,0,0,191,255,255,255,248,0,255,255,255,255,248,3,255,255,255,255,248,15,248,0,0,0,0,63,245,85,85,85,0,255,255,255,255,255,192,127,191,255,255,255,192,28,126,0,0,31,192,0,126,0,0,31,192,0,127,255,255,255,192,0,127,255,255,255,192,0,126,0,0,47,192,0,126,0,0,31,192,0,127,0,0,47,192,0,127,255,255,255,192,0,127,255,255,255,192,0,0,255,0,0,0,0,2,253,0,0,0,0,11,255,255,255,64,0,47,255,255,255,192,0,255,213,85,255,64,11,255,224,1,254,0,127,251,248,7,252,0,63,193,255,47,240,0,14,0,127,255,192,0,0,0,31,255,0,0,0,1,255,255,244,0,1,191,255,191,255,228,63,255,244,7,255,255,47,254,64,0,47,253,14,64,0,0,0,120,0,0,0,0,0,0, + // 0x5916 外 + 22,89,35,35,59,37,1,253,0,0,121,0,0,1,252,0,0,0,0,191,0,0,1,252,0,0,0,0,254,0,0,1,252,0,0,0,1,253,0,0,1,252,0,0,0,2,252,0,0,1,252,0,0,0,3,252,0,80,1,252,0,0,0,7,255,255,253,1,252,0,0,0,15,255,255,253,1,252,0,0,0,31,255,255,253,1,252,0,0,0,47,192,1,254,129,252,0,0,0,127,128,2,255,209,252,0,0,0,255,0,3,255,241,252,0,0,1,254,0,3,251,249,252,0,0,3,252,0,7,241,255,252,0,0,15,254,0,11,240,191,252,0,0,63,255,208,15,224,63,252,0,0,191,255,248,31,192,31,252,0,0,127,75,255,47,192,7,253,0,0,13,1,255,255,128,2,255,64,0,0,0,63,255,0,1,255,224,0,0,0,11,254,0,1,255,248,0,0,0,3,252,0,1,255,255,64,0,0,3,248,0,1,254,255,244,0,0,15,240,0,1,252,127,252,0,0,47,224,0,1,252,15,240,0,0,127,192,0,1,252,1,208,0,0,255,64,0,1,252,0,0,0,3,254,0,0,1,252,0,0,0,15,252,0,0,1,252,0,0,0,127,240,0,0,1,252,0,0,2,255,192,0,0,1,252,0,0,31,255,0,0,0,1,252,0,0,47,248,0,0,0,1,252,0,0,7,208,0,0,0,1,252,0,0,1,0,0,0,0,1,252,0,0, + // 0x591a 多 + 26,89,33,35,59,37,2,253,0,0,0,15,144,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,7,255,255,255,240,0,0,0,0,47,255,255,255,252,0,0,0,1,255,255,255,255,248,0,0,0,31,254,0,0,15,240,0,0,1,255,253,0,0,63,208,0,0,47,255,255,128,0,255,64,0,0,31,248,127,248,7,253,0,0,0,11,64,11,255,47,244,0,0,0,0,0,0,255,255,192,0,0,0,0,0,0,63,255,64,0,0,0,0,0,1,255,246,254,0,0,0,0,0,47,255,139,252,0,0,0,0,7,255,248,47,240,0,0,0,26,255,255,128,255,255,255,253,0,127,255,244,7,255,255,255,255,64,47,254,0,127,255,255,255,255,0,14,64,2,255,208,0,2,253,0,0,0,111,255,0,0,7,252,0,0,11,255,255,64,0,15,244,0,0,63,255,255,240,0,63,208,0,0,47,244,31,253,0,255,128,0,0,14,0,2,255,135,255,0,0,0,0,0,0,127,255,252,0,0,0,0,0,0,31,255,224,0,0,0,0,0,0,15,255,128,0,0,0,0,0,1,255,252,0,0,0,0,0,0,111,255,224,0,0,0,0,0,91,255,254,0,0,0,0,1,175,255,255,224,0,0,0,0,1,255,255,249,0,0,0,0,0,0,255,254,64,0,0,0,0,0,0,121,64,0,0,0,0,0,0, + // 0x5927 大 + 39,89,33,35,59,37,2,253,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,15,240,0,0,0,0,106,170,170,175,250,170,170,170,64,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,47,253,0,0,0,0,0,0,0,63,255,0,0,0,0,0,0,0,63,255,0,0,0,0,0,0,0,191,191,128,0,0,0,0,0,0,255,63,192,0,0,0,0,0,0,254,31,208,0,0,0,0,0,2,253,15,240,0,0,0,0,0,3,252,11,248,0,0,0,0,0,11,248,3,253,0,0,0,0,0,31,240,2,255,0,0,0,0,0,63,224,0,255,128,0,0,0,0,255,192,0,127,208,0,0,0,2,255,64,0,47,244,0,0,0,11,254,0,0,15,253,0,0,0,63,248,0,0,3,255,64,0,1,255,224,0,0,0,255,224,0,11,255,128,0,0,0,63,253,0,191,254,0,0,0,0,31,255,192,191,244,0,0,0,0,3,255,128,47,128,0,0,0,0,0,190,0,8,0,0,0,0,0,0,8,0, + // 0x5929 天 + 41,89,34,33,41,37,2,252,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,106,170,170,175,250,170,170,170,64,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,21,85,85,95,245,85,85,85,0,47,255,255,255,255,255,255,254,0,47,255,255,255,255,255,255,254,0,47,255,255,255,255,255,255,254,0,0,0,0,15,252,0,0,0,0,0,0,0,31,254,0,0,0,0,0,0,0,63,255,0,0,0,0,0,0,0,63,255,128,0,0,0,0,0,0,191,127,192,0,0,0,0,0,1,255,31,224,0,0,0,0,0,3,254,15,248,0,0,0,0,0,15,252,7,253,0,0,0,0,0,63,244,2,255,0,0,0,0,0,255,224,0,255,208,0,0,0,7,255,128,0,63,248,0,0,0,127,254,0,0,15,255,64,0,6,255,244,0,0,3,255,244,0,191,255,192,0,0,0,191,255,208,255,253,0,0,0,0,31,255,192,127,208,0,0,0,0,2,255,64,41,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0, + // 0x592a 太 + 42,89,34,35,59,37,2,253,0,0,0,11,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,106,170,170,191,255,170,170,170,64,0,0,0,63,255,0,0,0,0,0,0,0,63,255,64,0,0,0,0,0,0,127,191,128,0,0,0,0,0,0,191,47,192,0,0,0,0,0,0,255,31,208,0,0,0,0,0,1,254,15,240,0,0,0,0,0,3,252,7,244,0,0,0,0,0,7,252,3,252,0,0,0,0,0,15,244,2,254,0,0,0,0,0,31,240,0,255,64,0,0,0,0,63,208,0,127,192,0,0,0,0,255,159,0,63,224,0,0,0,3,255,191,192,15,248,0,0,0,15,253,127,240,11,254,0,0,0,63,244,15,252,2,255,128,0,1,255,224,3,255,0,255,240,0,11,255,128,0,255,192,63,253,0,191,253,0,0,127,240,15,255,208,255,240,0,0,31,192,2,255,192,63,64,0,0,11,0,0,127,64,24,0,0,0,0,0,0,10,0, + // 0x5931 失 + 49,89,34,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,15,224,7,240,0,0,0,0,0,15,224,7,240,0,0,0,0,0,47,208,7,240,0,0,0,0,0,63,192,7,240,0,0,0,0,0,127,128,7,240,0,0,0,0,0,191,149,91,249,85,85,80,0,0,255,255,255,255,255,255,240,0,2,255,255,255,255,255,255,240,0,3,255,255,255,255,255,255,240,0,11,244,0,7,240,0,0,0,0,31,240,0,7,240,0,0,0,0,63,208,0,11,240,0,0,0,0,191,192,0,11,240,0,0,0,0,31,0,0,11,240,0,0,0,0,1,0,0,11,240,0,0,0,0,0,0,0,15,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,85,85,85,127,255,85,85,85,64,0,0,0,63,255,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,255,47,192,0,0,0,0,0,3,254,15,240,0,0,0,0,0,11,252,11,252,0,0,0,0,0,47,244,3,255,0,0,0,0,0,255,224,0,255,192,0,0,0,7,255,128,0,127,244,0,0,0,47,254,0,0,31,255,0,0,2,255,244,0,0,7,255,228,0,127,255,192,0,0,0,191,255,208,255,253,0,0,0,0,31,255,208,63,208,0,0,0,0,1,255,128,40,0,0,0,0,0,0,27,0, + // 0x5934 头 + 52,89,33,35,59,37,2,253,0,0,0,0,26,128,0,0,0,0,0,0,0,47,192,0,0,0,0,15,208,0,47,192,0,0,0,0,47,253,0,47,192,0,0,0,0,27,255,208,47,192,0,0,0,0,0,191,248,47,192,0,0,0,0,0,11,252,63,192,0,0,0,0,0,1,240,63,192,0,0,0,1,0,0,16,63,128,0,0,0,7,224,0,0,63,128,0,0,0,15,255,64,0,63,128,0,0,0,7,255,224,0,63,128,0,0,0,0,127,253,0,63,128,0,0,0,0,7,254,0,63,64,0,0,0,0,0,188,0,63,64,0,0,0,0,0,16,0,127,0,0,0,0,0,0,0,0,191,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,3,252,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,31,241,0,0,0,0,0,0,0,63,211,224,0,0,0,0,0,0,255,143,254,0,0,0,0,0,3,255,7,255,208,0,0,0,0,15,252,0,127,253,0,0,0,0,191,244,0,7,255,128,0,0,7,255,192,0,0,191,244,0,0,191,254,0,0,0,31,254,0,111,255,244,0,0,0,3,255,128,127,255,64,0,0,0,0,191,64,47,228,0,0,0,0,0,29,0,9,0,0,0,0,0,0,0,0, + // 0x597d 好 + 125,89,35,36,68,37,1,252,0,14,128,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,1,255,255,255,255,64,0,47,128,1,255,255,255,255,224,0,63,64,1,255,255,255,255,192,0,63,64,0,0,0,0,255,64,0,63,0,0,0,0,2,254,0,0,127,0,0,0,0,7,248,0,127,255,255,248,0,0,31,240,0,127,255,255,248,0,0,127,192,0,127,255,255,244,0,2,255,0,0,0,252,3,244,0,7,252,0,0,1,252,3,244,0,7,240,0,0,2,248,3,240,0,7,240,0,0,3,244,7,240,0,7,240,0,0,3,240,7,251,255,255,255,255,248,7,240,11,235,255,255,255,255,248,11,224,15,235,255,255,255,255,248,15,208,15,209,85,91,245,85,80,15,192,31,192,0,7,240,0,0,31,240,47,192,0,7,240,0,0,47,253,63,64,0,7,240,0,0,63,255,255,0,0,7,240,0,0,31,191,255,0,0,7,240,0,0,2,15,254,0,0,7,240,0,0,0,3,255,64,0,7,240,0,0,0,7,255,208,0,7,240,0,0,0,15,255,244,0,7,240,0,0,0,47,215,253,0,7,240,0,0,0,127,193,252,0,7,240,0,0,1,255,0,180,0,7,240,0,0,11,253,0,16,21,91,240,0,0,63,244,0,0,47,255,240,0,0,15,208,0,0,15,255,208,0,0,7,0,0,0,15,254,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x59cb 始 + 203,89,35,35,59,37,1,253,0,15,128,0,0,42,64,0,0,0,31,192,0,0,63,192,0,0,0,31,192,0,0,63,128,0,0,0,47,128,0,0,127,64,0,0,0,63,64,0,0,191,0,0,0,0,63,0,0,0,254,0,0,0,0,63,0,0,0,253,0,160,0,0,191,0,0,2,252,3,244,0,127,255,255,248,3,248,2,252,0,127,255,255,248,3,240,0,254,0,127,255,255,244,11,240,0,127,64,1,252,3,244,15,208,0,63,192,1,248,3,240,31,214,171,255,208,2,248,3,247,255,255,255,255,240,3,244,7,243,255,255,255,255,244,3,240,7,243,255,255,170,87,252,7,240,11,225,64,0,0,1,248,11,224,15,208,0,0,0,0,128,15,208,15,208,0,0,0,0,0,15,192,31,192,0,0,0,0,0,31,208,47,192,63,255,255,255,192,47,248,63,128,63,255,255,255,192,63,255,191,0,63,255,255,255,192,63,255,255,0,63,64,0,31,192,6,31,254,0,63,64,0,31,192,0,3,255,64,63,64,0,31,192,0,7,255,208,63,64,0,31,192,0,15,255,248,63,64,0,31,192,0,63,215,253,63,64,0,31,192,0,191,128,252,63,64,0,31,192,3,255,0,112,63,255,255,255,192,31,252,0,0,63,255,255,255,192,47,240,0,0,63,255,255,255,192,15,128,0,0,63,64,0,31,192,6,0,0,0,63,64,0,26,128, + // 0x5b50 子 + 80,91,33,34,50,37,2,252,0,85,85,85,85,85,85,0,0,1,255,255,255,255,255,255,192,0,1,255,255,255,255,255,255,240,0,1,255,255,255,255,255,255,192,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,255,224,0,0,0,0,0,0,11,255,64,0,0,0,0,0,1,127,252,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,85,85,85,91,249,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,1,149,95,244,0,0,0,0,0,0,255,255,240,0,0,0,0,0,0,191,255,224,0,0,0,0,0,0,127,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5b58 存 + 88,91,35,35,59,37,1,253,0,0,0,57,0,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,253,0,0,0,0,0,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,5,85,95,245,85,85,85,85,64,0,0,47,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,1,255,7,255,255,255,248,0,0,3,253,7,255,255,255,255,0,0,11,248,7,255,255,255,252,0,0,31,240,0,0,0,31,244,0,0,63,208,0,0,0,127,208,0,0,255,208,0,0,1,255,64,0,3,255,208,0,0,27,252,0,0,15,255,208,0,0,31,240,0,0,127,255,208,0,0,31,192,0,0,127,223,208,0,0,47,192,0,0,63,15,209,255,255,255,255,255,244,28,15,209,255,255,255,255,255,244,0,15,209,255,255,255,255,255,244,0,15,208,0,0,31,192,0,0,0,15,208,0,0,31,192,0,0,0,15,208,0,0,31,192,0,0,0,15,208,0,0,31,192,0,0,0,15,208,0,0,31,192,0,0,0,15,208,0,0,31,192,0,0,0,15,208,0,64,47,192,0,0,0,15,208,0,255,255,192,0,0,0,15,208,0,191,255,64,0,0,0,15,208,0,127,249,0,0,0, + // 0x5b89 安 + 137,91,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,11,244,0,0,0,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,128,0,0,0,0,0,191,0,63,128,0,36,0,0,0,191,0,63,128,0,127,128,0,0,191,0,63,128,0,255,0,0,0,191,0,63,128,1,254,0,0,0,191,0,0,0,3,252,0,0,0,0,0,0,0,7,248,0,0,0,0,0,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,21,85,191,149,85,95,245,85,0,0,0,255,0,0,15,240,0,0,0,1,254,0,0,31,224,0,0,0,3,252,0,0,47,208,0,0,0,7,248,0,0,63,192,0,0,0,15,240,0,0,255,64,0,0,0,47,254,64,2,255,0,0,0,0,63,255,249,7,252,0,0,0,0,191,255,255,239,244,0,0,0,0,27,6,255,255,224,0,0,0,0,0,0,31,255,248,0,0,0,0,0,0,47,255,255,128,0,0,0,0,6,255,251,255,248,0,0,0,1,191,255,128,127,255,128,0,26,255,255,248,0,7,255,244,0,31,255,255,128,0,0,127,248,0,11,255,224,0,0,0,11,240,0,3,148,0,0,0,0,1,128,0, + // 0x5b8c 完 + 140,91,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,149,85,85,85,85,85,255,0,63,64,0,0,0,0,0,191,0,63,64,0,0,0,0,0,191,0,63,64,0,0,0,0,0,191,0,63,71,255,255,255,255,240,191,0,21,7,255,255,255,255,240,85,0,0,7,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,85,85,85,85,85,85,85,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,47,192,3,244,0,0,0,0,0,63,192,3,244,0,0,0,0,0,63,128,3,244,0,0,0,0,0,127,64,3,244,0,0,0,0,0,191,0,3,244,0,0,0,0,0,255,0,3,244,0,4,0,0,3,253,0,3,244,0,15,128,0,11,252,0,3,244,0,15,192,0,63,240,0,3,244,0,15,192,2,255,208,0,3,248,0,47,192,191,255,64,0,3,255,255,255,128,255,252,0,0,2,255,255,255,0,127,208,0,0,0,191,255,253,0,56,0,0,0,0,0,0,0,0, + // 0x5b9a 定 + 154,91,34,36,68,37,1,252,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,229,85,85,85,85,85,111,192,15,208,0,0,0,0,0,47,192,15,208,0,0,0,0,0,47,192,15,208,0,0,0,0,0,47,192,15,208,85,85,85,85,85,47,192,15,211,255,255,255,255,255,47,192,0,3,255,255,255,255,255,0,0,0,3,255,255,255,255,255,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,3,244,1,252,0,0,0,0,0,7,244,1,252,0,0,0,0,0,7,240,1,253,0,0,0,0,0,11,240,1,255,255,255,240,0,0,15,240,1,255,255,255,240,0,0,15,240,1,255,255,255,240,0,0,31,244,1,252,0,0,0,0,0,63,252,1,252,0,0,0,0,0,63,254,1,252,0,0,0,0,0,191,255,65,252,0,0,0,0,0,254,63,225,252,0,0,0,0,3,252,15,254,252,0,0,0,0,11,248,3,255,253,0,0,0,0,47,240,0,255,255,255,255,255,240,127,208,0,31,255,255,255,255,224,47,128,0,0,111,255,255,255,208,10,0,0,0,0,21,85,85,64,0,0,0,0,0,0,0,0,0, + // 0x5ba2 客 + 162,91,35,36,68,37,1,252,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,208,0,20,0,0,0,31,192,15,208,0,255,64,0,0,31,192,15,208,2,254,0,0,0,31,192,15,208,11,254,170,170,160,31,192,15,208,47,255,255,255,253,31,192,0,0,191,255,255,255,252,0,0,0,7,255,128,0,15,244,0,0,0,47,255,240,0,63,224,0,0,2,255,235,252,1,255,128,0,0,3,255,66,255,75,254,0,0,0,0,248,0,127,255,244,0,0,0,0,0,0,31,255,208,0,0,0,0,0,0,111,255,248,0,0,0,0,0,7,255,255,255,224,0,0,0,1,191,255,139,255,255,164,0,1,191,255,248,0,191,255,255,244,127,255,255,64,0,6,255,255,224,63,255,255,255,255,255,255,255,192,31,231,255,255,255,255,255,6,64,4,2,255,255,255,255,255,0,0,0,2,248,0,0,0,191,0,0,0,2,248,0,0,0,191,0,0,0,2,248,0,0,0,191,0,0,0,2,248,0,0,0,191,0,0,0,2,248,0,0,0,191,0,0,0,2,255,255,255,255,255,0,0,0,2,255,255,255,255,255,0,0,0,2,255,255,255,255,255,0,0,0,2,248,0,0,0,191,0,0,0,0,0,0,0,0,0,0,0, + // 0x5bab 宫 + 171,91,31,36,32,37,3,252,0,0,0,47,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,63,192,0,0,0,0,0,0,31,224,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,254,85,85,85,85,85,86,252,253,0,0,0,0,0,2,252,253,0,0,0,0,0,2,252,253,63,255,255,255,255,242,252,253,63,255,255,255,255,242,252,0,63,255,255,255,255,240,0,0,63,0,0,0,7,240,0,0,63,0,0,0,7,240,0,0,63,0,0,0,7,240,0,0,63,0,0,0,7,240,0,0,63,255,255,255,255,240,0,0,63,255,255,255,255,240,0,0,63,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,255,255,255,128,3,255,255,255,255,255,255,128,3,255,255,255,255,255,255,128,3,240,0,0,0,0,63,128,3,240,0,0,0,0,63,128,3,240,0,0,0,0,63,128,3,240,0,0,0,0,63,128,3,240,0,0,0,0,63,128,3,255,255,255,255,255,255,128,3,255,255,255,255,255,255,128,3,255,255,255,255,255,255,128,3,240,0,0,0,0,63,128,0,0,0,0,0,0,0,0, + // 0x5bf9 对 + 249,91,34,35,59,37,2,253,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,127,255,255,248,0,0,15,192,0,127,255,255,252,0,0,15,192,0,127,255,255,252,0,0,15,192,0,21,85,86,252,0,0,15,192,0,0,0,3,248,255,255,255,255,208,0,0,3,248,255,255,255,255,208,0,0,3,244,255,255,255,255,208,0,0,7,240,85,85,95,213,64,7,64,11,240,0,0,15,192,0,31,208,15,240,0,0,15,192,0,31,244,15,224,0,0,15,192,0,7,253,31,208,29,0,15,192,0,1,255,111,192,191,0,15,192,0,0,127,255,128,63,128,15,192,0,0,31,255,64,47,192,15,192,0,0,7,255,0,15,224,15,192,0,0,2,255,0,7,240,15,192,0,0,2,255,192,3,248,15,192,0,0,3,255,224,2,252,15,192,0,0,11,255,248,1,244,15,192,0,0,31,247,252,0,64,15,192,0,0,63,210,255,0,0,15,192,0,0,191,128,255,64,0,15,192,0,1,255,0,63,0,0,15,192,0,7,253,0,40,0,0,15,192,0,31,248,0,0,0,0,15,192,0,191,224,0,0,0,170,191,192,0,255,192,0,0,0,127,255,192,0,62,0,0,0,0,63,255,64,0,24,0,0,0,0,63,248,0,0, + // 0x5c06 将 + 6,92,35,35,59,37,1,253,0,3,244,0,0,0,0,180,0,0,3,244,0,0,1,191,253,0,0,3,244,0,90,255,255,255,0,0,3,244,191,255,255,255,228,0,0,3,244,255,255,255,144,0,0,30,3,244,191,165,0,0,0,0,127,3,244,0,0,108,0,15,128,63,131,244,5,0,252,0,31,224,31,211,244,63,0,254,0,63,192,15,243,244,63,64,127,0,191,64,7,243,244,31,192,63,1,254,0,3,251,244,15,208,63,67,252,0,2,255,244,11,224,63,75,240,0,0,211,244,7,240,16,31,208,0,0,3,244,3,144,0,63,128,0,0,3,244,0,0,0,31,208,0,0,3,244,0,0,0,15,224,0,0,3,244,0,0,0,15,224,0,0,3,244,255,255,255,255,255,244,0,3,244,255,255,255,255,255,244,0,7,244,255,255,255,255,255,244,0,63,244,0,0,0,15,224,0,2,255,244,0,80,0,15,224,0,31,255,244,3,244,0,15,224,0,191,251,244,3,252,0,15,224,0,191,211,244,1,255,0,15,224,0,63,3,244,0,127,128,15,224,0,40,3,244,0,63,192,15,224,0,0,3,244,0,15,240,15,224,0,0,3,244,0,11,128,15,224,0,0,3,244,0,1,0,15,224,0,0,3,244,0,0,21,95,224,0,0,3,244,0,0,63,255,208,0,0,3,244,0,0,47,255,192,0,0,3,244,0,0,31,254,0,0, + // 0x5c0f 小 + 15,92,35,36,68,37,1,252,0,0,0,0,84,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,9,0,0,253,0,7,0,0,0,15,240,0,253,0,63,128,0,0,31,224,0,253,0,63,208,0,0,31,208,0,253,0,31,240,0,0,47,192,0,253,0,15,244,0,0,63,192,0,253,0,7,252,0,0,127,128,0,253,0,3,253,0,0,191,64,0,253,0,1,254,0,0,255,0,0,253,0,0,255,0,1,254,0,0,253,0,0,191,128,3,253,0,0,253,0,0,63,192,3,252,0,0,253,0,0,63,208,11,244,0,0,253,0,0,31,224,15,240,0,0,253,0,0,15,240,63,224,0,0,253,0,0,11,244,127,192,0,0,253,0,0,7,248,47,64,0,0,253,0,0,3,252,2,0,0,0,253,0,0,3,224,0,0,0,0,253,0,0,1,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,42,91,253,0,0,0,0,0,0,63,255,252,0,0,0,0,0,0,31,255,248,0,0,0,0,0,0,15,255,144,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5c31 就 + 49,92,35,35,59,37,1,253,0,0,254,0,0,3,244,0,0,0,0,254,0,0,3,244,36,0,0,0,254,0,0,3,245,252,0,0,0,254,0,0,3,244,255,0,0,0,254,0,0,3,244,63,128,63,255,255,255,248,3,244,31,192,63,255,255,255,248,3,244,15,240,63,255,255,255,248,3,244,3,224,0,0,0,0,0,3,244,1,0,0,0,0,0,0,3,248,0,0,3,255,255,255,203,255,255,255,244,3,255,255,255,203,255,255,255,244,3,255,255,255,203,255,255,255,244,3,240,0,31,192,3,244,0,0,3,240,0,31,192,3,244,0,0,3,240,0,31,192,3,255,128,0,3,240,0,31,192,7,255,128,0,3,240,0,31,192,7,255,128,0,3,255,255,255,192,11,255,128,0,3,255,255,255,192,15,255,128,0,3,255,255,255,192,15,255,128,0,0,0,190,0,0,31,239,128,0,0,0,190,6,0,47,239,128,0,3,244,190,63,64,63,175,128,0,3,240,190,31,128,127,111,128,0,7,240,190,15,192,191,47,128,0,15,208,190,11,224,253,47,128,224,15,192,190,7,243,252,47,128,252,47,192,190,3,247,248,47,128,248,63,64,190,2,79,240,47,128,248,191,0,190,0,47,208,47,129,248,29,0,254,0,191,192,47,255,248,0,127,253,2,255,0,31,255,240,0,63,252,0,253,0,11,255,208,0,47,224,0,36,0,0,84,0, + // 0x5c4f 屏 + 79,92,34,34,50,37,1,252,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,254,0,0,0,0,0,191,0,0,254,0,0,0,0,0,191,0,0,254,0,0,0,0,0,191,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,254,0,109,0,0,31,128,0,0,254,0,191,0,0,63,192,0,0,254,0,63,128,0,127,64,0,0,254,0,47,192,0,254,0,0,0,254,0,15,192,0,252,0,0,0,254,127,255,255,255,255,255,192,0,253,127,255,255,255,255,255,192,0,253,63,255,255,255,255,255,192,0,253,0,15,208,1,252,0,0,0,252,0,15,208,1,252,0,0,1,252,0,15,208,1,252,0,0,1,252,0,15,208,1,252,0,0,2,253,255,255,255,255,255,255,240,3,249,255,255,255,255,255,255,240,3,249,255,255,255,255,255,255,240,3,244,0,47,192,1,252,0,0,7,240,0,63,128,1,252,0,0,11,240,0,255,0,1,252,0,0,15,224,2,254,0,1,252,0,0,31,208,11,252,0,1,252,0,0,63,192,127,244,0,1,252,0,0,127,65,255,208,0,1,252,0,0,47,0,127,64,0,1,252,0,0,5,0,40,0,0,1,252,0,0,0,0,0,0,0,0,0,0,0, + // 0x5de5 工 + 229,93,33,28,252,37,2,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,10,170,170,175,250,170,170,168,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,85,85,85,91,249,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x5dee 差 + 238,93,34,35,59,37,1,253,0,0,24,0,0,0,228,0,0,0,0,254,0,0,2,253,0,0,0,0,191,0,0,3,252,0,0,0,0,63,192,0,11,240,0,0,0,0,31,192,0,15,208,0,0,3,255,255,255,255,255,255,255,64,3,255,255,255,255,255,255,255,64,3,255,255,255,255,255,255,255,64,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,127,255,255,255,255,255,248,0,0,127,255,255,255,255,255,248,0,0,127,255,255,255,255,255,244,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,2,253,255,255,255,255,248,0,0,3,249,255,255,255,255,248,0,0,11,245,255,255,255,255,248,0,0,15,240,0,3,240,0,0,0,0,31,208,0,3,240,0,0,0,0,63,192,0,3,240,0,0,0,0,255,128,0,3,240,0,0,0,2,255,0,0,3,240,0,0,0,7,252,0,0,3,240,0,0,0,47,248,191,255,255,255,255,255,192,127,224,191,255,255,255,255,255,192,31,128,191,255,255,255,255,255,192,2,0,0,0,0,0,0,0,0, + // 0x5df2 已 + 242,93,32,32,0,37,3,254,21,85,85,85,85,85,84,0,127,255,255,255,255,255,254,0,127,255,255,255,255,255,254,0,127,255,255,255,255,255,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,6,160,0,0,0,0,254,0,11,240,0,0,0,0,254,0,11,240,0,0,0,0,254,0,11,240,0,0,0,0,254,0,11,240,0,0,0,0,254,0,11,240,0,0,0,0,254,0,11,255,255,255,255,255,254,0,11,255,255,255,255,255,254,0,11,255,255,255,255,255,254,0,11,245,85,85,85,85,254,0,11,240,0,0,0,0,254,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,121,11,240,0,0,0,0,0,127,11,240,0,0,0,0,0,191,11,240,0,0,0,0,0,255,11,240,0,0,0,0,0,254,11,244,0,0,0,0,2,253,7,254,85,85,85,85,111,252,3,255,255,255,255,255,255,248,0,255,255,255,255,255,255,224,0,27,255,255,255,255,254,0, + // 0x5e73 平 + 115,94,33,33,41,37,2,253,5,85,85,85,85,85,85,84,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,20,0,0,0,127,0,7,240,0,63,128,0,0,63,64,7,240,0,127,128,0,0,63,192,7,240,0,191,0,0,0,31,208,7,240,0,254,0,0,0,15,224,7,240,2,252,0,0,0,11,240,7,240,3,248,0,0,0,7,244,7,240,7,240,0,0,0,3,248,7,240,15,224,0,0,0,2,128,7,240,6,192,0,0,0,0,0,7,240,0,0,0,0,85,85,85,91,249,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0, + // 0x5e76 并 + 118,94,33,36,68,37,2,252,0,1,208,0,0,1,228,0,0,0,15,240,0,0,3,253,0,0,0,7,248,0,0,7,252,0,0,0,2,253,0,0,15,240,0,0,0,0,255,0,0,47,208,0,0,0,0,191,64,0,63,192,0,0,0,0,63,128,0,191,0,0,0,0,0,45,0,0,30,0,0,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,0,0,191,0,0,63,128,0,0,0,0,191,0,0,63,128,0,0,0,0,191,0,0,63,128,0,0,0,0,191,0,0,63,128,0,0,0,0,191,0,0,63,128,0,0,0,0,191,0,0,63,128,0,0,0,0,191,0,0,63,128,0,0,85,85,255,85,85,127,213,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,253,0,0,63,128,0,0,0,1,253,0,0,63,128,0,0,0,2,252,0,0,63,128,0,0,0,3,252,0,0,63,128,0,0,0,11,244,0,0,63,128,0,0,0,15,240,0,0,63,128,0,0,0,63,224,0,0,63,128,0,0,0,191,192,0,0,63,128,0,0,2,255,64,0,0,63,128,0,0,31,253,0,0,0,63,128,0,0,191,244,0,0,0,63,128,0,0,63,192,0,0,0,63,128,0,0,14,0,0,0,0,47,128,0,0,0,0,0,0,0,0,0,0,0, + // 0x5e8a 床 + 138,94,35,35,59,37,1,253,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,85,85,85,127,149,85,85,80,2,255,255,255,255,255,255,255,240,2,255,255,255,255,255,255,255,240,2,255,255,255,255,255,255,255,240,2,252,0,0,0,0,0,0,0,2,252,0,0,3,244,0,0,0,2,252,0,0,3,244,0,0,0,2,252,0,0,3,244,0,0,0,2,252,0,0,3,244,0,0,0,2,252,0,0,3,244,0,0,0,2,252,0,0,7,248,0,0,0,2,252,127,255,255,255,255,255,240,2,252,127,255,255,255,255,255,240,2,252,127,255,255,255,255,255,240,2,252,0,0,47,255,0,0,0,2,252,0,0,127,255,128,0,0,2,248,0,0,255,255,208,0,0,3,248,0,2,255,255,240,0,0,3,244,0,7,251,251,252,0,0,3,244,0,31,243,245,255,0,0,3,244,0,63,195,244,191,192,0,7,240,0,255,67,244,47,240,0,11,240,3,254,3,244,15,252,0,15,224,31,252,3,244,3,255,64,15,208,191,240,3,244,0,255,224,31,195,255,192,3,244,0,63,244,63,193,254,0,3,244,0,11,224,63,128,116,0,3,244,0,1,192,191,0,0,0,3,244,0,0,0,46,0,0,0,3,244,0,0,0,5,0,0,0,3,244,0,0,0, + // 0x5e94 应 + 148,94,35,36,68,37,1,252,0,0,0,0,111,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,224,0,0,0,2,255,255,255,255,255,255,255,240,2,255,255,255,255,255,255,255,240,2,255,255,255,255,255,255,255,240,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,5,0,0,100,0,2,252,0,0,127,0,0,191,0,2,252,6,0,63,0,0,255,0,2,252,63,0,63,64,0,255,0,2,252,63,128,47,128,1,253,0,2,252,31,192,31,192,2,252,0,2,252,15,208,15,208,3,252,0,2,252,15,224,15,224,7,244,0,2,252,7,240,11,240,11,240,0,2,252,3,244,7,240,15,224,0,2,248,3,248,3,240,31,208,0,3,248,2,252,3,244,47,192,0,3,248,1,253,3,248,63,64,0,3,244,0,254,2,224,191,0,0,3,244,0,191,0,0,254,0,0,7,240,0,184,0,1,252,0,0,7,240,0,0,0,3,248,0,0,11,240,0,0,0,11,240,0,0,15,224,0,0,0,15,208,0,0,15,208,0,0,0,47,192,0,0,47,195,255,255,255,255,255,255,244,63,195,255,255,255,255,255,255,244,127,67,255,255,255,255,255,255,244,63,1,85,85,85,85,85,85,80,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5e9f 废 + 159,94,34,36,68,37,1,252,0,0,0,0,111,0,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,47,224,0,0,0,3,255,255,255,255,255,255,255,240,3,255,255,255,255,255,255,255,240,3,255,255,255,255,255,255,255,240,3,248,0,0,0,0,0,0,0,3,248,2,164,11,240,9,0,0,3,248,3,248,15,224,63,0,0,3,248,7,244,15,208,63,192,0,3,248,11,240,31,192,15,240,0,3,248,15,224,47,192,3,248,0,3,248,47,192,63,128,1,224,0,3,248,127,255,255,255,255,255,192,3,248,63,255,255,255,255,255,192,3,248,63,255,255,255,255,255,192,3,248,20,0,253,0,0,0,0,3,248,0,2,252,0,0,0,0,3,248,0,3,248,0,0,0,0,3,244,0,11,255,255,255,224,0,3,244,0,15,255,255,255,248,0,3,244,0,63,255,255,255,240,0,7,240,0,191,224,0,47,208,0,7,240,1,255,248,0,127,192,0,11,240,7,254,254,1,255,0,0,15,240,31,244,191,199,252,0,0,15,224,127,208,47,255,244,0,0,15,210,255,128,11,255,208,0,0,31,223,254,0,27,255,244,0,0,63,199,244,1,255,255,255,128,0,63,130,192,111,255,215,255,254,64,127,64,3,255,253,0,127,255,224,47,0,1,255,208,0,6,255,192,6,0,0,184,0,0,0,27,64,0,0,0,0,0,0,0,0,0, + // 0x5ea6 度 + 166,94,34,35,59,37,1,253,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,127,64,0,0,0,2,255,255,255,255,255,255,255,240,2,255,255,255,255,255,255,255,240,2,255,255,255,255,255,255,255,240,2,252,0,0,0,0,0,0,0,2,252,0,47,128,0,127,0,0,2,252,0,47,128,0,127,0,0,2,252,0,47,128,0,127,0,0,2,252,255,255,255,255,255,255,224,2,252,255,255,255,255,255,255,224,2,252,255,255,255,255,255,255,208,2,252,0,47,128,0,127,0,0,2,248,0,47,128,0,127,0,0,2,248,0,47,128,0,127,0,0,2,248,0,47,255,255,255,0,0,2,248,0,47,255,255,255,0,0,2,248,0,26,170,170,170,0,0,3,248,0,0,0,0,0,0,0,3,244,191,255,255,255,255,224,0,3,244,191,255,255,255,255,252,0,3,240,191,255,255,255,255,248,0,3,240,0,127,0,0,15,240,0,7,240,0,63,192,0,63,208,0,11,224,0,15,244,1,255,64,0,15,208,0,7,254,15,253,0,0,15,208,0,0,255,255,240,0,0,31,192,0,0,63,255,192,0,0,63,192,0,27,255,255,249,0,0,63,64,107,255,255,255,255,254,80,191,3,255,255,244,6,255,255,240,46,1,255,253,0,0,31,255,208,4,0,233,0,0,0,0,27,128, + // 0x5f00 开 + 0,95,33,33,41,37,2,252,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,0,0,127,0,0,31,192,0,0,0,0,127,0,0,31,192,0,0,0,0,127,0,0,31,192,0,0,0,0,127,0,0,31,192,0,0,0,0,127,0,0,31,192,0,0,0,0,127,0,0,31,192,0,0,0,0,127,0,0,31,192,0,0,0,0,127,0,0,31,192,0,0,0,0,127,0,0,31,192,0,0,0,0,127,0,0,31,192,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,85,85,255,85,85,111,213,85,64,0,0,254,0,0,31,192,0,0,0,0,253,0,0,31,192,0,0,0,1,253,0,0,31,192,0,0,0,2,252,0,0,31,192,0,0,0,3,252,0,0,31,192,0,0,0,11,248,0,0,31,192,0,0,0,15,240,0,0,31,192,0,0,0,47,224,0,0,31,192,0,0,0,127,192,0,0,31,192,0,0,1,255,128,0,0,31,192,0,0,7,255,0,0,0,31,192,0,0,47,252,0,0,0,31,192,0,0,191,240,0,0,0,31,192,0,0,47,192,0,0,0,31,192,0,0,14,0,0,0,0,31,192,0,0,0,0,0,0,0,0,0,0,0, + // 0x5f03 弃 + 3,95,34,36,68,37,1,252,0,0,0,0,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,63,255,255,255,255,255,255,255,224,63,255,255,255,255,255,255,255,224,63,255,255,255,255,255,255,255,224,0,0,1,254,0,0,0,0,0,0,0,3,252,0,3,192,0,0,0,0,7,244,0,15,248,0,0,0,0,15,224,0,7,255,0,0,0,0,47,192,0,0,191,208,0,1,85,127,235,255,255,255,248,0,15,255,255,255,255,255,255,254,0,15,255,255,255,255,255,255,255,128,11,254,170,149,84,0,0,63,208,0,0,0,0,0,5,64,15,64,0,0,47,128,0,15,224,0,0,0,0,47,128,0,15,224,0,0,0,0,47,128,0,15,224,0,0,0,0,47,128,0,15,224,0,0,0,0,63,128,0,15,224,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,0,0,127,0,0,15,224,0,0,0,0,255,0,0,15,224,0,0,0,1,254,0,0,15,224,0,0,0,3,252,0,0,15,224,0,0,0,15,248,0,0,15,224,0,0,0,191,240,0,0,15,224,0,0,7,255,192,0,0,15,224,0,0,127,254,0,0,0,15,224,0,0,47,240,0,0,0,15,224,0,0,14,64,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0,0, + // 0x5f0f 式 + 15,95,34,35,59,37,2,253,0,0,0,0,6,160,4,0,0,0,0,0,0,7,240,63,0,0,0,0,0,0,7,244,127,208,0,0,0,0,0,7,244,31,244,0,0,0,0,0,7,244,3,253,0,0,0,0,0,7,244,0,252,0,0,0,0,0,7,244,0,32,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,85,85,85,85,87,249,85,85,64,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,2,252,0,0,0,5,85,85,85,66,252,0,0,0,47,255,255,255,226,252,0,0,0,47,255,255,255,225,253,0,0,0,47,255,255,255,224,253,0,0,0,0,1,252,0,0,254,0,0,0,0,1,252,0,0,255,0,0,0,0,1,252,0,0,191,0,0,0,0,1,252,0,0,191,0,0,0,0,1,252,0,0,127,64,0,0,0,1,252,0,0,63,128,0,0,0,1,252,0,0,63,192,7,0,0,1,252,0,0,31,208,7,224,0,1,252,6,248,15,224,11,224,0,1,255,255,248,15,240,11,224,0,107,255,255,248,7,248,15,208,127,255,255,254,144,3,254,15,192,127,255,254,64,0,1,255,255,192,63,250,64,0,0,0,191,255,128,41,0,0,0,0,0,47,255,0,0,0,0,0,0,0,6,248,0, + // 0x5f15 引 + 21,95,29,36,32,37,3,252,0,0,0,0,0,0,21,0,0,0,0,0,0,0,63,64,127,255,255,254,0,0,63,64,127,255,255,254,0,0,63,64,127,255,255,254,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,31,255,255,254,0,0,63,64,31,255,255,254,0,0,63,64,47,255,255,254,0,0,63,64,47,192,0,0,0,0,63,64,63,128,0,0,0,0,63,64,63,64,0,0,0,0,63,64,63,0,0,0,0,0,63,64,127,0,0,0,0,0,63,64,191,255,255,255,0,0,63,64,255,255,255,255,0,0,63,64,255,255,255,254,0,0,63,64,253,0,0,254,0,0,63,64,188,0,0,254,0,0,63,64,0,0,0,253,0,0,63,64,0,0,0,253,0,0,63,64,0,0,0,253,0,0,63,64,0,0,1,252,0,0,63,64,0,0,2,252,0,0,63,64,0,0,2,252,0,0,63,64,0,0,3,248,0,0,63,64,0,0,7,248,0,0,63,64,2,165,111,244,0,0,63,64,1,255,255,240,0,0,63,64,0,255,255,208,0,0,63,64,0,255,254,0,0,0,63,64,0,0,0,0,0,0,0,0, + // 0x5f39 弹 + 57,95,34,36,68,37,2,252,0,0,0,0,16,0,2,64,0,0,0,0,2,240,0,7,244,0,191,255,252,3,252,0,11,240,0,191,255,252,0,253,0,15,224,0,191,255,252,0,191,0,47,192,0,0,1,252,0,63,128,63,64,0,0,1,252,0,31,64,191,0,0,0,1,252,0,8,0,253,0,0,0,1,252,42,170,171,254,170,0,0,1,252,63,255,255,255,255,0,63,255,252,63,255,255,255,255,0,63,255,252,63,64,127,64,127,0,63,255,252,63,64,127,64,127,0,62,0,0,63,64,127,64,127,0,62,0,0,63,255,255,255,255,0,126,0,0,63,255,255,255,255,0,126,0,0,63,170,191,170,191,0,126,0,0,63,64,127,64,127,0,126,0,0,63,64,127,64,127,0,127,255,252,63,234,255,234,255,0,191,255,248,63,255,255,255,255,0,191,255,248,63,255,255,255,255,0,0,2,248,0,0,127,64,0,0,0,2,248,0,0,127,64,0,0,0,2,244,0,0,127,64,0,0,0,2,247,255,255,255,255,255,208,0,3,247,255,255,255,255,255,208,0,3,247,255,255,255,255,255,208,0,3,240,0,0,127,64,0,0,0,3,240,0,0,127,64,0,0,0,7,240,0,0,127,64,0,0,16,31,224,0,0,127,64,0,0,63,255,208,0,0,127,64,0,0,31,255,192,0,0,127,64,0,0,15,254,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5f52 归 + 82,95,31,36,32,37,3,252,0,1,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,252,31,255,255,255,252,105,2,252,31,255,255,255,252,254,2,252,31,255,255,255,252,254,2,252,5,85,85,87,252,254,2,252,0,0,0,2,252,254,2,252,0,0,0,2,252,254,2,252,0,0,0,2,252,254,2,252,0,0,0,2,252,254,2,252,0,0,0,2,252,254,2,252,0,0,0,2,252,254,2,252,0,0,0,2,252,254,2,252,0,0,0,2,252,254,2,252,1,85,85,87,252,254,2,252,7,255,255,255,252,254,2,252,7,255,255,255,252,254,2,248,7,255,255,255,252,254,2,248,0,0,0,2,252,254,3,248,0,0,0,2,252,254,3,248,0,0,0,2,252,254,3,244,0,0,0,2,252,85,7,244,0,0,0,2,252,0,11,240,0,0,0,2,252,0,15,240,0,0,0,2,252,0,15,224,0,0,0,2,252,0,47,192,0,0,0,2,252,0,63,192,21,85,85,87,252,0,255,64,127,255,255,255,252,2,255,0,127,255,255,255,252,11,252,0,127,255,255,255,252,47,244,0,0,0,0,2,252,15,224,0,0,0,0,2,252,3,64,0,0,0,0,1,164,0,0,0,0,0,0,0,0, + // 0x5f84 径 + 132,95,35,35,59,37,1,253,0,0,144,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,11,252,63,255,255,255,254,0,0,31,240,63,255,255,255,255,64,0,127,192,63,255,255,255,255,0,2,255,64,0,184,0,1,254,0,11,253,0,0,253,0,3,252,0,63,244,0,0,191,0,11,244,0,127,208,61,0,63,192,31,224,0,47,0,191,64,31,240,127,192,0,8,1,254,0,11,253,255,0,0,0,3,252,0,2,255,252,0,0,0,15,244,0,0,255,244,0,0,0,47,224,0,2,255,253,0,0,0,191,192,0,47,255,255,208,0,2,255,192,6,255,244,255,254,64,11,255,193,191,255,64,31,255,248,63,255,194,255,248,0,2,255,244,255,239,192,254,64,26,128,27,224,127,95,192,80,0,47,192,0,64,61,31,192,0,0,47,192,0,0,20,31,192,0,0,47,192,0,0,0,31,192,0,0,47,192,0,0,0,31,192,31,255,255,255,255,64,0,31,192,31,255,255,255,255,64,0,31,192,31,255,255,255,255,64,0,31,192,0,0,47,192,0,0,0,31,192,0,0,47,192,0,0,0,31,192,0,0,47,192,0,0,0,31,192,0,0,47,192,0,0,0,31,192,0,0,47,192,0,0,0,31,195,255,255,255,255,255,244,0,31,195,255,255,255,255,255,244,0,31,195,255,255,255,255,255,244,0,31,192,0,0,0,0,0,0, + // 0x5f85 待 + 133,95,35,35,59,37,1,253,0,0,144,0,0,42,64,0,0,0,2,252,0,0,63,128,0,0,0,7,252,0,0,63,128,0,0,0,31,240,0,0,63,128,0,0,0,127,208,0,0,63,128,0,0,1,255,64,47,255,255,255,255,128,11,253,0,47,255,255,255,255,128,63,244,0,47,255,255,255,255,128,63,192,16,0,0,63,128,0,0,31,0,189,0,0,63,128,0,0,4,1,253,0,0,63,128,0,0,0,3,252,0,0,63,128,0,0,0,15,243,255,255,255,255,255,248,0,47,211,255,255,255,255,255,248,0,191,195,255,255,255,255,255,248,2,255,192,0,0,0,15,224,0,11,255,192,0,0,0,15,224,0,47,255,192,0,0,0,15,224,0,191,255,192,0,0,0,15,224,0,127,159,193,255,255,255,255,255,240,61,31,193,255,255,255,255,255,240,20,31,193,255,255,255,255,255,240,0,31,192,0,0,0,15,224,0,0,31,192,1,208,0,15,224,0,0,31,192,11,240,0,15,224,0,0,31,192,3,252,0,15,224,0,0,31,192,2,254,0,15,224,0,0,31,192,0,255,0,15,224,0,0,31,192,0,63,192,15,224,0,0,31,192,0,47,192,15,224,0,0,31,192,0,14,0,15,224,0,0,31,192,0,0,16,31,224,0,0,31,192,0,0,63,255,208,0,0,31,192,0,0,47,255,192,0,0,31,192,0,0,15,254,0,0, + // 0x5faa 循 + 170,95,35,35,59,37,1,253,0,1,128,0,0,0,0,0,0,0,3,248,0,0,0,6,253,0,0,15,240,0,0,91,255,255,64,0,63,208,126,255,255,255,249,0,0,191,64,127,255,255,253,0,0,2,254,0,127,250,82,248,0,0,11,248,0,127,0,2,248,0,0,63,224,0,126,0,2,248,0,0,127,128,144,126,0,2,248,0,0,45,1,253,127,255,255,255,255,244,4,3,252,127,255,255,255,255,244,0,11,240,127,255,255,255,255,244,0,31,224,126,0,3,244,0,0,0,63,192,126,0,3,240,0,0,0,255,128,126,0,3,240,0,0,3,255,128,126,31,255,255,255,128,31,255,128,126,31,255,255,255,192,127,255,128,126,31,255,255,255,192,255,175,128,190,31,128,0,31,192,62,47,128,190,31,128,0,31,192,40,47,128,189,31,149,85,111,192,0,47,128,253,31,255,255,255,192,0,47,128,253,31,255,255,255,192,0,47,128,252,31,128,0,31,192,0,47,128,252,31,128,0,31,192,0,47,129,252,31,128,0,31,192,0,47,130,248,31,255,255,255,192,0,47,130,248,31,255,255,255,192,0,47,131,244,31,149,85,111,192,0,47,135,240,31,128,0,31,192,0,47,139,240,31,128,0,31,192,0,47,143,208,31,255,255,255,192,0,47,159,192,31,255,255,255,192,0,47,131,128,31,149,85,111,192,0,47,128,0,31,128,0,10,128, + // 0x5fae 微 + 174,95,35,35,59,37,1,253,0,14,0,11,192,0,58,0,0,0,47,192,11,192,0,63,0,0,0,127,64,11,192,0,127,0,0,0,255,15,11,194,224,190,0,0,3,252,15,11,194,240,253,0,0,15,244,15,11,194,240,252,0,0,63,208,15,11,194,240,252,0,0,191,64,15,11,194,241,255,255,244,61,7,223,11,194,243,255,255,244,20,15,239,11,194,243,255,255,244,0,47,207,255,255,247,240,15,192,0,63,79,255,255,255,240,15,128,0,191,15,255,255,255,240,31,128,1,254,0,0,0,47,244,31,64,3,253,0,0,0,63,248,47,64,11,253,0,0,0,191,248,47,0,31,253,0,0,0,60,188,63,0,127,253,47,255,255,244,124,63,0,255,253,47,255,255,240,61,62,0,189,189,47,255,255,240,62,125,0,56,189,1,244,63,0,63,188,0,16,189,1,244,63,0,47,252,0,0,189,1,244,63,0,15,248,0,0,189,1,244,63,0,15,240,0,0,189,2,244,63,0,11,240,0,0,189,2,240,63,0,15,240,0,0,189,3,240,63,188,47,244,0,0,189,7,240,63,253,127,252,0,0,189,11,208,255,248,255,254,0,0,189,15,192,255,66,252,127,64,0,189,63,128,96,11,244,63,208,0,189,191,0,0,63,224,15,244,0,189,61,0,0,191,128,7,248,0,189,8,0,0,62,0,1,240,0,189,0,0,0,4,0,0,64, + // 0x5fc3 心 + 195,95,35,35,59,37,1,253,0,0,0,80,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,1,255,255,0,0,0,0,0,0,0,11,255,224,0,0,0,0,0,0,0,191,254,0,0,0,0,0,0,0,15,255,192,0,0,0,0,0,0,1,255,64,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,0,4,0,0,0,0,0,5,80,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,2,64,0,0,64,15,240,0,0,31,192,0,0,252,15,240,0,0,31,240,0,1,252,15,240,0,0,11,248,0,1,252,15,240,0,0,3,252,0,2,252,15,240,0,0,1,254,0,3,248,15,240,0,0,0,255,0,3,244,15,240,0,0,0,127,128,7,240,15,240,0,0,0,63,192,11,240,15,240,0,0,0,31,224,15,240,15,240,0,0,0,15,240,31,208,15,240,0,0,0,11,244,63,192,15,240,0,0,116,7,248,127,192,15,240,0,0,127,3,252,255,64,15,240,0,0,127,2,224,47,0,15,240,0,0,190,0,0,4,0,15,240,0,0,190,0,0,0,0,11,240,0,0,253,0,0,0,0,11,244,0,2,252,0,0,0,0,7,255,255,255,252,0,0,0,0,3,255,255,255,244,0,0,0,0,0,191,255,255,208,0,0,0,0,0,0,0,0,0,0,0, + // 0x5ffd 忽 + 253,95,34,35,59,37,2,253,0,0,57,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,11,255,255,255,255,255,244,0,0,31,255,255,255,255,255,244,0,0,127,255,255,255,255,255,244,0,1,255,64,255,1,253,7,240,0,7,253,2,252,2,252,3,240,0,47,244,7,248,3,244,7,240,0,191,208,15,240,15,240,7,240,0,127,64,63,192,31,208,7,240,0,13,0,255,64,63,192,11,240,0,0,3,253,0,255,0,11,240,0,0,31,248,2,253,0,15,224,0,0,191,208,11,248,0,15,208,0,7,255,64,47,240,0,31,208,0,15,252,0,191,192,0,63,192,0,3,224,3,255,0,255,255,192,0,0,64,47,252,0,127,255,64,0,0,0,31,224,0,63,248,0,0,0,0,7,139,128,0,0,0,0,0,0,0,47,244,0,0,0,0,0,64,5,11,254,0,13,0,0,0,253,63,129,255,192,191,64,0,0,252,63,128,63,128,63,208,0,2,252,63,128,10,0,15,240,0,3,248,63,128,0,2,7,252,0,15,240,63,128,0,7,225,254,0,47,224,63,128,0,7,224,191,64,127,192,47,192,0,15,224,63,192,255,64,47,255,255,255,208,31,208,61,0,15,255,255,255,192,14,0,0,0,6,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6027 性 + 39,96,34,35,59,37,1,253,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,128,2,248,15,192,0,0,0,63,128,2,248,15,192,0,0,0,63,128,3,248,15,192,0,0,0,63,128,3,244,15,192,0,0,0,63,136,3,240,15,192,0,0,9,63,253,7,240,15,192,0,0,15,127,191,15,255,255,255,255,192,31,63,175,79,255,255,255,255,192,31,63,159,159,255,255,255,255,192,47,63,143,239,213,95,213,85,64,63,63,139,255,64,15,192,0,0,62,63,129,191,0,15,192,0,0,62,63,128,255,0,15,192,0,0,125,63,128,253,0,15,192,0,0,188,63,128,44,0,15,192,0,0,188,63,128,0,0,15,192,0,0,0,63,128,0,0,31,208,0,0,0,63,128,15,255,255,255,255,64,0,63,128,15,255,255,255,255,64,0,63,128,15,255,255,255,255,64,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,130,255,255,255,255,255,240,0,63,130,255,255,255,255,255,240,0,63,130,255,255,255,255,255,240,0,63,128,85,85,85,85,85,80,0,42,64,0,0,0,0,0,0, + // 0x603b 总 + 59,96,34,35,59,37,2,253,0,0,20,0,0,6,0,0,0,0,1,252,0,0,15,224,0,0,0,0,255,0,0,15,240,0,0,0,0,191,64,0,47,208,0,0,0,0,63,192,0,63,192,0,0,0,0,31,224,0,191,0,0,0,0,0,15,240,0,254,0,0,0,0,0,11,144,2,253,0,0,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,64,0,0,0,127,64,0,0,127,64,0,0,0,127,64,0,0,127,64,0,0,0,127,64,0,0,127,64,0,0,0,127,64,0,0,127,64,0,0,0,127,64,0,0,127,128,0,0,0,127,64,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,0,0,2,64,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,106,15,252,0,2,192,0,7,144,191,2,255,64,15,224,0,11,240,191,0,127,208,11,244,0,15,224,191,0,31,240,3,252,0,15,208,191,0,7,192,0,254,0,47,192,191,0,1,0,64,127,64,63,192,191,0,0,0,248,63,192,127,64,191,0,0,0,252,31,208,255,0,191,64,0,2,252,15,192,125,0,127,255,255,255,248,5,0,4,0,63,255,255,255,240,0,0,0,0,11,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0, + // 0x6062 恢 + 98,96,35,35,59,37,1,253,0,63,64,15,192,0,0,0,0,0,63,64,15,192,0,0,0,0,0,63,64,15,192,0,0,0,0,0,63,64,15,192,0,0,0,0,0,63,67,255,255,255,255,255,244,0,63,67,255,255,255,255,255,244,0,63,167,255,255,255,255,255,244,9,63,252,31,192,0,0,0,0,15,63,188,15,192,0,252,0,0,31,63,126,15,192,0,252,0,0,31,63,95,15,192,0,252,0,0,31,63,79,79,192,0,252,0,0,47,63,79,79,192,0,252,2,144,62,63,75,79,199,192,252,3,240,61,63,64,15,199,192,252,7,224,124,63,64,15,203,192,252,11,208,188,63,64,15,203,192,252,15,192,116,63,64,31,207,128,252,31,128,0,63,64,31,143,65,252,47,0,0,63,64,31,159,1,252,63,0,0,63,64,47,127,2,252,125,0,0,63,64,47,93,3,253,4,0,0,63,64,63,0,3,254,0,0,0,63,64,63,0,7,255,0,0,0,63,64,127,0,15,239,64,0,0,63,64,190,0,31,143,192,0,0,63,64,253,0,63,79,208,0,0,63,64,252,0,191,7,240,0,0,63,66,252,1,253,3,252,0,0,63,67,248,7,248,1,254,0,0,63,71,240,31,240,0,191,128,0,63,79,224,191,192,0,63,244,0,63,95,194,255,64,0,15,248,0,63,75,128,252,0,0,3,240,0,63,65,0,96,0,0,0,144, + // 0x606f 息 + 111,96,35,35,59,37,1,253,0,0,0,1,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,252,0,0,0,0,0,11,255,255,255,255,255,192,0,0,11,255,255,255,255,255,192,0,0,11,250,170,170,170,191,192,0,0,11,224,0,0,0,15,192,0,0,11,224,0,0,0,15,192,0,0,11,250,170,170,170,175,192,0,0,11,255,255,255,255,255,192,0,0,11,255,255,255,255,255,192,0,0,11,224,0,0,0,15,192,0,0,11,224,0,0,0,15,192,0,0,11,250,170,170,170,175,192,0,0,11,255,255,255,255,255,192,0,0,11,255,255,255,255,255,192,0,0,11,224,0,0,0,15,192,0,0,11,224,0,0,0,15,192,0,0,11,224,0,0,0,15,192,0,0,11,255,255,255,255,255,192,0,0,11,255,255,255,255,255,192,0,0,6,170,170,170,170,170,128,0,0,0,0,2,208,0,0,0,0,0,0,0,15,244,0,0,0,0,0,80,0,3,253,0,2,192,0,0,190,15,208,255,64,15,240,0,0,253,15,208,63,208,15,252,0,1,252,15,208,15,208,3,254,0,3,248,15,208,7,0,0,255,64,11,240,15,208,0,2,224,63,208,31,240,15,208,0,3,244,31,240,127,192,15,224,0,7,244,11,244,63,64,15,255,255,255,240,3,244,6,0,7,255,255,255,224,1,128,0,0,1,191,255,255,64,0,0, + // 0x611f 感 + 31,97,35,35,59,37,1,253,0,0,0,0,3,240,61,0,0,0,0,0,0,3,244,191,208,0,0,0,0,0,3,244,47,248,0,0,0,0,0,3,244,2,244,0,1,255,255,255,255,255,255,255,224,1,255,255,255,255,255,255,255,224,1,255,255,255,255,255,255,255,208,1,252,0,0,0,252,0,0,0,1,252,85,85,84,253,1,144,0,1,252,255,255,252,190,3,248,0,1,252,255,255,252,190,7,240,0,1,248,0,0,0,127,11,240,0,1,248,0,0,0,63,79,208,0,2,248,21,85,80,47,175,192,0,2,244,191,255,248,31,255,64,0,3,244,191,255,248,15,255,0,0,3,240,188,1,248,11,252,0,64,7,240,188,1,248,11,248,0,240,11,224,188,1,248,63,252,0,248,15,208,191,255,249,255,255,1,244,31,192,191,255,255,254,63,211,240,63,128,21,86,87,248,31,255,240,191,0,0,11,128,208,7,255,208,46,0,0,47,244,0,0,191,64,8,0,5,75,254,0,1,128,0,0,61,15,208,255,192,15,224,0,0,127,15,208,47,128,15,248,0,0,254,15,208,10,1,3,254,0,1,253,15,208,0,2,224,255,64,3,252,15,208,0,3,244,63,192,15,240,15,224,0,3,240,31,240,63,224,15,255,255,255,240,11,244,47,128,7,255,255,255,208,3,208,2,0,1,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x620f 戏 + 15,98,35,36,68,37,1,252,0,0,0,0,3,244,2,0,0,0,0,0,0,3,248,31,192,0,0,0,0,0,3,248,47,240,0,0,0,0,0,3,248,7,252,0,63,255,255,248,3,248,1,255,0,63,255,255,252,3,252,0,191,0,63,255,255,248,2,252,0,40,0,0,0,3,244,2,252,0,0,0,0,0,3,244,2,252,0,22,144,2,0,7,240,2,254,191,255,224,15,128,7,242,255,255,255,255,240,47,208,11,227,255,255,255,254,144,15,240,15,227,255,255,148,0,0,3,248,31,194,149,253,0,0,0,2,253,47,192,0,253,0,62,0,0,255,63,128,0,254,0,63,64,0,63,255,64,0,254,0,191,0,0,31,255,0,0,191,0,254,0,0,15,254,0,0,191,2,252,0,0,3,253,0,0,127,7,248,0,0,3,254,0,0,127,79,240,0,0,11,255,64,0,63,175,208,0,0,15,255,192,0,63,255,128,0,0,47,255,224,0,47,255,0,0,0,127,207,240,0,31,253,0,0,0,255,71,252,0,15,248,2,64,3,254,2,253,0,63,240,2,240,15,252,0,248,0,255,248,3,244,63,240,0,160,3,255,252,3,240,191,208,0,0,31,255,255,3,240,47,64,0,0,255,240,255,219,224,13,0,0,3,255,192,191,255,208,0,0,0,0,253,0,47,255,192,0,0,0,0,32,0,11,255,128,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,0,0, + // 0x6210 成 + 16,98,35,36,68,37,1,252,0,0,0,0,7,240,40,0,0,0,0,0,0,7,244,191,64,0,0,0,0,0,7,244,191,240,0,0,0,0,0,7,244,15,253,0,0,0,0,0,7,244,2,254,0,0,0,0,0,3,244,0,60,0,1,255,255,255,255,255,255,255,240,1,255,255,255,255,255,255,255,240,1,255,255,255,255,255,255,255,240,1,253,85,85,87,249,85,85,80,1,252,0,0,3,248,0,0,0,1,252,0,0,3,252,0,0,0,1,252,0,0,2,252,0,185,0,1,252,0,0,2,252,0,255,0,1,255,255,255,65,252,1,253,0,1,255,255,255,65,252,3,252,0,1,255,255,255,64,253,3,248,0,1,253,0,63,64,254,11,240,0,1,252,0,63,64,255,15,224,0,1,252,0,63,64,191,47,208,0,2,252,0,63,64,127,127,128,0,2,252,0,63,64,127,255,0,0,2,252,0,63,0,63,253,0,0,3,252,0,63,0,47,252,0,0,3,248,0,127,0,31,240,1,64,3,248,0,191,0,63,224,2,224,7,244,255,255,0,255,240,2,244,11,240,191,253,3,255,244,3,244,15,240,191,244,15,255,252,3,240,15,224,0,0,127,241,254,3,240,47,208,0,2,255,208,255,139,240,63,192,0,15,255,64,127,255,208,127,128,0,11,252,0,31,255,192,47,0,0,3,224,0,7,255,64,6,0,0,0,64,0,0,84,0,0,0,0,0,0,0,0,0,0, + // 0x6237 户 + 55,98,31,36,32,37,1,252,0,0,0,1,184,0,0,0,0,0,0,2,252,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,127,64,0,0,0,63,255,255,255,255,255,244,0,63,255,255,255,255,255,244,0,63,255,255,255,255,255,244,0,63,128,0,0,0,3,244,0,63,128,0,0,0,3,244,0,63,128,0,0,0,3,244,0,63,128,0,0,0,3,244,0,63,128,0,0,0,3,244,0,63,128,0,0,0,3,244,0,63,128,0,0,0,3,244,0,63,255,255,255,255,255,244,0,63,255,255,255,255,255,244,0,63,255,255,255,255,255,244,0,63,64,0,0,0,7,244,0,127,0,0,0,0,3,244,0,127,0,0,0,0,1,80,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,253,0,0,0,0,0,0,1,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,248,0,0,0,0,0,0,11,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,47,208,0,0,0,0,0,0,127,192,0,0,0,0,0,0,63,64,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6240 所 + 64,98,35,34,50,37,1,253,0,0,0,0,0,0,0,111,64,47,255,255,255,208,0,7,255,208,47,255,255,255,209,2,255,255,208,47,255,255,255,215,255,255,248,0,0,0,0,0,7,255,254,64,0,0,0,0,0,7,255,64,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,7,255,255,255,71,240,0,0,0,7,255,255,255,71,240,0,0,0,7,255,255,255,71,240,0,0,0,7,240,0,63,71,240,0,0,0,7,240,0,63,71,255,255,255,248,7,240,0,63,71,255,255,255,248,7,240,0,63,71,255,255,255,248,7,240,0,63,71,245,86,253,80,7,240,0,63,71,240,2,252,0,7,255,255,255,71,240,2,252,0,7,255,255,255,75,240,2,252,0,7,255,255,255,79,224,2,252,0,7,240,0,0,15,224,2,252,0,11,224,0,0,15,208,2,252,0,11,224,0,0,15,192,2,252,0,11,224,0,0,47,192,2,252,0,15,208,0,0,63,128,2,252,0,15,208,0,0,63,64,2,252,0,15,192,0,0,191,0,2,252,0,31,192,0,0,254,0,2,252,0,47,128,0,2,252,0,2,252,0,63,64,0,7,248,0,2,252,0,191,0,0,15,240,0,2,252,0,254,0,0,47,224,0,2,252,0,125,0,0,11,128,0,2,252,0,8,0,0,2,0,0,1,252,0, + // 0x6247 扇 + 71,98,33,33,41,37,1,253,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,252,0,0,191,255,255,255,255,255,252,0,0,191,170,170,170,170,170,252,0,0,190,0,0,0,0,0,252,0,0,190,0,0,0,0,0,252,0,0,191,170,170,170,170,170,252,0,0,191,255,255,255,255,255,252,0,0,191,255,255,255,255,255,252,0,0,190,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,170,170,164,170,170,169,0,0,253,255,255,248,255,255,254,0,0,253,255,255,248,255,255,254,0,0,253,4,2,248,4,0,126,0,0,252,46,2,248,47,0,126,0,1,252,63,130,248,47,192,126,0,1,252,15,210,248,11,240,126,0,2,252,7,242,248,3,240,126,0,3,248,2,130,248,0,128,126,0,7,244,0,22,248,0,26,126,0,11,240,2,250,248,2,254,126,0,15,224,127,254,248,111,254,126,0,31,211,255,210,249,255,224,126,0,63,195,253,2,248,253,0,126,0,127,130,208,2,248,144,0,190,0,255,0,0,171,244,0,59,254,0,45,0,0,255,240,0,63,253,0,4,0,0,191,144,0,31,228,0, + // 0x624b 手 + 75,98,33,36,68,37,2,252,0,0,0,0,0,0,110,0,0,0,0,0,0,6,191,255,128,0,0,5,106,255,255,255,255,208,0,11,255,255,255,255,255,233,0,0,7,255,255,255,254,148,0,0,0,3,255,170,87,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,1,85,85,87,249,85,85,84,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,85,85,85,91,249,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,1,85,91,244,0,0,0,0,0,2,255,255,240,0,0,0,0,0,0,255,255,224,0,0,0,0,0,0,255,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6253 打 + 83,98,34,35,59,37,2,253,0,63,64,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,31,255,255,255,255,224,0,63,128,31,255,255,255,255,224,0,63,128,31,255,255,255,255,224,0,63,128,5,85,86,254,85,64,0,63,128,0,0,1,252,0,0,255,255,255,192,0,1,252,0,0,255,255,255,192,0,1,252,0,0,255,255,255,192,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,135,208,0,1,252,0,0,0,63,255,208,0,1,252,0,0,1,191,255,224,0,1,252,0,0,191,255,255,144,0,1,252,0,0,255,255,208,0,0,1,252,0,0,255,255,128,0,0,1,252,0,0,180,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,2,252,0,0,63,255,64,0,63,255,252,0,0,47,255,0,0,63,255,252,0,0,31,248,0,0,31,255,240,0,0,0,0,0,0,10,169,0,0,0, + // 0x6267 执 + 103,98,35,36,68,37,1,252,0,47,64,0,15,208,0,0,0,0,63,64,0,15,208,0,0,0,0,63,64,0,15,208,0,0,0,0,63,64,0,15,208,0,0,0,0,63,64,0,15,208,0,0,0,0,63,64,0,15,208,0,0,0,0,63,64,0,15,208,0,0,0,0,63,128,0,15,224,0,0,0,63,255,255,63,255,255,255,224,0,63,255,255,63,255,255,255,224,0,63,255,255,63,255,255,255,224,0,0,63,64,0,15,208,15,224,0,0,63,64,0,15,192,15,208,0,0,63,64,0,15,192,15,208,0,0,63,64,0,15,192,15,208,0,0,63,64,4,31,192,15,208,0,0,63,70,31,95,192,15,208,0,0,63,255,127,255,192,15,208,0,0,127,255,111,255,128,15,208,0,27,255,255,67,255,208,15,208,0,191,255,224,0,127,248,15,208,0,127,255,64,0,127,255,79,208,0,62,63,64,0,191,255,239,208,0,0,63,64,0,254,47,239,208,0,0,63,64,1,252,7,207,208,0,0,63,64,3,252,1,79,208,0,0,63,64,7,248,0,15,208,0,0,63,64,15,240,0,11,208,192,0,63,64,47,224,0,11,224,244,0,63,64,127,192,0,7,225,248,0,63,65,255,64,0,3,241,244,5,127,75,254,0,0,3,251,240,31,255,95,252,0,0,2,255,240,15,255,11,224,0,0,0,255,208,15,244,3,128,0,0,0,63,64,0,0,0,0,0,0,0,0,0, + // 0x6279 批 + 121,98,35,35,59,37,1,253,0,63,0,5,64,1,164,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,127,255,255,47,192,2,248,0,0,127,255,255,47,192,2,248,2,0,127,255,255,47,192,2,248,11,192,0,63,0,47,192,2,248,63,240,0,63,0,47,255,242,249,255,192,0,63,0,47,255,242,255,254,0,0,63,0,47,255,242,255,244,0,0,63,0,47,213,82,255,128,0,0,63,94,47,192,2,252,0,0,0,63,254,47,192,2,248,0,0,6,255,255,47,192,2,248,0,0,191,255,249,47,192,2,248,0,0,191,255,64,47,192,2,248,0,0,127,127,0,47,192,2,248,0,0,16,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,1,208,0,63,0,47,192,2,248,1,248,0,63,0,47,192,98,248,2,248,0,63,0,47,219,242,248,2,244,0,63,10,255,255,246,252,3,240,0,127,15,255,255,225,255,255,240,47,255,11,255,144,0,255,255,224,31,254,3,144,0,0,127,255,128,15,228,0,0,0,0,0,0,0, + // 0x6296 抖 + 150,98,35,36,68,37,1,252,0,31,192,0,0,0,15,208,0,0,31,192,0,0,0,15,224,0,0,31,192,0,0,0,15,224,0,0,31,192,0,45,0,15,224,0,0,31,192,0,127,192,15,224,0,0,31,192,0,127,244,15,224,0,0,31,192,0,11,254,15,224,0,0,31,192,0,1,255,79,224,0,63,255,255,208,0,63,15,224,0,63,255,255,208,0,12,15,224,0,63,255,255,208,0,0,15,224,0,0,31,192,0,0,0,15,224,0,0,31,192,0,128,0,15,224,0,0,31,192,2,248,0,15,224,0,0,31,192,7,255,128,15,224,0,0,31,192,1,255,240,15,224,0,0,31,192,64,31,252,15,224,0,0,31,223,208,3,244,15,224,0,0,47,255,224,0,176,15,224,0,27,255,255,224,0,0,15,224,0,127,255,249,0,0,0,15,224,0,63,255,192,0,0,0,15,251,244,63,111,192,0,0,6,191,255,244,0,31,192,0,107,255,255,255,248,0,31,192,47,255,255,255,250,64,0,31,192,31,255,255,175,224,0,0,31,192,31,250,64,15,224,0,0,31,192,5,0,0,15,224,0,0,31,192,0,0,0,15,224,0,0,31,192,0,0,0,15,224,0,0,31,192,0,0,0,15,224,0,0,47,192,0,0,0,15,224,0,31,255,192,0,0,0,15,224,0,15,255,64,0,0,0,15,224,0,15,249,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0, + // 0x62a5 报 + 165,98,34,36,68,37,1,252,0,10,128,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,7,255,255,255,255,64,0,31,192,7,255,255,255,255,64,0,31,192,7,255,255,255,255,0,0,31,192,7,240,0,0,127,0,0,31,192,7,240,0,0,127,0,21,111,213,71,240,0,0,191,0,63,255,255,199,240,0,0,255,0,63,255,255,199,240,46,170,254,0,63,255,255,199,240,15,255,252,0,0,31,192,7,240,15,255,240,0,0,31,192,7,240,0,0,0,0,0,31,192,7,240,0,0,0,0,0,31,192,7,255,255,255,255,128,0,31,192,7,255,255,255,255,192,0,31,214,199,255,255,255,255,192,0,31,255,199,247,240,0,63,128,6,255,255,215,243,248,0,63,64,191,255,255,135,241,252,0,127,0,127,255,224,7,240,253,0,255,0,63,255,192,7,240,191,0,253,0,57,31,192,7,240,63,130,252,0,0,31,192,7,240,47,195,248,0,0,31,192,7,240,15,255,240,0,0,31,192,7,240,7,255,224,0,0,31,192,7,240,3,255,192,0,0,31,192,7,240,1,255,128,0,0,31,192,7,240,3,255,208,0,0,31,192,7,240,15,255,248,0,0,31,192,7,240,63,255,254,0,16,47,192,7,242,255,194,255,224,63,255,192,7,255,255,0,191,240,47,255,128,7,247,248,0,31,208,31,249,0,7,242,192,0,2,128,0,0,0,0,0,0,0,0,0, + // 0x62ac 抬 + 172,98,35,36,68,37,1,252,0,31,192,0,0,228,0,0,0,0,31,192,0,1,254,0,0,0,0,31,192,0,3,252,0,0,0,0,31,192,0,3,252,0,0,0,0,31,192,0,7,244,0,0,0,0,31,192,0,11,240,0,0,0,0,31,192,0,15,224,1,64,0,0,31,192,0,31,208,15,208,0,127,255,255,192,47,192,15,240,0,127,255,255,192,63,64,7,248,0,127,255,255,192,127,0,1,253,0,0,31,192,0,254,0,0,191,0,0,31,192,1,254,106,191,255,192,0,31,192,127,255,255,255,255,208,0,31,192,127,255,255,255,255,240,0,31,192,63,255,250,149,71,248,0,31,193,165,0,0,0,3,248,0,31,239,208,0,0,0,1,192,0,47,255,208,0,0,0,0,0,27,255,255,208,0,0,0,0,0,191,255,249,3,255,255,255,255,0,127,255,192,3,255,255,255,255,0,62,95,192,3,255,255,255,255,0,0,31,192,3,240,0,0,191,0,0,31,192,3,240,0,0,191,0,0,31,192,3,240,0,0,191,0,0,31,192,3,240,0,0,191,0,0,31,192,3,240,0,0,191,0,0,31,192,3,240,0,0,191,0,0,31,192,3,240,0,0,191,0,0,31,192,3,255,255,255,255,0,0,31,192,3,255,255,255,255,0,31,255,192,3,255,255,255,255,0,15,255,128,3,240,0,0,191,0,11,253,0,3,240,0,0,106,0,0,0,0,0,0,0,0,0,0, + // 0x62bd 抽 + 189,98,34,36,68,37,1,252,0,31,128,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,127,255,255,133,85,95,213,85,64,127,255,255,159,255,255,255,255,240,127,255,255,159,255,255,255,255,240,0,47,192,31,255,255,255,255,240,0,47,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,95,192,15,192,11,240,0,47,239,159,192,15,192,11,240,0,47,255,223,192,15,208,11,240,27,255,255,223,255,255,255,255,240,191,255,248,31,255,255,255,255,240,127,255,192,31,255,255,255,255,240,62,111,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,31,213,95,213,95,240,0,47,192,31,255,255,255,255,240,0,47,192,31,255,255,255,255,240,0,47,128,31,255,255,255,255,240,47,255,128,31,192,0,0,11,240,15,255,64,31,192,0,0,11,240,15,249,0,15,192,0,0,6,144,0,0,0,0,0,0,0,0,0, + // 0x62d4 拔 + 212,98,35,36,68,37,1,252,0,31,128,0,11,208,4,0,0,0,47,192,0,15,224,47,64,0,0,47,192,0,15,208,63,224,0,0,47,192,0,15,208,15,253,0,0,47,192,0,15,208,2,255,128,0,47,192,0,15,208,0,127,128,0,47,192,0,15,208,0,15,0,0,47,192,0,15,208,0,0,0,127,255,255,191,255,255,255,255,240,127,255,255,191,255,255,255,255,240,106,191,234,127,255,255,255,255,240,0,47,192,0,15,208,0,0,0,0,47,192,0,15,208,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,240,0,253,0,0,47,192,0,47,240,0,253,0,0,47,193,64,47,244,1,252,0,0,47,255,128,63,248,2,252,0,0,127,255,192,63,252,2,248,0,111,255,255,128,127,253,3,244,0,191,255,228,0,191,127,7,240,0,127,255,192,0,254,63,75,240,0,62,47,192,0,253,47,207,208,0,0,47,192,1,252,15,239,192,0,0,47,192,2,252,11,255,128,0,0,47,192,3,244,3,255,0,0,0,47,192,11,240,2,254,0,0,0,47,192,15,224,3,255,64,0,0,47,192,47,192,11,255,208,0,0,47,192,127,128,47,255,244,0,0,47,192,255,0,191,199,254,0,0,47,131,253,3,255,1,255,208,47,255,143,248,31,252,0,127,248,15,255,71,240,15,240,0,11,240,15,249,1,192,3,128,0,1,192,0,0,0,0,0,0,0,0,0, + // 0x62e9 择 + 233,98,35,36,68,37,1,252,0,47,128,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,47,128,15,255,255,255,254,0,0,47,128,15,255,255,255,255,64,0,47,128,15,255,255,255,255,0,0,47,128,0,190,0,1,253,0,0,47,128,0,63,64,7,248,0,0,47,128,0,31,192,15,240,0,63,255,255,192,15,240,63,192,0,63,255,255,192,3,253,255,64,0,63,255,255,192,0,255,253,0,0,0,47,128,0,0,191,244,0,0,0,47,128,0,7,255,255,64,0,0,47,128,0,191,253,255,244,0,0,47,128,111,255,208,31,255,228,0,47,128,191,253,0,2,255,244,0,47,155,127,64,31,192,27,224,0,47,255,128,0,31,192,0,64,6,255,255,128,0,31,192,0,0,191,255,249,11,255,255,255,255,0,127,255,128,11,255,255,255,255,0,63,127,128,11,255,255,255,255,0,16,47,128,0,0,31,192,0,0,0,47,128,0,0,31,192,0,0,0,47,128,0,0,31,192,0,0,0,47,128,0,0,31,192,0,0,0,47,128,127,255,255,255,255,244,0,47,128,127,255,255,255,255,244,0,47,128,127,255,255,255,255,244,0,47,128,0,0,31,192,0,0,0,47,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,31,255,128,0,0,31,192,0,0,15,255,0,0,0,31,192,0,0,11,248,0,0,0,31,192,0,0,0,0,0,0,0,0,0,0,0, + // 0x6309 按 + 9,99,35,36,68,37,1,252,0,31,128,0,0,31,192,0,0,0,47,192,0,0,31,192,0,0,0,47,192,0,0,31,192,0,0,0,47,192,0,0,31,192,0,0,0,47,192,0,0,31,192,0,0,0,47,192,63,255,255,255,255,240,0,47,192,63,255,255,255,255,240,0,47,192,63,255,255,255,255,240,127,255,255,191,128,0,0,7,240,127,255,255,191,64,0,0,7,240,127,255,255,191,64,254,0,7,240,0,47,192,63,64,253,0,7,240,0,47,192,21,2,252,0,1,80,0,47,192,0,3,248,0,0,0,0,47,192,0,3,244,0,0,0,0,47,192,63,255,255,255,255,248,0,47,193,191,255,255,255,255,248,0,47,255,255,255,255,255,255,248,1,191,255,192,47,192,2,252,0,127,255,255,128,63,128,3,248,0,191,255,208,0,127,0,3,248,0,127,255,192,0,191,0,7,240,0,57,47,192,0,254,0,15,240,0,0,47,192,1,254,0,31,224,0,0,47,192,2,255,244,63,192,0,0,47,192,3,255,255,191,128,0,0,47,192,2,247,255,255,0,0,0,47,192,0,0,127,255,64,0,0,47,192,0,0,31,255,224,0,0,47,192,0,0,191,255,253,0,0,47,192,0,27,255,75,255,128,0,47,128,22,255,252,1,255,224,47,255,128,255,255,208,0,47,240,15,255,64,127,249,0,0,7,208,15,249,0,62,64,0,0,1,128,0,0,0,0,0,0,0,0,0, + // 0x6321 挡 + 33,99,33,36,68,37,1,252,0,47,128,0,0,10,128,0,0,0,47,128,0,0,15,192,0,0,0,47,128,0,0,15,192,0,0,0,47,128,11,192,15,192,15,128,0,47,128,15,208,15,192,31,192,0,47,128,11,224,15,192,47,192,0,47,128,7,240,15,192,63,64,0,63,192,3,244,15,192,127,0,63,255,255,194,248,15,192,190,0,63,255,255,193,252,15,192,253,0,63,255,255,192,253,15,193,252,0,0,47,128,0,184,15,195,244,0,0,47,128,0,0,15,192,96,0,0,47,128,0,0,15,192,0,0,0,47,128,31,255,255,255,255,192,0,47,128,31,255,255,255,255,192,0,47,130,95,255,255,255,255,192,0,47,255,133,85,85,85,111,192,0,127,255,192,0,0,0,47,192,47,255,255,192,0,0,0,47,192,191,255,248,0,0,0,0,47,192,127,255,128,0,0,0,0,47,192,127,127,128,15,255,255,255,255,192,16,47,128,15,255,255,255,255,192,0,47,128,15,255,255,255,255,192,0,47,128,0,0,0,0,47,192,0,47,128,0,0,0,0,47,192,0,47,128,0,0,0,0,47,192,0,47,128,0,0,0,0,47,192,0,47,128,127,255,255,255,255,192,0,47,128,127,255,255,255,255,192,0,63,128,127,255,255,255,255,192,47,255,128,21,85,85,85,111,192,15,255,0,0,0,0,0,47,192,15,248,0,0,0,0,0,5,64,0,0,0,0,0,0,0,0,0, + // 0x6324 挤 + 36,99,35,35,59,37,1,253,0,127,0,0,0,108,0,0,0,0,127,0,0,0,254,0,0,0,0,127,0,0,0,191,0,0,0,0,127,0,0,0,63,128,0,0,0,127,0,255,255,255,255,255,240,0,127,0,255,255,255,255,255,240,0,127,0,255,255,255,255,255,240,0,127,0,1,252,0,7,244,0,63,255,253,0,253,0,15,240,0,63,255,253,0,127,0,31,208,0,63,255,253,0,63,192,63,192,0,0,127,0,0,15,240,255,0,0,0,127,0,0,7,255,253,0,0,0,127,0,0,1,255,244,0,0,0,127,0,0,2,255,249,0,0,0,127,0,0,191,255,255,228,0,0,127,108,191,255,246,255,255,244,0,127,252,255,254,64,47,255,240,0,191,252,191,224,0,1,191,224,47,255,248,36,85,0,5,64,64,127,255,64,0,254,0,15,208,0,63,255,0,0,254,0,15,208,0,57,127,0,0,254,0,15,208,0,0,127,0,0,254,0,15,208,0,0,127,0,0,254,0,15,208,0,0,127,0,0,253,0,15,208,0,0,127,0,0,253,0,15,208,0,0,127,0,2,252,0,15,208,0,0,127,0,3,248,0,15,208,0,0,127,0,15,244,0,15,208,0,0,127,0,63,224,0,15,208,0,63,255,2,255,192,0,15,208,0,31,254,7,254,0,0,15,208,0,15,248,0,244,0,0,15,208,0,5,0,0,0,0,0,5,64,0, + // 0x635f 损 + 95,99,35,36,68,37,1,252,0,63,64,0,0,0,0,0,0,0,63,64,2,170,170,170,168,0,0,63,64,3,255,255,255,252,0,0,63,64,3,255,255,255,252,0,0,63,64,3,244,0,1,252,0,0,63,64,3,244,0,1,252,0,0,63,64,3,244,0,1,252,0,0,63,64,3,244,0,1,252,0,127,255,255,67,250,170,171,252,0,127,255,255,67,255,255,255,252,0,127,255,255,67,255,255,255,252,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,10,170,170,170,170,0,0,63,64,15,255,255,255,255,0,0,63,64,15,255,255,255,255,0,0,63,64,15,192,0,0,63,0,0,63,175,79,192,0,0,63,0,0,63,255,143,192,21,64,63,0,6,255,255,143,192,47,128,63,0,191,255,248,15,192,47,128,63,0,191,255,128,15,192,47,128,63,0,127,191,64,15,192,47,128,63,0,32,63,64,15,192,63,128,63,0,0,63,64,15,192,63,128,63,0,0,63,64,15,192,63,64,63,0,0,63,64,15,192,191,0,63,0,0,63,64,5,65,254,8,0,0,0,63,64,0,11,252,47,64,0,0,63,64,0,63,244,127,224,0,0,63,64,2,255,208,31,253,0,21,127,64,127,255,0,2,255,128,47,255,3,255,248,0,0,127,244,31,254,1,255,128,0,0,15,240,15,228,0,164,0,0,0,2,208,0,0,0,0,0,0,0,0,0, + // 0x6362 换 + 98,99,35,36,68,37,1,252,0,63,0,0,11,160,0,0,0,0,63,0,0,15,224,0,0,0,0,63,0,0,47,192,0,0,0,0,63,0,0,63,255,255,224,0,0,63,0,0,255,255,255,248,0,0,63,0,2,255,255,255,244,0,0,63,0,7,248,0,31,224,0,0,127,64,15,240,0,63,192,0,63,255,253,63,192,0,191,0,0,63,255,254,255,234,171,255,170,0,63,255,254,255,255,255,255,255,0,0,63,0,63,255,255,255,255,0,0,63,0,31,192,47,128,191,0,0,63,0,15,192,47,128,191,0,0,63,0,15,192,47,128,191,0,0,63,0,15,192,47,128,191,0,0,63,0,15,192,47,128,191,0,0,63,174,15,192,47,128,191,0,0,127,255,15,192,47,128,191,0,27,255,255,15,192,63,64,191,0,191,255,228,15,192,63,64,191,0,127,255,2,255,255,255,255,255,240,62,127,2,255,255,255,255,255,240,0,63,2,255,255,255,255,255,240,0,63,0,0,1,255,192,0,0,0,63,0,0,3,255,240,0,0,0,63,0,0,11,247,248,0,0,0,63,0,0,47,225,253,0,0,0,63,0,0,191,192,191,64,0,0,63,0,3,255,0,63,224,0,0,63,0,31,252,0,15,253,0,5,191,0,191,224,0,3,255,144,31,255,11,255,64,0,0,191,248,15,254,11,248,0,0,0,31,240,15,228,3,208,0,0,0,1,192,0,0,0,0,0,0,0,0,0, + // 0x6389 掉 + 137,99,35,36,68,37,1,252,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,255,255,240,0,63,64,0,0,63,255,255,240,0,63,64,0,0,63,255,255,240,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,127,255,255,0,0,63,64,0,0,127,255,255,63,255,255,255,255,0,127,255,255,63,255,255,255,255,0,0,63,64,63,234,170,170,255,0,0,63,64,63,64,0,0,63,0,0,63,64,63,64,0,0,63,0,0,63,64,63,170,170,170,191,0,0,63,64,63,255,255,255,255,0,0,63,91,63,255,255,255,255,0,0,63,255,63,64,0,0,63,0,1,191,255,63,64,0,0,63,0,111,255,255,63,64,0,0,63,0,127,255,208,63,234,170,170,191,0,63,255,64,63,255,255,255,255,0,57,63,64,63,255,255,255,255,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,67,255,255,255,255,255,244,0,63,67,255,255,255,255,255,244,0,63,67,255,255,255,255,255,244,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,127,64,0,0,63,64,0,0,63,255,0,0,0,63,64,0,0,63,255,0,0,0,63,64,0,0,47,248,0,0,0,63,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x63a2 探 + 162,99,35,35,59,37,1,253,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,63,255,255,255,255,224,0,63,0,63,255,255,255,255,240,0,63,0,63,255,255,255,255,240,0,63,0,62,0,0,0,7,240,0,63,0,62,11,224,189,7,240,0,63,0,62,11,208,189,7,240,127,255,255,62,15,208,189,3,224,127,255,255,0,15,192,189,0,0,127,255,255,0,31,192,189,0,128,0,63,0,0,63,128,189,1,244,0,63,0,0,255,0,190,1,244,0,63,0,7,254,0,191,171,240,0,63,0,191,248,0,127,255,240,0,63,0,63,208,21,95,255,192,0,63,26,41,0,47,128,0,0,0,63,254,0,0,47,128,0,0,1,191,255,0,0,47,128,0,0,111,255,254,0,0,47,128,0,0,191,255,144,191,255,255,255,255,240,127,255,0,191,255,255,255,255,240,56,63,0,191,255,255,255,255,240,0,63,0,0,3,255,252,0,0,0,63,0,0,15,255,255,0,0,0,63,0,0,47,255,255,128,0,0,63,0,0,191,111,159,224,0,0,63,0,2,254,47,135,248,0,0,63,0,11,252,47,130,254,0,0,63,0,127,240,47,128,255,208,0,63,2,255,192,47,128,63,248,0,127,7,254,0,47,128,15,244,47,255,1,244,0,47,128,2,208,31,254,0,64,0,47,128,0,0,15,228,0,0,0,47,128,0,0, + // 0x63a5 接 + 165,99,35,36,68,37,1,252,0,31,128,0,0,47,192,0,0,0,47,192,0,0,47,192,0,0,0,47,192,0,0,47,192,0,0,0,47,192,0,0,47,192,0,0,0,47,192,63,255,255,255,255,208,0,47,192,63,255,255,255,255,208,0,47,192,63,255,255,255,255,208,0,47,192,0,190,0,7,240,0,63,255,255,0,127,0,11,224,0,63,255,255,0,63,0,15,208,0,63,255,255,0,63,64,15,192,0,0,47,192,0,47,128,47,128,0,0,47,192,0,47,128,63,64,0,0,47,193,255,255,255,255,255,244,0,47,193,255,255,255,255,255,244,0,47,193,255,255,255,255,255,244,0,47,192,0,2,252,0,0,0,0,47,239,0,3,244,0,0,0,0,127,255,0,11,240,0,0,0,111,255,255,255,255,255,255,255,244,191,255,229,255,255,255,255,255,244,191,255,192,255,255,255,255,255,244,125,47,192,0,127,0,11,240,0,0,47,192,0,254,0,15,224,0,0,47,192,1,252,0,31,192,0,0,47,192,3,252,0,63,192,0,0,47,192,7,255,208,127,64,0,0,47,192,15,255,255,255,0,0,0,47,192,1,203,255,253,0,0,0,47,192,0,0,127,255,128,0,0,47,192,0,6,255,255,248,0,5,127,128,5,191,254,47,255,64,31,255,131,255,255,228,2,255,208,15,255,2,255,253,0,0,47,192,15,248,0,249,64,0,0,7,0,0,0,0,0,0,0,0,0,0, + // 0x63a7 控 + 167,99,35,35,59,37,1,253,0,63,0,0,0,47,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,255,255,255,255,255,240,0,63,0,255,255,255,255,255,240,0,63,0,255,255,255,255,255,240,0,63,0,252,11,208,189,3,240,127,255,254,252,15,208,189,3,240,127,255,254,252,15,192,189,3,240,127,255,254,252,15,192,189,0,0,0,63,0,0,47,192,189,1,0,0,63,0,0,63,128,189,2,240,0,63,0,0,191,0,190,2,240,0,63,0,7,253,0,191,255,240,0,63,25,191,248,0,127,255,224,0,63,254,127,208,0,31,255,128,0,191,255,61,0,0,0,0,0,31,255,253,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,191,255,0,31,255,255,255,255,128,125,63,0,31,255,255,255,255,128,0,63,0,31,255,255,255,255,128,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,127,3,255,255,255,255,255,244,47,255,3,255,255,255,255,255,244,31,254,3,255,255,255,255,255,244,15,228,0,0,0,0,0,0,0, + // 0x63d0 提 + 208,99,35,35,59,37,1,253,0,42,0,0,0,0,0,0,0,0,63,0,6,170,170,170,169,0,0,63,0,15,255,255,255,255,0,0,63,0,15,255,255,255,255,0,0,63,0,15,208,0,0,127,0,0,63,0,15,208,0,0,127,0,0,63,0,15,229,85,85,191,0,127,255,255,15,255,255,255,255,0,127,255,255,15,255,255,255,255,0,127,255,255,15,208,0,0,127,0,0,127,0,15,208,0,0,127,0,0,63,0,15,234,170,170,191,0,0,63,0,15,255,255,255,255,0,0,63,0,15,255,255,255,255,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,5,127,255,255,255,255,224,0,63,254,191,255,255,255,255,240,1,191,255,191,255,255,255,255,240,127,255,254,0,0,47,128,0,0,191,255,144,1,64,47,128,0,0,127,255,0,7,224,47,128,0,0,56,63,0,11,224,47,128,0,0,0,63,0,15,208,47,255,255,0,0,63,0,15,192,47,255,255,0,0,63,0,31,208,47,234,170,0,0,63,0,47,240,47,128,0,0,0,63,0,63,248,47,128,0,0,0,63,0,191,189,47,128,0,0,0,63,0,253,63,191,128,0,0,0,63,2,252,31,255,128,0,0,63,255,11,244,7,255,255,255,248,47,254,31,224,0,255,255,255,244,31,244,7,192,0,6,255,255,240,0,0,0,0,0,0,0,0,0, + // 0x63d2 插 + 210,99,34,35,59,37,1,253,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,5,190,0,0,63,0,0,86,175,255,255,64,0,63,0,63,255,255,255,255,128,0,63,0,63,255,255,250,80,0,0,63,0,26,165,111,128,0,0,0,63,0,0,0,47,128,0,0,0,63,0,0,0,47,128,0,0,127,255,255,0,0,47,128,0,0,127,255,255,255,255,255,255,255,240,127,255,255,255,255,255,255,255,240,0,63,0,255,255,255,255,255,240,0,63,0,0,0,47,128,0,0,0,63,0,0,0,47,128,0,0,0,63,0,0,31,47,128,0,0,0,63,0,57,255,255,143,255,208,0,63,110,63,255,191,143,255,208,0,63,254,63,244,47,143,255,208,11,255,255,63,0,47,128,15,208,191,255,248,63,0,47,128,15,208,191,255,64,63,0,47,128,15,208,127,191,0,63,0,47,128,15,208,16,63,0,63,255,47,143,255,208,0,63,0,63,255,47,143,255,208,0,63,0,63,255,47,143,255,208,0,63,0,63,0,47,128,15,208,0,63,0,63,0,47,128,15,208,0,63,0,63,0,47,128,15,208,0,63,0,63,0,47,128,15,208,0,63,0,63,0,47,128,15,208,0,63,0,63,255,255,255,255,208,0,127,0,63,255,255,255,255,208,47,255,0,63,255,255,255,255,208,31,254,0,63,0,0,0,15,208,15,228,0,63,0,0,0,11,192, + // 0x6536 收 + 54,101,35,36,68,37,1,252,0,0,10,144,1,228,0,0,0,0,0,15,208,2,252,0,0,0,0,0,15,208,3,252,0,0,0,0,0,15,208,3,248,0,0,0,1,80,15,208,7,240,0,0,0,7,240,15,208,11,240,0,0,0,7,240,15,208,15,224,0,0,0,7,240,15,208,31,255,255,255,248,7,240,15,208,63,255,255,255,248,7,240,15,208,63,255,255,255,248,7,240,15,208,191,213,85,127,144,7,240,15,208,255,192,0,127,0,7,240,15,210,255,192,0,191,0,7,240,15,215,255,208,0,254,0,7,240,15,239,255,240,0,253,0,7,240,15,255,231,240,1,252,0,7,240,15,239,195,244,3,252,0,7,240,15,215,66,252,3,244,0,7,240,15,208,1,252,11,240,0,7,240,15,208,0,254,15,224,0,7,240,15,208,0,191,47,208,0,7,240,15,208,0,63,191,192,0,7,246,255,208,0,47,255,64,0,11,255,255,208,0,15,254,0,0,191,255,255,208,0,11,252,0,0,127,255,79,208,0,15,252,0,0,63,144,15,208,0,63,255,0,0,20,0,15,208,0,191,255,128,0,0,0,15,208,3,255,127,224,0,0,0,15,208,31,252,15,252,0,0,0,15,208,191,240,7,255,64,0,0,15,235,255,192,1,255,244,0,0,15,223,254,0,0,127,248,0,0,15,215,240,0,0,11,224,0,0,15,210,64,0,0,1,192,0,0,0,0,0,0,0,0,0, + // 0x653e 放 + 62,101,35,36,68,37,1,252,0,3,244,0,0,58,0,0,0,0,3,244,0,0,63,64,0,0,0,3,244,0,0,127,0,0,0,0,3,244,0,0,191,0,0,0,0,3,244,0,0,255,0,0,0,0,3,244,0,0,254,0,0,0,127,255,255,255,193,253,0,0,0,127,255,255,255,194,255,255,255,248,127,255,255,255,195,255,255,255,248,0,127,0,0,3,255,255,255,248,0,63,0,0,11,244,0,191,0,0,63,0,0,15,244,0,254,0,0,63,0,0,31,248,0,253,0,0,63,0,0,63,252,0,252,0,0,63,255,254,127,252,1,252,0,0,63,255,254,255,253,2,252,0,0,63,255,255,254,190,3,248,0,0,127,0,254,252,127,7,244,0,0,127,0,253,40,63,75,240,0,0,127,0,253,0,63,143,224,0,0,127,0,253,0,31,223,208,0,0,127,0,253,0,15,255,192,0,0,190,0,253,0,11,255,64,0,0,254,0,253,0,7,255,0,0,0,253,0,252,0,3,254,0,0,0,252,0,252,0,3,254,0,0,2,252,0,252,0,15,255,64,0,3,248,0,252,0,47,255,192,0,7,244,0,252,0,191,239,240,0,15,240,1,252,2,255,15,252,0,31,224,2,252,31,252,3,255,64,63,192,3,248,191,240,0,255,224,255,67,255,251,255,192,0,127,244,126,1,255,241,254,0,0,15,224,12,1,255,128,240,0,0,1,192,0,0,0,0,0,0,0,0,0, + // 0x6570 数 + 112,101,35,36,68,37,1,252,0,0,253,0,0,14,128,0,0,2,128,253,7,128,31,208,0,0,15,208,253,15,224,31,192,0,0,7,240,253,31,192,47,192,0,0,3,244,253,63,64,63,128,0,0,1,248,253,126,0,63,64,0,0,0,208,253,24,0,127,64,0,0,63,255,255,255,248,191,255,255,244,63,255,255,255,248,255,255,255,244,63,255,255,255,244,255,255,255,244,0,7,255,128,2,253,85,127,80,0,31,255,244,3,253,0,127,0,0,191,254,255,7,254,0,191,0,2,253,253,63,223,255,0,254,0,31,244,253,15,223,255,0,254,0,127,208,253,2,127,255,64,253,0,47,0,253,0,191,175,129,252,0,4,3,248,0,127,31,195,252,0,0,7,240,0,29,15,195,248,0,0,15,224,0,4,15,231,244,0,191,255,255,255,248,11,255,240,0,191,255,255,255,248,3,255,224,0,127,255,255,255,248,3,255,192,0,0,254,0,253,0,1,255,128,0,1,252,0,252,0,0,255,0,0,3,252,2,252,0,2,255,64,0,11,255,131,244,0,7,255,192,0,15,255,255,240,0,31,255,224,0,2,139,255,224,0,127,239,248,0,0,1,255,248,1,255,131,254,0,0,11,255,255,11,254,1,255,128,6,255,249,255,255,252,0,191,244,63,255,208,63,255,224,0,47,244,47,249,0,10,63,64,0,7,208,14,64,0,0,40,0,0,0,128,0,0,0,0,0,0,0,0,0, + // 0x6572 敲 + 114,101,35,36,68,37,1,252,0,0,252,0,0,3,244,0,0,0,0,252,0,0,3,244,0,0,0,0,252,0,0,3,244,0,0,0,0,252,0,0,3,244,0,0,63,255,255,255,244,3,244,0,0,127,255,255,255,244,3,255,255,240,127,255,255,255,244,3,255,255,240,0,0,0,0,0,3,255,255,240,0,85,85,84,0,3,244,0,0,1,255,255,253,0,3,244,0,0,1,255,255,253,0,3,244,0,0,1,248,0,189,0,3,244,0,0,1,248,0,189,0,3,244,0,0,1,248,0,189,31,255,255,255,192,1,255,255,253,31,255,255,255,192,1,255,255,253,31,255,255,255,192,0,85,85,84,0,96,0,63,128,0,0,0,0,2,248,0,63,64,10,170,170,170,129,252,0,127,0,31,255,255,255,208,253,0,255,0,31,255,255,255,208,190,0,253,0,31,64,0,7,208,63,2,252,0,31,64,0,7,208,63,131,248,0,31,79,255,199,208,31,203,240,0,31,79,255,199,208,15,255,224,0,31,79,3,199,208,7,255,192,0,31,79,3,199,208,2,255,64,0,31,79,3,199,208,2,255,64,0,31,79,255,199,208,15,255,208,0,31,79,255,199,208,63,255,248,0,31,79,0,7,209,255,203,255,0,31,79,0,7,239,255,66,255,224,31,64,1,91,255,252,0,191,248,31,64,1,255,223,224,0,31,240,31,64,0,255,71,64,0,2,192,0,0,0,0,0,0,0,0,0, + // 0x6574 整 + 116,101,34,34,50,37,2,254,0,2,240,0,0,41,0,0,0,0,3,240,0,0,63,64,0,0,85,87,245,85,64,127,0,0,0,255,255,255,255,192,254,0,0,0,255,255,255,255,193,255,170,170,128,0,3,240,0,3,255,255,255,192,63,255,255,255,75,255,255,255,192,63,255,255,255,111,240,3,244,0,63,3,244,47,255,252,3,240,0,63,3,240,31,255,189,11,224,0,63,3,240,31,108,63,31,192,0,63,255,255,255,68,31,255,128,0,63,255,255,255,64,15,255,0,0,0,47,254,0,0,7,253,0,0,0,191,255,208,0,31,255,64,0,2,255,255,253,0,191,255,224,0,31,243,241,255,75,255,95,254,0,255,195,240,46,191,252,3,255,208,190,3,240,4,127,208,0,191,192,52,3,240,0,45,0,0,11,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,10,170,170,175,254,170,170,168,0,0,0,0,3,240,0,0,0,0,0,31,192,3,240,0,0,0,0,0,31,192,3,255,255,255,64,0,0,31,192,3,255,255,255,64,0,0,31,192,3,250,170,170,0,0,0,31,192,3,240,0,0,0,0,0,31,192,3,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x6599 料 + 153,101,35,35,59,37,1,253,0,6,160,0,0,0,3,240,0,0,7,224,0,0,0,3,240,0,4,7,224,16,0,0,3,240,0,62,7,224,126,3,192,3,240,0,47,7,224,189,15,244,3,240,0,31,7,224,252,7,254,3,240,0,15,135,224,248,0,255,131,240,0,15,199,225,244,0,47,195,240,0,11,199,226,240,0,11,131,240,0,11,199,227,224,0,2,3,240,0,7,215,227,208,0,0,3,240,0,2,71,226,192,0,0,3,240,0,0,11,240,0,20,0,3,240,0,63,255,255,253,62,0,3,240,0,63,255,255,253,191,208,3,240,0,63,255,255,253,47,248,3,240,0,0,47,240,0,7,254,3,240,0,0,63,248,0,0,188,3,240,0,0,127,253,0,0,40,3,240,0,0,255,255,0,0,0,3,240,0,1,255,255,192,0,0,3,240,80,2,251,235,224,0,0,7,255,244,3,231,227,248,0,22,255,255,248,11,215,225,252,107,255,255,255,244,31,199,224,246,255,255,255,244,0,63,135,224,97,255,254,151,240,0,191,7,224,0,249,64,3,240,0,190,7,224,0,0,0,3,240,0,60,7,224,0,0,0,3,240,0,36,7,224,0,0,0,3,240,0,0,7,224,0,0,0,3,240,0,0,7,224,0,0,0,3,240,0,0,7,224,0,0,0,3,240,0,0,7,224,0,0,0,3,240,0,0,7,224,0,0,0,3,240,0, + // 0x659c 斜 + 156,101,35,35,59,37,1,253,0,1,254,0,0,0,0,252,0,0,3,255,128,0,0,0,252,0,0,7,255,224,0,0,0,252,0,0,15,255,252,0,60,0,252,0,0,31,211,255,0,255,0,252,0,0,63,192,255,192,127,192,252,0,0,255,0,63,224,31,240,252,0,2,253,0,31,244,7,253,252,0,11,248,0,7,224,1,253,252,0,47,240,0,2,128,0,160,252,0,191,255,255,255,0,0,0,252,0,255,255,255,255,0,0,0,252,0,61,255,255,255,0,208,0,252,0,0,0,190,0,3,248,0,252,0,0,0,190,0,3,255,0,252,0,0,0,190,0,0,255,192,252,0,0,0,190,0,0,47,240,252,0,63,255,255,255,240,11,244,252,0,63,255,255,255,240,2,208,252,0,63,255,255,255,240,0,0,252,0,0,0,190,0,0,0,0,252,16,0,0,190,0,0,0,1,255,244,2,224,190,47,0,1,111,255,248,3,240,190,47,65,191,255,255,248,7,240,190,31,207,255,255,253,0,11,224,190,15,219,255,229,252,0,15,192,190,7,247,228,0,252,0,31,192,190,3,240,0,0,252,0,63,64,190,2,244,0,0,252,0,191,0,190,1,244,0,0,252,0,61,0,190,0,0,0,0,252,0,4,0,190,0,0,0,0,252,0,0,127,253,0,0,0,0,252,0,0,63,252,0,0,0,0,252,0,0,47,224,0,0,0,0,252,0, + // 0x65ad 断 + 173,101,33,36,68,37,3,252,0,0,41,0,0,0,0,0,0,168,0,126,0,0,0,1,244,0,252,0,126,0,0,0,111,253,0,252,180,126,31,72,31,255,254,0,252,184,126,47,15,255,255,144,0,252,124,126,63,15,255,228,0,0,252,61,126,61,15,228,0,0,0,252,62,126,124,15,192,0,0,0,252,62,126,184,15,192,0,0,0,252,45,126,176,15,192,0,0,0,252,0,126,0,15,192,0,0,0,252,255,255,255,79,192,0,0,0,253,255,255,255,79,192,0,0,0,253,255,255,255,79,255,255,255,128,252,0,254,0,15,255,255,255,128,252,1,255,0,15,255,255,255,128,252,3,255,192,15,192,31,192,0,252,7,255,240,31,192,31,192,0,252,15,255,252,31,192,31,192,0,252,47,254,191,31,192,31,192,0,252,127,126,63,31,192,31,192,0,252,253,126,12,31,192,31,192,0,255,248,126,0,47,128,31,192,0,253,240,126,0,63,64,31,192,0,252,192,126,0,63,64,31,192,0,252,0,126,0,63,0,31,192,0,252,0,126,0,127,0,31,192,0,252,0,0,0,254,0,31,192,0,255,255,255,255,253,0,31,192,0,255,255,255,255,252,0,31,192,0,255,255,255,255,248,0,31,192,0,252,0,0,15,240,0,31,192,0,252,0,0,47,208,0,31,192,0,168,0,0,15,192,0,31,192,0,0,0,0,3,0,0,31,192,0,0,0,0,0,0,0,0,0,0, + // 0x65b0 新 + 176,101,35,36,68,37,1,252,0,0,168,0,0,0,0,1,0,0,0,252,0,0,0,0,111,64,0,0,252,0,0,0,27,255,208,0,0,252,0,2,70,255,255,208,47,255,255,255,227,255,255,244,0,47,255,255,255,227,255,249,0,0,47,255,255,255,227,249,0,0,0,1,244,0,189,3,244,0,0,0,1,248,0,253,3,244,0,0,0,0,252,1,252,3,244,0,0,0,0,189,2,244,3,244,0,0,0,0,125,2,240,3,244,0,0,0,63,255,255,255,243,248,0,0,0,63,255,255,255,243,255,255,255,244,63,255,255,255,243,255,255,255,244,0,0,252,0,3,255,255,255,244,0,0,252,0,3,244,2,248,0,0,0,252,0,3,244,2,248,0,0,0,252,0,3,244,2,248,0,63,255,255,255,227,244,2,248,0,63,255,255,255,227,244,2,248,0,63,255,255,255,227,240,2,248,0,0,3,252,0,3,240,2,248,0,0,15,255,64,7,240,2,248,0,0,47,255,224,11,224,2,248,0,0,127,255,248,15,224,2,248,0,0,254,253,255,15,208,2,248,0,3,248,252,127,95,192,2,248,0,31,240,252,30,63,128,2,248,0,127,192,252,4,127,64,2,248,0,127,64,252,0,255,0,2,248,0,29,0,252,2,253,0,2,248,0,0,0,252,7,248,0,2,248,0,0,0,252,2,240,0,2,248,0,0,0,252,0,128,0,2,164,0,0,0,0,0,0,0,0,0,0, + // 0x65b9 方 + 185,101,33,36,68,37,2,252,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,85,85,85,91,245,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,3,252,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,11,255,255,255,255,128,0,0,0,15,255,255,255,255,128,0,0,0,15,255,255,255,255,128,0,0,0,15,224,0,0,63,64,0,0,0,31,208,0,0,63,64,0,0,0,63,192,0,0,63,64,0,0,0,63,192,0,0,127,0,0,0,0,191,64,0,0,127,0,0,0,0,255,0,0,0,127,0,0,0,2,254,0,0,0,191,0,0,0,7,252,0,0,0,191,0,0,0,15,248,0,0,0,254,0,0,0,63,240,0,0,0,254,0,0,0,255,208,0,0,1,253,0,0,3,255,64,0,0,2,252,0,0,47,253,0,1,64,7,252,0,0,255,244,0,2,255,255,244,0,0,127,192,0,1,255,255,240,0,0,45,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x65e0 无 + 224,101,34,32,32,37,2,253,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,31,208,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,47,192,0,0,0,0,0,0,0,63,149,0,0,0,0,0,0,0,63,191,64,0,0,0,0,0,0,191,127,64,0,0,0,0,0,0,255,63,64,0,0,0,0,0,1,254,63,64,0,0,0,0,0,3,252,63,64,0,0,0,0,0,7,248,63,64,0,0,0,0,0,15,240,63,64,0,4,0,0,0,63,208,63,64,0,11,128,0,0,255,192,63,64,0,15,224,0,7,255,0,63,64,0,15,208,0,63,252,0,63,64,0,15,208,2,255,240,0,63,128,0,47,192,127,255,128,0,63,255,255,255,192,255,252,0,0,47,255,255,255,64,63,208,0,0,11,255,255,254,0,40,0,0,0,0,85,85,80,0, + // 0x65f6 时 + 246,101,33,35,59,37,3,253,0,0,0,0,0,0,42,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,255,255,255,0,0,0,63,64,0,255,255,255,0,0,0,63,64,0,255,255,255,0,0,0,63,64,0,253,0,127,0,0,0,63,64,0,252,0,127,5,85,85,127,149,0,252,0,127,47,255,255,255,255,128,252,0,127,47,255,255,255,255,128,252,0,127,47,255,255,255,255,128,252,0,127,0,0,0,63,64,0,252,0,127,0,0,0,63,64,0,252,0,127,0,0,0,63,64,0,255,255,255,1,224,0,63,64,0,255,255,255,7,244,0,63,64,0,255,255,255,3,252,0,63,64,0,252,0,127,1,254,0,63,64,0,252,0,127,0,191,64,63,64,0,252,0,127,0,63,192,63,64,0,252,0,127,0,31,224,63,64,0,252,0,127,0,15,240,63,64,0,252,0,127,0,3,244,63,64,0,252,0,127,0,2,192,63,64,0,252,0,127,0,0,0,63,64,0,255,255,255,0,0,0,63,64,0,255,255,255,0,0,0,63,64,0,255,255,255,0,0,0,63,64,0,252,0,0,0,0,0,63,64,0,252,0,0,0,0,0,63,64,0,252,0,0,0,0,0,127,64,0,0,0,0,0,15,255,255,0,0,0,0,0,0,11,255,255,0,0,0,0,0,0,7,255,248,0,0,0,0,0,0,1,85,0,0,0, + // 0x660e 明 + 14,102,32,34,16,37,3,252,255,255,255,66,255,255,255,253,255,255,255,66,255,255,255,253,255,255,255,66,255,255,255,253,253,0,63,66,248,0,0,253,252,0,63,66,248,0,0,253,252,0,63,66,248,0,0,253,252,0,63,66,248,0,0,253,252,0,63,66,248,0,0,253,252,0,63,66,252,0,0,253,252,0,63,66,255,255,255,253,255,255,255,66,255,255,255,253,255,255,255,66,255,255,255,253,255,255,255,66,248,0,0,253,252,0,63,66,248,0,0,253,252,0,63,66,248,0,0,253,252,0,63,67,248,0,0,253,252,0,63,67,248,0,0,253,252,0,63,67,248,0,0,253,252,0,63,67,255,255,255,253,253,0,63,67,255,255,255,253,255,255,255,71,255,255,255,253,255,255,255,75,240,0,0,253,255,255,255,79,224,0,0,253,252,0,0,15,208,0,0,253,252,0,0,47,192,0,0,253,252,0,0,63,128,0,0,253,84,0,0,191,64,0,0,253,0,0,0,255,0,0,0,253,0,0,3,253,0,0,0,253,0,0,15,248,0,5,86,253,0,0,63,240,0,11,255,252,0,0,47,192,0,7,255,248,0,0,11,0,0,3,255,144,0,0,0,0,0,0,0,0, + // 0x662f 是 + 47,102,35,34,50,37,1,253,0,42,170,170,170,170,170,144,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,63,64,0,0,0,11,240,0,0,63,64,0,0,0,11,240,0,0,63,149,85,85,85,95,240,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,63,64,0,0,0,11,240,0,0,63,64,0,0,0,11,240,0,0,63,170,170,170,170,175,240,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,0,0,0,0,254,0,0,0,0,0,2,148,0,254,0,0,0,0,0,3,248,0,254,0,0,0,0,0,7,244,0,254,0,0,0,0,0,11,240,0,255,255,255,253,0,0,15,240,0,255,255,255,253,0,0,31,244,0,255,255,255,253,0,0,47,252,0,254,0,0,0,0,0,63,255,0,254,0,0,0,0,0,255,191,128,254,0,0,0,0,2,254,47,244,254,0,0,0,0,7,252,15,255,254,0,0,0,0,31,244,2,255,255,255,255,255,244,127,224,0,127,255,255,255,255,240,47,64,0,1,191,255,255,255,224,9,0,0,0,0,0,0,0,0, + // 0x6682 暂 + 130,102,33,35,59,37,2,253,0,10,64,0,0,0,0,4,0,0,31,224,0,0,0,26,253,0,170,191,234,170,130,191,255,255,0,255,255,255,255,195,255,255,249,0,255,255,255,255,195,254,148,0,0,2,252,0,0,3,240,0,0,0,3,240,41,0,3,240,0,0,0,15,224,127,0,3,240,0,0,0,47,192,127,0,3,250,170,170,128,191,255,255,255,211,255,255,255,192,63,255,255,255,215,255,255,255,192,63,170,255,170,135,224,15,192,0,0,0,127,0,11,224,15,192,0,0,0,127,0,75,208,15,192,0,0,21,191,255,207,192,15,192,0,255,255,255,255,223,192,15,192,0,255,255,255,165,47,128,15,192,0,186,148,127,0,127,64,15,192,0,0,0,127,0,191,0,15,192,0,0,0,127,0,29,0,15,192,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,128,0,0,191,255,255,255,255,255,128,0,0,191,170,170,170,170,191,128,0,0,190,0,0,0,0,47,128,0,0,190,0,0,0,0,47,128,0,0,191,255,255,255,255,255,128,0,0,191,255,255,255,255,255,128,0,0,191,85,85,85,85,127,128,0,0,190,0,0,0,0,47,128,0,0,190,0,0,0,0,47,128,0,0,191,255,255,255,255,255,128,0,0,191,255,255,255,255,255,128,0,0,191,170,170,170,170,191,128,0,0,190,0,0,0,0,47,128,0, + // 0x66ab 暫 + 171,102,33,35,59,37,2,253,0,3,240,0,0,0,0,96,0,0,3,240,0,0,0,27,252,0,191,255,255,255,203,175,255,254,0,191,255,255,255,203,255,255,144,0,0,3,244,0,11,254,144,0,0,0,3,240,0,11,208,0,0,0,47,255,255,255,11,208,0,0,0,47,171,250,191,11,208,0,0,0,47,3,240,47,15,250,170,170,128,47,255,255,255,15,255,255,255,192,47,171,250,191,15,255,255,255,192,47,3,240,47,15,192,31,192,0,47,171,250,191,15,192,31,192,0,47,255,255,255,47,128,31,192,0,0,3,240,0,63,64,31,192,0,255,255,255,255,255,0,31,192,0,255,255,255,255,253,0,31,192,0,0,3,240,3,252,0,31,192,0,0,3,240,1,240,0,31,192,0,0,1,80,0,64,0,6,64,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,234,170,170,170,255,0,0,0,63,64,0,0,0,191,0,0,0,63,64,0,0,0,191,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,149,85,85,85,191,0,0,0,63,64,0,0,0,191,0,0,0,63,64,0,0,0,191,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,234,170,170,170,255,0,0,0,63,64,0,0,0,127,0,0, + // 0x66f4 更 + 244,102,34,33,41,37,2,253,127,255,255,255,255,255,255,255,128,127,255,255,255,255,255,255,255,128,127,255,255,255,255,255,255,255,128,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,252,0,3,248,0,3,240,0,0,252,0,3,248,0,3,240,0,0,252,0,3,248,0,3,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,254,170,171,254,170,171,240,0,0,252,0,3,248,0,3,240,0,0,252,0,3,248,0,3,240,0,0,252,0,3,248,0,3,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,11,0,15,240,0,0,0,0,0,63,192,31,208,0,0,0,0,0,31,240,63,192,0,0,0,0,0,11,253,191,128,0,0,0,0,0,2,255,255,0,0,0,0,0,0,0,191,253,0,0,0,0,0,0,1,255,255,228,0,0,0,0,0,111,255,255,255,249,84,0,0,175,255,253,31,255,255,255,255,224,191,255,144,0,191,255,255,255,192,63,244,0,0,0,107,255,255,128,9,0,0,0,0,0,0,21,0, + // 0x6700 最 + 0,103,33,34,50,37,2,253,0,127,255,255,255,255,255,128,0,0,127,255,255,255,255,255,128,0,0,127,85,85,85,85,127,128,0,0,127,0,0,0,0,63,128,0,0,127,0,0,0,0,63,128,0,0,127,255,255,255,255,255,128,0,0,127,255,255,255,255,255,128,0,0,127,0,0,0,0,63,128,0,0,127,0,0,0,0,63,128,0,0,127,255,255,255,255,255,128,0,0,127,255,255,255,255,255,128,0,0,21,85,85,85,85,85,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,2,244,0,190,0,0,0,0,0,2,244,0,190,0,0,0,0,0,2,249,85,254,42,170,170,164,0,2,255,255,254,127,255,255,253,0,2,255,255,254,127,255,255,252,0,2,244,0,190,7,192,3,248,0,2,244,0,190,11,224,7,240,0,2,255,255,254,3,244,15,224,0,2,255,255,254,2,252,63,192,0,2,249,85,254,0,255,191,64,0,2,244,0,190,0,63,254,0,0,2,244,0,254,0,47,252,0,0,3,255,255,254,0,63,253,0,0,255,255,255,254,2,255,255,192,0,255,255,255,254,111,253,127,253,0,254,148,0,191,255,224,11,255,192,0,0,0,190,127,64,1,191,64,0,0,0,189,32,0,0,6,0, + // 0x6709 有 + 9,103,33,36,68,37,2,252,0,0,0,228,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,63,128,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,255,255,255,255,255,64,0,0,15,255,255,255,255,255,64,0,0,63,255,255,255,255,255,64,0,0,255,248,0,0,0,63,64,0,2,255,248,0,0,0,63,64,0,11,255,248,0,0,0,63,64,0,63,243,255,255,255,255,255,64,0,255,211,255,255,255,255,255,64,0,255,67,255,255,255,255,255,64,0,60,3,248,0,0,0,63,64,0,16,3,248,0,0,0,63,64,0,0,3,248,0,0,0,63,64,0,0,3,248,0,0,0,63,64,0,0,3,255,255,255,255,255,64,0,0,3,255,255,255,255,255,64,0,0,3,255,255,255,255,255,64,0,0,3,248,0,0,0,63,64,0,0,3,248,0,0,0,63,64,0,0,3,248,0,0,0,63,64,0,0,3,248,0,0,80,127,64,0,0,3,248,0,1,255,255,64,0,0,3,248,0,0,255,255,0,0,0,3,248,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0, + // 0x671f 期 + 31,103,34,35,59,37,1,252,0,252,0,63,0,0,0,0,0,0,252,0,63,0,255,255,255,208,0,252,0,63,0,255,255,255,208,0,252,0,63,0,255,255,255,208,63,255,255,255,248,253,0,15,208,63,255,255,255,248,253,0,15,208,63,255,255,255,248,253,0,15,208,0,252,0,63,0,253,0,15,208,0,252,0,63,0,253,0,15,208,0,252,0,63,0,255,255,255,208,0,255,255,255,0,255,255,255,208,0,255,255,255,0,255,255,255,208,0,254,170,255,0,253,0,15,208,0,252,0,63,0,253,0,15,208,0,252,0,63,0,253,0,15,208,0,252,0,63,0,253,0,15,208,0,255,255,255,0,253,0,15,208,0,255,255,255,0,253,0,15,208,0,254,170,255,0,255,255,255,208,0,252,0,63,0,255,255,255,208,0,252,0,63,0,255,255,255,208,0,252,0,63,0,252,0,15,208,127,255,255,255,248,252,0,15,208,127,255,255,255,249,252,0,15,208,127,255,255,255,250,252,0,15,208,0,0,0,0,3,248,0,15,208,0,63,65,240,3,244,0,15,208,0,191,3,252,3,240,0,15,208,1,253,0,254,11,240,0,15,208,7,252,0,127,79,224,0,15,208,15,240,0,47,223,208,0,31,208,63,208,0,15,127,192,47,255,192,47,128,0,4,31,128,15,255,128,6,0,0,0,3,0,15,253,0,0,0,0,0,0,0,0,0,0, + // 0x673a 机 + 58,103,35,35,59,37,1,253,0,3,240,0,0,0,0,0,0,0,3,240,0,0,0,0,0,0,0,3,240,0,63,255,255,240,0,0,3,240,0,63,255,255,240,0,0,3,240,0,63,255,255,240,0,0,3,240,0,63,149,91,240,0,0,3,240,0,63,128,7,240,0,0,3,240,0,63,128,7,240,0,63,255,255,252,63,128,7,240,0,63,255,255,252,63,128,7,240,0,63,255,255,252,63,128,7,240,0,21,95,245,84,63,128,7,240,0,0,15,240,0,63,128,7,240,0,0,31,240,0,63,128,7,240,0,0,47,244,0,63,128,7,240,0,0,63,253,0,63,128,7,240,0,0,127,255,64,63,128,7,240,0,0,255,255,192,63,64,7,240,0,0,251,251,240,63,64,7,240,0,2,247,243,252,63,64,7,240,0,7,227,240,253,63,0,7,240,0,15,211,240,184,127,0,7,240,0,31,195,240,48,127,0,7,240,0,63,67,240,0,190,0,7,240,0,191,3,240,0,254,0,7,240,0,125,3,240,0,253,0,7,240,120,60,3,240,2,252,0,7,240,124,16,3,240,3,248,0,7,240,124,0,3,240,7,244,0,7,240,124,0,3,240,15,240,0,7,240,188,0,3,240,47,208,0,7,240,252,0,3,240,127,192,0,7,255,252,0,3,240,191,0,0,3,255,244,0,3,240,45,0,0,1,255,224,0,2,160,4,0,0,0,0,0, + // 0x6740 杀 + 64,103,33,35,59,37,2,253,0,0,0,0,0,0,56,0,0,0,52,0,0,0,1,255,0,0,0,255,128,0,0,11,255,0,0,1,255,253,0,0,63,248,0,0,0,31,255,208,2,255,208,0,0,0,1,191,254,31,254,0,0,0,0,0,11,255,255,244,0,0,0,0,0,0,191,255,192,0,0,0,0,0,1,255,255,244,0,0,0,0,0,47,255,255,255,64,0,0,0,6,255,253,7,255,244,0,0,1,191,255,144,0,127,255,0,0,47,255,248,0,0,11,255,224,0,63,255,128,0,0,0,191,224,0,31,228,0,3,244,0,15,192,0,5,0,0,3,244,0,1,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,7,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,3,208,3,244,1,208,0,0,0,11,244,3,244,11,248,0,0,0,47,224,3,244,3,254,0,0,0,127,192,3,244,0,255,128,0,1,255,0,3,244,0,63,224,0,11,253,0,3,244,0,15,248,0,47,244,0,3,244,0,3,254,0,255,208,0,3,244,0,0,255,64,191,64,5,91,244,0,0,127,64,45,0,11,255,244,0,0,40,0,0,0,7,255,240,0,0,0,0,0,0,3,254,64,0,0,0,0, + // 0x675f 束 + 95,103,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,244,0,0,0,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,244,0,0,0,0,2,255,255,255,255,255,255,240,0,2,255,255,255,255,255,255,240,0,2,255,255,255,255,255,255,240,0,2,248,0,7,240,0,11,240,0,2,248,0,7,240,0,11,240,0,2,248,0,7,240,0,11,240,0,2,248,0,7,240,0,11,240,0,2,248,0,7,240,0,11,240,0,2,255,255,255,255,255,255,240,0,2,255,255,255,255,255,255,240,0,2,255,255,255,255,255,255,240,0,0,0,0,191,255,128,0,0,0,0,0,2,255,255,224,0,0,0,0,0,11,255,255,248,0,0,0,0,0,63,247,247,255,0,0,0,0,1,255,199,240,255,208,0,0,0,11,255,7,240,47,248,0,0,0,191,248,7,240,11,255,128,0,7,255,208,7,240,1,255,248,0,191,254,0,7,240,0,63,255,128,255,244,0,7,240,0,7,255,192,63,128,0,7,240,0,0,191,0,24,0,0,7,240,0,0,9,0,0,0,0,7,240,0,0,0,0, + // 0x6761 条 + 97,103,34,35,59,37,2,253,0,0,2,248,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,63,255,255,255,224,0,0,0,0,255,255,255,255,252,0,0,0,7,255,255,255,255,244,0,0,0,31,254,0,0,47,224,0,0,0,191,255,64,0,191,192,0,0,11,255,191,208,1,255,0,0,0,63,253,15,248,11,253,0,0,0,31,224,3,255,127,240,0,0,0,7,64,0,255,255,192,0,0,0,0,0,0,63,255,64,0,0,0,0,0,1,255,255,248,0,0,0,0,0,111,255,255,255,208,0,0,0,27,255,253,11,255,255,228,0,111,255,255,208,0,127,255,255,192,127,255,248,2,160,2,255,255,64,63,254,64,7,240,0,6,255,0,30,64,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,0,0,2,255,255,224,0,0,0,0,0,11,255,255,248,0,0,0,0,0,63,231,242,255,0,0,0,0,1,255,135,240,191,224,0,0,0,15,254,7,240,47,253,0,0,0,191,244,7,240,7,255,208,0,27,255,192,7,240,0,255,254,0,255,253,0,7,240,0,31,255,208,191,224,0,7,240,0,2,255,64,62,0,0,7,240,0,0,31,0,0,0,0,7,240,0,0,0,0, + // 0x6765 来 + 101,103,35,35,59,37,1,253,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,1,85,85,86,254,85,85,85,0,3,255,255,255,255,255,255,255,64,3,255,255,255,255,255,255,255,64,3,255,255,255,255,255,255,255,64,0,0,64,1,253,0,5,0,0,0,11,208,1,253,0,15,224,0,0,15,240,1,253,0,31,224,0,0,7,244,1,253,0,63,192,0,0,3,252,1,253,0,127,64,0,0,1,253,1,253,0,255,0,0,0,0,255,1,253,1,253,0,0,0,0,189,1,253,2,248,0,0,21,85,101,86,254,85,117,85,80,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,0,0,0,63,255,240,0,0,0,0,0,0,255,255,252,0,0,0,0,0,2,254,254,254,0,0,0,0,0,11,249,253,191,128,0,0,0,0,47,225,253,47,224,0,0,0,0,255,193,253,15,252,0,0,0,3,255,1,253,3,255,0,0,0,47,252,1,253,0,255,208,0,0,255,240,1,253,0,63,252,0,11,255,128,1,253,0,11,255,128,127,253,0,1,253,0,1,255,244,63,240,0,1,253,0,0,63,240,15,64,0,1,253,0,0,7,192,0,0,0,1,253,0,0,0,64,0,0,0,1,253,0,0,0,0, + // 0x677f 板 + 127,103,35,36,68,37,1,252,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,1,255,255,255,255,240,0,15,208,1,255,255,255,255,240,0,15,208,1,255,255,255,255,240,0,15,208,1,252,0,0,0,0,0,15,208,1,252,0,0,0,0,0,15,208,1,252,0,0,0,0,63,255,255,241,252,0,0,0,0,63,255,255,241,252,0,0,0,0,63,255,255,241,252,0,0,0,0,0,31,224,1,252,0,0,0,0,0,47,208,1,255,255,255,255,208,0,63,208,1,255,255,255,255,208,0,63,240,1,255,255,255,255,192,0,127,248,1,255,240,0,47,192,0,255,253,1,255,240,0,63,128,0,255,255,1,254,248,0,63,64,1,255,255,194,253,252,0,127,0,3,255,223,226,248,253,0,254,0,7,223,211,242,248,191,0,253,0,15,207,210,227,248,63,66,252,0,31,143,208,195,244,63,199,244,0,63,79,208,3,240,15,223,240,0,191,15,208,7,240,11,255,208,0,189,15,208,11,240,3,255,192,0,60,15,208,15,224,2,255,64,0,16,15,208,15,208,2,255,64,0,0,15,208,47,192,15,255,208,0,0,15,208,63,128,63,255,248,0,0,15,208,191,65,255,199,255,0,0,15,208,255,15,255,1,255,224,0,15,210,252,47,248,0,127,244,0,15,208,184,15,208,0,11,224,0,11,208,32,2,0,0,1,192,0,0,0,0,0,0,0,0,0, + // 0x6797 林 + 151,103,35,35,59,37,1,253,0,2,248,0,0,1,252,0,0,0,2,248,0,0,1,252,0,0,0,2,248,0,0,1,252,0,0,0,2,248,0,0,1,252,0,0,0,2,248,0,0,1,252,0,0,0,2,248,0,0,1,252,0,0,0,2,248,0,0,1,252,0,0,0,2,248,0,0,1,252,0,0,63,255,255,254,63,255,255,255,224,63,255,255,254,63,255,255,255,224,63,255,255,254,63,255,255,255,224,5,91,253,84,5,87,255,85,64,0,11,252,0,0,11,255,0,0,0,15,255,0,0,15,255,128,0,0,31,255,192,0,31,255,192,0,0,47,255,240,0,47,255,192,0,0,63,255,248,0,63,255,224,0,0,127,249,254,0,191,255,240,0,0,254,248,255,64,254,254,244,0,1,250,248,63,2,249,253,252,0,3,242,248,29,3,245,252,253,0,11,242,248,4,15,241,252,127,0,15,210,248,0,31,209,252,63,128,63,194,248,0,63,193,252,47,192,191,66,248,0,255,1,252,15,240,127,2,248,3,254,1,252,11,248,60,2,248,7,252,1,252,3,244,20,2,248,2,240,1,252,2,192,0,2,248,0,208,1,252,0,64,0,2,248,0,0,1,252,0,0,0,2,248,0,0,1,252,0,0,0,2,248,0,0,1,252,0,0,0,2,248,0,0,1,252,0,0,0,2,248,0,0,1,252,0,0,0,2,248,0,0,1,252,0,0, + // 0x67f1 柱 + 241,103,35,36,68,37,1,252,0,7,240,0,0,52,0,0,0,0,7,240,0,0,254,0,0,0,0,7,240,0,1,255,192,0,0,0,7,240,0,0,127,244,0,0,0,7,240,0,0,15,253,0,0,0,7,240,0,0,2,255,0,0,0,7,240,0,0,0,191,0,0,0,7,240,0,0,0,125,0,0,63,255,255,253,255,255,255,255,240,63,255,255,253,255,255,255,255,240,63,255,255,253,255,255,255,255,240,21,95,245,80,0,3,248,0,0,0,15,240,0,0,3,248,0,0,0,31,240,0,0,3,248,0,0,0,47,240,0,0,3,248,0,0,0,63,252,0,0,3,248,0,0,0,127,254,0,0,3,248,0,0,0,191,255,64,0,3,248,0,0,0,255,255,208,0,3,248,0,0,2,251,251,240,191,255,255,255,224,3,247,243,252,191,255,255,255,224,11,215,240,252,191,255,255,255,224,15,199,240,176,0,3,248,0,0,47,135,240,16,0,3,248,0,0,127,7,240,0,0,3,248,0,0,190,7,240,0,0,3,248,0,0,60,7,240,0,0,3,248,0,0,40,7,240,0,0,3,248,0,0,0,7,240,0,0,3,248,0,0,0,7,240,0,0,3,248,0,0,0,7,240,0,0,3,248,0,0,0,7,240,31,255,255,255,255,248,0,7,240,31,255,255,255,255,248,0,7,240,31,255,255,255,255,248,0,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6821 校 + 33,104,35,36,68,37,1,252,0,15,208,0,0,15,224,0,0,0,15,208,0,0,15,224,0,0,0,15,208,0,0,15,224,0,0,0,15,208,0,0,15,224,0,0,0,15,208,0,0,15,224,0,0,0,15,208,0,0,15,224,0,0,0,15,208,15,255,255,255,255,240,0,15,208,15,255,255,255,255,240,63,255,255,234,170,170,170,170,160,63,255,255,224,0,0,0,64,0,63,255,255,224,15,128,7,224,0,0,31,208,0,47,192,7,248,0,0,47,208,0,63,128,2,253,0,0,63,208,0,255,0,0,255,64,0,63,240,2,253,0,0,63,192,0,127,248,7,248,0,0,31,224,0,255,253,31,241,0,6,91,240,0,255,255,47,239,192,11,243,244,2,255,239,139,15,192,15,225,128,3,239,223,192,11,224,31,208,0,7,223,215,240,7,240,47,192,0,15,207,211,208,3,252,127,128,0,31,143,209,128,1,253,255,0,0,63,79,208,0,0,255,253,0,0,191,15,208,0,0,63,252,0,0,125,15,208,0,0,47,244,0,0,60,15,208,0,0,47,248,0,0,16,15,208,0,0,191,254,0,0,0,15,208,0,3,255,255,192,0,0,15,208,0,31,252,127,244,0,0,15,208,0,255,240,31,254,0,0,15,208,27,255,128,3,255,224,0,15,208,127,253,0,0,255,244,0,15,208,63,208,0,0,31,208,0,15,208,13,0,0,0,2,128,0,0,0,0,0,0,0,0,0, + // 0x683c 格 + 60,104,35,35,59,37,1,253,0,15,208,0,0,228,0,0,0,0,15,208,0,1,253,0,0,0,0,15,208,0,2,252,0,0,0,0,15,208,0,7,244,0,0,0,0,15,208,0,15,255,255,253,0,0,15,208,0,31,255,255,255,0,0,15,208,0,63,255,255,253,0,0,15,208,0,255,64,2,252,0,63,255,255,242,255,192,3,248,0,63,255,255,251,255,208,11,240,0,63,255,255,255,251,240,31,208,0,0,31,224,127,195,252,63,128,0,0,31,224,31,1,254,255,0,0,0,63,244,5,0,127,253,0,0,0,63,252,0,0,47,248,0,0,0,127,255,0,0,127,252,0,0,0,191,255,128,2,255,255,128,0,0,255,223,208,15,254,191,244,0,1,255,215,240,191,244,31,255,64,3,255,211,219,255,192,3,255,248,7,223,209,255,254,0,0,127,244,15,207,208,191,255,255,255,255,224,31,143,208,62,255,255,255,255,64,63,79,208,0,255,255,255,254,0,191,15,208,0,252,0,0,190,0,125,15,208,0,252,0,0,190,0,56,15,208,0,252,0,0,190,0,16,15,208,0,252,0,0,190,0,0,15,208,0,252,0,0,190,0,0,15,208,0,252,0,0,190,0,0,15,208,0,255,255,255,254,0,0,15,208,0,255,255,255,254,0,0,15,208,0,255,255,255,254,0,0,15,208,0,252,0,0,190,0,0,10,144,0,168,0,0,105,0, + // 0x68af 梯 + 175,104,34,35,59,37,1,253,0,15,208,0,25,0,0,228,0,0,15,208,0,127,0,1,254,0,0,15,208,0,63,64,2,252,0,0,15,208,0,47,192,3,244,0,0,15,208,0,15,192,11,240,0,0,15,208,0,15,128,7,208,0,0,15,208,11,255,255,255,255,192,0,15,208,11,255,255,255,255,192,63,255,255,219,255,255,255,255,192,63,255,255,208,0,15,192,15,192,63,255,255,208,0,15,192,15,192,0,31,208,0,0,15,192,15,192,0,47,208,0,0,15,192,15,192,0,63,224,3,255,255,255,255,192,0,63,240,3,255,255,255,255,192,0,127,252,3,255,255,255,255,192,0,255,254,7,240,15,192,0,0,0,255,255,11,224,15,192,0,0,2,255,223,203,208,15,192,0,0,3,239,219,223,208,15,192,0,0,7,223,211,223,255,255,255,255,240,15,207,210,159,255,255,255,255,240,31,143,208,47,255,255,255,255,240,63,15,208,47,128,191,192,7,240,191,15,208,0,1,255,192,7,240,125,15,208,0,7,255,192,11,224,60,15,208,0,31,255,192,11,224,16,15,208,0,127,207,192,15,224,0,15,208,2,255,15,192,15,208,0,15,208,31,252,15,203,255,192,0,15,208,191,240,15,195,255,192,0,15,208,255,128,15,195,254,0,0,15,208,61,0,15,192,0,0,0,15,208,0,0,15,192,0,0,0,15,208,0,0,15,192,0,0, + // 0x68c0 检 + 192,104,35,35,59,37,1,253,0,47,64,0,0,46,0,0,0,0,47,128,0,0,63,64,0,0,0,47,128,0,0,255,64,0,0,0,47,128,0,1,255,192,0,0,0,47,128,0,3,255,240,0,0,0,47,128,0,15,247,252,0,0,0,47,128,0,63,193,255,0,0,63,255,255,0,191,64,127,192,0,63,255,255,3,254,0,31,244,0,63,255,255,15,252,0,7,254,0,0,63,128,63,240,0,2,255,192,0,63,129,255,192,0,0,191,244,0,127,199,254,191,255,255,223,244,0,191,227,248,191,255,255,195,240,0,255,244,208,191,255,255,192,144,1,255,252,0,0,0,0,0,0,2,255,254,0,0,0,0,0,0,3,255,191,0,0,45,0,30,0,7,255,159,79,128,62,0,63,64,11,239,142,15,192,63,0,63,0,15,175,132,15,192,47,0,126,0,47,111,128,7,208,47,64,252,0,63,47,128,3,240,31,64,252,0,190,47,128,3,240,15,130,244,0,60,47,128,2,240,15,195,240,0,40,47,128,1,244,15,199,208,0,0,47,128,1,244,4,15,192,0,0,47,128,0,64,0,31,128,0,0,47,128,0,0,0,63,0,0,0,47,128,0,0,0,126,0,0,0,47,128,255,255,255,255,255,224,0,47,128,255,255,255,255,255,224,0,47,128,255,255,255,255,255,224,0,47,128,0,0,0,0,0,0,0,31,64,0,0,0,0,0,0, + // 0x69fd 槽 + 253,105,35,36,68,37,1,252,0,31,192,0,3,240,63,0,0,0,31,192,0,3,240,63,0,0,0,31,192,0,3,240,63,0,0,0,31,192,191,255,255,255,255,248,0,31,192,191,255,255,255,255,248,0,31,192,106,171,250,255,170,164,0,31,192,0,3,240,63,0,0,0,31,192,0,3,240,63,0,0,63,255,255,159,255,255,255,255,208,63,255,255,159,255,255,255,255,208,63,255,255,159,150,245,126,91,208,0,63,192,31,66,240,61,7,208,0,63,192,31,130,240,126,11,208,0,63,192,31,255,255,255,255,208,0,127,208,31,255,255,255,255,208,0,255,240,31,66,240,61,7,208,0,255,248,31,66,240,61,7,208,1,255,252,31,150,245,126,91,208,3,255,255,31,255,255,255,255,208,3,255,223,95,255,255,255,255,208,11,223,207,192,0,0,0,0,0,15,159,199,2,170,170,170,170,0,31,95,193,3,255,255,255,255,0,63,31,192,3,255,255,255,255,0,190,31,192,3,244,0,0,127,0,188,31,192,3,244,0,0,127,0,60,31,192,3,249,85,85,191,0,32,31,192,3,255,255,255,255,0,0,31,192,3,255,255,255,255,0,0,31,192,3,244,0,0,127,0,0,31,192,3,244,0,0,127,0,0,31,192,3,250,170,170,191,0,0,31,192,3,255,255,255,255,0,0,31,192,3,255,255,255,255,0,0,31,192,3,244,0,0,127,0,0,0,0,0,0,0,0,0,0, + // 0x6a21 模 + 33,106,35,35,59,37,1,253,0,47,64,0,31,128,15,192,0,0,47,64,0,31,128,15,192,0,0,47,64,0,31,128,15,192,0,0,47,64,127,255,255,255,255,240,0,47,64,127,255,255,255,255,240,0,47,64,127,255,255,255,255,224,0,47,64,0,31,128,15,192,0,63,255,255,0,31,128,15,192,0,63,255,255,0,5,64,5,64,0,63,255,255,15,255,255,255,255,0,0,63,149,15,255,255,255,255,0,0,63,128,15,234,170,170,191,0,0,63,192,15,192,0,0,127,0,0,127,208,15,192,0,0,127,0,0,191,240,15,255,255,255,255,0,0,255,248,15,255,255,255,255,0,1,255,253,15,213,85,85,191,0,2,255,191,15,192,0,0,127,0,3,255,111,143,229,85,85,191,0,7,255,79,143,255,255,255,255,0,15,255,74,15,255,255,255,255,0,31,175,64,0,0,63,64,0,0,63,47,64,0,0,63,64,0,0,127,47,64,0,0,63,0,0,0,190,47,64,255,255,255,255,255,240,60,47,64,255,255,255,255,255,240,40,47,64,255,255,255,255,255,240,0,47,64,0,3,255,252,0,0,0,47,64,0,11,248,254,0,0,0,47,64,0,47,240,127,192,0,0,47,64,1,255,192,47,248,0,0,47,64,111,255,0,11,255,144,0,47,67,255,248,0,1,255,244,0,47,65,255,128,0,0,47,224,0,47,64,164,0,0,0,2,192, + // 0x6a59 橙 + 89,106,35,35,59,37,1,253,0,15,192,0,0,0,20,0,0,0,15,192,10,170,208,252,20,0,0,15,192,31,255,244,252,125,0,0,15,192,31,255,240,191,254,0,0,15,192,0,7,240,63,244,0,0,15,192,4,11,224,63,192,128,0,15,192,47,79,192,31,194,240,0,15,192,63,255,128,15,219,244,63,255,255,203,255,64,11,255,192,63,255,255,194,255,0,3,253,0,63,255,255,193,255,255,255,253,0,0,47,208,7,255,255,255,255,64,0,47,192,15,246,170,170,63,224,0,63,192,127,192,0,0,15,252,0,127,225,255,64,0,0,3,240,0,191,244,254,170,170,170,169,144,0,255,252,34,255,255,255,253,0,0,255,255,2,255,255,255,253,0,2,255,239,130,248,0,0,253,0,3,255,207,210,248,0,0,253,0,7,223,199,194,248,0,0,253,0,15,207,195,66,248,0,0,253,0,31,143,192,2,255,255,255,253,0,63,15,192,2,255,255,255,253,0,191,15,192,1,170,170,171,169,0,189,15,192,0,26,0,7,224,0,60,15,192,0,63,0,11,240,0,16,15,192,0,47,128,15,208,0,0,15,192,0,31,192,31,192,0,0,15,192,0,15,192,47,64,0,0,15,192,0,15,64,47,0,0,0,15,192,255,255,255,255,255,248,0,15,192,255,255,255,255,255,248,0,15,192,255,255,255,255,255,244,0,15,192,0,0,0,0,0,0, + // 0x6b62 止 + 98,107,33,33,41,37,2,255,0,0,0,0,190,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,42,0,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,255,85,85,84,0,0,63,64,0,255,255,255,253,0,0,63,64,0,255,255,255,253,0,0,63,64,0,255,255,255,253,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,85,191,149,85,255,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x6b63 正 + 99,107,33,32,32,37,2,254,21,85,85,85,85,85,85,85,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,21,0,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,254,85,85,80,0,0,63,64,1,255,255,255,244,0,0,63,64,1,255,255,255,244,0,0,63,64,1,255,255,255,244,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,85,85,85,85,85,85,85,85,64, + // 0x6b65 步 + 101,107,33,35,59,37,2,253,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,5,0,3,244,0,0,0,0,0,47,192,3,244,0,0,0,0,0,47,192,3,255,255,255,192,0,0,47,192,3,255,255,255,192,0,0,47,192,3,255,255,255,192,0,0,47,192,3,249,85,85,64,0,0,47,192,3,244,0,0,0,0,0,47,192,3,244,0,0,0,0,0,47,192,3,244,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,21,85,85,87,245,85,85,85,0,0,2,64,3,244,0,0,0,0,0,7,248,3,244,0,4,0,0,0,15,240,3,244,0,47,128,0,0,63,224,3,244,0,63,192,0,0,255,128,3,244,0,127,128,0,3,255,0,3,244,0,255,0,0,31,252,0,3,244,2,254,0,0,191,240,0,3,244,7,252,0,0,63,192,15,255,240,15,244,0,0,14,0,7,255,240,63,240,0,0,0,0,3,255,128,255,192,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,127,252,0,0,0,0,0,0,2,255,240,0,0,0,0,0,0,191,255,128,0,0,0,0,0,111,255,248,0,0,0,0,2,191,255,255,144,0,0,0,0,2,255,255,248,0,0,0,0,0,0,255,249,0,0,0,0,0,0,0,185,0,0,0,0,0,0,0, + // 0x6bd4 比 + 212,107,34,35,59,37,2,253,0,106,0,0,6,144,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,124,0,0,191,0,0,15,224,3,255,0,0,191,85,85,15,224,47,255,64,0,191,255,254,15,226,255,248,0,0,191,255,254,15,255,255,128,0,0,191,255,254,15,255,248,0,0,0,191,0,0,15,255,128,0,0,0,191,0,0,15,244,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,7,128,0,191,0,0,15,224,0,11,240,0,191,0,27,143,224,0,11,224,0,191,27,255,143,224,0,11,224,0,255,255,255,207,240,0,15,208,175,255,255,254,75,240,0,31,192,255,255,254,64,7,255,255,255,192,255,254,64,0,3,255,255,255,64,190,64,0,0,1,255,255,254,0,0,0,0,0,0,5,85,64,0, + // 0x6ca1 没 + 161,108,34,34,50,37,2,253,7,208,0,0,0,0,0,0,0,15,252,0,15,255,255,252,0,0,15,255,128,15,255,255,252,0,0,1,255,240,15,255,255,252,0,0,0,31,224,31,192,0,252,0,0,0,3,192,31,192,0,252,0,0,0,0,0,31,192,0,252,0,0,0,0,0,47,192,0,252,3,64,0,0,0,63,128,0,252,7,224,0,0,0,127,64,0,252,7,224,121,0,0,255,0,0,253,11,208,255,208,3,254,0,0,255,255,208,255,248,31,252,0,0,191,255,192,31,255,31,240,0,0,47,254,0,1,253,7,192,0,0,0,0,0,0,60,2,0,0,0,0,64,0,0,0,3,255,255,255,255,244,0,0,0,3,255,255,255,255,244,0,0,0,3,255,255,255,255,240,0,0,1,0,11,192,0,31,224,0,0,7,128,31,208,0,63,192,0,0,15,224,11,240,0,191,128,0,0,31,208,3,252,1,255,0,0,0,63,192,2,255,7,253,0,0,0,127,64,0,191,159,248,0,0,0,255,0,0,63,255,224,0,0,2,253,0,0,15,255,128,0,0,3,252,0,0,47,255,128,0,0,11,244,0,2,255,255,248,0,0,31,240,0,111,255,175,255,144,0,63,208,111,255,253,2,255,255,144,63,128,191,255,208,0,127,255,208,11,0,63,248,0,0,6,255,128,0,0,41,0,0,0,0,27,0, + // 0x6ce2 波 + 226,108,34,36,68,37,1,252,0,64,0,0,0,63,0,0,0,2,248,0,0,0,63,0,0,0,7,255,64,0,0,63,0,0,0,1,255,240,0,0,63,0,0,0,0,47,248,0,0,63,0,0,0,0,3,240,255,255,255,255,255,224,0,0,128,255,255,255,255,255,240,0,0,0,255,255,255,255,255,224,0,0,0,254,0,127,64,31,208,0,0,0,253,0,63,0,31,192,4,0,0,253,0,63,0,63,128,31,64,0,253,0,63,0,63,64,63,240,0,253,0,63,0,127,0,127,254,0,253,0,63,0,9,0,11,255,128,253,0,63,0,0,0,0,191,64,255,255,255,255,253,0,0,30,0,255,255,255,255,254,0,0,0,0,255,255,255,255,253,0,0,0,0,253,252,0,1,252,0,0,0,0,252,190,0,3,252,0,0,0,0,252,63,0,7,244,0,0,3,129,252,47,192,15,240,0,0,11,225,252,15,208,31,208,0,0,15,209,252,11,240,63,192,0,0,47,194,248,3,252,255,64,0,0,63,131,244,1,255,254,0,0,0,191,3,244,0,191,252,0,0,0,254,7,240,0,63,244,0,0,2,253,11,224,0,255,253,0,0,3,252,15,208,7,255,255,192,0,11,244,47,192,127,252,191,248,0,15,240,63,139,255,224,31,255,208,31,208,191,47,255,64,2,255,240,7,192,190,15,244,0,0,47,208,0,0,8,3,64,0,0,2,128,0,0,0,0,0,0,0,0,0, + // 0x6ce8 注 + 232,108,35,35,59,37,1,253,0,80,0,0,13,0,0,0,0,1,253,0,0,63,208,0,0,0,3,255,208,0,191,248,0,0,0,0,191,248,0,31,255,64,0,0,0,15,253,0,2,255,224,0,0,0,1,248,0,0,63,248,0,0,0,0,32,0,0,11,244,0,0,0,0,0,0,0,2,208,0,0,0,0,0,255,255,255,255,255,224,0,0,0,255,255,255,255,255,224,9,0,0,255,255,255,255,255,224,47,208,0,85,85,127,149,85,64,127,253,0,0,0,63,64,0,0,31,255,192,0,0,63,64,0,0,1,255,192,0,0,63,64,0,0,0,47,64,0,0,63,64,0,0,0,6,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,63,255,255,255,255,64,0,0,64,63,255,255,255,255,64,0,0,244,63,255,255,255,255,64,0,1,252,5,85,127,149,85,0,0,3,252,0,0,63,64,0,0,0,7,244,0,0,63,64,0,0,0,15,240,0,0,63,64,0,0,0,47,208,0,0,63,64,0,0,0,63,192,0,0,63,64,0,0,0,191,64,0,0,63,64,0,0,1,255,0,0,0,63,64,0,0,3,252,1,85,85,127,149,85,80,11,248,7,255,255,255,255,255,248,15,240,7,255,255,255,255,255,248,2,208,7,255,255,255,255,255,248,0,64,0,0,0,0,0,0,0, + // 0x6d17 洗 + 23,109,34,35,59,37,2,253,1,0,0,4,0,253,0,0,0,11,192,0,31,192,253,0,0,0,31,248,0,31,192,253,0,0,0,11,255,0,47,192,253,0,0,0,1,255,192,63,128,253,0,0,0,0,47,192,127,64,253,0,0,0,0,11,0,191,255,255,255,255,0,0,0,0,255,255,255,255,255,0,0,0,1,255,255,255,255,255,0,0,0,2,253,1,254,0,0,0,16,0,3,248,0,253,0,0,0,125,0,11,240,0,253,0,0,0,255,192,31,240,0,253,0,0,0,191,248,11,192,0,253,0,0,0,31,254,1,128,0,253,0,0,0,2,253,5,85,85,254,85,85,64,0,120,31,255,255,255,255,255,208,0,0,31,255,255,255,255,255,208,0,0,31,255,255,255,255,255,208,0,0,0,1,252,3,244,0,0,0,4,0,2,252,3,244,0,0,0,15,0,2,252,3,244,0,0,0,47,192,2,248,3,244,0,0,0,63,64,3,248,3,244,0,0,0,191,0,3,244,3,244,0,0,0,254,0,11,240,3,244,0,0,2,252,0,15,240,3,244,3,128,3,248,0,31,208,3,244,3,240,11,240,0,63,192,3,244,3,240,15,224,1,255,64,3,244,3,240,47,192,11,254,0,3,248,7,224,127,128,191,248,0,2,255,255,208,47,64,191,224,0,1,255,255,192,6,0,63,64,0,0,191,255,0,0,0,4,0,0,0,0,0,0, + // 0x6d3b 活 + 59,109,34,35,59,37,2,253,0,0,0,0,0,0,1,144,0,7,208,0,0,0,1,111,248,0,15,252,0,0,6,191,255,253,0,11,255,128,175,255,255,255,228,0,1,255,240,255,255,255,228,0,0,0,47,208,191,254,254,0,0,0,0,3,128,20,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,56,0,15,255,255,255,255,255,208,191,128,15,255,255,255,255,255,208,255,248,15,255,255,255,255,255,208,31,255,5,85,85,254,85,85,64,2,254,0,0,0,190,0,0,0,0,60,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,2,0,127,255,255,255,252,0,0,11,192,127,255,255,255,252,0,0,15,224,127,255,255,255,252,0,0,47,192,126,0,0,0,252,0,0,63,128,126,0,0,0,252,0,0,191,0,126,0,0,0,252,0,0,254,0,126,0,0,0,252,0,3,252,0,126,0,0,0,252,0,7,248,0,126,0,0,0,252,0,15,240,0,126,0,0,0,252,0,47,208,0,127,255,255,255,252,0,127,192,0,127,255,255,255,252,0,63,64,0,127,255,255,255,252,0,10,0,0,126,0,0,0,252,0,0,0,0,126,0,0,0,168,0, + // 0x6d41 流 + 65,109,34,35,59,37,2,253,1,0,0,0,2,252,0,0,0,11,224,0,0,2,252,0,0,0,15,253,0,0,2,252,0,0,0,11,255,192,0,2,252,0,0,0,0,191,240,0,2,252,0,0,0,0,31,207,255,255,255,255,255,192,0,2,79,255,255,255,255,255,192,0,0,15,255,255,255,255,255,192,0,0,0,0,127,128,0,0,0,0,0,0,0,191,0,30,0,0,16,0,0,0,254,0,127,64,0,125,0,0,1,252,0,47,208,0,255,208,0,3,244,0,11,244,0,191,252,1,91,255,255,255,253,0,31,255,11,255,255,255,255,255,0,1,252,11,255,255,255,255,255,128,0,40,7,250,165,80,0,47,208,0,0,0,0,0,0,0,15,64,0,0,0,63,2,244,31,192,0,0,0,0,63,2,244,31,192,0,0,2,0,63,2,244,31,192,0,0,11,128,63,2,244,31,192,0,0,15,208,63,2,244,31,192,0,0,47,192,63,2,244,31,192,0,0,63,128,63,2,244,31,192,0,0,191,0,127,2,244,31,192,0,0,254,0,190,2,244,31,192,0,3,252,0,253,2,244,31,194,208,7,248,1,252,2,244,31,194,224,15,240,3,252,2,244,31,194,224,31,224,11,244,2,244,31,195,224,63,192,47,240,2,244,31,255,224,63,128,127,192,2,244,15,255,192,11,0,47,0,0,0,7,255,64,0,0,8,0,0,0,0,0,0, + // 0x6d4b 测 + 75,109,34,35,59,37,1,253,0,64,0,0,0,0,0,2,128,3,244,0,0,0,0,0,7,208,15,254,7,255,255,252,0,7,208,3,255,219,255,255,252,26,7,208,0,127,235,234,170,252,31,71,208,0,11,199,192,0,188,31,71,208,0,2,7,192,0,188,31,71,208,0,0,7,194,240,188,31,71,208,0,0,7,194,240,188,31,71,208,0,0,7,194,240,188,31,71,208,4,0,7,194,240,188,31,71,208,47,64,7,194,240,188,31,71,208,127,244,7,194,240,188,31,71,208,47,254,7,194,240,188,31,71,208,3,255,7,194,240,188,31,71,208,0,125,7,194,240,188,31,71,208,0,8,7,194,240,188,31,71,208,0,0,7,194,240,188,31,71,208,0,0,7,194,240,188,31,71,208,0,0,7,194,240,188,31,71,208,0,0,7,194,240,188,31,71,208,0,30,7,194,240,188,31,71,208,0,63,135,194,240,188,31,71,208,0,63,71,195,240,188,31,71,208,0,191,7,195,224,188,31,71,208,0,254,7,195,224,188,31,71,208,1,253,0,7,208,0,5,7,208,2,252,0,15,197,0,0,7,208,3,248,0,31,175,0,0,7,208,7,240,0,63,31,192,0,7,208,15,240,0,254,7,240,0,7,208,31,208,7,248,2,248,0,11,208,47,192,47,240,0,189,15,255,192,7,128,47,128,0,61,11,255,128,0,0,8,0,0,16,7,233,0, + // 0x6d88 消 + 136,109,33,36,68,37,2,252,1,0,0,0,0,253,0,0,0,11,128,0,32,0,253,0,40,0,31,248,2,248,0,253,0,63,64,15,255,2,252,0,253,0,191,0,1,255,208,255,0,253,0,254,0,0,63,192,127,64,253,2,252,0,0,11,64,63,192,253,3,248,0,0,1,0,31,208,253,11,240,0,0,0,0,15,128,253,11,208,0,0,0,0,4,0,253,0,64,0,16,0,0,0,0,254,0,0,0,125,0,0,255,255,255,255,252,0,255,192,0,255,255,255,255,252,0,191,244,0,255,255,255,255,252,0,15,254,0,253,0,0,0,252,0,2,254,0,253,0,0,0,252,0,0,188,0,253,0,0,0,252,0,0,20,0,253,0,0,0,252,0,0,0,0,255,255,255,255,252,0,0,0,0,255,255,255,255,252,0,0,0,0,255,255,255,255,252,0,0,11,0,253,0,0,0,252,0,0,15,192,253,0,0,0,252,0,0,47,192,253,0,0,0,252,0,0,63,64,255,255,255,255,252,0,0,191,0,255,255,255,255,252,0,0,254,0,255,255,255,255,252,0,2,252,0,253,0,0,0,252,0,3,248,0,253,0,0,0,252,0,11,240,0,253,0,0,0,252,0,31,224,0,253,0,0,0,252,0,63,208,0,253,0,0,1,252,0,127,192,0,253,0,3,255,252,0,31,64,0,253,0,2,255,248,0,2,0,0,253,0,1,255,208,0,0,0,0,0,0,0,0,0,0, + // 0x6de1 淡 + 225,109,35,34,50,37,1,253,0,0,0,0,0,127,0,0,0,1,224,0,0,0,127,0,0,0,7,254,0,6,64,127,0,36,0,3,255,208,15,192,127,0,63,128,0,127,248,31,192,191,0,191,0,0,11,244,63,128,190,1,253,0,0,1,208,127,0,254,3,252,0,0,0,0,254,0,253,7,240,0,0,0,1,252,1,254,15,208,0,0,0,0,36,3,255,209,64,0,4,0,0,0,7,255,252,0,0,31,64,0,0,31,251,255,128,0,127,244,0,0,191,208,191,244,0,47,254,0,7,255,128,31,255,0,2,255,193,255,253,0,2,255,192,0,127,2,255,224,106,0,63,192,0,13,0,254,0,127,0,11,0,0,0,0,0,0,191,0,0,0,0,0,0,9,0,191,0,25,0,0,1,0,31,192,190,0,63,192,0,3,128,47,128,254,0,127,128,0,11,240,63,64,255,0,255,0,0,15,224,191,0,255,66,253,0,0,47,192,254,1,255,131,248,0,0,63,195,252,3,255,207,240,0,0,191,66,244,3,255,246,192,0,0,255,0,16,15,247,248,0,0,2,253,0,0,47,226,254,0,0,7,252,0,0,255,192,255,128,0,15,244,0,27,255,0,63,244,0,31,240,6,255,252,0,15,255,144,15,208,31,255,224,0,2,255,244,2,128,11,254,0,0,0,127,224,0,0,3,144,0,0,0,1,128, + // 0x6df7 混 + 247,109,34,35,59,37,2,253,1,0,0,0,0,0,0,0,0,7,192,0,0,0,0,0,0,0,15,248,3,255,255,255,255,252,0,31,255,67,255,255,255,255,252,0,1,255,211,255,255,255,255,252,0,0,47,195,244,0,0,2,252,0,0,7,3,244,0,0,2,252,0,0,0,3,254,170,170,171,252,0,0,0,3,255,255,255,255,252,0,0,0,3,255,255,255,255,252,0,16,0,3,244,0,0,2,252,0,126,0,3,244,0,0,2,252,0,255,208,3,244,0,0,2,252,0,191,252,3,255,255,255,255,252,0,11,253,3,255,255,255,255,252,0,1,248,2,255,255,255,255,248,0,0,32,0,0,0,0,0,0,0,0,0,1,84,0,5,64,0,0,0,0,2,248,0,15,192,0,0,0,0,2,248,0,15,192,0,0,0,4,2,248,0,15,192,28,0,0,15,2,248,0,15,192,191,0,0,47,194,255,255,143,199,255,128,0,63,130,255,255,143,255,253,0,0,191,2,255,255,143,255,208,0,0,254,2,248,0,15,249,0,0,2,252,2,248,0,15,192,0,0,3,252,2,248,0,15,192,6,0,11,244,2,248,0,15,192,7,224,15,240,2,249,175,143,192,7,224,47,208,91,255,255,207,192,11,208,63,192,255,255,255,143,255,255,192,127,64,191,254,144,15,255,255,192,15,0,121,64,0,2,255,254,0,0,0,0,0,0,0,0,0,0, + // 0x6e05 清 + 5,110,34,36,68,37,2,252,2,0,0,0,1,252,0,0,0,15,224,0,0,1,252,0,0,0,31,254,1,85,86,253,85,85,0,7,255,195,255,255,255,255,255,64,0,191,211,255,255,255,255,255,64,0,31,192,0,1,252,0,0,0,0,3,64,0,1,252,0,0,0,0,0,1,255,255,255,255,253,0,0,0,1,255,255,255,255,253,0,0,0,0,85,86,253,85,84,0,16,0,0,0,1,252,0,0,0,125,0,10,170,170,254,170,170,144,255,224,31,255,255,255,255,255,224,191,253,31,255,255,255,255,255,224,11,255,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,40,0,63,255,255,255,248,0,0,0,0,63,255,255,255,248,0,0,0,0,63,170,170,171,248,0,0,0,0,63,0,0,2,248,0,0,1,0,63,0,0,2,248,0,0,11,128,63,255,255,255,248,0,0,15,208,63,255,255,255,248,0,0,47,192,63,85,85,86,248,0,0,63,128,63,0,0,2,248,0,0,191,0,63,85,85,86,248,0,0,254,0,63,255,255,255,248,0,2,252,0,63,255,255,255,248,0,7,248,0,63,0,0,2,248,0,15,240,0,63,0,0,2,248,0,31,224,0,63,0,0,2,248,0,63,192,0,63,0,0,2,248,0,63,128,0,63,0,3,255,248,0,15,0,0,63,0,2,255,244,0,1,0,0,63,0,1,255,144,0,0,0,0,0,0,0,0,0,0, + // 0x6e29 温 + 41,110,34,34,50,37,2,253,3,208,0,0,0,0,0,0,0,11,252,0,255,255,255,255,240,0,15,255,128,255,255,255,255,240,0,1,255,240,255,255,255,255,240,0,0,31,224,252,0,0,7,240,0,0,3,192,252,0,0,7,240,0,0,0,0,252,0,0,7,240,0,0,0,0,255,255,255,255,240,0,0,0,0,255,255,255,255,240,0,0,0,0,255,170,170,175,240,0,56,0,0,252,0,0,7,240,0,255,208,0,252,0,0,7,240,0,191,252,0,255,255,255,255,240,0,11,255,0,255,255,255,255,240,0,0,253,0,255,255,255,255,240,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,255,252,0,0,9,3,255,255,255,255,252,0,0,15,131,255,255,255,255,252,0,0,47,195,240,61,11,192,252,0,0,63,131,240,61,11,192,252,0,0,191,3,240,61,11,192,252,0,0,254,3,240,61,11,192,252,0,2,252,3,240,61,11,192,252,0,3,248,3,240,61,11,192,252,0,11,240,3,240,61,11,192,252,0,15,224,3,240,61,11,192,252,0,63,192,3,240,61,11,192,252,0,127,128,255,255,255,255,255,255,224,63,0,255,255,255,255,255,255,224,10,0,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x6e38 游 + 56,110,35,36,68,37,1,252,0,0,0,31,192,0,164,0,0,3,224,0,31,192,1,252,0,0,11,253,0,31,192,2,252,0,0,7,255,128,31,192,3,248,0,0,0,191,208,31,192,3,244,0,0,0,31,128,31,192,7,255,255,248,0,2,127,255,255,235,255,255,248,0,0,127,255,255,239,255,255,248,0,0,127,255,255,255,213,85,80,0,0,21,253,85,127,192,0,0,0,0,1,252,0,127,64,0,0,30,0,1,252,0,255,0,0,0,63,240,1,252,0,47,255,255,208,127,254,1,248,0,3,255,255,240,7,255,1,255,255,195,255,255,224,0,189,2,255,255,128,0,63,192,0,24,2,255,255,128,0,191,0,0,0,2,248,31,128,6,253,0,0,0,3,244,31,128,11,244,0,0,0,3,244,31,128,11,224,0,0,0,3,240,31,128,11,224,0,0,56,3,240,47,175,255,255,248,0,63,7,240,47,175,255,255,248,0,127,7,224,47,111,255,255,248,0,254,11,208,47,64,11,224,0,0,253,15,192,47,64,11,224,0,2,252,15,192,63,64,11,224,0,3,248,47,128,63,64,11,224,0,7,244,63,64,63,0,11,224,0,11,240,127,0,63,0,11,224,0,15,224,254,0,63,0,11,224,0,47,194,252,0,191,0,11,224,0,63,199,244,127,254,15,255,224,0,11,66,240,63,252,7,255,192,0,0,0,128,63,224,3,254,0,0,0,0,0,0,0,0,0,0,0, + // 0x6e90 源 + 144,110,34,35,59,37,2,253,1,0,0,0,0,0,0,0,0,11,208,0,0,0,0,0,0,0,31,252,11,255,255,255,255,255,192,11,255,75,255,255,255,255,255,192,1,255,203,255,255,255,255,255,192,0,47,75,240,0,31,224,0,0,0,10,11,240,0,31,208,0,0,0,0,11,240,0,47,192,0,0,0,0,11,240,0,47,128,0,0,0,0,11,241,255,255,255,255,0,16,0,11,241,255,255,255,255,0,125,0,11,241,254,170,170,191,0,255,208,11,241,248,0,0,127,0,191,252,11,241,248,0,0,127,0,11,252,11,225,255,255,255,255,0,0,244,11,225,255,255,255,255,0,0,16,11,225,253,85,85,191,0,0,0,11,225,248,0,0,127,0,0,0,15,225,248,0,0,127,0,0,0,15,209,254,170,170,191,0,0,16,15,209,255,255,255,255,0,0,61,15,193,255,255,255,255,0,0,127,15,192,0,15,192,0,0,0,254,31,192,0,15,192,16,0,1,253,47,192,184,15,193,248,0,2,252,63,128,253,15,194,252,0,3,248,63,66,252,15,192,254,0,11,240,127,3,244,15,192,191,64,15,240,255,11,240,15,192,63,192,31,208,253,31,208,15,192,31,208,63,194,252,63,128,15,192,15,224,127,67,248,63,0,15,192,11,144,191,11,240,5,15,255,192,0,0,30,7,224,0,15,255,128,0,0,0,0,128,0,7,249,0,0,0, + // 0x6ea2 溢 + 162,110,34,35,59,37,2,253,1,0,0,0,0,0,0,0,0,15,208,0,0,31,255,248,0,0,47,252,0,9,31,255,252,0,0,11,255,64,47,223,255,254,0,0,0,255,192,63,128,0,191,64,0,0,47,0,255,0,0,63,192,0,0,9,2,253,0,0,31,240,0,0,0,7,252,0,0,15,253,0,0,0,31,255,255,255,254,255,192,0,0,127,219,255,255,252,191,64,0,0,31,70,170,170,168,29,0,125,0,5,0,0,0,0,0,0,255,208,0,0,0,0,0,0,0,191,248,0,0,31,255,252,0,0,11,252,0,9,31,255,254,0,0,1,244,0,63,223,255,255,0,0,0,16,0,127,64,0,63,128,0,0,0,0,255,0,0,31,208,0,0,0,3,253,0,0,15,240,0,0,0,11,244,0,0,3,252,0,0,0,47,224,0,0,0,255,128,0,52,255,255,255,255,255,255,224,0,191,191,255,255,255,255,255,128,0,254,46,255,255,255,255,246,0,1,253,2,244,61,15,131,240,0,2,252,2,244,61,15,131,240,0,3,248,2,244,61,15,131,240,0,7,240,2,244,61,15,131,240,0,15,240,2,244,61,15,131,240,0,31,208,2,244,61,15,131,240,0,63,192,2,244,61,15,131,240,0,127,128,255,255,255,255,255,255,224,191,0,255,255,255,255,255,255,224,46,0,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x6ed1 滑 + 209,110,34,35,59,37,1,253,0,128,0,0,0,0,0,0,0,2,248,0,10,170,170,170,164,0,7,255,128,15,255,255,255,248,0,1,255,244,15,255,255,255,248,0,0,47,248,15,192,0,2,248,0,0,7,240,15,192,0,2,248,0,0,0,224,15,192,0,3,248,0,0,0,0,15,192,191,255,248,0,0,0,0,15,192,191,255,248,0,0,0,0,15,192,188,2,248,0,4,0,0,15,192,188,2,248,0,47,128,6,175,234,254,171,254,160,127,248,11,255,255,255,255,255,240,31,255,139,255,255,255,255,255,240,1,255,139,224,0,0,0,3,240,0,47,11,224,0,0,0,3,240,0,5,11,234,170,170,170,167,240,0,0,11,239,255,255,255,251,240,0,0,0,15,255,255,255,248,0,0,0,0,15,192,0,2,248,0,0,1,128,15,192,0,2,248,0,0,3,240,15,234,170,171,248,0,0,7,244,15,255,255,255,248,0,0,11,240,15,255,255,255,248,0,0,15,224,15,192,0,2,248,0,0,47,192,15,192,0,2,248,0,0,63,128,15,234,170,171,248,0,0,255,0,15,255,255,255,248,0,1,254,0,15,255,255,255,248,0,3,252,0,15,192,0,2,248,0,7,248,0,15,192,0,2,248,0,15,240,0,15,192,0,2,248,0,15,224,0,15,192,2,171,244,0,3,192,0,15,192,3,255,240,0,0,0,0,15,192,1,255,144,0, + // 0x6f0f 漏 + 15,111,34,35,59,37,1,253,1,64,0,0,0,0,0,0,0,3,240,3,255,255,255,255,255,128,15,254,3,255,255,255,255,255,192,2,255,211,255,255,255,255,255,192,0,127,211,240,0,0,0,31,192,0,15,131,240,0,0,0,31,192,0,2,3,240,0,0,0,31,192,0,0,3,255,255,255,255,255,192,0,0,3,255,255,255,255,255,192,0,0,3,255,255,255,255,255,192,4,0,3,240,0,0,0,0,0,31,64,3,240,0,0,0,0,0,63,224,3,240,0,0,0,0,0,127,253,3,255,255,255,255,255,240,11,255,131,255,255,255,255,255,240,0,255,3,250,170,175,234,170,160,0,29,3,240,0,15,192,0,0,0,0,7,240,0,15,192,0,0,0,0,7,255,255,255,255,255,208,0,0,7,255,255,255,255,255,208,0,0,11,255,234,175,234,175,208,0,45,11,239,128,15,192,7,208,0,63,75,223,141,15,206,7,208,0,127,15,223,175,143,223,199,208,0,191,15,207,139,239,199,247,208,0,253,31,207,129,207,192,199,208,1,252,47,143,128,15,192,7,208,3,252,63,79,140,15,205,7,208,7,244,63,15,191,79,239,135,208,11,240,127,15,143,223,203,231,208,15,224,254,15,131,223,193,199,208,47,193,252,15,128,79,192,7,208,63,195,248,15,128,15,193,91,208,15,65,244,15,128,15,193,255,192,1,0,32,15,128,11,192,255,64, + // 0x6fc0 激 + 192,111,34,36,68,37,2,252,0,0,0,46,64,2,228,0,0,15,128,0,63,192,2,248,0,0,47,244,0,63,64,3,244,0,0,31,254,0,127,0,3,240,0,0,3,255,127,255,255,131,240,0,0,0,127,63,255,255,135,240,0,0,0,28,63,85,111,139,224,0,0,0,0,63,0,31,143,255,255,224,0,0,63,85,111,143,255,255,224,0,0,63,255,255,159,255,255,224,0,0,63,255,255,175,192,127,0,125,0,63,0,31,191,192,126,0,255,128,63,0,31,255,192,190,0,255,244,63,85,111,255,192,189,0,31,252,63,255,255,255,208,253,0,2,244,63,255,255,255,208,252,0,0,96,0,63,64,247,224,252,0,0,0,0,63,64,114,241,252,0,0,0,0,63,64,1,242,248,0,0,1,255,255,255,241,247,244,0,0,1,255,255,255,240,251,240,0,0,53,255,255,255,224,255,240,0,0,190,2,244,0,0,127,224,0,0,254,2,244,0,0,63,208,0,1,252,2,255,255,64,63,192,0,3,252,3,255,255,64,63,128,0,3,244,3,255,255,64,127,192,0,11,240,7,240,63,64,255,240,0,15,224,11,224,63,2,255,244,0,31,208,15,192,63,7,246,252,0,63,192,63,128,63,31,240,255,0,127,64,191,0,127,127,192,127,192,191,2,253,47,255,255,64,47,224,46,7,248,31,253,253,0,11,192,0,1,208,10,144,48,0,2,0,0,0,0,0,0,0,0,0,0, + // 0x706f 灯 + 111,112,34,35,59,37,2,253,0,10,128,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,7,255,255,255,255,224,0,15,192,7,255,255,255,255,224,0,15,192,7,255,255,255,255,224,0,15,192,1,85,86,254,85,64,0,15,192,144,0,0,253,0,0,47,15,193,248,0,0,253,0,0,47,15,195,240,0,0,253,0,0,63,15,195,240,0,0,253,0,0,63,15,199,208,0,0,253,0,0,62,15,203,192,0,0,253,0,0,62,15,207,128,0,0,253,0,0,125,15,239,0,0,0,253,0,0,188,15,198,0,0,0,253,0,0,252,31,192,0,0,0,253,0,0,120,31,192,0,0,0,253,0,0,0,31,192,0,0,0,253,0,0,0,47,192,0,0,0,253,0,0,0,63,128,0,0,0,253,0,0,0,63,192,0,0,0,253,0,0,0,63,240,0,0,0,253,0,0,0,127,252,0,0,0,253,0,0,0,191,255,0,0,0,253,0,0,0,254,63,192,0,0,253,0,0,1,253,31,240,0,0,253,0,0,3,252,11,248,0,0,253,0,0,7,244,2,240,0,0,253,0,0,15,240,0,192,0,0,253,0,0,63,208,0,0,0,1,253,0,0,191,192,0,0,63,255,253,0,0,255,0,0,0,47,255,252,0,0,61,0,0,0,15,255,240,0,0,4,0,0,0,10,169,0,0,0, + // 0x70b9 点 + 185,112,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,255,255,255,254,0,0,0,0,7,255,255,255,254,0,0,0,0,7,255,255,255,254,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,253,0,0,0,0,47,192,0,0,253,0,0,0,0,47,192,0,0,253,0,0,0,0,47,192,0,0,253,0,0,0,0,47,192,0,0,253,0,0,0,0,47,192,0,0,253,0,0,0,0,47,192,0,0,253,0,0,0,0,47,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,0,0,1,64,11,192,0,1,253,11,224,15,208,15,224,0,3,252,7,240,11,240,11,244,0,11,244,7,240,3,244,3,252,0,15,240,3,240,3,248,0,254,0,63,208,3,244,1,252,0,191,64,191,128,3,244,0,253,0,63,192,255,0,3,248,0,254,0,47,128,24,0,2,80,0,64,0,4,0, + // 0x70ed 热 + 237,112,34,36,68,37,2,252,0,31,192,0,7,240,0,0,0,0,31,192,0,7,224,0,0,0,0,31,192,0,11,224,0,0,0,0,31,192,0,11,224,0,0,0,0,31,192,0,11,224,0,0,0,191,255,255,207,255,255,255,192,0,191,255,255,207,255,255,255,192,0,191,255,255,207,255,255,255,192,0,0,31,192,0,11,224,15,192,0,0,31,192,0,15,208,15,192,0,0,31,192,0,15,208,15,192,0,0,31,193,128,15,192,15,192,0,0,31,255,193,15,192,15,192,0,0,127,255,207,239,192,15,192,0,111,255,255,175,255,192,15,192,0,255,255,228,7,255,128,15,192,0,255,255,192,0,191,224,15,192,0,185,31,192,0,127,253,15,192,0,0,31,192,0,255,255,143,192,0,0,31,192,2,252,191,207,194,64,0,31,192,7,248,31,79,195,240,0,31,192,31,240,2,11,211,240,31,255,192,191,208,0,7,231,224,15,255,64,255,64,0,3,255,208,11,249,0,61,0,0,2,255,192,0,0,0,16,0,0,0,190,0,0,228,0,0,0,0,2,192,0,1,252,7,240,15,224,15,224,0,3,248,7,240,11,240,11,244,0,11,240,3,240,3,244,3,252,0,15,224,3,244,3,248,1,254,0,63,192,3,244,2,252,0,191,64,191,128,3,244,1,252,0,63,192,255,0,3,248,0,253,0,47,192,29,0,1,80,0,80,0,13,0,0,0,0,0,0,0,0,0,0, + // 0x7247 片 + 71,114,32,36,32,37,1,252,0,0,0,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,234,170,171,254,170,170,0,31,255,255,255,255,255,255,0,31,255,255,255,255,255,255,0,31,255,255,255,255,255,255,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,234,170,170,171,252,0,0,127,64,0,0,2,252,0,0,191,0,0,0,2,252,0,0,255,0,0,0,2,252,0,0,254,0,0,0,2,252,0,2,253,0,0,0,2,252,0,3,252,0,0,0,2,252,0,11,248,0,0,0,2,252,0,31,240,0,0,0,2,252,0,63,224,0,0,0,2,252,0,127,192,0,0,0,2,252,0,31,64,0,0,0,2,252,0,6,0,0,0,0,2,252,0,0,0,0,0,0,0,0,0, + // 0x7269 物 + 105,114,34,35,59,37,1,253,0,3,244,0,11,128,0,0,0,0,3,244,0,15,208,0,0,0,6,67,244,0,15,192,0,0,0,11,211,244,0,31,192,0,0,0,15,195,244,0,47,64,0,0,0,15,195,244,0,63,0,0,0,0,15,195,244,0,127,255,255,255,240,15,195,244,0,255,255,255,255,240,31,255,255,225,255,255,255,255,240,31,255,255,227,248,47,71,247,240,47,255,255,231,240,63,11,211,240,63,3,244,15,224,126,15,199,240,63,3,244,47,192,189,15,199,240,190,3,244,127,128,252,31,135,240,188,3,244,127,2,248,47,135,240,44,3,244,13,3,240,63,71,240,0,3,244,0,7,240,63,11,224,0,3,250,244,15,208,190,11,224,0,3,255,244,47,192,253,11,224,0,111,255,248,63,65,252,15,208,27,255,255,144,255,3,248,15,208,127,255,244,2,252,3,240,15,208,63,251,244,7,248,11,240,15,208,61,3,244,31,240,15,208,15,192,0,3,244,47,192,47,192,15,192,0,3,244,3,0,127,64,31,192,0,3,244,0,0,255,0,47,192,0,3,244,0,2,253,0,47,128,0,3,244,0,7,248,0,63,128,0,3,244,0,31,240,0,127,64,0,3,244,0,127,192,0,255,0,0,3,244,1,255,65,255,255,0,0,3,244,0,189,0,255,252,0,0,3,244,0,36,0,255,244,0,0,3,244,0,0,0,20,0,0, + // 0x7279 特 + 121,114,35,35,59,37,1,253,0,3,244,0,0,11,224,0,0,0,3,244,0,0,15,224,0,0,10,131,244,0,0,15,224,0,0,15,195,244,0,0,15,224,0,0,15,195,244,2,255,255,255,255,192,15,195,244,2,255,255,255,255,192,15,195,244,2,255,255,255,255,192,31,215,249,80,0,15,224,0,0,31,255,255,224,0,15,224,0,0,47,255,255,224,0,15,224,0,0,63,255,255,224,0,15,224,0,0,63,3,244,63,255,255,255,255,244,126,3,244,63,255,255,255,255,244,189,3,244,63,255,255,255,255,244,124,3,244,0,0,0,7,244,0,8,3,244,0,0,0,7,240,0,0,3,244,16,0,0,7,240,0,0,3,250,244,0,0,7,240,0,0,3,255,248,0,0,7,244,0,0,191,255,255,255,255,255,255,240,111,255,254,95,255,255,255,255,240,127,255,244,15,255,255,255,255,240,63,231,244,0,0,0,7,240,0,41,3,244,0,124,0,7,240,0,0,3,244,0,254,0,7,240,0,0,3,244,0,127,128,7,240,0,0,3,244,0,47,208,7,240,0,0,3,244,0,15,240,7,240,0,0,3,244,0,3,244,7,240,0,0,3,244,0,2,192,7,240,0,0,3,244,0,0,0,7,240,0,0,3,244,0,0,21,91,240,0,0,3,244,0,0,31,255,240,0,0,3,244,0,0,15,255,224,0,0,3,244,0,0,15,254,64,0, + // 0x7387 率 + 135,115,33,36,68,37,2,252,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,0,0,0,47,192,0,0,0,0,1,0,0,63,64,0,0,224,0,15,192,0,254,2,64,3,253,0,47,248,10,252,7,240,15,248,0,7,255,47,240,15,208,63,208,0,0,255,239,240,63,129,255,64,0,0,47,7,253,190,0,188,0,0,0,4,0,255,252,0,0,0,0,0,0,0,63,242,208,0,0,0,0,1,128,31,199,240,244,0,0,0,31,208,63,2,255,255,64,0,2,255,224,253,85,254,255,224,0,127,255,191,255,255,255,31,253,0,191,228,127,255,255,255,130,255,128,62,0,63,170,164,15,192,127,64,16,0,0,7,240,10,0,28,0,0,0,0,7,240,0,0,0,0,0,0,0,7,244,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x73af 环 + 175,115,34,32,32,37,1,253,127,255,255,47,255,255,255,255,240,127,255,255,47,255,255,255,255,240,127,255,255,47,255,255,255,255,240,0,127,0,0,0,15,240,0,0,0,127,0,0,0,31,224,0,0,0,127,0,0,0,47,192,0,0,0,127,0,0,0,63,128,0,0,0,127,0,0,0,191,64,0,0,0,127,0,0,1,255,64,0,0,0,127,0,0,3,255,173,0,0,63,255,252,0,7,255,255,64,0,63,255,252,0,15,255,191,192,0,63,255,252,0,63,255,95,240,0,0,127,0,0,191,255,75,248,0,0,127,0,1,255,63,67,253,0,0,127,0,3,253,63,64,255,0,0,127,0,15,248,63,64,127,192,0,127,0,127,240,63,64,47,224,0,127,0,191,192,63,64,15,240,0,127,0,47,0,63,64,7,128,0,127,0,13,0,63,64,1,0,0,127,110,0,0,63,64,0,0,0,127,255,0,0,63,64,0,0,6,255,255,0,0,63,64,0,0,127,255,228,0,0,63,64,0,0,127,253,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,36,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0, + // 0x7528 用 + 40,117,32,34,16,37,1,252,0,21,85,85,85,85,85,85,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,127,0,0,254,0,0,191,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,191,255,255,255,255,255,255,0,191,255,255,255,255,255,255,0,255,255,255,255,255,255,255,0,254,85,85,254,85,85,191,0,253,0,0,253,0,0,191,1,252,0,0,253,0,0,191,2,252,0,0,253,0,0,191,3,248,0,0,253,0,0,191,3,244,0,0,253,0,0,191,11,240,0,0,253,0,0,191,15,240,0,0,253,0,0,191,47,208,0,0,253,5,65,255,127,192,0,0,253,11,255,254,127,64,0,0,253,7,255,252,14,0,0,0,189,3,255,224,0,0,0,0,0,0,0,0, + // 0x7535 电 + 53,117,32,35,24,37,4,253,0,0,0,106,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,21,85,85,191,85,85,85,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,0,0,191,0,0,127,0,127,0,0,191,0,0,127,0,127,0,0,191,0,0,127,0,127,0,0,191,0,0,127,0,127,0,0,191,0,0,191,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,0,0,191,0,0,127,0,127,0,0,191,0,0,127,0,127,0,0,191,0,0,127,0,127,0,0,191,0,0,127,0,127,85,85,191,85,85,191,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,0,0,191,0,0,0,128,127,0,0,191,0,0,0,253,21,0,0,191,0,0,0,253,0,0,0,191,0,0,0,253,0,0,0,191,0,0,1,252,0,0,0,127,128,0,3,252,0,0,0,127,255,255,255,248,0,0,0,63,255,255,255,240,0,0,0,11,255,255,255,208,0,0,0,0,85,85,85,0, + // 0x7565 略 + 101,117,33,36,68,37,3,252,0,0,0,0,3,144,0,0,0,0,0,0,0,11,240,0,0,0,255,255,255,64,15,224,0,0,0,255,255,255,64,47,192,0,0,0,255,255,255,64,63,255,255,244,0,244,60,31,64,255,255,255,252,0,244,60,31,66,255,255,255,244,0,244,60,31,71,252,0,15,240,0,244,60,31,95,254,0,31,208,0,244,60,31,191,255,64,63,192,0,244,60,31,255,175,192,255,0,0,244,60,31,254,15,242,253,0,0,244,60,31,120,7,255,248,0,0,255,255,255,64,2,255,240,0,0,255,255,255,64,0,255,192,0,0,255,255,255,64,2,255,244,0,0,244,60,31,64,15,255,254,0,0,244,60,31,64,191,242,255,208,0,244,60,31,71,255,128,127,253,0,244,60,31,191,253,0,15,255,192,244,60,31,255,224,0,1,255,64,244,60,31,255,255,255,255,254,0,244,60,31,103,255,255,255,244,0,244,60,31,71,255,255,255,244,0,255,255,255,71,240,0,3,244,0,255,255,255,71,240,0,3,244,0,255,255,255,71,240,0,3,244,0,244,0,0,7,240,0,3,244,0,244,0,0,7,240,0,3,244,0,244,0,0,7,240,0,3,244,0,244,0,0,7,240,0,3,244,0,0,0,0,7,255,255,255,244,0,0,0,0,7,255,255,255,244,0,0,0,0,7,255,255,255,244,0,0,0,0,7,240,0,3,244,0,0,0,0,0,0,0,0,0,0, + // 0x767d 白 + 125,118,27,36,252,37,5,252,0,0,3,228,0,0,0,0,0,7,252,0,0,0,0,0,11,248,0,0,0,0,0,15,240,0,0,0,0,0,31,240,0,0,0,0,0,47,208,0,0,0,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,85,85,85,85,87,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252,254,85,85,85,85,87,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,85,85,85,85,87,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,0,0,0,0,0,0,0, + // 0x7684 的 + 132,118,32,35,24,37,3,253,0,30,128,0,7,144,0,0,0,47,192,0,11,240,0,0,0,63,128,0,15,224,0,0,0,63,64,0,15,208,0,0,0,127,0,0,31,192,0,0,0,190,0,0,63,192,0,0,255,255,255,208,63,255,255,253,255,255,255,208,191,255,255,253,255,255,255,208,255,255,255,253,253,0,15,209,253,0,0,253,253,0,15,211,248,0,0,253,253,0,15,219,240,0,0,252,253,0,15,239,224,0,0,252,253,0,15,239,192,0,0,252,253,0,15,210,66,0,0,252,253,0,15,208,31,128,0,252,255,255,255,208,31,208,0,252,255,255,255,208,11,240,0,252,255,255,255,208,3,252,0,252,253,0,15,208,1,254,1,252,253,0,15,208,0,191,1,252,253,0,15,208,0,63,193,252,253,0,15,208,0,47,194,248,253,0,15,208,0,15,66,248,253,0,15,208,0,4,2,248,253,0,15,208,0,0,3,248,253,0,15,208,0,0,3,244,253,0,15,208,0,0,3,244,255,255,255,208,0,0,7,240,255,255,255,208,0,0,11,240,255,255,255,208,0,0,31,224,253,0,0,0,2,255,255,208,253,0,0,0,0,255,255,192,253,0,0,0,0,255,254,0,0,0,0,0,0,0,0,0, + // 0x76d1 监 + 209,118,33,34,50,37,2,254,0,0,31,192,0,164,0,0,0,6,160,31,192,0,254,0,0,0,11,240,31,192,1,252,0,0,0,11,240,31,192,2,252,0,0,0,11,240,31,192,3,248,0,0,0,11,240,31,192,7,255,255,255,192,11,240,31,192,11,255,255,255,192,11,240,31,192,15,255,255,255,192,11,240,31,192,47,192,0,0,0,11,240,31,192,63,128,0,0,0,11,240,31,192,191,2,128,0,0,11,240,31,193,254,15,224,0,0,11,240,31,195,252,15,252,0,0,11,240,31,207,244,3,255,64,0,11,240,31,195,224,0,191,208,0,11,240,31,192,128,0,47,244,0,11,224,31,192,0,0,11,248,0,0,0,31,192,0,0,2,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,252,2,244,7,240,15,224,0,0,252,2,244,7,240,15,224,0,0,252,2,244,7,240,15,224,0,0,252,2,244,7,240,15,224,0,0,252,2,244,7,240,15,224,0,0,252,2,244,7,240,15,224,0,0,252,2,244,7,240,15,224,0,0,252,2,244,7,240,15,224,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x76f4 直 + 244,118,33,35,59,37,2,253,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,7,244,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,26,175,250,170,170,64,0,5,80,63,255,255,255,255,128,0,15,224,63,255,255,255,255,128,0,15,224,63,64,0,0,47,128,0,15,224,63,64,0,0,47,128,0,15,224,63,149,85,85,127,128,0,15,224,63,255,255,255,255,128,0,15,224,63,255,255,255,255,128,0,15,224,63,64,0,0,47,128,0,15,224,63,64,0,0,47,128,0,15,224,63,149,85,85,127,128,0,15,224,63,255,255,255,255,128,0,15,224,63,255,255,255,255,128,0,15,224,63,64,0,0,47,128,0,15,224,63,64,0,0,47,128,0,15,224,63,170,170,170,191,128,0,15,224,63,255,255,255,255,128,0,15,224,63,255,255,255,255,128,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0, + // 0x7701 省 + 1,119,34,35,59,37,1,253,0,0,0,0,252,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0,184,0,252,0,61,0,0,0,1,254,0,252,0,255,128,0,0,7,252,0,252,0,63,240,0,0,31,240,0,252,0,15,252,0,0,127,208,0,252,0,2,255,64,2,255,64,0,252,0,224,191,208,31,253,0,1,252,3,253,47,240,47,244,7,255,252,31,248,11,208,7,192,3,255,252,191,224,1,0,1,0,2,255,171,255,64,0,0,0,0,0,1,191,248,0,0,0,0,0,0,111,255,208,0,0,0,0,0,111,255,249,0,0,0,0,5,175,255,255,250,170,170,144,0,127,255,255,255,255,255,255,224,0,47,255,255,255,255,255,255,224,0,15,229,252,0,0,0,15,224,0,0,0,252,0,0,0,15,224,0,0,0,252,0,0,0,15,224,0,0,0,255,255,255,255,255,224,0,0,0,255,255,255,255,255,224,0,0,0,254,85,85,85,95,224,0,0,0,252,0,0,0,15,224,0,0,0,252,0,0,0,15,224,0,0,0,255,255,255,255,255,224,0,0,0,255,255,255,255,255,224,0,0,0,254,85,85,85,95,224,0,0,0,252,0,0,0,15,224,0,0,0,252,0,0,0,15,224,0,0,0,255,255,255,255,255,224,0,0,0,255,255,255,255,255,224,0,0,0,254,170,170,170,175,224,0,0,0,252,0,0,0,11,224,0, + // 0x7720 眠 + 32,119,34,33,41,37,2,253,127,255,253,11,255,255,255,255,64,127,255,253,11,255,255,255,255,64,127,255,253,11,255,255,255,255,64,127,0,189,11,224,0,0,63,64,127,0,189,11,224,0,0,63,64,127,0,189,11,224,0,0,63,64,127,0,189,11,224,0,0,63,64,127,0,189,11,240,0,0,63,64,127,255,253,11,255,255,255,255,64,127,255,253,11,255,255,255,255,64,127,255,253,11,255,255,255,255,64,127,0,189,11,224,7,240,0,0,127,0,189,11,224,3,240,0,0,127,0,189,11,224,3,240,0,0,127,0,189,11,224,3,240,0,0,127,0,189,11,240,7,244,0,0,127,255,253,11,255,255,255,255,208,127,255,253,11,255,255,255,255,208,127,255,253,11,255,255,255,255,208,127,0,189,11,224,2,248,0,0,127,0,189,11,224,1,252,0,0,127,0,189,11,224,1,252,0,0,127,0,189,11,224,0,252,0,0,127,0,189,11,224,0,253,0,0,127,255,253,11,224,0,190,0,0,127,255,253,11,224,0,127,1,208,127,255,253,11,224,0,63,2,240,127,0,0,11,224,107,127,130,240,127,0,0,11,255,255,95,195,240,63,0,2,255,255,255,79,247,240,0,0,2,255,255,249,7,255,208,0,0,1,255,228,0,2,255,192,0,0,0,144,0,0,0,127,0, + // 0x786e 确 + 110,120,33,36,68,37,1,252,0,0,0,0,1,228,0,0,0,0,0,0,0,2,252,0,0,0,63,255,255,248,3,244,0,0,0,63,255,255,248,11,255,255,64,0,63,255,255,248,15,255,255,224,0,0,63,128,0,31,255,255,208,0,0,63,64,0,63,128,63,192,0,0,63,0,0,191,0,63,64,0,0,127,0,1,254,0,191,0,0,0,190,0,3,252,1,252,0,0,0,253,0,15,255,255,255,255,192,0,252,0,31,255,255,255,255,192,1,252,0,11,255,255,255,255,192,2,255,255,225,252,3,240,15,192,3,255,255,224,252,3,240,15,192,3,255,255,224,252,3,240,15,192,11,248,7,224,255,171,250,175,192,15,248,7,224,255,255,255,255,192,31,248,7,224,255,255,255,255,192,63,248,7,224,252,3,240,15,192,127,248,7,224,252,3,240,15,192,255,248,7,224,252,3,240,15,192,127,248,7,224,252,3,240,15,192,45,248,7,224,255,255,255,255,192,5,248,7,225,255,255,255,255,192,1,248,7,225,255,255,255,255,192,1,248,7,226,248,0,0,15,192,1,255,255,227,244,0,0,15,192,1,255,255,231,240,0,0,15,192,1,255,255,235,240,0,0,15,192,1,248,0,15,224,0,0,15,192,1,248,0,47,192,0,0,31,192,1,248,0,127,128,0,31,255,192,0,0,0,63,0,0,15,255,192,0,0,0,8,0,0,15,254,0,0,0,0,0,0,0,0,0,0, + // 0x79bb 离 + 187,121,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,191,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,0,0,64,0,0,0,0,106,1,128,3,240,42,64,0,0,127,3,249,31,208,63,128,0,0,127,7,255,255,64,63,128,0,0,127,0,47,254,0,63,128,0,0,127,0,127,255,208,63,128,0,0,127,11,255,111,244,63,128,0,0,127,47,244,3,240,63,128,0,0,127,11,64,0,144,63,128,0,0,127,170,170,170,170,191,128,0,0,127,255,255,255,255,255,128,0,0,127,255,255,255,255,255,128,0,0,0,0,47,208,0,0,0,0,0,0,0,63,192,0,0,0,0,11,255,255,255,255,255,255,248,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,11,240,0,254,0,176,3,252,0,11,240,0,253,2,248,3,252,0,11,240,1,252,0,253,3,252,0,11,240,2,248,21,191,3,252,0,11,243,255,255,255,255,131,252,0,11,243,255,255,255,255,211,252,0,11,243,255,234,148,7,227,252,0,11,240,0,0,0,3,67,252,0,11,240,0,0,0,0,3,252,0,11,240,0,0,0,7,255,248,0,11,240,0,0,0,3,255,244,0,11,240,0,0,0,1,255,144,0, + // 0x79fb 移 + 251,121,34,35,59,37,1,253,0,0,1,0,0,15,144,0,0,0,0,111,192,0,47,192,0,0,0,111,255,240,0,127,128,0,0,63,255,255,208,1,255,255,254,0,63,255,244,0,7,255,255,255,128,47,155,240,0,47,255,255,255,0,0,7,240,0,191,192,0,254,0,0,7,240,7,255,192,2,252,0,0,7,240,47,255,240,7,248,0,0,7,240,15,231,253,31,240,0,0,11,240,3,0,255,191,192,0,63,255,255,240,0,63,255,64,0,63,255,255,240,0,15,253,0,0,63,255,255,240,0,191,240,0,0,0,15,240,0,7,255,208,0,0,0,31,240,1,255,255,253,0,0,0,63,248,15,255,227,252,0,0,0,127,254,3,254,11,240,0,0,0,255,255,130,144,47,255,255,224,1,255,255,208,0,191,255,255,240,3,251,247,244,2,255,255,255,240,7,231,242,244,15,248,0,31,208,15,199,240,224,191,240,0,63,192,47,135,240,71,255,253,0,191,64,127,71,240,7,254,255,129,255,0,190,7,240,2,208,127,231,252,0,60,7,240,0,0,15,255,244,0,36,7,240,0,0,2,255,208,0,0,7,240,0,0,7,255,64,0,0,7,240,0,0,127,252,0,0,0,7,240,0,7,255,224,0,0,0,7,240,6,255,255,64,0,0,0,7,240,47,255,244,0,0,0,0,7,240,15,254,0,0,0,0,0,7,240,7,144,0,0,0,0, + // 0x7a7a 空 + 122,122,33,34,50,37,2,254,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,64,11,240,3,240,0,127,0,63,64,11,240,3,240,0,127,0,63,64,15,224,3,240,0,127,0,63,64,15,208,3,240,0,127,0,63,64,47,192,3,240,0,0,0,0,0,63,192,3,240,0,32,0,0,0,255,64,3,240,0,63,0,0,7,254,0,3,244,0,127,0,0,191,248,0,3,255,255,254,0,47,255,224,0,2,255,255,252,0,63,255,64,0,0,191,255,244,0,15,228,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,208,0,0,191,255,255,255,255,255,208,0,0,191,255,255,255,255,255,208,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128, + // 0x7aef 端 + 239,122,35,35,59,37,1,253,0,5,0,0,0,15,192,0,0,0,47,64,0,0,15,192,0,0,0,47,64,11,224,15,192,15,192,0,47,64,11,224,15,192,15,192,0,47,64,11,224,15,192,15,192,0,47,64,11,224,15,192,15,192,0,47,64,11,224,15,192,15,192,0,47,64,11,224,15,192,15,192,63,255,255,139,255,255,255,255,192,63,255,255,139,255,255,255,255,192,63,255,255,139,255,255,255,255,192,0,0,0,0,0,0,0,0,0,6,0,57,0,0,0,0,0,0,31,64,127,0,0,0,0,0,0,15,128,126,63,255,255,255,255,244,15,128,189,63,255,255,255,255,244,15,192,189,63,255,255,255,255,244,11,192,252,0,0,47,192,0,0,11,192,252,0,0,63,192,0,0,7,208,252,0,0,63,64,0,0,7,209,248,15,255,255,255,255,224,3,225,244,15,255,255,255,255,224,3,226,240,15,255,255,255,255,224,3,211,240,15,193,244,63,7,224,0,3,246,223,193,244,63,7,224,0,7,255,223,193,244,63,7,224,27,255,255,239,193,244,63,7,224,191,255,254,79,193,244,63,7,224,127,254,64,15,193,244,63,7,224,62,64,0,15,193,244,63,7,224,0,0,0,15,193,244,63,7,224,0,0,0,15,193,244,63,7,224,0,0,0,15,193,244,63,111,224,0,0,0,15,193,244,63,127,208,0,0,0,10,128,80,0,63,64, + // 0x7b2c 第 + 44,123,34,35,59,37,1,253,0,46,64,0,0,248,0,0,0,0,63,128,0,1,253,0,0,0,0,127,64,0,3,252,0,0,0,0,255,170,170,135,254,170,170,160,2,255,255,255,207,255,255,255,240,3,255,255,255,239,255,255,255,240,15,241,252,0,191,130,252,0,0,63,208,254,2,255,0,255,0,0,127,128,127,2,252,0,63,64,0,30,0,56,0,112,0,41,0,0,0,255,255,255,255,255,255,248,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,0,0,0,252,0,2,252,0,0,0,0,0,252,0,2,252,0,0,0,0,0,252,0,2,252,0,0,31,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,0,0,252,0,0,0,0,0,127,0,0,252,0,0,0,0,0,191,0,0,252,0,0,0,0,0,255,255,255,255,255,255,255,192,0,255,255,255,255,255,255,255,192,1,255,255,255,255,255,255,255,192,2,252,0,191,252,0,0,63,128,0,0,3,255,252,0,0,63,128,0,0,47,249,252,0,0,63,64,0,1,255,208,252,0,0,127,64,0,31,255,0,252,0,0,191,0,1,255,248,0,252,3,255,255,0,47,255,128,0,252,1,255,253,0,15,252,0,0,252,0,255,244,0,7,128,0,0,252,0,0,0,0,0,0,0,0,252,0,0,0,0, + // 0x7b49 等 + 73,123,34,35,59,37,1,253,0,30,64,0,0,249,0,0,0,0,63,192,0,1,253,0,0,0,0,127,64,0,2,252,0,0,0,0,255,255,255,199,255,255,255,240,1,255,255,255,207,255,255,255,240,3,255,255,255,239,255,255,255,240,15,240,252,0,191,130,252,0,0,63,208,254,1,255,0,255,0,0,191,128,127,0,253,0,127,64,0,31,0,56,1,252,0,61,0,0,0,0,0,1,252,0,0,0,0,0,127,255,255,255,255,255,248,0,0,127,255,255,255,255,255,252,0,0,127,255,255,255,255,255,252,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,0,0,124,0,0,3,248,0,0,0,1,255,64,0,3,248,0,0,0,0,191,208,0,3,248,0,0,0,0,31,244,0,3,248,0,0,0,0,7,253,0,3,248,0,0,0,0,1,253,0,7,248,0,0,0,0,0,176,31,255,244,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,11,255,128,0,0, + // 0x7bb1 箱 + 177,123,34,35,59,37,1,253,0,30,0,0,0,228,0,0,0,0,47,192,0,0,254,0,0,0,0,63,128,0,1,252,0,0,0,0,127,64,0,3,252,0,0,0,0,255,255,255,199,255,255,255,240,1,255,255,255,207,255,255,255,240,3,255,255,255,239,255,255,255,240,11,244,253,0,127,194,252,0,0,31,224,191,0,255,0,255,0,0,127,192,63,2,253,0,63,64,0,47,64,62,0,116,0,46,64,0,5,1,252,0,0,0,0,0,0,0,1,252,0,47,255,255,255,192,0,1,252,0,47,255,255,255,192,0,2,252,0,47,255,255,255,192,47,255,255,255,111,128,0,47,192,47,255,255,255,111,128,0,47,192,47,255,255,255,111,128,0,47,192,0,7,252,0,47,234,170,191,192,0,15,253,0,47,255,255,255,192,0,31,255,64,47,255,255,255,192,0,63,255,208,47,128,0,47,192,0,127,255,244,47,128,0,47,192,0,255,254,254,47,128,0,47,192,2,253,252,255,111,234,170,191,192,7,245,252,63,47,255,255,255,192,31,225,252,28,47,255,255,255,192,63,193,252,0,47,128,0,47,192,127,65,252,0,47,128,0,47,192,46,1,252,0,47,128,0,47,192,8,1,252,0,47,255,255,255,192,0,1,252,0,47,255,255,255,192,0,1,252,0,47,255,255,255,192,0,1,252,0,47,128,0,47,192,0,1,252,0,26,64,0,21,64, + // 0x7c7b 类 + 123,124,34,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,11,0,7,240,0,126,0,0,0,63,192,7,240,0,255,64,0,0,31,240,7,240,2,253,0,0,0,11,248,7,240,7,248,0,0,0,3,252,7,240,15,240,0,0,0,0,248,7,240,31,192,0,0,63,255,255,255,255,255,255,255,128,63,255,255,255,255,255,255,255,128,63,255,255,255,255,255,255,255,128,0,0,2,255,255,224,0,0,0,0,0,11,255,255,248,0,0,0,0,0,127,247,243,255,64,0,0,0,2,255,135,240,191,240,0,0,0,111,254,7,240,31,255,64,0,7,255,244,7,240,3,255,254,64,255,255,128,7,240,0,127,255,128,63,248,0,1,80,0,7,255,0,31,128,0,2,160,63,64,29,0,0,0,0,7,240,127,244,0,0,0,0,0,11,240,7,255,0,0,0,0,0,11,240,0,188,0,0,127,255,255,255,255,255,255,255,128,127,255,255,255,255,255,255,255,128,127,255,255,255,255,255,255,255,128,0,0,0,127,255,0,0,0,0,0,0,0,255,191,192,0,0,0,0,0,3,254,47,224,0,0,0,0,0,31,252,15,253,0,0,0,0,1,255,244,3,255,208,0,0,0,111,255,208,0,255,254,64,0,175,255,254,0,0,47,255,255,144,255,255,224,0,0,2,255,255,192,63,253,0,0,0,0,31,255,0,42,64,0,0,0,0,0,90,0, + // 0x7d22 索 + 34,125,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,63,255,255,255,255,255,255,255,64,63,255,255,255,255,255,255,255,64,63,255,255,255,255,255,255,255,64,63,0,0,255,64,0,0,63,64,63,0,3,254,0,16,0,63,64,63,0,15,248,0,188,0,63,64,63,9,63,224,2,255,0,63,64,63,63,255,64,15,252,0,63,64,0,63,253,0,127,224,0,0,0,0,7,255,1,255,129,0,0,0,0,0,191,219,253,11,192,0,0,0,0,31,255,224,31,244,0,0,0,0,7,255,64,7,254,0,0,0,0,31,252,0,0,255,192,0,127,255,255,255,255,255,255,244,0,127,255,255,255,255,255,255,254,0,127,255,255,255,255,250,170,255,64,0,0,64,7,240,0,0,61,0,0,2,248,7,240,11,192,0,0,0,15,252,7,240,47,248,0,0,0,127,240,7,240,7,255,128,0,7,255,128,7,240,0,191,240,0,127,253,0,7,240,0,15,253,0,255,224,0,7,240,0,2,255,64,47,64,0,7,240,0,0,125,0,4,0,0,7,240,0,0,0,0, + // 0x7d2b 紫 + 43,125,34,35,59,37,1,253,0,0,63,0,3,244,0,0,0,0,0,63,0,3,244,0,0,0,0,0,63,0,3,244,0,24,0,3,240,63,0,3,244,1,254,0,3,240,63,255,211,244,111,255,128,3,240,63,255,211,255,255,253,0,3,240,63,255,211,255,254,64,0,3,240,63,0,3,254,64,0,0,3,240,63,0,3,244,0,2,0,3,240,63,0,83,244,0,3,240,3,240,127,255,227,248,0,7,240,27,255,255,255,227,255,255,255,240,127,255,255,255,65,255,255,255,208,127,255,164,31,144,127,255,255,64,41,64,0,127,192,0,0,0,0,0,0,1,255,0,30,0,0,0,0,7,75,252,0,191,208,0,0,0,31,255,224,2,255,64,0,0,0,47,255,128,15,252,0,0,0,0,2,255,224,127,224,40,0,0,0,0,47,254,255,65,255,0,0,0,0,7,255,252,0,191,192,0,0,0,0,255,208,0,31,244,0,63,255,255,255,255,255,255,253,0,63,255,255,255,255,255,255,255,64,63,255,255,255,255,255,255,255,208,21,64,0,1,253,0,0,15,240,0,0,16,1,252,0,16,7,128,0,1,254,1,252,2,253,0,0,0,11,254,1,252,7,255,128,0,0,127,244,1,252,0,127,244,0,7,255,192,1,252,0,11,255,0,47,254,0,1,252,0,1,255,208,11,240,0,1,252,0,0,47,128,2,64,0,1,252,0,0,5,0, + // 0x7ea2 红 + 162,126,35,34,50,37,1,254,0,1,128,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,15,240,1,85,85,85,85,64,0,31,224,7,255,255,255,255,224,0,63,192,7,255,255,255,255,224,0,127,128,7,255,255,255,255,224,0,255,0,0,0,11,240,0,0,1,253,3,128,0,11,240,0,0,3,248,7,244,0,11,240,0,0,11,240,15,240,0,11,240,0,0,31,208,47,224,0,11,240,0,0,191,255,255,192,0,11,240,0,0,127,255,255,0,0,11,240,0,0,63,255,253,0,0,11,240,0,0,41,71,248,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,255,64,0,0,11,240,0,0,3,253,0,80,0,11,240,0,0,11,254,191,240,0,11,240,0,0,63,255,255,240,0,11,240,0,0,63,255,255,224,0,11,240,0,0,63,254,144,0,0,11,240,0,0,41,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,27,208,0,11,240,0,0,0,107,255,224,0,11,240,0,0,127,255,255,239,255,255,255,255,244,127,255,254,79,255,255,255,255,244,63,254,64,15,255,255,255,255,244,57,64,0,5,85,85,85,85,80,0,0,0,0,0,0,0,0,0, + // 0x7ea7 级 + 167,126,35,36,68,37,1,252,0,2,64,0,0,0,0,0,0,0,3,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,15,224,15,255,255,255,240,0,0,31,192,15,255,255,255,240,0,0,63,128,15,255,255,255,224,0,0,127,0,0,31,192,15,208,0,0,254,0,0,31,192,31,192,0,1,252,2,0,31,192,47,192,0,3,248,11,192,31,192,63,128,0,7,240,15,224,31,192,63,64,0,15,208,63,192,47,192,127,0,0,63,213,191,64,47,128,190,0,0,191,255,254,0,47,128,255,255,128,127,255,252,0,63,128,255,255,192,63,235,244,0,63,193,255,255,192,16,15,224,0,63,224,0,47,128,0,47,192,0,63,240,0,63,64,0,127,0,0,127,244,0,127,0,0,253,27,192,191,252,0,191,0,3,254,255,192,191,253,0,253,0,15,255,255,192,253,191,2,252,0,127,255,244,0,253,63,131,248,0,127,249,0,1,252,47,203,240,0,62,64,0,2,252,15,255,224,0,16,0,1,211,248,7,255,192,0,0,0,111,231,240,2,255,64,0,0,11,255,255,240,2,255,64,0,1,255,255,159,224,11,255,208,0,47,255,228,47,192,63,255,248,0,63,254,0,127,129,255,199,255,0,63,208,0,255,11,255,1,255,224,40,0,2,254,63,252,0,63,244,0,0,1,252,15,208,0,11,208,0,0,0,36,7,0,0,1,128,0,0,0,0,0,0,0,0,0, + // 0x7ebf 线 + 191,126,34,35,59,37,2,253,0,5,0,0,2,252,0,0,0,0,15,208,0,2,252,61,0,0,0,15,224,0,2,252,191,192,0,0,47,192,0,2,252,47,244,0,0,63,128,0,2,252,3,244,0,0,127,0,0,2,252,0,160,0,0,254,0,0,1,252,0,24,0,1,252,0,0,1,253,191,254,0,3,248,13,0,107,255,255,254,0,7,240,31,143,255,255,255,249,0,15,208,63,203,255,255,164,0,0,63,128,191,11,250,252,0,0,0,191,239,254,0,0,253,0,0,0,255,255,252,0,0,253,0,1,0,191,255,244,0,0,253,6,191,64,122,95,224,0,0,255,255,255,128,0,47,192,0,111,255,255,255,128,0,127,0,47,255,255,254,80,0,0,253,0,47,255,255,64,0,0,3,248,1,31,229,127,0,30,0,15,246,191,64,0,63,64,63,192,63,255,255,64,0,63,64,191,0,255,255,255,0,0,63,130,253,0,127,254,64,0,0,47,203,248,0,62,64,0,0,0,31,255,240,0,0,0,0,0,0,15,255,128,0,0,0,6,64,0,15,254,0,0,0,1,191,128,0,47,248,0,0,1,191,255,192,2,255,248,3,0,111,255,254,0,47,255,252,3,208,255,255,128,6,255,245,254,7,208,191,224,0,127,255,128,191,223,192,116,0,0,63,248,0,63,255,192,0,0,0,31,64,0,15,255,64,0,0,0,4,0,0,2,253,0, + // 0x7ec6 细 + 198,126,34,35,59,37,1,253,0,0,208,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,3,252,3,255,255,255,255,208,0,11,244,3,255,255,255,255,208,0,15,240,3,255,255,255,255,208,0,47,192,3,249,95,245,95,208,0,63,128,3,240,11,224,15,208,0,191,0,3,240,11,224,15,208,0,253,0,3,240,11,224,15,208,3,252,2,211,240,11,224,15,208,7,240,3,251,240,11,224,15,208,31,224,15,243,240,11,224,15,208,127,239,255,211,240,11,224,15,208,127,255,255,131,240,11,224,15,208,63,255,255,3,240,11,224,15,208,62,151,252,3,240,11,224,15,208,0,11,244,3,255,255,255,255,208,0,31,208,3,255,255,255,255,208,0,127,128,3,255,255,255,255,208,1,254,0,3,240,11,224,15,208,7,253,175,243,240,11,224,15,208,47,255,255,243,240,11,224,15,208,127,255,255,227,240,11,224,15,208,63,255,148,3,240,11,224,15,208,46,64,0,3,240,11,224,15,208,0,0,0,3,240,11,224,15,208,0,0,0,3,240,11,224,15,208,0,0,1,163,240,11,224,15,208,0,22,255,243,244,11,224,15,208,47,255,255,243,255,255,255,255,208,127,255,255,147,255,255,255,255,208,63,254,64,3,255,255,255,255,208,57,0,0,3,240,0,0,15,208,0,0,0,3,240,0,0,15,208,0,0,0,1,80,0,0,0,0, + // 0x7ec8 终 + 200,126,35,35,59,37,1,253,0,3,64,0,0,165,0,0,0,0,7,240,0,1,253,0,0,0,0,15,240,0,3,252,0,0,0,0,15,224,0,7,248,0,0,0,0,47,192,0,15,255,255,253,0,0,63,128,0,47,255,255,255,64,0,191,0,0,127,255,255,255,0,0,254,0,1,255,128,1,253,0,2,252,6,3,255,208,3,248,0,3,244,15,223,255,240,11,240,0,15,240,31,255,227,252,47,208,0,31,192,63,159,128,255,191,128,0,127,235,255,6,0,127,255,0,0,191,255,253,0,0,47,252,0,0,63,255,248,0,0,63,253,0,0,41,75,240,0,2,255,255,128,0,0,31,208,0,15,254,191,244,0,0,63,128,1,191,244,31,255,64,0,255,0,31,255,192,3,255,244,2,252,0,47,254,0,0,191,248,11,250,191,203,224,57,0,11,224,47,255,255,194,0,191,208,0,128,127,255,255,192,0,191,253,0,0,63,254,144,0,0,11,255,128,0,41,0,0,0,0,0,191,192,0,0,0,0,0,0,0,15,64,0,0,0,0,0,20,0,0,0,0,0,0,6,224,63,144,0,0,0,0,91,255,240,255,254,64,0,0,111,255,255,240,31,255,244,0,0,191,255,254,64,0,191,255,128,0,127,249,0,0,0,6,255,248,0,41,0,0,0,0,0,47,254,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,0,32,0, + // 0x7ed3 结 + 211,126,34,35,59,37,1,253,0,2,0,0,0,11,240,0,0,0,7,224,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,224,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,63,128,15,255,255,255,255,240,0,191,0,15,255,255,255,255,240,0,254,0,15,255,255,255,255,240,2,252,3,69,85,95,245,85,80,3,248,11,240,0,11,240,0,0,15,240,15,240,0,11,240,0,0,47,208,63,192,0,11,240,0,0,191,255,255,128,0,11,240,0,0,191,255,255,0,0,15,240,0,0,63,255,253,3,255,255,255,255,192,62,91,248,3,255,255,255,255,192,0,15,240,3,255,255,255,255,192,0,63,192,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,3,253,5,160,0,0,0,0,0,15,255,255,240,255,255,255,255,64,127,255,255,240,255,255,255,255,64,63,255,254,64,255,255,255,255,64,63,249,0,0,253,0,0,63,64,25,0,0,0,253,0,0,63,64,0,0,0,0,253,0,0,63,64,0,0,0,0,253,0,0,63,64,0,0,27,240,253,0,0,63,64,0,111,255,240,253,0,0,63,64,127,255,255,244,253,0,0,63,64,127,255,254,64,255,255,255,255,64,127,250,64,0,255,255,255,255,64,57,0,0,0,255,255,255,255,64,0,0,0,0,253,0,0,63,64,0,0,0,0,253,0,0,42,64, + // 0x7ed9 给 + 217,126,34,36,68,37,1,252,0,3,64,0,0,14,64,0,0,0,7,240,0,0,47,192,0,0,0,15,240,0,0,63,192,0,0,0,15,208,0,0,127,224,0,0,0,47,192,0,0,255,244,0,0,0,63,128,0,1,255,252,0,0,0,191,0,0,3,252,254,0,0,0,253,0,0,11,244,127,64,0,2,252,11,128,31,224,47,208,0,7,244,15,224,63,192,15,244,0,15,224,63,192,255,0,3,253,0,47,213,191,67,253,0,1,255,128,191,255,255,31,255,255,255,255,240,127,255,252,127,255,255,255,239,224,63,255,248,63,239,255,255,199,192,20,15,240,14,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,3,252,22,193,255,255,255,252,0,15,255,255,193,255,255,255,252,0,63,255,255,193,255,255,255,252,0,63,255,249,1,252,0,2,252,0,63,228,0,1,252,0,2,252,0,24,0,0,1,252,0,2,252,0,0,0,0,1,252,0,2,252,0,0,0,0,1,252,0,2,252,0,0,0,27,209,252,0,2,252,0,0,111,255,209,252,0,2,252,0,47,255,255,209,252,0,2,252,0,63,255,249,1,255,255,255,252,0,63,249,0,1,255,255,255,252,0,57,0,0,1,255,255,255,252,0,0,0,0,1,252,0,2,252,0,0,0,0,1,252,0,2,252,0,0,0,0,0,0,0,0,0,0, + // 0x7edf 统 + 223,126,35,35,59,37,1,253,0,3,128,0,0,27,0,0,0,0,7,244,0,0,63,128,0,0,0,15,240,0,0,31,192,0,0,0,31,224,0,0,15,224,0,0,0,47,192,0,0,11,208,0,0,0,63,128,15,255,255,255,255,240,0,191,0,15,255,255,255,255,240,1,254,0,15,255,255,255,255,240,3,252,15,128,1,255,0,0,0,7,244,31,224,3,253,0,64,0,15,224,63,192,11,248,7,224,0,63,213,191,64,31,240,7,244,0,191,255,255,0,63,192,2,252,0,127,255,252,0,255,64,0,254,0,63,255,248,3,255,90,191,255,64,20,15,240,47,255,255,255,255,192,0,47,192,31,255,255,255,255,208,0,127,64,15,255,169,64,11,240,0,254,0,9,26,128,105,3,192,3,253,111,128,31,192,191,0,0,15,255,255,128,31,192,191,0,0,63,255,255,192,47,192,191,0,0,63,255,228,0,47,128,191,0,0,63,228,0,0,63,128,191,0,0,24,0,0,0,63,64,191,0,0,0,0,0,64,127,0,191,0,0,0,0,31,192,191,0,191,1,208,0,7,255,192,254,0,191,2,244,2,255,255,194,253,0,191,2,244,63,255,248,7,252,0,191,2,244,63,254,64,47,244,0,127,3,240,63,208,1,255,224,0,127,255,240,36,0,2,255,128,0,63,255,224,0,0,0,253,0,0,31,255,128,0,0,0,32,0,0,0,0,0, + // 0x7ee7 继 + 231,126,35,33,41,37,1,255,0,6,0,0,0,0,104,0,0,0,11,224,5,64,0,189,0,0,0,15,224,15,192,0,189,0,0,0,31,192,15,194,192,189,7,128,0,63,128,15,195,208,189,11,192,0,63,0,15,195,224,189,15,128,0,191,0,15,193,240,189,31,64,0,253,0,15,192,244,189,47,0,2,252,10,15,192,248,189,61,0,3,240,15,207,192,188,189,124,0,11,224,47,207,192,80,189,20,0,31,192,63,79,192,0,189,0,0,127,234,255,15,207,255,255,255,240,127,255,252,15,207,255,255,255,240,63,255,248,15,207,255,255,255,240,41,75,240,15,192,3,255,0,0,0,31,192,15,192,7,255,192,0,0,63,64,15,192,15,255,224,0,0,254,0,15,192,31,254,248,0,2,252,1,79,192,63,189,189,0,7,250,191,143,192,189,189,63,0,47,255,255,143,193,252,189,31,192,127,255,254,79,195,244,189,15,224,63,249,64,15,203,224,189,3,208,41,0,0,15,199,192,189,2,64,0,0,0,15,194,0,189,0,0,0,0,0,79,192,0,189,0,0,0,0,111,207,192,0,189,0,0,1,175,255,207,192,0,125,0,0,127,255,255,143,192,0,0,0,0,63,255,144,15,255,255,255,255,244,63,144,0,15,255,255,255,255,244,16,0,0,15,255,255,255,255,244, + // 0x7eea 绪 + 234,126,35,35,59,37,1,253,0,3,64,0,0,190,0,0,0,0,7,240,0,0,190,0,0,0,0,15,224,0,0,190,0,11,144,0,15,192,0,0,190,0,31,208,0,47,128,3,255,255,255,127,192,0,63,64,3,255,255,255,255,64,0,191,0,3,255,255,255,255,0,0,253,0,0,0,190,2,253,0,1,252,7,0,0,190,7,248,0,3,244,15,208,0,190,15,240,0,11,224,31,192,0,190,47,208,0,15,192,63,128,0,191,127,192,0,47,214,191,63,255,255,255,255,244,191,255,253,63,255,255,255,255,244,63,255,252,63,255,255,255,255,244,62,155,240,0,0,127,208,0,0,0,15,208,0,2,255,64,0,0,0,63,128,0,31,252,0,0,0,0,191,0,0,191,255,255,255,64,1,252,1,11,255,255,255,255,64,7,250,255,191,255,255,255,255,64,31,255,255,191,255,64,0,63,64,63,255,254,47,127,64,0,63,64,63,249,64,4,63,64,0,63,64,41,0,0,0,63,234,170,191,64,0,0,0,0,63,255,255,255,64,0,0,0,64,63,255,255,255,64,0,0,111,208,63,64,0,63,64,1,111,255,224,63,64,0,63,64,63,255,255,144,63,64,0,63,64,63,255,144,0,63,255,255,255,64,63,144,0,0,63,255,255,255,64,20,0,0,0,63,255,255,255,64,0,0,0,0,63,64,0,63,64,0,0,0,0,26,64,0,21,0, + // 0x7eed 续 + 237,126,34,36,68,37,1,252,0,2,64,0,0,31,192,0,0,0,7,240,0,0,31,192,0,0,0,11,240,0,0,31,192,0,0,0,15,208,2,255,255,255,254,0,0,31,192,3,255,255,255,254,0,0,63,64,3,255,255,255,254,0,0,127,0,0,0,31,192,0,0,0,253,0,0,0,31,192,0,0,1,252,14,0,0,31,192,0,0,3,240,31,207,255,255,255,255,208,11,224,63,79,255,255,255,255,208,15,192,127,15,255,255,255,255,192,127,255,253,0,0,0,0,15,192,127,255,248,0,40,6,144,47,128,63,255,240,0,127,71,240,63,0,41,15,224,0,47,231,240,63,0,0,31,192,1,3,251,240,45,0,0,63,0,11,192,215,240,0,0,0,189,0,11,244,7,224,0,0,1,252,111,1,254,7,224,0,0,7,255,255,0,61,11,224,0,0,31,255,255,0,4,15,208,0,0,63,255,144,63,255,255,255,255,224,63,228,0,63,255,255,255,255,224,24,0,0,63,255,255,255,255,224,0,0,6,0,0,63,64,0,0,0,0,191,64,0,255,8,0,0,0,31,255,64,2,253,63,64,0,6,255,253,0,11,248,63,224,0,127,255,144,0,47,240,11,252,0,63,244,0,1,255,192,2,255,0,62,64,0,15,255,0,0,127,192,16,0,0,127,248,0,0,31,240,0,0,0,47,208,0,0,7,224,0,0,0,13,0,0,0,1,128,0,0,0,0,0,0,0,0,0, + // 0x7eff 绿 + 255,126,35,35,59,37,1,253,0,10,64,0,0,0,0,0,0,0,15,224,2,255,255,255,255,0,0,31,208,2,255,255,255,255,0,0,47,192,2,255,255,255,255,0,0,63,128,0,0,0,0,127,0,0,127,0,0,0,0,0,127,0,0,254,0,0,0,0,0,127,0,1,253,0,0,170,170,170,255,0,2,252,8,0,255,255,255,255,0,3,240,47,64,255,255,255,254,0,11,224,63,128,0,0,0,190,0,31,192,191,0,0,0,0,190,0,127,255,253,0,0,0,0,190,0,127,255,252,15,255,255,255,255,244,63,255,244,15,255,255,255,255,244,41,15,224,15,255,255,255,255,244,0,47,192,0,0,11,224,0,0,0,127,64,0,64,11,224,1,0,0,254,0,3,224,11,224,11,192,2,252,1,7,252,11,224,47,240,11,250,191,1,255,11,224,191,128,47,255,255,0,127,139,242,254,0,127,255,254,0,31,75,255,244,0,63,254,64,0,8,47,255,192,0,45,0,0,0,1,255,255,0,0,0,0,0,0,11,255,255,192,0,0,0,6,0,127,235,235,244,0,0,1,191,2,255,75,227,253,0,0,127,255,95,252,11,224,255,208,47,255,254,63,224,11,224,63,248,63,255,128,31,64,11,224,11,240,63,228,0,4,0,11,224,1,208,41,0,0,0,3,255,208,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,2,254,0,0,0, + // 0x7f16 编 + 22,127,34,35,59,37,1,253,0,10,64,0,0,27,128,0,0,0,15,224,0,0,47,192,0,0,0,15,208,0,0,15,224,0,0,0,47,192,0,0,15,240,0,0,0,63,64,15,255,255,255,255,192,0,127,0,15,255,255,255,255,192,0,254,0,15,255,255,255,255,192,0,252,0,15,208,0,0,15,192,2,244,29,15,208,0,0,15,192,3,240,63,79,208,0,0,15,192,15,208,127,15,255,255,255,255,192,31,192,253,15,255,255,255,255,192,127,255,252,15,255,255,255,255,192,127,255,244,15,208,0,0,0,0,63,255,240,15,208,0,0,0,0,57,79,208,15,192,0,0,0,0,0,47,128,15,255,255,255,255,208,0,63,0,15,255,255,255,255,208,0,253,0,15,255,255,255,255,208,2,252,4,15,254,15,75,131,208,7,250,253,31,254,15,75,131,208,31,255,254,31,254,15,75,131,208,63,255,249,31,190,15,75,131,208,63,249,0,47,190,15,75,131,208,46,0,0,63,127,255,255,255,208,0,0,4,63,63,255,255,255,208,0,0,189,127,63,175,239,239,208,0,27,254,190,62,15,75,131,208,2,255,249,253,62,15,75,131,208,127,255,128,252,62,15,75,131,208,127,244,2,252,62,15,75,131,208,63,64,3,244,62,15,75,135,208,32,0,7,240,62,15,75,191,208,0,0,0,208,62,10,6,111,192,0,0,0,0,41,0,0,5,0, + // 0x7f3a 缺 + 58,127,35,35,59,37,1,253,2,144,0,0,0,15,208,0,0,3,248,0,0,0,15,208,0,0,3,244,0,0,0,15,208,0,0,7,240,0,0,0,15,208,0,0,11,240,0,0,0,15,208,0,0,11,255,255,254,0,15,208,0,0,15,255,255,254,63,255,255,255,0,31,255,255,254,63,255,255,255,0,47,195,240,0,63,255,255,255,0,63,131,240,0,0,15,208,127,0,127,3,240,0,0,15,208,63,0,126,3,240,0,0,15,208,63,0,9,3,240,0,0,15,208,63,0,127,255,255,255,0,15,208,63,0,127,255,255,255,0,15,208,63,0,127,255,255,255,0,15,208,63,0,0,3,240,0,0,15,208,127,0,0,3,240,0,127,255,255,255,248,10,3,240,41,127,255,255,255,248,31,67,240,126,127,255,255,255,248,31,67,240,126,0,47,252,0,0,31,67,240,126,0,63,252,0,0,31,67,240,126,0,63,254,0,0,31,67,240,126,0,127,255,0,0,31,67,240,126,0,191,63,64,0,31,67,240,126,0,254,63,192,0,31,67,240,126,2,253,31,208,0,31,255,255,254,3,252,15,240,0,31,255,255,254,15,244,7,252,0,31,255,255,254,63,224,3,254,0,31,64,0,126,255,192,0,255,128,31,64,0,27,255,0,0,127,244,26,64,0,15,253,0,0,31,244,0,0,0,7,240,0,0,7,224,0,0,0,1,128,0,0,0,128, + // 0x7f51 网 + 81,127,31,33,8,37,3,253,191,255,255,255,255,255,255,252,191,255,255,255,255,255,255,252,191,255,255,255,255,255,255,252,190,85,95,213,86,253,86,252,190,0,15,192,1,248,1,252,190,0,15,192,1,248,1,252,190,0,15,192,1,248,1,252,190,0,15,192,2,248,1,252,190,0,15,192,2,244,1,252,190,24,31,195,194,244,1,252,190,63,31,139,246,244,1,252,190,127,239,131,255,240,1,252,190,15,255,64,255,240,1,252,190,3,255,64,63,240,1,252,190,1,255,64,15,240,1,252,190,0,127,128,7,252,1,252,190,0,63,208,7,254,1,252,190,0,127,244,11,255,129,252,190,0,191,252,15,255,209,252,190,0,253,254,15,207,241,252,190,0,252,125,31,131,241,252,190,1,252,40,63,129,193,252,190,3,248,0,63,0,65,252,190,3,240,0,191,0,1,252,190,11,240,0,253,0,1,252,190,31,208,2,252,0,1,252,190,63,192,7,248,0,1,252,190,127,64,15,240,0,1,252,190,30,0,3,208,0,1,252,190,4,0,0,128,5,86,252,190,0,0,0,0,15,255,248,190,0,0,0,0,7,255,244,190,0,0,0,0,3,255,144, + // 0x7f6e 置 + 110,127,34,35,59,37,2,252,5,85,85,85,85,85,85,84,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,11,224,7,240,3,240,1,252,0,11,224,7,240,3,240,1,252,0,11,224,7,240,3,240,1,252,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,5,85,85,87,253,85,85,84,0,0,0,0,3,248,0,0,0,0,106,170,170,171,254,170,170,170,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,0,0,0,7,240,0,0,0,0,0,0,0,11,224,0,0,0,0,6,160,63,255,255,255,255,224,0,7,240,63,255,255,255,255,224,0,7,240,63,64,0,0,11,224,0,7,240,63,255,255,255,255,224,0,7,240,63,255,255,255,255,224,0,7,240,63,64,0,0,11,224,0,7,240,63,64,0,0,11,224,0,7,240,63,255,255,255,255,224,0,7,240,63,255,255,255,255,224,0,7,240,63,64,0,0,11,224,0,7,240,63,64,0,0,11,224,0,7,240,63,255,255,255,255,224,0,7,240,47,255,255,255,255,224,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,255,255,255,255,255,255,255,208,7,255,255,255,255,255,255,255,208,7,250,170,170,170,170,170,170,128,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x7f72 署 + 114,127,34,34,50,37,1,253,1,85,85,85,85,85,85,85,0,2,255,255,255,255,255,255,255,0,2,255,255,255,255,255,255,255,0,2,244,1,248,0,252,0,127,0,2,244,1,248,0,252,0,127,0,2,244,1,248,0,252,0,127,0,2,255,255,255,255,255,255,255,0,2,255,255,255,255,255,255,255,0,1,85,85,91,245,85,85,85,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,56,0,0,63,255,255,255,255,240,255,0,0,63,255,255,255,255,247,253,0,0,42,170,175,250,170,255,244,0,0,0,0,7,240,1,255,192,0,0,0,0,7,240,15,254,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,47,255,255,255,255,255,255,255,224,0,0,0,47,255,192,0,0,0,0,0,7,255,253,0,0,0,0,0,1,191,255,255,255,255,248,0,1,191,255,255,255,255,255,248,0,127,255,255,170,170,170,171,248,0,63,255,191,0,0,0,2,248,0,31,144,63,0,0,0,3,248,0,0,0,63,255,255,255,255,248,0,0,0,63,255,255,255,255,248,0,0,0,63,0,0,0,2,248,0,0,0,63,0,0,0,2,248,0,0,0,63,255,255,255,255,248,0,0,0,63,255,255,255,255,248,0,0,0,63,170,170,170,171,248,0,0,0,42,0,0,0,1,164,0, + // 0x8005 者 + 5,128,34,36,68,37,1,252,0,0,0,47,128,0,0,0,0,0,0,0,47,128,0,0,16,0,0,0,0,47,128,0,0,125,0,0,0,0,47,128,0,0,255,0,0,0,0,47,128,0,2,253,0,0,191,255,255,255,255,219,248,0,0,191,255,255,255,255,255,224,0,0,191,255,255,255,255,255,192,0,0,0,0,47,128,2,255,0,0,0,0,0,47,128,15,252,0,0,0,0,0,47,128,63,224,0,0,0,0,0,47,193,255,128,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,0,0,0,15,254,0,0,0,0,0,0,0,191,244,0,0,0,0,0,0,7,255,192,0,0,0,0,0,0,63,254,0,0,0,0,0,0,2,255,255,255,255,255,208,0,0,127,255,255,255,255,255,208,0,11,255,255,255,255,255,255,208,0,127,255,255,0,0,0,15,208,0,63,244,127,0,0,0,15,208,0,14,64,127,0,0,0,15,208,0,0,0,127,255,255,255,255,208,0,0,0,127,255,255,255,255,208,0,0,0,127,170,170,170,175,208,0,0,0,127,0,0,0,15,208,0,0,0,127,0,0,0,15,208,0,0,0,127,0,0,0,15,208,0,0,0,127,255,255,255,255,208,0,0,0,127,255,255,255,255,208,0,0,0,127,255,255,255,255,208,0,0,0,127,0,0,0,15,208,0,0,0,0,0,0,0,0,0,0, + // 0x806a 聪 + 106,128,35,35,59,37,1,253,0,0,0,0,2,0,0,144,0,0,0,0,0,47,128,0,252,0,63,255,255,248,31,192,2,252,0,63,255,255,248,15,224,3,248,0,63,255,255,248,7,240,7,240,0,7,224,31,128,3,248,11,224,0,7,224,31,128,1,252,15,192,0,7,224,31,128,0,208,47,128,0,7,224,31,128,255,255,255,255,128,7,250,191,128,255,255,255,255,128,7,255,255,128,255,255,255,255,128,7,255,255,128,252,0,0,47,128,7,224,31,128,252,0,0,47,128,7,224,31,128,252,0,0,47,128,7,224,31,128,252,0,0,47,128,7,224,31,128,252,0,0,47,128,7,224,31,128,255,255,255,255,128,7,250,191,128,255,255,255,255,128,7,255,255,128,255,255,255,255,128,7,255,255,128,0,1,0,0,0,7,224,31,128,0,15,128,0,0,7,224,31,128,0,15,208,0,0,7,224,31,128,3,243,244,5,0,7,224,31,225,227,241,252,47,0,7,225,127,246,243,240,190,31,64,7,255,255,251,243,240,62,15,192,127,255,255,211,227,240,20,11,208,127,255,175,131,227,240,0,67,224,63,144,31,135,211,240,0,247,240,16,0,31,143,195,240,0,245,244,0,0,31,143,195,240,1,244,248,0,0,31,159,67,254,171,240,144,0,0,31,129,2,255,255,224,0,0,0,31,128,0,191,255,128,0,0,0,31,128,0,0,0,0,0, + // 0x80fd 能 + 253,128,35,36,68,37,1,252,0,15,144,0,2,248,0,0,0,0,15,224,0,2,248,0,0,0,0,47,192,16,2,248,0,0,0,0,63,129,248,2,248,0,44,0,0,127,1,253,2,248,6,255,0,0,190,0,191,2,248,127,255,64,0,253,0,63,130,255,255,244,0,22,254,255,255,194,255,254,0,0,127,255,255,255,226,255,128,0,0,127,255,255,255,242,252,0,0,0,63,169,84,3,246,248,0,2,144,0,0,0,2,210,248,0,3,244,0,0,0,0,2,252,0,3,240,7,255,255,255,2,252,0,7,240,7,255,255,255,1,255,255,255,240,7,255,255,255,0,255,255,255,208,7,240,0,127,0,47,255,255,64,7,240,0,127,0,84,0,0,0,7,240,0,127,2,248,0,0,0,7,250,170,191,2,248,0,0,0,7,255,255,255,2,248,0,46,0,7,255,255,255,2,248,2,255,64,7,240,0,127,2,248,111,255,64,7,240,0,127,2,255,255,248,0,7,240,0,127,2,255,255,64,0,7,255,255,255,2,255,224,0,0,7,255,255,255,2,252,0,0,0,7,250,170,191,2,248,0,1,128,7,240,0,127,2,248,0,1,248,7,240,0,127,2,248,0,1,248,7,240,0,127,2,248,0,2,248,7,240,0,127,2,252,0,3,244,7,240,63,255,1,255,255,255,240,7,240,63,254,0,255,255,255,224,7,240,31,228,0,47,255,255,64,0,0,0,0,0,0,0,0,0, + // 0x81ea 自 + 234,129,26,36,252,37,6,252,0,0,11,224,0,0,0,0,0,15,240,0,0,0,0,0,15,224,0,0,0,0,0,31,208,0,0,0,0,0,47,192,0,0,0,255,255,255,255,255,255,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,254,85,85,85,85,95,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,0,0,0,0,0,0,0, + // 0x81f3 至 + 243,129,33,32,32,37,2,254,63,255,255,255,255,255,255,255,64,63,255,255,255,255,255,255,255,64,63,255,255,255,255,255,255,255,64,0,0,11,252,0,0,0,0,0,0,0,15,244,0,29,0,0,0,0,0,31,240,0,191,64,0,0,0,0,63,208,0,191,224,0,0,0,0,127,192,0,47,248,0,0,0,0,255,64,0,11,255,0,0,0,1,255,0,0,1,255,192,0,31,255,255,175,255,255,255,240,0,31,255,255,255,255,255,255,252,0,31,255,255,255,255,255,255,254,0,26,170,170,169,85,80,1,255,64,0,0,0,1,80,0,0,124,0,0,0,0,7,240,0,0,16,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,11,240,0,0,0,0,2,255,255,255,255,255,255,240,0,2,255,255,255,255,255,255,240,0,2,255,255,255,255,255,255,240,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0, + // 0x83dc 菜 + 220,131,34,35,59,37,1,253,0,0,31,192,0,15,208,0,0,0,0,31,192,0,15,208,0,0,0,0,31,192,0,15,208,0,0,47,255,255,255,255,255,255,255,240,47,255,255,255,255,255,255,255,240,47,255,255,255,255,255,255,255,240,0,0,31,192,0,15,208,0,0,0,0,31,192,0,15,208,0,0,0,0,10,128,0,6,191,224,0,0,0,85,106,191,255,255,248,0,11,255,255,255,255,255,255,248,0,3,255,255,255,255,254,148,0,0,3,255,250,165,80,0,0,144,0,0,0,0,2,208,0,1,253,0,0,125,0,11,240,0,3,252,0,0,191,0,3,244,0,7,248,0,0,63,192,2,252,0,15,240,0,0,31,208,1,252,0,31,208,0,0,15,240,0,228,0,63,128,0,0,7,208,1,252,0,127,0,0,0,1,0,1,252,0,4,0,0,0,0,0,1,253,0,0,0,0,47,255,255,255,255,255,255,255,240,47,255,255,255,255,255,255,255,240,47,255,255,255,255,255,255,255,240,0,0,0,255,255,248,0,0,0,0,0,7,255,254,255,0,0,0,0,0,63,245,252,127,224,0,0,0,2,255,193,252,31,254,0,0,0,111,254,1,252,3,255,224,0,11,255,244,1,252,0,127,255,144,127,255,128,1,252,0,11,255,240,47,248,0,1,252,0,0,191,208,15,64,0,1,252,0,0,7,128,0,0,0,1,252,0,0,0,0, + // 0x84dd 蓝 + 221,132,33,34,50,37,2,254,0,0,191,0,0,63,128,0,0,0,0,191,0,0,63,128,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,0,0,191,0,0,63,128,0,0,0,0,191,0,0,63,128,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,31,192,7,240,0,0,0,3,240,31,192,11,240,0,0,0,3,240,31,192,15,255,255,253,0,3,240,31,192,31,255,255,253,0,3,240,31,192,47,255,255,253,0,3,240,31,192,63,64,128,0,0,3,240,31,192,191,11,224,0,0,3,240,31,193,253,7,244,0,0,3,240,31,195,252,2,252,0,0,3,240,31,194,244,0,254,0,0,3,240,31,192,96,0,127,0,0,2,160,31,192,0,0,63,64,0,0,0,5,64,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,254,171,254,175,250,175,208,0,0,252,2,244,3,224,15,208,0,0,252,2,244,3,224,15,208,0,0,252,2,244,3,224,15,208,0,0,252,2,244,3,224,15,208,0,0,252,2,244,3,224,15,208,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x86c7 蛇 + 199,134,34,35,59,37,1,253,0,1,64,0,0,3,240,0,0,0,7,208,0,0,3,240,0,0,0,7,208,0,0,3,240,0,0,0,7,208,0,0,3,240,0,0,0,7,208,0,0,3,240,0,0,0,7,208,1,255,255,255,255,240,0,7,208,1,255,255,255,255,240,31,255,255,245,255,255,255,255,240,31,255,255,245,248,0,0,3,240,31,255,255,245,248,0,0,3,240,31,3,193,245,248,0,0,3,240,31,3,193,245,248,0,0,3,240,31,3,193,245,255,208,0,3,240,31,3,193,244,11,208,0,0,0,31,3,193,244,11,208,0,4,0,31,3,193,244,11,208,0,61,0,31,3,193,244,11,208,2,255,0,31,3,193,244,11,208,47,255,64,31,255,255,244,11,210,255,248,0,31,255,255,244,11,255,255,64,0,31,255,255,244,11,255,228,0,0,31,11,208,0,11,254,0,0,0,10,11,208,0,11,224,0,0,0,0,11,209,240,11,208,0,0,0,0,11,210,244,11,208,0,0,0,0,11,208,248,11,208,0,0,0,0,11,208,252,11,208,0,2,128,0,11,209,252,11,208,0,3,240,0,31,255,254,11,208,0,3,240,127,255,255,255,11,224,0,3,240,127,255,255,191,11,240,0,11,240,127,250,64,47,7,255,255,255,224,36,0,0,46,3,255,255,255,192,0,0,0,0,0,191,255,254,0,0,0,0,0,0,0,0,0,0, + // 0x884c 行 + 76,136,34,36,68,37,1,252,0,0,180,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,7,252,2,255,255,255,255,192,0,31,240,2,255,255,255,255,192,0,127,208,2,255,255,255,255,192,2,255,64,0,85,85,85,85,64,11,253,0,0,0,0,0,0,0,63,244,0,0,0,0,0,0,0,127,208,14,0,0,0,0,0,0,47,0,63,192,0,0,0,0,0,8,0,127,128,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,3,253,5,85,85,85,85,80,0,11,248,31,255,255,255,255,240,0,47,240,31,255,255,255,255,240,0,127,208,31,255,255,255,255,240,1,255,208,0,0,0,47,192,0,11,255,208,0,0,0,47,192,0,47,255,208,0,0,0,47,192,0,255,239,208,0,0,0,47,192,0,127,143,208,0,0,0,47,192,0,30,15,208,0,0,0,47,192,0,4,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,1,85,127,192,0,0,15,208,0,2,255,255,128,0,0,15,208,0,1,255,255,64,0,0,15,208,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0, + // 0x88ab 被 + 171,136,35,35,59,37,1,253,0,31,128,0,0,3,244,0,0,0,31,192,0,0,3,244,0,0,0,31,192,0,0,3,244,0,0,0,31,192,0,0,3,244,0,0,0,31,192,0,0,3,244,0,0,0,31,192,0,0,3,244,0,0,0,47,192,3,255,255,255,255,244,63,255,255,195,255,255,255,255,240,63,255,255,211,255,255,255,255,240,63,255,255,195,244,3,244,11,224,0,0,47,131,244,3,244,15,208,0,0,127,3,244,3,244,15,192,0,0,254,3,244,3,244,31,192,0,1,252,3,244,3,244,27,64,0,3,248,147,244,3,244,0,0,0,15,240,251,255,255,255,255,128,0,47,227,243,255,255,255,255,192,0,191,251,211,255,255,255,255,128,1,255,255,131,255,224,0,63,64,7,255,255,3,251,240,0,191,0,47,255,239,195,243,244,0,254,0,255,239,207,227,241,252,1,252,0,127,95,195,231,240,253,3,252,0,60,31,194,135,240,191,11,244,0,16,31,192,11,224,63,223,224,0,0,31,192,15,208,31,255,192,0,0,31,192,15,192,15,255,64,0,0,31,192,31,192,3,255,0,0,0,31,192,47,128,15,255,128,0,0,31,192,63,64,127,255,240,0,0,31,192,191,2,255,239,254,0,0,31,192,254,47,254,7,255,224,0,31,194,252,191,244,0,255,244,0,31,193,244,63,128,0,31,224,0,31,192,32,8,0,0,1,192, + // 0x88c5 装 + 197,136,35,36,68,37,1,252,0,0,42,0,0,10,144,0,0,0,0,127,0,0,15,208,0,0,2,0,127,0,0,15,208,0,0,15,208,127,0,0,15,208,0,0,15,248,127,0,0,15,208,0,0,3,254,127,31,255,255,255,255,240,0,189,127,31,255,255,255,255,240,0,36,127,31,255,255,255,255,240,0,0,127,0,0,15,208,0,0,0,0,127,0,0,15,208,0,0,0,7,127,0,0,15,208,0,0,1,191,191,0,0,15,208,0,0,31,255,191,0,0,15,208,0,0,127,248,127,7,255,255,255,255,192,63,64,127,7,255,255,255,255,192,20,0,127,7,255,255,255,255,192,0,0,127,0,0,0,0,0,0,0,0,42,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,42,170,170,255,255,234,170,170,160,0,0,2,255,95,192,0,56,0,0,0,47,248,11,224,1,255,0,0,7,255,208,3,248,31,253,0,6,255,255,64,1,253,191,224,0,127,255,255,64,0,191,254,0,0,31,244,63,64,0,47,244,0,0,9,0,63,64,1,11,254,0,0,0,0,63,171,255,2,255,208,0,0,26,255,255,255,64,127,255,128,0,63,255,255,250,0,11,255,244,0,63,255,148,0,0,0,191,224,0,21,0,0,0,0,0,6,192,0,0,0,0,0,0,0,0,0, + // 0x8981 要 + 129,137,33,34,50,37,2,252,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,0,0,11,224,3,240,0,0,0,0,0,11,224,3,240,0,0,0,7,255,255,255,255,255,255,248,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,11,224,11,224,3,240,1,252,0,11,224,11,224,3,240,1,252,0,11,224,11,224,3,240,1,252,0,11,224,11,224,3,240,1,252,0,11,224,11,224,3,240,1,252,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,248,0,0,0,2,252,0,0,0,0,0,0,0,11,244,0,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,1,254,0,0,15,240,0,0,0,3,252,0,0,63,192,0,0,0,11,244,0,0,191,128,0,0,0,31,255,144,2,255,0,0,0,0,63,255,255,155,252,0,0,0,0,47,191,255,255,244,0,0,0,0,1,1,191,255,254,64,0,0,0,0,1,255,255,255,249,0,0,0,90,255,255,230,255,255,228,0,127,255,255,254,0,7,255,254,0,63,255,254,64,0,0,31,252,0,31,169,0,0,0,0,0,180,0,0,0,0,0,0,0,0,0,0, + // 0x89d2 角 + 210,137,32,36,32,37,1,252,0,0,7,228,0,0,0,0,0,0,15,244,0,0,0,0,0,0,31,255,255,253,0,0,0,0,63,255,255,255,128,0,0,0,255,255,255,255,64,0,0,1,254,0,0,255,0,0,0,7,252,0,2,253,0,0,0,15,244,0,3,248,0,0,0,63,224,0,15,240,0,0,1,255,255,255,255,255,255,253,7,255,255,255,255,255,255,253,47,255,255,255,255,255,255,253,15,239,208,0,63,0,0,253,3,79,208,0,63,0,0,253,0,15,208,0,63,0,0,253,0,15,208,0,63,0,0,253,0,15,255,255,255,255,255,253,0,15,255,255,255,255,255,253,0,15,255,255,255,255,255,253,0,15,208,0,63,0,0,253,0,15,208,0,63,0,0,253,0,15,192,0,63,0,0,253,0,15,192,0,63,0,0,253,0,31,192,0,127,0,0,253,0,47,255,255,255,255,255,253,0,63,255,255,255,255,255,253,0,63,255,255,255,255,255,253,0,127,0,0,0,0,0,253,0,254,0,0,0,0,0,253,2,253,0,0,0,0,0,253,7,248,0,0,0,0,0,253,31,240,0,0,0,20,2,253,127,208,0,0,0,127,255,252,63,128,0,0,0,63,255,248,13,0,0,0,0,47,255,144,0,0,0,0,0,0,0,0, + // 0x8ba1 计 + 161,139,34,35,59,37,2,253,0,0,0,0,0,63,64,0,0,0,176,0,0,0,63,64,0,0,2,253,0,0,0,63,64,0,0,2,255,64,0,0,63,64,0,0,0,127,208,0,0,63,64,0,0,0,31,244,0,0,63,64,0,0,0,7,252,0,0,63,64,0,0,0,1,240,0,0,63,64,0,0,0,0,128,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,255,255,192,170,170,191,234,170,128,255,255,193,255,255,255,255,255,208,255,255,193,255,255,255,255,255,208,85,127,193,255,255,255,255,255,208,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,64,0,63,64,0,0,0,47,194,208,0,63,64,0,0,0,47,207,224,0,63,64,0,0,0,47,255,240,0,63,64,0,0,0,47,255,128,0,63,64,0,0,0,63,253,0,0,63,64,0,0,0,191,240,0,0,63,64,0,0,1,255,128,0,0,63,64,0,0,0,189,0,0,0,63,64,0,0,0,52,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0, + // 0x8bae 议 + 174,139,34,35,59,37,2,252,1,192,0,0,7,192,0,0,0,11,240,0,0,15,224,0,80,0,7,248,0,252,7,240,0,254,0,2,253,0,252,3,248,0,253,0,0,255,0,253,1,252,1,252,0,0,63,192,253,0,254,2,252,0,0,31,0,190,0,191,2,252,0,0,8,0,127,0,127,3,248,0,0,0,0,63,0,52,3,244,0,0,0,0,63,64,0,7,240,0,85,85,0,47,192,0,11,240,0,255,255,0,31,192,0,15,224,0,255,255,0,15,208,0,31,208,0,255,255,0,11,240,0,47,192,0,0,127,0,7,240,0,63,128,0,0,127,0,3,248,0,127,64,0,0,127,0,2,252,0,255,0,0,0,127,0,0,254,1,253,0,0,0,127,0,0,255,3,252,0,0,0,127,0,0,127,135,248,0,0,0,127,0,0,63,223,240,0,0,0,127,0,0,15,255,208,0,0,0,127,0,0,11,255,192,0,0,0,127,0,0,3,255,0,0,0,0,127,7,64,3,255,64,0,0,0,127,47,192,15,255,208,0,0,0,127,255,192,63,255,244,0,0,0,191,254,0,255,223,254,0,0,0,255,244,7,255,2,255,208,0,1,255,192,63,252,0,191,248,0,3,254,2,255,224,0,47,255,144,1,248,15,255,64,0,7,255,224,0,144,11,252,0,0,0,191,128,0,0,3,208,0,0,0,11,0,0,0,0,0,0,0,0,0,0, + // 0x8bbe 设 + 190,139,34,35,59,37,1,252,0,48,0,0,0,0,0,0,0,0,252,0,0,63,255,255,192,0,1,255,64,0,63,255,255,192,0,0,127,208,0,63,255,255,192,0,0,15,244,0,63,0,15,192,0,0,3,252,0,63,0,15,192,0,0,0,244,0,127,0,15,192,0,0,0,80,0,190,0,15,192,0,0,0,0,0,253,0,15,192,0,0,0,0,3,252,0,15,192,0,21,85,0,15,248,0,15,255,240,127,255,192,191,240,0,11,255,240,127,255,192,255,192,0,2,255,240,127,255,192,126,0,0,0,0,0,0,31,192,36,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,63,255,255,255,255,0,0,31,192,63,255,255,255,255,0,0,31,192,63,255,255,255,254,0,0,31,192,7,240,0,1,253,0,0,31,192,3,248,0,3,252,0,0,31,192,1,252,0,11,244,0,0,31,192,0,255,0,15,224,0,0,31,192,64,63,192,63,192,0,0,31,195,192,31,240,255,64,0,0,31,223,208,11,255,254,0,0,0,47,255,208,2,255,248,0,0,0,47,255,64,1,255,240,0,0,0,63,252,0,11,255,254,0,0,0,191,224,1,191,255,255,224,0,0,255,128,111,255,208,191,255,144,0,189,1,255,253,0,31,255,240,0,52,0,255,144,0,1,191,208,0,0,0,100,0,0,0,6,192,0,0,0,0,0,0,0,0,0, + // 0x8bd5 试 + 213,139,34,35,59,37,2,253,0,0,0,0,0,6,160,0,0,1,208,0,0,0,7,241,240,0,7,244,0,0,0,7,243,248,0,3,254,0,0,0,7,240,254,0,0,255,128,0,0,7,240,127,0,0,63,208,0,0,7,240,47,128,0,15,240,0,0,7,240,14,0,0,3,193,85,85,87,245,85,64,0,1,3,255,255,255,255,255,208,0,0,3,255,255,255,255,255,208,0,0,3,255,255,255,255,255,208,85,85,0,0,0,3,244,0,0,255,255,0,0,0,3,244,0,0,255,255,0,0,0,3,244,0,0,255,255,0,0,0,3,244,0,0,0,63,0,0,0,3,248,0,0,0,63,0,255,255,243,248,0,0,0,63,0,255,255,242,248,0,0,0,63,0,255,255,242,252,0,0,0,63,0,2,252,2,252,0,0,0,63,0,1,248,1,252,0,0,0,63,0,1,248,1,252,0,0,0,63,0,1,248,0,253,0,0,0,63,0,1,248,0,253,0,0,0,63,0,1,248,0,254,0,0,0,63,1,1,248,0,191,3,64,0,63,31,1,248,104,127,3,224,0,63,191,65,255,252,127,67,224,0,127,255,91,255,252,63,135,208,0,191,250,255,255,228,47,219,192,2,255,208,255,249,0,31,255,192,2,255,0,254,0,0,15,255,128,0,248,0,64,0,0,7,255,0,0,144,0,0,0,0,1,254,0,0,0,0,0,0,0,0,20,0, + // 0x8bef 误 + 239,139,35,35,59,37,1,252,0,80,0,0,0,0,0,0,0,1,248,0,7,255,255,255,255,0,3,254,0,7,255,255,255,255,0,0,255,192,7,255,255,255,255,0,0,63,240,7,224,0,0,63,0,0,15,248,7,224,0,0,63,0,0,3,224,7,224,0,0,63,0,0,0,128,7,224,0,0,63,0,0,0,0,7,255,255,255,255,0,0,0,0,7,255,255,255,255,0,21,85,64,7,255,255,255,255,0,127,255,192,0,0,0,0,0,0,127,255,192,0,0,0,0,0,0,127,255,192,0,0,0,0,0,0,0,31,192,31,255,255,255,255,192,0,31,192,31,255,255,255,255,192,0,31,192,31,255,255,255,255,192,0,31,192,0,0,31,192,0,0,0,31,192,0,0,47,128,0,0,0,31,192,0,0,47,128,0,0,0,31,192,0,0,47,128,0,0,0,31,192,127,255,255,255,255,248,0,31,192,127,255,255,255,255,248,0,31,192,127,255,255,255,255,248,0,31,192,64,0,255,240,0,0,0,31,199,192,1,255,244,0,0,0,31,239,192,3,254,252,0,0,0,31,255,192,15,244,255,64,0,0,63,254,0,63,240,127,208,0,0,191,244,1,255,192,31,252,0,0,127,192,111,255,0,7,255,208,0,62,0,255,248,0,1,255,244,0,20,0,127,192,0,0,47,224,0,0,0,56,0,0,0,2,192,0,0,0,0,0,0,0,0,0, + // 0x8bf7 请 + 247,139,35,35,59,37,1,253,0,0,0,0,0,47,128,0,0,0,160,0,0,0,47,192,0,0,2,248,0,0,0,47,192,0,0,3,254,0,63,255,255,255,255,208,0,255,192,63,255,255,255,255,208,0,47,224,26,170,191,234,170,128,0,15,244,0,0,47,192,0,0,0,3,224,5,85,127,213,85,0,0,0,128,15,255,255,255,255,0,0,0,0,15,255,255,255,255,0,0,0,0,0,0,47,192,0,0,21,85,64,0,0,47,192,0,0,127,255,192,255,255,255,255,255,244,127,255,192,255,255,255,255,255,244,127,255,192,170,170,170,170,170,160,0,31,192,0,0,0,0,0,0,0,31,192,6,170,170,170,169,0,0,31,192,7,255,255,255,254,0,0,31,192,7,255,255,255,254,0,0,31,192,7,224,0,0,190,0,0,31,192,7,224,0,0,190,0,0,31,192,7,245,85,85,190,0,0,31,192,7,255,255,255,254,0,0,31,192,7,255,255,255,254,0,0,31,192,7,224,0,0,190,0,0,31,194,199,224,0,0,190,0,0,31,207,199,224,0,0,190,0,0,31,255,215,255,255,255,254,0,0,31,255,135,255,255,255,254,0,0,47,253,7,245,85,85,254,0,0,63,240,7,224,0,0,190,0,0,255,192,7,224,0,0,190,0,0,126,0,7,224,0,255,253,0,0,56,0,7,224,0,191,252,0,0,0,0,7,224,0,127,224,0, + // 0x8bfb 读 + 251,139,34,36,68,37,1,252,0,0,0,0,0,47,128,0,0,0,224,0,0,0,63,128,0,0,3,252,0,0,0,63,128,0,0,2,255,64,15,255,255,255,255,0,0,191,208,15,255,255,255,255,0,0,31,244,15,255,255,255,255,0,0,7,244,0,0,63,128,0,0,0,2,208,0,0,63,128,0,0,0,0,64,0,0,63,128,0,0,0,0,0,127,255,255,255,255,208,0,0,0,127,255,255,255,255,208,21,85,0,127,255,255,255,255,192,127,255,128,0,0,0,0,15,192,127,255,128,0,144,6,144,47,128,127,255,128,2,253,15,208,63,0,0,31,128,0,191,143,208,63,0,0,31,128,4,31,239,208,45,0,0,31,128,62,3,223,208,0,0,0,31,128,63,208,79,208,0,0,0,31,128,11,248,15,208,0,0,0,31,128,1,253,15,208,0,0,0,31,128,0,56,15,192,0,0,0,31,129,255,255,255,255,255,240,0,31,129,255,255,255,255,255,240,0,31,129,255,255,255,255,255,240,0,31,139,0,0,255,0,0,0,0,31,239,64,1,254,28,0,0,0,31,255,128,7,252,127,64,0,0,31,254,0,31,244,127,224,0,0,47,248,0,191,208,15,252,0,0,63,224,3,255,128,2,255,0,0,191,64,127,253,0,0,127,208,0,189,2,255,240,0,0,31,240,0,52,0,255,64,0,0,7,240,0,0,0,120,0,0,0,1,192,0,0,0,0,0,0,0,0,0, + // 0x8c03 调 + 3,140,33,35,59,37,1,252,0,144,0,0,0,0,0,0,0,2,244,0,63,255,255,255,255,192,3,254,0,63,255,255,255,255,192,0,255,128,63,255,255,255,255,192,0,63,224,63,0,0,0,15,192,0,15,244,63,0,31,64,15,192,0,3,224,63,0,31,64,15,192,0,0,128,63,6,175,170,15,192,0,0,0,63,15,255,255,15,192,0,0,0,63,15,255,255,15,192,21,85,0,63,0,31,64,15,192,127,255,192,63,0,31,64,15,192,127,255,192,63,0,31,64,15,192,127,255,192,63,26,175,170,143,192,0,47,192,63,47,255,255,207,192,0,47,192,63,47,255,255,207,192,0,47,192,63,0,0,0,15,192,0,47,192,63,0,0,0,15,192,0,47,192,63,0,0,0,15,192,0,47,192,63,15,255,255,15,192,0,47,192,63,15,255,255,15,192,0,47,192,62,15,234,191,15,192,0,47,192,126,15,128,63,15,192,0,47,192,126,15,128,63,15,192,0,47,197,189,15,128,63,15,192,0,47,239,252,15,234,191,15,192,0,47,255,252,15,255,255,15,192,0,47,255,248,15,255,255,15,192,0,63,250,244,15,128,0,15,192,0,127,211,240,10,64,0,15,192,1,255,71,240,0,0,0,15,192,0,252,15,208,0,0,31,255,192,0,48,15,192,0,0,15,255,128,0,0,2,64,0,0,11,253,0,0,0,0,0,0,0,0,0,0, + // 0x8d25 败 + 37,141,34,35,59,37,2,253,0,0,0,0,0,16,0,0,0,0,0,0,0,0,127,0,0,0,47,255,255,252,0,190,0,0,0,47,255,255,252,0,253,0,0,0,47,255,255,252,0,252,0,0,0,47,0,0,252,1,252,0,0,0,47,0,0,252,3,248,0,0,0,47,1,64,252,3,255,255,255,192,47,7,224,252,7,255,255,255,192,47,7,224,252,15,255,255,255,192,47,7,224,252,15,192,1,248,0,47,7,224,252,47,192,2,244,0,47,7,224,252,63,64,2,240,0,47,7,224,252,191,64,3,240,0,47,7,224,252,255,128,3,240,0,47,7,224,254,255,192,3,224,0,47,7,224,253,255,208,7,224,0,47,7,224,252,183,224,11,208,0,47,7,208,252,3,240,15,192,0,47,11,208,252,2,248,15,192,0,47,11,208,252,0,252,47,64,0,47,11,208,252,0,254,63,0,0,47,15,192,252,0,127,127,0,0,47,15,192,252,0,63,253,0,0,47,15,192,248,0,15,252,0,0,0,47,128,0,0,11,244,0,0,0,63,14,0,0,11,248,0,0,0,127,63,64,0,31,254,0,0,0,253,31,192,0,63,255,128,0,2,252,11,240,0,255,63,224,0,11,240,3,248,7,252,15,248,0,47,208,1,252,47,240,3,255,64,255,128,0,253,255,192,0,255,208,189,0,0,48,62,0,0,47,128,36,0,0,0,20,0,0,2,0, + // 0x8d2a 贪 + 42,141,34,36,68,37,2,252,0,0,0,0,244,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,47,254,0,0,0,0,0,0,2,255,255,224,0,0,0,0,0,47,254,31,254,64,0,0,0,7,255,241,2,255,248,0,0,1,191,255,75,192,47,255,224,0,111,255,244,15,244,2,255,255,208,255,255,64,3,253,0,31,255,192,127,224,0,0,252,0,1,191,64,41,63,255,255,255,255,244,1,0,0,63,255,255,255,255,254,0,0,0,63,255,255,255,255,252,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,254,0,0,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,0,0,0,0,63,64,0,0,127,0,7,240,0,63,64,0,0,127,0,7,240,0,63,64,0,0,127,0,7,240,0,63,64,0,0,127,0,7,240,0,63,64,0,0,127,0,11,240,0,63,64,0,0,127,0,15,240,0,63,64,0,0,127,0,63,210,0,63,64,0,0,0,0,255,143,248,0,0,0,0,0,11,255,31,255,224,0,0,0,1,191,248,2,255,254,64,0,0,127,255,208,0,11,255,244,0,47,255,253,0,0,0,127,254,0,15,255,128,0,0,0,2,252,0,3,228,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0, + // 0x8d77 起 + 119,141,35,36,68,37,1,252,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,3,255,255,255,64,0,1,252,0,3,255,255,255,64,15,255,255,255,131,255,255,255,64,15,255,255,255,128,0,0,63,64,15,255,255,255,128,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,64,63,255,255,255,224,0,0,63,64,63,255,255,255,227,255,255,255,64,63,255,255,255,227,255,255,255,64,42,170,255,170,147,255,255,255,64,0,0,190,0,3,244,0,63,64,0,0,190,0,3,244,0,0,0,1,64,190,0,3,244,0,0,0,11,224,190,0,3,244,0,0,0,11,224,190,0,3,244,0,0,0,11,224,191,255,195,244,0,0,0,11,224,191,255,195,244,0,2,208,11,208,191,255,195,244,0,2,244,15,240,190,0,3,244,0,3,244,15,244,190,0,3,248,0,7,240,15,252,190,0,2,255,255,255,240,15,254,190,0,1,255,255,255,208,15,255,254,0,0,127,255,255,64,31,239,254,0,0,0,0,0,0,47,143,255,0,0,0,0,0,0,63,67,255,250,85,85,85,85,84,63,0,255,255,255,255,255,255,244,191,0,31,255,255,255,255,255,240,254,0,0,111,255,255,255,255,224,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x8d85 超 + 133,141,35,35,59,37,1,253,0,2,248,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,2,248,0,47,255,255,255,208,0,2,248,0,47,255,255,255,208,31,255,255,255,47,255,255,255,208,31,255,255,255,0,31,192,15,192,31,255,255,255,0,47,128,15,192,0,2,248,0,0,63,64,15,192,0,2,248,0,0,127,0,31,192,0,2,248,0,0,254,0,31,192,0,2,248,0,1,252,0,63,128,0,2,248,0,3,248,63,255,64,63,255,255,255,223,240,63,255,0,63,255,255,255,255,192,47,248,0,63,255,255,255,239,0,0,0,0,0,0,252,0,4,0,0,0,0,0,0,252,0,11,255,255,255,64,11,144,252,0,11,255,255,255,128,11,208,252,0,11,255,255,255,128,11,208,252,0,11,224,0,63,128,11,208,255,255,75,224,0,63,128,11,208,255,255,75,224,0,63,128,15,208,255,255,75,224,0,63,128,15,224,252,0,11,224,0,63,128,15,240,252,0,11,224,0,63,128,15,248,252,0,11,255,255,255,128,15,253,252,0,11,255,255,255,128,31,255,252,0,11,255,255,255,64,31,191,252,0,0,0,0,0,0,47,95,253,0,0,0,0,0,0,63,7,255,250,85,85,85,85,84,127,1,255,255,255,255,255,255,244,190,0,47,255,255,255,255,255,240,189,0,0,111,255,255,255,255,224,8,0,0,0,0,0,0,0,0, + // 0x8ddd 距 + 221,141,35,33,41,37,1,253,11,255,255,248,63,255,255,255,240,11,255,255,248,63,255,255,255,240,11,255,255,248,63,255,255,255,240,11,208,1,248,63,64,0,0,0,11,208,1,248,63,64,0,0,0,11,208,1,248,63,64,0,0,0,11,208,1,248,63,64,0,0,0,11,208,1,248,63,64,0,0,0,11,255,255,248,63,128,0,0,0,11,255,255,248,63,255,255,255,128,11,255,255,248,63,255,255,255,128,0,2,244,0,63,255,255,255,128,0,2,244,0,63,64,0,63,128,0,2,244,0,63,64,0,63,128,0,2,244,0,63,64,0,63,128,15,194,244,0,63,64,0,63,128,15,194,244,0,63,64,0,63,128,15,194,255,253,63,64,0,63,128,15,194,255,253,63,128,0,63,128,15,194,255,253,63,255,255,255,128,15,194,244,0,63,255,255,255,128,15,194,244,0,63,255,255,255,128,15,194,244,0,63,64,0,0,0,15,194,244,0,63,64,0,0,0,15,194,244,5,63,64,0,0,0,15,194,250,254,63,64,0,0,0,15,215,255,255,63,64,0,0,0,31,255,255,254,63,128,0,0,0,191,255,254,64,63,255,255,255,248,127,254,64,0,63,255,255,255,248,121,64,0,0,63,255,255,255,248,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0, + // 0x8f6c 转 + 108,143,35,36,68,37,1,252,0,11,144,0,0,2,248,0,0,0,15,208,0,0,3,248,0,0,0,15,192,0,0,3,244,0,0,0,31,192,0,0,7,240,0,0,127,255,255,248,255,255,255,255,192,127,255,255,248,255,255,255,255,192,127,255,255,248,255,255,255,255,192,0,127,0,0,0,31,192,0,0,0,189,0,0,0,47,192,0,0,0,252,0,0,0,63,128,0,0,0,248,252,0,0,63,64,0,0,2,244,252,3,255,255,255,255,244,3,240,252,3,255,255,255,255,244,7,224,252,3,255,255,255,255,244,11,208,252,0,1,253,0,0,0,15,192,252,0,2,252,0,0,0,47,255,255,244,3,252,0,0,0,47,255,255,244,3,248,0,0,0,31,255,255,244,7,244,0,4,0,4,1,252,0,11,255,255,255,128,0,0,252,0,15,255,255,255,192,0,0,252,0,31,255,255,255,0,0,0,252,0,0,0,2,253,0,0,0,253,110,0,0,7,248,0,0,107,255,254,0,0,15,240,0,127,255,255,254,0,208,63,192,0,127,255,254,80,3,248,191,64,0,63,250,252,0,7,255,254,0,0,20,0,252,0,0,255,252,0,0,0,0,252,0,0,31,253,0,0,0,0,252,0,0,3,255,128,0,0,0,252,0,0,0,191,240,0,0,0,252,0,0,0,31,248,0,0,0,252,0,0,0,3,240,0,0,0,252,0,0,0,0,192,0,0,0,0,0,0,0,0,0,0, + // 0x8f6f 软 + 111,143,35,35,59,37,1,253,0,1,144,0,0,169,0,0,0,0,2,252,0,0,190,0,0,0,0,3,248,0,0,253,0,0,0,0,3,244,0,0,253,0,0,0,0,11,244,0,0,252,0,0,0,63,255,255,255,129,252,0,0,0,63,255,255,255,130,255,255,255,244,63,255,255,255,131,255,255,255,240,0,47,192,0,3,255,255,255,240,0,63,64,0,11,240,0,7,240,0,127,21,0,15,224,0,11,224,0,190,63,0,31,192,0,15,208,0,253,63,0,63,193,80,15,192,1,252,63,0,127,67,244,15,192,3,244,63,0,255,3,244,31,128,7,240,63,0,125,3,244,47,64,31,255,255,255,72,3,244,1,0,31,255,255,255,64,3,244,0,0,15,255,255,255,64,3,248,0,0,5,0,63,64,0,3,252,0,0,0,0,63,0,0,7,252,0,0,0,0,63,0,0,11,253,0,0,0,0,63,0,0,15,254,0,0,0,0,63,175,192,15,255,0,0,1,107,255,255,192,47,255,64,0,127,255,255,255,192,63,159,192,0,127,255,255,229,0,191,15,208,0,63,254,191,0,0,255,11,240,0,41,0,63,0,3,252,3,252,0,0,0,63,0,11,248,2,254,0,0,0,63,0,47,240,0,255,128,0,0,63,0,191,192,0,63,240,0,0,63,2,255,64,0,31,244,0,0,63,0,189,0,0,7,208,0,0,47,0,36,0,0,0,128, + // 0x8f74 轴 + 116,143,34,36,68,37,1,252,0,14,128,0,0,3,244,0,0,0,15,208,0,0,3,244,0,0,0,31,192,0,0,3,244,0,0,0,31,192,0,0,3,244,0,0,63,255,255,244,0,3,244,0,0,63,255,255,244,0,3,244,0,0,63,255,255,244,0,3,244,0,0,0,191,0,0,0,3,244,0,0,0,189,0,0,255,255,255,255,208,0,252,0,0,255,255,255,255,208,0,252,188,0,255,255,255,255,208,1,248,252,0,252,3,244,15,208,3,244,252,0,252,3,244,15,208,3,240,252,0,252,3,244,15,208,7,224,252,0,252,3,244,15,208,15,192,252,0,252,3,244,15,208,47,255,255,244,252,3,244,15,208,47,255,255,244,252,3,244,15,208,15,255,255,244,252,3,244,15,208,4,0,253,0,255,255,255,255,208,0,0,252,0,255,255,255,255,208,0,0,252,0,255,255,255,255,208,0,0,252,0,252,3,244,15,208,0,0,253,104,252,3,244,15,208,0,91,255,248,252,3,244,15,208,127,255,255,252,252,3,244,15,208,63,255,255,144,252,3,244,15,208,63,254,252,0,252,3,244,15,208,41,64,252,0,252,3,244,15,208,0,0,252,0,252,3,244,15,208,0,0,252,0,255,255,255,255,208,0,0,252,0,255,255,255,255,208,0,0,252,0,255,255,255,255,208,0,0,252,0,252,0,0,15,208,0,0,188,0,252,0,0,11,208,0,0,0,0,0,0,0,0,0, + // 0x8f7d 载 + 125,143,34,35,59,37,2,253,0,0,126,0,0,254,0,0,0,0,0,127,0,0,190,11,64,0,0,0,127,0,0,190,47,208,0,15,255,255,255,240,190,15,244,0,15,255,255,255,240,190,3,252,0,10,170,255,170,160,190,0,255,0,0,0,127,0,0,190,0,56,0,0,0,127,0,0,190,0,0,0,170,170,255,170,170,255,170,170,128,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,7,144,0,0,127,0,0,0,0,11,240,0,0,127,0,0,0,0,15,224,0,0,127,0,96,0,0,15,208,0,0,63,0,253,0,127,255,255,255,253,63,0,252,0,127,255,255,255,253,63,1,252,0,106,255,170,170,169,63,67,244,0,0,253,5,64,0,63,67,240,0,2,248,15,192,0,47,139,240,0,7,240,15,192,0,47,207,208,0,31,255,255,255,248,31,239,192,0,31,255,255,255,248,31,255,64,0,15,255,255,255,248,15,255,0,0,4,0,15,192,0,15,253,0,0,0,0,15,192,0,11,252,0,0,0,0,15,192,4,7,244,3,64,0,0,15,255,253,15,244,3,208,107,255,255,255,253,63,252,7,208,127,255,255,255,233,255,253,11,208,127,255,255,192,3,254,255,79,192,21,0,15,192,31,248,63,255,192,0,0,15,192,63,224,31,255,64,0,0,15,192,15,128,7,254,0,0,0,15,192,5,0,0,0,0, + // 0x8f91 辑 + 145,143,35,35,59,37,1,253,0,10,64,0,0,0,0,0,0,0,15,208,0,42,170,170,169,0,0,31,192,0,127,255,255,255,0,0,31,192,0,127,255,255,255,0,0,47,192,0,126,0,0,127,0,63,255,255,244,126,0,0,127,0,63,255,255,244,126,0,0,127,0,63,255,255,244,127,255,255,255,0,0,190,0,0,127,255,255,255,0,0,252,0,0,42,170,170,170,0,0,252,168,0,0,0,0,0,0,2,248,252,7,255,255,255,255,240,3,240,252,7,255,255,255,255,240,7,240,252,7,255,255,255,255,240,11,224,252,0,63,0,0,190,0,15,192,252,0,63,0,0,190,0,47,255,255,240,63,0,0,190,0,47,255,255,240,63,255,255,254,0,31,255,255,240,63,255,255,254,0,4,0,252,0,63,170,170,254,0,0,0,252,0,63,0,0,190,0,0,0,252,0,63,0,0,190,0,0,0,252,0,63,85,85,190,0,0,0,254,184,63,255,255,254,0,0,107,255,248,63,255,255,254,0,127,255,255,248,63,0,0,190,0,127,255,255,144,63,0,0,190,0,63,255,252,0,63,0,0,191,244,62,64,252,0,127,90,191,255,244,0,0,252,15,255,255,255,255,244,0,0,252,15,255,255,255,254,0,0,0,252,15,250,149,0,190,0,0,0,252,0,0,0,0,190,0,0,0,252,0,0,0,0,190,0,0,0,252,0,0,0,0,190,0, + // 0x8f93 输 + 147,143,35,35,59,37,1,253,0,37,0,0,0,3,128,0,0,0,63,0,0,0,15,240,0,0,0,127,0,0,0,63,224,0,0,0,126,0,0,0,255,244,0,0,0,190,0,0,3,255,254,0,0,127,255,255,128,31,248,191,192,0,127,255,255,128,191,224,47,248,0,127,255,255,135,255,128,7,255,128,1,248,0,127,253,0,1,255,244,2,244,0,255,255,255,255,255,244,3,240,0,63,255,255,255,250,224,3,243,240,4,191,255,255,244,64,7,211,240,0,0,0,0,0,0,11,195,240,0,0,0,0,1,64,15,195,240,10,170,170,0,7,192,31,67,240,15,255,255,15,71,192,63,255,255,143,255,255,15,135,192,63,255,255,143,192,47,15,135,192,47,255,255,143,192,47,15,135,192,20,3,240,15,234,191,15,135,192,0,3,240,15,255,255,15,135,192,0,3,240,15,255,255,15,135,192,0,3,240,15,192,47,15,135,192,0,3,255,143,192,47,15,135,192,6,255,255,143,234,191,15,135,192,127,255,255,79,255,255,15,135,192,63,255,240,15,255,255,15,135,192,63,147,240,15,192,47,15,135,192,0,3,240,15,192,47,15,71,192,0,3,240,15,192,47,0,7,192,0,3,240,15,192,47,0,7,192,0,3,240,15,192,47,0,11,192,0,3,240,15,195,255,7,255,192,0,3,240,15,195,254,3,255,192,0,3,240,11,193,164,2,169,0, + // 0x8fb9 边 + 185,143,35,36,68,37,1,252,0,64,0,0,1,84,0,0,0,2,224,0,0,3,248,0,0,0,11,248,0,0,3,248,0,0,0,3,254,0,0,3,248,0,0,0,0,255,128,0,3,248,0,0,0,0,63,208,0,3,248,0,0,0,0,31,240,85,87,249,85,85,64,0,11,209,255,255,255,255,255,192,0,2,1,255,255,255,255,255,192,0,0,1,255,255,255,255,255,192,0,0,0,0,7,240,0,47,192,0,0,0,0,11,240,0,47,192,21,85,0,0,11,240,0,47,192,127,255,128,0,15,224,0,47,192,127,255,128,0,15,224,0,47,192,127,255,128,0,31,208,0,47,192,0,63,128,0,47,192,0,63,128,0,63,128,0,63,192,0,63,128,0,63,128,0,127,64,0,63,128,0,63,128,0,191,0,0,63,128,0,63,128,0,255,0,0,63,64,0,63,128,3,252,0,0,127,64,0,63,128,11,248,0,0,127,0,0,63,128,31,240,0,0,191,0,0,63,128,191,208,0,1,255,0,0,63,130,255,64,31,255,254,0,0,63,131,254,0,15,255,252,0,0,191,192,244,0,11,255,240,0,3,255,244,0,0,1,85,0,0,15,255,254,0,0,0,0,0,0,63,241,255,249,0,0,0,85,168,255,192,47,255,255,255,255,255,244,127,0,7,255,255,255,255,255,240,45,0,0,111,255,255,255,255,240,8,0,0,0,21,85,85,64,0,0,0,0,0,0,0,0,0,0, + // 0x8fc1 迁 + 193,143,35,35,59,37,1,253,0,0,0,0,0,0,0,16,0,1,244,0,0,0,0,27,248,0,3,255,0,0,1,111,255,254,0,1,255,208,90,255,255,255,249,0,0,47,244,255,255,255,249,0,0,0,11,244,255,255,255,0,0,0,0,1,208,101,0,191,0,0,0,0,0,0,0,0,191,0,0,0,3,64,0,0,0,191,0,0,0,15,224,0,0,0,191,0,0,0,31,253,0,0,0,191,0,0,0,3,255,128,0,0,191,0,0,0,0,127,224,0,0,191,0,0,0,0,15,199,255,255,255,255,255,240,0,2,7,255,255,255,255,255,240,0,0,7,255,255,255,255,255,240,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,63,255,192,0,0,191,0,0,0,63,255,192,0,0,191,0,0,0,63,255,192,0,0,191,0,0,0,0,15,192,0,0,191,0,0,0,0,15,192,0,0,191,0,0,0,0,15,192,0,0,191,0,0,0,0,15,192,0,0,191,0,0,0,0,15,192,0,0,191,0,0,0,0,15,192,0,0,191,0,0,0,0,47,224,0,0,191,0,0,0,0,255,248,0,0,191,0,0,0,11,255,255,64,0,21,0,0,0,63,248,191,250,80,0,0,21,84,127,224,47,255,255,255,255,255,244,63,64,2,255,255,255,255,255,240,28,0,0,27,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x8fd0 运 + 208,143,35,35,59,37,1,253,0,64,0,0,0,0,0,0,0,1,244,0,0,0,0,0,0,0,7,255,0,47,255,255,255,255,0,1,255,208,47,255,255,255,255,0,0,47,244,47,255,255,255,255,0,0,11,240,0,0,0,0,0,0,0,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,64,0,0,0,0,0,0,0,47,244,0,0,0,0,0,0,0,31,254,0,0,0,0,0,0,0,2,255,195,255,255,255,255,255,248,0,127,195,255,255,255,255,255,248,0,15,67,255,255,255,255,255,248,0,1,0,0,31,224,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,63,192,7,0,0,0,0,0,0,63,128,63,128,0,63,255,128,0,191,0,31,208,0,63,255,128,0,254,0,11,240,0,63,255,128,1,253,0,3,252,0,0,47,128,2,252,0,1,254,0,0,47,128,3,244,0,85,255,0,0,47,129,175,255,255,255,255,192,0,47,130,255,255,255,255,255,208,0,47,130,255,255,255,234,95,240,0,47,193,254,149,0,0,7,240,0,127,208,0,0,0,0,3,128,2,255,244,0,0,0,0,0,0,11,255,255,0,0,0,0,0,0,127,244,255,249,64,0,0,5,80,127,208,63,255,255,255,255,255,244,63,0,7,255,255,255,255,255,240,28,0,0,43,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x8fd1 近 + 209,143,35,35,59,37,1,253,0,0,0,0,0,0,0,96,0,3,64,0,0,0,0,111,252,0,15,224,0,4,1,175,255,255,0,31,252,0,15,255,255,255,244,0,7,255,0,15,255,255,233,0,0,0,255,192,15,255,148,0,0,0,0,63,224,15,224,0,0,0,0,0,15,208,15,224,0,0,0,0,0,3,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,255,255,255,255,240,0,0,0,15,255,255,255,255,240,0,0,0,15,255,255,255,255,240,0,0,0,15,224,0,254,0,0,63,255,192,15,208,0,254,0,0,63,255,192,15,192,0,254,0,0,63,255,192,31,192,0,254,0,0,0,31,192,47,192,0,254,0,0,0,31,192,63,128,0,254,0,0,0,31,192,63,64,0,254,0,0,0,31,192,191,0,0,254,0,0,0,31,192,254,0,0,254,0,0,0,31,194,253,0,0,254,0,0,0,31,195,252,0,0,254,0,0,0,31,207,244,0,0,254,0,0,0,31,199,224,0,0,254,0,0,0,63,225,192,0,0,254,0,0,1,255,248,0,0,0,254,0,0,11,255,255,64,0,0,0,0,0,127,248,191,254,85,85,85,85,100,127,208,47,255,255,255,255,255,244,63,64,2,255,255,255,255,255,240,28,0,0,27,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x8fd4 返 + 212,143,35,34,50,37,1,253,3,64,0,0,0,0,0,0,0,31,208,0,63,255,255,255,255,192,31,248,0,63,255,255,255,255,192,7,254,0,63,255,255,255,255,192,1,255,128,63,64,0,0,0,0,0,127,208,63,64,0,0,0,0,0,31,192,63,64,0,0,0,0,0,11,0,63,64,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,255,255,255,254,0,0,0,0,63,255,255,255,255,0,0,0,0,63,255,255,255,254,0,0,0,0,63,127,64,1,252,0,0,0,0,63,111,192,3,252,0,63,255,128,63,79,208,7,244,0,63,255,128,63,11,240,15,240,0,63,255,128,127,7,244,31,208,0,0,47,128,127,2,252,63,192,0,0,47,128,190,0,255,255,64,0,0,47,128,253,0,127,254,0,0,0,47,129,252,0,47,252,0,0,0,47,130,252,0,63,252,0,0,0,47,131,248,1,255,255,64,0,0,47,135,240,11,255,255,240,0,0,47,143,224,191,248,47,255,64,0,47,159,195,255,208,7,255,240,0,127,211,129,254,0,0,191,224,2,255,244,0,224,0,0,11,192,11,255,255,64,0,0,0,0,0,127,244,255,250,84,0,5,85,84,127,208,63,255,255,255,255,255,240,63,0,7,255,255,255,255,255,240,28,0,0,27,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x8fd8 还 + 216,143,35,36,68,37,1,252,0,64,0,0,0,0,0,0,0,2,224,0,0,0,0,0,0,0,11,248,1,85,85,85,85,85,64,3,254,3,255,255,255,255,255,208,0,255,131,255,255,255,255,255,208,0,63,211,255,255,255,255,255,208,0,31,240,0,0,47,192,0,0,0,11,208,0,0,127,128,0,0,0,2,0,0,0,255,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,15,253,0,0,0,21,85,0,0,63,253,28,0,0,127,255,128,0,191,253,191,0,0,127,255,128,2,255,253,191,192,0,127,255,128,11,253,253,47,240,0,0,63,128,47,244,253,11,252,0,0,63,128,191,208,253,3,255,0,0,63,135,255,128,253,0,255,192,0,63,159,253,0,253,0,63,224,0,63,143,244,0,253,0,15,224,0,63,131,192,0,253,0,7,64,0,63,128,0,0,253,0,0,0,0,63,128,0,0,253,0,0,0,0,63,128,0,0,253,0,0,0,0,63,128,0,0,253,0,0,0,0,63,128,0,0,253,0,0,0,0,191,192,0,0,253,0,0,0,3,255,244,0,0,253,0,0,0,15,255,254,0,0,0,0,0,0,63,241,255,249,0,0,0,85,168,255,192,47,255,255,255,255,255,248,127,0,7,255,255,255,255,255,240,45,0,0,111,255,255,255,255,240,8,0,0,0,21,85,85,64,0,0,0,0,0,0,0,0,0,0, + // 0x8fdb 进 + 219,143,35,34,50,37,1,253,2,192,0,0,127,0,63,128,0,11,240,0,0,127,0,63,128,0,7,252,0,0,127,0,63,128,0,1,255,0,0,127,0,63,128,0,0,127,192,0,127,0,63,128,0,0,47,224,85,191,85,127,149,64,0,11,209,255,255,255,255,255,192,0,3,1,255,255,255,255,255,192,0,0,1,255,255,255,255,255,192,0,0,0,0,127,0,63,128,0,0,0,0,0,127,0,63,128,0,0,0,0,0,127,0,63,128,0,0,0,0,0,127,0,63,128,0,63,255,192,0,127,0,63,128,0,63,255,192,0,127,0,63,128,0,63,255,194,255,255,255,255,255,240,0,31,194,255,255,255,255,255,240,0,31,194,255,255,255,255,255,240,0,31,192,85,254,85,127,149,80,0,31,192,1,252,0,63,128,0,0,31,192,2,252,0,63,128,0,0,31,192,3,248,0,63,128,0,0,31,192,11,244,0,63,128,0,0,31,192,31,240,0,63,128,0,0,31,192,63,208,0,63,128,0,0,31,192,255,128,0,63,128,0,0,63,208,63,0,0,63,128,0,2,255,248,12,0,0,42,64,0,11,255,255,64,0,0,0,0,0,47,240,127,254,84,0,85,106,244,127,192,15,255,255,255,255,255,240,63,0,1,255,255,255,255,255,240,13,0,0,6,191,255,255,254,144,0,0,0,0,0,0,0,0,0, + // 0x8fde 连 + 222,143,35,36,68,37,1,252,0,64,0,0,14,0,0,0,0,2,224,0,0,31,208,0,0,0,11,244,0,0,47,192,0,0,0,3,253,0,0,63,192,0,0,0,0,255,3,255,255,255,255,255,192,0,127,195,255,255,255,255,255,192,0,47,211,255,255,255,255,255,192,0,15,208,2,252,0,0,0,0,0,7,0,3,248,5,64,0,0,0,0,0,7,244,15,208,0,0,0,0,0,15,240,15,208,0,0,0,0,0,31,208,15,208,0,0,0,0,0,63,192,15,208,0,0,127,255,128,255,255,255,255,255,0,127,255,128,255,255,255,255,255,0,127,255,128,127,255,255,255,255,0,0,47,128,36,0,31,208,0,0,0,47,128,0,0,15,208,0,0,0,47,128,0,0,15,208,0,0,0,47,128,0,0,15,208,0,0,0,47,128,0,0,31,224,0,0,0,47,131,255,255,255,255,255,224,0,47,131,255,255,255,255,255,224,0,47,131,255,255,255,255,255,224,0,47,128,0,0,15,208,0,0,0,47,128,0,0,15,208,0,0,0,47,128,0,0,15,208,0,0,0,127,128,0,0,15,208,0,0,2,255,240,0,0,15,208,0,0,15,255,254,0,0,15,208,0,0,63,245,255,249,0,0,0,21,168,191,192,47,255,255,255,255,255,248,127,0,7,255,255,255,255,255,240,46,0,0,111,255,255,255,255,240,8,0,0,0,21,85,85,64,0,0,0,0,0,0,0,0,0,0, + // 0x8ff7 迷 + 247,143,35,35,59,37,1,253,0,0,0,0,0,84,0,0,0,3,64,0,0,0,254,0,0,0,15,224,0,108,0,254,0,62,64,31,252,0,254,0,254,0,63,128,7,255,0,191,0,254,0,191,0,0,255,192,63,128,254,0,254,0,0,63,224,47,192,254,2,252,0,0,15,192,15,208,254,3,244,0,0,3,0,11,240,254,11,240,0,0,0,0,7,144,254,7,208,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,7,255,255,255,255,255,224,0,0,7,255,255,255,255,255,224,0,0,7,255,255,255,255,255,224,63,255,192,0,15,255,240,0,0,63,255,192,0,31,255,244,0,0,63,255,192,0,63,255,252,0,0,0,31,192,0,255,254,191,0,0,0,31,192,2,252,254,63,128,0,0,31,192,7,248,254,31,224,0,0,31,192,31,240,254,11,248,0,0,31,192,127,192,254,3,254,0,0,31,194,255,64,254,0,255,192,0,31,207,253,0,254,0,63,240,0,31,199,244,0,254,0,15,208,0,31,193,208,0,254,0,3,64,0,63,224,0,0,254,0,0,0,1,255,248,0,0,254,0,0,0,11,255,255,64,0,0,0,0,0,127,248,191,254,85,85,85,85,100,127,208,47,255,255,255,255,255,244,63,64,2,255,255,255,255,255,240,28,0,0,27,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x9000 退 + 0,144,35,33,41,37,1,253,7,208,0,31,255,255,255,252,0,31,244,0,31,255,255,255,252,0,11,254,0,31,255,255,255,252,0,1,255,192,31,192,0,1,252,0,0,63,240,31,192,0,1,252,0,0,15,224,31,234,170,171,252,0,0,3,64,31,255,255,255,252,0,0,0,0,31,255,255,255,252,0,0,0,0,31,192,0,1,252,0,0,0,0,31,192,0,1,252,0,0,0,0,31,192,0,1,252,0,0,0,0,31,255,255,255,252,0,0,0,0,31,255,255,255,252,0,63,255,192,31,255,255,255,252,0,63,255,192,31,192,63,64,15,64,63,255,192,31,192,47,192,127,208,0,31,192,31,192,15,210,255,64,0,31,192,31,192,11,255,252,0,0,31,192,31,192,7,255,208,0,0,31,192,31,192,2,255,0,0,0,31,192,31,192,0,255,64,0,0,31,192,31,193,174,127,208,0,0,31,192,31,255,255,31,248,0,0,31,193,255,255,255,7,255,144,0,31,194,255,255,144,1,255,240,0,63,225,255,144,0,0,47,192,1,255,248,144,0,0,0,3,64,11,255,255,64,0,0,0,0,0,127,248,191,254,85,85,85,85,100,127,208,47,255,255,255,255,255,244,63,64,2,255,255,255,255,255,240,28,0,0,27,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x9009 选 + 9,144,34,35,59,37,2,253,0,0,0,0,0,169,0,0,0,4,0,0,9,0,253,0,0,0,63,0,0,31,192,253,0,0,0,191,208,0,47,192,253,0,0,0,47,244,0,63,128,253,0,0,0,11,252,0,127,255,255,255,254,0,2,255,0,255,255,255,255,254,0,0,191,65,255,255,255,255,254,0,0,60,3,252,0,253,0,0,0,0,0,15,240,0,253,0,0,0,0,0,7,224,0,253,0,0,0,0,0,0,128,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,15,255,255,255,255,255,192,0,0,15,255,255,255,255,255,192,255,254,15,255,255,255,255,255,192,255,254,0,0,254,3,244,0,0,255,254,0,0,253,3,244,0,0,0,190,0,1,252,3,244,0,0,0,190,0,2,252,3,244,0,0,0,190,0,3,248,3,244,0,0,0,190,0,11,244,3,244,10,0,0,190,0,15,240,3,244,11,208,0,190,0,63,208,3,244,11,208,0,190,2,255,128,3,244,15,192,0,190,31,254,0,3,255,255,192,0,190,31,248,0,2,255,255,128,0,191,139,192,0,0,255,255,0,2,255,245,0,0,0,0,0,0,15,255,254,0,0,0,0,0,0,63,244,191,229,0,0,0,86,144,255,192,31,255,255,255,255,255,192,255,0,3,255,255,255,255,255,192,60,0,0,27,255,255,255,255,128,20,0,0,0,0,0,0,0,0, + // 0x901f 速 + 31,144,35,35,59,37,1,253,0,0,0,0,0,190,0,0,0,2,64,0,0,0,190,0,0,0,15,208,0,0,0,190,0,0,0,47,248,0,0,0,190,0,0,0,7,254,3,255,255,255,255,255,240,1,255,131,255,255,255,255,255,240,0,63,227,255,255,255,255,255,224,0,15,208,0,0,190,0,0,0,0,3,0,0,0,190,0,0,0,0,0,0,106,170,255,170,170,0,0,0,0,191,255,255,255,255,64,0,0,0,191,255,255,255,255,64,0,0,0,189,0,190,0,63,64,0,0,0,189,0,190,0,63,64,0,0,0,189,0,190,0,63,64,63,255,192,189,0,190,0,63,64,63,255,192,191,170,255,170,191,64,63,255,192,191,255,255,255,255,64,0,31,192,191,255,255,255,255,64,0,31,192,0,11,255,224,0,0,0,31,192,0,47,255,248,0,0,0,31,192,0,127,255,254,0,0,0,31,192,2,253,190,127,128,0,0,31,192,11,248,190,31,244,0,0,31,192,127,224,190,7,254,0,0,31,199,255,128,190,1,255,224,0,31,199,253,0,190,0,63,208,0,63,226,240,0,190,0,11,128,1,255,248,64,0,190,0,1,0,11,255,255,64,0,85,0,0,0,127,248,191,254,85,85,85,85,100,127,208,47,255,255,255,255,255,244,63,64,2,255,255,255,255,255,240,28,0,0,27,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x90e8 部 + 232,144,35,35,59,37,1,253,0,0,106,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,63,255,255,192,0,0,127,0,0,63,255,255,244,47,255,255,255,252,63,255,255,240,47,255,255,255,252,63,64,31,240,47,255,255,255,252,63,0,31,208,0,0,0,4,0,63,0,47,192,0,252,0,31,192,63,0,63,128,0,252,0,47,128,63,0,127,0,0,189,0,63,64,63,0,254,0,0,126,0,63,0,63,0,253,0,0,63,0,126,0,63,2,252,0,0,63,0,253,0,63,3,244,0,0,36,0,24,0,63,7,240,0,127,255,255,255,254,63,11,240,0,127,255,255,255,254,63,2,252,0,127,255,255,255,254,63,0,255,0,0,0,0,0,0,63,0,63,64,0,0,0,0,0,63,0,47,192,0,0,0,0,0,63,0,15,208,3,255,255,255,224,63,0,11,224,3,255,255,255,224,63,0,7,240,3,255,255,255,224,63,0,7,240,3,240,0,11,224,63,0,7,240,3,240,0,11,224,63,0,11,240,3,240,0,11,224,63,0,31,240,3,240,0,11,224,63,15,255,224,3,240,0,11,224,63,15,255,192,3,240,0,11,224,63,11,255,0,3,255,255,255,224,63,1,80,0,3,255,255,255,224,63,0,0,0,3,255,255,255,224,63,0,0,0,3,240,0,11,224,63,0,0,0,3,240,0,11,224,63,0,0,0, + // 0x914d 配 + 77,145,34,33,41,37,2,253,255,255,255,255,143,255,255,255,64,255,255,255,255,143,255,255,255,64,255,255,255,255,143,255,255,255,64,0,62,47,0,1,85,85,127,64,0,62,47,0,0,0,0,63,64,0,62,47,0,0,0,0,63,64,63,255,255,254,0,0,0,63,64,63,255,255,255,0,0,0,63,64,63,255,255,255,0,0,0,63,64,62,29,60,63,0,0,0,63,64,62,29,60,63,0,0,0,63,64,62,29,60,63,0,0,0,63,64,62,29,60,63,11,255,255,255,64,62,29,60,63,11,255,255,255,64,62,29,60,63,11,255,255,255,64,62,44,60,63,11,224,0,63,64,62,60,60,63,11,224,0,63,64,62,180,47,255,11,224,0,21,0,63,240,31,255,11,224,0,0,0,62,64,0,63,11,224,0,0,0,62,0,0,63,11,224,0,0,0,63,85,85,127,11,224,0,0,0,63,255,255,255,11,224,0,0,0,63,255,255,255,11,224,0,6,0,62,0,0,63,11,224,0,7,224,62,0,0,63,11,224,0,11,224,62,0,0,63,11,224,0,11,224,63,170,170,191,11,224,0,15,208,63,255,255,255,11,240,0,31,192,63,255,255,255,7,255,255,255,192,62,0,0,63,3,255,255,255,64,62,0,0,63,1,255,255,254,0,41,0,0,0,0,0,0,0,0, + // 0x91ca 释 + 202,145,35,35,59,37,1,253,0,0,0,80,0,0,0,0,0,0,1,175,240,0,0,0,0,0,47,255,255,252,255,255,255,255,208,63,255,255,228,255,255,255,255,224,47,175,240,0,255,255,255,255,192,0,7,224,0,15,192,0,63,128,5,7,224,120,7,224,0,255,0,63,7,224,252,3,244,3,252,0,31,135,224,248,1,253,15,240,0,15,199,226,240,0,127,127,192,0,7,215,227,224,0,47,255,0,0,3,231,231,192,0,15,254,0,0,1,7,224,0,0,191,255,208,0,0,7,224,0,7,255,111,254,64,63,255,255,245,191,244,7,255,248,63,255,255,251,255,128,0,191,244,63,255,255,246,248,1,80,11,240,0,15,240,0,64,3,240,0,144,0,47,252,0,0,3,240,0,0,0,63,255,0,0,3,240,0,0,0,191,255,192,191,255,255,255,64,0,255,255,240,191,255,255,255,64,3,251,227,252,191,255,255,255,64,11,231,224,244,0,3,240,0,0,31,199,224,80,0,3,240,0,0,127,135,224,0,0,3,240,0,0,191,7,224,3,255,255,255,255,240,61,7,224,3,255,255,255,255,240,40,7,224,3,255,255,255,255,240,0,7,224,0,0,7,244,0,0,0,7,224,0,0,3,240,0,0,0,7,224,0,0,3,240,0,0,0,7,224,0,0,3,240,0,0,0,7,224,0,0,3,240,0,0,0,7,224,0,0,3,240,0,0, + // 0x91cd 重 + 205,145,33,34,50,37,2,254,0,0,0,0,0,0,90,0,0,0,0,0,5,106,255,255,64,0,2,191,255,255,255,255,255,192,0,2,255,255,255,255,255,233,0,0,1,255,169,91,244,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,170,170,170,175,254,170,170,170,128,0,0,0,7,240,0,0,0,0,0,85,85,91,245,85,85,64,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,253,0,7,240,0,15,208,0,0,253,0,7,240,0,15,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,253,0,11,240,0,31,208,0,0,253,0,7,240,0,15,208,0,0,253,0,7,240,0,15,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,85,85,91,245,85,85,64,0,0,0,0,7,240,0,0,0,0,2,170,170,175,250,170,170,164,0,3,255,255,255,255,255,255,248,0,3,255,255,255,255,255,255,248,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x91cf 量 + 207,145,33,33,41,37,2,254,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,0,0,0,0,63,64,0,0,127,0,0,0,0,63,64,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,0,0,0,0,63,64,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,170,170,170,170,170,170,170,170,128,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,252,0,3,240,0,15,208,0,0,252,0,3,240,0,15,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,252,0,3,240,0,15,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,0,0,3,240,0,0,0,0,0,0,0,3,240,0,0,0,0,3,255,255,255,255,255,255,240,0,3,255,255,255,255,255,255,240,0,1,85,85,87,245,85,85,80,0,0,0,0,3,240,0,0,0,0,170,170,170,171,250,170,170,170,128,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x9488 针 + 136,148,34,35,59,37,1,253,0,25,0,0,0,2,164,0,0,0,63,128,0,0,3,248,0,0,0,127,0,0,0,3,248,0,0,0,254,0,0,0,3,248,0,0,1,255,255,248,0,3,248,0,0,3,255,255,248,0,3,248,0,0,15,255,255,248,0,3,248,0,0,47,224,0,0,0,3,248,0,0,127,192,0,0,0,3,248,0,0,191,0,0,0,0,3,248,0,0,61,0,0,0,0,3,248,0,0,43,255,255,224,0,3,248,0,0,3,255,255,226,170,171,254,170,160,3,255,255,231,255,255,255,255,240,0,7,240,7,255,255,255,255,240,0,7,240,7,255,255,255,255,240,0,7,240,0,0,3,248,0,0,0,7,240,0,0,3,248,0,0,0,7,240,0,0,3,248,0,0,47,255,255,244,0,3,248,0,0,47,255,255,244,0,3,248,0,0,47,255,255,244,0,3,248,0,0,0,7,240,0,0,3,248,0,0,0,7,240,0,0,3,248,0,0,0,7,240,0,0,3,248,0,0,0,7,240,0,0,3,248,0,0,0,7,240,0,0,3,248,0,0,0,7,240,44,0,3,248,0,0,0,7,242,252,0,3,248,0,0,0,11,255,253,0,3,248,0,0,0,15,255,244,0,3,248,0,0,0,63,255,64,0,3,248,0,0,0,63,244,0,0,3,248,0,0,0,31,128,0,0,3,248,0,0,0,8,0,0,0,3,244,0,0, + // 0x94ae 钮 + 174,148,35,35,59,37,1,253,0,100,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,252,0,3,255,255,255,255,192,1,252,0,3,255,255,255,255,192,3,255,255,243,255,255,255,255,192,7,255,255,240,0,63,64,47,128,15,255,255,240,0,63,0,47,128,47,213,85,80,0,127,0,47,128,63,128,0,0,0,127,0,63,128,255,0,0,0,0,127,0,63,64,189,0,0,0,0,191,0,63,64,63,255,255,192,0,190,0,63,64,39,255,255,192,0,190,0,63,64,3,255,255,192,0,253,0,63,0,0,15,192,0,0,253,0,63,0,0,15,192,3,255,255,255,255,0,0,15,192,3,255,255,255,255,0,0,15,192,3,255,255,255,255,0,0,15,192,0,86,253,85,191,0,63,255,255,240,2,252,0,190,0,63,255,255,240,2,248,0,190,0,63,255,255,240,3,248,0,190,0,0,15,192,0,3,244,0,254,0,0,15,192,0,3,244,0,253,0,0,15,192,0,3,240,0,253,0,0,15,192,0,7,240,0,252,0,0,15,192,0,7,240,0,252,0,0,15,194,224,11,240,1,252,0,0,15,239,240,11,224,1,252,0,0,15,255,224,15,224,2,252,0,0,31,255,85,95,229,87,253,80,0,63,248,191,255,255,255,255,244,0,191,192,191,255,255,255,255,244,0,61,0,191,255,255,255,255,244,0,16,0,0,0,0,0,0,0, + // 0x9519 错 + 25,149,35,35,59,37,1,253,0,20,0,0,3,224,11,208,0,0,63,0,0,3,240,11,208,0,0,127,0,0,3,240,11,208,0,0,254,0,0,3,240,11,208,0,1,253,0,0,3,240,11,208,0,3,255,255,242,255,255,255,255,224,11,255,255,242,255,255,255,255,224,31,255,255,242,255,255,255,255,224,127,192,0,0,3,240,11,208,0,127,0,0,0,3,240,11,208,0,61,0,0,0,3,240,11,208,0,27,255,255,208,3,240,11,208,0,3,255,255,219,255,255,255,255,244,3,255,255,219,255,255,255,255,244,0,15,208,11,255,255,255,255,244,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,127,255,255,255,0,47,255,255,240,127,255,255,255,0,47,255,255,240,127,255,255,255,0,47,255,255,240,127,0,0,63,0,0,15,208,0,127,0,0,63,0,0,15,208,0,127,0,0,63,0,0,15,208,0,127,170,170,255,0,0,15,208,0,127,255,255,255,0,0,15,208,0,127,255,255,255,0,0,15,208,144,127,0,0,63,0,0,15,235,224,127,0,0,63,0,0,15,255,240,127,0,0,63,0,0,31,255,128,127,255,255,255,0,0,127,253,0,127,255,255,255,0,0,63,208,0,127,255,255,255,0,0,46,0,0,127,0,0,63,0,0,0,0,0,42,0,0,21,0, + // 0x955c 镜 + 92,149,35,36,68,37,1,252,0,40,0,0,0,11,208,0,0,0,63,0,0,0,7,240,0,0,0,191,0,1,255,255,255,255,192,0,253,0,1,255,255,255,255,208,2,255,255,209,255,255,255,255,208,3,255,255,208,2,128,1,144,0,15,255,255,208,11,224,3,244,0,31,208,0,0,3,240,3,240,0,127,192,0,0,3,240,7,224,0,127,0,0,11,255,255,255,255,240,62,0,0,11,255,255,255,255,240,31,255,255,203,255,255,255,255,240,3,255,255,192,0,0,0,0,0,3,255,255,192,0,0,0,0,0,0,15,192,0,255,255,255,255,128,0,15,192,0,255,255,255,255,128,0,15,192,0,253,0,0,47,128,0,15,192,0,252,0,0,47,128,0,15,192,0,255,255,255,255,128,63,255,255,240,255,255,255,255,128,63,255,255,240,252,0,0,47,128,63,255,255,240,252,0,0,47,128,0,15,192,0,253,0,0,47,128,0,15,192,0,255,255,255,255,128,0,15,192,0,255,255,255,255,128,0,15,192,0,2,248,47,128,0,0,15,192,80,3,244,47,128,0,0,15,199,224,3,240,47,128,0,0,15,255,240,11,240,47,128,64,0,31,255,208,15,224,47,128,244,0,63,254,0,63,192,47,128,248,0,255,244,2,255,128,47,129,248,0,191,128,127,254,0,31,255,244,0,61,0,63,244,0,15,255,240,0,16,0,30,64,0,1,170,64,0,0,0,0,0,0,0,0,0, + // 0x957f 长 + 127,149,34,35,59,37,2,253,0,2,164,0,0,0,0,0,0,0,3,244,0,0,0,46,0,0,0,3,244,0,0,0,191,192,0,0,3,244,0,0,2,255,64,0,0,3,244,0,0,15,253,0,0,0,3,244,0,0,127,244,0,0,0,3,244,0,2,255,208,0,0,0,3,244,0,31,255,0,0,0,0,3,244,1,255,248,0,0,0,0,3,244,31,255,208,0,0,0,0,3,244,47,254,0,0,0,0,0,3,244,11,224,0,0,0,0,0,3,244,2,0,0,0,0,0,0,3,244,0,0,0,0,0,0,85,87,249,85,85,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,3,244,0,254,0,0,0,0,0,3,244,0,191,0,0,0,0,0,3,244,0,63,128,0,0,0,0,3,244,0,47,208,0,0,0,0,3,244,0,15,240,0,0,0,0,3,244,0,11,252,0,0,0,0,3,244,0,3,254,0,0,0,0,3,244,0,0,255,128,0,0,0,3,244,0,0,127,240,0,0,0,3,244,0,4,47,253,0,0,0,3,244,6,252,11,255,128,0,0,3,254,255,252,1,255,253,0,0,11,255,255,252,0,127,255,208,0,31,255,255,144,0,11,255,192,0,15,255,144,0,0,0,191,0,0,15,224,0,0,0,0,5,0,0,4,0,0,0,0,0,0,0, + // 0x95ed 闭 + 237,149,31,36,32,37,3,252,1,0,0,0,0,0,0,0,31,64,0,0,0,0,0,0,63,208,15,255,255,255,255,252,15,244,15,255,255,255,255,252,3,252,15,255,255,255,255,252,1,255,0,0,0,0,2,252,0,189,0,0,0,0,1,252,0,32,0,0,26,128,1,252,0,0,0,0,47,192,1,252,254,0,0,0,47,192,1,252,254,0,0,0,47,192,1,252,254,0,0,0,47,192,1,252,254,0,0,0,47,192,1,252,254,15,255,255,255,255,225,252,254,15,255,255,255,255,225,252,254,15,255,255,255,255,225,252,254,0,0,3,255,192,1,252,254,0,0,11,255,192,1,252,254,0,0,31,255,192,1,252,254,0,0,127,239,192,1,252,254,0,1,255,47,192,1,252,254,0,7,253,47,192,1,252,254,0,47,244,47,192,1,252,254,0,255,208,47,192,1,252,254,11,255,64,47,192,1,252,254,63,252,0,47,192,1,252,254,63,224,0,47,192,1,252,254,15,64,0,47,192,1,252,254,0,0,85,127,192,1,252,254,0,0,191,255,192,1,252,254,0,0,127,255,64,1,252,254,0,0,63,249,0,2,252,254,0,0,0,0,2,255,252,254,0,0,0,0,1,255,244,254,0,0,0,0,0,255,144,0,0,0,0,0,0,0,0, + // 0x95f2 闲 + 242,149,31,35,24,37,3,253,1,0,0,0,0,0,0,0,11,192,0,0,0,0,0,0,31,224,11,255,255,255,255,252,11,248,11,255,255,255,255,252,2,253,11,255,255,255,255,252,0,255,64,0,0,0,1,252,0,63,192,0,0,0,1,252,0,31,192,0,0,0,1,252,84,10,0,10,128,0,1,252,252,0,0,15,192,0,1,252,252,0,0,15,192,0,1,252,252,0,0,15,192,0,1,252,252,0,0,15,192,0,1,252,252,15,255,255,255,255,225,252,252,15,255,255,255,255,225,252,252,15,255,255,255,255,225,252,252,0,0,191,248,0,1,252,252,0,0,255,253,0,1,252,252,0,3,255,255,64,1,252,252,0,11,255,239,208,1,252,252,0,31,207,207,244,1,252,252,0,63,79,195,252,1,252,252,0,255,15,192,255,1,252,252,3,252,15,192,127,129,252,252,31,244,15,192,47,209,252,252,63,208,15,192,15,129,252,252,15,64,15,192,1,1,252,252,0,0,15,192,0,1,252,252,0,0,15,192,0,1,252,252,0,0,15,192,0,1,252,252,0,0,15,192,0,2,252,252,0,0,5,64,47,255,252,252,0,0,0,0,31,255,244,252,0,0,0,0,15,255,208,252,0,0,0,0,5,80,0, + // 0x95f4 间 + 244,149,31,36,32,37,3,252,1,0,0,0,0,0,0,0,31,64,0,0,0,0,0,0,63,208,15,255,255,255,255,252,15,244,15,255,255,255,255,252,3,252,15,255,255,255,255,252,1,255,0,0,0,0,2,252,0,188,0,0,0,0,2,252,0,32,0,0,0,0,2,252,0,0,0,0,0,0,2,252,255,0,0,0,0,0,2,252,255,0,0,0,0,0,2,252,255,0,191,255,255,248,2,252,255,0,191,255,255,248,2,252,255,0,191,255,255,248,2,252,255,0,189,0,1,248,2,252,255,0,189,0,1,248,2,252,255,0,189,0,1,248,2,252,255,0,189,0,1,248,2,252,255,0,191,255,255,248,2,252,255,0,191,255,255,248,2,252,255,0,191,255,255,248,2,252,255,0,189,0,1,248,2,252,255,0,189,0,1,248,2,252,255,0,189,0,1,248,2,252,255,0,189,0,1,248,2,252,255,0,191,255,255,248,2,252,255,0,191,255,255,248,2,252,255,0,191,255,255,248,2,252,255,0,0,0,0,0,2,252,255,0,0,0,0,0,2,252,255,0,0,0,0,0,2,252,255,0,0,0,0,0,2,252,255,0,0,0,0,0,255,252,255,0,0,0,0,0,255,244,255,0,0,0,0,0,191,144,0,0,0,0,0,0,0,0, + // 0x9608 阈 + 8,150,31,36,32,37,3,252,2,192,0,0,0,0,0,0,15,240,11,255,255,255,255,248,7,252,11,255,255,255,255,248,2,254,11,255,255,255,255,248,0,191,64,0,0,0,2,248,0,63,192,0,0,0,2,248,0,31,208,0,184,16,2,248,0,11,64,0,252,248,2,248,254,0,0,0,252,190,2,248,254,0,0,0,252,47,2,248,254,0,0,0,252,8,2,248,254,47,255,255,255,255,226,248,254,47,255,255,255,255,226,248,254,26,170,170,254,170,146,248,254,0,0,0,188,0,2,248,254,0,0,0,125,10,66,248,254,11,255,248,125,15,66,248,254,11,255,248,125,31,2,248,254,11,128,184,62,63,2,248,254,11,128,184,62,62,2,248,254,11,128,184,63,188,2,248,254,11,255,248,47,252,2,248,254,11,255,248,31,244,2,248,254,0,0,0,31,240,2,248,254,0,0,0,15,208,162,248,254,0,26,254,31,192,246,248,254,47,255,254,63,224,242,248,254,63,255,233,255,250,242,248,254,47,148,3,249,255,226,248,254,0,0,31,224,191,194,248,254,0,0,15,128,31,66,248,254,0,0,1,0,0,3,248,254,0,0,0,0,31,255,248,254,0,0,0,0,15,255,240,254,0,0,0,0,11,255,128,0,0,0,0,0,0,0,0, + // 0x964d 降 + 77,150,33,35,59,37,3,253,0,0,0,0,11,144,0,0,0,0,0,0,0,15,208,0,0,0,255,255,224,0,63,192,0,0,0,255,255,252,0,191,234,171,128,0,255,255,244,1,255,255,255,240,0,252,3,240,7,255,255,255,208,0,252,7,240,31,248,0,63,192,0,252,11,208,127,253,0,127,0,0,252,15,194,255,191,1,254,0,0,252,31,195,252,63,199,252,0,0,252,47,64,224,15,255,240,0,0,252,63,0,0,3,255,192,0,0,252,126,0,0,3,255,208,0,0,252,126,0,0,47,255,253,0,0,252,63,64,6,255,235,255,228,0,252,15,193,191,255,0,191,255,128,252,11,227,255,244,10,175,255,0,252,3,241,254,64,15,208,125,0,252,3,240,144,0,15,208,0,0,252,2,244,127,255,255,255,252,0,252,2,244,191,255,255,255,252,0,252,2,244,191,255,255,255,252,0,252,3,244,3,240,15,208,0,0,252,255,240,3,240,15,208,0,0,252,191,224,3,240,15,208,0,0,252,191,64,3,240,15,208,0,0,252,0,7,255,255,255,255,255,0,252,0,7,255,255,255,255,255,0,252,0,7,255,255,255,255,255,0,252,0,0,0,0,15,208,0,0,252,0,0,0,0,15,208,0,0,252,0,0,0,0,15,208,0,0,252,0,0,0,0,15,208,0,0,252,0,0,0,0,15,208,0,0,252,0,0,0,0,15,208,0,0, + // 0x9650 限 + 80,150,32,33,8,37,3,253,255,255,248,47,255,255,255,240,255,255,254,47,255,255,255,240,255,255,253,47,255,255,255,240,253,1,252,47,128,0,3,240,253,2,248,47,128,0,3,240,253,3,244,47,128,0,3,240,253,7,240,47,128,0,3,240,253,11,224,47,255,255,255,240,253,15,192,47,255,255,255,240,253,31,192,47,255,255,255,240,253,47,64,47,128,0,3,240,253,63,0,47,128,0,3,240,253,31,192,47,128,0,3,240,253,11,224,47,128,0,3,240,253,3,240,47,255,255,255,240,253,2,248,47,255,255,255,240,253,0,252,47,255,255,255,240,253,0,252,47,128,189,0,0,253,0,253,47,128,126,0,180,253,0,252,47,128,63,2,253,253,1,252,47,128,63,75,248,253,191,252,47,128,47,255,224,253,127,244,47,128,15,255,64,253,63,144,47,128,11,252,0,253,0,0,47,128,3,248,0,253,0,0,47,128,2,253,0,253,0,0,47,128,20,255,0,253,0,0,47,219,252,127,192,253,0,1,191,255,252,47,244,253,0,31,255,255,248,15,254,253,0,15,255,249,0,3,255,253,0,15,233,0,0,0,189,253,0,0,0,0,0,0,20, + // 0x9664 除 + 100,150,33,35,59,37,3,253,0,0,0,0,2,164,0,0,0,0,0,0,0,11,253,0,0,0,255,255,224,0,15,255,0,0,0,255,255,252,0,63,255,192,0,0,255,255,244,0,191,31,224,0,0,252,3,240,2,254,11,248,0,0,252,7,240,11,248,2,254,0,0,252,11,208,47,240,0,191,192,0,252,15,192,191,192,0,47,240,0,252,31,135,254,0,0,11,254,0,252,47,95,248,0,0,2,255,128,252,63,15,239,255,255,255,191,0,252,126,11,79,255,255,255,13,0,252,127,0,15,255,255,255,0,0,252,47,128,0,2,248,0,0,0,252,15,192,0,2,248,0,0,0,252,11,224,0,2,248,0,0,0,252,3,240,0,2,248,0,0,0,252,3,241,255,255,255,255,252,0,252,2,245,255,255,255,255,252,0,252,2,245,255,255,255,255,252,0,252,2,244,0,2,248,0,0,0,252,3,244,0,2,248,0,0,0,252,255,240,47,66,248,31,0,0,252,191,224,63,2,248,63,128,0,252,191,64,191,2,248,31,208,0,252,0,0,253,2,248,11,240,0,252,0,2,252,2,248,3,244,0,252,0,7,244,2,248,1,252,0,252,0,15,224,2,248,0,254,0,252,0,63,192,2,248,0,127,0,252,0,31,64,3,248,0,62,0,252,0,1,1,255,248,0,16,0,252,0,0,0,255,240,0,0,0,252,0,0,0,255,128,0,0,0, + // 0x9669 险 + 105,150,33,35,59,37,3,253,0,0,0,0,0,224,0,0,0,0,0,0,0,2,252,0,0,0,255,255,240,0,3,252,0,0,0,255,255,252,0,15,254,0,0,0,255,255,244,0,31,255,64,0,0,252,3,240,0,127,175,208,0,0,252,7,240,0,255,15,244,0,0,252,11,208,3,252,3,253,0,0,252,15,192,15,244,0,255,128,0,252,31,128,63,224,0,63,224,0,252,47,64,255,128,0,15,252,0,252,63,7,255,0,0,3,255,128,252,62,31,255,255,255,253,255,192,252,127,15,231,255,255,253,47,0,252,47,135,71,255,255,252,6,0,252,15,192,0,0,0,0,0,0,252,7,224,0,0,0,0,0,0,252,3,240,0,0,160,0,144,0,252,3,244,45,1,244,1,252,0,252,2,244,126,0,248,2,248,0,252,2,248,63,0,252,3,240,0,252,2,244,47,64,252,7,224,0,252,3,244,31,128,188,11,208,0,252,255,240,15,192,125,15,192,0,252,191,224,15,192,125,47,64,0,252,127,64,11,208,62,63,0,0,252,0,0,7,208,16,126,0,0,252,0,0,1,0,0,252,0,0,252,0,0,0,0,1,248,0,0,252,0,0,0,0,3,240,0,0,252,0,3,255,255,255,255,255,0,252,0,3,255,255,255,255,255,0,252,0,3,255,255,255,255,255,0,252,0,0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0, + // 0x96f6 零 + 246,150,34,34,50,37,2,253,2,170,170,170,170,170,170,160,0,3,255,255,255,255,255,255,240,0,3,255,255,255,255,255,255,240,0,0,0,0,7,240,0,0,0,0,21,85,85,87,245,85,85,85,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,0,0,7,240,0,0,63,64,127,0,0,7,240,0,0,63,64,127,47,255,199,241,255,254,63,64,127,47,255,199,241,255,254,63,64,42,0,0,7,240,0,0,42,0,0,0,0,7,240,0,0,0,0,0,127,255,192,1,255,255,64,0,0,127,255,239,249,255,255,64,0,0,0,0,191,255,64,0,0,0,0,0,11,255,127,244,0,0,0,0,0,191,248,15,255,64,0,0,0,27,255,208,1,255,249,0,0,2,255,255,85,85,127,255,228,0,191,255,159,255,255,253,191,255,208,255,248,15,255,255,252,7,255,192,190,64,0,0,0,0,0,31,64,16,0,0,0,0,0,0,0,0,1,255,255,255,255,255,255,0,0,1,255,255,255,255,255,255,0,0,0,85,85,255,85,85,191,0,0,0,0,0,190,0,0,63,0,0,0,0,0,190,0,0,127,0,0,0,0,0,190,0,106,255,0,0,0,0,0,190,0,63,255,0,0,0,0,0,190,0,63,248,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0, + // 0x9700 需 + 0,151,33,34,50,37,2,253,2,170,170,170,170,170,170,160,0,3,255,255,255,255,255,255,240,0,3,255,255,255,255,255,255,240,0,0,0,0,3,240,0,0,0,0,0,0,0,3,240,0,0,0,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,85,85,91,245,85,85,127,64,127,0,0,3,240,0,0,63,64,127,47,255,195,241,255,254,63,64,127,47,255,195,241,255,254,63,64,127,0,0,3,240,0,0,63,64,0,0,0,3,240,0,0,0,0,0,127,255,195,241,255,255,64,0,0,127,255,195,241,255,255,64,0,0,0,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,106,170,170,170,170,170,170,170,64,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,11,240,0,0,0,0,0,0,0,15,208,0,0,0,0,2,170,170,191,250,170,170,164,0,3,255,255,255,255,255,255,248,0,3,255,255,255,255,255,255,248,0,3,244,3,244,3,244,2,248,0,3,244,3,244,3,244,2,248,0,3,244,3,244,3,244,2,248,0,3,244,3,244,3,244,2,248,0,3,244,3,244,3,244,2,248,0,3,244,3,244,3,244,2,248,0,3,244,3,244,3,244,255,244,0,3,244,3,244,3,244,127,240,0,2,164,1,160,1,160,62,128,0, + // 0x9752 青 + 82,151,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,6,170,170,175,250,170,170,164,0,7,255,255,255,255,255,255,248,0,7,255,255,255,255,255,255,248,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,170,170,171,250,170,170,128,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,106,170,170,175,250,170,170,170,64,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,47,234,170,170,170,255,0,0,0,47,128,0,0,0,191,0,0,0,47,128,0,0,0,191,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,47,213,85,85,85,191,0,0,0,47,128,0,0,0,191,0,0,0,47,213,85,85,85,191,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,47,128,0,0,0,191,0,0,0,47,128,0,0,0,191,0,0,0,47,128,0,0,0,191,0,0,0,47,128,0,3,255,255,0,0,0,47,128,0,2,255,253,0,0,0,47,128,0,0,170,144,0,0, + // 0x975e 非 + 94,151,35,36,68,37,1,252,0,0,2,164,0,169,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,248,0,254,0,0,0,15,255,255,248,0,255,255,255,224,15,255,255,248,0,255,255,255,224,15,255,255,248,0,255,255,255,224,0,0,3,248,0,253,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,248,0,253,0,0,0,11,255,255,248,0,255,255,255,192,11,255,255,248,0,255,255,255,192,11,255,255,248,0,255,255,255,192,0,0,3,248,0,254,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,244,0,253,0,0,0,0,0,3,244,0,253,0,0,0,0,0,7,255,208,253,0,0,0,0,22,255,255,208,254,0,0,0,127,255,255,255,208,255,255,255,244,127,255,255,245,0,255,255,255,244,63,254,191,192,0,255,255,255,244,41,0,63,192,0,253,0,0,0,0,0,255,64,0,253,0,0,0,0,2,254,0,0,253,0,0,0,0,11,252,0,0,253,0,0,0,0,47,244,0,0,253,0,0,0,1,255,208,0,0,253,0,0,0,11,255,64,0,0,253,0,0,0,11,252,0,0,0,253,0,0,0,2,208,0,0,0,253,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9760 靠 + 96,151,34,36,68,37,2,252,0,5,0,3,240,0,0,0,0,0,31,192,3,240,0,0,0,0,0,63,192,7,244,0,0,0,0,0,127,255,255,255,255,255,240,0,1,255,255,255,255,255,255,240,0,7,252,0,3,240,0,0,0,0,23,249,85,91,245,85,85,85,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,0,0,0,3,240,0,0,0,0,0,0,0,5,84,0,0,0,0,0,191,255,255,255,255,255,208,0,0,191,255,255,255,255,255,208,0,0,190,0,0,0,0,15,208,0,0,190,0,0,0,0,15,208,0,0,190,0,0,0,0,15,208,0,0,191,255,255,255,255,255,208,0,0,191,255,255,255,255,255,208,0,0,0,7,240,3,244,0,0,0,0,0,11,240,3,248,0,0,0,63,255,255,240,3,255,255,255,64,63,255,255,240,3,255,255,255,64,0,0,7,240,3,244,0,0,0,0,0,11,240,3,248,0,0,0,31,255,255,240,3,255,255,254,0,31,255,255,240,3,255,255,254,0,0,0,11,224,3,244,0,0,0,0,0,11,224,3,249,85,85,64,191,255,255,208,3,255,255,255,208,255,255,255,192,3,255,255,255,208,165,64,127,128,3,244,0,0,0,0,6,255,0,3,244,0,0,0,1,191,248,0,3,244,0,0,0,3,255,208,0,3,244,0,0,0,0,249,0,0,3,244,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9762 面 + 98,151,33,32,32,37,2,253,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,15,240,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,47,192,0,0,0,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,208,31,192,1,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,255,255,252,1,252,0,15,192,15,255,255,252,1,252,0,15,192,15,234,171,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,234,171,252,1,252,0,15,192,15,255,255,252,1,252,0,15,192,15,255,255,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,192,1,252,1,252,0,15,208,31,192,1,252,1,252,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,192,0,0,0,0,1,252,0,15,192,0,0,0,0,1,252,0, + // 0x9875 页 + 117,152,33,34,50,37,2,252,63,255,255,255,255,255,255,255,128,63,255,255,255,255,255,255,255,128,63,255,255,255,255,255,255,255,128,0,0,0,31,240,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,127,64,0,0,0,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,254,0,0,0,0,31,208,0,0,254,0,0,0,0,31,208,0,0,254,0,3,244,0,31,208,0,0,254,0,3,244,0,31,208,0,0,254,0,3,244,0,31,208,0,0,254,0,3,244,0,31,208,0,0,254,0,3,244,0,31,208,0,0,254,0,3,244,0,31,208,0,0,254,0,3,244,0,31,208,0,0,254,0,3,244,0,31,208,0,0,254,0,7,240,0,31,208,0,0,254,0,11,240,0,31,208,0,0,254,0,15,240,0,31,208,0,0,254,0,63,210,224,31,208,0,0,0,0,255,203,254,0,0,0,0,0,7,255,7,255,224,0,0,0,0,127,252,0,127,254,0,0,0,11,255,224,0,7,255,224,0,6,255,255,64,0,0,127,253,0,191,255,244,0,0,0,11,255,64,63,253,0,0,0,0,0,190,0,30,64,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0, + // 0x9879 项 + 121,152,35,33,41,37,1,253,0,0,0,63,255,255,255,255,244,0,0,0,63,255,255,255,255,244,21,85,85,127,255,255,255,255,244,127,255,255,128,0,63,192,0,0,127,255,255,128,0,127,64,0,0,21,127,149,0,0,255,0,0,0,0,63,128,11,255,255,255,255,0,0,63,128,11,255,255,255,255,0,0,63,128,11,255,255,255,255,0,0,63,128,11,224,0,0,127,0,0,63,128,11,224,0,0,127,0,0,63,128,11,224,31,192,127,0,0,63,128,11,224,31,192,127,0,0,63,128,11,224,31,192,127,0,0,63,128,11,224,31,192,127,0,0,63,128,11,224,31,192,127,0,0,63,128,11,224,31,192,127,0,0,63,128,11,224,31,192,127,0,0,63,128,11,224,31,192,127,0,0,63,155,203,224,47,192,127,0,0,63,255,203,224,47,192,127,0,6,255,255,203,224,47,192,127,0,191,255,249,11,224,63,128,127,0,191,254,64,11,224,127,64,42,0,127,208,0,0,0,255,4,0,0,56,0,0,0,2,253,47,64,0,0,0,0,0,11,248,127,224,0,0,0,0,0,127,240,31,252,0,0,0,0,7,255,192,3,255,64,0,0,0,191,254,0,0,191,224,0,0,3,255,244,0,0,31,244,0,0,1,255,64,0,0,3,224,0,0,0,96,0,0,0,0,128, + // 0x9884 预 + 132,152,35,34,50,37,1,252,63,255,255,248,255,255,255,255,244,63,255,255,252,255,255,255,255,244,63,255,255,244,255,255,255,255,244,0,0,15,224,0,2,252,0,0,0,0,47,192,0,3,248,0,0,1,128,191,0,0,3,244,0,0,7,246,253,0,47,255,255,255,192,7,255,244,0,47,255,255,255,192,0,255,224,0,47,255,255,255,192,0,47,248,0,47,128,0,31,192,0,7,255,0,47,64,0,31,192,0,0,255,0,47,65,164,31,192,191,255,255,255,47,66,248,31,192,191,255,255,255,47,66,248,31,192,191,255,255,255,47,66,248,31,192,0,15,224,189,47,66,248,31,192,0,15,208,252,47,66,248,31,192,0,15,208,252,47,66,248,31,192,0,15,209,244,47,66,248,31,192,0,15,211,240,47,66,248,31,192,0,15,209,160,47,66,248,31,192,0,15,208,0,47,67,244,31,192,0,15,208,0,47,67,244,31,192,0,15,208,0,47,71,240,31,192,0,15,208,0,0,15,224,0,0,0,15,208,0,0,47,210,128,0,0,15,208,0,0,127,203,240,0,0,15,208,0,1,255,11,252,0,0,15,208,0,11,253,2,255,64,0,31,208,0,191,240,0,127,208,15,255,208,11,255,128,0,31,244,15,255,192,3,253,0,0,7,240,11,254,0,0,144,0,0,1,128,0,0,0,0,0,0,0,0,0, + // 0x9891 频 + 145,152,35,36,68,37,1,252,0,0,126,0,0,0,0,0,0,0,0,126,0,0,0,0,0,0,0,0,126,0,15,255,255,255,240,3,224,126,0,15,255,255,255,240,3,240,127,255,143,255,255,255,240,3,240,127,255,128,0,127,0,0,3,240,127,255,128,0,190,0,0,3,240,126,0,0,0,252,0,0,3,240,126,0,0,1,252,0,0,3,240,126,0,3,255,255,255,192,3,240,126,0,3,255,255,255,192,3,240,126,0,3,250,170,175,192,191,255,255,255,227,240,0,15,192,191,255,255,255,227,240,20,15,192,191,255,255,255,227,240,125,15,192,0,0,252,0,3,240,125,15,192,0,0,252,0,3,240,125,15,192,1,224,252,6,3,240,125,15,192,3,240,252,15,211,240,125,15,192,3,240,252,15,195,240,189,15,192,11,208,252,47,195,240,189,15,192,15,192,252,63,67,240,188,15,192,47,128,252,127,3,240,188,15,192,63,0,252,254,3,240,252,15,192,62,0,254,252,3,240,252,15,192,4,0,255,248,3,241,248,15,192,0,0,15,240,2,162,244,6,128,0,0,63,208,0,3,243,64,0,0,0,255,128,0,11,255,224,0,0,7,254,0,0,31,199,252,0,0,47,248,0,0,191,129,255,64,6,255,208,0,7,254,0,63,208,63,254,0,0,191,248,0,15,244,31,244,0,0,191,208,0,3,240,14,0,0,0,57,0,0,0,128,0,0,0,0,0,0,0,0,0, + // 0x989d 额 + 157,152,35,36,68,37,1,252,0,0,96,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,2,252,0,15,255,255,255,240,0,0,253,0,15,255,255,255,240,63,255,255,255,223,255,255,255,240,63,255,255,255,208,0,189,0,0,63,255,255,255,208,0,252,0,0,63,1,0,11,208,1,248,0,0,63,15,208,11,208,2,244,0,0,47,31,192,11,215,255,255,255,192,0,63,255,253,7,255,255,255,192,0,255,255,255,7,250,170,175,192,3,254,170,254,7,208,0,15,192,15,240,2,252,7,208,104,15,192,127,196,11,244,7,208,189,15,192,63,47,175,224,7,208,188,15,192,8,127,255,192,7,208,188,15,192,0,11,255,128,7,208,252,15,192,0,47,255,248,7,208,252,15,192,2,255,239,255,71,208,252,15,192,47,255,65,255,231,208,252,15,192,63,248,0,47,199,208,252,15,192,47,128,0,6,7,208,252,15,192,26,255,255,253,7,209,248,15,192,1,255,255,253,7,210,248,15,192,1,254,170,253,7,211,244,15,192,1,248,0,189,6,131,240,5,64,1,248,0,189,0,11,226,192,0,1,248,0,189,0,15,215,244,0,1,248,0,189,0,63,199,253,0,1,248,0,189,0,255,0,255,128,1,255,255,253,7,253,0,63,224,1,255,255,254,127,244,0,15,248,1,254,170,254,255,192,0,2,244,1,168,0,189,61,0,0,0,160,0,0,0,0,0,0,0,0,0, + // 0x98ce 风 + 206,152,35,35,59,37,1,252,0,21,85,85,85,85,85,80,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,63,64,0,0,0,11,240,0,0,63,64,0,0,0,11,240,0,0,63,64,0,0,16,11,240,0,0,63,64,0,0,63,11,240,0,0,63,66,128,0,190,11,240,0,0,63,95,224,0,253,11,240,0,0,63,75,244,1,252,11,240,0,0,63,67,252,3,248,11,240,0,0,63,64,255,3,244,11,240,0,0,63,64,127,139,240,7,240,0,0,127,64,47,239,208,7,240,0,0,127,0,15,255,192,7,240,0,0,127,0,3,255,64,7,240,0,0,127,0,1,255,0,7,240,0,0,191,0,1,255,64,7,240,0,0,191,0,3,255,192,7,240,0,0,191,0,15,255,224,7,240,0,0,254,0,47,235,244,7,240,0,0,254,0,127,195,252,3,240,0,1,253,0,255,1,254,3,240,0,2,252,3,253,0,255,67,240,0,3,252,15,248,0,63,195,244,96,3,248,127,240,0,47,227,244,116,7,244,191,192,0,15,210,248,124,15,240,47,0,0,10,1,252,188,15,224,8,0,0,0,0,253,184,63,208,0,0,0,0,0,255,244,127,192,0,0,0,0,0,127,240,47,64,0,0,0,0,0,47,224,6,0,0,0,0,0,0,6,64,0,0,0,0,0,0,0,0,0, + // 0x9971 饱 + 113,153,35,35,59,37,1,253,0,100,0,0,10,64,0,0,0,0,253,0,0,15,192,0,0,0,0,253,0,0,31,192,0,0,0,0,252,0,0,63,64,0,0,0,1,252,0,0,127,255,255,255,128,2,248,0,0,191,255,255,255,128,3,255,255,224,255,255,255,255,128,3,255,255,227,248,0,0,47,128,7,255,255,215,240,0,0,47,128,11,224,15,207,224,0,0,47,64,15,208,31,191,192,0,0,47,64,31,192,63,191,255,255,244,47,64,63,128,127,63,255,255,244,47,64,127,21,109,45,255,255,244,47,64,190,63,64,5,252,2,244,63,64,44,63,64,1,252,2,244,63,64,4,63,64,1,252,2,244,63,64,0,63,64,1,252,2,244,63,64,0,63,64,1,252,2,244,63,64,0,63,64,1,252,2,244,63,64,0,63,64,1,255,255,244,63,64,0,63,64,1,255,255,244,63,0,0,63,64,1,255,255,244,127,0,0,63,64,1,252,0,191,255,0,0,63,64,1,252,0,63,253,0,0,63,66,65,252,0,63,228,0,0,63,79,129,252,0,0,0,0,0,63,191,193,252,0,0,2,144,0,63,255,65,252,0,0,2,244,0,63,252,1,252,0,0,3,244,0,63,240,0,253,0,0,7,240,0,255,128,0,255,255,255,255,224,0,254,0,0,127,255,255,255,192,0,116,0,0,27,255,255,254,0,0,16,0,0,0,0,0,0,0, + // 0x9a6c 马 + 108,154,32,34,16,37,2,252,3,255,255,255,255,255,252,0,3,255,255,255,255,255,252,0,3,255,255,255,255,255,252,0,1,85,85,85,85,87,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,3,248,0,0,15,224,0,0,3,248,0,0,15,224,0,0,3,244,0,0,15,208,0,0,3,244,0,0,15,208,0,0,3,244,0,0,15,208,0,0,7,240,0,0,15,192,0,0,7,240,0,0,31,192,0,0,7,240,0,0,31,192,0,0,11,240,0,0,47,192,0,0,15,240,0,0,47,255,255,255,255,255,255,0,63,255,255,255,255,255,255,0,63,255,255,255,255,255,255,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,253,255,255,255,255,255,255,64,253,255,255,255,255,255,255,65,252,255,255,255,255,255,255,65,252,21,85,85,85,85,85,2,252,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,11,244,0,0,0,0,1,0,31,240,0,0,0,0,3,255,255,224,0,0,0,0,1,255,255,192,0,0,0,0,1,255,254,0,0,0,0,0,0,0,0,0, + // 0x9a71 驱 + 113,154,35,33,41,37,1,253,47,255,255,192,255,255,255,255,240,47,255,255,192,255,255,255,255,240,47,255,255,128,255,255,255,255,240,0,0,31,128,252,0,0,0,0,0,0,31,128,252,0,0,0,0,7,144,31,64,252,0,0,41,0,7,224,47,64,252,24,0,63,64,7,208,47,64,252,189,0,127,0,11,208,47,64,252,191,0,190,0,11,208,47,0,252,63,128,253,0,11,208,63,0,252,31,209,252,0,11,192,63,0,252,11,243,248,0,15,192,63,0,252,3,255,244,0,15,192,63,0,252,1,255,240,0,15,192,62,0,252,0,191,208,0,15,192,127,160,252,0,63,192,0,15,255,255,240,252,0,63,208,0,31,255,255,240,252,0,191,240,0,26,170,171,240,252,0,255,248,0,0,0,3,240,252,3,254,252,0,0,0,3,240,252,7,244,255,0,0,0,3,240,252,15,224,127,64,0,27,227,240,252,63,192,63,192,27,255,227,224,252,191,64,15,208,255,255,151,224,253,254,0,11,192,191,144,7,224,252,124,0,2,0,16,0,11,208,252,0,0,0,0,0,0,15,208,252,0,0,0,0,0,0,15,192,255,255,255,255,244,0,0,47,192,255,255,255,255,244,0,127,255,128,255,255,255,255,244,0,63,255,0,0,0,0,0,0,0,42,164,0,0,0,0,0,0, + // 0x9ad8 高 + 216,154,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,85,85,85,80,0,0,0,7,255,255,255,255,244,0,0,0,7,255,255,255,255,244,0,0,0,7,240,0,0,3,244,0,0,0,7,240,0,0,3,244,0,0,0,7,240,0,0,3,244,0,0,0,7,255,255,255,255,244,0,0,0,7,255,255,255,255,244,0,0,0,1,85,85,85,85,80,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,208,0,0,0,0,0,252,0,15,208,0,0,0,0,0,252,0,15,208,5,85,85,84,0,252,0,15,208,31,255,255,253,0,252,0,15,208,31,255,255,253,0,252,0,15,208,31,64,0,189,0,252,0,15,208,31,64,0,189,0,252,0,15,208,31,64,0,189,0,252,0,15,208,31,255,255,253,0,252,0,15,208,31,255,255,253,0,252,0,15,208,31,149,85,90,2,252,0,15,208,31,64,0,7,255,252,0,15,208,5,0,0,3,255,248,0,15,208,0,0,0,2,255,144,0, + // 0x9ec4 黄 + 196,158,33,36,68,37,2,252,0,0,63,128,0,127,0,0,0,0,0,63,128,0,127,0,0,0,0,0,63,128,0,127,0,0,0,3,255,255,255,255,255,255,248,0,3,255,255,255,255,255,255,248,0,3,255,255,255,255,255,255,248,0,0,0,63,128,0,127,0,0,0,0,0,63,128,0,127,0,0,0,0,0,63,128,0,127,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,254,85,91,249,85,111,208,0,0,253,0,7,244,0,15,208,0,0,253,0,7,244,0,15,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,254,85,91,249,85,95,208,0,0,253,0,7,244,0,15,208,0,0,253,0,7,244,0,15,208,0,0,254,85,91,249,85,111,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,0,9,0,0,36,0,0,0,0,0,127,128,0,191,144,0,0,0,11,255,208,0,255,254,0,0,1,255,254,0,0,11,255,244,0,127,255,224,0,0,0,127,255,64,63,253,0,0,0,0,2,254,0,15,64,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0, + // 0x9ede 點 + 222,158,35,35,59,37,1,253,0,0,0,0,0,1,252,0,0,5,85,85,85,64,1,252,0,0,15,255,255,255,128,1,252,0,0,15,255,255,255,128,1,252,0,0,15,64,244,15,128,1,252,0,0,15,148,244,143,128,1,252,0,0,15,184,244,255,128,1,252,0,0,15,124,245,223,128,1,252,0,0,15,108,246,207,128,1,255,255,248,15,93,247,143,128,1,255,255,248,15,93,251,79,128,1,255,255,248,15,64,245,15,128,1,252,0,0,15,149,249,95,128,1,252,0,0,15,255,255,255,128,1,252,0,0,15,255,255,255,128,1,252,0,0,0,1,248,0,0,1,252,0,0,0,1,248,0,0,1,252,0,0,10,171,254,170,128,1,252,0,0,31,255,255,255,199,255,255,255,192,31,255,255,255,199,255,255,255,192,0,1,248,0,7,255,255,255,192,0,1,248,0,7,224,0,15,192,0,1,254,191,215,224,0,15,192,63,255,255,255,215,224,0,15,192,63,255,255,255,215,224,0,15,192,63,165,80,0,7,224,0,15,192,0,0,5,62,7,224,0,15,192,6,79,31,31,7,224,0,15,192,11,207,79,15,199,224,0,15,192,15,143,139,135,215,224,0,15,192,15,75,135,195,231,255,255,255,192,31,75,195,193,235,255,255,255,192,63,7,195,128,7,255,255,255,192,189,1,64,0,7,224,0,31,192,24,0,0,0,7,224,0,10,128, + // 0x9f50 齐 + 80,159,34,36,68,37,2,252,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,3,248,0,0,15,244,0,0,0,1,254,0,0,47,224,0,0,0,0,127,128,0,191,192,0,0,0,0,47,240,2,255,0,0,0,0,0,11,253,15,252,0,0,0,0,0,1,255,255,240,0,0,0,0,0,0,63,255,128,0,0,0,0,0,0,191,255,224,0,0,0,0,0,47,255,255,255,144,0,0,0,107,255,254,27,255,255,164,0,191,255,255,208,0,191,255,255,208,255,255,244,0,0,2,255,255,192,63,251,232,0,0,6,182,191,0,20,2,252,0,0,7,240,0,0,0,2,252,0,0,7,240,0,0,0,2,252,0,0,7,240,0,0,0,2,252,0,0,7,240,0,0,0,2,252,0,0,7,240,0,0,0,3,252,0,0,7,240,0,0,0,3,248,0,0,7,240,0,0,0,7,244,0,0,7,240,0,0,0,15,240,0,0,7,240,0,0,0,47,240,0,0,7,240,0,0,0,127,208,0,0,7,240,0,0,2,255,128,0,0,7,240,0,0,31,255,0,0,0,7,240,0,0,11,248,0,0,0,7,240,0,0,2,208,0,0,0,7,240,0,0,0,0,0,0,0,0,0,0,0, + // 0xff1a : + 26,255,7,24,48,37,15,2,31,208,63,240,191,248,127,244,63,240,31,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,208,63,240,191,248,191,244,63,240,31,208, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Symbols_27.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Symbols_27.cpp new file mode 100644 index 0000000000..e07f03b5aa --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Symbols_27.cpp @@ -0,0 +1,38 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium_Symbols 37pt, capital 'A' height: 27px, width: 100% +extern const uint8_t NotoSans_Medium_Symbols_27[118] = { + 130,27,8,0,10,0,35,247, // unifont_t + // 0x08 - LCD_STR_THERMOMETER a.k.a 0x1f321 🌡 + 21,45,14,25,2,248,0,11,255,253,0,0,0,31,255,255,0,0,0,47,170,191,64,0,0,46,0,31,64,0,0,46,0,31,64,0,0,47,208,31,64,0,0,46,0,31,64,0,0,46,0,31,64,0,0,46,0,31,64,0,0,46,0,31,64,0,0,47,208,31,64,0,0,46,0,31,64,0,0,46,63,31,64,0,0,47,191,31,64,0,0,47,191,31,64,0,0,46,63,31,64,0,0,46,63,31,64,0,0,46,127,31,64,0,0,47,255,31,64,0,0,46,63,31,64,0,0,46,63,31,64,0,0,46,63,31,64,0,0,47,255,31,64,0,0,47,127,31,64,0,0,46,63,31,64,0,0,46,63,31,64,0,0,63,191,31,128,0,1,255,255,31,240,0,7,244,63,7,248,0,31,192,127,64,253,0,63,67,255,244,63,0,126,15,255,254,31,64,189,47,255,255,15,128,252,63,255,255,143,192,252,63,255,255,139,192,252,63,255,255,139,192,252,47,255,255,79,192,189,15,255,255,15,128,127,7,255,252,47,64,63,128,191,224,127,0,15,224,0,1,252,0,7,253,0,11,244,0,1,255,234,255,208,0,0,47,255,255,0,0,0,2,255,224,0,0, + // 0x09 - LCD_STR_DEGREE a.k.a 0x00b0 ° + 12,12,36,16,2,15,1,170,64,15,255,224,63,255,252,190,0,253,252,0,63,248,0,63,248,0,63,252,0,63,190,0,189,63,235,252,31,255,240,1,254,64, + // 0x0a - replacement for 0x2026 used in Greek language files … + 26,6,42,30,2,255,26,64,1,164,0,26,64,63,208,7,252,0,127,192,127,224,7,253,0,191,208,127,208,7,253,0,191,208,63,192,3,252,0,63,192,5,0,0,80,0,5,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Traditional_Chinese_27.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Traditional_Chinese_27.cpp new file mode 100644 index 0000000000..e43aee93f3 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Traditional_Chinese_27.cpp @@ -0,0 +1,646 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Traditional Chinese 37pt, capital 'A' height: 27px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 +extern const uint8_t NotoSans_Medium_Traditional_Chinese_27[20513] = { + 162,27,191,34,26,255,35,247, // unifont_t + // 0x22bf ⊿ + 191,34,29,30,240,37,3,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,2,192,0,0,0,0,0,0,11,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,191,192,0,0,0,0,0,2,255,192,0,0,0,0,0,11,255,192,0,0,0,0,0,47,239,192,0,0,0,0,0,191,143,192,0,0,0,0,2,254,15,192,0,0,0,0,11,248,15,192,0,0,0,0,47,224,15,192,0,0,0,0,191,128,15,192,0,0,0,2,254,0,15,192,0,0,0,11,248,0,15,192,0,0,0,31,224,0,15,192,0,0,0,127,128,0,15,192,0,0,1,255,0,0,15,192,0,0,7,252,0,0,15,192,0,0,31,240,0,0,15,192,0,0,127,192,0,0,15,192,0,1,255,0,0,0,15,192,0,7,252,0,0,0,15,192,0,31,240,0,0,0,15,192,0,127,192,0,0,0,15,192,1,255,0,0,0,0,15,192,7,255,255,255,255,255,255,192,31,255,255,255,255,255,255,192,127,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0, + // 0x4e00 一 + 0,78,35,4,36,37,1,13,63,255,255,255,255,255,255,255,244,127,255,255,255,255,255,255,255,244,127,255,255,255,255,255,255,255,244,127,255,255,255,255,255,255,255,244, + // 0x4e09 三 + 9,78,33,30,14,37,2,255,1,85,85,85,85,85,85,80,0,7,255,255,255,255,255,255,244,0,7,255,255,255,255,255,255,244,0,7,255,255,255,255,255,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,254,0,0,0,63,255,255,255,255,254,0,0,0,63,255,255,255,255,254,0,0,0,26,170,170,170,170,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,21,85,85,85,85,85,85,85,0, + // 0x4e0a 上 + 10,78,33,33,41,37,2,255,0,0,0,5,64,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,255,255,255,248,0,0,0,0,47,255,255,255,248,0,0,0,0,47,255,255,255,248,0,0,0,0,47,229,85,85,80,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,85,85,85,127,229,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x4e0b 下 + 11,78,33,32,32,37,2,253,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,106,170,170,175,250,170,170,170,64,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,232,0,0,0,0,0,0,0,15,255,128,0,0,0,0,0,0,15,255,248,0,0,0,0,0,0,15,255,255,64,0,0,0,0,0,15,231,255,240,0,0,0,0,0,15,224,191,254,0,0,0,0,0,15,224,15,255,192,0,0,0,0,15,224,1,255,248,0,0,0,0,15,224,0,63,248,0,0,0,0,15,224,0,11,240,0,0,0,0,15,224,0,1,192,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,208,0,0,0,0, + // 0x4e0d 不 + 13,78,33,33,41,37,2,253,21,85,85,85,85,85,85,85,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,0,0,0,0,255,64,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,63,244,0,0,0,0,0,0,0,191,244,0,0,0,0,0,0,2,255,244,176,0,0,0,0,0,7,255,246,253,0,0,0,0,0,31,255,251,255,128,0,0,0,0,127,247,244,191,240,0,0,0,2,255,199,244,31,253,0,0,0,11,255,7,244,7,255,128,0,0,63,252,7,244,0,255,224,0,1,255,240,7,244,0,47,252,0,15,255,128,7,244,0,11,255,0,191,253,0,7,244,0,2,255,192,255,240,0,7,244,0,0,127,192,63,128,0,7,244,0,0,47,0,28,0,0,7,244,0,0,4,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0, + // 0x4e26 並 + 38,78,33,34,50,37,2,254,0,1,128,0,0,0,228,0,0,0,15,240,0,0,2,254,0,0,0,7,244,0,0,3,252,0,0,0,3,252,0,0,11,244,0,0,0,0,254,0,0,15,240,0,0,0,0,255,0,0,47,192,0,0,0,0,126,0,0,63,128,0,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,21,85,91,249,91,245,85,85,0,0,0,3,240,7,240,0,0,0,0,0,3,240,7,240,0,0,0,0,0,3,240,7,240,1,0,0,2,240,3,240,7,240,3,248,0,3,244,3,240,7,240,7,244,0,2,248,3,240,7,240,11,240,0,1,252,3,240,7,240,15,240,0,0,253,3,240,7,240,15,208,0,0,190,3,240,7,240,31,192,0,0,127,3,240,7,240,63,192,0,0,63,67,240,7,240,63,64,0,0,63,131,240,7,240,127,0,0,0,47,195,240,7,240,255,0,0,0,31,195,240,7,240,253,0,0,0,31,195,240,7,241,252,0,0,0,9,3,240,7,240,20,0,0,0,0,3,240,7,240,0,0,0,0,0,3,240,7,240,0,0,0,0,0,3,240,7,240,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,106,170,170,170,170,170,170,170,64, + // 0x4e2d 中 + 45,78,31,35,24,37,3,253,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,21,85,85,111,213,85,85,80,127,255,255,255,255,255,255,244,127,255,255,255,255,255,255,244,127,255,255,255,255,255,255,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,127,85,85,111,213,85,87,244,127,255,255,255,255,255,255,244,127,255,255,255,255,255,255,244,127,255,255,255,255,255,255,244,127,0,0,31,192,0,3,244,127,0,0,31,192,0,3,244,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,31,192,0,0,0, + // 0x4e3b 主 + 59,78,33,34,50,37,2,254,0,0,0,24,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,255,208,0,0,0,0,0,0,0,63,244,0,0,0,0,0,0,0,15,253,0,0,0,0,0,0,0,2,255,64,0,0,0,0,0,0,0,191,192,0,0,0,5,85,85,85,127,85,85,84,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,85,85,91,249,85,85,64,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,85,85,85,85,85,85,85,85,64, + // 0x4e4b 之 + 75,78,35,35,59,37,1,253,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,1,85,85,86,253,85,85,84,0,7,255,255,255,255,255,255,254,0,7,255,255,255,255,255,255,255,64,7,255,255,255,255,255,255,254,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,31,244,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,255,128,0,0,0,2,0,0,3,254,0,0,0,0,11,240,0,31,248,0,0,0,0,15,240,0,127,224,0,0,0,0,31,224,1,255,128,0,0,0,0,63,224,11,254,0,0,0,0,0,127,240,63,248,0,0,0,0,0,255,253,255,208,0,0,0,0,1,255,255,255,0,0,0,0,0,3,252,191,252,0,0,0,0,0,7,248,63,249,0,0,0,0,0,15,240,11,255,233,64,0,0,0,63,224,1,255,255,255,255,255,244,191,192,0,47,255,255,255,255,240,47,64,0,1,111,255,255,255,224,6,0,0,0,0,5,85,85,64, + // 0x4ea4 交 + 164,78,33,36,68,37,2,252,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,85,85,85,91,249,85,85,85,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,61,0,0,15,128,0,0,0,0,255,128,0,63,240,0,0,0,3,255,0,0,31,253,0,0,0,15,252,0,0,7,255,128,0,0,63,240,0,0,0,255,224,0,1,255,192,0,0,0,47,248,0,11,255,1,0,0,20,11,255,0,127,252,63,0,0,63,130,255,128,127,224,63,128,0,191,64,191,64,15,64,47,192,0,255,0,44,0,4,0,15,224,2,253,0,0,0,0,0,11,244,7,252,0,0,0,0,0,3,252,15,244,0,0,0,0,0,1,255,63,224,0,0,0,0,0,0,191,255,192,0,0,0,0,0,0,63,255,0,0,0,0,0,0,0,31,253,0,0,0,0,0,0,0,127,255,64,0,0,0,0,0,2,255,255,240,0,0,0,0,0,47,255,127,254,0,0,0,0,6,255,248,11,255,228,0,0,1,191,255,208,1,255,255,144,0,191,255,253,0,0,47,255,255,128,255,255,208,0,0,2,255,255,192,63,248,0,0,0,0,27,255,0,46,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0, + // 0x4eae 亮 + 174,78,33,36,68,37,2,252,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,47,213,85,85,85,255,0,0,0,47,128,0,0,0,191,0,0,0,47,128,0,0,0,191,0,0,0,47,213,85,85,85,255,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,170,170,170,170,170,170,191,64,126,0,0,0,0,0,0,63,64,126,0,31,192,7,244,0,63,64,126,0,31,192,7,244,0,63,64,126,0,47,192,7,244,0,63,64,0,0,63,192,7,244,0,0,0,0,0,63,128,7,244,0,0,0,0,0,191,64,7,244,0,0,0,0,0,255,0,7,244,0,13,0,0,3,253,0,7,244,0,15,192,0,47,252,0,7,244,0,31,192,6,255,240,0,3,248,0,47,192,255,255,128,0,3,255,255,255,64,191,248,0,0,2,255,255,255,0,62,64,0,0,0,191,255,248,0,0,0,0,0,0,0,0,0,0, + // 0x4ee4 令 + 228,78,35,35,59,37,1,253,0,0,0,3,253,0,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,31,255,192,0,0,0,0,0,0,63,255,240,0,0,0,0,0,0,255,143,248,0,0,0,0,0,3,254,3,255,0,0,0,0,0,15,252,0,255,192,0,0,0,0,63,240,0,63,240,0,0,0,1,255,192,0,15,253,0,0,0,11,255,0,0,3,255,128,0,0,47,248,0,0,0,191,240,0,1,255,255,255,255,255,239,253,0,11,255,79,255,255,255,199,255,208,127,253,15,255,255,255,193,255,248,63,240,0,0,0,0,0,63,240,31,128,0,0,0,0,0,11,208,9,0,0,0,0,0,0,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,7,240,0,0,0,0,63,128,0,11,240,0,0,0,0,63,128,47,255,240,0,0,0,0,63,128,15,255,224,0,0,0,0,63,128,15,255,128,0,0,0,0,63,128,1,64,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0, + // 0x4ef6 件 + 246,78,35,35,59,37,1,253,0,0,80,0,0,21,0,0,0,0,0,254,0,0,63,64,0,0,0,1,253,7,144,63,64,0,0,0,2,252,11,240,63,64,0,0,0,3,248,15,224,63,64,0,0,0,11,240,15,208,63,64,0,0,0,15,224,15,192,63,64,0,0,0,47,192,47,213,127,149,85,0,0,63,128,63,255,255,255,255,128,0,255,0,63,255,255,255,255,128,2,255,0,191,255,255,255,255,128,3,255,0,254,0,63,64,0,0,15,255,1,252,0,63,64,0,0,47,255,3,252,0,63,64,0,0,191,255,7,244,0,63,64,0,0,127,127,1,240,0,63,64,0,0,62,63,0,0,0,63,64,0,0,28,63,0,0,0,63,64,0,0,0,63,1,85,85,127,149,85,80,0,63,3,255,255,255,255,255,244,0,63,3,255,255,255,255,255,244,0,63,3,255,255,255,255,255,244,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0, + // 0x4efd 份 + 253,78,35,35,59,37,1,253,0,0,160,0,0,0,0,0,0,0,0,253,0,31,255,255,0,0,0,2,252,0,31,255,255,0,0,0,3,248,0,31,255,255,64,0,0,7,244,2,64,0,47,192,0,0,15,240,7,240,0,31,192,0,0,31,208,11,240,0,15,224,0,0,63,192,15,208,0,15,240,0,0,191,64,47,192,0,7,244,0,1,255,0,63,128,0,3,252,0,3,255,0,191,0,0,1,254,0,11,255,1,253,0,0,0,255,64,31,255,3,252,0,0,0,127,192,127,255,11,240,0,0,0,47,244,255,255,31,224,0,0,0,15,248,255,127,63,255,255,255,255,251,240,124,63,15,47,255,255,255,244,192,32,63,0,47,255,255,255,244,0,0,63,0,0,31,208,3,244,0,0,63,0,0,31,192,3,244,0,0,63,0,0,31,192,3,244,0,0,63,0,0,47,128,3,240,0,0,63,0,0,63,128,7,240,0,0,63,0,0,63,64,7,240,0,0,63,0,0,127,0,7,240,0,0,63,0,0,254,0,7,240,0,0,63,0,1,252,0,7,240,0,0,63,0,3,252,0,11,240,0,0,63,0,11,244,0,11,240,0,0,63,0,31,240,0,15,224,0,0,63,0,191,192,0,31,224,0,0,63,3,255,0,47,255,208,0,0,63,3,252,0,15,255,192,0,0,63,1,240,0,15,255,0,0,0,42,0,64,0,1,64,0,0, + // 0x4f11 休 + 17,79,35,35,59,37,1,253,0,0,20,0,0,21,0,0,0,0,0,63,128,0,127,0,0,0,0,0,127,64,0,127,0,0,0,0,0,255,0,0,127,0,0,0,0,1,254,0,0,127,0,0,0,0,3,252,0,0,127,0,0,0,0,7,248,0,0,127,0,0,0,0,15,240,0,0,127,0,0,0,0,47,224,0,0,127,0,0,0,0,127,193,85,85,191,85,85,80,0,255,199,255,255,255,255,255,240,2,255,199,255,255,255,255,255,240,11,255,199,255,255,255,255,255,240,47,255,192,0,7,255,240,0,0,127,255,192,0,11,255,244,0,0,255,223,192,0,15,255,252,0,0,127,31,192,0,47,255,253,0,0,60,31,192,0,63,255,191,0,0,16,31,192,0,191,191,63,64,0,0,31,192,0,253,127,47,192,0,0,31,192,3,252,127,15,208,0,0,31,192,7,244,127,11,240,0,0,31,192,15,240,127,3,252,0,0,31,192,63,208,127,2,254,0,0,31,192,191,128,127,0,255,64,0,31,194,255,0,127,0,127,208,0,31,203,252,0,127,0,47,240,0,31,239,244,0,127,0,15,252,0,31,207,224,0,127,0,3,240,0,31,195,128,0,127,0,0,192,0,31,192,0,0,127,0,0,0,0,31,192,0,0,127,0,0,0,0,31,192,0,0,127,0,0,0,0,31,192,0,0,127,0,0,0,0,31,192,0,0,127,0,0,0, + // 0x4f4d 位 + 77,79,35,35,59,37,1,253,0,0,36,0,0,42,0,0,0,0,0,191,0,0,127,0,0,0,0,0,254,0,0,127,0,0,0,0,2,252,0,0,127,0,0,0,0,3,248,0,0,127,0,0,0,0,11,240,0,0,127,0,0,0,0,15,224,0,0,127,0,0,0,0,63,194,255,255,255,255,255,240,0,127,130,255,255,255,255,255,240,0,255,130,255,255,255,255,255,240,3,255,128,85,85,85,85,85,64,11,255,128,0,0,0,0,0,0,31,255,128,0,64,0,2,144,0,127,255,128,11,224,0,3,252,0,255,175,128,7,240,0,3,248,0,191,47,128,3,240,0,7,244,0,60,47,128,3,244,0,11,240,0,32,47,128,3,248,0,15,240,0,0,47,128,2,252,0,15,224,0,0,47,128,1,252,0,15,208,0,0,47,128,0,252,0,31,192,0,0,47,128,0,253,0,47,192,0,0,47,128,0,253,0,63,128,0,0,47,128,0,254,0,63,64,0,0,47,128,0,191,0,127,0,0,0,47,128,0,127,0,191,0,0,0,47,128,0,127,0,254,0,0,0,47,128,0,127,0,252,0,0,0,47,128,0,16,1,252,0,0,0,47,128,0,0,3,248,0,0,0,47,135,255,255,255,255,255,248,0,47,135,255,255,255,255,255,248,0,47,135,255,255,255,255,255,248,0,47,129,85,85,85,85,85,80,0,47,64,0,0,0,0,0,0, + // 0x4f4e 低 + 78,79,35,35,59,37,1,253,0,0,80,0,0,0,0,0,0,0,0,253,0,0,0,0,36,0,0,1,252,0,0,0,27,253,0,0,3,248,0,1,111,255,255,64,0,7,244,122,255,255,255,249,0,0,15,240,127,255,255,249,0,0,0,31,208,127,254,155,240,0,0,0,63,192,127,0,7,240,0,0,0,191,64,127,0,7,240,0,0,0,255,0,127,0,7,240,0,0,3,255,0,127,0,7,240,0,0,11,255,0,127,0,7,240,0,0,31,255,0,127,0,3,240,0,0,63,255,0,127,255,255,255,255,244,255,255,0,127,255,255,255,255,244,255,127,0,127,255,255,255,255,244,124,63,0,127,0,3,248,0,0,52,63,0,127,0,2,252,0,0,0,63,0,127,0,2,252,0,0,0,63,0,127,0,1,252,0,0,0,63,0,127,0,0,252,0,0,0,63,0,127,0,0,253,0,0,0,63,0,127,0,0,254,0,0,0,63,0,127,0,4,191,0,0,0,63,0,127,91,254,127,0,0,0,63,5,255,255,254,63,64,64,0,63,15,255,255,254,63,192,184,0,63,11,255,250,64,31,192,188,0,63,7,229,0,0,15,224,252,0,63,0,0,0,0,11,244,252,0,63,0,0,0,0,3,255,248,0,63,3,255,255,255,245,255,244,0,63,3,255,255,255,244,127,224,0,63,3,255,255,255,244,6,64,0,63,0,0,0,0,0,0,0, + // 0x4f5c 作 + 92,79,35,35,59,37,1,253,0,0,36,0,5,0,0,0,0,0,0,127,0,15,208,0,0,0,0,0,255,0,31,192,0,0,0,0,1,253,0,63,128,0,0,0,0,3,252,0,127,64,0,0,0,0,7,248,0,255,0,0,0,0,0,15,240,0,255,255,255,255,248,0,31,208,2,255,255,255,255,248,0,63,192,3,255,255,255,255,248,0,191,192,15,245,254,85,85,80,0,255,192,31,208,254,0,0,0,3,255,192,63,192,254,0,0,0,11,255,192,191,64,254,0,0,0,31,255,193,255,0,254,0,0,0,63,255,195,252,0,254,0,0,0,127,255,199,248,0,255,255,255,224,63,47,192,240,0,255,255,255,224,29,47,192,0,0,255,255,255,224,4,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,255,255,255,240,0,47,192,0,0,255,255,255,240,0,47,192,0,0,255,255,255,240,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,192,0,0,254,0,0,0,0,47,128,0,0,254,0,0,0, + // 0x4f9b 供 + 155,79,35,35,59,37,1,253,0,0,96,0,168,0,10,128,0,0,0,254,0,253,0,31,192,0,0,1,253,0,253,0,31,192,0,0,2,252,0,253,0,31,192,0,0,3,248,0,253,0,31,192,0,0,11,240,0,253,0,31,192,0,0,15,224,0,253,0,31,192,0,0,47,192,0,253,0,31,192,0,0,127,129,255,255,255,255,255,240,0,255,1,255,255,255,255,255,240,2,255,1,255,255,255,255,255,240,7,255,0,85,254,85,111,213,80,15,255,0,0,253,0,31,192,0,63,255,0,0,253,0,31,192,0,255,255,0,0,253,0,31,192,0,191,127,0,0,253,0,31,192,0,61,63,0,0,253,0,31,192,0,36,63,0,0,253,0,31,192,0,0,63,0,0,253,0,31,192,0,0,63,1,85,254,85,111,213,80,0,63,7,255,255,255,255,255,244,0,63,7,255,255,255,255,255,244,0,63,7,255,255,255,255,255,244,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,185,0,7,64,0,0,63,0,0,254,0,47,192,0,0,63,0,3,252,0,15,240,0,0,63,0,11,244,0,7,252,0,0,63,0,47,224,0,2,254,0,0,63,0,191,192,0,0,191,64,0,63,2,255,0,0,0,63,192,0,63,11,253,0,0,0,15,240,0,63,2,244,0,0,0,11,208,0,63,0,80,0,0,0,2,0, + // 0x4fdd 保 + 221,79,35,35,59,37,1,253,0,0,32,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,254,63,255,255,255,255,64,0,1,253,63,255,255,255,255,64,0,3,252,63,255,255,255,255,64,0,7,244,63,64,0,0,63,64,0,15,240,63,64,0,0,63,64,0,47,208,63,64,0,0,63,64,0,63,192,63,64,0,0,63,64,0,255,128,63,64,0,0,63,64,2,255,128,63,64,0,0,63,64,7,255,128,63,255,255,255,255,64,15,255,128,63,255,255,255,255,64,63,255,128,63,255,255,255,255,64,255,239,128,0,0,63,64,0,0,127,47,128,0,0,63,64,0,0,61,47,128,0,0,63,64,0,0,20,47,128,0,0,63,64,0,0,0,47,135,255,255,255,255,255,240,0,47,135,255,255,255,255,255,240,0,47,135,255,255,255,255,255,240,0,47,128,0,7,255,244,0,0,0,47,128,0,15,255,252,0,0,0,47,128,0,47,255,254,0,0,0,47,128,0,191,191,127,128,0,0,47,128,1,254,63,111,208,0,0,47,128,7,252,63,79,244,0,0,47,128,47,240,63,67,253,0,0,47,128,191,208,63,65,255,64,0,47,135,255,64,63,64,127,224,0,47,159,253,0,63,64,31,252,0,47,139,244,0,63,64,7,244,0,47,131,192,0,63,64,1,208,0,47,128,0,0,63,64,0,0,0,47,64,0,0,63,0,0,0, + // 0x4fe1 信 + 225,79,35,35,59,37,1,253,0,0,32,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,254,11,255,255,255,252,0,0,1,253,11,255,255,255,252,0,0,3,252,11,255,255,255,252,0,0,7,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,47,211,255,255,255,255,255,248,0,63,131,255,255,255,255,255,248,0,255,131,255,255,255,255,255,244,2,255,128,0,0,0,0,0,0,7,255,128,0,0,0,0,0,0,31,255,128,15,255,255,255,254,0,63,255,128,15,255,255,255,255,0,255,239,128,15,255,255,255,255,0,191,47,128,0,0,0,0,0,0,61,47,128,0,0,0,0,0,0,56,47,128,0,0,0,0,0,0,0,47,128,15,255,255,255,254,0,0,47,128,15,255,255,255,254,0,0,47,128,10,170,170,170,170,0,0,47,128,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,47,128,47,255,255,255,255,0,0,47,128,47,255,255,255,255,0,0,47,128,47,234,170,170,255,0,0,47,128,47,128,0,0,63,0,0,47,128,47,128,0,0,63,0,0,47,128,47,128,0,0,63,0,0,47,128,47,128,0,0,63,0,0,47,128,47,255,255,255,255,0,0,47,128,47,255,255,255,255,0,0,47,128,47,255,255,255,255,0,0,47,128,47,128,0,0,63,0,0,26,64,47,128,0,0,42,0, + // 0x500b 個 + 11,80,34,36,68,37,1,252,0,2,144,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,7,241,255,255,255,255,255,208,0,11,241,255,255,255,255,255,208,0,15,209,255,255,255,255,255,208,0,47,193,252,0,0,0,15,208,0,63,129,252,0,63,0,15,208,0,127,1,252,0,63,0,15,208,0,255,1,252,0,63,0,15,208,2,255,1,252,0,63,0,15,208,3,255,1,252,106,191,170,143,208,11,255,1,252,255,255,255,207,208,31,255,1,252,255,255,255,207,208,63,255,1,252,0,63,0,15,208,255,255,1,252,0,63,0,15,208,255,191,1,252,0,63,0,15,208,188,127,1,252,0,63,0,15,208,52,127,1,252,47,255,254,15,208,16,127,1,252,47,255,254,15,208,0,127,1,252,47,85,126,15,208,0,127,1,252,47,0,62,15,208,0,127,1,252,47,0,62,15,208,0,127,1,252,47,0,62,15,208,0,127,1,252,47,0,62,15,208,0,127,1,252,47,85,126,15,208,0,127,1,252,47,255,254,15,208,0,127,1,252,47,255,254,15,208,0,127,1,252,0,0,0,15,208,0,127,1,252,0,0,0,15,208,0,127,1,252,0,0,0,15,208,0,127,1,255,255,255,255,255,208,0,127,1,255,255,255,255,255,208,0,127,1,255,255,255,255,255,208,0,127,1,252,0,0,0,15,208,0,127,1,252,0,0,0,10,128,0,0,0,0,0,0,0,0,0, + // 0x503c 值 + 60,80,35,35,59,37,1,253,0,0,80,0,0,58,64,0,0,0,0,253,0,0,63,64,0,0,0,1,252,0,0,127,0,0,0,0,3,248,0,0,127,0,0,0,0,3,246,255,255,255,255,255,208,0,11,242,255,255,255,255,255,208,0,15,210,255,255,255,255,255,208,0,47,192,0,0,252,0,0,0,0,127,64,0,1,252,0,0,0,0,255,0,0,1,248,0,0,0,2,255,0,63,255,255,255,253,0,3,255,0,63,255,255,255,253,0,15,255,0,63,170,170,170,253,0,47,255,0,63,0,0,0,253,0,127,255,0,63,0,0,0,253,0,191,191,0,63,149,85,85,253,0,62,127,0,63,255,255,255,253,0,28,127,0,63,255,255,255,253,0,0,127,0,63,0,0,0,253,0,0,127,0,63,0,0,0,253,0,0,127,0,63,149,85,85,253,0,0,127,0,63,255,255,255,253,0,0,127,0,63,255,255,255,253,0,0,127,0,63,0,0,0,253,0,0,127,0,63,0,0,0,253,0,0,127,0,63,0,0,0,253,0,0,127,0,63,255,255,255,253,0,0,127,0,63,255,255,255,253,0,0,127,0,63,149,85,85,253,0,0,127,0,63,0,0,0,253,0,0,127,0,63,0,0,0,253,0,0,127,31,255,255,255,255,255,244,0,127,31,255,255,255,255,255,244,0,127,31,255,255,255,255,255,244,0,127,0,0,0,0,0,0,0, + // 0x504f 偏 + 79,80,35,35,59,37,1,253,0,1,64,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,7,243,255,255,255,255,255,244,0,11,227,255,255,255,255,255,244,0,15,211,255,255,255,255,255,244,0,47,192,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,127,0,106,170,170,170,170,128,0,255,0,191,255,255,255,255,192,1,254,0,191,255,255,255,255,192,3,254,0,189,0,0,0,31,192,11,254,0,189,0,0,0,31,192,31,254,0,189,0,0,0,31,192,63,254,0,191,170,170,170,191,192,191,254,0,191,255,255,255,255,192,255,190,0,191,255,255,255,255,192,188,190,0,253,0,0,0,0,0,52,190,0,253,0,0,0,0,0,16,190,0,255,170,170,170,170,144,0,190,0,255,255,255,255,255,224,0,190,0,255,255,255,255,255,224,0,190,0,255,208,244,46,7,224,0,190,1,255,208,244,46,7,224,0,190,2,255,208,244,46,7,224,0,190,3,255,208,244,46,7,224,0,190,3,251,255,255,255,255,224,0,190,7,251,255,255,255,255,224,0,190,11,235,250,254,191,175,224,0,190,15,219,208,244,46,7,224,0,190,47,203,208,244,46,7,224,0,190,127,75,208,244,46,7,224,0,190,191,11,208,244,46,7,224,0,190,45,11,208,244,46,191,224,0,190,4,11,208,244,46,127,208,0,126,0,11,192,164,41,62,64, + // 0x505c 停 + 92,80,35,35,59,37,1,253,0,0,80,0,0,42,0,0,0,0,0,253,0,0,127,0,0,0,0,1,252,0,0,127,0,0,0,0,3,252,0,0,127,0,0,0,0,7,247,255,255,255,255,255,244,0,15,243,255,255,255,255,255,244,0,31,211,255,255,255,255,255,244,0,63,192,0,0,0,0,0,0,0,127,64,5,85,85,85,84,0,0,255,0,31,255,255,255,254,0,3,255,0,31,255,255,255,254,0,7,255,0,31,128,0,0,254,0,31,255,0,31,128,0,0,254,0,63,255,0,31,213,85,85,254,0,255,255,0,31,255,255,255,254,0,255,127,0,31,255,255,255,254,0,124,63,0,0,0,0,0,0,0,52,63,0,0,0,0,0,0,0,0,63,15,255,255,255,255,255,248,0,63,15,255,255,255,255,255,248,0,63,15,250,170,170,170,171,248,0,63,15,192,0,0,0,1,248,0,63,15,192,0,0,0,1,248,0,63,15,195,255,255,255,245,248,0,63,15,195,255,255,255,245,248,0,63,0,3,255,255,255,240,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,1,255,255,0,0,0,0,63,0,0,255,254,0,0,0,0,63,0,0,191,244,0,0,0, + // 0x5075 偵 + 117,80,34,36,68,37,1,252,0,0,36,0,0,191,0,0,0,0,0,191,0,0,191,0,0,0,0,0,254,0,0,191,0,0,0,0,1,252,0,0,191,255,255,224,0,3,248,0,0,191,255,255,240,0,11,244,0,0,191,255,255,240,0,15,240,0,0,191,0,0,0,0,47,208,0,0,191,0,0,0,0,127,192,0,0,191,0,0,0,0,255,128,63,255,255,255,255,0,2,255,128,63,255,255,255,255,0,7,255,128,63,170,170,170,255,0,31,255,128,63,0,0,0,127,0,127,255,128,63,0,0,0,127,0,255,175,128,63,255,255,255,255,0,191,47,128,63,255,255,255,255,0,60,47,128,63,170,170,170,191,0,36,47,128,63,0,0,0,127,0,0,47,128,63,0,0,0,127,0,0,47,128,63,149,85,85,191,0,0,47,128,63,255,255,255,255,0,0,47,128,63,255,255,255,255,0,0,47,128,63,0,0,0,127,0,0,47,128,63,0,0,0,127,0,0,47,128,63,0,0,0,127,0,0,47,128,63,255,255,255,255,0,0,47,128,63,255,255,255,255,0,0,47,128,42,170,170,170,170,0,0,47,128,0,36,0,6,0,0,0,47,128,0,255,64,63,208,0,0,47,128,7,255,0,47,252,0,0,47,128,127,248,0,7,255,64,0,47,135,255,208,0,0,191,224,0,47,135,254,0,0,0,31,240,0,47,128,244,0,0,0,7,64,0,0,0,0,0,0,0,0,0, + // 0x5099 備 + 153,80,35,36,68,37,1,252,0,2,144,0,189,0,31,128,0,0,3,244,0,253,0,31,192,0,0,7,240,0,253,0,31,192,0,0,15,231,255,255,255,255,255,244,0,15,199,255,255,255,255,255,244,0,47,199,255,255,255,255,255,244,0,63,64,0,253,0,31,192,0,0,191,0,0,253,0,31,192,0,0,254,0,0,189,0,31,192,0,2,254,0,0,0,0,0,0,0,3,254,3,255,255,255,255,255,248,15,254,3,255,255,255,255,255,248,31,254,3,255,255,255,255,255,248,63,254,3,240,0,0,0,0,0,255,254,3,240,0,0,0,0,0,255,190,3,240,0,0,0,0,0,124,190,3,240,255,255,255,255,224,52,190,3,240,255,255,255,255,224,16,190,3,240,254,171,250,171,224,0,190,3,240,252,2,240,7,224,0,190,3,240,252,2,240,7,224,0,190,3,240,253,87,245,91,224,0,190,3,240,255,255,255,255,224,0,190,3,240,255,255,255,255,224,0,190,7,240,252,2,240,7,224,0,190,7,224,252,2,240,7,224,0,190,11,224,253,87,245,91,224,0,190,15,208,255,255,255,255,224,0,190,15,192,255,255,255,255,224,0,190,31,192,252,2,240,7,224,0,190,47,128,252,2,240,7,224,0,190,63,64,252,2,240,7,224,0,190,191,0,252,2,241,175,224,0,190,61,0,252,2,241,255,208,0,190,8,0,168,1,80,255,64,0,0,0,0,0,0,0,0,0, + // 0x50b3 傳 + 179,80,35,35,59,37,1,253,0,0,80,0,0,42,0,0,0,0,0,253,0,0,63,0,0,0,0,1,252,0,0,63,0,0,0,0,3,251,255,255,255,255,255,240,0,7,247,255,255,255,255,255,240,0,15,226,170,170,191,170,170,160,0,31,192,0,0,63,0,0,0,0,63,128,191,255,255,255,255,192,0,191,0,191,255,255,255,255,192,1,255,0,190,0,127,0,47,192,3,255,0,190,0,63,0,31,192,11,255,0,191,255,255,255,255,192,47,255,0,191,255,255,255,255,192,127,255,0,190,0,63,0,31,192,255,191,0,190,0,63,0,31,192,190,63,0,191,255,255,255,255,192,60,63,0,191,255,255,255,255,192,48,63,0,0,0,127,3,252,0,0,63,0,0,0,63,0,255,0,0,63,1,85,85,191,85,191,128,0,63,3,255,255,255,255,255,224,0,63,3,255,255,255,255,255,244,0,63,1,85,80,0,15,225,240,0,63,0,0,0,0,15,224,64,0,63,15,255,255,255,255,255,248,0,63,15,255,255,255,255,255,248,0,63,10,171,234,170,175,250,164,0,63,0,11,208,0,15,224,0,0,63,0,15,244,0,15,224,0,0,63,0,3,253,0,15,224,0,0,63,0,0,255,0,15,224,0,0,63,0,0,63,64,15,224,0,0,63,0,0,28,47,255,208,0,0,63,0,0,0,31,255,192,0,0,63,0,0,0,15,250,0,0, + // 0x50be 傾 + 190,80,35,36,68,37,1,252,0,1,0,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,15,208,0,63,255,255,255,244,0,31,192,0,63,255,255,255,244,0,47,143,192,63,255,255,255,244,0,63,15,192,0,0,253,0,0,0,127,15,192,0,1,252,0,0,0,253,15,192,6,171,254,170,128,1,253,15,192,11,255,255,255,192,3,253,15,193,203,255,255,255,192,7,253,15,195,251,208,0,15,192,15,253,15,207,255,208,0,15,192,31,253,15,239,219,208,0,15,192,63,253,15,255,11,229,85,95,192,255,253,15,252,11,255,255,255,192,254,253,15,240,11,255,255,255,192,188,253,15,192,11,208,0,15,192,52,253,15,192,11,208,0,15,192,16,253,15,192,11,208,0,15,192,0,253,15,192,11,255,255,255,192,0,253,15,192,11,255,255,255,192,0,253,15,192,219,229,85,95,192,0,253,15,192,255,208,0,15,192,0,253,15,192,255,208,0,15,192,0,253,15,193,255,208,0,15,192,0,253,15,193,255,255,255,255,192,0,253,15,255,251,255,255,255,192,0,253,15,255,230,170,170,170,128,0,253,3,255,128,36,0,32,0,0,253,0,0,0,254,2,252,0,0,253,0,0,7,254,1,255,64,0,253,0,0,127,248,0,127,208,0,253,0,3,255,208,0,15,244,0,253,0,2,254,0,0,3,244,0,253,0,0,224,0,0,0,192,0,0,0,0,0,0,0,0,0, + // 0x5132 儲 + 50,81,35,36,68,37,1,252,0,6,64,0,0,2,244,0,0,0,11,230,170,164,2,244,3,224,0,15,203,255,248,2,244,7,240,0,31,203,255,248,2,244,11,208,0,63,64,0,0,107,254,159,192,0,63,0,0,0,191,255,239,128,0,190,42,170,170,191,255,255,64,0,253,63,255,255,2,244,127,0,2,252,63,255,255,2,244,253,0,3,252,0,0,0,2,245,252,0,11,252,0,0,0,2,247,244,0,31,252,10,170,168,255,255,255,244,63,252,15,255,253,255,255,255,248,191,252,15,255,253,255,255,255,248,255,252,0,0,0,0,191,40,0,188,252,0,0,0,2,252,191,0,52,252,0,0,0,7,244,47,128,16,252,15,255,252,31,208,11,0,0,252,15,255,252,191,255,255,192,0,252,10,170,170,255,255,255,192,0,252,0,0,7,255,255,255,192,0,252,0,0,1,251,208,15,192,0,252,15,255,253,71,208,15,192,0,252,15,255,253,7,208,15,192,0,252,15,234,253,7,250,175,192,0,252,15,128,125,7,255,255,192,0,252,15,128,125,7,255,255,192,0,252,15,128,125,7,208,15,192,0,252,15,128,125,7,208,15,192,0,252,15,128,125,7,208,15,192,0,252,15,255,253,7,208,15,192,0,252,15,255,253,7,255,255,192,0,252,15,234,169,7,255,255,192,0,252,15,128,0,7,255,255,192,0,188,10,64,0,7,208,15,192,0,0,0,0,0,0,0,0,0, + // 0x5145 充 + 69,81,34,36,68,37,2,252,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,11,244,0,0,0,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,0,0,11,244,0,4,0,0,0,0,0,15,240,0,63,0,0,0,0,0,47,192,0,191,192,0,0,0,0,63,128,0,47,244,0,0,0,0,191,0,0,11,253,0,0,0,0,254,0,0,1,255,64,0,10,171,255,175,255,255,255,208,0,31,255,255,255,255,255,255,244,0,15,255,255,255,255,255,255,252,0,15,255,254,170,149,80,2,255,0,0,0,0,0,0,0,0,253,0,0,0,15,208,2,252,0,48,0,0,0,31,208,2,252,0,0,0,0,0,31,208,2,252,0,0,0,0,0,47,192,2,252,0,0,0,0,0,47,192,2,252,0,0,0,0,0,63,192,2,252,0,0,0,0,0,127,64,2,252,0,4,0,0,0,255,0,2,252,0,11,128,0,1,255,0,2,252,0,11,208,0,3,253,0,2,252,0,15,208,0,31,248,0,2,252,0,15,208,0,191,240,0,2,252,0,15,192,27,255,192,0,1,253,64,111,192,255,254,0,0,1,255,255,255,128,127,224,0,0,0,255,255,255,0,62,0,0,0,0,47,255,249,0,0,0,0,0,0,0,0,0,0, + // 0x5148 先 + 72,81,33,36,68,37,2,252,0,0,0,3,240,0,0,0,0,0,7,224,3,244,0,0,0,0,0,11,240,3,244,0,0,0,0,0,15,224,3,244,0,0,0,0,0,15,208,3,244,0,0,0,0,0,47,213,87,245,85,85,80,0,0,63,255,255,255,255,255,240,0,0,127,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,1,253,0,3,244,0,0,0,0,3,252,0,3,244,0,0,0,0,7,248,0,3,244,0,0,0,0,15,240,0,3,244,0,0,0,0,7,208,0,3,244,0,0,0,0,0,64,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,21,85,111,213,87,253,85,85,64,0,0,47,192,2,252,0,0,0,0,0,63,192,2,252,0,0,0,0,0,63,128,2,252,0,0,0,0,0,63,64,2,252,0,0,0,0,0,191,0,2,252,0,0,0,0,0,255,0,2,252,0,0,0,0,2,253,0,2,252,0,14,64,0,3,252,0,2,252,0,15,192,0,15,244,0,2,252,0,15,192,0,127,240,0,2,252,0,31,192,2,255,192,0,2,252,0,47,128,111,255,0,0,1,255,255,255,128,255,248,0,0,0,255,255,255,0,63,208,0,0,0,127,255,253,0,29,0,0,0,0,0,85,64,0,0,0,0,0,0,0,0,0,0, + // 0x5149 光 + 73,81,35,36,68,37,1,252,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,64,0,0,109,0,1,252,0,2,248,0,0,191,0,1,252,0,3,252,0,0,63,128,1,252,0,7,248,0,0,47,192,1,252,0,15,240,0,0,15,224,1,252,0,15,224,0,0,11,240,1,252,0,47,192,0,0,3,248,1,252,0,63,128,0,0,3,252,1,252,0,255,0,0,0,1,253,1,252,1,253,0,0,0,0,228,1,252,0,104,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,21,85,91,245,85,255,85,85,80,0,0,11,240,0,191,0,0,0,0,0,11,240,0,191,0,0,0,0,0,15,240,0,191,0,0,0,0,0,15,224,0,191,0,0,0,0,0,15,208,0,191,0,0,0,0,0,31,208,0,191,0,0,0,0,0,63,192,0,191,0,0,0,0,0,63,128,0,191,0,1,0,0,0,255,64,0,191,0,2,208,0,1,255,0,0,191,0,3,244,0,7,253,0,0,191,0,3,244,0,31,248,0,0,191,0,3,244,0,255,240,0,0,191,0,3,240,27,255,192,0,0,191,64,11,240,127,254,0,0,0,127,255,255,224,47,240,0,0,0,63,255,255,192,14,0,0,0,0,11,255,254,64,0,0,0,0,0,0,0,0,0, + // 0x5165 入 + 101,81,34,33,41,37,2,253,0,1,85,85,84,0,0,0,0,0,7,255,255,252,0,0,0,0,0,7,255,255,252,0,0,0,0,0,7,255,255,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,10,253,0,0,0,0,0,0,0,31,254,0,0,0,0,0,0,0,47,255,0,0,0,0,0,0,0,63,255,0,0,0,0,0,0,0,63,255,64,0,0,0,0,0,0,191,191,128,0,0,0,0,0,0,255,47,192,0,0,0,0,0,0,255,31,208,0,0,0,0,0,2,253,15,240,0,0,0,0,0,3,252,11,244,0,0,0,0,0,11,248,7,248,0,0,0,0,0,15,240,3,253,0,0,0,0,0,47,224,1,255,0,0,0,0,0,127,192,0,255,128,0,0,0,0,255,64,0,127,208,0,0,0,2,255,0,0,47,240,0,0,0,11,253,0,0,15,252,0,0,0,47,248,0,0,3,255,0,0,0,191,224,0,0,1,255,192,0,2,255,192,0,0,0,127,244,0,31,255,0,0,0,0,47,254,0,191,252,0,0,0,0,7,255,208,255,224,0,0,0,0,1,255,192,63,64,0,0,0,0,0,63,0,8,0,0,0,0,0,0,8,0, + // 0x5168 全 + 104,81,35,34,50,37,1,254,0,0,0,3,253,0,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,31,255,192,0,0,0,0,0,0,63,255,240,0,0,0,0,0,0,255,143,248,0,0,0,0,0,3,255,3,254,0,0,0,0,0,15,252,1,255,128,0,0,0,0,63,240,0,127,240,0,0,0,0,255,208,0,31,252,0,0,0,7,255,64,0,7,255,64,0,0,31,253,0,0,0,255,224,0,0,191,240,0,0,0,63,253,0,7,255,192,0,0,0,11,255,192,63,254,0,0,0,0,2,255,244,127,247,255,255,255,255,255,175,240,31,71,255,255,255,255,255,71,208,8,7,255,255,255,255,255,64,64,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,253,0,0,0,0,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192, + // 0x5171 共 + 113,81,33,35,59,37,2,253,0,0,169,0,0,26,128,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,5,85,255,85,85,127,213,85,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,85,85,255,85,85,127,213,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,45,0,0,0,0,0,191,192,0,255,128,0,0,0,2,255,64,0,127,240,0,0,0,15,253,0,0,15,253,0,0,0,63,244,0,0,3,255,128,0,1,255,208,0,0,0,191,240,0,15,255,0,0,0,0,31,252,0,127,248,0,0,0,0,7,255,0,47,208,0,0,0,0,0,254,0,6,0,0,0,0,0,0,48,0, + // 0x5177 具 + 119,81,33,34,50,37,2,253,0,26,170,170,170,170,170,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,47,192,0,0,0,191,0,0,0,47,192,0,0,0,191,0,0,0,47,192,0,0,0,191,0,0,0,47,234,170,170,170,255,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,47,192,0,0,0,191,0,0,0,47,192,0,0,0,191,0,0,0,47,192,0,0,0,191,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,47,234,170,170,170,255,0,0,0,47,192,0,0,0,191,0,0,0,47,192,0,0,0,191,0,0,0,47,234,170,170,170,255,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,47,64,0,62,0,0,0,0,2,255,224,1,255,228,0,0,0,111,255,128,0,191,255,128,0,11,255,248,0,0,7,255,248,0,191,255,128,0,0,0,111,255,128,63,244,0,0,0,0,2,255,0,14,0,0,0,0,0,0,56,0, + // 0x5197 冗 + 151,81,34,33,41,37,2,253,21,85,85,85,85,85,85,85,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,128,0,0,0,0,0,191,0,63,128,0,0,0,0,0,191,0,63,128,0,0,0,0,0,191,0,63,128,0,0,0,0,0,191,0,63,128,0,0,0,0,0,191,0,63,128,0,0,0,0,0,191,0,42,64,191,255,255,255,128,106,0,0,0,191,255,255,255,128,0,0,0,0,191,255,255,255,128,0,0,0,0,191,0,0,127,128,0,0,0,0,191,0,0,63,128,0,0,0,0,191,0,0,63,128,0,0,0,0,191,0,0,63,128,0,0,0,0,191,0,0,63,128,0,0,0,0,255,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,1,253,0,0,63,128,4,0,0,3,252,0,0,63,128,15,64,0,7,248,0,0,63,128,15,224,0,15,240,0,0,63,128,15,208,0,63,224,0,0,63,128,15,208,1,255,192,0,0,63,128,15,192,11,255,0,0,0,63,192,31,192,191,252,0,0,0,63,255,255,192,255,240,0,0,0,47,255,255,64,63,64,0,0,0,15,255,254,0,36,0,0,0,0,0,85,80,0, + // 0x51b7 冷 + 183,81,35,35,59,37,1,253,0,0,0,0,2,248,0,0,0,0,0,0,0,7,254,0,0,0,7,0,0,0,15,255,64,0,0,15,208,0,0,47,255,208,0,0,63,248,0,0,191,143,240,0,0,11,255,0,1,255,7,252,0,0,2,255,192,3,252,2,255,0,0,0,127,208,15,244,0,191,208,0,0,31,128,127,208,0,47,244,0,0,6,1,255,128,0,11,254,0,0,0,7,254,0,0,2,255,208,0,0,47,251,255,255,254,127,248,0,1,255,227,255,255,254,31,244,0,0,255,67,255,255,254,3,224,0,0,124,0,0,0,0,0,128,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,66,255,255,255,255,255,0,0,7,210,255,255,255,255,255,0,0,15,242,255,255,255,255,255,0,0,47,208,0,31,208,0,191,0,0,63,192,0,31,192,0,191,0,0,255,64,0,31,192,0,191,0,1,254,0,0,31,192,0,191,0,3,252,0,0,31,192,0,191,0,11,248,0,0,31,192,0,191,0,31,240,0,0,31,192,0,191,0,63,208,0,0,31,192,255,254,0,127,192,0,0,31,192,191,253,0,31,64,0,0,31,192,127,248,0,6,0,0,0,31,192,20,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0, + // 0x51c6 准 + 198,81,35,35,59,37,1,253,0,0,0,0,164,0,25,0,0,0,0,0,0,254,0,63,192,0,2,0,0,1,252,0,63,64,0,11,224,0,3,248,0,127,0,0,31,252,0,7,244,0,254,0,0,7,255,64,15,240,0,252,0,0,0,255,208,31,208,2,252,0,0,0,47,240,63,255,255,255,255,224,0,11,192,127,255,255,255,255,224,0,2,64,255,255,255,255,255,224,0,0,2,255,192,7,240,0,0,0,0,7,255,128,7,240,0,0,0,0,15,255,128,7,240,0,0,0,0,63,255,128,7,240,0,0,0,0,191,239,192,7,240,0,0,0,0,63,111,255,255,255,255,192,0,0,14,47,255,255,255,255,192,0,0,0,47,255,255,255,255,192,0,0,0,47,128,7,240,0,0,0,3,0,47,128,7,240,0,0,0,11,192,47,128,7,240,0,0,0,31,224,47,128,7,240,0,0,0,63,192,47,255,255,255,255,192,0,191,64,47,255,255,255,255,192,0,255,0,47,255,255,255,255,192,3,253,0,47,192,7,240,0,0,7,248,0,47,128,7,240,0,0,15,240,0,47,128,7,240,0,0,63,208,0,47,128,7,240,0,0,127,192,0,47,128,7,240,0,0,47,64,0,47,255,255,255,255,244,10,0,0,47,255,255,255,255,244,0,0,0,47,255,255,255,255,244,0,0,0,47,192,0,0,0,0,0,0,0,31,128,0,0,0,0, + // 0x51fa 出 + 250,81,29,35,24,37,4,253,0,0,0,106,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,0,5,64,0,127,0,0,84,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,192,0,127,0,0,254,0,31,213,85,191,85,85,254,0,31,255,255,255,255,255,254,0,31,255,255,255,255,255,254,0,31,255,255,255,255,255,254,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,0,189,0,0,127,0,0,31,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,254,0,0,127,0,0,47,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,255,85,85,85,85,85,111,192,254,0,0,0,0,0,47,192,190,0,0,0,0,0,31,192, + // 0x5206 分 + 6,82,35,35,59,37,1,252,0,0,11,208,0,27,128,0,0,0,0,15,240,0,63,192,0,0,0,0,47,224,0,31,224,0,0,0,0,63,192,0,15,244,0,0,0,0,191,128,0,7,252,0,0,0,1,255,0,0,2,255,0,0,0,3,254,0,0,0,255,128,0,0,11,252,0,0,0,127,208,0,0,31,240,0,0,0,47,244,0,0,127,224,0,0,0,15,252,0,1,255,128,0,0,0,3,255,0,7,255,0,0,0,0,1,255,208,47,252,0,0,0,0,0,127,244,191,255,255,255,255,255,255,239,248,127,207,255,255,255,255,255,203,224,31,15,255,255,255,255,255,194,128,4,5,85,127,213,85,127,192,0,0,0,0,63,128,0,47,192,0,0,0,0,127,64,0,47,192,0,0,0,0,191,0,0,63,192,0,0,0,0,191,0,0,63,128,0,0,0,0,255,0,0,63,128,0,0,0,1,254,0,0,63,128,0,0,0,3,252,0,0,63,128,0,0,0,7,252,0,0,63,64,0,0,0,15,244,0,0,63,64,0,0,0,47,240,0,0,127,64,0,0,0,191,192,0,0,127,0,0,0,3,255,64,0,0,191,0,0,0,31,254,0,0,0,255,0,0,1,255,248,0,37,87,254,0,0,15,255,208,0,47,255,253,0,0,3,254,0,0,31,255,248,0,0,1,224,0,0,15,255,144,0,0,0,0,0,0,0,0,0,0,0, + // 0x5217 列 + 23,82,33,36,68,37,1,252,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,47,192,47,255,255,255,253,0,0,47,192,47,255,255,255,253,0,0,47,192,47,255,255,255,253,63,0,47,192,0,3,252,0,0,127,0,47,192,0,3,244,0,0,127,0,47,192,0,7,240,0,0,127,0,47,192,0,11,240,0,0,127,0,47,192,0,15,224,0,0,127,0,47,192,0,31,255,255,224,127,0,47,192,0,63,255,255,244,127,0,47,192,0,63,255,255,240,127,0,47,192,0,191,0,11,240,127,0,47,192,0,253,0,11,240,127,0,47,192,3,252,0,15,224,127,0,47,192,7,248,0,15,208,127,0,47,192,15,255,0,31,192,127,0,47,192,63,255,224,63,128,127,0,47,192,191,175,252,63,64,127,0,47,192,191,7,255,191,0,127,0,47,192,44,0,255,254,0,127,0,47,192,0,0,47,252,0,127,0,47,192,0,0,7,252,0,127,0,47,192,0,0,11,244,0,127,0,47,192,0,0,31,224,0,0,0,47,192,0,0,63,192,0,0,0,47,192,0,0,191,128,0,0,0,47,192,0,2,255,0,0,0,0,47,192,0,11,252,0,0,0,0,47,192,0,47,240,0,0,0,0,47,192,1,255,208,0,0,1,85,127,192,7,255,64,0,0,1,255,255,128,2,252,0,0,0,0,255,255,0,0,160,0,0,0,0,255,248,0,0,0,0,0,0,0,0,0,0, + // 0x521d 初 + 29,82,34,35,59,37,1,253,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,11,255,255,255,255,224,0,15,208,11,255,255,255,255,224,0,15,208,11,255,255,255,255,224,0,15,224,1,85,255,85,95,224,63,255,255,224,0,254,0,15,224,63,255,255,244,0,254,0,15,224,63,255,255,240,0,254,0,15,224,0,0,15,208,0,253,0,15,224,0,0,47,192,0,253,0,15,224,0,0,63,64,0,253,0,15,224,0,0,255,0,0,253,0,15,224,0,1,252,40,1,252,0,15,208,0,3,248,126,1,252,0,15,208,0,15,240,253,1,252,0,15,208,0,47,250,244,2,252,0,15,208,0,191,255,208,3,248,0,15,208,2,255,255,192,3,248,0,15,208,11,255,255,224,3,244,0,15,208,47,255,219,248,7,240,0,31,192,191,223,210,252,15,240,0,31,192,127,79,208,244,15,224,0,31,192,45,15,208,32,47,192,0,31,192,0,15,208,0,63,192,0,47,192,0,15,208,0,191,64,0,47,192,0,15,208,0,255,0,0,63,192,0,15,208,3,253,0,0,63,128,0,15,208,11,252,0,0,63,64,0,15,208,47,240,0,0,255,64,0,15,208,255,208,11,255,255,0,0,15,208,255,128,3,255,253,0,0,15,208,62,0,3,255,248,0,0,15,208,4,0,1,85,64,0, + // 0x5230 到 + 48,82,33,34,50,37,1,253,0,0,0,0,0,0,0,26,128,0,0,0,0,0,0,0,31,192,63,255,255,255,254,0,0,31,192,63,255,255,255,254,0,0,31,192,63,255,255,255,254,63,64,31,192,0,15,240,0,0,63,64,31,192,0,15,224,4,0,63,64,31,192,0,31,192,127,0,63,64,31,192,0,47,192,63,128,63,64,31,192,0,63,64,31,208,63,64,31,192,0,127,0,11,240,63,64,31,192,21,255,255,255,252,63,64,31,192,63,255,255,255,253,63,64,31,192,63,255,255,255,255,63,64,31,192,63,169,84,0,63,63,64,31,192,0,0,127,0,24,63,64,31,192,0,0,127,0,0,63,64,31,192,0,0,127,0,0,63,64,31,192,0,0,127,0,0,63,64,31,192,15,255,255,255,248,63,64,31,192,15,255,255,255,248,63,64,31,192,15,255,255,255,248,63,64,31,192,0,0,127,0,0,63,64,31,192,0,0,127,0,0,63,64,31,192,0,0,127,0,0,21,0,31,192,0,0,127,0,0,0,0,31,192,0,0,127,0,0,0,0,31,192,0,0,127,22,190,0,0,31,192,0,5,191,255,255,0,0,31,192,111,255,255,255,255,0,0,31,192,127,255,255,255,233,0,149,127,192,63,255,250,80,0,0,255,255,192,62,148,0,0,0,0,255,255,64,0,0,0,0,0,0,191,248,0, + // 0x5236 制 + 54,82,34,35,59,37,1,253,0,0,31,128,0,0,0,5,64,0,248,47,128,0,0,0,15,208,2,252,47,128,0,0,0,15,208,3,248,47,128,0,1,248,15,208,3,244,47,128,0,2,248,15,208,7,255,255,255,254,2,248,15,208,11,255,255,255,254,2,248,15,208,15,255,255,255,254,2,248,15,208,47,192,47,128,0,2,248,15,208,63,128,47,128,0,2,248,15,208,127,0,47,128,0,2,248,15,208,10,0,47,128,0,2,248,15,208,127,255,255,255,255,194,248,15,208,127,255,255,255,255,194,248,15,208,127,255,255,255,255,194,248,15,208,0,0,47,128,0,2,248,15,208,0,0,47,128,0,2,248,15,208,0,0,47,128,0,2,248,15,208,0,0,47,128,0,2,248,15,208,11,255,255,255,255,2,248,15,208,11,255,255,255,255,2,248,15,208,11,255,255,255,255,2,248,15,208,11,208,47,128,63,2,248,15,208,11,208,47,128,63,2,248,15,208,11,208,47,128,63,1,164,15,208,11,208,47,128,63,0,0,15,208,11,208,47,128,63,0,0,15,208,11,208,47,128,63,0,0,15,208,11,208,47,128,63,0,0,15,208,11,208,47,143,255,0,0,15,208,11,208,47,143,254,0,0,15,208,11,208,47,139,248,0,21,111,192,0,0,47,128,0,0,63,255,192,0,0,47,128,0,0,63,255,128,0,0,31,128,0,0,47,249,0, + // 0x5237 刷 + 55,82,33,35,59,37,1,253,0,0,0,0,0,0,0,5,64,0,0,0,0,0,0,0,15,192,3,255,255,255,255,0,0,15,192,3,255,255,255,255,1,64,15,192,3,255,255,255,255,7,224,15,192,3,240,0,0,63,7,224,15,192,3,240,0,0,63,7,224,15,192,3,240,0,0,63,7,224,15,192,3,240,0,0,63,7,224,15,192,3,255,255,255,255,7,224,15,192,3,255,255,255,255,7,224,15,192,3,255,255,255,255,7,224,15,192,3,240,1,248,0,7,224,15,192,3,240,1,248,0,7,224,15,192,3,240,1,248,0,7,224,15,192,3,240,1,248,0,7,224,15,192,3,251,255,255,255,71,224,15,192,3,255,255,255,255,71,224,15,192,7,255,255,255,255,71,224,15,192,7,239,193,248,31,71,224,15,192,7,239,193,248,31,71,224,15,192,7,239,193,248,31,71,224,15,192,11,239,193,248,31,71,224,15,192,11,223,193,248,31,71,224,15,192,15,223,193,248,31,71,224,15,192,15,207,193,248,31,65,80,15,192,15,207,193,248,31,64,0,15,192,31,207,193,248,31,64,0,15,192,31,143,193,251,255,64,0,15,192,63,79,193,249,255,0,0,15,192,63,15,193,248,164,0,0,15,192,190,0,1,248,0,0,85,111,192,189,0,1,248,0,0,127,255,192,28,0,1,248,0,0,63,255,64,0,0,1,248,0,0,47,249,0, + // 0x5275 創 + 117,82,33,36,68,37,1,252,0,0,5,64,0,0,0,0,0,0,0,63,240,0,0,0,31,192,0,0,191,252,0,0,0,31,192,0,1,255,255,64,0,0,31,192,0,3,252,127,208,0,0,31,192,0,15,244,31,244,31,192,31,192,0,63,208,7,253,31,192,31,192,0,255,213,86,255,95,192,31,192,7,255,255,255,191,31,192,31,192,63,245,255,255,93,31,192,31,192,127,128,0,0,0,31,192,31,192,13,85,85,85,84,31,192,31,192,0,255,255,255,252,31,192,31,192,0,255,255,255,252,31,192,31,192,0,252,0,0,252,31,192,31,192,0,252,0,0,252,31,192,31,192,0,255,255,255,252,31,192,31,192,0,255,255,255,252,31,192,31,192,0,252,0,1,252,31,192,31,192,0,252,0,0,252,31,192,31,192,0,255,255,255,252,31,192,31,192,0,255,255,255,252,31,192,31,192,1,253,85,85,84,31,192,31,192,1,248,0,0,0,31,192,31,192,2,254,170,170,168,31,192,31,192,3,255,255,255,253,31,192,31,192,3,255,255,255,253,0,0,31,192,7,255,192,0,189,0,0,31,192,15,223,192,0,189,0,0,31,192,15,207,192,0,189,0,0,31,192,63,143,192,0,189,0,0,31,192,127,15,255,255,253,0,85,127,192,62,15,255,255,253,0,255,255,192,12,15,234,170,253,0,191,255,64,0,15,192,0,105,0,127,248,0,0,0,0,0,0,0,0,0,0, + // 0x529b 力 + 155,82,32,35,24,37,2,253,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,63,64,0,0,0,63,255,255,255,255,255,255,254,63,255,255,255,255,255,255,253,63,255,255,255,255,255,255,253,26,170,170,191,170,170,170,253,0,0,0,191,0,0,0,253,0,0,0,191,0,0,1,253,0,0,0,255,0,0,1,252,0,0,0,254,0,0,1,252,0,0,0,254,0,0,1,252,0,0,1,253,0,0,2,252,0,0,3,252,0,0,2,252,0,0,3,252,0,0,2,252,0,0,11,248,0,0,3,252,0,0,15,240,0,0,3,248,0,0,31,224,0,0,3,248,0,0,63,208,0,0,3,248,0,0,191,192,0,0,3,244,0,1,255,0,0,0,7,244,0,7,254,0,0,0,11,240,0,15,252,0,0,0,11,240,0,63,240,0,0,0,15,240,1,255,208,0,0,0,31,224,11,255,64,0,0,0,63,208,63,253,0,0,15,255,255,192,191,240,0,0,7,255,255,64,47,128,0,0,3,255,253,0,9,0,0,0,1,85,64,0, + // 0x52a0 加 + 160,82,33,36,68,37,1,252,0,5,64,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,85,85,85,64,0,15,208,0,0,255,255,255,192,0,15,208,0,0,255,255,255,192,63,255,255,255,208,255,255,255,192,63,255,255,255,208,252,0,47,192,63,255,255,255,208,252,0,47,192,21,111,213,95,208,252,0,47,192,0,31,192,15,208,252,0,47,192,0,31,192,15,192,252,0,47,192,0,31,192,15,192,252,0,47,192,0,31,192,15,192,252,0,47,192,0,31,192,15,192,252,0,47,192,0,47,192,15,192,252,0,47,192,0,47,128,15,192,252,0,47,192,0,63,128,15,192,252,0,47,192,0,63,64,31,192,252,0,47,192,0,63,64,31,192,252,0,47,192,0,63,0,31,192,252,0,47,192,0,127,0,31,192,252,0,47,192,0,191,0,31,192,252,0,47,192,0,254,0,31,192,252,0,47,192,1,253,0,47,192,252,0,47,192,2,252,0,47,192,252,0,47,192,3,252,0,47,128,252,0,47,192,7,244,0,63,128,255,255,255,192,15,240,0,63,64,255,255,255,192,31,224,0,191,64,255,255,255,192,63,192,255,255,0,253,85,127,192,191,128,191,254,0,252,0,47,192,47,0,191,248,0,252,0,47,128,8,0,21,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x52d5 動 + 213,82,34,36,68,37,1,252,0,0,0,0,64,1,80,0,0,0,0,22,191,208,3,240,0,0,42,255,255,255,240,3,240,0,0,63,255,255,255,144,3,240,0,0,31,250,254,0,0,3,240,0,0,0,0,189,0,0,3,240,0,0,42,170,254,170,164,3,240,0,0,127,255,255,255,252,3,240,0,0,127,255,255,255,253,91,240,0,0,0,0,189,0,3,255,255,255,224,0,0,189,0,3,255,255,255,224,31,255,255,255,251,255,255,255,224,31,255,255,255,244,7,240,11,224,31,149,254,86,244,7,240,11,224,31,64,189,2,244,11,224,15,224,31,128,189,2,244,11,224,15,224,31,255,255,255,244,11,224,15,208,31,255,255,255,244,15,208,15,208,31,64,189,2,244,15,208,15,208,31,64,189,2,244,15,208,15,208,31,255,255,255,244,31,192,15,208,31,255,255,255,244,31,192,15,208,5,85,254,85,80,63,128,15,208,0,0,189,0,0,63,64,15,192,10,170,254,170,160,127,0,15,192,31,255,255,255,244,191,0,15,192,31,255,255,255,245,254,0,31,192,0,0,189,0,3,252,0,31,192,0,0,189,0,7,252,0,31,192,0,0,190,107,255,244,0,47,192,1,90,255,255,255,224,0,63,128,127,255,255,255,255,192,0,127,64,63,255,255,171,255,64,255,255,0,62,149,0,1,253,0,191,254,0,0,0,0,0,116,0,191,248,0,0,0,0,0,0,0,0,0,0, + // 0x5316 化 + 22,83,35,34,50,37,1,253,0,0,15,128,63,64,0,0,0,0,0,47,192,63,64,0,0,0,0,0,63,192,63,64,0,0,0,0,0,191,64,63,64,0,0,0,0,0,255,0,63,64,0,0,0,0,3,253,0,63,64,0,0,0,0,7,248,0,63,64,0,8,0,0,15,240,0,63,64,0,62,0,0,63,224,0,63,64,0,255,64,0,191,224,0,63,64,7,255,128,1,255,224,0,63,64,63,253,0,3,255,224,0,63,65,255,240,0,15,255,224,0,63,79,255,64,0,63,255,224,0,63,255,248,0,0,255,223,224,0,63,255,192,0,0,191,79,224,0,63,253,0,0,0,62,15,224,0,63,208,0,0,0,40,15,224,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,15,224,0,63,64,0,1,0,0,15,224,0,63,64,0,2,228,0,15,224,0,63,64,0,2,248,0,15,224,0,63,64,0,2,248,0,15,224,0,63,64,0,3,244,0,15,224,0,63,64,0,3,244,0,15,224,0,63,192,0,11,240,0,15,224,0,63,255,255,255,224,0,15,224,0,31,255,255,255,192,0,15,224,0,7,255,255,255,64,0,10,144,0,0,0,0,0,0, + // 0x534a 半 + 74,83,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,104,0,7,240,0,15,64,0,1,253,0,7,240,0,31,224,0,0,255,0,7,240,0,63,192,0,0,127,128,7,240,0,127,128,0,0,63,192,7,240,0,255,0,0,0,31,224,7,240,1,254,0,0,0,15,240,7,240,3,252,0,0,0,7,244,7,240,7,244,0,0,0,3,224,7,240,7,240,0,0,0,1,0,7,240,0,64,0,0,0,0,0,7,240,0,0,0,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,5,85,85,91,249,85,85,84,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,85,85,85,91,249,85,85,85,64,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0, + // 0x5354 協 + 84,83,34,36,68,37,1,252,0,63,0,0,0,63,0,0,0,0,63,0,0,0,63,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,0,0,127,0,0,0,0,63,0,31,255,255,255,255,128,0,63,0,31,255,255,255,255,128,0,63,0,15,255,255,255,255,64,0,63,0,0,2,248,0,63,64,0,63,0,0,3,244,0,63,64,0,127,0,0,15,240,0,63,0,127,255,255,0,47,192,0,63,0,127,255,255,0,255,64,0,191,0,127,255,255,11,254,0,255,254,0,0,63,0,127,244,0,255,252,0,0,63,0,63,128,0,191,224,0,0,63,0,24,0,0,0,0,0,0,63,0,15,128,0,15,192,0,0,63,0,31,128,0,15,192,0,0,63,0,31,128,0,31,192,0,0,63,0,31,128,0,31,128,0,0,63,15,255,255,235,255,255,240,0,63,15,255,255,235,255,255,240,0,63,10,191,239,230,191,235,240,0,63,0,47,7,208,47,67,240,0,63,0,63,7,208,63,3,240,0,63,0,63,7,208,63,3,240,0,63,0,62,7,208,127,3,240,0,63,0,189,7,208,189,3,224,0,63,0,252,11,208,252,3,224,0,63,1,252,11,193,252,7,224,0,63,3,244,11,195,244,7,224,0,63,11,240,15,203,240,11,208,0,63,31,210,191,239,194,175,192,0,63,31,66,255,95,66,255,192,0,63,6,2,254,5,1,254,0,0,0,0,0,0,0,0,0,0, + // 0x5361 卡 + 97,83,33,35,59,37,2,253,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,255,255,255,192,0,0,0,0,15,255,255,255,192,0,0,0,0,15,255,255,255,192,0,0,0,0,15,229,85,85,64,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,85,85,85,95,229,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,255,144,0,0,0,0,0,0,15,255,254,64,0,0,0,0,0,15,255,255,248,0,0,0,0,0,15,226,255,255,208,0,0,0,0,15,224,27,255,244,0,0,0,0,15,224,0,127,240,0,0,0,0,15,224,0,6,208,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,208,0,0,0,0, + // 0x5370 印 + 112,83,30,35,24,37,4,253,0,0,9,0,0,0,0,0,0,1,191,64,0,0,0,0,0,31,255,209,85,85,85,80,134,255,255,131,255,255,255,240,255,255,244,3,255,255,255,240,255,254,0,3,255,255,255,240,255,128,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,255,255,255,195,248,0,7,240,255,255,255,195,248,0,7,240,255,255,255,195,248,0,7,240,254,85,85,67,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,253,0,0,3,248,0,7,240,255,255,255,195,248,26,175,240,255,255,255,195,248,15,255,240,255,255,255,195,248,11,255,208,253,85,85,67,248,7,254,64,253,0,0,3,248,0,0,0,253,0,0,3,248,0,0,0,84,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,2,164,0,0,0, + // 0x5378 卸 + 120,83,33,35,59,37,1,253,0,46,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,127,0,0,0,255,255,255,192,0,190,0,0,0,255,255,255,192,0,255,255,255,240,255,255,255,192,2,255,255,255,240,254,0,31,192,3,255,255,255,240,253,0,15,192,11,240,127,0,0,253,0,15,192,31,208,63,0,0,253,0,15,192,63,192,63,0,0,253,0,15,192,15,0,63,0,0,253,0,15,192,0,0,63,0,0,253,0,15,192,63,255,255,255,252,253,0,15,192,63,255,255,255,252,253,0,15,192,63,255,255,255,252,253,0,15,192,0,0,127,0,0,253,0,15,192,0,0,63,0,0,253,0,15,192,1,80,63,0,0,253,0,15,192,3,240,63,0,0,253,0,15,192,3,240,63,255,224,253,0,15,192,3,240,63,255,224,253,0,15,192,3,240,63,255,224,253,0,15,192,3,240,63,0,0,253,0,15,192,3,240,63,0,0,253,0,15,192,3,240,63,0,0,253,0,15,192,3,240,63,0,0,253,10,175,192,3,240,63,0,20,253,15,255,192,3,240,63,111,252,253,11,255,128,3,246,255,255,252,253,7,249,0,111,255,255,255,252,253,0,0,0,191,255,255,249,0,253,0,0,0,127,255,148,0,0,253,0,0,0,122,64,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0, + // 0x537b 卻 + 123,83,33,35,59,37,1,253,0,0,21,0,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,1,255,244,0,255,255,255,192,0,3,255,253,0,255,255,255,192,0,15,245,255,128,255,255,255,192,0,63,208,127,224,254,85,95,192,0,255,64,31,248,254,0,15,192,7,254,0,7,252,254,0,15,192,47,244,0,1,244,254,0,15,192,31,208,21,0,144,254,0,15,192,11,0,191,192,0,254,0,15,192,0,0,255,240,0,254,0,15,192,0,2,255,252,0,254,0,15,192,0,11,250,255,0,254,0,15,192,0,31,240,255,192,254,0,15,192,0,63,192,63,240,254,0,15,192,0,255,64,15,248,254,0,15,192,7,253,0,3,253,254,0,15,192,31,244,0,1,248,254,0,15,192,191,208,0,0,176,254,0,15,192,127,255,255,255,192,254,0,15,192,28,255,255,255,192,254,0,15,192,0,255,255,255,192,254,0,15,192,0,252,0,31,192,254,0,15,192,0,252,0,31,192,254,0,31,192,0,252,0,31,192,254,31,255,192,0,252,0,31,192,254,15,255,192,0,252,0,31,192,254,11,255,0,0,252,0,31,192,254,1,80,0,0,255,255,255,192,254,0,0,0,0,255,255,255,192,254,0,0,0,0,255,255,255,192,254,0,0,0,0,252,0,31,192,254,0,0,0,0,252,0,15,192,254,0,0,0,0,20,0,0,0,189,0,0,0, + // 0x539f 原 + 159,83,34,33,41,37,1,253,1,255,255,255,255,255,255,255,240,1,255,255,255,255,255,255,255,240,1,255,255,255,255,255,255,255,240,1,252,0,0,15,244,0,0,0,1,252,0,0,15,240,0,0,0,1,252,0,0,31,224,0,0,0,1,252,10,170,191,250,170,168,0,1,252,15,255,255,255,255,252,0,1,252,15,255,255,255,255,252,0,1,252,15,208,0,0,2,252,0,1,252,15,208,0,0,2,252,0,1,252,15,208,0,0,2,252,0,1,252,15,255,255,255,255,252,0,1,252,15,255,255,255,255,252,0,1,252,15,234,170,170,171,252,0,1,252,15,208,0,0,2,252,0,1,252,15,208,0,0,2,252,0,2,252,15,250,170,170,171,252,0,2,248,15,255,255,255,255,252,0,2,248,15,255,255,255,255,252,0,3,248,0,0,7,240,0,0,0,3,244,0,0,7,240,0,0,0,3,244,0,249,7,240,31,64,0,7,240,2,253,7,240,63,208,0,11,240,7,248,7,240,15,244,0,11,224,15,240,7,240,3,253,0,15,224,63,208,7,240,0,255,64,31,208,255,128,7,240,0,63,192,47,199,254,0,7,240,0,31,240,63,143,248,0,7,240,0,11,240,127,66,224,15,255,240,0,3,128,127,0,0,11,255,224,0,0,0,5,0,0,7,255,64,0,0,0, + // 0x53cd 反 + 205,83,33,33,41,37,2,253,0,85,85,85,85,85,85,84,0,0,255,255,255,255,255,255,253,0,0,255,255,255,255,255,255,253,0,0,255,255,255,255,255,255,253,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,192,0,0,254,111,229,85,85,127,192,0,0,254,15,240,0,0,191,64,0,0,253,11,244,0,0,255,0,0,0,253,3,252,0,2,254,0,0,0,253,2,253,0,3,252,0,0,0,252,0,255,0,11,248,0,0,1,252,0,191,128,31,240,0,0,1,252,0,63,208,63,208,0,0,2,252,0,31,240,255,128,0,0,3,248,0,11,255,255,0,0,0,3,244,0,3,255,252,0,0,0,7,240,0,0,255,244,0,0,0,11,240,0,2,255,248,0,0,0,15,224,0,31,255,255,64,0,0,31,208,0,191,254,255,244,0,0,63,192,47,255,208,127,255,144,0,127,71,255,254,0,11,255,255,64,255,7,255,240,0,1,255,255,64,61,2,254,0,0,0,11,254,0,8,0,208,0,0,0,0,108,0, + // 0x53d6 取 + 214,83,35,33,41,37,1,253,63,255,255,255,252,0,0,0,0,63,255,255,255,252,0,0,0,0,63,255,255,255,252,0,0,0,0,2,252,0,63,143,255,255,255,208,1,252,0,63,143,255,255,255,208,1,252,0,63,143,255,255,255,208,1,252,0,63,133,165,85,111,192,1,252,0,63,135,240,0,31,192,1,255,255,255,135,240,0,47,192,1,255,255,255,131,244,0,63,128,1,255,255,255,131,248,0,63,64,1,252,0,63,130,252,0,127,0,1,252,0,63,129,252,0,191,0,1,252,0,63,128,253,0,254,0,1,252,0,63,128,191,0,253,0,1,252,0,63,128,127,2,252,0,1,255,255,255,128,63,67,252,0,1,255,255,255,128,47,199,244,0,1,255,255,255,128,31,223,240,0,1,252,0,63,128,15,255,224,0,1,252,0,63,128,7,255,192,0,1,252,0,63,128,3,255,128,0,1,252,0,63,128,2,255,0,0,1,252,26,255,128,2,255,64,0,6,255,255,255,128,11,255,192,0,255,255,255,255,128,31,255,240,0,191,255,254,127,128,127,239,252,0,127,233,0,63,129,255,131,255,0,16,0,0,63,139,254,0,255,208,0,0,0,63,255,248,0,127,248,0,0,0,63,191,208,0,15,244,0,0,0,63,143,0,0,2,208,0,0,0,47,64,0,0,0,64, + // 0x53f0 台 + 240,83,33,35,59,37,2,253,0,0,1,228,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,31,240,0,6,0,0,0,0,0,63,208,0,47,192,0,0,0,0,127,128,0,63,244,0,0,0,0,255,0,0,11,253,0,0,0,2,253,0,0,2,255,64,0,0,3,252,0,0,0,191,208,0,0,11,249,106,171,255,255,240,0,127,255,255,255,255,255,255,252,0,127,255,255,255,255,255,255,255,0,127,255,255,255,250,169,85,255,128,37,84,0,0,0,0,0,127,192,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,21,85,85,85,85,85,0,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,0,0,0,0,127,64,0,0,127,0,0,0,0,127,64,0,0,127,0,0,0,0,127,64,0,0,127,0,0,0,0,127,64,0,0,127,0,0,0,0,127,64,0,0,127,0,0,0,0,127,64,0,0,127,0,0,0,0,127,64,0,0,127,0,0,0,0,127,64,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,85,85,85,85,191,64,0,0,127,0,0,0,0,127,64,0, + // 0x5408 合 + 8,84,35,35,59,37,1,253,0,0,0,2,253,0,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,31,255,192,0,0,0,0,0,0,63,255,240,0,0,0,0,0,0,255,143,248,0,0,0,0,0,3,255,3,255,0,0,0,0,0,15,252,0,255,192,0,0,0,0,63,240,0,63,240,0,0,0,1,255,192,0,15,253,0,0,0,7,255,0,0,3,255,128,0,0,47,252,0,0,0,191,244,0,1,255,224,0,0,0,31,254,0,15,255,255,255,255,255,255,255,224,127,254,191,255,255,255,248,191,248,63,244,191,255,255,255,248,31,240,31,64,0,0,0,0,0,3,208,4,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,192,0,0,15,255,255,255,255,255,192,0,0,15,255,255,255,255,255,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,255,255,255,255,255,192,0,0,15,255,255,255,255,255,192,0,0,15,255,255,255,255,255,192,0,0,15,224,0,0,0,47,192,0,0,11,208,0,0,0,31,192,0, + // 0x5426 否 + 38,84,34,33,41,37,1,253,31,255,255,255,255,255,255,255,208,31,255,255,255,255,255,255,255,208,31,255,255,255,255,255,255,255,208,0,0,0,0,191,224,0,0,0,0,0,0,1,255,128,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,255,252,15,128,0,0,0,0,7,255,252,63,248,0,0,0,0,127,254,252,47,255,64,0,0,2,255,241,252,2,255,240,0,0,47,255,65,252,0,127,254,0,7,255,252,1,252,0,7,255,192,127,255,208,1,252,0,0,191,240,63,254,0,1,252,0,0,31,224,15,224,0,1,252,0,0,3,192,5,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,240,0,0,47,255,255,255,255,255,240,0,0,47,255,255,255,255,255,240,0,0,47,192,0,0,0,15,240,0,0,47,192,0,0,0,15,240,0,0,47,192,0,0,0,15,240,0,0,47,192,0,0,0,15,240,0,0,47,192,0,0,0,15,240,0,0,47,192,0,0,0,15,240,0,0,47,255,255,255,255,255,240,0,0,47,255,255,255,255,255,240,0,0,47,255,255,255,255,255,240,0,0,47,192,0,0,0,15,240,0,0,31,192,0,0,0,10,160,0, + // 0x544a 告 + 74,84,33,36,68,37,2,252,0,2,64,1,252,0,0,0,0,0,11,240,1,252,0,0,0,0,0,15,224,1,252,0,0,0,0,0,31,208,1,252,0,0,0,0,0,63,192,1,252,0,0,0,0,0,127,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,2,255,255,255,255,255,255,240,0,7,252,0,2,253,0,0,0,0,15,240,0,1,252,0,0,0,0,63,224,0,1,252,0,0,0,0,63,192,0,1,252,0,0,0,0,7,0,0,1,252,0,0,0,0,1,0,0,2,253,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,128,0,0,63,255,255,255,255,255,128,0,0,63,255,255,255,255,255,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,63,255,255,255,255,255,128,0,0,63,255,255,255,255,255,128,0,0,63,255,255,255,255,255,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,0,0,0,0,0,0,0,0, + // 0x547d 命 + 125,84,35,36,68,37,1,252,0,0,0,3,253,0,0,0,0,0,0,0,11,255,64,0,0,0,0,0,0,47,255,208,0,0,0,0,0,0,191,239,244,0,0,0,0,0,2,255,75,254,0,0,0,0,0,11,254,2,255,128,0,0,0,0,47,248,0,191,240,0,0,0,0,255,208,0,47,253,0,0,0,11,255,64,0,7,255,192,0,0,63,253,0,0,1,255,248,0,2,255,223,255,255,255,223,255,128,47,255,15,255,255,255,194,255,248,255,248,15,255,255,255,192,127,252,127,192,0,0,0,0,0,11,240,45,0,0,0,0,0,0,0,208,0,0,0,0,0,0,0,0,0,0,255,255,254,11,255,255,253,0,0,255,255,254,11,255,255,253,0,0,255,255,254,11,255,255,253,0,0,252,0,126,11,224,0,253,0,0,252,0,126,11,224,0,253,0,0,252,0,126,11,224,0,253,0,0,252,0,126,11,224,0,253,0,0,252,0,126,11,224,0,253,0,0,252,0,126,11,224,0,253,0,0,252,0,126,11,224,0,253,0,0,255,255,254,11,224,0,253,0,0,255,255,254,11,224,0,253,0,0,255,255,254,11,224,255,253,0,0,252,0,0,11,224,255,252,0,0,252,0,0,11,224,191,224,0,0,252,0,0,11,224,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x548c 和 + 140,84,33,35,59,37,1,253,0,0,0,4,0,0,0,0,0,0,0,1,190,0,0,0,0,0,0,1,191,255,128,0,0,0,0,22,255,255,255,129,85,85,85,0,47,255,255,144,11,255,255,255,64,15,255,253,0,11,255,255,255,64,4,0,253,0,11,255,255,255,64,0,0,253,0,11,224,0,63,64,0,0,253,0,11,224,0,63,64,0,0,253,0,11,224,0,63,64,0,0,253,0,11,224,0,63,64,63,255,255,255,203,224,0,63,64,63,255,255,255,203,224,0,63,64,63,255,255,255,203,224,0,63,64,0,7,253,0,11,224,0,63,64,0,11,254,0,11,224,0,63,64,0,15,255,128,11,224,0,63,64,0,31,255,208,11,224,0,63,64,0,63,255,244,11,224,0,63,64,0,127,255,252,11,224,0,63,64,0,253,253,255,11,224,0,63,64,1,252,253,63,139,224,0,63,64,3,244,253,31,203,224,0,63,64,11,240,253,15,75,224,0,63,64,31,208,253,2,11,224,0,63,64,63,192,253,0,11,224,0,63,64,191,64,253,0,11,245,85,127,64,126,0,253,0,11,255,255,255,64,60,0,253,0,11,255,255,255,64,0,0,253,0,11,255,255,255,64,0,0,253,0,11,224,0,63,64,0,0,253,0,11,224,0,63,64,0,0,253,0,11,224,0,63,64,0,0,253,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0, + // 0x555f 啟 + 95,85,35,36,68,37,1,252,0,0,104,0,0,2,228,0,0,0,0,252,0,0,2,248,0,0,0,0,254,0,0,3,244,0,0,0,0,127,0,0,3,240,0,0,0,0,63,64,0,7,240,0,0,3,255,255,255,224,7,240,0,0,3,255,255,255,224,15,224,0,0,3,255,255,255,224,15,255,255,244,3,240,0,7,224,31,255,255,244,3,240,0,7,224,47,255,255,244,3,240,0,7,224,63,128,47,128,3,240,0,7,224,127,128,63,64,3,240,0,7,224,255,128,63,64,3,255,255,255,225,255,192,63,0,3,255,255,255,227,255,192,127,0,3,255,255,255,231,255,208,127,0,3,240,0,0,7,247,208,190,0,3,240,0,0,1,211,240,253,0,3,240,0,0,0,67,240,252,0,3,240,0,0,0,2,245,252,0,7,247,255,255,240,1,250,248,0,7,251,255,255,240,0,255,244,0,7,235,255,255,240,0,191,240,0,11,235,208,3,240,0,127,224,0,15,219,208,3,240,0,63,192,0,15,219,208,3,240,0,63,192,0,15,203,208,3,240,0,191,208,0,31,203,208,3,240,1,255,240,0,47,139,208,3,240,3,255,252,0,63,75,255,255,240,15,245,254,0,127,11,255,255,240,63,224,255,64,190,11,255,255,240,255,192,63,224,45,11,208,3,247,255,0,31,248,4,11,208,3,242,248,0,3,240,0,1,64,0,0,208,0,0,128,0,0,0,0,0,0,0,0,0, + // 0x55ae 單 + 174,85,33,33,41,37,2,253,7,255,255,253,15,255,255,248,0,7,255,255,253,15,255,255,248,0,7,240,0,253,15,192,2,248,0,7,240,0,253,15,192,2,248,0,7,240,0,253,15,192,3,248,0,7,255,255,253,15,255,255,248,0,7,255,255,253,15,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,255,170,175,254,170,175,224,0,0,252,0,7,240,0,15,224,0,0,252,0,7,240,0,15,224,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,254,170,171,250,170,175,224,0,0,252,0,7,240,0,15,224,0,0,252,0,7,240,0,15,224,0,0,255,170,175,254,170,175,224,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0, + // 0x5634 嘴 + 52,86,34,36,68,37,2,252,0,0,0,1,244,3,224,0,0,0,0,0,1,244,3,224,0,0,0,0,1,145,244,3,224,24,0,127,255,210,241,244,3,225,255,0,127,255,210,241,255,243,255,253,0,127,255,210,241,255,243,255,208,0,125,7,210,241,249,83,253,0,0,125,7,210,241,244,3,224,0,0,125,7,210,241,244,3,224,3,64,125,7,210,241,245,103,224,3,208,125,7,210,251,255,247,240,7,208,125,7,239,255,255,243,255,255,192,125,7,239,255,254,2,255,255,128,125,7,223,149,252,0,90,165,0,125,7,208,3,255,255,224,0,0,125,7,208,11,255,255,244,0,0,125,7,208,47,213,95,224,0,0,125,7,208,191,64,47,192,0,0,125,7,211,255,255,255,255,253,0,125,7,255,255,255,255,255,253,0,125,7,255,255,85,190,85,253,0,127,255,219,127,0,125,0,189,0,127,255,208,63,0,125,0,189,0,127,255,208,63,255,255,255,253,0,125,0,0,63,255,255,255,253,0,125,0,0,63,0,125,0,189,0,125,0,0,127,0,125,0,189,0,0,0,0,191,255,255,255,253,0,0,0,0,255,255,255,255,253,0,0,0,1,253,85,85,85,253,0,0,0,3,248,0,0,0,189,0,0,0,15,240,0,0,0,189,0,0,0,63,224,0,0,150,253,0,0,0,127,128,0,0,255,252,0,0,0,14,0,0,0,191,228,0,0,0,0,0,0,0,0,0,0, + // 0x5668 器 + 104,86,35,34,50,37,1,252,2,255,255,254,2,255,255,254,0,2,255,255,254,2,255,255,254,0,2,255,255,254,2,255,255,254,0,2,248,0,190,2,248,0,190,0,2,248,0,190,2,248,0,190,0,2,248,0,190,2,248,0,190,0,2,248,0,190,2,248,0,190,0,2,254,170,254,2,254,170,254,0,2,255,255,254,2,255,255,254,0,2,255,255,255,226,255,255,254,0,0,0,0,7,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,47,224,0,0,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,0,0,47,244,0,127,192,0,0,0,1,255,224,0,47,244,0,0,0,11,255,128,0,11,255,0,0,0,191,253,0,0,1,255,224,0,11,255,240,0,0,0,127,255,64,191,255,255,255,3,255,255,255,248,63,255,255,255,3,255,255,255,244,30,255,255,255,3,255,255,255,224,0,252,0,127,3,240,0,252,0,0,252,0,127,3,240,0,252,0,0,252,0,127,3,240,0,252,0,0,252,0,127,3,240,0,252,0,0,252,0,127,3,240,0,252,0,0,255,255,255,3,255,255,252,0,0,255,255,255,3,255,255,252,0,0,255,255,255,3,255,255,252,0,0,252,0,127,3,240,0,252,0,0,0,0,0,0,0,0,0,0, + // 0x5674 噴 + 116,86,33,36,68,37,3,252,0,0,0,0,1,248,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,2,248,0,0,0,0,0,2,255,255,255,255,252,0,255,255,194,255,255,255,255,252,0,255,255,193,85,86,253,85,84,0,255,255,192,10,130,248,42,0,0,248,15,192,15,194,248,63,0,0,248,11,192,15,192,0,63,0,0,248,11,223,255,255,255,255,255,128,248,11,223,255,255,255,255,255,128,248,11,213,95,213,85,127,85,0,248,11,192,15,192,0,63,0,0,248,11,192,5,64,0,21,0,0,248,11,192,255,255,255,255,240,0,248,11,192,255,255,255,255,240,0,248,11,192,252,0,0,3,240,0,248,11,192,252,0,0,3,240,0,248,11,192,255,255,255,255,240,0,248,11,192,255,255,255,255,240,0,248,11,192,252,0,0,3,240,0,255,255,192,252,0,0,3,240,0,255,255,192,252,0,0,3,240,0,255,255,192,255,255,255,255,240,0,248,0,0,255,255,255,255,240,0,248,0,0,252,0,0,3,240,0,248,0,0,252,0,0,3,240,0,0,0,0,255,255,255,255,240,0,0,0,0,255,255,255,255,240,0,0,0,0,3,224,1,244,0,0,0,0,0,47,248,3,255,64,0,0,0,11,255,208,0,191,244,0,0,1,255,253,0,0,11,254,0,0,0,191,208,0,0,1,255,64,0,0,45,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0, + // 0x56de 回 + 222,86,31,34,16,37,3,253,85,85,85,85,85,85,85,84,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,255,255,255,248,2,252,254,0,255,255,255,248,2,252,254,0,255,255,255,248,2,252,254,0,253,0,3,248,2,252,254,0,253,0,3,248,2,252,254,0,253,0,3,248,2,252,254,0,253,0,3,248,2,252,254,0,253,0,3,248,2,252,254,0,253,0,3,248,2,252,254,0,253,0,3,248,2,252,254,0,253,0,3,248,2,252,254,0,255,255,255,248,2,252,254,0,255,255,255,248,2,252,254,0,255,255,255,248,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,3,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252, + // 0x56e0 因 + 224,86,31,34,16,37,3,253,85,85,85,85,85,85,85,84,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,253,0,0,0,0,0,2,252,253,0,0,10,128,0,2,252,253,0,0,31,192,0,2,252,253,0,0,31,192,0,2,252,253,0,0,31,192,0,2,252,253,0,0,31,192,0,2,252,253,0,0,31,128,0,2,252,253,47,255,255,255,255,226,252,253,47,255,255,255,255,226,252,253,47,255,255,255,255,226,252,253,0,0,63,224,0,2,252,253,0,0,63,240,0,2,252,253,0,0,191,244,0,2,252,253,0,0,255,248,0,2,252,253,0,1,253,252,0,2,252,253,0,3,252,191,0,2,252,253,0,7,244,63,128,2,252,253,0,31,240,47,208,2,252,253,0,127,192,15,248,2,252,253,2,255,64,7,255,66,252,253,47,253,0,1,255,242,252,253,47,244,0,0,127,210,252,253,15,128,0,0,11,130,252,253,0,0,0,0,0,2,252,253,0,0,0,0,0,2,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,254,85,85,85,85,85,86,252,253,0,0,0,0,0,2,252, + // 0x56fa 固 + 250,86,31,33,8,37,3,253,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,254,0,0,0,0,0,2,252,254,0,0,10,128,0,2,252,254,0,0,15,192,0,2,252,254,0,0,15,192,0,2,252,254,0,0,15,192,0,2,252,254,15,255,255,255,255,210,252,254,31,255,255,255,255,226,252,254,31,255,255,255,255,226,252,254,0,0,15,192,0,2,252,254,0,0,15,192,0,2,252,254,0,0,15,192,0,2,252,254,0,0,15,192,0,2,252,254,0,255,255,255,253,2,252,254,0,255,255,255,253,2,252,254,0,254,170,170,253,2,252,254,0,252,0,0,189,2,252,254,0,252,0,0,189,2,252,254,0,252,0,0,189,2,252,254,0,252,0,0,189,2,252,254,0,254,170,170,253,2,252,254,0,255,255,255,253,2,252,254,0,255,255,255,253,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,254,0,0,0,0,0,2,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,254,0,0,0,0,0,3,252,254,0,0,0,0,0,2,252, + // 0x5716 圖 + 22,87,31,35,24,37,3,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,253,0,0,0,0,0,1,252,253,0,0,0,0,0,1,252,253,0,255,255,255,252,1,252,253,0,255,255,255,252,1,252,253,0,252,0,0,252,1,252,253,0,252,0,0,252,1,252,253,0,255,255,255,252,1,252,253,0,255,255,255,248,1,252,253,0,0,15,192,0,1,252,253,63,255,255,255,255,245,252,253,63,255,255,255,255,245,252,253,0,0,0,0,0,1,252,253,0,0,0,0,0,1,252,253,3,255,255,255,255,1,252,253,3,255,255,255,255,1,252,253,3,224,0,0,63,1,252,253,3,225,170,168,63,1,252,253,3,225,255,252,63,1,252,253,3,225,224,60,63,1,252,253,3,225,224,60,63,1,252,253,3,225,255,252,63,1,252,253,3,225,170,168,63,1,252,253,3,224,0,0,63,1,252,253,3,255,255,255,255,1,252,253,3,255,255,255,255,1,252,253,0,0,0,0,0,1,252,253,0,0,0,0,0,1,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,253,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0, + // 0x5728 在 + 40,87,34,35,59,37,1,253,0,0,0,57,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,5,85,86,253,85,85,85,85,64,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,0,0,31,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,64,0,63,64,0,0,0,0,255,0,0,63,64,0,0,0,2,253,0,0,63,64,0,0,0,7,252,0,0,63,64,0,0,0,15,240,0,0,63,64,0,0,0,63,224,0,0,63,64,0,0,0,255,208,0,0,127,64,0,0,3,255,208,63,255,255,255,255,0,15,255,208,63,255,255,255,255,0,127,255,208,63,255,255,255,255,0,127,223,208,0,0,63,64,0,0,47,15,208,0,0,63,64,0,0,8,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,127,64,0,0,0,15,209,255,255,255,255,255,224,0,15,209,255,255,255,255,255,224,0,15,209,255,255,255,255,255,224,0,15,208,0,0,0,0,0,0, + // 0x578b 型 + 139,87,33,34,50,37,2,254,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,252,0,31,255,255,255,244,63,0,252,0,31,255,255,255,244,63,0,252,0,31,255,255,255,244,63,0,252,0,0,63,0,253,0,63,0,252,0,0,63,0,253,0,63,0,252,0,0,63,0,253,0,63,0,252,0,0,63,0,253,0,63,0,252,0,191,255,255,255,252,63,0,252,0,191,255,255,255,252,63,0,252,0,191,255,255,255,252,63,0,252,0,0,191,0,253,0,63,0,252,0,0,254,0,253,0,63,0,252,0,0,253,0,253,0,63,0,252,0,3,252,0,253,0,0,0,252,0,11,244,0,253,0,0,0,252,0,47,240,0,253,0,0,1,252,0,191,192,0,253,0,3,255,252,0,63,0,0,254,160,1,255,248,0,8,0,0,3,244,0,255,144,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,0,0,0,7,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,7,244,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x57f7 執 + 247,87,35,36,68,37,1,252,0,2,244,0,0,47,64,0,0,0,2,248,0,0,63,64,0,0,0,2,248,0,0,63,64,0,0,0,2,248,0,0,63,64,0,0,15,255,255,254,0,63,64,0,0,15,255,255,254,0,63,64,0,0,15,255,255,254,0,63,64,0,0,0,2,248,0,0,63,128,0,0,0,2,248,0,127,255,255,253,0,0,2,248,0,127,255,255,253,0,127,255,255,255,255,255,255,253,0,127,255,255,255,192,63,64,252,0,127,255,255,255,192,63,64,252,0,2,240,0,252,0,63,64,252,0,2,244,0,252,0,63,64,252,0,0,248,2,244,16,63,64,252,0,0,252,3,240,62,63,0,252,0,0,188,3,208,191,255,0,252,0,63,255,255,255,175,255,0,252,0,63,255,255,255,135,255,0,252,0,63,255,255,255,128,255,192,252,0,0,2,248,0,0,255,240,252,0,0,2,248,0,0,255,252,252,0,0,2,248,0,1,255,255,252,0,0,2,248,0,2,252,254,253,0,31,255,255,255,3,244,60,253,0,31,255,255,255,11,240,4,189,32,31,255,255,255,15,224,0,189,56,0,2,248,0,63,192,0,126,60,0,2,248,0,191,128,0,127,60,0,2,248,1,255,0,0,63,60,0,2,248,7,252,0,0,63,252,0,2,248,47,244,0,0,31,248,0,2,248,15,208,0,0,15,240,0,2,244,2,64,0,0,3,224,0,0,0,0,0,0,0,0,0, + // 0x584a 塊 + 74,88,35,35,59,37,1,253,0,42,64,0,0,126,64,0,0,0,63,64,0,0,191,64,0,0,0,63,64,0,0,255,0,0,0,0,63,64,0,0,253,0,0,0,0,63,64,63,255,255,255,255,192,0,63,64,63,255,255,255,255,192,0,63,64,63,255,255,255,255,192,0,63,64,63,0,63,64,31,192,63,255,255,63,0,63,64,31,192,63,255,255,63,0,63,64,31,192,63,255,255,63,170,191,170,191,192,21,127,148,63,255,255,255,255,192,0,63,64,63,255,255,255,255,192,0,63,64,63,0,63,64,31,192,0,63,64,63,0,63,64,31,192,0,63,64,63,0,63,64,31,192,0,63,64,63,0,63,64,31,192,0,63,64,63,255,255,255,255,192,0,63,64,63,255,255,255,255,192,0,63,64,63,255,255,255,255,192,0,63,66,0,254,15,193,144,0,0,63,191,64,253,15,195,224,0,0,127,255,192,253,15,195,210,64,11,255,254,0,253,15,195,199,192,191,255,208,1,252,15,199,195,208,127,249,0,2,252,15,223,239,240,63,128,0,3,248,15,239,255,240,36,0,0,7,244,15,222,148,224,0,0,0,31,240,15,192,0,64,0,0,0,127,208,15,192,1,244,0,0,2,255,128,15,192,2,248,0,0,127,254,0,15,255,255,244,0,0,63,248,0,11,255,255,240,0,0,47,192,0,2,255,255,128,0,0,8,0,0,0,0,0,0, + // 0x586b 填 + 107,88,35,35,59,37,1,253,0,21,0,0,0,63,64,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,255,255,255,255,255,240,0,63,0,255,255,255,255,255,240,0,63,0,255,255,255,255,255,240,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,7,255,255,255,253,0,63,255,255,7,255,255,255,253,0,63,255,255,7,240,0,0,253,0,63,255,255,7,240,0,0,253,0,21,127,84,7,255,255,255,253,0,0,63,0,7,255,255,255,253,0,0,63,0,7,240,0,0,253,0,0,63,0,7,240,0,0,253,0,0,63,0,7,240,0,0,253,0,0,63,0,7,255,255,255,253,0,0,63,0,7,255,255,255,253,0,0,63,0,7,240,0,0,253,0,0,63,0,7,240,0,0,253,0,0,63,75,71,255,255,255,253,0,0,63,255,135,255,255,255,253,0,0,127,255,128,0,0,0,0,0,7,255,253,0,0,0,0,0,0,127,255,211,255,255,255,255,255,248,127,253,3,255,255,255,255,255,248,63,128,3,255,255,255,255,255,244,40,0,0,0,41,0,10,0,0,0,0,0,0,255,128,63,208,0,0,0,0,11,254,0,31,252,0,0,0,1,191,244,0,2,255,64,0,0,15,255,128,0,0,127,224,0,0,3,253,0,0,0,15,244,0,0,0,208,0,0,0,2,64, + // 0x588a 墊 + 138,88,35,34,50,37,1,254,0,1,248,0,0,10,64,0,0,0,2,248,0,0,15,128,0,0,5,86,249,85,0,15,128,0,0,15,255,255,255,0,15,128,0,0,15,255,255,255,0,15,128,0,0,0,2,248,0,15,255,255,252,0,0,2,248,0,15,255,255,252,0,127,255,255,255,213,111,255,252,0,127,255,255,255,208,31,128,252,0,22,245,86,249,64,31,128,252,0,1,244,1,244,9,47,128,252,0,0,248,3,240,31,255,64,252,0,21,253,91,229,127,255,0,252,0,63,255,255,255,215,255,64,252,0,63,255,255,255,208,191,224,252,0,0,2,248,0,0,255,252,252,0,0,2,248,0,2,254,253,252,32,15,255,255,255,3,244,116,252,56,15,255,255,255,15,240,0,189,124,5,86,253,85,63,192,0,126,120,0,2,248,0,255,64,0,63,244,0,2,248,0,253,0,0,47,240,0,2,248,0,188,0,0,11,208,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,191,255,255,255,255,255,244,0,0,191,255,255,255,255,255,244,0,0,127,255,255,255,255,255,244,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240, + // 0x5916 外 + 22,89,35,35,59,37,1,253,0,0,121,0,0,1,252,0,0,0,0,191,0,0,1,252,0,0,0,0,254,0,0,1,252,0,0,0,1,253,0,0,1,252,0,0,0,2,252,0,0,1,252,0,0,0,3,252,0,80,1,252,0,0,0,7,255,255,253,1,252,0,0,0,15,255,255,253,1,252,0,0,0,31,255,255,253,1,252,0,0,0,47,192,1,254,129,252,0,0,0,127,128,2,255,209,252,0,0,0,255,0,3,255,241,252,0,0,1,254,0,3,251,249,252,0,0,3,252,0,7,241,255,252,0,0,15,254,0,11,240,191,252,0,0,63,255,208,15,224,63,252,0,0,191,255,248,31,192,31,252,0,0,127,75,255,47,192,7,253,0,0,13,1,255,255,128,2,255,64,0,0,0,63,255,0,1,255,224,0,0,0,11,254,0,1,255,248,0,0,0,3,252,0,1,255,255,64,0,0,3,248,0,1,254,255,244,0,0,15,240,0,1,252,127,252,0,0,47,224,0,1,252,15,240,0,0,127,192,0,1,252,1,208,0,0,255,64,0,1,252,0,0,0,3,254,0,0,1,252,0,0,0,15,252,0,0,1,252,0,0,0,127,240,0,0,1,252,0,0,2,255,192,0,0,1,252,0,0,31,255,0,0,0,1,252,0,0,47,248,0,0,0,1,252,0,0,7,208,0,0,0,1,252,0,0,1,0,0,0,0,1,252,0,0, + // 0x591a 多 + 26,89,33,35,59,37,2,253,0,0,0,15,144,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,7,255,255,255,240,0,0,0,0,47,255,255,255,252,0,0,0,1,255,255,255,255,248,0,0,0,31,254,0,0,15,240,0,0,1,255,253,0,0,63,208,0,0,47,255,255,128,0,255,64,0,0,31,248,127,248,7,253,0,0,0,11,64,11,255,47,244,0,0,0,0,0,0,255,255,192,0,0,0,0,0,0,63,255,64,0,0,0,0,0,1,255,246,254,0,0,0,0,0,47,255,139,252,0,0,0,0,7,255,248,47,240,0,0,0,26,255,255,128,255,255,255,253,0,127,255,244,7,255,255,255,255,64,47,254,0,127,255,255,255,255,0,14,64,2,255,208,0,2,253,0,0,0,111,255,0,0,7,252,0,0,11,255,255,64,0,15,244,0,0,63,255,255,240,0,63,208,0,0,47,244,31,253,0,255,128,0,0,14,0,2,255,135,255,0,0,0,0,0,0,127,255,252,0,0,0,0,0,0,31,255,224,0,0,0,0,0,0,15,255,128,0,0,0,0,0,1,255,252,0,0,0,0,0,0,111,255,224,0,0,0,0,0,91,255,254,0,0,0,0,1,175,255,255,224,0,0,0,0,1,255,255,249,0,0,0,0,0,0,255,254,64,0,0,0,0,0,0,121,64,0,0,0,0,0,0, + // 0x5920 夠 + 32,89,33,35,59,37,2,253,0,6,64,0,0,144,0,0,0,0,15,208,0,1,252,0,0,0,0,47,192,0,3,248,0,0,0,0,63,64,0,3,244,0,0,0,0,255,255,248,7,240,0,0,0,2,255,255,252,15,224,0,0,0,11,255,255,248,31,255,255,255,128,47,208,3,240,63,255,255,255,64,255,64,15,224,127,255,255,255,64,253,116,47,192,254,0,0,47,64,33,254,127,66,252,0,0,47,64,0,127,254,11,244,0,0,47,64,0,31,248,15,250,170,168,47,64,0,63,224,7,207,255,252,47,64,2,255,248,0,15,255,252,47,64,47,254,252,0,15,128,252,63,64,191,227,244,0,15,128,252,63,64,63,75,255,254,15,128,252,63,64,20,47,255,255,79,128,252,63,64,0,127,255,255,15,128,252,63,0,2,253,0,127,15,128,252,63,0,11,248,0,253,15,128,252,63,0,63,224,1,252,15,128,252,63,0,255,136,3,244,15,234,252,63,0,189,63,75,240,15,255,252,63,0,32,47,239,208,15,255,252,63,0,0,7,255,128,15,128,0,63,0,0,2,255,0,15,128,0,127,0,0,11,252,0,10,64,0,126,0,0,127,240,0,0,0,0,190,0,6,255,192,0,0,0,0,253,0,191,254,0,0,0,3,255,252,0,255,240,0,0,0,2,255,248,0,127,64,0,0,0,2,255,224,0,32,0,0,0,0,0,0,0,0, + // 0x5927 大 + 39,89,33,35,59,37,2,253,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,15,240,0,0,0,0,106,170,170,175,250,170,170,170,64,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,47,253,0,0,0,0,0,0,0,63,255,0,0,0,0,0,0,0,63,255,0,0,0,0,0,0,0,191,191,128,0,0,0,0,0,0,255,63,192,0,0,0,0,0,0,254,31,208,0,0,0,0,0,2,253,15,240,0,0,0,0,0,3,252,11,248,0,0,0,0,0,11,248,3,253,0,0,0,0,0,31,240,2,255,0,0,0,0,0,63,224,0,255,128,0,0,0,0,255,192,0,127,208,0,0,0,2,255,64,0,47,244,0,0,0,11,254,0,0,15,253,0,0,0,63,248,0,0,3,255,64,0,1,255,224,0,0,0,255,224,0,11,255,128,0,0,0,63,253,0,191,254,0,0,0,0,31,255,192,191,244,0,0,0,0,3,255,128,47,128,0,0,0,0,0,190,0,8,0,0,0,0,0,0,8,0, + // 0x5929 天 + 41,89,34,33,41,37,2,252,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,106,170,170,175,250,170,170,170,64,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,21,85,85,95,245,85,85,85,0,47,255,255,255,255,255,255,254,0,47,255,255,255,255,255,255,254,0,47,255,255,255,255,255,255,254,0,0,0,0,15,252,0,0,0,0,0,0,0,31,254,0,0,0,0,0,0,0,63,255,0,0,0,0,0,0,0,63,255,128,0,0,0,0,0,0,191,127,192,0,0,0,0,0,1,255,31,224,0,0,0,0,0,3,254,15,248,0,0,0,0,0,15,252,7,253,0,0,0,0,0,63,244,2,255,0,0,0,0,0,255,224,0,255,208,0,0,0,7,255,128,0,63,248,0,0,0,127,254,0,0,15,255,64,0,6,255,244,0,0,3,255,244,0,191,255,192,0,0,0,191,255,208,255,253,0,0,0,0,31,255,192,127,208,0,0,0,0,2,255,64,41,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0, + // 0x5931 失 + 49,89,34,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,15,224,7,240,0,0,0,0,0,15,224,7,240,0,0,0,0,0,47,208,7,240,0,0,0,0,0,63,192,7,240,0,0,0,0,0,127,128,7,240,0,0,0,0,0,191,149,91,249,85,85,80,0,0,255,255,255,255,255,255,240,0,2,255,255,255,255,255,255,240,0,3,255,255,255,255,255,255,240,0,11,244,0,7,240,0,0,0,0,31,240,0,7,240,0,0,0,0,63,208,0,11,240,0,0,0,0,191,192,0,11,240,0,0,0,0,31,0,0,11,240,0,0,0,0,1,0,0,11,240,0,0,0,0,0,0,0,15,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,85,85,85,127,255,85,85,85,64,0,0,0,63,255,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,255,47,192,0,0,0,0,0,3,254,15,240,0,0,0,0,0,11,252,11,252,0,0,0,0,0,47,244,3,255,0,0,0,0,0,255,224,0,255,192,0,0,0,7,255,128,0,127,244,0,0,0,47,254,0,0,31,255,0,0,2,255,244,0,0,7,255,228,0,127,255,192,0,0,0,191,255,208,255,253,0,0,0,0,31,255,208,63,208,0,0,0,0,1,255,128,40,0,0,0,0,0,0,27,0, + // 0x59cb 始 + 203,89,35,35,59,37,1,253,0,15,128,0,0,42,64,0,0,0,31,192,0,0,63,192,0,0,0,31,192,0,0,63,128,0,0,0,47,128,0,0,127,64,0,0,0,63,64,0,0,191,0,0,0,0,63,0,0,0,254,0,0,0,0,63,0,0,0,253,0,160,0,0,191,0,0,2,252,3,244,0,127,255,255,248,3,248,2,252,0,127,255,255,248,3,240,0,254,0,127,255,255,244,11,240,0,127,64,1,252,3,244,15,208,0,63,192,1,248,3,240,31,214,171,255,208,2,248,3,247,255,255,255,255,240,3,244,7,243,255,255,255,255,244,3,240,7,243,255,255,170,87,252,7,240,11,225,64,0,0,1,248,11,224,15,208,0,0,0,0,128,15,208,15,208,0,0,0,0,0,15,192,31,192,0,0,0,0,0,31,208,47,192,63,255,255,255,192,47,248,63,128,63,255,255,255,192,63,255,191,0,63,255,255,255,192,63,255,255,0,63,64,0,31,192,6,31,254,0,63,64,0,31,192,0,3,255,64,63,64,0,31,192,0,7,255,208,63,64,0,31,192,0,15,255,248,63,64,0,31,192,0,63,215,253,63,64,0,31,192,0,191,128,252,63,64,0,31,192,3,255,0,112,63,255,255,255,192,31,252,0,0,63,255,255,255,192,47,240,0,0,63,255,255,255,192,15,128,0,0,63,64,0,31,192,6,0,0,0,63,64,0,26,128, + // 0x5a92 媒 + 146,90,35,35,59,37,1,253,0,46,64,0,126,0,1,248,0,0,63,64,0,126,0,2,248,0,0,63,0,0,126,0,2,248,0,0,127,0,0,126,0,2,248,0,0,127,0,63,255,255,255,255,240,0,190,0,63,255,255,255,255,240,0,253,0,63,255,255,255,255,240,0,253,0,0,126,0,2,248,0,127,255,255,208,126,0,2,248,0,127,255,255,192,126,0,2,248,0,127,255,255,192,127,255,255,248,0,2,244,15,192,127,255,255,248,0,3,244,15,192,127,170,171,248,0,3,240,31,192,126,0,2,248,0,7,240,31,128,126,0,2,248,0,11,224,47,128,127,255,255,248,0,11,208,47,64,127,255,255,248,0,15,192,63,64,127,255,255,248,0,15,192,63,0,0,15,192,0,0,31,192,127,0,0,15,192,0,0,47,224,190,0,0,15,192,0,0,63,252,253,63,255,255,255,255,244,63,255,252,63,255,255,255,255,244,11,127,252,63,255,255,255,255,244,0,31,248,0,1,255,253,0,0,0,11,253,0,3,255,255,0,0,0,15,255,64,15,255,255,192,0,0,47,255,192,63,207,203,240,0,0,127,159,209,255,79,195,253,0,1,255,11,135,253,15,192,255,64,7,253,2,127,244,15,192,127,240,47,248,0,255,208,15,192,31,244,63,224,0,127,64,15,192,7,224,15,64,0,40,0,15,192,0,128,5,0,0,0,0,15,192,0,0, + // 0x5b50 子 + 80,91,33,34,50,37,2,252,0,85,85,85,85,85,85,0,0,1,255,255,255,255,255,255,192,0,1,255,255,255,255,255,255,240,0,1,255,255,255,255,255,255,192,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,255,224,0,0,0,0,0,0,11,255,64,0,0,0,0,0,1,127,252,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,85,85,85,91,249,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,1,149,95,244,0,0,0,0,0,0,255,255,240,0,0,0,0,0,0,191,255,224,0,0,0,0,0,0,127,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5b58 存 + 88,91,35,35,59,37,1,253,0,0,0,57,0,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,253,0,0,0,0,0,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,5,85,95,245,85,85,85,85,64,0,0,47,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,1,255,7,255,255,255,248,0,0,3,253,7,255,255,255,255,0,0,11,248,7,255,255,255,252,0,0,31,240,0,0,0,31,244,0,0,63,208,0,0,0,127,208,0,0,255,208,0,0,1,255,64,0,3,255,208,0,0,27,252,0,0,15,255,208,0,0,31,240,0,0,127,255,208,0,0,31,192,0,0,127,223,208,0,0,47,192,0,0,63,15,209,255,255,255,255,255,244,28,15,209,255,255,255,255,255,244,0,15,209,255,255,255,255,255,244,0,15,208,0,0,31,192,0,0,0,15,208,0,0,31,192,0,0,0,15,208,0,0,31,192,0,0,0,15,208,0,0,31,192,0,0,0,15,208,0,0,31,192,0,0,0,15,208,0,0,31,192,0,0,0,15,208,0,64,47,192,0,0,0,15,208,0,255,255,192,0,0,0,15,208,0,191,255,64,0,0,0,15,208,0,127,249,0,0,0, + // 0x5b89 安 + 137,91,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,11,244,0,0,0,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,128,0,0,0,0,0,191,0,63,128,0,36,0,0,0,191,0,63,128,0,127,128,0,0,191,0,63,128,0,255,0,0,0,191,0,63,128,1,254,0,0,0,191,0,0,0,3,252,0,0,0,0,0,0,0,7,248,0,0,0,0,0,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,21,85,191,149,85,95,245,85,0,0,0,255,0,0,15,240,0,0,0,1,254,0,0,31,224,0,0,0,3,252,0,0,47,208,0,0,0,7,248,0,0,63,192,0,0,0,15,240,0,0,255,64,0,0,0,47,254,64,2,255,0,0,0,0,63,255,249,7,252,0,0,0,0,191,255,255,239,244,0,0,0,0,27,6,255,255,224,0,0,0,0,0,0,31,255,248,0,0,0,0,0,0,47,255,255,128,0,0,0,0,6,255,251,255,248,0,0,0,1,191,255,128,127,255,128,0,26,255,255,248,0,7,255,244,0,31,255,255,128,0,0,127,248,0,11,255,224,0,0,0,11,240,0,3,148,0,0,0,0,1,128,0, + // 0x5b8c 完 + 140,91,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,149,85,85,85,85,85,255,0,63,64,0,0,0,0,0,191,0,63,64,0,0,0,0,0,191,0,63,64,0,0,0,0,0,191,0,63,71,255,255,255,255,240,191,0,21,7,255,255,255,255,240,85,0,0,7,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,85,85,85,85,85,85,85,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,47,192,3,244,0,0,0,0,0,63,192,3,244,0,0,0,0,0,63,128,3,244,0,0,0,0,0,127,64,3,244,0,0,0,0,0,191,0,3,244,0,0,0,0,0,255,0,3,244,0,4,0,0,3,253,0,3,244,0,15,128,0,11,252,0,3,244,0,15,192,0,63,240,0,3,244,0,15,192,2,255,208,0,3,248,0,47,192,191,255,64,0,3,255,255,255,128,255,252,0,0,2,255,255,255,0,127,208,0,0,0,191,255,253,0,56,0,0,0,0,0,0,0,0, + // 0x5b9a 定 + 154,91,34,36,68,37,1,252,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,229,85,85,85,85,85,111,192,15,208,0,0,0,0,0,47,192,15,208,0,0,0,0,0,47,192,15,208,0,0,0,0,0,47,192,15,208,85,85,85,85,85,47,192,15,211,255,255,255,255,255,47,192,0,3,255,255,255,255,255,0,0,0,3,255,255,255,255,255,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,3,244,1,252,0,0,0,0,0,7,244,1,252,0,0,0,0,0,7,240,1,253,0,0,0,0,0,11,240,1,255,255,255,240,0,0,15,240,1,255,255,255,240,0,0,15,240,1,255,255,255,240,0,0,31,244,1,252,0,0,0,0,0,63,252,1,252,0,0,0,0,0,63,254,1,252,0,0,0,0,0,191,255,65,252,0,0,0,0,0,254,63,225,252,0,0,0,0,3,252,15,254,252,0,0,0,0,11,248,3,255,253,0,0,0,0,47,240,0,255,255,255,255,255,240,127,208,0,31,255,255,255,255,224,47,128,0,0,111,255,255,255,208,10,0,0,0,0,21,85,85,64,0,0,0,0,0,0,0,0,0, + // 0x5ba2 客 + 162,91,35,36,68,37,1,252,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,208,0,20,0,0,0,31,192,15,208,0,255,64,0,0,31,192,15,208,2,254,0,0,0,31,192,15,208,11,254,170,170,160,31,192,15,208,47,255,255,255,253,31,192,0,0,191,255,255,255,252,0,0,0,7,255,128,0,15,244,0,0,0,47,255,240,0,63,224,0,0,2,255,235,252,1,255,128,0,0,3,255,66,255,75,254,0,0,0,0,248,0,127,255,244,0,0,0,0,0,0,31,255,208,0,0,0,0,0,0,111,255,248,0,0,0,0,0,7,255,255,255,224,0,0,0,1,191,255,139,255,255,164,0,1,191,255,248,0,191,255,255,244,127,255,255,64,0,6,255,255,224,63,255,255,255,255,255,255,255,192,31,231,255,255,255,255,255,6,64,4,2,255,255,255,255,255,0,0,0,2,248,0,0,0,191,0,0,0,2,248,0,0,0,191,0,0,0,2,248,0,0,0,191,0,0,0,2,248,0,0,0,191,0,0,0,2,248,0,0,0,191,0,0,0,2,255,255,255,255,255,0,0,0,2,255,255,255,255,255,0,0,0,2,255,255,255,255,255,0,0,0,2,248,0,0,0,191,0,0,0,0,0,0,0,0,0,0,0, + // 0x5bb9 容 + 185,91,34,36,68,37,2,252,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,64,0,0,0,0,0,191,0,63,64,0,0,0,0,0,191,0,63,64,9,0,0,32,0,191,0,63,64,63,192,0,254,0,191,0,63,64,255,64,1,255,208,191,0,0,3,254,0,0,63,248,0,0,0,31,248,5,80,7,255,0,0,0,255,224,15,252,0,255,208,0,11,255,64,63,255,0,47,244,0,15,252,0,255,255,192,7,248,0,3,224,3,255,47,244,1,208,0,0,0,15,252,11,254,0,0,0,0,0,127,240,2,255,128,0,0,0,2,255,128,0,127,244,0,0,0,31,254,0,0,15,255,0,0,0,191,244,0,0,2,255,224,0,11,255,255,255,255,255,255,254,64,191,255,255,255,255,255,255,255,208,191,239,255,255,255,255,253,255,128,63,75,224,0,0,2,252,31,0,20,11,224,0,0,2,252,1,0,0,11,224,0,0,2,252,0,0,0,11,224,0,0,2,252,0,0,0,11,224,0,0,2,252,0,0,0,11,224,0,0,2,252,0,0,0,11,255,255,255,255,252,0,0,0,11,255,255,255,255,252,0,0,0,11,255,255,255,255,252,0,0,0,11,224,0,0,2,252,0,0,0,0,0,0,0,0,0,0,0, + // 0x5c0d 對 + 13,92,35,36,68,37,1,252,0,10,130,160,0,0,1,168,0,9,15,195,240,56,0,2,252,0,63,15,195,240,191,0,2,252,0,47,143,195,240,252,0,2,252,0,15,207,195,242,248,0,2,252,0,11,223,195,243,240,0,2,252,0,3,239,195,251,208,0,2,252,0,2,79,195,241,128,0,2,252,0,127,255,255,255,254,0,2,252,0,127,255,255,255,254,0,2,252,0,127,255,255,255,255,255,255,255,248,0,184,0,31,67,255,255,255,248,0,252,0,63,67,255,255,255,248,0,189,0,63,0,0,2,252,0,0,127,0,190,0,0,2,252,0,0,62,0,188,0,0,2,252,0,15,255,255,255,240,125,2,252,0,15,255,255,255,240,127,2,252,0,15,255,255,255,240,63,66,252,0,0,0,126,0,0,47,194,252,0,0,0,126,0,0,15,194,252,0,0,0,126,0,0,15,226,252,0,3,255,255,255,208,7,242,252,0,3,255,255,255,208,3,242,252,0,3,255,255,255,208,3,130,252,0,0,0,126,0,0,0,2,252,0,0,0,126,0,0,0,2,252,0,0,0,126,0,0,0,2,252,0,0,0,127,107,252,0,2,252,0,0,90,255,255,252,0,2,252,0,63,255,255,255,252,0,2,252,0,63,255,255,250,80,0,3,248,0,63,254,148,0,0,15,255,248,0,20,0,0,0,0,7,255,240,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,0,0,0,0, + // 0x5c0f 小 + 15,92,35,36,68,37,1,252,0,0,0,0,84,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,9,0,0,253,0,7,0,0,0,15,240,0,253,0,63,128,0,0,31,224,0,253,0,63,208,0,0,31,208,0,253,0,31,240,0,0,47,192,0,253,0,15,244,0,0,63,192,0,253,0,7,252,0,0,127,128,0,253,0,3,253,0,0,191,64,0,253,0,1,254,0,0,255,0,0,253,0,0,255,0,1,254,0,0,253,0,0,191,128,3,253,0,0,253,0,0,63,192,3,252,0,0,253,0,0,63,208,11,244,0,0,253,0,0,31,224,15,240,0,0,253,0,0,15,240,63,224,0,0,253,0,0,11,244,127,192,0,0,253,0,0,7,248,47,64,0,0,253,0,0,3,252,2,0,0,0,253,0,0,3,224,0,0,0,0,253,0,0,1,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,42,91,253,0,0,0,0,0,0,63,255,252,0,0,0,0,0,0,31,255,248,0,0,0,0,0,0,15,255,144,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5c31 就 + 49,92,35,35,59,37,1,253,0,0,254,0,0,3,244,0,0,0,0,254,0,0,3,244,36,0,0,0,254,0,0,3,245,252,0,0,0,254,0,0,3,244,255,0,0,0,254,0,0,3,244,63,128,63,255,255,255,248,3,244,31,192,63,255,255,255,248,3,244,15,240,63,255,255,255,248,3,244,3,224,0,0,0,0,0,3,244,1,0,0,0,0,0,0,3,248,0,0,3,255,255,255,203,255,255,255,244,3,255,255,255,203,255,255,255,244,3,255,255,255,203,255,255,255,244,3,240,0,31,192,3,244,0,0,3,240,0,31,192,3,244,0,0,3,240,0,31,192,3,255,128,0,3,240,0,31,192,7,255,128,0,3,240,0,31,192,7,255,128,0,3,255,255,255,192,11,255,128,0,3,255,255,255,192,15,255,128,0,3,255,255,255,192,15,255,128,0,0,0,190,0,0,31,239,128,0,0,0,190,6,0,47,239,128,0,3,244,190,63,64,63,175,128,0,3,240,190,31,128,127,111,128,0,7,240,190,15,192,191,47,128,0,15,208,190,11,224,253,47,128,224,15,192,190,7,243,252,47,128,252,47,192,190,3,247,248,47,128,248,63,64,190,2,79,240,47,128,248,191,0,190,0,47,208,47,129,248,29,0,254,0,191,192,47,255,248,0,127,253,2,255,0,31,255,240,0,63,252,0,253,0,11,255,208,0,47,224,0,36,0,0,84,0, + // 0x5de5 工 + 229,93,33,28,252,37,2,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,10,170,170,175,250,170,170,168,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,85,85,85,91,249,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x5dee 差 + 238,93,34,35,59,37,1,253,0,0,24,0,0,0,228,0,0,0,0,254,0,0,2,253,0,0,0,0,191,0,0,3,252,0,0,0,0,63,192,0,11,240,0,0,0,0,31,192,0,15,208,0,0,3,255,255,255,255,255,255,255,64,3,255,255,255,255,255,255,255,64,3,255,255,255,255,255,255,255,64,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,127,255,255,255,255,255,248,0,0,127,255,255,255,255,255,248,0,0,127,255,255,255,255,255,244,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,2,253,255,255,255,255,248,0,0,3,249,255,255,255,255,248,0,0,11,245,255,255,255,255,248,0,0,15,240,0,3,240,0,0,0,0,31,208,0,3,240,0,0,0,0,63,192,0,3,240,0,0,0,0,255,128,0,3,240,0,0,0,2,255,0,0,3,240,0,0,0,7,252,0,0,3,240,0,0,0,47,248,191,255,255,255,255,255,192,127,224,191,255,255,255,255,255,192,31,128,191,255,255,255,255,255,192,2,0,0,0,0,0,0,0,0, + // 0x5df2 已 + 242,93,32,32,0,37,3,254,21,85,85,85,85,85,84,0,127,255,255,255,255,255,254,0,127,255,255,255,255,255,254,0,127,255,255,255,255,255,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,6,160,0,0,0,0,254,0,11,240,0,0,0,0,254,0,11,240,0,0,0,0,254,0,11,240,0,0,0,0,254,0,11,240,0,0,0,0,254,0,11,240,0,0,0,0,254,0,11,255,255,255,255,255,254,0,11,255,255,255,255,255,254,0,11,255,255,255,255,255,254,0,11,245,85,85,85,85,254,0,11,240,0,0,0,0,254,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,121,11,240,0,0,0,0,0,127,11,240,0,0,0,0,0,191,11,240,0,0,0,0,0,255,11,240,0,0,0,0,0,254,11,244,0,0,0,0,2,253,7,254,85,85,85,85,111,252,3,255,255,255,255,255,255,248,0,255,255,255,255,255,255,224,0,27,255,255,255,255,254,0, + // 0x5e73 平 + 115,94,33,33,41,37,2,253,5,85,85,85,85,85,85,84,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,20,0,0,0,127,0,7,240,0,63,128,0,0,63,64,7,240,0,127,128,0,0,63,192,7,240,0,191,0,0,0,31,208,7,240,0,254,0,0,0,15,224,7,240,2,252,0,0,0,11,240,7,240,3,248,0,0,0,7,244,7,240,7,240,0,0,0,3,248,7,240,15,224,0,0,0,2,128,7,240,6,192,0,0,0,0,0,7,240,0,0,0,0,85,85,85,91,249,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0, + // 0x5e8a 床 + 138,94,35,35,59,37,1,253,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,85,85,85,127,149,85,85,80,2,255,255,255,255,255,255,255,240,2,255,255,255,255,255,255,255,240,2,255,255,255,255,255,255,255,240,2,252,0,0,0,0,0,0,0,2,252,0,0,3,244,0,0,0,2,252,0,0,3,244,0,0,0,2,252,0,0,3,244,0,0,0,2,252,0,0,3,244,0,0,0,2,252,0,0,3,244,0,0,0,2,252,0,0,7,248,0,0,0,2,252,127,255,255,255,255,255,240,2,252,127,255,255,255,255,255,240,2,252,127,255,255,255,255,255,240,2,252,0,0,47,255,0,0,0,2,252,0,0,127,255,128,0,0,2,248,0,0,255,255,208,0,0,3,248,0,2,255,255,240,0,0,3,244,0,7,251,251,252,0,0,3,244,0,31,243,245,255,0,0,3,244,0,63,195,244,191,192,0,7,240,0,255,67,244,47,240,0,11,240,3,254,3,244,15,252,0,15,224,31,252,3,244,3,255,64,15,208,191,240,3,244,0,255,224,31,195,255,192,3,244,0,63,244,63,193,254,0,3,244,0,11,224,63,128,116,0,3,244,0,1,192,191,0,0,0,3,244,0,0,0,46,0,0,0,3,244,0,0,0,5,0,0,0,3,244,0,0,0, + // 0x5ea6 度 + 166,94,34,35,59,37,1,253,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,127,64,0,0,0,2,255,255,255,255,255,255,255,240,2,255,255,255,255,255,255,255,240,2,255,255,255,255,255,255,255,240,2,252,0,0,0,0,0,0,0,2,252,0,47,128,0,127,0,0,2,252,0,47,128,0,127,0,0,2,252,0,47,128,0,127,0,0,2,252,255,255,255,255,255,255,224,2,252,255,255,255,255,255,255,224,2,252,255,255,255,255,255,255,208,2,252,0,47,128,0,127,0,0,2,248,0,47,128,0,127,0,0,2,248,0,47,128,0,127,0,0,2,248,0,47,255,255,255,0,0,2,248,0,47,255,255,255,0,0,2,248,0,26,170,170,170,0,0,3,248,0,0,0,0,0,0,0,3,244,191,255,255,255,255,224,0,3,244,191,255,255,255,255,252,0,3,240,191,255,255,255,255,248,0,3,240,0,127,0,0,15,240,0,7,240,0,63,192,0,63,208,0,11,224,0,15,244,1,255,64,0,15,208,0,7,254,15,253,0,0,15,208,0,0,255,255,240,0,0,31,192,0,0,63,255,192,0,0,63,192,0,27,255,255,249,0,0,63,64,107,255,255,255,255,254,80,191,3,255,255,244,6,255,255,240,46,1,255,253,0,0,31,255,208,4,0,233,0,0,0,0,27,128, + // 0x5ee2 廢 + 226,94,35,36,68,37,1,252,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,3,255,255,255,255,255,255,255,240,3,255,255,255,255,255,255,255,240,3,255,255,255,255,255,255,255,240,3,240,0,0,0,0,0,0,0,3,240,21,85,80,62,2,128,0,3,240,127,255,252,47,75,224,0,3,240,127,255,248,15,255,128,0,3,240,0,3,240,11,252,2,0,3,240,125,15,224,3,248,31,208,3,240,191,191,128,0,254,255,64,3,240,15,255,0,0,63,248,0,3,240,11,252,0,0,15,248,0,3,240,191,255,224,255,255,255,224,3,255,255,255,224,255,255,255,244,3,251,245,87,224,253,111,75,224,3,242,64,3,224,248,15,65,64,3,240,0,3,225,244,15,71,128,3,240,63,255,227,240,15,155,128,7,240,127,255,255,224,15,255,64,7,240,189,85,71,192,7,254,0,7,224,252,0,1,0,0,0,0,11,224,248,0,7,255,255,252,0,15,209,255,255,231,255,255,252,0,15,210,255,255,209,185,86,244,0,15,194,245,91,208,252,3,240,0,31,192,0,11,192,126,15,208,0,47,128,0,15,192,47,255,64,0,63,64,0,15,192,15,254,0,0,127,0,0,15,192,31,255,144,0,190,0,37,127,134,255,255,254,144,125,0,63,255,31,253,7,255,208,12,0,47,253,15,144,0,111,128,0,0,0,0,0,0,0,0,0, + // 0x5efa 建 + 250,94,35,36,68,37,1,252,0,0,0,0,0,105,0,0,0,0,0,0,0,0,191,0,0,0,127,255,244,0,0,191,0,0,0,127,255,240,63,255,255,255,254,0,127,255,224,63,255,255,255,254,0,0,15,208,42,170,255,170,254,0,0,47,192,0,0,191,0,190,0,0,63,128,0,0,191,0,190,0,0,127,7,255,255,255,255,255,244,0,254,7,255,255,255,255,255,244,0,252,2,170,170,255,170,255,164,2,252,0,0,0,191,0,190,0,3,244,0,0,0,191,0,190,0,11,255,253,63,255,255,255,254,0,15,255,254,63,255,255,255,254,0,47,255,253,42,170,255,170,169,0,47,64,253,0,0,191,0,0,0,1,0,252,0,0,191,0,0,0,0,0,252,63,255,255,255,255,0,7,65,252,63,255,255,255,255,0,15,194,248,42,170,255,170,170,0,15,195,244,0,0,191,0,0,0,7,227,240,0,0,191,0,0,0,3,251,243,255,255,255,255,255,224,2,255,227,255,255,255,255,255,224,0,255,194,255,255,255,255,255,208,0,127,192,0,0,191,0,0,0,0,127,240,0,0,191,0,0,0,0,255,253,0,0,191,0,0,0,2,255,255,224,0,85,0,0,0,7,252,191,255,229,84,5,85,80,31,240,31,255,255,255,255,255,244,127,224,1,191,255,255,255,255,240,47,128,0,1,175,255,255,255,224,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5f15 引 + 21,95,29,36,32,37,3,252,0,0,0,0,0,0,21,0,0,0,0,0,0,0,63,64,127,255,255,254,0,0,63,64,127,255,255,254,0,0,63,64,127,255,255,254,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,0,0,0,190,0,0,63,64,31,255,255,254,0,0,63,64,31,255,255,254,0,0,63,64,47,255,255,254,0,0,63,64,47,192,0,0,0,0,63,64,63,128,0,0,0,0,63,64,63,64,0,0,0,0,63,64,63,0,0,0,0,0,63,64,127,0,0,0,0,0,63,64,191,255,255,255,0,0,63,64,255,255,255,255,0,0,63,64,255,255,255,254,0,0,63,64,253,0,0,254,0,0,63,64,188,0,0,254,0,0,63,64,0,0,0,253,0,0,63,64,0,0,0,253,0,0,63,64,0,0,0,253,0,0,63,64,0,0,1,252,0,0,63,64,0,0,2,252,0,0,63,64,0,0,2,252,0,0,63,64,0,0,3,248,0,0,63,64,0,0,7,248,0,0,63,64,2,165,111,244,0,0,63,64,1,255,255,240,0,0,63,64,0,255,255,208,0,0,63,64,0,255,254,0,0,0,63,64,0,0,0,0,0,0,0,0, + // 0x5f85 待 + 133,95,35,35,59,37,1,253,0,0,144,0,0,42,64,0,0,0,2,252,0,0,63,128,0,0,0,7,252,0,0,63,128,0,0,0,31,240,0,0,63,128,0,0,0,127,208,0,0,63,128,0,0,1,255,64,47,255,255,255,255,128,11,253,0,47,255,255,255,255,128,63,244,0,47,255,255,255,255,128,63,192,16,0,0,63,128,0,0,31,0,189,0,0,63,128,0,0,4,1,253,0,0,63,128,0,0,0,3,252,0,0,63,128,0,0,0,15,243,255,255,255,255,255,248,0,47,211,255,255,255,255,255,248,0,191,195,255,255,255,255,255,248,2,255,192,0,0,0,15,224,0,11,255,192,0,0,0,15,224,0,47,255,192,0,0,0,15,224,0,191,255,192,0,0,0,15,224,0,127,159,193,255,255,255,255,255,240,61,31,193,255,255,255,255,255,240,20,31,193,255,255,255,255,255,240,0,31,192,0,0,0,15,224,0,0,31,192,1,208,0,15,224,0,0,31,192,11,240,0,15,224,0,0,31,192,3,252,0,15,224,0,0,31,192,2,254,0,15,224,0,0,31,192,0,255,0,15,224,0,0,31,192,0,63,192,15,224,0,0,31,192,0,47,192,15,224,0,0,31,192,0,14,0,15,224,0,0,31,192,0,0,16,31,224,0,0,31,192,0,0,63,255,208,0,0,31,192,0,0,47,255,192,0,0,31,192,0,0,15,254,0,0, + // 0x5f8c 後 + 140,95,35,36,68,37,1,252,0,1,128,0,1,128,0,0,0,0,3,248,0,3,244,0,0,0,0,15,240,0,15,240,0,0,0,0,63,208,0,47,208,10,0,0,0,191,64,16,127,64,31,208,0,3,254,0,189,254,0,127,192,0,15,248,1,255,248,0,255,0,0,127,224,0,127,240,3,253,0,0,127,128,160,15,252,15,244,0,0,45,1,253,2,255,63,208,0,0,0,3,252,0,191,255,66,240,0,0,11,240,0,47,252,3,248,0,0,31,224,0,31,240,1,254,0,0,63,192,0,127,192,0,191,64,0,255,139,255,255,255,255,255,192,3,255,139,255,255,255,255,255,224,31,255,135,255,255,255,255,255,244,127,255,128,0,15,240,0,3,248,255,175,128,0,47,208,0,1,208,61,47,128,0,191,234,170,160,0,36,47,128,2,255,255,255,252,0,0,47,128,11,255,255,255,248,0,0,47,128,63,248,0,11,240,0,0,47,130,255,253,0,31,224,0,0,47,143,254,191,0,127,192,0,0,47,131,244,63,193,255,0,0,0,47,129,192,15,251,252,0,0,0,47,128,0,3,255,240,0,0,0,47,128,0,2,255,224,0,0,0,47,128,0,47,255,253,0,0,0,47,128,6,255,251,255,228,0,0,47,129,191,255,128,191,255,208,0,47,143,255,248,0,15,255,244,0,47,131,255,64,0,1,191,240,0,47,130,144,0,0,0,2,192,0,0,0,0,0,0,0,0,0, + // 0x5f91 徑 + 145,95,35,35,59,37,1,253,0,1,128,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,15,240,255,255,255,255,255,240,0,63,208,255,255,255,255,255,240,0,255,64,255,255,255,255,255,240,3,253,0,0,0,0,0,0,0,15,248,0,1,144,9,0,36,0,127,224,0,3,244,15,208,63,0,127,64,164,11,240,47,128,254,0,45,1,253,15,208,127,1,252,0,0,3,248,47,128,254,3,244,0,0,11,240,63,2,252,11,224,0,0,31,208,253,3,240,31,192,0,0,63,192,253,7,240,47,192,0,0,255,128,127,3,248,15,224,0,3,255,128,63,128,253,3,244,0,15,255,128,15,192,127,1,252,0,127,255,128,11,240,47,128,191,0,255,239,128,3,244,15,208,63,128,127,47,128,2,252,11,240,31,192,60,47,128,0,144,2,64,10,0,0,47,128,0,0,0,0,0,0,0,47,128,127,255,255,255,255,128,0,47,128,127,255,255,255,255,128,0,47,128,127,255,255,255,255,128,0,47,128,0,0,63,64,0,0,0,47,128,0,0,63,64,0,0,0,47,128,0,0,63,64,0,0,0,47,128,0,0,63,64,0,0,0,47,128,0,0,63,64,0,0,0,47,128,0,0,63,64,0,0,0,47,139,255,255,255,255,255,248,0,47,139,255,255,255,255,255,248,0,47,139,255,255,255,255,255,248,0,47,128,0,0,0,0,0,0, + // 0x5f9e 從 + 158,95,35,35,59,37,1,253,0,2,144,0,57,0,7,160,0,0,7,248,0,127,0,11,240,0,0,15,240,0,190,0,11,224,0,0,63,192,0,253,0,15,208,0,0,255,64,0,252,0,15,192,0,3,253,0,2,252,0,31,192,0,15,248,0,3,252,0,63,128,0,127,224,0,7,255,64,63,208,0,63,64,164,15,255,208,191,244,0,29,1,253,31,239,245,255,253,0,0,3,248,63,195,243,252,255,64,0,11,240,191,64,219,244,63,208,0,47,210,254,0,47,240,15,240,0,127,199,252,0,127,192,3,244,1,255,129,240,0,31,0,1,208,3,255,128,144,0,31,128,0,0,31,255,128,0,0,31,192,0,0,127,255,128,0,0,31,192,0,0,255,175,128,11,224,31,192,0,0,62,47,128,15,224,31,192,0,0,40,47,128,15,208,31,192,0,0,0,47,128,15,208,31,255,255,128,0,47,128,15,192,31,255,255,128,0,47,128,31,192,31,255,255,64,0,47,128,47,224,31,192,0,0,0,47,128,63,240,31,192,0,0,0,47,128,63,244,31,192,0,0,0,47,128,191,252,31,192,0,0,0,47,128,254,191,31,192,0,0,0,47,130,252,63,239,192,0,0,0,47,135,248,31,255,192,0,0,0,47,159,240,7,255,255,255,244,0,47,159,208,0,191,255,255,240,0,47,135,128,0,6,255,255,224,0,26,64,0,0,0,0,0,0, + // 0x5fa9 復 + 169,95,35,36,68,37,1,252,0,1,128,0,164,0,0,0,0,0,3,248,1,253,0,0,0,0,0,15,240,3,252,0,0,0,0,0,47,208,3,248,0,0,0,0,0,191,128,11,255,255,255,255,240,2,254,0,15,255,255,255,255,240,15,248,0,63,255,255,255,255,240,127,224,0,191,128,0,0,0,0,63,64,165,255,85,85,85,84,0,28,1,255,255,255,255,255,254,0,0,3,254,251,255,255,255,254,0,0,15,240,83,240,0,0,126,0,0,47,208,3,240,0,0,126,0,0,127,128,3,255,255,255,254,0,1,255,128,3,255,255,255,254,0,7,255,128,3,240,0,0,190,0,31,255,128,3,240,0,0,126,0,127,255,128,3,240,0,0,190,0,255,175,128,3,255,255,255,254,0,126,47,128,3,255,255,255,254,0,40,47,128,0,15,224,0,0,0,0,47,128,0,47,192,0,0,0,0,47,128,0,127,213,85,80,0,0,47,128,1,255,255,255,254,0,0,47,128,7,255,255,255,252,0,0,47,128,47,254,0,3,248,0,0,47,129,255,255,128,31,240,0,0,47,131,253,31,224,127,192,0,0,47,128,176,7,255,255,0,0,0,47,128,0,1,255,248,0,0,0,47,128,0,27,255,254,64,0,0,47,128,26,255,255,255,250,64,0,47,131,255,255,144,127,255,248,0,47,130,255,244,0,2,255,224,0,47,128,228,0,0,0,6,192,0,0,0,0,0,0,0,0,0, + // 0x5fae 微 + 174,95,35,35,59,37,1,253,0,14,0,11,192,0,58,0,0,0,47,192,11,192,0,63,0,0,0,127,64,11,192,0,127,0,0,0,255,15,11,194,224,190,0,0,3,252,15,11,194,240,253,0,0,15,244,15,11,194,240,252,0,0,63,208,15,11,194,240,252,0,0,191,64,15,11,194,241,255,255,244,61,7,223,11,194,243,255,255,244,20,15,239,11,194,243,255,255,244,0,47,207,255,255,247,240,15,192,0,63,79,255,255,255,240,15,128,0,191,15,255,255,255,240,31,128,1,254,0,0,0,47,244,31,64,3,253,0,0,0,63,248,47,64,11,253,0,0,0,191,248,47,0,31,253,0,0,0,60,188,63,0,127,253,47,255,255,244,124,63,0,255,253,47,255,255,240,61,62,0,189,189,47,255,255,240,62,125,0,56,189,1,244,63,0,63,188,0,16,189,1,244,63,0,47,252,0,0,189,1,244,63,0,15,248,0,0,189,1,244,63,0,15,240,0,0,189,2,244,63,0,11,240,0,0,189,2,240,63,0,15,240,0,0,189,3,240,63,188,47,244,0,0,189,7,240,63,253,127,252,0,0,189,11,208,255,248,255,254,0,0,189,15,192,255,66,252,127,64,0,189,63,128,96,11,244,63,208,0,189,191,0,0,63,224,15,244,0,189,61,0,0,191,128,7,248,0,189,8,0,0,62,0,1,240,0,189,0,0,0,4,0,0,64, + // 0x5fc3 心 + 195,95,35,35,59,37,1,253,0,0,0,80,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,1,255,255,0,0,0,0,0,0,0,11,255,224,0,0,0,0,0,0,0,191,254,0,0,0,0,0,0,0,15,255,192,0,0,0,0,0,0,1,255,64,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,0,4,0,0,0,0,0,5,80,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,2,64,0,0,64,15,240,0,0,31,192,0,0,252,15,240,0,0,31,240,0,1,252,15,240,0,0,11,248,0,1,252,15,240,0,0,3,252,0,2,252,15,240,0,0,1,254,0,3,248,15,240,0,0,0,255,0,3,244,15,240,0,0,0,127,128,7,240,15,240,0,0,0,63,192,11,240,15,240,0,0,0,31,224,15,240,15,240,0,0,0,15,240,31,208,15,240,0,0,0,11,244,63,192,15,240,0,0,116,7,248,127,192,15,240,0,0,127,3,252,255,64,15,240,0,0,127,2,224,47,0,15,240,0,0,190,0,0,4,0,15,240,0,0,190,0,0,0,0,11,240,0,0,253,0,0,0,0,11,244,0,2,252,0,0,0,0,7,255,255,255,252,0,0,0,0,3,255,255,255,244,0,0,0,0,0,191,255,255,208,0,0,0,0,0,0,0,0,0,0,0, + // 0x6027 性 + 39,96,34,35,59,37,1,253,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,128,2,248,15,192,0,0,0,63,128,2,248,15,192,0,0,0,63,128,3,248,15,192,0,0,0,63,128,3,244,15,192,0,0,0,63,136,3,240,15,192,0,0,9,63,253,7,240,15,192,0,0,15,127,191,15,255,255,255,255,192,31,63,175,79,255,255,255,255,192,31,63,159,159,255,255,255,255,192,47,63,143,239,213,95,213,85,64,63,63,139,255,64,15,192,0,0,62,63,129,191,0,15,192,0,0,62,63,128,255,0,15,192,0,0,125,63,128,253,0,15,192,0,0,188,63,128,44,0,15,192,0,0,188,63,128,0,0,15,192,0,0,0,63,128,0,0,31,208,0,0,0,63,128,15,255,255,255,255,64,0,63,128,15,255,255,255,255,64,0,63,128,15,255,255,255,255,64,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,128,0,0,15,192,0,0,0,63,130,255,255,255,255,255,240,0,63,130,255,255,255,255,255,240,0,63,130,255,255,255,255,255,240,0,63,128,85,85,85,85,85,80,0,42,64,0,0,0,0,0,0, + // 0x6062 恢 + 98,96,35,35,59,37,1,253,0,63,64,15,192,0,0,0,0,0,63,64,15,192,0,0,0,0,0,63,64,15,192,0,0,0,0,0,63,64,15,192,0,0,0,0,0,63,67,255,255,255,255,255,244,0,63,67,255,255,255,255,255,244,0,63,167,255,255,255,255,255,244,9,63,252,31,192,0,0,0,0,15,63,188,15,192,0,252,0,0,31,63,126,15,192,0,252,0,0,31,63,95,15,192,0,252,0,0,31,63,79,79,192,0,252,0,0,47,63,79,79,192,0,252,2,144,62,63,75,79,199,192,252,3,240,61,63,64,15,199,192,252,7,224,124,63,64,15,203,192,252,11,208,188,63,64,15,203,192,252,15,192,116,63,64,31,207,128,252,31,128,0,63,64,31,143,65,252,47,0,0,63,64,31,159,1,252,63,0,0,63,64,47,127,2,252,125,0,0,63,64,47,93,3,253,4,0,0,63,64,63,0,3,254,0,0,0,63,64,63,0,7,255,0,0,0,63,64,127,0,15,239,64,0,0,63,64,190,0,31,143,192,0,0,63,64,253,0,63,79,208,0,0,63,64,252,0,191,7,240,0,0,63,66,252,1,253,3,252,0,0,63,67,248,7,248,1,254,0,0,63,71,240,31,240,0,191,128,0,63,79,224,191,192,0,63,244,0,63,95,194,255,64,0,15,248,0,63,75,128,252,0,0,3,240,0,63,65,0,96,0,0,0,144, + // 0x606f 息 + 111,96,35,35,59,37,1,253,0,0,0,1,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,252,0,0,0,0,0,11,255,255,255,255,255,192,0,0,11,255,255,255,255,255,192,0,0,11,250,170,170,170,191,192,0,0,11,224,0,0,0,15,192,0,0,11,224,0,0,0,15,192,0,0,11,250,170,170,170,175,192,0,0,11,255,255,255,255,255,192,0,0,11,255,255,255,255,255,192,0,0,11,224,0,0,0,15,192,0,0,11,224,0,0,0,15,192,0,0,11,250,170,170,170,175,192,0,0,11,255,255,255,255,255,192,0,0,11,255,255,255,255,255,192,0,0,11,224,0,0,0,15,192,0,0,11,224,0,0,0,15,192,0,0,11,224,0,0,0,15,192,0,0,11,255,255,255,255,255,192,0,0,11,255,255,255,255,255,192,0,0,6,170,170,170,170,170,128,0,0,0,0,2,208,0,0,0,0,0,0,0,15,244,0,0,0,0,0,80,0,3,253,0,2,192,0,0,190,15,208,255,64,15,240,0,0,253,15,208,63,208,15,252,0,1,252,15,208,15,208,3,254,0,3,248,15,208,7,0,0,255,64,11,240,15,208,0,2,224,63,208,31,240,15,208,0,3,244,31,240,127,192,15,224,0,7,244,11,244,63,64,15,255,255,255,240,3,244,6,0,7,255,255,255,224,1,128,0,0,1,191,255,255,64,0,0, + // 0x61b6 憶 + 182,97,35,35,59,37,1,253,0,63,64,0,0,31,128,0,0,0,63,64,0,0,47,192,0,0,0,63,64,0,0,47,192,0,0,0,63,64,63,255,255,255,255,192,0,63,64,63,255,255,255,255,192,0,63,64,42,190,170,171,250,128,0,63,148,0,126,0,7,224,0,4,63,252,0,63,0,15,192,0,15,63,189,0,47,64,15,192,0,31,63,126,255,255,255,255,255,244,31,63,95,255,255,255,255,255,244,31,63,79,234,170,170,170,170,164,47,63,79,128,0,0,0,0,0,62,63,74,75,255,255,255,255,64,62,63,64,11,255,255,255,255,64,125,63,64,11,224,0,0,63,64,188,63,64,11,224,0,0,63,64,120,63,64,11,224,0,0,63,64,0,63,64,11,255,255,255,255,64,0,63,64,11,255,255,255,255,64,0,63,64,11,224,0,0,63,64,0,63,64,11,224,0,0,63,64,0,63,64,11,255,255,255,255,64,0,63,64,11,255,255,255,255,64,0,63,64,0,0,253,0,0,0,0,63,64,0,0,191,192,16,0,0,63,64,45,15,207,240,184,0,0,63,64,63,15,195,224,254,0,0,63,64,127,15,192,128,127,64,0,63,64,189,15,192,1,47,192,0,63,64,252,15,192,3,239,224,0,63,67,248,15,192,7,227,240,0,63,75,240,15,255,255,210,248,0,63,66,208,15,255,255,192,208,0,63,64,0,1,191,250,0,0, + // 0x61c9 應 + 201,97,35,35,59,37,1,253,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,3,255,255,255,255,255,255,255,240,3,255,255,255,255,255,255,255,240,3,255,255,255,255,255,255,255,240,3,240,0,228,11,144,41,0,0,3,240,2,248,15,192,127,0,0,3,240,7,240,47,128,253,0,0,3,240,15,208,63,255,255,255,192,3,240,47,192,255,255,255,255,192,3,240,127,194,255,1,248,0,0,3,241,255,199,254,1,248,0,0,3,251,255,223,255,255,255,255,0,3,255,255,239,255,255,255,255,0,3,255,223,199,126,1,248,0,0,3,242,15,192,62,1,248,0,0,3,240,15,192,63,255,255,255,0,3,240,15,192,63,255,255,255,0,3,240,15,192,62,1,248,0,0,3,240,15,192,63,1,248,0,0,7,240,15,192,63,255,255,255,224,7,224,15,192,63,255,255,255,224,7,224,10,64,29,0,0,0,0,11,224,0,0,127,208,0,0,0,15,208,0,0,31,252,0,0,0,15,192,25,11,210,255,2,240,0,15,192,63,79,208,126,3,252,0,31,192,127,15,208,8,0,254,0,47,128,253,15,208,0,36,127,64,63,65,252,15,208,0,63,47,192,127,7,248,11,224,0,127,15,240,190,15,240,11,255,255,254,7,244,61,3,192,3,255,255,252,3,208,8,0,0,0,175,255,160,0,0, + // 0x6210 成 + 16,98,35,36,68,37,1,252,0,0,0,0,7,240,40,0,0,0,0,0,0,7,244,191,64,0,0,0,0,0,7,244,191,240,0,0,0,0,0,7,244,15,253,0,0,0,0,0,7,244,2,254,0,0,0,0,0,3,244,0,60,0,1,255,255,255,255,255,255,255,240,1,255,255,255,255,255,255,255,240,1,255,255,255,255,255,255,255,240,1,253,85,85,87,249,85,85,80,1,252,0,0,3,248,0,0,0,1,252,0,0,3,252,0,0,0,1,252,0,0,2,252,0,185,0,1,252,0,0,2,252,0,255,0,1,255,255,255,65,252,1,253,0,1,255,255,255,65,252,3,252,0,1,255,255,255,64,253,3,248,0,1,253,0,63,64,254,11,240,0,1,252,0,63,64,255,15,224,0,1,252,0,63,64,191,47,208,0,2,252,0,63,64,127,127,128,0,2,252,0,63,64,127,255,0,0,2,252,0,63,0,63,253,0,0,3,252,0,63,0,47,252,0,0,3,248,0,127,0,31,240,1,64,3,248,0,191,0,63,224,2,224,7,244,255,255,0,255,240,2,244,11,240,191,253,3,255,244,3,244,15,240,191,244,15,255,252,3,240,15,224,0,0,127,241,254,3,240,47,208,0,2,255,208,255,139,240,63,192,0,15,255,64,127,255,208,127,128,0,11,252,0,31,255,192,47,0,0,3,224,0,7,255,64,6,0,0,0,64,0,0,84,0,0,0,0,0,0,0,0,0,0, + // 0x6236 戶 + 54,98,29,35,24,37,2,253,0,0,0,0,0,1,160,0,0,0,0,0,0,111,252,0,0,0,0,1,191,255,254,0,0,80,26,255,255,255,228,0,0,127,255,255,255,228,0,0,0,127,255,254,144,0,0,0,0,127,233,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,255,255,255,255,255,192,0,127,255,255,255,255,255,192,0,127,255,255,255,255,255,192,0,127,0,0,0,0,31,192,0,127,0,0,0,0,31,192,0,127,0,0,0,0,31,192,0,191,0,0,0,0,31,192,0,191,0,0,0,0,31,192,0,191,0,0,0,0,31,192,0,191,0,0,0,0,31,192,0,255,255,255,255,255,255,192,0,255,255,255,255,255,255,192,0,255,255,255,255,255,255,192,0,253,0,0,0,0,47,192,1,252,0,0,0,0,31,192,2,252,0,0,0,0,0,0,3,248,0,0,0,0,0,0,7,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,31,224,0,0,0,0,0,0,63,192,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,0,0,0,0,0,0,0,125,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0, + // 0x6240 所 + 64,98,35,34,50,37,1,253,0,0,0,0,0,0,0,111,64,47,255,255,255,208,0,7,255,208,47,255,255,255,209,2,255,255,208,47,255,255,255,215,255,255,248,0,0,0,0,0,7,255,254,64,0,0,0,0,0,7,255,64,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,7,255,255,255,71,240,0,0,0,7,255,255,255,71,240,0,0,0,7,255,255,255,71,240,0,0,0,7,240,0,63,71,240,0,0,0,7,240,0,63,71,255,255,255,248,7,240,0,63,71,255,255,255,248,7,240,0,63,71,255,255,255,248,7,240,0,63,71,245,86,253,80,7,240,0,63,71,240,2,252,0,7,255,255,255,71,240,2,252,0,7,255,255,255,75,240,2,252,0,7,255,255,255,79,224,2,252,0,7,240,0,0,15,224,2,252,0,11,224,0,0,15,208,2,252,0,11,224,0,0,15,192,2,252,0,11,224,0,0,47,192,2,252,0,15,208,0,0,63,128,2,252,0,15,208,0,0,63,64,2,252,0,15,192,0,0,191,0,2,252,0,31,192,0,0,254,0,2,252,0,47,128,0,2,252,0,2,252,0,63,64,0,7,248,0,2,252,0,191,0,0,15,240,0,2,252,0,254,0,0,47,224,0,2,252,0,125,0,0,11,128,0,2,252,0,8,0,0,2,0,0,1,252,0, + // 0x6247 扇 + 71,98,33,33,41,37,1,253,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,252,0,0,191,255,255,255,255,255,252,0,0,191,170,170,170,170,170,252,0,0,190,0,0,0,0,0,252,0,0,190,0,0,0,0,0,252,0,0,191,170,170,170,170,170,252,0,0,191,255,255,255,255,255,252,0,0,191,255,255,255,255,255,252,0,0,190,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,170,170,164,170,170,169,0,0,253,255,255,248,255,255,254,0,0,253,255,255,248,255,255,254,0,0,253,4,2,248,4,0,126,0,0,252,46,2,248,47,0,126,0,1,252,63,130,248,47,192,126,0,1,252,15,210,248,11,240,126,0,2,252,7,242,248,3,240,126,0,3,248,2,130,248,0,128,126,0,7,244,0,22,248,0,26,126,0,11,240,2,250,248,2,254,126,0,15,224,127,254,248,111,254,126,0,31,211,255,210,249,255,224,126,0,63,195,253,2,248,253,0,126,0,127,130,208,2,248,144,0,190,0,255,0,0,171,244,0,59,254,0,45,0,0,255,240,0,63,253,0,4,0,0,191,144,0,31,228,0, + // 0x624b 手 + 75,98,33,36,68,37,2,252,0,0,0,0,0,0,110,0,0,0,0,0,0,6,191,255,128,0,0,5,106,255,255,255,255,208,0,11,255,255,255,255,255,233,0,0,7,255,255,255,254,148,0,0,0,3,255,170,87,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,1,85,85,87,249,85,85,84,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,85,85,85,91,249,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,1,85,91,244,0,0,0,0,0,2,255,255,240,0,0,0,0,0,0,255,255,224,0,0,0,0,0,0,255,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6253 打 + 83,98,34,35,59,37,2,253,0,63,64,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,31,255,255,255,255,224,0,63,128,31,255,255,255,255,224,0,63,128,31,255,255,255,255,224,0,63,128,5,85,86,254,85,64,0,63,128,0,0,1,252,0,0,255,255,255,192,0,1,252,0,0,255,255,255,192,0,1,252,0,0,255,255,255,192,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,135,208,0,1,252,0,0,0,63,255,208,0,1,252,0,0,1,191,255,224,0,1,252,0,0,191,255,255,144,0,1,252,0,0,255,255,208,0,0,1,252,0,0,255,255,128,0,0,1,252,0,0,180,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,2,252,0,0,63,255,64,0,63,255,252,0,0,47,255,0,0,63,255,252,0,0,31,248,0,0,31,255,240,0,0,0,0,0,0,10,169,0,0,0, + // 0x6279 批 + 121,98,35,35,59,37,1,253,0,63,0,5,64,1,164,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,127,255,255,47,192,2,248,0,0,127,255,255,47,192,2,248,2,0,127,255,255,47,192,2,248,11,192,0,63,0,47,192,2,248,63,240,0,63,0,47,255,242,249,255,192,0,63,0,47,255,242,255,254,0,0,63,0,47,255,242,255,244,0,0,63,0,47,213,82,255,128,0,0,63,94,47,192,2,252,0,0,0,63,254,47,192,2,248,0,0,6,255,255,47,192,2,248,0,0,191,255,249,47,192,2,248,0,0,191,255,64,47,192,2,248,0,0,127,127,0,47,192,2,248,0,0,16,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,0,0,0,63,0,47,192,2,248,1,208,0,63,0,47,192,2,248,1,248,0,63,0,47,192,98,248,2,248,0,63,0,47,219,242,248,2,244,0,63,10,255,255,246,252,3,240,0,127,15,255,255,225,255,255,240,47,255,11,255,144,0,255,255,224,31,254,3,144,0,0,127,255,128,15,228,0,0,0,0,0,0,0, + // 0x6296 抖 + 150,98,35,36,68,37,1,252,0,31,192,0,0,0,15,208,0,0,31,192,0,0,0,15,224,0,0,31,192,0,0,0,15,224,0,0,31,192,0,45,0,15,224,0,0,31,192,0,127,192,15,224,0,0,31,192,0,127,244,15,224,0,0,31,192,0,11,254,15,224,0,0,31,192,0,1,255,79,224,0,63,255,255,208,0,63,15,224,0,63,255,255,208,0,12,15,224,0,63,255,255,208,0,0,15,224,0,0,31,192,0,0,0,15,224,0,0,31,192,0,128,0,15,224,0,0,31,192,2,248,0,15,224,0,0,31,192,7,255,128,15,224,0,0,31,192,1,255,240,15,224,0,0,31,192,64,31,252,15,224,0,0,31,223,208,3,244,15,224,0,0,47,255,224,0,176,15,224,0,27,255,255,224,0,0,15,224,0,127,255,249,0,0,0,15,224,0,63,255,192,0,0,0,15,251,244,63,111,192,0,0,6,191,255,244,0,31,192,0,107,255,255,255,248,0,31,192,47,255,255,255,250,64,0,31,192,31,255,255,175,224,0,0,31,192,31,250,64,15,224,0,0,31,192,5,0,0,15,224,0,0,31,192,0,0,0,15,224,0,0,31,192,0,0,0,15,224,0,0,31,192,0,0,0,15,224,0,0,47,192,0,0,0,15,224,0,31,255,192,0,0,0,15,224,0,15,255,64,0,0,0,15,224,0,15,249,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0, + // 0x62bd 抽 + 189,98,34,36,68,37,1,252,0,31,128,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,127,255,255,133,85,95,213,85,64,127,255,255,159,255,255,255,255,240,127,255,255,159,255,255,255,255,240,0,47,192,31,255,255,255,255,240,0,47,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,95,192,15,192,11,240,0,47,239,159,192,15,192,11,240,0,47,255,223,192,15,208,11,240,27,255,255,223,255,255,255,255,240,191,255,248,31,255,255,255,255,240,127,255,192,31,255,255,255,255,240,62,111,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,31,192,15,192,11,240,0,47,192,31,213,95,213,95,240,0,47,192,31,255,255,255,255,240,0,47,192,31,255,255,255,255,240,0,47,128,31,255,255,255,255,240,47,255,128,31,192,0,0,11,240,15,255,64,31,192,0,0,11,240,15,249,0,15,192,0,0,6,144,0,0,0,0,0,0,0,0,0, + // 0x62d4 拔 + 212,98,35,36,68,37,1,252,0,31,128,0,11,208,4,0,0,0,47,192,0,15,224,47,64,0,0,47,192,0,15,208,63,224,0,0,47,192,0,15,208,15,253,0,0,47,192,0,15,208,2,255,128,0,47,192,0,15,208,0,127,128,0,47,192,0,15,208,0,15,0,0,47,192,0,15,208,0,0,0,127,255,255,191,255,255,255,255,240,127,255,255,191,255,255,255,255,240,106,191,234,127,255,255,255,255,240,0,47,192,0,15,208,0,0,0,0,47,192,0,15,208,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,240,0,253,0,0,47,192,0,47,240,0,253,0,0,47,193,64,47,244,1,252,0,0,47,255,128,63,248,2,252,0,0,127,255,192,63,252,2,248,0,111,255,255,128,127,253,3,244,0,191,255,228,0,191,127,7,240,0,127,255,192,0,254,63,75,240,0,62,47,192,0,253,47,207,208,0,0,47,192,1,252,15,239,192,0,0,47,192,2,252,11,255,128,0,0,47,192,3,244,3,255,0,0,0,47,192,11,240,2,254,0,0,0,47,192,15,224,3,255,64,0,0,47,192,47,192,11,255,208,0,0,47,192,127,128,47,255,244,0,0,47,192,255,0,191,199,254,0,0,47,131,253,3,255,1,255,208,47,255,143,248,31,252,0,127,248,15,255,71,240,15,240,0,11,240,15,249,1,192,3,128,0,1,192,0,0,0,0,0,0,0,0,0, + // 0x6309 按 + 9,99,35,36,68,37,1,252,0,31,128,0,0,31,192,0,0,0,47,192,0,0,31,192,0,0,0,47,192,0,0,31,192,0,0,0,47,192,0,0,31,192,0,0,0,47,192,0,0,31,192,0,0,0,47,192,63,255,255,255,255,240,0,47,192,63,255,255,255,255,240,0,47,192,63,255,255,255,255,240,127,255,255,191,128,0,0,7,240,127,255,255,191,64,0,0,7,240,127,255,255,191,64,254,0,7,240,0,47,192,63,64,253,0,7,240,0,47,192,21,2,252,0,1,80,0,47,192,0,3,248,0,0,0,0,47,192,0,3,244,0,0,0,0,47,192,63,255,255,255,255,248,0,47,193,191,255,255,255,255,248,0,47,255,255,255,255,255,255,248,1,191,255,192,47,192,2,252,0,127,255,255,128,63,128,3,248,0,191,255,208,0,127,0,3,248,0,127,255,192,0,191,0,7,240,0,57,47,192,0,254,0,15,240,0,0,47,192,1,254,0,31,224,0,0,47,192,2,255,244,63,192,0,0,47,192,3,255,255,191,128,0,0,47,192,2,247,255,255,0,0,0,47,192,0,0,127,255,64,0,0,47,192,0,0,31,255,224,0,0,47,192,0,0,191,255,253,0,0,47,192,0,27,255,75,255,128,0,47,128,22,255,252,1,255,224,47,255,128,255,255,208,0,47,240,15,255,64,127,249,0,0,7,208,15,249,0,62,64,0,0,1,128,0,0,0,0,0,0,0,0,0, + // 0x6389 掉 + 137,99,35,36,68,37,1,252,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,255,255,240,0,63,64,0,0,63,255,255,240,0,63,64,0,0,63,255,255,240,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,127,255,255,0,0,63,64,0,0,127,255,255,63,255,255,255,255,0,127,255,255,63,255,255,255,255,0,0,63,64,63,234,170,170,255,0,0,63,64,63,64,0,0,63,0,0,63,64,63,64,0,0,63,0,0,63,64,63,170,170,170,191,0,0,63,64,63,255,255,255,255,0,0,63,91,63,255,255,255,255,0,0,63,255,63,64,0,0,63,0,1,191,255,63,64,0,0,63,0,111,255,255,63,64,0,0,63,0,127,255,208,63,234,170,170,191,0,63,255,64,63,255,255,255,255,0,57,63,64,63,255,255,255,255,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,67,255,255,255,255,255,244,0,63,67,255,255,255,255,255,244,0,63,67,255,255,255,255,255,244,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,127,64,0,0,63,64,0,0,63,255,0,0,0,63,64,0,0,63,255,0,0,0,63,64,0,0,47,248,0,0,0,63,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x63a2 探 + 162,99,35,35,59,37,1,253,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,63,255,255,255,255,224,0,63,0,63,255,255,255,255,240,0,63,0,63,255,255,255,255,240,0,63,0,62,0,0,0,7,240,0,63,0,62,11,224,189,7,240,0,63,0,62,11,208,189,7,240,127,255,255,62,15,208,189,3,224,127,255,255,0,15,192,189,0,0,127,255,255,0,31,192,189,0,128,0,63,0,0,63,128,189,1,244,0,63,0,0,255,0,190,1,244,0,63,0,7,254,0,191,171,240,0,63,0,191,248,0,127,255,240,0,63,0,63,208,21,95,255,192,0,63,26,41,0,47,128,0,0,0,63,254,0,0,47,128,0,0,1,191,255,0,0,47,128,0,0,111,255,254,0,0,47,128,0,0,191,255,144,191,255,255,255,255,240,127,255,0,191,255,255,255,255,240,56,63,0,191,255,255,255,255,240,0,63,0,0,3,255,252,0,0,0,63,0,0,15,255,255,0,0,0,63,0,0,47,255,255,128,0,0,63,0,0,191,111,159,224,0,0,63,0,2,254,47,135,248,0,0,63,0,11,252,47,130,254,0,0,63,0,127,240,47,128,255,208,0,63,2,255,192,47,128,63,248,0,127,7,254,0,47,128,15,244,47,255,1,244,0,47,128,2,208,31,254,0,64,0,47,128,0,0,15,228,0,0,0,47,128,0,0, + // 0x63a5 接 + 165,99,35,36,68,37,1,252,0,31,128,0,0,47,192,0,0,0,47,192,0,0,47,192,0,0,0,47,192,0,0,47,192,0,0,0,47,192,0,0,47,192,0,0,0,47,192,63,255,255,255,255,208,0,47,192,63,255,255,255,255,208,0,47,192,63,255,255,255,255,208,0,47,192,0,190,0,7,240,0,63,255,255,0,127,0,11,224,0,63,255,255,0,63,0,15,208,0,63,255,255,0,63,64,15,192,0,0,47,192,0,47,128,47,128,0,0,47,192,0,47,128,63,64,0,0,47,193,255,255,255,255,255,244,0,47,193,255,255,255,255,255,244,0,47,193,255,255,255,255,255,244,0,47,192,0,2,252,0,0,0,0,47,239,0,3,244,0,0,0,0,127,255,0,11,240,0,0,0,111,255,255,255,255,255,255,255,244,191,255,229,255,255,255,255,255,244,191,255,192,255,255,255,255,255,244,125,47,192,0,127,0,11,240,0,0,47,192,0,254,0,15,224,0,0,47,192,1,252,0,31,192,0,0,47,192,3,252,0,63,192,0,0,47,192,7,255,208,127,64,0,0,47,192,15,255,255,255,0,0,0,47,192,1,203,255,253,0,0,0,47,192,0,0,127,255,128,0,0,47,192,0,6,255,255,248,0,5,127,128,5,191,254,47,255,64,31,255,131,255,255,228,2,255,208,15,255,2,255,253,0,0,47,192,15,248,0,249,64,0,0,7,0,0,0,0,0,0,0,0,0,0, + // 0x63a7 控 + 167,99,35,35,59,37,1,253,0,63,0,0,0,47,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,255,255,255,255,255,240,0,63,0,255,255,255,255,255,240,0,63,0,255,255,255,255,255,240,0,63,0,252,11,208,189,3,240,127,255,254,252,15,208,189,3,240,127,255,254,252,15,192,189,3,240,127,255,254,252,15,192,189,0,0,0,63,0,0,47,192,189,1,0,0,63,0,0,63,128,189,2,240,0,63,0,0,191,0,190,2,240,0,63,0,7,253,0,191,255,240,0,63,25,191,248,0,127,255,224,0,63,254,127,208,0,31,255,128,0,191,255,61,0,0,0,0,0,31,255,253,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,191,255,0,31,255,255,255,255,128,125,63,0,31,255,255,255,255,128,0,63,0,31,255,255,255,255,128,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,63,0,0,0,63,128,0,0,0,127,3,255,255,255,255,255,244,47,255,3,255,255,255,255,255,244,31,254,3,255,255,255,255,255,244,15,228,0,0,0,0,0,0,0, + // 0x63d0 提 + 208,99,35,35,59,37,1,253,0,42,0,0,0,0,0,0,0,0,63,0,6,170,170,170,169,0,0,63,0,15,255,255,255,255,0,0,63,0,15,255,255,255,255,0,0,63,0,15,208,0,0,127,0,0,63,0,15,208,0,0,127,0,0,63,0,15,229,85,85,191,0,127,255,255,15,255,255,255,255,0,127,255,255,15,255,255,255,255,0,127,255,255,15,208,0,0,127,0,0,127,0,15,208,0,0,127,0,0,63,0,15,234,170,170,191,0,0,63,0,15,255,255,255,255,0,0,63,0,15,255,255,255,255,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,5,127,255,255,255,255,224,0,63,254,191,255,255,255,255,240,1,191,255,191,255,255,255,255,240,127,255,254,0,0,47,128,0,0,191,255,144,1,64,47,128,0,0,127,255,0,7,224,47,128,0,0,56,63,0,11,224,47,128,0,0,0,63,0,15,208,47,255,255,0,0,63,0,15,192,47,255,255,0,0,63,0,31,208,47,234,170,0,0,63,0,47,240,47,128,0,0,0,63,0,63,248,47,128,0,0,0,63,0,191,189,47,128,0,0,0,63,0,253,63,191,128,0,0,0,63,2,252,31,255,128,0,0,63,255,11,244,7,255,255,255,248,47,254,31,224,0,255,255,255,244,31,244,7,192,0,6,255,255,240,0,0,0,0,0,0,0,0,0, + // 0x63d2 插 + 210,99,34,35,59,37,1,253,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,5,190,0,0,63,0,0,86,175,255,255,64,0,63,0,63,255,255,255,255,128,0,63,0,63,255,255,250,80,0,0,63,0,26,165,111,128,0,0,0,63,0,0,0,47,128,0,0,0,63,0,0,0,47,128,0,0,127,255,255,0,0,47,128,0,0,127,255,255,255,255,255,255,255,240,127,255,255,255,255,255,255,255,240,0,63,0,255,255,255,255,255,240,0,63,0,0,0,47,128,0,0,0,63,0,0,0,47,128,0,0,0,63,0,0,31,47,128,0,0,0,63,0,57,255,255,143,255,208,0,63,110,63,255,191,143,255,208,0,63,254,63,244,47,143,255,208,11,255,255,63,0,47,128,15,208,191,255,248,63,0,47,128,15,208,191,255,64,63,0,47,128,15,208,127,191,0,63,0,47,128,15,208,16,63,0,63,255,47,143,255,208,0,63,0,63,255,47,143,255,208,0,63,0,63,255,47,143,255,208,0,63,0,63,0,47,128,15,208,0,63,0,63,0,47,128,15,208,0,63,0,63,0,47,128,15,208,0,63,0,63,0,47,128,15,208,0,63,0,63,0,47,128,15,208,0,63,0,63,255,255,255,255,208,0,127,0,63,255,255,255,255,208,47,255,0,63,255,255,255,255,208,31,254,0,63,0,0,0,15,208,15,228,0,63,0,0,0,11,192, + // 0x63db 換 + 219,99,35,36,68,37,1,252,0,63,0,0,30,64,0,0,0,0,63,0,0,63,128,0,0,0,0,63,0,0,63,64,0,0,0,0,63,0,0,255,255,252,0,0,0,63,0,1,255,255,255,0,0,0,63,0,3,254,171,254,0,0,0,63,0,15,240,2,252,0,0,0,63,0,47,192,3,244,0,0,127,255,255,191,64,11,240,0,0,127,255,255,255,255,255,255,255,192,127,255,255,255,255,255,255,255,192,0,63,0,63,255,255,255,255,192,0,63,0,47,3,224,244,15,192,0,63,0,47,3,208,244,15,192,0,63,0,47,7,208,244,15,192,0,63,0,47,15,192,248,31,192,0,63,5,47,127,64,255,255,192,0,63,254,47,254,0,127,255,192,1,191,255,47,116,0,0,15,192,127,255,254,47,0,5,0,15,192,191,255,144,47,0,63,64,15,192,127,255,0,26,0,63,0,10,64,56,63,0,0,0,63,0,0,0,0,63,2,255,255,255,255,255,240,0,63,2,255,255,255,255,255,240,0,63,1,255,255,255,255,255,240,0,63,0,0,1,255,224,0,0,0,63,0,0,3,255,244,0,0,0,63,0,0,11,242,253,0,0,0,63,0,0,47,224,255,64,0,0,63,0,1,255,128,127,244,0,0,127,0,31,254,0,15,255,144,47,255,11,255,244,0,3,255,244,31,254,3,255,64,0,0,127,208,15,228,2,228,0,0,0,2,128,0,0,0,0,0,0,0,0,0, + // 0x64c7 擇 + 199,100,35,36,68,37,1,252,0,63,0,0,0,0,0,0,0,0,63,0,21,85,85,85,85,64,0,63,0,47,255,255,255,255,208,0,63,0,47,255,255,255,255,208,0,63,0,47,3,224,61,7,208,0,63,0,47,3,224,61,7,208,0,63,0,47,3,224,61,7,208,0,63,0,47,255,255,255,255,208,127,255,255,47,255,255,255,255,208,127,255,255,5,85,111,213,85,64,127,255,255,0,0,47,128,0,0,0,63,0,10,170,191,234,170,64,0,63,0,15,255,255,255,255,128,0,63,0,15,255,255,255,255,128,0,63,0,0,0,47,128,0,0,0,63,0,0,0,47,128,0,0,0,63,110,170,170,191,234,170,164,0,63,254,255,255,255,255,255,244,27,255,255,255,255,255,255,255,244,255,255,228,0,126,0,3,240,0,191,255,0,0,63,0,11,224,0,126,127,0,0,63,64,15,192,0,16,63,0,106,191,170,175,234,160,0,63,0,191,255,255,255,255,240,0,63,0,191,255,255,255,255,240,0,63,0,0,0,47,128,0,0,0,63,0,0,0,47,128,0,0,0,63,0,42,170,191,234,170,128,0,63,0,63,255,255,255,255,192,0,63,0,63,255,255,255,255,192,0,63,0,0,0,47,128,0,0,0,127,0,0,0,47,128,0,0,47,255,0,0,0,47,128,0,0,31,254,0,0,0,47,128,0,0,15,228,0,0,0,47,128,0,0,0,0,0,0,0,0,0,0,0, + // 0x64ca 擊 + 202,100,34,35,59,37,2,253,0,3,208,0,0,0,0,0,0,0,3,224,0,3,255,255,128,0,191,255,255,255,67,255,255,128,0,191,255,255,255,67,245,111,129,0,0,3,224,0,7,224,31,131,128,31,255,255,252,15,208,31,131,192,31,87,229,188,47,192,15,255,192,31,87,229,124,191,64,11,255,128,31,255,255,252,29,0,1,85,0,31,3,224,60,63,255,255,252,0,31,255,255,252,63,255,255,248,0,5,87,229,84,7,229,87,240,0,255,255,255,255,67,244,15,208,0,255,255,255,255,64,254,127,128,0,0,3,224,104,0,127,254,0,0,31,3,224,188,1,191,253,0,0,31,3,224,188,191,255,255,229,0,31,255,255,252,63,228,47,255,208,15,255,255,252,20,0,2,255,128,0,0,0,5,90,191,244,6,0,0,255,255,255,255,255,248,0,0,0,255,255,255,250,84,0,0,0,0,0,0,3,240,0,0,0,0,7,255,255,255,255,255,255,248,0,7,255,255,255,255,255,255,248,0,0,0,0,7,244,0,0,0,0,0,0,0,3,240,0,0,0,0,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,21,85,85,87,245,85,85,85,64,0,0,0,3,240,0,0,0,0,0,0,0,3,240,0,0,0,0,0,0,26,175,240,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,15,255,128,0,0,0,0, + // 0x64cb 擋 + 203,100,34,35,59,37,1,253,0,63,0,0,64,47,128,16,0,0,63,0,15,192,47,128,127,0,0,63,0,11,240,47,128,191,0,0,63,0,3,244,47,128,252,0,0,63,0,2,252,47,130,248,0,0,63,0,0,244,47,130,240,0,0,63,0,191,255,255,255,255,240,0,63,0,191,255,255,255,255,240,127,255,255,191,170,170,170,175,240,127,255,255,190,0,0,0,7,240,127,255,255,190,0,0,0,7,240,0,63,0,190,255,255,255,255,240,0,63,0,21,255,255,255,249,80,0,63,0,0,253,85,87,248,0,0,63,0,0,252,0,2,248,0,0,63,0,0,252,0,2,248,0,0,63,25,0,253,85,86,248,0,0,63,254,0,255,255,255,248,0,1,191,255,0,255,255,255,248,0,191,255,253,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,127,255,0,31,255,255,255,255,192,36,63,0,31,255,255,255,255,192,0,63,0,31,234,191,170,191,192,0,63,0,31,128,47,64,47,192,0,63,0,31,128,47,64,47,192,0,63,0,31,255,255,255,255,192,0,63,0,31,255,255,255,255,192,0,63,0,31,213,127,149,127,192,0,63,0,31,128,47,64,47,192,0,63,0,31,128,47,64,47,192,0,127,0,31,255,255,255,255,192,47,255,0,31,255,255,255,255,192,31,254,0,31,234,170,170,191,192,15,228,0,31,128,0,0,47,128, + // 0x64e0 擠 + 224,100,35,36,68,37,1,252,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,63,2,255,255,255,255,255,240,0,63,3,255,255,255,255,255,240,0,63,3,255,255,255,255,255,240,0,63,0,0,3,128,61,0,0,0,127,0,0,3,208,188,1,64,127,255,252,0,3,240,248,31,208,127,255,253,255,255,241,255,255,208,127,255,253,255,255,171,159,255,0,0,63,0,31,31,47,15,79,64,0,63,0,46,31,47,15,75,128,0,63,0,62,31,47,15,71,192,0,63,0,124,47,47,15,71,224,0,63,0,252,62,47,47,253,244,0,63,111,243,254,47,63,248,244,0,63,254,210,248,47,20,0,16,6,255,253,69,64,0,0,21,0,191,255,228,15,208,0,0,126,0,191,255,0,15,208,0,0,126,0,127,191,0,15,255,255,255,254,0,36,63,0,15,255,255,255,254,0,0,63,0,15,250,170,170,254,0,0,63,0,15,208,0,0,126,0,0,63,0,15,208,0,0,126,0,0,63,0,15,250,170,170,254,0,0,63,0,15,255,255,255,254,0,0,63,0,31,255,255,255,254,0,0,63,0,63,128,0,0,126,0,0,63,0,127,64,0,0,126,0,0,127,0,255,0,0,0,126,0,63,255,3,253,0,0,0,126,0,47,253,3,248,0,0,0,126,0,31,228,0,160,0,0,0,126,0,0,0,0,0,0,0,0,0,0, + // 0x6536 收 + 54,101,35,36,68,37,1,252,0,0,10,144,1,228,0,0,0,0,0,15,208,2,252,0,0,0,0,0,15,208,3,252,0,0,0,0,0,15,208,3,248,0,0,0,1,80,15,208,7,240,0,0,0,7,240,15,208,11,240,0,0,0,7,240,15,208,15,224,0,0,0,7,240,15,208,31,255,255,255,248,7,240,15,208,63,255,255,255,248,7,240,15,208,63,255,255,255,248,7,240,15,208,191,213,85,127,144,7,240,15,208,255,192,0,127,0,7,240,15,210,255,192,0,191,0,7,240,15,215,255,208,0,254,0,7,240,15,239,255,240,0,253,0,7,240,15,255,231,240,1,252,0,7,240,15,239,195,244,3,252,0,7,240,15,215,66,252,3,244,0,7,240,15,208,1,252,11,240,0,7,240,15,208,0,254,15,224,0,7,240,15,208,0,191,47,208,0,7,240,15,208,0,63,191,192,0,7,246,255,208,0,47,255,64,0,11,255,255,208,0,15,254,0,0,191,255,255,208,0,11,252,0,0,127,255,79,208,0,15,252,0,0,63,144,15,208,0,63,255,0,0,20,0,15,208,0,191,255,128,0,0,0,15,208,3,255,127,224,0,0,0,15,208,31,252,15,252,0,0,0,15,208,191,240,7,255,64,0,0,15,235,255,192,1,255,244,0,0,15,223,254,0,0,127,248,0,0,15,215,240,0,0,11,224,0,0,15,210,64,0,0,1,192,0,0,0,0,0,0,0,0,0, + // 0x653e 放 + 62,101,35,36,68,37,1,252,0,3,244,0,0,58,0,0,0,0,3,244,0,0,63,64,0,0,0,3,244,0,0,127,0,0,0,0,3,244,0,0,191,0,0,0,0,3,244,0,0,255,0,0,0,0,3,244,0,0,254,0,0,0,127,255,255,255,193,253,0,0,0,127,255,255,255,194,255,255,255,248,127,255,255,255,195,255,255,255,248,0,127,0,0,3,255,255,255,248,0,63,0,0,11,244,0,191,0,0,63,0,0,15,244,0,254,0,0,63,0,0,31,248,0,253,0,0,63,0,0,63,252,0,252,0,0,63,255,254,127,252,1,252,0,0,63,255,254,255,253,2,252,0,0,63,255,255,254,190,3,248,0,0,127,0,254,252,127,7,244,0,0,127,0,253,40,63,75,240,0,0,127,0,253,0,63,143,224,0,0,127,0,253,0,31,223,208,0,0,127,0,253,0,15,255,192,0,0,190,0,253,0,11,255,64,0,0,254,0,253,0,7,255,0,0,0,253,0,252,0,3,254,0,0,0,252,0,252,0,3,254,0,0,2,252,0,252,0,15,255,64,0,3,248,0,252,0,47,255,192,0,7,244,0,252,0,191,239,240,0,15,240,1,252,2,255,15,252,0,31,224,2,252,31,252,3,255,64,63,192,3,248,191,240,0,255,224,255,67,255,251,255,192,0,127,244,126,1,255,241,254,0,0,15,224,12,1,255,128,240,0,0,1,192,0,0,0,0,0,0,0,0,0, + // 0x6557 敗 + 87,101,35,35,59,37,1,253,0,0,0,0,0,126,0,0,0,7,255,255,253,0,191,0,0,0,11,255,255,254,0,255,0,0,0,11,255,255,254,0,254,0,0,0,11,224,0,254,1,253,0,0,0,11,224,0,254,2,252,0,0,0,11,224,0,254,3,252,0,0,0,11,224,0,254,3,255,255,255,248,11,250,170,254,11,255,255,255,248,11,255,255,254,15,255,255,255,248,11,255,255,254,31,245,85,255,80,11,224,0,254,47,240,0,253,0,11,224,0,254,127,244,1,253,0,11,224,0,254,255,248,2,252,0,11,224,0,255,255,252,2,252,0,11,250,170,255,254,252,3,248,0,11,255,255,255,248,253,3,244,0,11,255,255,254,240,254,11,240,0,11,224,0,254,0,127,15,240,0,11,224,0,254,0,63,95,208,0,11,224,0,254,0,63,239,192,0,11,224,0,254,0,31,255,128,0,11,255,255,254,0,15,255,64,0,11,255,255,254,0,7,255,0,0,11,255,255,254,0,3,253,0,0,0,0,0,64,0,11,254,0,0,0,190,7,208,0,31,255,64,0,0,254,11,240,0,127,255,208,0,2,252,3,252,1,255,175,244,0,3,248,1,253,11,254,11,253,0,15,240,0,191,127,248,3,255,128,31,224,0,63,255,240,0,255,244,127,192,0,38,255,128,0,63,244,63,64,0,0,252,0,0,11,208,9,0,0,0,96,0,0,1,128, + // 0x6574 整 + 116,101,34,34,50,37,2,254,0,2,240,0,0,41,0,0,0,0,3,240,0,0,63,64,0,0,85,87,245,85,64,127,0,0,0,255,255,255,255,192,254,0,0,0,255,255,255,255,193,255,170,170,128,0,3,240,0,3,255,255,255,192,63,255,255,255,75,255,255,255,192,63,255,255,255,111,240,3,244,0,63,3,244,47,255,252,3,240,0,63,3,240,31,255,189,11,224,0,63,3,240,31,108,63,31,192,0,63,255,255,255,68,31,255,128,0,63,255,255,255,64,15,255,0,0,0,47,254,0,0,7,253,0,0,0,191,255,208,0,31,255,64,0,2,255,255,253,0,191,255,224,0,31,243,241,255,75,255,95,254,0,255,195,240,46,191,252,3,255,208,190,3,240,4,127,208,0,191,192,52,3,240,0,45,0,0,11,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,10,170,170,175,254,170,170,168,0,0,0,0,3,240,0,0,0,0,0,31,192,3,240,0,0,0,0,0,31,192,3,255,255,255,64,0,0,31,192,3,255,255,255,64,0,0,31,192,3,250,170,170,0,0,0,31,192,3,240,0,0,0,0,0,31,192,3,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x6578 數 + 120,101,35,36,68,37,1,252,0,0,63,0,0,3,160,0,0,0,0,63,0,0,3,240,0,0,3,255,255,255,240,7,240,0,0,3,255,255,255,240,7,240,0,0,3,245,127,87,240,11,224,0,0,3,240,63,3,240,15,224,0,0,127,255,255,255,255,143,208,0,0,127,255,255,255,255,143,255,255,244,107,240,127,3,250,95,255,255,244,3,240,63,3,240,63,255,255,244,3,245,127,87,240,63,128,63,64,3,255,255,255,240,127,128,63,0,3,255,255,255,240,255,128,63,0,0,0,63,0,0,255,192,127,0,15,255,255,255,254,255,192,190,0,15,255,255,255,255,255,208,189,0,15,192,127,1,255,255,224,253,0,15,192,63,0,255,247,240,252,0,15,192,127,1,254,211,241,252,0,15,255,255,255,252,67,246,248,0,15,255,255,255,252,2,251,244,0,0,3,244,0,0,1,255,240,0,0,7,240,0,0,0,255,224,0,127,255,255,255,255,128,191,208,0,127,255,255,255,255,128,127,192,0,42,191,234,175,128,0,63,192,0,0,191,0,47,64,0,255,208,0,0,255,64,63,0,2,255,240,0,3,255,249,253,0,7,255,248,0,1,183,255,252,0,31,242,253,0,0,0,191,253,0,127,192,255,64,0,27,255,255,130,255,0,127,224,31,255,253,63,251,253,0,31,244,15,255,128,7,195,240,0,7,208,11,144,0,0,1,128,0,1,128,0,0,0,0,0,0,0,0,0, + // 0x6599 料 + 153,101,35,35,59,37,1,253,0,6,160,0,0,0,3,240,0,0,7,224,0,0,0,3,240,0,4,7,224,16,0,0,3,240,0,62,7,224,126,3,192,3,240,0,47,7,224,189,15,244,3,240,0,31,7,224,252,7,254,3,240,0,15,135,224,248,0,255,131,240,0,15,199,225,244,0,47,195,240,0,11,199,226,240,0,11,131,240,0,11,199,227,224,0,2,3,240,0,7,215,227,208,0,0,3,240,0,2,71,226,192,0,0,3,240,0,0,11,240,0,20,0,3,240,0,63,255,255,253,62,0,3,240,0,63,255,255,253,191,208,3,240,0,63,255,255,253,47,248,3,240,0,0,47,240,0,7,254,3,240,0,0,63,248,0,0,188,3,240,0,0,127,253,0,0,40,3,240,0,0,255,255,0,0,0,3,240,0,1,255,255,192,0,0,3,240,80,2,251,235,224,0,0,7,255,244,3,231,227,248,0,22,255,255,248,11,215,225,252,107,255,255,255,244,31,199,224,246,255,255,255,244,0,63,135,224,97,255,254,151,240,0,191,7,224,0,249,64,3,240,0,190,7,224,0,0,0,3,240,0,60,7,224,0,0,0,3,240,0,36,7,224,0,0,0,3,240,0,0,7,224,0,0,0,3,240,0,0,7,224,0,0,0,3,240,0,0,7,224,0,0,0,3,240,0,0,7,224,0,0,0,3,240,0,0,7,224,0,0,0,3,240,0, + // 0x659c 斜 + 156,101,35,35,59,37,1,253,0,1,254,0,0,0,0,252,0,0,3,255,128,0,0,0,252,0,0,7,255,224,0,0,0,252,0,0,15,255,252,0,60,0,252,0,0,31,211,255,0,255,0,252,0,0,63,192,255,192,127,192,252,0,0,255,0,63,224,31,240,252,0,2,253,0,31,244,7,253,252,0,11,248,0,7,224,1,253,252,0,47,240,0,2,128,0,160,252,0,191,255,255,255,0,0,0,252,0,255,255,255,255,0,0,0,252,0,61,255,255,255,0,208,0,252,0,0,0,190,0,3,248,0,252,0,0,0,190,0,3,255,0,252,0,0,0,190,0,0,255,192,252,0,0,0,190,0,0,47,240,252,0,63,255,255,255,240,11,244,252,0,63,255,255,255,240,2,208,252,0,63,255,255,255,240,0,0,252,0,0,0,190,0,0,0,0,252,16,0,0,190,0,0,0,1,255,244,2,224,190,47,0,1,111,255,248,3,240,190,47,65,191,255,255,248,7,240,190,31,207,255,255,253,0,11,224,190,15,219,255,229,252,0,15,192,190,7,247,228,0,252,0,31,192,190,3,240,0,0,252,0,63,64,190,2,244,0,0,252,0,191,0,190,1,244,0,0,252,0,61,0,190,0,0,0,0,252,0,4,0,190,0,0,0,0,252,0,0,127,253,0,0,0,0,252,0,0,63,252,0,0,0,0,252,0,0,47,224,0,0,0,0,252,0, + // 0x65b0 新 + 176,101,35,36,68,37,1,252,0,0,168,0,0,0,0,1,0,0,0,252,0,0,0,0,111,64,0,0,252,0,0,0,27,255,208,0,0,252,0,2,70,255,255,208,47,255,255,255,227,255,255,244,0,47,255,255,255,227,255,249,0,0,47,255,255,255,227,249,0,0,0,1,244,0,189,3,244,0,0,0,1,248,0,253,3,244,0,0,0,0,252,1,252,3,244,0,0,0,0,189,2,244,3,244,0,0,0,0,125,2,240,3,244,0,0,0,63,255,255,255,243,248,0,0,0,63,255,255,255,243,255,255,255,244,63,255,255,255,243,255,255,255,244,0,0,252,0,3,255,255,255,244,0,0,252,0,3,244,2,248,0,0,0,252,0,3,244,2,248,0,0,0,252,0,3,244,2,248,0,63,255,255,255,227,244,2,248,0,63,255,255,255,227,244,2,248,0,63,255,255,255,227,240,2,248,0,0,3,252,0,3,240,2,248,0,0,15,255,64,7,240,2,248,0,0,47,255,224,11,224,2,248,0,0,127,255,248,15,224,2,248,0,0,254,253,255,15,208,2,248,0,3,248,252,127,95,192,2,248,0,31,240,252,30,63,128,2,248,0,127,192,252,4,127,64,2,248,0,127,64,252,0,255,0,2,248,0,29,0,252,2,253,0,2,248,0,0,0,252,7,248,0,2,248,0,0,0,252,2,240,0,2,248,0,0,0,252,0,128,0,2,164,0,0,0,0,0,0,0,0,0,0, + // 0x65b7 斷 + 183,101,33,35,59,37,3,253,0,20,0,16,0,0,0,64,0,164,45,0,184,0,0,2,244,0,248,60,0,240,0,0,127,253,0,249,181,70,213,1,27,255,248,0,255,243,223,207,71,255,255,64,0,249,247,135,223,7,255,224,0,0,248,191,2,253,7,244,0,0,0,248,62,0,248,7,240,0,0,0,248,61,192,247,135,240,0,0,0,248,181,210,227,199,240,0,0,0,255,255,255,255,215,240,0,0,0,251,250,255,250,247,240,0,0,0,248,0,0,0,71,240,0,0,0,254,170,170,170,135,255,255,255,64,255,255,255,255,199,255,255,255,64,255,255,255,255,199,255,255,255,64,248,45,0,184,7,240,15,192,0,248,60,0,240,7,240,15,192,0,248,180,2,224,7,224,15,192,0,255,242,143,198,71,224,15,192,0,250,227,203,143,71,224,15,192,0,248,255,67,238,7,224,15,192,0,248,127,1,252,11,224,15,192,0,248,61,0,248,11,208,15,192,0,248,125,192,243,79,208,15,192,0,248,241,227,211,207,192,15,192,0,255,255,255,255,239,192,15,192,0,255,233,191,165,255,128,15,192,0,248,0,0,0,63,64,15,192,0,255,255,255,255,255,0,15,192,0,255,255,255,255,255,0,15,192,0,254,170,170,171,253,0,15,192,0,248,0,0,2,252,0,15,192,0,248,0,0,0,180,0,15,192,0,80,0,0,0,32,0,15,192,0, + // 0x65bc 於 + 188,101,35,36,68,37,1,252,0,3,244,0,0,7,244,0,0,0,3,244,0,0,11,252,0,0,0,3,244,0,0,15,253,0,0,0,3,244,0,0,31,254,0,0,0,3,244,0,0,63,191,0,0,0,3,244,0,0,127,47,128,0,127,255,255,255,64,254,31,208,0,127,255,255,255,65,253,15,240,0,127,255,255,255,67,252,7,248,0,0,191,0,0,11,240,2,253,0,0,127,0,0,31,224,0,255,0,0,191,0,0,127,192,0,191,192,0,191,0,0,255,64,0,63,240,0,191,0,3,254,0,0,15,248,0,191,255,254,248,0,0,3,240,0,191,255,252,224,31,64,0,224,0,191,255,252,64,63,224,0,0,0,254,1,252,0,31,252,0,0,0,253,1,252,0,3,255,0,0,0,253,1,252,0,0,191,192,0,0,253,1,252,0,0,47,192,0,0,252,2,248,0,0,11,0,0,0,252,2,248,0,0,0,0,0,1,252,2,248,0,0,0,0,0,2,248,2,248,1,64,0,0,0,3,248,2,248,7,244,0,0,0,3,244,2,248,15,255,0,0,0,7,240,3,248,11,255,224,0,0,11,240,3,244,0,191,253,0,0,15,208,3,244,0,11,255,128,0,47,192,3,244,0,1,255,244,0,63,192,11,240,0,0,47,253,0,191,71,255,240,0,0,7,255,0,62,3,255,208,0,0,0,252,0,12,3,255,64,0,0,0,36,0,0,0,0,0,0,0,0,0,0, + // 0x6607 昇 + 7,102,33,34,50,37,2,253,1,255,255,255,255,255,255,192,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,1,252,0,0,0,0,15,208,0,1,252,0,0,0,0,15,208,0,1,252,0,0,0,0,15,208,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,1,254,170,170,170,170,175,208,0,1,252,0,0,0,0,15,208,0,1,252,0,0,0,0,15,208,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,1,255,255,255,255,255,255,208,0,0,0,0,1,64,0,0,0,0,0,0,1,191,208,15,224,0,0,0,26,255,255,244,15,224,0,0,15,255,255,255,144,15,224,0,0,11,255,255,208,0,15,224,0,0,7,165,63,128,0,15,224,0,0,0,0,47,128,0,15,224,0,0,0,0,47,128,0,15,224,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,127,64,0,15,224,0,0,0,0,255,0,0,15,224,0,0,0,2,254,0,0,15,224,0,0,0,11,252,0,0,15,224,0,0,0,63,244,0,0,15,224,0,0,6,255,224,0,0,15,224,0,0,47,255,64,0,0,15,224,0,0,11,248,0,0,0,15,224,0,0,3,128,0,0,0,15,224,0,0, + // 0x660e 明 + 14,102,32,34,16,37,3,252,255,255,255,66,255,255,255,253,255,255,255,66,255,255,255,253,255,255,255,66,255,255,255,253,253,0,63,66,248,0,0,253,252,0,63,66,248,0,0,253,252,0,63,66,248,0,0,253,252,0,63,66,248,0,0,253,252,0,63,66,248,0,0,253,252,0,63,66,252,0,0,253,252,0,63,66,255,255,255,253,255,255,255,66,255,255,255,253,255,255,255,66,255,255,255,253,255,255,255,66,248,0,0,253,252,0,63,66,248,0,0,253,252,0,63,66,248,0,0,253,252,0,63,67,248,0,0,253,252,0,63,67,248,0,0,253,252,0,63,67,248,0,0,253,252,0,63,67,255,255,255,253,253,0,63,67,255,255,255,253,255,255,255,71,255,255,255,253,255,255,255,75,240,0,0,253,255,255,255,79,224,0,0,253,252,0,0,15,208,0,0,253,252,0,0,47,192,0,0,253,252,0,0,63,128,0,0,253,84,0,0,191,64,0,0,253,0,0,0,255,0,0,0,253,0,0,3,253,0,0,0,253,0,0,15,248,0,5,86,253,0,0,63,240,0,11,255,252,0,0,47,192,0,7,255,248,0,0,11,0,0,3,255,144,0,0,0,0,0,0,0,0, + // 0x662f 是 + 47,102,35,34,50,37,1,253,0,42,170,170,170,170,170,144,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,63,64,0,0,0,11,240,0,0,63,64,0,0,0,11,240,0,0,63,149,85,85,85,95,240,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,63,64,0,0,0,11,240,0,0,63,64,0,0,0,11,240,0,0,63,170,170,170,170,175,240,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,0,0,0,0,254,0,0,0,0,0,2,148,0,254,0,0,0,0,0,3,248,0,254,0,0,0,0,0,7,244,0,254,0,0,0,0,0,11,240,0,255,255,255,253,0,0,15,240,0,255,255,255,253,0,0,31,244,0,255,255,255,253,0,0,47,252,0,254,0,0,0,0,0,63,255,0,254,0,0,0,0,0,255,191,128,254,0,0,0,0,2,254,47,244,254,0,0,0,0,7,252,15,255,254,0,0,0,0,31,244,2,255,255,255,255,255,244,127,224,0,127,255,255,255,255,240,47,64,0,1,191,255,255,255,224,9,0,0,0,0,0,0,0,0, + // 0x6642 時 + 66,102,33,35,59,37,3,253,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,255,255,248,0,0,254,0,0,0,255,255,248,127,255,255,255,252,0,255,255,248,127,255,255,255,252,0,252,2,248,127,255,255,255,252,0,252,2,248,0,0,254,0,0,0,252,2,248,0,0,254,0,0,0,252,2,248,0,0,254,0,0,0,252,2,248,0,0,254,0,0,0,252,2,248,0,0,254,0,0,0,252,2,250,255,255,255,255,255,128,255,255,250,255,255,255,255,255,128,255,255,250,255,255,255,255,255,128,255,255,248,0,0,0,63,64,0,252,2,248,0,0,0,63,64,0,252,2,248,0,0,0,63,64,0,252,2,248,0,0,0,63,64,0,252,2,250,255,255,255,255,255,0,252,2,250,255,255,255,255,255,0,252,2,250,255,255,255,255,255,0,252,2,248,0,0,0,63,64,0,252,2,248,11,192,0,63,64,0,255,255,248,15,240,0,63,64,0,255,255,248,7,252,0,63,64,0,255,255,248,2,254,0,63,64,0,252,0,0,0,255,0,63,64,0,252,0,0,0,127,128,63,64,0,252,0,0,0,62,0,63,64,0,252,0,0,0,20,0,63,64,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,255,254,0,0,0,0,0,0,0,191,228,0,0, + // 0x66ab 暫 + 171,102,33,35,59,37,2,253,0,3,240,0,0,0,0,96,0,0,3,240,0,0,0,27,252,0,191,255,255,255,203,175,255,254,0,191,255,255,255,203,255,255,144,0,0,3,244,0,11,254,144,0,0,0,3,240,0,11,208,0,0,0,47,255,255,255,11,208,0,0,0,47,171,250,191,11,208,0,0,0,47,3,240,47,15,250,170,170,128,47,255,255,255,15,255,255,255,192,47,171,250,191,15,255,255,255,192,47,3,240,47,15,192,31,192,0,47,171,250,191,15,192,31,192,0,47,255,255,255,47,128,31,192,0,0,3,240,0,63,64,31,192,0,255,255,255,255,255,0,31,192,0,255,255,255,255,253,0,31,192,0,0,3,240,3,252,0,31,192,0,0,3,240,1,240,0,31,192,0,0,1,80,0,64,0,6,64,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,234,170,170,170,255,0,0,0,63,64,0,0,0,191,0,0,0,63,64,0,0,0,191,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,149,85,85,85,191,0,0,0,63,64,0,0,0,191,0,0,0,63,64,0,0,0,191,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,234,170,170,170,255,0,0,0,63,64,0,0,0,127,0,0, + // 0x66f4 更 + 244,102,34,33,41,37,2,253,127,255,255,255,255,255,255,255,128,127,255,255,255,255,255,255,255,128,127,255,255,255,255,255,255,255,128,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,252,0,3,248,0,3,240,0,0,252,0,3,248,0,3,240,0,0,252,0,3,248,0,3,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,254,170,171,254,170,171,240,0,0,252,0,3,248,0,3,240,0,0,252,0,3,248,0,3,240,0,0,252,0,3,248,0,3,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,11,0,15,240,0,0,0,0,0,63,192,31,208,0,0,0,0,0,31,240,63,192,0,0,0,0,0,11,253,191,128,0,0,0,0,0,2,255,255,0,0,0,0,0,0,0,191,253,0,0,0,0,0,0,1,255,255,228,0,0,0,0,0,111,255,255,255,249,84,0,0,175,255,253,31,255,255,255,255,224,191,255,144,0,191,255,255,255,192,63,244,0,0,0,107,255,255,128,9,0,0,0,0,0,0,21,0, + // 0x6700 最 + 0,103,33,34,50,37,2,253,0,127,255,255,255,255,255,128,0,0,127,255,255,255,255,255,128,0,0,127,85,85,85,85,127,128,0,0,127,0,0,0,0,63,128,0,0,127,0,0,0,0,63,128,0,0,127,255,255,255,255,255,128,0,0,127,255,255,255,255,255,128,0,0,127,0,0,0,0,63,128,0,0,127,0,0,0,0,63,128,0,0,127,255,255,255,255,255,128,0,0,127,255,255,255,255,255,128,0,0,21,85,85,85,85,85,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,2,244,0,190,0,0,0,0,0,2,244,0,190,0,0,0,0,0,2,249,85,254,42,170,170,164,0,2,255,255,254,127,255,255,253,0,2,255,255,254,127,255,255,252,0,2,244,0,190,7,192,3,248,0,2,244,0,190,11,224,7,240,0,2,255,255,254,3,244,15,224,0,2,255,255,254,2,252,63,192,0,2,249,85,254,0,255,191,64,0,2,244,0,190,0,63,254,0,0,2,244,0,254,0,47,252,0,0,3,255,255,254,0,63,253,0,0,255,255,255,254,2,255,255,192,0,255,255,255,254,111,253,127,253,0,254,148,0,191,255,224,11,255,192,0,0,0,190,127,64,1,191,64,0,0,0,189,32,0,0,6,0, + // 0x6709 有 + 9,103,33,36,68,37,2,252,0,0,0,228,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,63,128,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,255,255,255,255,255,64,0,0,15,255,255,255,255,255,64,0,0,63,255,255,255,255,255,64,0,0,255,248,0,0,0,63,64,0,2,255,248,0,0,0,63,64,0,11,255,248,0,0,0,63,64,0,63,243,255,255,255,255,255,64,0,255,211,255,255,255,255,255,64,0,255,67,255,255,255,255,255,64,0,60,3,248,0,0,0,63,64,0,16,3,248,0,0,0,63,64,0,0,3,248,0,0,0,63,64,0,0,3,248,0,0,0,63,64,0,0,3,255,255,255,255,255,64,0,0,3,255,255,255,255,255,64,0,0,3,255,255,255,255,255,64,0,0,3,248,0,0,0,63,64,0,0,3,248,0,0,0,63,64,0,0,3,248,0,0,0,63,64,0,0,3,248,0,0,80,127,64,0,0,3,248,0,1,255,255,64,0,0,3,248,0,0,255,255,0,0,0,3,248,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0, + // 0x677f 板 + 127,103,35,36,68,37,1,252,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,1,255,255,255,255,240,0,15,208,1,255,255,255,255,240,0,15,208,1,255,255,255,255,240,0,15,208,1,252,0,0,0,0,0,15,208,1,252,0,0,0,0,0,15,208,1,252,0,0,0,0,63,255,255,241,252,0,0,0,0,63,255,255,241,252,0,0,0,0,63,255,255,241,252,0,0,0,0,0,31,224,1,252,0,0,0,0,0,47,208,1,255,255,255,255,208,0,63,208,1,255,255,255,255,208,0,63,240,1,255,255,255,255,192,0,127,248,1,255,240,0,47,192,0,255,253,1,255,240,0,63,128,0,255,255,1,254,248,0,63,64,1,255,255,194,253,252,0,127,0,3,255,223,226,248,253,0,254,0,7,223,211,242,248,191,0,253,0,15,207,210,227,248,63,66,252,0,31,143,208,195,244,63,199,244,0,63,79,208,3,240,15,223,240,0,191,15,208,7,240,11,255,208,0,189,15,208,11,240,3,255,192,0,60,15,208,15,224,2,255,64,0,16,15,208,15,208,2,255,64,0,0,15,208,47,192,15,255,208,0,0,15,208,63,128,63,255,248,0,0,15,208,191,65,255,199,255,0,0,15,208,255,15,255,1,255,224,0,15,210,252,47,248,0,127,244,0,15,208,184,15,208,0,11,224,0,11,208,32,2,0,0,1,192,0,0,0,0,0,0,0,0,0, + // 0x67f1 柱 + 241,103,35,36,68,37,1,252,0,7,240,0,0,52,0,0,0,0,7,240,0,0,254,0,0,0,0,7,240,0,1,255,192,0,0,0,7,240,0,0,127,244,0,0,0,7,240,0,0,15,253,0,0,0,7,240,0,0,2,255,0,0,0,7,240,0,0,0,191,0,0,0,7,240,0,0,0,125,0,0,63,255,255,253,255,255,255,255,240,63,255,255,253,255,255,255,255,240,63,255,255,253,255,255,255,255,240,21,95,245,80,0,3,248,0,0,0,15,240,0,0,3,248,0,0,0,31,240,0,0,3,248,0,0,0,47,240,0,0,3,248,0,0,0,63,252,0,0,3,248,0,0,0,127,254,0,0,3,248,0,0,0,191,255,64,0,3,248,0,0,0,255,255,208,0,3,248,0,0,2,251,251,240,191,255,255,255,224,3,247,243,252,191,255,255,255,224,11,215,240,252,191,255,255,255,224,15,199,240,176,0,3,248,0,0,47,135,240,16,0,3,248,0,0,127,7,240,0,0,3,248,0,0,190,7,240,0,0,3,248,0,0,60,7,240,0,0,3,248,0,0,40,7,240,0,0,3,248,0,0,0,7,240,0,0,3,248,0,0,0,7,240,0,0,3,248,0,0,0,7,240,0,0,3,248,0,0,0,7,240,31,255,255,255,255,248,0,7,240,31,255,255,255,255,248,0,7,240,31,255,255,255,255,248,0,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6821 校 + 33,104,35,36,68,37,1,252,0,15,208,0,0,15,224,0,0,0,15,208,0,0,15,224,0,0,0,15,208,0,0,15,224,0,0,0,15,208,0,0,15,224,0,0,0,15,208,0,0,15,224,0,0,0,15,208,0,0,15,224,0,0,0,15,208,15,255,255,255,255,240,0,15,208,15,255,255,255,255,240,63,255,255,234,170,170,170,170,160,63,255,255,224,0,0,0,64,0,63,255,255,224,15,128,7,224,0,0,31,208,0,47,192,7,248,0,0,47,208,0,63,128,2,253,0,0,63,208,0,255,0,0,255,64,0,63,240,2,253,0,0,63,192,0,127,248,7,248,0,0,31,224,0,255,253,31,241,0,6,91,240,0,255,255,47,239,192,11,243,244,2,255,239,139,15,192,15,225,128,3,239,223,192,11,224,31,208,0,7,223,215,240,7,240,47,192,0,15,207,211,208,3,252,127,128,0,31,143,209,128,1,253,255,0,0,63,79,208,0,0,255,253,0,0,191,15,208,0,0,63,252,0,0,125,15,208,0,0,47,244,0,0,60,15,208,0,0,47,248,0,0,16,15,208,0,0,191,254,0,0,0,15,208,0,3,255,255,192,0,0,15,208,0,31,252,127,244,0,0,15,208,0,255,240,31,254,0,0,15,208,27,255,128,3,255,224,0,15,208,127,253,0,0,255,244,0,15,208,63,208,0,0,31,208,0,15,208,13,0,0,0,2,128,0,0,0,0,0,0,0,0,0, + // 0x683c 格 + 60,104,35,35,59,37,1,253,0,15,208,0,0,228,0,0,0,0,15,208,0,1,253,0,0,0,0,15,208,0,2,252,0,0,0,0,15,208,0,7,244,0,0,0,0,15,208,0,15,255,255,253,0,0,15,208,0,31,255,255,255,0,0,15,208,0,63,255,255,253,0,0,15,208,0,255,64,2,252,0,63,255,255,242,255,192,3,248,0,63,255,255,251,255,208,11,240,0,63,255,255,255,251,240,31,208,0,0,31,224,127,195,252,63,128,0,0,31,224,31,1,254,255,0,0,0,63,244,5,0,127,253,0,0,0,63,252,0,0,47,248,0,0,0,127,255,0,0,127,252,0,0,0,191,255,128,2,255,255,128,0,0,255,223,208,15,254,191,244,0,1,255,215,240,191,244,31,255,64,3,255,211,219,255,192,3,255,248,7,223,209,255,254,0,0,127,244,15,207,208,191,255,255,255,255,224,31,143,208,62,255,255,255,255,64,63,79,208,0,255,255,255,254,0,191,15,208,0,252,0,0,190,0,125,15,208,0,252,0,0,190,0,56,15,208,0,252,0,0,190,0,16,15,208,0,252,0,0,190,0,0,15,208,0,252,0,0,190,0,0,15,208,0,252,0,0,190,0,0,15,208,0,255,255,255,254,0,0,15,208,0,255,255,255,254,0,0,15,208,0,255,255,255,254,0,0,15,208,0,252,0,0,190,0,0,10,144,0,168,0,0,105,0, + // 0x689d 條 + 157,104,35,36,68,37,1,252,0,2,64,0,0,228,0,0,0,0,3,244,0,2,252,0,0,0,0,7,240,0,3,244,0,0,0,0,15,224,0,11,240,0,0,0,0,15,213,64,31,255,255,255,240,0,47,203,208,63,255,255,255,240,0,63,75,208,191,255,255,255,240,0,127,11,210,255,64,2,252,0,0,254,11,219,255,192,7,244,0,1,254,11,255,251,240,15,240,0,3,254,11,223,195,252,63,192,0,11,254,11,210,0,255,255,64,0,15,254,11,208,0,63,253,0,0,63,254,11,208,0,63,253,0,0,191,254,11,208,2,255,255,208,0,255,190,11,208,111,254,191,254,64,189,190,11,223,255,244,11,255,248,56,190,11,219,255,65,80,191,240,32,190,11,211,224,7,240,6,208,0,190,11,208,0,7,240,0,0,0,190,11,208,0,7,240,0,0,0,190,11,215,255,255,255,255,240,0,190,11,215,255,255,255,255,240,0,190,11,215,255,255,255,255,240,0,190,11,208,0,63,253,0,0,0,190,11,208,0,255,255,0,0,0,190,11,208,2,255,255,192,0,0,190,11,208,15,251,251,240,0,0,190,11,192,63,215,243,252,0,0,190,0,1,255,71,240,255,64,0,190,0,31,253,7,240,63,224,0,190,0,127,244,7,240,31,248,0,190,0,47,192,7,240,3,240,0,190,0,9,0,7,240,0,128,0,190,0,0,0,7,240,0,0,0,0,0,0,0,0,0,0,0, + // 0x68c4 棄 + 196,104,33,35,59,37,2,253,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,170,170,191,250,170,191,234,170,128,0,0,63,192,0,127,224,0,0,0,0,255,0,0,11,254,0,0,15,255,255,255,255,255,255,208,0,15,255,255,255,255,255,255,252,0,15,255,255,255,170,165,86,253,0,0,0,0,1,80,0,0,116,0,0,31,192,3,240,0,253,0,0,0,31,192,3,240,0,253,0,0,106,175,234,171,250,170,255,170,128,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,0,31,192,3,240,0,253,0,0,0,31,192,3,240,0,253,0,0,0,31,234,171,250,170,253,0,0,0,31,255,255,255,255,253,0,0,0,31,255,255,255,255,253,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,128,0,0,11,255,255,248,0,0,0,0,0,127,215,242,255,64,0,0,0,7,255,71,240,127,248,0,0,1,191,248,7,240,11,255,208,0,111,255,192,7,240,0,255,255,128,255,249,0,7,240,0,11,255,192,63,128,0,7,240,0,0,191,0,20,0,0,7,240,0,0,1,0, + // 0x69fd 槽 + 253,105,35,36,68,37,1,252,0,31,192,0,3,240,63,0,0,0,31,192,0,3,240,63,0,0,0,31,192,0,3,240,63,0,0,0,31,192,191,255,255,255,255,248,0,31,192,191,255,255,255,255,248,0,31,192,106,171,250,255,170,164,0,31,192,0,3,240,63,0,0,0,31,192,0,3,240,63,0,0,63,255,255,159,255,255,255,255,208,63,255,255,159,255,255,255,255,208,63,255,255,159,150,245,126,91,208,0,63,192,31,66,240,61,7,208,0,63,192,31,130,240,126,11,208,0,63,192,31,255,255,255,255,208,0,127,208,31,255,255,255,255,208,0,255,240,31,66,240,61,7,208,0,255,248,31,66,240,61,7,208,1,255,252,31,150,245,126,91,208,3,255,255,31,255,255,255,255,208,3,255,223,95,255,255,255,255,208,11,223,207,192,0,0,0,0,0,15,159,199,2,170,170,170,170,0,31,95,193,3,255,255,255,255,0,63,31,192,3,255,255,255,255,0,190,31,192,3,244,0,0,127,0,188,31,192,3,244,0,0,127,0,60,31,192,3,249,85,85,191,0,32,31,192,3,255,255,255,255,0,0,31,192,3,255,255,255,255,0,0,31,192,3,244,0,0,127,0,0,31,192,3,244,0,0,127,0,0,31,192,3,250,170,170,191,0,0,31,192,3,255,255,255,255,0,0,31,192,3,255,255,255,255,0,0,31,192,3,244,0,0,127,0,0,0,0,0,0,0,0,0,0, + // 0x6a59 橙 + 89,106,35,35,59,37,1,253,0,15,192,0,0,0,20,0,0,0,15,192,10,170,208,252,20,0,0,15,192,31,255,244,252,125,0,0,15,192,31,255,240,191,254,0,0,15,192,0,7,240,63,244,0,0,15,192,4,11,224,63,192,128,0,15,192,47,79,192,31,194,240,0,15,192,63,255,128,15,219,244,63,255,255,203,255,64,11,255,192,63,255,255,194,255,0,3,253,0,63,255,255,193,255,255,255,253,0,0,47,208,7,255,255,255,255,64,0,47,192,15,246,170,170,63,224,0,63,192,127,192,0,0,15,252,0,127,225,255,64,0,0,3,240,0,191,244,254,170,170,170,169,144,0,255,252,34,255,255,255,253,0,0,255,255,2,255,255,255,253,0,2,255,239,130,248,0,0,253,0,3,255,207,210,248,0,0,253,0,7,223,199,194,248,0,0,253,0,15,207,195,66,248,0,0,253,0,31,143,192,2,255,255,255,253,0,63,15,192,2,255,255,255,253,0,191,15,192,1,170,170,171,169,0,189,15,192,0,26,0,7,224,0,60,15,192,0,63,0,11,240,0,16,15,192,0,47,128,15,208,0,0,15,192,0,31,192,31,192,0,0,15,192,0,15,192,47,64,0,0,15,192,0,15,64,47,0,0,0,15,192,255,255,255,255,255,248,0,15,192,255,255,255,255,255,248,0,15,192,255,255,255,255,255,244,0,15,192,0,0,0,0,0,0, + // 0x6a5f 機 + 95,106,35,35,59,37,1,253,0,47,64,1,0,63,0,64,0,0,47,64,3,240,63,1,244,0,0,47,64,7,224,63,3,240,0,0,47,64,11,192,63,3,224,0,0,47,64,15,69,63,11,194,0,0,47,64,255,15,191,127,75,208,0,47,65,253,47,127,255,15,192,0,47,64,254,62,63,127,111,0,63,255,255,47,252,63,15,254,0,63,255,255,11,244,63,3,252,0,63,255,255,3,240,47,66,244,64,0,63,128,11,223,47,67,227,208,0,127,64,31,79,111,75,194,240,0,191,192,63,31,223,175,255,240,0,255,225,255,255,223,255,255,244,0,255,240,255,255,239,255,229,184,1,255,248,165,67,223,193,224,80,2,255,189,0,0,15,195,252,0,3,255,127,0,0,15,192,191,0,7,255,95,234,170,175,234,191,160,15,239,78,255,255,255,255,255,240,15,111,68,255,255,255,255,255,240,47,47,64,11,208,7,224,32,0,63,47,64,15,208,3,240,127,0,189,47,64,15,244,3,240,254,0,124,47,64,15,254,2,246,252,0,52,47,64,31,255,193,255,244,0,16,47,64,47,175,240,255,224,0,0,47,64,63,7,208,255,128,80,0,47,64,191,1,66,255,0,184,0,47,64,253,0,15,255,128,188,0,47,67,252,0,191,239,224,248,0,47,79,240,11,255,11,255,244,0,47,67,208,7,244,2,255,240,0,47,65,0,2,64,0,111,128, + // 0x6aa2 檢 + 162,106,35,36,68,37,1,252,0,15,192,0,0,47,192,0,0,0,15,192,0,0,127,240,0,0,0,15,192,0,0,255,248,0,0,0,15,192,0,3,254,254,0,0,0,15,192,0,11,244,191,128,0,0,15,192,0,47,224,63,224,0,0,15,192,0,191,192,15,252,0,0,15,192,3,255,0,3,255,64,63,255,255,223,252,0,0,255,224,63,255,255,255,255,255,255,255,252,63,255,255,255,159,255,255,215,240,0,47,192,61,10,170,170,128,224,0,63,192,16,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,240,15,255,248,191,255,192,0,191,244,15,255,248,191,255,192,0,255,252,15,149,248,189,91,192,0,255,255,15,128,248,188,7,192,2,255,239,79,128,248,188,7,192,3,255,207,207,128,248,188,7,192,7,223,203,207,149,248,189,91,192,15,207,195,79,255,248,191,255,192,31,143,193,15,255,248,191,255,192,63,15,192,0,16,0,1,0,0,127,15,192,0,63,0,3,240,0,125,15,192,0,127,0,7,224,0,60,15,192,0,190,0,11,208,0,16,15,192,0,253,0,15,208,0,0,15,192,2,255,64,47,244,0,0,15,192,7,255,208,63,253,0,0,15,192,15,235,244,255,255,128,0,15,192,63,194,247,252,63,224,0,15,193,255,0,159,244,11,248,0,15,192,253,0,11,208,2,240,0,15,192,48,0,2,0,0,128,0,0,0,0,0,0,0,0,0, + // 0x6b62 止 + 98,107,33,33,41,37,2,255,0,0,0,0,190,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,42,0,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,255,85,85,84,0,0,63,64,0,255,255,255,253,0,0,63,64,0,255,255,255,253,0,0,63,64,0,255,255,255,253,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,85,191,149,85,255,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x6b63 正 + 99,107,33,32,32,37,2,254,21,85,85,85,85,85,85,85,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,21,0,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,254,85,85,80,0,0,63,64,1,255,255,255,244,0,0,63,64,1,255,255,255,244,0,0,63,64,1,255,255,255,244,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,0,63,64,1,253,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,85,85,85,85,85,85,85,85,64, + // 0x6b65 步 + 101,107,33,35,59,37,2,253,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,5,0,3,244,0,0,0,0,0,47,192,3,244,0,0,0,0,0,47,192,3,255,255,255,192,0,0,47,192,3,255,255,255,192,0,0,47,192,3,255,255,255,192,0,0,47,192,3,249,85,85,64,0,0,47,192,3,244,0,0,0,0,0,47,192,3,244,0,0,0,0,0,47,192,3,244,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,21,85,85,87,245,85,85,85,0,0,2,64,3,244,0,0,0,0,0,7,248,3,244,0,4,0,0,0,15,240,3,244,0,47,128,0,0,63,224,3,244,0,63,192,0,0,255,128,3,244,0,127,128,0,3,255,0,3,244,0,255,0,0,31,252,0,3,244,2,254,0,0,191,240,0,3,244,7,252,0,0,63,192,15,255,240,15,244,0,0,14,0,7,255,240,63,240,0,0,0,0,3,255,128,255,192,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,127,252,0,0,0,0,0,0,2,255,240,0,0,0,0,0,0,191,255,128,0,0,0,0,0,111,255,248,0,0,0,0,2,191,255,255,144,0,0,0,0,2,255,255,248,0,0,0,0,0,0,255,249,0,0,0,0,0,0,0,185,0,0,0,0,0,0,0, + // 0x6b78 歸 + 120,107,35,35,59,37,1,253,0,15,144,0,0,0,0,0,0,0,15,192,0,5,85,85,84,0,0,31,128,0,31,255,255,253,0,11,255,255,240,31,255,255,253,0,11,255,255,240,0,0,0,189,0,11,229,87,241,85,85,85,254,80,11,192,2,243,255,255,255,255,248,11,192,2,243,255,255,255,255,248,11,255,255,240,0,0,0,189,0,11,255,255,240,0,0,0,189,0,11,229,85,80,31,255,255,253,0,11,192,0,0,31,255,255,253,0,11,234,170,160,5,85,85,84,0,11,255,255,244,0,0,0,0,0,11,255,255,244,170,170,170,170,144,11,192,2,244,255,255,255,255,240,11,192,2,244,255,255,255,255,240,11,229,87,244,248,3,240,3,240,11,255,255,244,248,3,240,3,240,11,255,255,244,248,3,240,3,240,0,3,240,0,0,3,240,0,0,0,3,240,0,63,255,255,255,128,15,195,240,0,63,255,255,255,128,15,195,255,248,63,171,254,191,128,15,195,255,248,63,3,240,31,128,15,195,250,164,63,3,240,31,128,15,195,240,0,63,3,240,31,128,15,195,240,0,63,3,240,31,128,15,195,241,172,63,3,240,47,128,15,219,255,252,63,3,243,255,64,127,255,255,253,63,3,242,255,0,127,255,254,144,62,3,240,164,0,127,249,0,0,0,3,240,0,0,20,0,0,0,0,3,240,0,0,0,0,0,0,0,2,160,0,0, + // 0x6bbc 殼 + 188,107,34,36,68,37,2,252,0,7,224,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,3,255,255,224,0,255,255,255,255,67,255,255,224,0,255,255,255,255,67,255,255,224,0,170,171,250,170,3,240,11,224,0,0,7,240,0,3,240,11,224,0,0,7,240,0,3,240,11,224,0,63,255,255,252,3,240,11,225,0,63,255,255,252,7,240,11,225,224,21,85,85,84,11,224,11,226,240,0,0,0,0,15,208,11,226,240,255,255,255,255,127,192,7,255,224,255,255,255,255,255,64,3,255,208,253,85,85,127,190,0,0,170,0,252,0,0,47,24,0,0,0,0,252,0,0,47,0,0,0,0,0,254,255,255,239,47,255,255,254,0,2,255,255,192,47,255,255,254,0,0,0,0,0,47,255,255,253,0,0,0,0,0,2,224,1,252,0,2,170,170,144,3,240,3,248,0,3,255,255,208,3,248,7,244,0,3,255,255,208,1,252,15,240,0,3,240,11,208,0,255,47,208,0,3,240,11,208,0,127,191,128,0,3,240,11,208,0,47,255,0,0,7,240,11,209,64,15,252,0,0,11,224,11,255,192,47,253,0,0,15,208,47,255,192,255,255,128,0,47,192,127,254,11,255,191,244,0,127,128,63,145,255,248,31,255,128,255,0,20,11,255,208,3,255,208,60,0,0,3,253,0,0,127,128,0,0,0,1,208,0,0,7,0,0,0,0,0,0,0,0,0,0, + // 0x6bd4 比 + 212,107,34,35,59,37,2,253,0,106,0,0,6,144,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,124,0,0,191,0,0,15,224,3,255,0,0,191,85,85,15,224,47,255,64,0,191,255,254,15,226,255,248,0,0,191,255,254,15,255,255,128,0,0,191,255,254,15,255,248,0,0,0,191,0,0,15,255,128,0,0,0,191,0,0,15,244,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,7,128,0,191,0,0,15,224,0,11,240,0,191,0,27,143,224,0,11,224,0,191,27,255,143,224,0,11,224,0,255,255,255,207,240,0,15,208,175,255,255,254,75,240,0,31,192,255,255,254,64,7,255,255,255,192,255,254,64,0,3,255,255,255,64,190,64,0,0,1,255,255,254,0,0,0,0,0,0,5,85,64,0, + // 0x6c92 沒 + 146,108,33,35,59,37,2,253,1,0,0,0,164,0,0,0,0,7,208,0,1,253,0,0,0,0,15,253,0,1,252,0,0,0,0,15,255,128,2,252,0,0,0,0,1,255,240,3,255,255,255,253,0,0,47,224,3,255,255,255,252,0,0,3,192,7,255,255,255,252,0,0,0,0,15,240,0,1,252,0,0,0,0,15,224,0,1,252,0,0,0,0,47,208,0,2,252,0,16,0,0,63,192,0,2,248,0,125,0,0,191,64,0,3,248,0,255,208,1,255,0,0,7,244,0,191,253,7,252,0,47,255,240,0,11,255,31,248,0,31,255,224,0,0,253,11,240,0,15,255,64,0,0,44,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,255,248,0,0,0,1,255,255,255,255,252,0,0,1,1,255,255,255,255,248,0,0,7,128,7,224,0,11,244,0,0,15,224,11,244,0,31,224,0,0,31,208,3,252,0,63,192,0,0,63,192,1,255,0,255,64,0,0,127,64,0,191,195,254,0,0,0,255,0,0,47,255,252,0,0,2,253,0,0,15,255,240,0,0,3,252,0,0,7,255,208,0,0,11,244,0,0,127,255,253,0,0,31,240,0,27,255,255,255,208,0,63,208,27,255,255,66,255,255,128,63,128,47,255,244,0,47,255,192,11,0,15,254,0,0,2,255,64,0,0,6,64,0,0,0,26,0, + // 0x6d88 消 + 136,109,33,36,68,37,2,252,1,0,0,0,0,253,0,0,0,11,128,0,32,0,253,0,40,0,31,248,2,248,0,253,0,63,64,15,255,2,252,0,253,0,191,0,1,255,208,255,0,253,0,254,0,0,63,192,127,64,253,2,252,0,0,11,64,63,192,253,3,248,0,0,1,0,31,208,253,11,240,0,0,0,0,15,128,253,11,208,0,0,0,0,4,0,253,0,64,0,16,0,0,0,0,254,0,0,0,125,0,0,255,255,255,255,252,0,255,192,0,255,255,255,255,252,0,191,244,0,255,255,255,255,252,0,15,254,0,253,0,0,0,252,0,2,254,0,253,0,0,0,252,0,0,188,0,253,0,0,0,252,0,0,20,0,253,0,0,0,252,0,0,0,0,255,255,255,255,252,0,0,0,0,255,255,255,255,252,0,0,0,0,255,255,255,255,252,0,0,11,0,253,0,0,0,252,0,0,15,192,253,0,0,0,252,0,0,47,192,253,0,0,0,252,0,0,63,64,255,255,255,255,252,0,0,191,0,255,255,255,255,252,0,0,254,0,255,255,255,255,252,0,2,252,0,253,0,0,0,252,0,3,248,0,253,0,0,0,252,0,11,240,0,253,0,0,0,252,0,31,224,0,253,0,0,0,252,0,63,208,0,253,0,0,1,252,0,127,192,0,253,0,3,255,252,0,31,64,0,253,0,2,255,248,0,2,0,0,253,0,1,255,208,0,0,0,0,0,0,0,0,0,0, + // 0x6de1 淡 + 225,109,35,34,50,37,1,253,0,0,0,0,0,127,0,0,0,1,224,0,0,0,127,0,0,0,7,254,0,6,64,127,0,36,0,3,255,208,15,192,127,0,63,128,0,127,248,31,192,191,0,191,0,0,11,244,63,128,190,1,253,0,0,1,208,127,0,254,3,252,0,0,0,0,254,0,253,7,240,0,0,0,1,252,1,254,15,208,0,0,0,0,36,3,255,209,64,0,4,0,0,0,7,255,252,0,0,31,64,0,0,31,251,255,128,0,127,244,0,0,191,208,191,244,0,47,254,0,7,255,128,31,255,0,2,255,193,255,253,0,2,255,192,0,127,2,255,224,106,0,63,192,0,13,0,254,0,127,0,11,0,0,0,0,0,0,191,0,0,0,0,0,0,9,0,191,0,25,0,0,1,0,31,192,190,0,63,192,0,3,128,47,128,254,0,127,128,0,11,240,63,64,255,0,255,0,0,15,224,191,0,255,66,253,0,0,47,192,254,1,255,131,248,0,0,63,195,252,3,255,207,240,0,0,191,66,244,3,255,246,192,0,0,255,0,16,15,247,248,0,0,2,253,0,0,47,226,254,0,0,7,252,0,0,255,192,255,128,0,15,244,0,27,255,0,63,244,0,31,240,6,255,252,0,15,255,144,15,208,31,255,224,0,2,255,244,2,128,11,254,0,0,0,127,224,0,0,3,144,0,0,0,1,128, + // 0x6e05 清 + 5,110,34,36,68,37,2,252,2,0,0,0,1,252,0,0,0,15,224,0,0,1,252,0,0,0,31,254,1,85,86,253,85,85,0,7,255,195,255,255,255,255,255,64,0,191,211,255,255,255,255,255,64,0,31,192,0,1,252,0,0,0,0,3,64,0,1,252,0,0,0,0,0,1,255,255,255,255,253,0,0,0,1,255,255,255,255,253,0,0,0,0,85,86,253,85,84,0,16,0,0,0,1,252,0,0,0,125,0,10,170,170,254,170,170,144,255,224,31,255,255,255,255,255,224,191,253,31,255,255,255,255,255,224,11,255,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,40,0,63,255,255,255,248,0,0,0,0,63,255,255,255,248,0,0,0,0,63,170,170,171,248,0,0,0,0,63,0,0,2,248,0,0,1,0,63,0,0,2,248,0,0,11,128,63,255,255,255,248,0,0,15,208,63,255,255,255,248,0,0,47,192,63,85,85,86,248,0,0,63,128,63,0,0,2,248,0,0,191,0,63,85,85,86,248,0,0,254,0,63,255,255,255,248,0,2,252,0,63,255,255,255,248,0,7,248,0,63,0,0,2,248,0,15,240,0,63,0,0,2,248,0,31,224,0,63,0,0,2,248,0,63,192,0,63,0,0,2,248,0,63,128,0,63,0,3,255,248,0,15,0,0,63,0,2,255,244,0,1,0,0,63,0,1,255,144,0,0,0,0,0,0,0,0,0,0, + // 0x6e2c 測 + 44,110,33,36,68,37,1,252,0,64,0,0,0,0,0,15,192,3,224,0,0,0,0,0,15,192,11,254,7,255,255,208,0,15,192,3,255,199,255,255,208,0,15,192,0,127,215,255,255,208,248,15,192,0,15,135,208,11,208,252,15,192,0,2,7,208,11,208,252,15,192,0,0,7,208,11,208,252,15,192,0,0,7,208,11,208,252,15,192,0,0,7,255,255,208,252,15,192,4,0,7,255,255,208,252,15,192,47,128,7,255,255,208,252,15,192,127,248,7,208,11,208,252,15,192,47,255,7,208,11,208,252,15,192,2,255,7,208,11,208,252,15,192,0,124,7,208,11,208,252,15,192,0,4,7,255,255,208,252,15,192,0,0,7,255,255,208,252,15,192,0,0,7,255,255,208,252,15,192,0,0,7,208,11,208,252,15,192,0,0,7,208,11,208,252,15,192,0,30,7,208,11,208,252,15,192,0,47,135,208,11,208,252,15,192,0,63,71,255,255,208,252,15,192,0,127,7,255,255,208,252,15,192,0,254,7,255,255,208,248,15,192,0,253,0,0,1,0,0,15,192,2,252,2,248,31,64,0,15,192,3,248,3,244,47,192,0,15,192,7,240,11,240,15,240,0,15,192,15,240,31,208,3,248,0,15,192,31,208,63,192,2,252,16,31,192,47,192,255,0,0,248,63,255,192,7,129,253,0,0,80,47,255,128,0,0,52,0,0,0,31,249,0,0,0,0,0,0,0,0,0,0, + // 0x6e90 源 + 144,110,34,35,59,37,2,253,1,0,0,0,0,0,0,0,0,11,208,0,0,0,0,0,0,0,31,252,11,255,255,255,255,255,192,11,255,75,255,255,255,255,255,192,1,255,203,255,255,255,255,255,192,0,47,75,240,0,31,224,0,0,0,10,11,240,0,31,208,0,0,0,0,11,240,0,47,192,0,0,0,0,11,240,0,47,128,0,0,0,0,11,241,255,255,255,255,0,16,0,11,241,255,255,255,255,0,125,0,11,241,254,170,170,191,0,255,208,11,241,248,0,0,127,0,191,252,11,241,248,0,0,127,0,11,252,11,225,255,255,255,255,0,0,244,11,225,255,255,255,255,0,0,16,11,225,253,85,85,191,0,0,0,11,225,248,0,0,127,0,0,0,15,225,248,0,0,127,0,0,0,15,209,254,170,170,191,0,0,16,15,209,255,255,255,255,0,0,61,15,193,255,255,255,255,0,0,127,15,192,0,15,192,0,0,0,254,31,192,0,15,192,16,0,1,253,47,192,184,15,193,248,0,2,252,63,128,253,15,194,252,0,3,248,63,66,252,15,192,254,0,11,240,127,3,244,15,192,191,64,15,240,255,11,240,15,192,63,192,31,208,253,31,208,15,192,31,208,63,194,252,63,128,15,192,15,224,127,67,248,63,0,15,192,11,144,191,11,240,5,15,255,192,0,0,30,7,224,0,15,255,128,0,0,0,0,128,0,7,249,0,0,0, + // 0x6e96 準 + 150,110,33,35,59,37,2,253,0,128,0,14,64,10,64,0,0,3,248,0,31,208,31,224,0,0,11,255,128,63,192,47,192,0,0,1,255,224,191,64,63,64,0,0,0,31,192,255,170,255,170,169,0,0,2,3,255,255,255,255,254,0,16,0,15,255,255,255,255,254,0,126,0,47,252,0,190,0,0,0,255,224,191,252,0,190,0,0,0,127,254,255,254,170,255,170,160,0,7,244,254,255,255,255,255,244,0,0,96,53,255,255,255,255,244,0,0,0,1,252,0,190,0,0,0,0,3,129,252,0,190,0,0,0,0,15,209,255,255,255,255,244,0,0,63,193,255,255,255,255,244,0,0,255,65,254,170,255,170,160,0,2,253,1,252,0,190,0,0,0,11,248,1,252,0,190,0,0,0,63,240,1,255,255,255,255,255,64,63,192,1,255,255,255,255,255,64,31,0,0,170,170,170,170,170,64,4,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0, + // 0x6eab 溫 + 171,110,34,35,59,37,2,253,1,0,0,0,0,0,0,0,0,11,208,0,0,0,0,0,0,0,15,252,0,255,255,255,255,240,0,15,255,64,255,255,255,255,240,0,1,255,208,254,170,170,175,240,0,0,47,128,252,0,224,11,240,0,0,7,0,252,1,240,11,240,0,0,0,0,252,3,224,11,240,0,0,0,0,252,3,240,11,240,0,0,0,0,252,15,253,11,240,0,16,0,0,252,47,47,75,240,0,126,0,0,253,253,11,219,240,0,255,224,0,252,244,2,203,240,0,191,252,0,252,0,0,11,240,0,11,253,0,255,255,255,255,240,0,1,248,0,255,255,255,255,240,0,0,32,0,170,170,170,170,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,255,255,255,255,252,0,0,8,7,255,255,255,255,252,0,0,47,7,255,255,255,255,252,0,0,63,135,240,125,11,192,252,0,0,127,71,240,125,11,192,252,0,0,255,7,240,125,11,192,252,0,1,253,7,240,125,11,192,252,0,2,252,7,240,125,11,192,252,0,3,248,7,240,125,11,192,252,0,11,240,7,240,125,11,192,252,0,15,224,7,240,125,11,192,252,0,47,208,7,240,125,11,192,252,0,127,193,255,255,255,255,255,255,224,191,65,255,255,255,255,255,255,224,31,1,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x6fc0 激 + 192,111,34,36,68,37,2,252,0,0,0,46,64,2,228,0,0,15,128,0,63,192,2,248,0,0,47,244,0,63,64,3,244,0,0,31,254,0,127,0,3,240,0,0,3,255,127,255,255,131,240,0,0,0,127,63,255,255,135,240,0,0,0,28,63,85,111,139,224,0,0,0,0,63,0,31,143,255,255,224,0,0,63,85,111,143,255,255,224,0,0,63,255,255,159,255,255,224,0,0,63,255,255,175,192,127,0,125,0,63,0,31,191,192,126,0,255,128,63,0,31,255,192,190,0,255,244,63,85,111,255,192,189,0,31,252,63,255,255,255,208,253,0,2,244,63,255,255,255,208,252,0,0,96,0,63,64,247,224,252,0,0,0,0,63,64,114,241,252,0,0,0,0,63,64,1,242,248,0,0,1,255,255,255,241,247,244,0,0,1,255,255,255,240,251,240,0,0,53,255,255,255,224,255,240,0,0,190,2,244,0,0,127,224,0,0,254,2,244,0,0,63,208,0,1,252,2,255,255,64,63,192,0,3,252,3,255,255,64,63,128,0,3,244,3,255,255,64,127,192,0,11,240,7,240,63,64,255,240,0,15,224,11,224,63,2,255,244,0,31,208,15,192,63,7,246,252,0,63,192,63,128,63,31,240,255,0,127,64,191,0,127,127,192,127,192,191,2,253,47,255,255,64,47,224,46,7,248,31,253,253,0,11,192,0,1,208,10,144,48,0,2,0,0,0,0,0,0,0,0,0,0, + // 0x7121 無 + 33,113,34,35,59,37,2,253,0,3,144,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,191,255,255,255,255,255,254,0,1,255,255,255,255,255,255,254,0,7,255,255,255,255,255,255,254,0,31,255,65,248,15,192,127,0,0,191,255,1,248,15,192,63,0,0,255,191,1,248,15,192,63,0,0,62,63,1,248,15,192,63,0,0,8,63,1,248,15,192,63,0,0,0,63,1,248,15,192,63,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,63,65,248,15,192,127,0,0,0,63,1,248,15,192,63,0,0,0,63,1,248,15,192,63,0,0,0,63,1,248,15,192,63,0,0,0,63,1,248,15,192,63,0,0,0,63,1,248,15,192,63,0,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,1,128,0,1,253,2,160,10,208,31,224,0,2,252,3,240,11,240,15,244,0,3,244,3,240,7,240,3,252,0,15,240,3,244,3,248,1,254,0,31,224,3,248,2,252,0,255,64,127,192,3,248,1,252,0,127,192,255,64,2,248,0,253,0,47,208,29,0,1,64,0,144,0,13,0, + // 0x71b1 熱 + 177,113,34,35,59,37,2,253,0,3,224,0,0,63,0,0,0,0,3,240,0,0,63,0,0,0,5,87,245,84,0,63,0,0,0,31,255,255,252,0,63,0,0,0,31,255,255,252,0,63,0,0,0,0,3,240,0,63,255,255,240,0,0,3,240,0,63,255,255,240,0,85,91,245,85,63,255,255,240,0,191,255,255,255,64,126,7,240,0,191,255,255,255,64,126,7,240,0,0,252,31,0,0,189,7,240,0,0,248,31,6,24,189,7,240,0,3,240,31,79,191,253,7,240,0,111,224,31,255,191,252,7,240,0,255,66,155,254,31,253,7,240,0,56,3,240,0,3,255,71,240,0,0,3,240,0,1,255,215,240,0,63,255,255,253,3,255,251,240,64,63,255,255,253,3,247,247,240,240,26,171,250,168,7,240,215,240,240,0,3,240,0,15,208,7,241,240,0,3,240,5,47,192,7,241,240,1,91,255,255,191,64,7,242,240,255,255,255,255,255,0,7,255,224,255,255,255,165,252,0,3,255,208,186,148,0,0,112,0,0,170,64,0,0,0,0,0,0,0,0,0,0,228,0,0,0,64,6,192,0,2,252,7,240,15,208,31,240,0,3,248,7,240,11,240,11,248,0,11,240,3,240,3,244,3,253,0,31,224,3,244,3,248,0,255,0,63,192,3,244,2,252,0,191,128,255,64,3,248,1,252,0,63,192,25,0,1,64,0,64,0,25,0, + // 0x71c8 燈 + 200,113,35,35,59,37,1,253,0,10,64,0,0,6,208,16,0,0,15,192,10,170,147,240,184,0,0,15,192,15,255,247,242,252,0,0,15,192,15,255,241,255,240,0,0,15,192,0,3,224,255,128,0,0,15,194,5,11,208,191,3,208,0,15,199,255,143,192,63,79,240,5,15,203,239,255,64,31,255,128,15,79,207,195,255,0,15,253,0,15,79,239,65,253,0,3,252,0,15,79,254,3,255,255,255,255,0,15,15,252,15,255,255,255,191,208,31,15,212,127,207,255,255,47,248,47,15,195,255,0,0,0,11,248,62,31,195,248,0,0,0,1,240,61,31,193,210,170,170,170,168,0,188,31,192,3,255,255,255,252,0,4,31,128,3,255,255,255,252,0,0,31,128,3,240,0,0,252,0,0,47,128,3,240,0,0,252,0,0,47,64,3,240,0,0,252,0,0,63,128,3,240,0,0,252,0,0,63,208,3,255,255,255,252,0,0,63,240,3,255,255,255,252,0,0,127,252,2,170,170,170,168,0,0,190,254,0,29,0,11,144,0,0,252,127,64,127,0,15,208,0,2,252,63,192,63,64,31,192,0,3,248,15,192,31,128,47,128,0,11,240,11,64,15,192,63,0,0,15,224,1,0,15,64,46,0,0,63,192,0,255,255,255,255,255,240,127,64,0,255,255,255,255,255,240,46,0,0,255,255,255,255,255,240,8,0,0,0,0,0,0,0,0, + // 0x7247 片 + 71,114,32,36,32,37,1,252,0,0,0,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,192,0,3,248,0,0,0,31,234,170,171,254,170,170,0,31,255,255,255,255,255,255,0,31,255,255,255,255,255,255,0,31,255,255,255,255,255,255,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,234,170,170,171,252,0,0,127,64,0,0,2,252,0,0,191,0,0,0,2,252,0,0,255,0,0,0,2,252,0,0,254,0,0,0,2,252,0,2,253,0,0,0,2,252,0,3,252,0,0,0,2,252,0,11,248,0,0,0,2,252,0,31,240,0,0,0,2,252,0,63,224,0,0,0,2,252,0,127,192,0,0,0,2,252,0,31,64,0,0,0,2,252,0,6,0,0,0,0,2,252,0,0,0,0,0,0,0,0,0, + // 0x7269 物 + 105,114,34,35,59,37,1,253,0,3,244,0,11,128,0,0,0,0,3,244,0,15,208,0,0,0,6,67,244,0,15,192,0,0,0,11,211,244,0,31,192,0,0,0,15,195,244,0,47,64,0,0,0,15,195,244,0,63,0,0,0,0,15,195,244,0,127,255,255,255,240,15,195,244,0,255,255,255,255,240,31,255,255,225,255,255,255,255,240,31,255,255,227,248,47,71,247,240,47,255,255,231,240,63,11,211,240,63,3,244,15,224,126,15,199,240,63,3,244,47,192,189,15,199,240,190,3,244,127,128,252,31,135,240,188,3,244,127,2,248,47,135,240,44,3,244,13,3,240,63,71,240,0,3,244,0,7,240,63,11,224,0,3,250,244,15,208,190,11,224,0,3,255,244,47,192,253,11,224,0,111,255,248,63,65,252,15,208,27,255,255,144,255,3,248,15,208,127,255,244,2,252,3,240,15,208,63,251,244,7,248,11,240,15,208,61,3,244,31,240,15,208,15,192,0,3,244,47,192,47,192,15,192,0,3,244,3,0,127,64,31,192,0,3,244,0,0,255,0,47,192,0,3,244,0,2,253,0,47,128,0,3,244,0,7,248,0,63,128,0,3,244,0,31,240,0,127,64,0,3,244,0,127,192,0,255,0,0,3,244,1,255,65,255,255,0,0,3,244,0,189,0,255,252,0,0,3,244,0,36,0,255,244,0,0,3,244,0,0,0,20,0,0, + // 0x7387 率 + 135,115,33,36,68,37,2,252,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,0,0,0,47,192,0,0,0,0,1,0,0,63,64,0,0,224,0,15,192,0,254,2,64,3,253,0,47,248,10,252,7,240,15,248,0,7,255,47,240,15,208,63,208,0,0,255,239,240,63,129,255,64,0,0,47,7,253,190,0,188,0,0,0,4,0,255,252,0,0,0,0,0,0,0,63,242,208,0,0,0,0,1,128,31,199,240,244,0,0,0,31,208,63,2,255,255,64,0,2,255,224,253,85,254,255,224,0,127,255,191,255,255,255,31,253,0,191,228,127,255,255,255,130,255,128,62,0,63,170,164,15,192,127,64,16,0,0,7,240,10,0,28,0,0,0,0,7,240,0,0,0,0,0,0,0,7,244,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x7528 用 + 40,117,32,34,16,37,1,252,0,21,85,85,85,85,85,85,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,127,0,0,254,0,0,191,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,127,0,0,253,0,0,191,0,191,255,255,255,255,255,255,0,191,255,255,255,255,255,255,0,255,255,255,255,255,255,255,0,254,85,85,254,85,85,191,0,253,0,0,253,0,0,191,1,252,0,0,253,0,0,191,2,252,0,0,253,0,0,191,3,248,0,0,253,0,0,191,3,244,0,0,253,0,0,191,11,240,0,0,253,0,0,191,15,240,0,0,253,0,0,191,47,208,0,0,253,5,65,255,127,192,0,0,253,11,255,254,127,64,0,0,253,7,255,252,14,0,0,0,189,3,255,224,0,0,0,0,0,0,0,0, + // 0x754c 界 + 76,117,33,35,59,37,2,252,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,252,0,7,240,0,15,208,0,0,252,0,7,240,0,15,208,0,0,252,0,7,240,0,15,208,0,0,252,0,7,240,0,15,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,254,170,175,250,170,175,208,0,0,252,0,7,240,0,15,208,0,0,252,0,7,240,0,15,208,0,0,252,0,7,240,0,15,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,0,31,240,2,254,0,0,0,0,0,191,192,0,255,128,0,0,0,3,255,64,0,63,244,0,0,0,47,252,0,0,11,255,64,0,2,255,245,64,0,43,255,248,0,111,255,175,192,0,63,111,255,192,255,248,47,192,0,63,71,255,128,63,208,47,192,0,63,64,127,0,24,0,63,128,0,63,64,0,0,0,0,63,128,0,63,64,0,0,0,0,127,64,0,63,64,0,0,0,0,255,0,0,63,64,0,0,0,3,254,0,0,63,64,0,0,0,15,252,0,0,63,64,0,0,0,191,244,0,0,63,64,0,0,7,255,208,0,0,63,64,0,0,2,255,0,0,0,63,64,0,0,0,244,0,0,0,63,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x767d 白 + 125,118,27,36,252,37,5,252,0,0,3,228,0,0,0,0,0,7,252,0,0,0,0,0,11,248,0,0,0,0,0,15,240,0,0,0,0,0,31,240,0,0,0,0,0,47,208,0,0,0,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,85,85,85,85,87,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252,254,85,85,85,85,87,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,255,255,255,255,255,252,255,85,85,85,85,87,252,254,0,0,0,0,2,252,254,0,0,0,0,2,252,0,0,0,0,0,0,0, + // 0x7684 的 + 132,118,32,35,24,37,3,253,0,30,128,0,7,144,0,0,0,47,192,0,11,240,0,0,0,63,128,0,15,224,0,0,0,63,64,0,15,208,0,0,0,127,0,0,31,192,0,0,0,190,0,0,63,192,0,0,255,255,255,208,63,255,255,253,255,255,255,208,191,255,255,253,255,255,255,208,255,255,255,253,253,0,15,209,253,0,0,253,253,0,15,211,248,0,0,253,253,0,15,219,240,0,0,252,253,0,15,239,224,0,0,252,253,0,15,239,192,0,0,252,253,0,15,210,66,0,0,252,253,0,15,208,31,128,0,252,255,255,255,208,31,208,0,252,255,255,255,208,11,240,0,252,255,255,255,208,3,252,0,252,253,0,15,208,1,254,1,252,253,0,15,208,0,191,1,252,253,0,15,208,0,63,193,252,253,0,15,208,0,47,194,248,253,0,15,208,0,15,66,248,253,0,15,208,0,4,2,248,253,0,15,208,0,0,3,248,253,0,15,208,0,0,3,244,253,0,15,208,0,0,3,244,255,255,255,208,0,0,7,240,255,255,255,208,0,0,11,240,255,255,255,208,0,0,31,224,253,0,0,0,2,255,255,208,253,0,0,0,0,255,255,192,253,0,0,0,0,255,254,0,0,0,0,0,0,0,0,0, + // 0x76e3 監 + 227,118,33,34,50,37,2,254,0,0,0,0,0,57,0,0,0,42,170,170,170,64,127,0,0,0,63,255,255,255,128,190,0,0,0,63,255,255,255,128,252,0,0,0,63,0,248,0,1,252,0,0,0,63,0,248,0,2,248,0,0,0,63,85,253,85,3,255,255,255,128,63,255,255,255,7,255,255,255,128,63,255,255,255,15,255,255,255,128,63,0,0,63,47,192,0,0,0,63,0,0,63,127,64,0,0,0,63,85,85,127,191,0,0,0,0,63,255,255,255,28,0,0,0,0,63,255,255,255,0,0,0,0,0,63,0,248,0,0,0,0,0,0,63,0,248,0,2,255,255,255,0,63,0,248,0,2,255,255,255,0,63,255,255,255,194,255,255,255,0,63,255,255,255,192,0,0,0,0,42,170,170,170,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,255,171,254,175,250,191,208,0,0,252,3,244,7,224,15,208,0,0,252,3,244,7,224,15,208,0,0,252,3,244,7,224,15,208,0,0,252,3,244,7,224,15,208,0,0,252,3,244,7,224,15,208,0,0,252,3,244,7,224,15,208,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x76f4 直 + 244,118,33,35,59,37,2,253,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,7,244,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,26,175,250,170,170,64,0,5,80,63,255,255,255,255,128,0,15,224,63,255,255,255,255,128,0,15,224,63,64,0,0,47,128,0,15,224,63,64,0,0,47,128,0,15,224,63,149,85,85,127,128,0,15,224,63,255,255,255,255,128,0,15,224,63,255,255,255,255,128,0,15,224,63,64,0,0,47,128,0,15,224,63,64,0,0,47,128,0,15,224,63,149,85,85,127,128,0,15,224,63,255,255,255,255,128,0,15,224,63,255,255,255,255,128,0,15,224,63,64,0,0,47,128,0,15,224,63,64,0,0,47,128,0,15,224,63,170,170,170,191,128,0,15,224,63,255,255,255,255,128,0,15,224,63,255,255,255,255,128,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0, + // 0x7720 眠 + 32,119,34,33,41,37,2,253,127,255,253,11,255,255,255,255,64,127,255,253,11,255,255,255,255,64,127,255,253,11,255,255,255,255,64,127,0,189,11,224,0,0,63,64,127,0,189,11,224,0,0,63,64,127,0,189,11,224,0,0,63,64,127,0,189,11,224,0,0,63,64,127,0,189,11,240,0,0,63,64,127,255,253,11,255,255,255,255,64,127,255,253,11,255,255,255,255,64,127,255,253,11,255,255,255,255,64,127,0,189,11,224,7,240,0,0,127,0,189,11,224,3,240,0,0,127,0,189,11,224,3,240,0,0,127,0,189,11,224,3,240,0,0,127,0,189,11,240,7,244,0,0,127,255,253,11,255,255,255,255,208,127,255,253,11,255,255,255,255,208,127,255,253,11,255,255,255,255,208,127,0,189,11,224,2,248,0,0,127,0,189,11,224,1,252,0,0,127,0,189,11,224,1,252,0,0,127,0,189,11,224,0,252,0,0,127,0,189,11,224,0,253,0,0,127,255,253,11,224,0,190,0,0,127,255,253,11,224,0,127,1,208,127,255,253,11,224,0,63,2,240,127,0,0,11,224,107,127,130,240,127,0,0,11,255,255,95,195,240,63,0,2,255,255,255,79,247,240,0,0,2,255,255,249,7,255,208,0,0,1,255,228,0,2,255,192,0,0,0,144,0,0,0,127,0, + // 0x780d 砍 + 13,120,35,35,59,37,1,253,0,0,0,0,15,144,0,0,0,0,0,0,0,15,208,0,0,0,63,255,255,253,31,208,0,0,0,63,255,255,253,31,192,0,0,0,63,255,255,253,47,192,0,0,0,0,63,64,0,63,192,0,0,0,0,63,0,0,63,128,0,1,0,0,127,0,0,127,255,255,255,244,0,126,0,0,191,255,255,255,244,0,190,0,0,255,255,255,255,240,0,253,0,0,253,15,208,11,224,0,252,0,2,252,15,208,15,208,1,252,0,3,248,15,208,15,192,2,255,255,251,244,15,208,31,192,3,255,255,255,240,15,208,47,128,7,255,255,255,208,15,208,63,64,11,248,3,247,192,15,208,63,0,15,248,3,240,0,15,208,5,0,47,248,3,240,0,31,224,0,0,63,248,3,240,0,47,240,0,0,191,248,3,240,0,63,240,0,0,191,248,3,240,0,63,244,0,0,62,248,3,240,0,190,252,0,0,21,248,3,240,0,252,252,0,0,1,248,3,240,2,252,191,0,0,1,248,3,240,3,244,63,64,0,1,255,255,240,15,240,47,192,0,1,255,255,240,47,208,15,240,0,1,255,255,240,191,128,11,252,0,1,248,0,2,255,0,3,255,0,1,248,0,15,253,0,0,255,208,1,248,0,127,244,0,0,127,248,1,164,0,63,208,0,0,31,244,0,0,0,31,64,0,0,3,224,0,0,0,8,0,0,0,0,128, + // 0x78ba 確 + 186,120,35,35,59,37,1,253,0,0,0,0,0,6,144,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,15,208,0,0,63,255,255,240,0,31,192,0,0,63,255,255,255,255,255,255,255,244,63,255,255,255,255,255,255,255,244,0,63,0,15,255,255,255,255,244,0,127,0,15,192,254,0,3,244,0,127,0,15,193,252,11,147,244,0,190,0,15,195,248,15,211,244,0,253,0,10,75,240,31,193,160,0,252,0,0,15,208,47,64,0,1,252,0,0,63,255,255,255,208,2,252,0,0,191,255,255,255,208,3,255,255,210,255,255,255,255,208,3,255,255,219,255,0,253,0,0,11,255,255,255,255,0,253,0,0,15,244,11,223,255,0,253,0,0,31,244,11,210,127,170,254,170,64,63,244,11,208,127,255,255,255,192,127,244,11,208,127,255,255,255,192,255,244,11,208,127,0,253,0,0,191,244,11,208,127,0,253,0,0,61,244,11,208,127,0,253,0,0,17,244,11,208,127,170,254,170,64,1,244,11,208,127,255,255,255,192,1,244,11,208,127,255,255,255,192,1,255,255,208,127,0,253,0,0,1,255,255,208,127,0,253,0,0,1,255,255,208,127,0,253,0,0,1,244,0,0,127,255,255,255,244,1,244,0,0,127,255,255,255,244,1,244,0,0,127,255,255,255,244,0,0,0,0,127,0,0,0,0,0,0,0,0,126,0,0,0,0, + // 0x79fb 移 + 251,121,34,35,59,37,1,253,0,0,1,0,0,15,144,0,0,0,0,111,192,0,47,192,0,0,0,111,255,240,0,127,128,0,0,63,255,255,208,1,255,255,254,0,63,255,244,0,7,255,255,255,128,47,155,240,0,47,255,255,255,0,0,7,240,0,191,192,0,254,0,0,7,240,7,255,192,2,252,0,0,7,240,47,255,240,7,248,0,0,7,240,15,231,253,31,240,0,0,11,240,3,0,255,191,192,0,63,255,255,240,0,63,255,64,0,63,255,255,240,0,15,253,0,0,63,255,255,240,0,191,240,0,0,0,15,240,0,7,255,208,0,0,0,31,240,1,255,255,253,0,0,0,63,248,15,255,227,252,0,0,0,127,254,3,254,11,240,0,0,0,255,255,130,144,47,255,255,224,1,255,255,208,0,191,255,255,240,3,251,247,244,2,255,255,255,240,7,231,242,244,15,248,0,31,208,15,199,240,224,191,240,0,63,192,47,135,240,71,255,253,0,191,64,127,71,240,7,254,255,129,255,0,190,7,240,2,208,127,231,252,0,60,7,240,0,0,15,255,244,0,36,7,240,0,0,2,255,208,0,0,7,240,0,0,7,255,64,0,0,7,240,0,0,127,252,0,0,0,7,240,0,7,255,224,0,0,0,7,240,6,255,255,64,0,0,0,7,240,47,255,244,0,0,0,0,7,240,15,254,0,0,0,0,0,7,240,7,144,0,0,0,0, + // 0x7a4d 積 + 77,122,35,36,68,37,1,252,0,0,1,0,0,15,208,0,0,0,0,111,128,0,15,208,0,0,0,111,255,231,255,255,255,255,224,63,255,255,219,255,255,255,255,224,63,255,244,0,0,15,224,0,0,46,159,224,0,0,15,208,0,0,0,11,224,3,255,255,255,255,128,0,11,224,3,255,255,255,255,128,0,11,224,0,0,15,224,0,0,0,11,224,0,0,15,224,0,0,42,175,250,191,255,255,255,255,244,63,255,255,255,255,255,255,255,244,63,255,255,224,0,0,0,0,0,63,255,255,208,0,0,0,0,0,0,15,224,0,255,255,255,255,64,0,47,224,0,255,255,255,255,64,0,63,248,0,252,0,0,63,64,0,127,254,0,252,0,0,63,64,0,255,255,128,255,255,255,255,64,1,255,255,208,255,255,255,255,64,3,251,231,240,252,0,0,63,64,11,219,226,224,252,0,0,63,64,15,203,224,192,255,255,255,255,64,63,139,224,0,255,255,255,255,64,191,11,224,0,252,0,0,63,64,189,11,224,0,252,0,0,63,64,60,11,224,0,252,0,0,63,64,32,11,224,0,255,255,255,255,64,0,11,224,0,255,255,255,255,64,0,11,224,0,3,128,3,128,0,0,11,224,0,47,244,15,244,0,0,11,224,2,255,208,7,255,0,0,11,224,127,254,0,0,191,208,0,11,224,191,224,0,0,31,244,0,11,224,46,0,0,0,3,128,0,0,0,0,0,0,0,0,0, + // 0x7aef 端 + 239,122,35,35,59,37,1,253,0,5,0,0,0,15,192,0,0,0,47,64,0,0,15,192,0,0,0,47,64,11,224,15,192,15,192,0,47,64,11,224,15,192,15,192,0,47,64,11,224,15,192,15,192,0,47,64,11,224,15,192,15,192,0,47,64,11,224,15,192,15,192,0,47,64,11,224,15,192,15,192,63,255,255,139,255,255,255,255,192,63,255,255,139,255,255,255,255,192,63,255,255,139,255,255,255,255,192,0,0,0,0,0,0,0,0,0,6,0,57,0,0,0,0,0,0,31,64,127,0,0,0,0,0,0,15,128,126,63,255,255,255,255,244,15,128,189,63,255,255,255,255,244,15,192,189,63,255,255,255,255,244,11,192,252,0,0,47,192,0,0,11,192,252,0,0,63,192,0,0,7,208,252,0,0,63,64,0,0,7,209,248,15,255,255,255,255,224,3,225,244,15,255,255,255,255,224,3,226,240,15,255,255,255,255,224,3,211,240,15,193,244,63,7,224,0,3,246,223,193,244,63,7,224,0,7,255,223,193,244,63,7,224,27,255,255,239,193,244,63,7,224,191,255,254,79,193,244,63,7,224,127,254,64,15,193,244,63,7,224,62,64,0,15,193,244,63,7,224,0,0,0,15,193,244,63,7,224,0,0,0,15,193,244,63,7,224,0,0,0,15,193,244,63,111,224,0,0,0,15,193,244,63,127,208,0,0,0,10,128,80,0,63,64, + // 0x7b49 等 + 73,123,34,35,59,37,1,253,0,30,64,0,0,249,0,0,0,0,63,192,0,1,253,0,0,0,0,127,64,0,2,252,0,0,0,0,255,255,255,199,255,255,255,240,1,255,255,255,207,255,255,255,240,3,255,255,255,239,255,255,255,240,15,240,252,0,191,130,252,0,0,63,208,254,1,255,0,255,0,0,191,128,127,0,253,0,127,64,0,31,0,56,1,252,0,61,0,0,0,0,0,1,252,0,0,0,0,0,127,255,255,255,255,255,248,0,0,127,255,255,255,255,255,252,0,0,127,255,255,255,255,255,252,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,0,0,124,0,0,3,248,0,0,0,1,255,64,0,3,248,0,0,0,0,191,208,0,3,248,0,0,0,0,31,244,0,3,248,0,0,0,0,7,253,0,3,248,0,0,0,0,1,253,0,7,248,0,0,0,0,0,176,31,255,244,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,11,255,128,0,0, + // 0x7ba1 管 + 161,123,35,35,59,37,1,253,0,46,64,0,0,248,0,0,0,0,63,128,0,1,253,0,0,0,0,127,0,0,3,252,0,0,0,0,255,255,255,203,255,255,255,244,2,255,255,255,223,255,255,255,244,11,255,255,255,255,255,255,255,244,31,224,253,1,255,0,254,0,0,127,192,191,2,252,0,127,64,0,15,0,62,0,252,0,63,64,0,0,0,0,0,252,0,0,0,0,10,170,170,171,254,170,170,170,128,15,255,255,255,255,255,255,255,208,15,255,255,255,255,255,255,255,208,15,192,0,0,0,0,0,15,208,15,192,0,0,0,0,0,15,208,15,193,170,170,170,170,169,15,208,15,193,255,255,255,255,254,15,208,15,193,255,255,255,255,254,15,208,0,1,252,0,0,0,190,0,0,0,1,252,0,0,0,190,0,0,0,1,254,170,170,170,254,0,0,0,1,255,255,255,255,254,0,0,0,1,255,255,255,255,254,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,254,170,170,170,170,160,0,0,1,255,255,255,255,255,244,0,0,1,255,255,255,255,255,244,0,0,1,252,0,0,0,3,244,0,0,1,252,0,0,0,3,244,0,0,1,252,0,0,0,3,244,0,0,1,255,255,255,255,255,244,0,0,1,255,255,255,255,255,244,0,0,1,254,170,170,170,171,244,0,0,1,248,0,0,0,3,240,0, + // 0x7bb1 箱 + 177,123,34,35,59,37,1,253,0,30,0,0,0,228,0,0,0,0,47,192,0,0,254,0,0,0,0,63,128,0,1,252,0,0,0,0,127,64,0,3,252,0,0,0,0,255,255,255,199,255,255,255,240,1,255,255,255,207,255,255,255,240,3,255,255,255,239,255,255,255,240,11,244,253,0,127,194,252,0,0,31,224,191,0,255,0,255,0,0,127,192,63,2,253,0,63,64,0,47,64,62,0,116,0,46,64,0,5,1,252,0,0,0,0,0,0,0,1,252,0,47,255,255,255,192,0,1,252,0,47,255,255,255,192,0,2,252,0,47,255,255,255,192,47,255,255,255,111,128,0,47,192,47,255,255,255,111,128,0,47,192,47,255,255,255,111,128,0,47,192,0,7,252,0,47,234,170,191,192,0,15,253,0,47,255,255,255,192,0,31,255,64,47,255,255,255,192,0,63,255,208,47,128,0,47,192,0,127,255,244,47,128,0,47,192,0,255,254,254,47,128,0,47,192,2,253,252,255,111,234,170,191,192,7,245,252,63,47,255,255,255,192,31,225,252,28,47,255,255,255,192,63,193,252,0,47,128,0,47,192,127,65,252,0,47,128,0,47,192,46,1,252,0,47,128,0,47,192,8,1,252,0,47,255,255,255,192,0,1,252,0,47,255,255,255,192,0,1,252,0,47,255,255,255,192,0,1,252,0,47,128,0,47,192,0,1,252,0,26,64,0,21,64, + // 0x7cfb 系 + 251,124,35,35,59,37,1,253,0,0,0,0,0,0,0,64,0,0,0,0,0,0,21,191,240,0,0,1,85,170,255,255,255,248,0,11,255,255,255,255,255,255,252,0,7,255,255,255,255,255,165,0,0,3,255,255,255,212,0,0,0,0,0,0,0,255,64,1,0,0,0,0,0,3,254,0,11,208,0,0,0,0,15,248,0,47,240,0,0,0,24,63,224,0,191,208,0,0,0,127,255,128,2,255,64,0,0,0,255,254,0,11,253,0,0,0,0,47,253,0,47,240,0,0,0,0,3,255,128,255,192,0,0,0,0,0,191,247,255,0,32,0,0,0,0,47,255,248,2,253,0,0,0,0,7,255,208,1,255,64,0,0,0,1,255,64,0,127,224,0,0,0,7,252,0,0,31,248,0,0,0,47,255,255,255,255,254,0,63,255,255,255,255,255,255,255,128,63,255,255,255,255,255,255,255,208,47,255,255,255,254,85,0,31,244,5,85,0,1,252,0,0,11,224,0,0,80,1,252,0,96,2,64,0,1,254,1,252,2,252,0,0,0,3,254,1,252,7,255,64,0,0,15,252,1,252,0,255,208,0,0,127,240,1,252,0,63,248,0,1,255,192,1,252,0,11,254,0,11,255,0,1,252,0,2,255,192,127,252,0,1,252,0,0,191,240,47,224,0,1,252,0,0,31,208,7,64,0,1,252,0,0,11,0,0,0,0,1,252,0,0,0,0, + // 0x7d05 紅 + 5,125,35,35,59,37,1,253,0,3,64,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,63,65,64,255,255,255,255,240,0,254,3,244,255,255,255,255,240,30,252,11,244,255,255,255,255,240,63,244,15,224,85,87,249,85,80,63,240,63,192,0,3,248,0,0,11,248,191,64,0,3,248,0,0,2,254,254,0,0,3,248,0,0,0,191,248,0,0,3,248,0,0,0,47,240,180,0,3,248,0,0,0,47,193,252,0,3,248,0,0,0,127,64,254,0,3,248,0,0,0,254,0,127,64,3,248,0,0,191,255,255,255,192,3,248,0,0,127,255,255,255,208,3,248,0,0,127,255,255,255,240,3,248,0,0,16,2,248,3,240,3,248,0,0,0,2,248,1,64,3,248,0,0,0,2,248,4,0,3,248,0,0,7,226,248,252,0,3,248,0,0,11,226,248,190,0,3,248,0,0,15,210,248,63,0,3,248,0,0,15,194,248,63,64,3,248,0,0,31,194,248,31,192,3,248,0,0,47,130,248,15,192,3,248,0,0,63,66,248,15,208,3,248,0,0,127,2,248,10,64,3,248,0,0,126,2,248,7,255,255,255,255,248,4,2,248,7,255,255,255,255,248,0,2,248,7,255,255,255,255,248,0,2,248,1,85,85,85,85,80,0,2,164,0,0,0,0,0,0, + // 0x7d22 索 + 34,125,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,63,255,255,255,255,255,255,255,64,63,255,255,255,255,255,255,255,64,63,255,255,255,255,255,255,255,64,63,0,0,255,64,0,0,63,64,63,0,3,254,0,16,0,63,64,63,0,15,248,0,188,0,63,64,63,9,63,224,2,255,0,63,64,63,63,255,64,15,252,0,63,64,0,63,253,0,127,224,0,0,0,0,7,255,1,255,129,0,0,0,0,0,191,219,253,11,192,0,0,0,0,31,255,224,31,244,0,0,0,0,7,255,64,7,254,0,0,0,0,31,252,0,0,255,192,0,127,255,255,255,255,255,255,244,0,127,255,255,255,255,255,255,254,0,127,255,255,255,255,250,170,255,64,0,0,64,7,240,0,0,61,0,0,2,248,7,240,11,192,0,0,0,15,252,7,240,47,248,0,0,0,127,240,7,240,7,255,128,0,7,255,128,7,240,0,191,240,0,127,253,0,7,240,0,15,253,0,255,224,0,7,240,0,2,255,64,47,64,0,7,240,0,0,125,0,4,0,0,7,240,0,0,0,0, + // 0x7d2b 紫 + 43,125,34,35,59,37,1,253,0,0,63,0,3,244,0,0,0,0,0,63,0,3,244,0,0,0,0,0,63,0,3,244,0,24,0,3,240,63,0,3,244,1,254,0,3,240,63,255,211,244,111,255,128,3,240,63,255,211,255,255,253,0,3,240,63,255,211,255,254,64,0,3,240,63,0,3,254,64,0,0,3,240,63,0,3,244,0,2,0,3,240,63,0,83,244,0,3,240,3,240,127,255,227,248,0,7,240,27,255,255,255,227,255,255,255,240,127,255,255,255,65,255,255,255,208,127,255,164,31,144,127,255,255,64,41,64,0,127,192,0,0,0,0,0,0,1,255,0,30,0,0,0,0,7,75,252,0,191,208,0,0,0,31,255,224,2,255,64,0,0,0,47,255,128,15,252,0,0,0,0,2,255,224,127,224,40,0,0,0,0,47,254,255,65,255,0,0,0,0,7,255,252,0,191,192,0,0,0,0,255,208,0,31,244,0,63,255,255,255,255,255,255,253,0,63,255,255,255,255,255,255,255,64,63,255,255,255,255,255,255,255,208,21,64,0,1,253,0,0,15,240,0,0,16,1,252,0,16,7,128,0,1,254,1,252,2,253,0,0,0,11,254,1,252,7,255,128,0,0,127,244,1,252,0,127,244,0,7,255,192,1,252,0,11,255,0,47,254,0,1,252,0,1,255,208,11,240,0,1,252,0,0,47,128,2,64,0,1,252,0,0,5,0, + // 0x7d30 細 + 48,125,34,35,59,37,1,253,0,13,0,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,0,0,255,255,255,255,208,0,190,0,0,255,255,255,255,208,0,252,15,128,255,255,255,255,208,26,244,31,192,252,7,240,15,208,63,240,63,64,252,3,240,15,208,127,208,191,0,252,3,240,15,208,47,224,252,0,252,3,240,15,208,11,247,244,0,252,3,240,15,208,3,255,240,0,252,3,240,15,208,0,255,194,64,252,3,240,15,208,0,127,79,192,252,3,240,15,208,0,62,11,224,252,3,240,15,208,0,252,3,240,252,3,240,15,208,2,255,255,248,255,255,255,255,208,191,255,255,253,255,255,255,255,208,191,255,250,254,255,255,255,255,208,121,11,208,127,252,7,240,15,208,0,11,208,57,252,3,240,15,208,0,11,208,64,252,3,240,15,208,15,203,215,208,252,3,240,15,208,15,203,215,224,252,3,240,15,208,15,139,211,240,252,3,240,15,208,31,139,210,244,252,3,240,15,208,47,75,208,248,252,3,240,15,208,63,11,208,253,252,3,240,15,208,63,11,208,189,252,3,240,15,208,126,11,208,80,255,255,255,255,208,188,11,208,0,255,255,255,255,208,8,11,208,0,255,255,255,255,208,0,11,208,0,252,0,0,15,208,0,11,208,0,252,0,0,15,208,0,7,208,0,84,0,0,0,0, + // 0x7d42 終 + 66,125,35,36,68,37,1,252,0,9,0,0,0,169,0,0,0,0,31,192,0,0,253,0,0,0,0,63,128,0,2,252,0,0,0,0,63,0,0,3,244,0,0,0,0,189,0,0,15,255,255,253,0,0,252,15,64,31,255,255,255,0,6,244,63,128,127,255,255,254,0,63,240,127,0,255,128,1,252,0,127,192,253,3,255,208,3,248,0,47,209,252,15,255,240,11,240,0,11,247,240,63,211,248,47,208,0,3,255,208,47,64,254,127,128,0,0,255,133,9,0,127,255,0,0,0,127,47,0,0,47,252,0,0,0,125,15,128,0,47,252,0,0,0,248,11,192,1,255,255,64,0,3,250,255,224,11,255,191,224,0,191,255,255,240,191,248,31,253,0,191,255,255,251,255,192,7,255,224,127,255,208,255,254,0,0,191,248,0,15,192,147,224,61,0,31,240,4,15,193,65,0,255,208,1,192,15,207,207,192,0,127,252,0,0,15,207,203,208,0,7,255,128,0,31,143,195,224,0,0,191,192,0,31,79,195,240,0,0,15,0,0,47,79,194,244,0,0,0,0,0,63,15,193,248,63,144,0,0,0,63,15,192,228,191,253,0,0,0,190,15,192,0,111,255,224,0,0,252,15,192,0,1,191,255,64,0,24,15,192,0,0,11,255,244,0,0,15,192,0,0,0,127,254,0,0,15,192,0,0,0,7,252,0,0,15,192,0,0,0,0,116,0,0,0,0,0,0,0,0,0,0, + // 0x7d71 統 + 113,125,35,36,68,37,1,252,0,9,0,0,0,15,208,0,0,0,31,192,0,0,15,208,0,0,0,63,128,0,0,15,208,0,0,0,63,0,0,0,15,208,0,0,0,190,0,0,0,15,208,0,0,0,252,15,79,255,255,255,255,240,6,244,47,207,255,255,255,255,240,63,240,63,15,255,255,255,255,240,127,208,253,0,2,252,0,0,0,47,209,252,0,3,248,1,192,0,15,243,240,0,7,240,11,240,0,3,255,224,0,15,224,3,252,0,0,255,197,0,15,208,1,254,0,0,127,47,0,47,193,90,255,64,0,125,15,143,255,255,255,255,192,0,248,11,207,255,255,255,255,224,3,250,255,239,255,254,165,91,240,191,255,255,245,64,0,0,3,244,191,255,255,244,5,80,21,1,128,127,255,208,248,11,224,63,64,0,0,15,192,208,11,224,63,64,0,4,15,193,64,15,224,63,64,0,15,207,207,192,15,208,63,64,0,15,207,203,192,15,208,63,64,0,31,143,199,224,15,192,63,64,0,31,79,195,240,31,192,63,64,0,47,79,194,240,47,192,63,64,0,63,15,193,244,63,128,63,64,128,63,15,192,248,127,0,63,64,248,190,15,192,64,255,0,63,64,252,252,15,192,3,253,0,63,64,252,24,15,192,15,248,0,63,129,248,0,15,192,191,240,0,47,255,244,0,15,192,191,128,0,31,255,240,0,15,192,61,0,0,11,255,192,0,0,0,0,0,0,0,0,0, + // 0x7d72 絲 + 114,125,35,35,59,37,1,253,0,7,64,0,0,3,144,0,0,0,15,240,0,0,7,244,0,0,0,31,208,0,0,15,240,0,0,0,63,128,0,0,31,208,0,0,0,127,2,64,0,63,128,128,0,0,253,7,244,0,127,1,248,0,46,248,15,240,13,253,3,252,0,63,240,47,192,63,248,11,244,0,127,208,63,128,63,240,31,224,0,31,240,255,0,15,248,63,192,0,7,254,252,0,3,254,191,0,0,2,255,244,0,0,255,253,0,0,0,191,225,224,0,63,248,188,0,0,63,195,240,0,31,240,253,0,0,63,1,248,0,31,192,191,0,0,188,0,253,0,63,0,63,192,1,255,255,255,0,255,191,255,208,191,255,255,255,127,255,255,255,240,127,255,255,255,191,255,255,255,244,127,255,244,15,255,255,253,3,244,0,2,244,13,0,1,252,1,208,0,2,244,16,0,1,252,0,0,7,146,245,248,3,225,252,108,0,7,226,244,252,7,241,252,254,0,11,210,244,190,11,225,252,127,0,15,210,244,127,15,209,252,63,128,15,194,244,63,15,193,252,31,192,31,194,244,47,175,193,252,15,208,63,130,244,29,63,65,252,11,240,63,2,244,0,191,1,252,3,244,191,2,244,0,253,1,252,3,248,29,2,244,0,44,1,252,1,144,0,2,244,0,0,1,252,0,0,0,2,244,0,0,1,252,0,0,0,2,244,0,0,1,252,0,0, + // 0x7da0 綠 + 160,125,35,35,59,37,1,253,0,13,0,0,11,144,0,0,0,0,31,192,0,15,208,0,0,0,0,63,64,0,15,208,0,0,0,0,63,0,0,31,255,255,253,0,0,189,4,0,47,255,255,252,0,0,252,31,64,63,234,171,252,0,26,244,63,128,63,64,1,252,0,63,240,127,0,127,0,2,248,0,127,192,253,0,191,170,171,248,0,47,210,248,0,255,255,255,244,0,11,247,240,0,255,255,255,240,0,2,255,208,0,188,0,7,240,0,0,255,133,0,0,0,11,224,0,0,127,63,15,255,255,255,255,240,0,252,47,143,255,255,255,255,240,2,248,15,207,255,255,255,255,240,175,250,255,224,0,11,240,0,0,191,255,255,240,0,11,240,0,0,191,255,255,244,160,11,244,3,128,16,15,193,251,248,11,248,15,240,0,15,192,226,254,11,252,63,192,5,15,192,0,191,75,253,255,0,15,207,207,128,63,203,255,248,0,31,143,207,192,15,75,255,224,0,31,79,199,208,4,11,255,192,0,47,79,195,224,1,203,239,224,0,47,15,195,240,11,235,231,244,0,63,15,194,240,127,235,226,252,0,62,15,193,226,255,75,224,255,64,189,15,192,31,253,11,224,127,224,252,15,192,63,240,11,224,31,248,24,15,192,31,128,11,224,7,240,0,15,192,13,7,255,224,0,192,0,15,192,0,3,255,192,0,0,0,15,192,0,2,250,0,0,0, + // 0x7db2 網 + 178,125,34,35,59,37,1,253,0,9,0,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,63,128,15,255,255,255,255,224,0,63,0,15,255,255,255,255,224,0,190,0,15,255,255,255,255,224,0,252,31,79,208,0,0,11,224,6,244,63,143,209,128,10,75,224,63,240,127,15,211,208,15,203,224,127,208,253,15,210,240,31,75,224,63,193,252,15,209,240,47,11,224,15,243,240,15,208,244,61,11,224,3,255,208,15,208,224,60,11,224,1,255,193,15,219,255,255,203,224,0,191,63,15,219,255,255,203,224,0,189,47,79,214,175,234,139,224,2,248,15,207,208,15,192,11,224,175,250,255,223,208,15,192,11,224,191,255,255,255,208,15,192,11,224,191,255,255,255,219,255,255,219,224,16,15,193,255,219,255,255,219,224,0,15,192,239,215,254,170,139,224,0,15,192,15,209,248,0,11,224,15,143,207,143,209,248,0,11,224,15,143,207,207,209,248,0,11,224,31,79,199,223,209,248,0,11,224,47,79,195,239,209,248,0,11,224,47,15,195,255,208,255,171,139,224,63,15,194,255,208,255,255,203,224,62,15,193,223,208,63,255,203,224,189,15,192,15,208,0,0,11,224,252,15,192,15,208,0,0,11,224,24,15,192,15,208,0,0,11,208,0,15,192,15,208,0,15,255,208,0,15,192,15,208,0,7,255,192,0,15,192,15,208,0,3,254,0, + // 0x7dd2 緒 + 210,125,35,35,59,37,1,253,0,9,0,0,0,253,0,0,0,0,31,192,0,0,253,0,7,144,0,63,128,0,0,253,0,15,224,0,63,0,0,0,253,0,31,192,0,190,0,7,255,255,255,127,128,0,252,14,7,255,255,255,191,0,6,244,63,135,255,255,255,254,0,63,240,127,0,0,253,2,252,0,127,192,253,0,0,253,7,244,0,47,210,248,0,0,253,15,240,0,11,247,240,0,0,253,47,208,0,3,255,208,47,255,255,255,255,244,0,255,138,47,255,255,255,255,244,0,127,63,47,255,255,255,255,244,0,252,31,128,0,47,240,0,0,2,248,15,192,0,191,192,0,0,175,250,255,224,2,254,0,0,0,191,255,255,240,15,255,255,255,0,191,255,255,244,191,255,255,255,0,16,15,193,255,255,255,255,255,0,0,15,192,255,255,64,0,63,0,4,15,192,127,255,64,0,63,0,15,207,207,142,63,64,0,63,0,15,143,207,192,63,64,0,63,0,31,79,199,208,63,255,255,255,0,47,79,195,224,63,255,255,255,0,47,15,195,240,63,255,255,255,0,63,15,194,240,63,64,0,63,0,126,15,193,224,63,64,0,63,0,189,15,192,0,63,64,0,63,0,188,15,192,0,63,255,255,255,0,4,15,192,0,63,255,255,255,0,0,15,192,0,63,255,255,255,0,0,15,192,0,63,64,0,63,0,0,15,192,0,42,0,0,42,0, + // 0x7dda 線 + 218,125,35,35,59,37,1,253,0,13,0,0,0,11,144,0,0,0,31,192,0,0,15,240,0,0,0,63,64,0,0,31,224,0,0,0,63,0,0,0,47,192,0,0,0,189,4,2,255,255,255,255,192,0,252,31,66,255,255,255,255,192,26,244,63,130,254,170,170,191,192,63,240,127,2,244,0,0,31,192,127,192,253,2,244,0,0,31,192,47,210,248,2,250,170,170,175,192,11,247,240,2,255,255,255,255,192,2,255,208,2,255,255,255,255,192,0,255,133,2,244,0,0,31,192,0,127,63,2,244,0,0,31,192,0,252,47,130,244,0,0,31,192,2,248,15,194,255,255,255,255,192,175,250,255,226,255,255,255,255,192,191,255,255,242,170,175,250,170,128,191,255,255,244,0,7,240,0,0,16,15,193,248,0,7,240,2,64,0,15,192,239,255,215,244,11,224,5,15,193,79,255,247,252,47,240,15,207,207,143,255,231,253,191,128,15,143,203,192,15,215,255,254,0,31,79,199,208,15,199,255,244,0,47,79,195,224,47,135,255,208,0,47,15,195,240,127,7,235,240,0,63,15,194,240,254,7,227,248,0,62,15,193,147,252,7,225,254,0,189,15,192,15,244,7,224,191,208,252,15,192,127,224,7,224,63,248,40,15,192,63,128,11,224,11,244,0,15,192,29,3,255,224,1,224,0,15,192,0,3,255,208,0,0,0,15,192,0,2,254,64,0,0, + // 0x7de8 編 + 232,125,34,35,59,37,1,253,0,13,0,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,63,64,47,255,255,255,255,240,0,63,0,47,255,255,255,255,240,0,189,4,47,255,255,255,255,240,0,252,47,64,0,0,0,0,0,26,244,63,64,0,0,0,0,0,63,240,190,3,255,255,255,255,128,127,192,252,3,255,255,255,255,192,31,210,244,3,255,255,255,255,192,7,247,240,3,240,0,0,31,192,2,255,208,3,240,0,0,31,192,0,255,137,3,240,0,0,31,192,0,127,62,3,240,0,0,31,192,0,252,47,3,255,255,255,255,192,2,248,15,131,255,255,255,255,192,175,251,255,195,250,170,170,170,128,191,255,255,211,240,0,0,0,0,191,255,255,227,240,0,0,0,0,16,31,131,247,255,255,255,255,224,0,15,130,215,255,255,255,255,224,0,15,128,7,255,175,175,235,224,14,79,159,11,254,15,11,131,224,15,143,159,75,254,15,11,131,224,31,79,143,143,254,15,11,131,224,31,79,139,207,255,175,175,235,224,47,15,135,223,255,255,255,255,224,63,15,131,255,191,255,255,255,224,62,15,131,255,62,15,11,131,224,189,15,128,127,62,15,11,131,224,252,15,128,190,62,15,11,131,224,24,15,128,252,62,15,11,131,224,0,15,130,248,62,15,11,175,224,0,15,128,112,62,15,11,175,208,0,15,128,0,45,5,5,31,128, + // 0x7e2e 縮 + 46,126,34,35,59,37,1,253,0,9,0,0,0,15,208,0,0,0,31,192,0,0,15,208,0,0,0,47,64,0,0,15,208,0,0,0,63,0,0,0,15,208,0,0,0,189,0,31,255,255,255,255,240,0,252,30,31,255,255,255,255,240,6,244,63,95,255,255,255,255,240,63,240,127,31,128,0,0,7,240,127,208,252,31,128,0,0,7,240,47,210,248,31,174,0,0,2,160,11,247,240,0,63,255,255,255,240,3,255,208,0,63,191,255,255,240,0,255,138,0,190,191,255,255,240,0,127,63,0,252,0,47,128,0,0,252,31,65,252,0,63,64,0,2,248,15,194,248,0,63,0,0,175,251,255,195,244,0,63,0,0,191,255,255,235,244,63,255,255,208,191,255,255,255,244,63,255,255,208,16,31,130,255,244,63,255,255,208,0,15,128,191,244,63,0,11,208,0,15,129,62,244,63,0,11,208,15,143,159,21,244,63,0,11,208,15,143,143,65,244,63,170,175,208,31,79,143,129,244,63,255,255,208,47,15,139,193,244,63,255,255,208,47,15,135,209,244,63,0,11,208,63,15,131,209,244,63,0,11,208,62,15,131,209,244,63,0,11,208,189,15,128,1,244,63,0,11,208,252,15,128,1,244,63,170,175,208,24,15,128,1,244,63,255,255,208,0,15,128,1,244,63,255,255,208,0,15,128,1,244,63,0,11,208,0,15,128,1,244,42,0,5,64, + // 0x7e3d 總 + 61,126,35,35,59,37,1,253,0,13,0,0,0,11,224,0,0,0,31,192,0,0,15,240,0,0,0,63,64,0,0,15,208,0,0,0,63,0,2,170,191,234,170,128,0,189,4,7,255,255,255,255,192,0,252,47,71,255,255,255,255,192,26,244,63,71,208,7,128,11,192,63,240,190,7,208,11,128,11,192,127,192,252,7,208,15,255,203,192,31,210,244,7,215,191,255,203,192,7,247,240,7,219,253,15,139,192,2,255,208,7,210,255,95,11,192,0,255,137,7,219,239,254,11,192,0,127,62,7,219,130,253,11,192,0,252,47,7,209,7,255,139,192,2,248,15,135,208,47,219,203,192,175,251,255,199,209,255,2,11,192,191,255,255,215,208,244,0,11,192,191,255,255,231,255,255,255,255,192,16,31,131,247,255,255,255,255,192,0,15,130,214,170,190,170,170,128,0,15,129,0,0,254,0,0,0,15,143,159,0,0,191,208,0,0,15,143,143,64,0,31,248,0,0,31,79,143,193,3,242,253,44,0,47,15,139,195,243,240,180,127,0,47,15,135,195,227,240,0,63,64,63,15,131,215,227,240,0,31,192,62,15,131,155,211,240,0,15,208,189,15,128,15,195,240,3,71,240,252,15,128,31,195,240,3,227,244,20,15,128,63,67,240,7,225,248,0,15,128,127,3,255,255,208,248,0,15,128,8,2,255,255,192,128,0,15,128,0,0,111,254,0,0, + // 0x7e7c 繼 + 124,126,35,35,59,37,1,253,0,36,0,126,0,0,0,0,0,0,127,0,126,3,208,0,240,0,0,189,0,126,3,192,2,224,0,0,252,0,126,11,137,3,194,0,1,248,0,126,63,31,63,75,192,2,240,120,126,189,62,63,15,64,27,240,253,126,63,124,31,126,0,63,209,248,126,15,244,7,252,0,127,195,240,126,3,232,2,246,0,47,199,224,126,7,223,3,219,128,15,239,192,126,15,15,79,67,192,3,255,64,126,255,255,255,255,240,1,255,16,126,191,255,255,255,240,0,189,244,126,0,0,0,0,80,0,248,252,127,255,255,255,255,240,2,240,189,127,255,255,255,255,240,7,250,255,127,171,170,170,234,160,255,255,255,190,3,208,0,240,0,191,255,255,254,3,192,2,240,0,191,191,15,254,11,133,3,194,0,0,63,10,190,63,15,107,135,192,0,63,0,126,189,46,63,15,64,31,127,60,126,63,124,31,110,0,31,63,62,126,15,244,7,252,0,47,63,63,126,3,232,2,251,0,47,63,31,190,7,223,3,219,128,63,63,15,254,15,11,75,131,192,62,63,15,254,255,255,255,255,240,125,63,15,254,191,255,255,255,244,188,63,4,126,21,1,133,64,96,188,63,0,126,0,0,0,0,0,0,63,0,127,255,255,255,255,244,0,63,0,127,255,255,255,255,244,0,63,0,127,170,170,170,170,160,0,63,0,126,0,0,0,0,0, + // 0x7e8c 續 + 140,126,34,35,59,37,1,253,0,13,0,0,0,15,192,0,0,0,47,192,0,0,15,192,0,0,0,63,64,63,255,255,255,255,240,0,127,0,63,255,255,255,255,240,0,252,4,0,0,31,208,0,0,1,248,47,64,0,15,192,0,0,11,240,63,3,255,255,255,255,128,63,224,190,3,255,255,255,255,128,127,192,252,0,0,0,0,0,0,47,211,244,11,255,255,255,255,208,15,251,224,15,255,255,255,255,208,3,255,192,15,192,244,124,7,208,1,255,156,15,194,240,126,91,208,0,191,62,15,239,192,47,255,208,0,188,47,15,201,0,0,7,208,0,244,31,143,255,255,255,255,208,3,250,175,203,255,255,255,255,208,191,255,255,208,0,0,0,0,0,127,255,255,226,255,255,255,255,0,127,255,195,226,255,255,255,255,64,0,15,193,66,244,0,0,63,64,0,15,193,2,250,170,170,191,64,15,143,223,2,255,255,255,255,64,15,143,207,66,244,0,0,63,64,31,79,207,130,244,0,0,63,64,47,15,203,194,255,255,255,255,64,47,15,199,194,250,170,170,191,64,63,15,195,210,244,0,0,63,64,62,15,193,2,255,255,255,255,64,189,15,192,2,255,255,255,255,0,252,15,192,0,31,192,15,224,0,24,15,192,2,255,224,31,254,0,0,15,192,191,254,0,2,255,224,0,15,192,191,224,0,0,47,240,0,15,128,41,0,0,0,3,128, + // 0x7ea2 红 + 162,126,35,34,50,37,1,254,0,1,128,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,15,240,1,85,85,85,85,64,0,31,224,7,255,255,255,255,224,0,63,192,7,255,255,255,255,224,0,127,128,7,255,255,255,255,224,0,255,0,0,0,11,240,0,0,1,253,3,128,0,11,240,0,0,3,248,7,244,0,11,240,0,0,11,240,15,240,0,11,240,0,0,31,208,47,224,0,11,240,0,0,191,255,255,192,0,11,240,0,0,127,255,255,0,0,11,240,0,0,63,255,253,0,0,11,240,0,0,41,71,248,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,255,64,0,0,11,240,0,0,3,253,0,80,0,11,240,0,0,11,254,191,240,0,11,240,0,0,63,255,255,240,0,11,240,0,0,63,255,255,224,0,11,240,0,0,63,254,144,0,0,11,240,0,0,41,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,27,208,0,11,240,0,0,0,107,255,224,0,11,240,0,0,127,255,255,239,255,255,255,255,244,127,255,254,79,255,255,255,255,244,63,254,64,15,255,255,255,255,244,57,64,0,5,85,85,85,85,80,0,0,0,0,0,0,0,0,0, + // 0x7f6e 置 + 110,127,34,35,59,37,2,252,5,85,85,85,85,85,85,84,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,11,224,7,240,3,240,1,252,0,11,224,7,240,3,240,1,252,0,11,224,7,240,3,240,1,252,0,11,255,255,255,255,255,255,252,0,11,255,255,255,255,255,255,252,0,5,85,85,87,253,85,85,84,0,0,0,0,3,248,0,0,0,0,106,170,170,171,254,170,170,170,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,0,0,0,7,240,0,0,0,0,0,0,0,11,224,0,0,0,0,6,160,63,255,255,255,255,224,0,7,240,63,255,255,255,255,224,0,7,240,63,64,0,0,11,224,0,7,240,63,255,255,255,255,224,0,7,240,63,255,255,255,255,224,0,7,240,63,64,0,0,11,224,0,7,240,63,64,0,0,11,224,0,7,240,63,255,255,255,255,224,0,7,240,63,255,255,255,255,224,0,7,240,63,64,0,0,11,224,0,7,240,63,64,0,0,11,224,0,7,240,63,255,255,255,255,224,0,7,240,47,255,255,255,255,224,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,255,255,255,255,255,255,255,208,7,255,255,255,255,255,255,255,208,7,250,170,170,170,170,170,170,128,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x7f72 署 + 114,127,34,34,50,37,1,253,1,85,85,85,85,85,85,85,0,2,255,255,255,255,255,255,255,0,2,255,255,255,255,255,255,255,0,2,244,1,248,0,252,0,127,0,2,244,1,248,0,252,0,127,0,2,244,1,248,0,252,0,127,0,2,255,255,255,255,255,255,255,0,2,255,255,255,255,255,255,255,0,1,85,85,91,245,85,85,85,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,56,0,0,63,255,255,255,255,240,255,0,0,63,255,255,255,255,247,253,0,0,42,170,175,250,170,255,244,0,0,0,0,7,240,1,255,192,0,0,0,0,7,240,15,254,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,47,255,255,255,255,255,255,255,224,0,0,0,47,255,192,0,0,0,0,0,7,255,253,0,0,0,0,0,1,191,255,255,255,255,248,0,1,191,255,255,255,255,255,248,0,127,255,255,170,170,170,171,248,0,63,255,191,0,0,0,2,248,0,31,144,63,0,0,0,3,248,0,0,0,63,255,255,255,255,248,0,0,0,63,255,255,255,255,248,0,0,0,63,0,0,0,2,248,0,0,0,63,0,0,0,2,248,0,0,0,63,255,255,255,255,248,0,0,0,63,255,255,255,255,248,0,0,0,63,170,170,170,171,248,0,0,0,42,0,0,0,1,164,0, + // 0x8070 聰 + 112,128,35,36,68,37,1,252,0,0,0,0,0,7,224,0,0,0,0,0,0,0,11,240,0,0,63,255,255,253,0,15,224,0,0,63,255,255,254,170,175,234,170,128,63,255,255,255,255,255,255,255,192,3,240,15,209,255,255,255,255,192,3,240,15,209,244,3,192,11,192,3,240,15,209,244,7,192,11,192,3,240,15,209,244,15,255,203,192,3,255,255,209,245,255,175,203,192,3,255,255,209,245,254,15,75,192,3,255,255,209,246,255,175,11,192,3,240,15,209,246,199,252,11,192,3,240,15,209,244,1,253,11,192,3,240,15,209,244,7,255,75,192,3,240,15,209,244,63,135,11,192,3,240,15,209,244,189,0,11,192,3,255,255,209,250,186,170,175,192,3,255,255,209,255,255,255,255,192,3,255,255,209,255,255,255,255,192,3,240,15,208,0,47,128,0,0,3,240,15,208,0,63,240,0,0,3,240,15,208,0,11,253,0,0,3,240,15,208,0,165,255,0,0,3,240,15,208,81,248,61,29,0,3,246,255,208,253,248,4,127,0,111,255,255,208,248,248,0,63,64,127,255,255,209,244,248,0,31,192,127,254,95,210,240,248,0,15,208,57,64,15,211,240,248,2,231,240,0,0,15,219,224,248,2,243,240,0,0,15,239,192,248,3,242,248,0,0,15,239,128,255,255,225,248,0,0,15,210,0,255,255,192,128,0,0,15,208,0,26,170,64,0,0,0,0,0,0,0,0,0,0, + // 0x81ea 自 + 234,129,26,36,252,37,6,252,0,0,11,224,0,0,0,0,0,15,240,0,0,0,0,0,15,224,0,0,0,0,0,31,208,0,0,0,0,0,47,192,0,0,0,255,255,255,255,255,255,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,254,85,85,85,85,95,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,255,255,255,255,255,255,224,253,0,0,0,0,15,224,253,0,0,0,0,15,224,0,0,0,0,0,0,0, + // 0x85cd 藍 + 205,133,33,34,50,37,2,254,0,0,127,0,0,63,64,0,0,0,0,127,0,0,63,64,0,0,191,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,127,0,0,63,64,0,0,0,0,127,0,0,63,64,0,0,0,0,21,0,0,36,0,0,0,15,255,255,255,192,191,0,0,0,15,255,255,255,192,253,0,0,0,15,128,188,0,1,252,0,0,0,15,128,188,0,3,255,255,255,64,15,255,255,255,11,255,255,255,64,15,255,255,255,15,255,255,255,64,15,128,0,47,63,192,0,0,0,15,128,0,47,191,64,0,0,0,15,255,255,255,29,0,0,0,0,15,255,255,255,0,0,0,0,0,15,128,188,0,1,255,255,254,0,15,128,189,0,1,255,255,254,0,15,255,255,255,209,255,255,253,0,15,255,255,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,170,170,170,170,144,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,252,1,244,3,224,15,224,0,0,252,1,244,3,224,15,224,0,0,252,1,244,3,224,15,224,0,0,252,1,244,3,224,15,224,0,0,252,1,244,3,224,15,224,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x884c 行 + 76,136,34,36,68,37,1,252,0,0,180,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,7,252,2,255,255,255,255,192,0,31,240,2,255,255,255,255,192,0,127,208,2,255,255,255,255,192,2,255,64,0,85,85,85,85,64,11,253,0,0,0,0,0,0,0,63,244,0,0,0,0,0,0,0,127,208,14,0,0,0,0,0,0,47,0,63,192,0,0,0,0,0,8,0,127,128,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,3,253,5,85,85,85,85,80,0,11,248,31,255,255,255,255,240,0,47,240,31,255,255,255,255,240,0,127,208,31,255,255,255,255,240,1,255,208,0,0,0,47,192,0,11,255,208,0,0,0,47,192,0,47,255,208,0,0,0,47,192,0,255,239,208,0,0,0,47,192,0,127,143,208,0,0,0,47,192,0,30,15,208,0,0,0,47,192,0,4,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,0,0,47,192,0,0,15,208,0,1,85,127,192,0,0,15,208,0,2,255,255,128,0,0,15,208,0,1,255,255,64,0,0,15,208,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0, + // 0x8868 表 + 104,136,35,35,59,37,1,253,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,7,255,255,255,255,255,255,255,64,7,255,255,255,255,255,255,255,64,7,255,255,255,255,255,255,255,64,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,127,255,255,255,255,255,252,0,0,191,255,255,255,255,255,252,0,0,191,255,255,255,255,255,252,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,47,255,255,255,255,255,255,255,224,0,0,0,127,239,192,0,0,0,0,0,2,255,143,224,0,28,0,0,0,31,253,7,240,0,191,0,0,0,255,240,3,244,2,255,64,0,27,255,192,2,252,31,253,0,1,255,255,128,1,253,191,224,0,111,255,255,128,0,255,255,64,0,127,254,63,128,0,127,248,0,0,47,208,63,128,0,47,224,0,0,9,0,63,128,0,15,244,0,0,0,0,63,128,0,71,253,0,0,0,0,63,128,111,210,255,128,0,0,0,63,239,255,208,191,244,0,0,0,127,255,255,208,47,254,64,0,127,255,255,249,0,7,255,244,0,191,255,249,0,0,0,255,240,0,127,249,0,0,0,0,31,208,0,57,0,0,0,0,0,1,128, + // 0x88ab 被 + 171,136,35,35,59,37,1,253,0,31,128,0,0,3,244,0,0,0,31,192,0,0,3,244,0,0,0,31,192,0,0,3,244,0,0,0,31,192,0,0,3,244,0,0,0,31,192,0,0,3,244,0,0,0,31,192,0,0,3,244,0,0,0,47,192,3,255,255,255,255,244,63,255,255,195,255,255,255,255,240,63,255,255,211,255,255,255,255,240,63,255,255,195,244,3,244,11,224,0,0,47,131,244,3,244,15,208,0,0,127,3,244,3,244,15,192,0,0,254,3,244,3,244,31,192,0,1,252,3,244,3,244,27,64,0,3,248,147,244,3,244,0,0,0,15,240,251,255,255,255,255,128,0,47,227,243,255,255,255,255,192,0,191,251,211,255,255,255,255,128,1,255,255,131,255,224,0,63,64,7,255,255,3,251,240,0,191,0,47,255,239,195,243,244,0,254,0,255,239,207,227,241,252,1,252,0,127,95,195,231,240,253,3,252,0,60,31,194,135,240,191,11,244,0,16,31,192,11,224,63,223,224,0,0,31,192,15,208,31,255,192,0,0,31,192,15,192,15,255,64,0,0,31,192,31,192,3,255,0,0,0,31,192,47,128,15,255,128,0,0,31,192,63,64,127,255,240,0,0,31,192,191,2,255,239,254,0,0,31,192,254,47,254,7,255,224,0,31,194,252,191,244,0,255,244,0,31,193,244,63,128,0,31,224,0,31,192,32,8,0,0,1,192, + // 0x88c5 装 + 197,136,35,36,68,37,1,252,0,0,42,0,0,10,144,0,0,0,0,127,0,0,15,208,0,0,2,0,127,0,0,15,208,0,0,15,208,127,0,0,15,208,0,0,15,248,127,0,0,15,208,0,0,3,254,127,31,255,255,255,255,240,0,189,127,31,255,255,255,255,240,0,36,127,31,255,255,255,255,240,0,0,127,0,0,15,208,0,0,0,0,127,0,0,15,208,0,0,0,7,127,0,0,15,208,0,0,1,191,191,0,0,15,208,0,0,31,255,191,0,0,15,208,0,0,127,248,127,7,255,255,255,255,192,63,64,127,7,255,255,255,255,192,20,0,127,7,255,255,255,255,192,0,0,127,0,0,0,0,0,0,0,0,42,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,42,170,170,255,255,234,170,170,160,0,0,2,255,95,192,0,56,0,0,0,47,248,11,224,1,255,0,0,7,255,208,3,248,31,253,0,6,255,255,64,1,253,191,224,0,127,255,255,64,0,191,254,0,0,31,244,63,64,0,47,244,0,0,9,0,63,64,1,11,254,0,0,0,0,63,171,255,2,255,208,0,0,26,255,255,255,64,127,255,128,0,63,255,255,250,0,11,255,244,0,63,255,148,0,0,0,191,224,0,21,0,0,0,0,0,6,192,0,0,0,0,0,0,0,0,0, + // 0x88dd 裝 + 221,136,35,36,68,37,1,252,1,80,11,208,0,11,224,0,0,3,240,15,208,0,11,240,0,0,3,240,15,208,0,11,240,0,0,3,240,15,208,0,11,240,0,0,3,240,15,208,0,11,240,0,0,3,255,255,211,255,255,255,255,224,3,255,255,211,255,255,255,255,224,3,250,175,211,255,255,255,255,224,1,80,15,208,0,11,240,0,0,0,0,15,208,0,11,240,0,0,63,255,255,208,0,11,240,0,0,63,255,255,208,0,11,240,0,0,43,254,175,208,0,11,240,0,0,2,248,15,208,0,11,240,0,0,3,244,15,209,255,255,255,255,192,7,240,15,209,255,255,255,255,192,15,224,15,209,255,255,255,255,192,127,192,15,208,0,0,0,0,0,63,0,15,208,253,0,0,0,0,4,0,0,0,253,0,0,0,0,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,240,42,170,170,255,255,234,170,170,160,0,0,7,255,31,192,0,56,0,0,0,127,248,11,224,1,255,0,0,27,255,192,3,248,31,253,0,27,255,255,64,1,254,191,224,0,63,255,191,64,0,191,254,0,0,31,224,63,64,0,47,244,0,0,4,0,63,64,22,75,254,0,0,0,0,63,175,255,130,255,224,0,0,107,255,255,255,128,127,255,128,0,127,255,255,233,0,11,255,244,0,127,250,80,0,0,0,191,224,0,16,0,0,0,0,0,6,192,0,0,0,0,0,0,0,0,0, + // 0x8907 複 + 7,137,35,36,68,37,1,252,0,26,64,0,26,64,0,0,0,0,47,64,0,47,192,0,0,0,0,47,64,0,63,64,0,0,0,0,47,64,0,191,0,0,0,0,0,47,64,0,255,255,255,255,240,0,47,64,2,255,255,255,255,240,0,47,64,3,255,255,255,255,240,0,47,64,15,224,0,0,0,0,63,255,255,47,208,0,0,0,0,63,255,255,255,255,255,255,255,0,63,255,255,46,255,255,255,255,0,0,0,125,4,252,0,0,63,0,0,0,252,0,252,0,0,63,0,0,2,244,0,255,255,255,255,0,0,3,240,192,255,255,255,255,0,0,15,210,240,253,0,0,127,0,0,47,215,208,252,0,0,63,0,0,127,255,128,255,255,255,255,0,0,255,255,0,255,255,255,255,0,3,255,254,0,1,254,0,0,0,11,255,191,0,3,252,0,0,0,47,255,95,192,11,248,0,0,0,127,239,79,192,31,255,255,253,0,191,47,71,64,191,255,255,255,0,61,47,65,2,255,170,171,252,0,20,47,64,31,255,192,7,248,0,0,47,64,191,239,240,31,240,0,0,47,64,47,3,253,191,192,0,0,47,64,4,0,255,255,0,0,0,47,64,0,0,191,252,0,0,0,47,64,0,27,255,255,208,0,0,47,64,26,255,254,255,255,144,0,47,64,255,255,224,31,255,248,0,47,64,127,249,0,1,255,240,0,47,64,46,0,0,0,6,192,0,0,0,0,0,0,0,0,0, + // 0x89d2 角 + 210,137,32,36,32,37,1,252,0,0,7,228,0,0,0,0,0,0,15,244,0,0,0,0,0,0,31,255,255,253,0,0,0,0,63,255,255,255,128,0,0,0,255,255,255,255,64,0,0,1,254,0,0,255,0,0,0,7,252,0,2,253,0,0,0,15,244,0,3,248,0,0,0,63,224,0,15,240,0,0,1,255,255,255,255,255,255,253,7,255,255,255,255,255,255,253,47,255,255,255,255,255,255,253,15,239,208,0,63,0,0,253,3,79,208,0,63,0,0,253,0,15,208,0,63,0,0,253,0,15,208,0,63,0,0,253,0,15,255,255,255,255,255,253,0,15,255,255,255,255,255,253,0,15,255,255,255,255,255,253,0,15,208,0,63,0,0,253,0,15,208,0,63,0,0,253,0,15,192,0,63,0,0,253,0,15,192,0,63,0,0,253,0,31,192,0,127,0,0,253,0,47,255,255,255,255,255,253,0,63,255,255,255,255,255,253,0,63,255,255,255,255,255,253,0,127,0,0,0,0,0,253,0,254,0,0,0,0,0,253,2,253,0,0,0,0,0,253,7,248,0,0,0,0,0,253,31,240,0,0,0,20,2,253,127,208,0,0,0,127,255,252,63,128,0,0,0,63,255,248,13,0,0,0,0,47,255,144,0,0,0,0,0,0,0,0, + // 0x8a08 計 + 8,138,35,35,59,37,1,253,0,0,0,0,0,1,248,0,0,6,170,170,160,0,2,252,0,0,11,255,255,240,0,2,252,0,0,11,255,255,240,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,106,170,170,168,0,2,252,0,0,191,255,255,252,0,2,252,0,0,191,255,255,252,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,10,170,170,160,0,2,252,0,0,15,255,255,240,0,2,252,0,0,15,255,255,243,255,255,255,255,252,0,0,0,3,255,255,255,255,252,0,0,0,3,255,255,255,255,252,10,170,170,161,85,87,253,85,84,15,255,255,240,0,2,252,0,0,15,255,255,240,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,15,255,255,224,0,2,252,0,0,15,255,255,224,0,2,252,0,0,15,255,255,224,0,2,252,0,0,15,192,7,224,0,2,252,0,0,15,192,7,224,0,2,252,0,0,15,192,7,224,0,2,252,0,0,15,192,7,224,0,2,252,0,0,15,192,7,224,0,2,252,0,0,15,255,255,224,0,2,252,0,0,15,255,255,224,0,2,252,0,0,15,255,255,224,0,2,252,0,0,15,192,0,0,0,2,252,0,0,5,64,0,0,0,2,252,0,0, + // 0x8a0a 訊 + 10,138,36,35,59,37,1,252,6,170,170,129,85,85,85,80,0,11,255,255,199,255,255,255,252,0,11,255,255,199,255,255,255,252,0,0,0,0,7,255,255,255,252,0,0,0,0,0,3,240,2,252,0,106,170,170,160,3,240,2,252,0,191,255,255,244,3,240,2,248,0,191,255,255,244,3,240,2,248,0,0,0,0,0,3,240,2,248,0,0,0,0,0,3,240,2,248,0,10,170,170,128,3,240,2,248,0,15,255,255,192,3,240,2,248,0,15,255,255,192,3,240,2,248,0,0,0,0,0,7,244,2,248,0,0,0,0,11,255,255,246,248,0,10,170,170,139,255,255,246,248,0,15,255,255,203,255,255,246,248,0,15,255,255,192,7,240,2,252,0,0,0,0,0,11,240,2,252,0,0,0,0,0,11,224,2,252,0,0,0,0,0,15,224,1,252,0,15,255,255,192,15,208,1,252,0,15,255,255,192,31,192,1,252,0,15,255,255,192,47,192,1,252,0,15,192,15,192,63,128,0,252,0,15,192,15,192,127,64,0,253,32,15,192,15,192,255,0,0,253,40,15,192,15,192,254,0,0,254,61,15,192,15,195,252,0,0,191,61,15,255,255,203,248,0,0,127,124,15,255,255,223,240,0,0,63,252,15,255,255,255,208,0,0,47,248,15,192,0,15,64,0,0,15,240,5,64,0,2,0,0,0,2,208,0,0,0,0,0,0,0,0,0, + // 0x8a18 記 + 24,138,35,34,50,37,1,253,6,170,170,160,0,0,0,0,0,11,255,255,240,63,255,255,255,128,11,255,255,240,63,255,255,255,128,0,0,0,0,63,255,255,255,128,0,0,0,0,21,85,85,127,128,106,170,170,168,0,0,0,63,128,191,255,255,252,0,0,0,63,128,191,255,255,252,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,10,170,170,160,0,0,0,63,128,15,255,255,240,0,0,0,63,128,15,255,255,240,0,0,0,63,128,0,0,0,0,63,255,255,255,128,0,0,0,0,63,255,255,255,128,10,170,170,160,63,255,255,255,128,15,255,255,240,63,149,85,127,128,15,255,255,240,63,128,0,63,128,0,0,0,0,63,128,0,5,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,15,255,255,224,63,128,0,0,0,15,255,255,224,63,128,0,0,0,15,255,255,224,63,128,0,0,0,15,192,7,224,63,128,0,1,64,15,192,7,224,63,128,0,2,244,15,192,7,224,63,128,0,3,248,15,192,7,224,63,128,0,3,244,15,192,7,224,63,128,0,3,244,15,255,255,224,63,192,0,11,240,15,255,255,224,47,255,255,255,240,15,255,255,224,15,255,255,255,208,15,192,0,0,7,255,255,255,64,5,64,0,0,0,5,85,64,0, + // 0x8a2d 設 + 45,138,35,34,50,37,1,253,6,170,170,128,63,255,255,192,0,11,255,255,192,63,255,255,192,0,11,255,255,192,63,255,255,192,0,0,0,0,0,63,64,31,192,0,0,0,0,0,63,64,15,192,0,106,170,170,164,63,64,15,192,0,191,255,255,248,63,64,15,192,128,191,255,255,248,63,0,15,192,248,0,0,0,0,127,0,15,192,248,0,0,0,0,255,0,15,193,244,10,170,170,130,253,0,15,255,244,15,255,255,219,252,0,15,255,240,15,255,255,255,244,0,3,255,192,0,0,0,15,224,0,0,0,0,0,0,0,3,128,0,0,0,0,10,170,170,131,255,255,255,254,0,15,255,255,211,255,255,255,255,64,15,255,255,211,255,255,255,255,0,0,0,0,0,7,0,0,255,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,128,2,252,0,15,255,255,208,31,208,3,248,0,15,255,255,208,15,240,15,240,0,15,255,255,208,7,248,47,224,0,15,192,11,208,2,254,127,192,0,15,192,11,208,0,255,255,0,0,15,192,11,208,0,63,253,0,0,15,192,11,208,0,127,253,0,0,15,192,11,208,2,255,255,128,0,15,255,255,208,111,255,191,249,0,15,255,255,235,255,244,31,255,224,15,255,255,223,255,128,2,255,240,15,192,0,11,248,0,0,47,208,5,64,0,2,64,0,0,1,128, + // 0x8a66 試 + 102,138,35,36,68,37,1,252,0,0,0,0,0,0,63,133,0,10,170,170,64,0,0,63,191,0,11,255,255,128,0,0,47,175,192,11,255,255,128,0,0,47,139,224,0,0,0,0,0,0,47,131,244,0,0,0,0,0,0,47,129,224,106,170,170,144,0,0,47,128,0,191,255,255,234,170,170,191,234,160,191,255,255,239,255,255,255,255,240,0,0,0,15,255,255,255,255,240,0,0,0,15,255,255,255,255,240,10,170,170,64,0,0,47,128,0,15,255,255,128,0,0,47,128,0,15,255,255,128,0,0,47,128,0,0,0,0,0,0,0,47,128,0,0,0,0,11,255,255,95,128,0,10,170,170,139,255,255,95,128,0,15,255,255,139,255,255,95,192,0,15,255,255,128,15,192,31,192,0,0,0,0,0,15,192,15,192,0,0,0,0,0,15,192,15,192,0,0,0,0,0,15,192,15,192,0,15,255,255,128,15,192,15,192,0,15,255,255,128,15,192,15,208,0,15,255,255,128,15,192,15,208,0,15,192,15,128,15,192,11,224,0,15,192,15,128,15,192,7,224,64,15,192,15,128,15,218,215,240,116,15,192,15,128,111,255,211,240,188,15,192,15,159,255,255,211,244,252,15,255,255,143,255,249,2,253,248,15,255,255,143,249,0,0,255,244,15,255,255,132,0,0,0,255,240,15,192,0,0,0,0,0,63,224,5,64,0,0,0,0,0,11,128,0,0,0,0,0,0,0,0,0, + // 0x8a8d 認 + 141,138,35,34,50,37,1,253,10,170,170,64,0,0,0,0,0,11,255,255,130,255,255,255,255,208,11,255,255,130,255,255,255,255,192,0,0,0,2,255,255,255,255,192,0,0,0,0,0,63,64,15,192,106,170,170,160,228,63,0,15,192,191,255,255,225,255,254,0,15,192,191,255,255,225,255,253,0,15,192,0,0,0,0,31,255,128,31,192,0,0,0,0,3,255,240,31,192,10,170,170,64,3,255,252,31,192,15,255,255,128,11,247,248,47,128,15,255,255,128,31,208,176,63,128,0,0,0,0,127,192,16,63,64,0,0,0,2,255,0,191,255,0,10,170,170,79,252,0,63,254,0,15,255,255,135,240,40,63,248,0,15,255,255,130,64,191,64,0,0,0,0,0,0,0,191,224,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,2,255,0,0,15,255,255,128,3,240,126,0,0,15,255,255,129,67,240,24,125,0,15,255,255,130,243,240,0,191,0,15,192,15,131,243,240,0,63,64,15,192,15,131,243,240,0,47,192,15,192,15,135,227,240,0,15,224,15,192,15,139,211,240,3,71,240,15,192,15,143,195,240,3,243,244,15,255,255,175,131,240,3,242,248,15,255,255,175,3,244,7,241,252,15,255,255,133,3,255,255,224,224,15,192,0,0,1,255,255,192,0,5,64,0,0,0,191,255,64,0, + // 0x8aa4 誤 + 164,138,35,34,50,37,1,253,6,170,170,0,0,127,255,255,128,11,255,255,0,0,127,255,255,192,11,255,255,0,0,127,255,255,192,0,0,0,3,240,126,0,31,192,0,0,0,3,240,126,0,31,192,106,170,170,131,240,126,0,31,192,191,255,255,195,240,126,0,31,192,191,255,255,195,240,126,0,31,192,0,0,0,3,240,127,255,255,192,0,0,0,3,240,127,255,255,192,10,170,170,3,240,127,255,255,192,15,255,255,3,240,0,0,0,0,15,255,255,3,240,0,0,0,0,0,0,0,3,240,0,0,0,0,0,0,0,3,255,255,255,254,0,10,170,170,3,255,255,255,254,0,15,255,255,3,255,255,255,254,0,15,255,255,3,240,0,0,190,0,0,0,0,3,240,0,0,190,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,190,0,15,255,255,31,255,255,255,255,248,15,255,255,31,255,255,255,255,248,15,255,255,31,255,255,255,255,248,15,192,47,0,0,0,0,0,0,15,192,47,0,3,128,1,192,0,15,192,47,0,15,240,15,240,0,15,192,47,0,47,224,7,252,0,15,192,47,0,191,192,1,255,0,15,255,255,2,255,0,0,191,192,15,255,255,15,252,0,0,47,224,15,234,170,63,240,0,0,15,244,15,192,0,31,192,0,0,3,244,5,64,0,6,0,0,0,1,64, + // 0x8abf 調 + 191,138,34,35,59,37,1,252,10,170,169,0,0,0,0,0,0,15,255,253,15,255,255,255,255,208,15,255,253,15,255,255,255,255,208,0,0,0,15,255,255,255,255,208,0,0,0,15,192,11,192,15,208,106,170,170,79,192,15,192,15,208,191,255,255,79,192,15,192,15,208,191,255,255,79,195,255,255,79,208,0,0,0,15,195,255,255,79,208,0,0,0,15,194,175,234,79,208,10,170,169,15,192,15,192,15,208,15,255,253,15,192,15,192,15,208,15,255,253,15,192,15,192,15,208,0,0,0,15,199,255,255,207,208,0,0,0,15,199,255,255,207,208,10,170,169,15,198,170,170,143,208,15,255,253,15,192,0,0,15,208,15,255,253,15,192,0,0,15,208,0,0,0,15,195,255,255,79,208,0,0,0,15,195,255,255,79,208,0,0,0,15,195,250,175,79,208,15,255,253,15,195,224,15,79,208,15,255,253,15,195,224,15,79,208,15,255,253,31,195,224,15,79,208,15,128,125,47,131,224,15,79,208,15,128,125,47,67,250,175,79,208,15,128,125,63,67,255,255,79,208,15,128,125,63,3,255,255,79,208,15,128,125,127,3,224,0,15,208,15,255,253,254,1,64,0,15,208,15,255,254,253,0,0,5,95,208,15,234,171,252,0,0,31,255,192,15,128,1,248,0,0,15,255,192,5,64,0,48,0,0,15,254,0,0,0,0,0,0,0,0,0,0, + // 0x8acb 請 + 203,138,35,35,59,37,1,253,0,0,0,0,0,7,240,0,0,6,170,170,128,0,7,240,0,0,11,255,255,193,170,171,250,170,144,11,255,255,195,255,255,255,255,224,0,0,0,3,255,255,255,255,224,0,0,0,0,0,7,240,0,0,106,170,170,160,0,7,240,0,0,191,255,255,244,255,255,255,255,192,191,255,255,244,255,255,255,255,192,0,0,0,0,85,91,245,85,64,0,0,0,0,0,7,240,0,0,10,170,170,134,170,171,250,170,160,15,255,255,207,255,255,255,255,244,15,255,255,207,255,255,255,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,170,170,128,63,255,255,255,0,15,255,255,192,63,255,255,255,0,15,255,255,192,63,170,170,191,0,0,0,0,0,63,0,0,63,0,0,0,0,0,63,85,85,127,0,0,0,0,0,63,255,255,255,0,15,255,255,192,63,255,255,255,0,15,255,255,192,63,0,0,63,0,15,255,255,192,63,0,0,63,0,15,192,15,192,63,85,85,127,0,15,192,15,192,63,255,255,255,0,15,192,15,192,63,255,255,255,0,15,192,15,192,63,0,0,63,0,15,192,15,192,63,0,0,63,0,15,255,255,192,63,0,0,63,0,15,255,255,192,63,0,0,63,0,15,255,255,192,63,0,63,255,0,15,192,0,0,63,0,31,254,0,5,64,0,0,63,0,10,164,0, + // 0x8b70 議 + 112,139,35,35,59,37,1,253,0,0,0,0,44,0,1,224,0,10,170,169,0,127,0,3,248,0,15,255,253,0,47,64,7,240,0,15,255,253,5,111,213,95,229,64,0,0,0,31,255,255,255,255,208,0,0,0,31,255,255,255,255,208,106,170,170,64,0,31,192,0,0,191,255,255,64,0,31,192,0,0,191,255,255,67,255,255,255,255,64,0,0,0,3,255,255,255,255,64,0,0,0,0,0,47,192,0,0,10,170,169,0,0,31,192,0,0,15,255,253,106,170,175,234,170,160,15,255,253,191,255,255,255,255,240,0,0,0,191,255,255,255,255,240,0,0,0,0,0,16,0,0,0,10,170,169,0,91,248,252,40,0,15,255,253,63,255,253,252,191,0,15,255,253,47,255,144,252,47,192,0,0,0,0,47,64,188,11,224,0,0,0,0,47,64,188,2,128,0,0,0,106,191,170,254,170,160,15,255,253,191,255,255,255,255,240,15,255,253,191,255,255,255,255,240,15,255,253,0,47,64,62,0,0,15,128,125,0,47,65,63,31,0,15,128,125,1,127,255,63,63,64,15,128,125,255,255,255,47,254,0,15,128,125,191,255,228,31,248,0,15,128,125,105,127,64,31,224,80,15,255,253,0,47,64,127,208,184,15,255,253,0,47,71,255,240,244,15,234,169,5,127,47,243,255,240,15,128,0,15,255,15,64,255,240,5,64,0,15,248,0,0,47,128, + // 0x8b80 讀 + 128,139,35,35,59,37,1,253,0,0,0,0,0,15,192,0,0,10,170,169,0,0,15,192,0,0,15,255,253,31,255,255,255,255,240,15,255,253,31,255,255,255,255,240,0,0,0,5,85,95,213,85,64,0,0,0,0,0,31,192,0,0,106,170,170,67,255,255,255,255,192,191,255,255,67,255,255,255,255,192,191,255,255,64,0,0,0,0,0,0,0,0,31,255,255,255,255,224,0,0,0,31,255,255,255,255,224,10,170,169,31,64,240,124,7,224,15,255,253,31,71,240,125,91,224,15,255,253,31,191,128,63,255,224,0,0,0,31,84,0,0,7,224,0,0,0,31,255,255,255,255,224,10,170,169,31,255,255,255,255,224,15,255,253,0,0,0,0,0,0,15,255,253,3,255,255,255,255,128,0,0,0,3,255,255,255,255,128,0,0,0,3,240,0,0,47,128,0,0,0,3,245,85,85,127,128,15,255,253,3,255,255,255,255,128,15,255,253,3,240,0,0,47,128,15,255,253,3,245,85,85,127,128,15,128,125,3,255,255,255,255,128,15,128,125,3,240,0,0,47,128,15,128,125,3,255,255,255,255,128,15,128,125,3,255,255,255,255,128,15,128,125,0,11,64,11,128,0,15,255,253,0,127,224,47,248,0,15,255,253,11,255,128,7,255,64,15,234,169,255,252,0,0,191,244,15,128,0,127,208,0,0,15,240,5,64,0,24,0,0,0,1,64, + // 0x8b8a 變 + 138,139,35,36,68,37,1,252,0,41,0,0,0,0,10,64,0,0,63,0,47,255,208,15,128,0,0,188,0,47,255,208,63,0,0,5,244,160,0,0,1,188,46,0,31,225,252,255,255,255,244,127,0,15,211,240,255,255,255,244,252,0,7,255,192,0,0,1,255,240,0,1,255,64,0,0,0,127,197,0,0,189,120,63,255,208,47,47,0,0,244,61,47,255,208,125,15,192,23,255,255,0,0,5,255,255,224,63,255,255,191,255,239,255,255,240,63,255,71,111,255,223,255,208,240,0,31,0,0,0,0,11,192,0,6,95,108,47,255,210,155,203,64,15,223,61,63,255,227,235,207,192,15,95,47,61,3,231,203,195,208,47,31,15,125,3,235,203,194,240,63,31,9,63,255,239,75,193,244,61,31,3,255,255,235,11,192,224,4,31,15,240,0,0,11,192,0,0,26,47,208,0,0,6,128,0,0,0,191,255,255,255,255,255,192,0,3,255,255,255,255,255,255,192,0,31,255,255,255,255,255,255,192,1,255,254,0,0,11,248,0,0,31,255,191,208,0,63,224,0,0,15,244,31,253,2,255,128,0,0,3,128,2,255,239,253,0,0,0,0,0,0,127,255,240,0,0,0,0,0,6,255,255,254,144,0,0,1,107,255,255,239,255,255,169,64,127,255,255,248,0,191,255,255,244,47,255,249,0,0,1,191,255,224,15,164,0,0,0,0,0,91,192,0,0,0,0,0,0,0,0,0, + // 0x8cc7 資 + 199,140,33,36,68,37,2,252,0,0,0,1,248,0,0,0,0,11,224,0,3,244,0,0,0,0,31,255,128,11,245,85,85,89,0,6,255,244,31,255,255,255,255,64,0,31,240,127,255,255,255,254,0,0,1,225,254,2,252,0,252,0,0,0,3,252,3,254,3,248,0,0,0,0,240,11,255,7,240,0,0,6,240,0,47,255,192,128,0,1,191,244,0,191,143,244,0,0,191,255,244,27,255,3,255,128,0,255,254,67,255,248,0,255,254,128,127,144,2,255,128,0,47,255,192,36,0,1,249,0,0,6,255,0,0,127,255,255,255,255,255,197,0,0,127,255,255,255,255,255,192,0,0,127,0,0,0,0,47,192,0,0,127,0,0,0,0,47,192,0,0,127,255,255,255,255,255,192,0,0,127,255,255,255,255,255,192,0,0,127,0,0,0,0,47,192,0,0,127,0,0,0,0,47,192,0,0,127,255,255,255,255,255,192,0,0,127,255,255,255,255,255,192,0,0,127,0,0,0,0,47,192,0,0,127,0,0,0,0,47,192,0,0,127,0,0,0,0,47,192,0,0,127,255,255,255,255,255,192,0,0,127,255,255,255,255,255,192,0,0,0,30,0,0,41,0,0,0,0,2,255,208,1,255,224,0,0,1,191,255,0,0,127,255,64,0,127,255,224,0,0,2,255,248,0,63,253,0,0,0,0,31,255,64,15,64,0,0,0,0,1,244,0,0,0,0,0,0,0,0,0,0, + // 0x8ddd 距 + 221,141,35,33,41,37,1,253,11,255,255,248,63,255,255,255,240,11,255,255,248,63,255,255,255,240,11,255,255,248,63,255,255,255,240,11,208,1,248,63,64,0,0,0,11,208,1,248,63,64,0,0,0,11,208,1,248,63,64,0,0,0,11,208,1,248,63,64,0,0,0,11,208,1,248,63,64,0,0,0,11,255,255,248,63,128,0,0,0,11,255,255,248,63,255,255,255,128,11,255,255,248,63,255,255,255,128,0,2,244,0,63,255,255,255,128,0,2,244,0,63,64,0,63,128,0,2,244,0,63,64,0,63,128,0,2,244,0,63,64,0,63,128,15,194,244,0,63,64,0,63,128,15,194,244,0,63,64,0,63,128,15,194,255,253,63,64,0,63,128,15,194,255,253,63,128,0,63,128,15,194,255,253,63,255,255,255,128,15,194,244,0,63,255,255,255,128,15,194,244,0,63,255,255,255,128,15,194,244,0,63,64,0,0,0,15,194,244,0,63,64,0,0,0,15,194,244,5,63,64,0,0,0,15,194,250,254,63,64,0,0,0,15,215,255,255,63,64,0,0,0,31,255,255,254,63,128,0,0,0,191,255,254,64,63,255,255,255,248,127,254,64,0,63,255,255,255,248,121,64,0,0,63,255,255,255,248,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0, + // 0x8eca 車 + 202,142,33,36,68,37,2,252,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,63,255,255,255,255,255,255,255,0,0,0,0,7,244,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,252,0,7,240,0,15,208,0,0,252,0,7,240,0,15,208,0,0,252,0,7,240,0,15,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,254,170,175,250,170,175,208,0,0,252,0,7,240,0,15,208,0,0,252,0,7,240,0,15,208,0,0,252,0,7,240,0,15,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,192,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x8edf 軟 + 223,142,35,36,68,37,1,252,0,1,244,0,0,249,0,0,0,0,2,248,0,0,253,0,0,0,0,2,248,0,0,252,0,0,0,0,2,248,0,1,252,0,0,0,63,255,255,255,194,252,0,0,0,63,255,255,255,194,248,0,0,0,63,255,255,255,195,244,0,0,0,0,2,248,0,3,255,255,255,224,0,2,248,0,7,255,255,255,240,5,87,253,85,15,255,255,255,240,31,255,255,255,79,210,248,11,224,31,255,255,255,95,194,248,15,208,31,65,240,31,127,130,248,15,192,31,65,240,31,191,66,248,15,192,31,65,240,31,255,2,248,31,128,31,255,255,255,253,2,248,47,64,31,255,255,255,188,2,248,63,0,31,150,245,111,64,2,252,6,0,31,65,240,31,64,3,252,0,0,31,65,240,31,64,3,252,0,0,31,170,250,191,64,3,252,0,0,31,255,255,255,64,7,253,0,0,31,255,255,255,64,15,255,0,0,0,2,248,0,0,15,175,0,0,0,2,248,0,0,47,95,128,0,0,2,248,0,0,63,15,192,0,127,255,255,255,208,190,15,224,0,127,255,255,255,209,252,7,240,0,127,255,255,255,211,252,3,252,0,0,2,248,0,15,240,1,254,0,0,2,248,0,63,208,0,191,128,0,2,248,1,255,128,0,63,240,0,2,248,7,254,0,0,15,248,0,2,248,3,248,0,0,3,240,0,2,248,0,208,0,0,0,144,0,0,0,0,0,0,0,0,0, + // 0x8ef8 軸 + 248,142,34,36,68,37,1,252,0,3,240,0,0,1,248,0,0,0,3,240,0,0,1,248,0,0,0,3,240,0,0,1,248,0,0,0,3,240,0,0,1,248,0,0,63,255,255,255,0,1,248,0,0,63,255,255,255,0,1,248,0,0,63,255,255,255,0,1,248,0,0,0,3,240,0,0,1,248,0,0,0,3,240,0,63,255,255,255,208,5,87,249,84,63,255,255,255,208,15,255,255,253,63,255,255,255,208,15,255,255,253,63,65,248,11,208,15,66,224,61,63,1,248,11,208,15,66,224,61,63,1,248,11,208,15,66,224,61,63,1,248,11,208,15,255,255,253,63,1,248,11,208,15,255,255,253,63,1,248,11,208,15,151,245,189,63,1,248,11,208,15,66,224,61,63,1,248,11,208,15,66,224,61,63,255,255,255,208,15,171,250,189,63,255,255,255,208,15,255,255,253,63,255,255,255,208,15,255,255,253,63,1,248,11,208,0,3,240,0,63,1,248,11,208,0,3,240,0,63,1,248,11,208,0,3,240,0,63,1,248,11,208,191,255,255,255,191,1,248,11,208,191,255,255,255,191,1,248,11,208,191,255,255,255,191,1,248,11,208,0,3,240,0,63,1,248,11,208,0,3,240,0,63,255,255,255,208,0,3,240,0,63,255,255,255,208,0,3,240,0,63,255,255,255,208,0,3,240,0,63,0,0,11,208,0,3,240,0,63,0,0,7,208,0,0,0,0,0,0,0,0,0, + // 0x8f09 載 + 9,143,34,36,68,37,2,252,0,0,253,0,1,252,1,0,0,0,0,253,0,1,252,15,64,0,0,0,253,0,1,252,63,208,0,31,255,255,255,225,252,15,244,0,31,255,255,255,225,252,3,253,0,10,170,255,170,145,252,0,255,0,0,0,253,0,1,252,0,60,0,0,0,253,0,1,252,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,252,0,0,253,0,0,0,0,0,252,0,0,253,0,0,0,21,85,254,85,80,253,0,164,0,63,255,255,255,244,253,0,254,0,63,255,255,255,244,254,1,252,0,0,0,252,0,0,190,2,252,0,0,0,252,0,0,191,3,244,0,15,255,255,255,224,127,7,240,0,15,255,255,255,224,127,15,224,0,15,64,188,3,224,63,31,192,0,15,255,255,255,224,63,191,128,0,15,255,255,255,224,63,255,0,0,15,64,188,3,224,47,254,0,0,15,64,188,3,224,31,252,0,0,15,255,255,255,224,15,244,0,0,15,255,255,255,224,31,240,7,64,0,0,252,0,0,63,240,7,224,0,0,252,0,0,255,244,7,208,127,255,255,255,247,255,252,11,208,127,255,255,255,255,250,253,15,192,106,170,254,170,255,224,255,159,192,0,0,252,2,255,128,127,255,128,0,0,252,0,253,0,31,255,0,0,0,252,0,48,0,2,248,0,0,0,0,0,0,0,0,0,0, + // 0x8f2f 輯 + 47,143,35,36,68,37,1,252,0,3,240,0,0,0,0,0,0,0,3,240,0,11,255,255,255,128,0,3,240,0,11,255,255,255,128,0,3,240,0,11,250,170,191,128,63,255,255,255,11,224,0,63,128,63,255,255,255,11,224,0,63,128,63,255,255,255,11,224,0,63,128,0,3,240,0,11,255,255,255,128,0,3,240,0,11,255,255,255,128,5,87,249,84,6,170,170,170,64,15,255,255,253,0,0,0,0,0,15,255,255,253,170,170,170,170,164,15,66,224,61,191,255,255,255,248,15,66,224,61,191,255,255,255,248,15,66,224,61,7,224,0,47,64,15,255,255,253,7,224,0,47,64,15,255,255,253,7,224,0,47,64,15,151,245,189,7,255,255,255,64,15,66,224,61,7,255,255,255,64,15,66,224,61,7,245,85,127,64,15,171,250,189,7,224,0,47,64,15,255,255,253,7,224,0,47,64,15,255,255,253,7,250,170,191,64,0,3,240,0,7,255,255,255,64,0,3,240,0,7,255,255,255,64,0,3,240,0,7,224,0,47,64,191,255,255,255,135,224,0,47,64,191,255,255,255,135,224,0,47,248,191,255,255,255,139,246,175,255,248,0,3,240,2,255,255,255,255,248,0,3,240,1,255,255,255,255,128,0,3,240,0,254,165,64,47,64,0,3,240,0,0,0,0,47,64,0,3,240,0,0,0,0,47,64,0,3,240,0,0,0,0,47,64,0,0,0,0,0,0,0,0,0, + // 0x8f38 輸 + 56,143,35,35,59,37,1,253,0,11,208,0,0,7,240,0,0,0,11,208,0,0,15,252,0,0,0,11,208,0,0,31,254,0,0,0,11,208,0,0,63,191,64,0,63,255,255,252,0,255,47,208,0,63,255,255,252,2,252,15,244,0,63,255,255,252,11,244,3,253,0,0,11,208,0,47,208,0,255,128,0,11,208,0,191,128,0,63,240,26,175,234,167,255,255,255,239,252,47,255,255,251,254,255,255,227,244,47,255,255,247,226,255,255,224,176,47,7,193,245,128,0,0,0,0,47,7,193,244,0,0,0,0,0,47,7,193,244,0,0,0,2,144,47,255,255,244,255,255,0,3,224,47,255,255,244,255,255,15,67,224,47,91,214,244,250,175,15,67,224,47,7,193,244,244,15,15,67,224,47,7,193,244,244,15,15,67,224,47,91,214,244,255,255,15,67,224,47,255,255,244,255,255,15,67,224,47,255,255,244,249,111,15,67,224,0,11,208,0,244,15,15,67,224,0,11,208,0,244,15,15,67,224,0,11,208,0,255,255,15,67,224,191,255,255,252,255,255,15,67,224,191,255,255,252,249,111,15,67,224,191,255,255,252,244,15,15,67,224,0,11,208,0,244,15,5,3,224,0,11,208,0,244,15,0,3,224,0,11,208,0,244,15,0,3,224,0,11,208,0,244,111,1,171,208,0,11,208,0,244,255,2,255,192,0,11,208,0,244,189,1,254,64, + // 0x8f49 轉 + 73,143,35,36,68,37,1,252,0,3,224,0,0,2,244,0,0,0,7,240,0,0,2,244,0,0,0,7,240,0,0,2,244,0,0,0,7,240,0,255,255,255,255,240,63,255,255,253,255,255,255,255,240,63,255,255,253,170,171,250,170,160,63,255,255,253,0,2,244,0,0,0,7,240,0,63,255,255,255,192,0,7,240,0,63,255,255,255,192,5,91,245,84,62,2,244,11,192,31,255,255,252,62,2,244,11,192,31,255,255,252,63,255,255,255,192,31,3,208,188,63,255,255,255,192,31,3,208,188,62,2,244,11,192,31,3,208,188,62,2,244,11,192,31,255,255,252,63,255,255,255,192,31,255,255,252,63,255,255,255,192,31,151,229,252,0,2,244,126,0,31,3,208,188,0,2,244,63,128,31,3,208,189,255,255,255,255,208,31,171,234,253,255,255,255,255,240,31,255,255,252,254,169,85,86,244,31,255,255,252,0,0,3,240,128,0,7,240,0,0,0,3,240,0,0,7,240,1,255,255,255,255,244,0,7,240,1,255,255,255,255,244,191,255,255,255,171,170,171,250,164,191,255,255,254,11,192,3,240,0,191,255,255,254,15,240,3,240,0,0,7,240,0,3,248,3,240,0,0,7,240,0,1,252,3,240,0,0,7,240,0,0,180,3,240,0,0,7,240,0,0,7,175,240,0,0,7,240,0,0,3,255,240,0,0,7,240,0,0,3,255,128,0,0,0,0,0,0,0,0,0,0, + // 0x8fd1 近 + 209,143,35,35,59,37,1,253,0,0,0,0,0,0,0,96,0,3,64,0,0,0,0,111,252,0,15,224,0,4,1,175,255,255,0,31,252,0,15,255,255,255,244,0,7,255,0,15,255,255,233,0,0,0,255,192,15,255,148,0,0,0,0,63,224,15,224,0,0,0,0,0,15,208,15,224,0,0,0,0,0,3,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,255,255,255,255,240,0,0,0,15,255,255,255,255,240,0,0,0,15,255,255,255,255,240,0,0,0,15,224,0,254,0,0,63,255,192,15,208,0,254,0,0,63,255,192,15,192,0,254,0,0,63,255,192,31,192,0,254,0,0,0,31,192,47,192,0,254,0,0,0,31,192,63,128,0,254,0,0,0,31,192,63,64,0,254,0,0,0,31,192,191,0,0,254,0,0,0,31,192,254,0,0,254,0,0,0,31,194,253,0,0,254,0,0,0,31,195,252,0,0,254,0,0,0,31,207,244,0,0,254,0,0,0,31,199,224,0,0,254,0,0,0,63,225,192,0,0,254,0,0,1,255,248,0,0,0,254,0,0,11,255,255,64,0,0,0,0,0,127,248,191,254,85,85,85,85,100,127,208,47,255,255,255,255,255,244,63,64,2,255,255,255,255,255,240,28,0,0,27,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x8fd4 返 + 212,143,35,34,50,37,1,253,3,64,0,0,0,0,0,0,0,31,208,0,63,255,255,255,255,192,31,248,0,63,255,255,255,255,192,7,254,0,63,255,255,255,255,192,1,255,128,63,64,0,0,0,0,0,127,208,63,64,0,0,0,0,0,31,192,63,64,0,0,0,0,0,11,0,63,64,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,255,255,255,254,0,0,0,0,63,255,255,255,255,0,0,0,0,63,255,255,255,254,0,0,0,0,63,127,64,1,252,0,0,0,0,63,111,192,3,252,0,63,255,128,63,79,208,7,244,0,63,255,128,63,11,240,15,240,0,63,255,128,127,7,244,31,208,0,0,47,128,127,2,252,63,192,0,0,47,128,190,0,255,255,64,0,0,47,128,253,0,127,254,0,0,0,47,129,252,0,47,252,0,0,0,47,130,252,0,63,252,0,0,0,47,131,248,1,255,255,64,0,0,47,135,240,11,255,255,240,0,0,47,143,224,191,248,47,255,64,0,47,159,195,255,208,7,255,240,0,127,211,129,254,0,0,191,224,2,255,244,0,224,0,0,11,192,11,255,255,64,0,0,0,0,0,127,244,255,250,84,0,5,85,84,127,208,63,255,255,255,255,255,240,63,0,7,255,255,255,255,255,240,28,0,0,27,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x9000 退 + 0,144,35,33,41,37,1,253,7,208,0,31,255,255,255,252,0,31,244,0,31,255,255,255,252,0,11,254,0,31,255,255,255,252,0,1,255,192,31,192,0,1,252,0,0,63,240,31,192,0,1,252,0,0,15,224,31,234,170,171,252,0,0,3,64,31,255,255,255,252,0,0,0,0,31,255,255,255,252,0,0,0,0,31,192,0,1,252,0,0,0,0,31,192,0,1,252,0,0,0,0,31,192,0,1,252,0,0,0,0,31,255,255,255,252,0,0,0,0,31,255,255,255,252,0,63,255,192,31,255,255,255,252,0,63,255,192,31,192,63,64,15,64,63,255,192,31,192,47,192,127,208,0,31,192,31,192,15,210,255,64,0,31,192,31,192,11,255,252,0,0,31,192,31,192,7,255,208,0,0,31,192,31,192,2,255,0,0,0,31,192,31,192,0,255,64,0,0,31,192,31,193,174,127,208,0,0,31,192,31,255,255,31,248,0,0,31,193,255,255,255,7,255,144,0,31,194,255,255,144,1,255,240,0,63,225,255,144,0,0,47,192,1,255,248,144,0,0,0,3,64,11,255,255,64,0,0,0,0,0,127,248,191,254,85,85,85,85,100,127,208,47,255,255,255,255,255,244,63,64,2,255,255,255,255,255,240,28,0,0,27,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x901f 速 + 31,144,35,35,59,37,1,253,0,0,0,0,0,190,0,0,0,2,64,0,0,0,190,0,0,0,15,208,0,0,0,190,0,0,0,47,248,0,0,0,190,0,0,0,7,254,3,255,255,255,255,255,240,1,255,131,255,255,255,255,255,240,0,63,227,255,255,255,255,255,224,0,15,208,0,0,190,0,0,0,0,3,0,0,0,190,0,0,0,0,0,0,106,170,255,170,170,0,0,0,0,191,255,255,255,255,64,0,0,0,191,255,255,255,255,64,0,0,0,189,0,190,0,63,64,0,0,0,189,0,190,0,63,64,0,0,0,189,0,190,0,63,64,63,255,192,189,0,190,0,63,64,63,255,192,191,170,255,170,191,64,63,255,192,191,255,255,255,255,64,0,31,192,191,255,255,255,255,64,0,31,192,0,11,255,224,0,0,0,31,192,0,47,255,248,0,0,0,31,192,0,127,255,254,0,0,0,31,192,2,253,190,127,128,0,0,31,192,11,248,190,31,244,0,0,31,192,127,224,190,7,254,0,0,31,199,255,128,190,1,255,224,0,31,199,253,0,190,0,63,208,0,63,226,240,0,190,0,11,128,1,255,248,64,0,190,0,1,0,11,255,255,64,0,85,0,0,0,127,248,191,254,85,85,85,85,100,127,208,47,255,255,255,255,255,244,63,64,2,255,255,255,255,255,240,28,0,0,27,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x9023 連 + 35,144,34,35,59,37,1,253,0,0,0,0,0,253,0,0,0,3,0,0,0,0,253,0,0,0,31,208,0,0,0,253,0,0,0,31,244,11,255,255,255,255,255,208,7,253,11,255,255,255,255,255,208,1,255,75,255,255,255,255,255,208,0,127,192,0,0,253,0,0,0,0,31,128,0,0,253,0,0,0,0,9,0,255,255,255,255,254,0,0,0,0,255,255,255,255,254,0,0,0,0,254,85,254,85,254,0,0,0,0,252,0,253,0,190,0,0,0,0,252,0,253,0,190,0,0,0,0,255,255,255,255,254,0,0,0,0,255,255,255,255,254,0,63,255,64,253,85,254,85,254,0,63,255,64,252,0,253,0,190,0,63,255,64,252,0,253,0,190,0,0,63,64,255,255,255,255,254,0,0,63,64,255,255,255,255,254,0,0,63,64,85,85,254,85,85,0,0,63,64,0,0,253,0,0,0,0,63,64,0,0,253,0,0,0,0,63,79,255,255,255,255,255,240,0,63,79,255,255,255,255,255,240,0,63,79,255,255,255,255,255,224,0,63,128,0,0,253,0,0,0,0,127,192,0,0,253,0,0,0,1,255,240,0,0,253,0,0,0,11,255,254,0,0,168,0,0,0,63,244,255,249,64,0,0,5,80,127,192,63,255,255,255,255,255,240,63,0,7,255,255,255,255,255,240,28,0,0,107,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x9032 進 + 50,144,34,35,59,37,1,253,0,0,0,0,144,0,64,0,0,2,0,0,2,253,0,254,0,0,15,192,0,3,252,1,253,0,0,47,244,0,7,244,2,252,0,0,11,253,0,15,240,3,248,0,0,2,255,0,47,224,7,240,0,0,0,191,192,63,255,255,255,255,192,0,47,192,255,255,255,255,255,192,0,15,3,255,255,255,255,255,192,0,0,11,255,64,15,208,0,0,0,0,47,255,64,15,208,0,0,0,0,191,255,64,15,208,0,0,0,0,255,127,255,255,255,255,0,0,0,61,63,255,255,255,255,0,0,0,4,63,255,255,255,255,0,63,255,64,63,64,15,208,0,0,63,255,64,63,64,15,208,0,0,63,255,64,63,64,15,208,0,0,0,63,64,63,255,255,255,255,0,0,63,64,63,255,255,255,255,0,0,63,64,63,255,255,255,255,0,0,63,64,63,64,15,208,0,0,0,63,64,63,64,15,208,0,0,0,63,64,63,64,15,208,0,0,0,63,64,63,64,15,208,0,0,0,63,64,63,255,255,255,255,224,0,63,128,63,255,255,255,255,224,0,127,192,63,255,255,255,255,224,1,255,240,0,0,0,0,0,0,11,255,254,0,0,0,0,0,0,63,244,255,249,64,0,0,5,80,127,192,63,255,255,255,255,255,240,63,0,7,255,255,255,255,255,240,28,0,0,107,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x904b 運 + 75,144,34,34,50,37,1,253,2,0,2,170,170,170,170,170,128,31,208,7,255,255,255,255,255,208,47,244,7,255,255,255,255,255,208,11,253,7,224,0,84,0,11,208,2,255,7,224,0,254,0,11,208,0,191,193,80,0,254,0,5,64,0,47,194,255,255,255,255,255,64,0,15,2,255,255,255,255,255,64,0,0,1,85,85,255,85,85,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,191,255,255,255,254,0,0,0,0,191,255,255,255,254,0,0,0,0,189,0,254,0,190,0,63,255,64,189,0,254,0,190,0,63,255,64,191,255,255,255,254,0,63,255,64,191,255,255,255,254,0,0,63,64,189,0,254,0,190,0,0,63,64,189,0,254,0,190,0,0,63,64,191,255,255,255,254,0,0,63,64,191,255,255,255,254,0,0,63,64,0,0,254,0,0,0,0,63,64,0,0,254,0,0,0,0,63,74,170,170,255,170,170,160,0,63,79,255,255,255,255,255,240,0,63,143,255,255,255,255,255,240,0,127,192,0,0,254,0,0,0,1,255,240,0,0,254,0,0,0,11,255,254,0,0,254,0,0,0,63,244,255,249,64,0,0,5,80,127,192,63,255,255,255,255,255,240,63,0,7,255,255,255,255,255,240,28,0,0,107,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x9054 達 + 84,144,34,35,59,37,1,253,0,0,0,0,0,254,0,0,0,3,64,0,0,0,254,0,0,0,31,208,0,21,85,255,85,85,0,31,248,0,191,255,255,255,254,0,7,254,0,191,255,255,255,254,0,0,255,64,0,0,254,0,0,0,0,127,192,0,0,254,0,0,0,0,31,138,170,170,255,170,170,160,0,10,15,255,255,255,255,255,240,0,0,15,255,255,255,255,255,240,0,0,0,3,240,0,31,192,0,0,0,0,3,244,0,47,192,0,0,0,0,2,252,0,63,64,0,0,0,0,0,252,0,127,0,0,0,0,7,255,255,255,255,255,224,63,255,71,255,255,255,255,255,224,63,255,66,170,170,255,170,170,144,63,255,64,0,0,254,0,0,0,0,63,64,85,85,255,85,85,0,0,63,64,255,255,255,255,255,0,0,63,64,255,255,255,255,255,0,0,63,64,0,0,254,0,0,0,0,63,64,0,0,254,0,0,0,0,63,70,170,170,255,170,170,144,0,63,75,255,255,255,255,255,224,0,63,75,255,255,255,255,255,224,0,63,128,0,0,254,0,0,0,0,127,192,0,0,254,0,0,0,1,255,240,0,0,254,0,0,0,11,255,254,0,0,0,0,0,0,63,244,255,249,64,0,0,5,80,127,192,63,255,255,255,255,255,240,63,0,7,255,255,255,255,255,240,28,0,0,107,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x9078 選 + 120,144,35,34,50,37,1,253,11,0,1,85,85,5,85,85,0,63,192,15,255,255,143,255,255,128,47,240,15,255,255,143,255,255,128,11,252,0,0,31,128,0,31,128,2,255,1,85,111,129,85,111,128,0,191,135,255,255,131,255,255,128,0,63,71,255,255,131,255,255,128,0,24,7,224,0,3,224,0,0,0,0,7,224,2,147,224,1,224,0,0,3,245,87,227,245,86,240,0,0,3,255,255,211,255,255,240,0,0,1,255,255,128,191,255,192,0,0,0,0,168,0,105,0,0,0,0,0,0,252,0,190,0,0,127,255,0,0,252,0,190,0,0,127,255,7,255,255,255,255,255,192,127,255,7,255,255,255,255,255,192,0,63,2,170,254,170,255,170,128,0,63,0,0,252,0,190,0,0,0,63,0,0,252,0,190,0,0,0,63,26,170,254,170,255,170,160,0,63,31,255,255,255,255,255,240,0,63,31,255,255,255,255,255,240,0,63,0,0,100,0,24,0,0,0,63,0,2,254,0,191,128,0,0,63,0,47,248,0,47,248,0,0,127,130,255,208,0,7,255,0,2,255,227,254,0,0,0,191,208,11,255,252,160,0,0,0,30,0,63,241,255,228,0,0,0,0,0,191,192,127,255,255,255,255,255,244,63,0,11,255,255,255,255,255,240,44,0,0,111,255,255,255,255,240,0,0,0,0,0,0,0,0,0, + // 0x9084 還 + 132,144,34,34,50,37,1,253,7,64,2,255,255,255,255,255,0,31,224,2,255,255,255,255,255,0,31,248,2,244,47,3,240,63,0,3,254,2,244,47,3,240,63,0,0,255,130,244,47,3,240,63,0,0,63,210,255,255,255,255,255,0,0,31,66,255,255,255,255,255,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,240,0,0,47,255,255,255,255,255,240,0,0,5,85,85,85,85,85,80,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,252,0,63,255,64,127,255,255,255,252,0,63,255,64,126,0,0,1,252,0,63,255,64,126,0,0,1,252,0,0,63,64,126,0,0,1,252,0,0,63,64,127,255,255,255,252,0,0,63,64,127,255,255,255,254,0,0,63,64,0,15,253,0,63,192,0,63,64,0,127,255,65,255,0,0,63,64,2,255,255,235,248,0,0,63,64,47,253,255,255,208,0,0,63,71,255,209,252,255,224,0,0,63,139,254,1,252,47,255,144,0,127,195,224,1,252,2,255,208,1,255,240,0,1,252,0,47,128,11,255,254,0,1,252,0,0,0,63,244,255,249,64,0,0,5,80,127,192,63,255,255,255,255,255,240,63,0,7,255,255,255,255,255,240,28,0,0,107,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x908a 邊 + 138,144,35,35,59,37,1,253,0,64,0,0,0,185,0,0,0,2,224,0,0,0,253,0,0,0,11,253,0,63,255,255,255,252,0,2,255,128,63,170,170,171,252,0,0,127,224,63,64,0,1,252,0,0,15,224,63,255,255,255,252,0,0,3,128,63,170,170,170,252,0,0,0,0,63,64,0,1,252,0,1,0,0,63,255,255,255,252,0,15,192,0,63,170,170,170,252,0,63,248,0,63,64,0,1,252,0,11,255,0,63,255,255,255,252,0,1,255,192,42,170,254,170,168,0,0,63,0,0,0,253,0,0,0,0,8,11,255,255,255,255,255,224,0,0,11,255,255,255,255,255,224,0,0,11,208,62,7,192,107,224,0,0,5,70,252,7,255,255,224,127,255,65,255,224,255,255,244,0,127,255,64,249,0,253,0,0,0,127,255,64,0,0,253,0,0,0,0,63,79,255,255,255,255,255,240,0,63,79,255,255,255,255,255,240,0,63,64,0,63,0,0,0,0,0,63,64,0,63,255,255,240,0,0,63,64,0,255,255,255,240,0,0,63,64,7,248,0,7,224,0,0,127,129,191,224,0,11,208,0,1,255,227,255,64,47,255,192,0,11,255,250,228,0,31,255,0,0,63,245,255,229,0,0,0,0,80,191,192,127,255,255,255,255,255,244,63,0,11,255,255,255,255,255,240,28,0,0,111,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x90e8 部 + 232,144,35,35,59,37,1,253,0,0,106,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,63,255,255,192,0,0,127,0,0,63,255,255,244,47,255,255,255,252,63,255,255,240,47,255,255,255,252,63,64,31,240,47,255,255,255,252,63,0,31,208,0,0,0,4,0,63,0,47,192,0,252,0,31,192,63,0,63,128,0,252,0,47,128,63,0,127,0,0,189,0,63,64,63,0,254,0,0,126,0,63,0,63,0,253,0,0,63,0,126,0,63,2,252,0,0,63,0,253,0,63,3,244,0,0,36,0,24,0,63,7,240,0,127,255,255,255,254,63,11,240,0,127,255,255,255,254,63,2,252,0,127,255,255,255,254,63,0,255,0,0,0,0,0,0,63,0,63,64,0,0,0,0,0,63,0,47,192,0,0,0,0,0,63,0,15,208,3,255,255,255,224,63,0,11,224,3,255,255,255,224,63,0,7,240,3,255,255,255,224,63,0,7,240,3,240,0,11,224,63,0,7,240,3,240,0,11,224,63,0,11,240,3,240,0,11,224,63,0,31,240,3,240,0,11,224,63,15,255,224,3,240,0,11,224,63,15,255,192,3,240,0,11,224,63,11,255,0,3,255,255,255,224,63,1,80,0,3,255,255,255,224,63,0,0,0,3,255,255,255,224,63,0,0,0,3,240,0,11,224,63,0,0,0,3,240,0,11,224,63,0,0,0, + // 0x91cb 釋 + 203,145,35,36,68,37,1,252,0,0,27,192,0,0,0,0,0,0,107,255,244,85,85,85,85,64,63,255,255,209,255,255,255,255,208,63,255,228,1,255,255,255,255,208,41,75,208,1,244,60,31,11,208,0,7,208,145,244,60,31,11,208,11,7,208,253,244,60,31,11,208,31,71,209,249,249,189,111,95,208,15,135,210,245,255,255,255,255,208,15,199,211,241,255,255,255,255,208,11,199,211,208,0,3,240,0,0,7,215,215,192,0,3,240,0,0,3,135,215,128,63,255,255,255,0,0,7,208,0,63,255,255,255,0,127,255,255,252,21,91,245,85,0,127,255,255,252,0,3,240,0,0,127,255,255,253,85,91,245,85,80,0,47,208,7,255,255,255,255,244,0,63,224,7,255,255,255,255,244,0,127,248,0,11,192,0,248,0,0,191,255,0,7,208,2,244,0,0,255,255,192,3,240,3,224,0,2,251,223,240,2,240,7,192,0,3,231,211,247,255,255,255,255,240,11,215,208,243,255,255,255,255,240,31,199,208,65,85,91,245,85,80,63,71,208,0,0,3,240,0,0,191,7,208,0,0,3,240,0,0,125,7,208,0,255,255,255,255,192,40,7,208,0,255,255,255,255,192,16,7,208,0,85,91,245,85,64,0,7,208,0,0,3,240,0,0,0,7,208,0,0,3,240,0,0,0,7,208,0,0,3,240,0,0,0,7,208,0,0,3,240,0,0,0,0,0,0,0,0,0,0,0, + // 0x91cd 重 + 205,145,33,34,50,37,2,254,0,0,0,0,0,0,90,0,0,0,0,0,5,106,255,255,64,0,2,191,255,255,255,255,255,192,0,2,255,255,255,255,255,233,0,0,1,255,169,91,244,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,170,170,170,175,254,170,170,170,128,0,0,0,7,240,0,0,0,0,0,85,85,91,245,85,85,64,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,253,0,7,240,0,15,208,0,0,253,0,7,240,0,15,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,253,0,11,240,0,31,208,0,0,253,0,7,240,0,15,208,0,0,253,0,7,240,0,15,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,85,85,91,245,85,85,64,0,0,0,0,7,240,0,0,0,0,2,170,170,175,250,170,170,164,0,3,255,255,255,255,255,255,248,0,3,255,255,255,255,255,255,248,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x91cf 量 + 207,145,33,33,41,37,2,254,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,0,0,0,0,63,64,0,0,127,0,0,0,0,63,64,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,127,0,0,0,0,63,64,0,0,127,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,170,170,170,170,170,170,170,170,128,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,252,0,3,240,0,15,208,0,0,252,0,3,240,0,15,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,252,0,3,240,0,15,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,0,0,3,240,0,0,0,0,0,0,0,3,240,0,0,0,0,3,255,255,255,255,255,255,240,0,3,255,255,255,255,255,255,240,0,1,85,85,87,245,85,85,80,0,0,0,0,3,240,0,0,0,0,170,170,170,171,250,170,170,170,128,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0x91dd 針 + 221,145,35,35,59,37,1,253,0,3,252,0,0,0,169,0,0,0,7,255,0,0,0,253,0,0,0,15,255,208,0,0,253,0,0,0,31,255,244,0,0,253,0,0,0,63,199,253,0,0,253,0,0,0,191,1,255,64,0,253,0,0,1,254,0,127,192,0,253,0,0,3,252,0,47,224,0,253,0,0,15,240,0,11,128,0,253,0,0,63,208,0,2,0,0,253,0,0,255,255,255,252,0,0,253,0,0,63,255,255,252,0,0,253,0,0,5,255,255,252,21,85,254,85,80,0,1,252,0,127,255,255,255,248,0,1,252,0,127,255,255,255,248,0,1,252,0,127,255,255,255,248,47,255,255,255,128,0,253,0,0,47,255,255,255,128,0,253,0,0,47,255,255,255,128,0,253,0,0,0,1,252,0,0,0,253,0,0,0,1,252,20,0,0,253,0,0,11,129,252,47,0,0,253,0,0,11,193,252,63,0,0,253,0,0,7,209,252,62,0,0,253,0,0,3,225,252,125,0,0,253,0,0,3,225,252,188,0,0,253,0,0,2,241,252,248,0,0,253,0,0,2,241,252,32,0,0,253,0,0,0,1,252,26,128,0,253,0,0,0,2,255,255,192,0,253,0,0,26,255,255,255,192,0,253,0,0,63,255,255,250,64,0,253,0,0,63,255,229,0,0,0,253,0,0,46,144,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0, + // 0x9215 鈕 + 21,146,35,35,59,37,1,253,0,11,224,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,47,255,0,127,255,255,255,0,0,127,127,192,127,255,255,254,0,0,254,31,224,127,255,255,254,0,2,252,7,248,21,191,85,190,0,7,244,1,253,0,191,0,190,0,31,224,0,191,0,190,0,190,0,127,192,0,60,0,190,0,190,0,191,255,255,244,0,190,0,190,0,47,255,255,224,0,253,0,254,0,7,255,255,224,0,253,0,254,0,0,7,224,0,0,253,0,253,0,0,7,224,0,0,253,0,253,0,0,7,224,0,0,252,0,253,0,0,7,224,0,85,253,85,254,80,63,255,255,249,255,255,255,255,248,63,255,255,249,255,255,255,255,248,63,255,255,249,255,255,255,255,248,0,7,224,0,2,248,0,253,0,1,7,224,144,2,248,0,252,0,15,7,224,248,2,248,0,252,0,15,135,225,240,3,244,0,252,0,11,199,226,240,3,244,1,252,0,7,199,227,224,3,240,1,252,0,7,215,227,208,3,240,1,252,0,3,215,231,192,3,240,1,252,0,3,135,225,64,7,240,1,252,0,0,7,224,20,7,240,2,252,0,0,7,251,253,11,224,2,252,0,5,191,255,254,91,229,87,253,80,63,255,255,255,255,255,255,255,248,63,255,228,15,255,255,255,255,248,46,144,0,15,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0x932f 錯 + 47,147,35,35,59,37,1,253,0,11,240,0,2,244,3,240,0,0,15,252,0,2,244,3,240,0,0,47,255,0,2,244,3,240,0,0,127,191,192,2,244,3,240,0,0,254,31,240,2,244,3,240,0,2,252,7,252,255,255,255,255,224,7,244,2,254,255,255,255,255,224,31,224,0,190,255,255,255,255,224,127,192,0,60,2,244,3,240,0,191,255,255,240,2,244,3,240,0,47,255,255,224,2,244,3,240,0,7,255,255,224,2,244,3,240,0,0,7,224,0,2,244,7,240,0,0,7,224,7,255,255,255,255,248,0,7,224,7,255,255,255,255,248,0,7,224,7,255,255,255,255,248,63,255,255,248,0,0,0,0,0,63,255,255,248,0,0,0,0,0,63,255,255,248,31,255,255,255,64,0,7,224,0,47,255,255,255,64,0,7,224,64,47,255,255,255,64,11,7,224,248,47,128,0,63,64,15,71,225,244,47,128,0,63,64,15,135,226,240,47,128,0,63,64,11,199,227,224,47,234,170,191,64,7,199,227,208,47,255,255,255,64,3,215,231,192,47,255,255,255,64,3,215,225,128,47,128,0,63,64,0,7,224,88,47,128,0,63,64,0,7,255,253,47,128,0,63,64,26,255,255,253,47,255,255,255,64,63,255,255,228,47,255,255,255,64,63,255,144,0,47,255,255,255,64,46,64,0,0,47,128,0,63,64,0,0,0,0,26,64,0,42,64, + // 0x9375 鍵 + 117,147,35,35,59,37,1,253,0,15,128,0,0,0,42,0,0,0,47,240,0,0,0,63,0,0,0,63,248,0,0,0,63,0,0,0,127,253,63,255,26,191,170,128,0,253,191,127,255,31,255,255,192,2,252,63,255,253,31,255,255,192,7,240,15,224,188,0,63,11,192,31,208,3,208,252,0,63,11,192,127,128,2,64,248,255,255,255,248,255,255,255,2,244,255,255,255,248,63,255,255,3,240,170,191,175,248,27,255,255,3,224,0,63,11,192,0,31,128,11,208,0,63,11,192,0,31,128,15,192,26,191,175,192,0,31,128,15,255,223,255,255,192,0,31,128,47,255,159,255,255,192,63,255,255,191,255,128,63,0,0,63,255,255,134,15,128,63,0,0,63,255,255,128,31,111,255,255,192,0,31,128,10,31,63,255,255,208,0,31,133,47,47,63,255,255,208,31,31,143,159,63,0,63,0,0,31,31,143,79,126,0,63,0,0,15,31,143,15,253,0,63,0,0,15,95,159,11,252,255,255,255,240,11,159,174,7,252,255,255,255,240,11,159,173,3,244,191,255,255,240,7,159,128,3,248,0,63,0,0,0,31,128,71,253,0,63,0,0,0,31,255,223,255,128,63,0,0,43,255,255,255,175,249,0,0,0,127,255,255,254,11,255,255,255,248,63,249,7,252,1,255,255,255,244,20,0,2,240,0,27,255,255,240,0,0,0,128,0,0,0,0,0, + // 0x9577 長 + 119,149,33,35,59,37,2,252,0,11,255,255,255,255,255,192,0,0,11,255,255,255,255,255,208,0,0,11,255,255,255,255,255,208,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,255,255,255,255,255,0,0,0,11,255,255,255,255,255,0,0,0,11,250,170,170,170,170,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,250,170,170,170,170,0,0,0,11,255,255,255,255,255,0,0,0,11,255,255,255,255,255,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,11,240,3,248,0,0,208,0,0,11,240,2,252,0,3,248,0,0,11,240,0,254,0,47,248,0,0,11,240,0,127,65,255,208,0,0,11,240,0,63,219,255,0,0,0,11,240,0,15,255,244,0,0,0,11,240,0,7,255,64,0,0,0,11,240,0,2,255,208,0,0,0,11,240,26,252,127,248,0,0,0,11,255,255,252,31,255,144,0,11,255,255,255,252,3,255,255,64,15,255,255,249,64,0,127,255,192,11,255,164,0,0,0,7,255,64,6,64,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0, + // 0x9589 閉 + 137,149,31,34,16,37,3,253,106,170,170,160,42,170,170,168,191,255,255,240,63,255,255,252,191,255,255,240,63,255,255,252,190,0,7,240,63,0,2,252,190,0,7,240,63,0,2,252,190,0,7,240,63,0,2,252,191,255,255,240,63,255,255,252,191,255,255,240,63,255,255,252,191,85,91,240,63,149,87,252,190,0,7,240,63,0,2,252,190,0,7,240,63,0,2,252,191,255,255,240,63,170,171,252,191,255,255,240,63,255,255,252,191,170,170,160,63,255,255,252,190,0,0,0,84,0,2,252,190,0,0,0,189,0,2,252,190,0,0,0,189,0,2,252,190,0,0,0,189,0,2,252,190,11,255,255,255,255,130,252,190,11,255,255,255,255,130,252,190,11,255,255,255,255,130,252,190,0,0,11,253,0,2,252,190,0,0,47,253,0,2,252,190,0,0,191,253,0,2,252,190,0,3,253,189,0,2,252,190,0,31,244,189,0,2,252,190,0,191,208,189,0,2,252,190,7,255,0,189,0,2,252,190,31,252,0,189,0,2,252,190,11,208,0,189,0,2,252,190,2,0,127,253,21,87,252,190,0,0,63,252,47,255,248,190,0,0,47,224,15,255,240,190,0,0,0,0,15,255,128, + // 0x958b 開 + 139,149,31,35,24,37,3,252,106,170,170,160,42,170,170,164,191,255,255,240,63,255,255,252,191,255,255,240,63,255,255,252,190,0,3,240,63,0,2,252,190,0,3,240,63,0,2,252,191,85,87,240,63,85,86,252,191,255,255,240,63,255,255,252,191,255,255,240,63,255,255,252,190,0,3,240,63,0,2,252,190,0,3,240,63,0,2,252,190,0,3,240,63,0,2,252,191,255,255,240,63,255,255,252,191,255,255,240,63,255,255,252,191,170,170,160,42,170,171,252,190,0,0,0,0,0,2,252,190,0,0,0,0,0,2,252,190,7,255,255,255,255,66,252,190,7,255,255,255,255,66,252,190,6,175,250,191,234,66,252,190,0,15,192,31,128,2,252,190,0,15,192,31,128,2,252,190,0,15,192,31,128,2,252,190,15,255,255,255,255,194,252,190,15,255,255,255,255,194,252,190,15,255,255,255,255,194,252,190,0,15,192,31,128,2,252,190,0,31,192,31,128,2,252,190,0,47,128,31,128,2,252,190,0,63,0,31,128,2,252,190,0,254,0,31,128,2,252,190,2,252,0,31,129,87,252,190,11,248,0,31,135,255,248,190,3,224,0,31,131,255,244,190,0,128,0,0,2,255,128,0,0,0,0,0,0,0,0, + // 0x9593 間 + 147,149,31,34,16,37,3,253,106,170,170,160,42,170,170,168,191,255,255,240,63,255,255,252,191,255,255,240,63,255,255,252,190,0,7,240,63,0,2,252,190,0,7,240,63,0,2,252,190,0,7,240,63,0,2,252,191,255,255,240,63,255,255,252,191,255,255,240,63,255,255,252,191,85,91,240,63,149,87,252,190,0,7,240,63,0,2,252,190,0,7,240,63,0,2,252,191,255,255,240,63,170,171,252,191,255,255,240,63,255,255,252,191,170,170,160,63,255,255,252,190,0,0,0,0,0,2,252,190,0,0,0,0,0,2,252,190,0,106,170,170,160,2,252,190,0,127,255,255,244,2,252,190,0,127,255,255,244,2,252,190,0,126,0,3,244,2,252,190,0,126,0,3,244,2,252,190,0,126,0,3,244,2,252,190,0,127,255,255,244,2,252,190,0,127,255,255,244,2,252,190,0,127,170,171,244,2,252,190,0,126,0,3,244,2,252,190,0,126,0,3,244,2,252,190,0,126,0,3,244,2,252,190,0,127,255,255,244,2,252,190,0,127,255,255,244,2,252,190,0,127,170,170,169,87,252,190,0,126,0,0,15,255,248,190,0,21,0,0,11,255,240,190,0,0,0,0,7,255,128, + // 0x95dc 關 + 220,149,31,34,16,37,3,253,85,85,85,80,21,85,85,84,191,255,255,240,63,255,255,252,191,255,255,240,63,255,255,252,190,0,3,240,63,0,1,252,190,0,3,240,63,0,1,252,190,0,7,240,63,64,1,252,191,255,255,240,63,255,255,252,191,255,255,240,63,255,255,252,190,0,3,240,63,0,1,252,190,0,3,240,63,0,1,252,191,255,255,240,63,255,255,252,191,255,255,240,63,255,255,252,190,85,111,80,27,213,86,252,190,0,62,0,15,128,1,252,190,1,188,0,111,0,1,252,190,15,240,247,252,61,1,252,190,7,227,226,248,188,1,252,190,1,255,128,191,240,1,252,190,0,190,96,47,218,1,252,190,0,60,180,15,15,1,252,190,0,254,252,62,191,193,252,190,31,255,255,255,255,193,252,190,30,148,31,233,66,209,252,190,1,64,244,188,0,1,252,190,3,192,244,188,15,1,252,190,3,192,244,188,15,1,252,190,3,192,244,188,15,1,252,190,3,255,240,191,255,1,252,190,3,255,240,191,255,1,252,190,0,3,240,188,0,1,252,190,0,15,208,188,0,86,252,190,0,191,128,188,0,255,252,190,0,253,0,188,0,255,244,190,0,16,0,0,0,191,144, + // 0x964d 降 + 77,150,33,35,59,37,3,253,0,0,0,0,11,144,0,0,0,0,0,0,0,15,208,0,0,0,255,255,224,0,63,192,0,0,0,255,255,252,0,191,234,171,128,0,255,255,244,1,255,255,255,240,0,252,3,240,7,255,255,255,208,0,252,7,240,31,248,0,63,192,0,252,11,208,127,253,0,127,0,0,252,15,194,255,191,1,254,0,0,252,31,195,252,63,199,252,0,0,252,47,64,224,15,255,240,0,0,252,63,0,0,3,255,192,0,0,252,126,0,0,3,255,208,0,0,252,126,0,0,47,255,253,0,0,252,63,64,6,255,235,255,228,0,252,15,193,191,255,0,191,255,128,252,11,227,255,244,10,175,255,0,252,3,241,254,64,15,208,125,0,252,3,240,144,0,15,208,0,0,252,2,244,127,255,255,255,252,0,252,2,244,191,255,255,255,252,0,252,2,244,191,255,255,255,252,0,252,3,244,3,240,15,208,0,0,252,255,240,3,240,15,208,0,0,252,191,224,3,240,15,208,0,0,252,191,64,3,240,15,208,0,0,252,0,7,255,255,255,255,255,0,252,0,7,255,255,255,255,255,0,252,0,7,255,255,255,255,255,0,252,0,0,0,0,15,208,0,0,252,0,0,0,0,15,208,0,0,252,0,0,0,0,15,208,0,0,252,0,0,0,0,15,208,0,0,252,0,0,0,0,15,208,0,0,252,0,0,0,0,15,208,0,0, + // 0x9664 除 + 100,150,33,35,59,37,3,253,0,0,0,0,2,164,0,0,0,0,0,0,0,11,253,0,0,0,255,255,224,0,15,255,0,0,0,255,255,252,0,63,255,192,0,0,255,255,244,0,191,31,224,0,0,252,3,240,2,254,11,248,0,0,252,7,240,11,248,2,254,0,0,252,11,208,47,240,0,191,192,0,252,15,192,191,192,0,47,240,0,252,31,135,254,0,0,11,254,0,252,47,95,248,0,0,2,255,128,252,63,15,239,255,255,255,191,0,252,126,11,79,255,255,255,13,0,252,127,0,15,255,255,255,0,0,252,47,128,0,2,248,0,0,0,252,15,192,0,2,248,0,0,0,252,11,224,0,2,248,0,0,0,252,3,240,0,2,248,0,0,0,252,3,241,255,255,255,255,252,0,252,2,245,255,255,255,255,252,0,252,2,245,255,255,255,255,252,0,252,2,244,0,2,248,0,0,0,252,3,244,0,2,248,0,0,0,252,255,240,47,66,248,31,0,0,252,191,224,63,2,248,63,128,0,252,191,64,191,2,248,31,208,0,252,0,0,253,2,248,11,240,0,252,0,2,252,2,248,3,244,0,252,0,7,244,2,248,1,252,0,252,0,15,224,2,248,0,254,0,252,0,63,192,2,248,0,127,0,252,0,31,64,3,248,0,62,0,252,0,1,1,255,248,0,16,0,252,0,0,0,255,240,0,0,0,252,0,0,0,255,128,0,0,0, + // 0x968e 階 + 142,150,33,35,59,37,3,253,0,0,0,84,0,5,64,0,0,0,0,0,252,0,15,192,0,0,255,255,224,252,0,15,192,0,0,255,255,248,252,0,15,192,116,0,255,255,240,252,0,15,194,253,0,252,7,240,255,255,79,239,253,0,252,11,224,255,255,79,255,208,0,252,15,208,255,255,79,253,0,0,252,15,192,252,0,15,192,0,0,252,31,128,252,0,15,192,0,0,252,47,0,252,0,15,192,13,0,252,63,0,252,1,79,192,15,128,252,126,0,254,191,143,192,31,128,252,126,6,255,255,207,255,255,64,252,63,79,255,253,15,255,255,0,252,15,207,254,67,150,255,252,0,252,11,214,64,7,240,0,0,0,252,7,240,0,11,240,0,0,0,252,3,240,0,15,224,0,0,0,252,3,240,127,255,255,255,248,0,252,3,240,127,255,255,255,248,0,252,3,240,127,255,255,255,248,0,252,7,240,127,0,0,2,248,0,252,255,240,127,0,0,2,248,0,252,191,208,127,0,0,2,248,0,252,190,64,127,255,255,255,248,0,252,0,0,127,255,255,255,248,0,252,0,0,127,170,170,171,248,0,252,0,0,127,0,0,2,248,0,252,0,0,127,0,0,2,248,0,252,0,0,127,0,0,2,248,0,252,0,0,127,255,255,255,248,0,252,0,0,127,255,255,255,248,0,252,0,0,127,255,255,255,248,0,252,0,0,127,0,0,2,248,0, + // 0x96d9 雙 + 217,150,34,36,68,37,1,252,0,25,1,0,0,41,0,0,0,0,63,3,240,0,63,11,208,0,0,126,11,208,0,189,15,192,0,0,253,15,192,0,252,31,64,0,1,255,255,255,194,255,255,255,208,3,255,255,255,199,255,255,255,208,11,249,111,149,79,249,111,85,64,31,248,31,64,47,244,47,0,0,127,255,255,255,255,255,255,255,128,63,255,255,255,255,255,255,255,128,29,248,47,64,58,244,47,0,0,1,248,31,64,2,244,47,0,0,1,255,255,255,66,255,255,255,128,1,255,255,255,66,255,255,255,128,1,248,47,128,2,244,47,64,0,1,248,31,64,2,244,47,0,0,1,248,47,128,2,248,47,64,0,1,255,255,255,210,255,255,255,240,1,255,255,255,210,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,240,0,3,255,255,255,255,255,255,208,0,0,0,255,0,0,1,255,128,0,0,0,255,192,0,11,254,0,0,0,0,63,248,0,127,244,0,0,0,0,11,255,135,255,192,0,0,0,0,1,255,255,254,0,0,0,0,0,0,127,255,248,0,0,0,0,0,91,255,255,255,228,0,0,22,191,255,255,239,255,255,254,144,63,255,255,249,1,191,255,255,224,31,255,249,0,0,2,255,255,192,15,148,0,0,0,0,1,111,64,0,0,0,0,0,0,0,0,0, + // 0x96e2 離 + 226,150,35,35,59,37,1,253,0,0,252,0,0,10,64,16,0,0,0,252,0,0,15,208,127,0,0,0,252,0,0,31,192,190,0,127,255,255,255,244,47,128,252,0,127,255,255,255,248,63,65,252,0,127,255,255,255,248,127,2,244,0,0,0,0,0,0,190,3,240,0,6,64,11,203,128,255,255,255,240,11,202,15,139,194,255,255,255,240,11,207,255,11,195,255,255,255,240,11,195,254,11,199,253,3,240,0,11,192,255,75,207,252,3,240,0,11,195,255,219,239,252,3,240,0,11,207,211,219,255,252,3,240,0,11,223,64,75,255,252,3,240,0,11,218,85,95,221,255,255,255,240,11,255,255,255,192,255,255,255,240,11,255,255,255,192,255,255,255,224,0,0,252,0,0,252,3,240,0,0,0,248,0,0,252,3,240,0,47,255,255,255,240,252,3,240,0,47,255,255,255,240,252,3,240,0,47,171,250,171,240,255,255,255,224,47,3,224,3,240,255,255,255,240,47,3,227,131,240,255,255,255,240,47,3,211,195,240,252,3,240,0,47,7,194,227,240,252,3,240,0,47,127,255,243,240,252,3,240,0,47,63,255,247,240,252,3,240,0,47,21,80,187,240,253,3,240,0,47,0,0,87,240,255,255,255,248,47,0,0,3,240,255,255,255,248,47,0,2,171,224,255,255,255,248,47,0,2,255,208,252,0,0,0,47,0,1,255,64,252,0,0,0, + // 0x96fb 電 + 251,150,34,34,50,37,2,253,2,170,170,170,170,170,170,160,0,3,255,255,255,255,255,255,240,0,3,255,255,255,255,255,255,240,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,85,85,91,245,85,85,127,64,127,0,0,7,240,0,0,63,64,127,31,255,199,240,255,253,63,64,127,31,255,199,240,255,253,63,64,127,0,0,7,240,0,0,63,64,0,0,0,7,240,0,0,0,0,0,63,255,199,240,255,255,64,0,0,63,255,199,240,255,255,64,0,0,0,0,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,254,85,91,245,85,111,192,0,0,253,0,7,240,0,31,192,0,0,253,0,11,240,0,31,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,253,0,7,240,0,31,192,0,0,253,0,7,240,0,31,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,199,128,0,254,85,91,245,85,85,71,224,0,253,0,7,240,0,0,11,208,0,84,0,7,244,0,0,31,192,0,0,0,3,255,255,255,255,192,0,0,0,1,255,255,255,255,0,0,0,0,0,26,170,170,164,0, + // 0x9752 青 + 82,151,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,6,170,170,175,250,170,170,164,0,7,255,255,255,255,255,255,248,0,7,255,255,255,255,255,255,248,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,170,170,171,250,170,170,128,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,106,170,170,175,250,170,170,170,64,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,47,234,170,170,170,255,0,0,0,47,128,0,0,0,191,0,0,0,47,128,0,0,0,191,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,47,213,85,85,85,191,0,0,0,47,128,0,0,0,191,0,0,0,47,213,85,85,85,191,0,0,0,47,255,255,255,255,255,0,0,0,47,255,255,255,255,255,0,0,0,47,128,0,0,0,191,0,0,0,47,128,0,0,0,191,0,0,0,47,128,0,0,0,191,0,0,0,47,128,0,3,255,255,0,0,0,47,128,0,2,255,253,0,0,0,47,128,0,0,170,144,0,0, + // 0x975e 非 + 94,151,35,36,68,37,1,252,0,0,2,164,0,169,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,248,0,254,0,0,0,15,255,255,248,0,255,255,255,224,15,255,255,248,0,255,255,255,224,15,255,255,248,0,255,255,255,224,0,0,3,248,0,253,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,248,0,253,0,0,0,11,255,255,248,0,255,255,255,192,11,255,255,248,0,255,255,255,192,11,255,255,248,0,255,255,255,192,0,0,3,248,0,254,0,0,0,0,0,3,248,0,253,0,0,0,0,0,3,244,0,253,0,0,0,0,0,3,244,0,253,0,0,0,0,0,7,255,208,253,0,0,0,0,22,255,255,208,254,0,0,0,127,255,255,255,208,255,255,255,244,127,255,255,245,0,255,255,255,244,63,254,191,192,0,255,255,255,244,41,0,63,192,0,253,0,0,0,0,0,255,64,0,253,0,0,0,0,2,254,0,0,253,0,0,0,0,11,252,0,0,253,0,0,0,0,47,244,0,0,253,0,0,0,1,255,208,0,0,253,0,0,0,11,255,64,0,0,253,0,0,0,11,252,0,0,0,253,0,0,0,2,208,0,0,0,253,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9762 面 + 98,151,33,32,32,37,2,253,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,15,240,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,47,192,0,0,0,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,208,31,192,1,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,255,255,252,1,252,0,15,192,15,255,255,252,1,252,0,15,192,15,234,171,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,234,171,252,1,252,0,15,192,15,255,255,252,1,252,0,15,192,15,255,255,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,192,1,252,1,252,0,15,192,15,192,1,252,1,252,0,15,208,31,192,1,252,1,252,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,192,0,0,0,0,1,252,0,15,192,0,0,0,0,1,252,0, + // 0x9805 項 + 5,152,35,33,41,37,1,253,0,0,0,15,255,255,255,255,248,0,0,0,15,255,255,255,255,248,21,85,85,95,255,255,255,255,248,63,255,255,224,0,15,240,0,0,63,255,255,224,0,15,208,0,0,0,47,192,0,0,31,192,0,0,0,31,192,1,255,255,255,255,192,0,31,192,1,255,255,255,255,192,0,31,192,1,254,170,170,175,192,0,31,192,1,248,0,0,15,192,0,31,192,1,248,0,0,15,192,0,31,192,1,248,0,0,15,192,0,31,192,1,255,255,255,255,192,0,31,192,1,255,255,255,255,192,0,31,192,1,253,85,85,111,192,0,31,192,1,248,0,0,15,192,0,31,192,1,248,0,0,15,192,0,31,192,1,253,85,85,111,192,0,31,192,113,255,255,255,255,192,0,31,223,241,255,255,255,255,192,0,47,255,245,248,0,0,15,192,6,255,255,209,248,0,0,15,192,191,255,248,1,248,0,0,15,192,127,254,64,1,255,255,255,255,192,63,208,0,1,255,255,255,255,192,20,0,0,1,170,170,170,170,128,0,0,0,0,7,64,2,128,0,0,0,0,0,47,224,15,244,0,0,0,0,2,255,208,15,255,0,0,0,0,47,255,0,1,255,208,0,0,3,255,244,0,0,47,248,0,0,1,255,64,0,0,7,244,0,0,0,100,0,0,0,0,192, + // 0x9810 預 + 16,152,35,34,50,37,1,252,63,255,255,250,255,255,255,255,240,63,255,255,254,255,255,255,255,240,63,255,255,245,255,255,255,255,240,0,0,15,240,0,3,248,0,0,0,0,47,192,0,7,244,0,0,2,192,127,64,0,11,240,0,0,7,249,254,0,63,255,255,255,192,7,255,248,0,63,255,255,255,192,0,191,240,0,63,170,170,175,192,0,15,253,0,63,0,0,31,192,0,2,255,0,63,0,0,31,192,0,0,127,0,63,85,85,111,192,191,255,255,255,127,255,255,255,192,191,255,255,255,63,255,255,255,192,191,255,255,255,63,0,0,31,192,0,15,208,189,63,0,0,31,192,0,15,208,252,63,0,0,31,192,0,15,208,252,63,85,85,111,192,0,15,209,248,63,255,255,255,192,0,15,211,240,63,255,255,255,192,0,15,209,160,63,0,0,31,192,0,15,208,0,63,0,0,31,192,0,15,208,0,63,0,0,31,192,0,15,208,0,63,255,255,255,192,0,15,208,0,63,255,255,255,192,0,15,208,0,42,170,170,170,128,0,15,208,0,0,128,0,64,0,0,15,208,0,3,244,3,244,0,0,15,208,0,31,252,11,254,0,0,31,208,1,255,224,1,255,192,15,255,208,31,255,64,0,63,240,15,255,192,47,248,0,0,11,248,11,254,0,11,128,0,0,1,208,0,0,0,0,0,0,0,0,0, + // 0x984d 額 + 77,152,35,36,68,37,1,252,0,2,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,63,255,255,255,240,47,255,255,255,191,255,255,255,240,63,255,255,255,191,255,255,255,240,63,255,255,255,128,2,252,0,0,63,0,0,31,128,3,248,0,0,63,11,144,31,128,3,244,0,0,63,15,192,31,143,255,255,255,192,0,47,213,80,15,255,255,255,192,0,127,255,252,15,234,170,175,192,0,255,255,252,15,192,0,15,192,3,248,3,244,15,192,0,15,192,15,248,7,240,15,229,85,111,192,127,255,79,208,15,255,255,255,192,127,127,255,128,15,255,255,255,192,8,15,255,0,15,192,0,15,192,0,3,255,64,15,192,0,15,192,0,15,255,224,15,192,0,15,192,0,127,223,252,15,229,85,111,192,7,255,2,255,79,255,255,255,192,127,252,0,191,143,255,255,255,192,191,250,170,191,15,192,0,15,192,63,255,255,248,15,192,0,15,192,3,255,255,244,15,192,0,15,192,3,240,2,244,15,255,255,255,192,3,240,2,244,15,255,255,255,192,3,240,2,244,10,170,170,170,128,3,240,2,244,0,32,0,64,0,3,240,2,244,1,253,2,244,0,3,255,255,244,11,254,3,254,0,3,255,255,244,191,244,0,191,192,3,250,170,171,255,192,0,31,244,3,240,0,3,253,0,0,7,248,1,80,0,0,208,0,0,0,208,0,0,0,0,0,0,0,0,0, + // 0x985e 類 + 94,152,35,35,59,37,1,253,0,1,80,0,0,0,0,0,0,6,2,240,41,0,0,0,0,0,15,130,240,63,127,255,255,255,240,11,194,240,125,63,255,255,255,240,7,226,240,252,63,255,255,255,240,3,226,240,244,0,2,252,0,0,0,2,240,16,0,3,248,0,0,63,255,255,255,64,3,240,0,0,63,255,255,255,79,255,255,255,192,42,175,254,170,79,255,255,255,192,0,31,253,0,15,234,170,175,192,0,127,255,128,15,192,0,15,192,1,255,255,248,15,192,0,15,192,7,246,246,255,79,213,85,111,192,47,210,240,127,79,255,255,255,192,127,130,240,14,15,255,255,255,192,29,2,240,0,15,192,0,15,192,0,0,0,0,15,192,0,15,192,0,3,240,0,15,192,0,15,192,0,3,240,0,15,255,255,255,192,0,3,240,0,15,255,255,255,192,63,255,255,255,143,213,85,111,192,63,255,255,255,143,192,0,15,192,63,255,255,255,143,192,0,15,192,0,3,240,0,15,192,0,15,192,0,7,244,0,15,255,255,255,192,0,15,254,0,15,255,255,255,192,0,31,255,208,10,170,170,170,128,0,63,239,244,0,112,0,144,0,0,255,71,254,1,254,3,248,0,7,253,0,255,11,253,3,255,0,127,248,0,60,191,240,0,191,208,63,208,0,11,255,128,0,31,248,30,0,0,3,253,0,0,3,244,0,0,0,0,208,0,0,0,128, + // 0x98a8 風 + 168,152,35,34,50,37,1,252,0,127,255,255,255,255,255,244,0,0,127,255,255,255,255,255,244,0,0,127,255,255,255,255,255,244,0,0,127,0,0,0,0,7,244,0,0,127,0,0,0,5,3,244,0,0,127,0,1,107,255,67,244,0,0,127,43,255,255,255,211,244,0,0,127,63,255,255,249,3,244,0,0,127,46,81,248,0,3,244,0,0,127,0,1,248,0,3,244,0,0,127,0,1,248,0,3,244,0,0,127,26,171,254,170,131,244,0,0,191,31,255,255,255,195,244,0,0,191,31,255,255,255,195,244,0,0,190,31,1,248,15,195,244,0,0,190,31,1,248,15,195,244,0,0,190,31,1,248,15,195,244,0,0,190,31,1,248,15,195,244,0,0,254,31,1,248,15,195,244,0,0,253,31,171,254,175,195,244,0,0,253,31,255,255,255,194,244,0,0,252,31,255,255,255,194,248,0,1,252,0,1,248,1,2,248,0,2,252,0,1,248,63,1,248,0,3,248,0,1,248,47,129,252,16,3,244,0,1,248,15,192,252,48,7,240,5,90,254,175,240,252,60,11,241,255,255,255,255,244,252,124,15,209,255,255,255,255,248,190,120,47,192,255,234,149,0,252,127,248,127,128,0,0,0,0,189,63,244,63,0,0,0,0,0,80,31,240,9,0,0,0,0,0,0,11,192,0,0,0,0,0,0,0,0,0, + // 0x98fd 飽 + 253,152,35,35,59,37,1,253,0,3,248,0,1,228,0,0,0,0,11,254,0,2,252,0,0,0,0,15,255,192,3,244,0,0,0,0,47,239,240,7,240,0,0,0,0,127,75,248,11,240,0,0,0,0,254,2,254,15,255,255,255,224,3,252,0,191,95,255,255,255,208,11,244,252,62,63,255,255,255,208,63,208,252,8,127,0,0,11,208,255,128,252,0,254,0,0,11,208,127,255,255,255,252,0,0,15,208,27,255,255,255,255,255,252,15,208,3,250,170,253,239,255,252,15,208,3,240,0,252,79,255,252,15,208,3,240,0,252,0,0,252,15,208,3,255,255,252,0,0,252,15,208,3,255,255,252,0,0,252,15,192,3,245,85,252,0,0,252,15,192,3,240,0,252,0,0,252,15,192,3,240,0,252,31,255,252,15,192,3,255,255,252,31,255,252,31,192,3,255,255,252,31,255,252,47,192,3,250,170,168,31,128,15,255,128,3,240,0,0,31,128,15,255,64,3,240,11,128,31,128,11,253,0,3,240,31,192,31,128,0,0,0,3,240,11,240,31,128,0,0,0,3,240,3,244,31,128,0,0,128,3,240,111,252,31,128,0,1,248,3,255,255,253,31,128,0,1,248,47,255,255,255,31,128,0,2,248,63,255,228,127,31,192,0,3,244,63,249,0,63,95,255,255,255,240,41,0,0,24,15,255,255,255,224,0,0,0,0,1,255,255,255,64, + // 0x9918 餘 + 24,153,35,35,59,37,1,253,0,11,244,0,0,7,240,0,0,0,15,253,0,0,15,252,0,0,0,47,255,64,0,31,253,0,0,0,127,47,208,0,63,255,0,0,0,254,15,240,0,191,63,192,0,2,252,3,252,1,253,15,224,0,7,244,1,254,3,248,11,244,0,31,255,255,188,15,240,3,253,0,127,175,255,96,63,192,0,255,64,254,21,85,0,255,64,0,63,224,40,0,0,3,253,0,0,31,248,7,255,255,251,255,255,255,255,244,7,255,255,246,235,255,255,253,240,7,245,87,244,139,255,255,252,64,7,224,2,244,0,3,240,0,0,7,224,2,244,0,3,240,0,0,7,255,255,244,0,3,240,0,0,7,255,255,244,0,3,240,0,0,7,224,2,245,255,255,255,255,240,7,224,2,245,255,255,255,255,240,7,255,255,245,255,255,255,255,240,7,255,255,244,0,3,240,0,0,7,245,85,80,0,3,240,4,0,7,224,0,0,31,131,240,189,0,7,250,170,160,63,67,240,127,0,7,255,255,244,63,3,240,63,64,7,255,255,244,191,3,240,31,192,7,224,0,0,253,3,240,15,208,7,224,0,2,252,3,240,11,240,7,250,170,171,248,3,240,3,240,7,255,255,255,240,3,240,3,244,7,255,255,253,208,3,240,2,144,7,224,0,0,2,255,240,0,0,7,224,0,0,0,255,224,0,0,7,224,0,0,0,255,128,0,0, + // 0x99ac 馬 + 172,153,34,34,50,37,1,252,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,63,234,170,255,170,170,160,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,255,255,255,255,255,240,0,0,63,255,255,255,255,255,240,0,0,63,234,170,255,170,170,160,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,64,0,254,0,0,0,0,0,63,255,255,255,255,255,255,224,0,63,255,255,255,255,255,255,208,0,63,255,255,255,255,255,255,208,0,0,0,0,0,0,0,15,208,0,80,0,0,0,2,128,15,208,0,253,5,64,104,15,208,15,192,0,252,31,192,252,7,240,31,192,1,252,15,192,126,2,244,31,192,3,248,15,192,63,0,252,47,192,3,244,11,208,47,64,184,47,192,15,240,11,224,31,128,0,63,128,31,208,7,224,15,192,0,191,64,127,192,7,240,8,1,255,255,0,47,0,1,64,0,0,255,254,0,5,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0, + // 0x9a45 驅 + 69,154,35,35,59,37,1,252,10,170,170,164,170,170,170,170,160,15,255,255,248,255,255,255,255,240,15,255,255,248,255,255,255,255,240,15,193,244,0,252,0,0,0,0,15,193,244,0,252,0,0,0,0,15,193,244,0,252,15,255,254,0,15,235,250,160,252,15,255,254,0,15,255,255,240,252,15,192,62,0,15,255,255,240,252,15,192,62,0,15,193,244,0,252,15,192,62,0,15,193,244,0,252,15,192,62,0,15,193,244,0,252,15,192,62,0,15,255,255,240,252,15,255,254,0,15,255,255,240,252,15,255,254,0,15,235,254,160,252,0,0,0,0,15,193,244,0,252,0,0,0,0,15,193,244,0,252,0,0,0,0,15,193,244,0,252,191,241,255,224,15,255,255,252,252,191,241,255,224,15,255,255,252,252,176,241,209,224,10,170,170,252,252,176,241,209,224,0,0,0,252,252,176,241,209,224,9,0,36,252,252,176,241,209,224,30,183,124,248,252,176,241,209,224,30,179,157,248,252,176,241,209,224,30,115,207,248,252,191,241,255,224,45,118,203,248,252,191,241,255,224,45,117,193,248,252,0,0,0,0,60,117,209,244,252,0,0,0,0,124,116,1,244,254,170,170,170,164,180,0,2,240,255,255,255,255,248,16,0,171,240,255,255,255,255,248,0,0,255,224,252,0,0,0,0,0,0,255,128,184,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9ad4 體 + 212,154,34,36,68,37,2,252,0,0,0,0,0,124,46,0,0,6,170,170,128,0,124,47,0,0,11,255,255,192,0,124,47,0,0,11,255,255,192,21,189,127,85,0,11,192,7,192,191,255,255,255,0,11,192,7,192,191,255,255,255,0,11,199,255,192,188,60,45,31,0,11,199,255,192,188,60,45,31,0,11,199,139,192,191,255,255,255,0,11,199,71,192,191,255,255,255,0,11,199,71,192,188,61,61,47,0,11,199,71,192,188,60,45,31,0,255,255,255,253,189,125,125,111,0,255,255,255,253,191,255,255,255,0,253,85,85,189,191,255,255,255,0,252,0,0,125,0,0,0,0,0,255,255,255,254,85,85,85,85,64,11,255,255,194,255,255,255,255,192,11,255,255,194,255,255,255,255,192,11,208,15,192,0,0,0,0,0,11,208,15,192,63,255,255,254,0,11,255,255,192,63,255,255,254,0,11,255,255,192,63,0,0,126,0,11,229,95,192,63,0,0,126,0,11,208,15,192,63,0,0,126,0,11,208,15,192,63,255,255,254,0,11,255,255,192,63,255,255,254,0,11,255,255,192,1,208,3,144,0,11,229,95,192,7,224,3,240,0,11,208,15,192,3,240,11,208,0,11,208,15,192,1,244,15,192,0,11,208,15,192,0,248,31,64,0,11,209,175,199,255,255,255,255,224,11,209,255,199,255,255,255,255,224,11,208,254,2,170,170,170,170,144,0,0,0,0,0,0,0,0,0, + // 0x9ad8 高 + 216,154,33,35,59,37,2,253,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,85,85,85,80,0,0,0,7,255,255,255,255,244,0,0,0,7,255,255,255,255,244,0,0,0,7,240,0,0,3,244,0,0,0,7,240,0,0,3,244,0,0,0,7,240,0,0,3,244,0,0,0,7,255,255,255,255,244,0,0,0,7,255,255,255,255,244,0,0,0,1,85,85,85,85,80,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,252,0,15,208,0,0,0,0,0,252,0,15,208,0,0,0,0,0,252,0,15,208,5,85,85,84,0,252,0,15,208,31,255,255,253,0,252,0,15,208,31,255,255,253,0,252,0,15,208,31,64,0,189,0,252,0,15,208,31,64,0,189,0,252,0,15,208,31,64,0,189,0,252,0,15,208,31,255,255,253,0,252,0,15,208,31,255,255,253,0,252,0,15,208,31,149,85,90,2,252,0,15,208,31,64,0,7,255,252,0,15,208,5,0,0,3,255,248,0,15,208,0,0,0,2,255,144,0, + // 0x9ec3 黃 + 195,158,33,36,68,37,2,252,0,0,126,0,0,47,128,0,0,0,0,191,0,0,47,192,0,0,0,0,191,0,0,47,192,0,0,15,255,255,255,255,255,255,253,0,15,255,255,255,255,255,255,253,0,10,170,255,170,170,191,234,169,0,0,0,191,0,0,47,192,0,0,0,0,191,85,85,127,192,0,0,0,0,191,255,255,255,192,0,0,0,0,191,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,0,0,0,7,240,0,0,0,0,0,85,85,91,245,85,85,64,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,253,0,7,240,0,31,192,0,0,253,0,7,240,0,31,192,0,0,254,85,91,245,85,95,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,253,0,7,240,0,31,192,0,0,253,0,7,240,0,31,192,0,0,254,85,91,245,85,111,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,0,126,0,0,63,128,0,0,0,11,255,192,0,255,254,0,0,2,255,254,0,0,27,255,244,0,191,255,208,0,0,0,127,255,128,191,248,0,0,0,0,2,255,64,46,64,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0, + // 0x9ede 點 + 222,158,35,35,59,37,1,253,0,0,0,0,0,1,252,0,0,5,85,85,85,64,1,252,0,0,15,255,255,255,128,1,252,0,0,15,255,255,255,128,1,252,0,0,15,64,244,15,128,1,252,0,0,15,148,244,143,128,1,252,0,0,15,184,244,255,128,1,252,0,0,15,124,245,223,128,1,252,0,0,15,108,246,207,128,1,255,255,248,15,93,247,143,128,1,255,255,248,15,93,251,79,128,1,255,255,248,15,64,245,15,128,1,252,0,0,15,149,249,95,128,1,252,0,0,15,255,255,255,128,1,252,0,0,15,255,255,255,128,1,252,0,0,0,1,248,0,0,1,252,0,0,0,1,248,0,0,1,252,0,0,10,171,254,170,128,1,252,0,0,31,255,255,255,199,255,255,255,192,31,255,255,255,199,255,255,255,192,0,1,248,0,7,255,255,255,192,0,1,248,0,7,224,0,15,192,0,1,254,191,215,224,0,15,192,63,255,255,255,215,224,0,15,192,63,255,255,255,215,224,0,15,192,63,165,80,0,7,224,0,15,192,0,0,5,62,7,224,0,15,192,6,79,31,31,7,224,0,15,192,11,207,79,15,199,224,0,15,192,15,143,139,135,215,224,0,15,192,15,75,135,195,231,255,255,255,192,31,75,195,193,235,255,255,255,192,63,7,195,128,7,255,255,255,192,189,1,64,0,7,224,0,31,192,24,0,0,0,7,224,0,10,128, + // 0x9f4a 齊 + 74,159,34,36,68,37,2,252,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,170,170,170,175,254,170,170,170,64,191,255,255,255,255,255,255,255,128,191,255,255,255,255,255,255,255,128,0,0,0,96,3,144,0,0,0,0,0,0,248,11,208,2,244,0,63,255,255,189,15,149,191,253,0,63,255,255,63,47,47,255,208,0,22,249,127,29,89,47,159,192,0,2,240,63,7,240,47,7,208,0,3,240,63,7,240,47,3,240,0,7,224,62,7,240,47,1,248,0,15,208,62,7,240,47,5,253,0,47,213,189,7,241,191,255,127,128,255,31,252,7,241,255,255,47,208,252,15,244,7,240,250,80,11,128,96,0,0,0,0,0,0,1,0,0,47,192,0,0,0,63,64,0,0,47,192,0,0,0,63,64,0,0,47,255,255,255,255,255,64,0,0,47,255,255,255,255,255,64,0,0,47,234,170,170,170,191,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,234,170,170,170,191,64,0,0,127,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,1,254,0,0,0,0,63,64,0,3,252,0,0,0,0,63,64,0,31,248,0,0,0,0,63,64,0,127,240,0,0,0,0,63,64,0,47,192,0,0,0,0,63,64,0,14,0,0,0,0,0,63,64,0,0,0,0,0,0,0,0,0,0, + // 0xff1a : + 26,255,7,24,48,37,15,2,31,208,63,240,191,248,127,244,63,240,31,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,208,63,240,191,248,191,244,63,240,31,208, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Vietnamese_27.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Vietnamese_27.cpp new file mode 100644 index 0000000000..6896d15444 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_27px/NotoSans_Medium_Vietnamese_27.cpp @@ -0,0 +1,246 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Vietnamese 37pt, capital 'A' height: 27px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 +extern const uint8_t NotoSans_Medium_Vietnamese_27[18122] = { + 162,27,2,1,249,30,35,247, // unifont_t + // 0x0102 Ă + 2,1,24,34,204,24,0,0,0,10,0,0,160,0,0,15,128,2,240,0,0,11,249,111,224,0,0,3,255,255,192,0,0,0,255,254,0,0,0,0,6,144,0,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x0103 ă + 3,1,18,29,145,21,1,255,1,160,0,26,0,1,240,0,62,0,0,254,86,252,0,0,127,255,248,0,0,31,255,208,0,0,1,169,0,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x0110 Đ + 16,1,24,27,162,27,1,0,1,85,85,64,0,0,7,255,255,255,64,0,7,255,255,255,244,0,7,255,255,255,254,0,7,248,0,27,255,192,7,248,0,0,191,224,7,248,0,0,47,244,7,248,0,0,15,252,7,248,0,0,7,252,7,248,0,0,3,253,7,248,0,0,2,254,7,248,0,0,1,255,191,255,255,64,1,255,255,255,255,128,1,255,255,255,255,128,1,255,171,254,170,64,1,255,7,248,0,0,2,254,7,248,0,0,3,253,7,248,0,0,3,252,7,248,0,0,11,252,7,248,0,0,31,244,7,248,0,0,127,240,7,248,0,2,255,192,7,253,85,191,255,64,7,255,255,255,252,0,7,255,255,255,208,0,7,255,255,228,0,0, + // 0x0111 đ + 17,1,21,29,174,23,2,255,0,0,0,15,240,0,0,0,0,15,240,0,0,0,0,15,240,0,0,3,255,255,255,128,0,7,255,255,255,128,0,3,255,255,255,128,0,0,0,15,240,0,0,0,0,15,240,0,0,47,232,15,240,0,2,255,255,79,240,0,11,255,255,239,240,0,31,254,91,255,240,0,63,224,0,191,240,0,127,192,0,63,240,0,191,128,0,31,240,0,255,64,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,64,0,15,240,0,191,128,0,47,240,0,63,208,0,63,240,0,63,244,1,255,240,0,15,255,255,255,240,0,3,255,255,203,240,0,0,191,254,7,240,0,0,1,64,0,0,0, + // 0x0128 Ĩ + 40,1,14,34,136,13,0,0,1,64,1,64,47,248,3,208,127,255,155,192,254,191,255,128,240,11,255,0,144,0,100,0,0,0,0,0,21,85,85,0,47,255,254,0,47,255,254,0,2,255,224,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,191,128,0,11,255,249,0,47,255,254,0,47,255,254,0, + // 0x0129 ĩ + 41,1,14,28,112,10,254,0,1,64,0,80,15,253,1,240,63,255,215,224,126,191,255,192,248,7,255,64,160,0,100,0,0,0,0,0,0,0,0,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0, + // 0x0168 Ũ + 104,1,21,35,210,27,3,255,0,1,64,0,80,0,0,31,248,3,224,0,0,127,255,155,208,0,0,254,191,255,192,0,0,240,11,255,0,0,0,160,0,100,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,254,0,0,0,0,21,64,0,0, + // 0x0169 ũ + 105,1,17,29,145,23,3,255,0,20,0,5,0,1,255,128,62,0,7,255,249,188,0,15,235,255,252,0,15,0,191,240,0,10,0,6,64,0,0,0,0,0,0,0,0,0,0,0,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,0,0, + // 0x01a0 Ơ + 160,1,28,29,203,29,2,255,0,0,0,0,0,0,255,0,0,107,234,64,0,255,0,11,255,255,248,1,254,0,127,255,255,255,66,253,1,255,254,175,255,215,252,3,255,128,0,127,255,240,15,252,0,0,15,255,128,31,244,0,0,3,254,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,1,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x01a1 ơ + 161,1,23,24,144,24,2,255,0,0,0,0,11,248,0,0,0,0,11,244,0,0,16,0,15,240,0,47,255,208,15,240,2,255,255,252,63,208,11,255,255,255,255,128,31,248,1,255,253,0,63,208,0,63,224,0,127,192,0,15,240,0,191,64,0,15,240,0,255,0,0,11,244,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,11,244,0,191,64,0,15,240,0,127,192,0,15,240,0,63,208,0,63,224,0,31,248,0,255,192,0,11,255,255,255,0,0,1,255,255,252,0,0,0,47,255,208,0,0,0,0,84,0,0,0, + // 0x01af Ư + 175,1,28,29,203,30,3,255,0,0,0,0,0,0,255,85,0,0,0,21,65,255,191,64,0,0,63,194,253,191,64,0,0,63,195,252,191,64,0,0,63,203,248,191,64,0,0,63,255,224,191,64,0,0,63,255,128,191,64,0,0,63,228,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,127,192,0,0,127,128,0,63,208,0,0,255,64,0,47,240,0,2,255,0,0,15,254,64,31,253,0,0,3,255,255,255,248,0,0,0,255,255,255,208,0,0,0,31,255,254,0,0,0,0,0,21,64,0,0,0, + // 0x01b0 ư + 176,1,24,24,144,26,3,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,1,254,255,0,0,47,194,253,255,0,0,47,199,252,255,0,0,47,255,240,255,0,0,47,255,192,255,0,0,47,249,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,127,192,0,255,128,0,255,192,0,191,208,7,255,192,0,63,255,255,239,192,0,31,255,255,79,192,0,2,255,248,15,192,0,0,21,0,0,0,0, + // 0x0303 ̃ + 3,3,14,6,24,0,238,22,1,64,1,64,47,248,3,208,127,255,155,192,254,191,255,128,240,11,255,0,144,0,100,0, + // 0x0309 ̉ + 9,3,7,10,20,0,242,21,85,0,255,240,255,252,1,252,0,252,2,248,47,240,47,64,31,0,0,0, + // 0x0323 ̣ + 35,3,5,5,10,0,242,249,25,0,63,128,127,192,127,192,30,0, + // 0x0340 ̀ + 64,3,8,7,14,0,250,22,85,0,255,128,63,192,31,240,7,248,0,253,0,41, + // 0x0341 ́ + 65,3,8,7,14,0,254,22,0,85,2,255,3,253,15,244,47,208,127,0,104,0, + // 0x1ea0 Ạ + 160,30,24,34,204,24,0,249,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,128,0,0,0,0,15,240,0,0,0,0,15,244,0,0,0,0,15,240,0,0,0,0,3,208,0,0, + // 0x1ea1 ạ + 161,30,18,28,140,21,1,249,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0,0,0,0,0,0,0,0,100,0,0,0,1,254,0,0,0,2,255,0,0,0,1,254,0,0,0,0,184,0,0, + // 0x1ea2 Ả + 162,30,24,37,222,24,0,0,0,0,21,64,0,0,0,0,63,248,0,0,0,0,63,254,0,0,0,0,0,127,0,0,0,0,0,63,0,0,0,0,0,254,0,0,0,0,11,248,0,0,0,0,11,192,0,0,0,0,11,192,0,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x1ea3 ả + 163,30,18,32,160,21,1,255,0,1,84,0,0,0,11,255,64,0,0,11,255,192,0,0,0,15,224,0,0,0,11,208,0,0,0,31,192,0,0,0,255,64,0,0,0,248,0,0,0,0,244,0,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x1ea4 Ấ + 164,30,24,36,216,24,0,0,0,0,0,0,7,240,0,0,0,0,15,208,0,0,15,244,47,64,0,0,63,252,124,0,0,0,191,255,0,0,0,2,252,47,128,0,0,7,224,7,224,0,0,5,64,0,80,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x1ea5 ấ + 165,30,20,31,155,21,1,255,0,0,0,0,254,0,0,0,1,252,0,2,170,3,240,0,7,255,79,128,0,15,255,208,0,0,63,71,240,0,0,253,0,252,0,0,160,0,41,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x1ea6 Ầ + 166,30,24,36,216,24,0,0,15,224,0,0,0,0,3,240,0,0,0,0,1,252,15,244,0,0,0,61,63,252,0,0,0,0,191,255,0,0,0,2,248,47,128,0,0,7,224,7,224,0,0,5,64,0,80,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x1ea7 ầ + 167,30,19,31,155,21,0,255,191,0,0,0,0,47,128,0,0,0,11,208,106,128,0,2,241,255,224,0,0,3,255,244,0,0,15,225,252,0,0,63,64,63,0,0,40,0,10,64,0,0,0,0,0,0,0,5,0,0,0,27,255,249,0,0,255,255,255,128,0,255,255,255,208,0,121,0,63,240,0,0,0,15,240,0,0,0,11,240,0,0,0,11,244,0,0,0,11,244,0,6,255,255,244,0,191,255,255,244,3,255,234,95,244,11,253,0,11,244,15,240,0,11,244,15,240,0,15,244,31,224,0,15,244,15,240,0,47,244,15,248,0,191,244,11,255,175,251,244,3,255,255,211,244,0,191,255,2,244,0,1,80,0,0, + // 0x1ea8 Ẩ + 168,30,24,39,234,24,0,0,0,0,0,0,80,0,0,0,0,0,255,64,0,0,0,0,91,192,0,0,0,0,3,192,0,0,0,0,31,192,0,0,31,240,61,0,0,0,63,252,60,0,0,0,255,254,0,0,0,2,248,63,128,0,0,11,208,11,208,0,0,5,0,1,80,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x1ea9 ẩ + 169,30,19,33,165,21,1,255,0,0,0,15,240,0,0,0,10,248,0,0,0,0,124,0,0,0,1,248,0,1,170,7,208,0,7,255,135,128,0,15,255,208,0,0,63,135,240,0,0,189,0,252,0,0,160,0,25,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x1eaa Ẫ + 170,30,24,39,234,24,0,0,0,0,185,0,176,0,0,3,255,209,240,0,0,7,235,255,208,0,0,11,64,191,128,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,47,252,0,0,0,0,191,254,0,0,0,1,252,47,128,0,0,7,224,7,224,0,0,5,0,0,80,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x1eab ẫ + 171,30,18,34,170,21,1,255,0,26,64,13,0,0,127,248,61,0,0,254,255,252,0,0,240,47,244,0,0,64,1,64,0,0,1,169,0,0,0,3,255,64,0,0,15,255,192,0,0,63,135,240,0,0,253,0,252,0,0,160,0,25,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x1eac Ậ + 172,30,24,42,252,24,0,249,0,0,5,80,0,0,0,0,47,252,0,0,0,0,127,254,0,0,0,0,255,191,64,0,0,3,248,47,208,0,0,15,224,7,244,0,0,26,64,0,164,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,128,0,0,0,0,15,240,0,0,0,0,15,244,0,0,0,0,15,244,0,0,0,0,2,208,0,0, + // 0x1ead ậ + 173,30,18,36,180,21,1,249,0,0,85,0,0,0,3,255,64,0,0,15,255,192,0,0,47,239,240,0,0,191,67,252,0,1,252,0,190,0,2,160,0,26,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0,0,0,0,0,0,0,0,100,0,0,0,2,253,0,0,0,3,254,0,0,0,3,253,0,0,0,0,184,0,0, + // 0x1eae Ắ + 174,30,24,38,228,24,0,0,0,0,0,21,0,0,0,0,0,127,0,0,0,0,0,252,0,0,0,0,2,240,0,0,0,7,67,129,224,0,0,7,192,2,224,0,0,3,244,27,208,0,0,2,255,255,128,0,0,0,191,254,0,0,0,0,5,80,0,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x1eaf ắ + 175,30,18,32,160,21,1,255,0,0,15,224,0,0,0,47,128,0,0,0,62,0,0,0,160,184,40,0,0,244,0,124,0,0,189,1,252,0,0,63,255,244,0,0,31,255,208,0,0,1,169,0,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x1eb0 Ằ + 176,30,24,38,228,24,0,0,0,0,84,0,0,0,0,0,254,0,0,0,0,0,63,0,0,0,0,0,15,128,0,0,0,7,66,193,224,0,0,7,192,3,224,0,0,3,244,31,208,0,0,2,255,255,128,0,0,0,191,254,0,0,0,0,5,80,0,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x1eb1 ằ + 177,30,18,32,160,21,1,255,0,47,192,0,0,0,11,208,0,0,0,2,240,0,0,0,160,184,40,0,0,244,0,124,0,0,253,1,252,0,0,63,255,240,0,0,31,255,208,0,0,1,169,0,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x1eb2 Ẳ + 178,30,24,39,234,24,0,0,0,0,10,64,0,0,0,0,15,244,0,0,0,0,0,184,0,0,0,0,0,184,0,0,0,0,3,240,0,0,0,7,67,129,224,0,0,7,192,3,224,0,0,3,244,31,208,0,0,2,255,255,128,0,0,0,191,254,0,0,0,0,5,80,0,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x1eb3 ẳ + 179,30,18,34,170,21,1,255,0,1,80,0,0,0,2,254,0,0,0,0,31,0,0,0,0,15,0,0,0,0,190,0,0,0,160,180,40,0,0,244,0,60,0,0,189,1,252,0,0,63,255,244,0,0,15,255,208,0,0,1,169,0,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x1eb4 Ẵ + 180,30,24,39,234,24,0,0,0,0,169,0,176,0,0,3,255,209,240,0,0,7,235,255,208,0,0,11,64,191,128,0,0,0,0,0,0,0,0,5,0,0,80,0,0,11,192,2,224,0,0,7,228,27,208,0,0,2,255,255,128,0,0,0,191,254,0,0,0,0,5,80,0,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255, + // 0x1eb5 ẵ + 181,30,18,34,170,21,1,255,0,10,64,9,0,0,63,248,46,0,0,254,255,252,0,0,240,31,244,0,0,64,0,64,0,0,80,0,20,0,0,240,0,60,0,0,253,1,252,0,0,127,255,244,0,0,31,255,208,0,0,1,169,0,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0, + // 0x1eb6 Ặ + 182,30,24,41,246,24,0,249,0,10,64,0,160,0,0,11,192,1,240,0,0,7,249,111,240,0,0,3,255,255,192,0,0,0,191,255,0,0,0,0,6,144,0,0,0,0,0,0,0,0,0,0,10,160,0,0,0,0,31,248,0,0,0,0,47,252,0,0,0,0,63,253,0,0,0,0,127,254,0,0,0,0,254,191,0,0,0,1,253,63,64,0,0,2,252,63,192,0,0,3,252,47,192,0,0,7,244,15,224,0,0,15,240,15,240,0,0,15,224,11,244,0,0,47,208,3,248,0,0,63,192,3,252,0,0,127,128,1,253,0,0,191,64,0,255,0,0,255,255,255,255,0,1,255,255,255,255,128,3,255,255,255,255,192,3,253,85,85,127,208,11,248,0,0,31,224,15,240,0,0,15,240,31,240,0,0,11,244,47,208,0,0,7,252,63,192,0,0,3,252,127,128,0,0,2,254,255,64,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,128,0,0,0,0,15,240,0,0,0,0,15,244,0,0,0,0,15,244,0,0,0,0,2,208,0,0, + // 0x1eb7 ặ + 183,30,18,35,175,21,1,249,0,160,0,26,0,0,244,0,62,0,0,254,150,253,0,0,127,255,248,0,0,31,255,224,0,0,1,105,0,0,0,0,0,0,0,0,0,20,0,0,0,111,255,228,0,3,255,255,254,0,3,255,255,255,64,1,228,0,255,192,0,0,0,63,192,0,0,0,47,192,0,0,0,47,208,0,0,0,47,208,0,27,255,255,208,2,255,255,255,208,15,255,169,127,208,47,244,0,47,208,63,192,0,47,208,63,192,0,63,208,127,128,0,63,208,63,192,0,191,208,63,224,2,255,208,47,254,191,239,208,15,255,255,79,208,2,255,252,11,208,0,5,64,0,0,0,0,0,0,0,0,0,160,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,1,244,0,0, + // 0x1eb8 Ẹ + 184,30,16,34,136,21,3,249,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253,0,0,0,0,0,0,0,0,0,2,128,0,0,15,240,0,0,15,244,0,0,15,240,0,0,7,208,0, + // 0x1eb9 ẹ + 185,30,18,28,140,21,2,249,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0,0,0,0,0,0,0,0,160,0,0,0,3,252,0,0,0,3,253,0,0,0,3,252,0,0,0,1,244,0,0, + // 0x1eba Ẻ + 186,30,16,37,148,21,3,0,0,21,64,0,0,63,252,0,0,63,255,0,0,0,63,0,0,0,63,0,0,0,191,0,0,11,252,0,0,7,208,0,0,7,192,0,0,0,0,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x1ebb ẻ + 187,30,18,32,160,21,2,255,0,1,84,0,0,0,15,255,64,0,0,15,255,192,0,0,0,15,208,0,0,0,15,208,0,0,0,47,192,0,0,1,255,0,0,0,1,244,0,0,0,0,240,0,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x1ebc Ẽ + 188,30,16,34,136,21,3,0,0,16,0,20,3,255,64,124,15,255,245,252,31,239,255,244,47,1,255,224,24,0,21,0,0,0,0,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x1ebd ẽ + 189,30,18,29,145,21,2,255,0,20,0,5,0,1,255,128,62,0,7,255,249,188,0,15,235,255,252,0,15,0,191,240,0,10,0,6,64,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x1ebe Ế + 190,30,18,36,180,21,3,0,0,0,0,11,240,0,0,0,15,208,0,31,244,63,64,0,63,252,124,0,0,255,255,0,0,2,248,47,128,0,11,208,11,208,0,5,0,0,80,0,0,0,0,0,0,21,85,85,84,0,127,255,255,253,0,127,255,255,253,0,127,255,255,253,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,149,85,84,0,127,255,255,248,0,127,255,255,248,0,127,255,255,248,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,149,85,84,0,127,255,255,253,0,127,255,255,253,0,127,255,255,253,0, + // 0x1ebf ế + 191,30,19,31,155,21,2,255,0,0,0,2,252,0,0,0,3,244,0,6,168,15,208,0,15,255,47,0,0,63,255,128,0,0,190,15,208,0,2,248,2,244,0,2,144,0,100,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x1ec0 Ề + 192,30,18,36,180,21,1,0,254,0,0,0,0,63,0,0,0,0,15,192,255,64,0,3,211,255,192,0,0,11,255,240,0,0,47,194,248,0,0,126,0,126,0,0,84,0,5,0,0,0,0,0,0,1,85,85,85,64,7,255,255,255,208,7,255,255,255,208,7,255,255,255,208,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,249,85,85,64,7,255,255,255,128,7,255,255,255,128,7,255,255,255,128,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,249,85,85,64,7,255,255,255,208,7,255,255,255,208,7,255,255,255,208, + // 0x1ec1 ề + 193,30,19,31,155,21,1,255,253,0,0,0,0,127,0,0,0,0,31,128,170,0,0,7,211,255,192,0,0,11,255,224,0,0,47,195,248,0,0,126,0,189,0,0,164,0,26,0,0,0,0,0,0,0,0,20,0,0,0,11,255,224,0,0,191,255,253,0,2,255,255,255,64,7,253,0,127,192,15,240,0,47,224,31,224,0,15,240,47,208,0,11,240,63,192,0,11,244,63,255,255,255,244,63,255,255,255,244,63,255,255,255,244,63,192,0,0,0,63,192,0,0,0,47,208,0,0,0,31,240,0,0,0,15,248,0,0,0,7,254,0,2,208,2,255,255,255,208,0,191,255,255,208,0,11,255,254,64,0,0,21,64,0, + // 0x1ec2 Ể + 194,30,17,39,195,21,3,0,0,0,0,80,0,0,0,0,255,64,0,0,0,91,192,0,0,0,3,192,0,0,0,31,192,0,31,240,61,0,0,63,252,60,0,0,255,254,0,0,2,248,63,128,0,11,208,11,208,0,5,0,1,80,0,0,0,0,0,0,21,85,85,84,0,127,255,255,253,0,127,255,255,253,0,127,255,255,253,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,149,85,84,0,127,255,255,248,0,127,255,255,248,0,127,255,255,248,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,149,85,84,0,127,255,255,253,0,127,255,255,253,0,127,255,255,253,0, + // 0x1ec3 ể + 195,30,18,33,165,21,2,255,0,0,0,63,192,0,0,0,43,224,0,0,0,1,240,0,0,0,7,224,0,6,168,31,64,0,31,254,30,0,0,63,255,64,0,0,254,15,208,0,2,244,3,240,0,2,128,0,100,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x1ec4 Ễ + 196,30,16,39,156,21,3,0,0,185,0,240,3,255,210,224,11,239,255,208,15,0,191,128,0,0,0,0,0,10,160,0,0,63,252,0,0,191,254,0,2,248,63,64,7,208,11,208,5,0,0,80,0,0,0,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253, + // 0x1ec5 ễ + 197,30,18,34,170,21,2,255,0,42,0,40,0,0,255,224,184,0,2,251,255,240,0,3,192,127,208,0,1,64,1,0,0,0,2,168,0,0,0,15,254,0,0,0,47,255,64,0,0,190,31,208,0,2,248,2,240,0,2,128,0,100,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0, + // 0x1ec6 Ệ + 198,30,16,42,168,21,3,249,0,5,80,0,0,31,252,0,0,63,254,0,0,255,191,128,3,252,31,208,15,224,7,244,10,64,0,168,0,0,0,0,21,85,85,84,127,255,255,253,127,255,255,253,127,255,255,253,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,248,127,255,255,248,127,255,255,248,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,149,85,84,127,255,255,253,127,255,255,253,127,255,255,253,0,0,0,0,0,0,0,0,0,2,128,0,0,15,240,0,0,15,244,0,0,15,240,0,0,7,208,0, + // 0x1ec7 ệ + 199,30,18,36,180,21,2,249,0,1,84,0,0,0,15,253,0,0,0,63,255,0,0,0,191,191,192,0,1,253,15,240,0,7,240,2,252,0,10,128,0,104,0,0,0,0,0,0,0,0,80,0,0,0,47,255,128,0,2,255,255,244,0,11,255,255,253,0,31,244,1,255,0,63,192,0,191,128,127,128,0,63,192,191,64,0,47,192,255,0,0,47,208,255,255,255,255,208,255,255,255,255,208,255,255,255,255,208,255,0,0,0,0,255,0,0,0,0,191,64,0,0,0,127,192,0,0,0,63,224,0,0,0,31,248,0,11,64,11,255,255,255,64,2,255,255,255,64,0,47,255,249,0,0,0,85,0,0,0,0,0,0,0,0,0,160,0,0,0,3,252,0,0,0,3,253,0,0,0,3,252,0,0,0,1,244,0,0, + // 0x1ec8 Ỉ + 200,30,11,37,111,13,1,0,1,164,0,7,255,128,7,255,224,0,7,240,0,7,224,0,31,208,0,255,64,0,252,0,0,188,0,0,0,0,85,85,84,191,255,248,191,255,248,11,255,128,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,2,254,0,47,255,228,191,255,248,191,255,248, + // 0x1ec9 ỉ + 201,30,8,31,62,10,2,0,21,64,255,240,255,252,0,253,0,253,2,252,31,240,31,64,15,0,0,0,0,0,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192, + // 0x1eca Ị + 202,30,11,34,102,13,1,249,85,85,84,191,255,248,191,255,248,11,255,128,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,1,254,0,2,254,0,47,255,228,191,255,248,191,255,248,0,0,0,0,0,0,0,100,0,1,253,0,2,254,0,2,254,0,0,184,0, + // 0x1ecb ị + 203,30,5,35,70,10,3,249,20,0,255,0,255,0,255,0,125,0,0,0,0,0,0,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,0,0,0,0,40,0,255,0,255,64,255,0,125,0, + // 0x1ecc Ọ + 204,30,25,34,238,29,2,249,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0,0,0,0,0,0,0,0,0,0,1,144,0,0,0,0,0,7,244,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,2,224,0,0,0, + // 0x1ecd ọ + 205,30,19,28,140,23,2,249,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0,0,0,0,0,0,0,0,96,0,0,0,3,252,0,0,0,3,253,0,0,0,3,253,0,0,0,0,180,0,0, + // 0x1ece Ỏ + 206,30,25,38,10,29,2,255,0,0,6,144,0,0,0,0,0,31,254,0,0,0,0,0,31,255,128,0,0,0,0,0,31,192,0,0,0,0,0,31,128,0,0,0,0,0,127,64,0,0,0,0,3,253,0,0,0,0,0,3,240,0,0,0,0,0,2,224,0,0,0,0,0,0,0,0,0,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x1ecf ỏ + 207,30,19,32,160,23,2,255,0,1,84,0,0,0,11,255,64,0,0,11,255,192,0,0,0,15,208,0,0,0,11,208,0,0,0,31,192,0,0,0,255,64,0,0,0,248,0,0,0,0,244,0,0,0,0,0,0,0,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x1ed0 Ố + 208,30,25,37,3,29,2,255,0,0,0,0,3,248,0,0,0,0,0,11,224,0,0,0,11,248,31,128,0,0,0,47,254,62,0,0,0,0,127,191,64,0,0,0,0,253,31,192,0,0,0,3,240,3,240,0,0,0,1,64,0,80,0,0,0,0,0,0,0,0,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x1ed1 ố + 209,30,20,31,155,23,2,255,0,0,0,1,253,0,0,0,3,248,0,2,169,11,224,0,15,255,15,64,0,47,255,192,0,0,127,11,224,0,0,248,1,248,0,1,144,0,40,0,0,0,0,0,0,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x1ed2 Ồ + 210,30,25,37,3,29,2,255,11,240,0,0,0,0,0,2,248,0,0,0,0,0,0,189,11,248,0,0,0,0,47,31,254,0,0,0,0,0,127,191,64,0,0,0,0,253,31,192,0,0,0,3,240,3,240,0,0,0,1,64,0,80,0,0,0,0,0,0,0,0,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x1ed3 ồ + 211,30,20,31,155,23,1,255,254,0,0,0,0,63,64,0,0,0,15,192,170,64,0,3,226,255,192,0,0,7,255,240,0,0,31,194,252,0,0,63,0,126,0,0,100,0,10,0,0,0,0,0,0,0,0,4,0,0,0,11,255,244,0,0,191,255,255,0,2,255,255,255,192,7,254,0,127,240,15,244,0,15,244,31,240,0,7,252,47,208,0,3,252,63,192,0,2,253,63,192,0,1,254,63,192,0,1,254,63,192,0,1,254,63,192,0,1,254,63,192,0,2,253,47,208,0,3,252,31,240,0,7,252,15,244,0,15,248,7,254,0,127,240,2,255,255,255,192,0,127,255,255,0,0,11,255,244,0,0,0,21,0,0, + // 0x1ed4 Ổ + 212,30,25,40,24,29,2,255,0,0,0,0,20,0,0,0,0,0,0,127,128,0,0,0,0,0,23,208,0,0,0,0,0,2,224,0,0,0,0,0,7,208,0,0,0,11,248,47,0,0,0,0,47,253,45,0,0,0,0,127,191,64,0,0,0,0,253,31,192,0,0,0,3,240,3,240,0,0,0,1,64,0,80,0,0,0,0,0,0,0,0,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x1ed5 ổ + 213,30,19,33,165,23,2,255,0,0,0,47,208,0,0,0,26,240,0,0,0,0,244,0,0,0,2,240,0,2,169,15,128,0,15,255,15,0,0,47,255,192,0,0,127,11,224,0,0,248,1,248,0,1,144,0,40,0,0,0,0,0,0,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x1ed6 Ỗ + 214,30,25,40,24,29,2,255,0,0,110,0,116,0,0,0,1,255,224,244,0,0,0,3,235,255,240,0,0,0,7,128,127,192,0,0,0,1,0,0,0,0,0,0,0,6,164,0,0,0,0,0,31,253,0,0,0,0,0,63,255,0,0,0,0,0,253,31,192,0,0,0,3,240,3,240,0,0,0,1,64,0,80,0,0,0,0,0,0,0,0,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x1ed7 ỗ + 215,30,19,34,170,23,2,255,0,26,64,28,0,0,191,244,60,0,0,251,255,248,0,2,208,47,240,0,1,64,1,0,0,0,1,168,0,0,0,7,255,0,0,0,31,255,192,0,0,63,75,224,0,0,252,1,248,0,1,144,0,40,0,0,0,0,0,0,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x1ed8 Ộ + 216,30,25,42,38,29,2,249,0,0,1,84,0,0,0,0,0,15,253,0,0,0,0,0,63,255,0,0,0,0,0,191,191,192,0,0,0,2,253,15,224,0,0,0,7,240,3,248,0,0,0,10,128,0,104,0,0,0,0,0,0,0,0,0,0,0,107,250,64,0,0,0,11,255,255,248,0,0,0,127,255,255,255,64,0,1,255,254,175,255,208,0,3,255,128,0,127,240,0,15,252,0,0,15,252,0,31,244,0,0,3,253,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,2,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0,0,0,0,0,0,0,0,0,0,1,144,0,0,0,0,0,7,244,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,2,224,0,0,0, + // 0x1ed9 ộ + 217,30,19,36,180,23,2,249,0,1,84,0,0,0,7,255,0,0,0,15,255,128,0,0,63,239,224,0,0,255,7,248,0,2,248,1,253,0,2,144,0,42,0,0,0,0,0,0,0,0,16,0,0,0,47,255,208,0,2,255,255,252,0,11,255,255,255,0,31,248,1,255,192,63,208,0,63,208,127,192,0,31,240,191,64,0,15,240,255,0,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,0,0,11,244,191,64,0,15,240,127,192,0,31,240,63,208,0,63,224,31,248,1,255,192,11,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0,0,0,0,0,0,0,0,96,0,0,0,3,252,0,0,0,3,253,0,0,0,3,253,0,0,0,0,180,0,0, + // 0x1eda Ớ + 218,30,28,36,252,29,2,255,0,0,0,5,80,0,0,0,0,0,63,240,0,0,0,0,0,127,192,0,0,0,0,0,255,0,0,0,0,0,3,252,0,0,0,0,0,11,240,0,0,0,0,0,10,128,0,0,0,0,0,0,0,0,0,255,0,0,107,234,64,0,255,0,11,255,255,248,1,254,0,127,255,255,255,66,253,1,255,254,175,255,215,252,3,255,128,0,127,255,240,15,252,0,0,15,255,128,31,244,0,0,3,254,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,1,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x1edb ớ + 219,30,23,30,180,24,2,255,0,0,1,84,0,0,0,0,15,248,0,0,0,0,47,224,0,0,0,0,127,128,0,0,0,0,254,0,0,0,0,3,248,0,0,0,0,2,144,0,11,248,0,0,0,0,11,244,0,0,16,0,15,240,0,47,255,208,15,240,2,255,255,252,63,208,11,255,255,255,255,128,31,248,1,255,253,0,63,208,0,63,224,0,127,192,0,15,240,0,191,64,0,15,240,0,255,0,0,11,244,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,11,244,0,191,64,0,15,240,0,127,192,0,15,240,0,63,208,0,63,224,0,31,248,0,255,192,0,11,255,255,255,0,0,1,255,255,252,0,0,0,47,255,208,0,0,0,0,84,0,0,0, + // 0x1edc Ờ + 220,30,28,36,252,29,2,255,0,1,84,0,0,0,0,0,2,255,0,0,0,0,0,0,191,128,0,0,0,0,0,47,208,0,0,0,0,0,11,240,0,0,0,0,0,2,252,0,0,0,0,0,0,104,0,0,0,0,0,0,0,0,0,255,0,0,107,234,64,0,255,0,11,255,255,248,1,254,0,127,255,255,255,66,253,1,255,254,175,255,215,252,3,255,128,0,127,255,240,15,252,0,0,15,255,128,31,244,0,0,3,254,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,1,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x1edd ờ + 221,30,23,30,180,24,2,255,0,85,0,0,0,0,0,255,192,0,0,0,0,63,208,0,0,0,0,15,240,0,0,0,0,3,252,0,0,0,0,0,254,0,0,0,0,0,26,0,11,248,0,0,0,0,11,244,0,0,16,0,15,240,0,47,255,208,15,240,2,255,255,252,63,208,11,255,255,255,255,128,31,248,1,255,253,0,63,208,0,63,224,0,127,192,0,15,240,0,191,64,0,15,240,0,255,0,0,11,244,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,11,244,0,191,64,0,15,240,0,127,192,0,15,240,0,63,208,0,63,224,0,31,248,0,255,192,0,11,255,255,255,0,0,1,255,255,252,0,0,0,47,255,208,0,0,0,0,84,0,0,0, + // 0x1ede Ở + 222,30,28,38,10,29,2,255,0,0,5,80,0,0,0,0,0,47,253,0,0,0,0,0,47,255,0,0,0,0,0,0,63,64,0,0,0,0,0,47,64,0,0,0,0,0,127,0,0,0,0,0,7,253,0,0,0,0,0,3,224,0,0,0,0,0,3,208,0,0,0,0,0,0,0,0,0,255,0,0,107,234,64,0,255,0,11,255,255,248,1,254,0,127,255,255,255,66,253,1,255,254,175,255,215,252,3,255,128,0,127,255,240,15,252,0,0,15,255,128,31,244,0,0,3,254,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,1,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x1edf ở + 223,30,23,32,192,24,2,255,0,5,80,0,0,0,0,15,255,0,0,0,0,15,255,192,0,0,0,0,15,192,0,0,0,0,15,192,0,0,0,0,47,192,0,0,0,2,255,0,0,0,0,1,244,0,0,0,0,1,240,0,11,248,0,0,0,0,11,244,0,0,16,0,15,240,0,47,255,208,15,240,2,255,255,252,63,208,11,255,255,255,255,128,31,248,1,255,253,0,63,208,0,63,224,0,127,192,0,15,240,0,191,64,0,15,240,0,255,0,0,11,244,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,11,244,0,191,64,0,15,240,0,127,192,0,15,240,0,63,208,0,63,224,0,31,248,0,255,192,0,11,255,255,255,0,0,1,255,255,252,0,0,0,47,255,208,0,0,0,0,84,0,0,0, + // 0x1ee0 Ỡ + 224,30,28,35,245,29,2,255,0,0,20,0,20,0,0,0,2,255,128,61,0,0,0,11,255,249,252,0,0,0,15,235,255,248,0,0,0,31,0,191,240,0,0,0,25,0,6,64,0,0,0,0,0,0,0,0,255,0,0,107,234,64,0,255,0,11,255,255,248,1,254,0,127,255,255,255,66,253,1,255,254,175,255,215,252,3,255,128,0,127,255,240,15,252,0,0,15,255,128,31,244,0,0,3,254,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,1,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0, + // 0x1ee1 ỡ + 225,30,23,29,174,24,2,255,0,4,0,5,0,0,0,255,208,15,0,0,3,255,253,127,0,0,7,251,255,253,0,0,11,192,127,248,0,0,6,64,5,64,11,248,0,0,0,0,11,244,0,0,16,0,15,240,0,47,255,208,15,240,2,255,255,252,63,208,11,255,255,255,255,128,31,248,1,255,253,0,63,208,0,63,224,0,127,192,0,15,240,0,191,64,0,15,240,0,255,0,0,11,244,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,11,244,0,191,64,0,15,240,0,127,192,0,15,240,0,63,208,0,63,224,0,31,248,0,255,192,0,11,255,255,255,0,0,1,255,255,252,0,0,0,47,255,208,0,0,0,0,84,0,0,0, + // 0x1ee2 Ợ + 226,30,28,35,245,29,2,249,0,0,0,0,0,0,255,0,0,107,234,64,0,255,0,11,255,255,248,1,254,0,127,255,255,255,66,253,1,255,254,175,255,215,252,3,255,128,0,127,255,240,15,252,0,0,15,255,128,31,244,0,0,3,254,0,63,224,0,0,2,255,0,63,208,0,0,0,255,0,127,192,0,0,0,255,64,191,128,0,0,0,191,128,191,128,0,0,0,191,128,191,128,0,0,0,127,192,255,64,0,0,0,127,192,255,64,0,0,0,127,192,191,128,0,0,0,127,128,191,128,0,0,0,191,128,127,192,0,0,0,255,64,63,192,0,0,0,255,64,63,208,0,0,1,255,0,47,240,0,0,3,254,0,15,248,0,0,11,252,0,11,254,0,0,47,248,0,3,255,224,1,255,240,0,0,255,255,255,255,192,0,0,47,255,255,254,0,0,0,2,255,255,224,0,0,0,0,5,84,0,0,0,0,0,0,0,0,0,0,0,0,1,144,0,0,0,0,0,11,244,0,0,0,0,0,15,248,0,0,0,0,0,11,248,0,0,0,0,0,2,224,0,0,0, + // 0x1ee3 ợ + 227,30,23,30,180,24,2,249,0,0,0,0,11,248,0,0,0,0,11,244,0,0,16,0,15,240,0,47,255,208,15,240,2,255,255,252,63,208,11,255,255,255,255,128,31,248,1,255,253,0,63,208,0,63,224,0,127,192,0,15,240,0,191,64,0,15,240,0,255,0,0,11,244,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,11,244,0,191,64,0,15,240,0,127,192,0,15,240,0,63,208,0,63,224,0,31,248,0,255,192,0,11,255,255,255,0,0,1,255,255,252,0,0,0,47,255,208,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,2,252,0,0,0,0,3,253,0,0,0,0,3,253,0,0,0,0,0,180,0,0,0, + // 0x1ee4 Ụ + 228,30,21,34,204,27,3,249,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,254,0,0,0,0,21,64,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,127,128,0,0,0,0,191,192,0,0,0,0,127,128,0,0,0,0,46,0,0,0, + // 0x1ee5 ụ + 229,30,17,27,135,23,3,249,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,0,0,0,0,0,0,0,0,2,128,0,0,0,15,240,0,0,0,15,244,0,0,0,15,240,0,0,0,7,208,0,0, + // 0x1ee6 Ủ + 230,30,21,38,228,27,3,255,0,0,105,0,0,0,0,1,255,224,0,0,0,1,255,244,0,0,0,0,1,252,0,0,0,0,1,248,0,0,0,0,7,244,0,0,0,0,63,208,0,0,0,0,63,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,64,0,0,63,192,191,128,0,0,63,192,127,192,0,0,127,128,63,208,0,0,255,64,47,240,0,2,255,0,15,254,64,31,253,0,7,255,255,255,244,0,0,255,255,255,208,0,0,31,255,254,0,0,0,0,21,64,0,0, + // 0x1ee7 ủ + 231,30,17,32,160,23,3,255,0,5,80,0,0,0,31,254,0,0,0,31,255,64,0,0,0,47,128,0,0,0,31,128,0,0,0,127,64,0,0,3,253,0,0,0,3,240,0,0,0,3,224,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,47,192,255,0,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,128,0,255,192,191,208,7,255,192,63,255,255,239,192,31,255,255,79,192,2,255,248,15,192,0,21,0,0,0, + // 0x1ee8 Ứ + 232,30,28,36,252,30,3,255,0,0,0,85,0,0,0,0,0,2,255,0,0,0,0,0,7,252,0,0,0,0,0,15,240,0,0,0,0,0,47,192,0,0,0,0,0,127,0,0,0,0,0,0,104,0,0,0,0,0,0,0,0,0,0,255,85,0,0,0,21,65,255,191,64,0,0,63,194,253,191,64,0,0,63,195,252,191,64,0,0,63,203,248,191,64,0,0,63,255,224,191,64,0,0,63,255,128,191,64,0,0,63,228,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,127,192,0,0,127,128,0,63,208,0,0,255,64,0,47,240,0,2,255,0,0,15,254,64,31,253,0,0,3,255,255,255,248,0,0,0,255,255,255,208,0,0,0,31,255,254,0,0,0,0,0,21,64,0,0,0, + // 0x1ee9 ứ + 233,30,24,30,180,26,3,255,0,0,5,80,0,0,0,0,47,240,0,0,0,0,127,192,0,0,0,0,255,0,0,0,0,2,252,0,0,0,0,7,240,0,0,0,0,10,128,0,0,255,0,0,0,0,0,255,0,0,0,0,1,254,255,0,0,47,194,253,255,0,0,47,199,252,255,0,0,47,255,240,255,0,0,47,255,192,255,0,0,47,249,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,127,192,0,255,128,0,255,192,0,191,208,7,255,192,0,63,255,255,239,192,0,31,255,255,79,192,0,2,255,248,15,192,0,0,21,0,0,0,0, + // 0x1eea Ừ + 234,30,28,36,252,30,3,255,0,21,80,0,0,0,0,0,31,240,0,0,0,0,0,11,252,0,0,0,0,0,2,254,0,0,0,0,0,0,191,64,0,0,0,0,0,31,192,0,0,0,0,0,6,144,0,0,0,0,0,0,0,0,0,255,85,0,0,0,21,65,255,191,64,0,0,63,194,253,191,64,0,0,63,195,252,191,64,0,0,63,203,248,191,64,0,0,63,255,224,191,64,0,0,63,255,128,191,64,0,0,63,228,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,127,192,0,0,127,128,0,63,208,0,0,255,64,0,47,240,0,2,255,0,0,15,254,64,31,253,0,0,3,255,255,255,248,0,0,0,255,255,255,208,0,0,0,31,255,254,0,0,0,0,0,21,64,0,0,0, + // 0x1eeb ừ + 235,30,24,30,180,26,3,255,1,85,0,0,0,0,1,255,0,0,0,0,0,191,192,0,0,0,0,47,208,0,0,0,0,11,240,0,0,0,0,1,252,0,0,0,0,0,105,0,0,255,0,0,0,0,0,255,0,0,0,0,1,254,255,0,0,47,194,253,255,0,0,47,199,252,255,0,0,47,255,240,255,0,0,47,255,192,255,0,0,47,249,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,127,192,0,255,128,0,255,192,0,191,208,7,255,192,0,63,255,255,239,192,0,31,255,255,79,192,0,2,255,248,15,192,0,0,21,0,0,0,0, + // 0x1eec Ử + 236,30,28,38,10,30,3,255,0,0,105,64,0,0,0,0,0,255,240,0,0,0,0,0,255,248,0,0,0,0,0,1,252,0,0,0,0,0,0,252,0,0,0,0,0,7,248,0,0,0,0,0,63,224,0,0,0,0,0,47,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,255,85,0,0,0,21,65,255,191,64,0,0,63,194,253,191,64,0,0,63,195,252,191,64,0,0,63,203,248,191,64,0,0,63,255,224,191,64,0,0,63,255,128,191,64,0,0,63,228,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,127,192,0,0,127,128,0,63,208,0,0,255,64,0,47,240,0,2,255,0,0,15,254,64,31,253,0,0,3,255,255,255,248,0,0,0,255,255,255,208,0,0,0,31,255,254,0,0,0,0,0,21,64,0,0,0, + // 0x1eed ử + 237,30,24,32,192,26,3,255,0,5,80,0,0,0,0,31,254,0,0,0,0,31,255,64,0,0,0,0,47,128,0,0,0,0,31,128,0,0,0,0,127,64,0,0,0,3,254,0,0,0,0,3,240,0,0,0,0,3,224,0,0,255,0,0,0,0,0,255,0,0,0,0,1,254,255,0,0,47,194,253,255,0,0,47,199,252,255,0,0,47,255,240,255,0,0,47,255,192,255,0,0,47,249,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,127,192,0,255,128,0,255,192,0,191,208,7,255,192,0,63,255,255,239,192,0,31,255,255,79,192,0,2,255,248,15,192,0,0,21,0,0,0,0, + // 0x1eee Ữ + 238,30,28,35,245,30,3,255,0,1,64,0,80,0,0,0,31,248,3,224,0,0,0,127,255,155,192,0,0,0,254,191,255,192,0,0,0,240,11,255,0,0,0,0,160,0,100,0,0,0,0,0,0,0,0,0,255,85,0,0,0,21,65,255,191,64,0,0,63,194,253,191,64,0,0,63,195,252,191,64,0,0,63,203,248,191,64,0,0,63,255,224,191,64,0,0,63,255,128,191,64,0,0,63,228,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,127,192,0,0,127,128,0,63,208,0,0,255,64,0,47,240,0,2,255,0,0,15,254,64,31,253,0,0,3,255,255,255,248,0,0,0,255,255,255,208,0,0,0,31,255,254,0,0,0,0,0,21,64,0,0,0, + // 0x1eef ữ + 239,30,24,29,174,26,3,255,0,20,0,4,0,0,2,255,128,61,0,0,7,255,249,188,0,0,15,235,255,248,0,0,15,0,191,240,0,0,9,0,6,64,0,255,0,0,0,0,0,255,0,0,0,0,1,254,255,0,0,47,194,253,255,0,0,47,199,252,255,0,0,47,255,240,255,0,0,47,255,192,255,0,0,47,249,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,127,192,0,255,128,0,255,192,0,191,208,7,255,192,0,63,255,255,239,192,0,31,255,255,79,192,0,2,255,248,15,192,0,0,21,0,0,0,0, + // 0x1ef0 Ự + 240,30,28,35,245,30,3,249,0,0,0,0,0,0,255,85,0,0,0,21,65,255,191,64,0,0,63,194,253,191,64,0,0,63,195,252,191,64,0,0,63,203,248,191,64,0,0,63,255,224,191,64,0,0,63,255,128,191,64,0,0,63,228,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,191,64,0,0,63,192,0,127,192,0,0,127,128,0,63,208,0,0,255,64,0,47,240,0,2,255,0,0,15,254,64,31,253,0,0,3,255,255,255,248,0,0,0,255,255,255,208,0,0,0,31,255,254,0,0,0,0,0,21,64,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,127,128,0,0,0,0,0,127,192,0,0,0,0,0,127,192,0,0,0,0,0,46,0,0,0,0, + // 0x1ef1 ự + 241,30,24,30,180,26,3,249,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,1,254,255,0,0,47,194,253,255,0,0,47,199,252,255,0,0,47,255,240,255,0,0,47,255,192,255,0,0,47,249,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,47,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,127,192,0,255,128,0,255,192,0,191,208,7,255,192,0,63,255,255,239,192,0,31,255,255,79,192,0,2,255,248,15,192,0,0,21,0,0,0,0,0,0,0,0,0,0,0,2,128,0,0,0,0,15,240,0,0,0,0,15,244,0,0,0,0,15,240,0,0,0,0,7,208,0,0,0, + // 0x1ef2 Ỳ + 242,30,21,35,210,22,0,0,0,5,80,0,0,0,0,15,244,0,0,0,0,7,252,0,0,0,0,1,255,0,0,0,0,0,127,64,0,0,0,0,15,208,0,0,0,0,2,144,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,192,0,0,63,192,63,208,0,0,191,128,31,240,0,1,255,0,15,244,0,3,253,0,7,252,0,7,252,0,3,253,0,15,244,0,1,255,0,31,240,0,0,191,64,63,208,0,0,63,192,127,128,0,0,47,224,255,0,0,0,15,241,254,0,0,0,11,251,252,0,0,0,3,255,248,0,0,0,1,255,240,0,0,0,0,255,208,0,0,0,0,127,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x1ef3 ỳ + 243,30,20,38,190,20,0,247,0,21,64,0,0,0,63,208,0,0,0,31,240,0,0,0,7,252,0,0,0,1,253,0,0,0,0,127,0,0,0,0,10,64,0,0,0,0,0,0,0,0,0,0,0,191,64,0,3,253,127,192,0,3,252,63,192,0,11,248,47,224,0,15,240,15,240,0,31,240,15,240,0,47,208,7,248,0,63,192,3,252,0,127,128,2,253,0,191,64,0,254,0,255,0,0,255,1,254,0,0,127,66,252,0,0,63,195,252,0,0,47,199,244,0,0,15,219,240,0,0,15,239,224,0,0,7,255,208,0,0,3,255,192,0,0,2,255,128,0,0,0,255,0,0,0,0,255,0,0,0,2,253,0,0,0,3,252,0,0,0,7,248,0,0,0,31,240,0,0,21,191,224,0,0,127,255,128,0,0,127,254,0,0,0,47,224,0,0,0, + // 0x1ef4 Ỵ + 244,30,21,34,204,22,0,249,85,0,0,0,21,64,191,192,0,0,63,192,63,208,0,0,191,128,31,240,0,1,255,0,15,244,0,3,253,0,7,252,0,7,252,0,3,253,0,15,244,0,1,255,0,31,240,0,0,191,64,63,208,0,0,63,192,127,128,0,0,47,224,255,0,0,0,15,241,254,0,0,0,11,251,252,0,0,0,3,255,248,0,0,0,1,255,240,0,0,0,0,255,208,0,0,0,0,127,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,127,128,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,46,0,0,0, + // 0x1ef5 ỵ + 245,30,20,29,145,20,0,247,191,64,0,3,253,127,192,0,3,252,63,192,0,11,248,47,224,0,15,240,15,240,0,31,240,15,240,0,47,208,7,248,0,63,192,3,252,0,127,128,2,253,0,191,64,0,254,0,255,0,0,255,1,254,0,0,127,66,252,0,0,63,195,252,0,0,47,199,244,0,0,15,219,240,0,0,15,239,224,0,0,7,255,208,0,0,3,255,192,0,0,2,255,128,0,0,0,255,0,0,0,0,255,0,0,0,2,253,0,0,0,3,252,10,0,0,7,248,63,192,0,31,240,63,192,21,191,224,63,192,127,255,128,31,64,127,254,0,0,0,47,224,0,0,0, + // 0x1ef6 Ỷ + 246,30,21,37,222,22,0,0,0,0,105,64,0,0,0,0,255,240,0,0,0,0,255,248,0,0,0,0,1,252,0,0,0,0,0,252,0,0,0,0,7,248,0,0,0,0,63,224,0,0,0,0,47,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,192,0,0,63,192,63,208,0,0,191,128,31,240,0,1,255,0,15,244,0,3,253,0,7,252,0,7,252,0,3,253,0,15,244,0,1,255,0,31,240,0,0,191,64,63,208,0,0,63,192,127,128,0,0,47,224,255,0,0,0,15,241,254,0,0,0,11,251,252,0,0,0,3,255,248,0,0,0,1,255,240,0,0,0,0,255,208,0,0,0,0,127,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x1ef7 ỷ + 247,30,20,40,200,20,0,247,0,1,84,0,0,0,7,255,128,0,0,7,255,224,0,0,0,7,240,0,0,0,3,240,0,0,0,31,224,0,0,0,255,128,0,0,0,252,0,0,0,0,188,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,3,253,127,192,0,3,252,63,192,0,11,248,47,224,0,15,240,15,240,0,31,240,15,240,0,47,208,7,248,0,63,192,3,252,0,127,128,2,253,0,191,64,0,254,0,255,0,0,255,1,254,0,0,127,66,252,0,0,63,195,252,0,0,47,199,244,0,0,15,219,240,0,0,15,239,224,0,0,7,255,208,0,0,3,255,192,0,0,2,255,128,0,0,0,255,0,0,0,0,255,0,0,0,2,253,0,0,0,3,252,0,0,0,7,248,0,0,0,31,240,0,0,21,191,224,0,0,127,255,128,0,0,127,254,0,0,0,47,224,0,0,0, + // 0x1ef8 Ỹ + 248,30,21,34,204,22,0,0,0,1,64,0,80,0,0,31,248,2,224,0,0,127,255,155,208,0,0,254,191,255,192,0,0,244,11,255,0,0,0,160,0,100,0,0,0,0,0,0,0,0,85,0,0,0,21,64,191,192,0,0,63,192,63,208,0,0,191,128,31,240,0,1,255,0,15,244,0,3,253,0,7,252,0,7,252,0,3,253,0,15,244,0,1,255,0,31,240,0,0,191,64,63,208,0,0,63,192,127,128,0,0,47,224,255,0,0,0,15,241,254,0,0,0,11,251,252,0,0,0,3,255,248,0,0,0,1,255,240,0,0,0,0,255,208,0,0,0,0,127,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x1ef9 ỹ + 249,30,20,37,185,20,0,247,0,5,0,1,64,0,127,224,11,128,1,255,254,111,64,3,250,255,255,0,3,208,47,252,0,2,128,1,144,0,0,0,0,0,0,0,0,0,0,0,191,64,0,3,253,127,192,0,3,252,63,192,0,11,248,47,224,0,15,240,15,240,0,31,240,15,240,0,47,208,7,248,0,63,192,3,252,0,127,128,2,253,0,191,64,0,254,0,255,0,0,255,1,254,0,0,127,66,252,0,0,63,195,252,0,0,47,199,244,0,0,15,219,240,0,0,15,239,224,0,0,7,255,208,0,0,3,255,192,0,0,2,255,128,0,0,0,255,0,0,0,0,255,0,0,0,2,253,0,0,0,3,252,0,0,0,7,248,0,0,0,31,240,0,0,21,191,224,0,0,127,255,128,0,0,127,254,0,0,0,47,224,0,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_28.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_28.cpp new file mode 100644 index 0000000000..e2e797a26b --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_28.cpp @@ -0,0 +1,416 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium 38pt, capital 'A' height: 28px, width: 100%, range: 0x0020-0x00ff +extern const uint8_t NotoSans_Medium_28[25661] = { + 130,28,32,0,255,0,37,246, // unifont_t + // 0x0020 " " + 0,0,0,10,0,0, + // 0x0021 ! + 6,28,56,10,2,255,63,224,63,224,63,208,63,208,63,208,63,208,63,208,63,192,47,192,47,192,47,192,47,192,47,192,31,192,31,192,31,192,31,192,31,128,15,128,0,0,0,0,0,0,31,128,63,224,127,224,127,224,63,208,5,0, + // 0x0022 " + 12,10,30,16,2,17,127,65,254,127,64,254,127,64,254,127,64,253,63,0,253,63,0,253,63,0,252,63,0,188,63,0,188,42,0,104, + // 0x0023 # + 23,27,162,25,1,0,0,0,253,0,253,0,0,0,252,0,252,0,0,0,252,0,252,0,0,1,248,1,248,0,0,2,248,2,248,0,0,3,244,2,244,0,0,3,240,3,240,0,0,7,240,7,240,0,47,255,255,255,255,248,47,255,255,255,255,248,26,175,250,175,250,164,0,15,192,15,192,0,0,15,192,15,192,0,0,31,192,31,192,0,0,31,128,47,128,0,0,47,64,47,64,0,255,255,255,255,255,192,255,255,255,255,255,208,255,255,255,255,255,208,0,190,0,190,0,0,0,189,0,189,0,0,0,252,0,252,0,0,0,252,0,252,0,0,0,252,1,252,0,0,1,248,1,248,0,0,2,244,2,244,0,0,2,244,3,244,0,0, + // 0x0024 $ + 18,32,160,22,2,253,0,1,240,0,0,0,1,240,0,0,0,1,240,0,0,0,27,250,80,0,2,255,255,255,64,15,255,255,255,192,63,255,255,255,64,127,209,240,27,0,255,65,240,0,0,255,1,240,0,0,255,65,240,0,0,191,193,240,0,0,63,250,240,0,0,47,255,240,0,0,7,255,255,64,0,0,191,255,244,0,0,7,255,255,0,0,1,255,255,192,0,1,240,191,208,0,1,240,47,224,0,1,240,15,240,0,1,240,31,224,144,1,240,63,208,254,81,246,255,192,255,255,255,255,64,255,255,255,252,0,27,255,255,144,0,0,2,240,0,0,0,1,240,0,0,0,1,240,0,0,0,1,240,0,0,0,0,0,0,0, + // 0x0025 % + 30,29,232,32,1,255,0,21,0,0,0,0,0,0,2,255,224,0,0,127,0,0,11,255,248,0,0,253,0,0,31,230,253,0,1,252,0,0,47,128,190,0,3,244,0,0,63,64,127,0,11,240,0,0,63,0,63,0,15,208,0,0,127,0,63,64,47,128,0,0,127,0,63,64,63,0,0,0,127,0,63,64,254,0,0,0,127,0,63,65,252,0,0,0,63,0,63,3,244,6,144,0,63,64,127,7,240,191,252,0,47,128,190,15,210,255,255,0,15,230,253,47,195,248,127,128,11,255,248,63,71,240,31,192,2,255,224,190,11,224,15,208,0,21,0,252,15,208,15,224,0,0,3,248,15,208,11,224,0,0,7,240,15,208,11,224,0,0,15,224,15,208,11,224,0,0,31,192,15,208,11,224,0,0,63,64,15,224,15,208,0,0,191,0,11,224,15,208,0,0,253,0,7,240,47,192,0,2,248,0,3,254,191,128,0,3,240,0,0,255,255,0,0,15,224,0,0,127,248,0,0,0,0,0,0,1,64,0, + // 0x0026 & + 26,29,203,28,2,255,0,1,101,0,0,0,0,0,47,255,224,0,0,0,0,255,255,252,0,0,0,3,255,239,255,0,0,0,7,253,1,255,0,0,0,11,244,0,191,64,0,0,11,240,0,127,64,0,0,11,244,0,191,64,0,0,7,248,0,255,0,0,0,3,253,3,254,0,0,0,1,255,31,252,0,0,0,0,191,255,240,0,0,0,0,63,255,128,0,0,0,0,127,253,0,0,0,0,2,255,255,0,0,191,64,15,254,255,192,0,255,0,63,244,63,240,1,254,0,127,208,15,252,3,253,0,255,128,3,255,3,252,0,255,0,0,255,223,244,0,255,0,0,63,255,240,0,255,0,0,15,255,192,0,255,128,0,3,255,128,0,191,208,0,15,255,208,0,127,249,1,191,255,244,0,47,255,255,255,223,253,0,11,255,255,254,3,255,64,0,191,255,224,0,255,208,0,1,80,0,0,0,0, + // 0x0027 ' + 5,10,20,9,2,17,127,64,127,64,127,64,127,64,63,0,63,0,63,0,63,0,63,0,42,0, + // 0x0028 ( + 10,33,99,12,1,250,0,31,208,0,63,128,0,255,0,1,253,0,3,252,0,7,248,0,11,240,0,15,240,0,31,208,0,47,192,0,63,192,0,63,192,0,63,128,0,127,128,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,128,0,63,128,0,63,192,0,63,192,0,47,192,0,31,224,0,15,240,0,11,240,0,7,248,0,3,252,0,1,253,0,0,191,0,0,63,128,0,31,208, + // 0x0029 ) + 10,33,99,12,1,250,127,0,0,63,192,0,15,224,0,11,240,0,3,248,0,2,252,0,1,254,0,0,255,0,0,191,0,0,127,64,0,63,128,0,63,192,0,63,192,0,47,192,0,47,208,0,47,208,0,47,208,0,47,208,0,47,208,0,47,192,0,63,192,0,63,192,0,63,128,0,127,128,0,191,0,0,255,0,1,254,0,2,252,0,3,248,0,11,240,0,15,224,0,63,192,0,127,0,0, + // 0x002a * + 19,18,90,21,1,11,0,2,253,0,0,0,2,252,0,0,0,1,252,0,0,0,1,252,0,0,0,0,252,0,0,36,0,252,0,96,63,208,248,111,240,127,255,255,255,240,127,255,255,255,244,5,107,255,149,64,0,7,255,0,0,0,15,239,192,0,0,63,143,224,0,0,191,7,244,0,1,255,3,252,0,3,253,1,254,0,0,124,0,244,0,0,0,0,0,0, + // 0x002b + + 18,19,95,22,2,4,0,1,160,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,0,3,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0, + // 0x002c , + 7,10,20,10,1,251,5,80,15,248,15,240,15,240,31,224,47,192,63,192,63,64,63,0,126,0, + // 0x002d - + 10,4,12,12,1,8,191,255,224,191,255,240,191,255,240,106,170,144, + // 0x002e . + 6,6,12,10,2,255,31,128,63,224,127,224,127,224,63,208,5,0, + // 0x002f / + 14,27,108,15,0,0,0,0,15,240,0,0,15,224,0,0,47,208,0,0,63,192,0,0,127,128,0,0,191,0,0,0,255,0,0,1,253,0,0,3,252,0,0,3,248,0,0,11,244,0,0,15,240,0,0,31,224,0,0,47,192,0,0,63,192,0,0,127,64,0,0,191,0,0,0,254,0,0,1,253,0,0,3,252,0,0,3,248,0,0,11,240,0,0,15,240,0,0,31,208,0,0,47,192,0,0,63,128,0,0,127,64,0,0, + // 0x0030 0 + 19,29,145,22,1,255,0,1,101,0,0,0,47,255,240,0,0,255,255,253,0,3,255,255,255,64,7,254,0,191,192,15,244,0,63,208,31,240,0,15,240,47,224,0,15,240,63,208,0,11,244,63,192,0,7,248,63,192,0,7,252,63,192,0,3,252,63,192,0,3,252,127,192,0,3,252,127,128,0,3,252,127,192,0,3,252,63,192,0,3,252,63,192,0,3,252,63,192,0,7,252,63,192,0,7,248,47,208,0,11,244,31,224,0,15,240,15,240,0,31,240,11,248,0,63,208,3,254,1,255,192,1,255,255,255,64,0,191,255,253,0,0,27,255,224,0,0,0,20,0,0, + // 0x0031 1 + 11,27,81,22,3,0,0,3,252,0,31,252,0,191,252,2,255,252,15,255,252,127,227,252,191,131,252,45,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252, + // 0x0032 2 + 19,28,140,22,1,0,0,1,101,0,0,0,127,255,244,0,7,255,255,254,0,47,255,255,255,128,47,244,1,255,192,11,128,0,63,224,1,0,0,31,240,0,0,0,15,240,0,0,0,15,240,0,0,0,31,240,0,0,0,47,224,0,0,0,63,192,0,0,0,191,128,0,0,1,255,0,0,0,3,253,0,0,0,15,248,0,0,0,63,224,0,0,0,255,128,0,0,3,254,0,0,0,15,248,0,0,0,63,224,0,0,0,255,128,0,0,3,254,0,0,0,15,248,0,0,0,63,250,170,170,168,127,255,255,255,252,127,255,255,255,252,127,255,255,255,252, + // 0x0033 3 + 19,29,145,22,1,255,0,1,85,0,0,1,191,255,244,0,15,255,255,255,0,63,255,255,255,192,31,224,0,191,208,10,0,0,63,224,0,0,0,31,240,0,0,0,15,240,0,0,0,15,240,0,0,0,47,224,0,0,0,63,192,0,0,1,255,64,0,42,191,253,0,0,63,255,208,0,0,63,255,248,0,0,42,191,255,128,0,0,0,191,224,0,0,0,31,240,0,0,0,15,248,0,0,0,11,248,0,0,0,7,248,0,0,0,11,248,0,0,0,15,244,16,0,0,63,240,126,64,1,255,224,127,255,255,255,192,127,255,255,254,0,11,255,255,224,0,0,5,80,0,0, + // 0x0034 4 + 20,28,140,22,1,0,0,0,0,21,0,0,0,1,255,64,0,0,3,255,64,0,0,11,255,64,0,0,31,255,64,0,0,63,191,64,0,0,191,191,64,0,1,252,191,64,0,3,244,191,64,0,15,240,191,64,0,31,192,191,64,0,63,64,191,64,0,254,0,191,64,2,252,0,191,64,7,244,0,191,64,15,224,0,191,64,47,192,0,191,64,127,64,0,191,64,255,85,85,255,149,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64, + // 0x0035 5 + 18,28,140,22,2,255,15,255,255,255,0,31,255,255,255,0,31,255,255,255,0,31,229,85,85,0,31,208,0,0,0,47,192,0,0,0,47,192,0,0,0,47,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,235,249,0,0,63,255,255,240,0,63,255,255,253,0,31,234,175,255,64,0,0,1,255,192,0,0,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,224,0,0,0,31,224,0,0,0,47,208,0,0,0,63,192,64,0,0,255,192,254,64,27,255,0,255,255,255,253,0,255,255,255,244,0,31,255,255,64,0,0,21,64,0,0, + // 0x0036 6 + 18,29,145,22,2,255,0,0,5,85,0,0,2,255,255,0,0,47,255,255,0,0,255,255,255,0,3,255,128,0,0,11,252,0,0,0,15,240,0,0,0,47,208,0,0,0,63,192,0,0,0,127,128,0,0,0,191,64,0,0,0,255,6,255,224,0,255,47,255,253,0,255,191,255,255,64,255,249,1,255,192,255,208,0,63,208,255,128,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,191,0,0,15,240,127,128,0,15,240,63,192,0,31,224,47,224,0,63,208,15,253,1,255,192,7,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x0037 7 + 19,27,135,22,1,0,191,255,255,255,252,191,255,255,255,252,191,255,255,255,252,21,85,85,91,248,0,0,0,15,244,0,0,0,15,240,0,0,0,47,208,0,0,0,63,192,0,0,0,191,128,0,0,0,255,0,0,0,2,254,0,0,0,3,252,0,0,0,7,248,0,0,0,15,244,0,0,0,31,240,0,0,0,63,208,0,0,0,127,192,0,0,0,191,64,0,0,0,255,0,0,0,2,254,0,0,0,3,252,0,0,0,11,248,0,0,0,15,244,0,0,0,31,240,0,0,0,63,208,0,0,0,127,192,0,0,0,255,64,0,0, + // 0x0038 8 + 19,29,145,22,1,255,0,1,85,0,0,0,47,255,248,0,1,255,255,255,0,7,255,235,255,192,15,248,0,127,224,31,240,0,15,240,31,224,0,15,240,31,208,0,15,240,31,224,0,15,240,15,240,0,31,224,7,253,0,127,192,2,255,131,255,0,0,191,255,252,0,0,31,255,208,0,0,63,255,244,0,1,255,239,255,0,11,253,1,255,192,31,240,0,63,240,63,208,0,15,244,63,192,0,3,252,63,128,0,3,252,127,128,0,3,252,63,192,0,3,252,63,208,0,11,248,31,248,0,47,240,15,255,255,255,208,2,255,255,255,64,0,111,255,248,0,0,0,84,0,0, + // 0x0039 9 + 19,29,145,22,1,255,0,1,85,0,0,0,47,255,224,0,1,255,255,253,0,7,255,255,255,64,15,253,1,255,192,31,240,0,63,224,63,192,0,15,240,63,192,0,11,244,63,128,0,7,248,127,128,0,3,248,63,128,0,3,252,63,192,0,7,252,63,192,0,15,252,47,240,0,47,252,15,253,1,255,252,7,255,255,247,252,1,255,255,211,248,0,47,254,7,248,0,0,0,7,244,0,0,0,11,240,0,0,0,15,240,0,0,0,47,208,0,0,0,127,192,0,0,1,255,64,0,0,31,254,0,7,255,255,248,0,7,255,255,208,0,7,255,253,0,0,0,85,0,0,0, + // 0x003a : + 6,22,44,10,2,255,31,128,63,224,127,224,127,224,63,208,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,128,63,224,127,224,127,224,63,208,5,0, + // 0x003b ; + 7,26,52,10,1,251,7,224,15,244,31,248,31,248,15,240,1,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,80,15,244,15,240,31,224,47,208,63,192,63,128,63,0,126,0,189,0, + // 0x003c < + 18,19,95,22,2,4,0,0,0,0,176,0,0,0,11,240,0,0,0,191,240,0,0,11,255,144,0,0,191,248,0,0,11,255,128,0,0,191,248,0,0,11,255,128,0,0,191,244,0,0,0,255,128,0,0,0,255,244,0,0,0,47,255,128,0,0,1,255,249,0,0,0,31,255,208,0,0,0,191,254,0,0,0,11,255,224,0,0,0,127,240,0,0,0,6,240,0,0,0,0,32, + // 0x003d = + 18,11,55,22,2,8,170,170,170,170,144,255,255,255,255,224,255,255,255,255,224,85,85,85,85,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,224,255,255,255,255,224,255,255,255,255,224, + // 0x003e > + 18,19,95,22,2,4,208,0,0,0,0,253,0,0,0,0,255,208,0,0,0,127,253,0,0,0,7,255,208,0,0,0,127,253,0,0,0,2,255,208,0,0,0,47,253,0,0,0,2,255,208,0,0,0,63,240,0,0,1,255,240,0,0,47,255,64,0,7,255,244,0,0,191,254,0,0,27,255,224,0,0,255,253,0,0,0,255,144,0,0,0,248,0,0,0,0,64,0,0,0,0, + // 0x003f ? + 16,29,116,17,0,255,0,21,84,0,7,255,255,128,127,255,255,240,63,255,255,252,47,64,7,253,4,0,1,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,1,254,0,0,3,252,0,0,31,248,0,0,127,224,0,2,255,128,0,7,253,0,0,15,240,0,0,31,208,0,0,47,192,0,0,47,128,0,0,47,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,128,0,0,127,208,0,0,127,224,0,0,127,224,0,0,63,192,0,0,5,0,0, + // 0x0040 @ + 30,31,248,34,2,252,0,0,2,255,255,144,0,0,0,0,127,255,255,253,0,0,0,3,255,254,191,255,192,0,0,31,253,0,0,127,240,0,0,127,208,0,0,7,252,0,1,254,0,0,0,0,255,0,3,248,0,0,0,0,63,64,11,240,0,43,249,64,47,192,15,192,2,255,255,240,15,208,47,128,15,255,255,240,11,224,63,0,63,208,11,240,7,240,127,0,191,64,11,240,3,240,190,0,254,0,11,224,3,240,189,0,252,0,11,224,3,240,253,1,252,0,11,224,3,240,253,1,252,0,15,224,3,240,253,1,252,0,15,224,7,224,253,1,252,0,15,224,11,208,253,0,253,0,47,224,15,192,190,0,191,64,127,240,63,128,127,0,63,255,249,255,255,0,63,0,31,255,224,191,252,0,63,128,1,254,64,31,144,0,31,208,0,0,0,0,0,0,15,240,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,255,208,0,0,108,0,0,0,63,255,166,175,252,0,0,0,7,255,255,255,252,0,0,0,0,111,255,255,144,0,0,0,0,0,21,64,0,0,0, + // 0x0041 A + 25,28,196,25,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x0042 B + 20,27,135,25,3,0,127,255,255,228,0,127,255,255,255,128,127,255,255,255,224,127,213,86,255,244,127,128,0,31,252,127,128,0,11,252,127,128,0,3,252,127,128,0,3,252,127,128,0,7,252,127,128,0,15,244,127,128,0,127,240,127,255,255,255,128,127,255,255,248,0,127,255,255,255,64,127,234,170,255,240,127,128,0,31,252,127,128,0,3,253,127,128,0,2,254,127,128,0,1,255,127,128,0,1,255,127,128,0,2,255,127,128,0,3,254,127,128,0,15,252,127,213,86,255,248,127,255,255,255,240,127,255,255,255,64,127,255,255,228,0, + // 0x0043 C + 21,29,174,24,2,255,0,0,5,85,0,0,0,1,255,255,249,0,0,31,255,255,255,128,0,127,255,255,255,0,1,255,244,1,191,0,3,255,64,0,4,0,15,252,0,0,0,0,31,244,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,63,208,0,0,0,0,63,240,0,0,0,0,31,244,0,0,0,0,15,252,0,0,0,0,7,255,64,0,0,0,2,255,249,1,111,0,0,191,255,255,255,0,0,31,255,255,255,0,0,2,255,255,249,0,0,0,1,84,0,0, + // 0x0044 D + 23,27,162,28,3,0,127,255,255,228,0,0,127,255,255,255,64,0,127,255,255,255,240,0,127,213,86,255,252,0,127,128,0,31,255,0,127,128,0,2,255,128,127,128,0,0,191,192,127,128,0,0,63,224,127,128,0,0,47,240,127,128,0,0,15,240,127,128,0,0,15,244,127,128,0,0,15,244,127,128,0,0,15,248,127,128,0,0,11,248,127,128,0,0,15,244,127,128,0,0,15,244,127,128,0,0,15,244,127,128,0,0,31,240,127,128,0,0,47,240,127,128,0,0,63,208,127,128,0,0,255,192,127,128,0,3,255,64,127,128,0,47,254,0,127,213,107,255,248,0,127,255,255,255,208,0,127,255,255,254,0,0,127,255,255,144,0,0, + // 0x0045 E + 16,27,108,21,3,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x0046 F + 16,27,108,20,3,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0, + // 0x0047 G + 23,29,174,28,2,255,0,0,1,89,80,0,0,0,191,255,255,128,0,11,255,255,255,244,0,63,255,255,255,240,1,255,249,0,27,208,3,255,128,0,0,64,11,253,0,0,0,0,31,248,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,128,0,42,170,164,191,128,0,63,255,248,191,128,0,63,255,248,191,128,0,63,255,248,127,192,0,0,7,248,127,192,0,0,7,248,63,208,0,0,7,248,63,240,0,0,7,248,31,244,0,0,7,248,15,253,0,0,7,248,3,255,64,0,7,248,1,255,249,0,91,248,0,127,255,255,255,248,0,31,255,255,255,248,0,1,191,255,255,144,0,0,0,85,0,0, + // 0x0048 H + 22,27,162,28,3,0,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,255,255,255,255,240,127,255,255,255,255,240,127,255,255,255,255,240,127,234,170,170,175,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240, + // 0x0049 I + 11,27,81,13,1,0,191,255,252,191,255,252,47,255,228,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,47,255,244,191,255,252,191,255,252, + // 0x004a J + 11,35,105,11,253,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,244,0,15,244,0,31,240,64,127,240,255,255,208,255,255,64,255,252,0,21,64,0, + // 0x004b K + 21,27,162,24,3,0,127,128,0,2,255,0,127,128,0,7,253,0,127,128,0,31,244,0,127,128,0,63,224,0,127,128,0,255,128,0,127,128,3,255,0,0,127,128,11,252,0,0,127,128,47,240,0,0,127,128,127,192,0,0,127,129,255,64,0,0,127,131,253,0,0,0,127,143,248,0,0,0,127,255,252,0,0,0,127,255,254,0,0,0,127,255,255,64,0,0,127,240,255,192,0,0,127,192,63,224,0,0,127,128,31,244,0,0,127,128,15,252,0,0,127,128,3,255,0,0,127,128,1,255,64,0,127,128,0,191,192,0,127,128,0,63,240,0,127,128,0,15,248,0,127,128,0,11,253,0,127,128,0,3,255,0,127,128,0,0,255,128, + // 0x004c L + 17,27,135,20,3,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,234,170,170,0,127,255,255,255,64,127,255,255,255,64,127,255,255,255,64, + // 0x004d M + 29,27,216,35,3,0,127,248,0,0,0,15,255,64,127,252,0,0,0,15,255,64,127,253,0,0,0,47,255,64,127,255,0,0,0,63,255,64,127,191,0,0,0,127,191,64,127,127,64,0,0,191,191,64,127,63,192,0,0,253,191,64,127,47,192,0,1,252,191,64,127,79,224,0,3,248,191,64,127,79,240,0,3,244,191,64,127,71,244,0,7,240,191,64,127,67,248,0,15,224,191,64,127,66,252,0,15,208,191,64,127,65,253,0,47,192,191,64,127,64,254,0,63,128,191,64,127,64,191,0,127,0,191,64,127,64,127,64,191,0,191,64,127,64,63,192,253,0,191,64,127,64,47,193,252,0,191,64,127,64,15,211,248,0,191,64,127,64,15,243,244,0,191,64,127,64,11,255,240,0,191,64,127,64,3,255,224,0,191,64,127,64,3,255,192,0,191,64,127,64,1,255,192,0,191,64,127,64,0,255,128,0,191,64,127,64,0,255,0,0,191,64, + // 0x004e N + 23,27,162,29,3,0,127,240,0,0,3,252,127,248,0,0,3,252,127,252,0,0,3,252,127,255,0,0,3,252,127,255,64,0,3,252,127,191,192,0,3,252,127,63,224,0,3,252,127,31,244,0,3,252,127,11,252,0,3,252,127,3,254,0,3,252,127,65,255,0,3,252,127,64,255,192,3,252,127,64,63,208,3,252,127,64,47,240,3,252,127,64,15,248,3,252,127,64,7,253,3,252,127,64,2,255,3,252,127,64,0,255,131,252,127,64,0,127,195,252,127,64,0,63,243,252,127,64,0,15,246,252,127,64,0,11,255,252,127,64,0,3,255,252,127,64,0,1,255,252,127,64,0,0,191,252,127,64,0,0,63,252,127,64,0,0,31,252, + // 0x004f O + 26,29,203,30,2,255,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x0050 P + 19,27,135,23,3,0,127,255,255,144,0,127,255,255,253,0,127,255,255,255,64,127,213,91,255,192,127,128,0,127,224,127,128,0,47,240,127,128,0,15,244,127,128,0,15,244,127,128,0,15,244,127,128,0,15,244,127,128,0,31,240,127,128,0,63,224,127,128,1,255,192,127,255,255,255,128,127,255,255,253,0,127,255,255,224,0,127,234,169,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0, + // 0x0051 Q + 26,35,245,30,2,249,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,244,0,0,0,0,1,95,252,0,0,0,0,0,7,255,0,0,0,0,0,1,255,192,0,0,0,0,0,191,224,0,0,0,0,0,47,248,0,0,0,0,0,15,254,0,0,0,0,0,1,85,0, + // 0x0052 R + 21,27,162,24,3,0,127,255,255,144,0,0,127,255,255,253,0,0,127,255,255,255,128,0,127,213,91,255,208,0,127,128,0,127,240,0,127,128,0,31,240,0,127,128,0,15,244,0,127,128,0,15,244,0,127,128,0,15,244,0,127,128,0,15,240,0,127,128,0,47,240,0,127,128,0,127,208,0,127,213,91,255,128,0,127,255,255,254,0,0,127,255,255,240,0,0,127,255,255,208,0,0,127,128,31,240,0,0,127,128,11,248,0,0,127,128,3,253,0,0,127,128,2,255,0,0,127,128,0,255,128,0,127,128,0,127,192,0,127,128,0,47,240,0,127,128,0,15,244,0,127,128,0,11,252,0,127,128,0,3,254,0,127,128,0,1,255,64, + // 0x0053 S + 17,29,145,21,2,255,0,5,85,0,0,0,191,255,249,0,7,255,255,255,128,31,255,255,255,0,63,244,1,191,0,127,192,0,0,0,191,64,0,0,0,255,64,0,0,0,191,64,0,0,0,191,192,0,0,0,127,224,0,0,0,63,253,0,0,0,15,255,208,0,0,3,255,254,0,0,0,127,255,224,0,0,7,255,252,0,0,0,127,255,0,0,0,7,255,64,0,0,0,255,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,144,0,0,255,128,254,80,27,255,0,255,255,255,253,0,255,255,255,244,0,47,255,255,64,0,0,21,64,0,0, + // 0x0054 T + 21,27,162,21,0,0,191,255,255,255,255,192,191,255,255,255,255,192,191,255,255,255,255,192,21,85,191,213,85,64,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0, + // 0x0055 U + 22,28,168,28,3,255,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,224,0,0,27,255,254,64,0,0,0,21,64,0,0, + // 0x0056 V + 23,27,162,23,0,0,255,64,0,0,3,252,127,192,0,0,7,252,63,192,0,0,15,244,47,208,0,0,15,240,31,240,0,0,31,224,15,240,0,0,63,208,11,244,0,0,63,192,7,252,0,0,191,128,3,252,0,0,255,64,2,254,0,0,255,0,1,255,0,2,254,0,0,255,0,3,253,0,0,191,128,3,252,0,0,63,192,11,248,0,0,63,192,15,240,0,0,47,224,15,240,0,0,15,240,47,224,0,0,15,240,63,192,0,0,7,248,63,192,0,0,3,252,191,64,0,0,3,252,255,0,0,0,1,253,254,0,0,0,0,255,253,0,0,0,0,191,252,0,0,0,0,127,248,0,0,0,0,63,244,0,0,0,0,47,240,0,0, + // 0x0057 W + 36,27,243,36,0,0,191,128,0,1,255,0,0,3,253,127,192,0,2,255,64,0,3,252,63,192,0,3,255,128,0,7,248,63,208,0,7,255,192,0,11,244,31,224,0,11,255,192,0,15,240,15,240,0,15,239,208,0,15,240,15,240,0,15,223,240,0,31,224,11,244,0,31,203,240,0,47,208,7,248,0,47,199,244,0,63,192,3,252,0,63,131,248,0,63,192,3,252,0,127,67,252,0,127,128,2,253,0,191,2,252,0,191,64,1,254,0,255,0,254,0,255,0,0,255,0,254,0,255,0,255,0,0,255,1,253,0,191,1,254,0,0,191,66,252,0,127,66,253,0,0,127,131,248,0,63,131,252,0,0,63,195,244,0,63,195,252,0,0,63,199,240,0,47,199,248,0,0,47,219,240,0,15,219,240,0,0,31,223,224,0,15,235,240,0,0,15,239,208,0,11,239,224,0,0,15,255,192,0,7,255,208,0,0,11,255,192,0,3,255,192,0,0,7,255,64,0,3,255,192,0,0,3,255,0,0,2,255,128,0,0,2,255,0,0,0,255,64,0, + // 0x0058 X + 23,27,162,23,0,0,63,224,0,0,31,240,31,244,0,0,63,208,11,252,0,0,191,128,3,253,0,0,255,0,1,255,0,3,253,0,0,191,128,7,252,0,0,63,208,15,240,0,0,31,240,47,208,0,0,11,248,127,192,0,0,3,252,255,0,0,0,1,255,254,0,0,0,0,255,252,0,0,0,0,63,244,0,0,0,0,127,244,0,0,0,0,255,252,0,0,0,2,255,254,0,0,0,3,252,255,64,0,0,15,244,127,192,0,0,31,224,63,224,0,0,63,192,15,240,0,0,191,64,11,252,0,1,255,0,3,254,0,3,253,0,1,255,0,11,248,0,0,191,192,31,240,0,0,63,208,63,208,0,0,47,240,191,192,0,0,15,248, + // 0x0059 Y + 22,27,162,22,0,0,191,192,0,0,47,240,63,208,0,0,63,208,47,240,0,0,191,128,15,244,0,0,255,0,11,252,0,2,254,0,3,253,0,3,252,0,1,255,0,11,248,0,0,255,64,31,240,0,0,127,192,63,208,0,0,63,208,127,192,0,0,31,240,255,64,0,0,11,249,255,0,0,0,3,255,253,0,0,0,2,255,248,0,0,0,0,255,240,0,0,0,0,191,224,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x005a Z + 20,27,135,22,1,0,127,255,255,255,252,127,255,255,255,252,127,255,255,255,252,21,85,85,95,248,0,0,0,47,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,3,253,0,0,0,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,7,253,0,0,0,15,248,0,0,0,47,240,0,0,0,127,208,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,248,0,0,0,47,240,0,0,0,127,234,170,170,169,191,255,255,255,253,191,255,255,255,253,191,255,255,255,253, + // 0x005b [ + 9,33,99,13,3,250,255,255,128,255,255,128,255,255,128,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,255,255,128,255,255,128,255,255,128, + // 0x005c "\" + 14,27,108,15,0,0,127,64,0,0,63,128,0,0,47,192,0,0,31,208,0,0,15,240,0,0,11,240,0,0,3,248,0,0,3,252,0,0,1,253,0,0,0,254,0,0,0,191,0,0,0,127,64,0,0,63,192,0,0,47,192,0,0,15,224,0,0,15,240,0,0,7,244,0,0,3,248,0,0,2,252,0,0,1,253,0,0,0,255,0,0,0,191,0,0,0,63,128,0,0,63,192,0,0,31,208,0,0,15,224,0,0,11,240, + // 0x005d ] + 9,33,99,13,1,250,255,255,128,255,255,128,255,255,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,255,255,128,255,255,128,255,255,128, + // 0x005e ^ + 19,18,90,22,1,10,0,0,16,0,0,0,0,252,0,0,0,2,253,0,0,0,3,255,0,0,0,7,255,64,0,0,15,223,192,0,0,31,203,208,0,0,63,67,240,0,0,127,2,248,0,0,253,0,252,0,0,252,0,190,0,2,248,0,63,0,3,240,0,47,128,11,224,0,15,192,15,192,0,11,224,47,192,0,3,240,63,64,0,2,248,127,0,0,0,252, + // 0x005f _ + 17,3,15,16,0,250,170,170,170,170,64,255,255,255,255,128,255,255,255,255,128, + // 0x0060 ` + 9,6,18,12,1,23,127,224,0,31,240,0,7,252,0,1,254,0,0,127,64,0,31,192, + // 0x0061 a + 18,22,110,22,1,255,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x0062 b + 19,30,150,24,3,255,191,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,1,174,128,0,255,15,255,248,0,255,127,255,255,0,255,254,155,255,128,255,240,0,191,208,255,192,0,47,240,255,128,0,15,240,255,64,0,15,244,255,64,0,11,244,255,0,0,11,248,255,0,0,11,248,255,0,0,11,248,255,64,0,11,244,255,64,0,15,244,255,128,0,15,240,255,192,0,31,240,255,224,0,63,224,255,248,1,255,192,255,255,255,255,64,254,63,255,253,0,253,11,255,224,0,0,0,21,0,0, + // 0x0063 c + 15,22,88,19,2,255,0,6,254,144,0,191,255,252,3,255,255,252,15,255,171,248,47,244,0,16,63,208,0,0,127,192,0,0,191,128,0,0,255,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,0,191,128,0,0,127,192,0,0,63,240,0,0,31,253,0,124,11,255,255,252,2,255,255,252,0,47,255,244,0,0,84,0, + // 0x0064 d + 19,30,150,24,2,255,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,27,232,11,244,1,255,255,139,244,7,255,255,247,244,15,254,155,255,244,63,244,0,127,244,63,208,0,47,244,191,192,0,15,244,191,128,0,15,244,255,64,0,11,244,255,0,0,11,244,255,0,0,7,244,255,0,0,7,244,255,0,0,11,244,255,64,0,11,244,191,128,0,15,244,127,192,0,15,244,63,224,0,63,244,47,248,1,255,244,15,255,255,251,244,3,255,255,211,244,0,127,254,3,244,0,1,64,0,0, + // 0x0065 e + 18,22,110,22,2,255,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x0066 f + 15,29,116,14,0,0,0,1,255,248,0,15,255,252,0,63,255,248,0,127,228,96,0,191,128,0,0,255,64,0,0,255,0,0,0,255,0,0,1,255,149,64,47,255,255,192,127,255,255,192,42,255,170,128,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0, + // 0x0067 g + 19,31,155,24,2,246,0,27,232,1,80,1,255,255,131,244,7,255,255,243,244,15,255,171,255,244,47,244,0,191,244,63,208,0,47,244,127,192,0,15,244,191,128,0,15,244,255,64,0,11,244,255,0,0,11,244,255,0,0,7,244,255,0,0,7,244,255,0,0,7,244,255,64,0,11,244,191,128,0,15,244,127,192,0,15,244,63,224,0,47,244,47,248,0,191,244,15,255,255,251,244,3,255,255,219,244,0,191,254,11,244,0,1,80,11,244,0,0,0,11,244,0,0,0,15,240,0,0,0,31,240,16,0,0,63,224,47,148,2,255,192,47,255,255,255,64,47,255,255,253,0,2,191,255,144,0,0,0,0,0,0, + // 0x0068 h + 18,29,145,24,3,0,191,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,1,175,144,0,255,15,255,253,0,255,63,255,255,64,255,255,155,255,192,255,240,0,127,208,255,208,0,47,224,255,192,0,31,240,255,128,0,15,240,255,64,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240, + // 0x0069 i + 5,28,56,10,3,0,191,0,255,64,255,64,191,0,4,0,0,0,0,0,85,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, + // 0x006a j + 10,38,114,10,254,246,0,47,192,0,63,208,0,63,208,0,47,192,0,1,0,0,0,0,0,0,0,0,21,64,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,65,255,192,255,255,64,255,254,0,255,244,0,0,0,0, + // 0x006b k + 18,29,145,21,3,0,191,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,21,64,255,0,0,255,128,255,0,3,254,0,255,0,15,248,0,255,0,63,224,0,255,0,255,192,0,255,2,255,0,0,255,11,252,0,0,255,47,240,0,0,255,127,208,0,0,255,255,240,0,0,255,255,252,0,0,255,227,254,0,0,255,129,255,64,0,255,0,191,192,0,255,0,63,240,0,255,0,15,248,0,255,0,7,253,0,255,0,2,255,0,255,0,0,255,192,255,0,0,63,224, + // 0x006c l + 4,29,29,10,3,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x006d m + 30,21,168,36,3,0,84,1,190,128,0,111,224,0,254,31,255,248,7,255,254,0,255,127,255,254,47,255,255,128,255,254,155,255,191,166,255,208,255,240,0,255,252,0,63,224,255,192,0,127,240,0,31,240,255,192,0,63,224,0,15,240,255,64,0,63,208,0,15,240,255,64,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240, + // 0x006e n + 18,21,105,24,3,0,84,1,191,144,0,254,15,255,253,0,255,63,255,255,64,255,255,155,255,192,255,240,0,127,208,255,208,0,47,224,255,192,0,31,240,255,128,0,15,240,255,64,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240, + // 0x006f o + 19,22,110,23,2,255,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x0070 p + 19,31,155,24,3,246,84,1,191,128,0,254,15,255,248,0,255,63,255,255,0,255,254,155,255,192,255,240,0,191,208,255,192,0,47,240,255,128,0,15,240,255,64,0,15,244,255,64,0,11,244,255,0,0,11,248,255,0,0,11,248,255,0,0,11,248,255,64,0,11,244,255,64,0,15,244,255,128,0,15,240,255,192,0,47,240,255,224,0,63,224,255,248,1,255,192,255,255,255,255,64,255,63,255,253,0,255,7,255,224,0,255,0,21,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,0,0,0,0,0, + // 0x0071 q + 19,31,155,24,2,246,0,27,232,1,80,1,255,255,131,244,7,255,255,247,244,15,254,155,255,244,63,240,0,127,244,63,208,0,47,244,191,192,0,15,244,191,128,0,15,244,255,64,0,11,244,255,0,0,11,244,255,0,0,7,244,255,0,0,7,244,255,0,0,11,244,255,64,0,11,244,191,128,0,15,244,127,192,0,15,244,63,224,0,63,244,47,248,1,255,244,15,255,255,251,244,3,255,255,219,244,0,191,254,11,244,0,1,64,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,0,0, + // 0x0072 r + 13,21,84,16,3,0,84,0,191,64,253,11,255,64,254,47,255,64,255,127,255,0,255,253,0,0,255,240,0,0,255,192,0,0,255,128,0,0,255,64,0,0,255,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0, + // 0x0073 s + 15,22,88,18,2,255,0,111,233,0,11,255,255,240,63,255,255,240,191,229,111,224,255,0,0,64,255,0,0,0,255,0,0,0,255,208,0,0,127,253,0,0,31,255,224,0,2,255,254,0,0,47,255,208,0,1,255,240,0,0,47,248,0,0,11,248,0,0,3,248,0,0,7,248,244,0,31,244,255,251,255,240,255,255,255,192,111,255,253,0,0,85,0,0, + // 0x0074 t + 14,26,104,15,0,255,0,62,0,0,0,126,0,0,0,190,0,0,0,254,0,0,2,255,85,64,47,255,255,208,127,255,255,208,43,255,170,128,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,255,0,0,0,255,128,0,0,255,255,224,0,63,255,224,0,11,255,208,0,0,84,0, + // 0x0075 u + 18,22,110,24,3,255,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,11,240,0,5,64,0,0, + // 0x0076 v + 20,21,105,20,0,0,85,0,0,0,85,191,128,0,2,254,127,192,0,3,252,63,208,0,7,252,31,224,0,11,244,15,240,0,15,240,11,244,0,31,224,7,248,0,63,208,3,252,0,63,192,2,253,0,127,128,0,255,0,255,0,0,255,0,255,0,0,127,130,253,0,0,63,195,252,0,0,47,195,248,0,0,31,215,244,0,0,15,235,240,0,0,11,255,224,0,0,3,255,192,0,0,3,255,192,0,0,1,255,64,0, + // 0x0077 w + 30,21,168,31,0,0,106,64,0,26,144,0,6,160,127,192,0,63,240,0,15,240,63,192,0,127,240,0,31,224,47,208,0,255,244,0,47,208,31,224,0,255,248,0,63,192,15,240,1,253,252,0,63,192,15,240,2,248,253,0,127,128,11,244,3,244,254,0,191,64,7,248,3,240,191,0,255,0,3,252,11,240,127,0,254,0,3,252,15,224,63,65,253,0,2,253,15,208,63,130,252,0,1,254,31,192,47,195,252,0,0,255,47,192,15,211,248,0,0,191,63,64,15,231,244,0,0,127,127,0,11,235,240,0,0,63,191,0,7,255,240,0,0,63,254,0,3,255,208,0,0,47,253,0,3,255,192,0,0,31,252,0,2,255,192,0,0,15,248,0,0,255,128,0, + // 0x0078 x + 19,21,105,21,1,0,85,64,0,5,84,127,192,0,31,240,47,240,0,63,208,15,244,0,255,128,7,252,1,255,0,2,255,3,253,0,0,255,75,248,0,0,127,239,240,0,0,47,255,192,0,0,15,255,128,0,0,7,255,0,0,0,15,255,64,0,0,47,255,192,0,0,63,239,240,0,0,255,79,248,0,2,255,3,253,0,7,252,1,255,0,15,244,0,255,128,47,240,0,63,208,127,192,0,31,240,255,64,0,15,252, + // 0x0079 y + 20,31,155,20,0,246,85,0,0,0,85,191,128,0,2,254,63,192,0,3,253,63,208,0,7,252,31,240,0,11,248,15,240,0,15,240,11,248,0,31,240,3,252,0,47,208,3,253,0,63,192,1,254,0,127,128,0,255,0,255,64,0,191,64,255,0,0,63,129,254,0,0,63,195,252,0,0,31,211,252,0,0,15,231,244,0,0,11,251,240,0,0,3,255,224,0,0,3,255,192,0,0,1,255,192,0,0,0,255,64,0,0,0,255,0,0,0,1,254,0,0,0,2,253,0,0,0,3,252,0,0,0,15,244,0,0,16,127,240,0,0,127,255,192,0,0,127,255,64,0,0,127,248,0,0,0,0,0,0,0,0, + // 0x007a z + 16,21,84,18,1,0,21,85,85,84,63,255,255,253,63,255,255,253,42,170,171,252,0,0,11,248,0,0,31,240,0,0,63,192,0,0,255,64,0,2,254,0,0,7,252,0,0,15,244,0,0,47,224,0,0,127,192,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,208,0,0,191,255,255,254,191,255,255,254,191,255,255,254, + // 0x007b { + 13,33,132,15,1,250,0,0,191,64,0,11,255,64,0,47,255,64,0,63,244,0,0,127,192,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,191,64,0,0,255,0,0,27,254,0,0,255,244,0,0,255,128,0,0,255,248,0,0,7,254,0,0,0,255,0,0,0,191,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,192,0,0,63,245,0,0,47,255,64,0,11,255,64,0,0,111,64, + // 0x007c | + 3,38,38,21,9,247,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252, + // 0x007d } + 13,33,132,15,1,250,191,64,0,0,191,244,0,0,191,252,0,0,7,254,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,0,0,0,191,0,0,0,127,128,0,0,63,245,0,0,11,255,128,0,1,255,128,0,15,255,128,0,63,228,0,0,191,128,0,0,191,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,1,255,0,0,27,254,0,0,191,252,0,0,191,240,0,0,190,64,0,0, + // 0x007e ~ + 18,6,30,22,2,10,31,254,0,0,32,191,255,244,1,240,255,255,255,255,240,244,7,255,255,224,128,0,47,255,64,0,0,0,16,0, + // 0x007f - 0x009a Control Characters + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x00a0 "�" + 0,0,0,10,0,0, + // 0x00a1 ¡ + 6,28,56,10,2,249,10,64,63,208,127,224,127,224,63,208,10,64,0,0,0,0,0,0,31,128,31,128,31,128,31,192,47,192,47,192,47,192,47,192,47,192,63,192,63,192,63,192,63,192,63,208,63,208,63,208,63,208,63,208,63,208, + // 0x00a2 ¢ + 16,29,116,22,3,255,0,0,164,0,0,1,248,0,0,1,248,0,0,1,253,0,0,47,255,253,2,255,255,253,11,255,255,252,31,253,0,104,63,240,0,0,63,192,0,0,127,192,0,0,191,128,0,0,191,64,0,0,191,64,0,0,255,64,0,0,191,64,0,0,191,128,0,0,127,128,0,0,127,192,0,0,63,224,0,0,47,248,0,24,15,255,235,252,3,255,255,252,0,191,255,252,0,6,254,128,0,1,244,0,0,1,244,0,0,1,244,0,0,0,80,0, + // 0x00a3 £ + 20,28,140,22,1,0,0,0,5,80,0,0,1,255,255,144,0,15,255,255,244,0,63,255,255,240,0,127,224,2,224,0,191,128,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,191,255,255,253,0,191,255,255,253,0,191,255,255,253,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,1,254,0,0,0,2,253,0,0,0,11,244,0,0,0,127,250,170,170,169,191,255,255,255,254,191,255,255,255,254,191,255,255,255,254, + // 0x00a4 ¤ + 17,18,90,22,2,4,8,0,0,2,0,127,6,249,15,192,127,255,255,255,192,31,255,255,255,0,11,249,7,252,0,15,224,0,254,0,15,192,0,63,0,31,128,0,63,0,47,64,0,47,64,31,128,0,47,0,31,192,0,63,0,15,208,0,190,0,7,248,7,252,0,15,255,255,255,0,63,255,255,255,192,127,11,253,31,192,28,0,0,7,0,0,0,0,0,0, + // 0x00a5 ¥ + 21,27,162,22,0,0,127,192,0,0,63,192,47,208,0,0,191,64,15,240,0,0,255,0,11,244,0,2,253,0,3,252,0,3,252,0,2,253,0,11,244,0,0,255,0,15,224,0,0,191,64,47,192,0,0,63,192,63,128,0,0,47,208,191,0,0,0,15,240,254,0,0,0,11,246,252,0,0,0,3,255,248,0,0,0,1,255,240,0,0,2,255,255,255,240,0,2,255,255,255,240,0,1,170,191,234,160,0,0,0,63,192,0,0,0,0,63,192,0,0,0,85,127,213,80,0,2,255,255,255,240,0,2,255,255,255,240,0,0,85,127,213,80,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x00a6 ¦ + 3,38,38,21,9,247,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,0,0,0,0,0,0,0,0,168,252,252,252,252,252,252,252,252,252,252,252,252,252,252, + // 0x00a7 § + 15,30,120,19,2,255,0,191,254,64,11,255,255,244,47,255,255,240,63,128,1,224,127,0,0,0,127,64,0,0,63,192,0,0,47,248,0,0,11,255,208,0,3,255,253,0,15,251,255,128,63,128,191,240,127,0,11,244,126,0,3,252,127,0,1,252,127,64,1,252,63,224,3,248,31,254,11,240,3,255,255,208,0,127,255,128,0,2,255,224,0,0,47,244,0,0,7,248,0,0,3,252,0,0,3,248,228,0,11,244,255,234,191,240,255,255,255,192,31,255,249,0,0,0,0,0, + // 0x00a8 ¨ + 12,5,15,22,5,23,46,0,188,127,64,254,127,128,254,63,0,189,0,0,0, + // 0x00a9 © + 28,29,203,32,2,255,0,0,1,85,64,0,0,0,0,191,255,249,0,0,0,11,255,171,255,208,0,0,63,208,0,11,248,0,0,253,0,0,0,190,0,3,240,0,0,0,47,128,15,192,2,255,228,11,208,31,0,31,255,252,2,240,62,0,127,230,248,0,244,124,0,254,0,0,0,188,184,1,252,0,0,0,60,244,3,244,0,0,0,61,244,3,240,0,0,0,46,240,3,240,0,0,0,46,240,3,240,0,0,0,46,240,3,240,0,0,0,46,244,3,240,0,0,0,46,248,3,244,0,0,0,61,188,1,248,0,0,0,124,124,0,254,0,0,0,188,62,0,127,234,248,0,244,31,64,31,255,248,3,240,15,192,2,255,208,11,208,3,240,0,0,0,47,128,0,254,0,0,1,254,0,0,63,224,0,27,248,0,0,7,255,255,255,208,0,0,0,127,255,249,0,0,0,0,0,85,0,0,0, + // 0x00aa ª + 11,14,42,14,1,14,0,85,0,31,255,208,63,255,244,24,1,252,0,0,252,0,5,252,11,255,252,63,234,252,189,0,188,252,0,252,252,2,252,191,175,252,63,254,60,6,144,20, + // 0x00ab « + 18,16,80,21,1,2,0,11,64,7,64,0,31,224,31,224,0,63,192,63,192,0,255,0,255,64,3,253,3,253,0,11,248,11,248,0,47,224,31,240,0,127,192,127,192,0,63,192,63,208,0,31,240,31,240,0,11,252,7,252,0,2,254,2,254,0,0,255,64,191,128,0,63,208,63,208,0,15,224,15,224,0,6,0,3,0, + // 0x00ac ¬ + 18,11,55,22,2,4,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,0,0,0,7,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,0,0, + // 0x00ad ­ + 10,4,12,12,1,8,191,255,224,191,255,240,191,255,240,106,170,144, + // 0x00ae ® + 28,29,203,32,2,255,0,0,1,85,64,0,0,0,0,191,255,249,0,0,0,11,255,171,255,208,0,0,63,208,0,11,248,0,0,253,0,0,0,190,0,3,240,0,0,0,47,128,15,192,127,254,64,11,208,31,0,127,255,240,2,240,62,0,127,171,252,0,244,124,0,125,0,253,0,188,184,0,125,0,189,0,60,244,0,125,0,189,0,61,244,0,125,0,252,0,46,240,0,126,7,252,0,46,240,0,127,255,240,0,46,240,0,127,255,128,0,46,244,0,126,15,192,0,46,248,0,125,7,240,0,61,188,0,125,3,244,0,124,124,0,125,1,252,0,188,62,0,125,0,190,0,244,31,64,125,0,63,3,240,15,192,125,0,31,139,208,3,240,0,0,0,47,128,0,254,0,0,1,254,0,0,63,224,0,27,248,0,0,7,255,255,255,208,0,0,0,127,255,249,0,0,0,0,0,85,0,0,0, + // 0x00af ¯ + 19,4,20,19,0,28,170,170,170,170,168,255,255,255,255,252,255,255,255,255,252,0,0,0,0,0, + // 0x00b0 ° + 13,13,52,16,2,15,0,85,0,0,11,255,224,0,47,255,252,0,127,65,254,0,253,0,63,0,252,0,47,0,252,0,47,64,252,0,47,0,253,0,63,0,127,129,254,0,47,255,252,0,11,255,224,0,0,85,0,0, + // 0x00b1 ± + 18,23,115,22,2,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,85,87,249,85,80,255,255,255,255,240,255,255,255,255,240,170,171,254,170,160,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,1,80,0,0,0,0,0,0,0,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240, + // 0x00b2 ² + 11,18,54,14,1,15,0,84,0,31,255,192,191,255,240,126,71,248,16,1,252,0,1,252,0,1,248,0,3,244,0,11,224,0,47,192,0,191,0,2,252,0,11,240,0,47,192,0,191,170,168,255,255,252,255,255,252,0,0,0, + // 0x00b3 ³ + 12,18,54,14,1,15,0,84,0,31,255,192,255,255,240,125,7,248,16,1,252,0,1,252,0,2,244,5,95,224,11,255,64,11,255,224,0,7,248,0,0,252,0,0,253,0,0,253,228,3,252,255,255,244,191,255,208,5,84,0, + // 0x00b4 ´ + 9,6,18,12,1,23,0,255,192,2,255,0,7,252,0,15,240,0,47,192,0,126,0,0, + // 0x00b5 µ + 18,31,155,24,3,246,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,64,0,47,240,255,64,0,63,240,255,192,0,191,240,255,244,2,255,240,255,255,255,255,240,255,255,255,203,240,255,47,254,7,240,255,1,64,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,0,0,0,0,0, + // 0x00b6 ¶ + 19,34,170,25,2,251,0,27,255,255,252,2,255,255,255,252,15,255,255,234,252,47,255,255,192,124,63,255,255,192,124,127,255,255,192,124,191,255,255,192,124,255,255,255,192,124,255,255,255,192,124,255,255,255,192,124,255,255,255,192,124,255,255,255,192,124,191,255,255,192,124,127,255,255,192,124,63,255,255,192,124,63,255,255,192,124,15,255,255,192,124,3,255,255,192,124,0,111,255,192,124,0,0,7,192,124,0,0,7,192,124,0,0,7,192,124,0,0,7,192,124,0,0,7,192,124,0,0,7,192,124,0,0,7,192,124,0,0,7,192,124,0,0,7,192,124,0,0,7,192,124,0,0,7,192,124,0,0,7,192,124,0,0,7,192,124,0,0,7,192,124,0,0,7,192,124, + // 0x00b7 · + 6,6,12,10,2,10,31,128,63,224,127,224,127,224,63,208,5,0, + // 0x00b8 ¸ + 8,10,20,8,0,246,7,208,15,192,31,244,6,253,0,191,0,127,85,254,255,252,255,224,0,0, + // 0x00b9 ¹ + 8,17,34,14,2,15,1,254,11,254,63,254,255,190,248,190,16,190,0,190,0,190,0,190,0,190,0,190,0,190,0,190,0,190,0,190,0,190,0,0, + // 0x00ba º + 12,14,42,14,1,14,0,21,0,7,255,224,31,255,252,63,64,189,125,0,63,188,0,47,252,0,47,252,0,47,188,0,47,125,0,63,63,0,190,31,251,252,7,255,240,0,106,0, + // 0x00bb » + 17,16,80,21,2,2,44,0,44,0,0,255,0,255,0,0,191,128,127,128,0,63,208,47,224,0,15,244,15,244,0,3,252,3,252,0,1,255,1,255,0,0,191,128,127,192,0,191,128,191,128,2,254,1,255,0,7,252,7,252,0,15,240,15,240,0,63,208,63,208,0,255,64,191,128,0,254,0,254,0,0,24,0,24,0,0, + // 0x00bc ¼ + 28,27,189,29,1,0,0,191,64,0,0,252,0,3,255,64,0,2,248,0,31,255,64,0,7,240,0,191,127,64,0,15,208,0,61,63,64,0,47,192,0,16,63,64,0,63,0,0,0,63,64,0,190,0,0,0,63,64,1,252,0,0,0,63,64,3,244,0,0,0,63,64,7,240,0,0,0,63,64,15,192,5,64,0,63,64,47,128,15,224,0,63,64,127,0,63,224,0,63,64,253,0,191,224,0,63,65,252,1,255,224,0,63,67,244,3,235,224,0,0,11,224,11,203,224,0,0,15,192,31,75,224,0,0,63,64,62,11,224,0,0,127,0,188,11,224,0,0,253,1,240,11,224,0,2,248,3,255,255,255,0,3,240,3,255,255,255,0,15,224,2,170,175,250,0,31,192,0,0,11,224,0,63,64,0,0,11,224,0,190,0,0,0,11,224, + // 0x00bd ½ + 28,27,189,30,1,0,0,255,0,0,3,244,0,7,255,0,0,11,240,0,47,255,0,0,15,192,0,255,127,0,0,47,128,0,188,63,0,0,127,0,0,16,63,0,0,253,0,0,0,63,0,2,252,0,0,0,63,0,3,240,0,0,0,63,0,11,224,0,0,0,63,0,31,192,0,0,0,63,0,63,64,106,64,0,63,0,127,11,255,244,0,63,0,253,63,255,252,0,63,2,248,31,65,254,0,63,3,240,4,0,190,0,63,15,208,0,0,190,0,0,31,192,0,0,190,0,0,63,64,0,1,252,0,0,190,0,0,3,244,0,0,252,0,0,15,224,0,3,248,0,0,63,128,0,7,240,0,0,254,0,0,15,208,0,3,248,0,0,47,128,0,15,224,0,0,63,0,0,63,255,254,0,254,0,0,63,255,255,1,252,0,0,63,255,255, + // 0x00be ¾ + 29,28,224,30,1,0,0,85,0,0,0,0,0,0,31,255,208,0,0,47,192,0,255,255,244,0,0,63,0,0,125,3,252,0,0,254,0,0,0,0,252,0,1,252,0,0,0,0,252,0,3,244,0,0,0,2,248,0,11,240,0,0,5,95,240,0,15,192,0,0,11,255,128,0,47,128,0,0,11,255,240,0,127,0,0,0,0,2,252,0,253,0,0,0,0,0,253,2,252,0,84,0,0,0,189,3,240,3,248,0,0,0,253,11,224,15,248,0,228,6,252,31,192,47,248,0,255,255,244,63,64,63,248,0,191,255,208,127,0,250,248,0,1,84,0,253,2,242,248,0,0,0,2,248,7,210,248,0,0,0,7,240,15,130,248,0,0,0,15,208,47,2,248,0,0,0,31,192,125,2,248,0,0,0,63,64,255,255,255,192,0,0,190,0,255,255,255,192,0,0,252,0,170,171,254,128,0,3,248,0,0,2,248,0,0,7,240,0,0,2,248,0,0,15,208,0,0,2,248,0, + // 0x00bf ¿ + 15,29,116,17,1,248,0,1,160,0,0,7,252,0,0,11,253,0,0,11,253,0,0,7,252,0,0,1,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,248,0,0,2,248,0,0,3,248,0,0,11,244,0,0,31,240,0,0,191,192,0,2,255,64,0,15,252,0,0,47,240,0,0,127,192,0,0,191,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,20,127,228,6,252,63,255,255,252,15,255,255,252,1,255,255,128,0,1,64,0, + // 0x00c0 À + 25,36,252,25,0,0,0,3,255,0,0,0,0,0,0,255,128,0,0,0,0,0,63,192,0,0,0,0,0,15,240,0,0,0,0,0,3,248,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x00c1 Á + 25,36,252,25,0,0,0,0,0,31,244,0,0,0,0,0,63,224,0,0,0,0,0,191,128,0,0,0,0,1,254,0,0,0,0,0,3,248,0,0,0,0,0,11,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x00c2  + 25,36,252,25,0,0,0,0,15,252,0,0,0,0,0,63,254,0,0,0,0,0,255,255,64,0,0,0,2,253,47,208,0,0,0,11,244,11,244,0,0,0,31,128,1,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x00c3 à + 25,35,245,25,0,0,0,2,254,0,61,0,0,0,11,255,224,189,0,0,0,15,255,255,252,0,0,0,47,2,255,240,0,0,0,46,0,47,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x00c4 Ä + 25,35,245,25,0,0,0,2,240,7,208,0,0,0,3,248,15,240,0,0,0,3,252,15,240,0,0,0,2,244,7,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x00c5 Å + 25,34,238,25,0,0,0,0,0,64,0,0,0,0,0,31,252,0,0,0,0,0,127,255,0,0,0,0,0,252,15,64,0,0,0,0,244,11,128,0,0,0,0,244,15,128,0,0,0,0,190,127,64,0,0,0,0,63,254,0,0,0,0,0,47,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x00c6 Æ + 32,27,216,34,0,0,0,0,0,191,255,255,255,255,0,0,0,255,255,255,255,255,0,0,2,255,255,255,255,255,0,0,3,253,127,229,85,85,0,0,11,248,63,208,0,0,0,0,15,240,63,208,0,0,0,0,31,224,63,208,0,0,0,0,63,192,63,208,0,0,0,0,127,128,63,208,0,0,0,0,255,0,63,208,0,0,0,1,255,0,63,208,0,0,0,3,253,0,63,255,255,253,0,7,252,0,63,255,255,253,0,11,244,0,63,255,255,253,0,15,240,0,63,234,170,168,0,47,229,85,127,208,0,0,0,63,255,255,255,208,0,0,0,191,255,255,255,208,0,0,0,255,255,255,255,208,0,0,2,254,0,0,63,208,0,0,3,252,0,0,63,208,0,0,7,252,0,0,63,208,0,0,15,244,0,0,63,208,0,0,31,240,0,0,63,234,170,170,63,208,0,0,63,255,255,255,127,192,0,0,63,255,255,255,255,64,0,0,63,255,255,255, + // 0x00c7 Ç + 21,38,228,24,2,246,0,0,5,85,0,0,0,1,255,255,249,0,0,31,255,255,255,128,0,127,255,255,255,0,1,255,244,1,191,0,3,255,64,0,4,0,15,252,0,0,0,0,31,244,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,63,208,0,0,0,0,63,240,0,0,0,0,31,244,0,0,0,0,15,252,0,0,0,0,7,255,64,0,0,0,2,255,249,1,111,0,0,191,255,255,255,0,0,31,255,255,255,0,0,2,255,255,249,0,0,0,7,244,0,0,0,0,11,192,0,0,0,0,15,248,0,0,0,0,6,254,0,0,0,0,0,127,0,0,0,0,0,63,0,0,0,0,85,255,0,0,0,0,191,253,0,0,0,0,191,224,0,0,0,0,0,0,0,0, + // 0x00c8 È + 16,36,144,21,3,0,2,255,0,0,0,255,128,0,0,63,208,0,0,15,240,0,0,3,252,0,0,0,189,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x00c9 É + 16,36,144,21,3,0,0,0,15,248,0,0,63,240,0,0,127,192,0,0,255,0,0,3,248,0,0,11,224,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x00ca Ê + 16,36,144,21,3,0,0,15,252,0,0,63,255,0,0,191,255,128,2,253,47,224,7,244,7,244,15,192,0,253,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x00cb Ë + 16,35,140,21,3,0,1,244,3,208,3,252,15,240,3,252,15,240,2,244,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x00cc Ì + 11,36,108,13,1,0,191,208,0,47,240,0,11,248,0,2,252,0,0,191,0,0,47,128,0,0,0,0,0,0,0,0,0,191,255,252,191,255,252,47,255,228,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,47,255,244,191,255,252,191,255,252, + // 0x00cd Í + 12,36,108,13,1,0,0,3,255,0,11,252,0,31,240,0,63,192,0,191,0,1,248,0,0,0,0,0,0,0,0,0,0,191,255,252,191,255,252,47,255,228,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,47,255,244,191,255,252,191,255,252, + // 0x00ce Î + 14,36,144,13,0,0,0,255,208,0,2,255,240,0,7,255,252,0,31,225,254,0,63,128,63,128,253,0,11,208,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,0,47,255,255,0,11,255,249,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,11,255,253,0,47,255,255,0,47,255,255,0, + // 0x00cf Ï + 12,35,105,13,1,0,125,0,248,255,2,253,255,2,253,126,0,252,0,0,0,0,0,0,0,0,0,0,0,0,191,255,252,191,255,252,47,255,228,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,47,255,244,191,255,252,191,255,252, + // 0x00d0 Ð + 25,27,189,28,1,0,3,255,255,254,64,0,0,3,255,255,255,244,0,0,3,255,255,255,255,0,0,3,253,85,111,255,192,0,3,252,0,1,255,240,0,3,252,0,0,47,248,0,3,252,0,0,11,252,0,3,252,0,0,3,254,0,3,252,0,0,2,255,0,3,252,0,0,0,255,0,3,252,0,0,0,255,64,7,252,0,0,0,255,64,255,255,255,192,0,255,128,255,255,255,192,0,191,128,255,255,255,192,0,255,64,87,253,85,64,0,255,64,3,252,0,0,0,255,64,3,252,0,0,1,255,0,3,252,0,0,2,255,0,3,252,0,0,3,253,0,3,252,0,0,15,252,0,3,252,0,0,63,244,0,3,252,0,2,255,224,0,3,253,86,191,255,128,0,3,255,255,255,253,0,0,3,255,255,255,224,0,0,3,255,255,233,0,0,0, + // 0x00d1 Ñ + 23,35,210,29,3,0,0,7,253,0,124,0,0,15,255,209,248,0,0,63,255,255,240,0,0,61,7,255,224,0,0,124,0,127,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,240,0,0,3,252,127,248,0,0,3,252,127,252,0,0,3,252,127,255,0,0,3,252,127,255,64,0,3,252,127,191,192,0,3,252,127,63,224,0,3,252,127,31,244,0,3,252,127,11,252,0,3,252,127,3,254,0,3,252,127,65,255,0,3,252,127,64,255,192,3,252,127,64,63,208,3,252,127,64,47,240,3,252,127,64,15,248,3,252,127,64,7,253,3,252,127,64,2,255,3,252,127,64,0,255,131,252,127,64,0,127,195,252,127,64,0,63,243,252,127,64,0,15,246,252,127,64,0,11,255,252,127,64,0,3,255,252,127,64,0,1,255,252,127,64,0,0,191,252,127,64,0,0,63,252,127,64,0,0,31,252, + // 0x00d2 Ò + 26,37,3,30,2,255,0,1,255,64,0,0,0,0,0,191,192,0,0,0,0,0,47,224,0,0,0,0,0,11,244,0,0,0,0,0,1,252,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x00d3 Ó + 26,37,3,30,2,255,0,0,0,15,252,0,0,0,0,0,31,240,0,0,0,0,0,63,208,0,0,0,0,0,255,0,0,0,0,0,1,252,0,0,0,0,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x00d4 Ô + 26,37,3,30,2,255,0,0,11,253,0,0,0,0,0,31,255,0,0,0,0,0,127,255,192,0,0,0,0,255,15,240,0,0,0,3,248,3,252,0,0,0,15,208,0,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x00d5 Õ + 26,36,252,30,2,255,0,0,191,64,31,0,0,0,3,255,244,63,0,0,0,11,255,255,253,0,0,0,15,129,255,248,0,0,0,15,0,27,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x00d6 Ö + 26,36,252,30,2,255,0,0,248,2,224,0,0,0,2,253,7,244,0,0,0,2,253,7,248,0,0,0,0,252,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x00d7 × + 17,17,85,22,2,5,8,0,0,5,0,47,0,0,31,64,127,192,0,127,192,31,240,1,255,0,7,252,7,252,0,1,255,31,240,0,0,127,255,192,0,0,31,255,0,0,0,11,253,0,0,0,31,255,0,0,0,127,255,192,0,1,255,47,240,0,7,252,11,252,0,31,240,1,255,0,63,192,0,127,192,63,0,0,31,128,8,0,0,6,0, + // 0x00d8 Ø + 26,30,210,30,2,254,0,0,5,165,0,120,0,0,2,255,255,244,254,0,0,47,255,255,255,252,0,0,191,255,255,255,244,0,2,255,228,1,191,244,0,7,255,0,0,63,252,0,15,252,0,0,127,255,0,47,240,0,0,255,255,64,63,224,0,3,252,255,128,63,208,0,11,240,127,192,127,192,0,15,208,63,192,191,192,0,63,128,63,208,191,128,0,191,0,63,208,191,128,1,253,0,63,208,191,128,3,248,0,63,224,191,128,11,240,0,63,208,191,128,31,192,0,63,208,127,192,63,128,0,63,208,127,192,255,0,0,63,192,63,210,252,0,0,191,192,63,227,244,0,0,255,128,31,255,240,0,1,255,0,15,255,192,0,3,254,0,7,255,128,0,31,252,0,2,255,244,1,255,244,0,2,255,255,255,255,208,0,7,255,255,255,255,0,0,15,225,255,255,228,0,0,3,192,1,84,0,0,0,0,0,0,0,0,0,0, + // 0x00d9 Ù + 22,37,222,28,3,255,0,31,248,0,0,0,0,7,252,0,0,0,0,1,255,0,0,0,0,0,127,128,0,0,0,0,31,208,0,0,0,0,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,224,0,0,27,255,254,64,0,0,0,21,64,0,0, + // 0x00da Ú + 22,37,222,28,3,255,0,0,0,191,192,0,0,0,1,255,64,0,0,0,3,253,0,0,0,0,11,244,0,0,0,0,31,208,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,224,0,0,27,255,254,64,0,0,0,21,64,0,0, + // 0x00db Û + 22,37,222,28,3,255,0,0,191,224,0,0,0,1,255,244,0,0,0,3,255,252,0,0,0,15,240,255,0,0,0,63,192,63,192,0,0,190,0,11,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,224,0,0,27,255,254,64,0,0,0,21,64,0,0, + // 0x00dc Ü + 22,36,216,28,3,255,0,11,128,47,0,0,0,31,208,63,128,0,0,47,208,127,128,0,0,15,192,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,224,0,0,27,255,254,64,0,0,0,21,64,0,0, + // 0x00dd Ý + 22,36,216,22,0,0,0,0,0,191,192,0,0,0,1,255,64,0,0,0,3,253,0,0,0,0,11,244,0,0,0,0,31,208,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,192,0,0,47,240,63,208,0,0,63,208,47,240,0,0,191,128,15,244,0,0,255,0,11,252,0,2,254,0,3,253,0,3,252,0,1,255,0,11,248,0,0,255,64,31,240,0,0,127,192,63,208,0,0,63,208,127,192,0,0,31,240,255,64,0,0,11,249,255,0,0,0,3,255,253,0,0,0,2,255,248,0,0,0,0,255,240,0,0,0,0,191,224,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x00de Þ + 19,27,135,23,3,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,234,165,0,0,127,255,255,244,0,127,255,255,254,0,127,255,255,255,192,127,128,1,255,208,127,128,0,63,240,127,128,0,31,240,127,128,0,15,244,127,128,0,15,244,127,128,0,15,244,127,128,0,15,240,127,128,0,47,240,127,128,0,127,224,127,192,27,255,192,127,255,255,255,0,127,255,255,252,0,127,255,255,144,0,127,213,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0, + // 0x00df ß + 21,30,180,25,3,255,0,111,255,144,0,0,3,255,255,253,0,0,31,255,255,255,128,0,63,249,6,255,208,0,127,192,0,63,224,0,191,128,0,31,240,0,255,64,0,31,224,0,255,0,0,47,208,0,255,0,0,127,192,0,255,0,2,255,0,0,255,0,11,252,0,0,255,0,47,240,0,0,255,0,63,192,0,0,255,0,127,128,0,0,255,0,127,192,0,0,255,0,63,244,0,0,255,0,31,254,0,0,255,0,7,255,192,0,255,0,0,255,240,0,255,0,0,47,252,0,255,0,0,7,255,0,255,0,0,1,255,0,255,0,0,0,255,64,255,0,0,0,255,64,255,0,0,0,255,0,255,3,144,2,255,0,255,3,255,255,253,0,255,3,255,255,248,0,255,0,191,255,208,0,0,0,1,84,0,0, + // 0x00e0 à + 18,30,150,22,1,255,0,127,208,0,0,0,47,240,0,0,0,11,248,0,0,0,2,253,0,0,0,0,191,0,0,0,0,31,192,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x00e1 á + 18,30,150,22,1,255,0,0,3,255,0,0,0,7,252,0,0,0,15,244,0,0,0,63,192,0,0,0,191,0,0,0,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x00e2 â + 18,30,150,22,1,255,0,2,255,64,0,0,7,255,192,0,0,31,255,240,0,0,63,195,252,0,0,254,0,255,0,3,244,0,47,128,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x00e3 ã + 18,29,145,22,1,255,0,47,208,7,192,0,255,253,15,192,2,255,255,255,64,3,224,127,254,0,3,192,6,248,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x00e4 ä + 18,29,145,22,1,255,0,62,0,184,0,0,191,1,253,0,0,191,65,253,0,0,62,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x00e5 å + 18,33,165,22,1,255,0,0,16,0,0,0,2,255,64,0,0,15,255,224,0,0,15,66,240,0,0,31,0,240,0,0,31,1,240,0,0,15,135,240,0,0,11,255,208,0,0,1,254,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x00e6 æ + 31,22,176,33,1,255,0,6,254,64,1,191,144,0,2,255,255,244,31,255,252,0,7,255,255,253,127,255,255,0,3,254,87,255,255,149,255,192,1,128,0,127,252,0,47,224,0,0,0,63,244,0,15,240,0,0,0,47,240,0,15,244,0,0,0,47,224,0,11,244,0,0,21,127,229,85,91,248,0,111,255,255,255,255,255,248,3,255,255,255,255,255,255,248,15,254,84,63,250,170,170,164,47,240,0,47,224,0,0,0,63,208,0,63,224,0,0,0,63,192,0,63,240,0,0,0,127,192,0,63,244,0,0,0,63,192,0,255,252,0,0,0,63,224,3,254,255,64,6,224,31,255,255,240,255,255,255,224,11,255,255,192,63,255,255,224,1,255,254,0,7,255,255,64,0,5,64,0,0,21,64,0, + // 0x00e7 ç + 15,31,124,19,2,246,0,6,254,144,0,191,255,252,3,255,255,252,15,255,171,248,47,244,0,16,63,208,0,0,127,192,0,0,191,128,0,0,255,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,0,191,128,0,0,127,192,0,0,63,240,0,0,31,253,0,124,11,255,255,252,2,255,255,252,0,47,255,244,0,2,248,0,0,3,240,0,0,7,253,0,0,1,255,64,0,0,47,128,0,0,31,192,0,21,127,128,0,63,255,0,0,63,248,0,0,0,0,0, + // 0x00e8 è + 18,30,150,22,2,255,1,255,64,0,0,0,191,192,0,0,0,47,224,0,0,0,11,244,0,0,0,1,252,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x00e9 é + 18,30,150,22,2,255,0,0,15,252,0,0,0,31,240,0,0,0,63,208,0,0,0,191,64,0,0,1,252,0,0,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x00ea ê + 18,30,150,22,2,255,0,11,254,0,0,0,31,255,64,0,0,63,255,192,0,0,255,15,240,0,3,248,3,252,0,15,208,0,190,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x00eb ë + 18,29,145,22,2,255,0,248,2,224,0,2,253,7,248,0,2,253,7,248,0,0,252,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x00ec ì + 8,29,58,10,0,0,255,128,127,208,31,240,7,248,1,253,0,63,0,0,0,0,1,84,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252,3,252, + // 0x00ed í + 9,29,87,10,3,0,2,255,64,3,253,0,15,244,0,47,208,0,127,64,0,253,0,0,0,0,0,0,0,0,85,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, + // 0x00ee î + 14,29,116,10,254,0,0,127,224,0,0,255,244,0,3,255,253,0,15,240,255,0,47,192,47,192,190,0,7,240,0,0,0,0,0,0,0,0,0,21,64,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0, + // 0x00ef ï + 12,28,84,10,255,0,46,0,124,127,128,254,127,128,255,63,0,189,0,0,0,0,0,0,0,0,0,0,85,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0, + // 0x00f0 ð + 19,30,150,23,2,255,0,13,0,6,0,0,47,208,63,64,0,63,250,255,128,0,11,255,252,0,0,1,255,224,0,0,11,255,244,0,0,127,251,252,0,0,127,65,255,0,0,40,0,191,128,0,0,0,63,192,0,0,0,31,224,0,47,255,143,240,2,255,255,251,244,11,255,255,255,248,47,249,1,191,252,63,224,0,31,252,127,192,0,11,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,7,248,191,192,0,11,244,63,208,0,31,240,31,248,0,127,208,11,255,255,255,128,2,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x00f1 ñ + 18,28,140,24,3,0,0,191,64,31,0,3,255,244,63,0,11,255,255,253,0,15,129,255,252,0,15,0,27,224,0,0,0,0,0,0,0,0,0,0,0,84,1,191,144,0,254,15,255,253,0,255,63,255,255,64,255,255,155,255,192,255,240,0,127,208,255,208,0,47,224,255,192,0,31,240,255,128,0,15,240,255,64,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240, + // 0x00f2 ò + 19,30,150,23,2,255,0,191,192,0,0,0,63,224,0,0,0,15,244,0,0,0,3,252,0,0,0,0,255,0,0,0,0,47,64,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x00f3 ó + 19,30,150,23,2,255,0,0,3,254,0,0,0,15,252,0,0,0,31,240,0,0,0,63,192,0,0,0,254,0,0,0,2,248,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x00f4 ô + 19,30,150,23,2,255,0,3,255,0,0,0,15,255,192,0,0,47,255,224,0,0,127,135,248,0,1,253,1,253,0,3,240,0,63,64,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x00f5 õ + 19,29,145,23,2,255,0,127,208,11,128,1,255,253,31,64,3,255,255,255,0,7,208,127,253,0,11,128,7,244,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x00f6 ö + 19,29,145,23,2,255,0,125,0,248,0,0,255,2,252,0,0,255,2,252,0,0,125,1,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x00f7 ÷ + 18,19,95,22,2,4,0,0,64,0,0,0,3,248,0,0,0,7,252,0,0,0,7,252,0,0,0,3,248,0,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,3,248,0,0,0,7,252,0,0,0,7,252,0,0,0,3,248,0,0,0,0,80,0,0, + // 0x00f8 ø + 19,23,115,23,2,254,0,6,254,67,208,0,191,255,255,240,3,255,255,255,192,15,255,171,255,192,47,244,0,255,224,63,208,1,255,240,127,192,3,255,248,191,128,15,247,252,255,64,47,195,252,255,0,63,67,252,255,0,254,3,252,255,2,252,3,252,255,7,240,3,252,255,79,224,3,252,191,175,192,7,248,63,255,0,15,244,63,253,0,47,240,15,253,0,191,208,11,255,255,255,128,15,255,255,254,0,63,175,255,224,0,11,0,84,0,0,0,0,0,0,0, + // 0x00f9 ù + 18,30,150,24,3,255,1,255,64,0,0,0,127,192,0,0,0,47,240,0,0,0,11,244,0,0,0,1,252,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,11,240,0,5,64,0,0, + // 0x00fa ú + 18,30,150,24,3,255,0,0,15,252,0,0,0,31,244,0,0,0,63,208,0,0,0,191,64,0,0,1,253,0,0,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,11,240,0,5,64,0,0, + // 0x00fb û + 18,30,150,24,3,255,0,11,253,0,0,0,31,255,0,0,0,63,255,192,0,0,255,15,240,0,3,248,3,252,0,15,208,0,190,0,0,0,0,0,0,0,0,0,0,0,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,11,240,0,5,64,0,0, + // 0x00fc ü + 18,29,145,24,3,255,0,248,2,224,0,2,253,7,244,0,2,253,7,248,0,0,252,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,11,240,0,5,64,0,0, + // 0x00fd ý + 20,39,195,20,0,246,0,0,2,255,0,0,0,7,253,0,0,0,15,244,0,0,0,47,208,0,0,0,127,64,0,0,0,252,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,85,191,128,0,2,254,63,192,0,3,253,63,208,0,7,252,31,240,0,11,248,15,240,0,15,240,11,248,0,31,240,3,252,0,47,208,3,253,0,63,192,1,254,0,127,128,0,255,0,255,64,0,191,64,255,0,0,63,129,254,0,0,63,195,252,0,0,31,211,252,0,0,15,231,244,0,0,11,251,240,0,0,3,255,224,0,0,3,255,192,0,0,1,255,192,0,0,0,255,64,0,0,0,255,0,0,0,1,254,0,0,0,2,253,0,0,0,3,252,0,0,0,15,244,0,0,16,127,240,0,0,127,255,192,0,0,127,255,64,0,0,127,248,0,0,0,0,0,0,0,0, + // 0x00fe þ + 19,39,195,24,3,246,191,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,1,191,128,0,255,15,255,248,0,255,127,255,255,0,255,254,155,255,128,255,240,0,127,208,255,192,0,47,240,255,128,0,15,240,255,64,0,15,244,255,64,0,11,244,255,0,0,11,248,255,0,0,11,248,255,0,0,11,248,255,64,0,11,244,255,64,0,15,244,255,128,0,15,240,255,192,0,31,240,255,224,0,63,224,255,248,1,255,192,255,255,255,255,64,255,63,255,253,0,255,7,255,240,0,255,0,21,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,0,0,0,0,0, + // 0x00ff ÿ + 20,38,190,20,0,246,0,62,0,188,0,0,191,65,254,0,0,191,65,254,0,0,63,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,85,191,128,0,2,254,63,192,0,3,253,63,208,0,7,252,31,240,0,11,248,15,240,0,15,240,11,248,0,31,240,3,252,0,47,208,3,253,0,63,192,1,254,0,127,128,0,255,0,255,64,0,191,64,255,0,0,63,129,254,0,0,63,195,252,0,0,31,211,252,0,0,15,231,244,0,0,11,251,240,0,0,3,255,224,0,0,3,255,192,0,0,1,255,192,0,0,0,255,64,0,0,0,255,0,0,0,1,254,0,0,0,2,253,0,0,0,3,252,0,0,0,15,244,0,0,16,127,240,0,0,127,255,192,0,0,127,255,64,0,0,127,248,0,0,0,0,0,0,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_ASCII_28.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_ASCII_28.cpp new file mode 100644 index 0000000000..246f9fb60f --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_ASCII_28.cpp @@ -0,0 +1,222 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium ASCII 38pt, capital 'A' height: 28px, width: 100%, range: 0x0020-0x007e +extern const uint8_t NotoSans_Medium_ASCII_28[12031] = { + 130,28,32,0,126,0,37,246, // unifont_t + // 0x0020 " " + 0,0,0,10,0,0, + // 0x0021 ! + 6,28,56,10,2,255,63,224,63,224,63,208,63,208,63,208,63,208,63,208,63,192,47,192,47,192,47,192,47,192,47,192,31,192,31,192,31,192,31,192,31,128,15,128,0,0,0,0,0,0,31,128,63,224,127,224,127,224,63,208,5,0, + // 0x0022 " + 12,10,30,16,2,17,127,65,254,127,64,254,127,64,254,127,64,253,63,0,253,63,0,253,63,0,252,63,0,188,63,0,188,42,0,104, + // 0x0023 # + 23,27,162,25,1,0,0,0,253,0,253,0,0,0,252,0,252,0,0,0,252,0,252,0,0,1,248,1,248,0,0,2,248,2,248,0,0,3,244,2,244,0,0,3,240,3,240,0,0,7,240,7,240,0,47,255,255,255,255,248,47,255,255,255,255,248,26,175,250,175,250,164,0,15,192,15,192,0,0,15,192,15,192,0,0,31,192,31,192,0,0,31,128,47,128,0,0,47,64,47,64,0,255,255,255,255,255,192,255,255,255,255,255,208,255,255,255,255,255,208,0,190,0,190,0,0,0,189,0,189,0,0,0,252,0,252,0,0,0,252,0,252,0,0,0,252,1,252,0,0,1,248,1,248,0,0,2,244,2,244,0,0,2,244,3,244,0,0, + // 0x0024 $ + 18,32,160,22,2,253,0,1,240,0,0,0,1,240,0,0,0,1,240,0,0,0,27,250,80,0,2,255,255,255,64,15,255,255,255,192,63,255,255,255,64,127,209,240,27,0,255,65,240,0,0,255,1,240,0,0,255,65,240,0,0,191,193,240,0,0,63,250,240,0,0,47,255,240,0,0,7,255,255,64,0,0,191,255,244,0,0,7,255,255,0,0,1,255,255,192,0,1,240,191,208,0,1,240,47,224,0,1,240,15,240,0,1,240,31,224,144,1,240,63,208,254,81,246,255,192,255,255,255,255,64,255,255,255,252,0,27,255,255,144,0,0,2,240,0,0,0,1,240,0,0,0,1,240,0,0,0,1,240,0,0,0,0,0,0,0, + // 0x0025 % + 30,29,232,32,1,255,0,21,0,0,0,0,0,0,2,255,224,0,0,127,0,0,11,255,248,0,0,253,0,0,31,230,253,0,1,252,0,0,47,128,190,0,3,244,0,0,63,64,127,0,11,240,0,0,63,0,63,0,15,208,0,0,127,0,63,64,47,128,0,0,127,0,63,64,63,0,0,0,127,0,63,64,254,0,0,0,127,0,63,65,252,0,0,0,63,0,63,3,244,6,144,0,63,64,127,7,240,191,252,0,47,128,190,15,210,255,255,0,15,230,253,47,195,248,127,128,11,255,248,63,71,240,31,192,2,255,224,190,11,224,15,208,0,21,0,252,15,208,15,224,0,0,3,248,15,208,11,224,0,0,7,240,15,208,11,224,0,0,15,224,15,208,11,224,0,0,31,192,15,208,11,224,0,0,63,64,15,224,15,208,0,0,191,0,11,224,15,208,0,0,253,0,7,240,47,192,0,2,248,0,3,254,191,128,0,3,240,0,0,255,255,0,0,15,224,0,0,127,248,0,0,0,0,0,0,1,64,0, + // 0x0026 & + 26,29,203,28,2,255,0,1,101,0,0,0,0,0,47,255,224,0,0,0,0,255,255,252,0,0,0,3,255,239,255,0,0,0,7,253,1,255,0,0,0,11,244,0,191,64,0,0,11,240,0,127,64,0,0,11,244,0,191,64,0,0,7,248,0,255,0,0,0,3,253,3,254,0,0,0,1,255,31,252,0,0,0,0,191,255,240,0,0,0,0,63,255,128,0,0,0,0,127,253,0,0,0,0,2,255,255,0,0,191,64,15,254,255,192,0,255,0,63,244,63,240,1,254,0,127,208,15,252,3,253,0,255,128,3,255,3,252,0,255,0,0,255,223,244,0,255,0,0,63,255,240,0,255,0,0,15,255,192,0,255,128,0,3,255,128,0,191,208,0,15,255,208,0,127,249,1,191,255,244,0,47,255,255,255,223,253,0,11,255,255,254,3,255,64,0,191,255,224,0,255,208,0,1,80,0,0,0,0, + // 0x0027 ' + 5,10,20,9,2,17,127,64,127,64,127,64,127,64,63,0,63,0,63,0,63,0,63,0,42,0, + // 0x0028 ( + 10,33,99,12,1,250,0,31,208,0,63,128,0,255,0,1,253,0,3,252,0,7,248,0,11,240,0,15,240,0,31,208,0,47,192,0,63,192,0,63,192,0,63,128,0,127,128,0,127,64,0,127,64,0,127,64,0,127,64,0,127,64,0,127,128,0,63,128,0,63,192,0,63,192,0,47,192,0,31,224,0,15,240,0,11,240,0,7,248,0,3,252,0,1,253,0,0,191,0,0,63,128,0,31,208, + // 0x0029 ) + 10,33,99,12,1,250,127,0,0,63,192,0,15,224,0,11,240,0,3,248,0,2,252,0,1,254,0,0,255,0,0,191,0,0,127,64,0,63,128,0,63,192,0,63,192,0,47,192,0,47,208,0,47,208,0,47,208,0,47,208,0,47,208,0,47,192,0,63,192,0,63,192,0,63,128,0,127,128,0,191,0,0,255,0,1,254,0,2,252,0,3,248,0,11,240,0,15,224,0,63,192,0,127,0,0, + // 0x002a * + 19,18,90,21,1,11,0,2,253,0,0,0,2,252,0,0,0,1,252,0,0,0,1,252,0,0,0,0,252,0,0,36,0,252,0,96,63,208,248,111,240,127,255,255,255,240,127,255,255,255,244,5,107,255,149,64,0,7,255,0,0,0,15,239,192,0,0,63,143,224,0,0,191,7,244,0,1,255,3,252,0,3,253,1,254,0,0,124,0,244,0,0,0,0,0,0, + // 0x002b + + 18,19,95,22,2,4,0,1,160,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,0,3,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0,0,2,244,0,0, + // 0x002c , + 7,10,20,10,1,251,5,80,15,248,15,240,15,240,31,224,47,192,63,192,63,64,63,0,126,0, + // 0x002d - + 10,4,12,12,1,8,191,255,224,191,255,240,191,255,240,106,170,144, + // 0x002e . + 6,6,12,10,2,255,31,128,63,224,127,224,127,224,63,208,5,0, + // 0x002f / + 14,27,108,15,0,0,0,0,15,240,0,0,15,224,0,0,47,208,0,0,63,192,0,0,127,128,0,0,191,0,0,0,255,0,0,1,253,0,0,3,252,0,0,3,248,0,0,11,244,0,0,15,240,0,0,31,224,0,0,47,192,0,0,63,192,0,0,127,64,0,0,191,0,0,0,254,0,0,1,253,0,0,3,252,0,0,3,248,0,0,11,240,0,0,15,240,0,0,31,208,0,0,47,192,0,0,63,128,0,0,127,64,0,0, + // 0x0030 0 + 19,29,145,22,1,255,0,1,101,0,0,0,47,255,240,0,0,255,255,253,0,3,255,255,255,64,7,254,0,191,192,15,244,0,63,208,31,240,0,15,240,47,224,0,15,240,63,208,0,11,244,63,192,0,7,248,63,192,0,7,252,63,192,0,3,252,63,192,0,3,252,127,192,0,3,252,127,128,0,3,252,127,192,0,3,252,63,192,0,3,252,63,192,0,3,252,63,192,0,7,252,63,192,0,7,248,47,208,0,11,244,31,224,0,15,240,15,240,0,31,240,11,248,0,63,208,3,254,1,255,192,1,255,255,255,64,0,191,255,253,0,0,27,255,224,0,0,0,20,0,0, + // 0x0031 1 + 11,27,81,22,3,0,0,3,252,0,31,252,0,191,252,2,255,252,15,255,252,127,227,252,191,131,252,45,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252, + // 0x0032 2 + 19,28,140,22,1,0,0,1,101,0,0,0,127,255,244,0,7,255,255,254,0,47,255,255,255,128,47,244,1,255,192,11,128,0,63,224,1,0,0,31,240,0,0,0,15,240,0,0,0,15,240,0,0,0,31,240,0,0,0,47,224,0,0,0,63,192,0,0,0,191,128,0,0,1,255,0,0,0,3,253,0,0,0,15,248,0,0,0,63,224,0,0,0,255,128,0,0,3,254,0,0,0,15,248,0,0,0,63,224,0,0,0,255,128,0,0,3,254,0,0,0,15,248,0,0,0,63,250,170,170,168,127,255,255,255,252,127,255,255,255,252,127,255,255,255,252, + // 0x0033 3 + 19,29,145,22,1,255,0,1,85,0,0,1,191,255,244,0,15,255,255,255,0,63,255,255,255,192,31,224,0,191,208,10,0,0,63,224,0,0,0,31,240,0,0,0,15,240,0,0,0,15,240,0,0,0,47,224,0,0,0,63,192,0,0,1,255,64,0,42,191,253,0,0,63,255,208,0,0,63,255,248,0,0,42,191,255,128,0,0,0,191,224,0,0,0,31,240,0,0,0,15,248,0,0,0,11,248,0,0,0,7,248,0,0,0,11,248,0,0,0,15,244,16,0,0,63,240,126,64,1,255,224,127,255,255,255,192,127,255,255,254,0,11,255,255,224,0,0,5,80,0,0, + // 0x0034 4 + 20,28,140,22,1,0,0,0,0,21,0,0,0,1,255,64,0,0,3,255,64,0,0,11,255,64,0,0,31,255,64,0,0,63,191,64,0,0,191,191,64,0,1,252,191,64,0,3,244,191,64,0,15,240,191,64,0,31,192,191,64,0,63,64,191,64,0,254,0,191,64,2,252,0,191,64,7,244,0,191,64,15,224,0,191,64,47,192,0,191,64,127,64,0,191,64,255,85,85,255,149,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64, + // 0x0035 5 + 18,28,140,22,2,255,15,255,255,255,0,31,255,255,255,0,31,255,255,255,0,31,229,85,85,0,31,208,0,0,0,47,192,0,0,0,47,192,0,0,0,47,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,235,249,0,0,63,255,255,240,0,63,255,255,253,0,31,234,175,255,64,0,0,1,255,192,0,0,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,224,0,0,0,31,224,0,0,0,47,208,0,0,0,63,192,64,0,0,255,192,254,64,27,255,0,255,255,255,253,0,255,255,255,244,0,31,255,255,64,0,0,21,64,0,0, + // 0x0036 6 + 18,29,145,22,2,255,0,0,5,85,0,0,2,255,255,0,0,47,255,255,0,0,255,255,255,0,3,255,128,0,0,11,252,0,0,0,15,240,0,0,0,47,208,0,0,0,63,192,0,0,0,127,128,0,0,0,191,64,0,0,0,255,6,255,224,0,255,47,255,253,0,255,191,255,255,64,255,249,1,255,192,255,208,0,63,208,255,128,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,191,0,0,15,240,127,128,0,15,240,63,192,0,31,224,47,224,0,63,208,15,253,1,255,192,7,255,255,255,0,1,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x0037 7 + 19,27,135,22,1,0,191,255,255,255,252,191,255,255,255,252,191,255,255,255,252,21,85,85,91,248,0,0,0,15,244,0,0,0,15,240,0,0,0,47,208,0,0,0,63,192,0,0,0,191,128,0,0,0,255,0,0,0,2,254,0,0,0,3,252,0,0,0,7,248,0,0,0,15,244,0,0,0,31,240,0,0,0,63,208,0,0,0,127,192,0,0,0,191,64,0,0,0,255,0,0,0,2,254,0,0,0,3,252,0,0,0,11,248,0,0,0,15,244,0,0,0,31,240,0,0,0,63,208,0,0,0,127,192,0,0,0,255,64,0,0, + // 0x0038 8 + 19,29,145,22,1,255,0,1,85,0,0,0,47,255,248,0,1,255,255,255,0,7,255,235,255,192,15,248,0,127,224,31,240,0,15,240,31,224,0,15,240,31,208,0,15,240,31,224,0,15,240,15,240,0,31,224,7,253,0,127,192,2,255,131,255,0,0,191,255,252,0,0,31,255,208,0,0,63,255,244,0,1,255,239,255,0,11,253,1,255,192,31,240,0,63,240,63,208,0,15,244,63,192,0,3,252,63,128,0,3,252,127,128,0,3,252,63,192,0,3,252,63,208,0,11,248,31,248,0,47,240,15,255,255,255,208,2,255,255,255,64,0,111,255,248,0,0,0,84,0,0, + // 0x0039 9 + 19,29,145,22,1,255,0,1,85,0,0,0,47,255,224,0,1,255,255,253,0,7,255,255,255,64,15,253,1,255,192,31,240,0,63,224,63,192,0,15,240,63,192,0,11,244,63,128,0,7,248,127,128,0,3,248,63,128,0,3,252,63,192,0,7,252,63,192,0,15,252,47,240,0,47,252,15,253,1,255,252,7,255,255,247,252,1,255,255,211,248,0,47,254,7,248,0,0,0,7,244,0,0,0,11,240,0,0,0,15,240,0,0,0,47,208,0,0,0,127,192,0,0,1,255,64,0,0,31,254,0,7,255,255,248,0,7,255,255,208,0,7,255,253,0,0,0,85,0,0,0, + // 0x003a : + 6,22,44,10,2,255,31,128,63,224,127,224,127,224,63,208,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,128,63,224,127,224,127,224,63,208,5,0, + // 0x003b ; + 7,26,52,10,1,251,7,224,15,244,31,248,31,248,15,240,1,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,80,15,244,15,240,31,224,47,208,63,192,63,128,63,0,126,0,189,0, + // 0x003c < + 18,19,95,22,2,4,0,0,0,0,176,0,0,0,11,240,0,0,0,191,240,0,0,11,255,144,0,0,191,248,0,0,11,255,128,0,0,191,248,0,0,11,255,128,0,0,191,244,0,0,0,255,128,0,0,0,255,244,0,0,0,47,255,128,0,0,1,255,249,0,0,0,31,255,208,0,0,0,191,254,0,0,0,11,255,224,0,0,0,127,240,0,0,0,6,240,0,0,0,0,32, + // 0x003d = + 18,11,55,22,2,8,170,170,170,170,144,255,255,255,255,224,255,255,255,255,224,85,85,85,85,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,224,255,255,255,255,224,255,255,255,255,224, + // 0x003e > + 18,19,95,22,2,4,208,0,0,0,0,253,0,0,0,0,255,208,0,0,0,127,253,0,0,0,7,255,208,0,0,0,127,253,0,0,0,2,255,208,0,0,0,47,253,0,0,0,2,255,208,0,0,0,63,240,0,0,1,255,240,0,0,47,255,64,0,7,255,244,0,0,191,254,0,0,27,255,224,0,0,255,253,0,0,0,255,144,0,0,0,248,0,0,0,0,64,0,0,0,0, + // 0x003f ? + 16,29,116,17,0,255,0,21,84,0,7,255,255,128,127,255,255,240,63,255,255,252,47,64,7,253,4,0,1,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,1,254,0,0,3,252,0,0,31,248,0,0,127,224,0,2,255,128,0,7,253,0,0,15,240,0,0,31,208,0,0,47,192,0,0,47,128,0,0,47,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,128,0,0,127,208,0,0,127,224,0,0,127,224,0,0,63,192,0,0,5,0,0, + // 0x0040 @ + 30,31,248,34,2,252,0,0,2,255,255,144,0,0,0,0,127,255,255,253,0,0,0,3,255,254,191,255,192,0,0,31,253,0,0,127,240,0,0,127,208,0,0,7,252,0,1,254,0,0,0,0,255,0,3,248,0,0,0,0,63,64,11,240,0,43,249,64,47,192,15,192,2,255,255,240,15,208,47,128,15,255,255,240,11,224,63,0,63,208,11,240,7,240,127,0,191,64,11,240,3,240,190,0,254,0,11,224,3,240,189,0,252,0,11,224,3,240,253,1,252,0,11,224,3,240,253,1,252,0,15,224,3,240,253,1,252,0,15,224,7,224,253,1,252,0,15,224,11,208,253,0,253,0,47,224,15,192,190,0,191,64,127,240,63,128,127,0,63,255,249,255,255,0,63,0,31,255,224,191,252,0,63,128,1,254,64,31,144,0,31,208,0,0,0,0,0,0,15,240,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,255,208,0,0,108,0,0,0,63,255,166,175,252,0,0,0,7,255,255,255,252,0,0,0,0,111,255,255,144,0,0,0,0,0,21,64,0,0,0, + // 0x0041 A + 25,28,196,25,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x0042 B + 20,27,135,25,3,0,127,255,255,228,0,127,255,255,255,128,127,255,255,255,224,127,213,86,255,244,127,128,0,31,252,127,128,0,11,252,127,128,0,3,252,127,128,0,3,252,127,128,0,7,252,127,128,0,15,244,127,128,0,127,240,127,255,255,255,128,127,255,255,248,0,127,255,255,255,64,127,234,170,255,240,127,128,0,31,252,127,128,0,3,253,127,128,0,2,254,127,128,0,1,255,127,128,0,1,255,127,128,0,2,255,127,128,0,3,254,127,128,0,15,252,127,213,86,255,248,127,255,255,255,240,127,255,255,255,64,127,255,255,228,0, + // 0x0043 C + 21,29,174,24,2,255,0,0,5,85,0,0,0,1,255,255,249,0,0,31,255,255,255,128,0,127,255,255,255,0,1,255,244,1,191,0,3,255,64,0,4,0,15,252,0,0,0,0,31,244,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,63,208,0,0,0,0,63,240,0,0,0,0,31,244,0,0,0,0,15,252,0,0,0,0,7,255,64,0,0,0,2,255,249,1,111,0,0,191,255,255,255,0,0,31,255,255,255,0,0,2,255,255,249,0,0,0,1,84,0,0, + // 0x0044 D + 23,27,162,28,3,0,127,255,255,228,0,0,127,255,255,255,64,0,127,255,255,255,240,0,127,213,86,255,252,0,127,128,0,31,255,0,127,128,0,2,255,128,127,128,0,0,191,192,127,128,0,0,63,224,127,128,0,0,47,240,127,128,0,0,15,240,127,128,0,0,15,244,127,128,0,0,15,244,127,128,0,0,15,248,127,128,0,0,11,248,127,128,0,0,15,244,127,128,0,0,15,244,127,128,0,0,15,244,127,128,0,0,31,240,127,128,0,0,47,240,127,128,0,0,63,208,127,128,0,0,255,192,127,128,0,3,255,64,127,128,0,47,254,0,127,213,107,255,248,0,127,255,255,255,208,0,127,255,255,254,0,0,127,255,255,144,0,0, + // 0x0045 E + 16,27,108,21,3,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x0046 F + 16,27,108,20,3,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0, + // 0x0047 G + 23,29,174,28,2,255,0,0,1,89,80,0,0,0,191,255,255,128,0,11,255,255,255,244,0,63,255,255,255,240,1,255,249,0,27,208,3,255,128,0,0,64,11,253,0,0,0,0,31,248,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,128,0,42,170,164,191,128,0,63,255,248,191,128,0,63,255,248,191,128,0,63,255,248,127,192,0,0,7,248,127,192,0,0,7,248,63,208,0,0,7,248,63,240,0,0,7,248,31,244,0,0,7,248,15,253,0,0,7,248,3,255,64,0,7,248,1,255,249,0,91,248,0,127,255,255,255,248,0,31,255,255,255,248,0,1,191,255,255,144,0,0,0,85,0,0, + // 0x0048 H + 22,27,162,28,3,0,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,255,255,255,255,240,127,255,255,255,255,240,127,255,255,255,255,240,127,234,170,170,175,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240, + // 0x0049 I + 11,27,81,13,1,0,191,255,252,191,255,252,47,255,228,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,47,255,244,191,255,252,191,255,252, + // 0x004a J + 11,35,105,11,253,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,244,0,15,244,0,31,240,64,127,240,255,255,208,255,255,64,255,252,0,21,64,0, + // 0x004b K + 21,27,162,24,3,0,127,128,0,2,255,0,127,128,0,7,253,0,127,128,0,31,244,0,127,128,0,63,224,0,127,128,0,255,128,0,127,128,3,255,0,0,127,128,11,252,0,0,127,128,47,240,0,0,127,128,127,192,0,0,127,129,255,64,0,0,127,131,253,0,0,0,127,143,248,0,0,0,127,255,252,0,0,0,127,255,254,0,0,0,127,255,255,64,0,0,127,240,255,192,0,0,127,192,63,224,0,0,127,128,31,244,0,0,127,128,15,252,0,0,127,128,3,255,0,0,127,128,1,255,64,0,127,128,0,191,192,0,127,128,0,63,240,0,127,128,0,15,248,0,127,128,0,11,253,0,127,128,0,3,255,0,127,128,0,0,255,128, + // 0x004c L + 17,27,135,20,3,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,234,170,170,0,127,255,255,255,64,127,255,255,255,64,127,255,255,255,64, + // 0x004d M + 29,27,216,35,3,0,127,248,0,0,0,15,255,64,127,252,0,0,0,15,255,64,127,253,0,0,0,47,255,64,127,255,0,0,0,63,255,64,127,191,0,0,0,127,191,64,127,127,64,0,0,191,191,64,127,63,192,0,0,253,191,64,127,47,192,0,1,252,191,64,127,79,224,0,3,248,191,64,127,79,240,0,3,244,191,64,127,71,244,0,7,240,191,64,127,67,248,0,15,224,191,64,127,66,252,0,15,208,191,64,127,65,253,0,47,192,191,64,127,64,254,0,63,128,191,64,127,64,191,0,127,0,191,64,127,64,127,64,191,0,191,64,127,64,63,192,253,0,191,64,127,64,47,193,252,0,191,64,127,64,15,211,248,0,191,64,127,64,15,243,244,0,191,64,127,64,11,255,240,0,191,64,127,64,3,255,224,0,191,64,127,64,3,255,192,0,191,64,127,64,1,255,192,0,191,64,127,64,0,255,128,0,191,64,127,64,0,255,0,0,191,64, + // 0x004e N + 23,27,162,29,3,0,127,240,0,0,3,252,127,248,0,0,3,252,127,252,0,0,3,252,127,255,0,0,3,252,127,255,64,0,3,252,127,191,192,0,3,252,127,63,224,0,3,252,127,31,244,0,3,252,127,11,252,0,3,252,127,3,254,0,3,252,127,65,255,0,3,252,127,64,255,192,3,252,127,64,63,208,3,252,127,64,47,240,3,252,127,64,15,248,3,252,127,64,7,253,3,252,127,64,2,255,3,252,127,64,0,255,131,252,127,64,0,127,195,252,127,64,0,63,243,252,127,64,0,15,246,252,127,64,0,11,255,252,127,64,0,3,255,252,127,64,0,1,255,252,127,64,0,0,191,252,127,64,0,0,63,252,127,64,0,0,31,252, + // 0x004f O + 26,29,203,30,2,255,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x0050 P + 19,27,135,23,3,0,127,255,255,144,0,127,255,255,253,0,127,255,255,255,64,127,213,91,255,192,127,128,0,127,224,127,128,0,47,240,127,128,0,15,244,127,128,0,15,244,127,128,0,15,244,127,128,0,15,244,127,128,0,31,240,127,128,0,63,224,127,128,1,255,192,127,255,255,255,128,127,255,255,253,0,127,255,255,224,0,127,234,169,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0, + // 0x0051 Q + 26,35,245,30,2,249,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,244,0,0,0,0,1,95,252,0,0,0,0,0,7,255,0,0,0,0,0,1,255,192,0,0,0,0,0,191,224,0,0,0,0,0,47,248,0,0,0,0,0,15,254,0,0,0,0,0,1,85,0, + // 0x0052 R + 21,27,162,24,3,0,127,255,255,144,0,0,127,255,255,253,0,0,127,255,255,255,128,0,127,213,91,255,208,0,127,128,0,127,240,0,127,128,0,31,240,0,127,128,0,15,244,0,127,128,0,15,244,0,127,128,0,15,244,0,127,128,0,15,240,0,127,128,0,47,240,0,127,128,0,127,208,0,127,213,91,255,128,0,127,255,255,254,0,0,127,255,255,240,0,0,127,255,255,208,0,0,127,128,31,240,0,0,127,128,11,248,0,0,127,128,3,253,0,0,127,128,2,255,0,0,127,128,0,255,128,0,127,128,0,127,192,0,127,128,0,47,240,0,127,128,0,15,244,0,127,128,0,11,252,0,127,128,0,3,254,0,127,128,0,1,255,64, + // 0x0053 S + 17,29,145,21,2,255,0,5,85,0,0,0,191,255,249,0,7,255,255,255,128,31,255,255,255,0,63,244,1,191,0,127,192,0,0,0,191,64,0,0,0,255,64,0,0,0,191,64,0,0,0,191,192,0,0,0,127,224,0,0,0,63,253,0,0,0,15,255,208,0,0,3,255,254,0,0,0,127,255,224,0,0,7,255,252,0,0,0,127,255,0,0,0,7,255,64,0,0,0,255,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,144,0,0,255,128,254,80,27,255,0,255,255,255,253,0,255,255,255,244,0,47,255,255,64,0,0,21,64,0,0, + // 0x0054 T + 21,27,162,21,0,0,191,255,255,255,255,192,191,255,255,255,255,192,191,255,255,255,255,192,21,85,191,213,85,64,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0, + // 0x0055 U + 22,28,168,28,3,255,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,224,0,0,27,255,254,64,0,0,0,21,64,0,0, + // 0x0056 V + 23,27,162,23,0,0,255,64,0,0,3,252,127,192,0,0,7,252,63,192,0,0,15,244,47,208,0,0,15,240,31,240,0,0,31,224,15,240,0,0,63,208,11,244,0,0,63,192,7,252,0,0,191,128,3,252,0,0,255,64,2,254,0,0,255,0,1,255,0,2,254,0,0,255,0,3,253,0,0,191,128,3,252,0,0,63,192,11,248,0,0,63,192,15,240,0,0,47,224,15,240,0,0,15,240,47,224,0,0,15,240,63,192,0,0,7,248,63,192,0,0,3,252,191,64,0,0,3,252,255,0,0,0,1,253,254,0,0,0,0,255,253,0,0,0,0,191,252,0,0,0,0,127,248,0,0,0,0,63,244,0,0,0,0,47,240,0,0, + // 0x0057 W + 36,27,243,36,0,0,191,128,0,1,255,0,0,3,253,127,192,0,2,255,64,0,3,252,63,192,0,3,255,128,0,7,248,63,208,0,7,255,192,0,11,244,31,224,0,11,255,192,0,15,240,15,240,0,15,239,208,0,15,240,15,240,0,15,223,240,0,31,224,11,244,0,31,203,240,0,47,208,7,248,0,47,199,244,0,63,192,3,252,0,63,131,248,0,63,192,3,252,0,127,67,252,0,127,128,2,253,0,191,2,252,0,191,64,1,254,0,255,0,254,0,255,0,0,255,0,254,0,255,0,255,0,0,255,1,253,0,191,1,254,0,0,191,66,252,0,127,66,253,0,0,127,131,248,0,63,131,252,0,0,63,195,244,0,63,195,252,0,0,63,199,240,0,47,199,248,0,0,47,219,240,0,15,219,240,0,0,31,223,224,0,15,235,240,0,0,15,239,208,0,11,239,224,0,0,15,255,192,0,7,255,208,0,0,11,255,192,0,3,255,192,0,0,7,255,64,0,3,255,192,0,0,3,255,0,0,2,255,128,0,0,2,255,0,0,0,255,64,0, + // 0x0058 X + 23,27,162,23,0,0,63,224,0,0,31,240,31,244,0,0,63,208,11,252,0,0,191,128,3,253,0,0,255,0,1,255,0,3,253,0,0,191,128,7,252,0,0,63,208,15,240,0,0,31,240,47,208,0,0,11,248,127,192,0,0,3,252,255,0,0,0,1,255,254,0,0,0,0,255,252,0,0,0,0,63,244,0,0,0,0,127,244,0,0,0,0,255,252,0,0,0,2,255,254,0,0,0,3,252,255,64,0,0,15,244,127,192,0,0,31,224,63,224,0,0,63,192,15,240,0,0,191,64,11,252,0,1,255,0,3,254,0,3,253,0,1,255,0,11,248,0,0,191,192,31,240,0,0,63,208,63,208,0,0,47,240,191,192,0,0,15,248, + // 0x0059 Y + 22,27,162,22,0,0,191,192,0,0,47,240,63,208,0,0,63,208,47,240,0,0,191,128,15,244,0,0,255,0,11,252,0,2,254,0,3,253,0,3,252,0,1,255,0,11,248,0,0,255,64,31,240,0,0,127,192,63,208,0,0,63,208,127,192,0,0,31,240,255,64,0,0,11,249,255,0,0,0,3,255,253,0,0,0,2,255,248,0,0,0,0,255,240,0,0,0,0,191,224,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x005a Z + 20,27,135,22,1,0,127,255,255,255,252,127,255,255,255,252,127,255,255,255,252,21,85,85,95,248,0,0,0,47,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,3,253,0,0,0,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,7,253,0,0,0,15,248,0,0,0,47,240,0,0,0,127,208,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,248,0,0,0,47,240,0,0,0,127,234,170,170,169,191,255,255,255,253,191,255,255,255,253,191,255,255,255,253, + // 0x005b [ + 9,33,99,13,3,250,255,255,128,255,255,128,255,255,128,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,254,0,0,255,255,128,255,255,128,255,255,128, + // 0x005c "\" + 14,27,108,15,0,0,127,64,0,0,63,128,0,0,47,192,0,0,31,208,0,0,15,240,0,0,11,240,0,0,3,248,0,0,3,252,0,0,1,253,0,0,0,254,0,0,0,191,0,0,0,127,64,0,0,63,192,0,0,47,192,0,0,15,224,0,0,15,240,0,0,7,244,0,0,3,248,0,0,2,252,0,0,1,253,0,0,0,255,0,0,0,191,0,0,0,63,128,0,0,63,192,0,0,31,208,0,0,15,224,0,0,11,240, + // 0x005d ] + 9,33,99,13,1,250,255,255,128,255,255,128,255,255,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,0,63,128,255,255,128,255,255,128,255,255,128, + // 0x005e ^ + 19,18,90,22,1,10,0,0,16,0,0,0,0,252,0,0,0,2,253,0,0,0,3,255,0,0,0,7,255,64,0,0,15,223,192,0,0,31,203,208,0,0,63,67,240,0,0,127,2,248,0,0,253,0,252,0,0,252,0,190,0,2,248,0,63,0,3,240,0,47,128,11,224,0,15,192,15,192,0,11,224,47,192,0,3,240,63,64,0,2,248,127,0,0,0,252, + // 0x005f _ + 17,3,15,16,0,250,170,170,170,170,64,255,255,255,255,128,255,255,255,255,128, + // 0x0060 ` + 9,6,18,12,1,23,127,224,0,31,240,0,7,252,0,1,254,0,0,127,64,0,31,192, + // 0x0061 a + 18,22,110,22,1,255,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x0062 b + 19,30,150,24,3,255,191,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,1,174,128,0,255,15,255,248,0,255,127,255,255,0,255,254,155,255,128,255,240,0,191,208,255,192,0,47,240,255,128,0,15,240,255,64,0,15,244,255,64,0,11,244,255,0,0,11,248,255,0,0,11,248,255,0,0,11,248,255,64,0,11,244,255,64,0,15,244,255,128,0,15,240,255,192,0,31,240,255,224,0,63,224,255,248,1,255,192,255,255,255,255,64,254,63,255,253,0,253,11,255,224,0,0,0,21,0,0, + // 0x0063 c + 15,22,88,19,2,255,0,6,254,144,0,191,255,252,3,255,255,252,15,255,171,248,47,244,0,16,63,208,0,0,127,192,0,0,191,128,0,0,255,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,0,191,128,0,0,127,192,0,0,63,240,0,0,31,253,0,124,11,255,255,252,2,255,255,252,0,47,255,244,0,0,84,0, + // 0x0064 d + 19,30,150,24,2,255,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,27,232,11,244,1,255,255,139,244,7,255,255,247,244,15,254,155,255,244,63,244,0,127,244,63,208,0,47,244,191,192,0,15,244,191,128,0,15,244,255,64,0,11,244,255,0,0,11,244,255,0,0,7,244,255,0,0,7,244,255,0,0,11,244,255,64,0,11,244,191,128,0,15,244,127,192,0,15,244,63,224,0,63,244,47,248,1,255,244,15,255,255,251,244,3,255,255,211,244,0,127,254,3,244,0,1,64,0,0, + // 0x0065 e + 18,22,110,22,2,255,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x0066 f + 15,29,116,14,0,0,0,1,255,248,0,15,255,252,0,63,255,248,0,127,228,96,0,191,128,0,0,255,64,0,0,255,0,0,0,255,0,0,1,255,149,64,47,255,255,192,127,255,255,192,42,255,170,128,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0, + // 0x0067 g + 19,31,155,24,2,246,0,27,232,1,80,1,255,255,131,244,7,255,255,243,244,15,255,171,255,244,47,244,0,191,244,63,208,0,47,244,127,192,0,15,244,191,128,0,15,244,255,64,0,11,244,255,0,0,11,244,255,0,0,7,244,255,0,0,7,244,255,0,0,7,244,255,64,0,11,244,191,128,0,15,244,127,192,0,15,244,63,224,0,47,244,47,248,0,191,244,15,255,255,251,244,3,255,255,219,244,0,191,254,11,244,0,1,80,11,244,0,0,0,11,244,0,0,0,15,240,0,0,0,31,240,16,0,0,63,224,47,148,2,255,192,47,255,255,255,64,47,255,255,253,0,2,191,255,144,0,0,0,0,0,0, + // 0x0068 h + 18,29,145,24,3,0,191,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,1,175,144,0,255,15,255,253,0,255,63,255,255,64,255,255,155,255,192,255,240,0,127,208,255,208,0,47,224,255,192,0,31,240,255,128,0,15,240,255,64,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240, + // 0x0069 i + 5,28,56,10,3,0,191,0,255,64,255,64,191,0,4,0,0,0,0,0,85,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, + // 0x006a j + 10,38,114,10,254,246,0,47,192,0,63,208,0,63,208,0,47,192,0,1,0,0,0,0,0,0,0,0,21,64,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,65,255,192,255,255,64,255,254,0,255,244,0,0,0,0, + // 0x006b k + 18,29,145,21,3,0,191,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,21,64,255,0,0,255,128,255,0,3,254,0,255,0,15,248,0,255,0,63,224,0,255,0,255,192,0,255,2,255,0,0,255,11,252,0,0,255,47,240,0,0,255,127,208,0,0,255,255,240,0,0,255,255,252,0,0,255,227,254,0,0,255,129,255,64,0,255,0,191,192,0,255,0,63,240,0,255,0,15,248,0,255,0,7,253,0,255,0,2,255,0,255,0,0,255,192,255,0,0,63,224, + // 0x006c l + 4,29,29,10,3,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x006d m + 30,21,168,36,3,0,84,1,190,128,0,111,224,0,254,31,255,248,7,255,254,0,255,127,255,254,47,255,255,128,255,254,155,255,191,166,255,208,255,240,0,255,252,0,63,224,255,192,0,127,240,0,31,240,255,192,0,63,224,0,15,240,255,64,0,63,208,0,15,240,255,64,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240,255,0,0,63,192,0,15,240, + // 0x006e n + 18,21,105,24,3,0,84,1,191,144,0,254,15,255,253,0,255,63,255,255,64,255,255,155,255,192,255,240,0,127,208,255,208,0,47,224,255,192,0,31,240,255,128,0,15,240,255,64,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240, + // 0x006f o + 19,22,110,23,2,255,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x0070 p + 19,31,155,24,3,246,84,1,191,128,0,254,15,255,248,0,255,63,255,255,0,255,254,155,255,192,255,240,0,191,208,255,192,0,47,240,255,128,0,15,240,255,64,0,15,244,255,64,0,11,244,255,0,0,11,248,255,0,0,11,248,255,0,0,11,248,255,64,0,11,244,255,64,0,15,244,255,128,0,15,240,255,192,0,47,240,255,224,0,63,224,255,248,1,255,192,255,255,255,255,64,255,63,255,253,0,255,7,255,224,0,255,0,21,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,0,0,0,0,0, + // 0x0071 q + 19,31,155,24,2,246,0,27,232,1,80,1,255,255,131,244,7,255,255,247,244,15,254,155,255,244,63,240,0,127,244,63,208,0,47,244,191,192,0,15,244,191,128,0,15,244,255,64,0,11,244,255,0,0,11,244,255,0,0,7,244,255,0,0,7,244,255,0,0,11,244,255,64,0,11,244,191,128,0,15,244,127,192,0,15,244,63,224,0,63,244,47,248,1,255,244,15,255,255,251,244,3,255,255,219,244,0,191,254,11,244,0,1,64,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,0,0, + // 0x0072 r + 13,21,84,16,3,0,84,0,191,64,253,11,255,64,254,47,255,64,255,127,255,0,255,253,0,0,255,240,0,0,255,192,0,0,255,128,0,0,255,64,0,0,255,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0, + // 0x0073 s + 15,22,88,18,2,255,0,111,233,0,11,255,255,240,63,255,255,240,191,229,111,224,255,0,0,64,255,0,0,0,255,0,0,0,255,208,0,0,127,253,0,0,31,255,224,0,2,255,254,0,0,47,255,208,0,1,255,240,0,0,47,248,0,0,11,248,0,0,3,248,0,0,7,248,244,0,31,244,255,251,255,240,255,255,255,192,111,255,253,0,0,85,0,0, + // 0x0074 t + 14,26,104,15,0,255,0,62,0,0,0,126,0,0,0,190,0,0,0,254,0,0,2,255,85,64,47,255,255,208,127,255,255,208,43,255,170,128,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,255,0,0,0,255,128,0,0,255,255,224,0,63,255,224,0,11,255,208,0,0,84,0, + // 0x0075 u + 18,22,110,24,3,255,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,11,240,0,5,64,0,0, + // 0x0076 v + 20,21,105,20,0,0,85,0,0,0,85,191,128,0,2,254,127,192,0,3,252,63,208,0,7,252,31,224,0,11,244,15,240,0,15,240,11,244,0,31,224,7,248,0,63,208,3,252,0,63,192,2,253,0,127,128,0,255,0,255,0,0,255,0,255,0,0,127,130,253,0,0,63,195,252,0,0,47,195,248,0,0,31,215,244,0,0,15,235,240,0,0,11,255,224,0,0,3,255,192,0,0,3,255,192,0,0,1,255,64,0, + // 0x0077 w + 30,21,168,31,0,0,106,64,0,26,144,0,6,160,127,192,0,63,240,0,15,240,63,192,0,127,240,0,31,224,47,208,0,255,244,0,47,208,31,224,0,255,248,0,63,192,15,240,1,253,252,0,63,192,15,240,2,248,253,0,127,128,11,244,3,244,254,0,191,64,7,248,3,240,191,0,255,0,3,252,11,240,127,0,254,0,3,252,15,224,63,65,253,0,2,253,15,208,63,130,252,0,1,254,31,192,47,195,252,0,0,255,47,192,15,211,248,0,0,191,63,64,15,231,244,0,0,127,127,0,11,235,240,0,0,63,191,0,7,255,240,0,0,63,254,0,3,255,208,0,0,47,253,0,3,255,192,0,0,31,252,0,2,255,192,0,0,15,248,0,0,255,128,0, + // 0x0078 x + 19,21,105,21,1,0,85,64,0,5,84,127,192,0,31,240,47,240,0,63,208,15,244,0,255,128,7,252,1,255,0,2,255,3,253,0,0,255,75,248,0,0,127,239,240,0,0,47,255,192,0,0,15,255,128,0,0,7,255,0,0,0,15,255,64,0,0,47,255,192,0,0,63,239,240,0,0,255,79,248,0,2,255,3,253,0,7,252,1,255,0,15,244,0,255,128,47,240,0,63,208,127,192,0,31,240,255,64,0,15,252, + // 0x0079 y + 20,31,155,20,0,246,85,0,0,0,85,191,128,0,2,254,63,192,0,3,253,63,208,0,7,252,31,240,0,11,248,15,240,0,15,240,11,248,0,31,240,3,252,0,47,208,3,253,0,63,192,1,254,0,127,128,0,255,0,255,64,0,191,64,255,0,0,63,129,254,0,0,63,195,252,0,0,31,211,252,0,0,15,231,244,0,0,11,251,240,0,0,3,255,224,0,0,3,255,192,0,0,1,255,192,0,0,0,255,64,0,0,0,255,0,0,0,1,254,0,0,0,2,253,0,0,0,3,252,0,0,0,15,244,0,0,16,127,240,0,0,127,255,192,0,0,127,255,64,0,0,127,248,0,0,0,0,0,0,0,0, + // 0x007a z + 16,21,84,18,1,0,21,85,85,84,63,255,255,253,63,255,255,253,42,170,171,252,0,0,11,248,0,0,31,240,0,0,63,192,0,0,255,64,0,2,254,0,0,7,252,0,0,15,244,0,0,47,224,0,0,127,192,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,208,0,0,191,255,255,254,191,255,255,254,191,255,255,254, + // 0x007b { + 13,33,132,15,1,250,0,0,191,64,0,11,255,64,0,47,255,64,0,63,244,0,0,127,192,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,191,64,0,0,255,0,0,27,254,0,0,255,244,0,0,255,128,0,0,255,248,0,0,7,254,0,0,0,255,0,0,0,191,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,192,0,0,63,245,0,0,47,255,64,0,11,255,64,0,0,111,64, + // 0x007c | + 3,38,38,21,9,247,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252, + // 0x007d } + 13,33,132,15,1,250,191,64,0,0,191,244,0,0,191,252,0,0,7,254,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,191,0,0,0,191,0,0,0,127,128,0,0,63,245,0,0,11,255,128,0,1,255,128,0,15,255,128,0,63,228,0,0,191,128,0,0,191,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,1,255,0,0,27,254,0,0,191,252,0,0,191,240,0,0,190,64,0,0, + // 0x007e ~ + 18,6,30,22,2,10,31,254,0,0,32,191,255,244,1,240,255,255,255,255,240,244,7,255,255,224,128,0,47,255,64,0,0,0,16,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Cyrillic_28.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Cyrillic_28.cpp new file mode 100644 index 0000000000..00448f3064 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Cyrillic_28.cpp @@ -0,0 +1,322 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Cyrillic 38pt, capital 'A' height: 28px, width: 100%, range: 0x0401-0x0491, glyphs: 74 +extern const uint8_t NotoSans_Medium_Cyrillic_28[10988] = { + 130,28,1,4,145,4,37,246, // unifont_t + // 0x0401 Ё + 16,35,140,21,3,0,1,244,3,208,3,252,15,240,3,252,15,240,2,244,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x0402 Ђ + 255, + // 0x0403 Ѓ + 255, + // 0x0404 Є + 22,29,174,25,2,255,0,0,1,105,64,0,0,1,191,255,254,64,0,15,255,255,255,208,0,127,255,255,255,192,1,255,244,0,111,128,3,255,64,0,1,0,15,252,0,0,0,0,31,244,0,0,0,0,63,224,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,234,170,170,144,0,191,255,255,255,208,0,191,255,255,255,208,0,191,234,170,170,144,0,191,128,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,63,208,0,0,0,0,63,224,0,0,0,0,31,244,0,0,0,0,15,252,0,0,0,0,7,255,64,0,0,0,2,255,249,1,111,128,0,191,255,255,255,128,0,31,255,255,255,128,0,1,255,255,254,0,0,0,1,85,0,0, + // 0x0405 Ѕ + 255, + // 0x0406 І + 11,27,81,13,1,0,191,255,252,191,255,252,47,255,228,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,47,255,244,191,255,252,191,255,252, + // 0x0407 Ї + 12,35,105,13,1,0,125,0,248,255,2,253,255,2,253,126,0,252,0,0,0,0,0,0,0,0,0,0,0,0,191,255,252,191,255,252,47,255,228,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,47,255,244,191,255,252,191,255,252, + // 0x0408 Ј + 255, + // 0x0409 Љ + 255, + // 0x040a Њ + 255, + // 0x040b Ћ + 255, + // 0x040c Ќ + 255, + // 0x040d Ѝ + 255, + // 0x040e Ў + 255, + // 0x040f Џ + 255, + // 0x0410 А + 25,28,196,25,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x0411 Б + 19,27,135,24,3,0,127,255,255,255,192,127,255,255,255,192,127,255,255,255,192,127,213,85,85,64,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,255,254,144,0,127,255,255,253,0,127,255,255,255,128,127,234,171,255,224,127,128,0,127,240,127,128,0,15,244,127,128,0,11,248,127,128,0,7,248,127,128,0,7,248,127,128,0,11,248,127,128,0,15,244,127,128,0,127,240,127,213,107,255,224,127,255,255,255,128,127,255,255,253,0,127,255,255,144,0, + // 0x0412 В + 20,27,135,25,3,0,127,255,255,228,0,127,255,255,255,128,127,255,255,255,224,127,213,86,255,244,127,128,0,31,252,127,128,0,11,252,127,128,0,3,252,127,128,0,3,252,127,128,0,7,252,127,128,0,15,244,127,128,0,127,240,127,255,255,255,128,127,255,255,248,0,127,255,255,255,64,127,234,170,255,240,127,128,0,31,252,127,128,0,3,253,127,128,0,2,254,127,128,0,1,255,127,128,0,1,255,127,128,0,2,255,127,128,0,3,254,127,128,0,15,252,127,213,86,255,248,127,255,255,255,240,127,255,255,255,64,127,255,255,228,0, + // 0x0413 Г + 17,27,135,20,3,0,127,255,255,255,64,127,255,255,255,64,127,255,255,255,64,127,213,85,85,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0, + // 0x0414 Д + 27,35,245,27,0,248,0,0,63,255,255,252,0,0,0,63,255,255,252,0,0,0,63,255,255,252,0,0,0,63,213,91,252,0,0,0,127,128,7,252,0,0,0,127,64,7,252,0,0,0,191,64,7,252,0,0,0,255,0,7,252,0,0,0,255,0,7,252,0,0,1,254,0,7,252,0,0,2,253,0,7,252,0,0,3,252,0,7,252,0,0,3,252,0,7,252,0,0,7,248,0,7,252,0,0,15,244,0,7,252,0,0,15,240,0,7,252,0,0,47,224,0,7,252,0,0,63,192,0,7,252,0,0,127,192,0,7,252,0,0,255,64,0,7,252,0,0,255,0,0,7,252,0,2,254,0,0,7,252,0,3,252,0,0,7,252,0,111,254,170,170,171,254,160,255,255,255,255,255,255,244,255,255,255,255,255,255,244,255,255,255,255,255,255,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,85,0,0,0,0,5,80, + // 0x0415 Е + 16,27,108,21,3,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x0416 Ж + 33,27,243,33,0,0,63,208,0,3,248,0,0,255,128,31,240,0,3,248,0,2,254,0,11,252,0,3,248,0,7,252,0,2,254,0,3,248,0,15,240,0,0,255,64,3,248,0,63,208,0,0,63,192,3,248,0,191,128,0,0,31,240,3,248,1,255,0,0,0,11,248,3,248,3,252,0,0,0,3,253,3,248,15,244,0,0,0,0,255,3,248,47,224,0,0,0,0,127,195,248,127,192,0,0,0,0,47,227,248,255,0,0,0,0,0,15,251,251,253,0,0,0,0,0,15,255,255,253,0,0,0,0,0,47,247,249,255,0,0,0,0,0,127,195,248,191,192,0,0,0,0,255,67,248,63,224,0,0,0,3,254,3,248,15,244,0,0,0,11,252,3,248,7,252,0,0,0,31,240,3,248,2,255,0,0,0,63,208,3,248,0,255,128,0,0,255,128,3,248,0,127,208,0,2,255,0,3,248,0,47,240,0,7,252,0,3,248,0,15,252,0,15,244,0,3,248,0,3,254,0,63,224,0,3,248,0,1,255,64,191,192,0,3,248,0,0,191,192, + // 0x0417 З + 20,29,145,23,1,255,0,1,85,64,0,0,191,255,254,0,11,255,255,255,192,63,255,255,255,240,47,228,0,47,252,14,0,0,11,252,0,0,0,3,253,0,0,0,2,253,0,0,0,3,253,0,0,0,3,252,0,0,0,15,248,0,0,0,191,224,0,170,255,255,64,0,255,255,228,0,0,255,255,254,0,0,170,175,255,224,0,0,0,111,248,0,0,0,7,253,0,0,0,2,255,0,0,0,0,255,0,0,0,0,255,0,0,0,1,255,0,0,0,2,255,80,0,0,11,253,126,64,0,127,252,127,255,255,255,240,127,255,255,255,128,11,255,255,248,0,0,5,84,0,0, + // 0x0418 И + 23,27,162,30,3,0,127,64,0,0,15,252,127,64,0,0,47,252,127,64,0,0,63,252,127,64,0,0,255,252,127,64,0,1,255,252,127,64,0,3,254,252,127,64,0,15,249,252,127,64,0,31,241,252,127,64,0,63,209,252,127,64,0,191,129,252,127,64,1,255,2,252,127,64,3,253,2,252,127,64,11,248,2,252,127,64,31,240,2,252,127,64,63,208,2,252,127,64,191,192,2,252,127,65,255,0,2,252,127,67,253,0,2,252,127,75,252,0,2,252,127,79,240,0,2,252,127,63,224,0,2,252,127,191,192,0,2,252,127,255,64,0,2,252,127,254,0,0,2,252,127,252,0,0,2,252,127,244,0,0,2,252,127,224,0,0,2,252, + // 0x0419 Й + 23,36,216,30,3,0,0,42,64,0,106,0,0,63,128,0,255,0,0,63,192,1,254,0,0,31,249,91,252,0,0,11,255,255,244,0,0,1,255,255,128,0,0,0,1,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,64,0,0,15,252,127,64,0,0,47,252,127,64,0,0,63,252,127,64,0,0,255,252,127,64,0,1,255,252,127,64,0,3,254,252,127,64,0,15,249,252,127,64,0,31,241,252,127,64,0,63,209,252,127,64,0,191,129,252,127,64,1,255,2,252,127,64,3,253,2,252,127,64,11,248,2,252,127,64,31,240,2,252,127,64,63,208,2,252,127,64,191,192,2,252,127,65,255,0,2,252,127,67,253,0,2,252,127,75,252,0,2,252,127,79,240,0,2,252,127,63,224,0,2,252,127,191,192,0,2,252,127,255,64,0,2,252,127,254,0,0,2,252,127,252,0,0,2,252,127,244,0,0,2,252,127,224,0,0,2,252, + // 0x041a К + 21,27,162,24,3,0,127,128,0,2,255,0,127,128,0,7,252,0,127,128,0,31,244,0,127,128,0,63,208,0,127,128,0,255,128,0,127,128,3,254,0,0,127,128,11,252,0,0,127,128,47,240,0,0,127,128,127,192,0,0,127,129,255,64,0,0,127,131,253,0,0,0,127,143,248,0,0,0,127,255,240,0,0,0,127,255,224,0,0,0,127,159,248,0,0,0,127,135,253,0,0,0,127,130,255,64,0,0,127,128,191,192,0,0,127,128,63,240,0,0,127,128,15,252,0,0,127,128,3,254,0,0,127,128,1,255,64,0,127,128,0,191,208,0,127,128,0,47,240,0,127,128,0,15,252,0,127,128,0,3,255,0,127,128,0,0,255,128, + // 0x041b Л + 24,28,168,27,0,255,0,0,255,255,255,254,0,0,255,255,255,254,0,0,255,255,255,254,0,1,254,85,86,254,0,1,253,0,1,254,0,2,253,0,1,254,0,2,252,0,1,254,0,3,252,0,1,254,0,3,252,0,1,254,0,3,252,0,1,254,0,3,248,0,1,254,0,7,248,0,1,254,0,11,244,0,1,254,0,11,240,0,1,254,0,15,240,0,1,254,0,15,240,0,1,254,0,15,240,0,1,254,0,31,224,0,1,254,0,47,208,0,1,254,0,63,208,0,1,254,0,63,192,0,1,254,0,127,192,0,1,254,0,255,64,0,1,254,2,255,0,0,1,254,255,254,0,0,1,254,255,252,0,0,1,254,255,224,0,0,1,254,21,0,0,0,0,0, + // 0x041c М + 29,27,216,35,3,0,127,248,0,0,0,15,255,64,127,252,0,0,0,15,255,64,127,253,0,0,0,47,255,64,127,255,0,0,0,63,255,64,127,191,0,0,0,127,191,64,127,127,64,0,0,191,191,64,127,63,192,0,0,253,191,64,127,47,192,0,1,252,191,64,127,79,224,0,3,248,191,64,127,79,240,0,3,244,191,64,127,71,244,0,7,240,191,64,127,67,248,0,15,224,191,64,127,66,252,0,15,208,191,64,127,65,253,0,47,192,191,64,127,64,254,0,63,128,191,64,127,64,191,0,127,0,191,64,127,64,127,64,191,0,191,64,127,64,63,192,253,0,191,64,127,64,47,193,252,0,191,64,127,64,15,211,248,0,191,64,127,64,15,243,244,0,191,64,127,64,11,255,240,0,191,64,127,64,3,255,224,0,191,64,127,64,3,255,192,0,191,64,127,64,1,255,192,0,191,64,127,64,0,255,128,0,191,64,127,64,0,255,0,0,191,64, + // 0x041d Н + 22,27,162,28,3,0,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,255,255,255,255,240,127,255,255,255,255,240,127,255,255,255,255,240,127,234,170,170,175,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240, + // 0x041e О + 26,29,203,30,2,255,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x041f П + 22,27,162,28,3,0,127,255,255,255,255,208,127,255,255,255,255,208,127,255,255,255,255,208,127,213,85,85,127,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208,127,128,0,0,63,208, + // 0x0420 Р + 19,27,135,23,3,0,127,255,255,144,0,127,255,255,253,0,127,255,255,255,64,127,213,91,255,192,127,128,0,127,224,127,128,0,47,240,127,128,0,15,244,127,128,0,15,244,127,128,0,15,244,127,128,0,15,244,127,128,0,31,240,127,128,0,63,224,127,128,1,255,192,127,255,255,255,128,127,255,255,253,0,127,255,255,224,0,127,234,169,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0, + // 0x0421 С + 21,29,174,24,2,255,0,0,5,85,0,0,0,1,255,255,249,0,0,31,255,255,255,128,0,127,255,255,255,0,1,255,244,1,191,0,3,255,64,0,4,0,15,252,0,0,0,0,31,244,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,63,208,0,0,0,0,63,240,0,0,0,0,31,244,0,0,0,0,15,252,0,0,0,0,7,255,64,0,0,0,2,255,249,1,111,0,0,191,255,255,255,0,0,31,255,255,255,0,0,2,255,255,249,0,0,0,1,84,0,0, + // 0x0422 Т + 21,27,162,21,0,0,191,255,255,255,255,192,191,255,255,255,255,192,191,255,255,255,255,192,21,85,191,213,85,64,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0, + // 0x0423 У + 24,28,168,24,0,255,127,192,0,0,1,255,63,224,0,0,3,253,31,240,0,0,7,252,11,248,0,0,11,248,3,252,0,0,15,240,2,254,0,0,47,224,0,255,0,0,63,192,0,191,128,0,127,192,0,63,192,0,255,64,0,47,224,1,255,0,0,15,240,2,253,0,0,11,248,3,252,0,0,3,252,11,248,0,0,2,253,15,240,0,0,0,255,31,224,0,0,0,191,127,192,0,0,0,63,255,192,0,0,0,47,255,64,0,0,0,15,255,0,0,0,0,11,253,0,0,0,0,15,252,0,0,0,0,31,244,0,0,0,0,127,240,0,0,30,86,255,208,0,0,31,255,255,64,0,0,31,255,253,0,0,0,31,255,224,0,0,0,0,84,0,0,0,0, + // 0x0424 Ф + 28,29,203,31,2,255,0,0,0,169,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,6,255,255,254,64,0,0,191,255,255,255,248,0,3,255,255,255,255,255,64,15,255,150,254,91,255,192,47,248,1,254,0,127,240,63,208,1,254,0,15,244,191,128,1,254,0,11,252,255,64,1,254,0,3,252,255,0,1,254,0,3,252,255,0,1,254,0,3,253,255,0,1,254,0,3,253,255,0,1,254,0,3,252,255,64,1,254,0,3,252,191,128,1,254,0,11,248,63,208,1,254,0,31,244,47,248,1,254,0,127,240,15,255,145,254,27,255,192,3,255,255,255,255,255,0,0,127,255,255,255,248,0,0,6,255,255,254,64,0,0,0,2,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,0,84,0,0,0, + // 0x0425 Х + 23,27,162,23,0,0,63,224,0,0,31,240,31,244,0,0,63,208,11,252,0,0,191,128,3,253,0,0,255,0,1,255,0,3,253,0,0,191,128,7,252,0,0,63,208,15,240,0,0,31,240,47,208,0,0,11,248,127,192,0,0,3,252,255,0,0,0,1,255,254,0,0,0,0,255,252,0,0,0,0,63,244,0,0,0,0,127,244,0,0,0,0,255,252,0,0,0,2,255,254,0,0,0,3,252,255,64,0,0,15,244,127,192,0,0,31,224,63,224,0,0,63,192,15,240,0,0,191,64,11,252,0,1,255,0,3,254,0,3,253,0,1,255,0,11,248,0,0,191,192,31,240,0,0,63,208,63,208,0,0,47,240,191,192,0,0,15,248, + // 0x0426 Ц + 25,35,245,29,3,248,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,128,0,0,63,208,0,127,234,170,170,191,229,64,127,255,255,255,255,255,192,127,255,255,255,255,255,192,127,255,255,255,255,255,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,21,64, + // 0x0427 Ч + 22,27,162,27,2,0,127,192,0,0,63,208,127,192,0,0,63,208,127,192,0,0,63,208,127,192,0,0,63,208,127,192,0,0,63,208,127,192,0,0,63,208,127,192,0,0,63,208,127,192,0,0,63,208,127,192,0,0,63,208,127,192,0,0,63,208,127,192,0,0,63,208,63,192,0,0,63,208,63,208,0,0,63,208,63,244,0,7,255,208,31,255,255,255,255,208,11,255,255,255,255,208,1,255,255,254,127,208,0,26,170,64,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208, + // 0x0428 Ш + 33,27,243,40,3,0,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,128,0,3,252,0,0,63,192,127,234,170,171,254,170,170,191,192,127,255,255,255,255,255,255,255,192,127,255,255,255,255,255,255,255,192,127,255,255,255,255,255,255,255,192, + // 0x0429 Щ + 37,35,94,40,3,248,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,128,0,7,252,0,0,63,192,0,127,234,170,171,254,170,170,191,213,0,127,255,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,0,21,0, + // 0x042a Ъ + 25,27,189,27,0,0,255,255,252,0,0,0,0,255,255,252,0,0,0,0,255,255,252,0,0,0,0,85,91,252,0,0,0,0,0,7,252,0,0,0,0,0,7,252,0,0,0,0,0,7,252,0,0,0,0,0,7,252,0,0,0,0,0,7,252,0,0,0,0,0,7,252,0,0,0,0,0,7,252,0,0,0,0,0,7,255,255,233,0,0,0,7,255,255,255,208,0,0,7,255,255,255,248,0,0,7,254,170,191,254,0,0,7,252,0,7,255,0,0,7,252,0,0,255,64,0,7,252,0,0,191,128,0,7,252,0,0,127,192,0,7,252,0,0,127,192,0,7,252,0,0,191,128,0,7,252,0,0,255,64,0,7,252,0,7,255,0,0,7,253,86,191,253,0,0,7,255,255,255,248,0,0,7,255,255,255,208,0,0,7,255,255,249,0,0, + // 0x042b Ы + 27,27,189,33,3,0,127,128,0,0,0,11,248,127,128,0,0,0,11,248,127,128,0,0,0,11,248,127,128,0,0,0,11,248,127,128,0,0,0,11,248,127,128,0,0,0,11,248,127,128,0,0,0,11,248,127,128,0,0,0,11,248,127,128,0,0,0,11,248,127,128,0,0,0,11,248,127,128,0,0,0,11,248,127,255,254,64,0,11,248,127,255,255,252,0,11,248,127,255,255,255,64,11,248,127,234,175,255,192,11,248,127,128,0,127,240,11,248,127,128,0,31,240,11,248,127,128,0,15,244,11,248,127,128,0,11,244,11,248,127,128,0,15,244,11,248,127,128,0,15,244,11,248,127,128,0,31,240,11,248,127,128,0,127,240,11,248,127,213,91,255,192,11,248,127,255,255,255,64,11,248,127,255,255,252,0,11,248,127,255,254,128,0,11,248, + // 0x042c Ь + 20,27,135,24,3,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,255,255,144,0,127,255,255,254,0,127,255,255,255,208,127,234,171,255,240,127,128,0,31,252,127,128,0,7,252,127,128,0,3,253,127,128,0,3,253,127,128,0,3,253,127,128,0,3,253,127,128,0,7,252,127,128,0,47,248,127,213,90,255,240,127,255,255,255,208,127,255,255,255,0,127,255,255,160,0, + // 0x042d Э + 21,29,174,24,1,255,0,21,84,0,0,0,27,255,255,224,0,0,191,255,255,254,0,0,63,255,255,255,192,0,63,144,6,255,240,0,4,0,0,47,252,0,0,0,0,11,253,0,0,0,0,3,255,0,0,0,0,0,255,0,0,0,0,0,255,128,0,0,0,0,191,128,0,0,0,0,127,192,0,255,255,255,255,192,0,255,255,255,255,192,0,255,255,255,255,192,0,170,170,170,255,192,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,255,64,0,0,0,1,255,0,0,0,0,3,254,0,0,0,0,11,252,0,0,0,0,63,248,0,126,80,27,255,240,0,127,255,255,255,192,0,127,255,255,253,0,0,47,255,255,208,0,0,0,21,80,0,0,0, + // 0x042e Ю + 35,29,5,40,3,255,0,0,0,0,0,90,80,0,0,127,128,0,0,47,255,255,64,0,127,128,0,1,255,255,255,240,0,127,128,0,11,255,255,255,252,0,127,128,0,31,254,64,31,255,0,127,128,0,63,240,0,1,255,128,127,128,0,191,192,0,0,127,192,127,128,0,255,128,0,0,63,224,127,128,1,255,0,0,0,31,240,127,128,2,254,0,0,0,15,244,127,128,3,253,0,0,0,15,248,127,128,3,252,0,0,0,11,248,127,255,255,252,0,0,0,11,252,127,255,255,252,0,0,0,7,252,127,255,255,252,0,0,0,7,252,127,234,171,252,0,0,0,7,252,127,128,3,252,0,0,0,11,248,127,128,3,253,0,0,0,11,248,127,128,3,253,0,0,0,15,244,127,128,2,254,0,0,0,15,240,127,128,1,255,0,0,0,31,240,127,128,0,255,128,0,0,63,224,127,128,0,191,208,0,0,191,192,127,128,0,63,244,0,2,255,128,127,128,0,31,255,64,111,255,0,127,128,0,7,255,255,255,252,0,127,128,0,0,255,255,255,224,0,127,128,0,0,27,255,254,0,0,0,0,0,0,0,21,64,0,0, + // 0x042f Я + 20,27,135,25,1,0,0,2,255,255,255,0,63,255,255,255,1,255,255,255,255,3,255,229,85,255,11,253,0,0,255,15,248,0,0,255,15,240,0,0,255,15,240,0,0,255,15,240,0,0,255,15,244,0,0,255,11,252,0,0,255,7,254,0,0,255,2,255,233,85,255,0,191,255,255,255,0,31,255,255,255,0,3,255,255,255,0,11,248,0,255,0,31,240,0,255,0,63,208,0,255,0,191,192,0,255,1,255,64,0,255,3,254,0,0,255,11,252,0,0,255,15,244,0,0,255,63,240,0,0,255,191,192,0,0,255,255,128,0,0,255, + // 0x0430 а + 18,22,110,22,1,255,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x0431 б + 19,30,150,23,2,255,0,0,0,22,244,0,0,111,255,248,0,11,255,255,248,0,127,255,255,228,1,255,254,80,0,7,255,64,0,0,15,248,0,0,0,31,240,0,0,0,63,192,0,0,0,63,192,0,0,0,127,129,191,228,0,191,75,255,255,0,191,127,255,255,192,255,255,65,191,224,255,244,0,31,240,255,208,0,15,248,255,64,0,7,252,255,0,0,7,252,255,64,0,3,252,255,64,0,3,252,191,64,0,3,252,127,128,0,7,252,63,192,0,7,248,63,208,0,15,244,31,240,0,47,240,15,253,0,191,208,3,255,255,255,128,0,255,255,254,0,0,31,255,224,0,0,0,84,0,0, + // 0x0432 в + 18,21,105,23,3,0,85,85,85,0,0,255,255,255,244,0,255,255,255,255,0,255,170,175,255,128,255,0,0,191,192,255,0,0,63,192,255,0,0,63,192,255,0,0,127,192,255,64,22,255,0,255,255,255,248,0,255,255,255,228,0,255,255,255,255,0,255,0,0,191,192,255,0,0,47,224,255,0,0,31,224,255,0,0,31,224,255,0,0,63,224,255,0,1,255,192,255,255,255,255,128,255,255,255,253,0,255,255,255,144,0, + // 0x0433 г + 13,21,84,17,3,0,85,85,85,64,255,255,255,192,255,255,255,192,255,255,255,192,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0, + // 0x0434 д + 23,29,174,23,0,248,0,1,85,85,84,0,0,2,255,255,253,0,0,2,255,255,253,0,0,3,254,171,253,0,0,3,252,2,253,0,0,3,248,2,253,0,0,3,248,2,253,0,0,7,244,2,253,0,0,11,240,2,253,0,0,15,240,2,253,0,0,15,224,2,253,0,0,47,208,2,253,0,0,63,192,2,253,0,0,127,128,2,253,0,0,255,64,2,253,0,1,255,0,2,253,0,3,253,0,2,253,0,11,252,0,2,253,0,127,255,255,255,255,244,127,255,255,255,255,244,127,255,255,255,255,244,127,64,0,0,7,244,127,64,0,0,7,244,127,64,0,0,7,244,127,64,0,0,7,244,127,64,0,0,7,244,127,64,0,0,7,244,127,64,0,0,7,244,0,0,0,0,0,0, + // 0x0435 е + 18,22,110,22,2,255,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x0436 ж + 30,21,168,30,0,0,21,64,0,21,64,0,21,64,31,240,0,63,192,0,255,64,11,248,0,63,192,3,253,0,3,253,0,63,192,11,248,0,0,255,64,63,192,31,240,0,0,63,192,63,192,63,192,0,0,31,240,63,192,255,0,0,0,7,248,63,195,253,0,0,0,2,253,63,203,244,0,0,0,0,255,127,223,224,0,0,0,0,127,255,255,192,0,0,0,0,255,127,223,240,0,0,0,3,253,63,203,248,0,0,0,11,248,63,195,253,0,0,0,31,240,63,192,255,64,0,0,127,192,63,192,63,192,0,0,255,0,63,192,31,240,0,3,253,0,63,192,11,252,0,15,248,0,63,192,2,254,0,47,224,0,63,192,0,255,128,191,192,0,63,192,0,63,208, + // 0x0437 з + 17,22,110,19,1,255,1,175,249,0,0,63,255,255,224,0,63,255,255,252,0,47,229,91,254,0,4,0,0,255,0,0,0,0,191,0,0,0,0,191,0,0,0,1,254,0,0,0,91,252,0,0,191,255,224,0,0,191,255,128,0,0,191,255,248,0,0,0,7,255,0,0,0,0,255,64,0,0,0,127,128,0,0,0,127,128,0,0,0,191,128,185,0,6,255,0,191,255,255,254,0,191,255,255,248,0,47,255,255,128,0,0,21,80,0,0, + // 0x0438 и + 19,21,105,25,3,0,85,0,0,5,84,255,0,0,31,252,255,0,0,63,252,255,0,0,191,252,255,0,1,255,252,255,0,3,254,252,255,0,11,246,252,255,0,31,226,252,255,0,63,194,252,255,0,191,66,252,255,0,255,2,252,255,3,252,2,252,255,11,248,2,252,255,15,240,2,252,255,63,208,2,252,255,127,128,2,252,255,255,0,2,252,255,253,0,2,252,255,248,0,2,252,255,240,0,2,252,255,208,0,2,252, + // 0x0439 й + 19,29,145,25,3,0,11,240,0,15,224,7,244,0,31,208,3,252,0,127,192,2,255,171,255,64,0,191,255,253,0,0,11,255,144,0,0,0,0,0,0,0,0,0,0,0,85,0,0,5,84,255,0,0,31,252,255,0,0,63,252,255,0,0,191,252,255,0,1,255,252,255,0,3,254,252,255,0,11,246,252,255,0,31,226,252,255,0,63,194,252,255,0,191,66,252,255,0,255,2,252,255,3,252,2,252,255,11,248,2,252,255,15,240,2,252,255,63,208,2,252,255,127,128,2,252,255,255,0,2,252,255,253,0,2,252,255,248,0,2,252,255,240,0,2,252,255,208,0,2,252, + // 0x043a к + 18,21,105,21,3,0,85,0,0,85,64,255,0,0,255,0,255,0,3,253,0,255,0,15,244,0,255,0,47,224,0,255,0,191,128,0,255,1,255,0,0,255,7,252,0,0,255,15,240,0,0,255,127,208,0,0,255,255,128,0,0,255,127,224,0,0,255,15,244,0,0,255,7,253,0,0,255,1,255,0,0,255,0,191,192,0,255,0,47,240,0,255,0,15,248,0,255,0,3,254,0,255,0,0,255,64,255,0,0,127,208, + // 0x043b л + 20,22,110,23,0,255,0,5,85,85,85,0,15,255,255,254,0,15,255,255,254,0,15,255,255,254,0,15,224,2,254,0,15,224,2,254,0,15,208,2,254,0,31,208,2,254,0,31,208,2,254,0,47,192,2,254,0,63,192,2,254,0,63,192,2,254,0,63,128,2,254,0,127,64,2,254,0,191,0,2,254,0,255,0,2,254,2,254,0,2,254,7,253,0,2,254,255,252,0,2,254,255,240,0,2,254,255,192,0,2,254,4,0,0,0,0, + // 0x043c м + 24,21,126,29,3,0,85,80,0,0,5,84,255,240,0,0,47,253,255,244,0,0,63,253,255,252,0,0,127,253,255,252,0,0,191,253,254,254,0,0,254,253,255,191,0,1,253,253,255,63,64,3,249,253,255,63,128,7,241,253,255,31,192,11,241,253,255,15,208,15,209,253,255,11,240,31,193,253,255,3,244,63,129,253,255,3,248,63,65,253,255,1,252,191,1,253,255,0,253,253,1,253,255,0,191,252,1,253,255,0,127,248,1,253,255,0,63,244,1,253,255,0,47,240,1,253,255,0,15,208,1,253, + // 0x043d н + 19,21,105,24,3,0,85,0,0,5,80,255,0,0,11,244,255,0,0,11,244,255,0,0,11,244,255,0,0,11,244,255,0,0,11,244,255,0,0,11,244,255,0,0,11,244,255,64,0,11,244,255,255,255,255,244,255,255,255,255,244,255,255,255,255,244,255,0,0,11,244,255,0,0,11,244,255,0,0,11,244,255,0,0,11,244,255,0,0,11,244,255,0,0,11,244,255,0,0,11,244,255,0,0,11,244,255,0,0,11,244, + // 0x043e о + 19,22,110,23,2,255,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x043f п + 18,21,105,24,3,0,85,85,85,85,80,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240, + // 0x0440 р + 19,31,155,24,3,246,84,1,191,128,0,254,15,255,248,0,255,63,255,255,0,255,254,155,255,192,255,240,0,191,208,255,192,0,47,240,255,128,0,15,240,255,64,0,15,244,255,64,0,11,244,255,0,0,11,248,255,0,0,11,248,255,0,0,11,248,255,64,0,11,244,255,64,0,15,244,255,128,0,15,240,255,192,0,47,240,255,224,0,63,224,255,248,1,255,192,255,255,255,255,64,255,63,255,253,0,255,7,255,224,0,255,0,21,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,0,0,0,0,0, + // 0x0441 с + 15,22,88,19,2,255,0,6,254,144,0,191,255,252,3,255,255,252,15,255,171,248,47,244,0,16,63,208,0,0,127,192,0,0,191,128,0,0,255,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,0,191,128,0,0,127,192,0,0,63,240,0,0,31,253,0,124,11,255,255,252,2,255,255,252,0,47,255,244,0,0,84,0, + // 0x0442 т + 17,21,105,19,1,0,85,85,85,85,64,255,255,255,255,192,255,255,255,255,192,255,255,255,255,192,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0,0,11,244,0,0, + // 0x0443 у + 20,31,155,20,0,246,85,0,0,0,85,191,128,0,2,254,63,192,0,3,253,63,208,0,7,252,31,240,0,11,248,15,240,0,15,240,11,248,0,31,240,3,252,0,47,208,3,253,0,63,192,1,254,0,127,128,0,255,0,255,64,0,191,64,255,0,0,63,129,254,0,0,63,195,252,0,0,31,211,252,0,0,15,231,244,0,0,11,251,240,0,0,3,255,224,0,0,3,255,192,0,0,1,255,192,0,0,0,255,64,0,0,0,255,0,0,0,1,254,0,0,0,2,253,0,0,0,3,252,0,0,0,15,244,0,0,16,127,240,0,0,127,255,192,0,0,127,255,64,0,0,127,248,0,0,0,0,0,0,0,0, + // 0x0444 ф + 25,39,17,29,2,246,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,111,249,64,0,0,0,47,255,255,248,0,0,1,255,255,255,255,128,0,7,255,239,251,255,224,0,15,253,11,240,47,248,0,63,240,11,240,7,253,0,127,192,11,240,2,255,0,191,128,11,240,0,255,0,255,64,11,240,0,255,64,255,0,11,240,0,191,64,255,0,11,240,0,191,128,255,0,11,240,0,191,128,255,64,11,240,0,191,64,255,64,11,240,0,255,0,127,192,11,240,1,255,0,63,208,11,240,3,254,0,31,244,11,240,15,252,0,11,255,75,240,191,244,0,2,255,255,255,255,208,0,0,127,255,255,255,0,0,0,7,255,255,228,0,0,0,0,11,244,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,0,0,0,0,0, + // 0x0445 х + 19,21,105,21,1,0,85,64,0,5,84,127,192,0,31,240,47,240,0,63,208,15,244,0,255,128,7,252,1,255,0,2,255,3,253,0,0,255,75,248,0,0,127,239,240,0,0,47,255,192,0,0,15,255,128,0,0,7,255,0,0,0,15,255,64,0,0,47,255,192,0,0,63,239,240,0,0,255,79,248,0,2,255,3,253,0,7,252,1,255,0,15,244,0,255,128,47,240,0,63,208,127,192,0,31,240,255,64,0,15,252, + // 0x0446 ц + 21,29,174,25,3,248,85,0,0,5,80,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,0,0,15,240,0,255,64,0,15,244,0,255,255,255,255,255,192,255,255,255,255,255,192,255,255,255,255,255,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,0,0, + // 0x0447 ч + 19,21,105,24,2,0,21,64,0,1,84,127,128,0,7,248,127,128,0,7,248,127,128,0,7,248,127,128,0,7,248,127,128,0,7,248,127,128,0,7,248,127,128,0,7,248,127,192,0,7,248,63,192,0,11,248,63,224,1,191,248,47,255,255,255,248,15,255,255,251,248,1,255,254,71,248,0,5,64,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248, + // 0x0448 ш + 29,21,168,35,3,0,85,0,0,85,0,0,21,64,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,64,0,191,128,0,127,128,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,128, + // 0x0449 щ + 32,29,232,35,3,248,85,0,0,85,0,0,21,64,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,127,128,255,64,0,191,128,0,127,192,255,255,255,255,255,255,255,254,255,255,255,255,255,255,255,254,255,255,255,255,255,255,255,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0, + // 0x044a ъ + 25,21,147,27,0,0,21,85,84,0,0,0,0,191,255,252,0,0,0,0,191,255,252,0,0,0,0,127,255,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,253,0,0,0,0,0,3,255,255,255,144,0,0,3,255,255,255,252,0,0,3,255,255,255,255,0,0,3,252,0,2,255,64,0,3,252,0,0,191,128,0,3,252,0,0,127,192,0,3,252,0,0,127,128,0,3,252,0,0,191,128,0,3,252,0,7,255,0,0,3,255,255,255,253,0,0,3,255,255,255,244,0,0,3,255,255,254,64,0, + // 0x044b ы + 24,21,126,30,3,0,85,0,0,0,0,85,255,0,0,0,0,255,255,0,0,0,0,255,255,0,0,0,0,255,255,0,0,0,0,255,255,0,0,0,0,255,255,0,0,0,0,255,255,0,0,0,0,255,255,64,0,0,0,255,255,255,255,208,0,255,255,255,255,252,0,255,255,255,255,255,0,255,255,0,1,255,128,255,255,0,0,127,192,255,255,0,0,63,192,255,255,0,0,63,192,255,255,0,0,191,128,255,255,0,6,255,64,255,255,255,255,254,0,255,255,255,255,248,0,255,255,255,254,128,0,255, + // 0x044c ь + 18,21,105,23,3,0,85,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,64,0,0,0,255,255,255,244,0,255,255,255,255,0,255,255,255,255,192,255,0,0,127,224,255,0,0,31,240,255,0,0,15,240,255,0,0,15,240,255,0,0,47,224,255,0,1,191,208,255,255,255,255,128,255,255,255,254,0,255,255,255,160,0, + // 0x044d э + 16,22,88,19,1,255,6,191,144,0,127,255,254,0,63,255,255,208,63,150,255,240,0,0,15,248,0,0,3,252,0,0,2,253,0,0,1,254,0,0,1,255,11,255,255,255,11,255,255,255,11,255,255,255,0,0,0,255,0,0,1,254,0,0,2,254,0,0,3,252,0,0,15,252,228,0,127,240,255,255,255,208,255,255,255,64,127,255,248,0,0,85,0,0, + // 0x044e ю + 27,22,154,32,3,255,85,0,0,2,191,144,0,255,0,0,63,255,252,0,255,0,1,255,255,255,64,255,0,3,255,170,255,192,255,0,11,252,0,63,240,255,0,15,240,0,15,244,255,0,47,224,0,11,248,255,0,63,208,0,3,252,255,64,63,192,0,3,252,255,255,255,192,0,3,252,255,255,255,192,0,3,252,255,255,255,192,0,3,252,255,0,63,192,0,3,252,255,0,63,192,0,3,252,255,0,47,208,0,7,252,255,0,31,240,0,11,248,255,0,15,244,0,31,240,255,0,7,254,0,127,224,255,0,2,255,255,255,192,255,0,0,191,255,254,0,255,0,0,31,255,244,0,0,0,0,0,85,0,0, + // 0x044f я + 18,21,105,22,1,0,0,5,85,85,64,1,255,255,255,208,11,255,255,255,208,47,254,170,191,208,63,224,0,47,208,63,192,0,47,208,127,128,0,47,208,127,128,0,47,208,63,192,0,47,208,47,248,0,47,208,15,255,255,255,208,3,255,255,255,208,0,127,255,255,208,0,127,128,47,208,0,255,0,47,208,3,253,0,47,208,11,252,0,47,208,15,240,0,47,208,63,224,0,47,208,191,192,0,47,208,255,64,0,47,208, + // 0x0450 ѐ + 255, + // 0x0451 ё + 18,29,145,22,2,255,0,248,2,224,0,2,252,7,244,0,2,253,7,244,0,0,248,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x0452 ђ + 255, + // 0x0453 ѓ + 255, + // 0x0454 є + 16,22,88,19,2,255,0,6,255,144,0,191,255,254,3,255,255,253,15,255,150,252,47,244,0,4,63,208,0,0,127,192,0,0,191,64,0,0,255,0,0,0,255,255,255,224,255,255,255,224,255,255,255,224,255,0,0,0,255,64,0,0,191,128,0,0,127,192,0,0,63,224,0,0,31,253,0,29,11,255,255,253,2,255,255,253,0,47,255,248,0,0,85,0, + // 0x0455 ѕ + 255, + // 0x0456 і + 5,28,56,10,3,0,191,0,255,64,255,64,191,0,4,0,0,0,0,0,85,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, + // 0x0457 ї + 12,28,84,10,255,0,46,0,124,127,128,254,127,128,255,63,0,189,0,0,0,0,0,0,0,0,0,0,85,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0, + // 0x0458 ј + 255, + // 0x0459 љ + 255, + // 0x045a њ + 255, + // 0x045b ћ + 255, + // 0x045c ќ + 255, + // 0x045d ѝ + 255, + // 0x045e ў + 255, + // 0x045f џ + 255, + // 0x0460 Ѡ + 255, + // 0x0461 ѡ + 255, + // 0x0462 Ѣ + 255, + // 0x0463 ѣ + 255, + // 0x0464 Ѥ + 255, + // 0x0465 ѥ + 255, + // 0x0466 Ѧ + 255, + // 0x0467 ѧ + 255, + // 0x0468 Ѩ + 255, + // 0x0469 ѩ + 255, + // 0x046a Ѫ + 255, + // 0x046b ѫ + 255, + // 0x046c Ѭ + 255, + // 0x046d ѭ + 255, + // 0x046e Ѯ + 255, + // 0x046f ѯ + 255, + // 0x0470 Ѱ + 255, + // 0x0471 ѱ + 255, + // 0x0472 Ѳ + 255, + // 0x0473 ѳ + 255, + // 0x0474 Ѵ + 255, + // 0x0475 ѵ + 255, + // 0x0476 Ѷ + 255, + // 0x0477 ѷ + 255, + // 0x0478 Ѹ + 255, + // 0x0479 ѹ + 255, + // 0x047a Ѻ + 255, + // 0x047b ѻ + 255, + // 0x047c Ѽ + 255, + // 0x047d ѽ + 255, + // 0x047e Ѿ + 255, + // 0x047f ѿ + 255, + // 0x0480 Ҁ + 255, + // 0x0481 ҁ + 255, + // 0x0482 ҂ + 255, + // 0x0483 ҃ + 255, + // 0x0484 ҄ + 255, + // 0x0485 ҅ + 255, + // 0x0486 ҆ + 255, + // 0x0487 ҇ + 255, + // 0x0488 ҈ + 255, + // 0x0489 ҉ + 255, + // 0x048a Ҋ + 255, + // 0x048b ҋ + 255, + // 0x048c Ҍ + 255, + // 0x048d ҍ + 255, + // 0x048e Ҏ + 255, + // 0x048f ҏ + 255, + // 0x0490 Ґ + 17,33,165,21,3,0,0,0,0,47,128,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,127,255,255,255,192,127,255,255,255,192,127,255,255,255,192,127,213,85,85,64,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0, + // 0x0491 ґ + 14,27,108,17,3,0,0,0,5,64,0,0,31,208,0,0,31,208,0,0,31,208,0,0,31,208,0,0,31,208,85,85,111,208,255,255,255,208,255,255,255,208,255,170,170,144,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Greek_28.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Greek_28.cpp new file mode 100644 index 0000000000..015ed9f794 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Greek_28.cpp @@ -0,0 +1,178 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Greek 38pt, capital 'A' height: 28px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 +extern const uint8_t NotoSans_Medium_Greek_28[10071] = { + 130,28,134,3,206,3,37,246, // unifont_t + // 0x0386 Ά + 28,28,196,28,0,0,5,84,0,5,64,0,0,15,248,0,63,240,0,0,31,240,0,127,244,0,0,47,208,0,191,248,0,0,63,128,0,255,252,0,0,127,0,1,253,253,0,0,189,0,3,252,255,0,0,0,0,3,248,191,0,0,0,0,11,244,127,128,0,0,0,15,240,63,192,0,0,0,31,224,47,208,0,0,0,47,208,31,224,0,0,0,63,192,15,240,0,0,0,127,128,11,244,0,0,0,255,0,3,252,0,0,0,255,0,3,252,0,0,2,254,85,86,254,0,0,3,255,255,255,255,0,0,7,255,255,255,255,64,0,11,255,255,255,255,128,0,15,240,0,0,127,192,0,31,224,0,0,63,208,0,63,208,0,0,31,240,0,63,192,0,0,15,240,0,191,128,0,0,11,248,0,255,64,0,0,7,252,1,255,0,0,0,3,253,2,254,0,0,0,2,254, + // 0x0387 · + 255, + // 0x0388 Έ + 26,28,196,28,0,0,5,84,0,0,0,0,0,15,248,7,255,255,255,240,31,240,7,255,255,255,240,47,208,7,255,255,255,240,63,128,7,253,85,85,80,127,0,7,248,0,0,0,189,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,255,255,255,192,0,0,7,255,255,255,192,0,0,7,255,255,255,192,0,0,7,254,170,170,128,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,248,0,0,0,0,0,7,254,170,170,144,0,0,7,255,255,255,240,0,0,7,255,255,255,240,0,0,7,255,255,255,240, + // 0x0389 Ή + 32,28,224,35,0,0,5,84,0,0,0,0,0,0,15,248,7,248,0,0,1,254,31,240,7,248,0,0,1,254,47,208,7,248,0,0,1,254,63,128,7,248,0,0,1,254,127,0,7,248,0,0,1,254,189,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,255,255,255,255,254,0,0,7,255,255,255,255,254,0,0,7,255,255,255,255,254,0,0,7,254,170,170,171,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254,0,0,7,248,0,0,1,254, + // 0x038a Ί + 20,28,140,21,0,0,5,84,0,0,0,15,248,63,255,254,31,240,63,255,254,47,208,27,255,248,63,128,0,191,128,127,0,0,191,64,189,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,64,0,0,0,191,128,0,0,31,255,249,0,0,63,255,254,0,0,63,255,254, + // 0x038b ΋ + 255, + // 0x038c Ό + 33,29,5,35,0,255,5,84,0,0,22,148,0,0,0,15,248,0,11,255,255,224,0,0,31,240,0,191,255,255,253,0,0,47,208,2,255,255,255,255,128,0,63,128,11,255,144,6,255,224,0,127,0,31,252,0,0,63,244,0,189,0,63,240,0,0,15,252,0,0,0,127,192,0,0,7,253,0,0,0,255,128,0,0,3,254,0,0,0,255,64,0,0,1,255,0,0,1,255,0,0,0,0,255,0,0,2,255,0,0,0,0,255,64,0,2,254,0,0,0,0,255,64,0,2,254,0,0,0,0,255,128,0,2,254,0,0,0,0,255,128,0,2,254,0,0,0,0,255,128,0,2,254,0,0,0,0,255,64,0,1,255,0,0,0,0,255,64,0,1,255,0,0,0,0,255,0,0,0,255,64,0,0,2,255,0,0,0,255,192,0,0,3,254,0,0,0,127,208,0,0,7,252,0,0,0,63,240,0,0,15,252,0,0,0,31,253,0,0,127,240,0,0,0,11,255,144,7,255,208,0,0,0,2,255,255,255,255,64,0,0,0,0,127,255,255,252,0,0,0,0,0,7,255,255,144,0,0,0,0,0,0,5,80,0,0,0, + // 0x038d ΍ + 255, + // 0x038e Ύ + 31,28,224,31,0,0,5,84,0,0,0,0,0,0,15,248,63,224,0,0,15,248,31,240,31,240,0,0,31,240,47,208,15,248,0,0,63,224,63,128,3,252,0,0,127,192,127,0,2,254,0,0,255,64,189,0,0,255,0,1,255,0,0,0,0,191,128,3,253,0,0,0,0,63,208,7,252,0,0,0,0,47,240,15,244,0,0,0,0,15,244,31,224,0,0,0,0,7,252,63,192,0,0,0,0,3,253,191,128,0,0,0,0,1,255,255,0,0,0,0,0,0,255,254,0,0,0,0,0,0,127,252,0,0,0,0,0,0,47,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0, + // 0x038f Ώ + 32,28,224,33,0,0,5,84,0,0,90,80,0,0,15,248,0,31,255,255,128,0,31,240,1,255,255,255,248,0,47,208,7,255,255,255,255,0,63,128,31,254,64,11,255,192,127,0,63,244,0,0,191,224,189,0,191,208,0,0,47,244,0,0,255,128,0,0,15,248,0,2,255,0,0,0,7,252,0,3,254,0,0,0,3,253,0,3,253,0,0,0,3,254,0,3,252,0,0,0,2,254,0,7,252,0,0,0,2,255,0,7,252,0,0,0,1,255,0,3,252,0,0,0,1,254,0,3,252,0,0,0,2,254,0,3,253,0,0,0,2,253,0,2,254,0,0,0,3,252,0,1,255,0,0,0,7,252,0,0,255,0,0,0,11,244,0,0,127,192,0,0,15,240,0,0,47,224,0,0,63,192,0,0,15,244,0,0,255,64,0,0,2,254,0,3,253,0,0,6,170,255,128,31,250,170,0,11,255,255,192,31,255,255,0,11,255,255,192,31,255,255,0,11,255,255,192,31,255,255, + // 0x0390 ΐ + 255, + // 0x0391 Α + 25,28,196,25,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x0392 Β + 20,27,135,25,3,0,127,255,255,228,0,127,255,255,255,128,127,255,255,255,224,127,213,86,255,244,127,128,0,31,252,127,128,0,11,252,127,128,0,3,252,127,128,0,3,252,127,128,0,7,252,127,128,0,15,244,127,128,0,127,240,127,255,255,255,128,127,255,255,248,0,127,255,255,255,64,127,234,170,255,240,127,128,0,31,252,127,128,0,3,253,127,128,0,2,254,127,128,0,1,255,127,128,0,1,255,127,128,0,2,255,127,128,0,3,254,127,128,0,15,252,127,213,86,255,248,127,255,255,255,240,127,255,255,255,64,127,255,255,228,0, + // 0x0393 Γ + 15,27,108,19,3,0,127,255,255,252,127,255,255,252,127,255,255,252,127,213,85,84,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0, + // 0x0394 Δ + 25,28,196,25,0,0,0,0,1,80,0,0,0,0,0,15,248,0,0,0,0,0,47,252,0,0,0,0,0,63,254,0,0,0,0,0,127,255,0,0,0,0,0,191,127,64,0,0,0,0,254,63,128,0,0,0,1,253,47,192,0,0,0,3,252,31,208,0,0,0,3,248,15,240,0,0,0,11,244,11,244,0,0,0,15,240,7,248,0,0,0,31,224,3,252,0,0,0,63,192,2,253,0,0,0,63,192,0,255,0,0,0,191,64,0,255,0,0,0,255,0,0,127,128,0,1,254,0,0,63,192,0,3,253,0,0,47,208,0,3,252,0,0,31,240,0,11,248,0,0,15,240,0,15,240,0,0,11,248,0,31,240,0,0,3,252,0,47,208,0,0,3,253,0,63,234,170,170,171,254,0,191,255,255,255,255,255,0,191,255,255,255,255,255,64,191,255,255,255,255,255,64, + // 0x0395 Ε + 16,27,108,21,3,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x0396 Ζ + 20,27,135,22,1,0,127,255,255,255,252,127,255,255,255,252,127,255,255,255,252,21,85,85,95,248,0,0,0,47,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,3,253,0,0,0,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,7,253,0,0,0,15,248,0,0,0,47,240,0,0,0,127,208,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,248,0,0,0,47,240,0,0,0,127,234,170,170,169,191,255,255,255,253,191,255,255,255,253,191,255,255,255,253, + // 0x0397 Η + 22,27,162,28,3,0,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,255,255,255,255,240,127,255,255,255,255,240,127,255,255,255,255,240,127,234,170,170,175,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240, + // 0x0398 Θ + 26,29,203,30,2,255,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,129,170,170,160,63,208,191,130,255,255,244,63,224,191,130,255,255,244,63,224,191,130,255,255,244,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x0399 Ι + 11,27,81,13,1,0,191,255,252,191,255,252,47,255,228,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,47,255,244,191,255,252,191,255,252, + // 0x039a Κ + 21,27,162,24,3,0,127,128,0,2,255,0,127,128,0,7,253,0,127,128,0,31,244,0,127,128,0,63,224,0,127,128,0,255,128,0,127,128,3,255,0,0,127,128,11,252,0,0,127,128,47,240,0,0,127,128,127,192,0,0,127,129,255,64,0,0,127,131,253,0,0,0,127,143,248,0,0,0,127,255,252,0,0,0,127,255,254,0,0,0,127,255,255,64,0,0,127,240,255,192,0,0,127,192,63,224,0,0,127,128,31,244,0,0,127,128,15,252,0,0,127,128,3,255,0,0,127,128,1,255,64,0,127,128,0,191,192,0,127,128,0,63,240,0,127,128,0,15,248,0,127,128,0,11,253,0,127,128,0,3,255,0,127,128,0,0,255,128, + // 0x039b Λ + 24,28,168,24,0,0,0,0,5,80,0,0,0,0,31,244,0,0,0,0,63,248,0,0,0,0,63,252,0,0,0,0,191,253,0,0,0,0,254,254,0,0,0,1,253,191,0,0,0,2,252,127,64,0,0,3,252,63,192,0,0,7,244,47,192,0,0,11,240,31,224,0,0,15,240,15,240,0,0,31,208,11,240,0,0,63,192,7,248,0,0,63,192,3,252,0,0,191,64,2,253,0,0,255,0,1,254,0,0,255,0,0,255,0,2,253,0,0,191,64,3,252,0,0,127,128,7,252,0,0,63,192,11,244,0,0,47,208,15,240,0,0,31,240,31,240,0,0,15,240,47,208,0,0,11,248,63,192,0,0,7,252,127,192,0,0,3,252,255,64,0,0,2,254, + // 0x039c Μ + 29,27,216,35,3,0,127,248,0,0,0,15,255,64,127,252,0,0,0,15,255,64,127,253,0,0,0,47,255,64,127,255,0,0,0,63,255,64,127,191,0,0,0,127,191,64,127,127,64,0,0,191,191,64,127,63,192,0,0,253,191,64,127,47,192,0,1,252,191,64,127,79,224,0,3,248,191,64,127,79,240,0,3,244,191,64,127,71,244,0,7,240,191,64,127,67,248,0,15,224,191,64,127,66,252,0,15,208,191,64,127,65,253,0,47,192,191,64,127,64,254,0,63,128,191,64,127,64,191,0,127,0,191,64,127,64,127,64,191,0,191,64,127,64,63,192,253,0,191,64,127,64,47,193,252,0,191,64,127,64,15,211,248,0,191,64,127,64,15,243,244,0,191,64,127,64,11,255,240,0,191,64,127,64,3,255,224,0,191,64,127,64,3,255,192,0,191,64,127,64,1,255,192,0,191,64,127,64,0,255,128,0,191,64,127,64,0,255,0,0,191,64, + // 0x039d Ν + 23,27,162,29,3,0,127,240,0,0,3,252,127,248,0,0,3,252,127,252,0,0,3,252,127,255,0,0,3,252,127,255,64,0,3,252,127,191,192,0,3,252,127,63,224,0,3,252,127,31,244,0,3,252,127,11,252,0,3,252,127,3,254,0,3,252,127,65,255,0,3,252,127,64,255,192,3,252,127,64,63,208,3,252,127,64,47,240,3,252,127,64,15,248,3,252,127,64,7,253,3,252,127,64,2,255,3,252,127,64,0,255,131,252,127,64,0,127,195,252,127,64,0,63,243,252,127,64,0,15,246,252,127,64,0,11,255,252,127,64,0,3,255,252,127,64,0,1,255,252,127,64,0,0,191,252,127,64,0,0,63,252,127,64,0,0,31,252, + // 0x039e Ξ + 20,27,135,24,2,0,63,255,255,255,248,63,255,255,255,248,63,255,255,255,248,21,85,85,85,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,255,255,255,192,7,255,255,255,192,7,255,255,255,192,6,170,170,170,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,170,170,170,169,191,255,255,255,253,191,255,255,255,253,191,255,255,255,253, + // 0x039f Ο + 26,29,203,30,2,255,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x03a0 Π + 22,27,162,28,3,0,127,255,255,255,255,208,127,255,255,255,255,208,127,255,255,255,255,208,127,213,85,85,127,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208,127,128,0,0,47,208, + // 0x03a1 Ρ + 19,27,135,23,3,0,127,255,255,144,0,127,255,255,253,0,127,255,255,255,64,127,213,91,255,192,127,128,0,127,224,127,128,0,47,240,127,128,0,15,244,127,128,0,15,244,127,128,0,15,244,127,128,0,15,244,127,128,0,31,240,127,128,0,63,224,127,128,1,255,192,127,255,255,255,128,127,255,255,253,0,127,255,255,224,0,127,234,169,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0, + // 0x03a2 ΢ + 255, + // 0x03a3 Σ + 20,27,135,22,1,0,127,255,255,255,252,127,255,255,255,252,127,255,255,255,252,63,245,85,85,84,15,248,0,0,0,7,254,0,0,0,1,255,64,0,0,0,191,208,0,0,0,47,240,0,0,0,15,252,0,0,0,3,255,0,0,0,0,255,128,0,0,0,127,192,0,0,0,127,192,0,0,0,255,0,0,0,3,253,0,0,0,15,248,0,0,0,47,224,0,0,0,127,192,0,0,1,255,0,0,0,3,253,0,0,0,15,244,0,0,0,47,224,0,0,0,191,234,170,170,169,191,255,255,255,253,191,255,255,255,253,191,255,255,255,253, + // 0x03a4 Τ + 21,27,162,21,0,0,191,255,255,255,255,192,191,255,255,255,255,192,191,255,255,255,255,192,21,85,191,213,85,64,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0, + // 0x03a5 Υ + 22,27,162,22,0,0,191,192,0,0,47,240,63,208,0,0,63,208,47,240,0,0,191,128,15,244,0,0,255,0,11,252,0,2,254,0,3,253,0,3,252,0,1,255,0,11,248,0,0,255,64,31,240,0,0,127,192,63,208,0,0,63,208,127,192,0,0,31,240,255,64,0,0,11,249,255,0,0,0,3,255,253,0,0,0,2,255,248,0,0,0,0,255,240,0,0,0,0,191,224,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x03a6 Φ + 29,29,232,33,2,255,0,0,0,21,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,21,255,149,0,0,0,0,11,255,255,255,248,0,0,0,191,255,255,255,255,128,0,3,255,255,255,255,255,240,0,15,255,64,191,64,127,252,0,63,244,0,191,64,7,254,0,63,192,0,191,64,1,255,0,191,128,0,191,64,0,255,64,255,64,0,191,64,0,191,128,255,0,0,191,64,0,127,128,255,0,0,191,64,0,63,192,255,0,0,191,64,0,127,192,255,0,0,191,64,0,127,128,255,64,0,191,64,0,191,64,191,128,0,191,64,0,255,0,63,208,0,191,64,2,255,0,47,244,0,191,64,11,253,0,15,254,64,191,64,127,248,0,3,255,255,255,255,255,224,0,0,191,255,255,255,255,64,0,0,11,255,255,255,248,0,0,0,0,22,255,165,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x03a7 Χ + 23,27,162,23,0,0,63,224,0,0,31,240,31,244,0,0,63,208,11,252,0,0,191,128,3,253,0,0,255,0,1,255,0,3,253,0,0,191,128,7,252,0,0,63,208,15,240,0,0,31,240,47,208,0,0,11,248,127,192,0,0,3,252,255,0,0,0,1,255,254,0,0,0,0,255,252,0,0,0,0,63,244,0,0,0,0,127,244,0,0,0,0,255,252,0,0,0,2,255,254,0,0,0,3,252,255,64,0,0,15,244,127,192,0,0,31,224,63,224,0,0,63,192,15,240,0,0,191,64,11,252,0,1,255,0,3,254,0,3,253,0,1,255,0,11,248,0,0,191,192,31,240,0,0,63,208,63,208,0,0,47,240,191,192,0,0,15,248, + // 0x03a8 Ψ + 26,27,189,32,3,0,191,64,3,252,0,47,208,191,64,3,252,0,47,208,191,64,3,252,0,47,208,191,64,3,252,0,47,208,191,64,3,252,0,47,208,191,64,3,252,0,47,208,191,64,3,252,0,47,208,191,64,3,252,0,47,208,191,64,3,252,0,47,208,191,64,3,252,0,47,208,191,64,3,252,0,47,208,127,128,3,252,0,63,192,63,192,3,252,0,63,192,63,208,3,252,0,191,128,47,240,3,252,0,255,64,15,253,3,252,7,255,0,7,255,235,254,191,252,0,1,255,255,255,255,240,0,0,47,255,255,255,128,0,0,1,191,255,228,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0, + // 0x03a9 Ω + 26,28,196,28,1,0,0,0,5,165,0,0,0,0,2,255,255,244,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,3,255,228,1,191,248,0,11,255,0,0,31,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,127,192,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,192,63,192,0,0,0,127,192,47,208,0,0,0,191,64,31,240,0,0,0,255,0,11,244,0,0,2,253,0,3,252,0,0,7,252,0,0,255,0,0,31,240,0,0,127,192,0,127,192,0,106,175,244,2,255,170,144,255,255,248,3,255,255,224,255,255,248,3,255,255,224,255,255,248,3,255,255,224, + // 0x03aa Ϊ + 255, + // 0x03ab Ϋ + 255, + // 0x03ac ά + 21,31,186,24,2,255,0,0,5,84,0,0,0,0,31,244,0,0,0,0,47,224,0,0,0,0,63,192,0,0,0,0,63,64,0,0,0,0,191,0,0,0,0,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,232,1,80,0,1,255,255,131,244,0,7,255,255,247,244,0,15,254,155,255,244,0,63,240,0,127,244,0,63,208,0,47,244,0,191,192,0,15,244,0,191,64,0,15,244,0,255,64,0,11,244,0,255,0,0,11,244,0,255,0,0,7,244,0,255,0,0,7,244,0,255,0,0,11,244,0,255,64,0,11,244,0,191,128,0,15,244,0,127,192,0,15,244,0,63,224,0,63,244,0,47,248,1,255,252,0,15,255,255,247,255,192,3,255,255,210,255,192,0,191,254,0,255,192,0,1,64,0,5,0, + // 0x03ad έ + 16,31,124,18,1,255,0,0,5,84,0,0,31,240,0,0,47,224,0,0,63,192,0,0,127,64,0,0,190,0,0,0,252,0,0,0,0,0,0,0,0,0,0,27,254,144,1,255,255,254,11,255,255,254,15,254,86,253,31,240,0,8,47,208,0,0,47,208,0,0,31,224,0,0,11,253,0,0,2,255,255,0,0,127,255,0,7,255,255,0,47,244,0,0,63,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,63,244,0,30,31,255,255,254,7,255,255,254,0,191,255,248,0,1,85,0, + // 0x03ae ή + 18,40,200,24,3,246,0,1,85,0,0,0,3,255,0,0,0,3,252,0,0,0,7,248,0,0,0,11,240,0,0,0,15,208,0,0,0,15,128,0,0,0,0,0,0,0,0,0,0,0,0,84,1,191,144,0,254,31,255,252,0,255,127,255,255,0,255,254,155,255,128,255,240,0,191,192,255,208,0,63,208,255,192,0,47,208,255,128,0,47,224,255,64,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,0,0, + // 0x03af ί + 10,31,93,13,3,255,1,85,0,3,253,0,7,252,0,15,240,0,15,224,0,31,192,0,47,64,0,0,0,0,0,0,0,85,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,64,0,191,208,0,63,255,208,47,255,208,7,255,208,0,21,0, + // 0x03b0 ΰ + 255, + // 0x03b1 α + 21,22,132,24,2,255,0,27,232,1,80,0,1,255,255,131,244,0,7,255,255,247,244,0,15,254,155,255,244,0,63,240,0,127,244,0,63,208,0,47,244,0,191,192,0,15,244,0,191,64,0,15,244,0,255,64,0,11,244,0,255,0,0,11,244,0,255,0,0,7,244,0,255,0,0,7,244,0,255,0,0,11,244,0,255,64,0,11,244,0,191,128,0,15,244,0,127,192,0,15,244,0,63,224,0,63,244,0,47,248,1,255,252,0,15,255,255,247,255,192,3,255,255,210,255,192,0,191,254,0,255,192,0,1,64,0,5,0, + // 0x03b2 β + 19,39,195,24,3,246,0,31,255,128,0,2,255,255,248,0,11,255,255,254,0,47,253,23,255,64,63,224,0,255,192,127,192,0,63,192,191,64,0,63,192,255,64,0,63,192,255,0,0,63,192,255,0,0,63,192,255,0,0,191,64,255,0,2,254,0,255,6,175,248,0,255,7,255,128,0,255,7,255,248,0,255,1,91,255,64,255,0,0,127,192,255,0,0,47,240,255,0,0,15,240,255,0,0,11,244,255,0,0,11,244,255,0,0,11,248,255,0,0,15,244,255,0,0,15,244,255,64,0,47,240,255,228,1,255,208,255,255,255,255,128,255,255,255,254,0,255,111,255,224,0,255,0,84,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,0,0,0,0,0, + // 0x03b3 γ + 19,29,145,20,0,248,85,0,0,1,84,191,64,0,3,252,127,192,0,3,252,63,192,0,3,252,47,208,0,3,252,15,240,0,7,248,15,240,0,7,248,11,244,0,11,244,3,252,0,15,240,3,252,0,15,240,1,253,0,31,224,0,255,0,47,208,0,191,0,63,192,0,127,64,127,64,0,63,192,255,0,0,47,194,253,0,0,31,215,252,0,0,15,255,240,0,0,11,255,208,0,0,3,255,128,0,0,3,254,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0,0,2,253,0,0, + // 0x03b4 δ + 20,30,150,23,1,255,0,1,191,249,0,0,15,255,255,208,0,63,255,255,248,0,191,208,31,240,0,255,0,1,224,0,254,0,0,0,0,255,0,0,0,0,255,64,0,0,0,191,224,0,0,0,47,253,0,0,0,11,255,192,0,0,7,255,248,0,0,127,255,255,0,1,255,129,255,192,7,253,0,63,240,15,244,0,15,248,47,224,0,7,252,63,192,0,3,253,63,192,0,2,254,127,128,0,1,254,127,128,0,1,254,127,192,0,2,254,63,192,0,3,253,63,224,0,3,252,47,244,0,15,248,15,254,0,127,240,3,255,255,255,208,0,255,255,255,64,0,31,255,248,0,0,0,84,0,0, + // 0x03b5 ε + 16,22,88,18,1,255,0,27,254,144,1,255,255,254,11,255,255,254,15,254,86,253,31,240,0,8,47,208,0,0,47,208,0,0,31,224,0,0,11,253,0,0,2,255,255,0,0,127,255,0,7,255,255,0,47,244,0,0,63,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,63,244,0,30,31,255,255,254,7,255,255,254,0,191,255,248,0,1,85,0, + // 0x03b6 ζ + 16,37,148,18,2,248,63,255,255,254,63,255,255,254,63,255,255,254,0,0,7,252,0,0,15,240,0,0,63,208,0,0,191,128,0,1,255,0,0,3,252,0,0,15,244,0,0,47,224,0,0,127,192,0,0,255,0,0,3,253,0,0,11,248,0,0,15,240,0,0,47,224,0,0,63,192,0,0,127,128,0,0,255,64,0,0,255,0,0,0,255,0,0,0,255,64,0,0,255,192,0,0,127,240,0,0,63,254,64,0,15,255,254,0,2,255,255,240,0,47,255,252,0,0,111,253,0,0,3,254,0,0,2,254,0,0,1,253,0,0,2,252,0,0,3,252,0,0,11,244,0,0,10,160, + // 0x03b7 η + 18,31,155,24,3,246,84,1,191,144,0,254,31,255,252,0,255,127,255,255,0,255,254,155,255,128,255,240,0,191,192,255,208,0,63,208,255,192,0,47,208,255,128,0,47,224,255,64,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,31,224,0,0,0,0,0, + // 0x03b8 θ + 19,30,150,23,2,255,0,27,255,64,0,0,191,255,244,0,3,255,255,253,0,11,254,70,255,0,15,240,0,127,192,47,208,0,63,208,63,192,0,31,224,127,128,0,15,240,191,128,0,15,240,191,64,0,11,244,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,255,255,255,255,248,255,255,255,255,252,255,255,255,255,252,255,0,0,7,248,255,0,0,7,248,255,0,0,7,248,191,64,0,11,244,191,64,0,11,244,127,128,0,15,240,63,192,0,15,240,47,208,0,47,208,15,240,0,63,192,11,252,1,255,128,3,255,255,255,0,0,255,255,252,0,0,47,255,208,0,0,0,84,0,0, + // 0x03b9 ι + 10,22,66,13,3,255,85,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,64,0,191,208,0,63,255,208,47,255,208,7,255,208,0,21,0, + // 0x03ba κ + 18,21,105,21,3,0,85,0,0,21,64,255,64,0,255,128,255,64,3,254,0,255,64,11,252,0,255,64,47,240,0,255,64,127,192,0,255,65,255,64,0,255,67,253,0,0,255,15,248,0,0,255,63,240,0,0,255,191,240,0,0,255,255,252,0,0,255,247,254,0,0,255,192,255,64,0,255,64,127,192,0,255,64,47,240,0,255,64,15,248,0,255,64,7,253,0,255,64,2,255,0,255,64,0,255,192,255,64,0,63,224, + // 0x03bb λ + 21,30,180,20,0,255,191,228,0,0,0,0,255,255,0,0,0,0,255,255,192,0,0,0,81,191,224,0,0,0,0,31,240,0,0,0,0,11,248,0,0,0,0,3,252,0,0,0,0,2,253,0,0,0,0,1,254,0,0,0,0,2,255,0,0,0,0,3,255,64,0,0,0,7,255,192,0,0,0,11,255,192,0,0,0,15,223,224,0,0,0,31,207,240,0,0,0,63,203,244,0,0,0,63,67,248,0,0,0,191,3,252,0,0,0,255,2,253,0,0,1,254,0,255,0,0,2,253,0,255,0,0,3,252,0,127,128,0,7,248,0,63,192,0,15,244,0,63,208,0,15,240,0,31,240,0,31,224,0,15,244,0,63,208,0,11,255,64,63,192,0,7,255,64,191,192,0,2,255,64,0,0,0,0,20,0, + // 0x03bc μ + 21,31,186,24,3,246,85,0,0,5,80,0,255,0,0,31,240,0,255,0,0,31,240,0,255,0,0,31,240,0,255,0,0,31,240,0,255,0,0,31,240,0,255,0,0,31,240,0,255,0,0,31,240,0,255,0,0,31,240,0,255,0,0,31,240,0,255,0,0,31,240,0,255,0,0,31,240,0,255,0,0,31,240,0,255,0,0,47,240,0,255,64,0,63,240,0,255,128,0,63,240,0,255,192,0,191,240,0,255,244,7,255,244,0,255,255,255,239,255,64,255,255,255,199,255,64,255,47,254,2,255,64,255,1,64,0,20,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0, + // 0x03bd ν + 19,21,105,20,0,0,85,0,0,1,84,191,64,0,3,252,127,192,0,3,252,63,192,0,3,252,47,208,0,3,252,15,240,0,7,248,15,240,0,7,248,11,244,0,11,244,3,252,0,15,240,3,252,0,15,240,1,253,0,31,224,0,255,0,47,208,0,255,0,63,192,0,127,64,127,64,0,63,192,255,0,0,47,194,253,0,0,31,215,252,0,0,15,255,240,0,0,11,255,208,0,0,7,255,128,0,0,3,254,0,0, + // 0x03be ξ + 16,37,148,19,2,248,47,255,255,254,63,255,255,255,63,255,255,255,0,111,228,0,2,253,0,0,15,240,0,0,31,208,0,0,47,192,0,0,47,192,0,0,47,208,0,0,31,240,0,0,15,252,0,0,3,255,234,168,0,127,255,252,0,191,255,252,7,255,149,84,31,244,0,0,63,192,0,0,191,128,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,0,255,192,0,0,127,224,0,0,63,254,64,0,15,255,254,64,2,255,255,240,0,47,255,252,0,0,111,253,0,0,3,254,0,0,1,254,0,0,1,254,0,0,2,253,0,0,3,252,0,0,7,248,0,0,10,160, + // 0x03bf ο + 19,22,110,23,2,255,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x03c0 π + 25,22,154,26,0,255,21,85,85,85,85,85,64,127,255,255,255,255,255,192,127,255,255,255,255,255,192,42,191,234,170,191,234,128,0,63,192,0,63,192,0,0,63,192,0,63,192,0,0,63,192,0,63,192,0,0,63,192,0,63,192,0,0,63,192,0,63,192,0,0,63,192,0,63,192,0,0,63,192,0,63,192,0,0,63,192,0,63,192,0,0,63,192,0,63,192,0,0,63,192,0,63,192,0,0,63,192,0,63,192,0,0,63,192,0,63,192,0,0,63,192,0,63,192,0,0,63,192,0,63,208,0,0,63,192,0,63,255,64,0,63,192,0,31,255,64,0,63,192,0,7,255,64,0,0,0,0,0,84,0, + // 0x03c1 ρ + 19,31,155,23,2,246,0,6,254,64,0,0,127,255,248,0,2,255,255,255,0,11,255,171,255,192,15,248,0,127,224,47,224,0,31,240,63,192,0,15,244,63,192,0,11,248,127,192,0,7,252,127,128,0,3,252,127,128,0,3,252,127,128,0,3,252,127,128,0,3,252,127,128,0,7,252,127,128,0,11,248,127,128,0,15,244,127,192,0,47,240,127,248,0,255,192,127,255,255,255,64,127,255,255,253,0,127,75,255,224,0,127,128,20,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,0,0,0,0,0, + // 0x03c2 ς + 16,29,116,19,2,248,0,6,254,144,0,191,255,252,3,255,255,252,15,255,171,248,47,244,0,16,63,208,0,0,127,192,0,0,191,128,0,0,255,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,0,255,64,0,0,191,192,0,0,127,208,0,0,63,244,0,0,31,255,64,0,7,255,254,0,1,255,255,224,0,31,255,252,0,0,111,253,0,0,3,254,0,0,2,254,0,0,1,253,0,0,2,252,0,0,3,252,0,0,11,244,0,0,10,160, + // 0x03c3 σ + 21,22,132,24,2,255,0,0,85,85,85,0,0,47,255,255,255,64,1,255,255,255,255,64,11,255,234,255,170,64,31,252,0,63,128,0,63,224,0,47,208,0,127,192,0,15,240,0,191,128,0,15,240,0,255,64,0,11,244,0,255,0,0,7,248,0,255,0,0,7,248,0,255,0,0,7,252,0,255,0,0,7,248,0,255,64,0,11,248,0,191,128,0,15,244,0,127,192,0,15,240,0,63,224,0,63,224,0,31,248,1,255,192,0,11,255,255,255,64,0,2,255,255,253,0,0,0,47,255,224,0,0,0,0,84,0,0,0, + // 0x03c4 τ + 18,22,110,19,0,255,21,85,85,85,80,127,255,255,255,240,127,255,255,255,240,42,175,250,170,160,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,244,0,0,0,11,253,0,0,0,3,255,255,192,0,1,255,255,192,0,0,127,255,128,0,0,1,84,0, + // 0x03c5 υ + 18,22,110,23,3,255,85,0,0,85,0,255,0,0,127,128,255,0,0,127,192,255,0,0,63,192,255,0,0,63,192,255,0,0,47,208,255,0,0,47,208,255,0,0,47,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,47,224,255,0,0,47,208,255,0,0,63,208,255,0,0,63,192,255,64,0,127,192,191,192,0,255,64,63,224,7,255,0,47,255,255,252,0,15,255,255,240,0,1,255,255,64,0,0,5,80,0,0, + // 0x03c6 φ + 25,39,17,29,2,246,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,111,250,64,0,0,0,47,255,255,248,0,0,1,255,255,255,255,128,0,7,255,239,250,255,224,0,15,252,11,240,47,248,0,63,240,11,240,7,253,0,127,192,11,240,2,255,0,191,128,11,240,0,255,0,255,64,11,240,0,255,64,255,0,11,240,0,191,64,255,0,11,240,0,191,128,255,0,11,240,0,191,128,255,64,11,240,0,191,64,191,128,11,240,0,255,64,127,192,11,240,1,255,0,63,208,11,240,3,254,0,31,244,11,240,11,252,0,11,254,11,240,127,244,0,2,255,255,255,255,208,0,0,127,255,255,255,0,0,0,6,255,255,228,0,0,0,0,11,244,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,0,0,0,0,0, + // 0x03c7 χ + 22,31,186,23,1,246,105,0,0,0,21,80,255,208,0,0,63,192,255,240,0,0,191,128,239,248,0,0,255,0,3,252,0,2,253,0,1,254,0,3,252,0,0,255,0,11,240,0,0,127,128,31,224,0,0,63,192,63,192,0,0,31,224,127,64,0,0,15,240,255,0,0,0,7,249,253,0,0,0,3,255,252,0,0,0,2,255,240,0,0,0,0,255,224,0,0,0,0,191,192,0,0,0,0,255,192,0,0,0,1,255,224,0,0,0,3,255,240,0,0,0,11,251,248,0,0,0,31,227,252,0,0,0,63,194,254,0,0,0,191,64,255,0,0,0,255,0,191,128,0,3,252,0,63,192,0,7,248,0,47,224,0,15,240,0,15,249,64,47,208,0,11,255,224,127,192,0,3,255,224,255,0,0,0,191,224,0,0,0,0,0,0, + // 0x03c8 ψ + 24,39,234,29,3,246,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,85,0,15,224,1,84,255,0,15,224,3,252,255,0,15,224,3,252,255,0,15,224,2,252,255,0,15,224,2,253,255,0,15,224,1,254,255,0,15,224,0,254,255,0,15,224,0,254,255,0,15,224,0,255,255,0,15,224,0,255,255,0,15,224,0,255,255,0,15,224,0,255,255,0,15,224,0,254,255,0,15,224,1,254,191,0,15,224,2,253,127,128,15,224,7,252,63,208,15,224,31,244,47,249,15,225,191,240,15,255,255,255,255,192,2,255,255,255,254,0,0,47,255,255,224,0,0,0,31,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,0,0,0,0, + // 0x03c9 ω + 27,22,154,31,2,255,0,85,0,0,0,84,0,3,252,0,0,0,255,0,11,244,0,0,0,63,128,15,240,0,0,0,47,192,47,208,0,0,0,15,224,63,192,0,0,0,15,240,63,192,0,0,0,11,244,127,128,0,169,0,7,248,127,64,1,253,0,7,248,191,64,1,253,0,3,248,191,64,1,253,0,3,252,191,64,1,253,0,3,252,191,64,1,253,0,3,248,127,64,1,253,0,7,248,127,128,1,254,0,7,244,63,192,2,255,0,15,240,47,208,3,255,0,31,240,31,244,11,239,192,127,208,11,255,255,207,255,255,192,3,255,255,67,255,255,0,0,191,253,0,255,248,0,0,1,64,0,5,64,0, + // 0x03ca ϊ + 255, + // 0x03cb ϋ + 255, + // 0x03cc ό + 19,31,155,23,2,255,0,0,5,84,0,0,0,15,248,0,0,0,15,240,0,0,0,47,208,0,0,0,63,192,0,0,0,63,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x03cd ύ + 18,31,155,23,3,255,0,0,21,80,0,0,0,127,192,0,0,0,191,128,0,0,0,255,0,0,0,1,253,0,0,0,2,248,0,0,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,85,0,255,0,0,127,128,255,0,0,127,192,255,0,0,63,192,255,0,0,63,192,255,0,0,47,208,255,0,0,47,208,255,0,0,47,224,255,0,0,31,224,255,0,0,31,224,255,0,0,31,224,255,0,0,47,224,255,0,0,47,208,255,0,0,63,208,255,0,0,63,192,255,64,0,127,192,191,192,0,255,64,63,224,7,255,0,47,255,255,252,0,15,255,255,240,0,1,255,255,64,0,0,5,80,0,0, + // 0x03ce ώ + 27,31,217,31,2,255,0,0,0,5,84,0,0,0,0,0,15,248,0,0,0,0,0,15,240,0,0,0,0,0,47,208,0,0,0,0,0,63,192,0,0,0,0,0,63,0,0,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,84,0,3,252,0,0,0,255,0,11,244,0,0,0,63,128,15,240,0,0,0,47,192,47,208,0,0,0,15,224,63,192,0,0,0,15,240,63,192,0,0,0,11,244,127,128,0,169,0,7,248,127,64,1,253,0,7,248,191,64,1,253,0,3,248,191,64,1,253,0,3,252,191,64,1,253,0,3,252,191,64,1,253,0,3,248,127,64,1,253,0,7,248,127,128,1,254,0,7,244,63,192,2,255,0,15,240,47,208,3,255,0,31,240,31,244,11,239,192,127,208,11,255,255,207,255,255,192,3,255,255,67,255,255,0,0,191,253,0,255,248,0,0,1,64,0,5,64,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Katakana_28.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Katakana_28.cpp new file mode 100644 index 0000000000..b04da12e00 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Katakana_28.cpp @@ -0,0 +1,238 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Katakana 38pt, capital 'A' height: 28px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 +extern const uint8_t NotoSans_Medium_Katakana_28[12298] = { + 162,28,160,48,104,136,37,246, // unifont_t + // 0x30a0 ゠ + 160,48,18,8,40,38,10,10,127,255,255,255,208,21,85,85,85,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,85,85,85,64,127,255,255,255,208, + // 0x30a1 ァ + 161,48,27,26,182,38,6,251,106,85,85,85,85,86,144,127,255,255,255,255,255,244,127,255,255,255,255,255,252,127,255,255,255,255,255,244,0,0,0,0,0,47,224,0,0,0,0,0,127,192,0,0,10,164,0,255,64,0,0,11,244,3,254,0,0,0,11,244,15,252,0,0,0,11,240,63,240,0,0,0,11,240,255,192,0,0,0,11,240,63,0,0,0,0,15,240,4,0,0,0,0,15,240,0,0,0,0,0,15,224,0,0,0,0,0,31,208,0,0,0,0,0,63,192,0,0,0,0,0,191,128,0,0,0,0,0,255,0,0,0,0,0,3,254,0,0,0,0,0,31,252,0,0,0,0,0,191,240,0,0,0,0,7,255,192,0,0,0,0,2,255,0,0,0,0,0,0,116,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30a2 ア + 162,48,32,31,248,38,4,253,127,170,170,170,170,170,170,224,127,255,255,255,255,255,255,252,127,255,255,255,255,255,255,254,127,255,255,255,255,255,255,252,0,0,0,0,0,0,31,240,0,0,0,0,0,0,63,224,0,0,0,0,0,0,255,192,0,0,0,85,0,2,255,0,0,0,0,255,64,11,253,0,0,0,0,255,64,47,248,0,0,0,0,191,64,191,224,0,0,0,0,191,67,255,192,0,0,0,0,255,71,255,0,0,0,0,0,255,1,248,0,0,0,0,0,255,0,16,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,2,254,0,0,0,0,0,0,3,253,0,0,0,0,0,0,7,252,0,0,0,0,0,0,15,248,0,0,0,0,0,0,47,240,0,0,0,0,0,0,127,224,0,0,0,0,0,1,255,192,0,0,0,0,0,11,255,0,0,0,0,0,0,127,253,0,0,0,0,0,3,255,244,0,0,0,0,0,2,255,192,0,0,0,0,0,0,126,0,0,0,0,0,0,0,16,0,0,0,0,0,0, + // 0x30a3 ィ + 163,48,26,27,189,38,4,252,0,0,0,0,0,2,0,0,0,0,0,0,15,192,0,0,0,0,0,63,240,0,0,0,0,0,255,224,0,0,0,0,7,255,128,0,0,0,0,47,253,0,0,0,0,0,255,244,0,0,0,0,7,255,192,0,0,0,0,63,254,0,0,0,0,2,255,244,0,0,0,0,127,255,224,0,0,0,7,255,255,224,0,0,1,191,255,239,224,0,0,127,255,253,31,224,0,0,63,255,128,31,224,0,0,47,244,0,31,224,0,0,14,0,0,31,224,0,0,0,0,0,31,224,0,0,0,0,0,31,224,0,0,0,0,0,31,224,0,0,0,0,0,31,224,0,0,0,0,0,31,224,0,0,0,0,0,31,224,0,0,0,0,0,31,224,0,0,0,0,0,31,224,0,0,0,0,0,31,224,0,0,0,0,0,31,224,0,0, + // 0x30a4 イ + 164,48,30,31,248,38,3,254,0,0,0,0,0,0,15,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,255,240,0,0,0,0,0,3,255,192,0,0,0,0,0,31,255,0,0,0,0,0,0,127,252,0,0,0,0,0,2,255,224,0,0,0,0,0,31,255,64,0,0,0,0,0,191,252,0,0,0,0,0,7,255,224,0,0,0,0,0,127,255,64,0,0,0,0,7,255,255,0,0,0,0,0,191,255,255,0,0,0,0,27,255,254,255,0,0,0,6,255,255,208,255,0,0,0,191,255,253,0,255,0,0,0,191,255,144,0,255,0,0,0,63,244,0,0,255,0,0,0,46,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,255,0,0,0, + // 0x30a5 ゥ + 165,48,25,29,203,38,7,251,0,0,5,80,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,224,0,0,0,0,0,15,224,0,0,0,149,85,95,245,85,104,0,255,255,255,255,255,255,128,255,255,255,255,255,255,192,255,255,255,255,255,255,128,254,0,0,0,0,255,64,254,0,0,0,0,255,0,254,0,0,0,0,255,0,254,0,0,0,1,254,0,254,0,0,0,3,253,0,254,0,0,0,3,252,0,254,0,0,0,11,252,0,0,0,0,0,15,244,0,0,0,0,0,47,240,0,0,0,0,0,127,208,0,0,0,0,1,255,192,0,0,0,0,7,255,0,0,0,0,0,47,253,0,0,0,0,1,255,244,0,0,0,0,47,255,208,0,0,0,27,255,255,0,0,0,0,15,255,244,0,0,0,0,3,255,64,0,0,0,0,1,224,0,0,0,0,0,0,0,0,0,0,0, + // 0x30a6 ウ + 166,48,29,34,16,38,5,253,0,0,1,170,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,255,0,0,0,0,255,255,255,255,255,255,254,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,128,255,170,170,170,170,170,255,64,254,0,0,0,0,0,255,0,254,0,0,0,0,1,255,0,254,0,0,0,0,2,255,0,254,0,0,0,0,3,254,0,254,0,0,0,0,3,253,0,254,0,0,0,0,7,252,0,254,0,0,0,0,15,248,0,255,0,0,0,0,15,244,0,169,0,0,0,0,47,240,0,0,0,0,0,0,63,224,0,0,0,0,0,0,191,192,0,0,0,0,0,2,255,128,0,0,0,0,0,7,255,0,0,0,0,0,0,31,252,0,0,0,0,0,0,191,244,0,0,0,0,0,3,255,224,0,0,0,0,0,47,255,64,0,0,0,0,2,255,253,0,0,0,0,1,191,255,244,0,0,0,0,3,255,255,64,0,0,0,0,1,255,248,0,0,0,0,0,0,191,64,0,0,0,0,0,0,16,0,0,0,0,0, + // 0x30a7 ェ + 167,48,28,22,154,38,5,254,6,149,85,85,85,86,144,7,255,255,255,255,255,224,7,255,255,255,255,255,224,7,255,255,255,255,255,224,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,58,170,170,255,170,170,173,127,255,255,255,255,255,253,127,255,255,255,255,255,253,127,255,255,255,255,255,253,0,0,0,0,0,0,0, + // 0x30a8 エ + 168,48,32,26,208,38,3,0,11,255,255,255,255,255,255,240,11,255,255,255,255,255,255,240,11,255,255,255,255,255,255,240,11,255,255,255,255,255,255,240,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0, + // 0x30a9 ォ + 169,48,27,27,189,38,6,252,0,0,0,3,252,0,0,0,0,0,2,252,0,0,0,0,0,2,252,0,0,0,0,0,2,252,0,0,0,0,0,2,252,0,0,25,85,85,86,253,85,84,47,255,255,255,255,255,252,47,255,255,255,255,255,252,47,255,255,255,255,255,252,0,0,0,31,252,0,0,0,0,0,63,252,0,0,0,0,0,255,252,0,0,0,0,3,255,252,0,0,0,0,15,249,252,0,0,0,0,127,241,252,0,0,0,1,255,193,252,0,0,0,11,255,1,252,0,0,0,127,248,1,252,0,0,2,255,224,1,253,0,0,47,255,64,1,253,0,0,127,252,0,1,253,0,0,47,224,0,1,253,0,0,15,0,4,2,253,0,0,0,0,11,255,253,0,0,0,0,11,255,252,0,0,0,0,11,255,244,0,0,0,0,0,5,64,0,0, + // 0x30aa オ + 170,48,32,32,0,38,3,254,0,0,0,0,15,244,0,0,0,0,0,0,11,244,0,0,0,0,0,0,11,244,0,0,0,0,0,0,11,244,0,0,0,0,0,0,11,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,31,255,255,255,255,255,255,253,31,255,255,255,255,255,255,253,31,255,255,255,255,255,255,253,26,170,170,170,191,254,170,168,0,0,0,0,191,244,0,0,0,0,0,1,255,244,0,0,0,0,0,7,255,244,0,0,0,0,0,15,255,244,0,0,0,0,0,63,231,244,0,0,0,0,0,255,199,244,0,0,0,0,7,255,3,248,0,0,0,0,31,252,3,248,0,0,0,0,191,240,3,248,0,0,0,3,255,192,3,248,0,0,0,31,255,0,3,248,0,0,0,255,248,0,3,248,0,0,11,255,208,0,3,248,0,0,127,255,0,0,3,248,0,0,191,248,0,0,3,248,0,0,63,208,0,0,3,248,0,0,14,0,0,0,7,248,0,0,0,0,0,191,255,248,0,0,0,0,0,191,255,248,0,0,0,0,0,191,255,240,0,0,0,0,0,127,255,128,0,0, + // 0x30ab カ + 171,48,29,33,8,38,4,253,0,0,2,254,0,0,0,0,0,0,2,254,0,0,0,0,0,0,2,254,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,127,255,255,255,255,255,254,0,127,255,255,255,255,255,255,128,127,255,255,255,255,255,255,128,106,170,171,254,170,170,191,64,0,0,3,252,0,0,127,64,0,0,7,248,0,0,127,64,0,0,11,244,0,0,127,64,0,0,11,244,0,0,127,64,0,0,15,240,0,0,191,0,0,0,31,240,0,0,191,0,0,0,47,224,0,0,191,0,0,0,63,192,0,0,191,0,0,0,127,192,0,0,255,0,0,0,255,128,0,0,255,0,0,1,255,0,0,0,254,0,0,3,254,0,0,0,254,0,0,11,252,0,0,1,253,0,0,31,248,0,0,2,253,0,0,127,240,0,0,3,252,0,1,255,208,0,0,3,252,0,7,255,64,1,64,15,252,0,47,254,0,2,255,255,244,0,255,248,0,2,255,255,240,0,63,224,0,1,255,255,208,0,11,64,0,0,170,250,0,0,0,0,0,0,0,0,0,0, + // 0x30ac ガ + 172,48,33,35,59,38,3,253,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,252,0,0,0,1,170,0,0,112,190,0,0,0,1,255,0,1,252,63,0,0,0,1,255,0,0,189,31,128,0,0,1,254,0,0,63,15,192,0,0,1,254,0,0,47,69,0,0,0,1,254,0,0,15,64,0,0,0,1,254,0,0,0,0,0,58,170,170,255,170,170,168,0,0,63,255,255,255,255,255,255,128,0,63,255,255,255,255,255,255,192,0,63,255,255,255,255,255,255,192,0,0,0,3,252,0,0,63,128,0,0,0,3,252,0,0,63,128,0,0,0,3,248,0,0,63,128,0,0,0,7,248,0,0,63,128,0,0,0,11,244,0,0,127,128,0,0,0,15,240,0,0,127,64,0,0,0,31,240,0,0,127,64,0,0,0,47,224,0,0,127,64,0,0,0,63,192,0,0,191,0,0,0,0,127,192,0,0,191,0,0,0,0,255,64,0,0,255,0,0,0,2,255,0,0,0,255,0,0,0,3,254,0,0,0,254,0,0,0,15,252,0,0,0,254,0,0,0,63,244,0,0,1,253,0,0,0,191,224,0,0,3,253,0,0,3,255,192,0,0,7,252,0,0,31,255,0,1,255,255,252,0,0,191,252,0,1,255,255,244,0,0,63,240,0,1,255,255,224,0,0,15,128,0,0,255,255,64,0,0,1,0,0,0,0,0,0,0,0, + // 0x30ad キ + 173,48,30,33,8,38,4,253,0,0,6,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,244,0,0,0,0,0,0,11,244,0,0,0,0,0,0,7,248,0,0,16,0,0,0,3,252,0,91,248,0,0,0,3,253,191,255,248,0,0,0,107,255,255,255,252,0,106,255,255,255,255,255,232,0,255,255,255,255,254,80,0,0,255,255,255,255,0,0,0,0,191,250,64,255,0,0,0,0,100,0,0,255,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,127,128,0,0,0,0,0,0,63,192,0,22,224,0,0,0,63,193,111,255,240,0,0,0,63,255,255,255,240,0,1,111,255,255,255,255,240,90,255,255,255,255,255,164,0,255,255,255,255,249,64,0,0,255,255,255,159,240,0,0,0,191,249,64,15,240,0,0,0,100,0,0,11,244,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,254,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,64,0,0,0, + // 0x30ae ギ + 174,48,33,35,59,38,3,253,0,0,0,0,0,0,0,184,0,0,0,0,0,0,0,32,252,0,0,0,0,16,0,1,244,127,0,0,0,11,244,0,0,252,47,64,0,0,11,248,0,0,126,15,192,0,0,7,248,0,0,63,10,0,0,0,3,252,0,0,31,64,0,0,0,3,252,0,0,108,0,0,0,0,2,252,5,191,252,0,0,0,0,2,255,255,255,252,0,0,0,22,191,255,255,255,253,0,0,191,255,255,255,255,254,80,0,0,191,255,255,255,229,0,0,0,0,127,255,250,255,0,0,0,0,0,63,164,0,191,64,0,0,0,0,16,0,0,127,128,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,16,0,0,0,0,63,192,0,111,240,0,0,0,0,47,230,191,255,244,0,0,0,1,127,255,255,255,248,0,0,22,255,255,255,255,255,164,0,191,255,255,255,255,249,64,0,0,191,255,255,255,244,0,0,0,0,127,255,249,75,244,0,0,0,0,63,148,0,7,248,0,0,0,0,16,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,249,0,0,0,0, + // 0x30af ク + 175,48,31,34,16,38,3,253,0,0,0,41,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,127,208,0,0,0,0,0,0,255,192,0,0,0,0,0,1,255,64,0,0,0,0,0,3,255,0,0,1,0,0,0,11,255,255,255,255,128,0,0,31,255,255,255,255,244,0,0,63,255,255,255,255,240,0,0,255,213,85,85,127,224,0,2,255,64,0,0,63,208,0,11,254,0,0,0,191,192,0,47,252,0,0,0,255,128,0,191,240,0,0,1,255,64,3,255,192,0,0,2,255,0,31,255,0,0,0,3,253,0,127,248,0,0,0,11,252,0,31,224,0,0,0,31,244,0,3,64,0,0,0,63,240,0,0,0,0,0,0,191,208,0,0,0,0,0,1,255,128,0,0,0,0,0,3,255,0,0,0,0,0,0,15,253,0,0,0,0,0,0,63,244,0,0,0,0,0,1,255,224,0,0,0,0,0,11,255,128,0,0,0,0,0,47,254,0,0,0,0,0,2,255,248,0,0,0,0,0,31,255,208,0,0,0,0,2,255,255,0,0,0,0,0,127,255,244,0,0,0,0,0,63,255,128,0,0,0,0,0,15,248,0,0,0,0,0,0,2,128,0,0,0,0,0, + // 0x30b0 グ + 176,48,35,36,68,38,2,252,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,5,31,192,0,0,0,56,0,0,63,11,208,0,0,0,127,208,0,47,131,240,0,0,0,191,192,0,15,194,244,0,0,0,255,64,0,7,224,224,0,0,2,255,0,0,3,240,0,0,0,7,253,0,0,5,128,0,0,0,15,255,255,255,255,128,0,0,0,47,255,255,255,255,240,0,0,0,127,255,255,255,255,240,0,0,0,255,213,85,85,191,208,0,0,3,255,0,0,0,191,192,0,0,15,252,0,0,0,255,128,0,0,63,244,0,0,0,255,64,0,0,255,208,0,0,2,255,0,0,7,255,128,0,0,3,253,0,0,47,253,0,0,0,11,252,0,0,191,244,0,0,0,15,248,0,0,47,192,0,0,0,47,240,0,0,6,0,0,0,0,127,208,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,2,255,64,0,0,0,0,0,0,11,254,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,2,255,192,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,127,253,0,0,0,0,0,0,7,255,240,0,0,0,0,0,0,47,255,192,0,0,0,0,0,7,255,254,0,0,0,0,0,0,191,255,240,0,0,0,0,0,0,127,255,64,0,0,0,0,0,0,31,244,0,0,0,0,0,0,0,2,64,0,0,0,0,0,0, + // 0x30b1 ケ + 177,48,33,33,41,38,2,253,0,0,47,224,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,2,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,192,0,15,255,255,255,255,255,255,192,0,31,255,255,255,255,255,255,192,0,63,224,0,3,252,0,0,0,0,255,192,0,3,252,0,0,0,2,255,64,0,3,252,0,0,0,11,255,0,0,7,252,0,0,0,47,252,0,0,11,248,0,0,0,191,244,0,0,15,244,0,0,0,47,208,0,0,15,240,0,0,0,3,64,0,0,31,240,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,11,254,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,2,255,208,0,0,0,0,0,0,15,255,128,0,0,0,0,0,0,191,254,0,0,0,0,0,0,0,127,248,0,0,0,0,0,0,0,11,208,0,0,0,0,0,0,0,1,0,0,0,0,0,0, + // 0x30b2 ゲ + 178,48,35,36,68,38,2,252,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,63,64,0,0,16,0,0,0,46,31,192,0,0,63,208,0,0,63,11,208,0,0,63,208,0,0,31,131,240,0,0,127,192,0,0,15,194,244,0,0,191,128,0,0,7,224,64,0,0,255,64,0,0,3,224,0,0,1,255,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,3,255,255,255,255,255,255,64,0,11,255,255,255,255,255,255,64,0,31,255,255,255,255,255,255,64,0,63,255,255,255,255,255,255,64,0,191,192,0,7,248,0,0,0,1,255,128,0,11,248,0,0,0,3,255,0,0,11,244,0,0,0,15,253,0,0,15,244,0,0,0,63,248,0,0,15,240,0,0,0,255,224,0,0,31,240,0,0,0,63,192,0,0,47,224,0,0,0,7,0,0,0,63,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,7,254,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,63,244,0,0,0,0,0,0,0,255,224,0,0,0,0,0,0,7,255,192,0,0,0,0,0,0,47,255,0,0,0,0,0,0,1,255,252,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,0,15,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30b3 コ + 179,48,27,28,196,38,6,254,191,255,255,255,255,255,248,191,255,255,255,255,255,248,191,255,255,255,255,255,248,191,255,255,255,255,255,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,0,0,0,0,0,11,248,0,0,0,0,0,11,248,0,0,0,0,0,0,0, + // 0x30b4 ゴ + 180,48,31,36,32,38,5,253,0,0,0,0,0,0,1,0,0,0,0,0,0,4,15,192,0,0,0,0,0,62,15,208,0,0,0,0,0,63,67,240,0,0,0,0,0,31,194,248,0,0,0,0,0,11,208,252,0,0,0,0,0,3,240,64,0,0,0,0,0,2,64,0,191,255,255,255,255,255,248,0,191,255,255,255,255,255,248,0,191,255,255,255,255,255,248,0,191,255,255,255,255,255,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,255,255,255,255,255,255,248,0,255,255,255,255,255,255,248,0,255,255,255,255,255,255,248,0,255,255,255,255,255,255,248,0,0,0,0,0,0,7,252,0,0,0,0,0,0,7,252,0,0,0,0,0,0,1,84,0, + // 0x30b5 サ + 181,48,33,33,41,38,2,253,0,0,170,0,0,15,240,0,0,0,0,255,0,0,15,240,0,0,0,0,255,0,0,15,240,0,0,0,0,255,0,0,15,240,0,0,0,0,255,0,0,15,240,0,0,0,0,255,0,0,15,240,0,0,0,0,255,0,0,15,240,0,0,0,0,255,0,0,15,240,0,0,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,191,255,255,255,255,255,255,255,192,186,170,255,170,170,175,250,170,192,0,0,255,0,0,15,240,0,0,0,0,255,0,0,15,240,0,0,0,0,255,0,0,15,224,0,0,0,0,255,0,0,15,224,0,0,0,0,255,0,0,15,224,0,0,0,0,255,0,0,31,224,0,0,0,0,255,0,0,31,208,0,0,0,0,255,0,0,47,208,0,0,0,0,255,0,0,63,192,0,0,0,0,85,0,0,63,192,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,11,253,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,255,240,0,0,0,0,0,0,11,255,192,0,0,0,0,0,0,191,255,0,0,0,0,0,0,0,191,248,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,9,0,0,0,0,0, + // 0x30b6 ザ + 182,48,36,34,50,38,1,252,0,0,0,0,0,0,0,1,240,0,0,170,64,0,15,244,177,240,0,0,191,64,0,15,240,244,248,0,0,191,64,0,15,240,248,124,0,0,191,64,0,15,240,124,61,0,0,191,0,0,11,240,61,40,0,0,191,0,0,11,240,45,0,0,0,191,0,0,11,240,0,0,0,0,191,0,0,11,240,0,0,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,58,170,255,234,170,175,250,170,144,0,0,191,0,0,11,240,0,0,0,0,191,0,0,15,240,0,0,0,0,191,0,0,15,240,0,0,0,0,191,0,0,15,240,0,0,0,0,191,0,0,15,240,0,0,0,0,191,64,0,15,240,0,0,0,0,191,64,0,15,240,0,0,0,0,191,64,0,31,224,0,0,0,0,191,64,0,47,208,0,0,0,0,21,0,0,63,192,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,7,254,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,255,240,0,0,0,0,0,0,11,255,208,0,0,0,0,0,0,191,255,0,0,0,0,0,0,0,63,248,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,1,0,0,0,0,0, + // 0x30b7 シ + 183,48,31,31,248,38,4,254,0,2,64,0,0,0,0,0,0,7,240,0,0,0,0,0,0,15,254,0,0,0,0,0,0,31,255,208,0,0,0,0,0,2,255,248,0,0,0,0,0,0,63,254,0,0,0,0,0,0,7,253,0,0,0,0,0,0,0,248,0,0,0,0,0,0,0,16,0,0,0,0,61,0,0,0,0,0,0,192,127,192,0,0,0,0,2,224,255,248,0,0,0,0,3,244,127,255,64,0,0,0,15,252,11,255,224,0,0,0,63,244,0,255,240,0,0,0,191,224,0,31,192,0,0,2,255,192,0,3,128,0,0,11,255,0,0,0,0,0,0,47,252,0,0,0,0,0,0,255,240,0,0,0,0,0,3,255,192,0,0,0,0,0,31,255,0,0,0,0,0,0,255,252,0,0,0,0,0,7,255,224,0,0,0,0,0,127,255,64,0,0,0,0,11,255,248,0,0,0,0,1,255,255,208,0,0,0,1,191,255,254,0,0,0,0,31,255,255,224,0,0,0,0,15,255,254,0,0,0,0,0,7,255,144,0,0,0,0,0,2,228,0,0,0,0,0,0, + // 0x30b8 ジ + 184,48,33,32,32,38,3,254,0,0,0,0,0,0,1,176,0,0,0,128,0,0,0,2,248,0,0,3,248,0,0,11,192,253,0,0,11,255,64,0,11,224,127,0,0,11,255,224,0,3,240,63,64,0,1,255,253,0,1,252,15,192,0,0,47,255,64,0,253,9,0,0,0,3,255,0,0,126,0,0,0,0,0,188,0,0,32,0,0,0,0,0,4,0,0,0,0,0,30,0,0,0,0,0,0,96,0,63,224,0,0,0,0,0,240,0,191,253,0,0,0,0,2,252,0,47,255,128,0,0,0,7,253,0,7,255,244,0,0,0,31,252,0,0,127,244,0,0,0,63,240,0,0,15,224,0,0,0,255,208,0,0,1,192,0,0,3,255,128,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,127,248,0,0,0,0,0,0,2,255,224,0,0,0,0,0,0,15,255,128,0,0,0,0,0,0,127,253,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,47,255,192,0,0,0,0,0,6,255,253,0,0,0,0,0,1,191,255,240,0,0,0,0,1,111,255,255,64,0,0,0,0,15,255,255,244,0,0,0,0,0,7,255,254,64,0,0,0,0,0,3,255,208,0,0,0,0,0,0,1,228,0,0,0,0,0,0,0, + // 0x30b9 ス + 185,48,30,30,240,38,4,253,3,255,255,255,255,255,208,0,3,255,255,255,255,255,248,0,3,255,255,255,255,255,244,0,3,255,255,255,255,255,240,0,0,0,0,0,0,63,208,0,0,0,0,0,0,191,192,0,0,0,0,0,0,255,128,0,0,0,0,0,1,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,11,252,0,0,0,0,0,0,15,244,0,0,0,0,0,0,63,224,0,0,0,0,0,0,191,192,0,0,0,0,0,1,255,64,0,0,0,0,0,7,255,0,0,0,0,0,0,15,255,64,0,0,0,0,0,63,255,224,0,0,0,0,0,255,255,248,0,0,0,0,7,255,95,254,0,0,0,0,31,253,7,255,128,0,0,0,191,244,1,255,224,0,0,3,255,208,0,127,244,0,0,47,255,0,0,31,253,0,1,255,252,0,0,7,255,64,31,255,224,0,0,2,255,192,255,255,64,0,0,0,191,240,255,252,0,0,0,0,63,240,63,208,0,0,0,0,15,192,13,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0, + // 0x30ba ズ + 186,48,34,36,68,38,3,253,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,188,0,0,0,0,0,0,0,180,127,0,0,0,0,0,0,0,252,47,64,0,0,0,0,0,0,190,15,192,0,0,0,0,0,0,63,11,208,0,0,0,0,0,0,95,131,64,3,255,255,255,255,255,255,64,0,3,255,255,255,255,255,252,0,0,3,255,255,255,255,255,248,0,0,3,255,255,255,255,255,240,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,1,255,128,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,15,255,192,0,0,0,0,0,0,63,255,240,0,0,0,0,0,0,255,255,252,0,0,0,0,0,7,255,79,255,0,0,0,0,0,31,253,3,255,192,0,0,0,0,191,244,0,255,240,0,0,0,7,255,208,0,63,252,0,0,0,47,255,64,0,15,254,0,0,1,255,252,0,0,3,255,128,0,31,255,224,0,0,0,255,208,0,255,255,64,0,0,0,127,244,0,127,248,0,0,0,0,47,240,0,47,208,0,0,0,0,11,192,0,9,0,0,0,0,0,2,0,0, + // 0x30bb セ + 187,48,32,32,0,38,2,254,0,0,42,128,0,0,0,0,0,0,63,208,0,0,0,0,0,0,63,208,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,96,0,0,63,192,0,0,111,248,0,0,63,192,1,191,255,255,0,0,63,214,255,255,255,253,0,0,63,255,255,255,255,252,1,111,255,255,255,254,79,244,191,255,255,255,249,0,47,240,191,255,255,228,0,0,63,192,191,255,191,192,0,0,255,128,127,144,63,192,0,2,255,0,0,0,63,192,0,7,253,0,0,0,63,192,0,15,248,0,0,0,63,192,0,63,240,0,0,0,63,192,0,255,192,0,0,0,63,192,0,47,64,0,0,0,63,192,0,5,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,244,0,0,5,176,0,0,31,255,235,255,255,240,0,0,15,255,255,255,255,240,0,0,3,255,255,255,255,240,0,0,0,111,255,255,234,80, + // 0x30bc ゼ + 188,48,36,35,59,38,1,253,0,0,0,0,0,0,0,7,192,0,0,0,0,0,0,1,11,224,0,0,0,0,0,0,15,195,240,0,0,31,240,0,0,11,209,248,0,0,31,240,0,0,3,240,253,0,0,31,224,0,0,2,244,120,0,0,31,224,0,0,0,252,0,0,0,31,224,0,0,0,96,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,1,180,0,0,0,31,224,0,1,191,254,0,0,0,31,224,6,255,255,255,64,0,0,31,251,255,255,255,255,0,0,0,111,255,255,255,255,252,0,5,191,255,255,255,249,11,248,0,127,255,255,255,228,0,15,240,0,63,255,255,244,0,0,63,208,0,63,254,175,224,0,0,191,192,0,62,64,31,224,0,0,255,0,0,0,0,31,224,0,3,254,0,0,0,0,31,224,0,15,252,0,0,0,0,31,224,0,47,240,0,0,0,0,31,224,0,127,208,0,0,0,0,31,224,0,11,64,0,0,0,0,31,224,0,1,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,253,0,0,90,248,0,0,0,15,255,255,255,255,248,0,0,0,7,255,255,255,255,248,0,0,0,1,255,255,255,255,248,0,0,0,0,6,170,170,149,0,0, + // 0x30bd ソ + 189,48,29,30,240,38,4,254,0,0,0,0,0,0,64,0,7,64,0,0,0,0,255,128,127,192,0,0,0,0,255,64,127,224,0,0,0,1,255,0,47,244,0,0,0,1,255,0,15,252,0,0,0,2,254,0,7,253,0,0,0,3,253,0,3,255,0,0,0,3,252,0,1,255,128,0,0,7,252,0,0,255,192,0,0,15,248,0,0,63,240,0,0,15,244,0,0,47,244,0,0,47,240,0,0,15,208,0,0,63,224,0,0,10,0,0,0,127,192,0,0,0,0,0,0,255,128,0,0,0,0,0,2,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,15,252,0,0,0,0,0,0,63,244,0,0,0,0,0,0,191,224,0,0,0,0,0,2,255,192,0,0,0,0,0,11,255,0,0,0,0,0,0,47,253,0,0,0,0,0,1,255,244,0,0,0,0,0,11,255,208,0,0,0,0,0,127,255,64,0,0,0,0,7,255,252,0,0,0,0,0,11,255,224,0,0,0,0,0,1,254,0,0,0,0,0,0,0,116,0,0,0,0,0, + // 0x30be ゾ + 190,48,32,35,24,38,4,253,0,0,0,0,0,0,0,160,0,0,0,0,0,1,131,240,0,0,0,0,0,15,193,252,0,0,0,0,0,7,240,189,0,0,0,0,0,3,244,63,0,0,0,0,0,0,252,45,11,0,0,0,0,0,184,0,191,128,0,0,0,2,144,0,255,192,0,0,0,3,254,0,127,224,0,0,0,3,253,0,47,244,0,0,0,7,252,0,15,252,0,0,0,11,252,0,7,253,0,0,0,15,248,0,3,255,0,0,0,15,240,0,1,255,128,0,0,31,240,0,0,255,192,0,0,63,224,0,0,63,224,0,0,63,208,0,0,47,64,0,0,191,192,0,0,8,0,0,0,255,64,0,0,0,0,0,2,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,15,252,0,0,0,0,0,0,47,244,0,0,0,0,0,0,127,240,0,0,0,0,0,1,255,192,0,0,0,0,0,7,255,64,0,0,0,0,0,31,254,0,0,0,0,0,0,191,248,0,0,0,0,0,3,255,224,0,0,0,0,0,31,255,128,0,0,0,0,1,255,253,0,0,0,0,0,31,255,240,0,0,0,0,0,15,255,128,0,0,0,0,0,3,253,0,0,0,0,0,0,0,144,0,0,0,0,0, + // 0x30bf タ + 191,48,31,34,16,38,3,253,0,0,0,46,64,0,0,0,0,0,0,63,224,0,0,0,0,0,0,127,192,0,0,0,0,0,0,255,128,0,0,0,0,0,2,255,0,0,0,0,0,0,3,255,85,85,90,0,0,0,15,255,255,255,255,224,0,0,47,255,255,255,255,244,0,0,127,255,255,255,255,240,0,0,255,192,0,0,63,224,0,3,255,0,0,0,127,192,0,15,253,0,0,0,191,192,0,63,244,0,0,0,255,64,0,255,224,0,0,1,255,0,3,255,128,176,0,3,254,0,31,254,2,254,0,11,252,0,191,244,7,255,192,15,248,0,63,208,1,255,248,63,240,0,11,0,0,63,255,191,208,0,0,0,0,7,255,255,192,0,0,0,0,0,255,255,0,0,0,0,0,0,47,255,64,0,0,0,0,0,47,255,224,0,0,0,0,0,191,255,248,0,0,0,0,2,255,239,254,0,0,0,0,15,255,11,252,0,0,0,0,127,252,1,244,0,0,0,3,255,240,0,80,0,0,0,47,255,128,0,0,0,0,6,255,253,0,0,0,0,0,191,255,224,0,0,0,0,0,191,255,64,0,0,0,0,0,47,244,0,0,0,0,0,0,6,64,0,0,0,0,0, + // 0x30c0 ダ + 192,48,35,37,77,38,2,252,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,47,64,0,0,0,0,0,0,10,15,192,0,0,0,63,128,0,63,11,224,0,0,0,127,208,0,31,195,240,0,0,0,255,192,0,11,209,244,0,0,1,255,64,0,3,240,64,0,0,3,254,0,0,3,224,0,0,0,11,255,255,255,255,192,0,0,0,15,255,255,255,255,244,0,0,0,63,255,255,255,255,240,0,0,0,191,213,85,85,127,224,0,0,2,255,64,0,0,63,192,0,0,7,254,0,0,0,191,192,0,0,31,252,0,0,0,255,128,0,0,127,240,0,0,1,255,0,0,2,255,192,0,0,3,254,0,0,11,255,0,248,0,7,253,0,0,63,252,3,255,64,15,248,0,0,191,240,7,255,224,31,240,0,0,31,128,0,191,252,63,224,0,0,5,0,0,31,255,255,192,0,0,0,0,0,3,255,255,64,0,0,0,0,0,0,191,255,0,0,0,0,0,0,0,47,255,128,0,0,0,0,0,0,63,255,240,0,0,0,0,0,0,255,255,252,0,0,0,0,0,7,255,175,254,0,0,0,0,0,47,254,7,252,0,0,0,0,0,255,248,0,240,0,0,0,0,11,255,208,0,0,0,0,0,0,127,255,64,0,0,0,0,0,7,255,252,0,0,0,0,0,0,191,255,208,0,0,0,0,0,0,191,254,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0, + // 0x30c1 チ + 193,48,32,32,0,38,3,253,0,0,0,0,0,6,244,0,0,0,0,0,22,255,252,0,1,85,90,175,255,255,254,0,2,255,255,255,255,255,249,0,1,255,255,255,255,228,0,0,0,255,255,239,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,175,254,170,170,170,0,0,0,11,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,47,224,0,0,0,0,0,0,63,208,0,0,0,0,0,0,191,192,0,0,0,0,0,0,255,128,0,0,0,0,0,3,255,0,0,0,0,0,0,11,253,0,0,0,0,0,0,63,248,0,0,0,0,0,1,255,240,0,0,0,0,0,11,255,192,0,0,0,0,0,31,255,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,64,0,0,0,0,0, + // 0x30c2 ヂ + 194,48,34,33,41,38,2,252,0,0,0,0,0,0,176,0,0,0,0,0,0,0,111,248,0,0,0,0,0,22,191,255,253,0,0,2,255,255,255,255,255,254,0,0,1,255,255,255,255,254,64,31,0,0,255,255,255,253,0,5,31,128,0,165,84,7,248,0,63,11,192,0,0,0,7,248,0,31,131,240,0,0,0,7,248,0,11,194,240,0,0,0,7,248,0,3,224,64,0,0,0,7,248,0,2,208,0,0,0,0,7,248,0,0,0,0,170,170,170,171,254,170,170,170,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,2,255,64,0,0,0,0,0,0,7,254,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,191,244,0,0,0,0,0,0,7,255,208,0,0,0,0,0,0,47,255,64,0,0,0,0,0,0,11,253,0,0,0,0,0,0,0,1,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30c3 ッ + 195,48,27,25,175,38,6,252,0,0,11,192,0,0,0,0,0,47,208,0,11,144,31,64,15,240,0,15,244,127,128,15,240,0,15,240,63,192,7,248,0,31,240,47,224,3,252,0,47,224,15,240,2,253,0,63,192,11,244,1,254,0,63,192,7,248,0,228,0,191,128,3,252,0,0,0,255,0,2,248,0,0,2,254,0,0,64,0,0,3,252,0,0,0,0,0,15,248,0,0,0,0,0,31,240,0,0,0,0,0,127,208,0,0,0,0,1,255,128,0,0,0,0,7,255,0,0,0,0,0,47,252,0,0,0,0,0,255,240,0,0,0,0,11,255,192,0,0,0,0,191,254,0,0,0,0,31,255,248,0,0,0,0,31,255,192,0,0,0,0,7,253,0,0,0,0,0,1,208,0,0,0,0, + // 0x30c4 ツ + 196,48,32,31,248,38,3,254,0,0,0,4,0,0,0,0,0,0,1,252,0,0,0,0,0,0,3,253,0,0,3,144,27,64,1,255,0,0,3,254,191,192,0,255,64,0,7,253,63,192,0,191,128,0,7,252,47,224,0,63,192,0,11,248,31,240,0,63,208,0,15,244,15,244,0,31,240,0,31,240,7,252,0,15,240,0,47,240,3,253,0,11,240,0,63,208,2,254,0,6,64,0,127,192,1,255,0,0,0,0,255,128,0,254,0,0,0,0,255,0,0,80,0,0,0,2,254,0,0,0,0,0,0,7,252,0,0,0,0,0,0,15,248,0,0,0,0,0,0,47,240,0,0,0,0,0,0,191,208,0,0,0,0,0,1,255,192,0,0,0,0,0,7,255,0,0,0,0,0,0,31,252,0,0,0,0,0,0,191,244,0,0,0,0,0,3,255,208,0,0,0,0,0,47,255,64,0,0,0,0,1,255,252,0,0,0,0,0,47,255,240,0,0,0,0,7,255,255,64,0,0,0,0,3,255,248,0,0,0,0,0,0,255,144,0,0,0,0,0,0,56,0,0,0,0,0, + // 0x30c5 ヅ + 197,48,34,35,59,38,3,253,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,176,190,0,0,0,0,0,0,2,248,63,64,0,0,0,0,0,0,252,31,192,0,0,0,16,0,0,127,11,208,0,0,6,244,0,0,63,67,64,0,0,7,252,0,0,30,0,0,46,0,3,252,0,0,0,0,0,255,0,2,254,0,0,14,64,0,255,128,0,255,0,0,15,244,0,127,192,0,255,64,0,31,240,0,63,208,0,127,128,0,47,240,0,47,240,0,63,192,0,63,208,0,15,240,0,47,208,0,63,192,0,11,248,0,31,224,0,191,192,0,7,252,0,9,0,0,255,64,0,3,253,0,0,0,1,255,0,0,2,253,0,0,0,3,254,0,0,0,64,0,0,0,7,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,127,224,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,15,253,0,0,0,0,0,0,0,63,244,0,0,0,0,0,0,1,255,224,0,0,0,0,0,0,11,255,128,0,0,0,0,0,0,127,254,0,0,0,0,0,0,7,255,244,0,0,0,0,0,0,127,255,208,0,0,0,0,0,11,255,254,0,0,0,0,0,0,11,255,244,0,0,0,0,0,0,2,255,64,0,0,0,0,0,0,0,180,0,0,0,0,0,0, + // 0x30c6 テ + 198,48,32,31,248,38,3,253,0,63,255,255,255,255,255,0,0,63,255,255,255,255,255,0,0,63,255,255,255,255,255,0,0,42,170,170,170,170,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,170,170,170,170,170,170,170,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,0,0,0,3,252,0,0,0,0,0,0,7,252,0,0,0,0,0,0,7,252,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,15,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,31,224,0,0,0,0,0,0,63,208,0,0,0,0,0,0,127,192,0,0,0,0,0,0,255,128,0,0,0,0,0,3,255,0,0,0,0,0,0,15,253,0,0,0,0,0,0,127,248,0,0,0,0,0,2,255,224,0,0,0,0,0,15,255,128,0,0,0,0,0,2,253,0,0,0,0,0,0,0,96,0,0,0,0,0, + // 0x30c7 デ + 199,48,34,37,77,38,3,252,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,45,31,128,0,0,0,0,0,0,63,15,208,0,0,0,0,0,0,47,131,240,0,191,255,255,255,255,207,194,240,0,191,255,255,255,255,199,224,64,0,191,255,255,255,255,195,144,0,0,106,170,170,170,170,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,254,0,255,255,255,255,255,255,255,254,0,255,255,255,255,255,255,255,254,0,234,170,170,175,254,170,170,169,0,0,0,0,11,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,1,255,64,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,15,253,0,0,0,0,0,0,0,127,248,0,0,0,0,0,0,2,255,224,0,0,0,0,0,0,31,255,128,0,0,0,0,0,0,15,253,0,0,0,0,0,0,0,2,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30c8 ト + 200,48,21,31,186,38,12,254,255,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,224,0,0,0,0,191,255,128,0,0,0,191,255,254,0,0,0,191,255,255,244,0,0,191,191,255,255,128,0,191,65,255,255,249,0,191,64,11,255,255,64,191,64,0,127,255,0,191,64,0,6,254,0,191,64,0,0,44,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,255,128,0,0,0,0, + // 0x30c9 ド + 201,48,23,32,192,38,11,253,85,0,0,0,9,0,255,64,0,0,63,0,255,64,0,40,47,192,255,64,0,253,15,208,255,64,0,127,7,240,255,64,0,47,130,244,255,64,0,15,192,128,255,64,0,11,224,0,255,64,0,2,64,0,255,64,0,0,0,0,255,64,0,0,0,0,255,248,0,0,0,0,255,255,224,0,0,0,255,255,255,64,0,0,255,255,255,249,0,0,255,95,255,255,208,0,255,64,191,255,254,0,255,64,6,255,255,0,255,64,0,47,254,0,255,64,0,1,252,0,255,64,0,0,24,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,170,64,0,0,0,0, + // 0x30ca ナ + 202,48,32,33,8,38,3,253,0,0,0,6,168,0,0,0,0,0,0,7,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,127,255,255,255,255,255,255,255,127,255,255,255,255,255,255,255,127,255,255,255,255,255,255,255,127,255,255,255,255,255,255,255,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,7,252,0,0,0,0,0,0,11,248,0,0,0,0,0,0,15,248,0,0,0,0,0,0,15,244,0,0,0,0,0,0,31,240,0,0,0,0,0,0,63,224,0,0,0,0,0,0,127,208,0,0,0,0,0,0,255,192,0,0,0,0,0,2,255,64,0,0,0,0,0,11,255,0,0,0,0,0,0,47,252,0,0,0,0,0,0,191,244,0,0,0,0,0,7,255,208,0,0,0,0,0,47,255,64,0,0,0,0,0,31,253,0,0,0,0,0,0,3,240,0,0,0,0,0,0,0,64,0,0,0,0,0, + // 0x30cb ニ + 203,48,31,25,200,38,3,0,1,255,255,255,255,255,254,0,1,255,255,255,255,255,254,0,1,255,255,255,255,255,254,0,1,255,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,84,191,255,255,255,255,255,255,252,191,255,255,255,255,255,255,252,191,255,255,255,255,255,255,252,191,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0x30cc ヌ + 204,48,27,30,210,38,5,253,15,234,170,170,170,191,128,15,255,255,255,255,255,240,15,255,255,255,255,255,244,15,255,255,255,255,255,240,0,0,0,0,0,63,208,0,0,0,0,0,127,192,0,0,0,0,0,191,192,0,0,0,0,0,255,64,0,0,0,0,1,255,0,0,46,0,0,3,254,0,0,191,208,0,7,252,0,0,255,252,0,15,248,0,0,47,255,128,31,240,0,0,7,255,240,63,224,0,0,0,127,254,191,192,0,0,0,15,255,255,128,0,0,0,2,255,255,0,0,0,0,0,127,254,0,0,0,0,0,63,255,192,0,0,0,1,255,255,244,0,0,0,7,255,255,254,0,0,0,47,254,15,255,128,0,0,255,248,2,255,240,0,11,255,224,0,191,244,0,191,255,64,0,31,224,11,255,252,0,0,7,192,255,255,224,0,0,1,0,191,254,0,0,0,0,0,47,244,0,0,0,0,0,10,0,0,0,0,0,0, + // 0x30cd ネ + 205,48,33,34,50,38,3,253,0,0,0,10,164,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,7,255,255,255,255,255,253,0,0,7,255,255,255,255,255,255,64,0,7,255,255,255,255,255,255,128,0,6,170,170,170,170,175,254,0,0,0,0,0,0,0,47,248,0,0,0,0,0,0,0,127,240,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,255,240,0,0,0,0,0,0,7,255,128,0,0,0,0,0,0,63,254,0,0,0,0,0,0,2,255,244,3,128,0,0,0,0,47,255,240,15,244,0,0,0,7,255,255,240,47,255,0,0,1,191,255,239,240,11,255,224,0,111,255,254,15,240,1,255,253,0,255,255,224,15,240,0,47,255,64,127,253,0,15,240,0,7,255,0,47,128,0,15,240,0,0,188,0,4,0,0,15,240,0,0,20,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,10,160,0,0,0,0, + // 0x30ce ノ + 206,48,26,30,210,38,5,254,0,0,0,0,0,41,0,0,0,0,0,0,63,240,0,0,0,0,0,127,208,0,0,0,0,0,191,192,0,0,0,0,0,255,192,0,0,0,0,0,255,64,0,0,0,0,2,255,0,0,0,0,0,3,254,0,0,0,0,0,7,252,0,0,0,0,0,15,252,0,0,0,0,0,31,244,0,0,0,0,0,47,240,0,0,0,0,0,127,208,0,0,0,0,0,255,192,0,0,0,0,2,255,64,0,0,0,0,7,255,0,0,0,0,0,15,252,0,0,0,0,0,63,244,0,0,0,0,0,255,224,0,0,0,0,3,255,192,0,0,0,0,15,255,0,0,0,0,0,127,252,0,0,0,0,2,255,240,0,0,0,0,31,255,192,0,0,0,1,255,254,0,0,0,0,31,255,244,0,0,0,0,255,255,192,0,0,0,0,63,254,0,0,0,0,0,15,224,0,0,0,0,0,2,0,0,0,0,0,0, + // 0x30cf ハ + 207,48,33,27,243,38,3,0,0,0,16,0,0,40,0,0,0,0,0,63,128,3,252,0,0,0,0,0,127,192,3,254,0,0,0,0,0,127,192,1,255,0,0,0,0,0,191,128,0,255,128,0,0,0,0,255,64,0,127,192,0,0,0,0,255,0,0,63,224,0,0,0,1,255,0,0,31,240,0,0,0,2,254,0,0,15,244,0,0,0,3,253,0,0,11,252,0,0,0,3,252,0,0,3,253,0,0,0,7,252,0,0,3,254,0,0,0,15,244,0,0,1,255,0,0,0,15,240,0,0,0,255,64,0,0,47,240,0,0,0,191,192,0,0,63,208,0,0,0,127,192,0,0,127,192,0,0,0,63,224,0,0,255,128,0,0,0,47,240,0,1,255,0,0,0,0,31,244,0,3,254,0,0,0,0,15,248,0,11,253,0,0,0,0,11,252,0,15,252,0,0,0,0,7,253,0,63,244,0,0,0,0,3,254,0,127,224,0,0,0,0,3,255,0,255,192,0,0,0,0,1,255,64,191,128,0,0,0,0,0,255,64,11,0,0,0,0,0,0,144,0, + // 0x30d0 バ + 208,48,35,32,32,38,2,255,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,31,128,0,0,0,0,0,0,47,15,208,0,0,0,0,0,0,47,131,240,0,0,0,0,0,0,15,194,244,0,0,0,0,0,24,7,224,224,0,0,47,208,2,254,3,240,0,0,0,47,224,1,255,1,128,0,0,0,63,208,0,255,128,0,0,0,0,63,192,0,127,192,0,0,0,0,127,192,0,63,224,0,0,0,0,191,128,0,31,240,0,0,0,0,255,64,0,15,248,0,0,0,0,255,0,0,11,252,0,0,0,1,255,0,0,3,253,0,0,0,2,254,0,0,2,255,0,0,0,3,253,0,0,1,255,0,0,0,7,252,0,0,0,255,128,0,0,11,248,0,0,0,127,192,0,0,15,244,0,0,0,63,208,0,0,31,240,0,0,0,63,240,0,0,63,224,0,0,0,31,240,0,0,127,192,0,0,0,15,244,0,0,255,128,0,0,0,15,252,0,1,255,64,0,0,0,7,252,0,3,255,0,0,0,0,3,253,0,11,253,0,0,0,0,3,255,0,15,252,0,0,0,0,2,255,0,63,244,0,0,0,0,0,255,64,191,224,0,0,0,0,0,255,192,127,192,0,0,0,0,0,191,128,6,64,0,0,0,0,0,100,0, + // 0x30d1 パ + 209,48,35,33,41,38,2,254,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,3,255,224,0,0,0,0,0,0,7,209,244,0,0,0,0,0,0,15,64,120,0,0,0,0,0,0,15,0,124,0,0,0,0,0,24,15,64,120,0,0,47,208,2,254,7,209,244,0,0,47,224,1,255,3,255,224,0,0,63,208,0,255,128,127,64,0,0,63,192,0,127,192,0,0,0,0,127,192,0,63,224,0,0,0,0,191,128,0,31,240,0,0,0,0,191,64,0,15,244,0,0,0,0,255,0,0,11,252,0,0,0,1,255,0,0,3,253,0,0,0,2,254,0,0,2,254,0,0,0,3,253,0,0,1,255,0,0,0,3,252,0,0,0,255,128,0,0,11,252,0,0,0,191,192,0,0,15,244,0,0,0,63,208,0,0,31,240,0,0,0,63,224,0,0,63,224,0,0,0,47,240,0,0,63,208,0,0,0,15,244,0,0,191,192,0,0,0,15,248,0,0,255,64,0,0,0,11,252,0,2,255,0,0,0,0,3,253,0,7,254,0,0,0,0,3,254,0,15,252,0,0,0,0,2,255,0,47,244,0,0,0,0,1,255,64,63,240,0,0,0,0,0,255,128,255,208,0,0,0,0,0,255,192,31,128,0,0,0,0,0,189,0,0,0,0,0,0,0,0,0,0, + // 0x30d2 ヒ + 210,48,25,31,217,38,8,255,85,64,0,0,0,0,0,255,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,184,0,191,64,0,0,7,252,0,191,64,0,1,191,253,0,191,64,0,47,255,254,0,191,64,27,255,255,208,0,191,70,255,255,249,0,0,191,255,255,255,64,0,0,191,255,255,208,0,0,0,191,255,228,0,0,0,0,191,249,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,128,0,0,0,0,0,127,228,0,0,1,107,128,63,255,255,255,255,255,128,47,255,255,255,255,255,128,11,255,255,255,255,255,128,0,107,255,255,254,165,0, + // 0x30d3 ビ + 211,48,29,34,16,38,6,254,0,0,0,0,0,0,36,0,0,0,0,0,0,0,252,0,0,0,0,0,0,180,190,0,106,128,0,0,1,252,63,0,127,192,0,0,0,189,31,128,63,192,0,0,0,63,15,192,63,192,0,0,0,47,129,0,63,192,0,0,0,15,64,0,63,192,0,0,0,4,0,0,63,192,0,0,0,124,0,0,63,192,0,0,7,252,0,0,63,192,0,1,191,254,0,0,63,192,0,47,255,254,0,0,63,192,27,255,255,224,0,0,63,198,255,255,253,0,0,0,63,255,255,255,128,0,0,0,63,255,255,224,0,0,0,0,63,255,244,0,0,0,0,0,63,249,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,244,0,0,0,91,208,0,47,255,255,255,255,255,208,0,15,255,255,255,255,255,208,0,3,255,255,255,255,255,208,0,0,107,255,255,255,169,64,0, + // 0x30d4 ピ + 212,48,30,33,8,38,6,254,0,0,0,0,0,1,253,0,0,0,0,0,0,11,255,128,42,128,0,0,0,31,71,208,127,192,0,0,0,61,1,224,63,192,0,0,0,60,0,240,63,192,0,0,0,61,1,224,63,192,0,0,0,31,71,208,63,192,0,0,0,15,255,128,63,192,0,0,0,125,253,0,63,192,0,0,7,252,0,0,63,192,0,0,191,254,0,0,63,192,0,31,255,255,0,0,63,192,11,255,255,224,0,0,63,198,255,255,253,0,0,0,63,255,255,255,128,0,0,0,63,255,255,228,0,0,0,0,63,255,248,0,0,0,0,0,63,249,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,244,0,0,0,91,208,0,47,255,255,255,255,255,208,0,15,255,255,255,255,255,208,0,3,255,255,255,255,255,208,0,0,107,255,255,255,169,64,0, + // 0x30d5 フ + 213,48,28,30,210,38,5,253,191,255,255,255,255,255,240,191,255,255,255,255,255,254,191,255,255,255,255,255,255,191,255,255,255,255,255,254,0,0,0,0,0,3,253,0,0,0,0,0,7,252,0,0,0,0,0,7,252,0,0,0,0,0,11,248,0,0,0,0,0,15,244,0,0,0,0,0,31,240,0,0,0,0,0,47,224,0,0,0,0,0,63,208,0,0,0,0,0,191,192,0,0,0,0,0,255,64,0,0,0,0,2,255,0,0,0,0,0,7,254,0,0,0,0,0,15,252,0,0,0,0,0,63,244,0,0,0,0,0,255,224,0,0,0,0,3,255,192,0,0,0,0,31,255,0,0,0,0,0,191,252,0,0,0,0,7,255,240,0,0,0,0,127,255,192,0,0,0,27,255,254,0,0,0,0,255,255,244,0,0,0,0,191,255,64,0,0,0,0,47,244,0,0,0,0,0,10,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x30d6 ブ + 214,48,33,36,68,38,4,253,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,129,248,0,0,0,0,0,0,11,208,252,0,0,0,0,0,0,3,240,127,0,0,0,0,0,0,2,248,63,64,0,0,0,0,0,0,252,31,128,0,0,0,0,0,0,190,9,0,191,255,255,255,255,255,248,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,11,252,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,7,254,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,63,244,0,0,0,0,0,0,0,255,224,0,0,0,0,0,0,7,255,128,0,0,0,0,0,0,31,255,0,0,0,0,0,0,0,255,252,0,0,0,0,0,0,11,255,224,0,0,0,0,0,1,191,255,128,0,0,0,0,0,111,255,253,0,0,0,0,0,0,255,255,224,0,0,0,0,0,0,63,254,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, + // 0x30d7 プ + 215,48,34,35,59,38,4,253,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,62,11,192,0,0,0,0,0,0,60,3,192,0,0,0,0,0,0,120,2,208,0,0,0,0,0,0,124,3,192,127,255,255,255,255,255,254,11,192,127,255,255,255,255,255,255,255,0,127,255,255,255,255,255,255,248,0,127,255,255,255,255,255,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,7,254,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,63,244,0,0,0,0,0,0,0,255,224,0,0,0,0,0,0,7,255,192,0,0,0,0,0,0,31,255,0,0,0,0,0,0,0,191,252,0,0,0,0,0,0,11,255,224,0,0,0,0,0,1,191,255,128,0,0,0,0,0,111,255,253,0,0,0,0,0,0,255,255,224,0,0,0,0,0,0,63,254,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, + // 0x30d8 ヘ + 216,48,34,24,216,38,2,0,0,0,0,189,0,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,63,255,252,0,0,0,0,0,0,191,255,255,0,0,0,0,0,1,255,130,255,192,0,0,0,0,7,254,0,191,240,0,0,0,0,15,252,0,47,252,0,0,0,0,63,240,0,15,254,0,0,0,0,255,208,0,3,255,128,0,0,2,255,128,0,0,255,224,0,0,11,255,0,0,0,63,248,0,0,47,252,0,0,0,31,253,0,0,191,244,0,0,0,7,255,64,0,63,224,0,0,0,2,255,208,0,15,192,0,0,0,0,191,240,0,7,64,0,0,0,0,63,252,0,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,1,255,240,0,0,0,0,0,0,0,127,224,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0, + // 0x30d9 ベ + 217,48,34,29,5,38,2,255,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,1,129,252,0,0,0,0,0,0,15,208,190,0,0,0,0,100,0,7,240,63,64,0,0,3,255,64,2,248,47,192,0,0,15,255,208,0,252,15,64,0,0,63,255,244,0,190,0,0,0,0,191,255,253,0,61,0,0,0,2,255,135,255,64,0,0,0,0,7,254,1,255,208,0,0,0,0,15,252,0,127,240,0,0,0,0,63,240,0,31,252,0,0,0,0,191,208,0,11,255,0,0,0,2,255,128,0,2,255,192,0,0,11,255,0,0,0,191,240,0,0,47,252,0,0,0,63,248,0,0,191,244,0,0,0,15,254,0,0,255,224,0,0,0,3,255,128,0,63,192,0,0,0,1,255,208,0,15,64,0,0,0,0,191,244,0,2,0,0,0,0,0,47,253,0,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,1,255,224,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0, + // 0x30da ペ + 218,48,34,29,5,38,2,255,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,191,252,0,0,0,0,0,0,1,248,126,0,0,0,0,0,0,3,224,15,0,0,0,0,184,0,3,192,15,64,0,0,3,255,64,3,192,15,64,0,0,15,255,208,3,208,15,0,0,0,63,255,244,1,244,127,0,0,0,191,255,253,0,191,252,0,0,2,255,135,255,64,31,224,0,0,7,254,1,255,208,0,0,0,0,15,252,0,127,240,0,0,0,0,63,240,0,31,252,0,0,0,0,191,208,0,11,255,0,0,0,2,255,128,0,2,255,192,0,0,11,255,0,0,0,191,240,0,0,47,252,0,0,0,63,248,0,0,191,244,0,0,0,15,254,0,0,255,224,0,0,0,3,255,128,0,63,192,0,0,0,1,255,208,0,15,64,0,0,0,0,191,244,0,2,0,0,0,0,0,47,253,0,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,1,255,224,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0, + // 0x30db ホ + 219,48,33,32,32,38,3,254,0,0,0,11,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,62,170,170,175,254,170,170,173,0,63,255,255,255,255,255,255,253,0,63,255,255,255,255,255,255,253,0,63,255,255,255,255,255,255,253,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,5,0,7,244,0,20,0,0,0,15,208,7,244,1,252,0,0,0,31,240,7,244,2,255,0,0,0,63,208,7,244,0,255,128,0,0,191,128,7,244,0,127,208,0,1,255,0,7,244,0,47,240,0,3,253,0,7,244,0,15,244,0,15,252,0,7,244,0,7,252,0,47,240,0,7,244,0,3,254,0,191,208,0,7,244,0,1,255,0,255,128,0,7,244,0,0,255,64,63,0,0,7,244,0,0,60,0,4,0,0,7,244,0,0,16,0,0,0,0,11,244,0,0,0,0,0,0,62,175,244,0,0,0,0,0,0,63,255,244,0,0,0,0,0,0,63,255,240,0,0,0,0,0,0,47,255,128,0,0,0,0, + // 0x30dc ボ + 220,48,35,34,50,38,2,253,0,0,0,0,0,0,0,47,0,0,0,0,2,168,0,125,31,128,0,0,0,3,252,0,63,11,208,0,0,0,3,252,0,47,131,240,0,0,0,3,252,0,15,194,244,0,0,0,3,252,0,7,224,128,0,0,0,3,252,0,2,64,0,0,0,0,3,252,0,0,0,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,26,170,170,171,254,170,170,170,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,3,64,3,252,0,44,0,0,0,11,244,3,252,1,255,0,0,0,31,240,3,252,0,255,128,0,0,63,208,3,252,0,127,192,0,0,191,192,3,252,0,47,240,0,1,255,0,3,252,0,15,244,0,3,254,0,3,252,0,7,252,0,15,252,0,3,252,0,3,254,0,47,240,0,3,252,0,1,255,0,191,224,0,3,252,0,0,191,192,127,192,0,3,252,0,0,63,64,15,0,0,3,252,0,0,40,0,0,0,0,3,252,0,0,0,0,0,0,16,7,252,0,0,0,0,0,0,47,255,252,0,0,0,0,0,0,47,255,248,0,0,0,0,0,0,47,255,240,0,0,0,0,0,0,5,170,64,0,0,0,0, + // 0x30dd ポ + 221,48,34,36,68,38,2,253,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,47,7,192,0,0,0,3,252,0,61,2,208,0,0,0,3,252,0,60,2,224,0,0,0,3,252,0,60,2,208,0,0,0,3,252,0,47,7,192,0,0,0,3,252,0,15,255,64,0,0,0,3,252,0,2,253,0,0,0,0,3,252,0,0,0,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,47,255,255,255,255,255,255,255,0,26,170,170,171,254,170,170,170,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,3,64,3,252,0,44,0,0,0,11,244,3,252,1,255,0,0,0,31,240,3,252,0,255,128,0,0,63,208,3,252,0,127,192,0,0,191,192,3,252,0,47,240,0,1,255,0,3,252,0,15,244,0,3,254,0,3,252,0,7,252,0,15,252,0,3,252,0,3,254,0,47,240,0,3,252,0,1,255,0,191,224,0,3,252,0,0,191,192,127,192,0,3,252,0,0,63,64,15,0,0,3,252,0,0,40,0,0,0,0,3,252,0,0,0,0,0,0,16,7,252,0,0,0,0,0,0,47,255,252,0,0,0,0,0,0,47,255,248,0,0,0,0,0,0,47,255,240,0,0,0,0,0,0,5,170,64,0,0,0,0, + // 0x30de マ + 222,48,33,30,14,38,3,253,0,0,0,0,0,0,0,16,0,127,255,255,255,255,255,255,248,0,127,255,255,255,255,255,255,255,0,127,255,255,255,255,255,255,255,64,127,170,170,170,170,170,175,254,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,191,224,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,15,253,0,0,0,0,64,0,0,47,248,0,0,0,2,224,0,0,191,240,0,0,0,15,252,0,2,255,192,0,0,0,31,255,0,11,255,0,0,0,0,3,255,208,47,252,0,0,0,0,0,191,244,255,240,0,0,0,0,0,47,255,255,192,0,0,0,0,0,11,255,255,0,0,0,0,0,0,1,255,252,0,0,0,0,0,0,0,127,248,0,0,0,0,0,0,0,31,253,0,0,0,0,0,0,0,7,255,64,0,0,0,0,0,0,2,255,208,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,0,248,0,0,0,0,0,0,0,0,80,0,0,0, + // 0x30df ミ + 223,48,25,31,217,38,6,254,0,126,64,0,0,0,0,0,191,255,144,0,0,0,0,255,255,255,228,0,0,1,191,255,255,255,228,0,0,0,111,255,255,255,128,0,0,0,91,255,255,128,0,0,0,0,27,255,64,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,144,0,0,0,0,0,7,255,228,0,0,0,0,15,255,255,249,0,0,0,15,255,255,255,248,0,0,0,27,255,255,255,224,0,0,0,22,255,255,244,0,0,0,0,6,255,240,0,0,0,0,0,27,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,64,0,0,0,0,0,127,254,64,0,0,0,0,255,255,255,144,0,0,0,255,255,255,255,128,0,0,6,191,255,255,254,64,0,0,1,191,255,255,253,0,0,0,0,191,255,255,0,0,0,0,1,191,253,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0, + // 0x30e0 ム + 224,48,34,32,32,38,2,253,0,0,0,47,224,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,240,0,0,16,0,0,0,0,47,240,0,2,240,0,0,0,0,63,208,0,15,248,0,0,0,0,63,192,0,7,253,0,0,0,0,127,192,0,2,255,0,0,0,0,255,64,0,0,255,64,0,0,0,255,0,0,0,191,192,0,0,1,255,0,0,0,63,208,0,0,3,253,0,0,0,47,240,0,0,3,252,0,0,0,31,248,0,0,11,252,0,21,175,255,252,0,0,15,254,191,255,255,255,254,0,127,255,255,255,255,255,255,255,0,63,255,255,255,255,255,234,255,128,63,255,255,255,169,64,0,255,192,63,254,149,0,0,0,0,127,208,20,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0, + // 0x30e1 メ + 225,48,30,31,248,38,4,254,0,0,0,0,0,2,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,11,252,0,0,0,0,0,0,15,244,0,0,0,0,0,0,31,240,0,0,0,0,0,0,63,224,0,0,10,0,0,0,63,208,0,0,47,208,0,0,191,192,0,0,127,248,0,0,255,64,0,0,47,255,64,2,255,0,0,0,7,255,224,3,253,0,0,0,0,191,252,11,252,0,0,0,0,31,255,95,244,0,0,0,0,3,255,255,224,0,0,0,0,0,191,255,192,0,0,0,0,0,31,255,128,0,0,0,0,0,7,255,208,0,0,0,0,0,15,255,248,0,0,0,0,0,63,255,254,0,0,0,0,0,255,215,255,192,0,0,0,3,255,129,255,240,0,0,0,15,254,0,127,252,0,0,0,127,248,0,15,255,0,0,2,255,224,0,3,255,192,0,15,255,128,0,0,255,208,0,127,254,0,0,0,127,128,7,255,244,0,0,0,30,0,63,255,192,0,0,0,4,0,127,254,0,0,0,0,0,0,31,224,0,0,0,0,0,0,3,64,0,0,0,0,0,0, + // 0x30e2 モ + 226,48,31,29,232,38,4,254,7,255,255,255,255,255,254,0,7,255,255,255,255,255,254,0,7,255,255,255,255,255,254,0,2,170,171,254,170,170,169,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,255,255,255,255,255,255,255,248,255,255,255,255,255,255,255,248,255,255,255,255,255,255,255,248,170,170,171,254,170,170,170,164,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,253,0,0,0,0,0,0,3,255,128,0,5,64,0,0,2,255,255,255,255,208,0,0,0,255,255,255,255,208,0,0,0,127,255,255,255,208,0,0,0,6,191,255,234,128, + // 0x30e3 ャ + 227,48,28,28,196,38,5,251,0,1,176,0,0,0,0,0,15,240,0,0,0,0,0,11,244,0,0,0,0,0,3,248,0,0,0,0,0,3,252,0,0,6,248,0,2,252,0,27,255,255,0,1,254,111,255,255,254,0,6,255,255,255,255,252,43,255,255,255,250,75,244,127,255,255,249,0,31,240,63,255,255,128,0,63,192,63,144,63,192,0,255,64,0,0,47,192,2,254,0,0,0,31,208,11,252,0,0,0,15,224,47,240,0,0,0,15,240,47,208,0,0,0,11,244,2,64,0,0,0,7,248,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,2,253,0,0,0,0,0,1,254,0,0,0,0,0,0,255,0,0,0,0,0,0,255,64,0,0,0,0,0,127,128,0,0,0,0,0,127,192,0,0,0,0,0,62,64,0,0,0,0,0,0,0,0,0, + // 0x30e4 ヤ + 228,48,33,33,41,38,2,253,0,0,109,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,0,255,0,0,0,0,4,0,0,0,191,128,0,0,6,254,0,0,0,127,192,0,91,255,255,192,0,0,63,193,175,255,255,255,128,0,0,63,255,255,255,255,255,0,0,27,255,255,255,255,147,254,0,191,255,255,255,254,64,11,252,0,191,255,255,249,0,0,31,240,0,127,255,239,244,0,0,63,224,0,63,144,11,248,0,0,255,192,0,0,0,3,252,0,2,255,0,0,0,0,3,253,0,11,253,0,0,0,0,2,254,0,47,248,0,0,0,0,1,255,0,191,224,0,0,0,0,0,255,0,127,192,0,0,0,0,0,255,64,7,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,1,64,0,0,0,0, + // 0x30e5 ュ + 229,48,28,20,140,38,5,255,0,255,255,255,255,244,0,0,255,255,255,255,252,0,0,255,255,255,255,252,0,0,170,170,170,175,252,0,0,0,0,0,7,252,0,0,0,0,0,7,248,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,31,240,0,0,0,0,0,31,224,0,0,0,0,0,47,208,0,0,0,0,0,47,208,0,0,0,0,0,63,192,0,127,255,255,255,255,255,254,127,255,255,255,255,255,254,127,255,255,255,255,255,254,106,170,170,170,170,170,169, + // 0x30e6 ユ + 230,48,32,26,208,38,3,0,0,255,255,255,255,255,208,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,248,0,0,0,0,0,0,15,248,0,0,0,0,0,0,15,244,0,0,0,0,0,0,15,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,47,224,0,0,0,0,0,0,47,224,0,0,0,0,0,0,63,208,0,0,0,0,0,0,63,208,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,191,128,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0, + // 0x30e7 ョ + 231,48,22,25,150,38,8,252,85,85,85,85,85,80,191,255,255,255,255,224,191,255,255,255,255,224,191,255,255,255,255,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,21,85,85,85,95,224,63,255,255,255,255,224,63,255,255,255,255,224,63,255,255,255,255,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,0,0,0,0,15,224,255,255,255,255,255,224,255,255,255,255,255,224,255,255,255,255,255,224,170,85,85,85,111,224,0,0,0,0,15,224,0,0,0,0,0,0, + // 0x30e8 ヨ + 232,48,27,29,203,38,5,254,42,170,170,170,170,170,168,63,255,255,255,255,255,252,63,255,255,255,255,255,252,63,255,255,255,255,255,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,10,170,170,170,170,171,252,11,255,255,255,255,255,252,11,255,255,255,255,255,252,11,255,255,255,255,255,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,126,170,170,170,170,175,252,127,255,255,255,255,255,252,127,255,255,255,255,255,252,127,255,255,255,255,255,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252, + // 0x30e9 ラ + 233,48,29,32,0,38,5,253,1,170,170,170,170,170,160,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,1,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,253,0,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,64,170,170,170,170,170,171,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,3,253,0,0,0,0,0,0,11,252,0,0,0,0,0,0,15,244,0,0,0,0,0,0,47,240,0,0,0,0,0,0,63,208,0,0,0,0,0,0,255,192,0,0,0,0,0,3,255,0,0,0,0,0,0,15,253,0,0,0,0,0,0,127,248,0,0,0,0,0,2,255,224,0,0,0,0,0,31,255,128,0,0,0,0,1,255,253,0,0,0,0,0,111,255,240,0,0,0,0,11,255,255,128,0,0,0,0,3,255,248,0,0,0,0,0,0,255,128,0,0,0,0,0,0,32,0,0,0,0,0, + // 0x30ea リ + 234,48,22,31,186,38,8,254,170,0,0,0,47,240,255,0,0,0,31,240,255,0,0,0,31,240,255,0,0,0,31,240,255,0,0,0,31,240,255,0,0,0,31,240,255,0,0,0,31,240,255,0,0,0,31,240,255,0,0,0,31,240,255,0,0,0,31,240,255,0,0,0,31,240,255,0,0,0,31,240,255,0,0,0,31,224,255,0,0,0,31,224,255,0,0,0,31,224,255,0,0,0,47,224,255,0,0,0,63,208,255,0,0,0,63,208,255,64,0,0,63,192,0,0,0,0,191,192,0,0,0,0,255,128,0,0,0,2,255,0,0,0,0,7,254,0,0,0,0,31,252,0,0,0,0,127,244,0,0,0,3,255,224,0,0,0,111,255,64,0,0,11,255,253,0,0,0,15,255,240,0,0,0,3,255,64,0,0,0,0,228,0,0,0, + // 0x30eb ル + 235,48,35,30,14,38,2,254,0,1,254,0,31,240,0,0,0,0,1,254,0,31,240,0,0,0,0,1,254,0,15,240,0,0,0,0,1,254,0,15,240,0,0,0,0,1,254,0,15,240,0,0,0,0,1,254,0,15,240,0,0,0,0,1,254,0,15,240,0,0,0,0,1,254,0,15,240,0,0,0,0,1,254,0,15,240,0,0,0,0,1,253,0,15,240,0,0,0,0,1,253,0,15,240,0,0,0,0,1,253,0,15,240,0,0,0,0,2,253,0,15,240,0,0,0,0,2,253,0,15,240,0,0,0,0,2,252,0,15,240,0,0,0,0,3,252,0,15,240,0,0,64,0,3,252,0,15,240,0,3,192,0,3,252,0,15,240,0,11,224,0,7,248,0,15,240,0,47,244,0,15,244,0,15,240,0,191,224,0,15,240,0,15,240,2,255,128,0,47,224,0,15,240,15,255,0,0,127,208,0,15,240,127,248,0,0,255,192,0,15,247,255,224,0,2,255,0,0,15,255,255,128,0,11,254,0,0,15,255,253,0,0,47,252,0,0,31,255,224,0,0,191,240,0,0,31,255,64,0,0,47,208,0,0,11,244,0,0,0,3,0,0,0,2,128,0,0,0, + // 0x30ec レ + 236,48,27,30,210,38,8,254,255,128,0,0,0,0,0,255,128,0,0,0,0,0,191,128,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,0,191,64,0,0,0,0,192,191,64,0,0,0,3,224,191,64,0,0,0,15,244,191,64,0,0,0,63,248,191,64,0,0,0,255,224,191,64,0,0,11,255,128,191,64,0,0,63,254,0,191,64,0,1,255,248,0,191,64,0,31,255,208,0,191,64,0,191,254,0,0,191,64,11,255,244,0,0,191,65,255,255,128,0,0,191,175,255,248,0,0,0,191,255,255,128,0,0,0,255,255,249,0,0,0,0,191,255,64,0,0,0,0,47,224,0,0,0,0,0,5,0,0,0,0,0,0, + // 0x30ed ロ + 237,48,28,28,196,38,5,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,255,255,64,0,0,0,0,255,0,0,0,0,0,0,0, + // 0x30ee ヮ + 238,48,25,26,182,38,7,251,149,85,85,85,85,168,0,255,255,255,255,255,255,64,255,255,255,255,255,255,128,255,255,255,255,255,255,64,255,0,0,0,0,255,0,255,0,0,0,0,255,0,255,0,0,0,1,255,0,255,0,0,0,1,254,0,255,0,0,0,2,253,0,255,0,0,0,3,252,0,255,0,0,0,7,252,0,255,0,0,0,11,248,0,0,0,0,0,15,240,0,0,0,0,0,47,240,0,0,0,0,0,127,208,0,0,0,0,0,255,128,0,0,0,0,3,255,0,0,0,0,0,15,253,0,0,0,0,0,127,244,0,0,0,0,2,255,224,0,0,0,0,47,255,64,0,0,0,7,255,253,0,0,0,0,31,255,224,0,0,0,0,7,255,64,0,0,0,0,1,244,0,0,0,0,0,0,0,0,0,0,0, + // 0x30ef ワ + 239,48,30,30,240,38,4,253,126,170,170,170,170,170,254,0,127,255,255,255,255,255,255,192,63,255,255,255,255,255,255,224,63,255,255,255,255,255,255,192,63,192,0,0,0,0,127,192,63,192,0,0,0,0,191,192,63,192,0,0,0,0,191,128,63,192,0,0,0,0,255,128,63,192,0,0,0,0,255,64,63,192,0,0,0,0,255,0,63,192,0,0,0,1,255,0,63,192,0,0,0,3,254,0,127,192,0,0,0,3,253,0,127,192,0,0,0,7,252,0,0,0,0,0,0,15,248,0,0,0,0,0,0,31,244,0,0,0,0,0,0,63,240,0,0,0,0,0,0,191,208,0,0,0,0,0,2,255,192,0,0,0,0,0,7,255,0,0,0,0,0,0,31,253,0,0,0,0,0,0,191,248,0,0,0,0,0,3,255,224,0,0,0,0,0,47,255,64,0,0,0,0,2,255,253,0,0,0,0,0,111,255,244,0,0,0,0,2,255,255,128,0,0,0,0,0,191,252,0,0,0,0,0,0,47,128,0,0,0,0,0,0,4,0,0,0,0,0, + // 0x30f0 ヰ + 240,48,32,33,8,38,3,253,0,0,0,0,0,85,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,26,170,170,170,170,255,170,168,31,255,255,255,255,255,255,252,31,255,255,255,255,255,255,252,31,255,255,255,255,255,255,252,0,0,255,0,0,255,0,0,0,0,255,0,0,255,0,0,0,0,255,0,0,255,0,0,0,0,255,0,0,255,0,0,0,0,255,0,0,255,0,0,0,0,255,0,0,255,0,0,0,0,255,0,0,255,0,0,0,0,255,0,0,255,0,0,0,0,255,0,0,255,0,0,0,0,255,0,0,255,0,0,186,170,255,170,170,255,170,175,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,85,0,0, + // 0x30f1 ヱ + 241,48,33,27,243,38,3,255,15,255,255,255,255,255,255,248,0,15,255,255,255,255,255,255,254,0,15,255,255,255,255,255,255,252,0,15,250,170,170,170,170,191,244,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,63,208,0,0,0,0,21,64,0,255,128,0,0,0,0,63,224,2,255,0,0,0,0,0,63,224,15,252,0,0,0,0,0,47,208,63,244,0,0,0,0,0,47,208,255,224,0,0,0,0,0,47,208,127,128,0,0,0,0,0,47,208,14,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0, + // 0x30f2 ヲ + 242,48,28,30,210,38,6,253,255,255,255,255,255,255,240,255,255,255,255,255,255,253,255,255,255,255,255,255,254,250,170,170,170,170,171,252,0,0,0,0,0,7,252,0,0,0,0,0,7,248,0,0,0,0,0,11,244,0,0,0,0,0,15,244,0,0,0,0,0,15,240,0,0,0,0,0,31,240,63,255,255,255,255,255,224,63,255,255,255,255,255,192,63,255,255,255,255,255,192,42,170,170,170,170,255,128,0,0,0,0,0,255,0,0,0,0,0,2,254,0,0,0,0,0,7,252,0,0,0,0,0,15,248,0,0,0,0,0,63,240,0,0,0,0,0,255,208,0,0,0,0,3,255,128,0,0,0,0,31,254,0,0,0,0,0,127,248,0,0,0,0,7,255,224,0,0,0,0,127,255,128,0,0,0,27,255,252,0,0,0,0,255,255,224,0,0,0,0,127,254,0,0,0,0,0,31,224,0,0,0,0,0,5,0,0,0,0,0, + // 0x30f3 ン + 243,48,30,30,240,38,5,254,2,128,0,0,0,0,0,0,11,240,0,0,0,0,0,0,31,253,0,0,0,0,0,0,31,255,64,0,0,0,0,0,3,255,224,0,0,0,0,0,0,191,252,0,0,0,0,0,0,31,255,0,0,0,1,64,0,7,255,192,0,0,3,192,0,0,255,192,0,0,11,224,0,0,63,0,0,0,15,240,0,0,12,0,0,0,63,240,0,0,0,0,0,0,191,208,0,0,0,0,0,1,255,128,0,0,0,0,0,7,255,0,0,0,0,0,0,31,253,0,0,0,0,0,0,127,244,0,0,0,0,0,1,255,224,0,0,0,0,0,11,255,128,0,0,0,0,0,63,254,0,0,0,0,0,1,255,248,0,0,0,0,0,11,255,208,0,0,0,0,0,191,255,0,0,0,0,0,11,255,248,0,0,0,0,1,255,255,208,0,0,0,1,191,255,254,0,0,0,0,191,255,255,224,0,0,0,0,127,255,254,0,0,0,0,0,47,255,144,0,0,0,0,0,15,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30f4 ヴ + 244,48,32,36,32,38,4,252,0,0,0,0,0,0,3,240,0,0,0,0,0,6,194,244,0,0,1,255,0,11,224,252,0,0,0,255,0,3,240,190,0,0,0,255,0,1,248,63,0,0,0,255,0,0,252,24,0,0,0,255,0,0,120,0,0,0,0,255,0,0,0,0,170,170,170,255,170,170,173,0,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,128,255,0,0,0,0,0,255,64,255,0,0,0,0,0,255,0,255,0,0,0,0,1,255,0,255,0,0,0,0,2,255,0,255,0,0,0,0,3,254,0,255,0,0,0,0,3,253,0,255,0,0,0,0,7,252,0,255,0,0,0,0,15,248,0,255,0,0,0,0,15,244,0,0,0,0,0,0,47,240,0,0,0,0,0,0,127,208,0,0,0,0,0,0,255,192,0,0,0,0,0,3,255,64,0,0,0,0,0,11,254,0,0,0,0,0,0,63,252,0,0,0,0,0,0,255,240,0,0,0,0,0,11,255,192,0,0,0,0,0,191,255,0,0,0,0,0,27,255,252,0,0,0,0,3,255,255,208,0,0,0,0,2,255,254,0,0,0,0,0,0,191,224,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30f5 ヵ + 245,48,25,28,196,38,6,252,0,0,5,64,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,208,0,0,0,0,0,31,192,0,0,0,41,85,111,229,85,100,0,127,255,255,255,255,255,64,127,255,255,255,255,255,64,127,255,255,255,255,255,64,0,0,63,192,0,63,64,0,0,63,128,0,63,64,0,0,63,64,0,127,64,0,0,127,0,0,127,0,0,0,191,0,0,127,0,0,0,254,0,0,127,0,0,1,253,0,0,191,0,0,3,252,0,0,191,0,0,11,248,0,0,255,0,0,15,240,0,0,254,0,0,63,224,0,0,254,0,0,191,192,0,1,253,0,2,255,0,0,2,252,0,15,253,0,58,155,252,0,191,248,0,63,255,248,0,127,224,0,63,255,240,0,15,64,0,47,255,128,0,0,0,0,0,0,0,0, + // 0x30f6 ヶ + 246,48,28,28,196,38,5,251,0,2,232,0,0,0,0,0,2,254,0,0,0,0,0,3,252,0,0,0,0,0,7,252,0,0,0,0,0,11,244,0,0,0,0,0,15,240,0,0,0,0,0,47,255,255,255,255,254,0,63,255,255,255,255,254,0,191,255,255,255,255,254,1,255,85,86,254,85,85,3,253,0,2,252,0,0,15,248,0,2,252,0,0,63,240,0,3,252,0,0,255,192,0,3,248,0,0,255,64,0,7,248,0,0,29,0,0,15,244,0,0,0,0,0,15,240,0,0,0,0,0,47,208,0,0,0,0,0,63,192,0,0,0,0,0,255,128,0,0,0,0,2,255,0,0,0,0,0,11,253,0,0,0,0,0,47,248,0,0,0,0,0,255,240,0,0,0,0,11,255,192,0,0,0,0,3,255,0,0,0,0,0,0,184,0,0,0,0,0,0,0,0,0,0,0, + // 0x30f7 ヷ + 247,48,32,37,40,38,4,252,0,0,0,0,0,0,0,144,0,0,0,0,0,6,67,240,0,0,0,0,0,31,194,248,0,0,0,0,0,15,208,252,0,0,0,0,0,3,240,190,0,0,0,0,0,2,244,36,0,0,0,0,0,0,128,0,250,170,170,170,170,170,248,0,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,64,255,0,0,0,0,0,255,0,255,0,0,0,0,1,255,0,255,0,0,0,0,1,255,0,255,0,0,0,0,2,254,0,255,0,0,0,0,3,254,0,255,0,0,0,0,3,253,0,255,0,0,0,0,7,252,0,255,0,0,0,0,11,252,0,255,0,0,0,0,15,248,0,255,0,0,0,0,31,240,0,0,0,0,0,0,47,240,0,0,0,0,0,0,63,208,0,0,0,0,0,0,191,192,0,0,0,0,0,2,255,64,0,0,0,0,0,7,255,0,0,0,0,0,0,15,253,0,0,0,0,0,0,127,244,0,0,0,0,0,1,255,224,0,0,0,0,0,11,255,192,0,0,0,0,0,127,254,0,0,0,0,0,7,255,248,0,0,0,0,1,191,255,208,0,0,0,0,7,255,254,0,0,0,0,0,1,255,244,0,0,0,0,0,0,191,64,0,0,0,0,0,0,16,0,0,0,0,0, + // 0x30f8 ヸ + 248,48,33,35,59,38,3,253,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,5,47,0,0,0,0,0,0,85,31,15,64,0,0,0,0,1,254,15,75,192,0,0,0,0,1,254,11,199,192,0,0,0,0,1,254,3,195,128,0,0,0,0,1,254,3,208,0,0,0,0,0,1,254,0,0,0,42,170,170,170,170,255,170,164,0,47,255,255,255,255,255,255,248,0,47,255,255,255,255,255,255,248,0,47,255,255,255,255,255,255,248,0,0,1,253,0,1,254,0,0,0,0,1,253,0,1,254,0,0,0,0,1,253,0,1,254,0,0,0,0,1,253,0,1,254,0,0,0,0,1,253,0,1,254,0,0,0,0,1,253,0,1,254,0,0,0,0,1,253,0,1,254,0,0,0,0,1,253,0,1,254,0,0,0,0,1,253,0,1,254,0,0,0,0,1,253,0,1,254,0,0,0,0,1,253,0,1,254,0,0,0,255,255,255,255,255,255,255,254,0,255,255,255,255,255,255,255,254,0,255,255,255,255,255,255,255,254,0,234,170,170,170,171,255,170,169,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,169,0,0,0, + // 0x30f9 ヹ + 249,48,34,34,50,38,2,254,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,184,63,64,0,0,0,0,0,0,252,15,192,0,0,0,0,0,0,127,15,208,0,0,0,0,0,0,63,7,208,0,0,0,0,0,0,31,64,0,0,0,0,0,0,0,4,16,0,7,255,255,255,255,255,255,252,0,7,255,255,255,255,255,255,255,0,7,255,255,255,255,255,255,254,0,7,250,170,170,170,170,175,252,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,47,240,0,0,0,0,5,80,0,127,192,0,0,0,0,31,240,1,255,64,0,0,0,0,15,240,7,254,0,0,0,0,0,15,240,31,252,0,0,0,0,0,15,240,127,240,0,0,0,0,0,15,240,63,192,0,0,0,0,0,15,240,11,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,127,255,255,255,255,255,255,255,192,127,255,255,255,255,255,255,255,192,127,255,255,255,255,255,255,255,192,127,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0, + // 0x30fa ヺ + 250,48,32,37,40,38,4,252,0,0,0,0,0,0,0,144,0,0,0,0,0,6,67,240,0,0,0,0,0,31,194,248,0,0,0,0,0,15,208,252,0,0,0,0,0,7,240,190,0,0,0,0,0,3,244,36,0,0,0,0,0,1,144,0,191,255,255,255,255,255,248,0,191,255,255,255,255,255,255,0,191,255,255,255,255,255,255,0,126,170,170,170,170,171,255,0,0,0,0,0,0,2,254,0,0,0,0,0,0,3,253,0,0,0,0,0,0,3,252,0,0,0,0,0,0,7,252,0,0,0,0,0,0,11,248,0,0,0,0,0,0,15,244,0,47,255,255,255,255,255,240,0,47,255,255,255,255,255,240,0,47,255,255,255,255,255,224,0,26,170,170,170,170,191,192,0,0,0,0,0,0,191,192,0,0,0,0,0,0,255,64,0,0,0,0,0,2,255,0,0,0,0,0,0,11,253,0,0,0,0,0,0,31,248,0,0,0,0,0,0,63,240,0,0,0,0,0,1,255,192,0,0,0,0,0,11,255,64,0,0,0,0,0,47,253,0,0,0,0,0,2,255,244,0,0,0,0,0,31,255,208,0,0,0,0,6,255,254,0,0,0,0,0,127,255,244,0,0,0,0,0,63,255,128,0,0,0,0,0,15,248,0,0,0,0,0,0,2,64,0,0,0,0,0, + // 0x30fb ・ + 251,48,10,9,27,38,14,10,1,164,0,15,255,0,63,255,192,63,255,192,127,255,208,63,255,192,63,255,192,31,255,0,2,248,0, + // 0x30fc ー + 252,48,32,6,48,38,3,11,21,85,85,85,85,85,85,84,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,0,0,0,0,0,0,0,0, + // 0x30fd ヽ + 253,48,18,19,95,38,11,3,10,0,0,0,0,63,128,0,0,0,255,224,0,0,0,127,248,0,0,0,31,254,0,0,0,7,255,128,0,0,1,255,224,0,0,0,127,248,0,0,0,31,254,0,0,0,7,255,64,0,0,1,255,208,0,0,0,191,240,0,0,0,47,252,0,0,0,15,255,0,0,0,3,255,128,0,0,1,255,208,0,0,0,191,208,0,0,0,63,0,0,0,0,8,0, + // 0x30fe ヾ + 254,48,21,24,144,38,10,3,0,0,0,2,240,0,0,0,1,66,248,0,0,0,15,192,252,0,0,0,11,240,127,0,0,0,3,244,63,64,5,0,1,252,31,64,47,128,0,254,4,0,255,224,0,56,0,0,191,248,0,0,0,0,31,254,0,0,0,0,7,255,128,0,0,0,1,255,224,0,0,0,0,127,248,0,0,0,0,31,253,0,0,0,0,7,255,64,0,0,0,2,255,208,0,0,0,0,191,240,0,0,0,0,63,252,0,0,0,0,15,255,0,0,0,0,3,255,128,0,0,0,1,255,208,0,0,0,0,191,208,0,0,0,0,63,0,0,0,0,0,8,0,0, + // 0x30ff ヿ + 255,48,23,33,198,38,7,253,106,170,170,170,170,168,191,255,255,255,255,252,191,255,255,255,255,252,191,255,255,255,255,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252, + // 0x4eee 仮 + 238,78,36,36,68,38,1,252,0,0,36,0,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,255,15,255,255,255,255,248,0,1,254,15,255,255,255,255,248,0,2,252,15,255,255,255,255,248,0,7,248,15,245,85,85,85,80,0,15,240,15,224,0,0,0,0,0,31,224,15,224,0,0,0,0,0,63,192,15,224,0,0,0,0,0,255,192,15,224,0,0,0,0,2,255,192,15,224,0,0,0,0,7,255,192,15,224,0,0,0,0,15,255,192,15,255,255,255,255,224,63,255,192,15,255,255,255,255,240,255,239,192,15,255,255,255,255,240,191,111,192,15,255,213,85,95,224,61,47,192,15,255,208,0,31,208,40,47,192,15,239,224,0,47,192,0,47,192,15,231,240,0,63,128,0,47,192,15,211,244,0,127,64,0,47,192,15,210,252,0,191,0,0,47,192,15,208,254,1,254,0,0,47,192,31,192,255,3,252,0,0,47,192,31,192,63,135,248,0,0,47,192,47,192,47,223,240,0,0,47,192,63,128,15,255,208,0,0,47,192,63,128,7,255,192,0,0,47,192,127,0,3,255,64,0,0,47,192,191,0,7,255,192,0,0,47,192,254,0,47,255,244,0,0,47,193,253,0,255,239,254,0,0,47,195,252,11,255,131,255,208,0,47,199,248,127,253,0,255,253,0,47,207,240,191,244,0,47,253,0,47,195,224,63,128,0,2,248,0,31,128,128,24,0,0,0,96, + // 0x540d 名 + 13,84,33,36,68,38,1,252,0,0,0,122,64,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,15,255,255,255,248,0,0,0,0,63,255,255,255,254,0,0,0,0,255,255,255,255,252,0,0,0,3,255,64,0,7,248,0,0,0,15,252,0,0,15,240,0,0,0,127,244,0,0,47,224,0,0,2,255,253,0,0,63,192,0,0,31,255,255,128,0,255,64,0,0,127,248,255,224,2,255,0,0,0,47,208,47,252,11,252,0,0,0,11,0,11,255,31,244,0,0,0,0,0,1,255,255,208,0,0,0,0,0,0,127,255,128,0,0,0,0,0,0,31,254,0,0,0,0,0,0,0,63,248,0,0,0,0,0,0,1,255,255,255,255,255,128,0,0,11,255,255,255,255,255,128,0,0,191,255,255,255,255,255,128,0,11,255,252,0,0,0,63,128,0,191,255,248,0,0,0,63,128,31,255,247,248,0,0,0,63,128,127,255,67,248,0,0,0,63,128,47,248,3,248,0,0,0,63,128,14,64,3,248,0,0,0,63,128,0,0,3,248,0,0,0,63,128,0,0,3,248,0,0,0,63,128,0,0,3,248,0,0,0,63,128,0,0,3,255,255,255,255,255,128,0,0,3,255,255,255,255,255,128,0,0,3,255,255,255,255,255,128,0,0,3,252,0,0,0,63,128,0,0,2,248,0,0,0,63,128, + // 0x5b9a 定 + 154,91,35,37,77,38,1,251,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,5,85,85,85,255,85,85,85,80,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,224,0,0,0,0,0,11,240,15,224,0,0,0,0,0,11,240,15,224,0,0,0,0,0,11,240,15,224,0,0,0,0,0,11,240,15,226,255,255,255,255,255,139,240,5,66,255,255,255,255,255,133,80,0,2,255,255,255,255,255,128,0,0,1,85,85,255,85,85,64,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,2,164,0,255,0,0,0,0,0,3,248,0,255,0,0,0,0,0,3,244,0,255,0,0,0,0,0,7,244,0,255,255,255,248,0,0,11,240,0,255,255,255,248,0,0,15,240,0,255,255,255,248,0,0,15,244,0,255,85,85,80,0,0,31,252,0,255,0,0,0,0,0,63,253,0,255,0,0,0,0,0,63,255,0,255,0,0,0,0,0,191,191,192,255,0,0,0,0,0,255,31,244,255,0,0,0,0,3,253,11,255,255,0,0,0,0,11,252,2,255,255,64,0,0,0,47,244,0,191,255,255,255,255,252,127,224,0,11,255,255,255,255,248,47,192,0,0,127,255,255,255,244,11,0,0,0,0,85,85,85,80,0,0,0,0,0,0,0,0,0, + // 0x7247 片 + 71,114,32,37,40,38,2,251,0,0,0,0,7,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,234,170,170,170,170,170,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,0,0,0,0,0,0,0,191,170,170,170,170,168,0,0,191,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,254,0,0,0,3,252,0,1,254,0,0,0,3,252,0,2,253,0,0,0,3,252,0,3,252,0,0,0,3,252,0,7,252,0,0,0,3,252,0,11,244,0,0,0,3,252,0,15,240,0,0,0,3,252,0,47,224,0,0,0,3,252,0,127,192,0,0,0,3,252,0,255,128,0,0,0,3,252,0,255,0,0,0,0,3,252,0,61,0,0,0,0,3,252,0,24,0,0,0,0,3,252,0,0,0,0,0,0,0,0,0, + // 0x793a 示 + 58,121,34,33,41,38,2,252,1,255,255,255,255,255,255,240,0,1,255,255,255,255,255,255,240,0,1,255,255,255,255,255,255,240,0,0,85,85,85,85,85,85,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,85,85,85,87,253,85,85,85,80,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,15,128,3,252,0,29,0,0,0,31,240,3,252,0,255,0,0,0,47,208,3,252,0,191,128,0,0,63,192,3,252,0,63,208,0,0,191,128,3,252,0,31,240,0,1,255,0,3,252,0,11,248,0,3,253,0,3,252,0,3,252,0,11,252,0,3,252,0,2,254,0,31,244,0,3,252,0,0,255,0,63,224,0,3,252,0,0,191,128,255,192,0,3,252,0,0,63,192,255,0,0,3,252,0,0,47,208,45,0,0,3,252,0,0,30,0,0,0,63,255,252,0,0,0,0,0,0,63,255,248,0,0,0,0,0,0,31,255,240,0,0,0,0,0,0,10,169,0,0,0,0,0, + // 0x7fa9 義 + 169,127,35,36,68,38,2,252,0,0,40,0,0,3,144,0,0,0,1,254,0,0,7,248,0,0,0,0,255,0,0,15,240,0,0,0,0,63,128,0,47,192,0,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,10,170,170,171,254,170,170,170,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,170,170,171,254,170,170,160,0,0,0,0,3,248,0,0,0,0,191,255,255,255,255,255,255,255,224,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,25,0,0,16,0,0,0,5,175,255,15,224,62,0,0,63,255,255,255,139,224,255,224,0,47,234,255,144,7,240,47,253,0,0,0,253,0,7,240,2,253,0,0,0,253,0,3,240,0,36,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,170,170,255,170,171,254,170,170,160,0,0,253,0,0,253,1,224,0,0,0,253,1,80,255,7,252,0,90,175,255,255,224,191,95,240,0,255,255,255,255,224,63,255,192,0,191,255,254,84,0,47,255,0,64,16,0,253,0,0,127,248,1,224,0,0,253,0,7,255,253,1,244,0,0,253,1,191,255,255,151,240,2,171,253,15,255,224,191,255,240,2,255,252,11,254,0,31,255,208,1,255,224,3,128,0,1,255,64, + // 0x8868 表 + 104,136,36,36,68,38,1,252,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,127,255,255,255,255,255,255,0,0,127,255,255,255,255,255,255,0,0,127,255,255,255,255,255,254,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,47,255,255,255,255,255,255,255,244,47,255,255,255,255,255,255,255,244,47,255,255,255,255,255,255,255,244,0,0,0,47,255,240,0,0,0,0,0,1,255,199,240,0,10,0,0,0,11,255,3,248,0,47,192,0,0,191,244,2,252,0,255,208,0,11,255,192,0,254,7,255,0,1,255,255,192,0,191,47,248,0,111,255,255,192,0,127,255,208,0,127,254,47,192,0,47,254,0,0,31,224,47,192,0,15,244,0,0,9,0,47,192,0,7,252,0,0,0,0,47,192,0,18,255,64,0,0,0,47,192,27,240,255,208,0,0,0,47,239,255,240,63,252,0,0,0,127,255,255,240,15,255,128,0,111,255,255,249,0,2,255,253,0,191,255,249,0,0,0,127,252,0,63,249,0,0,0,0,11,244,0,41,0,0,0,0,0,0,96, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Korean_28.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Korean_28.cpp new file mode 100644 index 0000000000..462639e540 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Korean_28.cpp @@ -0,0 +1,252 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Korean 38pt, capital 'A' height: 28px, width: 100%, range: 0xac70-0xd788, glyphs: 110 +extern const uint8_t NotoSans_Medium_Korean_28[14631] = { + 162,28,112,172,136,215,37,246, // unifont_t + // 0xac70 거 + 112,172,29,36,32,35,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,47,255,255,255,192,0,191,64,47,255,255,255,192,0,191,64,47,255,255,255,192,0,191,64,0,0,0,63,192,0,191,64,0,0,0,63,192,0,191,64,0,0,0,63,192,0,191,64,0,0,0,127,128,0,191,64,0,0,0,127,64,0,191,64,0,0,0,191,0,0,191,64,0,0,0,255,0,0,191,64,0,0,1,254,0,0,191,64,0,0,3,253,63,255,255,64,0,0,7,252,63,255,255,64,0,0,15,244,63,255,255,64,0,0,47,240,0,0,191,64,0,0,127,208,0,0,191,64,0,0,255,128,0,0,191,64,0,3,255,0,0,0,191,64,0,31,252,0,0,0,191,64,0,127,240,0,0,0,191,64,3,255,208,0,0,0,191,64,47,255,0,0,0,0,191,64,255,248,0,0,0,0,191,64,191,208,0,0,0,0,191,64,62,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64, + // 0xace0 고 + 224,172,31,28,224,35,2,0,3,255,255,255,255,255,254,0,3,255,255,255,255,255,254,0,3,255,255,255,255,255,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,253,0,0,0,0,0,0,2,253,0,0,0,0,84,0,2,253,0,0,0,2,253,0,2,252,0,0,0,2,253,0,3,252,0,0,0,2,253,0,3,252,0,0,0,2,253,0,3,252,0,0,0,2,253,0,3,252,0,0,0,2,253,0,7,248,0,0,0,2,253,0,11,244,0,0,0,2,253,0,6,244,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xadf8 그 + 248,173,31,27,216,35,2,1,3,255,255,255,255,255,252,0,3,255,255,255,255,255,252,0,3,255,255,255,255,255,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,244,0,0,0,0,0,0,11,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252, + // 0xae09 급 + 9,174,31,34,16,35,2,252,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,11,244,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,0,0,0,3,252,0,0,254,0,0,0,3,252,0,0,254,0,0,0,3,252,0,0,254,0,0,0,3,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,254,0,0,0,3,252,0,0,254,0,0,0,3,252,0,0,254,0,0,0,3,252,0,0,254,0,0,0,3,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0, + // 0xae30 기 + 48,174,28,36,252,35,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,15,255,255,255,240,0,191,15,255,255,255,240,0,191,15,255,255,255,240,0,191,0,0,0,15,240,0,191,0,0,0,15,240,0,191,0,0,0,15,224,0,191,0,0,0,31,208,0,191,0,0,0,47,208,0,191,0,0,0,63,192,0,191,0,0,0,127,128,0,191,0,0,0,191,64,0,191,0,0,0,255,0,0,191,0,0,3,254,0,0,191,0,0,7,252,0,0,191,0,0,15,248,0,0,191,0,0,63,240,0,0,191,0,0,255,192,0,0,191,0,3,255,64,0,0,191,0,15,254,0,0,0,191,0,127,248,0,0,0,191,2,255,224,0,0,0,191,47,255,64,0,0,0,191,191,252,0,0,0,0,191,63,224,0,0,0,0,191,30,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191, + // 0xae45 깅 + 69,174,29,36,32,35,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,15,255,255,255,240,0,255,0,15,255,255,255,224,0,255,0,15,255,255,255,224,0,255,0,0,0,0,47,224,0,255,0,0,0,0,47,192,0,255,0,0,0,0,63,192,0,255,0,0,0,0,127,128,0,255,0,0,0,0,255,0,0,255,0,0,0,1,254,0,0,255,0,0,0,7,252,0,0,255,0,0,0,31,244,0,0,255,0,0,0,127,224,0,0,255,0,0,2,255,128,0,0,255,0,0,47,254,0,0,0,255,0,2,255,244,0,0,0,255,0,127,255,192,0,0,0,255,0,127,253,0,0,0,0,255,0,63,208,0,0,0,0,255,0,24,0,0,0,0,0,106,0,0,0,2,191,255,228,0,0,0,0,127,255,255,255,128,0,0,2,255,255,255,255,244,0,0,11,255,144,0,127,252,0,0,31,244,0,0,3,254,0,0,47,208,0,0,0,255,0,0,63,192,0,0,0,191,64,0,63,192,0,0,0,191,0,0,47,208,0,0,0,255,0,0,31,248,0,0,7,254,0,0,11,255,148,5,191,252,0,0,2,255,255,255,255,240,0,0,0,127,255,255,255,64,0,0,0,1,191,255,164,0,0, + // 0xb044 끄 + 68,176,31,27,216,35,2,1,11,255,255,224,255,255,254,0,11,255,255,224,255,255,254,0,11,255,255,224,255,255,254,0,0,0,31,224,0,1,254,0,0,0,31,224,0,1,254,0,0,0,31,224,0,1,254,0,0,0,31,208,0,1,254,0,0,0,31,208,0,1,254,0,0,0,47,208,0,1,253,0,0,0,47,192,0,1,253,0,0,0,63,192,0,2,253,0,0,0,63,192,0,2,253,0,0,0,63,192,0,2,252,0,0,0,127,128,0,3,252,0,0,0,127,64,0,3,252,0,0,0,191,64,0,3,252,0,0,0,255,0,0,3,248,0,0,0,255,0,0,7,248,0,0,1,254,0,0,11,244,0,0,1,253,0,0,11,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252, + // 0xb0b4 내 + 180,176,28,36,252,35,3,252,0,0,0,0,0,0,21,0,0,0,0,42,0,191,0,0,0,0,127,64,191,0,0,0,0,127,64,191,21,0,0,0,127,64,191,191,64,0,0,127,64,191,191,64,0,0,127,64,191,191,64,0,0,127,64,191,191,64,0,0,127,64,191,191,64,0,0,127,64,191,191,64,0,0,127,64,191,191,64,0,0,127,64,191,191,64,0,0,127,64,191,191,64,0,0,127,64,191,191,64,0,0,127,64,191,191,64,0,0,127,255,255,191,64,0,0,127,255,255,191,64,0,0,127,255,255,191,64,0,0,127,64,191,191,64,0,0,127,64,191,191,64,0,0,127,64,191,191,64,0,0,127,64,191,191,64,0,16,127,64,191,191,150,175,248,127,64,191,191,255,255,248,127,64,191,191,255,255,252,127,64,191,191,255,233,64,127,64,191,0,0,0,0,127,64,191,0,0,0,0,127,64,191,0,0,0,0,127,64,191,0,0,0,0,127,64,191,0,0,0,0,127,64,191,0,0,0,0,127,64,191,0,0,0,0,127,64,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191, + // 0xb178 노 + 120,177,31,29,232,35,2,0,1,169,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,255,255,255,255,254,0,1,255,255,255,255,255,254,0,1,255,255,255,255,255,254,0,0,0,0,47,224,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xb204 누 + 4,178,31,34,16,35,2,252,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,255,255,255,255,255,254,0,0,255,255,255,255,255,254,0,0,255,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0, + // 0xb274 뉴 + 116,178,31,34,16,35,2,252,0,170,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,2,254,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0,0,1,253,0,2,253,0,0, + // 0xb2c8 니 + 200,178,27,36,252,35,4,252,0,0,0,0,0,1,80,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,254,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,0,0,11,244,255,0,0,1,172,11,244,255,86,171,255,253,11,244,255,255,255,255,254,11,244,255,255,255,255,249,11,244,255,255,234,80,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,240, + // 0xb2e4 다 + 228,178,31,36,32,35,3,252,0,0,0,0,0,5,64,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,191,255,255,255,0,31,208,0,191,255,255,255,0,31,208,0,191,255,255,255,0,31,208,0,191,64,0,0,0,31,208,0,191,0,0,0,0,31,208,0,191,0,0,0,0,31,208,0,191,0,0,0,0,31,208,0,191,0,0,0,0,31,208,0,191,0,0,0,0,31,208,0,191,0,0,0,0,31,208,0,191,0,0,0,0,31,255,252,191,0,0,0,0,31,255,252,191,0,0,0,0,31,255,252,191,0,0,0,0,31,224,0,191,0,0,0,0,31,208,0,191,0,0,0,0,31,208,0,191,0,0,0,0,31,208,0,191,0,0,0,0,31,208,0,191,0,0,0,0,31,208,0,191,0,1,91,252,31,208,0,191,255,255,255,252,31,208,0,191,255,255,255,252,31,208,0,191,255,255,250,80,31,208,0,21,80,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0, + // 0xb2f9 당 + 249,178,31,36,32,35,3,252,0,0,0,0,0,5,80,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,191,255,255,254,0,15,240,0,191,255,255,254,0,15,240,0,191,255,255,254,0,15,240,0,191,64,0,0,0,15,240,0,191,0,0,0,0,15,240,0,191,0,0,0,0,15,240,0,191,0,0,0,0,15,240,0,191,0,0,0,0,15,255,248,191,0,0,0,0,15,255,248,191,0,0,0,0,15,255,248,191,0,0,0,0,15,240,0,191,0,0,0,0,15,240,0,191,64,21,107,248,15,240,0,191,255,255,255,252,15,240,0,191,255,255,255,252,15,240,0,191,255,255,169,64,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,5,64,0,0,0,27,255,249,0,0,0,0,6,255,255,255,244,0,0,0,47,255,255,255,255,0,0,0,191,249,64,91,255,192,0,0,255,128,0,0,127,208,0,2,254,0,0,0,31,240,0,2,252,0,0,0,15,240,0,2,252,0,0,0,15,240,0,2,254,0,0,0,31,240,0,0,255,128,0,0,127,208,0,0,191,249,81,91,255,192,0,0,47,255,255,255,255,0,0,0,2,255,255,255,244,0,0,0,0,27,255,249,0,0,0, + // 0xb3c4 도 + 196,179,31,29,232,35,2,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,255,255,255,255,254,0,1,255,255,255,255,255,254,0,1,255,255,255,255,255,254,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xb3cc 돌 + 204,179,31,34,16,35,2,252,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,255,255,255,255,255,0,1,255,255,255,255,255,255,0,1,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0, + // 0xb3d9 동 + 217,179,31,34,16,35,2,252,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,47,224,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,255,254,144,0,0,0,2,255,255,255,254,0,0,0,31,255,255,255,255,208,0,0,127,249,0,1,191,240,0,0,255,128,0,0,15,248,0,1,255,0,0,0,3,252,0,1,254,0,0,0,3,252,0,1,255,0,0,0,3,252,0,0,255,128,0,0,15,248,0,0,127,249,0,1,191,240,0,0,31,255,255,255,255,208,0,0,2,255,255,255,254,0,0,0,0,26,255,254,144,0,0, + // 0xb418 되 + 24,180,28,36,252,35,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,11,255,255,255,255,0,255,11,255,255,255,255,0,255,11,255,255,255,255,0,255,11,244,0,0,0,0,255,11,244,0,0,0,0,255,11,244,0,0,0,0,255,11,244,0,0,0,0,255,11,244,0,0,0,0,255,11,244,0,0,0,0,255,11,244,0,0,0,0,255,11,244,0,0,0,0,255,11,244,0,0,0,0,255,11,255,255,255,255,0,255,11,255,255,255,255,0,255,11,255,255,255,255,0,255,0,0,47,192,0,0,255,0,0,47,192,0,0,255,0,0,47,192,0,0,255,0,0,47,192,0,0,255,0,0,47,192,0,0,255,0,0,47,213,106,176,255,255,255,255,255,255,244,255,191,255,255,255,255,244,255,191,255,255,255,165,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,191, + // 0xb41c 된 + 28,180,30,36,32,35,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,3,255,255,255,253,0,191,0,3,255,255,255,253,0,191,0,3,255,255,255,253,0,191,0,3,252,0,0,0,0,191,0,3,252,0,0,0,0,191,0,3,252,0,0,0,0,191,0,3,252,0,0,0,0,191,0,3,252,0,0,0,0,191,0,3,252,0,0,0,0,191,0,3,255,255,255,254,0,191,0,3,255,255,255,254,0,191,0,3,255,255,255,254,0,191,0,0,0,47,208,0,0,191,0,0,0,47,208,0,0,191,0,0,0,47,208,0,0,191,0,0,0,47,208,0,0,191,0,0,1,127,234,191,240,191,0,255,255,255,255,255,240,191,0,191,255,255,255,255,240,191,0,191,255,255,169,80,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,10,144,0,0,0,191,0,0,31,208,0,0,0,191,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,255,255,255,255,255,208,0,31,255,255,255,255,255,208,0,31,255,255,255,255,255,208,0,0,0,0,0,0,0,0, + // 0xb428 됨 + 40,180,29,35,24,35,2,252,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,3,255,255,255,254,0,191,64,3,255,255,255,254,0,191,64,3,255,255,255,254,0,191,64,3,252,0,0,0,0,191,64,3,252,0,0,0,0,191,64,3,252,0,0,0,0,191,64,3,252,0,0,0,0,191,64,3,252,0,0,0,0,191,64,3,255,255,255,255,0,191,64,3,255,255,255,255,0,191,64,3,255,255,255,255,0,191,64,0,0,47,208,0,0,191,64,0,0,47,208,0,0,191,64,0,0,47,208,0,0,191,64,0,0,47,234,191,240,191,64,255,255,255,255,255,240,191,64,191,255,255,255,255,224,191,64,127,255,254,169,64,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,255,64,0,31,255,255,255,255,255,64,0,31,255,255,255,255,255,64,0,31,208,0,0,0,191,64,0,31,208,0,0,0,191,64,0,31,208,0,0,0,191,64,0,31,208,0,0,0,191,64,0,31,208,0,0,0,191,64,0,31,255,255,255,255,255,64,0,31,255,255,255,255,255,64,0,31,255,255,255,255,255,64,0,0,0,0,0,0,0,0, + // 0xb4a4 뒤 + 164,180,29,35,24,35,2,252,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,3,255,255,255,253,0,191,64,3,255,255,255,253,0,191,64,3,255,255,255,253,0,191,64,3,252,0,0,0,0,191,64,3,252,0,0,0,0,191,64,3,252,0,0,0,0,191,64,3,252,0,0,0,0,191,64,3,252,0,0,0,0,191,64,3,252,0,0,0,0,191,64,3,255,255,255,255,0,191,64,3,255,255,255,255,0,191,64,3,255,255,255,255,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,21,107,244,191,64,255,255,255,255,255,244,191,64,255,255,255,255,255,244,191,64,255,255,255,254,165,0,191,64,0,0,63,192,0,0,191,64,0,0,63,192,0,0,191,64,0,0,63,192,0,0,191,64,0,0,63,192,0,0,191,64,0,0,63,192,0,0,191,64,0,0,63,192,0,0,191,64,0,0,63,192,0,0,191,64,0,0,63,192,0,0,191,64,0,0,63,192,0,0,191,64,0,0,63,192,0,0,191,64,0,0,63,192,0,0,191,64,0,0,42,128,0,0,191,64,0,0,0,0,0,0,191,64, + // 0xb4dc 드 + 220,180,31,28,224,35,2,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,255,255,255,255,254,0,1,255,255,255,255,255,254,0,1,255,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xb514 디 + 20,181,26,36,252,35,4,252,0,0,0,0,0,5,80,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,255,255,255,255,64,15,240,255,255,255,255,64,15,240,255,255,255,255,64,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,0,0,15,240,255,0,0,90,252,15,240,255,255,255,255,252,15,240,255,255,255,255,253,15,240,255,255,255,254,148,15,240,85,84,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,11,240, + // 0xb77c 라 + 124,183,31,36,32,35,3,252,0,0,0,0,0,5,64,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,255,255,255,255,0,31,224,0,255,255,255,255,0,31,224,0,255,255,255,255,0,31,224,0,0,0,0,255,0,31,224,0,0,0,0,255,0,31,224,0,0,0,0,255,0,31,224,0,0,0,0,255,0,31,224,0,0,0,0,255,0,31,224,0,0,0,0,255,0,31,224,0,0,0,0,255,0,31,224,0,191,255,255,255,0,31,255,252,191,255,255,255,0,31,255,252,191,255,255,255,0,31,255,252,191,0,0,0,0,31,229,80,191,0,0,0,0,31,224,0,191,0,0,0,0,31,224,0,191,0,0,0,0,31,224,0,191,0,0,0,0,31,224,0,191,0,0,0,0,31,224,0,191,0,0,90,252,31,224,0,191,255,255,255,252,31,224,0,191,255,255,255,253,31,224,0,191,255,255,250,80,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,208,0, + // 0xb7ec 러 + 236,183,28,36,252,35,3,252,0,0,0,0,0,0,84,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,255,255,255,253,0,2,253,255,255,255,253,0,2,253,255,255,255,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,0,0,1,253,0,2,253,255,255,255,253,0,2,253,255,255,255,253,47,255,253,255,255,255,253,47,255,253,255,0,0,0,47,255,253,255,0,0,0,0,2,253,255,0,0,0,0,2,253,255,0,0,0,0,2,253,255,0,0,0,0,2,253,255,0,0,0,0,2,253,255,0,0,0,0,2,253,255,0,1,106,240,2,253,255,255,255,255,240,2,253,255,255,255,255,244,2,253,255,255,255,234,80,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,1,253, + // 0xb808 레 + 8,184,28,36,252,35,3,252,0,0,0,0,0,0,85,0,0,0,0,31,192,191,0,0,0,0,31,192,191,0,0,0,0,31,192,191,255,255,255,0,31,192,191,255,255,255,0,31,192,191,255,255,255,0,31,192,191,0,0,191,0,31,192,191,0,0,191,0,31,192,191,0,0,191,0,31,192,191,0,0,191,0,31,192,191,0,0,191,0,31,192,191,0,0,191,0,31,192,191,0,0,191,31,255,192,191,255,255,255,31,255,192,191,255,255,255,31,255,192,191,255,255,255,0,47,192,191,254,0,0,0,31,192,191,254,0,0,0,31,192,191,254,0,0,0,31,192,191,254,0,0,0,31,192,191,254,0,0,0,31,192,191,254,0,0,0,31,192,191,255,0,22,184,31,192,191,255,255,255,252,31,192,191,255,255,255,252,31,192,191,255,255,254,164,31,192,191,0,0,0,0,31,192,191,0,0,0,0,31,192,191,0,0,0,0,31,192,191,0,0,0,0,31,192,191,0,0,0,0,31,192,191,0,0,0,0,31,192,191,0,0,0,0,31,192,191,0,0,0,0,0,0,191,0,0,0,0,0,0,127, + // 0xb825 력 + 37,184,28,36,252,35,3,252,0,0,0,0,0,0,84,0,0,0,0,0,2,253,0,0,0,0,0,2,253,255,255,255,252,0,2,253,255,255,255,252,0,2,253,255,255,255,252,0,2,253,0,0,3,252,47,255,253,0,0,3,252,47,255,253,0,0,3,252,47,255,253,0,0,3,252,0,2,253,191,255,255,252,0,2,253,191,255,255,252,0,2,253,191,255,255,252,0,2,253,191,0,0,0,47,255,253,191,0,0,0,47,255,253,191,0,0,0,47,255,253,191,0,0,0,0,2,253,191,64,21,175,192,2,253,191,255,255,255,192,2,253,191,255,255,255,192,2,253,191,255,255,165,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,255,255,255,255,255,253,0,255,255,255,255,255,253,0,255,255,255,255,255,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253, + // 0xb85c 로 + 92,184,31,29,232,35,2,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,255,255,255,255,255,0,1,255,255,255,255,255,255,0,1,255,255,255,255,255,255,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,224,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252, + // 0xb8cc 료 + 204,184,31,29,232,35,2,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,255,255,255,255,255,0,1,255,255,255,255,255,255,0,1,255,255,255,255,255,255,0,0,0,255,64,3,252,0,0,0,0,191,0,3,252,0,0,0,0,191,0,3,252,0,0,0,0,191,0,3,252,0,0,0,0,191,0,3,252,0,0,0,0,191,0,3,252,0,0,0,0,255,64,3,252,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252, + // 0xb974 르 + 116,185,31,29,232,35,2,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,0,0,0,0,0,2,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,255,255,255,255,255,253,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,255,255,255,255,255,0,1,255,255,255,255,255,255,0,1,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xb9ac 리 + 172,185,26,36,252,35,4,252,0,0,0,0,0,5,80,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,255,255,255,255,0,11,240,255,255,255,255,0,11,240,255,255,255,255,0,11,240,0,0,0,255,0,11,240,0,0,0,255,0,11,240,0,0,0,255,0,11,240,0,0,0,255,0,11,240,0,0,0,255,0,11,240,0,0,0,255,0,11,240,0,0,1,255,0,11,240,255,255,255,255,0,11,240,255,255,255,255,0,11,240,255,255,255,255,0,11,240,255,0,0,0,0,11,240,255,0,0,0,0,11,240,255,0,0,0,0,11,240,255,0,0,0,0,11,240,255,0,0,0,0,11,240,255,0,0,0,0,11,240,255,0,1,90,254,11,240,255,255,255,255,254,11,240,255,255,255,255,255,11,240,255,255,255,250,144,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240,0,0,0,0,0,11,240, + // 0xb9b0 린 + 176,185,28,36,252,35,3,252,0,0,0,0,0,1,84,0,0,0,0,0,2,252,0,0,0,0,0,2,252,127,255,255,255,64,2,252,127,255,255,255,64,2,252,127,255,255,255,64,2,252,0,0,0,191,64,2,252,0,0,0,191,64,2,252,0,0,0,191,64,2,252,0,0,0,191,64,2,252,0,0,0,191,64,2,252,127,255,255,255,64,2,252,127,255,255,255,64,2,252,127,255,255,255,64,2,252,127,128,0,0,0,2,252,127,128,0,0,0,2,252,127,128,0,0,0,2,252,127,128,0,0,0,2,252,127,128,21,107,255,2,252,127,255,255,255,255,2,252,127,255,255,255,255,2,252,127,255,255,233,64,2,252,0,0,0,0,0,2,252,0,0,0,0,0,2,252,0,21,0,0,0,2,252,0,127,64,0,0,2,252,0,127,64,0,0,2,168,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,127,64,0,0,0,0,0,127,255,255,255,255,255,0,127,255,255,255,255,255,0,127,255,255,255,255,255,0,0,0,0,0,0,0, + // 0xb9bd 립 + 189,185,27,36,252,35,3,252,0,0,0,0,0,1,168,0,0,0,0,0,2,252,127,255,255,255,64,2,252,127,255,255,255,64,2,252,127,255,255,255,64,2,252,0,0,0,191,64,2,252,0,0,0,191,64,2,252,0,0,0,191,64,2,252,0,0,0,191,64,2,252,127,255,255,255,64,2,252,127,255,255,255,64,2,252,127,255,255,255,64,2,252,127,128,0,0,0,2,252,127,128,0,0,0,2,252,127,128,0,0,0,2,252,127,128,0,22,191,2,252,127,255,255,255,255,2,252,127,255,255,255,255,2,252,127,255,255,254,148,2,252,0,0,0,0,0,2,252,0,0,0,0,0,0,0,0,42,64,0,0,1,168,0,127,128,0,0,2,252,0,127,128,0,0,2,252,0,127,128,0,0,2,252,0,127,255,255,255,255,252,0,127,255,255,255,255,252,0,127,255,255,255,255,252,0,127,128,0,0,2,252,0,127,128,0,0,2,252,0,127,128,0,0,2,252,0,127,128,0,0,2,252,0,127,255,255,255,255,252,0,127,255,255,255,255,252,0,127,255,255,255,255,252,0,0,0,0,0,0,0, + // 0xb9c1 링 + 193,185,28,36,252,35,3,252,0,0,0,0,0,0,84,0,0,0,0,0,2,252,0,0,0,0,0,2,252,127,255,255,255,64,2,252,127,255,255,255,64,2,252,127,255,255,255,64,2,252,0,0,0,191,64,2,252,0,0,0,191,64,2,252,0,0,0,191,64,2,252,0,0,0,191,64,2,252,127,255,255,255,64,2,252,127,255,255,255,64,2,252,127,255,255,255,64,2,252,127,128,0,0,0,2,252,127,128,0,0,0,2,252,127,128,0,0,0,2,252,127,128,0,22,191,2,252,127,255,255,255,255,2,252,127,255,255,255,255,2,252,127,255,255,254,148,2,252,0,0,0,0,0,2,252,0,0,0,0,0,2,252,0,0,0,0,0,0,0,0,0,10,255,255,144,0,0,1,255,255,255,254,0,0,15,255,255,255,255,224,0,63,254,64,1,191,244,0,127,208,0,0,11,252,0,191,64,0,0,2,253,0,191,0,0,0,2,253,0,191,64,0,0,3,253,0,127,208,0,0,11,252,0,63,254,80,5,191,244,0,11,255,255,255,255,208,0,1,255,255,255,254,0,0,0,6,255,254,144,0, + // 0xba48 멈 + 72,186,28,36,252,35,3,252,0,0,0,0,0,0,84,0,0,0,0,0,2,253,0,0,0,0,0,2,253,191,255,255,255,64,2,253,191,255,255,255,64,2,253,191,255,255,255,64,2,253,191,64,0,191,64,2,253,191,0,0,127,64,2,253,191,0,0,127,64,2,253,191,0,0,127,255,255,253,191,0,0,127,255,255,253,191,0,0,127,255,255,253,191,0,0,127,64,2,253,191,0,0,127,64,2,253,191,0,0,127,64,2,253,191,64,0,191,64,2,253,191,255,255,255,64,2,253,191,255,255,255,64,2,253,191,255,255,255,64,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,253,0,63,255,255,255,255,253,0,63,255,255,255,255,253,0,63,128,0,0,1,253,0,63,128,0,0,1,253,0,63,128,0,0,1,253,0,63,128,0,0,1,253,0,63,128,0,0,1,253,0,63,128,0,0,1,253,0,63,255,255,255,255,253,0,63,255,255,255,255,253,0,63,255,255,255,255,253,0,0,0,0,0,0,0, + // 0xba54 메 + 84,186,28,35,245,35,3,252,0,0,0,0,10,128,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,255,255,255,208,31,208,127,255,255,255,208,31,208,127,255,255,255,208,31,208,127,254,0,31,208,31,208,127,254,0,31,208,31,208,127,254,0,31,208,31,208,127,254,0,31,208,31,208,127,254,0,31,208,31,208,127,254,0,31,208,31,208,127,254,0,31,255,255,208,127,254,0,31,255,255,208,127,254,0,31,255,255,208,127,254,0,31,208,31,208,127,254,0,31,208,31,208,127,254,0,31,208,31,208,127,254,0,31,208,31,208,127,254,0,31,208,31,208,127,254,0,31,208,31,208,127,254,0,31,208,31,208,127,255,255,255,208,31,208,127,255,255,255,208,31,208,127,255,255,255,208,31,208,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,0,0,0,0,5,64,127,0,0,0,0,0,0,127, + // 0xba74 면 + 116,186,28,36,252,35,3,252,0,0,0,0,0,0,84,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,191,255,255,255,64,2,253,191,255,255,255,64,2,253,191,255,255,255,64,2,253,191,0,0,127,255,255,253,191,0,0,127,255,255,253,191,0,0,127,255,255,253,191,0,0,127,64,2,253,191,0,0,127,64,2,253,191,0,0,127,64,2,253,191,0,0,127,64,2,253,191,0,0,127,255,255,253,191,0,0,127,255,255,253,191,0,0,127,255,255,253,191,255,255,255,64,2,253,191,255,255,255,64,2,253,191,255,255,255,64,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,63,192,0,0,2,253,0,63,192,0,0,2,253,0,63,192,0,0,0,84,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,255,255,255,255,255,0,63,255,255,255,255,255,0,63,255,255,255,255,255,0,0,0,0,0,0,0, + // 0xbaa8 모 + 168,186,31,28,224,35,2,0,2,255,255,255,255,255,253,0,2,255,255,255,255,255,253,0,2,255,255,255,255,255,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,255,255,255,255,255,253,0,2,255,255,255,255,255,253,0,2,255,255,255,255,255,253,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xbabb 못 + 187,186,31,34,16,35,2,252,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,254,0,0,0,3,252,0,0,254,0,0,0,3,252,0,0,254,0,0,0,3,252,0,0,254,0,0,0,3,252,0,0,254,0,0,0,3,252,0,0,254,0,0,0,3,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,63,224,0,0,0,0,0,0,63,240,0,0,0,0,0,0,255,248,0,0,0,0,0,2,255,253,0,0,0,0,0,11,252,255,128,0,0,0,0,127,240,127,244,0,0,0,27,255,208,31,255,64,0,7,255,254,0,3,255,254,64,7,255,244,0,0,127,255,64,3,254,64,0,0,7,255,0,1,64,0,0,0,0,4,0, + // 0xbbf8 미 + 248,187,26,36,252,35,4,252,0,0,0,0,0,5,80,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,255,255,255,255,0,15,240,255,255,255,255,0,15,240,255,255,255,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,254,0,0,255,0,15,240,255,255,255,255,0,15,240,255,255,255,255,0,15,240,255,255,255,255,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,11,240, + // 0xbc00 밀 + 0,188,28,35,245,35,3,252,0,0,0,0,0,2,252,0,0,0,0,0,2,252,127,255,255,255,192,2,252,127,255,255,255,192,2,252,127,255,255,255,192,2,252,127,128,0,63,192,2,252,127,128,0,63,192,2,252,127,128,0,63,192,2,252,127,128,0,63,192,2,252,127,128,0,63,192,2,252,127,128,0,63,192,2,252,127,128,0,63,192,2,252,127,128,0,63,192,2,252,127,255,255,255,192,2,252,127,255,255,255,192,2,252,127,255,255,255,192,2,252,0,0,0,0,0,2,252,0,0,0,0,0,1,84,0,0,0,0,0,0,0,0,127,255,255,255,255,252,0,127,255,255,255,255,252,0,127,255,255,255,255,252,0,0,0,0,0,2,252,0,0,0,0,0,2,252,0,0,0,0,0,2,252,0,63,255,255,255,255,252,0,63,255,255,255,255,252,0,63,255,255,255,255,252,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,63,128,0,0,0,0,0,63,255,255,255,255,255,0,63,255,255,255,255,255,0,63,255,255,255,255,255,0,0,0,0,0,0,0, + // 0xbc14 바 + 20,188,31,36,32,35,3,252,0,0,0,0,0,5,64,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,85,0,0,21,0,31,208,0,255,0,0,127,64,31,208,0,255,0,0,127,64,31,208,0,255,0,0,127,64,31,208,0,255,0,0,127,64,31,208,0,255,0,0,127,64,31,208,0,255,0,0,127,64,31,208,0,255,0,0,127,64,31,208,0,255,0,0,127,64,31,208,0,255,0,0,191,64,31,208,0,255,255,255,255,64,31,208,0,255,255,255,255,64,31,255,252,255,255,255,255,64,31,255,252,255,0,0,127,64,31,255,252,255,0,0,127,64,31,229,80,255,0,0,127,64,31,208,0,255,0,0,127,64,31,208,0,255,0,0,127,64,31,208,0,255,0,0,127,64,31,208,0,255,0,0,127,64,31,208,0,255,0,0,127,64,31,208,0,255,255,255,255,64,31,208,0,255,255,255,255,64,31,208,0,255,255,255,255,64,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0, + // 0xbc84 버 + 132,188,28,36,252,35,3,252,0,0,0,0,0,1,84,0,0,0,0,0,2,253,0,0,0,0,0,2,253,170,0,0,106,0,2,253,255,0,0,191,64,2,253,255,0,0,191,64,2,253,255,0,0,191,64,2,253,255,0,0,191,64,2,253,255,0,0,191,64,2,253,255,0,0,191,64,2,253,255,0,0,191,64,2,253,255,0,0,191,64,2,253,255,255,255,255,64,2,253,255,255,255,255,255,255,253,255,255,255,255,255,255,253,255,0,0,191,255,255,253,255,0,0,191,64,2,253,255,0,0,191,64,2,253,255,0,0,191,64,2,253,255,0,0,191,64,2,253,255,0,0,191,64,2,253,255,0,0,191,64,2,253,255,0,0,191,64,2,253,255,0,0,191,64,2,253,255,255,255,255,64,2,253,255,255,255,255,64,2,253,255,255,255,255,64,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,1,253, + // 0xbca0 베 + 160,188,28,36,252,35,3,252,0,0,0,0,0,0,21,0,0,0,0,26,128,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,254,0,15,208,31,208,127,254,0,15,208,31,208,127,254,0,15,208,31,208,127,254,0,15,208,31,208,127,254,0,15,208,31,208,127,254,0,15,208,31,208,127,254,0,15,208,31,208,127,254,0,15,208,31,208,127,255,255,255,208,31,208,127,255,255,255,224,47,208,127,255,255,255,255,255,208,127,255,0,31,255,255,208,127,254,0,15,255,255,208,127,254,0,15,208,31,208,127,254,0,15,208,31,208,127,254,0,15,208,31,208,127,254,0,15,208,31,208,127,254,0,15,208,31,208,127,254,0,15,208,31,208,127,254,0,15,208,31,208,127,255,255,255,208,31,208,127,255,255,255,208,31,208,127,255,255,255,208,31,208,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,0,0,0,0,31,208,127,0,0,0,0,0,0,127,0,0,0,0,0,0,127, + // 0xbca8 벨 + 168,188,29,36,32,35,3,252,0,0,0,0,0,0,85,0,0,0,0,0,31,192,255,0,21,0,6,144,47,192,255,0,191,0,15,224,47,192,255,0,191,0,15,224,47,192,255,0,191,0,15,224,47,192,255,0,191,0,15,224,47,192,255,0,191,255,255,224,47,192,255,0,191,255,255,255,255,192,255,0,191,255,255,255,255,192,255,0,191,0,15,255,255,192,255,0,191,0,15,224,47,192,255,0,191,0,15,224,47,192,255,0,191,0,15,224,47,192,255,0,191,0,15,224,47,192,255,0,191,255,255,224,47,192,255,0,191,255,255,224,47,192,255,0,191,255,255,224,47,192,255,0,0,0,0,0,47,192,255,0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,0,0,63,255,255,255,255,255,0,0,63,255,255,255,255,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,63,255,255,255,255,255,0,0,63,255,255,255,255,255,0,0,63,255,255,255,255,255,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,255,255,255,255,255,192,0,63,255,255,255,255,255,192,0,63,255,255,255,255,255,192,0,0,0,0,0,0,0,0, + // 0xbcf8 본 + 248,188,31,34,16,35,2,252,0,254,0,0,0,3,252,0,0,255,0,0,0,3,252,0,0,255,0,0,0,3,252,0,0,255,0,0,0,3,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,0,0,0,3,252,0,0,255,0,0,0,3,252,0,0,255,0,0,0,3,252,0,0,255,0,0,0,3,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0, + // 0xbe44 비 + 68,190,26,36,252,35,4,252,0,0,0,0,0,5,80,0,0,0,0,0,15,240,0,0,0,0,0,15,240,84,0,0,21,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,255,255,255,255,0,15,240,255,255,255,255,0,15,240,255,255,255,255,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,254,0,0,191,0,15,240,255,255,255,255,0,15,240,255,255,255,255,0,15,240,255,255,255,255,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,15,240,0,0,0,0,0,11,240, + // 0xc0ac 사 + 172,192,33,36,68,35,1,252,0,0,0,0,0,0,84,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,21,64,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,127,192,0,1,253,0,0,0,0,127,208,0,1,253,0,0,0,0,191,224,0,1,254,0,0,0,0,255,240,0,1,255,255,192,0,1,255,244,0,1,255,255,192,0,2,255,248,0,1,255,255,192,0,3,250,252,0,1,253,0,0,0,15,240,255,0,1,253,0,0,0,47,240,255,128,1,253,0,0,0,127,208,63,208,1,253,0,0,0,255,128,47,244,1,253,0,0,3,255,0,15,253,1,253,0,0,31,253,0,3,255,193,253,0,0,127,244,0,0,255,129,253,0,0,47,208,0,0,63,1,253,0,0,15,0,0,0,8,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0, + // 0xc0bd 삽 + 189,192,32,36,32,35,2,252,0,0,0,0,0,1,84,0,0,0,0,0,0,3,248,0,0,0,170,0,0,3,248,0,0,0,255,0,0,3,248,0,0,0,255,0,0,3,248,0,0,0,255,0,0,3,248,0,0,0,255,0,0,3,248,0,0,0,255,0,0,3,248,0,0,1,255,64,0,3,252,0,0,2,255,192,0,3,255,254,0,3,255,208,0,3,255,254,0,11,255,240,0,3,255,254,0,31,251,252,0,3,248,0,0,127,195,255,0,3,248,0,1,255,129,255,208,3,248,0,11,255,0,127,253,3,248,0,191,252,0,31,254,3,248,0,255,224,0,3,252,3,248,0,63,64,0,0,116,3,248,0,20,0,0,0,0,3,248,0,0,0,0,0,0,0,0,0,0,42,64,0,0,2,164,0,0,63,128,0,0,3,248,0,0,63,128,0,0,3,248,0,0,63,128,0,0,3,248,0,0,63,255,255,255,255,248,0,0,63,255,255,255,255,248,0,0,63,255,255,255,255,248,0,0,63,128,0,0,3,248,0,0,63,128,0,0,3,248,0,0,63,128,0,0,3,248,0,0,63,128,0,0,3,248,0,0,63,255,255,255,255,248,0,0,63,255,255,255,255,248,0,0,63,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0xc0c8 새 + 200,192,30,36,32,35,1,252,0,0,0,0,0,0,1,80,0,0,0,0,2,164,7,240,0,0,0,0,3,248,7,240,0,0,0,0,3,248,7,240,0,1,253,0,3,248,7,240,0,1,253,0,3,248,7,240,0,1,253,0,3,248,7,240,0,1,253,0,3,248,7,240,0,1,253,0,3,248,7,240,0,1,253,0,3,248,7,240,0,1,254,0,3,248,7,240,0,1,254,0,3,248,7,240,0,1,254,0,3,248,7,240,0,2,255,0,3,248,7,240,0,2,255,0,3,248,11,240,0,3,255,0,3,255,255,240,0,3,255,128,3,255,255,240,0,11,255,192,3,255,255,240,0,15,255,192,3,248,7,240,0,31,223,240,3,248,7,240,0,63,203,244,3,248,7,240,0,191,135,252,3,248,7,240,0,255,2,255,3,248,7,240,3,254,0,255,195,248,7,240,15,252,0,127,243,248,7,240,127,240,0,47,227,248,7,240,63,208,0,7,195,248,7,240,15,64,0,0,3,248,7,240,0,0,0,0,3,248,7,240,0,0,0,0,3,248,7,240,0,0,0,0,3,248,7,240,0,0,0,0,3,248,7,240,0,0,0,0,3,248,7,240,0,0,0,0,3,248,7,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,7,240, + // 0xc124 설 + 36,193,30,36,32,35,2,252,0,0,0,0,0,0,21,0,0,0,0,0,0,0,191,64,0,0,255,0,0,0,191,64,0,0,255,0,0,0,191,64,0,0,255,0,0,0,191,64,0,0,255,0,0,0,191,64,0,0,255,0,0,0,191,64,0,0,255,64,47,255,255,64,0,1,255,192,47,255,255,64,0,3,255,208,47,255,255,64,0,7,255,240,0,0,191,64,0,15,251,248,0,0,191,64,0,63,211,255,0,0,191,64,0,255,193,255,208,0,191,64,11,255,0,127,253,0,191,64,191,252,0,31,255,0,191,64,191,224,0,2,252,0,191,64,63,64,0,0,36,0,191,64,4,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,64,0,15,255,255,255,255,255,64,0,15,255,255,255,255,255,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,15,255,255,255,255,255,64,0,15,255,255,255,255,255,64,0,15,255,255,255,255,255,64,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,255,255,255,255,255,224,0,15,255,255,255,255,255,224,0,15,255,255,255,255,255,224,0,0,0,0,0,0,0,0, + // 0xc18c 소 + 140,193,31,30,240,35,2,0,0,0,0,5,64,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,63,208,0,0,0,0,0,0,63,224,0,0,0,0,0,0,63,224,0,0,0,0,0,0,127,240,0,0,0,0,0,0,255,244,0,0,0,0,0,1,255,252,0,0,0,0,0,3,254,255,0,0,0,0,0,15,248,255,128,0,0,0,0,63,240,63,224,0,0,0,1,255,192,31,252,0,0,0,31,255,0,7,255,128,0,1,255,252,0,1,255,249,0,63,255,224,0,0,63,255,208,31,255,0,0,0,7,255,192,15,228,0,0,0,0,111,128,0,0,0,47,192,0,1,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,47,192,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xc18d 속 + 141,193,31,35,24,35,2,252,0,0,0,31,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,63,224,0,0,0,0,0,0,63,240,0,0,0,0,0,0,127,240,0,0,0,0,0,0,255,252,0,0,0,0,0,3,255,254,0,0,0,0,0,15,248,255,128,0,0,0,0,191,240,63,244,0,0,0,11,255,192,31,255,64,0,6,255,254,0,3,255,250,64,15,255,244,0,0,127,255,192,11,254,64,47,208,7,255,64,3,144,0,47,208,0,27,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,255,252,0,2,255,255,255,255,255,252,0,2,255,255,255,255,255,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,2,252,0, + // 0xc2a4 스 + 164,194,31,29,232,35,2,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,63,224,0,0,0,0,0,0,63,224,0,0,0,0,0,0,127,240,0,0,0,0,0,0,191,244,0,0,0,0,0,0,255,252,0,0,0,0,0,3,255,253,0,0,0,0,0,11,248,255,64,0,0,0,0,47,240,127,208,0,0,0,0,191,208,63,244,0,0,0,7,255,128,15,254,0,0,0,111,253,0,3,255,224,0,27,255,244,0,0,191,254,64,47,255,128,0,0,31,255,208,15,253,0,0,0,2,255,192,11,128,0,0,0,0,27,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xc2ac 슬 + 172,194,31,35,24,35,2,252,0,0,0,47,208,0,0,0,0,0,0,47,224,0,0,0,0,0,0,63,240,0,0,0,0,0,0,127,240,0,0,0,0,0,0,255,252,0,0,0,0,0,3,254,255,0,0,0,0,0,31,248,191,208,0,0,0,1,255,224,63,253,0,0,1,191,255,64,11,255,233,0,31,255,252,0,0,255,255,192,15,255,128,0,0,27,255,128,7,228,0,0,0,0,111,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,170,170,170,170,168,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,255,255,255,255,255,0,1,255,255,255,255,255,255,0,1,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0, + // 0xc2dc 시 + 220,194,28,35,245,35,2,252,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,127,128,0,0,255,0,0,127,128,0,0,255,0,0,127,128,0,0,255,0,0,127,128,0,0,255,0,0,127,128,0,0,255,0,0,127,128,0,0,255,0,0,127,128,0,0,255,0,0,127,128,0,0,255,0,0,191,192,0,0,255,0,0,255,192,0,0,255,0,0,255,208,0,0,255,0,1,255,224,0,0,255,0,2,255,240,0,0,255,0,3,255,248,0,0,255,0,11,243,252,0,0,255,0,15,241,255,0,0,255,0,63,208,255,128,0,255,0,191,192,127,208,0,255,2,255,0,47,244,0,255,11,254,0,15,254,0,255,127,252,0,3,255,192,255,255,240,0,0,255,192,255,127,192,0,0,47,0,255,45,0,0,0,5,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,85, + // 0xc2dd 식 + 221,194,28,36,252,35,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,191,0,0,106,64,0,0,191,0,0,191,64,0,0,191,0,0,191,64,0,0,191,0,0,191,64,0,0,191,0,0,191,64,0,0,191,0,0,191,128,0,0,191,0,0,255,192,0,0,191,0,0,255,192,0,0,191,0,2,255,208,0,0,191,0,3,255,240,0,0,191,0,11,255,248,0,0,191,0,31,243,254,0,0,191,0,127,209,255,128,0,191,1,255,128,191,240,0,191,15,255,0,47,254,0,191,191,252,0,11,255,64,191,127,240,0,1,255,0,191,63,128,0,0,44,0,191,8,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,0,63,255,255,255,255,255,0,63,255,255,255,255,255,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191, + // 0xc5b4 어 + 180,197,29,36,32,35,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,7,254,0,0,0,191,64,0,127,255,224,0,0,191,64,1,255,255,248,0,0,191,64,3,255,175,253,0,0,191,64,11,248,1,255,0,0,191,64,15,240,0,191,128,0,191,64,47,208,0,63,192,0,191,64,63,192,0,47,192,0,191,64,63,128,0,31,208,0,191,64,127,128,0,15,224,0,191,64,127,64,0,15,240,0,191,64,127,64,0,15,255,255,255,64,127,0,0,15,255,255,255,64,127,64,0,15,255,255,255,64,127,64,0,15,240,0,191,64,127,64,0,15,224,0,191,64,63,128,0,31,208,0,191,64,63,192,0,47,192,0,191,64,47,208,0,63,192,0,191,64,15,240,0,127,128,0,191,64,15,248,1,255,0,0,191,64,3,255,175,253,0,0,191,64,1,255,255,248,0,0,191,64,0,127,255,224,0,0,191,64,0,7,254,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,127,64, + // 0xc5c6 없 + 198,197,32,36,32,35,2,252,0,0,0,0,0,0,21,0,0,0,0,0,0,0,191,64,0,27,254,64,0,0,191,64,0,255,255,248,0,0,191,64,7,255,255,254,0,0,191,64,15,254,86,255,128,0,191,64,47,240,0,127,192,0,191,64,63,192,0,31,224,0,191,64,127,128,0,15,240,0,191,64,191,64,0,11,255,255,255,64,191,0,0,11,255,255,255,64,191,64,0,11,255,255,255,64,127,128,0,15,240,0,191,64,63,208,0,47,208,0,191,64,31,249,1,255,192,0,191,64,11,255,255,255,0,0,191,64,1,255,255,252,0,0,191,64,0,47,255,144,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,0,170,0,15,240,0,0,253,0,191,0,15,240,0,0,253,0,191,0,15,240,0,0,253,0,191,0,15,240,0,0,255,255,255,0,31,240,0,0,255,255,255,0,47,244,0,0,255,255,255,0,63,248,0,0,253,0,191,0,127,252,0,0,253,0,191,1,255,255,0,0,253,0,191,3,252,191,192,0,253,0,191,47,248,63,244,0,255,255,255,255,240,15,254,0,255,255,255,127,128,3,252,0,255,255,255,46,0,0,184,0,0,0,0,0,0,0,0, + // 0xc5d1 엑 + 209,197,29,36,32,35,2,252,0,0,0,0,0,0,21,64,0,0,0,0,7,240,63,192,0,1,0,0,7,244,63,192,0,127,253,0,7,244,63,192,3,255,255,128,7,244,63,192,15,255,255,240,7,244,63,192,31,244,31,248,7,244,63,192,63,192,3,252,7,244,63,192,127,64,1,253,7,244,63,192,191,0,0,254,7,244,63,192,255,0,0,255,255,244,63,192,254,0,0,255,255,244,63,192,255,0,0,255,255,244,63,192,191,0,0,253,7,244,63,192,127,64,2,252,7,244,63,192,63,208,7,252,7,244,63,192,31,249,111,244,7,244,63,192,11,255,255,224,7,244,63,192,2,255,255,64,7,244,63,192,0,47,232,0,7,244,63,192,0,0,0,0,7,244,63,192,0,0,0,0,1,80,26,128,0,0,0,0,0,0,0,0,0,31,255,255,255,255,255,192,0,31,255,255,255,255,255,192,0,31,255,255,255,255,255,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192, + // 0xc5d4 엔 + 212,197,30,36,32,35,2,252,0,0,0,0,0,0,21,64,0,0,0,0,7,244,63,192,0,0,0,0,7,244,63,192,0,47,248,0,7,244,63,192,2,255,255,64,7,244,63,192,11,255,255,208,7,244,63,192,31,249,127,240,7,244,63,192,63,208,11,252,7,244,63,192,127,128,2,252,7,244,63,192,191,0,1,253,7,244,63,192,191,0,0,254,7,244,63,192,255,0,0,255,255,244,63,192,254,0,0,255,255,244,63,192,191,0,0,255,255,244,63,192,191,0,0,253,7,244,63,192,63,128,3,252,7,244,63,192,47,244,31,248,7,244,63,192,15,255,255,240,7,244,63,192,3,255,255,192,7,244,63,192,0,191,253,0,7,244,63,192,0,1,0,0,7,244,63,192,0,0,0,0,7,244,63,192,0,0,0,0,7,244,63,192,0,10,160,0,7,244,63,192,0,11,240,0,7,244,63,192,0,11,240,0,7,240,63,192,0,11,240,0,0,0,47,192,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,11,255,255,255,255,255,240,0,11,255,255,255,255,255,240,0,11,255,255,255,255,255,240,0,0,0,0,0,0,0,0, + // 0xc5f4 열 + 244,197,30,36,32,35,2,252,0,0,0,0,0,0,21,0,0,0,0,0,0,0,191,64,0,47,255,144,0,0,191,64,1,255,255,248,0,0,191,64,11,255,255,255,0,0,191,64,31,253,1,255,255,255,255,64,63,224,0,63,255,255,255,64,63,192,0,15,255,255,255,64,127,64,0,15,240,0,191,64,191,0,0,11,240,0,191,64,191,0,0,11,240,0,191,64,127,64,0,15,240,0,191,64,63,192,0,31,255,255,255,64,63,224,0,63,255,255,255,64,15,254,86,255,255,255,255,64,7,255,255,255,0,0,191,64,0,255,255,244,0,0,191,64,0,27,254,64,0,0,191,64,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,64,0,15,255,255,255,255,255,64,0,15,255,255,255,255,255,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,15,255,255,255,255,255,64,0,15,255,255,255,255,255,64,0,15,255,255,255,255,255,64,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,255,255,255,255,255,208,0,15,255,255,255,255,255,208,0,15,255,255,255,255,255,208,0,0,0,0,0,0,0,0, + // 0xc608 예 + 8,198,29,36,32,35,2,252,0,0,0,0,0,0,5,64,0,0,0,0,2,164,31,192,0,0,0,0,7,244,31,192,0,10,144,0,7,244,31,192,0,191,252,0,7,244,31,192,3,255,255,0,7,244,31,192,11,255,255,192,7,244,31,192,15,244,63,208,7,244,31,192,47,208,15,240,7,244,31,192,63,192,11,255,255,244,31,192,63,64,3,255,255,244,31,192,127,0,3,255,255,244,31,192,191,0,3,252,7,244,31,192,191,0,2,252,7,244,31,192,191,0,2,252,7,244,31,192,191,0,2,252,7,244,31,192,191,0,2,252,7,244,31,192,191,0,2,252,7,244,31,192,191,0,2,252,7,244,31,192,127,0,3,252,7,244,31,192,127,64,3,255,255,244,31,192,63,128,7,255,255,244,31,192,63,192,11,255,255,244,31,192,31,224,31,224,7,244,31,192,15,254,255,192,7,244,31,192,3,255,255,64,7,244,31,192,1,255,254,0,7,244,31,192,0,47,224,0,7,244,31,192,0,0,0,0,7,244,31,192,0,0,0,0,7,244,31,192,0,0,0,0,7,244,31,192,0,0,0,0,7,244,31,192,0,0,0,0,7,244,31,192,0,0,0,0,7,244,31,192,0,0,0,0,0,0,31,192,0,0,0,0,0,0,26,128, + // 0xc624 오 + 36,198,31,29,232,35,2,0,0,0,6,255,254,64,0,0,0,1,255,255,255,248,0,0,0,11,255,255,255,255,128,0,0,63,254,64,6,255,224,0,0,191,208,0,0,47,248,0,1,255,0,0,0,7,252,0,2,253,0,0,0,2,254,0,3,252,0,0,0,0,255,0,3,248,0,0,0,0,255,0,3,248,0,0,0,0,255,0,3,252,0,0,0,0,255,0,2,253,0,0,0,2,254,0,1,255,0,0,0,7,252,0,0,191,208,0,0,47,248,0,0,63,254,64,6,255,224,0,0,11,255,255,255,255,128,0,0,1,255,255,255,253,0,0,0,0,11,255,254,64,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xc628 온 + 40,198,31,34,16,35,2,252,0,0,27,255,255,144,0,0,0,2,255,255,255,254,0,0,0,47,255,255,255,255,208,0,0,191,249,0,1,255,244,0,0,255,128,0,0,15,252,0,2,254,0,0,0,3,253,0,2,253,0,0,0,1,254,0,2,253,0,0,0,1,254,0,2,254,0,0,0,3,253,0,0,255,128,0,0,15,252,0,0,127,253,64,6,255,244,0,0,31,255,255,255,255,208,0,0,2,255,255,255,254,0,0,0,0,26,255,254,80,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0, + // 0xc644 완 + 68,198,32,36,32,35,2,252,0,0,0,0,0,1,84,0,0,0,0,0,0,3,252,0,0,6,191,144,0,3,252,0,0,127,255,253,0,3,252,0,1,255,255,255,192,3,252,0,3,254,64,127,224,3,252,0,15,244,0,15,240,3,252,0,15,224,0,7,248,3,252,0,15,208,0,3,248,3,252,0,15,208,0,3,248,3,252,0,15,224,0,7,244,3,252,0,11,244,0,15,240,3,252,0,3,254,64,127,224,3,255,253,1,255,255,255,192,3,255,253,0,63,255,254,0,3,255,253,0,6,255,208,0,3,252,0,0,0,191,0,0,3,252,0,0,0,191,0,0,3,252,0,0,0,191,0,1,67,252,0,0,5,255,175,255,195,252,0,255,255,255,255,255,195,252,0,255,255,255,255,255,131,252,0,191,255,254,165,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,21,0,0,0,3,252,0,0,127,128,0,0,3,252,0,0,127,128,0,0,3,248,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,0,0,0,0,0,0,0, + // 0xc6d0 원 + 208,198,29,36,32,35,2,252,0,0,0,0,0,0,21,0,0,0,0,0,0,0,191,64,0,2,191,228,0,0,191,64,0,47,255,255,128,0,191,64,1,255,255,255,240,0,191,64,3,254,64,31,248,0,191,64,7,248,0,3,252,0,191,64,11,240,0,2,253,0,191,64,11,240,0,2,253,0,191,64,7,248,0,3,252,0,191,64,3,254,64,31,248,0,191,64,1,255,255,255,240,0,191,64,0,47,255,255,128,0,191,64,0,2,191,228,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,80,191,64,0,21,85,171,255,240,191,64,255,255,255,255,255,240,191,64,255,255,255,255,255,240,191,64,255,255,255,250,80,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,10,170,255,64,0,0,47,192,31,255,255,64,0,0,47,192,31,255,255,64,0,85,47,192,0,0,191,64,0,191,111,192,0,0,191,64,0,191,64,0,0,0,191,64,0,191,64,0,0,0,21,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,255,255,255,255,255,192,0,191,255,255,255,255,255,192,0,191,255,255,255,255,255,192,0,0,0,0,0,0,0,0, + // 0xc704 위 + 4,199,29,36,32,35,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,0,191,64,0,1,191,228,0,0,191,64,0,31,255,255,64,0,191,64,0,191,255,255,240,0,191,64,2,255,213,111,248,0,191,64,3,253,0,7,253,0,191,64,7,248,0,1,254,0,191,64,11,240,0,0,255,0,191,64,11,240,0,0,255,0,191,64,11,240,0,0,255,0,191,64,7,248,0,1,254,0,191,64,3,253,0,7,253,0,191,64,2,255,213,111,248,0,191,64,0,191,255,255,240,0,191,64,0,31,255,255,64,0,191,64,0,1,191,228,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,80,191,64,0,85,85,171,255,240,191,64,255,255,255,255,255,244,191,64,255,255,255,255,255,224,191,64,191,255,255,233,64,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,0,0,0,0,191,64, + // 0xc73c 으 + 60,199,31,29,232,35,2,0,0,0,10,255,254,64,0,0,0,0,255,255,255,248,0,0,0,11,255,255,255,255,64,0,0,47,254,80,22,255,224,0,0,191,224,0,0,47,244,0,0,255,64,0,0,7,252,0,2,253,0,0,0,2,253,0,3,252,0,0,0,0,255,0,3,248,0,0,0,0,255,0,3,248,0,0,0,0,255,0,3,248,0,0,0,0,255,0,3,252,0,0,0,0,255,0,2,253,0,0,0,2,253,0,0,255,64,0,0,7,252,0,0,191,224,0,0,47,244,0,0,47,254,64,22,255,224,0,0,11,255,255,255,255,64,0,0,0,255,255,255,248,0,0,0,0,11,255,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xc74c 음 + 76,199,31,35,24,35,2,252,0,0,26,255,254,144,0,0,0,2,255,255,255,254,0,0,0,31,255,255,255,255,208,0,0,191,253,64,6,255,244,0,0,255,128,0,0,15,252,0,2,254,0,0,0,3,253,0,2,253,0,0,0,1,254,0,2,253,0,0,0,1,254,0,2,254,0,0,0,3,253,0,0,255,128,0,0,15,252,0,0,191,253,64,6,255,244,0,0,31,255,255,255,255,208,0,0,2,255,255,255,254,0,0,0,0,26,255,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,253,0,0,0,2,252,0,1,253,0,0,0,2,252,0,1,253,0,0,0,2,252,0,1,253,0,0,0,2,252,0,1,253,0,0,0,2,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0, + // 0xc774 이 + 116,199,27,36,252,35,3,252,0,0,0,0,0,1,84,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,11,253,0,0,3,252,0,191,255,208,0,3,252,2,255,255,244,0,3,252,11,255,175,253,0,3,252,15,244,2,255,0,3,252,47,224,0,191,64,3,252,63,192,0,63,192,3,252,127,128,0,63,192,3,252,191,64,0,31,208,3,252,191,0,0,31,224,3,252,255,0,0,15,224,3,252,255,0,0,15,224,3,252,255,0,0,15,224,3,252,255,0,0,15,224,3,252,255,0,0,15,224,3,252,191,0,0,31,224,3,252,191,64,0,31,208,3,252,127,128,0,63,192,3,252,63,192,0,63,192,3,252,47,224,0,191,64,3,252,15,244,2,255,0,3,252,11,255,175,253,0,3,252,2,255,255,244,0,3,252,0,191,255,208,0,3,252,0,11,253,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,2,252, + // 0xc77c 일 + 124,199,29,36,32,35,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,0,191,0,0,31,255,208,0,0,191,0,1,255,255,253,0,0,191,0,7,255,255,255,128,0,191,0,15,253,1,255,208,0,191,0,63,224,0,47,240,0,191,0,63,192,0,15,244,0,191,0,127,128,0,7,244,0,191,0,127,64,0,7,248,0,191,0,127,128,0,7,244,0,191,0,63,192,0,15,244,0,191,0,63,224,0,47,240,0,191,0,15,253,1,255,208,0,191,0,7,255,255,255,128,0,191,0,1,255,255,253,0,0,191,0,0,31,255,208,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,255,0,0,31,255,255,255,255,255,0,0,31,255,255,255,255,255,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,191,0,0,15,255,255,255,255,255,0,0,15,255,255,255,255,255,0,0,15,255,255,255,255,255,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,255,255,255,255,255,192,0,15,255,255,255,255,255,192,0,15,255,255,255,255,255,192,0,0,0,0,0,0,0,0, + // 0xc77d 읽 + 125,199,28,36,252,35,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,191,0,11,255,128,0,0,191,0,191,255,248,0,0,191,3,255,255,255,64,0,191,15,254,70,255,192,0,191,47,240,0,63,224,0,191,63,192,0,15,240,0,191,127,128,0,11,244,0,191,127,64,0,7,248,0,191,127,64,0,7,248,0,191,127,128,0,11,244,0,191,63,192,0,15,240,0,191,47,240,0,47,240,0,191,15,254,70,255,192,0,191,3,255,255,255,64,0,191,0,191,255,248,0,0,191,0,11,255,128,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,254,63,255,255,0,255,255,254,63,255,255,0,255,255,254,63,255,255,0,0,0,254,0,0,191,0,0,0,254,0,0,191,0,191,255,254,0,0,191,0,255,255,254,0,0,191,0,255,255,254,0,0,191,0,255,0,0,0,0,191,0,255,0,0,0,0,191,0,255,0,5,144,0,191,0,255,255,255,240,0,191,0,255,255,255,240,0,191,0,255,255,250,80,0,191,0,0,0,0,0,0,21, + // 0xc785 입 + 133,199,28,36,252,35,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,191,0,11,255,144,0,0,191,0,191,255,253,0,0,191,3,255,255,255,64,0,191,15,254,86,255,208,0,191,47,240,0,47,240,0,191,63,192,0,15,244,0,191,63,128,0,7,248,0,191,127,128,0,3,248,0,191,127,64,0,3,248,0,191,127,128,0,7,248,0,191,63,192,0,11,244,0,191,47,240,0,31,240,0,191,15,253,1,191,208,0,191,7,255,255,255,128,0,191,0,255,255,254,0,0,191,0,31,255,224,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,224,0,0,0,191,0,15,224,0,0,0,191,0,15,224,0,0,0,191,0,15,224,0,0,0,191,0,15,255,255,255,255,255,0,15,255,255,255,255,255,0,15,255,255,255,255,255,0,15,224,0,0,0,191,0,15,224,0,0,0,191,0,15,224,0,0,0,191,0,15,224,0,0,0,191,0,15,255,255,255,255,255,0,15,255,255,255,255,255,0,15,255,255,255,255,255,0,0,0,0,0,0,0, + // 0xc790 자 + 144,199,33,36,68,35,1,252,0,0,0,0,0,0,84,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,31,255,255,255,255,1,253,0,0,31,255,255,255,255,1,253,0,0,31,255,255,255,255,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,127,208,0,1,254,0,0,0,0,191,224,0,1,255,255,192,0,0,255,240,0,1,255,255,192,0,1,255,244,0,1,255,255,192,0,3,255,252,0,1,253,0,0,0,7,249,254,0,1,253,0,0,0,15,240,255,64,1,253,0,0,0,47,224,127,192,1,253,0,0,0,127,192,63,240,1,253,0,0,1,255,64,15,252,1,253,0,0,7,255,0,7,255,65,253,0,0,47,252,0,1,255,209,253,0,0,127,240,0,0,127,129,253,0,0,47,192,0,0,15,1,253,0,0,14,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0, + // 0xc791 작 + 145,199,32,36,32,35,2,252,0,0,0,0,0,1,84,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,127,255,255,255,252,3,248,0,127,255,255,255,252,3,248,0,127,255,255,255,252,3,248,0,0,0,255,0,0,3,248,0,0,0,255,0,0,3,248,0,0,0,255,0,0,3,248,0,0,1,255,64,0,3,252,0,0,2,255,128,0,3,255,254,0,3,255,192,0,3,255,254,0,7,255,224,0,3,255,254,0,15,255,244,0,3,248,0,0,63,215,253,0,3,248,0,0,255,194,255,64,3,248,0,7,255,0,255,244,3,248,0,127,253,0,63,255,3,248,0,255,244,0,11,253,3,248,0,191,192,0,1,252,3,248,0,61,0,0,0,16,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,248,0,0,255,255,255,255,255,248,0,0,255,255,255,255,255,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0, + // 0xc798 잘 + 152,199,32,35,24,35,2,252,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,127,255,255,255,252,3,248,0,127,255,255,255,252,3,248,0,127,255,255,255,252,3,248,0,0,0,255,0,0,3,248,0,0,0,255,0,0,3,248,0,0,1,255,64,0,3,255,254,0,3,255,192,0,3,255,254,0,7,255,208,0,3,255,254,0,15,255,244,0,3,252,0,0,63,215,253,0,3,248,0,0,255,194,255,128,3,248,0,11,255,0,191,249,3,248,0,191,252,0,47,255,3,248,0,255,240,0,7,253,3,248,0,191,128,0,0,104,3,248,0,36,0,0,0,0,2,164,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,248,0,0,127,255,255,255,255,248,0,0,127,255,255,255,255,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,127,255,255,255,255,248,0,0,127,255,255,255,255,248,0,0,127,255,255,255,255,248,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,127,255,255,255,255,255,0,0,0,0,0,0,0,0,0, + // 0xc7a5 장 + 165,199,32,36,32,35,2,252,0,0,0,0,0,1,84,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,127,255,255,255,252,3,248,0,127,255,255,255,252,3,248,0,127,255,255,255,252,3,248,0,0,0,255,0,0,3,248,0,0,0,255,0,0,3,248,0,0,0,255,0,0,3,248,0,0,1,255,64,0,3,255,254,0,2,255,128,0,3,255,254,0,3,255,192,0,3,255,254,0,7,255,240,0,3,252,0,0,15,251,248,0,3,248,0,0,63,211,254,0,3,248,0,0,255,194,255,128,3,248,0,3,255,64,191,248,3,248,0,47,253,0,63,255,3,248,0,255,248,0,11,253,3,248,0,191,208,0,1,252,3,248,0,63,64,0,0,16,3,248,0,20,0,0,0,0,3,248,0,0,0,0,0,0,0,0,0,0,0,10,255,255,144,0,0,0,1,255,255,255,254,0,0,0,15,255,255,255,255,208,0,0,63,253,0,1,191,240,0,0,127,208,0,0,15,248,0,0,191,64,0,0,3,252,0,0,191,0,0,0,3,252,0,0,191,64,0,0,3,252,0,0,127,208,0,0,15,248,0,0,47,254,64,5,191,240,0,0,11,255,255,255,255,192,0,0,1,255,255,255,254,0,0,0,0,6,255,254,144,0,0, + // 0xc7ac 재 + 172,199,30,36,32,35,2,252,0,0,0,0,0,0,5,64,0,0,0,0,6,160,31,208,0,0,0,0,15,240,31,208,0,0,0,0,15,240,31,208,0,0,0,0,15,240,31,208,191,255,255,255,15,240,31,208,191,255,255,255,15,240,31,208,191,255,255,255,15,240,31,208,0,7,244,0,15,240,31,208,0,7,244,0,15,240,31,208,0,7,244,0,15,240,31,208,0,11,248,0,15,240,31,208,0,11,248,0,15,240,31,208,0,11,248,0,15,240,31,208,0,15,252,0,15,240,31,208,0,15,252,0,15,255,255,208,0,31,253,0,15,255,255,208,0,47,254,0,15,255,255,208,0,63,255,0,15,240,31,208,0,63,191,128,15,240,31,208,0,255,47,192,15,240,31,208,1,254,31,240,15,240,31,208,3,253,15,248,15,240,31,208,11,248,3,254,15,240,31,208,47,240,1,255,207,240,31,208,255,208,0,191,207,240,31,208,255,128,0,31,15,240,31,208,126,0,0,1,15,240,31,208,20,0,0,0,15,240,31,208,0,0,0,0,15,240,31,208,0,0,0,0,15,240,31,208,0,0,0,0,15,240,31,208,0,0,0,0,15,240,31,208,0,0,0,0,15,240,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208, + // 0xc800 저 + 0,200,29,36,32,35,2,252,0,0,0,0,0,0,21,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,63,255,255,255,254,0,191,64,63,255,255,255,254,0,191,64,63,255,255,255,254,0,191,64,0,0,255,64,0,0,191,64,0,0,191,0,0,0,191,64,0,0,191,0,0,0,191,64,0,0,191,64,0,0,191,64,0,0,255,64,0,0,191,64,0,0,255,64,0,0,191,64,0,0,255,128,31,255,255,64,0,1,255,192,31,255,255,64,0,2,255,192,31,255,255,64,0,3,255,224,0,0,191,64,0,7,255,240,0,0,191,64,0,11,247,244,0,0,191,64,0,31,227,252,0,0,191,64,0,63,193,255,0,0,191,64,0,191,128,255,128,0,191,64,1,255,0,127,208,0,191,64,7,254,0,47,248,0,191,64,31,252,0,15,255,0,191,64,255,240,0,3,255,128,191,64,255,192,0,0,255,0,191,64,63,0,0,0,29,0,191,64,40,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,127,64, + // 0xc804 전 + 4,200,29,36,32,35,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,63,255,255,255,253,0,191,64,63,255,255,255,253,0,191,64,63,255,255,255,253,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,255,64,0,0,191,64,0,0,255,128,0,0,191,64,0,0,255,192,15,255,255,64,0,1,255,192,15,255,255,64,0,3,255,224,15,255,255,64,0,7,255,240,0,0,191,64,0,15,247,252,0,0,191,64,0,63,210,255,0,0,191,64,0,255,192,255,208,0,191,64,7,255,0,63,252,0,191,64,127,253,0,31,255,0,191,64,255,244,0,3,254,0,191,64,63,192,0,0,124,0,191,64,45,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,11,240,0,0,0,191,64,0,15,240,0,0,0,191,64,0,15,240,0,0,0,21,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,255,255,255,255,255,192,0,15,255,255,255,255,255,192,0,15,255,255,255,255,255,192,0,0,0,0,0,0,0,0, + // 0xc815 정 + 21,200,29,36,32,35,2,252,0,0,0,0,0,0,21,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,63,255,255,255,253,0,191,64,63,255,255,255,253,0,191,64,63,255,255,255,253,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,191,64,0,0,255,64,0,0,191,64,0,0,255,128,0,0,191,64,0,1,255,192,11,255,255,64,0,2,255,224,11,255,255,64,0,3,255,240,11,255,255,64,0,11,251,248,0,0,191,64,0,47,243,254,0,0,191,64,0,127,209,255,128,0,191,64,1,255,128,191,244,0,191,64,31,255,0,47,255,0,191,64,191,252,0,11,255,0,191,64,127,240,0,1,252,0,191,64,63,128,0,0,24,0,191,64,24,0,0,0,0,0,191,64,0,0,0,0,0,0,0,0,0,0,1,191,255,228,0,0,0,0,127,255,255,255,128,0,0,2,255,255,255,255,248,0,0,11,255,144,0,111,253,0,0,15,244,0,0,2,255,0,0,47,224,0,0,0,191,64,0,47,208,0,0,0,127,64,0,47,224,0,0,0,191,64,0,15,244,0,0,2,255,0,0,11,255,144,0,111,253,0,0,2,255,255,255,255,248,0,0,0,127,255,255,255,128,0,0,0,1,191,255,164,0,0, + // 0xc81c 제 + 28,200,29,36,32,35,2,252,0,0,0,0,0,0,5,64,0,0,0,0,6,160,47,192,0,0,0,0,7,240,47,192,0,0,0,0,7,240,47,192,0,0,0,0,7,240,47,192,127,255,255,255,7,240,47,192,127,255,255,255,7,240,47,192,127,255,255,255,7,240,47,192,0,7,244,0,7,240,47,192,0,7,244,0,7,240,47,192,0,7,244,0,7,240,47,192,0,11,244,0,7,240,47,192,0,11,248,0,7,240,47,192,0,11,248,31,255,240,47,192,0,15,248,31,255,240,47,192,0,15,252,31,255,240,47,192,0,31,253,0,11,240,47,192,0,47,254,0,7,240,47,192,0,63,255,0,7,240,47,192,0,127,127,64,7,240,47,192,0,255,63,192,7,240,47,192,1,253,31,224,7,240,47,192,3,252,15,244,7,240,47,192,15,244,7,252,7,240,47,192,47,240,2,255,71,240,47,192,255,208,0,255,199,240,47,192,255,64,0,63,71,240,47,192,126,0,0,10,7,240,47,192,36,0,0,0,7,240,47,192,0,0,0,0,7,240,47,192,0,0,0,0,7,240,47,192,0,0,0,0,7,240,47,192,0,0,0,0,7,240,47,192,0,0,0,0,7,240,47,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,31,192, + // 0xc8fd 죽 + 253,200,31,34,16,35,2,252,3,255,255,255,255,255,255,0,3,255,255,255,255,255,255,0,3,255,255,255,255,255,255,0,0,0,0,127,244,0,0,0,0,0,0,191,248,0,0,0,0,0,1,255,252,0,0,0,0,0,7,254,255,0,0,0,0,0,47,248,191,224,0,0,0,2,255,224,63,253,0,0,1,191,255,64,11,255,249,0,31,255,252,0,1,255,255,192,15,255,144,0,0,31,255,128,7,228,0,0,0,0,111,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,2,255,255,255,255,255,252,0,2,255,255,255,255,255,252,0,2,255,255,255,255,255,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,2,252,0, + // 0xc900 준 + 0,201,31,34,16,35,2,252,3,255,255,255,255,255,255,0,3,255,255,255,255,255,255,0,3,255,255,255,255,255,255,0,0,0,0,127,244,0,0,0,0,0,0,191,244,0,0,0,0,0,0,255,252,0,0,0,0,0,2,255,254,0,0,0,0,0,11,252,255,64,0,0,0,0,47,240,127,224,0,0,0,2,255,224,47,253,0,0,0,111,255,64,11,255,228,0,15,255,253,0,1,255,255,192,15,255,208,0,0,47,255,128,7,253,0,0,0,2,255,64,1,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,1,254,0,15,224,0,0,0,1,254,0,15,224,0,0,0,1,254,0,15,224,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,255,255,255,255,254,0,1,255,255,255,255,255,254,0,1,255,255,255,255,255,254,0,0,0,0,0,0,0,0,0, + // 0xc911 중 + 17,201,31,34,16,35,2,252,3,255,255,255,255,255,255,0,3,255,255,255,255,255,255,0,3,255,255,255,255,255,255,0,0,0,0,127,244,0,0,0,0,0,0,255,248,0,0,0,0,0,1,255,253,0,0,0,0,0,7,254,255,64,0,0,0,0,47,248,191,224,0,0,0,6,255,224,63,254,0,0,6,255,255,64,11,255,250,64,31,255,252,0,1,255,255,192,15,255,128,0,0,27,255,128,7,164,0,0,0,0,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,27,255,254,144,0,0,0,7,255,255,255,254,0,0,0,47,255,255,255,255,208,0,0,127,249,0,1,191,240,0,0,255,128,0,0,15,252,0,1,255,0,0,0,3,252,0,1,254,0,0,0,3,252,0,1,255,0,0,0,3,252,0,0,255,128,0,0,15,252,0,0,127,249,0,1,191,240,0,0,47,255,255,255,255,208,0,0,2,255,255,255,254,0,0,0,0,26,255,254,144,0,0, + // 0xc990 즐 + 144,201,31,34,16,35,2,252,3,255,255,255,255,255,255,0,3,255,255,255,255,255,255,0,3,255,255,255,255,255,255,0,0,0,0,63,240,0,0,0,0,0,0,191,248,0,0,0,0,0,2,255,253,0,0,0,0,0,15,253,255,128,0,0,0,1,191,240,127,248,0,0,1,175,255,192,31,255,229,0,31,255,253,0,2,255,255,192,15,255,208,0,0,31,255,192,7,164,0,0,0,0,107,64,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,255,255,255,255,255,0,1,255,255,255,255,255,255,0,1,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0, + // 0xc9c0 지 + 192,201,28,36,252,35,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,63,255,255,255,255,0,255,63,255,255,255,255,0,255,63,255,255,255,255,0,255,0,0,191,128,0,0,255,0,0,127,128,0,0,255,0,0,127,128,0,0,255,0,0,127,128,0,0,255,0,0,127,128,0,0,255,0,0,191,128,0,0,255,0,0,191,192,0,0,255,0,0,255,192,0,0,255,0,0,255,208,0,0,255,0,1,255,224,0,0,255,0,3,255,240,0,0,255,0,7,251,248,0,0,255,0,15,242,253,0,0,255,0,47,224,255,0,0,255,0,127,192,191,192,0,255,0,255,128,63,224,0,255,3,255,0,31,252,0,255,15,253,0,11,255,128,255,191,244,0,1,255,192,255,255,208,0,0,127,64,255,63,64,0,0,11,0,255,24,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,191, + // 0xcc98 처 + 152,204,29,36,32,35,2,252,0,0,0,0,0,0,21,0,0,0,106,0,0,0,191,64,0,0,191,0,0,0,191,64,0,0,191,0,0,0,191,64,0,0,191,0,0,0,191,64,0,0,191,0,0,0,191,64,0,0,255,64,0,0,191,64,63,255,255,255,253,0,191,64,63,255,255,255,253,0,191,64,63,255,255,255,253,0,191,64,0,0,191,0,0,0,191,64,0,0,191,0,0,0,191,64,0,0,191,0,0,0,191,64,0,0,255,64,0,0,191,64,0,0,255,64,0,0,191,64,0,0,255,128,31,255,255,64,0,1,255,192,31,255,255,64,0,2,255,208,31,255,255,64,0,3,255,224,0,0,191,64,0,11,251,240,0,0,191,64,0,15,227,252,0,0,191,64,0,63,210,254,0,0,191,64,0,191,192,255,128,0,191,64,1,255,0,127,208,0,191,64,7,254,0,47,248,0,191,64,47,248,0,11,255,64,191,64,255,240,0,2,255,0,191,64,127,128,0,0,125,0,191,64,45,0,0,0,4,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,127,64, + // 0xcd08 초 + 8,205,31,31,248,35,2,0,0,0,0,26,144,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,47,224,0,0,0,7,255,255,255,255,255,255,0,7,255,255,255,255,255,255,0,7,255,255,255,255,255,255,0,0,0,0,47,224,0,0,0,0,0,0,63,224,0,0,0,0,0,0,63,240,0,0,0,0,0,0,191,248,0,0,0,0,0,1,255,253,0,0,0,0,0,7,254,255,0,0,0,0,0,31,248,191,208,0,0,0,0,255,224,63,248,0,0,0,31,255,128,11,255,144,0,27,255,253,0,1,255,255,128,31,255,224,0,0,47,255,192,15,254,0,5,64,2,255,128,6,64,0,31,208,0,6,64,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,0,0,0,31,208,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xcd95 축 + 149,205,31,36,32,35,2,252,0,0,0,21,64,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,3,255,255,255,255,255,255,0,3,255,255,255,255,255,255,0,3,255,255,255,255,255,255,0,0,0,0,63,240,0,0,0,0,0,0,127,240,0,0,0,0,0,0,255,252,0,0,0,0,0,7,255,255,64,0,0,0,0,127,244,191,244,0,0,0,111,255,208,47,255,148,0,31,255,254,0,3,255,255,192,15,255,224,0,0,111,255,128,7,164,0,0,0,0,111,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,2,255,255,255,255,255,252,0,2,255,255,255,255,255,252,0,2,255,255,255,255,255,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,2,252,0, + // 0xcd9c 출 + 156,205,31,36,32,35,2,252,0,0,0,5,64,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,3,255,255,255,255,255,255,0,3,255,255,255,255,255,255,0,3,255,255,255,255,255,255,0,0,0,0,63,240,0,0,0,0,0,0,255,248,0,0,0,0,0,3,255,255,0,0,0,0,0,111,248,255,228,0,0,1,111,255,224,63,255,165,0,31,255,255,64,7,255,255,192,15,255,228,0,0,111,255,192,11,164,0,0,0,0,107,64,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,170,170,170,170,168,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,254,0,0,0,0,0,0,1,255,255,255,255,255,255,0,1,255,255,255,255,255,255,0,1,255,255,255,255,255,255,0, + // 0xcda4 춤 + 164,205,31,36,32,35,2,252,0,0,0,5,64,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,3,255,255,255,255,255,255,0,3,255,255,255,255,255,255,0,3,255,255,255,255,255,255,0,0,0,0,63,240,0,0,0,0,0,0,127,240,0,0,0,0,0,0,255,252,0,0,0,0,0,7,255,255,64,0,0,0,0,127,244,191,244,0,0,0,111,255,208,47,255,148,0,31,255,254,0,3,255,255,192,15,255,224,0,0,111,255,192,11,164,0,0,0,0,111,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,254,0,0,0,2,252,0,1,253,0,0,0,2,252,0,1,253,0,0,0,2,252,0,1,253,0,0,0,2,252,0,1,253,0,0,0,2,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0, + // 0xcde8 취 + 232,205,29,36,32,35,2,252,0,0,21,64,0,0,106,0,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,15,255,255,255,255,64,191,64,15,255,255,255,255,64,191,64,15,255,255,255,255,64,191,64,0,0,63,208,0,0,191,64,0,0,63,208,0,0,191,64,0,0,127,240,0,0,191,64,0,0,255,248,0,0,191,64,0,2,255,253,0,0,191,64,0,11,253,255,128,0,191,64,0,127,244,127,249,0,191,64,11,255,208,31,255,192,191,64,31,255,64,7,255,64,191,64,15,248,0,0,127,0,191,64,6,64,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,85,171,240,191,64,255,255,255,255,255,244,191,64,255,255,255,255,255,244,191,64,191,255,255,254,148,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,47,192,0,0,191,64,0,0,42,128,0,0,191,64,0,0,0,0,0,0,191,64, + // 0xce58 치 + 88,206,28,36,252,35,2,252,0,0,0,0,0,0,85,0,0,42,128,0,0,191,0,0,63,192,0,0,191,0,0,63,192,0,0,191,0,0,63,192,0,0,191,0,0,63,192,0,0,191,0,0,63,192,0,0,191,47,255,255,255,255,64,191,47,255,255,255,255,64,191,47,255,255,255,255,64,191,0,0,63,192,0,0,191,0,0,63,192,0,0,191,0,0,63,192,0,0,191,0,0,63,192,0,0,191,0,0,127,192,0,0,191,0,0,127,208,0,0,191,0,0,191,224,0,0,191,0,0,255,240,0,0,191,0,1,255,244,0,0,191,0,3,251,252,0,0,191,0,7,245,254,0,0,191,0,31,240,255,128,0,191,0,63,208,127,208,0,191,0,255,128,47,244,0,191,3,255,0,15,254,0,191,31,253,0,3,255,208,191,127,244,0,0,255,192,191,47,208,0,0,31,0,191,14,0,0,0,1,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191,0,0,0,0,0,0,191, + // 0xce68 침 + 104,206,28,35,245,35,2,252,0,0,63,128,0,0,191,0,0,63,128,0,0,191,0,0,63,128,0,0,191,0,0,127,192,0,0,191,47,255,255,255,255,0,191,47,255,255,255,255,0,191,47,255,255,255,255,0,191,0,0,63,192,0,0,191,0,0,127,192,0,0,191,0,0,191,192,0,0,191,0,0,255,224,0,0,191,0,1,255,240,0,0,191,0,3,255,252,0,0,191,0,15,246,255,0,0,191,0,63,240,255,208,0,191,1,255,192,63,253,0,191,47,255,0,15,255,192,191,127,252,0,2,255,64,191,47,224,0,0,47,0,191,14,0,0,0,0,0,191,0,0,0,0,0,0,85,0,0,0,0,0,0,0,0,15,255,255,255,255,255,0,15,255,255,255,255,255,0,15,255,255,255,255,255,0,15,224,0,0,0,191,0,15,224,0,0,0,191,0,15,224,0,0,0,191,0,15,224,0,0,0,191,0,15,224,0,0,0,191,0,15,224,0,0,0,191,0,15,255,255,255,255,255,0,15,255,255,255,255,255,0,15,255,255,255,255,255,0,0,0,0,0,0,0, + // 0xce74 카 + 116,206,32,36,32,35,2,252,0,0,0,0,0,1,80,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,15,255,255,255,224,7,244,0,15,255,255,255,224,7,244,0,15,255,255,255,224,7,244,0,0,0,0,31,224,7,244,0,0,0,0,31,208,7,244,0,0,0,0,47,208,7,244,0,0,0,0,63,192,7,244,0,0,0,0,63,192,7,244,0,0,0,0,63,192,7,244,0,1,90,175,255,128,7,244,0,191,255,255,255,64,7,249,84,127,255,255,255,0,7,255,254,127,254,166,254,0,7,255,254,16,0,3,252,0,7,255,254,0,0,11,248,0,7,244,0,0,0,31,240,0,7,244,0,0,0,63,224,0,7,244,0,0,0,255,192,0,7,244,0,0,3,255,0,0,7,244,0,0,31,253,0,0,7,244,0,0,127,244,0,0,7,244,0,3,255,208,0,0,7,244,0,47,255,0,0,0,7,244,0,191,248,0,0,0,7,244,0,63,208,0,0,0,7,244,0,30,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0, + // 0xcf1c 켜 + 28,207,29,36,32,35,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,15,255,255,255,208,0,191,64,15,255,255,255,192,0,191,64,15,255,255,255,192,0,191,64,0,0,0,47,192,0,191,64,0,0,0,63,192,0,191,64,0,0,0,63,192,0,191,64,0,0,0,63,255,255,255,64,0,0,0,127,255,255,255,64,0,0,1,191,255,255,255,64,171,255,255,255,0,0,191,64,255,255,255,255,0,0,191,64,191,255,255,254,0,0,191,64,191,169,67,252,0,0,191,64,0,0,11,248,0,0,191,64,0,0,15,244,0,0,191,64,0,0,47,224,0,0,191,64,0,0,191,192,255,255,255,64,0,1,255,64,255,255,255,64,0,7,254,0,255,255,255,64,0,47,252,0,0,0,191,64,0,191,240,0,0,0,191,64,7,255,192,0,0,0,191,64,63,254,0,0,0,0,191,64,255,244,0,0,0,0,191,64,127,192,0,0,0,0,191,64,45,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,127,64, + // 0xd0d1 탑 + 209,208,31,35,24,35,3,252,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,191,255,255,255,0,15,224,0,191,255,255,255,0,15,224,0,191,255,255,255,0,15,224,0,191,0,0,0,0,15,224,0,191,0,0,0,0,15,224,0,191,0,0,0,0,15,240,0,191,255,255,254,0,15,255,248,191,255,255,254,0,15,255,248,191,255,255,254,0,15,255,248,191,64,0,0,0,15,224,0,191,0,0,0,0,15,224,0,191,0,0,0,0,15,224,0,191,64,0,90,244,15,224,0,191,255,255,255,244,15,224,0,191,255,255,255,248,15,224,0,191,255,255,250,80,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0,85,0,0,0,5,80,0,0,254,0,0,0,15,224,0,0,254,0,0,0,15,224,0,0,254,0,0,0,15,224,0,0,255,255,255,255,255,224,0,0,255,255,255,255,255,224,0,0,255,255,255,255,255,224,0,0,254,0,0,0,15,224,0,0,254,0,0,0,15,224,0,0,254,0,0,0,15,224,0,0,254,0,0,0,15,224,0,0,255,255,255,255,255,224,0,0,255,255,255,255,255,224,0,0,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0xd130 터 + 48,209,28,36,252,35,3,252,0,0,0,0,0,0,84,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,191,255,255,255,64,2,253,191,255,255,255,64,2,253,191,255,255,255,64,2,253,191,64,0,0,0,2,253,191,64,0,0,0,2,253,191,64,0,0,0,2,253,191,64,0,0,0,2,253,191,64,0,0,0,2,253,191,64,0,0,0,2,253,191,64,0,0,0,2,253,191,255,255,252,63,255,253,191,255,255,252,63,255,253,191,255,255,252,63,255,253,191,64,0,0,0,2,253,191,64,0,0,0,2,253,191,64,0,0,0,2,253,191,64,0,0,0,2,253,191,64,0,0,0,2,253,191,64,0,0,0,2,253,191,64,0,90,180,2,253,191,255,255,255,244,2,253,191,255,255,255,248,2,253,191,255,255,250,80,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,1,253, + // 0xd14c 테 + 76,209,28,36,252,35,3,252,0,0,0,0,0,0,21,0,0,0,0,26,128,191,0,0,0,0,47,192,191,0,0,0,0,47,192,191,0,0,0,0,47,192,191,255,255,255,192,47,192,191,255,255,255,192,47,192,191,255,255,255,192,47,192,191,255,0,0,0,47,192,191,255,0,0,0,47,192,191,255,0,0,0,47,192,191,255,0,0,0,47,192,191,255,0,0,0,47,192,191,255,0,0,0,47,192,191,255,255,253,63,255,192,191,255,255,253,63,255,192,191,255,255,253,63,255,192,191,255,0,0,0,47,192,191,255,0,0,0,47,192,191,255,0,0,0,47,192,191,255,0,0,0,47,192,191,255,0,0,0,47,192,191,255,0,0,0,47,192,191,255,0,0,0,47,192,191,255,1,90,244,47,192,191,255,255,255,244,47,192,191,255,255,255,248,47,192,191,255,255,250,80,47,192,191,0,0,0,0,47,192,191,0,0,0,0,47,192,191,0,0,0,0,47,192,191,0,0,0,0,47,192,191,0,0,0,0,47,192,191,0,0,0,0,47,192,191,0,0,0,0,5,64,191,0,0,0,0,0,0,127, + // 0xd1a0 토 + 160,209,31,29,232,35,2,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,255,255,255,255,244,0,0,255,255,255,255,255,244,0,0,255,255,255,255,255,244,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,255,255,255,255,254,0,0,255,255,255,255,255,254,0,0,255,255,255,255,255,254,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,224,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252, + // 0xd2b8 트 + 184,210,31,28,224,35,2,0,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,255,255,255,255,255,248,0,0,255,255,255,255,255,248,0,0,255,255,255,255,255,248,0,0,255,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,255,255,255,255,255,254,0,0,255,255,255,255,255,254,0,0,255,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xd39c 펜 + 156,211,30,36,32,35,2,252,0,0,0,0,0,0,21,64,0,0,0,0,2,164,47,192,0,0,0,0,3,248,47,192,0,0,0,0,3,248,47,192,191,255,255,255,3,248,47,192,191,255,255,255,3,248,47,192,191,255,255,255,3,248,47,192,3,244,15,208,3,248,47,192,3,244,15,208,3,248,47,192,3,244,15,208,3,248,47,192,3,244,15,208,3,248,47,192,3,244,15,211,255,248,47,192,3,244,15,211,255,248,47,192,3,244,15,211,255,248,47,192,3,244,15,208,3,248,47,192,3,244,15,208,3,248,47,192,3,244,15,208,3,248,47,192,3,244,15,230,67,248,47,192,255,255,255,255,195,248,47,192,255,255,255,255,195,248,47,192,255,255,255,233,3,248,47,192,0,0,0,0,3,248,47,192,0,0,0,0,3,248,47,192,0,0,0,0,3,248,47,192,0,7,244,0,3,248,47,192,0,7,244,0,3,248,47,192,0,7,244,0,0,0,47,192,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,244,0,0,0,0,0,0,7,255,255,255,255,255,240,0,7,255,255,255,255,255,240,0,7,255,255,255,255,255,240,0,0,0,0,0,0,0,0, + // 0xd504 프 + 4,213,31,28,224,35,2,0,11,255,255,255,255,255,255,64,11,255,255,255,255,255,255,64,11,255,255,255,255,255,255,64,0,2,254,0,2,253,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,1,253,0,2,252,0,0,0,2,254,0,2,253,0,0,7,255,255,255,255,255,255,0,7,255,255,255,255,255,255,0,7,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xd558 하 + 88,213,33,36,68,35,1,252,0,0,0,0,0,0,84,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,254,0,0,127,255,255,255,255,193,254,0,0,127,255,255,255,255,193,254,0,0,127,255,255,255,255,193,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,2,255,248,0,1,254,0,0,0,31,255,255,64,1,254,0,0,0,191,255,255,208,1,254,85,0,1,255,144,127,240,1,255,255,192,3,253,0,11,248,1,255,255,192,3,252,0,3,252,1,255,255,192,7,244,0,2,253,1,254,0,0,11,240,0,1,253,1,254,0,0,11,240,0,1,253,1,254,0,0,7,244,0,2,253,1,254,0,0,3,252,0,3,252,1,254,0,0,3,253,0,11,248,1,254,0,0,1,255,144,127,240,1,254,0,0,0,191,255,255,208,1,254,0,0,0,47,255,255,64,1,254,0,0,0,2,255,248,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,253,0,0, + // 0xd569 합 + 105,213,32,36,32,35,2,252,0,0,170,0,0,1,84,0,0,0,255,0,0,3,248,0,0,0,255,0,0,3,248,0,0,0,255,0,0,3,248,0,255,255,255,255,255,3,248,0,255,255,255,255,255,3,248,0,255,255,255,255,255,3,248,0,0,0,0,0,0,3,248,0,0,6,190,144,0,3,248,0,0,127,255,253,0,3,252,0,2,255,255,255,192,3,255,254,7,254,0,191,224,3,255,254,15,244,0,15,240,3,255,254,15,224,0,11,244,3,248,0,15,224,0,7,244,3,248,0,15,224,0,11,244,3,248,0,15,244,0,15,240,3,248,0,7,254,0,127,224,3,248,0,2,255,255,255,192,3,248,0,0,127,255,254,0,3,248,0,0,6,191,144,0,3,248,0,0,0,0,0,0,1,84,0,0,21,0,0,0,0,16,0,0,63,128,0,0,3,248,0,0,63,128,0,0,3,248,0,0,63,128,0,0,3,248,0,0,63,255,255,255,255,248,0,0,63,255,255,255,255,248,0,0,63,255,255,255,255,248,0,0,63,128,0,0,3,248,0,0,63,128,0,0,3,248,0,0,63,128,0,0,3,248,0,0,63,255,255,255,255,248,0,0,63,255,255,255,255,248,0,0,63,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0xd648 홈 + 72,214,31,35,24,35,2,253,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,47,255,255,255,255,255,255,192,47,255,255,255,255,255,255,192,47,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,5,170,169,64,0,0,0,2,255,255,255,253,0,0,0,31,255,255,255,255,208,0,0,127,249,0,1,191,240,0,0,191,192,0,0,15,248,0,0,255,64,0,0,11,248,0,0,191,192,0,0,15,248,0,0,127,249,0,1,191,240,0,0,31,255,255,255,255,208,0,0,2,255,255,255,254,0,0,0,0,6,191,249,64,0,0,0,0,0,47,208,0,0,0,0,0,0,47,208,0,0,0,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,253,0,0,0,2,252,0,1,253,0,0,0,2,252,0,1,253,0,0,0,2,252,0,1,253,0,0,0,2,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0,1,255,255,255,255,255,252,0, + // 0xd654 화 + 84,214,33,35,59,35,1,252,0,0,47,208,0,0,254,0,0,0,0,47,208,0,0,254,0,0,0,0,47,208,0,0,254,0,0,0,0,47,208,0,0,254,0,0,63,255,255,255,255,224,254,0,0,63,255,255,255,255,224,254,0,0,63,255,255,255,255,224,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,1,175,232,0,0,254,0,0,0,31,255,255,128,0,254,0,0,0,127,255,255,240,0,254,0,0,0,255,128,27,252,0,254,0,0,2,253,0,2,253,0,254,0,0,3,252,0,0,254,0,255,255,128,3,252,0,0,253,0,255,255,128,2,252,0,2,253,0,255,255,128,1,255,0,3,252,0,255,0,0,0,255,208,47,248,0,254,0,0,0,63,255,255,240,0,254,0,0,0,15,255,255,128,0,254,0,0,0,1,191,244,0,0,254,0,0,0,0,47,208,0,0,254,0,0,0,0,47,208,0,0,254,0,0,0,0,47,213,106,240,254,0,0,127,255,255,255,255,240,254,0,0,63,255,255,255,255,240,254,0,0,63,255,255,254,164,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0, + // 0xd788 히 + 136,215,28,36,252,35,2,252,0,0,0,0,0,0,85,0,0,63,192,0,0,255,0,0,63,192,0,0,255,0,0,63,192,0,0,255,0,0,63,192,0,0,255,0,0,63,192,0,0,255,127,255,255,255,255,192,255,127,255,255,255,255,192,255,127,255,255,255,255,192,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,2,255,248,0,0,255,0,31,255,255,64,0,255,0,191,255,255,224,0,255,1,255,144,127,244,0,255,3,253,0,11,252,0,255,7,248,0,3,252,0,255,11,244,0,1,253,0,255,11,240,0,1,254,0,255,11,240,0,1,254,0,255,11,244,0,1,253,0,255,7,248,0,3,252,0,255,3,253,0,11,252,0,255,1,255,144,111,244,0,255,0,191,255,255,224,0,255,0,47,255,255,64,0,255,0,2,255,248,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,191, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Latin_Extended_A_28.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Latin_Extended_A_28.cpp new file mode 100644 index 0000000000..d3e85b6375 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Latin_Extended_A_28.cpp @@ -0,0 +1,288 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Latin Extended-A 38pt, capital 'A' height: 28px, width: 100%, range: 0x0100-0x017f +extern const uint8_t NotoSans_Medium_Latin_Extended_A_28[21187] = { + 130,28,0,1,127,1,37,246, // unifont_t + // 0x0100 Ā + 25,33,231,25,0,0,0,7,255,255,240,0,0,0,7,255,255,240,0,0,0,7,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x0101 ā + 18,27,135,22,1,255,0,255,255,254,0,0,255,255,254,0,0,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x0102 Ă + 25,36,252,25,0,0,0,5,0,0,84,0,0,0,15,128,0,248,0,0,0,11,228,7,240,0,0,0,3,255,255,224,0,0,0,1,255,255,128,0,0,0,0,47,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x0103 ă + 18,30,150,22,1,255,0,80,0,5,0,1,240,0,47,0,0,253,1,190,0,0,127,255,252,0,0,47,255,244,0,0,6,255,128,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x0104 Ą + 25,37,3,25,0,247,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128,0,0,0,0,0,188,0,0,0,0,0,2,244,0,0,0,0,0,7,224,0,0,0,0,0,15,192,0,0,0,0,0,15,192,0,0,0,0,0,15,224,0,0,0,0,0,11,255,128,0,0,0,0,3,255,128,0,0,0,0,0,105,0, + // 0x0105 ą + 19,30,150,22,1,247,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,11,192,0,0,0,47,64,0,0,0,126,0,0,0,0,252,0,0,0,0,252,0,0,0,0,253,0,0,0,0,191,248,0,0,0,63,248,0,0,0,6,144, + // 0x0106 Ć + 21,37,222,24,2,255,0,0,0,31,248,0,0,0,0,63,224,0,0,0,0,191,128,0,0,0,1,254,0,0,0,0,3,248,0,0,0,0,11,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,85,0,0,0,1,255,255,249,0,0,31,255,255,255,128,0,127,255,255,255,0,1,255,244,1,191,0,3,255,64,0,4,0,15,252,0,0,0,0,31,244,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,63,208,0,0,0,0,63,240,0,0,0,0,31,244,0,0,0,0,15,252,0,0,0,0,7,255,64,0,0,0,2,255,249,1,111,0,0,191,255,255,255,0,0,31,255,255,255,0,0,2,255,255,249,0,0,0,1,84,0,0, + // 0x0107 ć + 15,30,120,19,2,255,0,0,15,252,0,0,47,240,0,0,63,192,0,0,255,0,0,2,252,0,0,7,240,0,0,0,0,0,0,0,0,0,0,6,254,144,0,191,255,252,3,255,255,252,15,255,171,248,47,244,0,16,63,208,0,0,127,192,0,0,191,128,0,0,255,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,0,191,128,0,0,127,192,0,0,63,240,0,0,31,253,0,124,11,255,255,252,2,255,255,252,0,47,255,244,0,0,84,0, + // 0x0108 Ĉ + 21,37,222,24,2,255,0,0,15,252,0,0,0,0,63,254,0,0,0,0,255,255,64,0,0,2,253,47,208,0,0,11,244,11,244,0,0,31,128,1,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,85,0,0,0,1,255,255,249,0,0,31,255,255,255,128,0,127,255,255,255,0,1,255,244,1,191,0,3,255,64,0,4,0,15,252,0,0,0,0,31,244,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,63,208,0,0,0,0,63,240,0,0,0,0,31,244,0,0,0,0,15,252,0,0,0,0,7,255,64,0,0,0,2,255,249,1,111,0,0,191,255,255,255,0,0,31,255,255,255,0,0,2,255,255,249,0,0,0,1,84,0,0, + // 0x0109 ĉ + 16,30,120,19,2,255,0,15,253,0,0,47,255,0,0,127,255,192,0,254,31,240,3,248,3,248,15,208,0,190,0,0,0,0,0,0,0,0,0,6,254,144,0,191,255,252,3,255,255,252,15,255,171,248,47,244,0,16,63,208,0,0,127,192,0,0,191,128,0,0,255,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,0,191,128,0,0,127,192,0,0,63,240,0,0,31,253,0,124,11,255,255,252,2,255,255,252,0,47,255,244,0,0,84,0, + // 0x010a Ċ + 21,36,216,24,2,255,0,0,7,240,0,0,0,0,15,248,0,0,0,0,15,248,0,0,0,0,7,240,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,85,0,0,0,1,255,255,249,0,0,31,255,255,255,128,0,127,255,255,255,0,1,255,244,1,191,0,3,255,64,0,4,0,15,252,0,0,0,0,31,244,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,63,208,0,0,0,0,63,240,0,0,0,0,31,244,0,0,0,0,15,252,0,0,0,0,7,255,64,0,0,0,2,255,249,1,111,0,0,191,255,255,255,0,0,31,255,255,255,0,0,2,255,255,249,0,0,0,1,84,0,0, + // 0x010b ċ + 15,29,116,19,2,255,0,3,248,0,0,7,252,0,0,7,252,0,0,3,248,0,0,0,64,0,0,0,0,0,0,0,0,0,0,6,254,144,0,191,255,252,3,255,255,252,15,255,171,248,47,244,0,16,63,208,0,0,127,192,0,0,191,128,0,0,255,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,0,191,128,0,0,127,192,0,0,63,240,0,0,31,253,0,124,11,255,255,252,2,255,255,252,0,47,255,244,0,0,84,0, + // 0x010c Č + 21,37,222,24,2,255,0,31,192,1,252,0,0,7,244,11,240,0,0,2,253,47,208,0,0,0,191,255,64,0,0,0,63,254,0,0,0,0,15,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,85,0,0,0,1,255,255,249,0,0,31,255,255,255,128,0,127,255,255,255,0,1,255,244,1,191,0,3,255,64,0,4,0,15,252,0,0,0,0,31,244,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,63,208,0,0,0,0,63,240,0,0,0,0,31,244,0,0,0,0,15,252,0,0,0,0,7,255,64,0,0,0,2,255,249,1,111,0,0,191,255,255,255,0,0,31,255,255,255,0,0,2,255,255,249,0,0,0,1,84,0,0, + // 0x010d č + 16,30,120,19,2,255,15,208,0,254,3,248,7,248,0,255,31,224,0,127,255,192,0,31,255,0,0,11,253,0,0,0,0,0,0,0,0,0,0,6,254,144,0,191,255,252,3,255,255,252,15,255,171,248,47,244,0,16,63,208,0,0,127,192,0,0,191,128,0,0,255,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,64,0,0,191,128,0,0,127,192,0,0,63,240,0,0,31,253,0,124,11,255,255,252,2,255,255,252,0,47,255,244,0,0,84,0, + // 0x010e Ď + 23,36,216,28,3,0,0,253,0,15,224,0,0,63,128,127,128,0,0,15,241,254,0,0,0,7,255,252,0,0,0,1,255,240,0,0,0,0,191,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,228,0,0,127,255,255,255,64,0,127,255,255,255,240,0,127,213,86,255,252,0,127,128,0,31,255,0,127,128,0,2,255,128,127,128,0,0,191,192,127,128,0,0,63,224,127,128,0,0,47,240,127,128,0,0,15,240,127,128,0,0,15,244,127,128,0,0,15,244,127,128,0,0,15,248,127,128,0,0,11,248,127,128,0,0,15,244,127,128,0,0,15,244,127,128,0,0,15,244,127,128,0,0,31,240,127,128,0,0,47,240,127,128,0,0,63,208,127,128,0,0,255,192,127,128,0,3,255,64,127,128,0,47,254,0,127,213,107,255,248,0,127,255,255,255,208,0,127,255,255,254,0,0,127,255,255,144,0,0, + // 0x010f ď + 25,30,210,24,2,255,0,0,0,11,244,63,128,0,0,0,11,244,63,128,0,0,0,11,244,127,0,0,0,0,11,244,190,0,0,0,0,11,244,252,0,0,0,0,11,244,248,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,27,232,11,244,0,0,1,255,255,139,244,0,0,7,255,255,247,244,0,0,15,254,155,255,244,0,0,63,244,0,127,244,0,0,63,208,0,47,244,0,0,191,192,0,15,244,0,0,191,128,0,15,244,0,0,255,64,0,11,244,0,0,255,0,0,11,244,0,0,255,0,0,7,244,0,0,255,0,0,7,244,0,0,255,0,0,11,244,0,0,255,64,0,11,244,0,0,191,128,0,15,244,0,0,127,192,0,15,244,0,0,63,224,0,63,244,0,0,47,248,1,255,244,0,0,15,255,255,251,244,0,0,3,255,255,211,244,0,0,0,127,254,3,244,0,0,0,1,64,0,0,0,0, + // 0x0110 Đ + 25,27,189,28,1,0,3,255,255,254,64,0,0,3,255,255,255,244,0,0,3,255,255,255,255,0,0,3,253,85,111,255,192,0,3,252,0,1,255,240,0,3,252,0,0,47,248,0,3,252,0,0,11,252,0,3,252,0,0,3,254,0,3,252,0,0,2,255,0,3,252,0,0,0,255,0,3,252,0,0,0,255,64,7,252,0,0,0,255,64,255,255,255,192,0,255,128,255,255,255,192,0,191,128,255,255,255,192,0,255,64,87,253,85,64,0,255,64,3,252,0,0,0,255,64,3,252,0,0,1,255,0,3,252,0,0,2,255,0,3,252,0,0,3,253,0,3,252,0,0,15,252,0,3,252,0,0,63,244,0,3,252,0,2,255,224,0,3,253,86,191,255,128,0,3,255,255,255,253,0,0,3,255,255,255,224,0,0,3,255,255,233,0,0,0, + // 0x0111 đ + 22,30,180,24,2,255,0,0,0,11,244,0,0,0,0,11,244,0,0,0,0,11,244,0,0,2,170,175,254,128,0,3,255,255,255,208,0,3,255,255,255,208,0,0,0,11,248,0,0,0,0,11,244,0,0,5,80,11,244,0,0,191,255,75,244,0,3,255,255,215,244,0,15,255,255,255,244,0,47,248,1,255,244,0,63,224,0,63,244,0,127,192,0,15,244,0,191,128,0,15,244,0,255,64,0,11,244,0,255,0,0,11,244,0,255,0,0,7,244,0,255,0,0,7,244,0,255,0,0,11,244,0,255,64,0,11,244,0,191,128,0,15,244,0,127,192,0,15,244,0,63,224,0,47,244,0,47,248,1,255,244,0,15,255,255,251,244,0,3,255,255,211,244,0,0,191,254,3,244,0,0,1,64,0,0,0, + // 0x0112 Ē + 16,33,132,21,3,0,7,255,255,244,7,255,255,244,7,255,255,244,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x0113 ē + 18,27,135,22,2,255,3,255,255,252,0,3,255,255,252,0,3,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x0114 Ĕ + 16,36,144,21,3,0,5,64,0,84,11,192,0,248,7,228,7,244,3,255,255,240,0,255,255,192,0,31,249,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x0115 ĕ + 18,30,150,22,2,255,1,64,0,20,0,3,208,0,124,0,3,244,6,252,0,1,255,255,240,0,0,191,255,208,0,0,27,254,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x0116 Ė + 16,35,140,21,3,0,0,3,244,0,0,11,248,0,0,11,252,0,0,7,244,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x0117 ė + 18,29,145,22,2,255,0,3,248,0,0,0,7,252,0,0,0,7,252,0,0,0,3,248,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x0118 Ę + 16,36,144,21,3,247,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255,0,0,2,244,0,0,7,208,0,0,15,192,0,0,47,64,0,0,63,0,0,0,63,128,0,0,47,255,0,0,15,255,0,0,1,164, + // 0x0119 ę + 18,30,150,22,2,247,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,255,64,0,0,85,253,0,0,0,2,244,0,0,0,7,224,0,0,0,15,192,0,0,0,15,192,0,0,0,15,224,0,0,0,11,255,128,0,0,3,255,128,0,0,0,105,0, + // 0x011a Ě + 16,36,144,21,3,0,15,208,1,253,7,248,11,244,1,254,47,208,0,191,255,128,0,47,254,0,0,15,252,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x011b ě + 18,30,150,22,2,255,15,224,0,190,0,3,252,3,252,0,0,255,31,240,0,0,63,255,192,0,0,31,255,0,0,0,11,253,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x011c Ĝ + 23,37,222,28,2,255,0,0,7,255,0,0,0,0,15,255,128,0,0,0,63,255,208,0,0,0,191,75,244,0,0,2,253,2,253,0,0,7,224,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,89,80,0,0,0,191,255,255,128,0,11,255,255,255,244,0,63,255,255,255,240,1,255,249,0,27,208,3,255,128,0,0,64,11,253,0,0,0,0,31,248,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,128,0,42,170,164,191,128,0,63,255,248,191,128,0,63,255,248,191,128,0,63,255,248,127,192,0,0,7,248,127,192,0,0,7,248,63,208,0,0,7,248,63,240,0,0,7,248,31,244,0,0,7,248,15,253,0,0,7,248,3,255,64,0,7,248,1,255,249,0,91,248,0,127,255,255,255,248,0,31,255,255,255,248,0,1,191,255,255,144,0,0,0,85,0,0, + // 0x011d ĝ + 19,39,195,24,2,246,0,3,255,0,0,0,15,255,128,0,0,47,255,224,0,0,191,75,244,0,1,253,1,253,0,7,240,0,63,0,0,0,0,0,0,0,0,0,0,0,0,27,232,1,80,1,255,255,131,244,7,255,255,243,244,15,255,171,255,244,47,244,0,191,244,63,208,0,47,244,127,192,0,15,244,191,128,0,15,244,255,64,0,11,244,255,0,0,11,244,255,0,0,7,244,255,0,0,7,244,255,0,0,7,244,255,64,0,11,244,191,128,0,15,244,127,192,0,15,244,63,224,0,47,244,47,248,0,191,244,15,255,255,251,244,3,255,255,219,244,0,191,254,11,244,0,1,80,11,244,0,0,0,11,244,0,0,0,15,240,0,0,0,31,240,16,0,0,63,224,47,148,2,255,192,47,255,255,255,64,47,255,255,253,0,2,191,255,144,0,0,0,0,0,0, + // 0x011e Ğ + 23,37,222,28,2,255,0,1,64,0,21,0,0,3,224,0,61,0,0,2,249,1,252,0,0,0,255,255,248,0,0,0,127,255,224,0,0,0,11,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,89,80,0,0,0,191,255,255,128,0,11,255,255,255,244,0,63,255,255,255,240,1,255,249,0,27,208,3,255,128,0,0,64,11,253,0,0,0,0,31,248,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,128,0,42,170,164,191,128,0,63,255,248,191,128,0,63,255,248,191,128,0,63,255,248,127,192,0,0,7,248,127,192,0,0,7,248,63,208,0,0,7,248,63,240,0,0,7,248,31,244,0,0,7,248,15,253,0,0,7,248,3,255,64,0,7,248,1,255,249,0,91,248,0,127,255,255,255,248,0,31,255,255,255,248,0,1,191,255,255,144,0,0,0,85,0,0, + // 0x011f ğ + 19,39,195,24,2,246,1,80,0,21,0,2,240,0,62,0,1,249,1,253,0,0,255,255,248,0,0,63,255,224,0,0,7,254,64,0,0,0,0,0,0,0,0,0,0,0,0,27,232,1,80,1,255,255,131,244,7,255,255,243,244,15,255,171,255,244,47,244,0,191,244,63,208,0,47,244,127,192,0,15,244,191,128,0,15,244,255,64,0,11,244,255,0,0,11,244,255,0,0,7,244,255,0,0,7,244,255,0,0,7,244,255,64,0,11,244,191,128,0,15,244,127,192,0,15,244,63,224,0,47,244,47,248,0,191,244,15,255,255,251,244,3,255,255,219,244,0,191,254,11,244,0,1,80,11,244,0,0,0,11,244,0,0,0,15,240,0,0,0,31,240,16,0,0,63,224,47,148,2,255,192,47,255,255,255,64,47,255,255,253,0,2,191,255,144,0,0,0,0,0,0, + // 0x0120 Ġ + 23,36,216,28,2,255,0,0,1,252,0,0,0,0,3,254,0,0,0,0,3,254,0,0,0,0,1,252,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,89,80,0,0,0,191,255,255,128,0,11,255,255,255,244,0,63,255,255,255,240,1,255,249,0,27,208,3,255,128,0,0,64,11,253,0,0,0,0,31,248,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,128,0,42,170,164,191,128,0,63,255,248,191,128,0,63,255,248,191,128,0,63,255,248,127,192,0,0,7,248,127,192,0,0,7,248,63,208,0,0,7,248,63,240,0,0,7,248,31,244,0,0,7,248,15,253,0,0,7,248,3,255,64,0,7,248,1,255,249,0,91,248,0,127,255,255,255,248,0,31,255,255,255,248,0,1,191,255,255,144,0,0,0,85,0,0, + // 0x0121 ġ + 19,38,190,24,2,246,0,1,252,0,0,0,2,254,0,0,0,2,254,0,0,0,1,253,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,27,232,1,80,1,255,255,131,244,7,255,255,243,244,15,255,171,255,244,47,244,0,191,244,63,208,0,47,244,127,192,0,15,244,191,128,0,15,244,255,64,0,11,244,255,0,0,11,244,255,0,0,7,244,255,0,0,7,244,255,0,0,7,244,255,64,0,11,244,191,128,0,15,244,127,192,0,15,244,63,224,0,47,244,47,248,0,191,244,15,255,255,251,244,3,255,255,219,244,0,191,254,11,244,0,1,80,11,244,0,0,0,11,244,0,0,0,15,240,0,0,0,31,240,16,0,0,63,224,47,148,2,255,192,47,255,255,255,64,47,255,255,253,0,2,191,255,144,0,0,0,0,0,0, + // 0x0122 Ģ + 23,37,222,28,2,247,0,0,1,89,80,0,0,0,191,255,255,128,0,11,255,255,255,244,0,63,255,255,255,240,1,255,249,0,27,208,3,255,128,0,0,64,11,253,0,0,0,0,31,248,0,0,0,0,47,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,128,0,0,0,0,191,128,0,42,170,164,191,128,0,63,255,248,191,128,0,63,255,248,191,128,0,63,255,248,127,192,0,0,7,248,127,192,0,0,7,248,63,208,0,0,7,248,63,240,0,0,7,248,31,244,0,0,7,248,15,253,0,0,7,248,3,255,64,0,7,248,1,255,249,0,91,248,0,127,255,255,255,248,0,31,255,255,255,248,0,1,191,255,255,144,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,0,1,253,0,0,0,0,2,252,0,0,0,0,3,248,0,0,0,0,3,240,0,0,0,0,7,208,0,0,0,0,1,64,0,0, + // 0x0123 ģ + 19,39,195,24,2,246,0,0,47,0,0,0,0,62,0,0,0,0,253,0,0,0,1,252,0,0,0,3,252,0,0,0,3,248,0,0,0,0,0,0,0,0,0,0,0,0,0,27,232,1,80,1,255,255,131,244,7,255,255,243,244,15,255,171,255,244,47,244,0,191,244,63,208,0,47,244,127,192,0,15,244,191,128,0,15,244,255,64,0,11,244,255,0,0,11,244,255,0,0,7,244,255,0,0,7,244,255,0,0,7,244,255,64,0,11,244,191,128,0,15,244,127,192,0,15,244,63,224,0,47,244,47,248,0,191,244,15,255,255,251,244,3,255,255,219,244,0,191,254,11,244,0,1,80,11,244,0,0,0,11,244,0,0,0,15,240,0,0,0,31,240,16,0,0,63,224,47,148,2,255,192,47,255,255,255,64,47,255,255,253,0,2,191,255,144,0,0,0,0,0,0, + // 0x0124 Ĥ + 22,36,216,28,3,0,0,0,127,240,0,0,0,0,255,248,0,0,0,3,255,253,0,0,0,15,240,255,0,0,0,47,192,47,192,0,0,190,0,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,255,255,255,255,240,127,255,255,255,255,240,127,255,255,255,255,240,127,234,170,170,175,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240,127,128,0,0,31,240, + // 0x0125 ĥ + 23,37,222,24,254,0,0,127,240,0,0,0,0,255,248,0,0,0,3,255,253,0,0,0,15,240,255,0,0,0,47,192,47,192,0,0,190,0,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,107,228,0,0,63,195,255,255,64,0,63,207,255,255,208,0,63,255,230,255,240,0,63,252,0,31,244,0,63,244,0,11,248,0,63,240,0,7,252,0,63,224,0,3,252,0,63,208,0,3,252,0,63,192,0,3,252,0,63,192,0,3,252,0,63,192,0,3,252,0,63,192,0,3,252,0,63,192,0,3,252,0,63,192,0,3,252,0,63,192,0,3,252,0,63,192,0,3,252,0,63,192,0,3,252,0,63,192,0,3,252,0,63,192,0,3,252,0,63,192,0,3,252, + // 0x0126 Ħ + 29,27,216,28,0,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,64,1,255,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,255,255,255,255,255,192,0,1,255,255,255,255,255,192,0,1,255,255,255,255,255,192,0,1,255,170,170,170,191,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0,1,254,0,0,0,127,192,0, + // 0x0127 ħ + 21,29,174,24,0,0,2,252,0,0,0,0,3,252,0,0,0,0,3,252,0,0,0,0,107,254,170,164,0,0,191,255,255,248,0,0,191,255,255,248,0,0,23,253,85,80,0,0,3,252,0,0,0,0,3,252,0,0,0,0,3,252,6,255,128,0,3,252,127,255,248,0,3,253,255,255,254,0,3,255,249,91,255,0,3,255,192,0,255,128,3,255,0,0,191,128,3,255,0,0,127,192,3,253,0,0,63,192,3,253,0,0,63,192,3,252,0,0,63,192,3,252,0,0,63,192,3,252,0,0,63,192,3,252,0,0,63,192,3,252,0,0,63,192,3,252,0,0,63,192,3,252,0,0,63,192,3,252,0,0,63,192,3,252,0,0,63,192,3,252,0,0,63,192,3,252,0,0,63,192, + // 0x0128 Ĩ + 15,35,140,13,255,0,7,253,0,124,15,255,209,248,63,255,255,240,61,7,255,224,124,0,127,64,0,0,0,0,0,0,0,0,0,0,0,0,11,255,255,192,11,255,255,192,2,255,254,64,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,2,255,255,64,11,255,255,192,11,255,255,192, + // 0x0129 ĩ + 15,28,112,10,254,0,11,248,0,244,63,255,130,240,127,255,255,224,188,11,255,192,244,0,190,0,0,0,0,0,0,0,0,0,0,21,64,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0, + // 0x012a Ī + 12,33,99,13,1,0,255,255,254,255,255,254,255,255,254,0,0,0,0,0,0,0,0,0,191,255,252,191,255,252,47,255,228,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,47,255,244,191,255,252,191,255,252, + // 0x012b ī + 12,26,78,10,255,0,191,255,255,191,255,255,191,255,255,0,0,0,0,0,0,0,85,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0, + // 0x012c Ĭ + 13,36,144,13,0,0,84,0,1,64,124,0,11,192,63,64,111,128,47,255,255,0,15,255,252,0,1,191,208,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,0,47,255,255,0,11,255,249,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,0,127,192,0,11,255,253,0,47,255,255,0,47,255,255,0, + // 0x012d ĭ + 13,29,116,10,255,0,80,0,5,0,244,0,31,64,253,0,191,0,127,255,253,0,31,255,244,0,2,255,128,0,0,0,0,0,0,0,0,0,0,85,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0, + // 0x012e Į + 11,36,108,13,1,247,191,255,252,191,255,252,47,255,228,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,47,255,244,191,255,252,191,255,252,0,7,208,0,31,128,0,63,0,0,189,0,0,189,0,0,190,0,0,127,252,0,47,252,0,6,148, + // 0x012f į + 7,37,74,10,1,247,11,240,15,244,15,244,11,240,0,64,0,0,0,0,5,80,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,15,240,7,208,31,128,63,0,189,0,189,0,190,0,127,252,47,252,6,148, + // 0x0130 İ + 11,35,105,13,1,0,0,254,0,1,255,0,1,255,0,0,254,0,0,16,0,0,0,0,0,0,0,0,0,0,191,255,252,191,255,252,47,255,228,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,47,255,244,191,255,252,191,255,252, + // 0x0131 ı + 4,21,21,10,3,0,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x0132 IJ + 20,35,175,24,1,248,191,255,252,0,255,191,255,252,0,255,47,255,228,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,1,255,0,0,255,47,255,244,0,255,191,255,252,0,255,191,255,252,0,255,0,0,0,0,255,0,0,0,1,255,0,0,0,3,254,0,0,4,31,252,0,0,31,255,248,0,0,31,255,240,0,0,31,255,128,0,0,1,80,0, + // 0x0133 ij + 15,38,152,21,3,246,191,0,7,244,255,64,11,248,255,64,11,252,191,0,7,244,4,0,0,64,0,0,0,0,0,0,0,0,85,0,1,84,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,255,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,244,0,0,15,244,0,20,111,240,0,63,255,224,0,63,255,192,0,47,254,0,0,0,0,0, + // 0x0134 Ĵ + 16,44,176,11,253,248,0,15,252,0,0,63,255,0,0,191,255,128,2,253,47,224,7,244,7,244,15,192,0,253,0,0,0,0,0,0,0,0,0,0,0,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,244,0,0,15,244,0,0,31,240,0,64,127,240,0,255,255,208,0,255,255,64,0,255,252,0,0,21,64,0,0, + // 0x0135 ĵ + 14,39,156,10,254,246,0,127,224,0,0,255,244,0,3,255,253,0,15,240,255,0,47,192,47,192,190,0,7,240,0,0,0,0,0,0,0,0,0,21,64,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,65,255,192,0,255,255,64,0,255,254,0,0,255,244,0,0,0,0,0,0, + // 0x0136 Ķ + 21,36,216,24,3,247,127,128,0,2,255,0,127,128,0,7,253,0,127,128,0,31,244,0,127,128,0,63,224,0,127,128,0,255,128,0,127,128,3,255,0,0,127,128,11,252,0,0,127,128,47,240,0,0,127,128,127,192,0,0,127,129,255,64,0,0,127,131,253,0,0,0,127,143,248,0,0,0,127,255,252,0,0,0,127,255,254,0,0,0,127,255,255,64,0,0,127,240,255,192,0,0,127,192,63,224,0,0,127,128,31,244,0,0,127,128,15,252,0,0,127,128,3,255,0,0,127,128,1,255,64,0,127,128,0,191,192,0,127,128,0,63,240,0,127,128,0,15,248,0,127,128,0,11,253,0,127,128,0,3,255,0,127,128,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,0,0,0,0,0,191,0,0,0,0,0,254,0,0,0,0,0,252,0,0,0,0,1,248,0,0,0,0,3,240,0,0,0,0,1,64,0,0,0, + // 0x0137 ķ + 18,38,190,21,3,247,191,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,21,64,255,0,0,255,128,255,0,3,254,0,255,0,15,248,0,255,0,63,224,0,255,0,255,192,0,255,2,255,0,0,255,11,252,0,0,255,47,240,0,0,255,127,208,0,0,255,255,240,0,0,255,255,252,0,0,255,227,254,0,0,255,129,255,64,0,255,0,191,192,0,255,0,63,240,0,255,0,15,248,0,255,0,7,253,0,255,0,2,255,0,255,0,0,255,192,255,0,0,63,224,0,0,0,0,0,0,0,0,0,0,0,6,160,0,0,0,15,240,0,0,0,15,224,0,0,0,31,192,0,0,0,47,64,0,0,0,63,0,0,0,0,20,0,0,0, + // 0x0138 ĸ + 18,21,105,21,3,0,85,0,0,21,64,255,64,0,255,128,255,64,3,254,0,255,64,11,252,0,255,64,47,240,0,255,64,127,192,0,255,65,255,64,0,255,67,253,0,0,255,15,248,0,0,255,63,240,0,0,255,191,240,0,0,255,255,252,0,0,255,247,254,0,0,255,192,255,64,0,255,64,127,192,0,255,64,47,240,0,255,64,15,248,0,255,64,7,253,0,255,64,2,255,0,255,64,0,255,192,255,64,0,63,224, + // 0x0139 Ĺ + 17,36,180,20,3,0,0,255,128,0,0,3,255,0,0,0,7,252,0,0,0,15,240,0,0,0,63,128,0,0,0,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,234,170,170,0,127,255,255,255,64,127,255,255,255,64,127,255,255,255,64, + // 0x013a ĺ + 9,37,111,10,3,0,2,255,64,3,253,0,15,244,0,47,208,0,127,64,0,253,0,0,0,0,0,0,0,0,191,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, + // 0x013b Ļ + 17,36,180,20,3,247,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,234,170,170,0,127,255,255,255,64,127,255,255,255,64,127,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,2,168,0,0,0,3,252,0,0,0,3,244,0,0,0,7,240,0,0,0,11,208,0,0,0,15,128,0,0,0,5,0,0,0, + // 0x013c ļ + 6,38,76,10,2,247,47,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,0,0,0,0,10,160,31,224,31,192,47,128,63,0,125,0,20,0, + // 0x013d Ľ + 17,27,135,20,3,0,127,128,0,127,128,127,128,0,127,0,127,128,0,190,0,127,128,0,252,0,127,128,0,248,0,127,128,1,240,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,234,170,170,0,127,255,255,255,64,127,255,255,255,64,127,255,255,255,64, + // 0x013e ľ + 11,29,87,10,3,0,191,3,248,255,7,244,255,11,240,255,15,208,255,15,192,255,31,64,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, + // 0x013f Ŀ + 17,27,135,20,3,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,11,240,0,127,128,15,244,0,127,128,15,244,0,127,128,11,240,0,127,128,0,64,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,234,170,170,0,127,255,255,255,64,127,255,255,255,64,127,255,255,255,64, + // 0x0140 ŀ + 10,29,87,11,3,0,191,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,15,208,255,31,240,255,31,240,255,15,224,255,1,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, + // 0x0141 Ł + 20,27,135,20,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,2,64,0,1,254,31,192,0,1,255,255,224,0,1,255,255,64,0,1,255,248,0,0,7,255,192,0,0,47,255,0,0,0,127,254,0,0,0,63,254,0,0,0,5,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,255,170,170,168,1,255,255,255,253,1,255,255,255,253,1,255,255,255,253, + // 0x0142 ł + 11,29,87,10,0,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,144,3,255,240,3,255,244,3,255,224,11,255,0,127,252,0,255,252,0,191,252,0,35,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0,3,252,0, + // 0x0143 Ń + 23,36,216,29,3,0,0,0,0,63,240,0,0,0,0,191,192,0,0,0,1,255,0,0,0,0,3,252,0,0,0,0,11,240,0,0,0,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,240,0,0,3,252,127,248,0,0,3,252,127,252,0,0,3,252,127,255,0,0,3,252,127,255,64,0,3,252,127,191,192,0,3,252,127,63,224,0,3,252,127,31,244,0,3,252,127,11,252,0,3,252,127,3,254,0,3,252,127,65,255,0,3,252,127,64,255,192,3,252,127,64,63,208,3,252,127,64,47,240,3,252,127,64,15,248,3,252,127,64,7,253,3,252,127,64,2,255,3,252,127,64,0,255,131,252,127,64,0,127,195,252,127,64,0,63,243,252,127,64,0,15,246,252,127,64,0,11,255,252,127,64,0,3,255,252,127,64,0,1,255,252,127,64,0,0,191,252,127,64,0,0,63,252,127,64,0,0,31,252, + // 0x0144 ń + 18,29,145,24,3,0,0,0,15,252,0,0,0,31,244,0,0,0,63,208,0,0,0,191,64,0,0,1,253,0,0,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,84,1,191,144,0,254,15,255,253,0,255,63,255,255,64,255,255,155,255,192,255,240,0,127,208,255,208,0,47,224,255,192,0,31,240,255,128,0,15,240,255,64,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240, + // 0x0145 Ņ + 23,36,216,29,3,247,127,240,0,0,3,252,127,248,0,0,3,252,127,252,0,0,3,252,127,255,0,0,3,252,127,255,64,0,3,252,127,191,192,0,3,252,127,63,224,0,3,252,127,31,244,0,3,252,127,11,252,0,3,252,127,3,254,0,3,252,127,65,255,0,3,252,127,64,255,192,3,252,127,64,63,208,3,252,127,64,47,240,3,252,127,64,15,248,3,252,127,64,7,253,3,252,127,64,2,255,3,252,127,64,0,255,131,252,127,64,0,127,195,252,127,64,0,63,243,252,127,64,0,15,246,252,127,64,0,11,255,252,127,64,0,3,255,252,127,64,0,1,255,252,127,64,0,0,191,252,127,64,0,0,63,252,127,64,0,0,31,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,164,0,0,0,0,11,240,0,0,0,0,15,224,0,0,0,0,15,192,0,0,0,0,31,128,0,0,0,0,47,0,0,0,0,0,20,0,0,0, + // 0x0146 ņ + 18,30,150,24,3,247,84,1,191,144,0,254,15,255,253,0,255,63,255,255,64,255,255,155,255,192,255,240,0,127,208,255,208,0,47,224,255,192,0,31,240,255,128,0,15,240,255,64,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,0,0,0,0,0,0,0,0,0,0,0,0,169,0,0,0,1,253,0,0,0,2,252,0,0,0,3,244,0,0,0,3,240,0,0,0,11,192,0,0,0,5,64,0,0, + // 0x0147 Ň + 23,36,216,29,3,0,0,63,64,3,244,0,0,15,224,31,224,0,0,3,252,127,128,0,0,1,255,254,0,0,0,0,127,252,0,0,0,0,47,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,240,0,0,3,252,127,248,0,0,3,252,127,252,0,0,3,252,127,255,0,0,3,252,127,255,64,0,3,252,127,191,192,0,3,252,127,63,224,0,3,252,127,31,244,0,3,252,127,11,252,0,3,252,127,3,254,0,3,252,127,65,255,0,3,252,127,64,255,192,3,252,127,64,63,208,3,252,127,64,47,240,3,252,127,64,15,248,3,252,127,64,7,253,3,252,127,64,2,255,3,252,127,64,0,255,131,252,127,64,0,127,195,252,127,64,0,63,243,252,127,64,0,15,246,252,127,64,0,11,255,252,127,64,0,3,255,252,127,64,0,1,255,252,127,64,0,0,191,252,127,64,0,0,63,252,127,64,0,0,31,252, + // 0x0148 ň + 18,29,145,24,3,0,15,224,0,190,0,3,252,3,248,0,0,255,31,240,0,0,63,255,192,0,0,31,255,0,0,0,11,253,0,0,0,0,0,0,0,0,0,0,0,0,84,1,191,144,0,254,15,255,253,0,255,63,255,255,64,255,255,155,255,192,255,240,0,127,208,255,208,0,47,224,255,192,0,31,240,255,128,0,15,240,255,64,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240, + // 0x0149 ʼn + 24,27,162,27,0,0,15,240,0,0,0,0,31,240,0,0,0,0,47,224,0,0,0,0,47,192,0,0,0,0,63,192,0,0,0,0,63,128,0,0,0,0,127,5,80,10,249,0,190,11,224,255,255,224,252,11,243,255,255,248,0,11,255,249,111,252,0,11,255,64,3,254,0,11,253,0,1,255,0,11,252,0,0,255,0,11,248,0,0,255,0,11,244,0,0,255,0,11,244,0,0,255,0,11,244,0,0,255,0,11,244,0,0,255,0,11,244,0,0,255,0,11,244,0,0,255,0,11,244,0,0,255,0,11,244,0,0,255,0,11,244,0,0,255,0,11,244,0,0,255,0,11,244,0,0,255,0,11,244,0,0,255,0,11,244,0,0,255, + // 0x014a Ŋ + 23,35,210,29,3,248,127,240,0,0,3,252,127,248,0,0,3,252,127,253,0,0,3,252,127,255,0,0,3,252,127,255,128,0,3,252,127,191,208,0,3,252,127,63,240,0,3,252,127,15,248,0,3,252,127,7,253,0,3,252,127,67,255,0,3,252,127,64,255,128,3,252,127,64,127,208,3,252,127,64,47,240,3,252,127,64,15,248,3,252,127,64,7,253,3,252,127,64,2,255,3,252,127,64,0,255,195,252,127,64,0,127,211,252,127,64,0,47,242,252,127,64,0,15,254,252,127,64,0,7,255,252,127,64,0,2,255,252,127,64,0,0,255,252,127,64,0,0,63,252,127,64,0,0,47,252,127,64,0,0,15,252,127,64,0,0,3,252,0,0,0,0,3,252,0,0,0,0,3,248,0,0,0,0,11,248,0,0,0,64,47,240,0,0,0,255,255,224,0,0,0,255,255,192,0,0,0,255,253,0,0,0,0,21,64,0, + // 0x014b ŋ + 18,31,155,24,3,246,84,1,191,144,0,254,15,255,253,0,255,63,255,255,64,255,255,154,255,192,255,244,0,127,224,255,208,0,47,224,255,192,0,31,240,255,128,0,15,240,255,64,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,31,240,0,0,20,127,224,0,0,63,255,192,0,0,63,255,64,0,0,47,249,0,0,0,0,0,0, + // 0x014c Ō + 26,34,238,30,2,255,0,3,255,255,252,0,0,0,3,255,255,252,0,0,0,3,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x014d ō + 19,27,135,23,2,255,1,255,255,253,0,1,255,255,253,0,1,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x014e Ŏ + 26,37,3,30,2,255,0,1,64,0,20,0,0,0,7,192,0,188,0,0,0,3,244,6,248,0,0,0,2,255,255,240,0,0,0,0,191,255,208,0,0,0,0,27,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x014f ŏ + 19,30,150,23,2,255,1,80,0,21,0,2,240,0,62,0,1,249,1,253,0,0,255,255,252,0,0,63,255,240,0,0,7,254,64,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x0150 Ő + 26,37,3,30,2,255,0,0,127,193,255,0,0,0,0,255,67,253,0,0,0,1,253,7,244,0,0,0,3,248,15,208,0,0,0,11,224,47,64,0,0,0,15,64,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x0151 ő + 19,30,150,23,2,255,0,47,240,191,128,0,63,192,255,0,0,191,3,252,0,1,252,7,240,0,3,244,15,192,0,11,192,47,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x0152 Œ + 32,29,232,36,2,255,0,0,5,149,0,0,0,0,0,2,255,255,255,255,255,254,0,47,255,255,255,255,255,254,0,255,255,255,255,255,255,254,3,255,228,1,191,213,85,84,11,254,0,0,127,128,0,0,15,252,0,0,127,128,0,0,47,240,0,0,127,128,0,0,63,224,0,0,127,128,0,0,63,192,0,0,127,128,0,0,127,192,0,0,127,128,0,0,191,192,0,0,127,128,0,0,191,128,0,0,127,255,255,248,191,128,0,0,127,255,255,252,191,128,0,0,127,255,255,252,191,128,0,0,127,234,170,164,191,128,0,0,127,128,0,0,127,192,0,0,127,128,0,0,127,192,0,0,127,128,0,0,63,208,0,0,127,128,0,0,63,224,0,0,127,128,0,0,31,240,0,0,127,128,0,0,15,252,0,0,127,128,0,0,7,255,0,0,127,128,0,0,2,255,228,5,255,234,170,169,0,191,255,255,255,255,255,254,0,31,255,255,255,255,255,254,0,1,255,255,255,255,255,254,0,0,1,84,0,0,0,0, + // 0x0153 œ + 33,22,198,36,2,255,0,6,186,64,0,43,228,0,0,0,191,255,244,2,255,255,128,0,3,255,255,253,15,255,255,240,0,15,255,171,255,127,245,111,248,0,47,240,0,127,255,128,3,253,0,63,208,0,31,255,0,1,255,0,127,192,0,15,253,0,0,255,0,191,64,0,11,252,0,0,191,64,255,64,0,7,253,85,85,255,64,255,0,0,7,255,255,255,255,64,255,0,0,7,255,255,255,255,64,255,0,0,7,254,170,170,170,64,255,0,0,7,252,0,0,0,0,255,64,0,11,252,0,0,0,0,191,128,0,15,253,0,0,0,0,127,192,0,15,254,0,0,0,0,63,224,0,63,255,64,0,0,0,15,248,1,255,255,224,0,109,0,7,255,255,255,31,255,255,253,0,1,255,255,252,7,255,255,253,0,0,47,255,208,0,191,255,228,0,0,0,84,0,0,1,84,0,0, + // 0x0154 Ŕ + 21,36,216,24,3,0,0,0,11,252,0,0,0,0,15,244,0,0,0,0,63,208,0,0,0,0,191,64,0,0,0,1,253,0,0,0,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,144,0,0,127,255,255,253,0,0,127,255,255,255,128,0,127,213,91,255,208,0,127,128,0,127,240,0,127,128,0,31,240,0,127,128,0,15,244,0,127,128,0,15,244,0,127,128,0,15,244,0,127,128,0,15,240,0,127,128,0,47,240,0,127,128,0,127,208,0,127,213,91,255,128,0,127,255,255,254,0,0,127,255,255,240,0,0,127,255,255,208,0,0,127,128,31,240,0,0,127,128,11,248,0,0,127,128,3,253,0,0,127,128,2,255,0,0,127,128,0,255,128,0,127,128,0,127,192,0,127,128,0,47,240,0,127,128,0,15,244,0,127,128,0,11,252,0,127,128,0,3,254,0,127,128,0,1,255,64, + // 0x0155 ŕ + 13,29,116,16,3,0,0,1,255,64,0,3,254,0,0,11,248,0,0,31,224,0,0,63,64,0,0,253,0,0,0,0,0,0,0,0,0,0,84,0,191,64,253,11,255,64,254,47,255,64,255,127,255,0,255,253,0,0,255,240,0,0,255,192,0,0,255,128,0,0,255,64,0,0,255,64,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0, + // 0x0156 Ŗ + 21,36,216,24,3,247,127,255,255,144,0,0,127,255,255,253,0,0,127,255,255,255,128,0,127,213,91,255,208,0,127,128,0,127,240,0,127,128,0,31,240,0,127,128,0,15,244,0,127,128,0,15,244,0,127,128,0,15,244,0,127,128,0,15,240,0,127,128,0,47,240,0,127,128,0,127,208,0,127,213,91,255,128,0,127,255,255,254,0,0,127,255,255,240,0,0,127,255,255,208,0,0,127,128,31,240,0,0,127,128,11,248,0,0,127,128,3,253,0,0,127,128,2,255,0,0,127,128,0,255,128,0,127,128,0,127,192,0,127,128,0,47,240,0,127,128,0,15,244,0,127,128,0,11,252,0,127,128,0,3,254,0,127,128,0,1,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,0,0,0,191,0,0,0,0,0,254,0,0,0,0,0,252,0,0,0,0,1,248,0,0,0,0,2,240,0,0,0,0,1,64,0,0,0, + // 0x0157 ŗ + 14,30,120,16,2,247,21,0,47,208,63,66,255,208,63,139,255,208,63,223,255,192,63,255,64,0,63,252,0,0,63,240,0,0,63,224,0,0,63,208,0,0,63,208,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,0,0,0,0,0,0,0,0,10,160,0,0,31,208,0,0,47,192,0,0,63,128,0,0,63,0,0,0,125,0,0,0,20,0,0,0, + // 0x0158 Ř + 21,36,216,24,3,0,11,224,0,191,0,0,2,252,3,252,0,0,0,255,15,240,0,0,0,63,255,192,0,0,0,15,255,64,0,0,0,7,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,144,0,0,127,255,255,253,0,0,127,255,255,255,128,0,127,213,91,255,208,0,127,128,0,127,240,0,127,128,0,31,240,0,127,128,0,15,244,0,127,128,0,15,244,0,127,128,0,15,244,0,127,128,0,15,240,0,127,128,0,47,240,0,127,128,0,127,208,0,127,213,91,255,128,0,127,255,255,254,0,0,127,255,255,240,0,0,127,255,255,208,0,0,127,128,31,240,0,0,127,128,11,248,0,0,127,128,3,253,0,0,127,128,2,255,0,0,127,128,0,255,128,0,127,128,0,127,192,0,127,128,0,47,240,0,127,128,0,15,244,0,127,128,0,11,252,0,127,128,0,3,254,0,127,128,0,1,255,64, + // 0x0159 ř + 14,29,116,16,2,0,127,0,7,240,47,208,47,192,11,244,255,0,3,255,253,0,0,255,244,0,0,63,224,0,0,0,0,0,0,0,0,0,21,0,47,208,63,66,255,208,63,139,255,208,63,223,255,192,63,255,64,0,63,252,0,0,63,240,0,0,63,224,0,0,63,208,0,0,63,208,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0, + // 0x015a Ś + 17,37,185,21,2,255,0,0,15,252,0,0,0,47,240,0,0,0,63,192,0,0,0,255,0,0,0,2,252,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,5,85,0,0,0,191,255,249,0,7,255,255,255,128,31,255,255,255,0,63,244,1,191,0,127,192,0,0,0,191,64,0,0,0,255,64,0,0,0,191,64,0,0,0,191,192,0,0,0,127,224,0,0,0,63,253,0,0,0,15,255,208,0,0,3,255,254,0,0,0,127,255,224,0,0,7,255,252,0,0,0,127,255,0,0,0,7,255,64,0,0,0,255,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,144,0,0,255,128,254,80,27,255,0,255,255,255,253,0,255,255,255,244,0,47,255,255,64,0,0,21,64,0,0, + // 0x015b ś + 15,30,120,18,2,255,0,0,191,208,0,0,255,64,0,3,253,0,0,11,244,0,0,15,208,0,0,63,64,0,0,0,0,0,0,0,0,0,0,111,233,0,11,255,255,240,63,255,255,240,191,229,111,224,255,0,0,64,255,0,0,0,255,0,0,0,255,208,0,0,127,253,0,0,31,255,224,0,2,255,254,0,0,47,255,208,0,1,255,240,0,0,47,248,0,0,11,248,0,0,3,248,0,0,7,248,244,0,31,244,255,251,255,240,255,255,255,192,111,255,253,0,0,85,0,0, + // 0x015c Ŝ + 17,37,185,21,2,255,0,15,253,0,0,0,47,255,0,0,0,127,255,192,0,0,254,31,240,0,3,248,3,248,0,15,208,0,190,0,0,0,0,0,0,0,0,0,0,0,0,5,85,0,0,0,191,255,249,0,7,255,255,255,128,31,255,255,255,0,63,244,1,191,0,127,192,0,0,0,191,64,0,0,0,255,64,0,0,0,191,64,0,0,0,191,192,0,0,0,127,224,0,0,0,63,253,0,0,0,15,255,208,0,0,3,255,254,0,0,0,127,255,224,0,0,7,255,252,0,0,0,127,255,0,0,0,7,255,64,0,0,0,255,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,144,0,0,255,128,254,80,27,255,0,255,255,255,253,0,255,255,255,244,0,47,255,255,64,0,0,21,64,0,0, + // 0x015d ŝ + 15,30,120,18,2,255,0,127,240,0,0,255,244,0,3,255,253,0,15,240,255,0,47,192,47,192,190,0,7,240,0,0,0,0,0,0,0,0,0,111,233,0,11,255,255,240,63,255,255,240,191,229,111,224,255,0,0,64,255,0,0,0,255,0,0,0,255,208,0,0,127,253,0,0,31,255,224,0,2,255,254,0,0,47,255,208,0,1,255,240,0,0,47,248,0,0,11,248,0,0,3,248,0,0,7,248,244,0,31,244,255,251,255,240,255,255,255,192,111,255,253,0,0,85,0,0, + // 0x015e Ş + 17,38,190,21,2,246,0,5,85,0,0,0,191,255,249,0,7,255,255,255,128,31,255,255,255,0,63,244,1,191,0,127,192,0,0,0,191,64,0,0,0,255,64,0,0,0,191,64,0,0,0,191,192,0,0,0,127,224,0,0,0,63,253,0,0,0,15,255,208,0,0,3,255,254,0,0,0,127,255,224,0,0,7,255,252,0,0,0,127,255,0,0,0,7,255,64,0,0,0,255,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,144,0,0,255,128,254,80,27,255,0,255,255,255,253,0,255,255,255,244,0,47,255,255,64,0,0,31,208,0,0,0,15,192,0,0,0,31,244,0,0,0,7,253,0,0,0,0,190,0,0,0,0,191,0,0,0,85,254,0,0,0,255,252,0,0,0,255,224,0,0,0,0,0,0,0, + // 0x015f ş + 15,31,124,18,2,246,0,111,233,0,11,255,255,240,63,255,255,240,191,229,111,224,255,0,0,64,255,0,0,0,255,0,0,0,255,208,0,0,127,253,0,0,31,255,224,0,2,255,254,0,0,47,255,208,0,1,255,240,0,0,47,248,0,0,11,248,0,0,3,248,0,0,7,248,244,0,31,244,255,251,255,240,255,255,255,192,111,255,253,0,0,95,192,0,0,47,0,0,0,63,224,0,0,27,248,0,0,1,252,0,0,0,252,0,1,87,252,0,2,255,244,0,2,255,128,0,0,0,0,0, + // 0x0160 Š + 17,37,185,21,2,255,15,208,0,254,0,3,248,7,248,0,0,255,31,224,0,0,127,255,192,0,0,31,255,0,0,0,11,253,0,0,0,0,0,0,0,0,0,0,0,0,0,5,85,0,0,0,191,255,249,0,7,255,255,255,128,31,255,255,255,0,63,244,1,191,0,127,192,0,0,0,191,64,0,0,0,255,64,0,0,0,191,64,0,0,0,191,192,0,0,0,127,224,0,0,0,63,253,0,0,0,15,255,208,0,0,3,255,254,0,0,0,127,255,224,0,0,7,255,252,0,0,0,127,255,0,0,0,7,255,64,0,0,0,255,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,144,0,0,255,128,254,80,27,255,0,255,255,255,253,0,255,255,255,244,0,47,255,255,64,0,0,21,64,0,0, + // 0x0161 š + 15,30,120,18,2,255,191,0,7,240,47,208,47,192,11,244,255,0,3,255,252,0,0,255,244,0,0,127,224,0,0,0,0,0,0,0,0,0,0,111,233,0,11,255,255,240,63,255,255,240,191,229,111,224,255,0,0,64,255,0,0,0,255,0,0,0,255,208,0,0,127,253,0,0,31,255,224,0,2,255,254,0,0,47,255,208,0,1,255,240,0,0,47,248,0,0,11,248,0,0,3,248,0,0,7,248,244,0,31,244,255,251,255,240,255,255,255,192,111,255,253,0,0,85,0,0, + // 0x0162 Ţ + 21,37,222,21,0,246,191,255,255,255,255,192,191,255,255,255,255,192,191,255,255,255,255,192,21,85,191,213,85,64,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,47,0,0,0,0,0,62,0,0,0,0,0,191,208,0,0,0,0,31,240,0,0,0,0,3,248,0,0,0,0,2,248,0,0,0,1,87,244,0,0,0,3,255,240,0,0,0,3,255,128,0,0,0,0,0,0,0,0, + // 0x0163 ţ + 14,35,140,15,0,246,0,62,0,0,0,126,0,0,0,190,0,0,0,254,0,0,2,255,85,64,47,255,255,208,127,255,255,208,43,255,170,128,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,255,0,0,0,255,128,0,0,255,255,224,0,63,255,224,0,11,255,208,0,3,244,0,0,7,208,0,0,15,248,0,0,6,255,0,0,0,63,64,0,0,63,64,0,21,191,0,0,127,254,0,0,127,244,0,0,0,0,0, + // 0x0164 Ť + 21,36,216,21,0,0,0,253,0,15,208,0,0,63,128,127,128,0,0,31,225,254,0,0,0,7,255,248,0,0,0,2,255,240,0,0,0,0,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,192,191,255,255,255,255,192,191,255,255,255,255,192,21,85,191,213,85,64,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0, + // 0x0165 ť + 19,30,150,15,0,255,0,0,0,3,252,0,0,0,3,248,0,0,0,7,240,0,0,0,11,224,0,62,0,15,192,0,126,0,15,128,0,190,0,0,0,0,254,0,0,0,2,255,85,64,0,47,255,255,208,0,127,255,255,208,0,43,255,170,128,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,254,0,0,0,1,255,0,0,0,0,255,128,0,0,0,255,255,224,0,0,63,255,224,0,0,11,255,208,0,0,0,84,0,0, + // 0x0166 Ŧ + 21,27,162,21,0,0,191,255,255,255,255,192,191,255,255,255,255,192,191,255,255,255,255,192,21,85,191,213,85,64,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,1,85,191,213,80,0,2,255,255,255,240,0,2,255,255,255,240,0,2,255,255,255,240,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0,0,0,127,128,0,0, + // 0x0167 ŧ + 14,26,104,15,0,255,0,62,0,0,0,126,0,0,0,190,0,0,0,254,0,0,2,255,85,64,47,255,255,208,127,255,255,208,43,255,170,128,1,254,0,0,1,254,0,0,1,254,0,0,2,254,0,0,63,255,255,192,63,255,255,192,63,255,255,192,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,254,0,0,1,255,0,0,0,255,128,0,0,255,255,224,0,63,255,224,0,11,255,208,0,0,84,0, + // 0x0168 Ũ + 22,36,216,28,3,255,0,11,248,0,240,0,0,63,255,67,240,0,0,191,255,255,224,0,0,248,11,255,192,0,0,240,1,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,224,0,0,27,255,254,64,0,0,0,21,64,0,0, + // 0x0169 ũ + 18,29,145,24,3,255,0,191,64,31,0,3,255,244,63,0,11,255,255,253,0,15,129,255,252,0,15,0,27,224,0,0,0,0,0,0,0,0,0,0,0,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,11,240,0,5,64,0,0, + // 0x016a Ū + 22,34,204,28,3,255,0,63,255,255,192,0,0,63,255,255,192,0,0,63,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,224,0,0,27,255,254,64,0,0,0,21,64,0,0, + // 0x016b ū + 18,27,135,24,3,255,3,255,255,252,0,3,255,255,252,0,3,255,255,252,0,0,0,0,0,0,0,0,0,0,0,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,11,240,0,5,64,0,0, + // 0x016c Ŭ + 22,37,222,28,3,255,0,20,0,1,64,0,0,61,0,7,192,0,0,63,64,111,192,0,0,31,255,255,64,0,0,11,255,253,0,0,0,0,191,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,224,0,0,27,255,254,64,0,0,0,21,64,0,0, + // 0x016d ŭ + 18,30,150,24,3,255,1,64,0,20,0,3,208,0,124,0,3,244,6,252,0,1,255,255,240,0,0,191,255,208,0,0,27,254,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,11,240,0,5,64,0,0, + // 0x016e Ů + 22,39,234,28,3,255,0,0,191,224,0,0,0,2,255,248,0,0,0,3,208,188,0,0,0,7,192,61,0,0,0,3,192,61,0,0,0,3,224,188,0,0,0,1,255,244,0,0,0,0,127,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,224,0,0,27,255,254,64,0,0,0,21,64,0,0, + // 0x016f ů + 18,32,160,24,3,255,0,11,254,0,0,0,47,255,128,0,0,61,11,192,0,0,124,3,192,0,0,124,3,192,0,0,62,15,192,0,0,47,255,64,0,0,7,249,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,11,240,0,5,64,0,0, + // 0x0170 Ű + 22,37,222,28,3,255,0,3,252,31,240,0,0,11,244,63,208,0,0,31,224,127,64,0,0,63,128,254,0,0,0,190,2,248,0,0,0,248,7,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,224,0,0,27,255,254,64,0,0,0,21,64,0,0, + // 0x0171 ű + 18,30,150,24,3,255,0,63,193,255,0,0,255,67,253,0,1,254,7,244,0,3,248,15,208,0,11,224,47,64,0,15,128,125,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,11,240,0,5,64,0,0, + // 0x0172 Ų + 22,36,216,28,3,247,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,240,0,0,27,255,255,192,0,0,0,21,111,64,0,0,0,0,62,0,0,0,0,0,188,0,0,0,0,0,252,0,0,0,0,0,252,0,0,0,0,0,253,0,0,0,0,0,255,244,0,0,0,0,63,244,0,0,0,0,6,144,0, + // 0x0173 ų + 18,30,150,24,3,247,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,15,240,0,5,64,31,64,0,0,0,126,0,0,0,0,252,0,0,0,2,244,0,0,0,2,244,0,0,0,2,248,0,0,0,1,255,240,0,0,0,191,240,0,0,0,26,80, + // 0x0174 Ŵ + 36,36,68,36,0,0,0,0,0,2,255,64,0,0,0,0,0,0,7,255,192,0,0,0,0,0,0,31,255,240,0,0,0,0,0,0,63,195,252,0,0,0,0,0,0,254,0,255,0,0,0,0,0,3,244,0,47,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,128,0,1,255,0,0,3,253,127,192,0,2,255,64,0,3,252,63,192,0,3,255,128,0,7,248,63,208,0,7,255,192,0,11,244,31,224,0,11,255,192,0,15,240,15,240,0,15,239,208,0,15,240,15,240,0,15,223,240,0,31,224,11,244,0,31,203,240,0,47,208,7,248,0,47,199,244,0,63,192,3,252,0,63,131,248,0,63,192,3,252,0,127,67,252,0,127,128,2,253,0,191,2,252,0,191,64,1,254,0,255,0,254,0,255,0,0,255,0,254,0,255,0,255,0,0,255,1,253,0,191,1,254,0,0,191,66,252,0,127,66,253,0,0,127,131,248,0,63,131,252,0,0,63,195,244,0,63,195,252,0,0,63,199,240,0,47,199,248,0,0,47,219,240,0,15,219,240,0,0,31,223,224,0,15,235,240,0,0,15,239,208,0,11,239,224,0,0,15,255,192,0,7,255,208,0,0,11,255,192,0,3,255,192,0,0,7,255,64,0,3,255,192,0,0,3,255,0,0,2,255,128,0,0,2,255,0,0,0,255,64,0, + // 0x0175 ŵ + 30,29,232,31,0,0,0,0,0,127,240,0,0,0,0,0,0,255,248,0,0,0,0,0,3,255,253,0,0,0,0,0,11,244,191,64,0,0,0,0,47,208,47,208,0,0,0,0,126,0,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,26,144,0,6,160,127,192,0,63,240,0,15,240,63,192,0,127,240,0,31,224,47,208,0,255,244,0,47,208,31,224,0,255,248,0,63,192,15,240,1,253,252,0,63,192,15,240,2,248,253,0,127,128,11,244,3,244,254,0,191,64,7,248,3,240,191,0,255,0,3,252,11,240,127,0,254,0,3,252,15,224,63,65,253,0,2,253,15,208,63,130,252,0,1,254,31,192,47,195,252,0,0,255,47,192,15,211,248,0,0,191,63,64,15,231,244,0,0,127,127,0,11,235,240,0,0,63,191,0,7,255,240,0,0,63,254,0,3,255,208,0,0,47,253,0,3,255,192,0,0,31,252,0,2,255,192,0,0,15,248,0,0,255,128,0, + // 0x0176 Ŷ + 22,36,216,22,0,0,0,0,191,224,0,0,0,1,255,244,0,0,0,3,255,252,0,0,0,15,240,255,0,0,0,63,192,63,192,0,0,190,0,11,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,192,0,0,47,240,63,208,0,0,63,208,47,240,0,0,191,128,15,244,0,0,255,0,11,252,0,2,254,0,3,253,0,3,252,0,1,255,0,11,248,0,0,255,64,31,240,0,0,127,192,63,208,0,0,63,208,127,192,0,0,31,240,255,64,0,0,11,249,255,0,0,0,3,255,253,0,0,0,2,255,248,0,0,0,0,255,240,0,0,0,0,191,224,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x0177 ŷ + 20,39,195,20,0,246,0,2,255,128,0,0,7,255,208,0,0,15,255,240,0,0,63,195,252,0,0,255,0,255,0,2,244,0,47,128,0,0,0,0,0,0,0,0,0,0,85,0,0,0,85,191,128,0,2,254,63,192,0,3,253,63,208,0,7,252,31,240,0,11,248,15,240,0,15,240,11,248,0,31,240,3,252,0,47,208,3,253,0,63,192,1,254,0,127,128,0,255,0,255,64,0,191,64,255,0,0,63,129,254,0,0,63,195,252,0,0,31,211,252,0,0,15,231,244,0,0,11,251,240,0,0,3,255,224,0,0,3,255,192,0,0,1,255,192,0,0,0,255,64,0,0,0,255,0,0,0,1,254,0,0,0,2,253,0,0,0,3,252,0,0,0,15,244,0,0,16,127,240,0,0,127,255,192,0,0,127,255,64,0,0,127,248,0,0,0,0,0,0,0,0, + // 0x0178 Ÿ + 22,35,210,22,0,0,0,11,128,47,0,0,0,31,208,63,128,0,0,31,208,63,128,0,0,15,192,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,192,0,0,47,240,63,208,0,0,63,208,47,240,0,0,191,128,15,244,0,0,255,0,11,252,0,2,254,0,3,253,0,3,252,0,1,255,0,11,248,0,0,255,64,31,240,0,0,127,192,63,208,0,0,63,208,127,192,0,0,31,240,255,64,0,0,11,249,255,0,0,0,3,255,253,0,0,0,2,255,248,0,0,0,0,255,240,0,0,0,0,191,224,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x0179 Ź + 20,36,180,22,1,0,0,0,2,255,0,0,0,7,253,0,0,0,15,244,0,0,0,47,208,0,0,0,127,64,0,0,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,252,127,255,255,255,252,127,255,255,255,252,21,85,85,95,248,0,0,0,47,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,3,253,0,0,0,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,7,253,0,0,0,15,248,0,0,0,47,240,0,0,0,127,208,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,248,0,0,0,47,240,0,0,0,127,234,170,170,169,191,255,255,255,253,191,255,255,255,253,191,255,255,255,253, + // 0x017a ź + 16,29,116,18,1,0,0,0,47,240,0,0,127,208,0,0,255,64,0,2,253,0,0,7,244,0,0,15,192,0,0,0,0,0,0,0,0,0,21,85,85,84,63,255,255,253,63,255,255,253,42,170,171,252,0,0,11,248,0,0,31,240,0,0,63,192,0,0,255,64,0,2,254,0,0,7,252,0,0,15,244,0,0,47,224,0,0,127,192,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,208,0,0,191,255,255,254,191,255,255,254,191,255,255,254, + // 0x017b Ż + 20,35,175,22,1,0,0,0,191,0,0,0,0,255,64,0,0,0,255,64,0,0,0,191,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,252,127,255,255,255,252,127,255,255,255,252,21,85,85,95,248,0,0,0,47,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,3,253,0,0,0,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,7,253,0,0,0,15,248,0,0,0,47,240,0,0,0,127,208,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,248,0,0,0,47,240,0,0,0,127,234,170,170,169,191,255,255,255,253,191,255,255,255,253,191,255,255,255,253, + // 0x017c ż + 16,28,112,18,1,0,0,11,240,0,0,15,240,0,0,15,244,0,0,15,240,0,0,1,64,0,0,0,0,0,0,0,0,0,21,85,85,84,63,255,255,253,63,255,255,253,42,170,171,252,0,0,11,248,0,0,31,240,0,0,63,192,0,0,255,64,0,2,254,0,0,7,252,0,0,15,244,0,0,47,224,0,0,127,192,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,208,0,0,191,255,255,254,191,255,255,254,191,255,255,254, + // 0x017d Ž + 20,36,180,22,1,0,2,248,0,47,192,0,191,0,255,0,0,63,195,252,0,0,15,255,240,0,0,3,255,208,0,0,1,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,252,127,255,255,255,252,127,255,255,255,252,21,85,85,95,248,0,0,0,47,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,3,253,0,0,0,15,248,0,0,0,47,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,7,253,0,0,0,15,248,0,0,0,47,240,0,0,0,127,208,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,248,0,0,0,47,240,0,0,0,127,234,170,170,169,191,255,255,255,253,191,255,255,255,253,191,255,255,255,253, + // 0x017e ž + 16,29,116,18,1,0,47,128,2,248,15,240,15,240,3,252,63,192,0,255,255,0,0,63,252,0,0,31,244,0,0,0,0,0,0,0,0,0,21,85,85,84,63,255,255,253,63,255,255,253,42,170,171,252,0,0,11,248,0,0,31,240,0,0,63,192,0,0,255,64,0,2,254,0,0,7,252,0,0,15,244,0,0,47,224,0,0,127,192,0,0,255,0,0,3,253,0,0,11,248,0,0,31,240,0,0,63,208,0,0,191,255,255,254,191,255,255,254,191,255,255,254, + // 0x017f ſ + 11,29,87,13,3,0,1,191,248,15,255,252,63,255,248,127,228,100,191,128,0,191,64,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Simplified_Chinese_28.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Simplified_Chinese_28.cpp new file mode 100644 index 0000000000..844852751e --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Simplified_Chinese_28.cpp @@ -0,0 +1,778 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Simplified Chinese 38pt, capital 'A' height: 28px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 +extern const uint8_t NotoSans_Medium_Simplified_Chinese_28[27451] = { + 162,28,28,32,26,255,37,246, // unifont_t + // 0x201c “ + 28,32,14,10,40,15,0,17,2,248,3,240,3,244,11,240,7,240,15,224,15,240,31,208,15,224,47,192,47,208,63,192,63,192,127,128,63,192,191,128,127,192,255,64,0,0,0,0, + // 0x201d ” + 29,32,14,10,40,15,0,17,15,248,31,240,15,244,31,240,15,240,47,208,31,224,63,192,47,208,63,192,47,192,63,64,63,128,127,0,63,0,190,0,126,0,252,0,0,0,0,0, + // 0x22bf ⊿ + 191,34,29,31,248,38,4,255,0,0,0,0,0,0,0,128,0,0,0,0,0,0,2,192,0,0,0,0,0,0,11,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,191,192,0,0,0,0,0,2,255,192,0,0,0,0,0,11,255,192,0,0,0,0,0,47,255,192,0,0,0,0,0,191,223,192,0,0,0,0,2,255,31,192,0,0,0,0,11,252,31,192,0,0,0,0,31,240,31,192,0,0,0,0,127,192,31,192,0,0,0,1,255,0,31,192,0,0,0,7,252,0,31,192,0,0,0,31,240,0,31,192,0,0,0,127,192,0,31,192,0,0,1,255,0,0,31,192,0,0,7,252,0,0,31,192,0,0,31,240,0,0,31,192,0,0,127,192,0,0,31,192,0,1,255,0,0,0,31,192,0,7,252,0,0,0,31,192,0,31,240,0,0,0,31,192,0,127,192,0,0,0,31,192,1,255,0,0,0,0,31,192,7,252,0,0,0,0,31,192,15,255,255,255,255,255,255,192,63,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0, + // 0x4e00 一 + 0,78,35,4,36,38,2,12,255,255,255,255,255,255,255,255,244,255,255,255,255,255,255,255,255,244,255,255,255,255,255,255,255,255,244,255,255,255,255,255,255,255,255,244, + // 0x4e09 三 + 9,78,34,29,5,38,2,255,3,255,255,255,255,255,255,253,0,3,255,255,255,255,255,255,253,0,3,255,255,255,255,255,255,253,0,2,170,170,170,170,170,170,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,170,170,170,170,170,0,0,0,47,255,255,255,255,255,64,0,0,47,255,255,255,255,255,64,0,0,47,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,170,170,170,170,170,170,170,128,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208, + // 0x4e0a 上 + 10,78,34,34,50,38,2,254,0,0,0,5,64,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,250,170,170,168,0,0,0,0,15,255,255,255,253,0,0,0,0,15,255,255,255,253,0,0,0,0,15,255,255,255,253,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,170,170,170,175,250,170,170,170,160,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x4e0b 下 + 11,78,34,33,41,38,2,252,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,106,170,170,175,250,170,170,170,144,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,255,128,0,0,0,0,0,0,11,255,248,0,0,0,0,0,0,11,255,255,64,0,0,0,0,0,11,251,255,244,0,0,0,0,0,11,240,191,254,0,0,0,0,0,11,240,31,255,208,0,0,0,0,11,240,2,255,248,0,0,0,0,11,240,0,63,254,0,0,0,0,11,240,0,11,252,0,0,0,0,11,240,0,1,244,0,0,0,0,11,240,0,0,16,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0, + // 0x4e0d 不 + 13,78,34,33,41,38,2,252,127,255,255,255,255,255,255,255,192,127,255,255,255,255,255,255,255,192,127,255,255,255,255,255,255,255,192,42,170,170,170,255,234,170,170,128,0,0,0,0,255,192,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,191,252,0,0,0,0,0,0,1,255,252,124,0,0,0,0,0,7,255,254,255,64,0,0,0,0,31,255,252,255,240,0,0,0,0,127,243,252,47,253,0,0,0,2,255,195,252,7,255,64,0,0,11,255,3,252,1,255,224,0,0,63,252,3,252,0,63,252,0,2,255,240,3,252,0,11,255,0,31,255,128,3,252,0,2,255,192,191,253,0,3,252,0,0,191,240,191,240,0,3,252,0,0,31,224,63,128,0,3,252,0,0,7,128,8,0,0,3,252,0,0,1,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0, + // 0x4e13 专 + 19,78,34,37,77,38,2,251,0,0,0,31,128,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,128,0,0,0,0,2,255,255,255,255,255,255,248,0,2,255,255,255,255,255,255,248,0,2,255,255,255,255,255,255,248,0,1,85,86,254,85,85,85,80,0,0,0,2,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,248,0,0,0,0,0,85,85,91,249,85,85,85,85,64,255,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,255,208,0,0,47,192,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,255,255,255,255,255,208,0,0,1,255,255,255,255,255,248,0,0,2,255,255,255,255,255,240,0,0,1,85,85,85,85,255,192,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,63,240,0,0,0,0,41,0,0,255,192,0,0,0,0,127,228,3,255,0,0,0,0,0,255,255,159,252,0,0,0,0,0,31,255,255,240,0,0,0,0,0,0,127,255,244,0,0,0,0,0,0,2,255,255,64,0,0,0,0,0,0,31,255,244,0,0,0,0,0,0,0,191,252,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0, + // 0x4e1d 丝 + 29,78,34,34,50,38,2,254,0,0,16,0,0,0,80,0,0,0,0,190,0,0,0,254,0,0,0,0,255,0,0,1,253,0,0,0,1,253,0,0,2,252,0,0,0,3,252,0,0,3,244,0,0,0,7,244,0,0,11,240,0,0,0,11,240,0,0,15,208,0,0,0,15,208,8,0,47,192,9,0,0,47,192,31,64,127,64,47,128,0,63,64,63,192,254,0,63,192,0,191,0,191,129,252,0,255,64,1,253,0,255,3,244,1,254,0,3,248,2,253,15,240,3,252,0,11,240,3,248,63,255,255,240,0,47,255,255,240,63,255,255,224,0,47,255,255,208,47,255,255,192,0,15,255,255,128,25,64,255,0,0,9,64,255,0,0,2,253,0,0,0,2,252,0,0,7,248,0,0,0,11,244,0,0,15,240,0,0,0,31,208,0,0,63,192,0,0,0,127,128,0,0,255,0,0,0,1,254,0,0,3,252,0,0,0,7,254,191,255,31,255,255,255,192,31,255,255,255,63,255,255,255,192,15,255,255,255,31,255,255,255,128,11,254,149,64,15,234,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,85,85,64,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x4e2a 个 + 42,78,36,35,59,38,1,252,0,0,0,2,255,0,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,15,255,208,0,0,0,0,0,0,47,255,244,0,0,0,0,0,0,191,219,252,0,0,0,0,0,1,255,130,255,0,0,0,0,0,7,254,0,255,192,0,0,0,0,31,252,0,63,244,0,0,0,0,127,240,0,15,253,0,0,0,2,255,192,0,3,255,128,0,0,11,255,0,0,0,255,240,0,0,63,248,0,0,0,47,253,0,1,255,224,0,85,0,7,255,128,11,255,64,0,254,0,1,255,248,127,252,0,0,254,0,0,63,255,191,224,0,0,254,0,0,7,254,63,64,0,0,254,0,0,0,252,8,0,0,0,254,0,0,0,16,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0, + // 0x4e2d 中 + 45,78,32,36,32,38,3,252,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,149,85,95,245,85,86,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,149,85,95,245,85,86,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,0,168,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0, + // 0x4e3a 为 + 58,78,32,36,32,38,2,252,0,0,0,42,128,0,0,0,0,8,0,63,192,0,0,0,0,191,0,63,192,0,0,0,0,127,128,63,192,0,0,0,0,63,208,63,192,0,0,0,0,15,240,63,192,0,0,0,0,7,248,63,192,0,0,0,0,3,224,63,128,0,0,0,0,0,0,63,128,0,0,0,26,170,170,191,234,170,170,170,63,255,255,255,255,255,255,255,63,255,255,255,255,255,255,255,63,255,255,255,255,255,255,255,0,0,0,127,64,0,0,191,0,0,0,191,0,0,0,191,0,0,0,255,0,0,0,191,0,0,0,254,0,0,0,191,0,0,1,253,2,0,0,191,0,0,2,252,47,128,0,255,0,0,3,252,63,208,0,255,0,0,7,248,15,240,0,255,0,0,15,240,7,252,0,255,0,0,31,240,2,253,0,254,0,0,63,208,0,255,0,254,0,0,191,192,0,127,64,254,0,0,255,64,0,56,1,253,0,3,254,0,0,0,1,253,0,15,252,0,0,0,1,253,0,47,244,0,0,0,2,252,0,191,208,0,0,0,3,252,3,255,128,0,0,0,3,252,31,254,0,0,0,0,11,248,127,248,0,0,2,255,255,244,63,208,0,0,0,255,255,240,15,0,0,0,0,255,255,192,0,0,0,0,0,106,164,0, + // 0x4e3b 主 + 59,78,34,35,59,38,2,253,0,0,0,9,0,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,191,224,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,0,63,208,0,0,0,5,85,85,85,111,149,85,85,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,255,255,255,255,255,255,244,0,0,255,255,255,255,255,255,244,0,0,255,255,255,255,255,255,244,0,0,85,85,87,253,85,85,80,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,85,85,85,85,85,85,80, + // 0x4e49 义 + 73,78,34,36,68,38,2,252,0,0,0,6,128,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,11,240,0,1,224,0,0,0,0,3,244,0,3,252,0,0,188,0,2,252,0,3,252,0,1,253,0,1,253,0,11,244,0,0,255,0,0,254,0,15,240,0,0,127,64,0,191,0,31,224,0,0,63,128,0,61,0,63,208,0,0,47,208,0,0,0,127,192,0,0,15,240,0,0,0,255,64,0,0,11,244,0,0,1,255,0,0,0,3,252,0,0,3,253,0,0,0,2,254,0,0,7,252,0,0,0,0,255,64,0,15,240,0,0,0,0,127,192,0,63,224,0,0,0,0,47,224,0,127,192,0,0,0,0,15,248,1,255,0,0,0,0,0,7,253,3,254,0,0,0,0,0,2,255,79,248,0,0,0,0,0,0,191,255,240,0,0,0,0,0,0,63,255,192,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,31,255,128,0,0,0,0,0,0,191,255,240,0,0,0,0,0,3,255,255,253,0,0,0,0,0,47,254,11,255,128,0,0,0,1,255,244,1,255,248,0,0,0,31,255,128,0,63,255,128,0,2,255,253,0,0,11,255,249,0,127,255,224,0,0,0,191,255,224,255,254,0,0,0,0,11,255,240,191,208,0,0,0,0,0,191,192,56,0,0,0,0,0,0,6,64,0,0,0,0,0,0,0,0,0, + // 0x4e4b 之 + 75,78,35,36,68,38,1,252,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,1,85,85,85,255,85,85,89,0,3,255,255,255,255,255,255,255,128,3,255,255,255,255,255,255,255,192,3,255,255,255,255,255,255,255,128,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,11,253,0,0,0,0,0,0,0,31,244,0,0,0,0,0,0,0,127,224,0,0,0,1,0,0,1,255,128,0,0,0,3,224,0,7,254,0,0,0,0,11,244,0,47,248,0,0,0,0,15,240,0,191,224,0,0,0,0,31,224,2,255,128,0,0,0,0,63,240,15,253,0,0,0,0,0,127,252,127,244,0,0,0,0,0,255,255,255,192,0,0,0,0,2,254,255,254,0,0,0,0,0,3,252,63,252,0,0,0,0,0,11,248,15,255,144,0,0,0,0,31,240,3,255,255,250,165,85,88,63,208,0,127,255,255,255,255,252,191,192,0,6,255,255,255,255,248,31,64,0,0,6,191,255,255,244,1,0,0,0,0,0,0,0,0, + // 0x4e86 了 + 134,78,30,33,8,38,4,252,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,208,170,170,170,170,170,171,255,64,0,0,0,0,0,11,254,0,0,0,0,0,0,63,248,0,0,0,0,0,0,255,224,0,0,0,0,0,3,255,128,0,0,0,0,0,31,253,0,0,0,0,0,0,191,244,0,0,0,0,0,43,255,192,0,0,0,0,0,63,254,0,0,0,0,0,0,63,244,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,26,170,191,192,0,0,0,0,15,255,255,128,0,0,0,0,11,255,255,0,0,0,0,0,7,255,228,0,0,0,0, + // 0x4e8c 二 + 140,78,34,28,252,38,2,255,1,255,255,255,255,255,255,244,0,2,255,255,255,255,255,255,248,0,2,255,255,255,255,255,255,248,0,2,255,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0, + // 0x4e8e 于 + 142,78,34,33,41,38,2,252,3,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,252,0,1,85,85,86,254,85,85,84,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,85,85,85,86,254,85,85,85,80,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,255,255,252,0,0,0,0,0,0,191,255,252,0,0,0,0,0,0,127,255,240,0,0,0,0,0,0,42,169,0,0,0,0,0, + // 0x4ea4 交 + 164,78,34,37,77,38,2,251,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,85,85,85,85,85,85,85,85,80,0,0,20,0,0,2,128,0,0,0,0,63,128,0,15,240,0,0,0,0,255,192,0,47,253,0,0,0,3,255,0,0,7,255,128,0,0,15,252,0,0,0,255,240,0,0,127,240,0,0,0,47,252,0,2,255,192,0,0,0,11,255,0,31,255,6,64,0,30,65,255,192,191,248,63,192,0,47,224,127,224,63,224,47,208,0,63,192,31,128,15,0,15,240,0,191,128,9,0,0,0,11,244,0,255,0,0,0,0,0,3,252,3,254,0,0,0,0,0,2,255,11,252,0,0,0,0,0,0,255,175,240,0,0,0,0,0,0,63,255,208,0,0,0,0,0,0,31,255,128,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,127,255,208,0,0,0,0,0,2,255,255,248,0,0,0,0,0,47,255,95,255,128,0,0,0,7,255,252,3,255,249,0,0,1,191,255,208,0,191,255,228,0,191,255,253,0,0,11,255,255,240,255,255,208,0,0,0,191,255,240,63,248,0,0,0,0,6,255,192,46,0,0,0,0,0,0,6,64,0,0,0,0,0,0,0,0,0, + // 0x4eae 亮 + 174,78,34,37,77,38,2,251,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,85,85,85,85,85,64,0,0,47,255,255,255,255,255,128,0,0,47,255,255,255,255,255,128,0,0,47,192,0,0,0,63,128,0,0,47,192,0,0,0,63,128,0,0,47,192,0,0,0,63,128,0,0,47,255,255,255,255,255,128,0,0,47,255,255,255,255,255,128,0,0,5,85,85,85,85,85,64,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,0,0,0,0,0,0,15,208,127,0,0,0,0,0,0,15,208,127,0,15,224,3,252,0,15,208,127,0,15,224,3,252,0,15,208,127,0,31,208,3,252,0,15,208,0,0,47,192,3,252,0,0,0,0,0,63,192,3,252,0,0,0,0,0,127,128,3,252,0,0,0,0,0,255,64,3,252,0,7,128,0,3,254,0,3,252,0,7,240,0,47,252,0,3,252,0,11,240,6,255,240,0,2,253,0,15,224,255,255,128,0,2,255,255,255,208,191,249,0,0,0,255,255,255,192,62,64,0,0,0,47,255,254,0,0,0,0,0,0,0,0,0,0, + // 0x4ece 从 + 206,78,34,34,50,38,2,252,0,1,253,0,0,47,192,0,0,0,2,253,0,0,47,192,0,0,0,2,253,0,0,47,192,0,0,0,2,253,0,0,47,192,0,0,0,2,252,0,0,63,192,0,0,0,2,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,208,0,0,0,3,248,0,0,127,208,0,0,0,7,248,0,0,127,224,0,0,0,7,244,0,0,191,240,0,0,0,11,244,0,0,255,240,0,0,0,11,252,0,0,255,240,0,0,0,15,255,0,0,255,244,0,0,0,15,255,192,1,255,252,0,0,0,31,255,224,2,255,252,0,0,0,31,255,244,3,253,253,0,0,0,47,203,252,7,248,254,0,0,0,63,195,255,11,244,255,0,0,0,127,128,255,79,240,191,64,0,0,191,64,191,111,224,63,192,0,0,255,0,62,63,192,47,208,0,1,255,0,28,191,192,31,240,0,3,253,0,1,255,64,15,248,0,7,252,0,3,255,0,7,253,0,15,248,0,11,252,0,3,255,0,47,240,0,47,248,0,0,255,192,127,224,0,191,240,0,0,191,240,255,192,2,255,192,0,0,63,240,255,64,0,191,0,0,0,15,208,46,0,0,44,0,0,0,3,128,4,0,0,0,0,0,0,0,0, + // 0x4ee4 令 + 228,78,36,36,68,38,1,252,0,0,0,1,254,0,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,11,255,208,0,0,0,0,0,0,47,255,240,0,0,0,0,0,0,127,219,252,0,0,0,0,0,1,255,131,255,0,0,0,0,0,7,254,0,255,192,0,0,0,0,31,252,0,63,244,0,0,0,0,127,240,0,15,253,0,0,0,2,255,192,0,3,255,128,0,0,11,255,0,0,0,255,240,0,0,63,253,0,0,0,127,253,0,1,255,223,255,255,255,247,255,208,15,255,79,255,255,255,240,255,248,127,252,15,255,255,255,240,47,253,63,208,0,0,0,0,0,7,248,15,0,0,0,0,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,0,0,47,208,0,2,252,0,0,0,0,31,192,0,2,252,0,0,0,0,31,192,0,2,252,0,0,0,0,31,192,0,2,252,0,0,0,0,31,192,0,2,252,0,0,0,0,31,192,0,2,252,0,0,0,0,31,192,0,2,252,0,0,0,0,31,192,0,2,252,0,0,0,0,31,192,15,255,252,0,0,0,0,31,192,11,255,248,0,0,0,0,31,192,7,255,224,0,0,0,0,31,192,1,84,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0, + // 0x4ee5 以 + 229,78,36,33,41,38,1,252,0,63,64,0,0,0,0,249,0,0,63,128,0,0,0,1,254,0,0,63,128,0,0,0,1,253,0,0,63,128,11,128,0,2,253,0,0,63,128,63,208,0,2,252,0,0,63,128,31,240,0,3,252,0,0,63,128,11,252,0,3,252,0,0,63,128,3,254,0,3,248,0,0,63,128,0,255,0,7,248,0,0,63,192,0,191,192,11,244,0,0,63,192,0,63,208,15,240,0,0,63,192,0,31,224,15,240,0,0,63,192,0,15,64,31,224,0,0,63,192,0,0,0,47,208,0,0,47,192,0,0,0,63,192,0,0,47,192,0,0,0,127,128,0,0,47,192,0,0,0,255,64,0,0,47,192,0,0,0,255,0,0,0,47,192,0,0,2,254,0,0,0,47,192,31,0,7,252,0,0,0,47,193,255,0,15,254,0,0,0,47,239,255,64,47,255,128,0,0,31,255,254,0,127,255,208,0,0,191,255,224,1,255,175,244,0,31,255,253,0,7,255,15,253,0,127,255,144,0,31,252,3,255,0,63,248,0,0,191,244,0,255,192,63,64,0,7,255,192,0,127,240,20,0,0,127,255,0,0,31,248,0,0,7,255,248,0,0,11,253,0,0,11,255,208,0,0,3,253,0,0,2,254,0,0,0,0,240,0,0,0,160,0,0,0,0,64, + // 0x4ef6 件 + 246,78,35,36,68,38,1,252,0,0,32,0,0,5,64,0,0,0,0,191,0,0,31,192,0,0,0,0,254,2,144,31,192,0,0,0,1,253,3,244,31,192,0,0,0,3,252,7,240,31,192,0,0,0,7,248,11,240,31,192,0,0,0,15,240,15,224,31,192,0,0,0,31,224,15,208,31,192,0,0,0,63,192,31,255,255,255,255,224,0,127,128,47,255,255,255,255,224,0,255,64,63,255,255,255,255,224,3,255,64,127,149,111,229,85,64,7,255,64,255,0,31,192,0,0,31,255,65,253,0,31,192,0,0,63,255,67,252,0,31,192,0,0,191,255,66,244,0,31,192,0,0,63,63,64,32,0,31,192,0,0,44,63,64,0,0,31,192,0,0,4,63,64,0,0,31,192,0,0,0,63,67,255,255,255,255,255,252,0,63,67,255,255,255,255,255,252,0,63,67,255,255,255,255,255,252,0,63,65,85,85,111,229,85,84,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,47,64,0,0,31,192,0,0, + // 0x4efd 份 + 253,78,36,36,68,38,1,252,0,0,100,0,0,0,0,0,0,0,0,255,0,15,255,255,128,0,0,1,253,0,15,255,255,192,0,0,2,252,0,15,255,255,208,0,0,3,248,1,64,0,15,224,0,0,11,240,3,248,0,15,240,0,0,15,224,3,244,0,7,240,0,0,47,192,11,240,0,3,248,0,0,63,128,15,224,0,3,252,0,0,255,64,47,192,0,1,254,0,1,255,64,63,128,0,0,255,0,3,255,64,191,0,0,0,127,192,15,255,64,254,0,0,0,63,224,47,255,67,252,0,0,0,31,248,127,255,75,244,0,0,0,11,254,255,191,95,240,0,0,0,7,253,190,63,111,239,255,255,255,253,248,60,63,71,95,255,255,255,252,32,32,63,64,31,255,255,255,252,0,0,63,64,0,11,224,1,252,0,0,63,64,0,15,224,1,252,0,0,63,64,0,15,208,1,252,0,0,63,64,0,15,208,1,252,0,0,63,64,0,31,192,2,252,0,0,63,64,0,47,192,2,252,0,0,63,64,0,63,64,2,252,0,0,63,64,0,127,0,2,252,0,0,63,64,0,255,0,3,252,0,0,63,64,1,253,0,3,248,0,0,63,64,3,252,0,3,248,0,0,63,64,15,244,0,3,248,0,0,63,64,63,224,0,11,244,0,0,63,66,255,128,15,255,240,0,0,63,67,254,0,11,255,240,0,0,63,64,244,0,7,255,192,0,0,42,0,64,0,1,84,0,0, + // 0x4f11 休 + 17,79,36,36,68,38,1,252,0,0,4,0,0,0,0,0,0,0,0,47,128,0,63,128,0,0,0,0,63,192,0,63,128,0,0,0,0,191,64,0,63,128,0,0,0,0,255,0,0,63,128,0,0,0,1,254,0,0,63,128,0,0,0,3,252,0,0,63,128,0,0,0,11,248,0,0,63,128,0,0,0,15,240,0,0,63,128,0,0,0,63,224,0,0,63,128,0,0,0,191,211,255,255,255,255,255,252,1,255,211,255,255,255,255,255,252,3,255,211,255,255,255,255,255,252,15,255,209,85,87,255,253,85,84,63,255,208,0,3,255,252,0,0,255,239,208,0,7,255,253,0,0,191,143,208,0,15,255,255,0,0,63,15,208,0,31,255,255,0,0,44,15,208,0,63,255,175,192,0,0,15,208,0,127,127,159,208,0,0,15,208,0,255,63,143,240,0,0,15,208,2,253,63,135,248,0,0,15,208,7,252,63,130,252,0,0,15,208,15,240,63,128,255,0,0,15,208,47,224,63,128,191,128,0,15,208,191,192,63,128,63,208,0,15,209,255,0,63,128,31,244,0,15,219,253,0,63,128,11,253,0,15,239,248,0,63,128,3,255,0,15,219,240,0,63,128,0,252,0,15,210,192,0,63,128,0,48,0,15,208,0,0,63,128,0,0,0,15,208,0,0,63,128,0,0,0,15,208,0,0,63,128,0,0,0,15,208,0,0,63,128,0,0,0,15,192,0,0,63,128,0,0, + // 0x4f20 传 + 32,79,35,36,68,38,1,252,0,0,16,0,0,80,0,0,0,0,0,190,0,0,255,0,0,0,0,0,254,0,0,254,0,0,0,0,1,253,0,1,253,0,0,0,0,3,252,0,2,253,0,0,0,0,7,244,191,255,255,255,255,208,0,15,240,191,255,255,255,255,208,0,31,208,191,255,255,255,255,208,0,63,192,0,11,240,0,0,0,0,191,64,0,15,224,0,0,0,1,255,64,0,15,208,0,0,0,3,255,65,85,111,213,85,85,84,15,255,79,255,255,255,255,255,252,47,255,79,255,255,255,255,255,252,191,255,79,255,255,255,255,255,252,255,191,64,0,191,0,0,0,0,126,63,64,0,255,0,0,0,0,60,63,64,0,253,0,0,0,0,16,63,64,1,252,0,0,0,0,0,63,64,3,255,255,255,255,64,0,63,64,3,255,255,255,255,208,0,63,64,7,255,255,255,255,128,0,63,64,1,85,85,87,254,0,0,63,64,0,0,0,11,252,0,0,63,64,0,0,0,47,240,0,0,63,64,0,0,0,127,192,0,0,63,64,0,15,65,255,0,0,0,63,64,0,63,231,253,0,0,0,63,64,0,47,255,244,0,0,0,63,64,0,7,255,224,0,0,0,63,64,0,0,191,240,0,0,0,63,64,0,0,31,253,0,0,0,63,64,0,0,7,255,64,0,0,63,64,0,0,0,255,192,0,0,63,64,0,0,0,63,0,0,0,63,64,0,0,0,8,0,0, + // 0x4f4d 位 + 77,79,36,36,68,38,1,252,0,0,36,0,0,21,64,0,0,0,0,127,64,0,63,128,0,0,0,0,191,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,2,252,0,0,63,128,0,0,0,3,252,0,0,63,128,0,0,0,11,244,0,0,63,128,0,0,0,31,224,85,85,127,213,85,80,0,63,192,255,255,255,255,255,248,0,191,192,255,255,255,255,255,248,1,255,192,255,255,255,255,255,248,3,255,192,0,0,0,0,0,0,11,255,192,0,0,0,0,0,0,47,255,192,1,96,0,0,249,0,191,255,192,3,240,0,1,254,0,255,175,192,3,244,0,1,253,0,127,47,192,2,248,0,2,252,0,60,47,192,1,252,0,3,252,0,16,47,192,1,252,0,3,248,0,0,47,192,0,253,0,7,244,0,0,47,192,0,254,0,11,240,0,0,47,192,0,190,0,15,240,0,0,47,192,0,191,0,15,224,0,0,47,192,0,127,0,15,208,0,0,47,192,0,127,0,47,192,0,0,47,192,0,63,64,63,192,0,0,47,192,0,63,128,63,64,0,0,47,192,0,63,128,127,0,0,0,47,192,0,63,128,191,0,0,0,47,192,0,16,0,254,0,0,0,47,193,85,85,85,253,85,84,0,47,195,255,255,255,255,255,254,0,47,195,255,255,255,255,255,254,0,47,195,255,255,255,255,255,254,0,47,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0, + // 0x4f4e 低 + 78,79,36,36,68,38,1,252,0,0,80,0,0,0,0,0,0,0,0,254,0,0,0,0,4,0,0,0,254,0,0,0,6,255,0,0,2,252,0,0,22,255,255,192,0,3,252,53,111,255,255,255,128,0,7,244,63,255,255,255,144,0,0,15,240,63,255,255,248,0,0,0,47,208,63,229,3,248,0,0,0,63,192,63,64,3,248,0,0,0,191,64,63,64,3,252,0,0,1,255,64,63,64,2,252,0,0,3,255,64,63,64,2,252,0,0,11,255,64,63,64,2,252,0,0,31,255,64,63,64,2,252,0,0,127,255,64,63,255,255,255,255,253,255,255,64,63,255,255,255,255,253,255,63,64,63,255,255,255,255,253,60,63,64,63,64,0,253,0,0,36,63,64,63,64,0,254,0,0,0,63,64,63,64,0,254,0,0,0,63,64,63,64,0,191,0,0,0,63,64,63,64,0,191,0,0,0,63,64,63,64,0,127,0,0,0,63,64,63,64,0,63,64,0,0,63,64,63,64,5,63,128,0,0,63,64,63,155,255,111,192,0,0,63,65,191,255,255,95,208,32,0,63,71,255,255,255,79,224,46,0,63,67,255,250,64,11,240,63,0,63,67,229,0,0,7,248,63,0,63,64,0,0,0,3,253,127,0,63,64,0,0,0,1,255,254,0,63,65,255,255,255,252,191,252,0,63,65,255,255,255,252,47,248,0,63,65,255,255,255,252,6,144,0,63,64,0,0,0,0,0,0, + // 0x4f53 体 + 83,79,36,36,68,38,1,252,0,0,144,0,0,42,0,0,0,0,1,253,0,0,63,64,0,0,0,2,252,0,0,63,64,0,0,0,3,248,0,0,63,64,0,0,0,7,244,0,0,63,64,0,0,0,15,240,0,0,63,64,0,0,0,31,208,0,0,63,64,0,0,0,63,193,85,85,127,149,85,84,0,127,135,255,255,255,255,255,252,0,255,71,255,255,255,255,255,252,1,255,71,255,255,255,255,255,252,3,255,64,0,7,255,244,0,0,11,255,64,0,11,255,252,0,0,31,255,64,0,15,255,252,0,0,127,255,64,0,31,255,190,0,0,191,255,64,0,63,127,127,0,0,63,63,64,0,127,63,111,128,0,44,63,64,0,253,63,95,192,0,4,63,64,1,252,63,79,224,0,0,63,64,3,244,63,71,240,0,0,63,64,11,240,63,67,248,0,0,63,64,31,208,63,65,253,0,0,63,64,63,192,63,64,255,0,0,63,64,191,64,63,64,127,192,0,63,65,254,0,63,64,47,224,0,63,71,253,0,127,64,31,244,0,63,95,247,255,255,255,247,254,0,63,111,227,255,255,255,242,253,0,63,75,131,255,255,255,240,244,0,63,66,0,0,63,64,0,16,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,64,0,0,63,64,0,0,0,63,0,0,0,42,0,0,0, + // 0x4f59 余 + 89,79,36,37,77,38,1,251,0,0,0,1,254,0,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,15,255,208,0,0,0,0,0,0,47,255,244,0,0,0,0,0,0,191,199,253,0,0,0,0,0,2,255,1,255,128,0,0,0,0,15,253,0,127,224,0,0,0,0,63,244,0,31,252,0,0,0,1,255,192,0,7,255,64,0,0,11,255,0,0,0,255,224,0,0,63,248,0,0,0,47,253,0,2,255,224,0,0,0,11,255,208,47,255,255,255,255,255,255,255,253,127,248,255,255,255,255,254,47,252,31,208,255,255,255,255,254,7,244,9,0,0,0,254,0,0,0,96,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,1,85,85,85,255,85,85,85,64,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,180,0,254,0,60,0,0,0,1,254,0,254,1,255,64,0,0,7,252,0,254,0,191,224,0,0,31,240,0,254,0,31,248,0,0,191,208,0,254,0,7,254,0,2,255,64,0,254,0,1,255,192,31,253,0,0,254,0,0,127,240,63,240,1,85,254,0,0,31,244,15,192,3,255,254,0,0,7,208,1,0,3,255,252,0,0,1,0,0,0,1,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x4f5c 作 + 92,79,36,36,68,38,1,252,0,0,20,0,0,0,0,0,0,0,0,63,64,11,224,0,0,0,0,0,191,64,15,240,0,0,0,0,0,255,0,31,208,0,0,0,0,1,253,0,47,192,0,0,0,0,3,252,0,63,128,0,0,0,0,7,248,0,191,149,85,85,84,0,15,240,0,255,255,255,255,253,0,31,224,2,255,255,255,255,253,0,63,192,3,255,255,255,255,253,0,255,192,15,240,127,64,0,0,1,255,192,31,224,127,64,0,0,3,255,192,63,192,127,64,0,0,15,255,192,255,64,127,64,0,0,63,255,194,255,0,127,64,0,0,127,255,195,252,0,127,255,255,248,63,111,192,244,0,127,255,255,248,30,47,192,16,0,127,255,255,248,8,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,85,85,84,0,47,192,0,0,127,255,255,252,0,47,192,0,0,127,255,255,252,0,47,192,0,0,127,255,255,252,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,31,192,0,0,127,0,0,0, + // 0x4f7f 使 + 127,79,36,37,77,38,1,251,0,0,57,0,0,26,128,0,0,0,0,127,64,0,47,192,0,0,0,0,255,0,0,47,192,0,0,0,1,253,0,0,47,192,0,0,0,2,254,255,255,255,255,255,253,0,7,250,255,255,255,255,255,253,0,15,242,255,255,255,255,255,253,0,31,224,0,0,47,192,0,0,0,63,192,0,0,47,192,0,0,0,191,192,0,0,47,192,0,0,1,255,192,0,0,47,192,0,0,3,255,192,191,255,255,255,255,244,15,255,192,191,255,255,255,255,244,47,255,192,191,255,255,255,255,244,191,255,192,190,0,47,192,3,244,255,175,192,190,0,47,192,3,244,127,47,192,190,0,47,192,3,244,60,47,192,190,0,47,192,3,244,16,47,192,190,0,47,192,3,244,0,47,192,191,255,255,255,255,244,0,47,192,191,255,255,255,255,244,0,47,192,191,255,255,255,255,244,0,47,192,0,0,63,128,0,0,0,47,192,127,0,63,64,0,0,0,47,192,63,128,127,0,0,0,0,47,192,15,224,191,0,0,0,0,47,192,11,248,254,0,0,0,0,47,192,2,255,252,0,0,0,0,47,192,0,191,248,0,0,0,0,47,192,0,63,253,0,0,0,0,47,192,0,255,255,228,0,0,0,47,192,11,255,191,255,144,0,0,47,193,255,253,11,255,255,229,0,47,203,255,224,0,191,255,253,0,47,195,254,0,0,6,255,248,0,47,192,224,0,0,0,6,176,0,0,0,0,0,0,0,0,0, + // 0x4f9b 供 + 155,79,36,36,68,38,1,252,0,0,36,0,105,0,6,160,0,0,0,191,0,191,0,11,240,0,0,0,254,0,191,0,11,240,0,0,1,253,0,191,0,11,240,0,0,3,252,0,191,0,11,240,0,0,7,244,0,191,0,11,240,0,0,15,240,0,191,0,11,240,0,0,47,208,0,191,0,11,240,0,0,63,192,255,255,255,255,255,252,0,191,64,255,255,255,255,255,252,1,255,64,255,255,255,255,255,252,3,255,64,85,191,85,91,245,84,15,255,64,0,191,0,11,240,0,47,255,64,0,191,0,11,240,0,127,255,64,0,191,0,11,240,0,255,191,64,0,191,0,11,240,0,127,63,64,0,191,0,11,240,0,60,63,64,0,191,0,11,240,0,20,63,64,0,191,0,11,240,0,0,63,64,0,191,0,11,240,0,0,63,65,85,255,85,95,245,84,0,63,67,255,255,255,255,255,253,0,63,67,255,255,255,255,255,253,0,63,67,255,255,255,255,255,253,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,61,0,1,192,0,0,63,64,0,191,64,15,240,0,0,63,64,1,254,0,7,252,0,0,63,64,7,252,0,2,254,0,0,63,64,15,244,0,0,191,128,0,63,64,63,208,0,0,63,208,0,63,65,255,128,0,0,15,240,0,63,67,254,0,0,0,7,252,0,63,65,248,0,0,0,2,244,0,63,64,32,0,0,0,0,128, + // 0x4fb5 侵 + 181,79,36,36,68,38,1,251,0,0,190,0,0,0,0,0,0,0,0,254,47,255,255,255,255,128,0,2,252,47,255,255,255,255,128,0,3,252,26,170,170,170,191,128,0,7,244,0,0,0,0,63,128,0,15,240,0,0,0,0,63,128,0,47,208,15,255,255,255,255,128,0,63,192,15,255,255,255,255,128,0,191,64,6,170,170,170,191,128,1,255,64,0,0,0,0,63,128,3,255,64,0,0,0,0,63,128,15,255,64,63,255,255,255,255,128,47,255,64,63,255,255,255,255,128,191,255,64,42,170,170,170,170,64,255,191,64,0,0,0,0,0,0,126,63,66,170,170,170,170,170,168,56,63,67,255,255,255,255,255,252,0,63,67,255,255,255,255,255,252,0,63,67,240,0,0,0,1,252,0,63,67,240,0,0,0,1,252,0,63,67,240,0,0,0,1,252,0,63,67,255,255,255,255,255,252,0,63,64,15,255,255,255,255,0,0,63,64,15,255,255,255,252,0,0,63,64,1,253,0,3,248,0,0,63,64,0,255,0,15,240,0,0,63,64,0,63,208,63,208,0,0,63,64,0,31,249,255,64,0,0,63,64,0,7,255,253,0,0,0,63,64,0,2,255,248,0,0,0,63,64,0,111,255,255,208,0,0,63,64,111,255,254,255,255,164,0,63,67,255,255,128,47,255,253,0,63,66,255,244,0,1,191,248,0,63,0,228,0,0,0,1,176,0,0,0,0,0,0,0,0,0, + // 0x4fdd 保 + 221,79,36,36,68,38,1,252,0,0,36,0,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,191,31,255,255,255,255,192,0,0,254,31,255,255,255,255,192,0,2,252,31,255,255,255,255,192,0,3,248,31,192,0,0,31,192,0,15,240,31,192,0,0,31,192,0,31,224,31,192,0,0,31,192,0,63,192,31,192,0,0,31,192,0,191,192,31,192,0,0,31,192,1,255,192,31,192,0,0,31,192,3,255,192,31,255,255,255,255,192,15,255,192,31,255,255,255,255,192,63,255,192,31,255,255,255,255,192,191,239,192,0,0,47,192,0,0,191,111,192,0,0,47,192,0,0,62,47,192,0,0,47,192,0,0,44,47,192,0,0,47,192,0,0,0,47,192,0,0,47,192,0,0,0,47,195,255,255,255,255,255,252,0,47,195,255,255,255,255,255,252,0,47,195,255,255,255,255,255,252,0,47,192,0,3,255,252,0,0,0,47,192,0,11,255,255,0,0,0,47,192,0,31,255,255,128,0,0,47,192,0,63,239,223,208,0,0,47,192,0,255,47,207,244,0,0,47,192,3,253,47,195,253,0,0,47,192,31,248,47,193,255,64,0,47,192,127,224,47,192,127,208,0,47,195,255,128,47,192,47,248,0,47,207,254,0,47,192,11,255,0,47,199,248,0,47,192,2,253,0,47,193,208,0,47,192,0,116,0,47,192,0,0,47,192,0,0,0,31,128,0,0,47,192,0,0, + // 0x4fe1 信 + 225,79,36,36,68,38,1,252,0,0,36,0,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,191,7,255,255,255,255,0,0,0,254,7,255,255,255,255,0,0,2,252,3,255,255,255,255,0,0,3,248,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,31,227,255,255,255,255,255,253,0,63,195,255,255,255,255,255,253,0,191,195,255,255,255,255,255,253,0,255,192,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,11,255,192,0,0,0,0,0,0,47,255,192,15,255,255,255,255,128,127,255,192,15,255,255,255,255,128,255,175,192,11,255,255,255,255,128,191,47,192,0,0,0,0,0,0,60,47,192,0,0,0,0,0,0,16,47,192,11,255,255,255,255,64,0,47,192,15,255,255,255,255,128,0,47,192,15,255,255,255,255,128,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,15,255,255,255,255,192,0,47,192,31,255,255,255,255,192,0,47,192,31,255,255,255,255,192,0,47,192,31,192,0,0,31,192,0,47,192,31,192,0,0,31,192,0,47,192,31,192,0,0,31,192,0,47,192,31,192,0,0,31,192,0,47,192,31,192,0,0,31,192,0,47,192,31,255,255,255,255,192,0,47,192,31,255,255,255,255,192,0,47,192,31,255,255,255,255,192,0,47,192,31,192,0,0,31,192,0,26,128,15,192,0,0,26,128, + // 0x503c 值 + 60,80,36,36,68,38,1,252,0,0,96,0,0,30,128,0,0,0,0,254,0,0,47,192,0,0,0,0,253,0,0,63,192,0,0,0,2,252,0,0,63,128,0,0,0,3,249,255,255,255,255,255,244,0,7,241,255,255,255,255,255,244,0,15,241,255,255,255,255,255,244,0,31,208,0,0,127,0,0,0,0,63,192,0,0,190,0,0,0,0,191,64,0,0,253,0,0,0,0,255,0,26,170,254,170,170,0,3,255,0,31,255,255,255,255,0,11,255,0,31,255,255,255,255,0,31,255,0,31,128,0,0,63,0,63,255,0,31,128,0,0,63,0,191,255,0,31,128,0,0,63,0,63,127,0,31,255,255,255,255,0,45,63,0,31,255,255,255,255,0,8,63,0,31,234,170,170,191,0,0,63,0,31,128,0,0,63,0,0,63,0,31,128,0,0,63,0,0,63,0,31,255,255,255,255,0,0,63,0,31,255,255,255,255,0,0,63,0,31,213,85,85,191,0,0,63,0,31,128,0,0,63,0,0,63,0,31,128,0,0,63,0,0,63,0,31,213,85,85,191,0,0,63,0,31,255,255,255,255,0,0,63,0,31,255,255,255,255,0,0,63,0,31,128,0,0,63,0,0,63,0,31,128,0,0,63,0,0,63,0,31,128,0,0,63,0,0,63,15,255,255,255,255,255,253,0,63,15,255,255,255,255,255,253,0,63,15,255,255,255,255,255,253,0,63,0,0,0,0,0,0,0, + // 0x503e 倾 + 62,80,36,37,77,38,1,251,0,7,144,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,15,208,0,15,255,255,255,253,0,31,192,0,15,255,255,255,253,0,47,199,224,15,255,255,255,253,0,63,71,224,0,0,63,64,0,0,127,7,224,0,0,127,0,0,0,254,7,224,0,0,190,0,0,1,253,7,224,0,0,253,0,0,3,253,7,224,2,255,255,255,224,7,253,7,224,2,255,255,255,224,15,253,7,224,2,255,255,255,224,31,253,7,255,242,248,0,11,224,63,253,7,255,242,248,20,11,224,191,253,7,255,242,248,63,11,224,255,189,7,224,2,248,63,11,224,188,189,7,224,2,248,63,11,224,56,189,7,224,2,248,63,11,224,32,189,7,224,2,248,63,11,224,0,189,7,224,2,248,63,11,224,0,189,7,224,2,248,63,11,224,0,189,7,224,2,248,63,11,224,0,189,7,224,18,248,62,11,224,0,189,7,225,242,248,62,11,224,0,189,7,255,242,248,62,11,224,0,189,7,255,226,248,126,11,224,0,189,15,255,66,248,253,11,224,0,189,15,244,0,0,252,0,0,0,189,11,128,0,2,248,224,0,0,189,5,0,0,7,247,252,0,0,189,0,0,0,31,226,255,64,0,189,0,0,0,127,192,127,208,0,189,0,0,2,255,0,15,248,0,189,0,0,47,252,0,3,252,0,189,0,0,47,224,0,0,248,0,189,0,0,14,0,0,0,32,0,0,0,0,0,0,0,0,0, + // 0x504f 偏 + 79,80,36,36,68,38,1,252,0,1,128,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,246,255,255,255,255,255,253,0,11,243,255,255,255,255,255,253,0,15,227,255,255,255,255,255,253,0,31,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,64,42,170,170,170,170,160,0,191,0,127,255,255,255,255,240,0,255,0,127,255,255,255,255,240,3,255,0,127,0,0,0,11,240,7,255,0,127,0,0,0,11,240,15,255,0,127,0,0,0,11,240,47,255,0,127,0,0,0,11,240,127,255,0,127,255,255,255,255,240,255,255,0,127,255,255,255,255,240,255,127,0,127,170,170,170,170,160,124,127,0,127,0,0,0,0,0,52,127,0,127,0,0,0,0,0,0,127,0,191,255,255,255,255,248,0,127,0,191,255,255,255,255,248,0,127,0,255,255,255,255,255,248,0,127,0,255,240,124,15,66,248,0,127,0,255,240,124,15,66,248,0,127,1,255,240,124,15,66,248,0,127,2,255,240,124,15,66,248,0,127,3,251,255,255,255,255,248,0,127,3,247,255,255,255,255,248,0,127,7,243,250,255,191,235,248,0,127,15,227,240,124,15,66,248,0,127,31,211,240,124,15,66,248,0,127,63,195,240,124,15,66,248,0,127,127,67,240,124,15,66,248,0,127,30,3,240,124,15,127,244,0,127,0,3,240,124,15,95,240,0,127,0,3,240,124,15,79,208, + // 0x505c 停 + 92,80,36,36,68,38,1,252,0,0,80,0,0,42,128,0,0,0,0,255,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,2,252,0,0,63,192,0,0,0,3,251,255,255,255,255,255,252,0,11,243,255,255,255,255,255,252,0,15,243,255,255,255,255,255,252,0,47,192,0,0,0,0,0,0,0,63,128,5,85,85,85,85,0,0,255,64,15,255,255,255,255,64,2,255,64,15,255,255,255,255,64,7,255,64,15,192,0,0,63,64,15,255,64,15,192,0,0,63,64,63,255,64,15,192,0,0,63,64,191,255,64,15,255,255,255,255,64,255,127,64,15,255,255,255,255,64,125,63,64,5,85,85,85,85,0,56,63,64,0,0,0,0,0,0,16,63,71,255,255,255,255,255,254,0,63,75,255,255,255,255,255,254,0,63,75,255,255,255,255,255,254,0,63,75,224,0,0,0,0,190,0,63,75,224,0,0,0,0,190,0,63,75,226,255,255,255,252,190,0,63,75,227,255,255,255,252,190,0,63,75,227,255,255,255,252,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,255,255,128,0,0,0,63,64,0,191,255,64,0,0,0,63,0,0,127,249,0,0,0, + // 0x50a8 储 + 168,80,36,36,68,38,1,252,0,7,144,0,0,11,224,0,0,0,11,224,0,0,11,224,0,228,0,15,193,128,0,11,224,2,252,0,31,203,224,0,11,224,3,244,0,47,135,244,15,255,255,235,240,0,63,2,253,15,255,255,255,208,0,127,0,255,15,255,255,255,192,0,190,0,63,64,11,224,63,128,0,252,0,29,0,11,224,255,0,2,252,0,4,0,11,225,253,0,3,252,0,0,0,11,227,252,0,11,252,0,0,0,11,235,244,0,15,252,21,84,63,255,255,255,253,47,252,191,252,63,255,255,255,253,127,252,191,252,63,255,255,255,253,255,252,191,252,0,3,253,0,0,189,252,0,252,0,15,248,0,0,56,252,0,252,0,63,224,0,0,32,252,0,252,1,255,192,0,0,0,252,0,252,11,255,255,255,240,0,252,0,252,127,255,255,255,240,0,252,0,252,255,255,255,255,240,0,252,0,252,63,253,0,7,240,0,252,0,252,24,189,0,7,240,0,252,0,252,0,189,0,7,240,0,252,0,252,0,191,255,255,240,0,252,0,252,0,191,255,255,240,0,252,0,252,36,191,170,171,240,0,252,0,254,248,189,0,7,240,0,252,0,255,252,189,0,7,240,0,252,2,255,224,189,0,7,240,0,252,7,255,64,191,255,255,240,0,252,3,248,0,191,255,255,240,0,252,1,208,0,191,255,255,240,0,252,0,0,0,189,0,7,240,0,168,0,0,0,105,0,2,144, + // 0x50cf 像 + 207,80,36,36,68,38,1,252,0,1,144,0,121,0,0,0,0,0,3,248,0,254,0,0,0,0,0,3,244,2,254,170,168,0,0,0,11,240,7,255,255,255,0,0,0,15,224,15,255,255,255,0,0,0,31,208,63,192,1,253,0,0,0,63,192,255,64,3,252,0,0,0,63,130,254,0,11,244,0,0,0,191,15,255,255,255,255,255,240,0,255,63,255,255,255,255,255,240,3,255,15,254,85,127,149,91,240,7,255,2,252,0,63,64,7,240,15,255,0,252,0,63,64,7,240,47,255,0,252,0,63,64,7,240,127,255,0,255,255,255,255,255,240,255,191,0,255,255,255,255,255,240,190,127,0,85,111,250,253,85,80,60,127,0,0,191,208,252,0,0,48,127,0,11,255,192,189,1,240,0,127,1,255,255,240,126,7,252,0,127,15,255,131,248,63,31,244,0,127,7,248,7,253,63,255,192,0,127,2,64,47,255,47,254,0,0,127,0,1,255,127,79,244,0,0,127,0,47,248,31,203,224,0,0,127,6,255,208,47,199,240,0,0,127,11,253,0,255,211,252,0,0,127,3,208,7,255,225,254,0,0,127,0,0,63,251,224,191,64,0,127,0,2,255,139,224,63,208,0,127,0,47,253,11,224,31,244,0,127,6,255,224,15,208,11,253,0,127,31,255,64,63,192,2,252,0,127,15,244,127,255,128,0,176,0,127,2,0,63,255,0,0,0,0,127,0,0,63,228,0,0,0, + // 0x5145 充 + 69,81,35,36,68,38,2,252,0,0,0,2,164,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,21,85,85,87,253,85,85,85,64,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,0,0,7,248,0,1,0,0,0,0,0,15,240,0,31,128,0,0,0,0,15,224,0,63,224,0,0,0,0,47,192,0,15,252,0,0,0,0,63,128,0,3,255,0,0,0,0,191,0,0,0,255,192,0,0,0,255,170,191,255,255,240,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,255,0,15,255,255,255,234,149,80,255,128,14,149,0,0,0,0,0,63,128,0,0,10,160,0,254,0,28,0,0,0,15,240,0,254,0,0,0,0,0,15,224,0,254,0,0,0,0,0,15,224,0,254,0,0,0,0,0,31,208,0,254,0,0,0,0,0,47,192,0,254,0,0,0,0,0,63,192,0,254,0,0,0,0,0,127,128,0,254,0,3,144,0,0,255,64,0,254,0,3,244,0,2,255,0,0,254,0,3,244,0,11,252,0,0,254,0,3,244,0,127,244,0,0,254,0,3,240,7,255,224,0,0,255,0,11,240,191,255,64,0,0,255,255,255,224,191,248,0,0,0,127,255,255,208,63,128,0,0,0,47,255,255,128,20,0,0,0,0,0,85,80,0, + // 0x5148 先 + 72,81,34,37,77,38,2,251,0,0,0,2,248,0,0,0,0,0,3,160,3,252,0,0,0,0,0,7,244,3,252,0,0,0,0,0,11,240,3,252,0,0,0,0,0,15,240,3,252,0,0,0,0,0,31,208,3,252,0,0,0,0,0,47,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,127,255,255,255,255,255,252,0,0,255,85,87,253,85,85,84,0,1,253,0,3,252,0,0,0,0,3,252,0,3,252,0,0,0,0,11,244,0,3,252,0,0,0,0,11,240,0,3,252,0,0,0,0,1,208,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,21,85,85,87,253,85,85,85,80,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,15,208,0,254,0,0,0,0,0,31,208,0,254,0,0,0,0,0,47,192,0,254,0,0,0,0,0,63,192,0,254,0,0,0,0,0,63,128,0,254,0,0,0,0,0,127,128,0,254,0,0,0,0,0,255,0,0,254,0,1,0,0,1,255,0,0,254,0,3,208,0,3,253,0,0,254,0,3,240,0,15,252,0,0,254,0,7,240,0,63,240,0,0,254,0,7,240,2,255,208,0,0,254,0,15,224,47,255,64,0,0,255,255,255,208,191,252,0,0,0,191,255,255,192,63,224,0,0,0,47,255,255,64,30,0,0,0,0,1,85,80,0,0,0,0,0,0,0,0,0,0, + // 0x5149 光 + 73,81,36,37,77,38,1,251,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,30,0,0,254,0,0,189,0,0,191,0,0,254,0,0,255,0,0,63,128,0,254,0,1,254,0,0,47,208,0,254,0,3,252,0,0,15,240,0,254,0,7,248,0,0,11,244,0,254,0,15,240,0,0,3,248,0,254,0,31,224,0,0,3,252,0,254,0,63,192,0,0,1,253,0,254,0,127,64,0,0,0,253,0,254,0,127,0,0,0,0,80,0,254,0,4,0,0,0,0,0,0,254,0,0,0,0,21,85,85,85,255,85,85,85,84,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,3,248,0,63,64,0,0,0,0,7,244,0,63,64,0,0,0,0,7,244,0,63,64,0,0,0,0,11,240,0,63,64,0,0,0,0,11,240,0,63,64,0,0,0,0,15,240,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,47,208,0,63,64,0,0,0,0,63,192,0,63,64,0,64,0,0,191,128,0,63,64,0,248,0,1,255,0,0,63,64,0,253,0,7,254,0,0,63,64,0,253,0,31,252,0,0,63,64,0,252,0,255,240,0,0,63,128,1,252,31,255,192,0,0,63,213,87,252,127,254,0,0,0,63,255,255,248,47,244,0,0,0,31,255,255,240,14,64,0,0,0,7,255,255,128,0,0,0,0,0,0,0,0,0, + // 0x5165 入 + 101,81,35,34,50,38,2,252,0,2,170,170,168,0,0,0,0,0,3,255,255,253,0,0,0,0,0,3,255,255,253,0,0,0,0,0,3,255,255,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,5,255,0,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,31,255,128,0,0,0,0,0,0,47,255,192,0,0,0,0,0,0,63,255,192,0,0,0,0,0,0,127,223,208,0,0,0,0,0,0,191,79,240,0,0,0,0,0,0,255,11,244,0,0,0,0,0,2,254,7,248,0,0,0,0,0,3,253,3,252,0,0,0,0,0,7,252,2,254,0,0,0,0,0,15,244,0,255,64,0,0,0,0,47,240,0,191,192,0,0,0,0,127,192,0,63,224,0,0,0,0,255,128,0,31,244,0,0,0,3,255,0,0,15,253,0,0,0,11,253,0,0,3,255,0,0,0,47,248,0,0,1,255,192,0,0,191,224,0,0,0,127,244,0,3,255,192,0,0,0,47,254,0,31,255,0,0,0,0,11,255,192,255,252,0,0,0,0,1,255,244,255,224,0,0,0,0,0,127,224,47,64,0,0,0,0,0,15,192,8,0,0,0,0,0,0,1,0, + // 0x5168 全 + 104,81,36,35,59,38,1,253,0,0,0,1,255,0,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,15,255,224,0,0,0,0,0,0,47,255,244,0,0,0,0,0,0,191,199,253,0,0,0,0,0,2,255,66,255,64,0,0,0,0,7,254,0,191,208,0,0,0,0,31,248,0,47,244,0,0,0,0,191,224,0,11,254,0,0,0,2,255,128,0,2,255,192,0,0,15,254,0,0,0,191,244,0,0,127,244,0,0,0,31,254,0,2,255,208,0,0,0,3,255,208,31,255,0,0,0,0,0,255,253,127,251,255,255,255,255,255,239,252,47,211,255,255,255,255,255,195,244,14,3,255,255,255,255,255,192,176,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240, + // 0x5171 共 + 113,81,34,36,68,38,2,252,0,0,106,0,0,10,144,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,21,85,191,85,85,95,245,85,64,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,85,85,85,85,85,85,80,0,0,0,0,0,0,0,0,0,0,0,4,0,0,5,0,0,0,0,0,63,144,0,63,128,0,0,0,0,191,208,0,191,240,0,0,0,3,255,64,0,31,253,0,0,0,15,253,0,0,3,255,128,0,0,127,244,0,0,0,255,240,0,2,255,208,0,0,0,47,252,0,31,255,0,0,0,0,7,255,0,127,248,0,0,0,0,1,255,192,31,208,0,0,0,0,0,127,64,6,0,0,0,0,0,0,24,0, + // 0x5173 关 + 115,81,27,36,252,38,5,252,0,0,0,0,0,160,0,0,47,0,0,0,255,0,0,127,64,0,2,254,0,0,63,192,0,3,252,0,0,15,240,0,11,244,0,0,11,244,0,15,224,0,0,3,252,0,47,192,0,0,2,240,0,31,64,0,1,86,149,85,86,85,64,3,255,255,255,255,255,192,3,255,255,255,255,255,192,3,255,255,255,255,255,192,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,31,255,255,255,255,255,248,31,255,255,255,255,255,248,31,255,255,255,255,255,248,5,85,86,255,149,85,80,0,0,2,255,192,0,0,0,0,3,255,208,0,0,0,0,7,255,240,0,0,0,0,15,251,244,0,0,0,0,31,227,252,0,0,0,0,63,193,255,0,0,0,0,255,64,191,192,0,0,7,254,0,63,240,0,0,47,252,0,15,253,0,1,255,240,0,7,255,208,31,255,128,0,1,255,252,127,253,0,0,0,63,252,47,224,0,0,0,7,240,10,0,0,0,0,0,80, + // 0x5177 具 + 119,81,34,34,50,38,2,252,0,31,255,255,255,255,255,128,0,0,31,255,255,255,255,255,128,0,0,31,250,170,170,170,191,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,234,170,170,170,191,128,0,0,31,255,255,255,255,255,128,0,0,31,255,255,255,255,255,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,234,170,170,170,191,128,0,0,31,255,255,255,255,255,128,0,0,31,255,255,255,255,255,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,255,255,255,255,255,128,0,0,31,255,255,255,255,255,128,0,0,31,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,21,85,85,85,85,85,85,85,64,0,0,11,0,0,9,0,0,0,0,0,127,208,0,63,224,0,0,0,11,255,240,0,255,255,64,0,0,191,255,64,0,31,255,244,0,47,255,244,0,0,1,191,255,128,191,255,64,0,0,0,11,255,240,47,228,0,0,0,0,0,191,128,9,0,0,0,0,0,0,9,0, + // 0x5197 冗 + 151,81,35,34,50,38,2,252,21,85,85,85,85,85,85,85,64,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,128,0,0,0,0,0,47,192,63,128,0,0,0,0,0,47,192,63,128,0,0,0,0,0,47,192,63,128,0,0,0,0,0,47,192,63,128,0,0,0,0,0,47,192,63,128,0,0,0,0,0,47,192,63,128,21,85,85,85,64,47,192,0,0,127,255,255,255,208,0,0,0,0,127,255,255,255,208,0,0,0,0,127,255,255,255,208,0,0,0,0,127,64,0,31,208,0,0,0,0,127,64,0,31,208,0,0,0,0,127,64,0,31,208,0,0,0,0,127,64,0,31,208,0,0,0,0,127,64,0,31,208,0,0,0,0,191,0,0,31,208,0,0,0,0,191,0,0,31,208,0,0,0,0,191,0,0,31,208,0,0,0,0,255,0,0,31,208,0,0,0,0,254,0,0,31,208,1,0,0,2,253,0,0,31,208,3,208,0,3,252,0,0,31,208,3,244,0,15,248,0,0,31,208,3,244,0,63,240,0,0,31,208,3,244,1,255,208,0,0,31,208,3,240,11,255,64,0,0,31,224,11,240,191,253,0,0,0,31,255,255,240,255,244,0,0,0,15,255,255,208,63,128,0,0,0,7,255,255,128,40,0,0,0,0,0,85,84,0, + // 0x51b7 冷 + 183,81,36,36,68,38,1,252,0,0,0,0,0,169,0,0,0,0,0,0,0,3,255,64,0,0,2,0,0,0,7,255,192,0,0,15,192,0,0,15,255,224,0,0,47,244,0,0,63,223,248,0,0,31,254,0,0,191,131,254,0,0,3,255,128,1,255,1,255,64,0,0,191,224,7,253,0,127,208,0,0,47,208,31,244,0,47,248,0,0,11,64,127,224,0,11,254,0,0,1,1,255,128,0,2,255,192,0,0,11,255,85,85,85,191,248,0,0,63,250,255,255,255,95,254,0,0,255,226,255,255,255,67,252,0,0,191,66,255,255,255,64,180,0,0,60,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,0,0,3,129,255,255,255,255,255,128,0,7,241,255,255,255,255,255,128,0,15,241,255,255,255,255,255,128,0,47,224,0,15,224,0,63,128,0,63,192,0,15,224,0,63,128,0,191,64,0,15,224,0,63,128,1,255,0,0,15,224,0,63,128,3,253,0,0,15,224,0,63,128,11,252,0,0,15,224,0,63,128,15,244,0,0,15,224,0,63,128,63,224,0,0,15,224,127,255,128,127,192,0,0,15,224,63,255,64,31,64,0,0,15,224,47,254,0,2,0,0,0,15,224,5,64,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,11,224,0,0,0, + // 0x51c6 准 + 198,81,36,36,68,38,1,252,0,0,0,0,36,0,5,0,0,0,0,0,0,191,0,15,224,0,0,0,0,0,255,0,31,208,0,3,192,0,1,253,0,47,192,0,15,244,0,2,252,0,63,128,0,15,254,0,3,248,0,127,0,0,2,255,192,11,240,0,191,0,0,0,127,240,15,240,0,254,0,0,0,31,240,47,255,255,255,255,248,0,3,208,127,255,255,255,255,248,0,0,64,255,255,255,255,255,248,0,0,2,255,192,2,248,0,0,0,0,11,255,192,2,248,0,0,0,0,31,255,192,2,248,0,0,0,0,127,239,192,2,248,0,0,0,0,63,143,255,255,255,255,224,0,0,15,15,255,255,255,255,224,0,0,0,15,255,255,255,255,224,0,0,0,15,208,3,248,0,0,0,1,0,15,192,2,248,0,0,0,3,128,15,192,2,248,0,0,0,15,224,15,192,2,248,0,0,0,31,240,15,192,2,248,0,0,0,63,192,15,255,255,255,255,224,0,191,128,15,255,255,255,255,224,0,255,0,15,255,255,255,255,224,3,253,0,15,208,3,248,0,0,7,252,0,15,192,2,248,0,0,15,240,0,15,192,2,248,0,0,63,224,0,15,192,2,248,0,0,127,192,0,15,213,87,253,85,84,31,64,0,15,255,255,255,255,253,6,0,0,15,255,255,255,255,253,0,0,0,15,255,255,255,255,253,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0, + // 0x51fa 出 + 250,81,30,36,32,38,4,252,0,0,0,42,64,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,255,255,255,255,255,255,64,31,255,255,255,255,255,255,64,31,255,255,255,255,255,255,64,5,85,85,127,213,85,85,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,255,255,255,255,255,255,240,191,255,255,255,255,255,255,240,191,255,255,255,255,255,255,240,191,85,85,85,85,85,95,240,191,0,0,0,0,0,11,240,190,0,0,0,0,0,11,224, + // 0x51fb 击 + 251,81,34,36,68,38,2,252,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,3,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,252,0,1,85,85,87,253,85,85,84,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,85,85,85,87,253,85,85,85,80,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,1,168,0,2,252,0,3,244,0,1,253,0,2,252,0,3,244,0,1,253,0,2,252,0,3,244,0,1,253,0,2,252,0,3,244,0,1,253,0,2,252,0,3,244,0,1,253,0,2,252,0,3,244,0,1,253,0,2,252,0,3,244,0,1,253,0,2,252,0,3,244,0,1,253,0,2,252,0,3,244,0,1,254,85,87,253,85,91,244,0,1,255,255,255,255,255,255,244,0,1,255,255,255,255,255,255,244,0,1,255,255,255,255,255,255,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0, + // 0x5206 分 + 6,82,36,35,59,38,1,252,0,0,3,224,0,7,192,0,0,0,0,11,248,0,31,224,0,0,0,0,15,240,0,15,244,0,0,0,0,47,224,0,7,252,0,0,0,0,63,192,0,3,254,0,0,0,0,255,128,0,0,255,64,0,0,2,255,0,0,0,191,192,0,0,3,253,0,0,0,63,240,0,0,15,252,0,0,0,15,248,0,0,63,240,0,0,0,7,254,0,0,255,208,0,0,0,3,255,128,2,255,128,0,0,0,0,255,224,15,254,0,0,0,0,0,63,248,63,254,85,85,85,85,85,111,254,191,235,255,255,255,255,255,247,252,47,139,255,255,255,255,255,241,240,10,11,255,255,255,255,255,240,80,0,0,0,47,192,0,15,224,0,0,0,0,63,192,0,15,224,0,0,0,0,63,192,0,15,224,0,0,0,0,127,128,0,15,224,0,0,0,0,127,64,0,15,224,0,0,0,0,255,0,0,15,208,0,0,0,0,255,0,0,31,208,0,0,0,3,253,0,0,31,208,0,0,0,7,252,0,0,31,192,0,0,0,15,244,0,0,47,192,0,0,0,63,240,0,0,47,192,0,0,0,255,192,0,0,63,192,0,0,11,255,64,0,0,63,128,0,0,127,253,0,0,0,191,64,0,11,255,244,0,31,255,255,0,0,7,255,128,0,15,255,254,0,0,2,253,0,0,11,255,248,0,0,0,128,0,0,1,85,64,0,0, + // 0x5207 切 + 7,82,35,36,68,38,1,251,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,15,255,255,255,255,248,0,127,0,15,255,255,255,255,248,0,127,0,15,255,255,255,255,248,0,127,0,5,85,191,85,87,248,0,127,0,0,0,191,0,3,248,0,127,0,0,0,191,0,3,248,0,127,1,191,0,191,0,3,248,0,127,191,255,64,191,0,3,248,6,255,255,255,128,254,0,3,248,191,255,255,233,0,254,0,3,244,191,255,228,0,0,254,0,3,244,127,255,0,0,0,254,0,3,244,16,127,0,0,0,254,0,3,244,0,127,0,0,0,253,0,7,244,0,127,0,0,0,253,0,7,244,0,127,0,0,1,252,0,7,244,0,127,0,0,2,252,0,7,240,0,127,0,52,3,252,0,7,240,0,127,0,63,3,248,0,7,240,0,127,0,63,7,244,0,11,240,0,127,0,127,11,240,0,11,240,0,127,0,190,15,240,0,11,240,0,127,255,253,31,208,0,15,240,0,63,255,252,63,192,0,15,240,0,31,255,244,127,128,0,15,224,0,1,85,64,255,0,0,15,224,0,0,0,3,254,0,0,31,208,0,0,0,15,252,0,0,47,208,0,0,0,63,244,0,0,127,192,0,0,1,255,208,3,255,255,192,0,0,3,255,128,2,255,255,64,0,0,0,253,0,1,255,253,0,0,0,0,48,0,0,106,80,0,0,0,0,0,0,0,0,0,0, + // 0x521b 创 + 27,82,34,36,68,38,1,252,0,0,6,64,0,0,0,0,0,0,0,15,240,0,0,0,15,224,0,0,31,208,0,0,0,15,224,0,0,63,240,0,0,0,15,224,0,0,191,252,0,1,80,15,224,0,1,255,254,0,3,244,15,224,0,3,252,191,128,3,244,15,224,0,11,244,63,224,3,244,15,224,0,47,224,15,244,3,244,15,224,0,127,192,3,252,3,244,15,224,1,255,64,1,255,3,244,15,224,7,253,0,0,191,195,244,15,224,47,244,0,0,63,211,244,15,224,191,224,0,0,15,195,244,15,224,63,255,255,255,255,3,244,15,224,13,191,255,255,248,3,244,15,224,0,191,255,255,244,3,244,15,224,0,191,0,3,244,3,244,15,224,0,191,0,3,244,3,244,15,224,0,191,0,3,244,3,244,15,224,0,191,0,3,240,3,244,15,224,0,191,0,7,240,3,244,15,224,0,191,0,11,240,3,244,15,224,0,191,0,15,240,3,244,15,224,0,191,15,255,224,3,244,15,224,0,191,7,255,192,3,244,15,224,0,191,3,254,0,0,0,15,224,0,191,0,0,13,0,0,15,224,0,191,0,0,15,192,0,15,224,0,191,0,0,15,192,0,15,224,0,191,0,0,31,192,0,15,224,0,191,0,0,63,128,0,15,224,0,127,255,255,255,64,85,95,224,0,63,255,255,255,0,255,255,208,0,11,255,255,248,0,191,255,192,0,0,0,0,0,0,127,249,0, + // 0x521d 初 + 29,82,35,36,68,38,1,252,0,11,224,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,1,85,85,85,85,80,0,11,240,3,255,255,255,255,248,0,11,240,3,255,255,255,255,248,0,11,240,3,255,255,255,255,248,63,255,255,240,0,127,64,3,248,63,255,255,248,0,127,64,3,248,63,255,255,244,0,127,0,3,248,0,0,15,240,0,127,0,3,248,0,0,15,208,0,127,0,3,248,0,0,63,192,0,191,0,3,248,0,0,127,64,0,191,0,3,244,0,0,255,0,0,191,0,3,244,0,2,253,29,0,191,0,3,244,0,7,248,63,0,254,0,3,244,0,15,244,254,0,254,0,7,244,0,63,254,248,0,253,0,7,244,0,255,255,224,1,253,0,7,244,3,255,255,208,2,252,0,7,240,15,255,251,240,2,252,0,7,240,127,255,243,252,3,248,0,7,240,191,203,240,253,7,244,0,11,240,63,11,240,120,11,240,0,11,240,44,11,240,16,15,240,0,11,240,0,11,240,0,47,208,0,15,240,0,11,240,0,63,192,0,15,240,0,11,240,0,191,64,0,15,224,0,11,240,1,255,0,0,15,224,0,11,240,7,253,0,0,31,208,0,11,240,31,248,0,0,63,192,0,11,240,127,240,3,255,255,192,0,11,240,191,192,2,255,255,64,0,11,240,47,0,1,255,254,0,0,11,224,8,0,0,106,80,0, + // 0x522b 别 + 43,82,34,36,68,38,1,251,0,0,0,0,0,0,0,15,224,11,255,255,255,240,0,0,15,224,11,255,255,255,240,0,0,15,224,11,255,255,255,240,1,64,15,224,11,224,0,11,240,11,224,15,224,11,224,0,11,240,11,224,15,224,11,224,0,11,240,11,224,15,224,11,224,0,11,240,11,224,15,224,11,224,0,11,240,11,224,15,224,11,224,0,11,240,11,224,15,224,11,240,0,11,240,11,224,15,224,11,255,255,255,240,11,224,15,224,11,255,255,255,240,11,224,15,224,11,255,255,255,240,11,224,15,224,0,0,0,0,0,11,224,15,224,0,1,252,0,0,11,224,15,224,0,2,252,0,0,11,224,15,224,0,2,252,0,0,11,224,15,224,47,255,255,255,248,11,224,15,224,47,255,255,255,244,11,224,15,224,47,255,255,255,244,11,224,15,224,0,3,244,3,244,11,224,15,224,0,3,240,3,244,11,224,15,224,0,7,240,3,244,11,224,15,224,0,11,240,3,240,11,224,15,224,0,15,224,7,240,1,64,15,224,0,31,192,7,240,0,0,15,224,0,63,192,7,240,0,0,15,224,0,127,64,11,240,0,0,15,224,0,255,0,15,240,0,0,15,224,3,253,0,31,224,0,0,15,224,31,248,47,255,208,0,106,175,224,127,240,15,255,192,0,127,255,208,63,128,15,255,0,0,63,255,192,13,0,0,0,0,0,63,249,0,0,0,0,0,0,0,0,0,0, + // 0x5230 到 + 48,82,34,35,59,38,1,252,0,0,0,0,0,0,0,6,160,0,0,0,0,0,0,0,11,240,63,255,255,255,255,0,0,11,240,63,255,255,255,255,0,0,11,240,63,255,255,255,255,31,192,11,240,0,11,244,0,0,31,192,11,240,0,15,240,1,0,31,192,11,240,0,15,208,47,0,31,192,11,240,0,47,192,47,192,31,192,11,240,0,63,128,15,240,31,192,11,240,0,127,0,3,248,31,192,11,240,21,255,175,255,253,31,192,11,240,63,255,255,255,255,31,192,11,240,63,255,255,255,255,95,192,11,240,63,250,165,64,47,223,192,11,240,0,0,42,0,14,31,192,11,240,0,0,63,64,0,31,192,11,240,0,0,63,64,0,31,192,11,240,0,0,63,64,0,31,192,11,240,0,0,63,64,0,31,192,11,240,15,255,255,255,252,31,192,11,240,15,255,255,255,252,31,192,11,240,15,255,255,255,252,31,192,11,240,0,0,127,64,0,31,192,11,240,0,0,63,64,0,31,192,11,240,0,0,63,64,0,5,64,11,240,0,0,63,64,0,0,0,11,240,0,0,63,64,0,0,0,11,240,0,0,63,70,191,64,0,11,240,0,5,191,255,255,64,0,11,240,111,255,255,255,255,64,0,11,240,127,255,255,255,233,0,106,175,240,63,255,250,80,0,0,127,255,224,62,148,0,0,0,0,63,255,192,0,0,0,0,0,0,63,250,0, + // 0x5236 制 + 54,82,34,36,68,38,1,252,0,0,10,128,0,0,0,1,80,0,228,31,192,0,0,0,3,240,1,252,31,192,0,0,0,3,240,2,252,31,192,0,0,0,3,240,3,248,31,192,0,0,253,3,240,3,248,31,192,0,0,253,3,240,7,255,255,255,255,64,253,3,240,11,255,255,255,255,64,253,3,240,15,255,255,255,255,64,253,3,240,47,192,31,192,0,0,253,3,240,63,128,31,192,0,0,253,3,240,127,0,31,192,0,0,253,3,240,11,0,31,208,0,0,253,3,240,63,255,255,255,255,240,253,3,240,63,255,255,255,255,240,253,3,240,63,255,255,255,255,240,253,3,240,0,0,31,192,0,0,253,3,240,0,0,31,192,0,0,253,3,240,0,0,31,192,0,0,253,3,240,11,255,255,255,255,128,253,3,240,11,255,255,255,255,128,253,3,240,11,255,255,255,255,128,253,3,240,11,224,31,192,47,128,253,3,240,11,224,31,192,47,128,253,3,240,11,224,31,192,47,128,253,3,240,11,224,31,192,47,128,0,3,240,11,224,31,192,47,128,0,3,240,11,224,31,192,47,128,0,3,240,11,224,31,192,47,128,0,3,240,11,224,31,192,47,128,0,3,240,11,224,31,203,255,128,0,3,240,11,224,31,199,255,64,0,7,240,11,224,31,195,249,0,47,255,240,0,0,31,192,0,0,15,255,240,0,0,31,192,0,0,15,255,192,0,0,31,192,0,0,6,148,0, + // 0x5237 刷 + 55,82,34,36,68,38,1,252,0,0,0,0,0,0,0,1,80,0,0,0,0,0,0,0,7,240,3,255,255,255,255,192,0,7,240,3,255,255,255,255,192,0,7,240,3,255,255,255,255,195,244,7,240,3,240,0,0,47,195,244,7,240,3,240,0,0,47,195,244,7,240,3,240,0,0,47,195,244,7,240,3,240,0,0,47,195,244,7,240,3,240,0,0,47,195,244,7,240,3,255,255,255,255,195,244,7,240,3,255,255,255,255,195,244,7,240,3,255,255,255,255,195,244,7,240,3,240,0,252,0,3,244,7,240,3,240,0,252,0,3,244,7,240,3,240,0,252,0,3,244,7,240,3,240,0,252,0,3,244,7,240,3,251,255,255,255,195,244,7,240,3,251,255,255,255,195,244,7,240,3,251,255,255,255,195,244,7,240,3,251,192,252,15,195,244,7,240,7,251,192,252,15,195,244,7,240,7,235,192,252,15,195,244,7,240,7,235,192,252,15,195,244,7,240,11,235,192,252,15,195,244,7,240,11,219,192,252,15,194,244,7,240,15,219,192,252,15,192,0,7,240,15,203,192,252,15,192,0,7,240,31,203,192,253,255,192,0,7,240,47,139,192,252,255,128,0,7,240,63,75,192,252,254,0,0,7,240,127,1,64,252,0,0,0,7,240,190,0,0,252,0,0,63,255,240,61,0,0,252,0,0,31,255,224,8,0,0,252,0,0,15,255,192,0,0,0,168,0,0,10,148,0, + // 0x5272 割 + 114,82,33,36,68,38,2,252,0,0,169,0,0,0,0,0,0,0,0,254,0,0,0,0,31,192,0,0,254,0,0,0,0,31,192,0,0,254,0,0,0,0,31,192,255,255,255,255,255,10,128,31,192,255,255,255,255,255,15,192,31,192,255,255,255,255,255,15,192,31,192,252,0,20,0,127,15,192,31,192,252,0,254,0,127,15,192,31,192,252,0,254,0,127,15,192,31,192,15,255,255,255,240,15,192,31,192,15,255,255,255,240,15,192,31,192,10,170,255,170,144,15,192,31,192,0,0,254,0,0,15,192,31,192,5,85,254,85,64,15,192,31,192,11,255,255,255,208,15,192,31,192,11,255,255,255,208,15,192,31,192,0,0,254,0,0,15,192,31,192,0,0,254,0,0,15,192,31,192,170,170,255,170,169,15,192,31,192,255,255,255,255,253,15,192,31,192,255,255,255,255,253,15,192,31,192,0,0,0,0,0,15,192,31,192,0,0,0,0,0,15,192,31,192,11,255,255,255,240,15,192,31,192,11,255,255,255,240,10,128,31,192,11,250,170,175,240,0,0,31,192,11,208,0,11,240,0,0,31,192,11,208,0,11,240,0,0,31,192,11,208,0,11,240,0,0,31,192,11,208,0,11,240,0,0,31,192,11,250,170,175,240,0,0,47,192,11,255,255,255,240,0,255,255,192,11,255,255,255,240,0,255,255,128,11,208,0,11,240,0,191,255,0,11,208,0,1,80,0,42,144,0, + // 0x529b 力 + 155,82,33,37,77,38,2,251,0,0,0,47,128,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,26,170,170,191,234,170,170,170,64,63,255,255,255,255,255,255,255,64,63,255,255,255,255,255,255,255,64,63,255,255,255,255,255,255,255,64,0,0,0,63,128,0,0,127,0,0,0,0,63,128,0,0,127,0,0,0,0,127,64,0,0,191,0,0,0,0,191,64,0,0,191,0,0,0,0,191,0,0,0,191,0,0,0,0,255,0,0,0,191,0,0,0,0,254,0,0,0,255,0,0,0,2,253,0,0,0,255,0,0,0,3,252,0,0,0,254,0,0,0,7,252,0,0,0,254,0,0,0,15,244,0,0,0,254,0,0,0,31,240,0,0,0,253,0,0,0,63,224,0,0,1,253,0,0,0,191,192,0,0,1,253,0,0,1,255,64,0,0,2,252,0,0,3,255,0,0,0,3,252,0,0,15,252,0,0,0,3,252,0,0,63,244,0,0,0,3,248,0,1,255,224,0,0,0,11,244,0,11,255,128,0,0,0,31,240,0,63,253,0,0,7,255,255,240,0,191,244,0,0,3,255,255,192,0,47,192,0,0,2,255,255,64,0,10,0,0,0,0,90,80,0,0,0,0,0,0,0,0,0,0,0, + // 0x529f 功 + 159,82,35,35,59,38,1,252,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,21,85,85,84,0,63,192,0,0,63,255,255,252,0,63,128,0,0,63,255,255,252,0,63,128,0,0,63,255,255,252,0,63,128,0,0,0,15,224,1,85,127,213,85,80,0,15,224,2,255,255,255,255,248,0,15,224,2,255,255,255,255,248,0,15,224,2,255,255,255,255,248,0,15,224,0,0,63,64,3,244,0,15,224,0,0,63,64,3,244,0,15,224,0,0,127,0,3,244,0,15,224,0,0,127,0,3,244,0,15,224,0,0,191,0,3,244,0,15,224,0,0,191,0,3,244,0,15,224,0,0,255,0,7,240,0,15,224,0,0,254,0,7,240,0,15,224,0,0,253,0,7,240,0,15,224,5,1,252,0,7,240,0,15,230,254,3,252,0,7,240,0,15,255,254,3,248,0,11,240,1,191,255,254,11,244,0,11,240,127,255,255,144,15,240,0,11,240,127,255,228,0,47,224,0,15,224,63,244,0,0,63,192,0,15,224,41,0,0,0,255,128,0,15,224,0,0,0,3,255,0,0,31,208,0,0,0,15,252,0,0,47,192,0,0,0,63,244,0,0,127,192,0,0,2,255,208,7,255,255,128,0,0,2,255,64,3,255,255,0,0,0,0,189,0,2,255,252,0,0,0,0,32,0,0,85,64,0, + // 0x52a0 加 + 160,82,34,36,68,38,1,252,0,1,64,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,21,85,85,80,0,15,224,0,0,127,255,255,224,0,15,224,0,0,127,255,255,224,21,95,245,85,80,127,255,255,224,63,255,255,255,240,127,0,15,224,63,255,255,255,240,127,0,15,224,63,255,255,255,240,127,0,15,224,0,15,208,11,240,127,0,15,224,0,15,208,11,224,127,0,15,224,0,15,208,11,224,127,0,15,224,0,15,192,11,224,127,0,15,224,0,31,192,11,224,127,0,15,224,0,31,192,15,224,127,0,15,224,0,31,192,15,224,127,0,15,224,0,47,192,15,224,127,0,15,224,0,47,192,15,224,127,0,15,224,0,63,128,15,224,127,0,15,224,0,63,64,15,208,127,0,15,224,0,63,64,15,208,127,0,15,224,0,127,0,15,208,127,0,15,224,0,191,0,15,208,127,0,15,224,0,255,0,15,208,127,0,15,224,1,253,0,15,208,127,0,15,224,2,252,0,31,192,127,0,15,224,3,252,0,31,192,127,0,15,224,7,244,0,47,192,127,255,255,224,15,240,0,63,192,127,255,255,224,47,224,85,191,128,127,255,255,224,127,192,191,255,64,127,85,95,224,127,128,127,255,0,127,0,15,224,31,0,63,248,0,127,0,15,224,4,0,0,0,0,0,0,0,0, + // 0x52a8 动 + 168,82,34,36,68,38,2,252,0,0,0,0,0,5,64,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,47,255,255,255,0,15,224,0,0,47,255,255,255,0,15,224,0,0,47,255,255,255,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,63,255,255,255,240,0,0,0,0,63,255,255,255,240,0,0,0,0,63,255,255,255,240,255,255,255,255,149,95,229,95,224,255,255,255,255,128,15,208,15,224,255,255,255,255,128,15,192,15,224,0,63,128,0,0,31,192,15,224,0,63,64,0,0,31,192,15,224,0,127,0,0,0,31,192,15,224,0,191,0,96,0,47,192,15,224,0,254,3,244,0,63,128,15,208,0,253,1,252,0,63,128,15,208,2,252,0,252,0,63,64,15,208,3,248,0,190,0,127,0,15,208,3,244,0,127,0,191,0,15,208,7,240,0,127,64,254,0,15,192,15,224,107,255,128,254,0,31,192,31,239,255,255,194,252,0,31,192,63,255,255,255,195,252,0,47,192,127,255,249,15,215,248,0,47,192,63,249,0,11,79,240,0,63,192,46,64,0,0,47,224,0,63,128,0,0,0,0,127,192,0,191,64,0,0,0,0,255,67,255,255,0,0,0,0,1,255,3,255,254,0,0,0,0,0,124,2,255,248,0,0,0,0,0,16,0,85,64,0, + // 0x5316 化 + 22,83,36,35,59,38,1,252,0,0,15,144,47,192,0,0,0,0,0,31,224,47,192,0,0,0,0,0,63,192,47,192,0,0,0,0,0,127,128,47,192,0,0,0,0,0,255,64,47,192,0,0,0,0,1,255,0,47,192,0,0,0,0,3,252,0,47,192,0,0,0,0,11,248,0,47,192,0,11,64,0,31,240,0,47,192,0,63,192,0,63,240,0,47,192,1,255,224,0,255,240,0,47,192,11,255,128,2,255,240,0,47,192,127,253,0,11,255,240,0,47,194,255,240,0,47,255,240,0,47,223,255,64,0,191,251,240,0,47,255,248,0,0,255,203,240,0,47,255,128,0,0,127,75,240,0,47,253,0,0,0,61,11,240,0,47,208,0,0,0,20,11,240,0,47,192,0,0,0,0,11,240,0,47,192,0,0,0,0,11,240,0,47,192,0,0,0,0,11,240,0,47,192,0,0,0,0,11,240,0,47,192,0,0,0,0,11,240,0,47,192,0,0,0,0,11,240,0,47,192,0,0,80,0,11,240,0,47,192,0,0,189,0,11,240,0,47,192,0,0,254,0,11,240,0,47,192,0,0,254,0,11,240,0,47,192,0,0,253,0,11,240,0,47,192,0,1,252,0,11,240,0,47,208,0,3,252,0,11,240,0,31,255,255,255,248,0,11,240,0,15,255,255,255,240,0,11,240,0,2,255,255,255,208,0,11,224,0,0,5,85,84,0, + // 0x5347 升 + 71,83,34,36,68,38,2,252,0,0,0,0,64,0,0,0,0,0,0,0,7,208,7,240,0,0,0,0,0,127,244,7,240,0,0,0,0,27,255,248,7,240,0,0,0,2,255,255,208,7,240,0,0,1,191,255,248,0,7,240,0,0,127,255,255,64,0,7,240,0,0,63,255,255,0,0,7,240,0,0,63,144,191,0,0,7,240,0,0,0,0,191,0,0,7,240,0,0,0,0,191,0,0,7,240,0,0,0,0,191,0,0,7,240,0,0,0,0,191,0,0,7,240,0,0,0,0,191,0,0,7,240,0,0,0,0,191,0,0,7,240,0,0,85,85,255,85,85,91,245,85,80,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,254,0,0,7,240,0,0,0,0,254,0,0,7,240,0,0,0,0,253,0,0,7,240,0,0,0,1,253,0,0,7,240,0,0,0,1,252,0,0,7,240,0,0,0,3,252,0,0,7,240,0,0,0,3,248,0,0,7,240,0,0,0,11,244,0,0,7,240,0,0,0,31,240,0,0,7,240,0,0,0,63,224,0,0,7,240,0,0,0,191,192,0,0,7,240,0,0,2,255,64,0,0,7,240,0,0,15,253,0,0,0,7,240,0,0,127,248,0,0,0,7,240,0,0,255,224,0,0,0,7,240,0,0,63,64,0,0,0,7,240,0,0,8,0,0,0,0,7,240,0,0, + // 0x534a 半 + 74,83,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,24,0,3,248,0,3,144,0,1,253,0,3,248,0,11,248,0,0,255,0,3,248,0,15,240,0,0,127,128,3,248,0,47,224,0,0,63,192,3,248,0,63,192,0,0,31,224,3,248,0,127,128,0,0,15,240,3,248,0,255,0,0,0,7,248,3,248,2,253,0,0,0,3,248,3,248,3,252,0,0,0,2,128,3,248,0,112,0,0,0,0,0,3,248,0,0,0,0,5,85,85,87,253,85,85,85,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,106,170,170,171,254,170,170,170,144,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0, + // 0x534f 协 + 79,83,35,36,68,38,2,252,0,252,0,0,5,80,0,0,0,0,252,0,0,11,240,0,0,0,0,252,0,0,11,240,0,0,0,0,252,0,0,11,240,0,0,0,0,252,0,0,11,240,0,0,0,0,252,0,0,11,240,0,0,0,0,252,0,0,11,240,0,0,0,0,252,0,85,91,245,85,80,0,0,252,0,255,255,255,255,224,0,255,255,252,255,255,255,255,224,0,255,255,252,255,255,255,255,224,0,255,255,252,0,11,224,15,224,0,85,253,84,0,11,224,15,224,0,0,252,0,0,15,224,15,224,0,0,252,0,164,15,208,15,230,64,0,252,0,253,15,208,15,255,128,0,252,1,252,15,208,15,239,192,0,252,2,248,31,192,15,223,192,0,252,3,244,47,192,15,223,208,0,252,3,240,47,192,15,219,224,0,252,11,240,63,128,15,215,240,0,252,15,208,127,64,15,211,240,0,252,47,192,191,0,15,195,244,0,252,63,128,254,0,15,194,248,0,252,15,2,253,0,31,193,252,0,252,0,3,252,0,31,193,228,0,252,0,11,244,0,31,192,0,0,252,0,15,240,0,31,192,0,0,252,0,63,208,0,47,192,0,0,252,0,191,192,0,63,128,0,0,252,1,255,0,0,63,128,0,0,252,7,253,0,0,191,64,0,0,252,47,248,3,255,255,0,0,0,252,63,224,3,255,254,0,0,0,252,15,128,2,255,248,0,0,0,168,2,0,0,20,0,0,0, + // 0x5355 单 + 85,83,34,36,68,38,2,252,0,0,32,0,0,0,80,0,0,0,2,248,0,0,0,254,0,0,0,3,253,0,0,2,255,0,0,0,0,255,0,0,3,252,0,0,0,0,127,192,0,11,248,0,0,0,0,47,208,0,15,240,0,0,0,0,15,192,0,63,192,0,0,1,255,255,255,255,255,255,252,0,1,255,255,255,255,255,255,252,0,1,255,255,255,255,255,255,252,0,1,252,0,3,248,0,3,252,0,1,252,0,3,248,0,3,252,0,1,252,0,3,248,0,3,252,0,1,255,255,255,255,255,255,252,0,1,255,255,255,255,255,255,252,0,1,255,255,255,255,255,255,252,0,1,252,0,3,248,0,3,252,0,1,252,0,3,248,0,3,252,0,1,252,0,3,248,0,3,252,0,1,252,0,3,248,0,3,252,0,1,255,255,255,255,255,255,252,0,1,255,255,255,255,255,255,252,0,1,255,255,255,255,255,255,248,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,21,85,85,87,253,85,85,85,64,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0, + // 0x5361 卡 + 97,83,34,36,68,38,2,252,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,245,85,85,80,0,0,0,0,11,255,255,255,240,0,0,0,0,11,255,255,255,240,0,0,0,0,11,255,255,255,240,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,85,95,249,85,85,85,80,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,246,64,0,0,0,0,0,0,11,255,249,0,0,0,0,0,0,11,255,255,224,0,0,0,0,0,11,251,255,255,64,0,0,0,0,11,240,111,255,248,0,0,0,0,11,240,1,255,252,0,0,0,0,11,240,0,11,248,0,0,0,0,11,240,0,0,176,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0, + // 0x5370 印 + 112,83,31,36,32,38,4,252,0,0,6,0,0,0,0,0,0,0,127,128,0,0,0,0,0,7,255,224,0,0,0,0,0,191,255,145,255,255,255,252,255,255,248,1,255,255,255,252,255,255,64,1,255,255,255,252,255,208,0,1,254,85,87,252,254,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,254,85,85,65,253,0,2,252,255,255,255,209,253,0,2,252,255,255,255,209,253,0,2,252,255,255,255,209,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,254,85,85,65,253,0,2,252,255,255,255,225,253,10,171,252,255,255,255,225,253,7,255,248,255,255,255,225,253,3,255,244,253,0,0,1,253,2,255,128,253,0,0,1,253,0,0,0,253,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,168,0,0,0, + // 0x5371 危 + 113,83,36,36,68,38,1,252,0,0,6,80,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,63,255,255,255,0,0,0,0,0,255,255,255,255,208,0,0,0,2,255,255,255,255,192,0,0,0,7,253,0,0,255,64,0,0,0,15,244,0,2,254,0,0,0,0,63,224,0,3,252,0,0,0,0,255,255,255,255,255,255,255,248,7,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,127,255,192,0,0,0,0,0,0,47,239,192,0,0,0,0,0,0,15,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,191,255,255,255,240,0,0,47,192,191,255,255,255,240,0,0,47,192,191,255,255,255,224,0,0,47,128,190,0,0,15,224,0,0,63,128,190,0,0,15,224,0,0,63,128,190,0,0,15,224,0,0,63,64,190,0,0,15,208,0,0,63,64,190,0,0,31,208,0,0,127,0,190,0,0,47,192,0,0,191,0,190,0,127,255,192,0,0,255,0,190,0,63,255,64,0,0,253,0,190,0,63,249,0,208,2,252,0,190,0,0,0,0,253,3,252,0,190,0,0,0,0,252,11,244,0,190,0,0,0,1,252,15,240,0,191,64,0,0,7,252,63,208,0,127,255,255,255,255,244,127,192,0,63,255,255,255,255,240,31,0,0,11,255,255,255,255,128,4,0,0,0,0,0,0,0,0, + // 0x5374 却 + 116,83,34,36,68,38,1,252,0,0,190,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,21,85,85,80,0,0,191,0,0,127,255,255,240,0,0,191,0,0,127,255,255,240,0,0,191,0,0,127,255,255,240,15,255,255,255,240,127,0,11,240,15,255,255,255,240,127,0,11,240,15,255,255,255,240,127,0,11,240,0,0,191,0,0,127,0,11,240,0,0,191,0,0,127,0,11,240,0,0,191,0,0,127,0,11,240,0,0,191,0,0,127,0,11,240,0,0,191,0,0,127,0,11,240,0,0,191,0,0,127,0,11,240,127,255,255,255,252,127,0,11,240,127,255,255,255,252,127,0,11,240,127,255,255,255,252,127,0,11,240,21,95,245,85,84,127,0,11,240,0,15,240,0,0,127,0,11,240,0,15,224,0,0,127,0,11,240,0,31,208,0,0,127,0,11,240,0,63,192,124,0,127,0,11,240,0,63,128,254,0,127,0,11,240,0,127,0,127,0,127,0,11,240,0,191,0,63,128,127,0,11,240,0,253,0,31,208,127,15,255,224,1,252,0,31,240,127,7,255,224,3,254,255,255,240,127,3,255,128,127,255,255,255,248,127,2,164,0,127,255,255,255,252,127,0,0,0,63,254,148,0,253,127,0,0,0,16,0,0,0,253,127,0,0,0,0,0,0,0,80,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0, + // 0x5378 卸 + 120,83,34,36,68,38,1,252,0,30,64,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,64,0,0,21,85,85,80,0,191,0,0,0,127,255,255,240,0,255,255,255,248,127,255,255,240,1,255,255,255,248,127,255,255,240,3,255,255,255,248,127,0,7,240,11,240,63,64,0,127,0,7,240,31,224,63,64,0,127,0,7,240,63,192,63,64,0,127,0,7,240,15,64,63,64,0,127,0,7,240,1,0,63,64,0,127,0,7,240,63,255,255,255,253,127,0,7,240,63,255,255,255,253,127,0,7,240,63,255,255,255,253,127,0,7,240,0,0,63,64,0,127,0,7,240,0,0,63,64,0,127,0,7,240,0,0,63,64,0,127,0,7,240,3,240,63,64,0,127,0,7,240,3,240,63,64,0,127,0,7,240,3,240,63,255,240,127,0,7,240,3,240,63,255,240,127,0,7,240,3,240,63,255,240,127,0,7,240,3,240,63,64,0,127,0,7,240,3,240,63,64,0,127,0,7,240,3,240,63,64,0,127,0,7,240,3,240,63,64,0,127,6,175,240,3,240,63,64,4,127,7,255,240,3,240,63,171,253,127,3,255,208,3,246,255,255,253,127,2,254,64,111,255,255,255,253,127,0,0,0,191,255,255,249,64,127,0,0,0,127,255,164,0,0,127,0,0,0,58,64,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0, + // 0x538b 压 + 139,83,36,34,50,38,1,252,2,255,255,255,255,255,255,255,253,2,255,255,255,255,255,255,255,253,2,255,255,255,255,255,255,255,253,2,253,85,85,85,85,85,85,84,2,248,0,0,0,0,0,0,0,2,248,0,0,3,244,0,0,0,2,248,0,0,3,244,0,0,0,2,248,0,0,3,244,0,0,0,2,248,0,0,3,244,0,0,0,2,248,0,0,3,244,0,0,0,2,248,0,0,3,244,0,0,0,2,248,0,0,3,244,0,0,0,2,248,0,0,3,244,0,0,0,2,248,63,255,255,255,255,255,208,2,248,63,255,255,255,255,255,208,2,248,63,255,255,255,255,255,208,2,248,21,85,87,249,85,85,64,2,248,0,0,3,244,0,0,0,3,244,0,0,3,244,0,0,0,3,244,0,0,3,244,15,64,0,3,244,0,0,3,244,63,208,0,3,240,0,0,3,244,15,244,0,3,240,0,0,3,244,3,253,0,7,240,0,0,3,244,0,255,0,11,240,0,0,3,244,0,127,64,11,224,0,0,3,244,0,45,0,15,208,0,0,3,244,0,0,0,15,208,0,0,3,244,0,0,0,31,192,0,0,3,244,0,0,0,63,199,255,255,255,255,255,255,252,63,135,255,255,255,255,255,255,252,191,7,255,255,255,255,255,255,252,47,1,85,85,85,85,85,85,84,5,0,0,0,0,0,0,0,0, + // 0x539f 原 + 159,83,35,34,50,38,1,252,0,255,255,255,255,255,255,255,252,0,255,255,255,255,255,255,255,252,0,255,255,255,255,255,255,255,252,0,253,0,0,11,252,0,0,0,0,253,0,0,11,248,0,0,0,0,253,0,0,11,244,0,0,0,0,253,0,0,15,240,0,0,0,0,253,11,255,255,255,255,255,0,0,253,11,255,255,255,255,255,0,0,253,11,250,170,170,170,255,0,0,253,11,240,0,0,0,255,0,0,253,11,240,0,0,0,255,0,0,253,11,250,170,170,170,255,0,0,253,11,255,255,255,255,255,0,0,253,11,255,255,255,255,255,0,1,252,11,240,0,0,0,255,0,1,252,11,240,0,0,0,255,0,1,252,11,240,0,0,0,255,0,1,252,11,255,255,255,255,255,0,2,252,11,255,255,255,255,255,0,2,252,6,170,171,254,170,170,0,2,248,0,0,2,248,0,0,0,3,248,0,16,2,248,1,64,0,3,244,0,191,2,248,11,208,0,7,244,1,254,2,248,15,244,0,7,240,3,252,2,248,3,253,0,11,240,15,244,2,248,0,255,64,15,224,63,224,2,248,0,63,208,15,208,255,192,2,248,0,31,240,47,199,255,0,2,248,0,7,252,63,203,252,0,3,248,0,2,252,127,65,240,11,255,248,0,0,208,47,0,0,3,255,240,0,0,0,5,0,0,3,255,128,0,0,0, + // 0x53cc 双 + 204,83,34,33,41,38,2,252,127,255,255,248,127,255,255,255,128,127,255,255,252,127,255,255,255,192,127,255,255,252,127,255,255,255,128,21,85,86,252,47,213,85,127,128,0,0,2,252,47,192,0,63,64,0,0,3,248,31,192,0,127,0,0,0,3,248,15,208,0,127,0,6,0,3,244,15,208,0,191,0,47,64,7,240,15,224,0,254,0,63,208,11,240,11,240,0,253,0,31,240,15,240,7,240,1,252,0,7,252,15,224,3,244,3,252,0,2,254,31,208,3,248,3,248,0,0,255,111,192,2,252,7,244,0,0,63,255,192,1,252,15,240,0,0,31,255,64,0,254,31,224,0,0,15,255,0,0,191,47,192,0,0,3,255,0,0,127,127,192,0,0,2,255,0,0,63,255,64,0,0,3,255,128,0,47,255,0,0,0,7,255,208,0,15,253,0,0,0,15,255,240,0,15,252,0,0,0,31,239,248,0,31,252,0,0,0,63,195,252,0,63,254,0,0,0,191,130,254,0,255,255,0,0,1,255,0,254,3,255,191,192,0,3,253,0,184,15,252,63,240,0,15,252,0,16,127,244,15,252,0,63,240,0,2,255,208,7,255,64,255,192,0,31,255,64,1,255,224,255,64,0,15,252,0,0,127,224,61,0,0,7,224,0,0,15,192,20,0,0,2,0,0,0,2,0, + // 0x53cd 反 + 205,83,34,34,50,38,2,252,0,85,85,85,85,85,85,85,0,0,191,255,255,255,255,255,255,64,0,191,255,255,255,255,255,255,64,0,191,255,255,255,255,255,255,64,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,255,255,255,255,255,224,0,0,191,255,255,255,255,255,244,0,0,191,255,255,255,255,255,240,0,0,191,95,245,85,85,111,224,0,0,191,11,240,0,0,63,208,0,0,190,7,248,0,0,127,192,0,0,254,3,252,0,0,255,64,0,0,254,1,254,0,0,255,0,0,0,254,0,255,0,2,254,0,0,0,253,0,127,192,7,252,0,0,1,252,0,63,224,31,244,0,0,1,252,0,15,244,63,224,0,0,2,252,0,11,253,255,192,0,0,3,252,0,3,255,255,64,0,0,3,248,0,0,255,253,0,0,0,7,244,0,0,127,252,0,0,0,11,240,0,2,255,255,0,0,0,15,224,0,31,255,255,224,0,0,31,208,1,255,253,191,254,0,0,63,192,111,255,224,31,255,244,0,191,135,255,255,0,2,255,255,208,255,3,255,244,0,0,127,255,192,46,1,254,0,0,0,2,255,64,4,0,144,0,0,0,0,26,0, + // 0x53d6 取 + 214,83,36,34,50,38,1,252,21,85,85,85,84,0,0,0,0,63,255,255,255,254,0,0,0,0,63,255,255,255,254,0,0,0,0,63,255,255,255,255,170,170,170,144,1,252,0,31,199,255,255,255,244,1,252,0,31,199,255,255,255,240,1,252,0,31,199,255,255,255,240,1,252,0,31,194,180,0,11,240,1,255,255,255,195,252,0,15,240,1,255,255,255,193,252,0,15,224,1,255,255,255,192,253,0,31,208,1,252,0,47,192,254,0,31,192,1,252,0,31,192,191,0,47,192,1,252,0,31,192,127,0,63,128,1,252,0,31,192,63,64,127,64,1,252,0,31,192,63,192,191,0,1,255,255,255,192,47,192,254,0,1,255,255,255,192,15,225,253,0,1,255,255,255,192,15,243,252,0,1,253,0,47,192,7,255,248,0,1,252,0,31,192,3,255,240,0,1,252,0,31,192,2,255,224,0,1,252,0,31,192,0,255,192,0,1,252,0,111,192,0,255,192,0,1,254,191,255,192,1,255,224,0,175,255,255,255,192,7,255,244,0,191,255,255,255,192,15,255,252,0,191,255,229,31,192,127,243,255,0,126,144,0,31,193,255,192,255,208,0,0,0,31,203,255,0,63,248,0,0,0,31,255,252,0,31,254,0,0,0,31,207,224,0,3,252,0,0,0,31,199,64,0,0,180,0,0,0,31,192,0,0,0,0, + // 0x53d8 变 + 216,83,34,37,77,38,2,251,0,0,0,6,240,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,1,254,0,0,0,0,127,255,255,255,255,255,255,255,192,127,255,255,255,255,255,255,255,192,127,255,255,255,255,255,255,255,192,0,0,7,244,1,252,0,0,0,0,4,3,244,1,252,0,0,0,0,31,195,244,1,252,45,0,0,0,63,131,244,1,252,255,64,0,0,191,3,244,1,252,63,208,0,0,254,3,244,1,252,15,244,0,3,252,3,244,1,252,3,252,0,11,244,3,244,1,252,0,255,0,47,224,3,244,1,252,0,127,128,15,192,3,244,1,252,0,47,0,2,0,3,244,1,252,0,8,0,0,0,3,244,1,252,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,255,255,255,64,0,3,255,255,255,255,255,255,208,0,3,255,255,255,255,255,255,128,0,0,11,244,0,0,1,255,0,0,0,2,253,0,0,7,253,0,0,0,0,255,128,0,31,244,0,0,0,0,63,240,0,191,208,0,0,0,0,11,254,7,255,0,0,0,0,0,1,255,255,248,0,0,0,0,0,0,127,255,208,0,0,0,0,0,6,255,255,248,0,0,0,0,1,191,255,255,255,228,0,0,26,255,255,253,11,255,255,249,64,191,255,255,128,0,111,255,255,240,63,255,144,0,0,1,175,255,192,46,64,0,0,0,0,0,91,64,0,0,0,0,0,0,0,0,0, + // 0x53f0 台 + 240,83,34,36,68,38,2,252,0,0,0,228,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,244,0,0,64,0,0,0,0,31,240,0,11,208,0,0,0,0,63,208,0,31,244,0,0,0,0,191,192,0,11,254,0,0,0,0,255,0,0,2,255,128,0,0,2,254,0,0,0,191,224,0,0,7,252,0,0,0,63,244,0,106,175,254,255,255,255,255,253,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,192,127,255,254,170,149,84,0,63,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,11,128,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,149,85,85,85,111,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,149,85,85,85,111,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,64,0,0,0,47,192,0,0,42,64,0,0,0,26,128,0, + // 0x5403 吃 + 3,84,34,36,68,38,3,252,0,0,0,0,57,0,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,255,0,0,0,0,85,85,80,0,254,0,0,0,0,255,255,244,2,252,0,0,0,0,255,255,244,3,253,85,85,85,0,255,255,244,11,255,255,255,255,192,252,3,244,15,255,255,255,255,192,252,3,244,47,255,255,255,255,192,252,3,244,127,192,0,0,0,0,252,3,244,255,64,0,0,0,0,252,3,246,254,0,0,0,0,0,252,3,255,252,0,0,0,0,0,252,3,245,244,0,0,0,0,0,252,3,244,99,255,255,255,240,0,252,3,244,3,255,255,255,252,0,252,3,244,3,255,255,255,240,0,252,3,244,1,85,87,255,128,0,252,3,244,0,0,11,254,0,0,252,3,244,0,0,63,244,0,0,252,3,244,0,0,255,208,0,0,252,3,244,0,3,255,0,0,0,252,3,244,0,15,252,0,0,0,255,255,244,0,63,240,0,0,0,255,255,244,0,255,128,0,0,0,255,255,244,3,254,0,0,0,0,254,85,80,11,248,0,0,5,0,252,0,0,31,224,0,0,11,208,252,0,0,63,192,0,0,11,224,168,0,0,127,64,0,0,11,208,0,0,0,191,0,0,0,15,208,0,0,0,191,128,0,0,31,192,0,0,0,127,255,255,255,255,192,0,0,0,63,255,255,255,255,64,0,0,0,11,255,255,255,254,0,0,0,0,0,21,85,85,80,0, + // 0x5408 合 + 8,84,36,36,68,38,1,252,0,0,0,1,254,0,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,11,255,208,0,0,0,0,0,0,31,255,244,0,0,0,0,0,0,127,219,252,0,0,0,0,0,1,255,131,255,0,0,0,0,0,3,255,0,255,208,0,0,0,0,15,252,0,63,244,0,0,0,0,127,240,0,15,254,0,0,0,1,255,192,0,3,255,192,0,0,11,255,0,0,0,255,244,0,0,63,252,0,0,0,47,254,0,2,255,240,0,0,0,11,255,224,31,254,191,255,255,255,254,191,253,127,244,127,255,255,255,253,31,253,63,192,127,255,255,255,253,2,248,13,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,240,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,240,0,0,0,15,240,0,0,7,224,0,0,0,11,224,0, + // 0x540d 名 + 13,84,33,36,68,38,1,252,0,0,0,122,64,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,15,255,255,255,248,0,0,0,0,63,255,255,255,254,0,0,0,0,255,255,255,255,252,0,0,0,3,255,64,0,7,248,0,0,0,15,252,0,0,15,240,0,0,0,127,244,0,0,47,224,0,0,2,255,253,0,0,63,192,0,0,31,255,255,128,0,255,64,0,0,127,248,255,224,2,255,0,0,0,47,208,47,252,11,252,0,0,0,11,0,11,255,31,244,0,0,0,0,0,1,255,255,208,0,0,0,0,0,0,127,255,128,0,0,0,0,0,0,31,254,0,0,0,0,0,0,0,63,248,0,0,0,0,0,0,1,255,255,255,255,255,128,0,0,11,255,255,255,255,255,128,0,0,191,255,255,255,255,255,128,0,11,255,252,0,0,0,63,128,0,191,255,248,0,0,0,63,128,31,255,247,248,0,0,0,63,128,127,255,67,248,0,0,0,63,128,47,248,3,248,0,0,0,63,128,14,64,3,248,0,0,0,63,128,0,0,3,248,0,0,0,63,128,0,0,3,248,0,0,0,63,128,0,0,3,248,0,0,0,63,128,0,0,3,255,255,255,255,255,128,0,0,3,255,255,255,255,255,128,0,0,3,255,255,255,255,255,128,0,0,3,252,0,0,0,63,128,0,0,2,248,0,0,0,63,128, + // 0x540e 后 + 14,84,36,36,68,38,1,252,0,0,0,0,0,0,0,80,0,0,0,0,0,0,1,111,248,0,0,0,0,0,90,255,255,254,0,0,121,106,255,255,255,255,250,0,0,127,255,255,255,255,249,0,0,0,127,255,255,254,148,0,0,0,0,127,250,80,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,253,0,127,149,85,85,85,85,85,84,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,3,255,255,255,255,255,64,0,191,3,255,255,255,255,255,64,0,254,3,255,255,255,255,255,64,0,254,3,249,85,85,85,127,64,0,253,3,244,0,0,0,127,64,1,253,3,244,0,0,0,127,64,2,252,3,244,0,0,0,127,64,3,252,3,244,0,0,0,127,64,3,248,3,244,0,0,0,127,64,7,244,3,244,0,0,0,127,64,11,240,3,244,0,0,0,127,64,15,240,3,249,85,85,85,127,64,47,208,3,255,255,255,255,255,64,63,192,3,255,255,255,255,255,64,127,64,3,255,255,255,255,255,64,31,0,3,244,0,0,0,127,64,5,0,3,244,0,0,0,63,0, + // 0x5411 向 + 17,84,32,36,32,38,3,252,0,0,0,62,64,0,0,0,0,0,0,63,208,0,0,0,0,0,0,127,192,0,0,0,0,0,0,255,128,0,0,0,0,0,0,255,0,0,0,0,0,0,2,254,0,0,0,0,21,85,87,254,85,85,85,84,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,0,0,0,0,0,0,253,127,0,0,0,0,0,0,253,127,0,0,0,0,0,0,253,127,0,0,0,0,0,0,253,127,0,0,0,0,0,0,253,127,0,127,255,255,253,0,253,127,0,127,255,255,253,0,253,127,0,127,255,255,253,0,253,127,0,127,0,0,253,0,253,127,0,127,0,0,253,0,253,127,0,127,0,0,253,0,253,127,0,127,0,0,253,0,253,127,0,127,0,0,253,0,253,127,0,127,0,0,253,0,253,127,0,127,0,0,253,0,253,127,0,127,255,255,253,0,253,127,0,127,255,255,253,0,253,127,0,127,255,255,253,0,253,127,0,127,0,0,0,0,253,127,0,127,0,0,0,0,253,127,0,106,0,0,0,0,253,127,0,0,0,0,0,0,253,127,0,0,0,0,26,170,253,127,0,0,0,0,31,255,252,127,0,0,0,0,15,255,248,127,0,0,0,0,15,255,144, + // 0x5426 否 + 38,84,35,34,50,38,1,252,31,255,255,255,255,255,255,255,244,31,255,255,255,255,255,255,255,244,31,255,255,255,255,255,255,255,244,5,85,85,85,127,245,85,85,80,0,0,0,0,255,208,0,0,0,0,0,0,3,255,64,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,191,254,7,208,0,0,0,0,3,255,254,31,253,0,0,0,0,47,255,254,31,255,192,0,0,2,255,248,254,1,255,248,0,0,47,255,192,254,0,31,255,64,7,255,254,0,254,0,2,255,240,127,255,224,0,254,0,0,127,252,63,254,0,0,254,0,0,11,248,15,224,0,0,254,0,0,1,224,6,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,255,248,0,0,31,255,255,255,255,255,248,0,0,31,255,255,255,255,255,248,0,0,31,208,0,0,0,7,248,0,0,31,208,0,0,0,3,248,0,0,31,208,0,0,0,3,248,0,0,31,208,0,0,0,3,248,0,0,31,208,0,0,0,3,248,0,0,31,208,0,0,0,3,248,0,0,31,208,0,0,0,3,248,0,0,31,255,255,255,255,255,248,0,0,31,255,255,255,255,255,248,0,0,31,255,255,255,255,255,248,0,0,31,208,0,0,0,7,248,0,0,31,192,0,0,0,3,248,0, + // 0x542f 启 + 47,84,32,36,32,38,2,252,0,0,0,0,0,0,26,0,0,0,0,0,1,107,255,192,0,0,1,106,255,255,255,240,2,175,255,255,255,255,249,0,2,255,255,255,255,164,0,0,2,255,254,149,0,0,0,0,2,252,0,0,0,0,0,0,2,252,0,0,0,0,0,0,2,255,255,255,255,255,255,252,2,255,255,255,255,255,255,252,2,255,255,255,255,255,255,252,2,252,0,0,0,0,1,252,2,252,0,0,0,0,1,252,2,252,0,0,0,0,1,252,2,252,0,0,0,0,1,252,2,252,0,0,0,0,1,252,2,255,255,255,255,255,255,252,2,255,255,255,255,255,255,252,2,255,255,255,255,255,255,252,3,252,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,244,255,255,255,255,255,254,3,244,255,255,255,255,255,254,7,240,255,255,255,255,255,254,11,240,254,0,0,0,0,254,15,240,254,0,0,0,0,254,15,224,254,0,0,0,0,254,31,208,254,0,0,0,0,254,63,192,254,0,0,0,0,254,63,128,254,0,0,0,0,254,191,64,255,255,255,255,255,254,255,0,255,255,255,255,255,254,189,0,255,255,255,255,255,254,44,0,254,0,0,0,0,254,0,0,169,0,0,0,0,169, + // 0x544a 告 + 74,84,34,37,77,38,2,251,0,1,0,0,190,0,0,0,0,0,7,244,0,255,0,0,0,0,0,11,240,0,255,0,0,0,0,0,15,240,0,255,0,0,0,0,0,31,208,0,255,0,0,0,0,0,63,208,0,255,0,0,0,0,0,127,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,2,255,255,255,255,255,255,252,0,7,252,0,0,255,0,0,0,0,31,240,0,0,255,0,0,0,0,63,208,0,0,255,0,0,0,0,11,128,0,0,255,0,0,0,0,1,0,0,0,255,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,21,85,85,85,85,85,85,85,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,149,85,85,85,95,224,0,0,63,128,0,0,0,15,224,0,0,63,128,0,0,0,15,224,0,0,63,128,0,0,0,15,224,0,0,63,128,0,0,0,15,224,0,0,63,128,0,0,0,15,224,0,0,63,149,85,85,85,95,224,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,128,0,0,0,15,224,0,0,63,128,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0, + // 0x5468 周 + 104,84,33,35,59,38,1,251,0,191,255,255,255,255,255,255,128,0,191,255,255,255,255,255,255,128,0,191,255,255,255,255,255,255,128,0,191,85,85,85,85,85,127,128,0,191,0,0,191,0,0,63,128,0,191,0,0,191,0,0,63,128,0,191,0,0,191,0,0,63,128,0,191,15,255,255,255,244,63,128,0,191,15,255,255,255,244,63,128,0,191,11,255,255,255,244,63,128,0,191,0,0,191,0,0,63,128,0,191,0,0,191,0,0,63,128,0,191,0,0,191,0,0,63,128,0,191,47,255,255,255,252,63,128,0,191,47,255,255,255,253,63,128,0,191,47,255,255,255,253,63,128,0,191,0,0,0,0,0,63,128,0,191,0,0,0,0,0,63,128,0,254,0,0,0,0,0,63,128,0,254,3,255,255,255,224,63,128,0,253,3,255,255,255,224,63,128,0,253,3,254,170,175,224,63,128,1,252,3,240,0,11,224,63,128,1,252,3,240,0,11,224,63,128,2,252,3,240,0,11,224,63,128,3,248,3,240,0,11,224,63,128,7,244,3,255,255,255,224,63,128,11,240,3,255,255,255,224,63,128,15,240,3,255,255,255,224,63,128,31,224,3,240,0,0,0,63,128,63,192,3,240,0,0,0,127,128,127,128,1,80,0,2,255,255,64,63,0,0,0,0,1,255,255,0,10,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,0,0, + // 0x547d 命 + 125,84,36,37,77,38,1,251,0,0,0,2,255,0,0,0,0,0,0,0,7,255,192,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,63,255,248,0,0,0,0,0,1,255,199,255,0,0,0,0,0,7,255,1,255,192,0,0,0,0,31,252,0,127,244,0,0,0,0,191,240,0,15,254,0,0,0,7,255,128,0,3,255,208,0,0,47,254,0,0,0,191,248,0,1,255,255,255,255,255,255,255,128,31,255,139,255,255,255,226,255,248,255,253,11,255,255,255,224,127,255,127,224,0,0,0,0,0,7,252,46,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,0,0,0,255,255,255,3,255,255,255,64,0,255,255,255,3,255,255,255,64,0,255,255,255,3,255,255,255,64,0,253,0,63,3,244,0,63,64,0,253,0,63,3,244,0,63,64,0,253,0,63,3,244,0,63,64,0,253,0,63,3,244,0,63,64,0,253,0,63,3,244,0,63,64,0,253,0,63,3,244,0,63,64,0,253,0,63,3,244,0,63,64,0,253,0,63,3,244,0,63,64,0,255,255,255,3,244,0,63,64,0,255,255,255,3,244,0,127,64,0,255,255,255,3,244,127,255,0,0,253,0,0,3,244,63,255,0,0,253,0,0,3,244,63,248,0,0,253,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x548c 和 + 140,84,34,36,68,38,1,252,0,0,0,5,0,0,0,0,0,0,0,1,191,0,0,0,0,0,0,5,191,255,192,0,0,0,0,26,255,255,255,129,85,85,85,64,31,255,255,144,3,255,255,255,208,15,254,254,0,3,255,255,255,208,4,0,254,0,3,255,255,255,208,0,0,254,0,3,244,0,15,208,0,0,254,0,3,244,0,15,208,0,0,254,0,3,244,0,15,208,0,0,254,0,3,244,0,15,208,21,85,254,85,67,244,0,15,208,63,255,255,255,227,244,0,15,208,63,255,255,255,227,244,0,15,208,63,255,255,255,227,244,0,15,208,0,3,254,0,3,244,0,15,208,0,7,255,0,3,244,0,15,208,0,15,255,192,3,244,0,15,208,0,15,255,240,3,244,0,15,208,0,47,255,252,3,244,0,15,208,0,63,254,254,3,244,0,15,208,0,189,254,127,67,244,0,15,208,1,252,254,47,211,244,0,15,208,3,248,254,15,211,244,0,15,208,11,240,254,7,131,244,0,15,208,31,224,254,2,3,244,0,15,208,63,192,254,0,3,244,0,15,208,191,64,254,0,3,249,85,111,208,126,0,254,0,3,255,255,255,208,44,0,254,0,3,255,255,255,208,0,0,254,0,3,255,255,255,208,0,0,254,0,3,244,0,15,208,0,0,254,0,3,244,0,15,208,0,0,254,0,3,244,0,15,208,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0, + // 0x54cd 响 + 205,84,33,37,77,38,3,251,0,0,0,0,0,164,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,255,0,0,0,85,85,64,0,2,253,0,0,0,255,255,224,0,3,252,0,0,0,255,255,224,0,7,248,0,0,0,255,255,224,0,11,240,0,0,0,252,7,224,255,255,255,255,255,64,252,7,224,255,255,255,255,255,64,252,7,224,255,255,255,255,255,64,252,7,224,253,0,0,0,63,64,252,7,224,253,0,0,0,63,64,252,7,224,253,0,0,0,63,64,252,7,224,253,6,170,160,63,64,252,7,224,253,15,255,244,63,64,252,7,224,253,15,255,244,63,64,252,7,224,253,15,128,244,63,64,252,7,224,253,15,128,244,63,64,252,7,224,253,15,128,244,63,64,252,7,224,253,15,128,244,63,64,252,7,224,253,15,128,244,63,64,252,7,224,253,15,128,244,63,64,253,87,224,253,15,128,244,63,64,255,255,224,253,15,128,244,63,64,255,255,224,253,15,255,244,63,64,255,255,224,253,15,255,244,63,64,252,0,0,253,15,234,164,63,64,252,0,0,253,15,128,0,63,64,252,0,0,253,15,64,0,63,64,168,0,0,253,0,0,0,63,64,0,0,0,253,0,0,0,63,64,0,0,0,253,0,0,0,63,64,0,0,0,253,0,0,0,63,64,0,0,0,253,0,0,63,255,64,0,0,0,253,0,0,31,255,0,0,0,0,253,0,0,15,248,0,0,0,0,0,0,0,0,0,0, + // 0x55b7 喷 + 183,85,35,36,68,38,2,252,0,0,0,0,0,42,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,21,85,64,127,255,255,255,255,128,127,255,224,191,255,255,255,255,128,127,255,224,191,255,255,255,255,128,127,255,224,0,0,63,0,0,0,125,3,224,0,0,63,0,0,0,125,3,224,3,244,63,7,240,0,125,3,224,3,244,0,7,240,0,125,3,227,255,255,255,255,255,240,125,3,227,255,255,255,255,255,240,125,3,227,255,255,255,255,255,240,125,3,224,3,244,0,7,240,0,125,3,224,3,244,0,7,240,0,125,3,224,0,80,0,1,64,0,125,3,224,31,255,255,255,254,0,125,3,224,31,255,255,255,254,0,125,3,224,31,255,255,255,254,0,125,3,224,31,128,0,0,190,0,125,3,224,31,128,0,0,190,0,125,3,224,31,128,0,0,190,0,126,87,224,31,128,63,0,190,0,127,255,224,31,128,63,0,190,0,127,255,224,31,128,63,0,190,0,127,255,224,31,128,63,0,190,0,125,0,0,31,128,127,0,190,0,125,0,0,31,128,127,0,190,0,125,0,0,31,128,254,0,190,0,41,0,0,5,2,252,56,0,0,0,0,0,0,15,248,255,144,0,0,0,0,1,191,224,47,253,0,0,0,0,111,255,64,2,255,208,0,0,31,255,244,0,0,63,248,0,0,11,254,64,0,0,7,240,0,0,2,64,0,0,0,0,96, + // 0x5634 嘴 + 52,86,34,37,77,38,3,251,0,0,0,2,224,11,208,0,0,0,0,0,3,240,11,208,0,0,0,0,0,3,240,11,208,24,0,255,255,131,195,240,11,209,255,0,255,255,131,195,250,155,239,253,0,255,255,131,195,255,235,255,208,0,248,31,131,195,255,235,253,0,0,244,15,131,195,240,11,224,0,0,244,15,131,195,240,11,208,1,0,244,15,131,195,240,11,208,3,208,244,15,131,195,251,235,208,7,208,244,15,155,255,255,247,250,175,192,244,15,191,255,255,147,255,255,128,244,15,191,255,252,1,255,254,0,244,15,153,3,253,85,64,0,0,244,15,128,11,255,255,224,0,0,244,15,128,47,255,255,240,0,0,244,15,128,191,64,31,192,0,0,244,15,130,255,85,127,149,84,0,244,15,159,255,255,255,255,253,0,244,15,255,255,255,255,255,253,0,255,255,159,254,0,252,0,253,0,255,255,128,190,0,252,0,253,0,255,255,128,191,255,255,255,253,0,248,0,0,191,255,255,255,253,0,244,0,0,190,0,252,0,253,0,244,0,0,253,0,252,0,253,0,244,0,0,253,0,252,0,253,0,0,0,0,255,255,255,255,253,0,0,0,2,255,255,255,255,253,0,0,0,3,249,85,85,85,253,0,0,0,11,240,0,0,0,253,0,0,0,47,224,0,0,0,253,0,0,0,191,192,0,1,170,253,0,0,0,255,0,0,1,255,252,0,0,0,44,0,0,0,255,224,0,0,0,0,0,0,0,0,0,0, + // 0x5668 器 + 104,86,36,35,59,38,1,251,1,255,255,255,0,255,255,255,64,1,255,255,255,0,255,255,255,64,1,255,255,255,0,255,255,255,64,1,252,0,127,0,252,0,63,64,1,252,0,127,0,252,0,63,64,1,252,0,127,0,252,0,63,64,1,252,0,127,0,252,0,63,64,1,252,0,127,0,252,0,63,64,1,255,255,255,0,255,255,255,64,1,255,255,255,64,255,255,255,64,1,255,255,255,248,255,255,255,64,0,0,0,7,252,0,0,0,0,0,0,0,15,240,0,0,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,31,252,0,63,224,0,0,0,0,191,240,0,15,252,0,0,0,3,255,192,0,3,255,64,0,0,47,254,0,0,0,255,240,0,6,255,244,0,0,0,47,255,64,127,255,255,255,65,255,255,255,249,191,255,255,255,65,255,255,255,254,63,255,255,255,65,255,255,255,252,30,253,0,63,65,248,0,127,112,0,253,0,63,65,248,0,127,0,0,253,0,63,65,248,0,127,0,0,253,0,63,65,248,0,127,0,0,253,0,63,65,248,0,127,0,0,253,0,63,65,248,0,127,0,0,255,255,255,65,255,255,255,0,0,255,255,255,65,255,255,255,0,0,255,255,255,65,255,255,255,0,0,253,0,63,65,248,0,127,0,0,0,0,0,0,0,0,0,0, + // 0x5674 噴 + 116,86,34,37,77,38,3,251,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,1,255,255,255,255,255,0,255,255,225,255,255,255,255,255,0,255,255,224,85,85,254,85,85,0,255,255,224,6,144,253,10,128,0,252,11,224,11,208,253,15,192,0,252,11,224,11,208,0,15,192,0,252,11,239,255,255,255,255,255,208,252,11,239,255,255,255,255,255,208,252,11,229,95,229,85,111,213,64,252,11,224,11,208,0,15,192,0,252,11,224,5,64,0,5,64,0,252,11,224,191,255,255,255,252,0,252,11,224,191,255,255,255,252,0,252,11,224,190,0,0,1,252,0,252,11,224,190,0,0,1,252,0,252,11,224,190,0,0,1,252,0,252,11,224,191,255,255,255,252,0,252,11,224,191,255,255,255,252,0,252,11,224,190,0,0,1,252,0,255,255,224,190,0,0,1,252,0,255,255,224,191,255,255,255,252,0,255,255,224,191,255,255,255,252,0,252,0,0,190,0,0,1,252,0,252,0,0,190,0,0,1,252,0,252,0,0,190,0,0,1,252,0,84,0,0,191,255,255,255,252,0,0,0,0,191,255,255,255,252,0,0,0,0,2,228,0,125,0,0,0,0,0,47,252,1,255,208,0,0,0,6,255,224,0,47,253,0,0,0,191,255,0,0,3,255,128,0,0,127,224,0,0,0,127,192,0,0,29,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0, + // 0x56de 回 + 222,86,32,35,24,38,3,252,170,170,170,170,170,170,170,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,191,255,255,253,0,255,255,0,191,255,255,253,0,255,255,0,191,255,255,253,0,255,255,0,190,0,0,253,0,255,255,0,190,0,0,253,0,255,255,0,190,0,0,253,0,255,255,0,190,0,0,253,0,255,255,0,190,0,0,253,0,255,255,0,190,0,0,253,0,255,255,0,190,0,0,253,0,255,255,0,191,0,0,253,0,255,255,0,191,255,255,253,0,255,255,0,191,255,255,253,0,255,255,0,191,255,255,253,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,85,85,85,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255, + // 0x56e0 因 + 224,86,32,34,16,38,3,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,85,85,85,255,254,0,0,5,64,0,0,191,254,0,0,15,208,0,0,191,254,0,0,15,208,0,0,191,254,0,0,15,208,0,0,191,254,0,0,15,208,0,0,191,254,0,0,15,208,0,0,191,254,47,255,255,255,255,248,191,254,47,255,255,255,255,248,191,254,47,255,255,255,255,248,191,254,0,0,47,244,0,0,191,254,0,0,63,244,0,0,191,254,0,0,63,252,0,0,191,254,0,0,127,252,0,0,191,254,0,0,255,190,0,0,191,254,0,1,253,63,64,0,191,254,0,3,252,63,192,0,191,254,0,11,248,31,224,0,191,254,0,47,240,11,252,0,191,254,0,191,208,3,255,64,191,254,7,255,64,0,255,224,191,254,63,252,0,0,63,248,191,254,15,224,0,0,11,224,191,254,7,0,0,0,1,192,191,254,0,0,0,0,0,0,191,255,85,85,85,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,0,0,0,0,0,0,191,190,0,0,0,0,0,0,190, + // 0x56fa 固 + 250,86,32,35,24,38,3,251,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,85,85,85,85,85,85,255,191,0,0,0,0,0,0,255,191,0,0,11,224,0,0,255,191,0,0,11,224,0,0,255,191,0,0,11,224,0,0,255,191,0,0,11,224,0,0,255,191,15,255,255,255,255,244,255,191,15,255,255,255,255,244,255,191,15,255,255,255,255,240,255,191,0,0,11,224,0,0,255,191,0,0,11,224,0,0,255,191,0,0,11,224,0,0,255,191,0,170,175,250,170,0,255,191,0,255,255,255,255,0,255,191,0,255,255,255,255,0,255,191,0,252,0,0,63,0,255,191,0,252,0,0,63,0,255,191,0,252,0,0,63,0,255,191,0,252,0,0,63,0,255,191,0,252,0,0,63,0,255,191,0,255,255,255,255,0,255,191,0,255,255,255,255,0,255,191,0,170,170,170,170,0,255,191,0,0,0,0,0,0,255,191,0,0,0,0,0,0,255,191,0,0,0,0,0,0,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,85,85,85,85,85,85,255,191,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0, + // 0x56fe 图 + 254,86,32,34,16,38,3,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,0,0,80,0,0,0,191,254,0,0,252,0,0,0,191,254,0,3,248,0,0,0,191,254,0,15,254,170,170,64,191,254,0,63,255,255,255,208,191,254,0,255,255,255,255,192,191,254,7,255,64,0,191,0,191,254,47,255,208,3,252,0,191,254,63,199,248,47,240,0,191,254,14,1,255,255,128,0,191,254,0,0,63,254,0,0,191,254,0,2,255,255,144,0,191,254,0,127,255,255,254,64,191,254,111,255,244,11,255,254,191,254,255,255,64,0,191,253,191,254,63,224,249,0,2,248,191,254,36,2,255,248,0,0,191,254,0,0,111,255,192,0,191,254,0,0,0,191,192,0,191,254,0,20,0,6,64,0,191,254,0,191,250,64,0,0,191,254,1,255,255,254,64,0,191,254,0,5,191,255,254,0,191,254,0,0,1,191,255,0,191,254,0,0,0,1,188,0,191,254,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,0,0,0,0,0,0,191,189,0,0,0,0,0,0,190, + // 0x5728 在 + 40,87,35,36,68,38,1,252,0,0,0,25,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,5,85,95,245,85,85,85,85,80,0,0,31,224,0,0,0,0,0,0,0,63,192,0,31,192,0,0,0,0,191,64,0,47,192,0,0,0,1,255,0,0,47,192,0,0,0,3,253,0,0,47,192,0,0,0,11,248,0,0,47,192,0,0,0,47,240,0,0,47,192,0,0,0,191,224,0,0,47,192,0,0,1,255,224,47,255,255,255,255,192,11,255,224,47,255,255,255,255,192,63,255,224,47,255,255,255,255,192,127,239,224,5,85,111,213,85,64,63,79,224,0,0,47,192,0,0,29,15,224,0,0,47,192,0,0,4,15,224,0,0,47,192,0,0,0,15,224,0,0,47,192,0,0,0,15,224,0,0,47,192,0,0,0,15,224,0,0,47,192,0,0,0,15,224,0,0,47,192,0,0,0,15,224,0,0,47,192,0,0,0,15,224,0,0,47,192,0,0,0,15,224,85,85,111,213,85,80,0,15,224,255,255,255,255,255,248,0,15,224,255,255,255,255,255,248,0,15,224,255,255,255,255,255,248,0,15,224,0,0,0,0,0,0, + // 0x574f 坏 + 79,87,36,35,59,38,1,252,0,47,128,0,0,0,0,0,0,0,47,128,21,85,85,85,85,84,0,47,128,191,255,255,255,255,253,0,47,128,191,255,255,255,255,253,0,47,128,191,255,255,255,255,253,0,47,128,0,0,2,253,0,0,0,47,128,0,0,3,252,0,0,0,47,128,0,0,15,244,0,0,21,111,213,0,0,31,240,0,0,63,255,255,128,0,63,192,0,0,63,255,255,128,0,255,192,0,0,63,255,255,128,3,255,203,0,0,0,47,128,0,11,255,239,208,0,0,47,128,0,47,255,239,244,0,0,47,128,0,255,255,203,254,0,0,47,128,3,255,95,193,255,128,0,47,128,31,253,31,192,127,240,0,47,128,255,244,31,192,15,252,0,47,131,255,192,31,192,3,254,0,47,128,254,0,31,192,0,252,0,47,128,52,0,31,192,0,48,0,47,129,128,0,31,192,0,0,0,47,239,192,0,31,192,0,0,0,47,255,208,0,31,192,0,0,1,255,255,208,0,31,192,0,0,127,255,253,0,0,31,192,0,0,127,255,128,0,0,31,192,0,0,63,228,0,0,0,31,192,0,0,61,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0, + // 0x5757 块 + 87,87,35,36,68,38,1,252,0,21,64,0,0,21,0,0,0,0,47,128,0,0,127,0,0,0,0,47,128,0,0,127,0,0,0,0,47,128,0,0,127,0,0,0,0,47,128,0,0,127,0,0,0,0,47,128,0,0,127,0,0,0,0,47,128,1,85,191,85,85,0,0,47,128,11,255,255,255,255,64,0,47,128,11,255,255,255,255,64,63,255,255,139,255,255,255,255,64,63,255,255,128,0,127,0,63,64,63,255,255,128,0,127,0,63,64,21,127,213,0,0,127,0,63,64,0,47,128,0,0,127,0,63,64,0,47,128,0,0,127,0,63,64,0,47,128,0,0,127,0,63,64,0,47,128,0,0,191,0,63,64,0,47,128,21,85,191,85,127,148,0,47,128,63,255,255,255,255,252,0,47,128,63,255,255,255,255,252,0,47,128,63,255,255,255,255,252,0,47,135,128,0,255,240,0,0,0,47,255,192,2,255,244,0,0,0,47,255,192,3,254,252,0,0,1,255,255,64,7,244,253,0,0,47,255,244,0,15,240,255,0,0,127,255,64,0,31,240,127,128,0,63,244,0,0,63,192,63,192,0,46,64,0,0,255,128,31,240,0,0,0,0,3,255,0,11,252,0,0,0,0,15,253,0,3,255,0,0,0,0,127,244,0,0,255,208,0,0,3,255,208,0,0,127,252,0,0,15,255,0,0,0,31,252,0,0,3,248,0,0,0,3,240,0,0,0,128,0,0,0,0,80, + // 0x578b 型 + 139,87,34,35,59,38,2,253,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,127,0,15,255,255,255,252,5,64,127,0,15,255,255,255,252,31,192,127,0,15,255,255,255,252,31,192,127,0,0,63,64,190,0,31,192,127,0,0,63,64,190,0,31,192,127,0,0,63,64,190,0,31,192,127,0,0,63,64,190,0,31,192,127,0,0,63,64,191,0,31,192,127,0,127,255,255,255,254,31,192,127,0,127,255,255,255,254,31,192,127,0,127,255,255,255,254,31,192,127,0,0,127,0,190,0,31,192,127,0,0,191,0,190,0,31,192,127,0,0,253,0,190,0,5,64,127,0,3,252,0,190,0,0,0,127,0,11,248,0,190,0,0,0,127,0,63,240,0,190,0,0,255,255,0,191,192,0,190,0,0,255,254,0,47,0,0,107,252,0,191,248,0,4,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,85,85,85,85,85,85,80, + // 0x57ab 垫 + 171,87,35,35,59,38,2,253,0,15,192,0,1,248,0,0,0,0,15,192,0,2,252,0,0,0,0,15,192,0,2,248,0,0,0,0,15,192,0,2,248,0,0,0,191,255,255,215,255,255,255,244,0,191,255,255,215,255,255,255,244,0,191,255,255,215,255,255,255,244,0,0,31,208,0,3,244,3,244,0,0,15,192,0,3,244,3,240,0,0,15,192,1,211,240,3,240,0,0,15,219,227,255,240,3,240,0,1,111,255,247,255,240,3,240,0,191,255,255,240,191,240,3,240,0,255,255,249,0,31,253,3,240,0,191,255,192,0,47,255,131,240,0,100,15,192,0,63,255,243,244,64,0,15,192,0,255,15,242,244,184,0,15,192,3,253,2,193,248,252,0,31,192,31,248,0,0,252,248,31,255,192,63,224,0,0,255,244,15,255,128,31,128,0,0,127,240,11,254,0,7,248,0,0,31,192,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,1,255,255,255,255,255,255,244,0,1,255,255,255,255,255,255,244,0,1,255,255,255,255,255,255,244,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x586b 填 + 107,88,36,36,68,38,1,252,0,5,0,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,191,255,255,255,255,252,0,63,64,255,255,255,255,255,252,0,63,64,255,255,255,255,255,252,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,31,208,0,0,21,127,149,3,255,255,255,255,0,63,255,255,3,255,255,255,255,0,63,255,255,3,244,0,0,63,0,63,255,255,3,244,0,0,127,0,0,63,64,3,255,255,255,255,0,0,63,64,3,255,255,255,255,0,0,63,64,3,244,0,0,63,0,0,63,64,3,244,0,0,63,0,0,63,64,3,255,255,255,255,0,0,63,64,3,255,255,255,255,0,0,63,64,3,244,0,0,127,0,0,63,64,3,244,0,0,63,0,0,63,64,3,245,85,85,127,0,0,63,75,131,255,255,255,255,0,0,63,255,195,255,255,255,255,0,0,127,255,192,0,0,0,0,0,11,255,253,0,0,0,0,0,0,127,255,211,255,255,255,255,255,253,127,253,3,255,255,255,255,255,253,63,128,3,255,255,255,255,255,253,24,0,0,0,30,0,3,128,0,0,0,0,0,191,192,31,244,0,0,0,0,7,255,0,11,255,0,0,0,0,191,248,0,0,255,208,0,0,11,255,208,0,0,47,248,0,0,3,254,0,0,0,7,253,0,0,0,160,0,0,0,0,144, + // 0x58f3 壳 + 243,88,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,106,170,170,171,254,170,170,170,144,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,1,255,255,255,255,255,255,248,0,1,255,255,255,255,255,255,248,0,1,170,170,170,170,170,170,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,234,170,170,170,170,170,191,192,63,64,0,0,0,0,0,47,192,63,69,85,85,85,85,85,47,192,63,75,255,255,255,255,254,47,192,0,11,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,255,208,0,0,0,1,255,255,255,255,208,0,0,0,1,255,255,255,255,208,0,0,0,1,252,0,0,31,208,0,0,0,1,252,0,0,31,208,0,0,0,2,252,0,0,31,208,0,0,0,3,252,0,0,31,208,6,0,0,11,244,0,0,31,208,7,224,0,47,240,0,0,31,208,11,224,1,255,192,0,0,15,208,15,208,111,255,64,0,0,15,255,255,208,127,252,0,0,0,15,255,255,192,47,208,0,0,0,3,255,255,0,9,0,0,0,0,0,0,0,0, + // 0x5907 备 + 7,89,36,37,77,38,1,251,0,0,0,190,64,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,15,255,255,255,255,128,0,0,0,63,255,255,255,255,224,0,0,1,255,255,255,255,255,192,0,0,11,255,0,0,1,255,64,0,0,127,255,192,0,7,253,0,0,2,255,255,244,0,47,248,0,0,15,255,11,254,1,255,208,0,0,3,248,2,255,219,255,0,0,0,0,192,0,127,255,252,0,0,0,0,0,0,31,255,244,0,0,0,0,0,6,255,255,255,224,0,0,0,1,191,255,239,255,255,148,0,6,255,255,254,0,191,255,255,249,191,255,255,208,0,6,255,255,253,63,255,244,0,0,0,27,255,248,47,249,0,0,0,0,0,26,240,4,47,255,255,255,255,255,244,0,0,47,255,255,255,255,255,244,0,0,47,255,255,255,255,255,244,0,0,47,192,0,254,0,7,244,0,0,47,192,0,254,0,7,244,0,0,47,192,0,254,0,7,244,0,0,47,255,255,255,255,255,244,0,0,47,255,255,255,255,255,244,0,0,47,255,255,255,255,255,244,0,0,47,192,0,254,0,7,244,0,0,47,192,0,254,0,7,244,0,0,47,192,0,254,0,7,244,0,0,47,192,0,254,0,7,244,0,0,47,255,255,255,255,255,244,0,0,47,255,255,255,255,255,244,0,0,47,255,255,255,255,255,244,0,0,47,192,0,0,0,7,244,0,0,0,0,0,0,0,0,0,0, + // 0x590d 复 + 13,89,25,37,3,38,6,251,0,3,64,0,0,0,0,0,11,240,0,0,0,0,0,15,240,0,0,0,0,0,47,208,0,0,0,0,0,63,255,255,255,253,0,0,255,255,255,255,253,0,2,255,255,255,255,253,0,7,252,0,0,0,0,0,31,244,0,0,0,0,0,127,255,255,255,255,224,0,191,255,255,255,255,224,0,46,63,85,85,95,224,0,4,63,0,0,15,224,0,0,63,64,0,15,224,0,0,63,255,255,255,224,0,0,63,255,255,255,224,0,0,63,0,0,15,224,0,0,63,0,0,15,224,0,0,63,255,255,255,224,0,0,63,255,255,255,224,0,0,21,191,149,85,64,0,0,0,255,0,0,0,0,0,3,255,170,170,64,0,0,15,255,255,255,240,0,0,63,255,255,255,208,0,2,255,208,0,63,128,0,31,255,244,0,255,0,0,127,245,254,7,253,0,0,47,128,127,239,244,0,0,9,0,31,255,192,0,0,0,0,31,255,128,0,0,0,2,255,255,254,0,0,1,191,255,159,255,254,64,63,255,248,1,255,255,192,31,254,64,0,27,255,0,14,64,0,0,0,29,0,0,0,0,0,0,0,0, + // 0x5916 外 + 22,89,36,36,68,38,1,252,0,0,57,0,0,0,191,0,0,0,0,127,64,0,0,191,0,0,0,0,191,0,0,0,191,0,0,0,0,254,0,0,0,191,0,0,0,1,253,0,0,0,191,0,0,0,2,252,0,0,0,191,0,0,0,3,255,255,254,0,191,0,0,0,11,255,255,255,0,191,0,0,0,15,255,255,255,0,191,0,0,0,31,229,85,255,64,191,0,0,0,63,192,0,255,224,191,0,0,0,191,64,1,255,244,191,0,0,0,255,0,2,255,252,191,0,0,2,253,0,3,252,254,191,0,0,7,253,0,3,244,191,255,0,0,31,255,128,7,240,63,255,0,0,63,255,244,11,240,15,255,0,0,191,223,254,15,224,7,255,0,0,47,2,255,239,192,1,255,64,0,5,0,127,255,192,0,255,224,0,0,0,15,255,64,0,191,252,0,0,0,3,255,0,0,191,255,64,0,0,1,253,0,0,191,255,224,0,0,3,252,0,0,191,127,254,0,0,15,244,0,0,191,15,254,0,0,31,240,0,0,191,2,252,0,0,127,192,0,0,191,0,48,0,0,255,128,0,0,191,0,0,0,3,255,0,0,0,191,0,0,0,15,252,0,0,0,191,0,0,0,127,240,0,0,0,191,0,0,2,255,192,0,0,0,191,0,0,31,255,0,0,0,0,191,0,0,31,252,0,0,0,0,191,0,0,7,224,0,0,0,0,191,0,0,1,0,0,0,0,0,190,0,0, + // 0x591a 多 + 26,89,33,36,68,38,3,252,0,0,0,46,64,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,15,255,255,255,240,0,0,0,0,127,255,255,255,252,0,0,0,3,255,255,255,255,244,0,0,0,47,253,0,0,31,240,0,0,6,255,244,0,0,127,192,0,0,127,255,254,0,1,255,64,0,0,191,250,255,208,7,253,0,0,0,47,64,47,252,47,244,0,0,0,4,0,7,255,255,208,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,127,249,144,0,0,0,0,0,7,255,215,254,0,0,0,0,0,191,254,15,248,0,0,0,0,47,255,224,127,224,0,0,0,91,255,254,2,255,255,255,253,0,255,255,208,15,255,255,255,255,64,191,248,0,191,255,255,255,255,0,57,0,11,255,128,0,3,252,0,0,0,191,253,0,0,11,248,0,0,31,255,255,0,0,31,240,0,0,255,254,255,224,0,63,208,0,0,127,208,63,252,1,255,128,0,0,45,0,7,255,75,254,0,0,0,0,0,0,255,255,248,0,0,0,0,0,0,47,255,224,0,0,0,0,0,0,31,255,64,0,0,0,0,0,2,255,248,0,0,0,0,0,0,127,255,208,0,0,0,0,0,111,255,253,0,0,0,0,2,191,255,255,144,0,0,0,0,3,255,255,244,0,0,0,0,0,2,255,249,0,0,0,0,0,0,0,229,0,0,0,0,0,0,0, + // 0x5927 大 + 39,89,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,106,170,170,175,255,170,170,170,144,0,0,0,31,255,0,0,0,0,0,0,0,47,255,128,0,0,0,0,0,0,63,255,192,0,0,0,0,0,0,63,239,208,0,0,0,0,0,0,191,79,240,0,0,0,0,0,0,255,15,240,0,0,0,0,0,1,254,7,252,0,0,0,0,0,3,253,3,253,0,0,0,0,0,11,252,1,255,0,0,0,0,0,15,244,0,255,192,0,0,0,0,63,240,0,63,208,0,0,0,0,191,192,0,47,244,0,0,0,2,255,128,0,15,252,0,0,0,11,254,0,0,7,255,64,0,0,47,252,0,0,1,255,208,0,1,255,240,0,0,0,127,248,0,11,255,192,0,0,0,31,255,128,191,254,0,0,0,0,7,255,240,191,244,0,0,0,0,0,255,208,47,128,0,0,0,0,0,47,128,8,0,0,0,0,0,0,2,0, + // 0x5929 天 + 41,89,35,33,41,38,2,252,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,106,170,170,171,254,170,170,170,144,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,31,255,255,255,255,255,255,255,128,31,255,255,255,255,255,255,255,128,31,255,255,255,255,255,255,255,128,26,170,170,175,255,170,170,170,64,0,0,0,15,255,0,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,47,255,192,0,0,0,0,0,0,63,255,208,0,0,0,0,0,0,127,223,240,0,0,0,0,0,0,255,75,248,0,0,0,0,0,3,255,3,253,0,0,0,0,0,11,253,2,255,0,0,0,0,0,47,248,0,255,192,0,0,0,0,255,224,0,63,244,0,0,0,7,255,192,0,31,254,0,0,0,127,254,0,0,7,255,208,0,7,255,248,0,0,1,255,253,0,191,255,192,0,0,0,47,255,244,255,253,0,0,0,0,7,255,240,63,208,0,0,0,0,0,191,192,41,0,0,0,0,0,0,6,128, + // 0x592a 太 + 42,89,35,36,68,38,2,252,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,106,170,170,175,255,170,170,170,160,0,0,0,31,255,64,0,0,0,0,0,0,47,255,192,0,0,0,0,0,0,63,239,192,0,0,0,0,0,0,63,143,224,0,0,0,0,0,0,127,79,240,0,0,0,0,0,0,255,7,244,0,0,0,0,0,1,255,3,252,0,0,0,0,0,2,253,2,254,0,0,0,0,0,7,252,1,255,0,0,0,0,0,15,248,0,191,128,0,0,0,0,31,240,0,63,208,0,0,0,0,127,210,0,47,240,0,0,0,0,255,223,192,15,252,0,0,0,3,255,127,240,7,254,0,0,0,15,253,31,252,2,255,128,0,0,127,248,7,255,0,255,240,0,2,255,224,1,255,192,63,253,0,31,255,128,0,127,240,15,255,128,255,253,0,0,47,244,3,255,244,255,240,0,0,11,224,0,191,240,63,64,0,0,3,64,0,31,192,24,0,0,0,0,0,0,2,64, + // 0x5931 失 + 49,89,35,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,11,240,3,248,0,0,0,0,0,15,240,3,248,0,0,0,0,0,31,224,3,248,0,0,0,0,0,47,192,3,248,0,0,0,0,0,63,192,3,248,0,0,0,0,0,191,234,171,254,170,170,164,0,0,255,255,255,255,255,255,248,0,1,255,255,255,255,255,255,248,0,3,255,255,255,255,255,255,248,0,7,248,0,3,248,0,0,0,0,15,240,0,3,248,0,0,0,0,63,224,0,3,248,0,0,0,0,191,192,0,3,248,0,0,0,0,47,128,0,3,248,0,0,0,0,6,0,0,3,244,0,0,0,0,0,0,0,7,244,0,0,0,0,106,170,170,171,250,170,170,170,144,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,47,255,64,0,0,0,0,0,0,63,255,192,0,0,0,0,0,0,191,239,224,0,0,0,0,0,0,255,79,240,0,0,0,0,0,3,255,7,252,0,0,0,0,0,11,253,3,255,0,0,0,0,0,47,248,0,255,192,0,0,0,0,255,224,0,127,240,0,0,0,7,255,192,0,31,254,0,0,0,127,254,0,0,7,255,208,0,7,255,248,0,0,1,255,254,0,191,255,192,0,0,0,47,255,244,255,253,0,0,0,0,7,255,240,63,208,0,0,0,0,0,127,208,24,0,0,0,0,0,0,6,128, + // 0x5934 头 + 52,89,34,36,68,38,2,252,0,0,0,0,10,144,0,0,0,0,0,0,0,15,208,0,0,0,0,11,144,0,15,208,0,0,0,0,31,253,0,15,208,0,0,0,0,31,255,208,15,208,0,0,0,0,1,255,252,15,208,0,0,0,0,0,31,253,15,208,0,0,0,0,0,1,248,15,208,0,0,0,0,0,0,48,31,208,0,0,0,2,208,0,0,31,208,0,0,0,11,253,0,0,31,208,0,0,0,15,255,208,0,31,192,0,0,0,1,255,252,0,31,192,0,0,0,0,31,255,0,47,192,0,0,0,0,1,255,0,47,192,0,0,0,0,0,60,0,63,192,0,0,0,0,0,0,0,63,128,0,0,0,21,85,85,85,127,149,85,85,64,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,1,254,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,244,128,0,0,0,0,0,0,47,242,248,0,0,0,0,0,0,191,199,255,128,0,0,0,0,2,255,65,255,248,0,0,0,0,15,254,0,31,255,64,0,0,0,127,248,0,2,255,224,0,0,7,255,208,0,0,63,253,0,1,191,255,0,0,0,7,255,128,111,255,244,0,0,0,0,255,224,127,255,128,0,0,0,0,47,192,47,244,0,0,0,0,0,7,64,9,0,0,0,0,0,0,0,0, + // 0x597d 好 + 125,89,36,37,77,38,1,251,0,15,144,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,31,192,0,255,255,255,255,208,0,31,192,0,255,255,255,255,244,0,47,128,0,255,255,255,255,240,0,63,128,0,85,85,85,127,208,0,63,64,0,0,0,0,255,128,0,63,0,0,0,0,2,254,0,127,255,255,252,0,0,7,252,0,127,255,255,252,0,0,31,240,0,127,255,255,252,0,0,127,192,0,21,253,86,252,0,2,255,0,0,0,252,2,252,0,2,252,0,0,1,252,2,248,0,2,252,0,0,2,248,3,244,0,2,252,0,0,3,244,3,245,85,87,253,85,84,3,240,3,247,255,255,255,255,254,7,240,7,243,255,255,255,255,254,11,224,11,243,255,255,255,255,254,15,208,15,224,0,2,252,0,0,15,208,15,208,0,2,252,0,0,15,244,47,192,0,2,252,0,0,31,255,63,192,0,2,252,0,0,63,255,255,64,0,2,252,0,0,11,127,255,0,0,2,252,0,0,1,11,255,0,0,2,252,0,0,0,2,255,192,0,2,252,0,0,0,3,255,240,0,2,252,0,0,0,15,255,252,0,2,252,0,0,0,47,227,254,0,2,252,0,0,0,127,192,253,0,2,252,0,0,1,255,64,56,0,2,252,0,0,11,253,0,0,5,87,252,0,0,47,248,0,0,15,255,248,0,0,15,208,0,0,11,255,240,0,0,7,0,0,0,7,255,128,0,0,0,0,0,0,0,0,0,0,0, + // 0x59cb 始 + 203,89,35,36,68,38,2,252,0,62,64,0,0,57,0,0,0,0,63,64,0,0,127,192,0,0,0,127,0,0,0,127,64,0,0,0,127,0,0,0,255,0,0,0,0,190,0,0,0,254,0,0,0,0,254,0,0,1,253,0,0,0,0,253,0,0,2,252,0,144,0,0,252,0,0,3,248,7,240,0,255,255,255,240,7,244,3,248,0,255,255,255,240,11,240,1,253,0,255,255,255,240,15,224,0,255,0,87,245,91,240,31,192,0,63,128,7,240,11,224,47,213,170,191,192,11,240,15,239,255,255,255,255,240,15,224,15,223,255,255,255,255,244,15,208,15,203,255,255,234,151,248,15,192,31,197,80,0,0,2,248,31,192,31,192,0,0,0,1,128,47,128,47,128,0,0,0,0,0,63,64,63,64,0,0,0,0,0,63,64,127,0,127,255,255,255,192,127,224,191,0,127,255,255,255,192,191,253,254,0,127,255,255,255,192,255,255,253,0,127,0,0,47,192,44,191,252,0,127,0,0,47,192,0,31,252,0,127,0,0,47,192,0,15,255,64,127,0,0,47,192,0,31,255,208,127,0,0,47,192,0,63,255,240,127,0,0,47,192,0,255,139,252,127,0,0,47,192,2,255,2,240,127,0,0,47,192,11,252,0,208,127,255,255,255,192,127,244,0,0,127,255,255,255,192,191,192,0,0,127,255,255,255,192,63,0,0,0,127,0,0,47,192,8,0,0,0,127,0,0,26,128, + // 0x5b50 子 + 80,91,34,35,59,38,2,251,0,85,85,85,85,85,85,128,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,240,0,0,0,0,0,0,2,255,192,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,127,244,0,0,0,0,0,0,2,255,208,0,0,0,0,0,0,31,254,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,170,170,170,171,254,170,170,170,160,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,170,171,252,0,0,0,0,0,0,255,255,248,0,0,0,0,0,0,127,255,240,0,0,0,0,0,0,63,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5b58 存 + 88,91,35,36,68,38,1,252,0,0,0,41,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,255,0,0,0,0,0,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,5,85,95,249,85,85,85,85,84,0,0,15,240,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,191,128,0,0,0,4,0,0,1,255,3,255,255,255,255,0,0,3,253,3,255,255,255,255,128,0,11,252,3,255,255,255,255,0,0,47,240,0,0,0,11,252,0,0,127,224,0,0,0,47,224,0,1,255,224,0,0,0,255,128,0,7,255,224,0,0,15,253,0,0,47,255,224,0,0,15,240,0,0,191,239,224,0,0,15,224,0,0,63,143,224,255,255,255,255,255,252,29,15,224,255,255,255,255,255,252,0,15,224,255,255,255,255,255,252,0,15,224,85,85,95,245,85,84,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,85,95,224,0,0,0,15,224,0,127,255,224,0,0,0,15,224,0,63,255,192,0,0,0,15,224,0,63,254,0,0,0, + // 0x5b89 安 + 137,91,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,213,85,85,85,85,85,127,192,63,192,0,0,0,0,0,63,192,63,192,0,63,128,0,0,63,192,63,192,0,127,192,0,0,63,192,63,192,0,255,64,0,0,63,192,21,64,0,255,0,0,0,21,64,0,0,2,253,0,0,0,0,0,85,85,87,253,85,85,85,85,80,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,63,192,0,3,252,0,0,0,0,255,64,0,7,248,0,0,0,1,255,0,0,11,244,0,0,0,3,253,0,0,15,240,0,0,0,7,252,0,0,47,208,0,0,0,15,248,0,0,127,192,0,0,0,31,255,144,0,255,64,0,0,0,63,255,254,67,254,0,0,0,0,191,175,255,255,252,0,0,0,0,11,1,255,255,240,0,0,0,0,0,0,11,255,254,0,0,0,0,0,0,47,255,255,224,0,0,0,0,6,255,250,255,254,0,0,0,6,191,255,192,47,255,224,0,26,255,255,253,0,2,255,253,0,15,255,255,128,0,0,47,254,0,11,255,228,0,0,0,2,248,0,3,148,0,0,0,0,0,96,0, + // 0x5b8c 完 + 140,91,34,36,68,38,2,252,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,213,85,85,85,85,85,127,192,63,128,0,0,0,0,0,63,192,63,128,0,0,0,0,0,63,192,63,128,0,0,0,0,0,63,192,63,131,255,255,255,255,252,63,192,21,67,255,255,255,255,252,21,64,0,3,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,224,255,255,255,255,255,255,255,255,224,255,255,255,255,255,255,255,255,224,85,85,111,229,87,253,85,85,80,0,0,47,208,2,252,0,0,0,0,0,47,192,2,252,0,0,0,0,0,63,192,2,252,0,0,0,0,0,63,128,2,252,0,0,0,0,0,191,64,2,252,0,0,0,0,0,255,0,2,252,0,3,64,0,3,254,0,2,252,0,3,240,0,11,252,0,2,252,0,3,240,0,63,244,0,2,252,0,3,240,2,255,224,0,2,252,0,11,240,191,255,128,0,1,255,255,255,224,255,253,0,0,0,255,255,255,192,127,208,0,0,0,127,255,255,64,57,0,0,0,0,1,85,80,0, + // 0x5b9a 定 + 154,91,35,37,77,38,1,251,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,5,85,85,85,255,85,85,85,80,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,224,0,0,0,0,0,11,240,15,224,0,0,0,0,0,11,240,15,224,0,0,0,0,0,11,240,15,224,0,0,0,0,0,11,240,15,226,255,255,255,255,255,139,240,5,66,255,255,255,255,255,133,80,0,2,255,255,255,255,255,128,0,0,1,85,85,255,85,85,64,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,2,164,0,255,0,0,0,0,0,3,248,0,255,0,0,0,0,0,3,244,0,255,0,0,0,0,0,7,244,0,255,255,255,248,0,0,11,240,0,255,255,255,248,0,0,15,240,0,255,255,255,248,0,0,15,244,0,255,85,85,80,0,0,31,252,0,255,0,0,0,0,0,63,253,0,255,0,0,0,0,0,63,255,0,255,0,0,0,0,0,191,191,192,255,0,0,0,0,0,255,31,244,255,0,0,0,0,3,253,11,255,255,0,0,0,0,11,252,2,255,255,64,0,0,0,47,244,0,191,255,255,255,255,252,127,224,0,11,255,255,255,255,248,47,192,0,0,127,255,255,255,244,11,0,0,0,0,85,85,85,80,0,0,0,0,0,0,0,0,0, + // 0x5ba2 客 + 162,91,35,37,77,38,1,251,0,0,0,0,190,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,208,0,36,0,0,0,11,240,15,208,0,191,128,0,0,11,240,15,208,1,255,0,0,0,11,240,15,208,7,255,255,255,253,11,240,0,0,47,255,255,255,255,0,0,0,0,255,234,170,171,253,0,0,0,7,255,208,0,11,248,0,0,0,127,255,248,0,47,240,0,0,3,255,231,254,0,255,192,0,0,1,255,0,255,215,255,0,0,0,0,180,0,63,255,248,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,127,255,254,64,0,0,0,0,11,255,255,255,249,0,0,0,1,255,255,65,255,255,250,64,1,191,255,248,0,31,255,255,252,127,255,255,64,0,0,191,255,248,63,255,255,255,255,255,255,255,240,31,230,255,255,255,255,255,129,80,4,1,255,255,255,255,255,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,255,255,255,255,255,128,0,0,1,255,255,255,255,255,128,0,0,1,255,255,255,255,255,128,0,0,1,252,0,0,0,63,128,0,0,0,0,0,0,0,0,0,0, + // 0x5bab 宫 + 171,91,32,36,32,38,3,252,0,0,0,27,128,0,0,0,0,0,0,63,192,0,0,0,0,0,0,47,224,0,0,0,0,0,0,15,240,0,0,0,85,85,85,95,249,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,0,0,0,0,0,0,191,254,0,0,0,0,0,0,191,254,0,0,0,0,0,0,191,254,63,255,255,255,255,252,191,190,63,255,255,255,255,252,191,0,63,255,255,255,255,252,0,0,63,64,0,0,2,252,0,0,63,64,0,0,2,252,0,0,63,64,0,0,2,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,63,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,255,255,255,208,3,255,255,255,255,255,255,208,3,255,255,255,255,255,255,208,3,244,0,0,0,0,15,208,3,244,0,0,0,0,15,208,3,244,0,0,0,0,15,208,3,244,0,0,0,0,15,208,3,244,0,0,0,0,15,208,3,255,255,255,255,255,255,208,3,255,255,255,255,255,255,208,3,255,255,255,255,255,255,208,3,244,0,0,0,0,15,208,2,160,0,0,0,0,10,128, + // 0x5bf9 对 + 249,91,35,36,68,38,2,252,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,63,255,255,253,0,0,7,240,0,63,255,255,254,0,0,7,240,0,63,255,255,253,0,0,7,240,0,21,85,85,253,0,0,7,240,0,0,0,1,252,191,255,255,255,244,0,0,2,252,191,255,255,255,244,0,0,3,252,191,255,255,255,244,0,0,3,248,85,85,91,245,80,3,64,3,244,0,0,7,240,0,15,208,7,240,0,0,7,240,0,31,244,11,240,0,0,7,240,0,11,253,15,224,6,0,7,240,0,1,255,95,208,63,64,7,240,0,0,127,255,192,63,192,7,240,0,0,47,255,192,15,224,7,240,0,0,11,255,128,11,240,7,240,0,0,2,255,64,3,248,7,240,0,0,0,255,192,2,252,7,240,0,0,2,255,240,0,253,7,240,0,0,3,255,248,0,253,7,240,0,0,11,251,253,0,160,7,240,0,0,31,242,255,0,0,7,240,0,0,63,208,255,128,0,7,240,0,0,255,128,63,192,0,7,240,0,2,255,0,47,0,0,7,240,0,11,253,0,8,0,0,7,240,0,47,248,0,0,0,0,11,240,0,255,224,0,0,0,63,255,240,0,191,128,0,0,0,47,255,224,0,46,0,0,0,0,31,255,192,0,4,0,0,0,0,10,165,0,0, + // 0x5c06 将 + 6,92,36,36,68,38,1,252,0,2,248,0,0,0,0,29,0,0,2,248,0,0,0,107,255,0,0,2,248,0,5,191,255,255,192,0,2,248,175,255,255,255,249,0,0,2,248,255,255,255,249,0,0,10,2,248,127,254,148,0,0,0,127,2,248,20,0,25,0,3,128,63,130,248,1,0,190,0,7,244,47,210,248,47,64,127,0,15,240,15,242,248,47,128,63,64,47,208,7,242,248,15,192,47,128,63,192,3,250,248,15,224,47,192,255,0,2,255,248,7,240,31,194,253,0,1,251,248,3,244,14,71,248,0,0,130,248,3,244,0,15,240,0,0,2,248,1,64,0,31,208,0,0,2,248,0,0,0,3,244,0,0,2,248,0,0,0,3,244,0,0,2,248,21,85,85,87,249,84,0,2,248,255,255,255,255,255,253,0,2,248,255,255,255,255,255,253,0,7,248,255,255,255,255,255,253,0,63,248,0,0,0,3,244,0,2,255,248,0,112,0,3,244,0,31,255,248,3,252,0,3,244,0,191,251,248,1,254,0,3,244,0,127,210,248,0,191,128,3,244,0,63,2,248,0,63,208,3,244,0,40,2,248,0,15,240,3,244,0,0,2,248,0,11,244,3,244,0,0,2,248,0,3,208,3,244,0,0,2,248,0,1,0,3,244,0,0,2,248,0,0,21,91,244,0,0,2,248,0,0,31,255,240,0,0,2,248,0,0,15,255,240,0,0,2,248,0,0,15,254,64,0, + // 0x5c0f 小 + 15,92,36,36,68,38,1,252,0,0,0,0,85,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,4,0,0,255,0,1,128,0,0,15,240,0,255,0,31,208,0,0,15,240,0,255,0,15,240,0,0,31,240,0,255,0,11,244,0,0,31,224,0,255,0,3,252,0,0,63,208,0,255,0,2,254,0,0,63,192,0,255,0,0,255,0,0,127,128,0,255,0,0,255,64,0,191,64,0,255,0,0,127,192,0,255,0,0,255,0,0,63,208,1,254,0,0,255,0,0,47,224,3,253,0,0,255,0,0,15,240,7,252,0,0,255,0,0,15,248,15,244,0,0,255,0,0,7,252,47,240,0,0,255,0,0,3,252,63,208,0,0,255,0,0,2,253,127,192,0,0,255,0,0,1,254,11,0,0,0,255,0,0,0,254,0,0,0,0,255,0,0,0,208,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,63,255,255,0,0,0,0,0,0,31,255,254,0,0,0,0,0,0,15,255,248,0,0,0,0,0,0,6,170,64,0,0,0,0, + // 0x5c31 就 + 49,92,36,36,68,38,1,252,0,0,190,0,0,0,252,0,0,0,0,191,0,0,0,252,8,0,0,0,191,0,0,0,252,191,0,0,0,191,0,0,0,252,63,192,0,0,191,0,0,0,252,31,224,63,255,255,255,252,0,252,11,240,63,255,255,255,252,0,252,3,248,63,255,255,255,252,0,252,1,248,0,0,0,0,0,0,252,0,128,0,0,0,0,0,0,252,0,0,0,0,0,0,3,255,255,255,253,3,255,255,255,211,255,255,255,253,3,255,255,255,211,255,255,255,253,3,255,255,255,209,86,253,85,84,3,240,0,15,208,1,252,0,0,3,240,0,15,208,2,255,208,0,3,240,0,15,208,2,255,208,0,3,240,0,15,208,3,255,208,0,3,255,255,255,208,3,255,208,0,3,255,255,255,208,3,255,208,0,3,255,255,255,208,7,255,208,0,0,0,127,0,0,11,255,208,0,0,0,127,0,0,15,255,208,0,2,228,127,31,128,15,223,208,0,3,244,127,15,192,31,207,208,0,7,240,127,15,208,63,207,208,0,11,240,127,7,240,127,79,208,16,15,208,127,3,240,255,15,208,61,31,192,127,2,249,254,15,208,62,63,192,127,1,247,252,15,208,62,127,64,127,0,75,248,15,208,62,127,0,127,0,31,240,15,224,126,13,0,191,0,127,208,15,255,253,0,63,255,0,255,128,11,255,252,0,47,253,0,126,0,3,255,244,0,31,228,0,8,0,0,85,64, + // 0x5c4f 屏 + 79,92,35,35,59,38,1,251,0,191,255,255,255,255,255,255,128,0,191,255,255,255,255,255,255,128,0,191,255,255,255,255,255,255,128,0,191,0,0,0,0,0,63,128,0,191,0,0,0,0,0,63,128,0,191,0,0,0,0,0,63,128,0,191,0,0,0,0,0,63,128,0,191,255,255,255,255,255,255,128,0,191,255,255,255,255,255,255,128,0,191,255,255,255,255,255,255,128,0,191,0,111,0,0,15,224,0,0,191,0,63,128,0,31,224,0,0,191,0,31,192,0,63,192,0,0,191,0,15,224,0,127,0,0,0,255,63,255,255,255,255,255,240,0,254,63,255,255,255,255,255,240,0,254,63,255,255,255,255,255,240,0,254,0,11,240,0,190,0,0,0,254,0,11,240,0,190,0,0,0,253,0,11,240,0,190,0,0,0,253,0,11,240,0,190,0,0,1,252,0,11,240,0,190,0,0,1,252,255,255,255,255,255,255,252,2,252,255,255,255,255,255,255,252,3,248,255,255,255,255,255,255,252,3,244,0,31,208,0,191,0,0,7,240,0,63,192,0,190,0,0,11,240,0,127,128,0,190,0,0,15,224,1,255,0,0,190,0,0,31,208,7,254,0,0,190,0,0,63,192,47,248,0,0,190,0,0,127,128,255,224,0,0,190,0,0,47,0,127,128,0,0,190,0,0,6,0,24,0,0,0,190,0,0,0,0,0,0,0,0,0,0,0, + // 0x5de5 工 + 229,93,34,29,5,38,2,255,10,170,170,170,170,170,170,170,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,170,170,170,171,254,170,170,170,160,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x5dee 差 + 238,93,35,36,68,38,1,252,0,0,8,0,0,0,164,0,0,0,0,191,0,0,0,255,0,0,0,0,127,128,0,1,254,0,0,0,0,47,192,0,3,252,0,0,0,0,15,224,0,11,240,0,0,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,63,255,255,255,255,255,253,0,0,63,255,255,255,255,255,253,0,0,63,255,255,255,255,255,253,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,0,0,191,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,253,255,255,255,255,253,0,0,3,252,255,255,255,255,253,0,0,7,248,255,255,255,255,253,0,0,15,240,0,2,252,0,0,0,0,31,224,0,2,252,0,0,0,0,63,208,0,2,252,0,0,0,0,191,192,0,2,252,0,0,0,1,255,0,0,2,252,0,0,0,7,253,0,0,2,252,0,0,0,47,248,191,255,255,255,255,255,240,127,240,191,255,255,255,255,255,240,31,192,191,255,255,255,255,255,240,2,0,0,0,0,0,0,0,0, + // 0x5df2 已 + 242,93,33,33,41,38,3,253,21,85,85,85,85,85,85,0,0,127,255,255,255,255,255,255,64,0,127,255,255,255,255,255,255,64,0,127,255,255,255,255,255,255,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,5,80,0,0,0,0,127,64,0,11,240,0,0,0,0,127,64,0,11,240,0,0,0,0,127,64,0,11,240,0,0,0,0,127,64,0,11,240,0,0,0,0,127,64,0,11,240,0,0,0,0,127,64,0,11,245,85,85,85,85,191,64,0,11,255,255,255,255,255,255,64,0,11,255,255,255,255,255,255,64,0,11,255,255,255,255,255,255,64,0,11,240,0,0,0,0,127,64,0,11,240,0,0,0,0,127,64,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,20,0,11,240,0,0,0,0,0,47,128,11,240,0,0,0,0,0,47,192,11,240,0,0,0,0,0,63,192,11,240,0,0,0,0,0,63,192,11,240,0,0,0,0,0,127,128,7,248,0,0,0,0,0,255,64,3,255,165,85,85,85,107,255,0,3,255,255,255,255,255,255,253,0,0,255,255,255,255,255,255,244,0,0,27,255,255,255,255,255,128,0, + // 0x5e73 平 + 115,94,34,34,50,38,2,252,5,85,85,85,85,85,85,85,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,4,0,0,0,47,0,3,252,0,15,208,0,0,63,128,3,252,0,47,208,0,0,47,192,3,252,0,63,192,0,0,31,208,3,252,0,127,128,0,0,15,240,3,252,0,191,0,0,0,7,240,3,252,0,254,0,0,0,3,248,3,252,2,252,0,0,0,3,252,3,252,3,248,0,0,0,2,228,3,252,3,240,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,170,170,170,171,254,170,170,170,160,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,248,0,0,0,0, + // 0x5e76 并 + 118,94,34,37,77,38,2,251,0,0,160,0,0,0,228,0,0,0,11,244,0,0,1,255,0,0,0,3,252,0,0,2,254,0,0,0,1,254,0,0,3,252,0,0,0,0,255,0,0,15,244,0,0,0,0,127,128,0,31,224,0,0,0,0,63,192,0,63,192,0,0,0,0,30,0,0,11,0,0,0,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,5,85,191,85,85,95,229,85,64,0,0,127,0,0,15,208,0,0,0,0,127,0,0,15,208,0,0,0,0,127,0,0,15,208,0,0,0,0,127,0,0,15,208,0,0,0,0,127,0,0,15,208,0,0,0,0,127,0,0,15,208,0,0,0,0,127,0,0,15,208,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,255,85,85,111,229,85,80,0,0,254,0,0,15,208,0,0,0,0,254,0,0,15,208,0,0,0,2,253,0,0,15,208,0,0,0,3,252,0,0,15,208,0,0,0,11,248,0,0,15,208,0,0,0,15,240,0,0,15,208,0,0,0,63,224,0,0,15,208,0,0,0,255,192,0,0,15,208,0,0,3,255,64,0,0,15,208,0,0,31,253,0,0,0,15,208,0,0,191,244,0,0,0,15,208,0,0,63,208,0,0,0,15,208,0,0,14,0,0,0,0,15,208,0,0,0,0,0,0,0,0,0,0,0, + // 0x5e8a 床 + 138,94,36,36,68,38,1,252,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,1,255,255,255,255,255,255,255,252,1,255,255,255,255,255,255,255,252,1,255,255,255,255,255,255,255,252,1,253,85,85,85,85,85,85,84,1,252,0,0,0,84,0,0,0,1,252,0,0,1,252,0,0,0,1,252,0,0,1,252,0,0,0,1,252,0,0,1,252,0,0,0,1,252,0,0,1,252,0,0,0,1,252,0,0,1,252,0,0,0,1,252,63,255,255,255,255,255,252,1,252,63,255,255,255,255,255,252,1,252,63,255,255,255,255,255,252,1,252,21,85,95,255,149,85,84,2,252,0,0,47,255,192,0,0,2,252,0,0,127,255,240,0,0,2,252,0,0,255,255,244,0,0,3,248,0,2,255,255,253,0,0,3,248,0,7,249,252,255,0,0,3,248,0,15,241,252,127,192,0,3,244,0,63,209,252,47,240,0,7,240,0,255,129,252,11,253,0,11,240,3,255,1,252,3,255,64,15,240,31,252,1,252,0,255,224,15,224,191,240,1,252,0,63,253,31,210,255,192,1,252,0,15,253,63,192,254,0,1,252,0,2,244,63,128,56,0,1,252,0,0,96,191,0,0,0,1,252,0,0,0,47,0,0,0,1,252,0,0,0,5,0,0,0,1,252,0,0,0, + // 0x5e94 应 + 148,94,35,37,77,38,1,251,0,0,0,0,47,64,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,15,240,0,0,0,1,255,255,255,255,255,255,255,252,1,255,255,255,255,255,255,255,252,1,255,255,255,255,255,255,255,252,1,253,85,85,85,85,85,85,84,1,252,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,0,47,64,0,47,64,1,252,0,0,63,128,0,63,192,1,252,31,64,47,192,0,63,192,1,252,47,192,31,192,0,127,64,1,252,31,192,15,208,0,191,0,1,252,15,224,15,240,0,255,0,1,252,11,240,11,240,1,253,0,2,252,7,244,7,244,2,252,0,2,252,3,248,3,248,3,248,0,2,252,2,252,3,248,7,244,0,2,252,1,252,2,252,15,240,0,3,252,0,254,1,252,15,208,0,3,248,0,255,1,253,47,192,0,3,248,0,191,0,144,63,128,0,3,248,0,127,0,0,191,0,0,7,244,0,52,0,0,254,0,0,7,240,0,0,0,2,252,0,0,11,240,0,0,0,3,248,0,0,15,224,0,0,0,11,240,0,0,15,225,85,85,85,95,229,85,84,47,211,255,255,255,255,255,255,252,63,195,255,255,255,255,255,255,252,127,131,255,255,255,255,255,255,252,47,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5e9f 废 + 159,94,35,37,77,38,1,251,0,0,0,0,43,128,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,47,224,0,0,0,0,85,85,85,95,245,85,85,84,2,255,255,255,255,255,255,255,252,2,255,255,255,255,255,255,255,252,2,255,255,255,255,255,255,255,252,2,252,0,0,1,0,0,0,0,2,252,1,232,3,244,2,0,0,2,252,3,252,7,240,31,192,0,2,252,3,248,11,240,15,240,0,2,252,7,244,15,240,7,252,0,2,252,15,240,15,224,1,254,0,2,252,31,224,31,208,0,180,0,2,252,63,255,255,255,255,255,240,2,252,63,255,255,255,255,255,240,2,252,47,255,255,255,255,255,240,2,252,21,0,191,0,0,0,0,2,252,0,0,254,0,0,0,0,3,252,0,1,253,0,0,0,0,3,248,0,3,252,0,0,0,0,3,248,0,7,255,255,255,248,0,3,248,0,15,255,255,255,253,0,3,244,0,47,255,255,255,252,0,3,244,0,127,240,0,15,244,0,7,244,0,255,252,0,63,224,0,11,240,3,254,255,64,191,192,0,11,240,15,248,63,211,255,0,0,15,224,127,240,15,255,252,0,0,15,226,255,192,3,255,240,0,0,31,223,255,0,7,255,248,0,0,47,199,248,0,191,255,255,208,0,63,129,208,47,255,230,255,255,144,127,64,2,255,254,0,47,255,248,47,0,0,255,224,0,1,191,240,6,0,0,121,0,0,0,6,192,0,0,0,0,0,0,0,0,0, + // 0x5ea6 度 + 166,94,35,36,68,38,1,252,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,63,192,0,0,0,1,255,255,255,255,255,255,255,252,1,255,255,255,255,255,255,255,252,1,255,255,255,255,255,255,255,252,1,252,0,0,0,0,0,0,0,1,252,0,31,192,0,47,128,0,1,252,0,31,192,0,47,128,0,1,252,0,31,192,0,47,128,0,1,252,255,255,255,255,255,255,248,1,252,255,255,255,255,255,255,248,1,252,255,255,255,255,255,255,244,1,252,0,31,192,0,47,128,0,1,252,0,31,192,0,47,128,0,1,252,0,31,192,0,47,128,0,1,252,0,31,234,170,191,128,0,1,252,0,31,255,255,255,128,0,2,252,0,31,255,255,255,128,0,2,252,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,3,248,127,255,255,255,255,248,0,3,244,191,255,255,255,255,255,0,3,244,191,255,255,255,255,253,0,3,244,0,47,64,0,7,252,0,7,240,0,47,224,0,31,240,0,11,240,0,15,248,0,191,192,0,15,224,0,3,255,71,255,0,0,15,208,0,0,191,255,248,0,0,31,192,0,0,47,255,224,0,0,63,192,0,6,255,255,254,64,0,63,64,91,255,255,255,255,254,148,191,2,255,255,249,1,255,255,252,46,0,255,254,64,0,11,255,244,5,0,185,0,0,0,0,6,224, + // 0x5f00 开 + 0,95,34,35,59,38,2,251,5,85,85,85,85,85,85,85,64,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,0,0,63,64,0,15,240,0,0,0,0,63,64,0,15,240,0,0,0,0,63,64,0,15,240,0,0,0,0,63,64,0,15,240,0,0,0,0,63,64,0,15,240,0,0,0,0,63,64,0,15,240,0,0,0,0,63,64,0,15,240,0,0,0,0,63,64,0,15,240,0,0,0,0,63,64,0,15,240,0,0,0,0,63,64,0,15,240,0,0,85,85,127,149,85,95,245,85,80,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,191,0,0,15,240,0,0,0,0,191,0,0,15,240,0,0,0,0,255,0,0,15,240,0,0,0,0,254,0,0,15,240,0,0,0,2,253,0,0,15,240,0,0,0,3,252,0,0,15,240,0,0,0,7,252,0,0,15,240,0,0,0,15,244,0,0,15,240,0,0,0,47,240,0,0,15,240,0,0,0,127,208,0,0,15,240,0,0,1,255,128,0,0,15,240,0,0,7,255,0,0,0,15,240,0,0,47,252,0,0,0,15,240,0,0,191,240,0,0,0,15,240,0,0,47,192,0,0,0,15,240,0,0,10,0,0,0,0,15,240,0,0,0,0,0,0,0,0,0,0,0, + // 0x5f03 弃 + 3,95,35,37,77,38,1,251,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,63,255,255,255,255,255,255,255,248,63,255,255,255,255,255,255,255,248,63,255,255,255,255,255,255,255,248,0,0,0,255,0,0,0,0,0,0,0,2,253,0,1,224,0,0,0,0,3,252,0,11,253,0,0,0,0,11,240,0,2,255,128,0,0,0,31,208,0,0,127,240,0,5,85,127,234,171,255,255,253,0,15,255,255,255,255,255,255,255,64,11,255,255,255,255,255,255,255,224,11,255,250,170,149,84,0,31,244,0,0,0,0,0,1,80,7,208,0,0,31,192,0,3,244,1,0,0,0,31,192,0,3,244,0,0,0,0,31,192,0,3,244,0,0,0,0,31,192,0,3,244,0,0,0,0,31,192,0,3,244,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,127,128,0,7,244,0,0,0,0,127,64,0,3,244,0,0,0,0,255,0,0,3,244,0,0,0,2,254,0,0,3,244,0,0,0,7,252,0,0,3,244,0,0,0,31,248,0,0,3,244,0,0,0,255,224,0,0,3,244,0,0,27,255,128,0,0,3,244,0,0,127,253,0,0,0,3,244,0,0,31,224,0,0,0,3,244,0,0,10,0,0,0,0,3,244,0,0,0,0,0,0,0,0,0,0,0, + // 0x5f0f 式 + 15,95,35,36,68,38,2,252,0,0,0,0,2,168,1,0,0,0,0,0,0,3,252,15,128,0,0,0,0,0,3,252,47,240,0,0,0,0,0,3,252,11,253,0,0,0,0,0,3,252,1,255,0,0,0,0,0,3,252,0,126,0,0,0,0,0,3,252,0,24,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,85,85,86,254,85,85,80,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,31,255,255,255,240,255,0,0,0,31,255,255,255,240,255,0,0,0,31,255,255,255,240,191,0,0,0,5,85,254,85,80,191,0,0,0,0,0,253,0,0,127,64,0,0,0,0,253,0,0,63,128,0,0,0,0,253,0,0,63,192,0,0,0,0,253,0,0,63,192,0,0,0,0,253,0,0,47,192,0,0,0,0,253,0,0,31,208,1,0,0,0,253,0,0,15,240,2,208,0,0,253,0,4,15,240,2,248,0,0,253,22,252,7,248,2,248,0,0,255,255,252,3,252,3,244,1,111,255,255,252,2,254,3,244,127,255,255,254,80,0,255,71,240,127,255,254,64,0,0,191,255,240,63,250,64,0,0,0,63,255,208,41,0,0,0,0,0,11,255,192,0,0,0,0,0,0,1,254,0, + // 0x5f15 引 + 21,95,30,37,40,38,3,251,0,0,0,0,0,0,5,64,21,85,85,85,0,0,31,208,63,255,255,255,0,0,31,208,63,255,255,255,0,0,31,208,63,255,255,255,0,0,31,208,0,0,0,127,0,0,31,208,0,0,0,127,0,0,31,208,0,0,0,127,0,0,31,208,0,0,0,127,0,0,31,208,0,0,0,127,0,0,31,208,5,85,85,127,0,0,31,208,15,255,255,255,0,0,31,208,31,255,255,255,0,0,31,208,47,255,255,255,0,0,31,208,47,192,0,0,0,0,31,208,63,128,0,0,0,0,31,208,63,128,0,0,0,0,31,208,63,64,0,0,0,0,31,208,127,85,85,85,0,0,31,208,191,255,255,255,64,0,31,208,191,255,255,255,64,0,31,208,255,255,255,255,0,0,31,208,253,0,0,127,0,0,31,208,109,0,0,191,0,0,31,208,0,0,0,191,0,0,31,208,0,0,0,255,0,0,31,208,0,0,0,255,0,0,31,208,0,0,0,254,0,0,31,208,0,0,0,254,0,0,31,208,0,0,1,253,0,0,31,208,0,0,2,252,0,0,31,208,0,0,3,252,0,0,31,208,2,170,175,248,0,0,31,208,1,255,255,244,0,0,31,208,0,255,255,224,0,0,31,208,0,191,254,64,0,0,31,208,0,0,0,0,0,0,0,0, + // 0x5f39 弹 + 57,95,35,36,68,38,2,252,0,0,0,0,16,0,0,144,0,0,0,0,1,248,0,2,253,0,191,255,252,1,253,0,3,252,0,191,255,252,0,255,0,7,244,0,191,255,252,0,63,128,15,240,0,0,1,252,0,47,192,31,192,0,0,0,252,0,15,192,63,128,0,0,0,252,0,5,0,191,0,0,0,0,252,31,255,255,255,255,128,0,0,252,31,255,255,255,255,192,63,255,252,31,255,255,255,255,192,63,255,252,31,192,47,192,31,192,63,255,252,31,192,47,192,31,192,63,0,0,31,192,47,192,31,192,63,0,0,31,234,191,234,191,192,63,0,0,31,255,255,255,255,192,63,0,0,31,255,255,255,255,192,126,0,0,31,192,47,192,31,192,126,0,0,31,192,47,192,31,192,127,255,252,31,192,47,192,31,192,127,255,252,31,255,255,255,255,192,127,255,252,31,255,255,255,255,192,0,1,252,31,255,255,255,255,192,0,1,252,0,0,47,192,0,0,0,1,252,0,0,47,192,0,0,0,1,252,0,0,47,192,0,0,0,2,249,255,255,255,255,255,244,0,2,249,255,255,255,255,255,244,0,3,249,255,255,255,255,255,244,0,3,244,0,0,47,192,0,0,0,3,244,0,0,47,192,0,0,0,11,240,0,0,47,192,0,0,63,255,240,0,0,47,192,0,0,31,255,208,0,0,47,192,0,0,15,255,64,0,0,47,192,0,0,5,80,0,0,0,47,192,0,0, + // 0x5f52 归 + 82,95,32,37,40,38,3,251,0,0,168,0,0,0,0,0,0,0,252,0,0,0,0,0,0,0,252,0,0,0,0,0,0,0,252,5,85,85,85,85,0,0,252,15,255,255,255,254,190,0,252,15,255,255,255,254,190,0,252,15,255,255,255,254,190,0,252,0,0,0,0,254,190,0,252,0,0,0,0,254,190,0,252,0,0,0,0,254,190,0,252,0,0,0,0,254,190,0,252,0,0,0,0,254,190,0,252,0,0,0,0,254,190,0,252,0,0,0,0,254,190,0,252,0,0,0,0,254,190,1,252,0,0,0,0,254,190,1,252,3,255,255,255,254,190,1,252,3,255,255,255,254,190,1,252,3,255,255,255,254,190,1,252,1,85,85,85,254,190,1,252,0,0,0,0,254,190,2,252,0,0,0,0,254,190,3,252,0,0,0,0,254,190,3,248,0,0,0,0,254,0,3,248,0,0,0,0,254,0,7,244,0,0,0,0,254,0,15,240,0,0,0,0,254,0,15,224,0,0,0,0,254,0,47,208,0,0,0,0,254,0,127,192,63,255,255,255,254,0,255,64,63,255,255,255,254,3,255,0,63,255,255,255,254,15,252,0,21,85,85,85,254,47,244,0,0,0,0,0,254,11,224,0,0,0,0,0,254,2,64,0,0,0,0,0,84,0,0,0,0,0,0,0,0, + // 0x5f84 径 + 132,95,36,36,68,38,1,252,0,0,144,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,7,252,31,255,255,255,255,128,0,15,244,31,255,255,255,255,208,0,63,224,31,255,255,255,255,192,1,255,128,0,108,0,0,127,64,7,254,0,0,255,0,0,255,0,47,248,0,0,63,128,3,252,0,127,208,45,0,47,208,11,248,0,47,64,127,192,15,244,47,240,0,12,0,255,0,3,253,191,192,0,0,2,254,0,0,255,255,0,0,0,11,252,0,0,127,252,0,0,0,31,240,0,0,191,254,0,0,0,127,208,0,31,255,255,224,0,1,255,208,1,255,253,127,255,64,11,255,208,127,255,208,11,255,254,47,255,208,255,253,0,0,191,253,255,239,208,191,128,10,144,7,248,127,143,208,36,0,15,208,0,16,61,15,208,0,0,15,208,0,0,4,15,208,0,0,15,208,0,0,0,15,208,0,0,15,208,0,0,0,15,208,15,255,255,255,255,208,0,15,208,15,255,255,255,255,208,0,15,208,15,255,255,255,255,208,0,15,208,0,0,15,208,0,0,0,15,208,0,0,15,208,0,0,0,15,208,0,0,15,208,0,0,0,15,208,0,0,15,208,0,0,0,15,208,0,0,15,208,0,0,0,15,208,0,0,15,224,0,0,0,15,209,255,255,255,255,255,253,0,15,209,255,255,255,255,255,253,0,15,209,255,255,255,255,255,253,0,15,208,0,0,0,0,0,0, + // 0x5f85 待 + 133,95,36,36,68,38,1,252,0,0,144,0,0,10,128,0,0,0,1,253,0,0,31,192,0,0,0,3,252,0,0,31,192,0,0,0,15,244,0,0,31,192,0,0,0,63,224,0,0,31,192,0,0,0,255,128,31,255,255,255,255,224,7,255,0,31,255,255,255,255,224,47,252,0,31,255,255,255,255,224,63,224,0,0,0,31,208,0,0,31,128,56,0,0,31,192,0,0,13,0,255,0,0,31,192,0,0,0,1,253,0,0,31,192,0,0,0,3,252,0,0,31,208,0,0,0,15,241,255,255,255,255,255,253,0,47,225,255,255,255,255,255,253,0,191,209,255,255,255,255,255,253,2,255,192,0,0,0,3,244,0,11,255,192,0,0,0,3,244,0,63,255,192,0,0,0,3,244,0,191,239,192,0,0,0,7,248,0,63,79,192,255,255,255,255,255,252,45,15,192,255,255,255,255,255,252,4,15,192,255,255,255,255,255,252,0,15,192,0,0,0,3,244,0,0,15,192,1,240,0,3,244,0,0,15,192,7,248,0,3,244,0,0,15,192,2,253,0,3,244,0,0,15,192,0,255,0,3,244,0,0,15,192,0,127,192,3,244,0,0,15,192,0,47,208,3,244,0,0,15,192,0,15,208,3,244,0,0,15,192,0,10,0,3,244,0,0,15,192,0,0,5,87,244,0,0,15,192,0,0,15,255,244,0,0,15,192,0,0,15,255,240,0,0,15,192,0,0,11,254,64,0, + // 0x5faa 循 + 170,95,36,36,68,38,1,252,0,1,144,0,0,0,0,0,0,0,3,252,0,0,0,1,191,0,0,11,244,0,0,90,255,255,192,0,47,224,62,191,255,255,254,64,0,191,128,63,255,255,254,64,0,2,255,0,63,254,148,253,0,0,11,252,0,63,0,0,253,0,0,63,240,0,63,0,0,253,0,0,127,192,96,63,0,0,253,0,0,46,0,254,63,255,255,255,255,253,4,2,252,63,255,255,255,255,253,0,7,248,63,255,255,255,255,253,0,15,240,63,0,0,252,0,0,0,47,208,63,0,0,252,0,0,0,191,192,63,0,0,252,0,0,1,255,192,63,0,1,252,0,0,7,255,192,63,15,255,255,255,240,31,255,192,63,15,255,255,255,240,191,255,192,63,15,255,255,255,240,191,159,192,63,15,192,0,11,240,62,31,192,127,15,192,0,11,240,24,31,192,127,15,229,85,91,240,0,31,192,127,15,255,255,255,240,0,31,192,190,15,255,255,255,240,0,31,192,190,15,192,0,11,240,0,31,192,254,15,192,0,11,240,0,31,192,253,15,229,85,91,240,0,31,192,252,15,255,255,255,240,0,31,193,252,15,255,255,255,240,0,31,194,248,15,192,0,11,240,0,31,195,244,15,192,0,11,240,0,31,199,240,15,192,0,11,240,0,31,207,240,15,255,255,255,240,0,31,207,208,15,255,255,255,240,0,31,194,192,15,229,85,95,240,0,31,192,64,15,192,0,6,160, + // 0x5fae 微 + 174,95,36,36,68,38,1,252,0,9,0,3,208,0,26,64,0,0,31,208,3,208,0,31,192,0,0,63,192,3,208,0,47,128,0,0,255,69,67,208,80,63,64,0,2,254,15,131,208,244,63,64,0,7,252,15,131,208,244,63,0,0,31,240,15,131,208,244,127,0,0,127,192,15,131,208,244,190,0,0,127,66,15,131,208,244,255,255,253,61,7,255,131,208,244,255,255,253,4,15,239,131,208,245,255,255,253,0,47,207,255,255,247,248,7,240,0,63,143,255,255,251,252,7,224,0,255,11,255,255,255,252,11,224,2,254,0,0,0,15,252,11,208,7,254,0,0,0,63,253,15,192,15,254,0,0,0,47,126,15,192,63,254,31,255,255,254,63,15,192,255,254,31,255,255,248,47,31,128,190,190,31,255,255,248,31,111,64,60,126,0,252,31,128,31,191,0,16,126,0,252,31,128,15,255,0,0,126,0,252,31,128,15,254,0,0,126,0,252,31,128,7,253,0,0,126,0,248,31,128,3,252,0,0,126,1,248,31,128,3,248,0,0,126,2,244,31,138,7,248,0,0,126,3,244,31,255,15,252,0,0,126,3,240,127,255,47,255,0,0,126,11,224,191,244,127,191,64,0,126,15,208,126,0,255,47,208,0,126,47,192,16,3,252,15,244,0,126,63,64,0,31,244,7,253,0,126,30,0,0,63,208,2,254,0,126,8,0,0,31,0,0,184,0,126,0,0,0,4,0,0,16, + // 0x5fc3 心 + 195,95,36,36,68,38,1,252,0,0,0,32,0,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,1,255,255,64,0,0,0,0,0,0,11,255,244,0,0,0,0,0,0,0,191,254,0,0,0,0,0,0,0,11,255,208,0,0,0,0,0,0,1,255,208,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,2,224,0,0,248,7,240,0,0,15,244,0,0,253,7,240,0,0,7,252,0,1,252,7,240,0,0,2,254,0,1,252,7,240,0,0,0,255,0,2,252,7,240,0,0,0,127,192,3,252,7,240,0,0,0,63,208,3,248,7,240,0,0,0,31,240,7,244,7,240,0,0,0,15,240,11,240,7,240,0,0,0,11,248,15,240,7,240,0,0,0,3,252,31,224,7,240,0,0,16,2,253,63,192,7,240,0,0,46,1,254,127,192,7,240,0,0,47,128,255,255,64,7,240,0,0,63,128,244,47,0,7,240,0,0,63,64,0,0,0,7,240,0,0,63,64,0,0,0,7,240,0,0,127,0,0,0,0,7,248,0,0,255,0,0,0,0,3,255,255,255,254,0,0,0,0,2,255,255,255,252,0,0,0,0,0,191,255,255,240,0,0,0,0,0,0,0,0,0,0,0, + // 0x5ffd 忽 + 253,95,35,36,68,38,2,252,0,0,57,0,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,7,255,255,255,255,255,253,0,0,15,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,255,128,191,64,191,2,252,0,3,254,0,255,0,254,1,252,0,15,252,3,252,2,252,2,252,0,127,240,7,248,3,248,2,252,0,191,192,31,240,11,240,2,252,0,47,0,127,192,31,224,3,252,0,4,1,255,64,63,192,3,248,0,0,7,253,0,191,64,3,248,0,0,47,244,1,254,0,3,244,0,0,255,208,7,252,0,7,244,0,11,255,64,31,240,0,11,240,0,11,252,0,127,208,0,31,240,0,2,224,3,255,64,63,255,224,0,0,64,31,253,0,47,255,192,0,0,0,15,240,0,47,254,0,0,0,0,3,199,208,0,0,0,0,0,0,0,31,252,0,0,0,0,0,16,5,71,255,64,7,0,0,0,189,31,192,191,224,63,192,0,0,253,31,192,31,208,31,240,0,2,252,31,192,3,64,7,252,0,3,248,31,192,0,2,66,255,0,11,244,31,192,0,2,244,191,128,31,240,31,192,0,3,244,63,208,127,192,31,208,0,7,244,31,240,255,64,31,255,255,255,240,11,244,61,0,15,255,255,255,224,3,128,4,0,2,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0, + // 0x6027 性 + 39,96,35,36,68,38,1,252,0,47,192,0,0,7,224,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,253,11,240,0,0,0,47,192,1,253,11,240,0,0,0,47,192,1,252,11,240,0,0,0,47,192,2,252,11,240,0,0,0,47,196,3,248,11,240,0,0,9,47,254,3,244,11,240,0,0,15,111,255,7,255,255,255,255,240,31,111,223,139,255,255,255,255,240,31,111,207,207,255,255,255,255,240,47,47,203,239,229,95,245,85,80,47,47,199,255,192,11,240,0,0,63,47,194,127,128,11,240,0,0,62,47,192,191,64,11,240,0,0,125,47,192,255,0,11,240,0,0,189,47,192,29,0,11,240,0,0,188,47,192,0,0,11,240,0,0,4,47,192,0,0,11,240,0,0,0,47,192,7,255,255,255,255,208,0,47,192,7,255,255,255,255,208,0,47,192,7,255,255,255,255,208,0,47,192,1,85,95,245,85,64,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,255,255,255,255,255,252,0,47,192,255,255,255,255,255,252,0,47,192,255,255,255,255,255,252,0,47,192,85,85,85,85,85,84,0,42,128,0,0,0,0,0,0, + // 0x603b 总 + 59,96,34,36,68,38,2,252,0,0,24,0,0,2,64,0,0,0,0,253,0,0,3,248,0,0,0,0,255,0,0,11,248,0,0,0,0,63,192,0,15,240,0,0,0,0,47,208,0,47,208,0,0,0,0,15,240,0,63,192,0,0,0,0,11,244,0,191,64,0,0,0,21,87,213,85,255,85,64,0,0,63,255,255,255,255,255,208,0,0,63,255,255,255,255,255,208,0,0,63,255,255,255,255,255,208,0,0,63,128,0,0,0,47,208,0,0,63,128,0,0,0,47,208,0,0,63,128,0,0,0,47,208,0,0,63,128,0,0,0,47,208,0,0,63,128,0,0,0,47,208,0,0,63,128,0,0,0,47,208,0,0,63,255,255,255,255,255,208,0,0,63,255,255,255,255,255,208,0,0,63,255,255,255,255,255,208,0,0,21,85,85,213,85,85,64,0,0,0,0,7,224,0,0,0,0,0,0,0,15,252,0,0,0,0,1,0,127,66,255,64,1,240,0,7,240,127,64,191,208,7,248,0,11,240,127,64,47,244,2,253,0,15,224,127,64,11,248,0,255,0,15,208,127,64,2,208,0,127,128,47,192,127,64,0,64,16,47,208,63,192,127,64,0,0,126,15,240,127,64,127,64,0,0,191,7,240,255,0,127,128,0,0,255,3,224,125,0,63,255,255,255,253,1,64,4,0,47,255,255,255,252,0,0,0,0,11,255,255,255,224,0,0,0,0,0,0,0,0,0,0,0, + // 0x6062 恢 + 98,96,36,36,68,38,1,252,0,47,128,11,208,0,0,0,0,0,47,128,11,208,0,0,0,0,0,47,128,11,208,0,0,0,0,0,47,128,11,208,0,0,0,0,0,47,130,255,255,255,255,255,253,0,47,130,255,255,255,255,255,253,0,47,150,255,255,255,255,255,253,5,47,253,95,229,85,85,85,84,15,47,189,11,208,0,105,0,0,15,47,175,11,208,0,190,0,0,31,47,159,11,208,0,190,0,0,31,47,143,139,208,0,190,0,0,31,47,139,203,208,0,190,0,80,47,47,135,203,211,208,190,0,252,62,47,129,15,211,224,190,1,248,61,47,128,15,211,224,190,2,244,188,47,128,15,211,208,190,3,240,184,47,128,15,199,208,190,7,224,0,47,128,15,203,192,190,11,192,0,47,128,15,207,192,190,15,192,0,47,128,15,207,128,255,31,64,0,47,128,31,223,0,255,27,0,0,47,128,31,129,0,255,0,0,0,47,128,47,128,2,255,128,0,0,47,128,63,64,3,255,192,0,0,47,128,63,64,7,235,208,0,0,47,128,63,0,15,215,240,0,0,47,128,191,0,47,195,244,0,0,47,128,254,0,127,65,252,0,0,47,129,252,0,255,0,255,0,0,47,130,252,3,252,0,127,192,0,47,131,244,31,248,0,47,240,0,47,139,240,191,224,0,15,253,0,47,143,225,255,128,0,3,254,0,47,135,192,190,0,0,0,252,0,47,128,64,32,0,0,0,32, + // 0x606f 息 + 111,96,36,36,68,38,1,252,0,0,0,0,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,2,253,0,0,0,0,0,7,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,240,0,0,0,11,240,0,0,11,240,0,0,0,11,240,0,0,11,250,170,170,170,175,240,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,240,0,0,0,11,240,0,0,11,240,0,0,0,11,240,0,0,11,240,0,0,0,11,240,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,250,170,170,170,175,240,0,0,11,240,0,0,0,11,240,0,0,11,240,0,0,0,11,240,0,0,11,250,170,170,170,175,240,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,0,0,0,144,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,7,254,0,0,0,0,0,120,5,81,255,128,1,240,0,0,191,15,224,63,208,7,252,0,0,254,15,224,15,240,3,255,0,2,252,15,224,7,224,0,255,128,3,252,15,224,2,64,64,63,224,11,244,15,224,0,0,248,15,244,31,240,15,224,0,0,252,7,252,127,208,11,244,0,2,252,2,253,47,128,11,255,255,255,248,0,252,6,0,3,255,255,255,240,0,144,0,0,0,191,255,255,128,0,0, + // 0x611f 感 + 31,97,36,36,68,38,1,252,0,0,0,0,1,248,14,64,0,0,0,0,0,1,252,63,244,0,0,0,0,0,1,252,27,254,0,0,0,0,0,1,252,1,252,0,0,255,255,255,255,255,255,255,248,0,255,255,255,255,255,255,255,248,0,255,255,255,255,255,255,255,244,0,252,0,0,0,190,0,0,0,0,252,0,0,0,127,0,80,0,0,252,255,255,254,63,0,253,0,0,252,255,255,254,63,66,252,0,1,252,85,85,84,47,131,248,0,1,252,0,0,0,31,199,240,0,1,252,0,0,0,15,223,240,0,2,248,127,255,252,11,255,192,0,2,248,127,255,252,7,255,128,0,3,244,126,85,252,3,255,0,16,3,240,125,0,252,3,253,0,120,7,240,125,0,252,15,255,0,125,15,224,126,85,252,63,255,128,189,31,208,127,255,253,255,239,240,252,63,192,127,255,255,255,15,255,252,127,64,0,2,65,248,3,255,244,63,0,0,11,224,96,0,127,208,12,0,0,15,253,0,0,0,0,0,16,6,162,255,128,0,160,0,0,62,11,240,127,224,7,248,0,0,127,11,240,15,192,3,254,0,0,255,11,240,3,0,128,255,128,1,253,11,240,0,0,248,63,208,3,252,11,240,0,0,252,15,240,15,244,11,240,0,2,252,7,248,63,224,11,255,255,255,248,3,253,47,192,3,255,255,255,240,0,244,6,0,1,255,255,255,208,0,64,0,0,0,0,0,0,0,0,0, + // 0x620f 戏 + 15,98,36,37,77,38,1,251,0,0,0,0,1,168,0,0,0,0,0,0,0,1,252,3,192,0,0,0,0,0,1,252,15,240,0,0,0,0,0,1,253,7,252,0,0,0,0,0,1,253,1,255,0,63,255,255,252,1,253,0,191,192,63,255,255,252,1,253,0,47,128,63,255,255,252,0,253,0,13,0,0,0,2,252,0,253,0,0,0,0,0,2,252,0,254,0,22,180,2,0,3,248,0,255,191,255,248,15,128,3,245,255,255,255,255,252,47,208,7,242,255,255,255,255,164,15,244,11,241,255,255,165,0,0,3,252,15,224,148,191,0,4,0,1,254,31,208,0,191,0,15,128,0,191,111,192,0,127,64,31,192,0,63,255,128,0,127,64,63,192,0,31,255,64,0,63,128,127,64,0,11,255,0,0,63,128,255,0,0,3,254,0,0,63,194,253,0,0,3,255,0,0,47,199,252,0,0,7,255,128,0,31,223,240,0,0,15,255,208,0,31,255,208,0,0,47,255,240,0,15,255,128,0,0,127,203,248,0,15,255,0,0,0,255,131,252,0,11,253,0,160,3,255,1,255,0,31,252,0,252,15,252,0,253,0,191,253,0,253,63,244,0,112,2,255,255,0,252,191,208,0,0,31,254,255,129,252,47,128,0,0,191,248,127,247,248,13,0,0,2,255,208,63,255,244,0,0,0,0,191,0,15,255,240,0,0,0,0,36,0,2,255,208,0,0,0,0,0,0,0,111,64,0,0,0,0,0,0,0,0,0, + // 0x6210 成 + 16,98,36,37,77,38,1,251,0,0,0,0,2,248,9,0,0,0,0,0,0,3,252,63,128,0,0,0,0,0,3,252,127,244,0,0,0,0,0,3,252,11,254,0,0,0,0,0,2,252,1,255,192,0,0,0,0,2,252,0,63,0,0,85,85,85,87,253,85,110,84,1,255,255,255,255,255,255,255,252,1,255,255,255,255,255,255,255,252,1,255,255,255,255,255,255,255,252,1,253,0,0,1,252,0,0,0,1,253,0,0,1,253,0,0,0,1,253,0,0,0,253,0,0,0,1,253,0,0,0,254,0,63,64,1,254,0,0,0,254,0,127,128,1,255,255,255,192,255,0,191,0,1,255,255,255,192,191,0,254,0,1,255,255,255,192,191,1,253,0,1,253,0,47,192,127,3,252,0,1,253,0,47,192,127,75,244,0,1,253,0,47,192,63,143,240,0,1,252,0,47,192,63,239,208,0,1,252,0,47,128,47,255,192,0,2,252,0,47,128,31,255,0,0,2,252,0,63,128,15,254,0,0,3,252,0,63,128,15,252,0,128,3,248,0,127,64,31,244,0,248,3,248,255,255,0,127,248,0,253,7,244,127,255,1,255,252,0,252,11,240,127,248,7,255,255,0,252,15,240,0,0,47,252,255,65,252,47,224,0,1,255,240,127,210,248,63,192,0,11,255,192,47,255,244,127,128,0,7,254,0,15,255,240,47,0,0,1,244,0,2,255,208,6,0,0,0,64,0,0,25,0,0,0,0,0,0,0,0,0,0, + // 0x6237 户 + 55,98,32,37,40,38,1,251,0,0,0,0,108,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,128,0,0,0,63,255,255,255,255,255,253,0,63,255,255,255,255,255,253,0,63,255,255,255,255,255,253,0,63,213,85,85,85,86,253,0,63,192,0,0,0,1,253,0,63,192,0,0,0,1,253,0,63,192,0,0,0,1,253,0,63,192,0,0,0,1,253,0,63,192,0,0,0,1,253,0,63,192,0,0,0,1,253,0,63,213,85,85,85,85,253,0,63,255,255,255,255,255,253,0,63,255,255,255,255,255,253,0,63,255,255,255,255,255,253,0,63,128,0,0,0,1,253,0,63,64,0,0,0,1,253,0,127,64,0,0,0,0,84,0,127,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,254,0,0,0,0,0,0,1,253,0,0,0,0,0,0,2,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,11,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,47,224,0,0,0,0,0,0,127,192,0,0,0,0,0,0,47,64,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6240 所 + 64,98,36,36,68,38,1,252,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,31,192,47,255,255,255,240,0,2,255,244,47,255,255,255,241,1,191,255,244,47,255,255,255,242,255,255,254,0,0,0,0,0,2,255,255,144,0,0,0,0,0,2,255,208,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,248,0,0,0,7,255,255,255,194,248,0,0,0,7,255,255,255,194,248,0,0,0,7,255,255,255,194,248,0,0,0,7,240,0,47,194,248,0,0,0,7,240,0,47,194,255,255,255,254,7,240,0,47,195,255,255,255,254,7,240,0,47,195,255,255,255,254,7,240,0,47,195,253,85,255,84,7,240,0,47,195,248,0,191,0,7,255,255,255,195,244,0,191,0,7,255,255,255,195,244,0,191,0,7,255,255,255,195,244,0,191,0,7,240,0,0,7,240,0,191,0,7,240,0,0,7,240,0,191,0,7,240,0,0,11,240,0,191,0,11,240,0,0,15,224,0,191,0,11,224,0,0,15,208,0,191,0,15,224,0,0,47,192,0,191,0,15,208,0,0,63,192,0,191,0,15,192,0,0,127,64,0,191,0,31,192,0,0,255,0,0,191,0,47,192,0,1,254,0,0,191,0,63,64,0,3,252,0,0,191,0,191,0,0,15,244,0,0,191,0,255,0,0,15,240,0,0,191,0,61,0,0,3,192,0,0,191,0,8,0,0,0,64,0,0,190,0, + // 0x6247 扇 + 71,98,34,34,50,38,1,252,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,170,170,170,170,170,170,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,0,0,0,0,127,0,0,191,0,0,0,0,0,127,0,0,191,0,0,0,0,0,127,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,170,170,170,170,170,170,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,191,255,252,127,255,255,128,0,190,191,255,252,127,255,255,128,0,254,106,171,252,42,170,191,128,0,254,5,0,252,2,0,47,128,0,253,63,64,252,31,192,47,128,0,252,31,208,252,11,240,47,128,1,252,11,240,252,3,248,47,128,2,252,3,240,252,0,244,47,128,3,248,0,64,252,0,64,47,128,3,244,0,44,252,0,27,111,128,11,240,6,253,252,2,255,175,128,15,241,191,253,252,127,254,47,128,31,211,255,208,252,255,224,47,128,63,194,249,0,252,126,0,47,128,127,128,128,0,252,16,0,63,128,191,0,0,255,252,0,31,255,128,29,0,0,127,248,0,15,255,0,0,0,0,62,144,0,11,232,0, + // 0x624b 手 + 75,98,34,37,77,38,2,251,0,0,0,0,0,0,27,64,0,0,0,0,0,5,175,255,208,0,0,5,106,191,255,255,255,240,0,7,255,255,255,255,255,249,64,0,3,255,255,255,255,164,0,0,0,3,255,250,151,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,7,255,255,255,255,255,255,255,0,7,255,255,255,255,255,255,255,0,7,255,255,255,255,255,255,255,0,1,85,85,87,253,85,85,85,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,85,87,253,85,85,85,80,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,1,85,91,252,0,0,0,0,0,1,255,255,248,0,0,0,0,0,0,255,255,240,0,0,0,0,0,0,191,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6253 打 + 83,98,36,36,68,38,1,252,0,11,224,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,2,170,170,170,170,168,0,11,240,3,255,255,255,255,253,0,11,240,3,255,255,255,255,253,0,11,240,3,255,255,255,255,253,21,95,245,80,0,0,63,192,0,63,255,255,248,0,0,63,192,0,63,255,255,248,0,0,63,192,0,63,255,255,248,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,4,0,0,63,192,0,0,11,246,252,0,0,63,192,0,0,15,255,252,0,0,63,192,0,6,255,255,252,0,0,63,192,0,127,255,255,64,0,0,63,192,0,63,255,240,0,0,0,63,192,0,47,239,240,0,0,0,63,192,0,20,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,15,240,0,0,0,63,192,0,15,255,224,0,11,255,255,192,0,11,255,208,0,3,255,255,128,0,7,255,64,0,3,255,254,0,0,1,64,0,0,1,234,144,0,0, + // 0x6267 执 + 103,98,36,37,77,38,1,251,0,47,128,0,7,240,0,0,0,0,47,128,0,7,240,0,0,0,0,47,128,0,7,240,0,0,0,0,47,128,0,7,240,0,0,0,0,47,128,0,7,240,0,0,0,0,47,128,0,7,240,0,0,0,0,47,128,0,7,240,0,0,0,0,47,128,0,7,240,0,0,0,63,255,255,127,255,255,255,244,0,63,255,255,127,255,255,255,244,0,63,255,255,127,255,255,255,244,0,0,47,192,0,11,240,7,244,0,0,47,128,0,11,240,3,244,0,0,47,128,0,11,240,3,244,0,0,47,128,0,11,224,3,244,0,0,47,128,0,15,224,3,240,0,0,47,128,11,15,224,3,240,0,0,47,223,159,239,208,3,240,0,0,47,255,191,255,208,3,240,0,2,255,255,199,255,208,3,240,0,127,255,253,0,191,248,3,240,0,127,255,192,0,47,255,3,240,0,63,255,128,0,63,255,211,240,0,40,47,128,0,127,191,255,240,0,0,47,128,0,191,11,247,240,0,0,47,128,0,254,1,211,240,0,0,47,128,1,253,0,3,240,0,0,47,128,3,252,0,3,244,0,0,47,128,11,244,0,3,244,116,0,47,128,31,240,0,3,244,126,0,47,128,63,208,0,2,248,125,0,47,128,255,128,0,1,252,189,5,127,135,255,0,0,0,254,252,31,255,143,252,0,0,0,255,252,15,255,7,240,0,0,0,127,244,11,248,1,192,0,0,0,31,208,0,0,0,0,0,0,0,0,0, + // 0x6279 批 + 121,98,36,36,68,38,1,252,0,63,64,5,64,0,168,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,21,127,149,15,208,0,253,0,0,127,255,255,15,208,0,253,0,0,127,255,255,15,208,0,253,0,128,127,255,255,15,208,0,253,2,240,0,63,64,15,208,0,253,11,248,0,63,64,15,229,80,253,63,244,0,63,64,15,255,248,254,255,208,0,63,64,15,255,248,255,255,0,0,63,64,15,255,248,255,244,0,0,63,64,15,208,0,255,192,0,0,63,175,15,208,0,254,0,0,0,63,255,15,208,0,253,0,0,27,255,255,15,208,0,253,0,0,191,255,248,15,208,0,253,0,0,127,255,64,15,208,0,253,0,0,62,127,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,64,0,63,64,15,208,0,253,0,184,0,63,64,15,208,0,253,0,190,0,63,64,15,208,20,253,0,189,0,63,64,15,235,252,253,0,253,0,63,70,255,255,252,254,0,252,0,127,75,255,255,228,255,255,252,47,255,3,255,228,0,127,255,248,31,254,3,148,0,0,47,255,224,15,244,0,0,0,0,0,0,0, + // 0x6296 抖 + 150,98,36,36,68,38,1,252,0,15,192,0,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,15,0,3,244,0,0,15,192,0,63,224,3,244,0,0,15,192,0,47,252,3,244,0,0,15,192,0,7,255,67,244,0,21,95,213,64,0,191,195,244,0,63,255,255,240,0,31,67,244,0,63,255,255,240,0,6,3,244,0,63,255,255,240,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,144,0,3,244,0,0,15,192,1,253,0,3,244,0,0,15,192,3,255,192,3,244,0,0,15,192,0,191,248,3,244,0,0,15,192,16,15,254,3,244,0,0,15,235,240,1,252,3,244,0,0,31,255,240,0,52,3,244,0,27,255,255,240,0,0,3,244,0,127,255,254,64,0,0,3,244,0,63,255,208,0,0,0,3,250,252,63,159,192,0,0,1,175,255,253,16,15,192,0,26,255,255,255,254,0,15,192,15,255,255,255,254,144,0,15,192,15,255,255,235,244,0,0,15,192,15,254,144,3,244,0,0,15,192,5,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,31,192,0,0,0,3,244,0,31,255,192,0,0,0,3,244,0,15,255,192,0,0,0,3,244,0,15,254,0,0,0,0,3,244,0,0,0,0,0,0,0,1,80,0, + // 0x62a5 报 + 165,98,36,36,68,38,1,252,0,10,144,0,0,0,0,0,0,0,15,224,1,85,85,85,85,64,0,15,224,3,255,255,255,255,192,0,15,224,3,255,255,255,255,192,0,15,224,3,255,255,255,255,192,0,15,224,3,244,0,0,31,192,0,15,224,3,244,0,0,47,192,21,95,229,67,244,0,0,47,192,63,255,255,211,244,0,0,63,192,63,255,255,211,244,0,0,127,128,63,255,255,211,244,15,255,255,64,0,15,224,3,244,11,255,255,0,0,15,224,3,244,2,255,228,0,0,15,224,3,244,0,0,0,0,0,15,224,3,248,0,0,0,0,0,15,224,3,255,255,255,255,240,0,15,224,3,255,255,255,255,240,0,15,235,211,255,255,255,255,240,0,15,255,227,246,252,0,15,224,6,255,255,227,244,252,0,31,208,191,255,255,147,244,254,0,47,192,127,255,224,3,244,127,0,63,128,63,255,224,3,244,63,128,191,0,57,15,224,3,244,47,208,255,0,0,15,224,3,244,15,242,253,0,0,15,224,3,244,7,255,252,0,0,15,224,3,244,3,255,240,0,0,15,224,3,244,0,255,224,0,0,15,224,3,244,0,191,208,0,0,15,224,3,244,1,255,248,0,0,15,224,3,244,11,255,255,0,0,15,224,3,244,127,246,255,224,21,111,208,3,250,255,208,127,253,63,255,208,3,255,255,0,31,248,47,255,192,3,245,248,0,2,240,31,249,0,2,160,128,0,0,0, + // 0x62ac 抬 + 172,98,36,37,77,38,1,251,0,15,208,0,0,164,0,0,0,0,15,208,0,0,255,64,0,0,0,15,208,0,0,255,0,0,0,0,15,208,0,2,253,0,0,0,0,15,208,0,3,252,0,0,0,0,15,208,0,3,248,0,0,0,0,15,208,0,11,244,0,144,0,21,95,229,64,15,240,7,240,0,127,255,255,208,31,208,3,252,0,127,255,255,208,47,192,1,254,0,127,255,255,208,63,128,0,191,64,0,15,208,0,127,0,0,63,192,0,15,208,0,255,106,175,255,224,0,15,208,63,255,255,255,255,244,0,15,208,63,255,255,255,255,252,0,15,208,63,255,255,169,86,253,0,15,208,101,80,0,0,0,254,0,15,239,224,0,0,0,0,180,0,31,255,224,0,0,0,0,0,7,255,255,240,0,0,0,0,0,191,255,254,67,255,255,255,255,192,127,255,208,3,255,255,255,255,192,63,159,208,3,255,255,255,255,192,16,15,208,3,253,85,85,127,192,0,15,208,3,248,0,0,47,192,0,15,208,3,248,0,0,47,192,0,15,208,3,248,0,0,47,192,0,15,208,3,248,0,0,47,192,0,15,208,3,248,0,0,47,192,0,15,208,3,248,0,0,47,192,0,15,208,3,248,0,0,47,192,0,15,208,3,255,255,255,255,192,0,31,208,3,255,255,255,255,192,15,255,192,3,255,255,255,255,192,15,255,192,3,248,0,0,63,192,11,254,0,2,248,0,0,42,128,0,0,0,0,0,0,0,0,0, + // 0x62bd 抽 + 189,98,35,37,77,38,1,251,0,31,192,0,0,7,224,0,0,0,31,192,0,0,7,240,0,0,0,31,192,0,0,7,240,0,0,0,31,192,0,0,7,240,0,0,0,31,192,0,0,7,240,0,0,0,31,192,0,0,7,240,0,0,0,31,192,0,0,7,240,0,0,21,111,213,64,0,7,240,0,0,127,255,255,192,0,7,240,0,0,127,255,255,207,255,255,255,255,248,127,255,255,207,255,255,255,255,248,0,31,192,15,255,255,255,255,248,0,31,192,15,229,91,245,87,248,0,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,219,207,208,7,240,3,248,0,31,255,207,208,7,240,3,248,2,255,255,223,255,255,255,255,248,191,255,254,79,255,255,255,255,248,191,255,208,15,255,255,255,255,248,127,255,192,15,229,91,245,87,248,52,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,192,15,229,91,245,87,248,0,31,192,15,255,255,255,255,248,0,31,192,15,255,255,255,255,248,0,47,192,15,255,255,255,255,248,31,255,192,15,208,0,0,3,248,15,255,64,15,208,0,0,3,248,15,249,0,11,208,0,0,1,164,0,0,0,0,0,0,0,0,0, + // 0x62d4 拔 + 212,98,36,37,77,38,1,251,0,31,192,0,7,240,1,0,0,0,31,192,0,7,240,15,128,0,0,31,192,0,7,240,47,244,0,0,31,192,0,7,240,11,255,0,0,31,192,0,7,240,0,255,208,0,31,192,0,7,240,0,47,224,0,31,192,0,7,240,0,7,192,21,111,213,64,7,240,0,1,0,127,255,255,218,175,250,170,170,168,127,255,255,223,255,255,255,255,252,127,255,255,223,255,255,255,255,252,0,31,192,0,11,240,0,0,0,0,31,192,0,11,240,0,0,0,0,31,192,0,15,240,0,0,0,0,31,192,0,15,244,0,42,0,0,31,192,0,15,248,0,63,0,0,31,192,0,15,252,0,127,0,0,31,199,192,15,252,0,191,0,0,31,255,192,31,253,0,254,0,2,255,255,208,47,255,0,253,0,191,255,254,64,63,191,65,252,0,191,255,208,0,63,111,194,252,0,127,255,192,0,127,15,195,244,0,56,31,192,0,191,11,231,240,0,0,31,192,0,254,7,255,240,0,0,31,192,1,252,2,255,208,0,0,31,192,3,252,0,255,192,0,0,31,192,3,244,0,255,128,0,0,31,192,15,240,1,255,208,0,0,31,192,31,224,7,255,244,0,0,31,192,63,192,15,255,253,0,0,31,192,191,64,127,226,255,128,0,47,194,255,2,255,128,191,244,31,255,203,252,15,254,0,31,254,15,255,67,240,7,248,0,3,252,15,249,0,208,1,208,0,0,112,0,0,0,0,0,0,0,0,0, + // 0x62e9 择 + 233,98,36,37,77,38,1,251,0,31,128,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,15,255,255,255,255,128,0,47,192,15,255,255,255,255,208,0,47,192,15,255,255,255,255,192,0,47,192,0,127,64,0,191,0,0,47,192,0,47,192,1,254,0,21,111,213,64,15,224,7,252,0,63,255,255,192,7,248,31,240,0,63,255,255,192,1,255,191,192,0,63,255,255,192,0,191,255,0,0,0,47,192,0,0,63,252,0,0,0,47,192,0,1,255,255,128,0,0,47,192,0,31,255,255,248,0,0,47,192,6,255,244,47,255,224,0,47,192,127,255,128,2,255,254,0,47,192,127,248,0,0,111,252,0,47,239,206,64,15,224,1,244,0,47,255,192,0,15,224,0,0,7,255,255,192,0,15,224,0,0,127,255,249,3,255,255,255,255,128,127,255,192,3,255,255,255,255,128,63,175,192,3,255,255,255,255,128,16,47,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,0,47,192,63,255,255,255,255,252,0,47,192,63,255,255,255,255,252,0,47,192,63,255,255,255,255,252,0,47,192,0,0,15,224,0,0,0,47,192,0,0,15,224,0,0,5,127,192,0,0,15,224,0,0,15,255,192,0,0,15,224,0,0,15,255,64,0,0,15,224,0,0,11,249,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0,0, + // 0x6309 按 + 9,99,36,37,77,38,1,251,0,31,192,0,0,15,224,0,0,0,31,192,0,0,15,224,0,0,0,31,192,0,0,15,224,0,0,0,31,192,0,0,15,224,0,0,0,31,192,0,0,15,224,0,0,0,31,192,31,255,255,255,255,252,0,31,192,31,255,255,255,255,252,21,111,213,95,255,255,255,255,252,127,255,255,223,192,0,0,1,252,127,255,255,223,192,16,0,1,252,127,255,255,223,192,127,64,1,252,0,31,192,31,192,191,0,1,252,0,31,192,31,192,255,0,1,252,0,31,192,0,0,253,0,0,0,0,31,192,0,1,252,0,0,0,0,31,192,0,3,252,0,0,0,0,31,192,47,255,255,255,255,253,0,31,198,239,255,255,255,255,253,0,31,255,255,255,255,255,255,253,1,191,255,208,15,208,0,255,0,127,255,255,128,31,192,0,254,0,191,255,208,0,63,128,1,253,0,127,255,192,0,63,64,2,252,0,57,31,192,0,191,0,3,248,0,0,31,192,0,255,128,11,244,0,0,31,192,1,255,249,15,240,0,0,31,192,2,255,255,255,208,0,0,31,192,1,185,255,255,192,0,0,31,192,0,0,31,255,192,0,0,31,192,0,0,11,255,248,0,0,31,192,0,0,127,255,255,64,0,31,192,0,27,255,194,255,224,0,47,192,22,255,254,0,127,252,31,255,192,191,255,224,0,11,252,15,255,64,63,253,0,0,1,244,15,249,0,46,64,0,0,0,96,0,0,0,0,0,0,0,0,0, + // 0x6321 挡 + 33,99,34,36,68,38,1,252,0,31,192,0,0,6,160,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,7,208,11,240,7,224,0,47,192,11,240,11,240,11,240,0,47,192,7,240,11,240,15,224,0,47,192,3,248,11,240,15,208,21,111,213,66,252,11,240,47,192,63,255,255,192,252,11,240,63,128,63,255,255,192,254,11,240,63,0,63,255,255,192,191,11,240,190,0,0,47,192,0,126,11,240,253,0,0,47,192,0,16,11,240,108,0,0,47,192,0,0,11,240,0,0,0,47,192,5,85,95,245,85,80,0,47,192,15,255,255,255,255,224,0,47,192,15,255,255,255,255,224,0,47,198,207,255,255,255,255,224,0,47,255,192,0,0,0,11,224,6,255,255,192,0,0,0,11,224,191,255,254,64,0,0,0,11,224,191,255,192,0,0,0,0,11,224,127,175,192,11,255,255,255,255,224,16,47,192,11,255,255,255,255,224,0,47,192,11,255,255,255,255,224,0,47,192,0,0,0,0,15,224,0,47,192,0,0,0,0,11,224,0,47,192,0,0,0,0,11,224,0,47,192,0,0,0,0,11,224,0,47,192,0,0,0,0,11,224,0,47,192,63,255,255,255,255,224,0,47,192,63,255,255,255,255,224,47,255,192,63,255,255,255,255,224,15,255,64,21,85,85,85,95,224,15,253,0,0,0,0,0,11,224,0,0,0,0,0,0,0,5,80, + // 0x6324 挤 + 36,99,36,36,68,38,1,252,0,63,0,0,0,47,0,0,0,0,63,0,0,0,127,64,0,0,0,63,0,0,0,63,192,0,0,0,63,0,0,0,31,192,0,0,0,63,0,255,255,255,255,255,252,0,63,0,255,255,255,255,255,252,0,63,0,255,255,255,255,255,252,21,127,84,0,253,0,2,253,0,63,255,254,0,191,0,3,252,0,63,255,254,0,63,128,11,244,0,63,255,254,0,31,208,15,240,0,0,63,0,0,15,244,63,192,0,0,63,0,0,3,254,255,64,0,0,63,0,0,0,255,253,0,0,0,63,0,0,0,191,252,0,0,0,63,0,0,27,255,255,208,0,0,63,8,26,255,255,255,255,164,0,63,253,255,255,224,47,255,253,0,63,253,191,253,0,2,255,248,7,255,254,62,64,0,0,6,240,127,255,224,0,127,0,7,240,0,127,255,0,0,127,0,7,240,0,63,191,0,0,127,0,7,240,0,16,63,0,0,127,0,7,240,0,0,63,0,0,127,0,7,240,0,0,63,0,0,127,0,7,240,0,0,63,0,0,127,0,7,240,0,0,63,0,0,255,0,7,240,0,0,63,0,0,254,0,7,240,0,0,63,0,2,252,0,7,240,0,0,63,0,11,252,0,7,240,0,0,63,0,47,240,0,7,240,0,47,255,1,255,208,0,7,240,0,31,255,3,255,64,0,7,240,0,15,252,0,184,0,0,7,240,0,5,64,0,0,0,0,1,80,0, + // 0x635f 损 + 95,99,36,36,68,38,1,252,0,47,128,0,0,0,0,0,0,0,63,128,1,170,170,170,170,0,0,63,128,2,255,255,255,255,0,0,63,128,2,255,255,255,255,0,0,63,128,2,252,0,0,191,0,0,63,128,2,252,0,0,191,0,0,63,128,2,252,0,0,191,0,21,127,149,2,252,0,0,191,0,127,255,255,194,254,170,170,255,0,127,255,255,194,255,255,255,255,0,127,255,255,194,255,255,255,255,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,11,255,255,255,255,192,0,63,128,11,255,255,255,255,192,0,63,128,11,255,255,255,255,192,0,63,129,75,224,0,0,31,192,0,63,255,203,224,0,0,31,192,0,127,255,203,224,10,144,31,192,27,255,255,139,224,15,208,31,192,191,255,228,11,224,15,208,31,192,191,255,128,11,224,15,208,31,192,126,63,128,11,224,15,208,31,192,0,63,128,11,224,31,208,31,192,0,63,128,11,224,31,192,31,192,0,63,128,11,224,63,192,31,192,0,63,128,11,224,191,128,26,128,0,63,128,0,1,255,11,64,0,0,63,128,0,11,253,47,240,0,0,63,128,0,127,244,31,254,0,0,63,128,11,255,208,2,255,192,63,255,130,255,255,0,0,127,248,31,255,65,255,244,0,0,11,253,15,253,0,190,64,0,0,1,248,5,80,0,16,0,0,0,0,32, + // 0x6362 换 + 98,99,36,36,68,38,1,252,0,42,64,0,2,64,0,0,0,0,63,64,0,7,248,0,0,0,0,63,64,0,15,240,0,0,0,0,63,64,0,31,224,0,0,0,0,63,64,0,63,255,255,248,0,0,63,64,0,191,255,255,254,0,0,63,64,2,255,255,255,252,0,21,127,148,7,252,0,11,244,0,63,255,255,31,244,0,31,224,0,63,255,255,191,208,0,127,128,0,63,255,255,191,255,255,255,255,128,0,63,64,47,255,255,255,255,128,0,63,64,15,255,255,255,255,128,0,63,64,11,224,15,208,63,128,0,63,64,11,224,15,208,63,128,0,63,64,11,224,15,208,63,128,0,63,64,11,224,15,208,63,128,0,63,175,11,224,15,208,63,128,0,63,255,11,224,15,208,63,128,27,255,255,75,224,15,192,63,128,191,255,248,11,224,31,192,63,128,127,255,64,255,255,255,255,255,252,62,127,64,255,255,255,255,255,252,0,63,64,255,255,255,255,255,252,0,63,64,0,0,255,240,0,0,0,63,64,0,1,255,244,0,0,0,63,64,0,3,254,252,0,0,0,63,64,0,15,240,255,0,0,0,63,64,0,63,224,63,192,0,0,63,64,0,255,128,31,244,0,0,63,64,7,254,0,7,254,0,0,63,64,63,248,0,2,255,208,47,255,66,255,208,0,0,127,253,15,255,15,255,0,0,0,15,252,15,253,3,244,0,0,0,1,244,5,64,0,64,0,0,0,0,0, + // 0x6389 掉 + 137,99,36,37,77,38,1,251,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,255,255,252,0,63,128,0,0,31,255,255,252,0,63,128,0,0,31,255,255,252,0,63,128,0,0,31,192,0,0,21,127,149,0,0,31,192,0,0,127,255,255,64,0,31,192,0,0,127,255,255,95,255,255,255,255,192,127,255,255,95,255,255,255,255,192,0,63,128,31,255,255,255,255,192,0,63,128,31,192,0,0,31,192,0,63,128,31,192,0,0,31,192,0,63,128,31,192,0,0,31,192,0,63,128,31,255,255,255,255,192,0,63,128,31,255,255,255,255,192,0,63,175,95,234,170,170,191,192,0,63,255,159,192,0,0,31,192,6,255,255,159,192,0,0,31,192,127,255,254,31,192,0,0,31,192,127,255,208,31,255,255,255,255,192,63,255,128,31,255,255,255,255,192,36,63,128,31,255,255,255,255,192,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,130,255,255,255,255,255,253,0,63,130,255,255,255,255,255,253,0,63,130,255,255,255,255,255,253,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,127,128,0,0,31,192,0,0,63,255,64,0,0,31,192,0,0,47,255,0,0,0,31,192,0,0,31,248,0,0,0,31,192,0,0,0,0,0,0,0,0,0,0,0, + // 0x63a2 探 + 162,99,36,36,68,38,1,252,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,63,255,255,255,255,248,0,63,64,63,255,255,255,255,248,0,63,64,63,255,255,255,255,248,0,63,64,63,0,0,0,1,248,0,63,64,63,2,160,63,1,248,21,127,149,63,3,240,63,1,248,127,255,255,63,7,240,63,1,248,127,255,255,42,7,240,63,0,0,127,255,255,0,15,224,63,0,80,0,63,64,0,31,208,63,0,125,0,63,64,0,127,192,63,64,189,0,63,64,6,255,0,63,255,252,0,63,64,127,253,0,47,255,248,0,63,64,63,224,0,11,255,224,0,63,91,14,0,15,208,0,0,0,63,255,0,0,15,208,0,0,0,127,255,0,0,15,208,0,0,111,255,255,0,0,15,208,0,0,191,255,224,127,255,255,255,255,252,127,255,64,127,255,255,255,255,252,57,63,64,127,255,255,255,255,252,0,63,64,0,2,255,255,0,0,0,63,64,0,3,255,255,64,0,0,63,64,0,15,255,255,192,0,0,63,64,0,47,223,223,240,0,0,63,64,0,191,143,215,252,0,0,63,64,2,255,15,210,255,0,0,63,64,15,252,15,208,191,192,0,63,64,127,240,15,208,63,244,0,63,67,255,192,15,208,15,254,0,127,67,255,0,15,208,3,252,47,255,0,244,0,15,208,0,180,31,254,0,0,0,15,208,0,0,15,244,0,0,0,15,208,0,0, + // 0x63a5 接 + 165,99,36,37,77,38,1,251,0,31,192,0,0,15,208,0,0,0,31,192,0,0,15,208,0,0,0,31,192,0,0,15,208,0,0,0,31,192,0,0,15,208,0,0,0,31,192,63,255,255,255,255,244,0,31,192,63,255,255,255,255,244,0,31,192,63,255,255,255,255,244,21,111,213,0,63,0,2,252,0,63,255,255,64,63,64,3,248,0,63,255,255,64,47,128,3,240,0,63,255,255,64,31,192,7,240,0,0,31,192,0,15,192,15,208,0,0,31,192,0,15,192,15,192,0,0,31,192,255,255,255,255,255,253,0,31,192,255,255,255,255,255,253,0,31,192,255,255,255,255,255,253,0,31,192,0,0,254,0,0,0,0,31,219,64,2,252,0,0,0,0,47,255,128,3,248,0,0,0,27,255,255,255,255,255,255,255,252,255,255,248,255,255,255,255,255,252,191,255,192,255,255,255,255,255,252,127,111,192,0,63,128,3,252,0,16,31,192,0,127,0,3,244,0,0,31,192,0,254,0,7,240,0,0,31,192,1,253,0,15,240,0,0,31,192,3,255,144,47,208,0,0,31,192,7,255,253,127,192,0,0,31,192,7,255,255,255,64,0,0,31,192,0,81,255,255,0,0,0,31,192,0,0,47,255,224,0,0,31,192,0,6,255,255,254,0,21,111,192,6,191,255,75,255,208,31,255,194,255,255,244,0,191,244,15,255,64,255,254,64,0,15,224,15,249,0,250,64,0,0,1,192,0,0,0,0,0,0,0,0,0, + // 0x63a7 控 + 167,99,36,36,68,38,1,252,0,47,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,191,255,255,255,255,252,0,63,64,191,255,255,255,255,252,0,63,64,191,255,255,255,255,252,21,127,149,190,3,240,63,0,252,127,255,255,190,7,240,63,0,252,127,255,255,190,7,240,63,0,252,127,255,255,190,11,224,63,0,168,0,63,64,0,15,224,63,0,0,0,63,64,0,15,208,63,0,160,0,63,64,0,47,192,63,0,188,0,63,64,0,191,64,63,64,252,0,63,64,7,255,0,63,255,252,0,63,91,127,252,0,47,255,244,0,63,255,63,208,0,11,255,208,1,191,255,29,0,0,0,0,0,47,255,253,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,127,255,64,15,255,255,255,255,224,57,63,64,15,255,255,255,255,224,0,63,64,15,255,255,255,255,224,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,31,208,0,0,0,127,65,255,255,255,255,255,253,47,255,1,255,255,255,255,255,253,31,254,1,255,255,255,255,255,253,15,244,0,0,0,0,0,0,0, + // 0x63d0 提 + 208,99,36,36,68,38,1,252,0,63,0,0,0,0,0,0,0,0,63,0,6,170,170,170,170,64,0,63,0,7,255,255,255,255,128,0,63,0,7,255,255,255,255,128,0,63,0,7,240,0,0,47,128,0,63,0,7,240,0,0,47,128,0,63,0,7,245,85,85,127,128,21,127,85,7,255,255,255,255,128,127,255,255,7,255,255,255,255,128,127,255,255,7,240,0,0,47,128,127,255,255,7,240,0,0,47,128,0,63,0,7,250,170,170,191,128,0,63,0,7,255,255,255,255,128,0,63,0,7,255,255,255,255,128,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,6,63,255,255,255,255,248,0,63,255,127,255,255,255,255,248,1,191,255,127,255,255,255,255,248,127,255,254,0,0,15,192,0,0,191,255,144,1,80,15,192,0,0,127,255,0,3,244,15,192,0,0,57,63,0,3,240,15,192,0,0,0,63,0,7,240,15,255,255,192,0,63,0,11,224,15,255,255,192,0,63,0,15,240,15,255,255,128,0,63,0,15,244,15,192,0,0,0,63,0,47,252,15,192,0,0,0,63,0,63,191,15,192,0,0,0,63,0,191,47,223,192,0,0,0,63,1,253,15,255,208,0,0,63,255,7,252,3,255,255,255,254,31,255,15,240,0,191,255,255,252,15,248,3,208,0,6,255,255,252,0,0,0,64,0,0,0,0,0, + // 0x63d2 插 + 210,99,35,36,68,38,1,252,0,47,64,0,0,0,0,0,0,0,63,64,0,0,0,1,111,64,0,63,64,0,1,90,255,255,192,0,63,64,47,255,255,255,255,224,0,63,64,31,255,255,255,164,0,0,63,64,15,250,175,208,0,0,0,63,64,0,0,15,208,0,0,21,127,149,0,0,15,208,0,0,127,255,255,0,0,15,208,0,0,127,255,255,191,255,255,255,255,252,127,255,255,191,255,255,255,255,252,0,63,64,191,255,255,255,255,252,0,63,64,0,0,15,208,0,0,0,63,64,0,0,15,208,0,0,0,63,64,0,1,15,208,0,0,0,63,64,0,15,143,208,0,0,0,63,64,57,191,255,215,255,240,0,63,175,63,255,239,215,255,240,0,63,255,63,249,15,215,255,240,11,255,255,63,128,15,208,3,240,191,255,248,63,64,15,208,3,240,191,255,64,63,64,15,208,3,240,127,127,64,63,64,15,208,3,240,16,63,64,63,255,143,211,255,240,0,63,64,63,255,143,211,255,240,0,63,64,63,255,143,211,255,240,0,63,64,63,64,15,208,3,240,0,63,64,63,64,15,208,3,240,0,63,64,63,64,15,208,3,240,0,63,64,63,64,15,208,3,240,0,63,64,63,64,15,208,3,240,0,63,64,63,255,255,255,255,240,0,127,64,63,255,255,255,255,240,47,255,0,63,255,255,255,255,240,31,254,0,63,64,0,0,3,240,15,244,0,47,64,0,0,3,240, + // 0x6536 收 + 54,101,36,36,68,38,1,252,0,0,6,160,0,169,0,0,0,0,0,11,240,0,254,0,0,0,0,0,11,240,1,253,0,0,0,0,0,11,240,2,252,0,0,0,1,80,11,240,3,252,0,0,0,3,240,11,240,3,248,0,0,0,3,240,11,240,11,244,0,0,0,3,240,11,240,15,255,255,255,254,3,240,11,240,31,255,255,255,254,3,240,11,240,47,255,255,255,254,3,240,11,240,63,229,85,111,228,3,240,11,240,191,208,0,47,192,3,240,11,240,255,240,0,63,192,3,240,11,243,255,240,0,63,128,3,240,11,251,255,244,0,127,64,3,240,11,255,247,248,0,191,0,3,240,11,255,226,252,0,254,0,3,240,11,247,192,253,1,253,0,3,240,11,241,64,254,3,252,0,3,240,11,240,0,191,3,248,0,3,240,11,240,0,63,139,240,0,3,240,11,240,0,63,207,240,0,3,240,111,240,0,31,255,208,0,3,255,255,240,0,15,255,192,0,47,255,255,240,0,7,255,64,0,127,255,255,240,0,3,254,0,0,63,253,11,240,0,11,255,0,0,63,64,11,240,0,47,255,192,0,0,0,11,240,0,191,255,240,0,0,0,11,240,2,255,143,252,0,0,0,11,240,31,253,7,255,64,0,0,11,240,191,244,1,255,224,0,0,11,251,255,208,0,127,253,0,0,11,251,255,0,0,31,253,0,0,11,243,248,0,0,2,248,0,0,11,225,128,0,0,0,96, + // 0x653e 放 + 62,101,36,37,77,38,1,251,0,2,248,0,0,30,128,0,0,0,2,252,0,0,47,192,0,0,0,2,252,0,0,63,192,0,0,0,2,252,0,0,63,128,0,0,0,2,252,0,0,63,64,0,0,0,2,252,0,0,127,0,0,0,63,255,255,255,208,191,0,0,0,63,255,255,255,208,255,255,255,253,63,255,255,255,209,255,255,255,253,21,127,85,85,66,255,255,255,253,0,63,0,0,3,253,85,127,212,0,63,0,0,7,252,0,63,128,0,63,0,0,15,252,0,63,64,0,63,0,0,15,253,0,127,0,0,63,255,255,63,254,0,191,0,0,63,255,255,127,255,0,254,0,0,63,255,255,255,191,0,253,0,0,63,64,191,191,63,65,252,0,0,63,0,127,45,47,195,252,0,0,63,0,127,4,31,195,248,0,0,63,0,191,0,15,231,240,0,0,127,0,191,0,11,255,240,0,0,127,0,191,0,7,255,208,0,0,191,0,190,0,3,255,192,0,0,190,0,190,0,1,255,128,0,0,253,0,190,0,0,255,0,0,0,253,0,190,0,2,255,128,0,1,252,0,254,0,7,255,208,0,3,252,0,254,0,31,255,240,0,7,248,0,253,0,127,239,252,0,15,240,0,253,2,255,131,255,0,31,224,0,253,15,254,1,255,208,63,192,2,252,191,248,0,127,252,255,130,255,254,255,224,0,31,253,63,1,255,244,255,0,0,3,244,12,0,255,208,116,0,0,0,160,0,0,0,0,0,0,0,0,0, + // 0x6570 数 + 112,101,36,36,68,38,1,252,0,0,190,0,0,7,160,0,0,2,192,190,3,208,11,240,0,0,11,224,190,7,240,15,240,0,0,3,240,190,15,208,15,224,0,0,2,248,190,47,192,15,208,0,0,1,252,190,63,0,31,192,0,0,0,224,190,9,0,63,192,0,0,63,255,255,255,252,63,255,255,253,63,255,255,255,252,127,255,255,253,63,255,255,255,252,191,255,255,253,0,3,255,128,0,255,85,111,212,0,15,255,248,1,255,0,47,192,0,127,255,255,67,255,64,63,192,2,254,190,63,247,255,128,63,128,31,248,190,11,223,255,192,63,64,127,224,190,1,159,255,192,127,0,47,64,190,0,63,223,208,191,0,8,2,253,0,63,143,224,254,0,0,3,244,0,15,11,241,253,0,0,11,240,0,1,7,246,252,0,127,255,255,255,252,3,251,252,0,127,255,255,255,252,2,255,244,0,127,255,255,255,252,1,255,240,0,0,191,0,127,0,0,255,224,0,0,253,0,254,0,0,191,192,0,2,252,0,253,0,0,191,192,0,3,255,66,252,0,1,255,224,0,15,255,251,248,0,7,255,240,0,11,239,255,240,0,15,255,252,0,0,66,255,240,0,127,243,255,0,0,1,255,254,1,255,192,255,192,0,31,255,255,223,255,0,127,244,27,255,244,191,255,252,0,47,253,63,255,128,31,255,240,0,7,252,31,248,0,2,47,128,0,1,240,10,0,0,0,8,0,0,0,16, + // 0x6572 敲 + 114,101,36,36,68,38,1,252,0,0,253,0,0,1,252,0,0,0,0,253,0,0,1,252,0,0,0,0,253,0,0,1,252,0,0,0,0,253,0,0,1,252,0,0,63,255,255,255,252,1,252,0,0,127,255,255,255,252,1,255,255,252,127,255,255,255,252,1,255,255,252,0,0,0,0,0,1,255,255,252,0,0,0,0,0,1,253,0,0,0,255,255,255,0,1,252,0,0,0,255,255,255,0,1,252,0,0,0,253,85,191,0,1,252,0,0,0,252,0,127,0,1,252,0,0,0,252,0,127,15,255,255,255,224,0,253,85,191,15,255,255,255,240,0,255,255,255,15,255,255,255,240,0,255,255,255,0,24,0,15,224,0,0,0,0,0,252,0,15,208,0,0,0,0,0,253,0,47,192,31,255,255,255,240,190,0,63,192,31,255,255,255,240,63,0,63,64,31,234,170,171,240,63,128,191,0,31,128,0,3,240,31,192,254,0,31,139,255,195,240,15,227,252,0,31,139,255,195,240,7,251,252,0,31,139,67,195,240,3,255,240,0,31,139,67,195,240,1,255,224,0,31,139,67,195,240,0,255,192,0,31,139,67,195,240,1,255,208,0,31,139,255,195,240,11,255,248,0,31,139,255,195,240,47,255,254,0,31,139,64,3,241,255,226,255,208,31,134,0,3,255,255,64,127,253,31,128,0,255,251,253,0,31,252,31,128,0,255,211,224,0,2,244,10,64,0,85,1,0,0,0,16, + // 0x6574 整 + 116,101,34,35,59,38,2,253,0,2,244,0,0,14,64,0,0,0,2,244,0,0,31,192,0,0,85,87,249,85,80,63,128,0,0,191,255,255,255,224,63,64,0,0,191,255,255,255,224,191,255,255,240,0,2,244,0,0,255,255,255,240,0,2,248,0,2,255,255,255,240,47,255,255,255,199,252,0,253,0,47,255,255,255,223,253,1,252,0,47,2,244,15,255,255,2,248,0,47,2,244,15,255,127,67,240,0,47,66,248,31,206,31,207,240,0,47,255,255,255,192,11,255,192,0,47,255,255,255,192,3,255,64,0,0,47,255,64,0,2,255,0,0,0,255,255,244,0,31,255,224,0,7,254,250,255,64,191,239,253,0,111,226,244,127,159,255,67,255,224,255,130,244,11,63,248,0,191,240,60,2,244,0,31,128,0,11,208,0,0,80,0,4,0,0,0,64,11,255,255,255,255,255,255,254,0,11,255,255,255,255,255,255,254,0,11,255,255,255,255,255,255,254,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,15,192,3,248,0,0,0,0,0,15,192,3,255,255,255,192,0,0,15,192,3,255,255,255,192,0,0,15,192,3,254,170,170,128,0,0,15,192,3,248,0,0,0,0,0,15,192,3,248,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x6599 料 + 153,101,36,36,68,38,1,252,0,2,160,0,0,0,1,252,0,0,7,240,0,0,0,1,252,0,0,7,240,20,0,0,1,252,0,63,7,240,63,2,208,1,252,0,47,7,240,126,3,252,1,252,0,31,71,240,189,3,255,65,252,0,15,135,240,252,0,191,209,252,0,15,199,240,252,0,31,241,252,0,11,199,241,244,0,3,209,252,0,7,215,242,240,0,0,129,252,0,7,215,243,224,0,0,1,252,0,3,71,241,208,0,0,1,252,0,0,7,240,0,8,0,1,252,0,63,255,255,255,47,64,1,252,0,63,255,255,255,127,240,1,252,0,63,255,255,255,31,253,1,252,0,21,111,245,85,2,255,65,252,0,0,63,248,0,0,127,1,252,0,0,63,253,0,0,29,1,252,0,0,191,255,64,0,0,1,252,0,0,255,255,192,0,0,1,252,0,1,251,251,240,0,0,1,253,188,3,247,243,248,0,0,27,255,253,7,231,241,253,0,111,255,255,254,15,215,240,253,191,255,255,255,228,31,199,240,116,255,255,255,252,0,63,71,240,16,255,249,65,252,0,191,7,240,0,164,0,1,252,0,126,7,240,0,0,0,1,252,0,60,7,240,0,0,0,1,252,0,20,7,240,0,0,0,1,252,0,0,7,240,0,0,0,1,252,0,0,7,240,0,0,0,1,252,0,0,7,240,0,0,0,1,252,0,0,7,240,0,0,0,1,252,0,0,7,240,0,0,0,1,252,0, + // 0x659c 斜 + 156,101,36,36,68,38,1,252,0,0,255,0,0,0,0,127,0,0,2,255,192,0,0,0,127,0,0,3,255,240,0,0,0,127,0,0,11,255,253,0,30,0,127,0,0,31,227,255,64,191,128,127,0,0,63,192,255,208,63,240,127,0,0,191,64,63,240,11,252,127,0,2,254,0,15,252,2,254,127,0,7,252,0,3,240,0,190,191,0,31,240,0,1,208,0,56,127,0,127,255,255,255,128,0,0,127,0,255,255,255,255,128,0,0,127,0,61,255,255,255,128,112,0,127,0,20,0,127,0,1,253,0,127,0,0,0,127,0,2,255,64,127,0,0,0,127,0,0,127,208,127,0,0,0,127,0,0,31,244,127,0,63,255,255,255,248,7,252,127,0,63,255,255,255,248,1,240,127,0,63,255,255,255,248,0,64,127,0,0,0,127,0,0,0,0,127,0,0,0,127,0,0,0,0,127,253,1,144,127,7,64,0,6,255,254,3,248,127,31,192,27,255,255,254,3,240,127,15,199,255,255,255,228,7,240,127,11,227,255,255,255,0,11,224,127,3,243,255,144,127,0,15,208,127,3,246,144,0,127,0,47,192,127,2,252,0,0,127,0,63,64,127,0,252,0,0,127,0,191,0,127,0,244,0,0,127,0,45,0,127,0,0,0,0,127,0,4,0,191,0,0,0,0,127,0,0,63,255,0,0,0,0,127,0,0,63,253,0,0,0,0,127,0,0,47,228,0,0,0,0,127,0, + // 0x65ad 断 + 173,101,34,37,77,38,3,251,0,0,21,0,0,0,0,0,0,168,0,63,0,0,0,0,125,0,252,0,63,0,0,0,27,255,64,252,120,63,15,133,11,255,255,128,252,188,63,15,203,255,255,228,0,252,61,63,31,75,255,249,0,0,252,62,63,47,11,249,0,0,0,252,47,63,62,11,224,0,0,0,252,47,63,124,11,224,0,0,0,252,30,63,120,11,224,0,0,0,252,0,63,0,11,224,0,0,0,252,0,63,0,11,224,0,0,0,252,255,255,255,203,224,0,0,0,252,255,255,255,203,255,255,255,224,252,255,255,255,203,255,255,255,224,252,0,191,0,11,255,255,255,224,252,0,255,64,11,245,91,245,64,252,2,255,208,11,224,11,240,0,252,3,255,248,15,224,11,240,0,252,11,255,254,15,224,11,240,0,252,31,127,63,143,224,11,240,0,252,63,63,31,79,208,11,240,0,252,253,63,10,15,208,11,240,0,254,252,63,0,15,192,11,240,0,253,240,63,0,31,192,11,240,0,252,144,63,0,31,192,11,240,0,252,0,63,0,47,192,11,240,0,252,0,63,0,63,128,11,240,0,252,0,0,0,127,0,11,240,0,255,255,255,255,255,0,11,240,0,255,255,255,255,254,0,11,240,0,255,255,255,255,252,0,11,240,0,252,0,0,7,248,0,11,240,0,252,0,0,15,240,0,11,240,0,252,0,0,11,208,0,11,240,0,0,0,0,2,128,0,11,240,0,0,0,0,0,0,0,0,0,0, + // 0x65b0 新 + 176,101,36,36,68,38,1,252,0,0,169,0,0,0,0,0,0,0,0,253,0,0,0,0,27,208,0,0,253,0,0,0,6,255,244,0,0,253,0,0,145,191,255,244,47,255,255,255,241,255,255,254,0,47,255,255,255,241,255,254,64,0,47,255,255,255,241,254,64,0,0,0,180,0,57,1,252,0,0,0,1,248,0,127,1,252,0,0,0,0,252,0,189,1,252,0,0,0,0,189,0,252,1,252,0,0,0,0,126,1,248,1,252,0,0,0,0,121,1,180,1,252,0,0,0,63,255,255,255,249,255,255,255,253,63,255,255,255,249,255,255,255,253,63,255,255,255,249,255,255,255,253,0,0,253,0,1,253,85,254,84,0,0,253,0,1,252,0,253,0,0,0,253,0,1,252,0,253,0,63,255,255,255,241,252,0,253,0,63,255,255,255,241,252,0,253,0,63,255,255,255,242,252,0,253,0,0,3,254,0,2,248,0,253,0,0,11,255,64,3,248,0,253,0,0,15,255,224,3,244,0,253,0,0,63,255,252,3,240,0,253,0,0,255,255,255,7,240,0,253,0,2,252,253,127,207,240,0,253,0,11,244,253,31,79,208,0,253,0,47,240,253,10,47,192,0,253,0,191,192,253,0,63,128,0,253,0,63,0,253,0,255,0,0,253,0,12,0,253,2,254,0,0,253,0,0,0,253,3,252,0,0,253,0,0,0,253,0,244,0,0,253,0,0,0,253,0,32,0,0,169,0, + // 0x65b9 方 + 185,101,34,37,77,38,2,251,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,85,85,85,87,253,85,85,85,80,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,2,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,255,255,255,255,224,0,0,0,7,255,255,255,255,208,0,0,0,11,255,255,255,255,208,0,0,0,15,245,85,85,111,208,0,0,0,15,240,0,0,31,208,0,0,0,31,224,0,0,31,192,0,0,0,47,208,0,0,47,192,0,0,0,63,192,0,0,47,192,0,0,0,127,128,0,0,47,192,0,0,0,255,64,0,0,63,192,0,0,2,255,0,0,0,63,128,0,0,7,253,0,0,0,63,128,0,0,15,252,0,0,0,63,64,0,0,63,240,0,0,0,127,64,0,0,255,208,0,0,0,191,0,0,7,255,128,0,0,0,255,0,0,47,254,0,1,84,7,254,0,0,255,244,0,0,255,255,252,0,0,127,208,0,0,255,255,248,0,0,46,0,0,0,191,255,208,0,0,0,0,0,0,0,0,0,0,0, + // 0x65e0 无 + 224,101,35,34,50,38,2,252,1,85,85,85,85,85,85,85,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,85,111,229,85,85,85,80,0,0,0,31,192,0,0,0,0,0,0,0,47,239,192,0,0,0,0,0,0,63,239,192,0,0,0,0,0,0,127,111,192,0,0,0,0,0,0,191,47,192,0,0,0,0,0,0,255,47,192,0,0,0,0,0,2,253,47,192,0,0,0,0,0,7,252,47,192,0,0,0,0,0,15,244,47,192,0,2,64,0,0,63,240,47,192,0,3,244,0,0,255,192,47,192,0,3,248,0,7,255,0,47,192,0,3,244,0,47,253,0,47,192,0,3,244,2,255,240,0,47,208,0,11,240,127,255,192,0,31,255,255,255,240,255,253,0,0,15,255,255,255,208,63,208,0,0,7,255,255,255,128,25,0,0,0,0,85,85,84,0, + // 0x65f6 时 + 246,101,34,36,68,38,3,252,0,0,0,0,0,0,10,128,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,255,255,255,64,0,0,31,192,0,255,255,255,64,0,0,31,192,0,255,255,255,64,0,0,31,192,0,253,0,63,64,0,0,31,192,0,253,0,63,69,85,85,111,229,64,253,0,63,79,255,255,255,255,208,253,0,63,79,255,255,255,255,208,253,0,63,79,255,255,255,255,208,253,0,63,64,0,0,31,192,0,253,0,63,64,0,0,31,192,0,253,0,63,64,0,0,31,192,0,255,255,255,64,176,0,31,192,0,255,255,255,67,252,0,31,192,0,255,255,255,65,254,0,31,192,0,253,0,63,64,255,0,31,192,0,253,0,63,64,127,192,31,192,0,253,0,63,64,47,208,31,192,0,253,0,63,64,15,240,31,192,0,253,0,63,64,11,248,31,192,0,253,0,63,64,3,252,31,192,0,253,0,63,64,1,248,31,192,0,253,0,63,64,0,208,31,192,0,253,0,63,64,0,0,31,192,0,255,255,255,64,0,0,31,192,0,255,255,255,64,0,0,31,192,0,255,255,255,64,0,0,31,192,0,253,0,0,0,0,0,31,192,0,253,0,0,0,0,0,31,192,0,253,0,0,0,0,0,47,192,0,0,0,0,0,11,255,255,192,0,0,0,0,0,3,255,255,192,0,0,0,0,0,3,255,254,0,0,0,0,0,0,1,85,80,0,0, + // 0x660e 明 + 14,102,33,36,68,38,3,251,0,0,0,0,85,85,85,85,0,0,0,0,0,255,255,255,255,64,255,255,255,128,255,255,255,255,64,255,255,255,128,255,255,255,255,64,255,255,255,128,253,0,0,63,64,253,0,47,128,253,0,0,63,64,253,0,47,128,253,0,0,63,64,253,0,47,128,253,0,0,63,64,253,0,47,128,253,0,0,63,64,253,0,47,128,253,0,0,63,64,253,0,47,128,255,255,255,255,64,255,255,255,128,255,255,255,255,64,255,255,255,128,255,255,255,255,64,255,255,255,128,253,0,0,127,64,253,0,47,128,253,0,0,63,64,253,0,47,128,253,0,0,63,64,253,0,47,128,252,0,0,63,64,253,0,47,129,252,0,0,63,64,253,0,47,129,252,0,0,63,64,253,0,47,129,255,255,255,255,64,253,0,47,130,255,255,255,255,64,255,255,255,130,255,255,255,255,64,255,255,255,131,248,0,0,127,64,255,255,255,131,244,0,0,63,64,254,85,85,7,240,0,0,63,64,253,0,0,15,240,0,0,63,64,253,0,0,15,208,0,0,63,64,253,0,0,63,192,0,0,63,64,0,0,0,127,128,0,0,63,64,0,0,0,255,64,0,0,63,64,0,0,2,254,0,0,0,63,64,0,0,11,252,0,1,85,191,0,0,0,47,244,0,3,255,255,0,0,0,31,208,0,2,255,254,0,0,0,7,64,0,1,255,228,0,0,0,0,0,0,0,0,0,0, + // 0x662f 是 + 47,102,36,36,68,38,1,251,0,42,170,170,170,170,170,164,0,0,63,255,255,255,255,255,248,0,0,63,255,255,255,255,255,248,0,0,63,128,0,0,0,3,248,0,0,63,128,0,0,0,3,248,0,0,63,128,0,0,0,3,248,0,0,63,255,255,255,255,255,248,0,0,63,255,255,255,255,255,248,0,0,63,213,85,85,85,87,248,0,0,63,128,0,0,0,3,248,0,0,63,128,0,0,0,3,248,0,0,63,255,255,255,255,255,248,0,0,63,255,255,255,255,255,248,0,0,42,170,170,170,170,170,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,0,0,0,0,127,0,0,0,0,0,1,164,0,127,0,0,0,0,0,3,252,0,127,0,0,0,0,0,3,248,0,127,0,0,0,0,0,7,244,0,127,255,255,255,0,0,11,240,0,127,255,255,255,0,0,15,248,0,127,255,255,255,0,0,47,253,0,127,0,0,0,0,0,63,255,0,127,0,0,0,0,0,191,191,208,127,0,0,0,0,1,255,31,248,127,0,0,0,0,7,252,11,255,255,0,0,0,0,31,248,1,255,255,255,255,255,253,127,224,0,47,255,255,255,255,252,47,128,0,1,191,255,255,255,248,10,0,0,0,0,5,85,85,80,0,0,0,0,0,0,0,0,0, + // 0x6682 暂 + 130,102,34,37,77,38,2,251,0,11,144,0,0,0,0,5,0,0,15,240,0,0,0,22,255,0,170,191,250,170,145,191,255,255,192,255,255,255,255,226,255,255,249,0,255,255,255,255,226,254,148,0,0,1,252,0,0,2,244,0,0,0,3,244,42,0,2,244,0,0,0,11,224,63,0,2,244,0,0,0,47,192,63,0,2,244,0,0,0,127,255,255,255,242,255,255,255,240,63,255,255,255,242,255,255,255,240,63,255,255,255,226,255,255,255,240,0,0,63,0,3,244,7,240,0,0,0,63,0,3,240,7,240,0,0,5,191,255,215,240,7,240,0,191,255,255,255,219,224,7,240,0,191,255,255,250,79,208,7,240,0,191,169,127,0,47,192,7,240,0,0,0,63,0,63,128,7,240,0,0,0,63,0,31,0,7,240,0,0,0,21,0,1,0,1,80,0,0,106,170,170,170,170,170,144,0,0,127,255,255,255,255,255,224,0,0,127,255,255,255,255,255,224,0,0,127,0,0,0,0,15,224,0,0,127,0,0,0,0,15,224,0,0,127,85,85,85,85,95,224,0,0,127,255,255,255,255,255,224,0,0,127,255,255,255,255,255,224,0,0,127,0,0,0,0,15,224,0,0,127,0,0,0,0,15,224,0,0,127,0,0,0,0,15,224,0,0,127,255,255,255,255,255,224,0,0,127,255,255,255,255,255,224,0,0,127,255,255,255,255,255,224,0,0,127,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0, + // 0x66ab 暫 + 171,102,34,36,68,38,2,252,0,1,244,0,0,0,0,4,0,0,2,244,0,0,0,6,254,0,0,2,248,0,3,150,255,255,128,191,255,255,255,211,255,255,253,0,191,255,255,255,211,255,250,64,0,0,2,244,0,3,245,0,0,0,47,255,255,255,131,240,0,0,0,47,171,254,175,131,240,0,0,0,47,2,244,15,131,240,0,0,0,47,171,254,175,131,255,255,255,240,47,255,255,255,135,255,255,255,240,47,2,244,15,135,255,255,255,240,47,171,254,191,139,224,11,224,0,47,255,255,255,143,208,11,224,0,0,2,244,0,15,192,11,224,0,0,2,248,0,47,192,11,224,0,255,255,255,255,255,64,11,224,0,255,255,255,255,255,0,11,224,0,0,2,244,2,253,0,11,224,0,0,2,244,0,180,0,11,224,0,0,1,80,0,16,0,1,80,0,0,42,170,170,170,170,170,128,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,128,0,0,0,63,192,0,0,47,128,0,0,0,63,192,0,0,47,213,85,85,85,127,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,128,0,0,0,63,192,0,0,47,128,0,0,0,63,192,0,0,47,128,0,0,0,63,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,128,0,0,0,47,128,0, + // 0x66f4 更 + 244,102,35,34,50,38,2,252,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,0,0,0,2,253,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,253,0,2,252,0,1,252,0,0,253,0,2,252,0,1,252,0,0,253,0,2,252,0,1,252,0,0,255,170,171,255,170,171,252,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,253,0,2,252,0,1,252,0,0,253,0,2,252,0,1,252,0,0,253,0,2,252,0,1,252,0,0,253,0,2,252,0,1,252,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,7,64,7,244,0,0,0,0,0,63,192,15,240,0,0,0,0,0,15,244,31,224,0,0,0,0,0,7,253,127,192,0,0,0,0,0,1,255,255,64,0,0,0,0,0,0,127,255,0,0,0,0,0,0,1,191,255,228,0,0,0,0,0,111,255,255,255,250,84,0,0,111,255,254,27,255,255,255,255,244,191,255,208,0,111,255,255,255,240,63,249,0,0,0,107,255,255,224,9,0,0,0,0,0,0,85,64, + // 0x6700 最 + 0,103,34,35,59,38,2,252,0,21,85,85,85,85,85,64,0,0,63,255,255,255,255,255,208,0,0,63,255,255,255,255,255,208,0,0,63,0,0,0,0,15,208,0,0,63,0,0,0,0,15,208,0,0,63,255,255,255,255,255,208,0,0,63,255,255,255,255,255,208,0,0,63,64,0,0,0,31,208,0,0,63,0,0,0,0,15,208,0,0,63,85,85,85,85,95,208,0,0,63,255,255,255,255,255,208,0,0,63,255,255,255,255,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,2,248,0,127,0,0,0,0,0,2,248,0,127,0,0,0,0,0,2,255,255,255,63,255,255,254,0,2,255,255,255,63,255,255,255,0,2,254,170,191,43,250,170,255,0,2,248,0,127,3,240,0,253,0,2,248,0,127,3,244,3,252,0,2,255,255,255,1,252,7,244,0,2,255,255,255,0,255,31,240,0,2,254,170,191,0,63,191,192,0,2,248,0,127,0,47,255,64,0,2,248,0,191,0,15,254,0,0,6,255,255,255,0,47,255,64,0,255,255,255,255,1,255,255,224,0,255,255,255,255,31,255,111,254,64,254,148,0,127,255,248,3,255,240,0,0,0,127,63,128,0,127,208,0,0,0,127,24,0,0,6,128, + // 0x6709 有 + 9,103,34,37,77,38,2,251,0,0,0,164,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,21,85,127,213,85,85,85,85,64,0,0,127,128,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,3,255,255,255,255,255,208,0,0,15,255,255,255,255,255,208,0,0,31,255,255,255,255,255,208,0,0,63,252,0,0,0,31,208,0,0,255,252,0,0,0,15,208,0,3,255,252,0,0,0,15,208,0,15,254,252,0,0,0,15,208,0,63,242,255,255,255,255,255,208,0,255,210,255,255,255,255,255,208,0,255,2,255,255,255,255,255,208,0,60,2,252,0,0,0,15,208,0,0,2,252,0,0,0,15,208,0,0,2,252,0,0,0,15,208,0,0,2,255,255,255,255,255,208,0,0,2,255,255,255,255,255,208,0,0,2,255,255,255,255,255,208,0,0,2,252,0,0,0,15,208,0,0,2,252,0,0,0,15,208,0,0,2,252,0,0,0,15,208,0,0,2,252,0,0,0,15,208,0,0,2,252,0,0,85,111,192,0,0,2,252,0,0,255,255,192,0,0,2,252,0,0,127,255,128,0,0,2,252,0,0,63,249,0,0,0,0,0,0,0,0,0,0,0, + // 0x671f 期 + 31,103,34,37,77,38,1,251,0,84,0,21,0,0,0,0,0,0,253,0,63,64,0,0,0,0,0,253,0,63,64,63,255,255,240,0,253,0,63,64,63,255,255,240,0,253,0,63,64,63,255,255,240,63,255,255,255,252,63,64,7,240,63,255,255,255,252,63,0,3,240,63,255,255,255,252,63,0,3,240,0,253,0,63,128,63,0,3,240,0,253,0,63,64,63,0,3,240,0,253,0,63,64,63,0,7,240,0,255,255,255,64,63,255,255,240,0,255,255,255,64,63,255,255,240,0,255,255,255,64,63,255,255,240,0,253,0,63,64,63,0,3,240,0,253,0,63,64,63,0,3,240,0,253,0,63,64,63,0,3,240,0,255,255,255,64,127,0,3,240,0,255,255,255,64,127,0,3,240,0,255,255,255,64,127,0,7,240,0,253,0,63,64,127,255,255,240,0,253,0,63,64,127,255,255,240,0,253,0,63,64,127,255,255,240,127,255,255,255,252,190,0,3,240,127,255,255,255,252,190,0,3,240,127,255,255,255,252,254,0,3,240,0,0,0,16,0,253,0,3,240,0,62,64,180,0,252,0,3,240,0,127,66,252,1,252,0,3,240,0,255,0,255,2,252,0,3,240,2,253,0,127,131,248,0,3,240,7,248,0,47,199,244,0,3,240,31,240,0,15,239,240,5,91,240,127,208,0,11,95,224,15,255,240,31,128,0,0,11,192,11,255,224,2,0,0,0,2,128,7,254,64,0,0,0,0,0,0,0,0,0, + // 0x673a 机 + 58,103,36,36,68,38,1,252,0,2,164,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,5,85,85,80,0,0,3,244,0,31,255,255,248,0,0,3,244,0,31,255,255,248,0,0,3,244,0,31,255,255,248,0,0,3,244,0,31,192,2,248,0,0,3,244,0,31,192,2,248,0,63,255,255,254,31,192,2,248,0,63,255,255,254,31,192,2,248,0,63,255,255,254,31,192,2,248,0,21,91,249,84,31,192,2,248,0,0,15,244,0,31,192,2,248,0,0,15,244,0,31,192,2,248,0,0,31,248,0,31,192,2,248,0,0,47,253,0,31,192,2,248,0,0,63,255,64,31,192,2,248,0,0,191,255,192,31,192,2,248,0,0,255,255,240,31,192,2,248,0,1,251,247,252,31,192,2,248,0,3,243,244,254,47,192,2,248,0,7,227,244,190,63,128,2,248,0,15,211,244,60,63,128,2,248,0,47,195,244,16,63,64,2,248,0,127,67,244,0,63,0,2,248,0,191,3,244,0,191,0,2,248,20,61,3,244,0,255,0,2,248,31,40,3,244,0,254,0,2,248,47,0,3,244,2,252,0,2,248,47,0,3,244,3,252,0,2,248,47,0,3,244,11,244,0,2,248,47,0,3,244,31,240,0,2,252,63,0,3,244,63,208,0,2,255,254,0,3,244,127,128,0,1,255,253,0,3,244,31,0,0,0,191,248,0,2,164,4,0,0,0,0,0, + // 0x6740 杀 + 64,103,34,36,68,38,2,252,0,0,0,0,0,0,13,0,0,0,36,0,0,0,0,127,128,0,0,255,128,0,0,2,255,192,0,1,255,249,0,0,31,254,0,0,0,47,255,208,0,191,244,0,0,0,1,255,254,7,255,192,0,0,0,0,31,255,255,253,0,0,0,0,0,1,191,255,240,0,0,0,0,0,0,127,255,240,0,0,0,0,0,7,255,255,254,0,0,0,0,0,191,255,139,255,224,0,0,0,27,255,248,0,191,254,0,0,6,255,255,64,0,15,255,224,0,127,255,244,0,0,1,255,252,0,47,254,64,1,84,0,31,244,0,15,208,0,3,252,0,2,208,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,3,228,3,252,0,180,0,0,0,11,248,3,252,3,253,0,0,0,31,240,3,252,1,255,64,0,0,127,192,3,252,0,127,224,0,1,255,64,3,252,0,31,248,0,7,253,0,3,252,0,3,254,0,47,248,0,3,252,0,0,255,64,255,208,0,3,252,0,0,127,208,191,64,5,87,252,0,0,31,208,45,0,7,255,252,0,0,10,0,0,0,3,255,244,0,0,0,0,0,0,2,255,128,0,0,0,0, + // 0x675f 束 + 95,103,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,21,85,85,87,253,85,85,85,64,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,1,255,255,255,255,255,255,248,0,1,255,255,255,255,255,255,248,0,1,255,255,255,255,255,255,248,0,1,252,0,3,252,0,3,248,0,1,252,0,3,252,0,3,248,0,1,252,0,3,252,0,3,248,0,1,252,0,3,252,0,3,248,0,1,252,0,3,252,0,3,248,0,1,252,0,3,252,0,3,248,0,1,255,255,255,255,255,255,248,0,1,255,255,255,255,255,255,248,0,1,255,255,255,255,255,255,248,0,0,0,0,127,255,208,0,0,0,0,0,1,255,255,244,0,0,0,0,0,7,255,255,253,0,0,0,0,0,47,247,252,255,128,0,0,0,1,255,211,252,63,244,0,0,0,11,255,3,252,15,254,0,0,0,127,252,3,252,3,255,224,0,7,255,224,3,252,0,191,254,0,191,255,64,3,252,0,31,255,224,255,248,0,3,252,0,2,255,240,63,128,0,3,252,0,0,47,192,24,0,0,3,252,0,0,2,64,0,0,0,3,248,0,0,0,0, + // 0x6761 条 + 97,103,34,36,68,38,2,252,0,0,0,164,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,63,255,255,255,248,0,0,0,0,255,255,255,255,254,0,0,0,3,255,255,255,255,252,0,0,0,31,255,0,0,15,244,0,0,0,191,255,192,0,63,224,0,0,7,255,175,240,0,255,192,0,0,63,253,11,253,7,255,0,0,0,15,240,2,255,175,248,0,0,0,7,64,0,127,255,224,0,0,0,0,0,0,47,255,192,0,0,0,0,0,1,255,255,253,0,0,0,0,0,111,255,255,255,244,0,0,0,91,255,253,2,255,255,249,64,111,255,255,208,0,47,255,255,240,127,255,248,2,248,1,191,255,208,63,254,64,3,248,0,1,191,128,30,64,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,1,255,255,244,0,0,0,0,0,7,255,255,253,0,0,0,0,0,47,243,248,255,128,0,0,0,1,255,195,248,63,244,0,0,0,11,254,3,248,15,255,64,0,0,191,248,3,248,2,255,244,0,27,255,208,3,248,0,127,255,128,255,254,0,3,248,0,7,255,240,191,224,0,3,248,0,0,191,208,62,0,0,3,248,0,0,7,128,0,0,0,3,248,0,0,0,0, + // 0x6765 来 + 101,103,36,36,68,38,1,252,0,0,0,0,170,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,1,85,85,85,255,85,85,85,64,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,0,0,64,0,255,0,1,64,0,0,11,224,0,255,0,3,248,0,0,11,240,0,255,0,11,244,0,0,3,248,0,255,0,15,240,0,0,2,252,0,255,0,47,208,0,0,0,254,0,255,0,63,192,0,0,0,191,0,255,0,191,0,0,0,0,127,0,255,0,254,0,0,0,0,36,0,255,0,44,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,21,85,85,111,255,249,85,85,84,0,0,0,63,255,252,0,0,0,0,0,0,255,255,255,0,0,0,0,0,2,253,255,127,192,0,0,0,0,15,248,255,47,240,0,0,0,0,63,240,255,15,252,0,0,0,0,255,192,255,3,255,0,0,0,7,255,0,255,0,255,208,0,0,47,252,0,255,0,63,248,0,1,255,224,0,255,0,15,255,64,31,255,128,0,255,0,2,255,244,127,253,0,0,255,0,0,127,253,47,224,0,0,255,0,0,15,248,15,64,0,0,255,0,0,1,240,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0, + // 0x677f 板 + 127,103,36,36,68,38,1,252,0,7,224,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,11,224,0,21,85,85,85,80,0,11,224,0,255,255,255,255,252,0,11,224,0,255,255,255,255,252,0,11,224,0,255,255,255,255,252,0,11,224,0,254,0,0,0,0,0,11,224,0,254,0,0,0,0,63,255,255,244,254,0,0,0,0,63,255,255,244,254,0,0,0,0,63,255,255,244,254,0,0,0,0,21,95,245,80,254,0,0,0,0,0,31,224,0,255,255,255,255,224,0,47,224,0,255,255,255,255,244,0,63,240,0,255,255,255,255,240,0,63,252,0,255,248,0,11,240,0,191,254,0,255,252,0,15,224,0,255,255,64,254,252,0,31,208,1,255,255,192,253,254,0,47,192,2,251,235,240,253,127,0,63,128,3,235,227,249,252,63,64,127,64,11,219,225,245,252,47,192,255,0,15,203,224,225,252,31,209,254,0,47,139,224,66,252,15,243,252,0,127,11,224,3,248,7,251,248,0,190,11,224,3,244,3,255,240,0,60,11,224,7,240,0,255,208,0,40,11,224,11,240,0,255,192,0,0,11,224,15,224,2,255,224,0,0,11,224,31,208,11,255,248,0,0,11,224,63,192,47,251,254,0,0,11,224,127,129,255,209,255,208,0,11,224,255,11,255,64,127,253,0,11,225,254,15,253,0,31,253,0,11,224,124,7,224,0,2,244,0,11,224,4,2,64,0,0,96, + // 0x6797 林 + 151,103,36,36,68,38,1,252,0,1,252,0,0,0,190,0,0,0,1,252,0,0,0,254,0,0,0,1,252,0,0,0,254,0,0,0,1,252,0,0,0,254,0,0,0,1,252,0,0,0,254,0,0,0,1,252,0,0,0,254,0,0,0,1,252,0,0,0,254,0,0,0,1,252,0,0,0,254,0,0,21,86,253,85,5,85,255,85,80,63,255,255,255,31,255,255,255,248,63,255,255,255,31,255,255,255,248,63,255,255,255,31,255,255,255,248,0,3,252,0,0,2,255,128,0,0,7,254,0,0,3,255,192,0,0,15,255,128,0,7,255,208,0,0,15,255,224,0,15,255,224,0,0,47,255,244,0,15,255,240,0,0,63,254,253,0,47,255,248,0,0,127,252,255,0,63,255,252,0,0,254,252,127,192,191,254,253,0,1,249,252,47,64,253,254,127,0,3,245,252,14,3,252,254,63,64,11,241,252,4,7,244,254,47,192,15,209,252,0,15,240,254,15,208,63,193,252,0,63,208,254,15,240,191,65,252,0,191,128,254,7,252,127,1,252,2,255,0,254,3,254,44,1,252,3,253,0,254,0,252,20,1,252,0,248,0,254,0,176,0,1,252,0,160,0,254,0,0,0,1,252,0,0,0,254,0,0,0,1,252,0,0,0,254,0,0,0,1,252,0,0,0,254,0,0,0,1,252,0,0,0,254,0,0,0,1,252,0,0,0,254,0,0,0,1,252,0,0,0,190,0,0, + // 0x67f1 柱 + 241,103,36,36,68,38,1,252,0,3,240,0,0,28,0,0,0,0,3,240,0,0,191,64,0,0,0,3,240,0,0,255,224,0,0,0,3,240,0,0,47,252,0,0,0,3,240,0,0,7,255,0,0,0,3,240,0,0,0,255,192,0,0,3,240,0,0,0,63,128,0,0,3,240,0,85,85,95,85,84,63,255,255,252,255,255,255,255,252,63,255,255,252,255,255,255,255,252,63,255,255,252,255,255,255,255,252,21,95,245,84,0,1,253,0,0,0,15,240,0,0,1,253,0,0,0,15,240,0,0,1,253,0,0,0,47,244,0,0,1,253,0,0,0,63,252,0,0,1,253,0,0,0,63,255,0,0,1,253,0,0,0,191,255,192,0,1,253,0,0,0,255,255,224,0,1,253,0,0,1,251,247,244,63,255,255,255,248,3,243,242,253,63,255,255,255,248,7,227,240,253,63,255,255,255,248,15,211,240,120,21,86,254,85,80,47,195,240,32,0,1,253,0,0,63,67,240,0,0,1,253,0,0,191,3,240,0,0,1,253,0,0,61,3,240,0,0,1,253,0,0,40,3,240,0,0,1,253,0,0,0,3,240,0,0,1,253,0,0,0,3,240,0,0,1,253,0,0,0,3,240,0,0,1,253,0,0,0,3,240,15,255,255,255,255,254,0,3,240,15,255,255,255,255,254,0,3,240,15,255,255,255,255,254,0,3,240,5,85,85,85,85,84,0,2,160,0,0,0,0,0,0, + // 0x6821 校 + 33,104,36,36,68,38,1,252,0,6,144,0,0,2,160,0,0,0,11,224,0,0,3,244,0,0,0,11,224,0,0,3,244,0,0,0,11,224,0,0,3,244,0,0,0,11,224,0,0,3,244,0,0,0,11,224,1,85,87,249,85,84,0,11,224,11,255,255,255,255,252,0,11,224,11,255,255,255,255,252,63,255,250,171,255,255,255,255,252,63,255,255,240,0,0,0,0,0,63,255,255,240,7,128,0,180,0,21,95,229,80,15,240,3,252,0,0,31,224,0,31,208,0,255,0,0,47,224,0,63,192,0,127,192,0,63,240,0,255,64,0,47,224,0,63,248,2,254,0,0,15,244,0,191,253,11,252,0,1,67,252,0,255,255,31,251,192,3,253,253,1,255,255,139,207,224,3,248,248,2,255,239,210,7,240,7,244,64,3,235,231,240,3,248,15,240,0,11,219,226,240,2,252,31,224,0,15,203,224,208,0,254,63,192,0,47,139,224,64,0,191,191,64,0,63,11,224,0,0,63,255,0,0,190,11,224,0,0,31,253,0,0,61,11,224,0,0,15,252,0,0,40,11,224,0,0,47,254,0,0,0,11,224,0,0,191,255,128,0,0,11,224,0,2,255,191,240,0,0,11,224,0,31,253,31,253,0,0,11,224,0,191,244,7,255,208,0,11,224,27,255,192,1,255,253,0,11,224,63,253,0,0,63,252,0,11,224,31,224,0,0,11,244,0,11,208,10,0,0,0,0,160, + // 0x683c 格 + 60,104,36,36,68,38,1,252,0,11,224,0,0,121,0,0,0,0,11,224,0,0,255,0,0,0,0,11,224,0,0,254,0,0,0,0,11,224,0,3,252,0,0,0,0,11,224,0,7,255,255,255,64,0,11,224,0,15,255,255,255,128,0,11,224,0,47,255,255,255,64,0,11,224,0,127,192,0,255,0,63,255,255,245,255,208,1,253,0,63,255,255,251,255,240,3,252,0,63,255,255,255,251,248,7,244,0,21,95,245,127,225,253,31,240,0,0,31,224,15,192,255,63,192,0,0,47,244,3,0,63,255,64,0,0,63,252,0,0,31,254,0,0,0,63,255,0,0,15,253,0,0,0,127,255,128,0,127,255,128,0,0,191,255,208,2,255,255,240,0,0,255,231,240,15,255,47,254,0,1,255,227,240,191,248,7,255,224,3,251,225,219,255,208,0,255,254,7,235,224,255,255,0,0,47,252,15,203,224,127,255,255,255,255,248,31,203,224,47,191,255,255,255,144,63,75,224,0,127,255,255,255,128,191,11,224,0,127,0,0,63,128,125,11,224,0,127,0,0,63,128,56,11,224,0,127,0,0,63,128,16,11,224,0,127,0,0,63,128,0,11,224,0,127,0,0,63,128,0,11,224,0,127,0,0,63,128,0,11,224,0,127,255,255,255,128,0,11,224,0,127,255,255,255,128,0,11,224,0,127,255,255,255,128,0,11,224,0,127,0,0,63,128,0,6,144,0,106,0,0,42,64, + // 0x68af 梯 + 175,104,35,36,68,38,1,252,0,11,208,0,1,0,0,36,0,0,11,224,0,63,0,0,127,64,0,11,224,0,63,128,0,255,0,0,11,224,0,31,192,0,254,0,0,11,224,0,15,208,2,252,0,0,11,224,0,11,240,3,248,0,0,11,224,0,7,208,2,240,0,0,11,224,7,255,255,255,255,240,21,95,229,87,255,255,255,255,240,63,255,255,247,255,255,255,255,240,63,255,255,240,0,7,240,7,240,63,255,255,240,0,7,240,7,240,0,15,224,0,0,7,240,7,240,0,31,224,0,0,7,240,7,240,0,63,240,2,255,255,255,255,240,0,63,248,2,255,255,255,255,240,0,127,253,3,255,255,255,255,240,0,191,255,3,244,7,240,0,0,0,255,255,131,240,7,240,0,0,1,255,239,199,240,7,240,0,0,3,255,231,251,240,7,240,0,0,7,219,227,235,255,255,255,255,252,15,203,225,207,255,255,255,255,252,31,139,224,15,255,255,255,255,252,63,75,224,31,192,63,240,2,252,191,11,224,0,0,255,240,2,248,125,11,224,0,2,255,240,2,248,60,11,224,0,11,255,240,3,248,16,11,224,0,63,215,240,3,244,0,11,224,1,255,135,240,7,244,0,11,224,11,254,7,242,255,240,0,11,224,191,248,7,241,255,224,0,11,224,191,208,7,241,255,128,0,11,224,46,0,7,240,0,0,0,11,224,4,0,7,240,0,0,0,11,208,0,0,7,240,0,0, + // 0x68c0 检 + 192,104,36,36,68,38,1,252,0,31,128,0,0,15,128,0,0,0,31,192,0,0,47,192,0,0,0,31,192,0,0,63,192,0,0,0,31,192,0,0,255,240,0,0,0,31,192,0,2,255,248,0,0,0,31,192,0,7,250,254,0,0,0,31,192,0,15,240,191,192,0,63,255,255,64,63,192,47,240,0,63,255,255,64,255,64,11,253,0,63,255,255,67,253,0,2,255,64,21,127,213,31,248,0,0,191,224,0,63,192,191,224,0,0,47,253,0,63,211,255,255,255,255,251,253,0,127,243,254,63,255,255,241,252,0,191,248,244,63,255,255,240,52,0,255,252,64,0,0,0,0,0,1,255,254,0,0,0,0,0,0,2,255,239,64,0,1,0,5,0,3,255,207,193,128,47,0,15,208,7,239,207,79,192,31,64,15,192,15,223,198,11,208,15,128,31,128,31,159,192,3,240,15,192,63,64,63,95,192,3,240,15,192,63,0,127,31,192,2,244,11,192,190,0,126,31,192,1,248,11,208,252,0,60,31,192,0,252,7,225,248,0,24,31,192,0,252,7,227,240,0,0,31,192,0,252,0,3,240,0,0,31,192,0,0,0,11,208,0,0,31,192,0,0,0,15,192,0,0,31,192,0,0,0,47,64,0,0,31,192,255,255,255,255,255,244,0,31,192,255,255,255,255,255,244,0,31,192,255,255,255,255,255,244,0,31,192,0,0,0,0,0,0,0,31,128,0,0,0,0,0,0, + // 0x69fd 槽 + 253,105,36,36,68,38,1,252,0,15,192,0,1,248,31,128,0,0,15,192,0,1,248,31,128,0,0,15,192,0,1,248,31,128,0,0,15,192,63,255,255,255,255,253,0,15,192,63,255,255,255,255,253,0,15,192,63,255,255,255,255,253,0,15,192,0,1,248,31,128,0,0,15,192,0,1,248,31,128,0,21,95,213,15,255,255,255,255,244,63,255,255,207,255,255,255,255,244,63,255,255,207,213,253,111,151,244,63,255,255,207,192,248,31,2,244,0,47,192,15,192,248,31,2,244,0,63,192,15,255,255,255,255,244,0,63,192,15,255,255,255,255,244,0,127,224,15,213,249,111,87,244,0,191,244,15,192,248,31,2,244,0,255,252,15,192,248,31,2,244,1,255,254,15,255,255,255,255,244,3,255,239,79,255,255,255,255,244,3,239,207,197,85,85,85,85,80,11,223,199,192,0,0,0,0,0,15,207,195,1,255,255,255,255,192,47,79,192,1,255,255,255,255,192,63,15,192,1,254,170,170,191,192,190,15,192,1,252,0,0,47,192,60,15,192,1,252,0,0,47,192,40,15,192,1,255,255,255,255,192,0,15,192,1,255,255,255,255,192,0,15,192,1,253,85,85,127,192,0,15,192,1,252,0,0,47,192,0,15,192,1,252,0,0,47,192,0,15,192,1,255,255,255,255,192,0,15,192,1,255,255,255,255,192,0,15,192,1,254,170,170,191,192,0,15,192,1,252,0,0,31,192, + // 0x6a21 模 + 33,106,36,37,77,38,1,251,0,47,128,0,15,208,7,240,0,0,47,128,0,15,208,7,240,0,0,47,128,0,15,208,7,240,0,0,47,128,63,255,255,255,255,248,0,47,128,63,255,255,255,255,248,0,47,128,63,255,255,255,255,248,0,47,128,0,15,208,7,240,0,21,111,213,0,15,208,7,240,0,63,255,255,64,15,208,7,240,0,63,255,255,70,170,170,170,170,128,63,255,255,75,255,255,255,255,192,0,47,128,11,255,255,255,255,192,0,63,192,11,224,0,0,31,192,0,63,208,11,224,0,0,31,192,0,127,240,11,245,85,85,111,192,0,191,248,11,255,255,255,255,192,0,255,253,11,255,255,255,255,192,1,255,255,11,224,0,0,31,192,2,255,175,139,224,0,0,31,192,3,255,143,203,255,255,255,255,192,7,255,139,139,255,255,255,255,192,15,239,130,6,170,175,234,170,128,31,175,128,0,0,31,192,0,0,63,111,128,0,0,47,192,0,0,127,47,128,0,0,47,192,0,0,190,47,128,255,255,255,255,255,252,60,47,128,255,255,255,255,255,252,40,47,128,255,255,255,255,255,252,0,47,128,0,0,255,254,0,0,0,47,128,0,3,252,127,64,0,0,47,128,0,15,248,63,224,0,0,47,128,0,191,224,15,253,0,0,47,128,27,255,128,3,255,228,0,47,130,255,253,0,0,191,253,0,47,128,255,208,0,0,15,248,0,47,128,120,0,0,0,0,176,0,0,0,0,0,0,0,0,0, + // 0x6a59 橙 + 89,106,36,36,68,38,1,252,0,15,208,0,0,0,25,0,0,0,15,208,11,255,244,126,5,0,0,15,208,15,255,252,63,31,64,0,15,208,15,255,252,63,191,128,0,15,208,0,2,244,47,253,0,0,15,208,4,3,240,15,224,32,0,15,208,15,75,240,15,224,248,0,15,208,47,255,208,7,247,253,63,255,255,219,255,192,3,255,244,63,255,255,209,255,64,1,255,192,63,255,255,208,255,255,255,255,0,21,95,229,66,255,255,255,255,128,0,47,208,11,255,255,255,239,224,0,63,208,47,240,0,0,15,252,0,63,224,255,192,0,0,3,255,0,127,244,255,0,0,0,0,252,0,191,252,61,255,255,255,255,96,0,255,255,0,255,255,255,255,64,1,255,255,128,254,170,170,191,64,2,255,223,208,252,0,0,63,64,3,239,215,240,252,0,0,63,64,11,223,210,192,252,0,0,63,64,15,207,208,64,254,170,170,191,64,47,143,208,0,255,255,255,255,64,127,15,208,0,255,255,255,255,64,190,15,208,0,1,0,1,144,0,60,15,208,0,47,64,2,252,0,40,15,208,0,31,192,3,248,0,0,15,208,0,15,192,7,240,0,0,15,208,0,15,208,11,224,0,0,15,208,0,11,224,15,192,0,0,15,208,0,7,128,11,128,0,0,15,208,127,255,255,255,255,253,0,15,208,127,255,255,255,255,253,0,15,208,127,255,255,255,255,253,0,15,208,0,0,0,0,0,0, + // 0x6b62 止 + 98,107,34,34,50,38,2,254,0,0,0,0,106,0,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,21,0,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,255,255,255,0,0,63,128,0,127,255,255,255,0,0,63,128,0,127,255,255,255,0,0,63,128,0,127,170,170,170,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,170,191,234,170,191,170,170,170,160,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x6b63 正 + 99,107,34,32,32,38,2,253,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,21,85,85,85,255,85,85,85,64,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,255,255,252,0,0,63,128,0,255,255,255,252,0,0,63,128,0,255,255,255,252,0,0,63,128,0,255,85,85,84,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,85,85,85,85,85,85,80, + // 0x6b65 步 + 101,107,34,36,68,38,2,252,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,5,64,2,252,0,0,0,0,0,31,192,2,252,0,0,0,0,0,31,192,2,255,255,255,240,0,0,31,192,2,255,255,255,240,0,0,31,192,2,255,255,255,240,0,0,31,192,2,253,85,85,80,0,0,31,192,2,252,0,0,0,0,0,31,192,2,252,0,0,0,0,0,31,192,2,252,0,0,0,0,85,111,213,87,253,85,85,85,80,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,2,252,0,0,0,0,0,2,144,2,252,0,0,0,0,0,7,252,2,252,0,6,0,0,0,15,244,2,252,0,15,240,0,0,63,224,2,252,0,31,224,0,0,255,192,2,252,0,63,208,0,7,255,0,2,252,0,127,192,0,47,252,0,2,252,0,255,64,0,191,240,0,3,252,2,254,0,0,47,192,7,255,248,11,252,0,0,10,0,3,255,244,47,244,0,0,0,0,2,255,144,191,224,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,47,254,0,0,0,0,0,0,2,255,244,0,0,0,0,0,0,127,255,192,0,0,0,0,0,111,255,253,0,0,0,0,2,191,255,255,208,0,0,0,0,2,255,255,249,0,0,0,0,0,0,255,254,64,0,0,0,0,0,0,185,64,0,0,0,0,0,0, + // 0x6bd4 比 + 212,107,36,35,59,38,1,253,0,26,128,0,0,168,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,7,128,0,47,192,0,1,253,0,47,208,0,47,192,0,1,253,1,255,244,0,47,255,255,193,253,31,255,208,0,47,255,255,193,254,255,254,0,0,47,255,255,193,255,255,224,0,0,47,229,85,65,255,253,0,0,0,47,192,0,1,255,144,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,160,0,47,192,0,1,253,0,0,190,0,47,192,0,17,253,0,0,190,0,47,192,91,241,253,0,0,254,0,47,239,255,245,253,0,0,253,1,191,255,255,244,253,0,0,253,127,255,255,254,64,255,85,87,252,63,255,254,64,0,255,255,255,248,63,254,64,0,0,127,255,255,240,25,0,0,0,0,11,255,255,128, + // 0x6ca1 没 + 161,108,35,36,68,38,2,252,1,0,0,0,0,0,0,0,0,3,208,0,1,85,85,85,0,0,15,253,0,15,255,255,255,0,0,11,255,192,15,255,255,255,0,0,1,255,240,15,255,255,255,0,0,0,31,240,15,224,0,127,0,0,0,2,192,15,224,0,127,0,0,0,0,64,15,224,0,127,0,0,0,0,0,15,208,0,127,1,208,0,0,0,31,192,0,127,1,248,0,0,0,63,192,0,127,1,244,61,0,0,191,128,0,127,2,244,255,208,2,255,0,0,127,255,240,255,252,11,253,0,0,63,255,240,31,255,31,248,0,0,11,255,128,1,255,3,208,0,0,0,0,0,0,60,1,64,0,0,0,0,0,0,4,3,255,255,255,255,248,0,0,0,3,255,255,255,255,253,0,0,0,3,255,255,255,255,252,0,0,0,1,87,213,85,91,248,0,0,3,128,15,240,0,15,240,0,0,7,224,7,244,0,47,224,0,0,15,240,3,252,0,127,192,0,0,47,208,1,255,0,255,64,0,0,63,192,0,191,195,254,0,0,0,191,64,0,63,255,252,0,0,0,255,0,0,15,255,240,0,0,2,253,0,0,7,255,192,0,0,3,252,0,0,47,255,244,0,0,11,244,0,2,255,255,255,64,0,31,240,1,191,255,199,255,249,0,63,208,111,255,253,0,191,255,244,47,192,63,255,208,0,31,255,240,7,0,47,248,0,0,0,191,208,0,0,13,0,0,0,0,2,128, + // 0x6ce2 波 + 226,108,35,36,68,38,1,252,0,0,0,0,0,47,128,0,0,0,244,0,0,0,47,192,0,0,3,255,0,0,0,47,192,0,0,3,255,224,0,0,47,192,0,0,0,127,252,0,0,47,192,0,0,0,11,248,21,85,111,213,85,64,0,1,240,191,255,255,255,255,252,0,0,0,191,255,255,255,255,252,0,0,0,191,255,255,255,255,248,0,0,0,191,0,47,192,7,240,0,0,0,191,0,47,192,15,240,14,0,0,191,0,47,192,15,208,63,224,0,191,0,47,192,47,192,127,254,0,191,0,47,192,7,64,11,255,192,191,0,47,192,0,0,0,191,128,191,255,255,255,255,64,0,31,0,191,255,255,255,255,128,0,0,0,191,255,255,255,255,64,0,0,0,191,191,0,0,191,0,0,0,0,190,63,0,0,254,0,0,0,0,254,63,128,2,253,0,0,3,64,254,31,192,3,252,0,0,7,224,253,15,240,7,244,0,0,15,240,253,7,248,15,240,0,0,15,224,252,2,253,63,208,0,0,47,193,252,0,255,191,128,0,0,63,130,252,0,127,255,0,0,0,191,3,248,0,47,253,0,0,0,255,7,244,0,47,253,0,0,2,253,11,240,0,255,255,128,0,3,252,15,224,7,255,255,244,0,11,244,31,208,127,253,47,255,64,31,240,63,203,255,240,7,255,248,31,208,191,79,255,128,0,191,252,3,192,127,7,248,0,0,11,240,0,0,5,2,128,0,0,0,160, + // 0x6ce8 注 + 232,108,36,36,68,38,1,252,0,64,0,0,6,0,0,0,0,0,253,0,0,31,208,0,0,0,3,255,192,0,63,252,0,0,0,1,255,248,0,31,255,128,0,0,0,47,254,0,2,255,240,0,0,0,2,252,0,0,127,252,0,0,0,0,120,0,0,15,253,0,0,0,0,0,0,0,2,248,0,0,0,0,0,85,85,85,245,85,80,0,0,0,255,255,255,255,255,248,0,0,0,255,255,255,255,255,248,14,0,0,255,255,255,255,255,248,63,244,0,0,0,47,192,0,0,127,255,0,0,0,47,192,0,0,11,255,208,0,0,47,192,0,0,0,191,192,0,0,47,192,0,0,0,15,64,0,0,47,192,0,0,0,1,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,5,85,111,213,85,64,0,0,0,31,255,255,255,255,208,0,0,112,31,255,255,255,255,208,0,0,252,31,255,255,255,255,208,0,1,253,0,0,47,192,0,0,0,3,252,0,0,47,192,0,0,0,11,244,0,0,47,192,0,0,0,15,240,0,0,47,192,0,0,0,47,208,0,0,47,192,0,0,0,127,192,0,0,47,192,0,0,0,255,64,0,0,47,192,0,0,2,254,0,0,0,47,192,0,0,3,252,3,255,255,255,255,255,253,15,248,3,255,255,255,255,255,253,3,240,3,255,255,255,255,255,253,0,208,1,85,85,85,85,85,84,0,0,0,0,0,0,0,0,0, + // 0x6d17 洗 + 23,109,35,36,68,38,2,252,1,0,0,0,0,127,0,0,0,11,208,0,15,224,127,0,0,0,31,248,0,15,224,127,0,0,0,11,255,64,31,208,127,0,0,0,1,255,208,47,192,127,0,0,0,0,47,208,63,192,127,0,0,0,0,7,64,63,255,255,255,255,192,0,0,0,127,255,255,255,255,192,0,0,0,255,255,255,255,255,192,0,0,1,254,85,191,85,85,64,16,0,2,252,0,127,0,0,0,125,0,7,248,0,127,0,0,0,255,192,15,244,0,127,0,0,0,255,244,15,240,0,127,0,0,0,47,254,1,192,0,127,0,0,0,3,255,0,0,0,127,0,0,0,0,188,15,255,255,255,255,255,244,0,20,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,5,85,255,85,254,85,80,0,0,0,0,254,0,252,0,0,0,14,0,0,253,0,252,0,0,0,15,192,0,253,0,252,0,0,0,47,192,1,252,0,252,0,0,0,63,128,2,252,0,252,0,0,0,191,0,3,252,0,252,0,0,0,254,0,3,248,0,252,0,64,2,252,0,11,240,0,252,0,244,3,252,0,15,240,0,252,0,252,11,244,0,63,208,0,252,0,252,15,240,0,255,192,0,253,1,252,47,208,7,255,0,0,253,2,248,63,192,127,252,0,0,255,255,244,47,64,127,240,0,0,191,255,240,7,0,47,128,0,0,47,255,192,0,0,8,0,0,0,0,0,0, + // 0x6d3b 活 + 59,109,35,36,68,38,2,252,0,0,0,0,0,0,0,36,0,3,192,0,0,0,0,27,253,0,15,248,0,0,1,107,255,255,0,15,255,128,26,255,255,255,254,0,2,255,240,255,255,255,254,64,0,0,47,240,127,255,255,64,0,0,0,7,208,62,148,63,0,0,0,0,0,64,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,16,0,1,85,85,127,149,85,80,62,0,11,255,255,255,255,255,244,255,224,11,255,255,255,255,255,244,127,253,11,255,255,255,255,255,244,11,255,64,0,0,63,0,0,0,0,254,0,0,0,63,0,0,0,0,28,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,127,64,0,0,0,3,64,63,255,255,255,255,0,0,7,208,63,255,255,255,255,0,0,15,240,63,255,255,255,255,0,0,31,208,63,0,0,0,127,0,0,63,192,63,0,0,0,127,0,0,191,64,63,0,0,0,127,0,0,255,0,63,0,0,0,127,0,2,253,0,63,0,0,0,127,0,7,252,0,63,0,0,0,127,0,15,244,0,63,0,0,0,127,0,47,224,0,63,255,255,255,255,0,127,192,0,63,255,255,255,255,0,63,128,0,63,255,255,255,255,0,11,0,0,63,64,0,0,127,0,0,0,0,63,0,0,0,42,0, + // 0x6d41 流 + 65,109,35,36,68,38,2,252,1,0,0,0,0,253,0,0,0,7,224,0,0,0,253,0,0,0,15,254,0,0,0,253,0,0,0,11,255,192,0,0,253,0,0,0,0,191,240,0,0,253,0,0,0,0,31,235,255,255,255,255,255,240,0,2,203,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,0,0,63,208,0,0,0,0,0,0,0,63,192,7,0,0,0,0,0,0,127,0,47,208,0,125,0,0,0,254,0,15,240,0,255,208,0,1,252,0,3,252,0,255,253,0,3,254,171,255,255,0,31,255,7,255,255,255,255,255,192,1,254,7,255,255,255,255,255,224,0,44,3,255,250,149,80,15,240,0,0,1,0,0,0,0,3,208,0,0,0,26,64,84,6,145,0,0,0,0,47,128,252,11,224,0,0,1,0,47,128,252,11,224,0,0,7,128,47,128,252,11,224,0,0,15,224,47,128,252,11,224,0,0,31,224,47,128,252,11,224,0,0,63,192,47,64,252,11,224,0,0,127,128,63,64,252,11,224,0,0,255,0,63,64,252,11,224,0,1,254,0,127,0,252,11,224,64,3,252,0,191,0,252,11,224,180,7,248,0,254,0,252,11,224,184,15,240,2,252,0,252,11,224,248,47,224,11,248,0,252,11,224,248,63,192,31,240,0,252,11,255,244,47,128,63,208,0,252,3,255,240,7,0,31,64,0,0,1,255,208,0,0,5,0,0,0,0,0,0, + // 0x6d4b 测 + 75,109,34,36,68,38,2,252,1,0,0,0,0,0,0,1,64,15,208,0,0,0,0,0,11,208,47,252,10,170,170,164,0,11,208,11,255,143,255,255,252,5,11,208,1,255,223,255,255,252,47,11,208,0,47,79,128,0,252,47,11,208,0,9,15,128,0,252,47,11,208,0,0,15,129,64,252,47,11,208,0,0,15,131,208,252,47,11,208,0,0,15,131,208,252,47,11,208,0,0,15,131,208,252,47,11,208,61,0,15,131,208,252,47,11,208,255,128,15,131,208,252,47,11,208,255,244,15,131,208,252,47,11,208,31,253,15,131,208,252,47,11,208,2,252,15,131,208,252,47,11,208,0,112,15,131,208,252,47,11,208,0,0,15,131,208,252,47,11,208,0,0,15,131,208,252,47,11,208,0,0,15,131,208,252,47,11,208,0,0,15,131,208,252,47,11,208,0,32,15,131,208,252,47,11,208,0,125,15,135,208,252,47,11,208,0,255,15,135,208,252,47,11,208,0,253,15,135,208,252,47,11,208,1,252,15,135,192,252,47,11,208,3,252,15,139,192,252,47,11,208,3,244,0,15,192,0,0,11,208,11,240,0,31,72,0,0,11,208,15,224,0,63,127,0,0,11,208,31,208,0,190,47,128,0,11,208,63,192,2,252,15,224,0,11,208,127,128,11,240,3,244,0,11,208,191,0,127,208,0,252,31,255,192,30,0,127,0,0,125,15,255,128,0,0,36,0,0,32,11,249,0, + // 0x6d88 消 + 136,109,34,37,77,38,2,251,1,0,0,0,0,127,0,0,0,7,192,0,20,0,127,0,9,0,31,248,1,252,0,127,0,31,208,15,255,64,254,0,127,0,63,192,1,255,208,191,64,127,0,63,128,0,63,224,63,192,127,0,191,0,0,11,128,47,208,127,1,254,0,0,1,0,15,240,127,3,252,0,0,0,0,11,224,127,3,244,0,0,0,0,2,0,127,0,96,0,0,0,0,0,0,127,0,0,0,56,0,0,191,255,255,255,255,0,255,128,0,191,255,255,255,255,0,255,244,0,191,255,255,255,255,0,31,254,0,191,85,85,85,191,0,2,255,0,191,0,0,0,127,0,0,125,0,191,0,0,0,127,0,0,24,0,191,0,0,0,127,0,0,0,0,191,255,255,255,255,0,0,0,0,191,255,255,255,255,0,0,0,0,191,255,255,255,255,0,0,7,0,191,0,0,0,127,0,0,15,192,191,0,0,0,127,0,0,15,208,191,0,0,0,127,0,0,47,192,191,0,0,0,127,0,0,63,128,191,255,255,255,255,0,0,191,0,191,255,255,255,255,0,0,254,0,191,255,255,255,255,0,2,253,0,191,0,0,0,127,0,3,252,0,191,0,0,0,127,0,11,244,0,191,0,0,0,127,0,15,240,0,191,0,0,0,127,0,63,208,0,191,0,0,80,191,0,63,192,0,191,0,1,255,255,0,15,64,0,191,0,0,255,254,0,2,0,0,191,0,0,191,228,0,0,0,0,0,0,0,0,0,0, + // 0x6de1 淡 + 225,109,36,35,59,38,1,253,0,0,0,0,0,47,128,0,0,0,224,0,0,0,47,128,0,0,3,254,0,1,0,63,128,4,0,7,255,208,11,240,63,128,31,208,0,191,248,15,208,63,128,63,192,0,15,252,31,192,63,64,127,128,0,1,240,47,128,63,64,255,0,0,0,64,127,64,127,2,252,0,0,0,0,255,0,191,3,244,0,0,0,0,124,0,255,209,224,0,0,0,0,0,2,255,252,0,0,14,0,0,0,7,255,255,128,0,63,208,0,0,31,244,255,248,0,127,253,0,0,191,224,31,255,0,11,255,128,31,255,128,2,255,224,0,255,194,255,253,0,0,63,240,0,31,0,255,208,63,128,11,208,0,0,0,121,0,63,128,1,128,0,0,0,0,0,63,128,0,0,0,0,0,11,144,63,64,15,144,0,2,0,15,208,63,64,31,240,0,3,208,31,192,63,64,63,192,0,11,240,63,128,127,192,127,128,0,15,240,127,64,191,192,255,0,0,47,208,255,0,255,226,253,0,0,63,194,253,1,255,247,248,0,0,191,64,184,3,255,252,160,0,0,255,0,0,11,250,254,0,0,2,254,0,0,31,240,255,64,0,7,252,0,0,191,208,127,224,0,15,244,0,11,255,128,31,253,0,31,240,6,255,253,0,7,255,228,15,208,15,255,240,0,0,255,253,2,192,7,255,64,0,0,31,244,0,0,2,144,0,0,0,0,160, + // 0x6df7 混 + 247,109,35,36,68,38,2,252,1,0,0,0,0,0,0,0,0,7,208,0,0,0,0,0,0,0,15,252,2,255,255,255,255,254,0,31,255,130,255,255,255,255,254,0,1,255,226,255,255,255,255,254,0,0,47,194,248,0,0,0,190,0,0,3,66,248,0,0,0,190,0,0,0,2,254,170,170,170,254,0,0,0,2,255,255,255,255,254,0,0,0,2,255,255,255,255,254,0,16,0,2,248,0,0,0,190,0,126,0,2,248,0,0,0,190,0,255,224,2,248,0,0,0,190,0,255,252,2,255,255,255,255,254,0,31,254,2,255,255,255,255,254,0,1,252,2,255,255,255,255,254,0,0,52,0,0,0,0,0,0,0,0,0,0,84,0,1,80,0,0,0,0,1,252,0,11,240,0,0,0,0,1,252,0,11,240,0,0,0,0,1,252,0,11,240,7,0,0,14,1,252,0,11,240,47,192,0,31,193,255,255,219,242,255,224,0,47,193,255,255,219,255,255,64,0,63,129,255,255,219,255,244,0,0,191,1,252,0,11,255,64,0,0,254,1,252,0,11,244,0,0,2,253,1,252,0,11,240,0,0,3,252,1,252,0,11,240,1,208,11,244,1,252,0,75,240,1,248,15,240,1,254,191,219,240,2,244,47,208,91,255,255,219,240,3,244,63,192,191,255,255,215,255,255,240,63,128,127,255,148,3,255,255,224,11,0,58,64,0,1,255,255,128,0,0,0,0,0,0,0,0,0, + // 0x6e05 清 + 5,110,36,37,77,38,1,251,0,128,0,0,0,47,128,0,0,2,253,0,0,0,63,128,0,0,7,255,192,106,170,191,234,170,160,0,255,244,255,255,255,255,255,240,0,31,252,255,255,255,255,255,240,0,3,240,0,0,63,128,0,0,0,0,160,0,0,63,128,0,0,0,0,0,63,255,255,255,255,208,0,0,0,63,255,255,255,255,208,0,0,0,21,85,127,213,85,64,0,0,0,0,0,63,128,0,0,14,0,0,0,0,63,128,0,0,63,224,3,255,255,255,255,255,253,127,254,3,255,255,255,255,255,253,11,255,194,170,170,170,170,170,169,0,191,192,0,0,0,0,0,0,0,31,0,6,170,170,170,170,64,0,1,0,11,255,255,255,255,128,0,0,0,11,255,255,255,255,128,0,0,0,11,224,0,0,47,128,0,0,0,11,224,0,0,47,128,0,0,208,11,229,85,85,127,128,0,2,244,11,255,255,255,255,128,0,3,248,11,255,255,255,255,128,0,11,244,11,224,0,0,47,128,0,15,240,11,224,0,0,47,128,0,47,208,11,229,85,85,127,128,0,63,192,11,255,255,255,255,128,0,191,64,11,255,255,255,255,128,0,255,0,11,224,0,0,47,128,2,253,0,11,224,0,0,47,128,7,252,0,11,224,0,0,47,128,15,244,0,11,224,0,0,63,128,15,240,0,11,224,0,127,255,128,3,208,0,11,224,0,63,255,0,0,64,0,11,224,0,47,249,0,0,0,0,0,0,0,0,0,0, + // 0x6e29 温 + 41,110,35,35,59,38,2,252,3,208,0,0,0,0,0,0,0,11,253,0,191,255,255,255,252,0,11,255,192,191,255,255,255,252,0,1,255,244,191,255,255,255,252,0,0,31,240,190,0,0,2,252,0,0,2,208,190,0,0,2,252,0,0,0,0,190,0,0,2,252,0,0,0,0,191,255,255,255,252,0,0,0,0,191,255,255,255,252,0,0,0,0,191,255,255,255,252,0,36,0,0,190,0,0,2,252,0,191,64,0,190,0,0,2,252,0,255,240,0,190,0,0,2,252,0,127,254,0,191,255,255,255,252,0,7,255,0,191,255,255,255,252,0,0,189,0,191,255,255,255,252,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,255,255,0,0,6,3,255,255,255,255,255,0,0,15,195,255,255,255,255,255,0,0,31,211,244,47,3,224,63,0,0,63,195,244,47,3,224,63,0,0,127,67,244,47,3,224,63,0,0,255,3,244,47,3,224,63,0,1,253,3,244,47,3,224,63,0,3,252,3,244,47,3,224,63,0,11,244,3,244,47,3,224,63,0,15,240,3,244,47,3,224,63,0,47,208,3,244,47,3,240,127,0,127,192,255,255,255,255,255,255,244,63,64,255,255,255,255,255,255,244,11,0,255,255,255,255,255,255,244,0,0,0,0,0,0,0,0,0, + // 0x6e38 游 + 56,110,35,37,77,38,2,251,0,0,0,63,64,1,164,0,0,15,128,0,63,64,2,252,0,0,47,244,0,63,64,3,248,0,0,31,255,0,63,64,3,244,0,0,2,255,128,63,64,7,240,0,0,0,127,0,63,64,11,255,255,244,0,13,255,255,255,207,255,255,244,0,0,255,255,255,239,255,255,244,0,0,255,255,255,255,213,85,80,0,0,87,249,85,191,64,0,0,0,0,3,244,0,255,0,0,0,61,0,3,244,1,254,0,0,0,255,208,3,240,0,127,255,255,208,255,248,3,240,0,11,255,255,240,31,253,3,244,0,7,255,255,224,2,248,3,255,255,64,0,63,192,0,48,3,255,255,64,0,191,0,0,0,7,255,255,64,6,253,0,0,0,7,240,63,64,15,244,0,0,0,11,240,63,0,15,224,0,0,0,11,224,63,0,15,208,0,0,160,11,224,63,63,255,255,244,0,253,15,208,63,63,255,255,244,0,253,15,192,63,63,255,255,244,2,252,15,192,63,0,15,224,0,3,248,31,192,63,0,15,208,0,7,244,47,128,63,0,15,208,0,11,240,63,64,127,0,15,208,0,15,224,127,0,127,0,15,208,0,31,208,254,0,127,0,15,208,0,47,193,252,0,190,0,15,208,0,63,131,252,0,254,0,15,208,0,191,71,244,1,253,0,15,208,0,255,15,224,255,252,15,255,208,0,46,7,192,191,248,15,255,192,0,0,1,64,127,224,11,254,0,0,0,0,0,0,0,0,0,0,0, + // 0x6e90 源 + 144,110,35,37,77,38,2,251,1,0,0,0,0,0,0,0,0,11,208,0,0,0,0,0,0,0,31,253,3,255,255,255,255,255,240,11,255,131,255,255,255,255,255,240,1,255,211,255,255,255,255,255,240,0,47,131,244,0,11,244,0,0,0,7,3,240,0,11,240,0,0,0,0,3,240,0,15,240,0,0,0,0,3,240,0,15,208,0,0,0,0,3,240,255,255,255,255,192,0,0,3,240,255,255,255,255,192,61,0,3,240,254,170,170,191,192,255,192,3,240,252,0,0,47,192,255,248,7,240,252,0,0,47,192,31,254,7,240,254,85,85,127,192,2,252,7,240,255,255,255,255,192,0,116,7,240,255,255,255,255,192,0,0,7,240,252,0,0,47,192,0,0,7,240,252,0,0,47,192,0,0,11,240,252,0,0,47,192,0,0,11,240,255,255,255,255,192,0,40,15,224,255,255,255,255,192,0,63,15,224,170,175,250,170,64,0,127,15,208,0,11,240,0,0,0,255,15,208,16,11,240,24,0,1,253,31,192,127,11,240,254,0,2,252,47,192,254,11,240,191,0,3,248,63,129,252,11,240,63,192,11,244,63,67,252,11,240,47,208,15,240,191,7,244,11,240,15,240,31,208,255,15,224,11,240,11,244,63,193,253,63,192,11,240,3,248,127,131,252,31,64,11,240,2,224,191,11,244,2,11,255,224,0,0,14,7,240,0,3,255,208,0,0,0,0,80,0,3,254,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x6ea2 溢 + 162,110,35,36,68,38,2,252,2,0,0,0,0,0,0,0,0,11,224,0,0,15,255,253,0,0,31,253,0,5,15,255,255,0,0,11,255,128,15,223,255,255,64,0,0,255,192,47,192,0,63,192,0,0,47,64,127,128,0,31,224,0,0,6,0,255,0,0,11,248,0,0,0,3,253,0,0,3,255,0,0,0,15,251,255,255,255,255,224,0,0,63,227,255,255,254,63,224,0,0,31,131,255,255,253,11,128,61,0,6,0,0,0,0,1,0,255,208,0,0,0,0,0,0,0,255,248,0,0,15,255,255,0,0,31,254,0,0,15,255,255,64,0,2,252,0,10,79,255,255,192,0,0,112,0,31,208,0,31,208,0,0,0,0,63,192,0,15,240,0,0,0,0,255,0,0,11,248,0,0,0,2,254,0,0,3,254,0,0,0,7,252,0,0,0,255,192,0,0,31,240,0,0,0,127,244,0,56,191,255,255,255,255,255,240,0,127,127,255,255,255,255,255,192,0,255,29,255,255,255,255,252,0,0,254,0,248,47,7,192,252,0,2,252,0,248,47,7,192,252,0,3,252,0,248,47,7,192,252,0,7,244,0,248,47,7,192,252,0,15,240,0,248,47,7,192,252,0,31,224,0,248,47,7,192,252,0,47,192,1,248,47,7,208,252,0,63,192,255,255,255,255,255,255,244,191,64,255,255,255,255,255,255,244,31,0,255,255,255,255,255,255,244,0,0,0,0,0,0,0,0,0, + // 0x6ed1 滑 + 209,110,35,36,68,38,1,252,0,144,0,0,0,0,0,0,0,2,253,0,7,255,255,255,253,0,3,255,192,11,255,255,255,253,0,0,255,248,11,255,255,255,253,0,0,31,252,11,224,0,0,253,0,0,3,244,11,224,0,0,253,0,0,0,176,11,224,21,85,253,0,0,0,0,11,224,63,255,253,0,0,0,0,11,224,63,255,253,0,0,0,0,11,224,62,0,253,0,0,0,0,11,224,62,0,253,0,14,0,0,11,224,62,0,253,0,63,224,7,255,255,255,255,255,252,127,254,7,255,255,255,255,255,252,11,255,199,250,170,170,170,171,252,0,191,135,240,0,0,0,1,252,0,15,7,240,0,0,0,1,252,0,0,7,251,255,255,255,254,252,0,0,2,171,255,255,255,254,168,0,0,0,11,255,255,255,253,0,0,0,0,11,224,0,0,253,0,0,0,208,11,224,0,0,253,0,0,2,248,11,255,255,255,253,0,0,7,248,11,255,255,255,253,0,0,15,240,11,250,170,170,253,0,0,31,224,11,224,0,0,253,0,0,63,192,11,224,0,0,253,0,0,127,128,11,255,255,255,253,0,0,255,0,11,255,255,255,253,0,1,254,0,11,250,170,170,253,0,3,252,0,11,224,0,0,253,0,11,248,0,11,224,0,0,253,0,15,240,0,11,224,0,0,253,0,11,224,0,11,224,1,255,253,0,1,192,0,11,224,0,255,252,0,0,0,0,10,144,0,170,144,0, + // 0x6f0f 漏 + 15,111,34,36,68,38,2,252,6,0,0,0,0,0,0,0,0,15,208,11,255,255,255,255,255,128,63,252,15,255,255,255,255,255,128,11,255,143,255,255,255,255,255,128,1,255,207,208,0,0,0,47,128,0,63,15,208,0,0,0,47,128,0,14,15,208,0,0,0,47,128,0,0,15,208,0,0,0,47,128,0,0,15,255,255,255,255,255,128,0,0,15,255,255,255,255,255,128,0,0,15,255,255,255,255,255,128,36,0,15,208,0,0,0,0,0,191,64,15,208,0,0,0,0,0,255,244,15,255,255,255,255,255,240,47,255,15,255,255,255,255,255,240,3,253,15,255,255,255,255,255,224,0,120,15,208,0,15,128,0,0,0,0,15,208,0,15,128,0,0,0,0,15,234,170,191,234,170,128,0,0,15,255,255,255,255,255,208,0,0,15,255,255,255,255,255,208,0,112,31,239,0,15,128,11,208,0,189,31,239,4,15,136,11,208,0,254,47,175,126,15,175,75,208,1,252,47,175,47,223,159,219,208,3,252,63,111,11,223,131,219,208,3,248,63,47,1,79,128,139,208,7,240,127,47,0,15,132,11,208,15,240,190,47,60,15,174,11,208,31,208,253,47,127,15,175,139,208,47,193,252,47,31,223,139,219,208,63,130,252,47,7,223,130,139,208,191,67,244,47,0,15,128,11,208,255,11,240,47,0,15,129,95,208,45,2,208,47,0,15,130,255,192,0,0,64,47,0,15,129,254,64, + // 0x6fc0 激 + 192,111,35,37,77,38,2,251,0,0,0,14,128,0,248,0,0,11,128,0,31,208,0,253,0,0,31,244,0,47,192,0,252,0,0,31,254,0,63,128,1,252,0,0,2,255,175,255,255,194,252,0,0,0,127,47,255,255,194,248,0,0,0,13,47,170,175,195,244,0,0,0,0,47,0,15,195,255,255,248,0,0,47,0,15,199,255,255,248,0,0,47,255,255,203,255,255,248,0,0,47,255,255,207,224,47,192,61,0,47,149,95,223,224,47,128,255,192,47,0,15,255,224,47,64,255,244,47,0,15,255,240,63,64,31,252,47,255,255,255,240,63,0,2,248,47,255,255,255,240,63,0,0,112,26,191,234,254,244,63,0,0,0,0,31,192,56,248,126,0,0,0,0,31,192,0,252,190,0,0,0,255,255,255,244,188,253,0,0,0,255,255,255,244,125,252,0,0,52,255,255,255,244,63,252,0,0,126,0,252,0,0,63,248,0,0,191,0,252,0,0,47,240,0,0,253,1,255,255,192,15,240,0,2,252,1,255,255,192,15,208,0,3,252,2,255,255,192,31,240,0,7,244,3,244,15,192,63,244,0,11,240,3,240,31,192,191,252,0,15,224,11,240,31,129,254,254,0,47,208,15,208,31,135,252,191,64,63,192,63,192,47,159,244,63,208,127,128,191,64,63,191,224,31,240,191,2,254,31,255,255,192,11,248,14,3,252,15,255,191,0,2,240,0,0,224,10,164,28,0,0,128,0,0,0,0,0,0,0,0,0, + // 0x706f 灯 + 111,112,35,36,68,38,2,252,0,10,144,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,3,255,255,255,255,244,0,15,208,3,255,255,255,255,244,0,15,208,3,255,255,255,255,244,0,15,208,1,85,85,255,149,80,0,15,208,144,0,0,191,0,0,47,15,208,252,0,0,191,0,0,47,15,209,248,0,0,191,0,0,47,15,210,244,0,0,191,0,0,63,15,211,240,0,0,191,0,0,63,15,215,224,0,0,191,0,0,63,15,219,192,0,0,191,0,0,126,15,223,128,0,0,191,0,0,125,15,235,0,0,0,191,0,0,188,15,208,0,0,0,191,0,0,252,15,208,0,0,0,191,0,0,20,15,192,0,0,0,191,0,0,0,31,192,0,0,0,191,0,0,0,31,192,0,0,0,191,0,0,0,47,192,0,0,0,191,0,0,0,63,224,0,0,0,191,0,0,0,63,248,0,0,0,191,0,0,0,127,254,0,0,0,191,0,0,0,191,191,128,0,0,191,0,0,0,255,47,224,0,0,191,0,0,1,254,15,248,0,0,191,0,0,3,252,3,252,0,0,191,0,0,7,248,1,240,0,0,191,0,0,15,240,0,144,0,0,191,0,0,63,224,0,0,0,0,191,0,0,191,192,0,0,31,255,255,0,0,255,64,0,0,15,255,255,0,0,61,0,0,0,11,255,252,0,0,8,0,0,0,6,170,64,0,0, + // 0x70b9 点 + 185,112,34,36,68,38,2,252,0,0,0,3,244,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,255,255,255,255,64,0,0,0,3,255,255,255,255,64,0,0,0,3,255,255,255,255,64,0,0,0,3,249,85,85,85,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,21,85,87,249,85,85,64,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,254,0,0,0,0,15,240,0,0,254,0,0,0,0,15,240,0,0,254,0,0,0,0,15,240,0,0,254,0,0,0,0,15,240,0,0,254,0,0,0,0,15,240,0,0,254,0,0,0,0,15,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,21,85,85,85,85,85,64,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,1,160,0,0,254,2,160,6,240,11,240,0,2,253,3,240,7,244,3,252,0,3,252,3,244,3,248,1,254,0,11,244,3,248,1,252,0,255,0,31,240,3,248,0,254,0,63,192,63,208,2,252,0,255,0,47,208,255,128,2,252,0,127,0,15,240,191,0,2,252,0,62,0,11,208,8,0,1,64,0,16,0,1,0, + // 0x70ed 热 + 237,112,35,37,77,38,2,251,0,10,128,0,3,244,0,0,0,0,15,192,0,3,244,0,0,0,0,15,192,0,3,244,0,0,0,0,15,192,0,3,244,0,0,0,0,15,192,0,3,244,0,0,0,21,95,213,64,3,244,0,0,0,127,255,255,223,255,255,255,240,0,127,255,255,223,255,255,255,240,0,127,255,255,223,255,255,255,240,0,0,15,192,0,3,240,7,240,0,0,15,192,0,3,240,7,240,0,0,15,192,0,7,240,7,240,0,0,15,192,80,7,240,7,240,0,0,15,255,210,11,224,7,240,0,1,191,255,231,239,224,7,224,0,191,255,255,223,255,208,7,224,0,255,255,228,3,255,208,7,224,0,255,239,192,0,127,244,7,240,0,184,15,192,0,63,255,7,240,0,0,15,192,0,191,255,211,240,128,0,15,192,0,255,63,227,240,248,0,15,192,3,253,11,195,240,248,0,15,192,15,248,1,66,249,248,31,255,192,127,240,0,1,255,244,15,255,192,191,192,0,0,255,240,11,254,0,46,0,0,0,47,192,0,0,0,4,0,0,0,0,0,0,164,0,0,0,0,0,176,0,1,254,2,240,7,240,7,244,0,3,252,3,244,3,248,3,252,0,7,244,3,248,2,252,1,255,0,15,240,2,248,1,253,0,191,128,47,208,2,252,0,254,0,63,192,127,192,2,252,0,255,0,31,240,255,0,1,252,0,191,0,15,240,29,0,1,144,0,16,0,7,64,0,0,0,0,0,0,0,0,0, + // 0x7247 片 + 71,114,32,37,40,38,2,251,0,0,0,0,7,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,234,170,170,170,170,170,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,0,0,0,0,0,0,0,191,170,170,170,170,168,0,0,191,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,254,0,0,0,3,252,0,1,254,0,0,0,3,252,0,2,253,0,0,0,3,252,0,3,252,0,0,0,3,252,0,7,252,0,0,0,3,252,0,11,244,0,0,0,3,252,0,15,240,0,0,0,3,252,0,47,224,0,0,0,3,252,0,127,192,0,0,0,3,252,0,255,128,0,0,0,3,252,0,255,0,0,0,0,3,252,0,61,0,0,0,0,3,252,0,24,0,0,0,0,3,252,0,0,0,0,0,0,0,0,0, + // 0x7269 物 + 105,114,35,36,68,38,1,252,0,2,244,0,2,144,0,0,0,0,2,248,0,7,240,0,0,0,5,66,248,0,11,240,0,0,0,11,210,248,0,15,224,0,0,0,11,210,248,0,15,192,0,0,0,15,194,248,0,31,192,0,0,0,15,194,248,0,63,213,85,85,84,15,194,248,0,63,255,255,255,252,15,255,255,240,191,255,255,255,252,31,255,255,240,255,255,255,255,252,47,255,255,242,252,15,194,249,252,63,87,249,83,248,31,131,245,252,63,2,248,11,240,63,3,241,252,126,2,248,31,224,63,7,241,252,189,2,248,63,192,190,11,226,252,124,2,248,47,64,252,15,210,248,4,2,248,6,2,252,15,194,248,0,2,248,4,3,244,47,130,248,0,2,254,248,7,240,63,67,248,0,7,255,252,15,208,127,3,244,1,191,255,248,63,192,190,3,244,127,255,254,64,127,64,252,3,244,127,255,248,0,254,2,252,3,240,63,230,248,3,252,3,244,3,240,40,2,248,15,244,11,240,7,240,0,2,248,15,224,15,224,7,240,0,2,248,2,128,47,192,11,240,0,2,248,0,0,127,128,11,224,0,2,248,0,0,255,0,15,224,0,2,248,0,3,253,0,15,208,0,2,248,0,15,248,0,31,192,0,2,248,0,47,240,0,63,192,0,2,248,0,255,192,191,255,128,0,2,248,0,127,0,127,255,0,0,2,248,0,12,0,63,253,0,0,2,248,0,0,0,21,64,0, + // 0x7279 特 + 121,114,36,36,68,38,1,252,0,2,248,0,0,3,244,0,0,0,2,248,0,0,3,244,0,0,6,66,248,0,0,3,244,0,0,11,210,248,0,0,3,244,0,0,15,210,248,0,255,255,255,255,224,15,194,248,0,255,255,255,255,224,15,194,248,0,255,255,255,255,224,15,195,248,0,0,7,244,0,0,31,255,255,240,0,3,244,0,0,31,255,255,240,0,3,244,0,0,47,255,255,240,0,3,244,0,0,63,2,248,5,85,87,249,85,84,63,2,248,31,255,255,255,255,253,126,2,248,31,255,255,255,255,253,189,2,248,31,255,255,255,255,253,60,2,248,0,0,0,2,252,0,4,2,248,0,0,0,2,252,0,0,2,248,120,0,0,2,252,0,0,2,255,252,0,0,2,252,0,0,47,255,255,255,255,255,255,252,27,255,255,239,255,255,255,255,252,127,255,248,15,255,255,255,255,252,63,255,248,1,85,85,86,253,84,62,66,248,0,28,0,2,252,0,0,2,248,0,191,0,2,252,0,0,2,248,0,127,192,2,252,0,0,2,248,0,47,224,2,252,0,0,2,248,0,15,244,2,252,0,0,2,248,0,3,252,2,252,0,0,2,248,0,1,248,2,252,0,0,2,248,0,0,208,2,252,0,0,2,248,0,0,0,2,252,0,0,2,248,0,0,9,87,252,0,0,2,248,0,0,11,255,252,0,0,2,248,0,0,7,255,244,0,0,2,248,0,0,3,255,144,0, + // 0x7387 率 + 135,115,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,0,0,0,31,208,0,0,0,0,1,0,0,47,192,0,0,52,0,11,208,0,127,0,64,0,255,0,47,248,5,253,2,244,3,254,0,7,255,31,248,7,240,31,244,0,0,191,239,240,31,208,191,192,0,0,31,67,253,63,128,62,0,0,0,5,0,191,254,0,0,0,0,0,0,0,31,248,96,0,0,0,0,0,144,15,243,244,56,0,0,0,31,224,63,192,253,255,64,0,2,255,240,191,0,191,255,244,0,127,255,191,255,255,255,159,254,0,191,244,63,255,255,255,194,255,192,63,64,63,255,250,159,224,63,208,20,0,0,3,248,3,208,11,64,0,0,0,3,248,1,0,0,0,0,0,0,3,248,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,21,85,85,87,253,85,85,85,80,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0, + // 0x73af 环 + 175,115,35,34,50,38,1,252,0,0,0,5,85,85,85,85,84,127,255,255,15,255,255,255,255,252,127,255,255,15,255,255,255,255,252,127,255,255,15,255,255,255,255,252,0,63,0,0,0,3,248,0,0,0,63,0,0,0,11,244,0,0,0,63,0,0,0,15,240,0,0,0,63,0,0,0,31,224,0,0,0,63,0,0,0,63,192,0,0,0,63,0,0,0,127,192,0,0,0,63,0,0,0,255,198,0,0,5,127,84,0,2,255,239,64,0,63,255,253,0,3,255,255,208,0,63,255,253,0,15,255,223,240,0,63,255,253,0,47,255,199,252,0,0,63,0,0,127,239,194,254,0,0,63,0,0,255,159,192,255,64,0,63,0,3,255,31,192,63,192,0,63,0,15,252,31,192,31,240,0,63,0,63,244,31,192,15,248,0,63,0,127,208,31,192,3,248,0,63,0,31,128,31,192,2,208,0,63,1,6,0,31,192,0,0,0,63,175,0,0,31,192,0,0,0,63,255,0,0,31,192,0,0,6,255,255,0,0,31,192,0,0,127,255,244,0,0,31,192,0,0,127,253,0,0,0,31,192,0,0,63,128,0,0,0,31,192,0,0,16,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0, + // 0x7528 用 + 40,117,33,34,50,38,1,252,0,21,85,85,85,85,85,85,64,0,63,255,255,255,255,255,255,192,0,63,255,255,255,255,255,255,192,0,63,255,255,255,255,255,255,192,0,63,64,0,127,0,0,63,192,0,63,64,0,127,0,0,63,192,0,63,64,0,127,0,0,63,192,0,63,64,0,127,0,0,63,192,0,63,64,0,127,0,0,63,192,0,63,85,85,191,85,85,127,192,0,63,255,255,255,255,255,255,192,0,63,255,255,255,255,255,255,192,0,63,255,255,255,255,255,255,192,0,63,64,0,127,0,0,63,192,0,63,64,0,127,0,0,63,192,0,127,0,0,127,0,0,63,192,0,127,0,0,127,0,0,63,192,0,127,0,0,127,0,0,63,192,0,127,0,0,127,0,0,63,192,0,127,255,255,255,255,255,255,192,0,191,255,255,255,255,255,255,192,0,191,255,255,255,255,255,255,192,0,255,85,85,191,85,85,127,192,0,254,0,0,127,0,0,63,192,1,253,0,0,127,0,0,63,192,2,252,0,0,127,0,0,63,192,3,252,0,0,127,0,0,63,192,7,248,0,0,127,0,0,63,192,11,240,0,0,127,0,0,63,192,31,224,0,0,127,0,0,63,128,63,192,0,0,127,3,255,255,128,127,128,0,0,127,2,255,255,64,31,0,0,0,127,1,255,253,0,5,0,0,0,0,0,85,0,0, + // 0x7535 电 + 53,117,33,36,68,38,4,252,0,0,0,63,64,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,21,85,85,191,213,85,85,64,0,127,255,255,255,255,255,255,192,0,127,255,255,255,255,255,255,192,0,127,255,255,255,255,255,255,192,0,127,64,0,63,128,0,47,192,0,127,64,0,63,128,0,47,192,0,127,64,0,63,128,0,47,192,0,127,64,0,63,128,0,47,192,0,127,64,0,63,128,0,47,192,0,127,255,255,255,255,255,255,192,0,127,255,255,255,255,255,255,192,0,127,255,255,255,255,255,255,192,0,127,64,0,127,128,0,63,192,0,127,64,0,63,128,0,47,192,0,127,64,0,63,128,0,47,192,0,127,64,0,63,128,0,47,192,0,127,64,0,63,128,0,47,192,0,127,255,255,255,255,255,255,192,0,127,255,255,255,255,255,255,192,0,127,255,255,255,255,255,255,192,0,127,149,85,191,213,85,85,64,0,127,64,0,63,128,0,0,56,0,127,64,0,63,128,0,0,63,64,0,0,0,63,128,0,0,63,64,0,0,0,63,128,0,0,127,64,0,0,0,63,128,0,0,191,0,0,0,0,63,208,0,1,255,0,0,0,0,63,255,255,255,254,0,0,0,0,31,255,255,255,252,0,0,0,0,11,255,255,255,244,0,0,0,0,0,90,170,169,64,0, + // 0x7565 略 + 101,117,34,36,68,38,3,252,0,0,0,0,1,224,0,0,0,0,0,0,0,3,252,0,0,0,255,255,255,128,7,244,0,0,0,255,255,255,128,15,240,0,0,0,255,255,255,128,47,255,255,248,0,248,61,15,128,63,255,255,254,0,248,61,15,128,255,255,255,253,0,248,61,15,130,254,0,3,252,0,248,61,15,139,255,0,11,244,0,248,61,15,175,255,192,15,240,0,248,61,15,255,223,224,63,192,0,248,61,15,255,7,244,191,64,0,248,61,15,173,3,254,254,0,0,255,255,255,128,0,255,252,0,0,255,255,255,128,0,63,240,0,0,255,255,255,128,0,255,244,0,0,248,61,15,128,7,255,254,0,0,248,61,15,128,31,253,255,192,0,248,61,15,128,255,240,127,248,0,248,61,15,139,255,128,15,255,128,248,61,15,255,253,0,2,255,240,248,61,15,255,244,0,0,191,208,248,61,15,255,255,255,255,255,128,248,61,15,151,255,255,255,253,0,248,61,15,131,255,255,255,253,0,255,255,255,131,248,0,0,253,0,255,255,255,131,248,0,0,253,0,255,255,255,131,248,0,0,253,0,248,0,0,3,248,0,0,253,0,248,0,0,3,248,0,0,253,0,248,0,0,3,248,0,0,253,0,0,0,0,3,255,255,255,253,0,0,0,0,3,255,255,255,253,0,0,0,0,3,255,255,255,253,0,0,0,0,3,248,0,1,253,0,0,0,0,1,164,0,0,84,0, + // 0x767d 白 + 125,118,28,36,252,38,5,252,0,0,2,233,0,0,0,0,0,3,254,0,0,0,0,0,3,252,0,0,0,0,0,11,248,0,0,0,0,0,15,244,0,0,0,0,0,15,240,0,0,0,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,170,170,170,170,170,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,85,85,85,85,85,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,170,170,170,170,170,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,190,0,0,0,0,0,170, + // 0x7684 的 + 132,118,33,36,68,38,3,252,0,31,144,0,2,228,0,0,0,0,31,208,0,3,248,0,0,0,0,47,192,0,3,244,0,0,0,0,63,128,0,7,240,0,0,0,0,63,64,0,15,240,0,0,0,0,127,0,0,15,208,0,0,0,191,255,255,240,47,255,255,255,64,191,255,255,240,63,255,255,255,64,191,255,255,240,127,255,255,255,64,190,0,7,240,255,0,0,127,0,189,0,7,241,253,0,0,63,0,189,0,7,243,252,0,0,63,0,189,0,7,251,248,0,0,63,0,189,0,7,255,240,0,0,63,0,189,0,7,247,208,0,0,63,0,189,0,7,240,129,128,0,127,0,190,0,7,240,15,208,0,127,0,191,255,255,240,15,240,0,127,0,191,255,255,240,3,252,0,127,0,191,255,255,240,1,254,0,127,0,189,0,7,240,0,191,64,191,0,189,0,7,240,0,63,192,190,0,189,0,7,240,0,31,224,190,0,189,0,7,240,0,15,240,190,0,189,0,7,240,0,7,192,254,0,189,0,7,240,0,1,0,253,0,189,0,7,240,0,0,0,253,0,189,0,7,240,0,0,0,253,0,190,0,7,240,0,0,1,252,0,191,255,255,240,0,0,1,252,0,191,255,255,240,0,0,3,252,0,191,255,255,240,0,0,7,248,0,189,0,0,0,0,255,255,244,0,189,0,0,0,0,191,255,224,0,189,0,0,0,0,127,255,128,0,0,0,0,0,0,5,80,0,0, + // 0x76d1 监 + 209,118,34,35,59,38,2,253,0,0,10,144,0,36,0,0,0,1,80,15,208,0,127,64,0,0,7,240,15,208,0,191,0,0,0,7,240,15,208,0,254,0,0,0,7,240,15,208,0,253,0,0,0,7,240,15,208,2,253,0,0,0,7,240,15,208,3,255,255,255,240,7,240,15,208,7,255,255,255,240,7,240,15,208,11,255,255,255,240,7,240,15,208,15,224,0,0,0,7,240,15,208,63,192,0,0,0,7,240,15,208,127,128,208,0,0,7,240,15,208,255,7,248,0,0,7,240,15,210,254,7,255,0,0,7,240,15,215,252,0,255,192,0,7,240,15,210,240,0,47,244,0,7,240,15,208,80,0,11,253,0,7,240,15,208,0,0,2,253,0,0,0,15,208,0,0,0,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,244,0,0,255,255,255,255,255,255,244,0,0,255,255,255,255,255,255,244,0,0,253,1,252,3,244,3,244,0,0,253,1,252,3,244,3,244,0,0,253,1,252,3,244,3,244,0,0,253,1,252,3,244,3,244,0,0,253,1,252,3,244,3,244,0,0,253,1,252,3,244,3,244,0,0,253,1,252,3,244,3,244,0,0,253,1,252,3,248,7,244,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x76f4 直 + 244,118,34,36,68,38,2,252,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,21,85,85,86,254,85,85,85,64,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,0,3,252,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,26,171,254,170,170,144,0,5,80,31,255,255,255,255,224,0,11,240,31,255,255,255,255,224,0,11,240,31,192,0,0,15,224,0,11,240,31,192,0,0,15,224,0,11,240,31,192,0,0,15,224,0,11,240,31,255,255,255,255,224,0,11,240,31,255,255,255,255,224,0,11,240,31,213,85,85,95,224,0,11,240,31,192,0,0,15,224,0,11,240,31,192,0,0,15,224,0,11,240,31,255,255,255,255,224,0,11,240,31,255,255,255,255,224,0,11,240,31,213,85,85,95,224,0,11,240,31,192,0,0,15,224,0,11,240,31,192,0,0,15,224,0,11,240,31,255,255,255,255,224,0,11,240,31,255,255,255,255,224,0,11,240,26,170,170,170,170,144,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,245,85,85,85,85,85,85,80,11,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,240,11,240,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0, + // 0x7701 省 + 1,119,34,37,77,38,2,251,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,1,228,3,248,0,124,0,0,0,7,252,3,248,1,255,64,0,0,15,244,3,248,0,127,224,0,0,63,224,3,248,0,31,252,0,1,255,128,3,248,0,3,255,0,11,254,0,3,248,1,208,255,192,127,248,0,3,248,7,252,47,240,191,208,15,255,248,47,248,15,208,31,64,11,255,244,255,208,2,0,4,0,7,255,155,255,64,0,0,0,0,0,1,191,252,0,0,0,0,0,0,31,255,208,0,0,0,0,0,27,255,254,0,0,0,0,0,22,255,255,208,0,0,0,0,111,255,255,255,255,255,255,224,0,255,255,255,255,255,255,255,224,0,127,255,254,170,170,170,175,224,0,46,67,248,0,0,0,15,224,0,0,3,248,0,0,0,15,224,0,0,3,253,85,85,85,95,224,0,0,3,255,255,255,255,255,224,0,0,3,255,255,255,255,255,224,0,0,3,248,0,0,0,15,224,0,0,3,248,0,0,0,15,224,0,0,3,253,85,85,85,111,224,0,0,3,255,255,255,255,255,224,0,0,3,255,255,255,255,255,224,0,0,3,248,0,0,0,15,224,0,0,3,248,0,0,0,15,224,0,0,3,248,0,0,0,15,224,0,0,3,255,255,255,255,255,224,0,0,3,255,255,255,255,255,224,0,0,3,254,170,170,170,175,224,0,0,3,248,0,0,0,15,208,0,0,0,0,0,0,0,0,0,0, + // 0x7720 眠 + 32,119,34,34,50,38,3,252,255,255,252,15,255,255,255,255,0,255,255,252,15,255,255,255,255,0,255,255,252,15,255,255,255,255,0,252,2,252,15,208,0,0,63,0,252,1,252,15,208,0,0,63,0,252,1,252,15,208,0,0,63,0,252,1,252,15,208,0,0,63,0,252,1,252,15,208,0,0,63,0,255,255,252,15,255,255,255,255,0,255,255,252,15,255,255,255,255,0,255,255,252,15,255,255,255,255,0,252,1,252,15,208,11,224,0,0,252,1,252,15,208,11,224,0,0,252,1,252,15,208,11,240,0,0,252,1,252,15,208,7,240,0,0,252,1,252,15,208,7,240,0,0,255,255,252,15,255,255,255,255,208,255,255,252,15,255,255,255,255,208,255,255,252,15,255,255,255,255,208,252,1,252,15,229,87,249,85,64,252,1,252,15,208,3,248,0,0,252,1,252,15,208,2,248,0,0,252,1,252,15,208,2,252,0,0,252,1,252,15,208,1,252,0,0,255,255,252,15,208,0,252,0,0,255,255,252,15,208,0,253,1,64,255,255,252,15,208,0,191,2,224,253,0,0,15,208,0,127,2,240,252,0,0,15,209,191,63,67,240,252,0,0,31,255,255,47,195,240,84,0,7,255,255,255,15,251,224,0,0,7,255,255,228,11,255,208,0,0,3,255,144,0,2,255,192,0,0,1,64,0,0,0,190,0, + // 0x786e 确 + 110,120,34,37,77,38,1,251,0,0,0,0,0,164,0,0,0,0,0,0,0,0,253,0,0,0,63,255,255,252,2,252,0,0,0,63,255,255,252,3,255,255,208,0,63,255,255,252,7,255,255,244,0,0,63,192,0,15,255,255,240,0,0,63,128,0,47,192,15,224,0,0,63,64,0,63,128,47,192,0,0,63,0,0,255,0,63,128,0,0,127,0,2,254,0,191,0,0,0,191,0,7,255,255,255,255,240,0,254,0,15,255,255,255,255,240,0,253,0,7,255,255,255,255,240,1,253,0,1,255,1,248,3,240,2,255,255,240,191,1,248,3,240,3,255,255,240,127,1,248,3,240,3,255,255,240,127,1,248,3,240,11,252,3,240,127,255,255,255,240,15,252,3,240,127,255,255,255,240,47,252,3,240,127,255,255,255,240,63,252,3,240,191,1,248,3,240,191,252,3,240,190,1,248,3,240,127,252,3,240,190,1,248,3,240,45,252,3,240,191,255,255,255,240,5,252,3,240,255,255,255,255,240,1,252,3,240,255,255,255,255,240,1,252,3,240,252,0,0,3,240,1,252,3,241,252,0,0,3,240,1,255,255,242,252,0,0,3,240,1,255,255,243,248,0,0,3,240,1,255,255,247,240,0,0,3,240,1,252,0,15,240,0,0,3,240,1,252,0,31,208,0,5,91,240,1,252,0,63,192,0,11,255,240,0,0,0,47,64,0,7,255,224,0,0,0,6,0,0,3,255,64,0,0,0,0,0,0,0,0,0, + // 0x79bb 离 + 187,121,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,0,0,0,64,0,0,0,0,42,0,64,1,248,10,128,0,0,63,2,249,11,240,15,208,0,0,63,3,255,255,208,15,208,0,0,63,0,127,255,64,15,208,0,0,63,0,15,255,192,15,208,0,0,63,1,255,255,248,15,208,0,0,63,31,254,7,252,15,208,0,0,63,15,224,0,180,15,208,0,0,63,2,0,0,16,15,208,0,0,63,255,255,255,255,255,208,0,0,63,255,255,255,255,255,208,0,0,63,255,255,255,255,255,208,0,0,0,0,31,224,0,0,0,0,0,0,0,31,208,0,0,0,0,11,255,255,255,255,255,255,254,0,11,255,255,255,255,255,255,254,0,11,255,255,255,255,255,255,254,0,11,240,0,127,0,104,0,254,0,11,240,0,191,0,253,0,254,0,11,240,0,253,0,127,0,254,0,11,240,0,253,21,127,192,254,0,11,242,255,255,255,255,208,254,0,11,243,255,255,255,255,240,254,0,11,242,255,250,149,3,244,254,0,11,240,0,0,0,1,208,254,0,11,240,0,0,0,0,0,254,0,11,240,0,0,0,2,255,254,0,11,240,0,0,0,0,255,252,0,6,160,0,0,0,0,255,224,0, + // 0x79fb 移 + 251,121,35,36,68,38,1,252,0,0,0,64,0,7,224,0,0,0,0,111,208,0,15,240,0,0,0,111,255,244,0,63,192,0,0,63,255,255,208,0,255,255,255,128,63,255,244,0,2,255,255,255,208,47,151,240,0,15,255,255,255,192,0,3,240,0,127,224,0,127,128,0,3,240,2,255,208,0,255,0,0,3,240,15,255,248,2,253,0,0,3,240,11,247,254,7,252,0,0,3,240,3,192,191,223,240,0,63,255,255,248,0,47,255,192,0,63,255,255,248,0,11,255,64,0,63,255,255,248,0,47,253,0,0,21,95,245,80,2,255,240,0,0,0,15,240,0,127,255,255,0,0,0,47,248,7,255,245,254,0,0,0,63,254,2,255,67,252,0,0,0,191,255,128,224,15,255,255,248,0,255,255,224,0,63,255,255,252,2,251,247,248,0,255,255,255,252,3,247,241,252,7,254,0,7,244,11,211,240,240,47,248,0,15,240,31,195,240,18,255,253,0,47,208,63,131,240,7,255,255,192,127,192,191,3,240,1,244,127,240,255,64,125,3,240,0,128,11,255,253,0,60,3,240,0,0,2,255,248,0,16,3,240,0,0,0,255,224,0,0,3,240,0,0,7,255,128,0,0,3,240,0,0,127,253,0,0,0,3,240,0,27,255,240,0,0,0,3,240,11,255,255,64,0,0,0,3,240,15,255,244,0,0,0,0,3,240,7,254,64,0,0,0,0,3,240,2,144,0,0,0,0, + // 0x7a7a 空 + 122,122,34,35,59,38,2,253,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,128,7,248,3,252,0,47,192,63,128,7,244,2,252,0,47,192,63,128,11,240,2,252,0,47,192,63,128,15,240,2,252,0,47,192,63,128,15,224,2,252,0,0,0,0,0,63,192,2,252,0,8,0,0,0,191,192,2,252,0,15,128,0,7,255,0,2,252,0,47,128,0,127,253,0,2,255,255,255,128,47,255,240,0,0,255,255,255,0,47,255,128,0,0,127,255,253,0,15,244,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,244,0,0,191,255,255,255,255,255,244,0,0,191,255,255,255,255,255,244,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,252,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224, + // 0x7aef 端 + 239,122,36,36,68,38,1,252,0,5,0,0,0,7,240,0,0,0,31,128,0,0,7,240,0,0,0,31,128,3,240,7,240,7,240,0,31,128,3,240,7,240,7,240,0,31,128,3,240,7,240,7,240,0,31,128,3,240,7,240,7,240,0,31,128,3,240,7,240,7,240,0,47,128,3,240,7,240,7,240,63,255,255,195,255,255,255,255,240,63,255,255,195,255,255,255,255,240,63,255,255,195,255,255,255,255,240,0,0,0,0,0,0,0,0,0,6,64,58,0,0,0,0,0,0,15,128,63,0,0,0,0,0,0,15,128,63,47,255,255,255,255,253,15,192,127,47,255,255,255,255,253,11,192,126,47,255,255,255,255,253,11,192,189,0,0,15,240,0,0,7,208,189,0,0,15,224,0,0,7,224,252,0,0,31,192,0,0,3,224,252,11,255,255,255,255,248,3,224,248,11,255,255,255,255,248,3,241,244,11,255,255,255,255,248,3,226,244,11,224,188,15,130,248,1,2,240,91,224,188,15,130,248,0,2,255,235,224,188,15,130,248,1,191,255,251,224,188,15,130,248,127,255,255,235,224,188,15,130,248,127,255,248,11,224,188,15,130,248,127,249,0,11,224,188,15,130,248,57,0,0,11,224,188,15,130,248,0,0,0,11,224,188,15,130,248,0,0,0,11,224,188,15,130,248,0,0,0,11,224,188,15,191,248,0,0,0,11,224,188,15,159,240,0,0,0,6,144,20,0,14,128, + // 0x7b2c 第 + 44,123,35,36,68,38,1,252,0,30,64,0,0,126,0,0,0,0,63,192,0,0,255,0,0,0,0,63,64,0,0,254,0,0,0,0,255,255,255,211,255,255,255,252,1,255,255,255,219,255,255,255,252,3,255,255,255,239,255,255,255,252,11,244,253,0,63,192,255,0,0,47,224,255,0,255,128,127,64,0,127,192,127,2,255,0,63,192,0,63,64,63,0,188,0,31,192,0,10,0,36,0,32,0,9,0,0,0,255,255,255,255,255,255,254,0,0,255,255,255,255,255,255,254,0,0,255,255,255,255,255,255,254,0,0,0,0,0,254,0,0,254,0,0,0,0,0,254,0,0,254,0,0,0,0,0,254,0,0,254,0,0,31,255,255,255,255,255,254,0,0,47,255,255,255,255,255,254,0,0,63,255,255,255,255,255,254,0,0,63,64,0,254,0,0,0,0,0,127,64,0,254,0,0,0,0,0,191,0,0,254,0,0,0,0,0,255,255,255,255,255,255,255,240,0,255,255,255,255,255,255,255,240,1,255,255,255,255,255,255,255,224,1,252,0,127,254,0,0,15,224,0,0,2,255,254,0,0,15,208,0,0,31,252,254,0,0,15,208,0,0,255,224,254,0,0,31,192,0,31,255,64,254,0,0,63,192,1,255,248,0,254,0,255,255,128,47,255,208,0,254,0,255,255,0,15,253,0,0,254,0,191,252,0,7,144,0,0,254,0,0,0,0,0,0,0,0,190,0,0,0,0, + // 0x7b49 等 + 73,123,35,36,68,38,1,252,0,14,64,0,0,126,0,0,0,0,47,192,0,0,255,0,0,0,0,63,128,0,0,254,0,0,0,0,255,255,255,227,255,255,255,252,1,255,255,255,231,255,255,255,252,3,255,255,255,255,255,255,255,252,15,244,253,0,63,208,255,0,0,63,224,191,0,255,128,63,128,0,127,192,63,64,191,0,47,192,0,31,0,57,0,255,0,15,64,0,0,0,0,0,255,0,0,0,0,0,127,255,255,255,255,255,254,0,0,127,255,255,255,255,255,254,0,0,127,255,255,255,255,255,254,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,0,0,61,0,0,1,253,0,0,0,0,255,64,0,1,253,0,0,0,0,255,208,0,1,253,0,0,0,0,47,244,0,1,253,0,0,0,0,11,252,0,1,253,0,0,0,0,2,255,0,1,253,0,0,0,0,0,254,5,6,253,0,0,0,0,0,52,15,255,252,0,0,0,0,0,0,11,255,248,0,0,0,0,0,0,3,255,144,0,0, + // 0x7bb1 箱 + 177,123,35,36,68,38,1,252,0,14,64,0,0,57,0,0,0,0,31,192,0,0,191,0,0,0,0,63,192,0,0,255,0,0,0,0,127,128,0,1,254,0,0,0,0,191,255,255,227,255,255,255,252,0,255,255,255,231,255,255,255,252,3,255,255,255,239,255,255,255,252,7,248,254,0,47,224,254,0,0,15,240,127,0,127,192,127,64,0,63,208,63,129,255,64,47,192,0,47,64,47,64,190,0,15,208,0,6,0,252,0,24,0,10,64,0,0,0,252,0,0,0,0,0,0,0,0,252,0,15,255,255,255,224,0,0,252,0,15,255,255,255,224,47,255,255,255,207,255,255,255,224,47,255,255,255,207,192,0,15,224,47,255,255,255,207,192,0,15,224,0,7,253,0,15,192,0,15,224,0,7,253,0,15,255,255,255,224,0,15,255,64,15,255,255,255,224,0,31,255,208,15,250,170,175,224,0,63,255,244,15,192,0,15,224,0,191,255,253,15,192,0,15,224,1,254,252,255,143,192,0,15,224,3,252,252,63,207,255,255,255,224,11,240,252,31,15,255,255,255,224,47,224,252,9,15,250,170,175,224,127,192,252,0,15,192,0,15,224,63,64,252,0,15,192,0,15,224,30,0,252,0,15,192,0,15,224,4,0,252,0,15,255,255,255,224,0,0,252,0,15,255,255,255,224,0,0,252,0,15,255,255,255,224,0,0,252,0,15,192,0,15,224,0,0,252,0,10,128,0,5,80, + // 0x7c7b 类 + 123,124,35,36,68,38,2,252,0,0,0,2,248,0,0,0,0,0,6,0,3,248,0,30,64,0,0,63,192,3,248,0,63,208,0,0,47,224,3,248,0,191,128,0,0,11,248,3,248,1,255,0,0,0,3,252,3,248,3,252,0,0,0,1,254,3,248,11,244,0,0,21,85,249,87,253,91,229,85,64,63,255,255,255,255,255,255,255,208,63,255,255,255,255,255,255,255,208,63,255,255,255,255,255,255,255,208,0,0,1,255,255,244,0,0,0,0,0,11,255,255,254,0,0,0,0,0,127,243,248,255,208,0,0,0,3,255,195,248,63,253,0,0,0,127,254,3,248,11,255,224,0,27,255,244,3,248,0,255,255,144,191,255,64,3,248,0,31,255,208,63,248,0,0,80,5,0,191,128,14,64,0,3,252,47,208,6,0,0,0,0,3,248,31,254,0,0,0,0,0,3,248,1,255,128,0,21,85,85,87,249,85,111,85,64,127,255,255,255,255,255,255,255,224,127,255,255,255,255,255,255,255,224,127,255,255,255,255,255,255,255,224,0,0,0,63,255,128,0,0,0,0,0,0,191,255,224,0,0,0,0,0,2,255,15,248,0,0,0,0,0,31,253,7,255,64,0,0,0,1,255,248,1,255,228,0,0,0,111,255,208,0,127,255,144,0,191,255,255,0,0,11,255,255,244,191,255,244,0,0,1,191,255,224,63,253,0,0,0,0,11,255,192,42,64,0,0,0,0,0,26,64, + // 0x7d22 索 + 34,125,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,208,63,255,255,255,255,255,255,255,208,63,255,255,255,255,255,255,255,208,63,0,0,127,128,0,0,15,208,63,0,1,255,0,4,0,15,208,63,0,11,252,0,127,64,15,208,63,10,47,224,2,255,128,15,208,0,47,255,64,15,253,0,0,0,0,47,254,0,127,240,0,0,0,0,7,255,210,255,129,192,0,0,0,0,191,255,252,11,248,0,0,0,0,31,255,208,3,255,0,0,0,0,3,254,0,0,191,224,0,0,0,31,254,170,170,255,252,0,127,255,255,255,255,255,255,255,0,127,255,255,255,255,255,255,255,192,63,255,255,255,248,0,0,31,128,0,0,0,3,248,1,208,5,0,0,1,249,3,248,11,248,0,0,0,11,253,3,248,7,255,64,0,0,127,244,3,248,0,191,240,0,2,255,192,3,248,0,31,253,0,47,254,0,3,248,0,2,255,128,191,244,0,3,248,0,0,127,208,47,64,0,3,248,0,0,15,0,4,0,0,3,248,0,0,0,0, + // 0x7d2b 紫 + 43,125,35,36,68,38,1,252,0,0,47,64,2,252,0,0,0,0,0,63,64,2,252,0,0,0,0,0,63,64,2,252,0,6,0,3,240,63,64,2,252,0,191,128,3,240,63,255,242,252,31,255,224,3,240,63,255,242,255,255,255,64,3,240,63,255,242,255,255,208,0,3,240,63,64,2,255,228,0,0,3,240,63,64,2,252,0,0,0,3,240,63,64,2,252,0,0,228,3,240,63,65,162,252,0,0,252,3,240,127,255,241,253,0,2,252,27,255,255,255,241,255,255,255,248,127,255,255,255,144,255,255,255,240,63,255,165,15,208,47,255,255,208,41,64,0,63,224,0,0,0,0,0,0,0,255,128,11,128,0,0,0,3,135,253,0,63,240,0,0,0,31,255,240,1,255,192,0,0,0,31,255,192,11,254,0,0,0,0,1,255,244,63,244,30,0,0,0,0,31,255,255,128,191,192,0,0,0,2,255,253,0,47,240,0,0,0,0,255,224,0,11,253,0,63,255,255,255,255,255,255,255,64,63,255,255,255,255,255,255,255,224,63,255,255,255,255,255,255,175,248,4,0,0,0,254,0,0,7,252,0,0,32,0,254,0,36,1,208,0,0,255,64,254,1,255,0,0,0,11,254,0,254,1,255,224,0,0,127,248,0,254,0,47,253,0,7,255,208,0,254,0,3,255,192,47,254,0,0,254,0,0,127,244,11,244,0,0,254,0,0,15,224,1,64,0,0,254,0,0,2,0, + // 0x7ea2 红 + 162,126,35,34,50,38,1,254,0,1,144,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,11,244,1,170,170,170,170,160,0,15,240,3,255,255,255,255,244,0,47,208,3,255,255,255,255,244,0,63,192,3,255,255,255,255,244,0,191,0,0,0,3,248,0,0,1,254,1,192,0,3,248,0,0,3,252,3,248,0,3,248,0,0,11,244,11,248,0,3,248,0,0,31,224,31,240,0,3,248,0,0,127,255,255,208,0,3,248,0,0,127,255,255,128,0,3,248,0,0,63,255,255,0,0,3,248,0,0,62,87,252,0,0,3,248,0,0,0,15,244,0,0,3,248,0,0,0,47,224,0,0,3,248,0,0,0,127,192,0,0,3,248,0,0,1,255,0,0,0,3,248,0,0,7,253,26,240,0,3,248,0,0,31,255,255,240,0,3,248,0,0,127,255,255,244,0,3,248,0,0,63,255,254,80,0,3,248,0,0,47,229,0,0,0,3,248,0,0,20,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,16,0,3,248,0,0,0,0,107,240,0,3,248,0,0,0,111,255,240,0,3,248,0,0,127,255,255,251,255,255,255,255,252,127,255,254,71,255,255,255,255,252,63,254,64,7,255,255,255,255,252,57,0,0,6,170,170,170,170,168, + // 0x7ea7 级 + 167,126,35,37,77,38,1,251,0,2,128,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,7,244,1,85,85,85,84,0,0,15,240,11,255,255,255,252,0,0,15,208,11,255,255,255,248,0,0,47,192,11,255,255,255,244,0,0,63,64,0,15,224,7,240,0,0,191,0,0,15,224,11,240,0,0,253,2,0,15,224,15,224,0,2,248,7,208,15,224,15,208,0,7,240,15,240,15,208,31,192,0,15,224,47,208,15,208,47,192,0,47,213,191,128,15,208,63,128,0,191,255,255,0,31,192,63,255,224,127,255,253,0,31,208,191,255,240,63,235,252,0,31,224,255,255,240,16,11,240,0,47,240,0,15,224,0,31,208,0,47,244,0,15,208,0,63,128,0,63,252,0,47,192,0,255,6,224,63,253,0,63,128,2,254,191,224,63,255,0,63,64,11,255,255,224,127,127,64,191,0,47,255,254,64,191,47,192,254,0,127,255,128,0,254,15,227,252,0,63,208,0,0,253,11,251,248,0,40,0,0,17,252,3,255,240,0,0,0,7,243,252,1,255,208,0,0,0,191,243,248,0,255,192,0,0,31,255,251,244,1,255,224,0,7,255,254,79,240,11,255,248,0,63,255,224,47,208,47,251,255,0,63,253,0,63,192,255,209,255,208,47,128,0,255,139,255,64,127,252,20,0,1,255,31,253,0,15,252,0,0,0,189,11,224,0,2,244,0,0,0,24,2,64,0,0,80,0,0,0,0,0,0,0,0,0, + // 0x7ebf 线 + 191,126,35,36,68,38,2,252,0,1,0,0,0,253,0,0,0,0,11,208,0,0,253,15,0,0,0,15,240,0,0,253,63,224,0,0,31,208,0,0,254,15,253,0,0,47,192,0,0,254,1,253,0,0,63,64,0,0,254,0,56,0,0,191,0,0,0,254,0,1,0,0,254,0,0,0,254,26,255,64,2,252,5,0,5,255,255,255,128,3,244,15,135,255,255,255,255,128,15,224,47,215,255,255,254,80,0,31,192,63,131,255,255,0,0,0,127,150,255,2,64,191,0,0,0,255,255,254,0,0,127,0,0,0,255,255,252,0,0,127,0,22,208,127,239,244,0,0,127,107,255,224,16,15,224,0,1,191,255,255,224,0,63,192,6,255,255,255,254,64,0,191,0,15,255,255,249,0,0,1,253,0,15,255,255,128,1,0,7,248,6,142,144,47,192,11,224,15,251,255,128,0,31,192,31,208,127,255,255,128,0,15,208,63,128,191,255,250,0,0,15,209,255,0,127,249,0,0,0,15,231,253,0,57,0,0,0,0,11,255,244,0,0,0,0,0,0,7,255,208,0,0,0,7,192,0,3,255,64,0,0,6,255,192,0,47,253,0,0,1,191,255,192,1,255,253,0,208,127,255,253,0,31,255,255,0,244,191,255,64,6,255,248,127,129,244,127,208,0,63,255,208,63,247,240,36,0,0,47,253,0,15,255,240,0,0,0,15,128,0,7,255,208,0,0,0,0,0,0,0,191,64, + // 0x7ec6 细 + 198,126,35,36,68,38,1,252,0,0,224,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,3,252,2,255,255,255,255,244,0,7,248,2,255,255,255,255,244,0,15,240,2,255,255,255,255,244,0,31,224,2,254,171,250,171,244,0,63,192,2,248,3,244,3,244,0,127,64,2,248,3,244,3,244,0,255,0,2,248,3,244,3,244,2,252,0,210,248,3,244,3,244,7,244,3,250,248,3,244,3,244,15,240,7,250,248,3,244,3,244,127,234,255,242,248,3,244,3,244,127,255,255,194,248,3,244,3,244,63,255,255,66,248,3,244,3,244,63,166,254,2,248,3,244,3,244,0,3,252,2,255,255,255,255,244,0,15,240,2,255,255,255,255,244,0,63,192,2,255,255,255,255,244,0,255,0,2,249,87,249,87,244,3,253,22,182,248,3,244,3,244,15,255,255,246,248,3,244,3,244,127,255,255,246,248,3,244,3,244,63,255,254,146,248,3,244,3,244,47,249,0,2,248,3,244,3,244,24,0,0,2,248,3,244,3,244,0,0,0,2,248,3,244,3,244,0,0,0,2,248,3,244,3,244,0,0,1,182,248,3,244,3,244,0,26,255,246,249,87,249,87,244,47,255,255,246,255,255,255,255,244,127,255,255,146,255,255,255,255,244,63,254,80,2,255,255,255,255,244,57,0,0,2,248,0,0,3,244,0,0,0,2,248,0,0,3,244,0,0,0,0,80,0,0,0,0, + // 0x7ec8 终 + 200,126,36,36,68,38,1,252,0,2,64,0,0,105,0,0,0,0,3,244,0,0,255,0,0,0,0,11,244,0,1,254,0,0,0,0,15,240,0,3,252,0,0,0,0,31,208,0,7,255,255,255,64,0,63,192,0,15,255,255,255,192,0,127,64,0,63,255,255,255,192,0,255,0,0,191,208,0,191,64,1,253,1,1,255,240,0,254,0,3,252,7,199,255,244,3,252,0,7,244,15,255,250,252,7,248,0,15,224,31,255,224,255,31,240,0,47,192,63,203,128,127,255,192,0,191,255,255,1,0,47,255,64,0,127,255,254,0,0,15,254,0,0,63,255,252,0,0,47,255,64,0,37,11,240,0,1,255,255,224,0,0,31,208,0,11,255,111,253,0,0,63,128,0,191,248,7,255,208,0,255,0,31,255,208,0,255,254,2,252,0,95,254,0,0,31,253,11,250,255,211,224,30,64,2,248,63,255,255,209,0,127,244,0,16,63,255,255,208,0,47,255,64,0,63,254,80,0,0,2,255,224,0,41,0,0,0,0,0,47,240,0,0,0,0,0,0,0,3,192,0,0,0,0,0,9,0,0,0,0,0,0,6,240,63,228,0,0,0,0,91,255,240,191,255,144,0,0,127,255,255,244,27,255,253,0,0,127,255,254,64,0,111,255,224,0,127,249,64,0,0,1,255,254,0,37,0,0,0,0,0,11,255,64,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,8,0, + // 0x7ed3 结 + 211,126,35,36,68,38,1,252,0,2,64,0,0,3,248,0,0,0,3,244,0,0,3,248,0,0,0,11,248,0,0,3,248,0,0,0,15,240,0,0,3,248,0,0,0,31,224,0,0,3,248,0,0,0,63,192,7,255,255,255,255,252,0,127,128,7,255,255,255,255,252,0,255,0,7,255,255,255,255,252,2,253,3,129,85,87,253,85,84,3,252,7,244,0,3,248,0,0,11,240,15,244,0,3,248,0,0,31,224,31,224,0,3,248,0,0,127,234,255,192,0,3,248,0,0,191,255,255,64,0,3,248,0,0,127,255,255,1,255,255,255,255,240,63,235,252,1,255,255,255,255,240,0,11,244,1,255,255,255,255,240,0,47,224,0,85,85,85,85,80,0,127,192,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,3,253,26,244,0,0,0,0,0,15,255,255,244,127,255,255,255,208,127,255,255,244,127,255,255,255,208,63,255,254,64,127,255,255,255,208,63,233,0,0,127,0,0,31,208,20,0,0,0,127,0,0,31,208,0,0,0,0,127,0,0,31,208,0,0,0,0,127,0,0,31,208,0,0,27,248,127,0,0,31,208,0,111,255,248,127,0,0,31,208,127,255,255,248,127,0,0,31,208,127,255,255,144,127,255,255,255,208,127,254,64,0,127,255,255,255,208,57,64,0,0,127,255,255,255,208,0,0,0,0,127,0,0,31,208,0,0,0,0,127,0,0,10,128, + // 0x7ed9 给 + 217,126,35,36,68,38,1,252,0,2,64,0,0,6,64,0,0,0,3,244,0,0,15,240,0,0,0,11,244,0,0,31,240,0,0,0,15,240,0,0,47,240,0,0,0,31,208,0,0,63,252,0,0,0,63,192,0,0,191,253,0,0,0,127,64,0,1,255,191,0,0,0,255,0,0,3,252,63,192,0,1,253,3,0,11,248,31,224,0,3,252,11,224,31,240,11,248,0,7,240,15,240,63,208,3,254,0,15,224,47,208,255,128,0,255,128,63,214,191,131,255,0,0,191,240,191,255,255,31,255,255,255,255,252,63,255,253,63,255,255,255,247,248,63,235,252,31,207,255,255,241,224,16,15,240,6,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,3,252,22,224,255,255,255,254,0,15,255,255,208,255,255,255,254,0,63,255,255,208,255,255,255,254,0,63,255,249,0,253,0,0,254,0,47,228,0,0,253,0,0,254,0,24,0,0,0,253,0,0,254,0,0,0,0,0,253,0,0,254,0,0,0,0,0,253,0,0,254,0,0,0,111,224,253,0,0,254,0,0,111,255,240,253,0,0,254,0,63,255,255,224,253,0,0,254,0,63,255,249,0,255,255,255,254,0,63,249,0,0,255,255,255,254,0,41,0,0,0,255,255,255,254,0,0,0,0,0,253,0,0,254,0,0,0,0,0,253,0,0,254,0, + // 0x7edf 统 + 223,126,36,36,68,38,1,252,0,2,64,0,0,6,128,0,0,0,3,248,0,0,31,192,0,0,0,7,248,0,0,15,224,0,0,0,15,240,0,0,11,240,0,0,0,31,224,0,0,7,248,0,0,0,63,192,0,0,3,228,0,0,0,63,192,11,255,255,255,255,252,0,191,64,11,255,255,255,255,252,0,254,1,11,255,255,255,255,252,3,252,11,208,0,191,128,0,0,7,244,15,240,1,255,0,32,0,15,240,47,208,3,252,2,248,0,63,230,191,128,15,244,2,252,0,191,255,255,0,47,224,0,255,0,63,255,253,0,191,192,0,127,128,63,255,252,2,255,154,191,255,208,20,15,240,31,255,255,255,255,240,0,47,208,15,255,255,255,251,244,0,127,128,11,255,165,64,3,252,0,255,0,69,10,144,42,65,224,3,253,111,192,15,208,63,128,0,15,255,255,192,15,208,63,128,0,63,255,255,192,15,208,63,128,0,63,255,228,0,15,208,63,128,0,47,228,0,0,31,192,63,128,0,20,0,0,0,47,192,63,128,0,0,0,0,64,63,192,63,128,0,0,0,31,208,63,128,63,128,180,0,7,255,224,191,0,63,128,189,6,255,255,208,255,0,63,128,189,63,255,248,3,253,0,63,128,252,63,254,64,31,252,0,63,128,252,63,208,1,255,240,0,47,255,252,20,0,0,255,192,0,31,255,244,0,0,0,126,0,0,7,255,224,0,0,0,32,0,0,0,0,0, + // 0x7ee7 继 + 231,126,35,34,50,38,1,254,0,3,64,0,0,0,42,0,0,0,7,240,1,64,0,63,0,0,0,15,240,7,224,0,63,0,0,0,15,208,7,225,224,63,2,224,0,47,192,7,226,240,63,3,240,0,63,128,7,224,244,63,3,224,0,127,0,7,224,248,63,11,192,0,255,0,7,224,188,63,15,128,1,252,1,7,224,125,63,31,64,2,248,11,135,224,62,63,47,0,3,240,15,231,224,16,63,4,0,15,224,47,199,224,0,63,0,0,47,192,63,71,231,255,255,255,252,127,255,255,7,231,255,255,255,252,127,255,253,7,231,255,255,255,252,63,255,248,7,224,0,255,192,0,21,11,240,7,224,2,255,224,0,0,31,208,7,224,3,255,244,0,0,63,128,7,224,11,255,252,0,0,255,0,7,224,15,191,127,0,2,252,5,135,224,47,63,47,128,11,254,255,199,224,126,63,15,224,47,255,255,199,224,252,63,3,244,63,255,250,71,227,248,63,2,248,63,249,0,7,227,240,63,0,240,25,0,0,7,226,208,63,0,64,0,0,0,7,224,64,63,0,0,0,0,1,135,224,0,63,0,0,0,1,191,215,224,0,63,0,0,1,191,255,215,224,0,42,0,0,127,255,255,135,224,0,0,0,0,63,255,144,7,255,255,255,255,252,63,144,0,7,255,255,255,255,252,16,0,0,7,255,255,255,255,252, + // 0x7eea 绪 + 234,126,36,36,68,38,1,252,0,2,0,0,0,47,64,0,0,0,3,224,0,0,63,64,0,0,0,7,240,0,0,63,64,1,64,0,15,224,0,0,63,64,3,244,0,15,208,0,0,63,64,11,240,0,47,192,2,255,255,255,223,224,0,63,64,2,255,255,255,255,192,0,191,0,2,255,255,255,255,128,0,253,0,0,0,63,64,255,0,2,252,3,128,0,63,67,252,0,3,240,15,240,0,63,75,244,0,15,224,31,208,0,63,95,224,0,47,213,191,175,255,255,255,255,253,127,255,255,47,255,255,255,255,253,63,255,253,47,255,255,255,255,253,63,235,252,0,0,47,244,0,0,16,11,240,0,0,191,208,0,0,0,15,208,0,3,255,64,0,0,0,63,128,0,31,254,0,0,0,0,191,0,0,191,255,255,255,208,1,252,1,11,255,255,255,255,208,7,254,255,191,255,255,255,255,208,31,255,255,191,255,192,0,15,208,63,255,250,15,95,192,0,15,208,47,229,0,0,31,192,0,15,208,20,0,0,0,31,255,255,255,208,0,0,0,0,31,255,255,255,208,0,0,0,80,31,255,255,255,208,0,1,175,240,31,192,0,15,208,1,191,255,240,31,192,0,15,208,63,255,255,144,31,192,0,15,208,63,255,144,0,31,255,255,255,208,63,144,0,0,31,255,255,255,208,20,0,0,0,31,255,255,255,208,0,0,0,0,31,192,0,15,208,0,0,0,0,10,128,0,5,64, + // 0x7eed 续 + 237,126,35,37,77,38,1,251,0,1,64,0,0,11,224,0,0,0,3,240,0,0,11,224,0,0,0,7,240,0,0,11,224,0,0,0,11,224,1,255,255,255,255,128,0,15,208,1,255,255,255,255,128,0,47,192,1,255,255,255,255,128,0,63,64,0,0,11,224,0,0,0,127,0,0,0,11,224,0,0,0,253,4,0,0,11,224,0,0,1,252,15,128,0,11,224,0,0,3,240,31,203,255,255,255,255,244,11,224,63,139,255,255,255,255,244,31,193,127,11,255,255,255,255,240,127,255,253,0,0,0,0,7,224,127,255,252,0,13,2,244,11,208,63,255,244,0,63,131,244,15,192,20,11,224,0,15,243,244,31,128,0,31,192,1,2,251,244,11,64,0,63,64,7,208,115,244,0,0,0,190,0,7,252,3,244,0,0,1,253,111,64,255,3,244,0,0,7,255,255,64,47,3,244,0,0,31,255,255,64,4,3,240,0,0,63,255,144,47,255,255,255,255,244,63,228,0,47,255,255,255,255,244,24,0,0,47,255,255,255,255,244,0,0,2,64,0,47,192,0,0,0,0,127,128,0,127,134,0,0,0,31,255,192,0,255,31,192,0,6,255,254,0,3,253,31,244,0,63,255,208,0,31,248,3,254,0,63,248,0,0,191,224,0,191,192,63,64,0,11,255,64,0,47,240,16,0,0,63,253,0,0,7,252,0,0,0,31,224,0,0,1,248,0,0,0,10,0,0,0,0,96,0,0,0,0,0,0,0,0,0, + // 0x7eff 绿 + 255,126,36,35,59,38,1,252,0,11,128,0,0,0,0,0,0,0,15,240,1,255,255,255,255,192,0,31,224,1,255,255,255,255,192,0,47,192,1,255,255,255,255,192,0,63,128,0,0,0,0,47,192,0,191,0,0,0,0,0,47,128,0,254,0,0,106,170,170,191,128,1,252,9,0,191,255,255,255,128,3,248,15,128,191,255,255,255,128,11,240,47,192,0,0,0,63,128,15,224,63,64,0,0,0,63,64,47,192,191,0,0,0,0,63,64,127,255,252,7,255,255,255,255,253,127,255,248,7,255,255,255,255,253,63,255,240,7,255,255,255,255,253,41,15,208,0,0,3,244,0,0,0,47,128,0,0,3,240,0,0,0,63,0,1,240,3,240,0,64,0,253,0,3,252,3,240,3,248,2,248,5,0,255,3,240,11,240,7,255,255,64,63,195,244,63,128,31,255,255,64,31,211,252,254,0,63,255,254,0,7,71,255,244,0,63,254,64,0,0,63,255,192,0,45,0,0,0,1,255,255,208,0,0,0,0,0,11,255,255,244,0,0,0,6,64,127,243,247,253,0,0,1,191,66,255,131,240,255,128,0,127,255,159,253,3,240,63,244,47,255,254,31,240,3,240,15,254,63,255,144,15,128,3,240,2,252,63,228,0,1,0,3,240,0,112,41,0,0,0,2,255,240,0,0,0,0,0,0,1,255,240,0,0,0,0,0,0,0,255,128,0,0, + // 0x7f16 编 + 22,127,35,36,68,38,1,252,0,6,64,0,0,6,208,0,0,0,11,240,0,0,15,240,0,0,0,15,224,0,0,11,244,0,0,0,31,192,0,0,3,248,0,0,0,47,192,7,255,255,255,255,240,0,63,64,7,255,255,255,255,240,0,127,0,7,255,255,255,255,240,0,253,0,7,240,0,0,7,240,1,252,12,7,240,0,0,7,240,3,248,31,135,240,0,0,7,240,3,240,63,135,240,0,0,7,240,15,208,127,7,255,255,255,255,240,31,193,254,7,255,255,255,255,240,127,255,252,7,255,255,255,255,240,127,255,248,7,240,0,0,0,0,63,255,240,7,240,0,0,0,0,41,15,208,11,224,0,0,0,0,0,47,192,11,255,255,255,255,244,0,63,0,11,255,255,255,255,244,0,254,0,11,255,255,255,255,244,2,252,22,15,255,7,195,209,244,11,255,255,15,255,7,195,209,244,63,255,255,15,255,7,195,209,244,63,255,144,15,239,7,195,209,244,47,144,0,31,239,255,255,255,244,0,0,0,47,175,255,255,255,244,0,0,46,63,111,255,255,255,244,0,6,255,63,47,7,195,209,244,0,127,255,127,47,7,195,209,244,27,255,244,190,47,7,195,209,244,127,254,0,253,47,7,195,209,244,63,224,1,252,47,7,195,209,244,62,0,3,248,47,7,195,209,244,16,0,3,244,47,7,195,223,244,0,0,0,176,47,2,130,143,240,0,0,0,0,26,0,0,6,64, + // 0x7f3a 缺 + 58,127,36,36,68,38,1,252,2,228,0,0,0,7,240,0,0,3,248,0,0,0,7,240,0,0,3,248,0,0,0,7,240,0,0,3,244,0,0,0,7,240,0,0,7,244,0,0,0,7,240,0,0,11,255,255,255,0,7,240,0,0,15,255,255,255,47,255,255,255,192,15,255,255,255,47,255,255,255,192,47,195,244,0,47,255,255,255,192,63,131,244,0,5,91,245,111,192,127,67,244,0,0,7,240,31,192,127,3,244,0,0,7,240,31,192,5,3,244,0,0,7,240,31,192,127,255,255,255,128,7,240,31,192,127,255,255,255,128,7,240,31,192,127,255,255,255,128,7,240,31,192,0,3,248,0,0,7,240,31,192,0,3,244,0,63,255,255,255,253,5,3,244,0,63,255,255,255,253,31,131,244,63,63,255,255,255,253,31,131,244,63,21,95,254,85,84,31,131,244,63,0,15,255,0,0,31,131,244,63,0,31,255,0,0,31,131,244,63,0,47,255,128,0,31,131,244,63,0,63,175,192,0,31,131,244,63,0,127,79,224,0,31,131,244,63,0,255,15,240,0,31,255,255,255,1,254,7,248,0,31,255,255,255,3,252,3,253,0,31,255,255,255,15,248,1,255,0,31,128,0,63,47,240,0,191,192,31,128,0,63,191,208,0,63,240,31,128,0,23,255,64,0,31,253,10,64,0,11,254,0,0,7,253,0,0,0,3,244,0,0,1,244,0,0,0,0,128,0,0,0,96, + // 0x7f51 网 + 81,127,32,34,16,38,3,252,21,85,85,85,85,85,85,85,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,190,0,11,224,0,253,0,191,190,0,11,224,0,253,0,191,190,0,11,208,0,253,0,191,190,0,11,208,0,253,0,191,190,0,15,208,0,252,0,191,190,0,15,208,128,252,0,191,190,29,15,194,240,252,0,191,190,63,79,195,253,252,0,191,190,63,239,193,255,252,0,191,190,11,255,192,127,252,0,191,190,2,255,128,31,248,0,191,190,0,255,128,7,252,0,191,190,0,63,192,3,254,0,191,190,0,63,240,3,255,128,191,190,0,63,252,3,255,208,191,190,0,127,254,7,255,240,191,190,0,190,191,11,227,252,191,190,0,253,63,15,209,248,191,190,0,252,12,31,192,176,191,190,2,248,0,47,192,0,191,190,3,244,0,63,64,0,191,190,11,240,0,191,0,0,191,190,15,224,0,254,0,0,191,190,63,192,3,252,0,0,191,190,63,128,7,248,0,0,191,190,15,0,1,240,0,0,191,190,0,0,0,64,1,85,255,190,0,0,0,0,3,255,254,190,0,0,0,0,2,255,252,190,0,0,0,0,1,255,224, + // 0x7f6e 置 + 110,127,35,35,59,38,2,252,5,85,85,85,85,85,85,85,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,0,11,224,3,240,1,252,0,191,0,11,224,3,240,1,252,0,191,0,11,224,3,240,1,252,0,191,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,0,5,85,85,86,254,85,85,85,0,0,0,0,1,252,0,0,0,0,42,170,170,171,254,170,170,170,128,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,1,80,31,255,255,255,255,244,0,7,240,31,255,255,255,255,244,0,7,240,31,192,0,0,3,244,0,7,240,31,192,0,0,3,244,0,7,240,31,255,255,255,255,244,0,7,240,31,255,255,255,255,244,0,7,240,31,192,0,0,3,244,0,7,240,31,192,0,0,3,244,0,7,240,31,255,255,255,255,244,0,7,240,31,255,255,255,255,244,0,7,240,31,192,0,0,3,244,0,7,240,31,192,0,0,3,244,0,7,240,31,255,255,255,255,244,0,7,240,31,255,255,255,255,244,0,7,240,0,0,0,0,0,0,0,7,255,255,255,255,255,255,255,240,7,255,255,255,255,255,255,255,244,7,255,255,255,255,255,255,255,244,7,240,0,0,0,0,0,0,0,2,160,0,0,0,0,0,0,0, + // 0x7f72 署 + 114,127,35,35,59,38,1,252,1,85,85,85,85,85,85,85,64,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,248,0,252,0,127,0,47,192,2,248,0,252,0,127,0,47,192,2,248,0,252,0,127,0,47,192,2,253,86,254,85,191,85,127,192,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,13,0,0,47,255,255,255,255,248,127,128,0,63,255,255,255,255,249,255,128,0,63,255,255,255,255,255,253,0,0,0,0,3,248,0,127,244,0,0,0,0,3,248,3,255,128,0,47,255,255,255,255,255,255,255,248,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,0,7,255,244,0,0,0,0,0,1,191,255,64,0,0,0,0,0,47,255,254,170,170,169,0,0,27,255,255,255,255,255,253,0,27,255,255,255,255,255,255,253,0,127,255,255,64,0,0,0,253,0,47,254,63,64,0,0,0,253,0,14,64,63,149,85,85,85,253,0,0,0,63,255,255,255,255,253,0,0,0,63,255,255,255,255,253,0,0,0,63,64,0,0,0,253,0,0,0,63,64,0,0,0,253,0,0,0,63,255,255,255,255,253,0,0,0,63,255,255,255,255,253,0,0,0,63,170,170,170,170,253,0,0,0,63,0,0,0,0,169,0, + // 0x8005 者 + 5,128,35,37,77,38,1,251,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,4,0,0,0,0,31,192,0,0,47,0,0,0,0,31,192,0,0,127,192,0,0,0,31,208,0,0,255,0,0,191,255,255,255,255,243,253,0,0,191,255,255,255,255,255,248,0,0,191,255,255,255,255,255,224,0,0,0,0,31,192,0,255,128,0,0,0,0,31,192,7,254,0,0,0,0,0,31,192,31,248,0,0,0,0,0,31,192,191,208,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,0,11,255,64,0,0,0,0,0,0,63,252,0,0,0,0,0,0,2,255,224,0,0,0,0,0,0,31,255,64,0,0,0,0,0,1,255,255,255,255,255,244,0,0,47,255,255,255,255,255,244,0,6,255,255,255,255,255,255,244,0,127,255,255,64,0,0,7,244,0,63,249,63,64,0,0,7,244,0,31,128,63,64,0,0,7,244,0,4,0,63,255,255,255,255,244,0,0,0,63,255,255,255,255,244,0,0,0,63,255,255,255,255,244,0,0,0,63,64,0,0,7,244,0,0,0,63,64,0,0,7,244,0,0,0,63,64,0,0,7,244,0,0,0,63,64,0,0,7,244,0,0,0,63,255,255,255,255,244,0,0,0,63,255,255,255,255,244,0,0,0,63,255,255,255,255,244,0,0,0,63,64,0,0,7,244,0,0,0,0,0,0,0,0,0,0, + // 0x806a 聪 + 106,128,36,36,68,38,1,252,0,0,0,0,1,64,0,36,0,0,0,0,0,15,192,0,127,0,63,255,255,252,15,224,0,255,0,63,255,255,252,7,244,0,253,0,63,255,255,252,3,252,2,252,0,3,224,15,192,1,252,3,244,0,3,224,15,192,0,253,7,240,0,3,224,15,192,0,164,15,208,0,3,224,15,192,191,255,255,255,224,3,224,15,192,191,255,255,255,224,3,255,255,192,191,255,255,255,224,3,255,255,192,190,0,0,11,224,3,255,255,192,190,0,0,11,224,3,224,15,192,190,0,0,11,224,3,224,15,192,190,0,0,11,224,3,224,15,192,190,0,0,11,224,3,224,15,192,190,0,0,11,224,3,224,15,192,191,255,255,255,224,3,255,255,192,191,255,255,255,224,3,255,255,192,191,255,255,255,224,3,255,255,192,0,0,64,0,0,3,224,15,192,0,7,208,0,0,3,224,15,192,0,3,240,0,0,3,224,15,192,1,245,252,1,0,3,224,15,232,229,244,190,15,192,3,224,111,252,249,244,63,75,208,7,255,255,253,245,244,31,131,240,127,255,255,230,241,244,8,3,244,127,255,239,194,241,244,0,1,248,63,144,15,195,241,244,0,124,252,16,0,15,199,225,244,0,124,189,0,0,15,207,209,244,0,188,62,0,0,15,203,193,255,255,252,36,0,0,15,192,64,255,255,244,0,0,0,15,192,0,127,255,224,0,0,0,15,192,0,0,0,0,0, + // 0x80fd 能 + 253,128,36,37,77,38,1,251,0,10,64,0,0,253,0,0,0,0,15,240,0,0,253,0,0,0,0,31,224,0,0,253,0,0,0,0,47,192,108,0,253,0,31,0,0,63,193,253,0,253,1,255,128,0,127,64,191,0,253,47,255,192,0,255,0,63,128,255,255,253,0,1,253,0,47,192,255,255,128,0,127,255,255,255,224,255,224,0,0,127,255,255,255,240,253,0,0,0,63,255,255,255,248,253,0,0,224,21,85,80,2,252,253,0,0,253,0,0,0,0,208,253,0,0,252,0,0,0,0,0,254,0,2,252,3,255,255,255,128,255,255,255,252,3,255,255,255,128,191,255,255,244,3,255,255,255,128,47,255,255,208,3,240,0,63,128,0,0,0,0,3,240,0,63,128,253,0,0,0,3,240,0,63,128,253,0,0,0,3,255,255,255,128,253,0,7,0,3,255,255,255,128,253,0,111,192,3,250,170,191,128,253,7,255,224,3,240,0,63,128,254,191,255,64,3,240,0,63,128,255,255,228,0,3,250,170,191,128,255,249,0,0,3,255,255,255,128,255,64,0,0,3,255,255,255,128,253,0,0,80,3,240,0,63,128,253,0,0,125,3,240,0,63,128,253,0,0,190,3,240,0,63,128,253,0,0,190,3,240,0,63,128,254,0,1,253,3,240,0,63,128,255,255,255,252,3,240,63,255,64,191,255,255,248,3,240,31,255,0,31,255,255,208,3,240,15,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x81ea 自 + 234,129,27,37,3,38,6,251,0,0,3,164,0,0,0,0,0,7,252,0,0,0,0,0,11,244,0,0,0,0,0,15,240,0,0,0,0,0,15,224,0,0,0,85,85,111,229,85,85,80,255,255,255,255,255,255,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,85,85,85,85,87,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,254,85,85,85,85,87,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,85,85,85,85,87,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,254,0,0,0,0,3,248,254,0,0,0,0,3,244,0,0,0,0,0,0,0, + // 0x81f3 至 + 243,129,34,33,41,38,2,253,63,255,255,255,255,255,255,255,208,63,255,255,255,255,255,255,255,208,63,255,255,255,255,255,255,255,208,21,85,87,253,85,85,85,85,64,0,0,11,252,0,11,0,0,0,0,0,15,244,0,63,192,0,0,0,0,47,240,0,127,244,0,0,0,0,63,208,0,15,253,0,0,0,0,127,128,0,3,255,128,0,0,0,255,0,0,0,255,224,0,26,171,255,171,255,255,255,248,0,31,255,255,255,255,255,255,254,0,31,255,255,255,255,255,255,255,128,31,255,254,170,165,85,0,191,192,0,0,0,0,0,0,0,47,0,0,0,0,3,248,0,0,8,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,1,255,255,255,255,255,255,248,0,1,255,255,255,255,255,255,248,0,1,255,255,255,255,255,255,248,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,21,85,85,85,85,85,85,85,80, + // 0x83dc 菜 + 220,131,34,36,68,38,2,252,0,0,63,64,0,31,192,0,0,0,0,63,64,0,31,192,0,0,0,0,63,128,0,47,192,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,63,64,0,31,192,0,0,0,0,63,64,0,31,192,0,0,0,0,42,64,0,22,255,208,0,0,1,85,170,191,255,255,244,0,31,255,255,255,255,255,255,248,0,15,255,255,255,255,254,148,0,0,15,255,254,169,80,0,0,128,0,0,0,0,6,192,0,2,253,0,1,184,0,15,208,0,3,252,0,2,253,0,11,240,0,11,244,0,0,255,0,7,244,0,15,240,0,0,63,128,3,248,0,47,192,0,0,47,192,2,224,0,127,64,0,0,15,128,3,248,0,190,0,0,0,4,0,3,248,0,8,0,0,0,0,0,3,248,0,0,0,0,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,0,0,2,255,255,244,0,0,0,0,0,11,255,255,253,0,0,0,0,0,127,243,248,255,128,0,0,0,2,255,195,248,63,248,0,0,0,47,254,3,248,15,255,128,0,6,255,244,3,248,2,255,249,0,191,255,192,3,248,0,63,255,224,255,253,0,3,248,0,7,255,224,127,208,0,3,248,0,0,127,192,41,0,0,3,248,0,0,6,64,0,0,0,3,248,0,0,0,0, + // 0x84dd 蓝 + 221,132,34,35,59,38,2,253,0,0,42,0,0,10,144,0,0,0,0,127,0,0,15,208,0,0,0,0,127,0,0,15,208,0,0,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,0,0,127,0,0,15,208,0,0,0,0,127,0,0,15,208,0,0,0,0,0,0,1,232,0,0,0,0,0,15,208,2,252,0,0,0,3,240,15,208,3,248,0,0,0,3,240,15,208,7,255,255,255,64,3,240,15,208,11,255,255,255,64,3,240,15,208,15,255,255,255,64,3,240,15,208,47,192,16,0,0,3,240,15,208,63,130,244,0,0,3,240,15,208,255,3,252,0,0,3,240,15,210,254,0,255,0,0,3,240,15,210,252,0,127,64,0,3,240,15,208,116,0,47,192,0,3,240,15,208,0,0,15,208,0,0,0,15,208,0,0,11,64,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,244,0,0,255,255,255,255,255,255,244,0,0,255,255,255,255,255,255,244,0,0,253,0,248,2,244,3,244,0,0,253,0,248,2,244,3,244,0,0,253,0,248,2,244,3,244,0,0,253,0,248,2,244,3,244,0,0,253,0,248,2,244,3,244,0,0,253,0,252,2,244,3,244,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x86c7 蛇 + 199,134,35,36,68,38,1,252,0,1,80,0,0,1,168,0,0,0,7,240,0,0,1,252,0,0,0,7,240,0,0,1,252,0,0,0,7,240,0,0,1,252,0,0,0,7,240,0,0,1,252,0,0,0,7,240,0,0,2,252,0,0,0,7,240,0,255,255,255,255,252,15,255,255,248,255,255,255,255,252,31,255,255,252,255,255,255,255,252,31,255,255,252,252,0,0,1,252,31,67,208,252,252,0,0,1,252,31,67,208,252,252,0,0,1,252,31,67,208,252,255,240,0,1,252,31,67,208,252,7,240,0,0,0,31,67,208,252,3,240,0,0,0,31,67,208,252,3,240,0,15,0,31,67,208,252,3,240,0,191,192,31,67,208,252,3,240,11,255,208,31,255,255,252,3,240,191,254,0,31,255,255,252,3,255,255,224,0,31,255,255,252,3,255,253,0,0,31,71,224,0,3,255,144,0,0,31,71,224,0,3,248,0,0,0,0,7,224,96,3,240,0,0,0,0,7,225,248,3,240,0,0,0,0,7,224,252,3,240,0,0,0,0,7,224,252,3,240,0,0,64,0,7,224,125,3,240,0,0,248,0,7,245,191,3,240,0,0,252,0,111,255,255,3,240,0,0,252,127,255,255,255,67,240,0,0,252,127,255,255,175,67,244,0,2,248,63,254,64,31,131,255,255,255,244,37,0,0,15,66,255,255,255,240,0,0,0,0,0,127,255,255,128,0,0,0,0,0,0,0,0,0, + // 0x884c 行 + 76,136,35,36,68,38,1,252,0,0,32,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,2,254,0,85,85,85,85,80,0,11,252,1,255,255,255,255,240,0,47,240,1,255,255,255,255,240,0,191,192,1,255,255,255,255,240,3,255,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,127,240,4,0,0,0,0,0,0,63,192,15,144,0,0,0,0,0,14,0,63,208,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,3,253,15,255,255,255,255,252,0,15,248,15,255,255,255,255,252,0,63,240,15,255,255,255,255,252,0,255,224,5,85,85,95,245,84,3,255,224,0,0,0,15,224,0,31,255,224,0,0,0,15,224,0,127,255,224,0,0,0,15,224,0,191,207,224,0,0,0,15,224,0,47,15,224,0,0,0,15,224,0,12,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,1,255,255,224,0,0,15,224,0,0,255,255,208,0,0,15,224,0,0,191,255,128,0,0,10,160,0,0,21,84,0,0, + // 0x88ab 被 + 171,136,36,36,68,38,1,252,0,15,192,0,0,1,252,0,0,0,31,192,0,0,1,252,0,0,0,31,192,0,0,1,252,0,0,0,31,192,0,0,1,252,0,0,0,31,192,0,0,1,252,0,0,0,31,192,0,0,1,252,0,0,0,31,192,1,255,255,255,255,252,63,255,255,193,255,255,255,255,252,63,255,255,241,255,255,255,255,252,63,255,255,209,252,2,252,3,248,0,0,47,193,252,1,252,3,244,0,0,63,129,252,1,252,3,240,0,0,127,1,252,1,252,11,240,0,0,253,1,252,1,252,6,208,0,3,252,33,252,1,252,0,0,0,11,244,189,255,255,255,255,208,0,31,241,249,255,255,255,255,240,0,127,251,225,255,255,255,255,208,0,255,255,193,255,244,0,31,192,3,255,255,66,255,248,0,63,192,31,255,239,194,249,252,0,63,128,191,255,207,226,248,253,0,191,0,191,143,195,243,244,191,0,255,0,62,15,193,211,244,63,130,253,0,40,15,192,67,240,47,199,252,0,0,15,192,7,240,15,255,244,0,0,15,192,11,240,7,255,224,0,0,15,192,15,224,3,255,192,0,0,15,192,15,208,2,255,128,0,0,15,192,31,192,15,255,240,0,0,15,192,63,128,127,255,253,0,0,15,192,127,66,255,215,255,208,0,15,192,255,47,255,1,255,253,0,15,194,253,63,248,0,63,253,0,15,192,188,31,208,0,7,244,0,15,192,20,9,0,0,0,96, + // 0x88c5 装 + 197,136,36,37,77,38,1,251,0,0,63,0,0,7,240,0,0,0,0,63,0,0,7,240,0,0,3,64,63,0,0,7,240,0,0,15,224,63,0,0,7,240,0,0,15,252,63,0,0,7,240,0,0,2,255,63,15,255,255,255,255,252,0,190,63,15,255,255,255,255,252,0,40,63,15,255,255,255,255,252,0,0,63,0,0,7,240,0,0,0,0,63,0,0,7,240,0,0,0,1,63,0,0,7,240,0,0,0,31,127,0,0,7,240,0,0,2,255,191,0,0,7,240,0,0,47,255,191,0,0,7,240,0,0,127,248,63,3,255,255,255,255,240,63,64,63,3,255,255,255,255,240,20,0,63,3,255,255,255,255,240,0,0,63,0,0,0,0,0,0,0,0,42,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,47,255,255,255,255,255,255,255,252,0,0,1,255,143,224,0,29,0,0,0,31,253,3,244,0,191,128,0,6,255,224,2,252,7,255,64,6,255,255,128,0,255,127,244,0,127,255,255,128,0,63,255,128,0,31,249,47,128,0,15,252,0,0,9,0,47,128,1,67,255,64,0,0,0,47,218,255,192,255,244,0,0,26,255,255,255,192,47,255,144,0,63,255,255,254,128,3,255,253,0,63,255,165,0,0,0,111,248,0,25,64,0,0,0,0,1,176,0,0,0,0,0,0,0,0,0, + // 0x8981 要 + 129,137,34,35,59,38,2,251,127,255,255,255,255,255,255,255,192,127,255,255,255,255,255,255,255,192,127,255,255,255,255,255,255,255,192,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,0,0,3,240,2,252,0,0,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,0,11,240,3,240,2,252,0,191,0,11,240,3,240,2,252,0,191,0,11,240,3,240,2,252,0,191,0,11,240,3,240,2,252,0,191,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,0,0,0,0,255,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,248,0,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,255,0,0,7,248,0,0,0,3,253,0,0,15,240,0,0,0,7,248,0,0,63,208,0,0,0,15,255,144,0,255,128,0,0,0,63,255,255,151,255,0,0,0,0,47,239,255,255,252,0,0,0,0,0,0,111,255,255,144,0,0,0,0,1,191,255,255,254,64,0,1,90,255,255,245,191,255,249,0,63,255,255,254,64,2,255,255,128,47,255,254,64,0,0,11,255,0,31,169,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0, + // 0x89d2 角 + 210,137,32,37,40,38,1,251,0,0,3,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,15,255,255,255,64,0,0,0,63,255,255,255,208,0,0,0,191,255,255,255,192,0,0,0,255,0,0,191,128,0,0,3,253,0,0,255,0,0,0,15,248,0,2,253,0,0,0,63,240,0,3,248,0,0,0,255,255,255,255,255,255,255,3,255,255,255,255,255,255,255,31,255,255,255,255,255,255,255,15,255,224,0,63,128,0,127,3,139,224,0,63,128,0,127,0,11,224,0,63,128,0,127,0,11,224,0,63,128,0,127,0,11,224,0,63,128,0,127,0,11,255,255,255,255,255,255,0,15,255,255,255,255,255,255,0,15,255,255,255,255,255,255,0,15,224,0,63,128,0,127,0,15,224,0,63,128,0,127,0,15,208,0,63,128,0,127,0,15,208,0,63,128,0,127,0,31,255,255,255,255,255,255,0,47,255,255,255,255,255,255,0,63,255,255,255,255,255,255,0,63,64,0,0,0,0,127,0,191,0,0,0,0,0,127,0,254,0,0,0,0,0,127,3,253,0,0,0,0,0,127,11,248,0,0,0,0,0,127,31,240,0,0,0,21,85,191,127,208,0,0,0,47,255,255,47,128,0,0,0,15,255,253,10,0,0,0,0,15,255,224,0,0,0,0,0,0,0,0, + // 0x8ba1 计 + 161,139,35,36,68,38,2,252,0,0,0,0,0,26,128,0,0,0,176,0,0,0,47,192,0,0,1,253,0,0,0,47,192,0,0,2,255,64,0,0,47,192,0,0,0,191,208,0,0,47,192,0,0,0,31,244,0,0,47,192,0,0,0,7,252,0,0,47,192,0,0,0,2,248,0,0,47,192,0,0,0,0,160,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,255,255,192,0,0,47,192,0,0,255,255,192,255,255,255,255,255,244,255,255,192,255,255,255,255,255,244,85,111,192,255,255,255,255,255,244,0,31,192,170,170,191,234,170,164,0,31,192,0,0,47,192,0,0,0,31,192,0,0,47,192,0,0,0,31,192,0,0,47,192,0,0,0,31,192,0,0,47,192,0,0,0,31,192,0,0,47,192,0,0,0,31,192,0,0,47,192,0,0,0,31,192,0,0,47,192,0,0,0,31,192,0,0,47,192,0,0,0,31,192,96,0,47,192,0,0,0,31,194,240,0,47,192,0,0,0,31,223,244,0,47,192,0,0,0,31,255,240,0,47,192,0,0,0,47,255,128,0,47,192,0,0,0,63,253,0,0,47,192,0,0,0,255,240,0,0,47,192,0,0,0,255,128,0,0,47,192,0,0,0,125,0,0,0,47,192,0,0,0,52,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0, + // 0x8bae 议 + 174,139,35,36,68,38,2,251,0,192,0,0,2,240,0,0,0,7,240,0,0,7,244,0,16,0,7,252,0,173,3,252,0,63,128,2,254,0,254,1,253,0,127,64,0,255,64,190,0,255,0,191,0,0,63,192,127,0,191,0,191,0,0,31,128,63,0,63,128,255,0,0,9,0,63,64,47,192,254,0,0,0,0,63,128,29,1,253,0,0,0,0,47,192,0,2,252,0,0,0,0,31,192,0,3,252,0,255,255,0,15,208,0,3,248,0,255,255,0,11,240,0,7,240,0,255,255,0,7,240,0,15,240,0,85,191,0,3,248,0,15,224,0,0,63,0,2,252,0,47,208,0,0,63,0,1,253,0,63,192,0,0,63,0,0,255,0,127,64,0,0,63,0,0,191,64,255,0,0,0,63,0,0,63,193,254,0,0,0,63,0,0,47,227,252,0,0,0,63,0,0,15,251,248,0,0,0,63,0,0,7,255,240,0,0,0,63,0,0,3,255,208,0,0,0,63,1,128,1,255,192,0,0,0,63,11,192,2,255,208,0,0,0,63,127,208,11,255,244,0,0,0,63,255,192,47,255,253,0,0,0,127,254,0,255,211,255,128,0,0,191,244,7,255,64,255,244,0,0,255,208,47,253,0,63,255,64,3,255,2,255,240,0,11,255,244,0,248,15,255,128,0,1,255,244,0,96,3,253,0,0,0,47,224,0,0,1,208,0,0,0,2,192,0,0,0,0,0,0,0,0,0, + // 0x8bbe 设 + 190,139,35,36,68,38,1,251,0,52,0,0,5,85,85,64,0,0,253,0,0,47,255,255,240,0,0,255,128,0,47,255,255,240,0,0,63,224,0,47,255,255,240,0,0,15,248,0,47,128,7,240,0,0,3,253,0,47,128,7,240,0,0,1,252,0,63,64,7,240,0,0,0,112,0,63,64,7,240,0,0,0,0,0,127,0,7,240,0,0,0,0,0,255,0,7,240,0,0,0,0,2,253,0,7,240,0,127,255,192,15,252,0,3,255,252,127,255,192,127,240,0,3,255,252,127,255,192,191,192,0,0,191,252,21,111,192,46,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,31,255,255,255,255,64,0,31,192,31,255,255,255,255,192,0,31,192,31,255,255,255,255,128,0,31,192,7,249,85,85,191,64,0,31,192,2,252,0,0,255,0,0,31,192,0,254,0,2,253,0,0,31,192,0,191,0,3,252,0,0,31,192,0,63,192,15,240,0,0,31,192,192,31,240,63,208,0,0,31,195,208,11,252,255,128,0,0,31,223,240,2,255,255,0,0,0,31,255,208,0,255,252,0,0,0,31,255,64,1,255,253,0,0,0,63,252,0,31,255,255,192,0,0,191,224,1,255,254,255,253,0,0,255,128,191,255,208,47,255,248,0,125,0,255,254,0,3,255,252,0,36,0,127,208,0,0,111,240,0,0,0,36,0,0,0,1,160,0,0,0,0,0,0,0,0,0, + // 0x8bd5 试 + 213,139,35,36,68,38,2,252,0,0,0,0,0,2,168,0,0,0,208,0,0,0,3,252,184,0,3,248,0,0,0,2,252,254,0,3,254,0,0,0,2,252,127,64,0,255,128,0,0,2,252,47,192,0,63,224,0,0,2,252,15,224,0,15,240,0,0,2,252,7,192,0,3,208,0,0,2,252,1,0,0,1,66,255,255,255,255,255,244,0,0,2,255,255,255,255,255,244,0,0,2,255,255,255,255,255,244,0,0,1,85,85,86,253,85,80,255,255,64,0,0,1,252,0,0,255,255,64,0,0,1,252,0,0,255,255,64,0,0,1,252,0,0,85,127,64,0,0,0,253,0,0,0,63,64,21,85,80,253,0,0,0,63,64,191,255,244,253,0,0,0,63,64,191,255,244,254,0,0,0,63,64,191,255,244,254,0,0,0,63,64,0,253,0,254,0,0,0,63,64,0,253,0,191,0,0,0,63,64,0,253,0,191,0,0,0,63,64,0,253,0,127,0,0,0,63,64,0,253,0,127,64,0,0,63,64,0,253,0,63,64,0,0,63,65,0,253,0,63,128,208,0,63,79,128,253,45,63,192,248,0,63,255,192,255,254,47,193,248,0,63,255,155,255,255,31,210,244,0,191,253,255,255,248,15,243,240,1,255,224,255,249,0,11,255,240,2,255,64,190,64,0,3,255,224,0,248,0,0,0,0,2,255,192,0,80,0,0,0,0,0,191,128,0,0,0,0,0,0,0,25,0, + // 0x8bef 误 + 239,139,36,36,68,38,1,251,0,96,0,0,0,0,0,0,0,1,248,0,3,255,255,255,255,192,3,255,0,3,255,255,255,255,192,0,255,192,3,255,255,255,255,192,0,63,240,3,240,0,0,31,192,0,15,252,3,240,0,0,31,192,0,3,248,3,240,0,0,31,192,0,1,224,3,240,0,0,31,192,0,0,64,3,244,0,0,31,192,0,0,0,3,255,255,255,255,192,0,0,0,3,255,255,255,255,192,127,255,192,3,255,255,255,255,192,127,255,192,0,0,0,0,0,0,127,255,192,0,0,0,0,0,0,21,111,192,0,0,0,0,0,0,0,15,192,15,255,255,255,255,240,0,15,192,15,255,255,255,255,240,0,15,192,15,255,255,255,255,240,0,15,192,0,0,15,208,0,0,0,15,192,0,0,15,208,0,0,0,15,192,0,0,15,208,0,0,0,15,192,0,0,15,208,0,0,0,15,192,63,255,255,255,255,253,0,15,192,63,255,255,255,255,253,0,15,192,63,255,255,255,255,253,0,15,192,64,0,63,248,0,0,0,15,195,192,0,255,253,0,0,0,15,239,208,1,254,255,0,0,0,31,255,208,7,252,127,192,0,0,47,255,0,31,244,47,244,0,0,127,248,1,255,224,11,254,0,0,127,208,31,255,128,2,255,244,0,47,0,191,253,0,0,191,253,0,8,0,63,224,0,0,15,244,0,0,0,29,0,0,0,0,176,0,0,0,0,0,0,0,0,0, + // 0x8bf7 请 + 247,139,36,37,77,38,1,251,0,0,0,0,0,15,208,0,0,0,160,0,0,0,15,208,0,0,2,252,0,0,0,15,208,0,0,2,255,0,31,255,255,255,255,240,0,191,192,31,255,255,255,255,240,0,47,240,26,170,175,250,170,160,0,11,248,0,0,15,208,0,0,0,2,240,5,85,95,229,85,64,0,0,128,11,255,255,255,255,192,0,0,0,11,255,255,255,255,192,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,127,255,192,106,170,175,250,170,168,127,255,192,191,255,255,255,255,253,127,255,192,191,255,255,255,255,253,21,95,192,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,15,192,3,255,255,255,255,128,0,15,192,3,255,255,255,255,128,0,15,192,3,254,170,170,191,128,0,15,192,3,240,0,0,63,128,0,15,192,3,240,0,0,63,128,0,15,192,3,249,85,85,127,128,0,15,192,3,255,255,255,255,128,0,15,192,3,255,255,255,255,128,0,15,192,67,240,0,0,63,128,0,15,194,195,240,0,0,63,128,0,15,223,227,249,85,85,127,128,0,15,255,227,255,255,255,255,128,0,15,255,131,255,255,255,255,128,0,47,253,3,240,0,0,63,128,0,63,244,3,240,0,0,63,128,0,255,192,3,240,0,0,63,128,0,127,0,3,240,0,127,255,64,0,40,0,3,240,0,63,255,0,0,0,0,3,240,0,47,248,0,0,0,0,0,0,0,0,0,0, + // 0x8bfb 读 + 251,139,35,37,77,38,1,251,0,0,0,0,0,15,208,0,0,0,240,0,0,0,15,208,0,0,3,253,0,0,0,15,208,0,0,1,255,128,15,255,255,255,255,192,0,127,224,15,255,255,255,255,192,0,31,248,15,255,255,255,255,192,0,11,248,0,0,15,208,0,0,0,2,240,0,0,15,208,0,0,0,0,208,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,63,255,255,255,255,244,0,0,0,63,255,255,255,255,244,127,255,192,63,255,255,255,255,240,127,255,192,0,0,0,0,7,224,127,255,192,0,96,3,240,11,208,21,111,192,0,254,3,240,15,192,0,15,192,0,127,211,240,31,128,0,15,192,13,11,251,240,11,64,0,15,192,63,129,247,240,0,0,0,15,192,31,244,3,240,0,0,0,15,192,2,253,7,240,0,0,0,15,192,0,191,7,240,0,0,0,15,192,0,28,11,240,0,0,0,15,192,255,255,255,255,255,252,0,15,192,255,255,255,255,255,252,0,15,192,255,255,255,255,255,252,0,15,199,64,0,63,128,0,0,0,15,239,128,0,255,10,0,0,0,15,255,192,3,254,47,192,0,0,31,255,0,15,252,47,244,0,0,31,252,0,127,240,7,254,0,0,63,224,2,255,192,0,255,192,0,191,128,47,255,0,0,47,240,0,190,1,255,248,0,0,7,252,0,56,0,191,192,0,0,1,248,0,0,0,57,0,0,0,0,96,0,0,0,0,0,0,0,0,0, + // 0x8c03 调 + 3,140,34,36,68,38,1,251,0,96,0,0,0,0,0,0,0,2,248,0,47,255,255,255,255,240,3,255,0,47,255,255,255,255,240,0,255,192,47,255,255,255,255,240,0,63,240,47,128,0,0,3,240,0,15,248,47,128,11,192,3,240,0,3,244,47,128,11,192,3,240,0,0,208,47,128,11,192,3,240,0,0,0,47,135,255,255,195,240,0,0,0,47,135,255,255,195,240,0,0,0,47,130,175,234,131,240,21,85,64,47,128,11,192,3,240,127,255,192,47,128,11,192,3,240,127,255,192,47,128,11,192,3,240,127,255,192,47,143,255,255,227,240,0,31,192,47,143,255,255,227,240,0,31,192,47,138,170,170,147,240,0,31,192,47,64,0,0,3,240,0,31,192,47,64,0,0,3,240,0,31,192,47,70,170,170,67,240,0,31,192,47,75,255,255,131,240,0,31,192,63,75,255,255,131,240,0,31,192,63,11,192,15,131,240,0,31,192,63,11,192,15,131,240,0,31,192,63,11,192,15,131,240,0,31,203,127,11,192,15,131,240,0,31,255,254,11,255,255,131,240,0,31,255,253,11,255,255,131,240,0,47,254,252,11,234,170,67,240,0,63,249,252,11,192,0,3,240,0,127,211,248,5,64,0,3,240,0,255,71,240,0,0,0,7,240,0,253,15,240,0,0,11,255,240,0,52,11,208,0,0,3,255,224,0,0,1,128,0,0,3,255,64,0,0,0,0,0,0,0,0,0, + // 0x8d25 败 + 37,141,35,36,68,38,2,252,0,0,0,0,0,16,0,0,0,0,0,0,0,0,63,64,0,0,47,255,255,253,0,63,64,0,0,47,255,255,253,0,127,0,0,0,47,255,255,253,0,190,0,0,0,47,64,0,253,0,253,0,0,0,47,0,0,189,0,252,0,0,0,47,1,80,189,1,255,255,255,240,47,3,240,189,3,255,255,255,240,47,3,240,189,3,255,255,255,240,47,3,240,189,11,240,0,189,0,47,3,240,189,15,208,0,189,0,47,3,240,189,31,192,0,252,0,47,3,240,189,63,192,0,252,0,47,3,240,189,191,208,0,252,0,47,3,240,189,255,224,1,248,0,47,3,240,189,255,240,2,244,0,47,3,240,189,123,240,3,240,0,47,7,240,189,34,248,3,240,0,47,7,240,189,0,252,7,224,0,47,7,224,189,0,253,11,208,0,47,7,224,189,0,127,15,192,0,47,11,224,189,0,63,95,192,0,47,11,208,189,0,31,255,64,0,47,15,192,189,0,15,255,0,0,26,15,192,84,0,7,254,0,0,0,31,129,0,0,3,252,0,0,0,63,95,64,0,3,255,0,0,0,127,47,192,0,15,255,128,0,0,254,15,224,0,63,255,224,0,3,252,3,244,0,255,143,248,0,11,244,2,252,3,254,3,255,0,63,224,0,254,47,248,0,255,224,255,128,0,126,191,224,0,63,244,126,0,0,36,47,64,0,11,208,36,0,0,0,8,0,0,0,128, + // 0x8d2a 贪 + 42,141,35,37,77,38,2,251,0,0,0,0,116,0,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,191,255,224,0,0,0,0,0,11,255,159,254,0,0,0,0,0,191,253,2,255,228,0,0,0,31,255,226,192,127,255,144,0,6,255,254,11,244,7,255,254,64,191,255,224,3,253,0,127,255,244,255,254,0,0,255,0,2,255,224,63,208,0,0,61,0,0,27,192,20,63,255,255,255,255,253,0,0,0,63,255,255,255,255,255,64,0,0,63,255,255,255,255,253,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,191,64,0,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,0,0,0,0,31,192,0,0,63,0,2,164,0,31,192,0,0,63,0,3,248,0,31,192,0,0,63,0,3,248,0,31,192,0,0,63,0,3,248,0,31,192,0,0,63,0,3,248,0,31,192,0,0,63,0,7,244,0,31,192,0,0,63,0,15,240,0,31,192,0,0,63,0,63,227,224,26,128,0,0,0,1,255,203,255,128,0,0,0,0,31,255,11,255,253,0,0,0,6,255,248,0,111,255,224,0,1,191,255,208,0,1,255,254,0,47,255,253,0,0,0,27,255,128,11,255,128,0,0,0,0,191,0,3,224,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0, + // 0x8d77 起 + 119,141,36,37,77,38,1,251,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,2,255,255,255,208,0,0,253,0,2,255,255,255,208,15,255,255,255,194,255,255,255,208,15,255,255,255,192,0,0,15,208,15,255,255,255,192,0,0,15,208,0,0,253,0,0,0,0,15,208,0,0,253,0,0,0,0,15,208,0,0,253,0,0,0,0,15,208,0,0,253,0,0,0,0,15,208,0,0,253,0,0,0,0,15,208,63,255,255,255,240,170,170,175,208,63,255,255,255,241,255,255,255,208,63,255,255,255,241,255,255,255,208,0,0,127,0,1,252,0,15,208,0,0,127,0,1,252,0,0,0,0,0,127,0,1,252,0,0,0,7,240,127,0,1,252,0,0,0,7,240,127,0,1,252,0,0,0,11,240,127,255,225,252,0,0,0,11,224,127,255,225,252,0,0,164,11,224,127,255,225,252,0,0,189,11,240,127,0,1,252,0,0,253,15,240,127,0,1,252,0,0,252,15,248,127,0,0,253,0,1,252,15,252,127,0,0,255,255,255,252,15,255,127,0,0,191,255,255,244,15,255,255,0,0,47,255,255,208,31,239,255,0,0,0,0,0,0,47,143,255,64,0,0,0,0,0,63,67,255,254,165,85,85,85,85,63,64,191,255,255,255,255,255,253,191,0,27,255,255,255,255,255,252,254,0,0,27,255,255,255,255,248,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x8d85 超 + 133,141,36,36,68,38,1,252,0,1,248,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,1,252,0,15,255,255,255,244,0,1,252,0,15,255,255,255,240,0,1,252,0,15,255,255,255,240,15,255,255,255,128,11,224,3,240,15,255,255,255,128,15,208,7,240,15,255,255,255,128,15,192,7,240,0,1,252,0,0,47,192,7,240,0,1,252,0,0,63,128,11,240,0,1,252,0,0,191,0,15,224,0,1,252,0,2,254,0,15,224,63,255,255,255,219,248,31,255,208,63,255,255,255,255,240,15,255,192,63,255,255,255,255,128,11,254,0,0,0,253,0,5,0,0,0,0,0,0,253,0,3,255,255,255,208,7,208,253,0,3,255,255,255,208,11,224,253,0,3,255,255,255,208,11,224,253,0,3,240,0,15,208,11,224,255,255,195,240,0,15,208,11,224,255,255,195,240,0,15,208,11,208,255,255,195,240,0,15,208,11,224,253,0,3,240,0,15,208,15,240,253,0,3,240,0,15,208,15,240,253,0,3,240,0,15,208,15,248,253,0,3,255,255,255,208,15,253,253,0,3,255,255,255,208,31,255,253,0,3,255,255,255,208,31,255,253,0,0,0,0,0,0,47,143,254,0,0,0,0,0,0,63,71,255,254,165,85,85,85,85,127,0,255,255,255,255,255,255,253,191,0,31,255,255,255,255,255,252,189,0,0,107,255,255,255,255,248,8,0,0,0,0,0,0,0,0, + // 0x8ddd 距 + 221,141,36,35,59,38,1,252,0,0,0,0,5,85,85,85,84,11,255,255,252,31,255,255,255,252,11,255,255,252,31,255,255,255,252,11,255,255,252,31,255,255,255,252,11,208,0,252,31,192,0,0,0,11,208,0,252,31,192,0,0,0,11,208,0,252,31,192,0,0,0,11,208,0,252,31,192,0,0,0,11,208,0,252,31,192,0,0,0,11,224,0,252,31,213,85,85,64,11,255,255,252,31,255,255,255,208,11,255,255,252,31,255,255,255,208,11,255,255,252,31,255,255,255,208,0,1,248,0,31,192,0,15,208,0,1,248,0,31,192,0,15,208,0,1,248,0,31,192,0,15,208,11,193,248,0,31,192,0,15,208,11,193,248,0,31,192,0,15,208,11,193,255,255,31,192,0,15,208,11,193,255,255,31,192,0,15,208,11,193,255,255,31,213,85,95,208,11,193,248,0,31,255,255,255,208,11,193,248,0,31,255,255,255,208,11,193,248,0,31,255,255,255,208,11,193,248,0,31,192,0,0,0,11,193,248,0,31,192,0,0,0,11,193,248,6,31,192,0,0,0,11,193,254,255,31,192,0,0,0,11,219,255,255,95,192,0,0,0,47,255,255,254,31,213,85,85,84,191,255,254,64,31,255,255,255,253,127,254,64,0,31,255,255,255,253,58,64,0,0,31,255,255,255,253,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0, + // 0x8f6c 转 + 108,143,36,37,77,38,1,251,0,6,64,0,0,0,164,0,0,0,11,240,0,0,0,253,0,0,0,15,224,0,0,1,253,0,0,0,15,208,0,0,2,252,0,0,0,31,208,0,0,3,252,0,0,127,255,255,252,127,255,255,255,240,127,255,255,252,127,255,255,255,240,127,255,255,252,127,255,255,255,240,0,63,0,0,0,15,224,0,0,0,190,0,0,0,15,208,0,0,0,252,0,0,0,31,192,0,0,0,252,253,0,85,111,213,85,84,1,248,253,3,255,255,255,255,253,3,240,253,3,255,255,255,255,253,3,240,253,3,255,255,255,255,253,11,208,253,0,0,255,0,0,0,15,208,254,0,0,254,0,0,0,47,255,255,252,1,253,0,0,0,47,255,255,252,2,252,0,0,0,15,255,255,252,3,255,255,255,208,4,0,253,0,7,255,255,255,240,0,0,253,0,11,255,255,255,192,0,0,253,0,5,85,85,255,64,0,0,253,6,0,0,1,255,0,0,0,255,255,0,0,3,252,0,1,111,255,255,0,0,11,244,0,127,255,255,255,0,248,31,224,0,63,255,255,80,3,255,127,192,0,63,249,253,0,1,255,255,0,0,20,0,253,0,0,47,254,0,0,0,0,253,0,0,7,255,128,0,0,0,253,0,0,0,255,224,0,0,0,253,0,0,0,47,252,0,0,0,253,0,0,0,7,254,0,0,0,253,0,0,0,1,248,0,0,0,253,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0, + // 0x8f6f 软 + 111,143,35,36,68,38,1,252,0,0,144,0,0,57,0,0,0,0,1,252,0,0,63,64,0,0,0,2,252,0,0,127,0,0,0,0,3,248,0,0,127,0,0,0,21,87,249,85,64,191,0,0,0,63,255,255,255,192,254,0,0,0,63,255,255,255,192,255,255,255,248,63,255,255,255,193,255,255,255,252,0,31,192,0,2,255,255,255,252,0,47,128,0,3,248,0,2,252,0,63,64,0,7,244,0,2,248,0,127,47,128,11,240,0,3,244,0,190,47,128,15,224,0,3,240,0,253,47,128,47,208,252,7,240,2,252,47,128,63,192,252,7,224,3,244,47,128,191,64,252,11,208,11,244,47,128,31,0,252,11,192,31,255,255,255,193,1,252,0,64,15,255,255,255,192,1,252,0,0,15,255,255,255,192,1,253,0,0,0,0,47,128,0,2,254,0,0,0,0,47,128,0,2,255,0,0,0,0,47,128,0,3,255,0,0,0,0,47,128,0,7,255,64,0,0,0,47,239,192,11,255,192,0,1,107,255,255,208,15,255,208,0,127,255,255,255,208,31,219,240,0,63,255,255,229,0,63,199,244,0,63,254,191,128,0,191,67,252,0,37,0,47,128,1,255,1,254,0,0,0,47,128,3,253,0,255,128,0,0,47,128,15,248,0,63,224,0,0,47,128,127,224,0,31,252,0,0,47,128,255,192,0,11,252,0,0,47,128,126,0,0,1,244,0,0,31,64,24,0,0,0,96, + // 0x8f74 轴 + 116,143,35,37,77,38,1,251,0,10,64,0,0,1,252,0,0,0,15,224,0,0,1,252,0,0,0,15,208,0,0,1,252,0,0,0,15,192,0,0,1,252,0,0,21,95,213,80,0,1,252,0,0,63,255,255,252,0,1,252,0,0,63,255,255,252,0,1,252,0,0,63,255,255,252,0,1,252,0,0,0,127,0,0,0,2,253,0,0,0,190,0,0,191,255,255,255,244,0,253,0,0,191,255,255,255,244,0,252,190,0,191,255,255,255,244,1,252,190,0,190,0,252,3,244,2,244,190,0,190,0,252,3,244,3,240,190,0,190,0,252,3,244,7,224,190,0,190,0,252,3,244,15,208,190,0,190,0,252,3,244,47,255,255,252,190,0,252,3,244,31,255,255,252,190,0,252,3,244,15,255,255,252,191,255,255,255,244,4,0,190,0,191,255,255,255,244,0,0,190,0,191,255,255,255,244,0,0,190,0,190,1,252,3,244,0,0,190,20,190,0,252,3,244,0,0,191,252,190,0,252,3,244,0,107,255,252,190,0,252,3,244,127,255,255,252,190,0,252,3,244,63,255,255,144,190,0,252,3,244,63,254,254,0,190,0,252,3,244,41,0,190,0,190,0,252,3,244,0,0,190,0,190,1,252,3,244,0,0,190,0,191,255,255,255,244,0,0,190,0,191,255,255,255,244,0,0,190,0,191,255,255,255,244,0,0,190,0,190,0,0,3,244,0,0,125,0,190,0,0,3,244,0,0,0,0,0,0,0,0,0, + // 0x8f7d 载 + 125,143,35,36,68,38,2,252,0,0,63,0,0,42,0,0,0,0,0,63,0,0,63,66,192,0,0,0,63,0,0,63,79,244,0,15,255,255,255,248,63,67,252,0,15,255,255,255,248,63,64,255,0,15,255,255,255,248,63,64,127,128,0,0,63,0,0,63,64,47,0,0,0,63,0,0,63,64,8,0,0,0,63,0,0,63,64,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,0,3,228,0,0,63,128,0,0,0,11,240,0,0,47,128,16,0,0,15,224,0,0,47,192,63,64,127,255,255,255,255,47,192,63,0,127,255,255,255,255,31,192,191,0,127,255,255,255,254,31,192,253,0,0,254,0,0,0,31,192,252,0,1,252,11,224,0,15,210,252,0,3,248,11,224,0,15,211,244,0,11,240,11,224,0,15,231,240,0,31,255,255,255,253,11,239,224,0,15,255,255,255,252,11,255,192,0,15,255,255,255,252,7,255,128,0,4,0,11,224,0,3,255,0,0,0,0,11,224,0,3,254,0,0,0,0,11,224,21,3,252,1,208,21,171,255,255,255,11,252,1,244,127,255,255,255,255,31,254,1,244,127,255,255,254,80,127,255,2,240,62,149,11,224,1,255,127,211,240,0,0,11,224,11,253,47,255,240,0,0,11,224,47,244,11,255,208,0,0,11,224,11,208,2,255,128,0,0,5,80,2,0,0,20,0, + // 0x8f91 辑 + 145,143,36,36,68,38,1,252,0,10,64,0,0,0,0,0,0,0,15,224,0,42,170,170,170,64,0,15,208,0,63,255,255,255,192,0,31,192,0,63,255,255,255,192,21,111,213,80,63,64,0,47,192,63,255,255,248,63,64,0,47,192,63,255,255,248,63,64,0,47,192,63,255,255,248,63,255,255,255,192,0,127,0,0,63,255,255,255,192,0,190,0,0,42,170,170,170,128,0,252,84,0,0,0,0,0,0,0,252,253,0,0,0,0,0,0,2,248,253,3,255,255,255,255,252,3,244,253,3,255,255,255,255,252,3,240,253,3,255,255,255,255,252,11,224,253,0,47,128,0,47,128,15,208,253,0,47,128,0,47,128,47,255,255,244,47,234,170,191,128,47,255,255,244,47,255,255,255,128,15,255,255,244,47,255,255,255,128,4,0,253,0,47,128,0,47,128,0,0,253,0,47,128,0,47,128,0,0,253,0,47,128,0,47,128,0,0,253,0,47,255,255,255,128,0,1,255,252,47,255,255,255,128,26,255,255,252,47,234,170,191,128,127,255,255,252,47,128,0,47,128,63,255,253,0,47,128,0,47,128,62,144,253,0,63,150,171,255,253,0,0,253,11,255,255,255,255,253,0,0,253,11,255,255,255,255,253,0,0,253,7,255,234,80,47,128,0,0,253,0,0,0,0,47,128,0,0,253,0,0,0,0,47,128,0,0,253,0,0,0,0,47,128,0,0,169,0,0,0,0,47,128, + // 0x8f93 输 + 147,143,36,36,68,38,1,252,0,41,0,0,0,2,208,0,0,0,63,0,0,0,7,244,0,0,0,63,0,0,0,15,240,0,0,0,127,0,0,0,63,252,0,0,0,191,0,0,0,255,255,0,0,63,255,255,192,7,252,63,192,0,63,255,255,192,47,240,15,244,0,63,255,255,192,255,192,2,254,0,0,252,0,11,254,0,0,127,224,1,248,0,127,255,255,255,255,254,2,244,0,63,255,255,255,255,252,3,242,240,31,127,255,255,253,180,3,243,240,0,0,0,0,0,0,7,211,240,0,0,0,0,0,80,11,195,240,0,0,0,0,2,240,15,195,240,7,255,255,199,194,240,31,131,244,7,255,255,199,210,240,63,255,255,199,255,255,199,210,240,63,255,255,199,208,15,199,210,240,47,255,255,199,208,15,199,210,240,4,3,240,7,255,255,199,210,240,0,3,240,7,255,255,199,210,240,0,3,240,7,250,175,199,210,240,0,3,245,135,208,15,199,210,240,0,3,255,199,208,15,199,210,240,6,255,255,199,250,175,199,210,240,127,255,255,135,255,255,199,210,240,63,255,240,7,255,255,199,210,240,63,147,240,7,208,15,199,210,240,0,3,240,7,208,15,199,194,240,0,3,240,7,208,15,192,2,240,0,3,240,7,208,15,192,2,240,0,3,240,7,208,15,192,2,240,0,3,240,7,210,255,130,255,240,0,3,240,7,209,255,65,255,224,0,2,240,7,208,233,0,250,64, + // 0x8fb9 边 + 185,143,36,37,77,38,1,251,0,0,0,0,0,84,0,0,0,1,224,0,0,1,253,0,0,0,11,248,0,0,1,253,0,0,0,3,254,0,0,1,253,0,0,0,0,255,128,0,1,253,0,0,0,0,127,208,0,1,252,0,0,0,0,31,240,0,2,252,0,0,0,0,11,240,255,255,255,255,255,240,0,3,192,255,255,255,255,255,240,0,0,0,255,255,255,255,255,240,0,0,0,85,87,253,85,95,240,0,0,0,0,3,248,0,11,240,0,0,0,0,3,248,0,11,240,127,255,192,0,7,244,0,15,240,127,255,192,0,7,244,0,15,224,127,255,192,0,11,240,0,15,224,21,127,192,0,15,240,0,15,224,0,47,192,0,31,224,0,15,224,0,47,192,0,47,192,0,15,224,0,47,192,0,63,192,0,15,208,0,47,192,0,127,128,0,31,208,0,47,192,0,255,0,0,31,208,0,47,192,2,254,0,0,47,192,0,47,192,7,252,0,0,47,192,0,47,192,15,244,0,0,63,192,0,47,192,127,240,0,0,127,128,0,47,193,255,192,11,255,255,64,0,47,194,255,0,3,255,255,0,0,127,192,184,0,3,255,252,0,3,255,244,16,0,1,85,64,0,15,255,255,64,0,0,0,0,0,63,245,255,249,64,0,0,21,106,255,192,47,255,255,255,255,255,253,127,64,3,255,255,255,255,255,252,46,0,0,47,255,255,255,255,252,8,0,0,0,21,85,85,85,0,0,0,0,0,0,0,0,0,0, + // 0x8fc1 迁 + 193,143,36,36,68,38,1,252,0,0,0,0,0,0,0,4,0,0,244,0,0,0,0,6,253,0,3,254,0,0,0,22,255,255,64,1,255,192,1,175,255,255,255,64,0,63,244,255,255,255,255,144,0,0,11,252,191,255,255,144,0,0,0,2,240,127,165,63,64,0,0,0,0,128,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,7,192,0,0,0,63,64,0,0,31,248,0,0,0,63,64,0,0,15,255,0,0,0,63,64,0,0,1,255,208,0,0,63,64,0,0,0,63,240,0,0,63,128,0,0,0,11,195,255,255,255,255,255,252,0,2,3,255,255,255,255,255,252,0,0,3,255,255,255,255,255,252,0,0,0,0,0,63,64,0,0,63,255,208,0,0,63,64,0,0,63,255,208,0,0,63,64,0,0,63,255,208,0,0,63,64,0,0,21,95,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,15,208,0,0,63,64,0,0,0,63,240,0,0,63,64,0,0,1,255,253,0,0,63,64,0,0,11,255,255,144,0,0,0,0,0,63,248,127,254,149,85,85,85,89,127,224,15,255,255,255,255,255,252,63,64,1,255,255,255,255,255,252,28,0,0,10,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0x8fd0 运 + 208,143,36,36,68,38,1,252,0,64,0,0,0,0,0,0,0,1,248,0,0,0,0,0,0,0,3,255,64,31,255,255,255,255,192,1,255,224,31,255,255,255,255,192,0,47,248,31,255,255,255,255,192,0,7,244,5,85,85,85,85,64,0,1,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,64,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,47,253,0,0,0,0,0,0,0,7,255,130,255,255,255,255,255,253,0,191,226,255,255,255,255,255,253,0,47,194,255,255,255,255,255,253,0,7,0,85,95,249,85,85,84,0,0,0,0,15,240,0,0,0,0,0,0,0,31,224,1,64,0,0,0,0,0,47,192,15,208,0,63,255,192,0,63,192,15,240,0,63,255,192,0,127,64,3,248,0,63,255,192,0,191,0,1,253,0,21,111,192,0,254,0,0,255,0,0,31,192,1,252,0,0,63,128,0,31,192,3,248,5,106,255,208,0,31,192,171,255,255,255,255,240,0,31,193,255,255,255,255,255,244,0,31,192,255,255,255,234,87,252,0,31,192,254,165,0,0,2,252,0,127,240,0,0,0,0,0,208,1,255,248,0,0,0,0,0,0,11,255,255,64,0,0,0,0,0,127,244,191,254,85,0,1,85,85,127,208,47,255,255,255,255,255,252,63,64,2,255,255,255,255,255,252,28,0,0,27,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0x8fd1 近 + 209,143,36,36,68,38,1,252,0,0,0,0,0,0,0,40,0,2,64,0,0,0,0,27,254,0,15,224,0,0,0,111,255,255,192,31,252,0,7,255,255,255,249,0,3,255,0,7,255,255,249,0,0,0,255,192,7,255,164,0,0,0,0,63,240,7,240,0,0,0,0,0,15,224,7,240,0,0,0,0,0,3,64,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,255,255,255,255,252,0,0,0,7,255,255,255,255,252,0,0,0,7,255,255,255,255,252,0,0,0,11,245,85,127,149,84,63,255,208,11,240,0,63,64,0,63,255,208,15,224,0,63,64,0,63,255,208,15,224,0,63,64,0,21,95,208,15,208,0,63,64,0,0,15,208,31,192,0,63,64,0,0,15,208,47,192,0,63,64,0,0,15,208,63,128,0,63,64,0,0,15,208,127,64,0,63,64,0,0,15,208,255,0,0,63,64,0,0,15,209,254,0,0,63,64,0,0,15,211,252,0,0,63,64,0,0,15,219,244,0,0,63,64,0,0,31,210,240,0,0,63,64,0,0,127,240,128,0,0,63,64,0,2,255,253,0,0,0,63,64,0,15,255,255,144,0,0,0,0,0,127,248,127,254,149,85,85,85,169,127,224,31,255,255,255,255,255,252,63,64,2,255,255,255,255,255,252,28,0,0,26,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0x8fd4 返 + 212,143,36,35,59,38,1,252,2,64,0,0,0,0,0,0,0,15,208,0,31,255,255,255,255,240,31,248,0,31,255,255,255,255,240,7,254,0,31,255,255,255,255,240,1,255,128,31,213,85,85,85,80,0,127,208,31,192,0,0,0,0,0,31,224,31,192,0,0,0,0,0,11,64,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,47,255,255,255,255,128,0,0,0,47,255,255,255,255,128,0,0,0,47,255,255,255,255,64,0,0,0,47,239,192,0,191,0,0,0,0,47,207,208,0,254,0,63,255,192,47,139,240,1,253,0,63,255,192,63,135,244,3,252,0,63,255,192,63,131,252,11,244,0,21,111,192,63,65,254,31,240,0,0,47,192,127,0,191,127,208,0,0,47,192,191,0,63,255,128,0,0,47,192,255,0,31,255,0,0,0,47,192,253,0,15,253,0,0,0,47,193,252,0,63,255,64,0,0,47,195,252,1,255,255,240,0,0,47,199,244,27,255,127,254,0,0,47,207,241,255,252,11,255,228,0,47,203,210,255,224,1,255,252,0,127,241,192,255,0,0,47,244,2,255,252,0,52,0,0,1,224,15,255,255,128,0,0,0,0,0,127,244,191,254,149,85,85,85,105,127,208,47,255,255,255,255,255,252,63,64,2,255,255,255,255,255,252,28,0,0,27,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0x8fd8 还 + 216,143,36,37,77,38,1,251,0,64,0,0,0,0,0,0,0,2,240,0,0,0,0,0,0,0,11,252,0,85,85,85,85,85,80,3,255,1,255,255,255,255,255,240,0,255,193,255,255,255,255,255,240,0,63,225,255,255,255,255,255,240,0,15,244,0,0,15,240,0,0,0,7,224,0,0,47,208,0,0,0,2,64,0,0,127,192,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,15,255,5,0,0,127,255,192,0,63,255,31,64,0,127,255,192,0,191,255,127,208,0,127,255,192,2,255,191,31,244,0,21,127,192,11,253,127,7,253,0,0,47,192,47,244,127,2,255,64,0,47,192,255,224,127,0,191,208,0,47,199,255,128,127,0,47,240,0,47,207,253,0,127,0,15,252,0,47,199,244,0,127,0,3,240,0,47,193,192,0,127,0,0,192,0,47,192,0,0,127,0,0,0,0,47,192,0,0,127,0,0,0,0,47,192,0,0,127,0,0,0,0,47,192,0,0,127,0,0,0,0,47,192,0,0,127,0,0,0,0,191,208,0,0,127,0,0,0,3,255,248,0,0,127,0,0,0,15,255,255,64,0,0,0,0,0,63,245,255,249,64,0,0,21,170,255,192,47,255,255,255,255,255,253,127,64,3,255,255,255,255,255,252,46,0,0,47,255,255,255,255,252,8,0,0,0,21,85,85,85,0,0,0,0,0,0,0,0,0,0, + // 0x8fdb 进 + 219,143,36,35,59,38,1,252,1,192,0,0,63,128,15,208,0,11,240,0,0,63,128,15,208,0,11,252,0,0,63,128,15,208,0,2,255,0,0,63,128,15,208,0,0,191,192,0,63,128,15,208,0,0,47,240,0,63,128,15,208,0,0,15,240,255,255,255,255,255,240,0,3,128,255,255,255,255,255,240,0,0,0,255,255,255,255,255,240,0,0,0,85,127,149,95,229,80,0,0,0,0,63,128,15,208,0,0,0,0,0,63,128,15,208,0,0,0,0,0,63,128,15,208,0,63,255,208,0,63,128,15,208,0,63,255,208,0,63,64,15,208,0,63,255,208,85,127,149,95,229,84,21,95,209,255,255,255,255,255,252,0,15,209,255,255,255,255,255,252,0,15,209,255,255,255,255,255,252,0,15,208,0,191,0,15,208,0,0,15,208,0,254,0,15,208,0,0,15,208,1,253,0,15,208,0,0,15,208,2,252,0,15,208,0,0,15,208,7,248,0,15,208,0,0,15,208,15,244,0,15,208,0,0,15,208,63,224,0,15,208,0,0,15,208,127,192,0,15,208,0,0,127,224,31,64,0,15,208,0,2,255,253,9,0,0,10,144,0,11,255,255,208,0,0,0,0,0,47,240,63,255,149,85,85,106,253,127,192,11,255,255,255,255,255,252,47,64,0,191,255,255,255,255,252,14,0,0,6,191,255,255,255,164,0,0,0,0,0,0,0,0,0, + // 0x8fde 连 + 222,143,36,37,77,38,1,251,0,64,0,0,10,64,0,0,0,2,224,0,0,15,240,0,0,0,11,248,0,0,15,240,0,0,0,3,253,0,0,47,208,0,0,0,0,255,66,255,255,255,255,255,240,0,127,194,255,255,255,255,255,240,0,31,226,255,255,255,255,255,240,0,15,224,0,254,0,0,0,0,0,3,64,2,252,0,0,0,0,0,0,0,3,252,11,240,0,0,0,0,0,7,244,11,240,0,0,0,0,0,15,240,11,240,0,0,0,0,0,47,192,11,240,0,0,63,255,192,191,255,255,255,255,192,63,255,192,127,255,255,255,255,192,63,255,192,63,255,255,255,255,192,21,111,192,37,85,91,245,85,64,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,195,255,255,255,255,255,248,0,47,195,255,255,255,255,255,248,0,47,195,255,255,255,255,255,248,0,47,193,85,85,91,245,85,80,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,191,208,0,0,11,240,0,0,3,255,248,0,0,11,240,0,0,15,255,255,64,0,11,240,0,0,63,244,255,249,64,0,0,21,170,191,192,47,255,255,255,255,255,253,127,64,3,255,255,255,255,255,252,46,0,0,47,255,255,255,255,252,8,0,0,0,21,85,85,85,0,0,0,0,0,0,0,0,0,0, + // 0x8ff7 迷 + 247,143,36,36,68,38,1,252,0,0,0,0,0,21,0,0,0,2,64,0,0,0,63,64,0,0,15,224,0,29,0,63,64,15,128,31,252,0,191,0,63,64,31,224,7,255,0,63,64,63,64,63,192,0,255,192,47,192,63,64,63,64,0,63,240,15,208,63,64,191,0,0,15,224,15,240,63,64,253,0,0,3,64,7,240,63,66,252,0,0,0,0,3,224,63,66,240,0,0,0,0,1,0,63,64,16,0,0,0,0,0,0,63,64,0,0,0,0,3,255,255,255,255,255,248,0,0,3,255,255,255,255,255,248,0,0,3,255,255,255,255,255,248,63,255,209,85,87,255,249,85,80,63,255,208,0,11,255,252,0,0,63,255,208,0,31,255,254,0,0,21,95,208,0,63,255,191,64,0,0,15,208,0,255,127,111,192,0,0,15,208,2,253,63,79,240,0,0,15,208,7,248,63,71,252,0,0,15,208,31,240,63,66,255,0,0,15,208,191,208,63,64,255,208,0,15,211,255,64,63,64,63,248,0,15,219,253,0,63,64,15,252,0,15,210,244,0,63,64,3,240,0,31,208,208,0,63,64,0,128,0,127,240,0,0,63,64,0,0,2,255,253,0,0,63,64,0,0,15,255,255,144,0,0,0,0,0,127,248,127,254,149,85,85,85,169,127,224,31,255,255,255,255,255,252,63,64,2,255,255,255,255,255,252,28,0,0,26,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0x9000 退 + 0,144,36,34,50,38,1,252,3,208,0,15,255,255,255,254,0,15,248,0,15,255,255,255,254,0,7,255,0,15,255,255,255,254,0,0,255,192,15,224,0,0,190,0,0,47,240,15,224,0,0,190,0,0,11,240,15,250,170,170,254,0,0,3,128,15,255,255,255,254,0,0,0,0,15,255,255,255,254,0,0,0,0,15,224,0,0,190,0,0,0,0,15,224,0,0,190,0,0,0,0,15,224,0,0,190,0,0,0,0,15,255,255,255,254,0,0,0,0,15,255,255,255,254,0,63,255,208,15,255,255,255,255,0,63,255,208,15,224,31,192,3,192,63,255,208,15,224,15,208,31,244,21,95,208,15,224,11,240,191,224,0,15,208,15,224,3,247,255,64,0,15,208,15,224,3,255,248,0,0,15,208,15,224,0,255,208,0,0,15,208,15,224,0,191,128,0,0,15,208,15,224,6,127,224,0,0,15,208,15,230,255,95,252,0,0,15,208,31,255,255,135,255,128,0,15,209,255,255,254,65,255,248,0,31,208,255,255,144,0,127,248,0,127,240,255,144,0,0,11,240,2,255,253,80,0,0,0,0,128,15,255,255,144,0,0,0,0,0,127,248,127,254,149,85,85,85,169,127,224,31,255,255,255,255,255,252,63,64,2,255,255,255,255,255,252,28,0,0,26,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0x9009 选 + 9,144,35,36,68,38,2,252,0,0,0,0,0,127,0,0,0,5,0,0,6,64,127,0,0,0,47,64,0,15,224,127,0,0,0,127,208,0,15,208,127,0,0,0,31,248,0,47,192,127,0,0,0,7,253,0,63,255,255,255,255,64,1,255,64,191,255,255,255,255,64,0,191,128,255,255,255,255,255,64,0,61,3,253,0,127,0,0,0,0,0,7,248,0,127,0,0,0,0,0,7,240,0,127,0,0,0,0,0,0,224,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,15,255,255,255,255,255,240,255,255,15,255,255,255,255,255,240,255,255,15,255,255,255,255,255,240,255,255,0,0,127,1,252,0,0,21,191,0,0,191,1,252,0,0,0,127,0,0,255,1,252,0,0,0,127,0,0,254,1,252,0,0,0,127,0,2,253,1,252,0,0,0,127,0,3,252,1,252,2,128,0,127,0,11,244,1,252,2,244,0,127,0,47,240,1,252,3,244,0,127,1,255,192,1,252,3,240,0,127,31,255,64,1,255,255,240,0,127,15,252,0,0,255,255,224,0,127,199,224,0,0,127,255,192,1,255,245,0,0,0,1,84,0,15,255,254,0,0,0,0,0,0,63,248,191,249,0,0,0,21,164,255,208,31,255,255,255,255,255,240,191,64,2,255,255,255,255,255,240,61,0,0,27,255,255,255,255,224,20,0,0,0,1,85,64,0,0, + // 0x901f 速 + 31,144,36,36,68,38,1,252,0,0,0,0,0,63,64,0,0,2,64,0,0,0,63,64,0,0,15,224,0,0,0,63,64,0,0,31,248,0,0,0,63,64,0,0,7,255,3,255,255,255,255,255,248,1,255,195,255,255,255,255,255,248,0,63,243,255,255,255,255,255,248,0,15,240,0,0,63,64,0,0,0,7,128,0,0,63,64,0,0,0,1,0,0,0,63,64,0,0,0,0,0,127,255,255,255,255,192,0,0,0,127,255,255,255,255,192,0,0,0,127,170,255,234,191,192,0,0,0,127,0,63,64,15,192,0,0,0,127,0,63,64,15,192,63,255,208,127,0,63,64,15,192,63,255,208,127,0,63,64,15,192,63,255,208,127,255,255,255,255,192,21,95,208,127,255,255,255,255,192,0,15,208,127,255,255,255,255,192,0,15,208,0,7,255,244,0,0,0,15,208,0,31,255,253,0,0,0,15,208,0,127,191,255,128,0,0,15,208,1,255,63,95,240,0,0,15,208,11,252,63,71,253,0,0,15,208,127,240,63,65,255,192,0,15,211,255,192,63,64,127,248,0,31,211,254,0,63,64,31,240,0,127,240,244,0,63,64,2,208,2,255,253,0,0,63,64,0,0,15,255,255,144,0,21,0,0,0,127,248,127,254,149,85,85,85,169,127,224,31,255,255,255,255,255,252,63,64,2,255,255,255,255,255,252,28,0,0,26,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0x90e8 部 + 232,144,36,36,68,38,1,252,0,0,42,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,5,85,85,64,0,0,63,0,0,47,255,255,244,31,255,255,255,254,47,255,255,253,31,255,255,255,254,47,255,255,252,31,255,255,255,254,47,192,3,248,0,4,0,5,0,47,192,11,240,0,252,0,15,208,47,192,15,224,0,253,0,15,192,47,192,31,208,0,190,0,31,192,47,192,47,192,0,127,0,63,64,47,192,63,64,0,63,0,63,0,47,192,127,0,0,63,64,126,0,47,192,254,0,0,37,0,25,0,47,193,252,0,127,255,255,255,255,47,194,252,0,127,255,255,255,255,47,194,253,0,127,255,255,255,255,47,192,191,0,0,0,0,0,0,47,192,47,192,0,0,0,0,0,47,192,15,224,0,0,0,0,0,47,192,7,240,3,255,255,255,240,47,192,3,244,3,255,255,255,240,47,192,2,248,3,255,255,255,240,47,192,2,252,3,244,0,7,240,47,192,2,252,3,244,0,7,240,47,192,2,252,3,244,0,7,240,47,192,3,252,3,244,0,7,240,47,193,111,248,3,244,0,7,240,47,195,255,240,3,244,0,7,240,47,195,255,224,3,244,0,7,240,47,194,254,64,3,255,255,255,240,47,192,0,0,3,255,255,255,240,47,192,0,0,3,255,255,255,240,47,192,0,0,3,244,0,7,240,47,192,0,0,3,244,0,3,240,31,192,0,0, + // 0x914d 配 + 77,145,35,34,50,38,2,252,255,255,255,255,199,255,255,255,192,255,255,255,255,199,255,255,255,192,255,255,255,255,199,255,255,255,192,0,47,31,0,1,85,85,95,192,0,47,31,0,0,0,0,15,192,0,47,31,0,0,0,0,15,192,0,47,31,0,0,0,0,15,192,63,255,255,255,64,0,0,15,192,63,255,255,255,64,0,0,15,192,63,255,255,255,64,0,0,15,192,62,14,44,47,64,0,0,15,192,62,14,44,47,64,0,0,15,192,62,14,44,47,67,255,255,255,192,62,14,44,47,67,255,255,255,192,62,14,44,47,67,255,255,255,192,62,29,44,47,67,249,85,95,192,62,60,45,47,67,244,0,15,192,62,60,31,255,67,244,0,15,192,63,244,15,255,67,244,0,0,0,62,160,0,47,67,244,0,0,0,62,0,0,47,67,244,0,0,0,62,0,0,47,67,244,0,0,0,63,170,170,191,67,244,0,0,0,63,255,255,255,67,244,0,0,0,63,255,255,255,67,244,0,2,208,62,0,0,47,67,244,0,2,248,62,0,0,47,67,244,0,2,248,62,0,0,47,67,244,0,3,244,63,255,255,255,67,244,0,3,244,63,255,255,255,67,248,0,11,240,63,255,255,255,67,255,255,255,240,62,0,0,47,66,255,255,255,208,62,0,0,47,64,191,255,255,128,41,0,0,0,0,1,85,80,0, + // 0x91ca 释 + 202,145,36,36,68,38,1,252,0,0,0,80,0,0,0,0,0,0,5,175,248,0,0,0,0,0,47,255,255,252,127,255,255,255,240,63,255,255,248,127,255,255,255,248,47,171,244,0,127,255,255,255,240,0,3,240,0,11,224,0,31,224,6,3,240,61,3,244,0,63,192,47,3,240,126,1,252,0,255,0,15,131,240,252,0,191,3,253,0,11,195,241,248,0,63,223,244,0,7,227,243,240,0,15,255,208,0,3,227,243,224,0,7,255,64,0,1,67,240,0,0,47,255,208,0,0,3,240,0,2,255,255,253,0,63,255,255,252,127,255,7,255,228,63,255,255,255,255,244,0,191,255,63,255,255,254,255,64,0,27,252,0,15,244,0,224,2,252,0,120,0,31,253,0,0,2,252,0,0,0,63,255,64,0,2,252,0,0,0,127,255,208,63,255,255,255,208,0,255,251,244,63,255,255,255,208,2,251,243,253,63,255,255,255,208,3,247,240,252,0,2,252,0,0,15,227,240,116,0,2,252,0,0,47,195,240,0,0,2,252,0,0,127,131,240,0,0,2,252,0,0,127,3,240,2,255,255,255,255,252,61,3,240,2,255,255,255,255,252,24,3,240,2,255,255,255,255,252,0,3,240,0,0,2,252,0,0,0,3,240,0,0,2,252,0,0,0,3,240,0,0,2,252,0,0,0,3,240,0,0,2,252,0,0,0,3,240,0,0,2,252,0,0,0,3,240,0,0,2,252,0,0, + // 0x91cd 重 + 205,145,34,35,59,38,2,253,0,0,0,0,0,0,22,128,0,0,0,0,5,106,255,255,192,0,2,255,255,255,255,255,255,240,0,1,255,255,255,255,255,233,64,0,1,255,170,151,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,254,85,87,253,85,91,240,0,0,254,0,3,248,0,7,240,0,0,254,0,3,248,0,11,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,254,0,3,248,0,7,240,0,0,254,0,3,248,0,7,240,0,0,255,85,87,253,85,91,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,3,255,255,255,255,255,255,253,0,3,255,255,255,255,255,255,254,0,3,255,255,255,255,255,255,254,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x91cf 量 + 207,145,34,34,50,38,2,253,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,0,0,0,0,31,192,0,0,63,0,0,0,0,31,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,0,0,0,0,31,192,0,0,63,0,0,0,0,31,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,170,170,170,170,170,170,170,170,160,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,253,0,3,248,0,7,240,0,0,253,0,3,248,0,7,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,253,0,3,248,0,7,240,0,0,253,0,3,248,0,7,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,3,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,252,0,1,85,85,87,253,85,85,84,0,0,0,0,3,248,0,0,0,0,170,170,170,171,254,170,170,170,160,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x9488 针 + 136,148,35,36,68,38,1,252,0,8,0,0,0,0,84,0,0,0,47,192,0,0,1,253,0,0,0,63,128,0,0,1,253,0,0,0,127,0,0,0,1,253,0,0,0,255,85,84,0,1,253,0,0,2,255,255,252,0,1,253,0,0,3,255,255,252,0,1,253,0,0,15,255,255,252,0,1,253,0,0,63,208,0,0,0,1,253,0,0,191,128,0,0,0,1,253,0,0,126,0,0,0,0,1,253,0,0,63,255,255,240,0,1,253,0,0,23,255,255,240,0,1,253,0,0,3,255,255,243,255,255,255,255,252,2,175,254,163,255,255,255,255,252,0,3,240,3,255,255,255,255,252,0,3,240,1,85,86,254,85,84,0,3,240,0,0,1,253,0,0,0,3,240,0,0,1,253,0,0,47,255,255,252,0,1,253,0,0,47,255,255,252,0,1,253,0,0,47,255,255,252,0,1,253,0,0,0,7,244,0,0,1,253,0,0,0,3,240,0,0,1,253,0,0,0,3,240,0,0,1,253,0,0,0,3,240,0,0,1,253,0,0,0,3,240,0,0,1,253,0,0,0,3,240,4,0,1,253,0,0,0,3,240,125,0,1,253,0,0,0,7,247,254,0,1,253,0,0,0,7,255,254,0,1,253,0,0,0,15,255,224,0,1,253,0,0,0,63,255,64,0,1,253,0,0,0,47,244,0,0,1,253,0,0,0,15,128,0,0,1,253,0,0,0,4,0,0,0,1,252,0,0, + // 0x94ae 钮 + 174,148,36,36,68,38,1,252,0,100,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,253,0,2,255,255,255,255,240,1,252,0,2,255,255,255,255,240,3,255,255,246,255,255,255,255,224,3,255,255,244,0,47,192,15,224,15,255,255,244,0,47,192,15,224,31,213,85,80,0,47,192,15,224,63,128,0,0,0,63,128,15,208,191,0,0,0,0,63,128,15,208,190,0,0,0,0,63,64,15,208,63,255,255,224,0,63,64,15,208,43,255,255,224,0,63,64,15,192,3,255,255,224,0,127,0,31,192,0,15,224,0,0,127,0,31,192,0,11,208,1,255,255,255,255,192,0,11,208,1,255,255,255,255,192,0,11,208,1,255,255,255,255,192,0,11,208,0,85,254,85,127,128,63,255,255,248,0,253,0,63,128,63,255,255,248,0,253,0,63,128,63,255,255,248,0,252,0,63,64,0,15,224,0,1,252,0,63,64,0,11,208,0,1,252,0,63,64,0,11,208,0,2,252,0,63,64,0,11,208,0,2,248,0,127,0,0,11,208,0,3,248,0,127,0,0,11,208,96,3,244,0,191,0,0,11,211,240,3,244,0,191,0,0,15,255,244,3,240,0,191,0,0,15,255,224,7,240,0,254,0,0,15,255,85,91,245,85,255,84,0,63,248,63,255,255,255,255,253,0,191,208,63,255,255,255,255,253,0,62,0,63,255,255,255,255,253,0,20,0,0,0,0,0,0,0, + // 0x9519 错 + 25,149,36,36,68,38,1,252,0,24,0,0,2,244,3,240,0,0,63,64,0,2,244,3,244,0,0,127,0,0,2,244,3,244,0,0,191,0,0,2,244,3,244,0,1,254,85,80,2,244,3,244,0,3,255,255,244,255,255,255,255,244,11,255,255,244,255,255,255,255,244,31,255,255,244,255,255,255,255,244,63,192,0,0,2,248,3,244,0,127,64,0,0,2,244,3,244,0,62,0,0,0,2,244,3,244,0,27,255,255,240,2,244,3,244,0,3,255,255,240,3,248,3,244,0,3,255,255,243,255,255,255,255,253,0,11,224,3,255,255,255,255,253,0,11,224,3,255,255,255,255,253,0,11,224,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,47,255,255,248,63,255,255,255,192,47,255,255,248,63,255,255,255,192,47,255,255,248,63,255,255,255,192,0,11,224,0,63,64,0,31,192,0,11,224,0,63,64,0,31,192,0,11,224,0,63,64,0,31,192,0,11,224,0,63,255,255,255,192,0,11,224,0,63,255,255,255,192,0,11,224,16,63,255,255,255,192,0,11,225,240,63,64,0,31,192,0,11,255,240,63,64,0,31,192,0,15,255,240,63,64,0,31,192,0,31,255,128,63,255,255,255,192,0,63,248,0,63,255,255,255,192,0,63,208,0,63,255,255,255,192,0,30,0,0,63,64,0,31,192,0,0,0,0,42,0,0,5,64, + // 0x955c 镜 + 92,149,36,37,77,38,1,251,0,41,0,0,0,1,176,0,0,0,63,128,0,0,3,244,0,0,0,127,0,0,0,2,252,0,0,0,254,0,0,255,255,255,255,240,1,255,255,224,255,255,255,255,240,3,255,255,224,255,255,255,255,240,11,255,255,224,2,240,0,168,0,31,224,0,0,3,244,0,253,0,127,192,0,0,2,248,1,252,0,127,64,0,0,1,248,3,244,0,62,0,0,3,255,255,255,255,252,31,255,255,195,255,255,255,255,252,3,255,255,195,255,255,255,255,252,3,255,255,192,0,0,0,0,0,0,15,224,0,21,85,85,85,64,0,15,208,0,127,255,255,255,224,0,15,208,0,127,255,255,255,224,0,15,208,0,126,0,0,11,224,0,15,208,0,126,0,0,11,224,47,255,255,240,127,255,255,255,224,47,255,255,240,127,255,255,255,224,47,255,255,240,126,0,0,15,224,0,15,224,0,126,0,0,11,224,0,15,208,0,126,85,85,95,224,0,15,208,0,127,255,255,255,224,0,15,208,0,127,255,255,255,224,0,15,208,0,0,252,15,208,0,0,15,208,176,1,252,15,208,0,0,15,215,240,2,252,15,208,0,0,15,255,244,3,248,15,208,16,0,31,255,208,11,244,15,208,61,0,63,254,0,31,240,15,208,62,0,255,244,1,255,192,15,208,125,0,127,128,47,255,0,15,255,252,0,45,0,47,248,0,7,255,252,0,0,0,15,128,0,1,170,144,0,0,0,0,0,0,0,0,0, + // 0x957f 长 + 127,149,35,36,68,38,2,252,0,2,168,0,0,0,0,0,0,0,3,252,0,0,0,15,64,0,0,3,252,0,0,0,63,240,0,0,3,252,0,0,0,255,208,0,0,3,252,0,0,3,255,64,0,0,3,252,0,0,31,253,0,0,0,3,252,0,0,191,244,0,0,0,3,252,0,11,255,192,0,0,0,3,252,0,127,254,0,0,0,0,3,252,7,255,244,0,0,0,0,3,252,47,255,128,0,0,0,0,3,252,11,252,0,0,0,0,0,3,252,2,208,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,87,253,85,255,149,85,85,80,0,3,252,0,127,64,0,0,0,0,3,252,0,63,192,0,0,0,0,3,252,0,31,224,0,0,0,0,3,252,0,15,240,0,0,0,0,3,252,0,7,252,0,0,0,0,3,252,0,3,255,0,0,0,0,3,252,0,0,255,128,0,0,0,3,252,0,0,127,224,0,0,0,3,252,0,0,31,252,0,0,0,3,252,0,25,11,255,128,0,0,3,252,27,253,2,255,244,0,0,3,255,255,254,0,191,255,128,0,7,255,255,254,0,31,255,244,0,31,255,255,144,0,2,255,224,0,15,255,144,0,0,0,47,192,0,11,228,0,0,0,0,1,64,0,1,0,0,0,0,0,0,0, + // 0x95ed 闭 + 237,149,32,37,40,38,3,251,1,0,0,0,0,0,0,0,31,128,0,0,0,0,0,0,63,224,11,255,255,255,255,255,15,248,11,255,255,255,255,255,3,253,11,255,255,255,255,255,0,255,1,85,85,85,85,191,0,126,0,0,0,0,0,191,0,32,0,0,10,144,0,191,0,0,0,0,15,224,0,191,254,0,0,0,15,224,0,191,254,0,0,0,15,224,0,191,254,0,0,0,15,224,0,191,254,1,85,85,95,245,80,191,254,11,255,255,255,255,248,191,254,11,255,255,255,255,248,191,254,11,255,255,255,255,248,191,254,0,0,1,255,224,0,191,254,0,0,3,255,224,0,191,254,0,0,15,255,224,0,191,254,0,0,47,239,224,0,191,254,0,0,191,207,224,0,191,254,0,2,255,15,224,0,191,254,0,15,252,15,224,0,191,254,0,63,244,15,224,0,191,254,1,255,208,15,224,0,191,254,15,255,0,15,224,0,191,254,63,252,0,15,224,0,191,254,31,208,0,15,224,0,191,254,11,0,0,15,224,0,191,254,0,0,127,255,224,0,191,254,0,0,63,255,192,0,191,254,0,0,47,255,64,0,191,254,0,0,5,64,0,0,255,254,0,0,0,0,0,255,254,254,0,0,0,0,0,191,253,254,0,0,0,0,0,127,228,0,0,0,0,0,0,0,0, + // 0x95f2 闲 + 242,149,32,36,32,38,3,252,1,0,0,0,0,0,0,0,11,192,1,85,85,85,85,84,31,240,7,255,255,255,255,255,7,252,7,255,255,255,255,255,2,254,7,255,255,255,255,255,0,191,64,0,0,0,0,191,0,63,192,0,0,0,0,191,0,31,224,0,0,0,0,191,0,11,64,0,0,0,0,191,253,0,0,11,224,0,0,191,253,0,0,11,224,0,0,191,253,0,0,11,224,0,0,191,253,0,0,11,224,0,0,191,253,0,0,11,224,0,0,191,253,15,255,255,255,255,244,191,253,15,255,255,255,255,244,191,253,15,255,255,255,255,244,191,253,0,0,63,252,0,0,191,253,0,0,255,255,0,0,191,253,0,1,255,255,192,0,191,253,0,3,255,239,240,0,191,253,0,15,235,231,252,0,191,253,0,63,203,225,255,0,191,253,0,255,11,224,127,128,191,253,3,253,11,224,47,208,191,253,31,248,11,224,15,240,191,253,47,224,11,224,3,208,191,253,11,128,11,224,1,0,191,253,1,0,11,224,0,0,191,253,0,0,11,224,0,0,191,253,0,0,11,224,0,0,191,253,0,0,11,224,0,0,191,253,0,0,5,64,15,255,254,253,0,0,0,0,11,255,253,253,0,0,0,0,7,255,244,253,0,0,0,0,1,85,0, + // 0x95f4 间 + 244,149,32,37,40,38,3,251,1,0,0,0,0,0,0,0,31,128,0,0,0,0,0,0,63,224,15,255,255,255,255,255,15,248,15,255,255,255,255,255,3,253,15,255,255,255,255,255,1,255,1,85,85,85,85,255,0,189,0,0,0,0,0,255,0,32,0,0,0,0,0,255,0,0,0,0,0,0,0,255,191,0,0,0,0,0,0,255,191,0,0,0,0,0,0,255,191,0,127,255,255,253,0,255,191,0,127,255,255,253,0,255,191,0,127,255,255,253,0,255,191,0,127,0,0,253,0,255,191,0,127,0,0,253,0,255,191,0,127,0,0,253,0,255,191,0,127,0,0,253,0,255,191,0,127,0,0,253,0,255,191,0,127,255,255,253,0,255,191,0,127,255,255,253,0,255,191,0,127,255,255,253,0,255,191,0,127,0,0,253,0,255,191,0,127,0,0,253,0,255,191,0,127,0,0,253,0,255,191,0,127,0,0,253,0,255,191,0,127,255,255,253,0,255,191,0,127,255,255,253,0,255,191,0,127,255,255,253,0,255,191,0,0,0,0,0,0,255,191,0,0,0,0,0,0,255,191,0,0,0,0,0,0,255,191,0,0,0,0,0,0,255,191,0,0,0,0,0,127,254,191,0,0,0,0,0,63,253,191,0,0,0,0,0,63,228,0,0,0,0,0,0,0,0, + // 0x9608 阈 + 8,150,32,37,40,38,3,251,0,128,0,0,0,0,0,0,7,224,0,0,0,0,0,0,15,248,7,255,255,255,255,254,3,253,7,255,255,255,255,254,0,255,7,255,255,255,255,254,0,127,192,0,0,0,0,254,0,47,224,0,125,0,0,254,0,15,192,0,125,125,0,254,191,2,0,0,125,63,64,254,191,0,0,0,125,15,192,254,191,0,0,0,125,2,0,254,191,31,255,255,255,255,244,254,191,31,255,255,255,255,244,254,191,15,255,255,255,255,244,254,191,0,0,0,62,0,0,254,191,0,0,0,63,2,64,254,191,7,255,252,63,11,208,254,191,7,255,252,63,15,192,254,191,7,192,60,47,15,128,254,191,7,192,60,47,95,64,254,191,7,192,60,31,127,0,254,191,7,192,60,15,190,0,254,191,7,255,252,15,252,0,254,191,7,255,252,15,252,0,254,191,0,0,0,11,244,16,254,191,0,0,1,7,240,56,254,191,0,26,255,15,240,60,254,191,47,255,255,63,244,124,254,191,47,255,249,191,253,248,254,191,31,148,2,252,191,244,254,191,0,0,15,240,63,240,254,191,0,0,11,192,11,192,254,191,0,0,1,0,0,0,254,191,0,0,0,0,11,255,253,191,0,0,0,0,3,255,252,191,0,0,0,0,3,255,208,0,0,0,0,0,0,0,0, + // 0x964d 降 + 77,150,34,36,68,38,3,252,0,0,0,0,3,160,0,0,0,0,0,0,0,11,240,0,0,0,255,255,244,0,31,208,0,0,0,255,255,252,0,63,255,255,224,0,255,255,252,0,255,255,255,248,0,252,3,244,2,255,255,255,240,0,252,3,240,11,252,0,15,224,0,252,7,240,47,255,0,47,192,0,252,11,224,255,255,128,127,128,0,252,15,195,254,31,209,255,0,0,252,31,192,248,11,251,252,0,0,252,47,64,16,3,255,240,0,0,252,63,0,0,0,255,224,0,0,252,63,0,0,7,255,248,0,0,252,63,64,0,127,255,255,144,0,252,31,192,11,255,225,255,254,64,252,11,225,255,255,0,47,255,208,252,3,241,255,244,7,242,255,128,252,3,244,254,64,7,240,11,0,252,2,248,80,0,7,240,0,0,252,1,252,63,255,255,255,255,0,252,1,252,63,255,255,255,255,0,252,1,252,63,255,255,255,255,0,252,3,248,2,244,7,240,0,0,252,255,244,2,244,7,240,0,0,252,191,240,2,244,7,240,0,0,252,127,128,2,244,7,240,0,0,252,0,3,255,255,255,255,255,192,252,0,3,255,255,255,255,255,192,252,0,3,255,255,255,255,255,192,252,0,0,0,0,7,240,0,0,252,0,0,0,0,7,240,0,0,252,0,0,0,0,7,240,0,0,252,0,0,0,0,7,240,0,0,252,0,0,0,0,7,240,0,0,252,0,0,0,0,7,240,0,0, + // 0x9650 限 + 80,150,34,34,50,38,3,252,255,255,253,15,255,255,255,252,0,255,255,255,15,255,255,255,252,0,255,255,254,15,255,255,255,252,0,253,0,253,15,192,0,1,252,0,253,1,252,15,192,0,1,252,0,253,2,248,15,192,0,1,252,0,253,3,244,15,192,0,1,252,0,253,7,240,15,255,255,255,252,0,253,11,224,15,255,255,255,252,0,253,15,192,15,255,255,255,252,0,253,31,128,15,192,0,1,252,0,253,47,64,15,192,0,1,252,0,253,31,192,15,192,0,1,252,0,253,7,240,15,192,0,1,252,0,253,3,244,15,255,255,255,252,0,253,1,252,15,255,255,255,252,0,253,0,253,15,255,255,255,252,0,253,0,190,15,192,63,0,0,0,253,0,190,15,192,63,64,44,0,253,0,190,15,192,47,128,191,64,253,0,190,15,192,31,194,255,0,253,1,254,15,192,15,219,248,0,253,127,253,15,192,11,255,224,0,253,63,252,15,192,3,255,64,0,253,63,224,15,192,2,253,0,0,253,0,0,15,192,0,254,0,0,253,0,0,15,192,0,255,128,0,253,0,0,15,192,106,63,208,0,253,0,0,15,255,255,31,244,0,253,0,6,255,255,255,11,254,0,253,0,15,255,255,249,3,255,208,253,0,11,255,249,0,0,255,192,253,0,7,228,0,0,0,47,0,253,0,0,0,0,0,0,1,0, + // 0x9664 除 + 100,150,34,36,68,38,3,252,0,0,0,0,1,252,0,0,0,0,0,0,0,3,255,0,0,0,255,255,244,0,11,255,128,0,0,255,255,252,0,31,255,224,0,0,255,255,252,0,63,203,244,0,0,252,3,244,0,255,3,253,0,0,252,3,240,3,253,0,255,128,0,252,7,240,15,244,0,63,224,0,252,11,208,127,208,0,15,252,0,252,15,194,255,64,0,3,255,128,252,31,143,253,0,0,0,191,224,252,47,79,251,255,255,255,239,192,252,63,3,139,255,255,255,199,64,252,63,0,11,255,255,255,192,0,252,47,128,0,0,253,0,0,0,252,15,192,0,0,253,0,0,0,252,11,224,0,0,253,0,0,0,252,3,240,0,0,253,0,0,0,252,3,244,0,0,253,0,0,0,252,2,248,255,255,255,255,255,0,252,1,252,255,255,255,255,255,0,252,1,252,255,255,255,255,255,0,252,1,252,0,0,253,0,0,0,252,3,248,0,0,253,0,0,0,252,255,244,31,128,253,11,192,0,252,191,240,47,128,253,15,208,0,252,127,128,63,64,253,11,240,0,252,0,0,191,0,253,3,252,0,252,0,1,253,0,253,1,253,0,252,0,3,252,0,253,0,191,0,252,0,15,240,0,253,0,63,64,252,0,47,224,0,253,0,47,192,252,0,11,128,85,253,0,15,64,252,0,2,0,255,252,0,4,0,252,0,0,0,191,252,0,0,0,252,0,0,0,63,160,0,0,0, + // 0x9669 险 + 105,150,34,36,68,38,3,252,0,0,0,0,0,120,0,0,0,0,0,0,0,0,254,0,0,0,255,255,244,0,2,254,0,0,0,255,255,252,0,3,255,64,0,0,255,255,252,0,15,255,192,0,0,253,3,244,0,47,223,240,0,0,253,3,240,0,191,135,252,0,0,253,7,240,1,255,1,255,0,0,253,11,208,7,252,0,127,208,0,253,15,192,31,240,0,31,248,0,253,31,128,191,208,0,7,255,0,253,47,67,255,64,0,1,255,224,253,63,15,255,255,255,255,127,224,253,63,11,247,255,255,255,15,192,253,47,195,195,255,255,255,2,128,253,15,209,0,0,0,0,0,0,253,7,240,0,0,0,0,0,0,253,3,244,0,0,0,0,0,0,253,2,248,1,0,252,0,126,0,253,1,248,63,0,188,0,190,0,253,1,252,47,0,189,0,253,0,253,1,252,31,128,126,1,252,0,253,1,252,15,192,63,2,244,0,253,3,248,15,192,63,3,240,0,253,255,244,11,208,63,7,224,0,253,127,240,7,224,47,15,192,0,253,127,128,3,240,47,95,192,0,253,0,0,3,240,0,47,64,0,253,0,0,1,0,0,63,0,0,253,0,0,0,0,0,189,0,0,253,0,0,0,0,0,252,0,0,253,0,3,255,255,255,255,255,192,253,0,3,255,255,255,255,255,192,253,0,3,255,255,255,255,255,192,253,0,0,0,0,0,0,0,0,188,0,0,0,0,0,0,0,0, + // 0x96f6 零 + 246,150,35,35,59,38,2,252,2,170,170,170,170,170,170,164,0,3,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,252,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,85,85,87,249,85,85,95,192,63,0,0,3,248,0,0,15,192,63,26,170,147,248,170,170,79,192,63,31,255,227,248,255,255,79,192,63,0,0,3,248,0,0,15,192,0,0,0,3,248,0,0,0,0,0,63,255,225,80,255,255,208,0,0,63,255,231,252,255,255,208,0,0,0,0,47,255,64,0,0,0,0,0,1,255,255,224,0,0,0,0,0,11,254,15,254,0,0,0,0,0,191,244,1,255,224,0,0,0,27,255,128,0,47,255,64,0,2,255,255,255,255,255,255,249,0,191,255,159,255,255,255,111,255,244,255,248,5,85,85,85,2,255,240,190,64,0,0,0,0,0,11,208,16,85,85,85,85,85,85,64,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,0,0,127,0,0,47,192,0,0,0,0,127,0,0,47,192,0,0,0,0,127,0,0,47,192,0,0,0,0,127,0,42,191,192,0,0,0,0,127,0,47,255,128,0,0,0,0,127,0,15,249,0,0,0,0,0,127,0,0,0,0,0,0,0,0,63,0,0,0,0,0, + // 0x9700 需 + 0,151,34,35,59,38,2,252,2,255,255,255,255,255,255,248,0,3,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,252,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,21,85,85,87,253,85,85,85,64,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,0,0,3,248,0,0,15,192,63,0,0,3,248,0,0,15,192,63,31,255,227,248,191,255,79,192,63,31,255,227,248,191,255,79,192,63,0,0,3,248,0,0,15,192,0,0,0,3,248,0,0,0,0,0,63,255,227,248,191,255,192,0,0,63,255,227,248,191,255,192,0,0,0,0,3,248,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,255,255,224,127,255,255,255,255,255,255,255,224,127,255,255,255,255,255,255,255,208,0,0,0,7,240,0,0,0,0,0,0,0,11,240,0,0,0,0,2,255,255,255,255,255,255,253,0,2,255,255,255,255,255,255,253,0,2,255,255,255,255,255,255,253,0,2,248,1,248,0,252,0,253,0,2,248,1,248,0,252,0,253,0,2,248,1,248,0,252,0,253,0,2,248,1,248,0,252,0,253,0,2,248,1,248,0,252,0,253,0,2,248,1,248,0,252,0,253,0,2,248,1,248,0,252,63,253,0,2,248,1,248,0,252,63,252,0,2,248,1,164,0,168,31,224,0, + // 0x9752 青 + 82,151,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,2,170,170,171,254,170,170,169,0,7,255,255,255,255,255,255,254,0,7,255,255,255,255,255,255,254,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,170,170,171,254,170,170,160,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,106,170,170,171,254,170,170,170,144,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,170,170,170,170,170,128,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,192,0,0,0,63,192,0,0,47,192,0,0,0,63,192,0,0,47,213,85,85,85,127,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,192,0,0,0,63,192,0,0,47,192,0,0,0,63,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,213,85,85,85,127,192,0,0,47,192,0,0,0,63,192,0,0,47,192,0,0,0,63,192,0,0,47,192,0,0,0,63,192,0,0,47,192,0,1,255,255,128,0,0,47,192,0,0,255,255,0,0,0,31,192,0,0,191,164,0,0, + // 0x975e 非 + 94,151,36,37,77,38,1,251,0,0,1,168,0,106,0,0,0,0,0,1,252,0,127,0,0,0,0,0,1,252,0,127,0,0,0,0,0,1,252,0,127,0,0,0,0,0,1,252,0,127,0,0,0,5,85,86,252,0,127,85,85,80,15,255,255,252,0,127,255,255,248,15,255,255,252,0,127,255,255,248,15,255,255,252,0,127,255,255,248,0,0,1,252,0,127,0,0,0,0,0,1,252,0,127,0,0,0,0,0,1,252,0,127,0,0,0,0,0,1,252,0,127,0,0,0,0,0,1,252,0,127,0,0,0,1,85,86,252,0,127,85,85,64,11,255,255,252,0,127,255,255,240,11,255,255,252,0,127,255,255,240,11,255,255,252,0,127,255,255,240,0,0,2,252,0,127,0,0,0,0,0,2,252,0,127,0,0,0,0,0,2,252,0,127,0,0,0,0,0,2,252,0,127,0,0,0,0,0,3,255,240,127,0,0,0,0,90,255,255,240,127,85,85,84,127,255,255,255,240,127,255,255,253,127,255,255,249,0,127,255,255,253,63,254,175,224,0,127,255,255,253,41,0,63,192,0,127,0,0,0,0,0,191,128,0,127,0,0,0,0,1,255,0,0,127,0,0,0,0,7,253,0,0,127,0,0,0,0,47,248,0,0,127,0,0,0,0,255,224,0,0,127,0,0,0,11,255,128,0,0,127,0,0,0,7,253,0,0,0,127,0,0,0,1,224,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9760 靠 + 96,151,35,37,77,38,2,251,0,5,64,2,244,0,0,0,0,0,15,208,3,248,0,0,0,0,0,47,213,87,249,85,85,80,0,0,127,255,255,255,255,255,248,0,0,255,255,255,255,255,255,248,0,3,252,0,3,248,0,0,0,0,3,244,0,3,248,0,0,0,0,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,42,170,170,171,254,170,170,170,128,0,0,0,1,84,0,0,0,0,0,191,255,255,255,255,255,244,0,0,191,255,255,255,255,255,244,0,0,191,85,85,85,85,91,244,0,0,191,0,0,0,0,7,244,0,0,191,0,0,0,0,7,244,0,0,191,255,255,255,255,255,244,0,0,191,255,255,255,255,255,244,0,0,0,7,244,2,253,0,0,0,0,0,3,240,1,252,0,0,0,63,255,255,240,1,255,255,255,192,63,255,255,240,1,255,255,255,192,21,85,87,240,1,253,0,0,0,0,0,3,240,1,252,0,0,0,31,255,255,240,1,255,255,255,64,31,255,255,240,1,255,255,255,64,0,0,7,240,1,253,0,0,0,0,0,7,240,1,252,0,0,0,170,191,255,240,1,253,85,85,80,255,255,255,224,1,255,255,255,244,250,165,127,192,1,255,255,255,244,0,0,255,128,1,252,0,0,0,0,31,254,0,1,252,0,0,0,3,255,244,0,1,252,0,0,0,2,255,128,0,1,252,0,0,0,0,244,0,0,1,168,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9762 面 + 98,151,34,34,50,38,2,252,21,85,85,85,85,85,85,85,80,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,0,0,0,11,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,31,208,0,0,0,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,208,15,208,0,254,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,255,255,253,0,191,0,15,208,15,255,255,253,0,191,0,15,208,15,255,255,253,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,255,255,253,0,191,0,15,208,15,255,255,253,0,191,0,15,208,15,255,255,253,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,192,0,189,0,191,0,15,229,95,213,85,254,85,191,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,208,0,0,0,0,0,191,0,15,208,0,0,0,0,0,191,0, + // 0x9875 页 + 117,152,34,35,59,38,2,251,63,255,255,255,255,255,255,255,208,63,255,255,255,255,255,255,255,208,63,255,255,255,255,255,255,255,208,21,85,85,95,249,85,85,85,64,0,0,0,15,240,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,47,192,0,0,0,0,0,21,85,127,213,85,85,80,0,0,191,255,255,255,255,255,240,0,0,191,255,255,255,255,255,240,0,0,191,255,255,255,255,255,240,0,0,191,0,0,0,0,11,240,0,0,191,0,0,0,0,11,240,0,0,191,0,2,252,0,11,240,0,0,191,0,2,252,0,11,240,0,0,191,0,2,252,0,11,240,0,0,191,0,2,252,0,11,240,0,0,191,0,2,252,0,11,240,0,0,191,0,2,252,0,11,240,0,0,191,0,2,252,0,11,240,0,0,191,0,3,252,0,11,240,0,0,191,0,3,252,0,11,240,0,0,191,0,3,248,0,11,240,0,0,191,0,7,244,0,11,240,0,0,191,0,15,240,144,11,240,0,0,106,0,63,225,253,6,160,0,0,0,0,255,195,255,208,0,0,0,0,11,255,0,191,253,0,0,0,0,191,252,0,11,255,208,0,0,31,255,224,0,0,255,252,0,27,255,255,64,0,0,31,255,128,191,255,228,0,0,0,1,255,208,63,253,0,0,0,0,0,47,128,14,64,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0, + // 0x9879 项 + 121,152,36,34,50,38,1,252,0,0,0,31,255,255,255,255,253,0,0,0,31,255,255,255,255,253,21,85,85,95,255,255,255,255,253,63,255,255,192,0,31,224,0,0,63,255,255,192,0,47,192,0,0,63,255,255,192,0,63,192,0,0,0,47,192,0,0,127,64,0,0,0,47,192,3,255,255,255,255,192,0,47,192,3,255,255,255,255,192,0,47,192,3,255,255,255,255,192,0,47,192,3,240,0,0,47,192,0,47,192,3,240,0,0,47,192,0,47,192,3,240,15,224,47,192,0,47,192,3,240,15,224,47,192,0,47,192,3,240,15,224,47,192,0,47,192,3,240,15,224,47,192,0,47,192,3,240,15,224,47,192,0,47,192,3,240,15,224,47,192,0,47,192,3,240,15,224,47,192,0,47,192,3,240,15,224,47,192,0,47,219,211,240,15,224,47,192,0,47,255,211,240,15,224,47,192,6,255,255,211,240,15,208,47,192,191,255,249,3,240,31,208,47,192,191,255,64,3,240,63,192,26,128,127,208,0,0,0,127,129,0,0,56,0,0,0,1,255,15,192,0,0,0,0,0,7,253,47,248,0,0,0,0,0,47,244,11,255,0,0,0,0,2,255,224,1,255,208,0,0,0,111,255,64,0,47,248,0,0,2,255,248,0,0,7,253,0,0,0,255,128,0,0,1,244,0,0,0,36,0,0,0,0,16, + // 0x9884 预 + 132,152,36,35,59,38,1,251,47,255,255,252,127,255,255,255,253,47,255,255,253,127,255,255,255,253,47,255,255,252,127,255,255,255,253,0,0,11,240,0,0,255,0,0,0,0,31,208,0,0,253,0,0,1,128,127,128,0,1,252,0,0,3,245,254,0,15,255,255,255,240,7,255,248,0,15,255,255,255,240,0,255,240,0,15,255,255,255,240,0,47,248,0,15,192,0,11,240,0,11,255,0,15,192,0,11,240,0,2,255,128,15,192,0,11,240,0,0,191,64,15,192,189,11,240,191,255,255,255,143,192,253,11,240,191,255,255,255,143,192,253,11,240,191,255,255,255,15,192,253,11,240,0,11,240,63,15,192,253,11,240,0,11,240,126,15,192,253,11,240,0,11,240,188,15,192,253,11,240,0,11,240,252,15,192,253,11,240,0,11,241,248,15,192,253,11,240,0,11,241,176,15,192,252,11,240,0,11,240,0,15,192,252,11,240,0,11,240,0,15,193,252,11,240,0,11,240,0,15,195,252,11,240,0,11,240,0,0,7,244,0,0,0,11,240,0,0,15,240,224,0,0,11,240,0,0,63,211,248,0,0,11,240,0,0,255,131,255,0,0,11,240,0,7,255,0,191,192,5,95,240,0,127,248,0,47,244,15,255,224,3,255,208,0,11,252,11,255,208,1,254,0,0,1,248,7,254,0,0,160,0,0,0,160,0,0,0,0,0,0,0,0,0, + // 0x9891 频 + 145,152,36,37,77,38,1,251,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,7,255,255,255,252,0,0,63,0,7,255,255,255,252,3,240,63,0,7,255,255,255,252,3,240,63,255,192,0,47,128,0,3,240,63,255,192,0,63,64,0,3,240,63,255,192,0,63,0,0,3,240,63,0,0,0,190,0,0,3,240,63,0,1,170,255,170,160,3,240,63,0,2,255,255,255,240,3,240,63,0,2,255,255,255,240,127,255,255,255,242,244,0,3,240,127,255,255,255,242,244,5,3,240,127,255,255,255,242,244,47,3,240,0,0,253,0,2,244,47,3,240,0,0,253,0,2,244,47,3,240,1,144,253,0,2,244,63,3,240,2,244,253,7,226,244,63,3,240,3,240,253,11,226,244,63,3,240,7,240,253,15,210,244,63,3,240,15,208,253,31,194,244,63,3,240,31,192,253,47,130,244,63,3,240,63,128,253,127,66,244,63,3,240,127,0,253,255,2,244,62,3,240,29,0,254,253,2,244,126,3,240,0,0,175,252,2,244,189,3,240,0,0,15,240,0,80,252,0,0,0,0,63,208,0,2,254,224,0,0,0,255,128,0,3,251,252,0,0,7,254,0,0,15,241,255,0,0,127,248,0,0,127,192,127,208,7,255,208,0,7,255,64,15,244,63,254,0,0,191,253,0,3,253,31,244,0,0,63,224,0,0,252,14,0,0,0,45,0,0,0,32,0,0,0,0,0,0,0,0,0, + // 0x989d 额 + 157,152,36,37,77,38,1,251,0,0,96,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,1,252,0,7,255,255,255,252,0,0,254,0,7,255,255,255,252,63,255,255,255,247,255,255,255,252,63,255,255,255,240,0,63,0,0,63,255,255,255,240,0,127,0,0,63,64,0,7,240,0,190,0,0,63,75,224,7,240,0,252,0,0,63,79,208,7,242,255,255,255,224,0,63,234,169,3,255,255,255,240,0,191,255,255,131,255,255,255,240,2,255,255,255,67,240,0,3,240,11,248,0,255,3,240,0,3,240,47,224,3,252,3,240,63,3,240,127,143,75,248,3,240,63,3,240,30,63,255,224,3,240,63,3,240,4,47,255,192,3,240,63,3,240,0,7,255,224,3,240,63,3,240,0,47,255,253,3,240,63,3,240,6,255,235,255,195,240,63,3,240,63,255,64,191,243,240,126,3,240,63,248,0,31,211,240,126,3,240,47,192,0,2,67,240,190,3,240,25,255,255,255,3,240,189,3,240,0,255,255,255,3,240,252,3,240,0,255,255,255,3,240,252,3,240,0,252,0,127,2,161,248,2,144,0,252,0,127,0,3,244,160,0,0,252,0,127,0,11,242,252,0,0,252,0,127,0,31,210,255,64,0,252,0,127,0,127,192,127,208,0,255,255,255,2,255,0,31,248,0,255,255,255,47,252,0,3,254,0,255,255,255,127,224,0,0,253,0,248,0,127,46,64,0,0,56,0,0,0,0,0,0,0,0,0, + // 0x98ce 风 + 206,152,36,36,68,38,1,251,0,21,85,85,85,85,85,84,0,0,63,255,255,255,255,255,248,0,0,63,255,255,255,255,255,248,0,0,63,255,255,255,255,255,248,0,0,63,128,0,0,0,3,248,0,0,63,128,0,0,0,3,248,0,0,63,128,0,0,0,3,248,0,0,63,128,0,0,47,67,248,0,0,63,129,128,0,63,67,248,0,0,63,143,240,0,127,3,248,0,0,63,139,248,0,190,3,248,0,0,63,131,253,0,253,3,248,0,0,63,128,255,2,252,3,248,0,0,63,128,127,195,248,3,248,0,0,63,128,47,231,240,2,248,0,0,63,128,15,255,224,2,248,0,0,63,64,3,255,192,2,248,0,0,63,64,1,255,192,2,248,0,0,127,64,0,255,128,2,248,0,0,127,0,1,255,208,2,248,0,0,191,0,3,255,240,2,252,0,0,191,0,11,255,248,2,252,0,0,255,0,31,243,253,1,252,0,0,254,0,63,193,255,1,252,0,0,254,0,255,64,255,129,252,0,1,253,3,255,0,63,192,252,0,2,252,15,252,0,47,240,252,24,3,252,127,240,0,15,244,253,30,7,248,127,208,0,7,240,253,47,11,240,31,64,0,3,64,190,46,15,240,4,0,0,0,0,127,62,47,208,0,0,0,0,0,63,253,127,192,0,0,0,0,0,47,252,47,64,0,0,0,0,0,15,248,7,0,0,0,0,0,0,1,160,0,0,0,0,0,0,0,0,0, + // 0x9971 饱 + 113,153,36,36,68,38,1,252,0,100,0,0,2,0,0,0,0,0,190,0,0,7,240,0,0,0,0,253,0,0,11,224,0,0,0,0,253,0,0,15,208,0,0,0,0,252,0,0,47,192,0,0,0,1,252,0,0,63,255,255,255,208,2,255,255,224,127,255,255,255,208,3,255,255,240,255,255,255,255,208,3,255,255,226,252,0,0,15,208,11,240,15,215,244,0,0,15,208,15,208,15,207,240,0,0,15,208,31,192,47,255,255,255,252,15,208,63,128,63,127,255,255,252,15,208,127,69,127,30,255,255,252,15,208,191,47,128,8,253,0,252,15,208,61,47,128,0,253,0,252,15,208,8,47,128,0,253,0,252,15,208,0,47,128,0,253,0,252,15,208,0,47,128,0,253,0,252,15,208,0,47,128,0,253,0,252,15,192,0,47,128,0,255,255,252,15,192,0,47,128,0,255,255,252,31,192,0,47,128,0,255,255,252,47,192,0,47,128,0,253,0,63,255,192,0,47,128,0,253,0,47,255,64,0,47,128,64,253,0,31,253,0,0,47,131,192,253,0,0,0,0,0,47,159,192,253,0,0,0,64,0,47,255,208,253,0,0,0,184,0,47,255,64,253,0,0,0,253,0,63,253,0,253,0,0,0,252,0,63,240,0,255,0,0,2,252,0,191,192,0,191,255,255,255,248,0,254,0,0,63,255,255,255,240,0,56,0,0,11,255,255,255,128,0,16,0,0,0,0,0,0,0, + // 0x9a6c 马 + 108,154,33,35,59,38,2,251,1,85,85,85,85,85,101,0,0,3,255,255,255,255,255,255,0,0,3,255,255,255,255,255,255,0,0,3,255,255,255,255,255,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,253,0,0,0,6,80,0,0,0,253,0,0,0,11,240,0,0,0,253,0,0,0,11,240,0,0,1,252,0,0,0,15,224,0,0,1,252,0,0,0,15,224,0,0,2,252,0,0,0,15,224,0,0,2,252,0,0,0,15,208,0,0,3,248,0,0,0,15,208,0,0,3,248,0,0,0,31,192,0,0,3,248,0,0,0,31,255,255,255,255,255,255,192,0,47,255,255,255,255,255,255,192,0,47,255,255,255,255,255,255,192,0,21,85,85,85,85,85,127,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,64,85,85,85,85,85,85,64,127,64,191,255,255,255,255,255,192,127,0,191,255,255,255,255,255,192,191,0,191,255,255,255,255,255,192,191,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,64,11,252,0,0,0,0,0,1,255,255,244,0,0,0,0,0,0,255,255,224,0,0,0,0,0,0,191,255,64,0,0,0,0,0,0,0,0,0,0, + // 0x9a71 驱 + 113,154,36,34,50,38,1,252,31,255,255,192,255,255,255,255,248,31,255,255,192,255,255,255,255,248,31,255,255,192,255,255,255,255,248,0,0,15,192,254,0,0,0,0,0,0,15,192,254,0,0,0,0,2,144,15,192,254,0,0,9,0,7,224,15,192,254,8,0,15,208,7,224,31,128,254,63,0,47,192,7,224,31,128,254,63,128,63,128,7,224,31,128,254,31,208,127,64,11,208,47,64,254,15,240,191,0,11,208,47,64,254,3,248,254,0,11,208,47,64,254,1,254,252,0,15,192,63,0,254,0,255,252,0,15,192,63,0,254,0,63,244,0,15,192,63,0,254,0,31,240,0,15,255,255,248,254,0,15,240,0,15,255,255,248,254,0,47,248,0,31,255,255,248,254,0,127,252,0,0,0,2,244,254,0,255,255,0,0,0,2,244,254,1,253,127,64,0,0,2,244,254,3,248,63,192,0,0,99,244,254,15,240,31,208,0,111,243,240,254,47,224,11,240,111,255,243,240,254,127,192,3,244,191,254,67,240,254,191,0,3,224,126,64,3,240,254,29,0,0,0,0,0,7,240,254,4,0,0,0,0,0,7,224,254,0,0,0,0,0,0,11,208,255,255,255,255,253,0,0,31,208,255,255,255,255,253,0,127,255,192,255,255,255,255,253,0,63,255,64,0,0,0,0,0,0,43,232,0,0,0,0,0,0, + // 0x9ad8 高 + 216,154,34,36,68,38,2,252,0,0,0,3,244,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,0,0,0,0,0,0,0,0,0,0,1,85,85,85,85,84,0,0,0,3,255,255,255,255,252,0,0,0,3,255,255,255,255,252,0,0,0,3,240,0,0,1,252,0,0,0,3,240,0,0,1,252,0,0,0,3,240,0,0,1,252,0,0,0,3,249,85,85,86,252,0,0,0,3,255,255,255,255,252,0,0,0,3,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,224,0,0,0,0,0,127,0,15,224,0,0,0,0,0,127,0,15,224,15,255,255,255,0,127,0,15,224,15,255,255,255,0,127,0,15,224,15,234,170,191,0,127,0,15,224,15,192,0,63,0,127,0,15,224,15,192,0,63,0,127,0,15,224,15,192,0,63,0,127,0,15,224,15,255,255,255,0,127,0,15,224,15,255,255,255,0,127,0,15,224,15,213,85,87,65,191,0,15,224,15,192,0,2,255,255,0,15,224,5,64,0,1,255,254,0,15,224,0,0,0,0,255,228,0, + // 0x9ec4 黄 + 196,158,34,36,68,38,2,252,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,3,255,255,255,255,255,255,253,0,3,255,255,255,255,255,255,253,0,3,255,255,255,255,255,255,253,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,106,170,171,254,170,170,160,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,254,0,3,252,0,7,240,0,0,254,0,3,252,0,7,240,0,0,254,0,3,252,0,7,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,254,85,87,253,85,91,240,0,0,254,0,3,252,0,7,240,0,0,254,0,3,252,0,7,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,106,170,170,170,170,170,160,0,0,0,11,64,0,30,64,0,0,0,0,191,224,0,127,248,0,0,0,31,255,208,0,111,255,208,0,6,255,254,0,0,1,255,254,0,127,255,224,0,0,0,27,255,208,47,249,0,0,0,0,0,191,128,10,64,0,0,0,0,0,9,0, + // 0x9ede 點 + 222,158,36,36,68,38,1,252,0,0,0,0,0,0,190,0,0,5,85,85,85,64,0,190,0,0,15,255,255,255,192,0,190,0,0,15,255,255,255,192,0,190,0,0,15,128,184,11,192,0,190,0,0,15,148,184,91,192,0,190,0,0,15,188,184,251,192,0,190,0,0,15,172,184,251,192,0,190,0,0,15,157,185,219,192,0,191,85,84,15,142,186,203,192,0,191,255,253,15,142,187,203,192,0,191,255,253,15,132,185,75,192,0,191,255,253,15,128,184,11,192,0,190,0,0,15,255,255,255,192,0,190,0,0,15,255,255,255,192,0,190,0,0,5,86,254,85,64,0,190,0,0,0,0,252,0,0,0,190,0,0,0,0,252,0,0,0,190,0,0,15,255,255,255,208,0,255,0,0,15,255,255,255,211,255,255,255,240,10,171,255,170,147,255,255,255,240,0,0,252,0,3,255,255,255,240,0,0,254,170,163,240,0,7,240,47,255,255,255,243,240,0,7,240,63,255,255,255,243,240,0,7,240,63,254,169,80,3,240,0,7,240,0,0,0,0,3,240,0,7,240,0,0,5,31,3,240,0,7,240,7,207,79,15,131,240,0,7,240,11,203,143,135,211,240,0,7,240,15,203,199,195,243,240,0,7,240,15,135,195,193,243,255,255,255,240,47,71,195,208,247,255,255,255,240,63,7,194,208,3,255,255,255,240,125,2,64,0,3,244,0,7,240,24,0,0,0,3,240,0,2,160, + // 0x9f50 齐 + 80,159,35,37,77,38,2,251,0,0,0,3,248,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,3,252,0,0,3,252,0,0,0,0,255,0,0,15,244,0,0,0,0,127,192,0,63,224,0,0,0,0,31,240,0,255,192,0,0,0,0,7,254,7,255,0,0,0,0,0,1,255,239,248,0,0,0,0,0,0,63,255,224,0,0,0,0,0,0,47,255,224,0,0,0,0,0,6,255,255,255,64,0,0,0,6,255,255,159,255,254,80,0,91,255,255,248,1,191,255,255,228,255,255,254,64,0,7,255,255,240,127,255,228,0,0,0,111,255,208,62,145,252,0,0,2,252,22,128,0,1,252,0,0,2,252,0,0,0,1,252,0,0,2,252,0,0,0,1,252,0,0,2,252,0,0,0,1,252,0,0,2,252,0,0,0,1,252,0,0,2,252,0,0,0,2,252,0,0,2,252,0,0,0,3,252,0,0,2,252,0,0,0,7,248,0,0,2,252,0,0,0,11,244,0,0,2,252,0,0,0,31,240,0,0,2,252,0,0,0,127,224,0,0,2,252,0,0,2,255,192,0,0,2,252,0,0,31,255,0,0,0,2,252,0,0,11,252,0,0,0,2,252,0,0,1,224,0,0,0,2,252,0,0,0,0,0,0,0,0,0,0,0, + // 0xff1a : + 26,255,6,25,50,38,16,1,63,192,255,240,255,240,255,240,191,224,47,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,192,255,240,255,240,255,240,191,224,47,128, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Symbols_28.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Symbols_28.cpp new file mode 100644 index 0000000000..8bbd87b0b5 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Symbols_28.cpp @@ -0,0 +1,38 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium_Symbols 38pt, capital 'A' height: 28px, width: 100% +extern const uint8_t NotoSans_Medium_Symbols_28[140] = { + 130,28,8,0,10,0,37,246, // unifont_t + // 0x08 - LCD_STR_THERMOMETER a.k.a 0x1f321 🌡 + 22,46,20,25,2,248,0,7,255,253,0,0,0,31,255,255,64,0,0,47,255,255,128,0,0,63,0,31,128,0,0,63,0,15,128,0,0,63,240,15,128,0,0,63,0,15,128,0,0,63,0,15,128,0,0,63,0,15,128,0,0,63,0,15,128,0,0,63,240,15,128,0,0,63,0,15,128,0,0,63,0,15,128,0,0,63,47,79,128,0,0,63,191,79,128,0,0,63,191,79,128,0,0,63,63,79,128,0,0,63,63,79,128,0,0,63,63,79,128,0,0,63,255,79,128,0,0,63,63,79,128,0,0,63,63,79,128,0,0,63,63,79,128,0,0,63,191,79,128,0,0,63,191,79,128,0,0,63,63,79,128,0,0,63,63,79,128,0,0,63,63,79,192,0,0,255,255,79,224,0,3,253,63,75,252,0,15,224,63,64,255,0,47,129,255,224,63,128,63,7,255,253,15,192,189,31,255,255,11,208,252,63,255,255,131,224,252,63,255,255,195,240,252,63,255,255,195,240,252,63,255,255,195,224,189,47,255,255,75,208,127,15,255,255,15,192,63,131,255,252,63,128,15,240,111,144,255,0,7,254,0,27,252,0,1,255,255,255,240,0,0,47,255,255,128,0,0,1,191,228,0,0, + // 0x09 - LCD_STR_DEGREE a.k.a 0x00b0 ° + 13,13,52,16,2,15,0,85,0,0,11,255,224,0,47,255,252,0,127,65,254,0,253,0,63,0,252,0,47,0,252,0,47,64,252,0,47,0,253,0,63,0,127,129,254,0,47,255,252,0,11,255,224,0,0,85,0,0, + // 0x0a - replacement for 0x2026 used in Greek language files … + 26,6,42,31,2,255,31,128,0,248,0,11,192,63,224,3,255,0,63,240,127,224,3,255,0,63,240,127,224,3,255,0,63,240,63,208,2,253,0,47,224,5,0,0,84,0,5,64, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Traditional_Chinese_28.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Traditional_Chinese_28.cpp new file mode 100644 index 0000000000..a88c195cbf --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Traditional_Chinese_28.cpp @@ -0,0 +1,646 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Traditional Chinese 38pt, capital 'A' height: 28px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 +extern const uint8_t NotoSans_Medium_Traditional_Chinese_28[22554] = { + 162,28,191,34,26,255,37,246, // unifont_t + // 0x22bf ⊿ + 191,34,29,31,248,38,4,255,0,0,0,0,0,0,0,128,0,0,0,0,0,0,2,192,0,0,0,0,0,0,11,192,0,0,0,0,0,0,47,192,0,0,0,0,0,0,191,192,0,0,0,0,0,2,255,192,0,0,0,0,0,11,255,192,0,0,0,0,0,47,255,192,0,0,0,0,0,191,223,192,0,0,0,0,2,255,31,192,0,0,0,0,11,252,31,192,0,0,0,0,31,240,31,192,0,0,0,0,127,192,31,192,0,0,0,1,255,0,31,192,0,0,0,7,252,0,31,192,0,0,0,31,240,0,31,192,0,0,0,127,192,0,31,192,0,0,1,255,0,0,31,192,0,0,7,252,0,0,31,192,0,0,31,240,0,0,31,192,0,0,127,192,0,0,31,192,0,1,255,0,0,0,31,192,0,7,252,0,0,0,31,192,0,31,240,0,0,0,31,192,0,127,192,0,0,0,31,192,1,255,0,0,0,0,31,192,7,252,0,0,0,0,31,192,15,255,255,255,255,255,255,192,63,255,255,255,255,255,255,192,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0, + // 0x4e00 一 + 0,78,35,4,36,38,2,12,255,255,255,255,255,255,255,255,244,255,255,255,255,255,255,255,255,244,255,255,255,255,255,255,255,255,244,255,255,255,255,255,255,255,255,244, + // 0x4e09 三 + 9,78,34,29,5,38,2,255,3,255,255,255,255,255,255,253,0,3,255,255,255,255,255,255,253,0,3,255,255,255,255,255,255,253,0,2,170,170,170,170,170,170,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,170,170,170,170,170,0,0,0,47,255,255,255,255,255,64,0,0,47,255,255,255,255,255,64,0,0,47,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,170,170,170,170,170,170,170,128,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208, + // 0x4e0a 上 + 10,78,34,34,50,38,2,254,0,0,0,5,64,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,250,170,170,168,0,0,0,0,15,255,255,255,253,0,0,0,0,15,255,255,255,253,0,0,0,0,15,255,255,255,253,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,170,170,170,175,250,170,170,170,160,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x4e0b 下 + 11,78,34,33,41,38,2,252,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,106,170,170,175,250,170,170,170,144,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,255,128,0,0,0,0,0,0,11,255,248,0,0,0,0,0,0,11,255,255,64,0,0,0,0,0,11,251,255,244,0,0,0,0,0,11,240,191,254,0,0,0,0,0,11,240,31,255,208,0,0,0,0,11,240,2,255,248,0,0,0,0,11,240,0,63,254,0,0,0,0,11,240,0,11,252,0,0,0,0,11,240,0,1,244,0,0,0,0,11,240,0,0,16,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0, + // 0x4e0d 不 + 13,78,34,33,41,38,2,252,127,255,255,255,255,255,255,255,192,127,255,255,255,255,255,255,255,192,127,255,255,255,255,255,255,255,192,42,170,170,170,255,234,170,170,128,0,0,0,0,255,192,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,191,252,0,0,0,0,0,0,1,255,252,124,0,0,0,0,0,7,255,254,255,64,0,0,0,0,31,255,252,255,240,0,0,0,0,127,243,252,47,253,0,0,0,2,255,195,252,7,255,64,0,0,11,255,3,252,1,255,224,0,0,63,252,3,252,0,63,252,0,2,255,240,3,252,0,11,255,0,31,255,128,3,252,0,2,255,192,191,253,0,3,252,0,0,191,240,191,240,0,3,252,0,0,31,224,63,128,0,3,252,0,0,7,128,8,0,0,3,252,0,0,1,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0, + // 0x4e26 並 + 38,78,34,34,50,38,2,254,0,0,144,0,0,0,100,0,0,0,11,240,0,0,0,255,64,0,0,7,248,0,0,1,255,0,0,0,2,253,0,0,2,253,0,0,0,0,255,0,0,7,252,0,0,0,0,191,64,0,15,240,0,0,0,0,63,128,0,31,224,0,0,21,85,126,85,85,127,229,85,64,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,3,248,3,248,0,0,0,0,0,3,248,3,248,0,0,0,0,0,3,248,3,248,0,0,0,0,96,3,248,3,248,0,228,0,3,244,3,248,3,248,1,253,0,3,248,3,248,3,248,2,252,0,1,252,3,248,3,248,3,252,0,0,253,3,248,3,248,7,244,0,0,191,3,248,3,248,11,240,0,0,127,3,248,3,248,15,240,0,0,63,67,248,3,248,15,208,0,0,63,131,248,3,248,47,192,0,0,47,195,248,3,248,63,128,0,0,31,195,248,3,248,127,64,0,0,15,211,248,3,248,191,0,0,0,15,131,248,3,248,109,0,0,0,0,3,248,3,248,0,0,0,0,0,3,248,3,248,0,0,0,0,0,3,248,3,248,0,0,0,170,170,171,254,171,254,170,170,160,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x4e2d 中 + 45,78,32,36,32,38,3,252,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,149,85,95,245,85,86,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,1,253,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,255,255,255,255,255,255,253,127,149,85,95,245,85,86,253,127,0,0,15,224,0,1,253,127,0,0,15,224,0,0,168,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0, + // 0x4e3b 主 + 59,78,34,35,59,38,2,253,0,0,0,9,0,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,191,224,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,0,63,208,0,0,0,5,85,85,85,111,149,85,85,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,255,255,255,255,255,255,244,0,0,255,255,255,255,255,255,244,0,0,255,255,255,255,255,255,244,0,0,85,85,87,253,85,85,80,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,85,85,85,85,85,85,80, + // 0x4e4b 之 + 75,78,35,36,68,38,1,252,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,1,85,85,85,255,85,85,89,0,3,255,255,255,255,255,255,255,128,3,255,255,255,255,255,255,255,192,3,255,255,255,255,255,255,255,128,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,11,253,0,0,0,0,0,0,0,31,244,0,0,0,0,0,0,0,127,224,0,0,0,1,0,0,1,255,128,0,0,0,3,224,0,7,254,0,0,0,0,11,244,0,47,248,0,0,0,0,15,240,0,191,224,0,0,0,0,31,224,2,255,128,0,0,0,0,63,240,15,253,0,0,0,0,0,127,252,127,244,0,0,0,0,0,255,255,255,192,0,0,0,0,2,254,255,254,0,0,0,0,0,3,252,63,252,0,0,0,0,0,11,248,15,255,144,0,0,0,0,31,240,3,255,255,250,165,85,88,63,208,0,127,255,255,255,255,252,191,192,0,6,255,255,255,255,248,31,64,0,0,6,191,255,255,244,1,0,0,0,0,0,0,0,0, + // 0x4ea4 交 + 164,78,34,37,77,38,2,251,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,85,85,85,85,85,85,85,85,80,0,0,20,0,0,2,128,0,0,0,0,63,128,0,15,240,0,0,0,0,255,192,0,47,253,0,0,0,3,255,0,0,7,255,128,0,0,15,252,0,0,0,255,240,0,0,127,240,0,0,0,47,252,0,2,255,192,0,0,0,11,255,0,31,255,6,64,0,30,65,255,192,191,248,63,192,0,47,224,127,224,63,224,47,208,0,63,192,31,128,15,0,15,240,0,191,128,9,0,0,0,11,244,0,255,0,0,0,0,0,3,252,3,254,0,0,0,0,0,2,255,11,252,0,0,0,0,0,0,255,175,240,0,0,0,0,0,0,63,255,208,0,0,0,0,0,0,31,255,128,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,127,255,208,0,0,0,0,0,2,255,255,248,0,0,0,0,0,47,255,95,255,128,0,0,0,7,255,252,3,255,249,0,0,1,191,255,208,0,191,255,228,0,191,255,253,0,0,11,255,255,240,255,255,208,0,0,0,191,255,240,63,248,0,0,0,0,6,255,192,46,0,0,0,0,0,0,6,64,0,0,0,0,0,0,0,0,0, + // 0x4eae 亮 + 174,78,34,37,77,38,2,251,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,85,85,85,85,85,64,0,0,47,255,255,255,255,255,128,0,0,47,255,255,255,255,255,128,0,0,47,192,0,0,0,63,128,0,0,47,192,0,0,0,63,128,0,0,47,192,0,0,0,63,128,0,0,47,255,255,255,255,255,128,0,0,47,255,255,255,255,255,128,0,0,5,85,85,85,85,85,64,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,0,0,0,0,0,0,15,208,127,0,0,0,0,0,0,15,208,127,0,15,224,3,252,0,15,208,127,0,15,224,3,252,0,15,208,127,0,31,208,3,252,0,15,208,0,0,47,192,3,252,0,0,0,0,0,63,192,3,252,0,0,0,0,0,127,128,3,252,0,0,0,0,0,255,64,3,252,0,7,128,0,3,254,0,3,252,0,7,240,0,47,252,0,3,252,0,11,240,6,255,240,0,2,253,0,15,224,255,255,128,0,2,255,255,255,208,191,249,0,0,0,255,255,255,192,62,64,0,0,0,47,255,254,0,0,0,0,0,0,0,0,0,0, + // 0x4ee4 令 + 228,78,36,36,68,38,1,252,0,0,0,1,254,0,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,11,255,208,0,0,0,0,0,0,47,255,240,0,0,0,0,0,0,127,219,252,0,0,0,0,0,1,255,131,255,0,0,0,0,0,7,254,0,255,192,0,0,0,0,31,252,0,63,244,0,0,0,0,127,240,0,15,253,0,0,0,2,255,192,0,3,255,128,0,0,11,255,0,0,0,255,240,0,0,63,253,0,0,0,127,253,0,1,255,223,255,255,255,247,255,208,15,255,79,255,255,255,240,255,248,127,252,15,255,255,255,240,47,253,63,208,0,0,0,0,0,7,248,15,0,0,0,0,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,0,0,47,208,0,2,252,0,0,0,0,31,192,0,2,252,0,0,0,0,31,192,0,2,252,0,0,0,0,31,192,0,2,252,0,0,0,0,31,192,0,2,252,0,0,0,0,31,192,0,2,252,0,0,0,0,31,192,0,2,252,0,0,0,0,31,192,0,2,252,0,0,0,0,31,192,15,255,252,0,0,0,0,31,192,11,255,248,0,0,0,0,31,192,7,255,224,0,0,0,0,31,192,1,84,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0, + // 0x4ef6 件 + 246,78,35,36,68,38,1,252,0,0,32,0,0,5,64,0,0,0,0,191,0,0,31,192,0,0,0,0,254,2,144,31,192,0,0,0,1,253,3,244,31,192,0,0,0,3,252,7,240,31,192,0,0,0,7,248,11,240,31,192,0,0,0,15,240,15,224,31,192,0,0,0,31,224,15,208,31,192,0,0,0,63,192,31,255,255,255,255,224,0,127,128,47,255,255,255,255,224,0,255,64,63,255,255,255,255,224,3,255,64,127,149,111,229,85,64,7,255,64,255,0,31,192,0,0,31,255,65,253,0,31,192,0,0,63,255,67,252,0,31,192,0,0,191,255,66,244,0,31,192,0,0,63,63,64,32,0,31,192,0,0,44,63,64,0,0,31,192,0,0,4,63,64,0,0,31,192,0,0,0,63,67,255,255,255,255,255,252,0,63,67,255,255,255,255,255,252,0,63,67,255,255,255,255,255,252,0,63,65,85,85,111,229,85,84,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,47,64,0,0,31,192,0,0, + // 0x4efd 份 + 253,78,36,36,68,38,1,252,0,0,100,0,0,0,0,0,0,0,0,255,0,15,255,255,128,0,0,1,253,0,15,255,255,192,0,0,2,252,0,15,255,255,208,0,0,3,248,1,64,0,15,224,0,0,11,240,3,248,0,15,240,0,0,15,224,3,244,0,7,240,0,0,47,192,11,240,0,3,248,0,0,63,128,15,224,0,3,252,0,0,255,64,47,192,0,1,254,0,1,255,64,63,128,0,0,255,0,3,255,64,191,0,0,0,127,192,15,255,64,254,0,0,0,63,224,47,255,67,252,0,0,0,31,248,127,255,75,244,0,0,0,11,254,255,191,95,240,0,0,0,7,253,190,63,111,239,255,255,255,253,248,60,63,71,95,255,255,255,252,32,32,63,64,31,255,255,255,252,0,0,63,64,0,11,224,1,252,0,0,63,64,0,15,224,1,252,0,0,63,64,0,15,208,1,252,0,0,63,64,0,15,208,1,252,0,0,63,64,0,31,192,2,252,0,0,63,64,0,47,192,2,252,0,0,63,64,0,63,64,2,252,0,0,63,64,0,127,0,2,252,0,0,63,64,0,255,0,3,252,0,0,63,64,1,253,0,3,248,0,0,63,64,3,252,0,3,248,0,0,63,64,15,244,0,3,248,0,0,63,64,63,224,0,11,244,0,0,63,66,255,128,15,255,240,0,0,63,67,254,0,11,255,240,0,0,63,64,244,0,7,255,192,0,0,42,0,64,0,1,84,0,0, + // 0x4f11 休 + 17,79,36,36,68,38,1,252,0,0,4,0,0,0,0,0,0,0,0,47,128,0,63,128,0,0,0,0,63,192,0,63,128,0,0,0,0,191,64,0,63,128,0,0,0,0,255,0,0,63,128,0,0,0,1,254,0,0,63,128,0,0,0,3,252,0,0,63,128,0,0,0,11,248,0,0,63,128,0,0,0,15,240,0,0,63,128,0,0,0,63,224,0,0,63,128,0,0,0,191,211,255,255,255,255,255,252,1,255,211,255,255,255,255,255,252,3,255,211,255,255,255,255,255,252,15,255,209,85,87,255,253,85,84,63,255,208,0,3,255,252,0,0,255,239,208,0,7,255,253,0,0,191,143,208,0,15,255,255,0,0,63,15,208,0,31,255,255,0,0,44,15,208,0,63,255,175,192,0,0,15,208,0,127,127,159,208,0,0,15,208,0,255,63,143,240,0,0,15,208,2,253,63,135,248,0,0,15,208,7,252,63,130,252,0,0,15,208,15,240,63,128,255,0,0,15,208,47,224,63,128,191,128,0,15,208,191,192,63,128,63,208,0,15,209,255,0,63,128,31,244,0,15,219,253,0,63,128,11,253,0,15,239,248,0,63,128,3,255,0,15,219,240,0,63,128,0,252,0,15,210,192,0,63,128,0,48,0,15,208,0,0,63,128,0,0,0,15,208,0,0,63,128,0,0,0,15,208,0,0,63,128,0,0,0,15,208,0,0,63,128,0,0,0,15,192,0,0,63,128,0,0, + // 0x4f4d 位 + 77,79,36,36,68,38,1,252,0,0,36,0,0,21,64,0,0,0,0,127,64,0,63,128,0,0,0,0,191,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,2,252,0,0,63,128,0,0,0,3,252,0,0,63,128,0,0,0,11,244,0,0,63,128,0,0,0,31,224,85,85,127,213,85,80,0,63,192,255,255,255,255,255,248,0,191,192,255,255,255,255,255,248,1,255,192,255,255,255,255,255,248,3,255,192,0,0,0,0,0,0,11,255,192,0,0,0,0,0,0,47,255,192,1,96,0,0,249,0,191,255,192,3,240,0,1,254,0,255,175,192,3,244,0,1,253,0,127,47,192,2,248,0,2,252,0,60,47,192,1,252,0,3,252,0,16,47,192,1,252,0,3,248,0,0,47,192,0,253,0,7,244,0,0,47,192,0,254,0,11,240,0,0,47,192,0,190,0,15,240,0,0,47,192,0,191,0,15,224,0,0,47,192,0,127,0,15,208,0,0,47,192,0,127,0,47,192,0,0,47,192,0,63,64,63,192,0,0,47,192,0,63,128,63,64,0,0,47,192,0,63,128,127,0,0,0,47,192,0,63,128,191,0,0,0,47,192,0,16,0,254,0,0,0,47,193,85,85,85,253,85,84,0,47,195,255,255,255,255,255,254,0,47,195,255,255,255,255,255,254,0,47,195,255,255,255,255,255,254,0,47,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0, + // 0x4f4e 低 + 78,79,36,36,68,38,1,252,0,0,80,0,0,0,0,0,0,0,0,254,0,0,0,0,4,0,0,0,254,0,0,0,6,255,0,0,2,252,0,0,22,255,255,192,0,3,252,53,111,255,255,255,128,0,7,244,63,255,255,255,144,0,0,15,240,63,255,255,248,0,0,0,47,208,63,229,3,248,0,0,0,63,192,63,64,3,248,0,0,0,191,64,63,64,3,252,0,0,1,255,64,63,64,2,252,0,0,3,255,64,63,64,2,252,0,0,11,255,64,63,64,2,252,0,0,31,255,64,63,64,2,252,0,0,127,255,64,63,255,255,255,255,253,255,255,64,63,255,255,255,255,253,255,63,64,63,255,255,255,255,253,60,63,64,63,64,0,253,0,0,36,63,64,63,64,0,254,0,0,0,63,64,63,64,0,254,0,0,0,63,64,63,64,0,191,0,0,0,63,64,63,64,0,191,0,0,0,63,64,63,64,0,127,0,0,0,63,64,63,64,0,63,64,0,0,63,64,63,64,5,63,128,0,0,63,64,63,155,255,111,192,0,0,63,65,191,255,255,95,208,32,0,63,71,255,255,255,79,224,46,0,63,67,255,250,64,11,240,63,0,63,67,229,0,0,7,248,63,0,63,64,0,0,0,3,253,127,0,63,64,0,0,0,1,255,254,0,63,65,255,255,255,252,191,252,0,63,65,255,255,255,252,47,248,0,63,65,255,255,255,252,6,144,0,63,64,0,0,0,0,0,0, + // 0x4f5c 作 + 92,79,36,36,68,38,1,252,0,0,20,0,0,0,0,0,0,0,0,63,64,11,224,0,0,0,0,0,191,64,15,240,0,0,0,0,0,255,0,31,208,0,0,0,0,1,253,0,47,192,0,0,0,0,3,252,0,63,128,0,0,0,0,7,248,0,191,149,85,85,84,0,15,240,0,255,255,255,255,253,0,31,224,2,255,255,255,255,253,0,63,192,3,255,255,255,255,253,0,255,192,15,240,127,64,0,0,1,255,192,31,224,127,64,0,0,3,255,192,63,192,127,64,0,0,15,255,192,255,64,127,64,0,0,63,255,194,255,0,127,64,0,0,127,255,195,252,0,127,255,255,248,63,111,192,244,0,127,255,255,248,30,47,192,16,0,127,255,255,248,8,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,85,85,84,0,47,192,0,0,127,255,255,252,0,47,192,0,0,127,255,255,252,0,47,192,0,0,127,255,255,252,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,47,192,0,0,127,64,0,0,0,31,192,0,0,127,0,0,0, + // 0x4f9b 供 + 155,79,36,36,68,38,1,252,0,0,36,0,105,0,6,160,0,0,0,191,0,191,0,11,240,0,0,0,254,0,191,0,11,240,0,0,1,253,0,191,0,11,240,0,0,3,252,0,191,0,11,240,0,0,7,244,0,191,0,11,240,0,0,15,240,0,191,0,11,240,0,0,47,208,0,191,0,11,240,0,0,63,192,255,255,255,255,255,252,0,191,64,255,255,255,255,255,252,1,255,64,255,255,255,255,255,252,3,255,64,85,191,85,91,245,84,15,255,64,0,191,0,11,240,0,47,255,64,0,191,0,11,240,0,127,255,64,0,191,0,11,240,0,255,191,64,0,191,0,11,240,0,127,63,64,0,191,0,11,240,0,60,63,64,0,191,0,11,240,0,20,63,64,0,191,0,11,240,0,0,63,64,0,191,0,11,240,0,0,63,65,85,255,85,95,245,84,0,63,67,255,255,255,255,255,253,0,63,67,255,255,255,255,255,253,0,63,67,255,255,255,255,255,253,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,61,0,1,192,0,0,63,64,0,191,64,15,240,0,0,63,64,1,254,0,7,252,0,0,63,64,7,252,0,2,254,0,0,63,64,15,244,0,0,191,128,0,63,64,63,208,0,0,63,208,0,63,65,255,128,0,0,15,240,0,63,67,254,0,0,0,7,252,0,63,65,248,0,0,0,2,244,0,63,64,32,0,0,0,0,128, + // 0x4fdd 保 + 221,79,36,36,68,38,1,252,0,0,36,0,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,191,31,255,255,255,255,192,0,0,254,31,255,255,255,255,192,0,2,252,31,255,255,255,255,192,0,3,248,31,192,0,0,31,192,0,15,240,31,192,0,0,31,192,0,31,224,31,192,0,0,31,192,0,63,192,31,192,0,0,31,192,0,191,192,31,192,0,0,31,192,1,255,192,31,192,0,0,31,192,3,255,192,31,255,255,255,255,192,15,255,192,31,255,255,255,255,192,63,255,192,31,255,255,255,255,192,191,239,192,0,0,47,192,0,0,191,111,192,0,0,47,192,0,0,62,47,192,0,0,47,192,0,0,44,47,192,0,0,47,192,0,0,0,47,192,0,0,47,192,0,0,0,47,195,255,255,255,255,255,252,0,47,195,255,255,255,255,255,252,0,47,195,255,255,255,255,255,252,0,47,192,0,3,255,252,0,0,0,47,192,0,11,255,255,0,0,0,47,192,0,31,255,255,128,0,0,47,192,0,63,239,223,208,0,0,47,192,0,255,47,207,244,0,0,47,192,3,253,47,195,253,0,0,47,192,31,248,47,193,255,64,0,47,192,127,224,47,192,127,208,0,47,195,255,128,47,192,47,248,0,47,207,254,0,47,192,11,255,0,47,199,248,0,47,192,2,253,0,47,193,208,0,47,192,0,116,0,47,192,0,0,47,192,0,0,0,31,128,0,0,47,192,0,0, + // 0x4fe1 信 + 225,79,36,36,68,38,1,252,0,0,36,0,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,191,7,255,255,255,255,0,0,0,254,7,255,255,255,255,0,0,2,252,3,255,255,255,255,0,0,3,248,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,31,227,255,255,255,255,255,253,0,63,195,255,255,255,255,255,253,0,191,195,255,255,255,255,255,253,0,255,192,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,11,255,192,0,0,0,0,0,0,47,255,192,15,255,255,255,255,128,127,255,192,15,255,255,255,255,128,255,175,192,11,255,255,255,255,128,191,47,192,0,0,0,0,0,0,60,47,192,0,0,0,0,0,0,16,47,192,11,255,255,255,255,64,0,47,192,15,255,255,255,255,128,0,47,192,15,255,255,255,255,128,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,15,255,255,255,255,192,0,47,192,31,255,255,255,255,192,0,47,192,31,255,255,255,255,192,0,47,192,31,192,0,0,31,192,0,47,192,31,192,0,0,31,192,0,47,192,31,192,0,0,31,192,0,47,192,31,192,0,0,31,192,0,47,192,31,192,0,0,31,192,0,47,192,31,255,255,255,255,192,0,47,192,31,255,255,255,255,192,0,47,192,31,255,255,255,255,192,0,47,192,31,192,0,0,31,192,0,26,128,15,192,0,0,26,128, + // 0x500b 個 + 11,80,34,36,68,38,1,252,0,1,144,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,3,244,255,255,255,255,255,240,0,7,240,255,255,255,255,255,240,0,15,240,255,255,255,255,255,240,0,31,208,253,0,0,0,3,240,0,63,192,252,0,10,64,3,240,0,63,128,252,0,31,64,3,240,0,191,0,252,0,31,64,3,240,0,255,0,252,0,31,64,3,240,3,255,0,252,0,31,64,3,240,7,255,0,252,127,255,255,243,240,15,255,0,252,127,255,255,243,240,47,255,0,252,106,175,234,147,240,127,255,0,252,0,31,64,3,240,255,191,0,252,0,31,64,3,240,190,127,0,252,0,31,64,3,240,124,127,0,252,10,175,234,67,240,48,127,0,252,15,255,255,131,240,0,127,0,252,15,255,255,131,240,0,127,0,252,15,64,15,131,240,0,127,0,252,15,64,15,131,240,0,127,0,252,15,64,15,131,240,0,127,0,252,15,64,15,131,240,0,127,0,252,15,64,15,131,240,0,127,0,252,15,255,255,131,240,0,127,0,252,15,255,255,131,240,0,127,0,252,10,170,170,67,240,0,127,0,252,0,0,0,3,240,0,127,0,252,0,0,0,3,240,0,127,0,255,255,255,255,255,240,0,127,0,255,255,255,255,255,240,0,127,0,255,255,255,255,255,240,0,127,0,253,0,0,0,3,240,0,127,0,252,0,0,0,3,240,0,127,0,168,0,0,0,1,80, + // 0x503c 值 + 60,80,36,36,68,38,1,252,0,0,96,0,0,30,128,0,0,0,0,254,0,0,47,192,0,0,0,0,253,0,0,63,192,0,0,0,2,252,0,0,63,128,0,0,0,3,249,255,255,255,255,255,244,0,7,241,255,255,255,255,255,244,0,15,241,255,255,255,255,255,244,0,31,208,0,0,127,0,0,0,0,63,192,0,0,190,0,0,0,0,191,64,0,0,253,0,0,0,0,255,0,26,170,254,170,170,0,3,255,0,31,255,255,255,255,0,11,255,0,31,255,255,255,255,0,31,255,0,31,128,0,0,63,0,63,255,0,31,128,0,0,63,0,191,255,0,31,128,0,0,63,0,63,127,0,31,255,255,255,255,0,45,63,0,31,255,255,255,255,0,8,63,0,31,234,170,170,191,0,0,63,0,31,128,0,0,63,0,0,63,0,31,128,0,0,63,0,0,63,0,31,255,255,255,255,0,0,63,0,31,255,255,255,255,0,0,63,0,31,213,85,85,191,0,0,63,0,31,128,0,0,63,0,0,63,0,31,128,0,0,63,0,0,63,0,31,213,85,85,191,0,0,63,0,31,255,255,255,255,0,0,63,0,31,255,255,255,255,0,0,63,0,31,128,0,0,63,0,0,63,0,31,128,0,0,63,0,0,63,0,31,128,0,0,63,0,0,63,15,255,255,255,255,255,253,0,63,15,255,255,255,255,255,253,0,63,15,255,255,255,255,255,253,0,63,0,0,0,0,0,0,0, + // 0x504f 偏 + 79,80,36,36,68,38,1,252,0,1,128,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,246,255,255,255,255,255,253,0,11,243,255,255,255,255,255,253,0,15,227,255,255,255,255,255,253,0,31,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,64,42,170,170,170,170,160,0,191,0,127,255,255,255,255,240,0,255,0,127,255,255,255,255,240,3,255,0,127,0,0,0,11,240,7,255,0,127,0,0,0,11,240,15,255,0,127,0,0,0,11,240,47,255,0,127,0,0,0,11,240,127,255,0,127,255,255,255,255,240,255,255,0,127,255,255,255,255,240,255,127,0,127,170,170,170,170,160,124,127,0,127,0,0,0,0,0,52,127,0,127,0,0,0,0,0,0,127,0,191,255,255,255,255,248,0,127,0,191,255,255,255,255,248,0,127,0,255,255,255,255,255,248,0,127,0,255,240,124,15,66,248,0,127,0,255,240,124,15,66,248,0,127,1,255,240,124,15,66,248,0,127,2,255,240,124,15,66,248,0,127,3,251,255,255,255,255,248,0,127,3,247,255,255,255,255,248,0,127,7,243,250,255,191,235,248,0,127,15,227,240,124,15,66,248,0,127,31,211,240,124,15,66,248,0,127,63,195,240,124,15,66,248,0,127,127,67,240,124,15,66,248,0,127,30,3,240,124,15,127,244,0,127,0,3,240,124,15,95,240,0,127,0,3,240,124,15,79,208, + // 0x505c 停 + 92,80,36,36,68,38,1,252,0,0,80,0,0,42,128,0,0,0,0,255,0,0,63,128,0,0,0,0,254,0,0,63,128,0,0,0,2,252,0,0,63,192,0,0,0,3,251,255,255,255,255,255,252,0,11,243,255,255,255,255,255,252,0,15,243,255,255,255,255,255,252,0,47,192,0,0,0,0,0,0,0,63,128,5,85,85,85,85,0,0,255,64,15,255,255,255,255,64,2,255,64,15,255,255,255,255,64,7,255,64,15,192,0,0,63,64,15,255,64,15,192,0,0,63,64,63,255,64,15,192,0,0,63,64,191,255,64,15,255,255,255,255,64,255,127,64,15,255,255,255,255,64,125,63,64,5,85,85,85,85,0,56,63,64,0,0,0,0,0,0,16,63,71,255,255,255,255,255,254,0,63,75,255,255,255,255,255,254,0,63,75,255,255,255,255,255,254,0,63,75,224,0,0,0,0,190,0,63,75,224,0,0,0,0,190,0,63,75,226,255,255,255,252,190,0,63,75,227,255,255,255,252,190,0,63,75,227,255,255,255,252,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,0,63,128,0,0,0,63,64,0,255,255,128,0,0,0,63,64,0,191,255,64,0,0,0,63,0,0,127,249,0,0,0, + // 0x5075 偵 + 117,80,35,37,77,38,1,251,0,0,36,0,0,63,128,0,0,0,0,127,64,0,63,128,0,0,0,0,255,0,0,63,128,0,0,0,0,254,0,0,63,255,255,248,0,2,252,0,0,63,255,255,248,0,7,248,0,0,63,255,255,248,0,15,240,0,0,63,128,0,0,0,31,224,0,0,63,128,0,0,0,63,192,0,0,63,128,0,0,0,191,192,42,170,191,234,170,128,1,255,192,47,255,255,255,255,192,3,255,192,47,255,255,255,255,192,15,255,192,47,128,0,0,47,192,63,255,192,47,128,0,0,47,192,191,239,192,47,234,170,170,191,192,255,111,192,47,255,255,255,255,192,126,47,192,47,255,255,255,255,192,56,47,192,47,128,0,0,47,192,0,47,192,47,128,0,0,47,192,0,47,192,47,128,0,0,47,192,0,47,192,47,255,255,255,255,192,0,47,192,47,255,255,255,255,192,0,47,192,47,234,170,170,191,192,0,47,192,47,128,0,0,47,192,0,47,192,47,128,0,0,47,192,0,47,192,47,234,170,170,191,192,0,47,192,47,255,255,255,255,192,0,47,192,47,255,255,255,255,192,0,47,192,0,0,0,0,0,0,0,47,192,0,62,64,7,208,0,0,47,192,1,255,192,47,252,0,0,47,192,11,255,0,11,255,64,0,47,192,191,248,0,0,255,224,0,47,199,255,208,0,0,47,252,0,47,194,255,0,0,0,7,248,0,31,128,116,0,0,0,1,192,0,0,0,0,0,0,0,0,0, + // 0x5099 備 + 153,80,36,37,77,38,1,251,0,1,64,0,21,0,5,80,0,0,3,248,0,127,0,11,224,0,0,3,248,0,127,0,11,224,0,0,7,240,0,127,0,11,240,0,0,15,243,255,255,255,255,255,253,0,15,211,255,255,255,255,255,253,0,47,195,255,255,255,255,255,253,0,63,128,0,127,0,11,224,0,0,191,0,0,127,0,11,224,0,0,255,0,0,127,0,11,224,0,2,255,0,0,0,0,0,0,0,3,255,2,255,255,255,255,255,253,11,255,2,255,255,255,255,255,253,31,255,2,255,255,255,255,255,253,63,255,2,248,0,0,0,0,0,255,255,2,248,0,0,0,0,0,255,127,2,248,106,170,170,170,164,124,127,2,248,127,255,255,255,248,52,127,2,248,127,255,255,255,248,16,127,2,248,125,0,252,1,248,0,127,2,248,125,0,252,1,248,0,127,2,248,125,0,252,1,248,0,127,2,248,127,255,255,255,248,0,127,3,244,127,255,255,255,248,0,127,3,244,126,85,253,86,248,0,127,3,240,125,0,252,1,248,0,127,3,240,125,0,252,1,248,0,127,7,240,127,255,255,255,248,0,127,11,240,127,255,255,255,248,0,127,15,224,126,85,253,86,248,0,127,15,208,125,0,252,1,248,0,127,31,192,125,0,252,1,248,0,127,63,128,125,0,252,1,248,0,127,127,0,125,0,252,171,244,0,127,46,0,125,0,252,127,240,0,127,9,0,105,0,164,63,144,0,0,0,0,0,0,0,0,0, + // 0x50b3 傳 + 179,80,36,36,68,38,1,252,0,0,80,0,0,26,64,0,0,0,0,255,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,2,255,255,255,255,255,255,252,0,3,254,255,255,255,255,255,252,0,11,245,170,170,191,234,170,168,0,15,240,0,0,47,192,0,0,0,47,208,0,0,47,192,0,0,0,63,192,63,255,255,255,255,224,0,191,64,63,255,255,255,255,224,1,255,64,63,0,47,192,11,224,3,255,64,63,0,47,192,11,224,15,255,64,63,255,255,255,255,224,47,255,64,63,255,255,255,255,224,191,255,64,63,0,47,192,11,224,255,191,64,63,0,47,192,11,224,190,63,64,63,255,255,255,255,224,60,63,64,63,255,255,255,255,224,32,63,64,0,0,47,192,255,0,0,63,64,0,0,47,192,63,192,0,63,67,255,255,255,255,255,240,0,63,67,255,255,255,255,255,252,0,63,66,254,170,165,87,249,253,0,63,64,0,0,0,3,244,32,0,63,64,0,0,0,3,244,0,0,63,75,255,255,255,255,255,253,0,63,75,255,255,255,255,255,253,0,63,75,255,255,255,255,255,253,0,63,64,7,240,0,3,244,0,0,63,64,11,252,0,3,244,0,0,63,64,2,255,0,3,244,0,0,63,64,0,191,128,3,244,0,0,63,64,0,47,192,3,244,0,0,63,64,0,14,15,255,244,0,0,63,64,0,0,15,255,240,0,0,63,0,0,0,7,255,128,0, + // 0x50be 傾 + 190,80,36,37,77,38,1,251,0,1,0,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,15,224,0,63,255,255,255,253,0,15,208,0,63,255,255,255,253,0,31,202,128,63,255,255,255,253,0,63,143,208,0,0,127,0,0,0,63,15,208,0,0,191,0,0,0,191,15,208,0,0,254,0,0,0,254,15,208,3,255,255,255,240,2,253,15,208,3,255,255,255,240,3,253,15,208,227,250,170,171,240,11,253,15,211,251,240,0,3,240,15,253,15,223,247,240,0,3,240,47,253,15,255,195,240,0,3,240,127,253,15,255,3,255,255,255,240,255,253,15,252,3,255,255,255,240,253,189,15,240,3,250,170,171,240,124,189,15,208,3,240,0,3,240,48,189,15,208,3,240,0,3,240,0,189,15,208,3,250,170,171,240,0,189,15,208,3,255,255,255,240,0,189,15,208,3,255,255,255,240,0,189,15,208,183,240,0,3,240,0,189,15,208,191,240,0,3,240,0,189,15,208,255,240,0,3,240,0,189,15,208,255,250,170,171,240,0,189,15,208,255,255,255,255,240,0,189,11,255,251,255,255,255,240,0,189,7,255,240,0,0,0,0,0,189,2,255,208,28,0,24,0,0,189,0,0,0,191,128,191,0,0,189,0,0,3,255,64,191,208,0,189,0,0,47,252,0,31,244,0,189,0,2,255,224,0,7,253,0,189,0,1,255,64,0,0,253,0,189,0,0,116,0,0,0,48,0,0,0,0,0,0,0,0,0, + // 0x5132 儲 + 50,81,36,36,68,38,1,252,0,1,0,0,0,0,252,0,0,0,7,224,0,0,0,252,0,228,0,11,231,255,252,0,252,0,252,0,15,215,255,252,0,252,2,248,0,31,195,255,252,0,252,3,240,0,63,128,0,0,63,255,247,240,0,63,0,0,0,63,255,255,208,0,191,47,255,255,111,255,255,192,0,254,47,255,255,64,252,47,128,2,253,47,255,255,64,252,63,0,3,253,0,0,0,0,252,190,0,15,253,0,0,0,0,253,252,0,31,253,7,255,253,191,255,255,253,63,253,7,255,253,191,255,255,253,255,253,6,170,169,191,255,255,253,255,189,0,0,0,0,127,142,0,124,189,0,0,0,0,254,47,192,52,189,6,170,169,3,252,11,224,16,189,7,255,253,31,240,2,192,0,189,7,255,253,191,255,255,240,0,189,0,0,3,255,255,255,240,0,189,0,0,1,255,255,255,240,0,189,11,255,254,99,240,3,240,0,189,15,255,255,3,240,3,240,0,189,15,255,255,3,240,3,240,0,189,15,192,63,3,250,171,240,0,189,15,192,63,3,255,255,240,0,189,15,192,63,3,255,255,240,0,189,15,192,63,3,240,3,240,0,189,15,192,63,3,240,3,240,0,189,15,192,63,3,240,3,240,0,189,15,255,255,3,255,255,240,0,189,15,255,255,3,255,255,240,0,189,15,255,255,3,255,255,240,0,189,15,192,0,3,240,3,240,0,189,10,128,0,1,160,1,80, + // 0x5145 充 + 69,81,35,36,68,38,2,252,0,0,0,2,164,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,21,85,85,87,253,85,85,85,64,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,0,0,7,248,0,1,0,0,0,0,0,15,240,0,31,128,0,0,0,0,15,224,0,63,224,0,0,0,0,47,192,0,15,252,0,0,0,0,63,128,0,3,255,0,0,0,0,191,0,0,0,255,192,0,0,0,255,170,191,255,255,240,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,255,0,15,255,255,255,234,149,80,255,128,14,149,0,0,0,0,0,63,128,0,0,10,160,0,254,0,28,0,0,0,15,240,0,254,0,0,0,0,0,15,224,0,254,0,0,0,0,0,15,224,0,254,0,0,0,0,0,31,208,0,254,0,0,0,0,0,47,192,0,254,0,0,0,0,0,63,192,0,254,0,0,0,0,0,127,128,0,254,0,3,144,0,0,255,64,0,254,0,3,244,0,2,255,0,0,254,0,3,244,0,11,252,0,0,254,0,3,244,0,127,244,0,0,254,0,3,240,7,255,224,0,0,255,0,11,240,191,255,64,0,0,255,255,255,224,191,248,0,0,0,127,255,255,208,63,128,0,0,0,47,255,255,128,20,0,0,0,0,0,85,80,0, + // 0x5148 先 + 72,81,34,37,77,38,2,251,0,0,0,2,248,0,0,0,0,0,3,160,3,252,0,0,0,0,0,7,244,3,252,0,0,0,0,0,11,240,3,252,0,0,0,0,0,15,240,3,252,0,0,0,0,0,31,208,3,252,0,0,0,0,0,47,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,127,255,255,255,255,255,252,0,0,255,85,87,253,85,85,84,0,1,253,0,3,252,0,0,0,0,3,252,0,3,252,0,0,0,0,11,244,0,3,252,0,0,0,0,11,240,0,3,252,0,0,0,0,1,208,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,21,85,85,87,253,85,85,85,80,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,15,208,0,254,0,0,0,0,0,31,208,0,254,0,0,0,0,0,47,192,0,254,0,0,0,0,0,63,192,0,254,0,0,0,0,0,63,128,0,254,0,0,0,0,0,127,128,0,254,0,0,0,0,0,255,0,0,254,0,1,0,0,1,255,0,0,254,0,3,208,0,3,253,0,0,254,0,3,240,0,15,252,0,0,254,0,7,240,0,63,240,0,0,254,0,7,240,2,255,208,0,0,254,0,15,224,47,255,64,0,0,255,255,255,208,191,252,0,0,0,191,255,255,192,63,224,0,0,0,47,255,255,64,30,0,0,0,0,1,85,80,0,0,0,0,0,0,0,0,0,0, + // 0x5149 光 + 73,81,36,37,77,38,1,251,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,30,0,0,254,0,0,189,0,0,191,0,0,254,0,0,255,0,0,63,128,0,254,0,1,254,0,0,47,208,0,254,0,3,252,0,0,15,240,0,254,0,7,248,0,0,11,244,0,254,0,15,240,0,0,3,248,0,254,0,31,224,0,0,3,252,0,254,0,63,192,0,0,1,253,0,254,0,127,64,0,0,0,253,0,254,0,127,0,0,0,0,80,0,254,0,4,0,0,0,0,0,0,254,0,0,0,0,21,85,85,85,255,85,85,85,84,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,3,248,0,63,64,0,0,0,0,7,244,0,63,64,0,0,0,0,7,244,0,63,64,0,0,0,0,11,240,0,63,64,0,0,0,0,11,240,0,63,64,0,0,0,0,15,240,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,47,208,0,63,64,0,0,0,0,63,192,0,63,64,0,64,0,0,191,128,0,63,64,0,248,0,1,255,0,0,63,64,0,253,0,7,254,0,0,63,64,0,253,0,31,252,0,0,63,64,0,252,0,255,240,0,0,63,128,1,252,31,255,192,0,0,63,213,87,252,127,254,0,0,0,63,255,255,248,47,244,0,0,0,31,255,255,240,14,64,0,0,0,7,255,255,128,0,0,0,0,0,0,0,0,0, + // 0x5165 入 + 101,81,35,34,50,38,2,252,0,2,170,170,168,0,0,0,0,0,3,255,255,253,0,0,0,0,0,3,255,255,253,0,0,0,0,0,3,255,255,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,5,255,0,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,31,255,128,0,0,0,0,0,0,47,255,192,0,0,0,0,0,0,63,255,192,0,0,0,0,0,0,127,223,208,0,0,0,0,0,0,191,79,240,0,0,0,0,0,0,255,11,244,0,0,0,0,0,2,254,7,248,0,0,0,0,0,3,253,3,252,0,0,0,0,0,7,252,2,254,0,0,0,0,0,15,244,0,255,64,0,0,0,0,47,240,0,191,192,0,0,0,0,127,192,0,63,224,0,0,0,0,255,128,0,31,244,0,0,0,3,255,0,0,15,253,0,0,0,11,253,0,0,3,255,0,0,0,47,248,0,0,1,255,192,0,0,191,224,0,0,0,127,244,0,3,255,192,0,0,0,47,254,0,31,255,0,0,0,0,11,255,192,255,252,0,0,0,0,1,255,244,255,224,0,0,0,0,0,127,224,47,64,0,0,0,0,0,15,192,8,0,0,0,0,0,0,1,0, + // 0x5168 全 + 104,81,36,35,59,38,1,253,0,0,0,1,255,0,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,15,255,224,0,0,0,0,0,0,47,255,244,0,0,0,0,0,0,191,199,253,0,0,0,0,0,2,255,66,255,64,0,0,0,0,7,254,0,191,208,0,0,0,0,31,248,0,47,244,0,0,0,0,191,224,0,11,254,0,0,0,2,255,128,0,2,255,192,0,0,15,254,0,0,0,191,244,0,0,127,244,0,0,0,31,254,0,2,255,208,0,0,0,3,255,208,31,255,0,0,0,0,0,255,253,127,251,255,255,255,255,255,239,252,47,211,255,255,255,255,255,195,244,14,3,255,255,255,255,255,192,176,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240, + // 0x5171 共 + 113,81,34,36,68,38,2,252,0,0,106,0,0,10,144,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,21,85,191,85,85,95,245,85,64,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,0,0,191,0,0,15,224,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,85,85,85,85,85,85,80,0,0,0,0,0,0,0,0,0,0,0,4,0,0,5,0,0,0,0,0,63,144,0,63,128,0,0,0,0,191,208,0,191,240,0,0,0,3,255,64,0,31,253,0,0,0,15,253,0,0,3,255,128,0,0,127,244,0,0,0,255,240,0,2,255,208,0,0,0,47,252,0,31,255,0,0,0,0,7,255,0,127,248,0,0,0,0,1,255,192,31,208,0,0,0,0,0,127,64,6,0,0,0,0,0,0,24,0, + // 0x5177 具 + 119,81,34,34,50,38,2,252,0,31,255,255,255,255,255,128,0,0,31,255,255,255,255,255,128,0,0,31,250,170,170,170,191,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,234,170,170,170,191,128,0,0,31,255,255,255,255,255,128,0,0,31,255,255,255,255,255,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,234,170,170,170,191,128,0,0,31,255,255,255,255,255,128,0,0,31,255,255,255,255,255,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,255,255,255,255,255,128,0,0,31,255,255,255,255,255,128,0,0,31,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,21,85,85,85,85,85,85,85,64,0,0,11,0,0,9,0,0,0,0,0,127,208,0,63,224,0,0,0,11,255,240,0,255,255,64,0,0,191,255,64,0,31,255,244,0,47,255,244,0,0,1,191,255,128,191,255,64,0,0,0,11,255,240,47,228,0,0,0,0,0,191,128,9,0,0,0,0,0,0,9,0, + // 0x5197 冗 + 151,81,35,34,50,38,2,252,21,85,85,85,85,85,85,85,64,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,128,0,0,0,0,0,47,192,63,128,0,0,0,0,0,47,192,63,128,0,0,0,0,0,47,192,63,128,0,0,0,0,0,47,192,63,128,0,0,0,0,0,47,192,63,128,0,0,0,0,0,47,192,63,128,21,85,85,85,64,47,192,0,0,127,255,255,255,208,0,0,0,0,127,255,255,255,208,0,0,0,0,127,255,255,255,208,0,0,0,0,127,64,0,31,208,0,0,0,0,127,64,0,31,208,0,0,0,0,127,64,0,31,208,0,0,0,0,127,64,0,31,208,0,0,0,0,127,64,0,31,208,0,0,0,0,191,0,0,31,208,0,0,0,0,191,0,0,31,208,0,0,0,0,191,0,0,31,208,0,0,0,0,255,0,0,31,208,0,0,0,0,254,0,0,31,208,1,0,0,2,253,0,0,31,208,3,208,0,3,252,0,0,31,208,3,244,0,15,248,0,0,31,208,3,244,0,63,240,0,0,31,208,3,244,1,255,208,0,0,31,208,3,240,11,255,64,0,0,31,224,11,240,191,253,0,0,0,31,255,255,240,255,244,0,0,0,15,255,255,208,63,128,0,0,0,7,255,255,128,40,0,0,0,0,0,85,84,0, + // 0x51b7 冷 + 183,81,36,36,68,38,1,252,0,0,0,0,0,169,0,0,0,0,0,0,0,3,255,64,0,0,2,0,0,0,7,255,192,0,0,15,192,0,0,15,255,224,0,0,47,244,0,0,63,223,248,0,0,31,254,0,0,191,131,254,0,0,3,255,128,1,255,1,255,64,0,0,191,224,7,253,0,127,208,0,0,47,208,31,244,0,47,248,0,0,11,64,127,224,0,11,254,0,0,1,1,255,128,0,2,255,192,0,0,11,255,85,85,85,191,248,0,0,63,250,255,255,255,95,254,0,0,255,226,255,255,255,67,252,0,0,191,66,255,255,255,64,180,0,0,60,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,0,0,3,129,255,255,255,255,255,128,0,7,241,255,255,255,255,255,128,0,15,241,255,255,255,255,255,128,0,47,224,0,15,224,0,63,128,0,63,192,0,15,224,0,63,128,0,191,64,0,15,224,0,63,128,1,255,0,0,15,224,0,63,128,3,253,0,0,15,224,0,63,128,11,252,0,0,15,224,0,63,128,15,244,0,0,15,224,0,63,128,63,224,0,0,15,224,127,255,128,127,192,0,0,15,224,63,255,64,31,64,0,0,15,224,47,254,0,2,0,0,0,15,224,5,64,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,11,224,0,0,0, + // 0x51c6 准 + 198,81,36,36,68,38,1,252,0,0,0,0,36,0,5,0,0,0,0,0,0,191,0,15,224,0,0,0,0,0,255,0,31,208,0,3,192,0,1,253,0,47,192,0,15,244,0,2,252,0,63,128,0,15,254,0,3,248,0,127,0,0,2,255,192,11,240,0,191,0,0,0,127,240,15,240,0,254,0,0,0,31,240,47,255,255,255,255,248,0,3,208,127,255,255,255,255,248,0,0,64,255,255,255,255,255,248,0,0,2,255,192,2,248,0,0,0,0,11,255,192,2,248,0,0,0,0,31,255,192,2,248,0,0,0,0,127,239,192,2,248,0,0,0,0,63,143,255,255,255,255,224,0,0,15,15,255,255,255,255,224,0,0,0,15,255,255,255,255,224,0,0,0,15,208,3,248,0,0,0,1,0,15,192,2,248,0,0,0,3,128,15,192,2,248,0,0,0,15,224,15,192,2,248,0,0,0,31,240,15,192,2,248,0,0,0,63,192,15,255,255,255,255,224,0,191,128,15,255,255,255,255,224,0,255,0,15,255,255,255,255,224,3,253,0,15,208,3,248,0,0,7,252,0,15,192,2,248,0,0,15,240,0,15,192,2,248,0,0,63,224,0,15,192,2,248,0,0,127,192,0,15,213,87,253,85,84,31,64,0,15,255,255,255,255,253,6,0,0,15,255,255,255,255,253,0,0,0,15,255,255,255,255,253,0,0,0,15,192,0,0,0,0,0,0,0,15,192,0,0,0,0, + // 0x51fa 出 + 250,81,30,36,32,38,4,252,0,0,0,42,64,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,192,0,63,128,0,127,64,31,255,255,255,255,255,255,64,31,255,255,255,255,255,255,64,31,255,255,255,255,255,255,64,5,85,85,127,213,85,85,0,0,0,0,63,128,0,0,0,0,0,0,63,128,0,0,0,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,0,0,63,128,0,11,240,191,255,255,255,255,255,255,240,191,255,255,255,255,255,255,240,191,255,255,255,255,255,255,240,191,85,85,85,85,85,95,240,191,0,0,0,0,0,11,240,190,0,0,0,0,0,11,224, + // 0x5206 分 + 6,82,36,35,59,38,1,252,0,0,3,224,0,7,192,0,0,0,0,11,248,0,31,224,0,0,0,0,15,240,0,15,244,0,0,0,0,47,224,0,7,252,0,0,0,0,63,192,0,3,254,0,0,0,0,255,128,0,0,255,64,0,0,2,255,0,0,0,191,192,0,0,3,253,0,0,0,63,240,0,0,15,252,0,0,0,15,248,0,0,63,240,0,0,0,7,254,0,0,255,208,0,0,0,3,255,128,2,255,128,0,0,0,0,255,224,15,254,0,0,0,0,0,63,248,63,254,85,85,85,85,85,111,254,191,235,255,255,255,255,255,247,252,47,139,255,255,255,255,255,241,240,10,11,255,255,255,255,255,240,80,0,0,0,47,192,0,15,224,0,0,0,0,63,192,0,15,224,0,0,0,0,63,192,0,15,224,0,0,0,0,127,128,0,15,224,0,0,0,0,127,64,0,15,224,0,0,0,0,255,0,0,15,208,0,0,0,0,255,0,0,31,208,0,0,0,3,253,0,0,31,208,0,0,0,7,252,0,0,31,192,0,0,0,15,244,0,0,47,192,0,0,0,63,240,0,0,47,192,0,0,0,255,192,0,0,63,192,0,0,11,255,64,0,0,63,128,0,0,127,253,0,0,0,191,64,0,11,255,244,0,31,255,255,0,0,7,255,128,0,15,255,254,0,0,2,253,0,0,11,255,248,0,0,0,128,0,0,1,85,64,0,0, + // 0x5217 列 + 23,82,34,37,77,38,1,251,0,0,0,0,0,0,0,1,64,0,0,0,0,0,0,0,11,240,47,255,255,255,255,0,0,11,240,47,255,255,255,255,0,0,11,240,47,255,255,255,255,47,128,11,240,5,86,253,85,85,47,128,11,240,0,3,252,0,0,47,128,11,240,0,3,248,0,0,47,128,11,240,0,7,244,0,0,47,128,11,240,0,11,240,0,0,47,128,11,240,0,15,240,0,64,47,128,11,240,0,31,255,255,252,47,128,11,240,0,63,255,255,252,47,128,11,240,0,63,255,255,248,47,128,11,240,0,191,0,3,244,47,128,11,240,0,254,0,7,240,47,128,11,240,3,252,0,11,240,47,128,11,240,7,252,0,15,224,47,128,11,240,15,255,64,15,208,47,128,11,240,63,255,240,31,192,47,128,11,240,191,159,253,63,192,47,128,11,240,127,3,255,255,64,47,128,11,240,28,0,191,255,0,47,128,11,240,0,0,31,254,0,47,128,11,240,0,0,3,252,0,47,128,11,240,0,0,7,248,0,47,128,11,240,0,0,15,240,0,0,0,11,240,0,0,47,208,0,0,0,11,240,0,0,191,192,0,0,0,11,240,0,2,255,0,0,0,0,11,240,0,11,253,0,0,0,0,11,240,0,47,244,0,0,0,0,11,240,1,255,224,0,0,0,149,111,224,7,255,64,0,0,0,191,255,224,2,253,0,0,0,0,127,255,192,0,160,0,0,0,0,63,249,0,0,0,0,0,0,0,0,0,0, + // 0x521d 初 + 29,82,35,36,68,38,1,252,0,11,224,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,1,85,85,85,85,80,0,11,240,3,255,255,255,255,248,0,11,240,3,255,255,255,255,248,0,11,240,3,255,255,255,255,248,63,255,255,240,0,127,64,3,248,63,255,255,248,0,127,64,3,248,63,255,255,244,0,127,0,3,248,0,0,15,240,0,127,0,3,248,0,0,15,208,0,127,0,3,248,0,0,63,192,0,191,0,3,248,0,0,127,64,0,191,0,3,244,0,0,255,0,0,191,0,3,244,0,2,253,29,0,191,0,3,244,0,7,248,63,0,254,0,3,244,0,15,244,254,0,254,0,7,244,0,63,254,248,0,253,0,7,244,0,255,255,224,1,253,0,7,244,3,255,255,208,2,252,0,7,240,15,255,251,240,2,252,0,7,240,127,255,243,252,3,248,0,7,240,191,203,240,253,7,244,0,11,240,63,11,240,120,11,240,0,11,240,44,11,240,16,15,240,0,11,240,0,11,240,0,47,208,0,15,240,0,11,240,0,63,192,0,15,240,0,11,240,0,191,64,0,15,224,0,11,240,1,255,0,0,15,224,0,11,240,7,253,0,0,31,208,0,11,240,31,248,0,0,63,192,0,11,240,127,240,3,255,255,192,0,11,240,191,192,2,255,255,64,0,11,240,47,0,1,255,254,0,0,11,224,8,0,0,106,80,0, + // 0x5230 到 + 48,82,34,35,59,38,1,252,0,0,0,0,0,0,0,6,160,0,0,0,0,0,0,0,11,240,63,255,255,255,255,0,0,11,240,63,255,255,255,255,0,0,11,240,63,255,255,255,255,31,192,11,240,0,11,244,0,0,31,192,11,240,0,15,240,1,0,31,192,11,240,0,15,208,47,0,31,192,11,240,0,47,192,47,192,31,192,11,240,0,63,128,15,240,31,192,11,240,0,127,0,3,248,31,192,11,240,21,255,175,255,253,31,192,11,240,63,255,255,255,255,31,192,11,240,63,255,255,255,255,95,192,11,240,63,250,165,64,47,223,192,11,240,0,0,42,0,14,31,192,11,240,0,0,63,64,0,31,192,11,240,0,0,63,64,0,31,192,11,240,0,0,63,64,0,31,192,11,240,0,0,63,64,0,31,192,11,240,15,255,255,255,252,31,192,11,240,15,255,255,255,252,31,192,11,240,15,255,255,255,252,31,192,11,240,0,0,127,64,0,31,192,11,240,0,0,63,64,0,31,192,11,240,0,0,63,64,0,5,64,11,240,0,0,63,64,0,0,0,11,240,0,0,63,64,0,0,0,11,240,0,0,63,70,191,64,0,11,240,0,5,191,255,255,64,0,11,240,111,255,255,255,255,64,0,11,240,127,255,255,255,233,0,106,175,240,63,255,250,80,0,0,127,255,224,62,148,0,0,0,0,63,255,192,0,0,0,0,0,0,63,250,0, + // 0x5236 制 + 54,82,34,36,68,38,1,252,0,0,10,128,0,0,0,1,80,0,228,31,192,0,0,0,3,240,1,252,31,192,0,0,0,3,240,2,252,31,192,0,0,0,3,240,3,248,31,192,0,0,253,3,240,3,248,31,192,0,0,253,3,240,7,255,255,255,255,64,253,3,240,11,255,255,255,255,64,253,3,240,15,255,255,255,255,64,253,3,240,47,192,31,192,0,0,253,3,240,63,128,31,192,0,0,253,3,240,127,0,31,192,0,0,253,3,240,11,0,31,208,0,0,253,3,240,63,255,255,255,255,240,253,3,240,63,255,255,255,255,240,253,3,240,63,255,255,255,255,240,253,3,240,0,0,31,192,0,0,253,3,240,0,0,31,192,0,0,253,3,240,0,0,31,192,0,0,253,3,240,11,255,255,255,255,128,253,3,240,11,255,255,255,255,128,253,3,240,11,255,255,255,255,128,253,3,240,11,224,31,192,47,128,253,3,240,11,224,31,192,47,128,253,3,240,11,224,31,192,47,128,253,3,240,11,224,31,192,47,128,0,3,240,11,224,31,192,47,128,0,3,240,11,224,31,192,47,128,0,3,240,11,224,31,192,47,128,0,3,240,11,224,31,192,47,128,0,3,240,11,224,31,203,255,128,0,3,240,11,224,31,199,255,64,0,7,240,11,224,31,195,249,0,47,255,240,0,0,31,192,0,0,15,255,240,0,0,31,192,0,0,15,255,192,0,0,31,192,0,0,6,148,0, + // 0x5237 刷 + 55,82,34,36,68,38,1,252,0,0,0,0,0,0,0,1,80,0,0,0,0,0,0,0,7,240,3,255,255,255,255,192,0,7,240,3,255,255,255,255,192,0,7,240,3,255,255,255,255,195,244,7,240,3,240,0,0,47,195,244,7,240,3,240,0,0,47,195,244,7,240,3,240,0,0,47,195,244,7,240,3,240,0,0,47,195,244,7,240,3,240,0,0,47,195,244,7,240,3,255,255,255,255,195,244,7,240,3,255,255,255,255,195,244,7,240,3,255,255,255,255,195,244,7,240,3,240,0,252,0,3,244,7,240,3,240,0,252,0,3,244,7,240,3,240,0,252,0,3,244,7,240,3,240,0,252,0,3,244,7,240,3,251,255,255,255,195,244,7,240,3,251,255,255,255,195,244,7,240,3,251,255,255,255,195,244,7,240,3,251,192,252,15,195,244,7,240,7,251,192,252,15,195,244,7,240,7,235,192,252,15,195,244,7,240,7,235,192,252,15,195,244,7,240,11,235,192,252,15,195,244,7,240,11,219,192,252,15,194,244,7,240,15,219,192,252,15,192,0,7,240,15,203,192,252,15,192,0,7,240,31,203,192,253,255,192,0,7,240,47,139,192,252,255,128,0,7,240,63,75,192,252,254,0,0,7,240,127,1,64,252,0,0,0,7,240,190,0,0,252,0,0,63,255,240,61,0,0,252,0,0,31,255,224,8,0,0,252,0,0,15,255,192,0,0,0,168,0,0,10,148,0, + // 0x5275 創 + 117,82,34,37,77,38,1,251,0,0,5,64,0,0,0,0,0,0,0,47,244,0,0,0,11,240,0,0,127,254,0,0,0,11,240,0,0,255,255,128,0,0,11,240,0,3,253,63,240,0,0,11,240,0,15,248,15,252,15,208,11,240,0,63,224,3,255,15,208,11,240,0,255,213,86,255,207,208,11,240,7,255,255,255,255,143,208,11,240,47,249,255,255,143,15,208,11,240,127,224,0,0,0,15,208,11,240,47,64,0,0,0,15,208,11,240,8,255,255,255,253,15,208,11,240,0,255,255,255,253,15,208,11,240,0,254,170,170,253,15,208,11,240,0,252,0,0,253,15,208,11,240,0,255,255,255,253,15,208,11,240,0,255,255,255,253,15,208,11,240,0,253,0,0,253,15,208,11,240,0,252,0,0,253,15,208,11,240,0,254,170,170,253,15,208,11,240,0,255,255,255,253,15,208,11,240,0,255,255,255,253,15,208,11,240,0,252,0,0,0,15,208,11,240,1,252,0,0,0,15,208,11,240,2,254,170,170,170,15,208,11,240,3,255,255,255,255,0,0,11,240,3,255,255,255,255,0,0,11,240,7,255,192,0,63,0,0,11,240,15,239,192,0,63,0,0,11,240,31,207,192,0,63,0,0,11,240,63,207,192,0,63,0,0,11,240,127,79,255,255,255,0,105,111,240,62,15,255,255,255,0,127,255,224,12,15,234,170,191,0,63,255,192,0,15,192,0,42,0,63,254,0,0,0,0,0,0,0,0,0,0, + // 0x529b 力 + 155,82,33,37,77,38,2,251,0,0,0,47,128,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,26,170,170,191,234,170,170,170,64,63,255,255,255,255,255,255,255,64,63,255,255,255,255,255,255,255,64,63,255,255,255,255,255,255,255,64,0,0,0,63,128,0,0,127,0,0,0,0,63,128,0,0,127,0,0,0,0,127,64,0,0,191,0,0,0,0,191,64,0,0,191,0,0,0,0,191,0,0,0,191,0,0,0,0,255,0,0,0,191,0,0,0,0,254,0,0,0,255,0,0,0,2,253,0,0,0,255,0,0,0,3,252,0,0,0,254,0,0,0,7,252,0,0,0,254,0,0,0,15,244,0,0,0,254,0,0,0,31,240,0,0,0,253,0,0,0,63,224,0,0,1,253,0,0,0,191,192,0,0,1,253,0,0,1,255,64,0,0,2,252,0,0,3,255,0,0,0,3,252,0,0,15,252,0,0,0,3,252,0,0,63,244,0,0,0,3,248,0,1,255,224,0,0,0,11,244,0,11,255,128,0,0,0,31,240,0,63,253,0,0,7,255,255,240,0,191,244,0,0,3,255,255,192,0,47,192,0,0,2,255,255,64,0,10,0,0,0,0,90,80,0,0,0,0,0,0,0,0,0,0,0, + // 0x52a0 加 + 160,82,34,36,68,38,1,252,0,1,64,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,21,85,85,80,0,15,224,0,0,127,255,255,224,0,15,224,0,0,127,255,255,224,21,95,245,85,80,127,255,255,224,63,255,255,255,240,127,0,15,224,63,255,255,255,240,127,0,15,224,63,255,255,255,240,127,0,15,224,0,15,208,11,240,127,0,15,224,0,15,208,11,224,127,0,15,224,0,15,208,11,224,127,0,15,224,0,15,192,11,224,127,0,15,224,0,31,192,11,224,127,0,15,224,0,31,192,15,224,127,0,15,224,0,31,192,15,224,127,0,15,224,0,47,192,15,224,127,0,15,224,0,47,192,15,224,127,0,15,224,0,63,128,15,224,127,0,15,224,0,63,64,15,208,127,0,15,224,0,63,64,15,208,127,0,15,224,0,127,0,15,208,127,0,15,224,0,191,0,15,208,127,0,15,224,0,255,0,15,208,127,0,15,224,1,253,0,15,208,127,0,15,224,2,252,0,31,192,127,0,15,224,3,252,0,31,192,127,0,15,224,7,244,0,47,192,127,255,255,224,15,240,0,63,192,127,255,255,224,47,224,85,191,128,127,255,255,224,127,192,191,255,64,127,85,95,224,127,128,127,255,0,127,0,15,224,31,0,63,248,0,127,0,15,224,4,0,0,0,0,0,0,0,0, + // 0x52d5 動 + 213,82,35,37,77,38,1,251,0,0,0,0,64,0,84,0,0,0,0,22,191,240,2,252,0,0,43,255,255,255,244,2,252,0,0,47,255,255,255,164,2,252,0,0,31,250,255,0,0,2,252,0,0,0,0,127,0,0,2,252,0,0,0,0,127,0,0,2,252,0,0,127,255,255,255,253,2,252,0,0,127,255,255,255,253,2,252,0,0,42,170,255,85,87,255,255,255,248,0,0,127,0,2,255,255,255,248,5,85,191,255,250,255,255,255,248,31,255,255,255,252,2,249,87,248,31,255,255,255,252,3,248,3,248,31,128,127,0,252,3,244,3,244,31,128,127,0,252,3,244,3,244,31,255,255,255,252,3,244,3,244,31,255,255,255,252,3,240,3,244,31,128,191,1,252,7,240,3,244,31,128,127,0,252,7,240,3,244,31,149,191,85,252,11,240,3,244,31,255,255,255,252,11,224,3,244,31,255,255,255,252,15,208,3,240,0,0,127,0,0,31,192,3,240,0,0,127,0,0,47,192,7,240,10,170,255,170,168,63,128,7,240,31,255,255,255,252,63,64,7,240,31,255,255,255,252,255,0,7,240,0,0,127,0,1,254,0,11,240,0,0,127,0,3,252,0,11,240,0,21,191,107,255,244,0,15,224,127,255,255,255,255,240,0,15,208,63,255,255,234,255,192,16,47,208,63,165,64,0,255,64,127,255,192,0,0,0,0,61,0,63,255,64,0,0,0,0,20,0,63,253,0,0,0,0,0,0,0,0,0,0, + // 0x5316 化 + 22,83,36,35,59,38,1,252,0,0,15,144,47,192,0,0,0,0,0,31,224,47,192,0,0,0,0,0,63,192,47,192,0,0,0,0,0,127,128,47,192,0,0,0,0,0,255,64,47,192,0,0,0,0,1,255,0,47,192,0,0,0,0,3,252,0,47,192,0,0,0,0,11,248,0,47,192,0,11,64,0,31,240,0,47,192,0,63,192,0,63,240,0,47,192,1,255,224,0,255,240,0,47,192,11,255,128,2,255,240,0,47,192,127,253,0,11,255,240,0,47,194,255,240,0,47,255,240,0,47,223,255,64,0,191,251,240,0,47,255,248,0,0,255,203,240,0,47,255,128,0,0,127,75,240,0,47,253,0,0,0,61,11,240,0,47,208,0,0,0,20,11,240,0,47,192,0,0,0,0,11,240,0,47,192,0,0,0,0,11,240,0,47,192,0,0,0,0,11,240,0,47,192,0,0,0,0,11,240,0,47,192,0,0,0,0,11,240,0,47,192,0,0,0,0,11,240,0,47,192,0,0,80,0,11,240,0,47,192,0,0,189,0,11,240,0,47,192,0,0,254,0,11,240,0,47,192,0,0,254,0,11,240,0,47,192,0,0,253,0,11,240,0,47,192,0,1,252,0,11,240,0,47,208,0,3,252,0,11,240,0,31,255,255,255,248,0,11,240,0,15,255,255,255,240,0,11,240,0,2,255,255,255,208,0,11,224,0,0,5,85,84,0, + // 0x534a 半 + 74,83,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,24,0,3,248,0,3,144,0,1,253,0,3,248,0,11,248,0,0,255,0,3,248,0,15,240,0,0,127,128,3,248,0,47,224,0,0,63,192,3,248,0,63,192,0,0,31,224,3,248,0,127,128,0,0,15,240,3,248,0,255,0,0,0,7,248,3,248,2,253,0,0,0,3,248,3,248,3,252,0,0,0,2,128,3,248,0,112,0,0,0,0,0,3,248,0,0,0,0,5,85,85,87,253,85,85,85,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,106,170,170,171,254,170,170,170,144,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0, + // 0x5354 協 + 84,83,35,36,68,38,1,252,0,63,64,0,0,31,128,0,0,0,63,64,0,0,47,128,0,0,0,63,64,0,0,47,128,0,0,0,63,64,0,0,63,64,0,0,0,63,64,15,255,255,255,255,208,0,63,64,15,255,255,255,255,208,0,63,64,15,255,255,255,255,208,0,63,64,0,0,253,0,15,208,0,63,64,0,2,252,0,15,192,0,63,64,0,3,248,0,15,192,127,255,255,128,15,240,0,31,192,127,255,255,128,127,192,0,47,192,127,255,255,130,255,64,0,63,128,0,63,128,111,252,0,191,255,64,0,63,64,63,224,0,63,254,0,0,63,64,14,0,0,63,244,0,0,63,64,10,128,0,6,144,0,0,63,64,15,192,0,11,224,0,0,63,64,15,192,0,11,224,0,0,63,64,15,192,0,11,224,0,0,63,70,175,234,162,175,250,168,0,63,71,255,255,243,255,255,252,0,63,71,255,255,243,255,255,252,0,63,64,15,131,240,15,192,252,0,63,64,31,131,240,15,192,252,0,63,64,47,67,240,15,192,252,0,63,64,47,3,240,31,128,248,0,63,64,63,3,240,63,64,248,0,63,64,126,3,240,63,1,248,0,63,64,189,3,240,126,1,248,0,63,64,252,3,224,253,1,244,0,63,66,248,7,226,252,2,244,0,63,75,240,11,215,244,3,244,0,63,95,209,255,223,224,255,240,0,63,75,128,255,199,128,191,224,0,42,66,0,249,1,0,122,64, + // 0x5361 卡 + 97,83,34,36,68,38,2,252,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,245,85,85,80,0,0,0,0,11,255,255,255,240,0,0,0,0,11,255,255,255,240,0,0,0,0,11,255,255,255,240,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,85,95,249,85,85,85,80,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,246,64,0,0,0,0,0,0,11,255,249,0,0,0,0,0,0,11,255,255,224,0,0,0,0,0,11,251,255,255,64,0,0,0,0,11,240,111,255,248,0,0,0,0,11,240,1,255,252,0,0,0,0,11,240,0,11,248,0,0,0,0,11,240,0,0,176,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0, + // 0x5370 印 + 112,83,31,36,32,38,4,252,0,0,6,0,0,0,0,0,0,0,127,128,0,0,0,0,0,7,255,224,0,0,0,0,0,191,255,145,255,255,255,252,255,255,248,1,255,255,255,252,255,255,64,1,255,255,255,252,255,208,0,1,254,85,87,252,254,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,254,85,85,65,253,0,2,252,255,255,255,209,253,0,2,252,255,255,255,209,253,0,2,252,255,255,255,209,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,253,0,0,1,253,0,2,252,254,85,85,65,253,0,2,252,255,255,255,225,253,10,171,252,255,255,255,225,253,7,255,248,255,255,255,225,253,3,255,244,253,0,0,1,253,2,255,128,253,0,0,1,253,0,0,0,253,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,168,0,0,0, + // 0x5378 卸 + 120,83,34,36,68,38,1,252,0,30,64,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,64,0,0,21,85,85,80,0,191,0,0,0,127,255,255,240,0,255,255,255,248,127,255,255,240,1,255,255,255,248,127,255,255,240,3,255,255,255,248,127,0,7,240,11,240,63,64,0,127,0,7,240,31,224,63,64,0,127,0,7,240,63,192,63,64,0,127,0,7,240,15,64,63,64,0,127,0,7,240,1,0,63,64,0,127,0,7,240,63,255,255,255,253,127,0,7,240,63,255,255,255,253,127,0,7,240,63,255,255,255,253,127,0,7,240,0,0,63,64,0,127,0,7,240,0,0,63,64,0,127,0,7,240,0,0,63,64,0,127,0,7,240,3,240,63,64,0,127,0,7,240,3,240,63,64,0,127,0,7,240,3,240,63,255,240,127,0,7,240,3,240,63,255,240,127,0,7,240,3,240,63,255,240,127,0,7,240,3,240,63,64,0,127,0,7,240,3,240,63,64,0,127,0,7,240,3,240,63,64,0,127,0,7,240,3,240,63,64,0,127,6,175,240,3,240,63,64,4,127,7,255,240,3,240,63,171,253,127,3,255,208,3,246,255,255,253,127,2,254,64,111,255,255,255,253,127,0,0,0,191,255,255,249,64,127,0,0,0,127,255,164,0,0,127,0,0,0,58,64,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0, + // 0x537b 卻 + 123,83,34,36,68,38,1,252,0,0,21,0,0,0,0,0,0,0,0,127,208,0,0,0,0,0,0,0,255,248,0,127,255,255,240,0,3,255,255,0,127,255,255,240,0,11,248,255,192,127,255,255,240,0,47,224,63,240,127,85,91,240,0,255,192,15,252,127,0,7,240,7,255,0,3,254,127,0,7,240,47,248,0,0,252,127,0,7,240,31,224,0,0,48,127,0,7,240,7,64,63,192,0,127,0,7,240,0,0,255,240,0,127,0,7,240,0,1,255,252,0,127,0,7,240,0,3,254,255,0,127,0,7,240,0,15,240,127,192,127,0,7,240,0,63,208,47,240,127,0,7,240,0,255,128,11,248,127,0,7,240,3,254,0,2,253,127,0,7,240,15,248,0,0,255,127,0,7,240,127,224,0,0,60,127,0,7,240,127,255,255,255,244,127,0,7,240,46,255,255,255,208,127,0,7,240,4,255,255,255,208,127,0,7,240,0,253,0,15,208,127,0,7,240,0,253,0,15,208,127,0,7,240,0,253,0,15,208,127,6,175,240,0,253,0,15,208,127,7,255,240,0,253,0,15,208,127,3,255,208,0,253,0,15,208,127,3,254,64,0,253,0,15,208,127,0,0,0,0,255,255,255,208,127,0,0,0,0,255,255,255,208,127,0,0,0,0,255,255,255,208,127,0,0,0,0,253,0,15,208,127,0,0,0,0,253,0,11,208,127,0,0,0,0,20,0,0,0,63,0,0,0, + // 0x539f 原 + 159,83,35,34,50,38,1,252,0,255,255,255,255,255,255,255,252,0,255,255,255,255,255,255,255,252,0,255,255,255,255,255,255,255,252,0,253,0,0,11,252,0,0,0,0,253,0,0,11,248,0,0,0,0,253,0,0,11,244,0,0,0,0,253,0,0,15,240,0,0,0,0,253,11,255,255,255,255,255,0,0,253,11,255,255,255,255,255,0,0,253,11,250,170,170,170,255,0,0,253,11,240,0,0,0,255,0,0,253,11,240,0,0,0,255,0,0,253,11,250,170,170,170,255,0,0,253,11,255,255,255,255,255,0,0,253,11,255,255,255,255,255,0,1,252,11,240,0,0,0,255,0,1,252,11,240,0,0,0,255,0,1,252,11,240,0,0,0,255,0,1,252,11,255,255,255,255,255,0,2,252,11,255,255,255,255,255,0,2,252,6,170,171,254,170,170,0,2,248,0,0,2,248,0,0,0,3,248,0,16,2,248,1,64,0,3,244,0,191,2,248,11,208,0,7,244,1,254,2,248,15,244,0,7,240,3,252,2,248,3,253,0,11,240,15,244,2,248,0,255,64,15,224,63,224,2,248,0,63,208,15,208,255,192,2,248,0,31,240,47,199,255,0,2,248,0,7,252,63,203,252,0,3,248,0,2,252,127,65,240,11,255,248,0,0,208,47,0,0,3,255,240,0,0,0,5,0,0,3,255,128,0,0,0, + // 0x53cd 反 + 205,83,34,34,50,38,2,252,0,85,85,85,85,85,85,85,0,0,191,255,255,255,255,255,255,64,0,191,255,255,255,255,255,255,64,0,191,255,255,255,255,255,255,64,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,255,255,255,255,255,224,0,0,191,255,255,255,255,255,244,0,0,191,255,255,255,255,255,240,0,0,191,95,245,85,85,111,224,0,0,191,11,240,0,0,63,208,0,0,190,7,248,0,0,127,192,0,0,254,3,252,0,0,255,64,0,0,254,1,254,0,0,255,0,0,0,254,0,255,0,2,254,0,0,0,253,0,127,192,7,252,0,0,1,252,0,63,224,31,244,0,0,1,252,0,15,244,63,224,0,0,2,252,0,11,253,255,192,0,0,3,252,0,3,255,255,64,0,0,3,248,0,0,255,253,0,0,0,7,244,0,0,127,252,0,0,0,11,240,0,2,255,255,0,0,0,15,224,0,31,255,255,224,0,0,31,208,1,255,253,191,254,0,0,63,192,111,255,224,31,255,244,0,191,135,255,255,0,2,255,255,208,255,3,255,244,0,0,127,255,192,46,1,254,0,0,0,2,255,64,4,0,144,0,0,0,0,26,0, + // 0x53d6 取 + 214,83,36,34,50,38,1,252,21,85,85,85,84,0,0,0,0,63,255,255,255,254,0,0,0,0,63,255,255,255,254,0,0,0,0,63,255,255,255,255,170,170,170,144,1,252,0,31,199,255,255,255,244,1,252,0,31,199,255,255,255,240,1,252,0,31,199,255,255,255,240,1,252,0,31,194,180,0,11,240,1,255,255,255,195,252,0,15,240,1,255,255,255,193,252,0,15,224,1,255,255,255,192,253,0,31,208,1,252,0,47,192,254,0,31,192,1,252,0,31,192,191,0,47,192,1,252,0,31,192,127,0,63,128,1,252,0,31,192,63,64,127,64,1,252,0,31,192,63,192,191,0,1,255,255,255,192,47,192,254,0,1,255,255,255,192,15,225,253,0,1,255,255,255,192,15,243,252,0,1,253,0,47,192,7,255,248,0,1,252,0,31,192,3,255,240,0,1,252,0,31,192,2,255,224,0,1,252,0,31,192,0,255,192,0,1,252,0,111,192,0,255,192,0,1,254,191,255,192,1,255,224,0,175,255,255,255,192,7,255,244,0,191,255,255,255,192,15,255,252,0,191,255,229,31,192,127,243,255,0,126,144,0,31,193,255,192,255,208,0,0,0,31,203,255,0,63,248,0,0,0,31,255,252,0,31,254,0,0,0,31,207,224,0,3,252,0,0,0,31,199,64,0,0,180,0,0,0,31,192,0,0,0,0, + // 0x53f0 台 + 240,83,34,36,68,38,2,252,0,0,0,228,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,244,0,0,64,0,0,0,0,31,240,0,11,208,0,0,0,0,63,208,0,31,244,0,0,0,0,191,192,0,11,254,0,0,0,0,255,0,0,2,255,128,0,0,2,254,0,0,0,191,224,0,0,7,252,0,0,0,63,244,0,106,175,254,255,255,255,255,253,0,127,255,255,255,255,255,255,255,64,127,255,255,255,255,255,255,255,192,127,255,254,170,149,84,0,63,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,11,128,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,149,85,85,85,111,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,64,0,0,0,47,192,0,0,63,149,85,85,85,111,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,64,0,0,0,47,192,0,0,42,64,0,0,0,26,128,0, + // 0x5408 合 + 8,84,36,36,68,38,1,252,0,0,0,1,254,0,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,11,255,208,0,0,0,0,0,0,31,255,244,0,0,0,0,0,0,127,219,252,0,0,0,0,0,1,255,131,255,0,0,0,0,0,3,255,0,255,208,0,0,0,0,15,252,0,63,244,0,0,0,0,127,240,0,15,254,0,0,0,1,255,192,0,3,255,192,0,0,11,255,0,0,0,255,244,0,0,63,252,0,0,0,47,254,0,2,255,240,0,0,0,11,255,224,31,254,191,255,255,255,254,191,253,127,244,127,255,255,255,253,31,253,63,192,127,255,255,255,253,2,248,13,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,240,0,0,11,240,0,0,0,15,240,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,240,0,0,0,15,240,0,0,7,224,0,0,0,11,224,0, + // 0x5426 否 + 38,84,35,34,50,38,1,252,31,255,255,255,255,255,255,255,244,31,255,255,255,255,255,255,255,244,31,255,255,255,255,255,255,255,244,5,85,85,85,127,245,85,85,80,0,0,0,0,255,208,0,0,0,0,0,0,3,255,64,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,191,254,7,208,0,0,0,0,3,255,254,31,253,0,0,0,0,47,255,254,31,255,192,0,0,2,255,248,254,1,255,248,0,0,47,255,192,254,0,31,255,64,7,255,254,0,254,0,2,255,240,127,255,224,0,254,0,0,127,252,63,254,0,0,254,0,0,11,248,15,224,0,0,254,0,0,1,224,6,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,255,248,0,0,31,255,255,255,255,255,248,0,0,31,255,255,255,255,255,248,0,0,31,208,0,0,0,7,248,0,0,31,208,0,0,0,3,248,0,0,31,208,0,0,0,3,248,0,0,31,208,0,0,0,3,248,0,0,31,208,0,0,0,3,248,0,0,31,208,0,0,0,3,248,0,0,31,208,0,0,0,3,248,0,0,31,255,255,255,255,255,248,0,0,31,255,255,255,255,255,248,0,0,31,255,255,255,255,255,248,0,0,31,208,0,0,0,7,248,0,0,31,192,0,0,0,3,248,0, + // 0x544a 告 + 74,84,34,37,77,38,2,251,0,1,0,0,190,0,0,0,0,0,7,244,0,255,0,0,0,0,0,11,240,0,255,0,0,0,0,0,15,240,0,255,0,0,0,0,0,31,208,0,255,0,0,0,0,0,63,208,0,255,0,0,0,0,0,127,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,2,255,255,255,255,255,255,252,0,7,252,0,0,255,0,0,0,0,31,240,0,0,255,0,0,0,0,63,208,0,0,255,0,0,0,0,11,128,0,0,255,0,0,0,0,1,0,0,0,255,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,21,85,85,85,85,85,85,85,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,149,85,85,85,95,224,0,0,63,128,0,0,0,15,224,0,0,63,128,0,0,0,15,224,0,0,63,128,0,0,0,15,224,0,0,63,128,0,0,0,15,224,0,0,63,128,0,0,0,15,224,0,0,63,149,85,85,85,95,224,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,128,0,0,0,15,224,0,0,63,128,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0, + // 0x547d 命 + 125,84,36,37,77,38,1,251,0,0,0,2,255,0,0,0,0,0,0,0,7,255,192,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,63,255,248,0,0,0,0,0,1,255,199,255,0,0,0,0,0,7,255,1,255,192,0,0,0,0,31,252,0,127,244,0,0,0,0,191,240,0,15,254,0,0,0,7,255,128,0,3,255,208,0,0,47,254,0,0,0,191,248,0,1,255,255,255,255,255,255,255,128,31,255,139,255,255,255,226,255,248,255,253,11,255,255,255,224,127,255,127,224,0,0,0,0,0,7,252,46,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,0,0,0,255,255,255,3,255,255,255,64,0,255,255,255,3,255,255,255,64,0,255,255,255,3,255,255,255,64,0,253,0,63,3,244,0,63,64,0,253,0,63,3,244,0,63,64,0,253,0,63,3,244,0,63,64,0,253,0,63,3,244,0,63,64,0,253,0,63,3,244,0,63,64,0,253,0,63,3,244,0,63,64,0,253,0,63,3,244,0,63,64,0,253,0,63,3,244,0,63,64,0,255,255,255,3,244,0,63,64,0,255,255,255,3,244,0,127,64,0,255,255,255,3,244,127,255,0,0,253,0,0,3,244,63,255,0,0,253,0,0,3,244,63,248,0,0,253,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x548c 和 + 140,84,34,36,68,38,1,252,0,0,0,5,0,0,0,0,0,0,0,1,191,0,0,0,0,0,0,5,191,255,192,0,0,0,0,26,255,255,255,129,85,85,85,64,31,255,255,144,3,255,255,255,208,15,254,254,0,3,255,255,255,208,4,0,254,0,3,255,255,255,208,0,0,254,0,3,244,0,15,208,0,0,254,0,3,244,0,15,208,0,0,254,0,3,244,0,15,208,0,0,254,0,3,244,0,15,208,21,85,254,85,67,244,0,15,208,63,255,255,255,227,244,0,15,208,63,255,255,255,227,244,0,15,208,63,255,255,255,227,244,0,15,208,0,3,254,0,3,244,0,15,208,0,7,255,0,3,244,0,15,208,0,15,255,192,3,244,0,15,208,0,15,255,240,3,244,0,15,208,0,47,255,252,3,244,0,15,208,0,63,254,254,3,244,0,15,208,0,189,254,127,67,244,0,15,208,1,252,254,47,211,244,0,15,208,3,248,254,15,211,244,0,15,208,11,240,254,7,131,244,0,15,208,31,224,254,2,3,244,0,15,208,63,192,254,0,3,244,0,15,208,191,64,254,0,3,249,85,111,208,126,0,254,0,3,255,255,255,208,44,0,254,0,3,255,255,255,208,0,0,254,0,3,255,255,255,208,0,0,254,0,3,244,0,15,208,0,0,254,0,3,244,0,15,208,0,0,254,0,3,244,0,15,208,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0, + // 0x555f 啟 + 95,85,36,36,68,38,1,252,0,0,108,0,0,0,164,0,0,0,0,254,0,0,0,253,0,0,0,0,191,0,0,0,252,0,0,0,0,63,64,0,1,252,0,0,0,0,63,128,0,2,252,0,0,3,255,255,255,240,2,248,0,0,3,255,255,255,240,3,244,0,0,3,255,255,255,240,3,245,85,84,3,244,0,3,240,11,255,255,253,3,244,0,3,240,15,255,255,253,3,244,0,3,240,15,255,255,253,3,244,0,3,240,47,192,15,208,3,244,0,3,240,63,192,15,208,3,244,0,3,240,127,208,15,192,3,255,255,255,240,255,224,31,192,3,255,255,255,241,255,240,47,192,3,255,255,255,247,255,240,47,128,3,244,0,0,2,247,240,63,64,3,244,0,0,0,178,248,63,0,3,240,0,0,0,0,252,127,0,3,240,0,0,0,0,252,190,0,3,247,255,255,248,0,190,253,0,7,247,255,255,248,0,127,252,0,7,247,255,255,248,0,63,248,0,11,231,224,1,248,0,47,244,0,11,231,224,1,248,0,31,240,0,15,215,224,1,248,0,31,240,0,15,199,224,1,248,0,63,244,0,31,199,224,1,248,0,255,252,0,47,199,224,1,248,2,255,255,0,63,135,255,255,248,11,252,127,128,127,7,255,255,248,47,240,47,224,191,7,255,255,249,255,208,15,252,45,7,224,1,249,255,64,3,253,4,7,224,1,164,188,0,0,244,0,1,80,0,0,32,0,0,16, + // 0x55ae 單 + 174,85,34,35,59,38,2,252,1,85,85,84,1,85,85,84,0,3,255,255,254,11,255,255,253,0,3,255,255,254,11,255,255,253,0,3,240,0,190,11,224,0,253,0,3,240,0,190,11,224,0,253,0,3,240,0,190,11,224,0,253,0,3,255,255,254,11,255,255,253,0,3,255,255,254,11,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,244,0,0,255,255,255,255,255,255,244,0,0,255,255,255,255,255,255,244,0,0,253,0,3,248,0,3,244,0,0,253,0,3,248,0,3,244,0,0,255,170,171,254,170,171,244,0,0,255,255,255,255,255,255,244,0,0,255,255,255,255,255,255,244,0,0,253,0,3,248,0,3,244,0,0,253,0,3,248,0,3,244,0,0,253,0,3,248,0,3,244,0,0,255,255,255,255,255,255,244,0,0,255,255,255,255,255,255,244,0,0,255,255,255,255,255,255,244,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0, + // 0x5634 嘴 + 52,86,34,37,77,38,3,251,0,0,0,2,224,11,208,0,0,0,0,0,3,240,11,208,0,0,0,0,0,3,240,11,208,24,0,255,255,131,195,240,11,209,255,0,255,255,131,195,250,155,239,253,0,255,255,131,195,255,235,255,208,0,248,31,131,195,255,235,253,0,0,244,15,131,195,240,11,224,0,0,244,15,131,195,240,11,208,1,0,244,15,131,195,240,11,208,3,208,244,15,131,195,251,235,208,7,208,244,15,155,255,255,247,250,175,192,244,15,191,255,255,147,255,255,128,244,15,191,255,252,1,255,254,0,244,15,153,3,253,85,64,0,0,244,15,128,11,255,255,224,0,0,244,15,128,47,255,255,240,0,0,244,15,128,191,64,31,192,0,0,244,15,130,255,85,127,149,84,0,244,15,159,255,255,255,255,253,0,244,15,255,255,255,255,255,253,0,255,255,159,254,0,252,0,253,0,255,255,128,190,0,252,0,253,0,255,255,128,191,255,255,255,253,0,248,0,0,191,255,255,255,253,0,244,0,0,190,0,252,0,253,0,244,0,0,253,0,252,0,253,0,244,0,0,253,0,252,0,253,0,0,0,0,255,255,255,255,253,0,0,0,2,255,255,255,255,253,0,0,0,3,249,85,85,85,253,0,0,0,11,240,0,0,0,253,0,0,0,47,224,0,0,0,253,0,0,0,191,192,0,1,170,253,0,0,0,255,0,0,1,255,252,0,0,0,44,0,0,0,255,224,0,0,0,0,0,0,0,0,0,0, + // 0x5668 器 + 104,86,36,35,59,38,1,251,1,255,255,255,0,255,255,255,64,1,255,255,255,0,255,255,255,64,1,255,255,255,0,255,255,255,64,1,252,0,127,0,252,0,63,64,1,252,0,127,0,252,0,63,64,1,252,0,127,0,252,0,63,64,1,252,0,127,0,252,0,63,64,1,252,0,127,0,252,0,63,64,1,255,255,255,0,255,255,255,64,1,255,255,255,64,255,255,255,64,1,255,255,255,248,255,255,255,64,0,0,0,7,252,0,0,0,0,0,0,0,15,240,0,0,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,31,252,0,63,224,0,0,0,0,191,240,0,15,252,0,0,0,3,255,192,0,3,255,64,0,0,47,254,0,0,0,255,240,0,6,255,244,0,0,0,47,255,64,127,255,255,255,65,255,255,255,249,191,255,255,255,65,255,255,255,254,63,255,255,255,65,255,255,255,252,30,253,0,63,65,248,0,127,112,0,253,0,63,65,248,0,127,0,0,253,0,63,65,248,0,127,0,0,253,0,63,65,248,0,127,0,0,253,0,63,65,248,0,127,0,0,253,0,63,65,248,0,127,0,0,255,255,255,65,255,255,255,0,0,255,255,255,65,255,255,255,0,0,255,255,255,65,255,255,255,0,0,253,0,63,65,248,0,127,0,0,0,0,0,0,0,0,0,0, + // 0x5674 噴 + 116,86,34,37,77,38,3,251,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,253,0,0,0,0,0,1,255,255,255,255,255,0,255,255,225,255,255,255,255,255,0,255,255,224,85,85,254,85,85,0,255,255,224,6,144,253,10,128,0,252,11,224,11,208,253,15,192,0,252,11,224,11,208,0,15,192,0,252,11,239,255,255,255,255,255,208,252,11,239,255,255,255,255,255,208,252,11,229,95,229,85,111,213,64,252,11,224,11,208,0,15,192,0,252,11,224,5,64,0,5,64,0,252,11,224,191,255,255,255,252,0,252,11,224,191,255,255,255,252,0,252,11,224,190,0,0,1,252,0,252,11,224,190,0,0,1,252,0,252,11,224,190,0,0,1,252,0,252,11,224,191,255,255,255,252,0,252,11,224,191,255,255,255,252,0,252,11,224,190,0,0,1,252,0,255,255,224,190,0,0,1,252,0,255,255,224,191,255,255,255,252,0,255,255,224,191,255,255,255,252,0,252,0,0,190,0,0,1,252,0,252,0,0,190,0,0,1,252,0,252,0,0,190,0,0,1,252,0,84,0,0,191,255,255,255,252,0,0,0,0,191,255,255,255,252,0,0,0,0,2,228,0,125,0,0,0,0,0,47,252,1,255,208,0,0,0,6,255,224,0,47,253,0,0,0,191,255,0,0,3,255,128,0,0,127,224,0,0,0,127,192,0,0,29,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0, + // 0x56de 回 + 222,86,32,35,24,38,3,252,170,170,170,170,170,170,170,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,191,255,255,253,0,255,255,0,191,255,255,253,0,255,255,0,191,255,255,253,0,255,255,0,190,0,0,253,0,255,255,0,190,0,0,253,0,255,255,0,190,0,0,253,0,255,255,0,190,0,0,253,0,255,255,0,190,0,0,253,0,255,255,0,190,0,0,253,0,255,255,0,190,0,0,253,0,255,255,0,191,0,0,253,0,255,255,0,191,255,255,253,0,255,255,0,191,255,255,253,0,255,255,0,191,255,255,253,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255,255,85,85,85,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,255,255,0,0,0,0,0,0,255, + // 0x56e0 因 + 224,86,32,34,16,38,3,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,85,85,85,255,254,0,0,5,64,0,0,191,254,0,0,15,208,0,0,191,254,0,0,15,208,0,0,191,254,0,0,15,208,0,0,191,254,0,0,15,208,0,0,191,254,0,0,15,208,0,0,191,254,47,255,255,255,255,248,191,254,47,255,255,255,255,248,191,254,47,255,255,255,255,248,191,254,0,0,47,244,0,0,191,254,0,0,63,244,0,0,191,254,0,0,63,252,0,0,191,254,0,0,127,252,0,0,191,254,0,0,255,190,0,0,191,254,0,1,253,63,64,0,191,254,0,3,252,63,192,0,191,254,0,11,248,31,224,0,191,254,0,47,240,11,252,0,191,254,0,191,208,3,255,64,191,254,7,255,64,0,255,224,191,254,63,252,0,0,63,248,191,254,15,224,0,0,11,224,191,254,7,0,0,0,1,192,191,254,0,0,0,0,0,0,191,255,85,85,85,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,0,0,0,0,0,0,191,190,0,0,0,0,0,0,190, + // 0x56fa 固 + 250,86,32,35,24,38,3,251,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,85,85,85,85,85,85,255,191,0,0,0,0,0,0,255,191,0,0,11,224,0,0,255,191,0,0,11,224,0,0,255,191,0,0,11,224,0,0,255,191,0,0,11,224,0,0,255,191,15,255,255,255,255,244,255,191,15,255,255,255,255,244,255,191,15,255,255,255,255,240,255,191,0,0,11,224,0,0,255,191,0,0,11,224,0,0,255,191,0,0,11,224,0,0,255,191,0,170,175,250,170,0,255,191,0,255,255,255,255,0,255,191,0,255,255,255,255,0,255,191,0,252,0,0,63,0,255,191,0,252,0,0,63,0,255,191,0,252,0,0,63,0,255,191,0,252,0,0,63,0,255,191,0,252,0,0,63,0,255,191,0,255,255,255,255,0,255,191,0,255,255,255,255,0,255,191,0,170,170,170,170,0,255,191,0,0,0,0,0,0,255,191,0,0,0,0,0,0,255,191,0,0,0,0,0,0,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,191,85,85,85,85,85,85,255,191,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0, + // 0x5716 圖 + 22,87,32,34,16,38,3,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,0,0,0,0,0,0,127,253,0,191,255,255,253,0,127,253,0,191,255,255,253,0,127,253,0,189,0,0,189,0,127,253,0,189,0,0,189,0,127,253,0,191,255,255,253,0,127,253,0,191,255,255,253,0,127,253,0,0,11,208,0,0,127,253,0,0,11,208,0,0,127,253,63,255,255,255,255,252,127,253,63,255,255,255,255,252,127,253,0,0,0,0,0,0,127,253,3,255,255,255,255,128,127,253,3,255,255,255,255,128,127,253,3,240,0,0,15,128,127,253,3,240,0,0,15,128,127,253,3,240,255,255,15,128,127,253,3,240,250,191,15,128,127,253,3,240,240,31,15,128,127,253,3,240,250,191,15,128,127,253,3,240,255,255,15,128,127,253,3,240,0,0,15,128,127,253,3,240,0,0,15,128,127,253,3,255,255,255,255,128,127,253,3,255,255,255,255,128,127,253,0,0,0,0,0,0,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,0,0,0,0,0,0,127,169,0,0,0,0,0,0,106, + // 0x5728 在 + 40,87,35,36,68,38,1,252,0,0,0,25,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,5,85,95,245,85,85,85,85,80,0,0,31,224,0,0,0,0,0,0,0,63,192,0,31,192,0,0,0,0,191,64,0,47,192,0,0,0,1,255,0,0,47,192,0,0,0,3,253,0,0,47,192,0,0,0,11,248,0,0,47,192,0,0,0,47,240,0,0,47,192,0,0,0,191,224,0,0,47,192,0,0,1,255,224,47,255,255,255,255,192,11,255,224,47,255,255,255,255,192,63,255,224,47,255,255,255,255,192,127,239,224,5,85,111,213,85,64,63,79,224,0,0,47,192,0,0,29,15,224,0,0,47,192,0,0,4,15,224,0,0,47,192,0,0,0,15,224,0,0,47,192,0,0,0,15,224,0,0,47,192,0,0,0,15,224,0,0,47,192,0,0,0,15,224,0,0,47,192,0,0,0,15,224,0,0,47,192,0,0,0,15,224,0,0,47,192,0,0,0,15,224,85,85,111,213,85,80,0,15,224,255,255,255,255,255,248,0,15,224,255,255,255,255,255,248,0,15,224,255,255,255,255,255,248,0,15,224,0,0,0,0,0,0, + // 0x578b 型 + 139,87,34,35,59,38,2,253,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,127,0,15,255,255,255,252,5,64,127,0,15,255,255,255,252,31,192,127,0,15,255,255,255,252,31,192,127,0,0,63,64,190,0,31,192,127,0,0,63,64,190,0,31,192,127,0,0,63,64,190,0,31,192,127,0,0,63,64,190,0,31,192,127,0,0,63,64,191,0,31,192,127,0,127,255,255,255,254,31,192,127,0,127,255,255,255,254,31,192,127,0,127,255,255,255,254,31,192,127,0,0,127,0,190,0,31,192,127,0,0,191,0,190,0,31,192,127,0,0,253,0,190,0,5,64,127,0,3,252,0,190,0,0,0,127,0,11,248,0,190,0,0,0,127,0,63,240,0,190,0,0,255,255,0,191,192,0,190,0,0,255,254,0,47,0,0,107,252,0,191,248,0,4,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,85,85,85,85,85,85,80, + // 0x57f7 執 + 247,87,36,37,77,38,1,251,0,1,252,0,0,15,192,0,0,0,1,252,0,0,15,192,0,0,0,1,252,0,0,15,192,0,0,0,1,252,0,0,15,192,0,0,15,255,255,255,0,15,192,0,0,15,255,255,255,0,15,192,0,0,15,255,255,255,0,15,192,0,0,0,1,252,0,21,95,213,85,0,0,1,252,0,63,255,255,255,0,0,1,252,0,63,255,255,255,0,127,255,255,255,255,255,255,255,0,127,255,255,255,224,15,192,63,0,127,255,255,255,224,15,192,63,0,2,240,0,189,0,31,192,63,0,2,244,0,253,0,31,192,63,0,1,248,0,252,0,31,192,63,0,0,252,1,248,12,31,192,63,0,0,188,2,240,47,159,192,63,0,0,189,3,240,127,255,128,63,0,63,255,255,255,223,255,128,63,0,63,255,255,255,194,255,192,63,0,63,255,255,255,192,127,240,63,0,0,1,252,0,0,127,252,63,0,0,1,252,0,0,191,255,127,0,0,1,252,0,0,254,191,191,0,31,255,255,255,65,252,31,63,0,31,255,255,255,67,252,4,63,8,31,255,255,255,71,244,0,63,78,0,1,252,0,15,240,0,63,79,0,1,252,0,47,208,0,47,79,0,1,252,0,127,192,0,31,143,0,1,252,1,255,0,0,31,223,0,1,252,7,253,0,0,15,254,0,1,252,31,248,0,0,11,253,0,1,252,11,224,0,0,3,252,0,1,248,1,128,0,0,0,244,0,0,0,0,0,0,0,0,0, + // 0x584a 塊 + 74,88,36,36,68,38,1,252,0,26,64,0,0,46,144,0,0,0,47,128,0,0,63,192,0,0,0,47,128,0,0,127,128,0,0,0,47,128,0,0,191,0,0,0,0,47,128,47,255,255,255,255,240,0,47,128,47,255,255,255,255,240,0,47,128,47,255,255,255,255,240,0,47,128,47,128,31,192,11,240,21,127,149,47,128,31,192,11,240,63,255,255,47,128,31,192,11,240,63,255,255,47,234,191,234,175,240,63,255,255,47,255,255,255,255,240,0,47,128,47,255,255,255,255,240,0,47,128,47,128,31,192,11,240,0,47,128,47,128,31,192,11,240,0,47,128,47,128,31,192,11,240,0,47,128,47,128,31,192,11,240,0,47,128,47,255,255,255,255,240,0,47,128,47,255,255,255,255,240,0,47,128,47,255,255,255,255,240,0,47,128,64,127,11,224,80,0,0,47,159,128,127,11,224,248,0,0,47,255,192,127,11,224,244,64,0,127,255,192,191,11,225,242,224,27,255,254,0,254,11,226,225,240,191,255,208,0,254,11,227,225,248,127,249,0,1,253,11,239,255,252,63,128,0,2,252,11,239,255,252,36,0,0,7,248,11,230,80,36,0,0,0,15,244,11,224,0,16,0,0,0,63,224,11,224,0,125,0,0,2,255,192,11,240,0,189,0,0,47,255,0,7,255,255,253,0,0,63,252,0,3,255,255,252,0,0,31,208,0,1,255,255,240,0,0,9,0,0,0,0,0,0, + // 0x586b 填 + 107,88,36,36,68,38,1,252,0,5,0,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,191,255,255,255,255,252,0,63,64,255,255,255,255,255,252,0,63,64,255,255,255,255,255,252,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,31,208,0,0,21,127,149,3,255,255,255,255,0,63,255,255,3,255,255,255,255,0,63,255,255,3,244,0,0,63,0,63,255,255,3,244,0,0,127,0,0,63,64,3,255,255,255,255,0,0,63,64,3,255,255,255,255,0,0,63,64,3,244,0,0,63,0,0,63,64,3,244,0,0,63,0,0,63,64,3,255,255,255,255,0,0,63,64,3,255,255,255,255,0,0,63,64,3,244,0,0,127,0,0,63,64,3,244,0,0,63,0,0,63,64,3,245,85,85,127,0,0,63,75,131,255,255,255,255,0,0,63,255,195,255,255,255,255,0,0,127,255,192,0,0,0,0,0,11,255,253,0,0,0,0,0,0,127,255,211,255,255,255,255,255,253,127,253,3,255,255,255,255,255,253,63,128,3,255,255,255,255,255,253,24,0,0,0,30,0,3,128,0,0,0,0,0,191,192,31,244,0,0,0,0,7,255,0,11,255,0,0,0,0,191,248,0,0,255,208,0,0,11,255,208,0,0,47,248,0,0,3,254,0,0,0,7,253,0,0,0,160,0,0,0,0,144, + // 0x588a 墊 + 138,88,36,35,59,38,1,253,0,1,252,0,0,6,144,0,0,0,1,252,0,0,11,208,0,0,5,86,253,85,0,11,208,0,0,15,255,255,255,64,11,208,0,0,15,255,255,255,64,11,208,0,0,0,1,252,0,11,255,255,255,0,0,1,252,0,11,255,255,255,0,21,86,255,255,245,95,255,255,0,127,255,255,255,240,11,208,126,0,127,255,255,255,240,15,208,126,0,1,244,0,252,2,15,192,126,0,0,252,2,244,15,239,192,126,0,21,254,87,245,111,255,192,126,0,63,255,255,255,242,255,192,127,0,63,255,255,255,240,63,244,127,0,0,1,252,0,0,127,253,63,0,0,1,252,0,0,255,255,127,4,5,86,253,85,65,252,62,63,13,15,255,255,255,131,248,8,63,31,15,255,255,255,143,240,0,63,30,0,1,252,0,63,208,0,47,174,0,1,252,0,191,64,0,15,253,0,1,252,0,126,0,0,11,252,0,1,252,0,254,0,0,2,244,0,0,0,0,254,0,0,0,0,0,127,255,255,255,255,255,253,0,0,127,255,255,255,255,255,253,0,0,127,255,255,255,255,255,253,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252, + // 0x5916 外 + 22,89,36,36,68,38,1,252,0,0,57,0,0,0,191,0,0,0,0,127,64,0,0,191,0,0,0,0,191,0,0,0,191,0,0,0,0,254,0,0,0,191,0,0,0,1,253,0,0,0,191,0,0,0,2,252,0,0,0,191,0,0,0,3,255,255,254,0,191,0,0,0,11,255,255,255,0,191,0,0,0,15,255,255,255,0,191,0,0,0,31,229,85,255,64,191,0,0,0,63,192,0,255,224,191,0,0,0,191,64,1,255,244,191,0,0,0,255,0,2,255,252,191,0,0,2,253,0,3,252,254,191,0,0,7,253,0,3,244,191,255,0,0,31,255,128,7,240,63,255,0,0,63,255,244,11,240,15,255,0,0,191,223,254,15,224,7,255,0,0,47,2,255,239,192,1,255,64,0,5,0,127,255,192,0,255,224,0,0,0,15,255,64,0,191,252,0,0,0,3,255,0,0,191,255,64,0,0,1,253,0,0,191,255,224,0,0,3,252,0,0,191,127,254,0,0,15,244,0,0,191,15,254,0,0,31,240,0,0,191,2,252,0,0,127,192,0,0,191,0,48,0,0,255,128,0,0,191,0,0,0,3,255,0,0,0,191,0,0,0,15,252,0,0,0,191,0,0,0,127,240,0,0,0,191,0,0,2,255,192,0,0,0,191,0,0,31,255,0,0,0,0,191,0,0,31,252,0,0,0,0,191,0,0,7,224,0,0,0,0,191,0,0,1,0,0,0,0,0,190,0,0, + // 0x591a 多 + 26,89,33,36,68,38,3,252,0,0,0,46,64,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,15,255,255,255,240,0,0,0,0,127,255,255,255,252,0,0,0,3,255,255,255,255,244,0,0,0,47,253,0,0,31,240,0,0,6,255,244,0,0,127,192,0,0,127,255,254,0,1,255,64,0,0,191,250,255,208,7,253,0,0,0,47,64,47,252,47,244,0,0,0,4,0,7,255,255,208,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,127,249,144,0,0,0,0,0,7,255,215,254,0,0,0,0,0,191,254,15,248,0,0,0,0,47,255,224,127,224,0,0,0,91,255,254,2,255,255,255,253,0,255,255,208,15,255,255,255,255,64,191,248,0,191,255,255,255,255,0,57,0,11,255,128,0,3,252,0,0,0,191,253,0,0,11,248,0,0,31,255,255,0,0,31,240,0,0,255,254,255,224,0,63,208,0,0,127,208,63,252,1,255,128,0,0,45,0,7,255,75,254,0,0,0,0,0,0,255,255,248,0,0,0,0,0,0,47,255,224,0,0,0,0,0,0,31,255,64,0,0,0,0,0,2,255,248,0,0,0,0,0,0,127,255,208,0,0,0,0,0,111,255,253,0,0,0,0,2,191,255,255,144,0,0,0,0,3,255,255,244,0,0,0,0,0,2,255,249,0,0,0,0,0,0,0,229,0,0,0,0,0,0,0, + // 0x5920 夠 + 32,89,34,36,68,38,2,252,0,6,64,0,0,100,0,0,0,0,15,224,0,0,254,0,0,0,0,31,192,0,0,252,0,0,0,0,63,128,0,2,252,0,0,0,0,191,255,248,3,248,0,0,0,2,255,255,253,7,244,0,0,0,7,255,255,252,15,255,255,255,208,31,224,2,248,15,255,255,255,208,191,128,7,240,63,255,255,255,208,255,16,15,224,127,64,0,15,208,56,252,47,192,255,0,0,15,208,0,255,255,66,253,0,0,15,208,0,63,254,7,248,0,0,15,208,0,15,248,11,251,255,255,15,208,0,127,224,2,219,255,255,15,208,2,255,254,0,11,255,255,15,192,47,254,253,0,11,208,63,15,192,191,243,248,0,11,208,63,15,192,63,75,255,255,75,208,63,15,192,20,47,255,255,203,208,63,15,192,0,127,255,255,139,208,63,15,192,2,254,0,63,11,208,63,15,192,11,248,0,191,11,208,63,15,192,127,224,0,253,11,208,63,15,192,255,74,2,252,11,255,255,15,192,124,63,199,244,11,255,255,31,192,16,31,255,224,11,255,254,31,192,0,3,255,192,11,208,0,31,192,0,1,255,0,11,208,0,47,128,0,11,253,0,6,128,0,47,128,0,63,244,0,0,0,0,63,64,6,255,192,0,0,0,0,127,64,191,254,0,0,0,1,255,255,0,255,244,0,0,0,0,255,254,0,127,64,0,0,0,0,255,248,0,36,0,0,0,0,0,0,0,0, + // 0x5927 大 + 39,89,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,106,170,170,175,255,170,170,170,144,0,0,0,31,255,0,0,0,0,0,0,0,47,255,128,0,0,0,0,0,0,63,255,192,0,0,0,0,0,0,63,239,208,0,0,0,0,0,0,191,79,240,0,0,0,0,0,0,255,15,240,0,0,0,0,0,1,254,7,252,0,0,0,0,0,3,253,3,253,0,0,0,0,0,11,252,1,255,0,0,0,0,0,15,244,0,255,192,0,0,0,0,63,240,0,63,208,0,0,0,0,191,192,0,47,244,0,0,0,2,255,128,0,15,252,0,0,0,11,254,0,0,7,255,64,0,0,47,252,0,0,1,255,208,0,1,255,240,0,0,0,127,248,0,11,255,192,0,0,0,31,255,128,191,254,0,0,0,0,7,255,240,191,244,0,0,0,0,0,255,208,47,128,0,0,0,0,0,47,128,8,0,0,0,0,0,0,2,0, + // 0x5929 天 + 41,89,35,33,41,38,2,252,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,106,170,170,171,254,170,170,170,144,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,31,255,255,255,255,255,255,255,128,31,255,255,255,255,255,255,255,128,31,255,255,255,255,255,255,255,128,26,170,170,175,255,170,170,170,64,0,0,0,15,255,0,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,47,255,192,0,0,0,0,0,0,63,255,208,0,0,0,0,0,0,127,223,240,0,0,0,0,0,0,255,75,248,0,0,0,0,0,3,255,3,253,0,0,0,0,0,11,253,2,255,0,0,0,0,0,47,248,0,255,192,0,0,0,0,255,224,0,63,244,0,0,0,7,255,192,0,31,254,0,0,0,127,254,0,0,7,255,208,0,7,255,248,0,0,1,255,253,0,191,255,192,0,0,0,47,255,244,255,253,0,0,0,0,7,255,240,63,208,0,0,0,0,0,191,192,41,0,0,0,0,0,0,6,128, + // 0x5931 失 + 49,89,35,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,11,240,3,248,0,0,0,0,0,15,240,3,248,0,0,0,0,0,31,224,3,248,0,0,0,0,0,47,192,3,248,0,0,0,0,0,63,192,3,248,0,0,0,0,0,191,234,171,254,170,170,164,0,0,255,255,255,255,255,255,248,0,1,255,255,255,255,255,255,248,0,3,255,255,255,255,255,255,248,0,7,248,0,3,248,0,0,0,0,15,240,0,3,248,0,0,0,0,63,224,0,3,248,0,0,0,0,191,192,0,3,248,0,0,0,0,47,128,0,3,248,0,0,0,0,6,0,0,3,244,0,0,0,0,0,0,0,7,244,0,0,0,0,106,170,170,171,250,170,170,170,144,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,47,255,64,0,0,0,0,0,0,63,255,192,0,0,0,0,0,0,191,239,224,0,0,0,0,0,0,255,79,240,0,0,0,0,0,3,255,7,252,0,0,0,0,0,11,253,3,255,0,0,0,0,0,47,248,0,255,192,0,0,0,0,255,224,0,127,240,0,0,0,7,255,192,0,31,254,0,0,0,127,254,0,0,7,255,208,0,7,255,248,0,0,1,255,254,0,191,255,192,0,0,0,47,255,244,255,253,0,0,0,0,7,255,240,63,208,0,0,0,0,0,127,208,24,0,0,0,0,0,0,6,128, + // 0x59cb 始 + 203,89,35,36,68,38,2,252,0,62,64,0,0,57,0,0,0,0,63,64,0,0,127,192,0,0,0,127,0,0,0,127,64,0,0,0,127,0,0,0,255,0,0,0,0,190,0,0,0,254,0,0,0,0,254,0,0,1,253,0,0,0,0,253,0,0,2,252,0,144,0,0,252,0,0,3,248,7,240,0,255,255,255,240,7,244,3,248,0,255,255,255,240,11,240,1,253,0,255,255,255,240,15,224,0,255,0,87,245,91,240,31,192,0,63,128,7,240,11,224,47,213,170,191,192,11,240,15,239,255,255,255,255,240,15,224,15,223,255,255,255,255,244,15,208,15,203,255,255,234,151,248,15,192,31,197,80,0,0,2,248,31,192,31,192,0,0,0,1,128,47,128,47,128,0,0,0,0,0,63,64,63,64,0,0,0,0,0,63,64,127,0,127,255,255,255,192,127,224,191,0,127,255,255,255,192,191,253,254,0,127,255,255,255,192,255,255,253,0,127,0,0,47,192,44,191,252,0,127,0,0,47,192,0,31,252,0,127,0,0,47,192,0,15,255,64,127,0,0,47,192,0,31,255,208,127,0,0,47,192,0,63,255,240,127,0,0,47,192,0,255,139,252,127,0,0,47,192,2,255,2,240,127,0,0,47,192,11,252,0,208,127,255,255,255,192,127,244,0,0,127,255,255,255,192,191,192,0,0,127,255,255,255,192,63,0,0,0,127,0,0,47,192,8,0,0,0,127,0,0,26,128, + // 0x5a92 媒 + 146,90,36,36,68,38,1,252,0,46,64,0,63,0,0,254,0,0,63,128,0,63,0,0,254,0,0,63,64,0,63,0,0,254,0,0,63,0,0,63,0,0,254,0,0,127,0,47,255,255,255,255,252,0,127,0,47,255,255,255,255,252,0,190,0,47,255,255,255,255,252,0,254,0,0,63,0,0,254,0,127,255,255,224,63,0,0,254,0,127,255,255,224,63,0,0,254,0,127,255,255,224,63,170,170,254,0,22,253,95,208,63,255,255,254,0,3,248,15,208,63,255,255,254,0,3,244,15,208,63,0,0,254,0,3,240,15,192,63,0,0,254,0,7,240,15,192,63,0,0,254,0,11,224,31,192,63,255,255,254,0,11,224,31,192,63,255,255,254,0,15,208,47,128,63,255,255,254,0,15,192,63,64,0,7,240,0,0,31,192,127,0,0,7,240,0,0,47,240,191,0,0,7,240,0,0,63,253,254,47,255,255,255,255,252,63,255,253,47,255,255,255,255,252,11,127,252,47,255,255,255,255,252,0,15,252,0,0,255,255,0,0,0,7,254,0,2,255,255,192,0,0,15,255,128,11,255,255,240,0,0,47,255,208,47,231,243,252,0,0,127,207,224,191,199,240,255,0,0,255,3,195,255,7,240,127,208,3,254,1,111,252,7,240,47,252,31,248,0,255,240,7,240,11,253,63,224,0,63,128,7,240,1,244,15,128,0,13,0,7,240,0,32,5,0,0,0,0,7,240,0,0, + // 0x5b50 子 + 80,91,34,35,59,38,2,251,0,85,85,85,85,85,85,128,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,240,0,0,0,0,0,0,2,255,192,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,127,244,0,0,0,0,0,0,2,255,208,0,0,0,0,0,0,31,254,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,170,170,170,171,254,170,170,170,160,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,170,171,252,0,0,0,0,0,0,255,255,248,0,0,0,0,0,0,127,255,240,0,0,0,0,0,0,63,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5b58 存 + 88,91,35,36,68,38,1,252,0,0,0,41,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,255,0,0,0,0,0,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,5,85,95,249,85,85,85,85,84,0,0,15,240,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,191,128,0,0,0,4,0,0,1,255,3,255,255,255,255,0,0,3,253,3,255,255,255,255,128,0,11,252,3,255,255,255,255,0,0,47,240,0,0,0,11,252,0,0,127,224,0,0,0,47,224,0,1,255,224,0,0,0,255,128,0,7,255,224,0,0,15,253,0,0,47,255,224,0,0,15,240,0,0,191,239,224,0,0,15,224,0,0,63,143,224,255,255,255,255,255,252,29,15,224,255,255,255,255,255,252,0,15,224,255,255,255,255,255,252,0,15,224,85,85,95,245,85,84,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,85,95,224,0,0,0,15,224,0,127,255,224,0,0,0,15,224,0,63,255,192,0,0,0,15,224,0,63,254,0,0,0, + // 0x5b89 安 + 137,91,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,213,85,85,85,85,85,127,192,63,192,0,0,0,0,0,63,192,63,192,0,63,128,0,0,63,192,63,192,0,127,192,0,0,63,192,63,192,0,255,64,0,0,63,192,21,64,0,255,0,0,0,21,64,0,0,2,253,0,0,0,0,0,85,85,87,253,85,85,85,85,80,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,63,192,0,3,252,0,0,0,0,255,64,0,7,248,0,0,0,1,255,0,0,11,244,0,0,0,3,253,0,0,15,240,0,0,0,7,252,0,0,47,208,0,0,0,15,248,0,0,127,192,0,0,0,31,255,144,0,255,64,0,0,0,63,255,254,67,254,0,0,0,0,191,175,255,255,252,0,0,0,0,11,1,255,255,240,0,0,0,0,0,0,11,255,254,0,0,0,0,0,0,47,255,255,224,0,0,0,0,6,255,250,255,254,0,0,0,6,191,255,192,47,255,224,0,26,255,255,253,0,2,255,253,0,15,255,255,128,0,0,47,254,0,11,255,228,0,0,0,2,248,0,3,148,0,0,0,0,0,96,0, + // 0x5b8c 完 + 140,91,34,36,68,38,2,252,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,213,85,85,85,85,85,127,192,63,128,0,0,0,0,0,63,192,63,128,0,0,0,0,0,63,192,63,128,0,0,0,0,0,63,192,63,131,255,255,255,255,252,63,192,21,67,255,255,255,255,252,21,64,0,3,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,224,255,255,255,255,255,255,255,255,224,255,255,255,255,255,255,255,255,224,85,85,111,229,87,253,85,85,80,0,0,47,208,2,252,0,0,0,0,0,47,192,2,252,0,0,0,0,0,63,192,2,252,0,0,0,0,0,63,128,2,252,0,0,0,0,0,191,64,2,252,0,0,0,0,0,255,0,2,252,0,3,64,0,3,254,0,2,252,0,3,240,0,11,252,0,2,252,0,3,240,0,63,244,0,2,252,0,3,240,2,255,224,0,2,252,0,11,240,191,255,128,0,1,255,255,255,224,255,253,0,0,0,255,255,255,192,127,208,0,0,0,127,255,255,64,57,0,0,0,0,1,85,80,0, + // 0x5b9a 定 + 154,91,35,37,77,38,1,251,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,5,85,85,85,255,85,85,85,80,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,224,0,0,0,0,0,11,240,15,224,0,0,0,0,0,11,240,15,224,0,0,0,0,0,11,240,15,224,0,0,0,0,0,11,240,15,226,255,255,255,255,255,139,240,5,66,255,255,255,255,255,133,80,0,2,255,255,255,255,255,128,0,0,1,85,85,255,85,85,64,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,2,164,0,255,0,0,0,0,0,3,248,0,255,0,0,0,0,0,3,244,0,255,0,0,0,0,0,7,244,0,255,255,255,248,0,0,11,240,0,255,255,255,248,0,0,15,240,0,255,255,255,248,0,0,15,244,0,255,85,85,80,0,0,31,252,0,255,0,0,0,0,0,63,253,0,255,0,0,0,0,0,63,255,0,255,0,0,0,0,0,191,191,192,255,0,0,0,0,0,255,31,244,255,0,0,0,0,3,253,11,255,255,0,0,0,0,11,252,2,255,255,64,0,0,0,47,244,0,191,255,255,255,255,252,127,224,0,11,255,255,255,255,248,47,192,0,0,127,255,255,255,244,11,0,0,0,0,85,85,85,80,0,0,0,0,0,0,0,0,0, + // 0x5ba2 客 + 162,91,35,37,77,38,1,251,0,0,0,0,190,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,208,0,36,0,0,0,11,240,15,208,0,191,128,0,0,11,240,15,208,1,255,0,0,0,11,240,15,208,7,255,255,255,253,11,240,0,0,47,255,255,255,255,0,0,0,0,255,234,170,171,253,0,0,0,7,255,208,0,11,248,0,0,0,127,255,248,0,47,240,0,0,3,255,231,254,0,255,192,0,0,1,255,0,255,215,255,0,0,0,0,180,0,63,255,248,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,127,255,254,64,0,0,0,0,11,255,255,255,249,0,0,0,1,255,255,65,255,255,250,64,1,191,255,248,0,31,255,255,252,127,255,255,64,0,0,191,255,248,63,255,255,255,255,255,255,255,240,31,230,255,255,255,255,255,129,80,4,1,255,255,255,255,255,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,252,0,0,0,63,128,0,0,1,255,255,255,255,255,128,0,0,1,255,255,255,255,255,128,0,0,1,255,255,255,255,255,128,0,0,1,252,0,0,0,63,128,0,0,0,0,0,0,0,0,0,0, + // 0x5bb9 容 + 185,91,35,37,77,38,2,251,0,0,0,2,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,252,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,128,0,0,0,0,0,47,192,63,128,9,0,0,8,0,47,192,63,128,47,208,0,127,64,47,192,63,128,191,192,0,191,240,47,192,0,2,255,0,0,31,253,0,0,0,15,252,1,84,3,255,128,0,0,127,240,11,254,0,191,240,0,7,255,192,31,255,64,31,252,0,15,254,0,63,255,208,3,254,0,3,244,0,255,175,244,0,252,0,1,192,7,255,11,254,0,32,0,0,0,31,252,2,255,128,0,0,0,0,191,240,0,191,240,0,0,0,3,255,128,0,31,254,0,0,0,31,254,0,0,3,255,208,0,0,191,248,0,0,0,255,249,0,11,255,255,255,255,255,255,255,208,191,255,255,255,255,255,255,255,244,191,251,255,255,255,255,254,127,224,63,71,240,0,0,0,254,7,192,24,7,240,0,0,0,254,0,64,0,7,240,0,0,0,254,0,0,0,7,240,0,0,0,254,0,0,0,7,240,0,0,0,254,0,0,0,7,240,0,0,0,254,0,0,0,7,255,255,255,255,254,0,0,0,7,255,255,255,255,254,0,0,0,7,255,255,255,255,254,0,0,0,7,240,0,0,0,254,0,0,0,0,0,0,0,0,0,0,0, + // 0x5c0d 對 + 13,92,36,37,77,38,1,251,0,6,129,164,0,0,0,169,0,10,11,193,244,41,0,0,254,0,63,11,193,244,63,64,0,254,0,31,139,193,244,191,0,0,254,0,15,203,193,244,252,0,0,254,0,7,235,193,246,248,0,0,254,0,3,251,193,251,240,0,0,254,0,2,75,193,244,144,0,0,254,0,127,255,255,255,255,0,0,254,0,127,255,255,255,255,0,0,254,0,127,255,255,255,255,255,255,255,253,0,120,0,15,129,255,255,255,253,0,252,0,31,193,255,255,255,253,0,190,0,47,128,85,85,254,84,0,127,0,63,0,0,0,254,0,0,63,0,127,0,0,0,254,0,0,46,0,125,0,1,0,254,0,15,255,255,255,248,47,0,254,0,15,255,255,255,248,63,128,254,0,15,255,255,255,248,31,192,254,0,0,0,63,0,0,15,224,254,0,0,0,63,0,0,11,240,254,0,0,0,63,0,0,3,244,254,0,3,255,255,255,240,3,248,254,0,3,255,255,255,240,2,252,254,0,3,255,255,255,240,1,144,254,0,0,0,63,0,0,0,0,254,0,0,0,63,0,0,0,0,254,0,0,0,63,0,0,0,0,254,0,0,0,63,107,254,0,0,254,0,1,107,255,255,254,0,0,254,0,63,255,255,255,255,0,0,254,0,63,255,255,250,80,1,85,254,0,63,254,148,0,0,3,255,253,0,20,0,0,0,0,2,255,252,0,0,0,0,0,0,1,255,224,0,0,0,0,0,0,0,0,0,0, + // 0x5c0f 小 + 15,92,36,36,68,38,1,252,0,0,0,0,85,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,4,0,0,255,0,1,128,0,0,15,240,0,255,0,31,208,0,0,15,240,0,255,0,15,240,0,0,31,240,0,255,0,11,244,0,0,31,224,0,255,0,3,252,0,0,63,208,0,255,0,2,254,0,0,63,192,0,255,0,0,255,0,0,127,128,0,255,0,0,255,64,0,191,64,0,255,0,0,127,192,0,255,0,0,255,0,0,63,208,1,254,0,0,255,0,0,47,224,3,253,0,0,255,0,0,15,240,7,252,0,0,255,0,0,15,248,15,244,0,0,255,0,0,7,252,47,240,0,0,255,0,0,3,252,63,208,0,0,255,0,0,2,253,127,192,0,0,255,0,0,1,254,11,0,0,0,255,0,0,0,254,0,0,0,0,255,0,0,0,208,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,63,255,255,0,0,0,0,0,0,31,255,254,0,0,0,0,0,0,15,255,248,0,0,0,0,0,0,6,170,64,0,0,0,0, + // 0x5c31 就 + 49,92,36,36,68,38,1,252,0,0,190,0,0,0,252,0,0,0,0,191,0,0,0,252,8,0,0,0,191,0,0,0,252,191,0,0,0,191,0,0,0,252,63,192,0,0,191,0,0,0,252,31,224,63,255,255,255,252,0,252,11,240,63,255,255,255,252,0,252,3,248,63,255,255,255,252,0,252,1,248,0,0,0,0,0,0,252,0,128,0,0,0,0,0,0,252,0,0,0,0,0,0,3,255,255,255,253,3,255,255,255,211,255,255,255,253,3,255,255,255,211,255,255,255,253,3,255,255,255,209,86,253,85,84,3,240,0,15,208,1,252,0,0,3,240,0,15,208,2,255,208,0,3,240,0,15,208,2,255,208,0,3,240,0,15,208,3,255,208,0,3,255,255,255,208,3,255,208,0,3,255,255,255,208,3,255,208,0,3,255,255,255,208,7,255,208,0,0,0,127,0,0,11,255,208,0,0,0,127,0,0,15,255,208,0,2,228,127,31,128,15,223,208,0,3,244,127,15,192,31,207,208,0,7,240,127,15,208,63,207,208,0,11,240,127,7,240,127,79,208,16,15,208,127,3,240,255,15,208,61,31,192,127,2,249,254,15,208,62,63,192,127,1,247,252,15,208,62,127,64,127,0,75,248,15,208,62,127,0,127,0,31,240,15,224,126,13,0,191,0,127,208,15,255,253,0,63,255,0,255,128,11,255,252,0,47,253,0,126,0,3,255,244,0,31,228,0,8,0,0,85,64, + // 0x5de5 工 + 229,93,34,29,5,38,2,255,10,170,170,170,170,170,170,170,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,170,170,170,171,254,170,170,170,160,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x5dee 差 + 238,93,35,36,68,38,1,252,0,0,8,0,0,0,164,0,0,0,0,191,0,0,0,255,0,0,0,0,127,128,0,1,254,0,0,0,0,47,192,0,3,252,0,0,0,0,15,224,0,11,240,0,0,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,63,255,255,255,255,255,253,0,0,63,255,255,255,255,255,253,0,0,63,255,255,255,255,255,253,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,0,0,191,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,253,255,255,255,255,253,0,0,3,252,255,255,255,255,253,0,0,7,248,255,255,255,255,253,0,0,15,240,0,2,252,0,0,0,0,31,224,0,2,252,0,0,0,0,63,208,0,2,252,0,0,0,0,191,192,0,2,252,0,0,0,1,255,0,0,2,252,0,0,0,7,253,0,0,2,252,0,0,0,47,248,191,255,255,255,255,255,240,127,240,191,255,255,255,255,255,240,31,192,191,255,255,255,255,255,240,2,0,0,0,0,0,0,0,0, + // 0x5df2 已 + 242,93,33,33,41,38,3,253,21,85,85,85,85,85,85,0,0,127,255,255,255,255,255,255,64,0,127,255,255,255,255,255,255,64,0,127,255,255,255,255,255,255,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,5,80,0,0,0,0,127,64,0,11,240,0,0,0,0,127,64,0,11,240,0,0,0,0,127,64,0,11,240,0,0,0,0,127,64,0,11,240,0,0,0,0,127,64,0,11,240,0,0,0,0,127,64,0,11,245,85,85,85,85,191,64,0,11,255,255,255,255,255,255,64,0,11,255,255,255,255,255,255,64,0,11,255,255,255,255,255,255,64,0,11,240,0,0,0,0,127,64,0,11,240,0,0,0,0,127,64,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,20,0,11,240,0,0,0,0,0,47,128,11,240,0,0,0,0,0,47,192,11,240,0,0,0,0,0,63,192,11,240,0,0,0,0,0,63,192,11,240,0,0,0,0,0,127,128,7,248,0,0,0,0,0,255,64,3,255,165,85,85,85,107,255,0,3,255,255,255,255,255,255,253,0,0,255,255,255,255,255,255,244,0,0,27,255,255,255,255,255,128,0, + // 0x5e73 平 + 115,94,34,34,50,38,2,252,5,85,85,85,85,85,85,85,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,4,0,0,0,47,0,3,252,0,15,208,0,0,63,128,3,252,0,47,208,0,0,47,192,3,252,0,63,192,0,0,31,208,3,252,0,127,128,0,0,15,240,3,252,0,191,0,0,0,7,240,3,252,0,254,0,0,0,3,248,3,252,2,252,0,0,0,3,252,3,252,3,248,0,0,0,2,228,3,252,3,240,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,170,170,170,171,254,170,170,170,160,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,248,0,0,0,0, + // 0x5e8a 床 + 138,94,36,36,68,38,1,252,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,1,255,255,255,255,255,255,255,252,1,255,255,255,255,255,255,255,252,1,255,255,255,255,255,255,255,252,1,253,85,85,85,85,85,85,84,1,252,0,0,0,84,0,0,0,1,252,0,0,1,252,0,0,0,1,252,0,0,1,252,0,0,0,1,252,0,0,1,252,0,0,0,1,252,0,0,1,252,0,0,0,1,252,0,0,1,252,0,0,0,1,252,63,255,255,255,255,255,252,1,252,63,255,255,255,255,255,252,1,252,63,255,255,255,255,255,252,1,252,21,85,95,255,149,85,84,2,252,0,0,47,255,192,0,0,2,252,0,0,127,255,240,0,0,2,252,0,0,255,255,244,0,0,3,248,0,2,255,255,253,0,0,3,248,0,7,249,252,255,0,0,3,248,0,15,241,252,127,192,0,3,244,0,63,209,252,47,240,0,7,240,0,255,129,252,11,253,0,11,240,3,255,1,252,3,255,64,15,240,31,252,1,252,0,255,224,15,224,191,240,1,252,0,63,253,31,210,255,192,1,252,0,15,253,63,192,254,0,1,252,0,2,244,63,128,56,0,1,252,0,0,96,191,0,0,0,1,252,0,0,0,47,0,0,0,1,252,0,0,0,5,0,0,0,1,252,0,0,0, + // 0x5ea6 度 + 166,94,35,36,68,38,1,252,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,63,192,0,0,0,1,255,255,255,255,255,255,255,252,1,255,255,255,255,255,255,255,252,1,255,255,255,255,255,255,255,252,1,252,0,0,0,0,0,0,0,1,252,0,31,192,0,47,128,0,1,252,0,31,192,0,47,128,0,1,252,0,31,192,0,47,128,0,1,252,255,255,255,255,255,255,248,1,252,255,255,255,255,255,255,248,1,252,255,255,255,255,255,255,244,1,252,0,31,192,0,47,128,0,1,252,0,31,192,0,47,128,0,1,252,0,31,192,0,47,128,0,1,252,0,31,234,170,191,128,0,1,252,0,31,255,255,255,128,0,2,252,0,31,255,255,255,128,0,2,252,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,3,248,127,255,255,255,255,248,0,3,244,191,255,255,255,255,255,0,3,244,191,255,255,255,255,253,0,3,244,0,47,64,0,7,252,0,7,240,0,47,224,0,31,240,0,11,240,0,15,248,0,191,192,0,15,224,0,3,255,71,255,0,0,15,208,0,0,191,255,248,0,0,31,192,0,0,47,255,224,0,0,63,192,0,6,255,255,254,64,0,63,64,91,255,255,255,255,254,148,191,2,255,255,249,1,255,255,252,46,0,255,254,64,0,11,255,244,5,0,185,0,0,0,0,6,224, + // 0x5ee2 廢 + 226,94,36,37,77,38,1,251,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,3,255,255,255,255,255,255,255,252,3,255,255,255,255,255,255,255,252,3,255,255,255,255,255,255,255,252,3,244,0,0,0,0,0,0,0,3,244,0,0,0,27,0,64,0,3,244,63,255,253,31,130,244,0,3,244,63,255,253,15,223,240,0,3,244,21,86,252,3,255,128,0,3,244,24,3,244,2,253,2,224,3,244,191,79,224,0,255,31,240,3,244,47,255,192,0,63,255,64,3,244,7,255,0,0,15,252,0,3,244,15,253,80,21,91,255,128,3,245,191,255,240,127,255,255,253,3,255,255,255,240,127,255,219,252,3,247,228,2,240,124,11,192,180,3,241,0,2,240,188,11,193,64,3,240,21,87,240,252,11,194,224,3,240,63,255,247,248,7,231,208,3,240,63,255,251,240,7,255,192,7,240,125,0,2,192,2,255,64,7,240,188,0,1,85,85,84,0,11,224,253,85,83,255,255,255,0,11,224,255,255,243,255,255,253,0,15,209,255,255,240,108,0,252,0,15,193,160,3,240,126,2,248,0,31,192,0,7,224,63,139,240,0,47,128,0,7,224,15,255,192,0,63,128,0,11,208,3,255,64,0,127,0,0,15,208,31,255,228,0,191,0,41,111,198,255,255,255,228,125,0,47,255,143,254,2,255,244,12,0,31,254,7,144,0,27,224,0,0,0,0,0,0,0,0,0, + // 0x5efa 建 + 250,94,36,37,77,38,1,251,0,0,0,0,0,42,0,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,127,255,248,31,255,255,255,255,128,127,255,244,31,255,255,255,255,128,127,255,240,31,255,255,255,255,128,0,15,208,0,0,63,64,63,128,0,31,192,0,0,63,64,63,128,0,63,131,255,255,255,255,255,253,0,127,3,255,255,255,255,255,253,0,254,3,255,255,255,255,255,253,1,252,0,0,0,63,64,63,128,3,248,0,0,0,63,64,63,128,7,255,254,31,255,255,255,255,128,15,255,255,47,255,255,255,255,128,31,255,255,47,255,255,255,255,128,63,128,190,0,0,63,64,0,0,2,0,254,0,0,63,64,0,0,0,0,253,42,170,191,234,170,128,1,64,253,63,255,255,255,255,192,31,193,252,63,255,255,255,255,192,15,193,252,0,0,63,64,0,0,11,211,248,0,0,63,64,0,0,7,243,244,0,0,63,64,0,0,3,251,241,255,255,255,255,255,248,1,255,241,255,255,255,255,255,248,0,255,225,255,255,255,255,255,244,0,127,192,0,0,63,64,0,0,0,63,244,0,0,63,64,0,0,0,255,254,0,0,63,64,0,0,1,255,255,244,0,21,0,0,0,7,252,127,255,250,85,85,85,84,31,244,11,255,255,255,255,255,252,127,224,0,127,255,255,255,255,252,47,128,0,1,111,255,255,255,244,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5f15 引 + 21,95,30,37,40,38,3,251,0,0,0,0,0,0,5,64,21,85,85,85,0,0,31,208,63,255,255,255,0,0,31,208,63,255,255,255,0,0,31,208,63,255,255,255,0,0,31,208,0,0,0,127,0,0,31,208,0,0,0,127,0,0,31,208,0,0,0,127,0,0,31,208,0,0,0,127,0,0,31,208,0,0,0,127,0,0,31,208,5,85,85,127,0,0,31,208,15,255,255,255,0,0,31,208,31,255,255,255,0,0,31,208,47,255,255,255,0,0,31,208,47,192,0,0,0,0,31,208,63,128,0,0,0,0,31,208,63,128,0,0,0,0,31,208,63,64,0,0,0,0,31,208,127,85,85,85,0,0,31,208,191,255,255,255,64,0,31,208,191,255,255,255,64,0,31,208,255,255,255,255,0,0,31,208,253,0,0,127,0,0,31,208,109,0,0,191,0,0,31,208,0,0,0,191,0,0,31,208,0,0,0,255,0,0,31,208,0,0,0,255,0,0,31,208,0,0,0,254,0,0,31,208,0,0,0,254,0,0,31,208,0,0,1,253,0,0,31,208,0,0,2,252,0,0,31,208,0,0,3,252,0,0,31,208,2,170,175,248,0,0,31,208,1,255,255,244,0,0,31,208,0,255,255,224,0,0,31,208,0,191,254,64,0,0,31,208,0,0,0,0,0,0,0,0, + // 0x5f85 待 + 133,95,36,36,68,38,1,252,0,0,144,0,0,10,128,0,0,0,1,253,0,0,31,192,0,0,0,3,252,0,0,31,192,0,0,0,15,244,0,0,31,192,0,0,0,63,224,0,0,31,192,0,0,0,255,128,31,255,255,255,255,224,7,255,0,31,255,255,255,255,224,47,252,0,31,255,255,255,255,224,63,224,0,0,0,31,208,0,0,31,128,56,0,0,31,192,0,0,13,0,255,0,0,31,192,0,0,0,1,253,0,0,31,192,0,0,0,3,252,0,0,31,208,0,0,0,15,241,255,255,255,255,255,253,0,47,225,255,255,255,255,255,253,0,191,209,255,255,255,255,255,253,2,255,192,0,0,0,3,244,0,11,255,192,0,0,0,3,244,0,63,255,192,0,0,0,3,244,0,191,239,192,0,0,0,7,248,0,63,79,192,255,255,255,255,255,252,45,15,192,255,255,255,255,255,252,4,15,192,255,255,255,255,255,252,0,15,192,0,0,0,3,244,0,0,15,192,1,240,0,3,244,0,0,15,192,7,248,0,3,244,0,0,15,192,2,253,0,3,244,0,0,15,192,0,255,0,3,244,0,0,15,192,0,127,192,3,244,0,0,15,192,0,47,208,3,244,0,0,15,192,0,15,208,3,244,0,0,15,192,0,10,0,3,244,0,0,15,192,0,0,5,87,244,0,0,15,192,0,0,15,255,244,0,0,15,192,0,0,15,255,240,0,0,15,192,0,0,11,254,64,0, + // 0x5f8c 後 + 140,95,36,37,77,38,1,251,0,1,144,0,0,208,0,0,0,0,3,252,0,2,252,0,0,0,0,11,244,0,7,252,0,0,0,0,47,224,0,15,240,3,128,0,0,191,128,16,63,192,11,244,0,2,255,0,125,191,0,47,240,0,11,252,0,255,253,0,127,192,0,63,240,0,127,248,1,255,0,0,127,192,96,31,253,7,252,0,0,46,0,254,3,255,95,240,0,0,4,2,252,0,255,255,192,184,0,0,7,248,0,63,255,2,253,0,0,15,240,0,15,252,0,255,0,0,63,208,0,15,224,0,63,192,0,191,192,0,63,234,171,255,224,2,255,199,255,255,255,255,255,244,11,255,195,255,255,255,255,255,252,63,255,195,255,255,253,64,1,254,255,255,192,0,7,244,0,0,253,191,95,192,0,15,224,0,0,96,61,31,192,0,63,250,170,168,0,20,31,192,1,255,255,255,255,0,0,31,192,7,255,255,255,253,0,0,31,192,47,252,0,3,252,0,0,31,193,255,255,0,11,244,0,0,31,203,255,127,128,47,224,0,0,31,195,252,31,224,191,192,0,0,31,192,208,11,255,255,0,0,0,31,192,0,2,255,252,0,0,0,31,192,0,0,255,244,0,0,0,31,192,0,31,255,255,64,0,0,31,192,1,255,255,255,248,0,0,31,193,191,255,208,127,255,228,0,31,203,255,253,0,7,255,253,0,31,195,255,144,0,0,111,248,0,31,193,224,0,0,0,1,176,0,0,0,0,0,0,0,0,0, + // 0x5f91 徑 + 145,95,36,36,68,38,1,252,0,1,144,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,11,244,127,255,255,255,255,252,0,47,224,127,255,255,255,255,252,0,191,128,127,255,255,255,255,252,2,254,0,0,0,0,0,0,0,15,252,0,0,144,2,64,9,0,63,224,0,2,252,11,240,31,192,127,128,96,3,244,15,208,63,128,45,0,254,11,240,47,128,191,0,0,2,253,15,192,127,0,253,0,0,7,248,63,128,253,3,248,0,0,15,240,127,2,252,11,240,0,0,63,208,190,3,248,15,224,0,0,255,192,63,65,253,3,244,0,3,255,192,31,192,191,1,252,0,15,255,192,15,224,63,128,191,0,63,255,192,3,244,15,208,63,192,255,239,192,2,252,11,240,15,224,127,31,192,0,253,3,248,11,240,44,31,192,0,164,1,144,2,64,0,31,192,0,0,0,0,0,0,0,31,192,63,255,255,255,255,224,0,31,192,63,255,255,255,255,224,0,31,192,63,255,255,255,255,224,0,31,192,0,0,47,192,0,0,0,31,192,0,0,31,192,0,0,0,31,192,0,0,31,192,0,0,0,31,192,0,0,31,192,0,0,0,31,192,0,0,31,192,0,0,0,31,192,0,0,31,192,0,0,0,31,192,0,0,47,192,0,0,0,31,199,255,255,255,255,255,253,0,31,199,255,255,255,255,255,253,0,31,199,255,255,255,255,255,253,0,31,192,0,0,0,0,0,0, + // 0x5f9e 從 + 158,95,36,36,68,38,1,252,0,1,144,0,41,64,1,164,0,0,3,252,0,63,128,2,248,0,0,11,244,0,63,64,3,248,0,0,47,224,0,127,0,3,244,0,0,127,192,0,191,0,7,240,0,1,255,0,0,254,0,11,240,0,11,252,0,1,253,0,15,224,0,47,240,0,2,255,64,31,240,0,127,192,16,3,255,224,63,252,0,47,0,254,11,255,248,127,255,0,8,1,253,31,227,252,255,191,192,0,3,248,63,192,246,253,47,224,0,15,240,191,128,39,252,11,248,0,47,210,255,0,31,244,3,253,0,127,195,252,0,47,208,0,252,1,255,192,244,0,11,128,0,48,7,255,192,16,0,15,208,0,0,31,255,192,0,0,15,208,0,0,191,255,192,1,64,15,208,0,0,191,159,192,7,240,15,208,0,0,63,31,192,7,240,15,208,0,0,40,31,192,11,240,15,208,0,0,0,31,192,11,240,15,255,255,208,0,31,192,11,224,15,255,255,208,0,31,192,15,224,15,255,255,208,0,31,192,15,240,15,208,0,0,0,31,192,31,244,15,208,0,0,0,31,192,47,252,15,208,0,0,0,31,192,63,254,15,208,0,0,0,31,192,191,127,143,208,0,0,0,31,192,254,47,239,208,0,0,0,31,195,252,15,255,224,0,0,0,31,207,248,2,255,255,255,252,0,31,207,240,0,127,255,255,252,0,31,195,192,0,2,255,255,248,0,31,128,0,0,0,0,0,0, + // 0x5fa9 復 + 169,95,36,36,68,38,1,252,0,0,128,0,100,0,0,0,0,0,3,252,0,255,0,0,0,0,0,11,244,1,254,0,0,0,0,0,47,224,3,252,0,0,0,0,0,127,192,3,255,255,255,255,252,2,255,0,11,255,255,255,255,252,11,252,0,31,255,255,255,255,252,63,240,0,63,192,0,0,0,0,127,192,100,255,64,0,0,0,0,46,0,255,255,255,255,255,255,128,4,2,255,255,255,255,255,255,128,0,7,248,182,249,85,85,127,128,0,15,240,2,244,0,0,47,128,0,63,208,2,248,0,0,63,128,0,255,192,2,255,255,255,255,128,2,255,192,2,255,255,255,255,128,11,255,192,2,244,0,0,47,128,63,255,192,2,244,0,0,47,128,255,239,192,2,255,255,255,255,128,127,31,192,2,255,255,255,255,128,60,31,192,0,87,249,85,85,0,16,31,192,0,15,240,0,0,0,0,31,192,0,47,208,0,0,0,0,31,192,0,191,255,255,254,0,0,31,192,2,255,255,255,255,64,0,31,192,11,255,85,86,254,0,0,31,192,63,255,128,3,252,0,0,31,194,255,159,224,15,244,0,0,31,192,253,7,252,127,208,0,0,31,192,32,1,255,255,64,0,0,31,192,0,0,191,253,0,0,0,31,192,0,31,255,255,224,0,0,31,192,107,255,254,255,255,228,0,31,195,255,255,208,31,255,253,0,31,193,255,248,0,0,191,248,0,31,192,164,0,0,0,1,160, + // 0x5fae 微 + 174,95,36,36,68,38,1,252,0,9,0,3,208,0,26,64,0,0,31,208,3,208,0,31,192,0,0,63,192,3,208,0,47,128,0,0,255,69,67,208,80,63,64,0,2,254,15,131,208,244,63,64,0,7,252,15,131,208,244,63,0,0,31,240,15,131,208,244,127,0,0,127,192,15,131,208,244,190,0,0,127,66,15,131,208,244,255,255,253,61,7,255,131,208,244,255,255,253,4,15,239,131,208,245,255,255,253,0,47,207,255,255,247,248,7,240,0,63,143,255,255,251,252,7,224,0,255,11,255,255,255,252,11,224,2,254,0,0,0,15,252,11,208,7,254,0,0,0,63,253,15,192,15,254,0,0,0,47,126,15,192,63,254,31,255,255,254,63,15,192,255,254,31,255,255,248,47,31,128,190,190,31,255,255,248,31,111,64,60,126,0,252,31,128,31,191,0,16,126,0,252,31,128,15,255,0,0,126,0,252,31,128,15,254,0,0,126,0,252,31,128,7,253,0,0,126,0,248,31,128,3,252,0,0,126,1,248,31,128,3,248,0,0,126,2,244,31,138,7,248,0,0,126,3,244,31,255,15,252,0,0,126,3,240,127,255,47,255,0,0,126,11,224,191,244,127,191,64,0,126,15,208,126,0,255,47,208,0,126,47,192,16,3,252,15,244,0,126,63,64,0,31,244,7,253,0,126,30,0,0,63,208,2,254,0,126,8,0,0,31,0,0,184,0,126,0,0,0,4,0,0,16, + // 0x5fc3 心 + 195,95,36,36,68,38,1,252,0,0,0,32,0,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,1,255,255,64,0,0,0,0,0,0,11,255,244,0,0,0,0,0,0,0,191,254,0,0,0,0,0,0,0,11,255,208,0,0,0,0,0,0,1,255,208,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,2,224,0,0,248,7,240,0,0,15,244,0,0,253,7,240,0,0,7,252,0,1,252,7,240,0,0,2,254,0,1,252,7,240,0,0,0,255,0,2,252,7,240,0,0,0,127,192,3,252,7,240,0,0,0,63,208,3,248,7,240,0,0,0,31,240,7,244,7,240,0,0,0,15,240,11,240,7,240,0,0,0,11,248,15,240,7,240,0,0,0,3,252,31,224,7,240,0,0,16,2,253,63,192,7,240,0,0,46,1,254,127,192,7,240,0,0,47,128,255,255,64,7,240,0,0,63,128,244,47,0,7,240,0,0,63,64,0,0,0,7,240,0,0,63,64,0,0,0,7,240,0,0,127,0,0,0,0,7,248,0,0,255,0,0,0,0,3,255,255,255,254,0,0,0,0,2,255,255,255,252,0,0,0,0,0,191,255,255,240,0,0,0,0,0,0,0,0,0,0,0, + // 0x6027 性 + 39,96,35,36,68,38,1,252,0,47,192,0,0,7,224,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,253,11,240,0,0,0,47,192,1,253,11,240,0,0,0,47,192,1,252,11,240,0,0,0,47,192,2,252,11,240,0,0,0,47,196,3,248,11,240,0,0,9,47,254,3,244,11,240,0,0,15,111,255,7,255,255,255,255,240,31,111,223,139,255,255,255,255,240,31,111,207,207,255,255,255,255,240,47,47,203,239,229,95,245,85,80,47,47,199,255,192,11,240,0,0,63,47,194,127,128,11,240,0,0,62,47,192,191,64,11,240,0,0,125,47,192,255,0,11,240,0,0,189,47,192,29,0,11,240,0,0,188,47,192,0,0,11,240,0,0,4,47,192,0,0,11,240,0,0,0,47,192,7,255,255,255,255,208,0,47,192,7,255,255,255,255,208,0,47,192,7,255,255,255,255,208,0,47,192,1,85,95,245,85,64,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,47,192,255,255,255,255,255,252,0,47,192,255,255,255,255,255,252,0,47,192,255,255,255,255,255,252,0,47,192,85,85,85,85,85,84,0,42,128,0,0,0,0,0,0, + // 0x6062 恢 + 98,96,36,36,68,38,1,252,0,47,128,11,208,0,0,0,0,0,47,128,11,208,0,0,0,0,0,47,128,11,208,0,0,0,0,0,47,128,11,208,0,0,0,0,0,47,130,255,255,255,255,255,253,0,47,130,255,255,255,255,255,253,0,47,150,255,255,255,255,255,253,5,47,253,95,229,85,85,85,84,15,47,189,11,208,0,105,0,0,15,47,175,11,208,0,190,0,0,31,47,159,11,208,0,190,0,0,31,47,143,139,208,0,190,0,0,31,47,139,203,208,0,190,0,80,47,47,135,203,211,208,190,0,252,62,47,129,15,211,224,190,1,248,61,47,128,15,211,224,190,2,244,188,47,128,15,211,208,190,3,240,184,47,128,15,199,208,190,7,224,0,47,128,15,203,192,190,11,192,0,47,128,15,207,192,190,15,192,0,47,128,15,207,128,255,31,64,0,47,128,31,223,0,255,27,0,0,47,128,31,129,0,255,0,0,0,47,128,47,128,2,255,128,0,0,47,128,63,64,3,255,192,0,0,47,128,63,64,7,235,208,0,0,47,128,63,0,15,215,240,0,0,47,128,191,0,47,195,244,0,0,47,128,254,0,127,65,252,0,0,47,129,252,0,255,0,255,0,0,47,130,252,3,252,0,127,192,0,47,131,244,31,248,0,47,240,0,47,139,240,191,224,0,15,253,0,47,143,225,255,128,0,3,254,0,47,135,192,190,0,0,0,252,0,47,128,64,32,0,0,0,32, + // 0x606f 息 + 111,96,36,36,68,38,1,252,0,0,0,0,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,2,253,0,0,0,0,0,7,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,240,0,0,0,11,240,0,0,11,240,0,0,0,11,240,0,0,11,250,170,170,170,175,240,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,240,0,0,0,11,240,0,0,11,240,0,0,0,11,240,0,0,11,240,0,0,0,11,240,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,250,170,170,170,175,240,0,0,11,240,0,0,0,11,240,0,0,11,240,0,0,0,11,240,0,0,11,250,170,170,170,175,240,0,0,11,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,0,0,0,144,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,7,254,0,0,0,0,0,120,5,81,255,128,1,240,0,0,191,15,224,63,208,7,252,0,0,254,15,224,15,240,3,255,0,2,252,15,224,7,224,0,255,128,3,252,15,224,2,64,64,63,224,11,244,15,224,0,0,248,15,244,31,240,15,224,0,0,252,7,252,127,208,11,244,0,2,252,2,253,47,128,11,255,255,255,248,0,252,6,0,3,255,255,255,240,0,144,0,0,0,191,255,255,128,0,0, + // 0x61b6 憶 + 182,97,36,36,68,38,1,252,0,47,128,0,0,15,208,0,0,0,47,128,0,0,15,224,0,0,0,47,128,0,0,15,224,0,0,0,47,128,47,255,255,255,255,240,0,47,128,47,255,255,255,255,240,0,47,128,26,191,170,171,254,160,0,47,132,0,63,0,2,248,0,4,47,252,0,47,128,3,240,0,15,47,190,0,15,192,7,224,0,15,47,175,127,255,255,255,255,253,31,47,159,255,255,255,255,255,253,31,47,143,255,255,255,255,255,253,31,47,139,192,0,0,0,0,0,47,47,135,192,0,0,0,0,0,62,47,129,3,255,255,255,255,208,61,47,128,3,255,255,255,255,208,124,47,128,3,240,0,0,15,208,188,47,128,3,240,0,0,15,208,0,47,128,3,255,255,255,255,208,0,47,128,3,255,255,255,255,208,0,47,128,3,240,0,0,15,208,0,47,128,3,240,0,0,15,208,0,47,128,3,255,255,255,255,208,0,47,128,3,255,255,255,255,208,0,47,128,0,0,127,64,0,0,0,47,128,0,0,191,128,0,0,0,47,128,0,0,47,240,4,0,0,47,128,30,75,215,248,62,0,0,47,128,47,139,208,244,127,64,0,47,128,63,75,208,16,47,192,0,47,128,127,11,208,0,79,240,0,47,128,254,11,208,0,247,248,0,47,130,252,11,224,2,245,252,0,47,135,248,11,255,255,244,253,0,47,129,240,7,255,255,240,116,0,47,128,0,1,191,255,128,0, + // 0x61c9 應 + 201,97,35,36,68,38,1,252,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,0,3,255,255,255,255,255,255,255,252,3,255,255,255,255,255,255,255,252,3,255,255,255,255,255,255,255,252,3,244,0,164,3,144,9,0,0,3,244,1,252,7,240,31,192,0,3,244,3,244,15,224,63,128,0,3,244,11,240,31,208,127,64,0,3,244,15,208,63,255,255,255,240,3,244,63,192,255,255,255,255,240,3,244,255,194,255,64,189,0,0,3,247,255,203,255,255,255,255,192,3,255,255,223,255,255,255,255,192,3,255,239,195,175,64,189,0,0,3,247,143,192,47,64,189,0,0,3,244,15,192,47,255,255,255,192,3,240,15,192,47,255,255,255,192,3,240,15,192,47,64,189,0,0,3,240,15,192,47,64,189,0,0,3,240,15,192,47,255,255,255,244,3,240,15,192,47,255,255,255,244,7,240,15,192,14,85,85,85,80,7,240,0,0,47,208,0,0,0,11,224,0,0,47,248,0,0,0,11,224,0,0,7,255,64,16,0,15,208,31,71,240,191,193,252,0,15,192,47,71,240,31,0,255,0,31,192,63,7,240,0,0,127,128,47,128,190,7,240,0,13,47,208,63,65,253,7,240,0,15,143,240,127,3,252,7,240,0,47,131,248,191,15,240,3,255,255,255,66,252,45,2,208,3,255,255,255,0,244,8,0,0,0,111,255,248,0,0, + // 0x6210 成 + 16,98,36,37,77,38,1,251,0,0,0,0,2,248,9,0,0,0,0,0,0,3,252,63,128,0,0,0,0,0,3,252,127,244,0,0,0,0,0,3,252,11,254,0,0,0,0,0,2,252,1,255,192,0,0,0,0,2,252,0,63,0,0,85,85,85,87,253,85,110,84,1,255,255,255,255,255,255,255,252,1,255,255,255,255,255,255,255,252,1,255,255,255,255,255,255,255,252,1,253,0,0,1,252,0,0,0,1,253,0,0,1,253,0,0,0,1,253,0,0,0,253,0,0,0,1,253,0,0,0,254,0,63,64,1,254,0,0,0,254,0,127,128,1,255,255,255,192,255,0,191,0,1,255,255,255,192,191,0,254,0,1,255,255,255,192,191,1,253,0,1,253,0,47,192,127,3,252,0,1,253,0,47,192,127,75,244,0,1,253,0,47,192,63,143,240,0,1,252,0,47,192,63,239,208,0,1,252,0,47,128,47,255,192,0,2,252,0,47,128,31,255,0,0,2,252,0,63,128,15,254,0,0,3,252,0,63,128,15,252,0,128,3,248,0,127,64,31,244,0,248,3,248,255,255,0,127,248,0,253,7,244,127,255,1,255,252,0,252,11,240,127,248,7,255,255,0,252,15,240,0,0,47,252,255,65,252,47,224,0,1,255,240,127,210,248,63,192,0,11,255,192,47,255,244,127,128,0,7,254,0,15,255,240,47,0,0,1,244,0,2,255,208,6,0,0,0,64,0,0,25,0,0,0,0,0,0,0,0,0,0, + // 0x6236 戶 + 54,98,30,36,32,38,2,252,0,0,0,0,0,0,100,0,0,0,0,0,0,111,254,0,0,0,0,1,111,255,255,128,0,16,22,255,255,255,228,0,0,127,255,255,255,229,0,0,0,127,255,255,148,0,0,0,0,127,233,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,255,255,255,255,255,240,0,127,255,255,255,255,255,240,0,127,255,255,255,255,255,240,0,127,149,85,85,85,91,240,0,127,64,0,0,0,11,240,0,127,64,0,0,0,11,240,0,127,64,0,0,0,11,240,0,127,64,0,0,0,11,240,0,127,0,0,0,0,11,240,0,127,0,0,0,0,11,240,0,191,85,85,85,85,91,240,0,191,255,255,255,255,255,240,0,255,255,255,255,255,255,240,0,255,255,255,255,255,255,240,0,254,0,0,0,0,11,240,1,253,0,0,0,0,11,240,2,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,7,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,63,192,0,0,0,0,0,0,191,128,0,0,0,0,0,0,255,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0, + // 0x6240 所 + 64,98,36,36,68,38,1,252,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,31,192,47,255,255,255,240,0,2,255,244,47,255,255,255,241,1,191,255,244,47,255,255,255,242,255,255,254,0,0,0,0,0,2,255,255,144,0,0,0,0,0,2,255,208,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,248,0,0,0,7,255,255,255,194,248,0,0,0,7,255,255,255,194,248,0,0,0,7,255,255,255,194,248,0,0,0,7,240,0,47,194,248,0,0,0,7,240,0,47,194,255,255,255,254,7,240,0,47,195,255,255,255,254,7,240,0,47,195,255,255,255,254,7,240,0,47,195,253,85,255,84,7,240,0,47,195,248,0,191,0,7,255,255,255,195,244,0,191,0,7,255,255,255,195,244,0,191,0,7,255,255,255,195,244,0,191,0,7,240,0,0,7,240,0,191,0,7,240,0,0,7,240,0,191,0,7,240,0,0,11,240,0,191,0,11,240,0,0,15,224,0,191,0,11,224,0,0,15,208,0,191,0,15,224,0,0,47,192,0,191,0,15,208,0,0,63,192,0,191,0,15,192,0,0,127,64,0,191,0,31,192,0,0,255,0,0,191,0,47,192,0,1,254,0,0,191,0,63,64,0,3,252,0,0,191,0,191,0,0,15,244,0,0,191,0,255,0,0,15,240,0,0,191,0,61,0,0,3,192,0,0,191,0,8,0,0,0,64,0,0,190,0, + // 0x6247 扇 + 71,98,34,34,50,38,1,252,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,170,170,170,170,170,170,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,0,0,0,0,127,0,0,191,0,0,0,0,0,127,0,0,191,0,0,0,0,0,127,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,170,170,170,170,170,170,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,191,255,252,127,255,255,128,0,190,191,255,252,127,255,255,128,0,254,106,171,252,42,170,191,128,0,254,5,0,252,2,0,47,128,0,253,63,64,252,31,192,47,128,0,252,31,208,252,11,240,47,128,1,252,11,240,252,3,248,47,128,2,252,3,240,252,0,244,47,128,3,248,0,64,252,0,64,47,128,3,244,0,44,252,0,27,111,128,11,240,6,253,252,2,255,175,128,15,241,191,253,252,127,254,47,128,31,211,255,208,252,255,224,47,128,63,194,249,0,252,126,0,47,128,127,128,128,0,252,16,0,63,128,191,0,0,255,252,0,31,255,128,29,0,0,127,248,0,15,255,0,0,0,0,62,144,0,11,232,0, + // 0x624b 手 + 75,98,34,37,77,38,2,251,0,0,0,0,0,0,27,64,0,0,0,0,0,5,175,255,208,0,0,5,106,191,255,255,255,240,0,7,255,255,255,255,255,249,64,0,3,255,255,255,255,164,0,0,0,3,255,250,151,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,7,255,255,255,255,255,255,255,0,7,255,255,255,255,255,255,255,0,7,255,255,255,255,255,255,255,0,1,85,85,87,253,85,85,85,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,85,87,253,85,85,85,80,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,1,85,91,252,0,0,0,0,0,1,255,255,248,0,0,0,0,0,0,255,255,240,0,0,0,0,0,0,191,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6253 打 + 83,98,36,36,68,38,1,252,0,11,224,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,2,170,170,170,170,168,0,11,240,3,255,255,255,255,253,0,11,240,3,255,255,255,255,253,0,11,240,3,255,255,255,255,253,21,95,245,80,0,0,63,192,0,63,255,255,248,0,0,63,192,0,63,255,255,248,0,0,63,192,0,63,255,255,248,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,4,0,0,63,192,0,0,11,246,252,0,0,63,192,0,0,15,255,252,0,0,63,192,0,6,255,255,252,0,0,63,192,0,127,255,255,64,0,0,63,192,0,63,255,240,0,0,0,63,192,0,47,239,240,0,0,0,63,192,0,20,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,11,240,0,0,0,63,192,0,0,15,240,0,0,0,63,192,0,15,255,224,0,11,255,255,192,0,11,255,208,0,3,255,255,128,0,7,255,64,0,3,255,254,0,0,1,64,0,0,1,234,144,0,0, + // 0x6279 批 + 121,98,36,36,68,38,1,252,0,63,64,5,64,0,168,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,21,127,149,15,208,0,253,0,0,127,255,255,15,208,0,253,0,0,127,255,255,15,208,0,253,0,128,127,255,255,15,208,0,253,2,240,0,63,64,15,208,0,253,11,248,0,63,64,15,229,80,253,63,244,0,63,64,15,255,248,254,255,208,0,63,64,15,255,248,255,255,0,0,63,64,15,255,248,255,244,0,0,63,64,15,208,0,255,192,0,0,63,175,15,208,0,254,0,0,0,63,255,15,208,0,253,0,0,27,255,255,15,208,0,253,0,0,191,255,248,15,208,0,253,0,0,127,255,64,15,208,0,253,0,0,62,127,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,0,0,63,64,15,208,0,253,0,64,0,63,64,15,208,0,253,0,184,0,63,64,15,208,0,253,0,190,0,63,64,15,208,20,253,0,189,0,63,64,15,235,252,253,0,253,0,63,70,255,255,252,254,0,252,0,127,75,255,255,228,255,255,252,47,255,3,255,228,0,127,255,248,31,254,3,148,0,0,47,255,224,15,244,0,0,0,0,0,0,0, + // 0x6296 抖 + 150,98,36,36,68,38,1,252,0,15,192,0,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,15,0,3,244,0,0,15,192,0,63,224,3,244,0,0,15,192,0,47,252,3,244,0,0,15,192,0,7,255,67,244,0,21,95,213,64,0,191,195,244,0,63,255,255,240,0,31,67,244,0,63,255,255,240,0,6,3,244,0,63,255,255,240,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,144,0,3,244,0,0,15,192,1,253,0,3,244,0,0,15,192,3,255,192,3,244,0,0,15,192,0,191,248,3,244,0,0,15,192,16,15,254,3,244,0,0,15,235,240,1,252,3,244,0,0,31,255,240,0,52,3,244,0,27,255,255,240,0,0,3,244,0,127,255,254,64,0,0,3,244,0,63,255,208,0,0,0,3,250,252,63,159,192,0,0,1,175,255,253,16,15,192,0,26,255,255,255,254,0,15,192,15,255,255,255,254,144,0,15,192,15,255,255,235,244,0,0,15,192,15,254,144,3,244,0,0,15,192,5,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,15,192,0,0,0,3,244,0,0,31,192,0,0,0,3,244,0,31,255,192,0,0,0,3,244,0,15,255,192,0,0,0,3,244,0,15,254,0,0,0,0,3,244,0,0,0,0,0,0,0,1,80,0, + // 0x62bd 抽 + 189,98,35,37,77,38,1,251,0,31,192,0,0,7,224,0,0,0,31,192,0,0,7,240,0,0,0,31,192,0,0,7,240,0,0,0,31,192,0,0,7,240,0,0,0,31,192,0,0,7,240,0,0,0,31,192,0,0,7,240,0,0,0,31,192,0,0,7,240,0,0,21,111,213,64,0,7,240,0,0,127,255,255,192,0,7,240,0,0,127,255,255,207,255,255,255,255,248,127,255,255,207,255,255,255,255,248,0,31,192,15,255,255,255,255,248,0,31,192,15,229,91,245,87,248,0,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,219,207,208,7,240,3,248,0,31,255,207,208,7,240,3,248,2,255,255,223,255,255,255,255,248,191,255,254,79,255,255,255,255,248,191,255,208,15,255,255,255,255,248,127,255,192,15,229,91,245,87,248,52,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,192,15,208,7,240,3,248,0,31,192,15,229,91,245,87,248,0,31,192,15,255,255,255,255,248,0,31,192,15,255,255,255,255,248,0,47,192,15,255,255,255,255,248,31,255,192,15,208,0,0,3,248,15,255,64,15,208,0,0,3,248,15,249,0,11,208,0,0,1,164,0,0,0,0,0,0,0,0,0, + // 0x62d4 拔 + 212,98,36,37,77,38,1,251,0,31,192,0,7,240,1,0,0,0,31,192,0,7,240,15,128,0,0,31,192,0,7,240,47,244,0,0,31,192,0,7,240,11,255,0,0,31,192,0,7,240,0,255,208,0,31,192,0,7,240,0,47,224,0,31,192,0,7,240,0,7,192,21,111,213,64,7,240,0,1,0,127,255,255,218,175,250,170,170,168,127,255,255,223,255,255,255,255,252,127,255,255,223,255,255,255,255,252,0,31,192,0,11,240,0,0,0,0,31,192,0,11,240,0,0,0,0,31,192,0,15,240,0,0,0,0,31,192,0,15,244,0,42,0,0,31,192,0,15,248,0,63,0,0,31,192,0,15,252,0,127,0,0,31,199,192,15,252,0,191,0,0,31,255,192,31,253,0,254,0,2,255,255,208,47,255,0,253,0,191,255,254,64,63,191,65,252,0,191,255,208,0,63,111,194,252,0,127,255,192,0,127,15,195,244,0,56,31,192,0,191,11,231,240,0,0,31,192,0,254,7,255,240,0,0,31,192,1,252,2,255,208,0,0,31,192,3,252,0,255,192,0,0,31,192,3,244,0,255,128,0,0,31,192,15,240,1,255,208,0,0,31,192,31,224,7,255,244,0,0,31,192,63,192,15,255,253,0,0,31,192,191,64,127,226,255,128,0,47,194,255,2,255,128,191,244,31,255,203,252,15,254,0,31,254,15,255,67,240,7,248,0,3,252,15,249,0,208,1,208,0,0,112,0,0,0,0,0,0,0,0,0, + // 0x6309 按 + 9,99,36,37,77,38,1,251,0,31,192,0,0,15,224,0,0,0,31,192,0,0,15,224,0,0,0,31,192,0,0,15,224,0,0,0,31,192,0,0,15,224,0,0,0,31,192,0,0,15,224,0,0,0,31,192,31,255,255,255,255,252,0,31,192,31,255,255,255,255,252,21,111,213,95,255,255,255,255,252,127,255,255,223,192,0,0,1,252,127,255,255,223,192,16,0,1,252,127,255,255,223,192,127,64,1,252,0,31,192,31,192,191,0,1,252,0,31,192,31,192,255,0,1,252,0,31,192,0,0,253,0,0,0,0,31,192,0,1,252,0,0,0,0,31,192,0,3,252,0,0,0,0,31,192,47,255,255,255,255,253,0,31,198,239,255,255,255,255,253,0,31,255,255,255,255,255,255,253,1,191,255,208,15,208,0,255,0,127,255,255,128,31,192,0,254,0,191,255,208,0,63,128,1,253,0,127,255,192,0,63,64,2,252,0,57,31,192,0,191,0,3,248,0,0,31,192,0,255,128,11,244,0,0,31,192,1,255,249,15,240,0,0,31,192,2,255,255,255,208,0,0,31,192,1,185,255,255,192,0,0,31,192,0,0,31,255,192,0,0,31,192,0,0,11,255,248,0,0,31,192,0,0,127,255,255,64,0,31,192,0,27,255,194,255,224,0,47,192,22,255,254,0,127,252,31,255,192,191,255,224,0,11,252,15,255,64,63,253,0,0,1,244,15,249,0,46,64,0,0,0,96,0,0,0,0,0,0,0,0,0, + // 0x6389 掉 + 137,99,36,37,77,38,1,251,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,255,255,252,0,63,128,0,0,31,255,255,252,0,63,128,0,0,31,255,255,252,0,63,128,0,0,31,192,0,0,21,127,149,0,0,31,192,0,0,127,255,255,64,0,31,192,0,0,127,255,255,95,255,255,255,255,192,127,255,255,95,255,255,255,255,192,0,63,128,31,255,255,255,255,192,0,63,128,31,192,0,0,31,192,0,63,128,31,192,0,0,31,192,0,63,128,31,192,0,0,31,192,0,63,128,31,255,255,255,255,192,0,63,128,31,255,255,255,255,192,0,63,175,95,234,170,170,191,192,0,63,255,159,192,0,0,31,192,6,255,255,159,192,0,0,31,192,127,255,254,31,192,0,0,31,192,127,255,208,31,255,255,255,255,192,63,255,128,31,255,255,255,255,192,36,63,128,31,255,255,255,255,192,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,63,130,255,255,255,255,255,253,0,63,130,255,255,255,255,255,253,0,63,130,255,255,255,255,255,253,0,63,128,0,0,31,192,0,0,0,63,128,0,0,31,192,0,0,0,127,128,0,0,31,192,0,0,63,255,64,0,0,31,192,0,0,47,255,0,0,0,31,192,0,0,31,248,0,0,0,31,192,0,0,0,0,0,0,0,0,0,0,0, + // 0x63a2 探 + 162,99,36,36,68,38,1,252,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,63,255,255,255,255,248,0,63,64,63,255,255,255,255,248,0,63,64,63,255,255,255,255,248,0,63,64,63,0,0,0,1,248,0,63,64,63,2,160,63,1,248,21,127,149,63,3,240,63,1,248,127,255,255,63,7,240,63,1,248,127,255,255,42,7,240,63,0,0,127,255,255,0,15,224,63,0,80,0,63,64,0,31,208,63,0,125,0,63,64,0,127,192,63,64,189,0,63,64,6,255,0,63,255,252,0,63,64,127,253,0,47,255,248,0,63,64,63,224,0,11,255,224,0,63,91,14,0,15,208,0,0,0,63,255,0,0,15,208,0,0,0,127,255,0,0,15,208,0,0,111,255,255,0,0,15,208,0,0,191,255,224,127,255,255,255,255,252,127,255,64,127,255,255,255,255,252,57,63,64,127,255,255,255,255,252,0,63,64,0,2,255,255,0,0,0,63,64,0,3,255,255,64,0,0,63,64,0,15,255,255,192,0,0,63,64,0,47,223,223,240,0,0,63,64,0,191,143,215,252,0,0,63,64,2,255,15,210,255,0,0,63,64,15,252,15,208,191,192,0,63,64,127,240,15,208,63,244,0,63,67,255,192,15,208,15,254,0,127,67,255,0,15,208,3,252,47,255,0,244,0,15,208,0,180,31,254,0,0,0,15,208,0,0,15,244,0,0,0,15,208,0,0, + // 0x63a5 接 + 165,99,36,37,77,38,1,251,0,31,192,0,0,15,208,0,0,0,31,192,0,0,15,208,0,0,0,31,192,0,0,15,208,0,0,0,31,192,0,0,15,208,0,0,0,31,192,63,255,255,255,255,244,0,31,192,63,255,255,255,255,244,0,31,192,63,255,255,255,255,244,21,111,213,0,63,0,2,252,0,63,255,255,64,63,64,3,248,0,63,255,255,64,47,128,3,240,0,63,255,255,64,31,192,7,240,0,0,31,192,0,15,192,15,208,0,0,31,192,0,15,192,15,192,0,0,31,192,255,255,255,255,255,253,0,31,192,255,255,255,255,255,253,0,31,192,255,255,255,255,255,253,0,31,192,0,0,254,0,0,0,0,31,219,64,2,252,0,0,0,0,47,255,128,3,248,0,0,0,27,255,255,255,255,255,255,255,252,255,255,248,255,255,255,255,255,252,191,255,192,255,255,255,255,255,252,127,111,192,0,63,128,3,252,0,16,31,192,0,127,0,3,244,0,0,31,192,0,254,0,7,240,0,0,31,192,1,253,0,15,240,0,0,31,192,3,255,144,47,208,0,0,31,192,7,255,253,127,192,0,0,31,192,7,255,255,255,64,0,0,31,192,0,81,255,255,0,0,0,31,192,0,0,47,255,224,0,0,31,192,0,6,255,255,254,0,21,111,192,6,191,255,75,255,208,31,255,194,255,255,244,0,191,244,15,255,64,255,254,64,0,15,224,15,249,0,250,64,0,0,1,192,0,0,0,0,0,0,0,0,0, + // 0x63a7 控 + 167,99,36,36,68,38,1,252,0,47,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,191,255,255,255,255,252,0,63,64,191,255,255,255,255,252,0,63,64,191,255,255,255,255,252,21,127,149,190,3,240,63,0,252,127,255,255,190,7,240,63,0,252,127,255,255,190,7,240,63,0,252,127,255,255,190,11,224,63,0,168,0,63,64,0,15,224,63,0,0,0,63,64,0,15,208,63,0,160,0,63,64,0,47,192,63,0,188,0,63,64,0,191,64,63,64,252,0,63,64,7,255,0,63,255,252,0,63,91,127,252,0,47,255,244,0,63,255,63,208,0,11,255,208,1,191,255,29,0,0,0,0,0,47,255,253,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,127,255,64,15,255,255,255,255,224,57,63,64,15,255,255,255,255,224,0,63,64,15,255,255,255,255,224,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,15,192,0,0,0,63,64,0,0,31,208,0,0,0,127,65,255,255,255,255,255,253,47,255,1,255,255,255,255,255,253,31,254,1,255,255,255,255,255,253,15,244,0,0,0,0,0,0,0, + // 0x63d0 提 + 208,99,36,36,68,38,1,252,0,63,0,0,0,0,0,0,0,0,63,0,6,170,170,170,170,64,0,63,0,7,255,255,255,255,128,0,63,0,7,255,255,255,255,128,0,63,0,7,240,0,0,47,128,0,63,0,7,240,0,0,47,128,0,63,0,7,245,85,85,127,128,21,127,85,7,255,255,255,255,128,127,255,255,7,255,255,255,255,128,127,255,255,7,240,0,0,47,128,127,255,255,7,240,0,0,47,128,0,63,0,7,250,170,170,191,128,0,63,0,7,255,255,255,255,128,0,63,0,7,255,255,255,255,128,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,6,63,255,255,255,255,248,0,63,255,127,255,255,255,255,248,1,191,255,127,255,255,255,255,248,127,255,254,0,0,15,192,0,0,191,255,144,1,80,15,192,0,0,127,255,0,3,244,15,192,0,0,57,63,0,3,240,15,192,0,0,0,63,0,7,240,15,255,255,192,0,63,0,11,224,15,255,255,192,0,63,0,15,240,15,255,255,128,0,63,0,15,244,15,192,0,0,0,63,0,47,252,15,192,0,0,0,63,0,63,191,15,192,0,0,0,63,0,191,47,223,192,0,0,0,63,1,253,15,255,208,0,0,63,255,7,252,3,255,255,255,254,31,255,15,240,0,191,255,255,252,15,248,3,208,0,6,255,255,252,0,0,0,64,0,0,0,0,0, + // 0x63d2 插 + 210,99,35,36,68,38,1,252,0,47,64,0,0,0,0,0,0,0,63,64,0,0,0,1,111,64,0,63,64,0,1,90,255,255,192,0,63,64,47,255,255,255,255,224,0,63,64,31,255,255,255,164,0,0,63,64,15,250,175,208,0,0,0,63,64,0,0,15,208,0,0,21,127,149,0,0,15,208,0,0,127,255,255,0,0,15,208,0,0,127,255,255,191,255,255,255,255,252,127,255,255,191,255,255,255,255,252,0,63,64,191,255,255,255,255,252,0,63,64,0,0,15,208,0,0,0,63,64,0,0,15,208,0,0,0,63,64,0,1,15,208,0,0,0,63,64,0,15,143,208,0,0,0,63,64,57,191,255,215,255,240,0,63,175,63,255,239,215,255,240,0,63,255,63,249,15,215,255,240,11,255,255,63,128,15,208,3,240,191,255,248,63,64,15,208,3,240,191,255,64,63,64,15,208,3,240,127,127,64,63,64,15,208,3,240,16,63,64,63,255,143,211,255,240,0,63,64,63,255,143,211,255,240,0,63,64,63,255,143,211,255,240,0,63,64,63,64,15,208,3,240,0,63,64,63,64,15,208,3,240,0,63,64,63,64,15,208,3,240,0,63,64,63,64,15,208,3,240,0,63,64,63,64,15,208,3,240,0,63,64,63,255,255,255,255,240,0,127,64,63,255,255,255,255,240,47,255,0,63,255,255,255,255,240,31,254,0,63,64,0,0,3,240,15,244,0,47,64,0,0,3,240, + // 0x63db 換 + 219,99,35,37,77,38,1,251,0,47,64,0,15,144,0,0,0,0,63,64,0,31,192,0,0,0,0,63,64,0,63,192,0,0,0,0,63,64,0,127,255,254,0,0,0,63,64,0,255,255,255,128,0,0,63,64,2,255,255,255,64,0,0,63,64,7,244,0,255,0,0,21,127,149,31,224,1,253,0,0,127,255,255,191,192,3,248,0,0,127,255,255,255,255,255,255,255,224,127,255,255,255,255,255,255,255,224,0,63,64,63,255,255,255,255,224,0,63,64,31,129,244,188,7,224,0,63,64,31,129,240,188,7,224,0,63,64,31,131,240,188,7,224,0,63,64,31,135,224,124,7,224,0,63,65,31,143,192,127,255,224,0,63,191,31,255,64,63,255,224,0,127,255,31,173,0,1,91,224,111,255,255,31,128,0,0,7,224,191,255,224,31,128,31,192,7,224,127,255,64,15,128,31,192,6,144,57,63,64,0,0,47,128,0,0,0,63,64,255,255,255,255,255,252,0,63,64,255,255,255,255,255,252,0,63,64,255,255,255,255,255,252,0,63,64,0,0,191,244,0,0,0,63,64,0,0,255,252,0,0,0,63,64,0,2,253,254,0,0,0,63,64,0,11,248,191,128,0,0,63,64,0,47,240,63,224,0,0,63,64,1,255,192,31,253,0,0,127,64,47,255,0,7,255,228,47,255,7,255,248,0,0,255,252,31,254,3,255,128,0,0,31,244,15,244,1,228,0,0,0,0,160,0,0,0,0,0,0,0,0,0, + // 0x64c7 擇 + 199,100,36,37,77,38,1,251,0,63,64,0,0,0,0,0,0,0,63,64,5,85,85,85,85,80,0,63,64,31,255,255,255,255,244,0,63,64,31,255,255,255,255,244,0,63,64,31,129,244,47,2,244,0,63,64,31,129,244,47,2,244,0,63,64,31,129,244,47,2,244,21,127,149,31,214,249,111,151,244,127,255,255,31,255,255,255,255,244,127,255,255,31,255,255,255,255,244,127,255,255,0,0,15,208,0,0,0,63,64,0,0,15,208,0,0,0,63,64,15,255,255,255,255,224,0,63,64,15,255,255,255,255,224,0,63,64,6,170,175,250,170,144,0,63,64,0,0,15,208,0,0,0,63,65,0,0,15,208,0,0,0,63,255,191,255,255,255,255,253,0,127,255,255,255,255,255,255,253,111,255,255,170,255,234,171,255,169,191,255,224,0,63,64,2,252,0,127,255,64,0,47,128,3,244,0,62,127,64,0,31,192,7,240,0,16,63,64,42,175,234,175,250,168,0,63,64,127,255,255,255,255,252,0,63,64,127,255,255,255,255,252,0,63,64,0,0,15,208,0,0,0,63,64,0,0,15,208,0,0,0,63,64,26,170,175,250,170,160,0,63,64,31,255,255,255,255,240,0,63,64,31,255,255,255,255,240,0,63,64,0,0,15,208,0,0,0,127,64,0,0,15,208,0,0,47,255,0,0,0,15,208,0,0,31,254,0,0,0,15,208,0,0,15,244,0,0,0,15,208,0,0,0,0,0,0,0,0,0,0,0, + // 0x64ca 擊 + 202,100,34,36,68,38,2,252,0,3,240,0,0,0,0,0,0,0,3,240,0,2,255,255,208,0,127,255,255,255,194,255,255,208,0,127,255,255,255,194,249,95,208,0,0,3,240,0,2,244,11,208,224,31,255,255,254,3,240,11,225,240,31,87,245,126,11,240,7,255,240,31,87,245,126,63,208,3,255,208,31,255,255,254,47,128,0,105,64,31,3,240,62,14,85,85,84,0,31,255,255,254,31,255,255,255,0,5,87,245,85,31,255,255,253,0,0,3,240,0,1,244,1,252,0,255,255,255,255,192,253,7,240,0,255,255,255,255,192,127,175,192,0,15,67,240,61,0,31,255,0,0,15,67,240,61,6,191,255,128,0,15,255,255,253,63,255,255,254,64,15,255,255,253,31,228,11,255,240,0,0,0,0,26,106,252,111,208,0,255,255,255,255,255,255,0,64,0,255,255,255,254,165,64,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,7,255,255,255,255,255,255,254,0,7,255,255,255,255,255,255,254,0,0,0,0,3,252,0,0,0,0,0,0,0,3,248,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,85,85,85,87,253,85,85,85,80,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,10,171,248,0,0,0,0,0,0,15,255,244,0,0,0,0,0,0,7,255,144,0,0,0,0, + // 0x64cb 擋 + 203,100,35,36,68,38,1,252,0,63,64,0,64,15,192,4,0,0,63,64,7,224,15,192,31,192,0,63,64,3,244,15,192,63,128,0,63,64,2,252,15,192,127,0,0,63,64,0,252,15,192,254,0,0,63,64,0,253,15,192,252,0,0,63,64,63,255,255,255,255,248,21,127,149,63,255,255,255,255,252,127,255,255,127,255,255,255,255,252,127,255,255,127,0,0,0,1,252,127,255,255,127,0,0,0,1,252,0,63,64,63,85,85,85,86,252,0,63,64,63,255,255,255,255,252,0,63,64,0,255,255,255,253,0,0,63,64,0,253,0,0,253,0,0,63,64,0,253,0,0,253,0,0,63,65,0,253,0,0,253,0,0,63,255,0,255,255,255,253,0,0,127,255,0,255,255,255,253,0,47,255,255,0,85,85,85,84,0,191,255,228,0,0,0,0,0,0,127,255,64,10,170,170,170,170,144,61,63,64,15,255,255,255,255,224,0,63,64,15,255,255,255,255,224,0,63,64,15,192,15,192,11,224,0,63,64,15,192,15,192,11,224,0,63,64,15,229,95,229,95,224,0,63,64,15,255,255,255,255,224,0,63,64,15,255,255,255,255,224,0,63,64,15,192,15,192,11,224,0,63,64,15,192,15,192,11,224,0,63,64,15,192,15,192,11,224,0,127,64,15,255,255,255,255,224,47,255,0,15,255,255,255,255,224,31,254,0,15,234,170,170,175,224,15,244,0,15,192,0,0,11,224, + // 0x64e0 擠 + 224,100,36,37,77,38,1,251,0,63,0,0,0,15,192,0,0,0,63,0,0,0,15,192,0,0,0,63,0,0,0,15,192,0,0,0,63,1,255,255,255,255,255,252,0,63,1,255,255,255,255,255,252,0,63,1,255,255,255,255,255,252,0,63,0,0,2,208,30,0,0,21,127,84,0,2,240,63,0,0,127,255,253,0,0,244,61,2,240,127,255,253,255,255,248,190,47,244,127,255,253,255,255,224,119,255,192,0,63,0,95,159,143,135,215,192,0,63,0,31,15,79,135,195,208,0,63,0,47,15,79,135,194,240,0,63,0,62,15,79,135,193,240,0,63,0,125,31,79,135,234,252,0,63,94,249,255,15,159,254,126,0,63,255,240,254,15,143,228,44,2,255,254,128,80,10,64,0,0,127,255,248,7,240,0,0,47,128,191,255,64,7,240,0,0,47,128,127,255,0,7,255,255,255,255,128,56,63,0,7,255,255,255,255,128,0,63,0,7,255,255,255,255,128,0,63,0,7,240,0,0,47,128,0,63,0,7,240,0,0,47,128,0,63,0,11,240,0,0,47,128,0,63,0,11,255,255,255,255,128,0,63,0,15,255,255,255,255,128,0,63,0,15,255,255,255,255,128,0,63,0,47,192,0,0,47,128,0,63,0,63,128,0,0,47,128,0,127,0,191,0,0,0,47,128,63,255,2,254,0,0,0,47,128,31,254,2,252,0,0,0,47,128,15,228,0,112,0,0,0,47,128,0,0,0,0,0,0,0,0,0, + // 0x6536 收 + 54,101,36,36,68,38,1,252,0,0,6,160,0,169,0,0,0,0,0,11,240,0,254,0,0,0,0,0,11,240,1,253,0,0,0,0,0,11,240,2,252,0,0,0,1,80,11,240,3,252,0,0,0,3,240,11,240,3,248,0,0,0,3,240,11,240,11,244,0,0,0,3,240,11,240,15,255,255,255,254,3,240,11,240,31,255,255,255,254,3,240,11,240,47,255,255,255,254,3,240,11,240,63,229,85,111,228,3,240,11,240,191,208,0,47,192,3,240,11,240,255,240,0,63,192,3,240,11,243,255,240,0,63,128,3,240,11,251,255,244,0,127,64,3,240,11,255,247,248,0,191,0,3,240,11,255,226,252,0,254,0,3,240,11,247,192,253,1,253,0,3,240,11,241,64,254,3,252,0,3,240,11,240,0,191,3,248,0,3,240,11,240,0,63,139,240,0,3,240,11,240,0,63,207,240,0,3,240,111,240,0,31,255,208,0,3,255,255,240,0,15,255,192,0,47,255,255,240,0,7,255,64,0,127,255,255,240,0,3,254,0,0,63,253,11,240,0,11,255,0,0,63,64,11,240,0,47,255,192,0,0,0,11,240,0,191,255,240,0,0,0,11,240,2,255,143,252,0,0,0,11,240,31,253,7,255,64,0,0,11,240,191,244,1,255,224,0,0,11,251,255,208,0,127,253,0,0,11,251,255,0,0,31,253,0,0,11,243,248,0,0,2,248,0,0,11,225,128,0,0,0,96, + // 0x653e 放 + 62,101,36,37,77,38,1,251,0,2,248,0,0,30,128,0,0,0,2,252,0,0,47,192,0,0,0,2,252,0,0,63,192,0,0,0,2,252,0,0,63,128,0,0,0,2,252,0,0,63,64,0,0,0,2,252,0,0,127,0,0,0,63,255,255,255,208,191,0,0,0,63,255,255,255,208,255,255,255,253,63,255,255,255,209,255,255,255,253,21,127,85,85,66,255,255,255,253,0,63,0,0,3,253,85,127,212,0,63,0,0,7,252,0,63,128,0,63,0,0,15,252,0,63,64,0,63,0,0,15,253,0,127,0,0,63,255,255,63,254,0,191,0,0,63,255,255,127,255,0,254,0,0,63,255,255,255,191,0,253,0,0,63,64,191,191,63,65,252,0,0,63,0,127,45,47,195,252,0,0,63,0,127,4,31,195,248,0,0,63,0,191,0,15,231,240,0,0,127,0,191,0,11,255,240,0,0,127,0,191,0,7,255,208,0,0,191,0,190,0,3,255,192,0,0,190,0,190,0,1,255,128,0,0,253,0,190,0,0,255,0,0,0,253,0,190,0,2,255,128,0,1,252,0,254,0,7,255,208,0,3,252,0,254,0,31,255,240,0,7,248,0,253,0,127,239,252,0,15,240,0,253,2,255,131,255,0,31,224,0,253,15,254,1,255,208,63,192,2,252,191,248,0,127,252,255,130,255,254,255,224,0,31,253,63,1,255,244,255,0,0,3,244,12,0,255,208,116,0,0,0,160,0,0,0,0,0,0,0,0,0, + // 0x6557 敗 + 87,101,36,36,68,38,1,252,0,0,0,0,0,21,0,0,0,0,0,0,0,0,63,192,0,0,11,255,255,255,0,63,128,0,0,11,255,255,255,0,127,64,0,0,11,255,255,255,0,191,0,0,0,11,240,0,127,0,255,0,0,0,11,240,0,127,0,254,0,0,0,11,240,0,127,2,255,255,255,253,11,240,0,127,3,255,255,255,253,11,255,255,255,7,255,255,255,253,11,255,255,255,11,249,85,127,148,11,250,170,255,15,248,0,127,64,11,240,0,127,47,252,0,127,0,11,240,0,127,127,252,0,191,0,11,240,0,127,255,253,0,255,0,11,240,0,127,255,254,0,254,0,11,255,255,255,253,191,1,253,0,11,255,255,255,248,127,2,252,0,11,250,170,255,32,63,131,252,0,11,240,0,127,0,63,199,248,0,11,240,0,127,0,31,219,240,0,11,240,0,127,0,15,239,240,0,11,240,0,127,0,11,255,208,0,11,255,255,255,0,3,255,192,0,11,255,255,255,0,3,255,64,0,7,255,255,255,0,1,255,0,0,0,16,0,64,0,3,255,128,0,0,191,7,240,0,15,255,208,0,0,255,7,248,0,63,255,244,0,1,253,2,253,0,255,223,253,0,3,252,0,255,7,255,67,255,64,11,244,0,127,175,253,0,255,224,31,224,0,47,255,244,0,63,254,127,192,0,9,255,208,0,15,252,47,64,0,0,126,0,0,2,244,5,0,0,0,36,0,0,0,96, + // 0x6574 整 + 116,101,34,35,59,38,2,253,0,2,244,0,0,14,64,0,0,0,2,244,0,0,31,192,0,0,85,87,249,85,80,63,128,0,0,191,255,255,255,224,63,64,0,0,191,255,255,255,224,191,255,255,240,0,2,244,0,0,255,255,255,240,0,2,248,0,2,255,255,255,240,47,255,255,255,199,252,0,253,0,47,255,255,255,223,253,1,252,0,47,2,244,15,255,255,2,248,0,47,2,244,15,255,127,67,240,0,47,66,248,31,206,31,207,240,0,47,255,255,255,192,11,255,192,0,47,255,255,255,192,3,255,64,0,0,47,255,64,0,2,255,0,0,0,255,255,244,0,31,255,224,0,7,254,250,255,64,191,239,253,0,111,226,244,127,159,255,67,255,224,255,130,244,11,63,248,0,191,240,60,2,244,0,31,128,0,11,208,0,0,80,0,4,0,0,0,64,11,255,255,255,255,255,255,254,0,11,255,255,255,255,255,255,254,0,11,255,255,255,255,255,255,254,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,15,192,3,248,0,0,0,0,0,15,192,3,255,255,255,192,0,0,15,192,3,255,255,255,192,0,0,15,192,3,254,170,170,128,0,0,15,192,3,248,0,0,0,0,0,15,192,3,248,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x6578 數 + 120,101,36,36,68,38,1,252,0,0,63,0,0,1,232,0,0,0,0,63,0,0,2,252,0,0,3,255,255,255,248,2,252,0,0,3,255,255,255,248,3,248,0,0,3,245,127,86,248,3,244,0,0,3,240,63,2,248,7,240,0,0,107,240,63,66,254,135,240,0,0,127,255,255,255,255,203,255,255,253,127,255,255,255,255,207,255,255,253,3,240,63,2,248,15,255,255,253,3,245,127,86,248,31,213,95,212,3,255,255,255,248,47,192,15,192,3,255,255,255,248,63,208,31,192,0,0,63,0,0,127,224,31,192,1,85,127,85,84,255,224,47,128,15,255,255,255,254,255,240,63,128,15,255,255,255,255,255,240,63,64,15,192,63,0,191,251,244,127,0,15,192,63,0,190,242,248,191,0,15,255,255,255,253,81,252,254,0,15,255,255,255,253,0,253,253,0,1,86,253,85,84,0,255,252,0,0,3,244,0,0,0,127,248,0,106,175,250,170,170,128,63,240,0,127,255,255,255,255,192,63,240,0,127,255,255,255,255,192,31,208,0,0,63,0,15,192,0,63,240,0,0,191,0,47,192,0,127,244,0,1,255,224,127,64,0,255,252,0,3,255,255,254,0,3,254,255,0,0,97,255,252,0,15,244,191,128,0,0,191,255,64,127,208,63,224,0,111,255,255,226,255,128,31,252,15,255,248,31,247,254,0,7,252,11,255,128,2,209,244,0,1,244,7,144,0,0,0,144,0,0,16, + // 0x6599 料 + 153,101,36,36,68,38,1,252,0,2,160,0,0,0,1,252,0,0,7,240,0,0,0,1,252,0,0,7,240,20,0,0,1,252,0,63,7,240,63,2,208,1,252,0,47,7,240,126,3,252,1,252,0,31,71,240,189,3,255,65,252,0,15,135,240,252,0,191,209,252,0,15,199,240,252,0,31,241,252,0,11,199,241,244,0,3,209,252,0,7,215,242,240,0,0,129,252,0,7,215,243,224,0,0,1,252,0,3,71,241,208,0,0,1,252,0,0,7,240,0,8,0,1,252,0,63,255,255,255,47,64,1,252,0,63,255,255,255,127,240,1,252,0,63,255,255,255,31,253,1,252,0,21,111,245,85,2,255,65,252,0,0,63,248,0,0,127,1,252,0,0,63,253,0,0,29,1,252,0,0,191,255,64,0,0,1,252,0,0,255,255,192,0,0,1,252,0,1,251,251,240,0,0,1,253,188,3,247,243,248,0,0,27,255,253,7,231,241,253,0,111,255,255,254,15,215,240,253,191,255,255,255,228,31,199,240,116,255,255,255,252,0,63,71,240,16,255,249,65,252,0,191,7,240,0,164,0,1,252,0,126,7,240,0,0,0,1,252,0,60,7,240,0,0,0,1,252,0,20,7,240,0,0,0,1,252,0,0,7,240,0,0,0,1,252,0,0,7,240,0,0,0,1,252,0,0,7,240,0,0,0,1,252,0,0,7,240,0,0,0,1,252,0,0,7,240,0,0,0,1,252,0, + // 0x659c 斜 + 156,101,36,36,68,38,1,252,0,0,255,0,0,0,0,127,0,0,2,255,192,0,0,0,127,0,0,3,255,240,0,0,0,127,0,0,11,255,253,0,30,0,127,0,0,31,227,255,64,191,128,127,0,0,63,192,255,208,63,240,127,0,0,191,64,63,240,11,252,127,0,2,254,0,15,252,2,254,127,0,7,252,0,3,240,0,190,191,0,31,240,0,1,208,0,56,127,0,127,255,255,255,128,0,0,127,0,255,255,255,255,128,0,0,127,0,61,255,255,255,128,112,0,127,0,20,0,127,0,1,253,0,127,0,0,0,127,0,2,255,64,127,0,0,0,127,0,0,127,208,127,0,0,0,127,0,0,31,244,127,0,63,255,255,255,248,7,252,127,0,63,255,255,255,248,1,240,127,0,63,255,255,255,248,0,64,127,0,0,0,127,0,0,0,0,127,0,0,0,127,0,0,0,0,127,253,1,144,127,7,64,0,6,255,254,3,248,127,31,192,27,255,255,254,3,240,127,15,199,255,255,255,228,7,240,127,11,227,255,255,255,0,11,224,127,3,243,255,144,127,0,15,208,127,3,246,144,0,127,0,47,192,127,2,252,0,0,127,0,63,64,127,0,252,0,0,127,0,191,0,127,0,244,0,0,127,0,45,0,127,0,0,0,0,127,0,4,0,191,0,0,0,0,127,0,0,63,255,0,0,0,0,127,0,0,63,253,0,0,0,0,127,0,0,47,228,0,0,0,0,127,0, + // 0x65b0 新 + 176,101,36,36,68,38,1,252,0,0,169,0,0,0,0,0,0,0,0,253,0,0,0,0,27,208,0,0,253,0,0,0,6,255,244,0,0,253,0,0,145,191,255,244,47,255,255,255,241,255,255,254,0,47,255,255,255,241,255,254,64,0,47,255,255,255,241,254,64,0,0,0,180,0,57,1,252,0,0,0,1,248,0,127,1,252,0,0,0,0,252,0,189,1,252,0,0,0,0,189,0,252,1,252,0,0,0,0,126,1,248,1,252,0,0,0,0,121,1,180,1,252,0,0,0,63,255,255,255,249,255,255,255,253,63,255,255,255,249,255,255,255,253,63,255,255,255,249,255,255,255,253,0,0,253,0,1,253,85,254,84,0,0,253,0,1,252,0,253,0,0,0,253,0,1,252,0,253,0,63,255,255,255,241,252,0,253,0,63,255,255,255,241,252,0,253,0,63,255,255,255,242,252,0,253,0,0,3,254,0,2,248,0,253,0,0,11,255,64,3,248,0,253,0,0,15,255,224,3,244,0,253,0,0,63,255,252,3,240,0,253,0,0,255,255,255,7,240,0,253,0,2,252,253,127,207,240,0,253,0,11,244,253,31,79,208,0,253,0,47,240,253,10,47,192,0,253,0,191,192,253,0,63,128,0,253,0,63,0,253,0,255,0,0,253,0,12,0,253,2,254,0,0,253,0,0,0,253,3,252,0,0,253,0,0,0,253,0,244,0,0,253,0,0,0,253,0,32,0,0,169,0, + // 0x65b7 斷 + 183,101,34,36,68,38,3,252,0,4,0,16,0,0,0,16,0,164,30,0,60,0,0,1,252,0,252,60,0,184,0,0,31,255,64,252,184,65,241,1,7,255,254,0,254,242,231,211,194,255,255,208,0,254,243,199,203,130,255,248,0,0,252,255,130,255,2,253,0,0,0,252,63,0,253,2,244,0,0,0,252,45,64,125,130,244,0,0,0,252,60,224,178,210,244,0,0,0,252,186,240,246,242,244,0,0,0,255,255,255,255,242,244,0,0,0,254,148,59,148,114,244,0,0,0,252,0,0,0,2,255,255,255,208,255,255,255,255,226,255,255,255,208,255,255,255,255,226,255,255,255,208,254,175,170,190,146,248,7,240,0,252,45,0,124,3,244,7,240,0,252,60,0,244,3,244,7,240,0,253,244,67,226,67,244,7,240,0,255,243,219,199,195,244,7,240,0,252,251,195,239,67,244,7,240,0,252,127,64,254,3,240,7,240,0,252,46,0,124,3,240,7,240,0,252,61,208,182,199,240,7,240,0,252,180,241,241,231,240,7,240,0,255,255,255,255,251,240,7,240,0,255,250,127,233,191,224,7,240,0,252,0,0,0,127,208,7,240,0,252,0,0,0,31,192,7,240,0,255,255,255,255,255,128,7,240,0,255,255,255,255,255,64,7,240,0,255,255,255,255,255,0,7,240,0,252,0,0,0,254,0,7,240,0,252,0,0,0,124,0,7,240,0,84,0,0,0,20,0,7,240,0, + // 0x65bc 於 + 188,101,36,37,77,38,1,251,0,3,248,0,0,2,252,0,0,0,3,248,0,0,3,254,0,0,0,3,248,0,0,7,255,0,0,0,3,248,0,0,11,255,64,0,0,3,248,0,0,15,239,192,0,0,3,248,0,0,47,207,208,0,63,255,255,255,192,63,75,240,0,63,255,255,255,192,191,3,248,0,63,255,255,255,193,254,2,252,0,21,191,85,85,67,252,0,255,0,0,127,0,0,11,244,0,191,128,0,127,0,0,31,240,0,63,208,0,127,0,0,63,208,0,31,244,0,127,0,0,255,128,0,11,253,0,127,0,2,255,0,0,3,253,0,127,255,253,252,2,0,0,252,0,191,255,253,176,15,208,0,52,0,191,255,253,0,47,248,0,0,0,191,0,253,0,7,255,0,0,0,254,0,252,0,1,255,192,0,0,254,0,252,0,0,63,240,0,0,254,0,252,0,0,15,240,0,0,253,0,252,0,0,3,192,0,0,253,0,252,0,0,0,0,0,1,252,0,252,0,0,0,0,0,2,252,1,252,0,128,0,0,0,2,248,1,252,3,249,0,0,0,3,248,1,252,11,255,128,0,0,7,244,1,252,2,255,248,0,0,11,240,2,252,0,47,255,64,0,15,224,2,252,0,7,255,224,0,31,208,3,248,0,0,127,253,0,63,192,7,248,0,0,15,255,64,191,67,255,244,0,0,2,255,128,63,3,255,240,0,0,0,63,0,12,2,255,128,0,0,0,12,0,0,0,0,0,0,0,0,0,0, + // 0x6607 昇 + 7,102,34,34,50,38,2,252,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,253,0,0,0,0,11,240,0,0,253,0,0,0,0,11,240,0,0,254,170,170,170,170,175,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,253,0,0,0,0,11,240,0,0,253,0,0,0,0,11,240,0,0,253,0,0,0,0,11,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,0,1,128,0,0,0,0,0,0,1,191,240,7,244,0,0,0,91,255,255,252,7,244,0,0,15,255,255,255,144,7,244,0,0,11,255,255,208,0,7,244,0,0,7,165,31,192,0,7,244,0,0,0,0,31,192,0,7,244,0,0,0,0,31,192,0,7,244,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,63,128,0,7,244,0,0,0,0,191,64,0,7,244,0,0,0,1,255,0,0,7,244,0,0,0,7,254,0,0,7,244,0,0,0,47,252,0,0,7,244,0,0,2,255,240,0,0,7,244,0,0,31,255,128,0,0,7,244,0,0,11,248,0,0,0,7,244,0,0,3,128,0,0,0,7,244,0,0, + // 0x660e 明 + 14,102,33,36,68,38,3,251,0,0,0,0,85,85,85,85,0,0,0,0,0,255,255,255,255,64,255,255,255,128,255,255,255,255,64,255,255,255,128,255,255,255,255,64,255,255,255,128,253,0,0,63,64,253,0,47,128,253,0,0,63,64,253,0,47,128,253,0,0,63,64,253,0,47,128,253,0,0,63,64,253,0,47,128,253,0,0,63,64,253,0,47,128,253,0,0,63,64,253,0,47,128,255,255,255,255,64,255,255,255,128,255,255,255,255,64,255,255,255,128,255,255,255,255,64,255,255,255,128,253,0,0,127,64,253,0,47,128,253,0,0,63,64,253,0,47,128,253,0,0,63,64,253,0,47,128,252,0,0,63,64,253,0,47,129,252,0,0,63,64,253,0,47,129,252,0,0,63,64,253,0,47,129,255,255,255,255,64,253,0,47,130,255,255,255,255,64,255,255,255,130,255,255,255,255,64,255,255,255,131,248,0,0,127,64,255,255,255,131,244,0,0,63,64,254,85,85,7,240,0,0,63,64,253,0,0,15,240,0,0,63,64,253,0,0,15,208,0,0,63,64,253,0,0,63,192,0,0,63,64,0,0,0,127,128,0,0,63,64,0,0,0,255,64,0,0,63,64,0,0,2,254,0,0,0,63,64,0,0,11,252,0,1,85,191,0,0,0,47,244,0,3,255,255,0,0,0,31,208,0,2,255,254,0,0,0,7,64,0,1,255,228,0,0,0,0,0,0,0,0,0,0, + // 0x662f 是 + 47,102,36,36,68,38,1,251,0,42,170,170,170,170,170,164,0,0,63,255,255,255,255,255,248,0,0,63,255,255,255,255,255,248,0,0,63,128,0,0,0,3,248,0,0,63,128,0,0,0,3,248,0,0,63,128,0,0,0,3,248,0,0,63,255,255,255,255,255,248,0,0,63,255,255,255,255,255,248,0,0,63,213,85,85,85,87,248,0,0,63,128,0,0,0,3,248,0,0,63,128,0,0,0,3,248,0,0,63,255,255,255,255,255,248,0,0,63,255,255,255,255,255,248,0,0,42,170,170,170,170,170,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,0,0,0,0,127,0,0,0,0,0,1,164,0,127,0,0,0,0,0,3,252,0,127,0,0,0,0,0,3,248,0,127,0,0,0,0,0,7,244,0,127,255,255,255,0,0,11,240,0,127,255,255,255,0,0,15,248,0,127,255,255,255,0,0,47,253,0,127,0,0,0,0,0,63,255,0,127,0,0,0,0,0,191,191,208,127,0,0,0,0,1,255,31,248,127,0,0,0,0,7,252,11,255,255,0,0,0,0,31,248,1,255,255,255,255,255,253,127,224,0,47,255,255,255,255,252,47,128,0,1,191,255,255,255,248,10,0,0,0,0,5,85,85,80,0,0,0,0,0,0,0,0,0, + // 0x6642 時 + 66,102,34,36,68,38,3,252,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,255,255,252,0,0,127,64,0,0,255,255,252,0,0,127,64,0,0,255,255,252,63,255,255,255,255,0,252,1,252,63,255,255,255,255,0,252,1,252,63,255,255,255,255,0,252,1,252,0,0,127,64,0,0,252,1,252,0,0,127,64,0,0,252,1,252,0,0,127,64,0,0,252,1,252,0,0,127,64,0,0,252,1,253,255,255,255,255,255,208,252,1,253,255,255,255,255,255,208,255,255,253,255,255,255,255,255,208,255,255,252,0,0,0,31,192,0,255,255,252,0,0,0,31,192,0,252,1,252,0,0,0,31,192,0,252,1,252,0,0,0,31,192,0,252,1,252,255,255,255,255,255,192,252,1,252,255,255,255,255,255,192,252,1,252,255,255,255,255,255,192,252,1,252,0,0,0,31,192,0,252,1,252,0,128,0,31,192,0,252,1,252,11,240,0,31,192,0,255,255,252,11,248,0,31,192,0,255,255,252,3,253,0,31,192,0,255,255,252,0,255,0,31,192,0,253,0,0,0,127,192,31,192,0,252,0,0,0,63,192,31,192,0,252,0,0,0,15,64,31,192,0,252,0,0,0,4,0,31,192,0,0,0,0,0,0,80,47,192,0,0,0,0,0,0,191,255,192,0,0,0,0,0,0,63,255,128,0,0,0,0,0,0,63,249,0,0, + // 0x66ab 暫 + 171,102,34,36,68,38,2,252,0,1,244,0,0,0,0,4,0,0,2,244,0,0,0,6,254,0,0,2,248,0,3,150,255,255,128,191,255,255,255,211,255,255,253,0,191,255,255,255,211,255,250,64,0,0,2,244,0,3,245,0,0,0,47,255,255,255,131,240,0,0,0,47,171,254,175,131,240,0,0,0,47,2,244,15,131,240,0,0,0,47,171,254,175,131,255,255,255,240,47,255,255,255,135,255,255,255,240,47,2,244,15,135,255,255,255,240,47,171,254,191,139,224,11,224,0,47,255,255,255,143,208,11,224,0,0,2,244,0,15,192,11,224,0,0,2,248,0,47,192,11,224,0,255,255,255,255,255,64,11,224,0,255,255,255,255,255,0,11,224,0,0,2,244,2,253,0,11,224,0,0,2,244,0,180,0,11,224,0,0,1,80,0,16,0,1,80,0,0,42,170,170,170,170,170,128,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,128,0,0,0,63,192,0,0,47,128,0,0,0,63,192,0,0,47,213,85,85,85,127,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,128,0,0,0,63,192,0,0,47,128,0,0,0,63,192,0,0,47,128,0,0,0,63,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,128,0,0,0,47,128,0, + // 0x66f4 更 + 244,102,35,34,50,38,2,252,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,0,0,0,2,253,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,253,0,2,252,0,1,252,0,0,253,0,2,252,0,1,252,0,0,253,0,2,252,0,1,252,0,0,255,170,171,255,170,171,252,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,253,0,2,252,0,1,252,0,0,253,0,2,252,0,1,252,0,0,253,0,2,252,0,1,252,0,0,253,0,2,252,0,1,252,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,252,0,0,7,64,7,244,0,0,0,0,0,63,192,15,240,0,0,0,0,0,15,244,31,224,0,0,0,0,0,7,253,127,192,0,0,0,0,0,1,255,255,64,0,0,0,0,0,0,127,255,0,0,0,0,0,0,1,191,255,228,0,0,0,0,0,111,255,255,255,250,84,0,0,111,255,254,27,255,255,255,255,244,191,255,208,0,111,255,255,255,240,63,249,0,0,0,107,255,255,224,9,0,0,0,0,0,0,85,64, + // 0x6700 最 + 0,103,34,35,59,38,2,252,0,21,85,85,85,85,85,64,0,0,63,255,255,255,255,255,208,0,0,63,255,255,255,255,255,208,0,0,63,0,0,0,0,15,208,0,0,63,0,0,0,0,15,208,0,0,63,255,255,255,255,255,208,0,0,63,255,255,255,255,255,208,0,0,63,64,0,0,0,31,208,0,0,63,0,0,0,0,15,208,0,0,63,85,85,85,85,95,208,0,0,63,255,255,255,255,255,208,0,0,63,255,255,255,255,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,2,248,0,127,0,0,0,0,0,2,248,0,127,0,0,0,0,0,2,255,255,255,63,255,255,254,0,2,255,255,255,63,255,255,255,0,2,254,170,191,43,250,170,255,0,2,248,0,127,3,240,0,253,0,2,248,0,127,3,244,3,252,0,2,255,255,255,1,252,7,244,0,2,255,255,255,0,255,31,240,0,2,254,170,191,0,63,191,192,0,2,248,0,127,0,47,255,64,0,2,248,0,191,0,15,254,0,0,6,255,255,255,0,47,255,64,0,255,255,255,255,1,255,255,224,0,255,255,255,255,31,255,111,254,64,254,148,0,127,255,248,3,255,240,0,0,0,127,63,128,0,127,208,0,0,0,127,24,0,0,6,128, + // 0x6709 有 + 9,103,34,37,77,38,2,251,0,0,0,164,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,21,85,127,213,85,85,85,85,64,0,0,127,128,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,3,255,255,255,255,255,208,0,0,15,255,255,255,255,255,208,0,0,31,255,255,255,255,255,208,0,0,63,252,0,0,0,31,208,0,0,255,252,0,0,0,15,208,0,3,255,252,0,0,0,15,208,0,15,254,252,0,0,0,15,208,0,63,242,255,255,255,255,255,208,0,255,210,255,255,255,255,255,208,0,255,2,255,255,255,255,255,208,0,60,2,252,0,0,0,15,208,0,0,2,252,0,0,0,15,208,0,0,2,252,0,0,0,15,208,0,0,2,255,255,255,255,255,208,0,0,2,255,255,255,255,255,208,0,0,2,255,255,255,255,255,208,0,0,2,252,0,0,0,15,208,0,0,2,252,0,0,0,15,208,0,0,2,252,0,0,0,15,208,0,0,2,252,0,0,0,15,208,0,0,2,252,0,0,85,111,192,0,0,2,252,0,0,255,255,192,0,0,2,252,0,0,127,255,128,0,0,2,252,0,0,63,249,0,0,0,0,0,0,0,0,0,0,0, + // 0x677f 板 + 127,103,36,36,68,38,1,252,0,7,224,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,11,224,0,21,85,85,85,80,0,11,224,0,255,255,255,255,252,0,11,224,0,255,255,255,255,252,0,11,224,0,255,255,255,255,252,0,11,224,0,254,0,0,0,0,0,11,224,0,254,0,0,0,0,63,255,255,244,254,0,0,0,0,63,255,255,244,254,0,0,0,0,63,255,255,244,254,0,0,0,0,21,95,245,80,254,0,0,0,0,0,31,224,0,255,255,255,255,224,0,47,224,0,255,255,255,255,244,0,63,240,0,255,255,255,255,240,0,63,252,0,255,248,0,11,240,0,191,254,0,255,252,0,15,224,0,255,255,64,254,252,0,31,208,1,255,255,192,253,254,0,47,192,2,251,235,240,253,127,0,63,128,3,235,227,249,252,63,64,127,64,11,219,225,245,252,47,192,255,0,15,203,224,225,252,31,209,254,0,47,139,224,66,252,15,243,252,0,127,11,224,3,248,7,251,248,0,190,11,224,3,244,3,255,240,0,60,11,224,7,240,0,255,208,0,40,11,224,11,240,0,255,192,0,0,11,224,15,224,2,255,224,0,0,11,224,31,208,11,255,248,0,0,11,224,63,192,47,251,254,0,0,11,224,127,129,255,209,255,208,0,11,224,255,11,255,64,127,253,0,11,225,254,15,253,0,31,253,0,11,224,124,7,224,0,2,244,0,11,224,4,2,64,0,0,96, + // 0x67f1 柱 + 241,103,36,36,68,38,1,252,0,3,240,0,0,28,0,0,0,0,3,240,0,0,191,64,0,0,0,3,240,0,0,255,224,0,0,0,3,240,0,0,47,252,0,0,0,3,240,0,0,7,255,0,0,0,3,240,0,0,0,255,192,0,0,3,240,0,0,0,63,128,0,0,3,240,0,85,85,95,85,84,63,255,255,252,255,255,255,255,252,63,255,255,252,255,255,255,255,252,63,255,255,252,255,255,255,255,252,21,95,245,84,0,1,253,0,0,0,15,240,0,0,1,253,0,0,0,15,240,0,0,1,253,0,0,0,47,244,0,0,1,253,0,0,0,63,252,0,0,1,253,0,0,0,63,255,0,0,1,253,0,0,0,191,255,192,0,1,253,0,0,0,255,255,224,0,1,253,0,0,1,251,247,244,63,255,255,255,248,3,243,242,253,63,255,255,255,248,7,227,240,253,63,255,255,255,248,15,211,240,120,21,86,254,85,80,47,195,240,32,0,1,253,0,0,63,67,240,0,0,1,253,0,0,191,3,240,0,0,1,253,0,0,61,3,240,0,0,1,253,0,0,40,3,240,0,0,1,253,0,0,0,3,240,0,0,1,253,0,0,0,3,240,0,0,1,253,0,0,0,3,240,0,0,1,253,0,0,0,3,240,15,255,255,255,255,254,0,3,240,15,255,255,255,255,254,0,3,240,15,255,255,255,255,254,0,3,240,5,85,85,85,85,84,0,2,160,0,0,0,0,0,0, + // 0x6821 校 + 33,104,36,36,68,38,1,252,0,6,144,0,0,2,160,0,0,0,11,224,0,0,3,244,0,0,0,11,224,0,0,3,244,0,0,0,11,224,0,0,3,244,0,0,0,11,224,0,0,3,244,0,0,0,11,224,1,85,87,249,85,84,0,11,224,11,255,255,255,255,252,0,11,224,11,255,255,255,255,252,63,255,250,171,255,255,255,255,252,63,255,255,240,0,0,0,0,0,63,255,255,240,7,128,0,180,0,21,95,229,80,15,240,3,252,0,0,31,224,0,31,208,0,255,0,0,47,224,0,63,192,0,127,192,0,63,240,0,255,64,0,47,224,0,63,248,2,254,0,0,15,244,0,191,253,11,252,0,1,67,252,0,255,255,31,251,192,3,253,253,1,255,255,139,207,224,3,248,248,2,255,239,210,7,240,7,244,64,3,235,231,240,3,248,15,240,0,11,219,226,240,2,252,31,224,0,15,203,224,208,0,254,63,192,0,47,139,224,64,0,191,191,64,0,63,11,224,0,0,63,255,0,0,190,11,224,0,0,31,253,0,0,61,11,224,0,0,15,252,0,0,40,11,224,0,0,47,254,0,0,0,11,224,0,0,191,255,128,0,0,11,224,0,2,255,191,240,0,0,11,224,0,31,253,31,253,0,0,11,224,0,191,244,7,255,208,0,11,224,27,255,192,1,255,253,0,11,224,63,253,0,0,63,252,0,11,224,31,224,0,0,11,244,0,11,208,10,0,0,0,0,160, + // 0x683c 格 + 60,104,36,36,68,38,1,252,0,11,224,0,0,121,0,0,0,0,11,224,0,0,255,0,0,0,0,11,224,0,0,254,0,0,0,0,11,224,0,3,252,0,0,0,0,11,224,0,7,255,255,255,64,0,11,224,0,15,255,255,255,128,0,11,224,0,47,255,255,255,64,0,11,224,0,127,192,0,255,0,63,255,255,245,255,208,1,253,0,63,255,255,251,255,240,3,252,0,63,255,255,255,251,248,7,244,0,21,95,245,127,225,253,31,240,0,0,31,224,15,192,255,63,192,0,0,47,244,3,0,63,255,64,0,0,63,252,0,0,31,254,0,0,0,63,255,0,0,15,253,0,0,0,127,255,128,0,127,255,128,0,0,191,255,208,2,255,255,240,0,0,255,231,240,15,255,47,254,0,1,255,227,240,191,248,7,255,224,3,251,225,219,255,208,0,255,254,7,235,224,255,255,0,0,47,252,15,203,224,127,255,255,255,255,248,31,203,224,47,191,255,255,255,144,63,75,224,0,127,255,255,255,128,191,11,224,0,127,0,0,63,128,125,11,224,0,127,0,0,63,128,56,11,224,0,127,0,0,63,128,16,11,224,0,127,0,0,63,128,0,11,224,0,127,0,0,63,128,0,11,224,0,127,0,0,63,128,0,11,224,0,127,255,255,255,128,0,11,224,0,127,255,255,255,128,0,11,224,0,127,255,255,255,128,0,11,224,0,127,0,0,63,128,0,6,144,0,106,0,0,42,64, + // 0x689d 條 + 157,104,36,36,68,38,1,252,0,1,64,0,0,164,0,0,0,0,3,248,0,0,254,0,0,0,0,3,244,0,1,252,0,0,0,0,11,240,0,3,248,0,0,0,0,15,224,0,11,255,255,255,252,0,31,199,224,31,255,255,255,252,0,63,199,224,63,255,255,255,252,0,127,71,224,255,192,0,255,0,0,191,7,227,255,224,1,253,0,1,255,7,255,255,244,3,248,0,3,255,7,235,226,253,15,240,0,7,255,7,226,128,191,191,192,0,15,255,7,224,0,47,255,64,0,63,255,7,224,0,15,254,0,0,191,255,7,224,1,191,255,224,0,255,191,7,224,31,255,191,255,64,190,127,7,235,255,248,7,255,253,60,127,7,231,255,128,0,127,252,32,127,7,225,244,3,248,1,244,0,127,7,224,0,3,248,0,0,0,127,7,224,0,3,248,0,0,0,127,7,227,255,255,255,255,252,0,127,7,227,255,255,255,255,252,0,127,7,227,255,255,255,255,252,0,127,7,224,0,31,255,0,0,0,127,7,224,0,63,255,192,0,0,127,7,224,0,255,255,224,0,0,127,7,224,3,255,255,248,0,0,127,7,224,15,247,249,253,0,0,127,0,0,127,211,248,191,128,0,127,0,2,255,67,248,63,224,0,127,0,31,253,3,248,15,253,0,127,0,47,244,3,248,3,253,0,127,0,15,192,3,248,0,184,0,127,0,1,0,3,248,0,16,0,126,0,0,0,3,244,0,0, + // 0x68c4 棄 + 196,104,34,36,68,38,2,252,0,0,0,2,248,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,127,255,255,255,255,255,255,255,224,0,0,47,208,0,47,240,0,0,0,0,63,128,0,15,254,0,0,0,0,255,0,5,86,255,208,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,255,64,15,255,170,169,85,80,0,127,0,0,5,64,2,164,0,21,8,0,0,15,192,3,248,0,127,0,0,0,15,192,3,248,0,127,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,106,175,234,171,254,170,255,170,160,0,15,192,3,248,0,127,0,0,0,15,192,3,248,0,127,0,0,0,15,255,255,255,255,255,0,0,0,15,255,255,255,255,255,0,0,0,10,170,171,254,170,170,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,7,255,255,253,0,0,0,0,0,47,243,249,255,144,0,0,0,7,255,131,248,47,253,0,0,0,191,252,3,248,7,255,228,0,111,255,208,3,248,0,127,255,224,255,253,0,3,248,0,7,255,240,63,144,0,3,248,0,0,47,192,20,0,0,3,248,0,0,1,64, + // 0x69fd 槽 + 253,105,36,36,68,38,1,252,0,15,192,0,1,248,31,128,0,0,15,192,0,1,248,31,128,0,0,15,192,0,1,248,31,128,0,0,15,192,63,255,255,255,255,253,0,15,192,63,255,255,255,255,253,0,15,192,63,255,255,255,255,253,0,15,192,0,1,248,31,128,0,0,15,192,0,1,248,31,128,0,21,95,213,15,255,255,255,255,244,63,255,255,207,255,255,255,255,244,63,255,255,207,213,253,111,151,244,63,255,255,207,192,248,31,2,244,0,47,192,15,192,248,31,2,244,0,63,192,15,255,255,255,255,244,0,63,192,15,255,255,255,255,244,0,127,224,15,213,249,111,87,244,0,191,244,15,192,248,31,2,244,0,255,252,15,192,248,31,2,244,1,255,254,15,255,255,255,255,244,3,255,239,79,255,255,255,255,244,3,239,207,197,85,85,85,85,80,11,223,199,192,0,0,0,0,0,15,207,195,1,255,255,255,255,192,47,79,192,1,255,255,255,255,192,63,15,192,1,254,170,170,191,192,190,15,192,1,252,0,0,47,192,60,15,192,1,252,0,0,47,192,40,15,192,1,255,255,255,255,192,0,15,192,1,255,255,255,255,192,0,15,192,1,253,85,85,127,192,0,15,192,1,252,0,0,47,192,0,15,192,1,252,0,0,47,192,0,15,192,1,255,255,255,255,192,0,15,192,1,255,255,255,255,192,0,15,192,1,254,170,170,191,192,0,15,192,1,252,0,0,31,192, + // 0x6a59 橙 + 89,106,36,36,68,38,1,252,0,15,208,0,0,0,25,0,0,0,15,208,11,255,244,126,5,0,0,15,208,15,255,252,63,31,64,0,15,208,15,255,252,63,191,128,0,15,208,0,2,244,47,253,0,0,15,208,4,3,240,15,224,32,0,15,208,15,75,240,15,224,248,0,15,208,47,255,208,7,247,253,63,255,255,219,255,192,3,255,244,63,255,255,209,255,64,1,255,192,63,255,255,208,255,255,255,255,0,21,95,229,66,255,255,255,255,128,0,47,208,11,255,255,255,239,224,0,63,208,47,240,0,0,15,252,0,63,224,255,192,0,0,3,255,0,127,244,255,0,0,0,0,252,0,191,252,61,255,255,255,255,96,0,255,255,0,255,255,255,255,64,1,255,255,128,254,170,170,191,64,2,255,223,208,252,0,0,63,64,3,239,215,240,252,0,0,63,64,11,223,210,192,252,0,0,63,64,15,207,208,64,254,170,170,191,64,47,143,208,0,255,255,255,255,64,127,15,208,0,255,255,255,255,64,190,15,208,0,1,0,1,144,0,60,15,208,0,47,64,2,252,0,40,15,208,0,31,192,3,248,0,0,15,208,0,15,192,7,240,0,0,15,208,0,15,208,11,224,0,0,15,208,0,11,224,15,192,0,0,15,208,0,7,128,11,128,0,0,15,208,127,255,255,255,255,253,0,15,208,127,255,255,255,255,253,0,15,208,127,255,255,255,255,253,0,15,208,0,0,0,0,0,0, + // 0x6a5f 機 + 95,106,36,36,68,38,1,252,0,31,128,0,64,31,128,16,0,0,47,128,2,244,31,128,189,0,0,47,128,3,240,31,128,252,0,0,47,128,7,208,31,129,244,0,0,47,128,15,194,31,131,240,128,0,47,128,127,75,239,175,195,240,0,47,128,255,15,223,255,135,224,0,47,128,191,47,15,239,207,192,63,255,255,95,254,15,199,255,128,63,255,255,71,252,15,193,255,0,63,255,255,66,244,15,192,253,16,0,63,192,3,231,79,192,248,240,0,63,128,11,203,207,195,240,248,0,127,192,31,71,223,199,225,252,0,191,208,191,255,239,255,255,253,0,255,240,255,255,255,255,255,254,0,255,248,255,166,251,233,180,46,1,255,252,0,0,75,208,252,0,2,255,190,0,0,7,224,191,0,3,255,159,64,0,7,224,47,128,7,239,143,255,255,255,255,255,252,11,239,139,191,255,255,255,255,252,15,175,128,191,255,255,255,255,252,47,47,128,7,240,2,244,9,0,63,47,128,7,240,1,248,47,192,189,47,128,11,248,0,252,63,64,124,47,128,11,255,64,252,254,0,56,47,128,15,255,224,191,252,0,16,47,128,31,207,244,127,244,0,0,47,128,47,130,240,63,208,20,0,47,128,127,64,128,255,192,46,0,47,128,255,0,7,255,208,62,0,47,131,253,0,127,251,244,126,0,47,139,248,7,255,131,255,252,0,47,131,224,3,253,0,255,252,0,31,128,128,0,144,0,31,224, + // 0x6aa2 檢 + 162,106,36,37,77,38,1,251,0,15,192,0,0,15,224,0,0,0,15,208,0,0,47,248,0,0,0,15,208,0,0,63,253,0,0,0,15,208,0,0,255,255,64,0,0,15,208,0,3,252,63,192,0,0,15,208,0,11,244,31,240,0,0,15,208,0,47,224,7,253,0,0,15,208,0,191,128,1,255,128,5,95,213,67,254,0,0,127,240,63,255,255,223,255,255,255,255,254,63,255,255,255,239,255,255,247,253,63,255,255,255,79,255,255,240,252,0,31,208,28,0,0,0,0,32,0,47,208,0,0,0,0,0,0,0,63,224,5,85,84,21,85,80,0,63,240,11,255,253,63,255,240,0,191,252,11,255,253,63,255,240,0,255,254,11,192,125,62,2,240,1,255,255,75,192,125,62,2,240,2,255,223,203,192,125,62,2,240,3,239,215,235,192,125,62,2,240,11,207,211,203,255,253,63,255,240,15,207,209,75,255,253,63,255,240,47,143,208,6,170,168,42,170,160,63,15,208,0,25,0,1,164,0,190,15,208,0,63,128,2,248,0,60,15,208,0,63,64,3,244,0,40,15,208,0,127,0,3,240,0,0,15,208,0,255,0,11,244,0,0,15,208,1,255,208,15,253,0,0,15,208,3,255,244,47,255,128,0,15,208,15,242,252,191,191,224,0,15,208,63,208,250,254,15,252,0,15,208,255,128,43,252,2,254,0,15,208,189,0,3,224,0,188,0,15,192,36,0,0,64,0,32,0,0,0,0,0,0,0,0,0, + // 0x6b62 止 + 98,107,34,34,50,38,2,254,0,0,0,0,106,0,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,21,0,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,255,255,255,0,0,63,128,0,127,255,255,255,0,0,63,128,0,127,255,255,255,0,0,63,128,0,127,170,170,170,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,0,63,128,0,127,64,0,0,0,170,191,234,170,191,170,170,170,160,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x6b63 正 + 99,107,34,32,32,38,2,253,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,21,85,85,85,255,85,85,85,64,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,255,255,252,0,0,63,128,0,255,255,255,252,0,0,63,128,0,255,255,255,252,0,0,63,128,0,255,85,85,84,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,0,63,128,0,255,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,85,85,85,85,85,85,85,85,80, + // 0x6b65 步 + 101,107,34,36,68,38,2,252,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,5,64,2,252,0,0,0,0,0,31,192,2,252,0,0,0,0,0,31,192,2,255,255,255,240,0,0,31,192,2,255,255,255,240,0,0,31,192,2,255,255,255,240,0,0,31,192,2,253,85,85,80,0,0,31,192,2,252,0,0,0,0,0,31,192,2,252,0,0,0,0,0,31,192,2,252,0,0,0,0,85,111,213,87,253,85,85,85,80,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,2,252,0,0,0,0,0,2,144,2,252,0,0,0,0,0,7,252,2,252,0,6,0,0,0,15,244,2,252,0,15,240,0,0,63,224,2,252,0,31,224,0,0,255,192,2,252,0,63,208,0,7,255,0,2,252,0,127,192,0,47,252,0,2,252,0,255,64,0,191,240,0,3,252,2,254,0,0,47,192,7,255,248,11,252,0,0,10,0,3,255,244,47,244,0,0,0,0,2,255,144,191,224,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,47,254,0,0,0,0,0,0,2,255,244,0,0,0,0,0,0,127,255,192,0,0,0,0,0,111,255,253,0,0,0,0,2,191,255,255,208,0,0,0,0,2,255,255,249,0,0,0,0,0,0,255,254,64,0,0,0,0,0,0,185,64,0,0,0,0,0,0, + // 0x6b78 歸 + 120,107,36,36,68,38,1,252,0,10,144,0,0,0,0,0,0,0,15,224,0,6,170,170,170,0,0,15,192,0,15,255,255,255,64,6,175,234,164,15,255,255,255,64,11,255,255,248,0,0,0,63,64,11,255,255,248,0,0,0,63,64,11,208,1,249,255,255,255,255,253,11,208,1,249,255,255,255,255,253,11,229,86,248,170,170,170,191,168,11,255,255,248,0,0,0,63,64,11,255,255,248,5,85,85,127,64,11,208,0,0,15,255,255,255,64,11,234,170,164,15,255,255,255,64,11,255,255,252,0,0,0,0,0,11,255,255,252,170,170,170,170,164,11,208,0,252,255,255,255,255,248,11,208,0,252,255,255,255,255,248,11,234,170,252,252,1,252,1,248,11,255,255,252,252,1,252,1,248,11,255,255,252,188,1,252,1,248,0,3,240,0,0,1,252,0,0,0,3,240,0,47,255,255,255,208,11,195,240,0,47,255,255,255,208,15,195,255,252,47,255,255,255,208,15,195,255,252,47,65,252,11,208,15,195,255,252,47,65,252,11,208,15,195,240,0,47,65,252,11,208,15,195,240,0,47,65,252,11,208,15,195,240,0,47,65,252,11,208,15,195,245,174,47,65,252,11,208,15,219,255,254,47,65,252,255,208,127,255,255,254,47,65,252,255,192,127,255,255,148,31,65,252,105,0,63,249,64,0,0,1,252,0,0,36,0,0,0,0,1,252,0,0,0,0,0,0,0,0,168,0,0, + // 0x6bbc 殼 + 188,107,35,36,68,38,2,252,0,3,240,0,0,0,0,0,0,0,3,240,0,0,0,0,0,0,0,3,240,0,1,255,255,244,0,255,255,255,255,193,255,255,244,0,255,255,255,255,193,255,255,244,0,170,171,250,170,65,248,3,244,0,0,3,240,0,1,248,3,244,0,0,3,240,0,1,248,3,244,0,47,255,255,254,1,248,3,244,0,47,255,255,254,2,248,3,244,180,26,170,170,169,3,244,3,244,188,0,0,0,0,7,240,3,244,188,106,170,170,170,79,240,3,255,248,255,255,255,255,255,208,2,255,244,255,255,255,255,255,192,0,191,224,252,0,0,15,239,0,0,0,0,252,0,0,15,136,0,0,0,0,254,255,255,239,143,255,255,255,64,22,255,255,229,15,255,255,255,128,1,170,170,144,15,255,255,255,64,0,0,0,0,1,180,0,127,0,0,0,0,0,3,248,0,255,0,3,255,255,240,1,252,1,253,0,3,255,255,240,0,253,2,252,0,3,250,175,240,0,191,7,244,0,3,240,7,240,0,63,143,240,0,3,240,7,240,0,31,255,208,0,3,240,7,240,0,15,255,128,0,7,240,7,241,128,7,255,0,0,7,240,7,255,208,31,255,64,0,15,224,47,255,208,191,255,224,0,47,192,63,254,11,255,175,254,0,127,128,47,145,255,253,7,255,224,255,0,4,3,255,224,0,255,244,60,0,0,1,254,0,0,31,208,4,0,0,0,208,0,0,1,128, + // 0x6bd4 比 + 212,107,36,35,59,38,1,253,0,26,128,0,0,168,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,7,128,0,47,192,0,1,253,0,47,208,0,47,192,0,1,253,1,255,244,0,47,255,255,193,253,31,255,208,0,47,255,255,193,254,255,254,0,0,47,255,255,193,255,255,224,0,0,47,229,85,65,255,253,0,0,0,47,192,0,1,255,144,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,0,0,47,192,0,1,253,0,0,160,0,47,192,0,1,253,0,0,190,0,47,192,0,17,253,0,0,190,0,47,192,91,241,253,0,0,254,0,47,239,255,245,253,0,0,253,1,191,255,255,244,253,0,0,253,127,255,255,254,64,255,85,87,252,63,255,254,64,0,255,255,255,248,63,254,64,0,0,127,255,255,240,25,0,0,0,0,11,255,255,128, + // 0x6c92 沒 + 146,108,35,36,68,38,2,252,1,0,0,0,169,0,0,0,0,3,224,0,0,255,0,0,0,0,15,253,0,0,254,0,0,0,0,11,255,192,0,254,0,0,0,0,1,255,240,1,255,255,255,255,0,0,31,240,2,255,255,255,255,0,0,3,192,3,255,255,255,255,0,0,0,64,7,248,0,0,191,0,0,0,0,11,240,0,0,191,0,0,0,0,15,240,0,0,254,0,16,0,0,47,208,0,0,254,0,125,0,0,127,192,0,0,253,0,255,224,0,255,64,0,2,252,0,191,253,3,254,0,15,255,252,0,11,255,15,252,0,11,255,244,0,0,254,7,244,0,7,255,208,0,0,44,0,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,0,0,0,0,255,255,255,255,255,0,0,0,0,255,255,255,255,254,0,0,3,128,6,244,0,3,252,0,0,11,224,7,248,0,7,248,0,0,15,240,2,253,0,15,240,0,0,47,208,0,255,0,63,224,0,0,63,192,0,127,192,255,192,0,0,191,64,0,47,247,255,0,0,0,255,0,0,11,255,252,0,0,2,253,0,0,3,255,240,0,0,3,252,0,0,11,255,244,0,0,15,244,0,0,191,255,255,128,0,31,240,0,111,255,247,255,249,0,63,208,31,255,255,64,127,255,244,47,192,15,255,244,0,11,255,240,7,0,11,254,0,0,0,127,192,0,0,2,64,0,0,0,2,128, + // 0x6d88 消 + 136,109,34,37,77,38,2,251,1,0,0,0,0,127,0,0,0,7,192,0,20,0,127,0,9,0,31,248,1,252,0,127,0,31,208,15,255,64,254,0,127,0,63,192,1,255,208,191,64,127,0,63,128,0,63,224,63,192,127,0,191,0,0,11,128,47,208,127,1,254,0,0,1,0,15,240,127,3,252,0,0,0,0,11,224,127,3,244,0,0,0,0,2,0,127,0,96,0,0,0,0,0,0,127,0,0,0,56,0,0,191,255,255,255,255,0,255,128,0,191,255,255,255,255,0,255,244,0,191,255,255,255,255,0,31,254,0,191,85,85,85,191,0,2,255,0,191,0,0,0,127,0,0,125,0,191,0,0,0,127,0,0,24,0,191,0,0,0,127,0,0,0,0,191,255,255,255,255,0,0,0,0,191,255,255,255,255,0,0,0,0,191,255,255,255,255,0,0,7,0,191,0,0,0,127,0,0,15,192,191,0,0,0,127,0,0,15,208,191,0,0,0,127,0,0,47,192,191,0,0,0,127,0,0,63,128,191,255,255,255,255,0,0,191,0,191,255,255,255,255,0,0,254,0,191,255,255,255,255,0,2,253,0,191,0,0,0,127,0,3,252,0,191,0,0,0,127,0,11,244,0,191,0,0,0,127,0,15,240,0,191,0,0,0,127,0,63,208,0,191,0,0,80,191,0,63,192,0,191,0,1,255,255,0,15,64,0,191,0,0,255,254,0,2,0,0,191,0,0,191,228,0,0,0,0,0,0,0,0,0,0, + // 0x6de1 淡 + 225,109,36,35,59,38,1,253,0,0,0,0,0,47,128,0,0,0,224,0,0,0,47,128,0,0,3,254,0,1,0,63,128,4,0,7,255,208,11,240,63,128,31,208,0,191,248,15,208,63,128,63,192,0,15,252,31,192,63,64,127,128,0,1,240,47,128,63,64,255,0,0,0,64,127,64,127,2,252,0,0,0,0,255,0,191,3,244,0,0,0,0,124,0,255,209,224,0,0,0,0,0,2,255,252,0,0,14,0,0,0,7,255,255,128,0,63,208,0,0,31,244,255,248,0,127,253,0,0,191,224,31,255,0,11,255,128,31,255,128,2,255,224,0,255,194,255,253,0,0,63,240,0,31,0,255,208,63,128,11,208,0,0,0,121,0,63,128,1,128,0,0,0,0,0,63,128,0,0,0,0,0,11,144,63,64,15,144,0,2,0,15,208,63,64,31,240,0,3,208,31,192,63,64,63,192,0,11,240,63,128,127,192,127,128,0,15,240,127,64,191,192,255,0,0,47,208,255,0,255,226,253,0,0,63,194,253,1,255,247,248,0,0,191,64,184,3,255,252,160,0,0,255,0,0,11,250,254,0,0,2,254,0,0,31,240,255,64,0,7,252,0,0,191,208,127,224,0,15,244,0,11,255,128,31,253,0,31,240,6,255,253,0,7,255,228,15,208,15,255,240,0,0,255,253,2,192,7,255,64,0,0,31,244,0,0,2,144,0,0,0,0,160, + // 0x6e05 清 + 5,110,36,37,77,38,1,251,0,128,0,0,0,47,128,0,0,2,253,0,0,0,63,128,0,0,7,255,192,106,170,191,234,170,160,0,255,244,255,255,255,255,255,240,0,31,252,255,255,255,255,255,240,0,3,240,0,0,63,128,0,0,0,0,160,0,0,63,128,0,0,0,0,0,63,255,255,255,255,208,0,0,0,63,255,255,255,255,208,0,0,0,21,85,127,213,85,64,0,0,0,0,0,63,128,0,0,14,0,0,0,0,63,128,0,0,63,224,3,255,255,255,255,255,253,127,254,3,255,255,255,255,255,253,11,255,194,170,170,170,170,170,169,0,191,192,0,0,0,0,0,0,0,31,0,6,170,170,170,170,64,0,1,0,11,255,255,255,255,128,0,0,0,11,255,255,255,255,128,0,0,0,11,224,0,0,47,128,0,0,0,11,224,0,0,47,128,0,0,208,11,229,85,85,127,128,0,2,244,11,255,255,255,255,128,0,3,248,11,255,255,255,255,128,0,11,244,11,224,0,0,47,128,0,15,240,11,224,0,0,47,128,0,47,208,11,229,85,85,127,128,0,63,192,11,255,255,255,255,128,0,191,64,11,255,255,255,255,128,0,255,0,11,224,0,0,47,128,2,253,0,11,224,0,0,47,128,7,252,0,11,224,0,0,47,128,15,244,0,11,224,0,0,63,128,15,240,0,11,224,0,127,255,128,3,208,0,11,224,0,63,255,0,0,64,0,11,224,0,47,249,0,0,0,0,0,0,0,0,0,0, + // 0x6e2c 測 + 44,110,34,37,77,38,1,251,0,0,0,0,0,0,0,3,240,2,224,0,0,0,0,0,3,240,7,253,3,255,255,240,0,3,240,11,255,131,255,255,240,0,3,240,0,255,243,255,255,240,125,3,240,0,31,211,240,3,240,190,3,240,0,3,131,240,3,240,190,3,240,0,0,3,240,3,240,190,3,240,0,0,3,240,3,240,190,3,240,0,0,3,255,255,240,190,3,240,0,0,3,255,255,240,190,3,240,14,0,3,255,255,240,190,3,240,47,224,3,240,3,240,190,3,240,127,253,3,240,3,240,190,3,240,11,255,67,240,3,240,190,3,240,0,255,3,240,3,240,190,3,240,0,44,3,255,255,240,190,3,240,0,0,3,255,255,240,190,3,240,0,0,3,255,255,240,190,3,240,0,0,3,240,3,240,190,3,240,0,0,3,240,3,240,190,3,240,0,4,3,240,3,240,190,3,240,0,15,67,240,3,240,190,3,240,0,47,195,255,255,240,190,3,240,0,63,131,255,255,240,190,3,240,0,127,67,255,255,240,189,3,240,0,191,0,0,1,0,0,3,240,0,254,0,248,7,128,0,3,240,2,252,2,252,31,208,0,3,240,3,252,3,248,15,240,0,3,240,7,244,11,240,3,252,0,3,240,15,240,31,224,1,253,0,3,240,31,224,63,192,0,255,5,91,240,47,192,255,64,0,125,31,255,240,7,128,254,0,0,16,15,255,208,0,0,40,0,0,0,11,254,64,0,0,0,0,0,0,0,0,0, + // 0x6e90 源 + 144,110,35,37,77,38,2,251,1,0,0,0,0,0,0,0,0,11,208,0,0,0,0,0,0,0,31,253,3,255,255,255,255,255,240,11,255,131,255,255,255,255,255,240,1,255,211,255,255,255,255,255,240,0,47,131,244,0,11,244,0,0,0,7,3,240,0,11,240,0,0,0,0,3,240,0,15,240,0,0,0,0,3,240,0,15,208,0,0,0,0,3,240,255,255,255,255,192,0,0,3,240,255,255,255,255,192,61,0,3,240,254,170,170,191,192,255,192,3,240,252,0,0,47,192,255,248,7,240,252,0,0,47,192,31,254,7,240,254,85,85,127,192,2,252,7,240,255,255,255,255,192,0,116,7,240,255,255,255,255,192,0,0,7,240,252,0,0,47,192,0,0,7,240,252,0,0,47,192,0,0,11,240,252,0,0,47,192,0,0,11,240,255,255,255,255,192,0,40,15,224,255,255,255,255,192,0,63,15,224,170,175,250,170,64,0,127,15,208,0,11,240,0,0,0,255,15,208,16,11,240,24,0,1,253,31,192,127,11,240,254,0,2,252,47,192,254,11,240,191,0,3,248,63,129,252,11,240,63,192,11,244,63,67,252,11,240,47,208,15,240,191,7,244,11,240,15,240,31,208,255,15,224,11,240,11,244,63,193,253,63,192,11,240,3,248,127,131,252,31,64,11,240,2,224,191,11,244,2,11,255,224,0,0,14,7,240,0,3,255,208,0,0,0,0,80,0,3,254,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x6e96 準 + 150,110,34,36,68,38,2,252,0,128,0,7,144,7,144,0,0,3,253,0,15,240,11,244,0,0,7,255,208,47,208,15,224,0,0,1,191,240,63,192,47,192,0,0,0,15,192,255,255,255,255,255,64,0,1,66,255,255,255,255,255,64,16,0,11,255,255,255,255,255,64,126,64,31,253,0,63,0,0,0,255,244,127,253,0,63,0,0,0,127,254,255,255,170,191,170,168,0,7,244,254,255,255,255,255,252,0,0,96,40,255,255,255,255,252,0,0,0,0,253,0,63,0,0,0,0,2,128,253,0,63,0,0,0,0,11,208,255,170,191,170,168,0,0,31,224,255,255,255,255,253,0,0,127,192,255,255,255,255,253,0,1,255,0,253,0,63,0,0,0,7,252,0,253,0,63,0,0,0,31,244,0,255,255,255,255,255,208,63,208,0,255,255,255,255,255,208,47,128,0,255,255,255,255,255,208,11,0,0,0,0,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0, + // 0x6eab 溫 + 171,110,35,36,68,38,2,252,1,0,0,0,0,0,0,0,0,7,208,0,0,0,0,0,0,0,15,253,0,191,255,255,255,248,0,15,255,128,191,255,255,255,248,0,1,255,224,191,170,170,171,248,0,0,47,192,190,0,104,2,248,0,0,7,64,190,0,248,2,248,0,0,0,0,190,0,244,2,248,0,0,0,0,190,2,248,2,248,0,0,0,0,190,3,254,2,248,0,0,0,0,190,15,223,194,248,0,61,0,0,190,127,7,242,248,0,255,208,0,190,189,1,242,248,0,255,252,0,190,16,0,66,248,0,31,254,0,191,170,170,171,248,0,1,252,0,191,255,255,255,248,0,0,52,0,191,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,255,255,0,0,8,3,255,255,255,255,255,0,0,31,67,255,255,255,255,255,0,0,63,195,240,63,3,224,127,0,0,63,131,240,63,3,224,127,0,0,191,3,240,63,3,224,127,0,0,254,3,240,63,3,224,127,0,2,253,3,240,63,3,224,127,0,3,252,3,240,63,3,224,127,0,11,244,3,240,63,3,224,127,0,15,240,3,240,63,3,224,127,0,47,208,3,244,63,3,224,127,0,63,192,255,255,255,255,255,255,248,191,64,255,255,255,255,255,255,248,31,0,255,255,255,255,255,255,248,1,0,0,0,0,0,0,0,0, + // 0x6fc0 激 + 192,111,35,37,77,38,2,251,0,0,0,14,128,0,248,0,0,11,128,0,31,208,0,253,0,0,31,244,0,47,192,0,252,0,0,31,254,0,63,128,1,252,0,0,2,255,175,255,255,194,252,0,0,0,127,47,255,255,194,248,0,0,0,13,47,170,175,195,244,0,0,0,0,47,0,15,195,255,255,248,0,0,47,0,15,199,255,255,248,0,0,47,255,255,203,255,255,248,0,0,47,255,255,207,224,47,192,61,0,47,149,95,223,224,47,128,255,192,47,0,15,255,224,47,64,255,244,47,0,15,255,240,63,64,31,252,47,255,255,255,240,63,0,2,248,47,255,255,255,240,63,0,0,112,26,191,234,254,244,63,0,0,0,0,31,192,56,248,126,0,0,0,0,31,192,0,252,190,0,0,0,255,255,255,244,188,253,0,0,0,255,255,255,244,125,252,0,0,52,255,255,255,244,63,252,0,0,126,0,252,0,0,63,248,0,0,191,0,252,0,0,47,240,0,0,253,1,255,255,192,15,240,0,2,252,1,255,255,192,15,208,0,3,252,2,255,255,192,31,240,0,7,244,3,244,15,192,63,244,0,11,240,3,240,31,192,191,252,0,15,224,11,240,31,129,254,254,0,47,208,15,208,31,135,252,191,64,63,192,63,192,47,159,244,63,208,127,128,191,64,63,191,224,31,240,191,2,254,31,255,255,192,11,248,14,3,252,15,255,191,0,2,240,0,0,224,10,164,28,0,0,128,0,0,0,0,0,0,0,0,0, + // 0x7121 無 + 33,113,34,36,68,38,2,252,0,3,144,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,127,255,255,255,255,255,255,64,1,255,255,255,255,255,255,255,64,3,255,255,255,255,255,255,255,64,15,255,128,252,7,224,47,192,0,63,255,128,252,7,224,47,192,0,255,255,128,252,7,224,47,192,0,191,47,128,252,7,224,47,192,0,29,47,128,252,7,224,47,192,0,0,47,128,252,7,224,47,192,0,0,47,128,252,7,240,47,192,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,47,128,252,7,224,47,192,0,0,47,128,252,7,224,47,192,0,0,47,128,252,7,224,47,192,0,0,47,128,252,7,224,47,192,0,0,47,128,252,7,224,47,192,0,0,47,128,252,7,240,47,192,0,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,0,160,0,0,254,2,244,2,240,11,244,0,2,252,3,244,3,244,3,252,0,3,248,2,248,2,252,1,255,0,11,240,2,252,1,252,0,191,128,31,224,1,252,0,254,0,63,192,63,192,1,252,0,255,0,31,240,255,64,1,252,0,191,0,15,240,26,0,0,80,0,16,0,7,64, + // 0x71b1 熱 + 177,113,35,37,77,38,2,251,0,2,240,0,0,47,128,0,0,0,3,240,0,0,47,128,0,0,5,87,249,85,0,47,128,0,0,15,255,255,254,0,47,128,0,0,15,255,255,254,0,47,128,0,0,0,3,240,0,31,255,255,248,0,0,3,240,0,31,255,255,248,0,106,171,250,170,95,255,255,248,0,191,255,255,255,223,255,66,248,0,191,255,255,255,192,63,66,248,0,0,188,15,64,0,63,2,248,0,0,252,15,66,0,63,2,248,0,3,248,15,71,206,63,2,248,0,31,240,15,255,239,255,2,248,0,255,192,11,255,111,255,2,248,0,125,3,240,84,3,255,130,248,0,0,3,240,0,0,255,242,248,0,26,171,250,169,0,255,254,248,16,47,255,255,255,1,254,254,248,120,47,255,255,255,3,248,182,248,124,0,3,240,0,3,244,18,248,124,0,3,240,0,11,240,2,248,124,0,3,245,171,159,208,2,248,184,106,255,255,255,255,128,2,255,248,255,255,255,255,255,0,1,255,244,255,255,233,64,189,0,0,127,224,85,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,0,0,0,80,2,240,0,2,253,3,244,7,240,11,252,0,3,252,3,244,3,248,3,253,0,11,244,3,248,2,252,0,255,0,31,240,2,252,1,252,0,127,192,63,192,2,252,0,254,0,63,208,191,64,2,252,0,255,0,15,240,9,0,1,148,0,80,0,11,64,0,0,0,0,0,0,0,0,0, + // 0x71c8 燈 + 200,113,36,36,68,38,1,252,0,0,0,0,0,0,96,0,0,0,15,192,0,0,2,244,24,0,0,15,192,15,255,249,248,127,0,0,15,192,15,255,252,253,254,0,0,15,192,10,171,248,191,244,0,0,15,192,0,3,240,63,192,80,0,15,194,135,71,240,47,129,248,0,15,195,255,239,208,15,215,244,10,79,203,231,255,192,11,255,208,15,143,207,193,255,64,3,255,0,15,143,223,64,255,0,1,255,0,15,79,255,3,255,255,255,255,192,15,79,253,15,251,255,255,239,244,31,15,196,127,199,255,255,203,255,47,15,195,255,0,0,0,2,253,63,15,194,252,0,0,0,0,56,125,15,192,210,255,255,255,255,0,124,15,192,2,255,255,255,255,0,0,15,192,2,254,170,170,255,0,0,31,192,2,248,0,0,127,0,0,31,192,2,248,0,0,127,0,0,47,128,2,248,0,0,127,0,0,47,192,2,254,170,170,255,0,0,63,224,2,255,255,255,255,0,0,63,244,2,255,255,255,255,0,0,127,252,0,1,0,2,64,0,0,191,255,0,63,0,3,244,0,0,253,63,128,47,128,7,240,0,1,252,31,208,31,192,11,224,0,3,248,15,224,15,208,15,208,0,11,240,3,128,11,224,31,192,0,15,224,1,0,7,128,27,64,0,63,192,0,255,255,255,255,255,252,127,128,0,255,255,255,255,255,252,30,0,0,255,255,255,255,255,252,4,0,0,0,0,0,0,0,0, + // 0x7247 片 + 71,114,32,37,40,38,2,251,0,0,0,0,7,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,64,0,11,240,0,0,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,234,170,170,170,170,170,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,64,0,0,0,0,0,0,127,0,0,0,0,0,0,0,191,170,170,170,170,168,0,0,191,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,255,255,255,255,255,252,0,0,254,0,0,0,3,252,0,1,254,0,0,0,3,252,0,2,253,0,0,0,3,252,0,3,252,0,0,0,3,252,0,7,252,0,0,0,3,252,0,11,244,0,0,0,3,252,0,15,240,0,0,0,3,252,0,47,224,0,0,0,3,252,0,127,192,0,0,0,3,252,0,255,128,0,0,0,3,252,0,255,0,0,0,0,3,252,0,61,0,0,0,0,3,252,0,24,0,0,0,0,3,252,0,0,0,0,0,0,0,0,0, + // 0x7269 物 + 105,114,35,36,68,38,1,252,0,2,244,0,2,144,0,0,0,0,2,248,0,7,240,0,0,0,5,66,248,0,11,240,0,0,0,11,210,248,0,15,224,0,0,0,11,210,248,0,15,192,0,0,0,15,194,248,0,31,192,0,0,0,15,194,248,0,63,213,85,85,84,15,194,248,0,63,255,255,255,252,15,255,255,240,191,255,255,255,252,31,255,255,240,255,255,255,255,252,47,255,255,242,252,15,194,249,252,63,87,249,83,248,31,131,245,252,63,2,248,11,240,63,3,241,252,126,2,248,31,224,63,7,241,252,189,2,248,63,192,190,11,226,252,124,2,248,47,64,252,15,210,248,4,2,248,6,2,252,15,194,248,0,2,248,4,3,244,47,130,248,0,2,254,248,7,240,63,67,248,0,7,255,252,15,208,127,3,244,1,191,255,248,63,192,190,3,244,127,255,254,64,127,64,252,3,244,127,255,248,0,254,2,252,3,240,63,230,248,3,252,3,244,3,240,40,2,248,15,244,11,240,7,240,0,2,248,15,224,15,224,7,240,0,2,248,2,128,47,192,11,240,0,2,248,0,0,127,128,11,224,0,2,248,0,0,255,0,15,224,0,2,248,0,3,253,0,15,208,0,2,248,0,15,248,0,31,192,0,2,248,0,47,240,0,63,192,0,2,248,0,255,192,191,255,128,0,2,248,0,127,0,127,255,0,0,2,248,0,12,0,63,253,0,0,2,248,0,0,0,21,64,0, + // 0x7387 率 + 135,115,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,192,0,0,0,31,208,0,0,0,0,1,0,0,47,192,0,0,52,0,11,208,0,127,0,64,0,255,0,47,248,5,253,2,244,3,254,0,7,255,31,248,7,240,31,244,0,0,191,239,240,31,208,191,192,0,0,31,67,253,63,128,62,0,0,0,5,0,191,254,0,0,0,0,0,0,0,31,248,96,0,0,0,0,0,144,15,243,244,56,0,0,0,31,224,63,192,253,255,64,0,2,255,240,191,0,191,255,244,0,127,255,191,255,255,255,159,254,0,191,244,63,255,255,255,194,255,192,63,64,63,255,250,159,224,63,208,20,0,0,3,248,3,208,11,64,0,0,0,3,248,1,0,0,0,0,0,0,3,248,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,21,85,85,87,253,85,85,85,80,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0, + // 0x7528 用 + 40,117,33,34,50,38,1,252,0,21,85,85,85,85,85,85,64,0,63,255,255,255,255,255,255,192,0,63,255,255,255,255,255,255,192,0,63,255,255,255,255,255,255,192,0,63,64,0,127,0,0,63,192,0,63,64,0,127,0,0,63,192,0,63,64,0,127,0,0,63,192,0,63,64,0,127,0,0,63,192,0,63,64,0,127,0,0,63,192,0,63,85,85,191,85,85,127,192,0,63,255,255,255,255,255,255,192,0,63,255,255,255,255,255,255,192,0,63,255,255,255,255,255,255,192,0,63,64,0,127,0,0,63,192,0,63,64,0,127,0,0,63,192,0,127,0,0,127,0,0,63,192,0,127,0,0,127,0,0,63,192,0,127,0,0,127,0,0,63,192,0,127,0,0,127,0,0,63,192,0,127,255,255,255,255,255,255,192,0,191,255,255,255,255,255,255,192,0,191,255,255,255,255,255,255,192,0,255,85,85,191,85,85,127,192,0,254,0,0,127,0,0,63,192,1,253,0,0,127,0,0,63,192,2,252,0,0,127,0,0,63,192,3,252,0,0,127,0,0,63,192,7,248,0,0,127,0,0,63,192,11,240,0,0,127,0,0,63,192,31,224,0,0,127,0,0,63,128,63,192,0,0,127,3,255,255,128,127,128,0,0,127,2,255,255,64,31,0,0,0,127,1,255,253,0,5,0,0,0,0,0,85,0,0, + // 0x754c 界 + 76,117,34,36,68,38,2,251,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,253,0,3,248,0,7,240,0,0,253,0,3,248,0,7,240,0,0,253,0,3,248,0,7,240,0,0,253,0,3,248,0,7,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,170,171,254,170,175,240,0,0,253,0,3,248,0,7,240,0,0,253,0,3,248,0,7,240,0,0,253,0,3,248,0,7,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,11,248,1,255,0,0,0,0,0,63,240,0,191,192,0,0,0,1,255,192,0,63,244,0,0,0,11,254,0,0,15,254,0,0,0,191,248,0,0,2,255,224,0,27,255,239,192,0,26,255,254,0,255,254,31,192,0,47,223,255,240,127,244,31,192,0,47,193,255,224,47,64,31,192,0,47,192,31,192,0,0,47,192,0,47,192,1,0,0,0,63,192,0,47,192,0,0,0,0,127,128,0,47,192,0,0,0,0,255,64,0,47,192,0,0,0,3,255,0,0,47,192,0,0,0,31,252,0,0,47,192,0,0,1,255,244,0,0,47,192,0,0,3,255,208,0,0,47,192,0,0,1,255,0,0,0,47,192,0,0,0,180,0,0,0,47,192,0,0,0,0,0,0,0,0,0,0,0, + // 0x767d 白 + 125,118,28,36,252,38,5,252,0,0,2,233,0,0,0,0,0,3,254,0,0,0,0,0,3,252,0,0,0,0,0,11,248,0,0,0,0,0,15,244,0,0,0,0,0,15,240,0,0,0,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,170,170,170,170,170,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,85,85,85,85,85,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,191,170,170,170,170,170,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,0,0,0,0,0,255,191,0,0,0,0,0,255,190,0,0,0,0,0,170, + // 0x7684 的 + 132,118,33,36,68,38,3,252,0,31,144,0,2,228,0,0,0,0,31,208,0,3,248,0,0,0,0,47,192,0,3,244,0,0,0,0,63,128,0,7,240,0,0,0,0,63,64,0,15,240,0,0,0,0,127,0,0,15,208,0,0,0,191,255,255,240,47,255,255,255,64,191,255,255,240,63,255,255,255,64,191,255,255,240,127,255,255,255,64,190,0,7,240,255,0,0,127,0,189,0,7,241,253,0,0,63,0,189,0,7,243,252,0,0,63,0,189,0,7,251,248,0,0,63,0,189,0,7,255,240,0,0,63,0,189,0,7,247,208,0,0,63,0,189,0,7,240,129,128,0,127,0,190,0,7,240,15,208,0,127,0,191,255,255,240,15,240,0,127,0,191,255,255,240,3,252,0,127,0,191,255,255,240,1,254,0,127,0,189,0,7,240,0,191,64,191,0,189,0,7,240,0,63,192,190,0,189,0,7,240,0,31,224,190,0,189,0,7,240,0,15,240,190,0,189,0,7,240,0,7,192,254,0,189,0,7,240,0,1,0,253,0,189,0,7,240,0,0,0,253,0,189,0,7,240,0,0,0,253,0,190,0,7,240,0,0,1,252,0,191,255,255,240,0,0,1,252,0,191,255,255,240,0,0,3,252,0,191,255,255,240,0,0,7,248,0,189,0,0,0,0,255,255,244,0,189,0,0,0,0,191,255,224,0,189,0,0,0,0,127,255,128,0,0,0,0,0,0,5,80,0,0, + // 0x76e3 監 + 227,118,34,35,59,38,2,253,0,0,0,0,0,26,64,0,0,42,170,170,170,128,63,64,0,0,63,255,255,255,192,63,0,0,0,63,255,255,255,192,127,0,0,0,63,0,252,0,0,190,0,0,0,63,0,252,0,0,253,0,0,0,63,85,253,85,1,255,255,255,224,63,255,255,255,67,255,255,255,224,63,255,255,255,71,255,255,255,224,63,0,0,47,79,224,0,0,0,63,0,0,47,111,192,0,0,0,63,0,0,47,191,128,0,0,0,63,255,255,255,95,0,0,0,0,63,255,255,255,64,0,0,0,0,63,85,253,85,0,0,0,0,0,63,0,252,0,0,255,255,255,128,63,0,252,0,0,255,255,255,128,63,255,255,255,208,255,255,255,128,63,255,255,255,208,0,0,0,0,63,255,255,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,253,1,252,3,244,7,240,0,0,253,1,252,3,244,7,240,0,0,253,1,252,3,244,7,240,0,0,253,1,252,3,244,7,240,0,0,253,1,252,3,244,7,240,0,0,253,1,252,3,244,7,240,0,0,253,2,252,3,244,7,244,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x76f4 直 + 244,118,34,36,68,38,2,252,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,21,85,85,86,254,85,85,85,64,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,0,3,252,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,26,171,254,170,170,144,0,5,80,31,255,255,255,255,224,0,11,240,31,255,255,255,255,224,0,11,240,31,192,0,0,15,224,0,11,240,31,192,0,0,15,224,0,11,240,31,192,0,0,15,224,0,11,240,31,255,255,255,255,224,0,11,240,31,255,255,255,255,224,0,11,240,31,213,85,85,95,224,0,11,240,31,192,0,0,15,224,0,11,240,31,192,0,0,15,224,0,11,240,31,255,255,255,255,224,0,11,240,31,255,255,255,255,224,0,11,240,31,213,85,85,95,224,0,11,240,31,192,0,0,15,224,0,11,240,31,192,0,0,15,224,0,11,240,31,255,255,255,255,224,0,11,240,31,255,255,255,255,224,0,11,240,26,170,170,170,170,144,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,245,85,85,85,85,85,85,80,11,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,240,11,240,0,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0, + // 0x7720 眠 + 32,119,34,34,50,38,3,252,255,255,252,15,255,255,255,255,0,255,255,252,15,255,255,255,255,0,255,255,252,15,255,255,255,255,0,252,2,252,15,208,0,0,63,0,252,1,252,15,208,0,0,63,0,252,1,252,15,208,0,0,63,0,252,1,252,15,208,0,0,63,0,252,1,252,15,208,0,0,63,0,255,255,252,15,255,255,255,255,0,255,255,252,15,255,255,255,255,0,255,255,252,15,255,255,255,255,0,252,1,252,15,208,11,224,0,0,252,1,252,15,208,11,224,0,0,252,1,252,15,208,11,240,0,0,252,1,252,15,208,7,240,0,0,252,1,252,15,208,7,240,0,0,255,255,252,15,255,255,255,255,208,255,255,252,15,255,255,255,255,208,255,255,252,15,255,255,255,255,208,252,1,252,15,229,87,249,85,64,252,1,252,15,208,3,248,0,0,252,1,252,15,208,2,248,0,0,252,1,252,15,208,2,252,0,0,252,1,252,15,208,1,252,0,0,255,255,252,15,208,0,252,0,0,255,255,252,15,208,0,253,1,64,255,255,252,15,208,0,191,2,224,253,0,0,15,208,0,127,2,240,252,0,0,15,209,191,63,67,240,252,0,0,31,255,255,47,195,240,84,0,7,255,255,255,15,251,224,0,0,7,255,255,228,11,255,208,0,0,3,255,144,0,2,255,192,0,0,1,64,0,0,0,190,0, + // 0x780d 砍 + 13,120,36,36,68,38,1,252,0,0,0,0,6,80,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,63,255,255,254,15,240,0,0,0,63,255,255,254,15,224,0,0,0,63,255,255,254,15,208,0,0,0,0,63,128,0,31,192,0,0,0,0,63,64,0,47,255,255,255,248,0,63,0,0,63,255,255,255,253,0,127,0,0,63,255,255,255,252,0,190,0,0,191,91,245,87,252,0,254,0,0,255,7,240,3,248,0,253,0,0,254,7,240,3,244,0,252,0,2,252,7,240,7,240,2,255,255,247,252,7,240,11,240,3,255,255,255,244,7,240,15,224,7,255,255,255,240,7,240,15,192,11,248,3,246,208,11,240,31,192,15,248,3,240,64,11,240,1,64,47,248,3,240,0,15,244,0,0,63,248,3,240,0,15,248,0,0,191,248,3,240,0,31,252,0,0,191,248,3,240,0,47,252,0,0,61,248,3,240,0,63,190,0,0,5,248,3,240,0,126,63,0,0,1,248,3,240,0,253,63,128,0,1,248,3,240,2,252,31,192,0,1,255,255,240,7,248,15,240,0,1,255,255,240,15,240,7,248,0,1,255,255,240,63,208,3,254,0,1,252,0,0,255,128,0,255,128,1,248,0,7,255,0,0,127,240,1,248,0,63,252,0,0,47,254,0,164,0,63,240,0,0,7,252,0,0,0,15,128,0,0,1,248,0,0,0,5,0,0,0,0,32, + // 0x78ba 確 + 186,120,36,36,68,38,1,252,0,0,0,0,0,2,144,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,7,240,0,0,63,255,255,244,0,11,240,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,63,64,11,255,255,255,255,252,0,63,0,11,208,127,64,0,252,0,127,0,11,208,254,3,160,252,0,127,0,11,209,252,3,240,252,0,190,0,6,147,248,11,224,168,0,253,0,0,11,240,15,192,0,0,252,0,0,31,255,255,255,244,1,252,0,0,127,255,255,255,244,2,255,255,225,255,255,255,255,244,3,255,255,231,255,64,63,0,0,7,255,255,255,255,64,63,0,0,11,248,7,255,255,64,63,0,0,15,248,7,231,191,64,63,0,0,31,248,7,224,63,255,255,255,224,63,248,7,224,63,255,255,255,224,191,248,7,224,63,234,191,170,144,255,248,7,224,63,64,63,0,0,126,248,7,224,63,64,63,0,0,61,248,7,224,63,64,63,0,0,17,248,7,224,63,255,255,255,224,1,248,7,224,63,255,255,255,224,1,248,7,224,63,234,191,170,144,1,255,255,224,63,64,63,0,0,1,255,255,224,63,64,63,0,0,1,255,255,224,63,64,63,0,0,1,248,0,0,63,255,255,255,253,1,248,0,0,63,255,255,255,253,1,248,0,0,63,255,255,255,253,0,0,0,0,63,64,0,0,0,0,0,0,0,47,64,0,0,0, + // 0x79fb 移 + 251,121,35,36,68,38,1,252,0,0,0,64,0,7,224,0,0,0,0,111,208,0,15,240,0,0,0,111,255,244,0,63,192,0,0,63,255,255,208,0,255,255,255,128,63,255,244,0,2,255,255,255,208,47,151,240,0,15,255,255,255,192,0,3,240,0,127,224,0,127,128,0,3,240,2,255,208,0,255,0,0,3,240,15,255,248,2,253,0,0,3,240,11,247,254,7,252,0,0,3,240,3,192,191,223,240,0,63,255,255,248,0,47,255,192,0,63,255,255,248,0,11,255,64,0,63,255,255,248,0,47,253,0,0,21,95,245,80,2,255,240,0,0,0,15,240,0,127,255,255,0,0,0,47,248,7,255,245,254,0,0,0,63,254,2,255,67,252,0,0,0,191,255,128,224,15,255,255,248,0,255,255,224,0,63,255,255,252,2,251,247,248,0,255,255,255,252,3,247,241,252,7,254,0,7,244,11,211,240,240,47,248,0,15,240,31,195,240,18,255,253,0,47,208,63,131,240,7,255,255,192,127,192,191,3,240,1,244,127,240,255,64,125,3,240,0,128,11,255,253,0,60,3,240,0,0,2,255,248,0,16,3,240,0,0,0,255,224,0,0,3,240,0,0,7,255,128,0,0,3,240,0,0,127,253,0,0,0,3,240,0,27,255,240,0,0,0,3,240,11,255,255,64,0,0,0,3,240,15,255,244,0,0,0,0,3,240,7,254,64,0,0,0,0,3,240,2,144,0,0,0,0, + // 0x7a4d 積 + 77,122,36,36,68,38,1,252,0,0,0,0,0,7,240,0,0,0,0,111,192,0,7,240,0,0,0,111,255,243,255,255,255,255,244,63,255,255,231,255,255,255,255,244,63,255,249,1,85,91,245,85,80,47,239,240,0,0,7,240,0,0,0,11,240,1,255,255,255,255,224,0,11,240,1,255,255,255,255,224,0,11,240,0,0,7,244,0,0,0,11,240,0,0,7,240,0,0,0,11,240,31,255,255,255,255,253,63,255,255,255,255,255,255,255,253,63,255,255,245,85,85,85,85,84,63,255,255,240,0,0,0,0,0,0,15,240,0,255,255,255,255,208,0,31,240,0,255,255,255,255,208,0,47,244,0,254,85,85,95,208,0,63,253,0,253,0,0,15,208,0,191,255,64,253,0,0,15,208,0,255,255,192,255,255,255,255,208,1,255,251,240,255,255,255,255,208,3,251,243,248,253,0,0,15,208,11,235,241,240,253,0,0,15,208,15,203,240,128,255,255,255,255,208,63,139,240,0,255,255,255,255,208,191,11,240,0,253,0,0,15,208,190,11,240,0,253,0,0,15,208,60,11,240,0,255,255,255,255,208,36,11,240,0,255,255,255,255,208,0,11,240,0,21,213,85,213,64,0,11,240,0,7,244,3,244,0,0,11,240,0,127,248,7,255,0,0,11,240,7,255,208,0,191,224,0,11,240,191,254,0,0,31,252,0,11,240,63,224,0,0,3,252,0,7,240,14,0,0,0,0,144, + // 0x7aef 端 + 239,122,36,36,68,38,1,252,0,5,0,0,0,7,240,0,0,0,31,128,0,0,7,240,0,0,0,31,128,3,240,7,240,7,240,0,31,128,3,240,7,240,7,240,0,31,128,3,240,7,240,7,240,0,31,128,3,240,7,240,7,240,0,31,128,3,240,7,240,7,240,0,47,128,3,240,7,240,7,240,63,255,255,195,255,255,255,255,240,63,255,255,195,255,255,255,255,240,63,255,255,195,255,255,255,255,240,0,0,0,0,0,0,0,0,0,6,64,58,0,0,0,0,0,0,15,128,63,0,0,0,0,0,0,15,128,63,47,255,255,255,255,253,15,192,127,47,255,255,255,255,253,11,192,126,47,255,255,255,255,253,11,192,189,0,0,15,240,0,0,7,208,189,0,0,15,224,0,0,7,224,252,0,0,31,192,0,0,3,224,252,11,255,255,255,255,248,3,224,248,11,255,255,255,255,248,3,241,244,11,255,255,255,255,248,3,226,244,11,224,188,15,130,248,1,2,240,91,224,188,15,130,248,0,2,255,235,224,188,15,130,248,1,191,255,251,224,188,15,130,248,127,255,255,235,224,188,15,130,248,127,255,248,11,224,188,15,130,248,127,249,0,11,224,188,15,130,248,57,0,0,11,224,188,15,130,248,0,0,0,11,224,188,15,130,248,0,0,0,11,224,188,15,130,248,0,0,0,11,224,188,15,191,248,0,0,0,11,224,188,15,159,240,0,0,0,6,144,20,0,14,128, + // 0x7b49 等 + 73,123,35,36,68,38,1,252,0,14,64,0,0,126,0,0,0,0,47,192,0,0,255,0,0,0,0,63,128,0,0,254,0,0,0,0,255,255,255,227,255,255,255,252,1,255,255,255,231,255,255,255,252,3,255,255,255,255,255,255,255,252,15,244,253,0,63,208,255,0,0,63,224,191,0,255,128,63,128,0,127,192,63,64,191,0,47,192,0,31,0,57,0,255,0,15,64,0,0,0,0,0,255,0,0,0,0,0,127,255,255,255,255,255,254,0,0,127,255,255,255,255,255,254,0,0,127,255,255,255,255,255,254,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,0,0,61,0,0,1,253,0,0,0,0,255,64,0,1,253,0,0,0,0,255,208,0,1,253,0,0,0,0,47,244,0,1,253,0,0,0,0,11,252,0,1,253,0,0,0,0,2,255,0,1,253,0,0,0,0,0,254,5,6,253,0,0,0,0,0,52,15,255,252,0,0,0,0,0,0,11,255,248,0,0,0,0,0,0,3,255,144,0,0, + // 0x7ba1 管 + 161,123,35,36,68,38,2,252,0,121,0,0,1,228,0,0,0,0,255,0,0,3,252,0,0,0,1,253,0,0,7,248,0,0,0,3,255,255,255,79,255,255,255,244,11,255,255,255,127,255,255,255,244,31,255,255,255,255,255,255,255,244,63,195,248,2,255,2,253,0,0,255,66,252,7,252,0,255,0,0,190,0,253,3,248,0,127,64,0,24,0,160,3,248,0,41,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,64,0,0,0,0,0,15,192,63,64,0,0,0,0,0,15,192,63,71,255,255,255,255,254,15,192,63,71,255,255,255,255,254,15,192,26,7,250,170,170,170,254,10,128,0,7,240,0,0,0,254,0,0,0,7,240,0,0,0,254,0,0,0,7,250,170,170,170,254,0,0,0,7,255,255,255,255,254,0,0,0,7,255,255,255,255,254,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,250,170,170,170,170,160,0,0,7,255,255,255,255,255,240,0,0,7,255,255,255,255,255,240,0,0,7,240,0,0,0,7,240,0,0,7,240,0,0,0,7,240,0,0,7,240,0,0,0,7,240,0,0,7,255,255,255,255,255,240,0,0,7,255,255,255,255,255,240,0,0,7,250,170,170,170,175,240,0,0,3,240,0,0,0,7,240,0, + // 0x7bb1 箱 + 177,123,35,36,68,38,1,252,0,14,64,0,0,57,0,0,0,0,31,192,0,0,191,0,0,0,0,63,192,0,0,255,0,0,0,0,127,128,0,1,254,0,0,0,0,191,255,255,227,255,255,255,252,0,255,255,255,231,255,255,255,252,3,255,255,255,239,255,255,255,252,7,248,254,0,47,224,254,0,0,15,240,127,0,127,192,127,64,0,63,208,63,129,255,64,47,192,0,47,64,47,64,190,0,15,208,0,6,0,252,0,24,0,10,64,0,0,0,252,0,0,0,0,0,0,0,0,252,0,15,255,255,255,224,0,0,252,0,15,255,255,255,224,47,255,255,255,207,255,255,255,224,47,255,255,255,207,192,0,15,224,47,255,255,255,207,192,0,15,224,0,7,253,0,15,192,0,15,224,0,7,253,0,15,255,255,255,224,0,15,255,64,15,255,255,255,224,0,31,255,208,15,250,170,175,224,0,63,255,244,15,192,0,15,224,0,191,255,253,15,192,0,15,224,1,254,252,255,143,192,0,15,224,3,252,252,63,207,255,255,255,224,11,240,252,31,15,255,255,255,224,47,224,252,9,15,250,170,175,224,127,192,252,0,15,192,0,15,224,63,64,252,0,15,192,0,15,224,30,0,252,0,15,192,0,15,224,4,0,252,0,15,255,255,255,224,0,0,252,0,15,255,255,255,224,0,0,252,0,15,255,255,255,224,0,0,252,0,15,192,0,15,224,0,0,252,0,10,128,0,5,80, + // 0x7cfb 系 + 251,124,34,36,68,38,2,252,0,0,0,0,0,0,0,64,0,0,0,0,0,0,22,191,224,0,0,5,86,170,255,255,255,248,0,47,255,255,255,255,255,255,252,0,15,255,255,255,255,255,165,0,0,15,255,255,255,212,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,7,252,0,15,128,0,0,0,0,31,244,0,63,240,0,0,0,16,63,208,0,191,208,0,0,0,189,255,64,2,255,64,0,0,2,255,253,0,11,253,0,0,0,0,191,248,0,47,244,0,0,0,0,31,253,0,191,208,0,0,0,0,2,255,131,255,64,0,0,0,0,0,127,255,252,0,180,0,0,0,0,15,255,240,3,253,0,0,0,0,3,255,192,2,255,64,0,0,0,15,254,0,0,191,224,0,0,0,127,244,0,0,31,248,0,255,255,255,251,255,255,255,254,0,191,255,255,255,255,255,255,255,64,191,255,255,255,255,255,255,255,208,106,149,85,83,253,85,80,47,240,0,0,0,3,252,0,0,15,224,0,0,64,3,252,0,80,3,64,0,3,248,3,252,3,244,0,0,0,15,252,3,252,11,254,0,0,0,63,240,3,252,2,255,192,0,0,255,208,3,252,0,127,244,0,7,255,64,3,252,0,15,254,0,47,253,0,3,252,0,3,255,128,255,240,0,3,252,0,0,191,224,191,192,0,3,252,0,0,47,208,30,0,0,3,252,0,0,10,0,0,0,0,3,248,0,0,0,0, + // 0x7d05 紅 + 5,125,36,36,68,38,1,252,0,3,64,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,63,128,64,127,255,255,255,252,0,191,1,244,127,255,255,255,252,13,253,3,252,127,255,255,255,252,63,248,11,244,21,86,254,85,84,63,240,31,224,0,1,253,0,0,15,244,63,192,0,1,253,0,0,3,253,191,0,0,1,253,0,0,0,255,253,0,0,1,253,0,0,0,63,248,20,0,1,253,0,0,0,31,240,188,0,1,253,0,0,0,47,208,254,0,1,253,0,0,0,127,128,127,64,1,253,0,0,1,255,0,63,192,1,253,0,0,191,255,255,255,208,1,253,0,0,127,255,255,255,240,1,253,0,0,127,255,255,251,244,1,253,0,0,0,1,252,2,248,1,253,0,0,0,1,252,0,128,1,253,0,0,1,1,252,4,0,1,253,0,0,7,241,252,126,0,1,253,0,0,11,241,252,127,0,1,253,0,0,15,225,252,63,128,1,253,0,0,15,209,252,31,192,1,253,0,0,15,193,252,15,208,1,253,0,0,47,193,252,11,224,1,253,0,0,63,129,252,7,240,1,253,0,0,127,1,252,3,64,1,253,0,0,127,1,252,3,255,255,255,255,253,5,1,252,3,255,255,255,255,253,0,1,252,3,255,255,255,255,253,0,1,252,1,85,85,85,85,84,0,1,248,0,0,0,0,0,0, + // 0x7d22 索 + 34,125,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,63,255,255,255,255,255,255,255,208,63,255,255,255,255,255,255,255,208,63,255,255,255,255,255,255,255,208,63,0,0,127,128,0,0,15,208,63,0,1,255,0,4,0,15,208,63,0,11,252,0,127,64,15,208,63,10,47,224,2,255,128,15,208,0,47,255,64,15,253,0,0,0,0,47,254,0,127,240,0,0,0,0,7,255,210,255,129,192,0,0,0,0,191,255,252,11,248,0,0,0,0,31,255,208,3,255,0,0,0,0,3,254,0,0,191,224,0,0,0,31,254,170,170,255,252,0,127,255,255,255,255,255,255,255,0,127,255,255,255,255,255,255,255,192,63,255,255,255,248,0,0,31,128,0,0,0,3,248,1,208,5,0,0,1,249,3,248,11,248,0,0,0,11,253,3,248,7,255,64,0,0,127,244,3,248,0,191,240,0,2,255,192,3,248,0,31,253,0,47,254,0,3,248,0,2,255,128,191,244,0,3,248,0,0,127,208,47,64,0,3,248,0,0,15,0,4,0,0,3,248,0,0,0,0, + // 0x7d2b 紫 + 43,125,35,36,68,38,1,252,0,0,47,64,2,252,0,0,0,0,0,63,64,2,252,0,0,0,0,0,63,64,2,252,0,6,0,3,240,63,64,2,252,0,191,128,3,240,63,255,242,252,31,255,224,3,240,63,255,242,255,255,255,64,3,240,63,255,242,255,255,208,0,3,240,63,64,2,255,228,0,0,3,240,63,64,2,252,0,0,0,3,240,63,64,2,252,0,0,228,3,240,63,65,162,252,0,0,252,3,240,127,255,241,253,0,2,252,27,255,255,255,241,255,255,255,248,127,255,255,255,144,255,255,255,240,63,255,165,15,208,47,255,255,208,41,64,0,63,224,0,0,0,0,0,0,0,255,128,11,128,0,0,0,3,135,253,0,63,240,0,0,0,31,255,240,1,255,192,0,0,0,31,255,192,11,254,0,0,0,0,1,255,244,63,244,30,0,0,0,0,31,255,255,128,191,192,0,0,0,2,255,253,0,47,240,0,0,0,0,255,224,0,11,253,0,63,255,255,255,255,255,255,255,64,63,255,255,255,255,255,255,255,224,63,255,255,255,255,255,255,175,248,4,0,0,0,254,0,0,7,252,0,0,32,0,254,0,36,1,208,0,0,255,64,254,1,255,0,0,0,11,254,0,254,1,255,224,0,0,127,248,0,254,0,47,253,0,7,255,208,0,254,0,3,255,192,47,254,0,0,254,0,0,127,244,11,244,0,0,254,0,0,15,224,1,64,0,0,254,0,0,2,0, + // 0x7d30 細 + 48,125,35,36,68,38,1,252,0,10,0,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,63,64,0,255,255,255,255,244,0,191,0,0,255,255,255,255,244,0,253,11,128,255,255,255,255,244,5,248,15,224,254,86,249,87,244,63,240,47,192,253,1,248,3,244,127,224,63,64,253,1,248,3,244,47,224,254,0,253,1,248,3,244,15,245,252,0,253,1,248,3,244,3,255,244,0,253,1,248,3,244,0,255,224,64,253,1,248,3,244,0,127,203,208,253,1,248,3,244,0,63,7,240,253,1,248,3,244,0,189,3,244,253,1,248,3,244,1,254,175,252,254,2,248,3,244,191,255,255,253,255,255,255,255,244,191,255,255,254,255,255,255,255,244,127,255,240,63,255,255,255,255,244,16,7,240,62,253,1,248,3,244,0,7,240,16,253,1,248,3,244,0,7,240,64,253,1,248,3,244,15,199,243,224,253,1,248,3,244,15,199,243,240,253,1,248,3,244,15,199,242,244,253,1,248,3,244,31,135,240,252,253,1,248,3,244,47,71,240,252,253,1,248,3,244,63,71,240,189,253,1,248,3,244,63,7,240,126,253,1,248,3,244,126,7,240,32,255,255,255,255,244,189,7,240,0,255,255,255,255,244,8,7,240,0,255,255,255,255,244,0,7,240,0,254,85,85,87,244,0,7,240,0,253,0,0,3,244,0,7,224,0,84,0,0,0,0, + // 0x7d42 終 + 66,125,36,37,77,38,1,251,0,9,0,0,0,57,0,0,0,0,31,192,0,0,191,0,0,0,0,47,192,0,0,254,0,0,0,0,63,64,0,2,252,0,0,0,0,191,0,0,7,255,255,255,64,0,252,15,64,15,255,255,255,192,6,248,31,192,47,255,255,255,128,47,240,63,128,127,192,0,191,0,127,208,127,1,255,224,0,254,0,47,208,253,7,255,244,3,252,0,15,246,248,31,246,252,11,248,0,3,255,240,63,208,255,31,224,0,0,255,208,15,64,63,191,192,0,0,127,139,1,0,31,255,0,0,0,63,31,128,0,15,253,0,0,0,253,15,192,0,47,255,0,0,2,248,7,224,0,255,255,208,0,127,255,255,240,7,255,127,248,0,191,255,255,244,127,252,11,255,64,127,255,255,255,255,224,1,255,248,16,11,224,255,255,64,0,63,254,0,11,224,83,244,31,64,7,252,4,11,225,128,64,127,244,0,112,15,203,235,208,0,47,254,0,0,15,203,227,224,0,2,255,208,0,15,203,227,240,0,0,47,224,0,31,139,226,244,0,0,7,192,0,47,75,224,248,4,0,0,0,0,63,11,224,252,47,208,0,0,0,63,11,224,180,127,254,64,0,0,190,11,224,0,31,255,248,0,0,189,11,224,0,0,127,255,144,0,24,11,224,0,0,6,255,253,0,0,11,224,0,0,0,47,255,64,0,11,224,0,0,0,1,255,0,0,11,208,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0, + // 0x7d71 統 + 113,125,36,37,77,38,1,251,0,9,0,0,0,7,240,0,0,0,31,192,0,0,11,240,0,0,0,47,192,0,0,11,240,0,0,0,63,64,0,0,11,240,0,0,0,127,0,0,0,11,240,0,0,0,252,15,75,255,255,255,255,252,5,248,31,203,255,255,255,255,252,47,240,63,139,255,255,255,255,252,127,208,127,0,1,255,0,0,0,47,208,253,0,1,253,0,32,0,15,246,248,0,3,252,2,248,0,3,255,240,0,3,248,2,253,0,0,255,208,0,7,240,0,255,0,0,127,139,0,15,224,0,63,128,0,63,31,128,31,234,175,255,208,0,253,15,203,255,255,255,255,240,2,248,7,231,255,255,255,255,248,127,255,255,247,255,250,165,66,252,191,255,255,249,0,0,0,0,252,127,255,255,252,1,80,5,64,144,16,11,224,252,3,240,15,192,0,0,11,224,160,3,240,15,192,0,4,11,225,128,3,240,15,192,0,15,203,235,192,7,240,15,192,0,15,203,231,224,7,240,15,192,0,15,203,227,240,11,240,15,192,0,31,139,226,244,15,224,15,192,0,47,75,225,248,15,208,15,192,0,63,11,224,252,31,192,15,192,32,63,11,224,188,63,192,15,192,62,190,11,224,0,191,64,15,192,63,189,11,224,1,255,0,15,192,126,24,11,224,11,252,0,15,208,190,0,11,224,127,244,0,15,255,253,0,11,224,127,192,0,11,255,252,0,11,208,30,0,0,2,255,240,0,0,0,0,0,0,0,0,0, + // 0x7d72 絲 + 114,125,36,36,68,38,1,252,0,3,64,0,0,0,208,0,0,0,11,240,0,0,2,252,0,0,0,15,224,0,0,3,248,0,0,0,31,192,0,0,11,240,0,0,0,63,64,0,0,15,208,16,0,0,191,3,244,0,47,192,125,0,8,252,7,248,5,127,0,255,0,63,248,15,240,15,254,2,253,0,127,240,47,208,47,252,7,248,0,47,240,63,128,11,248,15,240,0,11,248,255,0,2,254,47,208,0,2,255,252,0,0,191,255,128,0,0,191,244,0,0,47,255,8,0,0,47,225,240,0,11,252,127,0,0,47,194,248,0,11,240,63,64,0,191,0,252,0,47,208,47,192,1,253,0,191,0,127,128,31,240,191,255,255,255,111,255,255,255,244,127,255,255,255,159,255,255,255,252,127,255,255,255,223,255,255,255,252,20,2,248,15,213,64,254,0,253,0,1,248,6,0,0,254,0,112,2,65,248,4,0,0,254,0,0,7,241,248,252,2,248,254,47,0,11,225,248,254,3,248,254,63,64,11,225,248,127,3,244,254,47,192,15,209,248,63,71,240,254,15,208,15,193,248,47,139,224,254,11,240,47,193,248,15,207,208,254,3,244,63,129,248,14,47,192,254,2,252,127,1,248,0,127,128,254,1,253,191,1,248,0,191,0,254,0,254,9,1,248,0,29,0,254,0,160,0,1,248,0,0,0,254,0,0,0,1,248,0,0,0,254,0,0,0,1,248,0,0,0,189,0,0, + // 0x7da0 綠 + 160,125,36,36,68,38,1,252,0,9,0,0,3,160,0,0,0,0,15,192,0,7,240,0,0,0,0,47,192,0,11,240,0,0,0,0,63,64,0,11,255,255,255,0,0,127,0,0,15,255,255,255,0,0,253,15,64,15,250,170,255,0,5,248,31,192,31,192,0,191,0,47,240,63,128,47,128,0,190,0,127,224,127,0,63,64,0,253,0,63,208,253,0,63,255,255,253,0,15,242,248,0,127,255,255,252,0,3,255,240,0,255,170,171,252,0,1,255,208,0,105,0,2,248,0,0,191,155,0,0,0,3,244,0,0,127,47,139,255,255,255,255,252,0,252,15,203,255,255,255,255,252,3,248,11,235,255,255,255,255,252,191,255,255,240,0,3,244,0,0,191,255,255,244,0,3,248,0,64,191,255,255,252,116,3,252,2,224,0,15,208,254,253,3,253,7,248,0,15,208,160,255,67,254,31,240,5,15,208,64,63,195,255,191,128,15,207,219,192,15,227,255,254,0,15,207,215,208,7,131,255,244,0,31,143,211,224,1,3,255,224,0,31,79,211,240,0,179,247,244,0,47,79,210,244,7,247,246,253,0,63,15,209,248,63,247,244,255,0,63,15,208,230,255,195,244,127,192,190,15,208,31,254,3,244,47,248,252,15,208,47,244,3,244,11,254,24,15,208,15,192,3,244,2,252,0,15,208,6,2,255,240,0,112,0,15,208,0,1,255,240,0,0,0,11,192,0,0,254,128,0,0, + // 0x7db2 網 + 178,125,35,37,77,38,1,251,0,9,0,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,47,192,7,255,255,255,255,244,0,63,0,7,255,255,255,255,244,0,190,0,7,255,255,255,255,244,0,252,15,135,240,0,0,2,244,9,248,47,199,240,80,3,146,244,63,240,63,71,242,240,7,226,244,127,208,191,7,240,244,11,194,244,47,208,252,7,240,248,15,130,244,15,243,244,7,240,188,31,2,244,3,255,240,7,240,120,31,2,244,0,255,193,7,243,255,255,242,244,0,127,175,7,243,255,255,242,244,0,127,31,199,242,171,250,162,244,0,252,15,215,240,3,240,2,244,3,248,11,231,240,3,240,2,244,191,255,255,251,240,3,240,2,244,191,255,255,255,242,175,250,162,244,191,255,255,255,243,255,255,242,244,0,15,208,255,243,255,255,242,244,0,15,208,171,240,252,0,2,244,10,79,209,135,240,252,0,2,244,15,207,219,199,240,252,0,2,244,15,207,215,231,240,252,0,2,244,31,143,211,247,240,252,0,2,244,47,79,210,247,240,189,0,2,244,47,15,209,251,240,191,255,226,244,63,15,209,255,240,127,255,226,244,63,15,208,235,240,31,255,226,244,190,15,208,7,240,0,0,2,244,252,15,208,7,240,0,0,2,244,24,15,208,7,240,0,0,3,244,0,15,208,7,240,0,3,255,244,0,15,208,7,240,0,2,255,240,0,15,208,7,240,0,1,255,128,0,0,0,0,0,0,0,0,0, + // 0x7dd2 緒 + 210,125,36,36,68,38,1,252,0,9,0,0,0,63,0,0,0,0,15,192,0,0,63,0,2,228,0,47,192,0,0,63,0,3,248,0,63,64,0,0,63,0,7,240,0,127,0,3,255,255,255,207,224,0,253,15,67,255,255,255,239,192,5,248,31,195,255,255,255,255,128,47,240,63,128,0,63,0,191,0,127,224,127,0,0,63,1,254,0,63,192,253,0,0,63,3,252,0,15,242,248,0,0,63,7,248,0,7,251,240,0,0,63,15,240,0,2,255,208,31,255,255,255,255,253,0,255,139,31,255,255,255,255,253,0,127,47,95,255,255,255,255,253,0,253,15,192,0,15,248,0,0,2,248,11,224,0,127,208,0,0,191,255,255,240,1,255,64,0,0,191,255,255,244,11,255,255,255,192,191,255,255,252,127,255,255,255,192,0,15,208,255,255,255,255,255,192,0,15,208,191,255,192,0,31,192,4,15,208,95,255,192,0,31,192,15,207,219,202,31,192,0,31,192,15,207,215,208,31,192,0,31,192,31,143,211,224,31,255,255,255,192,31,143,211,240,31,255,255,255,192,47,79,210,244,31,255,255,255,192,63,15,209,248,31,192,0,31,192,63,15,208,228,31,192,0,31,192,189,15,208,0,31,192,0,31,192,188,15,208,0,31,255,255,255,192,4,15,208,0,31,255,255,255,192,0,15,208,0,31,255,255,255,192,0,15,208,0,31,192,0,31,192,0,11,192,0,10,128,0,10,128, + // 0x7dda 線 + 218,125,36,36,68,38,1,252,0,9,0,0,0,3,164,0,0,0,15,192,0,0,7,252,0,0,0,47,192,0,0,11,240,0,0,0,63,64,0,0,15,224,0,0,0,127,0,1,255,255,255,255,240,0,253,15,65,255,255,255,255,240,5,248,31,193,255,255,255,255,240,47,240,63,129,252,0,0,11,240,127,224,127,1,252,0,0,11,240,63,208,253,1,254,170,170,175,240,15,242,248,1,255,255,255,255,240,3,255,240,1,255,255,255,255,240,1,255,208,1,252,0,0,11,240,0,191,155,1,252,0,0,11,240,0,127,47,129,252,0,0,11,240,0,252,15,193,255,255,255,255,240,3,248,11,225,255,255,255,255,240,191,255,255,241,255,255,255,255,240,191,255,255,244,0,3,244,0,0,191,255,255,252,0,3,248,0,64,0,15,208,252,0,3,252,2,240,0,15,208,171,255,231,253,7,252,5,15,209,71,255,251,255,31,244,15,207,219,199,255,243,255,191,192,15,207,215,208,3,243,255,255,0,31,143,211,240,11,227,255,248,0,31,79,210,240,15,195,251,240,0,47,79,210,244,63,131,247,252,0,63,15,209,248,191,3,245,255,0,63,15,208,145,254,3,244,191,128,190,15,208,7,252,3,244,63,244,252,15,208,63,240,3,244,15,254,24,15,208,47,192,3,244,3,253,0,15,208,15,2,255,240,0,184,0,15,208,0,1,255,240,0,0,0,11,192,0,0,255,128,0,0, + // 0x7de8 編 + 232,125,35,36,68,38,1,252,0,9,0,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,47,128,15,255,255,255,255,252,0,63,0,15,255,255,255,255,252,0,126,0,15,255,255,255,255,252,0,252,14,0,0,0,0,0,0,5,248,47,192,0,0,0,0,0,47,240,63,64,0,0,0,0,0,127,224,190,2,255,255,255,255,240,63,208,252,2,255,255,255,255,240,15,242,244,2,255,255,255,255,240,3,255,240,2,244,0,0,11,240,0,255,208,2,244,0,0,11,240,0,127,159,2,244,0,0,11,240,0,127,47,2,255,255,255,255,240,0,253,15,130,255,255,255,255,240,2,248,15,195,255,255,255,255,240,191,255,255,227,244,0,0,0,0,191,255,255,243,244,0,0,0,0,191,255,255,243,254,170,170,170,164,0,15,193,247,255,255,255,255,248,0,15,192,211,255,255,255,255,248,5,15,194,3,255,11,131,208,248,15,207,207,131,255,11,131,208,248,15,143,207,199,255,11,131,208,248,31,79,203,203,255,11,131,208,248,47,79,195,219,255,255,255,255,248,47,15,195,239,239,255,255,255,248,63,15,195,255,223,175,235,234,248,62,15,194,255,159,11,131,208,248,189,15,192,63,95,11,131,208,248,188,15,192,127,31,11,131,208,248,4,15,192,254,31,11,131,209,248,0,15,193,252,31,11,131,223,248,0,15,192,56,31,11,131,223,244,0,15,192,0,31,5,65,70,144, + // 0x7e2e 縮 + 46,126,35,36,68,38,1,252,0,9,0,0,0,7,240,0,0,0,15,192,0,0,11,240,0,0,0,47,128,0,0,11,240,0,0,0,63,0,0,0,11,240,0,0,0,126,0,15,255,255,255,255,252,0,252,14,79,255,255,255,255,252,5,248,47,207,255,255,255,255,252,63,240,63,15,192,0,0,1,252,127,208,190,15,192,0,0,1,252,47,209,252,15,206,64,0,1,168,11,247,244,5,95,192,0,0,0,3,255,240,0,47,191,255,255,252,0,255,193,0,63,127,255,255,252,0,127,111,0,63,63,255,255,252,0,127,31,128,190,0,15,208,0,0,252,15,192,253,0,15,192,0,2,248,11,209,252,0,31,192,0,191,255,255,227,252,31,255,255,240,191,255,255,247,252,31,255,255,244,191,255,255,255,252,31,255,255,244,0,15,193,255,252,31,128,3,244,0,15,192,63,252,31,128,3,244,9,15,193,46,252,31,128,3,244,15,207,207,72,252,31,128,3,244,15,143,207,192,252,31,255,255,244,31,79,203,192,252,31,255,255,244,47,79,199,208,252,31,255,255,244,47,15,195,224,252,31,128,3,244,63,15,195,240,252,31,128,3,244,62,15,194,224,252,31,128,3,244,189,15,192,0,252,31,128,3,244,188,15,192,0,252,31,255,255,244,4,15,192,0,252,31,255,255,244,0,15,192,0,252,31,255,255,244,0,15,192,0,252,31,128,3,244,0,15,192,0,252,26,64,1,80, + // 0x7e3d 總 + 61,126,36,36,68,38,1,252,0,9,0,0,0,3,164,0,0,0,15,192,0,0,3,252,0,0,0,47,128,0,0,7,244,0,0,0,63,0,0,0,15,240,0,0,0,126,0,3,255,255,255,255,240,0,252,14,3,255,255,255,255,240,5,248,47,195,250,171,234,171,240,47,240,63,67,240,3,224,3,240,127,224,190,3,240,7,255,227,240,63,208,252,3,242,223,255,243,240,15,242,244,3,247,255,3,227,240,3,255,240,3,240,255,139,195,240,0,255,208,3,242,255,255,67,240,0,127,159,3,247,209,255,3,240,0,127,47,3,241,65,255,195,240,0,253,15,131,240,11,251,243,240,2,248,15,195,240,127,193,195,240,191,255,255,227,240,190,0,3,240,191,255,255,243,250,190,170,171,240,191,255,255,243,255,255,255,255,240,0,15,193,247,255,255,255,255,240,0,15,192,208,0,63,0,0,0,0,15,193,0,0,191,208,0,0,15,207,207,64,0,31,248,0,0,15,143,207,192,0,3,254,0,0,31,143,203,192,65,248,191,11,0,31,79,199,209,245,248,40,47,128,47,15,195,226,245,248,0,15,208,63,15,195,243,241,248,0,11,240,62,15,194,227,241,248,0,3,244,189,15,192,7,225,248,0,209,252,252,15,192,15,209,248,1,244,253,24,15,192,47,193,248,2,244,190,0,15,192,63,65,255,255,240,126,0,15,192,10,0,255,255,224,32,0,15,192,0,0,47,255,128,0, + // 0x7e7c 繼 + 124,126,35,37,77,38,1,251,0,36,0,63,0,0,0,0,0,0,63,0,63,0,240,0,124,0,0,126,0,63,2,224,0,248,0,0,253,0,63,3,194,1,240,128,0,252,0,63,47,139,207,210,240,2,244,57,63,63,15,47,135,192,27,240,190,63,31,126,11,223,64,63,208,252,63,7,252,2,254,0,127,194,244,63,2,246,0,253,128,47,195,240,63,3,219,65,243,208,11,251,208,63,11,131,195,208,240,3,255,192,63,127,255,255,255,248,1,255,0,63,127,255,255,255,252,0,190,184,63,0,0,128,0,20,0,252,252,63,234,170,170,170,168,2,244,126,63,255,255,255,255,252,3,240,63,63,255,255,255,255,252,255,255,255,127,0,208,0,52,0,191,255,255,191,1,240,0,188,0,191,255,239,255,3,208,0,244,0,0,47,75,255,7,195,133,240,224,0,47,69,63,63,75,159,195,224,9,47,68,63,63,31,31,135,192,31,111,126,63,15,189,7,223,64,31,111,127,63,3,252,1,254,0,47,47,95,127,1,247,0,254,192,47,47,79,191,3,219,128,243,224,63,47,79,255,11,131,195,208,240,62,47,75,255,127,255,255,255,248,125,47,75,255,127,255,255,255,252,188,47,64,63,20,0,149,0,40,188,47,64,63,0,0,0,0,0,4,47,64,63,255,255,255,255,252,0,47,64,63,255,255,255,255,252,0,47,64,63,234,170,170,170,168,0,47,64,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x7e8c 續 + 140,126,35,36,68,38,1,252,0,9,0,0,0,11,240,0,0,0,31,192,0,0,11,240,0,0,0,47,128,31,255,255,255,255,252,0,63,0,31,255,255,255,255,252,0,190,0,5,85,91,245,85,84,0,252,31,64,0,11,240,0,0,6,244,63,130,255,255,255,255,224,47,240,127,2,255,255,255,255,224,127,208,253,0,0,0,0,0,0,63,209,252,0,0,0,0,0,0,15,243,244,7,255,255,255,255,244,3,255,224,7,255,255,255,255,244,1,255,192,7,208,124,47,2,244,0,191,126,7,219,244,31,255,244,0,127,47,7,223,128,5,87,244,0,252,31,135,255,255,255,255,244,2,244,15,199,255,255,255,255,244,111,255,255,208,0,0,0,0,0,127,255,255,240,0,0,0,0,0,127,255,251,240,255,255,255,255,192,16,15,194,240,255,255,255,255,192,0,15,192,0,252,0,0,15,192,14,79,193,0,254,170,170,175,192,15,207,207,64,255,255,255,255,192,31,143,207,192,252,0,0,15,192,31,79,203,192,254,170,170,175,192,47,79,195,208,255,255,255,255,192,47,15,195,224,252,0,0,15,192,63,15,195,224,252,0,0,15,192,126,15,193,0,255,255,255,255,192,189,15,192,0,255,255,255,255,192,188,15,192,0,11,224,7,244,0,4,15,192,1,191,244,11,255,64,0,15,192,111,255,64,0,191,244,0,15,192,127,228,0,0,11,252,0,15,192,29,0,0,0,1,208, + // 0x7ea2 红 + 162,126,35,34,50,38,1,254,0,1,144,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,11,244,1,170,170,170,170,160,0,15,240,3,255,255,255,255,244,0,47,208,3,255,255,255,255,244,0,63,192,3,255,255,255,255,244,0,191,0,0,0,3,248,0,0,1,254,1,192,0,3,248,0,0,3,252,3,248,0,3,248,0,0,11,244,11,248,0,3,248,0,0,31,224,31,240,0,3,248,0,0,127,255,255,208,0,3,248,0,0,127,255,255,128,0,3,248,0,0,63,255,255,0,0,3,248,0,0,62,87,252,0,0,3,248,0,0,0,15,244,0,0,3,248,0,0,0,47,224,0,0,3,248,0,0,0,127,192,0,0,3,248,0,0,1,255,0,0,0,3,248,0,0,7,253,26,240,0,3,248,0,0,31,255,255,240,0,3,248,0,0,127,255,255,244,0,3,248,0,0,63,255,254,80,0,3,248,0,0,47,229,0,0,0,3,248,0,0,20,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,16,0,3,248,0,0,0,0,107,240,0,3,248,0,0,0,111,255,240,0,3,248,0,0,127,255,255,251,255,255,255,255,252,127,255,254,71,255,255,255,255,252,63,254,64,7,255,255,255,255,252,57,0,0,6,170,170,170,170,168, + // 0x7f6e 置 + 110,127,35,35,59,38,2,252,5,85,85,85,85,85,85,85,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,0,11,224,3,240,1,252,0,191,0,11,224,3,240,1,252,0,191,0,11,224,3,240,1,252,0,191,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,0,5,85,85,86,254,85,85,85,0,0,0,0,1,252,0,0,0,0,42,170,170,171,254,170,170,170,128,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,0,0,0,3,244,0,0,0,0,0,0,0,3,244,0,0,0,0,1,80,31,255,255,255,255,244,0,7,240,31,255,255,255,255,244,0,7,240,31,192,0,0,3,244,0,7,240,31,192,0,0,3,244,0,7,240,31,255,255,255,255,244,0,7,240,31,255,255,255,255,244,0,7,240,31,192,0,0,3,244,0,7,240,31,192,0,0,3,244,0,7,240,31,255,255,255,255,244,0,7,240,31,255,255,255,255,244,0,7,240,31,192,0,0,3,244,0,7,240,31,192,0,0,3,244,0,7,240,31,255,255,255,255,244,0,7,240,31,255,255,255,255,244,0,7,240,0,0,0,0,0,0,0,7,255,255,255,255,255,255,255,240,7,255,255,255,255,255,255,255,244,7,255,255,255,255,255,255,255,244,7,240,0,0,0,0,0,0,0,2,160,0,0,0,0,0,0,0, + // 0x7f72 署 + 114,127,35,35,59,38,1,252,1,85,85,85,85,85,85,85,64,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,248,0,252,0,127,0,47,192,2,248,0,252,0,127,0,47,192,2,248,0,252,0,127,0,47,192,2,253,86,254,85,191,85,127,192,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,13,0,0,47,255,255,255,255,248,127,128,0,63,255,255,255,255,249,255,128,0,63,255,255,255,255,255,253,0,0,0,0,3,248,0,127,244,0,0,0,0,3,248,3,255,128,0,47,255,255,255,255,255,255,255,248,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,0,7,255,244,0,0,0,0,0,1,191,255,64,0,0,0,0,0,47,255,254,170,170,169,0,0,27,255,255,255,255,255,253,0,27,255,255,255,255,255,255,253,0,127,255,255,64,0,0,0,253,0,47,254,63,64,0,0,0,253,0,14,64,63,149,85,85,85,253,0,0,0,63,255,255,255,255,253,0,0,0,63,255,255,255,255,253,0,0,0,63,64,0,0,0,253,0,0,0,63,64,0,0,0,253,0,0,0,63,255,255,255,255,253,0,0,0,63,255,255,255,255,253,0,0,0,63,170,170,170,170,253,0,0,0,63,0,0,0,0,169,0, + // 0x8070 聰 + 112,128,36,37,77,38,1,251,0,0,0,0,0,1,148,0,0,0,0,0,0,0,3,252,0,0,63,255,255,255,0,3,248,0,0,63,255,255,255,0,7,240,0,0,63,255,255,255,255,255,255,255,240,3,240,7,224,255,255,255,255,240,3,240,7,224,254,171,250,171,240,3,240,7,224,252,1,224,3,240,3,240,7,224,252,3,250,163,240,3,240,7,224,252,175,255,227,240,3,255,255,224,252,255,3,211,240,3,255,255,224,252,191,199,195,240,3,255,255,224,253,247,255,3,240,3,240,7,224,252,128,191,3,240,3,240,7,224,252,0,255,195,240,3,240,7,224,252,7,231,211,240,3,240,7,224,252,63,129,131,240,3,240,7,224,252,61,0,3,240,3,255,255,224,255,255,255,255,240,3,255,255,224,255,255,255,255,240,3,255,255,224,170,175,234,170,160,3,240,7,224,0,31,224,0,0,3,240,7,224,0,31,253,0,0,3,240,7,224,0,2,255,64,0,3,240,7,224,0,189,127,129,0,3,240,31,224,125,189,15,31,64,3,255,255,224,189,189,0,31,192,191,255,255,224,252,189,0,15,208,127,255,255,224,252,189,0,7,240,63,250,75,225,248,189,0,67,244,41,0,7,226,244,189,0,249,252,0,0,7,227,240,189,0,252,252,0,0,7,239,224,189,0,248,253,0,0,7,235,192,191,255,244,126,0,0,7,225,64,63,255,240,32,0,0,7,224,0,10,255,128,0,0,0,0,0,0,0,0,0,0, + // 0x81ea 自 + 234,129,27,37,3,38,6,251,0,0,3,164,0,0,0,0,0,7,252,0,0,0,0,0,11,244,0,0,0,0,0,15,240,0,0,0,0,0,15,224,0,0,0,85,85,111,229,85,85,80,255,255,255,255,255,255,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,85,85,85,85,87,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,254,85,85,85,85,87,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,0,0,0,0,3,248,254,85,85,85,85,87,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,254,0,0,0,0,3,248,254,0,0,0,0,3,244,0,0,0,0,0,0,0, + // 0x85cd 藍 + 205,133,34,35,59,38,2,253,0,0,63,64,0,47,192,0,0,0,0,63,64,0,47,192,0,0,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,0,0,63,64,0,47,192,0,0,0,0,63,64,0,47,192,0,0,0,0,0,0,0,20,0,0,0,15,255,255,255,224,63,64,0,0,15,255,255,255,224,127,0,0,0,15,192,190,0,0,191,0,0,0,15,192,126,0,1,255,255,255,208,15,255,255,255,131,255,255,255,208,15,255,255,255,139,255,255,255,208,15,192,0,15,159,224,0,0,0,15,192,0,15,191,192,0,0,0,15,255,255,255,143,0,0,0,0,15,255,255,255,128,0,0,0,0,15,192,126,0,0,191,255,255,64,15,192,126,0,0,255,255,255,64,15,255,255,255,240,255,255,255,64,15,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,244,0,0,255,255,255,255,255,255,244,0,0,255,170,254,171,254,171,244,0,0,253,0,252,2,244,3,244,0,0,253,0,252,2,244,3,244,0,0,253,0,252,2,244,3,244,0,0,253,0,252,2,244,3,244,0,0,253,0,252,2,244,3,244,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x884c 行 + 76,136,35,36,68,38,1,252,0,0,32,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,2,254,0,85,85,85,85,80,0,11,252,1,255,255,255,255,240,0,47,240,1,255,255,255,255,240,0,191,192,1,255,255,255,255,240,3,255,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,127,240,4,0,0,0,0,0,0,63,192,15,144,0,0,0,0,0,14,0,63,208,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,3,253,15,255,255,255,255,252,0,15,248,15,255,255,255,255,252,0,63,240,15,255,255,255,255,252,0,255,224,5,85,85,95,245,84,3,255,224,0,0,0,15,224,0,31,255,224,0,0,0,15,224,0,127,255,224,0,0,0,15,224,0,191,207,224,0,0,0,15,224,0,47,15,224,0,0,0,15,224,0,12,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,0,0,15,224,0,0,15,224,0,1,255,255,224,0,0,15,224,0,0,255,255,208,0,0,15,224,0,0,191,255,128,0,0,10,160,0,0,21,84,0,0, + // 0x8868 表 + 104,136,36,36,68,38,1,252,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,127,255,255,255,255,255,255,0,0,127,255,255,255,255,255,255,0,0,127,255,255,255,255,255,254,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,47,255,255,255,255,255,255,255,244,47,255,255,255,255,255,255,255,244,47,255,255,255,255,255,255,255,244,0,0,0,47,255,240,0,0,0,0,0,1,255,199,240,0,10,0,0,0,11,255,3,248,0,47,192,0,0,191,244,2,252,0,255,208,0,11,255,192,0,254,7,255,0,1,255,255,192,0,191,47,248,0,111,255,255,192,0,127,255,208,0,127,254,47,192,0,47,254,0,0,31,224,47,192,0,15,244,0,0,9,0,47,192,0,7,252,0,0,0,0,47,192,0,18,255,64,0,0,0,47,192,27,240,255,208,0,0,0,47,239,255,240,63,252,0,0,0,127,255,255,240,15,255,128,0,111,255,255,249,0,2,255,253,0,191,255,249,0,0,0,127,252,0,63,249,0,0,0,0,11,244,0,41,0,0,0,0,0,0,96, + // 0x88ab 被 + 171,136,36,36,68,38,1,252,0,15,192,0,0,1,252,0,0,0,31,192,0,0,1,252,0,0,0,31,192,0,0,1,252,0,0,0,31,192,0,0,1,252,0,0,0,31,192,0,0,1,252,0,0,0,31,192,0,0,1,252,0,0,0,31,192,1,255,255,255,255,252,63,255,255,193,255,255,255,255,252,63,255,255,241,255,255,255,255,252,63,255,255,209,252,2,252,3,248,0,0,47,193,252,1,252,3,244,0,0,63,129,252,1,252,3,240,0,0,127,1,252,1,252,11,240,0,0,253,1,252,1,252,6,208,0,3,252,33,252,1,252,0,0,0,11,244,189,255,255,255,255,208,0,31,241,249,255,255,255,255,240,0,127,251,225,255,255,255,255,208,0,255,255,193,255,244,0,31,192,3,255,255,66,255,248,0,63,192,31,255,239,194,249,252,0,63,128,191,255,207,226,248,253,0,191,0,191,143,195,243,244,191,0,255,0,62,15,193,211,244,63,130,253,0,40,15,192,67,240,47,199,252,0,0,15,192,7,240,15,255,244,0,0,15,192,11,240,7,255,224,0,0,15,192,15,224,3,255,192,0,0,15,192,15,208,2,255,128,0,0,15,192,31,192,15,255,240,0,0,15,192,63,128,127,255,253,0,0,15,192,127,66,255,215,255,208,0,15,192,255,47,255,1,255,253,0,15,194,253,63,248,0,63,253,0,15,192,188,31,208,0,7,244,0,15,192,20,9,0,0,0,96, + // 0x88c5 装 + 197,136,36,37,77,38,1,251,0,0,63,0,0,7,240,0,0,0,0,63,0,0,7,240,0,0,3,64,63,0,0,7,240,0,0,15,224,63,0,0,7,240,0,0,15,252,63,0,0,7,240,0,0,2,255,63,15,255,255,255,255,252,0,190,63,15,255,255,255,255,252,0,40,63,15,255,255,255,255,252,0,0,63,0,0,7,240,0,0,0,0,63,0,0,7,240,0,0,0,1,63,0,0,7,240,0,0,0,31,127,0,0,7,240,0,0,2,255,191,0,0,7,240,0,0,47,255,191,0,0,7,240,0,0,127,248,63,3,255,255,255,255,240,63,64,63,3,255,255,255,255,240,20,0,63,3,255,255,255,255,240,0,0,63,0,0,0,0,0,0,0,0,42,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,47,255,255,255,255,255,255,255,252,0,0,1,255,143,224,0,29,0,0,0,31,253,3,244,0,191,128,0,6,255,224,2,252,7,255,64,6,255,255,128,0,255,127,244,0,127,255,255,128,0,63,255,128,0,31,249,47,128,0,15,252,0,0,9,0,47,128,1,67,255,64,0,0,0,47,218,255,192,255,244,0,0,26,255,255,255,192,47,255,144,0,63,255,255,254,128,3,255,253,0,63,255,165,0,0,0,111,248,0,25,64,0,0,0,0,1,176,0,0,0,0,0,0,0,0,0, + // 0x88dd 裝 + 221,136,35,37,77,38,2,251,5,64,31,128,0,15,208,0,0,15,192,31,192,0,15,224,0,0,15,192,31,192,0,15,224,0,0,15,192,31,192,0,15,224,0,0,15,192,31,192,0,15,224,0,0,15,255,255,207,255,255,255,255,224,15,255,255,207,255,255,255,255,224,15,255,255,207,255,255,255,255,224,10,128,31,192,0,15,224,0,0,0,0,31,192,0,15,224,0,0,170,170,191,192,0,15,224,0,0,255,255,255,192,0,15,224,0,0,255,255,255,192,0,15,224,0,0,7,240,31,192,0,15,224,0,0,11,224,31,195,255,255,255,255,128,15,208,31,195,255,255,255,255,128,63,192,31,195,255,255,255,255,128,255,64,31,192,0,0,0,0,0,254,0,31,194,252,0,0,0,0,116,0,5,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,0,0,11,254,63,128,0,52,0,0,1,191,244,15,208,2,254,0,0,111,255,64,11,240,31,253,0,111,255,254,0,3,253,255,224,0,255,254,254,0,0,255,254,0,0,127,144,190,0,0,63,240,0,0,16,0,190,0,22,15,253,0,0,0,0,255,191,255,3,255,208,0,0,175,255,255,255,0,191,254,64,1,255,255,255,229,0,15,255,244,0,255,233,64,0,0,1,191,224,0,80,0,0,0,0,0,6,192,0,0,0,0,0,0,0,0,0, + // 0x8907 複 + 7,137,36,36,68,38,1,252,0,26,64,0,10,64,0,0,0,0,47,128,0,15,208,0,0,0,0,47,128,0,47,192,0,0,0,0,47,128,0,63,128,0,0,0,0,47,128,0,191,255,255,255,252,0,47,128,0,255,255,255,255,252,0,47,128,3,255,255,255,255,252,0,47,128,7,244,0,0,0,0,63,255,255,79,224,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,95,191,255,255,255,192,0,0,63,5,127,85,85,111,192,0,0,190,0,126,0,0,31,192,0,0,252,0,127,0,0,47,192,0,2,248,0,127,255,255,255,192,0,7,240,224,127,255,255,255,192,0,15,225,244,126,0,0,31,192,0,47,227,224,126,0,0,31,192,0,127,255,192,127,255,255,255,192,0,255,255,64,127,255,255,255,192,3,255,255,0,21,255,85,85,64,15,255,175,128,1,254,0,0,0,63,255,143,208,7,254,170,169,0,191,159,135,192,31,255,255,255,192,62,31,130,0,191,255,255,255,64,40,31,128,7,255,192,0,254,0,0,31,128,47,255,240,3,252,0,0,31,128,63,211,252,31,244,0,0,31,128,14,0,255,191,208,0,0,31,128,0,0,127,255,64,0,0,31,128,0,0,127,255,64,0,0,31,128,0,31,255,255,249,0,0,31,128,27,255,254,127,255,249,0,31,128,127,255,224,7,255,253,0,31,128,63,249,0,0,111,248,0,31,128,30,64,0,0,0,176, + // 0x89d2 角 + 210,137,32,37,40,38,1,251,0,0,3,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,15,255,255,255,64,0,0,0,63,255,255,255,208,0,0,0,191,255,255,255,192,0,0,0,255,0,0,191,128,0,0,3,253,0,0,255,0,0,0,15,248,0,2,253,0,0,0,63,240,0,3,248,0,0,0,255,255,255,255,255,255,255,3,255,255,255,255,255,255,255,31,255,255,255,255,255,255,255,15,255,224,0,63,128,0,127,3,139,224,0,63,128,0,127,0,11,224,0,63,128,0,127,0,11,224,0,63,128,0,127,0,11,224,0,63,128,0,127,0,11,255,255,255,255,255,255,0,15,255,255,255,255,255,255,0,15,255,255,255,255,255,255,0,15,224,0,63,128,0,127,0,15,224,0,63,128,0,127,0,15,208,0,63,128,0,127,0,15,208,0,63,128,0,127,0,31,255,255,255,255,255,255,0,47,255,255,255,255,255,255,0,63,255,255,255,255,255,255,0,63,64,0,0,0,0,127,0,191,0,0,0,0,0,127,0,254,0,0,0,0,0,127,3,253,0,0,0,0,0,127,11,248,0,0,0,0,0,127,31,240,0,0,0,21,85,191,127,208,0,0,0,47,255,255,47,128,0,0,0,15,255,253,10,0,0,0,0,15,255,224,0,0,0,0,0,0,0,0, + // 0x8a08 計 + 8,138,36,36,68,38,1,252,0,0,0,0,0,0,253,0,0,7,255,255,240,0,0,254,0,0,7,255,255,244,0,0,254,0,0,7,255,255,244,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,127,255,255,254,0,0,254,0,0,127,255,255,254,0,0,254,0,0,127,255,255,254,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,11,255,255,240,0,0,254,0,0,11,255,255,241,255,255,255,255,255,10,170,170,161,255,255,255,255,255,0,0,0,1,255,255,255,255,255,0,0,0,0,85,85,255,85,85,11,255,255,240,0,0,254,0,0,11,255,255,240,0,0,254,0,0,11,255,255,240,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,11,255,255,240,0,0,254,0,0,15,255,255,240,0,0,254,0,0,15,255,255,240,0,0,254,0,0,15,208,3,240,0,0,254,0,0,15,208,3,240,0,0,254,0,0,15,208,3,240,0,0,254,0,0,15,208,3,240,0,0,254,0,0,15,208,3,240,0,0,254,0,0,15,208,3,240,0,0,254,0,0,15,255,255,240,0,0,254,0,0,15,255,255,240,0,0,254,0,0,15,255,255,240,0,0,254,0,0,15,208,0,0,0,0,254,0,0,5,64,0,0,0,0,254,0,0, + // 0x8a0a 訊 + 10,138,37,36,104,38,1,251,7,255,255,192,0,0,0,0,0,0,11,255,255,211,255,255,255,254,0,0,11,255,255,211,255,255,255,254,0,0,0,0,0,3,255,255,255,254,0,0,0,0,0,1,87,253,85,254,0,0,127,255,255,248,2,248,0,254,0,0,127,255,255,248,2,248,0,254,0,0,127,255,255,248,2,248,0,254,0,0,0,0,0,0,2,248,0,254,0,0,0,0,0,0,2,248,0,254,0,0,0,0,0,0,2,248,0,254,0,0,11,255,255,208,2,248,0,254,0,0,11,255,255,208,2,248,0,254,0,0,10,170,170,144,2,248,0,254,0,0,0,0,0,7,255,255,252,254,0,0,0,0,0,7,255,255,252,254,0,0,11,255,255,215,255,255,252,254,0,0,11,255,255,209,87,249,84,254,0,0,11,255,255,208,3,244,0,254,0,0,0,0,0,0,3,244,0,254,0,0,0,0,0,0,3,240,0,254,0,0,11,255,255,208,7,240,0,190,0,0,15,255,255,208,11,240,0,191,0,0,15,255,255,208,15,224,0,191,0,0,15,208,11,208,15,208,0,127,0,0,15,208,11,208,47,192,0,127,0,0,15,208,11,208,63,192,0,63,8,0,15,208,11,208,127,128,0,63,79,0,15,208,11,208,255,0,0,63,79,64,15,208,11,210,254,0,0,47,143,0,15,255,255,215,252,0,0,31,223,0,15,255,255,239,244,0,0,15,255,0,15,255,255,255,240,0,0,15,254,0,15,208,0,11,192,0,0,3,252,0,5,64,0,2,0,0,0,1,244,0,0,0,0,0,0,0,0,0,0,0, + // 0x8a18 記 + 24,138,36,35,59,38,1,252,7,255,255,244,0,0,0,0,0,7,255,255,244,47,255,255,255,224,7,255,255,244,47,255,255,255,224,0,0,0,0,47,255,255,255,224,0,0,0,0,21,85,85,95,224,127,255,255,254,0,0,0,15,224,127,255,255,254,0,0,0,15,224,127,255,255,254,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,11,255,255,240,0,0,0,15,224,11,255,255,240,0,0,0,15,224,10,170,170,160,5,85,85,95,224,0,0,0,0,31,255,255,255,224,0,0,0,0,31,255,255,255,224,11,255,255,240,31,255,255,255,224,11,255,255,240,31,192,0,15,224,11,255,255,240,31,192,0,15,224,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,11,255,255,240,31,192,0,0,0,15,255,255,240,31,192,0,0,0,15,255,255,240,31,192,0,0,0,15,208,3,240,31,192,0,0,0,15,208,3,240,31,192,0,0,144,15,208,3,240,31,192,0,0,253,15,208,3,240,31,192,0,0,253,15,208,3,240,31,192,0,0,253,15,208,3,240,31,192,0,0,252,15,255,255,240,31,224,0,3,252,15,255,255,240,15,255,255,255,248,15,255,255,240,11,255,255,255,240,15,208,0,0,2,255,255,255,208,5,64,0,0,0,21,85,84,0, + // 0x8a2d 設 + 45,138,36,35,59,38,1,252,7,255,255,208,31,255,255,240,0,11,255,255,224,31,255,255,240,0,11,255,255,224,31,255,255,240,0,0,0,0,0,31,192,11,240,0,0,0,0,0,31,192,7,240,0,127,255,255,252,31,192,7,240,0,127,255,255,252,31,192,7,240,0,127,255,255,252,47,192,7,240,120,0,0,0,0,63,128,7,240,126,0,0,0,0,127,64,7,240,126,0,0,0,0,255,0,7,240,189,11,255,255,225,253,0,7,255,252,11,255,255,231,252,0,3,255,252,10,170,170,171,244,0,1,255,240,0,0,0,2,208,0,0,0,0,0,0,0,0,64,0,0,0,0,11,255,255,226,255,255,255,255,208,11,255,255,226,255,255,255,255,192,11,255,255,226,255,255,255,255,192,0,0,0,0,6,128,0,63,128,0,0,0,0,47,192,0,191,0,11,255,255,224,15,224,1,254,0,15,255,255,224,7,244,3,252,0,15,255,255,224,3,252,11,248,0,15,208,7,224,1,255,31,240,0,15,208,7,224,0,191,255,208,0,15,208,7,224,0,63,255,128,0,15,208,7,224,0,15,255,0,0,15,208,7,224,0,63,255,64,0,15,208,7,224,2,255,255,240,0,15,255,255,224,47,255,191,254,64,15,255,255,231,255,252,11,255,248,15,255,255,239,255,208,0,255,252,15,208,0,3,253,0,0,27,244,5,64,0,2,128,0,0,0,160, + // 0x8a66 試 + 102,138,36,37,77,38,1,251,0,0,0,0,0,0,15,209,0,11,255,255,128,0,0,15,223,192,11,255,255,192,0,0,15,219,240,11,255,255,192,0,0,15,211,248,0,0,0,0,0,0,15,208,252,0,0,0,0,0,0,15,208,188,127,255,255,240,0,0,15,208,16,127,255,255,240,0,0,15,208,0,127,255,255,247,255,255,255,255,252,106,170,170,167,255,255,255,255,252,0,0,0,7,255,255,255,255,252,0,0,0,0,0,0,15,208,0,15,255,255,192,0,0,15,208,0,15,255,255,192,0,0,15,208,0,10,170,170,128,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,7,255,255,203,224,0,15,255,255,199,255,255,203,224,0,15,255,255,199,255,255,203,224,0,11,255,255,192,11,224,11,224,0,0,0,0,0,11,224,7,224,0,0,0,0,0,11,224,7,240,0,11,255,255,192,11,224,7,240,0,15,255,255,192,11,224,3,240,0,15,255,255,192,11,224,3,240,0,15,192,15,192,11,224,3,240,0,15,192,15,192,11,224,3,244,0,15,192,15,192,11,224,2,248,36,15,192,15,192,11,230,242,252,46,15,192,15,192,31,255,241,252,47,15,192,15,207,255,255,240,253,63,15,255,255,203,255,254,64,255,190,15,255,255,199,249,0,0,127,253,15,255,255,193,0,0,0,63,252,15,192,0,0,0,0,0,31,244,5,64,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0, + // 0x8a8d 認 + 141,138,36,35,59,38,1,252,11,255,255,128,0,0,0,0,0,11,255,255,192,255,255,255,255,240,11,255,255,192,255,255,255,255,240,0,0,0,0,255,255,255,255,240,0,0,0,0,0,15,192,3,240,127,255,255,240,16,31,128,7,240,127,255,255,240,189,47,64,7,240,127,255,255,241,255,255,64,7,240,0,0,0,0,127,255,64,7,240,0,0,0,0,6,255,240,11,240,0,0,0,0,1,255,254,11,224,15,255,255,192,3,254,254,15,224,15,255,255,192,15,240,124,15,208,10,170,170,128,63,208,4,31,208,0,0,0,1,255,128,63,255,192,0,0,0,11,254,0,31,255,128,15,255,255,195,244,13,31,253,0,15,255,255,192,128,63,128,0,0,11,255,255,192,0,63,244,0,0,0,0,0,0,0,11,254,0,0,0,0,0,0,0,1,255,128,0,11,255,255,192,0,84,63,128,0,15,255,255,192,65,252,14,2,0,15,255,255,192,249,252,0,47,64,15,192,15,193,249,252,0,47,192,15,192,15,194,245,252,0,15,224,15,192,15,195,241,252,0,11,240,15,192,15,195,241,252,0,3,248,15,192,15,199,241,252,0,226,252,15,192,15,207,209,252,0,252,253,15,255,255,223,193,252,1,248,254,15,255,255,223,129,252,2,248,191,15,255,255,194,0,255,255,244,116,15,192,0,0,0,255,255,240,0,5,64,0,0,0,47,255,192,0, + // 0x8aa4 誤 + 164,138,36,35,59,38,1,252,7,255,255,64,0,63,255,255,224,11,255,255,64,0,63,255,255,224,11,255,255,64,0,63,255,255,224,0,0,0,2,248,63,64,11,224,0,0,0,2,248,63,64,11,224,127,255,255,210,248,63,64,11,224,127,255,255,226,248,63,64,11,224,127,255,255,226,248,63,64,11,224,0,0,0,2,248,63,64,11,224,0,0,0,2,248,63,255,255,224,0,0,0,2,248,63,255,255,224,15,255,255,66,248,63,255,255,224,15,255,255,66,248,0,0,0,0,10,170,170,66,248,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,2,255,255,255,255,128,15,255,255,66,255,255,255,255,128,15,255,255,66,255,255,255,255,128,11,255,255,66,248,0,0,63,128,0,0,0,0,80,0,0,63,128,0,0,0,0,0,0,0,63,128,15,255,255,64,0,0,0,63,128,15,255,255,79,255,255,255,255,254,15,255,255,79,255,255,255,255,254,15,192,31,79,255,255,255,255,254,15,192,31,64,0,64,0,16,0,15,192,31,64,3,240,1,244,0,15,192,31,64,11,252,3,253,0,15,192,31,64,31,240,1,255,0,15,192,31,64,127,208,0,127,192,15,255,255,65,255,128,0,47,240,15,255,255,75,254,0,0,15,248,15,255,255,111,248,0,0,3,253,15,192,0,15,208,0,0,1,253,5,64,0,2,0,0,0,0,144, + // 0x8abf 調 + 191,138,35,36,68,38,1,251,11,255,254,0,0,0,0,0,0,11,255,255,7,255,255,255,255,244,11,255,255,7,255,255,255,255,244,0,0,0,7,255,255,255,255,244,0,0,0,7,224,2,144,3,244,127,255,255,135,224,3,224,3,244,127,255,255,199,224,3,224,3,244,127,255,255,199,225,171,250,131,244,0,0,0,7,226,255,255,211,244,0,0,0,7,226,255,255,211,244,0,0,0,7,224,3,224,3,244,15,255,255,7,224,3,224,3,244,15,255,255,7,224,3,224,3,244,10,170,170,7,226,171,250,147,244,0,0,0,7,227,255,255,227,244,0,0,0,7,227,255,255,227,244,15,255,255,11,224,0,0,3,244,15,255,255,11,224,0,0,3,244,11,255,254,11,225,170,170,131,244,0,0,0,11,225,255,255,195,244,0,0,0,11,225,255,255,195,244,15,255,254,11,209,240,11,195,244,15,255,255,15,209,240,11,195,244,15,255,255,15,209,240,11,195,244,15,192,63,15,193,240,11,195,244,15,192,63,15,193,240,11,195,244,15,192,63,31,193,255,255,195,244,15,192,63,47,129,255,255,195,244,15,192,63,63,65,250,170,131,244,15,192,63,63,65,240,0,3,244,15,255,255,127,0,0,0,3,244,15,255,255,254,0,0,5,91,244,15,255,255,253,0,0,11,255,240,15,192,0,252,0,0,7,255,224,5,64,0,40,0,0,3,255,64,0,0,0,0,0,0,0,0,0, + // 0x8acb 請 + 203,138,36,36,68,38,1,252,0,0,0,0,0,2,248,0,0,7,255,255,192,0,3,248,0,0,11,255,255,209,170,171,254,170,164,11,255,255,209,255,255,255,255,248,0,0,0,1,255,255,255,255,248,0,0,0,0,0,3,248,0,0,127,255,255,248,0,3,248,0,0,127,255,255,248,127,255,255,255,240,127,255,255,248,127,255,255,255,240,0,0,0,0,21,87,253,85,80,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,11,255,255,215,255,255,255,255,253,11,255,255,215,255,255,255,255,253,10,170,170,146,170,170,170,170,168,0,0,0,0,0,0,0,0,0,0,0,0,0,26,170,170,170,128,11,255,255,208,47,255,255,255,192,11,255,255,208,47,255,255,255,192,11,255,255,208,47,128,0,15,192,0,0,0,0,47,128,0,15,192,0,0,0,0,47,213,85,95,192,11,255,255,208,47,255,255,255,192,15,255,255,208,47,255,255,255,192,15,255,255,208,47,128,0,15,192,15,208,11,208,47,128,0,15,192,15,208,11,208,47,255,255,255,192,15,208,11,208,47,255,255,255,192,15,208,11,208,47,213,85,111,192,15,208,11,208,47,128,0,15,192,15,208,11,208,47,128,0,15,192,15,255,255,208,47,128,0,15,192,15,255,255,208,47,128,0,31,192,15,255,255,208,47,128,15,255,192,15,208,0,0,47,128,15,255,128,5,64,0,0,47,128,7,249,0, + // 0x8b70 議 + 112,139,36,36,68,38,1,252,0,0,0,0,9,0,0,100,0,11,255,254,0,63,0,0,254,0,11,255,255,0,31,192,1,252,0,11,255,255,0,15,208,3,240,0,0,0,0,15,255,255,255,255,244,0,0,0,15,255,255,255,255,244,127,255,255,134,170,175,250,170,160,127,255,255,192,0,11,224,0,0,127,255,255,192,85,95,229,85,64,0,0,0,3,255,255,255,255,192,0,0,0,3,255,255,255,255,192,0,0,0,0,0,11,224,0,0,15,255,255,0,0,11,224,0,0,15,255,255,63,255,255,255,255,252,10,170,170,63,255,255,255,255,252,0,0,0,42,170,170,170,170,168,0,0,0,0,0,24,42,4,0,15,255,255,1,111,255,127,47,0,15,255,255,47,255,249,63,47,208,11,255,254,31,255,192,63,7,244,0,0,0,0,15,192,63,1,244,0,0,0,0,15,192,63,0,64,15,255,254,127,255,255,255,255,252,15,255,255,127,255,255,255,255,252,15,255,255,42,175,234,191,170,168,15,192,63,0,15,192,47,66,0,15,192,63,0,15,214,95,139,208,15,192,63,22,191,255,143,223,192,15,192,63,127,255,255,143,255,64,15,192,63,127,255,212,11,253,0,15,192,63,37,31,192,11,244,20,15,255,255,0,15,192,47,240,46,15,255,255,0,15,194,255,252,61,15,255,254,10,175,207,248,255,252,15,192,0,15,255,135,128,127,248,5,64,0,7,254,0,0,11,224, + // 0x8b80 讀 + 128,139,36,36,68,38,1,252,0,0,0,0,0,11,224,0,0,11,255,254,0,0,11,240,0,0,11,255,255,15,255,255,255,255,252,11,255,255,15,255,255,255,255,252,0,0,0,5,85,95,245,85,84,0,0,0,0,0,11,240,0,0,106,170,170,131,255,255,255,255,240,127,255,255,195,255,255,255,255,240,127,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,248,0,0,0,15,255,255,255,255,248,15,255,255,15,193,188,62,1,248,15,255,255,15,255,240,47,255,248,10,170,170,15,222,64,5,86,248,0,0,0,15,192,0,0,1,248,0,0,0,15,255,255,255,255,248,15,255,255,15,255,255,255,255,248,15,255,255,0,0,0,0,0,0,11,255,254,2,255,255,255,255,224,0,0,0,2,255,255,255,255,224,0,0,0,2,244,0,0,11,224,15,255,254,2,255,255,255,255,224,15,255,255,2,250,170,170,175,224,15,255,255,2,244,0,0,11,224,15,192,63,2,255,255,255,255,224,15,192,63,2,249,85,85,95,224,15,192,63,2,244,0,0,11,224,15,192,63,2,255,255,255,255,224,15,192,63,2,255,255,255,255,224,15,192,63,0,7,192,3,224,0,15,255,255,0,47,240,15,253,0,15,255,255,7,255,208,2,255,208,15,255,254,191,254,0,0,47,253,15,192,0,63,224,0,0,7,248,5,64,0,9,0,0,0,0,144, + // 0x8b8a 變 + 138,139,35,37,77,38,2,251,0,100,0,0,0,0,14,64,0,0,252,0,127,255,192,31,64,0,1,244,0,127,255,192,62,0,0,3,240,64,0,0,1,252,46,0,63,195,243,255,255,255,240,127,0,127,71,227,255,255,255,241,252,0,31,223,192,0,0,7,255,240,0,7,255,0,0,0,0,255,208,0,1,252,96,127,255,192,63,110,0,3,241,244,127,255,192,126,31,64,95,229,252,0,0,22,253,95,192,255,255,254,127,255,239,255,255,240,255,255,255,191,255,223,255,255,244,0,125,9,0,0,0,15,192,224,0,125,0,0,0,0,15,193,0,46,125,244,191,255,195,207,207,64,63,125,188,191,255,199,207,207,192,62,125,61,188,7,203,207,199,208,188,125,62,188,7,223,143,195,240,252,125,4,191,255,255,15,193,240,180,125,15,255,255,218,15,192,208,16,125,47,208,0,0,15,192,0,0,0,191,128,0,0,0,0,0,0,2,255,255,255,255,255,255,192,0,15,255,255,255,255,255,255,192,0,191,255,255,255,255,255,255,192,7,255,253,0,0,31,244,0,0,127,253,255,128,0,191,208,0,0,47,208,47,248,7,255,64,0,0,10,0,7,255,255,252,0,0,0,0,0,0,191,255,224,0,0,0,0,0,91,255,255,255,144,0,0,5,175,255,255,175,255,255,233,64,255,255,255,228,1,191,255,255,240,191,255,228,0,0,1,191,255,224,62,144,0,0,0,0,0,91,192,0,0,0,0,0,0,0,0,0, + // 0x8cc7 資 + 199,140,34,36,68,38,2,252,0,0,0,0,164,0,0,0,0,7,144,0,1,252,0,0,0,0,15,254,0,3,248,0,0,0,0,15,255,244,11,255,255,255,255,192,0,191,248,31,255,255,255,255,192,0,6,240,127,170,255,170,191,64,0,0,18,255,1,255,0,190,0,0,0,1,252,3,255,129,252,0,0,0,100,32,11,255,209,180,0,0,111,248,0,47,235,248,0,0,111,255,248,2,255,130,255,128,0,255,255,145,191,254,0,191,254,64,191,228,1,255,224,0,31,255,240,57,0,0,249,0,0,1,255,192,0,63,255,255,255,255,255,230,128,0,63,255,255,255,255,255,224,0,0,63,64,0,0,0,15,224,0,0,63,64,0,0,0,15,224,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,64,0,0,0,15,224,0,0,63,64,0,0,0,15,224,0,0,63,64,0,0,0,15,224,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,64,0,0,0,15,224,0,0,63,64,0,0,0,15,224,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,0,26,64,0,25,64,0,0,0,0,127,208,0,63,208,0,0,0,27,255,208,0,191,254,64,0,11,255,253,0,0,7,255,244,0,191,255,208,0,0,0,111,255,128,47,249,0,0,0,0,2,255,208,10,64,0,0,0,0,0,40,0, + // 0x8ddd 距 + 221,141,36,35,59,38,1,252,0,0,0,0,5,85,85,85,84,11,255,255,252,31,255,255,255,252,11,255,255,252,31,255,255,255,252,11,255,255,252,31,255,255,255,252,11,208,0,252,31,192,0,0,0,11,208,0,252,31,192,0,0,0,11,208,0,252,31,192,0,0,0,11,208,0,252,31,192,0,0,0,11,208,0,252,31,192,0,0,0,11,224,0,252,31,213,85,85,64,11,255,255,252,31,255,255,255,208,11,255,255,252,31,255,255,255,208,11,255,255,252,31,255,255,255,208,0,1,248,0,31,192,0,15,208,0,1,248,0,31,192,0,15,208,0,1,248,0,31,192,0,15,208,11,193,248,0,31,192,0,15,208,11,193,248,0,31,192,0,15,208,11,193,255,255,31,192,0,15,208,11,193,255,255,31,192,0,15,208,11,193,255,255,31,213,85,95,208,11,193,248,0,31,255,255,255,208,11,193,248,0,31,255,255,255,208,11,193,248,0,31,255,255,255,208,11,193,248,0,31,192,0,0,0,11,193,248,0,31,192,0,0,0,11,193,248,6,31,192,0,0,0,11,193,254,255,31,192,0,0,0,11,219,255,255,95,192,0,0,0,47,255,255,254,31,213,85,85,84,191,255,254,64,31,255,255,255,253,127,254,64,0,31,255,255,255,253,58,64,0,0,31,255,255,255,253,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0, + // 0x8eca 車 + 202,142,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,252,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,253,0,3,248,0,7,240,0,0,253,0,3,248,0,7,240,0,0,253,0,3,248,0,7,240,0,0,255,170,171,254,170,175,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,253,0,3,248,0,7,240,0,0,253,0,3,248,0,7,240,0,0,253,0,3,248,0,7,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,3,252,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0, + // 0x8edf 軟 + 223,142,36,36,68,38,1,252,0,1,252,0,0,122,0,0,0,0,1,252,0,0,127,0,0,0,0,1,252,0,0,191,0,0,0,0,1,252,0,0,254,0,0,0,63,255,255,255,208,253,0,0,0,63,255,255,255,208,253,0,0,0,63,255,255,255,209,252,0,0,0,0,1,252,0,2,255,255,255,248,0,1,252,0,3,255,255,255,252,0,1,252,0,3,255,255,255,248,15,255,255,255,203,240,254,3,248,15,255,255,255,207,224,253,3,244,15,234,254,175,223,208,253,3,240,15,128,248,15,239,192,253,7,240,15,128,248,15,255,128,253,7,224,15,149,249,95,255,0,253,11,208,15,255,255,255,254,0,253,15,192,15,255,255,255,204,0,253,15,192,15,128,248,15,192,0,254,0,64,15,128,248,15,192,0,254,0,0,15,128,248,15,192,1,255,0,0,15,255,255,255,192,2,255,0,0,15,255,255,255,192,3,255,64,0,10,171,254,170,64,7,255,192,0,0,1,252,0,0,15,223,192,0,0,1,252,0,0,31,203,224,0,127,255,255,255,240,63,131,240,0,127,255,255,255,240,191,3,252,0,127,255,255,255,241,254,1,253,0,0,1,252,0,3,252,0,255,64,0,1,252,0,15,244,0,63,208,0,1,252,0,127,224,0,47,244,0,1,252,2,255,192,0,15,254,0,1,252,3,254,0,0,3,253,0,1,252,0,248,0,0,0,248,0,1,248,0,80,0,0,0,32, + // 0x8ef8 軸 + 248,142,35,37,77,38,1,251,0,2,244,0,0,0,189,0,0,0,3,244,0,0,0,253,0,0,0,3,244,0,0,0,253,0,0,0,3,244,0,0,0,253,0,0,63,255,255,255,128,0,253,0,0,63,255,255,255,128,0,253,0,0,63,255,255,255,128,0,253,0,0,0,3,244,0,0,0,253,0,0,0,3,244,0,0,0,254,0,0,0,3,244,0,31,255,255,255,244,15,255,255,255,31,255,255,255,244,15,255,255,255,31,255,255,255,244,15,235,250,191,31,192,189,3,244,15,65,240,63,31,192,189,3,244,15,65,240,63,31,192,189,3,244,15,150,245,127,31,192,189,3,244,15,255,255,255,31,192,189,3,244,15,255,255,255,31,192,189,3,244,15,65,240,63,31,192,189,3,244,15,65,240,63,31,255,255,255,244,15,65,240,63,31,255,255,255,244,15,255,255,255,31,255,255,255,244,15,255,255,255,31,192,189,3,244,10,171,250,170,31,192,189,3,244,0,3,244,0,31,192,189,3,244,0,3,244,0,31,192,189,3,244,127,255,255,255,223,192,189,3,244,127,255,255,255,223,192,189,3,244,127,255,255,255,223,192,189,3,244,0,3,244,0,31,192,189,3,244,0,3,244,0,31,192,189,3,244,0,3,244,0,31,255,255,255,244,0,3,244,0,31,255,255,255,244,0,3,244,0,31,255,255,255,244,0,3,244,0,31,192,0,3,244,0,2,244,0,31,192,0,2,244,0,0,0,0,0,0,0,0,0, + // 0x8f09 載 + 9,143,35,36,68,38,2,252,0,0,190,0,0,190,0,0,0,0,0,190,0,0,254,7,208,0,0,0,190,0,0,254,15,244,0,15,255,255,255,240,254,3,253,0,15,255,255,255,240,254,0,255,64,15,255,255,255,240,254,0,127,192,0,0,190,0,0,254,0,47,64,0,0,190,0,0,190,0,13,0,0,0,190,0,0,190,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,190,0,0,127,0,0,0,0,0,190,0,0,127,0,0,0,63,255,255,255,252,127,0,62,64,63,255,255,255,252,63,0,127,0,26,170,255,170,164,63,64,191,0,0,0,190,0,0,63,64,253,0,15,255,255,255,240,63,129,252,0,15,255,255,255,240,63,131,248,0,15,128,125,2,240,47,199,244,0,15,128,125,2,240,47,207,240,0,15,255,255,255,240,31,239,208,0,15,255,255,255,240,15,255,192,0,15,128,125,2,240,15,255,0,0,15,128,125,2,240,11,254,0,0,15,255,255,255,240,11,252,1,64,15,255,255,255,240,15,248,1,224,0,0,190,0,0,63,248,1,244,106,170,255,170,168,255,252,2,244,127,255,255,255,255,255,254,2,244,127,255,255,255,255,252,191,67,240,0,0,190,0,191,240,63,235,240,0,0,190,0,255,192,31,255,224,0,0,190,0,62,0,11,255,192,0,0,189,0,20,0,1,190,0, + // 0x8f2f 輯 + 47,143,36,36,68,38,1,252,0,2,244,0,0,0,0,0,0,0,3,244,0,2,170,170,170,144,0,3,244,0,3,255,255,255,224,0,3,244,0,3,255,255,255,224,63,255,255,255,131,240,0,15,224,63,255,255,255,131,240,0,15,224,63,255,255,255,131,240,0,15,224,0,3,244,0,3,255,255,255,224,0,3,244,0,3,255,255,255,224,0,3,244,0,2,170,170,170,144,15,255,255,255,0,0,0,0,0,15,255,255,255,0,0,0,0,0,15,235,250,191,127,255,255,255,253,15,65,240,63,127,255,255,255,253,15,65,240,63,63,255,255,255,253,15,150,245,127,3,244,0,15,208,15,255,255,255,3,244,0,15,208,15,255,255,255,3,250,170,175,208,15,65,240,63,3,255,255,255,208,15,65,240,63,3,255,255,255,208,15,65,240,63,3,244,0,15,208,15,255,255,255,3,244,0,15,208,15,255,255,255,3,244,0,15,208,10,171,250,170,3,255,255,255,208,0,3,244,0,3,255,255,255,208,0,3,244,0,3,250,170,175,208,127,255,255,255,195,244,0,15,208,127,255,255,255,195,244,0,15,208,127,255,255,255,195,249,171,255,253,0,3,244,1,255,255,255,255,253,0,3,244,0,255,255,255,255,253,0,3,244,0,255,250,148,15,208,0,3,244,0,0,0,0,15,208,0,3,244,0,0,0,0,15,208,0,3,244,0,0,0,0,15,208,0,2,244,0,0,0,0,15,208, + // 0x8f38 輸 + 56,143,36,36,68,38,1,252,0,11,224,0,0,1,168,0,0,0,11,224,0,0,3,254,0,0,0,11,224,0,0,11,255,0,0,0,11,224,0,0,31,255,192,0,63,255,255,253,0,63,143,240,0,63,255,255,253,0,255,7,248,0,63,255,255,253,3,253,2,254,0,0,11,224,0,15,248,0,255,128,0,11,224,0,63,240,0,63,240,0,11,224,0,255,192,0,15,253,31,255,255,255,255,255,255,251,255,31,255,255,251,252,255,255,244,253,31,171,234,248,224,255,255,244,40,31,3,192,248,0,0,0,0,0,31,3,192,248,0,0,0,0,80,31,87,229,248,106,170,64,1,244,31,255,255,248,191,255,194,129,244,31,255,255,248,191,255,199,193,244,31,3,192,248,188,11,199,193,244,31,3,192,248,188,11,199,193,244,31,3,192,248,189,95,199,193,244,31,255,255,248,191,255,199,193,244,31,255,255,248,191,255,199,193,244,26,175,250,164,188,11,199,193,244,0,11,224,0,188,11,199,193,244,0,11,224,0,188,11,199,193,244,127,255,255,253,191,255,199,193,244,127,255,255,253,191,255,199,193,244,127,255,255,253,190,175,199,193,244,0,11,224,0,188,11,199,193,244,0,11,224,0,188,11,192,1,244,0,11,224,0,188,11,192,1,244,0,11,224,0,188,11,192,1,244,0,11,224,0,188,31,192,255,244,0,11,224,0,188,127,128,191,240,0,7,208,0,188,62,0,105,64, + // 0x8f49 轉 + 73,143,36,36,68,38,1,252,0,3,240,0,0,0,252,0,0,0,3,240,0,0,0,252,0,0,0,3,240,0,0,0,252,0,0,0,3,240,0,191,255,255,255,252,63,255,255,254,191,255,255,255,252,63,255,255,254,106,170,254,170,168,63,255,255,254,0,0,252,0,0,0,3,240,0,63,255,255,255,240,0,3,240,0,63,255,255,255,240,0,3,240,0,63,0,252,3,240,15,255,255,253,63,0,252,3,240,15,255,255,253,63,255,255,255,240,15,171,250,189,63,255,255,255,240,15,66,224,125,63,0,252,3,240,15,66,224,125,63,0,252,3,240,15,151,245,189,63,0,252,3,240,15,255,255,253,63,255,255,255,240,15,255,255,253,63,255,255,255,240,15,66,224,125,0,0,252,31,64,15,66,224,125,0,0,253,95,208,15,66,224,125,255,255,255,255,244,15,255,255,253,255,255,255,255,252,15,255,255,253,170,170,86,253,189,10,171,250,168,0,0,1,252,32,0,3,240,0,170,170,171,254,169,0,3,240,0,255,255,255,255,253,191,255,255,255,255,255,255,255,253,191,255,255,255,1,192,1,252,0,191,255,255,255,11,240,1,252,0,0,3,240,0,3,252,1,252,0,0,3,240,0,1,253,1,252,0,0,3,240,0,0,191,1,252,0,0,3,240,0,0,60,1,252,0,0,3,240,0,0,2,255,252,0,0,3,240,0,0,1,255,248,0,0,3,240,0,0,0,255,144,0, + // 0x8fd1 近 + 209,143,36,36,68,38,1,252,0,0,0,0,0,0,0,40,0,2,64,0,0,0,0,27,254,0,15,224,0,0,0,111,255,255,192,31,252,0,7,255,255,255,249,0,3,255,0,7,255,255,249,0,0,0,255,192,7,255,164,0,0,0,0,63,240,7,240,0,0,0,0,0,15,224,7,240,0,0,0,0,0,3,64,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,255,255,255,255,252,0,0,0,7,255,255,255,255,252,0,0,0,7,255,255,255,255,252,0,0,0,11,245,85,127,149,84,63,255,208,11,240,0,63,64,0,63,255,208,15,224,0,63,64,0,63,255,208,15,224,0,63,64,0,21,95,208,15,208,0,63,64,0,0,15,208,31,192,0,63,64,0,0,15,208,47,192,0,63,64,0,0,15,208,63,128,0,63,64,0,0,15,208,127,64,0,63,64,0,0,15,208,255,0,0,63,64,0,0,15,209,254,0,0,63,64,0,0,15,211,252,0,0,63,64,0,0,15,219,244,0,0,63,64,0,0,31,210,240,0,0,63,64,0,0,127,240,128,0,0,63,64,0,2,255,253,0,0,0,63,64,0,15,255,255,144,0,0,0,0,0,127,248,127,254,149,85,85,85,169,127,224,31,255,255,255,255,255,252,63,64,2,255,255,255,255,255,252,28,0,0,26,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0x8fd4 返 + 212,143,36,35,59,38,1,252,2,64,0,0,0,0,0,0,0,15,208,0,31,255,255,255,255,240,31,248,0,31,255,255,255,255,240,7,254,0,31,255,255,255,255,240,1,255,128,31,213,85,85,85,80,0,127,208,31,192,0,0,0,0,0,31,224,31,192,0,0,0,0,0,11,64,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,47,255,255,255,255,128,0,0,0,47,255,255,255,255,128,0,0,0,47,255,255,255,255,64,0,0,0,47,239,192,0,191,0,0,0,0,47,207,208,0,254,0,63,255,192,47,139,240,1,253,0,63,255,192,63,135,244,3,252,0,63,255,192,63,131,252,11,244,0,21,111,192,63,65,254,31,240,0,0,47,192,127,0,191,127,208,0,0,47,192,191,0,63,255,128,0,0,47,192,255,0,31,255,0,0,0,47,192,253,0,15,253,0,0,0,47,193,252,0,63,255,64,0,0,47,195,252,1,255,255,240,0,0,47,199,244,27,255,127,254,0,0,47,207,241,255,252,11,255,228,0,47,203,210,255,224,1,255,252,0,127,241,192,255,0,0,47,244,2,255,252,0,52,0,0,1,224,15,255,255,128,0,0,0,0,0,127,244,191,254,149,85,85,85,105,127,208,47,255,255,255,255,255,252,63,64,2,255,255,255,255,255,252,28,0,0,27,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0x9000 退 + 0,144,36,34,50,38,1,252,3,208,0,15,255,255,255,254,0,15,248,0,15,255,255,255,254,0,7,255,0,15,255,255,255,254,0,0,255,192,15,224,0,0,190,0,0,47,240,15,224,0,0,190,0,0,11,240,15,250,170,170,254,0,0,3,128,15,255,255,255,254,0,0,0,0,15,255,255,255,254,0,0,0,0,15,224,0,0,190,0,0,0,0,15,224,0,0,190,0,0,0,0,15,224,0,0,190,0,0,0,0,15,255,255,255,254,0,0,0,0,15,255,255,255,254,0,63,255,208,15,255,255,255,255,0,63,255,208,15,224,31,192,3,192,63,255,208,15,224,15,208,31,244,21,95,208,15,224,11,240,191,224,0,15,208,15,224,3,247,255,64,0,15,208,15,224,3,255,248,0,0,15,208,15,224,0,255,208,0,0,15,208,15,224,0,191,128,0,0,15,208,15,224,6,127,224,0,0,15,208,15,230,255,95,252,0,0,15,208,31,255,255,135,255,128,0,15,209,255,255,254,65,255,248,0,31,208,255,255,144,0,127,248,0,127,240,255,144,0,0,11,240,2,255,253,80,0,0,0,0,128,15,255,255,144,0,0,0,0,0,127,248,127,254,149,85,85,85,169,127,224,31,255,255,255,255,255,252,63,64,2,255,255,255,255,255,252,28,0,0,26,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0x901f 速 + 31,144,36,36,68,38,1,252,0,0,0,0,0,63,64,0,0,2,64,0,0,0,63,64,0,0,15,224,0,0,0,63,64,0,0,31,248,0,0,0,63,64,0,0,7,255,3,255,255,255,255,255,248,1,255,195,255,255,255,255,255,248,0,63,243,255,255,255,255,255,248,0,15,240,0,0,63,64,0,0,0,7,128,0,0,63,64,0,0,0,1,0,0,0,63,64,0,0,0,0,0,127,255,255,255,255,192,0,0,0,127,255,255,255,255,192,0,0,0,127,170,255,234,191,192,0,0,0,127,0,63,64,15,192,0,0,0,127,0,63,64,15,192,63,255,208,127,0,63,64,15,192,63,255,208,127,0,63,64,15,192,63,255,208,127,255,255,255,255,192,21,95,208,127,255,255,255,255,192,0,15,208,127,255,255,255,255,192,0,15,208,0,7,255,244,0,0,0,15,208,0,31,255,253,0,0,0,15,208,0,127,191,255,128,0,0,15,208,1,255,63,95,240,0,0,15,208,11,252,63,71,253,0,0,15,208,127,240,63,65,255,192,0,15,211,255,192,63,64,127,248,0,31,211,254,0,63,64,31,240,0,127,240,244,0,63,64,2,208,2,255,253,0,0,63,64,0,0,15,255,255,144,0,21,0,0,0,127,248,127,254,149,85,85,85,169,127,224,31,255,255,255,255,255,252,63,64,2,255,255,255,255,255,252,28,0,0,26,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0x9023 連 + 35,144,35,36,68,38,1,252,0,0,0,0,0,127,0,0,0,3,64,0,0,0,127,0,0,0,31,224,0,0,0,127,0,0,0,31,248,7,255,255,255,255,255,244,3,254,7,255,255,255,255,255,244,0,255,135,255,255,255,255,255,244,0,127,208,0,0,127,0,0,0,0,31,208,0,0,127,0,0,0,0,15,64,85,85,191,85,85,0,0,0,0,191,255,255,255,255,64,0,0,0,191,255,255,255,255,64,0,0,0,190,0,127,0,63,64,0,0,0,190,0,127,0,63,64,0,0,0,191,85,191,85,127,64,0,0,0,191,255,255,255,255,64,63,255,128,191,255,255,255,255,64,63,255,128,190,0,127,0,63,64,63,255,128,190,0,127,0,63,64,21,111,128,191,170,191,170,191,64,0,47,128,191,255,255,255,255,64,0,47,128,191,255,255,255,255,64,0,47,128,0,0,127,0,0,0,0,47,128,0,0,127,0,0,0,0,47,128,0,0,127,0,0,0,0,47,143,255,255,255,255,255,252,0,47,143,255,255,255,255,255,252,0,47,143,255,255,255,255,255,252,0,47,192,0,0,127,0,0,0,0,127,224,0,0,127,0,0,0,2,255,248,0,0,127,0,0,0,11,255,255,64,0,127,0,0,0,63,244,255,250,84,0,1,85,84,127,208,47,255,255,255,255,255,252,63,0,7,255,255,255,255,255,252,28,0,0,27,255,255,255,255,244,0,0,0,0,0,0,0,0,0, + // 0x9032 進 + 50,144,35,36,68,38,1,252,0,0,0,0,80,0,16,0,0,2,64,0,0,255,0,127,64,0,15,208,0,2,253,0,191,0,0,47,244,0,3,252,0,254,0,0,11,253,0,11,248,1,253,0,0,1,255,64,15,240,3,252,0,0,0,127,192,63,255,255,255,255,240,0,47,208,191,255,255,255,255,240,0,15,65,255,255,255,255,255,240,0,0,7,255,192,7,240,0,0,0,0,31,255,192,7,240,0,0,0,0,127,255,192,7,240,0,0,0,0,191,255,255,255,255,255,192,0,0,47,47,255,255,255,255,192,0,0,8,47,255,255,255,255,192,63,255,128,47,192,7,240,0,0,63,255,128,47,192,7,240,0,0,63,255,128,47,192,7,240,0,0,21,111,128,47,192,7,240,0,0,0,47,128,47,255,255,255,255,192,0,47,128,47,255,255,255,255,192,0,47,128,47,255,255,255,255,192,0,47,128,47,192,7,240,0,0,0,47,128,47,192,7,240,0,0,0,47,128,47,192,7,240,0,0,0,47,128,47,255,255,255,255,248,0,47,128,47,255,255,255,255,248,0,47,192,47,255,255,255,255,248,0,127,224,0,0,0,0,0,0,2,255,248,0,0,0,0,0,0,11,255,255,64,0,0,0,0,0,63,244,255,250,84,0,1,85,84,127,208,47,255,255,255,255,255,252,63,0,7,255,255,255,255,255,252,28,0,0,27,255,255,255,255,244,0,0,0,0,0,0,0,0,0, + // 0x904b 運 + 75,144,35,35,59,38,1,252,2,64,2,170,170,170,170,170,160,15,208,3,255,255,255,255,255,244,47,244,3,255,255,255,255,255,244,11,253,3,240,0,0,0,3,244,2,255,67,240,0,63,0,3,244,0,191,193,80,0,63,0,1,80,0,47,224,170,170,191,170,170,128,0,15,64,255,255,255,255,255,208,0,1,0,255,255,255,255,255,208,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,63,255,255,255,255,64,0,0,0,63,255,255,255,255,64,0,0,0,63,85,127,85,127,64,63,255,128,63,0,63,0,47,64,63,255,128,63,255,255,255,255,64,63,255,128,63,255,255,255,255,64,21,111,128,63,0,127,64,63,64,0,47,128,63,0,63,0,47,64,0,47,128,63,85,127,85,127,64,0,47,128,63,255,255,255,255,64,0,47,128,63,255,255,255,255,64,0,47,128,0,0,63,0,0,0,0,47,128,0,0,63,0,0,0,0,47,139,255,255,255,255,255,252,0,47,139,255,255,255,255,255,252,0,47,198,170,170,191,170,170,168,0,127,224,0,0,63,0,0,0,2,255,248,0,0,63,0,0,0,11,255,255,64,0,63,0,0,0,63,244,255,250,84,0,1,85,84,127,208,47,255,255,255,255,255,252,63,0,7,255,255,255,255,255,252,28,0,0,27,255,255,255,255,244,0,0,0,0,0,0,0,0,0, + // 0x9054 達 + 84,144,35,36,68,38,1,252,0,0,0,0,0,63,0,0,0,2,0,0,0,0,63,0,0,0,15,192,0,0,0,63,0,0,0,47,244,0,63,255,255,255,255,64,11,253,0,63,255,255,255,255,64,2,255,64,42,170,191,170,170,0,0,191,192,0,0,63,0,0,0,0,47,224,0,0,63,0,0,0,0,15,75,255,255,255,255,255,252,0,1,11,255,255,255,255,255,252,0,0,6,171,250,170,175,250,168,0,0,0,3,248,0,15,240,0,0,0,0,1,252,0,15,208,0,0,0,0,0,254,0,47,192,0,0,0,2,170,254,170,191,170,164,63,255,131,255,255,255,255,255,244,63,255,131,255,255,255,255,255,244,63,255,128,0,0,63,0,0,0,21,111,128,0,0,63,0,0,0,0,47,128,106,170,191,170,170,128,0,47,128,127,255,255,255,255,192,0,47,128,127,255,255,255,255,192,0,47,128,0,0,63,0,0,0,0,47,128,0,0,63,0,0,0,0,47,130,170,170,191,170,170,164,0,47,131,255,255,255,255,255,248,0,47,131,255,255,255,255,255,248,0,47,192,0,0,63,0,0,0,0,127,208,0,0,63,0,0,0,1,255,244,0,0,63,0,0,0,11,255,255,64,0,0,0,0,0,63,244,255,250,84,0,1,85,84,127,208,47,255,255,255,255,255,252,63,0,7,255,255,255,255,255,252,28,0,0,27,255,255,255,255,244,0,0,0,0,0,0,0,0,0, + // 0x9078 選 + 120,144,36,35,59,38,1,252,7,0,1,85,85,65,85,85,64,47,192,11,255,255,199,255,255,208,47,240,11,255,255,199,255,255,208,11,252,0,0,15,192,0,11,208,2,255,0,0,15,192,0,11,208,0,255,131,255,255,194,255,255,208,0,63,195,255,255,194,255,255,208,0,30,3,245,85,66,249,85,64,0,0,3,240,0,130,244,0,96,0,0,3,240,1,246,248,0,188,0,0,3,255,255,241,255,255,252,0,0,1,255,255,224,255,255,244,0,0,0,21,170,64,26,149,64,0,0,0,0,190,0,63,64,0,63,255,64,0,190,0,63,64,0,63,255,66,170,255,170,191,234,160,63,255,67,255,255,255,255,255,240,21,127,67,255,255,255,255,255,240,0,63,64,0,190,0,63,64,0,0,63,64,0,190,0,63,64,0,0,63,64,0,190,0,63,64,0,0,63,79,255,255,255,255,255,252,0,63,79,255,255,255,255,255,252,0,63,74,170,186,170,170,170,168,0,63,64,0,126,0,15,64,0,0,63,64,2,255,0,63,240,0,0,63,64,47,252,0,11,254,0,0,191,194,255,208,0,1,255,208,2,255,241,254,0,0,0,47,244,11,255,254,96,0,0,0,7,64,63,240,255,229,0,0,0,0,20,127,192,63,255,255,255,255,255,253,63,0,7,255,255,255,255,255,252,28,0,0,47,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0x9084 還 + 132,144,35,35,59,38,1,252,3,64,1,255,255,255,255,255,192,31,224,1,255,255,255,255,255,192,31,248,1,252,31,129,248,15,192,7,254,1,248,15,128,248,15,192,1,255,65,248,15,128,248,15,192,0,191,193,248,15,128,248,15,192,0,47,225,255,255,255,255,255,192,0,15,129,255,255,255,255,255,192,0,5,0,0,0,0,0,0,0,0,0,5,85,85,85,85,85,84,0,0,15,255,255,255,255,255,252,0,0,15,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,128,63,255,255,255,255,0,63,255,128,63,255,255,255,255,0,63,255,128,63,0,0,0,191,0,21,111,128,63,0,0,0,191,0,0,47,128,63,255,255,255,255,0,0,47,128,63,255,255,255,255,64,0,47,128,0,7,255,0,31,224,0,47,128,0,31,255,192,127,192,0,47,128,0,255,255,245,254,0,0,47,128,11,254,255,255,244,0,0,47,129,255,244,254,191,224,0,0,47,139,255,192,254,31,255,64,0,47,195,253,0,254,2,255,248,0,127,224,208,0,254,0,111,240,2,255,248,0,0,254,0,1,192,11,255,255,64,0,169,0,0,0,63,244,255,250,84,0,1,85,84,127,208,47,255,255,255,255,255,252,63,0,7,255,255,255,255,255,252,28,0,0,27,255,255,255,255,244,0,0,0,0,0,0,0,0,0, + // 0x908a 邊 + 138,144,35,36,68,38,1,252,0,64,0,0,0,62,0,0,0,1,240,0,0,0,191,0,0,0,7,254,0,47,255,255,255,255,0,2,255,128,47,234,170,170,255,0,0,127,240,47,128,0,0,191,0,0,15,240,47,255,255,255,255,0,0,3,192,47,234,170,170,255,0,0,0,0,47,128,0,0,191,0,1,0,0,47,255,255,255,255,0,15,208,0,47,234,170,170,255,0,63,248,0,47,128,0,0,191,0,11,255,0,47,255,255,255,255,0,0,255,192,26,170,191,170,169,0,0,47,64,0,0,127,0,0,0,0,10,7,255,255,255,255,255,248,0,0,7,255,255,255,255,255,248,0,0,7,224,31,3,240,2,248,0,0,7,224,127,3,240,47,248,127,255,128,6,252,2,255,253,0,127,255,128,255,224,127,255,248,0,127,255,128,126,0,127,0,0,0,21,127,135,255,255,255,255,255,252,0,63,135,255,255,255,255,255,252,0,63,128,0,31,192,0,0,0,0,63,128,0,47,128,0,0,0,0,63,128,0,127,255,255,252,0,0,63,128,1,255,255,255,252,0,0,63,128,31,252,0,2,248,0,0,63,211,255,244,0,3,240,0,1,255,245,255,128,15,255,240,0,11,255,255,228,0,11,255,128,0,63,244,255,249,80,0,84,1,84,127,208,63,255,255,255,255,255,252,63,64,7,255,255,255,255,255,252,28,0,0,27,255,255,255,255,248,0,0,0,0,0,0,0,0,0, + // 0x90e8 部 + 232,144,36,36,68,38,1,252,0,0,42,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,5,85,85,64,0,0,63,0,0,47,255,255,244,31,255,255,255,254,47,255,255,253,31,255,255,255,254,47,255,255,252,31,255,255,255,254,47,192,3,248,0,4,0,5,0,47,192,11,240,0,252,0,15,208,47,192,15,224,0,253,0,15,192,47,192,31,208,0,190,0,31,192,47,192,47,192,0,127,0,63,64,47,192,63,64,0,63,0,63,0,47,192,127,0,0,63,64,126,0,47,192,254,0,0,37,0,25,0,47,193,252,0,127,255,255,255,255,47,194,252,0,127,255,255,255,255,47,194,253,0,127,255,255,255,255,47,192,191,0,0,0,0,0,0,47,192,47,192,0,0,0,0,0,47,192,15,224,0,0,0,0,0,47,192,7,240,3,255,255,255,240,47,192,3,244,3,255,255,255,240,47,192,2,248,3,255,255,255,240,47,192,2,252,3,244,0,7,240,47,192,2,252,3,244,0,7,240,47,192,2,252,3,244,0,7,240,47,192,3,252,3,244,0,7,240,47,193,111,248,3,244,0,7,240,47,195,255,240,3,244,0,7,240,47,195,255,224,3,244,0,7,240,47,194,254,64,3,255,255,255,240,47,192,0,0,3,255,255,255,240,47,192,0,0,3,255,255,255,240,47,192,0,0,3,244,0,7,240,47,192,0,0,3,244,0,3,240,31,192,0,0, + // 0x91cb 釋 + 203,145,36,36,68,38,1,252,0,0,0,64,0,0,0,0,0,0,0,27,240,85,85,85,85,80,1,111,255,248,255,255,255,255,240,63,255,255,224,255,255,255,255,240,63,255,240,0,252,46,11,130,240,21,7,224,0,252,46,11,130,240,6,7,224,188,252,46,11,130,240,31,71,224,252,252,46,11,130,240,15,135,224,252,255,255,255,255,240,15,199,225,244,255,255,255,255,240,11,199,226,240,85,87,253,85,80,7,215,227,224,0,2,248,0,0,3,215,231,208,21,87,253,85,64,1,7,224,128,63,255,255,255,192,127,255,255,253,63,255,255,255,192,127,255,255,253,0,2,248,0,0,127,255,255,253,0,2,248,0,0,0,31,224,3,255,255,255,255,253,0,47,240,3,255,255,255,255,253,0,63,248,1,91,229,85,190,84,0,127,255,0,3,224,0,189,0,0,255,255,192,3,240,0,252,0,1,255,255,240,1,248,2,244,0,3,247,227,252,0,248,2,240,0,7,231,224,249,255,255,255,255,248,15,199,224,113,255,255,255,255,248,31,199,224,0,170,171,254,170,164,63,71,224,0,0,2,248,0,0,191,7,224,0,106,171,254,170,144,61,7,224,0,127,255,255,255,240,40,7,224,0,127,255,255,255,240,0,7,224,0,0,2,248,0,0,0,7,224,0,0,2,248,0,0,0,7,224,0,0,2,248,0,0,0,7,224,0,0,2,248,0,0,0,7,224,0,0,2,248,0,0, + // 0x91cd 重 + 205,145,34,35,59,38,2,253,0,0,0,0,0,0,22,128,0,0,0,0,5,106,255,255,192,0,2,255,255,255,255,255,255,240,0,1,255,255,255,255,255,233,64,0,1,255,170,151,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,254,85,87,253,85,91,240,0,0,254,0,3,248,0,7,240,0,0,254,0,3,248,0,11,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,254,0,3,248,0,7,240,0,0,254,0,3,248,0,7,240,0,0,255,85,87,253,85,91,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,3,255,255,255,255,255,255,253,0,3,255,255,255,255,255,255,254,0,3,255,255,255,255,255,255,254,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x91cf 量 + 207,145,34,34,50,38,2,253,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,0,0,0,0,31,192,0,0,63,0,0,0,0,31,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,63,0,0,0,0,31,192,0,0,63,0,0,0,0,31,192,0,0,63,255,255,255,255,255,192,0,0,63,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,170,170,170,170,170,170,170,170,160,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,253,0,3,248,0,7,240,0,0,253,0,3,248,0,7,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,253,0,3,248,0,7,240,0,0,253,0,3,248,0,7,240,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,3,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,252,0,1,85,85,87,253,85,85,84,0,0,0,0,3,248,0,0,0,0,170,170,170,171,254,170,170,170,160,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x91dd 針 + 221,145,36,36,68,38,1,252,0,2,253,0,0,0,106,0,0,0,3,255,64,0,0,127,0,0,0,11,255,208,0,0,127,0,0,0,15,255,248,0,0,127,0,0,0,63,199,254,0,0,127,0,0,0,191,65,255,64,0,127,0,0,1,255,0,127,208,0,127,0,0,3,252,0,31,240,0,127,0,0,15,244,0,11,224,0,127,0,0,63,208,0,3,128,0,127,0,0,255,255,255,254,0,0,127,0,0,63,255,255,253,0,0,127,0,0,5,255,255,253,21,85,191,149,85,0,0,252,0,63,255,255,255,254,0,0,252,0,63,255,255,255,254,0,0,252,0,63,255,255,255,254,0,1,252,0,0,0,127,0,0,47,255,255,255,192,0,127,0,0,47,255,255,255,192,0,127,0,0,47,255,255,255,192,0,127,0,0,0,0,252,0,0,0,127,0,0,0,0,252,4,0,0,127,0,0,11,192,252,31,128,0,127,0,0,11,192,252,47,64,0,127,0,0,7,208,252,63,0,0,127,0,0,3,224,252,62,0,0,127,0,0,3,240,252,125,0,0,127,0,0,2,240,252,188,0,0,127,0,0,1,240,252,20,0,0,127,0,0,0,0,252,22,208,0,127,0,0,0,1,255,255,208,0,127,0,0,26,255,255,255,208,0,127,0,0,63,255,255,254,64,0,127,0,0,47,255,233,0,0,0,127,0,0,30,144,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0, + // 0x9215 鈕 + 21,146,36,36,68,38,1,252,0,7,240,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,31,255,0,21,85,85,85,0,0,63,255,208,63,255,255,255,128,0,127,111,240,63,255,255,255,128,0,254,11,252,63,255,255,255,128,3,252,3,255,0,63,128,63,128,11,244,0,255,0,63,64,63,128,31,224,0,61,0,63,64,63,128,127,192,0,40,0,63,64,63,64,191,255,255,240,0,63,0,63,64,47,255,255,240,0,127,0,63,64,3,255,255,240,0,127,0,63,64,0,3,240,0,0,127,0,63,64,0,3,240,0,0,127,0,63,64,0,3,240,0,0,191,0,63,64,63,255,255,252,255,255,255,255,254,63,255,255,252,255,255,255,255,254,63,255,255,252,255,255,255,255,254,0,3,240,0,85,254,85,191,84,0,3,240,0,0,253,0,127,0,11,3,240,252,0,252,0,127,0,15,131,240,252,0,252,0,127,0,15,195,240,248,1,252,0,127,0,11,195,241,240,1,252,0,191,0,7,211,242,240,2,252,0,191,0,3,211,243,224,2,248,0,191,0,3,227,243,208,2,248,0,191,0,2,67,240,0,3,248,0,190,0,0,3,240,26,3,244,0,254,0,0,7,255,255,3,244,0,254,0,6,191,255,255,87,249,85,255,84,63,255,255,255,255,255,255,255,254,63,255,228,11,255,255,255,255,254,46,144,0,11,255,255,255,255,254,0,0,0,0,0,0,0,0,0, + // 0x932f 錯 + 47,147,36,36,68,38,1,252,0,7,240,0,0,252,1,248,0,0,15,252,0,0,252,2,248,0,0,31,255,0,0,252,2,248,0,0,63,255,192,0,252,2,248,0,0,127,111,240,0,252,2,248,0,0,254,11,252,191,255,255,255,248,3,252,2,254,191,255,255,255,248,11,244,0,255,255,255,255,255,248,31,224,0,62,0,252,2,248,0,127,192,0,24,0,252,2,248,0,191,255,255,240,0,252,2,248,0,47,255,255,240,0,252,2,248,0,3,255,255,240,0,252,2,248,0,0,3,240,3,255,255,255,255,253,0,3,240,3,255,255,255,255,253,0,3,240,3,255,255,255,255,253,63,255,255,253,0,0,0,0,0,63,255,255,252,0,0,0,0,0,63,255,255,252,0,0,0,0,0,0,3,240,0,15,255,255,255,208,0,3,240,0,15,255,255,255,208,6,3,240,184,15,255,255,255,208,15,67,240,252,15,192,0,15,208,15,195,240,248,15,192,0,15,208,11,195,241,244,15,192,0,15,208,7,211,242,240,15,234,170,175,208,3,211,243,224,15,255,255,255,208,3,227,243,208,15,255,255,255,208,2,131,240,64,15,192,0,15,208,0,3,241,190,15,192,0,15,208,0,27,255,255,15,192,0,15,208,47,255,255,255,15,255,255,255,208,63,255,255,144,15,255,255,255,208,63,254,80,0,15,255,255,255,208,25,64,0,0,15,192,0,15,208,0,0,0,0,10,128,0,10,128, + // 0x9375 鍵 + 117,147,36,36,68,38,1,252,0,15,208,0,0,0,10,128,0,0,31,240,0,0,0,15,128,0,0,63,252,0,0,0,15,128,0,0,127,255,31,255,138,175,234,160,0,254,127,175,255,79,255,255,240,1,252,47,255,255,15,255,255,240,3,248,15,240,63,0,15,130,240,15,240,3,240,125,0,15,130,240,47,192,2,192,252,106,191,235,254,191,64,0,64,252,191,255,255,254,255,255,255,129,248,191,255,255,254,63,255,255,130,240,0,15,130,240,7,255,255,131,240,0,15,130,240,0,15,192,7,224,10,175,235,240,0,15,192,11,255,223,255,255,240,0,15,192,15,255,223,255,255,240,63,255,255,239,255,192,15,128,0,63,255,255,219,75,192,15,128,0,63,255,255,192,11,192,15,128,0,0,15,192,1,15,223,255,255,240,0,15,192,15,15,159,255,255,240,10,15,199,207,79,159,255,255,240,31,15,203,143,159,64,15,128,0,15,79,203,139,239,0,15,128,0,15,79,207,71,255,63,255,255,252,11,143,207,3,254,63,255,255,252,11,207,223,3,252,63,255,255,252,7,207,201,1,252,0,15,128,0,6,79,192,2,253,0,15,128,0,0,15,198,147,255,0,15,128,0,0,31,255,239,255,224,15,128,0,47,255,255,255,207,254,64,0,0,63,255,254,255,3,255,255,255,254,63,249,3,253,0,191,255,255,253,20,0,1,244,0,6,255,255,252,0,0,0,80,0,0,0,0,0, + // 0x9577 長 + 119,149,34,35,59,38,2,251,0,7,255,255,255,255,255,240,0,0,7,255,255,255,255,255,240,0,0,7,255,255,255,255,255,240,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,255,255,255,255,255,192,0,0,7,255,255,255,255,255,192,0,0,7,255,255,255,255,255,192,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,255,255,255,255,255,192,0,0,7,255,255,255,255,255,192,0,0,7,255,255,255,255,255,192,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,7,240,2,252,0,0,52,0,0,7,240,0,254,0,1,254,0,0,7,240,0,191,64,15,254,0,0,7,240,0,63,192,191,244,0,0,7,240,0,31,247,255,128,0,0,7,240,0,11,255,248,0,0,0,7,240,0,3,255,208,0,0,0,7,240,0,0,255,224,0,0,0,7,240,26,253,63,254,0,0,0,11,255,255,253,11,255,228,0,11,255,255,255,253,1,255,255,208,15,255,255,250,64,0,31,255,240,11,255,164,0,0,0,1,255,208,6,64,0,0,0,0,0,7,128,0,0,0,0,0,0,0,0,0, + // 0x9589 閉 + 137,149,32,34,16,38,3,252,191,255,255,244,47,255,255,255,191,255,255,244,47,255,255,255,191,170,171,244,47,234,170,255,191,0,3,244,47,192,0,255,191,0,3,244,47,192,0,255,191,255,255,244,47,255,255,255,191,255,255,244,47,255,255,255,191,170,171,244,47,234,170,255,191,0,3,244,47,192,0,255,191,0,3,244,47,192,0,255,191,170,171,244,47,234,170,255,191,255,255,244,47,255,255,255,191,255,255,244,47,255,255,255,191,0,0,0,0,0,0,255,191,0,0,0,63,0,0,255,191,0,0,0,63,0,0,255,191,0,0,0,63,0,0,255,191,7,255,255,255,255,208,255,191,7,255,255,255,255,208,255,191,7,255,255,255,255,208,255,191,0,0,3,255,0,0,255,191,0,0,15,255,0,0,255,191,0,0,63,255,0,0,255,191,0,0,255,127,0,0,255,191,0,3,253,63,0,0,255,191,0,31,244,63,0,0,255,191,0,255,208,63,0,0,255,191,11,255,0,63,0,0,255,191,15,252,0,63,0,0,255,191,3,208,0,63,0,0,255,191,1,0,63,255,10,170,254,191,0,0,47,254,15,255,254,191,0,0,15,228,7,255,252,191,0,0,0,0,3,255,224, + // 0x958b 開 + 139,149,32,35,24,38,3,251,191,255,255,244,47,255,255,255,191,255,255,244,47,255,255,255,191,170,171,244,47,234,170,255,191,0,3,244,47,192,0,191,191,0,3,244,47,192,0,191,191,255,255,244,47,255,255,255,191,255,255,244,47,255,255,255,191,85,87,244,47,213,85,255,191,0,3,244,47,192,0,191,191,0,3,244,47,192,0,191,191,170,171,244,47,234,170,255,191,255,255,244,47,255,255,255,191,255,255,244,47,255,255,255,191,0,0,0,0,0,0,191,191,0,0,0,0,0,0,191,191,3,255,255,255,255,192,191,191,3,255,255,255,255,192,191,191,3,255,255,255,255,192,191,191,0,7,224,15,192,0,191,191,0,7,224,15,192,0,191,191,0,7,224,15,192,0,191,191,0,7,224,15,192,0,191,191,15,255,255,255,255,240,191,191,15,255,255,255,255,240,191,191,15,255,255,255,255,240,191,191,0,11,208,15,192,0,191,191,0,15,192,15,192,0,191,191,0,31,192,15,192,0,191,191,0,63,128,15,192,0,191,191,0,127,0,15,192,0,191,191,1,254,0,15,193,85,254,191,7,252,0,15,194,255,254,191,2,240,0,15,192,255,252,191,0,128,0,0,0,255,224,0,0,0,0,0,0,0,0, + // 0x9593 間 + 147,149,32,34,16,38,3,252,191,255,255,244,47,255,255,255,191,255,255,244,47,255,255,255,191,170,171,244,47,234,170,255,191,0,3,244,47,192,0,255,191,0,3,244,47,192,0,255,191,255,255,244,47,255,255,255,191,255,255,244,47,255,255,255,191,170,171,244,47,234,170,255,191,0,3,244,47,192,0,255,191,0,3,244,47,192,0,255,191,170,171,244,47,234,170,255,191,255,255,244,47,255,255,255,191,255,255,244,47,255,255,255,191,0,0,0,0,0,0,255,191,0,0,0,0,0,0,255,191,0,0,0,0,0,0,255,191,0,63,255,255,252,0,255,191,0,63,255,255,252,0,255,191,0,63,170,171,252,0,255,191,0,63,0,0,252,0,255,191,0,63,0,0,252,0,255,191,0,63,0,0,252,0,255,191,0,63,255,255,252,0,255,191,0,63,255,255,252,0,255,191,0,63,170,170,252,0,255,191,0,63,0,0,252,0,255,191,0,63,0,0,252,0,255,191,0,63,170,170,252,0,255,191,0,63,255,255,252,0,255,191,0,63,255,255,252,0,255,191,0,63,0,0,10,170,254,191,0,63,0,0,7,255,254,191,0,0,0,0,3,255,252,191,0,0,0,0,2,255,224, + // 0x95dc 關 + 220,149,32,35,24,38,3,252,85,85,85,80,21,85,85,85,191,255,255,244,47,255,255,255,191,255,255,244,47,255,255,255,190,0,3,244,47,192,0,191,190,0,3,244,47,192,0,191,191,0,3,244,47,192,0,191,191,255,255,244,47,255,255,255,191,255,255,244,47,255,255,255,190,0,3,244,47,192,0,191,190,0,3,244,47,192,0,191,191,85,87,244,47,213,85,255,191,255,255,244,47,255,255,255,191,255,255,244,47,255,255,255,190,0,15,64,3,224,0,191,190,0,62,0,11,192,0,191,190,3,188,32,239,4,0,191,190,11,240,249,253,47,0,191,190,1,246,224,125,124,0,191,190,0,127,192,31,244,0,191,190,0,63,116,11,215,64,191,190,0,188,60,31,67,192,191,190,15,255,254,255,255,224,191,190,15,255,255,255,255,240,191,190,0,0,9,0,0,160,191,190,2,128,188,61,7,128,191,190,3,208,188,61,7,192,191,190,3,208,188,61,7,192,191,190,3,208,188,61,11,192,191,190,3,255,248,63,255,192,191,190,3,255,248,63,255,192,191,190,0,2,240,61,0,0,191,190,0,11,240,61,0,191,255,190,0,191,192,61,0,63,254,190,0,126,0,61,0,63,248,190,0,16,0,0,0,21,64, + // 0x964d 降 + 77,150,34,36,68,38,3,252,0,0,0,0,3,160,0,0,0,0,0,0,0,11,240,0,0,0,255,255,244,0,31,208,0,0,0,255,255,252,0,63,255,255,224,0,255,255,252,0,255,255,255,248,0,252,3,244,2,255,255,255,240,0,252,3,240,11,252,0,15,224,0,252,7,240,47,255,0,47,192,0,252,11,224,255,255,128,127,128,0,252,15,195,254,31,209,255,0,0,252,31,192,248,11,251,252,0,0,252,47,64,16,3,255,240,0,0,252,63,0,0,0,255,224,0,0,252,63,0,0,7,255,248,0,0,252,63,64,0,127,255,255,144,0,252,31,192,11,255,225,255,254,64,252,11,225,255,255,0,47,255,208,252,3,241,255,244,7,242,255,128,252,3,244,254,64,7,240,11,0,252,2,248,80,0,7,240,0,0,252,1,252,63,255,255,255,255,0,252,1,252,63,255,255,255,255,0,252,1,252,63,255,255,255,255,0,252,3,248,2,244,7,240,0,0,252,255,244,2,244,7,240,0,0,252,191,240,2,244,7,240,0,0,252,127,128,2,244,7,240,0,0,252,0,3,255,255,255,255,255,192,252,0,3,255,255,255,255,255,192,252,0,3,255,255,255,255,255,192,252,0,0,0,0,7,240,0,0,252,0,0,0,0,7,240,0,0,252,0,0,0,0,7,240,0,0,252,0,0,0,0,7,240,0,0,252,0,0,0,0,7,240,0,0,252,0,0,0,0,7,240,0,0, + // 0x9664 除 + 100,150,34,36,68,38,3,252,0,0,0,0,1,252,0,0,0,0,0,0,0,3,255,0,0,0,255,255,244,0,11,255,128,0,0,255,255,252,0,31,255,224,0,0,255,255,252,0,63,203,244,0,0,252,3,244,0,255,3,253,0,0,252,3,240,3,253,0,255,128,0,252,7,240,15,244,0,63,224,0,252,11,208,127,208,0,15,252,0,252,15,194,255,64,0,3,255,128,252,31,143,253,0,0,0,191,224,252,47,79,251,255,255,255,239,192,252,63,3,139,255,255,255,199,64,252,63,0,11,255,255,255,192,0,252,47,128,0,0,253,0,0,0,252,15,192,0,0,253,0,0,0,252,11,224,0,0,253,0,0,0,252,3,240,0,0,253,0,0,0,252,3,244,0,0,253,0,0,0,252,2,248,255,255,255,255,255,0,252,1,252,255,255,255,255,255,0,252,1,252,255,255,255,255,255,0,252,1,252,0,0,253,0,0,0,252,3,248,0,0,253,0,0,0,252,255,244,31,128,253,11,192,0,252,191,240,47,128,253,15,208,0,252,127,128,63,64,253,11,240,0,252,0,0,191,0,253,3,252,0,252,0,1,253,0,253,1,253,0,252,0,3,252,0,253,0,191,0,252,0,15,240,0,253,0,63,64,252,0,47,224,0,253,0,47,192,252,0,11,128,85,253,0,15,64,252,0,2,0,255,252,0,4,0,252,0,0,0,191,252,0,0,0,252,0,0,0,63,160,0,0,0, + // 0x968e 階 + 142,150,34,36,68,38,3,252,0,0,0,20,0,1,80,0,0,0,0,0,190,0,11,224,0,0,255,255,244,190,0,11,224,0,0,255,255,252,190,0,11,224,29,0,255,255,248,190,0,11,225,255,64,253,3,244,191,255,203,255,255,64,253,7,240,191,255,203,255,244,0,253,11,224,191,255,203,254,64,0,253,15,208,190,0,11,240,0,0,253,15,192,190,0,11,224,0,0,253,31,128,190,0,11,224,3,64,253,47,64,190,0,11,224,7,224,253,63,0,190,27,219,224,11,208,253,127,1,255,255,215,255,255,192,253,63,79,255,255,131,255,255,192,253,15,199,255,145,165,255,254,0,253,11,211,144,2,252,0,0,0,253,3,240,0,3,248,0,0,0,253,3,240,0,3,240,0,0,0,253,2,244,63,255,255,255,254,0,253,2,248,63,255,255,255,254,0,253,2,248,63,255,255,255,254,0,253,2,248,63,64,0,0,254,0,253,3,244,63,64,0,0,254,0,253,255,240,63,64,0,0,254,0,253,191,224,63,234,170,170,254,0,253,127,64,63,255,255,255,254,0,253,0,0,63,255,255,255,254,0,253,0,0,63,64,0,0,254,0,253,0,0,63,64,0,0,254,0,253,0,0,63,64,0,0,254,0,253,0,0,63,255,255,255,254,0,253,0,0,63,255,255,255,254,0,253,0,0,63,255,255,255,254,0,253,0,0,63,64,0,0,254,0,253,0,0,21,0,0,0,84,0, + // 0x96d9 雙 + 217,150,35,36,68,38,1,252,0,25,0,0,0,13,0,0,0,0,47,67,244,0,47,131,240,0,0,63,3,240,0,63,7,224,0,0,190,11,192,0,190,11,192,0,0,255,255,255,224,255,255,255,244,2,255,255,255,226,255,255,255,244,7,253,95,213,71,253,95,213,80,15,252,15,128,15,252,15,192,0,63,252,31,192,47,252,15,192,0,127,255,255,255,255,255,255,255,208,63,255,255,255,255,255,255,255,208,8,252,15,128,28,252,15,192,0,0,252,31,192,0,252,15,192,0,0,255,255,255,192,255,255,255,208,0,255,255,255,192,255,255,255,208,0,252,15,128,0,252,15,192,0,0,252,15,128,0,252,15,192,0,0,255,255,255,240,255,255,255,252,0,255,255,255,240,255,255,255,252,0,85,85,85,80,85,85,85,84,0,0,0,0,0,0,0,0,0,3,255,255,255,255,255,255,224,0,3,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,244,0,0,0,127,0,0,0,127,224,0,0,0,255,192,0,2,255,128,0,0,0,63,244,0,15,254,0,0,0,0,15,255,64,191,244,0,0,0,0,2,255,251,255,208,0,0,0,0,0,127,255,254,0,0,0,0,0,1,191,255,254,64,0,0,0,1,191,255,255,255,254,144,0,43,255,255,255,235,255,255,255,248,47,255,255,248,0,31,255,255,244,15,255,233,0,0,0,111,255,224,10,144,0,0,0,0,0,26,192, + // 0x96e2 離 + 226,150,36,36,68,38,1,252,0,0,253,0,0,2,64,0,0,0,0,253,0,0,7,240,47,128,0,0,253,0,0,11,240,63,128,127,255,255,255,252,15,208,63,64,127,255,255,255,252,15,192,127,0,127,255,255,255,252,47,192,190,0,0,0,0,0,0,63,128,252,0,1,64,3,208,0,127,65,252,0,11,199,15,199,208,191,255,255,252,11,207,239,71,208,255,255,255,252,11,194,255,7,210,255,255,255,252,11,192,255,135,211,255,1,248,0,11,195,255,231,223,255,1,248,0,11,207,226,231,255,255,1,248,0,11,223,128,135,255,255,1,248,0,11,193,0,7,239,191,255,255,248,11,255,255,255,210,127,255,255,248,11,255,255,255,208,127,255,255,248,5,85,254,85,64,127,1,248,0,0,0,252,0,0,127,1,248,0,0,0,252,0,0,127,1,248,0,47,255,255,255,244,127,1,248,0,47,255,255,255,244,127,1,248,0,47,235,250,171,244,127,255,255,248,47,66,240,2,244,127,255,255,248,47,67,242,194,244,127,255,255,248,47,67,226,226,244,127,1,248,0,47,67,209,242,244,127,1,248,0,47,127,255,246,244,127,1,248,0,47,127,255,250,244,127,1,248,0,47,85,80,126,244,127,1,248,0,47,64,0,18,244,127,255,255,253,47,64,0,2,244,127,255,255,253,47,64,1,255,240,127,255,255,253,47,64,0,255,224,127,0,0,0,47,64,0,170,64,127,0,0,0, + // 0x96fb 電 + 251,150,34,34,50,38,3,252,15,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,240,0,10,170,170,175,250,170,170,160,0,0,0,0,15,224,0,0,0,0,85,85,85,95,245,85,85,85,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,0,252,0,0,15,224,0,0,63,0,252,0,0,15,224,0,0,63,0,252,63,255,79,226,255,252,63,0,252,63,255,79,226,255,252,63,0,252,0,0,15,224,0,0,63,0,0,0,0,15,224,0,0,0,0,0,255,255,79,226,255,255,0,0,0,255,255,79,226,255,255,0,0,0,0,0,0,0,0,0,0,0,1,85,85,85,85,85,85,64,0,3,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,192,0,3,248,0,15,208,0,47,192,0,3,248,0,15,208,0,47,192,0,3,248,0,15,208,0,47,192,0,3,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,192,0,3,248,0,15,208,0,47,192,0,3,248,0,15,208,0,47,192,0,3,255,255,255,255,255,255,192,0,3,255,255,255,255,255,255,199,128,3,254,170,175,234,170,170,75,208,3,248,0,15,208,0,0,15,208,1,164,0,15,224,0,0,31,192,0,0,0,11,255,255,255,255,192,0,0,0,3,255,255,255,255,0,0,0,0,0,106,170,170,164,0, + // 0x9752 青 + 82,151,34,36,68,38,2,252,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,2,170,170,171,254,170,170,169,0,7,255,255,255,255,255,255,254,0,7,255,255,255,255,255,255,254,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,170,170,171,254,170,170,160,0,0,255,255,255,255,255,255,240,0,0,255,255,255,255,255,255,240,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,106,170,170,171,254,170,170,170,144,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,170,170,170,170,170,128,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,192,0,0,0,63,192,0,0,47,192,0,0,0,63,192,0,0,47,213,85,85,85,127,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,192,0,0,0,63,192,0,0,47,192,0,0,0,63,192,0,0,47,255,255,255,255,255,192,0,0,47,255,255,255,255,255,192,0,0,47,213,85,85,85,127,192,0,0,47,192,0,0,0,63,192,0,0,47,192,0,0,0,63,192,0,0,47,192,0,0,0,63,192,0,0,47,192,0,1,255,255,128,0,0,47,192,0,0,255,255,0,0,0,31,192,0,0,191,164,0,0, + // 0x975e 非 + 94,151,36,37,77,38,1,251,0,0,1,168,0,106,0,0,0,0,0,1,252,0,127,0,0,0,0,0,1,252,0,127,0,0,0,0,0,1,252,0,127,0,0,0,0,0,1,252,0,127,0,0,0,5,85,86,252,0,127,85,85,80,15,255,255,252,0,127,255,255,248,15,255,255,252,0,127,255,255,248,15,255,255,252,0,127,255,255,248,0,0,1,252,0,127,0,0,0,0,0,1,252,0,127,0,0,0,0,0,1,252,0,127,0,0,0,0,0,1,252,0,127,0,0,0,0,0,1,252,0,127,0,0,0,1,85,86,252,0,127,85,85,64,11,255,255,252,0,127,255,255,240,11,255,255,252,0,127,255,255,240,11,255,255,252,0,127,255,255,240,0,0,2,252,0,127,0,0,0,0,0,2,252,0,127,0,0,0,0,0,2,252,0,127,0,0,0,0,0,2,252,0,127,0,0,0,0,0,3,255,240,127,0,0,0,0,90,255,255,240,127,85,85,84,127,255,255,255,240,127,255,255,253,127,255,255,249,0,127,255,255,253,63,254,175,224,0,127,255,255,253,41,0,63,192,0,127,0,0,0,0,0,191,128,0,127,0,0,0,0,1,255,0,0,127,0,0,0,0,7,253,0,0,127,0,0,0,0,47,248,0,0,127,0,0,0,0,255,224,0,0,127,0,0,0,11,255,128,0,0,127,0,0,0,7,253,0,0,0,127,0,0,0,1,224,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9762 面 + 98,151,34,34,50,38,2,252,21,85,85,85,85,85,85,85,80,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,0,0,0,11,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,31,208,0,0,0,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,208,15,208,0,254,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,255,255,253,0,191,0,15,208,15,255,255,253,0,191,0,15,208,15,255,255,253,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,255,255,253,0,191,0,15,208,15,255,255,253,0,191,0,15,208,15,255,255,253,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,192,0,189,0,191,0,15,208,15,192,0,189,0,191,0,15,229,95,213,85,254,85,191,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,208,0,0,0,0,0,191,0,15,208,0,0,0,0,0,191,0, + // 0x9805 項 + 5,152,36,34,50,38,1,252,0,0,0,15,255,255,255,255,253,0,0,0,15,255,255,255,255,253,21,85,85,95,255,255,255,255,253,63,255,255,240,0,7,248,0,0,63,255,255,240,0,11,240,0,0,63,255,255,240,0,15,240,0,0,0,31,192,0,170,175,250,170,160,0,31,192,0,255,255,255,255,240,0,31,192,0,255,255,255,255,240,0,31,192,0,252,0,0,7,240,0,31,192,0,252,0,0,7,240,0,31,192,0,252,0,0,7,240,0,31,192,0,255,255,255,255,240,0,31,192,0,255,255,255,255,240,0,31,192,0,254,85,85,91,240,0,31,192,0,252,0,0,7,240,0,31,192,0,252,0,0,7,240,0,31,192,0,252,0,0,7,240,0,31,192,0,255,255,255,255,240,0,31,193,184,255,255,255,255,240,0,31,255,248,254,85,85,91,240,0,31,255,252,252,0,0,7,240,6,255,255,208,252,0,0,7,240,191,255,248,0,252,0,0,7,240,127,254,64,0,255,255,255,255,240,63,208,0,0,255,255,255,255,240,20,0,0,0,170,170,170,170,160,0,0,0,0,3,192,0,208,0,0,0,0,0,31,244,7,253,0,0,0,0,1,255,240,7,255,128,0,0,0,31,255,128,0,191,244,0,0,2,255,248,0,0,15,254,0,0,0,255,128,0,0,2,253,0,0,0,52,0,0,0,0,96, + // 0x9810 預 + 16,152,36,35,59,38,1,251,47,255,255,253,255,255,255,255,252,47,255,255,254,255,255,255,255,252,47,255,255,252,255,255,255,255,252,0,0,11,240,0,2,253,0,0,0,0,31,224,0,2,252,0,0,2,208,63,128,0,3,248,0,0,7,253,255,0,47,255,255,255,240,7,255,252,0,47,255,255,255,240,0,191,244,0,47,234,170,175,240,0,15,253,0,47,128,0,7,240,0,2,255,128,47,128,0,7,240,0,0,127,64,47,128,0,7,240,191,255,255,255,175,255,255,255,240,191,255,255,255,175,255,255,255,240,191,255,255,255,111,213,85,91,240,0,11,240,63,47,128,0,7,240,0,11,240,126,47,128,0,7,240,0,11,240,189,47,128,0,7,240,0,11,240,252,47,255,255,255,240,0,11,241,248,47,255,255,255,240,0,11,241,244,47,213,85,91,240,0,11,240,16,47,128,0,7,240,0,11,240,0,47,128,0,7,240,0,11,240,0,47,128,0,7,240,0,11,240,0,47,255,255,255,240,0,11,240,0,47,255,255,255,240,0,11,240,0,26,170,170,170,160,0,11,240,0,0,160,0,32,0,0,11,240,0,2,253,1,253,0,0,11,240,0,31,253,2,255,128,5,95,240,0,191,244,0,127,240,15,255,224,27,255,128,0,15,252,11,255,208,31,253,0,0,2,253,7,254,0,3,208,0,0,0,176,0,0,0,0,0,0,0,0,0, + // 0x984d 額 + 77,152,36,37,77,38,1,251,0,2,248,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,2,248,0,47,255,255,255,252,47,255,255,255,239,255,255,255,252,63,255,255,255,239,255,255,255,252,63,255,255,255,192,0,254,0,0,63,0,0,15,192,0,253,0,0,63,2,64,15,192,1,252,0,0,63,11,224,15,198,171,254,170,160,0,15,192,0,7,255,255,255,240,0,63,255,253,7,255,255,255,240,0,191,255,253,7,240,0,7,240,1,254,86,252,7,240,0,7,240,7,248,3,248,7,240,0,7,240,47,254,7,240,7,255,255,255,240,191,255,223,208,7,255,255,255,240,46,47,255,192,7,250,170,171,240,4,7,255,0,7,240,0,7,240,0,3,255,192,7,240,0,7,240,0,31,255,244,7,240,0,7,240,0,127,215,254,7,255,255,255,240,7,255,65,255,135,255,255,255,240,127,252,0,63,199,250,170,171,240,127,254,170,191,71,240,0,7,240,63,255,255,253,7,240,0,7,240,3,255,255,252,7,240,0,7,240,3,240,0,252,7,255,255,255,240,3,240,0,252,7,255,255,255,240,3,240,0,252,6,170,170,170,160,3,240,0,252,0,36,0,16,0,3,240,0,252,0,190,0,253,0,3,255,255,252,7,255,1,255,128,3,255,255,252,47,252,0,63,240,3,254,170,174,255,224,0,11,252,3,240,0,2,254,0,0,1,254,1,80,0,0,160,0,0,0,116,0,0,0,0,0,0,0,0,0, + // 0x985e 類 + 94,152,36,36,68,38,1,252,0,0,80,0,0,0,0,0,0,6,2,248,30,0,0,0,0,0,15,194,248,47,111,255,255,255,252,11,210,248,63,47,255,255,255,252,3,226,248,189,47,255,255,255,252,3,226,248,252,0,0,254,0,0,0,2,248,0,0,1,253,0,0,63,255,255,255,192,2,252,0,0,63,255,255,255,203,255,255,255,240,47,255,255,255,203,255,255,255,240,0,15,253,0,11,250,170,175,240,0,63,255,128,11,224,0,7,240,0,255,255,244,11,224,0,7,240,3,254,250,255,11,224,0,7,240,15,242,248,127,203,255,255,255,240,127,194,248,31,75,255,255,255,240,47,2,248,2,11,250,170,171,240,8,1,244,0,11,224,0,7,240,0,0,0,0,11,224,0,7,240,0,2,248,0,11,224,0,7,240,0,2,248,0,11,255,255,255,240,0,2,248,0,11,255,255,255,240,63,255,255,255,203,250,170,171,240,63,255,255,255,203,224,0,7,240,63,255,255,255,203,224,0,7,240,0,3,244,0,11,250,170,175,240,0,3,248,0,11,255,255,255,240,0,11,255,64,11,255,255,255,240,0,15,255,224,0,0,0,0,0,0,63,223,252,0,40,0,36,0,0,255,131,255,64,255,65,254,0,7,254,0,191,71,255,0,255,192,127,248,0,30,127,248,0,47,244,63,208,0,7,255,208,0,7,253,30,0,0,1,254,0,0,1,253,0,0,0,0,96,0,0,0,32, + // 0x98a8 風 + 168,152,36,34,50,38,1,252,0,127,255,255,255,255,255,252,0,0,127,255,255,255,255,255,252,0,0,127,255,255,255,255,255,252,0,0,127,85,85,85,85,86,252,0,0,127,0,0,0,6,1,252,0,0,127,0,0,91,255,193,252,0,0,127,47,255,255,255,241,252,0,0,127,47,255,255,250,65,252,0,0,127,31,255,253,0,1,252,0,0,127,0,0,252,0,1,252,0,0,127,0,0,252,0,1,252,0,0,127,0,0,252,0,1,252,0,0,127,15,255,255,255,225,252,0,0,127,15,255,255,255,225,252,0,0,127,15,255,255,255,224,252,0,0,127,15,128,252,7,224,252,0,0,127,15,128,252,7,224,252,0,0,127,15,128,252,7,224,252,0,0,191,15,128,252,7,224,252,0,0,190,15,128,252,7,224,253,0,0,254,15,255,255,255,224,253,0,0,253,15,255,255,255,224,253,0,0,253,10,170,255,170,144,253,0,0,252,0,0,252,2,64,253,0,2,252,0,0,252,31,192,190,0,3,248,0,0,252,11,224,190,8,3,244,0,0,252,3,240,127,29,7,240,21,106,255,255,248,63,31,15,240,255,255,255,255,252,63,30,15,224,255,255,255,255,254,63,174,63,192,255,169,80,0,127,31,253,127,128,0,0,0,0,63,15,252,47,0,0,0,0,0,16,11,248,5,0,0,0,0,0,0,1,224, + // 0x98fd 飽 + 253,152,36,36,68,38,1,252,0,3,252,0,0,168,0,0,0,0,7,255,0,0,253,0,0,0,0,15,255,192,1,252,0,0,0,0,47,223,244,3,252,0,0,0,0,63,135,252,3,244,0,0,0,0,255,1,255,7,255,255,255,244,2,253,0,127,207,255,255,255,244,7,248,252,47,95,255,255,255,244,31,240,252,9,63,192,0,3,244,127,192,252,0,127,64,0,3,244,255,170,254,169,255,0,0,3,244,63,255,255,255,254,0,0,3,244,7,255,255,255,255,255,254,3,244,3,240,0,254,187,255,254,3,244,3,240,0,253,7,255,254,3,240,3,245,85,253,0,0,126,3,240,3,255,255,253,0,0,126,3,240,3,255,255,253,0,0,126,3,240,3,240,0,253,0,0,126,3,240,3,240,0,253,15,255,254,7,240,3,250,170,253,15,255,254,7,240,3,255,255,253,15,255,254,11,240,3,255,255,253,15,208,0,15,224,3,240,0,0,15,208,7,255,224,3,240,2,128,15,208,3,255,192,3,240,15,208,15,208,3,254,0,3,240,15,240,15,208,0,0,0,3,240,3,244,15,208,0,0,0,3,240,3,252,15,208,0,0,116,3,240,127,253,15,208,0,0,126,3,255,255,255,15,208,0,0,190,47,255,255,255,79,208,0,0,189,63,255,228,63,143,224,0,1,253,63,249,0,31,203,255,255,255,252,41,0,0,9,3,255,255,255,244,0,0,0,0,0,191,255,255,208, + // 0x9918 餘 + 24,153,36,36,68,38,1,252,0,7,244,0,0,2,252,0,0,0,15,253,0,0,7,253,0,0,0,31,255,64,0,15,255,0,0,0,63,175,208,0,31,255,128,0,0,191,11,244,0,63,223,208,0,1,253,3,252,0,255,79,240,0,7,248,0,255,2,254,3,252,0,31,255,255,254,11,252,2,255,0,127,239,255,172,31,244,0,191,192,255,5,85,64,191,224,0,63,240,60,0,0,2,255,128,0,15,252,5,85,85,87,255,0,0,7,254,3,255,255,249,247,255,255,255,252,3,255,255,248,147,255,255,255,120,3,240,1,248,3,255,255,255,0,3,240,1,248,0,1,252,0,0,3,255,255,248,0,1,252,0,0,3,255,255,248,0,1,252,0,0,3,245,85,248,255,255,255,255,248,3,240,1,248,255,255,255,255,248,3,245,86,248,255,255,255,255,248,3,255,255,248,0,1,252,0,0,3,255,255,248,0,1,252,1,0,3,240,0,0,10,129,252,47,0,3,240,0,0,15,193,252,47,128,3,250,170,168,31,129,252,15,192,3,255,255,252,47,65,252,15,224,3,255,255,252,63,1,252,7,240,3,240,0,0,190,1,252,3,244,3,240,0,0,252,1,252,2,252,3,255,255,255,248,1,252,1,252,3,255,255,254,240,1,252,0,253,3,255,255,253,16,1,252,0,160,3,240,0,0,0,255,252,0,0,3,240,0,0,0,191,244,0,0,3,224,0,0,0,127,144,0,0, + // 0x99ac 馬 + 172,153,35,35,59,38,1,251,0,47,255,255,255,255,255,255,0,0,47,255,255,255,255,255,255,0,0,47,255,255,255,255,255,255,0,0,47,128,0,127,0,0,0,0,0,47,128,0,127,0,0,0,0,0,47,128,0,127,0,0,0,0,0,47,255,255,255,255,255,248,0,0,47,255,255,255,255,255,248,0,0,47,255,255,255,255,255,248,0,0,47,128,0,127,0,0,0,0,0,47,128,0,127,0,0,0,0,0,47,128,0,127,0,0,0,0,0,47,255,255,255,255,255,248,0,0,47,255,255,255,255,255,248,0,0,47,255,255,255,255,255,248,0,0,47,128,0,127,0,0,0,0,0,47,128,0,127,0,0,0,0,0,47,128,0,127,0,0,0,0,0,47,255,255,255,255,255,255,244,0,47,255,255,255,255,255,255,244,0,47,255,255,255,255,255,255,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,64,7,240,0,189,0,0,24,7,224,7,240,0,253,15,192,126,3,244,7,240,0,252,15,208,63,1,252,11,240,1,252,11,208,63,64,253,11,240,3,248,7,224,31,128,127,15,240,7,244,7,240,15,192,61,15,224,15,240,3,240,15,192,0,15,208,31,224,3,240,11,208,0,63,208,127,192,3,240,5,0,191,255,192,47,64,1,64,0,0,127,255,64,5,0,0,0,0,0,63,253,0,0,0,0,0,0,0,0,0,0, + // 0x9a45 驅 + 69,154,36,36,68,38,1,251,10,170,170,168,106,170,170,170,168,15,255,255,252,127,255,255,255,248,15,255,255,252,127,255,255,255,248,15,255,255,252,125,0,0,0,0,15,192,248,0,125,0,0,0,0,15,192,248,0,125,0,0,0,0,15,234,254,160,125,3,255,255,64,15,255,255,244,125,3,255,255,64,15,255,255,244,125,3,208,15,64,15,192,248,0,125,3,208,15,64,15,192,248,0,125,3,208,15,64,15,192,248,0,125,3,208,15,64,15,234,254,164,125,3,224,31,64,15,255,255,244,125,3,255,255,64,15,255,255,244,125,3,255,255,64,15,192,248,0,125,0,0,0,0,15,192,248,0,125,0,0,0,0,15,192,248,0,125,63,252,191,248,15,255,255,252,125,63,252,191,248,15,255,255,253,125,60,60,180,184,15,255,255,253,125,56,60,176,120,0,0,0,188,125,56,60,176,120,0,0,0,188,125,56,60,176,120,14,2,108,188,125,56,60,176,120,15,115,157,188,125,56,60,176,120,30,118,207,188,125,60,124,180,184,30,117,199,252,125,63,252,191,248,46,56,211,252,125,63,252,191,248,45,56,224,252,125,0,0,0,0,60,56,144,252,125,0,0,0,0,124,52,0,248,127,170,170,170,169,184,0,1,248,127,255,255,255,253,16,0,171,244,127,255,255,255,253,0,0,191,240,125,0,0,0,0,0,0,191,128,125,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9ad4 體 + 212,154,35,36,68,38,2,252,0,0,0,0,0,46,15,128,0,6,170,170,144,0,47,15,128,0,11,255,255,224,0,47,15,128,0,11,255,255,224,21,127,95,149,64,11,192,3,224,63,255,255,255,192,11,192,3,224,63,255,255,255,192,11,199,255,224,62,31,15,11,192,11,199,255,224,62,31,15,11,192,11,199,195,224,63,255,255,255,192,11,199,195,224,63,255,255,255,192,11,199,195,224,62,31,15,75,192,11,199,195,224,62,31,15,11,192,91,219,215,245,62,111,95,95,192,191,255,255,255,63,255,255,255,192,191,255,255,255,63,255,255,255,192,188,0,0,63,0,0,0,0,0,188,0,0,63,0,0,0,0,0,191,255,255,255,255,255,255,255,240,7,255,255,208,255,255,255,255,240,7,250,175,208,170,170,170,170,160,7,208,11,208,0,0,0,0,0,7,208,11,208,31,255,255,255,128,7,255,255,208,31,255,255,255,128,7,255,255,208,31,128,0,47,128,7,229,91,208,31,64,0,47,128,7,208,11,208,31,64,0,47,128,7,229,95,208,31,255,255,255,128,7,255,255,208,31,255,255,255,128,7,255,255,208,1,176,1,228,0,7,208,11,208,2,244,1,248,0,7,208,11,208,0,248,3,240,0,7,208,11,208,0,252,7,208,0,7,208,11,209,170,254,175,234,164,7,209,255,211,255,255,255,255,244,7,208,255,195,255,255,255,255,244,6,144,105,0,0,0,0,0,0, + // 0x9ad8 高 + 216,154,34,36,68,38,2,252,0,0,0,3,244,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,127,255,255,255,255,255,255,255,208,0,0,0,0,0,0,0,0,0,0,1,85,85,85,85,84,0,0,0,3,255,255,255,255,252,0,0,0,3,255,255,255,255,252,0,0,0,3,240,0,0,1,252,0,0,0,3,240,0,0,1,252,0,0,0,3,240,0,0,1,252,0,0,0,3,249,85,85,86,252,0,0,0,3,255,255,255,255,252,0,0,0,3,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,224,0,0,0,0,0,127,0,15,224,0,0,0,0,0,127,0,15,224,15,255,255,255,0,127,0,15,224,15,255,255,255,0,127,0,15,224,15,234,170,191,0,127,0,15,224,15,192,0,63,0,127,0,15,224,15,192,0,63,0,127,0,15,224,15,192,0,63,0,127,0,15,224,15,255,255,255,0,127,0,15,224,15,255,255,255,0,127,0,15,224,15,213,85,87,65,191,0,15,224,15,192,0,2,255,255,0,15,224,5,64,0,1,255,254,0,15,224,0,0,0,0,255,228,0, + // 0x9ec3 黃 + 195,158,34,36,68,38,2,252,0,0,127,0,0,15,208,0,0,0,0,127,0,0,15,208,0,0,0,0,127,0,0,15,208,0,0,15,255,255,255,255,255,255,255,64,15,255,255,255,255,255,255,255,64,10,170,255,234,170,175,250,170,0,0,0,127,0,0,15,208,0,0,0,0,127,0,0,15,208,0,0,0,0,127,255,255,255,208,0,0,0,0,127,255,255,255,208,0,0,0,0,21,85,85,85,64,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,191,255,255,255,255,255,240,0,0,191,255,255,255,255,255,240,0,0,191,170,171,254,170,175,240,0,0,190,0,3,248,0,11,240,0,0,190,0,3,248,0,11,240,0,0,191,255,255,255,255,255,240,0,0,191,255,255,255,255,255,240,0,0,191,85,87,253,85,91,240,0,0,190,0,3,248,0,11,240,0,0,190,0,3,248,0,11,240,0,0,191,255,255,255,255,255,240,0,0,191,255,255,255,255,255,240,0,0,106,175,170,170,175,234,160,0,0,1,191,128,0,47,248,0,0,0,31,255,192,0,127,255,224,0,7,255,253,0,0,2,255,254,64,255,255,144,0,0,0,27,255,240,127,244,0,0,0,0,0,191,192,29,0,0,0,0,0,0,6,0, + // 0x9ede 點 + 222,158,36,36,68,38,1,252,0,0,0,0,0,0,190,0,0,5,85,85,85,64,0,190,0,0,15,255,255,255,192,0,190,0,0,15,255,255,255,192,0,190,0,0,15,128,184,11,192,0,190,0,0,15,148,184,91,192,0,190,0,0,15,188,184,251,192,0,190,0,0,15,172,184,251,192,0,190,0,0,15,157,185,219,192,0,191,85,84,15,142,186,203,192,0,191,255,253,15,142,187,203,192,0,191,255,253,15,132,185,75,192,0,191,255,253,15,128,184,11,192,0,190,0,0,15,255,255,255,192,0,190,0,0,15,255,255,255,192,0,190,0,0,5,86,254,85,64,0,190,0,0,0,0,252,0,0,0,190,0,0,0,0,252,0,0,0,190,0,0,15,255,255,255,208,0,255,0,0,15,255,255,255,211,255,255,255,240,10,171,255,170,147,255,255,255,240,0,0,252,0,3,255,255,255,240,0,0,254,170,163,240,0,7,240,47,255,255,255,243,240,0,7,240,63,255,255,255,243,240,0,7,240,63,254,169,80,3,240,0,7,240,0,0,0,0,3,240,0,7,240,0,0,5,31,3,240,0,7,240,7,207,79,15,131,240,0,7,240,11,203,143,135,211,240,0,7,240,15,203,199,195,243,240,0,7,240,15,135,195,193,243,255,255,255,240,47,71,195,208,247,255,255,255,240,63,7,194,208,3,255,255,255,240,125,2,64,0,3,244,0,7,240,24,0,0,0,3,240,0,2,160, + // 0x9f4a 齊 + 74,159,36,37,77,38,1,251,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,47,255,255,255,255,255,255,255,244,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,0,0,0,5,0,180,0,0,0,0,0,0,63,0,252,0,10,0,5,85,85,111,130,248,6,255,192,15,255,255,219,195,243,255,255,64,15,255,255,211,130,211,255,248,0,0,126,7,208,253,3,240,252,0,0,189,7,208,253,3,224,125,0,0,252,11,192,253,3,224,63,0,1,248,11,192,253,3,224,47,128,3,244,15,192,253,3,245,175,224,31,227,255,128,253,63,255,247,248,127,131,255,0,253,63,255,226,253,46,1,84,0,253,42,80,0,116,0,7,240,0,0,0,7,240,0,0,7,240,0,0,0,7,240,0,0,7,250,170,170,170,175,240,0,0,7,255,255,255,255,255,240,0,0,11,255,255,255,255,255,240,0,0,11,240,0,0,0,7,240,0,0,11,240,0,0,0,7,240,0,0,15,240,0,0,0,7,240,0,0,15,255,255,255,255,255,240,0,0,31,255,255,255,255,255,240,0,0,63,250,170,170,170,175,240,0,0,127,192,0,0,0,7,240,0,1,255,64,0,0,0,7,240,0,7,255,0,0,0,0,7,240,0,31,252,0,0,0,0,7,240,0,11,240,0,0,0,0,7,240,0,3,192,0,0,0,0,7,240,0,0,0,0,0,0,0,0,0,0, + // 0xff1a : + 26,255,6,25,50,38,16,1,63,192,255,240,255,240,255,240,191,224,47,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,192,255,240,255,240,255,240,191,224,47,128, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Vietnamese_28.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Vietnamese_28.cpp new file mode 100644 index 0000000000..8ebd4d7e83 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_28px/NotoSans_Medium_Vietnamese_28.cpp @@ -0,0 +1,246 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Vietnamese 38pt, capital 'A' height: 28px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 +extern const uint8_t NotoSans_Medium_Vietnamese_28[15066] = { + 162,28,2,1,249,30,37,246, // unifont_t + // 0x0102 Ă + 2,1,25,36,252,25,0,0,0,5,0,0,84,0,0,0,15,128,0,248,0,0,0,11,228,7,240,0,0,0,3,255,255,224,0,0,0,1,255,255,128,0,0,0,0,47,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x0103 ă + 3,1,18,30,150,22,1,255,0,80,0,5,0,1,240,0,47,0,0,253,1,190,0,0,127,255,252,0,0,47,255,244,0,0,6,255,128,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x0110 Đ + 16,1,25,27,189,28,1,0,3,255,255,254,64,0,0,3,255,255,255,244,0,0,3,255,255,255,255,0,0,3,253,85,111,255,192,0,3,252,0,1,255,240,0,3,252,0,0,47,248,0,3,252,0,0,11,252,0,3,252,0,0,3,254,0,3,252,0,0,2,255,0,3,252,0,0,0,255,0,3,252,0,0,0,255,64,7,252,0,0,0,255,64,255,255,255,192,0,255,128,255,255,255,192,0,191,128,255,255,255,192,0,255,64,87,253,85,64,0,255,64,3,252,0,0,0,255,64,3,252,0,0,1,255,0,3,252,0,0,2,255,0,3,252,0,0,3,253,0,3,252,0,0,15,252,0,3,252,0,0,63,244,0,3,252,0,2,255,224,0,3,253,86,191,255,128,0,3,255,255,255,253,0,0,3,255,255,255,224,0,0,3,255,255,233,0,0,0, + // 0x0111 đ + 17,1,22,30,180,24,2,255,0,0,0,11,244,0,0,0,0,11,244,0,0,0,0,11,244,0,0,2,170,175,254,128,0,3,255,255,255,208,0,3,255,255,255,208,0,0,0,11,248,0,0,0,0,11,244,0,0,5,80,11,244,0,0,191,255,75,244,0,3,255,255,215,244,0,15,255,255,255,244,0,47,248,1,255,244,0,63,224,0,63,244,0,127,192,0,15,244,0,191,128,0,15,244,0,255,64,0,11,244,0,255,0,0,11,244,0,255,0,0,7,244,0,255,0,0,7,244,0,255,0,0,11,244,0,255,64,0,11,244,0,191,128,0,15,244,0,127,192,0,15,244,0,63,224,0,47,244,0,47,248,1,255,244,0,15,255,255,251,244,0,3,255,255,211,244,0,0,191,254,3,244,0,0,1,64,0,0,0, + // 0x0128 Ĩ + 40,1,15,35,140,13,255,0,7,253,0,124,15,255,209,248,63,255,255,240,61,7,255,224,124,0,127,64,0,0,0,0,0,0,0,0,0,0,0,0,11,255,255,192,11,255,255,192,2,255,254,64,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,0,31,240,0,2,255,255,64,11,255,255,192,11,255,255,192, + // 0x0129 ĩ + 41,1,15,28,112,10,254,0,11,248,0,244,63,255,130,240,127,255,255,224,188,11,255,192,244,0,190,0,0,0,0,0,0,0,0,0,0,21,64,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0, + // 0x0168 Ũ + 104,1,22,36,216,28,3,255,0,11,248,0,240,0,0,63,255,67,240,0,0,191,255,255,224,0,0,248,11,255,192,0,0,240,1,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,224,0,0,27,255,254,64,0,0,0,21,64,0,0, + // 0x0169 ũ + 105,1,18,29,145,24,3,255,0,191,64,31,0,3,255,244,63,0,11,255,255,253,0,15,129,255,252,0,15,0,27,224,0,0,0,0,0,0,0,0,0,0,0,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,11,240,0,5,64,0,0, + // 0x01a0 Ơ + 160,1,29,30,240,30,2,255,0,0,0,0,0,0,127,192,0,0,5,165,0,0,127,192,0,2,255,255,244,0,191,128,0,47,255,255,255,64,255,0,0,255,255,255,255,225,254,0,2,255,228,1,191,255,252,0,7,255,0,0,15,255,240,0,15,252,0,0,3,255,128,0,47,240,0,0,1,255,64,0,63,224,0,0,0,255,128,0,63,208,0,0,0,127,192,0,127,192,0,0,0,63,192,0,191,192,0,0,0,63,208,0,191,128,0,0,0,63,208,0,191,128,0,0,0,63,224,0,191,128,0,0,0,63,224,0,191,128,0,0,0,63,208,0,191,128,0,0,0,63,208,0,127,192,0,0,0,63,208,0,127,192,0,0,0,63,192,0,63,208,0,0,0,191,192,0,63,224,0,0,0,255,128,0,31,244,0,0,1,255,0,0,15,252,0,0,3,254,0,0,7,255,0,0,31,252,0,0,2,255,228,1,255,244,0,0,0,191,255,255,255,208,0,0,0,31,255,255,255,0,0,0,0,1,255,255,228,0,0,0,0,0,1,84,0,0,0,0, + // 0x01a1 ơ + 161,1,23,25,150,24,2,255,0,0,0,0,2,168,0,0,0,0,3,252,0,0,0,0,3,252,0,6,254,64,7,248,0,191,255,248,15,240,3,255,255,255,127,224,15,255,171,255,255,128,47,244,0,63,253,0,63,208,0,15,240,0,127,192,0,11,248,0,191,64,0,7,252,0,255,64,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,64,0,3,252,0,191,128,0,7,248,0,63,192,0,15,244,0,63,224,0,31,240,0,15,249,0,191,208,0,7,255,255,255,128,0,1,255,255,254,0,0,0,47,255,224,0,0,0,0,84,0,0,0, + // 0x01af Ư + 175,1,29,30,240,31,3,255,0,0,0,0,0,0,127,192,0,0,0,0,0,0,191,128,191,64,0,0,31,224,191,64,191,64,0,0,31,224,255,0,191,64,0,0,31,226,254,0,191,64,0,0,31,255,252,0,191,64,0,0,31,255,240,0,191,64,0,0,31,254,64,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,128,0,0,31,224,0,0,127,128,0,0,47,208,0,0,63,192,0,0,63,208,0,0,63,224,0,0,127,192,0,0,31,248,0,1,255,128,0,0,15,255,64,27,255,0,0,0,3,255,255,255,252,0,0,0,0,191,255,255,240,0,0,0,0,11,255,254,64,0,0,0,0,0,21,64,0,0,0,0, + // 0x01b0 ư + 176,1,25,25,175,27,3,255,0,0,0,0,0,106,128,0,0,0,0,0,127,192,0,0,0,0,0,191,128,85,0,0,5,80,255,0,255,0,0,15,241,255,0,255,0,0,15,247,252,0,255,0,0,15,255,244,0,255,0,0,15,255,128,0,255,0,0,15,244,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,31,240,0,0,255,0,0,31,240,0,0,255,0,0,31,240,0,0,255,0,0,47,240,0,0,255,64,0,63,240,0,0,191,192,0,191,240,0,0,127,224,7,255,240,0,0,63,255,255,239,240,0,0,15,255,255,143,240,0,0,2,255,253,11,240,0,0,0,5,64,0,0,0,0, + // 0x0303 ̃ + 3,3,15,5,20,0,237,23,11,248,0,244,47,255,130,240,127,255,255,224,188,11,255,192,244,0,190,0, + // 0x0309 ̉ + 9,3,8,10,20,0,241,22,5,0,127,244,127,253,0,191,0,127,0,190,11,252,15,208,15,192,6,64, + // 0x0323 ̣ + 35,3,5,6,12,0,242,248,25,0,191,64,255,128,191,128,63,0,0,0, + // 0x0340 ̀ + 64,3,9,6,18,0,249,23,127,208,0,47,240,0,11,248,0,2,253,0,0,191,0,0,31,128, + // 0x0341 ́ + 65,3,9,6,18,0,254,23,1,255,64,3,254,0,11,248,0,31,224,0,63,128,0,189,0,0, + // 0x1ea0 Ạ + 160,30,25,36,252,25,0,248,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,144,0,0,0,0,0,7,244,0,0,0,0,0,15,248,0,0,0,0,0,11,248,0,0,0,0,0,3,240,0,0,0,0,0,0,0,0,0,0, + // 0x1ea1 ạ + 161,30,18,29,145,22,1,248,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0,0,0,0,0,0,0,0,36,0,0,0,0,255,0,0,0,1,255,0,0,0,1,255,0,0,0,0,189,0,0,0,0,0,0,0, + // 0x1ea2 Ả + 162,30,25,39,17,25,0,0,0,0,5,64,0,0,0,0,0,63,248,0,0,0,0,0,63,255,0,0,0,0,0,0,127,64,0,0,0,0,0,63,64,0,0,0,0,0,127,0,0,0,0,0,7,254,0,0,0,0,0,7,228,0,0,0,0,0,7,208,0,0,0,0,0,2,128,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x1ea3 ả + 163,30,18,33,165,22,1,255,0,0,80,0,0,0,7,255,64,0,0,7,255,208,0,0,0,11,240,0,0,0,3,240,0,0,0,11,224,0,0,0,191,192,0,0,0,254,0,0,0,0,252,0,0,0,0,100,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x1ea4 Ấ + 164,30,25,37,3,25,0,0,0,0,0,0,3,252,0,0,0,0,0,11,240,0,0,0,10,168,15,192,0,0,0,47,253,63,0,0,0,0,127,255,0,0,0,0,1,253,47,192,0,0,0,3,240,7,240,0,0,0,6,128,0,164,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x1ea5 ấ + 165,30,21,32,192,22,1,255,0,0,0,0,127,64,0,0,0,0,254,0,0,0,85,2,248,0,0,3,255,135,224,0,0,15,255,209,64,0,0,47,199,240,0,0,0,127,1,252,0,0,0,248,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,1,255,255,253,0,0,3,255,255,255,64,0,1,254,86,255,192,0,0,144,0,63,208,0,0,0,0,31,224,0,0,0,0,31,224,0,0,0,0,15,240,0,0,0,21,111,240,0,0,111,255,255,240,0,3,255,255,255,240,0,15,255,148,31,240,0,47,240,0,15,240,0,63,208,0,31,240,0,63,192,0,31,240,0,127,192,0,47,240,0,63,192,0,127,240,0,63,240,2,255,240,0,47,255,255,239,240,0,15,255,255,139,240,0,1,255,253,3,240,0,0,5,64,0,0,0, + // 0x1ea6 Ầ + 166,30,25,37,3,25,0,0,15,224,0,0,0,0,0,3,240,0,0,0,0,0,1,252,10,168,0,0,0,0,62,47,253,0,0,0,0,0,127,255,0,0,0,0,1,253,47,192,0,0,0,3,240,7,240,0,0,0,10,128,0,164,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x1ea7 ầ + 167,30,19,32,160,22,0,255,191,0,0,0,0,63,128,0,0,0,15,208,21,64,0,3,240,255,224,0,0,82,255,244,0,0,7,241,253,0,0,31,192,127,0,0,62,0,11,192,0,0,0,0,0,0,0,0,0,0,0,1,191,228,0,0,127,255,255,64,0,255,255,255,208,0,127,149,191,240,0,36,0,15,244,0,0,0,7,248,0,0,0,7,248,0,0,0,3,252,0,0,5,91,252,0,27,255,255,252,0,255,255,255,252,3,255,229,7,252,11,252,0,3,252,15,244,0,7,252,15,240,0,7,252,31,240,0,11,252,15,240,0,31,252,15,252,0,191,252,11,255,255,251,252,3,255,255,226,252,0,127,255,64,252,0,1,80,0,0, + // 0x1ea8 Ẩ + 168,30,25,40,24,25,0,0,0,0,0,0,20,0,0,0,0,0,0,191,192,0,0,0,0,0,91,224,0,0,0,0,0,2,224,0,0,0,0,0,7,208,0,0,0,10,164,47,64,0,0,0,63,253,45,0,0,0,0,191,255,0,0,0,0,1,253,47,192,0,0,0,3,240,7,224,0,0,0,10,128,0,160,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x1ea9 ẩ + 169,30,20,34,170,22,1,255,0,0,0,15,244,0,0,0,10,252,0,0,0,0,61,0,0,0,0,124,0,0,85,3,244,0,3,255,131,192,0,11,255,225,64,0,31,215,244,0,0,127,0,252,0,0,248,0,47,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x1eaa Ẫ + 170,30,25,40,24,25,0,0,0,0,190,0,120,0,0,0,2,255,229,244,0,0,0,3,235,255,240,0,0,0,11,64,191,192,0,0,0,1,0,0,0,0,0,0,0,6,164,0,0,0,0,0,31,252,0,0,0,0,0,63,255,0,0,0,0,0,253,47,192,0,0,0,3,244,7,240,0,0,0,6,128,0,164,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x1eab ẫ + 171,30,18,35,175,22,1,255,0,6,64,10,0,0,63,248,31,0,0,191,255,253,0,0,240,47,252,0,0,144,1,144,0,0,0,85,0,0,0,2,255,64,0,0,11,255,208,0,0,31,219,240,0,0,127,1,252,0,0,248,0,47,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x1eac Ậ + 172,30,25,44,52,25,0,248,0,0,15,252,0,0,0,0,0,63,254,0,0,0,0,0,191,255,128,0,0,0,2,253,47,208,0,0,0,7,244,7,244,0,0,0,31,192,1,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,144,0,0,0,0,0,7,244,0,0,0,0,0,11,252,0,0,0,0,0,11,248,0,0,0,0,0,3,240,0,0,0,0,0,0,0,0,0,0, + // 0x1ead ậ + 173,30,18,37,185,22,1,248,0,2,255,128,0,0,7,255,208,0,0,15,255,240,0,0,63,195,252,0,0,254,0,255,0,3,244,0,47,128,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0,0,0,0,0,0,0,0,100,0,0,0,1,254,0,0,0,2,255,0,0,0,2,254,0,0,0,0,252,0,0,0,0,0,0,0, + // 0x1eae Ắ + 174,30,25,39,17,25,0,0,0,0,0,21,64,0,0,0,0,0,63,64,0,0,0,0,0,190,0,0,0,0,0,1,248,0,0,0,0,6,131,208,160,0,0,0,7,192,1,240,0,0,0,3,244,7,240,0,0,0,1,255,255,208,0,0,0,0,191,255,64,0,0,0,0,6,164,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x1eaf ắ + 175,30,18,33,165,22,1,255,0,0,11,240,0,0,0,15,192,0,0,0,63,64,0,0,80,124,5,0,0,244,0,46,0,0,188,0,189,0,0,127,255,252,0,0,31,255,240,0,0,2,255,64,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x1eb0 Ằ + 176,30,25,39,17,25,0,0,0,0,84,0,0,0,0,0,0,191,0,0,0,0,0,0,63,64,0,0,0,0,0,15,192,0,0,0,0,6,130,224,160,0,0,0,7,192,1,240,0,0,0,3,244,7,240,0,0,0,2,255,255,208,0,0,0,0,191,255,64,0,0,0,0,6,164,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x1eb1 ằ + 177,30,18,33,165,22,1,255,0,47,192,0,0,0,11,224,0,0,0,2,244,0,0,0,80,188,5,0,0,244,0,62,0,0,188,0,189,0,0,127,255,252,0,0,47,255,240,0,0,6,255,64,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x1eb2 Ẳ + 178,30,25,40,24,25,0,0,0,0,10,144,0,0,0,0,0,15,248,0,0,0,0,0,0,124,0,0,0,0,0,0,60,0,0,0,0,0,3,248,0,0,0,0,6,131,192,160,0,0,0,7,192,1,240,0,0,0,3,244,7,240,0,0,0,2,255,255,208,0,0,0,0,191,255,64,0,0,0,0,6,164,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x1eb3 ẳ + 179,30,18,35,175,22,1,255,0,0,80,0,0,0,1,255,0,0,0,0,95,128,0,0,0,11,128,0,0,0,47,64,0,0,80,124,5,0,0,248,16,46,0,0,189,0,125,0,0,63,255,252,0,0,31,255,240,0,0,2,255,128,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x1eb4 Ẵ + 180,30,25,40,24,25,0,0,0,0,126,0,120,0,0,0,2,255,224,244,0,0,0,3,235,255,240,0,0,0,11,128,191,208,0,0,0,1,0,0,0,0,0,0,1,64,0,80,0,0,0,7,192,1,240,0,0,0,3,224,7,240,0,0,0,2,255,255,208,0,0,0,0,191,255,64,0,0,0,0,10,164,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128, + // 0x1eb5 ẵ + 181,30,18,35,175,22,1,255,0,6,64,6,0,0,63,248,15,0,0,191,255,254,0,0,240,47,252,0,0,144,1,144,0,0,0,0,0,0,0,244,0,46,0,0,252,0,125,0,0,127,239,252,0,0,47,255,244,0,0,6,255,128,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0, + // 0x1eb6 Ặ + 182,30,25,44,52,25,0,248,0,5,64,0,84,0,0,0,11,192,0,248,0,0,0,7,228,7,244,0,0,0,3,255,255,240,0,0,0,0,255,255,192,0,0,0,0,31,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,0,0,0,0,15,252,0,0,0,0,0,31,252,0,0,0,0,0,47,254,0,0,0,0,0,63,255,0,0,0,0,0,191,127,64,0,0,0,0,255,63,128,0,0,0,1,254,47,192,0,0,0,2,252,31,208,0,0,0,3,252,15,240,0,0,0,7,248,11,240,0,0,0,15,240,7,248,0,0,0,15,240,3,252,0,0,0,47,208,2,253,0,0,0,63,192,1,254,0,0,0,127,192,0,255,0,0,0,191,149,85,255,64,0,0,255,255,255,255,192,0,1,255,255,255,255,192,0,3,255,255,255,255,224,0,3,252,0,0,31,240,0,11,248,0,0,15,244,0,15,244,0,0,11,248,0,31,240,0,0,3,252,0,47,224,0,0,3,253,0,63,192,0,0,1,255,0,127,192,0,0,0,255,0,255,64,0,0,0,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,144,0,0,0,0,0,7,244,0,0,0,0,0,11,252,0,0,0,0,0,11,248,0,0,0,0,0,3,240,0,0,0,0,0,0,0,0,0,0, + // 0x1eb7 ặ + 183,30,18,37,185,22,1,248,0,80,0,5,0,0,244,0,31,0,0,253,1,191,0,0,127,255,253,0,0,31,255,244,0,0,2,255,128,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,1,255,255,253,0,3,255,255,255,64,1,254,86,255,192,0,144,0,63,208,0,0,0,31,224,0,0,0,31,224,0,0,0,15,240,0,0,21,111,240,0,111,255,255,240,3,255,255,255,240,15,255,148,31,240,47,240,0,15,240,63,208,0,31,240,63,192,0,31,240,127,192,0,47,240,63,192,0,127,240,63,240,2,255,240,47,255,255,239,240,15,255,255,139,240,1,255,253,3,240,0,5,64,0,0,0,0,0,0,0,0,0,96,0,0,0,2,252,0,0,0,3,253,0,0,0,3,253,0,0,0,1,248,0,0,0,0,0,0,0, + // 0x1eb8 Ẹ + 184,30,16,35,140,21,3,248,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255,0,0,0,0,0,0,0,0,0,1,144,0,0,11,244,0,0,15,248,0,0,15,248,0,0,3,240,0,0,0,0,0, + // 0x1eb9 ẹ + 185,30,18,29,145,22,2,248,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0,0,0,0,0,0,0,0,100,0,0,0,2,253,0,0,0,3,254,0,0,0,3,254,0,0,0,1,252,0,0,0,0,0,0,0, + // 0x1eba Ẻ + 186,30,16,39,156,21,3,0,0,1,64,0,0,47,253,0,0,47,255,0,0,0,127,128,0,0,47,128,0,0,63,64,0,3,254,0,0,3,244,0,0,3,208,0,0,2,128,0,0,0,0,0,0,0,0,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x1ebb ẻ + 187,30,18,33,165,22,2,255,0,0,80,0,0,0,11,255,64,0,0,11,255,208,0,0,0,15,224,0,0,0,7,224,0,0,0,15,224,0,0,0,191,192,0,0,0,253,0,0,0,0,248,0,0,0,0,164,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x1ebc Ẽ + 188,30,16,35,140,21,3,0,1,254,64,46,7,255,228,125,15,255,255,252,31,65,255,244,46,0,47,144,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x1ebd ẽ + 189,30,18,29,145,22,2,255,0,191,64,31,0,3,255,244,63,0,11,255,255,253,0,15,129,255,248,0,15,0,27,224,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x1ebe Ế + 190,30,19,37,185,21,3,0,0,0,0,3,248,0,0,0,11,240,0,10,164,31,192,0,47,253,62,0,0,191,255,0,0,1,253,47,192,0,3,240,7,224,0,10,128,0,164,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,0,127,255,255,255,0,127,255,255,255,0,127,213,85,85,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,255,255,252,0,127,255,255,252,0,127,255,255,252,0,127,234,170,168,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,234,170,169,0,127,255,255,255,0,127,255,255,255,0,127,255,255,255,0, + // 0x1ebf ế + 191,30,20,32,160,22,2,255,0,0,0,0,254,0,0,0,2,252,0,1,84,3,240,0,11,255,15,192,0,31,255,133,0,0,127,79,224,0,0,253,3,244,0,3,240,0,188,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x1ec0 Ề + 192,30,18,37,185,21,1,0,254,0,0,0,0,63,64,0,0,0,31,192,170,128,0,3,226,255,208,0,0,7,255,240,0,0,15,210,252,0,0,63,0,127,0,0,104,0,10,64,0,0,0,0,0,0,0,0,0,0,7,255,255,255,240,7,255,255,255,240,7,255,255,255,240,7,253,85,85,80,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,255,255,255,192,7,255,255,255,192,7,255,255,255,192,7,254,170,170,128,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,248,0,0,0,7,254,170,170,144,7,255,255,255,240,7,255,255,255,240,7,255,255,255,240, + // 0x1ec1 ề + 193,30,19,32,160,22,1,255,253,0,0,0,0,127,0,0,0,0,47,128,85,0,0,7,210,255,192,0,0,87,255,240,0,0,15,227,248,0,0,63,64,190,0,0,188,0,31,64,0,0,0,0,0,0,0,0,0,0,0,1,191,144,0,0,47,255,253,0,0,255,255,255,64,3,255,149,255,192,11,252,0,47,240,15,240,0,15,240,31,224,0,7,248,47,208,0,7,248,63,213,85,87,252,63,255,255,255,252,63,255,255,255,252,63,234,170,170,168,63,192,0,0,0,63,208,0,0,0,47,224,0,0,0,31,240,0,0,0,15,252,0,0,0,7,255,64,1,240,1,255,255,255,240,0,127,255,255,240,0,11,255,255,128,0,0,21,64,0, + // 0x1ec2 Ể + 194,30,18,40,200,21,3,0,0,0,0,20,0,0,0,0,191,192,0,0,0,91,224,0,0,0,2,224,0,0,0,7,208,0,10,164,47,64,0,63,253,45,0,0,191,255,0,0,1,253,47,192,0,7,240,7,224,0,10,128,0,160,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,0,127,255,255,255,0,127,255,255,255,0,127,213,85,85,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,255,255,252,0,127,255,255,252,0,127,255,255,252,0,127,234,170,168,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,128,0,0,0,127,234,170,169,0,127,255,255,255,0,127,255,255,255,0,127,255,255,255,0, + // 0x1ec3 ể + 195,30,19,34,170,22,2,255,0,0,0,63,208,0,0,0,43,240,0,0,0,0,244,0,0,0,1,244,0,1,84,15,208,0,15,255,15,0,0,47,255,133,0,0,127,95,208,0,0,252,3,244,0,3,224,0,188,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x1ec4 Ễ + 196,30,16,40,160,21,3,0,0,189,0,116,3,255,225,240,7,235,255,224,11,64,191,192,5,0,0,0,0,10,160,0,0,31,252,0,0,127,255,0,1,253,47,128,3,240,7,224,10,128,0,160,0,0,0,0,0,0,0,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255, + // 0x1ec5 ễ + 197,30,18,35,175,22,2,255,0,25,0,24,0,0,255,224,60,0,1,255,255,248,0,3,208,127,240,0,2,128,6,64,0,0,1,84,0,0,0,7,254,0,0,0,31,255,128,0,0,63,95,208,0,0,253,3,244,0,3,224,0,188,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0, + // 0x1ec6 Ệ + 198,30,16,44,176,21,3,248,0,15,252,0,0,47,255,0,0,191,255,128,1,254,31,224,7,244,7,248,15,192,0,253,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,127,255,255,255,127,255,255,255,127,213,85,85,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,255,255,252,127,255,255,252,127,255,255,252,127,234,170,168,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,234,170,169,127,255,255,255,127,255,255,255,127,255,255,255,0,0,0,0,0,0,0,0,0,1,144,0,0,11,244,0,0,15,248,0,0,15,248,0,0,3,240,0,0,0,0,0, + // 0x1ec7 ệ + 199,30,18,37,185,22,2,248,0,11,254,0,0,0,31,255,64,0,0,63,255,192,0,0,255,15,240,0,3,252,3,252,0,11,208,0,190,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,244,0,3,255,255,253,0,15,254,87,255,0,47,240,0,191,192,63,192,0,63,192,127,128,0,31,224,191,64,0,31,224,255,85,85,95,240,255,255,255,255,240,255,255,255,255,240,255,170,170,170,160,255,0,0,0,0,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,240,0,0,0,31,253,0,7,192,7,255,255,255,192,1,255,255,255,192,0,47,255,254,0,0,0,85,0,0,0,0,0,0,0,0,0,100,0,0,0,2,253,0,0,0,3,254,0,0,0,3,254,0,0,0,1,252,0,0,0,0,0,0,0, + // 0x1ec8 Ỉ + 200,30,11,38,114,13,1,0,1,165,0,3,255,192,3,255,240,0,7,240,0,3,240,0,11,240,0,191,192,0,189,0,0,188,0,0,16,0,0,0,0,191,255,252,191,255,252,47,255,228,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,47,255,244,191,255,252,191,255,252, + // 0x1ec9 ỉ + 201,30,8,32,64,10,2,0,5,0,255,240,255,252,1,253,0,190,0,253,15,248,31,208,15,64,10,0,0,0,21,64,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192,63,192, + // 0x1eca Ị + 202,30,11,35,105,13,1,248,191,255,252,191,255,252,47,255,228,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,47,255,244,191,255,252,191,255,252,0,0,0,0,0,0,0,100,0,1,254,0,2,255,0,1,255,0,0,253,0,0,0,0, + // 0x1ecb ị + 203,30,5,36,72,10,3,248,191,0,255,64,255,64,191,0,4,0,0,0,0,0,85,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,0,0,0,0,24,0,255,0,255,64,255,64,126,0,0,0, + // 0x1ecc Ọ + 204,30,26,36,252,30,2,248,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,3,252,0,0,0,0,0,7,252,0,0,0,0,0,3,252,0,0,0,0,0,2,244,0,0,0,0,0,0,0,0,0,0, + // 0x1ecd ọ + 205,30,19,29,145,23,2,248,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0,0,0,0,0,0,0,0,100,0,0,0,1,253,0,0,0,2,254,0,0,0,2,254,0,0,0,0,252,0,0,0,0,0,0,0, + // 0x1ece Ỏ + 206,30,26,39,17,30,2,255,0,0,6,164,0,0,0,0,0,15,255,64,0,0,0,0,15,255,192,0,0,0,0,0,15,208,0,0,0,0,0,15,208,0,0,0,0,0,47,192,0,0,0,0,2,255,64,0,0,0,0,1,248,0,0,0,0,0,1,240,0,0,0,0,0,0,80,0,0,0,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x1ecf ỏ + 207,30,19,33,165,23,2,255,0,0,80,0,0,0,7,255,64,0,0,7,255,208,0,0,0,11,240,0,0,0,3,240,0,0,0,11,224,0,0,0,191,192,0,0,0,254,0,0,0,0,252,0,0,0,0,100,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x1ed0 Ố + 208,30,26,38,10,30,2,255,0,0,0,0,1,253,0,0,0,0,0,3,244,0,0,0,6,168,11,208,0,0,0,15,255,31,64,0,0,0,63,255,128,0,0,0,0,190,15,208,0,0,0,2,248,3,244,0,0,0,2,144,0,104,0,0,0,0,0,0,0,0,0,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x1ed1 ố + 209,30,20,32,160,23,2,255,0,0,0,0,191,0,0,0,0,253,0,1,85,3,244,0,7,255,75,208,0,15,255,197,0,0,63,139,240,0,0,190,2,248,0,1,244,0,125,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x1ed2 Ồ + 210,30,26,38,10,30,2,255,7,244,0,0,0,0,0,2,252,0,0,0,0,0,0,190,6,168,0,0,0,0,31,15,255,0,0,0,0,0,63,255,128,0,0,0,0,191,15,224,0,0,0,2,248,2,244,0,0,0,2,144,0,104,0,0,0,0,0,0,0,0,0,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x1ed3 ồ + 211,30,20,32,160,23,1,255,254,0,0,0,0,127,64,0,0,0,31,192,85,64,0,3,225,255,208,0,0,83,255,240,0,0,15,242,252,0,0,47,128,127,0,0,125,0,31,128,0,0,0,0,0,0,0,0,0,0,0,1,191,144,0,0,47,255,254,0,0,255,255,255,192,3,255,234,255,240,11,253,0,31,248,15,244,0,3,252,31,240,0,2,254,47,224,0,1,255,63,208,0,0,255,63,192,0,0,255,63,192,0,0,255,63,192,0,0,255,63,192,0,0,255,63,208,0,0,255,47,224,0,1,254,15,240,0,3,253,15,248,0,11,252,3,255,64,47,244,1,255,255,255,224,0,127,255,255,128,0,11,255,248,0,0,0,21,0,0, + // 0x1ed4 Ổ + 212,30,26,41,31,30,2,255,0,0,0,0,21,0,0,0,0,0,0,63,208,0,0,0,0,0,22,240,0,0,0,0,0,0,240,0,0,0,0,0,6,240,0,0,0,6,168,15,128,0,0,0,15,255,15,0,0,0,0,63,255,128,0,0,0,0,254,15,208,0,0,0,2,248,3,244,0,0,0,2,144,0,168,0,0,0,0,0,0,0,0,0,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x1ed5 ổ + 213,30,19,34,170,23,2,255,0,0,0,31,224,0,0,0,10,248,0,0,0,0,124,0,0,0,0,184,0,1,85,7,224,0,7,255,71,128,0,15,255,193,0,0,63,139,240,0,0,190,2,248,0,1,244,0,125,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x1ed6 Ỗ + 214,30,26,41,31,30,2,255,0,0,110,64,60,0,0,0,0,255,244,188,0,0,0,3,251,255,244,0,0,0,3,192,127,224,0,0,0,1,0,1,0,0,0,0,0,2,168,0,0,0,0,0,15,254,0,0,0,0,0,47,255,128,0,0,0,0,191,15,208,0,0,0,2,248,2,244,0,0,0,2,144,0,104,0,0,0,0,0,0,0,0,0,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0, + // 0x1ed7 ỗ + 215,30,19,35,175,23,2,255,0,10,64,9,0,0,127,244,46,0,0,255,255,252,0,1,240,111,248,0,1,128,1,144,0,0,0,84,0,0,0,3,255,0,0,0,15,255,192,0,0,47,207,240,0,0,190,2,248,0,1,244,0,62,0,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0, + // 0x1ed8 Ộ + 216,30,26,44,52,30,2,248,0,0,11,254,0,0,0,0,0,31,255,64,0,0,0,0,63,255,192,0,0,0,0,255,15,240,0,0,0,3,252,3,252,0,0,0,11,208,0,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,165,0,0,0,0,2,255,255,248,0,0,0,47,255,255,255,64,0,0,191,255,255,255,224,0,2,255,228,1,191,248,0,7,255,0,0,15,253,0,15,252,0,0,3,255,0,47,240,0,0,1,255,64,63,224,0,0,0,255,128,63,208,0,0,0,127,192,127,192,0,0,0,63,192,191,192,0,0,0,63,208,191,128,0,0,0,63,208,191,128,0,0,0,63,224,191,128,0,0,0,63,224,191,128,0,0,0,63,208,191,128,0,0,0,63,208,127,192,0,0,0,63,208,127,192,0,0,0,63,192,63,208,0,0,0,191,192,63,240,0,0,0,255,128,31,244,0,0,1,255,0,15,252,0,0,3,254,0,7,255,0,0,31,252,0,2,255,228,1,255,244,0,0,191,255,255,255,208,0,0,31,255,255,255,0,0,0,1,255,255,228,0,0,0,0,1,84,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,3,252,0,0,0,0,0,7,252,0,0,0,0,0,3,252,0,0,0,0,0,2,244,0,0,0,0,0,0,0,0,0,0, + // 0x1ed9 ộ + 217,30,19,37,185,23,2,248,0,3,255,0,0,0,11,255,192,0,0,47,255,224,0,0,127,135,248,0,1,253,1,254,0,3,240,0,63,64,0,0,0,0,0,0,0,0,0,0,0,6,254,64,0,0,191,255,248,0,3,255,255,255,0,15,255,171,255,192,47,244,0,127,224,63,208,0,15,240,127,192,0,11,248,191,128,0,7,252,255,64,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,3,252,191,128,0,7,248,63,192,0,15,244,63,224,0,47,240,15,253,0,191,208,7,255,255,255,128,1,255,255,254,0,0,47,255,224,0,0,0,84,0,0,0,0,0,0,0,0,0,100,0,0,0,1,253,0,0,0,2,254,0,0,0,2,254,0,0,0,0,252,0,0,0,0,0,0,0, + // 0x1eda Ớ + 218,30,29,37,40,30,2,255,0,0,0,15,248,0,0,0,0,0,0,63,224,0,0,0,0,0,0,127,192,0,0,0,0,0,0,255,0,0,0,0,0,0,3,248,0,0,0,0,0,0,11,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,192,0,0,5,165,0,0,127,192,0,2,255,255,244,0,191,128,0,47,255,255,255,64,255,0,0,255,255,255,255,225,254,0,2,255,228,1,191,255,252,0,7,255,0,0,15,255,240,0,15,252,0,0,3,255,128,0,47,240,0,0,1,255,64,0,63,224,0,0,0,255,128,0,63,208,0,0,0,127,192,0,127,192,0,0,0,63,192,0,191,192,0,0,0,63,208,0,191,128,0,0,0,63,208,0,191,128,0,0,0,63,224,0,191,128,0,0,0,63,224,0,191,128,0,0,0,63,208,0,191,128,0,0,0,63,208,0,127,192,0,0,0,63,208,0,127,192,0,0,0,63,192,0,63,208,0,0,0,191,192,0,63,224,0,0,0,255,128,0,31,244,0,0,1,255,0,0,15,252,0,0,3,254,0,0,7,255,0,0,31,252,0,0,2,255,228,1,255,244,0,0,0,191,255,255,255,208,0,0,0,31,255,255,255,0,0,0,0,1,255,255,228,0,0,0,0,0,1,84,0,0,0,0, + // 0x1edb ớ + 219,30,23,30,180,24,2,255,0,0,11,253,0,0,0,0,15,244,0,0,0,0,63,208,0,0,0,0,191,64,0,0,0,1,253,0,0,0,0,3,244,0,2,168,0,0,0,0,3,252,0,0,0,0,3,252,0,6,254,64,7,248,0,191,255,248,15,240,3,255,255,255,127,224,15,255,171,255,255,128,47,244,0,63,253,0,63,208,0,15,240,0,127,192,0,11,248,0,191,64,0,7,252,0,255,64,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,64,0,3,252,0,191,128,0,7,248,0,63,192,0,15,244,0,63,224,0,31,240,0,15,249,0,191,208,0,7,255,255,255,128,0,1,255,255,254,0,0,0,47,255,224,0,0,0,0,84,0,0,0, + // 0x1edc Ờ + 220,30,29,37,40,30,2,255,0,2,255,64,0,0,0,0,0,0,191,192,0,0,0,0,0,0,47,224,0,0,0,0,0,0,11,244,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,192,0,0,5,165,0,0,127,192,0,2,255,255,244,0,191,128,0,47,255,255,255,64,255,0,0,255,255,255,255,225,254,0,2,255,228,1,191,255,252,0,7,255,0,0,15,255,240,0,15,252,0,0,3,255,128,0,47,240,0,0,1,255,64,0,63,224,0,0,0,255,128,0,63,208,0,0,0,127,192,0,127,192,0,0,0,63,192,0,191,192,0,0,0,63,208,0,191,128,0,0,0,63,208,0,191,128,0,0,0,63,224,0,191,128,0,0,0,63,224,0,191,128,0,0,0,63,208,0,191,128,0,0,0,63,208,0,127,192,0,0,0,63,208,0,127,192,0,0,0,63,192,0,63,208,0,0,0,191,192,0,63,224,0,0,0,255,128,0,31,244,0,0,1,255,0,0,15,252,0,0,3,254,0,0,7,255,0,0,31,252,0,0,2,255,228,1,255,244,0,0,0,191,255,255,255,208,0,0,0,31,255,255,255,0,0,0,0,1,255,255,228,0,0,0,0,0,1,84,0,0,0,0, + // 0x1edd ờ + 221,30,23,30,180,24,2,255,0,255,192,0,0,0,0,63,224,0,0,0,0,15,240,0,0,0,0,3,252,0,0,0,0,0,254,0,0,0,0,0,47,64,2,168,0,0,0,0,3,252,0,0,0,0,3,252,0,6,254,64,7,248,0,191,255,248,15,240,3,255,255,255,127,224,15,255,171,255,255,128,47,244,0,63,253,0,63,208,0,15,240,0,127,192,0,11,248,0,191,64,0,7,252,0,255,64,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,64,0,3,252,0,191,128,0,7,248,0,63,192,0,15,244,0,63,224,0,31,240,0,15,249,0,191,208,0,7,255,255,255,128,0,1,255,255,254,0,0,0,47,255,224,0,0,0,0,84,0,0,0, + // 0x1ede Ở + 222,30,29,40,64,30,2,255,0,0,1,64,0,0,0,0,0,0,31,254,0,0,0,0,0,0,31,255,128,0,0,0,0,0,0,47,192,0,0,0,0,0,0,15,192,0,0,0,0,0,0,47,192,0,0,0,0,0,2,255,0,0,0,0,0,0,3,248,0,0,0,0,0,0,3,240,0,0,0,0,0,0,1,144,0,0,0,0,0,0,0,0,0,0,127,192,0,0,5,165,0,0,127,192,0,2,255,255,244,0,191,128,0,47,255,255,255,64,255,0,0,255,255,255,255,225,254,0,2,255,228,1,191,255,252,0,7,255,0,0,15,255,240,0,15,252,0,0,3,255,128,0,47,240,0,0,1,255,64,0,63,224,0,0,0,255,128,0,63,208,0,0,0,127,192,0,127,192,0,0,0,63,192,0,191,192,0,0,0,63,208,0,191,128,0,0,0,63,208,0,191,128,0,0,0,63,224,0,191,128,0,0,0,63,224,0,191,128,0,0,0,63,208,0,191,128,0,0,0,63,208,0,127,192,0,0,0,63,208,0,127,192,0,0,0,63,192,0,63,208,0,0,0,191,192,0,63,224,0,0,0,255,128,0,31,244,0,0,1,255,0,0,15,252,0,0,3,254,0,0,7,255,0,0,31,252,0,0,2,255,228,1,255,244,0,0,0,191,255,255,255,208,0,0,0,31,255,255,255,0,0,0,0,1,255,255,228,0,0,0,0,0,1,84,0,0,0,0, + // 0x1edf ở + 223,30,23,33,198,24,2,255,0,0,80,0,0,0,0,11,255,64,0,0,0,11,255,192,0,0,0,0,31,224,0,0,0,0,11,224,0,0,0,0,15,208,0,0,0,0,255,128,0,0,0,0,253,0,0,0,0,0,244,0,2,168,0,0,160,0,3,252,0,0,0,0,3,252,0,6,254,64,7,248,0,191,255,248,15,240,3,255,255,255,127,224,15,255,171,255,255,128,47,244,0,63,253,0,63,208,0,15,240,0,127,192,0,11,248,0,191,64,0,7,252,0,255,64,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,64,0,3,252,0,191,128,0,7,248,0,63,192,0,15,244,0,63,224,0,31,240,0,15,249,0,191,208,0,7,255,255,255,128,0,1,255,255,254,0,0,0,47,255,224,0,0,0,0,84,0,0,0, + // 0x1ee0 Ỡ + 224,30,29,36,32,30,2,255,0,0,255,64,31,0,0,0,0,3,255,244,63,0,0,0,0,11,255,255,253,0,0,0,0,15,129,255,248,0,0,0,0,15,0,27,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,192,0,0,5,165,0,0,127,192,0,2,255,255,244,0,191,128,0,47,255,255,255,64,255,0,0,255,255,255,255,225,254,0,2,255,228,1,191,255,252,0,7,255,0,0,15,255,240,0,15,252,0,0,3,255,128,0,47,240,0,0,1,255,64,0,63,224,0,0,0,255,128,0,63,208,0,0,0,127,192,0,127,192,0,0,0,63,192,0,191,192,0,0,0,63,208,0,191,128,0,0,0,63,208,0,191,128,0,0,0,63,224,0,191,128,0,0,0,63,224,0,191,128,0,0,0,63,208,0,191,128,0,0,0,63,208,0,127,192,0,0,0,63,208,0,127,192,0,0,0,63,192,0,63,208,0,0,0,191,192,0,63,224,0,0,0,255,128,0,31,244,0,0,1,255,0,0,15,252,0,0,3,254,0,0,7,255,0,0,31,252,0,0,2,255,228,1,255,244,0,0,0,191,255,255,255,208,0,0,0,31,255,255,255,0,0,0,0,1,255,255,228,0,0,0,0,0,1,84,0,0,0,0, + // 0x1ee1 ỡ + 225,30,23,29,174,24,2,255,0,127,208,11,128,0,1,255,249,31,64,0,3,255,255,255,0,0,7,208,127,253,0,0,11,128,11,244,2,168,0,0,0,0,3,252,0,0,0,0,3,252,0,6,254,64,7,248,0,191,255,248,15,240,3,255,255,255,127,224,15,255,171,255,255,128,47,244,0,63,253,0,63,208,0,15,240,0,127,192,0,11,248,0,191,64,0,7,252,0,255,64,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,64,0,3,252,0,191,128,0,7,248,0,63,192,0,15,244,0,63,224,0,31,240,0,15,249,0,191,208,0,7,255,255,255,128,0,1,255,255,254,0,0,0,47,255,224,0,0,0,0,84,0,0,0, + // 0x1ee2 Ợ + 226,30,29,37,40,30,2,248,0,0,0,0,0,0,127,192,0,0,5,165,0,0,127,192,0,2,255,255,244,0,191,128,0,47,255,255,255,64,255,0,0,255,255,255,255,225,254,0,2,255,228,1,191,255,252,0,7,255,0,0,15,255,240,0,15,252,0,0,3,255,128,0,47,240,0,0,1,255,64,0,63,224,0,0,0,255,128,0,63,208,0,0,0,127,192,0,127,192,0,0,0,63,192,0,191,192,0,0,0,63,208,0,191,128,0,0,0,63,208,0,191,128,0,0,0,63,224,0,191,128,0,0,0,63,224,0,191,128,0,0,0,63,208,0,191,128,0,0,0,63,208,0,127,192,0,0,0,63,208,0,127,192,0,0,0,63,192,0,63,208,0,0,0,191,192,0,63,224,0,0,0,255,128,0,31,244,0,0,1,255,0,0,15,252,0,0,3,254,0,0,7,255,0,0,31,252,0,0,2,255,228,1,255,244,0,0,0,191,255,255,255,208,0,0,0,31,255,255,255,0,0,0,0,1,255,255,228,0,0,0,0,0,1,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,3,252,0,0,0,0,0,0,7,252,0,0,0,0,0,0,7,252,0,0,0,0,0,0,2,244,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x1ee3 ợ + 227,30,23,32,192,24,2,248,0,0,0,0,2,168,0,0,0,0,3,252,0,0,0,0,3,252,0,6,254,64,7,248,0,191,255,248,15,240,3,255,255,255,127,224,15,255,171,255,255,128,47,244,0,63,253,0,63,208,0,15,240,0,127,192,0,11,248,0,191,64,0,7,252,0,255,64,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,0,0,3,252,0,255,64,0,3,252,0,191,128,0,7,248,0,63,192,0,15,244,0,63,224,0,31,240,0,15,249,0,191,208,0,7,255,255,255,128,0,1,255,255,254,0,0,0,47,255,224,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,1,253,0,0,0,0,2,255,0,0,0,0,2,254,0,0,0,0,0,252,0,0,0,0,0,0,0,0,0, + // 0x1ee4 Ụ + 228,30,22,35,210,28,3,248,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,224,0,0,27,255,254,64,0,0,0,21,64,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,63,192,0,0,0,0,127,192,0,0,0,0,63,192,0,0,0,0,47,64,0,0,0,0,0,0,0,0, + // 0x1ee5 ụ + 229,30,18,29,145,24,3,248,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,11,240,0,5,64,0,0,0,0,0,0,0,0,1,144,0,0,0,11,244,0,0,0,15,248,0,0,0,15,248,0,0,0,3,240,0,0,0,0,0,0,0, + // 0x1ee6 Ủ + 230,30,22,39,234,28,3,255,0,0,106,64,0,0,0,0,255,240,0,0,0,0,255,252,0,0,0,0,0,252,0,0,0,0,0,252,0,0,0,0,2,252,0,0,0,0,47,240,0,0,0,0,47,64,0,0,0,0,31,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,64,0,0,31,224,191,128,0,0,31,224,191,128,0,0,47,224,127,192,0,0,47,208,63,192,0,0,63,192,63,224,0,0,191,192,31,248,0,1,255,64,15,255,64,31,255,0,3,255,255,255,252,0,0,255,255,255,224,0,0,27,255,254,64,0,0,0,21,64,0,0, + // 0x1ee7 ủ + 231,30,18,33,165,24,3,255,0,1,64,0,0,0,15,254,0,0,0,15,255,128,0,0,0,47,192,0,0,0,15,192,0,0,0,47,192,0,0,2,255,64,0,0,3,248,0,0,0,2,240,0,0,0,1,144,0,0,0,0,0,0,0,85,0,0,5,80,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,15,240,255,0,0,31,240,255,0,0,31,240,255,0,0,31,240,255,0,0,47,240,255,64,0,63,240,191,192,0,191,240,127,224,7,255,240,63,255,255,239,240,15,255,255,143,240,2,255,253,11,240,0,5,64,0,0, + // 0x1ee8 Ứ + 232,30,29,37,40,31,3,255,0,0,0,255,192,0,0,0,0,0,2,255,0,0,0,0,0,0,7,252,0,0,0,0,0,0,15,240,0,0,0,0,0,0,63,192,0,0,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,191,128,191,64,0,0,31,224,191,64,191,64,0,0,31,224,255,0,191,64,0,0,31,226,254,0,191,64,0,0,31,255,252,0,191,64,0,0,31,255,240,0,191,64,0,0,31,254,64,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,128,0,0,31,224,0,0,127,128,0,0,47,208,0,0,63,192,0,0,63,208,0,0,63,224,0,0,127,192,0,0,31,248,0,1,255,128,0,0,15,255,64,27,255,0,0,0,3,255,255,255,252,0,0,0,0,191,255,255,240,0,0,0,0,11,255,254,64,0,0,0,0,0,21,64,0,0,0,0, + // 0x1ee9 ứ + 233,30,25,30,210,27,3,255,0,0,15,248,0,0,0,0,0,63,240,0,0,0,0,0,127,192,0,0,0,0,0,255,0,0,0,0,0,3,248,0,0,0,0,0,11,224,0,0,106,128,0,0,0,0,0,127,192,0,0,0,0,0,191,128,85,0,0,5,80,255,0,255,0,0,15,241,255,0,255,0,0,15,247,252,0,255,0,0,15,255,244,0,255,0,0,15,255,128,0,255,0,0,15,244,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,31,240,0,0,255,0,0,31,240,0,0,255,0,0,31,240,0,0,255,0,0,47,240,0,0,255,64,0,63,240,0,0,191,192,0,191,240,0,0,127,224,7,255,240,0,0,63,255,255,239,240,0,0,15,255,255,143,240,0,0,2,255,253,11,240,0,0,0,5,64,0,0,0,0, + // 0x1eea Ừ + 234,30,29,37,40,31,3,255,0,31,244,0,0,0,0,0,0,11,252,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,47,192,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,191,128,191,64,0,0,31,224,191,64,191,64,0,0,31,224,255,0,191,64,0,0,31,226,254,0,191,64,0,0,31,255,252,0,191,64,0,0,31,255,240,0,191,64,0,0,31,254,64,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,128,0,0,31,224,0,0,127,128,0,0,47,208,0,0,63,192,0,0,63,208,0,0,63,224,0,0,127,192,0,0,31,248,0,1,255,128,0,0,15,255,64,27,255,0,0,0,3,255,255,255,252,0,0,0,0,191,255,255,240,0,0,0,0,11,255,254,64,0,0,0,0,0,21,64,0,0,0,0, + // 0x1eeb ừ + 235,30,25,30,210,27,3,255,1,255,64,0,0,0,0,0,191,192,0,0,0,0,0,47,224,0,0,0,0,0,11,244,0,0,0,0,0,2,252,0,0,0,0,0,0,126,0,0,106,128,0,0,0,0,0,127,192,0,0,0,0,0,191,128,85,0,0,5,80,255,0,255,0,0,15,241,255,0,255,0,0,15,247,252,0,255,0,0,15,255,244,0,255,0,0,15,255,128,0,255,0,0,15,244,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,31,240,0,0,255,0,0,31,240,0,0,255,0,0,31,240,0,0,255,0,0,47,240,0,0,255,64,0,63,240,0,0,191,192,0,191,240,0,0,127,224,7,255,240,0,0,63,255,255,239,240,0,0,15,255,255,143,240,0,0,2,255,253,11,240,0,0,0,5,64,0,0,0,0, + // 0x1eec Ử + 236,30,29,39,56,31,3,255,0,0,106,64,0,0,0,0,0,0,255,244,0,0,0,0,0,0,255,252,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,189,0,0,0,0,0,0,1,252,0,0,0,0,0,0,31,244,0,0,0,0,0,0,31,128,0,0,0,0,0,0,15,64,0,0,0,0,0,0,5,0,0,0,127,192,0,0,0,0,0,0,191,128,191,64,0,0,31,224,191,64,191,64,0,0,31,224,255,0,191,64,0,0,31,226,254,0,191,64,0,0,31,255,252,0,191,64,0,0,31,255,240,0,191,64,0,0,31,254,64,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,128,0,0,31,224,0,0,127,128,0,0,47,208,0,0,63,192,0,0,63,208,0,0,63,224,0,0,127,192,0,0,31,248,0,1,255,128,0,0,15,255,64,27,255,0,0,0,3,255,255,255,252,0,0,0,0,191,255,255,240,0,0,0,0,11,255,254,64,0,0,0,0,0,21,64,0,0,0,0, + // 0x1eed ử + 237,30,25,33,231,27,3,255,0,1,64,0,0,0,0,0,15,254,0,0,0,0,0,15,255,128,0,0,0,0,0,31,192,0,0,0,0,0,15,192,0,0,0,0,0,31,192,0,0,0,0,1,255,64,0,0,0,0,2,248,0,0,0,0,0,2,240,0,0,106,128,0,1,160,0,0,127,192,0,0,0,0,0,191,128,85,0,0,5,80,255,0,255,0,0,15,241,255,0,255,0,0,15,247,252,0,255,0,0,15,255,244,0,255,0,0,15,255,128,0,255,0,0,15,244,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,31,240,0,0,255,0,0,31,240,0,0,255,0,0,31,240,0,0,255,0,0,47,240,0,0,255,64,0,63,240,0,0,191,192,0,191,240,0,0,127,224,7,255,240,0,0,63,255,255,239,240,0,0,15,255,255,143,240,0,0,2,255,253,11,240,0,0,0,5,64,0,0,0,0, + // 0x1eee Ữ + 238,30,29,36,32,31,3,255,0,11,248,0,240,0,0,0,0,63,255,67,240,0,0,0,0,191,255,255,208,0,0,0,0,248,11,255,192,0,0,0,0,240,1,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,191,128,191,64,0,0,31,224,191,64,191,64,0,0,31,224,255,0,191,64,0,0,31,226,254,0,191,64,0,0,31,255,252,0,191,64,0,0,31,255,240,0,191,64,0,0,31,254,64,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,128,0,0,31,224,0,0,127,128,0,0,47,208,0,0,63,192,0,0,63,208,0,0,63,224,0,0,127,192,0,0,31,248,0,1,255,128,0,0,15,255,64,27,255,0,0,0,3,255,255,255,252,0,0,0,0,191,255,255,240,0,0,0,0,11,255,254,64,0,0,0,0,0,21,64,0,0,0,0, + // 0x1eef ữ + 239,30,25,29,203,27,3,255,0,191,64,31,0,0,0,3,255,244,63,0,0,0,11,255,255,253,0,0,0,15,129,255,248,0,0,0,15,0,27,224,0,106,128,0,0,0,0,0,127,192,0,0,0,0,0,191,128,85,0,0,5,80,255,0,255,0,0,15,241,255,0,255,0,0,15,247,252,0,255,0,0,15,255,244,0,255,0,0,15,255,128,0,255,0,0,15,244,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,31,240,0,0,255,0,0,31,240,0,0,255,0,0,31,240,0,0,255,0,0,47,240,0,0,255,64,0,63,240,0,0,191,192,0,191,240,0,0,127,224,7,255,240,0,0,63,255,255,239,240,0,0,15,255,255,143,240,0,0,2,255,253,11,240,0,0,0,5,64,0,0,0,0, + // 0x1ef0 Ự + 240,30,29,37,40,31,3,248,0,0,0,0,0,0,127,192,0,0,0,0,0,0,191,128,191,64,0,0,31,224,191,64,191,64,0,0,31,224,255,0,191,64,0,0,31,226,254,0,191,64,0,0,31,255,252,0,191,64,0,0,31,255,240,0,191,64,0,0,31,254,64,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,64,0,0,31,224,0,0,191,128,0,0,31,224,0,0,127,128,0,0,47,208,0,0,63,192,0,0,63,208,0,0,63,224,0,0,127,192,0,0,31,248,0,1,255,128,0,0,15,255,64,27,255,0,0,0,3,255,255,255,252,0,0,0,0,191,255,255,240,0,0,0,0,11,255,254,64,0,0,0,0,0,21,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,208,0,0,0,0,0,0,63,192,0,0,0,0,0,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x1ef1 ự + 241,30,25,32,224,27,3,248,0,0,0,0,0,106,128,0,0,0,0,0,127,192,0,0,0,0,0,191,128,85,0,0,5,80,255,0,255,0,0,15,241,255,0,255,0,0,15,247,252,0,255,0,0,15,255,244,0,255,0,0,15,255,128,0,255,0,0,15,244,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,15,240,0,0,255,0,0,31,240,0,0,255,0,0,31,240,0,0,255,0,0,31,240,0,0,255,0,0,47,240,0,0,255,64,0,63,240,0,0,191,192,0,191,240,0,0,127,224,7,255,240,0,0,63,255,255,239,240,0,0,15,255,255,143,240,0,0,2,255,253,11,240,0,0,0,5,64,0,0,0,0,0,0,0,0,0,0,0,0,1,144,0,0,0,0,0,11,244,0,0,0,0,0,15,248,0,0,0,0,0,15,248,0,0,0,0,0,3,240,0,0,0,0,0,0,0,0,0,0,0, + // 0x1ef2 Ỳ + 242,30,22,36,216,22,0,0,0,15,248,0,0,0,0,7,252,0,0,0,0,1,255,0,0,0,0,0,127,128,0,0,0,0,31,208,0,0,0,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,192,0,0,47,240,63,208,0,0,63,208,47,240,0,0,191,128,15,244,0,0,255,0,11,252,0,2,254,0,3,253,0,3,252,0,1,255,0,11,248,0,0,255,64,31,240,0,0,127,192,63,208,0,0,63,208,127,192,0,0,31,240,255,64,0,0,11,249,255,0,0,0,3,255,253,0,0,0,2,255,248,0,0,0,0,255,240,0,0,0,0,191,224,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x1ef3 ỳ + 243,30,20,39,195,20,0,246,0,127,224,0,0,0,31,240,0,0,0,7,252,0,0,0,1,254,0,0,0,0,127,64,0,0,0,31,192,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,85,191,128,0,2,254,63,192,0,3,253,63,208,0,7,252,31,240,0,11,248,15,240,0,15,240,11,248,0,31,240,3,252,0,47,208,3,253,0,63,192,1,254,0,127,128,0,255,0,255,64,0,191,64,255,0,0,63,129,254,0,0,63,195,252,0,0,31,211,252,0,0,15,231,244,0,0,11,251,240,0,0,3,255,224,0,0,3,255,192,0,0,1,255,192,0,0,0,255,64,0,0,0,255,0,0,0,1,254,0,0,0,2,253,0,0,0,3,252,0,0,0,15,244,0,0,16,127,240,0,0,127,255,192,0,0,127,255,64,0,0,127,248,0,0,0,0,0,0,0,0, + // 0x1ef4 Ỵ + 244,30,22,35,210,22,0,248,191,192,0,0,47,240,63,208,0,0,63,208,47,240,0,0,191,128,15,244,0,0,255,0,11,252,0,2,254,0,3,253,0,3,252,0,1,255,0,11,248,0,0,255,64,31,240,0,0,127,192,63,208,0,0,63,208,127,192,0,0,31,240,255,64,0,0,11,249,255,0,0,0,3,255,253,0,0,0,2,255,248,0,0,0,0,255,240,0,0,0,0,191,224,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,47,128,0,0,0,0,0,0,0,0, + // 0x1ef5 ỵ + 245,30,20,31,155,20,0,246,85,0,0,0,85,191,128,0,2,254,63,192,0,3,253,63,208,0,7,252,31,240,0,11,248,15,240,0,15,240,11,248,0,31,240,3,252,0,47,208,3,253,0,63,192,1,254,0,127,128,0,255,0,255,64,0,191,64,255,0,0,63,129,254,0,0,63,195,252,0,0,31,211,252,0,0,15,231,244,0,0,11,251,240,0,0,3,255,224,0,0,3,255,192,0,0,1,255,192,0,0,0,255,64,0,0,0,255,0,0,0,1,254,0,0,0,2,253,6,64,0,3,252,47,208,0,15,244,63,224,16,127,240,63,224,127,255,192,15,192,127,255,64,0,0,127,248,0,0,0,0,0,0,0,0, + // 0x1ef6 Ỷ + 246,30,22,38,228,22,0,0,0,0,106,64,0,0,0,0,255,244,0,0,0,0,255,252,0,0,0,0,0,253,0,0,0,0,0,253,0,0,0,0,2,252,0,0,0,0,31,244,0,0,0,0,31,128,0,0,0,0,31,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,191,192,0,0,47,240,63,208,0,0,63,208,47,240,0,0,191,128,15,244,0,0,255,0,11,252,0,2,254,0,3,253,0,3,252,0,1,255,0,11,248,0,0,255,64,31,240,0,0,127,192,63,208,0,0,63,208,127,192,0,0,31,240,255,64,0,0,11,249,255,0,0,0,3,255,253,0,0,0,2,255,248,0,0,0,0,255,240,0,0,0,0,191,224,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x1ef7 ỷ + 247,30,20,42,210,20,0,246,0,0,80,0,0,0,3,255,128,0,0,3,255,240,0,0,0,7,240,0,0,0,3,240,0,0,0,7,240,0,0,0,127,208,0,0,0,190,0,0,0,0,124,0,0,0,0,40,0,0,0,0,0,0,0,85,0,0,0,85,191,128,0,2,254,63,192,0,3,253,63,208,0,7,252,31,240,0,11,248,15,240,0,15,240,11,248,0,31,240,3,252,0,47,208,3,253,0,63,192,1,254,0,127,128,0,255,0,255,64,0,191,64,255,0,0,63,129,254,0,0,63,195,252,0,0,31,211,252,0,0,15,231,244,0,0,11,251,240,0,0,3,255,224,0,0,3,255,192,0,0,1,255,192,0,0,0,255,64,0,0,0,255,0,0,0,1,254,0,0,0,2,253,0,0,0,3,252,0,0,0,15,244,0,0,16,127,240,0,0,127,255,192,0,0,127,255,64,0,0,127,248,0,0,0,0,0,0,0,0, + // 0x1ef8 Ỹ + 248,30,22,35,210,22,0,0,0,11,248,0,240,0,0,63,255,67,240,0,0,191,255,255,224,0,0,248,11,255,192,0,0,240,1,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,192,0,0,47,240,63,208,0,0,63,208,47,240,0,0,191,128,15,244,0,0,255,0,11,252,0,2,254,0,3,253,0,3,252,0,1,255,0,11,248,0,0,255,64,31,240,0,0,127,192,63,208,0,0,63,208,127,192,0,0,31,240,255,64,0,0,11,249,255,0,0,0,3,255,253,0,0,0,2,255,248,0,0,0,0,255,240,0,0,0,0,191,224,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0, + // 0x1ef9 ỹ + 249,30,20,38,190,20,0,246,0,47,224,3,192,0,255,253,15,192,2,255,255,255,64,3,224,63,255,0,3,192,6,248,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,85,191,128,0,2,254,63,192,0,3,253,63,208,0,7,252,31,240,0,11,248,15,240,0,15,240,11,248,0,31,240,3,252,0,47,208,3,253,0,63,192,1,254,0,127,128,0,255,0,255,64,0,191,64,255,0,0,63,129,254,0,0,63,195,252,0,0,31,211,252,0,0,15,231,244,0,0,11,251,240,0,0,3,255,224,0,0,3,255,192,0,0,1,255,192,0,0,0,255,64,0,0,0,255,0,0,0,1,254,0,0,0,2,253,0,0,0,3,252,0,0,0,15,244,0,0,16,127,240,0,0,127,255,192,0,0,127,255,64,0,0,127,248,0,0,0,0,0,0,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_29.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_29.cpp new file mode 100644 index 0000000000..ff7b51c9ee --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_29.cpp @@ -0,0 +1,416 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium 40pt, capital 'A' height: 29px, width: 100%, range: 0x0020-0x00ff +extern const uint8_t NotoSans_Medium_29[25485] = { + 130,29,32,0,255,0,38,246, // unifont_t + // 0x0020 " " + 0,0,0,10,0,0, + // 0x0021 ! + 5,30,60,11,3,255,170,128,255,192,255,192,255,192,255,192,255,128,191,128,191,128,191,128,191,128,191,64,127,64,127,64,127,64,127,64,127,0,63,0,63,0,63,0,63,0,42,0,0,0,0,0,0,0,127,64,255,192,255,192,255,192,191,128,25,0, + // 0x0022 " + 13,11,44,17,2,18,42,64,106,64,127,192,191,64,63,128,191,64,63,128,191,0,63,128,127,0,63,64,127,0,63,64,127,0,63,64,127,0,63,64,63,0,47,0,63,0,31,0,62,0, + // 0x0023 # + 24,29,174,26,1,0,0,0,42,0,26,0,0,0,127,0,63,64,0,0,190,0,63,0,0,0,253,0,127,0,0,0,253,0,126,0,0,0,252,0,190,0,0,1,252,0,253,0,0,2,248,0,252,0,0,3,248,1,252,0,47,255,255,255,255,255,47,255,255,255,255,255,31,255,255,255,255,254,0,7,224,3,240,0,0,11,224,7,240,0,0,15,208,7,240,0,0,15,192,11,224,0,0,31,192,15,208,0,85,111,213,95,213,80,255,255,255,255,255,244,255,255,255,255,255,244,255,255,255,255,255,244,0,127,0,63,64,0,0,127,0,63,0,0,0,190,0,127,0,0,0,253,0,127,0,0,0,252,0,190,0,0,0,252,0,253,0,0,1,252,0,252,0,0,2,248,0,252,0,0, + // 0x0024 $ + 19,34,170,23,2,253,0,0,84,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,47,255,233,0,2,255,255,255,224,15,255,255,255,224,63,254,254,255,208,127,208,248,6,192,191,128,248,0,0,191,64,248,0,0,191,128,248,0,0,191,192,248,0,0,63,248,248,0,0,47,255,248,0,0,7,255,255,64,0,0,191,255,248,0,0,11,255,255,128,0,0,255,255,224,0,0,249,191,240,0,0,248,15,248,0,0,248,11,252,0,0,248,7,252,0,0,248,11,248,164,0,248,31,244,191,233,254,255,240,191,255,255,255,192,191,255,255,254,0,6,255,255,144,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,80,0,0, + // 0x0025 % + 31,30,240,34,2,255,2,254,64,0,0,42,64,0,15,255,224,0,0,127,0,0,63,255,248,0,0,254,0,0,127,131,252,0,2,252,0,0,191,0,253,0,3,244,0,0,254,0,254,0,11,240,0,0,253,0,191,0,15,208,0,0,253,0,127,0,63,192,0,0,252,0,127,0,127,0,0,0,252,0,127,0,254,0,0,0,253,0,127,1,252,0,0,0,253,0,191,3,248,5,80,0,254,0,254,11,240,127,253,0,191,0,253,15,209,255,255,64,63,131,252,47,195,254,191,192,47,255,248,63,71,244,15,224,15,255,224,255,11,240,11,240,1,254,65,253,15,224,7,240,0,0,3,248,15,224,7,240,0,0,7,240,15,224,3,244,0,0,15,224,15,208,3,244,0,0,47,192,15,224,3,244,0,0,63,64,15,224,7,240,0,0,191,0,15,224,7,240,0,0,253,0,11,240,11,240,0,2,252,0,3,244,31,224,0,7,244,0,2,254,191,192,0,15,224,0,0,255,255,64,0,31,192,0,0,63,253,0,0,0,0,0,0,1,64,0, + // 0x0026 & + 27,30,210,29,2,255,0,6,255,144,0,0,0,0,63,255,253,0,0,0,0,255,255,255,64,0,0,3,255,150,255,192,0,0,3,253,0,127,208,0,0,7,252,0,63,208,0,0,7,248,0,47,208,0,0,7,252,0,63,208,0,0,3,252,0,127,192,0,0,2,254,0,255,128,0,0,0,255,71,255,0,0,0,0,127,255,252,0,0,0,0,47,255,224,0,0,0,0,47,255,64,0,0,0,1,255,255,64,0,26,144,7,255,255,224,0,63,224,31,253,63,248,0,63,192,63,240,15,254,0,127,192,191,192,3,255,128,255,64,255,128,0,255,225,255,0,255,64,0,47,251,253,0,255,64,0,11,255,252,0,255,128,0,2,255,240,0,255,192,0,0,255,240,0,191,240,0,11,255,252,0,63,254,85,191,255,255,0,31,255,255,255,242,255,192,7,255,255,255,128,191,240,0,127,255,248,0,47,252,0,1,84,0,0,0,0, + // 0x0027 ' + 5,11,22,9,2,18,42,64,127,192,63,128,63,128,63,128,63,64,63,64,63,64,63,64,47,0,31,0, + // 0x0028 ( + 10,36,108,12,1,249,0,6,160,0,31,224,0,63,192,0,191,64,0,255,0,2,253,0,3,252,0,11,248,0,15,240,0,15,240,0,31,224,0,47,208,0,63,192,0,63,192,0,63,192,0,127,128,0,127,128,0,127,128,0,127,128,0,127,128,0,127,192,0,63,192,0,63,192,0,63,192,0,47,208,0,31,224,0,15,240,0,15,240,0,11,248,0,3,252,0,2,253,0,0,255,0,0,191,64,0,63,192,0,15,224,0,1,80, + // 0x0029 ) + 10,36,108,12,1,249,106,0,0,63,192,0,31,224,0,15,240,0,7,248,0,3,252,0,1,254,0,0,255,0,0,191,64,0,127,128,0,63,192,0,63,192,0,47,208,0,47,224,0,31,224,0,31,240,0,31,240,0,15,240,0,15,240,0,31,240,0,31,240,0,31,224,0,47,224,0,47,208,0,63,192,0,63,192,0,127,128,0,191,64,0,255,0,1,254,0,3,252,0,7,248,0,15,240,0,47,208,0,63,128,0,21,0,0, + // 0x002a * + 20,19,95,22,1,12,0,0,85,0,0,0,0,255,0,0,0,0,255,0,0,0,0,254,0,0,0,0,254,0,0,0,0,190,0,0,57,0,189,0,108,63,244,125,47,252,63,255,255,255,252,127,255,255,255,253,1,91,255,165,64,0,3,255,192,0,0,15,239,224,0,0,47,199,244,0,0,127,195,252,0,0,255,65,255,0,2,255,0,255,128,0,189,0,126,0,0,8,0,32,0, + // 0x002b + + 19,20,100,23,2,4,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,170,171,254,170,168,255,255,255,255,252,255,255,255,255,252,170,170,254,170,164,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,168,0,0, + // 0x002c , + 7,11,22,11,1,250,6,168,11,252,15,248,15,240,15,240,31,224,47,192,63,128,63,64,127,0,0,0, + // 0x002d - + 11,5,15,13,1,8,106,170,160,191,255,244,191,255,244,191,255,244,0,0,0, + // 0x002e . + 5,6,12,11,3,255,127,64,255,192,255,192,255,192,191,128,25,0, + // 0x002f / + 15,29,116,15,0,0,0,0,2,168,0,0,7,248,0,0,15,244,0,0,15,240,0,0,47,224,0,0,63,192,0,0,127,192,0,0,191,64,0,0,255,0,0,1,254,0,0,3,253,0,0,3,252,0,0,7,248,0,0,15,240,0,0,15,240,0,0,47,208,0,0,63,192,0,0,127,128,0,0,191,64,0,0,255,0,0,1,254,0,0,3,252,0,0,3,252,0,0,11,244,0,0,15,240,0,0,31,224,0,0,47,208,0,0,63,192,0,0,127,128,0,0, + // 0x0030 0 + 19,30,150,23,2,255,0,11,255,64,0,0,191,255,244,0,3,255,255,254,0,11,255,171,255,64,31,248,0,255,192,63,224,0,63,208,63,192,0,31,240,127,192,0,15,240,191,128,0,15,244,255,64,0,11,248,255,64,0,7,252,255,0,0,7,252,255,0,0,7,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,7,252,255,0,0,7,252,255,0,0,7,252,255,64,0,11,248,191,128,0,11,248,127,128,0,15,244,63,192,0,31,240,63,208,0,47,240,31,240,0,127,208,15,254,70,255,192,3,255,255,255,0,0,255,255,252,0,0,47,255,224,0,0,0,84,0,0, + // 0x0031 1 + 12,29,87,23,3,0,0,0,169,0,3,255,0,31,255,0,191,255,2,255,255,15,253,255,127,240,255,127,193,255,30,1,255,4,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255, + // 0x0032 2 + 19,29,145,23,2,0,0,27,254,128,0,2,255,255,248,0,31,255,255,255,0,191,255,175,255,192,127,208,0,255,208,30,0,0,63,224,0,0,0,47,240,0,0,0,31,240,0,0,0,31,240,0,0,0,31,240,0,0,0,63,224,0,0,0,63,192,0,0,0,255,128,0,0,1,255,0,0,0,7,253,0,0,0,15,248,0,0,0,63,224,0,0,0,255,192,0,0,3,255,0,0,0,15,252,0,0,0,63,240,0,0,0,255,192,0,0,3,254,0,0,0,15,248,0,0,0,63,224,0,0,0,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252, + // 0x0033 3 + 20,30,150,23,1,255,0,27,255,160,0,2,255,255,254,0,31,255,255,255,192,63,255,171,255,240,15,208,0,47,244,6,0,0,15,248,0,0,0,11,252,0,0,0,7,252,0,0,0,7,252,0,0,0,15,248,0,0,0,31,240,0,0,0,191,208,0,21,175,255,64,0,63,255,244,0,0,63,255,249,0,0,63,255,255,192,0,0,1,191,244,0,0,0,15,252,0,0,0,3,253,0,0,0,3,254,0,0,0,2,255,0,0,0,2,255,0,0,0,3,254,0,0,0,7,253,96,0,0,31,252,127,148,5,255,244,127,255,255,255,224,127,255,255,255,64,11,255,255,244,0,0,5,84,0,0, + // 0x0034 4 + 21,29,174,23,1,0,0,0,0,42,128,0,0,0,0,255,192,0,0,0,2,255,192,0,0,0,7,255,192,0,0,0,15,255,192,0,0,0,47,255,192,0,0,0,127,127,192,0,0,0,255,63,192,0,0,2,252,63,192,0,0,7,244,63,192,0,0,15,224,63,192,0,0,63,192,63,192,0,0,127,64,63,192,0,0,254,0,63,192,0,3,252,0,63,192,0,11,244,0,63,192,0,31,224,0,63,192,0,63,192,0,63,192,0,191,0,0,63,192,0,255,255,255,255,255,192,255,255,255,255,255,192,255,255,255,255,255,192,170,170,170,191,234,128,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0, + // 0x0035 5 + 19,30,150,23,2,255,10,170,170,170,64,15,255,255,255,192,15,255,255,255,192,15,255,255,255,192,15,240,0,0,0,31,224,0,0,0,31,224,0,0,0,31,208,0,0,0,47,208,0,0,0,47,208,0,0,0,47,192,0,0,0,63,218,170,64,0,63,255,255,248,0,63,255,255,255,0,47,255,255,255,192,1,0,1,255,224,0,0,0,63,240,0,0,0,15,244,0,0,0,15,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,15,244,0,0,0,47,240,144,0,0,191,224,191,144,27,255,192,191,255,255,255,0,191,255,255,252,0,27,255,255,144,0,0,21,80,0,0, + // 0x0036 6 + 19,30,150,23,2,255,0,0,27,255,128,0,7,255,255,192,0,47,255,255,192,0,255,254,170,192,3,255,128,0,0,11,253,0,0,0,15,244,0,0,0,47,224,0,0,0,63,192,0,0,0,63,192,0,0,0,127,128,0,0,0,191,65,255,228,0,255,79,255,255,0,255,127,255,255,192,255,255,85,255,240,255,244,0,47,244,255,192,0,15,248,255,128,0,7,252,255,64,0,3,252,255,64,0,3,252,191,64,0,3,252,191,128,0,3,252,127,192,0,7,252,63,224,0,15,248,31,244,0,47,240,15,254,65,255,224,3,255,255,255,192,0,255,255,255,0,0,31,255,244,0,0,0,85,0,0, + // 0x0037 7 + 20,29,145,23,1,0,42,170,170,170,170,127,255,255,255,255,127,255,255,255,255,127,255,255,255,255,0,0,0,2,254,0,0,0,3,252,0,0,0,7,252,0,0,0,15,244,0,0,0,31,240,0,0,0,63,208,0,0,0,127,192,0,0,0,255,128,0,0,1,255,0,0,0,2,254,0,0,0,3,252,0,0,0,11,252,0,0,0,15,244,0,0,0,47,240,0,0,0,63,208,0,0,0,127,192,0,0,0,255,128,0,0,1,255,0,0,0,3,254,0,0,0,7,252,0,0,0,15,252,0,0,0,15,244,0,0,0,47,240,0,0,0,63,208,0,0,0,191,192,0,0, + // 0x0038 8 + 19,30,150,23,2,255,0,27,255,144,0,1,255,255,253,0,7,255,255,255,64,31,254,90,255,192,63,240,0,127,224,63,192,0,31,240,127,192,0,15,240,63,192,0,15,240,63,192,0,15,240,63,224,0,47,224,31,248,0,191,192,11,255,71,255,0,2,255,255,252,0,0,127,255,208,0,0,127,255,224,0,2,255,255,253,0,15,254,11,255,128,63,240,0,191,224,127,192,0,31,244,255,64,0,11,248,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,7,252,191,192,0,15,248,127,244,0,127,240,47,255,255,255,192,7,255,255,255,0,0,191,255,244,0,0,1,84,0,0, + // 0x0039 9 + 19,30,150,23,2,255,0,27,254,64,0,1,255,255,244,0,7,255,255,253,0,31,255,175,255,64,63,240,0,255,192,127,192,0,63,224,255,128,0,31,240,255,0,0,15,244,255,0,0,11,248,255,0,0,7,252,255,0,0,7,252,255,0,0,7,252,255,64,0,15,252,191,192,0,47,252,63,244,1,255,252,47,255,255,251,252,11,255,255,215,252,1,255,255,71,248,0,6,148,11,244,0,0,0,15,244,0,0,0,15,240,0,0,0,31,224,0,0,0,63,192,0,0,0,255,128,0,0,3,255,0,4,0,111,253,0,15,255,255,244,0,15,255,255,192,0,15,255,249,0,0,1,85,0,0,0, + // 0x003a : + 5,23,46,11,3,255,127,64,255,192,255,192,255,192,255,128,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,64,255,192,255,192,255,192,191,128,25,0, + // 0x003b ; + 7,28,56,11,1,250,7,240,15,252,31,252,31,252,15,248,2,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,164,15,248,15,244,31,240,31,224,47,208,63,192,63,64,127,0,190,0,0,0, + // 0x003c < + 19,21,105,23,2,4,0,0,0,0,4,0,0,0,0,124,0,0,0,7,252,0,0,0,127,252,0,0,7,255,224,0,0,127,254,0,0,7,255,224,0,0,127,254,0,0,7,255,208,0,0,127,253,0,0,0,255,208,0,0,0,255,224,0,0,0,127,255,64,0,0,7,255,248,0,0,0,47,255,144,0,0,2,255,253,0,0,0,31,255,224,0,0,1,191,252,0,0,0,11,252,0,0,0,0,124,0,0,0,0,4, + // 0x003d = + 19,12,60,23,2,8,170,170,170,170,164,255,255,255,255,248,255,255,255,255,248,170,170,170,170,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,248,255,255,255,255,248,255,255,255,255,248,85,85,85,85,84, + // 0x003e > + 19,20,100,23,2,4,224,0,0,0,0,254,0,0,0,0,255,224,0,0,0,127,254,0,0,0,6,255,224,0,0,0,47,254,0,0,0,2,255,224,0,0,0,47,255,64,0,0,2,255,244,0,0,0,31,252,0,0,0,47,252,0,0,7,255,244,0,0,191,254,64,0,27,255,224,0,1,255,253,0,0,47,255,208,0,0,255,248,0,0,0,255,128,0,0,0,244,0,0,0,0,64,0,0,0,0, + // 0x003f ? + 17,30,150,18,0,255,0,111,254,64,0,31,255,255,240,0,127,255,255,252,0,63,254,175,255,0,46,64,1,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,127,128,0,0,0,255,64,0,0,2,255,0,0,0,11,253,0,0,0,47,244,0,0,0,255,208,0,0,3,255,64,0,0,11,252,0,0,0,15,240,0,0,0,31,208,0,0,0,31,192,0,0,0,31,192,0,0,0,10,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,208,0,0,0,63,240,0,0,0,63,240,0,0,0,63,240,0,0,0,47,224,0,0,0,6,64,0,0, + // 0x0040 @ + 32,33,8,36,2,252,0,0,0,5,165,0,0,0,0,0,6,255,255,249,0,0,0,0,127,255,255,255,208,0,0,3,255,250,86,255,248,0,0,31,253,0,0,11,255,0,0,127,208,0,0,0,191,128,0,255,0,0,0,0,47,208,3,252,0,0,0,0,11,240,7,240,0,27,254,144,3,248,15,224,0,255,255,252,2,252,31,192,7,255,255,252,0,252,63,128,15,244,2,252,0,253,63,0,63,192,1,252,0,190,127,0,127,64,1,252,0,190,191,0,191,0,2,252,0,190,190,0,254,0,2,252,0,190,190,0,254,0,2,252,0,190,254,0,254,0,3,252,0,253,190,0,254,0,3,252,0,252,190,0,191,0,7,252,1,252,191,0,127,64,15,252,3,244,127,0,63,224,127,190,31,240,63,0,31,255,253,63,255,208,63,128,7,255,244,31,255,64,47,192,0,106,64,2,164,0,15,240,0,0,0,0,0,0,7,248,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,255,224,0,0,27,0,0,0,47,255,169,107,255,0,0,0,7,255,255,255,255,0,0,0,0,111,255,255,228,0,0,0,0,0,86,84,0,0,0, + // 0x0041 A + 26,29,203,26,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x0042 B + 20,29,145,26,4,0,170,170,165,0,0,255,255,255,249,0,255,255,255,255,192,255,255,255,255,240,255,0,1,191,248,255,0,0,31,252,255,0,0,11,252,255,0,0,7,252,255,0,0,7,252,255,0,0,7,252,255,0,0,15,248,255,0,0,47,240,255,170,171,255,192,255,255,255,249,0,255,255,255,254,0,255,255,255,255,224,255,0,0,111,248,255,0,0,11,253,255,0,0,3,255,255,0,0,2,255,255,0,0,1,255,255,0,0,2,255,255,0,0,3,255,255,0,0,7,254,255,0,0,31,253,255,170,171,255,248,255,255,255,255,224,255,255,255,255,64,255,255,255,228,0, + // 0x0043 C + 22,30,180,25,2,255,0,0,27,255,228,0,0,2,255,255,255,208,0,31,255,255,255,224,0,127,255,255,255,208,1,255,244,0,27,192,3,255,128,0,0,0,11,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,63,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,127,208,0,0,0,0,63,224,0,0,0,0,63,240,0,0,0,0,47,244,0,0,0,0,15,252,0,0,0,0,11,255,0,0,0,0,3,255,208,0,0,64,1,255,254,85,175,192,0,127,255,255,255,192,0,15,255,255,255,192,0,1,191,255,254,64,0,0,1,85,0,0, + // 0x0044 D + 23,29,174,29,4,0,170,170,165,0,0,0,255,255,255,248,0,0,255,255,255,255,192,0,255,255,255,255,244,0,255,0,1,191,253,0,255,0,0,11,255,64,255,0,0,1,255,192,255,0,0,0,191,224,255,0,0,0,63,240,255,0,0,0,31,244,255,0,0,0,15,248,255,0,0,0,15,248,255,0,0,0,11,252,255,0,0,0,11,252,255,0,0,0,11,252,255,0,0,0,11,252,255,0,0,0,11,252,255,0,0,0,15,248,255,0,0,0,15,248,255,0,0,0,31,244,255,0,0,0,63,240,255,0,0,0,127,224,255,0,0,0,255,192,255,0,0,7,255,64,255,0,0,127,254,0,255,170,191,255,248,0,255,255,255,255,208,0,255,255,255,253,0,0,255,255,254,64,0,0, + // 0x0045 E + 16,29,116,22,4,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x0046 F + 16,29,116,21,4,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,170,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0, + // 0x0047 G + 24,30,180,29,2,255,0,0,6,255,250,64,0,1,191,255,255,249,0,11,255,255,255,253,0,63,255,255,255,252,0,255,249,0,1,184,3,255,192,0,0,0,11,255,0,0,0,0,15,252,0,0,0,0,47,244,0,0,0,0,63,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,5,85,85,191,192,0,31,255,255,191,192,0,31,255,255,127,192,0,31,255,255,127,192,0,5,86,255,127,208,0,0,0,255,63,224,0,0,0,255,63,240,0,0,0,255,31,244,0,0,0,255,15,252,0,0,0,255,11,255,0,0,0,255,3,255,208,0,0,255,0,255,254,85,91,255,0,63,255,255,255,255,0,11,255,255,255,255,0,0,191,255,255,228,0,0,0,85,64,0, + // 0x0048 H + 22,29,174,30,4,0,170,0,0,0,10,160,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,234,170,170,191,240,255,255,255,255,255,240,255,255,255,255,255,240,255,255,255,255,255,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240, + // 0x0049 I + 12,29,87,14,1,0,106,170,169,127,255,254,127,255,254,11,255,228,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,1,255,128,127,255,253,127,255,254,127,255,254, + // 0x004a J + 11,37,111,12,253,248,0,2,168,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,11,252,0,15,248,0,63,240,255,255,224,255,255,192,255,254,0,111,160,0, + // 0x004b K + 21,29,174,25,4,0,170,0,0,0,170,64,255,0,0,3,255,0,255,0,0,15,252,0,255,0,0,47,244,0,255,0,0,127,208,0,255,0,1,255,128,0,255,0,3,254,0,0,255,0,15,252,0,0,255,0,63,240,0,0,255,0,255,192,0,0,255,2,255,0,0,0,255,11,253,0,0,0,255,31,244,0,0,0,255,127,244,0,0,0,255,255,252,0,0,0,255,255,255,0,0,0,255,242,255,128,0,0,255,192,255,208,0,0,255,0,63,240,0,0,255,0,31,248,0,0,255,0,15,253,0,0,255,0,3,255,0,0,255,0,1,255,128,0,255,0,0,191,208,0,255,0,0,63,240,0,255,0,0,15,252,0,255,0,0,11,254,0,255,0,0,3,255,0,255,0,0,0,255,192, + // 0x004c L + 17,29,145,21,4,0,170,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,234,170,170,0,255,255,255,255,64,255,255,255,255,64,255,255,255,255,64, + // 0x004d M + 29,29,232,37,4,0,170,160,0,0,0,2,170,128,255,244,0,0,0,11,255,192,255,248,0,0,0,15,255,192,255,252,0,0,0,31,255,192,255,253,0,0,0,47,255,192,254,255,0,0,0,63,191,192,254,255,0,0,0,127,127,192,254,127,64,0,0,255,63,192,254,63,192,0,0,253,63,192,254,47,192,0,2,252,63,192,254,31,224,0,3,248,63,192,254,15,240,0,7,244,127,192,254,11,244,0,11,240,127,192,254,7,248,0,15,224,127,192,254,3,252,0,31,208,127,192,254,2,253,0,63,192,127,192,254,0,254,0,63,128,127,192,254,0,255,0,191,0,127,192,254,0,191,64,255,0,127,192,254,0,63,193,253,0,127,192,254,0,63,194,252,0,127,192,254,0,31,211,248,0,127,192,254,0,15,247,244,0,127,192,254,0,11,255,240,0,127,192,254,0,7,255,224,0,127,192,254,0,3,255,192,0,127,192,254,0,2,255,192,0,127,192,254,0,1,255,128,0,127,192,254,0,0,255,0,0,127,192, + // 0x004e N + 23,29,174,31,4,0,170,128,0,0,1,168,255,224,0,0,3,252,255,244,0,0,3,252,255,252,0,0,3,252,255,254,0,0,3,252,255,255,0,0,3,252,254,255,192,0,3,252,253,127,208,0,3,252,254,63,240,0,3,252,254,15,248,0,3,252,254,11,253,0,3,252,254,3,255,0,3,252,254,1,255,128,3,252,254,0,191,192,3,252,254,0,63,240,3,252,254,0,31,244,3,252,254,0,15,252,2,252,254,0,3,254,2,252,254,0,2,255,66,252,254,0,0,255,194,252,254,0,0,127,226,252,254,0,0,47,242,252,254,0,0,15,254,252,254,0,0,7,255,252,254,0,0,3,255,252,254,0,0,0,255,252,254,0,0,0,191,252,254,0,0,0,63,252,254,0,0,0,31,252, + // 0x004f O + 27,30,210,31,2,255,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x0050 P + 19,29,145,24,4,0,170,170,148,0,0,255,255,255,224,0,255,255,255,254,0,255,255,255,255,128,255,0,7,255,208,255,0,0,127,240,255,0,0,47,240,255,0,0,15,244,255,0,0,15,244,255,0,0,15,244,255,0,0,15,244,255,0,0,31,240,255,0,0,63,240,255,0,1,255,208,255,150,175,255,192,255,255,255,255,0,255,255,255,248,0,255,255,254,64,0,255,64,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0, + // 0x0051 Q + 27,36,252,31,2,249,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,248,0,0,11,255,255,255,208,0,0,0,191,255,253,0,0,0,0,1,87,255,0,0,0,0,0,1,255,192,0,0,0,0,0,191,240,0,0,0,0,0,63,252,0,0,0,0,0,15,254,0,0,0,0,0,3,255,128,0,0,0,0,1,255,208, + // 0x0052 R + 21,29,174,25,4,0,170,170,148,0,0,0,255,255,255,228,0,0,255,255,255,254,0,0,255,255,255,255,192,0,255,0,22,255,224,0,255,0,0,127,240,0,255,0,0,31,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,47,240,0,255,0,0,127,224,0,255,64,23,255,192,0,255,255,255,255,0,0,255,255,255,248,0,0,255,255,255,192,0,0,255,149,127,224,0,0,255,0,31,244,0,0,255,0,11,252,0,0,255,0,3,254,0,0,255,0,2,255,0,0,255,0,0,255,192,0,255,0,0,127,208,0,255,0,0,47,240,0,255,0,0,15,248,0,255,0,0,11,253,0,255,0,0,3,255,0,255,0,0,1,255,128, + // 0x0053 S + 18,30,150,22,2,255,0,27,255,164,0,1,255,255,255,128,11,255,255,255,208,31,255,255,255,192,63,244,0,27,128,127,208,0,0,0,191,192,0,0,0,191,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,240,0,0,0,47,253,0,0,0,15,255,224,0,0,3,255,254,0,0,0,191,255,224,0,0,11,255,253,0,0,0,127,255,64,0,0,7,255,192,0,0,0,191,224,0,0,0,47,240,0,0,0,31,240,0,0,0,15,240,0,0,0,15,240,0,0,0,47,240,224,0,0,127,224,255,165,91,255,192,255,255,255,255,0,255,255,255,252,0,47,255,255,144,0,0,21,80,0,0, + // 0x0054 T + 22,29,174,23,0,0,106,170,170,170,170,160,127,255,255,255,255,240,127,255,255,255,255,240,127,255,255,255,255,240,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0, + // 0x0055 U + 23,30,180,30,3,255,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,248,0,0,11,255,255,144,0,0,0,21,80,0,0, + // 0x0056 V + 25,29,203,25,0,0,170,64,0,0,0,170,64,191,192,0,0,0,255,0,127,192,0,0,2,255,0,63,208,0,0,3,254,0,47,240,0,0,7,252,0,15,240,0,0,11,252,0,15,248,0,0,15,244,0,11,252,0,0,31,240,0,3,252,0,0,47,224,0,3,254,0,0,63,208,0,1,255,0,0,127,192,0,0,255,0,0,191,128,0,0,255,128,0,255,64,0,0,127,192,1,255,0,0,0,63,192,2,254,0,0,0,47,224,3,253,0,0,0,31,240,7,252,0,0,0,15,244,11,248,0,0,0,11,248,15,240,0,0,0,7,252,31,240,0,0,0,3,253,47,224,0,0,0,2,254,63,192,0,0,0,0,255,127,192,0,0,0,0,255,191,64,0,0,0,0,191,255,0,0,0,0,0,63,254,0,0,0,0,0,63,253,0,0,0,0,0,31,252,0,0,0,0,0,15,248,0,0,0, + // 0x0057 W + 37,29,34,38,0,0,106,64,0,0,106,128,0,0,42,128,127,192,0,0,191,192,0,0,127,192,63,208,0,0,255,208,0,0,191,128,63,224,0,1,255,240,0,0,255,64,47,240,0,2,255,240,0,0,255,0,31,240,0,3,255,244,0,1,255,0,15,244,0,3,251,248,0,2,254,0,15,248,0,7,247,252,0,3,253,0,11,252,0,11,242,252,0,3,252,0,7,252,0,15,241,254,0,7,252,0,3,253,0,31,224,255,0,11,248,0,3,254,0,47,208,255,0,15,244,0,2,255,0,63,192,191,64,15,240,0,1,255,0,63,192,127,128,31,240,0,0,255,64,127,128,63,192,47,224,0,0,191,128,191,0,47,192,63,208,0,0,127,192,255,0,31,224,63,192,0,0,63,193,254,0,15,240,127,192,0,0,63,194,253,0,15,240,191,128,0,0,47,211,252,0,11,244,255,64,0,0,31,227,252,0,7,248,255,0,0,0,15,243,248,0,3,252,254,0,0,0,15,247,240,0,2,253,253,0,0,0,11,255,240,0,1,254,252,0,0,0,7,255,224,0,0,255,252,0,0,0,3,255,208,0,0,255,248,0,0,0,3,255,192,0,0,191,244,0,0,0,2,255,192,0,0,127,240,0,0,0,1,255,128,0,0,63,240,0,0, + // 0x0058 X + 24,29,174,24,0,0,42,144,0,0,2,168,47,240,0,0,11,252,15,252,0,0,31,244,7,253,0,0,63,224,2,255,0,0,191,192,0,255,128,0,255,64,0,127,192,3,254,0,0,47,240,7,252,0,0,15,244,15,244,0,0,7,252,47,224,0,0,3,254,63,192,0,0,0,255,255,64,0,0,0,127,255,0,0,0,0,63,252,0,0,0,0,47,252,0,0,0,0,127,254,0,0,0,0,255,255,0,0,0,2,255,191,192,0,0,3,252,63,208,0,0,15,248,31,240,0,0,31,240,15,252,0,0,63,208,3,253,0,0,191,128,2,255,0,1,255,0,0,255,128,3,253,0,0,127,208,11,252,0,0,63,240,31,244,0,0,15,248,63,224,0,0,11,253,191,192,0,0,3,255, + // 0x0059 Y + 23,29,174,23,0,0,106,64,0,0,6,168,127,192,0,0,15,248,63,240,0,0,31,240,31,244,0,0,63,224,15,252,0,0,127,192,7,253,0,0,255,128,2,255,0,1,255,0,0,255,64,3,253,0,0,191,192,11,252,0,0,63,208,15,244,0,0,47,240,47,240,0,0,15,244,63,208,0,0,7,252,191,128,0,0,3,254,255,0,0,0,1,255,254,0,0,0,0,255,252,0,0,0,0,127,248,0,0,0,0,63,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0, + // 0x005a Z + 21,29,174,23,1,0,42,170,170,170,170,0,63,255,255,255,255,0,63,255,255,255,255,0,63,255,255,255,255,0,0,0,0,7,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,224,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,208,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,253,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,208,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,253,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,250,170,170,170,64,191,255,255,255,255,128,191,255,255,255,255,128,191,255,255,255,255,128, + // 0x005b [ + 9,36,108,13,3,249,170,170,128,255,255,192,255,255,192,255,170,128,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,255,192,255,255,192,255,255,192,85,85,64, + // 0x005c "\" + 15,29,116,15,0,0,106,64,0,0,63,192,0,0,63,192,0,0,47,224,0,0,15,240,0,0,15,244,0,0,7,248,0,0,3,252,0,0,2,253,0,0,1,254,0,0,0,255,0,0,0,191,64,0,0,63,192,0,0,63,192,0,0,31,224,0,0,15,240,0,0,11,244,0,0,7,248,0,0,3,252,0,0,2,253,0,0,0,255,0,0,0,255,0,0,0,127,128,0,0,63,192,0,0,47,208,0,0,31,224,0,0,15,240,0,0,11,244,0,0,3,252, + // 0x005d ] + 9,36,108,13,1,249,170,170,128,255,255,192,255,255,192,170,191,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,255,255,192,255,255,192,255,255,192,85,85,64, + // 0x005e ^ + 20,19,95,23,1,10,0,0,124,0,0,0,0,190,0,0,0,0,255,0,0,0,2,255,192,0,0,3,255,208,0,0,11,235,240,0,0,15,195,244,0,0,47,194,252,0,0,63,64,253,0,0,127,0,191,0,0,253,0,63,64,1,252,0,47,192,3,248,0,15,208,7,240,0,11,240,15,224,0,3,244,31,192,0,2,252,47,192,0,0,253,63,64,0,0,191,85,0,0,0,21, + // 0x005f _ + 18,4,20,17,0,249,85,85,85,85,64,255,255,255,255,208,255,255,255,255,208,0,0,0,0,0, + // 0x0060 ` + 9,7,21,12,2,24,170,64,0,255,192,0,63,240,0,15,248,0,3,252,0,0,191,0,0,47,64, + // 0x0061 a + 18,23,115,23,2,255,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x0062 b + 20,32,160,25,3,255,85,0,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,191,224,0,191,75,255,254,0,191,127,255,255,192,191,255,170,255,224,191,248,0,63,244,191,224,0,15,252,191,192,0,7,252,191,192,0,3,253,191,128,0,3,254,191,128,0,2,254,191,128,0,2,254,191,128,0,2,254,191,128,0,2,254,191,128,0,3,254,191,192,0,3,253,191,192,0,7,252,191,224,0,15,252,191,240,0,31,248,191,254,65,191,240,191,191,255,255,208,191,31,255,255,64,190,2,255,248,0,0,0,21,64,0, + // 0x0063 c + 16,23,92,20,2,255,0,6,255,228,0,127,255,255,2,255,255,255,11,255,234,253,31,253,0,8,63,240,0,0,127,208,0,0,191,192,0,0,191,128,0,0,255,128,0,0,255,64,0,0,255,64,0,0,255,64,0,0,255,128,0,0,191,192,0,0,127,192,0,0,63,224,0,0,47,244,0,1,15,254,64,111,7,255,255,255,1,255,255,255,0,47,255,248,0,0,85,0, + // 0x0064 d + 20,32,160,25,2,255,0,0,0,1,84,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,27,254,2,253,0,255,255,226,253,3,255,255,250,253,15,255,170,255,253,47,248,0,47,253,63,240,0,15,253,127,208,0,7,253,191,192,0,3,253,191,128,0,3,253,255,128,0,2,253,255,64,0,2,253,255,64,0,2,253,255,64,0,2,253,255,128,0,2,253,191,192,0,3,253,127,192,0,3,253,63,224,0,7,253,63,244,0,15,253,31,254,1,191,253,11,255,255,254,253,2,255,255,240,253,0,127,255,128,253,0,1,80,0,0, + // 0x0065 e + 19,23,115,23,2,255,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x0066 f + 16,31,124,14,0,0,0,0,26,84,0,2,255,255,0,15,255,254,0,63,255,252,0,63,224,4,0,127,192,0,0,191,128,0,0,191,128,0,0,191,128,0,1,255,234,144,47,255,255,240,127,255,255,240,42,255,234,160,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0, + // 0x0067 g + 20,32,160,25,2,246,0,27,254,0,169,0,255,255,224,253,3,255,255,249,253,15,255,171,255,253,31,248,0,63,253,63,240,0,15,253,127,208,0,7,253,191,192,0,3,253,191,128,0,3,253,255,128,0,2,253,255,64,0,2,253,255,64,0,2,253,255,64,0,2,253,255,128,0,2,253,191,192,0,3,253,127,192,0,3,253,63,208,0,7,253,63,240,0,15,253,15,253,0,191,253,11,255,255,254,253,2,255,255,242,253,0,127,255,130,253,0,1,80,2,253,0,0,0,3,253,0,0,0,3,253,0,0,0,7,252,0,0,0,15,252,30,64,0,127,244,31,255,255,255,224,31,255,255,255,128,11,255,255,253,0,0,22,169,64,0, + // 0x0068 h + 19,31,155,25,3,0,85,0,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,111,228,0,191,75,255,255,64,191,111,255,255,208,191,255,170,255,240,191,248,0,47,244,191,240,0,15,248,191,208,0,7,252,191,192,0,7,252,191,192,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252, + // 0x0069 i + 5,30,60,11,3,0,42,0,191,128,255,192,255,128,127,0,0,0,0,0,0,0,106,64,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128, + // 0x006a j + 11,40,120,11,253,246,0,2,160,0,11,248,0,15,252,0,15,248,0,7,240,0,0,0,0,0,0,0,0,0,0,6,164,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,15,244,0,47,240,127,255,240,127,255,192,127,255,64,22,148,0, + // 0x006b k + 19,31,155,22,3,0,85,0,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,26,160,191,128,0,127,224,191,128,1,255,128,191,128,3,254,0,191,128,15,248,0,191,128,63,240,0,191,128,255,192,0,191,67,255,0,0,191,79,252,0,0,191,111,240,0,0,191,191,244,0,0,191,255,252,0,0,191,255,255,0,0,191,224,255,128,0,191,128,127,208,0,191,128,47,244,0,191,128,15,252,0,191,128,3,254,0,191,128,1,255,64,191,128,0,191,208,191,128,0,63,240,191,128,0,31,248, + // 0x006c l + 5,31,62,11,3,0,85,0,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128, + // 0x006d m + 32,22,176,38,3,0,105,0,191,228,0,27,254,0,191,11,255,254,1,255,255,208,191,63,255,255,135,255,255,244,191,255,171,255,239,250,191,252,191,248,0,127,255,64,11,253,191,224,0,47,253,0,3,254,191,208,0,31,252,0,2,254,191,192,0,15,244,0,2,255,191,192,0,15,244,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255, + // 0x006e n + 19,22,110,25,3,0,105,0,191,228,0,191,11,255,255,64,191,63,255,255,208,191,255,170,255,240,191,248,0,47,248,191,240,0,15,252,191,208,0,7,252,191,192,0,7,252,191,192,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252, + // 0x006f o + 21,23,138,24,2,255,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x0070 p + 20,32,160,25,3,246,105,0,191,228,0,191,11,255,254,0,191,47,255,255,192,191,255,170,255,240,191,248,0,63,244,191,224,0,15,252,191,192,0,7,252,191,192,0,3,253,191,128,0,3,254,191,128,0,2,254,191,128,0,2,254,191,128,0,2,254,191,128,0,2,254,191,128,0,3,254,191,192,0,3,253,191,192,0,7,252,191,224,0,15,252,191,244,0,47,248,191,254,65,191,240,191,191,255,255,208,191,95,255,255,64,191,130,255,248,0,191,128,21,64,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,106,64,0,0,0, + // 0x0071 q + 20,32,160,25,2,246,0,27,254,0,169,0,255,255,224,253,3,255,255,249,253,15,255,170,255,253,47,248,0,47,253,63,240,0,15,253,127,208,0,7,253,191,192,0,3,253,191,128,0,3,253,255,128,0,2,253,255,64,0,2,253,255,64,0,2,253,255,64,0,2,253,255,128,0,2,253,191,192,0,3,253,127,192,0,3,253,63,208,0,11,253,63,240,0,15,253,31,254,0,191,253,11,255,255,254,253,2,255,255,242,253,0,127,255,130,253,0,1,80,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,1,169, + // 0x0072 r + 13,22,88,17,3,0,105,0,127,192,191,3,255,192,191,15,255,192,191,63,255,192,191,255,64,0,191,248,0,0,191,240,0,0,191,192,0,0,191,192,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0, + // 0x0073 s + 16,23,92,19,2,255,0,111,254,64,11,255,255,248,63,255,255,252,191,249,91,244,255,128,0,96,255,0,0,0,255,64,0,0,255,208,0,0,127,253,0,0,47,255,208,0,7,255,254,0,0,191,255,208,0,7,255,244,0,0,127,252,0,0,7,253,0,0,2,254,0,0,2,254,64,0,3,253,249,0,11,252,255,255,255,248,255,255,255,224,111,255,254,0,0,85,64,0, + // 0x0074 t + 15,28,112,15,0,255,0,21,0,0,0,63,0,0,0,127,0,0,0,191,0,0,0,255,0,0,2,255,170,160,47,255,255,240,127,255,255,240,43,255,170,160,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,0,255,0,0,0,255,64,0,0,255,208,16,0,191,255,244,0,63,255,244,0,11,255,240,0,0,21,0, + // 0x0075 u + 19,23,115,25,3,255,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,2,252,0,5,80,0,0, + // 0x0076 v + 21,22,132,21,0,0,170,64,0,0,106,128,191,192,0,0,255,128,63,192,0,0,255,64,63,224,0,2,255,0,31,240,0,3,254,0,15,244,0,3,252,0,11,248,0,11,248,0,7,252,0,15,244,0,3,253,0,31,240,0,2,254,0,47,224,0,0,255,0,63,192,0,0,255,64,127,192,0,0,127,192,191,64,0,0,63,192,255,0,0,0,47,209,254,0,0,0,31,226,253,0,0,0,15,243,252,0,0,0,11,251,248,0,0,0,3,255,240,0,0,0,3,255,240,0,0,0,1,255,208,0,0,0,0,255,192,0,0, + // 0x0077 w + 32,22,176,32,0,0,106,64,0,10,164,0,1,169,127,192,0,31,252,0,2,254,63,208,0,63,252,0,3,253,47,224,0,63,253,0,7,252,31,240,0,127,254,0,11,248,15,240,0,191,191,0,15,244,15,244,0,254,127,0,15,240,11,248,1,253,63,128,31,240,7,252,2,252,63,192,47,224,3,252,3,252,47,192,63,208,3,253,3,248,31,208,63,192,1,254,7,240,15,224,127,128,0,255,11,240,15,240,191,64,0,255,15,224,7,240,255,0,0,191,79,208,3,244,255,0,0,127,95,192,3,249,254,0,0,63,175,128,2,253,253,0,0,63,255,64,1,254,252,0,0,47,255,0,0,255,252,0,0,31,255,0,0,255,244,0,0,15,254,0,0,127,240,0,0,11,253,0,0,63,240,0, + // 0x0078 x + 20,22,110,22,1,0,106,128,0,2,169,127,208,0,11,252,47,240,0,31,244,15,252,0,63,224,7,253,0,191,192,2,255,1,255,64,0,255,131,254,0,0,63,219,252,0,0,31,255,240,0,0,15,255,224,0,0,3,255,192,0,0,3,255,192,0,0,15,255,224,0,0,47,255,240,0,0,63,219,252,0,0,255,131,254,0,2,255,1,255,64,7,253,0,191,192,15,248,0,63,224,47,240,0,31,244,127,208,0,11,252,255,128,0,3,255, + // 0x0079 y + 21,32,192,21,0,246,106,64,0,0,106,128,191,192,0,0,255,128,63,208,0,0,255,64,47,224,0,2,255,0,31,240,0,3,254,0,15,244,0,3,252,0,11,252,0,11,252,0,3,252,0,15,244,0,2,254,0,31,240,0,1,255,0,47,224,0,0,255,64,63,208,0,0,191,128,127,192,0,0,63,192,191,128,0,0,47,208,255,0,0,0,31,225,255,0,0,0,15,242,253,0,0,0,11,243,252,0,0,0,3,251,248,0,0,0,2,255,244,0,0,0,1,255,240,0,0,0,0,255,224,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,255,64,0,0,0,1,255,0,0,0,0,3,254,0,0,0,0,7,252,0,0,0,0,47,248,0,0,0,127,255,240,0,0,0,127,255,192,0,0,0,127,254,0,0,0,0,26,144,0,0,0,0, + // 0x007a z + 17,22,110,19,1,0,42,170,170,170,0,63,255,255,255,0,63,255,255,255,0,42,170,171,255,0,0,0,3,253,0,0,0,11,252,0,0,0,31,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,192,0,0,0,255,64,0,0,3,254,0,0,0,11,252,0,0,0,31,240,0,0,0,63,229,85,85,0,191,255,255,255,128,191,255,255,255,128,191,255,255,255,128, + // 0x007b { + 13,36,144,15,1,249,0,0,5,128,0,1,255,192,0,11,255,192,0,31,255,192,0,63,244,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,191,128,0,2,255,0,0,255,253,0,0,255,208,0,0,255,244,0,0,175,254,0,0,1,255,64,0,0,191,128,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,208,0,0,63,248,0,0,31,255,192,0,7,255,192,0,0,191,192,0,0,0,64, + // 0x007c | + 4,41,41,22,9,246,20,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,85, + // 0x007d } + 14,36,144,15,1,249,84,0,0,0,191,224,0,0,191,252,0,0,191,255,0,0,2,255,0,0,0,255,64,0,0,191,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,128,0,0,127,192,0,0,63,244,0,0,15,255,208,0,1,191,208,0,2,255,208,0,31,255,128,0,63,224,0,0,127,192,0,0,127,128,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,191,64,0,0,255,64,0,7,255,0,0,191,254,0,0,191,248,0,0,191,144,0,0,16,0,0,0, + // 0x007e ~ + 19,6,30,23,2,11,11,250,64,0,4,127,255,244,0,60,255,255,255,235,252,254,107,255,255,252,208,0,111,255,224,0,0,1,170,0, + // 0x007f - 0x009a Control Characters + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x00a0 "�" + 0,0,0,10,0,0, + // 0x00a1 ¡ + 5,30,60,11,3,248,46,0,255,192,255,192,255,192,255,192,46,0,0,0,0,0,0,0,63,0,63,0,63,0,63,0,127,0,127,0,127,64,127,64,127,64,191,64,191,64,191,128,191,128,191,128,255,128,255,128,255,192,255,192,255,192,255,192,0,0, + // 0x00a2 ¢ + 17,30,150,23,3,255,0,0,188,0,0,0,0,188,0,0,0,0,188,0,0,0,1,255,164,0,0,63,255,255,64,1,255,255,255,64,7,255,255,255,0,15,254,0,25,0,47,244,0,0,0,63,224,0,0,0,63,208,0,0,0,127,192,0,0,0,191,192,0,0,0,191,192,0,0,0,191,128,0,0,0,191,192,0,0,0,127,192,0,0,0,127,192,0,0,0,63,208,0,0,0,63,224,0,0,0,47,248,0,0,0,15,255,64,27,0,7,255,255,255,0,1,255,255,255,0,0,47,255,254,0,0,1,254,80,0,0,0,188,0,0,0,0,188,0,0,0,0,188,0,0,0,0,84,0,0, + // 0x00a3 £ + 21,29,174,23,1,0,0,0,43,254,64,0,0,2,255,255,253,0,0,15,255,255,253,0,0,47,254,175,252,0,0,63,224,0,100,0,0,191,192,0,0,0,0,191,128,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,127,255,255,255,64,0,191,255,255,255,64,0,191,255,255,255,64,0,0,255,128,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,0,0,0,0,2,254,0,0,0,0,11,248,0,0,0,0,127,255,255,255,255,64,191,255,255,255,255,128,191,255,255,255,255,128,191,255,255,255,255,128, + // 0x00a4 ¤ + 18,18,90,23,2,5,13,0,0,1,192,63,70,254,7,240,63,255,255,255,240,15,255,255,255,192,7,254,2,255,0,11,240,0,127,64,15,208,0,31,192,15,192,0,15,192,31,192,0,15,192,31,192,0,15,192,15,192,0,15,192,15,224,0,47,192,7,244,0,191,64,7,255,155,255,64,31,255,255,255,192,127,239,255,239,240,63,1,169,3,224,8,0,0,0,128, + // 0x00a5 ¥ + 21,29,174,23,1,0,170,0,0,0,42,128,255,64,0,0,191,192,127,192,0,0,255,64,63,208,0,2,254,0,31,240,0,3,252,0,15,244,0,11,248,0,7,252,0,15,240,0,3,253,0,47,224,0,1,255,0,63,192,0,0,255,64,191,128,0,0,127,192,255,0,0,0,63,209,254,0,0,0,31,243,252,0,0,0,11,251,244,0,0,0,3,255,240,0,0,2,171,255,250,160,0,7,255,255,255,240,0,7,255,255,255,240,0,0,0,191,128,0,0,0,0,191,64,0,0,0,0,191,64,0,0,3,255,255,255,240,0,7,255,255,255,240,0,7,255,255,255,240,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0,0,0,191,64,0,0, + // 0x00a6 ¦ + 4,41,41,22,9,246,20,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,0,0,0,0,0,0,0,0,0,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,85, + // 0x00a7 § + 16,32,128,20,2,255,0,22,165,0,2,255,255,244,15,255,255,252,63,249,91,252,63,192,0,36,127,64,0,0,63,128,0,0,63,224,0,0,31,253,0,0,7,255,228,0,3,255,255,0,15,251,255,224,47,192,127,248,63,64,7,253,127,0,1,254,127,0,0,254,127,128,0,190,63,224,0,254,31,253,2,252,7,255,235,244,0,191,255,224,0,11,255,224,0,0,127,248,0,0,7,253,0,0,1,254,0,0,0,254,0,0,1,254,185,0,7,253,191,254,255,248,191,255,255,224,27,255,254,0,0,0,0,0, + // 0x00a8 ¨ + 12,5,15,24,6,25,20,0,16,254,0,253,255,2,254,255,1,254,124,0,184, + // 0x00a9 © + 30,30,240,33,2,255,0,0,6,255,228,0,0,0,0,0,191,255,255,208,0,0,0,11,254,85,111,248,0,0,0,63,208,0,1,255,0,0,0,253,0,0,0,31,208,0,3,240,0,1,0,3,240,0,11,192,1,255,253,0,252,0,15,64,11,255,255,0,125,0,47,0,47,249,190,0,47,0,61,0,127,64,0,0,15,64,124,0,254,0,0,0,15,128,184,0,252,0,0,0,11,192,248,1,248,0,0,0,7,192,244,2,248,0,0,0,3,208,244,2,248,0,0,0,3,208,244,2,248,0,0,0,3,208,244,2,248,0,0,0,7,192,248,1,252,0,0,0,7,192,188,0,252,0,0,0,11,192,124,0,254,0,0,0,15,128,62,0,127,128,5,0,31,64,47,0,31,255,254,0,63,0,15,192,7,255,254,0,188,0,7,224,0,106,144,2,248,0,2,252,0,0,0,11,240,0,0,191,64,0,0,127,192,0,0,31,248,0,11,254,0,0,0,2,255,255,255,244,0,0,0,0,47,255,254,64,0,0,0,0,0,85,64,0,0,0, + // 0x00aa ª + 12,14,42,15,1,15,1,191,128,47,255,244,47,171,252,4,0,190,0,0,126,0,22,190,11,255,254,63,233,190,190,0,126,252,0,126,253,0,254,191,155,254,63,255,110,6,248,25, + // 0x00ab « + 19,17,85,22,1,2,0,3,128,2,208,0,15,240,7,248,0,47,224,31,240,0,191,192,63,208,1,255,0,255,128,7,253,2,255,0,15,244,11,252,0,63,224,31,240,0,127,192,63,224,0,47,240,15,244,0,15,248,7,253,0,3,254,1,255,0,0,255,64,191,192,0,127,192,63,224,0,31,240,15,248,0,11,224,3,244,0,2,64,1,128, + // 0x00ac ¬ + 19,11,55,23,2,5,170,170,170,170,168,255,255,255,255,252,255,255,255,255,252,170,170,170,170,252,0,0,0,1,252,0,0,0,1,252,0,0,0,1,252,0,0,0,1,252,0,0,0,1,252,0,0,0,1,252,0,0,0,1,252, + // 0x00ad ­ + 11,5,15,13,1,8,106,170,160,191,255,244,191,255,244,191,255,244,0,0,0, + // 0x00ae ® + 30,30,240,33,2,255,0,0,6,255,228,0,0,0,0,0,191,255,255,208,0,0,0,11,254,85,111,248,0,0,0,63,208,0,1,255,0,0,0,253,0,0,0,31,208,0,3,240,0,0,0,3,240,0,11,192,63,255,224,0,252,0,15,64,63,255,253,0,125,0,47,0,63,170,255,0,47,0,61,0,63,0,63,64,15,64,124,0,63,0,47,128,15,128,184,0,63,0,47,128,11,192,248,0,63,0,63,64,7,192,244,0,63,0,191,0,3,208,244,0,63,255,253,0,3,208,244,0,63,255,240,0,3,208,244,0,63,171,240,0,7,192,248,0,63,3,248,0,7,192,188,0,63,0,252,0,11,192,124,0,63,0,190,0,15,128,62,0,63,0,63,64,31,64,47,0,63,0,47,192,63,0,15,192,63,0,15,224,188,0,7,224,21,0,1,82,248,0,2,252,0,0,0,11,240,0,0,191,64,0,0,127,192,0,0,31,248,0,11,254,0,0,0,2,255,255,255,244,0,0,0,0,47,255,254,64,0,0,0,0,0,85,64,0,0,0, + // 0x00af ¯ + 20,4,20,20,0,30,85,85,85,85,85,255,255,255,255,255,255,255,255,255,255,170,170,170,170,170, + // 0x00b0 ° + 13,13,52,17,2,16,1,191,144,0,11,255,252,0,63,255,255,0,127,64,127,64,189,0,31,192,252,0,15,192,252,0,15,192,252,0,15,192,190,0,47,128,63,144,191,64,47,255,254,0,7,255,248,0,0,106,64,0, + // 0x00b1 ± + 19,24,120,23,2,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,1,252,0,0,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,0,1,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,0,0,0,85,85,85,85,84,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252, + // 0x00b2 ² + 12,18,54,14,1,16,6,255,128,63,255,244,191,235,252,60,1,253,0,0,254,0,0,253,0,0,252,0,2,252,0,11,240,0,47,208,0,191,64,2,253,0,11,244,0,47,192,0,191,170,169,255,255,254,255,255,254,85,85,84, + // 0x00b3 ³ + 12,18,54,14,1,16,11,255,128,191,255,244,191,171,252,52,0,253,0,0,253,0,0,253,0,2,252,6,175,240,11,255,192,7,255,248,0,1,253,0,0,127,0,0,127,0,0,191,228,1,254,255,255,252,255,255,240,6,169,0, + // 0x00b4 ´ + 10,7,21,12,1,24,0,106,144,0,255,192,2,255,0,7,252,0,15,240,0,63,192,0,126,0,0, + // 0x00b5 µ + 19,32,160,25,3,246,106,64,0,2,168,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,7,252,191,128,0,7,252,191,128,0,11,252,191,128,0,15,252,191,192,0,15,252,191,224,0,63,252,191,249,1,255,252,191,255,255,251,252,191,255,255,226,252,191,95,255,65,252,191,65,80,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,106,64,0,0,0, + // 0x00b6 ¶ + 20,37,185,26,2,250,0,1,85,85,85,0,127,255,255,255,3,255,255,255,255,15,255,255,245,111,47,255,255,240,31,63,255,255,240,31,127,255,255,240,31,191,255,255,240,31,191,255,255,240,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,31,191,255,255,240,31,191,255,255,240,31,127,255,255,240,31,63,255,255,240,31,47,255,255,240,31,15,255,255,240,31,7,255,255,240,31,0,191,255,240,31,0,1,83,240,31,0,0,3,240,31,0,0,3,240,31,0,0,3,240,31,0,0,3,240,31,0,0,3,240,31,0,0,3,240,31,0,0,3,240,31,0,0,3,240,31,0,0,3,240,31,0,0,3,240,31,0,0,3,240,31,0,0,3,240,31,0,0,3,240,31,0,0,3,240,31,0,0,3,240,31,0,0,0,0,0, + // 0x00b7 · + 5,6,12,11,3,11,127,64,255,192,255,192,255,192,191,128,25,0, + // 0x00b8 ¸ + 9,10,30,9,0,246,3,224,0,11,192,0,15,248,0,11,255,0,0,127,64,0,63,64,0,127,0,255,255,0,255,248,0,106,64,0, + // 0x00b9 ¹ + 8,18,36,14,2,16,0,127,2,255,15,255,127,255,254,63,116,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,21, + // 0x00ba º + 13,14,56,15,1,15,0,191,144,0,11,255,248,0,47,234,254,0,63,0,63,64,126,0,31,128,189,0,15,192,188,0,15,192,188,0,15,192,189,0,15,192,126,0,31,128,63,0,63,0,31,234,254,0,7,255,248,0,0,191,144,0, + // 0x00bb » + 18,17,85,22,2,2,44,0,30,0,0,255,0,191,128,0,191,192,63,208,0,63,224,31,240,0,15,248,7,252,0,3,253,2,255,0,1,255,0,255,128,0,191,192,63,224,0,63,208,47,240,0,255,128,127,208,2,255,0,255,64,7,252,3,254,0,31,244,11,248,0,63,208,47,240,0,255,128,127,192,0,190,0,127,0,0,24,0,9,0,0, + // 0x00bc ¼ + 30,29,232,31,1,0,0,26,64,0,0,26,64,0,0,191,192,0,0,127,0,0,7,255,192,0,0,254,0,0,47,255,192,0,1,252,0,0,191,111,192,0,3,244,0,0,61,47,192,0,11,240,0,0,0,47,192,0,15,192,0,0,0,47,192,0,63,128,0,0,0,47,192,0,127,0,0,0,0,47,192,0,253,0,0,0,0,47,192,2,252,0,0,0,0,47,192,3,244,0,0,0,0,47,192,15,224,3,252,0,0,47,192,31,192,11,252,0,0,47,192,63,64,31,252,0,0,47,192,191,0,63,252,0,0,47,192,253,0,189,252,0,0,26,67,248,1,245,252,0,0,0,7,240,3,225,252,0,0,0,15,224,11,193,252,0,0,0,47,192,31,65,252,0,0,0,63,64,62,1,252,0,0,0,190,0,253,2,252,0,0,1,252,0,255,255,255,208,0,3,248,0,255,255,255,208,0,11,240,0,85,86,253,64,0,15,208,0,0,1,252,0,0,47,192,0,0,1,252,0,0,127,0,0,0,1,252,0, + // 0x00bd ½ + 30,29,232,32,1,0,0,42,0,0,0,105,0,0,1,255,64,0,0,253,0,0,11,255,64,0,2,252,0,0,63,255,64,0,7,240,0,0,255,63,64,0,15,224,0,0,124,63,64,0,31,192,0,0,16,63,64,0,63,64,0,0,0,63,64,0,191,0,0,0,0,63,64,1,252,0,0,0,0,63,64,3,248,0,0,0,0,63,64,7,240,0,0,0,0,63,64,15,208,5,80,0,0,63,64,47,193,255,253,0,0,63,64,63,11,255,255,64,0,63,64,254,11,229,127,192,0,63,65,252,2,64,31,192,0,63,67,244,0,0,15,208,0,42,11,240,0,0,31,192,0,0,15,208,0,0,47,192,0,0,63,128,0,0,127,64,0,0,127,0,0,0,254,0,0,0,253,0,0,3,248,0,0,2,252,0,0,15,224,0,0,3,244,0,0,127,128,0,0,15,224,0,1,254,0,0,0,31,192,0,7,248,0,0,0,63,128,0,15,255,255,208,0,191,0,0,31,255,255,208,0,253,0,0,31,255,255,208, + // 0x00be ¾ + 31,29,232,32,1,0,6,255,128,0,0,2,160,0,63,255,244,0,0,11,240,0,191,239,252,0,0,15,208,0,56,0,253,0,0,63,128,0,0,0,190,0,0,127,0,0,0,0,253,0,0,254,0,0,0,1,252,0,2,252,0,0,1,107,244,0,3,244,0,0,7,255,192,0,15,224,0,0,7,255,244,0,31,192,0,0,0,1,253,0,63,128,0,0,0,0,127,0,191,0,0,0,0,0,63,0,253,0,191,0,0,0,127,3,252,1,255,0,208,0,255,7,240,3,255,0,255,239,253,15,224,15,255,0,255,255,244,47,192,31,127,0,27,254,64,63,64,62,127,0,0,0,0,191,0,252,127,0,0,0,1,252,2,244,127,0,0,0,3,248,3,224,127,0,0,0,11,240,15,192,127,0,0,0,15,208,47,64,127,64,0,0,47,192,63,255,255,248,0,0,127,0,63,255,255,248,0,0,254,0,21,85,191,148,0,1,252,0,0,0,127,0,0,3,244,0,0,0,127,0,0,11,240,0,0,0,127,0, + // 0x00bf ¿ + 17,30,150,18,1,248,0,0,184,0,0,0,3,255,0,0,0,7,255,0,0,0,7,255,0,0,0,3,255,0,0,0,1,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,0,0,0,0,253,0,0,0,1,252,0,0,0,3,252,0,0,0,11,248,0,0,0,47,240,0,0,0,191,208,0,0,3,255,64,0,0,15,253,0,0,0,47,240,0,0,0,127,192,0,0,0,191,64,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,128,0,4,0,127,224,1,189,0,63,255,255,255,0,15,255,255,255,64,2,255,255,244,0,0,26,169,0,0, + // 0x00c0 À + 26,38,10,26,0,0,0,1,170,0,0,0,0,0,0,255,192,0,0,0,0,0,127,208,0,0,0,0,0,31,240,0,0,0,0,0,7,252,0,0,0,0,0,0,254,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x00c1 Á + 26,38,10,26,0,0,0,0,0,6,169,0,0,0,0,0,15,252,0,0,0,0,0,47,240,0,0,0,0,0,63,192,0,0,0,0,0,255,0,0,0,0,0,2,252,0,0,0,0,0,3,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x00c2  + 26,38,10,26,0,0,0,0,6,169,0,0,0,0,0,15,255,0,0,0,0,0,63,255,192,0,0,0,0,191,175,224,0,0,0,2,254,11,248,0,0,0,7,244,1,254,0,0,0,15,128,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x00c3 à + 26,37,3,26,0,0,0,0,105,0,10,64,0,0,2,255,208,15,64,0,0,11,255,254,127,0,0,0,15,235,255,254,0,0,0,31,64,127,252,0,0,0,30,0,6,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x00c4 Ä + 26,37,3,26,0,0,0,0,80,0,80,0,0,0,2,252,3,248,0,0,0,3,253,3,252,0,0,0,2,252,3,252,0,0,0,0,180,1,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x00c5 Å + 26,35,245,26,0,0,0,0,6,249,0,0,0,0,0,31,255,64,0,0,0,0,63,95,192,0,0,0,0,124,3,208,0,0,0,0,188,3,224,0,0,0,0,124,3,208,0,0,0,0,63,255,192,0,0,0,0,31,255,64,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x00c6 Æ + 34,29,5,36,0,0,0,0,0,26,170,170,170,170,144,0,0,0,63,255,255,255,255,224,0,0,0,191,255,255,255,255,224,0,0,0,255,255,255,255,255,224,0,0,2,254,15,248,0,0,0,0,0,3,252,15,244,0,0,0,0,0,11,248,15,244,0,0,0,0,0,15,244,15,244,0,0,0,0,0,31,240,15,244,0,0,0,0,0,63,208,15,244,0,0,0,0,0,127,192,15,244,0,0,0,0,0,255,64,15,244,0,0,0,0,1,255,0,15,254,170,170,128,0,3,254,0,15,255,255,255,192,0,7,252,0,15,255,255,255,192,0,11,248,0,15,255,255,255,192,0,15,240,0,15,244,0,0,0,0,47,255,255,255,244,0,0,0,0,63,255,255,255,244,0,0,0,0,191,255,255,255,244,0,0,0,0,255,255,255,255,244,0,0,0,2,255,0,0,15,244,0,0,0,3,253,0,0,15,244,0,0,0,7,252,0,0,15,244,0,0,0,15,248,0,0,15,244,0,0,0,31,240,0,0,15,254,170,170,144,63,224,0,0,15,255,255,255,224,127,192,0,0,15,255,255,255,224,255,128,0,0,15,255,255,255,224, + // 0x00c7 Ç + 22,39,234,25,2,246,0,0,27,255,228,0,0,2,255,255,255,208,0,31,255,255,255,224,0,127,255,255,255,208,1,255,244,0,27,192,3,255,128,0,0,0,11,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,63,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,127,208,0,0,0,0,63,224,0,0,0,0,63,240,0,0,0,0,47,244,0,0,0,0,15,252,0,0,0,0,11,255,0,0,0,0,3,255,208,0,0,64,1,255,254,85,175,192,0,127,255,255,255,192,0,15,255,255,255,192,0,1,191,255,254,64,0,0,2,249,0,0,0,0,3,240,0,0,0,0,7,253,0,0,0,0,6,255,64,0,0,0,0,47,192,0,0,0,0,31,192,0,0,0,0,47,192,0,0,0,63,255,64,0,0,0,63,254,0,0,0,0,26,144,0,0, + // 0x00c8 È + 16,38,152,22,4,0,6,169,0,0,3,255,0,0,0,255,128,0,0,63,208,0,0,15,240,0,0,3,248,0,0,0,188,0,0,0,0,0,0,0,0,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x00c9 É + 16,38,152,22,4,0,0,0,10,168,0,0,63,240,0,0,127,208,0,0,255,64,0,3,253,0,0,11,240,0,0,15,128,0,0,0,0,0,0,0,0,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x00ca Ê + 16,38,152,22,4,0,0,10,164,0,0,63,252,0,0,191,255,0,2,254,191,192,7,248,31,224,31,224,7,248,62,0,0,189,0,0,0,0,0,0,0,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x00cb Ë + 16,37,148,22,4,0,1,64,1,64,7,240,15,224,15,244,15,240,11,244,15,240,2,224,7,208,0,0,0,0,0,0,0,0,0,0,0,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x00cc Ì + 12,38,114,14,1,0,106,144,0,63,240,0,15,248,0,3,252,0,0,255,0,0,63,128,0,11,192,0,0,0,0,0,0,106,170,169,127,255,254,127,255,254,11,255,228,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,1,255,128,127,255,253,127,255,254,127,255,254, + // 0x00cd Í + 13,38,152,14,1,0,0,1,170,64,0,3,255,0,0,11,252,0,0,15,240,0,0,63,192,0,0,191,0,0,0,248,0,0,0,0,0,0,0,0,0,0,106,170,169,0,127,255,254,0,127,255,254,0,11,255,228,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,1,255,128,0,127,255,253,0,127,255,254,0,127,255,254,0, + // 0x00ce Î + 14,38,152,14,0,0,0,106,144,0,0,255,240,0,3,255,252,0,11,250,255,0,31,224,191,128,127,64,31,224,248,0,2,240,0,0,0,0,0,0,0,0,26,170,170,64,31,255,255,128,31,255,255,128,2,255,249,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,127,224,0,31,255,255,64,31,255,255,128,31,255,255,128, + // 0x00cf Ï + 12,37,111,14,1,0,20,0,20,191,0,254,255,64,255,191,64,255,45,0,124,0,0,0,0,0,0,0,0,0,106,170,169,127,255,254,127,255,254,11,255,228,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,1,255,128,127,255,253,127,255,254,127,255,254, + // 0x00d0 Ð + 26,29,203,29,1,0,2,170,170,148,0,0,0,3,255,255,255,224,0,0,3,255,255,255,255,0,0,3,255,255,255,255,208,0,3,253,0,6,255,244,0,3,253,0,0,47,253,0,3,253,0,0,7,255,0,3,253,0,0,2,255,128,3,253,0,0,0,255,192,3,253,0,0,0,127,208,3,253,0,0,0,63,224,3,253,0,0,0,63,224,3,253,0,0,0,47,240,255,255,255,224,0,47,240,255,255,255,224,0,47,240,255,255,255,224,0,47,240,171,255,170,160,0,47,240,3,253,0,0,0,63,224,3,253,0,0,0,63,224,3,253,0,0,0,127,192,3,253,0,0,0,255,192,3,253,0,0,1,255,128,3,253,0,0,3,255,0,3,253,0,0,31,253,0,3,253,0,1,255,248,0,3,255,170,255,255,224,0,3,255,255,255,255,64,0,3,255,255,255,244,0,0,3,255,255,249,0,0,0, + // 0x00d1 Ñ + 23,37,222,31,4,0,0,1,144,0,40,0,0,31,254,0,188,0,0,63,255,230,248,0,0,191,191,255,240,0,0,252,3,255,208,0,0,244,0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,128,0,0,1,168,255,224,0,0,3,252,255,244,0,0,3,252,255,252,0,0,3,252,255,254,0,0,3,252,255,255,0,0,3,252,254,255,192,0,3,252,253,127,208,0,3,252,254,63,240,0,3,252,254,15,248,0,3,252,254,11,253,0,3,252,254,3,255,0,3,252,254,1,255,128,3,252,254,0,191,192,3,252,254,0,63,240,3,252,254,0,31,244,3,252,254,0,15,252,2,252,254,0,3,254,2,252,254,0,2,255,66,252,254,0,0,255,194,252,254,0,0,127,226,252,254,0,0,47,242,252,254,0,0,15,254,252,254,0,0,7,255,252,254,0,0,3,255,252,254,0,0,0,255,252,254,0,0,0,191,252,254,0,0,0,63,252,254,0,0,0,31,252, + // 0x00d2 Ò + 27,39,17,31,2,255,0,0,170,128,0,0,0,0,0,127,224,0,0,0,0,0,47,240,0,0,0,0,0,11,252,0,0,0,0,0,2,254,0,0,0,0,0,0,127,64,0,0,0,0,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x00d3 Ó + 27,39,17,31,2,255,0,0,0,1,170,0,0,0,0,0,7,254,0,0,0,0,0,15,252,0,0,0,0,0,47,240,0,0,0,0,0,127,192,0,0,0,0,0,254,0,0,0,0,0,1,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x00d4 Ô + 27,39,17,31,2,255,0,0,2,170,0,0,0,0,0,7,255,128,0,0,0,0,15,255,224,0,0,0,0,63,223,244,0,0,0,0,255,67,253,0,0,0,3,252,0,191,0,0,0,7,224,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x00d5 Õ + 27,38,10,31,2,255,0,0,26,0,2,128,0,0,0,255,240,7,192,0,0,3,255,254,111,192,0,0,7,250,255,255,64,0,0,11,192,47,254,0,0,0,11,64,2,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x00d6 Ö + 27,38,10,31,2,255,0,0,20,0,16,0,0,0,0,254,0,253,0,0,0,0,255,2,254,0,0,0,0,255,1,254,0,0,0,0,124,0,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x00d7 × + 17,18,90,23,3,5,36,0,0,5,0,189,0,0,47,64,255,64,0,191,192,127,208,2,255,0,31,244,11,252,0,7,253,47,240,0,1,255,191,192,0,0,127,255,0,0,0,31,252,0,0,0,47,253,0,0,0,191,255,64,0,2,255,191,208,0,11,252,31,244,0,47,240,7,253,0,191,192,1,255,64,255,0,0,127,192,124,0,0,31,0,16,0,0,4,0, + // 0x00d8 Ø + 27,32,224,31,2,254,0,0,0,0,0,9,0,0,0,27,255,228,31,128,0,7,255,255,255,127,128,0,47,255,255,255,255,0,0,191,255,239,255,253,0,2,255,224,0,31,255,0,7,255,64,0,15,255,128,15,252,0,0,47,255,192,31,248,0,0,127,191,224,47,240,0,0,255,47,240,63,224,0,2,252,31,244,63,208,0,7,244,15,248,127,192,0,15,240,15,252,127,192,0,47,192,11,252,191,192,0,127,64,11,252,191,192,0,254,0,11,252,191,192,3,252,0,11,252,127,192,11,244,0,11,252,127,192,15,224,0,15,252,127,208,63,192,0,15,248,63,224,191,64,0,15,244,63,241,254,0,0,47,240,31,247,252,0,0,63,240,15,255,240,0,0,191,208,11,255,208,0,1,255,192,3,255,208,0,11,255,64,0,255,254,85,191,254,0,1,255,255,255,255,244,0,3,255,255,255,255,208,0,11,240,191,255,249,0,0,2,208,1,85,0,0,0,0,0,0,0,0,0,0, + // 0x00d9 Ù + 23,39,234,30,3,255,0,10,168,0,0,0,0,7,254,0,0,0,0,2,255,0,0,0,0,0,191,192,0,0,0,0,31,224,0,0,0,0,7,244,0,0,0,0,1,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,248,0,0,11,255,255,144,0,0,0,21,80,0,0, + // 0x00da Ú + 23,39,234,30,3,255,0,0,0,26,164,0,0,0,0,63,240,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,3,252,0,0,0,0,15,224,0,0,0,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,248,0,0,11,255,255,144,0,0,0,21,80,0,0, + // 0x00db Û + 23,39,234,30,3,255,0,0,26,160,0,0,0,0,127,252,0,0,0,0,255,254,0,0,0,3,253,255,64,0,0,15,244,63,208,0,0,47,192,11,244,0,0,126,0,1,248,0,0,0,0,0,0,0,0,0,0,0,0,0,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,248,0,0,11,255,255,144,0,0,0,21,80,0,0, + // 0x00dc Ü + 23,38,228,30,3,255,0,1,64,1,0,0,0,15,240,15,208,0,0,15,240,31,224,0,0,15,240,31,224,0,0,7,208,11,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,248,0,0,11,255,255,144,0,0,0,21,80,0,0, + // 0x00dd Ý + 23,38,228,23,0,0,0,0,0,42,160,0,0,0,0,127,224,0,0,0,0,255,128,0,0,0,2,254,0,0,0,0,7,248,0,0,0,0,15,224,0,0,0,0,31,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,0,6,168,127,192,0,0,15,248,63,240,0,0,31,240,31,244,0,0,63,224,15,252,0,0,127,192,7,253,0,0,255,128,2,255,0,1,255,0,0,255,64,3,253,0,0,191,192,11,252,0,0,63,208,15,244,0,0,47,240,47,240,0,0,15,244,63,208,0,0,7,252,191,128,0,0,3,254,255,0,0,0,1,255,254,0,0,0,0,255,252,0,0,0,0,127,248,0,0,0,0,63,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0, + // 0x00de Þ + 19,29,145,24,4,0,170,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,255,169,0,0,255,255,255,244,0,255,255,255,255,0,255,255,255,255,192,255,0,2,255,208,255,0,0,63,240,255,0,0,31,240,255,0,0,15,244,255,0,0,15,244,255,0,0,15,244,255,0,0,15,244,255,0,0,31,240,255,0,0,63,240,255,0,1,255,208,255,170,191,255,128,255,255,255,254,0,255,255,255,244,0,255,255,250,64,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0, + // 0x00df ß + 22,32,192,26,3,255,0,1,169,64,0,0,0,191,255,253,0,0,7,255,255,255,192,0,31,255,255,255,240,0,63,248,0,127,248,0,127,208,0,15,252,0,191,192,0,7,252,0,191,128,0,7,252,0,191,128,0,15,248,0,191,128,0,47,240,0,191,128,0,255,192,0,191,128,3,255,0,0,191,128,15,248,0,0,191,128,47,240,0,0,191,128,63,208,0,0,191,128,63,224,0,0,191,128,47,248,0,0,191,128,15,255,0,0,191,128,3,255,224,0,191,128,0,255,252,0,191,128,0,31,255,0,191,128,0,3,255,128,191,128,0,0,191,192,191,128,0,0,63,208,191,128,0,0,63,208,191,128,0,0,63,208,191,128,0,0,63,208,191,128,228,0,255,192,191,128,255,255,255,128,191,128,255,255,254,0,191,128,127,255,244,0,0,0,1,85,0,0, + // 0x00e0 à + 18,32,160,23,2,255,0,170,128,0,0,0,191,208,0,0,0,63,240,0,0,0,15,248,0,0,0,2,253,0,0,0,0,191,0,0,0,0,31,64,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x00e1 á + 18,32,160,23,2,255,0,0,2,170,0,0,0,7,254,0,0,0,15,248,0,0,0,63,224,0,0,0,191,128,0,0,1,254,0,0,0,2,244,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x00e2 â + 18,32,160,23,2,255,0,2,170,0,0,0,11,255,128,0,0,31,255,208,0,0,127,223,240,0,0,255,3,252,0,3,252,0,255,0,11,208,0,47,128,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x00e3 ã + 18,31,155,23,2,255,0,25,0,2,128,1,255,224,11,192,3,255,254,111,128,11,251,255,255,0,15,192,63,253,0,15,64,6,160,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x00e4 ä + 18,31,155,23,2,255,0,20,0,80,0,0,253,1,252,0,1,255,3,253,0,1,254,2,253,0,0,184,0,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x00e5 å + 18,34,170,23,2,255,0,2,253,0,0,0,15,255,192,0,0,47,155,224,0,0,61,2,240,0,0,61,1,240,0,0,62,3,240,0,0,47,155,224,0,0,15,255,128,0,0,1,169,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x00e6 æ + 31,23,184,35,2,255,0,27,254,64,1,191,208,0,7,255,255,244,31,255,253,0,15,255,255,253,127,255,255,128,11,249,91,255,255,149,255,208,3,64,0,255,253,0,47,240,0,0,0,63,244,0,15,248,0,0,0,63,240,0,7,252,0,0,0,63,224,0,3,252,0,0,0,63,224,0,3,252,0,43,255,255,255,255,255,252,7,255,255,255,255,255,255,252,31,255,250,191,255,255,255,252,127,244,0,63,224,0,0,0,255,192,0,63,224,0,0,0,255,64,0,63,224,0,0,0,255,0,0,63,240,0,0,0,255,0,0,191,244,0,0,0,255,128,1,255,253,0,0,16,191,208,11,250,255,144,6,240,127,255,255,224,255,255,255,240,47,255,255,128,63,255,255,240,7,255,253,0,7,255,255,128,0,21,64,0,0,21,80,0, + // 0x00e7 ç + 16,32,128,20,2,246,0,6,255,228,0,127,255,255,2,255,255,255,11,255,234,253,31,253,0,8,63,240,0,0,127,208,0,0,191,192,0,0,191,128,0,0,255,128,0,0,255,64,0,0,255,64,0,0,255,64,0,0,255,128,0,0,191,192,0,0,127,192,0,0,63,224,0,0,47,244,0,1,15,254,64,111,7,255,255,255,1,255,255,255,0,47,255,248,0,0,253,0,0,1,244,0,0,3,254,0,0,1,191,192,0,0,31,208,0,0,15,224,0,0,31,208,0,47,255,192,0,47,255,0,0,10,144,0, + // 0x00e8 è + 19,32,160,23,2,255,0,170,128,0,0,0,191,208,0,0,0,47,240,0,0,0,11,248,0,0,0,2,253,0,0,0,0,191,0,0,0,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x00e9 é + 19,32,160,23,2,255,0,0,2,170,0,0,0,7,254,0,0,0,15,248,0,0,0,63,224,0,0,0,127,128,0,0,0,254,0,0,0,2,244,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x00ea ê + 19,32,160,23,2,255,0,2,170,0,0,0,11,255,128,0,0,31,255,208,0,0,63,223,244,0,0,255,3,252,0,3,252,0,255,0,11,224,0,47,128,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x00eb ë + 19,31,155,23,2,255,0,20,0,16,0,0,254,1,252,0,1,255,2,253,0,0,254,2,253,0,0,120,0,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x00ec ì + 9,31,93,11,0,0,170,64,0,191,208,0,63,240,0,15,248,0,3,253,0,0,191,0,0,47,64,0,0,0,0,0,0,1,169,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0,2,254,0, + // 0x00ed í + 9,31,93,11,3,0,0,170,128,2,255,64,3,254,0,15,248,0,47,224,0,127,64,0,189,0,0,0,0,0,0,0,0,106,64,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0, + // 0x00ee î + 15,31,124,11,254,0,0,42,160,0,0,191,244,0,1,255,253,0,7,253,255,0,15,240,127,192,63,128,15,240,189,0,2,244,0,0,0,0,0,0,0,0,0,26,144,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0, + // 0x00ef ï + 13,30,120,11,255,0,4,0,20,0,63,64,191,0,127,128,255,64,127,128,191,0,46,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0, + // 0x00f0 ð + 21,31,186,24,2,255,0,15,128,7,192,0,0,31,248,63,224,0,0,31,255,255,192,0,0,2,255,253,0,0,0,1,255,248,0,0,0,11,255,253,0,0,0,127,246,255,64,0,0,63,128,191,192,0,0,24,0,63,224,0,0,0,0,15,240,0,0,0,0,7,248,0,0,27,255,147,252,0,0,255,255,250,253,0,7,255,255,255,254,0,15,254,85,191,255,0,63,244,0,15,255,0,63,208,0,3,255,0,191,192,0,1,255,0,191,128,0,0,255,64,255,64,0,0,255,64,255,64,0,0,255,0,255,64,0,0,255,0,255,128,0,1,255,0,191,192,0,2,254,0,127,208,0,3,253,0,63,240,0,11,252,0,15,253,0,127,244,0,7,255,255,255,224,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x00f1 ñ + 19,30,150,25,3,0,0,25,0,2,128,0,255,224,11,192,3,255,254,111,128,7,250,255,255,0,15,192,47,253,0,11,64,2,160,0,0,0,0,0,0,0,0,0,0,0,105,0,191,228,0,191,11,255,255,64,191,63,255,255,208,191,255,170,255,240,191,248,0,47,248,191,240,0,15,252,191,208,0,7,252,191,192,0,7,252,191,192,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252, + // 0x00f2 ò + 21,32,192,24,2,255,0,106,144,0,0,0,0,63,240,0,0,0,0,15,248,0,0,0,0,3,253,0,0,0,0,0,255,0,0,0,0,0,63,128,0,0,0,0,11,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x00f3 ó + 21,32,192,24,2,255,0,0,0,170,128,0,0,0,3,255,64,0,0,0,7,253,0,0,0,0,15,244,0,0,0,0,63,208,0,0,0,0,191,64,0,0,0,0,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x00f4 ô + 21,32,192,24,2,255,0,0,170,64,0,0,0,3,255,192,0,0,0,11,255,240,0,0,0,47,235,252,0,0,0,127,129,254,0,0,1,254,0,127,128,0,2,244,0,11,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x00f5 õ + 21,31,186,24,2,255,0,6,64,1,144,0,0,191,248,3,224,0,1,255,255,159,208,0,3,250,255,255,192,0,3,208,31,255,0,0,3,192,1,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x00f6 ö + 21,31,186,24,2,255,0,4,0,20,0,0,0,127,0,191,0,0,0,191,128,255,0,0,0,191,64,255,0,0,0,46,0,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x00f7 ÷ + 19,20,100,23,2,4,0,0,80,0,0,0,2,253,0,0,0,3,254,0,0,0,3,254,0,0,0,2,253,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,170,170,170,170,168,255,255,255,255,252,255,255,255,255,252,170,170,170,170,164,0,0,0,0,0,0,0,0,0,0,0,0,184,0,0,0,3,254,0,0,0,3,254,0,0,0,3,254,0,0,0,1,252,0,0,0,0,16,0,0, + // 0x00f8 ø + 21,25,150,24,2,254,0,0,0,0,64,0,0,6,255,144,248,0,0,127,255,255,252,0,2,255,255,255,244,0,11,255,234,255,240,0,31,252,0,63,248,0,63,240,0,191,252,0,63,208,1,255,254,0,127,192,3,254,255,0,191,128,11,241,255,0,255,128,31,208,255,0,255,64,63,128,255,64,255,64,255,0,255,64,255,129,253,0,255,0,191,131,248,0,255,0,191,207,240,1,255,0,127,239,192,2,254,0,63,255,64,3,253,0,31,254,0,15,252,0,15,254,64,127,244,0,7,255,255,255,208,0,15,255,255,255,64,0,47,223,255,248,0,0,11,0,85,0,0,0,0,0,0,0,0,0, + // 0x00f9 ù + 19,32,160,25,3,255,0,170,128,0,0,0,191,208,0,0,0,47,240,0,0,0,11,248,0,0,0,2,253,0,0,0,0,191,0,0,0,0,31,128,0,0,0,0,0,0,0,0,0,0,0,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,2,252,0,5,80,0,0, + // 0x00fa ú + 19,32,160,25,3,255,0,0,2,170,0,0,0,7,254,0,0,0,15,248,0,0,0,47,224,0,0,0,127,128,0,0,0,254,0,0,0,2,244,0,0,0,0,0,0,0,0,0,0,0,0,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,2,252,0,5,80,0,0, + // 0x00fb û + 19,32,160,25,3,255,0,2,170,0,0,0,11,255,128,0,0,31,255,208,0,0,63,223,244,0,0,255,3,252,0,3,252,0,255,0,7,224,0,31,128,0,0,0,0,0,0,0,0,0,0,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,2,252,0,5,80,0,0, + // 0x00fc ü + 19,31,155,25,3,255,0,20,0,16,0,0,254,1,252,0,1,255,2,253,0,0,255,2,253,0,0,120,0,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,2,252,0,5,80,0,0, + // 0x00fd ý + 21,41,246,21,0,246,0,0,0,170,128,0,0,0,1,255,128,0,0,0,3,254,0,0,0,0,11,248,0,0,0,0,31,224,0,0,0,0,63,128,0,0,0,0,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,0,106,128,191,192,0,0,255,128,63,208,0,0,255,64,47,224,0,2,255,0,31,240,0,3,254,0,15,244,0,3,252,0,11,252,0,11,252,0,3,252,0,15,244,0,2,254,0,31,240,0,1,255,0,47,224,0,0,255,64,63,208,0,0,191,128,127,192,0,0,63,192,191,128,0,0,47,208,255,0,0,0,31,225,255,0,0,0,15,242,253,0,0,0,11,243,252,0,0,0,3,251,248,0,0,0,2,255,244,0,0,0,1,255,240,0,0,0,0,255,224,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,255,64,0,0,0,1,255,0,0,0,0,3,254,0,0,0,0,7,252,0,0,0,0,47,248,0,0,0,127,255,240,0,0,0,127,255,192,0,0,0,127,254,0,0,0,0,26,144,0,0,0,0, + // 0x00fe þ + 20,41,205,25,3,246,85,0,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,191,224,0,191,139,255,254,0,191,111,255,255,192,191,255,170,255,224,191,248,0,47,244,191,224,0,15,252,191,192,0,7,252,191,192,0,3,253,191,128,0,3,254,191,128,0,2,254,191,128,0,2,254,191,128,0,2,254,191,128,0,2,254,191,128,0,3,254,191,192,0,3,253,191,192,0,7,252,191,224,0,11,252,191,244,0,31,248,191,254,65,191,240,191,191,255,255,208,191,95,255,255,64,191,130,255,248,0,191,128,21,64,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,106,64,0,0,0, + // 0x00ff ÿ + 21,40,240,21,0,246,0,5,0,4,0,0,0,63,128,127,0,0,0,127,192,191,64,0,0,63,128,191,64,0,0,30,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,0,106,128,191,192,0,0,255,128,63,208,0,0,255,64,47,224,0,2,255,0,31,240,0,3,254,0,15,244,0,3,252,0,11,252,0,11,252,0,3,252,0,15,244,0,2,254,0,31,240,0,1,255,0,47,224,0,0,255,64,63,208,0,0,191,128,127,192,0,0,63,192,191,128,0,0,47,208,255,0,0,0,31,225,255,0,0,0,15,242,253,0,0,0,11,243,252,0,0,0,3,251,248,0,0,0,2,255,244,0,0,0,1,255,240,0,0,0,0,255,224,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,255,64,0,0,0,1,255,0,0,0,0,3,254,0,0,0,0,7,252,0,0,0,0,47,248,0,0,0,127,255,240,0,0,0,127,255,192,0,0,0,127,254,0,0,0,0,26,144,0,0,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_ASCII_29.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_ASCII_29.cpp new file mode 100644 index 0000000000..fddcecf829 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_ASCII_29.cpp @@ -0,0 +1,222 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium ASCII 40pt, capital 'A' height: 29px, width: 100%, range: 0x0020-0x007e +extern const uint8_t NotoSans_Medium_ASCII_29[12481] = { + 130,29,32,0,126,0,38,246, // unifont_t + // 0x0020 " " + 0,0,0,10,0,0, + // 0x0021 ! + 5,30,60,11,3,255,170,128,255,192,255,192,255,192,255,192,255,128,191,128,191,128,191,128,191,128,191,64,127,64,127,64,127,64,127,64,127,0,63,0,63,0,63,0,63,0,42,0,0,0,0,0,0,0,127,64,255,192,255,192,255,192,191,128,25,0, + // 0x0022 " + 13,11,44,17,2,18,42,64,106,64,127,192,191,64,63,128,191,64,63,128,191,0,63,128,127,0,63,64,127,0,63,64,127,0,63,64,127,0,63,64,63,0,47,0,63,0,31,0,62,0, + // 0x0023 # + 24,29,174,26,1,0,0,0,42,0,26,0,0,0,127,0,63,64,0,0,190,0,63,0,0,0,253,0,127,0,0,0,253,0,126,0,0,0,252,0,190,0,0,1,252,0,253,0,0,2,248,0,252,0,0,3,248,1,252,0,47,255,255,255,255,255,47,255,255,255,255,255,31,255,255,255,255,254,0,7,224,3,240,0,0,11,224,7,240,0,0,15,208,7,240,0,0,15,192,11,224,0,0,31,192,15,208,0,85,111,213,95,213,80,255,255,255,255,255,244,255,255,255,255,255,244,255,255,255,255,255,244,0,127,0,63,64,0,0,127,0,63,0,0,0,190,0,127,0,0,0,253,0,127,0,0,0,252,0,190,0,0,0,252,0,253,0,0,1,252,0,252,0,0,2,248,0,252,0,0, + // 0x0024 $ + 19,34,170,23,2,253,0,0,84,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,47,255,233,0,2,255,255,255,224,15,255,255,255,224,63,254,254,255,208,127,208,248,6,192,191,128,248,0,0,191,64,248,0,0,191,128,248,0,0,191,192,248,0,0,63,248,248,0,0,47,255,248,0,0,7,255,255,64,0,0,191,255,248,0,0,11,255,255,128,0,0,255,255,224,0,0,249,191,240,0,0,248,15,248,0,0,248,11,252,0,0,248,7,252,0,0,248,11,248,164,0,248,31,244,191,233,254,255,240,191,255,255,255,192,191,255,255,254,0,6,255,255,144,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,248,0,0,0,0,80,0,0, + // 0x0025 % + 31,30,240,34,2,255,2,254,64,0,0,42,64,0,15,255,224,0,0,127,0,0,63,255,248,0,0,254,0,0,127,131,252,0,2,252,0,0,191,0,253,0,3,244,0,0,254,0,254,0,11,240,0,0,253,0,191,0,15,208,0,0,253,0,127,0,63,192,0,0,252,0,127,0,127,0,0,0,252,0,127,0,254,0,0,0,253,0,127,1,252,0,0,0,253,0,191,3,248,5,80,0,254,0,254,11,240,127,253,0,191,0,253,15,209,255,255,64,63,131,252,47,195,254,191,192,47,255,248,63,71,244,15,224,15,255,224,255,11,240,11,240,1,254,65,253,15,224,7,240,0,0,3,248,15,224,7,240,0,0,7,240,15,224,3,244,0,0,15,224,15,208,3,244,0,0,47,192,15,224,3,244,0,0,63,64,15,224,7,240,0,0,191,0,15,224,7,240,0,0,253,0,11,240,11,240,0,2,252,0,3,244,31,224,0,7,244,0,2,254,191,192,0,15,224,0,0,255,255,64,0,31,192,0,0,63,253,0,0,0,0,0,0,1,64,0, + // 0x0026 & + 27,30,210,29,2,255,0,6,255,144,0,0,0,0,63,255,253,0,0,0,0,255,255,255,64,0,0,3,255,150,255,192,0,0,3,253,0,127,208,0,0,7,252,0,63,208,0,0,7,248,0,47,208,0,0,7,252,0,63,208,0,0,3,252,0,127,192,0,0,2,254,0,255,128,0,0,0,255,71,255,0,0,0,0,127,255,252,0,0,0,0,47,255,224,0,0,0,0,47,255,64,0,0,0,1,255,255,64,0,26,144,7,255,255,224,0,63,224,31,253,63,248,0,63,192,63,240,15,254,0,127,192,191,192,3,255,128,255,64,255,128,0,255,225,255,0,255,64,0,47,251,253,0,255,64,0,11,255,252,0,255,128,0,2,255,240,0,255,192,0,0,255,240,0,191,240,0,11,255,252,0,63,254,85,191,255,255,0,31,255,255,255,242,255,192,7,255,255,255,128,191,240,0,127,255,248,0,47,252,0,1,84,0,0,0,0, + // 0x0027 ' + 5,11,22,9,2,18,42,64,127,192,63,128,63,128,63,128,63,64,63,64,63,64,63,64,47,0,31,0, + // 0x0028 ( + 10,36,108,12,1,249,0,6,160,0,31,224,0,63,192,0,191,64,0,255,0,2,253,0,3,252,0,11,248,0,15,240,0,15,240,0,31,224,0,47,208,0,63,192,0,63,192,0,63,192,0,127,128,0,127,128,0,127,128,0,127,128,0,127,128,0,127,192,0,63,192,0,63,192,0,63,192,0,47,208,0,31,224,0,15,240,0,15,240,0,11,248,0,3,252,0,2,253,0,0,255,0,0,191,64,0,63,192,0,15,224,0,1,80, + // 0x0029 ) + 10,36,108,12,1,249,106,0,0,63,192,0,31,224,0,15,240,0,7,248,0,3,252,0,1,254,0,0,255,0,0,191,64,0,127,128,0,63,192,0,63,192,0,47,208,0,47,224,0,31,224,0,31,240,0,31,240,0,15,240,0,15,240,0,31,240,0,31,240,0,31,224,0,47,224,0,47,208,0,63,192,0,63,192,0,127,128,0,191,64,0,255,0,1,254,0,3,252,0,7,248,0,15,240,0,47,208,0,63,128,0,21,0,0, + // 0x002a * + 20,19,95,22,1,12,0,0,85,0,0,0,0,255,0,0,0,0,255,0,0,0,0,254,0,0,0,0,254,0,0,0,0,190,0,0,57,0,189,0,108,63,244,125,47,252,63,255,255,255,252,127,255,255,255,253,1,91,255,165,64,0,3,255,192,0,0,15,239,224,0,0,47,199,244,0,0,127,195,252,0,0,255,65,255,0,2,255,0,255,128,0,189,0,126,0,0,8,0,32,0, + // 0x002b + + 19,20,100,23,2,4,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,170,171,254,170,168,255,255,255,255,252,255,255,255,255,252,170,170,254,170,164,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,168,0,0, + // 0x002c , + 7,11,22,11,1,250,6,168,11,252,15,248,15,240,15,240,31,224,47,192,63,128,63,64,127,0,0,0, + // 0x002d - + 11,5,15,13,1,8,106,170,160,191,255,244,191,255,244,191,255,244,0,0,0, + // 0x002e . + 5,6,12,11,3,255,127,64,255,192,255,192,255,192,191,128,25,0, + // 0x002f / + 15,29,116,15,0,0,0,0,2,168,0,0,7,248,0,0,15,244,0,0,15,240,0,0,47,224,0,0,63,192,0,0,127,192,0,0,191,64,0,0,255,0,0,1,254,0,0,3,253,0,0,3,252,0,0,7,248,0,0,15,240,0,0,15,240,0,0,47,208,0,0,63,192,0,0,127,128,0,0,191,64,0,0,255,0,0,1,254,0,0,3,252,0,0,3,252,0,0,11,244,0,0,15,240,0,0,31,224,0,0,47,208,0,0,63,192,0,0,127,128,0,0, + // 0x0030 0 + 19,30,150,23,2,255,0,11,255,64,0,0,191,255,244,0,3,255,255,254,0,11,255,171,255,64,31,248,0,255,192,63,224,0,63,208,63,192,0,31,240,127,192,0,15,240,191,128,0,15,244,255,64,0,11,248,255,64,0,7,252,255,0,0,7,252,255,0,0,7,252,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,0,0,7,252,255,0,0,7,252,255,0,0,7,252,255,64,0,11,248,191,128,0,11,248,127,128,0,15,244,63,192,0,31,240,63,208,0,47,240,31,240,0,127,208,15,254,70,255,192,3,255,255,255,0,0,255,255,252,0,0,47,255,224,0,0,0,84,0,0, + // 0x0031 1 + 12,29,87,23,3,0,0,0,169,0,3,255,0,31,255,0,191,255,2,255,255,15,253,255,127,240,255,127,193,255,30,1,255,4,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255,0,1,255, + // 0x0032 2 + 19,29,145,23,2,0,0,27,254,128,0,2,255,255,248,0,31,255,255,255,0,191,255,175,255,192,127,208,0,255,208,30,0,0,63,224,0,0,0,47,240,0,0,0,31,240,0,0,0,31,240,0,0,0,31,240,0,0,0,63,224,0,0,0,63,192,0,0,0,255,128,0,0,1,255,0,0,0,7,253,0,0,0,15,248,0,0,0,63,224,0,0,0,255,192,0,0,3,255,0,0,0,15,252,0,0,0,63,240,0,0,0,255,192,0,0,3,254,0,0,0,15,248,0,0,0,63,224,0,0,0,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252, + // 0x0033 3 + 20,30,150,23,1,255,0,27,255,160,0,2,255,255,254,0,31,255,255,255,192,63,255,171,255,240,15,208,0,47,244,6,0,0,15,248,0,0,0,11,252,0,0,0,7,252,0,0,0,7,252,0,0,0,15,248,0,0,0,31,240,0,0,0,191,208,0,21,175,255,64,0,63,255,244,0,0,63,255,249,0,0,63,255,255,192,0,0,1,191,244,0,0,0,15,252,0,0,0,3,253,0,0,0,3,254,0,0,0,2,255,0,0,0,2,255,0,0,0,3,254,0,0,0,7,253,96,0,0,31,252,127,148,5,255,244,127,255,255,255,224,127,255,255,255,64,11,255,255,244,0,0,5,84,0,0, + // 0x0034 4 + 21,29,174,23,1,0,0,0,0,42,128,0,0,0,0,255,192,0,0,0,2,255,192,0,0,0,7,255,192,0,0,0,15,255,192,0,0,0,47,255,192,0,0,0,127,127,192,0,0,0,255,63,192,0,0,2,252,63,192,0,0,7,244,63,192,0,0,15,224,63,192,0,0,63,192,63,192,0,0,127,64,63,192,0,0,254,0,63,192,0,3,252,0,63,192,0,11,244,0,63,192,0,31,224,0,63,192,0,63,192,0,63,192,0,191,0,0,63,192,0,255,255,255,255,255,192,255,255,255,255,255,192,255,255,255,255,255,192,170,170,170,191,234,128,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0, + // 0x0035 5 + 19,30,150,23,2,255,10,170,170,170,64,15,255,255,255,192,15,255,255,255,192,15,255,255,255,192,15,240,0,0,0,31,224,0,0,0,31,224,0,0,0,31,208,0,0,0,47,208,0,0,0,47,208,0,0,0,47,192,0,0,0,63,218,170,64,0,63,255,255,248,0,63,255,255,255,0,47,255,255,255,192,1,0,1,255,224,0,0,0,63,240,0,0,0,15,244,0,0,0,15,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,15,244,0,0,0,47,240,144,0,0,191,224,191,144,27,255,192,191,255,255,255,0,191,255,255,252,0,27,255,255,144,0,0,21,80,0,0, + // 0x0036 6 + 19,30,150,23,2,255,0,0,27,255,128,0,7,255,255,192,0,47,255,255,192,0,255,254,170,192,3,255,128,0,0,11,253,0,0,0,15,244,0,0,0,47,224,0,0,0,63,192,0,0,0,63,192,0,0,0,127,128,0,0,0,191,65,255,228,0,255,79,255,255,0,255,127,255,255,192,255,255,85,255,240,255,244,0,47,244,255,192,0,15,248,255,128,0,7,252,255,64,0,3,252,255,64,0,3,252,191,64,0,3,252,191,128,0,3,252,127,192,0,7,252,63,224,0,15,248,31,244,0,47,240,15,254,65,255,224,3,255,255,255,192,0,255,255,255,0,0,31,255,244,0,0,0,85,0,0, + // 0x0037 7 + 20,29,145,23,1,0,42,170,170,170,170,127,255,255,255,255,127,255,255,255,255,127,255,255,255,255,0,0,0,2,254,0,0,0,3,252,0,0,0,7,252,0,0,0,15,244,0,0,0,31,240,0,0,0,63,208,0,0,0,127,192,0,0,0,255,128,0,0,1,255,0,0,0,2,254,0,0,0,3,252,0,0,0,11,252,0,0,0,15,244,0,0,0,47,240,0,0,0,63,208,0,0,0,127,192,0,0,0,255,128,0,0,1,255,0,0,0,3,254,0,0,0,7,252,0,0,0,15,252,0,0,0,15,244,0,0,0,47,240,0,0,0,63,208,0,0,0,191,192,0,0, + // 0x0038 8 + 19,30,150,23,2,255,0,27,255,144,0,1,255,255,253,0,7,255,255,255,64,31,254,90,255,192,63,240,0,127,224,63,192,0,31,240,127,192,0,15,240,63,192,0,15,240,63,192,0,15,240,63,224,0,47,224,31,248,0,191,192,11,255,71,255,0,2,255,255,252,0,0,127,255,208,0,0,127,255,224,0,2,255,255,253,0,15,254,11,255,128,63,240,0,191,224,127,192,0,31,244,255,64,0,11,248,255,0,0,3,252,255,0,0,3,252,255,0,0,3,252,255,64,0,7,252,191,192,0,15,248,127,244,0,127,240,47,255,255,255,192,7,255,255,255,0,0,191,255,244,0,0,1,84,0,0, + // 0x0039 9 + 19,30,150,23,2,255,0,27,254,64,0,1,255,255,244,0,7,255,255,253,0,31,255,175,255,64,63,240,0,255,192,127,192,0,63,224,255,128,0,31,240,255,0,0,15,244,255,0,0,11,248,255,0,0,7,252,255,0,0,7,252,255,0,0,7,252,255,64,0,15,252,191,192,0,47,252,63,244,1,255,252,47,255,255,251,252,11,255,255,215,252,1,255,255,71,248,0,6,148,11,244,0,0,0,15,244,0,0,0,15,240,0,0,0,31,224,0,0,0,63,192,0,0,0,255,128,0,0,3,255,0,4,0,111,253,0,15,255,255,244,0,15,255,255,192,0,15,255,249,0,0,1,85,0,0,0, + // 0x003a : + 5,23,46,11,3,255,127,64,255,192,255,192,255,192,255,128,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,64,255,192,255,192,255,192,191,128,25,0, + // 0x003b ; + 7,28,56,11,1,250,7,240,15,252,31,252,31,252,15,248,2,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,164,15,248,15,244,31,240,31,224,47,208,63,192,63,64,127,0,190,0,0,0, + // 0x003c < + 19,21,105,23,2,4,0,0,0,0,4,0,0,0,0,124,0,0,0,7,252,0,0,0,127,252,0,0,7,255,224,0,0,127,254,0,0,7,255,224,0,0,127,254,0,0,7,255,208,0,0,127,253,0,0,0,255,208,0,0,0,255,224,0,0,0,127,255,64,0,0,7,255,248,0,0,0,47,255,144,0,0,2,255,253,0,0,0,31,255,224,0,0,1,191,252,0,0,0,11,252,0,0,0,0,124,0,0,0,0,4, + // 0x003d = + 19,12,60,23,2,8,170,170,170,170,164,255,255,255,255,248,255,255,255,255,248,170,170,170,170,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,248,255,255,255,255,248,255,255,255,255,248,85,85,85,85,84, + // 0x003e > + 19,20,100,23,2,4,224,0,0,0,0,254,0,0,0,0,255,224,0,0,0,127,254,0,0,0,6,255,224,0,0,0,47,254,0,0,0,2,255,224,0,0,0,47,255,64,0,0,2,255,244,0,0,0,31,252,0,0,0,47,252,0,0,7,255,244,0,0,191,254,64,0,27,255,224,0,1,255,253,0,0,47,255,208,0,0,255,248,0,0,0,255,128,0,0,0,244,0,0,0,0,64,0,0,0,0, + // 0x003f ? + 17,30,150,18,0,255,0,111,254,64,0,31,255,255,240,0,127,255,255,252,0,63,254,175,255,0,46,64,1,255,64,0,0,0,191,128,0,0,0,127,192,0,0,0,63,192,0,0,0,127,128,0,0,0,255,64,0,0,2,255,0,0,0,11,253,0,0,0,47,244,0,0,0,255,208,0,0,3,255,64,0,0,11,252,0,0,0,15,240,0,0,0,31,208,0,0,0,31,192,0,0,0,31,192,0,0,0,10,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,208,0,0,0,63,240,0,0,0,63,240,0,0,0,63,240,0,0,0,47,224,0,0,0,6,64,0,0, + // 0x0040 @ + 32,33,8,36,2,252,0,0,0,5,165,0,0,0,0,0,6,255,255,249,0,0,0,0,127,255,255,255,208,0,0,3,255,250,86,255,248,0,0,31,253,0,0,11,255,0,0,127,208,0,0,0,191,128,0,255,0,0,0,0,47,208,3,252,0,0,0,0,11,240,7,240,0,27,254,144,3,248,15,224,0,255,255,252,2,252,31,192,7,255,255,252,0,252,63,128,15,244,2,252,0,253,63,0,63,192,1,252,0,190,127,0,127,64,1,252,0,190,191,0,191,0,2,252,0,190,190,0,254,0,2,252,0,190,190,0,254,0,2,252,0,190,254,0,254,0,3,252,0,253,190,0,254,0,3,252,0,252,190,0,191,0,7,252,1,252,191,0,127,64,15,252,3,244,127,0,63,224,127,190,31,240,63,0,31,255,253,63,255,208,63,128,7,255,244,31,255,64,47,192,0,106,64,2,164,0,15,240,0,0,0,0,0,0,7,248,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,255,224,0,0,27,0,0,0,47,255,169,107,255,0,0,0,7,255,255,255,255,0,0,0,0,111,255,255,228,0,0,0,0,0,86,84,0,0,0, + // 0x0041 A + 26,29,203,26,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x0042 B + 20,29,145,26,4,0,170,170,165,0,0,255,255,255,249,0,255,255,255,255,192,255,255,255,255,240,255,0,1,191,248,255,0,0,31,252,255,0,0,11,252,255,0,0,7,252,255,0,0,7,252,255,0,0,7,252,255,0,0,15,248,255,0,0,47,240,255,170,171,255,192,255,255,255,249,0,255,255,255,254,0,255,255,255,255,224,255,0,0,111,248,255,0,0,11,253,255,0,0,3,255,255,0,0,2,255,255,0,0,1,255,255,0,0,2,255,255,0,0,3,255,255,0,0,7,254,255,0,0,31,253,255,170,171,255,248,255,255,255,255,224,255,255,255,255,64,255,255,255,228,0, + // 0x0043 C + 22,30,180,25,2,255,0,0,27,255,228,0,0,2,255,255,255,208,0,31,255,255,255,224,0,127,255,255,255,208,1,255,244,0,27,192,3,255,128,0,0,0,11,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,63,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,127,208,0,0,0,0,63,224,0,0,0,0,63,240,0,0,0,0,47,244,0,0,0,0,15,252,0,0,0,0,11,255,0,0,0,0,3,255,208,0,0,64,1,255,254,85,175,192,0,127,255,255,255,192,0,15,255,255,255,192,0,1,191,255,254,64,0,0,1,85,0,0, + // 0x0044 D + 23,29,174,29,4,0,170,170,165,0,0,0,255,255,255,248,0,0,255,255,255,255,192,0,255,255,255,255,244,0,255,0,1,191,253,0,255,0,0,11,255,64,255,0,0,1,255,192,255,0,0,0,191,224,255,0,0,0,63,240,255,0,0,0,31,244,255,0,0,0,15,248,255,0,0,0,15,248,255,0,0,0,11,252,255,0,0,0,11,252,255,0,0,0,11,252,255,0,0,0,11,252,255,0,0,0,11,252,255,0,0,0,15,248,255,0,0,0,15,248,255,0,0,0,31,244,255,0,0,0,63,240,255,0,0,0,127,224,255,0,0,0,255,192,255,0,0,7,255,64,255,0,0,127,254,0,255,170,191,255,248,0,255,255,255,255,208,0,255,255,255,253,0,0,255,255,254,64,0,0, + // 0x0045 E + 16,29,116,22,4,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x0046 F + 16,29,116,21,4,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,170,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0, + // 0x0047 G + 24,30,180,29,2,255,0,0,6,255,250,64,0,1,191,255,255,249,0,11,255,255,255,253,0,63,255,255,255,252,0,255,249,0,1,184,3,255,192,0,0,0,11,255,0,0,0,0,15,252,0,0,0,0,47,244,0,0,0,0,63,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,5,85,85,191,192,0,31,255,255,191,192,0,31,255,255,127,192,0,31,255,255,127,192,0,5,86,255,127,208,0,0,0,255,63,224,0,0,0,255,63,240,0,0,0,255,31,244,0,0,0,255,15,252,0,0,0,255,11,255,0,0,0,255,3,255,208,0,0,255,0,255,254,85,91,255,0,63,255,255,255,255,0,11,255,255,255,255,0,0,191,255,255,228,0,0,0,85,64,0, + // 0x0048 H + 22,29,174,30,4,0,170,0,0,0,10,160,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,234,170,170,191,240,255,255,255,255,255,240,255,255,255,255,255,240,255,255,255,255,255,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240, + // 0x0049 I + 12,29,87,14,1,0,106,170,169,127,255,254,127,255,254,11,255,228,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,1,255,128,127,255,253,127,255,254,127,255,254, + // 0x004a J + 11,37,111,12,253,248,0,2,168,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,7,252,0,11,252,0,15,248,0,63,240,255,255,224,255,255,192,255,254,0,111,160,0, + // 0x004b K + 21,29,174,25,4,0,170,0,0,0,170,64,255,0,0,3,255,0,255,0,0,15,252,0,255,0,0,47,244,0,255,0,0,127,208,0,255,0,1,255,128,0,255,0,3,254,0,0,255,0,15,252,0,0,255,0,63,240,0,0,255,0,255,192,0,0,255,2,255,0,0,0,255,11,253,0,0,0,255,31,244,0,0,0,255,127,244,0,0,0,255,255,252,0,0,0,255,255,255,0,0,0,255,242,255,128,0,0,255,192,255,208,0,0,255,0,63,240,0,0,255,0,31,248,0,0,255,0,15,253,0,0,255,0,3,255,0,0,255,0,1,255,128,0,255,0,0,191,208,0,255,0,0,63,240,0,255,0,0,15,252,0,255,0,0,11,254,0,255,0,0,3,255,0,255,0,0,0,255,192, + // 0x004c L + 17,29,145,21,4,0,170,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,234,170,170,0,255,255,255,255,64,255,255,255,255,64,255,255,255,255,64, + // 0x004d M + 29,29,232,37,4,0,170,160,0,0,0,2,170,128,255,244,0,0,0,11,255,192,255,248,0,0,0,15,255,192,255,252,0,0,0,31,255,192,255,253,0,0,0,47,255,192,254,255,0,0,0,63,191,192,254,255,0,0,0,127,127,192,254,127,64,0,0,255,63,192,254,63,192,0,0,253,63,192,254,47,192,0,2,252,63,192,254,31,224,0,3,248,63,192,254,15,240,0,7,244,127,192,254,11,244,0,11,240,127,192,254,7,248,0,15,224,127,192,254,3,252,0,31,208,127,192,254,2,253,0,63,192,127,192,254,0,254,0,63,128,127,192,254,0,255,0,191,0,127,192,254,0,191,64,255,0,127,192,254,0,63,193,253,0,127,192,254,0,63,194,252,0,127,192,254,0,31,211,248,0,127,192,254,0,15,247,244,0,127,192,254,0,11,255,240,0,127,192,254,0,7,255,224,0,127,192,254,0,3,255,192,0,127,192,254,0,2,255,192,0,127,192,254,0,1,255,128,0,127,192,254,0,0,255,0,0,127,192, + // 0x004e N + 23,29,174,31,4,0,170,128,0,0,1,168,255,224,0,0,3,252,255,244,0,0,3,252,255,252,0,0,3,252,255,254,0,0,3,252,255,255,0,0,3,252,254,255,192,0,3,252,253,127,208,0,3,252,254,63,240,0,3,252,254,15,248,0,3,252,254,11,253,0,3,252,254,3,255,0,3,252,254,1,255,128,3,252,254,0,191,192,3,252,254,0,63,240,3,252,254,0,31,244,3,252,254,0,15,252,2,252,254,0,3,254,2,252,254,0,2,255,66,252,254,0,0,255,194,252,254,0,0,127,226,252,254,0,0,47,242,252,254,0,0,15,254,252,254,0,0,7,255,252,254,0,0,3,255,252,254,0,0,0,255,252,254,0,0,0,191,252,254,0,0,0,63,252,254,0,0,0,31,252, + // 0x004f O + 27,30,210,31,2,255,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x0050 P + 19,29,145,24,4,0,170,170,148,0,0,255,255,255,224,0,255,255,255,254,0,255,255,255,255,128,255,0,7,255,208,255,0,0,127,240,255,0,0,47,240,255,0,0,15,244,255,0,0,15,244,255,0,0,15,244,255,0,0,15,244,255,0,0,31,240,255,0,0,63,240,255,0,1,255,208,255,150,175,255,192,255,255,255,255,0,255,255,255,248,0,255,255,254,64,0,255,64,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0, + // 0x0051 Q + 27,36,252,31,2,249,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,248,0,0,11,255,255,255,208,0,0,0,191,255,253,0,0,0,0,1,87,255,0,0,0,0,0,1,255,192,0,0,0,0,0,191,240,0,0,0,0,0,63,252,0,0,0,0,0,15,254,0,0,0,0,0,3,255,128,0,0,0,0,1,255,208, + // 0x0052 R + 21,29,174,25,4,0,170,170,148,0,0,0,255,255,255,228,0,0,255,255,255,254,0,0,255,255,255,255,192,0,255,0,22,255,224,0,255,0,0,127,240,0,255,0,0,31,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,47,240,0,255,0,0,127,224,0,255,64,23,255,192,0,255,255,255,255,0,0,255,255,255,248,0,0,255,255,255,192,0,0,255,149,127,224,0,0,255,0,31,244,0,0,255,0,11,252,0,0,255,0,3,254,0,0,255,0,2,255,0,0,255,0,0,255,192,0,255,0,0,127,208,0,255,0,0,47,240,0,255,0,0,15,248,0,255,0,0,11,253,0,255,0,0,3,255,0,255,0,0,1,255,128, + // 0x0053 S + 18,30,150,22,2,255,0,27,255,164,0,1,255,255,255,128,11,255,255,255,208,31,255,255,255,192,63,244,0,27,128,127,208,0,0,0,191,192,0,0,0,191,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,240,0,0,0,47,253,0,0,0,15,255,224,0,0,3,255,254,0,0,0,191,255,224,0,0,11,255,253,0,0,0,127,255,64,0,0,7,255,192,0,0,0,191,224,0,0,0,47,240,0,0,0,31,240,0,0,0,15,240,0,0,0,15,240,0,0,0,47,240,224,0,0,127,224,255,165,91,255,192,255,255,255,255,0,255,255,255,252,0,47,255,255,144,0,0,21,80,0,0, + // 0x0054 T + 22,29,174,23,0,0,106,170,170,170,170,160,127,255,255,255,255,240,127,255,255,255,255,240,127,255,255,255,255,240,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0, + // 0x0055 U + 23,30,180,30,3,255,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,248,0,0,11,255,255,144,0,0,0,21,80,0,0, + // 0x0056 V + 25,29,203,25,0,0,170,64,0,0,0,170,64,191,192,0,0,0,255,0,127,192,0,0,2,255,0,63,208,0,0,3,254,0,47,240,0,0,7,252,0,15,240,0,0,11,252,0,15,248,0,0,15,244,0,11,252,0,0,31,240,0,3,252,0,0,47,224,0,3,254,0,0,63,208,0,1,255,0,0,127,192,0,0,255,0,0,191,128,0,0,255,128,0,255,64,0,0,127,192,1,255,0,0,0,63,192,2,254,0,0,0,47,224,3,253,0,0,0,31,240,7,252,0,0,0,15,244,11,248,0,0,0,11,248,15,240,0,0,0,7,252,31,240,0,0,0,3,253,47,224,0,0,0,2,254,63,192,0,0,0,0,255,127,192,0,0,0,0,255,191,64,0,0,0,0,191,255,0,0,0,0,0,63,254,0,0,0,0,0,63,253,0,0,0,0,0,31,252,0,0,0,0,0,15,248,0,0,0, + // 0x0057 W + 37,29,34,38,0,0,106,64,0,0,106,128,0,0,42,128,127,192,0,0,191,192,0,0,127,192,63,208,0,0,255,208,0,0,191,128,63,224,0,1,255,240,0,0,255,64,47,240,0,2,255,240,0,0,255,0,31,240,0,3,255,244,0,1,255,0,15,244,0,3,251,248,0,2,254,0,15,248,0,7,247,252,0,3,253,0,11,252,0,11,242,252,0,3,252,0,7,252,0,15,241,254,0,7,252,0,3,253,0,31,224,255,0,11,248,0,3,254,0,47,208,255,0,15,244,0,2,255,0,63,192,191,64,15,240,0,1,255,0,63,192,127,128,31,240,0,0,255,64,127,128,63,192,47,224,0,0,191,128,191,0,47,192,63,208,0,0,127,192,255,0,31,224,63,192,0,0,63,193,254,0,15,240,127,192,0,0,63,194,253,0,15,240,191,128,0,0,47,211,252,0,11,244,255,64,0,0,31,227,252,0,7,248,255,0,0,0,15,243,248,0,3,252,254,0,0,0,15,247,240,0,2,253,253,0,0,0,11,255,240,0,1,254,252,0,0,0,7,255,224,0,0,255,252,0,0,0,3,255,208,0,0,255,248,0,0,0,3,255,192,0,0,191,244,0,0,0,2,255,192,0,0,127,240,0,0,0,1,255,128,0,0,63,240,0,0, + // 0x0058 X + 24,29,174,24,0,0,42,144,0,0,2,168,47,240,0,0,11,252,15,252,0,0,31,244,7,253,0,0,63,224,2,255,0,0,191,192,0,255,128,0,255,64,0,127,192,3,254,0,0,47,240,7,252,0,0,15,244,15,244,0,0,7,252,47,224,0,0,3,254,63,192,0,0,0,255,255,64,0,0,0,127,255,0,0,0,0,63,252,0,0,0,0,47,252,0,0,0,0,127,254,0,0,0,0,255,255,0,0,0,2,255,191,192,0,0,3,252,63,208,0,0,15,248,31,240,0,0,31,240,15,252,0,0,63,208,3,253,0,0,191,128,2,255,0,1,255,0,0,255,128,3,253,0,0,127,208,11,252,0,0,63,240,31,244,0,0,15,248,63,224,0,0,11,253,191,192,0,0,3,255, + // 0x0059 Y + 23,29,174,23,0,0,106,64,0,0,6,168,127,192,0,0,15,248,63,240,0,0,31,240,31,244,0,0,63,224,15,252,0,0,127,192,7,253,0,0,255,128,2,255,0,1,255,0,0,255,64,3,253,0,0,191,192,11,252,0,0,63,208,15,244,0,0,47,240,47,240,0,0,15,244,63,208,0,0,7,252,191,128,0,0,3,254,255,0,0,0,1,255,254,0,0,0,0,255,252,0,0,0,0,127,248,0,0,0,0,63,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0, + // 0x005a Z + 21,29,174,23,1,0,42,170,170,170,170,0,63,255,255,255,255,0,63,255,255,255,255,0,63,255,255,255,255,0,0,0,0,7,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,224,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,208,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,253,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,208,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,253,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,250,170,170,170,64,191,255,255,255,255,128,191,255,255,255,255,128,191,255,255,255,255,128, + // 0x005b [ + 9,36,108,13,3,249,170,170,128,255,255,192,255,255,192,255,170,128,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,255,192,255,255,192,255,255,192,85,85,64, + // 0x005c "\" + 15,29,116,15,0,0,106,64,0,0,63,192,0,0,63,192,0,0,47,224,0,0,15,240,0,0,15,244,0,0,7,248,0,0,3,252,0,0,2,253,0,0,1,254,0,0,0,255,0,0,0,191,64,0,0,63,192,0,0,63,192,0,0,31,224,0,0,15,240,0,0,11,244,0,0,7,248,0,0,3,252,0,0,2,253,0,0,0,255,0,0,0,255,0,0,0,127,128,0,0,63,192,0,0,47,208,0,0,31,224,0,0,15,240,0,0,11,244,0,0,3,252, + // 0x005d ] + 9,36,108,13,1,249,170,170,128,255,255,192,255,255,192,170,191,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,255,255,192,255,255,192,255,255,192,85,85,64, + // 0x005e ^ + 20,19,95,23,1,10,0,0,124,0,0,0,0,190,0,0,0,0,255,0,0,0,2,255,192,0,0,3,255,208,0,0,11,235,240,0,0,15,195,244,0,0,47,194,252,0,0,63,64,253,0,0,127,0,191,0,0,253,0,63,64,1,252,0,47,192,3,248,0,15,208,7,240,0,11,240,15,224,0,3,244,31,192,0,2,252,47,192,0,0,253,63,64,0,0,191,85,0,0,0,21, + // 0x005f _ + 18,4,20,17,0,249,85,85,85,85,64,255,255,255,255,208,255,255,255,255,208,0,0,0,0,0, + // 0x0060 ` + 9,7,21,12,2,24,170,64,0,255,192,0,63,240,0,15,248,0,3,252,0,0,191,0,0,47,64, + // 0x0061 a + 18,23,115,23,2,255,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x0062 b + 20,32,160,25,3,255,85,0,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,191,224,0,191,75,255,254,0,191,127,255,255,192,191,255,170,255,224,191,248,0,63,244,191,224,0,15,252,191,192,0,7,252,191,192,0,3,253,191,128,0,3,254,191,128,0,2,254,191,128,0,2,254,191,128,0,2,254,191,128,0,2,254,191,128,0,3,254,191,192,0,3,253,191,192,0,7,252,191,224,0,15,252,191,240,0,31,248,191,254,65,191,240,191,191,255,255,208,191,31,255,255,64,190,2,255,248,0,0,0,21,64,0, + // 0x0063 c + 16,23,92,20,2,255,0,6,255,228,0,127,255,255,2,255,255,255,11,255,234,253,31,253,0,8,63,240,0,0,127,208,0,0,191,192,0,0,191,128,0,0,255,128,0,0,255,64,0,0,255,64,0,0,255,64,0,0,255,128,0,0,191,192,0,0,127,192,0,0,63,224,0,0,47,244,0,1,15,254,64,111,7,255,255,255,1,255,255,255,0,47,255,248,0,0,85,0, + // 0x0064 d + 20,32,160,25,2,255,0,0,0,1,84,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,27,254,2,253,0,255,255,226,253,3,255,255,250,253,15,255,170,255,253,47,248,0,47,253,63,240,0,15,253,127,208,0,7,253,191,192,0,3,253,191,128,0,3,253,255,128,0,2,253,255,64,0,2,253,255,64,0,2,253,255,64,0,2,253,255,128,0,2,253,191,192,0,3,253,127,192,0,3,253,63,224,0,7,253,63,244,0,15,253,31,254,1,191,253,11,255,255,254,253,2,255,255,240,253,0,127,255,128,253,0,1,80,0,0, + // 0x0065 e + 19,23,115,23,2,255,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x0066 f + 16,31,124,14,0,0,0,0,26,84,0,2,255,255,0,15,255,254,0,63,255,252,0,63,224,4,0,127,192,0,0,191,128,0,0,191,128,0,0,191,128,0,1,255,234,144,47,255,255,240,127,255,255,240,42,255,234,160,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0, + // 0x0067 g + 20,32,160,25,2,246,0,27,254,0,169,0,255,255,224,253,3,255,255,249,253,15,255,171,255,253,31,248,0,63,253,63,240,0,15,253,127,208,0,7,253,191,192,0,3,253,191,128,0,3,253,255,128,0,2,253,255,64,0,2,253,255,64,0,2,253,255,64,0,2,253,255,128,0,2,253,191,192,0,3,253,127,192,0,3,253,63,208,0,7,253,63,240,0,15,253,15,253,0,191,253,11,255,255,254,253,2,255,255,242,253,0,127,255,130,253,0,1,80,2,253,0,0,0,3,253,0,0,0,3,253,0,0,0,7,252,0,0,0,15,252,30,64,0,127,244,31,255,255,255,224,31,255,255,255,128,11,255,255,253,0,0,22,169,64,0, + // 0x0068 h + 19,31,155,25,3,0,85,0,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,111,228,0,191,75,255,255,64,191,111,255,255,208,191,255,170,255,240,191,248,0,47,244,191,240,0,15,248,191,208,0,7,252,191,192,0,7,252,191,192,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252, + // 0x0069 i + 5,30,60,11,3,0,42,0,191,128,255,192,255,128,127,0,0,0,0,0,0,0,106,64,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128, + // 0x006a j + 11,40,120,11,253,246,0,2,160,0,11,248,0,15,252,0,15,248,0,7,240,0,0,0,0,0,0,0,0,0,0,6,164,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,11,248,0,15,244,0,47,240,127,255,240,127,255,192,127,255,64,22,148,0, + // 0x006b k + 19,31,155,22,3,0,85,0,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,26,160,191,128,0,127,224,191,128,1,255,128,191,128,3,254,0,191,128,15,248,0,191,128,63,240,0,191,128,255,192,0,191,67,255,0,0,191,79,252,0,0,191,111,240,0,0,191,191,244,0,0,191,255,252,0,0,191,255,255,0,0,191,224,255,128,0,191,128,127,208,0,191,128,47,244,0,191,128,15,252,0,191,128,3,254,0,191,128,1,255,64,191,128,0,191,208,191,128,0,63,240,191,128,0,31,248, + // 0x006c l + 5,31,62,11,3,0,85,0,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128, + // 0x006d m + 32,22,176,38,3,0,105,0,191,228,0,27,254,0,191,11,255,254,1,255,255,208,191,63,255,255,135,255,255,244,191,255,171,255,239,250,191,252,191,248,0,127,255,64,11,253,191,224,0,47,253,0,3,254,191,208,0,31,252,0,2,254,191,192,0,15,244,0,2,255,191,192,0,15,244,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255,191,128,0,15,240,0,1,255, + // 0x006e n + 19,22,110,25,3,0,105,0,191,228,0,191,11,255,255,64,191,63,255,255,208,191,255,170,255,240,191,248,0,47,248,191,240,0,15,252,191,208,0,7,252,191,192,0,7,252,191,192,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252, + // 0x006f o + 21,23,138,24,2,255,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x0070 p + 20,32,160,25,3,246,105,0,191,228,0,191,11,255,254,0,191,47,255,255,192,191,255,170,255,240,191,248,0,63,244,191,224,0,15,252,191,192,0,7,252,191,192,0,3,253,191,128,0,3,254,191,128,0,2,254,191,128,0,2,254,191,128,0,2,254,191,128,0,2,254,191,128,0,3,254,191,192,0,3,253,191,192,0,7,252,191,224,0,15,252,191,244,0,47,248,191,254,65,191,240,191,191,255,255,208,191,95,255,255,64,191,130,255,248,0,191,128,21,64,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,106,64,0,0,0, + // 0x0071 q + 20,32,160,25,2,246,0,27,254,0,169,0,255,255,224,253,3,255,255,249,253,15,255,170,255,253,47,248,0,47,253,63,240,0,15,253,127,208,0,7,253,191,192,0,3,253,191,128,0,3,253,255,128,0,2,253,255,64,0,2,253,255,64,0,2,253,255,64,0,2,253,255,128,0,2,253,191,192,0,3,253,127,192,0,3,253,63,208,0,11,253,63,240,0,15,253,31,254,0,191,253,11,255,255,254,253,2,255,255,242,253,0,127,255,130,253,0,1,80,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,3,253,0,0,0,1,169, + // 0x0072 r + 13,22,88,17,3,0,105,0,127,192,191,3,255,192,191,15,255,192,191,63,255,192,191,255,64,0,191,248,0,0,191,240,0,0,191,192,0,0,191,192,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0, + // 0x0073 s + 16,23,92,19,2,255,0,111,254,64,11,255,255,248,63,255,255,252,191,249,91,244,255,128,0,96,255,0,0,0,255,64,0,0,255,208,0,0,127,253,0,0,47,255,208,0,7,255,254,0,0,191,255,208,0,7,255,244,0,0,127,252,0,0,7,253,0,0,2,254,0,0,2,254,64,0,3,253,249,0,11,252,255,255,255,248,255,255,255,224,111,255,254,0,0,85,64,0, + // 0x0074 t + 15,28,112,15,0,255,0,21,0,0,0,63,0,0,0,127,0,0,0,191,0,0,0,255,0,0,2,255,170,160,47,255,255,240,127,255,255,240,43,255,170,160,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,0,255,0,0,0,255,64,0,0,255,208,16,0,191,255,244,0,63,255,244,0,11,255,240,0,0,21,0, + // 0x0075 u + 19,23,115,25,3,255,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,2,252,0,5,80,0,0, + // 0x0076 v + 21,22,132,21,0,0,170,64,0,0,106,128,191,192,0,0,255,128,63,192,0,0,255,64,63,224,0,2,255,0,31,240,0,3,254,0,15,244,0,3,252,0,11,248,0,11,248,0,7,252,0,15,244,0,3,253,0,31,240,0,2,254,0,47,224,0,0,255,0,63,192,0,0,255,64,127,192,0,0,127,192,191,64,0,0,63,192,255,0,0,0,47,209,254,0,0,0,31,226,253,0,0,0,15,243,252,0,0,0,11,251,248,0,0,0,3,255,240,0,0,0,3,255,240,0,0,0,1,255,208,0,0,0,0,255,192,0,0, + // 0x0077 w + 32,22,176,32,0,0,106,64,0,10,164,0,1,169,127,192,0,31,252,0,2,254,63,208,0,63,252,0,3,253,47,224,0,63,253,0,7,252,31,240,0,127,254,0,11,248,15,240,0,191,191,0,15,244,15,244,0,254,127,0,15,240,11,248,1,253,63,128,31,240,7,252,2,252,63,192,47,224,3,252,3,252,47,192,63,208,3,253,3,248,31,208,63,192,1,254,7,240,15,224,127,128,0,255,11,240,15,240,191,64,0,255,15,224,7,240,255,0,0,191,79,208,3,244,255,0,0,127,95,192,3,249,254,0,0,63,175,128,2,253,253,0,0,63,255,64,1,254,252,0,0,47,255,0,0,255,252,0,0,31,255,0,0,255,244,0,0,15,254,0,0,127,240,0,0,11,253,0,0,63,240,0, + // 0x0078 x + 20,22,110,22,1,0,106,128,0,2,169,127,208,0,11,252,47,240,0,31,244,15,252,0,63,224,7,253,0,191,192,2,255,1,255,64,0,255,131,254,0,0,63,219,252,0,0,31,255,240,0,0,15,255,224,0,0,3,255,192,0,0,3,255,192,0,0,15,255,224,0,0,47,255,240,0,0,63,219,252,0,0,255,131,254,0,2,255,1,255,64,7,253,0,191,192,15,248,0,63,224,47,240,0,31,244,127,208,0,11,252,255,128,0,3,255, + // 0x0079 y + 21,32,192,21,0,246,106,64,0,0,106,128,191,192,0,0,255,128,63,208,0,0,255,64,47,224,0,2,255,0,31,240,0,3,254,0,15,244,0,3,252,0,11,252,0,11,252,0,3,252,0,15,244,0,2,254,0,31,240,0,1,255,0,47,224,0,0,255,64,63,208,0,0,191,128,127,192,0,0,63,192,191,128,0,0,47,208,255,0,0,0,31,225,255,0,0,0,15,242,253,0,0,0,11,243,252,0,0,0,3,251,248,0,0,0,2,255,244,0,0,0,1,255,240,0,0,0,0,255,224,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,255,64,0,0,0,1,255,0,0,0,0,3,254,0,0,0,0,7,252,0,0,0,0,47,248,0,0,0,127,255,240,0,0,0,127,255,192,0,0,0,127,254,0,0,0,0,26,144,0,0,0,0, + // 0x007a z + 17,22,110,19,1,0,42,170,170,170,0,63,255,255,255,0,63,255,255,255,0,42,170,171,255,0,0,0,3,253,0,0,0,11,252,0,0,0,31,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,192,0,0,0,255,64,0,0,3,254,0,0,0,11,252,0,0,0,31,240,0,0,0,63,229,85,85,0,191,255,255,255,128,191,255,255,255,128,191,255,255,255,128, + // 0x007b { + 13,36,144,15,1,249,0,0,5,128,0,1,255,192,0,11,255,192,0,31,255,192,0,63,244,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,191,128,0,2,255,0,0,255,253,0,0,255,208,0,0,255,244,0,0,175,254,0,0,1,255,64,0,0,191,128,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,208,0,0,63,248,0,0,31,255,192,0,7,255,192,0,0,191,192,0,0,0,64, + // 0x007c | + 4,41,41,22,9,246,20,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,85, + // 0x007d } + 14,36,144,15,1,249,84,0,0,0,191,224,0,0,191,252,0,0,191,255,0,0,2,255,0,0,0,255,64,0,0,191,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,128,0,0,127,192,0,0,63,244,0,0,15,255,208,0,1,191,208,0,2,255,208,0,31,255,128,0,63,224,0,0,127,192,0,0,127,128,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,127,64,0,0,191,64,0,0,255,64,0,7,255,0,0,191,254,0,0,191,248,0,0,191,144,0,0,16,0,0,0, + // 0x007e ~ + 19,6,30,23,2,11,11,250,64,0,4,127,255,244,0,60,255,255,255,235,252,254,107,255,255,252,208,0,111,255,224,0,0,1,170,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Cyrillic_29.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Cyrillic_29.cpp new file mode 100644 index 0000000000..68aa80e8b7 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Cyrillic_29.cpp @@ -0,0 +1,322 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Cyrillic 40pt, capital 'A' height: 29px, width: 100%, range: 0x0401-0x0491, glyphs: 74 +extern const uint8_t NotoSans_Medium_Cyrillic_29[10751] = { + 130,29,1,4,145,4,38,246, // unifont_t + // 0x0401 Ё + 16,37,148,22,4,0,1,64,1,64,7,240,15,224,15,244,15,240,11,244,15,240,2,224,7,208,0,0,0,0,0,0,0,0,0,0,0,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x0402 Ђ + 255, + // 0x0403 Ѓ + 255, + // 0x0404 Є + 23,30,180,26,2,255,0,0,26,255,249,0,0,1,255,255,255,228,0,31,255,255,255,248,0,127,255,255,255,240,1,255,244,0,7,224,3,255,128,0,0,0,11,253,0,0,0,0,15,248,0,0,0,0,47,240,0,0,0,0,63,224,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,234,170,170,164,0,191,255,255,255,244,0,191,255,255,255,244,0,191,255,255,255,244,0,191,192,0,0,0,0,127,192,0,0,0,0,127,208,0,0,0,0,63,224,0,0,0,0,63,240,0,0,0,0,47,244,0,0,0,0,15,252,0,0,0,0,11,255,0,0,0,0,3,255,208,0,0,16,0,255,254,85,111,240,0,127,255,255,255,240,0,11,255,255,255,240,0,0,191,255,255,128,0,0,1,85,64,0, + // 0x0405 Ѕ + 255, + // 0x0406 І + 12,29,87,14,1,0,106,170,169,127,255,254,127,255,254,11,255,228,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,1,255,128,127,255,253,127,255,254,127,255,254, + // 0x0407 Ї + 12,37,111,14,1,0,20,0,20,191,0,254,255,64,255,191,64,255,45,0,124,0,0,0,0,0,0,0,0,0,106,170,169,127,255,254,127,255,254,11,255,228,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,1,255,128,127,255,253,127,255,254,127,255,254, + // 0x0408 Ј + 255, + // 0x0409 Љ + 255, + // 0x040a Њ + 255, + // 0x040b Ћ + 255, + // 0x040c Ќ + 255, + // 0x040d Ѝ + 255, + // 0x040e Ў + 255, + // 0x040f Џ + 255, + // 0x0410 А + 26,29,203,26,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x0411 Б + 19,29,145,25,4,0,170,170,170,170,128,255,255,255,255,192,255,255,255,255,192,255,255,255,255,192,255,64,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,255,234,64,0,255,255,255,248,0,255,255,255,255,64,255,255,255,255,208,255,0,1,191,240,255,0,0,47,244,255,0,0,15,248,255,0,0,11,252,255,0,0,11,252,255,0,0,11,252,255,0,0,15,248,255,0,0,31,244,255,0,0,191,240,255,170,175,255,208,255,255,255,255,128,255,255,255,253,0,255,255,254,144,0, + // 0x0412 В + 20,29,145,26,4,0,170,170,165,0,0,255,255,255,249,0,255,255,255,255,192,255,255,255,255,240,255,0,1,191,248,255,0,0,31,252,255,0,0,11,252,255,0,0,7,252,255,0,0,7,252,255,0,0,7,252,255,0,0,15,248,255,0,0,47,240,255,170,171,255,192,255,255,255,249,0,255,255,255,254,0,255,255,255,255,224,255,0,0,111,248,255,0,0,11,253,255,0,0,3,255,255,0,0,2,255,255,0,0,1,255,255,0,0,2,255,255,0,0,3,255,255,0,0,7,254,255,0,0,31,253,255,170,171,255,248,255,255,255,255,224,255,255,255,255,64,255,255,255,228,0, + // 0x0413 Г + 17,29,145,21,4,0,170,170,170,170,64,255,255,255,255,64,255,255,255,255,64,255,255,255,255,64,255,64,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0, + // 0x0414 Д + 28,37,3,29,0,248,0,0,10,170,170,170,0,0,0,31,255,255,255,0,0,0,31,255,255,255,0,0,0,47,255,255,255,0,0,0,47,208,1,255,0,0,0,63,192,1,255,0,0,0,63,192,1,255,0,0,0,127,192,1,255,0,0,0,127,192,1,255,0,0,0,191,128,1,255,0,0,0,255,64,1,255,0,0,0,255,0,1,255,0,0,1,255,0,1,255,0,0,2,254,0,1,255,0,0,3,253,0,1,255,0,0,7,252,0,1,255,0,0,11,248,0,1,255,0,0,15,240,0,1,255,0,0,31,240,0,1,255,0,0,63,224,0,1,255,0,0,127,192,0,1,255,0,0,191,192,0,1,255,0,0,255,64,0,1,255,0,2,255,0,0,1,255,0,3,253,0,0,1,255,0,191,255,255,255,255,255,253,255,255,255,255,255,255,254,255,255,255,255,255,255,254,255,255,255,255,255,255,254,255,64,0,0,0,2,254,255,64,0,0,0,2,254,255,64,0,0,0,2,254,255,64,0,0,0,2,254,255,64,0,0,0,2,254,255,64,0,0,0,2,254,255,64,0,0,0,2,254,191,64,0,0,0,1,253, + // 0x0415 Е + 16,29,116,22,4,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x0416 Ж + 35,29,5,35,0,0,42,128,0,0,169,0,0,10,164,47,240,0,1,254,0,0,47,240,15,248,0,1,254,0,0,127,192,3,253,0,1,254,0,0,255,64,1,255,0,1,254,0,3,254,0,0,191,192,1,254,0,11,252,0,0,63,224,1,254,0,31,240,0,0,15,244,1,254,0,127,208,0,0,7,252,1,254,0,255,64,0,0,2,255,1,254,2,254,0,0,0,0,255,129,254,11,252,0,0,0,0,63,209,254,31,240,0,0,0,0,31,241,254,63,208,0,0,0,0,7,254,254,255,128,0,0,0,0,3,255,255,255,64,0,0,0,0,15,253,254,191,192,0,0,0,0,47,241,254,63,240,0,0,0,0,127,209,254,15,248,0,0,0,0,255,129,254,7,253,0,0,0,3,255,1,254,2,255,0,0,0,11,252,1,254,0,255,192,0,0,31,244,1,254,0,63,224,0,0,63,224,1,254,0,31,244,0,0,255,192,1,254,0,11,252,0,2,255,0,1,254,0,3,255,0,7,253,0,1,254,0,1,255,128,15,248,0,1,254,0,0,191,208,63,240,0,1,254,0,0,63,240,191,192,0,1,254,0,0,15,252, + // 0x0417 З + 21,30,180,24,1,255,0,6,255,233,0,0,1,255,255,255,208,0,31,255,255,255,244,0,63,255,170,255,253,0,31,224,0,11,255,0,9,0,0,2,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,1,255,0,0,0,0,3,254,0,0,0,0,47,252,0,0,106,171,255,224,0,0,255,255,249,0,0,0,255,255,254,64,0,0,255,255,255,244,0,0,0,0,127,253,0,0,0,0,3,255,0,0,0,0,0,255,128,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,0,0,0,255,128,96,0,0,3,255,64,127,148,1,111,254,0,127,255,255,255,252,0,127,255,255,255,224,0,11,255,255,253,0,0,0,5,85,0,0,0, + // 0x0418 И + 24,29,174,31,4,0,169,0,0,0,6,169,255,0,0,0,15,254,255,0,0,0,47,254,255,0,0,0,127,254,255,0,0,0,255,254,255,0,0,2,255,254,255,0,0,7,253,254,255,0,0,15,248,254,255,0,0,47,240,254,255,0,0,63,208,254,255,0,0,255,193,254,255,0,2,255,1,254,255,0,3,253,1,254,255,0,15,252,1,254,255,0,31,240,1,254,255,0,63,224,1,254,255,0,255,192,1,254,255,1,255,0,1,254,254,3,254,0,1,254,254,11,252,0,1,254,254,31,244,0,1,254,254,63,224,0,1,254,254,191,192,0,1,254,255,255,64,0,1,254,255,254,0,0,1,254,255,252,0,0,1,254,255,244,0,0,1,254,255,240,0,0,1,254,255,192,0,0,1,254, + // 0x0419 Й + 24,38,228,31,4,0,0,106,0,0,106,0,0,191,64,0,255,0,0,127,128,1,255,0,0,63,224,7,253,0,0,31,255,255,248,0,0,7,255,255,224,0,0,0,106,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,0,0,0,6,169,255,0,0,0,15,254,255,0,0,0,47,254,255,0,0,0,127,254,255,0,0,0,255,254,255,0,0,2,255,254,255,0,0,7,253,254,255,0,0,15,248,254,255,0,0,47,240,254,255,0,0,63,208,254,255,0,0,255,193,254,255,0,2,255,1,254,255,0,3,253,1,254,255,0,15,252,1,254,255,0,31,240,1,254,255,0,63,224,1,254,255,0,255,192,1,254,255,1,255,0,1,254,254,3,254,0,1,254,254,11,252,0,1,254,254,31,244,0,1,254,254,63,224,0,1,254,254,191,192,0,1,254,255,255,64,0,1,254,255,254,0,0,1,254,255,252,0,0,1,254,255,244,0,0,1,254,255,240,0,0,1,254,255,192,0,0,1,254, + // 0x041a К + 21,29,174,25,4,0,170,0,0,0,170,64,255,0,0,3,255,0,255,0,0,11,252,0,255,0,0,47,240,0,255,0,0,127,208,0,255,0,1,255,64,0,255,0,3,254,0,0,255,0,15,252,0,0,255,0,63,240,0,0,255,0,191,192,0,0,255,2,255,0,0,0,255,7,253,0,0,0,255,31,248,0,0,0,255,127,224,0,0,0,255,255,192,0,0,0,255,127,240,0,0,0,255,15,252,0,0,0,255,7,254,0,0,0,255,2,255,128,0,0,255,0,191,208,0,0,255,0,63,240,0,0,255,0,15,252,0,0,255,0,3,255,0,0,255,0,1,255,128,0,255,0,0,127,224,0,255,0,0,47,244,0,255,0,0,15,253,0,255,0,0,3,255,0,255,0,0,0,255,192, + // 0x041b Л + 25,30,210,29,0,255,0,0,42,170,170,170,128,0,0,191,255,255,255,192,0,0,191,255,255,255,192,0,0,255,255,255,255,192,0,0,255,64,0,127,192,0,0,255,0,0,127,192,0,0,255,0,0,127,192,0,1,255,0,0,127,192,0,1,254,0,0,127,192,0,2,254,0,0,127,192,0,2,253,0,0,127,192,0,3,252,0,0,127,192,0,3,252,0,0,127,192,0,3,252,0,0,127,192,0,7,252,0,0,127,192,0,7,248,0,0,127,192,0,11,248,0,0,127,192,0,15,244,0,0,127,192,0,15,240,0,0,127,192,0,15,240,0,0,127,192,0,31,240,0,0,127,192,0,47,224,0,0,127,192,0,63,208,0,0,127,192,0,63,192,0,0,127,192,0,191,192,0,0,127,192,66,255,64,0,0,127,192,255,255,0,0,0,127,192,255,253,0,0,0,127,192,255,244,0,0,0,127,192,21,0,0,0,0,0,0, + // 0x041c М + 29,29,232,37,4,0,170,160,0,0,0,2,170,128,255,244,0,0,0,11,255,192,255,248,0,0,0,15,255,192,255,252,0,0,0,31,255,192,255,253,0,0,0,47,255,192,254,255,0,0,0,63,191,192,254,255,0,0,0,127,127,192,254,127,64,0,0,255,63,192,254,63,192,0,0,253,63,192,254,47,192,0,2,252,63,192,254,31,224,0,3,248,63,192,254,15,240,0,7,244,127,192,254,11,244,0,11,240,127,192,254,7,248,0,15,224,127,192,254,3,252,0,31,208,127,192,254,2,253,0,63,192,127,192,254,0,254,0,63,128,127,192,254,0,255,0,191,0,127,192,254,0,191,64,255,0,127,192,254,0,63,193,253,0,127,192,254,0,63,194,252,0,127,192,254,0,31,211,248,0,127,192,254,0,15,247,244,0,127,192,254,0,11,255,240,0,127,192,254,0,7,255,224,0,127,192,254,0,3,255,192,0,127,192,254,0,2,255,192,0,127,192,254,0,1,255,128,0,127,192,254,0,0,255,0,0,127,192, + // 0x041d Н + 22,29,174,30,4,0,170,0,0,0,10,160,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,234,170,170,191,240,255,255,255,255,255,240,255,255,255,255,255,240,255,255,255,255,255,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240, + // 0x041e О + 27,30,210,31,2,255,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x041f П + 22,29,174,29,4,0,170,170,170,170,170,144,255,255,255,255,255,224,255,255,255,255,255,224,255,255,255,255,255,224,255,64,0,0,63,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224, + // 0x0420 Р + 19,29,145,24,4,0,170,170,148,0,0,255,255,255,224,0,255,255,255,254,0,255,255,255,255,128,255,0,7,255,208,255,0,0,127,240,255,0,0,47,240,255,0,0,15,244,255,0,0,15,244,255,0,0,15,244,255,0,0,15,244,255,0,0,31,240,255,0,0,63,240,255,0,1,255,208,255,150,175,255,192,255,255,255,255,0,255,255,255,248,0,255,255,254,64,0,255,64,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0, + // 0x0421 С + 22,30,180,25,2,255,0,0,27,255,228,0,0,2,255,255,255,208,0,31,255,255,255,224,0,127,255,255,255,208,1,255,244,0,27,192,3,255,128,0,0,0,11,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,63,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,127,208,0,0,0,0,63,224,0,0,0,0,63,240,0,0,0,0,47,244,0,0,0,0,15,252,0,0,0,0,11,255,0,0,0,0,3,255,208,0,0,64,1,255,254,85,175,192,0,127,255,255,255,192,0,15,255,255,255,192,0,1,191,255,254,64,0,0,1,85,0,0, + // 0x0422 Т + 22,29,174,23,0,0,106,170,170,170,170,160,127,255,255,255,255,240,127,255,255,255,255,240,127,255,255,255,255,240,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0, + // 0x0423 У + 24,30,180,25,1,255,170,0,0,0,0,170,255,128,0,0,2,255,191,192,0,0,3,254,63,224,0,0,7,252,47,240,0,0,15,248,15,248,0,0,31,240,11,252,0,0,47,224,3,254,0,0,63,208,1,255,0,0,191,192,0,255,128,0,255,64,0,127,192,1,255,0,0,63,224,3,254,0,0,31,240,7,252,0,0,15,244,11,248,0,0,7,252,15,240,0,0,3,253,47,240,0,0,1,255,63,208,0,0,0,255,191,192,0,0,0,127,255,64,0,0,0,63,255,0,0,0,0,31,254,0,0,0,0,15,252,0,0,0,0,31,248,0,0,0,0,63,240,0,0,0,0,255,208,0,0,58,175,255,192,0,0,63,255,255,0,0,0,63,255,252,0,0,0,63,255,208,0,0,0,1,84,0,0,0,0, + // 0x0424 Ф + 29,30,240,33,2,255,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,5,255,148,0,0,0,0,11,255,255,255,244,0,0,0,191,255,255,255,255,64,0,3,255,255,255,255,255,224,0,15,255,148,191,69,255,248,0,47,252,0,191,64,15,253,0,63,240,0,191,64,3,255,0,127,192,0,191,64,0,255,64,191,128,0,191,64,0,255,128,255,64,0,191,64,0,191,128,255,64,0,191,64,0,127,192,255,0,0,191,64,0,127,192,255,64,0,191,64,0,191,128,255,128,0,191,64,0,191,128,191,192,0,191,64,0,255,64,63,208,0,191,64,2,255,0,63,244,0,191,64,7,254,0,15,254,0,191,64,47,252,0,7,255,250,255,171,255,240,0,1,255,255,255,255,255,192,0,0,47,255,255,255,253,0,0,0,1,191,255,254,144,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,191,64,0,0,0,0,0,0,85,0,0,0,0, + // 0x0425 Х + 24,29,174,24,0,0,42,144,0,0,2,168,47,240,0,0,11,252,15,252,0,0,31,244,7,253,0,0,63,224,2,255,0,0,191,192,0,255,128,0,255,64,0,127,192,3,254,0,0,47,240,7,252,0,0,15,244,15,244,0,0,7,252,47,224,0,0,3,254,63,192,0,0,0,255,255,64,0,0,0,127,255,0,0,0,0,63,252,0,0,0,0,47,252,0,0,0,0,127,254,0,0,0,0,255,255,0,0,0,2,255,191,192,0,0,3,252,63,208,0,0,15,248,31,240,0,0,31,240,15,252,0,0,63,208,3,253,0,0,191,128,2,255,0,1,255,0,0,255,128,3,253,0,0,127,208,11,252,0,0,63,240,31,244,0,0,15,248,63,224,0,0,11,253,191,192,0,0,3,255, + // 0x0426 Ц + 26,37,3,30,4,248,170,0,0,0,26,144,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,0,0,0,47,224,0,255,255,255,255,255,250,128,255,255,255,255,255,255,208,255,255,255,255,255,255,208,255,255,255,255,255,255,208,0,0,0,0,0,63,208,0,0,0,0,0,63,208,0,0,0,0,0,63,208,0,0,0,0,0,63,208,0,0,0,0,0,63,208,0,0,0,0,0,63,208,0,0,0,0,0,63,208,0,0,0,0,0,47,192, + // 0x0427 Ч + 22,29,174,28,3,0,170,0,0,0,26,144,255,0,0,0,63,208,255,0,0,0,63,208,255,0,0,0,63,208,255,0,0,0,63,208,255,0,0,0,63,208,255,0,0,0,63,208,255,0,0,0,63,208,255,0,0,0,63,208,255,0,0,0,63,208,255,0,0,0,63,208,255,0,0,0,63,208,255,64,0,0,63,208,255,128,0,0,63,208,191,208,0,2,255,208,127,254,90,255,255,208,47,255,255,255,255,208,11,255,255,255,191,208,1,191,255,228,63,208,0,0,64,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208, + // 0x0428 Ш + 34,29,5,42,4,0,170,0,0,2,168,0,0,10,160,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,0,0,3,252,0,0,15,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x0429 Щ + 38,37,114,43,4,248,170,0,0,2,168,0,0,26,144,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,0,0,7,252,0,0,47,240,0,255,255,255,255,255,255,255,255,250,144,255,255,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,255,255,208,0,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,0,47,208, + // 0x042a Ъ + 26,29,203,28,0,0,106,170,168,0,0,0,0,255,255,253,0,0,0,0,255,255,253,0,0,0,0,255,255,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,255,255,169,0,0,0,3,255,255,255,224,0,0,3,255,255,255,254,0,0,3,255,255,255,255,128,0,3,253,0,6,255,192,0,3,253,0,0,127,224,0,3,253,0,0,47,240,0,3,253,0,0,31,240,0,3,253,0,0,31,240,0,3,253,0,0,31,240,0,3,253,0,0,47,240,0,3,253,0,0,127,224,0,3,253,0,1,255,192,0,3,255,170,191,255,128,0,3,255,255,255,254,0,0,3,255,255,255,244,0,0,3,255,255,254,64,0, + // 0x042b Ы + 27,29,203,35,4,0,170,0,0,0,0,2,168,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,0,0,0,0,3,252,255,255,233,64,0,3,252,255,255,255,244,0,3,252,255,255,255,255,0,3,252,255,255,255,255,192,3,252,255,0,1,255,224,3,252,255,0,0,63,240,3,252,255,0,0,15,244,3,252,255,0,0,15,248,3,252,255,0,0,15,248,3,252,255,0,0,15,248,3,252,255,0,0,15,244,3,252,255,0,0,47,240,3,252,255,0,0,255,224,3,252,255,170,175,255,192,3,252,255,255,255,255,64,3,252,255,255,255,248,0,3,252,255,255,254,64,0,3,252, + // 0x042c Ь + 20,29,145,26,4,0,170,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,255,250,64,0,255,255,255,253,0,255,255,255,255,192,255,255,255,255,240,255,0,0,127,248,255,0,0,15,252,255,0,0,3,253,255,0,0,3,254,255,0,0,3,254,255,0,0,3,254,255,0,0,3,253,255,0,0,11,252,255,0,0,127,248,255,170,175,255,240,255,255,255,255,208,255,255,255,254,0,255,255,255,144,0, + // 0x042d Э + 22,30,180,26,1,255,1,175,254,144,0,0,111,255,255,254,0,0,127,255,255,255,192,0,63,255,255,255,244,0,46,64,0,127,252,0,0,0,0,11,255,0,0,0,0,2,255,64,0,0,0,0,255,192,0,0,0,0,127,208,0,0,0,0,63,224,0,0,0,0,47,240,0,0,0,0,31,240,0,106,170,170,191,240,0,255,255,255,255,240,0,255,255,255,255,240,0,255,255,255,255,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,47,240,0,0,0,0,63,224,0,0,0,0,63,208,0,0,0,0,191,192,0,0,0,1,255,128,0,0,0,7,255,0,16,0,0,47,253,0,127,149,91,255,248,0,127,255,255,255,224,0,127,255,255,255,64,0,27,255,255,228,0,0,0,21,84,0,0,0, + // 0x042e Ю + 36,30,14,42,4,255,170,0,0,0,6,255,249,0,0,255,0,0,0,127,255,255,224,0,255,0,0,2,255,255,255,252,0,255,0,0,15,255,255,255,255,0,255,0,0,47,253,0,7,255,192,255,0,0,127,240,0,0,191,224,255,0,0,255,192,0,0,47,240,255,0,1,255,64,0,0,15,248,255,0,2,255,0,0,0,11,252,255,0,3,254,0,0,0,7,252,255,0,3,253,0,0,0,3,253,255,0,7,252,0,0,0,3,254,255,234,175,252,0,0,0,3,254,255,255,255,252,0,0,0,2,255,255,255,255,252,0,0,0,2,255,255,255,255,252,0,0,0,2,255,255,0,7,252,0,0,0,2,255,255,0,7,252,0,0,0,3,254,255,0,3,253,0,0,0,3,254,255,0,3,254,0,0,0,3,253,255,0,3,255,0,0,0,11,252,255,0,1,255,64,0,0,15,252,255,0,0,255,192,0,0,31,244,255,0,0,191,224,0,0,127,240,255,0,0,63,248,0,1,255,208,255,0,0,15,255,149,111,255,128,255,0,0,7,255,255,255,254,0,255,0,0,0,255,255,255,244,0,255,0,0,0,27,255,255,64,0,0,0,0,0,0,21,64,0,0, + // 0x042f Я + 21,29,174,26,1,0,0,0,21,170,170,128,0,7,255,255,255,192,0,127,255,255,255,192,1,255,255,255,255,192,3,255,228,0,127,192,11,254,0,0,63,192,15,252,0,0,63,192,15,248,0,0,63,192,15,244,0,0,63,192,15,244,0,0,63,192,15,248,0,0,63,192,11,252,0,0,63,192,3,255,0,0,63,192,2,255,228,0,127,192,0,191,255,255,255,192,0,31,255,255,255,192,0,2,255,255,255,192,0,3,254,85,191,192,0,11,252,0,63,192,0,31,244,0,63,192,0,63,240,0,63,192,0,191,192,0,63,192,1,255,128,0,63,192,3,255,0,0,63,192,11,253,0,0,63,192,15,248,0,0,63,192,63,240,0,0,63,192,127,208,0,0,63,192,255,192,0,0,63,192, + // 0x0430 а + 18,23,115,23,2,255,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x0431 б + 20,32,160,24,2,255,0,0,0,0,21,0,0,1,111,254,0,1,191,255,254,0,15,255,255,255,0,127,255,255,148,1,255,249,64,0,3,255,64,0,0,15,252,0,0,0,31,240,0,0,0,47,224,0,0,0,63,192,0,0,0,63,192,127,249,0,127,199,255,255,192,191,159,255,255,240,191,255,213,191,248,255,253,0,15,252,255,240,0,3,254,255,192,0,2,255,255,128,0,1,255,255,128,0,1,255,191,128,0,1,255,191,128,0,1,255,127,192,0,1,255,127,192,0,1,255,63,224,0,2,254,47,240,0,3,253,15,252,0,15,252,7,255,64,127,244,2,255,255,255,224,0,191,255,255,64,0,11,255,248,0,0,0,85,0,0, + // 0x0432 в + 19,22,110,24,3,0,106,170,169,64,0,191,255,255,253,0,191,255,255,255,192,191,234,175,255,224,191,128,0,63,240,191,128,0,31,240,191,128,0,15,240,191,128,0,31,240,191,128,0,127,208,191,255,255,255,64,191,255,255,244,0,191,255,255,255,64,191,149,86,255,224,191,128,0,31,244,191,128,0,11,248,191,128,0,11,252,191,128,0,11,252,191,128,0,15,248,191,128,5,191,240,191,255,255,255,208,191,255,255,255,64,191,255,255,228,0, + // 0x0433 г + 14,22,88,18,3,0,106,170,170,160,191,255,255,240,191,255,255,240,191,255,255,240,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0, + // 0x0434 д + 24,30,180,24,0,248,0,0,170,170,170,0,0,0,255,255,255,64,0,1,255,255,255,64,0,1,255,170,255,64,0,2,253,0,255,64,0,2,253,0,255,64,0,3,252,0,255,64,0,3,252,0,255,64,0,3,252,0,255,64,0,7,248,0,255,64,0,15,244,0,255,64,0,15,240,0,255,64,0,31,224,0,255,64,0,63,208,0,255,64,0,63,192,0,255,64,0,191,128,0,255,64,0,255,0,0,255,64,3,254,0,0,255,64,27,253,85,85,255,148,127,255,255,255,255,253,127,255,255,255,255,253,127,255,255,255,255,253,127,128,0,0,1,253,127,128,0,0,1,253,127,128,0,0,1,253,127,128,0,0,1,253,127,128,0,0,1,253,127,128,0,0,1,253,127,128,0,0,1,253,42,64,0,0,1,169, + // 0x0435 е + 19,23,115,23,2,255,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x0436 ж + 31,22,176,31,0,0,42,144,0,10,144,0,10,160,31,240,0,31,224,0,47,224,11,252,0,31,224,0,191,192,2,254,0,31,224,1,255,0,0,255,128,31,224,3,253,0,0,63,208,31,224,15,244,0,0,15,240,31,224,47,224,0,0,7,252,31,224,191,192,0,0,2,255,31,225,255,0,0,0,0,191,159,227,252,0,0,0,0,63,239,255,244,0,0,0,0,63,239,255,248,0,0,0,0,255,159,227,253,0,0,0,3,254,31,225,255,0,0,0,11,252,31,224,127,192,0,0,31,240,31,224,47,240,0,0,127,208,31,224,15,248,0,0,255,64,31,224,3,254,0,3,254,0,31,224,0,255,64,15,252,0,31,224,0,127,208,47,240,0,31,224,0,47,240,191,192,0,31,224,0,11,252, + // 0x0437 з + 18,23,115,20,1,255,1,175,254,64,0,63,255,255,248,0,63,255,255,254,0,47,233,91,255,64,8,0,0,191,192,0,0,0,63,192,0,0,0,63,192,0,0,0,127,128,0,0,2,255,0,0,127,255,252,0,0,127,255,208,0,0,127,255,248,0,0,21,107,255,64,0,0,0,191,192,0,0,0,63,208,0,0,0,47,224,0,0,0,47,224,64,0,0,63,208,190,64,6,255,192,191,255,255,255,64,191,255,255,253,0,31,255,255,224,0,0,21,84,0,0, + // 0x0438 и + 21,22,132,27,3,0,106,0,0,2,170,0,191,64,0,11,255,64,191,64,0,15,255,64,191,64,0,63,255,64,191,64,0,127,255,64,191,64,0,255,191,64,191,64,3,253,191,64,191,64,7,252,191,64,191,64,15,240,191,64,191,64,47,224,191,64,191,64,127,192,191,64,191,64,255,64,191,64,191,66,254,0,191,64,191,71,252,0,191,64,191,79,244,0,191,64,191,47,224,0,191,64,191,127,192,0,191,64,191,255,64,0,191,64,191,255,0,0,191,64,191,252,0,0,191,64,191,244,0,0,191,64,191,240,0,0,191,64, + // 0x0439 й + 21,31,186,27,3,0,2,164,0,2,164,0,3,248,0,7,248,0,3,252,0,15,244,0,2,255,64,127,240,0,0,255,255,255,192,0,0,47,255,255,0,0,0,1,174,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,0,0,2,170,0,191,64,0,11,255,64,191,64,0,15,255,64,191,64,0,63,255,64,191,64,0,127,255,64,191,64,0,255,191,64,191,64,3,253,191,64,191,64,7,252,191,64,191,64,15,240,191,64,191,64,47,224,191,64,191,64,127,192,191,64,191,64,255,64,191,64,191,66,254,0,191,64,191,71,252,0,191,64,191,79,244,0,191,64,191,47,224,0,191,64,191,127,192,0,191,64,191,255,64,0,191,64,191,255,0,0,191,64,191,252,0,0,191,64,191,244,0,0,191,64,191,240,0,0,191,64, + // 0x043a к + 19,22,110,22,3,0,106,64,0,26,144,191,128,0,127,192,191,128,1,255,64,191,128,3,253,0,191,128,15,248,0,191,128,63,224,0,191,128,191,192,0,191,130,255,0,0,191,135,252,0,0,191,159,244,0,0,191,191,208,0,0,191,191,224,0,0,191,143,248,0,0,191,135,253,0,0,191,129,255,64,0,191,128,191,192,0,191,128,47,240,0,191,128,15,252,0,191,128,3,255,0,191,128,0,255,128,191,128,0,127,224,191,128,0,31,244, + // 0x043b л + 21,23,138,24,0,255,0,2,170,170,170,64,0,7,255,255,255,128,0,11,255,255,255,128,0,11,255,255,255,128,0,11,240,0,191,128,0,15,240,0,191,128,0,15,240,0,191,128,0,15,240,0,191,128,0,15,240,0,191,128,0,31,224,0,191,128,0,31,224,0,191,128,0,47,208,0,191,128,0,63,192,0,191,128,0,63,192,0,191,128,0,127,192,0,191,128,0,191,128,0,191,128,0,255,64,0,191,128,2,255,0,0,191,128,7,254,0,0,191,128,255,252,0,0,191,128,255,244,0,0,191,128,255,208,0,0,191,128,4,0,0,0,0,0, + // 0x043c м + 25,22,154,31,3,0,106,160,0,0,2,170,64,191,248,0,0,7,255,128,191,252,0,0,15,255,128,191,253,0,0,15,255,128,191,254,0,0,47,255,128,191,191,0,0,63,191,128,191,127,64,0,127,127,128,191,63,192,0,255,63,128,191,31,192,0,253,63,128,191,15,224,2,252,63,128,191,11,240,3,248,63,128,191,7,244,7,244,63,128,191,3,252,15,240,63,128,191,2,252,15,208,63,128,191,0,254,47,192,63,128,191,0,255,63,128,63,128,191,0,127,191,64,63,128,191,0,63,255,0,63,128,191,0,47,254,0,63,128,191,0,15,252,0,63,128,191,0,15,248,0,63,128,191,0,7,244,0,63,128, + // 0x043d н + 20,22,110,26,3,0,106,64,0,1,168,191,128,0,3,253,191,128,0,3,253,191,128,0,3,253,191,128,0,3,253,191,128,0,3,253,191,128,0,3,253,191,128,0,3,253,191,128,0,3,253,191,255,255,255,253,191,255,255,255,253,191,255,255,255,253,191,234,170,171,253,191,128,0,3,253,191,128,0,3,253,191,128,0,3,253,191,128,0,3,253,191,128,0,3,253,191,128,0,3,253,191,128,0,3,253,191,128,0,3,253,191,128,0,3,253, + // 0x043e о + 21,23,138,24,2,255,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x043f п + 19,22,110,25,3,0,106,170,170,170,168,191,255,255,255,252,191,255,255,255,252,191,255,255,255,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252,191,128,0,7,252, + // 0x0440 р + 20,32,160,25,3,246,105,0,191,228,0,191,11,255,254,0,191,47,255,255,192,191,255,170,255,240,191,248,0,63,244,191,224,0,15,252,191,192,0,7,252,191,192,0,3,253,191,128,0,3,254,191,128,0,2,254,191,128,0,2,254,191,128,0,2,254,191,128,0,2,254,191,128,0,3,254,191,192,0,3,253,191,192,0,7,252,191,224,0,15,252,191,244,0,47,248,191,254,65,191,240,191,191,255,255,208,191,95,255,255,64,191,130,255,248,0,191,128,21,64,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,106,64,0,0,0, + // 0x0441 с + 16,23,92,20,2,255,0,6,255,228,0,127,255,255,2,255,255,255,11,255,234,253,31,253,0,8,63,240,0,0,127,208,0,0,191,192,0,0,191,128,0,0,255,128,0,0,255,64,0,0,255,64,0,0,255,64,0,0,255,128,0,0,191,192,0,0,127,192,0,0,63,224,0,0,47,244,0,1,15,254,64,111,7,255,255,255,1,255,255,255,0,47,255,248,0,0,85,0, + // 0x0442 т + 18,22,110,20,1,0,170,170,170,170,160,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0, + // 0x0443 у + 21,32,192,21,0,246,106,64,0,0,106,128,191,192,0,0,255,128,63,208,0,0,255,64,47,224,0,2,255,0,31,240,0,3,254,0,15,244,0,3,252,0,11,252,0,11,252,0,3,252,0,15,244,0,2,254,0,31,240,0,1,255,0,47,224,0,0,255,64,63,208,0,0,191,128,127,192,0,0,63,192,191,128,0,0,47,208,255,0,0,0,31,225,255,0,0,0,15,242,253,0,0,0,11,243,252,0,0,0,3,251,248,0,0,0,2,255,244,0,0,0,1,255,240,0,0,0,0,255,224,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,255,64,0,0,0,1,255,0,0,0,0,3,254,0,0,0,0,7,252,0,0,0,0,47,248,0,0,0,127,255,240,0,0,0,127,255,192,0,0,0,127,254,0,0,0,0,26,144,0,0,0,0, + // 0x0444 ф + 26,41,31,30,2,246,0,0,1,84,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,107,254,144,0,0,0,31,255,255,254,0,0,0,255,255,255,255,224,0,3,255,251,254,255,252,0,15,254,3,252,15,255,0,47,248,3,252,2,255,64,63,224,3,252,0,191,192,127,192,3,252,0,63,208,191,192,3,252,0,63,224,255,128,3,252,0,47,240,255,64,3,252,0,31,240,255,64,3,252,0,31,240,255,128,3,252,0,31,240,191,128,3,252,0,47,240,191,192,3,252,0,63,224,63,208,3,252,0,127,192,63,240,3,252,0,255,192,15,252,3,252,3,255,0,7,255,147,252,111,253,0,1,255,255,255,255,244,0,0,47,255,255,255,192,0,0,2,255,255,249,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,2,168,0,0,0, + // 0x0445 х + 20,22,110,22,1,0,106,128,0,2,169,127,208,0,11,252,47,240,0,31,244,15,252,0,63,224,7,253,0,191,192,2,255,1,255,64,0,255,131,254,0,0,63,219,252,0,0,31,255,240,0,0,15,255,224,0,0,3,255,192,0,0,3,255,192,0,0,15,255,224,0,0,47,255,240,0,0,63,219,252,0,0,255,131,254,0,2,255,1,255,64,7,253,0,191,192,15,248,0,63,224,47,240,0,31,244,127,208,0,11,252,255,128,0,3,255, + // 0x0446 ц + 23,30,180,26,3,248,106,64,0,2,168,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,128,0,3,252,0,191,149,85,87,253,80,191,255,255,255,255,244,191,255,255,255,255,244,191,255,255,255,255,244,0,0,0,0,11,244,0,0,0,0,11,244,0,0,0,0,11,244,0,0,0,0,11,244,0,0,0,0,11,244,0,0,0,0,11,244,0,0,0,0,11,244,0,0,0,0,6,160, + // 0x0447 ч + 19,22,110,25,3,0,170,0,0,6,164,255,0,0,11,248,255,0,0,11,248,255,0,0,11,248,255,0,0,11,248,255,0,0,11,248,255,0,0,11,248,255,0,0,11,248,255,0,0,11,248,255,0,0,11,248,255,128,0,127,248,191,245,91,255,248,63,255,255,255,248,15,255,255,203,248,1,255,248,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248, + // 0x0448 ш + 31,22,176,37,3,0,106,64,0,26,144,0,6,160,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,128,0,63,208,0,15,244,191,149,85,127,229,85,95,244,191,255,255,255,255,255,255,244,191,255,255,255,255,255,255,244,191,255,255,255,255,255,255,244, + // 0x0449 щ + 34,30,14,37,3,248,106,64,0,26,144,0,6,160,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,128,0,63,208,0,15,244,0,191,149,85,127,229,85,95,249,64,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,26,144, + // 0x044a ъ + 26,22,154,28,0,0,106,170,169,0,0,0,0,127,255,254,0,0,0,0,127,255,254,0,0,0,0,127,255,254,0,0,0,0,0,2,254,0,0,0,0,0,2,254,0,0,0,0,0,2,254,0,0,0,0,0,2,254,0,0,0,0,0,2,254,0,0,0,0,0,2,255,255,254,144,0,0,2,255,255,255,254,0,0,2,255,255,255,255,128,0,2,255,85,90,255,208,0,2,254,0,0,63,240,0,2,254,0,0,31,240,0,2,254,0,0,15,240,0,2,254,0,0,31,240,0,2,254,0,0,63,224,0,2,254,0,6,255,208,0,2,255,255,255,255,128,0,2,255,255,255,253,0,0,2,255,255,255,144,0, + // 0x044b ы + 26,22,154,32,3,0,106,64,0,0,0,26,144,191,128,0,0,0,47,224,191,128,0,0,0,47,224,191,128,0,0,0,47,224,191,128,0,0,0,47,224,191,128,0,0,0,47,224,191,128,0,0,0,47,224,191,128,0,0,0,47,224,191,128,0,0,0,47,224,191,255,254,144,0,47,224,191,255,255,254,0,47,224,191,255,255,255,128,47,224,191,149,90,255,208,47,224,191,128,0,63,224,47,224,191,128,0,31,240,47,224,191,128,0,31,240,47,224,191,128,0,31,240,47,224,191,128,0,63,224,47,224,191,128,22,255,192,47,224,191,255,255,255,128,47,224,191,255,255,253,0,47,224,191,255,255,144,0,47,224, + // 0x044c ь + 19,22,110,24,3,0,106,64,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,255,255,164,0,191,255,255,255,128,191,255,255,255,224,191,149,86,191,244,191,128,0,15,252,191,128,0,7,252,191,128,0,3,252,191,128,0,7,252,191,128,0,15,248,191,128,1,191,244,191,255,255,255,224,191,255,255,255,64,191,255,255,228,0, + // 0x044d э + 17,23,115,20,1,255,6,255,228,0,0,127,255,255,128,0,63,255,255,240,0,63,170,191,252,0,20,0,11,253,0,0,0,2,255,0,0,0,0,255,64,0,0,0,255,128,0,0,0,191,128,2,170,170,255,192,7,255,255,255,192,7,255,255,255,192,2,170,170,255,192,0,0,0,191,128,0,0,0,255,128,0,0,0,255,64,0,0,2,255,0,0,0,7,254,0,249,0,127,252,0,255,255,255,240,0,255,255,255,192,0,111,255,249,0,0,0,85,0,0,0, + // 0x044e ю + 29,23,184,34,3,255,106,64,0,1,191,228,0,0,191,128,0,31,255,255,64,0,191,128,0,127,255,255,224,0,191,128,1,255,250,191,248,0,191,128,3,255,0,11,253,0,191,128,7,252,0,3,255,0,191,128,15,248,0,1,255,0,191,128,15,244,0,0,255,64,191,128,31,240,0,0,191,128,191,255,255,240,0,0,191,192,191,255,255,240,0,0,191,192,191,255,255,240,0,0,191,192,191,234,191,240,0,0,191,192,191,128,31,240,0,0,191,128,191,128,15,240,0,0,255,128,191,128,15,244,0,0,255,64,191,128,11,252,0,2,255,0,191,128,3,254,0,3,254,0,191,128,2,255,208,47,252,0,191,128,0,255,255,255,240,0,191,128,0,47,255,255,192,0,191,128,0,7,255,253,0,0,0,0,0,0,21,64,0,0, + // 0x044f я + 19,22,110,23,1,0,0,5,170,170,160,1,255,255,255,244,11,255,255,255,244,31,255,170,175,244,63,240,0,15,244,63,192,0,15,244,63,192,0,15,244,63,192,0,15,244,63,192,0,15,244,63,244,0,15,244,31,255,234,175,244,7,255,255,255,244,0,191,255,255,244,0,63,250,175,244,0,127,192,15,244,0,255,64,15,244,3,254,0,15,244,7,252,0,15,244,15,244,0,15,244,63,240,0,15,244,191,192,0,15,244,255,128,0,15,244, + // 0x0450 ѐ + 255, + // 0x0451 ё + 19,31,155,23,2,255,0,20,0,80,0,0,253,1,252,0,1,255,3,253,0,1,254,2,253,0,0,184,0,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x0452 ђ + 255, + // 0x0453 ѓ + 255, + // 0x0454 є + 17,23,115,20,2,255,0,6,255,228,0,0,127,255,255,128,2,255,255,255,64,11,255,170,191,0,31,248,0,5,0,63,240,0,0,0,127,192,0,0,0,191,192,0,0,0,191,128,0,0,0,255,234,170,160,0,255,255,255,244,0,255,255,255,244,0,255,234,170,160,0,255,128,0,0,0,191,128,0,0,0,127,192,0,0,0,63,224,0,0,0,47,244,0,0,0,15,254,64,27,64,7,255,255,255,64,1,255,255,255,64,0,31,255,254,0,0,0,85,64,0, + // 0x0455 ѕ + 255, + // 0x0456 і + 5,30,60,11,3,0,42,0,191,128,255,192,255,128,127,0,0,0,0,0,0,0,106,64,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128, + // 0x0457 ї + 13,30,120,11,255,0,4,0,20,0,63,64,191,0,127,128,255,64,127,128,191,0,46,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0, + // 0x0458 ј + 255, + // 0x0459 љ + 255, + // 0x045a њ + 255, + // 0x045b ћ + 255, + // 0x045c ќ + 255, + // 0x045d ѝ + 255, + // 0x045e ў + 255, + // 0x045f џ + 255, + // 0x0460 Ѡ + 255, + // 0x0461 ѡ + 255, + // 0x0462 Ѣ + 255, + // 0x0463 ѣ + 255, + // 0x0464 Ѥ + 255, + // 0x0465 ѥ + 255, + // 0x0466 Ѧ + 255, + // 0x0467 ѧ + 255, + // 0x0468 Ѩ + 255, + // 0x0469 ѩ + 255, + // 0x046a Ѫ + 255, + // 0x046b ѫ + 255, + // 0x046c Ѭ + 255, + // 0x046d ѭ + 255, + // 0x046e Ѯ + 255, + // 0x046f ѯ + 255, + // 0x0470 Ѱ + 255, + // 0x0471 ѱ + 255, + // 0x0472 Ѳ + 255, + // 0x0473 ѳ + 255, + // 0x0474 Ѵ + 255, + // 0x0475 ѵ + 255, + // 0x0476 Ѷ + 255, + // 0x0477 ѷ + 255, + // 0x0478 Ѹ + 255, + // 0x0479 ѹ + 255, + // 0x047a Ѻ + 255, + // 0x047b ѻ + 255, + // 0x047c Ѽ + 255, + // 0x047d ѽ + 255, + // 0x047e Ѿ + 255, + // 0x047f ѿ + 255, + // 0x0480 Ҁ + 255, + // 0x0481 ҁ + 255, + // 0x0482 ҂ + 255, + // 0x0483 ҃ + 255, + // 0x0484 ҄ + 255, + // 0x0485 ҅ + 255, + // 0x0486 ҆ + 255, + // 0x0487 ҇ + 255, + // 0x0488 ҈ + 255, + // 0x0489 ҉ + 255, + // 0x048a Ҋ + 255, + // 0x048b ҋ + 255, + // 0x048c Ҍ + 255, + // 0x048d ҍ + 255, + // 0x048e Ҏ + 255, + // 0x048f ҏ + 255, + // 0x0490 Ґ + 17,35,175,22,4,0,0,0,0,21,64,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,170,170,170,191,192,255,255,255,255,192,255,255,255,255,192,255,255,255,255,192,255,64,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0, + // 0x0491 ґ + 15,28,112,18,3,0,0,0,10,160,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,0,0,11,244,106,170,175,244,191,255,255,244,191,255,255,244,191,234,170,160,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Greek_29.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Greek_29.cpp new file mode 100644 index 0000000000..ffdd5c0b83 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Greek_29.cpp @@ -0,0 +1,178 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Greek 40pt, capital 'A' height: 29px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 +extern const uint8_t NotoSans_Medium_Greek_29[10140] = { + 130,29,134,3,206,3,38,246, // unifont_t + // 0x0386 Ά + 29,29,232,29,0,0,15,252,0,10,164,0,0,0,15,248,0,31,252,0,0,0,31,240,0,63,253,0,0,0,63,208,0,63,254,0,0,0,63,128,0,191,255,0,0,0,127,0,0,255,127,128,0,0,125,0,1,254,63,192,0,0,0,0,2,253,47,208,0,0,0,0,3,252,31,224,0,0,0,0,7,248,15,240,0,0,0,0,15,244,11,244,0,0,0,0,15,240,7,252,0,0,0,0,47,224,3,252,0,0,0,0,63,208,2,254,0,0,0,0,127,192,1,255,0,0,0,0,191,128,0,255,64,0,0,0,255,0,0,191,128,0,0,1,255,255,255,255,192,0,0,3,255,255,255,255,208,0,0,3,255,255,255,255,240,0,0,11,255,255,255,255,240,0,0,15,244,0,0,15,248,0,0,31,240,0,0,11,252,0,0,47,224,0,0,3,253,0,0,63,208,0,0,3,254,0,0,127,192,0,0,1,255,0,0,255,128,0,0,0,255,64,0,255,64,0,0,0,191,192,2,255,0,0,0,0,127,192, + // 0x0387 · + 255, + // 0x0388 Έ + 27,29,203,30,0,0,15,252,2,170,170,170,168,15,248,3,255,255,255,252,31,240,3,255,255,255,252,63,208,3,255,255,255,252,63,128,3,253,0,0,0,127,0,3,253,0,0,0,125,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,255,170,170,164,0,0,3,255,255,255,244,0,0,3,255,255,255,244,0,0,3,255,255,255,244,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,255,170,170,168,0,0,3,255,255,255,252,0,0,3,255,255,255,252,0,0,3,255,255,255,252, + // 0x0389 Ή + 34,29,5,37,0,0,15,252,2,168,0,0,0,42,128,15,248,3,253,0,0,0,63,208,31,240,3,253,0,0,0,63,208,63,208,3,253,0,0,0,63,208,63,128,3,253,0,0,0,63,208,127,0,3,253,0,0,0,63,208,125,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,255,170,170,170,191,208,0,0,3,255,255,255,255,255,208,0,0,3,255,255,255,255,255,208,0,0,3,255,255,255,255,255,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208,0,0,3,253,0,0,0,63,208, + // 0x038a Ί + 21,29,174,22,0,0,15,252,10,170,170,64,15,248,31,255,255,128,31,240,31,255,255,128,63,208,2,255,249,0,63,128,0,63,208,0,127,0,0,63,208,0,125,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,127,224,0,0,0,11,255,255,64,0,0,31,255,255,128,0,0,31,255,255,128, + // 0x038b ΋ + 255, + // 0x038c Ό + 35,30,14,37,0,255,15,252,0,0,111,255,144,0,0,15,248,0,11,255,255,254,0,0,31,240,0,127,255,255,255,208,0,63,208,1,255,255,255,255,244,0,63,128,7,255,208,0,127,253,0,127,0,15,253,0,0,7,255,0,125,0,47,248,0,0,1,255,128,0,0,63,240,0,0,0,255,192,0,0,127,208,0,0,0,127,208,0,0,191,192,0,0,0,63,224,0,0,255,128,0,0,0,47,240,0,0,255,128,0,0,0,47,240,0,0,255,64,0,0,0,31,240,0,1,255,64,0,0,0,31,240,0,1,255,0,0,0,0,31,244,0,1,255,64,0,0,0,31,240,0,0,255,64,0,0,0,31,240,0,0,255,64,0,0,0,31,240,0,0,255,128,0,0,0,47,240,0,0,255,192,0,0,0,63,224,0,0,191,192,0,0,0,63,208,0,0,63,224,0,0,0,191,192,0,0,63,240,0,0,0,255,128,0,0,31,252,0,0,3,255,0,0,0,11,255,64,0,31,254,0,0,0,3,255,249,86,255,252,0,0,0,0,255,255,255,255,224,0,0,0,0,47,255,255,255,64,0,0,0,0,2,255,255,244,0,0,0,0,0,0,1,84,0,0,0, + // 0x038d ΍ + 255, + // 0x038e Ύ + 32,29,232,33,0,0,15,252,26,160,0,0,0,170,15,248,15,248,0,0,2,255,31,240,11,252,0,0,3,253,63,208,3,254,0,0,11,252,63,128,2,255,0,0,15,244,127,0,0,255,128,0,47,240,125,0,0,127,192,0,63,208,0,0,0,63,224,0,191,128,0,0,0,31,240,1,255,0,0,0,0,15,248,3,254,0,0,0,0,7,252,7,252,0,0,0,0,3,255,15,248,0,0,0,0,0,255,95,240,0,0,0,0,0,191,255,208,0,0,0,0,0,63,255,192,0,0,0,0,0,47,255,64,0,0,0,0,0,15,255,0,0,0,0,0,0,11,253,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0, + // 0x038f Ώ + 34,29,5,35,0,0,15,252,0,1,191,254,64,0,0,15,248,0,31,255,255,248,0,0,31,240,0,255,255,255,255,128,0,63,208,3,255,255,191,255,224,0,63,128,15,255,64,0,191,248,0,127,0,63,252,0,0,31,253,0,125,0,127,240,0,0,7,255,0,0,0,255,192,0,0,2,255,64,0,0,255,128,0,0,0,255,192,0,1,255,0,0,0,0,191,192,0,2,255,0,0,0,0,127,208,0,3,255,0,0,0,0,63,208,0,3,254,0,0,0,0,63,208,0,3,254,0,0,0,0,63,224,0,3,254,0,0,0,0,63,208,0,3,254,0,0,0,0,63,208,0,2,255,0,0,0,0,63,192,0,1,255,0,0,0,0,127,192,0,0,255,64,0,0,0,191,128,0,0,191,128,0,0,0,255,64,0,0,63,192,0,0,2,255,0,0,0,47,224,0,0,3,252,0,0,0,15,248,0,0,15,244,0,0,0,3,253,0,0,63,224,0,0,0,0,255,128,0,255,128,0,0,2,170,255,224,3,255,170,160,0,3,255,255,240,7,255,255,240,0,3,255,255,240,7,255,255,240,0,3,255,255,240,7,255,255,240, + // 0x0390 ΐ + 255, + // 0x0391 Α + 26,29,203,26,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x0392 Β + 20,29,145,26,4,0,170,170,165,0,0,255,255,255,249,0,255,255,255,255,192,255,255,255,255,240,255,0,1,191,248,255,0,0,31,252,255,0,0,11,252,255,0,0,7,252,255,0,0,7,252,255,0,0,7,252,255,0,0,15,248,255,0,0,47,240,255,170,171,255,192,255,255,255,249,0,255,255,255,254,0,255,255,255,255,224,255,0,0,111,248,255,0,0,11,253,255,0,0,3,255,255,0,0,2,255,255,0,0,1,255,255,0,0,2,255,255,0,0,3,255,255,0,0,7,254,255,0,0,31,253,255,170,171,255,248,255,255,255,255,224,255,255,255,255,64,255,255,255,228,0, + // 0x0393 Γ + 15,29,116,20,4,0,170,170,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0, + // 0x0394 Δ + 26,29,203,26,0,0,0,0,6,168,0,0,0,0,0,11,254,0,0,0,0,0,15,255,0,0,0,0,0,47,255,64,0,0,0,0,63,255,192,0,0,0,0,127,175,192,0,0,0,0,191,95,224,0,0,0,0,255,15,240,0,0,0,1,254,11,244,0,0,0,3,252,7,252,0,0,0,7,252,3,252,0,0,0,11,244,2,254,0,0,0,15,240,0,255,0,0,0,31,224,0,255,64,0,0,63,208,0,127,192,0,0,63,192,0,63,192,0,0,191,128,0,47,224,0,0,255,0,0,31,240,0,1,255,0,0,15,244,0,3,253,0,0,11,248,0,3,252,0,0,3,252,0,11,248,0,0,3,253,0,15,244,0,0,1,255,0,31,240,0,0,0,255,64,63,224,0,0,0,191,128,63,255,255,255,255,255,192,191,255,255,255,255,255,208,191,255,255,255,255,255,224,191,255,255,255,255,255,224, + // 0x0395 Ε + 16,29,116,22,4,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x0396 Ζ + 21,29,174,23,1,0,42,170,170,170,170,0,63,255,255,255,255,0,63,255,255,255,255,0,63,255,255,255,255,0,0,0,0,7,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,224,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,208,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,253,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,208,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,253,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,250,170,170,170,64,191,255,255,255,255,128,191,255,255,255,255,128,191,255,255,255,255,128, + // 0x0397 Η + 22,29,174,30,4,0,170,0,0,0,10,160,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,234,170,170,191,240,255,255,255,255,255,240,255,255,255,255,255,240,255,255,255,255,255,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240, + // 0x0398 Θ + 27,30,210,31,2,255,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,85,85,84,11,252,191,192,255,255,253,11,252,191,192,255,255,253,11,252,191,192,255,255,253,11,252,191,192,85,85,84,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x0399 Ι + 12,29,87,14,1,0,106,170,169,127,255,254,127,255,254,11,255,228,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,1,255,128,127,255,253,127,255,254,127,255,254, + // 0x039a Κ + 21,29,174,25,4,0,170,0,0,0,170,64,255,0,0,3,255,0,255,0,0,15,252,0,255,0,0,47,244,0,255,0,0,127,208,0,255,0,1,255,128,0,255,0,3,254,0,0,255,0,15,252,0,0,255,0,63,240,0,0,255,0,255,192,0,0,255,2,255,0,0,0,255,11,253,0,0,0,255,31,244,0,0,0,255,127,244,0,0,0,255,255,252,0,0,0,255,255,255,0,0,0,255,242,255,128,0,0,255,192,255,208,0,0,255,0,63,240,0,0,255,0,31,248,0,0,255,0,15,253,0,0,255,0,3,255,0,0,255,0,1,255,128,0,255,0,0,191,208,0,255,0,0,63,240,0,255,0,0,15,252,0,255,0,0,11,254,0,255,0,0,3,255,0,255,0,0,0,255,192, + // 0x039b Λ + 25,29,203,25,0,0,0,0,10,168,0,0,0,0,0,15,252,0,0,0,0,0,31,254,0,0,0,0,0,63,255,0,0,0,0,0,63,255,64,0,0,0,0,191,127,128,0,0,0,0,255,63,192,0,0,0,1,254,47,208,0,0,0,2,253,15,224,0,0,0,3,252,15,240,0,0,0,7,248,11,244,0,0,0,11,244,3,252,0,0,0,15,240,3,252,0,0,0,31,224,2,253,0,0,0,63,208,1,255,0,0,0,63,192,0,255,0,0,0,191,128,0,191,128,0,0,255,64,0,127,192,0,0,255,0,0,63,208,0,2,254,0,0,47,224,0,3,253,0,0,31,240,0,7,252,0,0,15,244,0,11,248,0,0,11,248,0,15,244,0,0,7,252,0,31,240,0,0,3,253,0,47,224,0,0,2,255,0,63,208,0,0,1,255,0,127,192,0,0,0,255,128,255,128,0,0,0,191,192, + // 0x039c Μ + 29,29,232,37,4,0,170,160,0,0,0,2,170,128,255,244,0,0,0,11,255,192,255,248,0,0,0,15,255,192,255,252,0,0,0,31,255,192,255,253,0,0,0,47,255,192,254,255,0,0,0,63,191,192,254,255,0,0,0,127,127,192,254,127,64,0,0,255,63,192,254,63,192,0,0,253,63,192,254,47,192,0,2,252,63,192,254,31,224,0,3,248,63,192,254,15,240,0,7,244,127,192,254,11,244,0,11,240,127,192,254,7,248,0,15,224,127,192,254,3,252,0,31,208,127,192,254,2,253,0,63,192,127,192,254,0,254,0,63,128,127,192,254,0,255,0,191,0,127,192,254,0,191,64,255,0,127,192,254,0,63,193,253,0,127,192,254,0,63,194,252,0,127,192,254,0,31,211,248,0,127,192,254,0,15,247,244,0,127,192,254,0,11,255,240,0,127,192,254,0,7,255,224,0,127,192,254,0,3,255,192,0,127,192,254,0,2,255,192,0,127,192,254,0,1,255,128,0,127,192,254,0,0,255,0,0,127,192, + // 0x039d Ν + 23,29,174,31,4,0,170,128,0,0,1,168,255,224,0,0,3,252,255,244,0,0,3,252,255,252,0,0,3,252,255,254,0,0,3,252,255,255,0,0,3,252,254,255,192,0,3,252,253,127,208,0,3,252,254,63,240,0,3,252,254,15,248,0,3,252,254,11,253,0,3,252,254,3,255,0,3,252,254,1,255,128,3,252,254,0,191,192,3,252,254,0,63,240,3,252,254,0,31,244,3,252,254,0,15,252,2,252,254,0,3,254,2,252,254,0,2,255,66,252,254,0,0,255,194,252,254,0,0,127,226,252,254,0,0,47,242,252,254,0,0,15,254,252,254,0,0,7,255,252,254,0,0,3,255,252,254,0,0,0,255,252,254,0,0,0,191,252,254,0,0,0,63,252,254,0,0,0,31,252, + // 0x039e Ξ + 21,29,174,25,2,0,26,170,170,170,169,0,63,255,255,255,255,0,63,255,255,255,255,0,63,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,240,0,3,255,255,255,240,0,3,255,255,255,240,0,3,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,64,191,255,255,255,255,128,191,255,255,255,255,128,191,255,255,255,255,128, + // 0x039f Ο + 27,30,210,31,2,255,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x03a0 Π + 22,29,174,30,4,0,170,170,170,170,170,144,255,255,255,255,255,224,255,255,255,255,255,224,255,255,255,255,255,224,255,64,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224,255,0,0,0,47,224, + // 0x03a1 Ρ + 19,29,145,24,4,0,170,170,148,0,0,255,255,255,224,0,255,255,255,254,0,255,255,255,255,128,255,0,7,255,208,255,0,0,127,240,255,0,0,47,240,255,0,0,15,244,255,0,0,15,244,255,0,0,15,244,255,0,0,15,244,255,0,0,31,240,255,0,0,63,240,255,0,1,255,208,255,150,175,255,192,255,255,255,255,0,255,255,255,248,0,255,255,254,64,0,255,64,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0, + // 0x03a2 ΢ + 255, + // 0x03a3 Σ + 21,29,174,23,1,0,42,170,170,170,170,0,63,255,255,255,255,0,63,255,255,255,255,0,63,255,255,255,255,0,47,248,0,0,0,0,15,253,0,0,0,0,3,255,0,0,0,0,0,255,192,0,0,0,0,127,240,0,0,0,0,31,248,0,0,0,0,11,254,0,0,0,0,2,255,64,0,0,0,0,255,208,0,0,0,0,63,240,0,0,0,0,47,240,0,0,0,0,127,192,0,0,0,1,255,64,0,0,0,3,254,0,0,0,0,15,248,0,0,0,0,47,240,0,0,0,0,191,192,0,0,0,1,255,64,0,0,0,3,253,0,0,0,0,15,248,0,0,0,0,63,240,0,0,0,0,191,250,175,255,255,64,191,255,255,255,255,128,191,255,255,255,255,128,191,255,255,255,255,128, + // 0x03a4 Τ + 22,29,174,23,0,0,106,170,170,170,170,160,127,255,255,255,255,240,127,255,255,255,255,240,127,255,255,255,255,240,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0, + // 0x03a5 Υ + 23,29,174,23,0,0,106,64,0,0,6,168,127,192,0,0,15,248,63,240,0,0,31,240,31,244,0,0,63,224,15,252,0,0,127,192,7,253,0,0,255,128,2,255,0,1,255,0,0,255,64,3,253,0,0,191,192,11,252,0,0,63,208,15,244,0,0,47,240,47,240,0,0,15,244,63,208,0,0,7,252,191,128,0,0,3,254,255,0,0,0,1,255,254,0,0,0,0,255,252,0,0,0,0,127,248,0,0,0,0,63,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0, + // 0x03a6 Φ + 31,30,240,34,2,255,0,0,0,42,128,0,0,0,0,0,0,63,208,0,0,0,0,0,0,63,208,0,0,0,0,0,107,255,254,144,0,0,0,27,255,255,255,255,64,0,0,191,255,255,255,255,244,0,3,255,255,191,255,255,254,0,15,255,64,63,208,27,255,64,47,248,0,63,208,1,255,192,63,224,0,63,208,0,63,224,127,192,0,63,208,0,47,240,191,128,0,63,208,0,15,240,255,64,0,63,208,0,15,244,255,64,0,63,208,0,15,244,255,64,0,63,208,0,15,244,255,64,0,63,208,0,15,244,255,128,0,63,208,0,15,240,191,192,0,63,208,0,31,240,63,208,0,63,208,0,63,224,63,240,0,63,208,0,191,192,15,253,0,63,208,3,255,128,7,255,228,63,209,111,255,0,1,255,255,255,255,255,252,0,0,47,255,255,255,255,208,0,0,2,255,255,255,249,0,0,0,0,1,127,229,0,0,0,0,0,0,63,208,0,0,0,0,0,0,63,208,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,0,0,0,0, + // 0x03a7 Χ + 24,29,174,24,0,0,42,144,0,0,2,168,47,240,0,0,11,252,15,252,0,0,31,244,7,253,0,0,63,224,2,255,0,0,191,192,0,255,128,0,255,64,0,127,192,3,254,0,0,47,240,7,252,0,0,15,244,15,244,0,0,7,252,47,224,0,0,3,254,63,192,0,0,0,255,255,64,0,0,0,127,255,0,0,0,0,63,252,0,0,0,0,47,252,0,0,0,0,127,254,0,0,0,0,255,255,0,0,0,2,255,191,192,0,0,3,252,63,208,0,0,15,248,31,240,0,0,31,240,15,252,0,0,63,208,3,253,0,0,191,128,2,255,0,1,255,0,0,255,128,3,253,0,0,127,208,11,252,0,0,63,240,31,244,0,0,15,248,63,224,0,0,11,253,191,192,0,0,3,255, + // 0x03a8 Ψ + 27,29,203,34,3,0,42,64,0,169,0,2,168,127,192,1,255,0,7,252,127,192,1,255,0,7,252,127,192,1,255,0,7,252,127,192,1,255,0,7,252,127,192,1,255,0,7,252,127,192,1,255,0,7,252,127,192,1,255,0,7,252,127,192,1,255,0,7,252,127,192,1,255,0,7,252,127,192,1,255,0,7,252,127,192,1,255,0,7,252,63,192,1,255,0,11,248,63,192,1,255,0,15,248,63,224,1,255,0,15,244,31,240,1,255,0,47,240,15,252,1,255,0,191,208,7,255,145,255,7,255,192,2,255,255,255,255,255,0,0,127,255,255,255,248,0,0,11,255,255,255,128,0,0,0,22,255,80,0,0,0,0,1,255,0,0,0,0,0,1,255,0,0,0,0,0,1,255,0,0,0,0,0,1,255,0,0,0,0,0,1,255,0,0,0,0,0,1,255,0,0,0,0,0,1,255,0,0,0, + // 0x03a9 Ω + 27,29,203,29,1,0,0,0,27,255,160,0,0,0,7,255,255,255,64,0,0,47,255,255,255,224,0,0,255,255,239,255,252,0,2,255,224,0,47,255,0,7,255,0,0,3,255,128,15,252,0,0,0,255,208,47,244,0,0,0,127,224,63,240,0,0,0,47,240,63,224,0,0,0,31,244,127,208,0,0,0,15,248,191,192,0,0,0,15,248,191,192,0,0,0,15,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,11,248,127,192,0,0,0,15,248,63,208,0,0,0,15,244,63,224,0,0,0,31,240,31,240,0,0,0,47,224,15,244,0,0,0,63,192,7,252,0,0,0,255,64,2,255,0,0,2,255,0,0,191,128,0,11,252,0,0,47,240,0,47,224,0,170,175,252,0,255,234,168,255,255,252,0,255,255,252,255,255,252,0,255,255,252,255,255,252,0,255,255,252, + // 0x03aa Ϊ + 255, + // 0x03ab Ϋ + 255, + // 0x03ac ά + 23,32,192,25,2,255,0,0,11,253,0,0,0,0,15,252,0,0,0,0,15,244,0,0,0,0,31,224,0,0,0,0,47,192,0,0,0,0,63,64,0,0,0,0,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,0,169,0,0,255,255,208,253,0,3,255,255,249,253,0,15,255,170,255,253,0,47,248,0,47,253,0,63,240,0,15,253,0,127,192,0,7,253,0,191,192,0,3,253,0,191,128,0,3,253,0,255,128,0,2,253,0,255,64,0,2,253,0,255,64,0,2,253,0,255,64,0,2,253,0,255,128,0,2,253,0,191,128,0,3,253,0,127,192,0,3,253,0,63,208,0,11,253,0,63,240,0,15,254,0,31,254,0,191,255,64,11,255,255,253,255,244,2,255,255,240,191,244,0,127,255,128,63,244,0,1,80,0,1,64, + // 0x03ad έ + 17,32,160,19,1,255,0,0,11,253,0,0,0,15,248,0,0,0,31,240,0,0,0,47,208,0,0,0,63,192,0,0,0,63,0,0,0,0,125,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,164,0,1,255,255,255,64,7,255,255,255,128,15,254,86,255,0,31,244,0,6,0,31,224,0,0,0,31,224,0,0,0,31,240,0,0,0,15,248,0,0,0,3,255,255,128,0,0,127,255,192,0,1,255,255,192,0,15,254,149,64,0,47,240,0,0,0,63,208,0,0,0,127,192,0,0,0,127,192,0,0,0,63,224,0,0,0,63,249,0,27,64,15,255,255,255,64,7,255,255,255,64,0,191,255,254,0,0,1,85,0,0, + // 0x03ae ή + 19,41,205,25,3,246,0,0,255,192,0,0,1,255,64,0,0,2,254,0,0,0,3,252,0,0,0,7,244,0,0,0,11,240,0,0,0,11,192,0,0,0,0,0,0,0,0,0,0,0,0,105,0,191,228,0,191,11,255,255,0,191,63,255,255,192,191,255,170,255,224,191,248,0,63,240,191,240,0,15,244,191,208,0,15,244,191,192,0,11,248,191,192,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,6,164, + // 0x03af ί + 10,32,96,14,3,255,2,255,64,3,254,0,7,252,0,11,244,0,15,240,0,31,192,0,31,64,0,0,0,0,0,0,0,106,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,191,128,0,191,192,0,127,224,16,63,255,240,31,255,240,3,255,240,0,21,64, + // 0x03b0 ΰ + 255, + // 0x03b1 α + 23,23,138,25,2,255,0,27,253,0,169,0,0,255,255,208,253,0,3,255,255,249,253,0,15,255,170,255,253,0,47,248,0,47,253,0,63,240,0,15,253,0,127,192,0,7,253,0,191,192,0,3,253,0,191,128,0,3,253,0,255,128,0,2,253,0,255,64,0,2,253,0,255,64,0,2,253,0,255,64,0,2,253,0,255,128,0,2,253,0,191,128,0,3,253,0,127,192,0,3,253,0,63,208,0,11,253,0,63,240,0,15,254,0,31,254,0,191,255,64,11,255,255,253,255,244,2,255,255,240,191,244,0,127,255,128,63,244,0,1,80,0,1,64, + // 0x03b2 β + 20,41,205,25,3,246,0,1,105,64,0,0,127,255,248,0,3,255,255,255,0,15,255,255,255,192,31,252,0,255,224,63,240,0,63,240,127,192,0,31,240,127,192,0,15,244,191,128,0,15,244,191,128,0,15,240,191,128,0,31,240,191,128,0,63,208,191,128,0,191,192,191,130,171,254,0,191,131,255,224,0,191,131,255,249,0,191,130,175,255,128,191,128,0,127,240,191,128,0,15,248,191,128,0,7,252,191,128,0,3,253,191,128,0,2,254,191,128,0,2,254,191,128,0,2,254,191,128,0,3,254,191,128,0,7,253,191,192,0,15,252,191,249,0,191,244,191,255,255,255,224,191,255,255,255,64,191,159,255,248,0,191,128,85,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,106,64,0,0,0, + // 0x03b3 γ + 20,31,155,21,0,247,170,64,0,0,170,191,128,0,1,255,127,192,0,1,255,63,208,0,1,255,47,224,0,1,255,15,240,0,2,254,15,244,0,2,254,7,248,0,3,253,3,252,0,3,252,3,253,0,3,252,1,254,0,7,248,0,255,0,11,244,0,191,64,15,240,0,127,128,47,224,0,63,192,63,192,0,47,208,191,128,0,31,224,255,0,0,15,243,253,0,0,11,255,252,0,0,3,255,240,0,0,3,255,192,0,0,2,255,64,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,0,85,0,0, + // 0x03b4 δ + 21,32,192,24,1,255,0,0,22,148,0,0,0,2,255,255,208,0,0,15,255,255,252,0,0,63,255,255,254,0,0,191,208,2,252,0,0,255,64,0,36,0,0,255,0,0,0,0,0,255,64,0,0,0,0,191,192,0,0,0,0,127,244,0,0,0,0,31,254,0,0,0,0,7,255,224,0,0,0,2,255,253,0,0,0,47,255,255,128,0,0,255,224,255,240,0,3,255,0,47,248,0,15,252,0,7,253,0,31,240,0,2,255,0,63,224,0,0,255,0,63,208,0,0,255,64,63,192,0,0,191,128,127,192,0,0,191,128,127,192,0,0,191,128,63,192,0,0,191,128,63,224,0,0,255,64,47,240,0,2,255,0,31,252,0,7,254,0,11,255,64,111,252,0,3,255,255,255,244,0,0,191,255,255,192,0,0,11,255,253,0,0,0,0,21,64,0,0, + // 0x03b5 ε + 17,23,115,19,1,255,0,27,255,164,0,1,255,255,255,64,7,255,255,255,128,15,254,86,255,0,31,244,0,6,0,31,224,0,0,0,31,224,0,0,0,31,240,0,0,0,15,248,0,0,0,3,255,255,128,0,0,127,255,192,0,1,255,255,192,0,15,254,149,64,0,47,240,0,0,0,63,208,0,0,0,127,192,0,0,0,127,192,0,0,0,63,224,0,0,0,63,249,0,27,64,15,255,255,255,64,7,255,255,255,64,0,191,255,254,0,0,1,85,0,0, + // 0x03b6 ζ + 17,40,200,19,2,247,21,85,85,85,0,63,255,255,255,128,63,255,255,255,128,47,255,251,255,64,0,0,3,254,0,0,0,11,252,0,0,0,31,240,0,0,0,63,208,0,0,0,255,128,0,0,3,255,0,0,0,11,252,0,0,0,31,244,0,0,0,63,224,0,0,0,255,192,0,0,2,255,0,0,0,3,253,0,0,0,15,248,0,0,0,31,240,0,0,0,63,224,0,0,0,127,192,0,0,0,191,192,0,0,0,255,128,0,0,0,255,64,0,0,0,255,128,0,0,0,255,192,0,0,0,191,208,0,0,0,63,248,0,0,0,47,255,144,0,0,11,255,255,144,0,1,255,255,252,0,0,31,255,255,0,0,0,111,255,64,0,0,1,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,0,0,0,1,255,0,0,0,2,253,0,0,0,3,252,0,0,0,0,0,0, + // 0x03b7 η + 19,32,160,25,3,246,105,0,191,228,0,191,11,255,255,0,191,63,255,255,192,191,255,170,255,224,191,248,0,63,240,191,240,0,15,244,191,208,0,15,244,191,192,0,11,248,191,192,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,191,128,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,6,164, + // 0x03b8 θ + 20,32,160,24,2,255,0,1,105,64,0,0,47,255,244,0,0,255,255,255,0,3,255,255,255,128,11,253,0,191,208,15,244,0,31,240,47,240,0,15,244,63,208,0,7,248,63,192,0,3,252,127,192,0,3,253,191,128,0,2,253,191,128,0,2,254,255,64,0,2,254,255,64,0,1,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,2,255,255,64,0,1,255,191,64,0,2,254,191,128,0,2,254,127,128,0,2,253,127,192,0,3,253,63,192,0,3,252,47,208,0,7,252,31,240,0,15,244,15,244,0,47,240,7,254,0,191,208,2,255,255,255,128,0,191,255,254,0,0,31,255,244,0,0,0,85,0,0, + // 0x03b9 ι + 10,23,69,14,3,255,106,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,255,64,0,191,128,0,191,192,0,127,224,16,63,255,240,31,255,240,3,255,240,0,21,64, + // 0x03ba κ + 19,22,110,22,3,0,106,64,0,26,160,191,128,0,127,224,191,128,0,255,128,191,128,3,255,0,191,128,15,252,0,191,128,47,240,0,191,128,191,208,0,191,129,255,64,0,191,131,254,0,0,191,143,248,0,0,191,191,248,0,0,191,255,253,0,0,191,255,255,0,0,191,244,255,192,0,191,192,127,224,0,191,128,47,244,0,191,128,15,252,0,191,128,3,255,0,191,128,1,255,128,191,128,0,191,208,191,128,0,63,240,191,128,0,15,248, + // 0x03bb λ + 22,32,192,21,0,255,106,80,0,0,0,0,255,254,0,0,0,0,255,255,192,0,0,0,255,255,224,0,0,0,0,47,244,0,0,0,0,11,252,0,0,0,0,3,252,0,0,0,0,2,254,0,0,0,0,0,255,0,0,0,0,0,255,64,0,0,0,1,255,192,0,0,0,2,255,192,0,0,0,3,255,224,0,0,0,7,255,240,0,0,0,11,251,244,0,0,0,15,231,248,0,0,0,31,211,252,0,0,0,63,195,253,0,0,0,63,129,255,0,0,0,191,64,255,0,0,0,255,0,191,128,0,1,255,0,127,192,0,2,254,0,63,208,0,3,252,0,47,224,0,7,252,0,31,240,0,15,248,0,15,244,0,15,244,0,11,252,0,31,240,0,7,253,0,63,224,0,3,255,208,63,208,0,1,255,208,191,192,0,0,191,208,0,0,0,0,5,0, + // 0x03bc μ + 22,32,192,26,3,246,106,64,0,2,164,0,191,128,0,7,252,0,191,128,0,7,252,0,191,128,0,7,252,0,191,128,0,7,252,0,191,128,0,7,252,0,191,128,0,7,252,0,191,128,0,7,252,0,191,128,0,7,252,0,191,128,0,7,252,0,191,128,0,7,252,0,191,128,0,7,252,0,191,128,0,7,252,0,191,128,0,11,252,0,191,128,0,11,252,0,191,128,0,15,252,0,191,192,0,31,252,0,191,224,0,63,252,0,191,249,2,255,254,0,191,255,255,247,255,224,191,255,255,225,255,224,191,95,255,64,191,224,191,64,80,0,5,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,191,128,0,0,0,0,106,64,0,0,0,0, + // 0x03bd ν + 20,22,110,21,0,0,170,64,0,0,170,191,128,0,1,255,127,192,0,1,255,63,208,0,1,255,47,224,0,1,255,15,240,0,2,254,15,244,0,2,254,7,248,0,3,253,3,252,0,3,252,3,253,0,3,252,1,254,0,7,248,0,255,0,11,244,0,191,64,15,240,0,127,128,47,224,0,63,192,63,192,0,47,208,191,128,0,31,224,255,0,0,15,243,254,0,0,11,255,252,0,0,3,255,240,0,0,3,255,208,0,0,2,255,64,0, + // 0x03be ξ + 17,40,200,20,2,247,21,85,85,85,64,47,255,255,255,128,47,255,255,255,128,47,239,255,234,64,0,127,144,0,0,2,253,0,0,0,11,240,0,0,0,31,240,0,0,0,31,224,0,0,0,47,224,0,0,0,47,224,0,0,0,31,244,0,0,0,15,253,0,0,0,3,255,234,170,0,0,127,255,255,0,0,47,255,255,0,2,255,254,170,0,15,253,0,0,0,47,240,0,0,0,63,192,0,0,0,191,128,0,0,0,255,64,0,0,0,255,64,0,0,0,255,128,0,0,0,255,192,0,0,0,191,208,0,0,0,63,248,0,0,0,47,255,144,0,0,11,255,255,144,0,1,255,255,252,0,0,27,255,255,0,0,0,111,255,64,0,0,1,255,128,0,0,0,191,128,0,0,0,191,64,0,0,0,255,0,0,0,0,255,0,0,0,2,254,0,0,0,3,252,0,0,0,0,0,0, + // 0x03bf ο + 21,23,138,24,2,255,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x03c0 π + 26,23,161,27,0,255,42,170,170,170,170,170,160,127,255,255,255,255,255,240,127,255,255,255,255,255,240,42,191,250,170,191,250,160,0,63,208,0,31,240,0,0,63,208,0,31,240,0,0,63,208,0,31,240,0,0,63,208,0,31,240,0,0,63,208,0,31,240,0,0,63,208,0,31,240,0,0,63,208,0,31,240,0,0,63,208,0,31,240,0,0,63,208,0,31,240,0,0,63,208,0,31,240,0,0,63,208,0,31,240,0,0,63,208,0,31,240,0,0,63,208,0,31,240,0,0,63,208,0,15,240,0,0,63,208,0,15,248,0,0,63,208,0,15,255,224,0,63,208,0,7,255,224,0,63,208,0,1,255,224,0,0,0,0,0,21,0, + // 0x03c1 ρ + 20,32,160,24,2,246,0,6,255,144,0,0,63,255,254,0,1,255,255,255,192,3,255,235,255,240,15,252,0,47,248,31,240,0,11,252,47,224,0,3,253,63,208,0,2,254,63,192,0,2,255,63,192,0,1,255,127,192,0,1,255,127,192,0,0,255,127,192,0,1,255,127,192,0,1,255,127,192,0,2,255,127,192,0,3,254,127,192,0,7,252,127,224,0,15,248,127,254,64,191,240,127,255,255,255,208,127,255,255,255,64,127,203,255,248,0,127,192,21,0,0,127,192,0,0,0,127,192,0,0,0,127,192,0,0,0,127,192,0,0,0,127,192,0,0,0,127,192,0,0,0,127,192,0,0,0,127,192,0,0,0,42,128,0,0,0, + // 0x03c2 ς + 17,31,155,20,2,247,0,6,255,228,0,0,127,255,255,0,2,255,255,255,0,11,255,234,253,0,31,252,0,8,0,63,240,0,0,0,63,208,0,0,0,127,192,0,0,0,191,128,0,0,0,255,128,0,0,0,255,64,0,0,0,255,64,0,0,0,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,208,0,0,0,63,240,0,0,0,47,252,0,0,0,15,255,208,0,0,3,255,255,128,0,0,191,255,248,0,0,11,255,255,0,0,0,111,255,0,0,0,1,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,0,0,0,1,255,0,0,0,2,253,0,0,0,3,252,0,0,0,0,0,0, + // 0x03c3 σ + 22,23,138,25,2,255,0,0,90,170,170,144,0,31,255,255,255,224,0,255,255,255,255,224,7,255,254,191,234,144,15,254,0,47,208,0,47,244,0,15,240,0,63,208,0,7,248,0,127,192,0,3,252,0,191,128,0,3,253,0,255,128,0,2,254,0,255,64,0,1,255,0,255,64,0,1,255,0,255,64,0,1,255,0,255,128,0,2,254,0,191,128,0,3,254,0,127,192,0,3,253,0,63,208,0,11,252,0,47,244,0,31,248,0,15,254,65,191,240,0,7,255,255,255,192,0,1,255,255,255,0,0,0,31,255,244,0,0,0,0,85,0,0,0, + // 0x03c4 τ + 19,23,115,20,0,255,42,170,170,170,164,127,255,255,255,252,127,255,255,255,252,42,175,254,170,168,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,248,0,0,0,11,252,0,0,0,7,252,0,0,0,3,255,64,16,0,3,255,255,224,0,0,255,255,224,0,0,47,255,224,0,0,1,84,0, + // 0x03c5 υ + 19,23,115,24,3,255,106,0,0,26,144,255,64,0,47,224,255,64,0,31,240,255,64,0,15,240,255,64,0,15,244,255,64,0,15,244,255,64,0,15,248,255,64,0,11,248,255,64,0,11,248,255,64,0,11,248,255,64,0,11,248,255,64,0,11,248,255,64,0,11,248,255,64,0,15,244,255,64,0,15,244,191,128,0,31,240,191,192,0,63,224,127,208,0,191,208,63,248,6,255,128,31,255,255,255,0,11,255,255,252,0,1,255,255,208,0,0,5,84,0,0, + // 0x03c6 φ + 26,41,31,30,2,246,0,0,1,84,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,107,254,144,0,0,0,31,255,255,255,64,0,0,255,255,255,255,224,0,3,255,235,254,255,252,0,15,254,3,252,11,255,0,47,244,3,252,1,255,128,63,224,3,252,0,191,192,127,192,3,252,0,63,208,191,192,3,252,0,47,224,255,128,3,252,0,47,240,255,128,3,252,0,31,240,255,128,3,252,0,31,240,255,128,3,252,0,31,240,191,128,3,252,0,47,240,127,192,3,252,0,63,224,63,208,3,252,0,127,208,47,240,3,252,0,255,192,15,252,3,252,3,255,64,7,255,131,252,47,253,0,1,255,255,255,255,244,0,0,47,255,255,255,192,0,0,2,255,255,249,0,0,0,0,3,253,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,2,168,0,0,0, + // 0x03c7 χ + 23,32,192,24,1,246,106,0,0,0,6,164,255,224,0,0,15,244,255,244,0,0,47,224,255,252,0,0,63,192,3,254,0,0,191,128,1,255,0,0,255,0,0,255,128,3,253,0,0,127,192,7,252,0,0,63,224,15,240,0,0,31,240,31,224,0,0,15,248,63,192,0,0,7,252,191,64,0,0,3,254,255,0,0,0,1,255,253,0,0,0,0,255,248,0,0,0,0,127,240,0,0,0,0,63,224,0,0,0,0,191,240,0,0,0,0,255,244,0,0,0,3,255,252,0,0,0,7,251,253,0,0,0,15,241,255,0,0,0,47,208,255,64,0,0,127,192,191,192,0,0,255,64,63,208,0,2,254,0,47,240,0,3,252,0,15,244,0,15,244,0,11,253,0,31,240,0,3,255,252,63,208,0,1,255,252,191,128,0,0,127,252,170,0,0,0,6,148, + // 0x03c8 ψ + 25,41,31,31,3,246,0,0,1,80,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,106,0,11,244,0,170,0,255,0,11,244,0,255,0,255,0,11,244,0,191,64,255,0,11,244,0,191,128,255,0,11,244,0,127,128,255,0,11,244,0,63,192,255,0,11,244,0,63,192,255,0,11,244,0,63,192,255,0,11,244,0,63,192,255,0,11,244,0,63,192,255,0,11,244,0,63,192,255,0,11,244,0,63,192,255,0,11,244,0,63,192,255,64,11,244,0,63,192,191,64,11,244,0,127,192,127,128,11,244,0,191,128,63,208,11,244,1,255,0,63,240,11,244,7,254,0,15,254,75,248,127,252,0,7,255,255,255,255,240,0,1,255,255,255,255,128,0,0,27,255,255,248,0,0,0,0,27,248,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,6,164,0,0,0, + // 0x03c9 ω + 29,23,184,33,2,255,0,170,0,0,0,42,64,0,2,253,0,0,0,47,208,0,7,252,0,0,0,15,240,0,15,244,0,0,0,11,248,0,31,240,0,0,0,3,252,0,47,208,0,0,0,2,253,0,63,192,0,0,0,1,254,0,63,192,0,21,0,0,255,0,127,192,0,191,64,0,255,0,127,128,0,191,64,0,255,0,127,128,0,191,64,0,255,64,191,128,0,191,64,0,255,64,127,128,0,191,64,0,255,0,127,128,0,191,64,0,255,0,127,192,0,191,64,0,255,0,63,192,0,255,128,1,255,0,63,208,0,255,192,2,254,0,31,240,1,255,192,3,253,0,15,253,7,247,244,31,252,0,7,255,255,227,255,255,240,0,2,255,255,193,255,255,208,0,0,127,254,0,127,254,0,0,0,1,80,0,1,80,0,0, + // 0x03ca ϊ + 255, + // 0x03cb ϋ + 255, + // 0x03cc ό + 21,32,192,24,2,255,0,0,3,255,0,0,0,0,7,253,0,0,0,0,11,248,0,0,0,0,15,240,0,0,0,0,31,208,0,0,0,0,47,128,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x03cd ύ + 19,32,160,24,3,255,0,0,47,244,0,0,0,63,224,0,0,0,127,192,0,0,0,191,64,0,0,0,255,0,0,0,0,252,0,0,0,1,244,0,0,0,0,0,0,0,0,0,0,0,0,106,0,0,26,144,255,64,0,47,224,255,64,0,31,240,255,64,0,15,240,255,64,0,15,244,255,64,0,15,244,255,64,0,15,248,255,64,0,11,248,255,64,0,11,248,255,64,0,11,248,255,64,0,11,248,255,64,0,11,248,255,64,0,11,248,255,64,0,15,244,255,64,0,15,244,191,128,0,31,240,191,192,0,63,224,127,208,0,191,208,63,248,6,255,128,31,255,255,255,0,11,255,255,252,0,1,255,255,208,0,0,5,84,0,0, + // 0x03ce ώ + 29,32,0,33,2,255,0,0,0,3,255,0,0,0,0,0,0,3,253,0,0,0,0,0,0,11,252,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,224,0,0,0,0,0,0,31,192,0,0,0,0,0,0,47,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,42,64,0,2,253,0,0,0,47,208,0,7,252,0,0,0,15,240,0,15,244,0,0,0,11,248,0,31,240,0,0,0,3,252,0,47,208,0,0,0,2,253,0,63,192,0,0,0,1,254,0,63,192,0,21,0,0,255,0,127,192,0,191,64,0,255,0,127,128,0,191,64,0,255,0,127,128,0,191,64,0,255,64,191,128,0,191,64,0,255,64,127,128,0,191,64,0,255,0,127,128,0,191,64,0,255,0,127,192,0,191,64,0,255,0,63,192,0,255,128,1,255,0,63,208,0,255,192,2,254,0,31,240,1,255,192,3,253,0,15,253,7,247,244,31,252,0,7,255,255,227,255,255,240,0,2,255,255,193,255,255,208,0,0,127,254,0,127,254,0,0,0,1,80,0,1,80,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Katakana_29.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Katakana_29.cpp new file mode 100644 index 0000000000..5ecf0161d9 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Katakana_29.cpp @@ -0,0 +1,238 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Katakana 40pt, capital 'A' height: 29px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 +extern const uint8_t NotoSans_Medium_Katakana_29[11808] = { + 162,29,160,48,104,136,38,246, // unifont_t + // 0x30a0 ゠ + 160,48,18,8,40,40,11,11,191,255,255,255,224,106,170,170,170,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,170,170,170,144,191,255,255,255,224, + // 0x30a1 ァ + 161,48,28,27,189,40,7,251,255,255,255,255,255,255,244,255,255,255,255,255,255,254,255,255,255,255,255,255,254,250,170,170,170,170,175,252,0,0,0,0,0,31,240,0,0,0,0,0,63,224,0,0,15,244,0,255,192,0,0,15,244,2,255,0,0,0,11,244,11,253,0,0,0,11,244,47,244,0,0,0,11,240,255,224,0,0,0,15,240,63,128,0,0,0,15,240,9,0,0,0,0,15,240,0,0,0,0,0,31,240,0,0,0,0,0,47,224,0,0,0,0,0,63,192,0,0,0,0,0,127,192,0,0,0,0,0,255,64,0,0,0,0,3,255,0,0,0,0,0,15,253,0,0,0,0,0,127,248,0,0,0,0,2,255,224,0,0,0,0,15,255,128,0,0,0,0,3,253,0,0,0,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30a2 ア + 162,48,33,33,41,40,5,253,64,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,252,0,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,254,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,127,224,0,0,0,0,170,64,1,255,192,0,0,0,0,255,64,3,255,0,0,0,0,0,255,64,31,253,0,0,0,0,0,255,64,127,244,0,0,0,0,0,255,66,255,208,0,0,0,0,0,255,71,255,64,0,0,0,0,0,255,65,253,0,0,0,0,0,0,255,64,48,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,31,244,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,255,208,0,0,0,0,0,0,7,255,128,0,0,0,0,0,0,47,255,0,0,0,0,0,0,1,255,252,0,0,0,0,0,0,15,255,224,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,0,188,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0, + // 0x30a3 ィ + 163,48,27,29,203,40,5,252,0,0,0,0,0,2,64,0,0,0,0,0,11,208,0,0,0,0,0,47,244,0,0,0,0,0,191,244,0,0,0,0,3,255,208,0,0,0,0,15,255,64,0,0,0,0,127,252,0,0,0,0,2,255,224,0,0,0,0,31,255,64,0,0,0,1,255,252,0,0,0,0,31,255,240,0,0,0,1,255,255,240,0,0,0,111,255,255,240,0,0,27,255,255,95,240,0,0,255,255,244,31,240,0,0,191,254,64,31,240,0,0,63,208,0,31,240,0,0,40,0,0,31,240,0,0,0,0,0,31,240,0,0,0,0,0,31,240,0,0,0,0,0,31,240,0,0,0,0,0,31,240,0,0,0,0,0,31,240,0,0,0,0,0,31,240,0,0,0,0,0,31,240,0,0,0,0,0,31,240,0,0,0,0,0,47,240,0,0,0,0,0,47,240,0,0,0,0,0,5,80,0,0, + // 0x30a4 イ + 164,48,32,33,8,40,3,254,0,0,0,0,0,0,0,208,0,0,0,0,0,0,3,244,0,0,0,0,0,0,15,253,0,0,0,0,0,0,63,253,0,0,0,0,0,0,255,244,0,0,0,0,0,7,255,192,0,0,0,0,0,47,255,0,0,0,0,0,0,255,252,0,0,0,0,0,7,255,224,0,0,0,0,0,63,255,64,0,0,0,0,2,255,248,0,0,0,0,0,47,255,224,0,0,0,0,2,255,255,192,0,0,0,0,111,255,255,192,0,0,0,7,255,255,191,192,0,0,1,255,255,248,63,192,0,0,127,255,255,64,63,192,0,0,191,255,244,0,63,192,0,0,63,254,0,0,63,192,0,0,47,144,0,0,63,192,0,0,4,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,208,0,0,0,0,0,0,127,208,0,0, + // 0x30a5 ゥ + 165,48,27,29,203,40,7,252,0,0,7,252,0,0,0,0,0,7,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,0,0,3,252,0,0,0,255,255,255,255,255,255,208,191,255,255,255,255,255,248,191,255,255,255,255,255,244,191,170,170,170,170,191,240,191,0,0,0,0,31,240,191,0,0,0,0,47,240,191,0,0,0,0,63,224,191,0,0,0,0,63,208,191,0,0,0,0,127,192,191,0,0,0,0,255,128,255,0,0,0,0,255,64,21,0,0,0,2,255,0,0,0,0,0,3,254,0,0,0,0,0,15,252,0,0,0,0,0,47,248,0,0,0,0,0,191,240,0,0,0,0,3,255,192,0,0,0,0,47,255,64,0,0,0,1,255,252,0,0,0,0,111,255,240,0,0,0,15,255,255,128,0,0,0,3,255,252,0,0,0,0,1,255,144,0,0,0,0,0,116,0,0,0,0, + // 0x30a6 ウ + 166,48,31,36,32,40,5,253,0,0,0,106,128,0,0,0,0,0,0,191,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,192,0,0,0,254,170,170,255,234,170,175,192,255,255,255,255,255,255,255,244,255,255,255,255,255,255,255,244,255,255,255,255,255,255,255,240,255,0,0,0,0,0,47,240,255,0,0,0,0,0,63,240,255,0,0,0,0,0,63,224,255,0,0,0,0,0,63,208,255,0,0,0,0,0,127,192,255,0,0,0,0,0,191,192,255,0,0,0,0,0,255,128,255,0,0,0,0,1,255,64,255,64,0,0,0,2,255,0,85,0,0,0,0,3,254,0,0,0,0,0,0,11,252,0,0,0,0,0,0,31,248,0,0,0,0,0,0,63,240,0,0,0,0,0,0,255,208,0,0,0,0,0,3,255,192,0,0,0,0,0,15,255,0,0,0,0,0,0,127,253,0,0,0,0,0,2,255,244,0,0,0,0,0,47,255,208,0,0,0,0,7,255,255,0,0,0,0,2,255,255,248,0,0,0,0,1,255,255,192,0,0,0,0,0,127,253,0,0,0,0,0,0,47,128,0,0,0,0,0,0,4,0,0,0,0,0, + // 0x30a7 ェ + 167,48,28,23,161,40,6,254,14,170,170,170,170,170,176,15,255,255,255,255,255,244,15,255,255,255,255,255,244,15,255,255,255,255,255,244,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0, + // 0x30a8 エ + 168,48,34,27,243,40,3,0,7,255,255,255,255,255,255,254,0,7,255,255,255,255,255,255,254,0,7,255,255,255,255,255,255,254,0,7,255,255,255,255,255,255,254,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,80,0,0,7,252,0,0,0,80,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0, + // 0x30a9 ォ + 169,48,28,29,203,40,7,252,0,0,0,1,169,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,0,0,0,1,253,0,0,58,170,170,170,254,170,169,63,255,255,255,255,255,254,63,255,255,255,255,255,254,63,255,255,255,255,255,254,0,0,0,31,253,0,0,0,0,0,63,253,0,0,0,0,0,255,253,0,0,0,0,3,255,253,0,0,0,0,15,253,253,0,0,0,0,63,240,253,0,0,0,1,255,208,254,0,0,0,7,255,64,254,0,0,0,47,253,0,254,0,0,1,255,244,0,254,0,0,11,255,192,0,254,0,0,191,254,0,0,254,0,0,255,248,0,0,254,0,0,63,192,0,0,254,0,0,29,0,4,1,254,0,0,0,0,15,255,254,0,0,0,0,15,255,253,0,0,0,0,11,255,248,0,0,0,0,1,85,80,0,0, + // 0x30aa オ + 170,48,33,34,50,40,3,254,0,0,0,0,2,254,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,0,0,0,0,31,254,0,0,0,0,0,0,0,63,254,0,0,0,0,0,0,0,255,254,0,0,0,0,0,0,2,255,255,0,0,0,0,0,0,11,254,255,0,0,0,0,0,0,31,248,255,0,0,0,0,0,0,127,240,255,0,0,0,0,0,2,255,192,255,0,0,0,0,0,11,255,0,255,0,0,0,0,0,63,252,0,255,0,0,0,0,1,255,240,0,255,0,0,0,0,11,255,192,0,255,0,0,0,0,63,254,0,0,255,0,0,0,2,255,248,0,0,255,0,0,0,31,255,208,0,0,255,0,0,0,191,255,0,0,0,255,0,0,0,63,248,0,0,0,255,0,0,0,31,192,0,0,0,255,0,0,0,6,0,0,16,1,255,0,0,0,0,0,0,63,255,255,0,0,0,0,0,0,63,255,255,0,0,0,0,0,0,63,255,253,0,0,0,0,0,0,47,255,244,0,0,0, + // 0x30ab カ + 171,48,31,34,16,40,4,254,0,0,0,255,128,0,0,0,0,0,0,255,128,0,0,0,0,0,0,191,128,0,0,0,0,0,0,191,128,0,0,0,0,0,0,191,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,63,250,170,255,234,170,255,128,63,255,255,255,255,255,255,244,63,255,255,255,255,255,255,244,63,255,255,255,255,255,255,240,0,0,1,255,0,0,15,240,0,0,1,254,0,0,15,240,0,0,2,253,0,0,15,240,0,0,3,253,0,0,15,240,0,0,3,252,0,0,15,240,0,0,7,252,0,0,15,240,0,0,11,248,0,0,15,240,0,0,15,244,0,0,15,240,0,0,31,240,0,0,31,224,0,0,63,224,0,0,31,224,0,0,127,208,0,0,31,224,0,0,255,192,0,0,47,208,0,1,255,64,0,0,63,208,0,3,255,0,0,0,63,192,0,15,253,0,0,0,63,192,0,63,248,0,0,0,127,192,0,255,240,0,0,0,191,128,3,255,192,0,80,2,255,64,31,255,64,0,191,255,255,0,191,253,0,0,191,255,254,0,63,244,0,0,127,255,252,0,11,192,0,0,127,255,224,0,1,0,0,0,0,0,0,0, + // 0x30ac ガ + 172,48,35,37,77,40,3,253,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,31,128,0,0,0,106,64,0,6,15,192,0,0,0,191,192,0,63,7,240,0,0,0,191,192,0,31,195,244,0,0,0,191,128,0,15,209,252,0,0,0,127,128,0,7,240,180,0,0,0,191,128,0,3,244,0,0,0,0,191,128,0,0,144,0,0,0,0,191,128,0,0,0,0,63,255,255,255,255,255,255,208,0,63,255,255,255,255,255,255,248,0,63,255,255,255,255,255,255,248,0,63,255,255,255,255,255,255,244,0,0,0,0,255,0,0,11,244,0,0,0,1,255,0,0,11,244,0,0,0,2,254,0,0,11,244,0,0,0,2,253,0,0,15,240,0,0,0,3,253,0,0,15,240,0,0,0,3,252,0,0,15,240,0,0,0,11,252,0,0,15,240,0,0,0,15,248,0,0,15,240,0,0,0,15,240,0,0,15,240,0,0,0,47,240,0,0,15,240,0,0,0,63,208,0,0,31,224,0,0,0,255,192,0,0,31,224,0,0,1,255,128,0,0,47,208,0,0,3,255,0,0,0,47,208,0,0,15,253,0,0,0,63,192,0,0,47,252,0,0,0,63,192,0,0,191,240,0,0,0,191,192,0,3,255,208,0,80,1,255,128,0,31,255,64,0,127,255,255,64,0,191,253,0,0,127,255,255,0,0,47,244,0,0,127,255,253,0,0,11,208,0,0,63,255,224,0,0,1,0,0,0,0,0,0,0,0, + // 0x30ad キ + 173,48,32,35,24,40,4,253,0,0,1,188,0,0,0,0,0,0,7,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,253,0,0,0,0,0,0,2,254,0,0,0,0,0,0,1,255,0,1,111,0,0,0,0,255,22,255,255,64,0,0,1,255,255,255,255,64,0,90,255,255,255,255,255,128,255,255,255,255,255,254,144,0,191,255,255,255,229,0,0,0,127,255,250,191,192,0,0,0,127,164,0,63,192,0,0,0,16,0,0,63,208,0,0,0,0,0,0,47,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,240,0,6,253,0,0,0,15,240,107,255,254,0,0,0,15,255,255,255,255,0,0,107,255,255,255,255,255,90,255,255,255,255,255,249,64,255,255,255,255,255,148,0,0,191,255,255,235,252,0,0,0,127,254,144,3,253,0,0,0,57,64,0,2,253,0,0,0,0,0,0,2,254,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,191,128,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,208,0,0,0,0,0,0,62,64,0,0,0,0,0,0,0,0,0,0, + // 0x30ae ギ + 174,48,35,37,77,40,3,253,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,47,15,208,0,0,1,189,0,0,63,67,240,0,0,3,253,0,0,15,194,248,0,0,3,254,0,0,11,224,244,0,0,1,254,0,0,3,240,0,0,0,1,255,0,0,2,208,0,0,0,0,255,0,1,175,64,0,0,0,0,255,86,255,255,128,0,0,0,1,255,255,255,255,192,0,1,107,255,255,255,255,255,192,0,191,255,255,255,255,254,80,0,0,127,255,255,255,229,0,0,0,0,63,255,250,127,208,0,0,0,0,63,164,0,47,208,0,0,0,0,16,0,0,47,224,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,15,240,0,0,1,0,0,0,0,15,240,0,6,255,0,0,0,0,11,244,107,255,255,0,0,0,0,11,255,255,255,255,0,0,1,107,255,255,255,255,255,64,90,255,255,255,255,255,233,64,0,127,255,255,255,255,144,0,0,0,127,255,255,235,253,0,0,0,0,63,254,144,2,254,0,0,0,0,41,64,0,1,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,62,64,0,0,0, + // 0x30af ク + 175,48,31,36,32,40,4,253,0,0,0,40,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,127,224,0,0,0,0,0,0,255,192,0,0,0,0,0,1,255,64,0,0,0,0,0,3,255,0,0,0,0,0,0,11,255,170,170,171,128,0,0,31,255,255,255,255,248,0,0,63,255,255,255,255,252,0,0,191,255,255,255,255,248,0,2,255,128,0,0,47,240,0,7,255,0,0,0,63,240,0,31,252,0,0,0,63,224,0,127,244,0,0,0,191,192,2,255,208,0,0,0,255,192,15,255,64,0,0,1,255,64,127,253,0,0,0,3,255,0,255,244,0,0,0,7,253,0,63,192,0,0,0,15,252,0,10,0,0,0,0,47,244,0,0,0,0,0,0,127,240,0,0,0,0,0,0,255,192,0,0,0,0,0,3,255,128,0,0,0,0,0,15,255,0,0,0,0,0,0,47,252,0,0,0,0,0,0,191,240,0,0,0,0,0,3,255,208,0,0,0,0,0,31,255,64,0,0,0,0,0,191,253,0,0,0,0,0,11,255,240,0,0,0,0,0,191,255,192,0,0,0,0,27,255,253,0,0,0,0,0,255,255,224,0,0,0,0,0,127,255,64,0,0,0,0,0,31,228,0,0,0,0,0,0,2,0,0,0,0,0,0, + // 0x30b0 グ + 176,48,37,38,124,40,2,252,0,0,0,0,0,0,0,1,240,0,0,0,0,0,0,0,0,67,248,0,0,0,0,9,0,0,7,208,252,0,0,0,0,31,224,0,3,240,190,0,0,0,0,63,240,0,2,248,63,0,0,0,0,127,224,0,0,252,31,64,0,0,0,255,192,0,0,126,4,0,0,0,1,255,64,0,0,61,0,0,0,0,3,255,170,170,171,224,0,0,0,0,11,255,255,255,255,252,0,0,0,0,31,255,255,255,255,254,0,0,0,0,63,255,255,255,255,252,0,0,0,0,255,208,0,0,15,252,0,0,0,3,255,64,0,0,31,244,0,0,0,15,254,0,0,0,47,240,0,0,0,63,252,0,0,0,63,240,0,0,0,255,240,0,0,0,127,208,0,0,7,255,192,0,0,0,255,192,0,0,47,255,0,0,0,1,255,128,0,0,191,248,0,0,0,3,255,0,0,0,47,224,0,0,0,7,254,0,0,0,7,64,0,0,0,15,252,0,0,0,0,0,0,0,0,63,244,0,0,0,0,0,0,0,0,127,240,0,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,0,7,255,64,0,0,0,0,0,0,0,31,254,0,0,0,0,0,0,0,0,127,248,0,0,0,0,0,0,0,2,255,240,0,0,0,0,0,0,0,11,255,192,0,0,0,0,0,0,0,127,255,0,0,0,0,0,0,0,7,255,248,0,0,0,0,0,0,0,127,255,208,0,0,0,0,0,0,7,255,255,0,0,0,0,0,0,0,191,255,244,0,0,0,0,0,0,0,47,255,128,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,0,2,64,0,0,0,0,0,0,0, + // 0x30b1 ケ + 177,48,35,35,59,40,2,253,0,0,15,232,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,31,244,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,255,255,255,255,255,255,248,0,2,255,255,255,255,255,255,248,0,3,255,255,255,255,255,255,248,0,15,255,255,255,255,255,255,248,0,47,244,0,0,255,64,0,0,0,127,240,0,0,255,64,0,0,0,255,208,0,0,255,64,0,0,3,255,128,0,0,255,0,0,0,11,255,0,0,1,255,0,0,0,47,252,0,0,2,255,0,0,0,127,244,0,0,3,254,0,0,0,15,224,0,0,3,253,0,0,0,1,128,0,0,7,252,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,127,224,0,0,0,0,0,0,0,255,208,0,0,0,0,0,0,2,255,192,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,31,254,0,0,0,0,0,0,0,127,252,0,0,0,0,0,0,2,255,240,0,0,0,0,0,0,15,255,192,0,0,0,0,0,0,127,255,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,2,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30b2 ゲ + 178,48,36,38,86,40,2,252,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,3,240,0,0,4,0,0,0,6,194,248,0,0,31,228,0,0,11,224,253,0,0,47,240,0,0,3,244,127,0,0,63,240,0,0,1,252,63,0,0,63,208,0,0,0,253,4,0,0,127,192,0,0,0,125,0,0,0,255,128,0,0,0,16,0,0,0,255,64,0,0,0,0,0,0,2,255,255,255,255,255,255,240,0,3,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,240,0,31,255,255,255,255,255,255,240,0,63,240,0,1,255,0,0,0,0,255,208,0,1,255,0,0,0,2,255,192,0,2,255,0,0,0,7,255,0,0,2,254,0,0,0,31,253,0,0,3,254,0,0,0,127,248,0,0,3,253,0,0,0,255,240,0,0,7,252,0,0,0,31,192,0,0,11,252,0,0,0,2,0,0,0,15,248,0,0,0,0,0,0,0,31,244,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,1,255,128,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,63,252,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,7,255,208,0,0,0,0,0,0,47,255,128,0,0,0,0,0,0,255,254,0,0,0,0,0,0,0,47,244,0,0,0,0,0,0,0,7,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30b3 コ + 179,48,29,30,240,40,6,254,127,255,255,255,255,255,255,64,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,80,0,0,0,0,0,255,0,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,0, + // 0x30b4 ゴ + 180,48,33,38,86,40,5,253,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,2,244,0,0,0,0,0,0,7,193,252,0,0,0,0,0,0,11,224,190,0,0,0,0,0,0,3,244,63,0,0,0,0,0,0,2,252,47,128,0,0,0,0,0,0,253,15,64,0,0,0,0,0,0,189,0,0,0,0,0,0,0,0,16,0,0,63,255,255,255,255,255,255,64,0,63,255,255,255,255,255,255,64,0,63,255,255,255,255,255,255,64,0,63,255,255,255,255,255,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,191,255,255,255,255,255,255,64,0,191,255,255,255,255,255,255,64,0,191,255,255,255,255,255,255,64,0,191,255,255,255,255,255,255,64,0,16,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,85,0,0, + // 0x30b5 サ + 181,48,35,35,59,40,2,253,0,0,0,0,0,2,169,0,0,0,0,191,192,0,3,253,0,0,0,0,191,128,0,3,253,0,0,0,0,127,128,0,3,253,0,0,0,0,127,128,0,3,253,0,0,0,0,127,128,0,3,253,0,0,0,0,127,128,0,3,253,0,0,0,0,127,128,0,3,253,0,0,0,0,127,128,0,3,253,0,0,127,255,255,255,255,255,255,255,252,127,255,255,255,255,255,255,255,252,127,255,255,255,255,255,255,255,252,127,255,255,255,255,255,255,255,252,0,0,127,128,0,3,253,0,0,0,0,127,128,0,3,253,0,0,0,0,127,128,0,3,252,0,0,0,0,127,128,0,3,252,0,0,0,0,127,128,0,3,252,0,0,0,0,127,128,0,3,252,0,0,0,0,127,128,0,3,252,0,0,0,0,127,128,0,7,252,0,0,0,0,191,128,0,11,248,0,0,0,0,191,128,0,15,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,127,252,0,0,0,0,0,0,7,255,240,0,0,0,0,0,0,127,255,192,0,0,0,0,0,0,63,254,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,2,64,0,0,0,0, + // 0x30b6 ザ + 182,48,37,36,104,40,2,252,0,0,0,0,0,0,0,0,184,0,0,0,170,0,0,11,248,116,188,0,0,1,255,0,0,11,248,188,62,0,0,0,255,0,0,11,248,125,47,0,0,0,255,0,0,11,248,62,31,64,0,0,255,0,0,11,248,31,14,0,0,0,255,0,0,11,248,15,0,0,0,0,255,0,0,11,248,0,0,0,0,0,255,0,0,11,248,0,0,0,255,255,255,255,255,255,255,255,244,0,255,255,255,255,255,255,255,255,244,0,255,255,255,255,255,255,255,255,244,0,255,255,255,255,255,255,255,255,244,0,0,0,255,0,0,11,248,0,0,0,0,0,255,0,0,11,248,0,0,0,0,0,255,0,0,11,248,0,0,0,0,0,255,0,0,11,248,0,0,0,0,0,255,0,0,11,244,0,0,0,0,0,255,0,0,11,244,0,0,0,0,0,255,0,0,15,244,0,0,0,0,0,255,0,0,15,240,0,0,0,0,0,255,0,0,15,240,0,0,0,0,1,255,0,0,31,240,0,0,0,0,0,85,0,0,63,224,0,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,1,255,128,0,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,0,15,253,0,0,0,0,0,0,0,0,127,252,0,0,0,0,0,0,0,3,255,240,0,0,0,0,0,0,0,111,255,192,0,0,0,0,0,0,0,255,254,0,0,0,0,0,0,0,0,63,244,0,0,0,0,0,0,0,0,15,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30b7 シ + 183,48,33,33,41,40,4,254,0,0,192,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,7,255,64,0,0,0,0,0,0,15,255,224,0,0,0,0,0,0,1,255,253,0,0,0,0,0,0,0,47,255,128,0,0,0,0,0,0,7,255,128,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,28,0,0,0,0,0,8,0,0,0,0,0,0,4,0,63,128,0,0,0,0,0,44,0,191,244,0,0,0,0,0,63,0,255,254,0,0,0,0,0,255,64,47,255,208,0,0,0,2,255,128,2,255,248,0,0,0,11,255,0,0,127,244,0,0,0,31,252,0,0,11,240,0,0,0,127,244,0,0,1,192,0,0,1,255,224,0,0,0,0,0,0,7,255,128,0,0,0,0,0,0,47,254,0,0,0,0,0,0,0,191,248,0,0,0,0,0,0,7,255,224,0,0,0,0,0,0,47,255,64,0,0,0,0,0,1,255,253,0,0,0,0,0,0,31,255,240,0,0,0,0,0,1,255,255,128,0,0,0,0,0,47,255,252,0,0,0,0,0,27,255,255,208,0,0,0,0,11,255,255,254,0,0,0,0,0,15,255,255,224,0,0,0,0,0,7,255,253,0,0,0,0,0,0,2,254,64,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0, + // 0x30b8 ジ + 184,48,35,34,50,40,3,254,0,0,0,0,0,0,0,26,0,0,0,80,0,0,0,0,127,64,0,0,248,0,0,0,116,47,192,0,3,255,64,0,2,252,15,224,0,7,255,240,0,0,254,7,240,0,1,255,253,0,0,127,3,248,0,0,47,255,128,0,47,128,244,0,0,7,255,192,0,15,192,0,0,0,0,191,64,0,11,128,0,0,0,0,31,0,0,0,0,0,4,0,0,0,0,0,0,0,0,15,128,0,0,0,0,0,14,0,63,244,0,0,0,0,0,47,0,127,255,0,0,0,0,0,63,128,31,255,224,0,0,0,0,255,192,2,255,252,0,0,0,3,255,128,0,127,252,0,0,0,11,255,0,0,11,244,0,0,0,47,252,0,0,0,224,0,0,0,191,244,0,0,0,0,0,0,2,255,208,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,63,253,0,0,0,0,0,0,1,255,244,0,0,0,0,0,0,11,255,208,0,0,0,0,0,0,127,255,0,0,0,0,0,0,7,255,248,0,0,0,0,0,0,127,255,208,0,0,0,0,0,11,255,255,0,0,0,0,0,2,255,255,244,0,0,0,0,6,191,255,255,128,0,0,0,0,11,255,255,248,0,0,0,0,0,3,255,255,64,0,0,0,0,0,1,255,208,0,0,0,0,0,0,0,164,0,0,0,0,0,0,0, + // 0x30b9 ス + 185,48,32,32,0,40,4,254,0,0,0,0,0,0,16,0,2,255,255,255,255,255,253,0,2,255,255,255,255,255,255,64,2,255,255,255,255,255,255,0,2,255,255,255,255,255,253,0,0,0,0,0,0,15,252,0,0,0,0,0,0,15,248,0,0,0,0,0,0,47,240,0,0,0,0,0,0,63,224,0,0,0,0,0,0,191,192,0,0,0,0,0,0,255,128,0,0,0,0,0,3,255,0,0,0,0,0,0,7,253,0,0,0,0,0,0,15,248,0,0,0,0,0,0,63,240,0,0,0,0,0,0,191,208,0,0,0,0,0,1,255,192,0,0,0,0,0,7,255,240,0,0,0,0,0,31,255,252,0,0,0,0,0,127,255,255,0,0,0,0,1,255,211,255,192,0,0,0,11,255,128,255,240,0,0,0,47,254,0,127,252,0,0,1,255,248,0,31,255,0,0,11,255,208,0,7,255,128,0,127,255,64,0,1,255,224,2,255,252,0,0,0,191,244,47,255,224,0,0,0,47,253,255,255,64,0,0,0,15,255,127,248,0,0,0,0,3,253,31,208,0,0,0,0,1,244,5,0,0,0,0,0,0,144, + // 0x30ba ズ + 186,48,36,38,86,40,3,253,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,31,11,224,0,0,0,0,0,0,47,131,240,0,0,0,0,0,0,15,193,252,0,0,0,0,0,0,11,224,253,0,0,0,0,0,0,19,244,100,1,255,255,255,255,255,255,244,0,1,255,255,255,255,255,255,128,0,1,255,255,255,255,255,255,0,0,1,255,255,255,255,255,254,0,0,0,0,0,0,0,11,252,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,31,244,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,127,208,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,47,244,0,0,0,0,0,0,0,127,224,0,0,0,0,0,0,1,255,208,0,0,0,0,0,0,7,255,240,0,0,0,0,0,0,15,255,253,0,0,0,0,0,0,127,255,255,64,0,0,0,0,1,255,227,255,208,0,0,0,0,11,255,128,255,244,0,0,0,0,47,254,0,63,252,0,0,0,0,255,248,0,15,255,0,0,0,11,255,208,0,3,255,192,0,0,63,255,64,0,0,255,240,0,2,255,252,0,0,0,127,248,0,47,255,224,0,0,0,31,254,0,255,255,64,0,0,0,11,255,64,63,248,0,0,0,0,3,254,0,15,192,0,0,0,0,0,244,0,1,0,0,0,0,0,0,80,0, + // 0x30bb セ + 187,48,34,34,50,40,2,254,0,0,5,80,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,110,0,0,0,15,240,0,1,191,255,192,0,0,15,240,6,191,255,255,224,0,0,15,246,255,255,255,255,192,0,0,111,255,255,255,255,255,128,5,191,255,255,255,254,82,255,0,191,255,255,255,250,64,3,253,0,191,255,255,249,0,0,15,252,0,127,255,239,240,0,0,31,240,0,63,144,15,240,0,0,63,224,0,16,0,15,240,0,0,255,192,0,0,0,15,240,0,2,255,0,0,0,0,15,240,0,11,253,0,0,0,0,15,240,0,47,248,0,0,0,0,15,240,0,31,240,0,0,0,0,15,240,0,2,192,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,254,0,0,86,191,0,0,0,15,255,255,255,255,255,0,0,0,7,255,255,255,255,255,0,0,0,1,255,255,255,255,255,0,0,0,0,26,255,255,170,84,0, + // 0x30bc ゼ + 188,48,36,36,68,40,2,254,0,0,0,0,0,0,0,1,224,0,0,0,0,0,0,0,67,244,0,0,0,0,0,0,7,209,252,0,0,42,144,0,0,7,240,190,0,0,63,224,0,0,3,244,63,0,0,63,224,0,0,0,252,47,0,0,63,208,0,0,0,190,0,0,0,47,208,0,0,0,57,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,24,0,0,0,47,208,0,0,27,255,0,0,0,47,208,0,107,255,255,192,0,0,47,209,175,255,255,255,192,0,0,63,255,255,255,255,255,0,0,27,255,255,255,255,231,254,0,175,255,255,255,255,144,7,252,0,255,255,255,254,64,0,15,244,0,255,255,255,208,0,0,47,240,0,255,229,47,208,0,0,127,192,0,100,0,47,208,0,0,255,128,0,0,0,47,208,0,3,255,0,0,0,0,47,208,0,15,252,0,0,0,0,47,208,0,63,244,0,0,0,0,47,208,0,63,224,0,0,0,0,47,208,0,7,128,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,47,248,0,0,22,189,0,0,0,31,255,255,255,255,253,0,0,0,15,255,255,255,255,253,0,0,0,3,255,255,255,255,253,0,0,0,0,43,255,255,250,84,0, + // 0x30bd ソ + 189,48,31,31,248,40,4,254,0,64,0,0,0,0,46,144,11,192,0,0,0,0,47,244,127,240,0,0,0,0,63,240,63,244,0,0,0,0,63,224,15,252,0,0,0,0,63,208,11,254,0,0,0,0,127,208,3,255,0,0,0,0,191,192,1,255,192,0,0,0,255,192,0,255,208,0,0,0,255,128,0,127,240,0,0,1,255,0,0,47,248,0,0,3,255,0,0,15,252,0,0,3,254,0,0,11,244,0,0,11,252,0,0,3,64,0,0,15,248,0,0,0,0,0,0,47,244,0,0,0,0,0,0,63,240,0,0,0,0,0,0,255,208,0,0,0,0,0,2,255,128,0,0,0,0,0,7,255,0,0,0,0,0,0,15,253,0,0,0,0,0,0,63,248,0,0,0,0,0,0,255,240,0,0,0,0,0,3,255,192,0,0,0,0,0,31,255,0,0,0,0,0,0,255,252,0,0,0,0,0,7,255,240,0,0,0,0,0,127,255,192,0,0,0,0,7,255,254,0,0,0,0,0,3,255,244,0,0,0,0,0,0,191,128,0,0,0,0,0,0,40,0,0,0,0,0, + // 0x30be ゾ + 190,48,34,37,77,40,4,253,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,32,127,0,0,0,0,0,0,2,248,63,128,0,0,0,0,0,0,253,15,192,0,0,0,0,0,0,127,11,240,0,0,0,0,0,0,63,67,224,2,0,0,0,0,0,31,128,0,47,128,0,0,0,0,8,0,0,255,208,0,0,0,0,191,128,0,127,240,0,0,0,0,191,192,0,47,248,0,0,0,0,255,192,0,15,252,0,0,0,0,255,128,0,7,254,0,0,0,1,255,64,0,3,255,64,0,0,2,255,0,0,1,255,192,0,0,3,255,0,0,0,255,208,0,0,3,253,0,0,0,63,240,0,0,11,252,0,0,0,47,244,0,0,15,252,0,0,0,15,192,0,0,31,244,0,0,0,9,0,0,0,63,240,0,0,0,0,0,0,0,127,224,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,2,255,64,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,15,253,0,0,0,0,0,0,0,63,248,0,0,0,0,0,0,0,255,240,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,127,253,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,31,255,208,0,0,0,0,0,1,255,255,0,0,0,0,0,0,15,255,248,0,0,0,0,0,0,7,255,208,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0, + // 0x30bf タ + 191,48,32,36,32,40,3,253,0,0,0,15,64,0,0,0,0,0,0,15,248,0,0,0,0,0,0,47,244,0,0,0,0,0,0,63,240,0,0,0,0,0,0,191,208,0,0,0,0,0,0,255,128,0,0,64,0,0,3,255,255,255,255,248,0,0,7,255,255,255,255,255,0,0,15,255,255,255,255,255,0,0,63,250,170,170,175,254,0,0,191,208,0,0,11,252,0,2,255,128,0,0,15,248,0,11,255,0,0,0,31,244,0,47,252,0,0,0,47,240,0,191,240,0,0,0,63,224,3,255,192,60,0,0,191,192,31,255,0,255,128,0,255,128,191,252,2,255,244,3,255,0,47,224,0,191,254,7,254,0,7,128,0,31,255,223,252,0,0,0,0,2,255,255,244,0,0,0,0,0,127,255,224,0,0,0,0,0,15,255,208,0,0,0,0,0,7,255,248,0,0,0,0,0,31,255,255,0,0,0,0,0,127,255,255,208,0,0,0,2,255,226,255,192,0,0,0,15,255,128,191,64,0,0,0,127,254,0,29,0,0,0,7,255,244,0,0,0,0,0,47,255,192,0,0,0,0,7,255,254,0,0,0,0,0,191,255,244,0,0,0,0,0,63,255,128,0,0,0,0,0,15,244,0,0,0,0,0,0,2,64,0,0,0,0,0, + // 0x30c0 ダ + 192,48,37,38,124,40,2,252,0,0,0,0,0,0,0,2,240,0,0,0,0,0,0,0,0,66,248,0,0,0,0,14,64,0,7,224,252,0,0,0,0,15,248,0,3,240,190,0,0,0,0,47,240,0,2,248,63,0,0,0,0,63,224,0,0,252,31,64,0,0,0,191,192,0,0,126,4,0,0,0,1,255,128,0,0,125,0,0,0,0,3,255,255,255,255,244,0,0,0,0,11,255,255,255,255,255,0,0,0,0,31,255,255,255,255,255,0,0,0,0,63,250,170,170,175,253,0,0,0,0,255,208,0,0,11,252,0,0,0,3,255,64,0,0,15,248,0,0,0,15,254,0,0,0,31,244,0,0,0,47,252,0,0,0,63,240,0,0,0,255,240,0,0,0,127,208,0,0,3,255,192,56,0,0,255,192,0,0,31,255,0,255,64,1,255,64,0,0,191,252,3,255,240,3,255,0,0,0,63,224,0,191,254,7,253,0,0,0,11,64,0,31,255,223,252,0,0,0,0,0,0,2,255,255,240,0,0,0,0,0,0,0,127,255,224,0,0,0,0,0,0,0,15,255,208,0,0,0,0,0,0,0,7,255,248,0,0,0,0,0,0,0,47,255,255,0,0,0,0,0,0,0,191,255,255,192,0,0,0,0,0,2,255,211,255,192,0,0,0,0,0,15,255,64,191,0,0,0,0,0,0,191,253,0,45,0,0,0,0,0,7,255,244,0,0,0,0,0,0,0,127,255,192,0,0,0,0,0,0,7,255,254,0,0,0,0,0,0,0,191,255,240,0,0,0,0,0,0,0,63,255,64,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,0,2,64,0,0,0,0,0,0,0, + // 0x30c1 チ + 193,48,34,34,50,40,3,253,0,0,0,0,0,1,191,0,0,0,0,0,0,5,191,255,128,0,0,85,85,171,255,255,255,208,0,1,255,255,255,255,255,254,64,0,0,255,255,255,255,254,64,0,0,0,255,255,255,255,0,0,0,0,0,21,64,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,0,2,254,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,11,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,191,208,0,0,0,0,0,0,2,255,192,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,47,253,0,0,0,0,0,0,1,255,248,0,0,0,0,0,0,11,255,224,0,0,0,0,0,0,11,255,64,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0, + // 0x30c2 ヂ + 194,48,36,35,59,40,2,252,0,0,0,0,0,0,46,0,0,0,0,0,0,0,111,255,64,0,0,0,1,86,191,255,255,192,0,1,255,255,255,255,255,255,144,0,0,255,255,255,255,255,144,2,224,0,255,255,255,255,64,0,130,244,0,106,85,1,254,0,7,224,252,0,0,0,1,254,0,3,240,190,0,0,0,1,254,0,1,248,63,0,0,0,1,254,0,0,252,24,0,0,0,1,254,0,0,126,0,0,0,0,1,254,0,0,32,0,0,0,0,1,254,0,0,0,0,191,170,170,171,255,170,170,175,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,0,0,0,2,254,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,31,244,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,127,208,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,3,255,64,0,0,0,0,0,0,31,254,0,0,0,0,0,0,0,191,252,0,0,0,0,0,0,7,255,240,0,0,0,0,0,0,15,255,192,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30c3 ッ + 195,48,27,27,189,40,7,252,0,0,6,192,0,0,0,0,0,63,208,0,2,64,10,0,47,224,0,7,248,255,0,15,240,0,11,252,255,64,11,244,0,11,248,127,192,7,252,0,15,244,63,208,3,252,0,31,240,47,224,2,254,0,47,240,15,240,1,254,0,63,208,15,244,0,224,0,127,192,7,252,0,0,0,255,128,3,228,0,0,1,255,64,1,0,0,0,3,254,0,0,0,0,0,11,252,0,0,0,0,0,15,248,0,0,0,0,0,63,240,0,0,0,0,0,255,208,0,0,0,0,3,255,64,0,0,0,0,31,254,0,0,0,0,0,191,248,0,0,0,0,7,255,224,0,0,0,0,127,255,64,0,0,0,7,255,253,0,0,0,0,63,255,224,0,0,0,0,31,255,64,0,0,0,0,7,244,0,0,0,0,0,1,64,0,0,0,0, + // 0x30c4 ツ + 196,48,34,32,32,40,3,254,0,0,0,31,0,0,0,0,0,0,0,0,255,0,0,0,16,0,1,64,0,255,128,0,0,127,128,47,192,0,127,192,0,0,191,208,127,208,0,63,208,0,0,255,192,63,240,0,47,240,0,0,255,128,31,240,0,15,240,0,0,255,64,15,248,0,15,248,0,2,255,0,11,252,0,11,252,0,3,255,0,3,253,0,3,253,0,3,253,0,2,255,0,3,253,0,7,252,0,1,255,0,1,128,0,15,248,0,0,255,128,0,0,0,31,244,0,0,191,128,0,0,0,63,240,0,0,36,0,0,0,0,127,208,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,2,255,64,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,63,248,0,0,0,0,0,0,0,255,240,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,127,253,0,0,0,0,0,0,2,255,244,0,0,0,0,0,0,31,255,192,0,0,0,0,0,1,255,255,0,0,0,0,0,0,47,255,248,0,0,0,0,0,2,255,255,208,0,0,0,0,0,0,255,254,0,0,0,0,0,0,0,127,224,0,0,0,0,0,0,0,29,0,0,0,0,0,0, + // 0x30c5 ヅ + 197,48,35,37,77,40,3,253,0,0,0,0,0,0,0,6,128,0,0,0,0,0,0,9,15,208,0,0,0,0,0,0,127,7,240,0,0,0,0,0,0,47,131,248,0,0,0,0,0,0,15,192,252,0,0,0,108,0,0,11,224,184,0,0,3,254,0,0,3,240,0,1,0,1,255,0,0,1,64,0,191,0,0,255,64,0,0,0,0,255,128,0,191,128,0,1,249,0,127,192,0,127,192,0,2,255,0,63,224,0,63,208,0,3,255,0,47,240,0,47,240,0,3,253,0,15,244,0,15,240,0,7,252,0,15,252,0,15,248,0,15,252,0,7,252,0,7,248,0,15,244,0,3,254,0,2,64,0,47,240,0,2,255,0,0,0,0,63,224,0,0,254,0,0,0,0,127,208,0,0,144,0,0,0,0,255,192,0,0,0,0,0,0,2,255,64,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,47,248,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,2,255,192,0,0,0,0,0,0,11,255,64,0,0,0,0,0,0,47,253,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,7,255,224,0,0,0,0,0,0,127,255,64,0,0,0,0,0,3,255,252,0,0,0,0,0,0,127,255,240,0,0,0,0,0,7,255,255,64,0,0,0,0,0,3,255,248,0,0,0,0,0,0,0,255,144,0,0,0,0,0,0,0,56,0,0,0,0,0,0, + // 0x30c6 テ + 198,48,34,33,41,40,3,253,0,47,255,255,255,255,255,208,0,0,47,255,255,255,255,255,208,0,0,47,255,255,255,255,255,208,0,0,47,170,170,170,170,175,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,255,255,240,127,255,255,255,255,255,255,255,240,127,255,255,255,255,255,255,255,240,127,255,255,255,255,255,255,255,240,0,0,0,0,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,31,244,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,255,208,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,127,252,0,0,0,0,0,0,2,255,244,0,0,0,0,0,0,7,255,192,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0, + // 0x30c7 デ + 199,48,36,39,95,40,3,252,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,2,131,244,0,0,0,0,0,0,15,208,252,0,0,0,0,0,0,3,240,190,0,63,170,170,170,171,246,248,63,0,63,255,255,255,255,244,252,24,0,63,255,255,255,255,244,189,0,0,63,255,255,255,255,244,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,255,208,0,0,0,2,254,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,255,208,0,0,0,0,0,0,2,255,128,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,63,252,0,0,0,0,0,0,1,255,244,0,0,0,0,0,0,15,255,208,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,0,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30c8 ト + 200,48,21,33,198,40,13,254,255,128,0,0,0,0,255,128,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,249,0,0,0,0,255,255,224,0,0,0,255,255,255,64,0,0,255,255,255,249,0,0,255,175,255,255,224,0,255,65,191,255,254,0,255,64,7,255,255,192,255,64,0,111,255,128,255,64,0,2,255,64,255,64,0,0,47,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,64,0,0,0,0,255,128,0,0,0,0,170,64,0,0,0,0, + // 0x30c9 ド + 201,48,24,34,204,40,11,253,21,64,0,0,1,192,127,208,0,0,11,224,127,192,0,6,3,244,63,192,0,63,129,252,63,192,0,15,208,254,63,192,0,11,240,127,63,192,0,3,244,45,63,192,0,1,252,0,63,192,0,0,244,0,63,192,0,0,0,0,63,192,0,0,0,0,63,228,0,0,0,0,63,255,144,0,0,0,63,255,254,0,0,0,63,255,255,244,0,0,63,255,255,255,144,0,63,198,255,255,253,0,63,192,31,255,255,224,63,192,0,191,255,224,63,192,0,7,255,192,63,192,0,0,47,192,63,192,0,0,2,64,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,63,192,0,0,0,0,127,192,0,0,0,0,127,208,0,0,0,0,127,208,0,0,0,0,21,64,0,0,0,0, + // 0x30ca ナ + 202,48,34,35,59,40,3,253,0,0,0,0,85,0,0,0,0,0,0,0,1,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,127,255,255,255,255,255,255,255,240,127,255,255,255,255,255,255,255,240,127,255,255,255,255,255,255,255,240,127,255,255,255,255,255,255,255,240,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,31,248,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,191,224,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,7,255,64,0,0,0,0,0,0,31,255,0,0,0,0,0,0,0,191,252,0,0,0,0,0,0,7,255,240,0,0,0,0,0,0,47,255,192,0,0,0,0,0,0,11,254,0,0,0,0,0,0,0,1,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30cb ニ + 203,48,33,26,234,40,3,1,0,85,0,0,0,0,5,64,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,255,255,255,255,255,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,255,255,128,127,255,255,255,255,255,255,255,128,127,255,255,255,255,255,255,255,128,127,255,255,255,255,255,255,255,128,105,85,85,85,85,85,85,86,64, + // 0x30cc ヌ + 204,48,28,32,224,40,5,253,0,0,0,0,0,0,80,15,255,255,255,255,255,248,15,255,255,255,255,255,255,15,255,255,255,255,255,255,15,255,255,255,255,255,253,0,0,0,0,0,11,252,0,0,0,0,0,15,248,0,0,0,0,0,31,244,0,0,0,0,0,47,240,0,0,0,0,0,63,224,0,15,64,0,0,191,192,0,63,224,0,0,255,128,0,191,254,0,2,255,64,0,47,255,208,3,254,0,0,3,255,248,11,252,0,0,0,127,255,95,248,0,0,0,11,255,255,240,0,0,0,1,255,255,208,0,0,0,0,63,255,192,0,0,0,0,15,255,224,0,0,0,0,47,255,252,0,0,0,0,255,255,255,64,0,0,3,255,215,255,224,0,0,47,255,65,255,248,0,0,255,253,0,63,255,0,11,255,244,0,11,255,0,191,255,192,0,2,252,27,255,254,0,0,0,180,255,255,240,0,0,0,0,63,255,64,0,0,0,0,15,244,0,0,0,0,0,2,64,0,0,0,0,0, + // 0x30cd ネ + 205,48,34,36,68,40,3,253,0,0,0,2,169,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,253,0,0,0,0,3,255,170,171,255,170,191,128,0,3,255,255,255,255,255,255,224,0,3,255,255,255,255,255,255,244,0,3,255,255,255,255,255,255,224,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,2,255,192,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,127,252,0,0,0,0,0,0,2,255,224,0,0,0,0,0,0,31,255,128,0,0,0,0,0,1,255,254,0,180,0,0,0,0,31,255,252,2,254,0,0,0,2,255,255,252,7,255,224,0,0,111,255,255,252,2,255,253,0,31,255,255,131,252,0,63,255,128,255,255,248,3,252,0,7,255,240,127,255,128,3,252,0,0,255,240,47,228,0,3,252,0,0,47,208,9,0,0,3,252,0,0,7,128,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,2,168,0,0,0,0, + // 0x30ce ノ + 206,48,28,32,224,40,5,254,0,0,0,0,0,7,144,0,0,0,0,0,11,253,0,0,0,0,0,15,252,0,0,0,0,0,15,252,0,0,0,0,0,31,244,0,0,0,0,0,63,240,0,0,0,0,0,63,224,0,0,0,0,0,127,208,0,0,0,0,0,255,192,0,0,0,0,1,255,64,0,0,0,0,3,255,0,0,0,0,0,7,254,0,0,0,0,0,15,252,0,0,0,0,0,31,248,0,0,0,0,0,63,240,0,0,0,0,0,191,224,0,0,0,0,1,255,192,0,0,0,0,3,255,64,0,0,0,0,15,254,0,0,0,0,0,63,252,0,0,0,0,0,255,240,0,0,0,0,7,255,192,0,0,0,0,47,255,64,0,0,0,0,191,253,0,0,0,0,7,255,240,0,0,0,0,127,255,192,0,0,0,7,255,254,0,0,0,0,127,255,244,0,0,0,0,63,255,192,0,0,0,0,15,253,0,0,0,0,0,3,208,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30cf ハ + 207,48,34,29,5,40,3,255,0,0,4,0,0,11,0,0,0,0,0,47,224,0,255,128,0,0,0,0,47,240,0,191,192,0,0,0,0,63,224,0,63,224,0,0,0,0,63,208,0,47,240,0,0,0,0,63,192,0,15,244,0,0,0,0,127,192,0,15,252,0,0,0,0,191,128,0,7,253,0,0,0,0,255,64,0,3,255,0,0,0,0,255,0,0,1,255,64,0,0,2,255,0,0,0,255,128,0,0,3,254,0,0,0,191,192,0,0,3,253,0,0,0,63,224,0,0,11,252,0,0,0,63,240,0,0,15,248,0,0,0,31,244,0,0,31,244,0,0,0,15,248,0,0,47,240,0,0,0,11,252,0,0,63,224,0,0,0,7,253,0,0,191,192,0,0,0,3,255,0,0,255,128,0,0,0,2,255,0,2,255,0,0,0,0,1,255,64,7,255,0,0,0,0,0,255,192,15,253,0,0,0,0,0,255,192,47,252,0,0,0,0,0,127,208,63,240,0,0,0,0,0,63,240,255,224,0,0,0,0,0,63,240,255,192,0,0,0,0,0,47,240,27,64,0,0,0,0,0,30,64,0,0,0,0,0,0,0,0,0, + // 0x30d0 バ + 208,48,37,34,84,40,2,255,0,0,0,0,0,0,0,0,160,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,2,209,252,0,0,0,0,0,0,0,7,240,190,0,0,0,0,0,0,0,2,248,63,0,0,0,0,0,0,0,0,252,47,64,0,0,14,144,0,47,192,190,4,0,0,0,15,248,0,127,208,61,0,0,0,0,15,244,0,63,240,0,0,0,0,0,31,240,0,31,244,0,0,0,0,0,47,240,0,15,252,0,0,0,0,0,63,224,0,11,252,0,0,0,0,0,63,208,0,3,254,0,0,0,0,0,127,192,0,2,255,0,0,0,0,0,191,192,0,0,255,128,0,0,0,0,255,128,0,0,191,192,0,0,0,0,255,64,0,0,127,208,0,0,0,1,255,0,0,0,63,240,0,0,0,3,254,0,0,0,47,240,0,0,0,3,253,0,0,0,15,248,0,0,0,11,252,0,0,0,15,252,0,0,0,15,248,0,0,0,7,253,0,0,0,31,244,0,0,0,3,254,0,0,0,63,240,0,0,0,2,255,0,0,0,127,224,0,0,0,1,255,64,0,0,255,192,0,0,0,0,255,192,0,1,255,128,0,0,0,0,191,192,0,3,255,0,0,0,0,0,127,208,0,11,254,0,0,0,0,0,63,240,0,15,252,0,0,0,0,0,63,240,0,63,244,0,0,0,0,0,47,244,0,191,240,0,0,0,0,0,31,248,0,47,208,0,0,0,0,0,15,228,0,1,128,0,0,0,0,0,5,0,0, + // 0x30d1 パ + 209,48,37,35,94,40,2,254,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,0,127,254,0,0,0,0,0,0,0,0,248,47,0,0,0,0,0,0,0,1,240,11,128,0,0,0,0,0,0,1,224,7,128,0,0,4,0,0,6,65,240,11,128,0,0,15,228,0,127,192,248,31,0,0,0,15,244,0,127,224,127,254,0,0,0,31,240,0,63,240,15,244,0,0,0,31,240,0,31,244,0,0,0,0,0,47,224,0,15,252,0,0,0,0,0,63,224,0,7,253,0,0,0,0,0,63,208,0,3,255,0,0,0,0,0,127,192,0,1,255,0,0,0,0,0,191,192,0,0,255,128,0,0,0,0,255,128,0,0,191,192,0,0,0,0,255,64,0,0,63,208,0,0,0,2,255,0,0,0,63,240,0,0,0,3,254,0,0,0,31,244,0,0,0,3,253,0,0,0,15,248,0,0,0,11,252,0,0,0,11,252,0,0,0,15,248,0,0,0,7,253,0,0,0,31,244,0,0,0,3,254,0,0,0,63,240,0,0,0,2,255,0,0,0,127,224,0,0,0,1,255,64,0,0,255,192,0,0,0,0,255,128,0,1,255,128,0,0,0,0,191,192,0,3,255,0,0,0,0,0,127,208,0,7,254,0,0,0,0,0,63,224,0,15,252,0,0,0,0,0,63,240,0,47,248,0,0,0,0,0,47,244,0,127,240,0,0,0,0,0,31,248,0,127,208,0,0,0,0,0,15,248,0,7,192,0,0,0,0,0,14,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x30d2 ヒ + 210,48,27,33,231,40,8,255,21,64,0,0,0,0,0,127,192,0,0,0,0,0,127,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,2,0,63,192,0,0,0,47,64,63,192,0,0,6,255,192,63,192,0,0,127,255,192,63,192,0,31,255,255,128,63,192,7,255,255,248,0,63,198,255,255,254,64,0,63,255,255,255,208,0,0,63,255,255,248,0,0,0,63,255,253,0,0,0,0,63,254,64,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,192,0,0,0,0,0,63,208,0,0,0,0,16,63,249,64,0,21,175,244,47,255,255,255,255,255,244,15,255,255,255,255,255,244,3,255,255,255,255,255,244,0,26,255,255,255,170,80, + // 0x30d3 ビ + 211,48,30,36,32,40,7,254,0,0,0,0,0,0,8,0,0,0,0,0,0,0,126,0,0,0,0,0,0,40,63,0,85,64,0,0,0,252,31,192,255,128,0,0,0,127,15,208,255,128,0,0,0,63,71,240,255,64,0,0,0,31,195,128,255,64,0,0,0,15,208,0,255,64,0,0,0,6,0,0,255,64,0,0,0,8,0,0,255,64,0,0,0,189,0,0,255,64,0,0,11,255,0,0,255,64,0,1,255,255,64,0,255,64,0,127,255,255,64,0,255,64,31,255,255,224,0,0,255,91,255,255,253,0,0,0,255,255,255,255,128,0,0,0,255,255,255,224,0,0,0,0,255,255,248,0,0,0,0,0,255,249,0,0,0,0,0,0,255,128,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,191,192,0,0,0,0,16,0,191,249,0,0,21,175,240,0,127,255,255,255,255,255,240,0,47,255,255,255,255,255,240,0,11,255,255,255,255,255,240,0,0,107,255,255,255,169,64,0, + // 0x30d4 ピ + 212,48,31,35,24,40,7,254,0,0,0,0,0,0,190,0,0,0,0,0,0,7,255,208,170,64,0,0,0,15,146,240,255,128,0,0,0,31,0,180,255,64,0,0,0,30,0,120,255,64,0,0,0,31,0,184,255,64,0,0,0,15,129,240,255,64,0,0,0,7,255,224,255,64,0,0,0,45,255,64,255,64,0,0,2,254,0,0,255,64,0,0,111,255,0,0,255,64,0,11,255,255,64,0,255,64,1,255,255,253,0,0,255,64,191,255,255,144,0,0,255,175,255,255,244,0,0,0,255,255,255,254,0,0,0,0,255,255,255,144,0,0,0,0,255,255,224,0,0,0,0,0,255,228,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,64,0,0,0,0,0,0,191,192,0,0,0,0,16,0,191,249,0,0,21,175,240,0,63,255,255,255,255,255,240,0,47,255,255,255,255,255,240,0,11,255,255,255,255,255,240,0,0,107,255,255,255,169,64,0, + // 0x30d5 フ + 213,48,30,30,240,40,5,254,127,255,255,255,255,255,255,0,127,255,255,255,255,255,255,224,127,255,255,255,255,255,255,224,127,255,255,255,255,255,255,208,0,0,0,0,0,0,191,192,0,0,0,0,0,0,255,192,0,0,0,0,0,0,255,128,0,0,0,0,0,1,255,64,0,0,0,0,0,2,255,0,0,0,0,0,0,3,254,0,0,0,0,0,0,7,253,0,0,0,0,0,0,11,252,0,0,0,0,0,0,15,248,0,0,0,0,0,0,47,240,0,0,0,0,0,0,63,240,0,0,0,0,0,0,255,208,0,0,0,0,0,2,255,128,0,0,0,0,0,7,255,0,0,0,0,0,0,31,253,0,0,0,0,0,0,127,248,0,0,0,0,0,2,255,240,0,0,0,0,0,11,255,192,0,0,0,0,0,127,255,0,0,0,0,0,7,255,252,0,0,0,0,0,127,255,224,0,0,0,0,27,255,255,64,0,0,0,0,191,255,248,0,0,0,0,0,63,255,192,0,0,0,0,0,15,248,0,0,0,0,0,0,3,64,0,0,0,0,0, + // 0x30d6 ブ + 214,48,35,38,86,40,4,253,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,20,63,64,0,0,0,0,0,0,252,31,192,0,0,0,0,0,0,190,11,224,0,0,0,0,0,0,63,3,240,0,0,0,0,0,0,47,194,248,0,0,0,0,0,0,15,192,128,127,255,255,255,255,255,255,64,0,127,255,255,255,255,255,255,224,0,127,255,255,255,255,255,255,240,0,127,255,255,255,255,255,255,224,0,0,0,0,0,0,0,127,208,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,7,253,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,31,244,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,191,224,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,3,255,64,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,63,252,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,7,255,208,0,0,0,0,0,0,47,255,128,0,0,0,0,0,1,255,253,0,0,0,0,0,0,31,255,244,0,0,0,0,0,2,255,255,192,0,0,0,0,0,127,255,254,0,0,0,0,0,0,63,255,224,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30d7 プ + 215,48,35,37,77,40,5,253,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,11,255,192,0,0,0,0,0,0,31,71,224,0,0,0,0,0,0,45,0,240,0,0,0,0,0,0,60,0,244,0,0,0,0,0,0,61,0,240,255,255,255,255,255,255,255,67,240,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,254,0,255,255,255,255,255,255,255,64,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,11,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,127,208,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,2,255,128,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,15,253,0,0,0,0,0,0,0,63,252,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,31,255,64,0,0,0,0,0,0,127,254,0,0,0,0,0,0,7,255,244,0,0,0,0,0,0,127,255,208,0,0,0,0,0,11,255,255,0,0,0,0,0,1,255,255,248,0,0,0,0,0,0,255,255,192,0,0,0,0,0,0,63,253,0,0,0,0,0,0,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30d8 ヘ + 216,48,36,26,234,40,2,0,0,0,0,47,64,0,0,0,0,0,0,0,255,224,0,0,0,0,0,0,3,255,248,0,0,0,0,0,0,15,255,255,0,0,0,0,0,0,63,255,255,192,0,0,0,0,0,191,225,255,224,0,0,0,0,1,255,192,63,248,0,0,0,0,7,255,0,15,254,0,0,0,0,15,253,0,7,255,128,0,0,0,63,248,0,1,255,224,0,0,0,255,240,0,0,127,244,0,0,2,255,192,0,0,47,253,0,0,11,255,64,0,0,11,255,64,0,47,254,0,0,0,3,255,192,0,191,252,0,0,0,0,255,240,0,63,240,0,0,0,0,63,252,0,15,208,0,0,0,0,31,255,0,3,128,0,0,0,0,7,255,128,0,0,0,0,0,0,2,255,224,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,63,253,0,0,0,0,0,0,0,15,255,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,2,240,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,0,0, + // 0x30d9 ベ + 217,48,36,29,5,40,2,0,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,180,47,192,0,0,0,0,0,2,252,15,224,0,0,0,126,0,0,254,7,244,0,0,2,255,208,0,127,66,252,0,0,11,255,244,0,47,192,224,0,0,31,255,254,0,15,208,0,0,0,63,255,255,128,11,128,0,0,0,255,209,255,208,0,0,0,0,3,255,64,127,244,0,0,0,0,11,254,0,31,253,0,0,0,0,31,252,0,7,255,64,0,0,0,127,240,0,2,255,208,0,0,0,255,208,0,0,191,240,0,0,3,255,128,0,0,47,252,0,0,15,255,0,0,0,15,255,0,0,63,252,0,0,0,3,255,192,0,255,244,0,0,0,0,255,240,0,63,224,0,0,0,0,127,248,0,31,192,0,0,0,0,31,254,0,7,0,0,0,0,0,11,255,128,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,63,253,0,0,0,0,0,0,0,31,253,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,2,224,0,0,0,0,0,0,0,0,128, + // 0x30da ペ + 218,48,36,29,5,40,2,0,0,0,0,0,0,0,7,254,0,0,0,0,0,0,0,31,255,192,0,0,0,0,0,0,62,7,224,0,0,0,0,0,0,124,1,240,0,0,0,127,0,0,184,0,240,0,0,2,255,208,0,184,0,240,0,0,11,255,244,0,124,2,240,0,0,31,255,254,0,63,91,208,0,0,63,255,255,128,31,255,128,0,0,255,209,255,208,2,253,0,0,3,255,64,127,244,0,0,0,0,11,254,0,31,253,0,0,0,0,31,252,0,7,255,64,0,0,0,127,240,0,2,255,208,0,0,0,255,208,0,0,191,240,0,0,3,255,128,0,0,47,252,0,0,15,255,0,0,0,15,255,0,0,63,252,0,0,0,3,255,192,0,255,244,0,0,0,0,255,240,0,127,224,0,0,0,0,127,248,0,31,192,0,0,0,0,31,254,0,7,64,0,0,0,0,11,255,128,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,63,253,0,0,0,0,0,0,0,31,253,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,2,224,0,0,0,0,0,0,0,0,128, + // 0x30db ホ + 219,48,35,34,50,40,3,254,0,0,0,2,255,0,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,192,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,1,0,1,254,0,1,0,0,0,7,224,1,254,0,31,128,0,0,15,248,1,254,0,127,208,0,0,31,240,1,254,0,63,240,0,0,63,224,1,254,0,15,248,0,0,191,192,1,254,0,7,253,0,1,255,64,1,254,0,3,255,0,3,254,0,1,254,0,0,255,128,15,252,0,1,254,0,0,191,192,63,244,0,1,254,0,0,63,224,191,224,0,1,254,0,0,31,244,191,192,0,1,254,0,0,15,240,31,0,0,1,254,0,0,7,64,0,0,0,2,254,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,31,255,254,0,0,0,0,0,0,31,255,253,0,0,0,0,0,0,31,255,252,0,0,0,0,0,0,11,255,224,0,0,0,0, + // 0x30dc ボ + 220,48,36,36,68,40,2,253,0,0,0,0,0,0,0,1,224,0,0,0,0,0,0,2,131,244,0,0,0,1,255,0,15,193,252,0,0,0,0,255,0,7,240,189,0,0,0,0,255,0,3,244,63,0,0,0,0,255,0,1,252,47,0,0,0,0,255,0,0,252,0,0,0,0,0,255,0,0,80,0,0,0,0,0,255,0,0,0,0,31,255,255,255,255,255,255,255,224,31,255,255,255,255,255,255,255,224,31,255,255,255,255,255,255,255,224,31,255,255,255,255,255,255,255,208,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,1,64,0,255,0,1,64,0,0,3,244,0,255,0,31,192,0,0,11,252,0,255,0,63,240,0,0,15,244,0,255,0,31,244,0,0,63,240,0,255,0,11,252,0,0,191,192,0,255,0,3,255,0,0,255,128,0,255,0,1,255,64,3,255,0,0,255,0,0,191,192,11,252,0,0,255,0,0,63,224,47,244,0,0,255,0,0,47,240,191,240,0,0,255,0,0,15,248,63,192,0,0,255,0,0,11,240,11,0,0,0,255,0,0,3,64,0,0,0,0,255,0,0,0,0,0,0,4,2,255,0,0,0,0,0,0,15,255,255,0,0,0,0,0,0,15,255,255,0,0,0,0,0,0,15,255,253,0,0,0,0,0,0,6,191,224,0,0,0,0, + // 0x30dd ポ + 221,48,36,37,77,40,2,253,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,1,255,244,0,0,0,0,0,0,3,224,188,0,0,0,1,255,0,7,192,60,0,0,0,0,255,0,11,128,45,0,0,0,0,255,0,7,192,60,0,0,0,0,255,0,3,224,188,0,0,0,0,255,0,1,255,240,0,0,0,0,255,0,0,47,128,0,0,0,0,255,0,0,0,0,31,255,255,255,255,255,255,255,224,31,255,255,255,255,255,255,255,224,31,255,255,255,255,255,255,255,224,31,255,255,255,255,255,255,255,208,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,1,64,0,255,0,1,64,0,0,3,244,0,255,0,31,192,0,0,11,252,0,255,0,63,240,0,0,15,244,0,255,0,31,244,0,0,63,240,0,255,0,11,252,0,0,191,192,0,255,0,3,255,0,0,255,128,0,255,0,1,255,64,3,255,0,0,255,0,0,191,192,11,252,0,0,255,0,0,63,224,47,244,0,0,255,0,0,47,240,191,240,0,0,255,0,0,15,248,63,192,0,0,255,0,0,11,240,11,0,0,0,255,0,0,3,64,0,0,0,0,255,0,0,0,0,0,0,4,2,255,0,0,0,0,0,0,15,255,255,0,0,0,0,0,0,15,255,255,0,0,0,0,0,0,15,255,253,0,0,0,0,0,0,6,191,224,0,0,0,0, + // 0x30de マ + 222,48,34,31,23,40,4,253,255,255,255,255,255,255,255,253,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,63,248,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,3,255,64,0,0,0,0,0,0,15,254,0,0,0,1,64,0,0,47,252,0,0,0,7,224,0,0,191,240,0,0,0,47,252,0,2,255,192,0,0,0,47,255,0,11,255,64,0,0,0,7,255,192,47,253,0,0,0,0,1,255,244,255,244,0,0,0,0,0,63,255,255,208,0,0,0,0,0,15,255,255,64,0,0,0,0,0,3,255,252,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,63,253,0,0,0,0,0,0,0,15,255,64,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,0,255,240,0,0,0,0,0,0,0,63,252,0,0,0,0,0,0,0,31,255,0,0,0,0,0,0,0,7,255,128,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,0,248,0,0,0,0,0,0,0,0,16,0,0,0, + // 0x30df ミ + 223,48,27,32,224,40,6,254,0,63,148,0,0,0,0,0,63,255,229,0,0,0,0,191,255,255,249,0,0,0,191,255,255,255,249,0,0,0,111,255,255,255,244,0,0,0,27,255,255,244,0,0,0,0,27,255,240,0,0,0,0,0,27,224,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,64,0,0,0,0,0,2,254,144,0,0,0,0,3,255,255,144,0,0,0,11,255,255,255,144,0,0,6,255,255,255,255,144,0,0,1,191,255,255,255,0,0,0,0,111,255,254,0,0,0,0,0,111,253,0,0,0,0,0,1,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,64,0,0,0,0,0,63,255,144,0,0,0,0,127,255,255,144,0,0,0,255,255,255,255,144,0,0,22,255,255,255,255,144,0,0,5,191,255,255,254,64,0,0,1,191,255,255,208,0,0,0,1,191,255,192,0,0,0,0,1,255,128,0,0,0,0,0,7,0, + // 0x30e0 ム + 224,48,35,34,50,40,3,253,0,0,0,47,144,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,127,208,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,11,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,47,240,0,0,32,0,0,0,0,63,224,0,2,248,0,0,0,0,127,192,0,11,252,0,0,0,0,191,192,0,3,255,0,0,0,0,255,128,0,1,255,64,0,0,1,255,0,0,0,255,192,0,0,2,255,0,0,0,127,224,0,0,3,254,0,0,0,47,240,0,0,7,252,0,0,0,15,248,0,0,11,252,0,0,0,11,252,0,0,15,248,0,0,90,255,254,0,0,31,245,107,255,255,255,255,0,170,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,192,255,255,255,255,255,233,64,127,224,255,255,255,165,0,0,0,63,240,186,84,0,0,0,0,0,47,244,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0, + // 0x30e1 メ + 225,48,30,32,0,40,5,254,0,0,0,0,0,3,228,0,0,0,0,0,0,3,254,0,0,0,0,0,0,7,253,0,0,0,0,0,0,15,252,0,0,0,0,0,0,15,244,0,0,4,0,0,0,47,240,0,0,31,0,0,0,63,224,0,0,63,208,0,0,127,192,0,0,255,252,0,0,255,192,0,0,63,255,64,1,255,64,0,0,11,255,224,3,255,0,0,0,0,255,253,11,252,0,0,0,0,47,255,143,248,0,0,0,0,7,255,255,240,0,0,0,0,0,255,255,224,0,0,0,0,0,47,255,192,0,0,0,0,0,7,255,224,0,0,0,0,0,15,255,248,0,0,0,0,0,63,255,255,0,0,0,0,0,191,251,255,192,0,0,0,2,255,194,255,240,0,0,0,15,255,0,191,252,0,0,0,63,253,0,31,255,0,0,0,255,244,0,7,255,192,0,11,255,208,0,1,255,240,0,63,255,0,0,0,127,240,1,255,252,0,0,0,31,192,31,255,224,0,0,0,11,0,255,255,64,0,0,0,0,0,255,248,0,0,0,0,0,0,63,208,0,0,0,0,0,0,10,0,0,0,0,0,0,0, + // 0x30e2 モ + 226,48,33,31,23,40,4,254,3,250,170,170,170,170,170,208,0,3,255,255,255,255,255,255,208,0,3,255,255,255,255,255,255,208,0,3,255,255,255,255,255,255,208,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,191,255,255,255,255,255,255,255,64,191,255,255,255,255,255,255,255,64,191,255,255,255,255,255,255,255,64,191,255,255,255,255,255,255,255,64,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,224,0,0,84,0,0,0,0,255,255,255,255,252,0,0,0,0,127,255,255,255,252,0,0,0,0,31,255,255,255,252,0,0,0,0,1,255,255,255,252,0,0,0,0,0,0,0,0,0,0, + // 0x30e3 ャ + 227,48,29,29,232,40,6,252,0,0,80,0,0,0,0,0,0,31,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,11,244,0,0,0,0,0,0,7,248,0,0,0,24,0,0,3,252,0,0,107,255,0,0,3,252,1,175,255,255,128,0,2,255,255,255,255,255,0,0,91,255,255,255,251,254,0,191,255,255,255,233,7,252,0,255,255,255,228,0,15,240,0,255,255,255,128,0,63,224,0,190,64,63,192,0,191,192,0,0,0,63,192,1,255,0,0,0,0,47,208,7,253,0,0,0,0,31,224,31,248,0,0,0,0,15,240,47,224,0,0,0,0,15,240,2,192,0,0,0,0,11,248,0,0,0,0,0,0,7,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,253,0,0,0,0,0,0,2,254,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,57,0,0,0,0, + // 0x30e4 ヤ + 228,48,35,35,59,40,2,253,0,0,27,0,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,63,192,0,0,0,27,208,0,0,63,208,0,1,111,255,248,0,0,47,224,6,191,255,255,248,0,0,31,250,255,255,255,255,240,0,0,111,255,255,255,255,191,224,22,191,255,255,255,254,64,191,192,191,255,255,255,249,0,1,255,64,127,255,255,253,0,0,3,254,0,63,255,147,253,0,0,15,252,0,62,64,3,254,0,0,47,244,0,0,0,1,255,0,0,191,208,0,0,0,0,255,0,1,255,128,0,0,0,0,255,128,7,255,0,0,0,0,0,191,192,31,252,0,0,0,0,0,127,192,31,244,0,0,0,0,0,63,208,1,208,0,0,0,0,0,63,224,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,11,252,0,0,0,0,0,0,0,7,253,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,0,185,64,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30e5 ュ + 229,48,29,21,168,40,6,255,1,255,255,255,255,244,0,0,1,255,255,255,255,254,0,0,1,255,255,255,255,254,0,0,1,255,255,255,255,253,0,0,0,0,0,0,3,253,0,0,0,0,0,0,3,252,0,0,0,0,0,0,7,252,0,0,0,0,0,0,7,252,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,15,244,0,0,0,0,0,0,15,244,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,47,224,0,0,0,0,0,0,47,224,0,0,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,64, + // 0x30e6 ユ + 230,48,34,27,243,40,3,1,0,0,0,0,0,0,16,0,0,0,191,255,255,255,255,253,0,0,0,191,255,255,255,255,255,128,0,0,191,255,255,255,255,255,64,0,0,191,255,255,255,255,255,64,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,7,253,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,11,252,0,0,0,0,0,0,0,11,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,63,224,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,80,0,0,0,0,0,0,0,16, + // 0x30e7 ョ + 231,48,23,26,156,40,8,252,127,255,255,255,255,252,127,255,255,255,255,252,127,255,255,255,255,252,42,170,170,170,171,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,10,170,170,170,171,252,31,255,255,255,255,252,31,255,255,255,255,252,31,255,255,255,255,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,0,0,0,0,2,252,191,255,255,255,255,252,191,255,255,255,255,252,191,255,255,255,255,252,186,170,170,170,171,252,0,0,0,0,2,252,0,0,0,0,0,84, + // 0x30e8 ヨ + 232,48,28,30,210,40,6,254,127,255,255,255,255,255,254,127,255,255,255,255,255,254,127,255,255,255,255,255,253,127,255,255,255,255,255,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,31,255,255,255,255,255,253,31,255,255,255,255,255,253,31,255,255,255,255,255,253,31,255,255,255,255,255,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,0,0,0,0,0,2,253,255,255,255,255,255,255,253,255,255,255,255,255,255,253,255,255,255,255,255,255,253,255,255,255,255,255,255,254,0,0,0,0,0,2,254,0,0,0,0,0,2,253, + // 0x30e9 ラ + 233,48,31,33,8,40,5,253,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,170,170,170,170,170,175,128,191,255,255,255,255,255,255,244,191,255,255,255,255,255,255,240,191,255,255,255,255,255,255,240,0,0,0,0,0,0,63,208,0,0,0,0,0,0,127,192,0,0,0,0,0,0,255,192,0,0,0,0,0,0,255,64,0,0,0,0,0,2,255,0,0,0,0,0,0,7,253,0,0,0,0,0,0,15,252,0,0,0,0,0,0,47,244,0,0,0,0,0,0,191,224,0,0,0,0,0,2,255,192,0,0,0,0,0,11,255,0,0,0,0,0,0,127,253,0,0,0,0,0,2,255,244,0,0,0,0,0,47,255,192,0,0,0,0,6,255,255,0,0,0,0,1,191,255,244,0,0,0,0,3,255,255,128,0,0,0,0,0,255,248,0,0,0,0,0,0,63,128,0,0,0,0,0,0,20,0,0,0,0,0, + // 0x30ea リ + 234,48,24,33,198,40,8,254,0,0,0,0,2,169,191,192,0,0,3,253,191,192,0,0,3,253,127,192,0,0,3,253,127,192,0,0,3,253,127,192,0,0,3,253,127,192,0,0,3,253,127,192,0,0,3,253,127,192,0,0,3,253,127,192,0,0,3,253,127,192,0,0,3,253,127,192,0,0,3,253,127,192,0,0,3,253,127,192,0,0,3,253,127,192,0,0,3,253,127,192,0,0,3,252,127,192,0,0,7,252,127,192,0,0,7,252,191,192,0,0,11,252,191,192,0,0,15,248,21,64,0,0,15,244,0,0,0,0,31,240,0,0,0,0,63,240,0,0,0,0,191,208,0,0,0,2,255,192,0,0,0,11,255,0,0,0,0,63,253,0,0,0,2,255,248,0,0,0,47,255,224,0,0,7,255,255,64,0,0,3,255,248,0,0,0,0,255,144,0,0,0,0,56,0,0,0, + // 0x30eb ル + 235,48,36,32,32,40,2,254,0,0,255,64,7,252,0,0,0,0,0,255,64,3,252,0,0,0,0,0,255,64,3,252,0,0,0,0,0,255,64,3,252,0,0,0,0,0,255,64,3,252,0,0,0,0,0,255,64,3,252,0,0,0,0,0,255,64,3,252,0,0,0,0,0,255,64,3,252,0,0,0,0,0,255,64,3,252,0,0,0,0,0,255,0,3,252,0,0,0,0,0,255,0,3,252,0,0,0,0,0,255,0,3,252,0,0,0,0,0,255,0,3,252,0,0,0,0,0,255,0,3,252,0,0,0,0,0,255,0,3,252,0,0,0,0,0,255,0,3,252,0,0,0,0,1,255,0,3,252,0,0,16,0,1,254,0,3,252,0,0,60,0,2,253,0,3,252,0,0,254,0,3,253,0,3,252,0,3,255,0,7,252,0,3,252,0,15,254,0,15,248,0,3,252,0,63,248,0,31,244,0,3,252,1,255,240,0,63,240,0,3,252,11,255,128,0,127,208,0,3,252,127,254,0,0,255,192,0,3,255,255,244,0,3,255,64,0,3,255,255,208,0,15,254,0,0,3,255,254,0,0,127,252,0,0,7,255,244,0,0,127,240,0,0,3,255,128,0,0,11,192,0,0,0,252,0,0,0,1,0,0,0,0,16,0,0,0, + // 0x30ec レ + 236,48,29,32,0,40,8,254,127,208,0,0,0,0,0,0,127,208,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,44,0,63,192,0,0,0,0,126,0,63,192,0,0,0,1,255,64,63,192,0,0,0,11,255,0,63,192,0,0,0,47,253,0,63,192,0,0,1,255,244,0,63,192,0,0,11,255,208,0,63,192,0,0,63,255,0,0,63,192,0,2,255,248,0,0,63,192,0,47,255,208,0,0,63,192,2,255,255,0,0,0,63,192,47,255,248,0,0,0,63,219,255,255,128,0,0,0,63,255,255,248,0,0,0,0,127,255,255,128,0,0,0,0,127,255,244,0,0,0,0,0,47,254,0,0,0,0,0,0,7,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30ed ロ + 237,48,30,30,240,40,5,254,191,255,255,255,255,255,255,224,127,255,255,255,255,255,255,224,127,255,255,255,255,255,255,224,127,255,255,255,255,255,255,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,128,0,0,0,0,47,224,127,255,255,255,255,255,255,224,127,255,255,255,255,255,255,224,127,255,255,255,255,255,255,224,127,255,255,255,255,255,255,224,191,128,0,0,0,0,47,224,191,192,0,0,0,0,47,224,0,0,0,0,0,0,0,0, + // 0x30ee ヮ + 238,48,27,27,189,40,7,251,170,170,170,170,170,175,64,191,255,255,255,255,255,240,191,255,255,255,255,255,244,191,255,255,255,255,255,240,191,64,0,0,0,47,240,191,64,0,0,0,47,224,191,64,0,0,0,63,208,191,64,0,0,0,63,208,191,64,0,0,0,127,192,191,64,0,0,0,191,192,191,64,0,0,0,255,128,255,64,0,0,1,255,0,85,0,0,0,2,255,0,0,0,0,0,3,253,0,0,0,0,0,15,252,0,0,0,0,0,47,244,0,0,0,0,0,127,240,0,0,0,0,1,255,208,0,0,0,0,11,255,64,0,0,0,0,63,254,0,0,0,0,2,255,248,0,0,0,0,31,255,208,0,0,0,6,255,255,64,0,0,0,7,255,248,0,0,0,0,2,255,192,0,0,0,0,0,184,0,0,0,0,0,0,0,0,0,0,0, + // 0x30ef ワ + 239,48,31,32,0,40,5,253,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,244,255,255,255,255,255,255,255,240,255,64,0,0,0,0,63,240,255,64,0,0,0,0,63,224,255,64,0,0,0,0,63,208,255,64,0,0,0,0,127,208,255,64,0,0,0,0,127,192,255,64,0,0,0,0,191,192,255,64,0,0,0,0,255,128,255,64,0,0,0,0,255,64,255,64,0,0,0,1,255,0,255,64,0,0,0,3,255,0,170,64,0,0,0,3,254,0,0,0,0,0,0,11,252,0,0,0,0,0,0,15,252,0,0,0,0,0,0,47,244,0,0,0,0,0,0,127,240,0,0,0,0,0,1,255,208,0,0,0,0,0,3,255,128,0,0,0,0,0,15,255,0,0,0,0,0,0,127,252,0,0,0,0,0,2,255,244,0,0,0,0,0,31,255,192,0,0,0,0,0,191,255,0,0,0,0,0,27,255,252,0,0,0,0,2,255,255,224,0,0,0,0,2,255,255,0,0,0,0,0,0,191,244,0,0,0,0,0,0,46,64,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30f0 ヰ + 240,48,34,35,59,40,3,253,0,0,0,0,0,21,64,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,255,255,255,255,255,255,255,192,15,234,255,234,170,191,250,171,192,0,0,127,128,0,47,208,0,0,0,0,127,128,0,47,208,0,0,0,0,127,128,0,47,208,0,0,0,0,127,128,0,47,208,0,0,0,0,127,128,0,47,208,0,0,0,0,127,128,0,47,208,0,0,0,0,127,128,0,47,208,0,0,0,0,127,128,0,47,208,0,0,0,0,127,128,0,47,208,0,0,0,0,127,128,0,47,208,0,0,0,0,127,128,0,47,208,0,0,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,21,64,0,0, + // 0x30f1 ヱ + 241,48,34,28,252,40,3,0,11,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,208,11,255,255,255,255,255,255,255,192,11,255,255,255,255,255,255,255,64,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,31,248,0,0,0,0,15,248,0,63,240,0,0,0,0,15,248,0,255,192,0,0,0,0,15,248,3,255,64,0,0,0,0,15,244,15,254,0,0,0,0,0,15,244,63,248,0,0,0,0,0,15,244,11,224,0,0,0,0,0,15,244,1,128,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,84,0,0,0,0,0,0,0,16, + // 0x30f2 ヲ + 242,48,30,32,0,40,6,253,255,255,255,255,255,255,253,0,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,192,0,0,0,0,0,0,191,192,0,0,0,0,0,0,255,128,0,0,0,0,0,0,255,64,0,0,0,0,0,0,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,2,254,0,0,0,0,0,0,3,253,0,63,255,255,255,255,255,252,0,63,255,255,255,255,255,252,0,63,255,255,255,255,255,248,0,47,234,170,170,170,191,240,0,0,0,0,0,0,47,240,0,0,0,0,0,0,63,208,0,0,0,0,0,0,255,192,0,0,0,0,0,2,255,64,0,0,0,0,0,7,255,0,0,0,0,0,0,31,252,0,0,0,0,0,0,127,244,0,0,0,0,0,2,255,224,0,0,0,0,0,11,255,128,0,0,0,0,0,127,254,0,0,0,0,0,7,255,244,0,0,0,0,0,127,255,208,0,0,0,0,27,255,254,0,0,0,0,0,191,255,244,0,0,0,0,0,47,255,64,0,0,0,0,0,11,244,0,0,0,0,0,0,2,0,0,0,0,0,0, + // 0x30f3 ン + 243,48,32,31,248,40,5,255,0,128,0,0,0,0,0,0,3,244,0,0,0,0,0,0,15,254,0,0,0,0,0,0,31,255,128,0,0,0,0,0,3,255,240,0,0,0,0,0,0,191,253,0,0,0,0,0,0,31,255,64,0,0,0,16,0,7,255,208,0,0,0,52,0,0,255,244,0,0,0,188,0,0,63,224,0,0,0,254,0,0,15,128,0,0,3,255,0,0,1,0,0,0,11,254,0,0,0,0,0,0,31,252,0,0,0,0,0,0,63,244,0,0,0,0,0,0,255,224,0,0,0,0,0,3,255,192,0,0,0,0,0,15,255,0,0,0,0,0,0,63,252,0,0,0,0,0,1,255,244,0,0,0,0,0,11,255,192,0,0,0,0,0,63,255,0,0,0,0,0,1,255,252,0,0,0,0,0,31,255,224,0,0,0,0,1,255,255,64,0,0,0,0,47,255,252,0,0,0,0,27,255,255,208,0,0,0,27,255,255,254,0,0,0,0,127,255,255,224,0,0,0,0,63,255,253,0,0,0,0,0,15,255,128,0,0,0,0,0,7,144,0,0,0,0,0,0, + // 0x30f4 ヴ + 244,48,34,38,86,40,4,253,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,125,0,0,0,0,0,0,0,116,63,0,0,0,0,191,192,1,252,47,128,0,0,0,127,192,0,190,15,208,0,0,0,127,192,0,63,7,240,0,0,0,127,192,0,47,131,224,0,0,0,127,192,0,15,192,0,0,0,0,127,192,0,5,0,0,0,0,0,127,192,0,0,0,0,255,255,255,255,255,255,255,224,0,255,255,255,255,255,255,255,248,0,191,255,255,255,255,255,255,248,0,191,234,170,170,170,170,191,244,0,191,64,0,0,0,0,47,240,0,191,64,0,0,0,0,47,240,0,191,64,0,0,0,0,63,224,0,191,64,0,0,0,0,63,208,0,191,64,0,0,0,0,127,192,0,191,64,0,0,0,0,191,192,0,191,64,0,0,0,0,255,128,0,255,64,0,0,0,1,255,64,0,255,64,0,0,0,3,255,0,0,0,0,0,0,0,7,254,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,31,248,0,0,0,0,0,0,0,127,240,0,0,0,0,0,0,0,255,208,0,0,0,0,0,0,7,255,128,0,0,0,0,0,0,31,255,0,0,0,0,0,0,0,191,252,0,0,0,0,0,0,7,255,240,0,0,0,0,0,0,191,255,192,0,0,0,0,0,111,255,254,0,0,0,0,0,2,255,255,240,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,63,244,0,0,0,0,0,0,0,14,0,0,0,0,0,0, + // 0x30f5 ヵ + 245,48,26,29,203,40,6,252,0,0,6,164,0,0,0,0,0,11,244,0,0,0,0,0,11,244,0,0,0,0,0,7,244,0,0,0,0,0,11,244,0,0,0,0,0,11,240,0,0,0,58,170,175,250,170,170,64,63,255,255,255,255,255,240,63,255,255,255,255,255,240,63,255,255,255,255,255,240,0,0,15,224,0,15,240,0,0,15,224,0,15,240,0,0,31,208,0,15,240,0,0,47,192,0,15,240,0,0,63,192,0,15,240,0,0,63,128,0,15,224,0,0,191,64,0,15,224,0,0,255,0,0,15,224,0,2,254,0,0,31,208,0,3,253,0,0,31,208,0,11,252,0,0,47,192,0,47,240,0,0,63,192,0,191,224,0,0,63,192,2,255,192,0,0,191,128,11,255,0,15,235,255,64,127,252,0,15,255,255,0,63,240,0,15,255,253,0,11,128,0,11,255,244,0,1,0,0,0,0,0,0, + // 0x30f6 ヶ + 246,48,30,30,240,40,5,251,0,0,164,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,255,0,0,0,0,0,0,2,255,0,0,0,0,0,0,3,253,0,0,0,0,0,0,3,252,0,0,0,0,0,0,11,254,170,170,170,170,128,0,31,255,255,255,255,255,208,0,63,255,255,255,255,255,208,0,191,255,255,255,255,255,208,1,255,64,0,127,128,0,0,3,255,0,0,191,64,0,0,15,252,0,0,191,64,0,0,63,244,0,0,255,0,0,0,255,224,0,0,255,0,0,0,191,192,0,1,255,0,0,0,15,0,0,2,254,0,0,0,0,0,0,3,252,0,0,0,0,0,0,11,252,0,0,0,0,0,0,15,248,0,0,0,0,0,0,63,240,0,0,0,0,0,0,127,224,0,0,0,0,0,1,255,192,0,0,0,0,0,7,255,64,0,0,0,0,0,31,254,0,0,0,0,0,0,191,248,0,0,0,0,0,3,255,224,0,0,0,0,0,0,255,128,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x30f7 ヷ + 247,48,34,39,95,40,4,252,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,80,190,0,0,0,0,0,0,3,244,63,64,0,0,0,0,0,2,252,47,192,0,0,0,0,0,0,253,15,208,0,0,0,0,0,0,191,11,208,0,0,0,0,0,0,62,0,0,0,0,0,0,0,0,16,0,0,255,255,255,255,255,255,255,128,0,255,255,255,255,255,255,255,244,0,255,255,255,255,255,255,255,244,0,255,255,255,255,255,255,255,240,0,255,128,0,0,0,0,63,240,0,255,128,0,0,0,0,63,240,0,255,128,0,0,0,0,63,224,0,255,128,0,0,0,0,63,208,0,255,128,0,0,0,0,127,192,0,255,128,0,0,0,0,191,192,0,255,128,0,0,0,0,255,192,0,255,128,0,0,0,0,255,128,0,255,128,0,0,0,1,255,0,0,255,128,0,0,0,3,255,0,0,85,0,0,0,0,3,254,0,0,0,0,0,0,0,11,252,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,191,224,0,0,0,0,0,0,2,255,192,0,0,0,0,0,0,7,255,64,0,0,0,0,0,0,47,254,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,7,255,224,0,0,0,0,0,0,127,255,128,0,0,0,0,0,6,255,254,0,0,0,0,0,1,191,255,244,0,0,0,0,0,2,255,255,128,0,0,0,0,0,0,191,252,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,4,0,0,0,0,0,0, + // 0x30f8 ヸ + 248,48,36,37,77,40,3,253,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,3,224,0,0,0,0,0,0,3,210,240,0,0,0,0,0,63,194,240,248,0,0,0,0,0,63,193,244,188,0,0,0,0,0,63,192,248,125,0,0,0,0,0,63,192,188,32,0,0,0,0,0,63,192,52,0,0,0,0,0,0,63,192,0,0,47,234,170,170,170,191,234,191,64,47,255,255,255,255,255,255,255,64,47,255,255,255,255,255,255,255,64,47,255,255,255,255,255,255,255,64,0,0,255,0,0,63,192,0,0,0,0,255,0,0,63,192,0,0,0,0,255,0,0,63,192,0,0,0,0,255,0,0,63,192,0,0,0,0,255,0,0,63,192,0,0,0,0,255,0,0,63,192,0,0,0,0,255,0,0,63,192,0,0,0,0,255,0,0,63,192,0,0,0,0,255,0,0,63,192,0,0,0,0,255,0,0,63,192,0,0,0,0,255,0,0,63,192,0,0,255,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,255,208,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,21,64,0,0, + // 0x30f9 ヹ + 249,48,36,36,68,40,2,255,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,7,224,0,0,0,0,0,0,31,3,240,0,0,0,0,0,0,47,130,248,0,0,0,0,0,0,15,208,252,0,0,0,0,0,0,7,240,189,0,0,0,0,0,0,3,240,0,0,0,0,0,0,0,1,64,0,3,255,255,255,255,255,255,255,128,3,255,255,255,255,255,255,255,240,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,192,0,0,0,0,0,0,1,255,64,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,11,252,0,0,0,0,7,252,0,47,244,0,0,0,0,7,252,0,191,224,0,0,0,0,7,252,2,255,192,0,0,0,0,7,252,11,255,0,0,0,0,0,7,252,31,252,0,0,0,0,0,7,252,3,240,0,0,0,0,0,7,252,0,128,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,7,252,0,0,0,0,127,255,255,255,255,255,255,255,248,127,255,255,255,255,255,255,255,248,127,255,255,255,255,255,255,255,248,127,255,255,255,255,255,255,255,248,21,0,0,0,0,0,0,0,20, + // 0x30fa ヺ + 250,48,34,39,95,40,4,252,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,96,191,0,0,0,0,0,0,3,244,63,64,0,0,0,0,0,1,252,31,192,0,0,0,0,0,0,253,15,208,0,0,0,0,0,0,127,7,64,0,0,0,0,0,0,56,0,0,127,255,255,255,255,255,255,0,0,127,255,255,255,255,255,255,224,0,127,255,255,255,255,255,255,240,0,127,255,255,255,255,255,255,224,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,255,0,0,15,255,255,255,255,255,254,0,0,15,255,255,255,255,255,253,0,0,15,255,255,255,255,255,252,0,0,15,234,170,170,170,175,248,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,3,255,64,0,0,0,0,0,0,11,254,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,255,240,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,47,255,0,0,0,0,0,0,1,255,252,0,0,0,0,0,0,31,255,240,0,0,0,0,0,6,255,255,64,0,0,0,0,0,63,255,248,0,0,0,0,0,0,31,255,208,0,0,0,0,0,0,7,253,0,0,0,0,0,0,0,1,128,0,0,0,0,0,0, + // 0x30fb ・ + 251,48,10,10,30,40,15,10,2,248,0,31,255,64,63,255,192,127,255,208,191,255,224,127,255,208,63,255,192,47,255,128,7,253,0,0,0,0, + // 0x30fc ー + 252,48,32,6,48,40,4,12,170,170,170,170,170,170,170,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0, + // 0x30fd ヽ + 253,48,19,20,100,40,11,4,2,0,0,0,0,15,208,0,0,0,127,244,0,0,0,127,253,0,0,0,15,255,64,0,0,3,255,208,0,0,0,255,244,0,0,0,63,253,0,0,0,15,255,0,0,0,3,255,192,0,0,0,255,240,0,0,0,63,252,0,0,0,31,254,0,0,0,11,255,128,0,0,2,255,208,0,0,0,255,240,0,0,0,63,252,0,0,0,31,248,0,0,0,11,208,0,0,0,2,0, + // 0x30fe ヾ + 254,48,22,26,156,40,10,3,0,0,0,0,28,0,0,0,0,0,191,0,0,0,1,240,63,64,0,0,3,248,31,192,0,0,0,253,15,224,0,0,0,191,7,240,7,128,0,63,66,208,47,224,0,31,192,0,191,248,0,13,0,0,47,254,0,0,0,0,11,255,128,0,0,0,2,255,224,0,0,0,0,191,248,0,0,0,0,47,254,0,0,0,0,11,255,128,0,0,0,2,255,208,0,0,0,0,191,244,0,0,0,0,63,252,0,0,0,0,15,255,0,0,0,0,3,255,192,0,0,0,1,255,224,0,0,0,0,191,244,0,0,0,0,47,252,0,0,0,0,15,244,0,0,0,0,7,192,0,0,0,0,1,0,0, + // 0x30ff ヿ + 255,48,25,34,238,40,7,253,127,255,255,255,255,255,128,127,255,255,255,255,255,128,127,255,255,255,255,255,128,63,255,255,255,255,255,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,127,128,0,0,0,0,0,106,128, + // 0x4eee 仮 + 238,78,38,38,124,40,1,252,0,0,4,0,0,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,0,63,193,170,170,170,170,170,64,0,0,191,67,255,255,255,255,255,128,0,0,255,3,255,255,255,255,255,128,0,2,254,3,255,255,255,255,255,128,0,3,252,3,248,0,0,0,0,0,0,11,248,3,248,0,0,0,0,0,0,31,240,3,248,0,0,0,0,0,0,63,208,3,248,0,0,0,0,0,0,191,208,3,248,0,0,0,0,0,1,255,208,3,248,0,0,0,0,0,3,255,208,3,248,0,0,0,0,0,15,255,208,3,255,255,255,255,253,0,63,255,208,3,255,255,255,255,255,0,255,239,208,3,255,255,255,255,254,0,191,143,208,3,255,245,85,86,253,0,63,15,208,3,255,244,0,2,252,0,44,15,208,3,251,248,0,3,252,0,0,15,208,3,250,252,0,7,248,0,0,15,208,3,244,254,0,11,240,0,0,15,208,7,244,191,0,15,240,0,0,15,208,7,244,127,128,47,208,0,0,15,208,11,240,63,192,63,192,0,0,15,208,11,240,31,240,191,64,0,0,15,208,15,240,11,245,255,0,0,0,15,208,15,224,3,255,253,0,0,0,15,208,31,224,2,255,252,0,0,0,15,208,47,208,0,255,240,0,0,0,15,208,63,192,0,191,240,0,0,0,15,208,63,128,2,255,252,0,0,0,15,208,127,64,15,255,255,64,0,0,15,208,255,0,127,250,255,224,0,0,15,209,255,2,255,224,127,254,0,0,15,211,253,47,255,64,15,255,224,0,15,215,252,47,253,0,2,255,192,0,15,208,244,15,224,0,0,63,64,0,10,128,32,2,0,0,0,6,0, + // 0x540d 名 + 13,84,35,38,86,40,1,252,0,0,0,46,144,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,7,255,255,255,255,0,0,0,0,31,255,255,255,255,192,0,0,0,63,255,255,255,255,128,0,0,1,255,213,85,85,255,0,0,0,7,255,0,0,2,255,0,0,0,31,252,0,0,3,253,0,0,0,191,253,0,0,15,248,0,0,7,255,255,128,0,31,240,0,0,47,255,255,240,0,63,208,0,0,63,248,63,252,0,255,192,0,0,15,208,11,255,3,255,0,0,0,6,0,2,255,203,253,0,0,0,0,0,0,127,255,244,0,0,0,0,0,0,31,255,224,0,0,0,0,0,0,11,255,128,0,0,0,0,0,0,31,254,0,0,0,0,0,0,0,191,255,255,255,255,244,0,0,7,255,255,255,255,255,244,0,0,63,255,255,255,255,255,244,0,2,255,254,85,85,85,91,244,0,111,255,254,0,0,0,7,244,11,255,254,254,0,0,0,7,244,127,255,224,254,0,0,0,7,244,47,254,0,254,0,0,0,7,244,15,208,0,254,0,0,0,7,244,5,0,0,254,0,0,0,7,244,0,0,0,254,0,0,0,7,244,0,0,0,254,0,0,0,7,244,0,0,0,254,85,85,85,91,244,0,0,0,255,255,255,255,255,244,0,0,0,255,255,255,255,255,244,0,0,0,255,255,255,255,255,244,0,0,0,254,0,0,0,7,244,0,0,0,169,0,0,0,7,244, + // 0x5b9a 定 + 154,91,37,38,124,40,1,252,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,6,170,170,170,191,234,170,170,169,0,11,255,255,255,255,255,255,255,254,0,11,255,255,255,255,255,255,255,254,0,11,255,255,255,255,255,255,255,254,0,11,240,0,0,0,0,0,0,254,0,11,240,0,0,0,0,0,0,254,0,11,240,0,0,0,0,0,0,254,0,11,240,0,0,0,0,0,0,254,0,11,240,170,170,170,170,170,160,254,0,11,240,255,255,255,255,255,244,254,0,0,0,255,255,255,255,255,244,0,0,0,0,255,255,255,255,255,244,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,1,253,0,63,192,0,0,0,0,0,2,253,0,63,192,0,0,0,0,0,3,252,0,63,192,0,0,0,0,0,3,252,0,63,255,255,255,64,0,0,3,248,0,63,255,255,255,64,0,0,7,248,0,63,255,255,255,64,0,0,11,252,0,63,213,85,85,0,0,0,15,253,0,63,192,0,0,0,0,0,31,255,0,63,192,0,0,0,0,0,47,255,128,63,192,0,0,0,0,0,127,255,224,63,192,0,0,0,0,0,255,143,248,63,192,0,0,0,0,1,255,7,255,127,192,0,0,0,0,3,254,1,255,255,192,0,0,0,0,15,252,0,127,255,255,234,170,170,128,63,244,0,15,255,255,255,255,255,128,127,208,0,0,191,255,255,255,255,0,15,128,0,0,5,175,255,255,255,0,2,0,0,0,0,0,0,0,0,0, + // 0x7247 片 + 71,114,34,38,86,40,2,252,0,0,0,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,255,255,255,255,255,255,224,0,63,255,255,255,255,255,255,240,0,63,255,255,255,255,255,255,240,0,63,255,255,255,255,255,255,240,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,191,255,255,255,255,255,64,0,0,191,255,255,255,255,255,64,0,0,255,0,0,0,0,191,64,0,0,255,0,0,0,0,191,64,0,0,255,0,0,0,0,191,64,0,2,254,0,0,0,0,191,64,0,3,253,0,0,0,0,191,64,0,7,252,0,0,0,0,191,64,0,11,248,0,0,0,0,191,64,0,15,244,0,0,0,0,191,64,0,63,240,0,0,0,0,191,64,0,191,208,0,0,0,0,191,64,0,255,192,0,0,0,0,191,64,0,191,0,0,0,0,0,191,64,0,45,0,0,0,0,0,191,64,0,8,0,0,0,0,0,191,64,0, + // 0x793a 示 + 58,121,36,35,59,40,2,252,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,170,170,170,170,170,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,106,170,170,170,255,170,170,170,169,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,2,64,0,255,0,1,128,0,0,11,244,0,255,0,31,208,0,0,15,240,0,255,0,31,240,0,0,47,240,0,255,0,15,248,0,0,63,208,0,255,0,3,253,0,0,191,192,0,255,0,2,255,0,0,255,64,0,255,0,0,255,128,3,255,0,0,255,0,0,127,192,11,252,0,0,255,0,0,63,224,31,248,0,0,255,0,0,31,240,63,240,0,0,255,0,0,15,248,255,192,0,0,255,0,0,7,252,191,64,0,0,255,0,0,3,252,30,0,0,0,255,0,0,2,224,0,0,47,255,255,0,0,0,0,0,0,31,255,255,0,0,0,0,0,0,15,255,252,0,0,0,0,0,0,11,254,144,0,0,0,0, + // 0x7fa9 義 + 169,127,37,38,124,40,2,252,0,0,25,0,0,0,165,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,127,192,0,2,254,0,0,0,0,0,47,208,0,3,252,0,0,0,11,255,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,255,240,0,15,255,255,255,255,255,255,255,240,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,170,170,170,255,170,170,170,0,0,0,255,255,255,255,255,255,255,0,0,0,255,255,255,255,255,255,255,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,191,255,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,255,254,0,0,0,0,26,0,0,1,0,0,0,0,21,175,255,194,252,11,208,0,0,63,255,255,255,226,252,47,253,0,0,47,255,255,229,2,252,7,255,192,0,0,0,191,0,1,252,0,127,208,0,0,0,191,0,0,253,0,7,64,0,191,255,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,255,255,0,191,255,255,255,255,255,255,255,255,0,0,0,191,0,0,63,128,20,0,0,0,0,191,0,0,63,192,63,128,0,0,0,191,171,248,47,208,255,0,0,106,255,255,255,248,15,231,252,0,0,191,255,255,255,228,11,255,244,0,0,191,255,255,0,0,7,255,192,24,0,0,0,191,0,0,47,255,0,47,64,0,0,191,0,6,255,255,192,63,64,0,0,191,1,191,255,191,249,191,0,3,255,255,7,255,248,15,255,255,0,1,255,254,2,255,64,2,255,253,0,0,255,164,0,224,0,0,47,244,0, + // 0x8868 表 + 104,136,38,38,124,40,1,252,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,3,255,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,255,252,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,63,255,255,255,255,255,255,224,0,0,63,255,255,255,255,255,255,224,0,0,63,255,255,255,255,255,255,224,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,192,0,0,0,0,31,255,255,255,255,255,255,255,255,64,31,255,255,255,255,255,255,255,255,64,31,255,255,255,255,255,255,255,255,64,0,0,0,15,255,252,0,0,0,0,0,0,0,127,241,253,0,0,144,0,0,0,7,255,192,254,0,3,248,0,0,0,47,254,0,191,0,31,253,0,0,2,255,244,0,63,128,191,240,0,0,127,255,224,0,47,195,255,128,0,27,255,255,224,0,31,255,253,0,0,127,255,223,224,0,15,255,224,0,0,47,248,15,224,0,3,255,0,0,0,15,128,15,224,0,2,255,0,0,0,0,0,15,224,0,0,255,192,0,0,0,0,15,224,0,108,63,244,0,0,0,0,15,224,111,252,31,254,0,0,0,0,15,255,255,253,7,255,208,0,0,1,191,255,255,248,0,255,253,0,0,127,255,255,249,0,0,63,255,208,0,63,255,249,0,0,0,7,255,128,0,63,249,0,0,0,0,0,191,0,0,25,0,0,0,0,0,0,5,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Korean_29.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Korean_29.cpp new file mode 100644 index 0000000000..75fec1e45f --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Korean_29.cpp @@ -0,0 +1,252 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Korean 40pt, capital 'A' height: 29px, width: 100%, range: 0xac70-0xd788, glyphs: 110 +extern const uint8_t NotoSans_Medium_Korean_29[6128] = { + 162,29,112,172,136,215,38,246, // unifont_t + // 0xac70 거 + 112,172,30,38,48,37,2,252,0,0,0,0,0,0,5,80,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,5,85,85,85,80,0,15,240,47,255,255,255,240,0,15,240,47,255,255,255,240,0,15,240,47,255,255,255,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,31,224,0,15,240,0,0,0,47,224,0,15,240,0,0,0,63,208,0,15,240,0,0,0,63,192,0,15,240,0,0,0,127,192,0,15,240,0,0,0,191,133,85,111,240,0,0,0,255,15,255,255,240,0,0,2,254,15,255,255,240,0,0,7,253,15,255,255,240,0,0,15,252,0,0,15,240,0,0,47,240,0,0,15,240,0,0,127,224,0,0,15,240,0,1,255,192,0,0,15,240,0,11,255,0,0,0,15,240,0,47,252,0,0,0,15,240,1,255,240,0,0,0,15,240,11,255,192,0,0,0,15,240,127,254,0,0,0,0,15,240,191,244,0,0,0,0,15,240,63,128,0,0,0,0,15,240,29,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240, + // 0xace0 고 + 224,172,33,29,5,37,2,1,2,255,255,255,255,255,255,192,0,2,255,255,255,255,255,255,192,0,2,255,255,255,255,255,255,192,0,0,85,85,85,85,85,127,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,170,0,0,127,192,0,0,0,0,255,64,0,127,192,0,0,0,0,255,64,0,191,128,0,0,0,0,255,64,0,191,128,0,0,0,0,255,64,0,191,64,0,0,0,0,255,64,0,255,64,0,0,0,0,255,64,0,255,0,0,0,0,0,255,64,0,255,0,0,0,0,0,255,64,1,255,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,85,85,85,255,149,85,85,85,64,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128, + // 0xadf8 그 + 248,173,33,29,5,37,2,1,0,85,85,85,85,85,85,0,0,1,255,255,255,255,255,255,64,0,1,255,255,255,255,255,255,64,0,1,255,255,255,255,255,255,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,85,85,85,85,85,64, + // 0xae09 급 + 9,174,33,36,68,37,2,252,0,85,85,85,85,85,85,0,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,85,85,85,85,85,86,255,85,64,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,64,0,0,0,191,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,85,85,85,85,85,85,0,0, + // 0xae30 기 + 48,174,30,38,48,37,2,252,0,0,0,0,0,0,5,64,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,5,85,85,85,84,0,31,240,15,255,255,255,252,0,31,240,15,255,255,255,252,0,31,240,15,255,255,255,252,0,31,240,0,0,0,3,252,0,31,240,0,0,0,7,252,0,31,240,0,0,0,7,248,0,31,240,0,0,0,11,244,0,31,240,0,0,0,15,244,0,31,240,0,0,0,15,240,0,31,240,0,0,0,47,224,0,31,240,0,0,0,63,208,0,31,240,0,0,0,127,192,0,31,240,0,0,0,255,128,0,31,240,0,0,2,255,0,0,31,240,0,0,7,254,0,0,31,240,0,0,15,252,0,0,31,240,0,0,63,240,0,0,31,240,0,0,255,224,0,0,31,240,0,3,255,128,0,0,31,240,0,31,254,0,0,0,31,240,0,191,248,0,0,0,31,240,7,255,224,0,0,0,31,240,127,255,64,0,0,0,31,240,127,252,0,0,0,0,31,240,47,208,0,0,0,0,31,240,14,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,10,160, + // 0xae45 깅 + 69,174,30,37,40,37,2,252,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,1,85,85,85,84,0,31,224,11,255,255,255,252,0,31,224,11,255,255,255,248,0,31,224,11,255,255,255,248,0,31,224,0,0,0,11,244,0,31,224,0,0,0,15,240,0,31,224,0,0,0,15,240,0,31,224,0,0,0,47,224,0,31,224,0,0,0,63,192,0,31,224,0,0,0,255,128,0,31,224,0,0,2,255,0,0,31,224,0,0,11,252,0,0,31,224,0,0,63,244,0,0,31,224,0,1,255,208,0,0,31,224,0,31,255,64,0,0,31,224,1,255,252,0,0,0,31,224,111,255,224,0,0,0,31,224,127,254,0,0,0,0,31,224,63,224,0,0,0,0,31,224,25,0,0,0,0,0,26,144,0,0,0,111,255,233,0,0,0,0,31,255,255,255,224,0,0,0,255,255,255,255,253,0,0,3,255,249,85,175,255,64,0,15,254,0,0,1,255,192,0,15,244,0,0,0,63,224,0,31,224,0,0,0,31,240,0,47,224,0,0,0,31,240,0,31,224,0,0,0,31,240,0,15,244,0,0,0,63,224,0,15,254,0,0,1,255,192,0,3,255,249,85,111,255,64,0,0,255,255,255,255,253,0,0,0,31,255,255,255,224,0,0,0,0,111,255,233,0,0, + // 0xb044 끄 + 68,176,33,29,5,37,2,1,1,85,85,80,21,85,85,64,0,11,255,255,244,63,255,255,192,0,11,255,255,244,63,255,255,192,0,11,255,255,244,63,255,255,192,0,0,0,11,244,0,0,63,192,0,0,0,11,244,0,0,63,192,0,0,0,11,244,0,0,63,192,0,0,0,15,244,0,0,63,192,0,0,0,15,240,0,0,63,192,0,0,0,15,240,0,0,63,192,0,0,0,15,240,0,0,63,192,0,0,0,15,240,0,0,63,192,0,0,0,31,240,0,0,127,192,0,0,0,47,224,0,0,127,128,0,0,0,47,208,0,0,127,128,0,0,0,63,192,0,0,191,128,0,0,0,63,192,0,0,191,64,0,0,0,127,192,0,0,255,0,0,0,0,191,128,0,0,255,0,0,0,0,255,64,0,1,255,0,0,0,0,255,0,0,1,254,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,85,85,85,85,85,64, + // 0xb0b4 내 + 180,176,30,38,48,37,3,252,0,0,0,0,0,0,5,64,0,0,0,0,10,144,15,224,0,0,0,0,31,224,15,224,0,0,0,0,31,224,15,224,0,0,0,0,31,224,15,224,127,128,0,0,31,224,15,224,127,128,0,0,31,224,15,224,127,128,0,0,31,224,15,224,127,128,0,0,31,224,15,224,127,128,0,0,31,224,15,224,127,128,0,0,31,224,15,224,127,128,0,0,31,224,15,224,127,128,0,0,31,224,15,224,127,128,0,0,31,224,15,224,127,128,0,0,31,224,15,224,127,128,0,0,31,229,95,224,127,128,0,0,31,255,255,224,127,128,0,0,31,255,255,224,127,128,0,0,31,255,255,224,127,128,0,0,31,224,15,224,127,128,0,0,31,224,15,224,127,128,0,0,31,224,15,224,127,128,0,0,31,224,15,224,127,128,0,0,31,224,15,224,127,192,22,189,31,224,15,224,127,255,255,254,31,224,15,224,127,255,255,254,31,224,15,224,127,255,255,233,31,224,15,224,42,85,80,0,31,224,15,224,0,0,0,0,31,224,15,224,0,0,0,0,31,224,15,224,0,0,0,0,31,224,15,224,0,0,0,0,31,224,15,224,0,0,0,0,31,224,15,224,0,0,0,0,31,224,15,224,0,0,0,0,31,224,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224, + // 0xb178 노 + 120,177,33,31,23,37,2,0,0,85,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,85,85,95,249,85,85,64,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,85,85,85,85,85,64, + // 0xb204 누 + 4,178,33,36,68,37,2,252,0,106,0,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,85,85,85,85,85,64,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,95,249,85,85,85,64,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,11,240,0,0,0,0, + // 0xb274 뉴 + 116,178,33,36,68,37,2,252,0,85,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,85,85,85,85,85,85,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,255,85,85,191,213,85,64,0,0,255,0,0,127,128,0,0,0,0,255,0,0,127,128,0,0,0,0,255,0,0,127,128,0,0,0,0,255,0,0,127,128,0,0,0,0,255,0,0,127,128,0,0,0,0,255,0,0,127,128,0,0,0,0,255,0,0,127,128,0,0,0,0,255,0,0,127,128,0,0,0,0,255,0,0,127,128,0,0,0,0,255,0,0,127,128,0,0,0,0,255,0,0,127,128,0,0,0,0,255,0,0,127,128,0,0,0,0,255,0,0,127,128,0,0, + // 0xb2c8 니 + 200,178,28,37,3,37,4,252,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,170,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,0,0,255,255,0,0,0,6,64,255,255,0,21,107,255,128,255,255,255,255,255,255,128,255,255,255,255,255,255,128,255,255,255,255,254,144,0,255,106,85,80,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,254, + // 0xb2e4 다 + 228,178,33,38,86,37,3,252,0,0,0,0,0,1,84,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,191,255,255,255,208,3,252,0,0,191,255,255,255,208,3,252,0,0,191,255,255,255,208,3,252,0,0,191,149,85,85,64,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,255,255,128,191,128,0,0,0,3,255,255,128,191,128,0,0,0,3,255,255,128,191,128,0,0,0,3,253,85,64,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,86,191,3,252,0,0,191,255,255,255,255,3,252,0,0,191,255,255,255,255,3,252,0,0,191,255,255,255,233,3,252,0,0,21,85,85,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,2,168,0,0, + // 0xb2f9 당 + 249,178,33,37,77,37,3,252,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,253,0,0,21,85,85,85,0,3,253,0,0,191,255,255,255,128,3,253,0,0,191,255,255,255,128,3,253,0,0,191,255,255,255,128,3,253,0,0,191,128,0,0,0,3,253,0,0,191,128,0,0,0,3,253,0,0,191,128,0,0,0,3,253,0,0,191,128,0,0,0,3,255,255,64,191,128,0,0,0,3,255,255,64,191,128,0,0,0,3,255,255,64,191,128,0,0,0,3,254,85,0,191,128,0,0,0,3,253,0,0,191,128,0,0,5,3,253,0,0,191,149,86,175,255,3,253,0,0,191,255,255,255,255,3,253,0,0,191,255,255,255,255,3,253,0,0,191,255,255,234,80,3,253,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,1,84,0,0,0,0,6,255,254,128,0,0,0,0,1,255,255,255,253,0,0,0,0,15,255,255,255,255,192,0,0,0,63,255,149,91,255,240,0,0,0,191,224,0,0,31,252,0,0,0,255,64,0,0,3,253,0,0,1,255,0,0,0,2,253,0,0,1,254,0,0,0,1,254,0,0,1,255,0,0,0,2,253,0,0,0,255,64,0,0,3,253,0,0,0,191,224,0,0,47,252,0,0,0,63,255,165,107,255,240,0,0,0,15,255,255,255,255,192,0,0,0,1,255,255,255,253,0,0,0,0,0,6,255,254,128,0,0,0, + // 0xb3c4 도 + 196,179,33,31,23,37,2,0,0,85,85,85,85,85,85,0,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,85,85,85,85,85,64,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,85,85,85,85,85,64, + // 0xb3cc 돌 + 204,179,33,36,68,37,2,252,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,255,149,85,85,85,85,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,21,85,95,249,85,85,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,85,85,85,95,249,85,85,85,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0, + // 0xb3d9 동 + 217,179,33,36,68,37,2,252,0,21,85,85,85,85,85,0,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,85,85,85,85,85,64,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,85,85,85,95,249,85,85,85,64,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,191,255,164,0,0,0,0,1,255,255,255,255,128,0,0,0,15,255,255,255,255,244,0,0,0,63,255,148,21,191,253,0,0,0,191,224,0,0,3,255,0,0,0,255,128,0,0,0,255,64,0,0,255,0,0,0,0,191,128,0,0,255,0,0,0,0,191,128,0,0,255,128,0,0,0,255,64,0,0,191,224,0,0,3,255,0,0,0,63,255,148,21,191,253,0,0,0,15,255,255,255,255,244,0,0,0,1,255,255,255,255,128,0,0,0,0,6,255,255,164,0,0,0, + // 0xb418 되 + 24,180,30,38,48,37,2,252,0,0,0,0,0,0,5,80,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,7,255,255,255,255,192,31,224,7,255,255,255,255,192,31,224,7,255,255,255,255,192,31,224,7,253,85,85,85,64,31,224,7,252,0,0,0,0,31,224,7,252,0,0,0,0,31,224,7,252,0,0,0,0,31,224,7,252,0,0,0,0,31,224,7,252,0,0,0,0,31,224,7,252,0,0,0,0,31,224,7,252,0,0,0,0,31,224,7,252,0,0,0,0,31,224,7,255,255,255,255,208,31,224,7,255,255,255,255,208,31,224,7,255,255,255,255,208,31,224,1,85,95,245,85,64,31,224,0,0,15,240,0,0,31,224,0,0,15,240,0,0,31,224,0,0,15,240,0,0,31,224,0,0,15,240,0,0,31,224,0,0,15,240,0,0,31,224,0,0,15,240,0,20,31,224,85,85,111,251,255,253,31,224,191,255,255,255,255,254,31,224,191,255,255,255,255,253,31,224,127,255,255,234,148,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224, + // 0xb41c 된 + 28,180,31,37,40,37,2,253,0,0,0,0,0,0,5,80,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,2,255,255,255,255,128,31,240,2,255,255,255,255,128,31,240,2,255,255,255,255,128,31,240,2,254,85,85,85,0,31,240,2,253,0,0,0,0,31,240,2,253,0,0,0,0,31,240,2,253,0,0,0,0,31,240,2,253,0,0,0,0,31,240,2,253,0,0,0,0,31,240,2,254,85,85,85,64,31,240,2,255,255,255,255,192,31,240,2,255,255,255,255,192,31,240,2,255,255,255,255,192,31,240,0,0,15,240,0,0,31,240,0,0,15,240,0,0,31,240,0,0,15,240,0,0,31,240,0,0,15,240,0,0,31,240,85,85,95,250,255,252,31,240,191,255,255,255,255,253,31,240,191,255,255,255,255,253,31,240,127,255,255,170,84,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,5,80,0,0,0,31,240,0,15,240,0,0,0,31,240,0,15,240,0,0,0,10,144,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,245,85,85,85,85,84,0,15,255,255,255,255,255,252,0,15,255,255,255,255,255,252,0,15,255,255,255,255,255,252, + // 0xb428 됨 + 40,180,30,38,48,37,2,252,0,0,0,0,0,0,5,80,0,0,0,0,0,0,15,240,0,85,85,85,85,64,15,240,2,255,255,255,255,128,15,240,2,255,255,255,255,128,15,240,2,255,255,255,255,128,15,240,2,253,0,0,0,0,15,240,2,253,0,0,0,0,15,240,2,253,0,0,0,0,15,240,2,253,0,0,0,0,15,240,2,253,0,0,0,0,15,240,2,255,255,255,255,192,15,240,2,255,255,255,255,192,15,240,2,255,255,255,255,192,15,240,0,85,95,245,85,64,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,20,15,240,0,21,95,250,255,253,15,240,191,255,255,255,255,253,15,240,127,255,255,255,255,249,15,240,127,255,255,169,80,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,5,80,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,240,0,15,255,255,255,255,255,240,0,15,255,255,255,255,255,240,0,15,245,85,85,85,95,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,15,240,0,15,255,255,255,255,255,240,0,15,255,255,255,255,255,240,0,15,255,255,255,255,255,240,0,5,85,85,85,85,85,80, + // 0xb4a4 뒤 + 164,180,30,38,48,37,2,252,0,0,0,0,0,0,5,80,0,0,0,0,0,0,15,240,1,85,85,85,85,0,15,240,3,255,255,255,255,128,15,240,3,255,255,255,255,128,15,240,3,255,255,255,255,128,15,240,3,253,0,0,0,0,15,240,3,253,0,0,0,0,15,240,3,253,0,0,0,0,15,240,3,253,0,0,0,0,15,240,3,253,0,0,0,0,15,240,3,253,0,0,0,0,15,240,3,253,0,0,0,0,15,240,3,255,255,255,255,192,15,240,3,255,255,255,255,192,15,240,3,255,255,255,255,192,15,240,1,85,85,85,85,64,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,85,106,254,15,240,255,255,255,255,255,254,15,240,255,255,255,255,255,254,15,240,191,255,255,255,169,64,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,10,160,0,0,15,240,0,0,0,0,0,0,15,224, + // 0xb4dc 드 + 220,180,33,29,5,37,2,1,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,85,85,85,85,85,64,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,85,85,85,85,85,85,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0xb514 디 + 20,181,28,38,10,37,4,252,0,0,0,0,0,0,85,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,191,255,255,255,208,1,254,191,255,255,255,208,1,254,191,255,255,255,208,1,254,191,149,85,85,64,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,0,0,1,254,191,64,0,22,191,65,254,191,255,255,255,255,65,254,191,255,255,255,255,129,254,191,255,255,255,249,1,254,85,85,85,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254, + // 0xb77c 라 + 124,183,33,38,86,37,3,252,0,0,0,0,0,1,84,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,191,255,255,255,192,3,252,0,0,191,255,255,255,192,3,252,0,0,191,255,255,255,192,3,252,0,0,21,85,85,127,192,3,252,0,0,0,0,0,63,192,3,252,0,0,0,0,0,63,192,3,252,0,0,0,0,0,63,192,3,252,0,0,0,0,0,63,192,3,252,0,0,0,0,0,63,192,3,252,0,0,0,0,0,63,192,3,252,0,0,21,85,85,127,192,3,252,0,0,191,255,255,255,192,3,255,255,128,191,255,255,255,192,3,255,255,128,191,255,255,255,192,3,255,255,128,191,128,0,0,0,3,253,85,64,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,0,0,3,252,0,0,191,128,0,0,22,3,252,0,0,191,149,106,191,255,3,252,0,0,191,255,255,255,255,67,252,0,0,191,255,255,255,255,67,252,0,0,191,255,255,169,64,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0, + // 0xb7ec 러 + 236,183,29,38,48,37,3,252,0,0,0,0,0,0,21,64,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,255,255,255,255,64,0,63,192,255,255,255,255,64,0,63,192,255,255,255,255,64,0,63,192,85,85,85,191,64,0,63,192,0,0,0,191,64,0,63,192,0,0,0,191,64,0,63,192,0,0,0,191,64,0,63,192,0,0,0,191,64,0,63,192,0,0,0,191,64,0,63,192,0,0,0,191,64,0,63,192,191,255,255,255,65,85,127,192,191,255,255,255,71,255,255,192,191,255,255,255,71,255,255,192,191,149,85,85,7,255,255,192,191,64,0,0,0,0,63,192,191,64,0,0,0,0,63,192,191,64,0,0,0,0,63,192,191,64,0,0,0,0,63,192,191,64,0,0,0,0,63,192,191,64,0,0,0,0,63,192,191,64,0,0,20,0,63,192,191,149,106,191,253,0,63,192,191,255,255,255,253,0,63,192,191,255,255,255,253,0,63,192,191,255,255,165,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,128, + // 0xb808 레 + 8,184,30,37,40,37,3,252,0,0,0,0,1,80,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,85,85,85,64,7,244,15,240,255,255,255,192,7,244,15,240,255,255,255,192,7,244,15,240,255,255,255,192,7,244,15,240,0,0,63,192,7,244,15,240,0,0,63,192,7,244,15,240,0,0,63,192,7,244,15,240,0,0,63,192,7,244,15,240,0,0,63,192,7,244,15,240,0,0,63,193,91,244,15,240,85,85,127,199,255,244,15,240,255,255,255,199,255,244,15,240,255,255,255,199,255,244,15,240,255,255,255,192,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,5,7,244,15,240,255,86,171,255,7,244,15,240,255,255,255,255,7,244,15,240,255,255,255,255,7,244,15,240,255,255,250,80,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,224, + // 0xb825 력 + 37,184,29,38,48,37,3,252,0,0,0,0,0,0,1,64,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,191,255,255,255,0,0,63,192,191,255,255,255,0,0,63,192,191,255,255,255,0,0,63,192,21,85,85,255,11,255,255,192,0,0,0,255,11,255,255,192,0,0,0,255,11,255,255,192,0,0,0,255,1,85,127,192,0,0,0,255,0,0,63,192,191,255,255,255,0,0,63,192,191,255,255,255,0,0,63,192,191,255,255,255,1,85,127,192,191,128,0,0,11,255,255,192,191,128,0,0,11,255,255,192,191,128,0,0,11,255,255,192,191,128,0,0,0,0,63,192,191,149,86,175,240,0,63,192,191,255,255,255,240,0,63,192,191,255,255,255,240,0,63,192,191,255,255,234,64,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,42,128,0,0,0,0,0,0,0,0,0,21,85,85,85,85,85,64,0,127,255,255,255,255,255,192,0,127,255,255,255,255,255,192,0,127,255,255,255,255,255,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192, + // 0xb85c 로 + 92,184,33,31,23,37,2,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,85,85,85,85,85,127,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,85,85,85,85,85,127,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,85,85,95,249,85,85,64,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,85,85,85,85,85,64, + // 0xb8cc 료 + 204,184,33,31,23,37,2,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,85,85,85,85,85,127,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,85,85,85,85,85,127,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,85,127,213,85,255,149,64,0,0,0,63,192,0,191,64,0,0,0,0,63,192,0,191,64,0,0,0,0,63,192,0,191,64,0,0,0,0,63,192,0,191,64,0,0,0,0,63,192,0,191,64,0,0,0,0,63,192,0,191,64,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,85,85,85,85,85,64, + // 0xb974 르 + 116,185,33,31,23,37,2,0,0,85,85,85,85,85,85,64,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,85,85,85,85,85,127,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,85,85,85,85,85,85,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,85,85,85,85,85,64, + // 0xb9ac 리 + 172,185,28,38,10,37,4,252,0,0,0,0,0,0,85,0,0,0,0,0,1,255,0,0,0,0,0,1,255,0,0,0,0,0,1,255,255,255,255,255,192,1,255,255,255,255,255,192,1,255,255,255,255,255,192,1,255,85,85,85,191,192,1,255,0,0,0,127,192,1,255,0,0,0,127,192,1,255,0,0,0,127,192,1,255,0,0,0,127,192,1,255,0,0,0,127,192,1,255,0,0,0,127,192,1,255,85,85,85,191,192,1,255,255,255,255,255,192,1,255,255,255,255,255,192,1,255,255,255,255,255,192,1,255,255,0,0,0,0,1,255,255,0,0,0,0,1,255,255,0,0,0,0,1,255,255,0,0,0,0,1,255,255,0,0,0,0,1,255,255,0,0,0,0,1,255,255,0,0,0,21,65,255,255,150,170,191,255,193,255,255,255,255,255,255,193,255,255,255,255,255,255,193,255,255,255,255,169,80,1,255,0,0,0,0,0,1,255,0,0,0,0,0,1,255,0,0,0,0,0,1,255,0,0,0,0,0,1,255,0,0,0,0,0,1,255,0,0,0,0,0,1,255,0,0,0,0,0,1,255,0,0,0,0,0,1,255,0,0,0,0,0,1,254, + // 0xb9b0 린 + 176,185,29,37,40,37,4,253,0,0,0,0,0,0,85,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,255,0,255,255,255,255,64,1,255,0,255,255,255,255,64,1,255,0,255,255,255,255,64,1,255,0,85,85,85,255,64,1,255,0,0,0,0,191,64,1,255,0,0,0,0,191,64,1,255,0,0,0,0,191,64,1,255,0,0,0,0,191,64,1,255,0,255,255,255,255,64,1,255,0,255,255,255,255,64,1,255,0,255,255,255,255,64,1,255,0,255,0,0,0,0,1,255,0,255,0,0,0,0,1,255,0,255,0,0,0,0,1,255,0,255,0,0,0,0,1,255,0,255,0,0,0,6,1,255,0,255,85,90,175,255,1,255,0,255,255,255,255,255,1,255,0,255,255,255,255,255,65,255,0,255,255,255,234,80,1,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,255,0,0,255,0,0,0,1,255,0,0,255,0,0,0,1,255,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,85,85,85,85,85,64,0,255,255,255,255,255,255,128,0,255,255,255,255,255,255,128,0,255,255,255,255,255,255,128, + // 0xb9bd 립 + 189,185,28,37,3,37,4,252,0,0,0,0,0,1,255,85,85,85,85,0,1,255,255,255,255,255,64,1,255,255,255,255,255,64,1,255,255,255,255,255,64,1,255,0,0,0,191,64,1,255,0,0,0,191,64,1,255,0,0,0,191,64,1,255,0,0,0,255,64,1,255,255,255,255,255,64,1,255,255,255,255,255,64,1,255,255,255,255,255,64,1,255,255,0,0,0,0,1,255,255,0,0,0,0,1,255,255,0,0,0,0,1,255,255,0,0,22,191,1,255,255,255,255,255,255,1,255,255,255,255,255,255,65,255,255,255,255,255,165,1,255,85,85,80,0,0,1,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,1,255,0,255,0,0,0,1,255,0,255,0,0,0,1,255,0,255,64,0,0,1,255,0,255,255,255,255,255,255,0,255,255,255,255,255,255,0,255,255,255,255,255,255,0,255,0,0,0,1,255,0,255,0,0,0,1,255,0,255,0,0,0,1,255,0,255,0,0,0,1,255,0,255,255,255,255,255,255,0,255,255,255,255,255,255,0,255,255,255,255,255,255,0,85,85,85,85,85,85, + // 0xb9c1 링 + 193,185,28,38,10,37,4,252,0,0,0,0,0,0,84,0,0,0,0,0,1,255,0,0,0,0,0,1,255,255,255,255,255,64,1,255,255,255,255,255,64,1,255,255,255,255,255,64,1,255,85,85,85,255,64,1,255,0,0,0,191,64,1,255,0,0,0,191,64,1,255,0,0,0,191,64,1,255,0,0,0,255,64,1,255,255,255,255,255,64,1,255,255,255,255,255,64,1,255,255,255,255,255,64,1,255,255,0,0,0,0,1,255,255,0,0,0,0,1,255,255,0,0,0,0,1,255,255,0,0,22,191,1,255,255,255,255,255,255,1,255,255,255,255,255,255,65,255,255,255,255,255,165,1,255,85,85,80,0,0,1,255,0,0,0,0,0,1,255,0,0,0,0,0,0,84,0,0,6,255,254,144,0,0,1,255,255,255,254,64,0,15,255,255,255,255,224,0,63,254,85,86,255,248,0,255,208,0,0,11,253,0,255,0,0,0,2,255,1,255,0,0,0,0,255,1,255,0,0,0,0,255,0,255,0,0,0,2,255,0,255,208,0,0,11,253,0,63,254,149,86,255,248,0,15,255,255,255,255,224,0,1,255,255,255,255,64,0,0,6,255,254,144,0, + // 0xba48 멈 + 72,186,29,38,48,37,3,252,0,0,0,0,0,0,21,64,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,127,255,255,255,208,0,63,192,127,255,255,255,208,0,63,192,127,255,255,255,208,0,63,192,127,149,85,127,208,0,63,192,127,128,0,47,208,0,63,192,127,128,0,47,208,0,63,192,127,128,0,47,229,85,127,192,127,128,0,47,255,255,255,192,127,128,0,47,255,255,255,192,127,128,0,47,255,255,255,192,127,128,0,47,208,0,63,192,127,128,0,47,208,0,63,192,127,128,0,47,208,0,63,192,127,149,85,127,208,0,63,192,127,255,255,255,208,0,63,192,127,255,255,255,208,0,63,192,127,255,255,255,208,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,0,5,85,85,85,85,85,64,0,63,255,255,255,255,255,192,0,63,255,255,255,255,255,192,0,63,255,255,255,255,255,192,0,63,208,0,0,0,63,192,0,63,208,0,0,0,63,192,0,63,208,0,0,0,63,192,0,63,208,0,0,0,63,192,0,63,208,0,0,0,63,192,0,63,208,0,0,0,63,192,0,63,208,0,0,0,63,192,0,63,255,255,255,255,255,192,0,63,255,255,255,255,255,192,0,63,255,255,255,255,255,192,0,5,85,85,85,85,85,64, + // 0xba54 메 + 84,186,30,38,48,37,3,252,0,0,0,0,0,0,5,80,0,0,0,0,2,164,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,248,15,240,21,85,85,80,7,248,15,240,255,255,255,240,7,248,15,240,255,255,255,240,7,248,15,240,255,255,255,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,245,91,248,15,240,255,0,11,255,255,248,15,240,255,0,11,255,255,248,15,240,255,0,11,255,255,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,85,95,240,7,248,15,240,255,255,255,240,7,248,15,240,255,255,255,240,7,248,15,240,255,255,255,240,7,248,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,248,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,10,160, + // 0xba74 면 + 116,186,30,36,32,37,3,253,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,21,85,85,85,64,0,63,192,127,255,255,255,208,0,63,192,127,255,255,255,208,0,63,192,127,255,255,255,208,0,63,192,127,128,0,47,255,255,255,192,127,128,0,47,255,255,255,192,127,128,0,47,255,255,255,192,127,128,0,47,229,85,127,192,127,128,0,47,208,0,63,192,127,128,0,47,208,0,63,192,127,128,0,47,208,0,63,192,127,128,0,47,208,0,63,192,127,128,0,47,255,255,255,192,127,128,0,47,255,255,255,192,127,128,0,47,255,255,255,192,127,255,255,255,229,85,127,192,127,255,255,255,208,0,63,192,127,255,255,255,208,0,63,192,21,85,85,85,64,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,26,144,0,0,0,63,192,0,47,224,0,0,0,63,192,0,47,224,0,0,0,63,192,0,47,224,0,0,0,0,0,0,47,224,0,0,0,0,0,0,47,224,0,0,0,0,0,0,47,224,0,0,0,0,0,0,47,224,0,0,0,0,0,0,47,229,85,85,85,85,80,0,47,255,255,255,255,255,240,0,47,255,255,255,255,255,240,0,47,255,255,255,255,255,240, + // 0xbaa8 모 + 168,186,33,30,14,37,2,1,0,85,85,85,85,85,85,64,0,1,255,255,255,255,255,255,192,0,1,255,255,255,255,255,255,192,0,1,255,255,255,255,255,255,192,0,1,254,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,255,255,255,255,255,255,192,0,1,255,255,255,255,255,255,192,0,1,255,255,255,255,255,255,192,0,0,85,85,95,249,85,85,64,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,85,85,85,95,249,85,85,85,64,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128, + // 0xbabb 못 + 187,186,33,36,68,37,2,252,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,255,85,85,85,85,191,64,0,0,255,0,0,0,0,191,64,0,0,255,0,0,0,0,191,64,0,0,255,0,0,0,0,191,64,0,0,255,0,0,0,0,191,64,0,0,255,0,0,0,0,191,64,0,0,255,85,85,85,85,191,64,0,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,85,85,85,95,249,85,85,85,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,63,253,0,0,0,0,0,0,0,191,255,0,0,0,0,0,0,2,255,191,192,0,0,0,0,0,11,253,63,244,0,0,0,0,0,191,248,15,255,64,0,0,0,27,255,224,3,255,249,0,0,7,255,255,64,0,127,255,240,0,3,255,244,0,0,11,255,224,0,2,254,64,0,0,0,127,208,0,0,64,0,0,0,0,0,64,0, + // 0xbbf8 미 + 248,187,28,38,10,37,4,252,0,0,0,0,0,0,85,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,255,255,255,255,192,1,254,255,255,255,255,192,1,254,255,255,255,255,192,1,254,255,85,85,127,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,0,0,63,192,1,254,255,255,255,255,192,1,254,255,255,255,255,192,1,254,255,255,255,255,192,1,254,85,85,85,85,64,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254, + // 0xbc00 밀 + 0,188,29,38,48,37,4,252,0,0,0,0,0,0,84,0,0,0,0,0,0,1,255,0,85,85,85,85,64,1,255,0,255,255,255,255,192,1,255,0,255,255,255,255,192,1,255,0,255,255,255,255,192,1,255,0,255,0,0,63,192,1,255,0,255,0,0,63,192,1,255,0,255,0,0,63,192,1,255,0,255,0,0,63,192,1,255,0,255,0,0,63,192,1,255,0,255,0,0,63,192,1,255,0,255,0,0,63,192,1,255,0,255,0,0,63,192,1,255,0,255,85,85,127,192,1,255,0,255,255,255,255,192,1,255,0,255,255,255,255,192,1,255,0,255,255,255,255,192,1,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,0,0,255,255,255,255,255,255,0,0,255,255,255,255,255,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,255,0,0,0,0,0,0,1,255,0,0,255,255,255,255,255,255,0,0,255,255,255,255,255,255,0,0,255,255,255,255,255,255,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,255,255,255,255,255,255,192,0,255,255,255,255,255,255,192,0,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0, + // 0xbc14 바 + 20,188,33,38,86,37,3,252,0,0,0,0,0,1,84,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,21,0,0,5,64,3,252,0,0,191,64,0,47,208,3,252,0,0,191,64,0,47,208,3,252,0,0,191,64,0,47,208,3,252,0,0,191,64,0,47,208,3,252,0,0,191,64,0,47,208,3,252,0,0,191,64,0,47,208,3,252,0,0,191,64,0,47,208,3,252,0,0,191,64,0,47,208,3,252,0,0,191,64,0,47,208,3,252,0,0,191,255,255,255,208,3,252,0,0,191,255,255,255,208,3,252,0,0,191,255,255,255,208,3,255,255,128,191,149,85,127,208,3,255,255,128,191,64,0,47,208,3,255,255,128,191,64,0,47,208,3,253,85,64,191,64,0,47,208,3,252,0,0,191,64,0,47,208,3,252,0,0,191,64,0,47,208,3,252,0,0,191,64,0,47,208,3,252,0,0,191,64,0,47,208,3,252,0,0,191,64,0,47,208,3,252,0,0,191,149,85,127,208,3,252,0,0,191,255,255,255,208,3,252,0,0,191,255,255,255,208,3,252,0,0,191,255,255,255,208,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0, + // 0xbc84 버 + 132,188,29,38,48,37,3,252,0,0,0,0,0,0,21,64,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,21,0,0,21,64,0,63,192,191,64,0,47,208,0,63,192,191,64,0,47,208,0,63,192,191,64,0,47,208,0,63,192,191,64,0,47,208,0,63,192,191,64,0,47,208,0,63,192,191,64,0,47,208,0,63,192,191,64,0,47,208,0,63,192,191,64,0,47,208,0,63,192,191,64,0,47,208,0,63,192,191,255,255,255,208,0,63,192,191,255,255,255,255,255,255,192,191,255,255,255,255,255,255,192,191,128,0,63,255,255,255,192,191,64,0,47,229,85,127,192,191,64,0,47,208,0,63,192,191,64,0,47,208,0,63,192,191,64,0,47,208,0,63,192,191,64,0,47,208,0,63,192,191,64,0,47,208,0,63,192,191,64,0,47,208,0,63,192,191,64,0,47,208,0,63,192,191,149,85,127,208,0,63,192,191,255,255,255,208,0,63,192,191,255,255,255,208,0,63,192,191,255,255,255,208,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192, + // 0xbca0 베 + 160,188,30,38,48,37,3,252,0,0,0,0,0,0,5,64,0,0,0,0,2,164,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,248,15,240,170,0,6,160,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,255,255,240,7,248,15,240,255,255,255,249,91,248,15,240,255,255,255,255,255,248,15,240,255,85,91,255,255,248,15,240,255,0,11,255,255,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,0,11,240,7,248,15,240,255,255,255,240,7,248,15,240,255,255,255,240,7,248,15,240,255,255,255,240,7,248,15,240,85,85,85,80,7,248,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,248,15,240,0,0,0,0,7,244,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,10,160, + // 0xbca8 벨 + 168,188,31,38,48,37,3,252,0,0,0,0,0,0,5,64,0,0,0,0,6,160,31,224,21,0,0,0,7,244,31,224,191,64,3,248,7,244,31,224,191,64,3,248,7,244,31,224,191,64,3,248,7,244,31,224,191,64,3,248,7,244,31,224,191,255,255,248,7,244,31,224,191,255,255,249,91,244,31,224,191,255,255,255,255,244,31,224,191,64,7,255,255,244,31,224,191,64,3,255,255,244,31,224,191,64,3,248,7,244,31,224,191,64,3,248,7,244,31,224,191,64,3,248,7,244,31,224,191,255,255,248,7,244,31,224,191,255,255,248,7,244,31,224,191,255,255,248,7,244,31,224,0,0,0,0,7,244,31,224,0,0,0,0,6,164,31,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,224,0,47,255,255,255,255,255,224,0,47,255,255,255,255,255,224,0,0,0,0,0,0,47,224,0,0,0,0,0,0,47,224,0,0,0,0,0,0,47,224,0,31,255,255,255,255,255,224,0,31,255,255,255,255,255,224,0,31,255,255,255,255,255,224,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,255,255,255,255,255,252,0,31,255,255,255,255,255,252,0,31,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xbcf8 본 + 248,188,33,35,59,37,2,253,0,255,64,0,0,0,191,64,0,0,255,64,0,0,0,191,64,0,0,255,64,0,0,0,191,64,0,0,255,64,0,0,0,191,64,0,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,255,64,0,0,0,191,64,0,0,255,64,0,0,0,191,64,0,0,255,64,0,0,0,191,64,0,0,255,64,0,0,0,191,64,0,0,255,85,85,85,85,191,64,0,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,64,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,85,85,85,95,249,85,85,85,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,149,85,85,85,85,64,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0, + // 0xbe44 비 + 68,190,28,38,10,37,4,252,0,0,0,0,0,0,85,0,0,0,0,0,1,254,0,0,0,0,0,1,254,85,0,0,21,64,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,255,255,255,208,1,254,255,255,255,255,208,1,254,255,255,255,255,208,1,254,255,85,85,127,208,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,0,0,63,208,1,254,255,85,85,127,208,1,254,255,255,255,255,208,1,254,255,255,255,255,208,1,254,255,255,255,255,208,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254,0,0,0,0,0,1,254, + // 0xc0ac 사 + 172,192,35,37,77,37,1,252,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,31,224,0,0,63,192,0,0,0,31,224,0,0,63,192,0,0,0,31,224,0,0,63,192,0,0,0,31,224,0,0,63,192,0,0,0,31,224,0,0,63,192,0,0,0,31,224,0,0,63,192,0,0,0,31,224,0,0,63,192,0,0,0,47,240,0,0,63,192,0,0,0,47,240,0,0,63,192,0,0,0,63,240,0,0,63,192,0,0,0,63,240,0,0,63,192,0,0,0,63,244,0,0,63,213,80,0,0,191,252,0,0,63,255,248,0,0,255,252,0,0,63,255,248,0,1,255,254,0,0,63,255,248,0,3,253,255,0,0,63,192,0,0,7,252,191,192,0,63,192,0,0,15,244,63,224,0,63,192,0,0,47,240,47,240,0,63,192,0,0,191,208,15,252,0,63,192,0,2,255,128,7,255,64,63,192,0,11,255,0,2,255,224,63,192,0,127,252,0,0,191,240,63,192,0,63,244,0,0,47,208,63,192,0,15,192,0,0,7,128,63,192,0,6,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,42,128,0, + // 0xc0bd 삽 + 189,192,34,38,86,37,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,0,0,255,0,0,0,0,106,64,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,191,192,0,0,255,0,0,0,0,191,192,0,0,255,0,0,0,0,255,192,0,0,255,0,0,0,0,255,208,0,0,255,255,208,0,1,255,240,0,0,255,255,208,0,3,255,244,0,0,255,255,208,0,11,251,252,0,0,255,149,64,0,31,242,255,0,0,255,0,0,0,63,224,255,192,0,255,0,0,1,255,192,127,248,0,255,0,0,15,255,0,31,255,128,255,0,0,191,253,0,7,255,192,255,0,0,191,244,0,0,255,0,255,0,0,63,192,0,0,29,0,255,0,0,29,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,192,0,0,0,255,0,0,0,63,192,0,0,0,255,0,0,0,63,192,0,0,0,255,0,0,0,63,208,0,0,0,255,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,192,0,0,0,255,0,0,0,63,192,0,0,0,255,0,0,0,63,192,0,0,0,255,0,0,0,63,192,0,0,0,255,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,21,85,85,85,85,85,0,0, + // 0xc0c8 새 + 200,192,31,37,40,37,2,252,0,0,0,0,2,164,3,252,0,0,0,0,3,252,3,252,0,0,0,0,3,252,3,252,0,2,252,0,3,252,3,252,0,3,252,0,3,252,3,252,0,3,252,0,3,252,3,252,0,3,252,0,3,252,3,252,0,3,252,0,3,252,3,252,0,3,252,0,3,252,3,252,0,3,252,0,3,252,3,252,0,3,252,0,3,252,3,252,0,3,253,0,3,252,3,252,0,3,253,0,3,252,3,252,0,3,254,0,3,252,3,252,0,7,254,0,3,253,87,252,0,11,255,0,3,255,255,252,0,15,255,64,3,255,255,252,0,15,255,128,3,255,255,252,0,31,255,192,3,252,3,252,0,63,239,224,3,252,3,252,0,191,143,240,3,252,3,252,0,255,11,252,3,252,3,252,3,254,3,254,3,252,3,252,11,252,2,255,131,252,3,252,47,248,0,255,243,252,3,252,191,240,0,63,243,252,3,252,255,192,0,15,195,252,3,252,127,0,0,2,67,252,3,252,28,0,0,0,3,252,3,252,0,0,0,0,3,252,3,252,0,0,0,0,3,252,3,252,0,0,0,0,3,252,3,252,0,0,0,0,3,252,3,252,0,0,0,0,3,252,3,252,0,0,0,0,3,252,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,248, + // 0xc124 설 + 36,193,31,38,48,37,2,252,0,0,0,0,0,0,5,80,0,0,0,0,0,0,15,240,0,0,127,192,0,0,15,240,0,0,127,192,0,0,15,240,0,0,127,192,0,0,15,240,0,0,127,192,0,0,15,240,0,0,127,192,0,0,15,240,0,0,191,192,7,255,255,240,0,0,255,208,7,255,255,240,0,0,255,240,7,255,255,240,0,2,255,244,1,85,95,240,0,3,255,252,0,0,15,240,0,15,246,255,0,0,15,240,0,63,240,255,192,0,15,240,0,255,208,127,244,0,15,240,11,255,128,47,255,64,15,240,191,254,0,11,255,192,15,240,191,248,0,1,255,64,15,240,63,208,0,0,46,0,15,240,29,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,255,255,255,255,240,0,11,255,255,255,255,255,240,0,11,255,255,255,255,255,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,7,255,255,255,255,255,240,0,7,255,255,255,255,255,240,0,7,255,255,255,255,255,240,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,255,255,255,255,255,252,0,7,255,255,255,255,255,252,0,7,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xc18c 소 + 140,193,33,30,14,37,2,1,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,63,253,0,0,0,0,0,0,0,127,255,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,2,255,127,192,0,0,0,0,0,11,252,47,240,0,0,0,0,0,47,248,15,253,0,0,0,0,1,255,240,7,255,128,0,0,0,11,255,128,1,255,244,0,0,1,255,254,0,0,63,255,144,0,47,255,244,0,0,11,255,252,0,15,255,128,0,0,1,255,248,0,11,248,0,0,0,0,27,240,0,2,0,0,15,244,0,0,80,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,85,85,85,95,249,85,85,85,64,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128, + // 0xc18d 속 + 141,193,33,37,77,37,2,252,0,0,0,10,164,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,63,254,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,3,255,127,208,0,0,0,0,0,15,252,47,248,0,0,0,0,0,191,244,15,255,64,0,0,0,27,255,208,2,255,248,0,0,11,255,255,0,0,127,255,244,0,11,255,244,0,0,11,255,244,0,3,254,64,15,244,0,127,240,0,2,64,0,15,244,0,1,144,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,85,85,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,0,0,1,255,255,255,255,255,255,128,0,1,255,255,255,255,255,255,128,0,1,255,255,255,255,255,255,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0, + // 0xc2a4 스 + 164,194,33,30,14,37,2,1,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,47,252,0,0,0,0,0,0,0,63,254,0,0,0,0,0,0,0,191,255,0,0,0,0,0,0,1,255,191,192,0,0,0,0,0,3,253,63,224,0,0,0,0,0,31,252,31,248,0,0,0,0,0,127,240,11,255,0,0,0,0,2,255,192,2,255,208,0,0,0,47,255,0,0,191,253,0,0,7,255,252,0,0,47,255,228,0,47,255,224,0,0,7,255,252,0,15,255,0,0,0,0,127,248,0,11,224,0,0,0,0,6,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,85,85,64,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128, + // 0xc2ac 슬 + 172,194,33,37,77,37,2,252,0,0,0,15,244,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,63,254,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,3,255,63,224,0,0,0,0,0,47,252,31,253,0,0,0,0,2,255,240,7,255,208,0,0,5,191,255,128,0,255,255,148,0,15,255,253,0,0,47,255,248,0,11,255,144,0,0,1,255,244,0,3,164,0,0,0,0,6,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,85,85,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0, + // 0xc2dc 시 + 220,194,30,37,40,37,2,252,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,47,208,0,0,31,224,0,0,63,208,0,0,31,224,0,0,63,208,0,0,31,224,0,0,63,208,0,0,31,224,0,0,63,208,0,0,31,224,0,0,63,208,0,0,31,224,0,0,63,208,0,0,31,224,0,0,63,208,0,0,31,224,0,0,63,224,0,0,31,224,0,0,63,224,0,0,31,224,0,0,127,240,0,0,31,224,0,0,191,240,0,0,31,224,0,0,255,248,0,0,31,224,0,1,255,252,0,0,31,224,0,2,255,253,0,0,31,224,0,3,252,255,0,0,31,224,0,15,244,191,128,0,31,224,0,31,240,63,208,0,31,224,0,127,208,47,244,0,31,224,0,255,192,15,253,0,31,224,7,255,0,7,255,64,31,224,47,254,0,1,255,244,31,224,255,248,0,0,127,240,31,224,191,224,0,0,31,208,31,224,63,64,0,0,2,128,31,224,8,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,0, + // 0xc2dd 식 + 221,194,30,38,48,37,2,252,0,0,0,0,0,0,5,64,0,0,0,0,0,0,31,240,0,0,42,128,0,0,31,240,0,0,63,192,0,0,31,240,0,0,63,192,0,0,31,240,0,0,63,192,0,0,31,240,0,0,63,192,0,0,31,240,0,0,63,208,0,0,31,240,0,0,127,208,0,0,31,240,0,0,191,224,0,0,31,240,0,0,255,240,0,0,31,240,0,1,255,248,0,0,31,240,0,3,255,252,0,0,31,240,0,11,253,255,0,0,31,240,0,31,244,255,192,0,31,240,0,127,224,127,240,0,31,240,2,255,192,31,254,0,31,240,31,255,0,11,255,224,31,240,191,252,0,1,255,208,31,240,63,240,0,0,47,128,31,240,31,64,0,0,2,0,31,240,4,0,0,0,0,0,31,240,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,0,0,5,85,85,85,85,85,64,0,47,255,255,255,255,255,240,0,47,255,255,255,255,255,240,0,47,255,255,255,255,255,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,10,160, + // 0xc5b4 어 + 180,197,30,38,48,37,2,252,0,0,0,0,0,0,5,80,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,1,169,0,0,0,15,240,0,31,255,224,0,0,15,240,0,191,255,252,0,0,15,240,2,255,255,255,0,0,15,240,3,255,65,255,128,0,15,240,11,248,0,127,192,0,15,240,15,240,0,47,224,0,15,240,47,224,0,15,240,0,15,240,63,192,0,11,244,0,15,240,63,192,0,7,248,0,15,240,63,192,0,7,248,0,15,240,127,128,0,3,253,85,95,240,127,128,0,3,255,255,255,240,127,128,0,3,255,255,255,240,127,128,0,3,255,255,255,240,127,128,0,3,252,0,15,240,63,192,0,7,248,0,15,240,63,192,0,7,248,0,15,240,63,192,0,11,244,0,15,240,47,224,0,15,240,0,15,240,15,240,0,31,224,0,15,240,15,248,0,63,208,0,15,240,3,255,1,255,128,0,15,240,2,255,255,255,0,0,15,240,0,191,255,252,0,0,15,240,0,31,255,224,0,0,15,240,0,1,169,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240, + // 0xc5c6 없 + 198,197,34,37,77,37,2,252,0,0,0,0,0,0,15,240,0,0,0,84,0,0,0,15,240,0,0,31,255,244,0,0,15,240,0,1,255,255,255,0,0,15,240,0,7,255,255,255,192,0,15,240,0,15,253,0,191,240,0,15,240,0,47,240,0,15,248,0,15,240,0,63,192,0,7,252,0,15,240,0,127,128,0,3,255,255,255,240,0,127,128,0,2,255,255,255,240,0,127,128,0,3,255,255,255,240,0,127,192,0,3,253,85,111,240,0,63,208,0,7,252,0,15,240,0,47,240,0,31,244,0,15,240,0,15,254,1,191,240,0,15,240,0,7,255,255,255,192,0,15,240,0,1,255,255,255,0,0,15,240,0,0,31,255,244,0,0,15,240,0,0,0,84,0,0,0,15,240,0,0,0,0,0,0,0,5,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,84,0,0,0,255,0,63,192,3,253,0,0,0,255,0,63,192,3,253,0,0,0,255,0,63,192,3,253,0,0,0,255,0,63,192,3,253,0,0,0,255,255,255,192,3,254,0,0,0,255,255,255,192,7,255,0,0,0,255,255,255,192,15,255,64,0,0,255,0,63,192,31,255,128,0,0,255,0,63,192,63,255,224,0,0,255,0,63,192,255,143,244,0,0,255,0,63,203,255,11,254,0,0,255,255,255,255,252,2,255,208,0,255,255,255,223,240,0,191,192,0,255,255,255,203,128,0,31,64,0,0,0,0,1,0,0,1,0, + // 0xc5d1 엑 + 209,197,31,38,48,37,2,252,0,0,0,0,0,0,1,80,0,0,0,0,0,169,7,248,0,0,0,0,0,254,7,248,0,31,249,0,0,254,7,248,1,255,255,208,0,254,7,248,7,255,255,244,0,254,7,248,15,254,175,252,0,254,7,248,63,224,2,255,0,254,7,248,63,192,0,255,0,254,7,248,127,64,0,127,64,254,7,248,191,0,0,63,255,254,7,248,191,0,0,63,255,254,7,248,191,0,0,63,255,254,7,248,191,0,0,63,150,254,7,248,127,128,0,191,64,254,7,248,63,192,0,255,0,254,7,248,47,240,3,254,0,254,7,248,15,254,111,252,0,254,7,248,7,255,255,240,0,254,7,248,1,255,255,192,0,254,7,248,0,31,249,0,0,254,7,248,0,0,0,0,0,254,7,248,0,0,0,0,0,253,7,248,0,0,0,0,0,0,0,0,0,5,85,85,85,85,85,80,0,15,255,255,255,255,255,248,0,15,255,255,255,255,255,248,0,15,255,255,255,255,255,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,7,248, + // 0xc5d4 엔 + 212,197,32,37,40,37,2,253,0,0,0,0,0,0,1,80,0,0,0,0,0,169,7,248,0,0,0,0,0,254,7,248,0,5,80,0,0,254,7,248,0,127,255,64,0,254,7,248,3,255,255,224,0,254,7,248,15,255,255,248,0,254,7,248,31,248,11,253,0,254,7,248,63,208,1,255,0,254,7,248,127,128,0,255,0,254,7,248,191,64,0,127,64,254,7,248,191,0,0,63,255,254,7,248,191,0,0,63,255,254,7,248,191,0,0,63,255,254,7,248,191,0,0,127,150,254,7,248,127,128,0,191,0,254,7,248,63,208,1,255,0,254,7,248,47,248,11,253,0,254,7,248,15,255,255,248,0,254,7,248,3,255,255,240,0,254,7,248,0,127,255,64,0,254,7,248,0,5,148,0,0,254,7,248,0,0,0,0,0,254,7,248,0,0,0,0,0,254,7,248,0,1,84,0,0,254,7,248,0,7,252,0,0,254,7,248,0,7,252,0,0,254,7,248,0,7,252,0,0,0,7,248,0,7,252,0,0,0,1,80,0,7,252,0,0,0,0,0,0,7,252,0,0,0,0,0,0,7,252,0,0,0,0,0,0,7,252,0,0,0,0,0,0,7,253,85,85,85,85,84,0,7,255,255,255,255,255,254,0,7,255,255,255,255,255,254,0,7,255,255,255,255,255,254, + // 0xc5f4 열 + 244,197,31,38,48,37,2,252,0,0,0,0,0,0,5,80,0,0,0,0,0,0,15,240,0,6,255,144,0,0,15,240,0,191,255,254,0,0,15,240,3,255,255,255,208,0,31,240,15,255,154,255,255,255,255,240,31,248,0,47,255,255,255,240,63,208,0,11,255,255,255,240,63,192,0,3,252,0,15,240,127,128,0,3,252,0,15,240,127,64,0,2,253,0,15,240,127,128,0,3,252,0,15,240,63,192,0,3,253,0,31,240,63,208,0,11,255,255,255,240,31,244,0,47,255,255,255,240,15,255,150,255,255,255,255,240,3,255,255,255,128,0,15,240,0,191,255,253,0,0,15,240,0,6,255,144,0,0,15,240,0,0,0,0,0,0,5,80,0,0,0,0,0,0,0,0,0,11,255,255,255,255,255,240,0,11,255,255,255,255,255,240,0,11,255,255,255,255,255,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,11,255,255,255,255,255,240,0,11,255,255,255,255,255,240,0,11,255,255,255,255,255,240,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,11,255,255,255,255,255,252,0,11,255,255,255,255,255,252,0,11,255,255,255,255,255,252,0,0,0,0,0,0,0,0, + // 0xc608 예 + 8,198,31,37,40,37,2,252,0,0,0,0,0,84,3,252,0,0,0,0,0,254,3,252,0,0,0,0,0,254,3,252,0,27,244,0,0,254,3,252,0,191,255,0,0,254,3,252,3,255,255,192,0,254,3,252,7,255,255,240,0,254,3,252,15,248,31,244,0,254,3,252,31,224,7,253,86,254,3,252,63,192,3,255,255,254,3,252,63,192,1,255,255,254,3,252,63,128,0,255,255,254,3,252,127,64,0,254,0,254,3,252,127,64,0,254,0,254,3,252,191,0,0,255,0,254,3,252,191,0,0,255,0,254,3,252,191,0,0,255,0,254,3,252,191,0,0,255,0,254,3,252,127,64,0,254,0,254,3,252,127,64,0,255,85,254,3,252,63,128,1,255,255,254,3,252,63,192,2,255,255,254,3,252,47,192,3,255,255,254,3,252,31,224,7,248,0,254,3,252,15,248,31,240,0,254,3,252,7,255,255,224,0,254,3,252,2,255,255,192,0,254,3,252,0,191,255,0,0,254,3,252,0,11,228,0,0,254,3,252,0,0,0,0,0,254,3,252,0,0,0,0,0,254,3,252,0,0,0,0,0,254,3,252,0,0,0,0,0,254,3,252,0,0,0,0,0,254,3,252,0,0,0,0,0,254,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,2,168, + // 0xc624 오 + 36,198,33,30,14,37,2,1,0,0,1,191,254,144,0,0,0,0,0,111,255,255,254,0,0,0,0,2,255,255,255,255,224,0,0,0,15,255,233,90,255,248,0,0,0,63,249,0,0,31,254,0,0,0,191,208,0,0,2,255,64,0,0,255,64,0,0,0,191,192,0,2,254,0,0,0,0,63,192,0,2,253,0,0,0,0,47,208,0,3,252,0,0,0,0,31,224,0,3,252,0,0,0,0,31,224,0,3,253,0,0,0,0,47,208,0,2,254,0,0,0,0,63,208,0,0,255,64,0,0,0,191,192,0,0,191,192,0,0,2,255,64,0,0,63,248,0,0,31,255,0,0,0,15,255,229,90,255,252,0,0,0,3,255,255,255,255,224,0,0,0,0,127,255,255,254,0,0,0,0,0,2,191,255,144,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,85,85,85,95,249,85,85,85,64,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128, + // 0xc628 온 + 40,198,33,36,68,37,2,253,0,0,0,1,80,0,0,0,0,0,0,27,255,255,249,0,0,0,0,2,255,255,255,255,208,0,0,0,15,255,255,255,255,248,0,0,0,63,254,64,1,127,255,0,0,0,255,208,0,0,2,255,64,0,0,255,64,0,0,0,191,192,0,1,255,0,0,0,0,63,192,0,1,254,0,0,0,0,63,192,0,1,255,0,0,0,0,127,192,0,0,255,128,0,0,0,255,192,0,0,191,224,0,0,7,255,64,0,0,63,255,149,85,191,254,0,0,0,15,255,255,255,255,248,0,0,0,1,255,255,255,255,128,0,0,0,0,6,255,255,228,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,15,244,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,85,85,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,149,85,85,85,85,64,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0, + // 0xc644 완 + 68,198,34,37,77,37,2,253,0,0,0,0,0,0,85,0,0,0,0,0,0,0,0,255,64,0,0,2,255,228,0,0,255,64,0,0,47,255,255,64,0,255,64,0,0,255,255,255,224,0,255,64,0,3,255,144,127,248,0,255,64,0,7,252,0,7,252,0,255,64,0,15,244,0,2,253,0,255,64,0,15,240,0,1,254,0,255,64,0,15,240,0,0,254,0,255,64,0,15,240,0,0,254,0,255,64,0,15,240,0,1,253,0,255,64,0,7,252,0,3,252,0,255,64,0,3,255,64,47,248,0,255,255,208,0,255,255,255,240,0,255,255,208,0,63,255,255,128,0,255,255,208,0,6,255,248,0,0,255,149,64,0,0,63,192,0,0,255,64,0,0,0,63,192,0,0,255,64,0,0,0,63,192,1,96,255,64,0,85,85,191,239,255,240,255,64,0,255,255,255,255,255,244,255,64,0,255,255,255,255,255,224,255,64,0,191,255,254,165,64,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,63,192,0,0,0,255,64,0,0,63,192,0,0,0,255,64,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,213,85,85,85,85,64,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0,0,63,255,255,255,255,255,224,0, + // 0xc6d0 원 + 208,198,31,37,40,37,2,253,0,0,0,0,0,0,5,80,0,0,0,0,0,0,15,240,0,1,175,233,0,0,15,240,0,31,255,255,208,0,15,240,0,191,255,255,248,0,15,240,2,255,144,27,254,0,15,240,3,253,0,1,255,0,15,240,7,252,0,0,191,64,15,240,7,248,0,0,191,64,15,240,7,252,0,0,191,64,15,240,3,253,0,1,255,0,15,240,2,255,144,27,254,0,15,240,0,191,255,255,252,0,15,240,0,31,255,255,224,0,15,240,0,1,191,249,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,88,15,240,85,85,106,175,255,252,15,240,255,255,255,255,255,252,15,240,255,255,255,255,255,252,15,240,191,255,255,255,169,64,15,240,0,0,15,240,0,0,15,240,0,0,15,240,3,255,255,240,0,0,15,240,3,255,255,240,0,0,15,240,3,255,255,240,0,0,15,240,0,0,15,240,0,127,207,240,0,0,15,240,0,127,202,160,0,0,15,240,0,127,192,0,0,0,10,160,0,127,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,213,85,85,85,85,84,0,127,255,255,255,255,255,252,0,127,255,255,255,255,255,252,0,127,255,255,255,255,255,252, + // 0xc704 위 + 4,199,30,37,40,37,2,252,0,0,0,0,0,0,15,240,0,0,5,80,0,0,15,240,0,2,255,255,64,0,15,240,0,31,255,255,240,0,15,240,0,191,255,255,253,0,15,240,1,255,208,11,255,0,15,240,3,254,0,0,255,128,15,240,7,252,0,0,127,192,15,240,7,248,0,0,63,192,15,240,11,248,0,0,63,192,15,240,7,248,0,0,63,192,15,240,3,252,0,0,191,128,15,240,3,255,64,2,255,64,15,240,0,255,249,111,254,0,15,240,0,127,255,255,252,0,15,240,0,11,255,255,208,0,15,240,0,0,191,249,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,89,15,240,85,85,170,175,255,254,15,240,255,255,255,255,255,254,15,240,191,255,255,255,255,233,15,240,191,255,255,249,80,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,10,160,0,0,15,240,0,0,0,0,0,0,15,224, + // 0xc73c 으 + 60,199,33,30,14,37,2,1,0,0,1,191,254,80,0,0,0,0,0,47,255,255,254,0,0,0,0,2,255,255,255,255,208,0,0,0,15,255,250,107,255,248,0,0,0,63,253,0,0,47,254,0,0,0,191,208,0,0,2,255,0,0,0,255,64,0,0,0,191,192,0,1,254,0,0,0,0,63,192,0,2,253,0,0,0,0,47,208,0,3,252,0,0,0,0,31,224,0,3,252,0,0,0,0,31,224,0,3,252,0,0,0,0,47,208,0,2,254,0,0,0,0,63,208,0,1,255,0,0,0,0,127,192,0,0,255,192,0,0,1,255,128,0,0,63,244,0,0,11,255,0,0,0,31,255,144,5,191,252,0,0,0,7,255,255,255,255,240,0,0,0,0,191,255,255,255,64,0,0,0,0,7,255,255,228,0,0,0,0,0,0,5,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,85,85,64,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128, + // 0xc74c 음 + 76,199,33,36,68,37,2,252,0,0,27,255,255,228,0,0,0,0,2,255,255,255,255,208,0,0,0,31,255,255,255,255,252,0,0,0,127,254,64,0,111,255,0,0,0,255,208,0,0,2,255,128,0,1,255,0,0,0,0,191,192,0,1,255,0,0,0,0,63,192,0,1,255,0,0,0,0,63,192,0,1,255,64,0,0,0,191,192,0,0,255,224,0,0,2,255,128,0,0,63,255,149,85,191,255,0,0,0,15,255,255,255,255,248,0,0,0,1,255,255,255,255,128,0,0,0,0,6,191,255,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,85,85,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,85,85,85,85,191,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,85,85,85,85,85,85,0,0, + // 0xc774 이 + 116,199,29,38,48,37,3,252,0,0,0,0,0,0,21,64,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,1,169,0,0,0,127,128,0,47,255,224,0,0,127,128,0,255,255,252,0,0,127,128,3,255,255,255,0,0,127,128,11,254,2,255,128,0,127,128,15,244,0,127,192,0,127,128,47,224,0,47,224,0,127,128,63,192,0,15,240,0,127,128,63,192,0,15,240,0,127,128,127,128,0,11,244,0,127,128,191,64,0,7,248,0,127,128,191,64,0,7,248,0,127,128,191,64,0,3,252,0,127,128,255,0,0,3,252,0,127,128,191,64,0,3,252,0,127,128,191,64,0,7,248,0,127,128,191,64,0,7,248,0,127,128,127,128,0,11,244,0,127,128,63,192,0,15,240,0,127,128,63,192,0,15,240,0,127,128,47,224,0,47,224,0,127,128,15,244,0,127,192,0,127,128,11,254,2,255,128,0,127,128,3,255,255,255,0,0,127,128,0,255,255,252,0,0,127,128,0,47,255,224,0,0,127,128,0,1,169,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128, + // 0xc77c 일 + 124,199,30,37,40,37,3,252,0,0,0,0,0,0,127,192,0,27,254,128,0,0,127,192,1,255,255,248,0,0,127,192,11,255,255,255,0,0,127,192,47,254,155,255,192,0,127,192,127,224,0,127,224,0,127,192,255,128,0,31,240,0,127,192,255,0,0,11,244,0,127,192,255,0,0,7,248,0,127,192,255,0,0,7,248,0,127,192,255,0,0,11,248,0,127,192,255,64,0,15,244,0,127,192,191,192,0,47,240,0,127,192,63,249,1,255,208,0,127,192,15,255,255,255,128,0,127,192,3,255,255,253,0,0,127,192,0,127,255,224,0,0,127,192,0,0,84,0,0,0,127,192,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,192,0,63,255,255,255,255,255,192,0,63,255,255,255,255,255,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,127,192,0,63,255,255,255,255,255,192,0,63,255,255,255,255,255,192,0,63,255,255,255,255,255,192,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,255,255,255,255,255,240,0,63,255,255,255,255,255,240,0,63,255,255,255,255,255,240,0,0,0,0,0,0,0,0, + // 0xc77d 읽 + 125,199,29,37,40,37,3,252,0,0,0,0,0,0,127,192,0,0,84,0,0,0,127,192,0,127,255,224,0,0,127,192,3,255,255,253,0,0,127,192,15,255,255,255,64,0,127,192,63,249,1,255,208,0,127,192,191,192,0,63,240,0,127,192,255,64,0,15,244,0,127,192,255,0,0,11,248,0,127,192,255,0,0,7,248,0,127,192,255,0,0,7,248,0,127,192,255,0,0,11,244,0,127,192,255,128,0,31,240,0,127,192,127,224,0,127,224,0,127,192,47,254,91,255,192,0,127,192,11,255,255,255,0,0,127,192,1,255,255,248,0,0,127,192,0,27,255,128,0,0,127,192,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,0,0,85,85,84,21,85,85,0,2,255,255,254,63,255,255,192,2,255,255,254,63,255,255,192,2,255,255,254,63,255,255,192,0,0,1,254,0,0,127,192,0,0,1,254,0,0,127,192,0,0,1,254,0,0,127,192,2,255,255,254,0,0,127,192,2,255,255,254,0,0,127,192,2,255,255,253,0,0,127,192,2,253,0,0,0,0,127,192,2,253,0,0,0,0,127,192,2,253,0,5,160,0,127,192,2,255,255,255,240,0,127,192,2,255,255,255,240,0,127,192,2,255,255,254,144,0,127,192,0,0,0,0,0,0,21,64, + // 0xc785 입 + 133,199,29,37,40,37,3,252,0,0,0,0,0,0,127,192,0,0,84,0,0,0,127,192,0,127,255,224,0,0,127,192,3,255,255,254,0,0,127,192,15,255,255,255,128,0,127,192,63,249,1,255,208,0,127,192,127,208,0,47,240,0,127,192,255,64,0,15,244,0,127,192,255,0,0,7,248,0,127,192,255,0,0,3,252,0,127,192,255,0,0,3,252,0,127,192,255,0,0,7,248,0,127,192,255,64,0,15,244,0,127,192,127,208,0,47,240,0,127,192,63,249,1,255,224,0,127,192,15,255,255,255,128,0,127,192,3,255,255,254,0,0,127,192,0,127,255,224,0,0,127,192,0,1,84,0,0,0,127,192,0,0,0,0,0,0,21,64,0,0,0,0,0,0,0,0,0,42,128,0,0,0,42,128,0,63,208,0,0,0,127,192,0,63,208,0,0,0,127,192,0,63,208,0,0,0,127,192,0,63,208,0,0,0,127,192,0,63,255,255,255,255,255,192,0,63,255,255,255,255,255,192,0,63,255,255,255,255,255,192,0,63,208,0,0,0,127,192,0,63,208,0,0,0,127,192,0,63,208,0,0,0,127,192,0,63,208,0,0,0,127,192,0,63,255,255,255,255,255,192,0,63,255,255,255,255,255,192,0,63,255,255,255,255,255,192,0,21,85,85,85,85,85,64, + // 0xc790 자 + 144,199,35,37,77,37,1,252,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,5,85,85,85,85,64,63,192,0,31,255,255,255,255,208,63,192,0,31,255,255,255,255,208,63,192,0,31,255,255,255,255,208,63,192,0,0,0,31,224,0,0,63,192,0,0,0,31,224,0,0,63,192,0,0,0,31,224,0,0,63,192,0,0,0,31,224,0,0,63,192,0,0,0,47,224,0,0,63,192,0,0,0,47,240,0,0,63,192,0,0,0,47,240,0,0,63,192,0,0,0,63,240,0,0,63,213,80,0,0,63,244,0,0,63,255,248,0,0,191,252,0,0,63,255,248,0,0,255,252,0,0,63,255,248,0,1,254,254,0,0,63,192,0,0,3,252,255,64,0,63,192,0,0,7,248,127,192,0,63,192,0,0,15,244,63,240,0,63,192,0,0,63,240,15,248,0,63,192,0,0,191,192,11,254,0,63,192,0,2,255,128,3,255,192,63,192,0,15,255,0,0,255,244,63,192,0,127,252,0,0,63,240,63,192,0,63,240,0,0,11,208,63,192,0,15,128,0,0,1,128,63,192,0,5,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0, + // 0xc791 작 + 145,199,34,38,86,37,2,252,0,0,0,0,0,0,85,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,63,255,255,255,255,64,255,0,0,63,255,255,255,255,64,255,0,0,63,255,255,255,255,64,255,0,0,21,85,191,213,85,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,191,192,0,0,255,0,0,0,0,191,192,0,0,255,0,0,0,0,255,208,0,0,255,255,208,0,1,255,224,0,0,255,255,208,0,3,255,240,0,0,255,255,208,0,7,255,252,0,0,255,149,64,0,15,243,254,0,0,255,0,0,0,63,225,255,128,0,255,0,0,0,255,192,191,240,0,255,0,0,7,255,64,63,254,0,255,0,0,127,254,0,15,255,192,255,0,0,255,248,0,2,255,64,255,0,0,127,208,0,0,127,0,255,0,0,46,0,0,0,4,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,0,0,0,191,255,255,255,255,255,0,0,0,191,255,255,255,255,255,0,0,0,21,85,85,85,85,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,191,0,0, + // 0xc798 잘 + 152,199,34,37,77,37,2,252,0,0,0,0,0,0,255,0,0,21,85,85,85,85,0,255,0,0,63,255,255,255,255,0,255,0,0,63,255,255,255,255,0,255,0,0,63,255,255,255,255,0,255,0,0,0,0,191,128,0,0,255,0,0,0,0,191,192,0,0,255,0,0,0,0,255,192,0,0,255,149,64,0,0,255,208,0,0,255,255,208,0,2,255,240,0,0,255,255,208,0,3,255,248,0,0,255,255,208,0,15,251,253,0,0,255,0,0,0,47,242,255,64,0,255,0,0,0,255,208,255,244,0,255,0,0,11,255,64,63,255,64,255,0,0,191,254,0,11,255,192,255,0,0,255,244,0,1,255,64,255,0,0,127,128,0,0,26,0,255,0,0,36,0,0,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,255,255,255,255,255,208,0,0,63,255,255,255,255,255,208,0,0,63,255,255,255,255,255,208,0,0,0,0,0,0,0,0,0,0, + // 0xc7a5 장 + 165,199,34,37,77,37,2,252,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,21,85,85,85,85,0,255,0,0,63,255,255,255,255,64,255,0,0,63,255,255,255,255,64,255,0,0,63,255,255,255,255,64,255,0,0,0,0,127,128,0,0,255,0,0,0,0,191,192,0,0,255,0,0,0,0,191,192,0,0,255,149,64,0,0,255,192,0,0,255,255,208,0,0,255,224,0,0,255,255,208,0,2,255,240,0,0,255,255,208,0,3,255,248,0,0,255,0,0,0,15,247,254,0,0,255,0,0,0,47,241,255,128,0,255,0,0,0,191,208,191,244,0,255,0,0,7,255,128,47,255,64,255,0,0,47,255,0,11,255,192,255,0,0,255,252,0,1,255,64,255,0,0,191,224,0,0,47,0,255,0,0,63,64,0,0,0,0,255,0,0,4,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,255,248,0,0,0,0,0,191,255,255,255,208,0,0,0,7,255,255,255,255,248,0,0,0,31,255,64,0,111,254,0,0,0,63,240,0,0,3,255,0,0,0,127,192,0,0,0,255,64,0,0,127,128,0,0,0,191,128,0,0,127,128,0,0,0,191,128,0,0,63,192,0,0,0,255,64,0,0,63,244,0,0,7,255,0,0,0,15,255,149,85,191,253,0,0,0,3,255,255,255,255,244,0,0,0,0,127,255,255,255,128,0,0,0,0,2,191,255,164,0,0,0, + // 0xc7ac 재 + 172,199,31,37,40,37,2,252,0,0,0,0,1,168,3,252,0,0,0,0,2,252,3,252,0,0,0,0,2,252,3,252,0,0,0,0,2,252,3,252,127,255,255,255,194,252,3,252,127,255,255,255,194,252,3,252,127,255,255,255,194,252,3,252,21,87,253,85,66,252,3,252,0,3,252,0,2,252,3,252,0,3,252,0,2,252,3,252,0,3,252,0,2,252,3,252,0,3,252,0,2,252,3,252,0,3,253,0,2,252,3,252,0,7,253,0,2,252,3,252,0,7,254,0,2,253,87,252,0,11,255,0,2,255,255,252,0,15,255,0,2,255,255,252,0,15,255,64,2,255,255,252,0,31,255,192,2,252,3,252,0,63,239,192,2,252,3,252,0,127,143,240,2,252,3,252,0,255,79,248,2,252,3,252,1,255,7,253,2,252,3,252,3,253,2,255,66,252,3,252,15,252,0,255,226,252,3,252,127,240,0,63,242,252,3,252,255,208,0,15,210,252,3,252,191,64,0,2,130,252,3,252,45,0,0,0,2,252,3,252,0,0,0,0,2,252,3,252,0,0,0,0,2,252,3,252,0,0,0,0,2,252,3,252,0,0,0,0,2,252,3,252,0,0,0,0,2,252,3,252,0,0,0,0,2,252,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,2,252, + // 0xc800 저 + 0,200,30,37,40,37,2,252,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,21,85,85,85,85,64,15,240,63,255,255,255,255,192,15,240,63,255,255,255,255,192,15,240,63,255,255,255,255,192,15,240,0,0,63,192,0,0,15,240,0,0,63,192,0,0,15,240,0,0,63,192,0,0,15,240,0,0,63,192,0,0,15,240,0,0,127,192,0,0,15,240,0,0,127,192,0,0,15,240,0,0,191,208,3,255,255,240,0,0,191,224,3,255,255,240,0,0,255,240,3,255,255,240,0,1,255,244,1,85,95,240,0,2,255,248,0,0,15,240,0,3,250,252,0,0,15,240,0,11,245,255,0,0,15,240,0,31,240,255,128,0,15,240,0,63,208,127,208,0,15,240,0,191,192,63,240,0,15,240,2,255,64,15,252,0,15,240,11,254,0,7,255,64,15,240,63,252,0,2,255,240,15,240,255,240,0,0,191,224,15,240,191,192,0,0,31,192,15,240,62,0,0,0,2,0,15,240,4,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240, + // 0xc804 전 + 4,200,31,36,32,37,2,253,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,5,85,85,85,85,0,15,240,63,255,255,255,255,128,15,240,63,255,255,255,255,128,15,240,63,255,255,255,255,128,15,240,0,0,63,192,0,0,15,240,0,0,63,192,0,0,15,240,0,0,63,192,0,0,15,240,0,0,127,208,1,85,95,240,0,0,191,224,2,255,255,240,0,0,255,240,2,255,255,240,0,1,255,248,2,255,255,240,0,3,255,252,0,0,15,240,0,11,249,255,0,0,15,240,0,47,240,255,192,0,15,240,0,191,208,127,244,0,15,240,7,255,128,31,255,64,15,240,127,255,0,7,255,208,15,240,191,248,0,1,255,128,15,240,63,224,0,0,47,0,15,240,30,0,0,0,1,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,2,164,0,0,0,15,240,0,7,248,0,0,0,15,240,0,7,248,0,0,0,15,240,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,248,0,0,0,0,0,0,7,253,85,85,85,85,84,0,7,255,255,255,255,255,252,0,7,255,255,255,255,255,252,0,7,255,255,255,255,255,252, + // 0xc815 정 + 21,200,30,38,48,37,2,252,0,0,0,0,0,0,5,80,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,63,255,255,255,255,128,15,240,63,255,255,255,255,128,15,240,63,255,255,255,255,128,15,240,21,85,127,213,85,0,15,240,0,0,63,192,0,0,15,240,0,0,127,192,0,0,15,240,0,0,127,208,0,0,15,240,0,0,191,224,2,255,255,240,0,0,255,240,2,255,255,240,0,1,255,248,2,255,255,240,0,3,255,252,0,85,95,240,0,11,249,255,0,0,15,240,0,31,240,255,192,0,15,240,0,191,224,127,244,0,15,240,2,255,192,31,255,64,15,240,47,255,0,11,255,208,15,240,191,252,0,1,255,128,15,240,63,240,0,0,47,0,15,240,47,64,0,0,1,0,15,240,4,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,0,0,1,191,255,254,64,0,0,0,47,255,255,255,244,0,0,0,255,255,255,255,255,0,0,3,255,228,0,27,255,192,0,11,253,0,0,0,127,224,0,15,244,0,0,0,31,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,15,240,0,15,244,0,0,0,47,240,0,11,253,0,0,0,191,208,0,3,255,229,65,95,255,192,0,0,255,255,255,255,254,0,0,0,31,255,255,255,244,0,0,0,0,111,255,249,0,0, + // 0xc81c 제 + 28,200,32,38,48,37,1,252,0,0,0,0,0,0,0,85,0,0,0,0,0,42,64,255,0,0,0,0,0,127,128,255,0,0,0,0,0,127,128,255,5,85,85,85,80,127,128,255,31,255,255,255,240,127,128,255,31,255,255,255,240,127,128,255,31,255,255,255,240,127,128,255,0,0,255,0,0,127,128,255,0,0,255,0,0,127,128,255,0,0,255,0,0,127,128,255,0,0,255,0,0,127,128,255,0,0,255,0,0,127,128,255,0,1,255,0,85,191,128,255,0,1,255,66,255,255,128,255,0,1,255,66,255,255,128,255,0,2,255,130,255,255,128,255,0,3,255,192,0,127,128,255,0,7,255,208,0,127,128,255,0,11,255,224,0,127,128,255,0,15,235,240,0,127,128,255,0,47,211,252,0,127,128,255,0,63,195,253,0,127,128,255,0,191,129,255,0,127,128,255,1,255,0,255,192,127,128,255,7,254,0,63,240,127,128,255,31,252,0,31,252,127,128,255,127,240,0,11,248,127,128,255,47,208,0,1,240,127,128,255,15,0,0,0,64,127,128,255,0,0,0,0,0,127,128,255,0,0,0,0,0,127,128,255,0,0,0,0,0,127,128,255,0,0,0,0,0,127,128,255,0,0,0,0,0,127,128,255,0,0,0,0,0,127,64,255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,170, + // 0xc8fd 죽 + 253,200,33,36,68,37,2,252,3,255,255,255,255,255,255,224,0,3,255,255,255,255,255,255,224,0,3,255,255,255,255,255,255,224,0,1,85,85,111,253,85,85,64,0,0,0,0,63,254,0,0,0,0,0,0,0,127,255,0,0,0,0,0,0,1,255,255,192,0,0,0,0,0,7,255,63,240,0,0,0,0,0,127,252,31,254,0,0,0,0,7,255,240,7,255,228,0,0,11,255,255,128,0,255,255,228,0,15,255,253,0,0,47,255,248,0,11,255,144,0,0,1,255,240,0,3,164,0,0,0,0,6,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,95,249,85,85,85,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,85,85,95,249,85,85,0,0,1,255,255,255,255,255,255,128,0,1,255,255,255,255,255,255,128,0,1,255,255,255,255,255,255,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0, + // 0xc900 준 + 0,201,33,35,59,37,2,253,1,85,85,85,85,85,85,64,0,3,255,255,255,255,255,255,224,0,3,255,255,255,255,255,255,224,0,3,255,255,255,255,255,255,224,0,0,0,0,47,252,0,0,0,0,0,0,0,63,254,0,0,0,0,0,0,0,127,255,0,0,0,0,0,0,0,255,255,192,0,0,0,0,0,3,255,63,224,0,0,0,0,0,47,252,31,253,0,0,0,0,1,255,240,11,255,208,0,0,1,191,255,192,1,255,254,144,0,15,255,254,0,0,63,255,248,0,11,255,224,0,0,7,255,244,0,3,249,0,0,0,0,47,240,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,85,85,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,85,0,7,248,0,0,0,0,0,255,0,7,248,0,0,0,0,0,255,0,7,248,0,0,0,0,0,255,0,7,248,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,85,85,85,85,85,64,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0, + // 0xc911 중 + 17,201,33,36,68,37,2,252,1,85,85,85,85,85,85,64,0,3,255,255,255,255,255,255,224,0,3,255,255,255,255,255,255,224,0,3,255,255,255,255,255,255,224,0,0,0,0,47,253,0,0,0,0,0,0,0,63,255,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,3,255,127,224,0,0,0,0,0,47,253,47,253,0,0,0,0,6,255,244,11,255,224,0,0,6,255,255,192,1,255,255,228,0,15,255,253,0,0,47,255,248,0,11,255,144,0,0,1,255,240,0,3,148,0,0,0,0,6,160,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,85,85,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,27,255,255,232,0,0,0,0,2,255,255,255,255,208,0,0,0,31,255,255,255,255,248,0,0,0,63,254,64,0,111,254,0,0,0,255,192,0,0,2,255,64,0,0,255,64,0,0,0,191,128,0,0,255,0,0,0,0,127,128,0,0,255,64,0,0,0,255,128,0,0,191,208,0,0,2,255,0,0,0,63,254,84,5,191,254,0,0,0,15,255,255,255,255,248,0,0,0,1,255,255,255,255,128,0,0,0,0,6,255,255,164,0,0,0, + // 0xc990 즐 + 144,201,33,36,68,37,2,252,3,255,255,255,255,255,255,224,0,3,255,255,255,255,255,255,224,0,3,255,255,255,255,255,255,224,0,0,0,0,31,253,0,0,0,0,0,0,0,47,253,0,0,0,0,0,0,0,127,255,0,0,0,0,0,0,1,255,255,192,0,0,0,0,0,11,254,63,248,0,0,0,0,1,191,252,15,255,128,0,0,5,191,255,224,2,255,254,144,0,15,255,255,0,0,127,255,252,0,11,255,224,0,0,6,255,244,0,7,229,0,0,0,0,22,240,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,85,85,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0, + // 0xc9c0 지 + 192,201,30,37,40,37,2,252,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,21,85,85,85,85,64,31,224,63,255,255,255,255,208,31,224,63,255,255,255,255,208,31,224,63,255,255,255,255,208,31,224,0,0,63,208,0,0,31,224,0,0,63,208,0,0,31,224,0,0,63,208,0,0,31,224,0,0,63,208,0,0,31,224,0,0,63,208,0,0,31,224,0,0,63,208,0,0,31,224,0,0,63,224,0,0,31,224,0,0,127,240,0,0,31,224,0,0,191,240,0,0,31,224,0,0,255,248,0,0,31,224,0,1,255,252,0,0,31,224,0,2,254,253,0,0,31,224,0,3,248,255,0,0,31,224,0,15,244,191,128,0,31,224,0,47,240,63,208,0,31,224,0,127,208,31,244,0,31,224,0,255,128,15,254,0,31,224,7,255,0,3,255,192,31,224,47,253,0,0,255,244,31,224,255,244,0,0,63,240,31,224,127,208,0,0,11,208,31,224,47,0,0,0,0,64,31,224,4,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,31,224,0,0,0,0,0,0,26,160, + // 0xcc98 처 + 152,204,30,38,48,37,2,252,0,0,0,0,0,0,5,80,0,0,42,128,0,0,15,240,0,0,63,192,0,0,15,240,0,0,63,192,0,0,15,240,0,0,63,192,0,0,15,240,0,0,63,192,0,0,15,240,0,0,63,192,0,0,15,240,63,255,255,255,255,128,15,240,63,255,255,255,255,128,15,240,63,255,255,255,255,128,15,240,21,85,127,213,85,0,15,240,0,0,63,192,0,0,15,240,0,0,63,192,0,0,15,240,0,0,63,192,0,0,15,240,0,0,127,192,0,0,15,240,0,0,127,208,7,255,255,240,0,0,191,224,7,255,255,240,0,0,255,240,7,255,255,240,0,1,255,244,1,85,95,240,0,3,255,252,0,0,15,240,0,7,250,253,0,0,15,240,0,15,240,255,0,0,15,240,0,47,224,191,192,0,15,240,0,127,192,63,224,0,15,240,1,255,128,31,248,0,15,240,7,255,0,15,255,0,15,240,47,253,0,3,255,208,15,240,255,244,0,0,255,208,15,240,63,208,0,0,47,128,15,240,47,0,0,0,2,0,15,240,4,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240, + // 0xcd08 초 + 8,205,33,33,41,37,2,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,3,255,255,255,255,255,255,224,0,3,255,255,255,255,255,255,224,0,3,255,255,255,255,255,255,224,0,1,85,85,95,249,85,85,80,0,0,0,0,15,248,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,47,253,0,0,0,0,0,0,0,63,255,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,2,255,127,208,0,0,0,0,0,15,253,47,248,0,0,0,0,0,127,248,15,255,64,0,0,0,11,255,224,2,255,244,0,0,6,255,255,64,0,191,255,164,0,15,255,248,0,0,31,255,252,0,15,255,128,0,0,1,255,248,0,7,228,0,11,244,0,6,240,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,85,85,85,85,85,64, + // 0xcd95 축 + 149,205,33,38,86,37,2,252,0,0,0,5,80,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,3,255,255,255,255,255,255,208,0,3,255,255,255,255,255,255,208,0,3,255,255,255,255,255,255,208,0,0,0,0,31,252,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,63,254,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,7,255,127,240,0,0,0,0,0,127,252,31,254,64,0,0,0,111,255,240,7,255,249,64,0,15,255,255,64,0,191,255,248,0,11,255,244,0,0,11,255,244,0,7,233,0,0,0,0,27,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,95,249,85,85,85,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,1,255,255,255,255,255,255,128,0,1,255,255,255,255,255,255,128,0,1,255,255,255,255,255,255,128,0,0,85,85,85,85,85,191,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,106,64,0, + // 0xcd9c 출 + 156,205,33,38,86,37,2,252,0,0,0,5,80,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,15,244,0,0,0,0,2,255,255,255,255,255,255,208,0,2,255,255,255,255,255,255,208,0,2,255,255,255,255,255,255,208,0,0,0,0,31,252,0,0,0,0,0,0,0,63,254,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,7,254,63,244,0,0,0,0,1,191,248,15,255,144,0,0,10,255,255,128,1,255,255,164,0,15,255,248,0,0,27,255,248,0,11,233,0,0,0,0,107,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,255,255,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0, + // 0xcda4 춤 + 164,205,33,38,86,37,2,252,0,0,0,5,80,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,2,255,255,255,255,255,255,208,0,2,255,255,255,255,255,255,208,0,2,255,255,255,255,255,255,208,0,0,0,0,31,252,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,0,63,254,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,7,255,127,240,0,0,0,0,0,191,252,31,255,64,0,0,1,111,255,240,7,255,254,80,0,15,255,255,64,0,191,255,248,0,11,255,228,0,0,7,255,244,0,7,229,0,0,0,0,26,240,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,85,85,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,85,85,95,249,85,85,0,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,85,85,85,85,85,85,0,0, + // 0xcde8 취 + 232,205,30,37,40,37,2,252,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,31,244,0,0,15,240,11,255,255,255,255,224,15,240,11,255,255,255,255,224,15,240,11,255,255,255,255,224,15,240,0,0,15,240,0,0,15,240,0,0,31,244,0,0,15,240,0,0,47,248,0,0,15,240,0,0,63,253,0,0,15,240,0,0,255,255,0,0,15,240,0,3,255,191,224,0,15,240,0,31,252,63,253,0,15,240,2,255,244,15,255,240,15,240,31,255,208,2,255,240,15,240,15,254,0,0,127,208,15,240,7,224,0,0,1,128,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,85,15,240,85,85,106,175,255,254,15,240,255,255,255,255,255,254,15,240,191,255,255,255,255,249,15,240,191,255,255,249,80,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,10,160,0,0,15,240,0,0,0,0,0,0,15,224, + // 0xce58 치 + 88,206,30,38,48,37,2,252,0,0,0,0,0,0,5,64,0,0,10,144,0,0,31,240,0,0,31,224,0,0,31,240,0,0,31,224,0,0,31,240,0,0,31,224,0,0,31,240,0,0,31,224,0,0,31,240,0,0,31,224,0,0,31,240,31,255,255,255,255,224,31,240,31,255,255,255,255,224,31,240,31,255,255,255,255,224,31,240,5,85,111,245,85,64,31,240,0,0,31,224,0,0,31,240,0,0,31,224,0,0,31,240,0,0,47,224,0,0,31,240,0,0,47,240,0,0,31,240,0,0,63,240,0,0,31,240,0,0,63,240,0,0,31,240,0,0,127,248,0,0,31,240,0,0,191,252,0,0,31,240,0,0,255,253,0,0,31,240,0,1,253,255,0,0,31,240,0,3,252,191,128,0,31,240,0,11,248,63,208,0,31,240,0,31,240,47,244,0,31,240,0,127,208,15,253,0,31,240,2,255,128,3,255,64,31,240,11,255,0,1,255,244,31,240,127,252,0,0,127,244,31,240,63,240,0,0,15,224,31,240,15,128,0,0,1,192,31,240,4,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,31,240,0,0,0,0,0,0,26,160, + // 0xce68 침 + 104,206,30,38,48,37,2,252,0,0,5,64,0,0,0,0,0,0,47,224,0,0,31,240,0,0,47,224,0,0,31,240,0,0,47,224,0,0,31,240,5,85,111,229,85,64,31,240,31,255,255,255,255,208,31,240,31,255,255,255,255,208,31,240,31,255,255,255,255,208,31,240,0,0,47,224,0,0,31,240,0,0,47,224,0,0,31,240,0,0,63,240,0,0,31,240,0,0,63,240,0,0,31,240,0,0,191,248,0,0,31,240,0,0,255,253,0,0,31,240,0,3,255,255,0,0,31,240,0,11,252,255,192,0,31,240,0,47,244,63,244,0,31,240,1,255,224,31,255,64,31,240,31,255,128,7,255,240,31,240,127,254,0,0,255,240,31,240,47,244,0,0,47,192,31,240,15,128,0,0,1,128,31,240,4,0,0,0,0,0,31,224,0,0,0,0,0,0,0,0,0,1,85,85,85,85,85,64,0,15,255,255,255,255,255,240,0,15,255,255,255,255,255,240,0,15,255,255,255,255,255,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,15,240,0,15,255,255,255,255,255,240,0,15,255,255,255,255,255,240,0,15,255,255,255,255,255,240,0,1,85,85,85,85,85,64, + // 0xce74 카 + 116,206,34,37,77,37,2,252,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,5,85,85,85,80,0,255,0,0,15,255,255,255,248,0,255,0,0,15,255,255,255,248,0,255,0,0,15,255,255,255,248,0,255,0,0,0,0,0,7,248,0,255,0,0,0,0,0,11,244,0,255,0,0,0,0,0,15,244,0,255,0,0,0,0,0,15,240,0,255,0,0,0,0,0,15,240,0,255,0,0,0,0,0,31,224,0,255,0,0,21,170,255,255,208,0,255,0,0,127,255,255,255,192,0,255,85,64,127,255,255,255,192,0,255,255,208,63,254,149,255,128,0,255,255,208,16,0,1,255,0,0,255,255,208,0,0,3,254,0,0,255,0,0,0,0,11,252,0,0,255,0,0,0,0,31,244,0,0,255,0,0,0,0,127,240,0,0,255,0,0,0,1,255,192,0,0,255,0,0,0,7,255,64,0,0,255,0,0,0,47,253,0,0,0,255,0,0,0,255,244,0,0,0,255,0,0,11,255,192,0,0,0,255,0,0,127,255,0,0,0,0,255,0,0,127,248,0,0,0,0,255,0,0,47,128,0,0,0,0,255,0,0,13,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,170,0,0, + // 0xcf1c 켜 + 28,207,30,37,40,37,2,252,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,5,85,85,85,80,0,15,240,15,255,255,255,244,0,15,240,15,255,255,255,240,0,15,240,15,255,255,255,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,15,240,0,15,240,0,0,0,31,255,255,255,240,0,0,0,31,255,255,255,240,0,0,0,63,255,255,255,240,90,175,255,255,213,85,95,240,255,255,255,255,192,0,15,240,191,255,255,255,64,0,15,240,127,169,81,255,0,0,15,240,0,0,3,254,0,0,15,240,0,0,11,252,0,0,15,240,0,0,15,248,21,85,95,240,0,0,63,240,127,255,255,240,0,0,255,208,127,255,255,240,0,3,255,128,127,255,255,240,0,15,254,0,0,0,15,240,0,127,248,0,0,0,15,240,2,255,224,0,0,0,15,240,31,255,128,0,0,0,15,240,255,253,0,0,0,0,15,240,127,240,0,0,0,0,15,240,47,64,0,0,0,0,15,240,8,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,10,160, + // 0xd0d1 탑 + 209,208,33,38,86,37,3,252,0,0,0,0,0,1,84,0,0,0,0,0,0,0,3,252,0,0,21,85,85,85,64,3,252,0,0,127,255,255,255,192,3,252,0,0,127,255,255,255,192,3,252,0,0,127,255,255,255,192,3,252,0,0,127,128,0,0,0,3,252,0,0,127,128,0,0,0,3,252,0,0,127,128,0,0,0,3,252,0,0,127,149,85,85,0,3,255,255,64,127,255,255,255,128,3,255,255,64,127,255,255,255,128,3,255,255,64,127,255,255,255,128,3,254,85,0,127,128,0,0,0,3,252,0,0,127,128,0,0,0,3,252,0,0,127,128,0,0,0,3,252,0,0,127,128,0,22,189,3,252,0,0,127,255,255,255,254,3,252,0,0,127,255,255,255,254,3,252,0,0,127,255,255,255,165,3,252,0,0,21,85,80,0,0,3,252,0,0,0,0,0,0,0,1,84,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,3,252,0,0,0,255,0,0,0,3,252,0,0,0,255,0,0,0,3,252,0,0,0,255,64,0,0,3,252,0,0,0,255,255,255,255,255,252,0,0,0,255,255,255,255,255,252,0,0,0,255,255,255,255,255,252,0,0,0,255,0,0,0,3,252,0,0,0,255,0,0,0,3,252,0,0,0,255,0,0,0,3,252,0,0,0,255,0,0,0,3,252,0,0,0,255,255,255,255,255,252,0,0,0,255,255,255,255,255,252,0,0,0,255,255,255,255,255,252,0,0,0,85,85,85,85,85,84,0,0, + // 0xd130 터 + 48,209,29,38,48,37,3,252,0,0,0,0,0,0,21,64,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,127,255,255,255,208,0,63,192,127,255,255,255,208,0,63,192,127,255,255,255,208,0,63,192,127,213,85,85,64,0,63,192,127,128,0,0,0,0,63,192,127,128,0,0,0,0,63,192,127,128,0,0,0,0,63,192,127,128,0,0,0,0,63,192,127,128,0,0,0,0,63,192,127,128,0,0,0,0,63,192,127,213,85,85,15,255,255,192,127,255,255,255,15,255,255,192,127,255,255,255,15,255,255,192,127,255,255,255,15,255,255,192,127,128,0,0,0,0,63,192,127,128,0,0,0,0,63,192,127,128,0,0,0,0,63,192,127,128,0,0,0,0,63,192,127,128,0,0,0,0,63,192,127,128,0,0,0,0,63,192,127,128,0,0,4,0,63,192,127,213,86,175,253,0,63,192,127,255,255,255,254,0,63,192,127,255,255,255,254,0,63,192,127,255,255,233,64,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192, + // 0xd14c 테 + 76,209,30,38,48,37,3,252,0,0,0,0,0,0,5,80,0,0,0,0,1,80,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,255,255,255,224,7,244,15,240,255,255,255,224,7,244,15,240,255,255,255,224,7,244,15,240,255,85,85,64,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,5,91,244,15,240,255,255,255,15,255,244,15,240,255,255,255,15,255,244,15,240,255,255,255,15,255,244,15,240,255,64,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,0,0,0,7,244,15,240,255,85,106,253,7,244,15,240,255,255,255,253,7,244,15,240,255,255,255,254,7,244,15,240,255,255,254,148,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,7,244,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,10,160, + // 0xd1a0 토 + 160,209,33,31,23,37,2,0,0,85,85,85,85,85,85,64,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,255,255,255,255,255,0,0,0,255,255,255,255,255,255,0,0,0,255,255,255,255,255,255,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,85,85,85,85,85,64,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,85,85,85,85,85,85,85,85,64, + // 0xd2b8 트 + 184,210,33,30,14,37,2,1,0,85,85,85,85,85,85,64,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,255,255,255,255,255,0,0,0,255,255,255,255,255,255,0,0,0,255,255,255,255,255,255,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,192,0,0,85,85,85,85,85,85,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0xd39c 펜 + 156,211,32,37,40,37,2,253,0,0,0,0,0,0,1,84,0,0,0,0,0,170,3,248,0,0,0,0,0,255,3,248,0,0,0,0,0,255,3,248,191,255,255,255,192,255,3,248,191,255,255,255,192,255,3,248,191,255,255,255,192,255,3,248,23,253,91,249,64,255,3,248,3,252,7,244,0,255,3,248,3,252,7,244,0,255,3,248,3,252,7,244,0,255,3,248,3,252,7,244,255,255,3,248,3,252,7,244,255,255,3,248,3,252,7,244,255,255,3,248,3,252,7,244,85,255,3,248,3,252,7,244,0,255,3,248,3,252,7,244,0,255,3,248,3,252,7,244,0,255,3,248,3,252,7,250,160,255,3,248,255,255,255,255,240,255,3,248,255,255,255,255,240,255,3,248,255,255,255,254,80,255,3,248,85,85,0,0,0,255,3,248,0,0,0,0,0,255,3,248,0,0,0,0,0,255,3,248,0,3,252,0,0,255,3,248,0,3,252,0,0,255,3,248,0,3,252,0,0,105,3,248,0,3,252,0,0,0,1,80,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,252,0,0,0,0,0,0,3,253,85,85,85,85,85,0,3,255,255,255,255,255,254,0,3,255,255,255,255,255,254,0,3,255,255,255,255,255,254, + // 0xd504 프 + 4,213,33,29,5,37,2,1,7,255,255,255,255,255,255,240,0,7,255,255,255,255,255,255,240,0,7,255,255,255,255,255,255,240,0,1,85,255,85,85,191,149,80,0,0,0,255,0,0,191,128,0,0,0,0,255,0,0,191,128,0,0,0,0,255,0,0,191,128,0,0,0,0,255,0,0,191,128,0,0,0,0,255,0,0,191,128,0,0,0,0,255,0,0,191,128,0,0,0,0,255,0,0,191,128,0,0,0,0,255,0,0,191,128,0,0,0,0,255,0,0,191,128,0,0,0,0,255,0,0,191,128,0,0,0,0,255,0,0,191,128,0,0,1,85,255,85,85,191,149,80,0,3,255,255,255,255,255,255,240,0,3,255,255,255,255,255,255,240,0,3,255,255,255,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,85,85,64,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192,255,255,255,255,255,255,255,255,192, + // 0xd558 하 + 88,213,34,37,77,37,2,252,0,0,21,0,0,0,255,0,0,0,0,191,128,0,0,255,0,0,0,0,191,128,0,0,255,0,0,0,0,191,128,0,0,255,0,0,0,0,191,128,0,0,255,0,0,85,85,191,149,85,64,255,0,0,255,255,255,255,255,192,255,0,0,255,255,255,255,255,192,255,0,0,255,255,255,255,255,192,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,21,0,0,0,255,0,0,0,11,255,248,0,0,255,0,0,0,127,255,255,64,0,255,0,0,1,255,255,255,208,0,255,85,80,3,255,64,127,240,0,255,255,224,11,252,0,15,248,0,255,255,224,15,244,0,3,252,0,255,255,224,15,240,0,2,253,0,255,0,0,31,224,0,2,253,0,255,0,0,31,224,0,1,253,0,255,0,0,31,224,0,2,253,0,255,0,0,15,240,0,3,252,0,255,0,0,15,248,0,7,252,0,255,0,0,7,253,0,31,244,0,255,0,0,3,255,230,255,240,0,255,0,0,0,255,255,255,192,0,255,0,0,0,47,255,254,0,0,255,0,0,0,2,255,224,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0, + // 0xd569 합 + 105,213,34,38,86,37,2,252,0,0,42,128,0,0,0,0,0,0,0,127,192,0,0,255,0,0,0,0,127,192,0,0,255,0,0,0,0,127,192,0,0,255,0,0,255,255,255,255,255,208,255,0,0,255,255,255,255,255,208,255,0,0,255,255,255,255,255,208,255,0,0,85,85,85,85,85,64,255,0,0,0,0,0,0,0,0,255,0,0,0,2,191,228,0,0,255,0,0,0,127,255,255,64,0,255,255,208,1,255,255,255,240,0,255,255,208,3,255,64,111,248,0,255,255,208,11,248,0,7,252,0,255,149,64,15,240,0,2,253,0,255,0,0,15,240,0,2,253,0,255,0,0,15,240,0,2,253,0,255,0,0,11,248,0,7,252,0,255,0,0,3,255,64,111,248,0,255,0,0,1,255,255,255,240,0,255,0,0,0,127,255,255,64,0,255,0,0,0,2,191,228,0,0,255,0,0,0,0,0,0,0,0,85,0,0,0,21,64,0,0,0,85,0,0,0,63,192,0,0,0,255,0,0,0,63,192,0,0,0,255,0,0,0,63,192,0,0,0,255,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,208,0,0,0,255,0,0,0,63,192,0,0,0,255,0,0,0,63,192,0,0,0,255,0,0,0,63,192,0,0,0,255,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,63,255,255,255,255,255,0,0,0,5,85,85,85,85,85,0,0, + // 0xd648 홈 + 72,214,33,38,86,37,2,252,0,0,0,6,164,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,15,248,0,0,0,0,31,255,255,255,255,255,255,252,0,31,255,255,255,255,255,255,252,0,31,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,26,255,255,228,0,0,0,0,2,255,255,255,255,208,0,0,0,15,255,255,255,255,252,0,0,0,63,249,0,0,31,254,0,0,0,127,208,0,0,2,255,0,0,0,127,192,0,0,1,255,0,0,0,127,208,0,0,2,255,0,0,0,63,253,64,0,111,254,0,0,0,15,255,255,255,255,248,0,0,0,1,255,255,255,255,144,0,0,0,0,6,175,254,148,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,11,244,0,0,0,0,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,0,0,0,0,127,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0, + // 0xd654 화 + 84,214,35,37,77,37,1,252,0,0,15,240,0,0,63,208,0,0,0,15,240,0,0,63,208,0,0,0,15,240,0,0,63,208,0,0,0,15,240,0,0,63,208,0,63,255,255,255,255,248,63,208,0,63,255,255,255,255,248,63,208,0,63,255,255,255,255,248,63,208,0,21,85,85,85,85,80,63,208,0,0,0,0,0,0,0,63,208,0,0,0,111,249,0,0,63,208,0,0,7,255,255,224,0,63,208,0,0,63,255,255,252,0,63,208,0,0,191,228,27,254,0,63,208,0,0,255,64,1,255,0,63,208,0,1,254,0,0,191,64,63,208,0,2,253,0,0,127,128,63,255,244,2,253,0,0,127,128,63,255,244,1,254,0,0,191,64,63,255,244,0,255,64,1,255,0,63,229,80,0,191,224,11,254,0,63,208,0,0,63,255,255,252,0,63,208,0,0,11,255,255,224,0,63,208,0,0,0,191,254,64,0,63,208,0,0,0,15,240,0,0,63,208,0,0,0,15,240,0,0,63,208,0,0,0,15,240,0,20,63,208,0,21,85,111,251,255,252,63,208,0,127,255,255,255,255,253,63,208,0,63,255,255,255,255,248,63,208,0,63,255,255,170,80,0,63,208,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,42,128,0, + // 0xd788 히 + 136,215,29,37,40,37,3,252,0,0,21,64,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127,128,85,85,191,213,85,64,127,128,255,255,255,255,255,208,127,128,255,255,255,255,255,208,127,128,255,255,255,255,255,208,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,21,0,0,0,127,128,0,11,255,248,0,0,127,128,0,127,255,255,64,0,127,128,1,255,255,255,224,0,127,128,3,255,64,127,244,0,127,128,11,252,0,11,252,0,127,128,15,244,0,3,252,0,127,128,31,240,0,2,254,0,127,128,31,224,0,1,254,0,127,128,31,224,0,1,254,0,127,128,31,224,0,1,254,0,127,128,15,240,0,2,253,0,127,128,15,248,0,7,252,0,127,128,7,253,0,31,248,0,127,128,3,255,230,255,240,0,127,128,0,255,255,255,192,0,127,128,0,47,255,255,0,0,127,128,0,2,255,228,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128,0,0,0,0,0,0,127,128, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Latin_Extended_A_29.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Latin_Extended_A_29.cpp new file mode 100644 index 0000000000..24b1d05c0e --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Latin_Extended_A_29.cpp @@ -0,0 +1,288 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Latin Extended-A 40pt, capital 'A' height: 29px, width: 100%, range: 0x0100-0x017f +extern const uint8_t NotoSans_Medium_Latin_Extended_A_29[22499] = { + 130,29,0,1,127,1,38,246, // unifont_t + // 0x0100 Ā + 26,35,245,26,0,0,0,1,85,85,84,0,0,0,3,255,255,252,0,0,0,3,255,255,252,0,0,0,3,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x0101 ā + 18,29,145,23,2,255,1,85,85,85,0,2,255,255,254,0,2,255,255,254,0,2,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x0102 Ă + 26,37,3,26,0,0,0,11,192,0,62,0,0,0,7,208,0,189,0,0,0,3,254,171,252,0,0,0,1,255,255,244,0,0,0,0,127,255,208,0,0,0,0,6,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x0103 ă + 18,31,155,23,2,255,3,208,0,47,0,3,240,0,63,0,2,254,171,253,0,0,255,255,252,0,0,63,255,224,0,0,6,170,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x0104 Ą + 26,39,17,26,0,246,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240,0,0,0,0,0,47,64,0,0,0,0,0,190,0,0,0,0,0,1,252,0,0,0,0,0,3,244,0,0,0,0,0,3,240,0,0,0,0,0,3,244,0,0,0,0,0,3,255,176,0,0,0,0,1,255,240,0,0,0,0,0,127,224,0,0,0,0,0,0,0, + // 0x0105 ą + 19,32,160,23,2,246,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,15,192,0,0,0,63,64,0,0,0,190,0,0,0,0,252,0,0,0,1,252,0,0,0,1,252,0,0,0,0,255,184,0,0,0,191,248,0,0,0,31,244,0,0,0,0,0, + // 0x0106 Ć + 22,39,234,25,2,255,0,0,0,2,170,0,0,0,0,15,252,0,0,0,0,31,244,0,0,0,0,63,208,0,0,0,0,255,64,0,0,0,2,252,0,0,0,0,3,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,2,255,255,255,208,0,31,255,255,255,224,0,127,255,255,255,208,1,255,244,0,27,192,3,255,128,0,0,0,11,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,63,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,127,208,0,0,0,0,63,224,0,0,0,0,63,240,0,0,0,0,47,244,0,0,0,0,15,252,0,0,0,0,11,255,0,0,0,0,3,255,208,0,0,64,1,255,254,85,175,192,0,127,255,255,255,192,0,15,255,255,255,192,0,1,191,255,254,64,0,0,1,85,0,0, + // 0x0107 ć + 16,32,128,20,2,255,0,0,2,170,0,0,11,253,0,0,15,248,0,0,63,224,0,0,191,128,0,1,253,0,0,2,244,0,0,0,0,0,0,0,0,0,0,6,255,228,0,127,255,255,2,255,255,255,11,255,234,253,31,253,0,8,63,240,0,0,127,208,0,0,191,192,0,0,191,128,0,0,255,128,0,0,255,64,0,0,255,64,0,0,255,64,0,0,255,128,0,0,191,192,0,0,127,192,0,0,63,224,0,0,47,244,0,1,15,254,64,111,7,255,255,255,1,255,255,255,0,47,255,248,0,0,85,0, + // 0x0108 Ĉ + 22,39,234,25,2,255,0,0,2,169,0,0,0,0,15,255,0,0,0,0,47,255,192,0,0,0,191,175,240,0,0,1,254,7,248,0,0,7,248,1,254,0,0,15,128,0,47,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,2,255,255,255,208,0,31,255,255,255,224,0,127,255,255,255,208,1,255,244,0,27,192,3,255,128,0,0,0,11,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,63,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,127,208,0,0,0,0,63,224,0,0,0,0,63,240,0,0,0,0,47,244,0,0,0,0,15,252,0,0,0,0,11,255,0,0,0,0,3,255,208,0,0,64,1,255,254,85,175,192,0,127,255,255,255,192,0,15,255,255,255,192,0,1,191,255,254,64,0,0,1,85,0,0, + // 0x0109 ĉ + 17,32,160,20,2,255,0,2,170,0,0,0,11,255,64,0,0,47,255,192,0,0,127,223,240,0,0,255,7,252,0,3,248,0,255,0,11,208,0,47,64,0,0,0,0,0,0,0,0,0,0,0,6,255,228,0,0,127,255,255,0,2,255,255,255,0,11,255,234,253,0,31,253,0,8,0,63,240,0,0,0,127,208,0,0,0,191,192,0,0,0,191,128,0,0,0,255,128,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,244,0,1,0,15,254,64,111,0,7,255,255,255,0,1,255,255,255,0,0,47,255,248,0,0,0,85,0,0, + // 0x010a Ċ + 22,38,228,25,2,255,0,0,0,164,0,0,0,0,3,253,0,0,0,0,3,254,0,0,0,0,3,253,0,0,0,0,1,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,2,255,255,255,208,0,31,255,255,255,224,0,127,255,255,255,208,1,255,244,0,27,192,3,255,128,0,0,0,11,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,63,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,127,208,0,0,0,0,63,224,0,0,0,0,63,240,0,0,0,0,47,244,0,0,0,0,15,252,0,0,0,0,11,255,0,0,0,0,3,255,208,0,0,64,1,255,254,85,175,192,0,127,255,255,255,192,0,15,255,255,255,192,0,1,191,255,254,64,0,0,1,85,0,0, + // 0x010b ċ + 16,31,124,20,2,255,0,0,168,0,0,2,254,0,0,3,255,0,0,3,254,0,0,1,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,228,0,127,255,255,2,255,255,255,11,255,234,253,31,253,0,8,63,240,0,0,127,208,0,0,191,192,0,0,191,128,0,0,255,128,0,0,255,64,0,0,255,64,0,0,255,64,0,0,255,128,0,0,191,192,0,0,127,192,0,0,63,224,0,0,47,244,0,1,15,254,64,111,7,255,255,255,1,255,255,255,0,47,255,248,0,0,85,0, + // 0x010c Č + 22,39,234,25,2,255,0,10,128,0,42,64,0,11,244,0,255,0,0,2,254,7,252,0,0,0,191,159,240,0,0,0,63,255,192,0,0,0,15,255,64,0,0,0,7,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,2,255,255,255,208,0,31,255,255,255,224,0,127,255,255,255,208,1,255,244,0,27,192,3,255,128,0,0,0,11,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,63,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,127,208,0,0,0,0,63,224,0,0,0,0,63,240,0,0,0,0,47,244,0,0,0,0,15,252,0,0,0,0,11,255,0,0,0,0,3,255,208,0,0,64,1,255,254,85,175,192,0,127,255,255,255,192,0,15,255,255,255,192,0,1,191,255,254,64,0,0,1,85,0,0, + // 0x010d č + 17,32,160,20,2,255,10,144,0,26,64,7,248,0,191,0,1,254,3,252,0,0,127,223,240,0,0,47,255,208,0,0,15,255,64,0,0,3,254,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,228,0,0,127,255,255,0,2,255,255,255,0,11,255,234,253,0,31,253,0,8,0,63,240,0,0,0,127,208,0,0,0,191,192,0,0,0,191,128,0,0,0,255,128,0,0,0,255,64,0,0,0,255,64,0,0,0,255,64,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,244,0,1,0,15,254,64,111,0,7,255,255,255,0,1,255,255,255,0,0,47,255,248,0,0,0,85,0,0, + // 0x010e Ď + 23,38,228,29,4,0,1,164,0,6,160,0,0,254,0,47,208,0,0,63,192,255,64,0,0,31,247,253,0,0,0,7,255,244,0,0,0,2,255,224,0,0,0,0,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,165,0,0,0,255,255,255,248,0,0,255,255,255,255,192,0,255,255,255,255,244,0,255,0,1,191,253,0,255,0,0,11,255,64,255,0,0,1,255,192,255,0,0,0,191,224,255,0,0,0,63,240,255,0,0,0,31,244,255,0,0,0,15,248,255,0,0,0,15,248,255,0,0,0,11,252,255,0,0,0,11,252,255,0,0,0,11,252,255,0,0,0,11,252,255,0,0,0,11,252,255,0,0,0,15,248,255,0,0,0,15,248,255,0,0,0,31,244,255,0,0,0,63,240,255,0,0,0,127,224,255,0,0,0,255,192,255,0,0,7,255,64,255,0,0,127,254,0,255,170,191,255,248,0,255,255,255,255,208,0,255,255,255,253,0,0,255,255,254,64,0,0, + // 0x010f ď + 26,32,224,25,2,255,0,0,0,1,84,5,80,0,0,0,3,253,15,240,0,0,0,3,253,15,224,0,0,0,3,253,15,208,0,0,0,3,253,31,192,0,0,0,3,253,47,64,0,0,0,3,253,62,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,27,254,2,253,0,0,0,255,255,226,253,0,0,3,255,255,250,253,0,0,15,255,170,255,253,0,0,47,248,0,47,253,0,0,63,240,0,15,253,0,0,127,208,0,7,253,0,0,191,192,0,3,253,0,0,191,128,0,3,253,0,0,255,128,0,2,253,0,0,255,64,0,2,253,0,0,255,64,0,2,253,0,0,255,64,0,2,253,0,0,255,128,0,2,253,0,0,191,192,0,3,253,0,0,127,192,0,3,253,0,0,63,224,0,7,253,0,0,63,244,0,15,253,0,0,31,254,1,191,253,0,0,11,255,255,254,253,0,0,2,255,255,240,253,0,0,0,127,255,128,253,0,0,0,1,80,0,0,0,0, + // 0x0110 Đ + 26,29,203,29,1,0,2,170,170,148,0,0,0,3,255,255,255,224,0,0,3,255,255,255,255,0,0,3,255,255,255,255,208,0,3,253,0,6,255,244,0,3,253,0,0,47,253,0,3,253,0,0,7,255,0,3,253,0,0,2,255,128,3,253,0,0,0,255,192,3,253,0,0,0,127,208,3,253,0,0,0,63,224,3,253,0,0,0,63,224,3,253,0,0,0,47,240,255,255,255,224,0,47,240,255,255,255,224,0,47,240,255,255,255,224,0,47,240,171,255,170,160,0,47,240,3,253,0,0,0,63,224,3,253,0,0,0,63,224,3,253,0,0,0,127,192,3,253,0,0,0,255,192,3,253,0,0,1,255,128,3,253,0,0,3,255,0,3,253,0,0,31,253,0,3,253,0,1,255,248,0,3,255,170,255,255,224,0,3,255,255,255,255,64,0,3,255,255,255,244,0,0,3,255,255,249,0,0,0, + // 0x0111 đ + 23,32,192,25,2,255,0,0,0,1,84,0,0,0,0,3,253,0,0,0,0,3,253,0,0,0,0,3,253,0,0,2,255,255,255,244,0,2,255,255,255,248,0,2,255,255,255,248,0,0,0,3,254,0,0,0,0,3,253,0,0,1,84,3,253,0,0,127,255,130,253,0,2,255,255,246,253,0,11,255,255,254,253,0,31,253,0,191,253,0,63,240,0,15,253,0,127,208,0,11,253,0,127,192,0,3,253,0,191,192,0,3,253,0,255,128,0,2,253,0,255,64,0,2,253,0,255,64,0,2,253,0,255,64,0,2,253,0,255,128,0,2,253,0,191,128,0,3,253,0,127,192,0,3,253,0,63,208,0,7,253,0,63,240,0,15,253,0,31,254,1,191,253,0,11,255,255,254,253,0,2,255,255,241,253,0,0,127,255,128,253,0,0,1,80,0,0,0, + // 0x0112 Ē + 16,35,140,22,4,0,5,85,85,80,15,255,255,244,15,255,255,244,15,255,255,240,0,0,0,0,0,0,0,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x0113 ē + 19,29,145,23,2,255,1,85,85,85,0,2,255,255,254,0,2,255,255,254,0,1,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x0114 Ĕ + 16,37,148,22,4,0,31,0,0,248,31,128,1,244,15,250,175,240,7,255,255,208,1,255,255,64,0,26,164,0,0,0,0,0,0,0,0,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x0115 ĕ + 19,31,155,23,2,255,3,208,0,31,0,3,240,0,63,0,2,254,170,253,0,0,255,255,252,0,0,63,255,224,0,0,6,170,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x0116 Ė + 16,37,148,22,4,0,0,2,144,0,0,15,244,0,0,15,248,0,0,15,244,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x0117 ė + 19,31,155,23,2,255,0,0,168,0,0,0,2,254,0,0,0,3,255,0,0,0,2,255,0,0,0,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x0118 Ę + 16,39,156,22,4,246,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255,0,0,2,244,0,0,11,208,0,0,31,128,0,0,63,0,0,0,63,0,0,0,63,64,0,0,63,234,0,0,47,255,0,0,7,254,0,0,0,0, + // 0x0119 ę + 19,32,160,23,2,246,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,208,0,0,21,127,0,0,0,0,252,0,0,0,2,244,0,0,0,3,240,0,0,0,7,240,0,0,0,7,240,0,0,0,3,254,224,0,0,2,255,224,0,0,0,191,208,0,0,0,0,0, + // 0x011a Ě + 16,38,152,22,4,0,42,0,0,169,47,208,3,252,11,248,31,240,2,254,127,192,0,255,255,0,0,63,253,0,0,31,244,0,0,0,0,0,0,0,0,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x011b ě + 19,32,160,23,2,255,6,144,0,26,128,3,248,0,191,64,0,255,3,253,0,0,127,223,244,0,0,31,255,208,0,0,11,255,128,0,0,2,254,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x011c Ĝ + 24,39,234,29,2,255,0,0,0,170,64,0,0,0,3,255,192,0,0,0,11,255,240,0,0,0,47,235,252,0,0,0,127,129,254,0,0,1,254,0,127,128,0,3,224,0,11,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,250,64,0,1,191,255,255,249,0,11,255,255,255,253,0,63,255,255,255,252,0,255,249,0,1,184,3,255,192,0,0,0,11,255,0,0,0,0,15,252,0,0,0,0,47,244,0,0,0,0,63,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,5,85,85,191,192,0,31,255,255,191,192,0,31,255,255,127,192,0,31,255,255,127,192,0,5,86,255,127,208,0,0,0,255,63,224,0,0,0,255,63,240,0,0,0,255,31,244,0,0,0,255,15,252,0,0,0,255,11,255,0,0,0,255,3,255,208,0,0,255,0,255,254,85,91,255,0,63,255,255,255,255,0,11,255,255,255,255,0,0,191,255,255,228,0,0,0,85,64,0, + // 0x011d ĝ + 20,41,205,25,2,246,0,1,170,64,0,0,3,255,192,0,0,15,255,240,0,0,47,235,248,0,0,191,130,254,0,1,253,0,127,128,3,224,0,11,192,0,0,0,0,0,0,0,0,0,0,0,27,254,0,169,0,255,255,224,253,3,255,255,249,253,15,255,171,255,253,31,248,0,63,253,63,240,0,15,253,127,208,0,7,253,191,192,0,3,253,191,128,0,3,253,255,128,0,2,253,255,64,0,2,253,255,64,0,2,253,255,64,0,2,253,255,128,0,2,253,191,192,0,3,253,127,192,0,3,253,63,208,0,7,253,63,240,0,15,253,15,253,0,191,253,11,255,255,254,253,2,255,255,242,253,0,127,255,130,253,0,1,80,2,253,0,0,0,3,253,0,0,0,3,253,0,0,0,7,252,0,0,0,15,252,30,64,0,127,244,31,255,255,255,224,31,255,255,255,128,11,255,255,253,0,0,22,169,64,0, + // 0x011e Ğ + 24,38,228,29,2,255,0,1,240,0,15,128,0,1,248,0,31,64,0,0,255,170,255,0,0,0,127,255,253,0,0,0,31,255,244,0,0,0,1,170,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,250,64,0,1,191,255,255,249,0,11,255,255,255,253,0,63,255,255,255,252,0,255,249,0,1,184,3,255,192,0,0,0,11,255,0,0,0,0,15,252,0,0,0,0,47,244,0,0,0,0,63,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,5,85,85,191,192,0,31,255,255,191,192,0,31,255,255,127,192,0,31,255,255,127,192,0,5,86,255,127,208,0,0,0,255,63,224,0,0,0,255,63,240,0,0,0,255,31,244,0,0,0,255,15,252,0,0,0,255,11,255,0,0,0,255,3,255,208,0,0,255,0,255,254,85,91,255,0,63,255,255,255,255,0,11,255,255,255,255,0,0,191,255,255,228,0,0,0,85,64,0, + // 0x011f ğ + 20,40,200,25,2,246,2,240,0,15,128,1,244,0,47,64,0,255,170,255,0,0,127,255,253,0,0,31,255,244,0,0,1,170,64,0,0,0,0,0,0,0,0,0,0,0,0,27,254,0,169,0,255,255,224,253,3,255,255,249,253,15,255,171,255,253,31,248,0,63,253,63,240,0,15,253,127,208,0,7,253,191,192,0,3,253,191,128,0,3,253,255,128,0,2,253,255,64,0,2,253,255,64,0,2,253,255,64,0,2,253,255,128,0,2,253,191,192,0,3,253,127,192,0,3,253,63,208,0,7,253,63,240,0,15,253,15,253,0,191,253,11,255,255,254,253,2,255,255,242,253,0,127,255,130,253,0,1,80,2,253,0,0,0,3,253,0,0,0,3,253,0,0,0,7,252,0,0,0,15,252,30,64,0,127,244,31,255,255,255,224,31,255,255,255,128,11,255,255,253,0,0,22,169,64,0, + // 0x0120 Ġ + 24,38,228,29,2,255,0,0,0,41,0,0,0,0,0,255,64,0,0,0,0,255,128,0,0,0,0,255,64,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,250,64,0,1,191,255,255,249,0,11,255,255,255,253,0,63,255,255,255,252,0,255,249,0,1,184,3,255,192,0,0,0,11,255,0,0,0,0,15,252,0,0,0,0,47,244,0,0,0,0,63,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,5,85,85,191,192,0,31,255,255,191,192,0,31,255,255,127,192,0,31,255,255,127,192,0,5,86,255,127,208,0,0,0,255,63,224,0,0,0,255,63,240,0,0,0,255,31,244,0,0,0,255,15,252,0,0,0,255,11,255,0,0,0,255,3,255,208,0,0,255,0,255,254,85,91,255,0,63,255,255,255,255,0,11,255,255,255,255,0,0,191,255,255,228,0,0,0,85,64,0, + // 0x0121 ġ + 20,40,200,25,2,246,0,0,41,0,0,0,0,255,0,0,0,1,255,64,0,0,0,255,64,0,0,0,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,0,169,0,255,255,224,253,3,255,255,249,253,15,255,171,255,253,31,248,0,63,253,63,240,0,15,253,127,208,0,7,253,191,192,0,3,253,191,128,0,3,253,255,128,0,2,253,255,64,0,2,253,255,64,0,2,253,255,64,0,2,253,255,128,0,2,253,191,192,0,3,253,127,192,0,3,253,63,208,0,7,253,63,240,0,15,253,15,253,0,191,253,11,255,255,254,253,2,255,255,242,253,0,127,255,130,253,0,1,80,2,253,0,0,0,3,253,0,0,0,3,253,0,0,0,7,252,0,0,0,15,252,30,64,0,127,244,31,255,255,255,224,31,255,255,255,128,11,255,255,253,0,0,22,169,64,0, + // 0x0122 Ģ + 24,38,228,29,2,247,0,0,6,255,250,64,0,1,191,255,255,249,0,11,255,255,255,253,0,63,255,255,255,252,0,255,249,0,1,184,3,255,192,0,0,0,11,255,0,0,0,0,15,252,0,0,0,0,47,244,0,0,0,0,63,240,0,0,0,0,63,208,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,191,192,0,5,85,85,191,192,0,31,255,255,191,192,0,31,255,255,127,192,0,31,255,255,127,192,0,5,86,255,127,208,0,0,0,255,63,224,0,0,0,255,63,240,0,0,0,255,31,244,0,0,0,255,15,252,0,0,0,255,11,255,0,0,0,255,3,255,208,0,0,255,0,255,254,85,91,255,0,63,255,255,255,255,0,11,255,255,255,255,0,0,191,255,255,228,0,0,0,85,64,0,0,0,0,0,0,0,0,0,0,42,64,0,0,0,0,191,64,0,0,0,0,191,0,0,0,0,0,254,0,0,0,0,1,252,0,0,0,0,2,244,0,0,0,0,2,224,0,0, + // 0x0123 ģ + 20,41,205,25,2,246,0,0,6,128,0,0,0,31,128,0,0,0,63,64,0,0,0,127,0,0,0,0,255,0,0,0,1,254,0,0,0,2,253,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,0,169,0,255,255,224,253,3,255,255,249,253,15,255,171,255,253,31,248,0,63,253,63,240,0,15,253,127,208,0,7,253,191,192,0,3,253,191,128,0,3,253,255,128,0,2,253,255,64,0,2,253,255,64,0,2,253,255,64,0,2,253,255,128,0,2,253,191,192,0,3,253,127,192,0,3,253,63,208,0,7,253,63,240,0,15,253,15,253,0,191,253,11,255,255,254,253,2,255,255,242,253,0,127,255,130,253,0,1,80,2,253,0,0,0,3,253,0,0,0,3,253,0,0,0,7,252,0,0,0,15,252,30,64,0,127,244,31,255,255,255,224,31,255,255,255,128,11,255,255,253,0,0,22,169,64,0, + // 0x0124 Ĥ + 22,38,228,30,4,0,0,0,106,144,0,0,0,0,255,240,0,0,0,3,255,252,0,0,0,11,250,254,0,0,0,47,224,191,128,0,0,191,64,31,208,0,0,248,0,2,240,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,10,160,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,234,170,170,191,240,255,255,255,255,255,240,255,255,255,255,255,240,255,255,255,255,255,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240,255,0,0,0,15,240, + // 0x0125 ĥ + 24,40,240,25,254,0,0,42,160,0,0,0,0,191,248,0,0,0,1,255,253,0,0,0,7,253,255,0,0,0,15,240,63,192,0,0,63,192,15,240,0,0,189,0,2,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,64,0,0,0,0,47,224,0,0,0,0,47,224,0,0,0,0,47,224,0,0,0,0,47,224,0,0,0,0,47,224,0,0,0,0,47,224,0,0,0,0,47,224,0,0,0,0,47,224,0,0,0,0,47,224,27,249,0,0,47,210,255,255,208,0,47,219,255,255,244,0,47,255,234,191,252,0,47,254,0,11,253,0,47,252,0,3,254,0,47,244,0,1,255,0,47,240,0,1,255,0,47,240,0,0,255,0,47,224,0,0,255,0,47,224,0,0,255,0,47,224,0,0,255,0,47,224,0,0,255,0,47,224,0,0,255,0,47,224,0,0,255,0,47,224,0,0,255,0,47,224,0,0,255,0,47,224,0,0,255,0,47,224,0,0,255,0,47,224,0,0,255,0,47,224,0,0,255,0,47,224,0,0,255, + // 0x0126 Ħ + 30,29,232,30,0,0,0,170,0,0,0,10,160,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,1,255,0,0,0,31,240,0,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,240,1,255,0,0,0,31,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,0,255,234,170,170,191,240,0,0,255,255,255,255,255,240,0,0,255,255,255,255,255,240,0,0,255,255,255,255,255,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0,0,255,0,0,0,15,240,0, + // 0x0127 ħ + 22,31,186,25,0,0,1,84,0,0,0,0,2,254,0,0,0,0,2,254,0,0,0,0,2,254,0,0,0,0,191,255,255,253,0,0,191,255,255,253,0,0,191,255,255,253,0,0,2,254,0,0,0,0,2,254,0,0,0,0,2,254,0,0,0,0,2,254,2,255,224,0,2,253,47,255,254,0,2,253,255,255,255,128,2,255,254,155,255,192,2,255,224,0,191,224,2,255,192,0,63,240,2,255,64,0,31,240,2,255,0,0,31,240,2,255,0,0,15,240,2,254,0,0,15,240,2,254,0,0,15,240,2,254,0,0,15,240,2,254,0,0,15,240,2,254,0,0,15,240,2,254,0,0,15,240,2,254,0,0,15,240,2,254,0,0,15,240,2,254,0,0,15,240,2,254,0,0,15,240,2,254,0,0,15,240,2,254,0,0,15,240, + // 0x0128 Ĩ + 16,37,148,14,255,0,0,164,0,25,11,255,64,61,31,255,249,252,63,175,255,248,61,1,255,240,120,0,26,64,0,0,0,0,0,0,0,0,6,170,170,144,7,255,255,224,7,255,255,224,0,191,254,64,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,31,248,0,7,255,255,208,7,255,255,224,7,255,255,224, + // 0x0129 ĩ + 15,30,120,11,254,0,1,144,0,104,31,254,0,188,63,255,230,248,191,191,255,240,248,7,255,208,240,0,106,0,0,0,0,0,0,0,0,0,0,26,144,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0, + // 0x012a Ī + 12,35,105,14,1,0,85,85,85,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,106,170,169,127,255,254,127,255,254,11,255,228,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,1,255,128,127,255,253,127,255,254,127,255,254, + // 0x012b ī + 13,28,112,11,255,0,85,85,85,0,191,255,255,128,191,255,255,128,191,255,255,64,0,0,0,0,0,0,0,0,0,106,64,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0, + // 0x012c Ĭ + 14,37,148,14,0,0,124,0,3,224,125,0,7,208,63,234,191,192,31,255,255,64,7,255,253,0,0,106,144,0,0,0,0,0,0,0,0,0,26,170,170,64,31,255,255,128,31,255,255,128,2,255,249,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,127,224,0,31,255,255,64,31,255,255,128,31,255,255,128, + // 0x012d ĭ + 13,30,120,11,255,0,244,0,11,192,252,0,15,192,191,170,255,64,63,255,254,0,15,255,248,0,1,170,64,0,0,0,0,0,0,0,0,0,0,106,64,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0, + // 0x012e Į + 12,39,117,14,1,246,106,170,169,127,255,254,127,255,254,11,255,228,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,1,255,128,127,255,253,127,255,254,127,255,254,0,3,240,0,15,192,0,47,64,0,63,0,0,127,0,0,127,0,0,127,237,0,63,254,0,11,253,0,0,0, + // 0x012f į + 8,40,80,11,1,246,2,160,11,248,15,252,15,248,7,240,0,0,0,0,0,0,6,164,11,248,11,248,11,248,11,248,11,248,11,248,11,248,11,248,11,248,11,248,11,248,11,248,11,248,11,248,11,248,11,248,11,248,11,248,11,248,11,248,11,248,7,240,15,192,63,0,126,0,190,0,191,0,127,237,63,253,11,252,0,0, + // 0x0130 İ + 12,37,111,14,1,0,0,41,0,0,255,64,0,255,64,0,255,64,0,190,0,0,0,0,0,0,0,0,0,0,106,170,169,127,255,254,127,255,254,11,255,228,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,1,255,128,127,255,253,127,255,254,127,255,254, + // 0x0131 ı + 5,22,44,11,3,0,106,64,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128, + // 0x0132 IJ + 21,37,222,26,1,248,106,170,169,0,42,128,127,255,254,0,63,192,127,255,254,0,63,192,11,255,228,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,0,255,0,0,63,192,1,255,128,0,63,192,127,255,253,0,63,192,127,255,254,0,63,192,127,255,254,0,63,192,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,255,128,0,0,0,3,255,64,0,0,15,255,255,0,0,0,15,255,252,0,0,0,15,255,240,0,0,0,6,250,64,0, + // 0x0133 ij + 16,40,160,22,3,246,42,0,0,164,191,128,3,253,255,192,3,254,255,128,3,254,127,0,1,252,0,0,0,0,0,0,0,0,0,0,0,0,106,64,1,168,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,191,128,3,253,0,0,3,253,0,0,3,253,0,0,3,253,0,0,3,253,0,0,3,253,0,0,11,252,0,31,255,248,0,31,255,240,0,31,255,192,0,5,164,0, + // 0x0134 Ĵ + 16,46,184,12,253,248,0,6,168,0,0,31,255,0,0,63,255,128,0,255,127,208,2,253,15,244,11,244,2,253,31,128,0,126,0,0,0,0,0,0,0,0,0,2,168,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,7,252,0,0,11,252,0,0,15,248,0,0,63,240,0,255,255,224,0,255,255,192,0,255,254,0,0,111,160,0,0, + // 0x0135 ĵ + 16,41,164,11,253,246,0,10,168,0,0,47,253,0,0,127,255,64,1,255,127,192,3,252,31,240,15,224,3,252,47,64,0,189,0,0,0,0,0,0,0,0,0,6,164,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,11,248,0,0,15,244,0,0,47,240,0,127,255,240,0,127,255,192,0,127,255,64,0,22,148,0,0, + // 0x0136 Ķ + 21,38,228,25,4,247,170,0,0,0,170,64,255,0,0,3,255,0,255,0,0,15,252,0,255,0,0,47,244,0,255,0,0,127,208,0,255,0,1,255,128,0,255,0,3,254,0,0,255,0,15,252,0,0,255,0,63,240,0,0,255,0,255,192,0,0,255,2,255,0,0,0,255,11,253,0,0,0,255,31,244,0,0,0,255,127,244,0,0,0,255,255,252,0,0,0,255,255,255,0,0,0,255,242,255,128,0,0,255,192,255,208,0,0,255,0,63,240,0,0,255,0,31,248,0,0,255,0,15,253,0,0,255,0,3,255,0,0,255,0,1,255,128,0,255,0,0,191,208,0,255,0,0,63,240,0,255,0,0,15,252,0,255,0,0,11,254,0,255,0,0,3,255,0,255,0,0,0,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,0,0,255,0,0,0,0,1,254,0,0,0,0,2,252,0,0,0,0,3,244,0,0,0,0,3,240,0,0,0,0,7,192,0,0,0, + // 0x0137 ķ + 19,40,200,22,3,247,85,0,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,0,0,191,128,0,26,160,191,128,0,127,224,191,128,1,255,128,191,128,3,254,0,191,128,15,248,0,191,128,63,240,0,191,128,255,192,0,191,67,255,0,0,191,79,252,0,0,191,111,240,0,0,191,191,244,0,0,191,255,252,0,0,191,255,255,0,0,191,224,255,128,0,191,128,127,208,0,191,128,47,244,0,191,128,15,252,0,191,128,3,254,0,191,128,1,255,64,191,128,0,191,208,191,128,0,63,240,191,128,0,31,248,0,0,0,0,0,0,0,0,0,0,0,2,168,0,0,0,7,248,0,0,0,7,244,0,0,0,11,240,0,0,0,15,208,0,0,0,31,128,0,0,0,31,0,0,0, + // 0x0138 ĸ + 19,22,110,22,3,0,106,64,0,26,160,191,128,0,127,224,191,128,0,255,128,191,128,3,255,0,191,128,15,252,0,191,128,47,240,0,191,128,191,208,0,191,129,255,64,0,191,131,254,0,0,191,143,248,0,0,191,191,248,0,0,191,255,253,0,0,191,255,255,0,0,191,244,255,192,0,191,192,127,224,0,191,128,47,244,0,191,128,15,252,0,191,128,3,255,0,191,128,1,255,128,191,128,0,191,208,191,128,0,63,240,191,128,0,15,248, + // 0x0139 Ĺ + 18,38,190,21,3,0,0,106,144,0,0,0,255,192,0,0,2,255,0,0,0,7,252,0,0,0,15,240,0,0,0,63,192,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,128,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,192,0,0,0,63,250,170,170,128,63,255,255,255,208,63,255,255,255,208,63,255,255,255,208, + // 0x013a ĺ + 9,40,120,11,3,0,0,170,128,2,255,64,3,254,0,15,248,0,47,224,0,127,64,0,189,0,0,0,0,0,0,0,0,85,0,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0, + // 0x013b Ļ + 17,38,190,21,4,247,170,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,234,170,170,0,255,255,255,255,64,255,255,255,255,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,2,164,0,0,0,7,248,0,0,0,11,240,0,0,0,15,224,0,0,0,15,192,0,0,0,31,128,0,0,0,47,0,0,0, + // 0x013c ļ + 6,40,80,11,2,247,21,64,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,0,0,0,0,10,160,15,240,15,224,31,192,63,128,63,0,125,0, + // 0x013d Ľ + 17,29,145,21,4,0,170,0,0,106,64,255,0,0,191,64,255,0,0,255,0,255,0,0,254,0,255,0,0,252,0,255,0,1,244,0,255,0,2,240,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,234,170,170,0,255,255,255,255,64,255,255,255,255,64,255,255,255,255,64, + // 0x013e ľ + 12,31,93,11,3,0,85,1,84,191,130,253,191,131,252,191,131,244,191,135,240,191,139,208,191,143,192,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0, + // 0x013f Ŀ + 17,29,145,21,4,0,170,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,6,144,0,255,0,15,240,0,255,0,31,244,0,255,0,31,240,0,255,0,11,224,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,234,170,170,0,255,255,255,255,64,255,255,255,255,64,255,255,255,255,64, + // 0x0140 ŀ + 11,31,93,12,3,0,85,0,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,130,144,191,143,244,191,143,248,191,143,248,191,135,240,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0, + // 0x0141 Ł + 21,29,174,21,0,0,0,170,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,192,0,0,0,255,11,224,0,0,0,255,191,240,0,0,0,255,255,208,0,0,0,255,254,0,0,0,2,255,240,0,0,0,31,255,64,0,0,0,127,255,0,0,0,0,63,255,0,0,0,0,30,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,0,0,0,0,0,255,234,170,170,0,0,255,255,255,255,64,0,255,255,255,255,64,0,255,255,255,255,64, + // 0x0142 ł + 11,31,93,11,0,0,1,84,0,3,253,0,3,253,0,3,253,0,3,253,0,3,253,0,3,253,0,3,253,0,3,253,0,3,253,0,3,253,0,3,253,0,3,253,32,3,254,244,3,255,252,3,255,244,7,255,192,47,254,0,255,253,0,255,253,0,59,253,0,3,253,0,3,253,0,3,253,0,3,253,0,3,253,0,3,253,0,3,253,0,3,253,0,3,253,0,3,253,0, + // 0x0143 Ń + 23,38,228,31,4,0,0,0,0,42,160,0,0,0,0,127,224,0,0,0,0,255,128,0,0,0,3,254,0,0,0,0,7,248,0,0,0,0,15,224,0,0,0,0,47,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,128,0,0,1,168,255,224,0,0,3,252,255,244,0,0,3,252,255,252,0,0,3,252,255,254,0,0,3,252,255,255,0,0,3,252,254,255,192,0,3,252,253,127,208,0,3,252,254,63,240,0,3,252,254,15,248,0,3,252,254,11,253,0,3,252,254,3,255,0,3,252,254,1,255,128,3,252,254,0,191,192,3,252,254,0,63,240,3,252,254,0,31,244,3,252,254,0,15,252,2,252,254,0,3,254,2,252,254,0,2,255,66,252,254,0,0,255,194,252,254,0,0,127,226,252,254,0,0,47,242,252,254,0,0,15,254,252,254,0,0,7,255,252,254,0,0,3,255,252,254,0,0,0,255,252,254,0,0,0,191,252,254,0,0,0,63,252,254,0,0,0,31,252, + // 0x0144 ń + 19,31,155,25,3,0,0,0,2,170,0,0,0,7,254,0,0,0,15,248,0,0,0,47,224,0,0,0,127,128,0,0,0,254,0,0,0,2,244,0,0,0,0,0,0,0,0,0,0,0,0,105,0,191,228,0,191,11,255,255,64,191,63,255,255,208,191,255,170,255,240,191,248,0,47,248,191,240,0,15,252,191,208,0,7,252,191,192,0,7,252,191,192,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252, + // 0x0145 Ņ + 23,38,228,31,4,247,170,128,0,0,1,168,255,224,0,0,3,252,255,244,0,0,3,252,255,252,0,0,3,252,255,254,0,0,3,252,255,255,0,0,3,252,254,255,192,0,3,252,253,127,208,0,3,252,254,63,240,0,3,252,254,15,248,0,3,252,254,11,253,0,3,252,254,3,255,0,3,252,254,1,255,128,3,252,254,0,191,192,3,252,254,0,63,240,3,252,254,0,31,244,3,252,254,0,15,252,2,252,254,0,3,254,2,252,254,0,2,255,66,252,254,0,0,255,194,252,254,0,0,127,226,252,254,0,0,47,242,252,254,0,0,15,254,252,254,0,0,7,255,252,254,0,0,3,255,252,254,0,0,0,255,252,254,0,0,0,191,252,254,0,0,0,63,252,254,0,0,0,31,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,160,0,0,0,0,15,240,0,0,0,0,15,224,0,0,0,0,31,192,0,0,0,0,47,128,0,0,0,0,63,0,0,0,0,0,61,0,0,0, + // 0x0146 ņ + 19,31,155,25,3,247,105,0,191,228,0,191,11,255,255,64,191,63,255,255,208,191,255,170,255,240,191,248,0,47,248,191,240,0,15,252,191,208,0,7,252,191,192,0,7,252,191,192,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,0,0,0,0,0,0,0,0,0,0,0,0,106,0,0,0,0,255,0,0,0,0,254,0,0,0,1,252,0,0,0,2,248,0,0,0,3,240,0,0,0,3,208,0,0, + // 0x0147 Ň + 23,38,228,31,4,0,0,105,0,1,164,0,0,63,128,11,240,0,0,31,240,63,208,0,0,7,253,255,64,0,0,1,255,253,0,0,0,0,191,248,0,0,0,0,47,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,128,0,0,1,168,255,224,0,0,3,252,255,244,0,0,3,252,255,252,0,0,3,252,255,254,0,0,3,252,255,255,0,0,3,252,254,255,192,0,3,252,253,127,208,0,3,252,254,63,240,0,3,252,254,15,248,0,3,252,254,11,253,0,3,252,254,3,255,0,3,252,254,1,255,128,3,252,254,0,191,192,3,252,254,0,63,240,3,252,254,0,31,244,3,252,254,0,15,252,2,252,254,0,3,254,2,252,254,0,2,255,66,252,254,0,0,255,194,252,254,0,0,127,226,252,254,0,0,47,242,252,254,0,0,15,254,252,254,0,0,7,255,252,254,0,0,3,255,252,254,0,0,0,255,252,254,0,0,0,191,252,254,0,0,0,63,252,254,0,0,0,31,252, + // 0x0148 ň + 19,31,155,25,3,0,6,144,0,26,128,3,248,0,191,64,0,255,3,253,0,0,127,223,244,0,0,31,255,208,0,0,11,255,128,0,0,2,254,0,0,0,0,0,0,0,0,0,0,0,0,105,0,191,228,0,191,11,255,255,64,191,63,255,255,208,191,255,170,255,240,191,248,0,47,248,191,240,0,15,252,191,208,0,7,252,191,192,0,7,252,191,192,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252, + // 0x0149 ʼn + 26,29,203,28,0,0,10,164,0,0,0,0,0,15,244,0,0,0,0,0,31,240,0,0,0,0,0,47,240,0,0,0,0,0,47,208,0,0,0,0,0,63,192,0,0,0,0,0,63,128,0,0,0,0,0,127,66,160,6,255,128,0,191,7,240,127,255,248,0,253,7,245,255,255,255,0,0,7,255,254,175,255,64,0,7,255,192,1,255,192,0,7,255,0,0,191,192,0,7,254,0,0,63,192,0,7,253,0,0,63,208,0,7,252,0,0,63,208,0,7,252,0,0,63,208,0,7,252,0,0,63,208,0,7,252,0,0,63,208,0,7,252,0,0,63,208,0,7,252,0,0,63,208,0,7,252,0,0,63,208,0,7,252,0,0,63,208,0,7,252,0,0,63,208,0,7,252,0,0,63,208,0,7,252,0,0,63,208,0,7,252,0,0,63,208,0,7,252,0,0,63,208,0,7,252,0,0,63,208, + // 0x014a Ŋ + 23,37,222,31,4,248,170,128,0,0,1,168,255,224,0,0,3,252,255,244,0,0,3,252,255,252,0,0,3,252,255,254,0,0,3,252,255,255,64,0,3,252,254,255,192,0,3,252,254,127,240,0,3,252,254,47,244,0,3,252,254,15,252,0,3,252,254,7,255,0,3,252,254,2,255,64,3,252,254,0,255,192,3,252,254,0,127,240,3,252,254,0,47,244,3,252,254,0,15,252,2,252,254,0,3,255,2,252,254,0,2,255,130,252,254,0,0,255,194,252,254,0,0,63,242,252,254,0,0,31,250,252,254,0,0,15,254,252,254,0,0,3,255,252,254,0,0,1,255,252,254,0,0,0,191,252,254,0,0,0,63,252,254,0,0,0,31,252,254,0,0,0,11,252,254,0,0,0,3,252,0,0,0,0,2,252,0,0,0,0,3,252,0,0,0,0,7,252,0,0,0,0,31,248,0,0,0,255,255,240,0,0,0,255,255,208,0,0,0,255,255,64,0,0,0,111,228,0, + // 0x014b ŋ + 19,32,160,25,3,246,105,0,191,228,0,191,11,255,255,64,191,47,255,255,224,191,255,234,255,240,191,248,0,47,248,191,240,0,15,252,191,208,0,7,252,191,192,0,7,252,191,192,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,191,128,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,7,252,0,0,0,7,252,0,0,0,15,248,0,0,15,255,244,0,0,15,255,224,0,0,15,255,128,0,0,5,164,0, + // 0x014c Ō + 27,36,252,31,2,255,0,0,85,85,85,0,0,0,1,255,255,255,0,0,0,1,255,255,255,0,0,0,1,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x014d ō + 21,29,174,24,2,255,0,85,85,85,0,0,0,255,255,255,64,0,0,255,255,255,64,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x014e Ŏ + 27,38,10,31,2,255,0,3,224,0,31,64,0,0,2,240,0,63,0,0,0,1,254,170,254,0,0,0,0,191,255,252,0,0,0,0,47,255,240,0,0,0,0,2,170,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x014f ŏ + 21,31,186,24,2,255,1,240,0,15,128,0,0,248,0,31,128,0,0,255,170,255,0,0,0,127,255,253,0,0,0,31,255,244,0,0,0,1,170,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x0150 Ő + 27,39,17,31,2,255,0,0,26,160,42,128,0,0,0,63,224,191,192,0,0,0,191,128,255,0,0,0,0,255,3,252,0,0,0,2,252,7,240,0,0,0,7,240,15,192,0,0,0,11,128,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x0151 ő + 21,32,192,24,2,255,0,10,164,42,160,0,0,31,240,63,208,0,0,63,208,255,64,0,0,191,65,254,0,0,1,253,3,248,0,0,3,244,11,224,0,0,7,208,15,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x0152 Œ + 34,30,14,38,2,255,0,0,107,255,170,170,170,170,128,0,7,255,255,255,255,255,255,208,0,47,255,255,255,255,255,255,208,0,255,255,239,255,255,255,255,208,2,255,224,0,47,240,0,0,0,7,255,0,0,31,240,0,0,0,15,252,0,0,31,240,0,0,0,31,244,0,0,31,240,0,0,0,47,240,0,0,31,240,0,0,0,63,224,0,0,31,240,0,0,0,63,208,0,0,31,240,0,0,0,127,192,0,0,31,240,0,0,0,127,192,0,0,31,250,170,170,64,191,192,0,0,31,255,255,255,128,191,192,0,0,31,255,255,255,128,191,192,0,0,31,255,255,255,64,191,192,0,0,31,240,0,0,0,127,192,0,0,31,240,0,0,0,127,208,0,0,31,240,0,0,0,63,208,0,0,31,240,0,0,0,63,240,0,0,31,240,0,0,0,47,244,0,0,31,240,0,0,0,15,252,0,0,31,240,0,0,0,11,254,0,0,31,240,0,0,0,3,255,128,0,31,240,0,0,0,1,255,253,85,191,250,170,170,128,0,127,255,255,255,255,255,255,208,0,11,255,255,255,255,255,255,208,0,1,191,255,255,255,255,255,208,0,0,1,85,0,0,0,0,0, + // 0x0153 œ + 34,23,207,38,2,255,0,6,255,144,0,10,254,64,0,0,127,255,252,0,191,255,244,0,2,255,255,255,67,255,255,254,0,11,255,171,255,223,254,91,255,64,31,248,0,47,255,240,0,191,192,63,240,0,15,255,192,0,63,208,127,192,0,3,255,128,0,31,240,191,192,0,3,255,0,0,15,240,191,128,0,2,255,0,0,15,240,255,128,0,2,255,255,255,255,240,255,64,0,1,255,255,255,255,240,255,64,0,1,255,255,255,255,240,255,64,0,1,255,0,0,0,0,255,128,0,2,255,0,0,0,0,191,192,0,2,255,0,0,0,0,127,192,0,3,255,128,0,0,0,63,224,0,7,255,192,0,0,0,47,244,0,15,255,240,0,0,64,15,254,64,191,255,254,0,27,192,3,255,255,255,199,255,255,255,192,0,255,255,254,0,255,255,255,192,0,31,255,244,0,31,255,254,0,0,0,85,0,0,0,85,64,0, + // 0x0154 Ŕ + 21,38,228,25,4,0,0,0,6,169,0,0,0,0,15,252,0,0,0,0,63,240,0,0,0,0,191,192,0,0,0,0,255,0,0,0,0,3,248,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,148,0,0,0,255,255,255,228,0,0,255,255,255,254,0,0,255,255,255,255,192,0,255,0,22,255,224,0,255,0,0,127,240,0,255,0,0,31,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,47,240,0,255,0,0,127,224,0,255,64,23,255,192,0,255,255,255,255,0,0,255,255,255,248,0,0,255,255,255,192,0,0,255,149,127,224,0,0,255,0,31,244,0,0,255,0,11,252,0,0,255,0,3,254,0,0,255,0,2,255,0,0,255,0,0,255,192,0,255,0,0,127,208,0,255,0,0,47,240,0,255,0,0,15,248,0,255,0,0,11,253,0,255,0,0,3,255,0,255,0,0,1,255,128, + // 0x0155 ŕ + 14,31,124,17,3,0,0,0,106,144,0,0,255,192,0,3,255,0,0,11,252,0,0,15,240,0,0,63,128,0,0,126,0,0,0,0,0,0,0,0,0,0,105,0,127,192,191,3,255,192,191,15,255,192,191,63,255,192,191,255,64,0,191,248,0,0,191,240,0,0,191,192,0,0,191,192,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0,191,128,0,0, + // 0x0156 Ŗ + 21,38,228,25,4,247,170,170,148,0,0,0,255,255,255,228,0,0,255,255,255,254,0,0,255,255,255,255,192,0,255,0,22,255,224,0,255,0,0,127,240,0,255,0,0,31,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,47,240,0,255,0,0,127,224,0,255,64,23,255,192,0,255,255,255,255,0,0,255,255,255,248,0,0,255,255,255,192,0,0,255,149,127,224,0,0,255,0,31,244,0,0,255,0,11,252,0,0,255,0,3,254,0,0,255,0,2,255,0,0,255,0,0,255,192,0,255,0,0,127,208,0,255,0,0,47,240,0,255,0,0,15,248,0,255,0,0,11,253,0,255,0,0,3,255,0,255,0,0,1,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,0,0,0,0,0,255,0,0,0,0,0,254,0,0,0,0,1,252,0,0,0,0,2,248,0,0,0,0,3,240,0,0,0,0,3,208,0,0,0, + // 0x0157 ŗ + 14,31,124,17,2,247,26,64,31,240,47,192,255,240,47,195,255,240,47,207,255,240,47,255,208,0,47,254,0,0,47,252,0,0,47,240,0,0,47,240,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,0,0,0,0,0,0,0,0,10,160,0,0,15,240,0,0,31,224,0,0,47,192,0,0,63,64,0,0,63,0,0,0,124,0,0,0, + // 0x0158 Ř + 21,38,228,25,4,0,26,64,0,42,0,0,15,240,1,253,0,0,3,252,11,244,0,0,0,255,127,224,0,0,0,127,255,128,0,0,0,31,255,0,0,0,0,11,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,148,0,0,0,255,255,255,228,0,0,255,255,255,254,0,0,255,255,255,255,192,0,255,0,22,255,224,0,255,0,0,127,240,0,255,0,0,31,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,15,244,0,255,0,0,47,240,0,255,0,0,127,224,0,255,64,23,255,192,0,255,255,255,255,0,0,255,255,255,248,0,0,255,255,255,192,0,0,255,149,127,224,0,0,255,0,31,244,0,0,255,0,11,252,0,0,255,0,3,254,0,0,255,0,2,255,0,0,255,0,0,255,192,0,255,0,0,127,208,0,255,0,0,47,240,0,255,0,0,15,248,0,255,0,0,11,253,0,255,0,0,3,255,0,255,0,0,1,255,128, + // 0x0159 ř + 15,31,124,17,2,0,105,0,0,168,63,192,7,244,15,240,47,208,3,253,255,128,1,255,254,0,0,127,252,0,0,47,240,0,0,0,0,0,0,0,0,0,26,64,31,240,47,192,255,240,47,195,255,240,47,207,255,240,47,255,208,0,47,254,0,0,47,252,0,0,47,240,0,0,47,240,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0, + // 0x015a Ś + 18,39,195,22,2,255,0,0,2,170,0,0,0,11,253,0,0,0,15,244,0,0,0,63,208,0,0,0,191,64,0,0,1,253,0,0,0,2,244,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,164,0,1,255,255,255,128,11,255,255,255,208,31,255,255,255,192,63,244,0,27,128,127,208,0,0,0,191,192,0,0,0,191,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,240,0,0,0,47,253,0,0,0,15,255,224,0,0,3,255,254,0,0,0,191,255,224,0,0,11,255,253,0,0,0,127,255,64,0,0,7,255,192,0,0,0,191,224,0,0,0,47,240,0,0,0,31,240,0,0,0,15,240,0,0,0,15,240,0,0,0,47,240,224,0,0,127,224,255,165,91,255,192,255,255,255,255,0,255,255,255,252,0,47,255,255,144,0,0,21,80,0,0, + // 0x015b ś + 16,32,128,19,2,255,0,0,42,160,0,0,127,224,0,0,255,192,0,2,255,0,0,7,248,0,0,15,224,0,0,31,64,0,0,0,0,0,0,0,0,0,0,111,254,64,11,255,255,248,63,255,255,252,191,249,91,244,255,128,0,96,255,0,0,0,255,64,0,0,255,208,0,0,127,253,0,0,47,255,208,0,7,255,254,0,0,191,255,208,0,7,255,244,0,0,127,252,0,0,7,253,0,0,2,254,0,0,2,254,64,0,3,253,249,0,11,252,255,255,255,248,255,255,255,224,111,255,254,0,0,85,64,0, + // 0x015c Ŝ + 18,39,195,22,2,255,0,2,170,0,0,0,11,255,64,0,0,47,255,192,0,0,127,223,240,0,0,255,7,252,0,3,248,0,255,0,11,208,0,47,64,0,0,0,0,0,0,0,0,0,0,0,27,255,164,0,1,255,255,255,128,11,255,255,255,208,31,255,255,255,192,63,244,0,27,128,127,208,0,0,0,191,192,0,0,0,191,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,240,0,0,0,47,253,0,0,0,15,255,224,0,0,3,255,254,0,0,0,191,255,224,0,0,11,255,253,0,0,0,127,255,64,0,0,7,255,192,0,0,0,191,224,0,0,0,47,240,0,0,0,31,240,0,0,0,15,240,0,0,0,15,240,0,0,0,47,240,224,0,0,127,224,255,165,91,255,192,255,255,255,255,0,255,255,255,252,0,47,255,255,144,0,0,21,80,0,0, + // 0x015d ŝ + 16,32,128,19,2,255,0,42,160,0,0,127,248,0,0,255,254,0,3,253,255,64,15,244,63,208,63,192,11,240,126,0,1,248,0,0,0,0,0,0,0,0,0,111,254,64,11,255,255,248,63,255,255,252,191,249,91,244,255,128,0,96,255,0,0,0,255,64,0,0,255,208,0,0,127,253,0,0,47,255,208,0,7,255,254,0,0,191,255,208,0,7,255,244,0,0,127,252,0,0,7,253,0,0,2,254,0,0,2,254,64,0,3,253,249,0,11,252,255,255,255,248,255,255,255,224,111,255,254,0,0,85,64,0, + // 0x015e Ş + 18,39,195,22,2,246,0,27,255,164,0,1,255,255,255,128,11,255,255,255,208,31,255,255,255,192,63,244,0,27,128,127,208,0,0,0,191,192,0,0,0,191,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,240,0,0,0,47,253,0,0,0,15,255,224,0,0,3,255,254,0,0,0,191,255,224,0,0,11,255,253,0,0,0,127,255,64,0,0,7,255,192,0,0,0,191,224,0,0,0,47,240,0,0,0,31,240,0,0,0,15,240,0,0,0,15,240,0,0,0,47,240,224,0,0,127,224,255,165,91,255,192,255,255,255,255,0,255,255,255,252,0,47,255,255,144,0,0,23,240,0,0,0,7,208,0,0,0,15,248,0,0,0,7,255,0,0,0,0,127,64,0,0,0,63,128,0,0,0,127,64,0,0,191,255,0,0,0,191,252,0,0,0,106,64,0,0, + // 0x015f ş + 16,32,128,19,2,246,0,111,254,64,11,255,255,248,63,255,255,252,191,249,91,244,255,128,0,96,255,0,0,0,255,64,0,0,255,208,0,0,127,253,0,0,47,255,208,0,7,255,254,0,0,191,255,208,0,7,255,244,0,0,127,252,0,0,7,253,0,0,2,254,0,0,2,254,64,0,3,253,249,0,11,252,255,255,255,248,255,255,255,224,111,255,254,0,0,95,208,0,0,15,128,0,0,47,224,0,0,27,252,0,0,0,254,0,0,0,191,0,0,0,254,0,1,255,253,0,1,255,244,0,0,169,64,0, + // 0x0160 Š + 18,39,195,22,2,255,10,144,0,26,64,7,248,0,191,0,1,254,3,252,0,0,127,223,240,0,0,47,255,208,0,0,15,255,64,0,0,3,254,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,164,0,1,255,255,255,128,11,255,255,255,208,31,255,255,255,192,63,244,0,27,128,127,208,0,0,0,191,192,0,0,0,191,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,240,0,0,0,47,253,0,0,0,15,255,224,0,0,3,255,254,0,0,0,191,255,224,0,0,11,255,253,0,0,0,127,255,64,0,0,7,255,192,0,0,0,191,224,0,0,0,47,240,0,0,0,31,240,0,0,0,15,240,0,0,0,15,240,0,0,0,47,240,224,0,0,127,224,255,165,91,255,192,255,255,255,255,0,255,255,255,252,0,47,255,255,144,0,0,21,80,0,0, + // 0x0161 š + 16,32,128,19,2,255,105,0,0,168,63,192,11,244,15,240,47,208,3,253,255,128,1,255,254,0,0,127,252,0,0,47,240,0,0,0,0,0,0,0,0,0,0,111,254,64,11,255,255,248,63,255,255,252,191,249,91,244,255,128,0,96,255,0,0,0,255,64,0,0,255,208,0,0,127,253,0,0,47,255,208,0,7,255,254,0,0,191,255,208,0,7,255,244,0,0,127,252,0,0,7,253,0,0,2,254,0,0,2,254,64,0,3,253,249,0,11,252,255,255,255,248,255,255,255,224,111,255,254,0,0,85,64,0, + // 0x0162 Ţ + 22,39,234,23,0,246,106,170,170,170,170,160,127,255,255,255,255,240,127,255,255,255,255,240,127,255,255,255,255,240,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,15,128,0,0,0,0,47,64,0,0,0,0,63,224,0,0,0,0,31,252,0,0,0,0,1,253,0,0,0,0,0,253,0,0,0,0,1,253,0,0,0,2,255,252,0,0,0,2,255,240,0,0,0,1,169,0,0,0, + // 0x0163 ţ + 15,37,148,15,0,246,0,21,0,0,0,63,0,0,0,127,0,0,0,191,0,0,0,255,0,0,2,255,170,160,47,255,255,240,127,255,255,240,43,255,170,160,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,0,255,0,0,0,255,64,0,0,255,208,16,0,191,255,244,0,63,255,244,0,11,255,240,0,1,249,0,0,3,240,0,0,7,253,0,0,6,255,128,0,0,47,192,0,0,31,192,0,0,47,192,0,63,255,128,0,63,254,0,0,26,144,0, + // 0x0164 Ť + 22,38,228,23,0,0,0,168,0,2,164,0,0,127,64,15,240,0,0,31,224,63,192,0,0,11,249,255,0,0,0,2,255,252,0,0,0,0,255,244,0,0,0,0,63,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,170,170,170,170,160,127,255,255,255,255,240,127,255,255,255,255,240,127,255,255,255,255,240,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0, + // 0x0165 ť + 20,32,160,15,0,255,0,0,0,0,85,0,0,0,0,255,0,0,0,1,253,0,0,0,2,252,0,21,0,3,244,0,63,0,3,240,0,127,0,7,208,0,191,0,0,0,0,255,0,0,0,2,255,170,160,0,47,255,255,240,0,127,255,255,240,0,43,255,170,160,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,0,255,0,0,0,0,255,64,0,0,0,255,208,16,0,0,191,255,244,0,0,63,255,244,0,0,11,255,240,0,0,0,21,0,0, + // 0x0166 Ŧ + 22,29,174,23,0,0,106,170,170,170,170,160,127,255,255,255,255,240,127,255,255,255,255,240,127,255,255,255,255,240,0,0,63,224,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,2,255,255,255,252,0,2,255,255,255,252,0,2,255,255,255,252,0,0,85,127,229,84,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0,0,0,63,208,0,0, + // 0x0167 ŧ + 15,28,112,15,0,255,0,21,0,0,0,63,0,0,0,127,0,0,0,191,0,0,0,255,0,0,2,255,170,160,47,255,255,240,127,255,255,240,43,255,170,160,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,47,255,255,224,63,255,255,224,63,255,255,224,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,1,255,0,0,0,255,0,0,0,255,64,0,0,255,208,16,0,191,255,244,0,63,255,244,0,11,255,240,0,0,21,0, + // 0x0168 Ũ + 23,38,228,30,3,255,0,1,164,0,40,0,0,15,255,64,124,0,0,63,255,246,252,0,0,63,175,255,244,0,0,188,2,255,224,0,0,180,0,42,64,0,0,0,0,0,0,0,0,0,0,0,0,0,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,248,0,0,11,255,255,144,0,0,0,21,80,0,0, + // 0x0169 ũ + 19,31,155,25,3,255,0,25,0,2,128,0,255,224,11,192,3,255,254,111,128,7,250,255,255,0,15,192,47,253,0,11,64,2,160,0,0,0,0,0,0,0,0,0,0,0,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,2,252,0,5,80,0,0, + // 0x016a Ū + 23,36,216,30,3,255,0,5,85,85,80,0,0,31,255,255,240,0,0,31,255,255,240,0,0,31,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,248,0,0,11,255,255,144,0,0,0,21,80,0,0, + // 0x016b ū + 19,29,145,25,3,255,0,85,85,85,0,2,255,255,254,0,2,255,255,254,0,1,255,255,254,0,0,0,0,0,0,0,0,0,0,0,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,2,252,0,5,80,0,0, + // 0x016c Ŭ + 23,38,228,30,3,255,0,62,0,0,244,0,0,47,0,2,240,0,0,31,234,175,224,0,0,11,255,255,192,0,0,2,255,255,0,0,0,0,42,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,248,0,0,11,255,255,144,0,0,0,21,80,0,0, + // 0x016d ŭ + 19,31,155,25,3,255,3,224,0,31,0,3,240,0,63,0,1,254,170,254,0,0,255,255,252,0,0,63,255,224,0,0,6,170,0,0,0,0,0,0,0,0,0,0,0,0,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,2,252,0,5,80,0,0, + // 0x016e Ů + 23,41,246,30,3,255,0,0,31,224,0,0,0,0,191,253,0,0,0,1,249,127,0,0,0,2,240,31,0,0,0,2,224,15,64,0,0,2,240,31,0,0,0,1,253,191,0,0,0,0,191,252,0,0,0,0,26,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,248,0,0,11,255,255,144,0,0,0,21,80,0,0, + // 0x016f ů + 19,34,170,25,3,255,0,2,254,0,0,0,15,255,192,0,0,47,155,224,0,0,62,2,240,0,0,61,1,240,0,0,62,2,240,0,0,47,155,224,0,0,15,255,192,0,0,1,169,0,0,0,0,0,0,0,0,0,0,0,0,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,2,252,0,5,80,0,0, + // 0x0170 Ű + 23,39,234,30,3,255,0,1,170,2,168,0,0,3,254,11,252,0,0,7,252,15,240,0,0,15,240,63,192,0,0,47,192,127,0,0,0,127,0,252,0,0,0,184,1,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,248,0,0,11,255,255,144,0,0,0,21,80,0,0, + // 0x0171 ű + 19,32,160,25,3,255,0,26,160,42,128,0,63,208,255,128,0,191,129,255,0,0,254,3,252,0,3,248,11,240,0,11,224,31,192,0,15,128,46,0,0,0,0,0,0,0,0,0,0,0,0,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,2,252,0,5,80,0,0, + // 0x0172 Ų + 23,39,234,30,3,246,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,252,0,0,11,255,255,240,0,0,0,21,91,208,0,0,0,0,31,128,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,127,0,0,0,0,0,127,0,0,0,0,0,63,238,0,0,0,0,47,254,0,0,0,0,7,253,0,0,0,0,0,0,0, + // 0x0173 ų + 19,32,160,25,3,246,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,3,252,0,5,80,11,224,0,0,0,31,128,0,0,0,63,0,0,0,0,189,0,0,0,0,253,0,0,0,0,254,0,0,0,0,255,236,0,0,0,127,252,0,0,0,31,252,0,0,0,0,0, + // 0x0174 Ŵ + 37,38,124,38,0,0,0,0,0,0,106,128,0,0,0,0,0,0,0,1,255,240,0,0,0,0,0,0,0,3,255,248,0,0,0,0,0,0,0,15,247,253,0,0,0,0,0,0,0,47,208,255,64,0,0,0,0,0,0,191,64,47,208,0,0,0,0,0,1,248,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,0,106,128,0,0,42,128,127,192,0,0,191,192,0,0,127,192,63,208,0,0,255,208,0,0,191,128,63,224,0,1,255,240,0,0,255,64,47,240,0,2,255,240,0,0,255,0,31,240,0,3,255,244,0,1,255,0,15,244,0,3,251,248,0,2,254,0,15,248,0,7,247,252,0,3,253,0,11,252,0,11,242,252,0,3,252,0,7,252,0,15,241,254,0,7,252,0,3,253,0,31,224,255,0,11,248,0,3,254,0,47,208,255,0,15,244,0,2,255,0,63,192,191,64,15,240,0,1,255,0,63,192,127,128,31,240,0,0,255,64,127,128,63,192,47,224,0,0,191,128,191,0,47,192,63,208,0,0,127,192,255,0,31,224,63,192,0,0,63,193,254,0,15,240,127,192,0,0,63,194,253,0,15,240,191,128,0,0,47,211,252,0,11,244,255,64,0,0,31,227,252,0,7,248,255,0,0,0,15,243,248,0,3,252,254,0,0,0,15,247,240,0,2,253,253,0,0,0,11,255,240,0,1,254,252,0,0,0,7,255,224,0,0,255,252,0,0,0,3,255,208,0,0,255,248,0,0,0,3,255,192,0,0,191,244,0,0,0,2,255,192,0,0,127,240,0,0,0,1,255,128,0,0,63,240,0,0, + // 0x0175 ŵ + 32,31,248,32,0,0,0,0,0,10,164,0,0,0,0,0,0,63,252,0,0,0,0,0,0,191,255,0,0,0,0,0,2,254,191,192,0,0,0,0,7,248,31,224,0,0,0,0,31,224,7,248,0,0,0,0,62,0,0,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,10,164,0,1,169,127,192,0,31,252,0,2,254,63,208,0,63,252,0,3,253,47,224,0,63,253,0,7,252,31,240,0,127,254,0,11,248,15,240,0,191,191,0,15,244,15,244,0,254,127,0,15,240,11,248,1,253,63,128,31,240,7,252,2,252,63,192,47,224,3,252,3,252,47,192,63,208,3,253,3,248,31,208,63,192,1,254,7,240,15,224,127,128,0,255,11,240,15,240,191,64,0,255,15,224,7,240,255,0,0,191,79,208,3,244,255,0,0,127,95,192,3,249,254,0,0,63,175,128,2,253,253,0,0,63,255,64,1,254,252,0,0,47,255,0,0,255,252,0,0,31,255,0,0,255,244,0,0,15,254,0,0,127,240,0,0,11,253,0,0,63,240,0, + // 0x0176 Ŷ + 23,38,228,23,0,0,0,0,42,160,0,0,0,0,127,248,0,0,0,1,255,253,0,0,0,3,253,255,64,0,0,15,240,63,208,0,0,63,192,11,240,0,0,126,0,1,248,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,0,6,168,127,192,0,0,15,248,63,240,0,0,31,240,31,244,0,0,63,224,15,252,0,0,127,192,7,253,0,0,255,128,2,255,0,1,255,0,0,255,64,3,253,0,0,191,192,11,252,0,0,63,208,15,244,0,0,47,240,47,240,0,0,15,244,63,208,0,0,7,252,191,128,0,0,3,254,255,0,0,0,1,255,254,0,0,0,0,255,252,0,0,0,0,127,248,0,0,0,0,63,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0, + // 0x0177 ŷ + 21,41,246,21,0,246,0,0,170,128,0,0,0,2,255,224,0,0,0,7,255,244,0,0,0,15,247,253,0,0,0,63,192,255,0,0,0,255,0,63,192,0,2,248,0,11,224,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,0,106,128,191,192,0,0,255,128,63,208,0,0,255,64,47,224,0,2,255,0,31,240,0,3,254,0,15,244,0,3,252,0,11,252,0,11,252,0,3,252,0,15,244,0,2,254,0,31,240,0,1,255,0,47,224,0,0,255,64,63,208,0,0,191,128,127,192,0,0,63,192,191,128,0,0,47,208,255,0,0,0,31,225,255,0,0,0,15,242,253,0,0,0,11,243,252,0,0,0,3,251,248,0,0,0,2,255,244,0,0,0,1,255,240,0,0,0,0,255,224,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,255,64,0,0,0,1,255,0,0,0,0,3,254,0,0,0,0,7,252,0,0,0,0,47,248,0,0,0,127,255,240,0,0,0,127,255,192,0,0,0,127,254,0,0,0,0,26,144,0,0,0,0, + // 0x0178 Ÿ + 23,37,222,23,0,0,0,1,64,1,0,0,0,15,224,31,208,0,0,15,240,47,224,0,0,15,240,31,208,0,0,7,128,11,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,0,6,168,127,192,0,0,15,248,63,240,0,0,31,240,31,244,0,0,63,224,15,252,0,0,127,192,7,253,0,0,255,128,2,255,0,1,255,0,0,255,64,3,253,0,0,191,192,11,252,0,0,63,208,15,244,0,0,47,240,47,240,0,0,15,244,63,208,0,0,7,252,191,128,0,0,3,254,255,0,0,0,1,255,254,0,0,0,0,255,252,0,0,0,0,127,248,0,0,0,0,63,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0, + // 0x0179 Ź + 21,38,228,23,1,0,0,0,0,170,128,0,0,0,1,255,128,0,0,0,3,254,0,0,0,0,11,248,0,0,0,0,31,224,0,0,0,0,63,128,0,0,0,0,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,170,170,170,170,0,63,255,255,255,255,0,63,255,255,255,255,0,63,255,255,255,255,0,0,0,0,7,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,224,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,208,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,253,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,208,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,253,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,250,170,170,170,64,191,255,255,255,255,128,191,255,255,255,255,128,191,255,255,255,255,128, + // 0x017a ź + 17,31,155,19,1,0,0,0,10,168,0,0,0,31,248,0,0,0,63,224,0,0,0,255,128,0,0,2,254,0,0,0,7,248,0,0,0,11,208,0,0,0,0,0,0,0,0,0,0,0,0,42,170,170,170,0,63,255,255,255,0,63,255,255,255,0,42,170,171,255,0,0,0,3,253,0,0,0,11,252,0,0,0,31,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,192,0,0,0,255,64,0,0,3,254,0,0,0,11,252,0,0,0,31,240,0,0,0,63,229,85,85,0,191,255,255,255,128,191,255,255,255,128,191,255,255,255,128, + // 0x017b Ż + 21,37,222,23,1,0,0,0,26,0,0,0,0,0,127,192,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,63,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,170,170,170,170,0,63,255,255,255,255,0,63,255,255,255,255,0,63,255,255,255,255,0,0,0,0,7,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,224,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,208,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,253,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,208,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,253,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,250,170,170,170,64,191,255,255,255,255,128,191,255,255,255,255,128,191,255,255,255,255,128, + // 0x017c ż + 17,30,150,19,1,0,0,2,160,0,0,0,11,248,0,0,0,15,252,0,0,0,11,252,0,0,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,170,170,170,0,63,255,255,255,0,63,255,255,255,0,42,170,171,255,0,0,0,3,253,0,0,0,11,252,0,0,0,31,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,192,0,0,0,255,64,0,0,3,254,0,0,0,11,252,0,0,0,31,240,0,0,0,63,229,85,85,0,191,255,255,255,128,191,255,255,255,128,191,255,255,255,128, + // 0x017d Ž + 21,38,228,23,1,0,1,164,0,6,160,0,0,254,0,47,208,0,0,63,192,191,64,0,0,15,247,253,0,0,0,7,255,248,0,0,0,2,255,240,0,0,0,0,191,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,170,170,170,170,0,63,255,255,255,255,0,63,255,255,255,255,0,63,255,255,255,255,0,0,0,0,7,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,224,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,254,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,208,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,253,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,208,0,0,0,0,255,192,0,0,0,2,255,0,0,0,0,7,253,0,0,0,0,15,252,0,0,0,0,47,240,0,0,0,0,127,250,170,170,170,64,191,255,255,255,255,128,191,255,255,255,255,128,191,255,255,255,255,128, + // 0x017e ž + 17,31,155,19,1,0,26,64,0,105,0,15,224,2,252,0,7,252,15,244,0,1,255,127,208,0,0,127,255,64,0,0,47,254,0,0,0,11,248,0,0,0,0,0,0,0,0,0,0,0,0,42,170,170,170,0,63,255,255,255,0,63,255,255,255,0,42,170,171,255,0,0,0,3,253,0,0,0,11,252,0,0,0,31,240,0,0,0,63,208,0,0,0,255,128,0,0,2,255,0,0,0,7,252,0,0,0,15,244,0,0,0,47,240,0,0,0,127,192,0,0,0,255,64,0,0,3,254,0,0,0,11,252,0,0,0,31,240,0,0,0,63,229,85,85,0,191,255,255,255,128,191,255,255,255,128,191,255,255,255,128, + // 0x017f ſ + 12,31,93,14,3,0,0,26,148,2,255,255,15,255,254,63,255,252,63,224,4,127,192,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0,191,128,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Simplified_Chinese_29.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Simplified_Chinese_29.cpp new file mode 100644 index 0000000000..9d035f2454 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Simplified_Chinese_29.cpp @@ -0,0 +1,778 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Simplified Chinese 40pt, capital 'A' height: 29px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 +extern const uint8_t NotoSans_Medium_Simplified_Chinese_29[41075] = { + 162,29,28,32,26,255,38,246, // unifont_t + // 0x201c “ + 28,32,15,11,44,15,0,18,0,168,0,164,2,248,2,248,3,248,3,244,7,244,11,240,15,240,15,240,15,240,31,224,31,224,47,224,63,208,63,208,63,208,127,192,127,192,191,192,0,0,0,0, + // 0x201d ” + 29,32,15,11,44,15,0,18,6,164,6,164,11,252,15,248,15,248,15,244,15,240,15,240,31,240,31,240,31,208,47,208,47,192,63,192,63,128,63,128,63,64,127,0,127,0,191,0,0,0,0,0, + // 0x22bf ⊿ + 191,34,31,32,0,40,4,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,184,0,0,0,0,0,0,2,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,47,248,0,0,0,0,0,0,191,248,0,0,0,0,0,2,255,248,0,0,0,0,0,11,255,248,0,0,0,0,0,47,242,248,0,0,0,0,0,191,194,248,0,0,0,0,2,255,2,248,0,0,0,0,11,252,2,248,0,0,0,0,47,240,2,248,0,0,0,0,191,192,2,248,0,0,0,1,255,0,2,248,0,0,0,7,252,0,2,248,0,0,0,31,240,0,2,248,0,0,0,127,192,0,2,248,0,0,1,255,64,0,2,248,0,0,7,253,0,0,2,248,0,0,31,244,0,0,2,248,0,0,127,208,0,0,2,248,0,1,255,64,0,0,2,248,0,7,253,0,0,0,2,248,0,31,244,0,0,0,2,248,0,127,208,0,0,0,2,248,1,255,64,0,0,0,2,248,3,254,85,85,85,85,87,248,15,255,255,255,255,255,255,248,63,255,255,255,255,255,255,248,255,255,255,255,255,255,255,248, + // 0x4e00 一 + 0,78,37,4,40,40,2,13,255,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,255,64, + // 0x4e09 三 + 9,78,34,31,23,40,3,255,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,128,0,0,127,255,255,255,255,255,192,0,0,127,255,255,255,255,255,192,0,0,127,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,170,170,170,170,170,170,160,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x4e0a 上 + 10,78,36,35,59,40,2,254,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,255,255,255,255,192,0,0,0,7,255,255,255,255,192,0,0,0,7,255,255,255,255,192,0,0,0,7,254,170,170,170,128,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,254, + // 0x4e0b 下 + 11,78,36,35,59,40,2,252,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,254,128,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,3,255,255,64,0,0,0,0,0,3,255,255,240,0,0,0,0,0,3,253,255,254,0,0,0,0,0,3,252,47,255,208,0,0,0,0,3,252,3,255,252,0,0,0,0,3,252,0,127,255,64,0,0,0,3,252,0,11,255,208,0,0,0,3,252,0,1,255,192,0,0,0,3,252,0,0,63,0,0,0,0,3,252,0,0,9,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,2,168,0,0,0,0, + // 0x4e0d 不 + 13,78,36,35,59,40,2,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,0,0,47,240,0,0,0,0,0,0,0,127,224,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,2,255,64,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,31,255,0,0,0,0,0,0,0,63,255,10,0,0,0,0,0,0,255,255,47,192,0,0,0,0,3,255,255,191,244,0,0,0,0,15,254,255,47,254,0,0,0,0,63,248,255,7,255,192,0,0,1,255,240,255,0,255,244,0,0,11,255,192,255,0,47,253,0,0,47,254,0,255,0,11,255,128,1,255,248,0,255,0,1,255,240,15,255,208,0,255,0,0,127,252,191,255,0,0,255,0,0,15,255,191,248,0,0,255,0,0,3,255,63,208,0,0,255,0,0,0,248,14,0,0,0,255,0,0,0,32,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0, + // 0x4e13 专 + 19,78,35,38,86,40,2,252,0,0,0,11,160,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,31,224,0,0,0,0,0,170,170,191,234,170,170,170,0,1,255,255,255,255,255,255,255,64,1,255,255,255,255,255,255,255,64,1,255,255,255,255,255,255,255,64,0,0,0,191,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,2,253,0,0,0,0,0,106,170,171,254,170,170,170,170,168,191,255,255,255,255,255,255,255,252,191,255,255,255,255,255,255,255,252,191,255,255,255,255,255,255,255,252,0,0,15,240,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,255,255,255,255,252,0,0,0,191,255,255,255,255,255,64,0,0,255,255,255,255,255,254,0,0,0,85,85,85,85,127,252,0,0,0,0,0,0,0,127,240,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,7,255,0,0,0,0,4,0,0,31,252,0,0,0,0,31,208,0,127,240,0,0,0,0,63,255,129,255,192,0,0,0,0,127,255,255,255,0,0,0,0,0,1,255,255,252,0,0,0,0,0,0,11,255,255,64,0,0,0,0,0,0,111,255,244,0,0,0,0,0,0,2,255,255,64,0,0,0,0,0,0,31,255,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,24,0,0, + // 0x4e1d 丝 + 29,78,36,36,68,40,2,254,0,0,20,0,0,0,8,0,0,0,0,63,64,0,0,31,128,0,0,0,191,64,0,0,63,192,0,0,0,255,0,0,0,127,128,0,0,1,254,0,0,0,191,0,0,0,3,252,0,0,0,254,0,0,0,7,248,0,0,2,252,0,0,0,15,240,1,0,3,248,0,0,0,31,224,11,208,11,240,1,224,0,63,192,15,240,31,224,3,252,0,127,64,63,224,63,192,11,248,0,255,0,127,192,127,64,31,240,2,252,0,255,0,254,0,63,208,7,244,2,254,3,252,0,191,128,47,255,255,252,15,255,255,255,0,31,255,255,244,15,255,255,252,0,15,255,255,224,11,255,255,244,0,10,149,127,192,7,149,47,224,0,0,0,255,0,0,0,63,192,0,0,2,253,0,0,0,255,0,0,0,11,248,0,0,3,253,0,0,0,31,224,0,0,11,244,0,0,0,127,192,0,0,47,208,0,0,0,255,0,0,0,191,128,0,0,7,255,255,255,195,255,255,255,248,15,255,255,255,207,255,255,255,248,11,255,255,255,199,255,255,255,248,7,255,169,80,3,255,170,84,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,85,85,85,85,85,85, + // 0x4e2a 个 + 42,78,38,37,114,40,1,252,0,0,0,0,191,192,0,0,0,0,0,0,0,1,255,240,0,0,0,0,0,0,0,3,255,248,0,0,0,0,0,0,0,11,255,253,0,0,0,0,0,0,0,47,246,255,0,0,0,0,0,0,0,191,224,255,192,0,0,0,0,0,1,255,192,63,240,0,0,0,0,0,7,255,0,15,253,0,0,0,0,0,31,252,0,7,255,64,0,0,0,0,191,240,0,0,255,208,0,0,0,2,255,192,0,0,63,248,0,0,0,15,255,0,0,0,15,255,0,0,0,63,252,0,0,0,3,255,208,0,2,255,224,0,63,128,0,191,253,0,31,255,64,0,63,192,0,31,255,192,191,253,0,0,63,192,0,3,255,240,191,224,0,0,63,192,0,0,191,208,47,64,0,0,63,192,0,0,15,128,8,0,0,0,63,192,0,0,1,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,42,128,0,0,0,0, + // 0x4e2d 中 + 45,78,32,38,48,40,4,252,0,0,0,15,224,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,170,170,170,175,250,170,170,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,175,250,170,170,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,191,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,224,0,0,0, + // 0x4e3a 为 + 58,78,34,38,86,40,2,252,0,0,0,10,160,0,0,0,0,0,5,0,15,240,0,0,0,0,0,127,64,15,240,0,0,0,0,0,127,192,15,240,0,0,0,0,0,47,240,15,240,0,0,0,0,0,15,244,15,240,0,0,0,0,0,7,252,15,240,0,0,0,0,0,2,253,15,224,0,0,0,0,0,0,208,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,47,255,255,255,255,255,255,255,240,47,255,255,255,255,255,255,255,240,47,255,255,255,255,255,255,255,240,42,170,170,191,250,170,170,175,240,0,0,0,47,192,0,0,15,240,0,0,0,63,192,0,0,15,240,0,0,0,63,192,0,0,15,240,0,0,0,127,128,0,0,15,240,0,0,0,191,64,128,0,15,240,0,0,0,255,11,224,0,15,224,0,0,1,255,15,244,0,15,224,0,0,2,254,3,252,0,31,224,0,0,3,252,2,255,0,31,224,0,0,11,252,0,255,128,31,208,0,0,15,244,0,63,192,31,208,0,0,47,240,0,47,224,47,208,0,0,127,208,0,15,208,47,208,0,0,255,192,0,5,0,47,192,0,3,255,0,0,0,0,63,192,0,11,253,0,0,0,0,63,192,0,47,248,0,0,0,0,63,192,0,191,240,0,0,0,0,127,192,2,255,192,0,0,0,0,191,128,15,255,0,0,0,0,1,255,64,127,252,0,0,0,191,255,255,0,47,224,0,0,0,63,255,254,0,11,128,0,0,0,63,255,248,0,0,0,0,0,0,26,250,64,0, + // 0x4e3b 主 + 59,78,36,37,77,40,2,253,0,0,0,2,0,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,63,248,0,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,2,255,192,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,0,47,248,0,0,0,0,0,0,0,11,224,0,0,0,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,10,170,170,170,255,170,170,170,160,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,170,170,170,255,170,170,170,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,106,170,170,170,170,170,170,170,170, + // 0x4e49 义 + 73,78,36,37,77,40,2,253,0,0,0,0,144,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,3,252,0,0,36,0,0,0,0,1,253,0,0,63,192,0,25,0,0,255,0,0,191,128,0,255,0,0,191,64,0,255,64,0,191,0,0,63,128,0,255,0,0,127,128,0,63,192,2,254,0,0,63,192,0,31,208,3,252,0,0,31,208,0,13,0,11,248,0,0,15,240,0,0,0,15,240,0,0,11,248,0,0,0,47,224,0,0,3,252,0,0,0,63,192,0,0,1,254,0,0,0,191,128,0,0,0,255,64,0,0,255,0,0,0,0,127,192,0,3,254,0,0,0,0,63,240,0,11,252,0,0,0,0,15,244,0,15,244,0,0,0,0,7,253,0,63,224,0,0,0,0,2,255,0,255,192,0,0,0,0,0,255,195,255,0,0,0,0,0,0,63,251,253,0,0,0,0,0,0,31,255,244,0,0,0,0,0,0,7,255,224,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,31,255,248,0,0,0,0,0,0,127,255,255,0,0,0,0,0,3,255,215,255,208,0,0,0,0,47,255,0,255,252,0,0,0,2,255,248,0,63,255,128,0,0,47,255,208,0,7,255,248,0,6,255,254,0,0,0,191,255,208,191,255,224,0,0,0,31,255,255,255,254,0,0,0,0,1,255,254,127,208,0,0,0,0,0,27,252,40,0,0,0,0,0,0,0,112, + // 0x4e4b 之 + 75,78,37,38,124,40,1,252,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,3,255,255,255,255,255,255,255,224,0,3,255,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,255,248,0,2,170,170,170,170,170,170,191,240,0,0,0,0,0,0,0,0,127,208,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,0,11,253,0,0,0,0,0,0,0,0,47,244,0,0,0,0,0,0,0,0,127,224,0,0,0,0,0,0,0,1,255,128,0,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,0,63,240,0,0,0,0,2,224,0,0,255,192,0,0,0,0,3,252,0,7,255,0,0,0,0,0,11,248,0,31,252,0,0,0,0,0,15,244,0,127,240,0,0,0,0,0,31,248,2,255,192,0,0,0,0,0,63,252,15,255,0,0,0,0,0,0,127,255,127,248,0,0,0,0,0,0,255,255,255,224,0,0,0,0,0,1,255,63,255,64,0,0,0,0,0,3,253,15,255,64,0,0,0,0,0,11,252,3,255,249,0,0,0,0,0,31,244,0,255,255,255,170,170,170,128,63,240,0,31,255,255,255,255,255,192,127,192,0,1,191,255,255,255,255,128,15,128,0,0,5,175,255,255,255,0,1,0,0,0,0,0,0,0,0,0, + // 0x4e86 了 + 134,78,32,35,24,40,4,252,170,170,170,170,170,170,170,208,255,255,255,255,255,255,255,248,255,255,255,255,255,255,255,253,255,255,255,255,255,255,255,248,0,0,0,0,0,0,255,224,0,0,0,0,0,3,255,128,0,0,0,0,0,15,254,0,0,0,0,0,0,63,248,0,0,0,0,0,1,255,224,0,0,0,0,0,11,255,128,0,0,0,0,0,47,253,0,0,0,0,0,15,255,240,0,0,0,0,0,15,255,128,0,0,0,0,0,15,253,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,15,255,255,240,0,0,0,0,7,255,255,224,0,0,0,0,3,255,255,128,0,0,0,0,2,170,164,0,0,0,0, + // 0x4e8c 二 + 140,78,36,28,252,40,2,0,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254, + // 0x4e8e 于 + 142,78,36,35,59,40,2,252,3,255,255,255,255,255,255,255,192,3,255,255,255,255,255,255,255,192,3,255,255,255,255,255,255,255,192,2,170,170,170,255,234,170,170,128,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,106,170,170,170,255,234,170,170,169,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,255,64,0,0,0,0,0,191,255,255,0,0,0,0,0,0,63,255,255,0,0,0,0,0,0,63,255,252,0,0,0,0,0,0,31,254,144,0,0,0,0, + // 0x4ea4 交 + 164,78,36,38,86,40,2,252,0,0,0,0,170,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,106,170,170,170,255,170,170,170,169,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0,0,0,15,64,0,0,248,0,0,0,0,63,240,0,7,255,0,0,0,0,255,208,0,3,255,208,0,0,3,255,64,0,0,191,248,0,0,15,254,0,0,0,31,254,0,0,127,248,0,0,0,3,255,192,2,255,224,0,0,0,0,255,240,31,255,66,192,0,3,224,63,252,191,253,31,224,0,11,252,11,254,47,240,15,240,0,15,244,3,248,11,128,11,248,0,31,240,0,208,0,0,3,252,0,63,208,0,0,0,0,2,255,0,191,192,0,0,0,0,0,255,130,255,64,0,0,0,0,0,127,215,254,0,0,0,0,0,0,47,255,252,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,11,255,224,0,0,0,0,0,0,127,255,253,0,0,0,0,0,7,255,255,255,208,0,0,0,0,127,255,130,255,253,0,0,0,27,255,253,0,127,255,228,0,6,255,255,224,0,11,255,255,144,255,255,254,0,0,0,255,255,255,191,255,208,0,0,0,11,255,253,63,248,0,0,0,0,0,111,252,30,0,0,0,0,0,0,0,96, + // 0x4eae 亮 + 174,78,36,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,250,170,170,170,175,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,10,170,170,170,170,170,160,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,0,0,0,0,0,0,0,252,63,0,1,80,0,0,0,0,252,63,0,7,244,0,191,64,0,252,63,0,11,244,0,191,64,0,252,63,0,11,240,0,191,64,0,252,0,0,15,240,0,191,64,0,0,0,0,31,240,0,191,64,0,0,0,0,47,208,0,191,64,0,0,0,0,127,192,0,191,64,0,184,0,1,255,128,0,191,64,0,191,0,15,255,0,0,191,64,0,254,2,255,252,0,0,191,128,1,254,255,255,224,0,0,127,255,255,253,191,255,64,0,0,63,255,255,252,63,224,0,0,0,31,255,255,240,20,0,0,0,0,0,21,84,0, + // 0x4ece 从 + 206,78,38,36,104,40,1,252,0,0,63,192,0,1,254,0,0,0,0,0,63,192,0,1,254,0,0,0,0,0,63,192,0,1,254,0,0,0,0,0,63,192,0,2,253,0,0,0,0,0,63,192,0,2,253,0,0,0,0,0,63,192,0,2,253,0,0,0,0,0,127,192,0,2,253,0,0,0,0,0,127,128,0,2,253,0,0,0,0,0,127,128,0,3,253,0,0,0,0,0,191,64,0,3,254,0,0,0,0,0,191,64,0,3,255,0,0,0,0,0,255,64,0,3,255,0,0,0,0,0,255,0,0,7,255,0,0,0,0,0,255,0,0,7,255,64,0,0,0,0,255,0,0,11,255,64,0,0,0,1,255,192,0,15,255,192,0,0,0,1,255,240,0,15,255,192,0,0,0,2,255,248,0,31,255,208,0,0,0,3,255,253,0,47,255,224,0,0,0,3,255,255,64,63,223,240,0,0,0,7,252,255,192,63,203,240,0,0,0,11,248,127,224,191,135,248,0,0,0,15,244,47,240,255,67,252,0,0,0,15,240,15,250,255,3,253,0,0,0,47,240,7,243,254,1,255,0,0,0,63,208,2,199,252,0,255,64,0,0,127,192,0,15,248,0,191,192,0,0,255,128,0,63,240,0,63,224,0,1,255,64,0,191,224,0,47,248,0,3,255,0,1,255,192,0,15,253,0,11,253,0,7,255,64,0,7,255,64,47,252,0,31,254,0,0,2,255,208,127,240,0,63,248,0,0,0,255,128,31,208,0,11,224,0,0,0,63,0,3,192,0,1,192,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0, + // 0x4ee4 令 + 228,78,37,38,124,40,2,252,0,0,0,1,254,0,0,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,0,15,255,208,0,0,0,0,0,0,0,47,255,244,0,0,0,0,0,0,0,191,219,252,0,0,0,0,0,0,2,255,131,255,64,0,0,0,0,0,11,254,0,255,208,0,0,0,0,0,47,252,0,63,244,0,0,0,0,0,191,240,0,15,253,0,0,0,0,2,255,192,0,3,255,128,0,0,0,15,254,0,0,0,191,244,0,0,0,127,248,0,0,0,47,254,0,0,2,255,255,255,255,255,255,255,208,0,31,255,95,255,255,255,245,255,248,0,255,252,31,255,255,255,244,63,255,64,255,224,5,85,85,85,80,11,255,0,127,64,0,0,0,0,0,1,253,0,40,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,255,255,254,0,0,2,255,255,255,255,255,255,254,0,0,2,255,255,255,255,255,255,254,0,0,1,85,85,127,213,85,85,254,0,0,0,0,0,47,192,0,0,254,0,0,0,0,0,47,192,0,0,254,0,0,0,0,0,47,192,0,0,254,0,0,0,0,0,47,192,0,0,254,0,0,0,0,0,47,192,0,0,254,0,0,0,0,0,47,192,0,0,254,0,0,0,0,0,47,192,0,0,254,0,0,0,0,0,47,192,10,170,254,0,0,0,0,0,47,192,11,255,253,0,0,0,0,0,47,192,3,255,252,0,0,0,0,0,47,192,3,255,144,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0, + // 0x4ee5 以 + 229,78,38,35,94,40,1,252,0,47,192,0,0,0,0,47,144,0,0,63,192,0,0,0,0,63,208,0,0,63,192,0,0,0,0,63,192,0,0,63,192,2,208,0,0,63,192,0,0,63,192,31,240,0,0,63,192,0,0,47,192,11,252,0,0,127,192,0,0,47,192,3,254,0,0,127,128,0,0,47,192,1,255,64,0,191,64,0,0,47,192,0,191,192,0,255,64,0,0,47,208,0,63,224,0,255,0,0,0,47,208,0,31,240,0,255,0,0,0,47,208,0,15,248,1,254,0,0,0,31,208,0,7,248,2,253,0,0,0,31,208,0,3,128,3,252,0,0,0,31,208,0,0,0,7,252,0,0,0,31,208,0,0,0,11,248,0,0,0,31,208,0,0,0,15,240,0,0,0,31,224,0,0,0,47,240,0,0,0,31,224,0,0,0,63,208,0,0,0,31,224,0,0,0,127,192,0,0,0,15,224,7,192,0,255,128,0,0,0,15,224,191,192,2,255,192,0,0,0,15,251,255,208,7,255,240,0,0,0,15,255,255,128,15,255,252,0,0,0,111,255,248,0,63,251,255,0,0,7,255,255,128,0,255,210,255,128,0,127,255,244,0,3,255,128,255,224,0,63,254,64,0,31,255,0,63,248,0,63,224,0,0,191,252,0,15,253,0,29,0,0,7,255,224,0,3,255,0,0,0,0,191,255,128,0,1,255,192,0,0,7,255,252,0,0,0,191,224,0,0,2,255,224,0,0,0,63,128,0,0,0,190,0,0,0,0,14,0,0,0,0,32,0,0,0,0,0,0, + // 0x4ef6 件 + 246,78,37,38,124,40,1,252,0,0,20,0,0,1,80,0,0,0,0,0,63,128,0,3,248,0,0,0,0,0,127,64,144,3,248,0,0,0,0,0,255,0,254,3,248,0,0,0,0,1,254,1,253,3,248,0,0,0,0,2,253,2,252,3,248,0,0,0,0,7,252,3,252,3,248,0,0,0,0,15,244,3,248,3,248,0,0,0,0,31,240,7,254,171,254,170,168,0,0,63,208,11,255,255,255,255,253,0,0,191,192,15,255,255,255,255,253,0,0,255,192,31,255,255,255,255,253,0,3,255,192,63,192,3,248,0,0,0,11,255,192,127,128,3,248,0,0,0,31,255,192,255,0,3,248,0,0,0,63,255,193,254,0,3,248,0,0,0,191,239,192,188,0,3,248,0,0,0,63,111,192,24,0,3,248,0,0,0,30,47,192,0,0,3,248,0,0,0,12,47,192,0,0,3,248,0,0,0,0,47,192,170,170,171,254,170,170,128,0,47,192,255,255,255,255,255,255,192,0,47,192,255,255,255,255,255,255,192,0,47,192,255,255,255,255,255,255,192,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,31,128,0,0,3,244,0,0,0, + // 0x4efd 份 + 253,78,38,38,124,40,1,252,0,0,36,0,0,0,0,0,0,0,0,0,127,128,3,255,255,244,0,0,0,0,191,0,3,255,255,248,0,0,0,0,254,0,3,255,255,252,0,0,0,2,253,0,65,85,87,252,0,0,0,3,252,0,254,0,1,253,0,0,0,11,244,1,254,0,0,254,0,0,0,15,240,2,252,0,0,255,0,0,0,47,208,3,248,0,0,127,128,0,0,127,192,11,244,0,0,63,192,0,0,255,128,15,240,0,0,47,224,0,2,255,128,31,208,0,0,15,240,0,3,255,128,63,192,0,0,11,252,0,15,255,128,191,64,0,0,3,254,0,63,255,129,254,0,0,0,2,255,64,191,255,131,252,0,0,0,0,255,224,255,191,143,249,85,85,85,85,191,208,191,63,143,235,255,255,255,255,223,64,60,63,131,203,255,255,255,255,198,0,20,63,128,11,255,255,255,255,192,0,0,63,128,0,2,252,0,63,192,0,0,63,128,0,3,252,0,63,192,0,0,63,128,0,3,248,0,63,192,0,0,63,128,0,3,244,0,63,128,0,0,63,128,0,7,244,0,63,128,0,0,63,128,0,11,240,0,63,128,0,0,63,128,0,15,240,0,63,128,0,0,63,128,0,15,224,0,63,128,0,0,63,128,0,47,192,0,63,128,0,0,63,128,0,63,192,0,127,64,0,0,63,128,0,191,64,0,127,64,0,0,63,128,1,255,0,0,191,64,0,0,63,128,7,252,0,0,191,0,0,0,63,128,47,244,0,0,255,0,0,0,63,128,255,224,3,255,255,0,0,0,63,129,255,128,1,255,253,0,0,0,63,128,125,0,0,255,248,0,0,0,47,128,32,0,0,106,64,0,0, + // 0x4f11 休 + 17,79,38,38,124,40,1,252,0,0,4,0,0,0,0,0,0,0,0,0,15,224,0,11,240,0,0,0,0,0,47,224,0,11,240,0,0,0,0,0,63,192,0,11,240,0,0,0,0,0,127,192,0,11,240,0,0,0,0,0,255,64,0,11,240,0,0,0,0,1,255,0,0,11,240,0,0,0,0,3,253,0,0,11,240,0,0,0,0,11,252,0,0,11,240,0,0,0,0,31,244,0,0,11,240,0,0,0,0,63,241,170,170,175,250,170,170,128,0,191,241,255,255,255,255,255,255,192,1,255,241,255,255,255,255,255,255,192,7,255,241,255,255,255,255,255,255,192,31,255,240,0,0,191,255,0,0,0,127,255,240,0,0,255,255,128,0,0,255,239,240,0,2,255,255,192,0,0,127,143,240,0,3,255,255,208,0,0,63,15,240,0,7,255,251,240,0,0,28,15,240,0,15,255,247,244,0,0,0,15,240,0,47,219,243,252,0,0,0,15,240,0,63,203,241,254,0,0,0,15,240,0,191,75,240,255,0,0,0,15,240,1,255,11,240,127,192,0,0,15,240,3,253,11,240,63,224,0,0,15,240,15,248,11,240,15,244,0,0,15,240,47,240,11,240,11,252,0,0,15,240,127,208,11,240,3,255,0,0,15,242,255,128,11,240,1,255,192,0,15,251,255,0,11,240,0,191,240,0,15,251,252,0,11,240,0,47,208,0,15,242,240,0,11,240,0,15,64,0,15,240,128,0,11,240,0,1,0,0,15,240,0,0,11,240,0,0,0,0,15,240,0,0,11,240,0,0,0,0,15,240,0,0,11,240,0,0,0,0,15,240,0,0,11,240,0,0,0,0,10,160,0,0,11,240,0,0,0, + // 0x4f20 传 + 32,79,37,38,124,40,1,252,0,0,20,0,0,21,0,0,0,0,0,0,63,128,0,63,192,0,0,0,0,0,191,64,0,63,192,0,0,0,0,0,255,0,0,127,128,0,0,0,0,1,253,21,85,191,149,85,84,0,0,3,252,63,255,255,255,255,252,0,0,7,248,63,255,255,255,255,252,0,0,15,240,63,255,255,255,255,252,0,0,47,224,0,2,252,0,0,0,0,0,63,192,0,3,252,0,0,0,0,0,255,192,0,3,252,0,0,0,0,1,255,192,0,7,248,0,0,0,0,3,255,193,85,91,249,85,85,85,64,15,255,195,255,255,255,255,255,255,192,47,255,195,255,255,255,255,255,255,192,191,255,195,255,255,255,255,255,255,192,255,191,192,0,47,192,0,0,0,0,127,63,192,0,63,192,0,0,0,0,60,63,192,0,127,128,0,0,0,0,16,63,192,0,191,64,0,0,0,0,0,63,192,0,255,255,255,255,224,0,0,63,192,1,255,255,255,255,252,0,0,63,192,2,255,255,255,255,244,0,0,63,192,1,85,85,85,191,224,0,0,63,192,0,0,0,0,255,128,0,0,63,192,0,0,0,3,255,0,0,0,63,192,0,0,0,11,252,0,0,0,63,192,0,1,128,47,240,0,0,0,63,192,0,11,244,191,192,0,0,0,63,192,0,31,255,255,64,0,0,0,63,192,0,3,255,253,0,0,0,0,63,192,0,0,127,252,0,0,0,0,63,192,0,0,15,255,0,0,0,0,63,192,0,0,3,255,192,0,0,0,63,192,0,0,0,191,240,0,0,0,63,192,0,0,0,31,240,0,0,0,63,192,0,0,0,7,208,0,0,0,47,128,0,0,0,1,64,0,0, + // 0x4f4d 位 + 77,79,38,38,124,40,1,252,0,0,4,0,0,1,80,0,0,0,0,0,47,192,0,11,240,0,0,0,0,0,63,192,0,11,240,0,0,0,0,0,191,64,0,11,240,0,0,0,0,0,255,0,0,11,240,0,0,0,0,2,254,0,0,11,240,0,0,0,0,3,252,0,0,11,240,0,0,0,0,11,244,0,0,11,240,0,0,0,0,31,240,191,255,255,255,255,255,128,0,63,208,191,255,255,255,255,255,128,0,191,208,191,255,255,255,255,255,128,1,255,208,106,170,170,170,170,170,64,3,255,208,0,0,0,0,0,0,0,15,255,208,0,0,0,0,0,0,0,63,255,208,0,188,0,0,47,208,0,191,239,208,1,253,0,0,63,192,0,255,207,208,0,253,0,0,63,192,0,127,15,208,0,254,0,0,63,128,0,60,15,208,0,191,0,0,127,64,0,20,15,208,0,127,0,0,191,64,0,0,15,208,0,63,64,0,255,0,0,0,15,208,0,63,128,0,255,0,0,0,15,208,0,63,192,1,254,0,0,0,15,208,0,47,192,2,253,0,0,0,15,208,0,47,192,3,252,0,0,0,15,208,0,31,208,3,248,0,0,0,15,208,0,31,208,7,244,0,0,0,15,208,0,15,224,11,240,0,0,0,15,208,0,15,224,15,240,0,0,0,15,208,0,15,240,15,224,0,0,0,15,208,0,15,144,31,208,0,0,0,15,208,0,0,0,47,192,0,0,0,15,208,170,170,170,191,234,170,144,0,15,209,255,255,255,255,255,255,224,0,15,209,255,255,255,255,255,255,224,0,15,209,255,255,255,255,255,255,224,0,15,208,0,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0, + // 0x4f4e 低 + 78,79,38,38,124,40,1,252,0,0,36,0,0,0,0,0,0,0,0,0,127,64,0,0,0,0,64,0,0,0,191,0,0,0,0,111,240,0,0,0,255,0,0,1,175,255,248,0,0,2,253,25,26,255,255,255,248,0,0,3,252,31,255,255,255,249,0,0,0,11,244,31,255,255,255,0,0,0,0,15,240,31,250,80,191,0,0,0,0,47,208,31,192,0,191,0,0,0,0,127,192,31,192,0,191,0,0,0,0,255,128,31,192,0,127,64,0,0,2,255,128,31,192,0,127,64,0,0,7,255,128,31,192,0,127,64,0,0,15,255,128,31,192,0,127,64,0,0,63,255,128,31,255,255,255,255,255,208,255,255,128,31,255,255,255,255,255,208,255,127,128,31,255,255,255,255,255,208,126,63,128,31,229,85,127,213,85,64,60,63,128,31,192,0,47,192,0,0,16,63,128,31,192,0,47,192,0,0,0,63,128,31,192,0,31,192,0,0,0,63,128,31,192,0,31,208,0,0,0,63,128,31,192,0,15,224,0,0,0,63,128,31,192,0,15,240,0,0,0,63,128,31,192,0,11,240,0,0,0,63,128,31,192,0,71,244,0,0,0,63,128,31,209,175,227,248,0,0,0,63,128,47,255,255,227,252,2,0,0,63,131,255,255,255,226,252,3,224,0,63,130,255,255,250,65,254,3,240,0,63,130,255,228,0,0,255,3,240,0,63,128,144,0,0,0,127,135,224,0,63,128,0,0,0,0,63,255,224,0,63,128,21,85,85,85,31,255,192,0,63,128,255,255,255,255,135,255,128,0,63,128,255,255,255,255,129,190,0,0,63,128,255,255,255,255,128,0,0,0,63,128,0,0,0,0,0,0,0, + // 0x4f53 体 + 83,79,38,38,124,40,1,252,0,0,80,0,0,10,144,0,0,0,0,0,254,0,0,15,224,0,0,0,0,0,254,0,0,15,224,0,0,0,0,2,253,0,0,15,224,0,0,0,0,3,252,0,0,15,224,0,0,0,0,7,248,0,0,15,224,0,0,0,0,15,240,0,0,15,224,0,0,0,0,31,224,0,0,15,224,0,0,0,0,63,211,255,255,255,255,255,255,192,0,127,195,255,255,255,255,255,255,192,0,255,131,255,255,255,255,255,255,192,2,255,129,170,170,255,255,170,170,128,3,255,128,0,1,255,255,0,0,0,15,255,128,0,3,255,255,64,0,0,47,255,128,0,3,255,255,192,0,0,127,255,128,0,11,239,239,208,0,0,191,191,128,0,15,223,235,224,0,0,63,63,128,0,47,207,227,240,0,0,29,63,128,0,63,79,227,252,0,0,4,63,128,0,191,15,225,253,0,0,0,63,128,0,253,15,224,255,0,0,0,63,128,3,252,15,224,127,64,0,0,63,128,7,244,15,224,63,192,0,0,63,128,15,240,15,224,31,240,0,0,63,128,63,208,15,224,15,248,0,0,63,128,191,128,15,224,3,253,0,0,63,130,255,0,15,224,2,255,0,0,63,135,253,255,255,255,254,255,192,0,63,159,248,255,255,255,253,63,224,0,63,135,224,255,255,255,253,31,128,0,63,130,192,85,95,229,84,6,0,0,63,128,0,0,15,224,0,0,0,0,63,128,0,0,15,224,0,0,0,0,63,128,0,0,15,224,0,0,0,0,63,128,0,0,15,224,0,0,0,0,63,128,0,0,15,224,0,0,0,0,63,128,0,0,15,224,0,0,0,0,42,128,0,0,10,144,0,0,0, + // 0x4f59 余 + 89,79,38,39,134,40,1,251,0,0,0,0,106,128,0,0,0,0,0,0,0,0,255,224,0,0,0,0,0,0,0,3,255,248,0,0,0,0,0,0,0,15,255,253,0,0,0,0,0,0,0,63,246,255,64,0,0,0,0,0,0,255,208,255,224,0,0,0,0,0,3,255,128,63,248,0,0,0,0,0,31,254,0,15,255,0,0,0,0,0,191,248,0,2,255,208,0,0,0,3,255,208,0,0,191,248,0,0,0,31,255,64,0,0,31,255,64,0,1,255,252,0,0,0,3,255,244,0,11,255,245,85,85,85,85,255,255,64,127,254,191,255,255,255,255,223,255,208,47,244,127,255,255,255,255,194,255,128,15,128,127,255,255,255,255,192,47,0,0,0,0,0,63,192,0,0,1,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,1,170,170,170,191,234,170,170,168,0,3,255,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,255,252,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,36,0,63,192,7,64,0,0,0,0,255,64,63,192,47,224,0,0,0,2,255,0,63,192,47,248,0,0,0,11,252,0,63,192,11,255,0,0,0,47,244,0,63,192,2,255,192,0,0,191,208,0,63,192,0,127,240,0,3,255,64,0,63,192,0,31,252,0,47,253,0,0,63,192,0,7,255,0,63,244,2,170,191,192,0,1,255,64,11,192,2,255,255,128,0,0,188,0,1,0,0,255,255,0,0,0,16,0,0,0,0,255,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x4f5c 作 + 92,79,38,38,124,40,1,252,0,0,4,0,0,0,0,0,0,0,0,0,47,192,1,248,0,0,0,0,0,0,63,192,3,252,0,0,0,0,0,0,127,128,3,248,0,0,0,0,0,0,255,64,11,244,0,0,0,0,0,0,255,0,15,240,0,0,0,0,0,3,253,0,31,224,0,0,0,0,0,7,252,0,63,255,255,255,255,208,0,15,244,0,127,255,255,255,255,208,0,31,240,0,255,255,255,255,255,208,0,63,224,2,254,175,250,170,170,128,0,191,224,3,252,15,224,0,0,0,1,255,224,15,244,15,224,0,0,0,3,255,224,31,240,15,224,0,0,0,15,255,224,127,208,15,224,0,0,0,63,255,224,255,128,15,224,0,0,0,127,255,226,255,0,15,255,255,255,64,63,207,224,125,0,15,255,255,255,64,31,15,224,20,0,15,255,255,255,64,12,15,224,0,0,15,245,85,85,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,245,85,85,64,0,15,224,0,0,15,255,255,255,192,0,15,224,0,0,15,255,255,255,192,0,15,224,0,0,15,255,255,255,192,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,10,144,0,0,10,144,0,0,0, + // 0x4f7f 使 + 127,79,38,38,124,40,1,252,0,0,25,0,0,2,160,0,0,0,0,0,63,192,0,7,244,0,0,0,0,0,63,192,0,7,244,0,0,0,0,0,191,64,0,7,244,0,0,0,0,0,255,85,85,91,249,85,85,64,0,2,253,255,255,255,255,255,255,208,0,3,252,255,255,255,255,255,255,208,0,11,244,255,255,255,255,255,255,208,0,15,240,0,0,7,244,0,0,0,0,63,208,0,0,7,244,0,0,0,0,191,208,0,0,7,244,0,0,0,0,255,208,0,0,7,244,0,0,0,3,255,208,63,255,255,255,255,255,0,11,255,208,63,255,255,255,255,255,0,47,255,208,63,255,255,255,255,255,0,191,255,208,63,128,7,244,0,127,0,255,207,208,63,128,7,244,0,127,0,63,15,208,63,128,7,244,0,127,0,44,15,208,63,128,7,244,0,127,0,0,15,208,63,128,7,244,0,127,0,0,15,208,63,255,255,255,255,255,0,0,15,208,63,255,255,255,255,255,0,0,15,208,63,255,255,255,255,255,0,0,15,208,0,0,11,240,0,0,0,0,15,208,31,128,15,240,0,0,0,0,15,208,31,208,15,224,0,0,0,0,15,208,11,244,31,208,0,0,0,0,15,208,3,253,63,192,0,0,0,0,15,208,0,255,191,128,0,0,0,0,15,208,0,63,255,0,0,0,0,0,15,208,0,15,255,0,0,0,0,0,15,208,0,31,255,224,0,0,0,0,15,208,0,191,255,255,128,0,0,0,15,208,11,255,219,255,254,64,0,0,15,210,255,255,1,255,255,255,144,0,15,211,255,244,0,11,255,255,192,0,15,208,255,64,0,0,111,255,64,0,15,208,100,0,0,0,0,90,0, + // 0x4f9b 供 + 155,79,38,38,124,40,1,252,0,0,20,0,21,64,0,84,0,0,0,0,63,128,47,192,0,253,0,0,0,0,191,64,47,192,0,253,0,0,0,0,255,0,47,192,0,253,0,0,0,1,254,0,47,192,0,253,0,0,0,3,252,0,47,192,0,253,0,0,0,7,248,0,47,192,0,253,0,0,0,15,240,0,47,192,0,253,0,0,0,47,224,42,191,234,170,255,170,128,0,63,192,127,255,255,255,255,255,192,0,255,192,127,255,255,255,255,255,192,1,255,192,127,255,255,255,255,255,192,3,255,192,0,47,192,0,253,0,0,15,255,192,0,47,192,0,253,0,0,63,255,192,0,47,192,0,253,0,0,191,255,192,0,47,192,0,253,0,0,191,175,192,0,47,192,0,253,0,0,63,47,192,0,47,192,0,253,0,0,44,47,192,0,47,192,0,253,0,0,4,47,192,0,47,192,0,253,0,0,0,47,192,0,47,192,0,253,0,0,0,47,193,170,191,234,170,255,170,128,0,47,193,255,255,255,255,255,255,208,0,47,193,255,255,255,255,255,255,208,0,47,193,255,255,255,255,255,255,208,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,14,64,0,36,0,0,0,47,192,0,47,224,1,253,0,0,0,47,192,0,127,192,1,255,64,0,0,47,192,0,255,64,0,127,192,0,0,47,192,3,254,0,0,47,240,0,0,47,192,15,252,0,0,11,248,0,0,47,192,63,240,0,0,3,254,0,0,47,192,255,192,0,0,1,255,0,0,47,194,255,64,0,0,0,191,192,0,47,192,125,0,0,0,0,62,0,0,47,128,4,0,0,0,0,20,0, + // 0x4fb5 侵 + 181,79,38,38,124,40,1,252,0,0,16,0,0,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,0,191,79,255,255,255,255,244,0,0,0,255,15,255,255,255,255,244,0,0,1,253,15,255,255,255,255,244,0,0,3,252,0,0,0,0,3,244,0,0,11,248,0,0,0,0,3,244,0,0,15,240,2,170,170,170,175,244,0,0,47,224,3,255,255,255,255,244,0,0,127,192,3,255,255,255,255,244,0,0,255,192,0,0,0,0,3,244,0,2,255,128,0,0,0,0,3,244,0,7,255,128,31,255,255,255,255,244,0,31,255,128,31,255,255,255,255,244,0,63,255,128,31,255,255,255,255,244,0,255,255,128,0,0,0,0,0,0,0,255,127,128,0,0,0,0,0,0,0,61,63,129,255,255,255,255,255,255,192,40,63,129,255,255,255,255,255,255,192,0,63,129,255,255,255,255,255,255,192,0,63,129,252,0,0,0,0,47,192,0,63,129,252,0,0,0,0,47,192,0,63,129,252,0,0,0,0,47,192,0,63,129,255,255,255,255,255,255,192,0,63,128,171,255,255,255,255,250,64,0,63,128,7,255,255,255,255,208,0,0,63,128,0,111,0,0,127,192,0,0,63,128,0,127,192,1,255,0,0,0,63,128,0,47,240,7,253,0,0,0,63,128,0,11,253,47,244,0,0,0,63,128,0,2,255,255,208,0,0,0,63,128,0,0,191,255,64,0,0,0,63,128,0,1,255,255,144,0,0,0,63,128,0,127,255,255,254,64,0,0,63,129,191,255,254,111,255,255,144,0,63,129,255,255,208,2,255,255,192,0,63,128,255,248,0,0,27,255,64,0,42,128,121,0,0,0,0,26,0, + // 0x4fdd 保 + 221,79,38,38,124,40,1,252,0,0,20,0,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,63,203,255,255,255,255,252,0,0,0,191,75,255,255,255,255,252,0,0,0,255,11,255,255,255,255,252,0,0,2,253,11,245,85,85,87,252,0,0,3,252,11,240,0,0,2,252,0,0,11,244,11,240,0,0,2,252,0,0,15,240,11,240,0,0,2,252,0,0,63,208,11,240,0,0,2,252,0,0,191,208,11,240,0,0,2,252,0,1,255,208,11,240,0,0,2,252,0,3,255,208,11,255,255,255,255,252,0,15,255,208,11,255,255,255,255,252,0,47,255,208,11,255,255,255,255,252,0,191,255,208,1,85,91,249,85,84,0,191,207,208,0,0,7,244,0,0,0,63,15,208,0,0,7,244,0,0,0,45,15,208,0,0,7,244,0,0,0,4,15,208,0,0,7,244,0,0,0,0,15,209,255,255,255,255,255,255,192,0,15,209,255,255,255,255,255,255,192,0,15,209,255,255,255,255,255,255,192,0,15,208,85,85,255,255,149,85,64,0,15,208,0,0,255,255,192,0,0,0,15,208,0,3,255,255,240,0,0,0,15,208,0,11,255,251,248,0,0,0,15,208,0,47,231,246,253,0,0,0,15,208,0,191,199,244,255,64,0,0,15,208,2,255,7,244,127,208,0,0,15,208,15,253,7,244,31,244,0,0,15,208,127,244,7,244,11,254,0,0,15,210,255,208,7,244,2,255,208,0,15,215,255,64,7,244,0,191,240,0,15,209,252,0,7,244,0,47,192,0,15,208,160,0,7,244,0,7,0,0,15,208,0,0,7,244,0,0,0,0,10,144,0,0,7,244,0,0,0, + // 0x4fe1 信 + 225,79,38,38,124,40,1,252,0,0,4,0,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,63,193,255,255,255,255,240,0,0,0,191,65,255,255,255,255,240,0,0,0,255,1,255,255,255,255,240,0,0,2,254,0,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,0,31,240,255,255,255,255,255,255,208,0,63,224,255,255,255,255,255,255,208,0,191,208,255,255,255,255,255,255,208,1,255,208,0,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,0,15,255,208,3,255,255,255,255,244,0,63,255,208,3,255,255,255,255,244,0,255,223,208,3,255,255,255,255,244,0,191,79,208,0,0,0,0,0,0,0,62,15,208,0,0,0,0,0,0,0,44,15,208,0,0,0,0,0,0,0,0,15,208,3,255,255,255,255,244,0,0,15,208,3,255,255,255,255,244,0,0,15,208,3,255,255,255,255,244,0,0,15,208,0,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,0,15,208,7,255,255,255,255,252,0,0,15,208,7,255,255,255,255,252,0,0,15,208,7,255,255,255,255,252,0,0,15,208,7,240,0,0,3,252,0,0,15,208,7,240,0,0,3,252,0,0,15,208,7,240,0,0,3,252,0,0,15,208,7,240,0,0,3,252,0,0,15,208,7,240,0,0,3,252,0,0,15,208,7,255,255,255,255,252,0,0,15,208,7,255,255,255,255,252,0,0,15,208,7,255,255,255,255,252,0,0,15,208,7,240,0,0,3,252,0,0,10,128,7,240,0,0,2,168,0, + // 0x503c 值 + 60,80,37,38,124,40,1,252,0,0,36,0,0,7,164,0,0,0,0,0,127,64,0,7,244,0,0,0,0,0,191,0,0,11,240,0,0,0,0,0,254,0,0,11,240,0,0,0,0,2,253,191,255,255,255,255,255,0,0,3,252,191,255,255,255,255,255,0,0,7,244,191,255,255,255,255,255,0,0,15,240,0,0,31,208,0,0,0,0,31,224,0,0,31,192,0,0,0,0,63,192,0,0,47,192,0,0,0,0,191,128,0,0,63,128,0,0,0,1,255,128,11,255,255,255,255,240,0,3,255,128,11,255,255,255,255,240,0,11,255,128,11,255,255,255,255,240,0,47,255,128,11,224,0,0,7,240,0,127,255,128,11,224,0,0,7,240,0,127,191,128,11,250,170,170,175,240,0,47,63,128,11,255,255,255,255,240,0,28,63,128,11,255,255,255,255,240,0,4,63,128,11,224,0,0,7,240,0,0,63,128,11,224,0,0,7,240,0,0,63,128,11,224,0,0,7,240,0,0,63,128,11,250,170,170,175,240,0,0,63,128,11,255,255,255,255,240,0,0,63,128,11,255,255,255,255,240,0,0,63,128,11,224,0,0,7,240,0,0,63,128,11,224,0,0,7,240,0,0,63,128,11,224,0,0,7,240,0,0,63,128,11,255,255,255,255,240,0,0,63,128,11,255,255,255,255,240,0,0,63,128,11,250,170,170,175,240,0,0,63,128,11,224,0,0,7,240,0,0,63,128,11,224,0,0,7,240,0,0,63,128,15,224,0,0,11,240,0,0,63,135,255,255,255,255,255,255,192,0,63,135,255,255,255,255,255,255,192,0,63,135,255,255,255,255,255,255,192,0,63,128,0,0,0,0,0,0,0, + // 0x503e 倾 + 62,80,37,38,124,40,1,252,0,1,0,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,0,11,240,0,3,255,255,255,255,192,0,15,224,0,3,255,255,255,255,192,0,31,194,244,3,255,255,255,255,192,0,63,194,244,0,0,15,240,0,0,0,63,66,244,0,0,15,224,0,0,0,191,2,244,0,0,31,192,0,0,0,255,2,244,0,0,47,192,0,0,2,255,2,244,0,127,255,255,253,0,3,255,2,244,0,127,255,255,253,0,11,255,2,255,252,127,255,255,253,0,31,255,2,255,252,126,0,0,253,0,63,255,2,255,252,126,1,64,253,0,191,255,2,248,0,126,11,208,253,0,255,191,2,244,0,126,11,208,253,0,190,127,2,244,0,126,11,208,253,0,60,127,2,244,0,126,11,208,253,0,48,127,2,244,0,126,11,208,253,0,0,127,2,244,0,126,11,208,253,0,0,127,2,244,0,126,11,208,253,0,0,127,2,244,0,126,11,208,253,0,0,127,2,244,0,126,11,208,253,0,0,127,2,244,44,126,11,192,253,0,0,127,2,250,252,126,15,192,253,0,0,127,3,255,252,126,15,192,253,0,0,127,7,255,244,126,31,192,253,0,0,127,15,255,64,106,47,128,169,0,0,127,7,244,0,0,63,68,0,0,0,127,3,128,0,0,191,62,0,0,0,127,0,0,0,1,253,191,192,0,0,127,0,0,0,7,252,47,244,0,0,127,0,0,0,47,240,11,254,0,0,127,0,0,1,255,192,1,255,128,0,127,0,0,15,255,0,0,63,192,0,127,0,0,11,248,0,0,15,64,0,127,0,0,2,128,0,0,1,0, + // 0x504f 偏 + 79,80,38,39,134,40,1,251,0,0,144,0,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,0,2,252,255,255,255,255,255,255,208,0,3,248,255,255,255,255,255,255,208,0,7,244,255,255,255,255,255,255,208,0,15,240,0,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,47,255,255,255,255,254,0,0,255,64,47,255,255,255,255,254,0,1,255,64,47,255,255,255,255,254,0,3,255,64,47,192,0,0,0,254,0,7,255,64,47,192,0,0,0,254,0,15,255,64,47,192,0,0,0,254,0,63,255,64,47,255,255,255,255,254,0,191,255,64,47,255,255,255,255,254,0,255,127,64,47,255,255,255,255,254,0,190,63,64,47,128,0,0,0,0,0,60,63,64,47,128,0,0,0,0,0,36,63,64,63,128,0,0,0,0,0,0,63,64,63,255,255,255,255,255,64,0,63,64,63,255,255,255,255,255,64,0,63,64,63,255,255,255,255,255,64,0,63,64,63,248,31,66,240,63,64,0,63,64,127,248,31,66,240,63,64,0,63,64,191,248,31,66,240,63,64,0,63,64,255,248,31,66,240,63,64,0,63,64,255,255,255,255,255,255,64,0,63,65,253,255,255,255,255,255,64,0,63,67,253,255,255,255,255,255,64,0,63,67,249,248,31,66,240,63,64,0,63,75,245,248,31,66,240,63,64,0,63,79,241,248,31,66,240,63,64,0,63,127,209,248,31,66,240,63,64,0,63,95,193,248,31,66,240,63,64,0,63,71,1,248,31,66,247,255,64,0,63,64,1,248,31,66,243,255,0,0,63,64,1,248,31,66,242,248,0,0,0,0,0,0,0,0,0,0,0, + // 0x505c 停 + 92,80,38,38,124,40,1,252,0,0,36,0,0,6,160,0,0,0,0,0,127,64,0,11,240,0,0,0,0,0,191,0,0,11,240,0,0,0,0,0,255,0,0,11,240,0,0,0,0,2,254,255,255,255,255,255,255,192,0,3,252,255,255,255,255,255,255,192,0,11,244,255,255,255,255,255,255,192,0,15,240,0,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,0,127,192,7,255,255,255,255,244,0,0,255,128,7,255,255,255,255,244,0,2,255,128,7,250,170,170,171,244,0,7,255,128,7,240,0,0,7,244,0,15,255,128,7,240,0,0,7,244,0,63,255,128,7,240,0,0,7,244,0,191,255,128,7,255,255,255,255,244,0,255,191,128,7,255,255,255,255,244,0,127,63,128,2,170,170,170,170,160,0,60,63,128,0,0,0,0,0,0,0,20,63,131,255,255,255,255,255,255,224,0,63,131,255,255,255,255,255,255,224,0,63,131,255,255,255,255,255,255,224,0,63,131,244,0,0,0,0,15,224,0,63,131,244,0,0,0,0,15,224,0,63,131,244,0,0,0,0,15,224,0,63,131,244,255,255,255,255,207,224,0,63,131,244,255,255,255,255,207,224,0,63,128,0,255,255,255,255,192,0,0,63,128,0,0,11,240,0,0,0,0,63,128,0,0,11,240,0,0,0,0,63,128,0,0,11,240,0,0,0,0,63,128,0,0,11,240,0,0,0,0,63,128,0,0,11,240,0,0,0,0,63,128,0,0,11,240,0,0,0,0,63,128,0,21,95,240,0,0,0,0,63,128,0,63,255,240,0,0,0,0,63,128,0,47,255,224,0,0,0,0,47,128,0,31,254,64,0,0,0, + // 0x50a8 储 + 168,80,38,38,124,40,1,252,0,2,64,0,0,0,168,0,0,0,0,3,240,0,0,1,252,0,4,0,0,7,240,0,0,1,252,0,47,128,0,15,224,224,0,1,252,0,63,128,0,15,215,248,0,1,252,0,191,0,0,31,194,253,3,255,255,253,254,0,0,63,128,255,67,255,255,255,252,0,0,63,64,63,195,255,255,255,248,0,0,191,0,15,208,1,252,11,240,0,0,254,0,7,0,1,252,31,208,0,2,254,0,0,0,1,252,63,192,0,3,254,0,0,0,1,252,255,0,0,11,254,0,0,15,255,255,255,255,208,31,254,63,255,15,255,255,255,255,208,63,254,63,255,15,255,255,255,255,208,191,254,63,255,5,85,191,213,85,64,191,190,42,191,0,1,255,64,0,0,125,190,0,127,0,7,254,0,0,0,60,190,0,127,0,31,252,0,0,0,16,190,0,127,0,191,240,0,0,0,0,190,0,127,7,255,255,255,254,0,0,190,0,127,47,255,255,255,254,0,0,190,0,127,63,255,255,255,254,0,0,190,0,127,31,255,128,0,190,0,0,190,0,127,11,111,128,0,190,0,0,190,0,127,0,47,128,0,190,0,0,190,0,127,0,47,234,170,254,0,0,190,0,127,0,47,255,255,254,0,0,190,0,127,5,47,255,255,254,0,0,190,0,127,46,47,128,0,190,0,0,190,0,127,255,47,128,0,190,0,0,190,0,191,255,47,128,0,190,0,0,190,0,255,248,47,128,0,190,0,0,190,2,255,192,47,255,255,254,0,0,190,1,253,0,47,255,255,254,0,0,190,0,176,0,47,255,255,254,0,0,190,0,0,0,47,128,0,190,0,0,189,0,0,0,31,128,0,105,0, + // 0x50cf 像 + 207,80,38,38,124,40,1,252,0,0,64,0,21,0,0,0,0,0,0,1,252,0,63,192,0,0,0,0,0,2,252,0,191,64,0,0,0,0,0,3,248,0,255,255,255,128,0,0,0,7,244,3,255,255,255,240,0,0,0,11,240,11,255,255,255,208,0,0,0,15,224,47,224,0,127,128,0,0,0,47,192,191,192,0,255,0,0,0,0,63,194,255,170,171,255,170,170,0,0,191,79,255,255,255,255,255,255,0,0,255,79,255,255,255,255,255,255,0,2,255,66,255,0,15,224,0,191,0,7,255,64,191,0,15,224,0,191,0,15,255,64,191,0,15,224,0,191,0,47,255,64,191,0,15,224,0,191,0,127,255,64,191,255,255,255,255,255,0,255,191,64,191,255,255,255,255,255,0,191,63,64,106,171,255,191,170,169,0,61,63,64,0,31,252,47,64,0,0,56,63,64,1,255,240,31,192,30,0,0,63,64,47,255,252,15,192,127,128,0,63,71,255,245,254,15,209,255,128,0,63,67,255,64,191,75,251,253,0,0,63,65,228,3,255,199,255,240,0,0,63,64,0,47,255,227,255,128,0,0,63,64,2,255,135,242,253,0,0,0,63,64,111,252,3,244,254,0,0,0,63,67,255,208,31,248,191,0,0,0,63,66,253,0,127,252,63,192,0,0,63,64,208,2,255,252,47,224,0,0,63,64,0,31,249,252,15,244,0,0,63,64,1,255,209,252,7,253,0,0,63,64,31,255,1,252,2,255,64,0,63,66,255,244,3,252,0,255,208,0,63,79,255,128,11,244,0,63,128,0,63,67,248,31,255,240,0,11,0,0,63,65,128,15,255,192,0,0,0,0,63,64,0,15,254,0,0,0,0, + // 0x5145 充 + 69,81,37,38,124,40,2,252,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,63,255,255,255,255,255,255,255,253,0,63,255,255,255,255,255,255,255,253,0,63,255,255,255,255,255,255,255,253,0,42,170,171,255,170,170,170,170,168,0,0,0,3,253,0,0,208,0,0,0,0,0,7,252,0,11,244,0,0,0,0,0,11,244,0,11,254,0,0,0,0,0,15,240,0,2,255,128,0,0,0,0,47,208,0,0,191,224,0,0,0,0,63,128,0,0,31,248,0,0,0,0,127,170,175,255,255,254,0,0,15,255,255,255,255,255,255,255,128,0,15,255,255,255,255,255,255,255,224,0,15,255,255,255,255,234,165,111,244,0,15,234,85,0,0,0,0,15,248,0,0,0,1,84,0,42,128,3,208,0,0,0,7,248,0,63,192,0,0,0,0,0,7,248,0,63,192,0,0,0,0,0,7,244,0,63,192,0,0,0,0,0,11,244,0,63,192,0,0,0,0,0,15,240,0,63,192,0,0,0,0,0,15,240,0,63,192,0,0,0,0,0,31,224,0,63,192,0,32,0,0,0,63,208,0,63,192,0,62,0,0,0,191,192,0,63,192,0,63,64,0,1,255,64,0,63,192,0,63,64,0,7,255,0,0,63,192,0,127,0,0,63,252,0,0,63,192,0,127,0,6,255,240,0,0,47,192,0,255,0,191,255,192,0,0,47,255,255,254,0,191,253,0,0,0,31,255,255,252,0,63,224,0,0,0,11,255,255,248,0,24,0,0,0,0,0,106,170,64,0, + // 0x5148 先 + 72,81,36,38,86,40,2,252,0,0,0,0,191,0,0,0,0,0,2,228,0,255,0,0,0,0,0,3,252,0,255,0,0,0,0,0,3,248,0,255,0,0,0,0,0,7,244,0,255,0,0,0,0,0,15,240,0,255,0,0,0,0,0,15,255,255,255,255,255,255,128,0,47,255,255,255,255,255,255,128,0,63,255,255,255,255,255,255,128,0,127,170,170,255,170,170,170,64,0,255,0,0,255,0,0,0,0,2,254,0,0,255,0,0,0,0,3,252,0,0,255,0,0,0,0,15,248,0,0,255,0,0,0,0,2,240,0,0,255,0,0,0,0,0,80,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,106,170,170,170,255,170,170,170,169,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,0,0,11,244,0,63,192,0,0,0,0,15,240,0,63,192,0,0,0,0,15,240,0,63,192,0,0,0,0,15,224,0,63,192,0,0,0,0,31,224,0,63,192,0,0,0,0,47,208,0,63,192,0,0,0,0,63,192,0,63,192,0,0,0,0,191,128,0,63,192,0,116,0,1,255,0,0,63,192,0,127,0,3,254,0,0,63,192,0,191,0,31,252,0,0,63,192,0,191,0,191,244,0,0,63,192,0,254,7,255,208,0,0,63,234,170,253,191,255,64,0,0,47,255,255,252,127,252,0,0,0,15,255,255,248,47,208,0,0,0,2,255,255,224,13,0,0,0,0,0,0,0,0, + // 0x5149 光 + 73,81,38,38,124,40,1,252,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,7,0,0,63,128,0,15,64,0,0,127,128,0,63,128,0,31,240,0,0,63,192,0,63,128,0,63,208,0,0,47,224,0,63,128,0,127,192,0,0,15,240,0,63,128,0,191,64,0,0,11,248,0,63,128,0,255,0,0,0,3,252,0,63,128,2,253,0,0,0,2,254,0,63,128,3,252,0,0,0,0,255,0,63,128,11,244,0,0,0,0,255,64,63,128,31,224,0,0,0,0,125,0,63,128,7,192,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,26,170,170,170,191,234,170,170,170,64,47,255,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,255,192,0,0,2,253,0,15,240,0,0,0,0,0,2,252,0,15,240,0,0,0,0,0,3,252,0,15,240,0,0,0,0,0,3,252,0,15,240,0,0,0,0,0,3,252,0,15,240,0,0,0,0,0,7,248,0,15,240,0,0,0,0,0,11,244,0,15,240,0,0,0,0,0,15,240,0,15,240,0,0,0,0,0,31,240,0,15,240,0,4,0,0,0,63,208,0,15,240,0,14,64,0,0,191,192,0,15,240,0,15,208,0,2,255,64,0,15,240,0,31,192,0,11,254,0,0,15,240,0,31,192,0,127,252,0,0,15,240,0,47,192,7,255,240,0,0,15,240,0,63,192,127,255,128,0,0,11,255,255,255,128,47,253,0,0,0,7,255,255,255,0,15,208,0,0,0,2,255,255,253,0,5,0,0,0,0,0,21,85,80,0, + // 0x5165 入 + 101,81,37,36,104,40,2,252,0,2,170,170,170,64,0,0,0,0,0,3,255,255,255,64,0,0,0,0,0,3,255,255,255,64,0,0,0,0,0,3,255,255,255,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,1,63,192,0,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,0,7,255,224,0,0,0,0,0,0,0,11,255,240,0,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,0,31,251,244,0,0,0,0,0,0,0,47,231,252,0,0,0,0,0,0,0,63,211,252,0,0,0,0,0,0,0,127,194,254,0,0,0,0,0,0,0,255,128,255,0,0,0,0,0,0,1,255,0,255,128,0,0,0,0,0,3,255,0,127,192,0,0,0,0,0,7,253,0,63,224,0,0,0,0,0,15,252,0,31,244,0,0,0,0,0,47,244,0,15,252,0,0,0,0,0,127,224,0,7,254,0,0,0,0,0,255,192,0,2,255,128,0,0,0,3,255,64,0,0,255,208,0,0,0,15,254,0,0,0,127,244,0,0,0,47,252,0,0,0,47,253,0,0,0,255,240,0,0,0,11,255,128,0,7,255,192,0,0,0,2,255,240,0,47,255,64,0,0,0,0,191,253,0,255,252,0,0,0,0,0,47,255,64,127,224,0,0,0,0,0,7,253,0,31,64,0,0,0,0,0,0,248,0,5,0,0,0,0,0,0,0,16,0, + // 0x5168 全 + 104,81,37,37,114,40,1,253,0,0,0,0,191,192,0,0,0,0,0,0,0,0,255,224,0,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,0,11,255,253,0,0,0,0,0,0,0,31,246,255,0,0,0,0,0,0,0,127,224,255,192,0,0,0,0,0,1,255,192,63,240,0,0,0,0,0,7,255,0,15,253,0,0,0,0,0,31,252,0,3,255,64,0,0,0,0,191,240,0,0,255,224,0,0,0,2,255,192,0,0,63,248,0,0,0,15,255,0,0,0,15,255,64,0,0,127,252,0,0,0,3,255,224,0,2,255,224,0,0,0,0,191,253,0,31,255,64,0,0,0,0,31,255,192,127,255,255,255,255,255,255,255,255,192,47,226,255,255,255,255,255,252,127,64,15,2,255,255,255,255,255,252,10,0,0,0,85,85,127,213,85,80,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,47,255,255,255,255,255,255,64,0,0,47,255,255,255,255,255,255,64,0,0,47,255,255,255,255,255,255,64,0,0,0,0,0,127,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,5,85,85,85,127,213,85,85,85,0,15,255,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,255,0, + // 0x5171 共 + 113,81,36,38,86,40,2,252,0,0,21,64,0,1,84,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,10,170,191,234,170,171,254,170,164,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,170,170,170,170,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,15,128,0,7,224,0,0,0,0,63,244,0,31,252,0,0,0,0,255,224,0,11,255,64,0,0,3,255,128,0,1,255,224,0,0,15,254,0,0,0,63,248,0,0,127,248,0,0,0,15,255,0,2,255,208,0,0,0,2,255,208,31,255,64,0,0,0,0,191,244,63,252,0,0,0,0,0,47,252,15,208,0,0,0,0,0,7,240,2,0,0,0,0,0,0,1,64, + // 0x5173 关 + 115,81,28,38,10,40,6,252,0,0,0,0,0,96,0,0,45,0,0,0,191,64,0,255,0,0,0,255,0,0,191,128,0,2,254,0,0,63,208,0,3,252,0,0,31,240,0,11,248,0,0,11,244,0,15,240,0,0,3,248,0,47,208,0,0,3,208,0,7,128,0,6,170,170,170,170,170,144,15,255,255,255,255,255,240,15,255,255,255,255,255,240,15,255,255,255,255,255,240,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,0,0,0,254,0,0,0,63,255,255,255,255,255,252,63,255,255,255,255,255,252,63,255,255,255,255,255,252,42,170,171,255,234,170,168,0,0,3,255,192,0,0,0,0,3,255,208,0,0,0,0,7,255,240,0,0,0,0,15,255,244,0,0,0,0,31,243,252,0,0,0,0,63,209,255,0,0,0,0,255,192,255,128,0,0,3,255,0,127,224,0,0,31,253,0,47,252,0,0,191,244,0,11,255,64,7,255,208,0,2,255,244,191,255,0,0,0,191,255,255,248,0,0,0,31,253,63,128,0,0,0,2,248,24,0,0,0,0,0,32, + // 0x5177 具 + 119,81,36,36,68,40,2,252,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,250,170,170,170,175,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,250,170,170,170,175,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,85,85,85,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,11,208,0,3,208,0,0,0,0,127,248,0,31,254,0,0,0,11,255,248,0,47,255,244,0,1,191,255,128,0,2,255,255,128,47,255,248,0,0,0,31,255,248,127,255,128,0,0,0,0,191,254,31,244,0,0,0,0,0,11,244,10,0,0,0,0,0,0,1,128, + // 0x5197 冗 + 151,81,37,35,94,40,2,252,47,255,255,255,255,255,255,255,252,0,47,255,255,255,255,255,255,255,252,0,47,255,255,255,255,255,255,255,252,0,47,234,170,170,170,170,170,171,252,0,47,192,0,0,0,0,0,3,252,0,47,192,0,0,0,0,0,3,252,0,47,192,0,0,0,0,0,3,252,0,47,192,0,0,0,0,0,3,252,0,47,192,0,0,0,0,0,3,252,0,47,192,0,0,0,0,0,3,252,0,21,64,63,255,255,255,248,1,84,0,0,0,63,255,255,255,248,0,0,0,0,0,63,255,255,255,248,0,0,0,0,0,63,229,85,91,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,127,128,0,3,248,0,0,0,0,0,191,64,0,3,248,0,16,0,0,0,255,0,0,3,248,0,61,0,0,2,254,0,0,3,248,0,63,64,0,7,253,0,0,3,248,0,127,64,0,31,248,0,0,3,248,0,127,0,0,127,240,0,0,3,248,0,127,0,3,255,208,0,0,3,252,0,191,0,47,255,64,0,0,3,255,170,255,0,255,253,0,0,0,3,255,255,253,0,127,224,0,0,0,1,255,255,252,0,47,64,0,0,0,0,127,255,224,0,4,0,0,0,0,0,0,0,0,0, + // 0x51b7 冷 + 183,81,37,38,124,40,2,252,0,0,0,0,0,170,0,0,0,0,0,0,0,0,2,255,64,0,0,0,4,0,0,0,7,255,192,0,0,0,31,0,0,0,15,255,240,0,0,0,127,208,0,0,47,255,248,0,0,0,191,248,0,0,191,195,254,0,0,0,31,254,0,1,255,65,255,128,0,0,7,255,128,7,255,0,191,208,0,0,0,255,208,31,252,0,47,248,0,0,0,63,128,127,240,0,11,254,0,0,0,14,1,255,208,0,3,255,192,0,0,0,7,255,64,0,0,191,244,0,0,0,47,254,85,85,85,111,254,0,0,1,255,243,255,255,255,203,255,128,0,2,255,195,255,255,255,193,255,0,0,0,254,3,255,255,255,192,61,0,0,0,116,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,255,255,255,255,255,208,0,0,15,210,255,255,255,255,255,208,0,0,47,226,255,255,255,255,255,208,0,0,63,193,85,95,245,85,111,208,0,0,191,128,0,15,240,0,15,208,0,1,255,0,0,15,240,0,15,208,0,3,254,0,0,15,240,0,15,208,0,11,252,0,0,15,240,0,15,208,0,15,244,0,0,15,240,0,15,208,0,63,240,0,0,15,240,0,15,208,0,127,208,0,0,15,240,42,175,208,0,255,128,0,0,15,240,63,255,208,0,255,0,0,0,15,240,31,255,192,0,45,0,0,0,15,240,15,253,0,0,4,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,10,160,0,0,0,0, + // 0x51c6 准 + 198,81,37,38,124,40,2,252,0,0,0,0,36,0,5,0,0,0,0,0,0,0,191,64,11,240,0,0,0,0,0,0,255,0,15,240,0,0,15,64,0,1,254,0,15,224,0,0,63,224,0,3,252,0,47,192,0,0,63,252,0,7,248,0,63,192,0,0,11,255,64,15,244,0,63,64,0,0,1,255,208,31,240,0,191,0,0,0,0,63,240,63,255,255,255,255,253,0,0,15,192,127,255,255,255,255,253,0,0,3,0,255,255,255,255,255,253,0,0,0,2,255,213,86,253,85,84,0,0,0,7,255,192,1,252,0,0,0,0,0,15,255,192,1,252,0,0,0,0,0,63,255,192,1,252,0,0,0,0,0,255,239,192,1,252,0,0,0,0,0,127,159,255,255,255,255,244,0,0,0,30,31,255,255,255,255,244,0,0,0,4,31,255,255,255,255,244,0,0,0,0,31,213,86,253,85,80,0,0,0,0,31,192,1,252,0,0,0,0,11,0,31,192,1,252,0,0,0,0,31,208,31,192,1,252,0,0,0,0,63,208,31,192,1,252,0,0,0,0,127,192,31,255,255,255,255,244,0,0,255,0,31,255,255,255,255,244,0,2,254,0,31,255,255,255,255,244,0,7,252,0,31,213,86,253,85,80,0,15,248,0,31,192,1,252,0,0,0,47,240,0,31,192,1,252,0,0,0,127,208,0,31,192,1,252,0,0,0,255,128,0,31,192,1,252,0,0,0,255,0,0,31,229,86,254,85,85,0,61,0,0,31,255,255,255,255,255,64,8,0,0,31,255,255,255,255,255,64,0,0,0,31,255,255,255,255,255,64,0,0,0,31,192,0,0,0,0,0,0,0,0,31,192,0,0,0,0,0, + // 0x51fa 出 + 250,81,32,38,48,40,4,252,0,0,0,10,144,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,250,170,175,250,170,175,240,15,255,255,255,255,255,255,240,15,255,255,255,255,255,255,240,15,255,255,255,255,255,255,240,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,106,0,0,15,224,0,0,169,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,170,170,175,250,170,170,254,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,191,0,0,0,0,0,0,254,191,0,0,0,0,0,0,254,106,0,0,0,0,0,0,169, + // 0x51fb 击 + 251,81,36,38,86,40,2,252,0,0,0,0,170,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,1,170,170,170,255,170,170,170,128,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,192,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,106,170,170,170,255,170,170,170,169,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,85,0,0,255,0,0,106,0,0,254,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,170,170,170,170,170,170,255,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0, + // 0x5206 分 + 6,82,38,37,114,40,1,252,0,0,1,228,0,0,180,0,0,0,0,0,3,254,0,7,252,0,0,0,0,0,7,252,0,3,254,0,0,0,0,0,15,248,0,1,255,0,0,0,0,0,31,240,0,0,255,192,0,0,0,0,63,224,0,0,63,224,0,0,0,0,255,192,0,0,47,244,0,0,0,1,255,64,0,0,15,252,0,0,0,3,255,0,0,0,3,255,0,0,0,15,252,0,0,0,1,255,192,0,0,63,244,0,0,0,0,255,224,0,0,191,224,0,0,0,0,63,248,0,2,255,192,0,0,0,0,15,254,0,15,255,0,0,0,0,0,7,255,192,63,255,170,170,170,170,170,171,255,224,191,251,255,255,255,255,255,253,191,192,47,195,255,255,255,255,255,253,47,0,11,3,255,255,255,255,255,253,4,0,0,0,0,15,240,0,2,253,0,0,0,0,0,15,240,0,2,253,0,0,0,0,0,31,240,0,2,253,0,0,0,0,0,31,224,0,2,252,0,0,0,0,0,47,208,0,2,252,0,0,0,0,0,63,192,0,3,252,0,0,0,0,0,127,192,0,3,252,0,0,0,0,0,255,128,0,3,252,0,0,0,0,1,255,0,0,3,252,0,0,0,0,3,254,0,0,3,252,0,0,0,0,15,252,0,0,3,248,0,0,0,0,47,248,0,0,7,248,0,0,0,0,255,224,0,0,11,244,0,0,0,7,255,192,0,0,15,244,0,0,0,127,255,0,0,0,47,240,0,0,7,255,248,0,7,255,255,224,0,0,3,255,208,0,3,255,255,208,0,0,1,254,0,0,2,255,255,64,0,0,0,224,0,0,0,170,148,0,0,0, + // 0x5207 切 + 7,82,37,38,124,40,1,251,0,42,64,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,2,170,170,170,170,170,64,0,63,128,3,255,255,255,255,255,128,0,63,128,3,255,255,255,255,255,128,0,63,128,3,255,255,255,255,255,128,0,63,128,0,0,31,208,0,127,64,0,63,128,0,0,31,192,0,127,64,0,63,128,1,128,47,192,0,127,64,0,63,133,191,192,47,192,0,127,64,0,63,255,255,208,47,192,0,127,64,27,255,255,255,224,47,192,0,127,64,191,255,255,249,0,47,192,0,127,64,191,255,228,0,0,47,192,0,127,64,127,191,128,0,0,63,192,0,191,64,16,63,128,0,0,63,192,0,191,0,0,63,128,0,0,63,128,0,191,0,0,63,128,0,0,63,128,0,191,0,0,63,128,0,0,63,64,0,191,0,0,63,128,0,0,127,64,0,191,0,0,63,128,24,0,191,0,0,255,0,0,63,128,31,128,255,0,0,255,0,0,63,128,31,192,254,0,0,255,0,0,63,128,47,193,253,0,0,255,0,0,63,128,47,131,252,0,0,255,0,0,63,234,191,67,252,0,0,255,0,0,63,255,255,11,244,0,0,254,0,0,31,255,254,15,240,0,1,254,0,0,7,255,248,47,224,0,1,254,0,0,0,0,0,127,192,0,2,253,0,0,0,0,1,255,128,0,3,253,0,0,0,0,3,255,0,0,3,252,0,0,0,0,31,252,0,0,11,252,0,0,0,0,191,244,0,255,255,248,0,0,0,1,255,208,0,127,255,240,0,0,0,0,127,64,0,63,255,208,0,0,0,0,28,0,0,42,169,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x521b 创 + 27,82,36,38,86,40,1,252,0,0,2,64,0,0,0,0,0,0,0,7,248,0,0,0,0,254,0,0,15,240,0,0,0,0,254,0,0,31,244,0,0,0,0,254,0,0,63,253,0,0,0,0,254,0,0,191,255,0,0,254,0,254,0,0,255,127,192,0,254,0,254,0,3,253,47,240,0,254,0,254,0,11,248,11,252,0,254,0,254,0,47,240,3,254,0,254,0,254,0,127,208,0,255,128,254,0,254,1,255,128,0,127,208,254,0,254,11,254,0,0,31,240,254,0,254,47,248,0,0,11,248,254,0,254,191,240,0,0,3,240,254,0,254,63,255,255,255,255,192,254,0,254,14,127,255,255,254,0,254,0,254,0,127,255,255,254,0,254,0,254,0,127,64,1,253,0,254,0,254,0,127,64,0,253,0,254,0,254,0,127,64,1,253,0,254,0,254,0,127,64,1,252,0,254,0,254,0,127,64,1,252,0,254,0,254,0,127,64,2,252,0,254,0,254,0,127,64,3,252,0,254,0,254,0,127,71,255,248,0,254,0,254,0,127,67,255,240,0,254,0,254,0,127,66,255,128,0,20,0,254,0,127,64,0,2,0,0,0,254,0,127,64,0,3,224,0,0,254,0,127,64,0,3,240,0,0,254,0,127,64,0,3,240,0,0,254,0,127,64,0,7,240,0,0,254,0,63,128,0,15,240,0,1,254,0,63,255,255,255,208,63,255,253,0,47,255,255,255,192,47,255,252,0,7,255,255,255,0,31,255,244,0,0,0,0,0,0,10,165,0, + // 0x521d 初 + 29,82,37,39,134,40,1,251,0,3,244,0,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,0,7,244,0,170,170,170,170,170,64,0,7,244,1,255,255,255,255,255,128,0,7,244,1,255,255,255,255,255,128,0,7,244,1,255,255,255,255,255,128,21,91,249,80,0,15,224,0,127,64,63,255,255,253,0,15,224,0,127,64,63,255,255,253,0,15,224,0,127,64,63,255,255,252,0,31,224,0,127,64,0,0,3,248,0,31,208,0,127,64,0,0,11,240,0,31,208,0,127,64,0,0,31,224,0,31,208,0,127,64,0,0,63,192,0,31,208,0,127,64,0,0,191,70,0,47,192,0,191,64,0,1,255,15,128,47,192,0,191,64,0,3,252,47,192,47,192,0,191,0,0,11,252,127,0,63,192,0,191,0,0,47,255,252,0,63,192,0,191,0,0,191,255,244,0,63,128,0,191,0,1,255,255,240,0,127,64,0,191,0,11,255,251,252,0,191,0,0,255,0,47,255,245,255,0,255,0,0,255,0,191,231,244,191,64,255,0,0,255,0,63,199,244,62,2,253,0,0,255,0,46,7,244,12,3,252,0,0,255,0,8,7,244,0,7,252,0,0,255,0,0,7,244,0,15,244,0,0,254,0,0,7,244,0,31,240,0,1,254,0,0,7,244,0,63,208,0,1,253,0,0,7,244,0,191,192,0,2,253,0,0,7,244,2,255,64,0,3,252,0,0,7,244,11,254,0,0,11,252,0,0,7,244,47,252,0,191,255,248,0,0,7,244,63,240,0,63,255,240,0,0,7,244,15,192,0,63,255,208,0,0,3,244,2,0,0,42,169,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x522b 别 + 43,82,36,37,77,40,1,252,0,0,0,0,0,0,0,0,254,7,255,255,255,248,0,0,0,254,7,255,255,255,248,0,0,0,254,7,255,255,255,248,0,0,0,254,7,245,85,87,248,1,252,0,254,7,240,0,3,248,1,252,0,254,7,240,0,3,248,1,252,0,254,7,240,0,3,248,1,252,0,254,7,240,0,3,248,1,252,0,254,7,240,0,3,248,1,252,0,254,7,240,0,3,248,1,252,0,254,7,255,255,255,248,1,252,0,254,7,255,255,255,248,1,252,0,254,7,255,255,255,248,1,252,0,254,1,85,85,85,80,1,252,0,254,0,0,169,0,0,1,252,0,254,0,0,253,0,0,1,252,0,254,0,0,253,0,0,1,252,0,254,5,85,254,85,84,1,252,0,254,47,255,255,255,254,1,252,0,254,47,255,255,255,253,1,252,0,254,47,255,255,255,253,1,252,0,254,0,2,252,0,253,1,252,0,254,0,3,252,0,253,1,252,0,254,0,3,248,1,253,1,252,0,254,0,3,244,1,253,1,252,0,254,0,7,240,1,252,1,168,0,254,0,15,240,1,252,0,0,0,254,0,31,208,2,252,0,0,0,254,0,63,192,2,252,0,0,0,254,0,191,128,3,252,0,0,0,254,1,255,0,3,248,0,0,0,254,7,254,0,11,248,0,0,1,254,47,248,15,255,244,0,31,255,253,127,224,11,255,240,0,15,255,252,31,128,7,255,192,0,11,255,244,9,0,1,84,0,0,6,170,64, + // 0x5230 到 + 48,82,36,37,77,40,1,252,0,0,0,0,0,0,0,0,170,0,0,0,0,0,0,0,0,254,63,255,255,255,255,208,0,0,254,63,255,255,255,255,208,0,0,254,63,255,255,255,255,211,244,0,254,21,87,253,85,85,67,244,0,254,0,7,248,0,0,3,244,0,254,0,11,244,7,192,3,244,0,254,0,15,240,31,224,3,244,0,254,0,31,208,11,244,3,244,0,254,0,47,192,3,252,3,244,0,254,0,63,128,0,255,3,244,0,254,42,255,255,255,255,67,244,0,254,63,255,255,255,255,195,244,0,254,63,255,255,255,255,227,244,0,254,63,254,170,85,11,243,244,0,254,0,0,21,64,3,131,244,0,254,0,0,47,192,0,3,244,0,254,0,0,47,192,0,3,244,0,254,0,0,47,192,0,3,244,0,254,0,0,47,192,0,3,244,0,254,11,255,255,255,255,3,244,0,254,11,255,255,255,255,3,244,0,254,11,255,255,255,255,3,244,0,254,1,85,111,213,85,3,244,0,254,0,0,47,192,0,3,244,0,254,0,0,47,192,0,2,164,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,5,144,0,0,254,0,0,47,239,255,208,0,0,254,5,175,255,255,255,208,0,0,254,127,255,255,255,255,208,0,0,254,63,255,255,254,148,0,31,255,254,63,255,165,0,0,0,15,255,253,41,0,0,0,0,0,11,255,248,0,0,0,0,0,0,7,170,64, + // 0x5236 制 + 54,82,36,38,86,40,1,252,0,0,6,144,0,0,0,0,0,0,164,11,240,0,0,0,0,191,0,254,11,240,0,0,0,0,191,1,253,11,240,0,0,0,0,191,2,252,11,240,0,0,47,192,191,3,252,11,240,0,0,47,192,191,3,255,255,255,255,208,47,192,191,7,255,255,255,255,208,47,192,191,15,255,255,255,255,208,47,192,191,31,229,95,245,85,64,47,192,191,63,192,11,240,0,0,47,192,191,127,128,11,240,0,0,47,192,191,7,0,11,240,0,0,47,192,191,63,255,255,255,255,252,47,192,191,63,255,255,255,255,252,47,192,191,63,255,255,255,255,252,47,192,191,21,85,95,245,85,84,47,192,191,0,0,11,240,0,0,47,192,191,0,0,11,240,0,0,47,192,191,0,0,11,240,0,0,47,192,191,7,255,255,255,255,240,47,192,191,7,255,255,255,255,240,47,192,191,7,255,255,255,255,240,47,192,191,7,245,95,245,91,240,47,192,191,7,240,11,240,11,240,47,192,191,7,240,11,240,11,240,47,192,191,7,240,11,240,11,240,21,64,191,7,240,11,240,11,240,0,0,191,7,240,11,240,11,240,0,0,191,7,240,11,240,11,240,0,0,191,7,240,11,240,11,240,0,0,191,7,240,11,240,11,240,0,0,191,7,240,11,243,255,224,0,0,191,7,240,11,241,255,208,0,0,191,7,224,11,240,254,64,7,255,255,0,0,11,240,0,0,3,255,254,0,0,11,240,0,0,2,255,252,0,0,11,240,0,0,1,250,144, + // 0x5237 刷 + 55,82,36,37,77,40,1,252,0,0,0,0,0,0,0,0,190,1,85,85,85,85,80,0,0,191,3,255,255,255,255,240,0,0,191,3,255,255,255,255,240,21,0,191,3,255,255,255,255,240,191,0,191,3,244,0,0,11,240,191,0,191,3,244,0,0,11,240,191,0,191,3,244,0,0,11,240,191,0,191,3,244,0,0,11,240,191,0,191,3,255,255,255,255,240,191,0,191,3,255,255,255,255,240,191,0,191,3,255,255,255,255,240,191,0,191,3,249,85,191,85,80,191,0,191,3,244,0,127,0,0,191,0,191,3,244,0,127,0,0,191,0,191,3,244,0,127,0,0,191,0,191,3,244,0,127,0,0,191,0,191,3,251,255,255,255,240,191,0,191,3,251,255,255,255,240,191,0,191,3,251,255,255,255,240,191,0,191,3,251,224,127,3,240,191,0,191,3,247,224,127,3,240,191,0,191,3,247,224,127,3,240,191,0,191,3,247,224,127,3,240,191,0,191,7,243,224,127,3,240,191,0,191,7,243,224,127,3,240,191,0,191,11,227,224,127,3,240,21,0,191,15,227,224,127,3,240,0,0,191,15,211,224,127,3,240,0,0,191,15,195,224,127,191,240,0,0,191,47,195,224,127,63,224,0,0,191,63,131,224,127,63,128,0,0,191,63,65,64,127,0,0,0,0,255,191,0,0,127,0,0,7,255,255,62,0,0,127,0,0,3,255,254,8,0,0,127,0,0,2,255,252,0,0,0,126,0,0,1,234,80, + // 0x5272 割 + 114,82,35,38,86,40,2,252,0,0,42,0,0,0,0,0,0,0,0,127,64,0,0,0,2,252,0,0,127,64,0,0,0,2,252,0,0,127,64,0,0,0,2,252,255,255,255,255,255,192,0,2,252,255,255,255,255,255,195,248,2,252,255,255,255,255,255,195,248,2,252,253,0,0,0,31,195,248,2,252,253,0,63,0,31,195,248,2,252,253,0,63,0,31,195,248,2,252,111,170,255,234,190,131,248,2,252,15,255,255,255,252,3,248,2,252,15,255,255,255,252,3,248,2,252,0,0,63,0,0,3,248,2,252,0,0,63,0,0,3,248,2,252,6,170,191,170,160,3,248,2,252,7,255,255,255,244,3,248,2,252,7,255,255,255,244,3,248,2,252,0,0,63,0,0,3,248,2,252,0,0,63,0,0,3,248,2,252,191,255,255,255,255,131,248,2,252,255,255,255,255,255,131,248,2,252,255,255,255,255,255,131,248,2,252,0,0,0,0,0,3,248,2,252,0,0,0,0,0,3,248,2,252,7,255,255,255,248,3,248,2,252,11,255,255,255,252,3,248,2,252,11,255,255,255,252,0,0,2,252,11,240,0,2,252,0,0,2,252,11,240,0,2,252,0,0,2,252,11,240,0,2,252,0,0,2,252,11,240,0,2,252,0,0,2,252,11,240,0,2,252,0,0,2,252,11,255,255,255,252,0,0,3,252,11,255,255,255,252,0,63,255,252,11,255,255,255,252,0,31,255,248,11,240,0,2,252,0,15,255,240,7,224,0,0,84,0,15,250,64, + // 0x529b 力 + 155,82,34,39,95,40,2,251,0,0,0,10,160,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,47,255,255,255,255,255,255,255,240,47,255,255,255,255,255,255,255,240,47,255,255,255,255,255,255,255,240,47,255,255,255,255,255,255,255,240,0,0,0,31,224,0,0,15,240,0,0,0,31,224,0,0,15,240,0,0,0,47,208,0,0,15,240,0,0,0,47,208,0,0,15,240,0,0,0,63,192,0,0,15,240,0,0,0,63,192,0,0,15,224,0,0,0,127,128,0,0,15,224,0,0,0,255,64,0,0,15,224,0,0,0,255,0,0,0,31,224,0,0,1,255,0,0,0,31,208,0,0,3,253,0,0,0,31,208,0,0,7,252,0,0,0,47,208,0,0,15,248,0,0,0,47,192,0,0,47,240,0,0,0,63,192,0,0,63,224,0,0,0,63,192,0,0,255,192,0,0,0,63,192,0,3,255,64,0,0,0,127,128,0,11,254,0,0,0,0,127,128,0,63,252,0,0,0,0,191,64,0,255,240,0,0,0,0,255,0,7,255,192,0,0,0,3,255,0,47,255,0,0,0,255,255,254,0,127,252,0,0,0,255,255,252,0,31,208,0,0,0,127,255,240,0,11,0,0,0,0,42,170,64,0,0,0,0,0,0,0,0,0,0, + // 0x529f 功 + 159,82,37,37,114,40,1,252,0,0,0,0,0,11,240,0,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,0,11,240,0,0,0,63,255,255,254,0,11,240,0,0,0,63,255,255,254,0,11,240,0,0,0,63,255,255,254,0,11,240,0,0,0,42,171,250,169,0,11,240,0,0,0,0,7,244,0,106,175,250,170,170,0,0,7,244,0,255,255,255,255,255,64,0,7,244,0,255,255,255,255,255,64,0,7,244,0,255,255,255,255,255,64,0,7,244,0,0,15,240,0,127,64,0,7,244,0,0,15,224,0,127,64,0,7,244,0,0,15,224,0,127,64,0,7,244,0,0,31,208,0,127,0,0,7,244,0,0,31,208,0,127,0,0,7,244,0,0,31,208,0,191,0,0,7,244,0,0,47,192,0,191,0,0,7,244,0,0,63,192,0,191,0,0,7,244,0,0,63,192,0,191,0,0,7,244,0,0,63,128,0,191,0,0,7,244,111,64,191,64,0,255,0,0,7,255,255,128,255,0,0,255,0,0,31,255,255,128,255,0,0,255,0,27,255,255,254,66,253,0,0,254,0,127,255,255,144,3,252,0,0,254,0,63,255,144,0,11,248,0,0,254,0,63,228,0,0,31,240,0,1,253,0,20,0,0,0,63,224,0,1,253,0,0,0,0,0,255,192,0,2,252,0,0,0,0,3,255,0,0,3,252,0,0,0,0,31,253,0,0,11,252,0,0,0,0,255,244,0,255,255,244,0,0,0,0,255,208,0,191,255,240,0,0,0,0,63,64,0,127,255,192,0,0,0,0,24,0,0,22,148,0,0, + // 0x52a0 加 + 160,82,36,37,77,40,1,252,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,31,255,255,253,0,11,240,0,0,31,255,255,253,0,11,240,0,0,31,255,255,253,47,255,255,255,252,31,234,170,253,47,255,255,255,252,31,192,0,253,47,255,255,255,252,31,192,0,253,26,175,250,171,248,31,192,0,253,0,11,240,3,248,31,192,0,253,0,15,240,3,248,31,192,0,253,0,15,240,3,248,31,192,0,253,0,15,224,3,248,31,192,0,253,0,15,224,3,248,31,192,0,253,0,15,224,3,248,31,192,0,253,0,15,224,3,248,31,192,0,253,0,15,208,3,248,31,192,0,253,0,31,208,3,248,31,192,0,253,0,31,192,3,248,31,192,0,253,0,47,192,3,244,31,192,0,253,0,63,192,3,244,31,192,0,253,0,63,128,3,244,31,192,0,253,0,63,128,7,244,31,192,0,253,0,127,64,7,244,31,192,0,253,0,191,0,7,244,31,192,0,253,0,255,0,7,240,31,192,0,253,1,254,0,11,240,31,192,0,253,3,252,0,11,240,31,234,170,253,7,248,0,15,240,31,255,255,253,15,244,0,15,240,31,255,255,253,47,240,106,191,224,31,255,255,253,127,208,63,255,208,31,192,0,253,127,128,63,255,128,31,192,0,253,15,0,47,253,0,31,192,0,169,4,0,0,0,0,0,0,0,0, + // 0x52a8 动 + 168,82,36,37,77,40,2,252,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,5,85,85,85,64,2,252,0,0,31,255,255,255,192,2,252,0,0,31,255,255,255,192,2,252,0,0,31,255,255,255,192,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,6,171,254,170,169,0,0,0,0,15,255,255,255,254,0,0,0,0,15,255,255,255,254,0,0,0,0,15,255,255,255,254,255,255,255,255,224,3,252,0,254,255,255,255,255,224,3,248,0,254,255,255,255,255,224,3,248,0,254,85,127,229,85,80,3,248,0,254,0,63,192,0,0,3,244,0,253,0,63,128,0,0,7,244,0,253,0,127,64,4,0,7,244,0,253,0,191,0,252,0,11,240,1,253,0,255,0,254,0,11,240,1,253,0,254,0,127,0,15,240,1,253,1,252,0,63,64,15,224,1,252,2,252,0,47,128,31,208,1,252,3,248,0,31,192,47,192,2,252,7,240,0,111,208,63,192,2,252,15,240,111,255,224,63,128,2,252,31,255,255,255,240,191,64,3,252,63,255,255,251,244,255,0,3,252,63,255,249,3,249,254,0,3,248,63,249,0,2,147,252,0,3,248,46,64,0,0,11,252,0,7,244,0,0,0,0,31,244,0,15,240,0,0,0,0,127,224,255,255,240,0,0,0,0,191,192,191,255,208,0,0,0,0,31,0,127,255,128,0,0,0,0,9,0,26,164,0, + // 0x5316 化 + 22,83,38,37,114,40,1,252,0,0,3,144,11,240,0,0,0,0,0,0,11,248,11,240,0,0,0,0,0,0,15,240,11,240,0,0,0,0,0,0,47,224,11,240,0,0,0,0,0,0,63,192,11,240,0,0,0,0,0,0,255,128,11,240,0,0,0,0,0,1,255,0,11,240,0,0,0,0,0,3,254,0,11,240,0,0,160,0,0,11,252,0,11,240,0,2,244,0,0,31,244,0,11,240,0,15,253,0,0,63,244,0,11,240,0,127,253,0,0,255,244,0,11,240,2,255,240,0,2,255,244,0,11,240,31,255,128,0,11,255,244,0,11,240,255,252,0,0,47,255,244,0,11,251,255,208,0,0,191,247,244,0,11,255,254,0,0,0,255,215,244,0,11,255,224,0,0,0,63,71,244,0,11,255,64,0,0,0,45,7,244,0,11,244,0,0,0,0,4,7,244,0,11,240,0,0,0,0,0,7,244,0,11,240,0,0,0,0,0,7,244,0,11,240,0,0,0,0,0,7,244,0,11,240,0,0,0,0,0,7,244,0,11,240,0,0,0,0,0,7,244,0,11,240,0,0,0,0,0,7,244,0,11,240,0,0,4,0,0,7,244,0,11,240,0,0,15,128,0,7,244,0,11,240,0,0,15,224,0,7,244,0,11,240,0,0,15,208,0,7,244,0,11,240,0,0,15,208,0,7,244,0,11,240,0,0,31,192,0,7,244,0,11,244,0,0,63,192,0,7,244,0,7,254,85,86,255,128,0,7,244,0,3,255,255,255,255,64,0,7,244,0,2,255,255,255,254,0,0,7,244,0,0,111,255,255,244,0,0,2,160,0,0,0,0,0,0,0, + // 0x5347 升 + 71,83,36,37,77,40,2,252,0,0,0,1,244,0,254,0,0,0,0,0,31,252,0,254,0,0,0,0,2,255,255,0,254,0,0,0,0,127,255,248,0,254,0,0,0,31,255,255,128,0,254,0,0,27,255,255,228,0,0,254,0,0,127,255,255,128,0,0,254,0,0,63,254,127,128,0,0,254,0,0,30,64,63,128,0,0,254,0,0,0,0,63,128,0,0,254,0,0,0,0,63,128,0,0,254,0,0,0,0,63,128,0,0,254,0,0,0,0,63,128,0,0,254,0,0,0,0,63,128,0,0,254,0,0,0,0,63,128,0,0,254,0,0,170,170,191,234,170,170,255,170,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,127,64,0,0,254,0,0,0,0,127,64,0,0,254,0,0,0,0,191,0,0,0,254,0,0,0,0,191,0,0,0,254,0,0,0,0,255,0,0,0,254,0,0,0,0,255,0,0,0,254,0,0,0,2,253,0,0,0,254,0,0,0,3,252,0,0,0,254,0,0,0,11,252,0,0,0,254,0,0,0,15,244,0,0,0,254,0,0,0,63,240,0,0,0,254,0,0,0,255,192,0,0,0,254,0,0,3,255,128,0,0,0,254,0,0,15,254,0,0,0,0,254,0,0,191,248,0,0,0,0,254,0,0,191,224,0,0,0,0,254,0,0,47,64,0,0,0,0,254,0,0,8,0,0,0,0,0,253,0,0, + // 0x534a 半 + 74,83,36,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,9,0,0,255,0,0,164,0,0,191,0,0,255,0,0,255,64,0,255,64,0,255,0,1,255,0,0,127,192,0,255,0,3,253,0,0,47,224,0,255,0,7,252,0,0,15,240,0,255,0,15,244,0,0,11,248,0,255,0,31,240,0,0,3,252,0,255,0,63,208,0,0,3,253,0,255,0,191,128,0,0,1,253,0,255,0,191,0,0,0,0,128,0,255,0,5,0,0,0,0,0,0,255,0,0,0,0,2,170,170,170,255,170,170,170,144,7,255,255,255,255,255,255,255,224,7,255,255,255,255,255,255,255,224,7,255,255,255,255,255,255,255,224,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,171,255,170,170,170,170,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0, + // 0x534f 协 + 79,83,37,38,124,40,2,252,0,190,0,0,0,84,0,0,0,0,0,254,0,0,1,252,0,0,0,0,0,254,0,0,1,252,0,0,0,0,0,254,0,0,1,252,0,0,0,0,0,254,0,0,1,252,0,0,0,0,0,254,0,0,1,252,0,0,0,0,0,254,0,0,1,252,0,0,0,0,0,254,0,0,1,252,0,0,0,0,0,254,0,63,255,255,255,253,0,0,85,255,85,63,255,255,255,253,0,0,255,255,255,63,255,255,255,253,0,0,255,255,255,42,171,254,170,253,0,0,255,255,255,0,2,252,1,252,0,0,0,254,0,0,2,252,1,252,0,0,0,254,0,0,3,248,1,252,0,0,0,254,0,62,3,248,1,254,176,0,0,254,0,127,3,248,1,255,244,0,0,254,0,191,3,244,1,254,252,0,0,254,0,254,7,244,1,253,252,0,0,254,0,253,7,240,2,252,253,0,0,254,1,252,11,240,2,252,254,0,0,254,3,252,15,240,2,252,191,0,0,254,3,244,31,224,2,252,127,0,0,254,11,240,47,192,2,252,63,0,0,254,31,224,63,192,2,252,63,64,0,254,15,192,127,128,3,252,63,128,0,254,2,128,255,0,3,248,47,128,0,254,0,1,255,0,3,248,24,0,0,254,0,3,253,0,3,248,0,0,0,254,0,11,252,0,3,248,0,0,0,254,0,31,244,0,3,244,0,0,0,254,0,63,224,0,7,244,0,0,0,254,0,255,192,0,11,240,0,0,0,254,3,255,64,0,31,240,0,0,0,254,15,253,0,255,255,224,0,0,0,254,31,248,0,191,255,192,0,0,0,254,7,224,0,127,255,64,0,0,0,190,1,128,0,21,80,0,0,0, + // 0x5355 单 + 85,83,36,38,86,40,2,252,0,0,20,0,0,0,4,0,0,0,1,253,0,0,0,47,208,0,0,1,255,0,0,0,63,208,0,0,0,191,192,0,0,255,128,0,0,0,63,224,0,1,255,0,0,0,0,15,240,0,3,253,0,0,0,0,11,224,0,11,248,0,0,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,254,0,0,255,0,0,127,64,0,254,0,0,255,0,0,127,64,0,254,0,0,255,0,0,127,64,0,254,0,0,255,0,0,127,64,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,254,0,0,255,0,0,127,64,0,254,0,0,255,0,0,127,64,0,254,0,0,255,0,0,127,64,0,254,0,0,255,0,0,127,64,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,85,255,85,85,85,85,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,170,0,0,0,0, + // 0x5361 卡 + 97,83,36,38,86,40,2,252,0,0,0,2,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,254,170,170,169,0,0,0,0,3,255,255,255,254,0,0,0,0,3,255,255,255,254,0,0,0,0,3,255,255,255,254,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,171,254,170,170,170,170,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,64,0,0,0,0,0,0,3,255,249,0,0,0,0,0,0,3,255,255,228,0,0,0,0,0,3,255,255,255,144,0,0,0,0,3,252,111,255,253,0,0,0,0,3,252,1,255,255,192,0,0,0,3,252,0,11,255,128,0,0,0,3,252,0,0,127,0,0,0,0,3,252,0,0,5,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,2,252,0,0,0,0, + // 0x5370 印 + 112,83,33,38,86,40,4,252,0,0,1,64,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,2,255,244,0,0,0,0,0,0,127,255,248,63,255,255,255,192,251,255,255,128,63,255,255,255,192,255,255,228,0,63,255,255,255,192,255,249,0,0,63,234,170,191,192,255,64,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,255,255,244,63,128,0,63,192,255,255,255,244,63,128,0,63,192,255,255,255,244,63,128,0,63,192,255,170,170,160,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,255,255,244,63,128,0,63,192,255,255,255,244,63,129,255,255,128,255,255,255,244,63,128,255,255,128,255,170,170,164,63,128,191,255,0,255,0,0,0,63,128,63,228,0,255,0,0,0,63,128,0,0,0,255,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,42,64,0,0,0, + // 0x5371 危 + 113,83,37,38,124,40,1,252,0,0,3,148,0,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,0,0,47,255,255,255,208,0,0,0,0,0,63,255,255,255,248,0,0,0,0,0,255,255,255,255,244,0,0,0,0,2,255,0,0,47,240,0,0,0,0,7,253,0,0,63,192,0,0,0,0,31,248,0,0,255,128,0,0,0,0,127,245,85,86,255,85,85,85,0,1,255,255,255,255,255,255,255,255,64,11,255,255,255,255,255,255,255,255,64,47,255,255,255,255,255,255,255,255,64,127,255,208,0,0,0,0,0,0,0,31,223,208,0,0,0,0,0,0,0,7,31,208,0,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,0,31,208,63,255,255,255,253,0,0,0,31,208,63,255,255,255,253,0,0,0,31,208,63,255,255,255,253,0,0,0,31,208,63,128,0,1,253,0,0,0,31,192,63,128,0,1,252,0,0,0,47,192,63,128,0,2,252,0,0,0,47,192,63,128,0,2,252,0,0,0,63,192,63,128,0,3,252,0,0,0,63,128,63,128,0,7,248,0,0,0,63,64,63,128,31,255,244,0,0,0,127,64,63,128,15,255,240,0,0,0,191,0,63,128,15,255,128,8,0,0,255,0,63,128,0,0,0,31,192,2,253,0,63,128,0,0,0,31,192,3,252,0,63,128,0,0,0,47,192,11,248,0,63,128,0,0,0,63,192,15,240,0,63,208,0,0,0,191,128,63,224,0,47,255,255,255,255,255,64,127,192,0,15,255,255,255,255,255,0,15,64,0,7,255,255,255,255,248,0,1,0,0,0,21,85,85,85,64,0, + // 0x5374 却 + 116,83,36,38,86,40,1,252,0,0,42,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,10,170,170,169,0,0,63,64,0,31,255,255,254,0,0,63,64,0,31,255,255,254,0,0,63,64,0,31,255,255,254,5,85,127,149,84,31,192,0,254,15,255,255,255,252,31,192,0,254,15,255,255,255,252,31,192,0,254,15,255,255,255,252,31,192,0,254,0,0,63,64,0,31,192,0,254,0,0,63,64,0,31,192,0,254,0,0,63,64,0,31,192,0,254,0,0,63,64,0,31,192,0,254,0,0,63,64,0,31,192,0,254,0,0,63,64,0,31,192,0,254,127,255,255,255,255,95,192,0,254,127,255,255,255,255,95,192,0,254,127,255,255,255,255,95,192,0,254,21,91,253,85,85,31,192,0,254,0,11,248,0,0,31,192,0,254,0,15,240,0,0,31,192,0,254,0,15,240,0,0,31,192,0,254,0,31,224,27,0,31,192,0,254,0,47,192,127,64,31,192,0,254,0,63,192,63,192,31,192,0,254,0,127,64,31,224,31,192,0,254,0,191,0,11,240,31,193,255,254,0,254,0,3,248,31,192,255,253,1,254,106,255,252,31,192,255,252,127,255,255,255,254,31,192,191,208,63,255,255,255,255,31,192,0,0,63,255,255,165,191,95,192,0,0,62,165,0,0,63,159,192,0,0,0,0,0,0,46,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,31,192,0,0, + // 0x5378 卸 + 120,83,36,38,86,40,1,252,0,10,64,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,47,192,0,0,5,85,85,85,0,63,128,0,0,15,255,255,255,0,127,149,85,84,15,255,255,255,0,255,255,255,254,15,255,255,255,1,255,255,255,254,15,208,0,191,3,255,255,255,254,15,208,0,191,11,244,31,192,0,15,208,0,191,31,240,31,192,0,15,208,0,191,63,208,31,192,0,15,208,0,191,11,128,31,192,0,15,208,0,191,1,0,31,192,0,15,208,0,191,63,255,255,255,255,79,208,0,191,63,255,255,255,255,79,208,0,191,63,255,255,255,255,79,208,0,191,21,85,111,213,85,15,208,0,191,0,0,31,192,0,15,208,0,191,0,0,31,192,0,15,208,0,191,2,244,31,192,0,15,208,0,191,3,244,31,192,0,15,208,0,191,3,244,31,255,252,15,208,0,191,3,244,31,255,252,15,208,0,191,3,244,31,255,252,15,208,0,191,3,244,31,192,0,15,208,0,191,3,244,31,192,0,15,208,0,191,3,244,31,192,0,15,208,0,191,3,244,31,192,0,15,208,0,255,3,244,31,192,0,15,208,255,255,3,244,31,192,26,79,208,191,254,3,244,31,255,255,79,208,127,252,3,255,255,255,255,79,208,62,144,127,255,255,255,255,79,208,0,0,127,255,255,249,64,15,208,0,0,127,255,148,0,0,15,208,0,0,57,64,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0, + // 0x538b 压 + 139,83,37,36,104,40,1,252,1,255,255,255,255,255,255,255,255,192,1,255,255,255,255,255,255,255,255,192,1,255,255,255,255,255,255,255,255,192,1,254,170,170,170,170,170,170,170,128,1,252,0,0,0,0,0,0,0,0,1,252,0,0,0,85,0,0,0,0,1,252,0,0,0,254,0,0,0,0,1,252,0,0,0,254,0,0,0,0,1,252,0,0,0,254,0,0,0,0,1,252,0,0,0,254,0,0,0,0,1,252,0,0,0,254,0,0,0,0,1,252,0,0,0,254,0,0,0,0,1,252,0,0,0,254,0,0,0,0,1,252,0,0,0,254,0,0,0,0,1,252,47,255,255,255,255,255,252,0,1,252,47,255,255,255,255,255,252,0,1,252,47,255,255,255,255,255,252,0,1,252,26,170,170,255,170,170,168,0,2,252,0,0,0,254,0,0,0,0,2,252,0,0,0,254,0,0,0,0,2,252,0,0,0,254,1,224,0,0,2,248,0,0,0,254,7,248,0,0,3,248,0,0,0,254,3,254,0,0,3,248,0,0,0,254,0,255,128,0,3,244,0,0,0,254,0,63,224,0,7,244,0,0,0,254,0,15,244,0,7,240,0,0,0,254,0,3,224,0,11,240,0,0,0,254,0,1,64,0,15,224,0,0,0,254,0,0,0,0,15,224,0,0,0,254,0,0,0,0,47,210,170,170,170,255,170,170,170,64,63,195,255,255,255,255,255,255,255,192,127,131,255,255,255,255,255,255,255,192,127,67,255,255,255,255,255,255,255,192,31,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, + // 0x539f 原 + 159,83,37,36,104,40,1,252,0,255,255,255,255,255,255,255,255,128,0,255,255,255,255,255,255,255,255,128,0,255,255,255,255,255,255,255,255,128,0,255,85,85,86,255,85,85,85,64,0,254,0,0,1,255,0,0,0,0,0,254,0,0,2,254,0,0,0,0,0,254,0,0,3,253,0,0,0,0,0,254,3,255,255,255,255,255,224,0,0,254,3,255,255,255,255,255,224,0,0,254,3,255,255,255,255,255,224,0,0,254,3,248,0,0,0,15,224,0,0,254,3,248,0,0,0,15,224,0,0,254,3,248,0,0,0,15,224,0,0,254,3,254,170,170,170,191,224,0,0,254,3,255,255,255,255,255,224,0,0,254,3,255,255,255,255,255,224,0,0,254,3,248,0,0,0,15,224,0,0,254,3,248,0,0,0,15,224,0,0,254,3,248,0,0,0,15,224,0,0,253,3,255,255,255,255,255,224,0,1,253,3,255,255,255,255,255,224,0,1,253,3,255,255,255,255,255,224,0,1,252,0,0,0,191,0,0,0,0,2,252,0,0,0,191,0,0,0,0,3,252,0,62,64,191,0,184,0,0,3,248,0,127,192,191,3,254,0,0,3,248,0,255,0,191,1,255,128,0,7,244,3,254,0,191,0,63,224,0,11,240,11,252,0,191,0,31,248,0,15,240,47,240,0,191,0,7,253,0,15,224,191,208,0,191,0,1,255,0,47,211,255,64,0,191,0,0,191,192,63,195,253,1,65,255,0,0,63,128,127,128,180,3,255,255,0,0,13,0,47,0,0,1,255,253,0,0,0,0,2,0,0,0,255,228,0,0,0,0, + // 0x53cc 双 + 204,83,37,35,94,40,1,252,10,170,170,169,2,170,170,170,164,0,31,255,255,255,199,255,255,255,255,0,31,255,255,255,199,255,255,255,254,0,31,255,255,255,199,255,255,255,253,0,0,0,0,63,194,252,0,1,253,0,0,0,0,63,129,252,0,2,252,0,0,0,0,63,128,253,0,2,252,0,0,0,0,127,64,254,0,3,252,0,1,192,0,191,0,255,0,3,248,0,11,240,0,191,0,191,0,7,244,0,15,248,0,255,0,127,0,11,240,0,3,254,0,254,0,63,64,15,240,0,1,255,65,253,0,63,128,15,224,0,0,127,195,252,0,63,192,47,208,0,0,47,243,252,0,47,192,63,192,0,0,15,255,248,0,15,208,127,128,0,0,3,255,244,0,15,240,191,64,0,0,1,255,240,0,11,240,255,0,0,0,0,255,224,0,7,250,254,0,0,0,0,63,224,0,3,255,252,0,0,0,0,127,240,0,2,255,248,0,0,0,0,191,252,0,0,255,240,0,0,0,0,255,254,0,0,191,224,0,0,0,2,255,255,0,0,191,192,0,0,0,7,252,255,128,1,255,224,0,0,0,15,248,63,208,7,255,244,0,0,0,47,240,47,240,31,255,252,0,0,0,127,208,15,192,127,247,255,0,0,1,255,128,11,1,255,208,255,192,0,3,255,0,0,11,255,64,127,240,0,15,253,0,0,127,253,0,47,254,0,127,244,0,2,255,244,0,11,255,192,63,224,0,0,255,128,0,1,255,64,15,64,0,0,125,0,0,0,62,0,1,0,0,0,32,0,0,0,8,0, + // 0x53cd 反 + 205,83,36,36,68,40,2,252,0,42,170,170,170,170,170,170,160,0,127,255,255,255,255,255,255,240,0,127,255,255,255,255,255,255,240,0,127,255,255,255,255,255,255,240,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,255,255,255,255,255,253,0,0,127,255,255,255,255,255,255,0,0,127,255,255,255,255,255,254,0,0,127,239,254,170,170,171,253,0,0,127,67,252,0,0,3,252,0,0,127,66,253,0,0,11,248,0,0,127,1,255,0,0,15,240,0,0,191,0,255,64,0,47,224,0,0,191,0,127,192,0,63,208,0,0,255,0,63,208,0,255,192,0,0,255,0,31,244,2,255,0,0,0,254,0,11,252,11,254,0,0,0,253,0,3,255,31,252,0,0,1,253,0,1,255,255,240,0,0,2,252,0,0,191,255,208,0,0,3,252,0,0,47,255,64,0,0,3,248,0,0,47,255,64,0,0,11,244,0,1,255,255,240,0,0,15,240,0,15,255,255,254,0,0,31,224,1,255,254,31,255,228,0,63,208,111,255,244,3,255,255,144,127,195,255,255,128,0,127,255,253,191,65,255,248,0,0,7,255,252,31,0,191,64,0,0,0,111,240,0,0,32,0,0,0,0,1,144, + // 0x53d6 取 + 214,83,38,36,104,40,1,252,21,85,85,85,85,64,0,0,0,0,63,255,255,255,255,128,0,0,0,0,63,255,255,255,255,128,0,0,0,0,63,255,255,255,255,234,170,170,169,0,0,254,0,11,241,255,255,255,255,64,0,254,0,11,241,255,255,255,255,0,0,254,0,11,241,255,255,255,255,0,0,254,0,11,240,26,0,0,255,0,0,254,0,11,240,255,0,0,254,0,0,255,255,255,240,191,0,0,254,0,0,255,255,255,240,127,64,1,253,0,0,255,255,255,240,63,128,2,252,0,0,254,85,95,240,63,192,3,252,0,0,254,0,11,240,47,192,3,248,0,0,254,0,11,240,31,208,7,244,0,0,254,0,11,240,15,224,11,240,0,0,254,0,11,240,15,240,15,240,0,0,254,85,95,240,11,244,31,224,0,0,255,255,255,240,3,248,47,192,0,0,255,255,255,240,3,252,63,192,0,0,255,255,255,240,1,253,191,128,0,0,254,0,11,240,0,255,255,0,0,0,254,0,11,240,0,191,254,0,0,0,254,0,11,240,0,63,252,0,0,0,254,0,11,240,0,47,248,0,0,0,254,0,111,240,0,47,244,0,0,0,255,255,255,240,0,127,253,0,0,191,255,255,255,240,0,255,255,0,0,191,255,255,255,240,3,255,255,192,0,127,255,229,11,240,15,252,127,240,0,62,80,0,11,240,127,240,31,252,0,0,0,0,11,242,255,192,11,255,128,0,0,0,11,255,255,64,2,255,224,0,0,0,11,243,248,0,0,127,192,0,0,0,11,241,208,0,0,15,0,0,0,0,11,224,0,0,0,0,0, + // 0x53d8 变 + 216,83,36,38,86,40,2,252,0,0,0,1,188,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,191,192,0,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,21,85,86,253,85,127,149,85,84,0,0,2,252,0,127,64,0,0,0,15,146,252,0,127,66,128,0,0,31,210,252,0,127,95,224,0,0,63,194,252,0,127,79,248,0,0,191,66,252,0,127,67,254,0,0,255,2,252,0,127,64,255,128,3,253,2,252,0,127,64,63,208,15,248,2,252,0,127,64,31,240,31,240,2,252,0,127,64,7,248,7,192,2,252,0,127,64,2,208,0,0,2,252,0,127,64,0,0,0,0,1,168,0,42,64,0,0,0,0,0,0,0,0,0,64,0,2,255,255,255,255,255,255,244,0,2,255,255,255,255,255,255,252,0,2,255,255,255,255,255,255,244,0,0,3,252,0,0,0,63,224,0,0,1,255,0,0,0,255,192,0,0,0,127,192,0,3,255,0,0,0,0,47,244,0,31,252,0,0,0,0,11,255,0,191,240,0,0,0,0,1,255,235,255,128,0,0,0,0,0,63,255,253,0,0,0,0,0,0,31,255,244,0,0,0,0,0,27,255,255,255,208,0,0,0,26,255,255,235,255,255,148,0,111,255,255,253,0,191,255,255,249,127,255,255,64,0,6,255,255,253,63,254,144,0,0,0,6,255,252,30,64,0,0,0,0,0,5,176, + // 0x53f0 台 + 240,83,36,38,86,40,2,252,0,0,0,120,0,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,253,0,0,16,0,0,0,0,11,252,0,0,184,0,0,0,0,15,244,0,3,254,0,0,0,0,47,224,0,2,255,192,0,0,0,63,192,0,0,191,240,0,0,0,255,64,0,0,31,252,0,0,1,255,0,0,0,7,255,0,0,3,254,86,170,191,255,255,128,127,255,255,255,255,255,255,255,224,127,255,255,255,255,255,255,255,244,63,255,255,255,255,255,234,175,252,63,250,169,85,0,0,0,3,255,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,0,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,170,170,170,170,170,164,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,234,170,170,170,171,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,192,0,0,0,3,252,0,0,42,128,0,0,0,2,168,0, + // 0x5403 吃 + 3,84,36,37,77,40,3,253,0,0,0,0,9,64,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,255,255,252,0,191,64,0,0,0,255,255,252,0,255,0,0,0,0,255,255,252,1,255,255,255,255,248,255,170,252,3,255,255,255,255,248,253,1,252,7,255,255,255,255,248,253,1,252,15,249,85,85,85,84,253,1,252,47,224,0,0,0,0,253,1,252,127,192,0,0,0,0,253,1,253,255,128,0,0,0,0,253,1,254,255,0,0,0,0,0,253,1,252,189,85,85,85,84,0,253,1,252,20,255,255,255,255,64,253,1,252,0,255,255,255,255,64,253,1,252,0,255,255,255,253,0,253,1,252,0,0,0,191,240,0,253,1,252,0,0,2,255,192,0,253,1,252,0,0,11,254,0,0,253,1,252,0,0,63,248,0,0,253,1,252,0,0,255,208,0,0,253,1,252,0,3,255,64,0,0,255,255,252,0,15,252,0,0,0,255,255,252,0,63,240,0,0,0,255,255,252,0,255,192,0,0,0,255,170,168,2,255,0,0,0,64,253,0,0,7,252,0,0,0,249,253,0,0,15,240,0,0,0,254,253,0,0,31,208,0,0,0,253,0,0,0,47,192,0,0,0,253,0,0,0,63,192,0,0,1,252,0,0,0,47,254,170,170,171,252,0,0,0,31,255,255,255,255,248,0,0,0,7,255,255,255,255,240,0,0,0,0,191,255,255,255,128, + // 0x5408 合 + 8,84,38,38,124,40,1,252,0,0,0,0,106,128,0,0,0,0,0,0,0,0,255,224,0,0,0,0,0,0,0,2,255,244,0,0,0,0,0,0,0,7,255,252,0,0,0,0,0,0,0,31,251,255,0,0,0,0,0,0,0,63,240,255,192,0,0,0,0,0,0,255,192,127,240,0,0,0,0,0,3,255,64,31,252,0,0,0,0,0,15,253,0,7,255,64,0,0,0,0,127,244,0,1,255,208,0,0,0,1,255,208,0,0,127,248,0,0,0,11,255,64,0,0,15,255,64,0,0,63,253,0,0,0,3,255,224,0,2,255,249,85,85,85,85,255,254,0,31,255,127,255,255,255,255,223,255,208,127,252,63,255,255,255,255,195,255,208,47,208,63,255,255,255,255,192,127,128,15,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,85,85,85,85,84,0,0,0,3,255,255,255,255,255,253,0,0,0,3,255,255,255,255,255,253,0,0,0,3,255,255,255,255,255,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,255,255,255,255,255,253,0,0,0,3,255,255,255,255,255,253,0,0,0,3,255,255,255,255,255,253,0,0,0,3,249,85,85,85,86,253,0,0,0,3,244,0,0,0,1,253,0,0, + // 0x540d 名 + 13,84,35,38,86,40,1,252,0,0,0,46,144,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,7,255,255,255,255,0,0,0,0,31,255,255,255,255,192,0,0,0,63,255,255,255,255,128,0,0,1,255,213,85,85,255,0,0,0,7,255,0,0,2,255,0,0,0,31,252,0,0,3,253,0,0,0,191,253,0,0,15,248,0,0,7,255,255,128,0,31,240,0,0,47,255,255,240,0,63,208,0,0,63,248,63,252,0,255,192,0,0,15,208,11,255,3,255,0,0,0,6,0,2,255,203,253,0,0,0,0,0,0,127,255,244,0,0,0,0,0,0,31,255,224,0,0,0,0,0,0,11,255,128,0,0,0,0,0,0,31,254,0,0,0,0,0,0,0,191,255,255,255,255,244,0,0,7,255,255,255,255,255,244,0,0,63,255,255,255,255,255,244,0,2,255,254,85,85,85,91,244,0,111,255,254,0,0,0,7,244,11,255,254,254,0,0,0,7,244,127,255,224,254,0,0,0,7,244,47,254,0,254,0,0,0,7,244,15,208,0,254,0,0,0,7,244,5,0,0,254,0,0,0,7,244,0,0,0,254,0,0,0,7,244,0,0,0,254,0,0,0,7,244,0,0,0,254,85,85,85,91,244,0,0,0,255,255,255,255,255,244,0,0,0,255,255,255,255,255,244,0,0,0,255,255,255,255,255,244,0,0,0,254,0,0,0,7,244,0,0,0,169,0,0,0,7,244, + // 0x540e 后 + 14,84,38,38,124,40,1,252,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,26,255,64,0,0,0,0,0,5,175,255,255,208,0,0,41,21,175,255,255,255,255,224,0,0,63,255,255,255,255,255,228,0,0,0,63,255,255,255,250,80,0,0,0,0,63,255,233,80,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,234,170,170,170,170,170,170,144,0,63,255,255,255,255,255,255,255,208,0,63,255,255,255,255,255,255,255,208,0,63,255,255,255,255,255,255,255,208,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,0,127,64,85,85,85,85,85,80,0,0,127,65,255,255,255,255,255,240,0,0,191,1,255,255,255,255,255,240,0,0,191,1,255,255,255,255,255,240,0,0,255,1,252,0,0,0,11,240,0,0,255,1,252,0,0,0,11,240,0,0,254,1,252,0,0,0,11,240,0,1,254,1,252,0,0,0,11,240,0,2,253,1,252,0,0,0,11,240,0,3,252,1,252,0,0,0,11,240,0,3,248,1,252,0,0,0,11,240,0,11,244,1,252,0,0,0,11,240,0,15,240,1,254,85,85,85,95,240,0,47,224,1,255,255,255,255,255,240,0,63,192,1,255,255,255,255,255,240,0,127,128,1,255,255,255,255,255,240,0,31,0,1,252,0,0,0,11,240,0,5,0,1,252,0,0,0,11,240,0, + // 0x5411 向 + 17,84,33,38,86,40,4,252,0,0,0,58,64,0,0,0,0,0,0,0,127,224,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,3,252,0,0,0,0,0,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,64,255,170,170,170,170,170,170,255,64,254,0,0,0,0,0,0,127,64,254,0,0,0,0,0,0,127,64,254,0,0,0,0,0,0,127,64,254,0,0,0,0,0,0,127,64,254,0,21,85,85,84,0,127,64,254,0,255,255,255,254,0,127,64,254,0,255,255,255,254,0,127,64,254,0,255,255,255,254,0,127,64,254,0,254,0,0,190,0,127,64,254,0,254,0,0,190,0,127,64,254,0,254,0,0,190,0,127,64,254,0,254,0,0,190,0,127,64,254,0,254,0,0,190,0,127,64,254,0,254,0,0,190,0,127,64,254,0,254,0,0,190,0,127,64,254,0,255,255,255,254,0,127,64,254,0,255,255,255,254,0,127,64,254,0,255,255,255,254,0,127,64,254,0,254,85,85,84,0,127,64,254,0,254,0,0,0,0,127,64,254,0,254,0,0,0,0,127,64,254,0,0,0,0,0,0,127,64,254,0,0,0,0,0,0,191,0,254,0,0,0,0,31,255,255,0,254,0,0,0,0,15,255,255,0,254,0,0,0,0,11,255,253,0,253,0,0,0,0,7,250,144,0, + // 0x5426 否 + 38,84,37,36,104,40,1,252,5,85,85,85,85,85,85,85,85,0,15,255,255,255,255,255,255,255,255,64,15,255,255,255,255,255,255,255,255,64,15,255,255,255,255,255,255,255,255,64,0,0,0,0,15,252,0,0,0,0,0,0,0,0,127,244,0,0,0,0,0,0,0,1,255,208,0,0,0,0,0,0,0,11,255,192,0,0,0,0,0,0,0,127,255,193,253,0,0,0,0,0,2,255,255,199,255,208,0,0,0,0,47,255,191,194,255,248,0,0,0,2,255,252,63,192,47,255,128,0,0,47,255,224,63,192,2,255,244,0,7,255,255,0,63,192,0,63,255,0,127,255,244,0,63,192,0,7,255,192,47,255,64,0,63,192,0,0,191,64,15,244,0,0,63,192,0,0,29,0,2,0,0,0,63,192,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,255,64,0,0,15,255,255,255,255,255,255,64,0,0,15,255,255,255,255,255,255,64,0,0,15,240,0,0,0,0,255,64,0,0,15,240,0,0,0,0,191,64,0,0,15,240,0,0,0,0,191,64,0,0,15,240,0,0,0,0,191,64,0,0,15,240,0,0,0,0,191,64,0,0,15,240,0,0,0,0,191,64,0,0,15,240,0,0,0,0,191,64,0,0,15,240,0,0,0,0,255,64,0,0,15,255,255,255,255,255,255,64,0,0,15,255,255,255,255,255,255,64,0,0,15,255,255,255,255,255,255,64,0,0,15,240,0,0,0,0,191,64,0,0,15,224,0,0,0,0,170,0,0, + // 0x542f 启 + 47,84,34,38,86,40,2,252,0,0,0,0,0,0,0,80,0,0,0,0,0,0,5,191,244,0,0,0,0,1,107,255,255,253,0,0,69,175,255,255,255,255,249,0,1,255,255,255,255,255,228,0,0,1,255,255,255,234,80,0,0,0,1,255,169,64,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,255,255,255,255,255,255,255,192,1,255,255,255,255,255,255,255,192,1,255,255,255,255,255,255,255,192,1,253,0,0,0,0,0,63,192,1,253,0,0,0,0,0,63,192,1,253,0,0,0,0,0,63,192,1,253,0,0,0,0,0,63,192,1,253,0,0,0,0,0,63,192,1,255,255,255,255,255,255,255,192,1,255,255,255,255,255,255,255,192,1,255,255,255,255,255,255,255,192,1,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,63,255,255,255,255,255,208,3,248,63,255,255,255,255,255,208,3,248,63,255,255,255,255,255,208,7,244,63,64,0,0,0,31,208,11,240,63,64,0,0,0,31,208,15,240,63,64,0,0,0,31,208,15,224,63,64,0,0,0,31,208,47,208,63,64,0,0,0,31,208,63,192,63,64,0,0,0,31,208,191,128,63,255,255,255,255,255,208,255,0,63,255,255,255,255,255,208,190,0,63,255,255,255,255,255,208,28,0,63,64,0,0,0,31,208,4,0,63,64,0,0,0,26,144, + // 0x544a 告 + 74,84,36,39,95,40,2,251,0,0,0,0,42,128,0,0,0,0,3,248,0,63,192,0,0,0,0,3,252,0,63,192,0,0,0,0,11,248,0,63,192,0,0,0,0,15,240,0,63,192,0,0,0,0,31,224,0,63,192,0,0,0,0,63,255,255,255,255,255,255,128,0,191,255,255,255,255,255,255,128,0,255,255,255,255,255,255,255,128,3,254,85,85,127,213,85,85,64,11,252,0,0,63,192,0,0,0,31,244,0,0,63,192,0,0,0,63,224,0,0,63,192,0,0,0,7,192,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,21,85,85,85,85,85,85,85,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,252,0,0,47,255,255,255,255,255,252,0,0,47,255,255,255,255,255,252,0,0,47,229,85,85,85,87,252,0,0,47,192,0,0,0,2,252,0,0,47,192,0,0,0,2,252,0,0,47,192,0,0,0,2,252,0,0,47,192,0,0,0,2,252,0,0,47,192,0,0,0,2,252,0,0,47,192,0,0,0,2,252,0,0,47,213,85,85,85,87,252,0,0,47,255,255,255,255,255,252,0,0,47,255,255,255,255,255,252,0,0,47,255,255,255,255,255,252,0,0,47,192,0,0,0,2,252,0,0,47,192,0,0,0,2,252,0,0,0,0,0,0,0,0,0,0, + // 0x5468 周 + 104,84,35,37,77,40,1,251,0,127,255,255,255,255,255,255,244,0,127,255,255,255,255,255,255,244,0,127,255,255,255,255,255,255,244,0,127,149,85,85,85,85,91,244,0,127,64,0,26,128,0,7,244,0,127,64,0,47,192,0,7,244,0,127,64,0,47,192,0,7,244,0,127,64,0,47,192,0,7,244,0,127,67,255,255,255,255,7,244,0,127,67,255,255,255,255,7,244,0,127,67,255,255,255,255,7,244,0,127,64,0,47,192,0,7,244,0,127,64,0,47,192,0,7,244,0,127,64,0,47,192,0,7,244,0,127,79,255,255,255,255,135,244,0,127,79,255,255,255,255,135,244,0,127,79,255,255,255,255,135,244,0,127,64,0,0,0,0,7,244,0,127,0,0,0,0,0,7,244,0,127,0,0,0,0,0,7,244,0,191,1,255,255,255,252,7,244,0,191,1,255,255,255,252,7,244,0,255,1,255,255,255,252,7,244,0,254,1,252,0,1,252,7,244,0,254,1,252,0,1,252,7,244,1,253,1,252,0,1,252,7,244,2,252,1,252,0,1,252,7,244,3,252,1,252,0,1,252,7,244,3,248,1,255,255,255,252,7,244,7,244,1,255,255,255,252,7,244,15,240,1,255,255,255,252,7,244,31,240,1,252,0,0,0,7,244,63,208,1,252,0,0,85,95,244,127,192,0,84,0,0,127,255,240,47,64,0,0,0,0,63,255,224,11,0,0,0,0,0,47,254,64,0,0,0,0,0,0,0,0,0, + // 0x547d 命 + 125,84,38,38,124,40,1,252,0,0,0,0,191,192,0,0,0,0,0,0,0,1,255,240,0,0,0,0,0,0,0,3,255,252,0,0,0,0,0,0,0,15,255,255,0,0,0,0,0,0,0,63,241,255,192,0,0,0,0,0,1,255,208,191,240,0,0,0,0,0,7,255,64,47,253,0,0,0,0,0,47,253,0,7,255,128,0,0,0,0,255,240,0,1,255,244,0,0,0,7,255,192,0,0,63,254,0,0,0,47,255,85,85,85,95,255,208,0,2,255,247,255,255,255,253,255,253,0,47,255,131,255,255,255,252,47,255,224,255,253,3,255,255,255,252,3,255,224,63,224,0,0,0,0,0,0,127,192,30,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,192,255,255,255,240,0,0,191,255,255,192,255,255,255,240,0,0,191,255,255,192,255,255,255,240,0,0,191,0,47,192,254,85,91,240,0,0,190,0,31,192,254,0,7,240,0,0,190,0,31,192,254,0,7,240,0,0,190,0,31,192,254,0,7,240,0,0,190,0,31,192,254,0,7,240,0,0,190,0,31,192,254,0,7,240,0,0,190,0,31,192,254,0,7,240,0,0,190,0,31,192,254,0,7,240,0,0,191,255,255,192,254,0,7,240,0,0,191,255,255,192,254,0,11,240,0,0,191,255,255,192,254,15,255,240,0,0,191,0,0,0,254,15,255,240,0,0,190,0,0,0,254,11,255,192,0,0,190,0,0,0,254,1,80,0,0,0,106,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0, + // 0x548c 和 + 140,84,35,37,77,40,1,252,0,0,0,31,192,0,0,0,0,0,0,27,255,240,0,0,0,0,1,175,255,255,244,0,0,0,0,31,255,255,254,64,255,255,255,252,15,255,255,64,0,255,255,255,252,11,164,191,64,0,255,255,255,252,0,0,127,64,0,255,170,171,252,0,0,127,64,0,254,0,2,252,0,0,127,64,0,254,0,2,252,0,0,127,64,0,254,0,2,252,0,0,127,64,0,254,0,2,252,63,255,255,255,248,254,0,2,252,63,255,255,255,248,254,0,2,252,63,255,255,255,248,254,0,2,252,21,86,255,149,84,254,0,2,252,0,3,255,64,0,254,0,2,252,0,3,255,208,0,254,0,2,252,0,11,255,240,0,254,0,2,252,0,15,255,252,0,254,0,2,252,0,31,255,255,0,254,0,2,252,0,63,255,191,128,254,0,2,252,0,127,127,111,208,254,0,2,252,0,253,127,79,240,254,0,2,252,2,252,127,71,244,254,0,2,252,7,248,127,66,224,254,0,2,252,15,240,127,64,192,254,0,2,252,47,208,127,64,0,254,0,2,252,191,192,127,64,0,254,0,2,252,127,64,127,64,0,255,255,255,252,62,0,127,64,0,255,255,255,252,28,0,127,64,0,255,255,255,252,0,0,127,64,0,255,170,171,252,0,0,127,64,0,254,0,2,252,0,0,127,64,0,254,0,2,252,0,0,127,64,0,254,0,1,168,0,0,127,64,0,0,0,0,0,0,0,106,0,0,0,0,0,0, + // 0x54cd 响 + 205,84,35,39,95,40,3,251,0,0,0,0,0,41,64,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,192,0,0,255,255,244,0,0,255,64,0,0,255,255,244,0,0,255,0,0,0,255,255,244,0,1,253,0,0,0,254,87,244,63,255,255,255,255,244,253,3,244,63,255,255,255,255,244,253,3,244,63,255,255,255,255,244,253,3,244,63,128,0,0,7,244,253,3,244,63,64,0,0,3,244,253,3,244,63,64,0,0,3,244,253,3,244,63,64,0,0,3,244,253,3,244,63,66,170,170,3,244,253,3,244,63,67,255,255,3,244,253,3,244,63,67,255,255,3,244,253,3,244,63,67,224,31,3,244,253,3,244,63,67,224,31,3,244,253,3,244,63,67,224,31,3,244,253,3,244,63,67,224,31,3,244,253,3,244,63,67,224,31,3,244,253,3,244,63,67,224,31,3,244,254,87,244,63,67,224,31,3,244,255,255,244,63,67,224,31,3,244,255,255,244,63,67,250,191,3,244,255,255,244,63,67,255,255,3,244,253,0,0,63,67,255,255,3,244,253,0,0,63,67,224,0,3,244,253,0,0,63,67,224,0,3,244,253,0,0,63,65,80,0,3,244,0,0,0,63,64,0,0,3,244,0,0,0,63,64,0,0,3,244,0,0,0,63,64,0,0,7,244,0,0,0,63,64,0,1,91,244,0,0,0,63,64,0,7,255,240,0,0,0,63,64,0,3,255,240,0,0,0,63,64,0,2,254,64,0,0,0,0,0,0,0,0,0, + // 0x55b7 喷 + 183,85,36,38,86,40,3,252,0,0,0,0,0,21,0,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,63,64,0,0,255,255,208,255,255,255,255,255,208,255,255,208,255,255,255,255,255,208,255,255,208,255,255,255,255,255,208,253,95,208,0,0,63,64,0,0,252,11,208,3,244,63,66,244,0,252,11,208,3,244,0,3,248,0,252,11,208,3,244,0,3,248,0,252,11,215,255,255,255,255,255,252,252,11,215,255,255,255,255,255,252,252,11,215,255,255,255,255,255,252,252,11,208,3,244,0,3,248,0,252,11,208,3,244,0,3,248,0,252,11,208,1,80,0,1,80,0,252,11,208,47,255,255,255,255,64,252,11,208,47,255,255,255,255,64,252,11,208,47,255,255,255,255,64,252,11,208,47,128,0,0,63,64,252,11,208,47,128,0,0,63,64,252,11,208,47,128,21,0,63,64,253,95,208,47,128,63,64,63,64,255,255,208,47,128,63,64,63,64,255,255,208,47,128,63,64,63,64,255,255,208,47,128,63,64,63,64,252,0,0,47,128,63,64,63,64,252,0,0,47,128,63,64,63,64,252,0,0,47,128,191,0,63,64,248,0,0,26,65,254,24,42,0,0,0,0,0,7,252,63,128,0,0,0,0,0,127,244,127,249,0,0,0,0,11,255,208,7,255,208,0,0,6,255,254,0,0,191,253,0,0,47,255,224,0,0,11,254,0,0,11,249,0,0,0,0,252,0,0,1,0,0,0,0,0,20, + // 0x5634 嘴 + 52,86,36,38,86,40,3,252,0,0,0,0,252,0,248,0,0,0,0,0,0,252,0,252,0,0,0,0,0,80,252,0,252,0,0,85,85,65,240,252,0,252,11,192,255,255,209,240,254,168,252,127,240,255,255,209,240,255,252,255,255,64,255,255,209,240,255,252,255,248,0,248,11,209,240,252,0,255,64,0,248,11,209,240,252,0,252,0,0,248,11,209,240,252,0,252,0,116,248,11,209,240,253,188,252,0,125,248,11,210,251,255,252,252,0,188,248,11,239,255,255,252,255,255,252,248,11,239,255,255,64,191,255,244,248,11,223,148,255,0,26,170,144,248,11,208,2,255,255,248,0,0,248,11,208,7,255,255,254,0,0,248,11,208,15,245,87,252,0,0,248,11,208,63,192,7,244,0,0,248,11,209,255,213,95,245,85,64,248,11,219,255,255,255,255,255,192,248,11,255,255,255,255,255,255,192,253,91,239,255,128,47,64,31,192,255,255,215,127,128,47,64,31,192,255,255,208,63,128,47,128,31,192,255,255,208,63,255,255,255,255,192,248,0,0,63,255,255,255,255,192,248,0,0,63,64,47,64,31,192,248,0,0,63,64,47,64,31,192,84,0,0,127,149,127,149,111,192,0,0,0,191,255,255,255,255,192,0,0,0,255,255,255,255,255,192,0,0,1,253,0,0,0,31,192,0,0,7,252,0,0,0,31,192,0,0,31,244,0,0,0,31,192,0,0,191,224,0,0,127,255,192,0,0,63,128,0,0,63,255,128,0,0,9,0,0,0,31,169,0, + // 0x5668 器 + 104,86,38,36,104,40,1,252,0,255,255,255,192,63,255,255,244,0,0,255,255,255,192,63,255,255,244,0,0,255,255,255,192,63,255,255,244,0,0,252,0,47,192,63,64,7,244,0,0,252,0,47,192,63,64,7,244,0,0,252,0,47,192,63,64,7,244,0,0,252,0,47,192,63,64,7,244,0,0,252,0,47,192,63,64,7,244,0,0,255,255,255,192,63,255,255,244,0,0,255,255,255,192,63,255,255,244,0,0,255,255,255,253,63,255,255,244,0,0,0,0,0,255,0,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,0,7,252,0,0,0,0,0,63,255,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,255,192,5,85,91,255,85,95,253,85,85,64,0,0,47,252,0,3,255,64,0,0,0,0,255,240,0,1,255,224,0,0,0,11,255,208,0,0,127,253,0,0,1,191,255,0,0,0,15,255,224,0,31,255,248,0,0,0,3,255,255,64,191,255,255,255,192,127,255,255,255,224,47,255,255,255,192,127,255,255,255,192,14,191,255,255,192,127,255,255,235,0,0,190,0,15,192,127,0,15,224,0,0,190,0,15,192,127,0,15,224,0,0,190,0,15,192,127,0,15,224,0,0,190,0,15,192,127,0,15,224,0,0,190,0,15,192,127,0,15,224,0,0,191,255,255,192,127,255,255,224,0,0,191,255,255,192,127,255,255,224,0,0,191,255,255,192,127,255,255,224,0,0,190,0,31,192,127,0,15,224,0,0,106,0,15,192,127,0,10,144,0, + // 0x5674 噴 + 116,86,36,38,86,40,3,252,0,0,0,0,0,47,128,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,47,128,0,0,0,0,0,191,255,255,255,255,224,85,85,80,191,255,255,255,255,224,255,255,240,106,170,191,234,170,144,255,255,240,0,0,47,128,0,0,255,255,240,2,248,47,130,244,0,252,3,240,2,248,47,130,244,0,252,3,246,171,254,170,171,254,168,252,3,247,255,255,255,255,255,253,252,3,247,255,255,255,255,255,253,252,3,240,2,248,0,2,244,0,252,3,240,2,248,0,2,244,0,252,3,240,0,0,0,0,0,0,252,3,240,63,255,255,255,255,128,252,3,240,63,255,255,255,255,128,252,3,240,63,128,0,0,63,128,252,3,240,63,128,0,0,63,128,252,3,240,63,128,0,0,63,128,252,3,240,63,255,255,255,255,128,252,3,240,63,255,255,255,255,128,252,3,240,63,128,0,0,63,128,255,255,240,63,128,0,0,63,128,255,255,240,63,128,0,0,63,128,255,255,240,63,255,255,255,255,128,253,85,80,63,255,255,255,255,128,252,0,0,63,128,0,0,63,128,252,0,0,63,128,0,0,63,128,168,0,0,63,255,255,255,255,128,0,0,0,63,255,255,255,255,128,0,0,0,0,185,0,31,144,0,0,0,0,2,255,64,63,244,0,0,0,0,111,253,0,31,255,0,0,0,27,255,240,0,1,255,224,0,0,127,255,64,0,0,47,253,0,0,31,228,0,0,0,7,248,0,0,10,0,0,0,0,0,128, + // 0x56de 回 + 222,86,34,36,68,40,3,252,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,63,255,255,255,128,31,224,191,0,63,255,255,255,128,31,224,191,0,63,255,255,255,128,31,224,191,0,63,149,85,127,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,255,255,255,128,31,224,191,0,63,255,255,255,128,31,224,191,0,63,255,255,255,128,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,149,85,85,85,85,85,111,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,15,224, + // 0x56e0 因 + 224,86,34,36,68,40,3,252,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,170,170,170,170,170,170,175,240,191,0,0,0,0,0,0,15,240,191,0,0,3,248,0,0,15,240,191,0,0,3,248,0,0,15,240,191,0,0,3,244,0,0,15,240,191,0,0,3,244,0,0,15,240,191,0,0,3,244,0,0,15,240,191,0,0,3,244,0,0,15,240,191,15,255,255,255,255,255,15,240,191,15,255,255,255,255,255,15,240,191,15,255,255,255,255,255,15,240,191,5,85,95,254,85,85,15,240,191,0,0,15,254,0,0,15,240,191,0,0,15,255,0,0,15,240,191,0,0,31,255,0,0,15,240,191,0,0,63,255,128,0,15,240,191,0,0,127,159,208,0,15,240,191,0,0,255,15,240,0,15,240,191,0,1,255,11,248,0,15,240,191,0,7,252,3,254,0,15,240,191,0,31,244,0,255,128,15,240,191,0,255,224,0,191,244,15,240,191,11,255,128,0,47,255,15,240,191,15,254,0,0,7,254,15,240,191,7,224,0,0,0,252,15,240,191,2,64,0,0,0,20,15,240,191,0,0,0,0,0,0,15,240,191,170,170,170,170,170,170,175,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,0,0,0,0,0,0,15,240,191,0,0,0,0,0,0,15,224, + // 0x56fa 固 + 250,86,34,36,68,40,3,252,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,149,85,85,85,85,85,111,224,191,0,0,0,0,0,0,15,224,191,0,0,3,248,0,0,15,224,191,0,0,3,248,0,0,15,224,191,0,0,3,248,0,0,15,224,191,0,0,3,248,0,0,15,224,191,11,255,255,255,255,255,15,224,191,11,255,255,255,255,255,15,224,191,11,255,255,255,255,255,15,224,191,0,0,3,248,0,0,15,224,191,0,0,3,248,0,0,15,224,191,0,0,3,248,0,0,15,224,191,0,0,3,248,0,0,15,224,191,0,0,3,248,0,0,15,224,191,0,127,255,255,255,224,15,224,191,0,127,255,255,255,224,15,224,191,0,127,255,255,255,224,15,224,191,0,127,0,0,15,224,15,224,191,0,127,0,0,15,224,15,224,191,0,127,0,0,15,224,15,224,191,0,127,0,0,15,224,15,224,191,0,127,255,255,255,224,15,224,191,0,127,255,255,255,224,15,224,191,0,127,255,255,255,224,15,224,191,0,0,0,0,0,0,15,224,191,0,0,0,0,0,0,15,224,191,0,0,0,0,0,0,15,224,191,149,85,85,85,85,85,111,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,0,0,0,0,0,0,15,224,127,0,0,0,0,0,0,15,224, + // 0x56fe 图 + 254,86,34,36,68,40,3,252,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,85,85,85,85,85,85,95,224,191,0,0,61,0,0,0,15,224,191,0,0,255,0,0,0,15,224,191,0,2,253,0,0,0,15,224,191,0,11,255,255,255,244,15,224,191,0,47,255,255,255,252,15,224,191,0,191,255,255,255,244,15,224,191,3,255,208,0,47,208,15,224,191,31,255,244,0,255,128,15,224,191,47,226,254,7,253,0,15,224,191,7,64,191,255,240,0,15,224,191,0,0,31,255,192,0,15,224,191,0,0,127,255,224,0,15,224,191,0,27,255,255,255,64,15,224,191,7,255,254,7,255,254,79,224,191,191,255,224,0,127,255,223,224,191,63,254,41,0,2,255,79,224,191,31,64,191,228,0,6,15,224,191,0,0,191,255,208,0,15,224,191,0,0,1,255,248,0,15,224,191,0,0,0,7,240,0,15,224,191,0,46,144,0,80,0,15,224,191,0,127,255,228,0,0,15,224,191,0,191,255,255,228,0,15,224,191,0,0,107,255,255,208,15,224,191,0,0,0,27,255,192,15,224,191,0,0,0,0,31,128,15,224,191,0,0,0,0,0,0,15,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,85,85,85,85,85,85,95,224,191,0,0,0,0,0,0,15,224, + // 0x5728 在 + 40,87,37,38,124,40,1,252,0,0,0,10,64,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,127,128,0,0,0,0,0,31,255,255,255,255,255,255,255,255,64,31,255,255,255,255,255,255,255,255,64,31,255,255,255,255,255,255,255,255,64,26,170,171,254,170,170,170,170,170,64,0,0,15,244,0,0,0,0,0,0,0,0,31,240,0,1,80,0,0,0,0,0,63,208,0,7,244,0,0,0,0,0,127,192,0,7,244,0,0,0,0,0,255,64,0,7,244,0,0,0,0,3,254,0,0,7,244,0,0,0,0,11,252,0,0,7,244,0,0,0,0,31,244,0,0,7,244,0,0,0,0,127,240,0,0,7,244,0,0,0,1,255,240,15,255,255,255,255,252,0,7,255,240,15,255,255,255,255,252,0,47,255,240,15,255,255,255,255,252,0,127,251,240,5,85,91,249,85,84,0,63,203,240,0,0,7,244,0,0,0,31,11,240,0,0,7,244,0,0,0,8,11,240,0,0,7,244,0,0,0,0,11,240,0,0,7,244,0,0,0,0,11,240,0,0,7,244,0,0,0,0,11,240,0,0,7,244,0,0,0,0,11,240,0,0,7,244,0,0,0,0,11,240,0,0,7,244,0,0,0,0,11,240,0,0,7,244,0,0,0,0,11,240,0,0,7,244,0,0,0,0,11,240,21,85,91,249,85,85,0,0,11,240,127,255,255,255,255,255,64,0,11,240,127,255,255,255,255,255,64,0,11,240,127,255,255,255,255,255,64,0,11,240,0,0,0,0,0,0,0, + // 0x574f 坏 + 79,87,38,38,124,40,1,252,0,5,64,0,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,0,15,208,26,170,170,170,170,170,128,0,15,208,63,255,255,255,255,255,192,0,15,208,63,255,255,255,255,255,192,0,15,208,63,255,255,255,255,255,192,0,15,208,0,0,0,127,192,0,0,0,15,208,0,0,0,255,64,0,0,0,15,208,0,0,2,255,0,0,0,0,15,208,0,0,3,253,0,0,0,63,255,255,208,0,11,252,0,0,0,63,255,255,208,0,47,244,0,0,0,63,255,255,208,0,127,244,64,0,0,26,175,234,128,0,255,246,240,0,0,0,15,208,0,3,255,255,253,0,0,0,15,208,0,31,255,251,255,128,0,0,15,208,0,127,251,244,191,224,0,0,15,208,2,255,195,244,47,248,0,0,15,208,15,255,3,244,7,255,0,0,15,208,191,252,3,244,1,255,192,0,15,209,255,240,3,244,0,127,224,0,15,208,127,128,3,244,0,31,192,0,15,208,29,0,3,244,0,7,0,0,15,208,80,0,3,244,0,0,0,0,15,219,240,0,3,244,0,0,0,0,15,255,240,0,3,244,0,0,0,0,127,255,240,0,3,244,0,0,0,31,255,255,128,0,3,244,0,0,0,127,255,244,0,0,3,244,0,0,0,63,254,0,0,0,3,244,0,0,0,63,144,0,0,0,3,244,0,0,0,20,0,0,0,0,3,244,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,2,164,0,0,0, + // 0x5757 块 + 87,87,37,38,124,40,1,252,0,0,0,0,0,5,64,0,0,0,0,31,192,0,0,31,208,0,0,0,0,31,192,0,0,31,208,0,0,0,0,31,192,0,0,31,208,0,0,0,0,31,192,0,0,31,208,0,0,0,0,31,192,0,0,31,208,0,0,0,0,31,192,0,0,31,208,0,0,0,0,31,192,3,255,255,255,255,240,0,0,31,192,3,255,255,255,255,240,0,0,31,192,3,255,255,255,255,240,0,63,255,255,209,85,111,229,91,240,0,63,255,255,208,0,31,208,7,240,0,63,255,255,208,0,31,208,7,240,0,26,175,234,128,0,31,208,7,240,0,0,31,192,0,0,31,208,7,240,0,0,31,192,0,0,31,208,7,240,0,0,31,192,0,0,31,192,7,240,0,0,31,192,0,0,31,192,7,240,0,0,31,192,10,170,175,234,171,250,64,0,31,192,15,255,255,255,255,255,192,0,31,192,15,255,255,255,255,255,192,0,31,192,15,255,255,255,255,255,192,0,31,193,208,0,63,253,0,0,0,0,31,239,224,0,127,255,0,0,0,0,31,255,240,0,255,127,64,0,0,0,127,255,208,0,255,63,128,0,0,11,255,253,0,2,253,47,192,0,0,127,255,208,0,7,252,15,240,0,0,63,253,0,0,15,248,11,248,0,0,47,208,0,0,47,240,3,252,0,0,13,0,0,0,127,208,2,255,0,0,0,0,0,2,255,192,0,255,192,0,0,0,0,11,255,0,0,127,244,0,0,0,0,127,252,0,0,31,255,0,0,0,2,255,240,0,0,7,255,192,0,0,3,255,128,0,0,1,255,128,0,0,0,253,0,0,0,0,63,0,0,0,0,80,0,0,0,0,8,0, + // 0x578b 型 + 139,87,36,37,77,40,2,253,0,0,0,0,0,0,0,5,80,5,85,85,85,85,0,0,11,240,15,255,255,255,255,2,160,11,240,15,255,255,255,255,3,244,11,240,15,255,255,255,255,3,244,11,240,0,31,192,63,128,3,244,11,240,0,31,192,63,128,3,244,11,240,0,31,192,63,128,3,244,11,240,0,31,192,63,128,3,244,11,240,0,31,192,63,128,3,244,11,240,127,255,255,255,255,195,244,11,240,127,255,255,255,255,195,244,11,240,127,255,255,255,255,195,244,11,240,21,127,149,127,213,67,244,11,240,0,63,64,63,128,3,244,11,240,0,191,0,63,128,3,244,11,240,0,255,0,63,128,0,0,11,240,2,253,0,63,128,0,0,11,240,11,252,0,63,128,0,0,15,240,47,244,0,63,128,0,63,255,224,191,224,0,63,128,0,31,255,208,47,64,0,63,234,0,15,255,64,9,0,0,0,255,0,5,64,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,85,85,85,255,85,85,85,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,85,85,85,85,85,85, + // 0x57ab 垫 + 171,87,37,37,114,40,2,253,0,11,224,0,0,127,0,0,0,0,0,15,224,0,0,127,0,0,0,0,0,15,224,0,0,127,0,0,0,0,0,15,224,0,0,127,0,0,0,0,191,255,255,245,255,255,255,255,0,0,191,255,255,245,255,255,255,255,0,0,191,255,255,245,255,255,255,255,0,0,21,95,245,80,0,255,0,191,0,0,0,15,224,0,0,254,0,127,0,0,0,15,224,0,16,254,0,127,0,0,0,15,224,100,253,253,0,127,0,0,0,15,255,249,255,252,0,127,0,0,6,255,255,248,255,252,0,127,0,0,255,255,255,228,31,254,0,127,0,0,191,255,244,0,7,255,192,127,0,0,191,159,224,0,11,255,244,127,0,0,16,15,224,0,15,255,254,63,13,0,0,15,224,0,63,194,253,63,15,192,0,15,224,0,255,128,120,63,79,192,0,15,224,7,255,0,16,47,239,128,15,255,224,31,252,0,0,31,255,64,15,255,208,11,240,0,0,11,255,0,11,255,64,3,233,0,0,2,248,0,1,64,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,255,255,255,255,255,255,255,0,0,0,255,255,255,255,255,255,255,0,0,0,255,255,255,255,255,255,255,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,191,255,255,255,255,255,255,255,255,0,191,255,255,255,255,255,255,255,255,0,191,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0, + // 0x586b 填 + 107,88,38,38,124,40,1,252,0,0,0,0,0,3,248,0,0,0,0,31,192,0,0,3,248,0,0,0,0,31,192,0,0,3,248,0,0,0,0,31,192,63,255,255,255,255,255,192,0,31,192,63,255,255,255,255,255,192,0,31,192,63,255,255,255,255,255,192,0,31,192,0,0,3,248,0,0,0,0,31,192,0,0,3,248,0,0,0,0,31,192,0,0,3,248,0,0,0,0,31,192,0,255,255,255,255,240,0,63,255,255,192,255,255,255,255,240,0,63,255,255,192,254,85,85,95,240,0,63,255,255,192,253,0,0,11,240,0,26,175,234,128,253,85,85,91,240,0,0,31,192,0,255,255,255,255,240,0,0,31,192,0,255,255,255,255,240,0,0,31,192,0,253,0,0,11,240,0,0,31,192,0,253,0,0,11,240,0,0,31,192,0,255,255,255,255,240,0,0,31,192,0,255,255,255,255,240,0,0,31,192,0,254,85,85,95,240,0,0,31,192,0,253,0,0,11,240,0,0,31,192,0,254,85,85,95,240,0,0,31,199,208,255,255,255,255,240,0,0,31,255,224,255,255,255,255,240,0,0,47,255,240,0,0,0,0,0,0,2,255,255,128,0,0,0,0,0,0,127,255,249,255,255,255,255,255,255,208,127,255,64,255,255,255,255,255,255,208,63,244,0,255,255,255,255,255,255,208,46,64,0,0,1,0,0,96,0,0,0,0,0,0,15,228,1,252,0,0,0,0,0,0,127,240,3,255,128,0,0,0,0,7,255,128,0,191,244,0,0,0,0,191,253,0,0,15,254,0,0,0,3,255,224,0,0,2,255,192,0,0,0,255,64,0,0,0,127,128,0,0,0,36,0,0,0,0,8,0, + // 0x58f3 壳 + 243,88,36,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,255,255,248,63,255,255,255,255,255,255,255,248,63,255,255,255,255,255,255,255,248,63,128,0,0,0,0,0,3,248,63,128,0,0,0,0,0,3,248,63,130,170,170,170,170,170,131,248,63,135,255,255,255,255,255,195,248,0,7,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,248,0,0,0,0,255,255,255,255,248,0,0,0,0,255,255,255,255,248,0,0,0,0,255,0,0,3,248,0,0,0,0,255,0,0,3,248,0,0,0,0,254,0,0,3,248,0,0,0,1,254,0,0,3,248,0,64,0,3,252,0,0,3,248,0,185,0,15,252,0,0,3,248,0,190,0,127,240,0,0,3,248,0,253,6,255,208,0,0,3,253,86,253,127,255,64,0,0,3,255,255,252,63,252,0,0,0,1,255,255,248,31,208,0,0,0,0,127,255,224,9,0,0,0,0,0,0,0,0, + // 0x5907 备 + 7,89,38,38,124,40,1,252,0,0,0,41,64,0,0,0,0,0,0,0,0,127,208,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,3,255,64,0,0,64,0,0,0,0,15,255,255,255,255,248,0,0,0,0,63,255,255,255,255,253,0,0,0,0,255,255,255,255,255,248,0,0,0,7,255,128,0,0,63,240,0,0,0,63,255,240,0,1,255,192,0,0,2,255,255,252,0,11,255,0,0,0,11,255,67,255,128,127,248,0,0,0,2,252,0,255,250,255,208,0,0,0,0,144,0,47,255,255,0,0,0,0,0,0,0,11,255,254,0,0,0,0,0,0,1,255,255,255,249,0,0,0,0,1,191,255,251,255,255,249,64,0,6,191,255,255,128,47,255,255,255,144,191,255,255,228,0,1,191,255,255,192,63,255,249,0,0,0,6,255,255,64,47,249,0,0,0,0,0,1,191,0,5,31,255,255,255,255,255,255,0,0,0,31,255,255,255,255,255,255,0,0,0,31,255,255,255,255,255,255,0,0,0,31,224,0,63,192,0,255,0,0,0,31,208,0,63,192,0,255,0,0,0,31,208,0,63,192,0,255,0,0,0,31,208,0,63,192,0,255,0,0,0,31,255,255,255,255,255,255,0,0,0,31,255,255,255,255,255,255,0,0,0,31,255,255,255,255,255,255,0,0,0,31,208,0,63,192,0,255,0,0,0,31,208,0,63,192,0,255,0,0,0,31,208,0,63,192,0,255,0,0,0,31,255,255,255,255,255,255,0,0,0,31,255,255,255,255,255,255,0,0,0,31,255,255,255,255,255,255,0,0,0,31,224,0,0,0,0,255,0,0,0,26,144,0,0,0,0,106,0,0, + // 0x590d 复 + 13,89,27,38,10,40,6,252,0,1,144,0,0,0,0,0,3,252,0,0,0,0,0,7,248,0,0,0,0,0,15,240,0,0,0,0,0,47,255,255,255,255,192,0,63,255,255,255,255,192,0,255,255,255,255,255,192,2,255,0,0,0,0,0,11,252,0,0,0,0,0,47,253,85,85,85,84,0,127,255,255,255,255,252,0,47,239,255,255,255,252,0,10,47,192,0,2,252,0,0,47,192,0,2,252,0,0,47,255,255,255,252,0,0,47,255,255,255,252,0,0,47,213,85,86,252,0,0,47,192,0,2,252,0,0,47,192,0,2,252,0,0,47,255,255,255,252,0,0,47,255,255,255,252,0,0,21,127,229,85,84,0,0,0,127,192,0,0,0,0,0,255,234,170,160,0,0,7,255,255,255,253,0,0,31,255,255,255,248,0,0,255,240,0,15,240,0,7,255,252,0,63,208,0,63,253,255,64,255,192,0,31,224,63,227,255,0,0,7,64,15,255,248,0,0,0,0,3,255,240,0,0,0,0,47,255,254,0,0,0,7,255,255,255,245,0,6,255,255,146,255,255,248,47,255,248,0,31,255,240,15,254,64,0,1,191,224,6,64,0,0,0,1,128, + // 0x5916 外 + 22,89,38,38,124,40,1,252,0,0,25,0,0,0,26,144,0,0,0,0,63,192,0,0,31,208,0,0,0,0,63,192,0,0,31,208,0,0,0,0,127,64,0,0,31,208,0,0,0,0,191,0,0,0,31,208,0,0,0,0,255,0,0,0,31,208,0,0,0,1,255,170,169,0,31,208,0,0,0,3,255,255,255,192,31,208,0,0,0,7,255,255,255,192,31,208,0,0,0,11,255,255,255,192,31,208,0,0,0,15,240,0,63,228,31,208,0,0,0,63,208,0,127,252,31,208,0,0,0,127,192,0,127,254,31,208,0,0,0,255,64,0,191,191,95,208,0,0,2,255,0,0,255,63,239,208,0,0,7,255,0,0,253,31,255,208,0,0,15,255,208,2,252,11,255,208,0,0,63,255,252,3,252,3,255,208,0,0,191,223,255,71,248,0,255,208,0,0,47,66,255,235,240,0,127,240,0,0,6,0,63,255,240,0,31,252,0,0,0,0,11,255,208,0,31,255,64,0,0,0,2,255,192,0,31,255,224,0,0,0,0,255,64,0,31,255,252,0,0,0,1,255,0,0,31,239,255,128,0,0,3,253,0,0,31,211,255,240,0,0,11,252,0,0,31,208,191,192,0,0,31,244,0,0,31,208,15,64,0,0,63,224,0,0,31,208,1,0,0,0,255,192,0,0,31,208,0,0,0,3,255,0,0,0,31,208,0,0,0,31,253,0,0,0,31,208,0,0,0,127,244,0,0,0,31,208,0,0,3,255,208,0,0,0,31,208,0,0,31,255,64,0,0,0,31,208,0,0,15,252,0,0,0,0,31,208,0,0,3,224,0,0,0,0,31,208,0,0,0,64,0,0,0,0,26,144,0,0, + // 0x591a 多 + 26,89,34,38,86,40,3,252,0,0,0,6,64,0,0,0,0,0,0,0,31,248,0,0,0,0,0,0,0,127,240,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,11,255,255,255,254,0,0,0,0,63,255,255,255,255,128,0,0,2,255,255,255,255,255,0,0,0,47,255,0,0,3,252,0,0,2,255,252,0,0,15,248,0,0,127,255,255,128,0,63,224,0,0,127,249,191,244,1,255,128,0,0,31,128,31,255,11,254,0,0,0,4,0,2,255,255,248,0,0,0,0,0,0,63,255,208,0,0,0,0,0,0,47,255,121,0,0,0,0,0,7,255,244,255,192,0,0,0,0,191,255,131,255,0,0,0,0,111,255,248,31,253,0,0,0,111,255,255,128,191,255,255,255,208,255,255,228,7,255,255,255,255,240,127,249,0,63,255,255,255,255,224,62,64,2,255,224,0,0,127,192,0,0,111,255,64,0,0,255,128,0,7,255,255,128,0,2,255,0,0,191,255,255,244,0,11,252,0,0,63,248,31,254,0,47,244,0,0,31,128,3,255,192,191,224,0,0,4,0,0,127,247,255,128,0,0,0,0,0,15,255,253,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,31,255,192,0,0,0,0,0,2,255,253,0,0,0,0,0,1,191,255,224,0,0,0,0,1,191,255,254,0,0,0,0,3,255,255,255,208,0,0,0,0,2,255,255,248,0,0,0,0,0,0,255,249,0,0,0,0,0,0,0,165,0,0,0,0,0,0,0, + // 0x5927 大 + 39,89,36,38,86,40,2,252,0,0,0,0,170,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,253,0,0,0,0,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,253,0,0,0,7,255,192,0,0,0,0,0,0,11,255,224,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,31,255,244,0,0,0,0,0,0,47,231,252,0,0,0,0,0,0,63,211,253,0,0,0,0,0,0,127,193,255,0,0,0,0,0,0,255,128,255,128,0,0,0,0,2,255,0,191,192,0,0,0,0,3,254,0,63,240,0,0,0,0,15,252,0,31,244,0,0,0,0,47,244,0,11,253,0,0,0,0,127,224,0,3,255,0,0,0,1,255,192,0,1,255,192,0,0,11,255,0,0,0,191,244,0,0,47,253,0,0,0,63,253,0,1,255,244,0,0,0,15,255,192,31,255,208,0,0,0,3,255,248,191,255,0,0,0,0,0,191,255,127,248,0,0,0,0,0,31,252,31,128,0,0,0,0,0,2,244,5,0,0,0,0,0,0,0,32, + // 0x5929 天 + 41,89,37,35,94,40,2,252,127,255,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,255,253,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,31,255,255,255,255,255,255,255,244,0,31,255,255,255,255,255,255,255,244,0,31,255,255,255,255,255,255,255,244,0,15,255,255,255,255,255,255,255,244,0,0,0,0,3,255,192,0,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,0,11,255,240,0,0,0,0,0,0,0,15,255,244,0,0,0,0,0,0,0,31,247,252,0,0,0,0,0,0,0,63,227,253,0,0,0,0,0,0,0,191,193,255,0,0,0,0,0,0,2,255,128,255,192,0,0,0,0,0,11,255,0,63,240,0,0,0,0,0,47,252,0,31,252,0,0,0,0,0,255,244,0,11,255,64,0,0,0,7,255,208,0,2,255,224,0,0,0,127,255,0,0,0,255,254,0,0,11,255,248,0,0,0,47,255,228,0,255,255,208,0,0,0,7,255,255,64,191,254,0,0,0,0,0,191,254,0,63,224,0,0,0,0,0,11,252,0,25,0,0,0,0,0,0,0,100,0, + // 0x592a 太 + 42,89,37,38,124,40,2,252,0,0,0,1,253,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,0,3,252,0,0,0,0,0,127,255,255,255,255,255,255,255,254,0,127,255,255,255,255,255,255,255,254,0,127,255,255,255,255,255,255,255,254,0,127,255,255,255,255,255,255,255,254,0,0,0,0,11,255,224,0,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,0,15,255,244,0,0,0,0,0,0,0,31,247,248,0,0,0,0,0,0,0,47,227,252,0,0,0,0,0,0,0,63,194,254,0,0,0,0,0,0,0,127,192,255,0,0,0,0,0,0,0,255,128,191,128,0,0,0,0,0,1,255,0,127,192,0,0,0,0,0,3,254,0,63,240,0,0,0,0,0,11,252,0,31,244,0,0,0,0,0,15,248,0,15,252,0,0,0,0,0,63,242,192,3,255,0,0,0,0,0,255,239,244,1,255,128,0,0,0,3,255,159,253,0,255,224,0,0,0,15,255,7,255,64,63,248,0,0,0,127,252,1,255,208,15,255,0,0,2,255,240,0,127,244,7,255,208,0,31,255,192,0,31,253,1,255,253,0,255,254,0,0,7,254,0,63,255,64,191,244,0,0,2,248,0,15,254,0,47,128,0,0,0,144,0,1,252,0,8,0,0,0,0,0,0,0,32,0, + // 0x5931 失 + 49,89,37,38,124,40,2,252,0,0,0,0,254,0,0,0,0,0,0,3,228,0,254,0,0,0,0,0,0,11,248,0,254,0,0,0,0,0,0,15,244,0,254,0,0,0,0,0,0,15,240,0,254,0,0,0,0,0,0,47,224,0,254,0,0,0,0,0,0,63,208,0,254,0,0,0,0,0,0,127,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,255,64,0,1,255,255,255,255,255,255,255,64,0,3,255,255,255,255,255,255,255,64,0,7,252,0,0,254,0,0,0,0,0,15,248,0,0,254,0,0,0,0,0,63,240,0,0,254,0,0,0,0,0,127,208,0,0,254,0,0,0,0,0,31,128,0,1,254,0,0,0,0,0,2,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,170,170,170,171,255,170,170,170,170,0,255,255,255,255,255,255,255,255,254,0,255,255,255,255,255,255,255,255,254,0,255,255,255,255,255,255,255,255,254,0,0,0,0,11,255,208,0,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,0,47,251,248,0,0,0,0,0,0,0,63,211,252,0,0,0,0,0,0,0,255,193,255,0,0,0,0,0,0,2,255,64,255,192,0,0,0,0,0,11,254,0,127,240,0,0,0,0,0,63,252,0,47,252,0,0,0,0,1,255,240,0,11,255,64,0,0,0,11,255,192,0,2,255,224,0,0,0,191,255,0,0,0,255,254,0,0,27,255,248,0,0,0,31,255,248,0,255,255,208,0,0,0,3,255,255,64,191,253,0,0,0,0,0,127,255,0,63,208,0,0,0,0,0,7,252,0,8,0,0,0,0,0,0,0,36,0, + // 0x5934 头 + 52,89,36,38,86,40,2,252,0,0,0,0,1,84,0,0,0,0,0,0,0,3,248,0,0,0,0,3,208,0,3,248,0,0,0,0,15,254,0,3,248,0,0,0,0,15,255,224,3,248,0,0,0,0,1,255,253,3,248,0,0,0,0,0,31,255,67,248,0,0,0,0,0,1,255,3,248,0,0,0,0,0,0,44,3,248,0,0,0,0,128,0,0,3,248,0,0,0,3,248,0,0,7,248,0,0,0,11,255,128,0,7,244,0,0,0,7,255,248,0,7,244,0,0,0,0,127,255,64,7,244,0,0,0,0,7,255,192,11,244,0,0,0,0,0,127,64,11,240,0,0,0,0,0,13,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,85,85,85,85,95,245,85,85,85,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,0,0,0,0,127,128,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,3,253,16,0,0,0,0,0,0,11,252,126,0,0,0,0,0,0,31,244,255,224,0,0,0,0,0,127,224,191,253,0,0,0,0,2,255,192,15,255,192,0,0,0,15,255,0,1,255,248,0,0,0,191,252,0,0,47,255,64,0,27,255,224,0,0,3,255,224,2,255,255,64,0,0,0,127,248,127,255,248,0,0,0,0,15,254,63,255,128,0,0,0,0,2,252,31,228,0,0,0,0,0,0,176,9,0,0,0,0,0,0,0,0, + // 0x597d 好 + 125,89,37,38,124,40,2,252,0,46,128,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,63,128,0,255,255,255,255,240,0,0,63,64,0,255,255,255,255,253,0,0,127,64,0,255,255,255,255,252,0,0,127,0,0,85,85,85,111,244,0,0,191,0,0,0,0,0,63,224,0,0,254,0,0,0,0,0,191,192,0,85,255,85,80,0,0,1,255,0,0,255,255,255,252,0,0,7,252,0,0,255,255,255,252,0,0,31,244,0,0,255,255,255,248,0,1,191,208,0,0,3,248,3,248,0,1,255,64,0,0,3,244,3,248,0,1,253,0,0,0,3,240,3,244,0,1,253,0,0,0,7,240,3,244,0,1,253,0,0,0,11,240,7,246,170,170,254,170,170,0,15,224,11,247,255,255,255,255,255,64,15,208,15,247,255,255,255,255,255,64,31,192,15,231,255,255,255,255,255,64,47,192,31,208,0,1,253,0,0,0,63,128,47,192,0,1,253,0,0,0,63,224,63,192,0,1,253,0,0,0,127,253,63,128,0,1,253,0,0,0,191,255,255,0,0,1,253,0,0,0,126,255,255,0,0,1,253,0,0,0,5,47,254,0,0,1,253,0,0,0,0,7,255,64,0,1,253,0,0,0,0,11,255,224,0,1,253,0,0,0,0,15,255,248,0,1,253,0,0,0,0,63,219,253,0,1,253,0,0,0,0,255,194,253,0,1,253,0,0,0,2,255,0,184,0,1,253,0,0,0,15,253,0,32,0,2,252,0,0,0,127,244,0,0,15,255,252,0,0,0,127,208,0,0,15,255,252,0,0,0,31,64,0,0,7,255,240,0,0,0,8,0,0,0,2,169,0,0,0,0, + // 0x59cb 始 + 203,89,37,38,124,40,2,252,0,26,64,0,0,10,64,0,0,0,0,47,192,0,0,15,240,0,0,0,0,63,128,0,0,31,240,0,0,0,0,63,128,0,0,47,224,0,0,0,0,63,64,0,0,63,192,0,0,0,0,127,0,0,0,63,192,0,0,0,0,191,0,0,0,127,128,0,0,0,0,254,0,0,0,191,0,125,0,0,85,254,85,144,0,255,0,255,0,0,255,255,255,252,1,253,0,127,192,0,255,255,255,252,2,252,0,47,208,0,255,255,255,248,3,248,0,15,240,0,3,248,3,248,7,244,0,7,248,0,3,244,3,244,11,245,170,255,252,0,7,240,3,247,255,255,255,255,254,0,11,240,7,243,255,255,255,255,255,0,15,224,7,243,255,255,255,234,191,128,15,208,11,241,165,64,0,0,63,128,31,192,15,224,0,0,0,0,44,0,47,192,15,208,0,0,0,0,0,0,63,128,31,192,0,0,0,0,0,0,63,128,47,192,31,255,255,255,248,0,127,240,63,192,31,255,255,255,248,0,191,253,127,64,31,255,255,255,248,0,255,255,255,0,31,213,85,87,248,0,45,191,255,0,31,192,0,3,248,0,4,31,254,0,31,192,0,3,248,0,0,7,255,128,31,192,0,3,248,0,0,11,255,224,31,192,0,3,248,0,0,31,255,248,31,192,0,3,248,0,0,63,219,253,31,192,0,3,248,0,0,255,194,253,31,192,0,3,248,0,3,255,0,184,31,213,85,87,248,0,15,253,0,32,31,255,255,255,248,0,127,244,0,0,31,255,255,255,248,0,127,208,0,0,31,255,255,255,248,0,47,64,0,0,31,192,0,3,248,0,8,0,0,0,31,192,0,2,164,0, + // 0x5b50 子 + 80,91,36,35,59,40,2,252,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,170,170,170,170,170,191,252,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,31,254,0,0,0,0,0,0,0,191,244,0,0,0,0,0,0,87,255,192,0,0,0,0,0,0,255,254,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,170,170,170,170,255,170,170,170,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,63,255,254,0,0,0,0,0,0,47,255,248,0,0,0,0,0,0,31,234,64,0,0,0,0, + // 0x5b58 存 + 88,91,37,38,124,40,1,252,0,0,0,10,64,0,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,26,170,170,255,234,170,170,170,170,64,31,255,255,255,255,255,255,255,255,64,31,255,255,255,255,255,255,255,255,64,31,255,255,255,255,255,255,255,255,64,0,0,7,252,0,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,0,191,192,255,255,255,255,208,0,0,0,255,64,255,255,255,255,248,0,0,3,254,0,255,255,255,255,240,0,0,11,252,0,85,85,85,255,192,0,0,31,244,0,0,0,2,255,0,0,0,127,240,0,0,0,11,252,0,0,0,255,240,0,0,0,63,240,0,0,7,255,240,0,0,2,255,128,0,0,31,255,240,0,0,2,254,0,0,0,127,255,240,0,0,2,252,0,0,0,63,219,240,42,170,171,254,170,170,128,47,75,240,127,255,255,255,255,255,192,12,11,240,127,255,255,255,255,255,192,0,11,240,127,255,255,255,255,255,192,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,47,255,252,0,0,0,0,11,240,0,31,255,252,0,0,0,0,11,240,0,15,255,240,0,0,0,0,5,80,0,5,85,0,0,0,0, + // 0x5b89 安 + 137,91,36,38,86,40,2,252,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,47,229,85,85,85,85,85,91,248,47,192,0,0,0,0,0,3,248,47,192,0,10,80,0,0,3,248,47,192,0,31,240,0,0,3,248,47,192,0,47,224,0,0,3,248,47,192,0,63,192,0,0,3,248,0,0,0,191,128,0,0,0,0,0,0,0,255,0,0,0,0,0,106,170,171,255,170,170,170,170,169,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,47,224,0,0,191,64,0,0,0,63,192,0,0,255,0,0,0,0,191,128,0,1,255,0,0,0,0,255,0,0,3,253,0,0,0,3,254,0,0,7,252,0,0,0,7,252,0,0,15,244,0,0,0,15,255,144,0,47,240,0,0,0,31,255,254,64,127,208,0,0,0,63,255,255,249,255,128,0,0,0,47,198,255,255,255,0,0,0,0,0,0,27,255,254,0,0,0,0,0,0,2,255,255,224,0,0,0,0,0,47,255,255,254,64,0,0,0,7,255,253,47,255,244,0,0,22,255,255,224,2,255,254,0,31,255,255,254,0,0,47,255,208,15,255,255,144,0,0,2,255,192,3,255,228,0,0,0,0,127,0,2,148,0,0,0,0,0,9,0, + // 0x5b8c 完 + 140,91,37,38,124,40,1,252,0,0,0,0,42,128,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,6,170,170,170,191,234,170,170,169,0,15,255,255,255,255,255,255,255,254,0,15,255,255,255,255,255,255,255,254,0,15,255,255,255,255,255,255,255,254,0,15,240,0,0,0,0,0,0,254,0,15,240,0,0,0,0,0,0,254,0,15,240,0,0,0,0,0,0,254,0,15,240,0,0,0,0,0,0,254,0,15,240,191,255,255,255,255,208,254,0,6,160,191,255,255,255,255,208,169,0,0,0,191,255,255,255,255,208,0,0,0,0,21,85,85,85,85,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,170,170,170,170,170,170,170,170,64,47,255,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,255,128,0,0,3,252,0,31,208,0,0,0,0,0,3,252,0,31,208,0,0,0,0,0,3,252,0,31,208,0,0,0,0,0,7,248,0,31,208,0,0,0,0,0,15,244,0,31,208,0,0,0,0,0,15,240,0,31,208,0,0,0,0,0,63,224,0,31,208,0,30,64,0,0,191,192,0,31,208,0,31,192,0,2,255,128,0,31,208,0,31,192,0,31,255,0,0,31,208,0,47,192,1,255,252,0,0,31,245,85,191,128,127,255,224,0,0,15,255,255,255,64,63,255,64,0,0,11,255,255,255,0,15,244,0,0,0,1,255,255,248,0,5,0,0,0,0,0,0,0,0,0, + // 0x5b9a 定 + 154,91,37,38,124,40,1,252,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,6,170,170,170,191,234,170,170,169,0,11,255,255,255,255,255,255,255,254,0,11,255,255,255,255,255,255,255,254,0,11,255,255,255,255,255,255,255,254,0,11,240,0,0,0,0,0,0,254,0,11,240,0,0,0,0,0,0,254,0,11,240,0,0,0,0,0,0,254,0,11,240,0,0,0,0,0,0,254,0,11,240,170,170,170,170,170,160,254,0,11,240,255,255,255,255,255,244,254,0,0,0,255,255,255,255,255,244,0,0,0,0,255,255,255,255,255,244,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,1,253,0,63,192,0,0,0,0,0,2,253,0,63,192,0,0,0,0,0,3,252,0,63,192,0,0,0,0,0,3,252,0,63,255,255,255,64,0,0,3,248,0,63,255,255,255,64,0,0,7,248,0,63,255,255,255,64,0,0,11,252,0,63,213,85,85,0,0,0,15,253,0,63,192,0,0,0,0,0,31,255,0,63,192,0,0,0,0,0,47,255,128,63,192,0,0,0,0,0,127,255,224,63,192,0,0,0,0,0,255,143,248,63,192,0,0,0,0,1,255,7,255,127,192,0,0,0,0,3,254,1,255,255,192,0,0,0,0,15,252,0,127,255,255,234,170,170,128,63,244,0,15,255,255,255,255,255,128,127,208,0,0,191,255,255,255,255,0,15,128,0,0,5,175,255,255,255,0,2,0,0,0,0,0,0,0,0,0, + // 0x5ba2 客 + 162,91,36,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,21,85,85,85,255,85,85,85,84,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,192,0,36,0,0,0,3,252,63,192,0,255,128,0,0,3,252,63,192,2,255,0,0,0,3,252,63,192,11,255,255,255,253,3,252,63,192,47,255,255,255,255,131,252,0,0,255,255,255,255,255,64,0,0,11,255,192,0,3,254,0,0,0,127,255,240,0,15,248,0,0,7,255,239,252,0,127,240,0,0,11,255,67,255,66,255,128,0,0,3,248,0,255,255,254,0,0,0,0,128,0,47,255,244,0,0,0,0,0,0,15,255,244,0,0,0,0,0,1,191,255,255,144,0,0,0,0,47,255,255,255,254,64,0,0,6,255,255,65,255,255,255,148,6,255,255,244,0,27,255,255,255,255,255,254,0,0,0,127,255,253,191,255,255,255,255,255,255,255,252,63,231,255,255,255,255,255,208,96,20,3,255,255,255,255,255,208,0,0,3,248,0,0,0,47,208,0,0,3,248,0,0,0,47,208,0,0,3,248,0,0,0,47,208,0,0,3,248,0,0,0,47,208,0,0,3,248,0,0,0,47,208,0,0,3,255,255,255,255,255,208,0,0,3,255,255,255,255,255,208,0,0,3,255,255,255,255,255,208,0,0,3,248,0,0,0,47,208,0,0,2,164,0,0,0,21,64,0, + // 0x5bab 宫 + 171,91,34,38,86,40,3,252,0,0,0,6,224,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,7,252,0,0,0,0,106,170,170,171,255,170,170,170,144,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,0,0,0,0,0,0,15,224,191,0,0,0,0,0,0,15,224,191,0,0,0,0,0,0,15,224,191,31,255,255,255,255,255,79,224,191,31,255,255,255,255,255,79,224,0,31,255,255,255,255,255,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,192,0,0,0,63,64,0,0,31,255,255,255,255,255,64,0,0,31,255,255,255,255,255,64,0,0,31,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,255,255,252,0,2,255,255,255,255,255,255,252,0,2,255,255,255,255,255,255,252,0,2,252,0,0,0,0,2,252,0,2,252,0,0,0,0,2,252,0,2,252,0,0,0,0,2,252,0,2,252,0,0,0,0,2,252,0,2,252,0,0,0,0,2,252,0,2,255,255,255,255,255,255,252,0,2,255,255,255,255,255,255,252,0,2,255,255,255,255,255,255,252,0,2,252,0,0,0,0,2,252,0,2,168,0,0,0,0,1,168,0, + // 0x5bf9 对 + 249,91,37,38,124,40,2,252,0,0,0,0,0,0,0,170,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,42,170,170,169,0,0,0,254,0,0,63,255,255,255,128,0,0,254,0,0,63,255,255,255,64,0,0,254,0,0,63,255,255,255,64,0,0,254,0,0,0,0,0,191,0,0,0,254,0,0,0,0,0,191,47,255,255,255,255,64,0,0,0,255,47,255,255,255,255,64,0,0,0,254,47,255,255,255,255,64,0,0,1,253,26,170,170,255,170,0,2,128,1,253,0,0,0,254,0,0,11,224,2,252,0,0,0,254,0,0,31,248,3,252,0,0,0,254,0,0,7,254,7,248,0,128,0,254,0,0,1,255,139,244,11,208,0,254,0,0,0,127,239,240,15,240,0,254,0,0,0,31,255,224,7,248,0,254,0,0,0,7,255,208,3,252,0,254,0,0,0,2,255,192,0,254,0,254,0,0,0,0,191,208,0,191,0,254,0,0,0,0,255,240,0,127,128,254,0,0,0,1,255,252,0,63,192,254,0,0,0,3,255,255,0,47,64,254,0,0,0,11,253,255,128,4,0,254,0,0,0,15,244,191,192,0,0,254,0,0,0,63,240,63,240,0,0,254,0,0,0,191,192,15,224,0,0,254,0,0,2,255,64,11,128,0,0,254,0,0,7,254,0,2,0,0,0,254,0,0,47,252,0,0,0,0,0,254,0,0,191,240,0,0,0,15,255,254,0,0,191,192,0,0,0,11,255,253,0,0,47,0,0,0,0,3,255,248,0,0,8,0,0,0,0,3,254,144,0,0, + // 0x5c06 将 + 6,92,38,38,124,40,1,252,0,0,253,0,0,0,0,2,128,0,0,1,253,0,0,0,6,191,224,0,0,1,253,0,0,90,255,255,248,0,0,1,253,22,255,255,255,255,228,0,0,1,253,63,255,255,255,164,0,0,1,1,253,63,255,250,80,0,0,0,63,1,253,30,80,0,0,0,36,0,63,193,253,0,0,31,192,0,191,0,47,209,253,6,192,31,192,0,255,0,15,241,253,15,208,15,224,2,254,0,11,245,253,11,240,11,240,7,252,0,3,253,253,3,244,7,240,15,240,0,2,254,253,3,252,3,244,47,224,0,0,255,253,1,252,3,244,127,192,0,0,245,253,0,253,2,64,255,0,0,0,1,253,0,249,0,3,253,0,0,0,1,253,0,64,0,2,253,0,0,0,1,253,0,0,0,0,191,0,0,0,1,253,0,0,0,0,191,0,0,0,1,253,21,85,85,85,255,85,64,0,1,253,63,255,255,255,255,255,208,0,1,253,63,255,255,255,255,255,208,0,7,253,63,255,255,255,255,255,208,0,47,253,0,0,0,0,191,0,0,1,255,253,0,24,0,0,191,0,0,15,255,253,0,191,0,0,191,0,0,191,254,253,0,191,128,0,191,0,0,127,241,253,0,63,224,0,191,0,0,63,129,253,0,15,244,0,191,0,0,45,1,253,0,7,252,0,191,0,0,0,1,253,0,2,254,0,191,0,0,0,1,253,0,0,253,0,191,0,0,0,1,253,0,0,144,0,191,0,0,0,1,253,0,0,0,0,191,0,0,0,1,253,0,0,7,255,255,0,0,0,1,253,0,0,3,255,254,0,0,0,1,253,0,0,3,255,252,0,0,0,0,168,0,0,1,170,64,0,0, + // 0x5c0f 小 + 15,92,38,37,114,40,1,252,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,6,80,0,63,192,0,120,0,0,0,11,252,0,63,192,3,252,0,0,0,11,248,0,63,192,2,254,0,0,0,15,244,0,63,192,0,255,0,0,0,15,240,0,63,192,0,191,192,0,0,31,240,0,63,192,0,63,192,0,0,63,224,0,63,192,0,47,224,0,0,63,192,0,63,192,0,31,240,0,0,127,192,0,63,192,0,15,248,0,0,191,128,0,63,192,0,7,252,0,0,255,64,0,63,192,0,3,253,0,2,255,0,0,63,192,0,2,255,0,3,253,0,0,63,192,0,1,255,0,7,252,0,0,63,192,0,0,255,128,15,248,0,0,63,192,0,0,191,192,47,240,0,0,63,192,0,0,63,192,127,208,0,0,63,192,0,0,63,224,47,192,0,0,63,192,0,0,47,240,3,64,0,0,63,192,0,0,31,144,0,0,0,0,63,192,0,0,8,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,31,255,255,192,0,0,0,0,0,0,15,255,255,128,0,0,0,0,0,0,7,255,255,0,0,0,0,0,0,0,3,255,164,0,0,0,0,0, + // 0x5c31 就 + 49,92,38,38,124,40,1,252,0,0,63,128,0,0,63,128,0,0,0,0,63,128,0,0,63,129,128,0,0,0,63,128,0,0,63,143,224,0,0,0,63,128,0,0,63,139,244,0,0,0,63,128,0,0,63,131,253,0,63,255,255,255,255,0,63,128,255,0,63,255,255,255,255,0,63,128,127,64,63,255,255,255,255,0,63,128,63,192,21,85,85,85,85,0,63,128,29,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,170,191,234,170,128,3,255,255,255,244,255,255,255,255,192,3,255,255,255,244,255,255,255,255,192,3,255,255,255,244,255,255,255,255,192,3,248,0,7,244,0,63,128,0,0,3,248,0,3,244,0,63,128,0,0,3,248,0,3,244,0,127,252,0,0,3,248,0,3,244,0,127,252,0,0,3,248,0,3,244,0,191,252,0,0,3,255,255,255,244,0,191,252,0,0,3,255,255,255,244,0,255,252,0,0,3,255,255,255,244,0,255,252,0,0,0,0,63,128,0,1,255,252,0,0,0,0,63,128,0,2,254,252,0,0,1,228,63,135,208,3,253,252,0,0,2,252,63,139,240,3,249,252,0,0,3,248,63,131,244,11,245,252,0,0,7,244,63,130,252,15,241,252,0,0,11,240,63,129,252,31,225,252,2,0,15,224,63,128,254,63,209,252,3,208,31,208,63,128,190,191,193,252,3,224,63,192,63,128,80,255,65,252,3,224,191,64,63,128,3,254,1,252,3,224,47,0,63,128,11,252,1,252,11,208,9,63,255,64,47,244,1,255,255,208,0,31,255,64,127,224,0,255,255,192,0,15,254,0,31,128,0,191,255,64,0,5,64,0,2,0,0,22,164,0, + // 0x5c4f 屏 + 79,92,37,36,104,40,1,252,0,127,255,255,255,255,255,255,244,0,0,127,255,255,255,255,255,255,244,0,0,127,255,255,255,255,255,255,244,0,0,127,64,0,0,0,0,7,244,0,0,127,64,0,0,0,0,7,244,0,0,127,64,0,0,0,0,7,244,0,0,127,64,0,0,0,0,7,244,0,0,127,255,255,255,255,255,255,244,0,0,127,255,255,255,255,255,255,244,0,0,127,255,255,255,255,255,255,244,0,0,127,64,27,128,0,1,253,0,0,0,127,64,47,208,0,2,253,0,0,0,127,64,15,240,0,7,252,0,0,0,127,64,7,244,0,15,240,0,0,0,127,64,3,248,0,15,208,0,0,0,127,31,255,255,255,255,255,254,0,0,191,31,255,255,255,255,255,254,0,0,191,31,255,255,255,255,255,254,0,0,191,0,3,252,0,31,208,0,0,0,191,0,3,252,0,31,208,0,0,0,255,0,3,252,0,31,208,0,0,0,255,0,3,252,0,31,208,0,0,0,254,0,3,252,0,31,208,0,0,0,254,191,255,255,255,255,255,255,192,1,253,191,255,255,255,255,255,255,192,2,252,191,255,255,255,255,255,255,192,3,252,0,11,244,0,31,208,0,0,3,248,0,15,240,0,31,208,0,0,7,244,0,31,240,0,31,208,0,0,11,240,0,63,208,0,31,208,0,0,15,240,0,255,128,0,31,208,0,0,47,224,7,255,0,0,31,208,0,0,63,192,127,252,0,0,31,208,0,0,127,192,127,240,0,0,31,208,0,0,31,64,47,192,0,0,31,208,0,0,2,0,9,0,0,0,31,192,0,0, + // 0x5de5 工 + 229,93,36,30,14,40,2,255,11,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,224,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,170,170,170,170,170,170, + // 0x5dee 差 + 238,93,36,38,86,40,2,252,0,0,4,0,0,0,36,0,0,0,0,189,0,0,0,191,128,0,0,0,255,0,0,0,255,64,0,0,0,191,128,0,1,254,0,0,0,0,63,192,0,3,252,0,0,0,0,47,224,0,11,248,0,0,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,21,85,255,85,85,85,85,85,84,0,1,254,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,3,253,255,255,255,255,255,0,0,7,252,255,255,255,255,255,0,0,11,244,255,255,255,255,255,0,0,15,240,0,2,253,0,0,0,0,47,224,0,2,252,0,0,0,0,127,192,0,2,252,0,0,0,0,255,128,0,2,252,0,0,0,2,255,0,0,2,252,0,0,0,7,253,0,0,2,252,0,0,0,31,248,85,85,86,253,85,85,80,191,240,255,255,255,255,255,255,252,255,192,255,255,255,255,255,255,252,63,0,255,255,255,255,255,255,252,8,0,0,0,0,0,0,0,0, + // 0x5df2 已 + 242,93,34,34,50,40,4,253,255,255,255,255,255,255,255,192,0,255,255,255,255,255,255,255,192,0,255,255,255,255,255,255,255,192,0,170,170,170,170,170,170,191,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,10,144,0,0,0,0,63,192,0,31,224,0,0,0,0,63,192,0,31,224,0,0,0,0,63,192,0,31,224,0,0,0,0,63,192,0,31,224,0,0,0,0,63,192,0,31,224,0,0,0,0,63,192,0,31,250,170,170,170,170,191,192,0,31,255,255,255,255,255,255,192,0,31,255,255,255,255,255,255,192,0,31,255,255,255,255,255,255,192,0,31,224,0,0,0,0,63,192,0,31,224,0,0,0,0,63,192,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,4,0,31,224,0,0,0,0,0,15,128,31,224,0,0,0,0,0,15,240,31,224,0,0,0,0,0,15,240,31,224,0,0,0,0,0,15,240,15,224,0,0,0,0,0,47,224,15,240,0,0,0,0,0,63,208,15,249,0,0,0,0,1,255,192,11,255,255,255,255,255,255,255,128,3,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,248,0,0,6,170,170,170,170,170,64,0, + // 0x5e73 平 + 115,94,36,35,59,40,2,252,11,255,255,255,255,255,255,255,224,11,255,255,255,255,255,255,255,224,11,255,255,255,255,255,255,255,224,6,170,170,170,255,170,170,170,144,0,0,0,0,255,0,0,0,0,0,1,64,0,255,0,1,144,0,0,63,192,0,255,0,3,253,0,0,47,192,0,255,0,7,252,0,0,15,224,0,255,0,11,248,0,0,15,240,0,255,0,15,240,0,0,7,248,0,255,0,31,224,0,0,3,252,0,255,0,63,192,0,0,2,253,0,255,0,127,128,0,0,1,254,0,255,0,255,0,0,0,0,248,0,255,0,189,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,254,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0, + // 0x5e76 并 + 118,94,36,39,95,40,2,251,0,0,96,0,0,0,29,0,0,0,3,252,0,0,0,63,240,0,0,2,253,0,0,0,127,208,0,0,0,255,0,0,0,255,128,0,0,0,191,128,0,1,255,0,0,0,0,63,208,0,3,253,0,0,0,0,31,224,0,11,248,0,0,0,0,15,208,0,7,240,0,0,10,170,175,170,170,170,170,170,164,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,106,170,191,234,170,171,254,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,127,128,0,3,252,0,0,0,0,191,64,0,3,252,0,0,0,0,255,0,0,3,252,0,0,0,0,255,0,0,3,252,0,0,0,2,254,0,0,3,252,0,0,0,3,252,0,0,3,252,0,0,0,15,252,0,0,3,252,0,0,0,47,240,0,0,3,252,0,0,0,191,224,0,0,3,252,0,0,3,255,128,0,0,3,252,0,0,31,255,0,0,0,3,252,0,0,127,248,0,0,0,3,252,0,0,47,208,0,0,0,3,252,0,0,10,0,0,0,0,2,248,0,0,0,0,0,0,0,0,0,0,0, + // 0x5e8a 床 + 138,94,38,38,124,40,1,252,0,0,0,0,5,80,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,170,170,170,175,250,170,170,170,128,0,255,255,255,255,255,255,255,255,192,0,255,255,255,255,255,255,255,255,192,0,255,255,255,255,255,255,255,255,192,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,127,64,0,0,0,0,254,0,0,0,127,64,0,0,0,0,254,0,0,0,127,64,0,0,0,0,254,0,0,0,127,64,0,0,0,0,254,0,0,0,127,64,0,0,0,0,254,26,170,170,191,170,170,170,64,0,254,47,255,255,255,255,255,255,192,0,254,47,255,255,255,255,255,255,192,0,253,47,255,255,255,255,255,255,192,1,253,0,0,3,255,240,0,0,0,1,253,0,0,15,255,248,0,0,0,1,253,0,0,31,255,253,0,0,0,1,252,0,0,63,255,255,0,0,0,2,252,0,0,255,255,191,192,0,0,2,252,0,2,255,127,111,224,0,0,2,252,0,7,252,127,79,248,0,0,3,252,0,31,244,127,71,254,0,0,3,248,0,127,224,127,65,255,128,0,7,244,1,255,192,127,64,191,224,0,11,240,7,255,0,127,64,47,252,0,11,240,47,252,0,127,64,11,255,64,15,240,255,240,0,127,64,2,255,208,31,224,255,192,0,127,64,0,191,128,47,192,63,0,0,127,64,0,31,0,63,192,8,0,0,127,64,0,4,0,127,128,0,0,0,127,64,0,0,0,31,0,0,0,0,127,64,0,0,0,1,0,0,0,0,127,0,0,0,0, + // 0x5e94 应 + 148,94,37,39,134,40,1,251,0,0,0,0,11,224,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,0,3,253,0,0,0,0,0,255,255,255,255,255,255,255,255,128,0,255,255,255,255,255,255,255,255,128,0,255,255,255,255,255,255,255,255,128,0,255,170,170,170,170,170,170,170,64,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,2,208,0,3,144,0,0,254,0,0,15,224,0,3,252,0,0,254,1,192,11,240,0,7,248,0,0,254,31,208,7,240,0,11,244,0,0,254,15,224,3,244,0,15,240,0,0,254,11,240,3,252,0,31,240,0,0,254,7,244,2,252,0,47,208,0,1,253,3,252,1,253,0,63,192,0,1,253,2,252,0,254,0,127,128,0,1,253,1,253,0,254,0,191,64,0,1,253,0,254,0,255,0,255,0,0,1,253,0,255,0,191,1,254,0,0,2,252,0,127,64,127,66,252,0,0,2,252,0,63,128,63,131,248,0,0,2,252,0,63,192,57,11,244,0,0,3,252,0,47,192,0,15,240,0,0,3,252,0,31,64,0,31,208,0,0,3,248,0,4,0,0,63,192,0,0,7,244,0,0,0,0,127,64,0,0,11,240,0,0,0,0,255,0,0,0,15,240,0,0,0,2,253,0,0,0,15,240,170,170,170,171,254,170,170,128,47,225,255,255,255,255,255,255,255,192,63,193,255,255,255,255,255,255,255,192,127,193,255,255,255,255,255,255,255,192,47,64,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5e9f 废 + 159,94,37,39,134,40,1,251,0,0,0,0,6,224,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,0,3,252,0,0,0,0,1,255,255,255,255,255,255,255,255,192,1,255,255,255,255,255,255,255,255,192,1,255,255,255,255,255,255,255,255,192,1,254,170,170,170,170,170,170,170,128,1,253,0,0,0,164,0,0,0,0,1,253,0,255,0,254,0,240,0,0,1,253,0,255,1,253,3,252,0,0,1,253,2,253,2,252,2,255,0,0,1,253,3,252,3,252,0,191,128,0,1,253,7,248,3,248,0,63,208,0,1,253,15,244,7,244,0,15,0,0,1,253,47,255,255,255,255,255,255,0,1,253,31,255,255,255,255,255,255,0,1,253,15,255,255,255,255,255,255,0,2,253,10,85,127,213,85,85,85,0,2,252,0,0,63,192,0,0,0,0,2,252,0,0,191,64,0,0,0,0,2,252,0,0,255,0,0,0,0,0,2,252,0,1,255,255,255,255,64,0,3,252,0,3,255,255,255,255,192,0,3,252,0,11,255,255,255,255,128,0,3,252,0,31,253,0,2,255,0,0,3,248,0,63,255,0,3,253,0,0,7,248,0,255,255,192,15,252,0,0,7,244,3,255,47,240,63,240,0,0,11,240,15,252,11,254,255,192,0,0,15,240,127,240,2,255,255,0,0,0,15,242,255,208,0,255,253,0,0,0,31,231,255,0,7,255,255,208,0,0,47,210,248,0,127,255,255,254,64,0,63,192,224,111,255,248,47,255,254,64,127,128,0,255,255,128,2,255,255,64,31,64,0,63,244,0,0,27,254,0,2,0,0,46,0,0,0,0,108,0,0,0,0,0,0,0,0,0,0,0, + // 0x5ea6 度 + 166,94,37,38,124,40,1,252,0,0,0,0,11,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,255,255,255,255,255,255,255,255,128,0,255,255,255,255,255,255,255,255,128,0,255,255,255,255,255,255,255,255,128,0,254,85,85,85,85,85,85,85,0,0,253,0,6,160,0,2,160,0,0,0,253,0,11,240,0,7,244,0,0,0,253,0,11,240,0,7,244,0,0,0,253,0,11,240,0,7,244,0,0,0,253,127,255,255,255,255,255,255,64,0,253,127,255,255,255,255,255,255,64,0,253,127,255,255,255,255,255,255,64,0,253,0,11,240,0,7,244,0,0,0,253,0,11,240,0,7,244,0,0,0,253,0,11,240,0,7,244,0,0,0,253,0,11,255,255,255,244,0,0,1,253,0,11,255,255,255,244,0,0,1,253,0,11,255,255,255,244,0,0,1,252,0,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,2,252,63,255,255,255,255,255,128,0,2,252,63,255,255,255,255,255,224,0,2,252,63,255,255,255,255,255,192,0,3,248,0,11,208,0,0,255,128,0,3,244,0,15,244,0,3,255,0,0,7,244,0,3,253,0,15,252,0,0,11,240,0,1,255,192,191,240,0,0,11,240,0,0,127,251,255,192,0,0,15,224,0,0,15,255,254,0,0,0,31,208,0,0,31,255,254,0,0,0,47,192,0,27,255,255,255,249,64,0,63,129,191,255,255,230,255,255,255,128,127,64,255,255,254,0,31,255,255,128,31,0,191,254,64,0,0,111,255,0,1,0,41,0,0,0,0,0,105,0, + // 0x5f00 开 + 0,95,36,35,59,40,2,252,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,10,170,191,234,170,171,254,170,164,0,0,47,192,0,2,253,0,0,0,0,47,192,0,2,253,0,0,0,0,47,192,0,2,253,0,0,0,0,47,192,0,2,253,0,0,0,0,47,192,0,2,253,0,0,0,0,47,192,0,2,253,0,0,0,0,47,192,0,2,253,0,0,0,0,47,192,0,2,253,0,0,0,0,47,192,0,2,253,0,0,0,0,47,192,0,2,253,0,0,106,170,191,234,170,171,254,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,63,192,0,2,253,0,0,0,0,63,128,0,2,253,0,0,0,0,127,128,0,2,253,0,0,0,0,191,64,0,2,253,0,0,0,0,255,0,0,2,253,0,0,0,1,255,0,0,2,253,0,0,0,3,254,0,0,2,253,0,0,0,3,252,0,0,2,253,0,0,0,15,252,0,0,2,253,0,0,0,47,244,0,0,2,253,0,0,0,127,224,0,0,2,253,0,0,1,255,192,0,0,2,253,0,0,11,255,64,0,0,2,253,0,0,47,253,0,0,0,2,253,0,0,127,244,0,0,0,2,253,0,0,31,208,0,0,0,2,253,0,0,6,0,0,0,0,1,253,0,0, + // 0x5f03 弃 + 3,95,36,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,21,85,85,85,255,85,85,85,84,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,1,255,0,0,0,0,0,0,0,3,253,0,0,244,0,0,0,0,11,248,0,7,254,0,0,0,0,15,240,0,1,255,208,0,0,0,63,192,0,0,47,248,0,26,170,191,234,255,255,255,255,0,47,255,255,255,255,255,255,255,208,47,255,255,255,255,255,255,255,244,31,255,254,170,169,85,80,11,252,0,0,0,0,0,1,84,2,244,0,0,63,128,0,3,248,0,128,0,0,63,128,0,3,248,0,0,0,0,63,128,0,3,248,0,0,0,0,63,128,0,3,248,0,0,0,0,63,128,0,3,248,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,191,149,85,87,253,85,85,0,0,255,0,0,3,248,0,0,0,0,255,0,0,3,248,0,0,0,3,254,0,0,3,248,0,0,0,11,252,0,0,3,248,0,0,0,47,248,0,0,3,248,0,0,0,191,240,0,0,3,248,0,0,7,255,192,0,0,3,248,0,0,191,254,0,0,0,3,248,0,0,255,248,0,0,0,3,248,0,0,63,128,0,0,0,3,248,0,0,24,0,0,0,0,2,168,0,0, + // 0x5f0f 式 + 15,95,37,38,124,40,2,252,0,0,0,0,0,170,0,64,0,0,0,0,0,0,0,255,2,244,0,0,0,0,0,0,0,255,7,254,0,0,0,0,0,0,0,191,1,255,192,0,0,0,0,0,0,191,0,63,240,0,0,0,0,0,0,191,0,15,240,0,0,0,0,0,0,191,64,3,128,0,106,170,170,170,170,255,170,171,169,0,191,255,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,255,254,0,191,255,255,255,255,255,255,255,254,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,15,255,255,255,252,63,192,0,0,0,15,255,255,255,252,47,208,0,0,0,15,255,255,255,252,47,208,0,0,0,10,170,255,170,168,31,224,0,0,0,0,0,191,0,0,15,224,0,0,0,0,0,191,0,0,15,240,0,0,0,0,0,191,0,0,15,240,0,0,0,0,0,191,0,0,11,244,0,0,0,0,0,191,0,0,7,248,0,0,0,0,0,191,0,0,3,252,0,0,0,0,0,191,0,0,3,252,0,40,0,0,0,191,0,0,2,253,0,63,64,0,0,191,0,27,1,255,0,63,128,0,0,191,111,255,64,255,0,63,64,0,1,255,255,255,64,191,192,63,64,6,255,255,255,254,0,63,208,127,0,127,255,255,254,64,0,47,244,191,0,63,255,254,64,0,0,15,255,254,0,63,249,0,0,0,0,3,255,252,0,25,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,47,144,0, + // 0x5f15 引 + 21,95,31,37,40,40,3,252,0,0,0,0,0,0,3,252,63,255,255,255,192,0,3,252,63,255,255,255,192,0,3,252,63,255,255,255,192,0,3,252,21,85,85,111,192,0,3,252,0,0,0,31,192,0,3,252,0,0,0,31,192,0,3,252,0,0,0,31,192,0,3,252,0,0,0,31,192,0,3,252,0,0,0,31,192,0,3,252,15,255,255,255,192,0,3,252,15,255,255,255,192,0,3,252,15,255,255,255,192,0,3,252,31,229,85,85,64,0,3,252,31,192,0,0,0,0,3,252,47,192,0,0,0,0,3,252,63,192,0,0,0,0,3,252,63,192,0,0,0,0,3,252,63,128,0,0,0,0,3,252,127,255,255,255,208,0,3,252,191,255,255,255,208,0,3,252,191,255,255,255,192,0,3,252,255,85,85,127,192,0,3,252,254,0,0,47,192,0,3,252,0,0,0,63,192,0,3,252,0,0,0,63,192,0,3,252,0,0,0,63,192,0,3,252,0,0,0,63,128,0,3,252,0,0,0,127,128,0,3,252,0,0,0,127,64,0,3,252,0,0,0,191,0,0,3,252,0,0,0,255,0,0,3,252,0,0,2,255,0,0,3,252,0,255,255,253,0,0,3,252,0,191,255,252,0,0,3,252,0,127,255,240,0,0,3,252,0,42,170,64,0,0,2,252, + // 0x5f39 弹 + 57,95,37,38,124,40,2,252,0,0,0,0,4,0,0,20,0,0,0,0,0,0,126,0,0,63,192,0,191,255,255,0,191,64,0,127,192,0,191,255,255,0,63,192,0,255,64,0,191,255,255,0,31,224,0,254,0,0,21,85,255,0,11,240,2,252,0,0,0,0,191,0,3,248,3,248,0,0,0,0,191,0,2,208,11,240,0,0,0,0,191,0,0,0,31,208,0,0,0,0,191,11,255,255,255,255,252,0,0,0,191,11,255,255,255,255,252,0,63,255,255,11,255,255,255,255,252,0,63,255,255,11,240,7,244,3,252,0,63,255,255,11,240,7,244,3,252,0,63,85,85,11,240,7,244,3,252,0,63,0,0,11,255,255,255,255,252,0,63,0,0,11,255,255,255,255,252,0,63,0,0,11,255,255,255,255,252,0,63,0,0,11,240,7,244,3,252,0,63,0,0,11,240,7,244,3,252,0,63,255,255,11,240,7,244,3,252,0,127,255,255,11,255,255,255,255,252,0,127,255,254,11,255,255,255,255,252,0,0,0,254,11,255,255,255,255,252,0,0,0,254,0,0,7,244,0,0,0,0,0,254,0,0,7,244,0,0,0,0,0,253,0,0,7,244,0,0,0,0,0,253,255,255,255,255,255,255,64,0,0,253,255,255,255,255,255,255,64,0,0,253,255,255,255,255,255,255,64,0,1,252,21,85,91,249,85,85,0,0,1,252,0,0,7,244,0,0,0,0,2,252,0,0,7,244,0,0,0,0,7,248,0,0,7,244,0,0,0,47,255,244,0,0,7,244,0,0,0,15,255,240,0,0,7,244,0,0,0,15,255,208,0,0,7,244,0,0,0,5,149,0,0,0,7,244,0,0,0, + // 0x5f52 归 + 82,95,34,39,95,40,3,251,0,0,170,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,191,2,170,170,170,170,144,0,0,191,3,255,255,255,255,224,191,0,191,3,255,255,255,255,224,191,0,191,3,255,255,255,255,224,191,0,191,0,0,0,0,15,224,191,0,191,0,0,0,0,15,224,191,0,191,0,0,0,0,15,224,191,0,191,0,0,0,0,15,224,191,0,191,0,0,0,0,15,224,191,0,191,0,0,0,0,15,224,191,0,191,0,0,0,0,15,224,191,0,191,0,0,0,0,15,224,191,0,191,0,0,0,0,15,224,191,0,191,0,0,0,0,15,224,191,0,191,0,255,255,255,255,224,191,0,255,0,255,255,255,255,224,191,0,255,0,255,255,255,255,224,191,0,255,0,170,170,170,191,224,191,0,255,0,0,0,0,15,224,191,0,255,0,0,0,0,15,224,191,0,254,0,0,0,0,15,224,191,1,254,0,0,0,0,15,224,85,1,253,0,0,0,0,15,224,0,2,252,0,0,0,0,15,224,0,3,252,0,0,0,0,15,224,0,7,248,0,0,0,0,15,224,0,15,244,0,0,0,0,15,224,0,31,240,0,0,0,0,15,224,0,63,224,15,255,255,255,255,224,0,191,192,15,255,255,255,255,224,2,255,64,15,255,255,255,255,224,11,254,0,10,170,170,170,175,224,31,252,0,0,0,0,0,15,224,7,240,0,0,0,0,0,15,224,1,192,0,0,0,0,0,5,64,0,0,0,0,0,0,0,0,0, + // 0x5f84 径 + 132,95,38,38,124,40,1,252,0,0,36,0,0,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,3,255,11,255,255,255,255,248,0,0,11,252,11,255,255,255,255,252,0,0,47,240,11,255,255,255,255,248,0,0,255,208,0,27,64,0,15,244,0,3,255,64,0,63,192,0,31,224,0,31,253,0,0,31,208,0,63,192,0,127,244,9,0,15,240,0,255,128,0,63,208,31,208,7,252,2,255,0,0,15,0,63,192,2,255,11,252,0,0,4,0,191,128,0,191,239,244,0,0,0,2,255,0,0,63,255,208,0,0,0,7,253,0,0,15,255,64,0,0,0,15,248,0,0,127,255,224,0,0,0,63,240,0,7,255,255,254,0,0,0,255,240,0,111,255,95,255,228,0,3,255,240,27,255,248,2,255,255,144,31,255,240,191,255,128,0,47,255,208,191,255,240,63,248,1,84,2,255,128,191,219,240,46,64,2,252,0,27,0,63,75,240,0,0,2,252,0,0,0,29,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,3,252,0,0,0,0,11,240,7,255,255,255,255,252,0,0,11,240,7,255,255,255,255,252,0,0,11,240,7,255,255,255,255,252,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,255,255,255,255,255,255,208,0,11,240,255,255,255,255,255,255,208,0,11,240,255,255,255,255,255,255,208,0,11,240,21,85,85,85,85,85,64,0,11,240,0,0,0,0,0,0,0, + // 0x5f85 待 + 133,95,38,38,124,40,1,252,0,0,96,0,0,2,164,0,0,0,0,0,254,0,0,3,248,0,0,0,0,2,255,0,0,3,248,0,0,0,0,11,252,0,0,3,248,0,0,0,0,47,244,0,0,3,248,0,0,0,0,191,208,11,255,255,255,255,253,0,3,255,64,11,255,255,255,255,253,0,31,253,0,11,255,255,255,255,253,0,63,244,0,1,85,87,253,85,84,0,31,192,41,0,0,3,248,0,0,0,15,0,63,128,0,3,248,0,0,0,0,0,255,64,0,3,248,0,0,0,0,2,254,0,0,3,248,0,0,0,0,7,252,255,255,255,255,255,255,208,0,15,244,255,255,255,255,255,255,208,0,63,240,255,255,255,255,255,255,208,0,255,240,85,85,85,85,255,85,64,3,255,240,0,0,0,0,191,0,0,15,255,240,0,0,0,0,191,0,0,127,255,240,0,0,0,0,191,0,0,191,239,240,21,85,85,85,255,85,64,63,143,240,127,255,255,255,255,255,192,46,15,240,127,255,255,255,255,255,192,4,15,240,127,255,255,255,255,255,192,0,15,240,0,0,0,0,191,0,0,0,15,240,0,124,0,0,191,0,0,0,15,240,1,254,0,0,191,0,0,0,15,240,0,255,64,0,191,0,0,0,15,240,0,63,192,0,191,0,0,0,15,240,0,31,240,0,191,0,0,0,15,240,0,15,244,0,191,0,0,0,15,240,0,3,252,0,191,0,0,0,15,240,0,2,224,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,0,3,255,255,0,0,0,15,240,0,0,3,255,254,0,0,0,15,240,0,0,2,255,252,0,0,0,6,144,0,0,0,169,64,0,0, + // 0x5faa 循 + 170,95,38,38,124,40,1,252,0,0,144,0,0,0,0,0,0,0,0,1,253,0,0,0,0,27,224,0,0,3,252,0,0,0,91,255,248,0,0,15,244,25,22,255,255,255,252,0,0,63,224,31,255,255,255,250,64,0,0,255,192,31,255,255,255,192,0,0,3,255,0,31,233,64,47,192,0,0,15,252,0,31,192,0,47,192,0,0,127,240,0,31,192,0,47,192,0,0,63,192,56,31,192,0,47,192,0,0,30,0,191,95,255,255,255,255,255,208,4,1,255,31,255,255,255,255,255,208,0,3,252,31,255,255,255,255,255,208,0,15,244,31,192,0,63,128,0,0,0,63,224,31,192,0,63,64,0,0,0,255,208,31,192,0,63,64,0,0,3,255,208,31,195,255,255,255,254,0,15,255,208,31,195,255,255,255,254,0,127,255,208,31,195,255,255,255,254,0,255,223,208,31,195,244,0,0,254,0,127,79,208,31,195,244,0,0,254,0,62,15,208,47,195,244,0,0,254,0,24,15,208,47,195,250,170,170,254,0,0,15,208,47,131,255,255,255,254,0,0,15,208,63,131,255,255,255,254,0,0,15,208,63,131,244,0,0,254,0,0,15,208,63,67,244,0,0,254,0,0,15,208,127,3,244,0,0,254,0,0,15,208,191,3,255,255,255,254,0,0,15,208,191,3,255,255,255,254,0,0,15,208,254,3,250,170,170,254,0,0,15,209,253,3,244,0,0,254,0,0,15,210,252,3,244,0,0,254,0,0,15,211,252,3,250,170,170,254,0,0,15,215,244,3,255,255,255,254,0,0,15,211,240,3,255,255,255,254,0,0,15,208,160,3,244,0,0,254,0,0,10,144,0,2,160,0,0,85,0, + // 0x5fae 微 + 174,95,38,38,124,40,1,252,0,6,64,1,244,0,2,144,0,0,0,15,240,1,244,0,3,244,0,0,0,47,208,1,244,0,7,240,0,0,0,191,193,65,244,20,7,240,0,0,1,255,3,209,244,62,11,240,0,0,7,252,3,209,244,62,15,224,0,0,31,244,3,209,244,62,15,208,0,0,127,224,3,209,244,62,15,192,0,0,127,129,67,209,244,62,47,255,255,208,46,3,251,209,244,62,63,255,255,208,4,11,247,209,244,62,63,255,255,208,0,15,227,255,255,254,127,64,190,0,0,47,195,255,255,254,255,64,190,0,0,127,131,255,255,255,255,64,253,0,0,255,0,0,0,3,255,128,253,0,2,255,0,0,0,7,255,128,252,0,7,255,0,0,0,15,255,192,252,0,31,255,0,0,0,3,235,193,252,0,63,255,15,255,255,255,199,210,248,0,255,255,15,255,255,255,7,227,244,0,191,127,15,255,255,255,3,243,240,0,60,63,0,127,11,224,3,247,240,0,20,63,0,126,7,224,2,255,224,0,0,63,0,126,7,224,1,255,208,0,0,63,0,126,7,224,0,255,192,0,0,63,0,126,7,224,0,255,192,0,0,63,0,189,7,224,0,191,64,0,0,63,0,253,7,224,64,191,0,0,0,63,0,252,7,251,192,255,128,0,0,63,1,252,11,255,211,255,192,0,0,63,2,248,63,255,139,255,240,0,0,63,3,244,47,248,15,247,248,0,0,63,11,240,14,64,63,195,253,0,0,63,31,208,0,1,255,64,255,64,0,63,47,192,0,11,254,0,191,224,0,63,11,0,0,11,244,0,47,208,0,63,1,0,0,3,208,0,11,128,0,63,0,0,0,1,64,0,1,0, + // 0x5fc3 心 + 195,95,38,38,124,40,1,252,0,0,0,20,0,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,11,255,248,0,0,0,0,0,0,0,0,191,255,64,0,0,0,0,0,0,0,11,255,240,0,0,0,0,0,0,0,0,255,252,0,0,0,0,0,0,0,0,31,244,0,0,0,0,0,0,0,0,2,224,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,1,84,0,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,0,3,252,0,0,0,4,0,0,0,0,3,252,0,0,0,189,0,0,0,249,3,252,0,0,1,255,0,0,0,255,3,252,0,0,0,255,128,0,0,254,3,252,0,0,0,63,208,0,0,254,3,252,0,0,0,47,240,0,1,253,3,252,0,0,0,15,244,0,2,252,3,252,0,0,0,11,252,0,3,252,3,252,0,0,0,3,253,0,3,252,3,252,0,0,0,1,255,0,7,248,3,252,0,0,0,0,255,64,11,244,3,252,0,0,0,0,191,192,15,240,3,252,0,0,0,0,63,192,31,224,3,252,0,0,6,0,63,208,63,208,3,252,0,0,7,240,47,224,127,192,3,252,0,0,7,240,15,224,191,128,3,252,0,0,7,240,14,0,31,0,3,252,0,0,11,240,0,0,0,0,3,252,0,0,11,240,0,0,0,0,3,252,0,0,15,224,0,0,0,0,2,254,0,0,47,208,0,0,0,0,2,255,255,255,255,192,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,127,255,255,254,0,0,0,0,0,0,1,85,85,80,0,0,0, + // 0x5ffd 忽 + 253,95,36,38,86,40,2,252,0,0,9,0,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,2,255,85,85,85,85,85,64,0,7,255,255,255,255,255,255,192,0,15,255,255,255,255,255,255,192,0,63,255,255,255,255,255,255,192,0,255,192,63,208,31,208,63,192,3,255,0,127,128,63,192,63,192,15,252,0,255,0,127,64,63,128,127,244,3,253,0,255,0,63,128,191,208,15,248,2,253,0,63,128,31,0,63,240,7,252,0,127,64,0,0,191,192,15,240,0,127,64,0,3,255,0,47,224,0,127,64,0,31,252,0,191,192,0,191,0,0,191,240,2,255,0,0,255,0,7,255,192,11,253,0,0,255,0,11,254,0,47,244,0,2,254,0,2,244,0,255,208,15,255,253,0,0,64,11,255,64,11,255,248,0,0,0,11,253,0,7,255,224,0,0,0,2,240,224,0,16,0,0,0,0,0,71,254,0,0,0,0,0,0,0,7,255,192,0,80,0,0,57,11,224,191,244,2,244,0,0,191,15,240,15,252,7,253,0,0,255,15,240,2,240,2,255,64,1,253,15,240,0,128,0,191,192,3,252,15,240,0,0,116,47,240,11,248,15,240,0,0,127,15,248,31,240,15,240,0,0,191,3,253,127,208,15,240,0,0,255,2,255,255,192,11,255,255,255,254,0,255,63,0,7,255,255,255,252,0,120,4,0,1,255,255,255,240,0,0,0,0,0,5,85,85,0,0,0, + // 0x6027 性 + 39,96,37,38,124,40,1,252,0,31,208,0,0,1,168,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,62,65,253,0,0,0,0,31,208,0,127,65,253,0,0,0,0,31,208,0,191,1,253,0,0,0,0,31,208,0,191,1,253,0,0,0,0,31,208,0,255,1,253,0,0,0,0,31,239,0,254,1,253,0,0,0,15,159,255,129,254,170,254,170,169,0,15,159,223,194,255,255,255,255,255,0,15,159,219,211,255,255,255,255,255,0,31,159,215,247,255,255,255,255,255,0,31,95,211,255,240,1,253,0,0,0,47,31,210,255,240,1,253,0,0,0,63,31,208,95,208,1,253,0,0,0,63,31,208,63,192,1,253,0,0,0,126,31,208,63,128,1,253,0,0,0,189,31,208,7,0,1,253,0,0,0,188,31,208,0,0,1,253,0,0,0,4,31,208,0,0,1,253,0,0,0,0,31,208,2,255,255,255,255,252,0,0,31,208,2,255,255,255,255,252,0,0,31,208,2,255,255,255,255,252,0,0,31,208,1,85,86,254,85,84,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,191,255,255,255,255,255,192,0,31,208,191,255,255,255,255,255,192,0,31,208,191,255,255,255,255,255,192,0,31,208,106,170,170,170,170,170,128,0,31,208,0,0,0,0,0,0,0, + // 0x603b 总 + 59,96,36,38,86,40,2,252,0,0,4,0,0,0,80,0,0,0,0,127,0,0,0,190,0,0,0,0,191,128,0,0,255,64,0,0,0,63,208,0,2,255,0,0,0,0,31,240,0,3,252,0,0,0,0,11,248,0,11,248,0,0,0,0,3,252,0,15,240,0,0,0,0,2,252,0,47,224,0,0,0,21,86,245,85,127,229,84,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,21,85,85,165,85,85,84,0,0,0,0,0,244,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,21,65,255,192,0,8,0,3,228,63,192,63,240,0,127,0,3,248,63,192,15,252,0,191,128,7,244,63,192,3,255,0,63,208,15,240,63,192,0,253,0,15,240,15,240,63,192,0,52,0,7,248,31,224,63,192,0,0,9,3,253,63,192,63,192,0,0,15,208,254,127,192,63,192,0,0,15,224,191,255,64,63,208,0,0,47,208,62,127,0,47,255,255,255,255,192,36,4,0,15,255,255,255,255,128,0,0,0,7,255,255,255,254,0,0,0,0,0,21,85,85,64,0,0, + // 0x6062 恢 + 98,96,38,38,124,40,1,252,0,10,128,1,160,0,0,0,0,0,0,31,192,3,244,0,0,0,0,0,0,31,192,3,244,0,0,0,0,0,0,31,192,3,244,0,0,0,0,0,0,31,192,87,249,85,85,85,85,64,0,31,192,255,255,255,255,255,255,192,0,31,192,255,255,255,255,255,255,192,0,31,233,255,255,255,255,255,255,192,10,95,255,3,244,0,0,0,0,0,15,159,239,3,244,0,15,192,0,0,15,95,207,131,244,0,15,192,0,0,15,95,203,195,244,0,15,192,0,0,31,95,199,211,244,0,15,192,0,0,31,31,195,227,244,0,15,192,9,0,47,31,195,227,244,184,15,192,31,192,63,31,194,67,244,252,15,192,47,128,62,31,192,3,244,248,15,192,63,64,125,31,192,3,240,248,15,192,63,0,188,31,192,3,240,244,15,192,190,0,20,31,192,3,241,244,31,192,252,0,0,31,192,3,242,240,31,193,248,0,0,31,192,7,243,240,31,210,244,0,0,31,192,7,251,208,47,211,240,0,0,31,192,11,225,192,63,224,0,0,0,31,192,11,224,0,63,240,0,0,0,31,192,15,208,0,127,244,0,0,0,31,192,15,208,0,254,248,0,0,0,31,192,31,192,1,252,252,0,0,0,31,192,47,192,3,248,190,0,0,0,31,192,63,128,11,240,63,64,0,0,31,192,127,64,31,224,63,192,0,0,31,192,191,0,127,192,31,240,0,0,31,192,254,1,255,64,11,252,0,0,31,194,252,11,254,0,3,255,0,0,31,199,248,63,248,0,1,255,208,0,31,203,240,127,224,0,0,127,208,0,31,193,224,47,64,0,0,31,128,0,31,192,64,8,0,0,0,2,0, + // 0x606f 息 + 111,96,37,39,134,40,2,252,0,0,0,0,64,0,0,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,15,255,255,255,255,255,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,250,170,170,170,171,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,250,170,170,170,175,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,255,255,255,255,255,248,0,0,0,0,0,0,144,0,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,0,7,254,0,0,16,0,0,0,228,10,129,255,128,0,248,0,0,1,253,15,208,127,224,3,254,0,0,3,252,15,208,31,244,1,255,128,0,3,248,15,208,7,240,0,127,224,0,15,244,15,208,2,128,64,31,244,0,31,240,15,208,0,0,185,11,252,0,63,208,15,208,0,0,254,3,255,0,255,128,15,224,0,1,254,0,255,64,255,0,15,255,255,255,252,0,127,0,28,0,11,255,255,255,252,0,56,0,0,0,2,255,255,255,224,0,0,0,0,0,0,5,85,84,0,0,0,0, + // 0x611f 感 + 31,97,38,38,124,40,1,252,0,0,0,0,0,127,2,224,0,0,0,0,0,0,0,127,11,254,0,0,0,0,0,0,0,127,2,255,208,0,0,0,0,0,0,63,64,47,192,0,0,255,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,255,64,0,253,0,0,0,47,192,0,0,0,0,253,0,0,0,31,192,4,0,0,0,253,21,85,85,79,208,31,192,0,0,253,127,255,255,143,224,63,192,0,0,253,127,255,255,139,240,127,64,0,0,253,0,0,0,7,240,255,0,0,0,253,0,0,0,3,249,254,0,0,0,252,26,170,170,3,255,252,0,0,1,252,63,255,255,1,255,248,0,0,2,252,63,255,255,0,255,240,0,0,2,248,63,0,63,0,191,208,5,0,3,248,63,0,63,0,255,192,11,192,7,240,63,0,63,3,255,224,11,208,11,240,63,170,191,15,255,244,15,192,15,224,63,255,255,127,251,254,31,192,47,208,63,255,255,255,193,255,255,192,127,192,0,0,128,127,0,127,255,64,63,64,0,2,248,24,0,15,253,0,14,0,0,7,255,64,0,0,80,0,0,0,0,1,255,208,0,4,0,0,0,29,3,248,47,248,0,126,0,0,0,63,195,248,7,248,0,255,128,0,0,63,131,248,1,224,0,63,224,0,0,255,3,248,0,0,36,15,244,0,1,255,3,248,0,0,47,135,253,0,3,253,3,248,0,0,63,130,255,0,15,248,3,252,0,0,127,64,255,128,63,240,3,255,255,255,255,0,63,192,47,208,2,255,255,255,255,0,47,64,3,64,0,191,255,255,248,0,4,0,0,0,0,1,85,85,0,0,0,0, + // 0x620f 戏 + 15,98,37,39,134,40,1,251,0,0,0,0,0,42,0,16,0,0,0,0,0,0,0,127,64,188,0,0,0,0,0,0,0,127,130,255,0,0,0,0,0,0,0,127,128,255,192,0,5,85,85,80,0,127,128,63,240,0,63,255,255,255,0,63,128,15,252,0,63,255,255,255,0,63,128,3,244,0,63,255,255,255,0,63,192,0,192,0,0,0,0,255,0,63,192,0,0,0,0,0,0,254,0,63,192,0,90,64,2,0,1,253,0,63,218,255,255,128,11,192,1,252,107,255,255,255,255,128,47,224,2,252,255,255,255,255,255,128,15,244,3,252,191,255,255,165,0,0,3,252,7,248,127,191,208,0,0,0,1,255,11,240,0,31,208,0,224,0,0,255,143,240,0,31,224,2,252,0,0,63,223,224,0,31,224,3,252,0,0,31,255,208,0,15,240,7,244,0,0,11,255,192,0,15,240,15,240,0,0,3,255,128,0,15,240,47,224,0,0,1,255,64,0,11,244,63,192,0,0,1,255,128,0,11,248,255,64,0,0,3,255,208,0,7,250,255,0,0,0,11,255,240,0,3,255,252,0,0,0,15,255,248,0,3,255,244,0,0,0,63,243,253,0,2,255,224,0,0,0,191,194,255,0,1,255,192,8,0,1,255,128,255,64,2,255,64,15,64,7,255,0,127,64,11,255,128,15,192,31,252,0,61,0,63,255,192,31,192,127,244,0,20,0,255,255,224,31,192,63,208,0,0,11,255,159,248,63,128,15,64,0,0,127,253,15,255,191,64,5,0,0,0,191,244,7,255,255,0,0,0,0,0,31,128,1,255,254,0,0,0,0,0,9,0,0,127,252,0,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,0,0,0,0, + // 0x6210 成 + 16,98,37,39,134,40,1,251,0,0,0,0,0,170,1,64,0,0,0,0,0,0,0,255,7,244,0,0,0,0,0,0,0,191,15,254,0,0,0,0,0,0,0,191,2,255,192,0,0,0,0,0,0,191,0,127,244,0,0,0,0,0,0,191,0,15,244,0,0,0,0,0,0,191,0,2,208,0,0,255,255,255,255,255,255,255,255,192,0,255,255,255,255,255,255,255,255,192,0,255,255,255,255,255,255,255,255,192,0,255,170,170,170,255,234,170,170,128,0,255,0,0,0,127,128,0,0,0,0,255,0,0,0,63,128,0,0,0,0,255,0,0,0,63,128,1,0,0,0,255,0,0,0,63,192,7,244,0,0,255,85,85,80,63,192,15,240,0,0,255,255,255,240,63,192,15,240,0,0,255,255,255,240,47,192,47,208,0,0,255,255,255,240,31,208,63,192,0,0,255,0,15,240,31,224,127,128,0,0,255,0,15,240,15,240,255,0,0,0,254,0,15,224,15,242,255,0,0,0,254,0,15,224,15,247,253,0,0,0,254,0,15,224,11,255,248,0,0,1,254,0,15,224,7,255,240,0,0,1,253,0,15,224,3,255,224,0,0,2,253,0,15,224,3,255,192,0,0,2,252,0,31,208,2,255,0,13,0,3,252,85,127,208,7,255,0,15,192,3,252,127,255,192,31,255,64,15,192,7,248,63,255,128,127,255,192,15,192,11,244,47,253,2,255,255,208,31,192,15,240,0,0,15,255,31,240,47,192,31,240,0,0,127,252,15,253,63,128,63,208,0,2,255,240,7,255,255,64,127,192,0,2,255,192,1,255,255,0,47,128,0,0,189,0,0,127,253,0,7,0,0,0,32,0,0,10,160,0,0,0,0,0,0,0,0,0,0,0, + // 0x6237 户 + 55,98,33,39,95,40,1,251,0,0,0,0,27,0,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,15,240,0,0,0,0,5,85,85,95,229,85,85,64,0,31,255,255,255,255,255,255,192,0,31,255,255,255,255,255,255,192,0,31,255,255,255,255,255,255,192,0,31,208,0,0,0,0,63,192,0,31,208,0,0,0,0,63,192,0,31,208,0,0,0,0,63,192,0,31,208,0,0,0,0,63,192,0,31,208,0,0,0,0,63,192,0,31,208,0,0,0,0,63,192,0,47,208,0,0,0,0,63,192,0,47,229,85,85,85,85,127,192,0,47,255,255,255,255,255,255,192,0,47,255,255,255,255,255,255,192,0,47,255,255,255,255,255,255,192,0,63,192,0,0,0,0,63,192,0,63,192,0,0,0,0,63,192,0,63,192,0,0,0,0,21,64,0,63,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,47,240,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,31,128,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6240 所 + 64,98,38,37,114,40,1,252,0,0,0,0,0,0,0,0,180,0,5,85,85,85,84,0,0,11,254,0,31,255,255,255,252,0,1,255,255,128,31,255,255,255,252,80,191,255,253,0,31,255,255,255,252,191,255,255,128,0,0,0,0,0,0,191,255,228,0,0,0,0,0,0,0,191,228,0,0,0,0,0,0,0,0,191,0,0,0,0,1,85,85,85,80,191,0,0,0,0,3,255,255,255,240,191,0,0,0,0,3,255,255,255,240,191,0,0,0,0,3,255,255,255,240,191,0,0,0,0,3,244,0,15,240,191,0,0,0,0,3,244,0,15,240,191,255,255,255,208,3,244,0,15,240,191,255,255,255,208,3,244,0,15,240,191,255,255,255,208,3,244,0,15,240,255,170,175,250,144,3,244,0,15,240,255,0,15,208,0,3,255,255,255,240,254,0,15,208,0,3,255,255,255,240,254,0,15,208,0,3,255,255,255,240,254,0,15,208,0,3,249,85,85,81,253,0,15,208,0,3,244,0,0,1,253,0,15,208,0,7,240,0,0,2,252,0,15,208,0,7,240,0,0,3,252,0,15,208,0,7,240,0,0,3,248,0,15,208,0,11,240,0,0,7,244,0,15,208,0,11,240,0,0,15,240,0,15,208,0,15,224,0,0,15,240,0,15,208,0,15,208,0,0,47,208,0,15,208,0,31,192,0,0,63,192,0,15,208,0,63,192,0,0,255,128,0,15,208,0,63,128,0,2,255,0,0,15,208,0,191,64,0,7,253,0,0,15,208,0,255,0,0,7,248,0,0,15,208,0,45,0,0,0,240,0,0,15,208,0,4,0,0,0,0,0,0,15,208,0, + // 0x6247 扇 + 71,98,36,36,68,40,1,252,15,255,255,255,255,255,255,255,255,15,255,255,255,255,255,255,255,255,15,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,255,224,0,63,255,255,255,255,255,255,224,0,63,255,255,255,255,255,255,224,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,15,224,0,63,255,255,255,255,255,255,224,0,127,255,255,255,255,255,255,224,0,127,255,255,255,255,255,255,224,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,127,255,255,15,255,255,244,0,127,127,255,255,15,255,255,244,0,191,63,255,255,15,255,255,244,0,191,1,0,127,0,80,3,244,0,255,15,192,127,3,244,3,244,0,254,15,224,127,3,253,3,244,0,254,7,248,127,0,255,3,244,1,253,1,252,127,0,63,67,244,2,252,0,240,127,0,28,3,244,3,252,0,0,127,0,0,99,244,3,248,0,47,127,0,11,243,244,7,244,7,255,127,1,191,243,244,15,241,191,254,127,47,255,131,244,31,241,255,224,127,47,248,3,244,63,208,253,0,127,31,128,3,244,127,192,144,0,127,4,0,3,244,191,64,0,63,255,0,3,255,244,31,0,0,47,254,0,2,255,240,0,0,0,31,228,0,1,255,128, + // 0x624b 手 + 75,98,36,38,86,40,2,252,0,0,0,0,0,0,0,96,0,0,0,0,0,0,1,175,248,0,0,0,0,1,90,255,255,253,0,1,86,175,255,255,255,255,254,0,3,255,255,255,255,255,254,64,0,3,255,255,255,255,165,0,0,0,2,255,170,85,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,2,170,170,170,255,170,170,170,144,3,255,255,255,255,255,255,255,224,3,255,255,255,255,255,255,255,224,3,255,255,255,255,255,255,255,224,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,170,255,170,170,170,170,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,191,255,253,0,0,0,0,0,0,63,255,248,0,0,0,0,0,0,42,169,0,0,0,0,0, + // 0x6253 打 + 83,98,37,38,124,40,2,252,0,31,208,0,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,0,31,208,2,170,170,170,170,170,64,0,31,208,3,255,255,255,255,255,64,0,31,208,3,255,255,255,255,255,64,0,31,208,3,255,255,255,255,255,64,0,31,208,0,0,0,31,224,0,0,255,255,255,244,0,0,31,224,0,0,255,255,255,244,0,0,31,224,0,0,255,255,255,244,0,0,31,224,0,0,170,175,234,160,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,20,0,0,31,224,0,0,0,31,235,248,0,0,31,224,0,0,0,47,255,248,0,0,31,224,0,0,27,255,255,252,0,0,31,224,0,0,255,255,255,144,0,0,31,224,0,0,255,255,224,0,0,0,31,224,0,0,191,255,208,0,0,0,31,224,0,0,120,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,47,208,0,0,0,47,224,0,0,63,255,208,0,11,255,255,208,0,0,31,255,192,0,3,255,255,192,0,0,15,255,64,0,3,255,255,64,0,0,5,80,0,0,2,255,228,0,0,0, + // 0x6267 执 + 103,98,38,38,124,40,1,252,0,15,192,0,1,252,0,0,0,0,0,31,192,0,1,252,0,0,0,0,0,31,192,0,1,252,0,0,0,0,0,31,192,0,1,252,0,0,0,0,0,31,192,0,1,252,0,0,0,0,0,31,192,0,1,252,0,0,0,0,0,31,192,0,1,252,0,0,0,0,0,31,192,0,1,252,0,0,0,0,21,111,229,69,86,254,85,85,0,0,63,255,255,207,255,255,255,255,0,0,63,255,255,207,255,255,255,255,0,0,63,255,255,207,255,255,255,255,0,0,0,31,192,0,1,252,0,191,0,0,0,31,192,0,1,252,0,191,0,0,0,31,192,0,2,252,0,191,0,0,0,31,192,0,2,252,0,191,0,0,0,31,192,0,2,252,0,191,0,0,0,31,192,67,195,248,0,191,0,0,0,31,235,219,251,248,0,255,0,0,0,31,255,239,255,244,0,255,0,0,1,191,255,226,255,244,0,191,0,0,127,255,254,64,47,254,0,191,0,0,127,255,224,0,15,255,208,191,0,0,63,255,192,0,15,255,248,191,0,0,57,31,192,0,31,239,255,255,0,0,0,31,192,0,47,195,255,255,0,0,0,31,192,0,63,192,188,191,0,0,0,31,192,0,191,64,20,191,0,0,0,31,192,0,255,0,0,191,0,0,0,31,192,2,254,0,0,127,4,0,0,31,192,7,252,0,0,127,11,128,0,31,192,15,248,0,0,127,11,208,0,31,192,63,240,0,0,63,75,208,0,31,193,255,192,0,0,63,143,192,31,255,199,255,64,0,0,47,239,192,15,255,195,253,0,0,0,15,255,128,11,255,1,244,0,0,0,11,255,0,6,144,0,64,0,0,0,2,252,0, + // 0x6279 批 + 121,98,38,38,124,40,1,252,0,31,128,1,80,0,21,64,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,63,255,255,199,240,0,47,192,0,0,63,255,255,199,240,0,47,192,4,0,63,255,255,199,240,0,47,192,45,0,21,127,213,71,240,0,47,192,191,64,0,47,192,7,240,0,47,194,255,128,0,47,192,7,255,255,47,207,254,0,0,47,192,7,255,255,47,255,244,0,0,47,192,7,255,255,47,255,192,0,0,47,192,7,250,169,47,253,0,0,0,47,193,71,240,0,47,240,0,0,0,47,255,135,240,0,47,192,0,0,0,127,255,199,240,0,47,192,0,0,27,255,255,199,240,0,47,192,0,0,191,255,249,7,240,0,47,192,0,0,127,255,192,7,240,0,47,192,0,0,63,175,192,7,240,0,47,192,0,0,16,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,9,0,0,47,192,7,240,0,47,192,15,208,0,47,192,7,240,0,47,192,15,208,0,47,192,7,240,27,47,192,15,208,0,47,192,7,255,255,47,192,15,192,0,47,194,255,255,255,47,192,31,192,21,127,195,255,255,254,31,255,255,192,31,255,130,255,249,0,15,255,255,64,15,255,1,249,0,0,7,255,254,0,15,248,0,0,0,0,0,21,80,0, + // 0x6296 抖 + 150,98,38,38,124,40,1,252,0,11,224,0,0,0,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,3,128,0,191,0,0,0,15,240,0,15,248,0,191,0,0,0,15,240,0,15,255,0,191,0,0,0,15,240,0,1,255,208,191,0,0,0,15,240,0,0,63,244,191,0,0,63,255,255,248,0,11,240,191,0,0,63,255,255,248,0,1,192,191,0,0,63,255,255,248,0,0,0,191,0,0,21,95,245,80,0,0,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,61,0,0,191,0,0,0,15,240,0,191,208,0,191,0,0,0,15,240,0,255,248,0,191,0,0,0,15,240,0,31,255,64,191,0,0,0,15,240,20,2,255,192,191,0,0,0,15,251,248,0,127,64,191,0,0,0,15,255,248,0,14,0,191,0,0,6,255,255,252,0,0,0,191,0,0,127,255,255,144,0,0,0,191,0,0,63,255,240,0,0,0,0,191,107,192,63,239,240,0,0,0,6,255,255,192,24,15,240,0,0,107,255,255,255,208,0,15,240,2,191,255,255,255,255,144,0,15,240,7,255,255,255,255,64,0,0,15,240,3,255,255,164,191,0,0,0,15,240,3,250,64,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,0,0,0,191,0,0,31,255,224,0,0,0,0,191,0,0,15,255,208,0,0,0,0,191,0,0,11,255,64,0,0,0,0,191,0,0,1,80,0,0,0,0,0,106,0,0, + // 0x62a5 报 + 165,98,37,38,124,40,1,252,0,11,240,0,0,0,0,0,0,0,0,11,240,0,85,85,85,85,84,0,0,11,240,0,255,255,255,255,252,0,0,11,240,0,255,255,255,255,252,0,0,11,240,0,255,255,255,255,252,0,0,11,240,0,253,0,0,3,252,0,0,11,240,0,253,0,0,3,252,0,0,11,240,0,253,0,0,3,248,0,42,175,250,160,253,0,0,3,248,0,63,255,255,244,253,0,0,11,244,0,63,255,255,244,253,3,255,255,240,0,63,255,255,244,253,1,255,255,224,0,0,11,240,0,253,0,255,255,128,0,0,11,240,0,253,0,0,0,0,0,0,11,240,0,253,0,0,0,0,0,0,11,240,0,254,85,85,85,84,0,0,11,240,0,255,255,255,255,255,0,0,11,240,0,255,255,255,255,255,0,0,11,246,244,255,255,255,255,254,0,0,15,255,244,253,191,0,1,253,0,1,191,255,248,253,63,64,2,252,0,127,255,255,228,253,47,192,3,252,0,127,255,249,0,253,31,208,7,244,0,63,255,240,0,253,15,240,15,240,0,62,75,240,0,253,11,248,31,224,0,0,11,240,0,253,3,252,63,192,0,0,11,240,0,253,1,255,127,128,0,0,11,240,0,253,0,255,255,0,0,0,11,240,0,253,0,63,254,0,0,0,11,240,0,253,0,47,252,0,0,0,11,240,0,253,0,31,253,0,0,0,11,240,0,253,0,191,255,128,0,0,11,240,0,253,2,255,255,224,0,0,15,240,0,253,31,254,63,254,0,41,111,240,0,254,191,248,15,255,192,63,255,240,0,255,255,208,2,255,128,47,255,208,0,253,127,0,0,127,0,15,254,0,0,169,36,0,0,4,0, + // 0x62ac 抬 + 172,98,38,39,134,40,1,251,0,11,224,0,0,25,0,0,0,0,0,15,240,0,0,63,224,0,0,0,0,15,240,0,0,63,208,0,0,0,0,15,240,0,0,127,192,0,0,0,0,15,240,0,0,191,64,0,0,0,0,15,240,0,0,255,0,0,0,0,0,15,240,0,1,254,0,8,0,0,0,15,240,0,2,253,0,190,0,0,63,255,255,240,3,252,0,255,64,0,63,255,255,240,7,244,0,127,192,0,63,255,255,240,15,240,0,47,224,0,21,95,245,80,15,224,0,15,244,0,0,15,240,0,47,192,0,7,252,0,0,15,240,0,63,214,171,255,254,0,0,15,240,31,255,255,255,255,255,64,0,15,240,15,255,255,255,255,255,192,0,15,240,15,255,255,255,169,127,208,0,15,240,30,149,64,0,0,31,224,0,15,247,244,0,0,0,0,15,64,0,15,255,248,0,0,0,0,0,0,6,255,255,248,0,0,0,0,0,0,191,255,255,64,255,255,255,255,248,0,127,255,240,0,255,255,255,255,248,0,63,223,240,0,255,255,255,255,248,0,36,15,240,0,255,85,85,91,248,0,0,15,240,0,254,0,0,3,248,0,0,15,240,0,254,0,0,3,248,0,0,15,240,0,254,0,0,3,248,0,0,15,240,0,254,0,0,3,248,0,0,15,240,0,254,0,0,3,248,0,0,15,240,0,254,0,0,3,248,0,0,15,240,0,254,0,0,3,248,0,0,15,240,0,255,85,85,87,248,0,0,15,240,0,255,255,255,255,248,0,5,95,240,0,255,255,255,255,248,0,15,255,224,0,255,255,255,255,248,0,11,255,208,0,254,0,0,3,248,0,7,254,0,0,190,0,0,2,164,0,0,0,0,0,0,0,0,0,0,0, + // 0x62bd 抽 + 189,98,37,39,134,40,1,251,0,15,208,0,0,0,168,0,0,0,0,15,224,0,0,0,253,0,0,0,0,15,224,0,0,0,253,0,0,0,0,15,224,0,0,0,253,0,0,0,0,15,224,0,0,0,253,0,0,0,0,15,224,0,0,0,253,0,0,0,0,15,224,0,0,0,253,0,0,0,0,15,224,0,0,0,253,0,0,0,63,255,255,224,0,0,253,0,0,0,63,255,255,226,170,170,254,170,170,64,63,255,255,227,255,255,255,255,255,128,21,95,245,83,255,255,255,255,255,128,0,15,224,3,255,255,255,255,255,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,231,243,244,0,253,0,63,128,0,15,255,243,244,0,253,0,63,128,1,191,255,243,255,255,255,255,255,128,127,255,255,147,255,255,255,255,255,128,127,255,244,3,255,255,255,255,255,128,127,255,224,3,249,86,254,85,191,128,61,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,250,170,254,170,191,128,0,15,224,3,255,255,255,255,255,128,0,15,224,3,255,255,255,255,255,128,5,95,224,3,255,255,255,255,255,128,31,255,208,3,244,0,0,0,63,128,15,255,192,3,244,0,0,0,63,128,11,254,0,3,244,0,0,0,42,64,0,0,0,0,0,0,0,0,0,0, + // 0x62d4 拔 + 212,98,38,39,134,40,1,251,0,15,208,0,0,253,0,0,0,0,0,15,224,0,1,253,0,244,0,0,0,15,224,0,1,253,3,254,0,0,0,15,224,0,1,253,2,255,208,0,0,15,224,0,1,253,0,127,244,0,0,15,224,0,1,252,0,11,254,0,0,15,224,0,1,252,0,1,252,0,0,15,224,0,1,252,0,0,116,0,63,255,255,224,1,252,0,0,0,0,63,255,255,235,255,255,255,255,255,192,63,255,255,235,255,255,255,255,255,192,63,255,255,235,255,255,255,255,255,192,0,15,224,0,2,252,0,0,0,0,0,15,224,0,2,252,0,0,0,0,0,15,224,0,3,253,0,0,0,0,0,15,224,0,3,254,0,6,160,0,0,15,224,0,3,255,0,11,240,0,0,15,224,0,3,255,0,15,240,0,0,15,225,160,3,255,64,15,224,0,0,15,255,240,7,255,128,31,208,0,0,111,255,240,11,255,192,31,192,0,111,255,255,224,15,239,224,47,192,0,191,255,248,0,15,231,240,63,128,0,127,255,224,0,31,211,244,127,64,0,62,79,224,0,47,194,252,255,0,0,0,15,224,0,63,192,254,254,0,0,0,15,224,0,127,64,191,252,0,0,0,15,224,0,191,0,63,248,0,0,0,15,224,0,254,0,47,240,0,0,0,15,224,2,253,0,47,244,0,0,0,15,224,3,252,0,127,253,0,0,0,15,224,15,244,1,255,255,64,0,0,15,224,31,240,3,254,255,208,0,0,15,224,127,192,31,248,63,248,0,5,95,224,255,128,191,240,11,255,64,31,255,211,255,3,255,192,2,255,224,15,255,193,252,1,254,0,0,127,128,11,254,0,112,0,116,0,0,7,0,0,0,0,0,0,0,0,0,0,0, + // 0x62e9 择 + 233,98,38,38,124,40,1,252,0,15,208,0,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,0,15,208,3,255,255,255,255,244,0,0,15,208,3,255,255,255,255,252,0,0,15,208,3,255,255,255,255,248,0,0,15,208,1,111,213,85,95,240,0,0,15,208,0,15,240,0,47,208,0,0,15,208,0,3,248,0,191,128,0,63,255,255,240,2,254,2,255,0,0,63,255,255,240,0,191,143,252,0,0,63,255,255,240,0,47,255,240,0,0,21,111,229,80,0,15,255,192,0,0,0,15,208,0,0,31,255,208,0,0,0,15,208,0,1,255,255,253,0,0,0,15,208,0,31,255,159,255,208,0,0,15,208,7,255,253,2,255,255,64,0,15,208,47,255,208,0,47,255,224,0,15,208,95,253,1,84,2,255,128,0,15,255,231,128,2,252,0,27,0,0,31,255,224,0,2,252,0,0,0,6,255,255,224,0,2,252,0,0,0,127,255,254,65,255,255,255,255,244,0,63,255,224,1,255,255,255,255,244,0,63,239,208,1,255,255,255,255,244,0,20,15,208,0,85,86,253,85,80,0,0,15,208,0,0,2,252,0,0,0,0,15,208,0,0,2,252,0,0,0,0,15,208,0,0,2,252,0,0,0,0,15,208,31,255,255,255,255,255,192,0,15,208,31,255,255,255,255,255,192,0,15,208,31,255,255,255,255,255,192,0,15,208,5,85,86,253,85,85,64,0,15,208,0,0,2,252,0,0,0,0,31,208,0,0,2,252,0,0,0,15,255,208,0,0,2,252,0,0,0,15,255,192,0,0,2,252,0,0,0,11,255,64,0,0,2,252,0,0,0,1,80,0,0,0,1,168,0,0,0, + // 0x6309 按 + 9,99,38,39,134,40,1,251,0,15,208,0,0,1,168,0,0,0,0,15,224,0,0,2,252,0,0,0,0,15,224,0,0,2,252,0,0,0,0,15,224,0,0,2,252,0,0,0,0,15,224,0,0,2,252,0,0,0,0,15,224,1,85,87,253,85,85,64,0,15,224,11,255,255,255,255,255,192,0,15,224,11,255,255,255,255,255,192,63,255,255,235,255,255,255,255,255,192,63,255,255,235,240,0,0,0,47,192,63,255,255,235,240,15,144,0,47,192,21,95,245,91,240,31,224,0,47,192,0,15,224,11,240,47,208,0,47,192,0,15,224,11,240,63,192,0,47,192,0,15,224,0,0,63,128,0,0,0,0,15,224,0,0,127,64,0,0,0,0,15,224,5,85,255,85,85,85,64,0,15,224,15,255,255,255,255,255,208,0,15,225,175,255,255,255,255,255,208,0,15,255,255,255,255,255,255,255,208,1,191,255,240,3,248,0,31,224,0,111,255,255,224,7,244,0,47,208,0,191,255,244,0,15,240,0,63,192,0,127,255,224,0,15,224,0,63,192,0,62,79,224,0,31,192,0,127,64,0,0,15,224,0,63,208,0,255,0,0,0,15,224,0,63,253,2,254,0,0,0,15,224,0,191,255,227,252,0,0,0,15,224,0,255,255,255,248,0,0,0,15,224,0,9,31,255,240,0,0,0,15,224,0,0,1,255,253,0,0,0,15,224,0,0,7,255,255,192,0,0,15,224,0,0,111,254,255,244,0,0,15,224,0,11,255,240,63,254,0,5,95,224,22,255,255,128,7,255,192,31,255,208,63,255,248,0,0,255,192,15,255,192,31,254,64,0,0,47,0,11,254,0,15,144,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0, + // 0x6321 挡 + 33,99,36,38,86,40,1,252,0,15,208,0,0,1,168,0,0,0,15,208,0,0,1,252,0,0,0,15,208,0,0,1,252,0,0,0,15,208,1,180,1,252,0,185,0,15,208,3,248,1,252,0,255,0,15,208,2,252,1,252,0,254,0,15,208,0,253,1,252,1,252,0,15,208,0,255,1,252,3,252,63,255,255,240,127,1,252,3,244,63,255,255,240,63,129,252,7,240,63,255,255,240,63,193,252,15,224,42,175,250,144,47,193,252,15,208,0,15,208,0,30,1,252,31,192,0,15,208,0,0,1,252,1,64,0,15,208,0,0,1,252,0,0,0,15,208,2,170,170,254,170,169,0,15,208,7,255,255,255,255,254,0,15,208,7,255,255,255,255,254,0,15,230,231,255,255,255,255,254,0,15,255,240,0,0,0,0,254,1,191,255,240,0,0,0,0,254,127,255,255,224,0,0,0,0,254,191,255,248,0,0,0,0,0,254,127,255,208,1,85,85,85,85,254,62,95,208,3,255,255,255,255,254,0,15,208,3,255,255,255,255,254,0,15,208,3,255,255,255,255,254,0,15,208,0,0,0,0,0,254,0,15,208,0,0,0,0,0,254,0,15,208,0,0,0,0,0,254,0,15,208,0,0,0,0,0,254,0,15,208,10,170,170,170,170,254,0,15,208,15,255,255,255,255,254,0,31,208,15,255,255,255,255,254,31,255,208,15,255,255,255,255,254,15,255,192,0,0,0,0,0,254,15,255,64,0,0,0,0,0,254,1,80,0,0,0,0,0,0,84, + // 0x6324 挤 + 36,99,38,38,124,40,1,252,0,47,128,0,0,6,192,0,0,0,0,63,128,0,0,31,208,0,0,0,0,63,128,0,0,15,240,0,0,0,0,63,128,0,0,11,244,0,0,0,0,63,128,21,85,87,253,85,85,0,0,63,128,63,255,255,255,255,255,128,0,63,128,63,255,255,255,255,255,128,0,63,128,63,255,255,255,255,255,128,63,255,255,64,63,64,0,63,192,0,63,255,255,64,47,192,0,191,128,0,63,255,255,64,15,224,0,255,0,0,21,127,213,0,11,244,2,253,0,0,0,63,128,0,3,253,11,252,0,0,0,63,128,0,0,255,175,240,0,0,0,63,128,0,0,127,255,192,0,0,0,63,128,0,0,31,255,64,0,0,0,63,128,0,1,255,255,244,0,0,0,63,129,1,111,255,255,255,164,0,0,63,239,127,255,254,31,255,255,208,0,63,255,63,255,208,1,191,255,192,6,255,255,47,249,0,0,6,255,64,127,255,248,9,31,192,0,190,5,0,127,255,192,0,31,192,0,254,0,0,63,255,128,0,31,192,0,254,0,0,41,63,128,0,31,192,0,254,0,0,0,63,128,0,31,192,0,254,0,0,0,63,128,0,31,192,0,254,0,0,0,63,128,0,47,192,0,254,0,0,0,63,128,0,47,192,0,254,0,0,0,63,128,0,63,192,0,254,0,0,0,63,128,0,127,128,0,254,0,0,0,63,128,0,255,0,0,254,0,0,0,63,128,3,255,0,0,254,0,0,0,63,128,15,252,0,0,254,0,0,47,255,128,127,244,0,0,254,0,0,31,255,65,255,208,0,0,254,0,0,15,254,0,126,0,0,0,254,0,0,10,144,0,0,0,0,0,105,0,0, + // 0x635f 损 + 95,99,38,39,134,40,1,251,0,31,192,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,255,255,255,255,224,0,0,47,192,0,255,255,255,255,224,0,0,47,192,0,255,255,255,255,224,0,0,47,192,0,255,0,0,15,224,0,0,47,192,0,255,0,0,15,224,0,0,47,192,0,255,0,0,15,224,0,63,255,255,224,255,0,0,15,224,0,63,255,255,224,255,255,255,255,224,0,63,255,255,224,255,255,255,255,224,0,21,111,229,64,255,255,255,255,224,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,3,255,255,255,255,252,0,0,47,192,3,255,255,255,255,252,0,0,47,192,3,255,255,255,255,252,0,0,47,192,67,248,0,0,3,252,0,0,47,219,227,248,0,0,3,252,0,0,47,255,227,248,1,84,3,252,0,6,255,255,243,248,3,252,3,252,0,191,255,254,67,248,3,252,3,252,0,191,255,208,3,248,3,252,3,252,0,127,255,192,3,248,3,252,3,252,0,36,47,192,3,248,3,248,3,252,0,0,47,192,3,248,3,248,3,252,0,0,47,192,3,248,7,244,3,252,0,0,47,192,3,248,15,240,3,252,0,0,47,192,2,164,47,240,65,84,0,0,47,192,0,0,191,193,244,0,0,0,47,192,0,2,255,71,254,0,0,0,47,192,0,47,254,2,255,208,0,0,47,192,6,255,244,0,127,252,0,47,255,192,191,255,192,0,11,255,64,31,255,192,191,253,0,0,1,255,208,15,255,0,63,144,0,0,0,47,128,10,164,0,20,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0, + // 0x6362 换 + 98,99,38,38,124,40,1,252,0,26,128,0,0,164,0,0,0,0,0,47,192,0,1,255,0,0,0,0,0,47,192,0,3,253,0,0,0,0,0,47,192,0,7,252,0,0,0,0,0,47,192,0,15,255,255,255,64,0,0,47,192,0,47,255,255,255,208,0,0,47,192,0,127,255,255,255,192,0,0,47,192,0,255,0,0,255,0,0,63,255,255,67,253,0,3,253,0,0,63,255,255,79,244,0,15,244,0,0,63,255,255,191,255,255,255,255,244,0,21,127,213,127,255,255,255,255,244,0,0,47,192,15,255,255,255,255,244,0,0,47,192,7,248,3,248,3,244,0,0,47,192,3,248,3,248,3,244,0,0,47,192,3,248,3,248,3,244,0,0,47,192,3,248,3,248,3,244,0,0,47,192,3,248,3,248,3,244,0,0,47,199,131,248,3,248,3,244,0,0,47,255,131,248,3,248,3,244,0,1,191,255,195,248,3,248,3,244,0,111,255,255,195,248,3,248,3,244,0,127,255,244,3,252,7,248,7,248,0,63,255,192,191,255,255,255,255,255,192,62,111,192,191,255,255,255,255,255,192,0,47,192,191,255,255,255,255,255,192,0,47,192,0,0,47,252,0,0,0,0,47,192,0,0,127,255,0,0,0,0,47,192,0,0,255,127,128,0,0,0,47,192,0,3,253,31,224,0,0,0,47,192,0,15,252,15,248,0,0,0,47,192,0,127,240,3,254,0,0,0,47,192,2,255,192,0,255,208,0,0,63,192,31,254,0,0,63,249,0,31,255,193,255,244,0,0,11,255,208,15,255,135,255,192,0,0,1,255,192,15,254,1,253,0,0,0,0,47,0,6,144,0,80,0,0,0,0,1,0, + // 0x6389 掉 + 137,99,38,38,124,40,1,252,0,26,128,0,0,2,160,0,0,0,0,47,192,0,0,3,244,0,0,0,0,47,192,0,0,3,244,0,0,0,0,47,192,0,0,3,244,0,0,0,0,47,192,0,0,3,255,255,255,128,0,47,192,0,0,3,255,255,255,128,0,47,192,0,0,3,255,255,255,128,0,47,192,0,0,3,244,0,0,0,63,255,255,192,0,3,244,0,0,0,63,255,255,192,0,3,244,0,0,0,63,255,255,203,255,255,255,255,252,0,21,127,229,75,255,255,255,255,252,0,0,47,192,11,255,255,255,255,252,0,0,47,192,11,240,0,0,3,252,0,0,47,192,11,240,0,0,3,252,0,0,47,192,11,240,0,0,3,252,0,0,47,192,11,255,255,255,255,252,0,0,47,192,11,255,255,255,255,252,0,0,47,219,203,255,255,255,255,252,0,0,47,255,203,240,0,0,3,252,0,1,255,255,219,240,0,0,3,252,0,127,255,255,139,240,0,0,3,252,0,63,255,224,11,255,255,255,255,252,0,63,255,192,11,255,255,255,255,252,0,41,47,192,11,255,255,255,255,252,0,0,47,192,0,0,3,244,0,0,0,0,47,192,0,0,3,244,0,0,0,0,47,192,0,0,3,244,0,0,0,0,47,192,255,255,255,255,255,255,208,0,47,192,255,255,255,255,255,255,208,0,47,192,255,255,255,255,255,255,208,0,47,192,85,85,87,249,85,85,64,0,47,192,0,0,3,244,0,0,0,0,47,192,0,0,3,244,0,0,0,63,255,192,0,0,3,244,0,0,0,47,255,128,0,0,3,244,0,0,0,31,254,0,0,0,3,244,0,0,0,5,64,0,0,0,2,164,0,0,0, + // 0x63a2 探 + 162,99,38,38,124,40,1,252,0,47,128,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,15,255,255,255,255,255,128,0,47,192,15,255,255,255,255,255,128,0,47,192,15,255,255,255,255,255,128,0,47,192,15,192,0,0,0,47,128,0,47,192,15,192,84,0,0,47,128,0,47,192,15,192,253,11,224,47,128,63,255,255,207,192,253,11,224,47,128,63,255,255,207,193,252,11,224,47,128,63,255,255,192,2,252,11,224,0,0,21,127,213,64,3,248,11,224,9,0,0,47,192,0,11,244,11,224,11,208,0,47,192,0,47,240,11,240,15,192,0,47,192,2,255,192,11,255,255,192,0,47,192,47,255,0,3,255,255,128,0,47,192,15,248,0,1,255,254,0,0,47,198,135,64,3,252,0,0,0,0,47,255,128,0,3,252,0,0,0,0,127,255,192,0,3,252,0,0,0,47,255,255,128,0,3,252,0,0,0,191,255,244,47,255,255,255,255,255,192,127,255,192,47,255,255,255,255,255,192,62,111,192,47,255,255,255,255,255,192,0,47,192,5,85,191,255,213,85,64,0,47,192,0,0,255,255,240,0,0,0,47,192,0,2,255,255,244,0,0,0,47,192,0,7,251,255,253,0,0,0,47,192,0,31,243,252,255,0,0,0,47,192,0,63,211,252,127,192,0,0,47,192,1,255,131,252,47,244,0,0,47,192,11,254,3,252,15,253,0,0,47,192,63,252,3,252,3,255,128,0,47,194,255,224,3,252,0,255,224,21,127,192,255,128,3,252,0,63,192,31,255,128,124,0,3,252,0,11,0,15,255,0,16,0,3,252,0,0,0,15,248,0,0,0,3,252,0,0,0, + // 0x63a5 接 + 165,99,37,38,124,40,1,252,0,15,208,0,0,3,252,0,0,0,0,15,224,0,0,3,252,0,0,0,0,15,224,0,0,3,252,0,0,0,0,15,224,0,0,3,252,0,0,0,0,15,224,15,255,255,255,255,255,0,0,15,224,15,255,255,255,255,255,0,0,15,224,15,255,255,255,255,255,0,0,15,224,0,11,208,0,63,128,0,63,255,255,192,15,208,0,127,64,0,63,255,255,192,15,224,0,191,0,0,63,255,255,192,11,240,0,254,0,0,21,95,245,64,7,240,0,253,0,0,0,15,224,0,3,244,1,252,0,0,0,15,224,0,7,248,3,248,0,0,0,15,224,127,255,255,255,255,255,192,0,15,224,127,255,255,255,255,255,192,0,15,224,127,255,255,255,255,255,192,0,15,224,0,0,63,192,0,0,0,0,15,226,192,0,127,128,0,0,0,0,15,255,192,0,255,0,0,0,0,0,111,255,208,1,255,0,0,0,0,27,255,255,255,255,255,255,255,255,192,191,255,249,127,255,255,255,255,255,192,127,255,224,63,255,255,255,255,255,192,62,79,224,0,15,240,0,127,64,0,16,15,224,0,47,208,0,191,0,0,0,15,224,0,63,192,0,254,0,0,0,15,224,0,191,64,2,253,0,0,0,15,224,0,255,249,7,252,0,0,0,15,224,2,255,255,239,240,0,0,0,15,224,1,186,255,255,224,0,0,0,15,224,0,0,27,255,244,0,0,0,15,224,0,0,47,255,255,128,0,0,15,224,0,27,255,251,255,244,0,31,255,208,175,255,255,128,127,255,0,15,255,192,255,255,244,0,7,255,0,11,255,64,127,249,0,0,0,188,0,6,148,0,36,0,0,0,0,0,0, + // 0x63a7 控 + 167,99,38,38,124,40,1,252,0,31,128,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,63,255,255,255,255,255,192,0,47,192,63,255,255,255,255,255,192,0,47,192,63,255,255,255,255,255,192,0,47,192,63,65,253,11,240,31,192,63,255,255,191,64,252,11,240,31,192,63,255,255,191,65,252,11,240,31,192,63,255,255,191,65,252,11,240,31,192,21,127,213,64,2,252,11,240,0,0,0,47,192,0,3,248,11,240,4,0,0,47,192,0,7,244,11,240,15,64,0,47,192,0,15,240,11,240,15,192,0,47,192,0,63,208,11,240,15,192,0,47,192,1,255,192,11,255,255,128,0,47,199,175,255,0,3,255,255,64,0,47,255,143,248,0,1,255,253,0,0,127,255,203,128,0,0,0,0,0,27,255,255,64,0,0,0,0,0,0,191,255,224,0,0,0,0,0,0,0,127,255,192,7,255,255,255,255,253,0,62,111,192,7,255,255,255,255,253,0,16,47,192,7,255,255,255,255,253,0,0,47,192,1,85,87,253,85,84,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,255,255,255,255,255,255,208,21,127,192,255,255,255,255,255,255,208,31,255,128,255,255,255,255,255,255,208,15,255,0,85,85,85,85,85,85,64,15,248,0,0,0,0,0,0,0,0, + // 0x63d0 提 + 208,99,38,38,124,40,1,252,0,47,128,0,0,0,0,0,0,0,0,47,128,1,170,170,170,170,164,0,0,47,128,2,255,255,255,255,244,0,0,47,128,2,255,255,255,255,244,0,0,47,128,2,252,0,0,3,244,0,0,47,128,2,252,0,0,3,244,0,0,47,128,2,252,0,0,3,244,0,0,47,128,2,255,255,255,255,244,0,127,255,255,194,255,255,255,255,244,0,127,255,255,194,254,170,170,171,244,0,127,255,255,194,252,0,0,3,244,0,21,127,213,66,252,0,0,3,244,0,0,47,128,2,254,170,170,175,244,0,0,47,128,2,255,255,255,255,244,0,0,47,128,2,255,255,255,255,244,0,0,47,128,0,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,0,47,134,95,255,255,255,255,255,128,0,47,255,223,255,255,255,255,255,128,1,191,255,223,255,255,255,255,255,128,111,255,255,128,0,3,248,0,0,0,191,255,224,0,80,3,248,0,0,0,127,255,128,0,253,3,248,0,0,0,57,47,128,1,252,3,248,0,0,0,0,47,128,1,252,3,255,255,248,0,0,47,128,2,248,3,255,255,248,0,0,47,128,3,252,3,255,255,248,0,0,47,128,7,253,3,248,0,0,0,0,47,128,11,255,3,248,0,0,0,0,47,128,15,255,67,248,0,0,0,0,47,128,47,223,211,248,0,0,0,0,47,128,63,139,251,248,0,0,0,0,63,128,255,2,255,248,0,0,0,47,255,131,254,0,191,255,255,255,224,31,255,71,252,0,31,255,255,255,192,15,253,1,240,0,1,191,255,255,192,5,64,0,64,0,0,0,0,0,0, + // 0x63d2 插 + 210,99,37,38,124,40,1,252,0,31,128,0,0,0,0,0,0,0,0,47,192,0,0,0,0,91,240,0,0,47,192,0,5,106,255,255,252,0,0,47,192,15,255,255,255,255,253,0,0,47,192,11,255,255,255,233,64,0,0,47,192,7,254,171,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,63,255,255,192,0,3,248,0,0,0,63,255,255,213,85,87,253,85,85,64,63,255,255,255,255,255,255,255,255,192,21,127,213,63,255,255,255,255,255,192,0,47,192,63,255,255,255,255,255,192,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,67,248,0,0,0,0,47,192,0,7,243,248,0,0,0,0,47,192,15,191,255,248,255,255,0,0,47,223,143,255,251,248,255,255,0,0,47,255,143,254,3,248,255,255,0,6,255,255,207,208,3,248,0,127,0,191,255,253,15,208,3,248,0,127,0,127,255,192,15,208,3,248,0,127,0,63,175,192,15,208,3,248,0,127,0,16,47,192,15,255,227,248,191,255,0,0,47,192,15,255,227,248,191,255,0,0,47,192,15,255,227,248,191,255,0,0,47,192,15,208,3,248,0,127,0,0,47,192,15,208,3,248,0,127,0,0,47,192,15,208,3,248,0,127,0,0,47,192,15,208,3,248,0,127,0,0,47,192,15,208,3,248,0,127,0,0,47,192,15,208,3,248,0,127,0,0,47,192,15,255,255,255,255,255,0,21,127,192,15,255,255,255,255,255,0,31,255,128,15,255,255,255,255,255,0,15,255,0,15,208,0,0,0,127,0,15,248,0,15,208,0,0,0,127,0, + // 0x6536 收 + 54,101,38,38,124,40,1,252,0,0,2,164,0,41,0,0,0,0,0,0,3,248,0,63,192,0,0,0,0,0,3,248,0,63,192,0,0,0,0,0,3,248,0,127,128,0,0,0,0,0,3,248,0,191,0,0,0,0,3,248,3,248,0,255,0,0,0,0,3,248,3,248,1,254,0,0,0,0,3,248,3,248,2,254,170,170,170,144,3,248,3,248,3,255,255,255,255,208,3,248,3,248,7,255,255,255,255,208,3,248,3,248,15,255,255,255,255,208,3,248,3,248,31,244,0,3,252,0,3,248,3,248,63,252,0,3,252,0,3,248,3,248,127,252,0,3,248,0,3,248,3,248,255,253,0,7,244,0,3,248,3,251,255,254,0,15,240,0,3,248,3,255,253,255,0,15,240,0,3,248,3,255,248,127,0,31,208,0,3,248,3,249,240,63,128,63,192,0,3,248,3,248,144,63,192,63,192,0,3,248,3,248,0,31,208,191,64,0,3,248,3,248,0,15,240,255,0,0,3,248,3,248,0,11,246,254,0,0,3,248,27,248,0,3,255,252,0,0,3,254,255,248,0,3,255,248,0,0,7,255,255,248,0,1,255,240,0,0,127,255,255,248,0,0,255,208,0,0,63,255,211,248,0,0,255,208,0,0,63,228,3,248,0,3,255,240,0,0,25,0,3,248,0,15,255,252,0,0,0,0,3,248,0,63,251,255,0,0,0,0,3,248,1,255,209,255,192,0,0,0,3,248,11,255,64,127,244,0,0,0,3,248,191,253,0,47,254,0,0,0,3,251,255,244,0,11,255,224,0,0,3,250,255,128,0,1,255,192,0,0,3,248,253,0,0,0,63,64,0,0,3,244,96,0,0,0,6,0, + // 0x653e 放 + 62,101,38,38,124,40,1,252,0,0,253,0,0,3,144,0,0,0,0,1,253,0,0,7,248,0,0,0,0,1,253,0,0,11,244,0,0,0,0,1,253,0,0,15,240,0,0,0,0,1,253,0,0,15,240,0,0,0,0,1,253,0,0,15,224,0,0,0,21,86,254,85,80,31,208,0,0,0,63,255,255,255,244,47,229,85,85,64,63,255,255,255,244,63,255,255,255,208,63,255,255,255,244,127,255,255,255,208,0,63,128,0,0,191,255,255,255,208,0,63,128,0,0,255,0,7,244,0,0,63,128,0,1,255,64,7,240,0,0,63,128,0,3,255,64,11,240,0,0,63,128,0,7,255,128,15,240,0,0,63,255,255,207,255,192,15,224,0,0,63,255,255,223,255,192,31,208,0,0,63,255,255,255,239,208,47,192,0,0,63,213,127,255,207,240,63,192,0,0,63,128,63,203,71,240,63,128,0,0,63,128,63,129,3,248,127,64,0,0,63,128,63,128,3,252,255,0,0,0,63,128,63,128,2,254,254,0,0,0,63,64,63,128,0,255,252,0,0,0,127,64,63,128,0,191,248,0,0,0,127,0,63,128,0,63,240,0,0,0,191,0,63,128,0,63,240,0,0,0,255,0,63,128,0,127,240,0,0,0,254,0,63,64,0,255,252,0,0,2,253,0,63,64,3,255,254,0,0,3,252,0,63,64,15,254,255,128,0,11,248,0,127,0,127,240,191,224,0,15,240,0,191,2,255,208,47,252,0,63,224,0,255,47,255,0,15,255,128,191,192,255,255,191,252,0,3,255,208,127,64,255,253,63,224,0,0,191,64,13,0,191,244,47,0,0,0,30,0,0,0,21,0,4,0,0,0,0,0, + // 0x6570 数 + 112,101,38,38,124,40,1,252,0,0,63,0,0,0,228,0,0,0,1,192,63,64,228,1,253,0,0,0,11,240,63,66,252,2,252,0,0,0,3,244,63,67,244,3,252,0,0,0,1,252,63,75,224,3,252,0,0,0,0,253,63,95,192,3,248,0,0,0,0,164,63,70,0,7,244,0,0,0,63,255,255,255,255,11,250,170,170,128,63,255,255,255,255,15,255,255,255,208,63,255,255,255,255,31,255,255,255,208,0,2,255,208,0,47,255,255,255,208,0,7,255,248,0,63,208,3,252,0,0,31,255,255,64,127,208,3,248,0,0,127,255,191,224,255,224,7,248,0,2,255,127,95,252,255,240,7,244,0,31,252,63,67,250,255,240,11,240,0,127,240,63,64,247,255,244,15,240,0,63,128,63,64,15,251,248,15,240,0,13,0,191,64,31,243,252,31,224,0,0,2,252,0,11,226,252,47,208,0,0,3,252,0,2,192,253,63,192,0,0,7,244,0,0,0,255,127,128,0,127,255,255,255,255,64,191,191,64,0,127,255,255,255,255,64,127,255,0,0,127,255,255,255,255,64,63,254,0,0,0,127,64,47,192,0,47,252,0,0,0,255,0,63,128,0,15,248,0,0,1,253,0,127,64,0,31,248,0,0,3,255,128,255,0,0,63,252,0,0,11,255,250,253,0,0,255,255,0,0,11,255,255,252,0,3,255,255,128,0,0,65,255,252,0,15,253,127,224,0,0,0,255,255,128,127,248,47,248,0,0,31,255,255,247,255,224,11,255,0,27,255,252,63,255,255,64,3,255,208,63,255,208,7,255,252,0,0,191,192,15,249,0,0,139,224,0,0,47,0,10,64,0,0,3,0,0,0,5,0, + // 0x6572 敲 + 114,101,37,38,124,40,2,252,0,1,252,0,0,0,253,0,0,0,0,1,252,0,0,0,254,0,0,0,0,1,252,0,0,0,254,0,0,0,0,1,252,0,0,0,254,0,0,0,0,1,252,0,0,0,254,0,0,0,255,255,255,255,252,0,254,85,85,0,255,255,255,255,252,0,255,255,255,0,255,255,255,255,252,0,255,255,255,0,0,0,0,0,0,0,255,255,255,0,1,170,170,169,0,0,254,0,0,0,3,255,255,255,0,0,254,0,0,0,3,255,255,255,0,0,254,0,0,0,3,244,0,191,0,0,254,0,0,0,3,244,0,191,0,0,254,0,0,0,3,244,0,191,15,255,255,255,248,0,3,250,170,255,15,255,255,255,252,0,3,255,255,255,15,255,255,255,248,0,3,255,255,255,5,89,85,91,244,0,0,0,0,0,0,253,0,11,240,0,0,0,0,0,0,254,0,15,240,0,63,255,255,255,240,127,0,31,224,0,63,255,255,255,240,63,64,47,208,0,63,170,170,175,240,63,128,63,192,0,63,0,0,3,240,31,192,127,128,0,63,0,0,3,240,15,224,255,0,0,63,15,255,195,240,11,241,255,0,0,63,15,255,195,240,3,255,253,0,0,63,15,3,195,240,2,255,252,0,0,63,15,3,195,240,0,255,240,0,0,63,15,3,195,240,0,191,224,0,0,63,15,3,195,240,1,255,240,0,0,63,15,255,195,240,7,255,253,0,0,63,15,255,195,240,31,255,255,64,0,63,15,0,3,241,255,240,255,244,0,63,10,0,7,255,255,192,63,255,64,63,0,2,255,251,254,0,11,255,0,63,0,0,255,211,224,0,0,252,0,63,0,0,169,1,64,0,0,20,0, + // 0x6574 整 + 116,101,36,37,77,40,2,253,0,0,252,0,0,2,64,0,0,0,0,252,0,0,3,244,0,0,106,170,254,170,164,7,240,0,0,191,255,255,255,248,15,240,0,0,191,255,255,255,248,31,224,0,0,0,0,252,0,0,63,255,255,255,0,0,252,0,0,191,255,255,255,47,255,255,255,240,255,255,255,255,47,255,255,255,243,255,0,31,192,47,149,253,87,255,255,192,63,128,47,64,252,3,255,255,208,127,0,47,64,252,3,243,195,244,254,0,47,255,255,255,240,2,255,252,0,47,255,255,255,240,0,255,244,0,5,95,255,149,80,0,127,224,0,0,47,255,240,0,0,255,244,0,0,255,255,254,0,7,255,254,0,7,253,253,191,224,47,254,255,208,47,240,252,31,231,255,224,127,253,255,192,252,3,223,255,64,31,255,127,0,252,0,11,248,0,2,253,40,0,252,0,3,128,0,0,44,0,0,0,0,0,0,0,0,0,7,255,255,255,255,255,255,255,208,7,255,255,255,255,255,255,255,208,7,255,255,255,255,255,255,255,208,0,0,0,0,254,0,0,0,0,0,6,144,0,254,0,0,0,0,0,11,240,0,255,255,255,248,0,0,11,240,0,255,255,255,248,0,0,11,240,0,255,255,255,248,0,0,11,240,0,254,0,0,0,0,0,11,240,0,254,0,0,0,0,0,15,240,0,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x6599 料 + 153,101,38,38,124,40,1,252,0,2,164,0,0,0,0,42,64,0,0,3,248,0,0,0,0,63,128,0,0,3,248,0,0,0,0,63,128,0,47,3,248,31,192,52,0,63,128,0,47,3,248,31,128,254,0,63,128,0,31,131,248,47,65,255,192,63,128,0,15,195,248,63,0,127,240,63,128,0,15,195,248,63,0,15,252,63,128,0,11,211,248,125,0,2,252,63,128,0,7,227,248,188,0,0,184,63,128,0,7,227,248,252,0,0,32,63,128,0,3,243,249,244,0,0,0,63,128,0,3,67,248,96,0,0,0,63,128,0,0,3,248,0,2,0,0,63,128,0,63,255,255,255,203,208,0,63,128,0,63,255,255,255,223,252,0,63,128,0,63,255,255,255,203,255,64,63,128,0,21,111,253,85,64,255,224,63,128,0,0,31,252,0,0,47,208,63,128,0,0,47,255,0,0,7,192,63,128,0,0,63,255,128,0,1,0,63,128,0,0,191,255,208,0,0,0,63,128,0,0,255,255,244,0,0,0,63,134,128,1,251,250,252,0,0,0,63,255,192,3,243,248,255,0,1,111,255,255,208,7,243,248,127,70,255,255,255,255,208,15,211,248,62,63,255,255,255,208,0,47,195,248,28,63,255,250,127,128,0,127,131,248,0,63,229,0,63,128,0,191,3,248,0,16,0,0,63,128,0,62,3,248,0,0,0,0,63,128,0,44,3,248,0,0,0,0,63,128,0,4,3,248,0,0,0,0,63,128,0,0,3,248,0,0,0,0,63,128,0,0,3,248,0,0,0,0,63,128,0,0,3,248,0,0,0,0,63,128,0,0,3,248,0,0,0,0,63,128,0,0,2,244,0,0,0,0,47,128,0, + // 0x659c 斜 + 156,101,38,38,124,40,1,252,0,0,127,64,0,0,0,11,224,0,0,0,255,224,0,0,0,15,224,0,0,1,255,248,0,0,0,15,224,0,0,3,255,254,0,2,64,15,224,0,0,11,250,255,128,15,208,15,224,0,0,31,240,191,224,31,248,15,224,0,0,63,208,47,248,7,254,15,224,0,0,191,128,15,253,0,255,143,224,0,2,255,0,3,255,0,63,223,224,0,7,252,0,0,252,0,15,207,224,0,31,244,0,0,112,0,7,15,224,0,127,255,255,255,224,0,0,15,224,0,255,255,255,255,224,0,0,15,224,0,62,255,255,255,224,8,0,15,224,0,8,21,127,213,64,127,64,15,224,0,0,0,63,128,0,191,224,15,224,0,0,0,63,128,0,31,248,15,224,0,0,0,63,128,0,7,255,15,224,0,63,255,255,255,254,0,255,143,224,0,63,255,255,255,254,0,62,15,224,0,63,255,255,255,254,0,8,15,224,0,21,85,127,213,84,0,0,15,224,0,0,0,63,128,0,0,0,15,251,192,0,64,63,128,128,0,0,95,255,208,2,252,63,139,224,0,111,255,255,224,3,248,63,135,240,111,255,255,255,144,3,244,63,131,244,255,255,255,240,0,7,240,63,130,252,255,255,159,224,0,11,240,63,128,252,254,64,15,224,0,15,208,63,128,254,0,0,15,224,0,47,192,63,128,191,0,0,15,224,0,63,128,63,128,63,0,0,15,224,0,127,0,63,128,52,0,0,15,224,0,30,0,63,128,0,0,0,15,224,0,0,21,127,128,0,0,0,15,224,0,0,63,255,128,0,0,0,15,224,0,0,31,255,0,0,0,0,15,224,0,0,15,248,0,0,0,0,15,224,0, + // 0x65ad 断 + 173,101,36,38,86,40,3,252,0,0,5,64,0,0,0,0,0,84,0,31,128,0,0,0,11,192,253,0,31,128,0,0,1,191,240,253,44,31,131,144,0,191,255,248,253,61,31,131,242,255,255,255,128,253,62,31,135,226,255,255,224,0,253,47,31,139,194,255,148,0,0,253,31,95,143,130,252,0,0,0,253,15,95,159,66,252,0,0,0,253,15,159,175,2,252,0,0,0,253,9,31,137,2,252,0,0,0,253,0,31,128,2,252,0,0,0,253,191,255,255,242,252,0,0,0,253,191,255,255,242,253,85,85,85,253,191,255,255,242,255,255,255,254,253,0,63,128,2,255,255,255,254,253,0,127,192,2,255,255,255,254,253,0,255,240,2,252,0,254,0,253,1,255,252,2,252,0,254,0,253,3,255,255,2,252,0,254,0,253,11,255,175,194,252,0,254,0,253,31,223,143,226,252,0,254,0,253,63,95,131,195,252,0,254,0,254,255,31,129,67,248,0,254,0,254,252,31,128,3,244,0,254,0,253,180,31,128,3,244,0,254,0,253,96,31,128,7,240,0,254,0,253,0,31,128,11,240,0,254,0,253,0,31,128,15,240,0,254,0,253,0,0,0,31,208,0,254,0,255,255,255,255,255,192,0,254,0,255,255,255,255,255,192,0,254,0,255,255,255,255,255,64,0,254,0,254,0,0,2,255,0,0,254,0,253,0,0,3,253,0,0,254,0,253,0,0,7,252,0,0,254,0,84,0,0,0,240,0,0,254,0,0,0,0,0,80,0,0,169,0, + // 0x65b0 新 + 176,101,38,38,124,40,1,252,0,0,106,0,0,0,0,0,16,0,0,0,127,0,0,0,0,1,252,0,0,0,127,0,0,0,0,127,255,64,0,0,127,0,0,36,111,255,254,64,31,255,255,255,252,63,255,255,144,0,31,255,255,255,252,63,255,228,0,0,31,255,255,255,252,63,208,0,0,0,0,104,0,30,64,63,64,0,0,0,0,252,0,47,192,63,64,0,0,0,0,253,0,63,64,63,64,0,0,0,0,190,0,63,0,63,64,0,0,0,0,127,0,191,0,63,64,0,0,0,0,63,0,253,0,63,64,0,0,0,0,62,0,108,0,63,64,0,0,0,63,255,255,255,254,63,255,255,255,208,63,255,255,255,254,63,255,255,255,208,63,255,255,255,254,63,255,255,255,208,0,0,127,0,0,63,149,111,229,64,0,0,127,0,0,63,64,31,192,0,0,0,127,0,0,63,64,31,192,0,0,0,191,0,0,127,64,31,192,0,63,255,255,255,252,127,0,31,192,0,63,255,255,255,252,127,0,31,192,0,63,255,255,255,252,191,0,31,192,0,0,2,255,0,0,191,0,31,192,0,0,3,255,208,0,255,0,31,192,0,0,15,255,244,0,254,0,31,192,0,0,47,255,254,0,253,0,31,192,0,0,191,255,191,193,252,0,31,192,0,1,254,127,47,243,252,0,31,192,0,7,252,127,11,211,248,0,31,192,0,47,240,127,2,139,240,0,31,192,0,191,208,127,0,31,240,0,31,192,0,63,64,127,0,63,208,0,31,192,0,13,0,127,0,191,192,0,31,192,0,0,0,127,0,255,0,0,31,192,0,0,0,127,0,61,0,0,31,192,0,0,0,127,0,24,0,0,26,128,0, + // 0x65b9 方 + 185,101,36,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,106,170,170,255,170,170,170,170,169,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,2,255,255,255,255,252,0,0,0,2,255,255,255,255,252,0,0,0,3,255,255,255,255,252,0,0,0,3,254,170,170,171,252,0,0,0,7,248,0,0,3,252,0,0,0,11,244,0,0,3,252,0,0,0,15,240,0,0,3,248,0,0,0,31,240,0,0,3,248,0,0,0,63,224,0,0,3,248,0,0,0,127,192,0,0,7,244,0,0,0,255,128,0,0,7,244,0,0,2,255,0,0,0,11,240,0,0,7,254,0,0,0,15,240,0,0,31,252,0,0,0,15,240,0,0,127,240,0,0,0,15,224,0,2,255,208,0,0,0,47,208,0,31,255,64,0,0,0,127,192,0,255,253,0,0,127,255,255,192,0,191,240,0,0,63,255,255,64,0,47,128,0,0,47,255,253,0,0,8,0,0,0,5,85,64,0,0, + // 0x65e0 无 + 224,101,37,36,104,40,2,251,7,255,255,255,255,255,255,255,224,0,7,255,255,255,255,255,255,255,224,0,7,255,255,255,255,255,255,255,224,0,2,170,170,171,254,170,170,170,144,0,0,0,0,2,252,0,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,0,3,252,0,0,0,0,0,106,170,170,171,254,170,170,170,169,0,255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,255,0,0,0,0,7,244,0,0,0,0,0,0,0,0,11,245,80,0,0,0,0,0,0,0,15,251,240,0,0,0,0,0,0,0,15,235,240,0,0,0,0,0,0,0,47,219,240,0,0,0,0,0,0,0,63,203,240,0,0,0,0,0,0,0,127,203,240,0,0,0,0,0,0,0,255,75,240,0,0,0,0,0,0,1,255,11,240,0,0,0,0,0,0,3,254,11,240,0,0,0,0,0,0,15,252,11,240,0,0,56,0,0,0,63,244,11,240,0,0,63,64,0,0,255,224,11,240,0,0,63,64,0,7,255,128,11,240,0,0,127,64,0,47,255,0,11,244,0,0,191,0,2,255,248,0,11,248,0,0,255,0,127,255,208,0,7,255,255,255,254,0,255,254,0,0,3,255,255,255,253,0,63,224,0,0,1,255,255,255,248,0,30,0,0,0,0,26,170,170,128,0,0,0,0,0,0,0,0,0,0,0, + // 0x65f6 时 + 246,101,36,38,86,40,3,252,0,0,0,0,0,0,1,168,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,85,85,85,64,0,0,3,252,0,255,255,255,192,0,0,3,252,0,255,255,255,192,0,0,3,252,0,255,255,255,192,0,0,3,252,0,254,0,31,192,0,0,3,252,0,254,0,31,195,255,255,255,255,253,254,0,31,195,255,255,255,255,253,254,0,31,195,255,255,255,255,253,254,0,31,194,170,170,171,254,169,254,0,31,192,0,0,3,252,0,254,0,31,192,0,0,3,252,0,254,0,31,192,0,0,3,252,0,255,255,255,192,44,0,3,252,0,255,255,255,192,255,0,3,252,0,255,255,255,192,191,128,3,252,0,255,85,111,192,63,208,3,252,0,254,0,31,192,31,240,3,252,0,254,0,31,192,11,248,3,252,0,254,0,31,192,3,252,3,252,0,254,0,31,192,1,255,3,252,0,254,0,31,192,0,255,67,252,0,254,0,31,192,0,127,67,252,0,254,0,31,192,0,56,3,252,0,254,0,31,192,0,0,3,252,0,255,255,255,192,0,0,3,252,0,255,255,255,192,0,0,3,252,0,255,255,255,192,0,0,3,252,0,255,85,85,64,0,0,3,252,0,254,0,0,0,0,0,3,252,0,254,0,0,0,0,0,3,252,0,84,0,0,0,1,170,175,252,0,0,0,0,0,0,255,255,248,0,0,0,0,0,0,255,255,240,0,0,0,0,0,0,191,254,64,0,0,0,0,0,0,0,0,0,0, + // 0x660e 明 + 14,102,34,36,68,40,3,252,85,85,85,64,63,255,255,255,240,255,255,255,224,63,255,255,255,240,255,255,255,224,63,255,255,255,240,255,255,255,224,63,149,85,91,240,254,0,15,224,63,64,0,11,240,254,0,15,224,63,64,0,11,240,254,0,15,224,63,64,0,11,240,254,0,15,224,63,64,0,11,240,254,0,15,224,63,64,0,11,240,254,0,15,224,63,149,85,91,240,254,0,15,224,63,255,255,255,240,255,255,255,224,63,255,255,255,240,255,255,255,224,63,255,255,255,240,255,255,255,224,63,64,0,11,240,255,85,95,224,63,64,0,11,240,254,0,15,224,63,64,0,11,240,254,0,15,224,127,64,0,11,240,254,0,15,224,127,64,0,11,240,254,0,15,224,127,64,0,11,240,254,0,15,224,127,149,85,91,240,254,0,15,224,191,255,255,255,240,255,85,95,224,191,255,255,255,240,255,255,255,224,255,255,255,255,240,255,255,255,224,254,0,0,11,240,255,255,255,225,253,0,0,11,240,254,0,0,3,252,0,0,11,240,254,0,0,3,252,0,0,11,240,254,0,0,11,244,0,0,11,240,169,0,0,15,240,0,0,11,240,0,0,0,63,224,0,0,11,240,0,0,0,191,192,0,0,11,240,0,0,1,255,64,0,0,11,240,0,0,11,254,0,0,255,255,240,0,0,15,252,0,0,127,255,224,0,0,3,224,0,0,63,255,128,0,0,0,128,0,0,26,148,0, + // 0x662f 是 + 47,102,36,36,68,40,2,252,0,191,255,255,255,255,255,253,0,0,191,255,255,255,255,255,253,0,0,191,255,255,255,255,255,253,0,0,191,0,0,0,0,1,253,0,0,191,0,0,0,0,1,253,0,0,191,170,170,170,170,170,253,0,0,191,255,255,255,255,255,253,0,0,191,255,255,255,255,255,253,0,0,191,0,0,0,0,1,253,0,0,191,0,0,0,0,1,253,0,0,191,0,0,0,0,1,253,0,0,191,255,255,255,255,255,253,0,0,191,255,255,255,255,255,253,0,0,127,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,21,85,85,85,191,85,85,85,84,0,2,80,0,127,0,0,0,0,0,7,248,0,127,0,0,0,0,0,11,244,0,127,0,0,0,0,0,15,240,0,127,255,255,255,192,0,15,240,0,127,255,255,255,192,0,47,240,0,127,255,255,255,192,0,63,252,0,127,64,0,0,0,0,127,254,0,127,0,0,0,0,0,255,255,64,127,0,0,0,0,3,254,127,240,127,0,0,0,0,11,252,31,254,191,0,0,0,0,47,244,7,255,255,170,85,85,85,191,224,0,255,255,255,255,255,255,255,128,0,31,255,255,255,255,254,62,0,0,0,27,255,255,255,253,8,0,0,0,0,0,0,0,0, + // 0x6682 暂 + 130,102,36,39,95,40,2,251,0,2,64,0,0,0,0,0,0,0,7,248,0,0,0,0,6,224,0,15,240,0,0,1,107,255,244,255,255,255,255,248,127,255,255,252,255,255,255,255,248,127,255,254,64,191,255,255,255,248,127,148,0,0,0,254,0,0,0,127,0,0,0,3,252,26,128,0,127,0,0,0,11,240,47,192,0,127,0,0,0,31,208,47,192,0,191,255,255,255,127,255,255,255,252,191,255,255,255,63,255,255,255,252,191,255,255,255,47,255,255,255,252,190,0,254,0,0,0,47,192,0,253,0,254,0,0,0,47,192,0,253,0,254,0,0,1,111,255,245,252,0,254,0,127,255,255,255,246,252,0,254,0,191,255,255,255,167,248,0,254,0,191,250,175,192,11,240,0,254,0,16,0,47,192,15,224,0,254,0,0,0,47,192,2,192,0,254,0,0,0,26,128,0,0,0,20,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,64,0,0,0,1,252,0,0,63,64,0,0,0,1,252,0,0,63,64,0,0,0,1,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,234,170,170,170,171,252,0,0,63,64,0,0,0,1,252,0,0,63,64,0,0,0,1,252,0,0,63,64,0,0,0,1,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,64,0,0,0,1,252,0,0,0,0,0,0,0,0,0,0, + // 0x66ab 暫 + 171,102,36,38,86,40,2,252,0,0,252,0,0,0,0,1,64,0,0,252,0,0,0,0,111,208,21,85,253,85,80,229,175,255,244,127,255,255,255,244,255,255,255,144,127,255,255,255,244,255,255,144,0,0,0,252,0,0,254,64,0,0,26,171,255,170,144,252,0,0,0,31,255,255,255,224,252,0,0,0,31,64,252,7,224,252,0,0,0,31,64,252,7,224,255,255,255,255,31,255,255,255,224,255,255,255,255,31,234,254,175,225,255,255,255,255,31,64,252,7,225,252,0,253,0,31,255,255,255,226,252,0,253,0,31,255,255,255,227,248,0,253,0,0,0,252,0,3,244,0,253,0,0,1,253,0,11,240,0,253,0,255,255,255,255,255,224,0,253,0,255,255,255,255,255,192,0,253,0,0,0,252,0,191,64,0,253,0,0,0,252,0,62,0,0,253,0,0,0,168,0,8,0,0,84,0,0,31,255,255,255,255,255,244,0,0,31,255,255,255,255,255,244,0,0,31,255,255,255,255,255,244,0,0,31,208,0,0,0,7,244,0,0,31,208,0,0,0,7,244,0,0,31,208,0,0,0,7,244,0,0,31,255,255,255,255,255,244,0,0,31,255,255,255,255,255,244,0,0,31,234,170,170,170,175,244,0,0,31,208,0,0,0,7,244,0,0,31,208,0,0,0,7,244,0,0,31,255,255,255,255,255,244,0,0,31,255,255,255,255,255,244,0,0,31,255,255,255,255,255,244,0,0,31,208,0,0,0,7,244,0,0,10,128,0,0,0,2,164,0, + // 0x66f4 更 + 244,102,37,36,104,40,2,252,127,255,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,255,253,0,21,85,85,85,255,149,85,85,84,0,0,0,0,0,191,0,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,255,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,255,192,0,0,254,0,0,191,0,0,63,192,0,0,254,0,0,191,0,0,63,192,0,0,254,0,0,191,0,0,63,192,0,0,255,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,255,192,0,0,254,0,0,191,0,0,63,192,0,0,254,0,0,191,0,0,63,192,0,0,254,0,0,191,0,0,63,192,0,0,255,0,0,191,0,0,63,192,0,0,255,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,255,192,0,0,1,128,1,254,0,0,0,0,0,0,31,224,3,252,0,0,0,0,0,0,15,244,7,252,0,0,0,0,0,0,7,254,15,244,0,0,0,0,0,0,1,255,191,240,0,0,0,0,0,0,0,127,255,192,0,0,0,0,0,0,0,47,255,192,0,0,0,0,0,0,1,191,255,254,64,0,0,0,0,0,111,255,255,255,255,165,64,0,0,111,255,255,71,255,255,255,255,255,64,127,255,244,0,47,255,255,255,255,0,47,254,0,0,0,27,255,255,254,0,14,64,0,0,0,0,0,86,168,0, + // 0x6700 最 + 0,103,36,37,77,40,2,252,0,26,170,170,170,170,170,168,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,128,0,0,0,2,252,0,0,63,128,0,0,0,2,252,0,0,63,213,85,85,85,87,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,128,0,0,0,2,252,0,0,63,128,0,0,0,2,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,21,85,85,85,85,85,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,253,191,255,255,255,255,255,255,255,253,191,255,255,255,255,255,255,255,253,1,252,0,47,192,0,0,0,0,1,252,0,47,192,0,0,0,0,1,255,255,255,207,255,255,255,224,1,255,255,255,207,255,255,255,240,1,254,170,191,203,255,255,255,224,1,252,0,47,192,188,0,47,208,1,252,0,47,192,254,0,63,192,1,254,170,191,192,127,0,255,64,1,255,255,255,192,63,194,255,0,1,255,255,255,192,31,231,252,0,1,252,0,47,192,11,255,244,0,1,252,0,47,192,3,255,224,0,1,252,21,191,192,2,255,192,0,191,255,255,255,192,31,255,244,0,255,255,255,255,193,255,255,254,0,191,255,165,111,239,255,210,255,248,84,0,0,47,239,254,0,127,255,0,0,0,47,207,224,0,11,252,0,0,0,47,198,0,0,0,104, + // 0x6709 有 + 9,103,36,38,86,40,2,252,0,0,0,36,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,0,0,0,0,0,21,85,86,255,85,85,85,85,84,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,0,0,31,240,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,2,255,255,255,255,255,252,0,0,7,255,255,255,255,255,252,0,0,15,255,255,255,255,255,252,0,0,63,254,0,0,0,3,252,0,0,255,254,0,0,0,2,252,0,2,255,254,0,0,0,2,252,0,11,254,254,0,0,0,3,252,0,63,248,255,255,255,255,255,252,0,255,224,255,255,255,255,255,252,0,255,128,255,255,255,255,255,252,0,61,0,254,0,0,0,2,252,0,20,0,254,0,0,0,2,252,0,0,0,254,0,0,0,2,252,0,0,0,254,0,0,0,3,252,0,0,0,255,255,255,255,255,252,0,0,0,255,255,255,255,255,252,0,0,0,255,255,255,255,255,252,0,0,0,254,0,0,0,2,252,0,0,0,254,0,0,0,2,252,0,0,0,254,0,0,0,2,252,0,0,0,254,0,0,0,3,252,0,0,0,254,0,0,63,255,252,0,0,0,254,0,0,31,255,248,0,0,0,254,0,0,15,255,224,0,0,0,169,0,0,10,149,0,0, + // 0x671f 期 + 31,103,36,37,77,40,1,252,0,190,0,15,208,0,0,0,0,0,190,0,15,208,15,255,255,255,0,190,0,15,208,15,255,255,255,0,190,0,15,208,15,255,255,255,0,191,0,31,224,15,229,85,191,63,255,255,255,255,79,208,0,191,63,255,255,255,255,79,208,0,191,63,255,255,255,255,79,208,0,191,0,190,0,15,208,15,208,0,191,0,190,0,15,208,15,208,0,191,0,190,0,15,208,15,229,85,191,0,191,255,255,208,15,255,255,255,0,191,255,255,208,15,255,255,255,0,191,255,255,208,15,255,255,255,0,190,0,15,208,15,208,0,191,0,190,0,15,208,15,208,0,191,0,190,0,15,208,15,208,0,191,0,191,255,255,208,15,208,0,191,0,191,255,255,208,15,208,0,191,0,191,255,255,208,15,229,85,191,0,190,0,15,208,15,255,255,255,0,190,0,15,208,31,255,255,255,0,190,0,15,208,31,255,255,255,0,191,0,31,224,31,192,0,191,127,255,255,255,255,47,192,0,191,127,255,255,255,255,47,192,0,191,127,255,255,255,255,63,128,0,191,0,0,0,0,0,63,128,0,191,0,47,128,124,0,127,64,0,191,0,63,192,255,0,127,0,0,191,0,255,64,127,192,191,0,0,191,1,255,0,47,224,254,0,0,191,7,252,0,15,242,253,0,0,191,31,244,0,7,251,252,2,255,255,63,224,0,2,215,248,0,255,254,31,192,0,0,1,240,0,255,248,2,0,0,0,0,16,0,85,64, + // 0x673a 机 + 58,103,38,38,124,40,1,252,0,1,252,0,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,0,2,252,0,2,170,170,170,0,0,0,2,252,0,7,255,255,255,64,0,0,2,252,0,7,255,255,255,64,0,0,2,252,0,7,255,255,255,64,0,0,2,252,0,7,244,0,63,64,0,0,2,252,0,7,244,0,63,64,0,0,2,252,0,7,244,0,63,64,0,63,255,255,255,135,244,0,63,64,0,63,255,255,255,135,244,0,63,64,0,63,255,255,255,135,244,0,63,64,0,26,171,254,170,71,244,0,63,64,0,0,7,252,0,7,244,0,63,64,0,0,11,252,0,7,244,0,63,64,0,0,15,252,0,7,244,0,63,64,0,0,31,254,0,7,244,0,63,64,0,0,47,255,128,7,244,0,63,64,0,0,63,255,224,7,240,0,63,64,0,0,127,255,244,7,240,0,63,64,0,0,254,254,253,7,240,0,63,64,0,1,250,252,255,11,240,0,63,64,0,3,246,252,63,139,240,0,63,64,0,7,242,252,47,15,240,0,63,64,0,15,210,252,13,15,224,0,63,64,0,47,194,252,0,15,208,0,63,64,0,127,130,252,0,31,208,0,63,64,0,191,2,252,0,47,192,0,63,66,128,61,2,252,0,63,192,0,63,66,240,28,2,252,0,127,128,0,63,66,240,0,2,252,0,255,0,0,63,66,240,0,2,252,1,255,0,0,63,67,240,0,2,252,3,253,0,0,63,67,240,0,2,252,11,252,0,0,63,131,240,0,2,252,31,244,0,0,63,255,224,0,2,252,63,224,0,0,63,255,208,0,2,252,11,192,0,0,31,255,128,0,1,252,1,0,0,0,1,84,0, + // 0x6740 杀 + 64,103,36,38,86,40,2,252,0,0,0,0,0,0,2,128,0,0,20,0,0,0,0,15,244,0,0,127,128,0,0,0,127,248,0,0,255,253,0,0,2,255,224,0,0,47,255,224,0,31,255,64,0,0,2,255,254,0,191,248,0,0,0,0,31,255,235,255,208,0,0,0,0,1,191,255,254,0,0,0,0,0,0,15,255,248,0,0,0,0,0,0,191,255,255,64,0,0,0,0,11,255,251,255,244,0,0,0,1,255,255,128,191,255,64,0,0,111,255,244,0,11,255,244,0,27,255,255,64,0,0,191,255,0,127,255,228,0,0,0,31,255,128,31,254,0,0,191,0,1,254,0,7,144,0,0,255,0,0,44,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,21,85,85,85,255,85,85,85,84,191,255,255,255,255,255,255,255,253,191,255,255,255,255,255,255,255,253,191,255,255,255,255,255,255,255,253,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,228,0,255,0,29,0,0,0,3,254,0,255,0,191,128,0,0,11,252,0,255,0,127,224,0,0,47,240,0,255,0,31,248,0,0,191,208,0,255,0,7,255,0,2,255,64,0,255,0,1,255,192,11,254,0,0,255,0,0,127,224,63,248,0,0,255,0,0,31,248,255,224,0,0,255,0,0,7,253,127,128,2,170,255,0,0,2,248,29,0,2,255,255,0,0,0,144,0,0,1,255,253,0,0,0,0,0,0,0,255,224,0,0,0,0, + // 0x675f 束 + 95,103,36,38,86,40,2,252,0,0,0,0,170,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,21,85,85,85,255,85,85,85,84,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,85,85,85,255,85,85,85,0,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,253,0,0,255,0,0,127,64,0,253,0,0,255,0,0,127,64,0,253,0,0,255,0,0,127,64,0,253,0,0,255,0,0,127,64,0,253,0,0,255,0,0,127,64,0,254,85,85,255,85,85,191,64,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,0,0,31,255,244,0,0,0,0,0,0,191,255,254,0,0,0,0,0,2,255,255,255,128,0,0,0,0,11,253,255,127,240,0,0,0,0,127,244,255,31,253,0,0,0,2,255,208,255,7,255,128,0,0,31,255,0,255,0,255,244,0,1,255,252,0,255,0,63,255,64,31,255,224,0,255,0,11,255,248,255,255,0,0,255,0,0,255,255,127,244,0,0,255,0,0,31,253,47,128,0,0,255,0,0,2,248,4,0,0,0,255,0,0,0,32,0,0,0,0,254,0,0,0,0, + // 0x6761 条 + 97,103,36,38,86,40,2,252,0,0,0,105,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,11,253,0,0,4,0,0,0,0,47,255,255,255,255,64,0,0,0,127,255,255,255,255,192,0,0,2,255,255,255,255,255,128,0,0,15,255,128,0,2,255,0,0,0,127,255,224,0,11,253,0,0,3,255,239,248,0,47,244,0,0,47,255,3,255,0,255,208,0,0,15,248,1,255,215,255,64,0,0,3,208,0,63,255,253,0,0,0,0,0,0,11,255,240,0,0,0,0,0,0,47,255,253,0,0,0,0,0,6,255,255,255,228,0,0,0,1,191,255,210,255,255,229,0,1,191,255,253,0,47,255,255,250,127,255,255,144,0,1,255,255,254,63,255,248,0,255,0,6,255,252,31,249,0,0,255,0,0,6,244,9,0,0,0,255,0,0,0,0,21,85,85,85,255,85,85,85,84,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,0,127,255,253,0,0,0,0,0,2,255,255,255,128,0,0,0,0,11,252,255,63,224,0,0,0,0,127,240,255,15,253,0,0,0,2,255,192,255,3,255,192,0,0,47,254,0,255,0,191,248,0,1,255,244,0,255,0,31,255,144,111,255,192,0,255,0,3,255,254,255,253,0,0,255,0,0,127,255,63,224,0,0,255,0,0,7,252,30,0,0,0,255,0,0,0,116,0,0,0,0,254,0,0,0,0, + // 0x6765 来 + 101,103,36,38,86,40,2,252,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,6,170,170,170,255,170,170,170,160,0,2,128,0,255,0,1,224,0,0,47,208,0,255,0,3,253,0,0,15,240,0,255,0,7,252,0,0,11,244,0,255,0,15,244,0,0,3,252,0,255,0,15,240,0,0,2,253,0,255,0,47,208,0,0,0,255,0,255,0,127,128,0,0,0,254,0,255,0,255,0,0,0,0,96,0,255,0,25,0,0,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,106,170,170,191,255,254,170,170,169,0,0,0,63,255,252,0,0,0,0,0,0,255,255,255,0,0,0,0,0,3,254,255,191,192,0,0,0,0,15,248,255,47,240,0,0,0,0,63,240,255,15,252,0,0,0,0,255,192,255,3,255,0,0,0,7,255,0,255,0,255,208,0,0,47,252,0,255,0,63,248,0,0,255,240,0,255,0,15,255,0,11,255,192,0,255,0,3,255,224,191,254,0,0,255,0,0,191,254,255,244,0,0,255,0,0,31,255,63,128,0,0,255,0,0,3,253,29,0,0,0,255,0,0,0,120,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0, + // 0x677f 板 + 127,103,38,38,124,40,1,252,0,3,240,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,3,244,0,21,85,85,85,85,64,0,3,244,0,63,255,255,255,255,128,0,3,244,0,63,255,255,255,255,128,0,3,244,0,63,255,255,255,255,128,0,3,244,0,63,128,0,0,0,0,0,3,244,0,63,128,0,0,0,0,0,3,244,0,63,128,0,0,0,0,63,255,255,252,63,128,0,0,0,0,63,255,255,252,63,128,0,0,0,0,63,255,255,252,63,128,0,0,0,0,21,95,249,84,63,128,0,0,0,0,0,15,244,0,63,255,255,255,254,0,0,15,244,0,63,255,255,255,255,0,0,31,248,0,63,255,255,255,255,0,0,63,253,0,63,255,85,85,254,0,0,63,255,0,63,255,0,0,253,0,0,191,255,192,63,191,64,2,252,0,0,255,255,224,63,127,128,3,252,0,1,255,247,244,63,95,192,3,248,0,3,247,246,252,127,79,208,11,240,0,7,243,244,253,127,11,240,15,240,0,11,211,244,124,191,7,244,47,208,0,31,195,244,48,191,3,252,63,192,0,63,131,244,0,254,1,254,191,128,0,191,3,244,0,254,0,255,255,0,0,126,3,244,1,253,0,127,253,0,0,60,3,244,2,252,0,47,248,0,0,24,3,244,3,252,0,47,248,0,0,0,3,244,7,244,0,191,254,0,0,0,3,244,11,240,2,255,255,128,0,0,3,244,15,240,11,254,191,224,0,0,3,244,47,208,127,248,47,254,0,0,3,244,127,195,255,208,11,255,208,0,3,244,191,67,255,64,2,255,192,0,3,244,31,0,248,0,0,63,0,0,3,240,4,0,80,0,0,5,0, + // 0x6797 林 + 151,103,38,38,124,40,1,252,0,0,254,0,0,0,31,192,0,0,0,0,254,0,0,0,31,192,0,0,0,0,254,0,0,0,31,192,0,0,0,0,254,0,0,0,31,192,0,0,0,0,254,0,0,0,31,192,0,0,0,0,254,0,0,0,31,192,0,0,0,0,254,0,0,0,31,192,0,0,0,0,254,0,0,0,31,192,0,0,0,0,254,0,0,0,31,192,0,0,47,255,255,255,199,255,255,255,255,128,47,255,255,255,199,255,255,255,255,128,47,255,255,255,199,255,255,255,255,128,26,171,255,170,130,170,191,250,170,64,0,3,255,0,0,0,191,244,0,0,0,3,255,128,0,0,255,252,0,0,0,11,255,224,0,1,255,252,0,0,0,15,255,248,0,2,255,253,0,0,0,31,255,253,0,3,255,255,0,0,0,47,254,255,64,11,255,255,0,0,0,63,254,127,192,15,255,255,128,0,0,190,254,47,240,47,239,239,192,0,0,252,254,15,208,63,159,223,224,0,2,248,254,3,128,191,31,203,240,0,7,244,254,1,1,254,31,195,248,0,15,240,254,0,3,252,31,194,252,0,47,208,254,0,11,248,31,193,255,0,127,192,254,0,31,240,31,192,255,128,127,64,254,0,127,208,31,192,127,208,62,0,254,0,255,128,31,192,47,208,28,0,254,0,191,0,31,192,15,64,0,0,254,0,60,0,31,192,5,0,0,0,254,0,20,0,31,192,0,0,0,0,254,0,0,0,31,192,0,0,0,0,254,0,0,0,31,192,0,0,0,0,254,0,0,0,31,192,0,0,0,0,254,0,0,0,31,192,0,0,0,0,254,0,0,0,31,192,0,0,0,0,170,0,0,0,26,128,0,0, + // 0x67f1 柱 + 241,103,38,38,124,40,1,252,0,2,248,0,0,2,0,0,0,0,0,2,252,0,0,15,208,0,0,0,0,2,252,0,0,63,248,0,0,0,0,2,252,0,0,15,255,0,0,0,0,2,252,0,0,2,255,192,0,0,0,2,252,0,0,0,127,240,0,0,0,2,252,0,0,0,31,248,0,0,0,2,252,0,0,0,7,240,0,0,0,2,252,0,42,170,171,234,170,64,63,255,255,255,63,255,255,255,255,192,63,255,255,255,63,255,255,255,255,192,63,255,255,255,63,255,255,255,255,192,26,171,254,170,0,0,63,192,0,0,0,7,252,0,0,0,63,192,0,0,0,15,252,0,0,0,63,192,0,0,0,15,252,0,0,0,63,192,0,0,0,31,254,0,0,0,63,192,0,0,0,63,255,128,0,0,63,192,0,0,0,63,255,208,0,0,63,192,0,0,0,191,255,244,0,0,63,192,0,0,0,254,254,252,15,255,255,255,255,64,2,250,252,255,15,255,255,255,255,64,3,242,252,127,79,255,255,255,255,64,11,226,252,46,5,85,191,213,85,0,15,210,252,12,0,0,63,192,0,0,63,194,252,0,0,0,63,192,0,0,127,66,252,0,0,0,63,192,0,0,127,2,252,0,0,0,63,192,0,0,61,2,252,0,0,0,63,192,0,0,24,2,252,0,0,0,63,192,0,0,0,2,252,0,0,0,63,192,0,0,0,2,252,0,0,0,63,192,0,0,0,2,252,0,0,0,63,192,0,0,0,2,252,3,255,255,255,255,255,224,0,2,252,3,255,255,255,255,255,224,0,2,252,3,255,255,255,255,255,224,0,2,252,2,170,170,170,170,170,144,0,2,248,0,0,0,0,0,0,0, + // 0x6821 校 + 33,104,38,38,124,40,1,252,0,7,240,0,0,0,255,0,0,0,0,7,240,0,0,0,255,0,0,0,0,7,240,0,0,0,255,0,0,0,0,7,240,0,0,0,255,0,0,0,0,7,240,0,0,0,255,0,0,0,0,7,240,0,0,0,255,0,0,0,0,7,240,3,255,255,255,255,255,192,0,7,240,3,255,255,255,255,255,192,0,7,240,3,255,255,255,255,255,192,63,255,255,250,255,255,255,255,255,128,63,255,255,248,0,0,0,0,0,0,63,255,255,248,1,244,0,47,0,0,21,95,249,84,3,252,0,127,192,0,0,15,240,0,11,248,0,47,224,0,0,31,240,0,15,240,0,15,248,0,0,47,244,0,63,208,0,3,253,0,0,63,252,0,191,128,0,0,255,0,0,63,255,2,255,0,0,0,127,128,0,191,255,139,253,176,0,62,127,208,0,255,255,195,247,248,0,191,79,128,1,255,251,240,210,252,0,255,9,0,2,251,243,244,0,254,0,254,0,0,3,247,241,252,0,191,2,253,0,0,11,215,240,244,0,127,131,252,0,0,15,199,240,96,0,47,219,244,0,0,47,135,240,0,0,15,255,240,0,0,127,71,240,0,0,11,255,192,0,0,127,7,240,0,0,3,255,128,0,0,61,7,240,0,0,2,255,128,0,0,24,7,240,0,0,11,255,224,0,0,0,7,240,0,0,47,255,248,0,0,0,7,240,0,0,255,223,255,0,0,0,7,240,0,11,255,66,255,208,0,0,7,240,0,127,253,0,191,253,0,0,7,240,11,255,224,0,47,255,208,0,7,240,15,255,64,0,7,255,192,0,7,240,7,248,0,0,0,191,0,0,7,240,3,64,0,0,0,9,0, + // 0x683c 格 + 60,104,38,38,124,40,1,252,0,2,160,0,0,9,0,0,0,0,0,3,244,0,0,31,208,0,0,0,0,3,244,0,0,63,192,0,0,0,0,3,244,0,0,127,128,0,0,0,0,3,244,0,0,255,64,0,64,0,0,3,244,0,1,255,255,255,244,0,0,3,244,0,3,255,255,255,244,0,0,3,244,0,15,255,255,255,240,0,0,3,244,0,31,240,0,31,224,0,63,255,255,252,127,244,0,63,192,0,63,255,255,253,255,252,0,127,128,0,63,255,255,255,255,255,0,255,0,0,21,95,249,111,252,127,131,253,0,0,0,15,244,11,240,63,219,248,0,0,0,15,252,1,192,15,255,240,0,0,0,31,254,0,0,3,255,192,0,0,0,47,255,128,0,3,255,192,0,0,0,63,255,208,0,31,255,244,0,0,0,127,251,240,0,191,255,254,0,0,0,255,247,252,3,255,195,255,208,0,0,255,244,248,127,254,0,191,254,64,2,247,244,183,255,244,0,31,255,224,3,243,244,63,255,208,0,3,255,192,11,211,244,31,255,255,255,255,255,64,15,195,244,15,175,255,255,255,245,0,63,131,244,0,47,255,255,255,244,0,127,3,244,0,47,192,0,3,244,0,127,3,244,0,47,192,0,3,244,0,60,3,244,0,47,192,0,3,244,0,24,3,244,0,47,192,0,3,244,0,0,3,244,0,47,192,0,3,244,0,0,3,244,0,47,192,0,3,244,0,0,3,244,0,47,192,0,3,244,0,0,3,244,0,47,255,255,255,244,0,0,3,244,0,47,255,255,255,244,0,0,3,244,0,47,255,255,255,244,0,0,3,244,0,47,192,0,7,244,0,0,3,240,0,31,128,0,2,160,0, + // 0x68af 梯 + 175,104,37,38,124,40,1,252,0,7,240,0,0,64,0,5,0,0,0,7,240,0,15,208,0,15,240,0,0,7,240,0,15,240,0,15,240,0,0,7,240,0,7,244,0,47,208,0,0,7,240,0,3,248,0,63,192,0,0,7,240,0,2,252,0,127,0,0,0,7,240,0,1,244,0,110,0,0,0,7,240,1,255,255,255,255,254,0,0,7,240,1,255,255,255,255,254,0,63,255,255,249,255,255,255,255,254,0,63,255,255,248,0,1,253,0,254,0,63,255,255,248,0,0,253,0,190,0,21,95,249,84,0,0,253,0,190,0,0,15,240,0,0,0,253,0,190,0,0,15,240,0,21,85,253,85,254,0,0,47,248,0,191,255,255,255,254,0,0,63,253,0,255,255,255,255,254,0,0,63,255,0,255,255,255,255,254,0,0,191,255,128,253,0,253,0,0,0,0,255,255,209,252,0,253,0,0,0,1,255,247,242,252,0,253,0,0,0,2,251,242,250,252,1,253,0,0,0,3,247,240,247,255,255,255,255,255,192,11,215,240,163,255,255,255,255,255,192,15,199,240,7,255,255,255,255,255,192,63,135,240,11,240,15,253,0,63,128,127,7,240,0,0,47,253,0,63,128,126,7,240,0,0,127,253,0,63,128,60,7,240,0,1,255,253,0,63,64,24,7,240,0,11,253,253,0,63,64,0,7,240,0,47,240,253,0,127,64,0,7,240,1,255,192,253,17,255,0,0,7,240,11,255,0,253,63,255,0,0,7,240,63,252,0,253,63,253,0,0,7,240,31,224,0,253,47,244,0,0,7,240,11,64,0,253,0,0,0,0,7,240,0,0,0,253,0,0,0,0,7,240,0,0,0,252,0,0,0, + // 0x68c0 检 + 192,104,38,38,124,40,1,252,0,10,128,0,0,2,208,0,0,0,0,15,208,0,0,7,248,0,0,0,0,15,208,0,0,15,244,0,0,0,0,15,208,0,0,47,252,0,0,0,0,15,208,0,0,127,254,0,0,0,0,15,208,0,0,255,255,128,0,0,0,15,208,0,3,254,63,224,0,0,0,15,208,0,11,252,15,248,0,0,63,255,255,192,47,240,7,254,0,0,63,255,255,192,191,208,1,255,192,0,63,255,255,195,255,64,0,127,244,0,21,111,229,79,253,0,0,15,254,0,0,47,208,127,248,0,0,7,255,208,0,63,225,255,239,255,255,253,191,192,0,63,244,255,31,255,255,253,31,128,0,127,252,56,31,255,255,253,3,0,0,191,254,16,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,1,255,239,192,0,0,64,0,0,0,2,255,223,208,16,7,224,0,248,0,3,255,215,211,240,3,240,1,252,0,11,239,211,131,244,3,240,2,248,0,15,207,209,2,248,3,240,3,244,0,31,207,208,0,252,2,244,7,240,0,63,79,208,0,252,2,248,15,208,0,127,15,208,0,189,1,248,15,192,0,62,15,208,0,126,0,252,47,128,0,44,15,208,0,63,0,252,63,0,0,8,15,208,0,63,0,144,126,0,0,0,15,208,0,57,0,0,252,0,0,0,15,208,0,0,0,1,248,0,0,0,15,208,0,0,0,3,240,0,0,0,15,208,21,85,85,87,245,85,0,0,15,208,63,255,255,255,255,255,64,0,15,208,63,255,255,255,255,255,64,0,15,208,63,255,255,255,255,255,64,0,15,208,0,0,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0, + // 0x69fd 槽 + 253,105,38,38,124,40,1,252,0,15,224,0,0,127,3,240,0,0,0,15,224,0,0,127,3,240,0,0,0,15,224,0,0,127,3,240,0,0,0,15,224,31,255,255,255,255,255,208,0,15,224,31,255,255,255,255,255,208,0,15,224,31,255,255,255,255,255,208,0,15,224,0,0,127,3,240,0,0,0,15,224,0,0,127,3,240,0,0,0,15,224,2,170,191,171,250,170,0,63,255,255,227,255,255,255,255,255,0,63,255,255,227,255,255,255,255,255,0,63,255,255,227,240,63,3,224,63,0,21,111,245,83,240,63,3,224,63,0,0,31,224,3,240,63,3,224,63,0,0,47,224,3,255,255,255,255,255,0,0,63,240,3,255,255,255,255,255,0,0,63,244,3,245,127,87,245,127,0,0,191,252,3,240,63,3,224,63,0,0,255,255,3,240,63,3,224,63,0,0,255,255,67,255,255,255,255,255,0,2,255,239,195,255,255,255,255,255,0,3,255,231,226,170,170,170,170,170,0,7,223,227,240,0,0,0,0,0,0,15,207,225,192,127,255,255,255,248,0,31,207,224,64,191,255,255,255,248,0,63,79,224,0,191,255,255,255,248,0,127,15,224,0,191,0,0,3,248,0,126,15,224,0,191,0,0,3,248,0,60,15,224,0,191,170,170,171,248,0,20,15,224,0,191,255,255,255,248,0,0,15,224,0,191,255,255,255,248,0,0,15,224,0,191,0,0,3,248,0,0,15,224,0,191,0,0,3,248,0,0,15,224,0,191,0,0,3,248,0,0,15,224,0,191,255,255,255,248,0,0,15,224,0,191,255,255,255,248,0,0,15,224,0,191,255,255,255,248,0,0,15,208,0,191,0,0,3,248,0, + // 0x6a21 模 + 33,106,38,38,124,40,1,252,0,15,192,0,3,244,0,253,0,0,0,15,208,0,3,248,0,254,0,0,0,15,208,0,3,248,0,254,0,0,0,15,208,31,255,255,255,255,255,128,0,15,208,31,255,255,255,255,255,128,0,15,208,31,255,255,255,255,255,128,0,15,208,0,3,248,0,254,0,0,0,15,208,0,3,248,0,254,0,0,63,255,255,192,3,248,0,254,0,0,63,255,255,192,0,0,0,0,0,0,63,255,255,195,255,255,255,255,248,0,21,111,229,67,255,255,255,255,248,0,0,31,208,3,254,170,170,171,248,0,0,47,224,3,248,0,0,3,248,0,0,63,240,3,248,0,0,3,248,0,0,63,252,3,255,255,255,255,248,0,0,127,253,3,255,255,255,255,248,0,0,255,255,3,254,170,170,171,248,0,0,255,239,131,248,0,0,3,248,0,1,255,223,195,248,0,0,3,248,0,3,255,219,243,254,170,170,171,248,0,7,255,211,227,255,255,255,255,248,0,11,239,210,131,255,255,255,255,248,0,15,223,208,0,0,3,248,0,0,0,47,143,208,0,0,7,244,0,0,0,127,79,208,0,0,11,244,0,0,0,191,15,208,63,255,255,255,255,255,128,61,15,208,63,255,255,255,255,255,128,28,15,208,63,255,255,255,255,255,128,4,15,208,0,0,63,255,192,0,0,0,15,208,0,0,191,143,240,0,0,0,15,208,0,2,255,11,252,0,0,0,15,208,0,31,253,3,255,64,0,0,15,208,1,255,244,0,255,244,0,0,15,208,111,255,208,0,63,255,144,0,15,208,255,254,0,0,11,255,192,0,15,208,63,224,0,0,0,191,0,0,15,192,41,0,0,0,0,5,0, + // 0x6a59 橙 + 89,106,38,38,124,40,1,252,0,6,160,0,0,0,0,0,0,0,0,11,240,0,0,0,11,192,0,0,0,11,240,3,255,254,15,192,208,0,0,11,240,3,255,255,75,227,240,0,0,11,240,3,255,255,7,255,244,0,0,11,240,0,0,190,3,255,128,0,0,11,240,1,0,253,2,253,2,0,0,11,240,7,226,252,1,252,15,128,0,11,240,15,255,244,0,255,127,192,63,255,255,242,255,240,0,127,254,0,63,255,255,240,127,224,0,63,244,0,63,255,255,240,63,255,255,255,240,0,21,95,245,80,255,255,255,255,252,0,0,15,240,3,254,191,255,247,255,0,0,31,240,15,248,0,0,0,255,208,0,47,240,127,240,0,0,0,63,224,0,63,252,63,192,0,0,0,15,128,0,127,254,30,127,255,255,255,242,0,0,191,255,68,127,255,255,255,240,0,0,255,255,192,127,234,170,175,240,0,1,255,251,240,127,0,0,7,240,0,3,251,243,248,127,0,0,7,240,0,3,251,241,240,127,0,0,7,240,0,11,219,240,208,127,0,0,7,240,0,15,203,240,0,127,255,255,255,240,0,47,139,240,0,127,255,255,255,240,0,127,75,240,0,63,255,255,255,240,0,191,11,240,0,1,144,0,61,0,0,61,11,240,0,15,224,0,127,128,0,28,11,240,0,7,240,0,191,0,0,0,11,240,0,3,244,0,254,0,0,0,11,240,0,3,248,1,252,0,0,0,11,240,0,2,252,2,248,0,0,0,11,240,0,1,228,1,244,0,0,0,11,240,47,255,255,255,255,255,208,0,11,240,47,255,255,255,255,255,208,0,11,240,47,255,255,255,255,255,208,0,11,240,0,0,0,0,0,0,0, + // 0x6b62 止 + 98,107,36,36,68,40,2,254,0,0,0,0,26,144,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,250,170,170,160,0,47,192,0,31,255,255,255,240,0,47,192,0,31,255,255,255,240,0,47,192,0,31,255,255,255,240,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,170,170,170,170,170,170, + // 0x6b63 正 + 99,107,36,33,41,40,2,254,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,26,170,170,170,191,234,170,170,164,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,255,255,255,192,0,47,192,0,63,255,255,255,192,0,47,192,0,63,255,255,255,192,0,47,192,0,63,234,170,170,128,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,170,191,234,170,191,234,170,170,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x6b65 步 + 101,107,36,38,86,40,2,252,0,0,0,0,191,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,15,224,0,255,0,0,0,0,0,15,224,0,255,170,170,169,0,0,15,224,0,255,255,255,254,0,0,15,224,0,255,255,255,254,0,0,15,224,0,255,255,255,254,0,0,15,224,0,255,0,0,0,0,0,15,224,0,255,0,0,0,0,0,15,224,0,255,0,0,0,0,0,15,224,0,255,0,0,0,0,255,255,255,255,255,255,255,255,254,255,255,255,255,255,255,255,255,254,255,255,255,255,255,255,255,255,254,106,170,170,170,255,170,170,170,169,0,0,0,0,255,0,0,0,0,0,1,248,0,255,0,0,0,0,0,3,254,0,255,0,0,228,0,0,15,252,0,255,0,2,254,0,0,63,240,0,255,0,3,253,0,0,255,208,0,255,0,7,252,0,3,255,64,0,255,0,15,244,0,31,254,0,0,255,0,47,240,0,191,248,0,0,255,0,127,208,0,63,208,3,255,255,0,255,128,0,11,64,1,255,254,3,255,0,0,0,0,0,255,248,15,253,0,0,0,0,0,85,0,127,244,0,0,0,0,0,0,2,255,208,0,0,0,0,0,0,47,255,64,0,0,0,0,0,6,255,252,0,0,0,0,0,1,191,255,224,0,0,0,0,5,191,255,254,0,0,0,0,2,255,255,255,224,0,0,0,0,0,255,255,249,0,0,0,0,0,0,191,254,64,0,0,0,0,0,0,57,0,0,0,0,0,0,0, + // 0x6bd4 比 + 212,107,37,37,114,40,2,253,0,21,64,0,0,85,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,192,0,0,63,128,0,0,254,0,11,240,0,0,63,128,0,0,254,0,127,252,0,0,63,234,170,128,254,7,255,248,0,0,63,255,255,192,254,63,255,208,0,0,63,255,255,192,255,255,253,0,0,0,63,255,255,192,255,255,144,0,0,0,63,128,0,0,255,248,0,0,0,0,63,128,0,0,255,128,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,32,0,0,63,128,0,0,254,0,0,62,0,0,63,128,0,0,254,0,0,63,128,0,63,128,1,176,254,0,0,63,128,0,63,134,255,240,254,0,0,63,64,0,63,255,255,244,254,0,0,127,64,27,255,255,255,244,255,0,0,191,0,255,255,255,249,0,255,234,170,255,0,255,255,249,0,0,191,255,255,254,0,191,249,0,0,0,63,255,255,252,0,101,0,0,0,0,11,255,255,224,0, + // 0x6ca1 没 + 161,108,37,38,124,40,2,252,0,64,0,0,0,0,0,0,0,0,3,244,0,1,85,85,85,80,0,0,11,255,0,3,255,255,255,224,0,0,11,255,224,3,255,255,255,224,0,0,0,191,252,3,255,255,255,224,0,0,0,15,248,3,248,0,15,224,0,0,0,2,240,3,248,0,15,224,0,0,0,0,80,3,248,0,15,224,0,0,0,0,0,3,244,0,15,224,36,0,0,0,0,7,244,0,15,224,47,64,0,0,0,15,240,0,15,224,47,64,16,0,0,31,224,0,15,224,47,64,126,0,0,63,208,0,15,240,127,64,255,224,0,255,192,0,15,255,255,0,191,254,7,255,0,0,11,255,254,0,15,255,139,253,0,0,1,255,248,0,1,255,66,244,0,0,0,0,0,0,0,46,0,128,0,0,0,0,0,0,0,4,0,255,255,255,255,255,64,0,0,0,0,255,255,255,255,255,192,0,0,0,0,255,255,255,255,255,192,0,0,0,0,86,249,85,85,255,64,0,0,1,128,3,248,0,1,255,0,0,0,3,240,3,253,0,3,253,0,0,0,7,248,0,255,0,11,252,0,0,0,15,240,0,191,128,31,244,0,0,0,31,224,0,63,224,127,224,0,0,0,63,192,0,15,249,255,192,0,0,0,127,128,0,7,255,255,0,0,0,0,255,0,0,2,255,252,0,0,0,2,254,0,0,2,255,248,0,0,0,3,252,0,0,31,255,255,128,0,0,11,248,0,2,255,255,255,248,0,0,31,240,1,191,255,224,191,255,228,0,63,224,63,255,254,0,15,255,255,64,31,192,47,255,224,0,1,255,255,0,3,128,15,249,0,0,0,11,252,0,0,0,6,64,0,0,0,0,36,0, + // 0x6ce2 波 + 226,108,36,38,86,40,2,252,0,0,0,0,0,31,192,0,0,3,208,0,0,0,31,192,0,0,11,253,0,0,0,31,192,0,0,15,255,128,0,0,31,192,0,0,1,255,244,0,0,31,192,0,0,0,47,244,0,0,31,192,0,0,0,7,224,255,255,255,255,255,254,0,0,128,255,255,255,255,255,255,0,0,0,255,255,255,255,255,254,0,0,0,255,85,111,229,87,252,0,0,0,254,0,31,192,3,252,0,0,0,254,0,31,192,3,244,61,0,0,254,0,31,192,11,240,255,208,0,254,0,31,192,15,224,255,253,0,254,0,31,192,1,192,31,255,64,254,0,31,192,0,0,2,255,0,255,255,255,255,255,128,0,61,0,255,255,255,255,255,208,0,4,0,255,255,255,255,255,192,0,0,0,254,255,85,85,127,192,0,0,0,254,127,0,0,127,128,0,0,0,253,63,128,0,255,0,0,6,0,253,31,192,1,254,0,0,11,129,253,15,224,3,252,0,0,15,225,252,11,244,7,248,0,0,47,210,252,3,252,15,240,0,0,63,194,252,1,255,63,224,0,0,191,67,248,0,191,255,192,0,0,255,3,248,0,63,255,0,0,2,254,7,244,0,15,253,0,0,3,252,15,240,0,63,255,64,0,11,248,15,224,1,255,255,224,0,15,240,47,208,15,255,191,253,0,47,224,63,193,191,252,15,255,224,127,192,191,159,255,224,1,255,255,63,128,255,15,255,64,0,63,254,7,0,125,7,244,0,0,2,252,0,0,8,2,64,0,0,0,36, + // 0x6ce8 注 + 232,108,37,38,124,40,2,252,0,64,0,0,6,0,0,0,0,0,3,244,0,0,15,224,0,0,0,0,7,255,64,0,63,253,0,0,0,0,7,255,240,0,47,255,128,0,0,0,0,191,253,0,3,255,240,0,0,0,0,11,252,0,0,127,253,0,0,0,0,1,244,0,0,15,255,0,0,0,0,0,16,0,0,2,253,0,0,0,0,0,0,0,0,0,184,0,0,0,0,0,0,255,255,255,255,255,254,0,0,0,0,255,255,255,255,255,254,0,16,0,0,255,255,255,255,255,254,0,127,64,0,170,170,175,234,170,169,0,255,244,0,0,0,31,208,0,0,0,191,255,64,0,0,31,208,0,0,0,11,255,192,0,0,31,208,0,0,0,0,191,64,0,0,31,208,0,0,0,0,30,0,0,0,31,208,0,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,26,170,175,234,170,160,0,0,0,0,47,255,255,255,255,240,0,0,0,208,47,255,255,255,255,240,0,0,1,248,47,255,255,255,255,240,0,0,3,252,0,0,31,208,0,0,0,0,7,248,0,0,31,208,0,0,0,0,15,240,0,0,31,208,0,0,0,0,31,224,0,0,31,208,0,0,0,0,63,192,0,0,31,208,0,0,0,0,191,128,0,0,31,208,0,0,0,0,255,0,0,0,31,208,0,0,0,3,254,0,0,0,31,208,0,0,0,7,252,0,0,0,31,208,0,0,0,15,248,7,255,255,255,255,255,255,64,47,240,7,255,255,255,255,255,255,64,15,208,7,255,255,255,255,255,255,64,2,128,6,170,170,170,170,170,170,0,0,0,0,0,0,0,0,0,0,0, + // 0x6d17 洗 + 23,109,37,38,124,40,2,252,0,0,0,0,0,15,208,0,0,0,3,208,0,3,248,15,208,0,0,0,15,248,0,3,248,15,208,0,0,0,15,255,64,7,244,15,208,0,0,0,1,255,224,11,240,15,208,0,0,0,0,63,240,15,240,15,208,0,0,0,0,11,208,15,245,111,229,85,84,0,0,1,128,47,255,255,255,255,248,0,0,0,0,63,255,255,255,255,248,0,0,0,0,127,255,255,255,255,248,0,0,0,0,191,64,15,208,0,0,0,20,0,0,255,0,15,208,0,0,0,126,0,3,254,0,15,208,0,0,0,255,224,7,252,0,15,208,0,0,0,191,252,3,248,0,15,208,0,0,0,31,255,64,176,0,15,208,0,0,0,2,255,64,0,0,15,208,0,0,0,0,126,7,255,255,255,255,255,255,64,0,8,7,255,255,255,255,255,255,64,0,0,7,255,255,255,255,255,255,64,0,0,6,170,191,234,191,234,170,0,0,0,0,0,63,128,63,192,0,0,0,2,0,0,63,128,63,192,0,0,0,11,192,0,63,64,63,192,0,0,0,15,224,0,127,64,63,192,0,0,0,47,208,0,127,0,63,192,0,0,0,63,192,0,191,0,63,192,0,0,0,127,64,0,255,0,63,192,0,0,0,255,0,1,254,0,63,192,24,0,1,254,0,3,252,0,63,192,31,128,3,252,0,7,252,0,63,192,31,192,7,248,0,31,244,0,63,192,31,192,15,244,0,127,224,0,63,192,47,128,31,240,2,255,192,0,47,192,63,128,63,208,47,255,0,0,47,255,255,64,47,192,63,248,0,0,31,255,255,0,7,64,15,208,0,0,11,255,253,0,0,0,5,0,0,0,0,21,64,0, + // 0x6d3b 活 + 59,109,36,38,86,40,2,252,0,0,0,0,0,0,0,6,0,3,208,0,0,0,0,1,191,192,11,253,0,0,0,22,255,255,240,15,255,128,1,175,255,255,255,224,2,255,248,63,255,255,255,248,0,0,47,248,47,255,255,244,0,0,0,7,240,31,250,95,224,0,0,0,0,144,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,45,0,3,255,255,255,255,255,255,127,208,3,255,255,255,255,255,255,255,252,3,255,255,255,255,255,255,47,255,130,170,170,175,250,170,170,2,255,128,0,0,15,224,0,0,0,127,0,0,0,15,224,0,0,0,9,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,128,31,255,255,255,255,240,0,3,224,31,255,255,255,255,240,0,7,248,31,255,255,255,255,240,0,15,240,31,213,85,85,95,240,0,31,224,31,192,0,0,11,240,0,63,192,31,192,0,0,11,240,0,191,128,31,192,0,0,11,240,0,255,0,31,192,0,0,11,240,2,254,0,31,192,0,0,11,240,7,252,0,31,192,0,0,11,240,15,244,0,31,213,85,85,95,240,47,240,0,31,255,255,255,255,240,63,208,0,31,255,255,255,255,240,47,128,0,31,255,255,255,255,240,7,0,0,31,192,0,0,11,240,0,0,0,10,128,0,0,6,144, + // 0x6d41 流 + 65,109,37,38,124,40,2,252,0,0,0,0,0,42,128,0,0,0,3,224,0,0,0,63,192,0,0,0,11,253,0,0,0,63,192,0,0,0,15,255,192,0,0,63,192,0,0,0,1,255,244,0,0,63,192,0,0,0,0,47,249,85,85,127,213,85,85,0,0,7,243,255,255,255,255,255,255,0,0,0,195,255,255,255,255,255,255,0,0,0,3,255,255,255,255,255,255,0,0,0,0,0,15,244,0,0,0,0,0,0,0,0,15,240,1,240,0,0,16,0,0,0,47,208,7,252,0,0,62,0,0,0,63,128,1,255,0,0,255,240,0,0,191,0,0,127,192,0,191,254,1,170,255,175,255,255,240,0,11,255,130,255,255,255,255,255,248,0,0,255,2,255,255,255,255,255,253,0,0,45,1,255,250,170,85,64,255,0,0,0,0,0,0,0,0,0,190,0,0,0,0,6,144,0,0,168,32,0,0,0,0,15,224,63,64,253,0,0,0,0,0,15,224,63,64,253,0,0,0,2,128,15,224,63,64,253,0,0,0,3,240,15,224,63,64,253,0,0,0,11,244,15,224,63,64,253,0,0,0,15,240,15,208,63,64,253,0,0,0,47,208,15,208,63,64,253,0,0,0,63,192,15,208,63,64,253,0,0,0,191,64,31,192,63,64,253,0,0,0,255,0,47,192,63,64,253,13,0,3,253,0,63,128,63,64,253,15,128,7,252,0,191,64,63,64,253,15,128,15,244,1,255,0,63,64,253,15,128,31,240,3,253,0,63,64,253,15,64,63,208,15,248,0,63,64,255,255,64,31,192,47,240,0,63,64,191,255,0,3,64,7,192,0,0,0,47,248,0,0,0,1,0,0,0,0,0,0,0, + // 0x6d4b 测 + 75,109,35,39,95,40,2,251,0,0,0,0,0,0,0,0,84,3,128,0,0,0,0,0,0,252,15,244,6,170,170,170,0,0,252,47,254,11,255,255,255,1,64,252,7,255,219,255,255,255,7,224,252,0,191,235,208,0,63,7,224,252,0,31,203,208,0,63,7,224,252,0,3,11,208,80,63,7,224,252,0,0,11,209,244,63,7,224,252,0,0,11,209,244,63,7,224,252,0,0,11,209,244,63,7,224,252,0,0,11,209,244,63,7,224,252,60,0,11,209,244,63,7,224,252,191,128,11,209,244,63,7,224,252,255,248,11,209,244,63,7,224,252,47,255,11,209,244,63,7,224,252,3,254,11,209,244,63,7,224,252,0,188,11,209,244,63,7,224,252,0,16,11,209,244,63,7,224,252,0,0,11,209,244,63,7,224,252,0,0,11,209,244,63,7,224,252,0,0,11,209,244,63,7,224,252,0,0,11,209,244,63,7,224,252,0,60,11,209,244,63,7,224,252,0,63,75,209,244,63,7,224,252,0,191,11,209,244,63,7,224,252,0,255,11,210,240,63,7,224,252,1,253,11,210,240,63,7,224,252,2,252,6,131,240,26,3,208,252,3,252,0,7,224,0,0,0,252,11,244,0,15,215,64,0,0,252,15,240,0,31,223,192,0,0,252,31,224,0,63,75,240,0,0,252,63,192,0,254,2,252,0,0,252,127,192,7,252,0,254,0,0,252,127,64,63,240,0,63,67,255,252,11,0,63,128,0,31,130,255,248,0,0,13,0,0,9,0,255,144,0,0,0,0,0,0,0,0,0, + // 0x6d88 消 + 136,109,35,38,86,40,2,252,0,0,0,0,0,15,208,0,0,3,208,0,0,0,15,224,0,128,15,248,0,127,0,15,224,2,252,15,255,64,191,64,15,224,3,252,2,255,224,63,192,15,224,7,248,0,63,244,31,224,15,224,15,240,0,11,224,15,240,15,224,47,224,0,1,128,7,248,15,224,63,192,0,0,0,3,252,15,224,191,64,0,0,0,2,224,15,224,30,0,0,0,0,0,0,15,224,0,0,20,0,0,21,85,111,245,85,80,127,0,0,63,255,255,255,255,240,255,224,0,63,255,255,255,255,240,127,253,0,63,255,255,255,255,240,11,255,64,63,192,0,0,11,240,1,255,64,63,192,0,0,11,240,0,62,0,63,192,0,0,11,240,0,8,0,63,192,0,0,11,240,0,0,0,63,255,255,255,255,240,0,0,0,63,255,255,255,255,240,0,0,0,63,255,255,255,255,240,0,2,64,63,192,0,0,11,240,0,7,208,63,192,0,0,11,240,0,11,240,63,192,0,0,11,240,0,15,224,63,192,0,0,11,240,0,47,192,63,255,255,255,255,240,0,63,192,63,255,255,255,255,240,0,191,64,63,255,255,255,255,240,0,255,0,63,192,0,0,11,240,2,253,0,63,192,0,0,11,240,7,252,0,63,192,0,0,11,240,15,244,0,63,192,0,0,11,240,31,240,0,63,192,0,0,15,240,63,224,0,63,192,0,63,255,240,47,192,0,63,192,0,47,255,224,7,64,0,63,192,0,31,255,128,0,0,0,42,128,0,10,84,0, + // 0x6de1 淡 + 225,109,37,37,114,40,2,253,0,0,0,0,0,26,128,0,0,0,2,128,0,0,0,47,192,0,0,0,11,248,0,0,0,47,192,0,0,0,15,255,64,11,224,47,192,11,208,0,2,255,224,15,224,47,192,15,240,0,0,127,248,31,192,63,192,47,224,0,0,11,240,47,192,63,128,63,192,0,0,1,192,127,64,63,128,191,0,0,0,0,0,255,0,127,65,254,0,0,0,0,1,253,0,191,131,252,0,0,0,0,0,40,0,255,244,96,0,0,0,0,0,0,2,255,255,0,0,0,61,0,0,0,11,255,255,224,0,0,255,208,0,0,47,244,127,253,0,0,255,248,0,1,255,224,11,255,192,0,31,255,64,111,255,128,0,255,244,0,2,255,67,255,253,0,0,31,252,0,0,126,0,255,208,47,192,3,244,0,0,4,0,185,0,47,192,0,144,0,0,0,0,0,0,63,192,0,0,0,0,0,0,14,64,63,192,3,208,0,0,1,0,15,208,63,128,11,252,0,0,11,128,47,192,63,128,15,240,0,0,15,224,63,128,63,192,47,224,0,0,47,224,127,64,127,208,63,192,0,0,63,192,255,0,191,240,255,64,0,0,191,130,253,0,255,241,254,0,0,0,255,3,252,1,255,253,252,0,0,2,255,0,116,3,255,254,0,0,0,3,253,0,0,15,248,255,64,0,0,11,252,0,0,63,240,127,208,0,0,15,244,0,1,255,208,47,248,0,0,63,240,0,47,255,64,11,255,128,0,127,208,27,255,253,0,2,255,254,64,47,128,31,255,224,0,0,127,255,0,7,0,11,254,0,0,0,11,253,0,0,0,3,144,0,0,0,0,40,0, + // 0x6df7 混 + 247,109,37,37,114,40,2,252,3,224,0,0,0,0,0,0,0,0,15,253,0,255,255,255,255,255,208,0,15,255,192,255,255,255,255,255,208,0,1,255,240,255,255,255,255,255,208,0,0,47,240,254,0,0,0,15,208,0,0,7,192,254,0,0,0,15,208,0,0,0,64,254,0,0,0,15,208,0,0,0,0,255,255,255,255,255,208,0,0,0,0,255,255,255,255,255,208,0,0,0,0,255,255,255,255,255,208,0,20,0,0,254,0,0,0,15,208,0,127,64,0,254,0,0,0,15,208,0,255,240,0,254,0,0,0,15,208,0,191,254,0,255,255,255,255,255,208,0,11,255,0,255,255,255,255,255,208,0,0,254,0,255,255,255,255,255,208,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,0,1,253,0,0,0,0,0,0,191,0,1,253,0,0,0,0,0,0,191,0,1,253,0,0,0,0,7,0,191,0,1,253,1,240,0,0,11,192,191,85,81,253,11,252,0,0,15,224,191,255,249,253,191,253,0,0,47,208,191,255,249,255,255,224,0,0,63,192,191,255,249,255,254,0,0,0,191,64,191,0,1,255,208,0,0,0,255,0,191,0,1,253,0,0,0,1,254,0,191,0,1,253,0,16,0,3,252,0,191,0,1,253,0,46,0,11,248,0,191,1,101,253,0,47,64,15,240,0,191,255,249,253,0,63,64,47,240,47,255,255,248,254,85,127,0,63,208,63,255,255,228,255,255,255,0,47,192,63,255,148,0,191,255,253,0,7,64,26,64,0,0,47,255,244,0,0,0,0,0,0,0,0,0,0,0, + // 0x6e05 清 + 5,110,37,38,124,40,2,252,0,0,0,0,0,47,192,0,0,0,3,208,0,0,0,47,192,0,0,0,11,253,0,170,170,191,234,170,168,0,15,255,128,255,255,255,255,255,252,0,2,255,240,255,255,255,255,255,252,0,0,47,244,0,0,47,192,0,0,0,0,3,224,0,0,47,192,0,0,0,0,0,64,42,170,191,234,170,160,0,0,0,0,63,255,255,255,255,240,0,0,0,0,63,255,255,255,255,240,0,0,0,0,0,0,47,192,0,0,0,36,0,0,0,0,47,192,0,0,0,127,64,6,170,170,191,234,170,170,64,255,244,7,255,255,255,255,255,255,64,127,255,7,255,255,255,255,255,255,64,11,255,128,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,45,0,11,255,255,255,255,208,0,0,0,0,15,255,255,255,255,208,0,0,0,0,15,255,255,255,255,208,0,0,0,0,15,224,0,0,15,208,0,0,0,0,15,224,0,0,15,208,0,0,2,192,15,229,85,85,111,208,0,0,3,240,15,255,255,255,255,208,0,0,11,244,15,255,255,255,255,208,0,0,15,240,15,224,0,0,15,208,0,0,47,208,15,224,0,0,15,208,0,0,63,192,15,224,0,0,15,208,0,0,191,64,15,255,255,255,255,208,0,0,255,0,15,255,255,255,255,208,0,3,253,0,15,250,170,170,175,208,0,7,252,0,15,224,0,0,15,208,0,15,244,0,15,224,0,0,15,208,0,47,240,0,15,224,0,0,15,208,0,63,208,0,15,224,0,63,255,192,0,15,128,0,15,224,0,47,255,192,0,2,0,0,15,224,0,31,254,0,0,0,0,0,5,64,0,0,0,0,0, + // 0x6e29 温 + 41,110,37,37,114,40,2,252,2,224,0,0,0,0,0,0,0,0,7,254,0,63,255,255,255,255,128,0,11,255,208,63,255,255,255,255,128,0,0,191,252,63,255,255,255,255,128,0,0,15,248,63,128,0,0,63,128,0,0,1,240,63,128,0,0,63,128,0,0,0,0,63,128,0,0,63,128,0,0,0,0,63,255,255,255,255,128,0,0,0,0,63,255,255,255,255,128,0,0,0,0,63,255,255,255,255,128,0,16,0,0,63,128,0,0,63,128,0,61,0,0,63,128,0,0,63,128,0,191,208,0,63,128,0,0,63,128,0,255,248,0,63,128,0,0,63,128,0,47,255,64,63,255,255,255,255,128,0,3,255,128,63,255,255,255,255,128,0,0,127,0,63,255,255,255,255,128,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,240,0,0,3,64,255,255,255,255,255,240,0,0,7,224,255,255,255,255,255,240,0,0,15,240,252,11,192,188,11,240,0,0,31,208,252,11,192,188,11,240,0,0,63,192,252,11,192,188,11,240,0,0,127,128,252,11,192,188,11,240,0,0,255,0,252,11,192,188,11,240,0,2,254,0,252,11,192,188,11,240,0,3,252,0,252,11,192,188,11,240,0,11,248,0,252,11,192,188,11,240,0,15,240,0,252,11,192,188,11,240,0,63,224,127,255,255,255,255,255,255,64,127,192,127,255,255,255,255,255,255,64,31,128,127,255,255,255,255,255,255,64,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6e38 游 + 56,110,37,39,134,40,2,251,0,0,0,15,208,0,37,0,0,0,7,128,0,15,208,0,127,64,0,0,15,248,0,15,208,0,191,0,0,0,47,255,0,15,208,0,191,0,0,0,7,255,192,15,208,0,255,0,0,0,0,191,192,15,208,0,255,170,170,0,0,47,170,175,234,162,255,255,255,64,0,6,191,255,255,247,255,255,255,64,0,0,191,255,255,251,255,255,255,64,0,0,191,255,255,255,240,0,0,0,0,0,1,252,0,15,224,0,0,0,0,0,1,252,0,63,208,0,0,0,62,0,1,252,0,63,192,0,16,0,255,224,1,252,0,11,255,255,253,0,191,253,1,252,0,1,255,255,255,0,15,255,1,253,85,64,255,255,253,0,1,252,1,255,255,224,0,7,248,0,0,52,2,255,255,224,0,15,240,0,0,0,2,255,255,208,0,63,208,0,0,0,2,248,15,208,1,255,64,0,0,0,3,248,15,208,1,254,0,0,0,0,3,244,15,208,1,252,0,0,0,0,3,244,15,213,86,253,85,0,0,120,3,240,15,223,255,255,255,64,0,191,7,240,15,223,255,255,255,64,0,254,11,240,15,207,255,255,255,64,1,253,11,224,15,192,1,252,0,0,2,252,15,208,15,192,1,252,0,0,3,248,15,192,31,192,1,252,0,0,7,244,47,192,31,192,1,252,0,0,15,240,63,128,31,192,1,252,0,0,15,224,127,0,47,192,1,252,0,0,47,208,255,0,47,192,1,252,0,0,63,193,253,0,63,128,1,252,0,0,127,131,252,16,191,65,86,252,0,0,191,11,244,63,255,3,255,252,0,0,31,2,224,63,254,2,255,248,0,0,0,0,128,47,248,1,255,144,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6e90 源 + 144,110,37,39,134,40,2,251,1,0,0,0,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,15,254,2,255,255,255,255,255,255,0,11,255,194,255,255,255,255,255,255,0,0,255,242,255,255,255,255,255,255,0,0,47,226,253,85,86,255,85,85,0,0,7,194,252,0,1,254,0,0,0,0,1,2,252,0,2,253,0,0,0,0,0,2,252,0,2,252,0,0,0,0,0,2,252,0,3,252,0,0,0,0,0,2,252,63,255,255,255,248,0,0,0,2,252,63,255,255,255,248,0,61,0,2,252,63,255,255,255,248,0,255,208,2,252,63,64,0,3,248,0,255,252,2,252,63,64,0,3,248,0,31,255,2,252,63,170,170,171,248,0,1,253,2,252,63,255,255,255,248,0,0,56,2,252,63,255,255,255,248,0,0,0,2,252,63,64,0,3,248,0,0,0,2,252,63,64,0,3,248,0,0,0,3,252,63,64,0,3,248,0,0,0,3,248,63,234,170,171,248,0,0,8,3,248,63,255,255,255,248,0,0,31,3,244,63,255,255,255,248,0,0,63,199,244,0,0,253,0,0,0,0,127,135,240,0,0,253,0,0,0,0,191,11,240,14,64,253,11,192,0,0,255,15,240,47,192,253,31,224,0,2,253,15,224,63,128,253,15,240,0,3,252,31,208,191,0,253,7,252,0,7,248,47,192,254,0,253,2,253,0,15,240,63,131,252,0,253,0,255,0,31,224,191,75,248,0,253,0,191,64,63,208,255,15,240,0,253,0,127,128,127,194,254,7,208,1,253,0,61,0,127,67,252,0,65,255,252,0,0,0,11,1,248,0,0,255,252,0,0,0,0,0,32,0,0,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6ea2 溢 + 162,110,37,37,114,40,2,253,1,0,0,0,0,0,0,0,0,0,7,224,0,0,3,255,255,192,0,0,31,254,0,1,67,255,255,208,0,0,11,255,192,3,247,255,255,240,0,0,1,255,240,11,240,0,11,244,0,0,0,47,208,31,240,0,3,252,0,0,0,11,128,63,208,0,2,255,0,0,0,2,0,191,128,0,0,255,192,0,0,0,1,255,0,0,0,127,244,0,0,0,7,254,255,255,255,223,254,0,0,0,31,249,255,255,255,199,253,0,0,0,11,225,255,255,255,192,244,0,61,0,2,128,0,0,0,0,0,0,191,208,0,0,0,0,0,0,0,0,255,252,0,0,3,255,255,224,0,0,31,255,0,1,3,255,255,240,0,0,2,253,0,7,247,255,255,244,0,0,0,56,0,15,240,0,3,252,0,0,0,0,0,47,224,0,1,254,0,0,0,0,0,127,192,0,0,255,64,0,0,0,0,255,64,0,0,127,192,0,0,0,3,254,0,0,0,31,244,0,0,0,15,252,0,0,0,11,254,0,0,45,63,255,255,255,255,255,255,64,0,63,175,255,255,255,255,255,254,0,0,127,75,191,255,255,255,255,216,0,0,255,0,126,11,192,248,47,128,0,1,254,0,126,11,192,248,31,128,0,2,253,0,126,11,192,248,31,128,0,3,252,0,126,11,192,248,31,128,0,11,244,0,126,11,192,248,31,128,0,15,240,0,126,11,192,248,31,128,0,31,224,0,126,11,192,248,31,128,0,63,192,127,255,255,255,255,255,255,64,127,192,127,255,255,255,255,255,255,64,47,64,127,255,255,255,255,255,255,64,2,0,21,85,85,85,85,85,85,0, + // 0x6ed1 滑 + 209,110,36,37,77,40,2,252,3,208,0,0,0,0,0,0,0,11,253,0,15,255,255,255,255,0,15,255,128,15,255,255,255,255,0,1,255,244,15,255,255,255,255,0,0,47,248,15,224,0,0,127,0,0,3,240,15,224,0,0,127,0,0,0,64,15,224,63,255,255,0,0,0,0,15,224,63,255,255,0,0,0,0,15,224,63,85,191,0,0,0,0,15,224,63,0,127,0,0,0,0,15,224,63,0,127,0,61,0,0,15,224,63,0,127,0,191,208,11,255,255,255,255,255,255,255,252,11,255,255,255,255,255,255,47,255,75,255,255,255,255,255,255,2,255,75,224,0,0,0,0,191,0,46,11,224,0,0,0,0,191,0,4,11,239,255,255,255,255,191,0,0,6,159,255,255,255,255,106,0,0,0,15,255,255,255,255,0,0,0,0,15,224,0,0,127,0,0,2,128,15,224,0,0,127,0,0,3,240,15,250,170,170,255,0,0,11,244,15,255,255,255,255,0,0,15,240,15,255,255,255,255,0,0,47,208,15,224,0,0,127,0,0,63,192,15,224,0,0,127,0,0,191,64,15,250,170,170,255,0,1,255,0,15,255,255,255,255,0,3,253,0,15,255,255,255,255,0,7,252,0,15,224,0,0,127,0,15,244,0,15,224,0,0,127,0,31,240,0,15,224,0,0,127,0,63,208,0,15,224,0,0,127,0,47,192,0,15,224,0,255,255,0,7,64,0,15,224,0,191,254,0,0,0,0,15,208,0,127,228,0, + // 0x6f0f 漏 + 15,111,36,37,77,40,2,252,7,64,0,0,0,0,0,0,0,15,240,3,255,255,255,255,255,248,47,254,3,255,255,255,255,255,248,7,255,211,255,255,255,255,255,248,0,191,195,240,0,0,0,3,248,0,31,67,240,0,0,0,3,248,0,1,3,240,0,0,0,3,248,0,0,3,255,255,255,255,255,248,0,0,3,255,255,255,255,255,248,0,0,3,255,255,255,255,255,248,0,0,3,240,0,0,0,0,0,61,0,3,240,0,0,0,0,0,191,208,3,240,0,0,0,0,0,255,248,3,255,255,255,255,255,254,47,255,67,255,255,255,255,255,254,2,255,3,255,255,255,255,255,254,0,124,7,240,0,3,240,0,0,0,0,7,240,0,3,240,0,0,0,0,7,255,255,255,255,255,252,0,0,7,255,255,255,255,255,252,0,0,11,255,255,255,255,255,252,0,52,11,255,192,3,240,0,252,0,126,11,239,193,3,241,64,252,0,191,15,223,207,131,243,224,252,0,255,15,223,223,243,243,248,252,1,253,31,207,195,247,240,189,252,2,252,31,207,192,179,240,40,252,3,252,47,207,192,3,240,0,252,7,244,63,143,197,3,243,64,252,15,240,63,79,223,131,251,224,252,31,224,191,15,223,227,243,252,252,47,208,254,15,195,247,240,188,252,63,193,253,15,192,243,240,32,252,191,131,252,15,192,3,240,0,252,255,3,244,15,192,3,240,42,252,30,0,240,15,192,3,240,63,252,0,0,16,15,192,2,240,63,224, + // 0x6fc0 激 + 192,111,37,38,124,40,2,252,1,0,0,6,144,0,25,64,0,0,7,208,0,11,244,0,47,192,0,0,31,248,0,15,240,0,63,128,0,0,31,255,64,15,224,0,63,128,0,0,2,255,218,175,250,164,63,64,0,0,0,63,207,255,255,244,127,0,0,0,0,11,15,255,255,244,127,0,0,0,0,0,15,192,2,244,191,0,0,0,0,0,15,192,2,244,255,255,255,64,0,0,15,234,171,244,255,255,255,64,0,0,15,255,255,245,255,255,255,64,40,0,15,255,255,246,253,87,249,0,127,64,15,192,2,247,252,3,244,0,255,244,15,192,2,255,252,3,244,0,127,253,15,192,2,255,252,3,240,0,7,254,15,255,255,255,253,7,240,0,0,252,15,255,255,255,254,7,240,0,0,32,10,175,250,191,190,11,224,0,0,0,0,11,224,15,47,11,224,0,0,0,0,11,224,1,31,15,208,0,0,0,191,255,255,255,31,143,192,0,0,0,191,255,255,255,15,223,192,0,0,36,191,255,255,255,15,239,128,0,0,62,0,190,0,0,7,255,64,0,0,63,64,126,0,0,3,255,0,0,0,191,0,190,0,0,3,254,0,0,0,255,0,191,255,240,2,253,0,0,1,253,0,191,255,240,2,252,0,0,2,252,0,255,255,240,3,254,0,0,3,252,1,252,3,240,11,255,64,0,11,244,2,252,7,240,31,255,192,0,15,240,3,248,7,240,63,223,224,0,31,224,15,240,7,240,255,11,248,0,63,192,47,224,11,227,253,3,254,0,127,192,191,203,255,239,248,1,255,128,127,66,255,3,255,239,224,0,127,0,11,0,252,3,255,75,128,0,28,0,0,0,32,0,0,1,0,0,0,0, + // 0x706f 灯 + 111,112,37,39,134,40,2,251,0,2,160,0,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,0,7,240,0,170,170,170,170,170,0,0,7,240,0,255,255,255,255,255,64,0,7,240,0,255,255,255,255,255,64,0,7,240,0,255,255,255,255,255,64,0,7,240,0,0,0,15,240,0,0,4,7,240,57,0,0,15,240,0,0,31,71,240,127,0,0,15,240,0,0,31,71,240,189,0,0,15,240,0,0,47,71,240,252,0,0,15,240,0,0,47,71,241,248,0,0,15,240,0,0,63,7,242,244,0,0,15,240,0,0,63,11,243,240,0,0,15,240,0,0,63,11,247,208,0,0,15,240,0,0,126,11,247,192,0,0,15,240,0,0,190,11,240,0,0,0,15,240,0,0,253,11,240,0,0,0,15,240,0,0,28,11,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,240,0,0,0,15,224,0,0,0,15,240,0,0,0,15,224,0,0,0,15,240,0,0,0,31,240,0,0,0,15,240,0,0,0,31,252,0,0,0,15,240,0,0,0,47,255,0,0,0,15,240,0,0,0,63,255,192,0,0,15,240,0,0,0,127,175,240,0,0,15,240,0,0,0,191,79,248,0,0,15,240,0,0,0,255,3,254,0,0,15,240,0,0,2,254,1,254,0,0,15,240,0,0,7,252,0,124,0,0,15,240,0,0,15,248,0,32,0,0,15,240,0,0,47,240,0,0,0,0,31,224,0,0,191,208,0,0,7,255,255,224,0,0,255,128,0,0,3,255,255,208,0,0,63,0,0,0,2,255,255,128,0,0,12,0,0,0,1,255,232,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x70b9 点 + 185,112,36,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,255,255,255,255,244,0,0,0,0,255,255,255,255,244,0,0,0,0,255,255,255,255,244,0,0,0,0,255,85,85,85,80,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,21,85,86,255,85,85,84,0,0,127,255,255,255,255,255,253,0,0,127,255,255,255,255,255,253,0,0,127,255,255,255,255,255,253,0,0,127,0,0,0,0,1,253,0,0,127,0,0,0,0,1,253,0,0,127,0,0,0,0,1,253,0,0,127,0,0,0,0,1,253,0,0,127,0,0,0,0,1,253,0,0,127,0,0,0,0,1,253,0,0,127,85,85,85,85,86,253,0,0,127,255,255,255,255,255,253,0,0,127,255,255,255,255,255,253,0,0,127,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,0,0,0,4,0,109,0,0,255,1,252,1,252,0,255,0,1,254,2,252,0,254,0,127,192,3,252,1,253,0,191,0,63,208,7,248,0,253,0,127,128,15,240,15,240,0,254,0,63,192,11,248,63,224,0,254,0,47,208,3,253,255,192,0,255,0,15,224,1,255,127,0,0,255,0,15,208,0,249,5,0,0,80,0,0,0,0,64, + // 0x70ed 热 + 237,112,37,39,134,40,2,251,0,6,160,0,0,190,0,0,0,0,0,11,224,0,0,254,0,0,0,0,0,11,224,0,0,254,0,0,0,0,0,11,224,0,0,254,0,0,0,0,0,11,224,0,0,254,0,0,0,0,0,11,224,0,0,254,0,0,0,0,127,255,255,243,255,255,255,254,0,0,127,255,255,243,255,255,255,254,0,0,127,255,255,243,255,255,255,254,0,0,21,95,245,80,0,254,0,254,0,0,0,11,224,0,0,253,0,253,0,0,0,11,224,0,0,252,0,253,0,0,0,11,224,0,1,252,0,253,0,0,0,11,246,244,1,252,0,253,0,0,0,11,255,244,226,252,0,253,0,0,6,255,255,251,255,248,0,253,0,0,255,255,255,147,255,248,0,253,0,0,255,255,240,0,191,248,0,253,0,0,191,239,224,0,15,255,64,253,0,0,100,11,224,0,15,255,224,253,0,0,0,11,224,0,47,255,252,190,4,0,0,11,224,0,127,203,252,190,14,0,0,11,224,0,255,65,244,190,15,128,0,15,224,3,254,0,32,127,31,128,15,255,224,31,252,0,0,63,175,64,11,255,208,63,240,0,0,47,255,0,7,255,64,15,192,0,0,15,254,0,1,64,0,6,0,0,0,3,248,0,0,16,0,0,0,0,0,8,0,0,0,255,0,104,0,173,0,191,0,0,1,254,1,252,0,254,0,191,128,0,3,252,0,253,0,191,0,63,208,0,7,248,0,253,0,127,64,31,240,0,15,240,0,254,0,63,128,11,248,0,63,224,0,255,0,63,192,3,252,0,191,192,0,255,0,47,208,2,255,0,191,64,0,191,0,31,208,0,254,0,10,0,0,80,0,4,0,0,96,0,0,0,0,0,0,0,0,0,0,0, + // 0x7247 片 + 71,114,34,38,86,40,2,252,0,0,0,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,255,255,255,255,255,255,224,0,63,255,255,255,255,255,255,240,0,63,255,255,255,255,255,255,240,0,63,255,255,255,255,255,255,240,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,191,255,255,255,255,255,64,0,0,191,255,255,255,255,255,64,0,0,255,0,0,0,0,191,64,0,0,255,0,0,0,0,191,64,0,0,255,0,0,0,0,191,64,0,2,254,0,0,0,0,191,64,0,3,253,0,0,0,0,191,64,0,7,252,0,0,0,0,191,64,0,11,248,0,0,0,0,191,64,0,15,244,0,0,0,0,191,64,0,63,240,0,0,0,0,191,64,0,191,208,0,0,0,0,191,64,0,255,192,0,0,0,0,191,64,0,191,0,0,0,0,0,191,64,0,45,0,0,0,0,0,191,64,0,8,0,0,0,0,0,191,64,0, + // 0x7269 物 + 105,114,37,38,124,40,1,252,0,0,252,0,0,148,0,0,0,0,0,0,252,0,1,253,0,0,0,0,1,0,252,0,2,252,0,0,0,0,7,240,252,0,3,248,0,0,0,0,11,224,252,0,3,244,0,0,0,0,11,224,252,0,7,240,0,0,0,0,15,208,252,0,11,240,0,0,0,0,15,208,252,0,15,255,255,255,255,192,15,234,254,164,31,255,255,255,255,192,15,255,255,252,63,255,255,255,255,192,31,255,255,252,127,151,249,127,191,192,47,255,255,252,255,3,240,63,47,192,47,64,252,1,253,7,224,127,47,192,63,0,252,3,252,15,208,190,47,192,127,0,252,15,244,15,192,253,63,128,190,0,252,31,240,47,193,252,63,128,45,0,252,11,192,63,66,252,63,128,4,0,252,2,64,127,3,248,63,128,0,0,252,5,0,254,3,244,63,64,0,0,254,254,1,252,11,240,63,64,0,1,255,254,3,248,15,224,63,64,0,127,255,254,11,240,31,192,63,64,47,255,255,144,31,224,47,192,127,0,63,255,252,0,63,192,63,64,127,0,63,250,252,0,255,64,191,0,127,0,46,64,252,3,254,0,254,0,191,0,0,0,252,11,252,2,252,0,191,0,0,0,252,2,240,3,248,0,255,0,0,0,252,0,64,15,240,0,254,0,0,0,252,0,0,31,224,0,254,0,0,0,252,0,0,63,192,1,253,0,0,0,252,0,0,255,64,2,252,0,0,0,252,0,3,254,0,3,252,0,0,0,252,0,15,252,0,11,252,0,0,0,252,0,63,240,31,255,244,0,0,0,252,0,47,208,15,255,240,0,0,0,252,0,7,0,15,255,192,0,0,0,252,0,0,0,6,164,0,0, + // 0x7279 特 + 121,114,38,38,124,40,1,252,0,0,252,0,0,0,254,0,0,0,0,0,252,0,0,0,255,0,0,0,6,144,252,0,0,0,255,0,0,0,7,240,252,0,0,0,255,0,0,0,11,224,252,0,127,255,255,255,253,0,11,208,252,0,127,255,255,255,253,0,15,208,252,0,127,255,255,255,253,0,15,192,252,0,21,85,255,85,84,0,15,255,255,252,0,0,255,0,0,0,15,255,255,252,0,0,255,0,0,0,31,255,255,252,0,0,255,0,0,0,47,170,254,164,0,0,255,0,0,0,63,64,252,11,255,255,255,255,255,208,63,0,252,11,255,255,255,255,255,208,191,0,252,11,255,255,255,255,255,208,189,0,252,5,85,85,85,127,213,64,28,0,252,0,0,0,0,63,128,0,0,0,252,0,0,0,0,63,128,0,0,0,253,126,0,0,0,63,128,0,0,1,255,254,0,0,0,63,128,0,0,27,255,255,255,255,255,255,255,192,27,255,255,247,255,255,255,255,255,192,127,255,254,3,255,255,255,255,255,192,63,255,252,1,85,85,85,127,213,64,63,144,252,0,2,0,0,63,128,0,20,0,252,0,47,192,0,63,128,0,0,0,252,0,47,224,0,63,128,0,0,0,252,0,15,248,0,63,128,0,0,0,252,0,3,253,0,63,128,0,0,0,252,0,1,255,0,63,128,0,0,0,252,0,0,191,64,63,128,0,0,0,252,0,0,60,0,63,128,0,0,0,252,0,0,0,0,63,128,0,0,0,252,0,0,0,0,63,128,0,0,0,252,0,0,2,255,255,128,0,0,0,252,0,0,1,255,255,64,0,0,0,252,0,0,0,255,254,0,0,0,0,168,0,0,0,170,144,0,0, + // 0x7387 率 + 135,115,36,38,86,40,2,252,0,0,0,0,169,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,5,85,85,85,255,85,85,85,80,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,0,0,0,7,244,0,0,0,0,1,0,0,15,224,0,0,7,64,11,224,0,47,192,36,0,31,240,31,252,2,127,0,191,0,127,208,7,255,75,253,1,253,2,255,64,0,191,239,252,7,244,15,252,0,0,31,210,255,79,224,31,224,0,0,7,0,127,255,128,1,64,0,0,0,0,31,255,28,0,0,0,0,0,0,3,252,191,11,64,0,0,1,240,7,240,63,191,240,0,0,31,244,31,192,31,255,254,0,6,255,248,127,255,255,242,255,208,191,255,175,255,255,255,244,127,248,127,248,31,255,255,234,252,11,253,63,64,30,149,64,0,252,1,244,4,0,0,0,255,0,80,0,16,0,0,0,0,255,0,0,0,0,85,85,85,85,255,85,85,85,85,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0, + // 0x73af 环 + 175,115,37,36,104,40,1,252,0,0,0,2,170,170,170,170,170,64,127,255,255,199,255,255,255,255,255,192,127,255,255,199,255,255,255,255,255,192,127,255,255,199,255,255,255,255,255,192,21,127,213,64,0,0,255,0,0,0,0,63,128,0,0,1,255,0,0,0,0,63,128,0,0,2,253,0,0,0,0,63,128,0,0,3,252,0,0,0,0,63,128,0,0,11,248,0,0,0,0,63,128,0,0,15,244,0,0,0,0,63,128,0,0,47,244,0,0,0,0,63,128,0,0,63,244,208,0,0,21,127,213,0,0,191,255,240,0,0,47,255,255,0,0,255,255,252,0,0,47,255,255,0,3,255,246,255,0,0,47,255,255,0,11,255,244,255,128,0,0,63,128,0,31,251,244,63,208,0,0,63,128,0,63,231,244,31,240,0,0,63,128,0,255,195,244,11,252,0,0,63,128,3,255,67,244,3,254,0,0,63,128,15,254,3,244,1,255,64,0,63,128,47,248,3,244,0,191,128,0,63,128,11,224,3,244,0,62,0,0,63,128,3,192,3,244,0,20,0,0,63,139,128,0,3,244,0,0,0,0,63,255,128,0,3,244,0,0,0,0,127,255,192,0,3,244,0,0,0,31,255,255,64,0,3,244,0,0,0,127,255,224,0,0,3,244,0,0,0,63,249,0,0,0,3,244,0,0,0,62,64,0,0,0,3,244,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,2,164,0,0,0, + // 0x7528 用 + 40,117,35,35,59,40,1,252,0,63,255,255,255,255,255,255,248,0,63,255,255,255,255,255,255,248,0,63,255,255,255,255,255,255,248,0,63,234,170,191,234,170,171,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,213,85,127,229,85,91,248,0,63,255,255,255,255,255,255,248,0,63,255,255,255,255,255,255,248,0,63,255,255,255,255,255,255,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,255,255,255,255,255,255,248,0,63,255,255,255,255,255,255,248,0,127,255,255,255,255,255,255,248,0,127,170,170,191,234,170,171,248,0,191,0,0,47,192,0,3,248,0,255,0,0,47,192,0,3,248,0,254,0,0,47,192,0,3,248,1,253,0,0,47,192,0,3,248,3,252,0,0,47,192,0,3,248,3,252,0,0,47,192,0,3,248,11,244,0,0,47,192,0,3,248,15,240,0,0,47,192,0,7,248,63,224,0,0,47,192,255,255,244,127,192,0,0,47,192,127,255,240,31,64,0,0,47,192,63,255,208,6,0,0,0,5,64,42,84,0, + // 0x7535 电 + 53,117,34,37,77,40,5,253,0,0,0,42,64,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,127,128,0,0,0,0,255,255,255,255,255,255,255,224,0,255,255,255,255,255,255,255,224,0,255,255,255,255,255,255,255,224,0,255,170,170,191,234,170,175,224,0,255,0,0,127,128,0,15,224,0,255,0,0,127,128,0,15,224,0,255,0,0,127,128,0,15,224,0,255,0,0,127,128,0,15,224,0,255,0,0,127,128,0,15,224,0,255,255,255,255,255,255,255,224,0,255,255,255,255,255,255,255,224,0,255,255,255,255,255,255,255,224,0,255,85,85,191,213,85,111,224,0,255,0,0,127,128,0,15,224,0,255,0,0,127,128,0,15,224,0,255,0,0,127,128,0,15,224,0,255,0,0,127,128,0,15,224,0,255,170,170,191,234,170,175,224,0,255,255,255,255,255,255,255,224,0,255,255,255,255,255,255,255,224,0,255,255,255,255,255,255,255,224,0,255,0,0,127,128,0,0,8,0,255,0,0,127,128,0,0,31,128,85,0,0,127,128,0,0,31,208,0,0,0,127,128,0,0,47,208,0,0,0,127,128,0,0,63,192,0,0,0,63,192,0,0,127,192,0,0,0,63,254,170,171,255,128,0,0,0,47,255,255,255,255,0,0,0,0,15,255,255,255,254,0,0,0,0,2,255,255,255,228,0, + // 0x7565 略 + 101,117,36,38,86,40,3,252,0,0,0,0,0,121,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,255,255,255,224,3,252,0,0,0,255,255,255,224,7,255,255,255,128,255,255,255,224,15,255,255,255,224,252,31,7,224,63,255,255,255,192,252,31,7,224,191,192,0,127,128,252,31,7,226,255,192,0,255,0,252,31,7,235,255,240,2,254,0,252,31,7,255,255,248,3,252,0,252,31,7,255,243,253,15,244,0,252,31,7,255,193,255,127,224,0,252,31,7,235,0,191,255,192,0,255,255,255,224,0,47,255,0,0,255,255,255,224,0,15,253,0,0,255,255,255,224,0,47,255,64,0,252,47,7,224,0,255,255,224,0,252,31,7,224,7,255,191,252,0,252,31,7,224,47,253,15,255,128,252,31,7,226,255,240,2,255,248,252,31,7,255,255,128,0,127,255,252,31,7,255,253,0,0,15,252,252,31,7,239,255,255,255,255,244,252,31,7,229,255,255,255,255,192,252,31,7,224,255,255,255,255,192,255,255,255,224,255,85,85,111,192,255,255,255,224,254,0,0,47,192,255,255,255,224,254,0,0,47,192,252,0,0,0,254,0,0,47,192,252,0,0,0,254,0,0,47,192,252,0,0,0,254,0,0,47,192,252,0,0,0,254,0,0,47,192,0,0,0,0,255,255,255,255,192,0,0,0,0,255,255,255,255,192,0,0,0,0,255,255,255,255,192,0,0,0,0,255,85,85,111,192,0,0,0,0,169,0,0,26,128, + // 0x767d 白 + 125,118,30,38,48,40,5,252,0,0,0,249,64,0,0,0,0,0,0,255,192,0,0,0,0,0,1,255,64,0,0,0,0,0,2,255,0,0,0,0,0,0,3,253,0,0,0,0,0,0,7,252,0,0,0,0,106,170,175,254,170,170,170,144,127,255,255,255,255,255,255,208,127,255,255,255,255,255,255,208,127,255,255,255,255,255,255,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,255,255,255,255,255,255,208,127,255,255,255,255,255,255,208,127,255,255,255,255,255,255,208,127,234,170,170,170,170,191,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,234,170,170,170,170,191,208,127,255,255,255,255,255,255,208,127,255,255,255,255,255,255,208,127,255,255,255,255,255,255,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,0,0,0,0,0,26,144, + // 0x7684 的 + 132,118,34,38,86,40,3,252,0,10,144,0,0,100,0,0,0,0,15,240,0,0,191,0,0,0,0,15,240,0,0,255,0,0,0,0,31,208,0,1,253,0,0,0,0,47,192,0,2,252,0,0,0,0,63,128,0,3,252,0,0,0,0,127,128,0,7,253,85,85,80,191,255,255,248,11,255,255,255,240,191,255,255,248,15,255,255,255,240,191,255,255,248,31,255,255,255,240,191,0,2,248,63,192,0,7,240,191,0,2,248,127,128,0,7,240,191,0,2,248,255,0,0,7,240,191,0,2,250,254,0,0,7,240,191,0,2,255,252,0,0,7,240,191,0,2,249,244,0,0,11,240,191,0,2,248,48,112,0,11,240,191,0,2,248,2,248,0,11,240,191,255,255,248,2,253,0,11,240,191,255,255,248,0,255,0,11,224,191,255,255,248,0,127,192,15,224,191,0,3,248,0,47,224,15,224,191,0,2,248,0,15,240,15,224,191,0,2,248,0,7,252,15,224,191,0,2,248,0,3,253,15,208,191,0,2,248,0,1,253,15,208,191,0,2,248,0,0,224,15,208,191,0,2,248,0,0,0,31,208,191,0,2,248,0,0,0,31,192,191,0,2,248,0,0,0,47,192,191,255,255,248,0,0,0,47,192,191,255,255,248,0,0,0,63,192,191,255,255,248,0,0,0,63,128,191,85,85,80,0,0,0,255,64,191,0,0,0,0,63,255,255,0,191,0,0,0,0,31,255,253,0,105,0,0,0,0,15,255,244,0,0,0,0,0,0,5,85,0,0, + // 0x76d1 监 + 209,118,36,37,77,40,2,253,0,0,6,160,0,5,0,0,0,0,0,7,240,0,15,224,0,0,3,244,7,240,0,31,208,0,0,3,244,7,240,0,47,192,0,0,3,244,7,240,0,63,192,0,0,3,244,7,240,0,127,128,0,0,3,244,7,240,0,191,255,255,254,3,244,7,240,0,255,255,255,254,3,244,7,240,1,255,255,255,254,3,244,7,240,3,253,85,85,85,3,244,7,240,11,244,0,0,0,3,244,7,240,15,240,4,0,0,3,244,7,240,47,208,125,0,0,3,244,7,240,127,193,255,128,0,3,244,7,240,255,64,127,240,0,3,244,7,241,254,0,31,252,0,3,244,7,240,124,0,3,255,64,3,244,7,240,0,0,0,255,192,2,164,7,240,0,0,0,63,192,0,0,7,240,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,191,0,191,0,191,0,0,191,0,190,0,190,0,191,0,0,191,0,190,0,190,0,191,0,0,191,0,190,0,190,0,191,0,0,191,0,190,0,190,0,191,0,0,191,0,190,0,190,0,191,0,0,191,0,190,0,190,0,191,0,0,191,0,190,0,190,0,191,0,85,255,85,255,85,255,85,191,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x76f4 直 + 244,118,36,38,86,40,2,252,0,0,0,0,127,192,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,127,128,0,0,0,21,85,85,85,191,213,85,85,84,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,15,255,255,255,255,252,0,7,240,15,255,255,255,255,252,0,7,240,15,250,170,170,171,252,0,7,240,15,224,0,0,1,252,0,7,240,15,224,0,0,1,252,0,7,240,15,250,170,170,171,252,0,7,240,15,255,255,255,255,252,0,7,240,15,255,255,255,255,252,0,7,240,15,224,0,0,1,252,0,7,240,15,224,0,0,1,252,0,7,240,15,224,0,0,1,252,0,7,240,15,255,255,255,255,252,0,7,240,15,255,255,255,255,252,0,7,240,15,250,170,170,170,252,0,7,240,15,224,0,0,1,252,0,7,240,15,224,0,0,1,252,0,7,240,15,250,170,170,171,252,0,7,240,15,255,255,255,255,252,0,7,240,15,255,255,255,255,252,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,249,85,85,85,85,85,85,85,7,255,255,255,255,255,255,255,255,7,255,255,255,255,255,255,255,255,7,255,255,255,255,255,255,255,255,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0, + // 0x7701 省 + 1,119,36,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,160,0,255,0,11,64,0,0,2,255,0,255,0,63,224,0,0,7,253,0,255,0,31,252,0,0,31,248,0,255,0,7,255,0,0,127,224,0,255,0,0,255,208,2,255,192,0,255,0,0,63,244,11,255,0,0,255,0,126,15,253,127,248,0,0,255,1,255,131,255,63,224,7,255,254,11,254,0,248,15,64,3,255,253,127,248,0,16,0,0,2,255,231,255,208,0,0,0,0,0,0,127,255,0,0,0,0,0,0,27,255,244,0,0,0,0,0,6,255,255,128,0,0,0,0,22,255,255,244,0,0,0,0,107,255,255,255,255,255,255,252,0,255,255,255,255,255,255,255,252,0,63,255,255,255,255,255,255,252,0,46,145,252,0,0,0,2,252,0,0,1,252,0,0,0,2,252,0,0,1,254,170,170,170,171,252,0,0,1,255,255,255,255,255,252,0,0,1,255,255,255,255,255,252,0,0,1,252,0,0,0,2,252,0,0,1,252,0,0,0,2,252,0,0,1,252,0,0,0,2,252,0,0,1,255,255,255,255,255,252,0,0,1,255,255,255,255,255,252,0,0,1,254,170,170,170,171,252,0,0,1,252,0,0,0,2,252,0,0,1,252,0,0,0,2,252,0,0,1,255,255,255,255,255,252,0,0,1,255,255,255,255,255,252,0,0,1,255,255,255,255,255,252,0,0,1,252,0,0,0,2,252,0,0,0,168,0,0,0,0,84,0, + // 0x7720 眠 + 32,119,36,36,68,40,3,252,255,255,254,3,255,255,255,255,240,255,255,254,3,255,255,255,255,240,255,255,254,3,255,255,255,255,240,254,85,254,3,249,85,85,91,240,253,0,254,3,244,0,0,7,240,253,0,254,3,244,0,0,7,240,253,0,254,3,244,0,0,7,240,253,0,254,3,244,0,0,7,240,253,0,254,3,249,85,85,91,240,255,255,254,3,255,255,255,255,240,255,255,254,3,255,255,255,255,240,255,255,254,3,255,255,255,255,240,253,0,254,3,244,1,252,0,0,253,0,254,3,244,0,253,0,0,253,0,254,3,244,0,253,0,0,253,0,254,3,244,0,253,0,0,253,0,254,3,244,0,253,0,0,255,255,254,3,255,255,255,255,252,255,255,254,3,255,255,255,255,252,255,255,254,3,255,255,255,255,252,253,0,254,3,249,85,255,85,84,253,0,254,3,244,0,127,0,0,253,0,254,3,244,0,127,0,0,253,0,254,3,244,0,63,64,0,253,0,254,3,244,0,63,128,0,254,85,254,3,244,0,63,192,0,255,255,254,3,244,0,47,192,16,255,255,254,3,244,0,31,208,61,255,255,254,3,244,0,15,224,63,253,0,0,3,244,22,219,240,63,253,0,0,3,255,255,211,244,63,253,0,1,191,255,255,227,253,126,84,0,2,255,255,255,144,255,253,0,0,1,255,254,64,0,191,252,0,0,0,249,64,0,0,47,244,0,0,0,0,0,0,0,1,64, + // 0x786e 确 + 110,120,36,39,95,40,1,251,0,0,0,0,0,20,0,0,0,0,0,0,0,0,63,192,0,0,21,85,85,85,0,127,128,0,0,63,255,255,255,0,191,64,0,0,63,255,255,255,0,255,255,252,0,63,255,255,255,2,255,255,255,0,0,31,192,0,3,255,255,255,0,0,47,192,0,11,244,2,252,0,0,47,192,0,31,224,3,248,0,0,63,128,0,63,192,15,240,0,0,63,64,0,191,128,31,224,0,0,127,0,2,255,255,255,255,255,0,191,0,7,255,255,255,255,255,0,255,0,1,255,255,255,255,255,0,254,85,80,127,192,63,0,127,1,255,255,252,47,192,63,0,127,2,255,255,252,47,192,63,0,127,3,255,255,252,47,192,63,0,127,7,253,2,252,47,255,255,255,255,11,253,2,252,47,255,255,255,255,15,253,2,252,47,255,255,255,255,63,253,2,252,47,192,63,0,127,127,253,2,252,47,192,63,0,127,191,253,2,252,47,192,63,0,127,63,253,2,252,47,192,63,64,191,28,253,2,252,63,255,255,255,255,4,253,2,252,63,255,255,255,255,0,253,2,252,63,255,255,255,255,0,253,2,252,63,0,0,0,127,0,255,255,252,191,0,0,0,127,0,255,255,252,255,0,0,0,127,0,255,255,252,254,0,0,0,127,0,253,0,2,252,0,0,0,127,0,253,0,3,252,0,0,0,191,0,253,0,15,244,0,0,85,255,0,168,0,31,240,0,0,255,255,0,0,0,11,192,0,0,255,253,0,0,0,2,64,0,0,191,228,0,0,0,0,0,0,0,0,0, + // 0x79bb 离 + 187,121,36,38,86,40,2,252,0,0,0,0,170,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,0,0,0,16,0,0,0,0,42,64,100,0,191,1,168,0,0,63,128,255,130,253,2,252,0,0,63,128,191,255,240,2,252,0,0,63,128,7,255,224,2,252,0,0,63,128,31,255,253,2,252,0,0,63,134,255,210,255,66,252,0,0,63,139,253,0,63,2,252,0,0,63,129,128,0,4,2,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,0,0,7,252,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,11,244,0,0,0,0,7,255,255,255,255,255,255,255,208,7,255,255,255,255,255,255,255,208,7,255,255,255,255,255,255,255,208,7,244,0,47,192,11,0,47,208,7,244,0,63,192,63,128,31,208,7,244,0,63,128,31,208,31,208,7,244,0,127,0,11,240,31,208,7,244,1,191,171,255,248,31,208,7,245,255,255,255,255,252,31,208,7,244,255,255,255,255,254,31,208,7,244,254,165,80,0,127,31,208,7,244,0,0,0,0,32,31,208,7,244,0,0,0,0,20,111,208,7,244,0,0,0,0,63,255,208,7,244,0,0,0,0,47,255,192,7,244,0,0,0,0,31,254,0, + // 0x79fb 移 + 251,121,37,38,124,40,1,252,0,0,0,0,0,0,148,0,0,0,0,0,2,224,0,2,254,0,0,0,0,1,191,248,0,3,252,0,0,0,1,191,255,253,0,15,244,0,0,0,63,255,255,228,0,63,255,255,248,0,63,255,252,0,0,255,255,255,252,0,31,151,248,0,7,255,255,255,248,0,0,3,248,0,47,248,0,15,240,0,0,3,248,1,255,248,0,47,224,0,0,3,248,7,255,255,64,127,192,0,0,3,248,2,252,191,209,255,64,0,42,171,254,168,144,31,255,253,0,0,63,255,255,253,0,3,255,244,0,0,63,255,255,253,0,1,255,208,0,0,63,255,255,253,0,11,255,64,0,0,0,11,248,0,0,191,253,0,0,0,0,15,252,0,111,255,255,224,0,0,0,31,253,2,255,253,63,192,0,0,0,63,255,128,255,208,255,64,0,0,0,127,255,224,120,2,255,255,255,64,0,255,255,244,0,11,255,255,255,192,1,255,250,253,0,63,255,255,255,192,3,247,248,255,1,255,192,0,191,64,7,243,248,60,11,255,0,0,255,0,15,211,248,36,127,255,64,3,253,0,63,195,248,2,255,255,224,11,252,0,127,131,248,0,255,31,252,31,240,0,127,3,248,0,52,3,255,127,224,0,61,3,248,0,0,0,255,255,128,0,24,3,248,0,0,0,47,255,0,0,0,3,248,0,0,0,63,248,0,0,0,3,248,0,0,2,255,224,0,0,0,3,248,0,0,111,255,64,0,0,0,3,248,0,27,255,252,0,0,0,0,3,248,7,255,255,208,0,0,0,0,3,248,3,255,253,0,0,0,0,0,3,248,1,255,128,0,0,0,0,0,2,168,0,144,0,0,0,0,0, + // 0x7a7a 空 + 122,122,36,37,77,40,2,253,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,213,86,254,85,191,85,87,252,63,192,2,253,0,191,0,3,252,63,192,3,252,0,191,0,3,252,63,192,3,252,0,191,0,3,252,63,192,7,248,0,191,0,3,252,21,64,15,244,0,191,0,0,0,0,0,47,240,0,191,0,1,128,0,0,127,208,0,191,0,2,248,0,2,255,128,0,191,64,3,248,0,111,255,0,0,127,255,255,244,47,255,248,0,0,63,255,255,240,47,255,208,0,0,31,255,255,192,15,253,0,0,0,0,0,0,0,11,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,85,85,85,85,85,85,0,0,63,255,255,255,255,255,255,0,0,63,255,255,255,255,255,255,0,0,63,255,255,255,255,255,255,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,21,85,85,85,85,85,85,85,84, + // 0x7aef 端 + 239,122,38,38,124,40,1,252,0,5,64,0,0,0,169,0,0,0,0,15,192,0,0,0,253,0,0,0,0,15,192,0,168,0,253,0,106,0,0,15,192,1,252,0,253,0,191,0,0,15,192,1,252,0,253,0,191,0,0,15,192,1,252,0,253,0,191,0,0,15,192,1,252,0,253,0,191,0,0,15,192,1,252,0,253,0,191,0,63,255,255,225,253,1,253,0,191,0,63,255,255,225,255,255,255,255,255,0,63,255,255,225,255,255,255,255,255,0,21,85,85,81,255,255,255,255,255,0,0,0,4,0,0,0,0,0,0,0,15,128,31,192,0,0,0,0,0,0,15,192,47,193,85,85,85,85,85,64,15,192,47,143,255,255,255,255,255,208,11,208,63,143,255,255,255,255,255,208,11,208,63,79,255,255,255,255,255,208,7,224,63,0,0,2,253,0,0,0,7,224,63,0,0,3,252,0,0,0,3,240,127,0,0,3,248,0,0,0,3,240,126,0,0,7,248,0,0,0,3,240,189,3,255,255,255,255,255,64,3,240,253,3,255,255,255,255,255,64,3,240,252,3,255,255,255,255,255,64,3,240,252,3,248,47,2,240,63,64,0,1,248,99,248,47,2,240,63,64,0,1,255,247,248,47,2,240,63,64,1,175,255,251,248,47,2,240,63,64,127,255,255,247,248,47,2,240,63,64,127,255,249,3,248,47,2,240,63,64,63,249,0,3,248,47,2,240,63,64,57,0,0,3,248,47,2,240,63,64,0,0,0,3,248,47,2,240,63,64,0,0,0,3,248,47,2,240,63,64,0,0,0,3,248,47,2,247,255,64,0,0,0,3,248,47,2,243,255,0,0,0,0,2,244,21,1,82,248,0, + // 0x7b2c 第 + 44,123,37,38,124,40,1,252,0,10,64,0,0,14,64,0,0,0,0,31,224,0,0,31,224,0,0,0,0,47,208,0,0,63,192,0,0,0,0,63,192,0,0,127,128,0,0,0,0,191,255,255,244,255,255,255,255,192,1,255,255,255,246,255,255,255,255,192,3,255,255,255,251,255,255,255,255,192,15,248,191,0,31,244,47,208,0,0,63,224,63,128,127,208,15,240,0,0,127,192,47,192,127,64,3,252,0,0,11,0,9,0,9,0,1,144,0,0,0,191,255,255,255,255,255,255,208,0,0,191,255,255,255,255,255,255,208,0,0,191,255,255,255,255,255,255,208,0,0,0,0,0,63,192,0,31,208,0,0,0,0,0,63,128,0,15,208,0,0,0,0,0,63,128,0,15,208,0,0,0,0,0,63,192,0,31,208,0,0,15,255,255,255,255,255,255,208,0,0,31,255,255,255,255,255,255,208,0,0,47,255,255,255,255,255,255,208,0,0,63,192,0,63,128,0,0,0,0,0,63,128,0,63,128,0,0,0,0,0,63,128,0,63,128,0,0,0,0,0,127,255,255,255,255,255,255,254,0,0,255,255,255,255,255,255,255,254,0,0,255,255,255,255,255,255,255,254,0,1,254,0,47,255,192,0,1,253,0,0,4,0,191,255,128,0,1,253,0,0,0,3,255,127,128,0,2,252,0,0,0,47,252,63,128,0,2,252,0,0,1,255,240,63,128,0,3,252,0,0,31,255,128,63,128,20,11,248,0,2,255,252,0,63,128,63,255,244,0,47,255,208,0,63,128,31,255,240,0,15,253,0,0,63,128,15,255,128,0,3,208,0,0,63,128,0,0,0,0,0,0,0,0,47,128,0,0,0,0, + // 0x7b49 等 + 73,123,37,38,124,40,1,252,0,15,144,0,0,15,144,0,0,0,0,31,224,0,0,47,208,0,0,0,0,63,192,0,0,63,192,0,0,0,0,127,255,255,248,191,255,255,255,128,0,255,255,255,249,255,255,255,255,128,3,255,255,255,251,255,255,255,255,128,11,252,191,0,15,248,47,208,0,0,31,240,63,64,63,240,15,240,0,0,127,224,63,192,63,192,7,244,0,0,63,192,31,192,47,192,3,248,0,0,11,0,8,0,63,192,1,128,0,0,0,0,0,0,63,192,0,0,0,0,0,63,255,255,255,255,255,255,208,0,0,63,255,255,255,255,255,255,208,0,0,63,255,255,255,255,255,255,208,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,63,255,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,255,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,11,255,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,255,0,0,0,47,0,0,0,63,192,0,0,0,0,191,192,0,0,63,192,0,0,0,0,127,244,0,0,63,192,0,0,0,0,15,253,0,0,63,192,0,0,0,0,3,255,0,0,63,192,0,0,0,0,0,255,192,0,63,192,0,0,0,0,0,63,65,85,191,192,0,0,0,0,0,28,3,255,255,128,0,0,0,0,0,0,1,255,255,0,0,0,0,0,0,0,0,255,232,0,0,0, + // 0x7bb1 箱 + 177,123,37,38,124,40,1,252,0,10,64,0,0,14,64,0,0,0,0,15,240,0,0,31,224,0,0,0,0,31,208,0,0,63,192,0,0,0,0,63,192,0,0,63,192,0,0,0,0,127,255,255,248,191,255,255,255,192,0,255,255,255,249,255,255,255,255,192,1,255,255,255,251,255,255,255,255,192,3,252,191,64,11,252,63,208,0,0,15,244,63,128,31,240,15,240,0,0,47,240,47,192,127,208,7,244,0,0,127,192,15,208,63,128,3,252,0,0,15,64,15,64,11,0,1,224,0,0,1,0,191,0,0,0,0,0,0,0,0,0,191,0,3,255,255,255,254,0,0,0,191,0,3,255,255,255,254,0,0,0,191,0,3,255,255,255,254,0,31,255,255,255,227,249,85,85,254,0,31,255,255,255,227,244,0,0,254,0,31,255,255,255,227,244,0,0,254,0,5,87,255,85,83,244,0,0,254,0,0,3,255,0,3,255,255,255,254,0,0,7,255,128,3,255,255,255,254,0,0,15,255,240,3,255,255,255,254,0,0,47,255,252,3,244,0,0,254,0,0,63,255,255,3,244,0,0,254,0,0,191,255,191,195,244,0,0,254,0,1,254,191,47,243,255,255,255,254,0,3,252,191,15,211,255,255,255,254,0,15,244,191,3,131,255,255,255,254,0,63,224,191,1,3,244,0,0,254,0,127,192,191,0,3,244,0,0,254,0,47,64,191,0,3,244,0,0,254,0,13,0,191,0,3,244,0,0,254,0,0,0,191,0,3,255,255,255,254,0,0,0,191,0,3,255,255,255,254,0,0,0,191,0,3,255,255,255,254,0,0,0,191,0,3,244,0,0,254,0,0,0,190,0,2,164,0,0,85,0, + // 0x7c7b 类 + 123,124,36,38,86,40,2,252,0,0,0,0,190,0,0,0,0,0,1,64,0,255,0,3,144,0,0,31,208,0,255,0,11,252,0,0,31,244,0,255,0,15,244,0,0,7,252,0,255,0,63,224,0,0,2,255,0,255,0,191,192,0,0,0,255,64,255,1,255,0,0,0,0,126,0,255,1,252,0,0,63,255,255,255,255,255,255,255,253,63,255,255,255,255,255,255,255,253,63,255,255,255,255,255,255,255,253,21,85,85,191,255,254,85,85,84,0,0,1,255,255,255,64,0,0,0,0,11,254,255,191,224,0,0,0,0,127,244,255,31,253,0,0,0,7,255,208,255,7,255,208,0,0,127,255,0,255,0,191,254,64,31,255,248,0,255,0,31,255,254,191,255,128,0,255,0,1,255,253,47,248,0,0,0,1,64,31,248,15,64,0,0,255,7,248,0,96,0,0,0,0,255,7,255,128,0,0,0,0,0,254,0,127,244,0,0,0,0,1,254,0,7,224,0,63,255,255,255,255,255,255,255,254,63,255,255,255,255,255,255,255,254,63,255,255,255,255,255,255,255,254,21,85,85,95,255,245,85,85,84,0,0,0,47,255,244,0,0,0,0,0,0,127,231,253,0,0,0,0,0,2,255,194,255,128,0,0,0,0,31,255,0,255,244,0,0,0,1,255,252,0,63,255,128,0,1,191,255,240,0,11,255,254,80,255,255,255,64,0,1,255,255,255,127,255,244,0,0,0,31,255,253,63,253,0,0,0,0,0,191,252,25,64,0,0,0,0,0,1,164, + // 0x7d22 索 + 34,125,35,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,5,85,85,85,255,85,85,85,80,63,255,255,255,255,255,255,255,248,63,255,255,255,255,255,255,255,248,63,255,255,255,255,255,255,255,248,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,128,0,47,224,0,0,2,252,63,128,0,127,208,0,0,2,252,63,128,1,255,64,7,64,2,252,63,129,11,253,0,47,240,2,252,63,139,239,240,0,191,224,2,252,0,47,255,192,3,255,64,0,0,0,11,255,64,31,253,0,0,0,0,1,255,224,191,240,36,0,0,0,0,47,254,255,128,254,0,0,0,0,7,255,253,1,255,192,0,0,0,1,255,224,0,63,244,0,0,0,11,255,64,0,11,254,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,252,21,85,16,0,255,0,0,2,244,0,0,121,0,254,0,56,0,64,0,2,255,64,254,2,255,64,0,0,15,253,0,254,1,255,244,0,0,191,244,0,254,0,31,254,0,11,255,192,0,254,0,2,255,208,191,254,0,0,254,0,0,127,248,127,240,0,0,254,0,0,11,252,15,64,0,0,254,0,0,1,224,0,0,0,0,254,0,0,0,0, + // 0x7d2b 紫 + 43,125,36,38,86,40,2,252,0,0,127,0,1,168,0,0,0,0,0,127,0,1,252,0,0,0,0,0,127,0,1,252,0,2,64,11,208,127,0,1,252,0,111,208,11,224,127,255,241,252,27,255,244,11,224,127,255,241,255,255,255,208,11,224,127,255,241,255,255,244,0,11,224,127,0,1,255,249,0,0,11,224,127,0,1,253,0,0,0,11,224,127,0,1,252,0,0,120,11,224,127,0,81,252,0,0,127,11,224,191,255,241,253,0,0,255,95,255,255,255,241,255,255,255,254,255,255,255,255,160,255,255,255,252,255,255,233,79,144,47,255,255,244,250,80,0,63,240,0,0,0,0,0,0,0,255,192,2,64,0,0,0,1,3,254,0,31,244,0,0,0,31,239,248,0,127,240,0,0,0,127,255,208,2,255,128,0,0,0,31,255,192,15,253,0,0,0,0,1,255,244,127,240,31,64,0,0,0,31,255,255,128,127,224,0,0,0,2,255,252,0,15,252,0,0,0,1,255,224,0,3,255,0,255,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,255,244,255,255,255,255,255,255,255,255,253,85,85,80,0,255,0,0,2,255,0,0,0,0,255,0,4,0,248,0,1,253,0,255,0,127,0,0,0,7,255,0,255,1,255,224,0,0,63,248,0,255,0,63,253,0,2,255,224,0,255,0,7,255,128,47,255,64,0,255,0,0,191,244,127,248,0,0,255,0,0,31,253,31,192,0,0,255,0,0,3,240,1,0,0,0,254,0,0,0,64, + // 0x7ea2 红 + 162,126,37,36,104,40,1,254,0,0,144,0,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,0,7,248,0,255,255,255,255,255,64,0,15,240,0,255,255,255,255,255,64,0,31,224,0,255,255,255,255,255,64,0,63,192,0,170,170,255,234,170,0,0,191,128,0,0,0,255,0,0,0,0,255,0,244,0,0,255,0,0,0,3,253,2,254,0,0,255,0,0,0,7,248,3,253,0,0,255,0,0,0,15,240,11,248,0,0,255,0,0,0,127,255,255,240,0,0,255,0,0,0,127,255,255,208,0,0,255,0,0,0,63,255,255,128,0,0,255,0,0,0,47,167,255,0,0,0,255,0,0,0,0,7,252,0,0,0,255,0,0,0,0,15,244,0,0,0,255,0,0,0,0,63,224,0,0,0,255,0,0,0,0,191,128,0,0,0,255,0,0,0,2,255,0,88,0,0,255,0,0,0,11,254,191,252,0,0,255,0,0,0,63,255,255,252,0,0,255,0,0,0,63,255,255,252,0,0,255,0,0,0,63,255,233,0,0,0,255,0,0,0,31,144,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,20,0,0,255,0,0,0,0,0,107,248,0,0,255,0,0,0,0,111,255,253,170,170,255,234,170,128,127,255,255,254,255,255,255,255,255,192,127,255,255,146,255,255,255,255,255,192,63,254,64,2,255,255,255,255,255,192,58,64,0,0,0,0,0,0,0,0, + // 0x7ea7 级 + 167,126,38,38,124,40,1,252,0,0,128,0,0,0,0,0,0,0,0,1,248,0,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,0,3,248,3,255,255,255,255,128,0,0,11,240,3,255,255,255,255,64,0,0,15,224,3,255,255,255,255,0,0,0,47,192,1,87,253,85,255,0,0,0,63,128,0,3,252,0,254,0,0,0,191,0,0,3,252,1,253,0,0,0,254,1,208,3,252,2,252,0,0,2,252,3,248,3,248,3,252,0,0,7,244,11,248,3,248,3,248,0,0,15,224,15,240,3,248,7,244,0,0,63,234,191,208,3,244,11,240,16,0,191,255,255,128,7,244,15,255,254,0,63,255,255,0,7,248,15,255,255,0,63,235,253,0,7,252,47,255,254,0,16,7,248,0,11,253,0,0,253,0,0,15,240,0,11,254,0,2,252,0,0,47,192,0,15,255,0,3,252,0,0,127,64,180,15,255,128,3,248,0,1,255,111,244,15,255,192,11,240,0,7,255,255,244,31,223,224,15,240,0,31,255,255,224,47,203,240,47,208,0,127,255,228,0,63,195,252,63,192,0,63,249,0,0,63,130,253,191,64,0,46,64,0,0,127,64,255,255,0,0,0,0,0,116,191,0,127,253,0,0,0,0,27,248,255,0,63,248,0,0,0,2,255,253,253,0,47,248,0,0,0,127,255,247,252,0,191,254,0,0,27,255,254,7,248,2,255,255,192,0,63,255,208,15,244,15,254,191,240,0,63,249,0,47,240,127,248,47,254,0,47,64,0,63,211,255,208,7,255,208,4,0,0,255,199,255,64,1,255,192,0,0,0,47,1,248,0,0,47,0,0,0,0,5,0,144,0,0,5,0, + // 0x7ebf 线 + 191,126,37,38,124,40,2,252,0,1,0,0,0,63,128,0,0,0,0,3,224,0,0,63,193,208,0,0,0,7,248,0,0,63,203,253,0,0,0,15,240,0,0,63,194,255,128,0,0,15,224,0,0,63,192,127,208,0,0,47,192,0,0,63,192,15,128,0,0,63,128,0,0,63,192,1,0,0,0,191,0,0,0,47,192,90,240,0,0,254,0,0,0,47,255,255,244,0,2,252,3,128,107,255,255,255,244,0,3,244,11,242,255,255,255,255,144,0,15,240,15,241,255,255,233,0,0,0,47,192,47,208,254,111,192,0,0,0,191,239,255,128,0,31,208,0,0,0,255,255,255,0,0,31,208,0,4,0,191,255,253,0,0,15,224,26,253,0,63,171,252,0,0,15,251,255,253,0,0,15,240,0,1,191,255,255,254,0,0,47,208,2,255,255,255,254,144,0,0,127,128,7,255,255,250,64,0,0,0,255,0,3,255,239,240,0,80,0,3,252,6,211,148,7,244,0,253,0,15,255,255,208,0,3,248,3,253,0,127,255,255,208,0,3,248,11,248,0,191,255,254,64,0,3,252,47,240,0,63,254,64,0,0,2,252,191,192,0,57,0,0,0,0,1,255,255,0,0,0,0,0,0,0,0,255,252,0,0,0,0,1,160,0,0,255,240,0,0,0,0,127,240,0,3,255,192,0,0,0,111,255,240,0,47,255,192,24,0,27,255,255,144,2,255,255,208,31,0,191,255,228,0,111,255,159,240,47,64,127,249,0,11,255,253,11,252,63,0,62,64,0,31,255,208,3,255,255,0,16,0,0,11,253,0,1,255,254,0,0,0,0,3,128,0,0,127,252,0,0,0,0,0,0,0,0,6,144,0, + // 0x7ec6 细 + 198,126,36,38,86,40,1,252,0,0,96,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,1,255,0,170,170,170,170,170,0,3,253,0,255,255,255,255,255,0,7,252,0,255,255,255,255,255,0,15,244,0,255,255,255,255,255,0,31,240,0,254,0,191,0,127,0,63,192,0,254,0,191,0,127,0,127,128,0,254,0,191,0,127,0,255,0,16,254,0,191,0,127,2,253,0,248,254,0,191,0,127,7,248,1,255,254,0,191,0,127,15,240,3,253,254,0,191,0,127,127,255,255,248,254,0,191,0,127,127,255,255,240,254,0,191,0,127,63,255,255,192,254,0,191,0,127,47,165,255,64,254,0,191,0,127,0,2,254,0,255,255,255,255,255,0,11,248,0,255,255,255,255,255,0,31,224,0,255,255,255,255,255,0,127,192,0,255,85,255,85,191,1,255,1,104,254,0,191,0,127,7,255,255,252,254,0,191,0,127,63,255,255,252,254,0,191,0,127,63,255,255,232,254,0,191,0,127,47,254,144,0,254,0,191,0,127,30,64,0,0,254,0,191,0,127,0,0,0,0,254,0,191,0,127,0,0,0,0,254,0,191,0,127,0,0,0,24,254,0,191,0,127,0,1,111,252,254,0,191,0,127,22,255,255,253,255,255,255,255,255,127,255,255,252,255,255,255,255,255,63,255,249,0,255,255,255,255,255,63,228,0,0,255,85,85,85,191,16,0,0,0,254,0,0,0,127,0,0,0,0,254,0,0,0,106,0,0,0,0,0,0,0,0,0, + // 0x7ec8 终 + 200,126,38,38,124,40,1,252,0,1,144,0,0,14,80,0,0,0,0,3,252,0,0,47,208,0,0,0,0,3,252,0,0,63,192,0,0,0,0,11,244,0,0,255,64,0,0,0,0,15,240,0,1,255,255,255,240,0,0,31,208,0,3,255,255,255,252,0,0,63,192,0,15,255,255,255,248,0,0,127,64,0,47,249,85,95,240,0,0,255,0,0,191,252,0,47,224,0,2,253,2,209,255,254,0,63,192,0,3,252,7,255,254,191,64,255,64,0,15,240,15,255,248,63,195,254,0,0,47,224,31,227,224,15,251,252,0,0,127,255,255,192,128,7,255,240,0,0,127,255,255,64,0,2,255,192,0,0,63,255,254,0,0,7,255,224,0,0,42,67,252,0,0,47,255,252,0,0,0,11,244,0,1,255,251,255,128,0,0,31,224,0,31,255,129,255,244,0,0,63,128,1,255,253,0,63,255,64,0,255,0,11,255,224,0,11,255,224,3,252,5,179,255,65,0,0,255,192,15,255,255,240,244,7,228,0,31,0,63,255,255,240,0,31,255,64,0,0,63,255,255,224,0,7,255,240,0,0,47,254,80,0,0,0,127,254,0,0,25,0,0,0,0,0,7,253,0,0,0,0,0,0,0,0,0,184,0,0,0,0,0,0,1,0,0,16,0,0,0,0,1,108,11,248,0,0,0,0,0,5,191,252,31,255,208,0,0,0,26,255,255,252,27,255,254,64,0,0,127,255,255,248,0,111,255,244,0,0,127,255,229,0,0,1,255,255,64,0,63,228,0,0,0,0,11,255,244,0,16,0,0,0,0,0,0,191,240,0,0,0,0,0,0,0,0,11,208,0,0,0,0,0,0,0,0,0,64,0, + // 0x7ed3 结 + 211,126,37,38,124,40,1,252,0,1,64,0,0,0,191,0,0,0,0,2,244,0,0,0,255,0,0,0,0,3,252,0,0,0,255,0,0,0,0,11,248,0,0,0,255,0,0,0,0,15,240,0,0,0,255,0,0,0,0,31,224,1,170,170,255,170,170,64,0,63,192,2,255,255,255,255,255,128,0,127,128,2,255,255,255,255,255,128,0,255,0,66,255,255,255,255,255,128,2,254,1,240,0,0,255,0,0,0,3,252,3,253,0,0,255,0,0,0,15,244,11,252,0,0,255,0,0,0,47,224,95,244,0,0,255,0,0,0,191,255,255,224,0,0,255,0,0,0,127,255,255,192,106,170,255,170,169,0,63,255,255,64,191,255,255,255,255,0,42,83,254,0,191,255,255,255,255,0,0,11,252,0,191,255,255,255,255,0,0,31,240,0,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,3,254,5,188,0,0,0,0,0,0,11,255,255,252,47,255,255,255,252,0,63,255,255,252,47,255,255,255,252,0,63,255,255,228,47,255,255,255,252,0,63,255,144,0,47,213,85,87,252,0,30,64,0,0,47,192,0,2,252,0,0,0,0,0,47,192,0,2,252,0,0,0,0,0,47,192,0,2,252,0,0,0,0,105,47,192,0,2,252,0,0,1,175,253,47,192,0,2,252,0,6,191,255,253,47,192,0,2,252,0,127,255,255,253,47,213,85,87,252,0,127,255,254,64,47,255,255,255,252,0,63,249,0,0,47,255,255,255,252,0,41,0,0,0,47,255,255,255,252,0,0,0,0,0,47,192,0,2,252,0,0,0,0,0,31,192,0,1,168,0, + // 0x7ed9 给 + 217,126,37,38,124,40,1,252,0,1,64,0,0,0,144,0,0,0,0,2,244,0,0,2,253,0,0,0,0,3,252,0,0,3,252,0,0,0,0,7,248,0,0,7,254,0,0,0,0,15,240,0,0,15,255,0,0,0,0,31,224,0,0,31,255,128,0,0,0,63,192,0,0,63,239,208,0,0,0,63,128,0,0,191,143,240,0,0,0,191,0,0,1,255,7,248,0,0,0,254,2,208,3,254,2,254,0,0,3,252,3,248,15,252,0,255,128,0,7,244,11,244,63,240,0,127,224,0,15,240,31,240,255,208,0,31,248,0,63,234,255,195,255,213,85,95,255,0,127,255,255,159,255,255,255,255,255,192,63,255,255,15,247,255,255,254,191,64,47,235,253,3,211,255,255,254,46,0,0,11,248,0,0,0,0,0,4,0,0,15,240,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,2,254,1,176,63,255,255,255,208,0,11,255,255,240,63,255,255,255,208,0,47,255,255,240,63,255,255,255,208,0,63,255,255,144,63,149,85,111,208,0,47,254,64,0,63,64,0,31,208,0,30,64,0,0,63,64,0,31,208,0,0,0,0,0,63,64,0,31,208,0,0,0,0,0,63,64,0,31,208,0,0,0,0,100,63,64,0,31,208,0,0,1,111,244,63,64,0,31,208,0,1,191,255,248,63,64,0,31,208,0,63,255,255,244,63,149,85,111,208,0,63,255,249,0,63,255,255,255,208,0,63,249,0,0,63,255,255,255,208,0,41,0,0,0,63,255,255,255,208,0,0,0,0,0,63,64,0,31,208,0,0,0,0,0,63,64,0,31,208,0, + // 0x7edf 统 + 223,126,38,38,124,40,1,252,0,1,128,0,0,0,96,0,0,0,0,2,248,0,0,7,248,0,0,0,0,3,253,0,0,3,252,0,0,0,0,7,252,0,0,2,253,0,0,0,0,15,244,0,0,0,255,0,0,0,0,31,240,0,0,0,249,0,0,0,0,63,208,3,255,255,255,255,255,192,0,127,192,3,255,255,255,255,255,192,0,255,64,3,255,255,255,255,255,192,1,254,3,209,85,111,245,85,85,64,3,252,7,248,0,63,208,0,0,0,11,244,15,244,0,191,128,31,0,0,31,240,31,240,1,255,0,127,128,0,127,255,255,192,3,253,0,63,192,0,127,255,255,128,15,248,0,15,240,0,63,255,255,0,63,240,0,27,248,0,47,235,253,1,255,235,255,255,252,0,0,11,248,11,255,255,255,255,255,0,0,31,240,3,255,255,255,254,255,64,0,63,192,3,255,233,80,0,63,192,0,255,64,1,66,164,6,160,46,0,2,254,27,240,3,248,7,240,0,0,11,255,255,240,3,248,7,240,0,0,47,255,255,240,3,248,7,240,0,0,63,255,254,64,3,244,7,240,0,0,47,254,64,0,7,244,7,240,0,0,30,64,0,0,7,240,7,240,0,0,0,0,0,0,11,240,7,240,0,0,0,0,1,176,15,240,7,240,8,0,0,0,111,240,31,224,7,240,15,192,0,27,255,244,63,192,7,240,15,208,11,255,255,208,191,192,7,240,15,192,63,255,248,2,255,64,7,240,15,192,63,254,64,11,254,0,7,244,31,192,47,208,0,191,252,0,7,255,255,128,20,0,0,127,224,0,3,255,255,64,0,0,0,47,128,0,0,191,253,0,0,0,0,8,0,0,0,0,0,0, + // 0x7ee7 继 + 231,126,37,36,104,40,1,254,0,2,64,0,0,0,1,80,0,0,0,3,244,0,80,0,7,224,0,0,0,7,244,2,248,0,7,224,0,0,0,15,240,2,248,40,7,224,41,0,0,15,224,2,248,188,7,224,63,0,0,47,192,2,248,125,7,224,126,0,0,63,128,2,248,63,7,224,188,0,0,127,64,2,248,47,7,224,252,0,0,254,0,2,248,31,71,225,244,0,1,252,3,210,248,15,135,227,240,0,3,248,7,246,248,15,135,227,208,0,11,240,15,242,248,0,7,224,64,0,31,208,47,210,248,0,11,224,0,0,127,239,255,130,249,255,255,255,255,128,127,255,255,2,249,255,255,255,255,128,63,255,254,2,249,255,255,255,255,128,46,83,252,2,248,0,63,244,0,0,0,11,240,2,248,0,127,252,0,0,0,31,208,2,248,0,255,255,0,0,0,63,128,2,248,1,255,255,128,0,0,255,0,2,248,3,251,239,224,0,2,253,6,162,248,7,231,227,244,0,7,255,255,226,248,15,199,225,252,0,47,255,255,226,248,63,135,224,255,0,63,255,255,146,248,191,7,224,63,64,47,254,64,2,248,254,7,224,47,0,30,64,0,2,248,188,7,224,13,0,0,0,0,2,248,112,7,224,0,0,0,0,0,2,248,0,7,224,0,0,0,0,1,178,248,0,7,224,0,0,0,6,255,242,248,0,7,224,0,0,6,255,255,242,248,0,1,80,0,0,63,255,255,146,252,0,0,0,0,0,63,255,144,2,255,255,255,255,255,192,63,144,0,2,255,255,255,255,255,192,0,0,0,2,255,255,255,255,255,192, + // 0x7eea 绪 + 234,126,38,38,124,40,1,252,0,1,64,0,0,11,224,0,0,0,0,3,244,0,0,15,224,0,0,0,0,3,248,0,0,15,224,0,36,0,0,7,244,0,0,15,224,0,127,64,0,15,240,0,0,15,240,0,255,0,0,31,208,0,255,255,255,254,253,0,0,47,192,0,255,255,255,255,252,0,0,63,64,0,255,255,255,255,244,0,0,191,0,0,0,15,224,31,240,0,0,253,1,208,0,15,224,63,192,0,2,248,3,248,0,15,224,255,64,0,7,240,11,244,0,15,226,255,0,0,15,224,15,229,85,95,247,253,85,64,47,234,255,207,255,255,255,255,255,208,127,255,255,79,255,255,255,255,255,208,63,255,255,15,255,255,255,255,255,208,47,167,253,0,0,11,254,0,0,0,0,3,248,0,0,47,248,0,0,0,0,15,240,0,0,255,224,0,0,0,0,47,192,0,7,255,192,0,0,0,0,127,64,0,47,255,255,255,252,0,0,254,0,66,255,255,255,255,252,0,3,254,191,239,255,255,255,255,252,0,31,255,255,239,255,240,0,1,252,0,63,255,254,135,215,240,0,1,252,0,47,249,64,1,7,240,0,1,252,0,25,0,0,0,7,255,255,255,252,0,0,0,0,0,7,255,255,255,252,0,0,0,0,16,7,255,255,255,252,0,0,0,6,248,7,240,0,1,252,0,0,6,255,248,7,240,0,1,252,0,6,255,255,252,7,240,0,1,252,0,63,255,255,144,7,240,0,1,252,0,63,255,208,0,7,255,255,255,252,0,47,228,0,0,7,255,255,255,252,0,20,0,0,0,7,255,255,255,252,0,0,0,0,0,7,244,0,2,252,0,0,0,0,0,2,160,0,0,84,0, + // 0x7eed 续 + 237,126,37,38,124,40,1,252,0,0,64,0,0,1,168,0,0,0,0,2,248,0,0,2,252,0,0,0,0,3,252,0,0,2,252,0,0,0,0,7,244,0,0,2,252,0,0,0,0,11,240,0,127,255,255,255,244,0,0,15,208,0,127,255,255,255,244,0,0,47,192,0,127,255,255,255,244,0,0,63,128,0,0,2,252,0,0,0,0,191,0,0,0,2,252,0,0,0,0,253,3,128,0,2,252,0,0,0,2,252,11,243,255,255,255,255,255,64,3,240,15,227,255,255,255,255,255,0,15,224,47,195,255,255,255,255,255,0,47,234,255,64,0,0,0,0,254,0,127,255,255,0,2,0,21,0,253,0,63,255,253,0,11,208,127,1,252,0,47,235,248,0,11,248,127,2,248,0,0,11,240,0,1,255,191,3,244,0,0,15,208,0,224,62,127,0,16,0,0,63,128,3,253,4,127,0,0,0,0,191,0,64,255,64,191,0,0,0,1,254,191,192,47,208,191,0,0,0,3,255,255,192,7,192,190,0,0,0,15,255,255,192,1,0,254,0,0,0,63,255,228,15,255,255,255,255,255,64,47,249,0,15,255,255,255,255,255,64,29,0,0,15,255,255,255,255,255,64,0,0,0,64,0,11,248,0,0,0,0,0,27,208,0,15,240,64,0,0,0,6,255,208,0,47,226,244,0,0,0,191,255,208,0,191,199,253,0,0,31,255,249,0,2,255,1,255,128,0,63,255,128,0,15,253,0,63,240,0,63,228,0,0,191,244,0,11,252,0,46,0,0,7,255,208,0,2,255,0,0,0,0,31,255,0,0,0,191,192,0,0,0,7,244,0,0,0,31,64,0,0,0,2,64,0,0,0,9,0, + // 0x7eff 绿 + 255,126,38,38,124,40,1,252,0,1,0,0,0,0,0,0,0,0,0,3,224,0,0,0,0,0,64,0,0,11,248,0,127,255,255,255,248,0,0,15,240,0,127,255,255,255,248,0,0,31,224,0,127,255,255,255,248,0,0,47,192,0,0,0,0,3,248,0,0,63,192,0,0,0,0,3,248,0,0,191,64,0,0,0,0,3,244,0,0,255,0,0,47,255,255,255,244,0,1,253,7,64,47,255,255,255,244,0,3,248,15,224,47,255,255,255,244,0,11,240,31,224,0,0,0,3,244,0,31,208,63,192,0,0,0,7,240,0,127,255,255,64,0,0,0,7,240,0,127,255,255,2,255,255,255,255,255,208,63,255,253,2,255,255,255,255,255,208,46,87,248,2,255,255,255,255,255,208,0,15,240,0,85,85,255,85,85,64,0,47,208,0,0,0,254,0,0,0,0,127,128,0,60,0,254,0,45,0,0,255,0,0,255,0,254,0,191,128,2,253,6,128,191,192,254,2,255,0,11,255,255,192,47,240,255,11,252,0,47,255,255,192,11,244,255,111,240,0,63,255,255,128,3,240,255,255,128,0,47,254,64,0,0,131,255,253,0,0,30,64,0,0,0,31,255,248,0,0,0,0,0,0,0,255,255,253,0,0,0,0,0,64,7,255,254,255,64,0,0,0,31,192,63,248,254,63,224,0,0,11,255,210,255,208,254,15,252,0,6,255,255,223,255,0,254,7,255,128,63,255,253,7,248,0,254,0,255,208,63,255,128,3,208,0,254,0,47,128,63,224,0,0,0,0,254,0,6,0,41,0,0,0,0,191,254,0,0,0,0,0,0,0,0,63,252,0,0,0,0,0,0,0,0,63,224,0,0,0, + // 0x7f16 编 + 22,127,36,38,86,40,1,252,0,2,64,0,0,0,104,0,0,0,3,244,0,0,3,252,0,0,0,7,244,0,0,2,254,0,0,0,15,240,0,0,0,255,0,0,0,15,208,0,0,0,255,64,0,0,47,192,2,255,255,255,255,254,0,63,128,2,255,255,255,255,254,0,127,0,2,255,255,255,255,254,0,254,0,2,252,0,0,0,190,1,252,11,66,252,0,0,0,190,3,244,15,226,252,0,0,0,190,11,240,47,194,255,255,255,255,254,31,208,127,130,255,255,255,255,254,127,255,255,2,255,255,255,255,254,127,255,254,2,252,0,0,0,0,63,255,252,2,252,0,0,0,0,47,251,244,2,248,0,0,0,0,20,11,240,2,248,0,0,0,0,0,31,208,2,255,255,255,255,255,0,63,128,3,255,255,255,255,255,0,191,0,3,255,255,255,255,255,1,253,1,3,255,208,244,124,47,3,254,191,67,255,208,244,124,47,15,255,255,131,255,208,244,124,47,63,255,254,71,251,208,244,124,47,47,254,64,11,251,208,244,124,47,30,64,0,11,235,255,255,255,255,0,0,0,15,235,255,255,255,255,0,0,31,79,219,255,255,255,255,0,2,255,159,203,208,244,124,47,0,127,255,175,203,208,244,124,47,27,255,248,63,139,208,244,124,47,127,255,64,127,11,208,244,124,47,63,228,0,255,11,208,244,124,47,62,0,1,254,11,208,244,124,47,0,0,0,252,11,208,244,125,255,0,0,0,40,11,208,240,104,255,0,0,0,0,6,128,0,0,164, + // 0x7f3a 缺 + 58,127,38,38,124,40,1,252,1,228,0,0,0,0,253,0,0,0,2,252,0,0,0,0,253,0,0,0,3,252,0,0,0,0,253,0,0,0,3,252,0,0,0,0,253,0,0,0,3,248,0,0,0,0,253,0,0,0,7,255,255,255,192,0,253,0,0,0,11,255,255,255,197,86,254,85,84,0,15,255,255,255,203,255,255,255,248,0,15,230,253,85,75,255,255,255,248,0,47,193,252,0,11,255,255,255,248,0,63,193,252,0,0,0,253,3,248,0,127,65,252,0,0,0,253,3,248,0,47,1,252,0,0,0,253,3,248,0,6,1,252,0,0,0,253,3,248,0,127,255,255,255,224,0,253,3,248,0,127,255,255,255,224,0,253,3,248,0,127,255,255,255,224,0,253,3,248,0,21,86,253,85,64,0,253,3,248,0,0,1,252,0,15,255,255,255,255,208,5,65,252,0,15,255,255,255,255,208,15,193,252,15,207,255,255,255,255,208,15,193,252,15,197,87,255,213,85,64,15,193,252,15,192,3,255,208,0,0,15,193,252,15,192,3,255,224,0,0,15,193,252,15,192,7,255,240,0,0,15,193,252,15,192,11,251,244,0,0,15,193,252,15,192,15,243,252,0,0,15,193,252,15,192,31,226,253,0,0,15,214,253,95,192,63,192,255,0,0,15,255,255,255,192,191,128,191,128,0,15,255,255,255,193,255,0,63,208,0,15,255,255,255,195,254,0,47,240,0,15,192,0,15,207,252,0,15,252,0,15,192,0,15,255,240,0,7,255,64,15,192,0,1,255,208,0,1,255,208,5,64,0,3,255,64,0,0,191,192,0,0,0,0,189,0,0,0,31,0,0,0,0,0,32,0,0,0,5,0, + // 0x7f51 网 + 81,127,34,36,68,40,3,252,42,170,170,170,170,170,170,170,144,127,255,255,255,255,255,255,255,224,127,255,255,255,255,255,255,255,224,127,255,255,255,255,255,255,255,224,127,0,3,244,0,47,192,15,224,127,0,3,244,0,47,192,15,224,127,0,3,244,0,47,128,15,224,127,0,3,244,0,47,128,15,224,127,0,3,240,0,47,128,15,224,127,0,3,240,0,63,128,15,224,127,9,3,240,120,63,64,15,224,127,31,135,240,254,63,64,15,224,127,47,231,240,191,255,64,15,224,127,11,255,224,47,255,0,15,224,127,2,255,224,11,255,0,15,224,127,0,255,224,3,255,0,15,224,127,0,63,224,0,255,128,15,224,127,0,15,244,0,191,208,15,224,127,0,31,252,0,255,244,15,224,127,0,31,255,0,255,252,15,224,127,0,47,255,129,254,255,15,224,127,0,63,111,194,252,191,79,224,127,0,127,15,131,248,63,15,224,127,0,191,3,3,244,13,15,224,127,0,254,0,11,240,4,15,224,127,1,252,0,15,224,0,15,224,127,3,252,0,47,208,0,15,224,127,11,244,0,63,192,0,15,224,127,15,240,0,255,64,0,15,224,127,63,208,2,255,0,0,15,224,127,15,128,0,252,0,0,15,224,127,2,0,0,36,0,0,15,224,127,0,0,0,0,0,255,255,224,127,0,0,0,0,0,127,255,208,127,0,0,0,0,0,63,255,64,106,0,0,0,0,0,42,84,0, + // 0x7f6e 置 + 110,127,35,36,68,40,3,252,31,255,255,255,255,255,255,255,128,31,255,255,255,255,255,255,255,128,31,234,175,250,170,254,170,191,128,31,192,7,240,0,252,0,63,128,31,192,7,240,0,252,0,63,128,31,234,171,250,170,254,170,191,128,31,255,255,255,255,255,255,255,128,31,255,255,255,255,255,255,255,128,0,0,0,2,253,0,0,0,0,0,0,0,2,252,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,3,244,0,0,0,0,0,0,0,7,244,0,0,0,0,5,80,63,255,255,255,255,252,0,15,224,63,255,255,255,255,252,0,15,224,63,128,0,0,2,252,0,15,224,63,128,0,0,1,252,0,15,224,63,255,255,255,255,252,0,15,224,63,255,255,255,255,252,0,15,224,63,128,0,0,1,252,0,15,224,63,128,0,0,1,252,0,15,224,63,255,255,255,255,252,0,15,224,63,255,255,255,255,252,0,15,224,63,128,0,0,1,252,0,15,224,63,128,0,0,1,252,0,15,224,63,255,255,255,255,252,0,15,224,63,255,255,255,255,252,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,255,255,255,255,255,255,255,252,15,255,255,255,255,255,255,255,252,15,255,255,255,255,255,255,255,252,15,224,0,0,0,0,0,0,0,10,144,0,0,0,0,0,0,0, + // 0x7f72 署 + 114,127,37,36,104,40,1,252,1,255,255,255,255,255,255,255,248,0,1,255,255,255,255,255,255,255,248,0,1,254,170,255,170,175,234,171,248,0,1,252,0,127,0,15,192,3,248,0,1,252,0,127,0,15,192,3,248,0,1,252,0,127,0,15,192,3,248,0,1,255,255,255,255,255,255,255,248,0,1,255,255,255,255,255,255,255,248,0,1,170,170,170,255,170,170,170,164,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,2,208,0,0,47,255,255,255,255,255,15,248,0,0,47,255,255,255,255,255,127,240,0,0,31,255,255,255,255,255,255,192,0,0,0,0,0,254,0,15,254,0,0,0,0,0,0,254,0,191,240,0,0,47,255,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,255,128,0,0,0,1,255,254,0,0,0,0,0,0,0,111,255,240,0,0,0,0,0,0,11,255,255,64,0,0,0,0,0,6,255,255,255,255,255,255,192,0,1,255,255,255,255,255,255,255,192,0,127,255,255,234,170,170,170,191,192,0,63,255,255,192,0,0,0,31,192,0,31,248,31,192,0,0,0,31,192,0,9,0,31,255,255,255,255,255,192,0,0,0,31,255,255,255,255,255,192,0,0,0,31,213,85,85,85,111,192,0,0,0,31,192,0,0,0,31,192,0,0,0,31,192,0,0,0,31,192,0,0,0,31,255,255,255,255,255,192,0,0,0,31,255,255,255,255,255,192,0,0,0,31,234,170,170,170,191,192,0,0,0,31,192,0,0,0,26,128,0, + // 0x8005 者 + 5,128,37,38,124,40,1,252,0,0,0,7,240,0,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,0,7,240,0,0,3,224,0,0,0,0,7,240,0,0,11,252,0,0,0,0,7,240,0,0,31,240,0,0,63,255,255,255,255,253,127,192,0,0,63,255,255,255,255,255,255,64,0,0,63,255,255,255,255,255,254,0,0,0,0,0,11,244,0,47,248,0,0,0,0,0,7,240,0,127,224,0,0,0,0,0,7,240,1,255,128,0,0,0,0,0,7,240,11,254,0,0,0,0,0,0,7,240,47,248,0,0,0,47,255,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,255,128,5,85,85,87,255,229,85,85,85,0,0,0,0,31,255,64,0,0,0,0,0,0,1,255,248,0,0,0,0,0,0,0,15,255,208,0,0,0,0,0,0,0,191,255,255,255,255,255,0,0,0,31,255,255,255,255,255,255,0,0,2,255,255,255,255,255,255,255,0,0,127,255,255,192,0,0,0,255,0,0,63,255,111,192,0,0,0,255,0,0,47,244,47,192,0,0,0,255,0,0,15,64,47,192,0,0,0,255,0,0,0,0,47,255,255,255,255,255,0,0,0,0,47,255,255,255,255,255,0,0,0,0,47,255,255,255,255,255,0,0,0,0,47,192,0,0,0,255,0,0,0,0,47,192,0,0,0,255,0,0,0,0,47,192,0,0,0,255,0,0,0,0,47,255,255,255,255,255,0,0,0,0,47,255,255,255,255,255,0,0,0,0,47,255,255,255,255,255,0,0,0,0,47,192,0,0,0,255,0,0,0,0,26,128,0,0,0,85,0,0, + // 0x806a 聪 + 106,128,38,38,124,40,1,252,0,0,0,0,0,80,0,6,0,0,0,0,0,0,3,244,0,15,224,0,63,255,255,255,3,252,0,31,224,0,63,255,255,255,1,253,0,47,192,0,63,255,255,255,0,191,0,63,128,0,7,244,11,224,0,63,64,191,0,0,3,240,11,224,0,63,192,254,0,0,3,240,11,224,0,29,1,252,0,0,3,240,11,224,47,255,255,255,253,0,3,240,11,224,47,255,255,255,253,0,3,255,255,224,47,255,255,255,253,0,3,255,255,224,47,128,0,0,253,0,3,255,255,224,47,128,0,0,253,0,3,240,11,224,47,128,0,0,253,0,3,240,11,224,47,128,0,0,253,0,3,240,11,224,47,128,0,0,253,0,3,240,11,224,47,128,0,0,253,0,3,240,11,224,47,128,0,0,253,0,3,240,11,224,47,255,255,255,253,0,3,255,255,224,47,255,255,255,253,0,3,255,255,224,47,255,255,255,253,0,3,255,255,224,0,0,16,0,0,0,3,240,11,224,0,1,248,0,0,0,3,240,11,224,0,0,253,0,0,0,3,240,11,224,0,126,127,64,16,0,3,240,11,249,57,126,47,193,248,0,3,240,31,254,62,126,15,224,252,0,3,251,255,254,125,126,3,240,189,0,47,255,255,253,189,126,2,208,63,0,127,255,255,224,252,126,0,0,63,64,63,254,75,224,252,126,0,14,31,192,62,64,11,225,248,126,0,15,207,192,0,0,11,226,244,126,0,15,203,208,0,0,11,227,240,127,0,31,135,208,0,0,11,225,224,63,255,255,130,0,0,0,11,224,0,63,255,255,0,0,0,0,11,224,0,11,255,248,0,0,0,0,7,224,0,0,0,0,0,0, + // 0x80fd 能 + 253,128,38,38,124,40,1,252,0,3,144,0,0,42,64,0,0,0,0,11,248,0,0,63,128,0,0,0,0,15,240,0,0,63,128,0,0,0,0,15,224,30,0,63,128,0,144,0,0,47,208,191,0,63,128,31,244,0,0,63,192,63,192,63,129,255,252,0,0,191,64,31,224,63,239,255,224,0,0,255,0,15,240,63,255,253,0,0,42,255,255,255,248,63,255,64,0,0,127,255,255,255,252,63,208,0,0,0,63,255,255,255,254,63,128,0,4,0,63,234,149,64,255,63,128,0,15,128,0,0,0,0,121,63,128,0,31,192,0,0,0,0,0,63,128,0,31,192,0,0,0,0,0,63,213,85,127,192,3,255,255,255,224,63,255,255,255,128,3,255,255,255,224,31,255,255,255,0,3,255,255,255,224,6,255,255,248,0,3,244,0,15,224,0,0,0,0,0,3,244,0,15,224,63,128,0,0,0,3,244,0,15,224,63,128,0,0,0,3,255,255,255,224,63,128,0,96,0,3,255,255,255,224,63,128,7,248,0,3,255,255,255,224,63,128,127,253,0,3,244,0,15,224,63,139,255,244,0,3,244,0,15,224,63,255,255,64,0,3,244,0,15,224,63,255,228,0,0,3,255,255,255,224,63,249,0,0,0,3,255,255,255,224,63,128,0,0,0,3,255,255,255,224,63,128,0,10,0,3,244,0,15,224,63,128,0,11,224,3,244,0,15,224,63,128,0,15,224,3,244,0,15,224,63,128,0,15,208,3,244,0,31,224,63,192,0,47,192,3,244,31,255,208,63,255,255,255,192,3,244,15,255,192,31,255,255,255,64,3,244,11,255,64,7,255,255,253,0,1,80,1,64,0,0,0,0,0,0, + // 0x81ea 自 + 234,129,28,38,10,40,6,252,0,0,1,233,0,0,0,0,0,2,255,0,0,0,0,0,3,253,0,0,0,0,0,3,252,0,0,0,0,0,7,248,0,0,0,106,170,175,250,170,170,170,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,85,85,85,85,85,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,85,85,85,85,85,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,85,85,85,85,85,255,191,0,0,0,0,0,191,191,0,0,0,0,0,106, + // 0x81f3 至 + 243,129,36,34,50,40,2,254,21,85,85,85,85,85,85,85,84,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,2,255,0,0,0,0,0,0,0,3,253,0,2,224,0,0,0,0,11,252,0,15,248,0,0,0,0,15,244,0,11,255,0,0,0,0,47,240,0,1,255,208,0,0,0,63,208,0,0,127,244,0,0,0,191,192,0,0,31,254,0,15,255,255,255,255,255,255,255,128,15,255,255,255,255,255,255,255,224,15,255,255,255,255,255,255,255,248,15,255,255,170,165,85,0,15,252,0,0,0,0,0,0,0,3,240,0,0,0,0,254,0,0,1,128,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,85,85,85,255,85,85,85,0,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,85,85,85,85,255,85,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x83dc 菜 + 220,131,36,38,86,40,2,252,0,0,26,128,0,2,164,0,0,0,0,31,208,0,3,244,0,0,0,0,31,208,0,3,244,0,0,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,21,85,111,213,85,87,249,85,84,0,0,31,208,0,3,244,0,0,0,0,31,208,0,2,165,100,0,0,0,0,0,0,90,255,253,0,0,85,90,175,255,255,255,255,64,15,255,255,255,255,255,255,254,64,15,255,255,255,255,255,165,0,0,11,255,254,169,84,0,0,20,0,0,0,0,1,176,0,0,63,192,0,124,0,7,244,0,0,127,192,1,254,0,3,252,0,0,255,64,0,191,64,1,253,0,1,254,0,0,63,192,0,254,0,3,252,0,0,31,224,0,254,0,11,244,0,0,15,240,0,165,0,15,224,0,0,11,64,0,255,0,7,192,0,0,0,0,0,255,0,0,0,0,21,85,85,85,255,85,85,85,84,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,0,255,255,254,0,0,0,0,0,7,255,255,255,192,0,0,0,0,47,252,255,63,244,0,0,0,2,255,224,255,11,255,64,0,0,47,255,64,255,2,255,244,0,6,255,252,0,255,0,63,255,144,191,255,208,0,255,0,11,255,254,255,254,0,0,255,0,0,191,254,63,224,0,0,255,0,0,11,252,29,0,0,0,255,0,0,0,96,0,0,0,0,254,0,0,0,0, + // 0x84dd 蓝 + 221,132,36,37,77,40,2,253,0,0,47,128,0,2,248,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,5,64,0,17,84,0,0,0,0,6,160,0,127,64,0,0,1,84,7,240,0,191,0,0,0,3,248,7,240,0,255,0,0,0,3,248,7,240,1,255,255,255,240,3,248,7,240,2,255,255,255,240,3,248,7,240,3,255,255,255,240,3,248,7,240,11,244,8,0,0,3,248,7,240,15,240,126,0,0,3,248,7,240,47,208,191,64,0,3,248,7,240,127,192,63,192,0,3,248,7,240,255,0,15,240,0,3,248,7,240,46,0,7,244,0,3,248,7,240,4,0,3,252,0,0,0,7,240,0,0,1,248,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,190,0,126,0,190,0,191,0,0,190,0,126,0,190,0,191,0,0,190,0,126,0,190,0,191,0,0,190,0,126,0,190,0,191,0,0,190,0,126,0,190,0,191,0,0,191,0,190,0,190,0,191,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x86c7 蛇 + 199,134,37,37,114,40,1,253,0,0,80,0,0,0,42,64,0,0,0,3,244,0,0,0,63,64,0,0,0,3,244,0,0,0,63,64,0,0,0,3,244,0,0,0,63,64,0,0,0,3,244,0,0,0,63,64,0,0,0,3,244,0,0,0,63,64,0,0,0,3,244,0,63,255,255,255,255,192,0,3,244,0,63,255,255,255,255,192,15,255,255,254,63,255,255,255,255,192,15,255,255,254,63,64,0,0,47,192,15,255,255,254,63,0,0,0,47,192,15,130,240,62,63,0,0,0,47,192,15,130,240,62,63,0,0,0,47,192,15,130,240,62,63,253,0,0,47,192,15,130,240,62,0,253,0,0,0,0,15,130,240,62,0,253,0,0,0,0,15,130,240,62,0,253,0,0,224,0,15,130,240,62,0,253,0,7,244,0,15,130,240,62,0,253,0,63,252,0,15,130,240,126,0,253,2,255,248,0,15,255,255,254,0,253,111,255,192,0,15,255,255,254,0,255,255,248,0,0,15,255,255,254,0,255,255,128,0,0,15,131,244,0,0,255,228,0,0,0,15,131,244,0,0,254,0,0,0,0,0,3,244,44,0,253,0,0,0,0,0,3,244,189,0,253,0,0,0,0,0,3,244,126,0,253,0,0,0,0,0,3,244,63,0,253,0,0,8,0,0,3,244,47,64,253,0,0,15,128,0,3,250,191,128,253,0,0,15,192,5,175,255,255,192,253,0,0,31,192,127,255,255,255,192,253,0,0,47,192,63,255,254,155,208,255,85,85,127,128,63,249,0,7,224,255,255,255,255,0,20,0,0,7,128,127,255,255,254,0,0,0,0,0,0,11,255,255,248,0, + // 0x884c 行 + 76,136,37,38,124,40,1,252,0,0,40,0,0,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,1,255,64,42,170,170,170,170,0,0,7,254,0,127,255,255,255,255,0,0,31,248,0,127,255,255,255,255,0,0,127,224,0,127,255,255,255,255,0,2,255,192,0,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,0,63,248,0,0,0,0,0,0,0,0,63,224,7,128,0,0,0,0,0,0,31,128,15,244,0,0,0,0,0,0,13,0,47,240,0,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,3,255,3,255,255,255,255,255,192,0,11,252,3,255,255,255,255,255,192,0,47,244,3,255,255,255,255,255,192,0,191,244,2,170,170,171,254,170,128,2,255,244,0,0,0,1,253,0,0,11,255,244,0,0,0,1,253,0,0,63,255,244,0,0,0,1,253,0,0,191,251,244,0,0,0,1,253,0,0,63,199,244,0,0,0,1,253,0,0,14,7,244,0,0,0,1,253,0,0,4,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,2,253,0,0,0,7,244,0,0,63,255,252,0,0,0,7,244,0,0,63,255,252,0,0,0,7,244,0,0,47,255,244,0,0,0,7,240,0,0,10,169,64,0,0, + // 0x88ab 被 + 171,136,38,38,124,40,1,252,0,10,144,0,0,0,63,64,0,0,0,15,224,0,0,0,63,64,0,0,0,15,224,0,0,0,63,64,0,0,0,15,224,0,0,0,63,64,0,0,0,15,224,0,0,0,63,64,0,0,0,15,224,0,0,0,63,64,0,0,0,15,224,0,127,255,255,255,255,128,21,95,245,64,127,255,255,255,255,192,63,255,255,244,127,255,255,255,255,192,63,255,255,248,127,85,127,149,127,128,63,255,255,240,127,0,63,64,63,64,0,0,15,224,127,0,63,64,127,0,0,0,31,192,127,0,63,64,191,0,0,0,63,128,127,0,63,64,253,0,0,0,191,0,127,0,63,64,108,0,0,1,253,24,127,0,63,64,0,0,0,3,252,63,191,255,255,255,253,0,0,15,244,189,191,255,255,255,254,0,0,63,253,248,191,255,255,255,253,0,0,191,255,240,191,254,85,87,252,0,2,255,255,192,191,254,0,3,252,0,15,255,255,208,190,127,0,11,244,0,63,255,231,244,254,63,128,15,240,0,191,223,226,252,254,47,192,31,224,0,63,79,224,248,253,31,224,63,192,0,45,15,224,96,253,15,244,191,128,0,0,15,224,1,252,3,253,255,0,0,0,15,224,2,252,2,255,254,0,0,0,15,224,3,248,0,255,252,0,0,0,15,224,3,244,0,127,240,0,0,0,15,224,7,240,0,191,248,0,0,0,15,224,15,240,3,255,255,0,0,0,15,224,31,224,31,255,255,208,0,0,15,224,63,193,255,244,191,254,0,0,15,224,127,143,255,192,31,255,208,0,15,224,255,15,254,0,3,255,192,0,15,224,62,3,240,0,0,127,64,0,11,224,4,1,64,0,0,6,0, + // 0x88c5 装 + 197,136,36,38,86,40,2,252,0,0,191,0,0,3,244,0,0,0,0,191,0,0,3,244,0,0,9,0,191,0,0,3,244,0,0,47,128,191,0,0,3,244,0,0,63,240,191,0,0,3,244,0,0,11,252,191,0,0,7,248,0,0,2,253,191,15,255,255,255,255,255,0,116,191,15,255,255,255,255,255,0,0,191,15,255,255,255,255,255,0,0,191,0,0,3,244,0,0,0,0,191,0,0,3,244,0,0,0,10,191,0,0,3,244,0,0,0,191,191,0,0,3,244,0,0,11,255,191,0,0,3,244,0,0,255,254,191,0,0,7,248,0,0,255,224,191,3,255,255,255,255,248,190,0,191,3,255,255,255,255,248,80,0,191,3,255,255,255,255,248,0,0,191,0,0,0,0,0,0,0,0,106,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,1,255,207,224,0,6,0,0,0,31,254,7,244,0,47,192,0,2,255,240,2,252,1,255,208,1,191,255,128,0,255,15,254,0,191,255,255,64,0,127,255,244,0,191,254,127,64,0,31,255,64,0,63,128,63,64,0,11,254,0,0,0,0,63,64,90,194,255,224,0,0,0,127,255,255,192,127,254,64,0,191,255,255,255,192,11,255,249,0,191,255,255,249,64,1,255,255,0,127,254,80,0,0,0,27,253,0,20,0,0,0,0,0,0,104, + // 0x8981 要 + 129,137,36,38,86,40,2,251,21,85,85,85,85,85,85,85,84,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,2,252,0,127,0,0,0,0,0,2,252,0,127,0,0,0,0,0,2,252,0,127,0,0,0,7,255,255,255,255,255,255,255,224,7,255,255,255,255,255,255,255,224,7,255,255,255,255,255,255,255,224,7,240,2,252,0,127,0,15,224,7,240,2,252,0,127,0,15,224,7,240,2,252,0,127,0,15,224,7,240,2,252,0,127,0,15,224,7,240,2,252,0,127,0,15,224,7,255,255,255,255,255,255,255,224,7,255,255,255,255,255,255,255,224,7,255,255,255,255,255,255,255,224,0,0,0,127,192,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,3,253,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,191,192,0,0,255,0,0,0,0,255,0,0,3,254,0,0,0,3,254,0,0,11,252,0,0,0,7,255,144,0,31,244,0,0,0,15,255,255,144,191,224,0,0,0,63,255,255,255,255,128,0,0,0,6,198,255,255,255,64,0,0,0,0,0,15,255,255,253,0,0,0,0,6,255,255,255,255,244,0,21,171,255,255,249,27,255,255,208,63,255,255,255,128,0,111,255,244,47,255,255,144,0,0,1,191,240,15,169,64,0,0,0,0,6,192,0,0,0,0,0,0,0,0,0, + // 0x89d2 角 + 210,137,34,39,95,40,1,251,0,0,0,164,0,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,15,255,255,255,224,0,0,0,0,31,255,255,255,252,0,0,0,0,63,255,255,255,244,0,0,0,0,255,128,0,31,240,0,0,0,3,255,0,0,63,192,0,0,0,15,252,0,0,191,64,0,0,0,47,249,85,85,255,85,85,80,0,255,255,255,255,255,255,255,240,7,255,255,255,255,255,255,255,240,31,255,255,255,255,255,255,255,240,15,251,240,0,15,224,0,11,240,3,199,240,0,15,224,0,11,240,0,7,240,0,15,224,0,11,240,0,7,240,0,15,224,0,11,240,0,7,244,0,15,240,0,15,240,0,7,255,255,255,255,255,255,240,0,7,255,255,255,255,255,255,240,0,7,255,255,255,255,255,255,240,0,7,240,0,15,224,0,11,240,0,7,240,0,15,224,0,11,240,0,11,240,0,15,224,0,11,240,0,11,240,0,15,224,0,11,240,0,15,245,85,95,245,85,95,240,0,15,255,255,255,255,255,255,240,0,31,255,255,255,255,255,255,240,0,47,255,255,255,255,255,255,240,0,63,192,0,0,0,0,11,240,0,127,64,0,0,0,0,11,240,0,255,0,0,0,0,0,11,240,2,254,0,0,0,0,0,11,240,11,252,0,0,0,0,0,15,240,47,244,0,0,0,6,149,111,240,127,224,0,0,0,7,255,255,224,47,192,0,0,0,3,255,255,192,10,0,0,0,0,2,255,249,0,0,0,0,0,0,0,0,0,0, + // 0x8ba1 计 + 161,139,37,38,124,40,2,252,0,0,0,0,0,2,164,0,0,0,0,56,0,0,0,7,248,0,0,0,0,254,0,0,0,7,248,0,0,0,1,255,192,0,0,7,248,0,0,0,0,127,240,0,0,7,248,0,0,0,0,15,252,0,0,7,248,0,0,0,0,3,255,0,0,7,248,0,0,0,0,0,253,0,0,7,248,0,0,0,0,0,52,0,0,7,248,0,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,0,7,248,0,0,0,255,255,224,63,255,255,255,255,255,64,255,255,224,63,255,255,255,255,255,64,255,255,224,63,255,255,255,255,255,64,170,175,224,63,255,255,255,255,255,64,0,15,224,0,0,7,248,0,0,0,0,15,224,0,0,7,248,0,0,0,0,15,224,0,0,7,248,0,0,0,0,15,224,0,0,7,248,0,0,0,0,15,224,0,0,7,248,0,0,0,0,15,224,0,0,7,248,0,0,0,0,15,224,0,0,7,248,0,0,0,0,15,224,0,0,7,248,0,0,0,0,15,224,0,0,7,248,0,0,0,0,15,224,0,0,7,248,0,0,0,0,15,224,120,0,7,248,0,0,0,0,15,227,252,0,7,248,0,0,0,0,15,255,253,0,7,248,0,0,0,0,15,255,244,0,7,248,0,0,0,0,31,255,192,0,7,248,0,0,0,0,63,254,0,0,7,248,0,0,0,0,191,244,0,0,7,248,0,0,0,0,191,192,0,0,7,248,0,0,0,0,62,0,0,0,7,248,0,0,0,0,40,0,0,0,7,248,0,0,0,0,0,0,0,0,7,244,0,0,0, + // 0x8bae 议 + 174,139,37,38,124,40,2,251,0,80,0,0,0,124,0,0,0,0,2,240,0,0,1,253,0,0,0,0,7,252,0,22,0,255,0,7,224,0,2,255,0,63,64,127,64,11,244,0,0,255,128,63,128,63,192,15,240,0,0,63,192,63,128,47,208,15,240,0,0,31,224,47,192,15,224,15,224,0,0,15,128,31,192,15,240,31,208,0,0,2,0,15,208,7,240,47,208,0,0,0,0,15,224,3,64,63,192,0,0,0,0,11,240,0,0,63,192,0,0,0,0,7,240,0,0,127,128,0,255,255,128,3,248,0,0,191,0,0,255,255,128,3,252,0,0,255,0,0,255,255,128,2,252,0,1,254,0,0,170,191,128,0,254,0,2,253,0,0,0,63,128,0,255,0,3,252,0,0,0,63,128,0,127,64,7,248,0,0,0,63,128,0,63,192,15,240,0,0,0,63,128,0,47,208,31,224,0,0,0,63,128,0,15,240,63,208,0,0,0,63,128,0,15,248,127,192,0,0,0,63,128,0,7,252,255,64,0,0,0,63,128,0,2,255,254,0,0,0,0,63,128,0,0,255,252,0,0,0,0,63,128,0,0,127,244,0,0,0,0,63,128,224,0,63,240,0,0,0,0,63,135,240,0,255,252,0,0,0,0,63,255,240,3,255,255,64,0,0,0,63,255,208,15,254,255,208,0,0,0,63,255,0,127,244,191,248,0,0,0,127,248,2,255,208,31,255,64,0,0,255,208,31,255,64,7,255,244,0,1,255,1,255,252,0,0,255,255,64,0,188,3,255,208,0,0,31,255,64,0,32,1,255,0,0,0,2,253,0,0,0,0,180,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0, + // 0x8bbe 设 + 190,139,36,37,77,40,2,252,0,176,0,0,21,85,85,80,0,2,252,0,0,47,255,255,248,0,3,255,0,0,47,255,255,248,0,0,255,192,0,47,255,255,248,0,0,47,240,0,47,128,3,248,0,0,11,252,0,63,128,3,248,0,0,2,248,0,63,128,3,248,0,0,0,224,0,63,64,3,248,0,0,0,0,0,191,0,3,248,0,0,0,0,0,255,0,3,248,0,0,0,0,3,254,0,3,248,0,0,0,0,15,252,0,3,255,254,255,255,128,191,244,0,1,255,255,255,255,128,255,208,0,0,191,255,255,255,128,127,64,0,0,0,0,170,191,128,40,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,47,255,255,255,255,208,0,63,128,47,255,255,255,255,240,0,63,128,47,255,255,255,255,208,0,63,128,27,249,85,85,127,192,0,63,128,3,252,0,0,127,128,0,63,128,1,253,0,0,255,0,0,63,128,0,255,0,2,254,0,0,63,128,0,127,128,3,252,0,0,63,128,64,47,224,15,244,0,0,63,131,192,15,248,63,224,0,0,63,159,208,3,254,255,192,0,0,63,255,224,0,255,255,0,0,0,63,255,128,0,127,252,0,0,0,63,253,0,2,255,255,64,0,0,191,244,0,47,255,255,244,0,2,255,192,7,255,253,191,255,144,2,254,1,255,255,208,15,255,254,0,248,0,255,253,0,1,255,254,0,96,0,191,144,0,0,27,252,0,0,0,36,0,0,0,0,100, + // 0x8bd5 试 + 213,139,37,38,124,40,2,252,0,0,0,0,0,0,106,1,0,0,0,240,0,0,0,0,127,79,64,0,3,252,0,0,0,0,127,95,208,0,3,255,0,0,0,0,127,79,240,0,0,255,192,0,0,0,127,67,252,0,0,63,240,0,0,0,127,65,253,0,0,15,252,0,0,0,127,64,189,0,0,3,244,0,0,0,127,64,48,0,0,1,208,170,170,170,191,170,170,0,0,0,0,255,255,255,255,255,255,64,0,0,0,255,255,255,255,255,255,64,0,0,0,255,255,255,255,255,255,64,0,0,0,0,0,0,63,128,0,0,255,255,192,0,0,0,63,128,0,0,255,255,192,0,0,0,63,128,0,0,255,255,192,0,0,0,63,192,0,0,106,191,192,0,0,0,63,192,0,0,0,47,192,21,85,85,63,192,0,0,0,47,192,63,255,255,47,192,0,0,0,47,192,63,255,255,47,192,0,0,0,47,192,63,255,255,47,192,0,0,0,47,192,0,63,64,31,208,0,0,0,47,192,0,63,64,31,208,0,0,0,47,192,0,63,64,15,208,0,0,0,47,192,0,63,64,15,224,0,0,0,47,192,0,63,64,15,240,0,0,0,47,192,0,63,64,15,240,0,0,0,47,192,64,63,64,11,240,20,0,0,47,194,192,63,65,71,244,30,0,0,47,223,208,63,175,199,248,47,128,0,47,255,224,127,255,195,252,47,64,0,63,255,239,255,255,195,252,63,64,0,191,253,127,255,248,1,255,63,0,1,255,224,63,249,0,0,255,255,0,0,255,64,46,64,0,0,191,253,0,0,124,0,0,0,0,0,63,252,0,0,32,0,0,0,0,0,31,248,0,0,0,0,0,0,0,0,6,224,0, + // 0x8bef 误 + 239,139,37,37,114,40,2,252,0,128,0,0,0,0,0,0,0,0,3,240,0,3,255,255,255,255,240,0,11,253,0,3,255,255,255,255,240,0,3,255,64,3,255,255,255,255,240,0,0,191,208,3,244,0,0,15,240,0,0,47,244,3,244,0,0,15,240,0,0,15,244,3,244,0,0,15,240,0,0,3,208,3,244,0,0,15,240,0,0,0,64,3,244,0,0,15,240,0,0,0,0,3,255,255,255,255,240,0,0,0,0,3,255,255,255,255,240,0,0,0,0,3,255,255,255,255,240,0,255,255,128,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,170,191,128,5,85,85,85,85,80,0,0,63,128,15,255,255,255,255,252,0,0,63,128,15,255,255,255,255,252,0,0,63,128,15,255,255,255,255,252,0,0,63,128,0,0,11,240,0,0,0,0,63,128,0,0,11,240,0,0,0,0,63,128,0,0,15,224,0,0,0,0,63,128,0,0,15,224,0,0,0,0,63,128,127,255,255,255,255,255,64,0,63,128,127,255,255,255,255,255,64,0,63,128,127,255,255,255,255,255,64,0,63,128,85,85,127,253,85,85,0,0,63,130,192,0,127,253,0,0,0,0,63,223,192,0,255,255,0,0,0,0,63,255,208,3,254,127,192,0,0,0,63,255,128,11,252,47,240,0,0,0,191,253,0,127,244,15,254,0,0,1,255,224,2,255,208,3,255,208,0,0,255,64,191,255,64,0,255,254,64,0,60,0,255,248,0,0,47,255,0,0,32,0,63,208,0,0,3,252,0,0,0,0,40,0,0,0,0,40,0, + // 0x8bf7 请 + 247,139,37,39,134,40,2,251,0,0,0,0,0,11,224,0,0,0,0,192,0,0,0,15,240,0,0,0,3,240,0,0,0,15,240,0,0,0,11,252,0,42,170,175,250,170,168,0,2,255,64,47,255,255,255,255,252,0,0,191,192,47,255,255,255,255,252,0,0,47,240,0,0,15,240,0,0,0,0,15,240,0,0,15,240,0,0,0,0,3,208,6,170,175,250,170,160,0,0,1,64,11,255,255,255,255,240,0,0,0,0,11,255,255,255,255,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,255,255,192,170,170,175,250,170,170,0,255,255,192,255,255,255,255,255,255,64,255,255,192,255,255,255,255,255,255,64,170,191,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,3,255,255,255,255,208,0,0,63,192,3,255,255,255,255,208,0,0,63,192,3,255,255,255,255,208,0,0,63,192,3,244,0,0,15,208,0,0,63,192,3,244,0,0,15,208,0,0,63,192,3,250,170,170,175,208,0,0,63,192,3,255,255,255,255,208,0,0,63,192,3,255,255,255,255,208,0,0,63,192,3,244,0,0,15,208,0,0,63,194,195,244,0,0,15,208,0,0,63,207,195,244,0,0,15,208,0,0,63,255,227,255,255,255,255,208,0,0,63,255,195,255,255,255,255,208,0,0,63,255,3,250,170,170,175,208,0,0,127,248,3,244,0,0,15,208,0,0,255,224,3,244,0,0,15,208,0,2,255,64,3,244,0,0,31,208,0,0,253,0,3,244,0,63,255,192,0,0,112,0,3,244,0,47,255,192,0,0,0,0,3,244,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x8bfb 读 + 251,139,37,39,134,40,1,251,0,0,0,0,0,2,164,0,0,0,0,32,0,0,0,3,248,0,0,0,0,252,0,0,0,3,248,0,0,0,3,255,0,0,0,3,248,0,0,0,0,255,208,3,255,255,255,255,248,0,0,63,244,3,255,255,255,255,248,0,0,15,253,3,255,255,255,255,248,0,0,3,253,0,0,3,248,0,0,0,0,0,244,0,0,3,248,0,0,0,0,0,16,0,0,3,248,0,0,0,0,0,0,31,255,255,255,255,255,64,0,0,0,31,255,255,255,255,255,0,0,0,0,31,255,255,255,255,255,0,127,255,224,0,0,0,0,0,254,0,127,255,224,0,4,0,0,0,253,0,127,255,224,0,63,64,254,1,252,0,42,175,224,0,63,224,254,2,248,0,0,15,224,0,11,252,254,3,244,0,0,15,224,2,0,254,254,0,80,0,0,15,224,15,224,44,254,0,0,0,0,15,224,11,252,0,254,0,0,0,0,15,224,1,255,64,253,0,0,0,0,15,224,0,47,192,253,0,0,0,0,15,224,0,7,1,253,0,0,0,0,15,224,63,255,255,255,255,255,128,0,15,224,63,255,255,255,255,255,128,0,15,224,127,255,255,255,255,255,128,0,15,225,192,0,31,244,0,0,0,0,15,235,208,0,47,224,128,0,0,0,15,255,240,0,127,195,244,0,0,0,15,255,208,1,255,139,254,0,0,0,15,255,64,7,254,1,255,192,0,0,31,252,0,63,252,0,63,240,0,0,63,240,2,255,240,0,11,253,0,0,191,128,47,255,128,0,2,255,64,0,62,0,191,253,0,0,0,127,192,0,24,0,47,224,0,0,0,31,64,0,0,0,14,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0, + // 0x8c03 调 + 3,140,35,38,86,40,2,251,0,128,0,0,0,0,0,0,0,3,240,0,63,255,255,255,255,252,11,252,0,63,255,255,255,255,252,2,255,0,63,255,255,255,255,252,0,191,192,63,128,0,0,2,252,0,47,240,63,64,6,144,1,252,0,11,240,63,64,11,208,1,252,0,3,192,63,64,11,208,1,252,0,0,0,63,66,175,250,145,252,0,0,0,63,71,255,255,209,252,0,0,0,63,71,255,255,209,252,0,0,0,63,64,11,208,1,252,255,255,128,63,64,11,208,1,252,255,255,128,63,64,11,208,1,252,255,255,128,63,64,11,208,1,252,170,191,128,63,79,255,255,245,252,0,63,128,63,79,255,255,245,252,0,63,128,63,79,255,255,245,252,0,63,128,63,64,0,0,1,252,0,63,128,63,64,0,0,1,252,0,63,128,63,70,170,170,129,252,0,63,128,63,75,255,255,193,252,0,63,128,63,11,255,255,193,252,0,63,128,63,11,208,11,193,252,0,63,128,127,11,208,11,193,252,0,63,128,127,11,208,11,193,252,0,63,137,190,11,208,11,193,252,0,63,191,254,11,250,175,193,252,0,63,255,253,11,255,255,193,252,0,63,255,252,11,255,255,193,252,0,127,250,252,11,208,0,1,252,0,255,227,248,11,208,0,1,252,1,255,135,244,0,0,0,1,252,3,254,15,240,0,0,1,86,252,2,248,31,208,0,0,3,255,248,0,160,15,192,0,0,2,255,244,0,0,2,64,0,0,1,255,128,0,0,0,0,0,0,0,0,0, + // 0x8d25 败 + 37,141,36,38,86,40,2,252,0,0,0,0,0,1,0,0,0,0,0,0,0,0,11,240,0,0,31,255,255,255,0,15,224,0,0,31,255,255,255,0,15,208,0,0,31,255,255,255,0,31,192,0,0,31,149,85,127,0,47,192,0,0,31,128,0,63,0,63,128,0,0,31,128,0,63,0,63,149,85,84,31,130,164,63,0,127,255,255,255,31,131,244,63,0,255,255,255,255,31,131,244,63,0,255,255,255,255,31,131,244,63,2,252,0,15,192,31,131,244,63,3,248,0,15,192,31,131,244,63,7,244,0,31,192,31,131,244,63,15,240,0,31,128,31,131,244,63,47,244,0,47,128,31,131,244,63,127,252,0,63,64,31,131,244,63,127,252,0,63,0,31,131,244,63,31,253,0,63,0,31,131,244,63,12,127,0,126,0,31,131,244,63,0,63,0,253,0,31,131,244,63,0,47,128,252,0,31,131,244,63,0,31,193,252,0,31,131,240,63,0,15,227,248,0,31,131,240,63,0,7,247,240,0,31,135,240,63,0,3,255,240,0,31,139,224,63,0,1,255,208,0,0,15,208,0,0,0,255,192,0,0,31,194,128,0,0,191,192,0,0,47,207,208,0,0,255,240,0,0,127,75,240,0,3,255,248,0,0,255,3,252,0,15,251,254,0,3,252,1,253,0,63,224,255,128,15,248,0,191,1,255,192,63,240,127,224,0,63,203,255,0,31,254,255,192,0,31,95,248,0,3,255,62,0,0,8,11,208,0,0,188,20,0,0,0,2,0,0,0,20, + // 0x8d2a 贪 + 42,141,37,38,124,40,2,252,0,0,0,0,29,0,0,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,7,255,208,0,0,0,0,0,0,0,127,255,252,0,0,0,0,0,0,3,255,231,255,208,0,0,0,0,0,127,255,0,191,254,0,0,0,0,11,255,244,176,11,255,248,0,0,6,255,255,131,253,0,191,255,228,0,191,255,248,1,255,64,11,255,255,64,255,255,64,0,63,192,0,127,254,0,63,224,0,0,31,128,0,2,252,0,24,47,255,255,255,255,255,192,0,0,0,47,255,255,255,255,255,240,0,0,0,47,255,255,255,255,255,208,0,0,0,0,0,0,0,1,255,64,0,0,0,0,0,0,0,7,254,0,0,0,0,0,0,0,0,31,248,0,0,0,0,0,0,0,0,31,224,0,0,0,0,63,255,255,255,255,255,248,0,0,0,63,255,255,255,255,255,248,0,0,0,63,255,255,255,255,255,248,0,0,0,63,213,85,85,85,87,248,0,0,0,63,128,0,85,0,3,248,0,0,0,63,128,0,255,0,3,248,0,0,0,63,128,0,255,0,3,248,0,0,0,63,128,0,255,0,3,248,0,0,0,63,128,0,255,0,3,248,0,0,0,63,128,1,254,0,3,248,0,0,0,63,128,3,253,0,3,248,0,0,0,63,128,11,252,80,3,248,0,0,0,21,64,47,244,254,64,0,0,0,0,0,1,255,226,255,249,0,0,0,0,0,31,255,65,191,255,224,0,0,0,6,255,253,0,6,255,254,64,0,6,255,255,208,0,0,47,255,244,0,31,255,253,0,0,0,1,255,240,0,7,255,144,0,0,0,0,11,224,0,2,224,0,0,0,0,0,0,128,0, + // 0x8d77 起 + 119,141,38,39,134,40,1,251,0,0,85,0,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,0,191,0,0,191,255,255,252,0,0,0,191,0,0,191,255,255,252,0,1,85,191,85,80,191,255,255,252,0,15,255,255,255,240,21,85,86,252,0,15,255,255,255,240,0,0,1,252,0,15,255,255,255,240,0,0,1,252,0,0,0,191,0,0,0,0,1,252,0,0,0,191,0,0,0,0,1,252,0,0,0,191,0,0,0,0,1,252,0,0,0,191,0,0,0,0,1,252,0,21,85,191,85,84,0,0,1,252,0,63,255,255,255,252,63,255,255,252,0,63,255,255,255,252,63,255,255,252,0,63,255,255,255,252,63,255,255,252,0,0,0,63,128,0,63,149,86,252,0,0,0,63,128,0,63,64,0,84,0,1,0,63,128,0,63,64,0,0,0,7,240,63,128,0,63,64,0,0,0,7,240,63,128,0,63,64,0,0,0,7,240,63,255,248,63,64,0,0,0,7,240,63,255,248,63,64,0,14,0,7,240,63,255,248,63,64,0,15,208,7,240,63,128,0,63,64,0,15,208,11,244,63,128,0,63,64,0,15,192,11,252,63,128,0,63,64,0,31,192,11,252,63,128,0,63,213,85,127,192,15,255,63,128,0,63,255,255,255,128,15,255,127,128,0,31,255,255,255,0,15,255,255,128,0,6,255,255,248,0,31,223,255,128,0,0,0,0,0,0,47,199,255,233,0,0,0,0,0,0,63,128,255,255,255,255,255,255,255,208,63,64,47,255,255,255,255,255,255,192,191,0,1,255,255,255,255,255,255,128,191,0,0,1,106,170,170,170,170,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x8d85 超 + 133,141,38,38,124,40,1,252,0,0,189,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,3,255,255,255,255,0,0,0,254,0,3,255,255,255,255,0,0,0,254,0,3,255,255,255,255,0,15,255,255,255,224,1,252,0,191,0,15,255,255,255,224,2,252,0,191,0,15,255,255,255,224,3,248,0,191,0,0,0,254,0,0,3,244,0,255,0,0,0,254,0,0,11,240,0,254,0,0,0,254,0,0,15,224,0,254,0,0,0,254,0,0,63,192,2,253,0,21,85,254,85,80,191,67,255,252,0,63,255,255,255,247,254,2,255,248,0,63,255,255,255,255,252,1,255,224,0,63,255,255,255,251,240,0,0,0,0,0,0,127,0,1,128,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,127,0,0,255,255,255,253,0,7,240,127,0,0,255,255,255,253,0,7,240,127,0,0,255,255,255,253,0,7,240,127,64,0,253,0,1,253,0,7,240,127,255,240,253,0,1,253,0,7,240,127,255,240,253,0,1,253,0,11,240,127,255,240,253,0,1,253,0,11,240,127,0,0,253,0,1,253,0,11,248,127,0,0,253,0,1,253,0,15,252,127,0,0,255,255,255,253,0,15,255,127,0,0,255,255,255,253,0,15,255,255,0,0,255,255,255,253,0,15,255,255,0,0,0,0,0,0,0,31,207,255,0,0,0,0,0,0,0,47,135,255,249,0,0,0,0,0,0,63,129,255,255,255,255,255,255,255,208,127,64,47,255,255,255,255,255,255,192,255,0,1,255,255,255,255,255,255,128,46,0,0,1,106,170,170,170,170,0,4,0,0,0,0,0,0,0,0,0, + // 0x8ddd 距 + 221,141,38,36,104,40,1,252,7,255,255,255,7,255,255,255,255,192,7,255,255,255,7,255,255,255,255,192,7,255,255,255,7,255,255,255,255,192,7,240,0,127,7,249,85,85,85,64,7,240,0,127,7,240,0,0,0,0,7,240,0,127,7,240,0,0,0,0,7,240,0,127,7,240,0,0,0,0,7,240,0,127,7,240,0,0,0,0,7,240,0,127,7,240,0,0,0,0,7,240,0,191,7,249,85,85,84,0,7,255,255,255,7,255,255,255,253,0,7,255,255,255,7,255,255,255,253,0,7,255,255,255,7,255,255,255,253,0,0,0,253,0,7,240,0,1,253,0,0,0,253,0,7,240,0,1,253,0,0,0,253,0,7,240,0,1,253,0,7,208,253,0,7,240,0,1,253,0,11,224,253,0,7,240,0,1,253,0,11,224,255,255,135,240,0,1,253,0,11,224,255,255,135,240,0,1,253,0,11,224,255,255,135,249,85,86,253,0,11,224,253,85,7,255,255,255,253,0,11,224,253,0,7,255,255,255,253,0,11,224,253,0,7,255,255,255,253,0,11,224,253,0,7,240,0,0,0,0,11,224,253,0,7,240,0,0,0,0,11,224,253,0,71,240,0,0,0,0,11,224,253,111,199,240,0,0,0,0,11,224,255,255,199,240,0,0,0,0,11,255,255,255,199,240,0,0,0,0,111,255,255,254,71,249,85,85,85,64,191,255,254,64,7,255,255,255,255,208,127,254,64,0,7,255,255,255,255,208,62,64,0,0,7,255,255,255,255,208,0,0,0,0,7,240,0,0,0,0,0,0,0,0,7,240,0,0,0,0, + // 0x8f6c 转 + 108,143,36,38,86,40,2,252,0,10,64,0,0,0,101,0,0,0,31,208,0,0,0,255,0,0,0,31,192,0,0,0,255,0,0,0,47,192,0,0,0,254,0,0,85,127,213,84,0,1,253,0,0,255,255,255,252,127,255,255,255,252,255,255,255,252,127,255,255,255,252,255,255,255,252,127,255,255,255,252,0,253,0,0,21,91,249,85,84,0,252,0,0,0,11,240,0,0,1,252,0,0,0,15,224,0,0,2,249,168,0,0,31,208,0,0,3,241,252,1,85,111,229,85,85,7,241,252,3,255,255,255,255,255,11,209,252,3,255,255,255,255,255,15,193,252,3,255,255,255,255,255,31,129,252,0,0,191,0,0,0,63,150,253,80,0,255,0,0,0,191,255,255,248,1,254,0,0,0,127,255,255,248,2,253,0,0,0,63,255,255,248,3,255,255,255,224,16,1,252,0,7,255,255,255,252,0,1,252,0,11,255,255,255,240,0,1,252,0,5,85,85,191,208,0,1,252,1,0,0,0,191,128,0,1,254,255,0,0,1,255,0,0,27,255,255,0,0,3,253,0,191,255,255,255,0,180,15,248,0,255,255,255,229,2,254,31,224,0,255,255,252,0,3,255,255,192,0,250,65,252,0,0,127,255,64,0,0,1,252,0,0,15,255,64,0,0,1,252,0,0,2,255,224,0,0,1,252,0,0,0,127,252,0,0,1,252,0,0,0,15,255,0,0,1,252,0,0,0,2,255,0,0,1,252,0,0,0,0,189,0,0,1,252,0,0,0,0,20,0, + // 0x8f6f 软 + 111,143,37,38,124,40,2,252,0,1,64,0,0,42,64,0,0,0,0,3,252,0,0,63,128,0,0,0,0,3,248,0,0,63,64,0,0,0,0,7,244,0,0,127,64,0,0,0,0,11,240,0,0,127,0,0,0,0,255,255,255,255,192,191,0,0,0,0,255,255,255,255,192,255,255,255,254,0,255,255,255,255,192,255,255,255,255,0,170,191,234,170,129,255,255,255,255,0,0,63,64,0,2,253,85,85,254,0,0,127,0,0,3,248,0,0,254,0,0,254,42,0,7,244,0,0,253,0,0,253,63,64,15,240,0,1,252,0,2,252,63,64,31,224,20,1,252,0,3,248,63,64,63,208,254,2,248,0,7,240,63,64,127,192,254,3,244,0,15,240,63,64,191,64,254,3,240,0,31,229,127,149,95,0,254,2,240,0,63,255,255,255,192,0,254,0,0,0,63,255,255,255,192,0,254,0,0,0,47,255,255,255,192,0,255,0,0,0,4,0,63,64,0,1,255,0,0,0,0,0,63,64,0,1,255,64,0,0,0,0,63,64,0,2,255,128,0,0,0,0,63,64,0,3,255,192,0,0,0,0,63,171,192,7,255,208,0,0,0,26,255,255,192,11,255,240,0,0,191,255,255,255,208,15,247,240,0,0,255,255,255,254,128,47,211,248,0,0,255,255,255,64,0,63,194,253,0,0,254,144,63,64,0,255,64,255,0,0,0,0,63,64,2,255,0,191,192,0,0,0,63,64,11,253,0,63,224,0,0,0,63,64,47,244,0,31,248,0,0,0,63,64,191,224,0,11,255,64,0,0,63,65,255,128,0,2,255,0,0,0,63,64,62,0,0,0,188,0,0,0,42,0,8,0,0,0,20,0, + // 0x8f74 轴 + 116,143,35,38,86,40,2,252,0,26,64,0,0,0,253,0,0,0,31,192,0,0,0,254,0,0,0,47,192,0,0,0,254,0,0,0,63,128,0,0,0,254,0,0,85,127,213,84,0,0,254,0,0,255,255,255,248,0,0,254,0,0,255,255,255,248,0,0,254,0,0,255,255,255,248,0,0,254,0,0,0,253,0,0,0,0,254,0,0,0,252,0,0,191,255,255,255,252,1,252,0,0,191,255,255,255,252,3,248,252,0,191,255,255,255,252,3,244,252,0,191,85,254,86,252,7,240,252,0,190,0,253,0,252,11,224,252,0,190,0,253,0,252,15,208,252,0,190,0,253,0,252,31,192,252,0,190,0,253,0,252,63,213,254,84,190,0,253,0,252,191,255,255,248,190,0,253,0,252,127,255,255,248,190,0,253,0,252,63,255,255,248,191,255,255,255,252,16,0,252,0,191,255,255,255,252,0,0,252,0,191,255,255,255,252,0,0,252,0,191,85,254,85,252,0,0,252,4,190,0,253,0,252,0,0,255,252,190,0,253,0,252,0,107,255,252,190,0,253,0,252,255,255,255,252,190,0,253,0,252,255,255,255,148,190,0,253,0,252,255,254,252,0,190,0,253,0,252,185,0,252,0,190,0,253,0,252,0,0,252,0,190,0,253,0,252,0,0,252,0,191,255,255,255,252,0,0,252,0,191,255,255,255,252,0,0,252,0,191,255,255,255,252,0,0,252,0,191,85,85,85,252,0,0,252,0,190,0,0,0,252,0,0,168,0,190,0,0,0,84, + // 0x8f7d 载 + 125,143,37,39,134,40,2,251,0,0,47,192,0,15,224,0,0,0,0,0,47,192,0,15,224,120,0,0,0,0,47,192,0,15,225,255,0,0,11,255,255,255,254,15,224,191,192,0,15,255,255,255,254,15,224,47,224,0,15,255,255,255,254,15,224,15,248,0,0,0,47,192,0,15,240,3,240,0,0,0,47,192,0,15,240,1,128,0,0,0,47,192,0,15,240,0,0,0,255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,255,0,0,2,228,0,0,11,240,0,0,0,0,3,252,0,0,11,240,0,0,0,0,7,248,0,0,7,240,2,64,0,0,11,244,0,0,7,240,7,240,0,63,255,255,255,255,199,240,11,240,0,63,255,255,255,255,195,244,15,224,0,63,255,255,255,255,195,244,31,192,0,0,127,0,0,0,3,248,47,192,0,0,254,3,244,0,3,248,63,128,0,2,252,3,244,0,3,252,191,0,0,7,244,3,244,0,2,252,255,0,0,31,255,255,255,255,65,254,253,0,0,15,255,255,255,255,65,255,252,0,0,11,255,255,255,255,64,255,244,0,0,5,0,3,244,0,0,255,240,0,0,0,0,3,244,0,0,191,208,0,0,0,0,3,244,0,0,127,192,24,0,0,0,3,255,255,192,255,128,47,64,21,106,255,255,255,195,255,192,47,64,127,255,255,255,255,203,255,208,63,0,63,255,255,249,0,47,255,240,63,0,63,234,87,244,0,191,199,252,127,0,0,0,3,244,2,255,67,255,254,0,0,0,3,244,11,254,0,255,252,0,0,0,3,244,2,244,0,63,248,0,0,0,3,244,0,208,0,6,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x8f91 辑 + 145,143,38,38,124,40,1,252,0,6,64,0,0,0,0,0,0,0,0,11,240,0,10,170,170,170,164,0,0,15,240,0,15,255,255,255,248,0,0,15,224,0,15,255,255,255,248,0,0,15,224,0,15,208,0,3,248,0,63,255,255,254,15,208,0,3,248,0,63,255,255,254,15,208,0,3,248,0,63,255,255,254,15,250,170,171,248,0,42,191,170,169,15,255,255,255,248,0,0,127,0,0,15,255,255,255,248,0,0,191,0,0,0,0,0,0,0,0,0,254,127,0,0,0,0,0,0,0,0,253,127,0,0,0,0,0,0,0,1,252,127,0,255,255,255,255,255,192,2,248,127,0,255,255,255,255,255,192,3,244,127,0,255,255,255,255,255,192,7,240,127,0,15,224,0,3,244,0,15,229,191,84,15,224,0,3,244,0,47,255,255,252,15,250,170,175,244,0,31,255,255,252,15,255,255,255,244,0,15,255,255,252,15,255,255,255,244,0,4,0,127,0,15,224,0,3,244,0,0,0,127,0,15,224,0,3,244,0,0,0,127,0,15,224,0,3,244,0,0,0,127,0,15,250,170,171,244,0,0,0,127,111,15,255,255,255,244,0,0,91,255,255,15,255,255,255,244,0,127,255,255,255,15,224,0,3,244,0,63,255,255,229,15,224,0,3,244,0,63,255,255,0,15,224,0,3,244,0,46,80,127,0,15,246,175,255,255,208,0,0,127,3,255,255,255,255,255,208,0,0,127,3,255,255,255,255,255,192,0,0,127,2,255,250,149,3,244,0,0,0,127,0,64,0,0,3,244,0,0,0,127,0,0,0,0,3,244,0,0,0,127,0,0,0,0,3,244,0,0,0,106,0,0,0,0,3,240,0, + // 0x8f93 输 + 147,143,37,39,134,40,2,251,0,100,0,0,0,0,208,0,0,0,0,254,0,0,0,3,252,0,0,0,0,254,0,0,0,11,248,0,0,0,0,253,0,0,0,47,252,0,0,0,0,252,0,0,0,191,255,64,0,0,255,255,255,128,3,255,127,208,0,0,255,255,255,128,31,252,15,248,0,0,255,255,255,128,191,240,3,255,128,0,87,249,85,7,255,192,0,191,248,0,3,240,0,63,254,0,0,47,255,64,7,240,0,255,255,255,255,255,255,64,11,225,80,63,255,255,255,255,125,0,11,215,240,12,63,255,255,255,4,0,15,199,240,0,0,0,0,0,0,0,15,135,240,0,0,0,0,0,84,0,47,71,240,11,255,255,192,0,252,0,63,7,240,11,255,255,194,224,252,0,127,91,245,11,255,255,195,240,252,0,255,255,255,139,208,15,195,240,252,0,255,255,255,139,208,15,195,240,252,0,127,255,255,139,208,15,195,240,252,0,16,7,240,11,250,175,195,240,252,0,0,7,240,11,255,255,195,240,252,0,0,7,240,11,255,255,195,240,252,0,0,7,240,11,208,15,195,240,252,0,0,7,255,139,208,15,195,240,252,0,0,111,255,203,208,15,195,240,252,0,175,255,255,203,255,255,195,240,252,0,255,255,249,11,255,255,195,240,252,0,255,255,240,11,255,255,195,240,252,0,185,7,240,11,208,15,195,224,252,0,0,7,240,11,208,15,192,0,252,0,0,7,240,11,208,15,192,0,252,0,0,7,240,11,208,15,192,0,252,0,0,7,240,11,208,15,192,255,252,0,0,7,240,11,210,255,192,255,248,0,0,7,240,11,209,255,192,191,144,0,0,7,224,11,208,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x8fb9 边 + 185,143,38,38,124,40,1,251,0,240,0,0,0,127,128,0,0,0,7,252,0,0,0,127,128,0,0,0,3,255,0,0,0,127,128,0,0,0,0,255,192,0,0,127,128,0,0,0,0,127,224,0,0,127,128,0,0,0,0,31,244,0,0,127,64,0,0,0,0,11,252,42,170,255,234,170,170,0,0,3,240,127,255,255,255,255,255,0,0,0,128,127,255,255,255,255,255,0,0,0,0,127,255,255,255,255,255,0,0,0,0,0,0,255,0,0,254,0,0,0,0,0,0,255,0,0,254,0,0,0,0,0,0,255,0,0,254,0,127,255,208,0,1,254,0,0,254,0,127,255,208,0,1,253,0,0,254,0,127,255,208,0,2,253,0,1,254,0,42,191,208,0,3,252,0,1,253,0,0,31,208,0,7,252,0,1,253,0,0,31,208,0,11,248,0,1,253,0,0,31,208,0,15,240,0,2,253,0,0,31,208,0,31,240,0,2,252,0,0,31,208,0,63,208,0,2,252,0,0,31,208,0,127,192,0,3,252,0,0,31,208,0,255,64,0,3,252,0,0,31,208,3,255,0,0,3,252,0,0,31,208,15,252,0,0,11,248,0,0,31,208,127,244,1,170,175,244,0,0,31,208,255,208,0,255,255,240,0,0,47,208,127,64,0,255,255,208,0,0,191,244,28,0,0,191,254,0,0,3,255,254,0,0,0,0,0,0,0,15,255,255,208,0,0,0,0,0,0,63,244,127,254,80,0,0,5,106,224,255,208,15,255,255,255,255,255,255,208,127,128,2,255,255,255,255,255,255,192,47,0,0,31,255,255,255,255,255,192,12,0,0,0,90,170,170,169,85,0,0,0,0,0,0,0,0,0,0,0, + // 0x8fc1 迁 + 193,143,38,37,114,40,1,252,0,184,0,0,0,0,0,111,192,0,2,255,64,0,0,1,175,255,240,0,1,255,224,0,91,255,255,255,244,0,0,63,248,63,255,255,255,249,0,0,0,11,254,63,255,255,245,0,0,0,0,1,248,47,250,95,240,0,0,0,0,0,96,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,3,192,0,0,0,15,240,0,0,0,15,248,0,0,0,15,240,0,0,0,15,255,64,0,0,15,240,0,0,0,1,255,224,0,0,15,240,0,0,0,0,63,244,0,0,15,240,0,0,0,0,11,225,255,255,255,255,255,255,192,0,1,129,255,255,255,255,255,255,192,0,0,1,255,255,255,255,255,255,192,0,0,0,85,85,95,245,85,85,64,0,0,0,0,0,15,240,0,0,0,63,255,240,0,0,15,240,0,0,0,63,255,240,0,0,15,240,0,0,0,63,255,240,0,0,15,240,0,0,0,21,95,240,0,0,15,240,0,0,0,0,11,240,0,0,15,240,0,0,0,0,11,240,0,0,15,240,0,0,0,0,11,240,0,0,15,240,0,0,0,0,11,240,0,0,15,240,0,0,0,0,11,240,0,0,15,240,0,0,0,0,11,240,0,0,15,240,0,0,0,0,15,244,0,0,15,240,0,0,0,0,63,252,0,0,15,240,0,0,0,1,255,255,64,0,15,240,0,0,0,11,255,191,244,0,0,0,0,0,0,127,252,47,255,234,85,85,90,170,144,63,240,7,255,255,255,255,255,255,192,47,128,0,191,255,255,255,255,255,128,13,0,0,2,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0, + // 0x8fd0 运 + 208,143,38,37,114,40,1,252,0,180,0,0,0,0,0,0,0,0,2,255,0,1,85,85,85,85,84,0,2,255,208,7,255,255,255,255,248,0,0,127,248,7,255,255,255,255,248,0,0,11,253,7,255,255,255,255,248,0,0,2,248,0,0,0,0,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,0,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,0,47,254,0,85,85,85,85,85,85,64,7,255,192,255,255,255,255,255,255,208,0,191,240,255,255,255,255,255,255,208,0,31,224,255,255,255,255,255,255,208,0,3,128,0,3,254,0,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,0,7,248,0,32,0,0,0,0,0,0,11,244,2,252,0,0,63,255,224,0,15,240,2,254,0,0,63,255,224,0,31,224,0,255,64,0,63,255,224,0,47,192,0,63,192,0,21,111,224,0,63,128,0,31,224,0,0,15,224,0,127,64,0,15,244,0,0,15,224,0,255,0,0,27,252,0,0,15,224,0,254,107,255,255,253,0,0,15,224,191,255,255,255,255,255,0,0,15,224,191,255,255,255,255,255,64,0,15,224,127,255,255,233,80,63,192,0,15,224,122,148,0,0,0,47,128,0,127,248,0,0,0,0,0,24,0,1,255,254,0,0,0,0,0,0,0,15,255,255,224,0,0,0,0,0,0,127,248,63,255,169,85,85,85,170,144,63,224,11,255,255,255,255,255,255,192,47,64,1,255,255,255,255,255,255,128,13,0,0,6,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0, + // 0x8fd1 近 + 209,143,38,38,124,40,1,252,0,0,0,0,0,0,0,2,0,0,1,64,0,0,0,0,1,191,208,0,11,224,0,0,0,5,191,255,244,0,31,252,0,2,234,255,255,255,228,0,7,255,0,2,255,255,255,249,0,0,1,255,192,2,255,255,229,0,0,0,0,63,240,2,254,80,0,0,0,0,0,15,248,2,252,0,0,0,0,0,0,3,224,2,252,0,0,0,0,0,0,1,128,2,252,0,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,0,2,255,255,255,255,255,192,0,0,0,2,255,255,255,255,255,192,0,0,0,2,255,255,255,255,255,192,0,0,0,2,253,85,95,245,85,64,63,255,240,3,252,0,15,240,0,0,63,255,240,3,248,0,15,240,0,0,63,255,240,3,248,0,15,240,0,0,21,95,240,3,244,0,15,240,0,0,0,15,240,7,240,0,15,240,0,0,0,15,240,11,240,0,15,240,0,0,0,15,240,15,224,0,15,240,0,0,0,15,240,31,208,0,15,240,0,0,0,15,240,63,192,0,15,240,0,0,0,15,240,127,128,0,15,240,0,0,0,15,240,255,0,0,15,240,0,0,0,15,243,254,0,0,15,240,0,0,0,15,242,252,0,0,15,240,0,0,0,15,240,180,0,0,15,240,0,0,0,127,252,16,0,0,15,240,0,0,2,255,255,64,0,0,6,144,0,0,15,255,191,244,0,0,0,0,0,0,127,252,47,255,250,170,170,170,171,208,63,224,11,255,255,255,255,255,255,192,47,128,0,191,255,255,255,255,255,128,13,0,0,6,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0, + // 0x8fd4 返 + 212,143,38,37,114,40,1,252,1,64,0,0,0,0,0,0,0,0,11,224,0,11,255,255,255,255,255,0,31,252,0,11,255,255,255,255,255,0,7,255,0,11,255,255,255,255,255,0,1,255,192,11,245,85,85,85,85,0,0,127,224,11,240,0,0,0,0,0,0,31,244,11,240,0,0,0,0,0,0,11,224,11,240,0,0,0,0,0,0,3,64,11,240,0,0,0,0,0,0,0,0,11,245,85,85,85,64,0,0,0,0,11,255,255,255,255,248,0,0,0,0,15,255,255,255,255,244,0,0,0,0,15,255,255,255,255,240,0,0,0,0,15,251,240,0,15,240,0,0,0,0,15,243,248,0,31,208,0,63,255,208,15,226,252,0,63,192,0,63,255,208,15,225,253,0,127,128,0,63,255,208,15,208,255,0,255,0,0,21,111,208,31,208,127,194,254,0,0,0,15,208,31,192,47,215,252,0,0,0,15,208,63,192,15,255,244,0,0,0,15,208,63,192,7,255,224,0,0,0,15,208,127,64,3,255,192,0,0,0,15,208,191,0,7,255,208,0,0,0,15,208,255,0,47,255,248,0,0,0,15,209,253,0,255,255,255,64,0,0,15,211,252,27,255,195,255,248,0,0,15,219,244,255,254,0,191,255,128,0,31,242,240,127,244,0,31,255,128,0,191,248,80,47,64,0,1,255,0,2,255,255,0,4,0,0,0,29,0,15,254,255,228,0,0,0,0,0,0,127,248,63,255,234,149,86,170,170,208,63,224,11,255,255,255,255,255,255,192,47,64,1,255,255,255,255,255,255,128,13,0,0,6,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0, + // 0x8fd8 还 + 216,143,38,38,124,40,1,251,0,240,0,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,0,3,255,0,255,255,255,255,255,255,0,1,255,192,255,255,255,255,255,255,0,0,127,224,255,255,255,255,255,255,0,0,31,248,170,170,171,255,170,170,0,0,11,252,0,0,3,252,0,0,0,0,3,240,0,0,11,248,0,0,0,0,0,128,0,0,15,240,0,0,0,0,0,0,0,0,63,224,0,0,0,0,0,0,0,0,127,208,0,0,0,0,0,0,0,1,255,208,0,0,0,0,0,0,0,3,255,208,128,0,0,127,255,208,0,15,255,211,240,0,0,127,255,208,0,47,255,223,252,0,0,127,255,208,0,191,255,211,255,0,0,42,191,208,2,255,159,208,255,192,0,0,31,208,11,254,31,208,127,240,0,0,31,208,63,248,31,208,31,252,0,0,31,209,255,240,31,208,7,254,0,0,31,219,255,128,31,208,2,255,128,0,31,211,254,0,31,208,0,191,64,0,31,208,244,0,31,208,0,61,0,0,31,208,80,0,31,208,0,4,0,0,31,208,0,0,31,208,0,0,0,0,31,208,0,0,31,208,0,0,0,0,31,208,0,0,31,208,0,0,0,0,31,208,0,0,31,208,0,0,0,0,31,208,0,0,31,208,0,0,0,0,191,240,0,0,31,208,0,0,0,3,255,253,0,0,31,208,0,0,0,15,255,255,208,0,0,0,0,0,0,63,244,127,254,80,0,0,1,90,224,255,208,15,255,255,255,255,255,255,208,127,128,2,255,255,255,255,255,255,192,47,0,0,31,255,255,255,255,255,192,12,0,0,0,90,170,170,170,85,0,0,0,0,0,0,0,0,0,0,0, + // 0x8fdb 进 + 219,143,36,37,77,40,2,252,2,64,0,0,63,128,11,240,0,15,208,0,0,63,128,11,240,0,47,244,0,0,63,128,11,240,0,11,253,0,0,63,128,11,240,0,2,255,0,0,63,128,11,240,0,0,191,192,0,63,128,11,240,0,0,63,224,170,191,234,175,250,164,0,15,193,255,255,255,255,255,252,0,2,1,255,255,255,255,255,252,0,0,1,255,255,255,255,255,252,0,0,0,0,63,128,11,240,0,0,0,0,0,63,128,11,240,0,0,0,0,0,63,128,11,240,0,0,0,0,0,63,128,11,240,0,255,255,192,0,63,128,11,240,0,255,255,192,0,63,128,11,240,0,255,255,193,170,191,234,175,250,169,85,127,194,255,255,255,255,255,254,0,63,194,255,255,255,255,255,254,0,63,194,255,255,255,255,255,254,0,63,192,0,191,0,11,240,0,0,63,192,0,255,0,11,240,0,0,63,192,1,254,0,11,240,0,0,63,192,3,253,0,11,240,0,0,63,192,7,252,0,11,240,0,0,63,192,15,248,0,11,240,0,0,63,192,47,240,0,11,240,0,0,63,192,191,208,0,11,240,0,0,63,192,127,128,0,11,240,0,1,255,224,31,0,0,11,240,0,11,255,253,4,0,0,1,80,0,63,250,255,208,0,0,0,0,0,255,208,127,255,234,85,170,175,255,255,64,11,255,255,255,255,255,255,125,0,0,191,255,255,255,255,254,56,0,0,6,191,255,255,255,169,0,0,0,0,0,0,0,0,0, + // 0x8fde 连 + 222,143,38,39,134,40,1,251,0,0,0,0,2,144,0,0,0,0,1,240,0,0,3,253,0,0,0,0,7,252,0,0,3,252,0,0,0,0,2,255,0,0,11,248,0,0,0,0,0,255,128,255,255,255,255,255,255,0,0,63,208,255,255,255,255,255,255,0,0,31,240,255,255,255,255,255,255,0,0,11,244,0,127,192,0,0,0,0,0,3,208,0,127,64,0,0,0,0,0,1,0,0,255,1,253,0,0,0,0,0,0,1,254,1,253,0,0,0,0,0,0,3,252,1,253,0,0,0,0,0,0,7,248,1,253,0,0,0,0,0,0,15,240,1,253,0,0,0,63,255,208,63,255,255,255,255,248,0,63,255,208,63,255,255,255,255,248,0,63,255,208,31,255,255,255,255,248,0,21,111,208,14,149,86,254,85,84,0,0,15,208,0,0,1,253,0,0,0,0,15,208,0,0,1,253,0,0,0,0,15,208,0,0,1,253,0,0,0,0,15,208,0,0,1,253,0,0,0,0,15,208,170,170,170,254,170,170,64,0,15,209,255,255,255,255,255,255,64,0,15,209,255,255,255,255,255,255,64,0,15,209,255,255,255,255,255,255,64,0,15,208,0,0,1,253,0,0,0,0,15,208,0,0,1,253,0,0,0,0,15,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,191,240,0,0,1,253,0,0,0,3,255,253,0,0,1,253,0,0,0,15,255,255,208,0,1,253,0,0,0,63,244,127,254,80,0,0,5,90,224,191,208,15,255,255,255,255,255,255,208,127,128,2,255,255,255,255,255,255,192,31,0,0,31,255,255,255,255,255,192,9,0,0,0,90,170,170,170,85,0,0,0,0,0,0,0,0,0,0,0, + // 0x8ff7 迷 + 247,143,38,37,114,40,1,252,1,64,0,0,0,15,224,0,0,0,7,224,0,6,0,15,224,0,224,0,31,252,0,63,128,15,224,2,253,0,11,255,0,47,192,15,224,3,252,0,1,255,192,15,224,15,224,7,244,0,0,63,240,11,240,15,224,15,240,0,0,15,248,3,248,15,224,31,208,0,0,7,224,3,252,15,224,63,192,0,0,1,128,1,253,15,224,127,64,0,0,0,0,0,244,15,224,126,0,0,0,0,0,0,64,15,224,0,0,0,0,0,0,0,0,15,224,0,0,0,0,0,2,255,255,255,255,255,255,128,0,0,2,255,255,255,255,255,255,128,0,0,2,255,255,255,255,255,255,128,63,255,240,85,86,255,255,85,85,0,63,255,240,0,2,255,255,64,0,0,63,255,240,0,3,255,255,192,0,0,21,95,240,0,15,255,255,224,0,0,0,15,240,0,47,223,231,244,0,0,0,15,240,0,127,143,227,253,0,0,0,15,240,1,255,15,224,255,0,0,0,15,240,7,253,15,224,127,208,0,0,15,240,31,248,15,224,47,244,0,0,15,240,191,240,15,224,15,254,0,0,15,243,255,192,15,224,3,255,192,0,15,242,255,0,15,224,0,255,64,0,15,240,184,0,15,224,0,45,0,0,15,240,32,0,15,224,0,4,0,0,127,252,0,0,15,224,0,0,0,2,255,255,64,0,15,224,0,0,0,15,255,191,244,0,0,0,0,0,0,127,252,47,255,250,170,170,170,171,208,63,224,11,255,255,255,255,255,255,192,47,128,0,191,255,255,255,255,255,128,13,0,0,6,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0, + // 0x9000 退 + 0,144,38,37,114,40,1,252,0,64,0,0,0,0,0,0,0,0,3,224,0,3,255,255,255,255,208,0,15,252,0,3,255,255,255,255,208,0,7,255,64,3,255,255,255,255,208,0,0,255,208,3,248,0,0,15,208,0,0,63,244,3,248,0,0,15,208,0,0,15,252,3,248,0,0,15,208,0,0,3,240,3,255,255,255,255,208,0,0,0,128,3,255,255,255,255,208,0,0,0,0,3,255,255,255,255,208,0,0,0,0,3,248,0,0,15,208,0,0,0,0,3,248,0,0,15,208,0,0,0,0,3,248,0,0,15,208,0,0,0,0,3,255,255,255,255,208,0,0,0,0,3,255,255,255,255,208,0,63,255,240,3,255,255,255,255,224,0,63,255,240,3,248,7,244,0,120,0,63,255,240,3,248,3,248,1,255,0,21,95,240,3,248,1,252,11,255,0,0,15,240,3,248,0,254,63,244,0,0,15,240,3,248,0,191,255,192,0,0,15,240,3,248,0,63,253,0,0,0,15,240,3,248,0,47,240,0,0,0,15,240,3,248,0,15,248,0,0,0,15,240,3,248,27,231,255,0,0,0,15,240,3,255,255,241,255,208,0,0,15,240,111,255,255,240,127,253,0,0,15,240,191,255,254,64,31,255,192,0,15,240,127,254,64,0,7,255,0,0,127,252,62,64,0,0,0,125,0,2,255,255,64,0,0,0,0,4,0,15,255,191,244,0,0,0,0,0,0,127,252,47,255,250,170,170,170,171,208,63,224,11,255,255,255,255,255,255,192,47,128,0,191,255,255,255,255,255,128,13,0,0,6,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0, + // 0x9009 选 + 9,144,37,39,134,40,2,251,0,0,0,0,0,10,144,0,0,0,0,0,0,0,0,15,224,0,0,0,15,0,0,3,248,15,224,0,0,0,127,208,0,3,248,15,224,0,0,0,63,244,0,7,244,15,224,0,0,0,15,253,0,15,240,31,224,0,0,0,3,255,0,31,255,255,255,255,244,0,0,255,192,63,255,255,255,255,244,0,0,63,192,127,255,255,255,255,244,0,0,30,0,255,0,15,224,0,0,0,0,0,3,253,0,15,224,0,0,0,0,0,1,252,0,15,224,0,0,0,0,0,0,32,0,15,224,0,0,0,0,0,0,0,0,15,224,0,0,0,0,0,3,255,255,255,255,255,255,0,0,0,3,255,255,255,255,255,255,0,255,255,67,255,255,255,255,255,255,0,255,255,64,0,47,224,127,128,0,0,255,255,64,0,47,192,63,128,0,0,85,191,64,0,63,192,63,128,0,0,0,63,64,0,63,192,63,128,0,0,0,63,64,0,127,128,63,128,0,0,0,63,64,0,191,64,63,128,0,0,0,63,64,0,255,0,63,128,52,0,0,63,64,3,254,0,63,128,63,64,0,63,64,11,252,0,63,128,63,64,0,63,64,47,244,0,63,128,63,0,0,63,65,255,224,0,63,213,191,0,0,63,79,255,128,0,63,255,254,0,0,63,67,253,0,0,47,255,253,0,0,63,225,224,0,0,11,255,244,0,0,255,253,0,0,0,0,0,0,0,11,255,255,128,0,0,0,0,0,0,47,253,127,254,64,0,0,5,90,64,255,224,11,255,255,255,255,255,255,0,191,128,1,255,255,255,255,255,255,0,62,0,0,27,255,255,255,255,254,0,8,0,0,0,5,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x901f 速 + 31,144,38,38,124,40,1,252,0,0,0,0,0,11,224,0,0,0,1,128,0,0,0,15,224,0,0,0,11,240,0,0,0,15,224,0,0,0,31,253,0,0,0,15,224,0,0,0,7,255,64,255,255,255,255,255,255,128,0,255,208,255,255,255,255,255,255,128,0,63,244,255,255,255,255,255,255,128,0,15,248,0,0,15,240,0,0,0,0,3,208,0,0,15,224,0,0,0,0,1,64,0,0,15,224,0,0,0,0,0,0,47,255,255,255,255,252,0,0,0,0,47,255,255,255,255,252,0,0,0,0,47,255,255,255,255,252,0,0,0,0,47,128,15,224,2,252,0,0,0,0,47,128,15,224,2,252,0,0,0,0,47,128,15,224,2,252,0,63,255,240,47,128,15,224,2,252,0,63,255,240,47,128,15,224,2,252,0,63,255,240,47,255,255,255,255,252,0,21,95,240,47,255,255,255,255,252,0,0,15,240,47,255,255,255,255,252,0,0,15,240,0,0,255,254,0,0,0,0,15,240,0,3,255,255,128,0,0,0,15,240,0,15,255,255,224,0,0,0,15,240,0,63,223,231,252,0,0,0,15,240,1,255,79,225,255,64,0,0,15,240,11,253,15,224,127,240,0,0,15,240,127,244,15,224,31,254,0,0,15,242,255,208,15,224,7,255,128,0,15,240,255,0,15,224,0,254,0,0,127,252,52,0,15,224,0,28,0,2,255,255,64,0,15,224,0,0,0,15,255,191,244,0,0,0,0,0,0,127,252,47,255,250,170,170,170,171,208,63,224,11,255,255,255,255,255,255,192,47,128,0,191,255,255,255,255,255,128,13,0,0,6,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0, + // 0x90e8 部 + 232,144,38,38,124,40,1,252,0,0,21,64,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,1,85,85,88,0,0,0,47,192,0,7,255,255,255,128,0,0,47,192,0,7,255,255,255,208,31,255,255,255,255,135,255,255,255,192,31,255,255,255,255,135,244,0,191,64,31,255,255,255,255,135,244,0,255,0,0,4,0,1,64,7,244,1,254,0,0,189,0,3,244,7,244,2,252,0,0,191,0,7,240,7,244,3,252,0,0,63,0,15,224,7,244,7,244,0,0,63,64,15,208,7,244,15,240,0,0,47,128,31,192,7,244,15,224,0,0,47,128,47,64,7,244,47,192,0,21,105,85,86,85,71,244,63,128,0,127,255,255,255,255,199,244,127,128,0,127,255,255,255,255,199,244,63,208,0,127,255,255,255,255,199,244,15,240,0,0,0,0,0,0,7,244,3,252,0,0,0,0,0,0,7,244,1,253,0,0,0,0,0,0,7,244,0,255,0,0,85,85,85,84,7,244,0,127,0,3,255,255,255,252,7,244,0,63,128,3,255,255,255,252,7,244,0,63,128,3,255,255,255,252,7,244,0,63,192,3,248,0,1,252,7,244,0,63,192,3,248,0,1,252,7,244,0,63,128,3,248,0,1,252,7,244,0,255,128,3,248,0,1,252,7,244,255,255,64,3,248,0,1,252,7,244,191,255,0,3,248,0,1,252,7,244,127,252,0,3,255,255,255,252,7,244,42,144,0,3,255,255,255,252,7,244,0,0,0,3,255,255,255,252,7,244,0,0,0,3,252,0,2,252,7,244,0,0,0,3,248,0,1,252,7,244,0,0,0,2,164,0,0,84,7,240,0,0,0, + // 0x914d 配 + 77,145,37,37,114,40,2,252,21,85,85,85,80,0,0,0,0,0,255,255,255,255,240,255,255,255,252,0,255,255,255,255,240,255,255,255,252,0,255,255,255,255,240,255,255,255,252,0,0,15,75,192,0,170,170,171,252,0,0,15,75,192,0,0,0,1,252,0,0,15,75,192,0,0,0,1,252,0,0,15,75,192,0,0,0,1,252,0,63,255,255,255,208,0,0,1,252,0,63,255,255,255,208,0,0,1,252,0,63,255,255,255,208,0,0,1,252,0,63,11,79,15,208,0,0,1,252,0,63,11,15,11,208,0,0,1,252,0,63,11,15,11,208,170,170,171,252,0,63,11,15,11,208,255,255,255,252,0,63,11,15,11,208,255,255,255,252,0,63,15,15,11,208,255,255,255,252,0,63,15,15,11,208,254,0,1,252,0,63,30,15,11,208,254,0,1,252,0,63,60,15,255,208,254,0,1,252,0,63,184,7,255,208,254,0,0,0,0,63,112,0,11,208,254,0,0,0,0,63,0,0,11,208,254,0,0,0,0,63,0,0,11,208,254,0,0,0,0,63,170,170,175,208,254,0,0,0,0,63,255,255,255,208,254,0,0,0,0,63,255,255,255,208,254,0,0,16,0,63,0,0,11,208,254,0,0,62,0,63,0,0,11,208,254,0,0,63,128,63,0,0,11,208,254,0,0,63,64,63,0,0,11,208,254,0,0,63,64,63,255,255,255,208,254,0,0,127,0,63,255,255,255,208,255,0,0,255,0,63,255,255,255,208,255,255,255,254,0,63,0,0,11,208,127,255,255,253,0,63,0,0,11,208,47,255,255,248,0,42,0,0,0,0,1,85,85,64,0, + // 0x91ca 释 + 202,145,38,37,114,40,1,252,0,0,5,189,0,0,0,0,0,0,1,107,255,255,47,255,255,255,254,0,63,255,255,254,47,255,255,255,255,128,63,255,253,0,47,255,255,255,255,0,26,151,248,0,6,253,85,86,254,0,0,3,248,0,0,253,0,7,252,0,11,3,248,31,64,127,0,15,240,0,31,131,248,63,64,63,192,63,208,0,15,195,248,63,0,15,241,255,64,0,7,227,248,189,0,7,255,253,0,0,3,243,248,252,0,2,255,248,0,0,2,243,249,240,0,1,255,240,0,0,0,3,248,0,0,31,255,253,0,0,0,3,248,0,1,255,255,255,208,0,63,255,255,254,111,255,208,255,254,64,63,255,255,255,255,253,0,31,255,224,63,255,255,254,255,208,0,2,255,192,0,11,252,0,56,0,127,64,27,64,0,15,255,0,0,0,127,64,0,0,0,47,255,192,0,0,127,64,0,0,0,63,255,240,15,255,255,255,252,0,0,191,251,252,15,255,255,255,252,0,1,255,249,255,15,255,255,255,252,0,3,247,248,127,5,85,127,149,84,0,11,243,248,44,0,0,127,64,0,0,31,211,248,4,0,0,127,64,0,0,63,195,248,0,0,0,127,64,0,0,127,67,248,0,255,255,255,255,255,192,63,3,248,0,255,255,255,255,255,192,28,3,248,0,255,255,255,255,255,192,4,3,248,0,85,85,191,149,85,64,0,3,248,0,0,0,127,64,0,0,0,3,248,0,0,0,127,64,0,0,0,3,248,0,0,0,127,64,0,0,0,3,248,0,0,0,127,64,0,0,0,3,248,0,0,0,127,64,0,0,0,2,248,0,0,0,127,64,0,0, + // 0x91cd 重 + 205,145,36,37,77,40,2,253,0,0,0,0,0,0,21,180,0,0,0,0,85,170,255,255,252,0,1,255,255,255,255,255,255,254,0,0,255,255,255,255,255,250,80,0,0,255,255,255,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,106,170,170,255,170,170,169,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,0,254,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,85,85,255,85,85,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,0,254,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,170,170,255,170,170,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x91cf 量 + 207,145,36,36,68,40,2,253,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,192,0,0,0,3,252,0,0,63,128,0,0,0,3,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,128,0,0,0,3,252,0,0,63,128,0,0,0,3,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,170,170,170,170,170,170,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,0,255,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,0,255,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,1,170,170,170,255,170,170,170,64,2,255,255,255,255,255,255,255,128,2,255,255,255,255,255,255,255,128,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x9488 针 + 136,148,37,38,124,40,1,252,0,9,0,0,0,0,42,64,0,0,0,15,208,0,0,0,63,128,0,0,0,47,192,0,0,0,63,128,0,0,0,63,128,0,0,0,63,128,0,0,0,191,149,85,0,0,63,128,0,0,1,255,255,255,0,0,63,128,0,0,3,255,255,255,0,0,63,128,0,0,15,255,255,255,0,0,63,128,0,0,47,240,0,0,0,0,63,128,0,0,127,192,0,0,0,0,63,128,0,0,127,128,0,0,0,0,63,128,0,0,63,0,0,0,0,0,63,128,0,0,30,255,255,252,0,0,63,128,0,0,2,255,255,252,255,255,255,255,255,192,2,255,255,252,255,255,255,255,255,192,0,3,248,0,255,255,255,255,255,192,0,3,248,0,255,255,255,255,255,192,0,3,248,0,0,0,63,128,0,0,0,3,248,0,0,0,63,128,0,0,0,3,248,0,0,0,63,128,0,0,31,255,255,254,0,0,63,128,0,0,31,255,255,254,0,0,63,128,0,0,31,255,255,254,0,0,63,128,0,0,5,87,253,84,0,0,63,128,0,0,0,3,248,0,0,0,63,128,0,0,0,3,248,0,0,0,63,128,0,0,0,3,248,0,0,0,63,128,0,0,0,3,248,0,0,0,63,128,0,0,0,3,248,0,0,0,63,128,0,0,0,3,248,7,64,0,63,128,0,0,0,3,248,127,64,0,63,128,0,0,0,3,255,255,128,0,63,128,0,0,0,3,255,255,0,0,63,128,0,0,0,15,255,244,0,0,63,128,0,0,0,47,255,64,0,0,63,128,0,0,0,15,244,0,0,0,63,128,0,0,0,11,128,0,0,0,63,128,0,0,0,1,0,0,0,0,42,128,0,0, + // 0x94ae 钮 + 174,148,38,38,124,40,1,252,0,36,0,0,0,0,0,0,0,0,0,63,64,0,0,0,0,0,0,0,0,191,0,0,191,255,255,255,254,0,0,255,0,0,191,255,255,255,254,0,1,253,0,0,191,255,255,255,254,0,2,255,255,253,85,91,249,85,253,0,3,255,255,253,0,7,244,0,253,0,11,255,255,253,0,7,240,0,253,0,31,208,0,0,0,11,240,1,253,0,63,192,0,0,0,11,240,1,252,0,191,64,0,0,0,15,240,1,252,0,127,0,0,0,0,15,240,2,252,0,63,255,255,244,0,15,224,2,252,0,23,255,255,244,0,15,224,2,252,0,3,255,255,244,0,15,208,2,252,0,1,91,245,80,0,15,208,3,252,0,0,7,240,0,127,255,255,255,248,0,0,7,240,0,127,255,255,255,248,0,0,7,240,0,127,255,255,255,248,0,0,7,240,0,106,191,234,171,248,0,63,255,255,253,0,63,192,3,244,0,63,255,255,253,0,63,128,3,244,0,63,255,255,253,0,63,128,7,244,0,21,91,245,84,0,63,64,7,240,0,0,7,240,0,0,127,64,11,240,0,0,7,240,0,0,127,0,11,240,0,0,7,240,0,0,191,0,11,240,0,0,7,240,0,0,191,0,15,240,0,0,7,240,4,0,255,0,15,224,0,0,7,240,184,0,254,0,15,224,0,0,7,247,252,0,253,0,15,224,0,0,7,255,252,1,253,0,15,208,0,0,11,255,224,1,252,0,31,208,0,0,15,255,95,255,255,255,255,255,208,0,63,248,31,255,255,255,255,255,208,0,127,192,31,255,255,255,255,255,208,0,30,0,26,170,170,170,170,170,128,0,4,0,0,0,0,0,0,0,0, + // 0x9519 错 + 25,149,37,38,124,40,1,252,0,8,0,0,0,190,0,127,0,0,0,31,192,0,0,190,0,127,0,0,0,63,128,0,0,190,0,127,0,0,0,127,64,0,0,190,0,127,0,0,0,255,0,0,0,190,0,127,0,0,1,255,255,252,127,255,255,255,255,64,3,255,255,252,127,255,255,255,255,64,11,255,255,252,127,255,255,255,255,64,31,250,170,168,0,191,0,191,0,0,127,192,0,0,0,190,0,127,0,0,127,64,0,0,0,190,0,127,0,0,47,0,0,0,0,190,0,127,0,0,30,255,255,248,0,190,0,127,0,0,2,255,255,248,85,255,85,191,85,64,2,255,255,249,255,255,255,255,255,192,0,91,245,81,255,255,255,255,255,192,0,3,240,1,255,255,255,255,255,192,0,3,240,0,0,0,0,0,0,0,0,3,240,0,0,0,0,0,0,0,0,3,240,0,0,0,0,0,0,0,31,255,255,253,15,255,255,255,248,0,31,255,255,253,15,255,255,255,248,0,31,255,255,253,15,255,255,255,248,0,5,87,245,84,15,208,0,2,248,0,0,3,240,0,15,208,0,2,248,0,0,3,240,0,15,208,0,2,248,0,0,3,240,0,15,255,255,255,248,0,0,3,240,0,15,255,255,255,248,0,0,3,240,0,15,255,255,255,248,0,0,3,240,40,15,208,0,2,248,0,0,3,246,252,15,208,0,2,248,0,0,7,255,252,15,208,0,2,248,0,0,11,255,248,15,208,0,2,248,0,0,31,255,128,15,255,255,255,248,0,0,63,252,0,15,255,255,255,248,0,0,31,208,0,15,255,255,255,248,0,0,14,0,0,15,208,0,2,248,0,0,0,0,0,10,144,0,1,84,0, + // 0x955c 镜 + 92,149,38,38,124,40,1,252,0,4,0,0,0,0,109,0,0,0,0,47,192,0,0,0,255,0,0,0,0,63,192,0,0,0,127,64,0,0,0,127,64,0,63,255,255,255,255,0,0,255,85,80,63,255,255,255,255,0,1,255,255,248,63,255,255,255,255,0,3,255,255,248,0,108,0,10,64,0,11,255,255,248,0,253,0,47,192,0,31,240,0,0,0,191,0,63,128,0,127,192,0,0,0,63,0,127,0,0,127,128,0,1,255,255,255,255,255,192,63,0,0,1,255,255,255,255,255,192,31,255,255,241,255,255,255,255,255,192,2,255,255,240,0,0,0,0,0,0,2,255,255,240,0,0,0,0,0,0,0,91,245,80,47,255,255,255,253,0,0,11,240,0,47,255,255,255,253,0,0,11,240,0,47,213,85,85,253,0,0,11,240,0,47,128,0,0,253,0,0,11,240,0,47,128,0,0,253,0,47,255,255,252,47,255,255,255,253,0,47,255,255,252,47,255,255,255,253,0,47,255,255,252,47,213,85,85,253,0,5,91,245,84,47,128,0,0,253,0,0,11,240,0,47,213,85,85,253,0,0,11,240,0,47,255,255,255,253,0,0,11,240,0,47,255,255,255,253,0,0,11,240,0,0,63,65,252,0,0,0,11,240,24,0,127,1,252,0,0,0,11,241,252,0,127,1,252,0,0,0,11,251,252,0,255,1,252,0,0,0,15,255,252,1,254,1,252,7,208,0,31,255,208,7,252,1,252,7,224,0,63,254,0,47,244,1,252,11,208,0,127,244,11,255,224,1,255,191,192,0,63,128,15,255,64,0,255,255,192,0,29,0,7,248,0,0,127,255,0,0,0,0,2,64,0,0,0,0,0, + // 0x957f 长 + 127,149,36,38,86,40,2,252,0,0,169,0,0,0,0,0,0,0,1,253,0,0,0,0,208,0,0,1,253,0,0,0,3,253,0,0,1,253,0,0,0,15,253,0,0,1,253,0,0,0,127,244,0,0,1,253,0,0,2,255,208,0,0,1,253,0,0,15,255,64,0,0,1,253,0,0,191,252,0,0,0,1,253,0,7,255,224,0,0,0,1,253,0,127,255,64,0,0,0,1,253,7,255,252,0,0,0,0,1,253,11,255,208,0,0,0,0,1,253,2,254,0,0,0,0,0,1,253,0,160,0,0,0,0,0,1,253,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,106,171,255,170,191,234,170,170,169,0,1,253,0,31,208,0,0,0,0,1,253,0,15,240,0,0,0,0,1,253,0,7,248,0,0,0,0,1,253,0,3,252,0,0,0,0,1,253,0,1,255,0,0,0,0,1,253,0,0,255,128,0,0,0,1,253,0,0,127,224,0,0,0,1,253,0,0,47,248,0,0,0,1,253,0,0,15,254,0,0,0,1,253,0,0,3,255,208,0,0,1,253,0,27,128,255,248,0,0,1,253,27,255,128,63,255,128,0,2,255,255,255,192,11,255,253,0,7,255,255,255,128,1,255,255,0,15,255,255,144,0,0,47,253,0,7,255,144,0,0,0,2,248,0,3,228,0,0,0,0,0,16,0,1,0,0,0,0,0,0,0, + // 0x95ed 闭 + 237,149,34,37,77,40,3,252,7,128,0,0,0,0,0,0,0,47,224,1,85,85,85,85,85,80,15,248,3,255,255,255,255,255,224,7,253,3,255,255,255,255,255,224,1,255,3,255,255,255,255,255,224,0,191,128,0,0,0,0,15,224,0,62,0,0,0,0,0,15,224,0,4,0,0,2,252,0,15,224,21,0,0,0,3,252,0,15,224,191,0,0,0,3,252,0,15,224,191,0,0,0,3,252,0,15,224,191,0,0,0,3,252,0,15,224,191,2,170,170,171,254,170,15,224,191,3,255,255,255,255,255,15,224,191,3,255,255,255,255,255,15,224,191,3,255,255,255,255,255,15,224,191,0,0,0,127,252,0,15,224,191,0,0,0,255,252,0,15,224,191,0,0,3,255,252,0,15,224,191,0,0,15,255,252,0,15,224,191,0,0,63,243,252,0,15,224,191,0,0,255,195,252,0,15,224,191,0,3,255,67,252,0,15,224,191,0,31,253,3,252,0,15,224,191,0,191,244,3,252,0,15,224,191,7,255,192,3,252,0,15,224,191,47,254,0,3,252,0,15,224,191,15,244,0,3,252,0,15,224,191,3,128,0,3,252,0,15,224,191,0,0,26,171,252,0,15,224,191,0,0,31,255,248,0,15,224,191,0,0,15,255,244,0,15,224,191,0,0,11,254,128,0,15,224,191,0,0,0,0,0,47,255,224,191,0,0,0,0,0,31,255,208,191,0,0,0,0,0,15,255,64,106,0,0,0,0,0,5,80,0, + // 0x95f2 闲 + 242,149,34,37,77,40,3,252,3,208,0,0,0,0,0,0,0,15,240,2,255,255,255,255,255,224,7,252,2,255,255,255,255,255,224,2,255,2,255,255,255,255,255,224,0,191,193,85,85,85,85,95,224,0,63,224,0,0,0,0,15,224,0,15,240,0,0,0,0,15,224,0,7,208,0,0,0,0,15,224,170,2,0,2,248,0,0,15,224,254,0,0,2,248,0,0,15,224,254,0,0,2,248,0,0,15,224,254,0,0,2,248,0,0,15,224,254,0,0,2,248,0,0,15,224,254,7,255,255,255,255,255,15,224,254,7,255,255,255,255,255,15,224,254,7,255,255,255,255,255,15,224,254,0,0,31,255,64,0,15,224,254,0,0,63,255,192,0,15,224,254,0,0,127,255,240,0,15,224,254,0,0,255,255,252,0,15,224,254,0,2,255,250,254,0,15,224,254,0,7,246,248,255,128,15,224,254,0,31,226,248,63,208,15,224,254,0,127,194,248,15,240,15,224,254,1,255,66,248,7,252,15,224,254,7,254,2,248,2,254,15,224,254,31,248,2,248,0,252,15,224,254,11,224,2,248,0,112,15,224,254,3,128,2,248,0,0,15,224,254,0,0,2,248,0,0,15,224,254,0,0,2,248,0,0,15,224,254,0,0,2,248,0,0,15,224,254,0,0,2,248,0,0,15,224,254,0,0,1,84,2,255,255,224,254,0,0,0,0,1,255,255,192,254,0,0,0,0,0,255,255,64,254,0,0,0,0,0,106,148,0, + // 0x95f4 间 + 244,149,34,37,77,40,3,252,7,128,0,0,0,0,0,0,0,47,224,1,85,85,85,85,85,80,15,248,3,255,255,255,255,255,224,7,253,3,255,255,255,255,255,224,1,255,3,255,255,255,255,255,224,0,191,128,0,0,0,0,15,224,0,62,0,0,0,0,0,15,224,0,20,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,191,64,0,0,0,0,0,15,224,191,64,0,0,0,0,0,15,224,191,64,47,255,255,255,192,15,224,191,64,47,255,255,255,192,15,224,191,64,47,255,255,255,192,15,224,191,64,47,128,0,47,192,15,224,191,64,47,128,0,47,192,15,224,191,64,47,128,0,47,192,15,224,191,64,47,128,0,47,192,15,224,191,64,47,128,0,47,192,15,224,191,64,47,255,255,255,192,15,224,191,64,47,255,255,255,192,15,224,191,64,47,255,255,255,192,15,224,191,64,47,128,0,47,192,15,224,191,64,47,128,0,47,192,15,224,191,64,47,128,0,47,192,15,224,191,64,47,128,0,47,192,15,224,191,64,47,128,0,47,192,15,224,191,64,47,255,255,255,192,15,224,191,64,47,255,255,255,192,15,224,191,64,47,255,255,255,192,15,224,191,64,0,0,0,0,0,15,224,191,64,0,0,0,0,0,15,224,191,64,0,0,0,0,0,15,224,191,64,0,0,0,0,15,255,224,191,64,0,0,0,0,11,255,208,191,64,0,0,0,0,7,255,64,106,0,0,0,0,0,1,64,0, + // 0x9608 阈 + 8,150,34,38,86,40,3,252,0,144,0,0,0,0,0,0,0,3,240,0,85,85,85,85,85,64,7,252,2,255,255,255,255,255,208,2,255,2,255,255,255,255,255,208,0,255,130,255,255,255,255,255,208,0,63,208,0,0,0,0,15,208,0,31,240,0,0,0,0,15,208,0,11,244,0,31,130,0,15,208,0,3,192,0,31,143,192,15,208,191,0,0,0,31,139,240,15,208,191,0,0,0,31,130,244,15,208,191,0,0,0,15,128,128,15,208,191,15,255,255,255,255,255,15,208,191,15,255,255,255,255,255,15,208,191,15,255,255,255,255,255,15,208,191,0,0,0,15,192,0,15,208,191,0,0,0,15,192,144,15,208,191,3,255,255,15,192,252,15,208,191,3,255,255,11,193,248,15,208,191,3,224,31,11,210,240,15,208,191,3,224,31,7,211,240,15,208,191,3,224,31,7,231,224,15,208,191,3,224,31,3,255,192,15,208,191,3,255,255,3,255,128,15,208,191,3,255,255,3,255,0,15,208,191,0,0,0,2,254,0,15,208,191,0,0,0,1,253,11,15,208,191,0,0,107,194,252,11,143,208,191,6,255,255,199,254,15,143,208,191,15,255,255,223,255,79,79,208,191,15,255,144,127,175,255,15,208,191,10,64,1,254,15,254,15,208,191,0,0,3,248,3,252,15,208,191,0,0,0,224,0,80,31,208,191,0,0,0,0,1,255,255,208,191,0,0,0,0,0,255,255,192,191,0,0,0,0,0,191,254,0,106,0,0,0,0,0,20,0,0, + // 0x964d 降 + 77,150,36,38,86,40,3,252,0,0,0,0,0,148,0,0,0,0,0,0,0,1,254,0,0,0,191,255,248,0,3,252,0,0,0,191,255,255,0,7,248,0,0,0,191,255,254,0,15,255,255,254,0,190,86,253,0,63,255,255,255,64,190,1,252,0,255,255,255,255,0,190,3,248,3,255,64,1,253,0,190,3,244,15,255,192,3,252,0,190,7,240,127,255,240,15,244,0,190,11,224,255,135,248,63,208,0,190,15,208,61,1,255,255,128,0,190,31,192,4,0,191,254,0,0,190,47,128,0,0,63,252,0,0,190,63,64,0,1,255,255,128,0,190,31,192,0,31,255,255,248,0,190,11,240,6,255,248,47,255,228,190,3,244,191,255,192,7,255,253,190,2,252,191,253,0,254,111,248,190,0,252,63,128,0,254,1,176,190,0,253,20,0,0,254,0,0,190,0,253,31,255,255,255,255,224,190,0,254,31,255,255,255,255,224,190,0,253,31,255,255,255,255,224,190,1,253,0,254,0,254,0,0,190,191,252,0,254,0,254,0,0,190,63,248,0,254,0,254,0,0,190,63,208,0,254,0,254,0,0,190,0,0,0,254,0,254,0,0,190,0,1,255,255,255,255,255,252,190,0,1,255,255,255,255,255,252,190,0,1,255,255,255,255,255,252,190,0,0,0,0,0,254,0,0,190,0,0,0,0,0,254,0,0,190,0,0,0,0,0,254,0,0,190,0,0,0,0,0,254,0,0,190,0,0,0,0,0,254,0,0,189,0,0,0,0,0,254,0,0, + // 0x9650 限 + 80,150,35,36,68,40,3,252,191,255,254,7,255,255,255,255,192,191,255,255,199,255,255,255,255,192,191,255,255,135,255,255,255,255,192,191,85,191,7,244,0,0,63,192,191,0,191,7,244,0,0,63,192,191,0,254,7,244,0,0,63,192,191,1,252,7,244,0,0,63,192,191,2,252,7,244,0,0,63,192,191,3,244,7,255,255,255,255,192,191,3,240,7,255,255,255,255,192,191,11,224,7,255,255,255,255,192,191,15,208,7,244,0,0,63,192,191,31,192,7,244,0,0,63,192,191,15,240,7,244,0,0,63,192,191,3,248,7,244,0,0,63,192,191,1,252,7,255,255,255,255,192,191,0,254,7,255,255,255,255,192,191,0,127,7,255,255,255,255,192,191,0,63,7,244,15,208,0,0,191,0,63,71,244,11,224,3,64,191,0,63,71,244,7,240,15,224,191,0,63,71,244,3,244,47,240,191,0,127,71,244,2,248,255,192,191,21,255,7,244,1,255,255,0,191,63,255,7,244,0,255,248,0,191,47,253,7,244,0,191,208,0,191,31,224,7,244,0,63,192,0,191,0,0,7,244,0,47,224,0,191,0,0,7,244,0,15,248,0,191,0,0,7,245,111,199,253,0,191,0,0,11,255,255,195,255,64,191,0,6,255,255,255,208,255,224,191,0,7,255,255,249,0,63,252,191,0,3,255,249,0,0,15,248,191,0,2,249,0,0,0,2,240,190,0,0,0,0,0,0,0,64, + // 0x9664 除 + 100,150,36,38,86,40,3,252,0,0,0,0,0,42,64,0,0,0,0,0,0,0,191,208,0,0,191,255,248,0,1,255,240,0,0,191,255,255,0,3,255,252,0,0,191,255,254,0,15,246,254,0,0,190,86,253,0,47,224,255,128,0,190,1,252,0,191,192,63,224,0,190,3,248,2,255,0,15,248,0,190,3,244,11,252,0,7,255,0,190,7,240,47,240,0,0,255,208,190,11,225,255,192,0,0,63,248,190,15,219,255,0,0,0,15,254,190,31,195,255,255,255,255,255,252,190,47,129,226,255,255,255,248,116,190,63,128,66,255,255,255,248,0,190,31,192,0,0,63,128,0,0,190,11,240,0,0,63,128,0,0,190,3,244,0,0,63,128,0,0,190,2,252,0,0,63,128,0,0,190,0,252,0,0,63,192,0,0,190,0,253,63,255,255,255,255,224,190,0,253,63,255,255,255,255,224,190,0,254,63,255,255,255,255,224,190,0,253,0,0,63,128,0,0,190,1,253,0,0,63,128,0,0,190,191,252,7,224,63,129,244,0,190,63,248,15,240,63,130,252,0,190,63,208,15,208,63,128,255,0,190,0,0,63,192,63,128,127,64,190,0,0,127,64,63,128,63,192,190,0,0,255,0,63,128,31,224,190,0,2,253,0,63,128,11,240,190,0,7,252,0,63,128,3,248,190,0,15,240,0,63,128,3,252,190,0,3,208,21,127,128,1,224,190,0,0,64,63,255,128,0,0,190,0,0,0,31,255,0,0,0,190,0,0,0,15,248,0,0,0, + // 0x9669 险 + 105,150,36,38,86,40,3,252,0,0,0,0,0,14,0,0,0,0,0,0,0,0,47,192,0,0,191,255,248,0,0,127,192,0,0,191,255,255,0,0,255,208,0,0,191,255,254,0,2,255,244,0,0,190,86,253,0,7,255,253,0,0,190,1,252,0,15,241,255,64,0,190,3,248,0,63,208,127,208,0,190,3,244,0,255,128,47,244,0,190,7,240,2,255,0,11,254,0,190,11,224,11,252,0,2,255,128,190,15,208,63,240,0,0,191,244,190,31,193,255,208,0,0,47,254,190,47,135,255,255,255,255,231,254,190,47,131,252,255,255,255,224,252,190,15,209,240,255,255,255,224,40,190,7,240,64,0,0,0,0,0,190,3,248,0,0,0,0,0,0,190,1,252,0,0,0,0,0,0,190,0,252,0,64,47,64,11,208,190,0,253,15,192,31,128,15,224,190,0,190,15,192,31,128,31,192,190,0,190,11,224,15,192,47,128,190,0,254,7,240,15,192,63,64,190,1,253,3,240,11,208,127,0,190,127,252,2,244,11,208,253,0,190,63,248,2,248,7,224,252,0,190,63,224,1,252,7,242,248,0,190,0,0,0,252,2,67,240,0,190,0,0,0,224,0,7,224,0,190,0,0,0,0,0,15,192,0,190,0,0,0,0,0,31,128,0,190,0,0,85,85,85,127,85,84,190,0,0,255,255,255,255,255,252,190,0,0,255,255,255,255,255,252,190,0,0,255,255,255,255,255,252,190,0,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,0, + // 0x96f6 零 + 246,150,37,36,104,40,2,252,2,255,255,255,255,255,255,255,64,0,2,255,255,255,255,255,255,255,64,0,1,255,255,255,255,255,255,255,64,0,0,0,0,0,254,0,0,0,0,0,21,85,85,85,255,85,85,85,84,0,63,255,255,255,255,255,255,255,252,0,63,255,255,255,255,255,255,255,252,0,63,64,0,0,254,0,0,1,252,0,63,64,0,0,254,0,0,1,252,0,63,79,255,244,254,47,255,241,252,0,63,79,255,244,254,47,255,241,252,0,63,0,0,0,254,0,0,1,252,0,0,0,0,0,254,0,0,0,0,0,0,63,255,244,84,47,255,252,0,0,0,63,255,251,255,111,255,252,0,0,0,0,0,31,255,224,0,0,0,0,0,0,0,191,255,253,0,0,0,0,0,0,7,255,131,255,208,0,0,0,0,0,127,253,0,191,253,0,0,0,0,11,255,240,0,15,255,228,0,0,1,255,255,234,170,171,255,255,144,0,191,255,231,255,255,255,219,255,255,64,255,253,3,255,255,255,208,127,255,0,127,144,0,0,0,0,0,1,253,0,36,0,0,0,0,0,0,0,4,0,0,255,255,255,255,255,255,248,0,0,0,255,255,255,255,255,255,248,0,0,0,106,170,191,234,170,171,248,0,0,0,0,0,31,192,0,3,248,0,0,0,0,0,31,192,0,3,248,0,0,0,0,0,31,192,0,3,248,0,0,0,0,0,31,192,11,255,244,0,0,0,0,0,31,192,7,255,240,0,0,0,0,0,31,192,3,254,64,0,0,0,0,0,31,192,0,0,0,0,0,0,0,0,31,192,0,0,0,0,0, + // 0x9700 需 + 0,151,36,36,68,40,2,252,2,255,255,255,255,255,255,255,64,2,255,255,255,255,255,255,255,64,2,255,255,255,255,255,255,255,64,0,0,0,0,254,0,0,0,0,42,170,170,170,255,170,170,170,168,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,64,0,0,254,0,0,1,252,63,64,0,0,254,0,0,1,252,63,79,255,244,254,47,255,241,252,63,79,255,244,254,47,255,241,252,63,69,85,80,254,5,85,81,252,21,0,0,0,254,0,0,0,84,0,21,85,80,254,5,85,84,0,0,63,255,244,254,47,255,252,0,0,63,255,244,254,47,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,0,0,0,1,253,0,0,0,0,0,0,0,2,252,0,0,0,0,1,255,255,255,255,255,255,255,208,1,255,255,255,255,255,255,255,208,1,255,255,255,255,255,255,255,208,1,252,0,254,0,63,64,31,208,1,252,0,254,0,63,64,31,208,1,252,0,254,0,63,64,31,208,1,252,0,254,0,63,64,31,208,1,252,0,254,0,63,64,31,208,1,252,0,254,0,63,64,31,208,1,252,0,254,0,63,64,31,208,1,252,0,254,0,63,79,255,192,1,252,0,254,0,63,71,255,192,1,252,0,169,0,42,3,254,0, + // 0x9752 青 + 82,151,36,39,95,40,2,251,0,0,0,0,170,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,191,255,255,255,255,255,254,0,0,191,255,255,255,255,255,254,0,0,106,170,170,255,170,170,170,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,224,0,0,0,7,244,0,0,15,224,0,0,0,7,244,0,0,15,250,170,170,170,171,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,224,0,0,0,7,244,0,0,15,224,0,0,0,7,244,0,0,15,224,0,0,0,7,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,250,170,170,170,171,244,0,0,15,224,0,0,0,7,244,0,0,15,224,0,0,0,7,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,127,255,244,0,0,15,224,0,0,63,255,240,0,0,15,224,0,0,47,254,64,0,0,0,0,0,0,0,0,0,0, + // 0x975e 非 + 94,151,38,39,134,40,1,251,0,0,0,170,0,10,144,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,15,255,255,255,0,31,255,255,255,128,15,255,255,255,0,31,255,255,255,128,15,255,255,255,0,31,255,255,255,128,5,85,85,255,0,31,229,85,85,64,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,7,255,255,255,0,31,255,255,254,0,7,255,255,255,0,31,255,255,254,0,7,255,255,255,0,31,255,255,254,0,1,85,85,255,0,31,229,85,85,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,254,0,31,208,0,0,0,0,0,0,254,84,31,208,0,0,0,0,0,6,255,252,31,208,0,0,0,0,107,255,255,252,31,229,85,85,64,127,255,255,255,252,31,255,255,255,208,63,255,255,253,0,31,255,255,255,208,63,255,159,244,0,31,255,255,255,208,41,64,31,240,0,31,208,0,0,0,0,0,63,208,0,31,208,0,0,0,0,0,191,192,0,31,208,0,0,0,0,2,255,0,0,31,208,0,0,0,0,11,254,0,0,31,208,0,0,0,0,63,248,0,0,31,208,0,0,0,2,255,224,0,0,31,208,0,0,0,15,255,128,0,0,31,208,0,0,0,3,253,0,0,0,31,208,0,0,0,0,224,0,0,0,15,208,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9760 靠 + 96,151,36,39,95,40,2,251,0,2,80,0,254,0,0,0,0,0,11,240,0,254,0,0,0,0,0,31,245,85,255,85,85,85,0,0,63,255,255,255,255,255,255,64,0,191,255,255,255,255,255,255,64,2,254,0,0,254,0,0,0,0,3,252,0,0,254,0,0,0,0,42,254,170,170,255,170,170,170,168,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,0,0,0,0,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,255,0,0,63,255,255,255,255,255,255,0,0,63,149,85,85,85,85,255,0,0,63,64,0,0,0,0,255,0,0,63,64,0,0,0,0,255,0,0,63,255,255,255,255,255,255,0,0,63,255,255,255,255,255,255,0,0,21,86,253,85,191,149,85,0,0,0,1,252,0,63,64,0,0,63,255,255,252,0,63,255,255,252,63,255,255,252,0,63,255,255,252,21,85,86,252,0,63,149,85,84,0,0,1,252,0,63,64,0,0,5,85,86,252,0,63,149,85,80,15,255,255,252,0,63,255,255,244,15,255,255,252,0,63,255,255,244,0,0,2,252,0,63,64,0,0,0,0,6,252,0,63,64,0,0,255,255,255,248,0,63,255,255,255,255,255,255,244,0,63,255,255,255,169,84,31,240,0,63,234,170,170,0,0,191,192,0,63,64,0,0,0,31,255,64,0,63,64,0,0,3,255,252,0,0,63,64,0,0,1,255,208,0,0,63,64,0,0,0,184,0,0,0,42,64,0,0,0,0,0,0,0,0,0,0,0, + // 0x9762 面 + 98,151,36,35,59,40,2,252,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,106,170,170,171,255,170,170,170,169,0,0,0,3,253,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,244,0,0,0,0,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,245,91,245,85,111,213,95,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,255,255,255,192,15,240,15,224,7,255,255,255,192,15,240,15,224,7,255,255,255,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,255,255,255,192,15,240,15,224,7,255,255,255,192,15,240,15,224,7,255,255,255,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,245,85,85,85,85,85,95,240,15,224,0,0,0,0,0,15,240,10,160,0,0,0,0,0,10,160, + // 0x9875 页 + 117,152,36,36,68,40,2,252,21,85,85,85,85,85,85,85,84,63,255,255,255,255,255,255,255,253,63,255,255,255,255,255,255,255,253,63,255,255,255,255,255,255,255,253,0,0,0,3,253,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,15,240,0,0,0,0,0,127,255,255,255,255,255,255,0,0,127,255,255,255,255,255,255,0,0,127,255,255,255,255,255,255,0,0,127,149,85,85,85,86,255,0,0,127,64,0,0,0,0,255,0,0,127,64,0,85,0,0,255,0,0,127,64,0,255,0,0,255,0,0,127,64,0,255,0,0,255,0,0,127,64,0,255,0,0,255,0,0,127,64,0,255,0,0,255,0,0,127,64,0,255,0,0,255,0,0,127,64,0,255,0,0,255,0,0,127,64,0,255,0,0,255,0,0,127,64,0,255,0,0,255,0,0,127,64,0,255,0,0,255,0,0,127,64,0,255,0,0,255,0,0,127,64,1,254,0,0,255,0,0,127,64,3,253,0,0,255,0,0,127,64,15,252,62,0,255,0,0,0,0,47,244,255,240,0,0,0,0,0,255,224,191,254,0,0,0,0,11,255,128,11,255,224,0,0,1,191,253,0,0,191,254,0,0,111,255,244,0,0,11,255,208,111,255,255,64,0,0,1,255,248,127,255,244,0,0,0,0,31,252,47,253,0,0,0,0,0,3,240,10,64,0,0,0,0,0,0,80, + // 0x9879 项 + 121,152,37,36,104,40,1,252,0,0,0,11,255,255,255,255,255,192,0,0,0,11,255,255,255,255,255,192,0,0,0,11,255,255,255,255,255,192,63,255,255,230,170,171,253,85,85,64,63,255,255,224,0,7,252,0,0,0,63,255,255,224,0,15,244,0,0,0,0,31,208,0,0,15,240,0,0,0,0,31,208,1,255,255,255,255,252,0,0,31,208,1,255,255,255,255,252,0,0,31,208,1,255,255,255,255,252,0,0,31,208,1,253,85,85,87,252,0,0,31,208,1,252,0,0,3,252,0,0,31,208,1,252,1,168,3,252,0,0,31,208,1,252,2,252,3,252,0,0,31,208,1,252,2,252,3,252,0,0,31,208,1,252,2,252,3,252,0,0,31,208,1,252,2,252,3,252,0,0,31,208,1,252,2,252,3,252,0,0,31,208,1,252,2,252,3,252,0,0,31,208,1,252,2,252,3,252,0,0,31,208,17,252,2,252,3,252,0,0,31,231,241,252,2,252,3,252,0,0,31,255,241,252,3,252,3,252,0,1,191,255,245,252,3,252,3,252,0,127,255,255,65,252,3,248,3,252,0,191,255,224,1,252,11,244,3,252,0,127,248,0,0,0,15,240,0,0,0,62,64,0,0,0,47,224,240,0,0,16,0,0,0,0,191,195,253,0,0,0,0,0,0,3,255,67,255,192,0,0,0,0,0,47,253,0,191,244,0,0,0,0,2,255,244,0,15,254,0,0,0,0,127,255,192,0,2,255,192,0,0,0,255,253,0,0,0,127,192,0,0,0,63,208,0,0,0,31,0,0,0,0,24,0,0,0,0,0,0, + // 0x9884 预 + 132,152,38,36,104,40,1,252,47,255,255,253,47,255,255,255,255,208,47,255,255,255,111,255,255,255,255,208,47,255,255,255,47,255,255,255,255,208,0,0,7,253,5,85,111,229,85,64,0,0,7,248,0,0,47,192,0,0,0,0,15,240,0,0,63,192,0,0,0,208,63,192,0,0,63,128,0,0,3,248,255,64,3,255,255,255,254,0,7,255,253,0,3,255,255,255,254,0,0,191,248,0,3,255,255,255,254,0,0,31,253,0,3,245,85,85,254,0,0,2,255,192,3,240,0,0,254,0,0,0,127,192,3,240,26,64,254,0,127,255,255,255,211,240,47,192,254,0,127,255,255,255,211,240,47,192,254,0,127,255,255,255,195,240,47,192,254,0,21,87,249,111,195,240,47,192,254,0,0,3,244,47,131,240,47,192,254,0,0,3,244,63,3,240,47,192,254,0,0,3,244,63,3,240,47,192,254,0,0,3,244,190,3,240,47,192,254,0,0,3,244,252,3,240,47,192,254,0,0,3,244,20,3,240,63,128,254,0,0,3,244,0,3,240,63,128,254,0,0,3,244,0,3,240,63,64,254,0,0,3,244,0,3,240,191,0,254,0,0,3,244,0,0,0,255,0,0,0,0,3,244,0,0,2,253,44,0,0,0,3,244,0,0,11,252,191,64,0,0,3,244,0,0,47,240,191,224,0,0,3,244,0,0,255,208,31,248,0,0,7,244,0,11,255,64,7,254,0,15,255,244,0,191,252,0,1,255,192,11,255,240,0,255,224,0,0,127,192,7,255,208,0,62,0,0,0,31,0,2,149,0,0,0,0,0,0,4,0, + // 0x9891 频 + 145,152,38,38,124,40,1,252,0,0,31,128,0,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,0,47,128,1,255,255,255,255,192,2,244,47,128,1,255,255,255,255,192,2,244,47,255,241,255,255,255,255,192,2,244,47,255,240,0,3,240,0,0,2,244,47,255,240,0,11,240,0,0,2,244,47,128,0,0,15,208,0,0,2,244,47,128,0,0,31,192,0,0,2,244,47,128,0,127,255,255,255,0,2,244,47,128,0,127,255,255,255,0,22,245,111,213,84,127,255,255,255,0,127,255,255,255,252,126,0,0,127,0,127,255,255,255,252,126,1,80,127,0,127,255,255,255,252,126,7,224,127,0,0,0,127,0,0,126,7,224,127,0,0,0,127,0,0,126,7,224,127,0,0,144,127,0,0,126,7,224,127,0,1,252,127,2,248,126,7,224,127,0,3,248,127,3,248,126,7,224,127,0,3,240,127,3,244,126,7,224,127,0,7,240,127,7,240,126,11,224,127,0,15,208,127,15,224,126,11,208,127,0,47,192,127,31,208,126,11,208,127,0,63,128,127,63,192,126,15,192,127,0,47,0,127,191,64,126,15,192,127,0,5,0,127,255,0,126,31,192,127,0,0,0,3,253,0,105,47,128,42,0,0,0,15,248,0,0,63,104,0,0,0,0,63,240,0,0,191,191,0,0,0,1,255,192,0,1,254,191,192,0,0,11,255,0,0,7,252,31,244,0,0,191,248,0,0,47,244,7,254,0,27,255,208,0,6,255,208,0,255,128,63,254,0,0,63,255,0,0,63,208,15,244,0,0,15,244,0,0,15,128,10,0,0,0,10,64,0,0,2,0, + // 0x989d 额 + 157,152,37,38,124,40,2,252,0,0,96,0,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,0,2,253,0,7,255,255,255,255,0,191,255,255,255,247,255,255,255,255,0,191,255,255,255,247,255,255,255,255,0,191,255,255,255,240,0,47,128,0,0,190,0,0,7,240,0,63,64,0,0,190,10,64,7,240,0,127,0,0,0,190,31,208,7,240,0,190,0,0,0,189,63,128,7,243,255,255,255,248,0,0,191,255,254,3,255,255,255,248,0,2,255,255,255,131,255,255,255,248,0,7,255,255,255,3,240,0,1,248,0,47,240,1,254,3,240,5,1,248,0,191,192,3,252,3,240,47,129,248,0,255,46,15,244,3,240,47,129,248,0,56,191,255,208,3,240,47,129,248,0,0,127,255,128,3,240,47,65,248,0,0,15,255,224,3,240,47,65,248,0,0,191,255,253,3,240,63,65,248,0,11,255,219,255,195,240,63,65,248,0,255,254,1,255,243,240,63,1,248,0,255,244,0,31,211,240,63,1,248,0,191,64,0,3,67,240,63,1,248,0,55,255,255,255,3,240,127,1,248,0,3,255,255,255,3,240,190,1,248,0,3,255,255,255,3,240,253,1,248,0,3,244,0,191,2,240,252,1,168,0,3,244,0,191,0,2,252,48,0,0,3,244,0,191,0,3,244,253,0,0,3,244,0,191,0,15,241,255,128,0,3,244,0,191,0,63,208,63,240,0,3,255,255,255,2,255,128,11,253,0,3,255,255,255,47,254,0,1,255,64,3,255,255,255,127,244,0,0,127,0,3,244,0,191,47,128,0,0,29,0,1,80,0,0,8,0,0,0,0,0, + // 0x98ce 风 + 206,152,37,36,104,40,2,252,0,191,255,255,255,255,255,253,0,0,0,191,255,255,255,255,255,253,0,0,0,191,255,255,255,255,255,253,0,0,0,191,170,170,170,170,170,253,0,0,0,191,0,0,0,0,1,253,0,0,0,191,0,0,0,0,1,253,0,0,0,191,0,0,0,9,1,253,0,0,0,191,0,0,0,47,193,253,0,0,0,191,7,192,0,63,129,253,0,0,0,191,31,240,0,127,65,253,0,0,0,191,11,248,0,191,1,253,0,0,0,191,3,253,0,254,1,253,0,0,0,255,0,255,66,252,1,253,0,0,0,255,0,127,195,248,1,253,0,0,0,255,0,47,251,244,1,253,0,0,0,255,0,15,255,240,0,253,0,0,0,255,0,3,255,208,0,253,0,0,0,255,0,1,255,192,0,253,0,0,0,255,0,0,255,192,0,253,0,0,0,254,0,2,255,224,0,253,0,0,1,254,0,3,255,240,0,253,0,0,1,253,0,15,255,252,0,253,0,0,1,253,0,47,243,254,0,254,0,0,2,252,0,191,193,255,64,254,0,0,3,252,1,255,64,191,192,254,0,0,3,252,7,254,0,63,224,190,4,0,7,248,31,252,0,31,240,191,10,0,11,244,191,240,0,15,252,127,11,64,15,240,191,192,0,3,248,127,11,192,31,224,47,0,0,2,128,63,79,128,63,208,8,0,0,0,0,63,207,128,191,192,0,0,0,0,0,31,255,64,255,64,0,0,0,0,0,15,255,0,191,0,0,0,0,0,0,7,254,0,29,0,0,0,0,0,0,1,248,0,4,0,0,0,0,0,0,0,0,0, + // 0x9971 饱 + 113,153,37,38,124,40,1,252,0,37,0,0,0,144,0,0,0,0,0,127,0,0,1,252,0,0,0,0,0,191,0,0,2,252,0,0,0,0,0,190,0,0,3,244,0,0,0,0,0,253,0,0,11,244,0,0,0,0,0,253,0,0,15,255,255,255,252,0,1,255,255,248,31,255,255,255,252,0,2,255,255,252,63,255,255,255,252,0,3,255,255,248,191,0,0,1,252,0,3,244,3,244,254,0,0,1,252,0,11,240,7,243,252,0,0,1,252,0,15,224,11,235,248,0,0,1,252,0,15,208,15,239,255,255,255,129,252,0,47,192,31,207,255,255,255,129,252,0,63,133,111,75,191,255,255,129,252,0,191,31,193,2,63,128,47,129,252,0,62,31,192,0,63,128,47,129,252,0,12,31,192,0,63,128,47,129,252,0,0,31,192,0,63,128,47,129,252,0,0,31,192,0,63,128,47,129,252,0,0,31,192,0,63,128,47,129,252,0,0,31,192,0,63,128,47,129,252,0,0,31,192,0,63,255,255,130,252,0,0,31,192,0,63,255,255,130,252,0,0,31,192,0,63,255,255,135,252,0,0,31,192,0,63,128,11,255,248,0,0,31,192,0,63,128,3,255,240,0,0,31,192,64,63,128,3,255,128,0,0,31,193,224,63,128,0,0,0,0,0,31,203,240,63,128,0,0,8,0,0,31,255,240,63,128,0,0,15,128,0,31,255,192,63,128,0,0,15,192,0,47,254,0,63,128,0,0,31,192,0,63,244,0,63,212,0,1,127,192,0,191,208,0,47,255,255,255,255,128,0,191,0,0,15,255,255,255,255,0,0,60,0,0,2,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0, + // 0x9a6c 马 + 108,154,35,37,77,40,2,251,1,170,170,170,170,170,170,128,0,2,255,255,255,255,255,255,208,0,2,255,255,255,255,255,255,208,0,2,255,255,255,255,255,255,208,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,47,192,0,0,1,64,0,0,0,63,192,0,0,3,248,0,0,0,63,192,0,0,3,244,0,0,0,63,192,0,0,7,244,0,0,0,63,128,0,0,7,244,0,0,0,63,128,0,0,11,240,0,0,0,127,64,0,0,11,240,0,0,0,127,64,0,0,11,240,0,0,0,127,0,0,0,15,240,0,0,0,191,0,0,0,15,240,0,0,0,191,0,0,0,15,255,255,255,255,255,255,252,0,15,255,255,255,255,255,255,248,0,31,255,255,255,255,255,255,248,0,5,85,85,85,85,85,91,248,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,191,255,255,255,255,255,244,15,240,191,255,255,255,255,255,244,15,240,191,255,255,255,255,255,244,15,240,106,170,170,170,170,170,160,15,224,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,192,0,0,0,0,0,101,85,255,64,0,0,0,0,0,63,255,255,0,0,0,0,0,0,47,255,253,0,0,0,0,0,0,47,255,224,0,0,0,0,0,0,0,0,0,0, + // 0x9a71 驱 + 113,154,38,36,104,40,1,252,31,255,255,240,21,85,85,85,85,0,31,255,255,240,63,255,255,255,255,128,31,255,255,240,63,255,255,255,255,128,0,0,11,240,63,255,255,255,255,128,0,0,11,224,63,128,0,0,0,0,0,0,11,224,63,128,0,0,0,0,3,240,11,224,63,128,0,1,228,0,3,240,11,208,63,130,128,2,252,0,3,240,15,208,63,143,208,3,248,0,3,240,15,208,63,143,240,7,244,0,7,240,15,192,63,131,252,15,240,0,7,240,15,192,63,129,254,15,224,0,7,224,15,192,63,128,191,95,192,0,11,224,15,192,63,128,63,255,192,0,11,208,31,192,63,128,31,255,64,0,11,208,31,192,63,128,11,255,0,0,15,208,47,128,63,128,3,254,0,0,15,255,255,253,63,128,3,254,0,0,15,255,255,253,63,128,7,255,64,0,15,255,255,253,63,128,15,255,192,0,0,0,0,253,63,128,47,255,208,0,0,0,0,252,63,128,63,207,240,0,0,0,0,252,63,128,191,71,248,0,0,0,16,252,63,130,254,3,252,0,0,27,244,252,63,135,252,0,255,0,27,255,249,252,63,143,244,0,191,0,191,255,229,252,63,175,240,0,127,0,127,244,2,248,63,139,192,0,56,0,121,0,2,248,63,130,64,0,0,0,0,0,3,244,63,128,0,0,0,0,0,0,3,244,63,213,85,85,85,64,0,0,11,240,63,255,255,255,255,208,0,63,255,224,63,255,255,255,255,208,0,47,255,192,63,255,255,255,255,208,0,47,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9ad8 高 + 216,154,35,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,254,0,0,0,0,127,255,255,255,255,255,255,255,252,127,255,255,255,255,255,255,255,252,127,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,255,255,128,0,0,3,255,255,255,255,255,128,0,0,3,254,170,170,170,191,128,0,0,3,252,0,0,0,63,128,0,0,3,252,0,0,0,63,128,0,0,3,252,0,0,0,63,128,0,0,3,255,255,255,255,255,128,0,0,3,255,255,255,255,255,128,0,0,1,170,170,170,170,170,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,240,11,240,0,0,0,0,0,15,240,11,240,0,0,0,0,0,15,240,11,240,6,170,170,170,144,15,240,11,240,11,255,255,255,224,15,240,11,240,11,255,255,255,224,15,240,11,240,11,224,0,15,224,15,240,11,240,11,224,0,15,224,15,240,11,240,11,224,0,15,224,15,240,11,240,11,250,170,175,224,15,240,11,240,11,255,255,255,224,15,240,11,240,11,255,255,255,224,15,240,11,240,11,224,0,0,127,255,240,11,240,11,224,0,0,63,255,208,11,240,0,0,0,0,63,255,128,7,240,0,0,0,0,21,84,0, + // 0x9ec4 黄 + 196,158,36,38,86,40,2,252,0,0,10,144,0,6,160,0,0,0,0,15,224,0,11,240,0,0,0,0,15,224,0,11,240,0,0,0,85,95,245,85,91,245,85,64,3,255,255,255,255,255,255,255,192,3,255,255,255,255,255,255,255,192,3,255,255,255,255,255,255,255,192,0,0,15,224,0,11,240,0,0,0,0,15,224,0,11,240,0,0,0,0,15,224,0,11,240,0,0,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,85,85,85,85,255,85,85,85,85,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,106,170,170,255,170,170,170,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,0,255,0,0,255,0,0,191,0,0,255,0,0,255,0,0,191,0,0,255,0,0,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,170,170,255,170,170,255,0,0,191,0,0,255,0,0,255,0,0,191,0,0,255,0,0,255,0,0,191,170,170,255,170,170,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,0,1,64,0,2,64,0,0,0,0,31,224,0,11,248,0,0,0,1,255,252,0,31,255,208,0,0,47,255,224,0,2,255,254,0,11,255,254,0,0,0,31,255,244,127,255,224,0,0,0,0,191,252,31,249,0,0,0,0,0,11,240,6,64,0,0,0,0,0,0,128, + // 0x9ede 點 + 222,158,38,38,124,40,1,252,0,0,0,0,0,0,26,128,0,0,10,170,170,170,160,0,31,192,0,0,15,255,255,255,240,0,31,192,0,0,15,255,255,255,240,0,31,192,0,0,15,192,60,2,240,0,31,192,0,0,15,196,60,18,240,0,31,192,0,0,15,236,60,63,240,0,31,192,0,0,15,221,60,122,240,0,31,192,0,0,15,206,60,182,240,0,31,192,0,0,15,207,60,242,240,0,31,255,255,208,15,207,125,226,240,0,31,255,255,208,15,202,125,210,240,0,31,255,255,208,15,192,60,2,240,0,31,229,85,64,15,234,190,171,240,0,31,192,0,0,15,255,255,255,240,0,31,192,0,0,15,255,255,255,240,0,31,192,0,0,0,0,190,0,0,0,31,192,0,0,0,0,190,0,0,0,31,192,0,0,0,0,190,0,0,0,31,192,0,0,15,255,255,255,244,85,111,229,85,0,15,255,255,255,244,255,255,255,255,0,15,255,255,255,244,255,255,255,255,0,0,0,190,0,0,255,255,255,255,0,0,0,190,0,0,253,0,0,191,0,1,85,255,175,252,253,0,0,191,0,63,255,255,255,252,253,0,0,191,0,63,255,255,255,252,253,0,0,191,0,63,250,165,80,0,253,0,0,191,0,0,0,0,7,128,253,0,0,191,0,2,6,139,203,208,253,0,0,191,0,7,215,199,195,240,253,0,0,191,0,11,199,195,209,248,253,0,0,191,0,11,195,210,240,252,254,85,85,255,0,15,195,225,240,125,255,255,255,255,0,31,131,224,244,52,255,255,255,255,0,63,3,224,144,0,255,255,255,255,0,126,1,64,0,0,253,0,0,191,0,8,0,0,0,0,189,0,0,106,0, + // 0x9f50 齐 + 80,159,37,39,134,40,2,251,0,0,0,0,254,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,127,255,255,255,255,255,255,255,254,0,127,255,255,255,255,255,255,255,254,0,127,255,255,255,255,255,255,255,254,0,0,2,254,0,0,0,255,192,0,0,0,0,255,64,0,1,255,0,0,0,0,0,63,208,0,7,253,0,0,0,0,0,15,244,0,31,248,0,0,0,0,0,7,255,0,191,240,0,0,0,0,0,0,255,211,255,128,0,0,0,0,0,0,63,255,254,0,0,0,0,0,0,0,11,255,244,0,0,0,0,0,0,0,47,255,254,0,0,0,0,0,0,11,255,255,255,249,0,0,0,0,22,255,255,210,255,255,250,64,0,111,255,255,249,0,31,255,255,255,64,255,255,255,64,0,1,191,255,255,0,63,255,229,0,0,0,22,255,252,0,47,144,255,0,0,0,127,65,104,0,0,0,255,0,0,0,127,64,0,0,0,0,255,0,0,0,127,64,0,0,0,0,255,0,0,0,127,64,0,0,0,0,255,0,0,0,127,64,0,0,0,0,255,0,0,0,127,64,0,0,0,0,255,0,0,0,127,64,0,0,0,1,254,0,0,0,127,64,0,0,0,2,254,0,0,0,127,64,0,0,0,3,253,0,0,0,127,64,0,0,0,11,252,0,0,0,127,64,0,0,0,31,248,0,0,0,127,64,0,0,0,191,240,0,0,0,127,64,0,0,3,255,192,0,0,0,127,64,0,0,15,255,64,0,0,0,127,64,0,0,3,253,0,0,0,0,127,64,0,0,0,224,0,0,0,0,127,64,0,0,0,0,0,0,0,0,0,0,0,0, + // 0xff1a : + 26,255,8,27,54,40,16,1,11,224,47,248,63,252,127,253,63,252,47,248,6,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,224,63,248,63,252,127,253,63,252,47,244,6,128, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Symbols_29.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Symbols_29.cpp new file mode 100644 index 0000000000..de4a74bba2 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Symbols_29.cpp @@ -0,0 +1,38 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium_Symbols 40pt, capital 'A' height: 29px, width: 100% +extern const uint8_t NotoSans_Medium_Symbols_29[158] = { + 130,29,8,0,10,0,38,246, // unifont_t + // 0x08 - LCD_STR_THERMOMETER a.k.a 0x1f321 🌡 + 23,49,38,27,2,247,0,7,255,255,0,0,0,31,255,255,192,0,0,47,255,255,208,0,0,47,64,11,208,0,0,47,0,7,208,0,0,47,144,7,208,0,0,47,244,7,208,0,0,47,0,7,208,0,0,47,0,7,208,0,0,47,0,7,208,0,0,47,244,7,208,0,0,47,144,7,208,0,0,47,0,7,208,0,0,47,5,71,208,0,0,47,31,199,208,0,0,47,255,199,208,0,0,47,175,199,208,0,0,47,31,199,208,0,0,47,31,199,208,0,0,47,95,199,208,0,0,47,255,199,208,0,0,47,95,199,208,0,0,47,31,199,208,0,0,47,31,199,208,0,0,47,175,199,208,0,0,47,255,199,208,0,0,47,31,199,208,0,0,47,31,199,208,0,0,47,31,199,208,0,0,127,191,199,240,0,2,255,191,199,253,0,11,248,31,192,255,64,31,208,47,208,47,192,63,66,255,253,11,224,127,11,255,255,67,240,189,31,255,255,194,244,252,47,255,255,208,248,252,63,255,255,224,252,252,63,255,255,224,252,252,63,255,255,224,248,189,31,255,255,193,248,126,15,255,255,131,240,63,67,255,254,11,240,31,208,111,224,31,192,11,248,0,0,191,128,3,255,64,11,254,0,0,191,255,255,244,0,0,15,255,255,128,0,0,0,111,228,0,0, + // 0x09 - LCD_STR_DEGREE a.k.a 0x00b0 ° + 13,13,52,17,2,16,1,191,144,0,11,255,252,0,63,255,255,0,127,64,127,64,189,0,31,192,252,0,15,192,252,0,15,192,252,0,15,192,190,0,47,128,63,144,191,64,47,255,254,0,7,255,248,0,0,106,64,0, + // 0x0a - replacement for 0x2026 used in Greek language files … + 27,6,42,32,3,255,127,64,2,252,0,15,224,255,192,7,255,0,47,244,255,192,7,255,0,63,248,255,192,7,255,0,47,248,191,128,3,253,0,31,240,25,0,0,96,0,1,64, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Traditional_Chinese_29.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Traditional_Chinese_29.cpp new file mode 100644 index 0000000000..a19d230e23 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Traditional_Chinese_29.cpp @@ -0,0 +1,646 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Traditional Chinese 40pt, capital 'A' height: 29px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 +extern const uint8_t NotoSans_Medium_Traditional_Chinese_29[34391] = { + 162,29,191,34,26,255,38,246, // unifont_t + // 0x22bf ⊿ + 191,34,31,32,0,40,4,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,184,0,0,0,0,0,0,2,248,0,0,0,0,0,0,11,248,0,0,0,0,0,0,47,248,0,0,0,0,0,0,191,248,0,0,0,0,0,2,255,248,0,0,0,0,0,11,255,248,0,0,0,0,0,47,242,248,0,0,0,0,0,191,194,248,0,0,0,0,2,255,2,248,0,0,0,0,11,252,2,248,0,0,0,0,47,240,2,248,0,0,0,0,191,192,2,248,0,0,0,1,255,0,2,248,0,0,0,7,252,0,2,248,0,0,0,31,240,0,2,248,0,0,0,127,192,0,2,248,0,0,1,255,64,0,2,248,0,0,7,253,0,0,2,248,0,0,31,244,0,0,2,248,0,0,127,208,0,0,2,248,0,1,255,64,0,0,2,248,0,7,253,0,0,0,2,248,0,31,244,0,0,0,2,248,0,127,208,0,0,0,2,248,1,255,64,0,0,0,2,248,3,254,85,85,85,85,87,248,15,255,255,255,255,255,255,248,63,255,255,255,255,255,255,248,255,255,255,255,255,255,255,248, + // 0x4e00 一 + 0,78,37,4,40,40,2,13,255,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,255,64,255,255,255,255,255,255,255,255,255,64, + // 0x4e09 三 + 9,78,34,31,23,40,3,255,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,128,0,0,127,255,255,255,255,255,192,0,0,127,255,255,255,255,255,192,0,0,127,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,170,170,170,170,170,170,160,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240, + // 0x4e0a 上 + 10,78,36,35,59,40,2,254,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,255,255,255,255,192,0,0,0,7,255,255,255,255,192,0,0,0,7,255,255,255,255,192,0,0,0,7,254,170,170,170,128,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,248,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,254, + // 0x4e0b 下 + 11,78,36,35,59,40,2,252,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,254,128,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,3,255,255,64,0,0,0,0,0,3,255,255,240,0,0,0,0,0,3,253,255,254,0,0,0,0,0,3,252,47,255,208,0,0,0,0,3,252,3,255,252,0,0,0,0,3,252,0,127,255,64,0,0,0,3,252,0,11,255,208,0,0,0,3,252,0,1,255,192,0,0,0,3,252,0,0,63,0,0,0,0,3,252,0,0,9,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,2,168,0,0,0,0, + // 0x4e0d 不 + 13,78,36,35,59,40,2,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,0,0,0,0,47,240,0,0,0,0,0,0,0,127,224,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,2,255,64,0,0,0,0,0,0,7,255,0,0,0,0,0,0,0,31,255,0,0,0,0,0,0,0,63,255,10,0,0,0,0,0,0,255,255,47,192,0,0,0,0,3,255,255,191,244,0,0,0,0,15,254,255,47,254,0,0,0,0,63,248,255,7,255,192,0,0,1,255,240,255,0,255,244,0,0,11,255,192,255,0,47,253,0,0,47,254,0,255,0,11,255,128,1,255,248,0,255,0,1,255,240,15,255,208,0,255,0,0,127,252,191,255,0,0,255,0,0,15,255,191,248,0,0,255,0,0,3,255,63,208,0,0,255,0,0,0,248,14,0,0,0,255,0,0,0,32,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0, + // 0x4e26 並 + 38,78,36,36,68,40,2,254,0,0,32,0,0,0,9,0,0,0,3,248,0,0,0,31,240,0,0,3,252,0,0,0,63,224,0,0,1,255,0,0,0,127,192,0,0,0,255,64,0,0,255,128,0,0,0,127,192,0,1,255,0,0,0,0,63,208,0,3,253,0,0,0,0,31,128,0,7,248,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,42,170,170,255,170,255,170,170,168,0,0,0,254,0,191,0,0,0,0,0,0,254,0,191,0,0,0,0,0,0,254,0,191,0,0,0,0,100,0,254,0,191,0,46,64,3,252,0,254,0,191,0,63,192,2,252,0,254,0,191,0,63,192,0,254,0,254,0,191,0,127,128,0,191,0,254,0,191,0,191,0,0,127,64,254,0,191,0,255,0,0,63,128,254,0,191,1,254,0,0,63,192,254,0,191,2,252,0,0,47,192,254,0,191,3,252,0,0,31,208,254,0,191,7,244,0,0,15,224,254,0,191,11,240,0,0,15,240,254,0,191,15,224,0,0,11,240,254,0,191,31,208,0,0,6,64,254,0,191,1,128,0,0,0,0,254,0,191,0,0,0,0,0,0,254,0,191,0,0,0,0,0,0,254,0,191,0,0,0,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255, + // 0x4e2d 中 + 45,78,32,38,48,40,4,252,0,0,0,15,224,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,170,170,170,175,250,170,170,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,175,250,170,170,255,254,0,0,15,240,0,0,255,254,0,0,15,240,0,0,191,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,15,224,0,0,0, + // 0x4e3b 主 + 59,78,36,37,77,40,2,253,0,0,0,2,0,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,63,248,0,0,0,0,0,0,0,15,254,0,0,0,0,0,0,0,2,255,192,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,0,47,248,0,0,0,0,0,0,0,11,224,0,0,0,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,10,170,170,170,255,170,170,170,160,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,170,170,170,255,170,170,170,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,106,170,170,170,170,170,170,170,170, + // 0x4e4b 之 + 75,78,37,38,124,40,1,252,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,3,255,255,255,255,255,255,255,224,0,3,255,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,255,248,0,2,170,170,170,170,170,170,191,240,0,0,0,0,0,0,0,0,127,208,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,0,11,253,0,0,0,0,0,0,0,0,47,244,0,0,0,0,0,0,0,0,127,224,0,0,0,0,0,0,0,1,255,128,0,0,0,0,0,0,0,3,255,0,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,0,63,240,0,0,0,0,2,224,0,0,255,192,0,0,0,0,3,252,0,7,255,0,0,0,0,0,11,248,0,31,252,0,0,0,0,0,15,244,0,127,240,0,0,0,0,0,31,248,2,255,192,0,0,0,0,0,63,252,15,255,0,0,0,0,0,0,127,255,127,248,0,0,0,0,0,0,255,255,255,224,0,0,0,0,0,1,255,63,255,64,0,0,0,0,0,3,253,15,255,64,0,0,0,0,0,11,252,3,255,249,0,0,0,0,0,31,244,0,255,255,255,170,170,170,128,63,240,0,31,255,255,255,255,255,192,127,192,0,1,191,255,255,255,255,128,15,128,0,0,5,175,255,255,255,0,1,0,0,0,0,0,0,0,0,0, + // 0x4ea4 交 + 164,78,36,38,86,40,2,252,0,0,0,0,170,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,106,170,170,170,255,170,170,170,169,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0,0,0,15,64,0,0,248,0,0,0,0,63,240,0,7,255,0,0,0,0,255,208,0,3,255,208,0,0,3,255,64,0,0,191,248,0,0,15,254,0,0,0,31,254,0,0,127,248,0,0,0,3,255,192,2,255,224,0,0,0,0,255,240,31,255,66,192,0,3,224,63,252,191,253,31,224,0,11,252,11,254,47,240,15,240,0,15,244,3,248,11,128,11,248,0,31,240,0,208,0,0,3,252,0,63,208,0,0,0,0,2,255,0,191,192,0,0,0,0,0,255,130,255,64,0,0,0,0,0,127,215,254,0,0,0,0,0,0,47,255,252,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,11,255,224,0,0,0,0,0,0,127,255,253,0,0,0,0,0,7,255,255,255,208,0,0,0,0,127,255,130,255,253,0,0,0,27,255,253,0,127,255,228,0,6,255,255,224,0,11,255,255,144,255,255,254,0,0,0,255,255,255,191,255,208,0,0,0,11,255,253,63,248,0,0,0,0,0,111,252,30,0,0,0,0,0,0,0,96, + // 0x4eae 亮 + 174,78,36,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,250,170,170,170,175,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,10,170,170,170,170,170,160,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,0,0,0,0,0,0,0,252,63,0,1,80,0,0,0,0,252,63,0,7,244,0,191,64,0,252,63,0,11,244,0,191,64,0,252,63,0,11,240,0,191,64,0,252,0,0,15,240,0,191,64,0,0,0,0,31,240,0,191,64,0,0,0,0,47,208,0,191,64,0,0,0,0,127,192,0,191,64,0,184,0,1,255,128,0,191,64,0,191,0,15,255,0,0,191,64,0,254,2,255,252,0,0,191,128,1,254,255,255,224,0,0,127,255,255,253,191,255,64,0,0,63,255,255,252,63,224,0,0,0,31,255,255,240,20,0,0,0,0,0,21,84,0, + // 0x4ee4 令 + 228,78,37,38,124,40,2,252,0,0,0,1,254,0,0,0,0,0,0,0,0,3,255,128,0,0,0,0,0,0,0,15,255,208,0,0,0,0,0,0,0,47,255,244,0,0,0,0,0,0,0,191,219,252,0,0,0,0,0,0,2,255,131,255,64,0,0,0,0,0,11,254,0,255,208,0,0,0,0,0,47,252,0,63,244,0,0,0,0,0,191,240,0,15,253,0,0,0,0,2,255,192,0,3,255,128,0,0,0,15,254,0,0,0,191,244,0,0,0,127,248,0,0,0,47,254,0,0,2,255,255,255,255,255,255,255,208,0,31,255,95,255,255,255,245,255,248,0,255,252,31,255,255,255,244,63,255,64,255,224,5,85,85,85,80,11,255,0,127,64,0,0,0,0,0,1,253,0,40,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,255,255,255,255,255,255,254,0,0,2,255,255,255,255,255,255,254,0,0,2,255,255,255,255,255,255,254,0,0,1,85,85,127,213,85,85,254,0,0,0,0,0,47,192,0,0,254,0,0,0,0,0,47,192,0,0,254,0,0,0,0,0,47,192,0,0,254,0,0,0,0,0,47,192,0,0,254,0,0,0,0,0,47,192,0,0,254,0,0,0,0,0,47,192,0,0,254,0,0,0,0,0,47,192,0,0,254,0,0,0,0,0,47,192,10,170,254,0,0,0,0,0,47,192,11,255,253,0,0,0,0,0,47,192,3,255,252,0,0,0,0,0,47,192,3,255,144,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0, + // 0x4ef6 件 + 246,78,37,38,124,40,1,252,0,0,20,0,0,1,80,0,0,0,0,0,63,128,0,3,248,0,0,0,0,0,127,64,144,3,248,0,0,0,0,0,255,0,254,3,248,0,0,0,0,1,254,1,253,3,248,0,0,0,0,2,253,2,252,3,248,0,0,0,0,7,252,3,252,3,248,0,0,0,0,15,244,3,248,3,248,0,0,0,0,31,240,7,254,171,254,170,168,0,0,63,208,11,255,255,255,255,253,0,0,191,192,15,255,255,255,255,253,0,0,255,192,31,255,255,255,255,253,0,3,255,192,63,192,3,248,0,0,0,11,255,192,127,128,3,248,0,0,0,31,255,192,255,0,3,248,0,0,0,63,255,193,254,0,3,248,0,0,0,191,239,192,188,0,3,248,0,0,0,63,111,192,24,0,3,248,0,0,0,30,47,192,0,0,3,248,0,0,0,12,47,192,0,0,3,248,0,0,0,0,47,192,170,170,171,254,170,170,128,0,47,192,255,255,255,255,255,255,192,0,47,192,255,255,255,255,255,255,192,0,47,192,255,255,255,255,255,255,192,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,31,128,0,0,3,244,0,0,0, + // 0x4efd 份 + 253,78,38,38,124,40,1,252,0,0,36,0,0,0,0,0,0,0,0,0,127,128,3,255,255,244,0,0,0,0,191,0,3,255,255,248,0,0,0,0,254,0,3,255,255,252,0,0,0,2,253,0,65,85,87,252,0,0,0,3,252,0,254,0,1,253,0,0,0,11,244,1,254,0,0,254,0,0,0,15,240,2,252,0,0,255,0,0,0,47,208,3,248,0,0,127,128,0,0,127,192,11,244,0,0,63,192,0,0,255,128,15,240,0,0,47,224,0,2,255,128,31,208,0,0,15,240,0,3,255,128,63,192,0,0,11,252,0,15,255,128,191,64,0,0,3,254,0,63,255,129,254,0,0,0,2,255,64,191,255,131,252,0,0,0,0,255,224,255,191,143,249,85,85,85,85,191,208,191,63,143,235,255,255,255,255,223,64,60,63,131,203,255,255,255,255,198,0,20,63,128,11,255,255,255,255,192,0,0,63,128,0,2,252,0,63,192,0,0,63,128,0,3,252,0,63,192,0,0,63,128,0,3,248,0,63,192,0,0,63,128,0,3,244,0,63,128,0,0,63,128,0,7,244,0,63,128,0,0,63,128,0,11,240,0,63,128,0,0,63,128,0,15,240,0,63,128,0,0,63,128,0,15,224,0,63,128,0,0,63,128,0,47,192,0,63,128,0,0,63,128,0,63,192,0,127,64,0,0,63,128,0,191,64,0,127,64,0,0,63,128,1,255,0,0,191,64,0,0,63,128,7,252,0,0,191,0,0,0,63,128,47,244,0,0,255,0,0,0,63,128,255,224,3,255,255,0,0,0,63,129,255,128,1,255,253,0,0,0,63,128,125,0,0,255,248,0,0,0,47,128,32,0,0,106,64,0,0, + // 0x4f11 休 + 17,79,38,38,124,40,1,252,0,0,4,0,0,0,0,0,0,0,0,0,15,224,0,11,240,0,0,0,0,0,47,224,0,11,240,0,0,0,0,0,63,192,0,11,240,0,0,0,0,0,127,192,0,11,240,0,0,0,0,0,255,64,0,11,240,0,0,0,0,1,255,0,0,11,240,0,0,0,0,3,253,0,0,11,240,0,0,0,0,11,252,0,0,11,240,0,0,0,0,31,244,0,0,11,240,0,0,0,0,63,241,170,170,175,250,170,170,128,0,191,241,255,255,255,255,255,255,192,1,255,241,255,255,255,255,255,255,192,7,255,241,255,255,255,255,255,255,192,31,255,240,0,0,191,255,0,0,0,127,255,240,0,0,255,255,128,0,0,255,239,240,0,2,255,255,192,0,0,127,143,240,0,3,255,255,208,0,0,63,15,240,0,7,255,251,240,0,0,28,15,240,0,15,255,247,244,0,0,0,15,240,0,47,219,243,252,0,0,0,15,240,0,63,203,241,254,0,0,0,15,240,0,191,75,240,255,0,0,0,15,240,1,255,11,240,127,192,0,0,15,240,3,253,11,240,63,224,0,0,15,240,15,248,11,240,15,244,0,0,15,240,47,240,11,240,11,252,0,0,15,240,127,208,11,240,3,255,0,0,15,242,255,128,11,240,1,255,192,0,15,251,255,0,11,240,0,191,240,0,15,251,252,0,11,240,0,47,208,0,15,242,240,0,11,240,0,15,64,0,15,240,128,0,11,240,0,1,0,0,15,240,0,0,11,240,0,0,0,0,15,240,0,0,11,240,0,0,0,0,15,240,0,0,11,240,0,0,0,0,15,240,0,0,11,240,0,0,0,0,10,160,0,0,11,240,0,0,0, + // 0x4f4d 位 + 77,79,38,38,124,40,1,252,0,0,4,0,0,1,80,0,0,0,0,0,47,192,0,11,240,0,0,0,0,0,63,192,0,11,240,0,0,0,0,0,191,64,0,11,240,0,0,0,0,0,255,0,0,11,240,0,0,0,0,2,254,0,0,11,240,0,0,0,0,3,252,0,0,11,240,0,0,0,0,11,244,0,0,11,240,0,0,0,0,31,240,191,255,255,255,255,255,128,0,63,208,191,255,255,255,255,255,128,0,191,208,191,255,255,255,255,255,128,1,255,208,106,170,170,170,170,170,64,3,255,208,0,0,0,0,0,0,0,15,255,208,0,0,0,0,0,0,0,63,255,208,0,188,0,0,47,208,0,191,239,208,1,253,0,0,63,192,0,255,207,208,0,253,0,0,63,192,0,127,15,208,0,254,0,0,63,128,0,60,15,208,0,191,0,0,127,64,0,20,15,208,0,127,0,0,191,64,0,0,15,208,0,63,64,0,255,0,0,0,15,208,0,63,128,0,255,0,0,0,15,208,0,63,192,1,254,0,0,0,15,208,0,47,192,2,253,0,0,0,15,208,0,47,192,3,252,0,0,0,15,208,0,31,208,3,248,0,0,0,15,208,0,31,208,7,244,0,0,0,15,208,0,15,224,11,240,0,0,0,15,208,0,15,224,15,240,0,0,0,15,208,0,15,240,15,224,0,0,0,15,208,0,15,144,31,208,0,0,0,15,208,0,0,0,47,192,0,0,0,15,208,170,170,170,191,234,170,144,0,15,209,255,255,255,255,255,255,224,0,15,209,255,255,255,255,255,255,224,0,15,209,255,255,255,255,255,255,224,0,15,208,0,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0, + // 0x4f4e 低 + 78,79,38,38,124,40,1,252,0,0,36,0,0,0,0,0,0,0,0,0,127,64,0,0,0,0,64,0,0,0,191,0,0,0,0,111,240,0,0,0,255,0,0,1,175,255,248,0,0,2,253,25,26,255,255,255,248,0,0,3,252,31,255,255,255,249,0,0,0,11,244,31,255,255,255,0,0,0,0,15,240,31,250,80,191,0,0,0,0,47,208,31,192,0,191,0,0,0,0,127,192,31,192,0,191,0,0,0,0,255,128,31,192,0,127,64,0,0,2,255,128,31,192,0,127,64,0,0,7,255,128,31,192,0,127,64,0,0,15,255,128,31,192,0,127,64,0,0,63,255,128,31,255,255,255,255,255,208,255,255,128,31,255,255,255,255,255,208,255,127,128,31,255,255,255,255,255,208,126,63,128,31,229,85,127,213,85,64,60,63,128,31,192,0,47,192,0,0,16,63,128,31,192,0,47,192,0,0,0,63,128,31,192,0,31,192,0,0,0,63,128,31,192,0,31,208,0,0,0,63,128,31,192,0,15,224,0,0,0,63,128,31,192,0,15,240,0,0,0,63,128,31,192,0,11,240,0,0,0,63,128,31,192,0,71,244,0,0,0,63,128,31,209,175,227,248,0,0,0,63,128,47,255,255,227,252,2,0,0,63,131,255,255,255,226,252,3,224,0,63,130,255,255,250,65,254,3,240,0,63,130,255,228,0,0,255,3,240,0,63,128,144,0,0,0,127,135,224,0,63,128,0,0,0,0,63,255,224,0,63,128,21,85,85,85,31,255,192,0,63,128,255,255,255,255,135,255,128,0,63,128,255,255,255,255,129,190,0,0,63,128,255,255,255,255,128,0,0,0,63,128,0,0,0,0,0,0,0, + // 0x4f5c 作 + 92,79,38,38,124,40,1,252,0,0,4,0,0,0,0,0,0,0,0,0,47,192,1,248,0,0,0,0,0,0,63,192,3,252,0,0,0,0,0,0,127,128,3,248,0,0,0,0,0,0,255,64,11,244,0,0,0,0,0,0,255,0,15,240,0,0,0,0,0,3,253,0,31,224,0,0,0,0,0,7,252,0,63,255,255,255,255,208,0,15,244,0,127,255,255,255,255,208,0,31,240,0,255,255,255,255,255,208,0,63,224,2,254,175,250,170,170,128,0,191,224,3,252,15,224,0,0,0,1,255,224,15,244,15,224,0,0,0,3,255,224,31,240,15,224,0,0,0,15,255,224,127,208,15,224,0,0,0,63,255,224,255,128,15,224,0,0,0,127,255,226,255,0,15,255,255,255,64,63,207,224,125,0,15,255,255,255,64,31,15,224,20,0,15,255,255,255,64,12,15,224,0,0,15,245,85,85,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,245,85,85,64,0,15,224,0,0,15,255,255,255,192,0,15,224,0,0,15,255,255,255,192,0,15,224,0,0,15,255,255,255,192,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,15,224,0,0,15,224,0,0,0,0,10,144,0,0,10,144,0,0,0, + // 0x4f9b 供 + 155,79,38,38,124,40,1,252,0,0,20,0,21,64,0,84,0,0,0,0,63,128,47,192,0,253,0,0,0,0,191,64,47,192,0,253,0,0,0,0,255,0,47,192,0,253,0,0,0,1,254,0,47,192,0,253,0,0,0,3,252,0,47,192,0,253,0,0,0,7,248,0,47,192,0,253,0,0,0,15,240,0,47,192,0,253,0,0,0,47,224,42,191,234,170,255,170,128,0,63,192,127,255,255,255,255,255,192,0,255,192,127,255,255,255,255,255,192,1,255,192,127,255,255,255,255,255,192,3,255,192,0,47,192,0,253,0,0,15,255,192,0,47,192,0,253,0,0,63,255,192,0,47,192,0,253,0,0,191,255,192,0,47,192,0,253,0,0,191,175,192,0,47,192,0,253,0,0,63,47,192,0,47,192,0,253,0,0,44,47,192,0,47,192,0,253,0,0,4,47,192,0,47,192,0,253,0,0,0,47,192,0,47,192,0,253,0,0,0,47,193,170,191,234,170,255,170,128,0,47,193,255,255,255,255,255,255,208,0,47,193,255,255,255,255,255,255,208,0,47,193,255,255,255,255,255,255,208,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,14,64,0,36,0,0,0,47,192,0,47,224,1,253,0,0,0,47,192,0,127,192,1,255,64,0,0,47,192,0,255,64,0,127,192,0,0,47,192,3,254,0,0,47,240,0,0,47,192,15,252,0,0,11,248,0,0,47,192,63,240,0,0,3,254,0,0,47,192,255,192,0,0,1,255,0,0,47,194,255,64,0,0,0,191,192,0,47,192,125,0,0,0,0,62,0,0,47,128,4,0,0,0,0,20,0, + // 0x4fdd 保 + 221,79,38,38,124,40,1,252,0,0,20,0,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,63,203,255,255,255,255,252,0,0,0,191,75,255,255,255,255,252,0,0,0,255,11,255,255,255,255,252,0,0,2,253,11,245,85,85,87,252,0,0,3,252,11,240,0,0,2,252,0,0,11,244,11,240,0,0,2,252,0,0,15,240,11,240,0,0,2,252,0,0,63,208,11,240,0,0,2,252,0,0,191,208,11,240,0,0,2,252,0,1,255,208,11,240,0,0,2,252,0,3,255,208,11,255,255,255,255,252,0,15,255,208,11,255,255,255,255,252,0,47,255,208,11,255,255,255,255,252,0,191,255,208,1,85,91,249,85,84,0,191,207,208,0,0,7,244,0,0,0,63,15,208,0,0,7,244,0,0,0,45,15,208,0,0,7,244,0,0,0,4,15,208,0,0,7,244,0,0,0,0,15,209,255,255,255,255,255,255,192,0,15,209,255,255,255,255,255,255,192,0,15,209,255,255,255,255,255,255,192,0,15,208,85,85,255,255,149,85,64,0,15,208,0,0,255,255,192,0,0,0,15,208,0,3,255,255,240,0,0,0,15,208,0,11,255,251,248,0,0,0,15,208,0,47,231,246,253,0,0,0,15,208,0,191,199,244,255,64,0,0,15,208,2,255,7,244,127,208,0,0,15,208,15,253,7,244,31,244,0,0,15,208,127,244,7,244,11,254,0,0,15,210,255,208,7,244,2,255,208,0,15,215,255,64,7,244,0,191,240,0,15,209,252,0,7,244,0,47,192,0,15,208,160,0,7,244,0,7,0,0,15,208,0,0,7,244,0,0,0,0,10,144,0,0,7,244,0,0,0, + // 0x4fe1 信 + 225,79,38,38,124,40,1,252,0,0,4,0,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,63,193,255,255,255,255,240,0,0,0,191,65,255,255,255,255,240,0,0,0,255,1,255,255,255,255,240,0,0,2,254,0,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,0,11,248,0,0,0,0,0,0,0,0,31,240,255,255,255,255,255,255,208,0,63,224,255,255,255,255,255,255,208,0,191,208,255,255,255,255,255,255,208,1,255,208,0,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,0,15,255,208,3,255,255,255,255,244,0,63,255,208,3,255,255,255,255,244,0,255,223,208,3,255,255,255,255,244,0,191,79,208,0,0,0,0,0,0,0,62,15,208,0,0,0,0,0,0,0,44,15,208,0,0,0,0,0,0,0,0,15,208,3,255,255,255,255,244,0,0,15,208,3,255,255,255,255,244,0,0,15,208,3,255,255,255,255,244,0,0,15,208,0,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,0,15,208,7,255,255,255,255,252,0,0,15,208,7,255,255,255,255,252,0,0,15,208,7,255,255,255,255,252,0,0,15,208,7,240,0,0,3,252,0,0,15,208,7,240,0,0,3,252,0,0,15,208,7,240,0,0,3,252,0,0,15,208,7,240,0,0,3,252,0,0,15,208,7,240,0,0,3,252,0,0,15,208,7,255,255,255,255,252,0,0,15,208,7,255,255,255,255,252,0,0,15,208,7,255,255,255,255,252,0,0,15,208,7,240,0,0,3,252,0,0,10,128,7,240,0,0,2,168,0, + // 0x500b 個 + 11,80,36,38,86,40,1,252,0,0,64,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,3,252,127,255,255,255,255,255,0,3,248,127,255,255,255,255,255,0,11,240,127,255,255,255,255,255,0,15,240,127,0,0,0,0,127,0,47,208,127,0,3,240,0,127,0,63,192,127,0,3,240,0,127,0,191,128,127,0,3,240,0,127,1,255,128,127,0,3,240,0,127,3,255,128,127,26,175,250,169,127,7,255,128,127,31,255,255,253,127,15,255,128,127,31,255,255,253,127,63,255,128,127,0,3,240,0,127,191,255,128,127,0,3,240,0,127,255,127,128,127,0,3,240,0,127,190,63,128,127,0,3,240,0,127,60,63,128,127,2,171,250,160,127,32,63,128,127,3,255,255,240,127,0,63,128,127,3,255,255,240,127,0,63,128,127,3,224,3,240,127,0,63,128,127,3,224,3,240,127,0,63,128,127,3,224,3,240,127,0,63,128,127,3,224,3,240,127,0,63,128,127,3,224,3,240,127,0,63,128,127,3,250,171,240,127,0,63,128,127,3,255,255,240,127,0,63,128,127,3,255,255,240,127,0,63,128,127,0,0,0,0,127,0,63,128,127,0,0,0,0,127,0,63,128,127,0,0,0,0,127,0,63,128,127,255,255,255,255,255,0,63,128,127,255,255,255,255,255,0,63,128,127,255,255,255,255,255,0,63,128,127,85,85,85,85,191,0,63,128,127,0,0,0,0,127,0,63,64,42,0,0,0,0,21, + // 0x503c 值 + 60,80,37,38,124,40,1,252,0,0,36,0,0,7,164,0,0,0,0,0,127,64,0,7,244,0,0,0,0,0,191,0,0,11,240,0,0,0,0,0,254,0,0,11,240,0,0,0,0,2,253,191,255,255,255,255,255,0,0,3,252,191,255,255,255,255,255,0,0,7,244,191,255,255,255,255,255,0,0,15,240,0,0,31,208,0,0,0,0,31,224,0,0,31,192,0,0,0,0,63,192,0,0,47,192,0,0,0,0,191,128,0,0,63,128,0,0,0,1,255,128,11,255,255,255,255,240,0,3,255,128,11,255,255,255,255,240,0,11,255,128,11,255,255,255,255,240,0,47,255,128,11,224,0,0,7,240,0,127,255,128,11,224,0,0,7,240,0,127,191,128,11,250,170,170,175,240,0,47,63,128,11,255,255,255,255,240,0,28,63,128,11,255,255,255,255,240,0,4,63,128,11,224,0,0,7,240,0,0,63,128,11,224,0,0,7,240,0,0,63,128,11,224,0,0,7,240,0,0,63,128,11,250,170,170,175,240,0,0,63,128,11,255,255,255,255,240,0,0,63,128,11,255,255,255,255,240,0,0,63,128,11,224,0,0,7,240,0,0,63,128,11,224,0,0,7,240,0,0,63,128,11,224,0,0,7,240,0,0,63,128,11,255,255,255,255,240,0,0,63,128,11,255,255,255,255,240,0,0,63,128,11,250,170,170,175,240,0,0,63,128,11,224,0,0,7,240,0,0,63,128,11,224,0,0,7,240,0,0,63,128,15,224,0,0,11,240,0,0,63,135,255,255,255,255,255,255,192,0,63,135,255,255,255,255,255,255,192,0,63,135,255,255,255,255,255,255,192,0,63,128,0,0,0,0,0,0,0, + // 0x504f 偏 + 79,80,38,39,134,40,1,251,0,0,144,0,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,0,2,252,255,255,255,255,255,255,208,0,3,248,255,255,255,255,255,255,208,0,7,244,255,255,255,255,255,255,208,0,15,240,0,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,47,255,255,255,255,254,0,0,255,64,47,255,255,255,255,254,0,1,255,64,47,255,255,255,255,254,0,3,255,64,47,192,0,0,0,254,0,7,255,64,47,192,0,0,0,254,0,15,255,64,47,192,0,0,0,254,0,63,255,64,47,255,255,255,255,254,0,191,255,64,47,255,255,255,255,254,0,255,127,64,47,255,255,255,255,254,0,190,63,64,47,128,0,0,0,0,0,60,63,64,47,128,0,0,0,0,0,36,63,64,63,128,0,0,0,0,0,0,63,64,63,255,255,255,255,255,64,0,63,64,63,255,255,255,255,255,64,0,63,64,63,255,255,255,255,255,64,0,63,64,63,248,31,66,240,63,64,0,63,64,127,248,31,66,240,63,64,0,63,64,191,248,31,66,240,63,64,0,63,64,255,248,31,66,240,63,64,0,63,64,255,255,255,255,255,255,64,0,63,65,253,255,255,255,255,255,64,0,63,67,253,255,255,255,255,255,64,0,63,67,249,248,31,66,240,63,64,0,63,75,245,248,31,66,240,63,64,0,63,79,241,248,31,66,240,63,64,0,63,127,209,248,31,66,240,63,64,0,63,95,193,248,31,66,240,63,64,0,63,71,1,248,31,66,247,255,64,0,63,64,1,248,31,66,243,255,0,0,63,64,1,248,31,66,242,248,0,0,0,0,0,0,0,0,0,0,0, + // 0x505c 停 + 92,80,38,38,124,40,1,252,0,0,36,0,0,6,160,0,0,0,0,0,127,64,0,11,240,0,0,0,0,0,191,0,0,11,240,0,0,0,0,0,255,0,0,11,240,0,0,0,0,2,254,255,255,255,255,255,255,192,0,3,252,255,255,255,255,255,255,192,0,11,244,255,255,255,255,255,255,192,0,15,240,0,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,0,127,192,7,255,255,255,255,244,0,0,255,128,7,255,255,255,255,244,0,2,255,128,7,250,170,170,171,244,0,7,255,128,7,240,0,0,7,244,0,15,255,128,7,240,0,0,7,244,0,63,255,128,7,240,0,0,7,244,0,191,255,128,7,255,255,255,255,244,0,255,191,128,7,255,255,255,255,244,0,127,63,128,2,170,170,170,170,160,0,60,63,128,0,0,0,0,0,0,0,20,63,131,255,255,255,255,255,255,224,0,63,131,255,255,255,255,255,255,224,0,63,131,255,255,255,255,255,255,224,0,63,131,244,0,0,0,0,15,224,0,63,131,244,0,0,0,0,15,224,0,63,131,244,0,0,0,0,15,224,0,63,131,244,255,255,255,255,207,224,0,63,131,244,255,255,255,255,207,224,0,63,128,0,255,255,255,255,192,0,0,63,128,0,0,11,240,0,0,0,0,63,128,0,0,11,240,0,0,0,0,63,128,0,0,11,240,0,0,0,0,63,128,0,0,11,240,0,0,0,0,63,128,0,0,11,240,0,0,0,0,63,128,0,0,11,240,0,0,0,0,63,128,0,21,95,240,0,0,0,0,63,128,0,63,255,240,0,0,0,0,63,128,0,47,255,224,0,0,0,0,47,128,0,31,254,64,0,0,0, + // 0x5075 偵 + 117,80,37,38,124,40,1,252,0,0,4,0,0,10,160,0,0,0,0,0,47,128,0,15,240,0,0,0,0,0,63,192,0,15,240,0,0,0,0,0,191,64,0,15,240,0,0,0,0,0,255,0,0,15,255,255,255,128,0,1,254,0,0,15,255,255,255,128,0,3,252,0,0,15,255,255,255,128,0,11,248,0,0,15,240,0,0,0,0,15,240,0,0,15,240,0,0,0,0,63,224,0,0,15,240,0,0,0,0,191,208,15,255,255,255,255,252,0,0,255,208,15,255,255,255,255,252,0,3,255,208,15,255,255,255,255,252,0,15,255,208,15,224,0,0,3,252,0,63,255,208,15,224,0,0,3,252,0,255,239,208,15,250,170,170,171,252,0,191,143,208,15,255,255,255,255,252,0,63,15,208,15,255,255,255,255,252,0,44,15,208,15,224,0,0,3,252,0,0,15,208,15,224,0,0,3,252,0,0,15,208,15,224,0,0,3,252,0,0,15,208,15,250,170,170,171,252,0,0,15,208,15,255,255,255,255,252,0,0,15,208,15,255,255,255,255,252,0,0,15,208,15,224,0,0,3,252,0,0,15,208,15,224,0,0,3,252,0,0,15,208,15,224,0,0,3,252,0,0,15,208,15,255,255,255,255,252,0,0,15,208,15,255,255,255,255,252,0,0,15,208,15,255,255,255,255,248,0,0,15,208,0,1,0,0,16,0,0,0,15,208,0,15,224,1,253,0,0,0,15,208,0,191,240,3,255,128,0,0,15,208,7,255,192,0,191,244,0,0,15,208,127,254,0,0,31,254,0,0,15,211,255,244,0,0,3,255,192,0,15,208,191,128,0,0,0,191,64,0,10,128,40,0,0,0,0,24,0, + // 0x5099 備 + 153,80,38,38,124,40,1,252,0,0,128,0,10,128,0,168,0,0,0,1,253,0,31,192,0,253,0,0,0,2,252,0,31,192,0,253,0,0,0,3,248,85,111,213,85,254,85,64,0,7,245,255,255,255,255,255,255,192,0,15,241,255,255,255,255,255,255,192,0,31,209,255,255,255,255,255,255,192,0,47,192,0,31,192,0,253,0,0,0,63,128,0,31,192,0,253,0,0,0,191,64,0,31,192,0,253,0,0,0,255,64,0,0,0,0,0,0,0,3,255,64,85,85,85,85,85,85,64,7,255,64,255,255,255,255,255,255,208,15,255,64,255,255,255,255,255,255,208,47,255,64,255,255,255,255,255,255,208,127,255,64,253,0,0,0,0,0,0,255,191,64,253,0,0,0,0,0,0,191,63,64,253,31,255,255,255,255,64,60,63,64,253,47,255,255,255,255,64,36,63,64,253,47,255,255,255,255,64,0,63,64,253,47,128,47,0,63,64,0,63,64,253,47,128,47,0,63,64,0,63,64,253,47,128,47,0,63,64,0,63,64,253,47,255,255,255,255,64,0,63,64,253,47,255,255,255,255,64,0,63,64,252,47,213,127,149,127,64,0,63,65,252,47,128,47,0,63,64,0,63,65,252,47,128,47,0,63,64,0,63,66,252,47,213,127,149,127,64,0,63,67,248,47,255,255,255,255,64,0,63,67,244,47,255,255,255,255,64,0,63,71,240,47,128,47,0,63,64,0,63,75,240,47,128,47,0,63,64,0,63,79,224,47,128,47,0,63,64,0,63,111,208,47,128,47,0,63,64,0,63,127,192,47,128,47,15,255,64,0,63,79,64,47,128,47,15,255,0,0,63,66,0,31,64,26,11,228,0, + // 0x50b3 傳 + 179,80,38,38,124,40,1,252,0,0,16,0,0,1,80,0,0,0,0,0,63,64,0,7,240,0,0,0,0,0,191,64,0,7,240,0,0,0,0,0,255,255,255,255,255,255,255,192,0,1,253,255,255,255,255,255,255,192,0,3,252,255,255,255,255,255,255,192,0,11,244,0,0,7,240,0,0,0,0,15,240,0,0,7,240,0,0,0,0,47,208,31,255,255,255,255,254,0,0,63,192,31,255,255,255,255,254,0,0,255,192,31,192,11,244,0,254,0,2,255,128,31,192,7,240,0,254,0,3,255,128,31,255,255,255,255,254,0,15,255,128,31,255,255,255,255,254,0,63,255,128,31,192,11,244,0,254,0,191,255,128,31,192,7,240,0,254,0,255,191,128,31,192,11,244,0,254,0,127,63,128,31,255,255,255,255,254,0,60,63,128,31,255,255,255,255,254,0,16,63,128,0,0,7,240,31,224,0,0,63,128,0,0,11,240,7,248,0,0,63,128,255,255,255,255,255,255,0,0,63,128,255,255,255,255,255,255,192,0,63,128,255,255,170,169,255,175,208,0,63,128,0,0,0,0,191,7,0,0,63,128,0,0,0,0,191,0,0,0,63,131,255,255,255,255,255,255,208,0,63,131,255,255,255,255,255,255,208,0,63,131,255,255,255,255,255,255,208,0,63,128,0,248,0,0,191,0,0,0,63,128,3,254,0,0,191,0,0,0,63,128,0,255,128,0,191,0,0,0,63,128,0,63,208,0,191,0,0,0,63,128,0,31,240,0,191,0,0,0,63,128,0,7,240,0,191,0,0,0,63,128,0,2,131,255,255,0,0,0,63,128,0,0,2,255,254,0,0,0,42,128,0,0,0,255,228,0,0, + // 0x50be 傾 + 190,80,38,38,124,40,1,252,0,1,64,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,7,240,0,15,255,255,255,255,208,0,11,240,0,15,255,255,255,255,208,0,15,211,240,15,255,255,255,255,208,0,31,199,240,0,0,15,240,0,0,0,63,199,240,0,0,31,208,0,0,0,127,71,240,0,0,31,192,0,0,0,191,7,240,0,255,255,255,255,0,0,255,7,240,0,255,255,255,255,0,2,255,7,240,52,255,255,255,255,0,3,255,7,240,253,253,0,0,127,0,11,255,7,242,254,253,0,0,127,0,31,255,7,251,248,253,0,0,127,0,63,255,7,255,224,255,170,170,255,0,191,255,7,255,128,255,255,255,255,0,255,127,7,253,0,255,255,255,255,0,189,127,7,244,0,253,0,0,127,0,60,127,7,240,0,253,0,0,127,0,48,127,7,240,0,253,0,0,127,0,0,127,7,240,0,253,0,0,127,0,0,127,7,240,0,255,255,255,255,0,0,127,7,240,16,255,255,255,255,0,0,127,7,240,62,255,170,170,255,0,0,127,7,240,63,253,0,0,127,0,0,127,7,240,63,253,0,0,127,0,0,127,7,240,63,253,0,0,127,0,0,127,3,240,63,255,255,255,255,0,0,127,3,255,254,255,255,255,255,0,0,127,3,255,252,255,255,255,255,0,0,127,0,255,244,2,0,1,0,0,0,127,0,0,0,15,224,15,208,0,0,127,0,0,0,127,240,47,248,0,0,127,0,0,3,255,192,7,254,0,0,127,0,0,47,254,0,1,255,192,0,127,0,0,255,244,0,0,63,224,0,127,0,0,63,128,0,0,15,192,0,127,0,0,24,0,0,0,2,0, + // 0x5132 儲 + 50,81,38,38,124,40,1,252,0,1,0,0,0,0,47,64,0,0,0,3,244,0,0,0,47,128,14,64,0,7,246,255,255,64,47,128,47,192,0,11,242,255,255,64,47,128,63,64,0,15,226,255,255,64,47,128,127,0,0,31,208,0,0,11,255,254,190,0,0,63,192,0,0,15,255,255,253,0,0,127,79,255,255,223,255,255,252,0,0,191,15,255,255,224,47,131,244,0,0,255,15,255,255,224,47,139,240,0,3,255,0,0,0,0,47,143,208,0,7,255,0,0,0,0,47,175,192,0,15,255,0,0,0,47,255,255,255,208,47,255,3,255,255,111,255,255,255,208,127,255,3,255,255,111,255,255,255,208,255,255,3,255,255,64,11,244,128,0,191,127,0,0,0,0,31,231,240,0,60,127,0,0,0,0,127,194,252,0,52,127,3,255,255,64,255,0,190,0,0,127,3,255,255,71,253,0,52,0,0,127,3,255,255,95,255,255,255,0,0,127,0,0,0,191,255,255,255,0,0,127,0,0,0,191,255,255,255,0,0,127,0,0,0,62,190,0,127,0,0,127,3,255,255,196,190,0,127,0,0,127,3,255,255,192,190,0,127,0,0,127,3,255,255,192,190,0,127,0,0,127,3,240,15,192,191,255,255,0,0,127,3,240,15,192,191,255,255,0,0,127,3,240,15,192,191,255,255,0,0,127,3,240,15,192,190,0,127,0,0,127,3,240,15,192,190,0,127,0,0,127,3,255,255,192,190,0,127,0,0,127,3,255,255,192,191,255,255,0,0,127,3,255,255,192,191,255,255,0,0,127,3,240,0,0,191,255,255,0,0,127,3,240,0,0,190,0,127,0,0,106,1,80,0,0,105,0,21,0, + // 0x5145 充 + 69,81,37,38,124,40,2,252,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,63,255,255,255,255,255,255,255,253,0,63,255,255,255,255,255,255,255,253,0,63,255,255,255,255,255,255,255,253,0,42,170,171,255,170,170,170,170,168,0,0,0,3,253,0,0,208,0,0,0,0,0,7,252,0,11,244,0,0,0,0,0,11,244,0,11,254,0,0,0,0,0,15,240,0,2,255,128,0,0,0,0,47,208,0,0,191,224,0,0,0,0,63,128,0,0,31,248,0,0,0,0,127,170,175,255,255,254,0,0,15,255,255,255,255,255,255,255,128,0,15,255,255,255,255,255,255,255,224,0,15,255,255,255,255,234,165,111,244,0,15,234,85,0,0,0,0,15,248,0,0,0,1,84,0,42,128,3,208,0,0,0,7,248,0,63,192,0,0,0,0,0,7,248,0,63,192,0,0,0,0,0,7,244,0,63,192,0,0,0,0,0,11,244,0,63,192,0,0,0,0,0,15,240,0,63,192,0,0,0,0,0,15,240,0,63,192,0,0,0,0,0,31,224,0,63,192,0,32,0,0,0,63,208,0,63,192,0,62,0,0,0,191,192,0,63,192,0,63,64,0,1,255,64,0,63,192,0,63,64,0,7,255,0,0,63,192,0,127,0,0,63,252,0,0,63,192,0,127,0,6,255,240,0,0,47,192,0,255,0,191,255,192,0,0,47,255,255,254,0,191,253,0,0,0,31,255,255,252,0,63,224,0,0,0,11,255,255,248,0,24,0,0,0,0,0,106,170,64,0, + // 0x5148 先 + 72,81,36,38,86,40,2,252,0,0,0,0,191,0,0,0,0,0,2,228,0,255,0,0,0,0,0,3,252,0,255,0,0,0,0,0,3,248,0,255,0,0,0,0,0,7,244,0,255,0,0,0,0,0,15,240,0,255,0,0,0,0,0,15,255,255,255,255,255,255,128,0,47,255,255,255,255,255,255,128,0,63,255,255,255,255,255,255,128,0,127,170,170,255,170,170,170,64,0,255,0,0,255,0,0,0,0,2,254,0,0,255,0,0,0,0,3,252,0,0,255,0,0,0,0,15,248,0,0,255,0,0,0,0,2,240,0,0,255,0,0,0,0,0,80,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,106,170,170,170,255,170,170,170,169,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,0,0,11,244,0,63,192,0,0,0,0,15,240,0,63,192,0,0,0,0,15,240,0,63,192,0,0,0,0,15,224,0,63,192,0,0,0,0,31,224,0,63,192,0,0,0,0,47,208,0,63,192,0,0,0,0,63,192,0,63,192,0,0,0,0,191,128,0,63,192,0,116,0,1,255,0,0,63,192,0,127,0,3,254,0,0,63,192,0,191,0,31,252,0,0,63,192,0,191,0,191,244,0,0,63,192,0,254,7,255,208,0,0,63,234,170,253,191,255,64,0,0,47,255,255,252,127,252,0,0,0,15,255,255,248,47,208,0,0,0,2,255,255,224,13,0,0,0,0,0,0,0,0, + // 0x5149 光 + 73,81,38,38,124,40,1,252,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,7,0,0,63,128,0,15,64,0,0,127,128,0,63,128,0,31,240,0,0,63,192,0,63,128,0,63,208,0,0,47,224,0,63,128,0,127,192,0,0,15,240,0,63,128,0,191,64,0,0,11,248,0,63,128,0,255,0,0,0,3,252,0,63,128,2,253,0,0,0,2,254,0,63,128,3,252,0,0,0,0,255,0,63,128,11,244,0,0,0,0,255,64,63,128,31,224,0,0,0,0,125,0,63,128,7,192,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,26,170,170,170,191,234,170,170,170,64,47,255,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,255,192,0,0,2,253,0,15,240,0,0,0,0,0,2,252,0,15,240,0,0,0,0,0,3,252,0,15,240,0,0,0,0,0,3,252,0,15,240,0,0,0,0,0,3,252,0,15,240,0,0,0,0,0,7,248,0,15,240,0,0,0,0,0,11,244,0,15,240,0,0,0,0,0,15,240,0,15,240,0,0,0,0,0,31,240,0,15,240,0,4,0,0,0,63,208,0,15,240,0,14,64,0,0,191,192,0,15,240,0,15,208,0,2,255,64,0,15,240,0,31,192,0,11,254,0,0,15,240,0,31,192,0,127,252,0,0,15,240,0,47,192,7,255,240,0,0,15,240,0,63,192,127,255,128,0,0,11,255,255,255,128,47,253,0,0,0,7,255,255,255,0,15,208,0,0,0,2,255,255,253,0,5,0,0,0,0,0,21,85,80,0, + // 0x5165 入 + 101,81,37,36,104,40,2,252,0,2,170,170,170,64,0,0,0,0,0,3,255,255,255,64,0,0,0,0,0,3,255,255,255,64,0,0,0,0,0,3,255,255,255,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,1,63,192,0,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,0,7,255,224,0,0,0,0,0,0,0,11,255,240,0,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,0,31,251,244,0,0,0,0,0,0,0,47,231,252,0,0,0,0,0,0,0,63,211,252,0,0,0,0,0,0,0,127,194,254,0,0,0,0,0,0,0,255,128,255,0,0,0,0,0,0,1,255,0,255,128,0,0,0,0,0,3,255,0,127,192,0,0,0,0,0,7,253,0,63,224,0,0,0,0,0,15,252,0,31,244,0,0,0,0,0,47,244,0,15,252,0,0,0,0,0,127,224,0,7,254,0,0,0,0,0,255,192,0,2,255,128,0,0,0,3,255,64,0,0,255,208,0,0,0,15,254,0,0,0,127,244,0,0,0,47,252,0,0,0,47,253,0,0,0,255,240,0,0,0,11,255,128,0,7,255,192,0,0,0,2,255,240,0,47,255,64,0,0,0,0,191,253,0,255,252,0,0,0,0,0,47,255,64,127,224,0,0,0,0,0,7,253,0,31,64,0,0,0,0,0,0,248,0,5,0,0,0,0,0,0,0,16,0, + // 0x5168 全 + 104,81,37,37,114,40,1,253,0,0,0,0,191,192,0,0,0,0,0,0,0,0,255,224,0,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,0,11,255,253,0,0,0,0,0,0,0,31,246,255,0,0,0,0,0,0,0,127,224,255,192,0,0,0,0,0,1,255,192,63,240,0,0,0,0,0,7,255,0,15,253,0,0,0,0,0,31,252,0,3,255,64,0,0,0,0,191,240,0,0,255,224,0,0,0,2,255,192,0,0,63,248,0,0,0,15,255,0,0,0,15,255,64,0,0,127,252,0,0,0,3,255,224,0,2,255,224,0,0,0,0,191,253,0,31,255,64,0,0,0,0,31,255,192,127,255,255,255,255,255,255,255,255,192,47,226,255,255,255,255,255,252,127,64,15,2,255,255,255,255,255,252,10,0,0,0,85,85,127,213,85,80,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,47,255,255,255,255,255,255,64,0,0,47,255,255,255,255,255,255,64,0,0,47,255,255,255,255,255,255,64,0,0,0,0,0,127,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,5,85,85,85,127,213,85,85,85,0,15,255,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,255,0, + // 0x5171 共 + 113,81,36,38,86,40,2,252,0,0,21,64,0,1,84,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,10,170,191,234,170,171,254,170,164,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,0,0,63,192,0,3,252,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,170,170,170,170,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,15,128,0,7,224,0,0,0,0,63,244,0,31,252,0,0,0,0,255,224,0,11,255,64,0,0,3,255,128,0,1,255,224,0,0,15,254,0,0,0,63,248,0,0,127,248,0,0,0,15,255,0,2,255,208,0,0,0,2,255,208,31,255,64,0,0,0,0,191,244,63,252,0,0,0,0,0,47,252,15,208,0,0,0,0,0,7,240,2,0,0,0,0,0,0,1,64, + // 0x5177 具 + 119,81,36,36,68,40,2,252,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,250,170,170,170,175,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,250,170,170,170,175,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,0,11,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,85,85,85,85,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,11,208,0,3,208,0,0,0,0,127,248,0,31,254,0,0,0,11,255,248,0,47,255,244,0,1,191,255,128,0,2,255,255,128,47,255,248,0,0,0,31,255,248,127,255,128,0,0,0,0,191,254,31,244,0,0,0,0,0,11,244,10,0,0,0,0,0,0,1,128, + // 0x5197 冗 + 151,81,37,35,94,40,2,252,47,255,255,255,255,255,255,255,252,0,47,255,255,255,255,255,255,255,252,0,47,255,255,255,255,255,255,255,252,0,47,234,170,170,170,170,170,171,252,0,47,192,0,0,0,0,0,3,252,0,47,192,0,0,0,0,0,3,252,0,47,192,0,0,0,0,0,3,252,0,47,192,0,0,0,0,0,3,252,0,47,192,0,0,0,0,0,3,252,0,47,192,0,0,0,0,0,3,252,0,21,64,63,255,255,255,248,1,84,0,0,0,63,255,255,255,248,0,0,0,0,0,63,255,255,255,248,0,0,0,0,0,63,229,85,91,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,63,192,0,3,248,0,0,0,0,0,127,128,0,3,248,0,0,0,0,0,191,64,0,3,248,0,16,0,0,0,255,0,0,3,248,0,61,0,0,2,254,0,0,3,248,0,63,64,0,7,253,0,0,3,248,0,127,64,0,31,248,0,0,3,248,0,127,0,0,127,240,0,0,3,248,0,127,0,3,255,208,0,0,3,252,0,191,0,47,255,64,0,0,3,255,170,255,0,255,253,0,0,0,3,255,255,253,0,127,224,0,0,0,1,255,255,252,0,47,64,0,0,0,0,127,255,224,0,4,0,0,0,0,0,0,0,0,0, + // 0x51b7 冷 + 183,81,37,38,124,40,2,252,0,0,0,0,0,170,0,0,0,0,0,0,0,0,2,255,64,0,0,0,4,0,0,0,7,255,192,0,0,0,31,0,0,0,15,255,240,0,0,0,127,208,0,0,47,255,248,0,0,0,191,248,0,0,191,195,254,0,0,0,31,254,0,1,255,65,255,128,0,0,7,255,128,7,255,0,191,208,0,0,0,255,208,31,252,0,47,248,0,0,0,63,128,127,240,0,11,254,0,0,0,14,1,255,208,0,3,255,192,0,0,0,7,255,64,0,0,191,244,0,0,0,47,254,85,85,85,111,254,0,0,1,255,243,255,255,255,203,255,128,0,2,255,195,255,255,255,193,255,0,0,0,254,3,255,255,255,192,61,0,0,0,116,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,255,255,255,255,255,208,0,0,15,210,255,255,255,255,255,208,0,0,47,226,255,255,255,255,255,208,0,0,63,193,85,95,245,85,111,208,0,0,191,128,0,15,240,0,15,208,0,1,255,0,0,15,240,0,15,208,0,3,254,0,0,15,240,0,15,208,0,11,252,0,0,15,240,0,15,208,0,15,244,0,0,15,240,0,15,208,0,63,240,0,0,15,240,0,15,208,0,127,208,0,0,15,240,42,175,208,0,255,128,0,0,15,240,63,255,208,0,255,0,0,0,15,240,31,255,192,0,45,0,0,0,15,240,15,253,0,0,4,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,10,160,0,0,0,0, + // 0x51c6 准 + 198,81,37,38,124,40,2,252,0,0,0,0,36,0,5,0,0,0,0,0,0,0,191,64,11,240,0,0,0,0,0,0,255,0,15,240,0,0,15,64,0,1,254,0,15,224,0,0,63,224,0,3,252,0,47,192,0,0,63,252,0,7,248,0,63,192,0,0,11,255,64,15,244,0,63,64,0,0,1,255,208,31,240,0,191,0,0,0,0,63,240,63,255,255,255,255,253,0,0,15,192,127,255,255,255,255,253,0,0,3,0,255,255,255,255,255,253,0,0,0,2,255,213,86,253,85,84,0,0,0,7,255,192,1,252,0,0,0,0,0,15,255,192,1,252,0,0,0,0,0,63,255,192,1,252,0,0,0,0,0,255,239,192,1,252,0,0,0,0,0,127,159,255,255,255,255,244,0,0,0,30,31,255,255,255,255,244,0,0,0,4,31,255,255,255,255,244,0,0,0,0,31,213,86,253,85,80,0,0,0,0,31,192,1,252,0,0,0,0,11,0,31,192,1,252,0,0,0,0,31,208,31,192,1,252,0,0,0,0,63,208,31,192,1,252,0,0,0,0,127,192,31,255,255,255,255,244,0,0,255,0,31,255,255,255,255,244,0,2,254,0,31,255,255,255,255,244,0,7,252,0,31,213,86,253,85,80,0,15,248,0,31,192,1,252,0,0,0,47,240,0,31,192,1,252,0,0,0,127,208,0,31,192,1,252,0,0,0,255,128,0,31,192,1,252,0,0,0,255,0,0,31,229,86,254,85,85,0,61,0,0,31,255,255,255,255,255,64,8,0,0,31,255,255,255,255,255,64,0,0,0,31,255,255,255,255,255,64,0,0,0,31,192,0,0,0,0,0,0,0,0,31,192,0,0,0,0,0, + // 0x51fa 出 + 250,81,32,38,48,40,4,252,0,0,0,10,144,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,224,0,15,224,0,15,240,15,250,170,175,250,170,175,240,15,255,255,255,255,255,255,240,15,255,255,255,255,255,255,240,15,255,255,255,255,255,255,240,0,0,0,15,224,0,0,0,0,0,0,15,224,0,0,0,106,0,0,15,224,0,0,169,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,0,0,15,224,0,0,254,191,170,170,175,250,170,170,254,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,191,255,255,255,255,255,255,254,191,0,0,0,0,0,0,254,191,0,0,0,0,0,0,254,106,0,0,0,0,0,0,169, + // 0x5206 分 + 6,82,38,37,114,40,1,252,0,0,1,228,0,0,180,0,0,0,0,0,3,254,0,7,252,0,0,0,0,0,7,252,0,3,254,0,0,0,0,0,15,248,0,1,255,0,0,0,0,0,31,240,0,0,255,192,0,0,0,0,63,224,0,0,63,224,0,0,0,0,255,192,0,0,47,244,0,0,0,1,255,64,0,0,15,252,0,0,0,3,255,0,0,0,3,255,0,0,0,15,252,0,0,0,1,255,192,0,0,63,244,0,0,0,0,255,224,0,0,191,224,0,0,0,0,63,248,0,2,255,192,0,0,0,0,15,254,0,15,255,0,0,0,0,0,7,255,192,63,255,170,170,170,170,170,171,255,224,191,251,255,255,255,255,255,253,191,192,47,195,255,255,255,255,255,253,47,0,11,3,255,255,255,255,255,253,4,0,0,0,0,15,240,0,2,253,0,0,0,0,0,15,240,0,2,253,0,0,0,0,0,31,240,0,2,253,0,0,0,0,0,31,224,0,2,252,0,0,0,0,0,47,208,0,2,252,0,0,0,0,0,63,192,0,3,252,0,0,0,0,0,127,192,0,3,252,0,0,0,0,0,255,128,0,3,252,0,0,0,0,1,255,0,0,3,252,0,0,0,0,3,254,0,0,3,252,0,0,0,0,15,252,0,0,3,248,0,0,0,0,47,248,0,0,7,248,0,0,0,0,255,224,0,0,11,244,0,0,0,7,255,192,0,0,15,244,0,0,0,127,255,0,0,0,47,240,0,0,7,255,248,0,7,255,255,224,0,0,3,255,208,0,3,255,255,208,0,0,1,254,0,0,2,255,255,64,0,0,0,224,0,0,0,170,148,0,0,0, + // 0x5217 列 + 23,82,36,37,77,40,1,252,0,0,0,0,0,0,0,0,254,31,255,255,255,255,192,0,0,254,31,255,255,255,255,192,0,0,254,31,255,255,255,255,192,0,0,254,5,86,255,85,85,75,240,0,254,0,1,254,0,0,11,240,0,254,0,2,252,0,0,11,240,0,254,0,3,252,0,0,11,240,0,254,0,3,248,0,0,11,240,0,254,0,7,244,0,0,11,240,0,254,0,15,255,255,254,11,240,0,254,0,31,255,255,255,11,240,0,254,0,47,255,255,254,11,240,0,254,0,63,213,85,254,11,240,0,254,0,191,64,1,253,11,240,0,254,0,255,0,2,252,11,240,0,254,3,253,0,3,252,11,240,0,254,7,255,0,3,248,11,240,0,254,15,255,224,7,244,11,240,0,254,63,255,252,15,240,11,240,0,254,255,203,255,79,224,11,240,0,254,127,1,255,255,208,11,240,0,254,12,0,63,255,192,11,240,0,254,0,0,11,255,64,11,240,0,254,0,0,1,255,0,11,240,0,254,0,0,2,253,0,11,240,0,254,0,0,7,252,0,0,0,0,254,0,0,15,244,0,0,0,0,254,0,0,63,224,0,0,0,0,254,0,0,191,192,0,0,0,0,254,0,2,255,64,0,0,0,0,254,0,15,253,0,0,0,0,0,254,0,127,248,0,0,0,0,1,254,2,255,224,0,0,0,47,255,253,3,255,64,0,0,0,15,255,252,0,252,0,0,0,0,15,255,244,0,32,0,0,0,0,6,169,64, + // 0x521d 初 + 29,82,37,39,134,40,1,251,0,3,244,0,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,0,7,244,0,170,170,170,170,170,64,0,7,244,1,255,255,255,255,255,128,0,7,244,1,255,255,255,255,255,128,0,7,244,1,255,255,255,255,255,128,21,91,249,80,0,15,224,0,127,64,63,255,255,253,0,15,224,0,127,64,63,255,255,253,0,15,224,0,127,64,63,255,255,252,0,31,224,0,127,64,0,0,3,248,0,31,208,0,127,64,0,0,11,240,0,31,208,0,127,64,0,0,31,224,0,31,208,0,127,64,0,0,63,192,0,31,208,0,127,64,0,0,191,70,0,47,192,0,191,64,0,1,255,15,128,47,192,0,191,64,0,3,252,47,192,47,192,0,191,0,0,11,252,127,0,63,192,0,191,0,0,47,255,252,0,63,192,0,191,0,0,191,255,244,0,63,128,0,191,0,1,255,255,240,0,127,64,0,191,0,11,255,251,252,0,191,0,0,255,0,47,255,245,255,0,255,0,0,255,0,191,231,244,191,64,255,0,0,255,0,63,199,244,62,2,253,0,0,255,0,46,7,244,12,3,252,0,0,255,0,8,7,244,0,7,252,0,0,255,0,0,7,244,0,15,244,0,0,254,0,0,7,244,0,31,240,0,1,254,0,0,7,244,0,63,208,0,1,253,0,0,7,244,0,191,192,0,2,253,0,0,7,244,2,255,64,0,3,252,0,0,7,244,11,254,0,0,11,252,0,0,7,244,47,252,0,191,255,248,0,0,7,244,63,240,0,63,255,240,0,0,7,244,15,192,0,63,255,208,0,0,3,244,2,0,0,42,169,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5230 到 + 48,82,36,37,77,40,1,252,0,0,0,0,0,0,0,0,170,0,0,0,0,0,0,0,0,254,63,255,255,255,255,208,0,0,254,63,255,255,255,255,208,0,0,254,63,255,255,255,255,211,244,0,254,21,87,253,85,85,67,244,0,254,0,7,248,0,0,3,244,0,254,0,11,244,7,192,3,244,0,254,0,15,240,31,224,3,244,0,254,0,31,208,11,244,3,244,0,254,0,47,192,3,252,3,244,0,254,0,63,128,0,255,3,244,0,254,42,255,255,255,255,67,244,0,254,63,255,255,255,255,195,244,0,254,63,255,255,255,255,227,244,0,254,63,254,170,85,11,243,244,0,254,0,0,21,64,3,131,244,0,254,0,0,47,192,0,3,244,0,254,0,0,47,192,0,3,244,0,254,0,0,47,192,0,3,244,0,254,0,0,47,192,0,3,244,0,254,11,255,255,255,255,3,244,0,254,11,255,255,255,255,3,244,0,254,11,255,255,255,255,3,244,0,254,1,85,111,213,85,3,244,0,254,0,0,47,192,0,3,244,0,254,0,0,47,192,0,2,164,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,0,0,0,0,254,0,0,47,192,5,144,0,0,254,0,0,47,239,255,208,0,0,254,5,175,255,255,255,208,0,0,254,127,255,255,255,255,208,0,0,254,63,255,255,254,148,0,31,255,254,63,255,165,0,0,0,15,255,253,41,0,0,0,0,0,11,255,248,0,0,0,0,0,0,7,170,64, + // 0x5236 制 + 54,82,36,38,86,40,1,252,0,0,6,144,0,0,0,0,0,0,164,11,240,0,0,0,0,191,0,254,11,240,0,0,0,0,191,1,253,11,240,0,0,0,0,191,2,252,11,240,0,0,47,192,191,3,252,11,240,0,0,47,192,191,3,255,255,255,255,208,47,192,191,7,255,255,255,255,208,47,192,191,15,255,255,255,255,208,47,192,191,31,229,95,245,85,64,47,192,191,63,192,11,240,0,0,47,192,191,127,128,11,240,0,0,47,192,191,7,0,11,240,0,0,47,192,191,63,255,255,255,255,252,47,192,191,63,255,255,255,255,252,47,192,191,63,255,255,255,255,252,47,192,191,21,85,95,245,85,84,47,192,191,0,0,11,240,0,0,47,192,191,0,0,11,240,0,0,47,192,191,0,0,11,240,0,0,47,192,191,7,255,255,255,255,240,47,192,191,7,255,255,255,255,240,47,192,191,7,255,255,255,255,240,47,192,191,7,245,95,245,91,240,47,192,191,7,240,11,240,11,240,47,192,191,7,240,11,240,11,240,47,192,191,7,240,11,240,11,240,21,64,191,7,240,11,240,11,240,0,0,191,7,240,11,240,11,240,0,0,191,7,240,11,240,11,240,0,0,191,7,240,11,240,11,240,0,0,191,7,240,11,240,11,240,0,0,191,7,240,11,243,255,224,0,0,191,7,240,11,241,255,208,0,0,191,7,224,11,240,254,64,7,255,255,0,0,11,240,0,0,3,255,254,0,0,11,240,0,0,2,255,252,0,0,11,240,0,0,1,250,144, + // 0x5237 刷 + 55,82,36,37,77,40,1,252,0,0,0,0,0,0,0,0,190,1,85,85,85,85,80,0,0,191,3,255,255,255,255,240,0,0,191,3,255,255,255,255,240,21,0,191,3,255,255,255,255,240,191,0,191,3,244,0,0,11,240,191,0,191,3,244,0,0,11,240,191,0,191,3,244,0,0,11,240,191,0,191,3,244,0,0,11,240,191,0,191,3,255,255,255,255,240,191,0,191,3,255,255,255,255,240,191,0,191,3,255,255,255,255,240,191,0,191,3,249,85,191,85,80,191,0,191,3,244,0,127,0,0,191,0,191,3,244,0,127,0,0,191,0,191,3,244,0,127,0,0,191,0,191,3,244,0,127,0,0,191,0,191,3,251,255,255,255,240,191,0,191,3,251,255,255,255,240,191,0,191,3,251,255,255,255,240,191,0,191,3,251,224,127,3,240,191,0,191,3,247,224,127,3,240,191,0,191,3,247,224,127,3,240,191,0,191,3,247,224,127,3,240,191,0,191,7,243,224,127,3,240,191,0,191,7,243,224,127,3,240,191,0,191,11,227,224,127,3,240,21,0,191,15,227,224,127,3,240,0,0,191,15,211,224,127,3,240,0,0,191,15,195,224,127,191,240,0,0,191,47,195,224,127,63,224,0,0,191,63,131,224,127,63,128,0,0,191,63,65,64,127,0,0,0,0,255,191,0,0,127,0,0,7,255,255,62,0,0,127,0,0,3,255,254,8,0,0,127,0,0,2,255,252,0,0,0,126,0,0,1,234,80, + // 0x5275 創 + 117,82,36,38,86,40,1,252,0,0,1,80,0,0,0,0,0,0,0,15,252,0,0,0,0,254,0,0,47,255,0,0,0,0,254,0,0,127,255,208,0,0,0,254,0,1,255,111,248,0,0,0,254,0,3,253,7,254,2,252,0,254,0,15,248,1,255,130,252,0,254,0,127,224,0,127,242,252,0,254,1,255,255,255,255,242,252,0,254,11,254,255,255,231,210,252,0,254,127,248,106,170,145,66,252,0,254,63,224,0,0,0,2,252,0,254,31,234,170,170,170,66,252,0,254,8,191,255,255,255,66,252,0,254,0,191,255,255,255,66,252,0,254,0,190,0,0,63,66,252,0,254,0,190,0,0,63,66,252,0,254,0,191,255,255,255,66,252,0,254,0,191,255,255,255,66,252,0,254,0,191,85,85,127,66,252,0,254,0,190,0,0,63,66,252,0,254,0,190,0,0,63,66,252,0,254,0,191,255,255,255,66,252,0,254,0,255,255,255,255,66,252,0,254,0,255,170,170,170,66,252,0,254,0,252,0,0,0,2,252,0,254,0,254,170,170,170,130,252,0,254,1,255,255,255,255,194,252,0,254,2,255,255,255,255,192,0,0,254,3,251,224,0,15,192,0,0,254,7,247,224,0,15,192,0,0,254,11,231,224,0,15,192,0,0,254,15,215,224,0,15,192,0,0,254,63,199,255,255,255,192,0,0,254,127,7,255,255,255,192,15,255,254,30,7,255,255,255,192,15,255,253,4,7,224,0,15,192,11,255,248,0,6,144,0,5,64,2,170,64, + // 0x529b 力 + 155,82,34,39,95,40,2,251,0,0,0,10,160,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,240,0,0,0,0,47,255,255,255,255,255,255,255,240,47,255,255,255,255,255,255,255,240,47,255,255,255,255,255,255,255,240,47,255,255,255,255,255,255,255,240,0,0,0,31,224,0,0,15,240,0,0,0,31,224,0,0,15,240,0,0,0,47,208,0,0,15,240,0,0,0,47,208,0,0,15,240,0,0,0,63,192,0,0,15,240,0,0,0,63,192,0,0,15,224,0,0,0,127,128,0,0,15,224,0,0,0,255,64,0,0,15,224,0,0,0,255,0,0,0,31,224,0,0,1,255,0,0,0,31,208,0,0,3,253,0,0,0,31,208,0,0,7,252,0,0,0,47,208,0,0,15,248,0,0,0,47,192,0,0,47,240,0,0,0,63,192,0,0,63,224,0,0,0,63,192,0,0,255,192,0,0,0,63,192,0,3,255,64,0,0,0,127,128,0,11,254,0,0,0,0,127,128,0,63,252,0,0,0,0,191,64,0,255,240,0,0,0,0,255,0,7,255,192,0,0,0,3,255,0,47,255,0,0,0,255,255,254,0,127,252,0,0,0,255,255,252,0,31,208,0,0,0,127,255,240,0,11,0,0,0,0,42,170,64,0,0,0,0,0,0,0,0,0,0, + // 0x52a0 加 + 160,82,36,37,77,40,1,252,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,0,0,0,0,0,11,240,0,0,31,255,255,253,0,11,240,0,0,31,255,255,253,0,11,240,0,0,31,255,255,253,47,255,255,255,252,31,234,170,253,47,255,255,255,252,31,192,0,253,47,255,255,255,252,31,192,0,253,26,175,250,171,248,31,192,0,253,0,11,240,3,248,31,192,0,253,0,15,240,3,248,31,192,0,253,0,15,240,3,248,31,192,0,253,0,15,224,3,248,31,192,0,253,0,15,224,3,248,31,192,0,253,0,15,224,3,248,31,192,0,253,0,15,224,3,248,31,192,0,253,0,15,208,3,248,31,192,0,253,0,31,208,3,248,31,192,0,253,0,31,192,3,248,31,192,0,253,0,47,192,3,244,31,192,0,253,0,63,192,3,244,31,192,0,253,0,63,128,3,244,31,192,0,253,0,63,128,7,244,31,192,0,253,0,127,64,7,244,31,192,0,253,0,191,0,7,244,31,192,0,253,0,255,0,7,240,31,192,0,253,1,254,0,11,240,31,192,0,253,3,252,0,11,240,31,234,170,253,7,248,0,15,240,31,255,255,253,15,244,0,15,240,31,255,255,253,47,240,106,191,224,31,255,255,253,127,208,63,255,208,31,192,0,253,127,128,63,255,128,31,192,0,253,15,0,47,253,0,31,192,0,169,4,0,0,0,0,0,0,0,0, + // 0x52d5 動 + 213,82,37,38,124,40,1,252,0,0,0,0,80,0,0,0,0,0,0,0,86,191,252,0,127,64,0,0,47,255,255,255,254,0,127,64,0,0,47,255,255,255,228,0,127,64,0,0,15,250,191,128,0,0,127,64,0,0,0,0,63,64,0,0,127,64,0,0,0,0,63,64,0,0,127,64,0,0,42,170,191,234,170,64,127,0,0,0,63,255,255,255,255,128,127,0,0,0,63,255,255,255,255,149,191,149,85,0,0,0,63,64,0,191,255,255,255,64,0,0,63,64,0,191,255,255,255,64,15,255,255,255,255,191,255,255,255,64,15,255,255,255,255,0,127,0,63,64,15,213,127,149,191,0,191,0,63,64,15,192,63,64,127,0,191,0,63,64,15,192,63,64,127,0,191,0,127,64,15,255,255,255,255,0,190,0,127,64,15,255,255,255,255,0,254,0,127,64,15,213,127,149,127,0,254,0,127,0,15,192,63,64,127,0,253,0,127,0,15,192,63,64,127,1,253,0,127,0,15,255,255,255,255,2,252,0,127,0,15,255,255,255,255,2,252,0,191,0,5,85,127,149,85,3,248,0,191,0,0,0,63,64,0,7,244,0,191,0,10,170,191,234,170,11,240,0,191,0,15,255,255,255,255,15,240,0,191,0,15,255,255,255,255,47,208,0,255,0,0,0,63,64,0,63,192,0,254,0,0,0,63,64,0,191,128,0,254,0,0,0,63,133,175,255,0,0,253,0,0,86,191,255,255,254,0,1,253,0,127,255,255,255,255,252,0,3,252,0,63,255,255,254,191,244,15,255,252,0,63,234,80,0,127,208,15,255,244,0,0,0,0,0,31,64,11,255,224,0,0,0,0,0,5,0,1,85,0,0, + // 0x5316 化 + 22,83,38,37,114,40,1,252,0,0,3,144,11,240,0,0,0,0,0,0,11,248,11,240,0,0,0,0,0,0,15,240,11,240,0,0,0,0,0,0,47,224,11,240,0,0,0,0,0,0,63,192,11,240,0,0,0,0,0,0,255,128,11,240,0,0,0,0,0,1,255,0,11,240,0,0,0,0,0,3,254,0,11,240,0,0,160,0,0,11,252,0,11,240,0,2,244,0,0,31,244,0,11,240,0,15,253,0,0,63,244,0,11,240,0,127,253,0,0,255,244,0,11,240,2,255,240,0,2,255,244,0,11,240,31,255,128,0,11,255,244,0,11,240,255,252,0,0,47,255,244,0,11,251,255,208,0,0,191,247,244,0,11,255,254,0,0,0,255,215,244,0,11,255,224,0,0,0,63,71,244,0,11,255,64,0,0,0,45,7,244,0,11,244,0,0,0,0,4,7,244,0,11,240,0,0,0,0,0,7,244,0,11,240,0,0,0,0,0,7,244,0,11,240,0,0,0,0,0,7,244,0,11,240,0,0,0,0,0,7,244,0,11,240,0,0,0,0,0,7,244,0,11,240,0,0,0,0,0,7,244,0,11,240,0,0,4,0,0,7,244,0,11,240,0,0,15,128,0,7,244,0,11,240,0,0,15,224,0,7,244,0,11,240,0,0,15,208,0,7,244,0,11,240,0,0,15,208,0,7,244,0,11,240,0,0,31,192,0,7,244,0,11,244,0,0,63,192,0,7,244,0,7,254,85,86,255,128,0,7,244,0,3,255,255,255,255,64,0,7,244,0,2,255,255,255,254,0,0,7,244,0,0,111,255,255,244,0,0,2,160,0,0,0,0,0,0,0, + // 0x534a 半 + 74,83,36,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,9,0,0,255,0,0,164,0,0,191,0,0,255,0,0,255,64,0,255,64,0,255,0,1,255,0,0,127,192,0,255,0,3,253,0,0,47,224,0,255,0,7,252,0,0,15,240,0,255,0,15,244,0,0,11,248,0,255,0,31,240,0,0,3,252,0,255,0,63,208,0,0,3,253,0,255,0,191,128,0,0,1,253,0,255,0,191,0,0,0,0,128,0,255,0,5,0,0,0,0,0,0,255,0,0,0,0,2,170,170,170,255,170,170,170,144,7,255,255,255,255,255,255,255,224,7,255,255,255,255,255,255,255,224,7,255,255,255,255,255,255,255,224,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,171,255,170,170,170,170,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0, + // 0x5354 協 + 84,83,37,38,124,40,1,252,0,47,192,0,0,7,240,0,0,0,0,47,192,0,0,7,240,0,0,0,0,47,192,0,0,11,240,0,0,0,0,47,192,0,0,11,240,0,0,0,0,47,192,3,255,255,255,255,253,0,0,47,192,3,255,255,255,255,253,0,0,47,192,3,255,255,255,255,252,0,0,47,192,0,0,63,192,1,252,0,0,47,192,0,0,127,64,1,252,0,0,47,192,0,0,255,0,2,252,0,21,127,213,64,2,253,0,2,252,0,127,255,255,208,7,252,0,3,248,0,127,255,255,208,47,240,0,7,244,0,127,255,255,209,255,192,15,255,240,0,0,47,192,31,254,0,15,255,224,0,0,47,192,15,244,0,11,255,64,0,0,47,192,3,64,0,0,0,0,0,0,47,192,3,240,0,0,252,0,0,0,47,192,3,240,0,0,252,0,0,0,47,192,3,240,0,0,252,0,0,0,47,192,3,240,0,0,252,0,0,0,47,194,255,255,253,191,255,255,128,0,47,195,255,255,253,191,255,255,192,0,47,195,255,255,253,191,255,255,128,0,47,192,7,224,189,1,248,31,128,0,47,192,11,224,189,2,248,31,128,0,47,192,11,208,252,3,244,31,128,0,47,192,15,192,252,3,240,31,128,0,47,192,15,192,252,3,240,31,128,0,47,192,31,128,252,11,224,47,128,0,47,192,47,64,252,15,208,47,64,0,47,192,63,0,252,31,192,47,64,0,47,192,191,0,252,63,128,63,64,0,47,192,253,1,252,127,0,63,0,0,47,195,252,2,249,254,0,127,0,0,47,203,240,191,247,252,31,255,0,0,47,195,208,127,240,240,15,253,0,0,47,193,64,63,128,64,15,244,0, + // 0x5361 卡 + 97,83,36,38,86,40,2,252,0,0,0,2,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,254,170,170,169,0,0,0,0,3,255,255,255,254,0,0,0,0,3,255,255,255,254,0,0,0,0,3,255,255,255,254,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,171,254,170,170,170,170,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,64,0,0,0,0,0,0,3,255,249,0,0,0,0,0,0,3,255,255,228,0,0,0,0,0,3,255,255,255,144,0,0,0,0,3,252,111,255,253,0,0,0,0,3,252,1,255,255,192,0,0,0,3,252,0,11,255,128,0,0,0,3,252,0,0,127,0,0,0,0,3,252,0,0,5,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,2,252,0,0,0,0, + // 0x5370 印 + 112,83,33,38,86,40,4,252,0,0,1,64,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,2,255,244,0,0,0,0,0,0,127,255,248,63,255,255,255,192,251,255,255,128,63,255,255,255,192,255,255,228,0,63,255,255,255,192,255,249,0,0,63,234,170,191,192,255,64,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,255,255,244,63,128,0,63,192,255,255,255,244,63,128,0,63,192,255,255,255,244,63,128,0,63,192,255,170,170,160,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,0,0,0,63,128,0,63,192,255,255,255,244,63,128,0,63,192,255,255,255,244,63,129,255,255,128,255,255,255,244,63,128,255,255,128,255,170,170,164,63,128,191,255,0,255,0,0,0,63,128,63,228,0,255,0,0,0,63,128,0,0,0,255,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,42,64,0,0,0, + // 0x5378 卸 + 120,83,36,38,86,40,1,252,0,10,64,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,47,192,0,0,5,85,85,85,0,63,128,0,0,15,255,255,255,0,127,149,85,84,15,255,255,255,0,255,255,255,254,15,255,255,255,1,255,255,255,254,15,208,0,191,3,255,255,255,254,15,208,0,191,11,244,31,192,0,15,208,0,191,31,240,31,192,0,15,208,0,191,63,208,31,192,0,15,208,0,191,11,128,31,192,0,15,208,0,191,1,0,31,192,0,15,208,0,191,63,255,255,255,255,79,208,0,191,63,255,255,255,255,79,208,0,191,63,255,255,255,255,79,208,0,191,21,85,111,213,85,15,208,0,191,0,0,31,192,0,15,208,0,191,0,0,31,192,0,15,208,0,191,2,244,31,192,0,15,208,0,191,3,244,31,192,0,15,208,0,191,3,244,31,255,252,15,208,0,191,3,244,31,255,252,15,208,0,191,3,244,31,255,252,15,208,0,191,3,244,31,192,0,15,208,0,191,3,244,31,192,0,15,208,0,191,3,244,31,192,0,15,208,0,191,3,244,31,192,0,15,208,0,255,3,244,31,192,0,15,208,255,255,3,244,31,192,26,79,208,191,254,3,244,31,255,255,79,208,127,252,3,255,255,255,255,79,208,62,144,127,255,255,255,255,79,208,0,0,127,255,255,249,64,15,208,0,0,127,255,148,0,0,15,208,0,0,57,64,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,15,208,0,0, + // 0x537b 卻 + 123,83,36,37,77,40,1,252,0,0,47,224,0,0,0,0,0,0,0,127,252,0,10,170,170,169,0,0,255,255,0,15,255,255,255,0,3,255,255,208,15,255,255,255,0,11,252,63,244,15,255,255,255,0,47,240,15,253,15,208,0,191,0,255,192,3,255,79,208,0,191,7,255,0,0,255,143,208,0,191,47,252,0,0,63,15,208,0,191,15,240,0,0,12,15,208,0,191,7,128,47,240,0,15,208,0,191,0,0,127,252,0,15,208,0,191,0,0,255,255,0,15,208,0,191,0,3,255,255,192,15,208,0,191,0,11,252,63,240,15,208,0,191,0,47,244,15,252,15,208,0,191,0,191,224,7,254,15,208,0,191,2,255,128,1,255,143,208,0,191,15,254,0,0,191,207,208,0,191,127,248,0,0,63,15,208,0,191,127,240,0,0,29,15,208,0,191,31,191,255,255,244,15,208,0,191,4,191,255,255,244,15,208,0,191,0,191,255,255,244,15,208,0,191,0,191,0,3,244,15,208,0,191,0,191,0,3,244,15,208,0,255,0,191,0,3,244,15,208,255,255,0,191,0,3,244,15,208,191,254,0,191,0,3,244,15,208,127,252,0,191,0,3,244,15,208,42,144,0,191,0,7,244,15,208,0,0,0,191,255,255,244,15,208,0,0,0,191,255,255,244,15,208,0,0,0,191,255,255,244,15,208,0,0,0,191,0,3,244,15,208,0,0,0,191,0,3,244,15,208,0,0,0,20,0,0,0,15,208,0,0, + // 0x539f 原 + 159,83,37,36,104,40,1,252,0,255,255,255,255,255,255,255,255,128,0,255,255,255,255,255,255,255,255,128,0,255,255,255,255,255,255,255,255,128,0,255,85,85,86,255,85,85,85,64,0,254,0,0,1,255,0,0,0,0,0,254,0,0,2,254,0,0,0,0,0,254,0,0,3,253,0,0,0,0,0,254,3,255,255,255,255,255,224,0,0,254,3,255,255,255,255,255,224,0,0,254,3,255,255,255,255,255,224,0,0,254,3,248,0,0,0,15,224,0,0,254,3,248,0,0,0,15,224,0,0,254,3,248,0,0,0,15,224,0,0,254,3,254,170,170,170,191,224,0,0,254,3,255,255,255,255,255,224,0,0,254,3,255,255,255,255,255,224,0,0,254,3,248,0,0,0,15,224,0,0,254,3,248,0,0,0,15,224,0,0,254,3,248,0,0,0,15,224,0,0,253,3,255,255,255,255,255,224,0,1,253,3,255,255,255,255,255,224,0,1,253,3,255,255,255,255,255,224,0,1,252,0,0,0,191,0,0,0,0,2,252,0,0,0,191,0,0,0,0,3,252,0,62,64,191,0,184,0,0,3,248,0,127,192,191,3,254,0,0,3,248,0,255,0,191,1,255,128,0,7,244,3,254,0,191,0,63,224,0,11,240,11,252,0,191,0,31,248,0,15,240,47,240,0,191,0,7,253,0,15,224,191,208,0,191,0,1,255,0,47,211,255,64,0,191,0,0,191,192,63,195,253,1,65,255,0,0,63,128,127,128,180,3,255,255,0,0,13,0,47,0,0,1,255,253,0,0,0,0,2,0,0,0,255,228,0,0,0,0, + // 0x53cd 反 + 205,83,36,36,68,40,2,252,0,42,170,170,170,170,170,170,160,0,127,255,255,255,255,255,255,240,0,127,255,255,255,255,255,255,240,0,127,255,255,255,255,255,255,240,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,255,255,255,255,255,253,0,0,127,255,255,255,255,255,255,0,0,127,255,255,255,255,255,254,0,0,127,239,254,170,170,171,253,0,0,127,67,252,0,0,3,252,0,0,127,66,253,0,0,11,248,0,0,127,1,255,0,0,15,240,0,0,191,0,255,64,0,47,224,0,0,191,0,127,192,0,63,208,0,0,255,0,63,208,0,255,192,0,0,255,0,31,244,2,255,0,0,0,254,0,11,252,11,254,0,0,0,253,0,3,255,31,252,0,0,1,253,0,1,255,255,240,0,0,2,252,0,0,191,255,208,0,0,3,252,0,0,47,255,64,0,0,3,248,0,0,47,255,64,0,0,11,244,0,1,255,255,240,0,0,15,240,0,15,255,255,254,0,0,31,224,1,255,254,31,255,228,0,63,208,111,255,244,3,255,255,144,127,195,255,255,128,0,127,255,253,191,65,255,248,0,0,7,255,252,31,0,191,64,0,0,0,111,240,0,0,32,0,0,0,0,1,144, + // 0x53d6 取 + 214,83,38,36,104,40,1,252,21,85,85,85,85,64,0,0,0,0,63,255,255,255,255,128,0,0,0,0,63,255,255,255,255,128,0,0,0,0,63,255,255,255,255,234,170,170,169,0,0,254,0,11,241,255,255,255,255,64,0,254,0,11,241,255,255,255,255,0,0,254,0,11,241,255,255,255,255,0,0,254,0,11,240,26,0,0,255,0,0,254,0,11,240,255,0,0,254,0,0,255,255,255,240,191,0,0,254,0,0,255,255,255,240,127,64,1,253,0,0,255,255,255,240,63,128,2,252,0,0,254,85,95,240,63,192,3,252,0,0,254,0,11,240,47,192,3,248,0,0,254,0,11,240,31,208,7,244,0,0,254,0,11,240,15,224,11,240,0,0,254,0,11,240,15,240,15,240,0,0,254,85,95,240,11,244,31,224,0,0,255,255,255,240,3,248,47,192,0,0,255,255,255,240,3,252,63,192,0,0,255,255,255,240,1,253,191,128,0,0,254,0,11,240,0,255,255,0,0,0,254,0,11,240,0,191,254,0,0,0,254,0,11,240,0,63,252,0,0,0,254,0,11,240,0,47,248,0,0,0,254,0,111,240,0,47,244,0,0,0,255,255,255,240,0,127,253,0,0,191,255,255,255,240,0,255,255,0,0,191,255,255,255,240,3,255,255,192,0,127,255,229,11,240,15,252,127,240,0,62,80,0,11,240,127,240,31,252,0,0,0,0,11,242,255,192,11,255,128,0,0,0,11,255,255,64,2,255,224,0,0,0,11,243,248,0,0,127,192,0,0,0,11,241,208,0,0,15,0,0,0,0,11,224,0,0,0,0,0, + // 0x53f0 台 + 240,83,36,38,86,40,2,252,0,0,0,120,0,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,253,0,0,16,0,0,0,0,11,252,0,0,184,0,0,0,0,15,244,0,3,254,0,0,0,0,47,224,0,2,255,192,0,0,0,63,192,0,0,191,240,0,0,0,255,64,0,0,31,252,0,0,1,255,0,0,0,7,255,0,0,3,254,86,170,191,255,255,128,127,255,255,255,255,255,255,255,224,127,255,255,255,255,255,255,255,244,63,255,255,255,255,255,234,175,252,63,250,169,85,0,0,0,3,255,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,0,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,170,170,170,170,170,164,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,192,0,0,0,3,252,0,0,63,234,170,170,170,171,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,192,0,0,0,3,252,0,0,42,128,0,0,0,2,168,0, + // 0x5408 合 + 8,84,38,38,124,40,1,252,0,0,0,0,106,128,0,0,0,0,0,0,0,0,255,224,0,0,0,0,0,0,0,2,255,244,0,0,0,0,0,0,0,7,255,252,0,0,0,0,0,0,0,31,251,255,0,0,0,0,0,0,0,63,240,255,192,0,0,0,0,0,0,255,192,127,240,0,0,0,0,0,3,255,64,31,252,0,0,0,0,0,15,253,0,7,255,64,0,0,0,0,127,244,0,1,255,208,0,0,0,1,255,208,0,0,127,248,0,0,0,11,255,64,0,0,15,255,64,0,0,63,253,0,0,0,3,255,224,0,2,255,249,85,85,85,85,255,254,0,31,255,127,255,255,255,255,223,255,208,127,252,63,255,255,255,255,195,255,208,47,208,63,255,255,255,255,192,127,128,15,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,85,85,85,85,84,0,0,0,3,255,255,255,255,255,253,0,0,0,3,255,255,255,255,255,253,0,0,0,3,255,255,255,255,255,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,244,0,0,0,1,253,0,0,0,3,255,255,255,255,255,253,0,0,0,3,255,255,255,255,255,253,0,0,0,3,255,255,255,255,255,253,0,0,0,3,249,85,85,85,86,253,0,0,0,3,244,0,0,0,1,253,0,0, + // 0x5426 否 + 38,84,37,36,104,40,1,252,5,85,85,85,85,85,85,85,85,0,15,255,255,255,255,255,255,255,255,64,15,255,255,255,255,255,255,255,255,64,15,255,255,255,255,255,255,255,255,64,0,0,0,0,15,252,0,0,0,0,0,0,0,0,127,244,0,0,0,0,0,0,0,1,255,208,0,0,0,0,0,0,0,11,255,192,0,0,0,0,0,0,0,127,255,193,253,0,0,0,0,0,2,255,255,199,255,208,0,0,0,0,47,255,191,194,255,248,0,0,0,2,255,252,63,192,47,255,128,0,0,47,255,224,63,192,2,255,244,0,7,255,255,0,63,192,0,63,255,0,127,255,244,0,63,192,0,7,255,192,47,255,64,0,63,192,0,0,191,64,15,244,0,0,63,192,0,0,29,0,2,0,0,0,63,192,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,255,64,0,0,15,255,255,255,255,255,255,64,0,0,15,255,255,255,255,255,255,64,0,0,15,240,0,0,0,0,255,64,0,0,15,240,0,0,0,0,191,64,0,0,15,240,0,0,0,0,191,64,0,0,15,240,0,0,0,0,191,64,0,0,15,240,0,0,0,0,191,64,0,0,15,240,0,0,0,0,191,64,0,0,15,240,0,0,0,0,191,64,0,0,15,240,0,0,0,0,255,64,0,0,15,255,255,255,255,255,255,64,0,0,15,255,255,255,255,255,255,64,0,0,15,255,255,255,255,255,255,64,0,0,15,240,0,0,0,0,191,64,0,0,15,224,0,0,0,0,170,0,0, + // 0x544a 告 + 74,84,36,39,95,40,2,251,0,0,0,0,42,128,0,0,0,0,3,248,0,63,192,0,0,0,0,3,252,0,63,192,0,0,0,0,11,248,0,63,192,0,0,0,0,15,240,0,63,192,0,0,0,0,31,224,0,63,192,0,0,0,0,63,255,255,255,255,255,255,128,0,191,255,255,255,255,255,255,128,0,255,255,255,255,255,255,255,128,3,254,85,85,127,213,85,85,64,11,252,0,0,63,192,0,0,0,31,244,0,0,63,192,0,0,0,63,224,0,0,63,192,0,0,0,7,192,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,21,85,85,85,85,85,85,85,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,252,0,0,47,255,255,255,255,255,252,0,0,47,255,255,255,255,255,252,0,0,47,229,85,85,85,87,252,0,0,47,192,0,0,0,2,252,0,0,47,192,0,0,0,2,252,0,0,47,192,0,0,0,2,252,0,0,47,192,0,0,0,2,252,0,0,47,192,0,0,0,2,252,0,0,47,192,0,0,0,2,252,0,0,47,213,85,85,85,87,252,0,0,47,255,255,255,255,255,252,0,0,47,255,255,255,255,255,252,0,0,47,255,255,255,255,255,252,0,0,47,192,0,0,0,2,252,0,0,47,192,0,0,0,2,252,0,0,0,0,0,0,0,0,0,0, + // 0x547d 命 + 125,84,38,38,124,40,1,252,0,0,0,0,191,192,0,0,0,0,0,0,0,1,255,240,0,0,0,0,0,0,0,3,255,252,0,0,0,0,0,0,0,15,255,255,0,0,0,0,0,0,0,63,241,255,192,0,0,0,0,0,1,255,208,191,240,0,0,0,0,0,7,255,64,47,253,0,0,0,0,0,47,253,0,7,255,128,0,0,0,0,255,240,0,1,255,244,0,0,0,7,255,192,0,0,63,254,0,0,0,47,255,85,85,85,95,255,208,0,2,255,247,255,255,255,253,255,253,0,47,255,131,255,255,255,252,47,255,224,255,253,3,255,255,255,252,3,255,224,63,224,0,0,0,0,0,0,127,192,30,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,192,255,255,255,240,0,0,191,255,255,192,255,255,255,240,0,0,191,255,255,192,255,255,255,240,0,0,191,0,47,192,254,85,91,240,0,0,190,0,31,192,254,0,7,240,0,0,190,0,31,192,254,0,7,240,0,0,190,0,31,192,254,0,7,240,0,0,190,0,31,192,254,0,7,240,0,0,190,0,31,192,254,0,7,240,0,0,190,0,31,192,254,0,7,240,0,0,190,0,31,192,254,0,7,240,0,0,191,255,255,192,254,0,7,240,0,0,191,255,255,192,254,0,11,240,0,0,191,255,255,192,254,15,255,240,0,0,191,0,0,0,254,15,255,240,0,0,190,0,0,0,254,11,255,192,0,0,190,0,0,0,254,1,80,0,0,0,106,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0, + // 0x548c 和 + 140,84,35,37,77,40,1,252,0,0,0,31,192,0,0,0,0,0,0,27,255,240,0,0,0,0,1,175,255,255,244,0,0,0,0,31,255,255,254,64,255,255,255,252,15,255,255,64,0,255,255,255,252,11,164,191,64,0,255,255,255,252,0,0,127,64,0,255,170,171,252,0,0,127,64,0,254,0,2,252,0,0,127,64,0,254,0,2,252,0,0,127,64,0,254,0,2,252,0,0,127,64,0,254,0,2,252,63,255,255,255,248,254,0,2,252,63,255,255,255,248,254,0,2,252,63,255,255,255,248,254,0,2,252,21,86,255,149,84,254,0,2,252,0,3,255,64,0,254,0,2,252,0,3,255,208,0,254,0,2,252,0,11,255,240,0,254,0,2,252,0,15,255,252,0,254,0,2,252,0,31,255,255,0,254,0,2,252,0,63,255,191,128,254,0,2,252,0,127,127,111,208,254,0,2,252,0,253,127,79,240,254,0,2,252,2,252,127,71,244,254,0,2,252,7,248,127,66,224,254,0,2,252,15,240,127,64,192,254,0,2,252,47,208,127,64,0,254,0,2,252,191,192,127,64,0,254,0,2,252,127,64,127,64,0,255,255,255,252,62,0,127,64,0,255,255,255,252,28,0,127,64,0,255,255,255,252,0,0,127,64,0,255,170,171,252,0,0,127,64,0,254,0,2,252,0,0,127,64,0,254,0,2,252,0,0,127,64,0,254,0,1,168,0,0,127,64,0,0,0,0,0,0,0,106,0,0,0,0,0,0, + // 0x555f 啟 + 95,85,38,39,134,40,1,251,0,0,5,0,0,0,25,64,0,0,0,0,191,0,0,0,47,192,0,0,0,0,63,64,0,0,63,128,0,0,0,0,63,192,0,0,63,64,0,0,0,0,31,192,0,0,63,64,0,0,0,85,95,229,84,0,127,0,0,0,2,255,255,255,252,0,191,0,0,0,2,255,255,255,252,0,254,0,0,0,2,255,255,255,252,0,255,255,255,192,2,248,0,0,252,1,255,255,255,192,2,248,0,0,252,2,255,255,255,192,2,248,0,0,252,3,249,86,254,64,2,248,0,0,252,11,248,1,252,0,2,248,0,0,252,15,248,1,252,0,2,253,85,85,252,31,252,2,252,0,2,255,255,255,252,63,252,3,248,0,2,255,255,255,252,191,253,3,248,0,2,255,255,255,253,255,253,3,244,0,2,248,0,0,0,126,126,7,240,0,3,248,0,0,0,28,63,11,240,0,3,248,0,0,0,0,63,79,224,0,3,248,0,0,0,0,47,143,208,0,3,247,255,255,255,0,31,239,192,0,3,247,255,255,255,0,15,255,192,0,3,247,255,255,255,0,11,255,64,0,7,243,240,0,191,0,7,255,0,0,7,243,240,0,191,0,3,254,0,0,11,243,240,0,191,0,3,253,0,0,15,227,240,0,191,0,7,254,0,0,15,211,240,0,191,0,15,255,64,0,31,195,240,0,191,0,63,255,192,0,47,195,240,0,191,0,191,239,240,0,63,195,255,255,255,2,255,15,248,0,127,67,255,255,255,11,253,3,254,0,191,3,255,255,255,63,248,1,255,192,30,3,240,0,191,127,224,0,127,208,0,3,240,0,106,47,64,0,15,64,0,1,80,0,0,12,0,0,1,0,0,0,0,0,0,0,0,0,0,0, + // 0x55ae 單 + 174,85,36,37,77,40,2,252,1,85,85,85,64,85,85,85,64,3,255,255,255,130,255,255,255,192,3,255,255,255,130,255,255,255,192,3,244,0,63,130,252,0,31,192,3,244,0,63,130,252,0,31,192,3,244,0,63,130,252,0,31,192,3,249,85,127,130,253,85,111,192,3,255,255,255,130,255,255,255,192,3,255,255,255,130,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,0,254,0,0,191,0,0,191,0,0,254,0,0,191,0,0,191,170,171,255,170,170,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,0,254,0,0,191,0,0,191,0,0,254,0,0,191,0,0,191,0,0,254,0,0,191,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,0,1,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,169,0,0,0,0, + // 0x5634 嘴 + 52,86,36,38,86,40,3,252,0,0,0,0,252,0,248,0,0,0,0,0,0,252,0,252,0,0,0,0,0,80,252,0,252,0,0,85,85,65,240,252,0,252,11,192,255,255,209,240,254,168,252,127,240,255,255,209,240,255,252,255,255,64,255,255,209,240,255,252,255,248,0,248,11,209,240,252,0,255,64,0,248,11,209,240,252,0,252,0,0,248,11,209,240,252,0,252,0,116,248,11,209,240,253,188,252,0,125,248,11,210,251,255,252,252,0,188,248,11,239,255,255,252,255,255,252,248,11,239,255,255,64,191,255,244,248,11,223,148,255,0,26,170,144,248,11,208,2,255,255,248,0,0,248,11,208,7,255,255,254,0,0,248,11,208,15,245,87,252,0,0,248,11,208,63,192,7,244,0,0,248,11,209,255,213,95,245,85,64,248,11,219,255,255,255,255,255,192,248,11,255,255,255,255,255,255,192,253,91,239,255,128,47,64,31,192,255,255,215,127,128,47,64,31,192,255,255,208,63,128,47,128,31,192,255,255,208,63,255,255,255,255,192,248,0,0,63,255,255,255,255,192,248,0,0,63,64,47,64,31,192,248,0,0,63,64,47,64,31,192,84,0,0,127,149,127,149,111,192,0,0,0,191,255,255,255,255,192,0,0,0,255,255,255,255,255,192,0,0,1,253,0,0,0,31,192,0,0,7,252,0,0,0,31,192,0,0,31,244,0,0,0,31,192,0,0,191,224,0,0,127,255,192,0,0,63,128,0,0,63,255,128,0,0,9,0,0,0,31,169,0, + // 0x5668 器 + 104,86,38,36,104,40,1,252,0,255,255,255,192,63,255,255,244,0,0,255,255,255,192,63,255,255,244,0,0,255,255,255,192,63,255,255,244,0,0,252,0,47,192,63,64,7,244,0,0,252,0,47,192,63,64,7,244,0,0,252,0,47,192,63,64,7,244,0,0,252,0,47,192,63,64,7,244,0,0,252,0,47,192,63,64,7,244,0,0,255,255,255,192,63,255,255,244,0,0,255,255,255,192,63,255,255,244,0,0,255,255,255,253,63,255,255,244,0,0,0,0,0,255,0,0,0,0,0,0,0,0,3,254,0,0,0,0,0,0,0,0,7,252,0,0,0,0,0,63,255,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,255,192,5,85,91,255,85,95,253,85,85,64,0,0,47,252,0,3,255,64,0,0,0,0,255,240,0,1,255,224,0,0,0,11,255,208,0,0,127,253,0,0,1,191,255,0,0,0,15,255,224,0,31,255,248,0,0,0,3,255,255,64,191,255,255,255,192,127,255,255,255,224,47,255,255,255,192,127,255,255,255,192,14,191,255,255,192,127,255,255,235,0,0,190,0,15,192,127,0,15,224,0,0,190,0,15,192,127,0,15,224,0,0,190,0,15,192,127,0,15,224,0,0,190,0,15,192,127,0,15,224,0,0,190,0,15,192,127,0,15,224,0,0,191,255,255,192,127,255,255,224,0,0,191,255,255,192,127,255,255,224,0,0,191,255,255,192,127,255,255,224,0,0,190,0,31,192,127,0,15,224,0,0,106,0,15,192,127,0,10,144,0, + // 0x5674 噴 + 116,86,36,38,86,40,3,252,0,0,0,0,0,47,128,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,47,128,0,0,0,0,0,191,255,255,255,255,224,85,85,80,191,255,255,255,255,224,255,255,240,106,170,191,234,170,144,255,255,240,0,0,47,128,0,0,255,255,240,2,248,47,130,244,0,252,3,240,2,248,47,130,244,0,252,3,246,171,254,170,171,254,168,252,3,247,255,255,255,255,255,253,252,3,247,255,255,255,255,255,253,252,3,240,2,248,0,2,244,0,252,3,240,2,248,0,2,244,0,252,3,240,0,0,0,0,0,0,252,3,240,63,255,255,255,255,128,252,3,240,63,255,255,255,255,128,252,3,240,63,128,0,0,63,128,252,3,240,63,128,0,0,63,128,252,3,240,63,128,0,0,63,128,252,3,240,63,255,255,255,255,128,252,3,240,63,255,255,255,255,128,252,3,240,63,128,0,0,63,128,255,255,240,63,128,0,0,63,128,255,255,240,63,128,0,0,63,128,255,255,240,63,255,255,255,255,128,253,85,80,63,255,255,255,255,128,252,0,0,63,128,0,0,63,128,252,0,0,63,128,0,0,63,128,168,0,0,63,255,255,255,255,128,0,0,0,63,255,255,255,255,128,0,0,0,0,185,0,31,144,0,0,0,0,2,255,64,63,244,0,0,0,0,111,253,0,31,255,0,0,0,27,255,240,0,1,255,224,0,0,127,255,64,0,0,47,253,0,0,31,228,0,0,0,7,248,0,0,10,0,0,0,0,0,128, + // 0x56de 回 + 222,86,34,36,68,40,3,252,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,63,255,255,255,128,31,224,191,0,63,255,255,255,128,31,224,191,0,63,255,255,255,128,31,224,191,0,63,149,85,127,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,128,0,63,128,31,224,191,0,63,255,255,255,128,31,224,191,0,63,255,255,255,128,31,224,191,0,63,255,255,255,128,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,31,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,149,85,85,85,85,85,111,224,191,0,0,0,0,0,0,31,224,191,0,0,0,0,0,0,15,224, + // 0x56e0 因 + 224,86,34,36,68,40,3,252,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,170,170,170,170,170,170,175,240,191,0,0,0,0,0,0,15,240,191,0,0,3,248,0,0,15,240,191,0,0,3,248,0,0,15,240,191,0,0,3,244,0,0,15,240,191,0,0,3,244,0,0,15,240,191,0,0,3,244,0,0,15,240,191,0,0,3,244,0,0,15,240,191,15,255,255,255,255,255,15,240,191,15,255,255,255,255,255,15,240,191,15,255,255,255,255,255,15,240,191,5,85,95,254,85,85,15,240,191,0,0,15,254,0,0,15,240,191,0,0,15,255,0,0,15,240,191,0,0,31,255,0,0,15,240,191,0,0,63,255,128,0,15,240,191,0,0,127,159,208,0,15,240,191,0,0,255,15,240,0,15,240,191,0,1,255,11,248,0,15,240,191,0,7,252,3,254,0,15,240,191,0,31,244,0,255,128,15,240,191,0,255,224,0,191,244,15,240,191,11,255,128,0,47,255,15,240,191,15,254,0,0,7,254,15,240,191,7,224,0,0,0,252,15,240,191,2,64,0,0,0,20,15,240,191,0,0,0,0,0,0,15,240,191,170,170,170,170,170,170,175,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,0,0,0,0,0,0,15,240,191,0,0,0,0,0,0,15,224, + // 0x56fa 固 + 250,86,34,36,68,40,3,252,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,149,85,85,85,85,85,111,224,191,0,0,0,0,0,0,15,224,191,0,0,3,248,0,0,15,224,191,0,0,3,248,0,0,15,224,191,0,0,3,248,0,0,15,224,191,0,0,3,248,0,0,15,224,191,11,255,255,255,255,255,15,224,191,11,255,255,255,255,255,15,224,191,11,255,255,255,255,255,15,224,191,0,0,3,248,0,0,15,224,191,0,0,3,248,0,0,15,224,191,0,0,3,248,0,0,15,224,191,0,0,3,248,0,0,15,224,191,0,0,3,248,0,0,15,224,191,0,127,255,255,255,224,15,224,191,0,127,255,255,255,224,15,224,191,0,127,255,255,255,224,15,224,191,0,127,0,0,15,224,15,224,191,0,127,0,0,15,224,15,224,191,0,127,0,0,15,224,15,224,191,0,127,0,0,15,224,15,224,191,0,127,255,255,255,224,15,224,191,0,127,255,255,255,224,15,224,191,0,127,255,255,255,224,15,224,191,0,0,0,0,0,0,15,224,191,0,0,0,0,0,0,15,224,191,0,0,0,0,0,0,15,224,191,149,85,85,85,85,85,111,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,255,255,255,255,255,255,255,224,191,0,0,0,0,0,0,15,224,127,0,0,0,0,0,0,15,224, + // 0x5716 圖 + 22,87,34,36,68,40,3,252,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,0,0,0,0,0,0,15,240,191,0,0,0,0,0,0,15,240,191,0,63,255,255,255,192,15,240,191,0,63,255,255,255,192,15,240,191,0,63,0,0,31,192,15,240,191,0,63,0,0,31,192,15,240,191,0,63,255,255,255,192,15,240,191,0,63,255,255,255,192,15,240,191,0,0,2,244,0,0,15,240,191,0,0,3,248,0,0,15,240,191,47,255,255,255,255,255,143,240,191,47,255,255,255,255,255,143,240,191,0,0,0,0,0,0,15,240,191,0,255,255,255,255,240,15,240,191,0,255,255,255,255,240,15,240,191,0,248,0,0,3,240,15,240,191,0,248,0,0,3,240,15,240,191,0,248,63,255,195,240,15,240,191,0,248,63,255,195,240,15,240,191,0,248,60,3,195,240,15,240,191,0,248,60,3,195,240,15,240,191,0,248,63,255,195,240,15,240,191,0,248,63,255,195,240,15,240,191,0,248,0,0,3,240,15,240,191,0,255,255,255,255,240,15,240,191,0,255,255,255,255,240,15,240,191,0,0,0,0,0,0,15,240,191,0,0,0,0,0,0,15,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,255,255,255,255,255,255,255,240,191,0,0,0,0,0,0,15,240,106,0,0,0,0,0,0,10,160, + // 0x5728 在 + 40,87,37,38,124,40,1,252,0,0,0,10,64,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,0,47,208,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,127,128,0,0,0,0,0,31,255,255,255,255,255,255,255,255,64,31,255,255,255,255,255,255,255,255,64,31,255,255,255,255,255,255,255,255,64,26,170,171,254,170,170,170,170,170,64,0,0,15,244,0,0,0,0,0,0,0,0,31,240,0,1,80,0,0,0,0,0,63,208,0,7,244,0,0,0,0,0,127,192,0,7,244,0,0,0,0,0,255,64,0,7,244,0,0,0,0,3,254,0,0,7,244,0,0,0,0,11,252,0,0,7,244,0,0,0,0,31,244,0,0,7,244,0,0,0,0,127,240,0,0,7,244,0,0,0,1,255,240,15,255,255,255,255,252,0,7,255,240,15,255,255,255,255,252,0,47,255,240,15,255,255,255,255,252,0,127,251,240,5,85,91,249,85,84,0,63,203,240,0,0,7,244,0,0,0,31,11,240,0,0,7,244,0,0,0,8,11,240,0,0,7,244,0,0,0,0,11,240,0,0,7,244,0,0,0,0,11,240,0,0,7,244,0,0,0,0,11,240,0,0,7,244,0,0,0,0,11,240,0,0,7,244,0,0,0,0,11,240,0,0,7,244,0,0,0,0,11,240,0,0,7,244,0,0,0,0,11,240,0,0,7,244,0,0,0,0,11,240,21,85,91,249,85,85,0,0,11,240,127,255,255,255,255,255,64,0,11,240,127,255,255,255,255,255,64,0,11,240,127,255,255,255,255,255,64,0,11,240,0,0,0,0,0,0,0, + // 0x578b 型 + 139,87,36,37,77,40,2,253,0,0,0,0,0,0,0,5,80,5,85,85,85,85,0,0,11,240,15,255,255,255,255,2,160,11,240,15,255,255,255,255,3,244,11,240,15,255,255,255,255,3,244,11,240,0,31,192,63,128,3,244,11,240,0,31,192,63,128,3,244,11,240,0,31,192,63,128,3,244,11,240,0,31,192,63,128,3,244,11,240,0,31,192,63,128,3,244,11,240,127,255,255,255,255,195,244,11,240,127,255,255,255,255,195,244,11,240,127,255,255,255,255,195,244,11,240,21,127,149,127,213,67,244,11,240,0,63,64,63,128,3,244,11,240,0,191,0,63,128,3,244,11,240,0,255,0,63,128,0,0,11,240,2,253,0,63,128,0,0,11,240,11,252,0,63,128,0,0,15,240,47,244,0,63,128,0,63,255,224,191,224,0,63,128,0,31,255,208,47,64,0,63,234,0,15,255,64,9,0,0,0,255,0,5,64,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,85,85,85,255,85,85,85,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,85,85,85,85,85,85, + // 0x57f7 執 + 247,87,38,39,134,40,1,251,0,0,253,0,0,3,244,0,0,0,0,0,253,0,0,3,244,0,0,0,0,0,253,0,0,3,244,0,0,0,0,0,253,0,0,3,244,0,0,0,15,255,255,255,192,3,244,0,0,0,15,255,255,255,192,3,244,0,0,0,15,255,255,255,192,3,244,0,0,0,0,0,254,0,0,3,244,0,0,0,0,0,253,0,15,255,255,255,240,0,0,0,253,0,15,255,255,255,240,0,0,0,253,0,15,255,255,255,240,0,127,255,255,255,255,255,249,95,240,0,127,255,255,255,248,3,244,11,240,0,127,255,255,255,248,3,244,11,240,0,1,244,0,63,64,3,244,11,240,0,1,252,0,63,0,3,244,11,240,0,0,252,0,127,0,3,244,11,240,0,0,189,0,253,3,67,244,11,240,0,0,126,0,252,15,231,240,11,240,0,0,126,1,248,47,255,240,11,240,0,47,255,255,255,243,255,240,11,240,0,47,255,255,255,240,191,240,11,240,0,47,255,255,255,240,31,253,11,240,0,0,0,253,0,0,15,255,75,240,0,0,0,253,0,0,31,255,219,240,0,0,0,253,0,0,63,255,255,240,0,0,0,254,0,0,63,143,251,240,0,15,255,255,255,208,191,67,199,240,0,15,255,255,255,208,255,0,71,240,128,15,255,255,255,210,254,0,3,240,224,0,0,253,0,3,252,0,3,240,240,0,0,253,0,15,244,0,3,245,240,0,0,253,0,47,240,0,3,249,240,0,0,253,0,191,192,0,2,254,224,0,0,253,2,255,64,0,1,255,224,0,0,253,11,254,0,0,0,255,208,0,0,253,1,244,0,0,0,127,192,0,0,169,0,80,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0, + // 0x584a 塊 + 74,88,38,38,124,40,1,252,0,10,128,0,0,7,232,0,0,0,0,31,192,0,0,15,244,0,0,0,0,31,192,0,0,15,240,0,0,0,0,31,192,0,0,47,208,0,0,0,0,31,192,15,255,255,255,255,254,0,0,31,192,15,255,255,255,255,254,0,0,31,192,15,255,255,255,255,254,0,0,31,192,15,224,3,244,0,254,0,0,31,192,15,208,3,244,0,254,0,63,255,255,207,208,3,244,0,254,0,63,255,255,207,208,3,244,0,254,0,63,255,255,207,255,255,255,255,254,0,26,175,234,143,255,255,255,255,254,0,0,31,192,15,255,255,255,255,254,0,0,31,192,15,208,3,244,0,254,0,0,31,192,15,208,3,244,0,254,0,0,31,192,15,208,3,244,0,254,0,0,31,192,15,208,3,244,0,254,0,0,31,192,15,255,255,255,255,254,0,0,31,192,15,255,255,255,255,254,0,0,31,192,15,255,255,255,255,254,0,0,31,192,0,31,209,252,4,0,0,0,31,199,208,31,193,252,31,64,0,0,31,255,224,47,193,252,47,0,0,0,47,255,240,47,193,252,63,45,0,6,255,255,128,63,193,252,61,62,0,127,255,248,0,63,129,252,124,31,0,127,255,64,0,63,129,252,190,191,128,63,228,0,0,191,65,254,255,255,192,46,0,0,0,255,1,253,255,235,192,0,0,0,2,254,1,252,80,2,0,0,0,0,7,252,1,252,0,10,0,0,0,0,47,248,1,252,0,11,208,0,0,1,255,240,1,253,0,15,208,0,0,31,255,192,0,255,255,255,192,0,0,47,254,0,0,255,255,255,192,0,0,15,244,0,0,63,255,255,0,0,0,3,64,0,0,0,0,0,0, + // 0x586b 填 + 107,88,38,38,124,40,1,252,0,0,0,0,0,3,248,0,0,0,0,31,192,0,0,3,248,0,0,0,0,31,192,0,0,3,248,0,0,0,0,31,192,63,255,255,255,255,255,192,0,31,192,63,255,255,255,255,255,192,0,31,192,63,255,255,255,255,255,192,0,31,192,0,0,3,248,0,0,0,0,31,192,0,0,3,248,0,0,0,0,31,192,0,0,3,248,0,0,0,0,31,192,0,255,255,255,255,240,0,63,255,255,192,255,255,255,255,240,0,63,255,255,192,254,85,85,95,240,0,63,255,255,192,253,0,0,11,240,0,26,175,234,128,253,85,85,91,240,0,0,31,192,0,255,255,255,255,240,0,0,31,192,0,255,255,255,255,240,0,0,31,192,0,253,0,0,11,240,0,0,31,192,0,253,0,0,11,240,0,0,31,192,0,255,255,255,255,240,0,0,31,192,0,255,255,255,255,240,0,0,31,192,0,254,85,85,95,240,0,0,31,192,0,253,0,0,11,240,0,0,31,192,0,254,85,85,95,240,0,0,31,199,208,255,255,255,255,240,0,0,31,255,224,255,255,255,255,240,0,0,47,255,240,0,0,0,0,0,0,2,255,255,128,0,0,0,0,0,0,127,255,249,255,255,255,255,255,255,208,127,255,64,255,255,255,255,255,255,208,63,244,0,255,255,255,255,255,255,208,46,64,0,0,1,0,0,96,0,0,0,0,0,0,15,228,1,252,0,0,0,0,0,0,127,240,3,255,128,0,0,0,0,7,255,128,0,191,244,0,0,0,0,191,253,0,0,15,254,0,0,0,3,255,224,0,0,2,255,192,0,0,0,255,64,0,0,0,127,128,0,0,0,36,0,0,0,0,8,0, + // 0x588a 墊 + 138,88,38,37,114,40,1,253,0,0,169,0,0,0,168,0,0,0,0,0,254,0,0,1,252,0,0,0,0,0,254,0,0,1,252,0,0,0,11,255,255,255,208,1,252,0,0,0,11,255,255,255,208,1,252,0,0,0,6,170,255,170,130,255,255,255,208,0,0,0,254,0,2,255,255,255,208,0,0,0,255,85,86,255,255,255,208,0,127,255,255,255,248,1,252,15,208,0,127,255,255,255,248,2,248,15,208,0,42,254,170,191,164,2,248,15,208,0,0,252,0,126,1,211,248,15,208,0,0,189,0,252,3,255,244,15,208,0,42,191,170,254,171,255,240,15,208,0,63,255,255,255,248,127,244,15,208,0,63,255,255,255,248,15,254,11,224,0,0,0,254,0,0,15,255,203,224,0,0,0,254,0,0,47,255,235,225,64,6,170,255,170,144,127,75,199,225,208,15,255,255,255,224,255,2,7,241,224,15,255,255,255,227,253,0,3,242,224,0,0,254,0,15,248,0,3,251,224,0,0,254,0,63,240,0,2,255,208,0,0,254,0,15,128,0,0,255,192,0,0,254,0,63,128,0,0,63,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,63,255,255,255,255,255,255,192,0,0,63,255,255,255,255,255,255,192,0,0,63,255,255,255,255,255,255,192,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,192,0,0,0,0,47,255,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,255,192,47,255,255,255,255,255,255,255,255,192, + // 0x5916 外 + 22,89,38,38,124,40,1,252,0,0,25,0,0,0,26,144,0,0,0,0,63,192,0,0,31,208,0,0,0,0,63,192,0,0,31,208,0,0,0,0,127,64,0,0,31,208,0,0,0,0,191,0,0,0,31,208,0,0,0,0,255,0,0,0,31,208,0,0,0,1,255,170,169,0,31,208,0,0,0,3,255,255,255,192,31,208,0,0,0,7,255,255,255,192,31,208,0,0,0,11,255,255,255,192,31,208,0,0,0,15,240,0,63,228,31,208,0,0,0,63,208,0,127,252,31,208,0,0,0,127,192,0,127,254,31,208,0,0,0,255,64,0,191,191,95,208,0,0,2,255,0,0,255,63,239,208,0,0,7,255,0,0,253,31,255,208,0,0,15,255,208,2,252,11,255,208,0,0,63,255,252,3,252,3,255,208,0,0,191,223,255,71,248,0,255,208,0,0,47,66,255,235,240,0,127,240,0,0,6,0,63,255,240,0,31,252,0,0,0,0,11,255,208,0,31,255,64,0,0,0,2,255,192,0,31,255,224,0,0,0,0,255,64,0,31,255,252,0,0,0,1,255,0,0,31,239,255,128,0,0,3,253,0,0,31,211,255,240,0,0,11,252,0,0,31,208,191,192,0,0,31,244,0,0,31,208,15,64,0,0,63,224,0,0,31,208,1,0,0,0,255,192,0,0,31,208,0,0,0,3,255,0,0,0,31,208,0,0,0,31,253,0,0,0,31,208,0,0,0,127,244,0,0,0,31,208,0,0,3,255,208,0,0,0,31,208,0,0,31,255,64,0,0,0,31,208,0,0,15,252,0,0,0,0,31,208,0,0,3,224,0,0,0,0,31,208,0,0,0,64,0,0,0,0,26,144,0,0, + // 0x591a 多 + 26,89,34,38,86,40,3,252,0,0,0,6,64,0,0,0,0,0,0,0,31,248,0,0,0,0,0,0,0,127,240,0,0,0,0,0,0,1,255,192,0,0,0,0,0,0,11,255,255,255,254,0,0,0,0,63,255,255,255,255,128,0,0,2,255,255,255,255,255,0,0,0,47,255,0,0,3,252,0,0,2,255,252,0,0,15,248,0,0,127,255,255,128,0,63,224,0,0,127,249,191,244,1,255,128,0,0,31,128,31,255,11,254,0,0,0,4,0,2,255,255,248,0,0,0,0,0,0,63,255,208,0,0,0,0,0,0,47,255,121,0,0,0,0,0,7,255,244,255,192,0,0,0,0,191,255,131,255,0,0,0,0,111,255,248,31,253,0,0,0,111,255,255,128,191,255,255,255,208,255,255,228,7,255,255,255,255,240,127,249,0,63,255,255,255,255,224,62,64,2,255,224,0,0,127,192,0,0,111,255,64,0,0,255,128,0,7,255,255,128,0,2,255,0,0,191,255,255,244,0,11,252,0,0,63,248,31,254,0,47,244,0,0,31,128,3,255,192,191,224,0,0,4,0,0,127,247,255,128,0,0,0,0,0,15,255,253,0,0,0,0,0,0,3,255,244,0,0,0,0,0,0,31,255,192,0,0,0,0,0,2,255,253,0,0,0,0,0,1,191,255,224,0,0,0,0,1,191,255,254,0,0,0,0,3,255,255,255,208,0,0,0,0,2,255,255,248,0,0,0,0,0,0,255,249,0,0,0,0,0,0,0,165,0,0,0,0,0,0,0, + // 0x5920 夠 + 32,89,36,38,86,40,2,252,0,2,144,0,0,25,0,0,0,0,7,240,0,0,47,192,0,0,0,15,224,0,0,63,128,0,0,0,47,192,0,0,127,0,0,0,0,127,255,254,0,191,0,0,0,0,255,255,255,64,254,0,0,0,3,255,255,255,2,255,255,255,253,15,244,0,254,3,255,255,255,253,63,208,1,252,11,255,255,255,252,255,128,3,248,15,224,0,1,252,190,56,11,240,47,192,0,0,252,56,255,31,224,63,128,0,0,252,0,127,255,192,255,64,0,0,252,0,31,255,2,255,0,0,0,252,0,11,253,3,254,255,255,208,252,0,47,244,0,181,255,255,208,252,1,255,254,64,17,255,255,208,252,47,254,255,0,1,248,11,209,252,127,245,253,0,1,248,11,209,252,47,67,255,255,209,248,11,209,252,4,15,255,255,241,248,11,209,252,0,63,255,255,225,248,11,209,252,1,255,0,31,193,248,11,209,252,11,252,0,63,193,248,11,209,252,127,240,0,127,65,248,11,209,252,255,199,0,255,1,255,255,210,252,62,31,210,253,1,255,255,210,252,16,31,255,252,1,255,255,210,248,0,3,255,240,1,248,0,2,248,0,0,255,208,1,248,0,3,248,0,1,255,128,1,248,0,3,244,0,7,254,0,0,0,0,3,244,0,63,248,0,0,0,0,7,244,2,255,224,0,0,0,0,15,240,111,255,64,0,0,0,63,255,240,255,248,0,0,0,0,47,255,208,127,128,0,0,0,0,31,255,64,56,0,0,0,0,0,5,80,0, + // 0x5927 大 + 39,89,36,38,86,40,2,252,0,0,0,0,170,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,1,253,0,0,0,0,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,253,0,0,0,7,255,192,0,0,0,0,0,0,11,255,224,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,31,255,244,0,0,0,0,0,0,47,231,252,0,0,0,0,0,0,63,211,253,0,0,0,0,0,0,127,193,255,0,0,0,0,0,0,255,128,255,128,0,0,0,0,2,255,0,191,192,0,0,0,0,3,254,0,63,240,0,0,0,0,15,252,0,31,244,0,0,0,0,47,244,0,11,253,0,0,0,0,127,224,0,3,255,0,0,0,1,255,192,0,1,255,192,0,0,11,255,0,0,0,191,244,0,0,47,253,0,0,0,63,253,0,1,255,244,0,0,0,15,255,192,31,255,208,0,0,0,3,255,248,191,255,0,0,0,0,0,191,255,127,248,0,0,0,0,0,31,252,31,128,0,0,0,0,0,2,244,5,0,0,0,0,0,0,0,32, + // 0x5929 天 + 41,89,37,35,94,40,2,252,127,255,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,255,253,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,31,255,255,255,255,255,255,255,244,0,31,255,255,255,255,255,255,255,244,0,31,255,255,255,255,255,255,255,244,0,15,255,255,255,255,255,255,255,244,0,0,0,0,3,255,192,0,0,0,0,0,0,0,3,255,208,0,0,0,0,0,0,0,11,255,240,0,0,0,0,0,0,0,15,255,244,0,0,0,0,0,0,0,31,247,252,0,0,0,0,0,0,0,63,227,253,0,0,0,0,0,0,0,191,193,255,0,0,0,0,0,0,2,255,128,255,192,0,0,0,0,0,11,255,0,63,240,0,0,0,0,0,47,252,0,31,252,0,0,0,0,0,255,244,0,11,255,64,0,0,0,7,255,208,0,2,255,224,0,0,0,127,255,0,0,0,255,254,0,0,11,255,248,0,0,0,47,255,228,0,255,255,208,0,0,0,7,255,255,64,191,254,0,0,0,0,0,191,254,0,63,224,0,0,0,0,0,11,252,0,25,0,0,0,0,0,0,0,100,0, + // 0x5931 失 + 49,89,37,38,124,40,2,252,0,0,0,0,254,0,0,0,0,0,0,3,228,0,254,0,0,0,0,0,0,11,248,0,254,0,0,0,0,0,0,15,244,0,254,0,0,0,0,0,0,15,240,0,254,0,0,0,0,0,0,47,224,0,254,0,0,0,0,0,0,63,208,0,254,0,0,0,0,0,0,127,255,255,255,255,255,255,64,0,0,255,255,255,255,255,255,255,64,0,1,255,255,255,255,255,255,255,64,0,3,255,255,255,255,255,255,255,64,0,7,252,0,0,254,0,0,0,0,0,15,248,0,0,254,0,0,0,0,0,63,240,0,0,254,0,0,0,0,0,127,208,0,0,254,0,0,0,0,0,31,128,0,1,254,0,0,0,0,0,2,0,0,1,254,0,0,0,0,0,0,0,0,1,254,0,0,0,0,0,170,170,170,171,255,170,170,170,170,0,255,255,255,255,255,255,255,255,254,0,255,255,255,255,255,255,255,255,254,0,255,255,255,255,255,255,255,255,254,0,0,0,0,11,255,208,0,0,0,0,0,0,0,15,255,240,0,0,0,0,0,0,0,47,251,248,0,0,0,0,0,0,0,63,211,252,0,0,0,0,0,0,0,255,193,255,0,0,0,0,0,0,2,255,64,255,192,0,0,0,0,0,11,254,0,127,240,0,0,0,0,0,63,252,0,47,252,0,0,0,0,1,255,240,0,11,255,64,0,0,0,11,255,192,0,2,255,224,0,0,0,191,255,0,0,0,255,254,0,0,27,255,248,0,0,0,31,255,248,0,255,255,208,0,0,0,3,255,255,64,191,253,0,0,0,0,0,127,255,0,63,208,0,0,0,0,0,7,252,0,8,0,0,0,0,0,0,0,36,0, + // 0x59cb 始 + 203,89,37,38,124,40,2,252,0,26,64,0,0,10,64,0,0,0,0,47,192,0,0,15,240,0,0,0,0,63,128,0,0,31,240,0,0,0,0,63,128,0,0,47,224,0,0,0,0,63,64,0,0,63,192,0,0,0,0,127,0,0,0,63,192,0,0,0,0,191,0,0,0,127,128,0,0,0,0,254,0,0,0,191,0,125,0,0,85,254,85,144,0,255,0,255,0,0,255,255,255,252,1,253,0,127,192,0,255,255,255,252,2,252,0,47,208,0,255,255,255,248,3,248,0,15,240,0,3,248,3,248,7,244,0,7,248,0,3,244,3,244,11,245,170,255,252,0,7,240,3,247,255,255,255,255,254,0,11,240,7,243,255,255,255,255,255,0,15,224,7,243,255,255,255,234,191,128,15,208,11,241,165,64,0,0,63,128,31,192,15,224,0,0,0,0,44,0,47,192,15,208,0,0,0,0,0,0,63,128,31,192,0,0,0,0,0,0,63,128,47,192,31,255,255,255,248,0,127,240,63,192,31,255,255,255,248,0,191,253,127,64,31,255,255,255,248,0,255,255,255,0,31,213,85,87,248,0,45,191,255,0,31,192,0,3,248,0,4,31,254,0,31,192,0,3,248,0,0,7,255,128,31,192,0,3,248,0,0,11,255,224,31,192,0,3,248,0,0,31,255,248,31,192,0,3,248,0,0,63,219,253,31,192,0,3,248,0,0,255,194,253,31,192,0,3,248,0,3,255,0,184,31,213,85,87,248,0,15,253,0,32,31,255,255,255,248,0,127,244,0,0,31,255,255,255,248,0,127,208,0,0,31,255,255,255,248,0,47,64,0,0,31,192,0,3,248,0,8,0,0,0,31,192,0,2,164,0, + // 0x5a92 媒 + 146,90,38,38,124,40,1,252,0,10,64,0,15,208,0,15,208,0,0,31,192,0,15,208,0,15,208,0,0,47,192,0,15,208,0,15,208,0,0,63,192,0,15,208,0,15,208,0,0,63,128,0,15,208,0,31,208,0,0,63,64,15,255,255,255,255,255,192,0,127,0,15,255,255,255,255,255,192,0,127,0,15,255,255,255,255,255,192,21,255,85,80,15,208,0,15,208,0,127,255,255,244,15,208,0,15,208,0,127,255,255,244,15,208,0,15,208,0,127,255,255,244,15,255,255,255,208,0,1,252,3,240,15,255,255,255,208,0,2,252,3,240,15,255,255,255,208,0,2,248,7,240,15,208,0,15,208,0,3,244,7,240,15,208,0,15,208,0,3,244,11,240,15,208,0,31,208,0,7,240,15,224,15,255,255,255,208,0,11,240,15,208,15,255,255,255,208,0,11,224,15,208,15,255,255,255,208,0,15,208,31,192,0,0,253,0,0,0,15,208,47,192,0,0,253,0,0,0,31,244,63,128,0,0,253,0,0,0,47,254,127,79,255,255,255,255,255,192,63,255,255,15,255,255,255,255,255,192,11,127,255,15,255,255,255,255,255,192,1,15,253,0,0,47,255,224,0,0,0,3,255,0,0,127,255,244,0,0,0,7,255,192,0,255,255,252,0,0,0,15,255,240,3,253,253,255,64,0,0,47,239,248,31,244,253,63,208,0,0,127,195,240,191,224,253,31,248,0,1,255,64,211,255,128,253,7,254,0,7,254,0,111,254,0,253,2,255,208,47,252,0,63,244,0,253,0,191,192,31,240,0,15,208,0,253,0,31,0,11,128,0,6,0,0,253,0,1,0,1,0,0,0,0,0,253,0,0,0, + // 0x5b50 子 + 80,91,36,35,59,40,2,252,0,255,255,255,255,255,255,252,0,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,64,0,170,170,170,170,170,191,252,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,3,255,192,0,0,0,0,0,0,31,254,0,0,0,0,0,0,0,191,244,0,0,0,0,0,0,87,255,192,0,0,0,0,0,0,255,254,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,170,170,170,170,255,170,170,170,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,63,255,254,0,0,0,0,0,0,47,255,248,0,0,0,0,0,0,31,234,64,0,0,0,0, + // 0x5b58 存 + 88,91,37,38,124,40,1,252,0,0,0,10,64,0,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,0,47,224,0,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,26,170,170,255,234,170,170,170,170,64,31,255,255,255,255,255,255,255,255,64,31,255,255,255,255,255,255,255,255,64,31,255,255,255,255,255,255,255,255,64,0,0,7,252,0,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,0,191,192,255,255,255,255,208,0,0,0,255,64,255,255,255,255,248,0,0,3,254,0,255,255,255,255,240,0,0,11,252,0,85,85,85,255,192,0,0,31,244,0,0,0,2,255,0,0,0,127,240,0,0,0,11,252,0,0,0,255,240,0,0,0,63,240,0,0,7,255,240,0,0,2,255,128,0,0,31,255,240,0,0,2,254,0,0,0,127,255,240,0,0,2,252,0,0,0,63,219,240,42,170,171,254,170,170,128,47,75,240,127,255,255,255,255,255,192,12,11,240,127,255,255,255,255,255,192,0,11,240,127,255,255,255,255,255,192,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,0,2,252,0,0,0,0,11,240,0,47,255,252,0,0,0,0,11,240,0,31,255,252,0,0,0,0,11,240,0,15,255,240,0,0,0,0,5,80,0,5,85,0,0,0,0, + // 0x5b89 安 + 137,91,36,38,86,40,2,252,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,47,229,85,85,85,85,85,91,248,47,192,0,0,0,0,0,3,248,47,192,0,10,80,0,0,3,248,47,192,0,31,240,0,0,3,248,47,192,0,47,224,0,0,3,248,47,192,0,63,192,0,0,3,248,0,0,0,191,128,0,0,0,0,0,0,0,255,0,0,0,0,0,106,170,171,255,170,170,170,170,169,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,47,224,0,0,191,64,0,0,0,63,192,0,0,255,0,0,0,0,191,128,0,1,255,0,0,0,0,255,0,0,3,253,0,0,0,3,254,0,0,7,252,0,0,0,7,252,0,0,15,244,0,0,0,15,255,144,0,47,240,0,0,0,31,255,254,64,127,208,0,0,0,63,255,255,249,255,128,0,0,0,47,198,255,255,255,0,0,0,0,0,0,27,255,254,0,0,0,0,0,0,2,255,255,224,0,0,0,0,0,47,255,255,254,64,0,0,0,7,255,253,47,255,244,0,0,22,255,255,224,2,255,254,0,31,255,255,254,0,0,47,255,208,15,255,255,144,0,0,2,255,192,3,255,228,0,0,0,0,127,0,2,148,0,0,0,0,0,9,0, + // 0x5b8c 完 + 140,91,37,38,124,40,1,252,0,0,0,0,42,128,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,6,170,170,170,191,234,170,170,169,0,15,255,255,255,255,255,255,255,254,0,15,255,255,255,255,255,255,255,254,0,15,255,255,255,255,255,255,255,254,0,15,240,0,0,0,0,0,0,254,0,15,240,0,0,0,0,0,0,254,0,15,240,0,0,0,0,0,0,254,0,15,240,0,0,0,0,0,0,254,0,15,240,191,255,255,255,255,208,254,0,6,160,191,255,255,255,255,208,169,0,0,0,191,255,255,255,255,208,0,0,0,0,21,85,85,85,85,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,170,170,170,170,170,170,170,170,64,47,255,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,255,128,0,0,3,252,0,31,208,0,0,0,0,0,3,252,0,31,208,0,0,0,0,0,3,252,0,31,208,0,0,0,0,0,7,248,0,31,208,0,0,0,0,0,15,244,0,31,208,0,0,0,0,0,15,240,0,31,208,0,0,0,0,0,63,224,0,31,208,0,30,64,0,0,191,192,0,31,208,0,31,192,0,2,255,128,0,31,208,0,31,192,0,31,255,0,0,31,208,0,47,192,1,255,252,0,0,31,245,85,191,128,127,255,224,0,0,15,255,255,255,64,63,255,64,0,0,11,255,255,255,0,15,244,0,0,0,1,255,255,248,0,5,0,0,0,0,0,0,0,0,0, + // 0x5b9a 定 + 154,91,37,38,124,40,1,252,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,6,170,170,170,191,234,170,170,169,0,11,255,255,255,255,255,255,255,254,0,11,255,255,255,255,255,255,255,254,0,11,255,255,255,255,255,255,255,254,0,11,240,0,0,0,0,0,0,254,0,11,240,0,0,0,0,0,0,254,0,11,240,0,0,0,0,0,0,254,0,11,240,0,0,0,0,0,0,254,0,11,240,170,170,170,170,170,160,254,0,11,240,255,255,255,255,255,244,254,0,0,0,255,255,255,255,255,244,0,0,0,0,255,255,255,255,255,244,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,1,253,0,63,192,0,0,0,0,0,2,253,0,63,192,0,0,0,0,0,3,252,0,63,192,0,0,0,0,0,3,252,0,63,255,255,255,64,0,0,3,248,0,63,255,255,255,64,0,0,7,248,0,63,255,255,255,64,0,0,11,252,0,63,213,85,85,0,0,0,15,253,0,63,192,0,0,0,0,0,31,255,0,63,192,0,0,0,0,0,47,255,128,63,192,0,0,0,0,0,127,255,224,63,192,0,0,0,0,0,255,143,248,63,192,0,0,0,0,1,255,7,255,127,192,0,0,0,0,3,254,1,255,255,192,0,0,0,0,15,252,0,127,255,255,234,170,170,128,63,244,0,15,255,255,255,255,255,128,127,208,0,0,191,255,255,255,255,0,15,128,0,0,5,175,255,255,255,0,2,0,0,0,0,0,0,0,0,0, + // 0x5ba2 客 + 162,91,36,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,21,85,85,85,255,85,85,85,84,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,192,0,36,0,0,0,3,252,63,192,0,255,128,0,0,3,252,63,192,2,255,0,0,0,3,252,63,192,11,255,255,255,253,3,252,63,192,47,255,255,255,255,131,252,0,0,255,255,255,255,255,64,0,0,11,255,192,0,3,254,0,0,0,127,255,240,0,15,248,0,0,7,255,239,252,0,127,240,0,0,11,255,67,255,66,255,128,0,0,3,248,0,255,255,254,0,0,0,0,128,0,47,255,244,0,0,0,0,0,0,15,255,244,0,0,0,0,0,1,191,255,255,144,0,0,0,0,47,255,255,255,254,64,0,0,6,255,255,65,255,255,255,148,6,255,255,244,0,27,255,255,255,255,255,254,0,0,0,127,255,253,191,255,255,255,255,255,255,255,252,63,231,255,255,255,255,255,208,96,20,3,255,255,255,255,255,208,0,0,3,248,0,0,0,47,208,0,0,3,248,0,0,0,47,208,0,0,3,248,0,0,0,47,208,0,0,3,248,0,0,0,47,208,0,0,3,248,0,0,0,47,208,0,0,3,255,255,255,255,255,208,0,0,3,255,255,255,255,255,208,0,0,3,255,255,255,255,255,208,0,0,3,248,0,0,0,47,208,0,0,2,164,0,0,0,21,64,0, + // 0x5bb9 容 + 185,91,37,38,124,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,5,85,85,85,255,85,85,85,80,0,47,255,255,255,255,255,255,255,248,0,47,255,255,255,255,255,255,255,248,0,47,255,255,255,255,255,255,255,248,0,47,192,0,0,0,0,0,3,248,0,47,192,0,0,0,0,0,3,248,0,47,192,11,144,0,7,128,3,248,0,47,192,31,244,0,47,244,3,248,0,47,128,127,208,0,31,254,3,248,0,0,2,255,128,0,2,255,208,0,0,0,15,254,0,170,0,127,248,0,0,0,127,248,3,255,128,15,254,0,0,7,255,208,11,255,224,2,255,192,0,11,255,0,31,255,248,0,127,208,0,2,248,0,191,231,254,0,31,64,0,0,208,2,255,130,255,192,5,0,0,0,0,11,255,0,191,244,0,0,0,0,0,63,248,0,31,253,0,0,0,0,1,255,224,0,7,255,208,0,0,0,11,255,64,0,0,255,248,0,0,0,127,253,0,0,0,47,255,64,0,7,255,255,255,255,255,255,255,248,0,127,255,255,255,255,255,255,255,255,64,191,251,255,255,255,255,255,219,254,0,63,195,249,85,85,85,111,193,252,0,29,3,248,0,0,0,47,192,20,0,0,3,248,0,0,0,47,192,0,0,0,3,248,0,0,0,47,192,0,0,0,3,248,0,0,0,47,192,0,0,0,3,248,0,0,0,47,192,0,0,0,3,255,255,255,255,255,192,0,0,0,3,255,255,255,255,255,192,0,0,0,3,255,255,255,255,255,192,0,0,0,3,249,85,85,85,111,192,0,0,0,2,164,0,0,0,26,128,0,0, + // 0x5c0d 對 + 13,92,37,39,134,40,2,251,0,10,65,160,0,0,0,42,0,0,4,31,131,240,36,0,0,63,64,0,188,31,131,240,63,64,0,63,64,0,191,31,131,240,191,0,0,63,64,0,63,95,131,240,254,0,0,63,64,0,47,223,131,241,252,0,0,63,64,0,15,223,131,247,244,0,0,63,64,0,15,223,131,247,240,0,0,63,64,0,5,31,131,244,144,0,0,63,64,0,255,255,255,255,255,0,0,63,64,0,255,255,255,255,255,0,0,127,64,0,255,255,255,255,255,255,255,255,255,64,1,176,0,31,128,255,255,255,255,64,3,248,0,47,192,255,255,255,255,64,1,252,0,63,128,85,85,191,149,0,0,253,0,127,0,0,0,63,64,0,0,190,0,190,0,0,0,63,64,0,0,125,0,189,0,1,0,63,64,0,63,255,255,255,248,63,128,63,64,0,63,255,255,255,248,47,192,63,64,0,63,255,255,255,248,15,208,63,64,0,0,0,190,0,0,11,240,63,64,0,0,0,190,0,0,7,244,63,64,0,0,0,190,0,0,3,248,63,64,0,15,255,255,255,240,2,252,63,64,0,15,255,255,255,240,1,253,63,64,0,15,255,255,255,240,0,224,63,64,0,0,0,190,0,0,0,0,63,64,0,0,0,190,0,0,0,0,63,64,0,0,0,190,0,0,0,0,63,64,0,0,0,190,1,174,0,0,63,64,0,0,1,255,255,255,0,0,63,64,0,107,255,255,255,255,0,0,63,64,0,255,255,255,255,254,0,0,127,64,0,255,255,255,233,0,1,85,255,64,0,191,233,64,0,0,3,255,255,0,0,0,0,0,0,0,1,255,254,0,0,0,0,0,0,0,0,255,228,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x5c0f 小 + 15,92,38,37,114,40,1,252,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,6,80,0,63,192,0,120,0,0,0,11,252,0,63,192,3,252,0,0,0,11,248,0,63,192,2,254,0,0,0,15,244,0,63,192,0,255,0,0,0,15,240,0,63,192,0,191,192,0,0,31,240,0,63,192,0,63,192,0,0,63,224,0,63,192,0,47,224,0,0,63,192,0,63,192,0,31,240,0,0,127,192,0,63,192,0,15,248,0,0,191,128,0,63,192,0,7,252,0,0,255,64,0,63,192,0,3,253,0,2,255,0,0,63,192,0,2,255,0,3,253,0,0,63,192,0,1,255,0,7,252,0,0,63,192,0,0,255,128,15,248,0,0,63,192,0,0,191,192,47,240,0,0,63,192,0,0,63,192,127,208,0,0,63,192,0,0,63,224,47,192,0,0,63,192,0,0,47,240,3,64,0,0,63,192,0,0,31,144,0,0,0,0,63,192,0,0,8,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,31,255,255,192,0,0,0,0,0,0,15,255,255,128,0,0,0,0,0,0,7,255,255,0,0,0,0,0,0,0,3,255,164,0,0,0,0,0, + // 0x5c31 就 + 49,92,38,38,124,40,1,252,0,0,63,128,0,0,63,128,0,0,0,0,63,128,0,0,63,129,128,0,0,0,63,128,0,0,63,143,224,0,0,0,63,128,0,0,63,139,244,0,0,0,63,128,0,0,63,131,253,0,63,255,255,255,255,0,63,128,255,0,63,255,255,255,255,0,63,128,127,64,63,255,255,255,255,0,63,128,63,192,21,85,85,85,85,0,63,128,29,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,170,191,234,170,128,3,255,255,255,244,255,255,255,255,192,3,255,255,255,244,255,255,255,255,192,3,255,255,255,244,255,255,255,255,192,3,248,0,7,244,0,63,128,0,0,3,248,0,3,244,0,63,128,0,0,3,248,0,3,244,0,127,252,0,0,3,248,0,3,244,0,127,252,0,0,3,248,0,3,244,0,191,252,0,0,3,255,255,255,244,0,191,252,0,0,3,255,255,255,244,0,255,252,0,0,3,255,255,255,244,0,255,252,0,0,0,0,63,128,0,1,255,252,0,0,0,0,63,128,0,2,254,252,0,0,1,228,63,135,208,3,253,252,0,0,2,252,63,139,240,3,249,252,0,0,3,248,63,131,244,11,245,252,0,0,7,244,63,130,252,15,241,252,0,0,11,240,63,129,252,31,225,252,2,0,15,224,63,128,254,63,209,252,3,208,31,208,63,128,190,191,193,252,3,224,63,192,63,128,80,255,65,252,3,224,191,64,63,128,3,254,1,252,3,224,47,0,63,128,11,252,1,252,11,208,9,63,255,64,47,244,1,255,255,208,0,31,255,64,127,224,0,255,255,192,0,15,254,0,31,128,0,191,255,64,0,5,64,0,2,0,0,22,164,0, + // 0x5de5 工 + 229,93,36,30,14,40,2,255,11,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,224,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,170,170,170,170,170,170, + // 0x5dee 差 + 238,93,36,38,86,40,2,252,0,0,4,0,0,0,36,0,0,0,0,189,0,0,0,191,128,0,0,0,255,0,0,0,255,64,0,0,0,191,128,0,1,254,0,0,0,0,63,192,0,3,252,0,0,0,0,47,224,0,11,248,0,0,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,21,85,255,85,85,85,85,85,84,0,1,254,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,3,253,255,255,255,255,255,0,0,7,252,255,255,255,255,255,0,0,11,244,255,255,255,255,255,0,0,15,240,0,2,253,0,0,0,0,47,224,0,2,252,0,0,0,0,127,192,0,2,252,0,0,0,0,255,128,0,2,252,0,0,0,2,255,0,0,2,252,0,0,0,7,253,0,0,2,252,0,0,0,31,248,85,85,86,253,85,85,80,191,240,255,255,255,255,255,255,252,255,192,255,255,255,255,255,255,252,63,0,255,255,255,255,255,255,252,8,0,0,0,0,0,0,0,0, + // 0x5df2 已 + 242,93,34,34,50,40,4,253,255,255,255,255,255,255,255,192,0,255,255,255,255,255,255,255,192,0,255,255,255,255,255,255,255,192,0,170,170,170,170,170,170,191,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,10,144,0,0,0,0,63,192,0,31,224,0,0,0,0,63,192,0,31,224,0,0,0,0,63,192,0,31,224,0,0,0,0,63,192,0,31,224,0,0,0,0,63,192,0,31,224,0,0,0,0,63,192,0,31,250,170,170,170,170,191,192,0,31,255,255,255,255,255,255,192,0,31,255,255,255,255,255,255,192,0,31,255,255,255,255,255,255,192,0,31,224,0,0,0,0,63,192,0,31,224,0,0,0,0,63,192,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,4,0,31,224,0,0,0,0,0,15,128,31,224,0,0,0,0,0,15,240,31,224,0,0,0,0,0,15,240,31,224,0,0,0,0,0,15,240,15,224,0,0,0,0,0,47,224,15,240,0,0,0,0,0,63,208,15,249,0,0,0,0,1,255,192,11,255,255,255,255,255,255,255,128,3,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,248,0,0,6,170,170,170,170,170,64,0, + // 0x5e73 平 + 115,94,36,35,59,40,2,252,11,255,255,255,255,255,255,255,224,11,255,255,255,255,255,255,255,224,11,255,255,255,255,255,255,255,224,6,170,170,170,255,170,170,170,144,0,0,0,0,255,0,0,0,0,0,1,64,0,255,0,1,144,0,0,63,192,0,255,0,3,253,0,0,47,192,0,255,0,7,252,0,0,15,224,0,255,0,11,248,0,0,15,240,0,255,0,15,240,0,0,7,248,0,255,0,31,224,0,0,3,252,0,255,0,63,192,0,0,2,253,0,255,0,127,128,0,0,1,254,0,255,0,255,0,0,0,0,248,0,255,0,189,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,254,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0, + // 0x5e8a 床 + 138,94,38,38,124,40,1,252,0,0,0,0,5,80,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,170,170,170,175,250,170,170,170,128,0,255,255,255,255,255,255,255,255,192,0,255,255,255,255,255,255,255,255,192,0,255,255,255,255,255,255,255,255,192,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,127,64,0,0,0,0,254,0,0,0,127,64,0,0,0,0,254,0,0,0,127,64,0,0,0,0,254,0,0,0,127,64,0,0,0,0,254,0,0,0,127,64,0,0,0,0,254,26,170,170,191,170,170,170,64,0,254,47,255,255,255,255,255,255,192,0,254,47,255,255,255,255,255,255,192,0,253,47,255,255,255,255,255,255,192,1,253,0,0,3,255,240,0,0,0,1,253,0,0,15,255,248,0,0,0,1,253,0,0,31,255,253,0,0,0,1,252,0,0,63,255,255,0,0,0,2,252,0,0,255,255,191,192,0,0,2,252,0,2,255,127,111,224,0,0,2,252,0,7,252,127,79,248,0,0,3,252,0,31,244,127,71,254,0,0,3,248,0,127,224,127,65,255,128,0,7,244,1,255,192,127,64,191,224,0,11,240,7,255,0,127,64,47,252,0,11,240,47,252,0,127,64,11,255,64,15,240,255,240,0,127,64,2,255,208,31,224,255,192,0,127,64,0,191,128,47,192,63,0,0,127,64,0,31,0,63,192,8,0,0,127,64,0,4,0,127,128,0,0,0,127,64,0,0,0,31,0,0,0,0,127,64,0,0,0,1,0,0,0,0,127,0,0,0,0, + // 0x5ea6 度 + 166,94,37,38,124,40,1,252,0,0,0,0,11,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,255,255,255,255,255,255,255,255,128,0,255,255,255,255,255,255,255,255,128,0,255,255,255,255,255,255,255,255,128,0,254,85,85,85,85,85,85,85,0,0,253,0,6,160,0,2,160,0,0,0,253,0,11,240,0,7,244,0,0,0,253,0,11,240,0,7,244,0,0,0,253,0,11,240,0,7,244,0,0,0,253,127,255,255,255,255,255,255,64,0,253,127,255,255,255,255,255,255,64,0,253,127,255,255,255,255,255,255,64,0,253,0,11,240,0,7,244,0,0,0,253,0,11,240,0,7,244,0,0,0,253,0,11,240,0,7,244,0,0,0,253,0,11,255,255,255,244,0,0,1,253,0,11,255,255,255,244,0,0,1,253,0,11,255,255,255,244,0,0,1,252,0,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,2,252,63,255,255,255,255,255,128,0,2,252,63,255,255,255,255,255,224,0,2,252,63,255,255,255,255,255,192,0,3,248,0,11,208,0,0,255,128,0,3,244,0,15,244,0,3,255,0,0,7,244,0,3,253,0,15,252,0,0,11,240,0,1,255,192,191,240,0,0,11,240,0,0,127,251,255,192,0,0,15,224,0,0,15,255,254,0,0,0,31,208,0,0,31,255,254,0,0,0,47,192,0,27,255,255,255,249,64,0,63,129,191,255,255,230,255,255,255,128,127,64,255,255,254,0,31,255,255,128,31,0,191,254,64,0,0,111,255,0,1,0,41,0,0,0,0,0,105,0, + // 0x5ee2 廢 + 226,94,38,38,124,40,1,252,0,0,0,0,11,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,2,255,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,255,192,2,252,0,0,0,0,0,0,0,0,2,248,0,0,0,1,144,0,0,0,2,248,26,170,170,7,240,45,0,0,2,248,47,255,255,195,244,191,64,0,2,248,47,255,255,65,255,252,0,0,2,248,0,0,191,0,255,208,20,0,2,248,30,1,252,0,63,128,191,0,2,248,63,215,244,0,31,231,253,0,2,248,11,255,224,0,11,255,224,0,2,248,2,255,128,0,1,255,192,0,2,248,11,255,84,10,170,255,249,0,2,248,191,255,252,31,255,255,255,208,2,255,255,255,252,31,255,253,255,192,2,250,248,0,188,31,64,252,27,0,3,248,128,0,188,31,64,252,36,0,3,248,0,0,188,47,64,252,61,0,3,244,31,255,252,127,0,253,189,0,3,244,47,255,254,253,0,255,252,0,3,244,63,170,169,248,0,63,240,0,3,240,63,0,0,16,0,0,0,0,7,240,126,0,0,255,255,255,208,0,7,240,191,255,252,255,255,255,208,0,11,240,255,255,252,91,149,111,192,0,15,224,254,170,252,31,128,63,64,0,15,208,0,1,252,15,208,191,0,0,31,192,0,2,248,3,250,252,0,0,47,192,0,2,244,1,255,244,0,0,63,128,0,3,244,0,255,244,0,0,127,64,0,7,240,31,255,255,144,0,191,0,15,255,243,255,245,255,255,64,30,0,15,255,210,255,64,27,255,0,4,0,6,169,0,144,0,0,24,0, + // 0x5efa 建 + 250,94,38,38,124,40,1,252,0,0,0,0,0,5,80,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,64,0,0,15,240,0,0,0,127,255,253,11,255,255,255,255,244,0,127,255,252,11,255,255,255,255,244,0,127,255,244,11,255,255,255,255,244,0,0,11,240,0,0,15,240,7,244,0,0,15,224,0,0,15,240,7,244,0,0,47,193,255,255,255,255,255,255,208,0,63,129,255,255,255,255,255,255,208,0,127,1,255,255,255,255,255,255,208,0,255,0,0,0,15,240,7,244,0,1,253,0,0,0,15,240,7,244,0,3,252,0,0,0,15,240,7,244,0,7,255,255,79,255,255,255,255,244,0,15,255,255,143,255,255,255,255,244,0,31,255,255,79,255,255,255,255,244,0,47,208,127,64,0,15,240,0,0,0,1,64,127,0,0,15,240,0,0,0,0,0,127,15,255,255,255,255,248,0,1,128,191,15,255,255,255,255,248,0,15,192,254,15,255,255,255,255,248,0,15,208,254,0,0,15,240,0,0,0,11,241,253,0,0,15,240,0,0,0,3,246,252,0,0,15,240,0,0,0,3,255,252,255,255,255,255,255,255,64,1,255,244,255,255,255,255,255,255,64,0,255,240,255,255,255,255,255,255,64,0,63,240,0,0,15,240,0,0,0,0,47,244,0,0,15,240,0,0,0,0,127,255,0,0,15,240,0,0,0,0,255,255,244,0,10,160,0,0,0,2,254,127,255,229,0,0,0,0,0,15,252,11,255,255,255,255,255,255,208,63,244,1,191,255,255,255,255,255,192,63,224,0,6,255,255,255,255,255,128,15,128,0,0,1,85,170,170,170,0,1,0,0,0,0,0,0,0,0,0, + // 0x5f15 引 + 21,95,31,37,40,40,3,252,0,0,0,0,0,0,3,252,63,255,255,255,192,0,3,252,63,255,255,255,192,0,3,252,63,255,255,255,192,0,3,252,21,85,85,111,192,0,3,252,0,0,0,31,192,0,3,252,0,0,0,31,192,0,3,252,0,0,0,31,192,0,3,252,0,0,0,31,192,0,3,252,0,0,0,31,192,0,3,252,15,255,255,255,192,0,3,252,15,255,255,255,192,0,3,252,15,255,255,255,192,0,3,252,31,229,85,85,64,0,3,252,31,192,0,0,0,0,3,252,47,192,0,0,0,0,3,252,63,192,0,0,0,0,3,252,63,192,0,0,0,0,3,252,63,128,0,0,0,0,3,252,127,255,255,255,208,0,3,252,191,255,255,255,208,0,3,252,191,255,255,255,192,0,3,252,255,85,85,127,192,0,3,252,254,0,0,47,192,0,3,252,0,0,0,63,192,0,3,252,0,0,0,63,192,0,3,252,0,0,0,63,192,0,3,252,0,0,0,63,128,0,3,252,0,0,0,127,128,0,3,252,0,0,0,127,64,0,3,252,0,0,0,191,0,0,3,252,0,0,0,255,0,0,3,252,0,0,2,255,0,0,3,252,0,255,255,253,0,0,3,252,0,191,255,252,0,0,3,252,0,127,255,240,0,0,3,252,0,42,170,64,0,0,2,252, + // 0x5f85 待 + 133,95,38,38,124,40,1,252,0,0,96,0,0,2,164,0,0,0,0,0,254,0,0,3,248,0,0,0,0,2,255,0,0,3,248,0,0,0,0,11,252,0,0,3,248,0,0,0,0,47,244,0,0,3,248,0,0,0,0,191,208,11,255,255,255,255,253,0,3,255,64,11,255,255,255,255,253,0,31,253,0,11,255,255,255,255,253,0,63,244,0,1,85,87,253,85,84,0,31,192,41,0,0,3,248,0,0,0,15,0,63,128,0,3,248,0,0,0,0,0,255,64,0,3,248,0,0,0,0,2,254,0,0,3,248,0,0,0,0,7,252,255,255,255,255,255,255,208,0,15,244,255,255,255,255,255,255,208,0,63,240,255,255,255,255,255,255,208,0,255,240,85,85,85,85,255,85,64,3,255,240,0,0,0,0,191,0,0,15,255,240,0,0,0,0,191,0,0,127,255,240,0,0,0,0,191,0,0,191,239,240,21,85,85,85,255,85,64,63,143,240,127,255,255,255,255,255,192,46,15,240,127,255,255,255,255,255,192,4,15,240,127,255,255,255,255,255,192,0,15,240,0,0,0,0,191,0,0,0,15,240,0,124,0,0,191,0,0,0,15,240,1,254,0,0,191,0,0,0,15,240,0,255,64,0,191,0,0,0,15,240,0,63,192,0,191,0,0,0,15,240,0,31,240,0,191,0,0,0,15,240,0,15,244,0,191,0,0,0,15,240,0,3,252,0,191,0,0,0,15,240,0,2,224,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,0,3,255,255,0,0,0,15,240,0,0,3,255,254,0,0,0,15,240,0,0,2,255,252,0,0,0,6,144,0,0,0,169,64,0,0, + // 0x5f8c 後 + 140,95,38,38,124,40,1,252,0,0,144,0,0,36,0,0,0,0,0,1,253,0,0,127,64,0,0,0,0,3,252,0,0,255,0,0,0,0,0,15,244,0,3,253,0,32,0,0,0,63,224,0,11,248,0,253,0,0,0,255,128,14,47,224,3,255,0,0,3,254,0,63,255,128,11,252,0,0,31,248,0,63,255,0,47,240,0,0,127,224,0,11,254,0,191,192,0,0,63,128,62,1,255,194,255,0,0,0,13,0,255,0,63,251,252,2,0,0,0,1,254,0,15,255,240,47,128,0,0,3,252,0,3,255,192,63,208,0,0,15,244,0,3,255,0,15,240,0,0,47,224,0,15,248,0,7,252,0,0,191,210,255,255,255,255,255,254,0,2,255,210,255,255,255,255,255,255,64,11,255,210,255,255,255,255,255,255,192,63,255,208,85,1,255,80,0,47,224,255,239,208,0,3,253,0,0,15,192,127,143,208,0,11,252,0,0,5,0,62,15,208,0,47,255,255,255,128,0,4,15,208,0,191,255,255,255,224,0,0,15,208,2,255,255,255,255,192,0,0,15,208,15,255,0,0,127,128,0,0,15,208,127,255,192,1,255,0,0,0,15,211,255,239,224,3,253,0,0,0,15,209,255,11,248,15,248,0,0,0,15,208,184,3,255,127,224,0,0,0,15,208,16,0,255,255,128,0,0,0,15,208,0,0,63,254,0,0,0,0,15,208,0,1,191,255,128,0,0,0,15,208,0,31,255,255,248,0,0,0,15,208,6,255,254,127,255,228,0,0,15,210,255,255,224,7,255,255,208,0,15,211,255,254,0,0,127,255,192,0,15,208,255,144,0,0,6,255,64,0,15,208,164,0,0,0,0,10,0, + // 0x5f91 徑 + 145,95,38,38,124,40,1,252,0,0,160,0,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,0,7,252,63,255,255,255,255,255,192,0,31,240,63,255,255,255,255,255,192,0,63,208,63,255,255,255,255,255,192,1,255,64,21,85,85,85,85,85,64,7,254,0,0,0,0,0,0,0,0,47,248,0,0,191,0,253,2,248,0,127,224,16,0,254,2,252,3,248,0,63,64,126,2,252,3,248,11,240,0,13,0,255,67,248,11,240,31,208,0,0,1,254,11,240,31,208,63,192,0,0,3,252,15,208,63,128,191,0,0,0,15,244,63,192,191,1,253,0,0,0,47,240,63,128,255,1,252,0,0,0,191,208,31,192,63,128,255,0,0,2,255,208,15,240,47,192,63,128,0,11,255,208,3,248,15,240,31,224,0,47,255,208,2,252,3,248,7,244,0,191,255,208,0,254,2,252,3,252,0,191,207,208,0,127,64,255,0,254,0,63,15,208,0,63,64,126,0,190,0,28,15,208,0,16,0,16,0,16,0,0,15,208,5,85,85,85,85,84,0,0,15,208,31,255,255,255,255,253,0,0,15,208,31,255,255,255,255,253,0,0,15,208,31,255,255,255,255,253,0,0,15,208,0,0,7,244,0,0,0,0,15,208,0,0,7,244,0,0,0,0,15,208,0,0,7,244,0,0,0,0,15,208,0,0,7,244,0,0,0,0,15,208,0,0,7,244,0,0,0,0,15,208,0,0,7,244,0,0,0,0,15,208,85,85,91,249,85,85,64,0,15,210,255,255,255,255,255,255,208,0,15,210,255,255,255,255,255,255,208,0,15,210,255,255,255,255,255,255,208,0,15,208,0,0,0,0,0,0,0, + // 0x5f9e 從 + 158,95,38,38,124,40,1,252,0,0,144,0,10,80,0,41,0,0,0,1,253,0,15,240,0,63,64,0,0,3,252,0,15,208,0,127,0,0,0,15,244,0,31,192,0,191,0,0,0,63,224,0,47,192,0,255,0,0,0,255,128,0,63,128,0,254,0,0,3,255,0,0,127,64,1,253,0,0,31,248,0,0,191,192,3,252,0,0,127,224,0,0,255,244,3,255,0,0,63,128,61,2,255,253,11,255,192,0,13,0,255,67,253,255,95,255,244,0,0,1,254,15,244,127,63,203,252,0,0,3,252,47,224,29,191,130,255,0,0,15,244,127,192,2,255,0,191,192,0,47,225,255,64,11,253,0,47,208,0,191,208,254,0,3,244,0,15,64,2,255,208,44,0,1,244,0,1,0,11,255,208,0,0,2,252,0,0,0,47,255,208,0,0,2,252,0,0,0,191,255,208,1,164,2,252,0,0,0,191,207,208,1,252,2,252,0,0,0,63,15,208,2,252,2,252,0,0,0,24,15,208,2,252,2,252,0,0,0,0,15,208,3,252,2,255,255,252,0,0,15,208,3,248,2,255,255,252,0,0,15,208,3,248,2,255,255,252,0,0,15,208,7,252,2,252,0,0,0,0,15,208,11,253,2,252,0,0,0,0,15,208,15,255,2,252,0,0,0,0,15,208,15,255,66,252,0,0,0,0,15,208,47,255,194,252,0,0,0,0,15,208,63,207,242,252,0,0,0,0,15,208,191,71,255,252,0,0,0,0,15,210,255,2,255,252,0,0,0,0,15,215,253,0,191,255,255,255,192,0,15,219,248,0,31,255,255,255,128,0,15,210,240,0,1,191,255,255,64,0,15,208,64,0,0,0,21,85,0, + // 0x5fa9 復 + 169,95,38,38,124,40,1,252,0,0,144,0,25,0,0,0,0,0,0,2,253,0,63,192,0,0,0,0,0,7,252,0,127,128,0,0,0,0,0,15,244,0,255,64,0,0,0,0,0,63,208,1,255,255,255,255,255,192,0,255,128,3,255,255,255,255,255,192,7,254,0,11,255,255,255,255,255,192,31,248,0,15,240,0,0,0,0,0,127,224,16,63,224,0,0,0,0,0,63,64,62,191,229,85,85,85,80,0,13,0,255,255,255,255,255,255,244,0,0,1,255,254,255,255,255,255,244,0,0,3,252,44,253,0,0,3,244,0,0,15,244,0,253,0,0,3,244,0,0,47,240,0,254,85,85,87,244,0,0,191,208,0,255,255,255,255,244,0,2,255,208,0,255,255,255,255,244,0,11,255,208,0,253,0,0,3,244,0,63,255,208,0,253,0,0,3,244,0,255,239,208,0,255,255,255,255,244,0,127,79,208,0,255,255,255,255,244,0,45,15,208,0,86,255,85,85,80,0,4,15,208,0,3,252,0,0,0,0,0,15,208,0,11,248,0,0,0,0,0,15,208,0,47,255,255,255,224,0,0,15,208,0,191,255,255,255,240,0,0,15,208,2,255,234,170,191,224,0,0,15,208,15,255,224,0,127,192,0,0,15,208,191,251,248,1,255,64,0,0,15,208,191,130,254,11,253,0,0,0,15,208,45,0,191,255,244,0,0,0,15,208,0,0,47,255,192,0,0,0,15,208,0,0,191,255,224,0,0,0,15,208,0,111,255,255,255,144,0,0,15,208,175,255,255,95,255,255,144,0,15,208,255,255,224,1,191,255,192,0,15,208,191,249,0,0,10,255,64,0,15,208,36,0,0,0,0,6,0, + // 0x5fae 微 + 174,95,38,38,124,40,1,252,0,6,64,1,244,0,2,144,0,0,0,15,240,1,244,0,3,244,0,0,0,47,208,1,244,0,7,240,0,0,0,191,193,65,244,20,7,240,0,0,1,255,3,209,244,62,11,240,0,0,7,252,3,209,244,62,15,224,0,0,31,244,3,209,244,62,15,208,0,0,127,224,3,209,244,62,15,192,0,0,127,129,67,209,244,62,47,255,255,208,46,3,251,209,244,62,63,255,255,208,4,11,247,209,244,62,63,255,255,208,0,15,227,255,255,254,127,64,190,0,0,47,195,255,255,254,255,64,190,0,0,127,131,255,255,255,255,64,253,0,0,255,0,0,0,3,255,128,253,0,2,255,0,0,0,7,255,128,252,0,7,255,0,0,0,15,255,192,252,0,31,255,0,0,0,3,235,193,252,0,63,255,15,255,255,255,199,210,248,0,255,255,15,255,255,255,7,227,244,0,191,127,15,255,255,255,3,243,240,0,60,63,0,127,11,224,3,247,240,0,20,63,0,126,7,224,2,255,224,0,0,63,0,126,7,224,1,255,208,0,0,63,0,126,7,224,0,255,192,0,0,63,0,126,7,224,0,255,192,0,0,63,0,189,7,224,0,191,64,0,0,63,0,253,7,224,64,191,0,0,0,63,0,252,7,251,192,255,128,0,0,63,1,252,11,255,211,255,192,0,0,63,2,248,63,255,139,255,240,0,0,63,3,244,47,248,15,247,248,0,0,63,11,240,14,64,63,195,253,0,0,63,31,208,0,1,255,64,255,64,0,63,47,192,0,11,254,0,191,224,0,63,11,0,0,11,244,0,47,208,0,63,1,0,0,3,208,0,11,128,0,63,0,0,0,1,64,0,1,0, + // 0x5fc3 心 + 195,95,38,38,124,40,1,252,0,0,0,20,0,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,11,255,248,0,0,0,0,0,0,0,0,191,255,64,0,0,0,0,0,0,0,11,255,240,0,0,0,0,0,0,0,0,255,252,0,0,0,0,0,0,0,0,31,244,0,0,0,0,0,0,0,0,2,224,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,1,84,0,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,0,3,252,0,0,0,4,0,0,0,0,3,252,0,0,0,189,0,0,0,249,3,252,0,0,1,255,0,0,0,255,3,252,0,0,0,255,128,0,0,254,3,252,0,0,0,63,208,0,0,254,3,252,0,0,0,47,240,0,1,253,3,252,0,0,0,15,244,0,2,252,3,252,0,0,0,11,252,0,3,252,3,252,0,0,0,3,253,0,3,252,3,252,0,0,0,1,255,0,7,248,3,252,0,0,0,0,255,64,11,244,3,252,0,0,0,0,191,192,15,240,3,252,0,0,0,0,63,192,31,224,3,252,0,0,6,0,63,208,63,208,3,252,0,0,7,240,47,224,127,192,3,252,0,0,7,240,15,224,191,128,3,252,0,0,7,240,14,0,31,0,3,252,0,0,11,240,0,0,0,0,3,252,0,0,11,240,0,0,0,0,3,252,0,0,15,224,0,0,0,0,2,254,0,0,47,208,0,0,0,0,2,255,255,255,255,192,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,127,255,255,254,0,0,0,0,0,0,1,85,85,80,0,0,0, + // 0x6027 性 + 39,96,37,38,124,40,1,252,0,31,208,0,0,1,168,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,62,65,253,0,0,0,0,31,208,0,127,65,253,0,0,0,0,31,208,0,191,1,253,0,0,0,0,31,208,0,191,1,253,0,0,0,0,31,208,0,255,1,253,0,0,0,0,31,239,0,254,1,253,0,0,0,15,159,255,129,254,170,254,170,169,0,15,159,223,194,255,255,255,255,255,0,15,159,219,211,255,255,255,255,255,0,31,159,215,247,255,255,255,255,255,0,31,95,211,255,240,1,253,0,0,0,47,31,210,255,240,1,253,0,0,0,63,31,208,95,208,1,253,0,0,0,63,31,208,63,192,1,253,0,0,0,126,31,208,63,128,1,253,0,0,0,189,31,208,7,0,1,253,0,0,0,188,31,208,0,0,1,253,0,0,0,4,31,208,0,0,1,253,0,0,0,0,31,208,2,255,255,255,255,252,0,0,31,208,2,255,255,255,255,252,0,0,31,208,2,255,255,255,255,252,0,0,31,208,1,85,86,254,85,84,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,31,208,191,255,255,255,255,255,192,0,31,208,191,255,255,255,255,255,192,0,31,208,191,255,255,255,255,255,192,0,31,208,106,170,170,170,170,170,128,0,31,208,0,0,0,0,0,0,0, + // 0x6062 恢 + 98,96,38,38,124,40,1,252,0,10,128,1,160,0,0,0,0,0,0,31,192,3,244,0,0,0,0,0,0,31,192,3,244,0,0,0,0,0,0,31,192,3,244,0,0,0,0,0,0,31,192,87,249,85,85,85,85,64,0,31,192,255,255,255,255,255,255,192,0,31,192,255,255,255,255,255,255,192,0,31,233,255,255,255,255,255,255,192,10,95,255,3,244,0,0,0,0,0,15,159,239,3,244,0,15,192,0,0,15,95,207,131,244,0,15,192,0,0,15,95,203,195,244,0,15,192,0,0,31,95,199,211,244,0,15,192,0,0,31,31,195,227,244,0,15,192,9,0,47,31,195,227,244,184,15,192,31,192,63,31,194,67,244,252,15,192,47,128,62,31,192,3,244,248,15,192,63,64,125,31,192,3,240,248,15,192,63,0,188,31,192,3,240,244,15,192,190,0,20,31,192,3,241,244,31,192,252,0,0,31,192,3,242,240,31,193,248,0,0,31,192,7,243,240,31,210,244,0,0,31,192,7,251,208,47,211,240,0,0,31,192,11,225,192,63,224,0,0,0,31,192,11,224,0,63,240,0,0,0,31,192,15,208,0,127,244,0,0,0,31,192,15,208,0,254,248,0,0,0,31,192,31,192,1,252,252,0,0,0,31,192,47,192,3,248,190,0,0,0,31,192,63,128,11,240,63,64,0,0,31,192,127,64,31,224,63,192,0,0,31,192,191,0,127,192,31,240,0,0,31,192,254,1,255,64,11,252,0,0,31,194,252,11,254,0,3,255,0,0,31,199,248,63,248,0,1,255,208,0,31,203,240,127,224,0,0,127,208,0,31,193,224,47,64,0,0,31,128,0,31,192,64,8,0,0,0,2,0, + // 0x606f 息 + 111,96,37,39,134,40,2,252,0,0,0,0,64,0,0,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,1,255,0,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,15,255,255,255,255,255,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,250,170,170,170,171,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,250,170,170,170,175,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,208,0,0,0,3,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,255,255,255,255,255,248,0,0,0,0,0,0,144,0,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,0,7,254,0,0,16,0,0,0,228,10,129,255,128,0,248,0,0,1,253,15,208,127,224,3,254,0,0,3,252,15,208,31,244,1,255,128,0,3,248,15,208,7,240,0,127,224,0,15,244,15,208,2,128,64,31,244,0,31,240,15,208,0,0,185,11,252,0,63,208,15,208,0,0,254,3,255,0,255,128,15,224,0,1,254,0,255,64,255,0,15,255,255,255,252,0,127,0,28,0,11,255,255,255,252,0,56,0,0,0,2,255,255,255,224,0,0,0,0,0,0,5,85,84,0,0,0,0, + // 0x61b6 憶 + 182,97,38,38,124,40,1,252,0,10,128,0,0,2,168,0,0,0,0,31,192,0,0,3,252,0,0,0,0,31,192,0,0,3,252,0,0,0,0,31,192,10,170,171,254,170,170,0,0,31,192,15,255,255,255,255,255,0,0,31,192,15,255,255,255,255,255,0,0,31,192,0,15,192,0,63,64,0,0,31,217,0,15,224,0,127,0,0,10,95,255,0,7,240,0,190,0,0,15,159,239,0,3,240,0,252,0,0,15,95,207,191,255,255,255,255,255,208,15,95,203,255,255,255,255,255,255,208,31,95,199,255,255,255,255,255,255,192,31,31,195,224,0,0,0,0,0,0,47,31,195,224,85,85,85,85,84,0,63,31,193,1,255,255,255,255,252,0,62,31,192,1,255,255,255,255,252,0,125,31,192,1,252,0,0,1,252,0,188,31,192,1,252,0,0,1,252,0,20,31,192,1,255,255,255,255,252,0,0,31,192,1,255,255,255,255,252,0,0,31,192,1,252,0,0,2,252,0,0,31,192,1,252,0,0,1,252,0,0,31,192,1,253,85,85,86,252,0,0,31,192,1,255,255,255,255,252,0,0,31,192,1,255,255,255,255,252,0,0,31,192,0,0,15,208,0,0,0,0,31,192,0,0,15,248,0,0,0,0,31,192,6,66,246,255,7,192,0,0,31,192,11,226,248,127,15,240,0,0,31,192,15,210,248,13,7,248,0,0,31,192,31,194,248,0,2,253,0,0,31,192,63,130,248,0,36,255,0,0,31,192,127,66,248,0,47,127,128,0,31,193,255,2,248,0,63,47,192,0,31,194,252,2,255,255,255,15,208,0,31,192,116,1,255,255,254,11,64,0,31,192,0,0,127,255,248,0,0, + // 0x61c9 應 + 201,97,37,38,124,40,1,252,0,0,0,0,11,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,15,240,0,0,0,0,2,255,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,255,192,2,255,255,255,255,255,255,255,255,192,2,252,0,57,0,244,1,64,0,0,2,248,0,127,1,253,3,248,0,0,2,248,0,253,2,252,7,240,0,0,2,248,2,252,7,244,15,224,0,0,2,248,7,244,15,255,255,255,254,0,2,248,15,240,47,255,255,255,254,0,2,248,63,240,127,229,111,213,84,0,2,248,191,240,255,208,31,192,0,0,2,254,255,243,255,255,255,255,248,0,2,255,255,247,255,255,255,255,248,0,2,255,247,241,223,208,31,192,0,0,2,249,199,240,15,208,31,192,0,0,2,248,7,240,15,255,255,255,248,0,2,248,7,240,15,255,255,255,248,0,3,248,7,240,15,208,31,192,0,0,3,248,7,240,15,208,31,192,0,0,3,244,7,240,15,229,111,213,85,0,3,244,7,240,15,255,255,255,255,64,3,244,7,240,15,255,255,255,255,64,3,240,1,80,3,208,0,0,0,0,7,240,0,0,15,253,0,0,0,0,11,240,0,0,7,255,128,6,0,0,11,224,10,66,252,127,240,63,192,0,15,224,15,210,252,11,224,47,224,0,15,208,47,194,252,1,64,11,244,0,31,192,63,66,252,0,2,147,253,0,47,192,191,2,252,0,3,244,255,0,63,130,254,1,252,0,3,240,127,128,127,71,252,1,255,255,255,240,63,192,191,1,240,0,255,255,255,208,31,64,30,0,0,0,47,255,255,64,4,0,4,0,0,0,0,0,0,0,0,0, + // 0x6210 成 + 16,98,37,39,134,40,1,251,0,0,0,0,0,170,1,64,0,0,0,0,0,0,0,255,7,244,0,0,0,0,0,0,0,191,15,254,0,0,0,0,0,0,0,191,2,255,192,0,0,0,0,0,0,191,0,127,244,0,0,0,0,0,0,191,0,15,244,0,0,0,0,0,0,191,0,2,208,0,0,255,255,255,255,255,255,255,255,192,0,255,255,255,255,255,255,255,255,192,0,255,255,255,255,255,255,255,255,192,0,255,170,170,170,255,234,170,170,128,0,255,0,0,0,127,128,0,0,0,0,255,0,0,0,63,128,0,0,0,0,255,0,0,0,63,128,1,0,0,0,255,0,0,0,63,192,7,244,0,0,255,85,85,80,63,192,15,240,0,0,255,255,255,240,63,192,15,240,0,0,255,255,255,240,47,192,47,208,0,0,255,255,255,240,31,208,63,192,0,0,255,0,15,240,31,224,127,128,0,0,255,0,15,240,15,240,255,0,0,0,254,0,15,224,15,242,255,0,0,0,254,0,15,224,15,247,253,0,0,0,254,0,15,224,11,255,248,0,0,1,254,0,15,224,7,255,240,0,0,1,253,0,15,224,3,255,224,0,0,2,253,0,15,224,3,255,192,0,0,2,252,0,31,208,2,255,0,13,0,3,252,85,127,208,7,255,0,15,192,3,252,127,255,192,31,255,64,15,192,7,248,63,255,128,127,255,192,15,192,11,244,47,253,2,255,255,208,31,192,15,240,0,0,15,255,31,240,47,192,31,240,0,0,127,252,15,253,63,128,63,208,0,2,255,240,7,255,255,64,127,192,0,2,255,192,1,255,255,0,47,128,0,0,189,0,0,127,253,0,7,0,0,0,32,0,0,10,160,0,0,0,0,0,0,0,0,0,0,0, + // 0x6236 戶 + 54,98,32,38,48,40,2,252,0,0,0,0,0,0,6,0,0,0,0,0,0,6,255,192,0,0,0,0,6,255,255,240,0,0,0,91,255,255,255,208,0,62,175,255,255,255,228,0,0,63,255,255,255,164,0,0,0,63,255,250,64,0,0,0,0,63,228,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,63,255,255,255,255,255,254,0,63,255,255,255,255,255,254,0,63,255,255,255,255,255,254,0,63,213,85,85,85,86,254,0,63,192,0,0,0,0,254,0,63,192,0,0,0,0,254,0,63,192,0,0,0,0,254,0,63,192,0,0,0,0,254,0,63,192,0,0,0,0,254,0,63,128,0,0,0,0,254,0,63,213,85,85,85,86,254,0,127,255,255,255,255,255,254,0,127,255,255,255,255,255,254,0,191,255,255,255,255,255,254,0,191,0,0,0,0,0,254,0,255,0,0,0,0,0,254,0,254,0,0,0,0,0,0,2,253,0,0,0,0,0,0,3,252,0,0,0,0,0,0,7,248,0,0,0,0,0,0,15,244,0,0,0,0,0,0,31,240,0,0,0,0,0,0,63,208,0,0,0,0,0,0,255,192,0,0,0,0,0,0,255,64,0,0,0,0,0,0,46,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0, + // 0x6240 所 + 64,98,38,37,114,40,1,252,0,0,0,0,0,0,0,0,180,0,5,85,85,85,84,0,0,11,254,0,31,255,255,255,252,0,1,255,255,128,31,255,255,255,252,80,191,255,253,0,31,255,255,255,252,191,255,255,128,0,0,0,0,0,0,191,255,228,0,0,0,0,0,0,0,191,228,0,0,0,0,0,0,0,0,191,0,0,0,0,1,85,85,85,80,191,0,0,0,0,3,255,255,255,240,191,0,0,0,0,3,255,255,255,240,191,0,0,0,0,3,255,255,255,240,191,0,0,0,0,3,244,0,15,240,191,0,0,0,0,3,244,0,15,240,191,255,255,255,208,3,244,0,15,240,191,255,255,255,208,3,244,0,15,240,191,255,255,255,208,3,244,0,15,240,255,170,175,250,144,3,244,0,15,240,255,0,15,208,0,3,255,255,255,240,254,0,15,208,0,3,255,255,255,240,254,0,15,208,0,3,255,255,255,240,254,0,15,208,0,3,249,85,85,81,253,0,15,208,0,3,244,0,0,1,253,0,15,208,0,7,240,0,0,2,252,0,15,208,0,7,240,0,0,3,252,0,15,208,0,7,240,0,0,3,248,0,15,208,0,11,240,0,0,7,244,0,15,208,0,11,240,0,0,15,240,0,15,208,0,15,224,0,0,15,240,0,15,208,0,15,208,0,0,47,208,0,15,208,0,31,192,0,0,63,192,0,15,208,0,63,192,0,0,255,128,0,15,208,0,63,128,0,2,255,0,0,15,208,0,191,64,0,7,253,0,0,15,208,0,255,0,0,7,248,0,0,15,208,0,45,0,0,0,240,0,0,15,208,0,4,0,0,0,0,0,0,15,208,0, + // 0x6247 扇 + 71,98,36,36,68,40,1,252,15,255,255,255,255,255,255,255,255,15,255,255,255,255,255,255,255,255,15,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,255,255,255,255,255,224,0,63,255,255,255,255,255,255,224,0,63,255,255,255,255,255,255,224,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,15,224,0,63,64,0,0,0,0,15,224,0,63,255,255,255,255,255,255,224,0,127,255,255,255,255,255,255,224,0,127,255,255,255,255,255,255,224,0,127,64,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,0,127,127,255,255,15,255,255,244,0,127,127,255,255,15,255,255,244,0,191,63,255,255,15,255,255,244,0,191,1,0,127,0,80,3,244,0,255,15,192,127,3,244,3,244,0,254,15,224,127,3,253,3,244,0,254,7,248,127,0,255,3,244,1,253,1,252,127,0,63,67,244,2,252,0,240,127,0,28,3,244,3,252,0,0,127,0,0,99,244,3,248,0,47,127,0,11,243,244,7,244,7,255,127,1,191,243,244,15,241,191,254,127,47,255,131,244,31,241,255,224,127,47,248,3,244,63,208,253,0,127,31,128,3,244,127,192,144,0,127,4,0,3,244,191,64,0,63,255,0,3,255,244,31,0,0,47,254,0,2,255,240,0,0,0,31,228,0,1,255,128, + // 0x624b 手 + 75,98,36,38,86,40,2,252,0,0,0,0,0,0,0,96,0,0,0,0,0,0,1,175,248,0,0,0,0,1,90,255,255,253,0,1,86,175,255,255,255,255,254,0,3,255,255,255,255,255,254,64,0,3,255,255,255,255,165,0,0,0,2,255,170,85,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,2,170,170,170,255,170,170,170,144,3,255,255,255,255,255,255,255,224,3,255,255,255,255,255,255,255,224,3,255,255,255,255,255,255,255,224,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,170,255,170,170,170,170,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,191,255,253,0,0,0,0,0,0,63,255,248,0,0,0,0,0,0,42,169,0,0,0,0,0, + // 0x6253 打 + 83,98,37,38,124,40,2,252,0,31,208,0,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,0,31,208,0,0,0,0,0,0,0,0,31,208,2,170,170,170,170,170,64,0,31,208,3,255,255,255,255,255,64,0,31,208,3,255,255,255,255,255,64,0,31,208,3,255,255,255,255,255,64,0,31,208,0,0,0,31,224,0,0,255,255,255,244,0,0,31,224,0,0,255,255,255,244,0,0,31,224,0,0,255,255,255,244,0,0,31,224,0,0,170,175,234,160,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,20,0,0,31,224,0,0,0,31,235,248,0,0,31,224,0,0,0,47,255,248,0,0,31,224,0,0,27,255,255,252,0,0,31,224,0,0,255,255,255,144,0,0,31,224,0,0,255,255,224,0,0,0,31,224,0,0,191,255,208,0,0,0,31,224,0,0,120,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,31,208,0,0,0,31,224,0,0,0,47,208,0,0,0,47,224,0,0,63,255,208,0,11,255,255,208,0,0,31,255,192,0,3,255,255,192,0,0,15,255,64,0,3,255,255,64,0,0,5,80,0,0,2,255,228,0,0,0, + // 0x6279 批 + 121,98,38,38,124,40,1,252,0,31,128,1,80,0,21,64,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,63,255,255,199,240,0,47,192,0,0,63,255,255,199,240,0,47,192,4,0,63,255,255,199,240,0,47,192,45,0,21,127,213,71,240,0,47,192,191,64,0,47,192,7,240,0,47,194,255,128,0,47,192,7,255,255,47,207,254,0,0,47,192,7,255,255,47,255,244,0,0,47,192,7,255,255,47,255,192,0,0,47,192,7,250,169,47,253,0,0,0,47,193,71,240,0,47,240,0,0,0,47,255,135,240,0,47,192,0,0,0,127,255,199,240,0,47,192,0,0,27,255,255,199,240,0,47,192,0,0,191,255,249,7,240,0,47,192,0,0,127,255,192,7,240,0,47,192,0,0,63,175,192,7,240,0,47,192,0,0,16,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,0,0,0,47,192,7,240,0,47,192,9,0,0,47,192,7,240,0,47,192,15,208,0,47,192,7,240,0,47,192,15,208,0,47,192,7,240,27,47,192,15,208,0,47,192,7,255,255,47,192,15,192,0,47,194,255,255,255,47,192,31,192,21,127,195,255,255,254,31,255,255,192,31,255,130,255,249,0,15,255,255,64,15,255,1,249,0,0,7,255,254,0,15,248,0,0,0,0,0,21,80,0, + // 0x6296 抖 + 150,98,38,38,124,40,1,252,0,11,224,0,0,0,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,3,128,0,191,0,0,0,15,240,0,15,248,0,191,0,0,0,15,240,0,15,255,0,191,0,0,0,15,240,0,1,255,208,191,0,0,0,15,240,0,0,63,244,191,0,0,63,255,255,248,0,11,240,191,0,0,63,255,255,248,0,1,192,191,0,0,63,255,255,248,0,0,0,191,0,0,21,95,245,80,0,0,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,61,0,0,191,0,0,0,15,240,0,191,208,0,191,0,0,0,15,240,0,255,248,0,191,0,0,0,15,240,0,31,255,64,191,0,0,0,15,240,20,2,255,192,191,0,0,0,15,251,248,0,127,64,191,0,0,0,15,255,248,0,14,0,191,0,0,6,255,255,252,0,0,0,191,0,0,127,255,255,144,0,0,0,191,0,0,63,255,240,0,0,0,0,191,107,192,63,239,240,0,0,0,6,255,255,192,24,15,240,0,0,107,255,255,255,208,0,15,240,2,191,255,255,255,255,144,0,15,240,7,255,255,255,255,64,0,0,15,240,3,255,255,164,191,0,0,0,15,240,3,250,64,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,0,0,0,191,0,0,0,15,240,0,0,0,0,191,0,0,31,255,224,0,0,0,0,191,0,0,15,255,208,0,0,0,0,191,0,0,11,255,64,0,0,0,0,191,0,0,1,80,0,0,0,0,0,106,0,0, + // 0x62bd 抽 + 189,98,37,39,134,40,1,251,0,15,208,0,0,0,168,0,0,0,0,15,224,0,0,0,253,0,0,0,0,15,224,0,0,0,253,0,0,0,0,15,224,0,0,0,253,0,0,0,0,15,224,0,0,0,253,0,0,0,0,15,224,0,0,0,253,0,0,0,0,15,224,0,0,0,253,0,0,0,0,15,224,0,0,0,253,0,0,0,63,255,255,224,0,0,253,0,0,0,63,255,255,226,170,170,254,170,170,64,63,255,255,227,255,255,255,255,255,128,21,95,245,83,255,255,255,255,255,128,0,15,224,3,255,255,255,255,255,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,231,243,244,0,253,0,63,128,0,15,255,243,244,0,253,0,63,128,1,191,255,243,255,255,255,255,255,128,127,255,255,147,255,255,255,255,255,128,127,255,244,3,255,255,255,255,255,128,127,255,224,3,249,86,254,85,191,128,61,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,244,0,253,0,63,128,0,15,224,3,250,170,254,170,191,128,0,15,224,3,255,255,255,255,255,128,0,15,224,3,255,255,255,255,255,128,5,95,224,3,255,255,255,255,255,128,31,255,208,3,244,0,0,0,63,128,15,255,192,3,244,0,0,0,63,128,11,254,0,3,244,0,0,0,42,64,0,0,0,0,0,0,0,0,0,0, + // 0x62d4 拔 + 212,98,38,39,134,40,1,251,0,15,208,0,0,253,0,0,0,0,0,15,224,0,1,253,0,244,0,0,0,15,224,0,1,253,3,254,0,0,0,15,224,0,1,253,2,255,208,0,0,15,224,0,1,253,0,127,244,0,0,15,224,0,1,252,0,11,254,0,0,15,224,0,1,252,0,1,252,0,0,15,224,0,1,252,0,0,116,0,63,255,255,224,1,252,0,0,0,0,63,255,255,235,255,255,255,255,255,192,63,255,255,235,255,255,255,255,255,192,63,255,255,235,255,255,255,255,255,192,0,15,224,0,2,252,0,0,0,0,0,15,224,0,2,252,0,0,0,0,0,15,224,0,3,253,0,0,0,0,0,15,224,0,3,254,0,6,160,0,0,15,224,0,3,255,0,11,240,0,0,15,224,0,3,255,0,15,240,0,0,15,225,160,3,255,64,15,224,0,0,15,255,240,7,255,128,31,208,0,0,111,255,240,11,255,192,31,192,0,111,255,255,224,15,239,224,47,192,0,191,255,248,0,15,231,240,63,128,0,127,255,224,0,31,211,244,127,64,0,62,79,224,0,47,194,252,255,0,0,0,15,224,0,63,192,254,254,0,0,0,15,224,0,127,64,191,252,0,0,0,15,224,0,191,0,63,248,0,0,0,15,224,0,254,0,47,240,0,0,0,15,224,2,253,0,47,244,0,0,0,15,224,3,252,0,127,253,0,0,0,15,224,15,244,1,255,255,64,0,0,15,224,31,240,3,254,255,208,0,0,15,224,127,192,31,248,63,248,0,5,95,224,255,128,191,240,11,255,64,31,255,211,255,3,255,192,2,255,224,15,255,193,252,1,254,0,0,127,128,11,254,0,112,0,116,0,0,7,0,0,0,0,0,0,0,0,0,0,0, + // 0x6309 按 + 9,99,38,39,134,40,1,251,0,15,208,0,0,1,168,0,0,0,0,15,224,0,0,2,252,0,0,0,0,15,224,0,0,2,252,0,0,0,0,15,224,0,0,2,252,0,0,0,0,15,224,0,0,2,252,0,0,0,0,15,224,1,85,87,253,85,85,64,0,15,224,11,255,255,255,255,255,192,0,15,224,11,255,255,255,255,255,192,63,255,255,235,255,255,255,255,255,192,63,255,255,235,240,0,0,0,47,192,63,255,255,235,240,15,144,0,47,192,21,95,245,91,240,31,224,0,47,192,0,15,224,11,240,47,208,0,47,192,0,15,224,11,240,63,192,0,47,192,0,15,224,0,0,63,128,0,0,0,0,15,224,0,0,127,64,0,0,0,0,15,224,5,85,255,85,85,85,64,0,15,224,15,255,255,255,255,255,208,0,15,225,175,255,255,255,255,255,208,0,15,255,255,255,255,255,255,255,208,1,191,255,240,3,248,0,31,224,0,111,255,255,224,7,244,0,47,208,0,191,255,244,0,15,240,0,63,192,0,127,255,224,0,15,224,0,63,192,0,62,79,224,0,31,192,0,127,64,0,0,15,224,0,63,208,0,255,0,0,0,15,224,0,63,253,2,254,0,0,0,15,224,0,191,255,227,252,0,0,0,15,224,0,255,255,255,248,0,0,0,15,224,0,9,31,255,240,0,0,0,15,224,0,0,1,255,253,0,0,0,15,224,0,0,7,255,255,192,0,0,15,224,0,0,111,254,255,244,0,0,15,224,0,11,255,240,63,254,0,5,95,224,22,255,255,128,7,255,192,31,255,208,63,255,248,0,0,255,192,15,255,192,31,254,64,0,0,47,0,11,254,0,15,144,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0, + // 0x6389 掉 + 137,99,38,38,124,40,1,252,0,26,128,0,0,2,160,0,0,0,0,47,192,0,0,3,244,0,0,0,0,47,192,0,0,3,244,0,0,0,0,47,192,0,0,3,244,0,0,0,0,47,192,0,0,3,255,255,255,128,0,47,192,0,0,3,255,255,255,128,0,47,192,0,0,3,255,255,255,128,0,47,192,0,0,3,244,0,0,0,63,255,255,192,0,3,244,0,0,0,63,255,255,192,0,3,244,0,0,0,63,255,255,203,255,255,255,255,252,0,21,127,229,75,255,255,255,255,252,0,0,47,192,11,255,255,255,255,252,0,0,47,192,11,240,0,0,3,252,0,0,47,192,11,240,0,0,3,252,0,0,47,192,11,240,0,0,3,252,0,0,47,192,11,255,255,255,255,252,0,0,47,192,11,255,255,255,255,252,0,0,47,219,203,255,255,255,255,252,0,0,47,255,203,240,0,0,3,252,0,1,255,255,219,240,0,0,3,252,0,127,255,255,139,240,0,0,3,252,0,63,255,224,11,255,255,255,255,252,0,63,255,192,11,255,255,255,255,252,0,41,47,192,11,255,255,255,255,252,0,0,47,192,0,0,3,244,0,0,0,0,47,192,0,0,3,244,0,0,0,0,47,192,0,0,3,244,0,0,0,0,47,192,255,255,255,255,255,255,208,0,47,192,255,255,255,255,255,255,208,0,47,192,255,255,255,255,255,255,208,0,47,192,85,85,87,249,85,85,64,0,47,192,0,0,3,244,0,0,0,0,47,192,0,0,3,244,0,0,0,63,255,192,0,0,3,244,0,0,0,47,255,128,0,0,3,244,0,0,0,31,254,0,0,0,3,244,0,0,0,5,64,0,0,0,2,164,0,0,0, + // 0x63a2 探 + 162,99,38,38,124,40,1,252,0,47,128,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,15,255,255,255,255,255,128,0,47,192,15,255,255,255,255,255,128,0,47,192,15,255,255,255,255,255,128,0,47,192,15,192,0,0,0,47,128,0,47,192,15,192,84,0,0,47,128,0,47,192,15,192,253,11,224,47,128,63,255,255,207,192,253,11,224,47,128,63,255,255,207,193,252,11,224,47,128,63,255,255,192,2,252,11,224,0,0,21,127,213,64,3,248,11,224,9,0,0,47,192,0,11,244,11,224,11,208,0,47,192,0,47,240,11,240,15,192,0,47,192,2,255,192,11,255,255,192,0,47,192,47,255,0,3,255,255,128,0,47,192,15,248,0,1,255,254,0,0,47,198,135,64,3,252,0,0,0,0,47,255,128,0,3,252,0,0,0,0,127,255,192,0,3,252,0,0,0,47,255,255,128,0,3,252,0,0,0,191,255,244,47,255,255,255,255,255,192,127,255,192,47,255,255,255,255,255,192,62,111,192,47,255,255,255,255,255,192,0,47,192,5,85,191,255,213,85,64,0,47,192,0,0,255,255,240,0,0,0,47,192,0,2,255,255,244,0,0,0,47,192,0,7,251,255,253,0,0,0,47,192,0,31,243,252,255,0,0,0,47,192,0,63,211,252,127,192,0,0,47,192,1,255,131,252,47,244,0,0,47,192,11,254,3,252,15,253,0,0,47,192,63,252,3,252,3,255,128,0,47,194,255,224,3,252,0,255,224,21,127,192,255,128,3,252,0,63,192,31,255,128,124,0,3,252,0,11,0,15,255,0,16,0,3,252,0,0,0,15,248,0,0,0,3,252,0,0,0, + // 0x63a5 接 + 165,99,37,38,124,40,1,252,0,15,208,0,0,3,252,0,0,0,0,15,224,0,0,3,252,0,0,0,0,15,224,0,0,3,252,0,0,0,0,15,224,0,0,3,252,0,0,0,0,15,224,15,255,255,255,255,255,0,0,15,224,15,255,255,255,255,255,0,0,15,224,15,255,255,255,255,255,0,0,15,224,0,11,208,0,63,128,0,63,255,255,192,15,208,0,127,64,0,63,255,255,192,15,224,0,191,0,0,63,255,255,192,11,240,0,254,0,0,21,95,245,64,7,240,0,253,0,0,0,15,224,0,3,244,1,252,0,0,0,15,224,0,7,248,3,248,0,0,0,15,224,127,255,255,255,255,255,192,0,15,224,127,255,255,255,255,255,192,0,15,224,127,255,255,255,255,255,192,0,15,224,0,0,63,192,0,0,0,0,15,226,192,0,127,128,0,0,0,0,15,255,192,0,255,0,0,0,0,0,111,255,208,1,255,0,0,0,0,27,255,255,255,255,255,255,255,255,192,191,255,249,127,255,255,255,255,255,192,127,255,224,63,255,255,255,255,255,192,62,79,224,0,15,240,0,127,64,0,16,15,224,0,47,208,0,191,0,0,0,15,224,0,63,192,0,254,0,0,0,15,224,0,191,64,2,253,0,0,0,15,224,0,255,249,7,252,0,0,0,15,224,2,255,255,239,240,0,0,0,15,224,1,186,255,255,224,0,0,0,15,224,0,0,27,255,244,0,0,0,15,224,0,0,47,255,255,128,0,0,15,224,0,27,255,251,255,244,0,31,255,208,175,255,255,128,127,255,0,15,255,192,255,255,244,0,7,255,0,11,255,64,127,249,0,0,0,188,0,6,148,0,36,0,0,0,0,0,0, + // 0x63a7 控 + 167,99,38,38,124,40,1,252,0,31,128,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,63,255,255,255,255,255,192,0,47,192,63,255,255,255,255,255,192,0,47,192,63,255,255,255,255,255,192,0,47,192,63,65,253,11,240,31,192,63,255,255,191,64,252,11,240,31,192,63,255,255,191,65,252,11,240,31,192,63,255,255,191,65,252,11,240,31,192,21,127,213,64,2,252,11,240,0,0,0,47,192,0,3,248,11,240,4,0,0,47,192,0,7,244,11,240,15,64,0,47,192,0,15,240,11,240,15,192,0,47,192,0,63,208,11,240,15,192,0,47,192,1,255,192,11,255,255,128,0,47,199,175,255,0,3,255,255,64,0,47,255,143,248,0,1,255,253,0,0,127,255,203,128,0,0,0,0,0,27,255,255,64,0,0,0,0,0,0,191,255,224,0,0,0,0,0,0,0,127,255,192,7,255,255,255,255,253,0,62,111,192,7,255,255,255,255,253,0,16,47,192,7,255,255,255,255,253,0,0,47,192,1,85,87,253,85,84,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,255,255,255,255,255,255,208,21,127,192,255,255,255,255,255,255,208,31,255,128,255,255,255,255,255,255,208,15,255,0,85,85,85,85,85,85,64,15,248,0,0,0,0,0,0,0,0, + // 0x63d0 提 + 208,99,38,38,124,40,1,252,0,47,128,0,0,0,0,0,0,0,0,47,128,1,170,170,170,170,164,0,0,47,128,2,255,255,255,255,244,0,0,47,128,2,255,255,255,255,244,0,0,47,128,2,252,0,0,3,244,0,0,47,128,2,252,0,0,3,244,0,0,47,128,2,252,0,0,3,244,0,0,47,128,2,255,255,255,255,244,0,127,255,255,194,255,255,255,255,244,0,127,255,255,194,254,170,170,171,244,0,127,255,255,194,252,0,0,3,244,0,21,127,213,66,252,0,0,3,244,0,0,47,128,2,254,170,170,175,244,0,0,47,128,2,255,255,255,255,244,0,0,47,128,2,255,255,255,255,244,0,0,47,128,0,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,0,47,134,95,255,255,255,255,255,128,0,47,255,223,255,255,255,255,255,128,1,191,255,223,255,255,255,255,255,128,111,255,255,128,0,3,248,0,0,0,191,255,224,0,80,3,248,0,0,0,127,255,128,0,253,3,248,0,0,0,57,47,128,1,252,3,248,0,0,0,0,47,128,1,252,3,255,255,248,0,0,47,128,2,248,3,255,255,248,0,0,47,128,3,252,3,255,255,248,0,0,47,128,7,253,3,248,0,0,0,0,47,128,11,255,3,248,0,0,0,0,47,128,15,255,67,248,0,0,0,0,47,128,47,223,211,248,0,0,0,0,47,128,63,139,251,248,0,0,0,0,63,128,255,2,255,248,0,0,0,47,255,131,254,0,191,255,255,255,224,31,255,71,252,0,31,255,255,255,192,15,253,1,240,0,1,191,255,255,192,5,64,0,64,0,0,0,0,0,0, + // 0x63d2 插 + 210,99,37,38,124,40,1,252,0,31,128,0,0,0,0,0,0,0,0,47,192,0,0,0,0,91,240,0,0,47,192,0,5,106,255,255,252,0,0,47,192,15,255,255,255,255,253,0,0,47,192,11,255,255,255,233,64,0,0,47,192,7,254,171,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,63,255,255,192,0,3,248,0,0,0,63,255,255,213,85,87,253,85,85,64,63,255,255,255,255,255,255,255,255,192,21,127,213,63,255,255,255,255,255,192,0,47,192,63,255,255,255,255,255,192,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,3,248,0,0,0,0,47,192,0,0,67,248,0,0,0,0,47,192,0,7,243,248,0,0,0,0,47,192,15,191,255,248,255,255,0,0,47,223,143,255,251,248,255,255,0,0,47,255,143,254,3,248,255,255,0,6,255,255,207,208,3,248,0,127,0,191,255,253,15,208,3,248,0,127,0,127,255,192,15,208,3,248,0,127,0,63,175,192,15,208,3,248,0,127,0,16,47,192,15,255,227,248,191,255,0,0,47,192,15,255,227,248,191,255,0,0,47,192,15,255,227,248,191,255,0,0,47,192,15,208,3,248,0,127,0,0,47,192,15,208,3,248,0,127,0,0,47,192,15,208,3,248,0,127,0,0,47,192,15,208,3,248,0,127,0,0,47,192,15,208,3,248,0,127,0,0,47,192,15,208,3,248,0,127,0,0,47,192,15,255,255,255,255,255,0,21,127,192,15,255,255,255,255,255,0,31,255,128,15,255,255,255,255,255,0,15,255,0,15,208,0,0,0,127,0,15,248,0,15,208,0,0,0,127,0, + // 0x63db 換 + 219,99,37,39,134,40,1,251,0,31,128,0,3,164,0,0,0,0,0,47,192,0,7,244,0,0,0,0,0,47,192,0,15,240,0,0,0,0,0,47,192,0,31,255,255,192,0,0,0,47,192,0,63,255,255,244,0,0,0,47,192,0,191,255,255,240,0,0,0,47,192,1,254,0,31,224,0,0,0,47,192,7,252,0,47,192,0,0,63,255,255,223,244,0,63,64,0,0,63,255,255,255,224,0,191,0,0,0,63,255,255,255,255,255,255,255,253,0,21,127,213,111,255,255,255,255,253,0,0,47,192,15,255,255,255,255,253,0,0,47,192,11,224,62,15,128,189,0,0,47,192,11,224,125,15,128,189,0,0,47,192,11,224,188,15,128,189,0,0,47,192,11,224,252,15,128,253,0,0,47,192,11,227,244,15,255,253,0,0,47,239,139,255,224,11,255,253,0,0,47,255,139,239,128,0,85,253,0,7,255,255,203,225,0,0,0,189,0,191,255,254,11,224,2,160,0,189,0,127,255,192,11,224,3,244,0,189,0,63,255,192,5,80,7,240,0,84,0,56,47,192,0,0,7,240,0,0,0,0,47,192,191,255,255,255,255,255,192,0,47,192,191,255,255,255,255,255,192,0,47,192,191,255,255,255,255,255,192,0,47,192,0,0,31,254,0,0,0,0,47,192,0,0,63,255,64,0,0,0,47,192,0,0,191,127,192,0,0,0,47,192,0,2,254,31,244,0,0,0,47,192,0,11,252,11,253,0,0,0,47,192,0,191,240,2,255,208,0,21,127,192,27,255,192,0,191,254,64,31,255,130,255,254,0,0,31,255,192,15,255,0,255,224,0,0,2,255,0,15,248,0,185,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0, + // 0x64c7 擇 + 199,100,38,39,134,40,1,251,0,31,128,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,7,255,255,255,255,255,0,0,47,192,7,255,255,255,255,255,0,0,47,192,7,250,255,171,250,191,0,0,47,192,7,224,126,3,224,63,0,0,47,192,7,224,126,3,224,63,0,0,47,192,7,224,126,3,224,63,0,63,255,255,199,255,255,255,255,255,0,63,255,255,199,255,255,255,255,255,0,63,255,255,198,170,171,254,170,170,0,21,127,213,64,0,2,252,0,0,0,0,47,192,0,0,2,252,0,0,0,0,47,192,3,255,255,255,255,253,0,0,47,192,3,255,255,255,255,253,0,0,47,192,2,170,171,254,170,169,0,0,47,192,0,0,2,252,0,0,0,0,47,193,64,0,2,252,0,0,0,0,47,239,191,255,255,255,255,255,208,0,127,255,255,255,255,255,255,255,208,27,255,255,255,255,255,255,255,255,208,191,255,248,0,15,208,0,63,128,0,127,255,192,0,11,240,0,127,0,0,62,111,192,0,7,240,0,253,0,0,0,47,192,47,255,255,255,255,255,128,0,47,192,47,255,255,255,255,255,192,0,47,192,47,255,255,255,255,255,192,0,47,192,0,0,2,252,0,0,0,0,47,192,0,0,2,252,0,0,0,0,47,192,0,0,2,252,0,0,0,0,47,192,11,255,255,255,255,255,0,0,47,192,11,255,255,255,255,255,0,0,47,192,11,255,255,255,255,255,0,0,47,192,0,0,2,252,0,0,0,21,127,192,0,0,2,252,0,0,0,31,255,128,0,0,2,252,0,0,0,15,255,0,0,0,2,252,0,0,0,15,248,0,0,0,2,252,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x64ca 擊 + 202,100,36,38,86,40,2,252,0,1,244,0,0,0,0,0,0,0,1,248,0,0,42,170,168,0,127,255,255,255,240,127,255,252,0,127,255,255,255,240,127,255,252,0,0,1,248,0,0,126,0,252,8,10,170,254,170,64,253,0,252,31,15,255,255,255,129,252,0,254,191,15,65,248,15,139,248,0,191,254,15,255,255,255,143,240,0,47,248,15,150,249,95,131,192,0,0,0,15,65,248,15,135,255,255,255,224,15,255,255,255,135,255,255,255,208,5,86,253,85,65,190,85,127,192,0,1,248,0,0,127,0,127,0,255,255,255,255,240,47,210,253,0,255,255,255,255,240,15,255,244,0,15,129,248,26,64,3,255,208,0,15,129,248,31,69,191,255,249,0,15,255,255,255,79,255,235,255,249,15,255,255,255,71,249,0,191,255,0,0,0,0,22,90,191,134,252,0,191,255,255,255,255,255,208,4,0,127,255,255,255,233,80,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,1,85,85,85,255,85,85,85,64,0,0,0,0,255,0,0,0,0,106,170,170,170,255,170,170,170,169,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,11,255,254,0,0,0,0,0,0,3,255,253,0,0,0,0,0,0,2,254,144,0,0,0,0, + // 0x64cb 擋 + 203,100,37,38,124,40,1,252,0,31,128,0,0,2,164,0,0,0,0,47,192,1,180,3,248,2,244,0,0,47,192,2,252,3,248,3,248,0,0,47,192,0,254,3,248,7,240,0,0,47,192,0,191,3,248,15,224,0,0,47,192,0,63,67,248,31,192,0,0,47,192,0,62,3,248,31,64,0,0,47,192,31,255,255,255,255,255,128,63,255,255,223,255,255,255,255,255,128,63,255,255,223,255,255,255,255,255,128,63,255,255,223,192,0,0,0,47,128,21,127,213,95,192,0,0,0,47,128,0,47,192,31,255,255,255,255,255,128,0,47,192,10,127,255,255,255,234,64,0,47,192,0,63,234,170,175,192,0,0,47,192,0,63,64,0,15,192,0,0,47,192,0,63,64,0,15,192,0,0,47,193,64,63,64,0,15,192,0,0,47,239,128,63,255,255,255,192,0,1,191,255,192,63,255,255,255,192,0,111,255,255,128,42,170,170,170,128,0,191,255,228,0,0,0,0,0,0,0,127,255,192,2,170,170,170,170,169,0,61,47,192,3,255,255,255,255,253,0,0,47,192,3,255,255,255,255,253,0,0,47,192,3,240,3,244,0,253,0,0,47,192,3,240,3,244,0,253,0,0,47,192,3,240,3,244,0,253,0,0,47,192,3,255,255,255,255,253,0,0,47,192,3,255,255,255,255,253,0,0,47,192,3,250,171,254,170,253,0,0,47,192,3,240,3,244,0,253,0,0,47,192,3,240,3,244,0,253,0,0,47,192,3,255,255,255,255,253,0,21,127,192,3,255,255,255,255,253,0,31,255,128,3,255,255,255,255,253,0,15,255,0,3,240,0,0,0,253,0,15,248,0,2,160,0,0,0,169,0, + // 0x64e0 擠 + 224,100,38,39,134,40,1,251,0,26,64,0,0,2,164,0,0,0,0,47,128,0,0,3,248,0,0,0,0,47,128,0,0,3,248,0,0,0,0,47,128,0,0,3,248,0,0,0,0,47,128,255,255,255,255,255,255,192,0,47,128,255,255,255,255,255,255,192,0,47,128,255,255,255,255,255,255,192,0,47,128,0,0,180,3,224,0,0,63,255,255,0,0,188,7,208,8,0,63,255,255,21,85,126,15,193,191,64,63,255,255,127,255,255,31,255,254,0,21,127,213,63,255,251,249,255,248,0,0,47,128,7,211,226,240,248,124,0,0,47,128,11,195,226,240,248,61,0,0,47,128,15,195,226,240,248,62,0,0,47,128,15,67,210,240,248,47,0,0,47,128,63,7,210,240,254,223,192,0,47,155,190,127,194,243,255,219,224,0,47,255,252,63,130,242,254,67,192,1,191,255,96,20,2,240,0,0,0,127,255,253,2,252,0,0,3,244,0,191,255,192,2,252,0,0,3,244,0,127,255,128,2,255,255,255,255,244,0,56,47,128,2,255,255,255,255,244,0,0,47,128,2,255,255,255,255,244,0,0,47,128,2,252,0,0,3,244,0,0,47,128,2,252,0,0,3,244,0,0,47,128,2,252,0,0,3,244,0,0,47,128,3,255,255,255,255,244,0,0,47,128,3,255,255,255,255,244,0,0,47,128,3,255,255,255,255,244,0,0,47,128,11,240,0,0,3,244,0,0,47,128,15,240,0,0,3,244,0,0,47,128,47,208,0,0,3,244,0,21,127,128,63,192,0,0,3,244,0,47,255,64,255,64,0,0,3,244,0,31,255,0,254,0,0,0,3,244,0,15,248,0,40,0,0,0,3,244,0,0,0,0,0,0,0,0,0,0,0, + // 0x6536 收 + 54,101,38,38,124,40,1,252,0,0,2,164,0,41,0,0,0,0,0,0,3,248,0,63,192,0,0,0,0,0,3,248,0,63,192,0,0,0,0,0,3,248,0,127,128,0,0,0,0,0,3,248,0,191,0,0,0,0,3,248,3,248,0,255,0,0,0,0,3,248,3,248,1,254,0,0,0,0,3,248,3,248,2,254,170,170,170,144,3,248,3,248,3,255,255,255,255,208,3,248,3,248,7,255,255,255,255,208,3,248,3,248,15,255,255,255,255,208,3,248,3,248,31,244,0,3,252,0,3,248,3,248,63,252,0,3,252,0,3,248,3,248,127,252,0,3,248,0,3,248,3,248,255,253,0,7,244,0,3,248,3,251,255,254,0,15,240,0,3,248,3,255,253,255,0,15,240,0,3,248,3,255,248,127,0,31,208,0,3,248,3,249,240,63,128,63,192,0,3,248,3,248,144,63,192,63,192,0,3,248,3,248,0,31,208,191,64,0,3,248,3,248,0,15,240,255,0,0,3,248,3,248,0,11,246,254,0,0,3,248,27,248,0,3,255,252,0,0,3,254,255,248,0,3,255,248,0,0,7,255,255,248,0,1,255,240,0,0,127,255,255,248,0,0,255,208,0,0,63,255,211,248,0,0,255,208,0,0,63,228,3,248,0,3,255,240,0,0,25,0,3,248,0,15,255,252,0,0,0,0,3,248,0,63,251,255,0,0,0,0,3,248,1,255,209,255,192,0,0,0,3,248,11,255,64,127,244,0,0,0,3,248,191,253,0,47,254,0,0,0,3,251,255,244,0,11,255,224,0,0,3,250,255,128,0,1,255,192,0,0,3,248,253,0,0,0,63,64,0,0,3,244,96,0,0,0,6,0, + // 0x653e 放 + 62,101,38,38,124,40,1,252,0,0,253,0,0,3,144,0,0,0,0,1,253,0,0,7,248,0,0,0,0,1,253,0,0,11,244,0,0,0,0,1,253,0,0,15,240,0,0,0,0,1,253,0,0,15,240,0,0,0,0,1,253,0,0,15,224,0,0,0,21,86,254,85,80,31,208,0,0,0,63,255,255,255,244,47,229,85,85,64,63,255,255,255,244,63,255,255,255,208,63,255,255,255,244,127,255,255,255,208,0,63,128,0,0,191,255,255,255,208,0,63,128,0,0,255,0,7,244,0,0,63,128,0,1,255,64,7,240,0,0,63,128,0,3,255,64,11,240,0,0,63,128,0,7,255,128,15,240,0,0,63,255,255,207,255,192,15,224,0,0,63,255,255,223,255,192,31,208,0,0,63,255,255,255,239,208,47,192,0,0,63,213,127,255,207,240,63,192,0,0,63,128,63,203,71,240,63,128,0,0,63,128,63,129,3,248,127,64,0,0,63,128,63,128,3,252,255,0,0,0,63,128,63,128,2,254,254,0,0,0,63,64,63,128,0,255,252,0,0,0,127,64,63,128,0,191,248,0,0,0,127,0,63,128,0,63,240,0,0,0,191,0,63,128,0,63,240,0,0,0,255,0,63,128,0,127,240,0,0,0,254,0,63,64,0,255,252,0,0,2,253,0,63,64,3,255,254,0,0,3,252,0,63,64,15,254,255,128,0,11,248,0,127,0,127,240,191,224,0,15,240,0,191,2,255,208,47,252,0,63,224,0,255,47,255,0,15,255,128,191,192,255,255,191,252,0,3,255,208,127,64,255,253,63,224,0,0,191,64,13,0,191,244,47,0,0,0,30,0,0,0,21,0,4,0,0,0,0,0, + // 0x6557 敗 + 87,101,38,38,124,40,1,252,0,0,0,0,0,6,64,0,0,0,0,0,0,0,0,15,244,0,0,0,7,255,255,255,192,15,240,0,0,0,7,255,255,255,192,15,240,0,0,0,7,255,255,255,192,31,224,0,0,0,7,240,0,47,192,47,208,0,0,0,7,240,0,47,192,63,192,0,0,0,7,240,0,47,192,127,234,170,170,128,7,240,0,47,192,191,255,255,255,208,7,255,255,255,192,255,255,255,255,208,7,255,255,255,193,255,255,255,255,208,7,255,255,255,195,254,0,11,244,0,7,240,0,47,199,255,0,15,240,0,7,240,0,47,207,255,0,15,240,0,7,240,0,47,223,255,64,15,224,0,7,240,0,47,255,255,128,31,224,0,7,240,0,47,255,255,192,47,208,0,7,255,255,255,255,111,192,63,192,0,7,255,255,255,254,15,208,63,128,0,7,255,255,255,200,15,240,127,64,0,7,240,0,47,192,11,240,191,0,0,7,240,0,47,192,7,248,255,0,0,7,240,0,47,192,3,254,253,0,0,7,240,0,47,192,1,255,252,0,0,7,255,255,255,192,0,255,248,0,0,7,255,255,255,192,0,191,240,0,0,7,255,255,255,192,0,63,224,0,0,0,0,0,16,0,0,191,240,0,0,0,63,65,244,0,2,255,252,0,0,0,191,67,252,0,7,255,254,0,0,0,255,1,255,0,31,254,255,128,0,2,254,0,191,128,191,240,255,224,0,3,252,0,63,195,255,192,63,252,0,15,244,0,31,255,255,0,15,255,64,47,240,0,15,255,253,0,7,255,224,127,192,0,5,63,240,0,0,255,192,31,64,0,0,31,128,0,0,47,0,2,0,0,0,8,0,0,0,5,0, + // 0x6574 整 + 116,101,36,37,77,40,2,253,0,0,252,0,0,2,64,0,0,0,0,252,0,0,3,244,0,0,106,170,254,170,164,7,240,0,0,191,255,255,255,248,15,240,0,0,191,255,255,255,248,31,224,0,0,0,0,252,0,0,63,255,255,255,0,0,252,0,0,191,255,255,255,47,255,255,255,240,255,255,255,255,47,255,255,255,243,255,0,31,192,47,149,253,87,255,255,192,63,128,47,64,252,3,255,255,208,127,0,47,64,252,3,243,195,244,254,0,47,255,255,255,240,2,255,252,0,47,255,255,255,240,0,255,244,0,5,95,255,149,80,0,127,224,0,0,47,255,240,0,0,255,244,0,0,255,255,254,0,7,255,254,0,7,253,253,191,224,47,254,255,208,47,240,252,31,231,255,224,127,253,255,192,252,3,223,255,64,31,255,127,0,252,0,11,248,0,2,253,40,0,252,0,3,128,0,0,44,0,0,0,0,0,0,0,0,0,7,255,255,255,255,255,255,255,208,7,255,255,255,255,255,255,255,208,7,255,255,255,255,255,255,255,208,0,0,0,0,254,0,0,0,0,0,6,144,0,254,0,0,0,0,0,11,240,0,255,255,255,248,0,0,11,240,0,255,255,255,248,0,0,11,240,0,255,255,255,248,0,0,11,240,0,254,0,0,0,0,0,11,240,0,254,0,0,0,0,0,15,240,0,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x6578 數 + 120,101,38,38,124,40,1,252,0,0,31,128,0,0,57,0,0,0,0,0,31,192,0,0,63,64,0,0,1,85,111,213,85,0,127,64,0,0,2,255,255,255,254,0,127,0,0,0,2,255,255,255,254,0,191,0,0,0,2,244,31,192,190,0,255,0,0,0,2,244,31,192,190,0,254,0,0,0,127,255,255,255,255,245,254,85,85,64,127,255,255,255,255,245,255,255,255,208,107,249,111,213,255,162,255,255,255,208,2,244,31,192,190,3,255,255,255,208,2,249,111,213,254,7,244,1,252,0,2,255,255,255,254,11,248,2,252,0,2,255,255,255,254,15,252,2,252,0,0,0,31,192,0,31,252,3,248,0,5,85,111,213,85,63,252,3,244,0,11,255,255,255,255,191,253,3,244,0,11,255,255,255,255,255,254,7,240,0,11,208,31,192,63,255,191,11,240,0,11,208,31,192,63,188,127,15,224,0,11,255,255,255,255,88,63,95,208,0,11,255,255,255,255,64,63,175,192,0,5,85,254,85,85,0,47,255,192,0,0,1,252,0,0,0,31,255,64,0,0,3,252,0,0,0,15,255,0,0,127,255,255,255,255,244,11,254,0,0,127,255,255,255,255,244,7,253,0,0,63,255,255,255,240,0,3,252,0,0,0,63,128,7,240,0,11,254,0,0,0,191,64,15,208,0,15,255,0,0,0,255,248,47,192,0,63,255,192,0,2,255,255,255,64,0,255,191,224,0,0,16,127,255,0,3,254,15,248,0,0,0,127,255,208,31,252,7,254,0,1,111,255,255,252,191,240,2,255,192,15,255,253,7,253,255,128,0,191,192,11,255,144,0,180,62,0,0,47,0,3,144,0,0,0,36,0,0,5,0, + // 0x6599 料 + 153,101,38,38,124,40,1,252,0,2,164,0,0,0,0,42,64,0,0,3,248,0,0,0,0,63,128,0,0,3,248,0,0,0,0,63,128,0,47,3,248,31,192,52,0,63,128,0,47,3,248,31,128,254,0,63,128,0,31,131,248,47,65,255,192,63,128,0,15,195,248,63,0,127,240,63,128,0,15,195,248,63,0,15,252,63,128,0,11,211,248,125,0,2,252,63,128,0,7,227,248,188,0,0,184,63,128,0,7,227,248,252,0,0,32,63,128,0,3,243,249,244,0,0,0,63,128,0,3,67,248,96,0,0,0,63,128,0,0,3,248,0,2,0,0,63,128,0,63,255,255,255,203,208,0,63,128,0,63,255,255,255,223,252,0,63,128,0,63,255,255,255,203,255,64,63,128,0,21,111,253,85,64,255,224,63,128,0,0,31,252,0,0,47,208,63,128,0,0,47,255,0,0,7,192,63,128,0,0,63,255,128,0,1,0,63,128,0,0,191,255,208,0,0,0,63,128,0,0,255,255,244,0,0,0,63,134,128,1,251,250,252,0,0,0,63,255,192,3,243,248,255,0,1,111,255,255,208,7,243,248,127,70,255,255,255,255,208,15,211,248,62,63,255,255,255,208,0,47,195,248,28,63,255,250,127,128,0,127,131,248,0,63,229,0,63,128,0,191,3,248,0,16,0,0,63,128,0,62,3,248,0,0,0,0,63,128,0,44,3,248,0,0,0,0,63,128,0,4,3,248,0,0,0,0,63,128,0,0,3,248,0,0,0,0,63,128,0,0,3,248,0,0,0,0,63,128,0,0,3,248,0,0,0,0,63,128,0,0,3,248,0,0,0,0,63,128,0,0,2,244,0,0,0,0,47,128,0, + // 0x659c 斜 + 156,101,38,38,124,40,1,252,0,0,127,64,0,0,0,11,224,0,0,0,255,224,0,0,0,15,224,0,0,1,255,248,0,0,0,15,224,0,0,3,255,254,0,2,64,15,224,0,0,11,250,255,128,15,208,15,224,0,0,31,240,191,224,31,248,15,224,0,0,63,208,47,248,7,254,15,224,0,0,191,128,15,253,0,255,143,224,0,2,255,0,3,255,0,63,223,224,0,7,252,0,0,252,0,15,207,224,0,31,244,0,0,112,0,7,15,224,0,127,255,255,255,224,0,0,15,224,0,255,255,255,255,224,0,0,15,224,0,62,255,255,255,224,8,0,15,224,0,8,21,127,213,64,127,64,15,224,0,0,0,63,128,0,191,224,15,224,0,0,0,63,128,0,31,248,15,224,0,0,0,63,128,0,7,255,15,224,0,63,255,255,255,254,0,255,143,224,0,63,255,255,255,254,0,62,15,224,0,63,255,255,255,254,0,8,15,224,0,21,85,127,213,84,0,0,15,224,0,0,0,63,128,0,0,0,15,251,192,0,64,63,128,128,0,0,95,255,208,2,252,63,139,224,0,111,255,255,224,3,248,63,135,240,111,255,255,255,144,3,244,63,131,244,255,255,255,240,0,7,240,63,130,252,255,255,159,224,0,11,240,63,128,252,254,64,15,224,0,15,208,63,128,254,0,0,15,224,0,47,192,63,128,191,0,0,15,224,0,63,128,63,128,63,0,0,15,224,0,127,0,63,128,52,0,0,15,224,0,30,0,63,128,0,0,0,15,224,0,0,21,127,128,0,0,0,15,224,0,0,63,255,128,0,0,0,15,224,0,0,31,255,0,0,0,0,15,224,0,0,15,248,0,0,0,0,15,224,0, + // 0x65b0 新 + 176,101,38,38,124,40,1,252,0,0,106,0,0,0,0,0,16,0,0,0,127,0,0,0,0,1,252,0,0,0,127,0,0,0,0,127,255,64,0,0,127,0,0,36,111,255,254,64,31,255,255,255,252,63,255,255,144,0,31,255,255,255,252,63,255,228,0,0,31,255,255,255,252,63,208,0,0,0,0,104,0,30,64,63,64,0,0,0,0,252,0,47,192,63,64,0,0,0,0,253,0,63,64,63,64,0,0,0,0,190,0,63,0,63,64,0,0,0,0,127,0,191,0,63,64,0,0,0,0,63,0,253,0,63,64,0,0,0,0,62,0,108,0,63,64,0,0,0,63,255,255,255,254,63,255,255,255,208,63,255,255,255,254,63,255,255,255,208,63,255,255,255,254,63,255,255,255,208,0,0,127,0,0,63,149,111,229,64,0,0,127,0,0,63,64,31,192,0,0,0,127,0,0,63,64,31,192,0,0,0,191,0,0,127,64,31,192,0,63,255,255,255,252,127,0,31,192,0,63,255,255,255,252,127,0,31,192,0,63,255,255,255,252,191,0,31,192,0,0,2,255,0,0,191,0,31,192,0,0,3,255,208,0,255,0,31,192,0,0,15,255,244,0,254,0,31,192,0,0,47,255,254,0,253,0,31,192,0,0,191,255,191,193,252,0,31,192,0,1,254,127,47,243,252,0,31,192,0,7,252,127,11,211,248,0,31,192,0,47,240,127,2,139,240,0,31,192,0,191,208,127,0,31,240,0,31,192,0,63,64,127,0,63,208,0,31,192,0,13,0,127,0,191,192,0,31,192,0,0,0,127,0,255,0,0,31,192,0,0,0,127,0,61,0,0,31,192,0,0,0,127,0,24,0,0,26,128,0, + // 0x65b7 斷 + 183,101,36,38,86,40,3,252,0,4,0,4,0,0,0,1,0,84,15,0,31,0,0,0,31,192,252,31,0,46,0,0,1,255,240,252,61,0,60,0,0,127,255,224,253,252,242,244,240,191,255,254,0,254,245,243,242,240,191,255,144,0,252,191,208,247,192,191,228,0,0,252,63,192,127,128,191,0,0,0,252,15,64,47,0,191,0,0,0,252,46,176,61,176,191,0,0,0,252,60,116,124,120,191,0,0,0,255,255,255,255,252,191,0,0,0,254,255,191,255,189,191,0,0,0,252,0,20,0,8,191,85,85,84,255,170,170,170,168,191,255,255,253,255,255,255,255,252,191,255,255,253,255,255,255,255,252,191,255,255,253,252,15,0,31,0,191,0,190,0,252,31,0,62,0,191,0,190,0,252,61,0,124,0,190,0,190,0,253,252,162,244,144,190,0,190,0,254,245,243,241,240,190,0,190,0,252,254,225,247,208,190,0,190,0,252,63,192,191,192,254,0,190,0,252,47,64,63,0,253,0,190,0,252,15,96,46,96,253,0,190,0,252,44,180,60,180,252,0,190,0,252,125,184,185,189,252,0,190,0,255,255,255,255,255,252,0,190,0,254,250,111,233,111,248,0,190,0,252,0,0,0,3,244,0,190,0,255,255,255,255,255,240,0,190,0,255,255,255,255,255,240,0,190,0,255,255,255,255,255,208,0,190,0,252,0,0,0,63,192,0,190,0,252,0,0,0,63,128,0,190,0,252,0,0,0,11,0,0,190,0,0,0,0,0,1,0,0,105,0, + // 0x65bc 於 + 188,101,38,39,134,40,1,251,0,1,252,0,0,0,127,128,0,0,0,1,252,0,0,0,191,192,0,0,0,1,252,0,0,0,255,208,0,0,0,1,252,0,0,1,255,240,0,0,0,1,252,0,0,3,255,244,0,0,0,1,252,0,0,7,247,252,0,0,21,86,254,85,80,15,241,253,0,0,63,255,255,255,240,31,224,255,0,0,63,255,255,255,240,63,192,127,128,0,63,255,255,255,240,191,128,63,208,0,0,63,128,0,1,255,0,31,240,0,0,63,128,0,3,253,0,11,252,0,0,63,128,0,15,248,0,3,254,0,0,63,128,0,47,240,0,1,255,192,0,63,64,0,191,208,0,0,191,224,0,63,255,255,127,64,0,0,47,192,0,63,255,255,45,1,244,0,11,64,0,63,255,255,20,7,254,0,2,0,0,127,149,191,0,2,255,192,0,0,0,127,0,127,0,0,127,240,0,0,0,191,0,127,0,0,31,252,0,0,0,191,0,127,0,0,3,255,0,0,0,191,0,127,0,0,0,252,0,0,0,255,0,191,0,0,0,116,0,0,0,254,0,191,0,0,0,0,0,0,0,254,0,191,0,0,0,0,0,0,0,253,0,191,0,32,0,0,0,0,1,252,0,191,0,190,0,0,0,0,2,252,0,191,1,255,224,0,0,0,3,252,0,191,1,255,253,0,0,0,7,248,0,255,0,47,255,192,0,0,11,240,0,254,0,2,255,248,0,0,15,240,0,254,0,0,127,255,0,0,47,224,0,253,0,0,11,255,208,0,63,193,71,253,0,0,1,255,244,0,191,130,255,252,0,0,0,47,244,0,47,1,255,248,0,0,0,7,224,0,9,0,255,208,0,0,0,1,192,0,0,0,0,0,0,0,0,0,0,0, + // 0x6607 昇 + 7,102,36,36,68,40,2,252,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,254,0,0,0,0,0,255,0,0,254,0,0,0,0,0,255,0,0,254,0,0,0,0,0,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,254,0,0,0,0,0,255,0,0,254,0,0,0,0,0,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,0,0,0,96,0,0,0,0,0,0,0,27,252,0,255,0,0,0,1,111,255,255,0,255,0,0,6,255,255,255,249,0,255,0,0,11,255,255,254,64,0,255,0,0,3,255,239,240,0,0,255,0,0,1,64,15,240,0,0,255,0,0,0,0,15,240,0,0,255,0,0,85,85,95,245,85,85,255,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,31,208,0,0,255,0,0,0,0,63,192,0,0,255,0,0,0,0,191,192,0,0,255,0,0,0,1,255,64,0,0,255,0,0,0,11,255,0,0,0,255,0,0,0,127,252,0,0,0,255,0,0,11,255,240,0,0,0,255,0,0,15,255,128,0,0,0,255,0,0,3,248,0,0,0,0,255,0,0,2,128,0,0,0,0,170,0,0, + // 0x660e 明 + 14,102,34,36,68,40,3,252,85,85,85,64,63,255,255,255,240,255,255,255,224,63,255,255,255,240,255,255,255,224,63,255,255,255,240,255,255,255,224,63,149,85,91,240,254,0,15,224,63,64,0,11,240,254,0,15,224,63,64,0,11,240,254,0,15,224,63,64,0,11,240,254,0,15,224,63,64,0,11,240,254,0,15,224,63,64,0,11,240,254,0,15,224,63,149,85,91,240,254,0,15,224,63,255,255,255,240,255,255,255,224,63,255,255,255,240,255,255,255,224,63,255,255,255,240,255,255,255,224,63,64,0,11,240,255,85,95,224,63,64,0,11,240,254,0,15,224,63,64,0,11,240,254,0,15,224,127,64,0,11,240,254,0,15,224,127,64,0,11,240,254,0,15,224,127,64,0,11,240,254,0,15,224,127,149,85,91,240,254,0,15,224,191,255,255,255,240,255,85,95,224,191,255,255,255,240,255,255,255,224,255,255,255,255,240,255,255,255,224,254,0,0,11,240,255,255,255,225,253,0,0,11,240,254,0,0,3,252,0,0,11,240,254,0,0,3,252,0,0,11,240,254,0,0,11,244,0,0,11,240,169,0,0,15,240,0,0,11,240,0,0,0,63,224,0,0,11,240,0,0,0,191,192,0,0,11,240,0,0,1,255,64,0,0,11,240,0,0,11,254,0,0,255,255,240,0,0,15,252,0,0,127,255,224,0,0,3,224,0,0,63,255,128,0,0,0,128,0,0,26,148,0, + // 0x662f 是 + 47,102,36,36,68,40,2,252,0,191,255,255,255,255,255,253,0,0,191,255,255,255,255,255,253,0,0,191,255,255,255,255,255,253,0,0,191,0,0,0,0,1,253,0,0,191,0,0,0,0,1,253,0,0,191,170,170,170,170,170,253,0,0,191,255,255,255,255,255,253,0,0,191,255,255,255,255,255,253,0,0,191,0,0,0,0,1,253,0,0,191,0,0,0,0,1,253,0,0,191,0,0,0,0,1,253,0,0,191,255,255,255,255,255,253,0,0,191,255,255,255,255,255,253,0,0,127,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,21,85,85,85,191,85,85,85,84,0,2,80,0,127,0,0,0,0,0,7,248,0,127,0,0,0,0,0,11,244,0,127,0,0,0,0,0,15,240,0,127,255,255,255,192,0,15,240,0,127,255,255,255,192,0,47,240,0,127,255,255,255,192,0,63,252,0,127,64,0,0,0,0,127,254,0,127,0,0,0,0,0,255,255,64,127,0,0,0,0,3,254,127,240,127,0,0,0,0,11,252,31,254,191,0,0,0,0,47,244,7,255,255,170,85,85,85,191,224,0,255,255,255,255,255,255,255,128,0,31,255,255,255,255,254,62,0,0,0,27,255,255,255,253,8,0,0,0,0,0,0,0,0, + // 0x6642 時 + 66,102,36,38,86,40,3,252,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,224,0,0,85,85,85,0,0,15,224,0,0,255,255,255,0,0,15,224,0,0,255,255,255,0,0,15,240,0,0,255,255,255,15,255,255,255,255,240,253,0,191,15,255,255,255,255,240,253,0,191,15,255,255,255,255,240,253,0,191,0,0,15,224,0,0,253,0,191,0,0,15,224,0,0,253,0,191,0,0,15,224,0,0,253,0,191,0,0,15,224,0,0,253,0,191,21,85,95,245,85,84,253,0,191,191,255,255,255,255,253,254,85,255,191,255,255,255,255,253,255,255,255,191,255,255,255,255,253,255,255,255,0,0,0,3,252,0,255,255,255,0,0,0,3,252,0,253,0,191,0,0,0,3,252,0,253,0,191,0,0,0,3,252,0,253,0,191,127,255,255,255,255,252,253,0,191,127,255,255,255,255,252,253,0,191,127,255,255,255,255,252,253,0,191,21,85,85,87,253,84,253,0,191,0,16,0,3,252,0,253,0,191,0,248,0,3,252,0,254,85,255,3,253,0,3,252,0,255,255,255,1,255,0,3,252,0,255,255,255,0,191,192,3,252,0,255,255,255,0,63,224,3,252,0,253,0,0,0,15,240,3,252,0,253,0,0,0,7,244,3,252,0,253,0,0,0,3,128,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,31,255,248,0,0,0,0,0,0,15,255,244,0,0,0,0,0,0,15,255,224,0,0,0,0,0,0,1,84,0,0, + // 0x66ab 暫 + 171,102,36,38,86,40,2,252,0,0,252,0,0,0,0,1,64,0,0,252,0,0,0,0,111,208,21,85,253,85,80,229,175,255,244,127,255,255,255,244,255,255,255,144,127,255,255,255,244,255,255,144,0,0,0,252,0,0,254,64,0,0,26,171,255,170,144,252,0,0,0,31,255,255,255,224,252,0,0,0,31,64,252,7,224,252,0,0,0,31,64,252,7,224,255,255,255,255,31,255,255,255,224,255,255,255,255,31,234,254,175,225,255,255,255,255,31,64,252,7,225,252,0,253,0,31,255,255,255,226,252,0,253,0,31,255,255,255,227,248,0,253,0,0,0,252,0,3,244,0,253,0,0,1,253,0,11,240,0,253,0,255,255,255,255,255,224,0,253,0,255,255,255,255,255,192,0,253,0,0,0,252,0,191,64,0,253,0,0,0,252,0,62,0,0,253,0,0,0,168,0,8,0,0,84,0,0,31,255,255,255,255,255,244,0,0,31,255,255,255,255,255,244,0,0,31,255,255,255,255,255,244,0,0,31,208,0,0,0,7,244,0,0,31,208,0,0,0,7,244,0,0,31,208,0,0,0,7,244,0,0,31,255,255,255,255,255,244,0,0,31,255,255,255,255,255,244,0,0,31,234,170,170,170,175,244,0,0,31,208,0,0,0,7,244,0,0,31,208,0,0,0,7,244,0,0,31,255,255,255,255,255,244,0,0,31,255,255,255,255,255,244,0,0,31,255,255,255,255,255,244,0,0,31,208,0,0,0,7,244,0,0,10,128,0,0,0,2,164,0, + // 0x66f4 更 + 244,102,37,36,104,40,2,252,127,255,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,255,253,0,127,255,255,255,255,255,255,255,253,0,21,85,85,85,255,149,85,85,84,0,0,0,0,0,191,0,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,255,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,255,192,0,0,254,0,0,191,0,0,63,192,0,0,254,0,0,191,0,0,63,192,0,0,254,0,0,191,0,0,63,192,0,0,255,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,255,192,0,0,254,0,0,191,0,0,63,192,0,0,254,0,0,191,0,0,63,192,0,0,254,0,0,191,0,0,63,192,0,0,255,0,0,191,0,0,63,192,0,0,255,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,255,192,0,0,255,255,255,255,255,255,255,192,0,0,1,128,1,254,0,0,0,0,0,0,31,224,3,252,0,0,0,0,0,0,15,244,7,252,0,0,0,0,0,0,7,254,15,244,0,0,0,0,0,0,1,255,191,240,0,0,0,0,0,0,0,127,255,192,0,0,0,0,0,0,0,47,255,192,0,0,0,0,0,0,1,191,255,254,64,0,0,0,0,0,111,255,255,255,255,165,64,0,0,111,255,255,71,255,255,255,255,255,64,127,255,244,0,47,255,255,255,255,0,47,254,0,0,0,27,255,255,254,0,14,64,0,0,0,0,0,86,168,0, + // 0x6700 最 + 0,103,36,37,77,40,2,252,0,26,170,170,170,170,170,168,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,128,0,0,0,2,252,0,0,63,128,0,0,0,2,252,0,0,63,213,85,85,85,87,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,128,0,0,0,2,252,0,0,63,128,0,0,0,2,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,21,85,85,85,85,85,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,253,191,255,255,255,255,255,255,255,253,191,255,255,255,255,255,255,255,253,1,252,0,47,192,0,0,0,0,1,252,0,47,192,0,0,0,0,1,255,255,255,207,255,255,255,224,1,255,255,255,207,255,255,255,240,1,254,170,191,203,255,255,255,224,1,252,0,47,192,188,0,47,208,1,252,0,47,192,254,0,63,192,1,254,170,191,192,127,0,255,64,1,255,255,255,192,63,194,255,0,1,255,255,255,192,31,231,252,0,1,252,0,47,192,11,255,244,0,1,252,0,47,192,3,255,224,0,1,252,21,191,192,2,255,192,0,191,255,255,255,192,31,255,244,0,255,255,255,255,193,255,255,254,0,191,255,165,111,239,255,210,255,248,84,0,0,47,239,254,0,127,255,0,0,0,47,207,224,0,11,252,0,0,0,47,198,0,0,0,104, + // 0x6709 有 + 9,103,36,38,86,40,2,252,0,0,0,36,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,255,0,0,0,0,0,21,85,86,255,85,85,85,85,84,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,0,0,31,240,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,2,255,255,255,255,255,252,0,0,7,255,255,255,255,255,252,0,0,15,255,255,255,255,255,252,0,0,63,254,0,0,0,3,252,0,0,255,254,0,0,0,2,252,0,2,255,254,0,0,0,2,252,0,11,254,254,0,0,0,3,252,0,63,248,255,255,255,255,255,252,0,255,224,255,255,255,255,255,252,0,255,128,255,255,255,255,255,252,0,61,0,254,0,0,0,2,252,0,20,0,254,0,0,0,2,252,0,0,0,254,0,0,0,2,252,0,0,0,254,0,0,0,3,252,0,0,0,255,255,255,255,255,252,0,0,0,255,255,255,255,255,252,0,0,0,255,255,255,255,255,252,0,0,0,254,0,0,0,2,252,0,0,0,254,0,0,0,2,252,0,0,0,254,0,0,0,2,252,0,0,0,254,0,0,0,3,252,0,0,0,254,0,0,63,255,252,0,0,0,254,0,0,31,255,248,0,0,0,254,0,0,15,255,224,0,0,0,169,0,0,10,149,0,0, + // 0x677f 板 + 127,103,38,38,124,40,1,252,0,3,240,0,0,0,0,0,0,0,0,3,244,0,0,0,0,0,0,0,0,3,244,0,21,85,85,85,85,64,0,3,244,0,63,255,255,255,255,128,0,3,244,0,63,255,255,255,255,128,0,3,244,0,63,255,255,255,255,128,0,3,244,0,63,128,0,0,0,0,0,3,244,0,63,128,0,0,0,0,0,3,244,0,63,128,0,0,0,0,63,255,255,252,63,128,0,0,0,0,63,255,255,252,63,128,0,0,0,0,63,255,255,252,63,128,0,0,0,0,21,95,249,84,63,128,0,0,0,0,0,15,244,0,63,255,255,255,254,0,0,15,244,0,63,255,255,255,255,0,0,31,248,0,63,255,255,255,255,0,0,63,253,0,63,255,85,85,254,0,0,63,255,0,63,255,0,0,253,0,0,191,255,192,63,191,64,2,252,0,0,255,255,224,63,127,128,3,252,0,1,255,247,244,63,95,192,3,248,0,3,247,246,252,127,79,208,11,240,0,7,243,244,253,127,11,240,15,240,0,11,211,244,124,191,7,244,47,208,0,31,195,244,48,191,3,252,63,192,0,63,131,244,0,254,1,254,191,128,0,191,3,244,0,254,0,255,255,0,0,126,3,244,1,253,0,127,253,0,0,60,3,244,2,252,0,47,248,0,0,24,3,244,3,252,0,47,248,0,0,0,3,244,7,244,0,191,254,0,0,0,3,244,11,240,2,255,255,128,0,0,3,244,15,240,11,254,191,224,0,0,3,244,47,208,127,248,47,254,0,0,3,244,127,195,255,208,11,255,208,0,3,244,191,67,255,64,2,255,192,0,3,244,31,0,248,0,0,63,0,0,3,240,4,0,80,0,0,5,0, + // 0x67f1 柱 + 241,103,38,38,124,40,1,252,0,2,248,0,0,2,0,0,0,0,0,2,252,0,0,15,208,0,0,0,0,2,252,0,0,63,248,0,0,0,0,2,252,0,0,15,255,0,0,0,0,2,252,0,0,2,255,192,0,0,0,2,252,0,0,0,127,240,0,0,0,2,252,0,0,0,31,248,0,0,0,2,252,0,0,0,7,240,0,0,0,2,252,0,42,170,171,234,170,64,63,255,255,255,63,255,255,255,255,192,63,255,255,255,63,255,255,255,255,192,63,255,255,255,63,255,255,255,255,192,26,171,254,170,0,0,63,192,0,0,0,7,252,0,0,0,63,192,0,0,0,15,252,0,0,0,63,192,0,0,0,15,252,0,0,0,63,192,0,0,0,31,254,0,0,0,63,192,0,0,0,63,255,128,0,0,63,192,0,0,0,63,255,208,0,0,63,192,0,0,0,191,255,244,0,0,63,192,0,0,0,254,254,252,15,255,255,255,255,64,2,250,252,255,15,255,255,255,255,64,3,242,252,127,79,255,255,255,255,64,11,226,252,46,5,85,191,213,85,0,15,210,252,12,0,0,63,192,0,0,63,194,252,0,0,0,63,192,0,0,127,66,252,0,0,0,63,192,0,0,127,2,252,0,0,0,63,192,0,0,61,2,252,0,0,0,63,192,0,0,24,2,252,0,0,0,63,192,0,0,0,2,252,0,0,0,63,192,0,0,0,2,252,0,0,0,63,192,0,0,0,2,252,0,0,0,63,192,0,0,0,2,252,3,255,255,255,255,255,224,0,2,252,3,255,255,255,255,255,224,0,2,252,3,255,255,255,255,255,224,0,2,252,2,170,170,170,170,170,144,0,2,248,0,0,0,0,0,0,0, + // 0x6821 校 + 33,104,38,38,124,40,1,252,0,7,240,0,0,0,255,0,0,0,0,7,240,0,0,0,255,0,0,0,0,7,240,0,0,0,255,0,0,0,0,7,240,0,0,0,255,0,0,0,0,7,240,0,0,0,255,0,0,0,0,7,240,0,0,0,255,0,0,0,0,7,240,3,255,255,255,255,255,192,0,7,240,3,255,255,255,255,255,192,0,7,240,3,255,255,255,255,255,192,63,255,255,250,255,255,255,255,255,128,63,255,255,248,0,0,0,0,0,0,63,255,255,248,1,244,0,47,0,0,21,95,249,84,3,252,0,127,192,0,0,15,240,0,11,248,0,47,224,0,0,31,240,0,15,240,0,15,248,0,0,47,244,0,63,208,0,3,253,0,0,63,252,0,191,128,0,0,255,0,0,63,255,2,255,0,0,0,127,128,0,191,255,139,253,176,0,62,127,208,0,255,255,195,247,248,0,191,79,128,1,255,251,240,210,252,0,255,9,0,2,251,243,244,0,254,0,254,0,0,3,247,241,252,0,191,2,253,0,0,11,215,240,244,0,127,131,252,0,0,15,199,240,96,0,47,219,244,0,0,47,135,240,0,0,15,255,240,0,0,127,71,240,0,0,11,255,192,0,0,127,7,240,0,0,3,255,128,0,0,61,7,240,0,0,2,255,128,0,0,24,7,240,0,0,11,255,224,0,0,0,7,240,0,0,47,255,248,0,0,0,7,240,0,0,255,223,255,0,0,0,7,240,0,11,255,66,255,208,0,0,7,240,0,127,253,0,191,253,0,0,7,240,11,255,224,0,47,255,208,0,7,240,15,255,64,0,7,255,192,0,7,240,7,248,0,0,0,191,0,0,7,240,3,64,0,0,0,9,0, + // 0x683c 格 + 60,104,38,38,124,40,1,252,0,2,160,0,0,9,0,0,0,0,0,3,244,0,0,31,208,0,0,0,0,3,244,0,0,63,192,0,0,0,0,3,244,0,0,127,128,0,0,0,0,3,244,0,0,255,64,0,64,0,0,3,244,0,1,255,255,255,244,0,0,3,244,0,3,255,255,255,244,0,0,3,244,0,15,255,255,255,240,0,0,3,244,0,31,240,0,31,224,0,63,255,255,252,127,244,0,63,192,0,63,255,255,253,255,252,0,127,128,0,63,255,255,255,255,255,0,255,0,0,21,95,249,111,252,127,131,253,0,0,0,15,244,11,240,63,219,248,0,0,0,15,252,1,192,15,255,240,0,0,0,31,254,0,0,3,255,192,0,0,0,47,255,128,0,3,255,192,0,0,0,63,255,208,0,31,255,244,0,0,0,127,251,240,0,191,255,254,0,0,0,255,247,252,3,255,195,255,208,0,0,255,244,248,127,254,0,191,254,64,2,247,244,183,255,244,0,31,255,224,3,243,244,63,255,208,0,3,255,192,11,211,244,31,255,255,255,255,255,64,15,195,244,15,175,255,255,255,245,0,63,131,244,0,47,255,255,255,244,0,127,3,244,0,47,192,0,3,244,0,127,3,244,0,47,192,0,3,244,0,60,3,244,0,47,192,0,3,244,0,24,3,244,0,47,192,0,3,244,0,0,3,244,0,47,192,0,3,244,0,0,3,244,0,47,192,0,3,244,0,0,3,244,0,47,192,0,3,244,0,0,3,244,0,47,255,255,255,244,0,0,3,244,0,47,255,255,255,244,0,0,3,244,0,47,255,255,255,244,0,0,3,244,0,47,192,0,7,244,0,0,3,240,0,31,128,0,2,160,0, + // 0x689d 條 + 157,104,38,38,124,40,1,252,0,0,64,0,0,24,0,0,0,0,0,1,248,0,0,47,192,0,0,0,0,2,252,0,0,63,128,0,0,0,0,3,252,0,0,191,0,0,0,0,0,7,248,0,0,254,0,0,0,0,0,11,241,80,3,255,255,255,255,192,0,15,243,244,7,255,255,255,255,192,0,47,211,244,31,255,255,255,255,192,0,63,195,244,63,240,0,31,224,0,0,127,131,244,255,248,0,63,192,0,0,255,67,251,255,253,0,191,64,0,2,255,67,251,252,191,65,255,0,0,3,255,67,244,240,63,231,252,0,0,11,255,67,244,0,15,255,240,0,0,31,255,67,244,0,3,255,208,0,0,63,255,67,244,0,11,255,244,0,0,255,255,67,244,1,255,255,255,128,0,255,127,67,244,111,255,210,255,254,64,125,63,67,247,255,253,0,47,255,208,56,63,67,244,255,208,106,2,255,128,16,63,67,244,120,0,191,0,27,0,0,63,67,244,0,0,191,0,0,0,0,63,67,244,0,0,191,0,0,0,0,63,67,244,255,255,255,255,255,192,0,63,67,244,255,255,255,255,255,192,0,63,67,244,255,255,255,255,255,192,0,63,67,244,0,3,255,224,0,0,0,63,67,244,0,15,255,244,0,0,0,63,67,244,0,63,255,253,0,0,0,63,67,244,0,255,255,255,0,0,0,63,67,244,3,254,191,63,192,0,0,63,64,0,31,248,191,15,244,0,0,63,64,0,191,224,191,7,254,0,0,63,64,11,255,128,191,1,255,208,0,63,64,15,253,0,191,0,127,208,0,63,64,3,240,0,191,0,15,64,0,63,64,1,64,0,191,0,1,0,0,63,64,0,0,0,127,0,0,0, + // 0x68c4 棄 + 196,104,36,38,86,40,2,252,0,0,0,0,191,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,0,0,15,244,0,3,252,0,0,0,0,47,224,0,7,255,128,0,0,0,127,192,0,0,127,248,0,15,255,255,255,255,255,255,255,0,15,255,255,255,255,255,255,255,224,15,255,255,255,255,250,170,175,240,0,0,0,0,84,0,0,2,192,0,11,224,0,254,0,15,224,0,0,11,224,0,254,0,15,224,0,127,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,11,224,0,254,0,15,224,0,0,11,224,0,254,0,15,224,0,0,11,224,0,254,0,15,224,0,0,11,255,255,255,255,255,224,0,0,11,255,255,255,255,255,224,0,0,11,255,255,255,255,255,224,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,1,255,255,255,64,0,0,0,0,11,253,255,127,224,0,0,0,0,191,240,255,15,254,0,0,0,27,255,128,255,2,255,244,0,6,255,248,0,255,0,47,255,144,191,255,208,0,255,0,7,255,255,191,253,0,0,255,0,0,47,254,63,128,0,0,255,0,0,1,248,4,0,0,0,254,0,0,0,0, + // 0x69fd 槽 + 253,105,38,38,124,40,1,252,0,15,224,0,0,127,3,240,0,0,0,15,224,0,0,127,3,240,0,0,0,15,224,0,0,127,3,240,0,0,0,15,224,31,255,255,255,255,255,208,0,15,224,31,255,255,255,255,255,208,0,15,224,31,255,255,255,255,255,208,0,15,224,0,0,127,3,240,0,0,0,15,224,0,0,127,3,240,0,0,0,15,224,2,170,191,171,250,170,0,63,255,255,227,255,255,255,255,255,0,63,255,255,227,255,255,255,255,255,0,63,255,255,227,240,63,3,224,63,0,21,111,245,83,240,63,3,224,63,0,0,31,224,3,240,63,3,224,63,0,0,47,224,3,255,255,255,255,255,0,0,63,240,3,255,255,255,255,255,0,0,63,244,3,245,127,87,245,127,0,0,191,252,3,240,63,3,224,63,0,0,255,255,3,240,63,3,224,63,0,0,255,255,67,255,255,255,255,255,0,2,255,239,195,255,255,255,255,255,0,3,255,231,226,170,170,170,170,170,0,7,223,227,240,0,0,0,0,0,0,15,207,225,192,127,255,255,255,248,0,31,207,224,64,191,255,255,255,248,0,63,79,224,0,191,255,255,255,248,0,127,15,224,0,191,0,0,3,248,0,126,15,224,0,191,0,0,3,248,0,60,15,224,0,191,170,170,171,248,0,20,15,224,0,191,255,255,255,248,0,0,15,224,0,191,255,255,255,248,0,0,15,224,0,191,0,0,3,248,0,0,15,224,0,191,0,0,3,248,0,0,15,224,0,191,0,0,3,248,0,0,15,224,0,191,255,255,255,248,0,0,15,224,0,191,255,255,255,248,0,0,15,224,0,191,255,255,255,248,0,0,15,208,0,191,0,0,3,248,0, + // 0x6a59 橙 + 89,106,38,38,124,40,1,252,0,6,160,0,0,0,0,0,0,0,0,11,240,0,0,0,11,192,0,0,0,11,240,3,255,254,15,192,208,0,0,11,240,3,255,255,75,227,240,0,0,11,240,3,255,255,7,255,244,0,0,11,240,0,0,190,3,255,128,0,0,11,240,1,0,253,2,253,2,0,0,11,240,7,226,252,1,252,15,128,0,11,240,15,255,244,0,255,127,192,63,255,255,242,255,240,0,127,254,0,63,255,255,240,127,224,0,63,244,0,63,255,255,240,63,255,255,255,240,0,21,95,245,80,255,255,255,255,252,0,0,15,240,3,254,191,255,247,255,0,0,31,240,15,248,0,0,0,255,208,0,47,240,127,240,0,0,0,63,224,0,63,252,63,192,0,0,0,15,128,0,127,254,30,127,255,255,255,242,0,0,191,255,68,127,255,255,255,240,0,0,255,255,192,127,234,170,175,240,0,1,255,251,240,127,0,0,7,240,0,3,251,243,248,127,0,0,7,240,0,3,251,241,240,127,0,0,7,240,0,11,219,240,208,127,0,0,7,240,0,15,203,240,0,127,255,255,255,240,0,47,139,240,0,127,255,255,255,240,0,127,75,240,0,63,255,255,255,240,0,191,11,240,0,1,144,0,61,0,0,61,11,240,0,15,224,0,127,128,0,28,11,240,0,7,240,0,191,0,0,0,11,240,0,3,244,0,254,0,0,0,11,240,0,3,248,1,252,0,0,0,11,240,0,2,252,2,248,0,0,0,11,240,0,1,228,1,244,0,0,0,11,240,47,255,255,255,255,255,208,0,11,240,47,255,255,255,255,255,208,0,11,240,47,255,255,255,255,255,208,0,11,240,0,0,0,0,0,0,0, + // 0x6a5f 機 + 95,106,38,38,124,40,1,252,0,15,192,0,0,2,160,0,0,0,0,15,192,0,189,3,240,15,128,0,0,15,192,0,253,3,240,31,192,0,0,15,192,1,248,3,240,47,64,0,0,15,192,2,240,3,240,62,0,0,0,15,192,3,225,231,240,188,45,0,0,15,192,63,195,251,247,248,63,0,0,15,192,127,135,243,255,240,189,0,0,15,192,47,207,211,247,248,252,0,63,255,255,203,255,131,240,255,240,0,63,255,255,194,255,3,240,63,224,0,63,255,255,192,253,3,244,15,192,0,21,111,229,64,249,163,244,47,95,0,0,47,192,3,242,243,244,126,15,64,0,63,208,11,208,246,244,253,95,192,0,63,240,127,255,250,255,255,255,192,0,127,248,63,255,254,255,255,255,208,0,255,252,63,250,190,255,174,67,224,0,255,255,0,0,33,252,31,129,0,1,255,223,64,0,0,252,31,240,0,2,255,207,192,0,0,252,3,244,0,3,239,199,255,255,255,255,255,255,192,11,223,195,191,255,255,255,255,255,192,15,207,193,63,255,255,255,255,255,192,31,143,192,1,252,0,127,1,64,0,63,15,192,2,252,0,63,3,244,0,127,15,192,2,253,0,63,7,244,0,125,15,192,3,255,128,63,143,224,0,60,15,192,3,255,244,47,255,192,0,20,15,192,7,251,253,15,255,64,0,0,15,192,11,241,253,15,254,0,0,0,15,192,15,208,120,15,248,3,128,0,15,192,47,192,0,127,248,3,240,0,15,192,127,128,2,255,253,3,224,0,15,193,255,0,47,253,255,75,208,0,15,195,253,1,255,240,127,255,192,0,15,192,244,0,255,64,31,255,128,0,15,192,80,0,36,0,2,254,0, + // 0x6aa2 檢 + 162,106,38,38,124,40,1,252,0,7,224,0,0,2,168,0,0,0,0,11,240,0,0,7,255,0,0,0,0,11,240,0,0,15,255,128,0,0,0,11,240,0,0,47,255,224,0,0,0,11,240,0,0,191,207,244,0,0,0,11,240,0,1,255,7,253,0,0,0,11,240,0,7,253,1,255,128,0,0,11,240,0,31,244,0,191,224,0,0,11,240,0,191,208,0,31,252,0,63,255,255,243,255,128,0,7,255,128,63,255,255,255,255,255,255,255,255,224,63,255,255,255,247,255,255,254,63,192,21,95,245,95,195,255,255,254,11,64,0,15,240,6,0,0,0,0,1,0,0,31,240,0,0,0,0,0,0,0,0,47,244,2,170,170,70,170,170,0,0,63,252,3,255,255,139,255,255,0,0,127,254,3,255,255,139,255,255,0,0,191,255,67,240,31,139,192,63,0,0,255,255,195,240,31,139,192,63,0,1,255,251,227,240,31,139,192,63,0,2,251,243,247,240,31,139,192,63,0,3,235,241,243,250,175,139,234,191,0,11,219,240,211,255,255,139,255,255,0,15,203,240,67,255,255,139,255,255,0,47,139,240,0,0,0,0,16,0,0,127,11,240,0,11,224,0,63,64,0,126,11,240,0,15,224,0,63,0,0,60,11,240,0,15,208,0,127,0,0,24,11,240,0,47,192,0,254,0,0,0,11,240,0,63,224,1,255,64,0,0,11,240,0,191,248,3,255,208,0,0,11,240,1,255,255,11,255,248,0,0,11,240,7,252,191,95,243,255,0,0,11,240,31,240,46,191,192,255,192,0,11,240,127,208,5,255,64,63,224,0,11,240,47,64,0,188,0,15,128,0,7,224,8,0,0,32,0,2,0, + // 0x6b62 止 + 98,107,36,36,68,40,2,254,0,0,0,0,26,144,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,0,0,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,250,170,170,160,0,47,192,0,31,255,255,255,240,0,47,192,0,31,255,255,255,240,0,47,192,0,31,255,255,255,240,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,0,47,192,0,31,224,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,170,170,170,170,170,170, + // 0x6b63 正 + 99,107,36,33,41,40,2,254,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,26,170,170,170,191,234,170,170,164,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,255,255,255,192,0,47,192,0,63,255,255,255,192,0,47,192,0,63,255,255,255,192,0,47,192,0,63,234,170,170,128,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,0,47,192,0,63,192,0,0,0,170,191,234,170,191,234,170,170,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x6b65 步 + 101,107,36,38,86,40,2,252,0,0,0,0,191,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,15,224,0,255,0,0,0,0,0,15,224,0,255,170,170,169,0,0,15,224,0,255,255,255,254,0,0,15,224,0,255,255,255,254,0,0,15,224,0,255,255,255,254,0,0,15,224,0,255,0,0,0,0,0,15,224,0,255,0,0,0,0,0,15,224,0,255,0,0,0,0,0,15,224,0,255,0,0,0,0,255,255,255,255,255,255,255,255,254,255,255,255,255,255,255,255,255,254,255,255,255,255,255,255,255,255,254,106,170,170,170,255,170,170,170,169,0,0,0,0,255,0,0,0,0,0,1,248,0,255,0,0,0,0,0,3,254,0,255,0,0,228,0,0,15,252,0,255,0,2,254,0,0,63,240,0,255,0,3,253,0,0,255,208,0,255,0,7,252,0,3,255,64,0,255,0,15,244,0,31,254,0,0,255,0,47,240,0,191,248,0,0,255,0,127,208,0,63,208,3,255,255,0,255,128,0,11,64,1,255,254,3,255,0,0,0,0,0,255,248,15,253,0,0,0,0,0,85,0,127,244,0,0,0,0,0,0,2,255,208,0,0,0,0,0,0,47,255,64,0,0,0,0,0,6,255,252,0,0,0,0,0,1,191,255,224,0,0,0,0,5,191,255,254,0,0,0,0,2,255,255,255,224,0,0,0,0,0,255,255,249,0,0,0,0,0,0,191,254,64,0,0,0,0,0,0,57,0,0,0,0,0,0,0, + // 0x6b78 歸 + 120,107,38,38,124,40,1,252,0,7,160,0,0,0,0,0,0,0,0,11,240,0,2,170,170,170,160,0,0,15,224,0,3,255,255,255,240,0,6,175,250,169,3,255,255,255,240,0,7,255,255,253,0,0,0,7,240,0,7,255,255,253,0,0,0,7,240,0,7,224,0,189,106,170,170,171,250,128,7,224,0,189,191,255,255,255,255,208,7,224,0,189,191,255,255,255,255,208,7,255,255,253,0,0,0,7,240,0,7,255,255,253,0,0,0,7,240,0,7,250,170,169,3,255,255,255,240,0,7,224,0,0,3,255,255,255,240,0,7,250,170,169,2,170,170,170,160,0,7,255,255,254,0,0,0,0,0,0,7,255,255,254,47,255,255,255,255,64,7,224,0,190,63,255,255,255,255,128,7,224,0,190,63,255,255,255,255,128,7,250,170,254,63,0,63,64,47,128,7,255,255,254,63,0,63,64,47,128,7,255,255,254,63,0,63,64,47,128,0,1,248,0,5,0,63,64,5,0,0,1,248,0,11,255,255,255,252,0,0,1,248,0,11,255,255,255,253,0,11,193,248,0,11,255,255,255,253,0,11,193,255,255,11,224,63,64,253,0,11,193,255,255,11,224,63,64,253,0,11,193,255,255,11,224,63,64,253,0,11,193,248,0,11,224,63,64,253,0,11,193,248,0,11,224,63,64,253,0,11,193,248,0,11,224,63,64,253,0,11,193,249,111,75,224,63,64,253,0,11,214,255,255,139,224,63,111,252,0,127,255,255,255,139,224,63,95,252,0,127,255,255,233,11,224,63,74,144,0,63,254,144,0,0,0,63,64,0,0,37,0,0,0,0,0,63,64,0,0,0,0,0,0,0,0,63,64,0,0, + // 0x6bbc 殼 + 188,107,37,38,124,40,2,252,0,2,248,0,0,0,0,0,0,0,0,2,252,0,0,21,85,85,0,0,0,2,252,0,0,63,255,255,0,0,170,171,254,170,160,63,255,255,0,0,255,255,255,255,224,63,255,255,0,0,255,255,255,255,224,63,0,127,0,0,0,2,252,0,0,63,0,127,0,0,0,2,252,0,0,127,0,127,0,0,26,171,254,170,64,127,0,127,0,0,47,255,255,255,128,127,0,127,9,0,47,255,255,255,128,190,0,127,11,192,0,0,0,0,0,253,0,127,15,192,0,0,0,0,1,252,0,127,15,128,170,170,170,170,147,248,0,63,255,128,255,255,255,255,255,240,0,63,255,0,255,255,255,255,255,224,0,11,249,0,252,0,0,7,227,128,0,0,0,0,252,0,0,7,224,0,0,0,0,0,254,255,255,251,227,255,255,255,244,0,85,255,255,245,67,255,255,255,244,0,0,170,170,160,3,255,255,255,240,0,0,0,0,0,1,110,85,95,240,0,0,0,0,0,0,191,0,15,224,0,2,255,255,248,0,127,0,47,192,0,2,255,255,248,0,63,128,63,128,0,2,255,255,248,0,31,208,255,64,0,2,248,2,248,0,15,241,254,0,0,3,248,2,248,0,7,251,252,0,0,3,248,2,248,0,3,255,244,0,0,3,244,2,248,16,0,255,224,0,0,3,244,2,255,244,1,255,208,0,0,7,240,7,255,244,11,255,248,0,0,15,240,47,255,244,127,255,255,64,0,47,208,15,253,11,255,226,255,244,0,191,192,15,128,255,255,0,127,255,64,191,64,0,0,255,248,0,15,255,0,45,0,0,0,127,128,0,1,252,0,0,0,0,0,36,0,0,0,20,0, + // 0x6bd4 比 + 212,107,37,37,114,40,2,253,0,21,64,0,0,85,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,192,0,0,63,128,0,0,254,0,11,240,0,0,63,128,0,0,254,0,127,252,0,0,63,234,170,128,254,7,255,248,0,0,63,255,255,192,254,63,255,208,0,0,63,255,255,192,255,255,253,0,0,0,63,255,255,192,255,255,144,0,0,0,63,128,0,0,255,248,0,0,0,0,63,128,0,0,255,128,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,0,0,0,63,128,0,0,254,0,0,32,0,0,63,128,0,0,254,0,0,62,0,0,63,128,0,0,254,0,0,63,128,0,63,128,1,176,254,0,0,63,128,0,63,134,255,240,254,0,0,63,64,0,63,255,255,244,254,0,0,127,64,27,255,255,255,244,255,0,0,191,0,255,255,255,249,0,255,234,170,255,0,255,255,249,0,0,191,255,255,254,0,191,249,0,0,0,63,255,255,252,0,101,0,0,0,0,11,255,255,224,0, + // 0x6c92 沒 + 146,108,37,38,124,40,2,252,0,0,0,0,41,64,0,0,0,0,3,224,0,0,63,192,0,0,0,0,11,254,0,0,63,192,0,0,0,0,15,255,208,0,63,128,0,0,0,0,1,255,248,0,127,255,255,255,240,0,0,31,252,0,191,255,255,255,240,0,0,3,240,0,255,255,255,255,240,0,0,0,144,1,255,85,85,95,240,0,0,0,0,2,253,0,0,15,224,0,0,0,0,3,252,0,0,15,224,0,0,0,0,11,248,0,0,15,208,0,16,0,0,15,240,0,0,31,208,0,127,64,0,47,224,0,0,47,192,0,255,244,0,127,192,0,0,63,192,0,191,254,1,255,128,3,255,255,128,0,11,255,199,255,0,1,255,255,0,0,0,191,2,252,0,0,255,253,0,0,0,30,0,116,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,208,0,0,0,0,127,255,255,255,255,240,0,0,0,0,127,255,255,255,255,208,0,0,1,192,21,189,85,85,191,192,0,0,3,240,2,254,0,0,255,128,0,0,7,248,0,255,0,1,255,0,0,0,15,240,0,127,192,3,253,0,0,0,31,224,0,47,240,15,248,0,0,0,63,192,0,15,252,63,240,0,0,0,191,128,0,3,255,255,192,0,0,0,255,0,0,0,255,255,0,0,0,2,254,0,0,0,191,253,0,0,0,3,252,0,0,7,255,255,128,0,0,15,248,0,0,191,255,255,249,0,0,31,240,0,111,255,248,127,255,228,0,63,224,15,255,255,208,11,255,255,64,15,192,7,255,248,0,0,191,254,0,3,64,3,254,64,0,0,7,252,0,0,0,1,128,0,0,0,0,36,0, + // 0x6d88 消 + 136,109,35,38,86,40,2,252,0,0,0,0,0,15,208,0,0,3,208,0,0,0,15,224,0,128,15,248,0,127,0,15,224,2,252,15,255,64,191,64,15,224,3,252,2,255,224,63,192,15,224,7,248,0,63,244,31,224,15,224,15,240,0,11,224,15,240,15,224,47,224,0,1,128,7,248,15,224,63,192,0,0,0,3,252,15,224,191,64,0,0,0,2,224,15,224,30,0,0,0,0,0,0,15,224,0,0,20,0,0,21,85,111,245,85,80,127,0,0,63,255,255,255,255,240,255,224,0,63,255,255,255,255,240,127,253,0,63,255,255,255,255,240,11,255,64,63,192,0,0,11,240,1,255,64,63,192,0,0,11,240,0,62,0,63,192,0,0,11,240,0,8,0,63,192,0,0,11,240,0,0,0,63,255,255,255,255,240,0,0,0,63,255,255,255,255,240,0,0,0,63,255,255,255,255,240,0,2,64,63,192,0,0,11,240,0,7,208,63,192,0,0,11,240,0,11,240,63,192,0,0,11,240,0,15,224,63,192,0,0,11,240,0,47,192,63,255,255,255,255,240,0,63,192,63,255,255,255,255,240,0,191,64,63,255,255,255,255,240,0,255,0,63,192,0,0,11,240,2,253,0,63,192,0,0,11,240,7,252,0,63,192,0,0,11,240,15,244,0,63,192,0,0,11,240,31,240,0,63,192,0,0,15,240,63,224,0,63,192,0,63,255,240,47,192,0,63,192,0,47,255,224,7,64,0,63,192,0,31,255,128,0,0,0,42,128,0,10,84,0, + // 0x6de1 淡 + 225,109,37,37,114,40,2,253,0,0,0,0,0,26,128,0,0,0,2,128,0,0,0,47,192,0,0,0,11,248,0,0,0,47,192,0,0,0,15,255,64,11,224,47,192,11,208,0,2,255,224,15,224,47,192,15,240,0,0,127,248,31,192,63,192,47,224,0,0,11,240,47,192,63,128,63,192,0,0,1,192,127,64,63,128,191,0,0,0,0,0,255,0,127,65,254,0,0,0,0,1,253,0,191,131,252,0,0,0,0,0,40,0,255,244,96,0,0,0,0,0,0,2,255,255,0,0,0,61,0,0,0,11,255,255,224,0,0,255,208,0,0,47,244,127,253,0,0,255,248,0,1,255,224,11,255,192,0,31,255,64,111,255,128,0,255,244,0,2,255,67,255,253,0,0,31,252,0,0,126,0,255,208,47,192,3,244,0,0,4,0,185,0,47,192,0,144,0,0,0,0,0,0,63,192,0,0,0,0,0,0,14,64,63,192,3,208,0,0,1,0,15,208,63,128,11,252,0,0,11,128,47,192,63,128,15,240,0,0,15,224,63,128,63,192,47,224,0,0,47,224,127,64,127,208,63,192,0,0,63,192,255,0,191,240,255,64,0,0,191,130,253,0,255,241,254,0,0,0,255,3,252,1,255,253,252,0,0,2,255,0,116,3,255,254,0,0,0,3,253,0,0,15,248,255,64,0,0,11,252,0,0,63,240,127,208,0,0,15,244,0,1,255,208,47,248,0,0,63,240,0,47,255,64,11,255,128,0,127,208,27,255,253,0,2,255,254,64,47,128,31,255,224,0,0,127,255,0,7,0,11,254,0,0,0,11,253,0,0,0,3,144,0,0,0,0,40,0, + // 0x6e05 清 + 5,110,37,38,124,40,2,252,0,0,0,0,0,47,192,0,0,0,3,208,0,0,0,47,192,0,0,0,11,253,0,170,170,191,234,170,168,0,15,255,128,255,255,255,255,255,252,0,2,255,240,255,255,255,255,255,252,0,0,47,244,0,0,47,192,0,0,0,0,3,224,0,0,47,192,0,0,0,0,0,64,42,170,191,234,170,160,0,0,0,0,63,255,255,255,255,240,0,0,0,0,63,255,255,255,255,240,0,0,0,0,0,0,47,192,0,0,0,36,0,0,0,0,47,192,0,0,0,127,64,6,170,170,191,234,170,170,64,255,244,7,255,255,255,255,255,255,64,127,255,7,255,255,255,255,255,255,64,11,255,128,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,45,0,11,255,255,255,255,208,0,0,0,0,15,255,255,255,255,208,0,0,0,0,15,255,255,255,255,208,0,0,0,0,15,224,0,0,15,208,0,0,0,0,15,224,0,0,15,208,0,0,2,192,15,229,85,85,111,208,0,0,3,240,15,255,255,255,255,208,0,0,11,244,15,255,255,255,255,208,0,0,15,240,15,224,0,0,15,208,0,0,47,208,15,224,0,0,15,208,0,0,63,192,15,224,0,0,15,208,0,0,191,64,15,255,255,255,255,208,0,0,255,0,15,255,255,255,255,208,0,3,253,0,15,250,170,170,175,208,0,7,252,0,15,224,0,0,15,208,0,15,244,0,15,224,0,0,15,208,0,47,240,0,15,224,0,0,15,208,0,63,208,0,15,224,0,63,255,192,0,15,128,0,15,224,0,47,255,192,0,2,0,0,15,224,0,31,254,0,0,0,0,0,5,64,0,0,0,0,0, + // 0x6e2c 測 + 44,110,35,38,86,40,2,252,0,0,0,0,0,0,0,1,248,7,128,0,0,0,0,0,1,252,15,248,11,255,255,240,0,1,252,31,255,75,255,255,240,0,1,252,3,255,219,255,255,240,42,1,252,0,127,203,224,7,240,63,1,252,0,15,11,224,3,240,63,1,252,0,1,11,224,3,240,63,1,252,0,0,11,224,3,240,63,1,252,0,0,11,224,3,240,63,1,252,0,0,11,255,255,240,63,1,252,16,0,11,255,255,240,63,1,252,62,0,11,255,255,240,63,1,252,255,224,11,224,3,240,63,1,252,255,253,11,224,3,240,63,1,252,31,255,11,224,3,240,63,1,252,1,252,11,224,3,240,63,1,252,0,52,11,255,255,240,63,1,252,0,0,11,255,255,240,63,1,252,0,0,11,255,255,240,63,1,252,0,0,11,224,3,240,63,1,252,0,0,11,224,3,240,63,1,252,0,16,11,224,3,240,63,1,252,0,61,11,224,3,240,63,1,252,0,63,139,229,87,240,63,1,252,0,191,11,255,255,240,63,1,252,0,255,11,255,255,240,63,1,252,1,254,11,255,255,240,63,1,252,2,252,0,0,0,0,0,1,252,3,252,2,248,11,192,0,1,252,11,244,3,252,15,240,0,1,252,15,240,11,244,7,248,0,1,252,31,224,31,224,2,253,0,1,252,63,192,63,192,0,255,0,2,252,127,192,255,64,0,127,79,255,252,127,67,254,0,0,56,11,255,244,11,0,252,0,0,0,7,255,224,0,0,16,0,0,0,2,149,0, + // 0x6e90 源 + 144,110,37,39,134,40,2,251,1,0,0,0,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,15,254,2,255,255,255,255,255,255,0,11,255,194,255,255,255,255,255,255,0,0,255,242,255,255,255,255,255,255,0,0,47,226,253,85,86,255,85,85,0,0,7,194,252,0,1,254,0,0,0,0,1,2,252,0,2,253,0,0,0,0,0,2,252,0,2,252,0,0,0,0,0,2,252,0,3,252,0,0,0,0,0,2,252,63,255,255,255,248,0,0,0,2,252,63,255,255,255,248,0,61,0,2,252,63,255,255,255,248,0,255,208,2,252,63,64,0,3,248,0,255,252,2,252,63,64,0,3,248,0,31,255,2,252,63,170,170,171,248,0,1,253,2,252,63,255,255,255,248,0,0,56,2,252,63,255,255,255,248,0,0,0,2,252,63,64,0,3,248,0,0,0,2,252,63,64,0,3,248,0,0,0,3,252,63,64,0,3,248,0,0,0,3,248,63,234,170,171,248,0,0,8,3,248,63,255,255,255,248,0,0,31,3,244,63,255,255,255,248,0,0,63,199,244,0,0,253,0,0,0,0,127,135,240,0,0,253,0,0,0,0,191,11,240,14,64,253,11,192,0,0,255,15,240,47,192,253,31,224,0,2,253,15,224,63,128,253,15,240,0,3,252,31,208,191,0,253,7,252,0,7,248,47,192,254,0,253,2,253,0,15,240,63,131,252,0,253,0,255,0,31,224,191,75,248,0,253,0,191,64,63,208,255,15,240,0,253,0,127,128,127,194,254,7,208,1,253,0,61,0,127,67,252,0,65,255,252,0,0,0,11,1,248,0,0,255,252,0,0,0,0,0,32,0,0,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x6e96 準 + 150,110,36,38,86,40,2,252,0,64,0,1,144,0,144,0,0,1,248,0,3,252,0,255,0,0,3,255,128,7,248,2,253,0,0,2,255,244,15,240,3,252,0,0,0,47,240,47,224,11,244,0,0,0,7,224,127,255,255,255,255,244,0,0,64,255,255,255,255,255,244,20,0,3,255,255,255,255,255,240,127,128,15,255,64,15,224,0,0,255,253,127,255,64,15,224,0,0,31,253,255,255,255,255,255,255,192,1,248,63,127,255,255,255,255,192,0,16,8,63,234,175,250,170,128,0,0,0,63,64,15,224,0,0,0,1,208,63,64,15,224,0,0,0,3,240,63,234,175,250,170,128,0,15,244,63,255,255,255,255,192,0,63,224,63,255,255,255,255,192,0,191,192,63,64,15,224,0,0,2,255,0,63,64,15,224,0,0,11,252,0,63,64,15,224,0,0,47,244,0,63,255,255,255,255,253,63,208,0,63,255,255,255,255,253,15,128,0,63,255,255,255,255,252,6,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,85,255,85,85,85,85,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0, + // 0x6eab 溫 + 171,110,37,38,124,40,2,252,1,0,0,0,0,0,0,0,0,0,3,224,0,0,0,0,0,0,0,0,15,254,0,63,255,255,255,255,64,0,15,255,208,63,255,255,255,255,64,0,1,255,244,63,255,255,255,255,64,0,0,31,240,63,128,9,0,63,64,0,0,3,192,63,128,47,0,63,64,0,0,0,64,63,128,63,0,63,64,0,0,0,0,63,128,126,0,63,64,0,0,0,0,63,128,255,128,63,64,0,0,0,0,63,130,255,224,63,64,0,20,0,0,63,135,242,248,63,64,0,127,64,0,63,175,192,190,63,64,0,255,244,0,63,159,0,45,63,64,0,191,254,0,63,132,0,0,63,64,0,11,255,0,63,255,255,255,255,64,0,0,254,0,63,255,255,255,255,64,0,0,44,0,63,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,255,255,240,0,0,6,1,255,255,255,255,255,240,0,0,15,129,255,255,255,255,255,240,0,0,31,225,252,15,192,188,11,240,0,0,63,193,252,15,192,188,11,240,0,0,127,129,252,15,192,188,11,240,0,0,255,1,252,15,192,188,11,240,0,1,255,1,252,15,192,188,11,240,0,3,253,1,252,15,192,188,11,240,0,7,252,1,252,15,192,188,11,240,0,15,244,1,252,15,192,188,11,240,0,31,240,1,252,15,192,188,11,240,0,63,208,191,255,255,255,255,255,255,64,127,192,191,255,255,255,255,255,255,64,47,64,191,255,255,255,255,255,255,64,3,0,21,85,85,85,85,85,85,0,0,0,0,0,0,0,0,0,0,0, + // 0x6fc0 激 + 192,111,37,38,124,40,2,252,1,0,0,6,144,0,25,64,0,0,7,208,0,11,244,0,47,192,0,0,31,248,0,15,240,0,63,128,0,0,31,255,64,15,224,0,63,128,0,0,2,255,218,175,250,164,63,64,0,0,0,63,207,255,255,244,127,0,0,0,0,11,15,255,255,244,127,0,0,0,0,0,15,192,2,244,191,0,0,0,0,0,15,192,2,244,255,255,255,64,0,0,15,234,171,244,255,255,255,64,0,0,15,255,255,245,255,255,255,64,40,0,15,255,255,246,253,87,249,0,127,64,15,192,2,247,252,3,244,0,255,244,15,192,2,255,252,3,244,0,127,253,15,192,2,255,252,3,240,0,7,254,15,255,255,255,253,7,240,0,0,252,15,255,255,255,254,7,240,0,0,32,10,175,250,191,190,11,224,0,0,0,0,11,224,15,47,11,224,0,0,0,0,11,224,1,31,15,208,0,0,0,191,255,255,255,31,143,192,0,0,0,191,255,255,255,15,223,192,0,0,36,191,255,255,255,15,239,128,0,0,62,0,190,0,0,7,255,64,0,0,63,64,126,0,0,3,255,0,0,0,191,0,190,0,0,3,254,0,0,0,255,0,191,255,240,2,253,0,0,1,253,0,191,255,240,2,252,0,0,2,252,0,255,255,240,3,254,0,0,3,252,1,252,3,240,11,255,64,0,11,244,2,252,7,240,31,255,192,0,15,240,3,248,7,240,63,223,224,0,31,224,15,240,7,240,255,11,248,0,63,192,47,224,11,227,253,3,254,0,127,192,191,203,255,239,248,1,255,128,127,66,255,3,255,239,224,0,127,0,11,0,252,3,255,75,128,0,28,0,0,0,32,0,0,1,0,0,0,0, + // 0x7121 無 + 33,113,36,38,86,40,2,252,0,0,144,0,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,7,252,0,0,0,0,0,0,0,15,244,0,0,0,0,0,0,0,47,245,85,85,85,85,85,80,0,127,255,255,255,255,255,255,244,1,255,255,255,255,255,255,255,244,3,255,255,255,255,255,255,255,244,15,255,192,63,0,252,3,244,0,127,255,192,63,0,252,3,244,0,255,223,192,63,0,252,3,244,0,47,31,192,63,0,252,3,244,0,8,31,192,63,0,252,3,244,0,0,31,192,63,0,252,3,244,0,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,85,111,213,191,86,253,87,249,85,0,31,192,63,0,252,3,244,0,0,31,192,63,0,252,3,244,0,0,31,192,63,0,252,3,244,0,0,31,192,63,0,252,3,244,0,0,31,192,63,0,252,3,244,0,0,31,192,63,0,252,3,244,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,21,85,85,85,85,85,85,85,84,0,0,0,0,0,0,0,4,0,0,190,0,20,0,24,0,191,0,0,255,1,252,0,254,0,255,128,2,253,0,253,0,255,0,63,208,3,252,0,254,0,127,64,47,240,11,248,0,255,0,63,128,15,248,31,240,0,191,0,63,192,3,253,127,208,0,191,0,47,192,2,255,191,128,0,191,0,31,208,0,255,6,0,0,16,0,4,0,0,160, + // 0x71b1 熱 + 177,113,37,38,124,40,2,252,0,1,168,0,0,7,240,0,0,0,0,1,252,0,0,7,240,0,0,0,0,1,252,0,0,7,240,0,0,0,15,255,255,255,128,7,240,0,0,0,15,255,255,255,128,7,240,0,0,0,10,171,254,170,65,91,245,85,0,0,0,1,252,0,7,255,255,255,64,0,0,1,252,0,7,255,255,255,64,0,127,255,255,255,231,255,255,255,64,0,127,255,255,255,224,11,224,63,64,0,106,191,175,234,160,11,224,63,64,0,0,126,11,192,0,11,224,63,64,0,0,253,11,192,211,143,224,63,64,0,2,252,11,193,247,255,208,63,64,0,111,240,7,255,255,255,208,63,64,0,255,192,171,255,210,255,192,63,64,0,62,1,252,85,0,127,244,63,64,0,0,1,252,0,0,47,253,63,64,0,26,171,254,170,128,63,255,191,64,0,47,255,255,255,128,127,191,127,74,0,47,255,255,255,128,191,31,63,75,192,0,1,252,0,0,254,5,63,75,192,0,1,252,0,2,252,0,63,75,192,0,1,252,86,167,248,0,63,75,128,21,171,255,255,255,240,0,63,79,128,255,255,255,255,255,208,0,63,255,128,191,255,255,169,127,128,0,47,255,0,190,149,0,0,14,0,0,11,249,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,25,0,0,0,255,1,188,1,253,0,255,0,0,1,254,1,252,0,254,0,127,192,0,3,252,0,253,0,191,0,63,224,0,11,248,0,254,0,127,64,15,244,0,31,240,0,254,0,63,192,7,252,0,127,208,0,255,0,63,192,3,254,0,191,128,0,254,0,47,128,0,254,0,6,0,0,0,0,0,0,0,80,0, + // 0x71c8 燈 + 200,113,38,38,124,40,1,252,0,0,0,0,0,0,25,0,0,0,0,11,224,0,0,0,127,3,64,0,0,11,224,3,255,254,63,11,224,0,0,11,224,3,255,255,47,175,208,0,0,11,224,3,255,255,15,255,64,0,0,11,224,0,0,189,15,248,4,0,0,11,224,145,192,252,7,240,47,64,0,11,225,255,246,248,3,252,191,128,6,75,227,251,255,240,0,255,253,0,11,203,227,240,191,224,0,127,224,0,11,203,235,208,63,192,0,63,208,0,15,203,255,192,255,255,255,255,248,0,15,139,255,3,255,255,255,251,254,0,15,139,234,15,245,255,255,245,255,208,31,75,224,127,224,0,0,0,127,224,47,11,225,255,128,0,0,0,15,192,63,15,224,189,0,0,0,0,2,0,126,15,224,32,191,255,255,255,240,0,124,15,224,0,191,255,255,255,240,0,4,15,208,0,191,255,255,255,240,0,0,15,208,0,190,0,0,11,240,0,0,15,208,0,190,0,0,11,240,0,0,15,192,0,190,0,0,11,240,0,0,31,208,0,190,0,0,11,240,0,0,47,240,0,191,255,255,255,240,0,0,47,252,0,191,255,255,255,240,0,0,63,254,0,191,255,255,255,224,0,0,127,255,64,1,128,0,101,0,0,0,191,63,192,15,208,0,191,0,0,0,254,15,240,11,240,0,254,0,0,1,253,11,244,3,244,1,253,0,0,3,252,3,240,3,248,2,252,0,0,11,244,1,192,2,252,3,244,0,0,31,240,0,0,1,224,1,176,0,0,63,208,0,63,255,255,255,255,255,192,63,128,0,63,255,255,255,255,255,192,15,0,0,63,255,255,255,255,255,192,4,0,0,0,0,0,0,0,0,0, + // 0x7247 片 + 71,114,34,38,86,40,2,252,0,0,0,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,192,0,1,253,0,0,0,0,63,255,255,255,255,255,255,224,0,63,255,255,255,255,255,255,240,0,63,255,255,255,255,255,255,240,0,63,255,255,255,255,255,255,240,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,63,255,255,255,255,255,64,0,0,127,255,255,255,255,255,64,0,0,191,255,255,255,255,255,64,0,0,191,255,255,255,255,255,64,0,0,255,0,0,0,0,191,64,0,0,255,0,0,0,0,191,64,0,0,255,0,0,0,0,191,64,0,2,254,0,0,0,0,191,64,0,3,253,0,0,0,0,191,64,0,7,252,0,0,0,0,191,64,0,11,248,0,0,0,0,191,64,0,15,244,0,0,0,0,191,64,0,63,240,0,0,0,0,191,64,0,191,208,0,0,0,0,191,64,0,255,192,0,0,0,0,191,64,0,191,0,0,0,0,0,191,64,0,45,0,0,0,0,0,191,64,0,8,0,0,0,0,0,191,64,0, + // 0x7269 物 + 105,114,37,38,124,40,1,252,0,0,252,0,0,148,0,0,0,0,0,0,252,0,1,253,0,0,0,0,1,0,252,0,2,252,0,0,0,0,7,240,252,0,3,248,0,0,0,0,11,224,252,0,3,244,0,0,0,0,11,224,252,0,7,240,0,0,0,0,15,208,252,0,11,240,0,0,0,0,15,208,252,0,15,255,255,255,255,192,15,234,254,164,31,255,255,255,255,192,15,255,255,252,63,255,255,255,255,192,31,255,255,252,127,151,249,127,191,192,47,255,255,252,255,3,240,63,47,192,47,64,252,1,253,7,224,127,47,192,63,0,252,3,252,15,208,190,47,192,127,0,252,15,244,15,192,253,63,128,190,0,252,31,240,47,193,252,63,128,45,0,252,11,192,63,66,252,63,128,4,0,252,2,64,127,3,248,63,128,0,0,252,5,0,254,3,244,63,64,0,0,254,254,1,252,11,240,63,64,0,1,255,254,3,248,15,224,63,64,0,127,255,254,11,240,31,192,63,64,47,255,255,144,31,224,47,192,127,0,63,255,252,0,63,192,63,64,127,0,63,250,252,0,255,64,191,0,127,0,46,64,252,3,254,0,254,0,191,0,0,0,252,11,252,2,252,0,191,0,0,0,252,2,240,3,248,0,255,0,0,0,252,0,64,15,240,0,254,0,0,0,252,0,0,31,224,0,254,0,0,0,252,0,0,63,192,1,253,0,0,0,252,0,0,255,64,2,252,0,0,0,252,0,3,254,0,3,252,0,0,0,252,0,15,252,0,11,252,0,0,0,252,0,63,240,31,255,244,0,0,0,252,0,47,208,15,255,240,0,0,0,252,0,7,0,15,255,192,0,0,0,252,0,0,0,6,164,0,0, + // 0x7387 率 + 135,115,36,38,86,40,2,252,0,0,0,0,169,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,5,85,85,85,255,85,85,85,80,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,31,255,255,255,255,255,255,255,248,0,0,0,7,244,0,0,0,0,1,0,0,15,224,0,0,7,64,11,224,0,47,192,36,0,31,240,31,252,2,127,0,191,0,127,208,7,255,75,253,1,253,2,255,64,0,191,239,252,7,244,15,252,0,0,31,210,255,79,224,31,224,0,0,7,0,127,255,128,1,64,0,0,0,0,31,255,28,0,0,0,0,0,0,3,252,191,11,64,0,0,1,240,7,240,63,191,240,0,0,31,244,31,192,31,255,254,0,6,255,248,127,255,255,242,255,208,191,255,175,255,255,255,244,127,248,127,248,31,255,255,234,252,11,253,63,64,30,149,64,0,252,1,244,4,0,0,0,255,0,80,0,16,0,0,0,0,255,0,0,0,0,85,85,85,85,255,85,85,85,85,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0, + // 0x7528 用 + 40,117,35,35,59,40,1,252,0,63,255,255,255,255,255,255,248,0,63,255,255,255,255,255,255,248,0,63,255,255,255,255,255,255,248,0,63,234,170,191,234,170,171,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,213,85,127,229,85,91,248,0,63,255,255,255,255,255,255,248,0,63,255,255,255,255,255,255,248,0,63,255,255,255,255,255,255,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,128,0,47,192,0,3,248,0,63,255,255,255,255,255,255,248,0,63,255,255,255,255,255,255,248,0,127,255,255,255,255,255,255,248,0,127,170,170,191,234,170,171,248,0,191,0,0,47,192,0,3,248,0,255,0,0,47,192,0,3,248,0,254,0,0,47,192,0,3,248,1,253,0,0,47,192,0,3,248,3,252,0,0,47,192,0,3,248,3,252,0,0,47,192,0,3,248,11,244,0,0,47,192,0,3,248,15,240,0,0,47,192,0,7,248,63,224,0,0,47,192,255,255,244,127,192,0,0,47,192,127,255,240,31,64,0,0,47,192,63,255,208,6,0,0,0,5,64,42,84,0, + // 0x754c 界 + 76,117,36,37,77,40,2,251,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,0,3,254,0,127,208,0,0,0,0,15,252,0,31,244,0,0,0,0,127,240,0,11,254,0,0,0,2,255,192,0,2,255,208,0,0,31,255,0,0,0,127,253,0,1,255,253,80,0,6,191,255,208,47,255,223,240,0,7,250,255,255,255,254,15,240,0,7,244,63,254,63,244,15,240,0,7,244,7,252,14,0,15,240,0,7,244,0,32,0,0,15,240,0,7,244,0,0,0,0,31,224,0,7,244,0,0,0,0,63,208,0,7,244,0,0,0,0,191,192,0,7,244,0,0,0,2,255,128,0,7,244,0,0,0,15,255,0,0,7,244,0,0,1,191,252,0,0,7,244,0,0,3,255,240,0,0,7,244,0,0,0,255,64,0,0,7,244,0,0,0,56,0,0,0,6,164,0,0,0,0,0,0,0,0,0,0,0, + // 0x767d 白 + 125,118,30,38,48,40,5,252,0,0,0,249,64,0,0,0,0,0,0,255,192,0,0,0,0,0,1,255,64,0,0,0,0,0,2,255,0,0,0,0,0,0,3,253,0,0,0,0,0,0,7,252,0,0,0,0,106,170,175,254,170,170,170,144,127,255,255,255,255,255,255,208,127,255,255,255,255,255,255,208,127,255,255,255,255,255,255,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,255,255,255,255,255,255,208,127,255,255,255,255,255,255,208,127,255,255,255,255,255,255,208,127,234,170,170,170,170,191,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,234,170,170,170,170,191,208,127,255,255,255,255,255,255,208,127,255,255,255,255,255,255,208,127,255,255,255,255,255,255,208,127,64,0,0,0,0,31,208,127,64,0,0,0,0,31,208,127,0,0,0,0,0,26,144, + // 0x7684 的 + 132,118,34,38,86,40,3,252,0,10,144,0,0,100,0,0,0,0,15,240,0,0,191,0,0,0,0,15,240,0,0,255,0,0,0,0,31,208,0,1,253,0,0,0,0,47,192,0,2,252,0,0,0,0,63,128,0,3,252,0,0,0,0,127,128,0,7,253,85,85,80,191,255,255,248,11,255,255,255,240,191,255,255,248,15,255,255,255,240,191,255,255,248,31,255,255,255,240,191,0,2,248,63,192,0,7,240,191,0,2,248,127,128,0,7,240,191,0,2,248,255,0,0,7,240,191,0,2,250,254,0,0,7,240,191,0,2,255,252,0,0,7,240,191,0,2,249,244,0,0,11,240,191,0,2,248,48,112,0,11,240,191,0,2,248,2,248,0,11,240,191,255,255,248,2,253,0,11,240,191,255,255,248,0,255,0,11,224,191,255,255,248,0,127,192,15,224,191,0,3,248,0,47,224,15,224,191,0,2,248,0,15,240,15,224,191,0,2,248,0,7,252,15,224,191,0,2,248,0,3,253,15,208,191,0,2,248,0,1,253,15,208,191,0,2,248,0,0,224,15,208,191,0,2,248,0,0,0,31,208,191,0,2,248,0,0,0,31,192,191,0,2,248,0,0,0,47,192,191,255,255,248,0,0,0,47,192,191,255,255,248,0,0,0,63,192,191,255,255,248,0,0,0,63,128,191,85,85,80,0,0,0,255,64,191,0,0,0,0,63,255,255,0,191,0,0,0,0,31,255,253,0,105,0,0,0,0,15,255,244,0,0,0,0,0,0,5,85,0,0, + // 0x76e3 監 + 227,118,36,37,77,40,2,253,0,0,0,0,0,1,0,0,0,0,0,0,0,0,7,240,0,0,63,255,255,255,240,11,224,0,0,63,255,255,255,240,15,208,0,0,63,255,255,255,240,31,192,0,0,63,128,126,0,0,47,128,0,0,63,128,126,0,0,63,255,255,254,63,255,255,255,208,127,255,255,254,63,255,255,255,208,255,255,255,254,63,213,85,95,209,252,0,0,0,63,128,0,11,211,248,0,0,0,63,128,0,11,219,240,0,0,0,63,128,0,11,239,224,0,0,0,63,255,255,255,215,192,0,0,0,63,255,255,255,208,64,0,0,0,63,213,191,85,64,0,0,0,0,63,128,126,0,0,63,255,255,248,63,128,126,0,0,63,255,255,248,63,255,255,255,244,63,255,255,248,63,255,255,255,248,0,0,0,0,63,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,190,0,254,0,254,0,255,0,0,190,0,254,0,254,0,255,0,0,190,0,254,0,254,0,255,0,0,190,0,254,0,254,0,255,0,0,190,0,254,0,254,0,255,0,0,190,0,254,0,254,0,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,85,85,85,85,85,85,85,85,85, + // 0x76f4 直 + 244,118,36,38,86,40,2,252,0,0,0,0,127,192,0,0,0,0,0,0,0,127,192,0,0,0,0,0,0,0,127,128,0,0,0,21,85,85,85,191,213,85,85,84,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,127,255,255,255,255,255,255,255,254,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,15,255,255,255,255,252,0,7,240,15,255,255,255,255,252,0,7,240,15,250,170,170,171,252,0,7,240,15,224,0,0,1,252,0,7,240,15,224,0,0,1,252,0,7,240,15,250,170,170,171,252,0,7,240,15,255,255,255,255,252,0,7,240,15,255,255,255,255,252,0,7,240,15,224,0,0,1,252,0,7,240,15,224,0,0,1,252,0,7,240,15,224,0,0,1,252,0,7,240,15,255,255,255,255,252,0,7,240,15,255,255,255,255,252,0,7,240,15,250,170,170,170,252,0,7,240,15,224,0,0,1,252,0,7,240,15,224,0,0,1,252,0,7,240,15,250,170,170,171,252,0,7,240,15,255,255,255,255,252,0,7,240,15,255,255,255,255,252,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0,7,249,85,85,85,85,85,85,85,7,255,255,255,255,255,255,255,255,7,255,255,255,255,255,255,255,255,7,255,255,255,255,255,255,255,255,7,240,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,0, + // 0x7720 眠 + 32,119,36,36,68,40,3,252,255,255,254,3,255,255,255,255,240,255,255,254,3,255,255,255,255,240,255,255,254,3,255,255,255,255,240,254,85,254,3,249,85,85,91,240,253,0,254,3,244,0,0,7,240,253,0,254,3,244,0,0,7,240,253,0,254,3,244,0,0,7,240,253,0,254,3,244,0,0,7,240,253,0,254,3,249,85,85,91,240,255,255,254,3,255,255,255,255,240,255,255,254,3,255,255,255,255,240,255,255,254,3,255,255,255,255,240,253,0,254,3,244,1,252,0,0,253,0,254,3,244,0,253,0,0,253,0,254,3,244,0,253,0,0,253,0,254,3,244,0,253,0,0,253,0,254,3,244,0,253,0,0,255,255,254,3,255,255,255,255,252,255,255,254,3,255,255,255,255,252,255,255,254,3,255,255,255,255,252,253,0,254,3,249,85,255,85,84,253,0,254,3,244,0,127,0,0,253,0,254,3,244,0,127,0,0,253,0,254,3,244,0,63,64,0,253,0,254,3,244,0,63,128,0,254,85,254,3,244,0,63,192,0,255,255,254,3,244,0,47,192,16,255,255,254,3,244,0,31,208,61,255,255,254,3,244,0,15,224,63,253,0,0,3,244,22,219,240,63,253,0,0,3,255,255,211,244,63,253,0,1,191,255,255,227,253,126,84,0,2,255,255,255,144,255,253,0,0,1,255,254,64,0,191,252,0,0,0,249,64,0,0,47,244,0,0,0,0,0,0,0,1,64, + // 0x780d 砍 + 13,120,38,38,124,40,1,252,0,0,0,0,1,164,0,0,0,0,0,0,0,0,2,253,0,0,0,0,21,85,85,85,2,252,0,0,0,0,63,255,255,255,131,252,0,0,0,0,63,255,255,255,131,252,0,0,0,0,63,255,255,255,131,248,0,0,0,0,0,31,192,0,7,244,0,0,0,0,0,47,192,0,11,249,85,85,89,0,0,63,128,0,15,255,255,255,255,208,0,63,64,0,15,255,255,255,255,192,0,63,64,0,31,255,255,255,255,192,0,127,0,0,63,192,253,0,63,128,0,191,0,0,63,192,253,0,127,64,0,254,0,0,127,128,253,0,191,0,0,254,0,0,255,0,253,0,255,0,1,255,255,253,255,0,253,0,254,0,2,255,255,255,253,0,253,0,253,0,3,255,255,255,252,0,253,2,252,0,7,252,1,252,244,1,253,2,248,0,15,252,1,252,16,1,254,0,36,0,31,252,1,252,0,2,254,0,0,0,63,252,1,252,0,2,255,0,0,0,127,252,1,252,0,3,255,0,0,0,191,252,1,252,0,7,255,64,0,0,62,252,1,252,0,11,239,192,0,0,28,252,1,252,0,15,223,208,0,0,4,252,1,252,0,47,203,240,0,0,0,252,1,252,0,63,135,244,0,0,0,253,85,252,0,191,3,252,0,0,0,255,255,252,1,254,1,254,0,0,0,255,255,252,7,252,0,255,128,0,0,255,255,252,31,244,0,63,224,0,0,252,0,0,127,224,0,47,248,0,0,252,0,2,255,192,0,11,255,64,0,252,0,31,255,0,0,3,255,208,0,168,0,15,248,0,0,0,191,192,0,0,0,7,224,0,0,0,31,64,0,0,0,2,0,0,0,0,2,0, + // 0x78ba 確 + 186,120,38,38,124,40,1,252,0,0,0,0,0,0,169,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,254,0,0,0,63,255,255,253,0,1,253,0,0,0,63,255,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,255,192,21,127,213,87,255,255,255,255,255,192,0,63,192,3,244,31,224,0,31,192,0,63,128,3,244,47,192,16,15,192,0,63,64,3,244,63,128,191,15,192,0,127,0,3,244,191,0,254,15,192,0,127,0,0,1,254,1,252,0,0,0,191,0,0,3,252,2,248,0,0,0,254,0,0,11,255,255,255,255,0,0,254,0,0,47,255,255,255,255,0,1,255,255,244,191,255,255,255,255,0,2,255,255,246,255,224,15,224,0,0,3,255,255,255,255,224,11,224,0,0,7,252,2,255,255,224,11,224,0,0,15,252,2,246,255,224,11,224,0,0,15,252,2,244,79,255,255,255,253,0,47,252,2,244,15,255,255,255,253,0,63,252,2,244,15,255,255,255,253,0,255,252,2,244,15,224,11,224,0,0,191,252,2,244,15,224,11,224,0,0,61,252,2,244,15,224,11,224,0,0,24,252,2,244,15,255,255,255,253,0,0,252,2,244,15,255,255,255,253,0,0,252,2,244,15,255,255,255,253,0,0,252,3,244,15,224,11,224,0,0,0,255,255,244,15,224,11,224,0,0,0,255,255,244,15,224,11,224,0,0,0,255,255,244,15,224,11,224,0,0,0,252,0,0,15,255,255,255,255,208,0,252,0,0,15,255,255,255,255,208,0,252,0,0,15,255,255,255,255,208,0,0,0,0,15,224,0,0,0,0,0,0,0,0,15,208,0,0,0,0, + // 0x79fb 移 + 251,121,37,38,124,40,1,252,0,0,0,0,0,0,148,0,0,0,0,0,2,224,0,2,254,0,0,0,0,1,191,248,0,3,252,0,0,0,1,191,255,253,0,15,244,0,0,0,63,255,255,228,0,63,255,255,248,0,63,255,252,0,0,255,255,255,252,0,31,151,248,0,7,255,255,255,248,0,0,3,248,0,47,248,0,15,240,0,0,3,248,1,255,248,0,47,224,0,0,3,248,7,255,255,64,127,192,0,0,3,248,2,252,191,209,255,64,0,42,171,254,168,144,31,255,253,0,0,63,255,255,253,0,3,255,244,0,0,63,255,255,253,0,1,255,208,0,0,63,255,255,253,0,11,255,64,0,0,0,11,248,0,0,191,253,0,0,0,0,15,252,0,111,255,255,224,0,0,0,31,253,2,255,253,63,192,0,0,0,63,255,128,255,208,255,64,0,0,0,127,255,224,120,2,255,255,255,64,0,255,255,244,0,11,255,255,255,192,1,255,250,253,0,63,255,255,255,192,3,247,248,255,1,255,192,0,191,64,7,243,248,60,11,255,0,0,255,0,15,211,248,36,127,255,64,3,253,0,63,195,248,2,255,255,224,11,252,0,127,131,248,0,255,31,252,31,240,0,127,3,248,0,52,3,255,127,224,0,61,3,248,0,0,0,255,255,128,0,24,3,248,0,0,0,47,255,0,0,0,3,248,0,0,0,63,248,0,0,0,3,248,0,0,2,255,224,0,0,0,3,248,0,0,111,255,64,0,0,0,3,248,0,27,255,252,0,0,0,0,3,248,7,255,255,208,0,0,0,0,3,248,3,255,253,0,0,0,0,0,3,248,1,255,128,0,0,0,0,0,2,168,0,144,0,0,0,0,0, + // 0x7a4d 積 + 77,122,37,39,134,40,1,251,0,0,0,64,0,0,169,0,0,0,0,0,27,224,0,0,254,0,0,0,0,91,255,248,85,85,255,85,85,0,47,255,255,249,255,255,255,255,255,64,63,255,254,64,255,255,255,255,255,64,31,251,244,0,0,0,254,0,0,0,4,3,244,0,21,85,254,85,84,0,0,3,244,0,127,255,255,255,253,0,0,3,244,0,127,255,255,255,253,0,0,3,244,0,0,0,254,0,0,0,0,3,244,1,85,85,255,85,85,64,42,175,254,175,255,255,255,255,255,192,63,255,255,255,255,255,255,255,255,192,63,255,255,248,0,0,0,0,0,0,63,255,255,248,0,0,0,0,0,0,0,11,244,0,63,255,255,255,252,0,0,15,244,0,63,255,255,255,252,0,0,31,252,0,63,149,85,86,252,0,0,63,255,0,63,64,0,1,252,0,0,127,255,192,63,149,85,86,252,0,0,191,255,240,63,255,255,255,252,0,0,255,251,252,63,255,255,255,252,0,3,251,245,253,63,64,0,1,252,0,7,243,244,184,63,64,0,1,252,0,15,211,244,48,63,255,255,255,252,0,47,195,244,0,63,255,255,255,252,0,127,131,244,0,63,149,85,86,252,0,191,3,244,0,63,64,0,1,252,0,61,3,244,0,63,64,0,1,252,0,44,3,244,0,63,255,255,255,252,0,0,3,244,0,63,255,255,255,252,0,0,3,244,0,21,121,85,109,84,0,0,3,244,0,1,253,0,127,0,0,0,3,244,0,31,255,0,255,224,0,0,3,244,1,255,248,0,31,253,0,0,3,244,47,255,128,0,3,255,128,0,3,244,31,248,0,0,0,127,128,0,2,164,7,64,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0, + // 0x7aef 端 + 239,122,38,38,124,40,1,252,0,5,64,0,0,0,169,0,0,0,0,15,192,0,0,0,253,0,0,0,0,15,192,0,168,0,253,0,106,0,0,15,192,1,252,0,253,0,191,0,0,15,192,1,252,0,253,0,191,0,0,15,192,1,252,0,253,0,191,0,0,15,192,1,252,0,253,0,191,0,0,15,192,1,252,0,253,0,191,0,63,255,255,225,253,1,253,0,191,0,63,255,255,225,255,255,255,255,255,0,63,255,255,225,255,255,255,255,255,0,21,85,85,81,255,255,255,255,255,0,0,0,4,0,0,0,0,0,0,0,15,128,31,192,0,0,0,0,0,0,15,192,47,193,85,85,85,85,85,64,15,192,47,143,255,255,255,255,255,208,11,208,63,143,255,255,255,255,255,208,11,208,63,79,255,255,255,255,255,208,7,224,63,0,0,2,253,0,0,0,7,224,63,0,0,3,252,0,0,0,3,240,127,0,0,3,248,0,0,0,3,240,126,0,0,7,248,0,0,0,3,240,189,3,255,255,255,255,255,64,3,240,253,3,255,255,255,255,255,64,3,240,252,3,255,255,255,255,255,64,3,240,252,3,248,47,2,240,63,64,0,1,248,99,248,47,2,240,63,64,0,1,255,247,248,47,2,240,63,64,1,175,255,251,248,47,2,240,63,64,127,255,255,247,248,47,2,240,63,64,127,255,249,3,248,47,2,240,63,64,63,249,0,3,248,47,2,240,63,64,57,0,0,3,248,47,2,240,63,64,0,0,0,3,248,47,2,240,63,64,0,0,0,3,248,47,2,240,63,64,0,0,0,3,248,47,2,247,255,64,0,0,0,3,248,47,2,243,255,0,0,0,0,2,244,21,1,82,248,0, + // 0x7b49 等 + 73,123,37,38,124,40,1,252,0,15,144,0,0,15,144,0,0,0,0,31,224,0,0,47,208,0,0,0,0,63,192,0,0,63,192,0,0,0,0,127,255,255,248,191,255,255,255,128,0,255,255,255,249,255,255,255,255,128,3,255,255,255,251,255,255,255,255,128,11,252,191,0,15,248,47,208,0,0,31,240,63,64,63,240,15,240,0,0,127,224,63,192,63,192,7,244,0,0,63,192,31,192,47,192,3,248,0,0,11,0,8,0,63,192,1,128,0,0,0,0,0,0,63,192,0,0,0,0,0,63,255,255,255,255,255,255,208,0,0,63,255,255,255,255,255,255,208,0,0,63,255,255,255,255,255,255,208,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,63,255,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,255,192,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,192,0,0,11,255,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,255,0,11,255,255,255,255,255,255,255,255,0,0,0,47,0,0,0,63,192,0,0,0,0,191,192,0,0,63,192,0,0,0,0,127,244,0,0,63,192,0,0,0,0,15,253,0,0,63,192,0,0,0,0,3,255,0,0,63,192,0,0,0,0,0,255,192,0,63,192,0,0,0,0,0,63,65,85,191,192,0,0,0,0,0,28,3,255,255,128,0,0,0,0,0,0,1,255,255,0,0,0,0,0,0,0,0,255,232,0,0,0, + // 0x7ba1 管 + 161,123,36,39,95,40,2,251,0,62,0,0,0,57,0,0,0,0,127,64,0,0,255,64,0,0,0,255,0,0,1,255,0,0,0,2,255,255,255,211,255,255,255,255,7,255,255,255,219,255,255,255,255,15,255,255,255,255,255,255,255,255,63,226,252,0,191,192,127,192,0,255,192,254,2,255,64,47,208,0,191,0,191,0,254,0,15,240,0,28,0,56,0,254,0,7,144,0,0,0,0,0,254,0,0,0,0,47,255,255,255,255,255,255,255,252,47,255,255,255,255,255,255,255,252,47,255,255,255,255,255,255,255,252,47,128,0,0,0,0,0,2,252,47,128,0,0,0,0,0,2,252,47,128,0,0,0,0,0,2,252,47,131,255,255,255,255,255,194,252,47,131,255,255,255,255,255,194,252,0,3,255,255,255,255,255,192,0,0,3,248,0,0,0,47,192,0,0,3,248,0,0,0,47,192,0,0,3,254,170,170,170,191,192,0,0,3,255,255,255,255,255,192,0,0,3,255,255,255,255,255,192,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,0,0,0,3,255,255,255,255,255,255,0,0,3,255,255,255,255,255,255,0,0,3,255,255,255,255,255,255,0,0,3,248,0,0,0,0,255,0,0,3,248,0,0,0,0,255,0,0,3,248,0,0,0,0,255,0,0,3,255,255,255,255,255,255,0,0,3,255,255,255,255,255,255,0,0,3,255,255,255,255,255,255,0,0,3,248,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0, + // 0x7bb1 箱 + 177,123,37,38,124,40,1,252,0,10,64,0,0,14,64,0,0,0,0,15,240,0,0,31,224,0,0,0,0,31,208,0,0,63,192,0,0,0,0,63,192,0,0,63,192,0,0,0,0,127,255,255,248,191,255,255,255,192,0,255,255,255,249,255,255,255,255,192,1,255,255,255,251,255,255,255,255,192,3,252,191,64,11,252,63,208,0,0,15,244,63,128,31,240,15,240,0,0,47,240,47,192,127,208,7,244,0,0,127,192,15,208,63,128,3,252,0,0,15,64,15,64,11,0,1,224,0,0,1,0,191,0,0,0,0,0,0,0,0,0,191,0,3,255,255,255,254,0,0,0,191,0,3,255,255,255,254,0,0,0,191,0,3,255,255,255,254,0,31,255,255,255,227,249,85,85,254,0,31,255,255,255,227,244,0,0,254,0,31,255,255,255,227,244,0,0,254,0,5,87,255,85,83,244,0,0,254,0,0,3,255,0,3,255,255,255,254,0,0,7,255,128,3,255,255,255,254,0,0,15,255,240,3,255,255,255,254,0,0,47,255,252,3,244,0,0,254,0,0,63,255,255,3,244,0,0,254,0,0,191,255,191,195,244,0,0,254,0,1,254,191,47,243,255,255,255,254,0,3,252,191,15,211,255,255,255,254,0,15,244,191,3,131,255,255,255,254,0,63,224,191,1,3,244,0,0,254,0,127,192,191,0,3,244,0,0,254,0,47,64,191,0,3,244,0,0,254,0,13,0,191,0,3,244,0,0,254,0,0,0,191,0,3,255,255,255,254,0,0,0,191,0,3,255,255,255,254,0,0,0,191,0,3,255,255,255,254,0,0,0,191,0,3,244,0,0,254,0,0,0,190,0,2,164,0,0,85,0, + // 0x7cfb 系 + 251,124,36,38,86,40,2,252,0,0,0,0,0,0,0,4,0,0,0,0,0,0,1,107,253,0,0,1,85,170,191,255,255,255,0,31,255,255,255,255,255,255,255,192,15,255,255,255,255,255,254,144,0,15,255,255,255,249,80,0,0,0,5,80,0,255,192,0,0,0,0,0,0,2,255,64,1,208,0,0,0,0,7,253,0,7,253,0,0,0,0,31,248,0,15,252,0,0,0,56,63,224,0,63,240,0,0,0,255,255,128,0,255,192,0,0,1,255,254,0,3,255,0,0,0,0,63,253,0,15,252,0,0,0,0,11,255,128,127,240,0,0,0,0,1,255,225,255,192,4,0,0,0,0,63,255,255,0,47,0,0,0,0,15,255,248,0,255,192,0,0,0,2,255,224,0,63,244,0,0,0,2,255,64,0,15,253,0,0,0,15,253,0,0,3,255,64,85,85,127,254,255,255,255,255,208,191,255,255,255,255,255,255,255,244,191,255,255,255,255,255,255,255,252,127,255,255,255,255,170,165,87,255,21,85,0,0,255,0,0,1,254,0,0,0,0,255,0,0,0,180,0,0,244,0,255,0,62,0,0,0,3,255,0,255,1,255,192,0,0,15,252,0,255,0,191,244,0,0,63,244,0,255,0,31,253,0,1,255,208,0,255,0,7,255,128,11,255,64,0,255,0,0,255,240,63,253,0,0,255,0,0,63,252,255,240,0,0,255,0,0,15,254,63,192,0,0,255,0,0,3,248,14,0,0,0,255,0,0,0,208,0,0,0,0,254,0,0,0,0, + // 0x7d05 紅 + 5,125,38,38,124,40,1,252,0,1,144,0,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,0,11,244,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,47,192,16,26,170,170,170,170,64,0,63,128,253,47,255,255,255,255,128,13,255,1,255,47,255,255,255,255,128,47,252,3,252,47,255,255,255,255,128,63,244,11,248,0,0,63,192,0,0,31,248,31,240,0,0,63,192,0,0,7,253,63,192,0,0,63,192,0,0,0,255,255,64,0,0,63,192,0,0,0,127,254,0,0,0,63,192,0,0,0,31,252,9,0,0,63,192,0,0,0,15,244,127,0,0,63,192,0,0,0,47,224,63,128,0,63,192,0,0,0,127,192,31,208,0,63,192,0,0,21,255,65,95,240,0,63,192,0,0,127,255,255,255,244,0,63,192,0,0,127,255,255,255,252,0,63,192,0,0,63,255,255,254,254,0,63,192,0,0,0,0,254,0,190,0,63,192,0,0,0,0,254,0,48,0,63,192,0,0,0,0,254,0,0,0,63,192,0,0,3,224,254,47,64,0,63,192,0,0,7,240,254,47,192,0,63,192,0,0,11,240,254,31,208,0,63,192,0,0,11,240,254,15,224,0,63,192,0,0,15,224,254,11,240,0,63,192,0,0,15,208,254,3,244,0,63,192,0,0,47,192,254,3,248,0,63,192,0,0,63,192,254,2,252,0,63,192,0,0,127,64,254,1,208,0,63,192,0,0,127,0,254,0,255,255,255,255,255,208,6,0,254,0,255,255,255,255,255,208,0,0,254,0,255,255,255,255,255,208,0,0,254,0,170,170,170,170,170,128,0,0,254,0,0,0,0,0,0,0, + // 0x7d22 索 + 34,125,35,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,5,85,85,85,255,85,85,85,80,63,255,255,255,255,255,255,255,248,63,255,255,255,255,255,255,255,248,63,255,255,255,255,255,255,255,248,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,255,255,255,255,255,255,255,252,63,128,0,47,224,0,0,2,252,63,128,0,127,208,0,0,2,252,63,128,1,255,64,7,64,2,252,63,129,11,253,0,47,240,2,252,63,139,239,240,0,191,224,2,252,0,47,255,192,3,255,64,0,0,0,11,255,64,31,253,0,0,0,0,1,255,224,191,240,36,0,0,0,0,47,254,255,128,254,0,0,0,0,7,255,253,1,255,192,0,0,0,1,255,224,0,63,244,0,0,0,11,255,64,0,11,254,0,63,255,255,255,255,255,255,255,192,63,255,255,255,255,255,255,255,240,63,255,255,255,255,255,255,255,252,21,85,16,0,255,0,0,2,244,0,0,121,0,254,0,56,0,64,0,2,255,64,254,2,255,64,0,0,15,253,0,254,1,255,244,0,0,191,244,0,254,0,31,254,0,11,255,192,0,254,0,2,255,208,191,254,0,0,254,0,0,127,248,127,240,0,0,254,0,0,11,252,15,64,0,0,254,0,0,1,224,0,0,0,0,254,0,0,0,0, + // 0x7d2b 紫 + 43,125,36,38,86,40,2,252,0,0,127,0,1,168,0,0,0,0,0,127,0,1,252,0,0,0,0,0,127,0,1,252,0,2,64,11,208,127,0,1,252,0,111,208,11,224,127,255,241,252,27,255,244,11,224,127,255,241,255,255,255,208,11,224,127,255,241,255,255,244,0,11,224,127,0,1,255,249,0,0,11,224,127,0,1,253,0,0,0,11,224,127,0,1,252,0,0,120,11,224,127,0,81,252,0,0,127,11,224,191,255,241,253,0,0,255,95,255,255,255,241,255,255,255,254,255,255,255,255,160,255,255,255,252,255,255,233,79,144,47,255,255,244,250,80,0,63,240,0,0,0,0,0,0,0,255,192,2,64,0,0,0,1,3,254,0,31,244,0,0,0,31,239,248,0,127,240,0,0,0,127,255,208,2,255,128,0,0,0,31,255,192,15,253,0,0,0,0,1,255,244,127,240,31,64,0,0,0,31,255,255,128,127,224,0,0,0,2,255,252,0,15,252,0,0,0,1,255,224,0,3,255,0,255,255,255,255,255,255,255,255,208,255,255,255,255,255,255,255,255,244,255,255,255,255,255,255,255,255,253,85,85,80,0,255,0,0,2,255,0,0,0,0,255,0,4,0,248,0,1,253,0,255,0,127,0,0,0,7,255,0,255,1,255,224,0,0,63,248,0,255,0,63,253,0,2,255,224,0,255,0,7,255,128,47,255,64,0,255,0,0,191,244,127,248,0,0,255,0,0,31,253,31,192,0,0,255,0,0,3,240,1,0,0,0,254,0,0,0,64, + // 0x7d30 細 + 48,125,36,38,86,40,1,252,0,6,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,47,192,0,21,85,85,85,85,0,63,64,0,63,255,255,255,255,0,191,2,128,63,255,255,255,255,0,253,7,244,63,255,255,255,255,31,252,15,240,63,64,63,0,127,63,240,31,208,63,64,63,0,127,63,224,63,128,63,64,63,0,127,15,244,191,0,63,64,63,0,127,7,253,253,0,63,64,63,0,127,1,255,248,0,63,64,63,0,127,0,191,240,160,63,64,63,0,127,0,63,195,240,63,64,63,0,127,0,47,66,248,63,64,63,0,127,0,126,0,253,63,64,63,0,127,0,255,255,255,63,149,191,85,191,127,255,255,255,127,255,255,255,255,127,255,255,255,191,255,255,255,255,127,255,244,31,255,255,255,255,255,21,3,244,15,191,64,63,0,127,0,3,244,8,63,64,63,0,127,0,3,244,0,63,64,63,0,127,11,211,245,244,63,64,63,0,127,15,211,245,252,63,64,63,0,127,15,195,244,252,63,64,63,0,127,15,195,244,190,63,64,63,0,127,31,195,244,127,63,64,63,0,127,47,131,244,63,63,64,63,0,127,63,67,244,47,127,64,63,0,127,63,3,244,30,127,149,191,85,191,191,3,244,0,63,255,255,255,255,109,3,244,0,63,255,255,255,255,4,3,244,0,63,255,255,255,255,0,3,244,0,63,64,0,0,127,0,3,244,0,63,64,0,0,127,0,2,164,0,0,0,0,0,0, + // 0x7d42 終 + 66,125,38,39,134,40,1,251,0,6,0,0,0,14,80,0,0,0,0,15,224,0,0,47,208,0,0,0,0,31,208,0,0,63,192,0,0,0,0,47,192,0,0,191,64,0,0,0,0,63,64,0,0,255,255,255,224,0,0,190,7,144,3,255,255,255,252,0,4,252,15,240,11,255,255,255,248,0,31,248,31,208,31,244,0,31,240,0,63,240,63,128,63,248,0,31,224,0,63,224,127,0,255,253,0,63,192,0,15,244,254,3,254,255,0,191,64,0,3,254,252,15,248,63,194,254,0,0,1,255,244,11,240,31,231,252,0,0,0,191,225,66,192,11,255,244,0,0,0,63,207,192,0,3,255,208,0,0,0,63,75,224,0,2,255,192,0,0,0,190,3,240,0,11,255,224,0,0,1,252,2,244,0,63,255,252,0,0,191,255,255,252,1,255,231,255,64,0,127,255,255,252,31,255,64,255,244,0,127,255,255,255,255,252,0,63,255,64,20,7,240,63,255,208,0,11,255,224,0,3,240,52,254,3,208,0,191,192,0,3,240,80,96,15,253,0,11,0,11,211,243,240,0,11,255,192,0,0,15,211,242,244,0,0,191,248,0,0,15,195,241,248,0,0,15,253,0,0,15,195,240,252,0,0,1,248,0,0,31,195,240,189,0,0,0,32,0,0,47,131,240,126,3,144,0,0,0,0,63,67,240,63,15,254,64,0,0,0,63,3,240,36,31,255,248,0,0,0,191,3,240,0,1,191,255,144,0,0,125,3,240,0,0,7,255,253,0,0,4,3,240,0,0,0,111,255,208,0,0,3,240,0,0,0,2,255,240,0,0,3,240,0,0,0,0,47,208,0,0,3,240,0,0,0,0,2,128,0,0,0,0,0,0,0,0,0,0,0, + // 0x7d71 統 + 113,125,38,38,124,40,1,252,0,6,0,0,0,1,253,0,0,0,0,15,224,0,0,1,253,0,0,0,0,31,208,0,0,1,253,0,0,0,0,47,192,0,0,1,253,0,0,0,0,63,64,0,0,1,253,0,0,0,0,190,7,147,255,255,255,255,255,192,4,252,15,243,255,255,255,255,255,192,31,248,31,211,255,255,255,255,255,192,63,240,63,129,85,127,213,85,85,64,63,224,127,0,0,127,192,0,0,0,15,244,253,0,0,191,64,47,0,0,3,254,252,0,0,255,0,127,128,0,1,255,240,0,1,254,0,47,208,0,0,127,225,64,2,252,0,15,240,0,0,63,207,192,3,248,0,27,252,0,0,63,75,209,91,255,255,255,253,0,0,254,3,242,255,255,255,255,255,0,1,252,2,246,255,255,255,255,255,128,191,255,255,254,255,254,165,64,63,192,127,255,255,253,0,0,0,0,31,192,127,255,255,254,0,84,1,84,9,0,20,7,240,63,0,253,2,252,0,0,0,3,240,56,0,253,2,252,0,0,0,3,240,80,0,253,2,252,0,0,11,211,243,240,1,252,2,252,0,0,15,211,242,244,1,252,2,252,0,0,15,195,241,248,2,252,2,252,0,0,15,195,240,252,3,252,2,252,0,0,31,195,240,189,3,248,2,252,0,0,47,131,240,126,7,244,2,252,6,0,63,67,240,63,15,240,2,252,7,224,63,3,240,16,47,224,2,252,7,240,191,3,240,0,127,192,2,252,7,224,125,3,240,2,255,64,2,252,11,224,4,3,240,31,254,0,2,255,255,208,0,3,240,47,244,0,1,255,255,192,0,3,240,15,208,0,0,191,255,64,0,3,240,5,0,0,0,1,80,0, + // 0x7d72 絲 + 114,125,38,38,124,40,1,252,0,2,128,0,0,0,40,0,0,0,0,3,248,0,0,0,127,128,0,0,0,11,244,0,0,0,255,64,0,0,0,15,240,0,0,0,254,0,0,0,0,47,192,0,0,3,252,0,0,0,0,63,128,244,0,7,244,11,64,0,4,191,2,254,0,15,240,31,240,0,30,253,3,252,3,239,192,63,208,0,63,248,11,244,11,255,64,191,128,0,63,240,31,224,7,255,0,255,0,0,15,248,63,192,1,255,131,253,0,0,3,254,191,64,0,63,219,248,0,0,0,255,254,0,0,15,255,240,0,0,0,63,252,20,0,3,255,194,192,0,0,31,240,252,0,1,255,79,224,0,0,47,208,254,0,2,253,7,244,0,0,127,64,127,0,7,248,3,252,0,0,254,1,127,192,31,240,22,254,0,127,255,255,255,203,255,255,255,255,0,127,255,255,255,231,255,255,255,255,128,127,255,255,255,247,255,255,255,255,192,21,85,253,3,246,85,111,192,15,208,0,0,253,2,128,0,31,192,11,0,1,0,253,0,0,0,31,192,0,0,3,244,253,47,0,121,31,193,224,0,7,240,253,63,64,191,31,203,240,0,7,240,253,63,128,254,31,195,248,0,11,224,253,31,193,253,31,194,252,0,15,224,253,15,226,252,31,192,254,0,15,208,253,11,243,248,31,192,191,0,47,192,253,3,231,244,31,192,63,128,63,128,253,1,15,240,31,192,63,192,127,64,253,0,47,208,31,192,31,208,127,0,253,0,47,192,31,192,15,208,1,0,253,0,2,64,31,192,5,0,0,0,253,0,0,0,31,192,0,0,0,0,253,0,0,0,31,192,0,0,0,0,253,0,0,0,31,192,0,0, + // 0x7da0 綠 + 160,125,38,38,124,40,1,252,0,5,0,0,0,232,0,0,0,0,0,15,224,0,1,253,0,0,0,0,0,15,208,0,1,252,0,0,0,0,0,47,192,0,2,255,255,255,224,0,0,63,64,0,3,255,255,255,240,0,0,127,3,64,3,255,255,255,224,0,0,253,11,240,7,240,0,15,224,0,14,252,15,224,11,240,0,15,208,0,63,244,47,192,15,224,0,31,192,0,127,224,63,64,15,255,255,255,192,0,31,240,254,0,31,255,255,255,192,0,7,249,252,0,63,255,255,255,128,0,2,255,244,0,63,128,0,63,64,0,0,255,224,0,0,0,0,127,64,0,0,63,203,192,0,0,0,191,64,0,0,63,79,211,255,255,255,255,255,192,0,254,7,243,255,255,255,255,255,192,2,252,3,247,255,255,255,255,255,192,191,255,255,252,0,0,191,0,0,0,191,255,255,252,0,0,191,0,0,0,127,255,255,254,28,0,191,64,45,0,16,7,240,127,127,0,191,192,191,128,0,7,240,57,127,192,191,194,255,0,0,7,240,0,31,240,191,219,252,0,15,199,242,224,7,252,191,255,224,0,15,199,243,240,2,244,191,255,128,0,15,199,242,244,0,192,191,253,0,0,31,199,241,248,0,8,191,254,0,0,31,135,240,252,0,189,190,127,64,0,47,71,240,252,3,254,190,63,208,0,63,7,240,189,47,252,190,15,240,0,63,7,240,101,255,224,190,11,253,0,190,7,240,15,255,64,190,2,255,128,189,7,240,11,252,0,190,0,255,208,8,7,240,3,224,0,254,0,47,128,0,7,240,1,64,191,254,0,7,0,0,7,240,0,0,127,253,0,0,0,0,7,224,0,0,63,228,0,0,0, + // 0x7db2 網 + 178,125,37,39,134,40,1,251,0,6,0,0,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,0,15,208,2,255,255,255,255,255,64,0,47,192,2,255,255,255,255,255,64,0,63,64,2,255,255,255,255,255,64,0,191,3,130,253,85,85,85,127,64,0,253,11,242,252,0,0,80,63,64,30,248,15,210,252,124,0,189,63,64,63,240,63,194,252,125,0,252,63,64,63,224,127,2,252,62,1,248,63,64,31,240,254,2,252,47,2,240,63,64,11,249,252,2,252,31,3,224,63,64,2,255,244,2,252,14,2,208,63,64,0,255,224,2,252,255,255,254,63,64,0,63,207,194,252,255,255,254,63,64,0,63,79,210,252,255,255,254,63,64,0,254,7,242,252,0,253,0,63,64,2,252,3,250,252,0,253,0,63,64,191,255,255,254,252,0,253,0,63,64,191,255,255,255,252,255,255,254,63,64,127,255,255,255,252,255,255,254,63,64,16,7,240,127,252,255,255,254,63,64,0,7,240,63,252,47,64,0,63,64,5,7,240,98,252,47,64,0,63,64,15,215,243,242,252,47,64,0,63,64,15,199,243,242,252,47,64,0,63,64,15,199,242,246,252,47,64,0,63,64,31,199,241,250,252,47,64,0,63,64,31,135,240,254,252,47,128,0,63,64,47,71,240,255,252,31,255,252,63,64,63,71,240,191,252,15,255,253,63,64,63,7,240,102,252,7,255,253,63,64,190,7,240,2,252,0,0,0,63,64,189,7,240,2,252,0,0,0,63,64,8,7,240,2,252,0,0,0,127,64,0,7,240,2,252,0,0,191,255,0,0,7,240,2,252,0,0,63,255,0,0,7,240,2,252,0,0,63,244,0,0,0,0,0,0,0,0,0,0,0, + // 0x7dd2 緒 + 210,125,38,38,124,40,1,252,0,5,0,0,0,15,208,0,0,0,0,15,224,0,0,15,208,0,40,0,0,15,208,0,0,15,208,0,63,128,0,47,192,0,0,15,208,0,127,0,0,63,64,0,0,15,208,0,254,0,0,127,2,0,255,255,255,249,252,0,0,253,11,224,255,255,255,251,252,0,14,252,15,224,255,255,255,255,244,0,63,240,63,192,0,15,208,31,224,0,63,224,127,0,0,15,208,63,192,0,31,240,254,0,0,15,208,255,64,0,7,254,252,0,0,15,210,254,0,0,1,255,240,11,255,255,255,255,255,208,0,191,226,139,255,255,255,255,255,208,0,63,207,203,255,255,255,255,255,208,0,127,11,224,0,2,255,64,0,0,0,254,7,240,0,7,253,0,0,0,2,252,3,244,0,31,244,0,0,0,191,255,255,252,0,127,224,0,0,0,191,255,255,253,2,255,255,255,252,0,127,255,255,254,31,255,255,255,252,0,16,7,240,127,191,255,255,255,252,0,0,7,240,63,255,240,0,2,252,0,0,7,240,31,255,240,0,2,252,0,15,215,243,243,215,240,0,2,252,0,15,199,243,240,7,240,0,2,252,0,15,199,242,244,7,255,255,255,252,0,31,199,241,252,7,255,255,255,252,0,31,135,240,252,7,255,255,255,252,0,47,71,240,189,7,240,0,2,252,0,63,7,240,189,7,240,0,2,252,0,127,7,240,80,7,240,0,2,252,0,190,7,240,0,7,240,0,2,252,0,124,7,240,0,7,255,255,255,252,0,4,7,240,0,7,255,255,255,252,0,0,7,240,0,7,255,255,255,252,0,0,7,240,0,7,240,0,2,252,0,0,7,224,0,6,160,0,1,168,0, + // 0x7dda 線 + 218,125,38,38,124,40,1,252,0,5,0,0,0,0,185,0,0,0,0,15,224,0,0,0,255,64,0,0,0,15,208,0,0,1,254,0,0,0,0,47,192,0,0,3,252,0,0,0,0,63,64,0,127,255,255,255,254,0,0,127,3,64,127,255,255,255,254,0,0,253,11,240,127,255,255,255,254,0,14,252,15,224,127,0,0,0,254,0,63,244,47,192,127,0,0,0,254,0,127,224,63,64,127,0,0,0,254,0,31,240,254,0,127,170,170,170,254,0,7,249,252,0,127,255,255,255,254,0,2,255,244,0,127,255,255,255,254,0,0,255,224,0,127,0,0,0,254,0,0,63,203,192,127,0,0,0,254,0,0,63,79,208,127,0,0,0,254,0,0,254,7,240,127,255,255,255,254,0,2,252,3,244,127,255,255,255,254,0,191,255,255,252,127,255,255,255,254,0,191,255,255,252,0,0,191,0,0,0,127,255,255,254,0,0,191,0,4,0,16,7,240,127,0,0,191,64,46,0,0,7,240,59,255,253,191,192,191,192,5,7,240,82,255,255,191,194,255,64,15,215,243,242,255,253,191,235,253,0,15,199,243,240,1,252,191,255,240,0,15,199,241,248,2,252,191,255,192,0,31,199,240,252,3,248,191,254,0,0,31,135,240,252,11,240,191,191,0,0,47,71,240,188,31,208,191,63,192,0,63,7,240,188,63,192,191,31,240,0,63,7,240,0,255,64,191,11,252,0,190,7,240,7,254,0,191,3,255,64,189,7,240,31,248,0,191,0,255,224,8,7,240,11,224,0,191,0,63,192,0,7,240,3,64,191,254,0,11,64,0,7,240,0,0,63,253,0,0,0,0,7,224,0,0,63,228,0,0,0, + // 0x7de8 編 + 232,125,37,38,124,40,1,252,0,5,0,0,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,0,15,208,0,0,0,0,0,0,0,0,47,192,7,255,255,255,255,255,128,0,63,64,7,255,255,255,255,255,128,0,127,6,7,255,255,255,255,255,128,0,253,15,224,0,0,0,0,0,0,30,252,31,208,0,0,0,0,0,0,63,244,63,128,255,255,255,255,254,0,63,224,127,0,255,255,255,255,254,0,31,240,253,0,255,255,255,255,254,0,7,249,252,0,253,0,0,0,254,0,1,255,244,0,253,0,0,0,254,0,0,191,225,0,253,0,0,0,254,0,0,63,223,128,253,0,0,0,254,0,0,63,79,192,255,255,255,255,254,0,0,254,11,208,255,255,255,255,254,0,1,252,7,240,255,255,255,255,254,0,191,255,255,244,253,0,0,0,0,0,191,255,255,248,253,0,0,0,0,0,127,255,255,252,255,255,255,255,255,64,16,11,224,253,255,255,255,255,255,128,0,11,224,184,255,255,255,255,255,128,5,11,224,64,255,209,240,188,47,128,15,203,235,193,255,209,240,188,47,128,15,203,231,209,255,209,240,188,47,128,15,203,227,242,255,209,240,188,47,128,31,139,227,243,255,251,254,254,191,128,31,75,225,247,251,255,255,255,255,128,47,75,225,255,247,255,255,255,255,128,63,11,224,255,231,209,240,188,47,128,127,11,224,159,215,209,240,188,47,128,189,11,224,31,199,209,240,188,47,128,124,11,224,63,199,209,240,188,47,128,0,11,224,127,71,209,240,188,47,128,0,11,224,191,7,209,240,190,255,64,0,11,224,29,7,209,240,188,255,0,0,11,208,0,7,208,160,104,249,0, + // 0x7e2e 縮 + 46,126,37,38,124,40,1,252,0,6,0,0,0,1,253,0,0,0,0,15,224,0,0,1,253,0,0,0,0,15,208,0,0,1,253,0,0,0,0,47,192,0,0,1,253,0,0,0,0,63,64,7,255,255,255,255,255,128,0,127,7,71,255,255,255,255,255,128,0,252,15,231,255,255,255,255,255,128,30,248,31,199,240,0,0,0,47,128,63,240,63,135,240,0,0,0,47,128,63,224,127,7,240,0,0,0,47,128,15,240,253,7,243,224,0,0,21,64,7,254,252,0,7,255,255,255,255,192,1,255,240,0,15,239,255,255,255,192,0,191,226,64,15,223,255,255,255,192,0,63,207,192,31,192,2,252,0,0,0,63,75,208,47,128,2,252,0,0,0,254,7,240,63,64,3,248,0,0,1,252,3,240,127,0,3,244,0,0,191,255,255,244,255,3,255,255,255,0,191,255,255,253,255,3,255,255,255,0,127,255,255,255,255,3,255,255,255,0,16,11,224,191,255,3,240,0,63,0,0,11,224,31,255,3,240,0,63,0,0,11,224,15,127,3,240,0,63,0,15,203,231,193,63,3,240,0,63,0,15,203,231,208,63,3,255,255,255,0,15,203,227,224,63,3,255,255,255,0,31,139,227,240,63,3,255,255,255,0,31,75,226,244,63,3,240,0,63,0,47,75,225,248,63,3,240,0,63,0,63,11,224,248,63,3,240,0,63,0,127,11,224,144,63,3,240,0,63,0,189,11,224,0,63,3,240,0,63,0,124,11,224,0,63,3,255,255,255,0,4,11,224,0,63,3,255,255,255,0,0,11,224,0,63,3,255,255,255,0,0,11,224,0,63,3,240,0,63,0,0,11,208,0,42,2,160,0,21,0, + // 0x7e3d 總 + 61,126,38,38,124,40,1,252,0,5,0,0,0,0,185,0,0,0,0,15,224,0,0,0,255,0,0,0,0,15,208,0,0,0,255,0,0,0,0,47,192,0,0,2,253,0,0,0,0,63,64,0,255,255,255,255,255,0,0,127,6,0,255,255,255,255,255,0,0,253,15,224,255,255,255,255,255,0,30,252,31,208,252,0,124,0,63,0,63,244,63,128,252,0,252,0,63,0,63,224,127,0,252,1,255,254,63,0,31,240,253,0,252,183,255,254,63,0,7,249,252,0,252,255,192,188,63,0,1,255,244,0,252,63,244,248,63,0,0,191,225,0,252,190,255,240,63,0,0,63,223,128,253,244,47,224,63,0,0,63,79,192,252,16,63,248,63,0,0,254,11,208,252,1,253,190,63,0,1,252,7,240,252,31,240,40,63,0,191,255,255,244,252,31,128,0,63,0,191,255,255,248,255,255,255,255,255,0,127,255,255,252,255,255,255,255,255,0,16,11,224,253,255,255,255,255,255,0,0,11,224,184,0,11,192,0,0,0,0,11,224,128,0,31,248,0,0,0,15,139,235,192,0,7,255,0,0,0,15,203,231,224,0,0,255,192,0,0,15,203,227,240,16,127,47,224,176,0,31,139,226,240,189,127,11,131,244,0,31,139,225,244,253,127,1,2,252,0,47,75,225,248,252,127,0,0,254,0,63,11,224,248,252,127,0,0,191,0,63,11,224,145,248,127,0,16,63,64,190,11,224,3,244,127,0,61,47,192,124,11,224,7,240,127,0,63,15,192,4,11,224,15,224,127,0,63,15,224,0,11,224,31,192,63,255,254,7,224,0,11,224,2,64,63,255,253,2,0,0,11,208,0,0,11,255,244,0,0, + // 0x7e7c 繼 + 124,126,37,38,124,40,1,252,0,20,0,10,128,0,0,0,0,0,0,63,64,31,192,56,0,15,64,0,0,63,64,31,192,124,0,15,64,0,0,127,0,31,192,248,0,47,0,0,0,189,0,31,197,240,241,124,45,0,0,252,20,31,207,210,243,248,125,0,1,248,63,95,207,195,211,244,248,0,31,240,127,31,195,255,128,254,240,0,63,224,254,31,192,255,0,63,192,0,63,193,252,31,192,125,208,31,168,0,31,227,244,31,192,245,240,62,61,0,11,251,240,31,194,240,244,188,31,0,2,255,208,31,223,255,255,255,255,128,0,255,128,31,207,255,255,255,255,192,0,127,189,31,192,0,16,0,2,64,0,189,127,31,255,255,255,255,255,192,1,252,63,95,255,255,255,255,255,192,3,240,47,159,255,255,255,255,255,192,191,255,255,223,192,52,0,10,64,0,191,255,255,239,192,124,0,15,128,0,191,255,255,255,192,184,0,31,0,0,16,31,195,255,192,240,224,61,29,0,0,31,130,95,207,225,243,252,62,0,5,31,129,31,207,195,211,244,188,0,15,159,159,31,199,235,192,253,240,0,31,159,143,159,193,255,0,127,224,0,31,95,143,223,192,190,64,31,228,0,47,95,139,239,192,186,224,31,124,0,47,31,135,255,193,240,240,61,47,0,63,31,131,255,203,250,254,254,175,64,63,31,131,255,223,255,255,255,255,192,126,31,129,31,206,148,47,229,3,192,189,31,128,31,192,0,4,0,1,0,44,31,128,31,255,255,255,255,255,192,0,31,128,31,255,255,255,255,255,192,0,31,128,31,255,255,255,255,255,192,0,31,128,31,192,0,0,0,0,0,0,31,128,10,128,0,0,0,0,0, + // 0x7e8c 續 + 140,126,37,38,124,40,1,252,0,5,0,0,0,0,253,0,0,0,0,15,224,0,0,1,253,0,0,0,0,31,192,5,85,86,254,85,85,64,0,47,128,11,255,255,255,255,255,192,0,63,0,11,255,255,255,255,255,192,0,190,10,64,0,1,253,0,0,0,0,252,15,224,21,85,254,85,84,0,14,248,47,192,255,255,255,255,253,0,63,240,63,64,255,255,255,255,253,0,63,208,191,0,0,0,0,0,0,0,31,240,253,2,255,255,255,255,255,0,7,250,248,2,255,255,255,255,255,0,2,255,240,2,244,15,71,208,63,0,0,255,210,2,244,127,3,250,191,0,0,63,239,66,251,248,2,255,255,0,0,63,15,194,245,128,0,0,63,0,0,253,11,210,255,255,255,255,255,0,1,252,7,242,255,255,255,255,255,0,127,255,255,240,0,0,0,0,0,0,127,255,255,248,0,0,0,0,0,0,63,255,255,252,127,255,255,255,252,0,20,11,224,252,127,255,255,255,252,0,0,11,224,80,127,0,0,1,252,0,5,11,225,128,127,170,170,171,252,0,15,203,235,192,127,255,255,255,252,0,15,203,231,224,127,0,0,1,252,0,15,203,227,240,127,0,0,1,252,0,31,139,226,240,127,255,255,255,252,0,47,75,225,244,127,170,170,171,252,0,63,75,224,248,127,0,0,1,252,0,63,11,224,128,127,255,255,255,252,0,127,11,224,0,127,255,255,255,252,0,189,11,224,0,1,244,0,189,0,0,124,11,224,0,31,254,2,255,208,0,0,11,224,6,255,244,0,127,253,0,0,11,224,63,255,128,0,7,255,192,0,11,224,31,244,0,0,0,191,64,0,7,208,6,0,0,0,0,8,0, + // 0x7ea2 红 + 162,126,37,36,104,40,1,254,0,0,144,0,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,0,7,248,0,255,255,255,255,255,64,0,15,240,0,255,255,255,255,255,64,0,31,224,0,255,255,255,255,255,64,0,63,192,0,170,170,255,234,170,0,0,191,128,0,0,0,255,0,0,0,0,255,0,244,0,0,255,0,0,0,3,253,2,254,0,0,255,0,0,0,7,248,3,253,0,0,255,0,0,0,15,240,11,248,0,0,255,0,0,0,127,255,255,240,0,0,255,0,0,0,127,255,255,208,0,0,255,0,0,0,63,255,255,128,0,0,255,0,0,0,47,167,255,0,0,0,255,0,0,0,0,7,252,0,0,0,255,0,0,0,0,15,244,0,0,0,255,0,0,0,0,63,224,0,0,0,255,0,0,0,0,191,128,0,0,0,255,0,0,0,2,255,0,88,0,0,255,0,0,0,11,254,191,252,0,0,255,0,0,0,63,255,255,252,0,0,255,0,0,0,63,255,255,252,0,0,255,0,0,0,63,255,233,0,0,0,255,0,0,0,31,144,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,20,0,0,255,0,0,0,0,0,107,248,0,0,255,0,0,0,0,111,255,253,170,170,255,234,170,128,127,255,255,254,255,255,255,255,255,192,127,255,255,146,255,255,255,255,255,192,63,254,64,2,255,255,255,255,255,192,58,64,0,0,0,0,0,0,0,0, + // 0x7f6e 置 + 110,127,35,36,68,40,3,252,31,255,255,255,255,255,255,255,128,31,255,255,255,255,255,255,255,128,31,234,175,250,170,254,170,191,128,31,192,7,240,0,252,0,63,128,31,192,7,240,0,252,0,63,128,31,234,171,250,170,254,170,191,128,31,255,255,255,255,255,255,255,128,31,255,255,255,255,255,255,255,128,0,0,0,2,253,0,0,0,0,0,0,0,2,252,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,0,0,0,3,244,0,0,0,0,0,0,0,7,244,0,0,0,0,5,80,63,255,255,255,255,252,0,15,224,63,255,255,255,255,252,0,15,224,63,128,0,0,2,252,0,15,224,63,128,0,0,1,252,0,15,224,63,255,255,255,255,252,0,15,224,63,255,255,255,255,252,0,15,224,63,128,0,0,1,252,0,15,224,63,128,0,0,1,252,0,15,224,63,255,255,255,255,252,0,15,224,63,255,255,255,255,252,0,15,224,63,128,0,0,1,252,0,15,224,63,128,0,0,1,252,0,15,224,63,255,255,255,255,252,0,15,224,63,255,255,255,255,252,0,15,224,0,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,15,255,255,255,255,255,255,255,252,15,255,255,255,255,255,255,255,252,15,255,255,255,255,255,255,255,252,15,224,0,0,0,0,0,0,0,10,144,0,0,0,0,0,0,0, + // 0x7f72 署 + 114,127,37,36,104,40,1,252,1,255,255,255,255,255,255,255,248,0,1,255,255,255,255,255,255,255,248,0,1,254,170,255,170,175,234,171,248,0,1,252,0,127,0,15,192,3,248,0,1,252,0,127,0,15,192,3,248,0,1,252,0,127,0,15,192,3,248,0,1,255,255,255,255,255,255,255,248,0,1,255,255,255,255,255,255,255,248,0,1,170,170,170,255,170,170,170,164,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,2,208,0,0,47,255,255,255,255,255,15,248,0,0,47,255,255,255,255,255,127,240,0,0,31,255,255,255,255,255,255,192,0,0,0,0,0,254,0,15,254,0,0,0,0,0,0,254,0,191,240,0,0,47,255,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,255,128,47,255,255,255,255,255,255,255,255,128,0,0,0,1,255,254,0,0,0,0,0,0,0,111,255,240,0,0,0,0,0,0,11,255,255,64,0,0,0,0,0,6,255,255,255,255,255,255,192,0,1,255,255,255,255,255,255,255,192,0,127,255,255,234,170,170,170,191,192,0,63,255,255,192,0,0,0,31,192,0,31,248,31,192,0,0,0,31,192,0,9,0,31,255,255,255,255,255,192,0,0,0,31,255,255,255,255,255,192,0,0,0,31,213,85,85,85,111,192,0,0,0,31,192,0,0,0,31,192,0,0,0,31,192,0,0,0,31,192,0,0,0,31,255,255,255,255,255,192,0,0,0,31,255,255,255,255,255,192,0,0,0,31,234,170,170,170,191,192,0,0,0,31,192,0,0,0,26,128,0, + // 0x8070 聰 + 112,128,38,38,124,40,1,252,0,0,0,0,0,0,105,0,0,0,0,0,0,0,0,0,191,64,0,0,63,255,255,255,128,0,255,0,0,0,63,255,255,255,128,0,254,0,0,0,63,255,255,255,191,255,255,255,255,0,23,249,87,249,127,255,255,255,255,0,2,248,3,244,63,255,255,255,255,0,2,248,3,244,63,0,60,0,63,0,2,248,3,244,63,0,124,0,63,0,2,248,3,244,63,0,255,253,63,0,2,255,255,244,63,47,255,252,63,0,2,255,255,244,63,63,208,188,63,0,2,255,255,244,63,47,248,244,63,0,2,248,3,244,63,125,191,224,63,0,2,248,3,244,63,20,31,208,63,0,2,248,3,244,63,0,63,244,63,0,2,248,3,244,63,1,253,188,63,0,2,248,3,244,63,15,240,32,63,0,2,248,3,244,63,11,64,0,63,0,2,255,255,244,63,255,255,255,255,0,2,255,255,244,63,255,255,255,255,0,2,255,255,244,63,255,255,255,255,0,2,248,3,244,0,3,252,0,0,0,2,248,3,244,0,7,255,128,0,0,2,248,3,244,0,0,191,224,0,0,2,248,3,244,0,26,79,244,0,0,2,248,3,244,9,47,130,209,176,0,2,250,191,244,47,175,128,67,248,0,111,255,255,244,63,111,128,1,252,0,127,255,255,244,63,47,128,0,254,0,63,255,151,244,127,47,128,0,127,0,58,64,3,244,254,47,128,30,63,128,0,0,3,245,252,47,128,31,159,192,0,0,3,251,248,47,128,47,79,208,0,0,3,251,240,31,255,255,15,224,0,0,3,244,144,15,255,255,6,0,0,0,3,244,0,7,255,248,0,0,0,0,2,160,0,0,0,0,0,0, + // 0x81ea 自 + 234,129,28,38,10,40,6,252,0,0,1,233,0,0,0,0,0,2,255,0,0,0,0,0,3,253,0,0,0,0,0,3,252,0,0,0,0,0,7,248,0,0,0,106,170,175,250,170,170,170,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,85,85,85,85,85,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,85,85,85,85,85,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,0,0,0,0,0,191,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,255,255,255,255,255,255,191,85,85,85,85,85,255,191,0,0,0,0,0,191,191,0,0,0,0,0,106, + // 0x85cd 藍 + 205,133,36,37,77,40,2,253,0,0,26,128,0,2,164,0,0,0,0,47,192,0,7,244,0,0,0,0,47,192,0,7,244,0,0,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,47,192,0,7,244,0,0,0,0,47,192,0,7,244,0,0,5,85,85,85,80,7,144,0,0,15,255,255,255,248,15,240,0,0,15,255,255,255,248,15,208,0,0,15,192,63,64,0,47,192,0,0,15,208,63,64,0,63,255,255,252,15,255,255,255,224,255,255,255,252,15,255,255,255,225,255,255,255,252,15,192,0,7,231,252,0,0,0,15,192,0,7,239,240,0,0,0,15,255,255,255,226,208,0,0,0,15,255,255,255,224,0,0,0,0,15,208,63,64,0,47,255,255,244,15,192,63,64,0,47,255,255,244,15,229,127,149,84,47,255,255,244,15,255,255,255,252,0,0,0,0,15,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,126,0,126,0,191,0,0,191,0,126,0,126,0,191,0,0,191,0,126,0,126,0,191,0,0,191,0,126,0,126,0,191,0,0,191,0,126,0,126,0,191,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0, + // 0x884c 行 + 76,136,37,38,124,40,1,252,0,0,40,0,0,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,1,255,64,42,170,170,170,170,0,0,7,254,0,127,255,255,255,255,0,0,31,248,0,127,255,255,255,255,0,0,127,224,0,127,255,255,255,255,0,2,255,192,0,0,0,0,0,0,0,11,255,0,0,0,0,0,0,0,0,63,248,0,0,0,0,0,0,0,0,63,224,7,128,0,0,0,0,0,0,31,128,15,244,0,0,0,0,0,0,13,0,47,240,0,0,0,0,0,0,0,0,63,208,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,3,255,3,255,255,255,255,255,192,0,11,252,3,255,255,255,255,255,192,0,47,244,3,255,255,255,255,255,192,0,191,244,2,170,170,171,254,170,128,2,255,244,0,0,0,1,253,0,0,11,255,244,0,0,0,1,253,0,0,63,255,244,0,0,0,1,253,0,0,191,251,244,0,0,0,1,253,0,0,63,199,244,0,0,0,1,253,0,0,14,7,244,0,0,0,1,253,0,0,4,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,1,253,0,0,0,7,244,0,0,0,2,253,0,0,0,7,244,0,0,63,255,252,0,0,0,7,244,0,0,63,255,252,0,0,0,7,244,0,0,47,255,244,0,0,0,7,240,0,0,10,169,64,0,0, + // 0x8868 表 + 104,136,38,38,124,40,1,252,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,3,255,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,255,252,0,3,255,255,255,255,255,255,255,252,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,63,255,255,255,255,255,255,224,0,0,63,255,255,255,255,255,255,224,0,0,63,255,255,255,255,255,255,224,0,0,0,0,0,63,192,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,128,0,0,0,0,0,0,0,0,63,192,0,0,0,0,31,255,255,255,255,255,255,255,255,64,31,255,255,255,255,255,255,255,255,64,31,255,255,255,255,255,255,255,255,64,0,0,0,15,255,252,0,0,0,0,0,0,0,127,241,253,0,0,144,0,0,0,7,255,192,254,0,3,248,0,0,0,47,254,0,191,0,31,253,0,0,2,255,244,0,63,128,191,240,0,0,127,255,224,0,47,195,255,128,0,27,255,255,224,0,31,255,253,0,0,127,255,223,224,0,15,255,224,0,0,47,248,15,224,0,3,255,0,0,0,15,128,15,224,0,2,255,0,0,0,0,0,15,224,0,0,255,192,0,0,0,0,15,224,0,108,63,244,0,0,0,0,15,224,111,252,31,254,0,0,0,0,15,255,255,253,7,255,208,0,0,1,191,255,255,248,0,255,253,0,0,127,255,255,249,0,0,63,255,208,0,63,255,249,0,0,0,7,255,128,0,63,249,0,0,0,0,0,191,0,0,25,0,0,0,0,0,0,5,0, + // 0x88ab 被 + 171,136,38,38,124,40,1,252,0,10,144,0,0,0,63,64,0,0,0,15,224,0,0,0,63,64,0,0,0,15,224,0,0,0,63,64,0,0,0,15,224,0,0,0,63,64,0,0,0,15,224,0,0,0,63,64,0,0,0,15,224,0,0,0,63,64,0,0,0,15,224,0,127,255,255,255,255,128,21,95,245,64,127,255,255,255,255,192,63,255,255,244,127,255,255,255,255,192,63,255,255,248,127,85,127,149,127,128,63,255,255,240,127,0,63,64,63,64,0,0,15,224,127,0,63,64,127,0,0,0,31,192,127,0,63,64,191,0,0,0,63,128,127,0,63,64,253,0,0,0,191,0,127,0,63,64,108,0,0,1,253,24,127,0,63,64,0,0,0,3,252,63,191,255,255,255,253,0,0,15,244,189,191,255,255,255,254,0,0,63,253,248,191,255,255,255,253,0,0,191,255,240,191,254,85,87,252,0,2,255,255,192,191,254,0,3,252,0,15,255,255,208,190,127,0,11,244,0,63,255,231,244,254,63,128,15,240,0,191,223,226,252,254,47,192,31,224,0,63,79,224,248,253,31,224,63,192,0,45,15,224,96,253,15,244,191,128,0,0,15,224,1,252,3,253,255,0,0,0,15,224,2,252,2,255,254,0,0,0,15,224,3,248,0,255,252,0,0,0,15,224,3,244,0,127,240,0,0,0,15,224,7,240,0,191,248,0,0,0,15,224,15,240,3,255,255,0,0,0,15,224,31,224,31,255,255,208,0,0,15,224,63,193,255,244,191,254,0,0,15,224,127,143,255,192,31,255,208,0,15,224,255,15,254,0,3,255,192,0,15,224,62,3,240,0,0,127,64,0,11,224,4,1,64,0,0,6,0, + // 0x88c5 装 + 197,136,36,38,86,40,2,252,0,0,191,0,0,3,244,0,0,0,0,191,0,0,3,244,0,0,9,0,191,0,0,3,244,0,0,47,128,191,0,0,3,244,0,0,63,240,191,0,0,3,244,0,0,11,252,191,0,0,7,248,0,0,2,253,191,15,255,255,255,255,255,0,116,191,15,255,255,255,255,255,0,0,191,15,255,255,255,255,255,0,0,191,0,0,3,244,0,0,0,0,191,0,0,3,244,0,0,0,10,191,0,0,3,244,0,0,0,191,191,0,0,3,244,0,0,11,255,191,0,0,3,244,0,0,255,254,191,0,0,7,248,0,0,255,224,191,3,255,255,255,255,248,190,0,191,3,255,255,255,255,248,80,0,191,3,255,255,255,255,248,0,0,191,0,0,0,0,0,0,0,0,106,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,1,255,207,224,0,6,0,0,0,31,254,7,244,0,47,192,0,2,255,240,2,252,1,255,208,1,191,255,128,0,255,15,254,0,191,255,255,64,0,127,255,244,0,191,254,127,64,0,31,255,64,0,63,128,63,64,0,11,254,0,0,0,0,63,64,90,194,255,224,0,0,0,127,255,255,192,127,254,64,0,191,255,255,255,192,11,255,249,0,191,255,255,249,64,1,255,255,0,127,254,80,0,0,0,27,253,0,20,0,0,0,0,0,0,104, + // 0x88dd 裝 + 221,136,36,38,86,40,2,252,5,64,15,224,0,2,168,0,0,15,208,15,224,0,2,252,0,0,15,208,15,224,0,2,252,0,0,15,208,15,224,0,2,252,0,0,15,208,15,224,0,2,252,0,0,15,255,255,224,0,2,252,0,0,15,255,255,227,255,255,255,255,253,15,255,255,227,255,255,255,255,253,15,208,15,227,255,255,255,255,253,0,0,15,224,0,2,252,0,0,0,0,15,224,0,2,252,0,0,255,255,255,224,0,2,252,0,0,255,255,255,224,0,2,252,0,0,191,255,255,224,0,2,252,0,0,3,244,15,224,0,2,252,0,0,7,240,15,224,255,255,255,255,248,15,224,15,224,255,255,255,255,248,47,208,15,224,255,255,255,255,248,255,128,15,224,0,0,0,0,0,255,0,15,224,255,0,0,0,0,56,0,5,64,255,0,0,0,0,0,0,0,0,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,2,255,143,224,0,6,0,0,0,47,253,7,244,0,47,192,0,7,255,224,2,252,1,255,208,6,255,255,64,0,255,15,254,0,255,255,255,64,0,127,255,244,0,127,249,63,64,0,31,255,64,0,62,64,63,64,0,7,254,0,0,0,0,63,65,107,209,255,224,0,0,0,127,255,255,208,127,254,64,0,255,255,255,255,208,11,255,249,0,255,255,255,164,0,1,255,255,0,255,233,0,0,0,0,27,253,0,0,0,0,0,0,0,0,104, + // 0x8907 複 + 7,137,38,38,124,40,1,252,0,10,128,0,2,148,0,0,0,0,0,15,192,0,3,248,0,0,0,0,0,15,192,0,11,240,0,0,0,0,0,15,192,0,15,224,0,0,0,0,0,15,192,0,47,255,255,255,255,192,0,15,192,0,63,255,255,255,255,192,0,15,192,0,255,255,255,255,255,192,5,95,213,2,254,0,0,0,0,0,63,255,255,215,252,0,0,0,0,0,63,255,255,255,249,85,85,85,84,0,63,255,255,255,255,255,255,255,248,0,0,0,47,199,239,255,255,255,248,0,0,0,63,64,47,192,0,3,248,0,0,0,191,0,47,192,0,3,248,0,0,0,254,0,47,255,255,255,248,0,0,2,252,32,47,255,255,255,248,0,0,3,244,124,47,213,85,87,248,0,0,15,240,252,47,192,0,3,248,0,0,31,242,244,47,192,0,3,248,0,0,63,255,224,47,255,255,255,248,0,0,255,255,192,47,255,255,255,248,0,2,255,255,128,5,111,245,85,84,0,7,255,239,192,0,63,192,0,0,0,31,255,219,240,0,255,128,0,0,0,127,239,211,244,3,255,255,255,224,0,127,143,209,224,15,255,255,255,248,0,62,15,208,128,127,255,255,255,240,0,24,15,208,2,255,244,0,63,208,0,0,15,208,31,255,253,0,191,128,0,0,15,208,15,240,255,131,255,0,0,0,15,208,3,128,63,255,248,0,0,0,15,208,0,0,15,255,224,0,0,0,15,208,0,0,47,255,228,0,0,0,15,208,0,11,255,255,255,144,0,0,15,208,27,255,255,219,255,255,144,0,15,208,47,255,248,0,191,255,192,0,15,208,15,254,64,0,7,255,64,0,15,192,6,64,0,0,0,26,0, + // 0x89d2 角 + 210,137,34,39,95,40,1,251,0,0,0,164,0,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,3,253,0,0,0,0,0,0,0,15,255,255,255,224,0,0,0,0,31,255,255,255,252,0,0,0,0,63,255,255,255,244,0,0,0,0,255,128,0,31,240,0,0,0,3,255,0,0,63,192,0,0,0,15,252,0,0,191,64,0,0,0,47,249,85,85,255,85,85,80,0,255,255,255,255,255,255,255,240,7,255,255,255,255,255,255,255,240,31,255,255,255,255,255,255,255,240,15,251,240,0,15,224,0,11,240,3,199,240,0,15,224,0,11,240,0,7,240,0,15,224,0,11,240,0,7,240,0,15,224,0,11,240,0,7,244,0,15,240,0,15,240,0,7,255,255,255,255,255,255,240,0,7,255,255,255,255,255,255,240,0,7,255,255,255,255,255,255,240,0,7,240,0,15,224,0,11,240,0,7,240,0,15,224,0,11,240,0,11,240,0,15,224,0,11,240,0,11,240,0,15,224,0,11,240,0,15,245,85,95,245,85,95,240,0,15,255,255,255,255,255,255,240,0,31,255,255,255,255,255,255,240,0,47,255,255,255,255,255,255,240,0,63,192,0,0,0,0,11,240,0,127,64,0,0,0,0,11,240,0,255,0,0,0,0,0,11,240,2,254,0,0,0,0,0,11,240,11,252,0,0,0,0,0,15,240,47,244,0,0,0,6,149,111,240,127,224,0,0,0,7,255,255,224,47,192,0,0,0,3,255,255,192,10,0,0,0,0,2,255,249,0,0,0,0,0,0,0,0,0,0, + // 0x8a08 計 + 8,138,38,38,124,40,1,252,0,0,0,0,0,0,26,128,0,0,0,0,0,0,0,0,47,192,0,0,7,255,255,252,0,0,47,192,0,0,7,255,255,252,0,0,47,192,0,0,7,255,255,252,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,127,255,255,255,128,0,47,192,0,0,127,255,255,255,128,0,47,192,0,0,127,255,255,255,128,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,7,255,255,252,0,0,47,192,0,0,11,255,255,252,0,0,47,192,0,0,11,255,255,252,191,255,255,255,255,224,0,0,0,0,191,255,255,255,255,224,0,0,0,0,191,255,255,255,255,224,0,0,0,0,106,170,191,234,170,160,11,255,255,252,0,0,47,192,0,0,11,255,255,252,0,0,47,192,0,0,7,255,255,252,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,0,11,255,255,252,0,0,47,192,0,0,11,255,255,252,0,0,47,192,0,0,11,255,255,252,0,0,47,192,0,0,11,224,1,252,0,0,47,192,0,0,11,224,1,252,0,0,47,192,0,0,11,224,1,252,0,0,47,192,0,0,11,224,1,252,0,0,47,192,0,0,11,224,1,252,0,0,47,192,0,0,11,224,1,252,0,0,47,192,0,0,11,255,255,252,0,0,47,192,0,0,11,255,255,252,0,0,47,192,0,0,11,255,255,252,0,0,47,192,0,0,11,224,0,0,0,0,47,192,0,0,6,144,0,0,0,0,47,192,0,0, + // 0x8a0a 訊 + 10,138,39,37,114,40,1,251,7,255,255,240,255,255,255,255,208,0,7,255,255,240,255,255,255,255,208,0,7,255,255,240,255,255,255,255,208,0,0,0,0,0,170,255,170,175,208,0,0,0,0,0,0,191,0,31,208,0,127,255,255,254,0,191,0,31,208,0,127,255,255,254,0,191,0,31,208,0,127,255,255,253,0,191,0,31,208,0,0,0,0,0,0,191,0,31,208,0,0,0,0,0,0,191,0,31,208,0,7,255,255,240,0,191,0,31,208,0,11,255,255,240,0,191,0,31,208,0,11,255,255,240,0,191,0,31,208,0,0,0,0,0,0,191,0,31,208,0,0,0,0,1,255,255,255,95,208,0,0,0,0,1,255,255,255,95,208,0,11,255,255,241,255,255,255,95,208,0,11,255,255,240,85,255,85,31,208,0,11,255,255,240,0,254,0,31,208,0,0,0,0,0,0,254,0,31,208,0,0,0,0,0,0,253,0,15,208,0,0,0,0,0,0,253,0,15,208,0,11,255,255,240,1,252,0,15,208,0,11,255,255,240,2,252,0,15,224,0,11,255,255,240,3,248,0,15,224,0,11,224,3,240,3,244,0,15,224,0,11,224,3,240,11,240,0,15,240,64,11,224,3,240,15,240,0,11,240,208,11,224,3,240,47,224,0,7,240,240,11,224,3,240,63,192,0,7,244,244,11,224,3,240,191,128,0,3,248,240,11,255,255,241,255,0,0,3,253,240,11,255,255,247,253,0,0,2,255,240,11,255,255,255,252,0,0,0,255,224,11,224,0,3,240,0,0,0,191,192,6,144,0,0,192,0,0,0,47,64,0,0,0,0,0,0,0,0,0,0, + // 0x8a18 記 + 24,138,38,36,104,40,1,252,7,255,255,252,6,170,170,170,168,0,7,255,255,252,11,255,255,255,253,0,7,255,255,252,11,255,255,255,253,0,0,0,0,0,11,255,255,255,253,0,0,0,0,0,0,0,0,1,253,0,127,255,255,255,128,0,0,1,253,0,127,255,255,255,128,0,0,1,253,0,127,255,255,255,128,0,0,1,253,0,0,0,0,0,0,0,0,1,253,0,0,0,0,0,0,0,0,1,253,0,7,255,255,252,0,0,0,1,253,0,11,255,255,252,0,0,0,1,253,0,11,255,255,252,0,0,0,1,253,0,0,0,0,0,2,170,170,170,253,0,0,0,0,0,7,255,255,255,253,0,0,0,0,0,7,255,255,255,253,0,11,255,255,252,7,255,255,255,253,0,11,255,255,252,7,244,0,1,253,0,7,255,255,252,7,244,0,1,253,0,0,0,0,0,7,244,0,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,0,7,244,0,0,0,0,11,255,255,252,7,244,0,0,0,0,11,255,255,252,7,244,0,0,0,0,11,255,255,252,7,244,0,0,0,0,11,224,1,252,7,244,0,0,0,0,11,224,1,252,7,244,0,0,14,0,11,224,1,252,7,244,0,0,15,208,11,224,1,252,7,244,0,0,15,208,11,224,1,252,7,244,0,0,31,192,11,224,1,252,7,244,0,0,47,192,11,255,255,252,7,248,0,0,127,192,11,255,255,252,3,255,255,255,255,128,11,255,255,252,2,255,255,255,255,0,11,224,0,0,0,255,255,255,253,0,6,144,0,0,0,6,170,170,80,0, + // 0x8a2d 設 + 45,138,38,37,114,40,1,252,0,0,0,0,1,85,85,84,0,0,7,255,255,244,7,255,255,253,0,0,7,255,255,244,7,255,255,253,0,0,7,255,255,244,7,255,255,253,0,0,0,0,0,0,7,240,0,253,0,0,0,0,0,0,7,240,0,253,0,0,127,255,255,255,7,240,0,253,0,0,127,255,255,255,11,240,0,253,6,0,127,255,255,255,15,240,0,253,11,208,0,0,0,0,15,224,0,254,11,208,0,0,0,0,47,208,0,254,15,208,7,255,255,244,127,192,0,255,255,192,11,255,255,245,255,128,0,191,255,192,11,255,255,255,255,0,0,63,255,0,0,0,0,3,253,0,0,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,0,0,101,85,85,85,80,0,11,255,255,244,191,255,255,255,252,0,11,255,255,244,191,255,255,255,252,0,7,255,255,244,191,255,255,255,252,0,0,0,0,0,0,160,0,11,244,0,0,0,0,0,11,240,0,15,240,0,0,0,0,0,7,244,0,31,224,0,11,255,255,244,3,252,0,63,192,0,11,255,255,244,1,254,0,127,192,0,11,255,255,244,0,255,65,255,0,0,11,224,3,244,0,63,211,254,0,0,11,224,3,244,0,31,255,252,0,0,11,224,3,244,0,11,255,240,0,0,11,224,3,244,0,3,255,208,0,0,11,224,3,244,0,11,255,224,0,0,11,224,3,244,0,127,255,254,0,0,11,255,255,244,7,255,251,255,208,0,11,255,255,249,255,255,65,255,255,64,11,255,255,251,255,248,0,47,255,192,11,224,0,1,255,128,0,2,255,64,6,144,0,0,164,0,0,0,26,0, + // 0x8a66 試 + 102,138,38,38,124,40,1,252,0,0,0,0,0,0,1,168,0,0,0,0,0,0,0,0,2,252,180,0,7,255,255,224,0,0,2,253,253,0,7,255,255,224,0,0,2,252,191,0,7,255,255,224,0,0,2,252,63,192,0,0,0,0,0,0,2,252,15,208,0,0,0,0,0,0,2,252,11,64,127,255,255,252,0,0,2,252,0,0,127,255,255,253,255,255,255,255,255,192,127,255,255,254,255,255,255,255,255,192,0,0,0,2,255,255,255,255,255,192,0,0,0,0,85,85,86,253,85,64,11,255,255,240,0,0,1,252,0,0,11,255,255,240,0,0,1,252,0,0,11,255,255,240,0,0,1,252,0,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,1,252,0,0,0,0,0,1,255,255,245,252,0,0,11,255,255,241,255,255,244,252,0,0,11,255,255,241,255,255,244,252,0,0,11,255,255,240,2,252,0,253,0,0,0,0,0,0,2,252,0,253,0,0,0,0,0,0,2,252,0,253,0,0,0,0,0,0,2,252,0,254,0,0,11,255,255,240,2,252,0,254,0,0,11,255,255,240,2,252,0,191,0,0,11,255,255,240,2,252,0,191,0,0,11,208,7,240,2,252,0,127,0,0,11,208,7,240,2,252,0,63,2,0,11,208,7,240,2,252,5,63,67,208,11,208,7,240,2,255,254,63,131,240,11,208,7,241,111,255,254,47,195,240,11,208,7,243,255,255,253,31,231,224,11,255,255,243,255,250,64,15,255,208,11,255,255,242,249,0,0,11,255,192,11,255,255,240,0,0,0,3,255,128,11,208,0,0,0,0,0,0,255,0,6,128,0,0,0,0,0,0,20,0, + // 0x8a8d 認 + 141,138,38,36,104,40,1,252,7,255,255,224,127,255,255,255,255,0,7,255,255,224,127,255,255,255,255,0,7,255,255,224,127,255,255,255,255,0,0,0,0,0,0,3,244,0,191,0,0,0,0,0,0,3,240,0,191,0,127,255,255,252,30,7,240,0,191,0,127,255,255,252,63,255,224,0,191,0,127,255,255,252,127,255,208,0,254,0,0,0,0,0,7,255,244,0,254,0,0,0,0,0,0,63,255,64,254,0,11,255,255,224,0,191,255,208,253,0,11,255,255,224,1,255,127,192,253,0,11,255,255,224,3,252,7,1,252,0,0,0,0,0,31,244,1,71,252,0,0,0,0,0,191,224,7,255,252,0,0,0,0,3,255,128,3,255,244,0,11,255,255,224,253,3,131,255,208,0,11,255,255,224,96,15,244,0,0,0,11,255,255,224,0,15,254,0,0,0,0,0,0,0,0,2,255,192,0,0,0,0,0,0,0,0,63,240,0,0,0,0,0,0,0,42,15,244,0,0,11,255,255,240,0,127,2,224,160,0,11,255,255,240,16,127,0,71,244,0,11,255,255,240,126,127,0,3,252,0,11,208,7,240,190,127,0,1,253,0,11,208,7,240,254,127,0,0,255,0,11,208,7,240,253,127,0,0,127,64,11,208,7,240,252,127,0,45,63,192,11,208,7,242,252,127,0,47,95,208,11,208,7,243,244,127,0,47,79,224,11,255,255,251,240,63,64,63,15,240,11,255,255,251,224,63,255,255,11,64,11,255,255,241,192,63,255,254,0,0,11,208,0,0,0,31,255,252,0,0,6,128,0,0,0,0,0,0,0,0, + // 0x8aa4 誤 + 164,138,38,37,114,40,1,252,0,0,0,0,0,11,255,255,253,0,7,255,255,192,0,11,255,255,253,0,7,255,255,192,0,11,255,255,253,0,7,255,255,192,20,11,224,0,253,0,0,0,0,0,190,11,224,0,253,0,0,0,0,0,190,11,224,0,253,0,127,255,255,244,190,11,224,0,253,0,127,255,255,244,190,11,224,0,253,0,127,255,255,244,190,11,224,0,253,0,0,0,0,0,190,11,255,255,253,0,0,0,0,0,190,11,255,255,253,0,11,255,255,192,190,11,255,255,253,0,11,255,255,192,190,0,0,0,0,0,11,255,255,192,190,0,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,0,191,255,255,255,244,0,0,0,0,0,191,255,255,255,244,0,11,255,255,192,191,255,255,255,244,0,11,255,255,192,190,0,0,7,244,0,11,255,255,192,190,0,0,7,244,0,0,0,0,0,85,0,0,7,244,0,0,0,0,0,0,0,0,7,244,0,0,0,0,0,0,0,0,7,244,0,11,255,255,199,255,255,255,255,255,208,11,255,255,199,255,255,255,255,255,208,11,255,255,199,255,255,255,255,255,208,11,208,15,193,85,85,85,85,85,64,11,208,15,192,0,96,0,5,0,0,11,208,15,192,0,255,0,191,64,0,11,208,15,192,3,254,0,127,224,0,11,208,15,192,15,252,0,15,248,0,11,255,255,192,127,240,0,7,253,0,11,255,255,193,255,192,0,1,255,64,11,255,255,219,255,0,0,0,191,192,11,208,0,11,252,0,0,0,63,208,11,208,0,2,224,0,0,0,15,0,0,0,0,0,64,0,0,0,4,0, + // 0x8abf 調 + 191,138,36,36,68,40,1,252,11,255,255,66,255,255,255,255,255,11,255,255,66,255,255,255,255,255,7,255,255,66,255,255,255,255,255,0,0,0,2,248,0,0,0,63,0,0,0,2,248,0,252,0,63,127,255,255,226,248,0,252,0,63,127,255,255,226,248,0,252,0,63,127,255,255,226,248,191,255,252,63,0,0,0,2,248,191,255,252,63,0,0,0,2,248,127,255,248,63,11,255,255,66,248,0,252,0,63,15,255,255,130,248,0,252,0,63,15,255,255,130,248,0,252,0,63,0,0,0,2,248,191,255,252,63,0,0,0,2,248,255,255,253,63,0,0,0,2,248,255,255,253,63,15,255,255,130,248,0,0,0,63,15,255,255,130,248,0,0,0,63,11,255,255,66,248,0,0,0,63,0,0,0,2,248,127,255,248,63,0,0,0,3,248,127,255,248,63,0,0,0,3,244,127,171,248,63,15,255,255,67,244,125,0,248,63,15,255,255,67,244,125,0,248,63,15,255,255,67,240,125,0,248,63,15,192,47,71,240,125,0,248,63,15,192,47,75,240,127,171,248,63,15,192,47,75,224,127,255,248,63,15,192,47,79,208,127,255,248,63,15,192,47,95,208,125,0,0,63,15,255,255,111,192,40,0,0,63,15,255,255,191,192,0,0,0,127,15,255,255,255,64,0,1,255,255,15,192,0,191,0,0,0,255,255,15,192,0,30,0,0,0,191,252,0,0,0,4,0,0,0,106,80, + // 0x8acb 請 + 203,138,37,39,134,40,1,251,0,0,0,0,0,0,106,0,0,0,0,0,0,0,0,0,127,0,0,0,7,255,255,240,0,0,127,0,0,0,7,255,255,240,191,255,255,255,255,64,7,255,255,240,191,255,255,255,255,64,0,0,0,0,106,170,255,170,170,64,0,0,0,0,0,0,127,0,0,0,127,255,255,254,26,170,255,170,169,0,127,255,255,254,47,255,255,255,255,0,127,255,255,253,47,255,255,255,255,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,127,0,0,0,7,255,255,241,170,170,255,170,170,128,11,255,255,242,255,255,255,255,255,192,11,255,255,242,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,170,170,170,168,0,11,255,255,240,11,255,255,255,252,0,11,255,255,240,11,255,255,255,252,0,11,255,255,240,11,224,0,2,252,0,0,0,0,0,11,224,0,2,252,0,0,0,0,0,11,250,170,171,252,0,0,0,0,0,11,255,255,255,252,0,11,255,255,240,11,255,255,255,252,0,11,255,255,240,11,224,0,2,252,0,11,255,255,240,11,224,0,2,252,0,11,224,3,240,11,250,170,171,252,0,11,224,3,240,11,255,255,255,252,0,11,224,3,240,11,255,255,255,252,0,11,224,3,240,11,224,0,2,252,0,11,224,3,240,11,224,0,2,252,0,11,224,3,240,11,224,0,2,252,0,11,255,255,240,11,224,0,2,252,0,11,255,255,240,11,224,0,2,252,0,11,255,255,240,11,224,3,255,252,0,11,224,0,0,11,224,1,255,248,0,6,144,0,0,11,224,0,255,144,0,0,0,0,0,0,0,0,0,0,0, + // 0x8b70 議 + 112,139,38,38,124,40,1,252,0,0,0,0,2,128,0,9,0,0,0,0,0,0,15,208,0,31,192,0,11,255,255,64,7,240,0,63,128,0,11,255,255,64,3,244,0,191,0,0,7,255,255,67,255,255,255,255,255,0,0,0,0,3,255,255,255,255,255,0,0,0,0,2,170,171,254,170,170,0,127,255,255,224,0,2,252,0,0,0,127,255,255,224,0,2,252,0,0,0,127,255,255,224,255,255,255,255,252,0,0,0,0,0,255,255,255,255,252,0,0,0,0,0,85,86,253,85,84,0,11,255,255,64,0,2,252,0,0,0,15,255,255,128,0,2,252,0,0,0,15,255,255,175,255,255,255,255,255,192,0,0,0,47,255,255,255,255,255,192,0,0,0,31,255,255,255,255,255,192,0,0,0,0,0,6,11,208,64,0,15,255,255,128,91,255,207,211,240,0,15,255,255,143,255,254,79,211,252,0,11,255,255,75,255,240,11,208,255,0,0,0,0,0,3,240,11,208,63,64,0,0,0,0,3,240,11,224,8,0,0,0,0,26,175,250,175,250,170,128,15,255,255,111,255,255,255,255,255,192,15,255,255,111,255,255,255,255,255,192,15,255,255,64,3,240,3,240,0,0,15,192,47,64,3,240,3,240,180,0,15,192,47,64,27,255,243,245,252,0,15,192,47,111,255,255,242,251,244,0,15,192,47,111,255,255,145,255,224,0,15,192,47,95,235,240,0,255,128,0,15,255,255,64,3,240,2,255,2,128,15,255,255,64,3,240,15,255,3,208,15,255,255,64,7,240,191,255,195,208,15,192,0,3,255,243,254,31,255,192,15,192,0,3,255,224,244,11,255,128,0,0,0,1,169,0,0,1,254,0, + // 0x8b80 讀 + 128,139,37,38,124,40,1,252,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,1,252,0,0,0,11,255,255,71,255,255,255,255,255,128,11,255,255,71,255,255,255,255,255,128,7,255,255,65,85,86,254,85,85,64,0,0,0,0,0,1,252,0,0,0,0,0,0,0,85,86,253,85,84,0,127,255,255,224,255,255,255,255,254,0,127,255,255,224,255,255,255,255,254,0,127,255,255,224,0,0,0,0,0,0,0,0,0,3,255,255,255,255,255,64,0,0,0,3,255,255,255,255,255,64,11,255,255,67,240,15,7,192,47,64,15,255,255,131,240,126,7,234,191,64,15,255,255,131,251,248,2,255,255,64,0,0,0,3,242,64,0,0,47,64,0,0,0,3,240,0,0,0,47,64,0,0,0,3,255,255,255,255,255,64,15,255,255,131,255,255,255,255,255,64,15,255,255,128,0,0,0,0,0,0,11,255,255,64,255,255,255,255,253,0,0,0,0,0,255,255,255,255,253,0,0,0,0,0,253,0,0,0,253,0,0,0,0,0,255,170,170,170,253,0,15,255,255,64,255,255,255,255,253,0,15,255,255,64,253,0,0,0,253,0,15,255,255,64,254,170,170,170,253,0,15,192,47,64,255,255,255,255,253,0,15,192,47,64,253,0,0,0,253,0,15,192,47,64,253,0,0,0,253,0,15,192,47,64,255,255,255,255,253,0,15,192,47,64,255,255,255,255,253,0,15,255,255,64,1,240,0,189,0,0,15,255,255,64,31,253,2,255,208,0,15,255,255,65,255,244,0,127,253,0,15,192,0,47,255,128,0,7,255,192,15,192,0,31,248,0,0,0,191,128,0,0,0,6,64,0,0,0,9,0, + // 0x8b8a 變 + 138,139,36,38,86,40,2,252,0,36,0,0,0,0,1,128,0,0,126,0,47,255,240,3,240,0,0,252,0,47,255,240,7,224,0,2,244,64,0,0,0,15,193,0,47,224,248,0,0,0,239,7,224,127,195,244,255,255,255,253,15,208,47,219,224,255,255,254,254,63,64,11,255,128,0,0,0,63,254,0,2,255,16,47,255,240,15,248,128,0,252,252,47,255,240,11,227,224,3,240,126,0,0,0,31,129,248,171,255,255,0,0,2,191,255,253,255,255,255,239,255,251,255,255,255,255,255,91,175,255,247,255,253,95,0,63,0,0,0,0,1,248,4,30,63,124,47,255,244,165,248,96,47,127,125,63,255,244,249,249,244,63,63,63,63,1,245,245,248,252,62,63,31,63,1,246,241,248,125,125,63,15,127,1,247,241,248,63,252,63,4,63,255,255,209,248,47,248,63,7,255,255,250,193,248,8,16,63,15,240,0,0,1,248,0,0,21,63,208,0,0,0,80,0,0,0,255,255,255,255,255,255,248,0,7,255,255,255,255,255,255,248,0,63,255,255,255,255,255,255,248,2,255,254,0,0,2,255,0,0,47,255,255,208,0,15,252,0,0,63,248,47,253,0,191,240,0,0,15,128,7,255,215,255,128,0,0,1,0,0,191,255,253,0,0,0,0,0,0,127,255,253,64,0,0,0,1,191,255,255,255,254,80,0,107,255,255,255,150,255,255,255,250,255,255,255,228,0,27,255,255,255,127,255,228,0,0,0,27,255,253,42,80,0,0,0,0,0,1,168, + // 0x8cc7 資 + 199,140,36,38,86,40,2,252,0,0,0,0,41,0,0,0,0,3,144,0,0,127,64,0,0,0,11,255,64,0,254,0,0,0,0,15,255,248,2,255,255,255,255,248,0,127,253,11,255,255,255,255,252,0,2,252,31,250,191,234,175,240,0,0,32,191,192,63,208,15,224,0,0,0,255,0,191,240,47,192,0,0,4,44,1,255,248,63,64,0,6,252,0,7,254,254,1,0,6,255,253,0,47,244,255,208,0,255,255,248,11,255,208,63,254,64,191,254,64,255,254,0,11,255,254,63,144,0,127,224,0,1,255,253,36,21,85,126,85,85,85,111,252,0,63,255,255,255,255,255,253,20,0,63,255,255,255,255,255,253,0,0,63,192,0,0,0,1,253,0,0,63,192,0,0,0,1,253,0,0,63,192,0,0,0,2,253,0,0,63,255,255,255,255,255,253,0,0,63,255,255,255,255,255,253,0,0,63,192,0,0,0,1,253,0,0,63,192,0,0,0,1,253,0,0,63,255,255,255,255,255,253,0,0,63,255,255,255,255,255,253,0,0,63,213,85,85,85,86,253,0,0,63,192,0,0,0,1,253,0,0,63,213,85,85,85,86,253,0,0,63,255,255,255,255,255,253,0,0,63,255,255,255,255,255,253,0,0,0,7,128,0,2,128,0,0,0,0,127,248,0,31,253,0,0,0,27,255,224,0,31,255,228,0,27,255,254,0,0,0,191,255,64,127,255,224,0,0,0,7,255,248,31,249,0,0,0,0,0,127,248,6,64,0,0,0,0,0,6,64, + // 0x8ddd 距 + 221,141,38,36,104,40,1,252,7,255,255,255,7,255,255,255,255,192,7,255,255,255,7,255,255,255,255,192,7,255,255,255,7,255,255,255,255,192,7,240,0,127,7,249,85,85,85,64,7,240,0,127,7,240,0,0,0,0,7,240,0,127,7,240,0,0,0,0,7,240,0,127,7,240,0,0,0,0,7,240,0,127,7,240,0,0,0,0,7,240,0,127,7,240,0,0,0,0,7,240,0,191,7,249,85,85,84,0,7,255,255,255,7,255,255,255,253,0,7,255,255,255,7,255,255,255,253,0,7,255,255,255,7,255,255,255,253,0,0,0,253,0,7,240,0,1,253,0,0,0,253,0,7,240,0,1,253,0,0,0,253,0,7,240,0,1,253,0,7,208,253,0,7,240,0,1,253,0,11,224,253,0,7,240,0,1,253,0,11,224,255,255,135,240,0,1,253,0,11,224,255,255,135,240,0,1,253,0,11,224,255,255,135,249,85,86,253,0,11,224,253,85,7,255,255,255,253,0,11,224,253,0,7,255,255,255,253,0,11,224,253,0,7,255,255,255,253,0,11,224,253,0,7,240,0,0,0,0,11,224,253,0,7,240,0,0,0,0,11,224,253,0,71,240,0,0,0,0,11,224,253,111,199,240,0,0,0,0,11,224,255,255,199,240,0,0,0,0,11,255,255,255,199,240,0,0,0,0,111,255,255,254,71,249,85,85,85,64,191,255,254,64,7,255,255,255,255,208,127,254,64,0,7,255,255,255,255,208,62,64,0,0,7,255,255,255,255,208,0,0,0,0,7,240,0,0,0,0,0,0,0,0,7,240,0,0,0,0, + // 0x8eca 車 + 202,142,36,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,21,85,85,85,255,85,85,85,84,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,47,255,255,255,255,255,255,255,248,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,85,85,85,85,255,85,85,85,85,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0, + // 0x8edf 軟 + 223,142,38,38,124,40,1,252,0,0,254,0,0,14,64,0,0,0,0,0,254,0,0,31,208,0,0,0,0,0,254,0,0,31,192,0,0,0,0,0,254,0,0,47,192,0,0,0,63,255,255,255,244,47,192,0,0,0,63,255,255,255,244,63,128,0,0,0,63,255,255,255,244,63,64,0,0,0,0,0,254,0,0,127,149,85,85,0,0,0,254,0,0,191,255,255,255,192,0,0,254,0,0,255,255,255,255,192,10,170,255,170,145,255,255,255,255,128,15,255,255,255,226,252,47,192,63,64,15,255,255,255,227,252,47,192,127,0,15,192,188,7,231,244,47,192,127,0,15,192,188,7,239,240,47,192,190,0,15,192,188,7,255,224,47,192,254,0,15,234,254,171,255,192,47,192,253,0,15,255,255,255,255,128,47,192,252,0,15,255,255,255,227,0,47,193,248,0,15,192,188,7,224,0,63,192,0,0,15,192,188,7,224,0,63,192,0,0,15,192,188,7,224,0,63,208,0,0,15,255,255,255,224,0,127,224,0,0,15,255,255,255,224,0,191,240,0,0,10,170,255,170,160,0,255,240,0,0,0,0,254,0,0,1,250,248,0,0,0,0,254,0,0,3,245,252,0,0,21,85,254,85,80,7,240,253,0,0,127,255,255,255,252,15,240,191,0,0,127,255,255,255,252,47,208,63,128,0,127,255,255,255,252,127,192,47,208,0,0,0,254,0,1,255,0,15,244,0,0,0,254,0,7,253,0,11,252,0,0,0,254,0,47,248,0,3,255,64,0,0,254,0,255,240,0,0,255,224,0,0,254,0,255,128,0,0,63,208,0,0,254,0,62,0,0,0,15,128,0,0,253,0,20,0,0,0,2,0, + // 0x8ef8 軸 + 248,142,36,38,86,40,1,252,0,1,252,0,0,0,31,192,0,0,1,252,0,0,0,31,192,0,0,1,252,0,0,0,31,192,0,0,1,252,0,0,0,31,192,0,0,2,252,0,0,0,31,192,0,63,255,255,255,208,0,31,192,0,63,255,255,255,208,0,31,192,0,63,255,255,255,208,0,31,192,0,0,1,252,0,0,0,31,192,0,0,1,252,0,7,255,255,255,255,10,171,254,170,135,255,255,255,255,15,255,255,255,199,255,255,255,255,15,255,255,255,199,245,111,213,127,15,128,248,15,199,240,31,192,63,15,128,248,15,199,240,31,192,63,15,128,248,15,199,240,31,192,63,15,234,254,175,199,240,31,192,63,15,255,255,255,199,240,31,192,63,15,255,255,255,199,240,31,192,63,15,128,248,15,199,240,31,192,63,15,128,248,15,199,255,255,255,255,15,128,248,15,199,255,255,255,255,15,255,255,255,199,255,255,255,255,15,255,255,255,199,245,111,213,127,10,171,254,170,135,240,31,192,63,0,1,252,0,7,240,31,192,63,0,1,252,0,7,240,31,192,63,21,86,253,85,87,240,31,192,63,127,255,255,255,247,240,31,192,63,127,255,255,255,247,240,31,192,63,127,255,255,255,247,240,31,192,63,0,1,252,0,7,240,31,192,63,0,1,252,0,7,255,255,255,255,0,1,252,0,7,255,255,255,255,0,1,252,0,7,255,255,255,255,0,1,252,0,7,245,85,85,127,0,1,252,0,7,240,0,0,63,0,1,252,0,3,224,0,0,21, + // 0x8f09 載 + 9,143,37,38,124,40,2,252,0,0,63,64,0,47,192,16,0,0,0,0,63,64,0,47,192,188,0,0,0,0,63,64,0,47,194,255,0,0,15,255,255,255,252,47,192,191,192,0,15,255,255,255,252,47,192,47,240,0,15,255,255,255,252,47,192,15,248,0,0,0,63,64,0,47,192,3,244,0,0,0,63,64,0,47,192,1,192,0,0,0,63,64,0,47,192,0,0,0,255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,255,0,0,0,63,64,0,31,208,0,0,0,0,0,63,64,0,31,208,0,0,0,26,170,191,234,170,15,208,2,64,0,47,255,255,255,255,15,224,7,240,0,47,255,255,255,255,15,224,15,240,0,0,0,63,64,0,15,224,15,224,0,0,0,63,64,0,15,240,47,192,0,15,255,255,255,252,11,240,63,128,0,15,255,255,255,252,11,240,127,64,0,15,192,63,0,188,7,244,255,0,0,15,192,63,0,188,7,245,254,0,0,15,255,255,255,252,3,251,252,0,0,15,255,255,255,252,3,255,244,0,0,15,192,63,0,188,2,255,240,0,0,15,192,63,0,188,2,255,192,0,0,15,255,255,255,252,1,255,128,16,0,15,255,255,255,252,1,255,0,45,0,0,0,63,0,0,3,255,0,47,64,0,0,63,0,0,15,255,128,63,64,42,170,255,234,170,63,255,192,63,0,127,255,255,255,255,255,239,224,63,0,127,255,255,255,255,255,15,248,191,0,0,0,63,0,47,252,7,255,254,0,0,0,63,0,63,240,2,255,252,0,0,0,63,0,15,128,0,191,244,0,0,0,63,0,5,0,0,6,64,0, + // 0x8f2f 輯 + 47,143,38,38,124,40,1,252,0,1,252,0,0,0,0,0,0,0,0,1,252,0,0,170,170,170,168,0,0,1,252,0,0,255,255,255,253,0,0,1,252,0,0,255,255,255,253,0,0,2,252,0,0,253,0,1,253,0,63,255,255,255,208,253,0,1,253,0,63,255,255,255,208,253,0,1,253,0,63,255,255,255,208,255,170,171,253,0,0,1,252,0,0,255,255,255,253,0,0,1,252,0,0,255,255,255,253,0,10,171,254,170,128,0,0,0,0,0,15,255,255,255,192,0,0,0,0,0,15,255,255,255,223,255,255,255,255,208,15,128,248,15,223,255,255,255,255,208,15,128,248,15,223,255,255,255,255,208,15,128,248,15,192,254,0,1,252,0,15,234,254,175,192,254,0,1,252,0,15,255,255,255,192,254,0,1,252,0,15,255,255,255,192,255,170,171,252,0,15,128,248,15,192,255,255,255,252,0,15,128,248,15,192,255,255,255,252,0,15,128,248,15,192,254,0,1,252,0,15,255,255,255,192,254,0,1,252,0,15,255,255,255,192,254,0,1,252,0,10,171,254,170,128,255,170,171,252,0,0,1,252,0,0,255,255,255,252,0,0,1,252,0,0,255,255,255,252,0,21,86,253,85,80,254,0,1,252,0,127,255,255,255,240,254,0,1,252,0,127,255,255,255,240,254,0,1,252,0,127,255,255,255,240,254,106,255,255,208,0,1,252,0,63,255,255,255,255,208,0,1,252,0,63,255,255,255,255,208,0,1,252,0,63,255,234,81,252,0,0,1,252,0,20,0,0,1,252,0,0,1,252,0,0,0,0,1,252,0,0,1,252,0,0,0,0,1,252,0,0,1,252,0,0,0,0,0,168,0, + // 0x8f38 輸 + 56,143,38,38,124,40,1,252,0,3,240,0,0,0,106,64,0,0,0,3,240,0,0,0,255,192,0,0,0,3,240,0,0,1,255,224,0,0,0,3,240,0,0,3,255,248,0,0,63,255,255,255,64,15,242,253,0,0,63,255,255,255,64,47,208,255,64,0,63,255,255,255,64,191,128,63,208,0,0,7,244,0,2,255,0,31,244,0,0,3,240,0,11,252,0,7,254,0,0,3,240,0,63,240,0,1,255,208,26,175,254,170,255,255,255,255,127,240,31,255,255,254,255,191,255,255,31,192,31,255,255,254,189,63,255,255,3,128,31,66,224,62,52,0,0,0,0,0,31,66,224,62,0,0,0,0,0,0,31,66,224,62,0,0,0,0,21,0,31,171,250,190,42,170,160,0,47,64,31,255,255,254,63,255,240,168,47,64,31,255,255,254,63,255,240,252,47,64,31,66,224,62,63,1,240,252,47,64,31,66,224,62,63,1,240,252,47,64,31,66,224,62,63,170,240,252,47,64,31,255,255,254,63,255,240,252,47,64,31,255,255,254,63,255,240,252,47,64,26,171,250,169,63,1,240,252,47,64,0,3,240,0,63,1,240,252,47,64,0,3,240,0,63,1,240,252,47,64,21,87,245,85,63,171,240,252,47,64,127,255,255,255,63,255,240,252,47,64,127,255,255,255,63,255,240,252,47,64,127,255,255,255,63,1,240,252,47,64,0,3,240,0,63,1,240,84,47,64,0,3,240,0,63,1,240,0,47,64,0,3,240,0,63,1,240,0,47,64,0,3,240,0,63,1,240,0,47,64,0,3,240,0,63,31,240,47,255,0,0,3,240,0,63,15,240,15,255,0,0,3,240,0,21,6,64,10,164,0, + // 0x8f49 轉 + 73,143,38,38,124,40,1,252,0,2,248,0,0,0,47,64,0,0,0,2,248,0,0,0,47,128,0,0,0,2,248,0,0,0,47,128,0,0,0,2,248,0,47,255,255,255,255,192,0,3,254,170,111,255,255,255,255,192,63,255,255,255,159,255,255,255,255,128,63,255,255,255,128,0,47,128,0,0,63,255,255,255,128,0,47,128,0,0,0,2,248,0,15,255,255,255,255,0,0,2,248,0,15,255,255,255,255,0,10,171,254,170,15,192,47,128,63,0,15,255,255,255,15,192,47,128,63,0,15,255,255,255,15,255,255,255,255,0,15,129,240,47,15,255,255,255,255,0,15,129,240,47,15,208,47,128,63,0,15,129,240,47,15,192,47,128,63,0,15,234,250,191,15,255,255,255,255,0,15,255,255,255,15,255,255,255,255,0,15,255,255,255,0,0,47,130,244,0,15,129,240,47,0,0,47,131,248,0,15,129,240,47,0,0,47,129,254,0,15,129,240,47,63,255,255,255,255,0,15,255,255,255,63,255,255,255,255,192,15,255,255,255,47,234,170,169,95,208,10,171,254,170,0,0,0,47,134,0,0,2,248,0,0,0,0,63,128,0,0,2,248,0,63,255,255,255,255,208,21,87,248,0,63,255,255,255,255,208,127,255,255,255,255,255,255,255,255,208,127,255,255,255,192,180,0,63,128,0,127,255,255,255,194,253,0,63,128,0,0,2,248,0,0,255,0,63,128,0,0,2,248,0,0,63,192,63,128,0,0,2,248,0,0,31,192,63,128,0,0,2,248,0,0,14,0,63,128,0,0,2,248,0,0,0,191,255,128,0,0,2,248,0,0,0,63,255,0,0,0,2,248,0,0,0,63,248,0,0, + // 0x8fd1 近 + 209,143,38,38,124,40,1,252,0,0,0,0,0,0,0,2,0,0,1,64,0,0,0,0,1,191,208,0,11,224,0,0,0,5,191,255,244,0,31,252,0,2,234,255,255,255,228,0,7,255,0,2,255,255,255,249,0,0,1,255,192,2,255,255,229,0,0,0,0,63,240,2,254,80,0,0,0,0,0,15,248,2,252,0,0,0,0,0,0,3,224,2,252,0,0,0,0,0,0,1,128,2,252,0,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,0,2,252,0,0,0,0,0,0,0,0,2,255,255,255,255,255,192,0,0,0,2,255,255,255,255,255,192,0,0,0,2,255,255,255,255,255,192,0,0,0,2,253,85,95,245,85,64,63,255,240,3,252,0,15,240,0,0,63,255,240,3,248,0,15,240,0,0,63,255,240,3,248,0,15,240,0,0,21,95,240,3,244,0,15,240,0,0,0,15,240,7,240,0,15,240,0,0,0,15,240,11,240,0,15,240,0,0,0,15,240,15,224,0,15,240,0,0,0,15,240,31,208,0,15,240,0,0,0,15,240,63,192,0,15,240,0,0,0,15,240,127,128,0,15,240,0,0,0,15,240,255,0,0,15,240,0,0,0,15,243,254,0,0,15,240,0,0,0,15,242,252,0,0,15,240,0,0,0,15,240,180,0,0,15,240,0,0,0,127,252,16,0,0,15,240,0,0,2,255,255,64,0,0,6,144,0,0,15,255,191,244,0,0,0,0,0,0,127,252,47,255,250,170,170,170,171,208,63,224,11,255,255,255,255,255,255,192,47,128,0,191,255,255,255,255,255,128,13,0,0,6,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0, + // 0x8fd4 返 + 212,143,38,37,114,40,1,252,1,64,0,0,0,0,0,0,0,0,11,224,0,11,255,255,255,255,255,0,31,252,0,11,255,255,255,255,255,0,7,255,0,11,255,255,255,255,255,0,1,255,192,11,245,85,85,85,85,0,0,127,224,11,240,0,0,0,0,0,0,31,244,11,240,0,0,0,0,0,0,11,224,11,240,0,0,0,0,0,0,3,64,11,240,0,0,0,0,0,0,0,0,11,245,85,85,85,64,0,0,0,0,11,255,255,255,255,248,0,0,0,0,15,255,255,255,255,244,0,0,0,0,15,255,255,255,255,240,0,0,0,0,15,251,240,0,15,240,0,0,0,0,15,243,248,0,31,208,0,63,255,208,15,226,252,0,63,192,0,63,255,208,15,225,253,0,127,128,0,63,255,208,15,208,255,0,255,0,0,21,111,208,31,208,127,194,254,0,0,0,15,208,31,192,47,215,252,0,0,0,15,208,63,192,15,255,244,0,0,0,15,208,63,192,7,255,224,0,0,0,15,208,127,64,3,255,192,0,0,0,15,208,191,0,7,255,208,0,0,0,15,208,255,0,47,255,248,0,0,0,15,209,253,0,255,255,255,64,0,0,15,211,252,27,255,195,255,248,0,0,15,219,244,255,254,0,191,255,128,0,31,242,240,127,244,0,31,255,128,0,191,248,80,47,64,0,1,255,0,2,255,255,0,4,0,0,0,29,0,15,254,255,228,0,0,0,0,0,0,127,248,63,255,234,149,86,170,170,208,63,224,11,255,255,255,255,255,255,192,47,64,1,255,255,255,255,255,255,128,13,0,0,6,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0, + // 0x9000 退 + 0,144,38,37,114,40,1,252,0,64,0,0,0,0,0,0,0,0,3,224,0,3,255,255,255,255,208,0,15,252,0,3,255,255,255,255,208,0,7,255,64,3,255,255,255,255,208,0,0,255,208,3,248,0,0,15,208,0,0,63,244,3,248,0,0,15,208,0,0,15,252,3,248,0,0,15,208,0,0,3,240,3,255,255,255,255,208,0,0,0,128,3,255,255,255,255,208,0,0,0,0,3,255,255,255,255,208,0,0,0,0,3,248,0,0,15,208,0,0,0,0,3,248,0,0,15,208,0,0,0,0,3,248,0,0,15,208,0,0,0,0,3,255,255,255,255,208,0,0,0,0,3,255,255,255,255,208,0,63,255,240,3,255,255,255,255,224,0,63,255,240,3,248,7,244,0,120,0,63,255,240,3,248,3,248,1,255,0,21,95,240,3,248,1,252,11,255,0,0,15,240,3,248,0,254,63,244,0,0,15,240,3,248,0,191,255,192,0,0,15,240,3,248,0,63,253,0,0,0,15,240,3,248,0,47,240,0,0,0,15,240,3,248,0,15,248,0,0,0,15,240,3,248,27,231,255,0,0,0,15,240,3,255,255,241,255,208,0,0,15,240,111,255,255,240,127,253,0,0,15,240,191,255,254,64,31,255,192,0,15,240,127,254,64,0,7,255,0,0,127,252,62,64,0,0,0,125,0,2,255,255,64,0,0,0,0,4,0,15,255,191,244,0,0,0,0,0,0,127,252,47,255,250,170,170,170,171,208,63,224,11,255,255,255,255,255,255,192,47,128,0,191,255,255,255,255,255,128,13,0,0,6,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0, + // 0x901f 速 + 31,144,38,38,124,40,1,252,0,0,0,0,0,11,224,0,0,0,1,128,0,0,0,15,224,0,0,0,11,240,0,0,0,15,224,0,0,0,31,253,0,0,0,15,224,0,0,0,7,255,64,255,255,255,255,255,255,128,0,255,208,255,255,255,255,255,255,128,0,63,244,255,255,255,255,255,255,128,0,15,248,0,0,15,240,0,0,0,0,3,208,0,0,15,224,0,0,0,0,1,64,0,0,15,224,0,0,0,0,0,0,47,255,255,255,255,252,0,0,0,0,47,255,255,255,255,252,0,0,0,0,47,255,255,255,255,252,0,0,0,0,47,128,15,224,2,252,0,0,0,0,47,128,15,224,2,252,0,0,0,0,47,128,15,224,2,252,0,63,255,240,47,128,15,224,2,252,0,63,255,240,47,128,15,224,2,252,0,63,255,240,47,255,255,255,255,252,0,21,95,240,47,255,255,255,255,252,0,0,15,240,47,255,255,255,255,252,0,0,15,240,0,0,255,254,0,0,0,0,15,240,0,3,255,255,128,0,0,0,15,240,0,15,255,255,224,0,0,0,15,240,0,63,223,231,252,0,0,0,15,240,1,255,79,225,255,64,0,0,15,240,11,253,15,224,127,240,0,0,15,240,127,244,15,224,31,254,0,0,15,242,255,208,15,224,7,255,128,0,15,240,255,0,15,224,0,254,0,0,127,252,52,0,15,224,0,28,0,2,255,255,64,0,15,224,0,0,0,15,255,191,244,0,0,0,0,0,0,127,252,47,255,250,170,170,170,171,208,63,224,11,255,255,255,255,255,255,192,47,128,0,191,255,255,255,255,255,128,13,0,0,6,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0, + // 0x9023 連 + 35,144,36,38,86,40,2,252,0,0,0,0,0,42,0,0,0,0,0,0,0,0,127,64,0,0,31,0,0,0,0,127,64,0,0,127,208,0,0,0,127,64,0,0,63,244,11,255,255,255,255,255,252,15,253,11,255,255,255,255,255,252,2,255,11,255,255,255,255,255,252,0,255,192,0,0,127,64,0,0,0,63,128,0,0,127,64,0,0,0,13,0,255,255,255,255,255,208,0,0,0,255,255,255,255,255,208,0,0,0,255,170,191,234,175,208,0,0,0,253,0,127,64,31,208,0,0,0,253,0,127,64,31,208,0,0,0,255,170,191,170,175,208,0,0,0,255,255,255,255,255,208,255,255,64,255,255,255,255,255,208,255,255,64,253,0,127,64,31,208,255,255,64,253,0,127,64,31,208,85,191,64,253,0,127,64,31,208,0,127,64,255,255,255,255,255,208,0,127,64,255,255,255,255,255,208,0,127,64,170,170,255,234,170,128,0,127,64,0,0,127,64,0,0,0,127,64,0,0,127,64,0,0,0,127,79,255,255,255,255,255,254,0,127,79,255,255,255,255,255,254,0,127,79,255,255,255,255,255,254,0,127,64,0,0,127,64,0,0,0,127,128,0,0,127,64,0,0,1,255,208,0,0,127,64,0,0,11,255,248,0,0,127,64,0,0,63,251,255,64,0,0,0,0,0,255,208,255,254,149,85,85,86,170,255,64,63,255,255,255,255,255,255,189,0,7,255,255,255,255,255,254,52,0,0,27,255,255,255,255,253,0,0,0,0,0,0,0,0,0, + // 0x9032 進 + 50,144,36,38,86,40,2,252,0,0,0,0,144,0,16,0,0,9,0,0,0,255,0,63,192,0,63,128,0,2,254,0,127,128,0,127,224,0,3,252,0,191,0,0,31,252,0,11,248,0,255,0,0,7,255,0,31,240,1,253,0,0,1,255,128,63,255,255,255,255,252,0,127,192,191,255,255,255,255,252,0,47,1,255,255,255,255,255,252,0,8,7,255,192,7,248,0,0,0,0,15,255,128,3,244,0,0,0,0,63,255,128,3,244,0,0,0,0,255,255,128,3,244,0,0,0,0,255,191,255,255,255,255,240,0,0,62,63,255,255,255,255,240,0,0,8,63,255,255,255,255,240,255,255,64,63,128,3,244,0,0,255,255,64,63,128,3,244,0,0,255,255,64,63,128,3,244,0,0,85,191,64,63,128,3,244,0,0,0,127,64,63,255,255,255,255,224,0,127,64,63,255,255,255,255,224,0,127,64,63,255,255,255,255,224,0,127,64,63,128,3,244,0,0,0,127,64,63,128,3,244,0,0,0,127,64,63,128,3,244,0,0,0,127,64,63,128,7,248,0,0,0,127,64,63,255,255,255,255,253,0,127,64,63,255,255,255,255,253,0,127,128,63,255,255,255,255,253,1,255,208,0,0,0,0,0,0,11,255,248,0,0,0,0,0,0,63,251,255,64,0,0,0,0,0,255,208,255,254,149,85,85,86,170,255,64,63,255,255,255,255,255,255,189,0,7,255,255,255,255,255,254,52,0,0,27,255,255,255,255,253,0,0,0,0,0,0,0,0,0, + // 0x904b 運 + 75,144,36,37,77,40,2,252,5,0,6,170,170,170,170,170,168,47,64,7,255,255,255,255,255,252,191,224,7,255,255,255,255,255,252,47,248,7,240,0,0,0,0,252,11,254,7,240,0,42,64,0,252,2,255,70,160,0,63,128,0,168,0,191,192,0,0,63,128,0,0,0,63,130,255,255,255,255,255,240,0,13,2,255,255,255,255,255,240,0,0,1,170,170,191,234,170,160,0,0,0,0,0,63,128,0,0,0,0,0,21,85,127,149,85,64,0,0,0,127,255,255,255,255,192,0,0,0,127,255,255,255,255,192,0,0,0,126,0,63,128,15,192,255,255,64,126,0,63,128,15,192,255,255,64,127,255,255,255,255,192,255,255,64,127,255,255,255,255,192,85,191,64,127,0,127,128,31,192,0,127,64,126,0,63,128,15,192,0,127,64,126,0,63,128,15,192,0,127,64,127,255,255,255,255,192,0,127,64,127,255,255,255,255,192,0,127,64,21,85,127,149,85,64,0,127,64,0,0,63,128,0,0,0,127,79,255,255,255,255,255,254,0,127,79,255,255,255,255,255,255,0,127,79,255,255,255,255,255,255,0,127,128,0,0,63,128,0,0,1,255,208,0,0,63,128,0,0,11,255,248,0,0,63,128,0,0,63,251,255,64,0,21,0,0,0,255,208,255,254,149,85,85,86,170,255,64,63,255,255,255,255,255,255,189,0,7,255,255,255,255,255,254,52,0,0,27,255,255,255,255,253,0,0,0,0,0,0,0,0,0, + // 0x9054 達 + 84,144,37,38,124,40,1,252,0,0,0,0,0,15,208,0,0,0,1,64,0,0,0,15,224,0,0,0,11,208,0,0,0,15,224,0,0,0,47,248,0,31,255,255,255,255,240,0,11,254,0,31,255,255,255,255,240,0,2,255,128,26,170,175,250,170,160,0,0,127,208,0,0,15,224,0,0,0,0,47,240,0,0,15,224,0,0,0,0,11,210,170,170,191,250,170,170,128,0,3,3,255,255,255,255,255,255,192,0,0,3,255,255,255,255,255,255,192,0,0,0,0,253,0,0,253,0,0,0,0,0,0,191,0,2,253,0,0,0,0,0,0,127,64,3,252,0,0,0,0,0,0,63,128,7,240,0,0,0,0,0,170,191,234,171,250,170,0,63,255,209,255,255,255,255,255,255,64,63,255,209,255,255,255,255,255,255,64,63,255,208,0,0,15,224,0,0,0,21,111,208,0,0,15,224,0,0,0,0,31,208,42,170,175,250,170,168,0,0,31,208,63,255,255,255,255,252,0,0,31,208,63,255,255,255,255,252,0,0,31,208,0,0,15,224,0,0,0,0,31,208,0,0,15,224,0,0,0,0,31,209,255,255,255,255,255,255,64,0,31,210,255,255,255,255,255,255,64,0,31,210,255,255,255,255,255,255,64,0,31,208,0,0,15,224,0,0,0,0,47,224,0,0,15,224,0,0,0,0,191,248,0,0,15,224,0,0,0,2,255,254,0,0,10,144,0,0,0,15,254,255,224,0,0,0,0,0,0,127,244,63,255,165,85,85,85,170,128,63,208,15,255,255,255,255,255,255,192,47,64,1,255,255,255,255,255,255,128,13,0,0,6,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0, + // 0x9078 選 + 120,144,38,37,114,40,1,252,2,0,1,85,85,80,85,85,84,0,31,192,3,255,255,244,255,255,253,0,63,240,3,255,255,244,255,255,253,0,15,252,0,0,3,244,0,0,253,0,3,255,0,0,3,244,0,0,253,0,0,255,128,170,171,244,42,170,253,0,0,127,209,255,255,244,127,255,253,0,0,47,193,255,255,244,127,255,253,0,0,13,1,248,0,0,127,0,0,0,0,0,1,252,0,57,127,0,11,128,0,0,0,254,170,254,63,170,175,192,0,0,0,255,255,252,63,255,255,128,0,0,0,47,255,244,11,255,254,0,0,0,0,0,21,64,1,80,0,0,0,0,0,0,63,128,11,240,0,0,63,255,192,0,63,128,11,240,0,0,63,255,193,170,191,234,175,250,170,0,63,255,193,255,255,255,255,255,254,0,21,127,193,255,255,255,255,255,254,0,0,47,192,0,63,128,11,240,0,0,0,47,192,0,63,128,11,240,0,0,0,47,192,0,63,128,11,240,0,0,0,47,203,255,255,255,255,255,255,192,0,47,203,255,255,255,255,255,255,192,0,47,203,255,255,255,255,255,255,192,0,47,192,0,10,0,0,128,0,0,0,47,192,0,127,208,11,248,0,0,0,47,192,7,255,128,7,255,128,0,0,47,192,127,253,0,0,127,244,0,0,191,241,255,224,0,0,15,254,0,2,255,252,62,0,0,0,2,254,0,15,254,255,144,0,0,0,0,80,0,63,244,127,254,85,0,0,21,85,144,127,208,31,255,255,255,255,255,255,192,63,64,2,255,255,255,255,255,255,192,28,0,0,27,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0, + // 0x9084 還 + 132,144,36,37,77,40,2,252,10,0,2,255,255,255,255,255,240,127,192,2,255,255,255,255,255,240,127,240,2,248,31,192,253,11,240,31,252,2,248,15,128,252,7,240,7,254,2,248,15,128,252,7,240,1,255,130,248,15,128,252,7,240,0,191,194,255,255,255,255,255,240,0,47,66,255,255,255,255,255,240,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,255,0,0,47,255,255,255,255,255,255,0,0,26,170,170,170,170,170,170,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,255,255,128,255,255,64,127,255,255,255,255,128,255,255,64,127,0,0,0,63,128,255,255,64,127,0,0,0,63,128,85,191,64,127,0,0,0,63,128,0,127,64,127,0,0,0,63,128,0,127,64,127,255,255,255,255,128,0,127,64,127,255,255,255,255,208,0,127,64,0,7,255,64,11,248,0,127,64,0,47,255,208,47,224,0,127,64,1,255,255,248,255,64,0,127,64,31,254,255,255,252,0,0,127,66,255,244,191,127,244,0,0,127,79,255,128,191,15,255,144,0,127,135,253,0,191,1,255,253,1,255,209,128,0,191,0,31,248,11,255,248,0,0,191,0,0,160,63,251,255,64,0,106,0,0,0,255,208,255,254,149,85,85,86,170,255,64,63,255,255,255,255,255,255,189,0,7,255,255,255,255,255,254,52,0,0,27,255,255,255,255,253,0,0,0,0,0,0,0,0,0, + // 0x908a 邊 + 138,144,38,38,124,40,1,252,0,0,0,0,0,15,144,0,0,0,1,244,0,0,0,31,192,0,0,0,7,254,0,15,255,255,255,255,208,0,2,255,192,15,250,170,170,175,208,0,0,127,240,15,224,0,0,15,208,0,0,15,252,15,250,170,170,175,208,0,0,3,240,15,255,255,255,255,208,0,0,0,128,15,224,0,0,15,208,0,0,0,0,15,250,170,170,175,208,0,7,128,0,15,255,255,255,255,208,0,31,244,0,15,224,0,0,15,208,0,47,254,0,15,224,0,0,15,208,0,7,255,128,15,255,255,255,255,208,0,0,191,224,10,170,191,250,170,144,0,0,31,192,0,0,15,192,0,0,0,0,7,2,255,255,255,255,255,255,64,0,0,2,255,255,255,255,255,255,64,0,0,2,248,7,208,188,1,63,64,0,0,2,248,31,192,189,3,255,64,63,255,192,1,255,0,127,255,192,0,63,255,192,127,252,15,255,255,64,0,63,255,192,63,144,15,192,0,0,0,21,111,192,20,0,31,208,0,0,0,0,31,195,255,255,255,255,255,255,128,0,31,195,255,255,255,255,255,255,128,0,31,192,0,7,240,0,0,0,0,0,31,192,0,11,255,255,255,128,0,0,31,192,0,47,255,255,255,64,0,0,31,192,0,191,64,0,63,64,0,0,47,192,11,254,0,0,63,0,0,0,127,241,255,244,0,0,191,0,0,2,255,252,191,64,2,255,253,0,0,15,254,255,244,0,1,255,244,0,0,127,244,127,255,165,85,85,85,90,144,127,208,31,255,255,255,255,255,255,192,63,64,1,255,255,255,255,255,255,128,29,0,0,10,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0, + // 0x90e8 部 + 232,144,38,38,124,40,1,252,0,0,21,64,0,0,0,0,0,0,0,0,47,192,0,0,0,0,0,0,0,0,47,192,0,1,85,85,88,0,0,0,47,192,0,7,255,255,255,128,0,0,47,192,0,7,255,255,255,208,31,255,255,255,255,135,255,255,255,192,31,255,255,255,255,135,244,0,191,64,31,255,255,255,255,135,244,0,255,0,0,4,0,1,64,7,244,1,254,0,0,189,0,3,244,7,244,2,252,0,0,191,0,7,240,7,244,3,252,0,0,63,0,15,224,7,244,7,244,0,0,63,64,15,208,7,244,15,240,0,0,47,128,31,192,7,244,15,224,0,0,47,128,47,64,7,244,47,192,0,21,105,85,86,85,71,244,63,128,0,127,255,255,255,255,199,244,127,128,0,127,255,255,255,255,199,244,63,208,0,127,255,255,255,255,199,244,15,240,0,0,0,0,0,0,7,244,3,252,0,0,0,0,0,0,7,244,1,253,0,0,0,0,0,0,7,244,0,255,0,0,85,85,85,84,7,244,0,127,0,3,255,255,255,252,7,244,0,63,128,3,255,255,255,252,7,244,0,63,128,3,255,255,255,252,7,244,0,63,192,3,248,0,1,252,7,244,0,63,192,3,248,0,1,252,7,244,0,63,128,3,248,0,1,252,7,244,0,255,128,3,248,0,1,252,7,244,255,255,64,3,248,0,1,252,7,244,191,255,0,3,248,0,1,252,7,244,127,252,0,3,255,255,255,252,7,244,42,144,0,3,255,255,255,252,7,244,0,0,0,3,255,255,255,252,7,244,0,0,0,3,252,0,2,252,7,244,0,0,0,3,248,0,1,252,7,244,0,0,0,2,164,0,0,84,7,240,0,0,0, + // 0x91cb 釋 + 203,145,38,38,124,40,1,252,0,0,0,16,0,0,0,0,0,0,0,0,27,248,42,170,170,170,170,0,1,107,255,254,63,255,255,255,255,0,63,255,255,244,63,255,255,255,255,0,63,255,248,0,63,7,192,240,63,0,25,67,244,0,63,7,192,240,63,0,1,3,244,61,63,7,192,240,63,0,15,67,244,63,63,7,192,240,63,0,15,195,244,127,63,175,234,250,191,0,15,195,244,189,63,255,255,255,255,0,7,211,244,252,63,255,255,255,255,0,3,227,244,248,0,0,127,0,0,0,3,243,246,240,0,0,127,0,0,0,3,211,245,240,15,255,255,255,252,0,0,3,244,0,15,255,255,255,252,0,127,255,255,255,6,170,191,170,168,0,127,255,255,255,0,0,127,0,0,0,127,255,255,255,0,0,127,0,0,0,0,15,244,0,255,255,255,255,255,208,0,31,244,0,255,255,255,255,255,208,0,47,253,0,170,254,170,175,234,128,0,63,255,64,0,252,0,15,192,0,0,127,255,208,0,253,0,31,128,0,0,255,255,244,0,127,0,63,0,0,1,251,246,253,0,63,0,125,0,0,3,243,244,254,191,255,255,255,255,128,7,227,244,60,191,255,255,255,255,128,15,211,244,16,106,170,255,170,170,64,47,195,244,0,0,0,127,0,0,0,127,67,244,0,0,0,127,0,0,0,127,3,244,0,47,255,255,255,254,0,45,3,244,0,47,255,255,255,254,0,24,3,244,0,26,170,255,170,169,0,0,3,244,0,0,0,127,0,0,0,0,3,244,0,0,0,127,0,0,0,0,3,244,0,0,0,127,0,0,0,0,3,244,0,0,0,127,0,0,0,0,2,240,0,0,0,127,0,0,0, + // 0x91cd 重 + 205,145,36,37,77,40,2,253,0,0,0,0,0,0,21,180,0,0,0,0,85,170,255,255,252,0,1,255,255,255,255,255,255,254,0,0,255,255,255,255,255,250,80,0,0,255,255,255,255,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,106,170,170,255,170,170,169,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,0,254,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,85,85,255,85,85,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,0,254,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,170,170,255,170,170,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x91cf 量 + 207,145,36,36,68,40,2,253,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,192,0,0,0,3,252,0,0,63,128,0,0,0,3,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,63,128,0,0,0,3,252,0,0,63,128,0,0,0,3,252,0,0,63,255,255,255,255,255,252,0,0,63,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,170,170,170,170,170,170,170,170,170,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,0,255,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,191,0,0,255,0,0,255,0,0,191,0,0,254,0,0,255,0,0,191,255,255,255,255,255,255,0,0,191,255,255,255,255,255,255,0,0,0,0,0,255,0,0,0,0,0,0,0,0,254,0,0,0,0,1,170,170,170,255,170,170,170,64,2,255,255,255,255,255,255,255,128,2,255,255,255,255,255,255,255,128,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x91dd 針 + 221,145,38,38,124,40,1,252,0,0,254,0,0,0,5,80,0,0,0,2,255,192,0,0,15,224,0,0,0,3,255,240,0,0,15,224,0,0,0,11,255,252,0,0,15,224,0,0,0,15,243,255,0,0,15,224,0,0,0,63,208,255,192,0,15,224,0,0,0,191,128,63,240,0,15,224,0,0,1,255,0,15,252,0,15,224,0,0,3,252,0,3,252,0,15,224,0,0,15,244,0,1,240,0,15,224,0,0,127,240,0,0,128,0,15,224,0,0,191,255,255,255,0,0,15,224,0,0,47,255,255,255,0,0,15,224,0,0,8,255,255,255,10,170,175,250,170,144,0,0,254,0,15,255,255,255,255,208,0,0,254,0,15,255,255,255,255,208,0,0,254,0,15,255,255,255,255,208,5,85,255,85,80,0,15,224,0,0,31,255,255,255,240,0,15,224,0,0,31,255,255,255,240,0,15,224,0,0,31,255,255,255,240,0,15,224,0,0,0,0,254,0,0,0,15,224,0,0,0,0,254,1,0,0,15,224,0,0,7,192,254,11,224,0,15,224,0,0,7,208,254,15,208,0,15,224,0,0,3,224,254,15,192,0,15,224,0,0,3,240,254,31,128,0,15,224,0,0,2,240,254,47,64,0,15,224,0,0,1,244,254,63,0,0,15,224,0,0,1,248,254,46,0,0,15,224,0,0,0,144,254,0,16,0,15,224,0,0,0,0,255,111,244,0,15,224,0,0,0,22,255,255,244,0,15,224,0,0,47,255,255,255,244,0,15,224,0,0,63,255,255,250,64,0,15,224,0,0,47,255,164,0,0,0,15,224,0,0,30,80,0,0,0,0,15,224,0,0,0,0,0,0,0,0,10,160,0,0, + // 0x9215 鈕 + 21,146,38,37,114,40,1,253,0,3,248,0,0,0,0,0,0,0,0,11,254,0,0,0,0,0,0,0,0,15,255,128,10,170,170,170,160,0,0,47,255,240,15,255,255,255,244,0,0,63,207,252,15,255,255,255,244,0,0,255,3,254,15,255,255,255,244,0,2,254,0,255,128,11,240,7,244,0,7,252,0,127,192,15,240,7,244,0,31,240,0,31,128,15,224,7,244,0,127,208,0,10,0,15,224,7,240,0,191,255,255,252,0,15,224,7,240,0,47,255,255,252,0,15,208,7,240,0,7,255,255,252,0,15,208,7,240,0,0,3,248,0,0,15,208,7,240,0,0,3,244,0,0,31,192,7,240,0,0,3,244,0,0,31,192,7,240,0,0,3,244,0,0,31,192,11,240,0,47,255,255,255,63,255,255,255,255,208,47,255,255,255,63,255,255,255,255,208,47,255,255,255,63,255,255,255,255,208,0,3,248,0,42,191,234,175,250,144,0,3,244,0,0,63,128,11,240,0,1,67,244,61,0,63,128,15,240,0,15,131,244,62,0,63,64,15,240,0,11,195,244,125,0,63,64,15,224,0,7,211,244,188,0,127,0,15,224,0,3,227,244,252,0,127,0,15,224,0,3,227,244,248,0,191,0,15,224,0,3,243,245,240,0,191,0,15,224,0,2,243,244,176,0,191,0,15,208,0,0,3,244,1,64,254,0,15,208,0,0,3,250,191,128,254,0,31,208,0,0,91,255,255,128,253,0,31,208,0,63,255,255,255,255,255,255,255,255,208,63,255,255,147,255,255,255,255,255,208,47,254,64,3,255,255,255,255,255,208,25,0,0,1,170,170,170,170,170,144, + // 0x932f 錯 + 47,147,38,38,124,40,1,252,0,3,248,0,0,63,64,63,64,0,0,11,254,0,0,63,64,63,64,0,0,15,255,128,0,63,64,63,64,0,0,47,255,240,0,63,64,63,64,0,0,63,143,252,0,63,64,63,64,0,0,255,3,254,47,255,255,255,255,64,2,254,0,255,175,255,255,255,255,64,7,252,0,127,255,255,255,255,255,64,31,240,0,31,128,63,64,63,64,0,127,208,0,10,0,63,64,63,64,0,191,255,255,252,0,63,64,63,64,0,47,255,255,252,0,63,64,63,64,0,7,255,255,252,0,63,64,63,64,0,0,3,248,0,85,127,149,127,149,64,0,3,244,0,255,255,255,255,255,208,0,3,244,0,255,255,255,255,255,208,0,3,244,0,255,255,255,255,255,208,47,255,255,255,0,0,0,0,0,0,47,255,255,255,0,0,0,0,0,0,47,255,255,255,0,0,0,0,0,0,0,3,248,0,3,255,255,255,252,0,0,3,244,0,3,255,255,255,252,0,1,67,244,57,3,255,255,255,252,0,15,131,244,63,3,244,0,1,252,0,11,195,244,125,3,244,0,1,252,0,7,211,244,188,3,244,0,1,252,0,3,227,244,252,3,255,255,255,252,0,3,227,244,248,3,255,255,255,252,0,3,243,245,240,3,255,255,255,252,0,2,243,244,176,3,244,0,1,252,0,0,3,244,1,67,244,0,1,252,0,0,3,254,255,131,244,0,1,252,0,0,111,255,255,131,244,0,1,252,0,63,255,255,255,131,255,255,255,252,0,63,255,255,144,3,255,255,255,252,0,47,254,64,0,3,255,255,255,252,0,25,0,0,0,3,244,0,1,252,0,0,0,0,0,2,160,0,1,168,0, + // 0x9375 鍵 + 117,147,38,38,124,40,1,252,0,7,224,0,0,0,2,240,0,0,0,15,248,0,0,0,3,244,0,0,0,31,254,0,0,0,3,244,0,0,0,63,255,75,255,226,255,255,254,0,0,191,127,203,255,226,255,255,254,0,0,254,15,255,255,194,255,255,254,0,3,252,7,253,95,192,3,244,62,0,11,244,2,252,31,128,3,244,62,0,31,224,0,240,47,64,3,244,63,64,127,192,0,64,63,31,255,255,255,224,255,255,255,208,126,31,255,255,255,224,63,255,255,208,189,31,255,255,255,224,11,255,255,208,252,0,3,244,62,0,0,11,208,1,252,0,3,244,62,0,0,11,208,2,248,1,255,255,254,0,0,11,208,3,255,250,255,255,254,0,0,11,208,7,255,246,255,255,254,0,63,255,255,251,255,244,3,244,0,0,63,255,255,246,194,244,3,244,0,0,63,255,255,240,2,240,3,244,0,0,0,15,208,0,67,243,255,255,255,0,0,11,208,7,195,243,255,255,255,0,6,11,211,231,211,227,255,255,255,0,15,11,211,227,215,224,3,244,0,0,15,75,211,211,251,208,3,244,0,0,15,139,215,194,255,192,3,244,0,0,11,203,215,193,255,207,255,255,255,192,7,203,219,128,255,79,255,255,255,192,7,203,223,64,191,15,255,255,255,192,3,203,209,0,127,0,3,244,0,0,1,11,208,0,255,128,3,244,0,0,0,11,235,246,255,208,3,244,0,0,0,31,255,251,255,248,2,240,0,0,47,255,255,255,243,255,144,0,0,0,63,255,254,191,192,255,255,255,255,224,63,254,65,255,64,47,255,255,255,192,25,0,0,189,0,1,191,255,255,192,0,0,0,32,0,0,0,0,0,0, + // 0x9577 長 + 119,149,36,36,68,40,2,252,0,3,255,255,255,255,255,255,0,0,3,255,255,255,255,255,255,0,0,3,255,255,255,255,255,255,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,255,255,255,255,255,248,0,0,3,255,255,255,255,255,248,0,0,3,255,255,255,255,255,248,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,3,255,255,255,255,255,248,0,0,3,255,255,255,255,255,248,0,0,3,255,255,255,255,255,248,0,0,3,252,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,85,87,253,85,85,85,85,85,84,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,3,252,0,191,0,0,7,0,0,3,252,0,63,128,0,47,208,0,3,252,0,47,208,1,255,224,0,3,252,0,15,240,11,255,64,0,3,252,0,11,252,127,248,0,0,3,252,0,3,255,255,192,0,0,3,252,0,0,255,253,0,0,0,3,252,0,0,63,248,0,0,0,3,252,0,22,95,255,64,0,0,3,253,175,255,131,255,244,0,0,91,255,255,255,128,191,255,144,15,255,255,255,255,64,31,255,255,11,255,255,249,64,0,2,255,254,7,255,148,0,0,0,0,31,252,1,64,0,0,0,0,0,0,100, + // 0x9589 閉 + 137,149,34,36,68,40,3,252,127,255,255,253,7,255,255,255,224,127,255,255,253,7,255,255,255,224,127,255,255,253,7,255,255,255,224,127,64,0,253,7,240,0,15,224,127,64,0,253,7,240,0,15,224,127,170,170,253,7,250,170,175,224,127,255,255,253,7,255,255,255,224,127,255,255,253,7,255,255,255,224,127,64,0,253,7,240,0,15,224,127,64,0,253,7,240,0,15,224,127,64,0,253,7,240,0,15,224,127,234,171,253,7,254,170,191,224,127,255,255,253,7,255,255,255,224,127,255,255,253,7,255,255,255,224,127,64,0,0,0,0,0,15,224,127,64,0,0,15,208,0,15,224,127,64,0,0,15,208,0,15,224,127,64,0,0,15,208,0,15,224,127,67,255,255,255,255,252,15,224,127,67,255,255,255,255,252,15,224,127,67,255,255,255,255,252,15,224,127,64,0,0,255,208,0,15,224,127,64,0,3,255,208,0,15,224,127,64,0,11,255,208,0,15,224,127,64,0,47,239,208,0,15,224,127,64,0,255,143,208,0,15,224,127,64,3,254,15,208,0,15,224,127,64,31,248,15,208,0,15,224,127,64,255,224,15,208,0,15,224,127,75,255,128,15,208,0,15,224,127,71,253,0,15,208,0,15,224,127,66,224,0,15,208,0,31,224,127,64,64,15,255,195,255,255,208,127,64,0,11,255,193,255,255,192,127,64,0,7,254,0,255,255,128,127,0,0,0,0,0,170,164,0, + // 0x958b 開 + 139,149,34,36,68,40,3,252,127,255,255,253,11,255,255,255,224,127,255,255,253,11,255,255,255,224,127,255,255,253,11,255,255,255,224,127,0,0,253,11,240,0,15,224,127,0,0,253,11,240,0,15,224,127,170,170,253,11,250,170,175,224,127,255,255,253,11,255,255,255,224,127,255,255,253,11,255,255,255,224,127,0,0,253,11,240,0,15,224,127,0,0,253,11,240,0,15,224,127,0,0,253,11,240,0,15,224,127,255,255,253,11,255,255,255,224,127,255,255,253,11,255,255,255,224,127,234,170,169,6,170,170,175,224,127,0,0,0,0,0,0,15,224,127,0,0,0,0,0,0,15,224,127,2,255,255,255,255,248,15,224,127,2,255,255,255,255,248,15,224,127,2,255,255,255,255,248,15,224,127,0,3,244,3,248,0,15,224,127,0,3,244,3,248,0,15,224,127,0,3,244,3,248,0,15,224,127,0,3,244,3,248,0,15,224,127,7,255,255,255,255,253,15,224,127,7,255,255,255,255,253,15,224,127,7,255,255,255,255,253,15,224,127,0,3,244,3,248,0,15,224,127,0,3,240,3,248,0,15,224,127,0,11,240,3,248,0,15,224,127,0,15,224,3,248,0,15,224,127,0,47,192,3,248,0,15,224,127,0,63,128,3,248,0,15,224,127,1,255,0,3,248,127,255,224,127,3,253,0,3,248,63,255,208,127,0,244,0,3,248,47,255,128,127,0,16,0,0,0,26,164,0, + // 0x9593 間 + 147,149,34,36,68,40,3,252,127,255,255,253,7,255,255,255,224,127,255,255,253,7,255,255,255,224,127,255,255,253,7,255,255,255,224,127,64,0,253,7,240,0,15,224,127,64,0,253,7,240,0,15,224,127,170,170,253,7,250,170,175,224,127,255,255,253,7,255,255,255,224,127,255,255,253,7,255,255,255,224,127,64,0,253,7,240,0,15,224,127,64,0,253,7,240,0,15,224,127,64,0,253,7,240,0,15,224,127,234,171,253,7,254,170,191,224,127,255,255,253,7,255,255,255,224,127,255,255,253,7,255,255,255,224,127,64,0,0,0,0,0,15,224,127,64,0,0,0,0,0,15,224,127,64,0,0,0,0,0,15,224,127,64,47,255,255,255,64,15,224,127,64,47,255,255,255,64,15,224,127,64,47,255,255,255,64,15,224,127,64,47,192,0,63,64,15,224,127,64,47,192,0,63,64,15,224,127,64,47,192,0,63,64,15,224,127,64,47,255,255,255,64,15,224,127,64,47,255,255,255,64,15,224,127,64,47,234,170,191,64,15,224,127,64,47,192,0,63,64,15,224,127,64,47,192,0,63,64,15,224,127,64,47,192,0,63,64,15,224,127,64,47,255,255,255,64,15,224,127,64,47,255,255,255,64,15,224,127,64,47,255,255,255,64,31,224,127,64,47,192,0,0,255,255,224,127,64,47,192,0,0,255,255,192,127,64,0,0,0,0,191,255,128,127,0,0,0,0,0,42,164,0, + // 0x95dc 關 + 220,149,34,36,68,40,3,252,127,255,255,253,7,255,255,255,224,127,255,255,253,7,255,255,255,224,127,170,170,253,7,250,170,175,224,127,0,0,253,7,240,0,15,224,127,0,0,253,7,240,0,15,224,127,255,255,253,7,255,255,255,224,127,255,255,253,7,255,255,255,224,127,85,85,253,7,245,85,95,224,127,0,0,253,7,240,0,15,224,127,0,0,253,7,240,0,15,224,127,255,255,253,7,255,255,255,224,127,255,255,253,7,255,255,255,224,127,170,171,232,6,254,170,175,224,127,0,11,192,0,252,0,15,224,127,0,31,0,2,240,0,15,224,127,3,253,29,127,194,128,15,224,127,3,248,125,127,71,208,15,224,127,0,188,248,15,223,64,15,224,127,0,47,224,3,254,0,15,224,127,0,15,157,1,248,240,15,224,127,0,62,31,7,224,248,15,224,127,15,255,255,191,255,252,15,224,127,11,255,255,255,255,254,15,224,127,1,84,3,64,0,30,15,224,127,1,160,62,15,128,164,15,224,127,1,240,62,15,128,244,15,224,127,1,240,62,15,128,244,15,224,127,1,240,62,15,128,244,15,224,127,1,255,254,15,255,244,15,224,127,1,255,254,15,255,244,15,224,127,0,0,253,15,128,0,15,224,127,0,2,252,15,128,0,15,224,127,0,31,244,15,128,15,255,224,127,0,127,208,15,128,15,255,208,127,0,47,0,15,128,11,255,128,127,0,0,0,0,0,2,164,0, + // 0x964d 降 + 77,150,36,38,86,40,3,252,0,0,0,0,0,148,0,0,0,0,0,0,0,1,254,0,0,0,191,255,248,0,3,252,0,0,0,191,255,255,0,7,248,0,0,0,191,255,254,0,15,255,255,254,0,190,86,253,0,63,255,255,255,64,190,1,252,0,255,255,255,255,0,190,3,248,3,255,64,1,253,0,190,3,244,15,255,192,3,252,0,190,7,240,127,255,240,15,244,0,190,11,224,255,135,248,63,208,0,190,15,208,61,1,255,255,128,0,190,31,192,4,0,191,254,0,0,190,47,128,0,0,63,252,0,0,190,63,64,0,1,255,255,128,0,190,31,192,0,31,255,255,248,0,190,11,240,6,255,248,47,255,228,190,3,244,191,255,192,7,255,253,190,2,252,191,253,0,254,111,248,190,0,252,63,128,0,254,1,176,190,0,253,20,0,0,254,0,0,190,0,253,31,255,255,255,255,224,190,0,254,31,255,255,255,255,224,190,0,253,31,255,255,255,255,224,190,1,253,0,254,0,254,0,0,190,191,252,0,254,0,254,0,0,190,63,248,0,254,0,254,0,0,190,63,208,0,254,0,254,0,0,190,0,0,0,254,0,254,0,0,190,0,1,255,255,255,255,255,252,190,0,1,255,255,255,255,255,252,190,0,1,255,255,255,255,255,252,190,0,0,0,0,0,254,0,0,190,0,0,0,0,0,254,0,0,190,0,0,0,0,0,254,0,0,190,0,0,0,0,0,254,0,0,190,0,0,0,0,0,254,0,0,189,0,0,0,0,0,254,0,0, + // 0x9664 除 + 100,150,36,38,86,40,3,252,0,0,0,0,0,42,64,0,0,0,0,0,0,0,191,208,0,0,191,255,248,0,1,255,240,0,0,191,255,255,0,3,255,252,0,0,191,255,254,0,15,246,254,0,0,190,86,253,0,47,224,255,128,0,190,1,252,0,191,192,63,224,0,190,3,248,2,255,0,15,248,0,190,3,244,11,252,0,7,255,0,190,7,240,47,240,0,0,255,208,190,11,225,255,192,0,0,63,248,190,15,219,255,0,0,0,15,254,190,31,195,255,255,255,255,255,252,190,47,129,226,255,255,255,248,116,190,63,128,66,255,255,255,248,0,190,31,192,0,0,63,128,0,0,190,11,240,0,0,63,128,0,0,190,3,244,0,0,63,128,0,0,190,2,252,0,0,63,128,0,0,190,0,252,0,0,63,192,0,0,190,0,253,63,255,255,255,255,224,190,0,253,63,255,255,255,255,224,190,0,254,63,255,255,255,255,224,190,0,253,0,0,63,128,0,0,190,1,253,0,0,63,128,0,0,190,191,252,7,224,63,129,244,0,190,63,248,15,240,63,130,252,0,190,63,208,15,208,63,128,255,0,190,0,0,63,192,63,128,127,64,190,0,0,127,64,63,128,63,192,190,0,0,255,0,63,128,31,224,190,0,2,253,0,63,128,11,240,190,0,7,252,0,63,128,3,248,190,0,15,240,0,63,128,3,252,190,0,3,208,21,127,128,1,224,190,0,0,64,63,255,128,0,0,190,0,0,0,31,255,0,0,0,190,0,0,0,15,248,0,0,0, + // 0x968e 階 + 142,150,36,38,86,40,3,252,0,0,0,21,0,0,84,0,0,0,0,0,47,128,0,252,0,0,191,255,244,47,128,0,252,0,0,191,255,254,47,128,0,252,1,128,191,255,253,47,128,0,252,11,240,190,86,252,47,255,244,252,191,248,190,2,252,47,255,244,255,255,128,190,3,244,47,255,244,255,248,0,190,3,240,47,128,0,255,128,0,190,7,240,47,128,0,252,0,0,190,15,208,47,128,0,252,0,0,190,15,192,47,128,0,252,0,120,190,31,128,47,128,84,252,0,189,190,47,64,47,239,248,253,0,253,190,63,66,191,255,252,255,255,252,190,31,195,255,255,144,255,255,248,190,11,242,255,144,105,47,255,224,190,3,241,144,0,191,64,0,0,190,2,248,0,0,255,0,0,0,190,1,252,0,0,254,0,0,0,190,0,252,15,255,255,255,255,208,190,0,252,15,255,255,255,255,208,190,0,253,15,255,255,255,255,208,190,0,253,15,208,0,0,31,208,190,2,252,15,208,0,0,15,208,190,191,252,15,208,0,0,15,208,190,63,244,15,208,0,0,15,208,190,63,208,15,255,255,255,255,208,190,0,0,15,255,255,255,255,208,190,0,0,15,255,255,255,255,208,190,0,0,15,208,0,0,15,208,190,0,0,15,208,0,0,15,208,190,0,0,15,208,0,0,15,208,190,0,0,15,255,255,255,255,208,190,0,0,15,255,255,255,255,208,190,0,0,15,255,255,255,255,208,190,0,0,15,208,0,0,31,208,189,0,0,10,128,0,0,5,64, + // 0x96d9 雙 + 217,150,36,38,86,40,2,252,0,36,0,0,0,9,0,0,0,0,127,3,224,0,31,192,248,0,0,190,7,240,0,47,130,248,0,0,252,15,192,0,63,3,240,0,2,253,111,213,80,191,91,229,84,3,255,255,255,224,255,255,255,252,15,255,255,255,227,255,255,255,252,47,244,47,64,11,253,7,208,0,127,244,47,64,31,253,7,208,0,255,255,255,255,255,255,255,255,244,255,255,255,255,255,255,255,255,244,119,245,111,149,61,253,91,229,80,19,244,47,64,8,253,7,208,0,3,249,111,149,64,254,91,229,80,3,255,255,255,192,255,255,255,244,3,255,255,255,192,255,255,255,244,3,244,47,64,0,253,7,208,0,3,244,47,64,0,253,7,208,0,3,255,255,255,240,255,255,255,254,3,255,255,255,240,255,255,255,254,1,85,85,85,80,85,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,255,244,0,15,255,255,255,255,255,255,254,0,15,255,255,255,255,255,255,252,0,0,0,190,0,0,0,63,240,0,0,1,255,192,0,1,255,192,0,0,0,127,244,0,11,255,0,0,0,0,31,255,64,191,252,0,0,0,0,3,255,251,255,224,0,0,0,0,0,127,255,255,0,0,0,0,0,1,191,255,254,144,0,0,0,5,191,255,255,255,255,148,0,175,255,255,255,219,255,255,255,254,127,255,255,228,0,27,255,255,252,63,255,228,0,0,0,111,255,248,42,80,0,0,0,0,0,22,240, + // 0x96e2 離 + 226,150,38,38,124,40,1,252,0,0,106,0,0,0,144,0,0,0,0,0,127,0,0,0,254,3,244,0,0,0,127,0,0,1,252,3,244,0,0,0,127,0,0,2,252,7,240,0,127,255,255,255,255,3,248,15,224,0,127,255,255,255,255,7,240,15,208,0,127,255,255,255,255,11,240,31,192,0,0,0,0,0,0,15,224,63,128,0,7,192,2,241,240,31,255,255,255,192,7,195,67,225,244,63,255,255,255,192,7,203,255,193,244,127,255,255,255,192,7,193,255,129,244,255,213,127,149,64,7,192,127,209,245,255,192,63,64,0,7,193,255,245,247,255,192,63,64,0,7,219,240,249,255,255,192,63,64,0,7,219,192,33,255,255,192,63,64,0,7,193,0,1,251,239,255,255,255,128,7,255,255,255,244,143,255,255,255,128,7,255,255,255,244,15,255,255,255,128,6,170,191,170,160,15,208,63,64,0,0,0,126,0,0,15,192,63,64,0,0,0,189,0,0,15,192,63,64,0,31,255,255,255,253,15,192,63,64,0,31,255,255,255,253,15,192,63,64,0,31,255,255,255,253,15,255,255,255,128,31,128,248,0,253,15,255,255,255,128,31,129,244,160,253,15,255,255,255,128,31,130,240,240,253,15,208,63,64,0,31,130,240,184,253,15,192,63,64,0,31,155,255,252,253,15,192,63,64,0,31,175,255,253,253,15,192,63,64,0,31,159,165,110,253,15,192,63,64,0,31,128,0,29,253,15,213,127,149,64,31,128,0,0,253,15,255,255,255,208,31,128,0,0,253,15,255,255,255,208,31,128,0,255,252,15,255,255,255,208,31,128,0,127,252,15,192,0,0,0,31,128,0,63,144,15,192,0,0,0, + // 0x96fb 電 + 251,150,36,36,68,40,3,252,11,255,255,255,255,255,255,253,0,11,255,255,255,255,255,255,253,0,11,255,255,255,255,255,255,253,0,0,0,0,3,248,0,0,0,0,0,0,0,3,248,0,0,0,0,255,255,255,255,255,255,255,255,240,255,255,255,255,255,255,255,255,240,254,170,170,171,254,170,170,171,240,253,0,0,3,248,0,0,7,240,253,63,255,211,248,127,255,135,240,253,63,255,211,248,127,255,135,240,253,0,0,3,248,0,0,7,240,253,0,0,3,248,0,0,7,240,0,191,255,211,248,127,255,224,0,0,191,255,211,248,127,255,224,0,0,0,0,3,248,0,0,0,0,0,0,0,0,0,0,0,0,0,1,170,170,170,170,170,170,164,0,2,255,255,255,255,255,255,248,0,2,255,255,255,255,255,255,248,0,2,252,0,3,244,0,3,248,0,2,252,0,3,244,0,3,248,0,2,253,85,87,249,85,87,248,0,2,255,255,255,255,255,255,248,0,2,255,255,255,255,255,255,248,0,2,252,0,3,244,0,3,248,0,2,252,0,3,244,0,3,248,0,2,254,170,171,254,170,171,248,0,2,255,255,255,255,255,255,248,144,2,255,255,255,255,255,255,248,253,2,252,0,3,244,0,0,0,253,2,252,0,3,244,0,0,0,252,0,84,0,3,252,0,0,2,252,0,0,0,2,255,255,255,255,248,0,0,0,0,255,255,255,255,240,0,0,0,0,43,255,255,255,128, + // 0x9752 青 + 82,151,36,39,95,40,2,251,0,0,0,0,170,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,3,255,255,255,255,255,255,255,208,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,191,255,255,255,255,255,254,0,0,191,255,255,255,255,255,254,0,0,106,170,170,255,170,170,170,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,127,255,255,255,255,255,255,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,224,0,0,0,7,244,0,0,15,224,0,0,0,7,244,0,0,15,250,170,170,170,171,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,224,0,0,0,7,244,0,0,15,224,0,0,0,7,244,0,0,15,224,0,0,0,7,244,0,0,15,255,255,255,255,255,244,0,0,15,255,255,255,255,255,244,0,0,15,250,170,170,170,171,244,0,0,15,224,0,0,0,7,244,0,0,15,224,0,0,0,7,244,0,0,15,224,0,0,0,11,244,0,0,15,224,0,0,127,255,244,0,0,15,224,0,0,63,255,240,0,0,15,224,0,0,47,254,64,0,0,0,0,0,0,0,0,0,0, + // 0x975e 非 + 94,151,38,39,134,40,1,251,0,0,0,170,0,10,144,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,15,255,255,255,0,31,255,255,255,128,15,255,255,255,0,31,255,255,255,128,15,255,255,255,0,31,255,255,255,128,5,85,85,255,0,31,229,85,85,64,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,7,255,255,255,0,31,255,255,254,0,7,255,255,255,0,31,255,255,254,0,7,255,255,255,0,31,255,255,254,0,1,85,85,255,0,31,229,85,85,0,0,0,0,255,0,31,208,0,0,0,0,0,0,255,0,31,208,0,0,0,0,0,0,254,0,31,208,0,0,0,0,0,0,254,84,31,208,0,0,0,0,0,6,255,252,31,208,0,0,0,0,107,255,255,252,31,229,85,85,64,127,255,255,255,252,31,255,255,255,208,63,255,255,253,0,31,255,255,255,208,63,255,159,244,0,31,255,255,255,208,41,64,31,240,0,31,208,0,0,0,0,0,63,208,0,31,208,0,0,0,0,0,191,192,0,31,208,0,0,0,0,2,255,0,0,31,208,0,0,0,0,11,254,0,0,31,208,0,0,0,0,63,248,0,0,31,208,0,0,0,2,255,224,0,0,31,208,0,0,0,15,255,128,0,0,31,208,0,0,0,3,253,0,0,0,31,208,0,0,0,0,224,0,0,0,15,208,0,0,0,0,0,0,0,0,0,0,0,0,0, + // 0x9762 面 + 98,151,36,35,59,40,2,252,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,191,255,255,255,255,255,255,255,254,106,170,170,171,255,170,170,170,169,0,0,0,3,253,0,0,0,0,0,0,0,3,252,0,0,0,0,0,0,0,7,248,0,0,0,0,0,0,0,7,244,0,0,0,0,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,245,91,245,85,111,213,95,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,255,255,255,192,15,240,15,224,7,255,255,255,192,15,240,15,224,7,255,255,255,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,255,255,255,192,15,240,15,224,7,255,255,255,192,15,240,15,224,7,255,255,255,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,224,7,240,0,47,192,15,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,15,245,85,85,85,85,85,95,240,15,224,0,0,0,0,0,15,240,10,160,0,0,0,0,0,10,160, + // 0x9805 項 + 5,152,38,36,104,40,1,252,0,0,0,3,255,255,255,255,255,208,0,0,0,3,255,255,255,255,255,208,21,85,85,87,255,255,255,255,255,208,63,255,255,248,0,0,255,0,0,0,63,255,255,248,0,1,255,0,0,0,63,255,255,248,0,1,253,0,0,0,21,95,245,84,0,2,252,0,0,0,0,15,240,0,63,255,255,255,255,0,0,15,240,0,63,255,255,255,255,0,0,15,240,0,63,255,255,255,255,0,0,15,240,0,63,64,0,0,191,0,0,15,240,0,63,64,0,0,191,0,0,15,240,0,63,64,0,0,191,0,0,15,240,0,63,255,255,255,255,0,0,15,240,0,63,255,255,255,255,0,0,15,240,0,63,170,170,170,255,0,0,15,240,0,63,64,0,0,191,0,0,15,240,0,63,64,0,0,191,0,0,15,240,0,63,64,0,0,191,0,0,15,240,0,63,255,255,255,255,0,0,15,240,45,63,255,255,255,255,0,0,15,251,253,63,170,170,170,255,0,0,15,255,254,63,64,0,0,191,0,1,191,255,249,63,64,0,0,191,0,111,255,255,64,63,64,0,0,191,0,127,255,224,0,63,255,255,255,255,0,63,249,0,0,63,255,255,255,255,0,46,64,0,0,63,255,255,255,255,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,1,248,0,62,0,0,0,0,0,0,31,255,1,255,224,0,0,0,0,1,255,248,0,127,253,0,0,0,0,31,255,208,0,11,255,128,0,0,0,255,253,0,0,0,255,240,0,0,0,63,208,0,0,0,47,192,0,0,0,25,0,0,0,0,6,0, + // 0x9810 預 + 16,152,38,36,104,40,1,252,47,255,255,253,63,255,255,255,255,192,47,255,255,255,191,255,255,255,255,192,47,255,255,255,127,255,255,255,255,192,0,0,7,253,0,0,127,192,0,0,0,0,7,248,0,0,127,128,0,0,0,128,15,240,0,0,127,64,0,0,2,244,63,192,0,0,191,0,0,0,7,255,255,64,11,255,255,255,254,0,2,255,253,0,11,255,255,255,254,0,0,47,252,0,11,255,255,255,254,0,0,7,255,64,11,240,0,0,254,0,0,0,255,208,11,240,0,0,254,0,0,0,47,192,11,240,0,0,254,0,127,255,255,255,235,255,255,255,254,0,127,255,255,255,235,255,255,255,254,0,127,255,255,255,203,250,170,170,254,0,21,87,249,111,203,240,0,0,254,0,0,3,244,47,139,240,0,0,254,0,0,3,244,63,75,240,0,0,254,0,0,3,244,63,11,255,255,255,254,0,0,3,244,190,11,255,255,255,254,0,0,3,244,252,11,250,170,170,254,0,0,3,244,24,11,240,0,0,254,0,0,3,244,0,11,240,0,0,254,0,0,3,244,0,11,240,0,0,254,0,0,3,244,0,11,255,255,255,254,0,0,3,244,0,11,255,255,255,254,0,0,3,244,0,11,255,255,255,254,0,0,3,244,0,0,8,0,0,0,0,0,3,244,0,0,127,64,31,64,0,0,3,244,0,2,255,192,127,240,0,0,7,244,0,31,255,0,31,253,0,15,255,244,1,255,248,0,3,255,128,11,255,240,11,255,192,0,0,191,224,7,255,208,3,253,0,0,0,31,128,2,149,0,0,144,0,0,0,5,0, + // 0x984d 額 + 77,152,38,38,124,40,1,252,0,0,168,0,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,0,0,0,253,0,11,255,255,255,255,128,0,0,253,0,11,255,255,255,255,128,63,255,255,255,251,255,255,255,255,128,63,255,255,255,240,0,47,208,0,0,63,255,255,255,240,0,63,192,0,0,63,65,64,3,240,0,63,128,0,0,63,67,244,3,240,0,63,64,0,0,63,75,240,3,241,255,255,255,255,0,0,31,250,169,1,255,255,255,255,0,0,63,255,255,65,255,255,255,255,0,0,191,255,255,1,252,0,0,191,0,2,253,0,254,1,252,0,0,191,0,11,253,1,252,1,252,0,0,191,0,63,255,131,248,1,255,255,255,255,0,127,255,255,240,1,255,255,255,255,0,30,15,255,208,1,254,170,170,255,0,0,2,255,192,1,252,0,0,191,0,0,2,255,240,1,252,0,0,191,0,0,15,255,253,1,252,0,0,191,0,0,127,226,255,129,255,255,255,255,0,7,255,64,127,241,255,255,255,255,0,127,253,0,15,241,254,170,170,255,0,127,255,255,255,193,252,0,0,191,0,47,255,255,254,1,252,0,0,191,0,6,255,255,254,1,252,0,0,191,0,2,248,0,190,1,255,255,255,255,0,2,248,0,190,1,255,255,255,255,0,2,248,0,190,1,255,255,255,254,0,2,248,0,190,0,5,0,1,0,0,2,248,0,190,0,31,192,31,128,0,2,255,255,254,0,191,224,63,244,0,2,255,255,254,7,255,128,11,254,0,2,255,255,254,191,253,0,1,255,128,2,248,0,1,255,224,0,0,127,224,2,248,0,0,127,0,0,0,15,128,0,0,0,0,20,0,0,0,1,0, + // 0x985e 類 + 94,152,38,38,124,40,1,252,0,0,84,0,0,0,0,0,0,0,2,64,252,10,64,0,0,0,0,0,15,192,252,15,223,255,255,255,255,192,11,224,252,31,207,255,255,255,255,192,3,240,252,63,79,255,255,255,255,192,2,244,252,62,0,0,47,208,0,0,0,64,252,4,0,0,63,192,0,0,63,255,255,255,240,0,63,128,0,0,63,255,255,255,241,255,255,255,254,0,63,255,255,255,242,255,255,255,255,0,0,11,253,0,2,255,255,255,255,0,0,31,255,192,2,252,0,0,191,0,0,63,255,244,2,252,0,0,191,0,0,255,255,254,2,252,0,0,191,0,3,253,252,255,194,252,0,0,191,0,15,244,252,47,242,255,255,255,255,0,127,224,252,7,210,255,255,255,255,0,47,64,252,1,130,254,170,170,255,0,13,0,252,0,2,252,0,0,191,0,0,0,84,0,2,252,0,0,191,0,0,0,252,0,2,252,0,0,191,0,0,0,252,0,2,255,255,255,255,0,0,1,253,0,2,255,255,255,255,0,63,255,255,255,242,254,170,170,255,0,63,255,255,255,242,252,0,0,191,0,63,255,255,255,242,252,0,0,191,0,0,2,252,0,2,252,0,0,191,0,0,3,252,0,2,255,255,255,255,0,0,3,255,128,2,255,255,255,255,0,0,11,255,240,1,255,255,255,254,0,0,31,255,253,0,1,0,1,0,0,0,63,211,255,128,31,192,31,128,0,1,255,128,191,224,191,224,63,240,0,15,254,0,31,199,255,128,15,253,0,127,248,0,7,111,253,0,2,255,128,47,208,0,1,255,240,0,0,127,224,14,0,0,0,127,64,0,0,31,192,0,0,0,0,24,0,0,0,2,0, + // 0x98a8 風 + 168,152,38,36,104,40,1,252,0,63,255,255,255,255,255,255,192,0,0,63,255,255,255,255,255,255,192,0,0,63,255,255,255,255,255,255,192,0,0,63,149,85,85,85,85,127,192,0,0,63,128,0,0,0,0,63,192,0,0,63,128,0,0,91,240,63,192,0,0,63,128,90,191,255,252,63,192,0,0,63,159,255,255,255,253,63,192,0,0,63,143,255,255,233,64,63,192,0,0,63,138,165,127,0,0,63,192,0,0,63,128,0,63,0,0,63,192,0,0,63,128,0,63,0,0,63,192,0,0,63,139,255,255,255,252,63,192,0,0,63,139,255,255,255,252,63,192,0,0,63,75,255,255,255,252,47,192,0,0,63,75,208,63,0,252,47,192,0,0,63,75,208,63,0,252,47,192,0,0,63,75,208,63,0,252,47,192,0,0,63,75,208,63,0,252,47,192,0,0,127,75,208,63,0,252,47,192,0,0,127,11,208,63,0,252,47,192,0,0,127,11,255,255,255,252,47,192,0,0,191,11,255,255,255,252,31,192,0,0,191,11,255,255,255,252,31,192,0,0,254,0,0,63,0,16,31,192,0,0,254,0,0,63,3,240,15,192,0,1,253,0,0,63,3,248,15,209,0,2,252,0,0,63,1,252,15,209,192,3,252,0,0,63,0,254,15,225,224,3,248,106,191,255,255,255,11,226,224,11,240,191,255,255,255,255,135,242,224,15,240,191,255,255,255,255,195,247,224,47,208,127,234,149,64,15,211,255,208,127,192,0,0,0,0,11,225,255,192,47,64,0,0,0,0,5,0,255,128,6,0,0,0,0,0,0,0,46,0, + // 0x98fd 飽 + 253,152,38,38,124,40,1,252,0,1,254,0,0,46,64,0,0,0,0,3,255,128,0,63,128,0,0,0,0,11,255,240,0,63,64,0,0,0,0,15,251,252,0,191,0,0,0,0,0,63,194,255,0,254,0,0,0,0,0,191,128,191,193,255,255,255,255,64,1,255,0,47,227,255,255,255,255,64,3,252,127,15,215,255,255,255,255,0,15,244,127,3,143,244,0,0,127,0,63,224,127,1,31,224,0,0,63,0,255,192,127,0,63,192,0,0,63,0,63,255,255,255,255,128,0,0,63,0,15,255,255,255,255,255,255,208,127,0,3,254,170,255,191,255,255,208,127,0,3,248,0,63,73,255,255,208,127,0,3,248,0,63,64,0,15,208,127,0,3,253,85,191,64,0,15,208,127,0,3,255,255,255,64,0,15,208,127,0,3,255,255,255,64,0,15,208,127,0,3,248,0,63,64,0,15,208,191,0,3,248,0,63,67,255,255,208,191,0,3,248,0,63,67,255,255,208,191,0,3,255,255,255,67,255,255,208,254,0,3,255,255,255,67,248,1,81,254,0,3,255,255,255,3,244,0,255,253,0,3,248,0,0,3,244,0,191,252,0,3,248,2,224,3,244,0,127,224,0,3,248,7,244,3,244,0,0,0,0,3,248,3,252,3,244,0,0,0,0,3,248,1,254,3,244,0,0,10,64,3,248,27,255,3,244,0,0,11,224,3,255,255,255,131,244,0,0,15,224,27,255,255,255,195,244,0,0,15,208,63,255,249,15,227,252,0,0,47,192,63,254,64,15,243,255,255,255,255,192,30,64,0,7,65,255,255,255,255,64,0,0,0,0,0,127,255,255,253,0,0,0,0,0,0,0,85,85,64,0, + // 0x9918 餘 + 24,153,38,38,124,40,1,252,0,3,252,0,0,0,127,64,0,0,0,11,255,0,0,0,255,192,0,0,0,15,255,192,0,1,255,224,0,0,0,47,223,240,0,3,255,240,0,0,0,127,131,252,0,11,247,252,0,0,0,255,1,254,0,31,225,254,0,0,3,252,0,191,64,63,192,191,64,0,11,254,170,191,192,255,64,63,208,0,47,255,255,239,67,254,0,15,244,0,255,207,255,217,11,248,0,7,253,0,127,0,0,0,63,240,0,1,255,128,28,0,0,0,255,192,0,0,191,224,3,255,255,254,255,255,255,255,255,192,3,255,255,254,125,255,255,255,239,128,3,250,170,254,52,255,255,255,226,0,3,240,0,190,0,0,63,64,0,0,3,240,0,190,0,0,63,64,0,0,3,255,255,254,0,0,63,64,0,0,3,255,255,254,0,0,63,64,0,0,3,249,85,254,0,0,63,128,0,0,3,240,0,190,63,255,255,255,255,128,3,240,0,190,63,255,255,255,255,128,3,255,255,254,63,255,255,255,255,128,3,255,255,254,0,0,63,64,0,0,3,250,170,169,0,0,63,64,0,0,3,240,0,0,3,244,63,67,240,0,3,240,0,0,3,240,63,67,244,0,3,255,255,254,7,240,63,66,252,0,3,255,255,254,15,208,63,64,253,0,3,255,255,254,31,192,63,64,191,0,3,240,0,0,63,128,63,64,63,64,3,240,0,0,127,0,63,64,63,192,3,255,255,255,254,0,63,64,31,192,3,255,255,255,124,0,63,64,15,192,3,255,255,255,0,0,127,64,9,0,3,240,0,0,0,63,255,0,0,0,3,240,0,0,0,31,255,0,0,0,3,240,0,0,0,15,248,0,0,0, + // 0x99ac 馬 + 172,153,37,37,114,40,1,251,0,31,255,255,255,255,255,255,224,0,0,31,255,255,255,255,255,255,224,0,0,31,255,255,255,255,255,255,224,0,0,31,208,0,47,208,0,0,0,0,0,31,192,0,31,208,0,0,0,0,0,31,192,0,31,208,0,0,0,0,0,31,192,0,31,208,0,0,0,0,0,31,255,255,255,255,255,255,64,0,0,31,255,255,255,255,255,255,64,0,0,31,255,255,255,255,255,255,64,0,0,31,192,0,31,208,0,0,0,0,0,31,192,0,31,208,0,0,0,0,0,31,192,0,31,208,0,0,0,0,0,31,255,255,255,255,255,255,64,0,0,31,255,255,255,255,255,255,64,0,0,31,255,255,255,255,255,255,64,0,0,31,192,0,31,208,0,0,0,0,0,31,192,0,31,208,0,0,0,0,0,31,192,0,31,208,0,0,0,0,0,31,213,85,111,213,85,85,85,0,0,31,255,255,255,255,255,255,255,64,0,31,255,255,255,255,255,255,255,64,0,31,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,191,0,0,16,0,0,0,0,20,0,191,0,0,127,0,80,6,64,252,0,191,0,0,191,7,240,31,128,191,0,255,0,0,254,3,240,15,192,63,128,255,0,1,253,3,244,15,224,31,192,254,0,2,252,3,248,7,240,15,208,254,0,3,248,2,248,3,240,7,65,253,0,11,244,2,252,3,244,0,2,253,0,31,240,1,252,2,244,5,7,252,0,127,208,1,252,0,0,31,255,248,0,47,128,0,64,0,0,15,255,240,0,2,0,0,0,0,0,15,255,128,0,0,0,0,0,0,0,0,0,0,0, + // 0x9a45 驅 + 69,154,38,36,104,40,1,252,11,255,255,255,31,255,255,255,255,128,11,255,255,255,31,255,255,255,255,128,11,255,255,255,31,255,255,255,255,128,11,208,188,0,31,128,0,0,0,0,11,208,188,0,31,128,0,0,0,0,11,208,188,0,31,128,255,255,244,0,11,255,255,252,31,128,255,255,244,0,11,255,255,252,31,128,253,86,244,0,11,255,255,252,31,128,252,2,244,0,11,208,188,0,31,128,252,2,244,0,11,208,188,0,31,128,252,2,244,0,11,208,188,0,31,128,252,2,244,0,11,255,255,252,31,128,255,255,244,0,11,255,255,252,31,128,255,255,244,0,11,255,255,252,31,128,85,85,80,0,11,208,188,0,31,128,0,0,0,0,11,208,188,0,31,128,0,0,0,0,11,208,188,0,31,143,255,79,255,64,11,255,255,255,31,143,255,79,255,64,11,255,255,255,31,143,95,79,95,64,11,255,255,255,31,143,11,79,11,64,0,0,0,63,31,143,11,79,11,64,0,0,0,63,31,143,11,79,11,64,9,1,142,63,31,143,11,79,11,64,15,122,207,63,31,143,11,79,11,64,15,57,215,127,31,143,11,79,11,64,15,60,227,255,31,143,255,79,255,64,31,60,242,255,31,143,255,79,255,64,30,60,176,127,31,133,85,5,85,0,46,60,176,126,31,128,0,0,0,0,61,60,0,126,31,128,0,0,0,0,124,20,0,189,31,255,255,255,255,208,120,0,0,253,31,255,255,255,255,208,0,0,127,252,31,255,255,255,255,208,0,0,63,248,31,128,0,0,0,0,0,0,42,144,26,64,0,0,0,0, + // 0x9ad4 體 + 212,154,37,38,124,40,2,252,0,0,0,0,0,6,129,160,0,0,2,170,170,164,0,11,193,240,0,0,7,255,255,244,0,11,193,240,0,0,7,255,255,244,0,11,193,240,0,0,7,208,1,244,15,255,255,255,252,0,7,208,1,244,15,255,255,255,252,0,7,208,2,244,15,219,230,245,252,0,7,211,255,244,15,131,193,224,252,0,7,211,255,244,15,215,214,245,252,0,7,211,209,244,15,255,255,255,252,0,7,211,209,244,15,255,255,255,252,0,7,211,209,244,15,131,193,224,252,0,7,211,209,244,15,131,193,224,252,0,191,255,255,255,207,215,230,245,252,0,191,255,255,255,207,255,255,255,252,0,190,170,170,175,207,255,255,255,252,0,188,0,0,15,192,0,0,0,0,0,189,0,0,15,192,0,0,0,0,0,191,255,255,255,255,255,255,255,255,0,3,255,255,244,63,255,255,255,255,0,3,250,171,244,42,170,170,170,170,0,3,240,3,244,0,0,0,0,0,0,3,240,3,244,7,255,255,255,244,0,3,255,255,244,7,255,255,255,244,0,3,255,255,244,7,229,85,87,244,0,3,250,171,244,7,224,0,3,244,0,3,240,3,244,7,224,0,3,244,0,3,240,3,244,7,229,85,87,244,0,3,255,255,244,7,255,255,255,244,0,3,255,255,244,7,255,255,255,244,0,3,250,171,244,0,44,0,46,64,0,3,240,3,244,0,126,0,63,0,0,3,240,3,244,0,63,0,126,0,0,3,240,3,244,0,47,64,252,0,0,3,240,3,244,170,191,235,254,170,64,3,240,255,240,255,255,255,255,255,64,3,240,127,240,255,255,255,255,255,64,3,224,62,64,0,0,0,0,0,0, + // 0x9ad8 高 + 216,154,35,38,86,40,2,252,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,1,254,0,0,0,0,127,255,255,255,255,255,255,255,252,127,255,255,255,255,255,255,255,252,127,255,255,255,255,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,255,255,128,0,0,3,255,255,255,255,255,128,0,0,3,254,170,170,170,191,128,0,0,3,252,0,0,0,63,128,0,0,3,252,0,0,0,63,128,0,0,3,252,0,0,0,63,128,0,0,3,255,255,255,255,255,128,0,0,3,255,255,255,255,255,128,0,0,1,170,170,170,170,170,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,240,11,240,0,0,0,0,0,15,240,11,240,0,0,0,0,0,15,240,11,240,6,170,170,170,144,15,240,11,240,11,255,255,255,224,15,240,11,240,11,255,255,255,224,15,240,11,240,11,224,0,15,224,15,240,11,240,11,224,0,15,224,15,240,11,240,11,224,0,15,224,15,240,11,240,11,250,170,175,224,15,240,11,240,11,255,255,255,224,15,240,11,240,11,255,255,255,224,15,240,11,240,11,224,0,0,127,255,240,11,240,11,224,0,0,63,255,208,11,240,0,0,0,0,63,255,128,7,240,0,0,0,0,21,84,0, + // 0x9ec3 黃 + 195,158,36,38,86,40,2,252,0,0,47,192,0,2,252,0,0,0,0,47,192,0,3,252,0,0,0,0,47,192,0,3,252,0,0,15,255,255,255,255,255,255,255,240,15,255,255,255,255,255,255,255,240,11,255,255,255,255,255,255,255,240,0,0,47,192,0,3,252,0,0,0,0,47,192,0,3,252,0,0,0,0,47,234,170,171,252,0,0,0,0,47,255,255,255,252,0,0,0,0,47,255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,254,0,0,0,0,0,0,0,0,254,0,0,0,0,0,127,255,255,255,255,255,254,0,0,127,255,255,255,255,255,254,0,0,127,170,170,255,170,170,254,0,0,127,64,0,254,0,0,254,0,0,127,64,0,254,0,0,254,0,0,127,255,255,255,255,255,254,0,0,127,255,255,255,255,255,254,0,0,127,149,85,255,85,86,254,0,0,127,64,0,254,0,0,254,0,0,127,64,0,254,0,0,254,0,0,127,170,170,255,170,170,254,0,0,127,255,255,255,255,255,254,0,0,127,255,255,255,255,255,254,0,0,0,31,128,0,3,248,0,0,0,1,255,240,0,15,255,208,0,0,111,255,208,0,6,255,255,64,27,255,253,0,0,0,31,255,248,255,255,144,0,0,0,1,191,255,63,244,0,0,0,0,0,11,248,9,0,0,0,0,0,0,0,80, + // 0x9ede 點 + 222,158,38,38,124,40,1,252,0,0,0,0,0,0,26,128,0,0,10,170,170,170,160,0,31,192,0,0,15,255,255,255,240,0,31,192,0,0,15,255,255,255,240,0,31,192,0,0,15,192,60,2,240,0,31,192,0,0,15,196,60,18,240,0,31,192,0,0,15,236,60,63,240,0,31,192,0,0,15,221,60,122,240,0,31,192,0,0,15,206,60,182,240,0,31,192,0,0,15,207,60,242,240,0,31,255,255,208,15,207,125,226,240,0,31,255,255,208,15,202,125,210,240,0,31,255,255,208,15,192,60,2,240,0,31,229,85,64,15,234,190,171,240,0,31,192,0,0,15,255,255,255,240,0,31,192,0,0,15,255,255,255,240,0,31,192,0,0,0,0,190,0,0,0,31,192,0,0,0,0,190,0,0,0,31,192,0,0,0,0,190,0,0,0,31,192,0,0,15,255,255,255,244,85,111,229,85,0,15,255,255,255,244,255,255,255,255,0,15,255,255,255,244,255,255,255,255,0,0,0,190,0,0,255,255,255,255,0,0,0,190,0,0,253,0,0,191,0,1,85,255,175,252,253,0,0,191,0,63,255,255,255,252,253,0,0,191,0,63,255,255,255,252,253,0,0,191,0,63,250,165,80,0,253,0,0,191,0,0,0,0,7,128,253,0,0,191,0,2,6,139,203,208,253,0,0,191,0,7,215,199,195,240,253,0,0,191,0,11,199,195,209,248,253,0,0,191,0,11,195,210,240,252,254,85,85,255,0,15,195,225,240,125,255,255,255,255,0,31,131,224,244,52,255,255,255,255,0,63,3,224,144,0,255,255,255,255,0,126,1,64,0,0,253,0,0,191,0,8,0,0,0,0,189,0,0,106,0, + // 0x9f4a 齊 + 74,159,37,39,134,40,2,251,0,0,0,0,169,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,191,255,255,255,255,255,255,255,253,0,191,255,255,255,255,255,255,255,253,0,191,255,255,255,255,255,255,255,253,0,0,0,0,46,0,120,0,1,0,0,0,0,0,63,64,252,0,31,192,0,63,255,255,223,193,249,91,255,240,0,63,255,255,203,211,243,255,255,64,0,42,254,175,195,150,195,255,253,0,0,0,252,15,192,253,3,240,62,0,0,1,248,15,192,253,3,240,47,0,0,2,244,15,192,253,3,240,31,192,0,7,240,15,192,253,3,240,15,208,0,15,224,47,128,253,3,245,171,244,0,127,207,255,64,253,47,255,246,254,0,255,7,255,0,253,47,255,244,255,64,124,2,164,0,253,31,164,0,61,0,16,5,64,0,0,0,1,84,4,0,0,15,224,0,0,0,3,248,0,0,0,15,224,0,0,0,3,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,255,255,255,255,255,248,0,0,0,15,224,0,0,0,3,248,0,0,0,31,208,0,0,0,3,248,0,0,0,47,255,255,255,255,255,248,0,0,0,63,255,255,255,255,255,248,0,0,0,127,255,255,255,255,255,248,0,0,0,255,64,0,0,0,3,248,0,0,2,255,0,0,0,0,3,248,0,0,11,254,0,0,0,0,3,248,0,0,47,252,0,0,0,0,3,248,0,0,63,240,0,0,0,0,3,248,0,0,15,192,0,0,0,0,3,248,0,0,7,0,0,0,0,0,3,248,0,0,0,0,0,0,0,0,0,0,0,0, + // 0xff1a : + 26,255,8,27,54,40,16,1,11,224,47,248,63,252,127,253,63,252,47,248,6,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,224,63,248,63,252,127,253,63,252,47,244,6,128, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Vietnamese_29.cpp b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Vietnamese_29.cpp new file mode 100644 index 0000000000..1de6186228 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/NotoSans/Medium_29px/NotoSans_Medium_Vietnamese_29.cpp @@ -0,0 +1,246 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// NotoSans_Medium Vietnamese 40pt, capital 'A' height: 29px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 +extern const uint8_t NotoSans_Medium_Vietnamese_29[15205] = { + 162,29,2,1,249,30,38,246, // unifont_t + // 0x0102 Ă + 2,1,26,37,3,26,0,0,0,11,192,0,62,0,0,0,7,208,0,189,0,0,0,3,254,171,252,0,0,0,1,255,255,244,0,0,0,0,127,255,208,0,0,0,0,6,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x0103 ă + 3,1,18,31,155,23,2,255,3,208,0,47,0,3,240,0,63,0,2,254,171,253,0,0,255,255,252,0,0,63,255,224,0,0,6,170,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x0110 Đ + 16,1,26,29,203,29,1,0,2,170,170,148,0,0,0,3,255,255,255,224,0,0,3,255,255,255,255,0,0,3,255,255,255,255,208,0,3,253,0,6,255,244,0,3,253,0,0,47,253,0,3,253,0,0,7,255,0,3,253,0,0,2,255,128,3,253,0,0,0,255,192,3,253,0,0,0,127,208,3,253,0,0,0,63,224,3,253,0,0,0,63,224,3,253,0,0,0,47,240,255,255,255,224,0,47,240,255,255,255,224,0,47,240,255,255,255,224,0,47,240,171,255,170,160,0,47,240,3,253,0,0,0,63,224,3,253,0,0,0,63,224,3,253,0,0,0,127,192,3,253,0,0,0,255,192,3,253,0,0,1,255,128,3,253,0,0,3,255,0,3,253,0,0,31,253,0,3,253,0,1,255,248,0,3,255,170,255,255,224,0,3,255,255,255,255,64,0,3,255,255,255,244,0,0,3,255,255,249,0,0,0, + // 0x0111 đ + 17,1,23,32,192,25,2,255,0,0,0,1,84,0,0,0,0,3,253,0,0,0,0,3,253,0,0,0,0,3,253,0,0,2,255,255,255,244,0,2,255,255,255,248,0,2,255,255,255,248,0,0,0,3,254,0,0,0,0,3,253,0,0,1,84,3,253,0,0,127,255,130,253,0,2,255,255,246,253,0,11,255,255,254,253,0,31,253,0,191,253,0,63,240,0,15,253,0,127,208,0,11,253,0,127,192,0,3,253,0,191,192,0,3,253,0,255,128,0,2,253,0,255,64,0,2,253,0,255,64,0,2,253,0,255,64,0,2,253,0,255,128,0,2,253,0,191,128,0,3,253,0,127,192,0,3,253,0,63,208,0,7,253,0,63,240,0,15,253,0,31,254,1,191,253,0,11,255,255,254,253,0,2,255,255,241,253,0,0,127,255,128,253,0,0,1,80,0,0,0, + // 0x0128 Ĩ + 40,1,16,37,148,14,255,0,0,164,0,25,11,255,64,61,31,255,249,252,63,175,255,248,61,1,255,240,120,0,26,64,0,0,0,0,0,0,0,0,6,170,170,144,7,255,255,224,7,255,255,224,0,191,254,64,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,15,240,0,0,31,248,0,7,255,255,208,7,255,255,224,7,255,255,224, + // 0x0129 ĩ + 41,1,15,30,120,11,254,0,1,144,0,104,31,254,0,188,63,255,230,248,191,191,255,240,248,7,255,208,240,0,106,0,0,0,0,0,0,0,0,0,0,26,144,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0,0,47,224,0, + // 0x0168 Ũ + 104,1,23,38,228,30,3,255,0,1,164,0,40,0,0,15,255,64,124,0,0,63,255,246,252,0,0,63,175,255,244,0,0,188,2,255,224,0,0,180,0,42,64,0,0,0,0,0,0,0,0,0,0,0,0,0,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,248,0,0,11,255,255,144,0,0,0,21,80,0,0, + // 0x0169 ũ + 105,1,19,31,155,25,3,255,0,25,0,2,128,0,255,224,11,192,3,255,254,111,128,7,250,255,255,0,15,192,47,253,0,11,64,2,160,0,0,0,0,0,0,0,0,0,0,0,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,2,252,0,5,80,0,0, + // 0x01a0 Ơ + 160,1,31,32,0,32,2,255,0,0,0,0,0,0,5,84,0,0,0,0,0,0,15,248,0,0,27,255,228,0,15,244,0,7,255,255,255,64,15,240,0,47,255,255,255,240,47,224,0,191,255,239,255,252,127,192,2,255,224,0,31,255,255,64,7,255,0,0,2,255,253,0,15,252,0,0,0,255,224,0,31,248,0,0,0,63,224,0,47,240,0,0,0,47,240,0,63,224,0,0,0,31,244,0,63,208,0,0,0,15,248,0,127,192,0,0,0,15,252,0,127,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,127,192,0,0,0,15,252,0,127,208,0,0,0,15,248,0,63,224,0,0,0,15,244,0,63,240,0,0,0,47,240,0,31,244,0,0,0,63,240,0,15,252,0,0,0,127,208,0,11,254,0,0,1,255,192,0,3,255,192,0,11,255,64,0,0,255,254,85,191,254,0,0,0,63,255,255,255,244,0,0,0,11,255,255,255,208,0,0,0,0,191,255,249,0,0,0,0,0,1,85,0,0,0,0, + // 0x01a1 ơ + 161,1,25,26,182,25,2,255,0,0,0,0,0,255,128,0,0,0,0,0,255,128,0,0,0,0,0,255,0,0,6,255,144,1,255,0,0,127,255,254,3,253,0,2,255,255,255,223,252,0,11,255,234,255,255,240,0,31,248,0,31,255,128,0,63,240,0,7,252,0,0,63,192,0,3,254,0,0,127,192,0,2,255,0,0,191,128,0,1,255,0,0,255,128,0,0,255,0,0,255,64,0,0,255,64,0,255,64,0,0,255,64,0,255,64,0,0,255,0,0,255,128,0,0,255,0,0,191,192,0,1,255,0,0,127,192,0,2,254,0,0,63,224,0,3,253,0,0,31,244,0,15,252,0,0,15,254,64,127,244,0,0,3,255,255,255,208,0,0,0,255,255,255,64,0,0,0,31,255,248,0,0,0,0,0,85,0,0,0,0, + // 0x01af Ư + 175,1,31,32,0,32,3,255,0,0,0,0,0,0,5,80,0,0,0,0,0,0,15,248,42,64,0,0,2,168,15,244,127,192,0,0,7,252,31,240,127,192,0,0,7,252,47,224,127,192,0,0,7,252,127,192,127,192,0,0,7,255,255,64,127,192,0,0,7,255,252,0,127,192,0,0,7,255,144,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,63,192,0,0,11,248,0,0,63,224,0,0,15,244,0,0,47,244,0,0,47,240,0,0,15,253,0,0,191,224,0,0,7,255,229,91,255,192,0,0,2,255,255,255,255,0,0,0,0,127,255,255,252,0,0,0,0,7,255,255,144,0,0,0,0,0,5,80,0,0,0,0, + // 0x01b0 ư + 176,1,27,26,182,28,3,255,0,0,0,0,0,15,244,0,0,0,0,0,31,244,0,0,0,0,0,31,240,106,0,0,2,164,47,224,255,64,0,7,252,63,192,255,64,0,7,253,255,128,255,64,0,7,255,254,0,255,64,0,7,255,244,0,255,64,0,7,253,64,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,11,252,0,0,255,64,0,11,252,0,0,255,128,0,15,252,0,0,191,192,0,31,252,0,0,191,208,0,63,252,0,0,63,248,6,255,252,0,0,47,255,255,247,252,0,0,15,255,255,211,252,0,0,1,255,254,2,252,0,0,0,5,80,0,0,0,0, + // 0x0303 ̃ + 3,3,15,6,24,0,236,24,1,144,0,40,15,254,0,188,63,255,230,248,127,175,255,244,188,2,255,224,180,0,42,0, + // 0x0309 ̉ + 9,3,8,10,20,0,241,23,255,144,255,248,171,253,0,254,0,253,2,252,47,244,47,128,31,0,5,0, + // 0x0323 ̣ + 35,3,5,6,12,0,241,248,5,0,63,192,127,192,127,192,63,192,5,0, + // 0x0340 ̀ + 64,3,9,7,21,0,249,24,170,128,0,127,224,0,47,240,0,11,252,0,1,254,0,0,127,64,0,31,128, + // 0x0341 ́ + 65,3,9,7,21,0,254,24,0,170,128,2,255,64,3,254,0,15,248,0,47,224,0,127,64,0,189,0,0, + // 0x1ea0 Ạ + 160,30,26,37,3,26,0,248,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,3,252,0,0,0,0,0,3,253,0,0,0,0,0,3,253,0,0,0,0,0,3,252,0,0,0,0,0,0,80,0,0,0, + // 0x1ea1 ạ + 161,30,18,30,150,23,2,248,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0,0,0,0,0,0,0,0,16,0,0,0,2,253,0,0,0,3,255,0,0,0,3,255,0,0,0,2,253,0,0,0,0,16,0,0, + // 0x1ea2 Ả + 162,30,26,40,24,26,0,0,0,0,31,249,0,0,0,0,0,31,255,64,0,0,0,0,26,191,192,0,0,0,0,0,15,208,0,0,0,0,0,15,192,0,0,0,0,0,127,192,0,0,0,0,3,255,0,0,0,0,0,3,244,0,0,0,0,0,2,240,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x1ea3 ả + 163,30,18,34,170,23,2,255,0,11,253,0,0,0,15,255,192,0,0,10,191,224,0,0,0,11,224,0,0,0,11,224,0,0,0,47,208,0,0,1,255,64,0,0,1,248,0,0,0,1,244,0,0,0,0,80,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x1ea4 Ấ + 164,30,26,39,17,26,0,0,0,0,0,0,0,255,0,0,0,0,0,1,252,0,0,0,2,169,3,244,0,0,0,15,255,15,192,0,0,0,47,255,197,0,0,0,0,191,95,224,0,0,0,1,252,3,244,0,0,0,3,224,0,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x1ea5 ấ + 165,30,21,34,204,23,2,255,0,0,0,0,21,64,0,0,0,0,255,0,0,0,0,1,253,0,0,3,255,3,244,0,0,15,255,139,192,0,0,47,239,208,0,0,0,191,71,244,0,0,1,252,1,252,0,0,2,224,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,0,6,255,255,253,0,0,11,255,255,255,64,0,7,254,91,255,192,0,2,128,0,127,208,0,0,0,0,63,224,0,0,0,0,47,224,0,0,0,0,31,240,0,0,0,0,31,240,0,0,27,255,255,240,0,3,255,255,255,240,0,31,255,250,191,240,0,127,244,0,31,240,0,255,192,0,31,240,0,255,64,0,47,240,0,255,0,0,47,240,0,255,64,0,63,240,0,255,128,0,255,240,0,255,208,7,255,240,0,127,255,255,223,240,0,47,255,255,75,240,0,7,255,248,7,240,0,0,21,64,0,0,0, + // 0x1ea6 Ầ + 166,30,26,39,17,26,0,0,15,240,0,0,0,0,0,3,244,0,0,0,0,0,1,252,2,168,0,0,0,0,63,15,255,0,0,0,0,5,47,255,192,0,0,0,0,191,95,224,0,0,0,1,252,3,244,0,0,0,3,224,0,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x1ea7 ầ + 167,30,20,34,170,23,0,255,85,0,0,0,0,127,128,0,0,0,31,192,0,0,0,7,240,63,240,0,0,248,255,252,0,0,2,254,254,0,0,7,244,127,64,0,31,192,15,208,0,46,0,2,224,0,0,0,0,0,0,0,0,0,0,0,1,191,249,0,0,111,255,255,208,0,191,255,255,244,0,127,229,191,252,0,40,0,7,253,0,0,0,3,254,0,0,0,2,254,0,0,0,1,255,0,0,0,1,255,0,1,191,255,255,0,63,255,255,255,1,255,255,171,255,7,255,64,1,255,15,252,0,1,255,15,244,0,2,255,15,240,0,2,255,15,244,0,3,255,15,248,0,15,255,15,253,0,127,255,7,255,255,253,255,2,255,255,244,191,0,127,255,128,127,0,1,84,0,0, + // 0x1ea8 Ẩ + 168,30,26,42,38,26,0,0,0,0,0,0,5,0,0,0,0,0,0,47,240,0,0,0,0,0,22,248,0,0,0,0,0,0,188,0,0,0,0,0,1,248,0,0,0,6,168,15,224,0,0,0,15,255,11,64,0,0,0,63,255,133,0,0,0,0,191,95,208,0,0,0,2,252,7,244,0,0,0,7,224,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x1ea9 ẩ + 169,30,20,36,180,23,2,255,0,0,0,15,160,0,0,0,15,252,0,0,0,0,125,0,0,0,0,61,0,0,0,2,252,0,3,255,3,208,0,11,255,195,192,0,47,239,224,0,0,127,71,244,0,1,252,0,253,0,2,224,0,46,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x1eaa Ẫ + 170,30,26,42,38,26,0,0,0,0,127,64,30,0,0,0,1,255,248,125,0,0,0,3,251,255,252,0,0,0,3,192,127,240,0,0,0,1,64,1,64,0,0,0,0,1,84,0,0,0,0,0,11,255,0,0,0,0,0,31,255,128,0,0,0,0,127,159,208,0,0,0,1,253,3,244,0,0,0,3,224,0,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x1eab ẫ + 171,30,18,37,185,23,2,255,0,5,0,5,0,0,127,224,31,0,0,255,254,190,0,2,245,191,252,0,3,192,11,224,0,0,0,0,0,0,0,2,254,0,0,0,11,255,128,0,0,31,255,208,0,0,127,71,240,0,1,252,1,252,0,2,224,0,46,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x1eac Ậ + 172,30,26,46,66,26,0,248,0,0,6,169,0,0,0,0,0,15,255,0,0,0,0,0,63,255,192,0,0,0,0,191,175,240,0,0,0,1,254,11,248,0,0,0,7,244,1,254,0,0,0,15,128,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,3,252,0,0,0,0,0,3,254,0,0,0,0,0,3,254,0,0,0,0,0,3,252,0,0,0,0,0,0,80,0,0,0, + // 0x1ead ậ + 173,30,18,39,195,23,2,248,0,2,170,0,0,0,11,255,128,0,0,31,255,208,0,0,63,223,244,0,0,255,3,252,0,3,252,0,255,0,11,224,0,47,128,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0,0,0,0,0,0,0,0,80,0,0,0,3,252,0,0,0,3,253,0,0,0,3,253,0,0,0,3,252,0,0,0,0,80,0,0, + // 0x1eae Ắ + 174,30,26,41,31,26,0,0,0,0,0,5,80,0,0,0,0,0,31,208,0,0,0,0,0,63,64,0,0,0,0,0,190,0,0,0,0,1,65,244,20,0,0,0,3,208,0,124,0,0,0,2,244,0,252,0,0,0,1,255,175,244,0,0,0,0,191,255,224,0,0,0,0,31,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x1eaf ắ + 175,30,18,35,175,23,2,255,0,0,11,224,0,0,0,31,208,0,0,0,63,64,0,0,0,189,0,0,2,224,164,46,0,2,240,0,61,0,1,253,1,252,0,0,191,255,244,0,0,63,255,224,0,0,6,169,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x1eb0 Ằ + 176,30,26,41,31,26,0,0,0,0,85,0,0,0,0,0,0,127,64,0,0,0,0,0,31,192,0,0,0,0,0,7,224,0,0,0,0,1,65,244,20,0,0,0,3,208,0,124,0,0,0,3,240,0,252,0,0,0,1,255,175,244,0,0,0,0,191,255,224,0,0,0,0,31,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x1eb1 ằ + 177,30,18,35,175,23,2,255,0,127,64,0,0,0,47,192,0,0,0,11,224,0,0,0,2,240,0,0,2,224,164,62,0,2,240,0,125,0,1,253,1,252,0,0,255,255,244,0,0,63,255,224,0,0,6,169,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x1eb2 Ẳ + 178,30,26,42,38,26,0,0,0,0,6,160,0,0,0,0,0,7,253,0,0,0,0,0,0,47,0,0,0,0,0,0,31,0,0,0,0,0,0,253,0,0,0,0,1,65,240,20,0,0,0,3,208,64,124,0,0,0,3,240,0,252,0,0,0,1,255,175,244,0,0,0,0,191,255,224,0,0,0,0,31,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x1eb3 ẳ + 179,30,18,36,180,23,2,255,0,3,253,0,0,0,2,191,0,0,0,0,15,64,0,0,0,31,0,0,0,0,253,0,0,2,224,240,46,0,2,240,0,62,0,0,253,1,252,0,0,191,255,248,0,0,47,255,224,0,0,2,170,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x1eb4 Ẵ + 180,30,26,42,38,26,0,0,0,0,127,64,30,0,0,0,1,255,248,125,0,0,0,3,251,255,252,0,0,0,3,192,127,244,0,0,0,1,64,1,64,0,0,0,0,0,0,0,0,0,0,3,208,0,124,0,0,0,3,240,0,252,0,0,0,1,255,175,244,0,0,0,0,191,255,224,0,0,0,0,31,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240, + // 0x1eb5 ẵ + 181,30,18,37,185,23,2,255,0,4,0,5,0,0,127,224,15,0,0,255,254,190,0,2,245,191,252,0,3,192,11,240,0,0,0,0,0,0,1,144,0,25,0,2,240,0,61,0,1,249,1,252,0,0,255,255,248,0,0,63,255,224,0,0,6,186,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0, + // 0x1eb6 Ặ + 182,30,26,45,59,26,0,248,0,7,192,0,63,0,0,0,3,224,0,126,0,0,0,3,254,171,252,0,0,0,0,255,255,244,0,0,0,0,127,255,208,0,0,0,0,6,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,0,0,0,0,0,11,255,0,0,0,0,0,15,255,0,0,0,0,0,31,255,128,0,0,0,0,47,255,192,0,0,0,0,63,175,208,0,0,0,0,127,95,224,0,0,0,0,255,15,240,0,0,0,1,255,11,244,0,0,0,2,253,7,252,0,0,0,3,252,3,252,0,0,0,7,252,2,254,0,0,0,15,244,1,255,0,0,0,15,240,0,255,64,0,0,47,224,0,191,128,0,0,63,208,0,63,192,0,0,127,192,0,63,208,0,0,191,255,255,255,240,0,0,255,255,255,255,240,0,1,255,255,255,255,248,0,3,255,255,255,255,252,0,3,252,0,0,3,253,0,11,252,0,0,3,254,0,15,248,0,0,1,255,0,31,240,0,0,0,255,64,47,240,0,0,0,191,192,63,208,0,0,0,127,192,127,192,0,0,0,63,224,255,128,0,0,0,47,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,3,252,0,0,0,0,0,3,254,0,0,0,0,0,3,254,0,0,0,0,0,3,252,0,0,0,0,0,0,80,0,0,0, + // 0x1eb7 ặ + 183,30,18,38,190,23,2,248,3,224,0,31,0,2,240,0,63,0,1,254,170,254,0,0,255,255,252,0,0,47,255,240,0,0,2,170,64,0,0,0,0,0,0,0,0,0,0,0,0,27,255,144,0,6,255,255,253,0,11,255,255,255,64,7,254,91,255,192,2,128,0,127,208,0,0,0,63,224,0,0,0,47,224,0,0,0,31,240,0,0,0,31,240,0,27,255,255,240,3,255,255,255,240,31,255,250,191,240,127,244,0,31,240,255,192,0,31,240,255,64,0,47,240,255,0,0,47,240,255,64,0,63,240,255,128,0,255,240,255,208,7,255,240,127,255,255,223,240,47,255,255,75,240,7,255,248,7,240,0,21,64,0,0,0,0,0,0,0,0,0,80,0,0,0,3,248,0,0,0,11,252,0,0,0,11,252,0,0,0,3,248,0,0,0,0,80,0,0, + // 0x1eb8 Ẹ + 184,30,16,37,148,22,4,248,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,1,64,0,0,15,240,0,0,31,244,0,0,31,244,0,0,15,240,0,0,1,64,0, + // 0x1eb9 ẹ + 185,30,19,30,150,23,2,248,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0,0,0,0,0,0,0,0,20,0,0,0,0,255,0,0,0,1,255,64,0,0,1,255,64,0,0,0,255,0,0,0,0,20,0,0, + // 0x1eba Ẻ + 186,30,16,40,160,22,4,0,0,63,228,0,0,127,254,0,0,42,255,0,0,0,63,64,0,0,63,64,0,1,255,0,0,15,252,0,0,11,208,0,0,11,192,0,0,1,64,0,0,0,0,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x1ebb ẻ + 187,30,19,34,170,23,2,255,0,3,254,64,0,0,3,255,224,0,0,2,175,244,0,0,0,3,248,0,0,0,3,244,0,0,0,11,240,0,0,0,191,208,0,0,0,190,0,0,0,0,124,0,0,0,0,20,0,0,0,0,0,0,0,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x1ebc Ẽ + 188,30,16,37,148,22,4,0,0,164,0,25,11,255,64,61,31,255,249,252,63,175,255,248,61,1,255,240,120,0,26,64,0,0,0,0,0,0,0,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x1ebd ẽ + 189,30,19,31,155,23,2,255,0,25,0,2,128,1,255,224,11,192,3,255,254,111,128,11,251,255,255,0,15,192,63,253,0,15,64,6,160,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x1ebe Ế + 190,30,19,39,195,22,4,0,0,0,0,3,252,0,0,0,11,240,0,26,160,31,192,0,63,252,63,0,0,255,254,20,0,2,253,127,64,0,11,240,31,208,0,31,128,3,240,0,0,0,0,0,0,0,0,0,0,0,170,170,170,169,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,234,170,168,0,255,255,255,252,0,255,255,255,252,0,255,255,255,252,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,234,170,170,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0, + // 0x1ebf ế + 191,30,21,34,204,23,2,255,0,0,0,0,21,64,0,0,0,0,127,64,0,0,0,0,254,0,0,2,255,66,248,0,0,11,255,199,208,0,0,31,255,240,0,0,0,63,131,248,0,0,0,253,0,254,0,0,1,224,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,252,0,0,2,255,255,255,64,0,11,255,86,255,192,0,31,244,0,63,224,0,63,224,0,15,240,0,63,192,0,11,244,0,127,192,0,7,248,0,191,128,0,7,252,0,255,255,255,255,252,0,255,255,255,255,252,0,255,255,255,255,252,0,255,128,0,0,0,0,255,128,0,0,0,0,191,192,0,0,0,0,127,192,0,0,0,0,63,224,0,0,0,0,47,248,0,0,16,0,15,255,64,22,240,0,3,255,255,255,240,0,0,255,255,255,240,0,0,27,255,255,64,0,0,0,21,64,0,0, + // 0x1ec0 Ề + 192,30,19,39,195,22,1,0,255,0,0,0,0,63,64,0,0,0,31,192,42,128,0,3,240,255,240,0,0,82,255,248,0,0,11,245,254,0,0,31,192,63,64,0,62,0,11,192,0,0,0,0,0,0,0,0,0,0,2,170,170,170,164,3,255,255,255,252,3,255,255,255,252,3,255,255,255,252,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,255,170,170,160,3,255,255,255,240,3,255,255,255,240,3,255,255,255,240,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,252,0,0,0,3,255,170,170,168,3,255,255,255,252,3,255,255,255,252,3,255,255,255,252, + // 0x1ec1 ề + 193,30,20,34,170,23,1,255,85,0,0,0,0,255,0,0,0,0,63,128,0,0,0,15,208,191,208,0,2,241,255,240,0,0,3,255,252,0,0,15,224,255,0,0,63,64,47,128,0,120,0,7,192,0,0,0,0,0,0,0,0,0,0,0,1,191,228,0,0,31,255,255,0,0,191,255,255,208,2,255,213,191,240,7,253,0,15,248,15,248,0,3,252,15,240,0,2,253,31,240,0,1,254,47,224,0,1,255,63,255,255,255,255,63,255,255,255,255,63,255,255,255,255,63,224,0,0,0,63,224,0,0,0,47,240,0,0,0,31,240,0,0,0,15,248,0,0,0,11,254,0,0,4,3,255,208,5,188,0,255,255,255,252,0,63,255,255,252,0,6,255,255,208,0,0,5,80,0, + // 0x1ec2 Ể + 194,30,18,42,210,22,4,0,0,0,0,84,0,0,0,0,191,192,0,0,0,91,224,0,0,0,2,240,0,0,0,7,224,0,26,160,63,128,0,63,252,61,0,0,255,254,20,0,2,252,127,64,0,11,240,31,208,0,31,128,3,240,0,0,0,0,0,0,0,0,0,0,0,170,170,170,169,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,234,170,168,0,255,255,255,252,0,255,255,255,252,0,255,255,255,252,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,0,0,0,0,255,234,170,170,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0, + // 0x1ec3 ể + 195,30,20,36,180,23,2,255,0,0,0,11,224,0,0,0,15,252,0,0,0,0,62,0,0,0,0,61,0,0,0,2,252,0,3,255,3,224,0,11,255,195,192,0,31,239,224,0,0,127,71,248,0,0,253,0,253,0,2,224,0,46,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x1ec4 Ễ + 196,30,16,42,168,22,4,0,1,253,0,180,11,255,209,240,15,239,255,224,31,1,255,192,20,0,21,0,0,5,80,0,0,63,248,0,0,191,253,0,2,253,191,64,7,240,31,192,31,128,2,240,0,0,0,0,0,0,0,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x1ec5 ễ + 197,30,19,37,185,23,2,255,0,5,0,5,0,0,127,224,15,0,0,255,255,191,0,1,245,191,252,0,2,208,11,244,0,0,0,0,0,0,0,2,255,0,0,0,7,255,128,0,0,15,255,224,0,0,63,135,244,0,0,253,0,253,0,2,224,0,31,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0, + // 0x1ec6 Ệ + 198,30,16,46,184,22,4,248,0,10,164,0,0,63,253,0,0,191,255,0,2,255,191,192,7,248,31,240,31,224,7,248,47,64,0,189,0,0,0,0,0,0,0,0,170,170,170,169,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,168,255,255,255,252,255,255,255,252,255,255,255,252,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,234,170,170,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,1,64,0,0,15,240,0,0,31,244,0,0,31,244,0,0,15,240,0,0,1,64,0, + // 0x1ec7 ệ + 199,30,19,39,195,23,2,248,0,2,170,0,0,0,11,255,128,0,0,31,255,208,0,0,63,223,244,0,0,255,3,252,0,3,252,0,255,0,7,224,0,31,128,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,127,255,252,0,2,255,255,255,64,11,255,86,255,192,31,244,0,63,224,63,224,0,15,240,63,192,0,11,244,127,192,0,7,248,191,128,0,7,252,255,255,255,255,252,255,255,255,255,252,255,255,255,255,252,255,128,0,0,0,255,128,0,0,0,191,192,0,0,0,127,192,0,0,0,63,224,0,0,0,47,248,0,0,16,15,255,64,22,240,3,255,255,255,240,0,255,255,255,240,0,27,255,255,64,0,0,21,64,0,0,0,0,0,0,0,0,20,0,0,0,0,255,0,0,0,1,255,64,0,0,1,255,64,0,0,0,255,0,0,0,0,20,0,0, + // 0x1ec8 Ỉ + 200,30,12,40,120,14,1,0,1,169,0,3,255,208,3,255,244,0,3,248,0,2,248,0,3,244,0,127,240,0,127,64,0,125,0,0,61,0,0,0,0,106,170,169,127,255,254,127,255,254,11,255,228,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,1,255,128,127,255,253,127,255,254,127,255,254, + // 0x1ec9 ỉ + 201,30,8,33,66,11,2,0,127,224,191,253,106,255,0,127,0,127,1,254,15,248,15,192,15,192,5,64,0,0,26,144,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224,47,224, + // 0x1eca Ị + 202,30,12,37,111,14,1,248,106,170,169,127,255,254,127,255,254,11,255,228,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,1,255,128,127,255,253,127,255,254,127,255,254,0,0,0,0,0,0,0,20,0,0,255,0,1,255,64,1,255,64,0,255,0,0,20,0, + // 0x1ecb ị + 203,30,5,38,76,11,3,248,42,0,191,128,255,192,255,128,127,0,0,0,0,0,0,0,106,64,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,191,128,0,0,0,0,4,0,191,64,255,192,255,192,127,64,4,0, + // 0x1ecc Ọ + 204,30,27,37,3,31,2,248,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,1,254,0,0,0,0,0,2,255,0,0,0,0,0,2,255,0,0,0,0,0,1,254,0,0,0,0,0,0,20,0,0,0, + // 0x1ecd ọ + 205,30,21,30,180,24,2,248,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,255,0,0,0,0,1,255,64,0,0,0,1,255,64,0,0,0,0,255,0,0,0,0,0,20,0,0,0, + // 0x1ece Ỏ + 206,30,27,41,31,31,2,255,0,0,1,165,0,0,0,0,0,7,255,192,0,0,0,0,7,255,240,0,0,0,0,0,7,244,0,0,0,0,0,3,244,0,0,0,0,0,7,240,0,0,0,0,0,191,208,0,0,0,0,0,254,64,0,0,0,0,0,188,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x1ecf ỏ + 207,30,21,34,204,24,2,255,0,2,255,64,0,0,0,3,255,240,0,0,0,2,175,248,0,0,0,0,2,252,0,0,0,0,2,248,0,0,0,0,11,244,0,0,0,0,127,224,0,0,0,0,126,0,0,0,0,0,61,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x1ed0 Ố + 208,30,27,40,24,31,2,255,0,0,0,0,0,127,128,0,0,0,0,0,255,0,0,0,1,170,2,252,0,0,0,7,255,131,224,0,0,0,15,255,209,64,0,0,0,63,203,240,0,0,0,0,254,1,252,0,0,0,2,244,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x1ed1 ố + 209,30,21,34,204,24,2,255,0,0,0,0,21,64,0,0,0,0,63,192,0,0,0,0,191,0,0,1,255,129,252,0,0,3,255,211,224,0,0,15,255,240,0,0,0,63,194,252,0,0,0,190,0,191,0,0,0,244,0,31,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x1ed2 Ồ + 210,30,27,40,24,31,2,255,7,248,0,0,0,0,0,1,252,0,0,0,0,0,0,127,1,170,0,0,0,0,31,135,255,128,0,0,0,1,79,255,208,0,0,0,0,63,203,244,0,0,0,0,191,1,252,0,0,0,2,248,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x1ed3 ồ + 211,30,22,34,204,24,1,255,85,0,0,0,0,0,191,64,0,0,0,0,47,192,0,0,0,0,11,224,127,224,0,0,1,244,255,244,0,0,0,3,255,253,0,0,0,11,240,191,0,0,0,47,128,31,192,0,0,61,0,2,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,228,0,0,0,31,255,255,128,0,0,191,255,255,240,0,2,255,250,191,252,0,7,255,0,11,254,0,15,252,0,2,255,0,15,244,0,0,255,128,31,240,0,0,191,192,47,224,0,0,127,192,63,224,0,0,63,192,63,208,0,0,63,208,63,208,0,0,63,208,63,224,0,0,63,192,63,224,0,0,63,192,47,240,0,0,127,192,31,240,0,0,191,128,15,248,0,0,255,64,7,253,0,3,255,0,3,255,144,31,253,0,0,255,255,255,244,0,0,63,255,255,208,0,0,7,255,254,0,0,0,0,21,64,0,0, + // 0x1ed4 Ổ + 212,30,27,43,45,31,2,255,0,0,0,0,5,64,0,0,0,0,0,15,248,0,0,0,0,0,5,189,0,0,0,0,0,0,62,0,0,0,0,0,0,125,0,0,0,1,170,3,244,0,0,0,7,255,131,192,0,0,0,15,255,209,64,0,0,0,63,203,240,0,0,0,0,254,1,252,0,0,0,2,244,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x1ed5 ổ + 213,30,21,36,216,24,2,255,0,0,0,7,228,0,0,0,0,7,254,0,0,0,0,0,47,0,0,0,0,0,31,0,0,0,0,1,190,0,0,1,255,130,244,0,0,3,255,209,224,0,0,15,255,240,0,0,0,63,194,252,0,0,0,190,0,191,0,0,0,244,0,31,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x1ed6 Ỗ + 214,30,27,43,45,31,2,255,0,0,47,144,15,0,0,0,0,191,253,47,0,0,0,1,250,255,253,0,0,0,2,224,31,248,0,0,0,1,64,1,64,0,0,0,0,0,85,0,0,0,0,0,3,255,64,0,0,0,0,15,255,208,0,0,0,0,47,219,240,0,0,0,0,190,1,252,0,0,0,2,244,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0, + // 0x1ed7 ỗ + 215,30,21,37,222,24,2,255,0,1,0,1,64,0,0,47,244,11,128,0,0,127,255,175,64,0,0,248,127,254,0,0,0,240,7,248,0,0,0,0,0,0,0,0,0,0,255,64,0,0,0,3,255,192,0,0,0,11,255,240,0,0,0,47,194,252,0,0,0,190,0,127,0,0,0,244,0,11,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0, + // 0x1ed8 Ộ + 216,30,27,46,66,31,2,248,0,0,1,170,0,0,0,0,0,7,255,192,0,0,0,0,15,255,224,0,0,0,0,63,223,244,0,0,0,0,255,67,253,0,0,0,2,252,0,191,64,0,0,7,224,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,228,0,0,0,7,255,255,255,64,0,0,47,255,255,255,240,0,0,191,255,239,255,252,0,2,255,224,0,31,255,0,7,255,64,0,2,255,128,15,252,0,0,0,255,208,31,248,0,0,0,63,224,47,240,0,0,0,47,240,63,224,0,0,0,31,244,63,208,0,0,0,15,248,127,192,0,0,0,15,252,127,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,191,192,0,0,0,11,252,127,192,0,0,0,15,252,127,208,0,0,0,15,248,63,224,0,0,0,15,244,63,240,0,0,0,47,240,31,244,0,0,0,63,240,15,252,0,0,0,191,208,11,254,0,0,1,255,192,3,255,192,0,11,255,64,0,255,254,85,191,254,0,0,63,255,255,255,244,0,0,11,255,255,255,208,0,0,0,191,255,249,0,0,0,0,1,85,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,1,254,0,0,0,0,0,2,255,0,0,0,0,0,2,255,0,0,0,0,0,1,254,0,0,0,0,0,0,20,0,0,0, + // 0x1ed9 ộ + 217,30,21,39,234,24,2,248,0,0,170,64,0,0,0,3,255,208,0,0,0,11,255,240,0,0,0,31,251,252,0,0,0,127,129,255,0,0,1,254,0,127,128,0,2,244,0,11,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,144,0,0,0,127,255,254,0,0,2,255,255,255,192,0,11,255,234,255,240,0,31,252,0,47,248,0,63,240,0,11,252,0,63,208,0,3,254,0,127,192,0,2,255,0,191,128,0,1,255,0,255,128,0,0,255,0,255,64,0,0,255,64,255,64,0,0,255,64,255,128,0,0,255,0,255,128,0,0,255,0,191,192,0,1,255,0,127,192,0,2,254,0,63,224,0,3,253,0,31,244,0,15,252,0,15,254,64,127,244,0,3,255,255,255,208,0,0,255,255,255,64,0,0,31,255,248,0,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,255,0,0,0,0,1,255,64,0,0,0,1,255,64,0,0,0,0,255,0,0,0,0,0,20,0,0,0, + // 0x1eda Ớ + 218,30,31,39,56,32,2,255,0,0,0,2,170,0,0,0,0,0,0,11,253,0,0,0,0,0,0,31,244,0,0,0,0,0,0,63,208,0,0,0,0,0,0,191,64,0,0,0,0,0,1,253,0,0,0,0,0,0,2,224,0,0,0,0,0,0,0,0,0,0,5,84,0,0,0,0,0,0,15,248,0,0,27,255,228,0,15,244,0,7,255,255,255,64,15,240,0,47,255,255,255,240,47,224,0,191,255,239,255,252,127,192,2,255,224,0,31,255,255,64,7,255,0,0,2,255,253,0,15,252,0,0,0,255,224,0,31,248,0,0,0,63,224,0,47,240,0,0,0,47,240,0,63,224,0,0,0,31,244,0,63,208,0,0,0,15,248,0,127,192,0,0,0,15,252,0,127,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,127,192,0,0,0,15,252,0,127,208,0,0,0,15,248,0,63,224,0,0,0,15,244,0,63,240,0,0,0,47,240,0,31,244,0,0,0,63,240,0,15,252,0,0,0,127,208,0,11,254,0,0,1,255,192,0,3,255,192,0,11,255,64,0,0,255,254,85,191,254,0,0,0,63,255,255,255,244,0,0,0,11,255,255,255,208,0,0,0,0,191,255,249,0,0,0,0,0,1,85,0,0,0,0, + // 0x1edb ớ + 219,30,25,32,224,25,2,255,0,0,1,170,64,0,0,0,0,3,255,0,0,0,0,0,15,252,0,0,0,0,0,47,240,0,0,0,0,0,63,192,0,0,0,0,0,254,0,0,0,0,0,1,248,0,0,255,128,0,0,0,0,0,255,128,0,0,0,0,0,255,0,0,6,255,144,1,255,0,0,127,255,254,3,253,0,2,255,255,255,223,252,0,11,255,234,255,255,240,0,31,248,0,31,255,128,0,63,240,0,7,252,0,0,63,192,0,3,254,0,0,127,192,0,2,255,0,0,191,128,0,1,255,0,0,255,128,0,0,255,0,0,255,64,0,0,255,64,0,255,64,0,0,255,64,0,255,64,0,0,255,0,0,255,128,0,0,255,0,0,191,192,0,1,255,0,0,127,192,0,2,254,0,0,63,224,0,3,253,0,0,31,244,0,15,252,0,0,15,254,64,127,244,0,0,3,255,255,255,208,0,0,0,255,255,255,64,0,0,0,31,255,248,0,0,0,0,0,85,0,0,0,0, + // 0x1edc Ờ + 220,30,31,39,56,32,2,255,0,0,170,128,0,0,0,0,0,0,191,208,0,0,0,0,0,0,47,240,0,0,0,0,0,0,11,248,0,0,0,0,0,0,2,253,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,31,128,0,0,0,0,0,0,0,0,0,5,84,0,0,0,0,0,0,15,248,0,0,27,255,228,0,15,244,0,7,255,255,255,64,15,240,0,47,255,255,255,240,47,224,0,191,255,239,255,252,127,192,2,255,224,0,31,255,255,64,7,255,0,0,2,255,253,0,15,252,0,0,0,255,224,0,31,248,0,0,0,63,224,0,47,240,0,0,0,47,240,0,63,224,0,0,0,31,244,0,63,208,0,0,0,15,248,0,127,192,0,0,0,15,252,0,127,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,127,192,0,0,0,15,252,0,127,208,0,0,0,15,248,0,63,224,0,0,0,15,244,0,63,240,0,0,0,47,240,0,31,244,0,0,0,63,240,0,15,252,0,0,0,127,208,0,11,254,0,0,1,255,192,0,3,255,192,0,11,255,64,0,0,255,254,85,191,254,0,0,0,63,255,255,255,244,0,0,0,11,255,255,255,208,0,0,0,0,191,255,249,0,0,0,0,0,1,85,0,0,0,0, + // 0x1edd ờ + 221,30,25,32,224,25,2,255,0,106,128,0,0,0,0,0,63,240,0,0,0,0,0,31,244,0,0,0,0,0,7,252,0,0,0,0,0,1,255,0,0,0,0,0,0,63,128,0,0,0,0,0,11,192,0,255,128,0,0,0,0,0,255,128,0,0,0,0,0,255,0,0,6,255,144,1,255,0,0,127,255,254,3,253,0,2,255,255,255,223,252,0,11,255,234,255,255,240,0,31,248,0,31,255,128,0,63,240,0,7,252,0,0,63,192,0,3,254,0,0,127,192,0,2,255,0,0,191,128,0,1,255,0,0,255,128,0,0,255,0,0,255,64,0,0,255,64,0,255,64,0,0,255,64,0,255,64,0,0,255,0,0,255,128,0,0,255,0,0,191,192,0,1,255,0,0,127,192,0,2,254,0,0,63,224,0,3,253,0,0,31,244,0,15,252,0,0,15,254,64,127,244,0,0,3,255,255,255,208,0,0,0,255,255,255,64,0,0,0,31,255,248,0,0,0,0,0,85,0,0,0,0, + // 0x1ede Ở + 222,30,31,41,72,32,2,255,0,0,11,254,0,0,0,0,0,0,11,255,192,0,0,0,0,0,10,175,240,0,0,0,0,0,0,11,240,0,0,0,0,0,0,7,240,0,0,0,0,0,0,31,224,0,0,0,0,0,0,255,128,0,0,0,0,0,0,252,0,0,0,0,0,0,0,248,0,0,0,0,0,0,0,80,0,0,5,84,0,0,0,0,0,0,15,248,0,0,27,255,228,0,15,244,0,7,255,255,255,64,15,240,0,47,255,255,255,240,47,224,0,191,255,239,255,252,127,192,2,255,224,0,31,255,255,64,7,255,0,0,2,255,253,0,15,252,0,0,0,255,224,0,31,248,0,0,0,63,224,0,47,240,0,0,0,47,240,0,63,224,0,0,0,31,244,0,63,208,0,0,0,15,248,0,127,192,0,0,0,15,252,0,127,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,127,192,0,0,0,15,252,0,127,208,0,0,0,15,248,0,63,224,0,0,0,15,244,0,63,240,0,0,0,47,240,0,31,244,0,0,0,63,240,0,15,252,0,0,0,127,208,0,11,254,0,0,1,255,192,0,3,255,192,0,11,255,64,0,0,255,254,85,191,254,0,0,0,63,255,255,255,244,0,0,0,11,255,255,255,208,0,0,0,0,191,255,249,0,0,0,0,0,1,85,0,0,0,0, + // 0x1edf ở + 223,30,25,34,238,25,2,255,0,3,254,64,0,0,0,0,3,255,224,0,0,0,0,2,175,240,0,0,0,0,0,3,244,0,0,0,0,0,3,244,0,0,0,0,0,11,240,0,0,0,0,0,191,208,0,0,0,0,0,189,0,0,0,0,0,0,188,0,0,255,128,0,0,20,0,0,255,128,0,0,0,0,0,255,0,0,6,255,144,1,255,0,0,127,255,254,3,253,0,2,255,255,255,223,252,0,11,255,234,255,255,240,0,31,248,0,31,255,128,0,63,240,0,7,252,0,0,63,192,0,3,254,0,0,127,192,0,2,255,0,0,191,128,0,1,255,0,0,255,128,0,0,255,0,0,255,64,0,0,255,64,0,255,64,0,0,255,64,0,255,64,0,0,255,0,0,255,128,0,0,255,0,0,191,192,0,1,255,0,0,127,192,0,2,254,0,0,63,224,0,3,253,0,0,31,244,0,15,252,0,0,15,254,64,127,244,0,0,3,255,255,255,208,0,0,0,255,255,255,64,0,0,0,31,255,248,0,0,0,0,0,85,0,0,0,0, + // 0x1ee0 Ỡ + 224,30,31,38,48,32,2,255,0,0,26,0,2,128,0,0,0,0,255,240,11,192,0,0,0,3,255,254,111,192,0,0,0,7,250,255,255,64,0,0,0,11,192,47,254,0,0,0,0,11,64,2,164,0,0,0,0,0,0,0,0,0,5,84,0,0,0,0,0,0,15,248,0,0,27,255,228,0,15,244,0,7,255,255,255,64,15,240,0,47,255,255,255,240,47,224,0,191,255,239,255,252,127,192,2,255,224,0,31,255,255,64,7,255,0,0,2,255,253,0,15,252,0,0,0,255,224,0,31,248,0,0,0,63,224,0,47,240,0,0,0,47,240,0,63,224,0,0,0,31,244,0,63,208,0,0,0,15,248,0,127,192,0,0,0,15,252,0,127,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,127,192,0,0,0,15,252,0,127,208,0,0,0,15,248,0,63,224,0,0,0,15,244,0,63,240,0,0,0,47,240,0,31,244,0,0,0,63,240,0,15,252,0,0,0,127,208,0,11,254,0,0,1,255,192,0,3,255,192,0,11,255,64,0,0,255,254,85,191,254,0,0,0,63,255,255,255,244,0,0,0,11,255,255,255,208,0,0,0,0,191,255,249,0,0,0,0,0,1,85,0,0,0,0, + // 0x1ee1 ỡ + 225,30,25,31,217,25,2,255,0,10,64,1,144,0,0,0,191,244,3,224,0,0,1,255,255,159,208,0,0,3,250,255,255,192,0,0,3,208,31,255,0,0,0,7,128,1,164,0,255,128,0,0,0,0,0,255,128,0,0,0,0,0,255,0,0,6,255,144,1,255,0,0,127,255,254,3,253,0,2,255,255,255,223,252,0,11,255,234,255,255,240,0,31,248,0,31,255,128,0,63,240,0,7,252,0,0,63,192,0,3,254,0,0,127,192,0,2,255,0,0,191,128,0,1,255,0,0,255,128,0,0,255,0,0,255,64,0,0,255,64,0,255,64,0,0,255,64,0,255,64,0,0,255,0,0,255,128,0,0,255,0,0,191,192,0,1,255,0,0,127,192,0,2,254,0,0,63,224,0,3,253,0,0,31,244,0,15,252,0,0,15,254,64,127,244,0,0,3,255,255,255,208,0,0,0,255,255,255,64,0,0,0,31,255,248,0,0,0,0,0,85,0,0,0,0, + // 0x1ee2 Ợ + 226,30,31,39,56,32,2,248,0,0,0,0,0,0,5,84,0,0,0,0,0,0,15,248,0,0,27,255,228,0,15,244,0,7,255,255,255,64,15,240,0,47,255,255,255,240,47,224,0,191,255,239,255,252,127,192,2,255,224,0,31,255,255,64,7,255,0,0,2,255,253,0,15,252,0,0,0,255,224,0,31,248,0,0,0,63,224,0,47,240,0,0,0,47,240,0,63,224,0,0,0,31,244,0,63,208,0,0,0,15,248,0,127,192,0,0,0,15,252,0,127,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,191,192,0,0,0,11,252,0,127,192,0,0,0,15,252,0,127,208,0,0,0,15,248,0,63,224,0,0,0,15,244,0,63,240,0,0,0,47,240,0,31,244,0,0,0,63,240,0,15,252,0,0,0,127,208,0,11,254,0,0,1,255,192,0,3,255,192,0,11,255,64,0,0,255,254,85,191,254,0,0,0,63,255,255,255,244,0,0,0,11,255,255,255,208,0,0,0,0,191,255,249,0,0,0,0,0,1,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,1,254,0,0,0,0,0,0,2,255,0,0,0,0,0,0,2,255,0,0,0,0,0,0,1,254,0,0,0,0,0,0,0,20,0,0,0,0, + // 0x1ee3 ợ + 227,30,25,33,231,25,2,248,0,0,0,0,0,255,128,0,0,0,0,0,255,128,0,0,0,0,0,255,0,0,6,255,144,1,255,0,0,127,255,254,3,253,0,2,255,255,255,223,252,0,11,255,234,255,255,240,0,31,248,0,31,255,128,0,63,240,0,7,252,0,0,63,192,0,3,254,0,0,127,192,0,2,255,0,0,191,128,0,1,255,0,0,255,128,0,0,255,0,0,255,64,0,0,255,64,0,255,64,0,0,255,64,0,255,64,0,0,255,0,0,255,128,0,0,255,0,0,191,192,0,1,255,0,0,127,192,0,2,254,0,0,63,224,0,3,253,0,0,31,244,0,15,252,0,0,15,254,64,127,244,0,0,3,255,255,255,208,0,0,0,255,255,255,64,0,0,0,31,255,248,0,0,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,255,0,0,0,0,0,0,255,64,0,0,0,0,0,255,64,0,0,0,0,0,255,0,0,0,0,0,0,20,0,0,0,0, + // 0x1ee4 Ụ + 228,30,23,37,222,30,3,248,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,248,0,0,11,255,255,144,0,0,0,21,80,0,0,0,0,0,0,0,0,0,0,1,64,0,0,0,0,31,224,0,0,0,0,47,240,0,0,0,0,47,240,0,0,0,0,31,224,0,0,0,0,1,64,0,0, + // 0x1ee5 ụ + 229,30,19,30,150,25,3,248,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,2,252,0,5,80,0,0,0,0,0,0,0,0,0,80,0,0,0,3,252,0,0,0,7,253,0,0,0,7,253,0,0,0,3,252,0,0,0,0,80,0,0, + // 0x1ee6 Ủ + 230,30,23,41,246,30,3,255,0,0,26,64,0,0,0,0,127,252,0,0,0,0,127,255,0,0,0,0,0,191,0,0,0,0,0,63,0,0,0,0,0,191,0,0,0,0,11,253,0,0,0,0,15,224,0,0,0,0,15,192,0,0,0,0,11,128,0,0,0,0,0,0,0,0,42,64,0,0,2,168,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,127,192,0,0,7,252,63,208,0,0,11,248,63,224,0,0,15,244,47,244,0,0,47,240,15,253,0,0,191,224,7,255,229,91,255,192,2,255,255,255,255,0,0,127,255,255,248,0,0,11,255,255,144,0,0,0,21,80,0,0, + // 0x1ee7 ủ + 231,30,19,34,170,25,3,255,0,11,254,0,0,0,15,255,192,0,0,10,175,224,0,0,0,11,240,0,0,0,7,240,0,0,0,31,224,0,0,1,255,128,0,0,0,252,0,0,0,0,248,0,0,0,0,80,0,0,0,0,0,0,0,106,0,0,2,164,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,7,252,255,64,0,11,252,255,64,0,11,252,255,128,0,15,252,191,192,0,31,252,191,208,0,63,252,63,248,6,255,252,47,255,255,247,252,15,255,255,211,252,1,255,254,2,252,0,5,80,0,0, + // 0x1ee8 Ứ + 232,30,31,39,56,32,3,255,0,0,0,42,160,0,0,0,0,0,0,191,208,0,0,0,0,0,0,255,64,0,0,0,0,0,3,253,0,0,0,0,0,0,11,244,0,0,0,0,0,0,31,208,0,0,0,0,0,0,47,64,0,0,0,0,0,0,0,0,0,0,5,80,0,0,0,0,0,0,15,248,42,64,0,0,2,168,15,244,127,192,0,0,7,252,31,240,127,192,0,0,7,252,47,224,127,192,0,0,7,252,127,192,127,192,0,0,7,255,255,64,127,192,0,0,7,255,252,0,127,192,0,0,7,255,144,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,63,192,0,0,11,248,0,0,63,224,0,0,15,244,0,0,47,244,0,0,47,240,0,0,15,253,0,0,191,224,0,0,7,255,229,91,255,192,0,0,2,255,255,255,255,0,0,0,0,127,255,255,252,0,0,0,0,7,255,255,144,0,0,0,0,0,5,80,0,0,0,0, + // 0x1ee9 ứ + 233,30,27,32,224,28,3,255,0,0,2,170,0,0,0,0,0,15,252,0,0,0,0,0,31,244,0,0,0,0,0,63,208,0,0,0,0,0,255,64,0,0,0,0,2,252,0,0,0,0,0,3,224,0,0,15,244,0,0,0,0,0,31,244,0,0,0,0,0,31,240,106,0,0,2,164,47,224,255,64,0,7,252,63,192,255,64,0,7,253,255,128,255,64,0,7,255,254,0,255,64,0,7,255,244,0,255,64,0,7,253,64,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,11,252,0,0,255,64,0,11,252,0,0,255,128,0,15,252,0,0,191,192,0,31,252,0,0,191,208,0,63,252,0,0,63,248,6,255,252,0,0,47,255,255,247,252,0,0,15,255,255,211,252,0,0,1,255,254,2,252,0,0,0,5,80,0,0,0,0, + // 0x1eea Ừ + 234,30,31,39,56,32,3,255,0,10,168,0,0,0,0,0,0,11,253,0,0,0,0,0,0,2,255,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,47,208,0,0,0,0,0,0,11,240,0,0,0,0,0,0,1,248,0,0,0,0,0,0,0,0,0,0,5,80,0,0,0,0,0,0,15,248,42,64,0,0,2,168,15,244,127,192,0,0,7,252,31,240,127,192,0,0,7,252,47,224,127,192,0,0,7,252,127,192,127,192,0,0,7,255,255,64,127,192,0,0,7,255,252,0,127,192,0,0,7,255,144,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,63,192,0,0,11,248,0,0,63,224,0,0,15,244,0,0,47,244,0,0,47,240,0,0,15,253,0,0,191,224,0,0,7,255,229,91,255,192,0,0,2,255,255,255,255,0,0,0,0,127,255,255,252,0,0,0,0,7,255,255,144,0,0,0,0,0,5,80,0,0,0,0, + // 0x1eeb ừ + 235,30,27,32,224,28,3,255,0,170,64,0,0,0,0,0,191,208,0,0,0,0,0,63,240,0,0,0,0,0,15,248,0,0,0,0,0,3,253,0,0,0,0,0,0,191,0,0,0,0,0,0,47,64,0,15,244,0,0,0,0,0,31,244,0,0,0,0,0,31,240,106,0,0,2,164,47,224,255,64,0,7,252,63,192,255,64,0,7,253,255,128,255,64,0,7,255,254,0,255,64,0,7,255,244,0,255,64,0,7,253,64,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,11,252,0,0,255,64,0,11,252,0,0,255,128,0,15,252,0,0,191,192,0,31,252,0,0,191,208,0,63,252,0,0,63,248,6,255,252,0,0,47,255,255,247,252,0,0,15,255,255,211,252,0,0,1,255,254,2,252,0,0,0,5,80,0,0,0,0, + // 0x1eec Ử + 236,30,31,41,72,32,3,255,0,0,26,80,0,0,0,0,0,0,127,253,0,0,0,0,0,0,127,255,0,0,0,0,0,0,0,127,64,0,0,0,0,0,0,63,64,0,0,0,0,0,0,127,0,0,0,0,0,0,7,254,0,0,0,0,0,0,11,244,0,0,0,0,0,0,11,192,0,0,0,0,0,0,7,192,0,0,5,80,0,0,0,0,0,0,15,248,42,64,0,0,2,168,15,244,127,192,0,0,7,252,31,240,127,192,0,0,7,252,47,224,127,192,0,0,7,252,127,192,127,192,0,0,7,255,255,64,127,192,0,0,7,255,252,0,127,192,0,0,7,255,144,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,63,192,0,0,11,248,0,0,63,224,0,0,15,244,0,0,47,244,0,0,47,240,0,0,15,253,0,0,191,224,0,0,7,255,229,91,255,192,0,0,2,255,255,255,255,0,0,0,0,127,255,255,252,0,0,0,0,7,255,255,144,0,0,0,0,0,5,80,0,0,0,0, + // 0x1eed ử + 237,30,27,34,238,28,3,255,0,7,254,0,0,0,0,0,11,255,208,0,0,0,0,6,175,240,0,0,0,0,0,7,240,0,0,0,0,0,7,240,0,0,0,0,0,31,224,0,0,0,0,0,255,128,0,0,0,0,0,252,0,0,0,0,0,0,248,0,0,15,244,0,0,80,0,0,31,244,0,0,0,0,0,31,240,106,0,0,2,164,47,224,255,64,0,7,252,63,192,255,64,0,7,253,255,128,255,64,0,7,255,254,0,255,64,0,7,255,244,0,255,64,0,7,253,64,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,11,252,0,0,255,64,0,11,252,0,0,255,128,0,15,252,0,0,191,192,0,31,252,0,0,191,208,0,63,252,0,0,63,248,6,255,252,0,0,47,255,255,247,252,0,0,15,255,255,211,252,0,0,1,255,254,2,252,0,0,0,5,80,0,0,0,0, + // 0x1eee Ữ + 238,30,31,38,48,32,3,255,0,1,164,0,40,0,0,0,0,15,255,64,124,0,0,0,0,63,255,246,252,0,0,0,0,127,175,255,244,0,0,0,0,188,2,255,224,0,0,0,0,180,0,42,64,0,0,0,0,0,0,0,0,0,5,80,0,0,0,0,0,0,15,248,42,64,0,0,2,168,15,244,127,192,0,0,7,252,31,240,127,192,0,0,7,252,47,224,127,192,0,0,7,252,127,192,127,192,0,0,7,255,255,64,127,192,0,0,7,255,252,0,127,192,0,0,7,255,144,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,63,192,0,0,11,248,0,0,63,224,0,0,15,244,0,0,47,244,0,0,47,240,0,0,15,253,0,0,191,224,0,0,7,255,229,91,255,192,0,0,2,255,255,255,255,0,0,0,0,127,255,255,252,0,0,0,0,7,255,255,144,0,0,0,0,0,5,80,0,0,0,0, + // 0x1eef ữ + 239,30,27,31,217,28,3,255,0,25,0,2,128,0,0,0,255,224,11,192,0,0,3,255,254,111,128,0,0,7,250,255,255,0,0,0,15,192,47,253,0,0,0,11,64,2,160,0,15,244,0,0,0,0,0,31,244,0,0,0,0,0,31,240,106,0,0,2,164,47,224,255,64,0,7,252,63,192,255,64,0,7,253,255,128,255,64,0,7,255,254,0,255,64,0,7,255,244,0,255,64,0,7,253,64,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,11,252,0,0,255,64,0,11,252,0,0,255,128,0,15,252,0,0,191,192,0,31,252,0,0,191,208,0,63,252,0,0,63,248,6,255,252,0,0,47,255,255,247,252,0,0,15,255,255,211,252,0,0,1,255,254,2,252,0,0,0,5,80,0,0,0,0, + // 0x1ef0 Ự + 240,30,31,39,56,32,3,248,0,0,0,0,0,0,5,80,0,0,0,0,0,0,15,248,42,64,0,0,2,168,15,244,127,192,0,0,7,252,31,240,127,192,0,0,7,252,47,224,127,192,0,0,7,252,127,192,127,192,0,0,7,255,255,64,127,192,0,0,7,255,252,0,127,192,0,0,7,255,144,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,127,192,0,0,7,252,0,0,63,192,0,0,11,248,0,0,63,224,0,0,15,244,0,0,47,244,0,0,47,240,0,0,15,253,0,0,191,224,0,0,7,255,229,91,255,192,0,0,2,255,255,255,255,0,0,0,0,127,255,255,252,0,0,0,0,7,255,255,144,0,0,0,0,0,5,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,64,0,0,0,0,0,0,15,240,0,0,0,0,0,0,47,240,0,0,0,0,0,0,47,240,0,0,0,0,0,0,15,240,0,0,0,0,0,0,1,64,0,0,0,0, + // 0x1ef1 ự + 241,30,27,33,231,28,3,248,0,0,0,0,0,15,244,0,0,0,0,0,31,244,0,0,0,0,0,31,240,106,0,0,2,164,47,224,255,64,0,7,252,63,192,255,64,0,7,253,255,128,255,64,0,7,255,254,0,255,64,0,7,255,244,0,255,64,0,7,253,64,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,7,252,0,0,255,64,0,11,252,0,0,255,64,0,11,252,0,0,255,128,0,15,252,0,0,191,192,0,31,252,0,0,191,208,0,63,252,0,0,63,248,6,255,252,0,0,47,255,255,247,252,0,0,15,255,255,211,252,0,0,1,255,254,2,252,0,0,0,5,80,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,3,252,0,0,0,0,0,7,253,0,0,0,0,0,7,253,0,0,0,0,0,3,252,0,0,0,0,0,0,80,0,0,0,0, + // 0x1ef2 Ỳ + 242,30,23,38,228,23,0,0,0,10,168,0,0,0,0,11,253,0,0,0,0,2,255,0,0,0,0,0,191,192,0,0,0,0,47,208,0,0,0,0,7,244,0,0,0,0,1,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,0,6,168,127,192,0,0,15,248,63,240,0,0,31,240,31,244,0,0,63,224,15,252,0,0,127,192,7,253,0,0,255,128,2,255,0,1,255,0,0,255,64,3,253,0,0,191,192,11,252,0,0,63,208,15,244,0,0,47,240,47,240,0,0,15,244,63,208,0,0,7,252,191,128,0,0,3,254,255,0,0,0,1,255,254,0,0,0,0,255,252,0,0,0,0,127,248,0,0,0,0,63,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0, + // 0x1ef3 ỳ + 243,30,21,41,246,21,0,246,0,42,160,0,0,0,0,47,244,0,0,0,0,11,252,0,0,0,0,2,254,0,0,0,0,0,191,64,0,0,0,0,47,192,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,0,106,128,191,192,0,0,255,128,63,208,0,0,255,64,47,224,0,2,255,0,31,240,0,3,254,0,15,244,0,3,252,0,11,252,0,11,252,0,3,252,0,15,244,0,2,254,0,31,240,0,1,255,0,47,224,0,0,255,64,63,208,0,0,191,128,127,192,0,0,63,192,191,128,0,0,47,208,255,0,0,0,31,225,255,0,0,0,15,242,253,0,0,0,11,243,252,0,0,0,3,251,248,0,0,0,2,255,244,0,0,0,1,255,240,0,0,0,0,255,224,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,255,64,0,0,0,1,255,0,0,0,0,3,254,0,0,0,0,7,252,0,0,0,0,47,248,0,0,0,127,255,240,0,0,0,127,255,192,0,0,0,127,254,0,0,0,0,26,144,0,0,0,0, + // 0x1ef4 Ỵ + 244,30,23,37,222,23,0,248,106,64,0,0,6,168,127,192,0,0,15,248,63,240,0,0,31,240,31,244,0,0,63,224,15,252,0,0,127,192,7,253,0,0,255,128,2,255,0,1,255,0,0,255,64,3,253,0,0,191,192,11,252,0,0,63,208,15,244,0,0,47,240,47,240,0,0,15,244,63,208,0,0,7,252,191,128,0,0,3,254,255,0,0,0,1,255,254,0,0,0,0,255,252,0,0,0,0,127,248,0,0,0,0,63,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,31,224,0,0,0,0,63,240,0,0,0,0,63,240,0,0,0,0,31,224,0,0,0,0,1,0,0,0, + // 0x1ef5 ỵ + 245,30,21,32,192,21,0,246,106,64,0,0,106,128,191,192,0,0,255,128,63,208,0,0,255,64,47,224,0,2,255,0,31,240,0,3,254,0,15,244,0,3,252,0,11,252,0,11,252,0,3,252,0,15,244,0,2,254,0,31,240,0,1,255,0,47,224,0,0,255,64,63,208,0,0,191,128,127,192,0,0,63,192,191,128,0,0,47,208,255,0,0,0,31,225,255,0,0,0,15,242,253,0,0,0,11,243,252,0,0,0,3,251,248,0,0,0,2,255,244,0,0,0,1,255,240,0,0,0,0,255,224,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,255,64,0,0,0,1,255,1,64,0,0,3,254,11,240,0,0,7,252,15,248,0,0,47,248,15,248,0,127,255,240,11,240,0,127,255,192,1,64,0,127,254,0,0,0,0,26,144,0,0,0,0, + // 0x1ef6 Ỷ + 246,30,23,40,240,23,0,0,0,0,26,64,0,0,0,0,191,252,0,0,0,0,191,255,0,0,0,0,0,191,0,0,0,0,0,63,0,0,0,0,0,191,0,0,0,0,11,253,0,0,0,0,15,224,0,0,0,0,15,192,0,0,0,0,11,128,0,0,0,0,0,0,0,0,106,64,0,0,6,168,127,192,0,0,15,248,63,240,0,0,31,240,31,244,0,0,63,224,15,252,0,0,127,192,7,253,0,0,255,128,2,255,0,1,255,0,0,255,64,3,253,0,0,191,192,11,252,0,0,63,208,15,244,0,0,47,240,47,240,0,0,15,244,63,208,0,0,7,252,191,128,0,0,3,254,255,0,0,0,1,255,254,0,0,0,0,255,252,0,0,0,0,127,248,0,0,0,0,63,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0, + // 0x1ef7 ỷ + 247,30,21,43,2,21,0,246,0,2,255,128,0,0,0,2,255,240,0,0,0,2,171,252,0,0,0,0,1,252,0,0,0,0,1,252,0,0,0,0,7,248,0,0,0,0,63,224,0,0,0,0,63,0,0,0,0,0,62,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,106,64,0,0,106,128,191,192,0,0,255,128,63,208,0,0,255,64,47,224,0,2,255,0,31,240,0,3,254,0,15,244,0,3,252,0,11,252,0,11,252,0,3,252,0,15,244,0,2,254,0,31,240,0,1,255,0,47,224,0,0,255,64,63,208,0,0,191,128,127,192,0,0,63,192,191,128,0,0,47,208,255,0,0,0,31,225,255,0,0,0,15,242,253,0,0,0,11,243,252,0,0,0,3,251,248,0,0,0,2,255,244,0,0,0,1,255,240,0,0,0,0,255,224,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,255,64,0,0,0,1,255,0,0,0,0,3,254,0,0,0,0,7,252,0,0,0,0,47,248,0,0,0,127,255,240,0,0,0,127,255,192,0,0,0,127,254,0,0,0,0,26,144,0,0,0,0, + // 0x1ef8 Ỹ + 248,30,23,37,222,23,0,0,0,1,144,0,40,0,0,15,254,0,188,0,0,63,255,230,248,0,0,127,175,255,244,0,0,188,2,255,224,0,0,180,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,0,6,168,127,192,0,0,15,248,63,240,0,0,31,240,31,244,0,0,63,224,15,252,0,0,127,192,7,253,0,0,255,128,2,255,0,1,255,0,0,255,64,3,253,0,0,191,192,11,252,0,0,63,208,15,244,0,0,47,240,47,240,0,0,15,244,63,208,0,0,7,252,191,128,0,0,3,254,255,0,0,0,1,255,254,0,0,0,0,255,252,0,0,0,0,127,248,0,0,0,0,63,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0,0,0,31,240,0,0, + // 0x1ef9 ỹ + 249,30,21,40,240,21,0,246,0,6,64,0,160,0,0,127,248,2,240,0,0,255,255,155,224,0,2,254,255,255,192,0,3,240,15,255,64,0,3,208,1,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,64,0,0,106,128,191,192,0,0,255,128,63,208,0,0,255,64,47,224,0,2,255,0,31,240,0,3,254,0,15,244,0,3,252,0,11,252,0,11,252,0,3,252,0,15,244,0,2,254,0,31,240,0,1,255,0,47,224,0,0,255,64,63,208,0,0,191,128,127,192,0,0,63,192,191,128,0,0,47,208,255,0,0,0,31,225,255,0,0,0,15,242,253,0,0,0,11,243,252,0,0,0,3,251,248,0,0,0,2,255,244,0,0,0,1,255,240,0,0,0,0,255,224,0,0,0,0,191,192,0,0,0,0,191,192,0,0,0,0,255,64,0,0,0,1,255,0,0,0,0,3,254,0,0,0,0,7,252,0,0,0,0,47,248,0,0,0,127,255,240,0,0,0,127,255,192,0,0,0,127,254,0,0,0,0,26,144,0,0,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_10.cpp index 2572cc60c4..7f04f045f6 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_10.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont 16pt, capital 'A' heigth: 10px, width: 100%, range: 0x0020-0x00ff +// Unifont 16pt, capital 'A' height: 10px, width: 100%, range: 0x0020-0x00ff extern const uint8_t Unifont_10[3107] = { 129,10,32,0,255,0,14,254, // unifont_t // 0x0020 " " diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_ASCII_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_ASCII_10.cpp index 27f3dcf325..6c8d86ae2c 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_ASCII_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_ASCII_10.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont ASCII 16pt, capital 'A' heigth: 10px, width: 100%, range: 0x0020-0x007e +// Unifont ASCII 16pt, capital 'A' height: 10px, width: 100%, range: 0x0020-0x007e extern const uint8_t Unifont_ASCII_10[1440] = { 129,10,32,0,126,0,14,254, // unifont_t // 0x0020 " " diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Cyrillic_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Cyrillic_10.cpp index 1e112a1de1..f9128dc84b 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Cyrillic_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Cyrillic_10.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Cyrillic 16pt, capital 'A' heigth: 10px, width: 100%, range: 0x0401-0x0491, glyphs: 74 +// Unifont Cyrillic 16pt, capital 'A' height: 10px, width: 100%, range: 0x0401-0x0491, glyphs: 74 extern const uint8_t Unifont_Cyrillic_10[1243] = { 129,10,1,4,145,4,14,254, // unifont_t // 0x0401 Ё diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Greek_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Greek_10.cpp index 71375485d2..06552be372 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Greek_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Greek_10.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Greek 16pt, capital 'A' heigth: 10px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 +// Unifont Greek 16pt, capital 'A' height: 10px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 extern const uint8_t Unifont_Greek_10[1061] = { 129,10,134,3,206,3,14,254, // unifont_t // 0x0386 Ά diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Katakana_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Katakana_10.cpp index 1e0d15629d..67f81299c7 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Katakana_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Katakana_10.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Katakana 16pt, capital 'A' heigth: 10px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 +// Unifont Katakana 16pt, capital 'A' height: 10px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 extern const uint8_t Unifont_Katakana_10[3067] = { 161,10,160,48,104,136,14,254, // unifont_t // 0x30a0 ゠ diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Korean_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Korean_10.cpp index d1bf3ba514..0b226b2034 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Korean_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Korean_10.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Korean 16pt, capital 'A' heigth: 10px, width: 100%, range: 0xac70-0xd788, glyphs: 110 +// Unifont Korean 16pt, capital 'A' height: 10px, width: 100%, range: 0xac70-0xd788, glyphs: 110 extern const uint8_t Unifont_Korean_10[3786] = { 161,10,112,172,136,215,14,254, // unifont_t // 0xac70 거 diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Latin_Extended_A_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Latin_Extended_A_10.cpp index 8d381d276a..6283914108 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Latin_Extended_A_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Latin_Extended_A_10.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Latin Extended-A 16pt, capital 'A' heigth: 10px, width: 100%, range: 0x0100-0x017f +// Unifont Latin Extended-A 16pt, capital 'A' height: 10px, width: 100%, range: 0x0100-0x017f extern const uint8_t Unifont_Latin_Extended_A_10[2372] = { 129,10,0,1,127,1,14,254, // unifont_t // 0x0100 Ā diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Simplified_Chinese_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Simplified_Chinese_10.cpp index 3ce396d098..7b0ef1630a 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Simplified_Chinese_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Simplified_Chinese_10.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Simplified Chinese 16pt, capital 'A' heigth: 10px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 +// Unifont Simplified Chinese 16pt, capital 'A' height: 10px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 extern const uint8_t Unifont_Simplified_Chinese_10[14547] = { 161,10,28,32,26,255,14,254, // unifont_t // 0x201c “ diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Symbols_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Symbols_10.cpp index 8776bfba6c..b6569f644a 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Symbols_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Symbols_10.cpp @@ -20,21 +20,18 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Symbols 16pt, capital 'A' heigth: 10px, width: 100% +// Unifont Symbols 16pt, capital 'A' height: 10px, width: 100% extern const uint8_t Unifont_Symbols_10[44] = { 129,10,8,0,10,0,14,254, // unifont_t // 0x08 - LCD_STR_THERMOMETER a.k.a 0x1f321 🌡 5,12,12,16,5,0,32,80,80,80,80,112,112,112,248,248,248,112, // 0x09 - LCD_STR_DEGREE a.k.a 0x00b0 ° 4,4,4,8,2,6,96,144,144,96, - // 0x0a - replacement for 0x2026 used in Greek languange files … + // 0x0a - replacement for 0x2026 used in Greek language files … 7,2,2,8,1,0,146,146, }; diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Traditional_Chinese_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Traditional_Chinese_10.cpp index a9b1406441..14521a4196 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Traditional_Chinese_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Traditional_Chinese_10.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Traditional Chinese 16pt, capital 'A' heigth: 10px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 +// Unifont Traditional Chinese 16pt, capital 'A' height: 10px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 extern const uint8_t Unifont_Traditional_Chinese_10[12033] = { 161,10,191,34,26,255,14,254, // unifont_t // 0x22bf ⊿ diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Vietnamese_10.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Vietnamese_10.cpp index d61d1be71b..dfc0bfd1b7 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Vietnamese_10.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/10px/Unifont_Vietnamese_10.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Vietnamese 16pt, capital 'A' heigth: 10px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 +// Unifont Vietnamese 16pt, capital 'A' height: 10px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 extern const uint8_t Unifont_Vietnamese_10[2220] = { 161,10,2,1,249,30,14,254, // unifont_t // 0x0102 Ă diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_20.cpp index 023cc4f978..92a32bf2b1 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_20.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont 32pt, capital 'A' heigth: 20px, width: 100%, range: 0x0020-0x00ff +// Unifont 32pt, capital 'A' height: 20px, width: 100%, range: 0x0020-0x00ff extern const uint8_t Unifont_20[8545] = { 129,20,32,0,255,0,28,252, // unifont_t // 0x0020 " " diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_ASCII_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_ASCII_20.cpp index e28b806b9f..47a072cfc0 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_ASCII_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_ASCII_20.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont ASCII 32pt, capital 'A' heigth: 20px, width: 100%, range: 0x0020-0x007e +// Unifont ASCII 32pt, capital 'A' height: 20px, width: 100%, range: 0x0020-0x007e extern const uint8_t Unifont_ASCII_20[3770] = { 129,20,32,0,126,0,28,252, // unifont_t // 0x0020 " " diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Cyrillic_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Cyrillic_20.cpp index 8e82a228f1..67dd5da875 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Cyrillic_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Cyrillic_20.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Cyrillic 32pt, capital 'A' heigth: 20px, width: 100%, range: 0x0401-0x0491, glyphs: 74 +// Unifont Cyrillic 32pt, capital 'A' height: 20px, width: 100%, range: 0x0401-0x0491, glyphs: 74 extern const uint8_t Unifont_Cyrillic_20[3403] = { 129,20,1,4,145,4,28,252, // unifont_t // 0x0401 Ё diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Greek_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Greek_20.cpp index d5c175977a..4116f99c4a 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Greek_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Greek_20.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Greek 32pt, capital 'A' heigth: 20px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 +// Unifont Greek 32pt, capital 'A' height: 20px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 extern const uint8_t Unifont_Greek_20[3014] = { 129,20,134,3,206,3,28,252, // unifont_t // 0x0386 Ά diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Katakana_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Katakana_20.cpp index 3b21375016..22dafdc2dd 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Katakana_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Katakana_20.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Katakana 32pt, capital 'A' heigth: 20px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 +// Unifont Katakana 32pt, capital 'A' height: 20px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 extern const uint8_t Unifont_Katakana_20[8142] = { 161,20,160,48,104,136,28,252, // unifont_t // 0x30a0 ゠ diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Korean_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Korean_20.cpp index ac8dee91ef..ada872e9f7 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Korean_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Korean_20.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Korean 32pt, capital 'A' heigth: 20px, width: 100%, range: 0xac70-0xd788, glyphs: 110 +// Unifont Korean 32pt, capital 'A' height: 20px, width: 100%, range: 0xac70-0xd788, glyphs: 110 extern const uint8_t Unifont_Korean_20[11304] = { 161,20,112,172,136,215,28,252, // unifont_t // 0xac70 거 diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Latin_Extended_A_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Latin_Extended_A_20.cpp index 9a22047c9a..06d5132fc2 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Latin_Extended_A_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Latin_Extended_A_20.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Latin Extended-A 32pt, capital 'A' heigth: 20px, width: 100%, range: 0x0100-0x017f +// Unifont Latin Extended-A 32pt, capital 'A' height: 20px, width: 100%, range: 0x0100-0x017f extern const uint8_t Unifont_Latin_Extended_A_20[7160] = { 129,20,0,1,127,1,28,252, // unifont_t // 0x0100 Ā diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Simplified_Chinese_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Simplified_Chinese_20.cpp index 85e0d205d7..7108e485f4 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Simplified_Chinese_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Simplified_Chinese_20.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Simplified Chinese 32pt, capital 'A' heigth: 20px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 +// Unifont Simplified Chinese 32pt, capital 'A' height: 20px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 extern const uint8_t Unifont_Simplified_Chinese_20[48888] = { 161,20,28,32,26,255,28,252, // unifont_t // 0x201c “ diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Symbols_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Symbols_20.cpp index a0d269e02f..76c763b746 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Symbols_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Symbols_20.cpp @@ -20,21 +20,18 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Symbols 32pt, capital 'A' heigth: 20px, width: 100% +// Unifont Symbols 32pt, capital 'A' height: 20px, width: 100% extern const uint8_t Unifont_Symbols_20[90] = { 129,20,8,0,10,0,28,252, // unifont_t // 0x08 - LCD_STR_THERMOMETER a.k.a 0x1f321 🌡 10,24,48,32,10,0,12,0,12,0,51,0,51,0,51,0,51,0,51,0,51,0,51,0,51,0,63,0,63,0,63,0,63,0,63,0,63,0,255,192,255,192,255,192,255,192,255,192,255,192,63,0,63,0, // 0x09 - LCD_STR_DEGREE a.k.a 0x00b0 ° 8,8,8,16,4,12,60,60,195,195,195,195,60,60, - // 0x0a - replacement for 0x2026 used in Greek languange files … + // 0x0a - replacement for 0x2026 used in Greek language files … 14,4,8,16,2,0,195,12,195,12,195,12,195,12, }; diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Traditional_Chinese_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Traditional_Chinese_20.cpp index c541e1401d..567049f4ee 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Traditional_Chinese_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Traditional_Chinese_20.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Traditional Chinese 32pt, capital 'A' heigth: 20px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 +// Unifont Traditional Chinese 32pt, capital 'A' height: 20px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 extern const uint8_t Unifont_Traditional_Chinese_20[40418] = { 161,20,191,34,26,255,28,252, // unifont_t // 0x22bf ⊿ diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Vietnamese_20.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Vietnamese_20.cpp index 8c9b29153c..e1aad183d2 100644 --- a/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Vietnamese_20.cpp +++ b/Marlin/src/lcd/tft/fontdata/Unifont/20px/Unifont_Vietnamese_20.cpp @@ -20,14 +20,11 @@ * */ -#include "../../../../../inc/MarlinConfigPre.h" +#include "../../fontdata.h" -#define UNIFONT 123 #if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT -#include - -// Unifont Vietnamese 32pt, capital 'A' heigth: 20px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 +// Unifont Vietnamese 32pt, capital 'A' height: 20px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 extern const uint8_t Unifont_Vietnamese_20[6262] = { 161,20,2,1,249,30,28,252, // unifont_t // 0x0102 Ă diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_30.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_30.cpp new file mode 100644 index 0000000000..8db077638d --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_30.cpp @@ -0,0 +1,416 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// Unifont 48pt, capital 'A' height: 30px, width: 100%, range: 0x0020-0x00ff +extern const uint8_t Unifont_30[16801] = { + 129,30,32,0,255,0,42,250, // unifont_t + // 0x0020 " " + 0,0,0,24,0,0, + // 0x0021 ! + 3,30,30,24,12,0,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,0,0,0,224,224,224,224,224,224, + // 0x0022 " + 15,12,24,24,6,24,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + // 0x0023 # + 18,30,90,24,3,0,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,255,255,192,255,255,192,255,255,192,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,255,255,192,255,255,192,255,255,192,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0, + // 0x0024 $ + 21,30,90,24,3,0,0,112,0,0,112,0,0,112,0,31,255,192,31,255,192,31,255,192,224,112,56,224,112,56,224,112,56,224,112,0,224,112,0,224,112,0,31,240,0,31,240,0,31,240,0,0,127,192,0,127,192,0,127,192,0,112,56,0,112,56,0,112,56,224,112,56,224,112,56,224,112,56,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0, + // 0x0025 % + 21,30,90,24,3,0,31,128,56,31,128,56,31,128,56,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,31,142,0,31,142,0,31,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,143,192,3,143,192,3,143,192,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,224,15,192,224,15,192,224,15,192, + // 0x0026 & + 21,30,90,24,3,0,3,254,0,3,254,0,3,254,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,3,240,0,3,240,0,3,240,0,28,112,56,28,112,56,28,112,56,224,14,56,224,14,56,224,14,56,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,240,56,31,240,56,31,240,56, + // 0x0027 ' + 3,12,12,24,12,24,224,224,224,224,224,224,224,224,224,224,224,224, + // 0x0028 ( + 9,36,72,24,9,253,3,128,3,128,3,128,28,0,28,0,28,0,28,0,28,0,28,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,28,0,28,0,28,0,28,0,28,0,28,0,3,128,3,128,3,128, + // 0x0029 ) + 9,36,72,24,6,253,224,0,224,0,224,0,28,0,28,0,28,0,28,0,28,0,28,0,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,28,0,28,0,28,0,28,0,28,0,28,0,224,0,224,0,224,0, + // 0x002a * + 21,21,63,24,3,3,0,112,0,0,112,0,0,112,0,224,112,56,224,112,56,224,112,56,28,113,192,28,113,192,28,113,192,3,254,0,3,254,0,3,254,0,28,113,192,28,113,192,28,113,192,224,112,56,224,112,56,224,112,56,0,112,0,0,112,0,0,112,0, + // 0x002b + + 21,21,63,24,3,3,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,248,255,255,248,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x002c , + 6,12,12,24,9,250,252,252,252,28,28,28,28,28,28,224,224,224, + // 0x002d - + 12,3,6,24,6,12,255,240,255,240,255,240, + // 0x002e . + 6,6,6,24,9,0,252,252,252,252,252,252, + // 0x002f / + 18,30,90,24,3,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0030 0 + 18,30,90,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,224,113,192,224,113,192,224,113,192,227,129,192,227,129,192,227,129,192,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0, + // 0x0031 1 + 15,30,60,24,6,0,3,128,3,128,3,128,31,128,31,128,31,128,227,128,227,128,227,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x0032 2 + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,0,126,0,0,126,0,0,126,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x0033 3 + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,3,254,0,3,254,0,3,254,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0034 4 + 18,30,90,24,3,0,0,14,0,0,14,0,0,14,0,0,126,0,0,126,0,0,126,0,3,142,0,3,142,0,3,142,0,28,14,0,28,14,0,28,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,255,255,192,255,255,192,255,255,192,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + // 0x0035 5 + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0036 6 + 18,30,90,24,3,0,3,254,0,3,254,0,3,254,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0037 7 + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0038 8 + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0039 9 + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,255,192,31,255,192,31,255,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,31,240,0,31,240,0,31,240,0, + // 0x003a : + 6,21,21,24,9,3,252,252,252,252,252,252,0,0,0,0,0,0,0,0,0,252,252,252,252,252,252, + // 0x003b ; + 6,27,27,24,9,253,252,252,252,252,252,252,0,0,0,0,0,0,0,0,0,252,252,252,28,28,28,28,28,28,224,224,224, + // 0x003c < + 15,27,54,24,6,0,0,14,0,14,0,14,0,112,0,112,0,112,3,128,3,128,3,128,28,0,28,0,28,0,224,0,224,0,224,0,28,0,28,0,28,0,3,128,3,128,3,128,0,112,0,112,0,112,0,14,0,14,0,14, + // 0x003d = + 18,15,45,24,3,6,255,255,192,255,255,192,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192, + // 0x003e > + 15,27,54,24,3,0,224,0,224,0,224,0,28,0,28,0,28,0,3,128,3,128,3,128,0,112,0,112,0,112,0,14,0,14,0,14,0,112,0,112,0,112,3,128,3,128,3,128,28,0,28,0,28,0,224,0,224,0,224,0, + // 0x003f ? + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,0,0,0,0,0,0,0,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0040 @ + 18,30,90,24,3,0,3,254,0,3,254,0,3,254,0,28,1,192,28,1,192,28,1,192,224,113,192,224,113,192,224,113,192,227,143,192,227,143,192,227,143,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,224,127,192,224,127,192,224,127,192,28,0,0,28,0,0,28,0,0,3,255,192,3,255,192,3,255,192, + // 0x0041 A + 18,30,90,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0042 B + 18,30,90,24,3,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0, + // 0x0043 C + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0044 D + 18,30,90,24,3,0,255,240,0,255,240,0,255,240,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,14,0,224,14,0,224,14,0,255,240,0,255,240,0,255,240,0, + // 0x0045 E + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x0046 F + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0047 G + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,127,192,224,127,192,224,127,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0048 H + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0049 I + 15,30,60,24,6,0,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x004a J + 21,30,90,24,3,0,3,255,248,3,255,248,3,255,248,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x004b K + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,14,0,224,14,0,224,14,0,224,112,0,224,112,0,224,112,0,227,128,0,227,128,0,227,128,0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,0,227,128,0,227,128,0,227,128,0,224,112,0,224,112,0,224,112,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192, + // 0x004c L + 18,30,90,24,3,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x004d M + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x004e N + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,1,192,224,1,192,224,1,192, + // 0x004f O + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0050 P + 18,30,90,24,3,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0051 Q + 21,33,99,24,3,253,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,227,241,192,227,241,192,227,241,192,252,15,192,252,15,192,252,15,192,31,254,0,31,254,0,31,254,0,0,1,248,0,1,248,0,1,248, + // 0x0052 R + 18,30,90,24,3,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0,224,112,0,224,112,0,224,112,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0053 S + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0054 T + 21,30,90,24,3,0,255,255,248,255,255,248,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0055 U + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0056 V + 21,30,90,24,3,0,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0057 W + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0058 X + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0059 Y + 21,30,90,24,3,0,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x005a Z + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x005b [ + 9,36,72,24,12,253,255,128,255,128,255,128,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255,128,255,128,255,128, + // 0x005c "\" + 18,30,90,24,3,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,28,0,0,28,0,0,28,0,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,14,0,0,14,0,0,14,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x005d ] + 9,36,72,24,3,253,255,128,255,128,255,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,128,255,128,255,128, + // 0x005e ^ + 18,9,27,24,3,27,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192, + // 0x005f _ + 21,3,9,24,3,253,255,255,248,255,255,248,255,255,248, + // 0x0060 ` + 9,9,18,24,6,30,224,0,224,0,224,0,28,0,28,0,28,0,3,128,3,128,3,128, + // 0x0061 a + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0062 b + 18,33,99,24,3,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,252,1,192,252,1,192,252,1,192,227,254,0,227,254,0,227,254,0, + // 0x0063 c + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0064 d + 18,33,99,24,3,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,31,241,192,31,241,192,31,241,192,224,15,192,224,15,192,224,15,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0065 e + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0066 f + 15,33,66,24,3,0,0,126,0,126,0,126,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + // 0x0067 g + 18,33,99,24,3,250,0,1,192,0,1,192,0,1,192,31,241,192,31,241,192,31,241,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0,28,0,0,28,0,0,28,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0068 h + 18,33,99,24,3,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0069 i + 15,33,66,24,6,0,3,128,3,128,3,128,3,128,3,128,3,128,0,0,0,0,0,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x006a j + 15,39,78,24,3,250,0,14,0,14,0,14,0,14,0,14,0,14,0,0,0,0,0,0,0,126,0,126,0,126,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,224,112,224,112,224,112,31,128,31,128,31,128, + // 0x006b k + 18,33,99,24,3,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,14,0,224,14,0,224,14,0,224,112,0,224,112,0,224,112,0,227,128,0,227,128,0,227,128,0,252,0,0,252,0,0,252,0,0,227,128,0,227,128,0,227,128,0,224,112,0,224,112,0,224,112,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192, + // 0x006c l + 15,33,66,24,6,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x006d m + 21,24,72,24,3,0,255,143,192,255,143,192,255,143,192,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56, + // 0x006e n + 18,24,72,24,3,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x006f o + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0070 p + 18,30,90,24,3,250,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,252,1,192,252,1,192,252,1,192,227,254,0,227,254,0,227,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0071 q + 18,30,90,24,3,250,31,241,192,31,241,192,31,241,192,224,15,192,224,15,192,224,15,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x0072 r + 18,24,72,24,3,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0073 s + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0074 t + 15,30,60,24,3,0,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,0,126,0,126,0,126, + // 0x0075 u + 18,24,72,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0076 v + 18,24,72,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0, + // 0x0077 w + 21,24,72,24,3,0,224,0,56,224,0,56,224,0,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,31,143,192,31,143,192,31,143,192, + // 0x0078 x + 18,24,72,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0079 y + 18,30,90,24,3,250,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,15,192,28,15,192,28,15,192,3,241,192,3,241,192,3,241,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,31,254,0,31,254,0,31,254,0, + // 0x007a z + 18,24,72,24,3,0,255,255,192,255,255,192,255,255,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x007b { + 12,39,78,24,6,250,3,240,3,240,3,240,28,0,28,0,28,0,28,0,28,0,28,0,3,128,3,128,3,128,3,128,3,128,3,128,28,0,28,0,28,0,224,0,224,0,224,0,28,0,28,0,28,0,3,128,3,128,3,128,3,128,3,128,3,128,28,0,28,0,28,0,28,0,28,0,28,0,3,240,3,240,3,240, + // 0x007c | + 3,42,42,24,12,250,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + // 0x007d } + 12,39,78,24,6,250,252,0,252,0,252,0,3,128,3,128,3,128,3,128,3,128,3,128,28,0,28,0,28,0,28,0,28,0,28,0,3,128,3,128,3,128,0,112,0,112,0,112,3,128,3,128,3,128,28,0,28,0,28,0,28,0,28,0,28,0,3,128,3,128,3,128,3,128,3,128,3,128,252,0,252,0,252,0, + // 0x007e ~ + 21,9,27,24,3,24,31,128,56,31,128,56,31,128,56,224,112,56,224,112,56,224,112,56,224,15,192,224,15,192,224,15,192, + // 0x007f - 0x009a Control Characters + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + // 0x00a0 "�" + 0,0,0,24,0,0, + // 0x00a1 ¡ + 3,30,30,24,12,0,224,224,224,224,224,224,0,0,0,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + // 0x00a2 ¢ + 21,30,90,24,3,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,255,192,31,255,192,31,255,192,224,112,56,224,112,56,224,112,56,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,56,224,112,56,224,112,56,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x00a3 £ + 21,30,90,24,3,0,0,127,192,0,127,192,0,127,192,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,255,254,0,255,254,0,255,254,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,31,255,192,31,255,192,31,255,192,252,0,56,252,0,56,252,0,56, + // 0x00a4 ¤ + 18,24,72,24,3,3,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192, + // 0x00a5 ¥ + 21,30,90,24,3,0,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,255,255,248,255,255,248,255,255,248,0,112,0,0,112,0,0,112,0,255,255,248,255,255,248,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x00a6 ¦ + 3,30,30,24,12,0,224,224,224,224,224,224,224,224,224,224,224,224,0,0,0,0,0,0,224,224,224,224,224,224,224,224,224,224,224,224, + // 0x00a7 § + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00a8 ¨ + 12,6,12,24,6,36,224,112,224,112,224,112,224,112,224,112,224,112, + // 0x00a9 © + 24,30,90,24,0,0,3,255,192,3,255,192,3,255,192,28,0,56,28,0,56,28,0,56,224,126,7,224,126,7,224,126,7,227,129,199,227,129,199,227,129,199,227,128,7,227,128,7,227,128,7,227,128,7,227,128,7,227,128,7,227,129,199,227,129,199,227,129,199,224,126,7,224,126,7,224,126,7,28,0,56,28,0,56,28,0,56,3,255,192,3,255,192,3,255,192, + // 0x00aa ª + 15,21,42,24,6,15,31,240,31,240,31,240,0,14,0,14,0,14,31,254,31,254,31,254,224,14,224,14,224,14,31,254,31,254,31,254,0,0,0,0,0,0,255,254,255,254,255,254, + // 0x00ab « + 18,27,81,24,3,0,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,112,0,224,112,0,224,112,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192, + // 0x00ac ¬ + 18,12,36,24,3,0,255,255,192,255,255,192,255,255,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x00ad ­ + 48,48,32,48,0,250,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,3,254,56,31,128,63,3,254,56,31,128,63,3,254,56,31,128,63,252,0,56,28,113,192,252,0,56,28,113,192,252,0,56,28,113,192,3,240,63,252,14,7,3,240,63,252,14,7,3,240,63,252,14,7,224,14,56,28,14,0,224,14,56,28,14,0,224,14,56,28,14,0,31,240,56,28,14,7,31,240,56,28,14,7,31,240,56,28,14,7,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,0,0,63,252,0,7,0,0,63,252,0,7,0,0,63,252,0,7,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,28,113,199,28,113,199,28,113,199,28,113,199,28,113,199,28,113,199, + // 0x00ae ® + 24,30,90,24,0,0,3,255,192,3,255,192,3,255,192,28,0,56,28,0,56,28,0,56,227,254,7,227,254,7,227,254,7,227,129,199,227,129,199,227,129,199,227,129,199,227,129,199,227,129,199,227,254,7,227,254,7,227,254,7,227,142,7,227,142,7,227,142,7,227,129,199,227,129,199,227,129,199,28,0,56,28,0,56,28,0,56,3,255,192,3,255,192,3,255,192, + // 0x00af ¯ + 18,3,9,24,3,33,255,255,192,255,255,192,255,255,192, + // 0x00b0 ° + 12,12,24,24,6,18,31,128,31,128,31,128,224,112,224,112,224,112,224,112,224,112,224,112,31,128,31,128,31,128, + // 0x00b1 ± + 21,27,81,24,3,3,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,248,255,255,248,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,0,0,0,0,0,0,0,0,255,255,248,255,255,248,255,255,248, + // 0x00b2 ² + 15,21,42,24,3,12,31,240,31,240,31,240,224,14,224,14,224,14,0,14,0,14,0,14,3,240,3,240,3,240,28,0,28,0,28,0,224,0,224,0,224,0,255,254,255,254,255,254, + // 0x00b3 ³ + 15,21,42,24,3,12,31,240,31,240,31,240,224,14,224,14,224,14,0,14,0,14,0,14,31,240,31,240,31,240,0,14,0,14,0,14,224,14,224,14,224,14,31,240,31,240,31,240, + // 0x00b4 ´ + 9,9,18,24,9,30,3,128,3,128,3,128,28,0,28,0,28,0,224,0,224,0,224,0, + // 0x00b5 µ + 24,30,90,24,0,250,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,31,129,248,31,129,248,31,129,248,28,126,7,28,126,7,28,126,7,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0, + // 0x00b6 ¶ + 21,33,99,24,3,253,31,255,248,31,255,248,31,255,248,255,241,192,255,241,192,255,241,192,255,241,192,255,241,192,255,241,192,255,241,192,255,241,192,255,241,192,31,241,192,31,241,192,31,241,192,0,113,192,0,113,192,0,113,192,0,113,192,0,113,192,0,113,192,0,113,192,0,113,192,0,113,192,0,113,192,0,113,192,0,113,192,0,113,192,0,113,192,0,113,192,0,113,192,0,113,192,0,113,192, + // 0x00b7 · + 6,6,6,24,9,12,252,252,252,252,252,252, + // 0x00b8 ¸ + 9,6,12,24,6,250,3,128,3,128,3,128,252,0,252,0,252,0, + // 0x00b9 ¹ + 15,21,42,24,3,12,3,128,3,128,3,128,31,128,31,128,31,128,227,128,227,128,227,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x00ba º + 15,21,42,24,6,15,31,240,31,240,31,240,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,31,240,31,240,31,240,0,0,0,0,0,0,255,254,255,254,255,254, + // 0x00bb » + 18,27,81,24,3,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,3,129,192,3,129,192,3,129,192,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0, + // 0x00bc ¼ + 18,30,90,24,3,0,28,1,192,28,1,192,28,1,192,252,1,192,252,1,192,252,1,192,28,14,0,28,14,0,28,14,0,28,112,0,28,112,0,28,112,0,28,112,0,28,112,0,28,112,0,3,129,192,3,129,192,3,129,192,3,143,192,3,143,192,3,143,192,28,113,192,28,113,192,28,113,192,224,127,192,224,127,192,224,127,192,224,1,192,224,1,192,224,1,192, + // 0x00bd ½ + 18,30,90,24,3,0,28,1,192,28,1,192,28,1,192,252,1,192,252,1,192,252,1,192,28,14,0,28,14,0,28,14,0,28,112,0,28,112,0,28,112,0,28,112,0,28,112,0,28,112,0,3,142,0,3,142,0,3,142,0,3,241,192,3,241,192,3,241,192,28,1,192,28,1,192,28,1,192,224,14,0,224,14,0,224,14,0,224,127,192,224,127,192,224,127,192, + // 0x00be ¾ + 18,30,90,24,3,0,252,1,192,252,1,192,252,1,192,3,129,192,3,129,192,3,129,192,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,252,112,0,252,112,0,252,112,0,3,129,192,3,129,192,3,129,192,3,143,192,3,143,192,3,143,192,28,113,192,28,113,192,28,113,192,224,127,192,224,127,192,224,127,192,224,1,192,224,1,192,224,1,192, + // 0x00bf ¿ + 18,30,90,24,3,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00c0 À + 18,42,126,24,3,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x00c1 Á + 18,42,126,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x00c2  + 18,42,126,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x00c3 à + 18,42,126,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x00c4 Ä + 18,42,126,24,3,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x00c5 Å + 18,42,126,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x00c6 Æ + 21,30,90,24,3,0,3,255,248,3,255,248,3,255,248,28,112,0,28,112,0,28,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,255,255,248,255,255,248,255,255,248,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,127,248,224,127,248,224,127,248, + // 0x00c7 Ç + 18,36,108,24,3,250,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,112,0,0,112,0,0,112,0,31,128,0,31,128,0,31,128,0, + // 0x00c8 È + 18,42,126,24,3,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x00c9 É + 18,42,126,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x00ca Ê + 18,42,126,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x00cb Ë + 18,42,126,24,3,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x00cc Ì + 15,42,84,24,6,0,31,128,31,128,31,128,0,126,0,126,0,126,0,0,0,0,0,0,0,0,0,0,0,0,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x00cd Í + 15,42,84,24,6,0,3,240,3,240,3,240,252,0,252,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x00ce Î + 15,42,84,24,6,0,31,128,31,128,31,128,224,112,224,112,224,112,0,0,0,0,0,0,0,0,0,0,0,0,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x00cf Ï + 15,42,84,24,6,0,224,112,224,112,224,112,224,112,224,112,224,112,0,0,0,0,0,0,0,0,0,0,0,0,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x00d0 Ð + 21,30,90,24,0,0,31,254,0,31,254,0,31,254,0,28,1,192,28,1,192,28,1,192,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,255,240,56,255,240,56,255,240,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,1,192,28,1,192,28,1,192,31,254,0,31,254,0,31,254,0, + // 0x00d1 Ñ + 18,42,126,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,1,192,224,1,192,224,1,192, + // 0x00d2 Ò + 18,42,126,24,3,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00d3 Ó + 18,42,126,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00d4 Ô + 18,42,126,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00d5 Õ + 18,42,126,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00d6 Ö + 18,42,126,24,3,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00d7 × + 18,15,45,24,3,6,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192, + // 0x00d8 Ø + 18,36,108,24,3,253,0,1,192,0,1,192,0,1,192,31,241,192,31,241,192,31,241,192,224,14,0,224,14,0,224,14,0,224,15,192,224,15,192,224,15,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,252,1,192,252,1,192,252,1,192,28,1,192,28,1,192,28,1,192,227,254,0,227,254,0,227,254,0,224,0,0,224,0,0,224,0,0, + // 0x00d9 Ù + 18,42,126,24,3,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00da Ú + 18,42,126,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00db Û + 18,42,126,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00dc Ü + 18,42,126,24,3,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00dd Ý + 21,42,126,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x00de Þ + 18,33,99,24,3,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,240,0,255,240,0,255,240,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,14,0,224,14,0,224,14,0,255,240,0,255,240,0,255,240,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x00df ß + 18,30,90,24,3,0,31,240,0,31,240,0,31,240,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,112,0,224,112,0,224,112,0,227,240,0,227,240,0,227,240,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,227,129,192,227,129,192,227,129,192,224,126,0,224,126,0,224,126,0, + // 0x00e0 à + 18,36,108,24,3,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x00e1 á + 18,36,108,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x00e2 â + 18,36,108,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x00e3 ã + 18,36,108,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x00e4 ä + 18,36,108,24,3,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x00e5 å + 18,39,117,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x00e6 æ + 21,24,72,24,3,0,31,255,192,31,255,192,31,255,192,224,112,56,224,112,56,224,112,56,0,112,56,0,112,56,0,112,56,31,255,248,31,255,248,31,255,248,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,56,224,112,56,224,112,56,31,255,192,31,255,192,31,255,192, + // 0x00e7 ç + 18,30,90,24,3,250,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,112,0,0,112,0,0,112,0,31,128,0,31,128,0,31,128,0, + // 0x00e8 è + 18,36,108,24,3,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00e9 é + 18,36,108,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00ea ê + 18,36,108,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00eb ë + 18,36,108,24,3,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00ec ì + 15,36,72,24,6,0,252,0,252,0,252,0,3,240,3,240,3,240,0,0,0,0,0,0,0,0,0,0,0,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x00ed í + 15,36,72,24,6,0,3,240,3,240,3,240,252,0,252,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x00ee î + 15,36,72,24,6,0,31,128,31,128,31,128,224,112,224,112,224,112,0,0,0,0,0,0,0,0,0,0,0,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x00ef ï + 15,36,72,24,6,0,224,112,224,112,224,112,224,112,224,112,224,112,0,0,0,0,0,0,0,0,0,0,0,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x00f0 ð + 18,36,108,24,3,0,31,129,192,31,129,192,31,129,192,0,126,0,0,126,0,0,126,0,3,142,0,3,142,0,3,142,0,28,1,192,28,1,192,28,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00f1 ñ + 18,36,108,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x00f2 ò + 18,36,108,24,3,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00f3 ó + 18,36,108,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00f4 ô + 18,36,108,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00f5 õ + 18,36,108,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00f6 ö + 18,36,108,24,3,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x00f7 ÷ + 18,21,63,24,3,3,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,240,0,3,240,0,3,240,0, + // 0x00f8 ø + 18,30,90,24,3,253,0,1,192,0,1,192,0,1,192,31,254,0,31,254,0,31,254,0,224,15,192,224,15,192,224,15,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,252,1,192,252,1,192,252,1,192,31,254,0,31,254,0,31,254,0,224,0,0,224,0,0,224,0,0, + // 0x00f9 ù + 18,36,108,24,3,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x00fa ú + 18,36,108,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x00fb û + 18,36,108,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x00fc ü + 18,36,108,24,3,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x00fd ý + 18,42,126,24,3,250,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,15,192,28,15,192,28,15,192,3,241,192,3,241,192,3,241,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,31,254,0,31,254,0,31,254,0, + // 0x00fe þ + 18,39,117,24,3,250,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,252,1,192,252,1,192,252,1,192,227,254,0,227,254,0,227,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x00ff ÿ + 18,42,126,24,3,250,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,15,192,28,15,192,28,15,192,3,241,192,3,241,192,3,241,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,31,254,0,31,254,0,31,254,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_ASCII_30.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_ASCII_30.cpp new file mode 100644 index 0000000000..50744e283c --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_ASCII_30.cpp @@ -0,0 +1,222 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// Unifont ASCII 48pt, capital 'A' height: 30px, width: 100%, range: 0x0020-0x007e +extern const uint8_t Unifont_ASCII_30[7508] = { + 129,30,32,0,126,0,42,250, // unifont_t + // 0x0020 " " + 0,0,0,24,0,0, + // 0x0021 ! + 3,30,30,24,12,0,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,0,0,0,224,224,224,224,224,224, + // 0x0022 " + 15,12,24,24,6,24,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + // 0x0023 # + 18,30,90,24,3,0,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,255,255,192,255,255,192,255,255,192,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,255,255,192,255,255,192,255,255,192,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0, + // 0x0024 $ + 21,30,90,24,3,0,0,112,0,0,112,0,0,112,0,31,255,192,31,255,192,31,255,192,224,112,56,224,112,56,224,112,56,224,112,0,224,112,0,224,112,0,31,240,0,31,240,0,31,240,0,0,127,192,0,127,192,0,127,192,0,112,56,0,112,56,0,112,56,224,112,56,224,112,56,224,112,56,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0, + // 0x0025 % + 21,30,90,24,3,0,31,128,56,31,128,56,31,128,56,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,31,142,0,31,142,0,31,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,143,192,3,143,192,3,143,192,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,224,15,192,224,15,192,224,15,192, + // 0x0026 & + 21,30,90,24,3,0,3,254,0,3,254,0,3,254,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,3,240,0,3,240,0,3,240,0,28,112,56,28,112,56,28,112,56,224,14,56,224,14,56,224,14,56,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,240,56,31,240,56,31,240,56, + // 0x0027 ' + 3,12,12,24,12,24,224,224,224,224,224,224,224,224,224,224,224,224, + // 0x0028 ( + 9,36,72,24,9,253,3,128,3,128,3,128,28,0,28,0,28,0,28,0,28,0,28,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,28,0,28,0,28,0,28,0,28,0,28,0,3,128,3,128,3,128, + // 0x0029 ) + 9,36,72,24,6,253,224,0,224,0,224,0,28,0,28,0,28,0,28,0,28,0,28,0,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,28,0,28,0,28,0,28,0,28,0,28,0,224,0,224,0,224,0, + // 0x002a * + 21,21,63,24,3,3,0,112,0,0,112,0,0,112,0,224,112,56,224,112,56,224,112,56,28,113,192,28,113,192,28,113,192,3,254,0,3,254,0,3,254,0,28,113,192,28,113,192,28,113,192,224,112,56,224,112,56,224,112,56,0,112,0,0,112,0,0,112,0, + // 0x002b + + 21,21,63,24,3,3,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,248,255,255,248,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x002c , + 6,12,12,24,9,250,252,252,252,28,28,28,28,28,28,224,224,224, + // 0x002d - + 12,3,6,24,6,12,255,240,255,240,255,240, + // 0x002e . + 6,6,6,24,9,0,252,252,252,252,252,252, + // 0x002f / + 18,30,90,24,3,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0030 0 + 18,30,90,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,224,113,192,224,113,192,224,113,192,227,129,192,227,129,192,227,129,192,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0, + // 0x0031 1 + 15,30,60,24,6,0,3,128,3,128,3,128,31,128,31,128,31,128,227,128,227,128,227,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x0032 2 + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,0,126,0,0,126,0,0,126,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x0033 3 + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,3,254,0,3,254,0,3,254,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0034 4 + 18,30,90,24,3,0,0,14,0,0,14,0,0,14,0,0,126,0,0,126,0,0,126,0,3,142,0,3,142,0,3,142,0,28,14,0,28,14,0,28,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,255,255,192,255,255,192,255,255,192,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + // 0x0035 5 + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0036 6 + 18,30,90,24,3,0,3,254,0,3,254,0,3,254,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0037 7 + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0038 8 + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0039 9 + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,255,192,31,255,192,31,255,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,31,240,0,31,240,0,31,240,0, + // 0x003a : + 6,21,21,24,9,3,252,252,252,252,252,252,0,0,0,0,0,0,0,0,0,252,252,252,252,252,252, + // 0x003b ; + 6,27,27,24,9,253,252,252,252,252,252,252,0,0,0,0,0,0,0,0,0,252,252,252,28,28,28,28,28,28,224,224,224, + // 0x003c < + 15,27,54,24,6,0,0,14,0,14,0,14,0,112,0,112,0,112,3,128,3,128,3,128,28,0,28,0,28,0,224,0,224,0,224,0,28,0,28,0,28,0,3,128,3,128,3,128,0,112,0,112,0,112,0,14,0,14,0,14, + // 0x003d = + 18,15,45,24,3,6,255,255,192,255,255,192,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192, + // 0x003e > + 15,27,54,24,3,0,224,0,224,0,224,0,28,0,28,0,28,0,3,128,3,128,3,128,0,112,0,112,0,112,0,14,0,14,0,14,0,112,0,112,0,112,3,128,3,128,3,128,28,0,28,0,28,0,224,0,224,0,224,0, + // 0x003f ? + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,0,0,0,0,0,0,0,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0040 @ + 18,30,90,24,3,0,3,254,0,3,254,0,3,254,0,28,1,192,28,1,192,28,1,192,224,113,192,224,113,192,224,113,192,227,143,192,227,143,192,227,143,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,224,127,192,224,127,192,224,127,192,28,0,0,28,0,0,28,0,0,3,255,192,3,255,192,3,255,192, + // 0x0041 A + 18,30,90,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0042 B + 18,30,90,24,3,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0, + // 0x0043 C + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0044 D + 18,30,90,24,3,0,255,240,0,255,240,0,255,240,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,14,0,224,14,0,224,14,0,255,240,0,255,240,0,255,240,0, + // 0x0045 E + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x0046 F + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0047 G + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,127,192,224,127,192,224,127,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0048 H + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0049 I + 15,30,60,24,6,0,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x004a J + 21,30,90,24,3,0,3,255,248,3,255,248,3,255,248,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x004b K + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,14,0,224,14,0,224,14,0,224,112,0,224,112,0,224,112,0,227,128,0,227,128,0,227,128,0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,0,227,128,0,227,128,0,227,128,0,224,112,0,224,112,0,224,112,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192, + // 0x004c L + 18,30,90,24,3,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x004d M + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x004e N + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,1,192,224,1,192,224,1,192, + // 0x004f O + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0050 P + 18,30,90,24,3,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0051 Q + 21,33,99,24,3,253,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,227,241,192,227,241,192,227,241,192,252,15,192,252,15,192,252,15,192,31,254,0,31,254,0,31,254,0,0,1,248,0,1,248,0,1,248, + // 0x0052 R + 18,30,90,24,3,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0,224,112,0,224,112,0,224,112,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0053 S + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0054 T + 21,30,90,24,3,0,255,255,248,255,255,248,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0055 U + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0056 V + 21,30,90,24,3,0,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0057 W + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0058 X + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0059 Y + 21,30,90,24,3,0,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x005a Z + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x005b [ + 9,36,72,24,12,253,255,128,255,128,255,128,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255,128,255,128,255,128, + // 0x005c "\" + 18,30,90,24,3,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,28,0,0,28,0,0,28,0,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,14,0,0,14,0,0,14,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x005d ] + 9,36,72,24,3,253,255,128,255,128,255,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,128,255,128,255,128, + // 0x005e ^ + 18,9,27,24,3,27,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192, + // 0x005f _ + 21,3,9,24,3,253,255,255,248,255,255,248,255,255,248, + // 0x0060 ` + 9,9,18,24,6,30,224,0,224,0,224,0,28,0,28,0,28,0,3,128,3,128,3,128, + // 0x0061 a + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0062 b + 18,33,99,24,3,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,252,1,192,252,1,192,252,1,192,227,254,0,227,254,0,227,254,0, + // 0x0063 c + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0064 d + 18,33,99,24,3,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,31,241,192,31,241,192,31,241,192,224,15,192,224,15,192,224,15,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0065 e + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0066 f + 15,33,66,24,3,0,0,126,0,126,0,126,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + // 0x0067 g + 18,33,99,24,3,250,0,1,192,0,1,192,0,1,192,31,241,192,31,241,192,31,241,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0,28,0,0,28,0,0,28,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0068 h + 18,33,99,24,3,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0069 i + 15,33,66,24,6,0,3,128,3,128,3,128,3,128,3,128,3,128,0,0,0,0,0,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x006a j + 15,39,78,24,3,250,0,14,0,14,0,14,0,14,0,14,0,14,0,0,0,0,0,0,0,126,0,126,0,126,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,224,112,224,112,224,112,31,128,31,128,31,128, + // 0x006b k + 18,33,99,24,3,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,14,0,224,14,0,224,14,0,224,112,0,224,112,0,224,112,0,227,128,0,227,128,0,227,128,0,252,0,0,252,0,0,252,0,0,227,128,0,227,128,0,227,128,0,224,112,0,224,112,0,224,112,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192, + // 0x006c l + 15,33,66,24,6,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x006d m + 21,24,72,24,3,0,255,143,192,255,143,192,255,143,192,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56, + // 0x006e n + 18,24,72,24,3,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x006f o + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0070 p + 18,30,90,24,3,250,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,252,1,192,252,1,192,252,1,192,227,254,0,227,254,0,227,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0071 q + 18,30,90,24,3,250,31,241,192,31,241,192,31,241,192,224,15,192,224,15,192,224,15,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x0072 r + 18,24,72,24,3,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0073 s + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0074 t + 15,30,60,24,3,0,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,0,126,0,126,0,126, + // 0x0075 u + 18,24,72,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0076 v + 18,24,72,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0, + // 0x0077 w + 21,24,72,24,3,0,224,0,56,224,0,56,224,0,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,31,143,192,31,143,192,31,143,192, + // 0x0078 x + 18,24,72,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0079 y + 18,30,90,24,3,250,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,15,192,28,15,192,28,15,192,3,241,192,3,241,192,3,241,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,31,254,0,31,254,0,31,254,0, + // 0x007a z + 18,24,72,24,3,0,255,255,192,255,255,192,255,255,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x007b { + 12,39,78,24,6,250,3,240,3,240,3,240,28,0,28,0,28,0,28,0,28,0,28,0,3,128,3,128,3,128,3,128,3,128,3,128,28,0,28,0,28,0,224,0,224,0,224,0,28,0,28,0,28,0,3,128,3,128,3,128,3,128,3,128,3,128,28,0,28,0,28,0,28,0,28,0,28,0,3,240,3,240,3,240, + // 0x007c | + 3,42,42,24,12,250,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + // 0x007d } + 12,39,78,24,6,250,252,0,252,0,252,0,3,128,3,128,3,128,3,128,3,128,3,128,28,0,28,0,28,0,28,0,28,0,28,0,3,128,3,128,3,128,0,112,0,112,0,112,3,128,3,128,3,128,28,0,28,0,28,0,28,0,28,0,28,0,3,128,3,128,3,128,3,128,3,128,3,128,252,0,252,0,252,0, + // 0x007e ~ + 21,9,27,24,3,24,31,128,56,31,128,56,31,128,56,224,112,56,224,112,56,224,112,56,224,15,192,224,15,192,224,15,192, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Cyrillic_30.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Cyrillic_30.cpp new file mode 100644 index 0000000000..0a4b254b43 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Cyrillic_30.cpp @@ -0,0 +1,322 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// Unifont Cyrillic 48pt, capital 'A' height: 30px, width: 100%, range: 0x0401-0x0491, glyphs: 74 +extern const uint8_t Unifont_Cyrillic_30[6865] = { + 129,30,1,4,145,4,42,250, // unifont_t + // 0x0401 Ё + 18,42,126,24,3,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x0402 Ђ + 255, + // 0x0403 Ѓ + 255, + // 0x0404 Є + 18,30,90,24,3,0,3,254,0,3,254,0,3,254,0,28,1,192,28,1,192,28,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,28,1,192,28,1,192,28,1,192,3,254,0,3,254,0,3,254,0, + // 0x0405 Ѕ + 255, + // 0x0406 І + 15,30,60,24,6,0,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x0407 Ї + 15,42,84,24,6,0,224,112,224,112,224,112,224,112,224,112,224,112,0,0,0,0,0,0,0,0,0,0,0,0,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x0408 Ј + 255, + // 0x0409 Љ + 255, + // 0x040a Њ + 255, + // 0x040b Ћ + 255, + // 0x040c Ќ + 255, + // 0x040d Ѝ + 255, + // 0x040e Ў + 255, + // 0x040f Џ + 255, + // 0x0410 А + 18,30,90,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0411 Б + 18,30,90,24,3,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0, + // 0x0412 В + 18,30,90,24,3,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0, + // 0x0413 Г + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0414 Д + 24,36,108,24,0,250,0,15,248,0,15,248,0,15,248,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,255,255,255,255,255,255,255,255,255,224,0,7,224,0,7,224,0,7,224,0,7,224,0,7,224,0,7, + // 0x0415 Е + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x0416 Ж + 21,30,90,24,3,0,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,28,113,192,28,113,192,28,113,192,28,113,192,28,113,192,28,113,192,3,254,0,3,254,0,3,254,0,3,254,0,3,254,0,3,254,0,28,113,192,28,113,192,28,113,192,28,113,192,28,113,192,28,113,192,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56, + // 0x0417 З + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,31,254,0,31,254,0,31,254,0,0,14,0,0,14,0,0,14,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0418 И + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192, + // 0x0419 Й + 18,39,117,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192, + // 0x041a К + 18,30,90,24,3,0,224,15,192,224,15,192,224,15,192,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,227,128,0,227,128,0,227,128,0,227,128,0,227,128,0,227,128,0,252,0,0,252,0,0,252,0,0,227,128,0,227,128,0,227,128,0,224,112,0,224,112,0,224,112,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192, + // 0x041b Л + 18,30,90,24,3,0,3,255,192,3,255,192,3,255,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,224,1,192,224,1,192,224,1,192, + // 0x041c М + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x041d Н + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x041e О + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x041f П + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0420 Р + 18,30,90,24,3,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0421 С + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0422 Т + 21,30,90,24,3,0,255,255,248,255,255,248,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0423 У + 21,30,90,24,3,0,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,31,128,0,31,128,0,31,128,0, + // 0x0424 Ф + 21,33,99,24,3,0,0,112,0,0,112,0,0,112,0,31,255,192,31,255,192,31,255,192,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0425 Х + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0426 Ц + 21,36,108,24,3,250,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,248,255,255,248,255,255,248,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + // 0x0427 Ч + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x0428 Ш + 21,30,90,24,3,0,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,255,255,248,255,255,248,255,255,248, + // 0x0429 Щ + 24,36,108,24,0,250,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,255,255,255,255,255,255,255,255,255,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7, + // 0x042a Ъ + 21,30,90,24,3,0,255,128,0,255,128,0,255,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,255,192,3,255,192,3,255,192,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,255,192,3,255,192,3,255,192, + // 0x042b Ы + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,129,192,255,129,192,255,129,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,255,129,192,255,129,192,255,129,192, + // 0x042c Ь + 18,30,90,24,3,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0, + // 0x042d Э + 18,30,90,24,3,0,31,240,0,31,240,0,31,240,0,224,14,0,224,14,0,224,14,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x042e Ю + 18,30,90,24,3,0,224,126,0,224,126,0,224,126,0,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,255,129,192,255,129,192,255,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,224,126,0,224,126,0,224,126,0, + // 0x042f Я + 18,30,90,24,3,0,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,255,192,31,255,192,31,255,192,3,129,192,3,129,192,3,129,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0430 а + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0431 б + 18,36,108,24,3,0,0,1,192,0,1,192,0,1,192,3,254,0,3,254,0,3,254,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0432 в + 18,24,72,24,3,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0, + // 0x0433 г + 18,24,72,24,3,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0434 д + 21,27,81,24,3,253,3,255,192,3,255,192,3,255,192,3,129,192,3,129,192,3,129,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,248,255,255,248,255,255,248,224,0,56,224,0,56,224,0,56, + // 0x0435 е + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0436 ж + 21,24,72,24,3,0,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,28,113,192,28,113,192,28,113,192,3,254,0,3,254,0,3,254,0,3,254,0,3,254,0,3,254,0,28,113,192,28,113,192,28,113,192,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56, + // 0x0437 з + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,254,0,31,254,0,31,254,0,0,14,0,0,14,0,0,14,0,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0438 и + 18,24,72,24,3,0,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192, + // 0x0439 й + 18,36,108,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192, + // 0x043a к + 18,24,72,24,3,0,224,15,192,224,15,192,224,15,192,224,112,0,224,112,0,224,112,0,227,128,0,227,128,0,227,128,0,252,0,0,252,0,0,252,0,0,227,128,0,227,128,0,227,128,0,224,112,0,224,112,0,224,112,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192, + // 0x043b л + 18,24,72,24,3,0,3,255,192,3,255,192,3,255,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,224,1,192,224,1,192,224,1,192, + // 0x043c м + 18,24,72,24,3,0,224,1,192,224,1,192,224,1,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x043d н + 18,24,72,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x043e о + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x043f п + 18,24,72,24,3,0,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0440 р + 18,30,90,24,3,250,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,252,1,192,252,1,192,252,1,192,227,254,0,227,254,0,227,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0441 с + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0442 т + 21,24,72,24,3,0,255,255,248,255,255,248,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0443 у + 18,30,90,24,3,250,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,252,0,0,252,0,0,252,0,0, + // 0x0444 ф + 21,39,117,24,3,250,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,255,192,31,255,192,31,255,192,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0445 х + 18,24,72,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0446 ц + 21,30,90,24,3,250,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,248,255,255,248,255,255,248,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + // 0x0447 ч + 18,24,72,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x0448 ш + 21,24,72,24,3,0,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,255,255,248,255,255,248,255,255,248, + // 0x0449 щ + 24,30,90,24,0,250,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,255,255,255,255,255,255,255,255,255,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7, + // 0x044a ъ + 21,24,72,24,3,0,255,128,0,255,128,0,255,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,255,192,3,255,192,3,255,192,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,255,192,3,255,192,3,255,192, + // 0x044b ы + 18,24,72,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,129,192,255,129,192,255,129,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,255,129,192,255,129,192,255,129,192, + // 0x044c ь + 18,24,72,24,3,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0, + // 0x044d э + 18,24,72,24,3,0,31,240,0,31,240,0,31,240,0,224,14,0,224,14,0,224,14,0,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x044e ю + 18,24,72,24,3,0,224,126,0,224,126,0,224,126,0,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,255,129,192,255,129,192,255,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,224,126,0,224,126,0,224,126,0, + // 0x044f я + 18,24,72,24,3,0,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,255,192,31,255,192,31,255,192,3,129,192,3,129,192,3,129,192,28,1,192,28,1,192,28,1,192,224,1,192,224,1,192,224,1,192, + // 0x0450 ѐ + 255, + // 0x0451 ё + 18,36,108,24,3,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0452 ђ + 255, + // 0x0453 ѓ + 255, + // 0x0454 є + 18,24,72,24,3,0,3,254,0,3,254,0,3,254,0,28,1,192,28,1,192,28,1,192,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,28,1,192,28,1,192,28,1,192,3,254,0,3,254,0,3,254,0, + // 0x0455 ѕ + 255, + // 0x0456 і + 15,33,66,24,6,0,3,128,3,128,3,128,3,128,3,128,3,128,0,0,0,0,0,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x0457 ї + 15,33,66,24,6,0,224,112,224,112,224,112,224,112,224,112,224,112,0,0,0,0,0,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x0458 ј + 255, + // 0x0459 љ + 255, + // 0x045a њ + 255, + // 0x045b ћ + 255, + // 0x045c ќ + 255, + // 0x045d ѝ + 255, + // 0x045e ў + 255, + // 0x045f џ + 255, + // 0x0460 Ѡ + 255, + // 0x0461 ѡ + 255, + // 0x0462 Ѣ + 255, + // 0x0463 ѣ + 255, + // 0x0464 Ѥ + 255, + // 0x0465 ѥ + 255, + // 0x0466 Ѧ + 255, + // 0x0467 ѧ + 255, + // 0x0468 Ѩ + 255, + // 0x0469 ѩ + 255, + // 0x046a Ѫ + 255, + // 0x046b ѫ + 255, + // 0x046c Ѭ + 255, + // 0x046d ѭ + 255, + // 0x046e Ѯ + 255, + // 0x046f ѯ + 255, + // 0x0470 Ѱ + 255, + // 0x0471 ѱ + 255, + // 0x0472 Ѳ + 255, + // 0x0473 ѳ + 255, + // 0x0474 Ѵ + 255, + // 0x0475 ѵ + 255, + // 0x0476 Ѷ + 255, + // 0x0477 ѷ + 255, + // 0x0478 Ѹ + 255, + // 0x0479 ѹ + 255, + // 0x047a Ѻ + 255, + // 0x047b ѻ + 255, + // 0x047c Ѽ + 255, + // 0x047d ѽ + 255, + // 0x047e Ѿ + 255, + // 0x047f ѿ + 255, + // 0x0480 Ҁ + 255, + // 0x0481 ҁ + 255, + // 0x0482 ҂ + 255, + // 0x0483 ҃ + 255, + // 0x0484 ҄ + 255, + // 0x0485 ҅ + 255, + // 0x0486 ҆ + 255, + // 0x0487 ҇ + 255, + // 0x0488 ҈ + 255, + // 0x0489 ҉ + 255, + // 0x048a Ҋ + 255, + // 0x048b ҋ + 255, + // 0x048c Ҍ + 255, + // 0x048d ҍ + 255, + // 0x048e Ҏ + 255, + // 0x048f ҏ + 255, + // 0x0490 Ґ + 18,36,108,24,3,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0491 ґ + 18,30,90,24,3,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Greek_30.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Greek_30.cpp new file mode 100644 index 0000000000..f2c55f99a7 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Greek_30.cpp @@ -0,0 +1,178 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// Unifont Greek 48pt, capital 'A' height: 30px, width: 100%, range: 0x0386-0x03ce, glyphs: 63 +extern const uint8_t Unifont_Greek_30[6228] = { + 129,30,134,3,206,3,42,250, // unifont_t + // 0x0386 Ά + 18,42,126,24,3,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,0,0,0,0,0,0,0,0,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0387 · + 255, + // 0x0388 Έ + 18,42,126,24,3,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x0389 Ή + 18,42,126,24,3,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x038a Ί + 18,42,126,24,3,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,0,0,0,0,0,0,0,0,0,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,255,192,31,255,192,31,255,192, + // 0x038b ΋ + 255, + // 0x038c Ό + 18,42,126,24,3,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x038d ΍ + 255, + // 0x038e Ύ + 21,42,126,24,3,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,0,0,0,0,0,0,0,0,0,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x038f Ώ + 21,45,135,24,3,253,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,0,0,0,0,0,0,0,0,0,31,255,192,31,255,192,31,255,192,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,255,143,248,255,143,248,255,143,248, + // 0x0390 ΐ + 255, + // 0x0391 Α + 18,30,90,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0392 Β + 18,30,90,24,3,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0, + // 0x0393 Γ + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0394 Δ + 21,30,90,24,3,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,255,255,248,255,255,248,255,255,248, + // 0x0395 Ε + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x0396 Ζ + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x0397 Η + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0398 Θ + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0399 Ι + 15,30,60,24,6,0,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x039a Κ + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,14,0,224,14,0,224,14,0,224,112,0,224,112,0,224,112,0,227,128,0,227,128,0,227,128,0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,0,227,128,0,227,128,0,227,128,0,224,112,0,224,112,0,224,112,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192, + // 0x039b Λ + 21,30,90,24,3,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56, + // 0x039c Μ + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x039d Ν + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,1,192,224,1,192,224,1,192, + // 0x039e Ξ + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192, + // 0x039f Ο + 18,30,90,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x03a0 Π + 21,30,90,24,3,0,255,255,248,255,255,248,255,255,248,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192, + // 0x03a1 Ρ + 18,30,90,24,3,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x03a2 ΢ + 255, + // 0x03a3 Σ + 18,30,90,24,3,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,28,0,0,28,0,0,28,0,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x03a4 Τ + 21,30,90,24,3,0,255,255,248,255,255,248,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x03a5 Υ + 21,30,90,24,3,0,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x03a6 Φ + 21,30,90,24,3,0,255,255,248,255,255,248,255,255,248,0,112,0,0,112,0,0,112,0,31,255,192,31,255,192,31,255,192,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0,255,255,248,255,255,248,255,255,248, + // 0x03a7 Χ + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x03a8 Ψ + 21,30,90,24,3,0,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x03a9 Ω + 21,30,90,24,3,0,31,255,192,31,255,192,31,255,192,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,255,143,248,255,143,248,255,143,248, + // 0x03aa Ϊ + 255, + // 0x03ab Ϋ + 255, + // 0x03ac ά + 18,39,117,24,3,0,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,129,192,31,129,192,31,129,192,224,113,192,224,113,192,224,113,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,113,192,224,113,192,224,113,192,31,129,192,31,129,192,31,129,192, + // 0x03ad έ + 18,39,117,24,3,0,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,192,31,255,192,31,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,31,254,0,31,254,0,31,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,31,255,192,31,255,192,31,255,192, + // 0x03ae ή + 18,45,135,24,3,250,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x03af ί + 12,39,78,24,6,0,0,112,0,112,0,112,3,128,3,128,3,128,28,0,28,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,252,0,252,0,252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,3,240,3,240,3,240, + // 0x03b0 ΰ + 255, + // 0x03b1 α + 18,24,72,24,3,0,31,129,192,31,129,192,31,129,192,224,113,192,224,113,192,224,113,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,113,192,224,113,192,224,113,192,31,129,192,31,129,192,31,129,192, + // 0x03b2 β + 18,36,108,24,3,250,31,240,0,31,240,0,31,240,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,252,1,192,252,1,192,252,1,192,227,254,0,227,254,0,227,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x03b3 γ + 21,24,72,24,3,0,31,128,56,31,128,56,31,128,56,224,112,56,224,112,56,224,112,56,0,113,192,0,113,192,0,113,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + // 0x03b4 δ + 18,30,90,24,3,0,3,254,0,3,254,0,3,254,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x03b5 ε + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,31,254,0,31,254,0,31,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x03b6 ζ + 15,36,72,24,6,250,224,0,224,0,224,0,224,0,224,0,224,0,31,240,31,240,31,240,3,128,3,128,3,128,28,0,28,0,28,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,31,240,31,240,31,240,0,14,0,14,0,14,31,240,31,240,31,240, + // 0x03b7 η + 18,30,90,24,3,250,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x03b8 θ + 18,30,90,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0, + // 0x03b9 ι + 12,24,48,24,6,0,252,0,252,0,252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,3,240,3,240,3,240, + // 0x03ba κ + 15,24,48,24,6,0,224,14,224,14,224,14,224,112,224,112,224,112,227,128,227,128,227,128,252,0,252,0,252,0,252,0,252,0,252,0,227,128,227,128,227,128,224,112,224,112,224,112,224,14,224,14,224,14, + // 0x03bb λ + 18,30,90,24,3,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x03bc μ + 18,30,90,24,3,250,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,227,241,192,227,241,192,227,241,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x03bd ν + 18,24,72,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,112,0,224,112,0,224,112,0,227,128,0,227,128,0,227,128,0,252,0,0,252,0,0,252,0,0, + // 0x03be ξ + 18,36,108,24,3,250,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,31,254,0,31,254,0,31,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,31,254,0,31,254,0,31,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,31,254,0,31,254,0,31,254,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,31,254,0,31,254,0,31,254,0, + // 0x03bf ο + 18,24,72,24,3,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x03c0 π + 18,24,72,24,3,0,255,255,192,255,255,192,255,255,192,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0, + // 0x03c1 ρ + 18,30,90,24,3,250,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,252,1,192,252,1,192,252,1,192,227,254,0,227,254,0,227,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x03c2 ς + 18,30,90,24,3,250,3,255,192,3,255,192,3,255,192,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,28,0,0,28,0,0,28,0,0,3,254,0,3,254,0,3,254,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,3,254,0,3,254,0,3,254,0, + // 0x03c3 σ + 21,24,72,24,3,0,31,255,248,31,255,248,31,255,248,224,112,0,224,112,0,224,112,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x03c4 τ + 18,24,72,24,3,0,255,255,192,255,255,192,255,255,192,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,126,0,0,126,0,0,126,0, + // 0x03c5 υ + 18,24,72,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x03c6 φ + 21,30,90,24,3,250,28,15,192,28,15,192,28,15,192,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x03c7 χ + 24,33,99,24,0,250,252,0,7,252,0,7,252,0,7,3,128,7,3,128,7,3,128,7,3,128,56,3,128,56,3,128,56,0,112,56,0,112,56,0,112,56,0,113,192,0,113,192,0,113,192,0,126,0,0,126,0,0,126,0,3,142,0,3,142,0,3,142,0,28,14,0,28,14,0,28,14,0,28,1,192,28,1,192,28,1,192,224,1,192,224,1,192,224,1,192,224,0,63,224,0,63,224,0,63, + // 0x03c8 ψ + 21,30,90,24,3,250,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x03c9 ω + 21,24,72,24,3,0,28,1,192,28,1,192,28,1,192,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,31,143,192,31,143,192,31,143,192, + // 0x03ca ϊ + 255, + // 0x03cb ϋ + 255, + // 0x03cc ό + 18,39,117,24,3,0,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x03cd ύ + 18,39,117,24,3,0,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x03ce ώ + 21,39,117,24,3,0,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,1,192,28,1,192,28,1,192,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,31,143,192,31,143,192,31,143,192, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Katakana_30.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Katakana_30.cpp new file mode 100644 index 0000000000..f443e717aa --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Katakana_30.cpp @@ -0,0 +1,238 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// Unifont Katakana 48pt, capital 'A' height: 30px, width: 100%, range: 0x30a0-0x8868, glyphs: 103 +extern const uint8_t Unifont_Katakana_30[15707] = { + 161,30,160,48,104,136,42,250, // unifont_t + // 0x30a0 ゠ + 160,48,18,15,45,48,15,6,255,255,192,255,255,192,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192, + // 0x30a1 ァ + 161,48,27,24,96,48,6,253,224,1,255,224,224,1,255,224,224,1,255,224,31,254,0,224,31,254,0,224,31,254,0,224,0,14,7,0,0,14,7,0,0,14,7,0,0,1,248,0,0,1,248,0,0,1,248,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,14,0,0,0,14,0,0,0,14,0,0,0,112,0,0,0,112,0,0,0,112,0,0, + // 0x30a2 ア + 162,48,30,36,144,48,6,253,224,1,255,252,224,1,255,252,224,1,255,252,31,254,0,28,31,254,0,28,31,254,0,28,0,0,0,224,0,0,0,224,0,0,0,224,0,14,7,0,0,14,7,0,0,14,7,0,0,1,248,0,0,1,248,0,0,1,248,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,112,0,0,0,112,0,0,0,112,0,0,3,128,0,0,3,128,0,0,3,128,0,0, + // 0x30a3 ィ + 163,48,24,30,90,48,9,253,0,0,7,0,0,7,0,0,7,0,0,56,0,0,56,0,0,56,0,1,192,0,1,192,0,1,192,0,127,192,0,127,192,0,127,192,255,129,192,255,129,192,255,129,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x30a4 イ + 164,48,27,39,156,48,6,253,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,7,0,0,0,7,0,0,0,7,0,0,0,56,0,0,0,56,0,0,0,56,0,0,15,192,0,0,15,192,0,0,15,192,0,3,241,192,0,3,241,192,0,3,241,192,0,252,0,56,0,252,0,56,0,252,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0, + // 0x30a5 ゥ + 165,48,24,30,90,48,9,253,0,112,0,0,112,0,0,112,0,0,14,0,0,14,0,0,14,0,0,15,255,0,15,255,0,15,255,255,240,7,255,240,7,255,240,7,28,0,7,28,0,7,28,0,7,28,0,56,28,0,56,28,0,56,0,0,56,0,0,56,0,0,56,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0, + // 0x30a6 ウ + 166,48,30,39,156,48,6,253,0,14,0,0,0,14,0,0,0,14,0,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,255,252,0,1,255,252,0,1,255,252,255,254,0,28,255,254,0,28,255,254,0,28,28,0,0,28,28,0,0,28,28,0,0,28,28,0,0,224,28,0,0,224,28,0,0,224,3,128,0,224,3,128,0,224,3,128,0,224,3,128,7,0,3,128,7,0,3,128,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,56,0,0,0,56,0,0,0,56,0,0,1,192,0,0,1,192,0,0,1,192,0,0,14,0,0,0,14,0,0,0,14,0,0, + // 0x30a7 ェ + 167,48,27,21,84,48,9,0,0,1,255,0,0,1,255,0,0,1,255,0,31,254,0,0,31,254,0,0,31,254,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,15,255,0,0,15,255,0,0,15,255,0,255,240,0,224,255,240,0,224,255,240,0,224, + // 0x30a8 エ + 168,48,33,27,135,48,6,3,0,0,7,252,0,0,0,7,252,0,0,0,7,252,0,31,255,248,0,0,31,255,248,0,0,31,255,248,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,15,255,252,0,0,15,255,252,0,0,15,255,252,0,255,240,0,3,128,255,240,0,3,128,255,240,0,3,128, + // 0x30a9 ォ + 169,48,24,30,90,48,9,253,0,14,0,0,14,0,0,14,0,0,1,192,0,1,192,0,1,192,224,1,255,224,1,255,224,1,255,31,255,192,31,255,192,31,255,192,0,15,192,0,15,192,0,15,192,0,113,192,0,113,192,0,113,192,3,129,192,3,129,192,3,129,192,28,1,192,28,1,192,28,1,192,224,15,192,224,15,192,224,15,192,0,1,192,0,1,192,0,1,192, + // 0x30aa オ + 170,48,33,39,195,48,6,253,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,224,0,7,255,128,224,0,7,255,128,224,0,7,255,128,31,255,255,0,0,31,255,255,0,0,31,255,255,0,0,0,0,63,0,0,0,0,63,0,0,0,0,63,0,0,0,1,199,0,0,0,1,199,0,0,0,1,199,0,0,0,14,7,0,0,0,14,7,0,0,0,14,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,28,0,7,0,0,28,0,7,0,0,28,0,7,0,0,0,0,63,0,0,0,0,63,0,0,0,0,63,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0, + // 0x30ab カ + 171,48,30,39,156,48,6,253,0,14,0,0,0,14,0,0,0,14,0,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,224,1,255,252,224,1,255,252,224,1,255,252,31,255,192,28,31,255,192,28,31,255,192,28,0,14,0,28,0,14,0,28,0,14,0,28,0,14,0,28,0,14,0,28,0,14,0,28,0,112,0,224,0,112,0,224,0,112,0,224,0,112,0,224,0,112,0,224,0,112,0,224,3,128,0,224,3,128,0,224,3,128,0,224,28,1,199,0,28,1,199,0,28,1,199,0,224,0,63,0,224,0,63,0,224,0,63,0,0,0,56,0,0,0,56,0,0,0,56,0, + // 0x30ac ガ + 172,48,36,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,14,0,224,112,0,14,0,224,112,0,14,0,224,112,0,1,192,28,112,0,1,192,28,112,0,1,192,28,112,0,1,192,28,0,0,1,192,28,0,0,1,192,28,0,224,1,255,252,0,224,1,255,252,0,224,1,255,252,0,31,255,192,28,0,31,255,192,28,0,31,255,192,28,0,0,14,0,28,0,0,14,0,28,0,0,14,0,28,0,0,14,0,28,0,0,14,0,28,0,0,14,0,28,0,0,112,0,224,0,0,112,0,224,0,0,112,0,224,0,0,112,0,224,0,0,112,0,224,0,0,112,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,28,1,199,0,0,28,1,199,0,0,28,1,199,0,0,224,0,63,0,0,224,0,63,0,0,224,0,63,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0, + // 0x30ad キ + 173,48,33,39,195,48,6,253,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,7,252,0,0,14,7,252,0,0,14,7,252,0,0,15,248,0,0,0,15,248,0,0,0,15,248,0,0,31,241,192,0,0,31,241,192,0,0,31,241,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,199,255,128,0,1,199,255,128,0,1,199,255,128,0,15,248,0,0,0,15,248,0,0,0,15,248,0,0,255,240,56,0,0,255,240,56,0,0,255,240,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0, + // 0x30ae ギ + 174,48,36,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,112,0,224,112,0,112,0,224,112,0,112,0,224,112,0,14,0,28,112,0,14,0,28,112,0,14,0,28,112,0,14,7,252,0,0,14,7,252,0,0,14,7,252,0,0,15,248,0,0,0,15,248,0,0,0,15,248,0,0,31,241,192,0,0,31,241,192,0,0,31,241,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,199,255,128,0,1,199,255,128,0,1,199,255,128,0,15,248,0,0,0,15,248,0,0,0,15,248,0,0,255,240,56,0,0,255,240,56,0,0,255,240,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0, + // 0x30af ク + 175,48,27,39,156,48,9,253,3,128,0,0,3,128,0,0,3,128,0,0,0,112,63,224,0,112,63,224,0,112,63,224,0,127,192,224,0,127,192,224,0,127,192,224,0,112,7,0,0,112,7,0,0,112,7,0,3,128,7,0,3,128,7,0,3,128,7,0,3,128,56,0,3,128,56,0,3,128,56,0,28,0,56,0,28,0,56,0,28,0,56,0,224,1,192,0,224,1,192,0,224,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,14,0,0,0,14,0,0,0,14,0,0,0,112,0,0,0,112,0,0,0,112,0,0,3,128,0,0,3,128,0,0,3,128,0,0,28,0,0,0,28,0,0,0,28,0,0,0, + // 0x30b0 グ + 176,48,36,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,3,128,0,224,112,3,128,0,224,112,3,128,0,224,112,0,112,63,28,112,0,112,63,28,112,0,112,63,28,112,0,127,199,28,0,0,127,199,28,0,0,127,199,28,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,3,128,56,0,0,3,128,56,0,0,3,128,56,0,0,28,0,56,0,0,28,0,56,0,0,28,0,56,0,0,224,1,192,0,0,224,1,192,0,0,224,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0, + // 0x30b1 ケ + 177,48,33,39,195,48,6,253,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,255,128,0,112,0,255,128,0,112,0,255,128,3,255,255,0,0,3,255,255,0,0,3,255,255,0,0,3,129,192,0,0,3,129,192,0,0,3,129,192,0,0,28,0,56,0,0,28,0,56,0,0,28,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0, + // 0x30b2 ゲ + 178,48,36,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,3,128,0,224,112,3,128,0,224,112,3,128,0,224,112,0,112,0,28,112,0,112,0,28,112,0,112,0,28,112,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,255,128,0,112,0,255,128,0,112,0,255,128,3,255,255,0,0,3,255,255,0,0,3,255,255,0,0,3,129,192,0,0,3,129,192,0,0,3,129,192,0,0,28,0,56,0,0,28,0,56,0,0,28,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0, + // 0x30b3 コ + 179,48,30,27,108,48,6,3,224,1,255,252,224,1,255,252,224,1,255,252,31,254,0,28,31,254,0,28,31,254,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,15,255,224,0,15,255,224,0,15,255,224,31,240,0,224,31,240,0,224,31,240,0,224, + // 0x30b4 ゴ + 180,48,39,36,180,48,3,3,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,224,1,255,227,128,224,1,255,227,128,224,1,255,227,128,31,254,0,224,0,31,254,0,224,0,31,254,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,15,255,0,0,0,15,255,0,0,0,15,255,0,0,31,240,7,0,0,31,240,7,0,0,31,240,7,0,0, + // 0x30b5 サ + 181,48,33,39,195,48,6,253,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,224,112,63,255,128,224,112,63,255,128,224,112,63,255,128,31,255,199,0,0,31,255,199,0,0,31,255,199,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0, + // 0x30b6 ザ + 182,48,36,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,56,224,112,0,0,56,224,112,0,0,56,224,112,3,128,7,28,112,3,128,7,28,112,3,128,7,28,112,0,112,7,28,0,0,112,7,28,0,0,112,7,28,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,224,112,63,255,128,224,112,63,255,128,224,112,63,255,128,31,255,199,0,0,31,255,199,0,0,31,255,199,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0, + // 0x30b7 シ + 183,48,30,33,132,48,9,0,31,128,0,0,31,128,0,0,31,128,0,0,0,112,0,0,0,112,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,0,0,0,252,0,0,0,252,0,0,0,3,128,0,28,3,128,0,28,3,128,0,28,0,0,0,224,0,0,0,224,0,0,0,224,0,0,7,0,0,0,7,0,0,0,7,0,0,0,56,0,0,0,56,0,0,0,56,0,0,1,192,0,0,1,192,0,0,1,192,0,224,126,0,0,224,126,0,0,224,126,0,0,31,128,0,0,31,128,0,0,31,128,0,0, + // 0x30b8 ジ + 184,48,33,36,180,48,9,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,31,128,7,3,128,31,128,7,3,128,31,128,7,3,128,0,112,0,227,128,0,112,0,227,128,0,112,0,227,128,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,224,126,0,0,0,224,126,0,0,0,224,126,0,0,0,31,128,0,0,0,31,128,0,0,0,31,128,0,0,0, + // 0x30b9 ス + 185,48,30,30,120,48,6,3,28,0,63,224,28,0,63,224,28,0,63,224,3,255,192,224,3,255,192,224,3,255,192,224,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,1,199,0,0,1,199,0,0,1,199,0,0,14,0,224,0,14,0,224,0,14,0,224,3,240,0,28,3,240,0,28,3,240,0,28,252,0,0,28,252,0,0,28,252,0,0,28, + // 0x30ba ズ + 186,48,39,36,180,48,3,3,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,28,0,63,227,142,28,0,63,227,142,28,0,63,227,142,3,255,192,227,128,3,255,192,227,128,3,255,192,227,128,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,199,0,0,0,1,199,0,0,0,1,199,0,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,3,240,0,28,0,3,240,0,28,0,3,240,0,28,0,252,0,0,28,0,252,0,0,28,0,252,0,0,28,0, + // 0x30bb セ + 187,48,33,36,180,48,6,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,7,255,128,0,112,7,255,128,0,112,7,255,128,0,113,248,3,128,0,113,248,3,128,0,113,248,3,128,224,126,0,28,0,224,126,0,28,0,224,126,0,28,0,31,240,0,224,0,31,240,0,224,0,31,240,0,224,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,1,255,252,0,0,1,255,252,0,0,1,255,252,0, + // 0x30bc ゼ + 188,48,36,39,195,48,6,0,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,3,128,0,224,112,3,128,0,224,112,3,128,0,224,112,0,112,0,28,112,0,112,0,28,112,0,112,0,28,112,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,7,255,128,0,112,7,255,128,0,112,7,255,128,0,113,248,3,128,0,113,248,3,128,0,113,248,3,128,224,126,0,28,0,224,126,0,28,0,224,126,0,28,0,31,240,0,224,0,31,240,0,224,0,31,240,0,224,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,1,255,255,128,0,1,255,255,128,0,1,255,255,128, + // 0x30bd ソ + 189,48,27,39,156,48,9,253,0,0,7,0,0,0,7,0,0,0,7,0,224,0,0,224,224,0,0,224,224,0,0,224,28,0,0,224,28,0,0,224,28,0,0,224,3,128,0,224,3,128,0,224,3,128,0,224,3,128,7,0,3,128,7,0,3,128,7,0,3,128,7,0,3,128,7,0,3,128,7,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,14,0,0,0,14,0,0,0,14,0,0,0,112,0,0,0,112,0,0,0,112,0,0,3,128,0,0,3,128,0,0,3,128,0,0, + // 0x30be ゾ + 190,48,36,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,56,224,112,0,0,56,224,112,0,0,56,224,112,224,0,7,28,112,224,0,7,28,112,224,0,7,28,112,28,0,7,28,0,28,0,7,28,0,28,0,7,28,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0, + // 0x30bf タ + 191,48,30,39,156,48,6,253,0,14,0,0,0,14,0,0,0,14,0,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,255,252,0,1,255,252,0,1,255,252,0,14,0,28,0,14,0,28,0,14,0,28,0,14,0,224,0,14,0,224,0,14,0,224,0,113,192,224,0,113,192,224,0,113,192,224,3,128,63,0,3,128,63,0,3,128,63,0,28,0,7,0,28,0,7,0,28,0,7,0,0,0,56,0,0,0,56,0,0,0,56,0,0,1,192,0,0,1,192,0,0,1,192,0,0,14,0,0,0,14,0,0,0,14,0,0,3,240,0,0,3,240,0,0,3,240,0,0,252,0,0,0,252,0,0,0,252,0,0,0, + // 0x30c0 ダ + 192,48,39,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,14,0,28,14,0,14,0,28,14,0,14,0,28,14,0,1,192,3,142,0,1,192,3,142,0,1,192,3,142,0,1,255,255,128,0,1,255,255,128,0,1,255,255,128,0,14,0,28,0,0,14,0,28,0,0,14,0,28,0,0,14,0,28,0,0,14,0,28,0,0,14,0,28,0,0,113,192,224,0,0,113,192,224,0,0,113,192,224,0,3,128,56,224,0,3,128,56,224,0,3,128,56,224,0,28,0,7,0,0,28,0,7,0,0,28,0,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0, + // 0x30c1 チ + 193,48,33,39,195,48,6,253,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,1,248,0,0,0,1,248,0,0,0,1,248,0,0,31,254,0,0,0,31,254,0,0,0,31,254,0,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,0,63,255,128,0,0,63,255,128,0,0,63,255,128,224,15,248,0,0,224,15,248,0,0,224,15,248,0,0,31,240,56,0,0,31,240,56,0,0,31,240,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0, + // 0x30c2 ヂ + 194,48,36,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,7,224,112,0,0,7,224,112,0,0,7,224,112,0,1,248,28,112,0,1,248,28,112,0,1,248,28,112,31,254,0,28,0,31,254,0,28,0,31,254,0,28,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,0,63,255,128,0,0,63,255,128,0,0,63,255,128,224,15,248,0,0,224,15,248,0,0,224,15,248,0,0,31,240,56,0,0,31,240,56,0,0,31,240,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0, + // 0x30c3 ッ + 195,48,24,24,72,48,9,253,3,128,56,3,128,56,3,128,56,224,112,7,224,112,7,224,112,7,28,112,7,28,112,7,28,112,7,28,0,56,28,0,56,28,0,56,0,0,56,0,0,56,0,0,56,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0, + // 0x30c4 ツ + 196,48,33,33,165,48,6,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,224,14,0,3,128,224,14,0,3,128,224,14,0,3,128,28,1,192,3,128,28,1,192,3,128,28,1,192,3,128,3,129,192,28,0,3,129,192,28,0,3,129,192,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0, + // 0x30c5 ヅ + 197,48,39,39,195,48,3,0,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,3,128,7,3,142,3,128,7,3,142,3,128,7,3,142,0,112,0,227,128,0,112,0,227,128,0,112,0,227,128,224,14,0,224,0,224,14,0,224,0,224,14,0,224,0,28,14,0,224,0,28,14,0,224,0,28,14,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0, + // 0x30c6 テ + 198,48,33,36,180,48,6,253,28,1,255,224,0,28,1,255,224,0,28,1,255,224,0,3,254,0,0,0,3,254,0,0,0,3,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,255,128,0,0,7,255,128,0,0,7,255,128,224,15,248,0,0,224,15,248,0,0,224,15,248,0,0,31,240,56,0,0,31,240,56,0,0,31,240,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0, + // 0x30c7 デ + 199,48,36,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,224,112,0,0,0,224,112,0,0,0,224,112,28,1,255,28,112,28,1,255,28,112,28,1,255,28,112,3,254,0,28,0,3,254,0,28,0,3,254,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,63,252,0,224,0,63,252,0,224,0,63,252,0,31,255,192,0,0,31,255,192,0,0,31,255,192,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0, + // 0x30c8 ト + 200,48,21,39,117,48,12,253,224,0,0,224,0,0,224,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,31,240,0,31,240,0,31,240,0,28,15,192,28,15,192,28,15,192,28,0,56,28,0,56,28,0,56,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + // 0x30c9 ド + 201,48,27,42,168,48,9,253,0,0,7,0,0,0,7,0,0,0,7,0,224,1,192,224,224,1,192,224,224,1,192,224,28,0,56,224,28,0,56,224,28,0,56,224,28,0,56,0,28,0,56,0,28,0,56,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,31,240,0,0,31,240,0,0,31,240,0,0,28,15,192,0,28,15,192,0,28,15,192,0,28,0,56,0,28,0,56,0,28,0,56,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0, + // 0x30ca ナ + 202,48,33,39,195,48,6,253,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,224,0,63,255,128,224,0,63,255,128,224,0,63,255,128,31,255,248,0,0,31,255,248,0,0,31,255,248,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0, + // 0x30cb ニ + 203,48,33,24,120,48,6,6,0,0,63,224,0,0,0,63,224,0,0,0,63,224,0,31,255,192,0,0,31,255,192,0,0,31,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,252,0,0,1,255,252,0,0,1,255,252,0,255,254,0,3,128,255,254,0,3,128,255,254,0,3,128, + // 0x30cc ヌ + 204,48,30,33,132,48,6,0,28,0,63,252,28,0,63,252,28,0,63,252,3,255,192,28,3,255,192,28,3,255,192,28,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,3,254,7,0,3,254,7,0,3,254,7,0,0,1,255,0,0,1,255,0,0,1,255,0,0,0,63,0,0,0,63,0,0,0,63,0,0,1,192,224,0,1,192,224,0,1,192,224,0,14,0,28,0,14,0,28,0,14,0,28,3,240,0,28,3,240,0,28,3,240,0,28,252,0,0,0,252,0,0,0,252,0,0,0, + // 0x30cd ネ + 205,48,33,39,195,48,6,253,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,255,224,0,0,1,255,224,0,0,1,255,224,0,31,254,0,224,0,31,254,0,224,0,31,254,0,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,15,199,0,0,0,15,199,0,0,0,15,199,0,0,3,241,192,252,0,3,241,192,252,0,3,241,192,252,0,252,1,192,3,128,252,1,192,3,128,252,1,192,3,128,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + // 0x30ce ノ + 206,48,24,39,117,48,9,253,0,0,56,0,0,56,0,0,56,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0, + // 0x30cf ハ + 207,48,36,24,120,48,3,3,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,28,0,0,14,0,28,0,0,14,0,28,0,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x30d0 バ + 208,48,39,33,165,48,3,3,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,112,7,3,128,0,112,7,3,128,0,112,7,3,128,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,28,0,0,14,0,28,0,0,14,0,28,0,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x30d1 パ + 209,48,39,36,180,48,3,3,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,28,0,0,14,0,28,0,0,14,0,28,0,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x30d2 ヒ + 210,48,27,33,132,48,9,0,224,0,0,0,224,0,0,0,224,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,1,255,0,28,1,255,0,28,1,255,0,31,254,0,0,31,254,0,0,31,254,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,3,128,0,0,3,128,0,0,3,128,0,0,0,127,255,224,0,127,255,224,0,127,255,224, + // 0x30d3 ビ + 211,48,30,36,144,48,9,0,0,0,0,224,0,0,0,224,0,0,0,224,224,0,56,28,224,0,56,28,224,0,56,28,28,0,7,28,28,0,7,28,28,0,7,28,28,0,7,0,28,0,7,0,28,0,7,0,28,0,0,0,28,0,0,0,28,0,0,0,28,1,255,0,28,1,255,0,28,1,255,0,31,254,0,0,31,254,0,0,31,254,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,3,128,0,0,3,128,0,0,3,128,0,0,0,127,255,224,0,127,255,224,0,127,255,224, + // 0x30d4 ピ + 212,48,30,36,144,48,9,0,0,0,7,224,0,0,7,224,0,0,7,224,224,0,56,28,224,0,56,28,224,0,56,28,28,0,56,28,28,0,56,28,28,0,56,28,28,0,7,224,28,0,7,224,28,0,7,224,28,0,0,0,28,0,0,0,28,0,0,0,28,1,255,0,28,1,255,0,28,1,255,0,31,254,0,0,31,254,0,0,31,254,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,3,128,0,0,3,128,0,0,3,128,0,0,0,127,255,224,0,127,255,224,0,127,255,224, + // 0x30d5 フ + 213,48,27,33,132,48,9,0,224,1,255,224,224,1,255,224,224,1,255,224,31,254,0,224,31,254,0,224,31,254,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,1,192,0,0,1,192,0,0,1,192,0,0,14,0,0,0,14,0,0,0,14,0,0,0,112,0,0,0,112,0,0,0,112,0,0,3,128,0,0,3,128,0,0,3,128,0,0, + // 0x30d6 ブ + 214,48,36,39,195,48,6,0,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,224,112,0,0,0,224,112,0,0,0,224,112,224,15,255,28,112,224,15,255,28,112,224,15,255,28,112,31,240,7,28,0,31,240,7,28,0,31,240,7,28,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0, + // 0x30d7 プ + 215,48,36,39,195,48,6,0,0,0,0,31,128,0,0,0,31,128,0,0,0,31,128,0,0,0,224,112,0,0,0,224,112,0,0,0,224,112,224,15,255,224,112,224,15,255,224,112,224,15,255,224,112,31,240,7,31,128,31,240,7,31,128,31,240,7,31,128,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0, + // 0x30d8 ヘ + 216,48,39,18,90,48,3,9,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,56,0,0,0,14,56,0,0,0,14,56,0,0,224,112,7,0,0,224,112,7,0,0,224,112,7,0,0,31,128,0,224,0,31,128,0,224,0,31,128,0,224,0,0,0,0,31,128,0,0,0,31,128,0,0,0,31,128,0,0,0,0,126,0,0,0,0,126,0,0,0,0,126, + // 0x30d9 ベ + 217,48,39,27,135,48,3,9,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,7,3,128,0,0,7,3,128,0,0,7,3,128,0,0,0,227,128,0,0,0,227,128,0,0,0,227,128,0,1,192,224,0,0,1,192,224,0,0,1,192,224,0,0,14,56,0,0,0,14,56,0,0,0,14,56,0,0,224,112,7,0,0,224,112,7,0,0,224,112,7,0,0,31,128,0,224,0,31,128,0,224,0,31,128,0,224,0,0,0,0,31,128,0,0,0,31,128,0,0,0,31,128,0,0,0,0,126,0,0,0,0,126,0,0,0,0,126, + // 0x30da ペ + 218,48,39,27,135,48,3,9,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,7,3,128,0,0,7,3,128,0,0,7,3,128,0,0,7,3,128,0,0,7,3,128,0,0,7,3,128,0,1,192,252,0,0,1,192,252,0,0,1,192,252,0,0,14,56,0,0,0,14,56,0,0,0,14,56,0,0,224,112,7,0,0,224,112,7,0,0,224,112,7,0,0,31,128,0,224,0,31,128,0,224,0,31,128,0,224,0,0,0,0,31,128,0,0,0,31,128,0,0,0,31,128,0,0,0,0,126,0,0,0,0,126,0,0,0,0,126, + // 0x30db ホ + 219,48,30,39,156,48,6,253,0,14,0,0,0,14,0,0,0,14,0,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,224,1,255,252,224,1,255,252,224,1,255,252,31,255,192,0,31,255,192,0,31,255,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,199,0,0,1,199,0,0,1,199,0,3,129,192,224,3,129,192,224,3,129,192,224,3,129,192,28,3,129,192,28,3,129,192,28,28,1,192,28,28,1,192,28,28,1,192,28,224,1,192,0,224,1,192,0,224,1,192,0,0,15,192,0,0,15,192,0,0,15,192,0,0,1,192,0,0,1,192,0,0,1,192,0, + // 0x30dc ボ + 220,48,36,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,14,0,224,112,0,14,0,224,112,0,14,0,224,112,0,1,192,28,112,0,1,192,28,112,0,1,192,28,112,0,1,192,28,0,0,1,192,28,0,0,1,192,28,0,224,1,255,252,0,224,1,255,252,0,224,1,255,252,0,31,255,192,0,0,31,255,192,0,0,31,255,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,199,0,0,0,1,199,0,0,0,1,199,0,0,3,129,192,224,0,3,129,192,224,0,3,129,192,224,0,3,129,192,28,0,3,129,192,28,0,3,129,192,28,0,28,1,192,28,0,28,1,192,28,0,28,1,192,28,0,224,1,192,0,0,224,1,192,0,0,224,1,192,0,0,0,15,192,0,0,0,15,192,0,0,0,15,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + // 0x30dd ポ + 221,48,36,42,210,48,6,253,0,0,0,31,128,0,0,0,31,128,0,0,0,31,128,0,14,0,224,112,0,14,0,224,112,0,14,0,224,112,0,1,192,224,112,0,1,192,224,112,0,1,192,224,112,0,1,192,31,128,0,1,192,31,128,0,1,192,31,128,224,1,255,252,0,224,1,255,252,0,224,1,255,252,0,31,255,192,0,0,31,255,192,0,0,31,255,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,199,0,0,0,1,199,0,0,0,1,199,0,0,3,129,192,224,0,3,129,192,224,0,3,129,192,224,0,3,129,192,28,0,3,129,192,28,0,3,129,192,28,0,28,1,192,28,0,28,1,192,28,0,28,1,192,28,0,224,1,192,0,0,224,1,192,0,0,224,1,192,0,0,0,15,192,0,0,0,15,192,0,0,0,15,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + // 0x30de マ + 222,48,33,27,135,48,6,3,224,0,63,252,0,224,0,63,252,0,224,0,63,252,0,31,255,192,3,128,31,255,192,3,128,31,255,192,3,128,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,3,240,56,0,0,3,240,56,0,0,3,240,56,0,0,0,15,192,0,0,0,15,192,0,0,0,15,192,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0, + // 0x30df ミ + 223,48,24,39,117,48,9,253,3,128,0,3,128,0,3,128,0,0,126,0,0,126,0,0,126,0,0,1,248,0,1,248,0,1,248,0,0,7,0,0,7,0,0,7,28,0,0,28,0,0,28,0,0,3,240,0,3,240,0,3,240,0,0,15,192,0,15,192,0,15,192,0,0,56,0,0,56,0,0,56,224,0,0,224,0,0,224,0,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,1,248,0,1,248,0,1,248,0,0,7,0,0,7,0,0,7, + // 0x30e0 ム + 224,48,33,33,165,48,6,3,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,7,0,0,0,14,7,0,0,0,14,7,0,0,0,112,0,224,0,0,112,0,224,0,0,112,0,224,0,0,112,0,252,0,0,112,0,252,0,0,112,0,252,0,227,129,255,3,128,227,129,255,3,128,227,129,255,3,128,31,254,0,3,128,31,254,0,3,128,31,254,0,3,128, + // 0x30e1 メ + 225,48,30,39,156,48,6,253,0,0,7,0,0,0,7,0,0,0,7,0,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,126,0,224,0,126,0,224,0,126,0,224,0,1,255,0,0,1,255,0,0,1,255,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,56,224,0,0,56,224,0,0,56,224,0,0,56,28,0,0,56,28,0,0,56,28,0,1,192,0,0,1,192,0,0,1,192,0,0,14,0,0,0,14,0,0,0,14,0,0,3,240,0,0,3,240,0,0,3,240,0,0,252,0,0,0,252,0,0,0,252,0,0,0, + // 0x30e2 モ + 226,48,33,30,150,48,6,3,28,0,63,224,0,28,0,63,224,0,28,0,63,224,0,3,255,192,0,0,3,255,192,0,0,3,255,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,224,15,255,255,128,224,15,255,255,128,224,15,255,255,128,31,254,0,0,0,31,254,0,0,0,31,254,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,1,255,252,0,0,1,255,252,0,0,1,255,252,0, + // 0x30e3 ャ + 227,48,27,27,108,48,9,253,3,128,0,0,3,128,0,0,3,128,0,0,0,112,63,224,0,112,63,224,0,112,63,224,0,127,192,224,0,127,192,224,0,127,192,224,255,240,7,0,255,240,7,0,255,240,7,0,0,14,56,0,0,14,56,0,0,14,56,0,0,14,0,0,0,14,0,0,0,14,0,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0, + // 0x30e4 ヤ + 228,48,33,36,180,48,6,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,7,255,128,0,112,7,255,128,0,112,7,255,128,0,15,248,3,128,0,15,248,3,128,0,15,248,3,128,224,126,0,28,0,224,126,0,28,0,224,126,0,28,0,31,142,0,224,0,31,142,0,224,0,31,142,0,224,0,0,1,199,0,0,0,1,199,0,0,0,1,199,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0, + // 0x30e5 ュ + 229,48,27,18,72,48,9,3,0,15,248,0,0,15,248,0,0,15,248,0,31,240,56,0,31,240,56,0,31,240,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,1,192,0,0,1,192,0,0,1,192,0,0,15,255,0,0,15,255,0,0,15,255,0,255,240,0,224,255,240,0,224,255,240,0,224, + // 0x30e6 ユ + 230,48,33,21,105,48,6,6,28,1,255,0,0,28,1,255,0,0,28,1,255,0,0,3,254,7,0,0,3,254,7,0,0,3,254,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,255,252,0,0,1,255,252,0,0,1,255,252,0,255,254,0,3,128,255,254,0,3,128,255,254,0,3,128, + // 0x30e7 ョ + 231,48,21,24,72,48,12,0,0,127,248,0,127,248,0,127,248,255,128,56,255,128,56,255,128,56,0,0,56,0,0,56,0,0,56,0,127,248,0,127,248,0,127,248,255,129,192,255,129,192,255,129,192,0,1,192,0,1,192,0,1,192,0,127,192,0,127,192,0,127,192,255,128,56,255,128,56,255,128,56, + // 0x30e8 ヨ + 232,48,27,33,132,48,9,0,0,15,255,224,0,15,255,224,0,15,255,224,255,240,0,224,255,240,0,224,255,240,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,15,255,0,0,15,255,0,0,15,255,0,31,240,7,0,31,240,7,0,31,240,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,15,255,0,0,15,255,0,0,15,255,0,31,240,0,224,31,240,0,224,31,240,0,224, + // 0x30e9 ラ + 233,48,30,36,144,48,6,253,28,1,255,0,28,1,255,0,28,1,255,0,3,254,0,0,3,254,0,0,3,254,0,0,0,0,7,252,0,0,7,252,0,0,7,252,224,15,248,28,224,15,248,28,224,15,248,28,31,240,0,28,31,240,0,28,31,240,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,7,0,0,0,7,0,0,0,7,0,0,0,56,0,0,0,56,0,0,0,56,0,0,15,192,0,0,15,192,0,0,15,192,0,3,240,0,0,3,240,0,0,3,240,0,0, + // 0x30ea リ + 234,48,21,39,117,48,12,253,0,1,192,0,1,192,0,1,192,224,0,56,224,0,56,224,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0, + // 0x30eb ル + 235,48,33,33,165,48,6,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,3,128,56,0,0,3,128,56,0,0,3,128,56,0,0,0,112,56,0,0,0,112,56,0,0,0,112,56,0,0,0,112,56,0,0,0,112,56,0,0,0,112,56,0,0,0,112,56,3,128,0,112,56,3,128,0,112,56,3,128,0,112,56,3,128,0,112,56,3,128,0,112,56,3,128,0,112,56,28,0,0,112,56,28,0,0,112,56,28,0,3,128,56,28,0,3,128,56,28,0,3,128,56,28,0,3,128,56,224,0,3,128,56,224,0,3,128,56,224,0,28,0,63,0,0,28,0,63,0,0,28,0,63,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0, + // 0x30ec レ + 236,48,27,36,144,48,9,0,224,0,0,0,224,0,0,0,224,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,224,28,0,0,224,28,0,0,224,28,0,7,0,28,0,7,0,28,0,7,0,28,0,56,0,28,0,56,0,28,0,56,0,28,1,192,0,28,1,192,0,28,1,192,0,28,126,0,0,28,126,0,0,28,126,0,0,31,128,0,0,31,128,0,0,31,128,0,0, + // 0x30ed ロ + 237,48,30,27,108,48,6,3,224,1,255,252,224,1,255,252,224,1,255,252,31,254,0,28,31,254,0,28,31,254,0,28,28,0,0,28,28,0,0,28,28,0,0,28,28,0,0,28,28,0,0,28,28,0,0,28,3,128,0,224,3,128,0,224,3,128,0,224,3,128,0,224,3,128,0,224,3,128,0,224,3,129,255,224,3,129,255,224,3,129,255,224,3,254,0,28,3,254,0,28,3,254,0,28,3,128,0,0,3,128,0,0,3,128,0,0, + // 0x30ee ヮ + 238,48,27,24,96,48,9,253,224,1,255,224,224,1,255,224,224,1,255,224,31,254,0,224,31,254,0,224,31,254,0,224,28,0,7,0,28,0,7,0,28,0,7,0,3,128,7,0,3,128,7,0,3,128,7,0,3,128,56,0,3,128,56,0,3,128,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,1,192,0,0,1,192,0,0,1,192,0,0,14,0,0,0,14,0,0,0,14,0,0, + // 0x30ef ワ + 239,48,30,36,144,48,6,253,224,1,255,252,224,1,255,252,224,1,255,252,31,254,0,28,31,254,0,28,31,254,0,28,28,0,0,28,28,0,0,28,28,0,0,28,3,128,0,28,3,128,0,28,3,128,0,28,3,128,0,224,3,128,0,224,3,128,0,224,3,128,0,224,3,128,0,224,3,128,0,224,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,56,0,0,0,56,0,0,0,56,0,0,1,192,0,0,1,192,0,0,1,192,0,0,14,0,0,0,14,0,0,0,14,0,0,0,112,0,0,0,112,0,0,0,112,0,0, + // 0x30f0 ヰ + 240,48,33,39,195,48,6,253,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,255,252,0,0,1,255,252,0,0,1,255,252,0,31,254,56,0,0,31,254,56,0,0,31,254,56,0,0,3,128,56,0,0,3,128,56,0,0,3,128,56,0,0,0,112,56,0,0,0,112,56,0,0,0,112,56,0,0,0,113,255,252,0,0,113,255,252,0,0,113,255,252,0,255,254,56,3,128,255,254,56,3,128,255,254,56,3,128,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0, + // 0x30f1 ヱ + 241,48,33,24,120,48,6,6,0,1,255,224,0,0,1,255,224,0,0,1,255,224,0,31,254,0,224,0,31,254,0,224,0,31,254,0,224,0,0,14,7,0,0,0,14,7,0,0,0,14,7,0,0,0,1,248,0,0,0,1,248,0,0,0,1,248,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,255,252,0,0,1,255,252,0,0,1,255,252,0,255,254,0,3,128,255,254,0,3,128,255,254,0,3,128, + // 0x30f2 ヲ + 242,48,27,36,144,48,9,253,0,15,255,224,0,15,255,224,0,15,255,224,255,240,0,224,255,240,0,224,255,240,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,7,0,0,0,7,0,0,0,7,0,0,15,255,0,0,15,255,0,0,15,255,0,31,240,7,0,31,240,7,0,31,240,7,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,1,192,0,0,1,192,0,0,1,192,0,0,14,0,0,0,14,0,0,0,14,0,0,3,240,0,0,3,240,0,0,3,240,0,0,252,0,0,0,252,0,0,0,252,0,0,0, + // 0x30f3 ン + 243,48,30,30,120,48,9,0,252,0,0,0,252,0,0,0,252,0,0,0,3,128,0,28,3,128,0,28,3,128,0,28,0,112,0,28,0,112,0,28,0,112,0,28,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,0,224,0,0,7,0,0,0,7,0,0,0,7,0,0,0,56,0,0,0,56,0,0,0,56,0,0,1,192,0,0,1,192,0,0,1,192,0,224,126,0,0,224,126,0,0,224,126,0,0,31,128,0,0,31,128,0,0,31,128,0,0, + // 0x30f4 ヴ + 244,48,39,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,14,0,28,14,0,14,0,28,14,0,14,0,28,14,0,1,192,3,142,0,1,192,3,142,0,1,192,3,142,0,1,192,3,128,0,1,192,3,128,0,1,192,3,128,224,1,255,252,0,224,1,255,252,0,224,1,255,252,0,31,254,0,28,0,31,254,0,28,0,31,254,0,28,0,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0, + // 0x30f5 ヵ + 245,48,24,27,81,48,9,253,0,112,0,0,112,0,0,112,0,0,14,0,0,14,0,0,14,0,224,15,255,224,15,255,224,15,255,31,240,7,31,240,7,31,240,7,0,112,7,0,112,7,0,112,7,0,112,7,0,112,7,0,112,7,3,128,7,3,128,7,3,128,7,28,1,248,28,1,248,28,1,248,224,0,56,224,0,56,224,0,56, + // 0x30f6 ヶ + 246,48,24,27,81,48,9,253,28,0,0,28,0,0,28,0,0,3,128,0,3,128,0,3,128,0,3,128,63,3,128,63,3,128,63,3,255,192,3,255,192,3,255,192,28,1,192,28,1,192,28,1,192,224,1,192,224,1,192,224,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0, + // 0x30f7 ヷ + 247,48,39,45,225,48,6,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,224,1,255,252,0,224,1,255,252,0,224,1,255,252,0,31,254,0,28,0,31,254,0,28,0,31,254,0,28,0,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0, + // 0x30f8 ヸ + 248,48,36,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,0,56,28,0,0,0,56,28,0,0,0,56,28,0,0,0,56,3,128,0,0,56,3,128,0,0,56,3,128,0,1,255,252,0,0,1,255,252,0,0,1,255,252,0,31,254,56,0,0,31,254,56,0,0,31,254,56,0,0,3,128,56,0,0,3,128,56,0,0,3,128,56,0,0,0,112,56,0,0,0,112,56,0,0,0,112,56,0,0,0,113,255,252,0,0,113,255,252,0,0,113,255,252,0,255,254,56,3,128,255,254,56,3,128,255,254,56,3,128,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0, + // 0x30f9 ヹ + 249,48,36,33,165,48,6,6,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,1,255,227,128,0,1,255,227,128,0,1,255,227,128,31,254,0,224,0,31,254,0,224,0,31,254,0,224,0,0,14,7,0,0,0,14,7,0,0,0,14,7,0,0,0,1,248,0,0,0,1,248,0,0,0,1,248,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,255,252,0,0,1,255,252,0,0,1,255,252,0,255,254,0,3,128,255,254,0,3,128,255,254,0,3,128, + // 0x30fa ヺ + 250,48,36,45,225,48,9,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,15,255,227,128,0,15,255,227,128,0,15,255,227,128,255,240,0,224,0,255,240,0,224,0,255,240,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,15,255,0,0,0,15,255,0,0,0,15,255,0,0,31,240,7,0,0,31,240,7,0,0,31,240,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,252,0,0,0,0,252,0,0,0,0,252,0,0,0,0, + // 0x30fb ・ + 251,48,12,12,24,48,15,12,31,128,31,128,31,128,255,240,255,240,255,240,255,240,255,240,255,240,31,128,31,128,31,128, + // 0x30fc ー + 252,48,36,6,30,48,3,15,224,0,7,255,240,224,0,7,255,240,224,0,7,255,240,31,255,248,0,0,31,255,248,0,0,31,255,248,0,0, + // 0x30fd ヽ + 253,48,21,15,45,48,12,12,252,0,0,252,0,0,252,0,0,3,240,0,3,240,0,3,240,0,0,14,0,0,14,0,0,14,0,0,1,192,0,1,192,0,1,192,0,0,56,0,0,56,0,0,56, + // 0x30fe ヾ + 254,48,24,21,63,48,12,12,0,0,56,0,0,56,0,0,56,0,14,7,0,14,7,0,14,7,252,1,192,252,1,192,252,1,192,3,240,0,3,240,0,3,240,0,0,14,0,0,14,0,0,14,0,0,1,192,0,1,192,0,1,192,0,0,56,0,0,56,0,0,56, + // 0x30ff ヿ + 255,48,30,39,156,48,6,253,224,1,255,224,224,1,255,224,224,1,255,224,31,254,0,28,31,254,0,28,31,254,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28, + // 0x4eee 仮 + 238,78,45,48,32,48,0,250,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,3,255,192,0,14,0,3,255,192,0,14,0,3,255,192,0,14,63,252,0,0,0,14,63,252,0,0,0,14,63,252,0,0,0,112,56,0,0,0,0,112,56,0,0,0,0,112,56,0,0,0,0,112,56,0,0,0,0,112,56,0,0,0,0,112,56,0,0,0,3,240,56,0,0,0,3,240,56,0,0,0,3,240,56,0,0,0,3,240,63,255,254,0,3,240,63,255,254,0,3,240,63,255,254,0,28,112,56,224,14,0,28,112,56,224,14,0,28,112,56,224,14,0,224,112,56,224,14,0,224,112,56,224,14,0,224,112,56,224,14,0,0,112,56,224,14,0,0,112,56,224,14,0,0,112,56,224,14,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,113,192,28,112,0,0,113,192,28,112,0,0,113,192,28,112,0,0,113,192,224,14,0,0,113,192,224,14,0,0,113,192,224,14,0,0,126,7,0,1,248,0,126,7,0,1,248,0,126,7,0,1,248, + // 0x540d 名 + 13,84,39,48,240,48,0,250,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,255,255,240,0,1,255,255,240,0,1,255,255,240,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,113,192,3,128,0,113,192,3,128,0,113,192,3,128,31,128,56,28,0,31,128,56,28,0,31,128,56,28,0,0,0,56,224,0,0,0,56,224,0,0,0,56,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,1,248,0,0,0,1,248,0,0,0,1,248,0,0,0,127,255,255,254,0,127,255,255,254,0,127,255,255,254,255,142,0,0,14,255,142,0,0,14,255,142,0,0,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,15,255,255,254,0,15,255,255,254,0,15,255,255,254,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14, + // 0x5b9a 定 + 154,91,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,3,142,7,0,0,0,3,142,7,0,0,0,3,142,7,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0, + // 0x7247 片 + 71,114,39,48,240,48,3,250,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,252,0,3,255,255,252,0,3,255,255,252,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0, + // 0x793a 示 + 58,121,45,45,14,48,0,250,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,28,0,7,0,0,56,28,0,7,0,0,56,28,0,7,0,0,56,224,0,7,0,0,56,224,0,7,0,0,56,224,0,7,0,0,56,0,1,199,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x7fa9 義 + 169,127,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,3,255,192,28,112,0,3,255,192,28,112,0,3,255,192,28,112,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,15,248,28,112,0,0,15,248,28,112,0,0,15,248,28,112,0,31,254,0,3,129,192,31,254,0,3,129,192,31,254,0,3,129,192,0,14,0,28,113,192,0,14,0,28,113,192,0,14,0,28,113,192,0,126,7,224,15,192,0,126,7,224,15,192,0,126,7,224,15,192, + // 0x8868 表 + 104,136,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,199,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,126,0,28,112,0,0,126,0,28,112,0,0,126,0,28,112,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,252,14,7,0,126,0,252,14,7,0,126,0,252,14,7,0,126,0,0,14,56,0,1,248,0,14,56,0,1,248,0,14,56,0,1,248,0,15,192,0,0,0,0,15,192,0,0,0,0,15,192,0,0,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Korean_30.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Korean_30.cpp new file mode 100644 index 0000000000..be59f22fb8 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Korean_30.cpp @@ -0,0 +1,252 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// Unifont Korean 48pt, capital 'A' height: 30px, width: 100%, range: 0xac70-0xd788, glyphs: 110 +extern const uint8_t Unifont_Korean_30[23235] = { + 161,30,112,172,136,215,42,250, // unifont_t + // 0xac70 거 + 112,172,36,39,195,48,9,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,192,0,112,255,255,192,0,112,255,255,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,255,240,0,1,192,255,240,0,1,192,255,240,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,112,0,0,112,0,112,0,0,112,0,112,0,0,112,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,252,0,0,0,112,252,0,0,0,112,252,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112, + // 0xace0 고 + 224,172,39,30,150,48,3,0,31,255,255,255,128,31,255,255,255,128,31,255,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,1,192,3,128,0,1,192,3,128,0,1,192,3,128,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xadf8 그 + 248,173,39,24,120,48,3,6,31,255,255,255,128,31,255,255,255,128,31,255,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xae09 급 + 9,174,39,39,195,48,3,253,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128, + // 0xae30 기 + 48,174,30,39,156,48,9,253,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,255,255,192,28,255,255,192,28,255,255,192,28,0,1,192,28,0,1,192,28,0,1,192,28,0,1,192,28,0,1,192,28,0,1,192,28,0,1,192,28,0,1,192,28,0,1,192,28,0,14,0,28,0,14,0,28,0,14,0,28,0,14,0,28,0,14,0,28,0,14,0,28,0,112,0,28,0,112,0,28,0,112,0,28,3,128,0,28,3,128,0,28,3,128,0,28,252,0,0,28,252,0,0,28,252,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28, + // 0xae45 깅 + 69,174,33,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,255,254,0,3,128,255,254,0,3,128,255,254,0,3,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,252,0,0,3,128,252,0,0,3,128,252,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,252,0,0,15,255,252,0,0,15,255,252,0,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,15,255,252,0,0,15,255,252,0,0,15,255,252,0, + // 0xb044 끄 + 68,176,39,24,120,48,3,6,31,255,199,255,240,31,255,199,255,240,31,255,199,255,240,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xb0b4 내 + 180,176,42,39,234,48,3,253,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,255,192,224,0,0,3,255,192,224,0,0,3,255,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,255,255,255,3,129,192,255,255,255,3,129,192,255,255,255,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192, + // 0xb178 노 + 120,177,39,36,180,48,3,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xb204 누 + 4,178,33,39,195,48,6,253,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + // 0xb274 뉴 + 116,178,39,39,195,48,3,253,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0, + // 0xb2c8 니 + 200,178,36,39,195,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,255,255,255,0,112,255,255,255,0,112,255,255,255,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112, + // 0xb2e4 다 + 228,178,42,39,234,48,3,253,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,255,255,255,3,128,0,255,255,255,3,128,0,255,255,255,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,255,192,224,0,0,3,255,192,224,0,0,3,255,192,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,255,255,255,3,128,0,255,255,255,3,128,0,255,255,255,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0xb2f9 당 + 249,178,42,42,252,48,3,253,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,127,192,224,0,0,0,127,192,224,0,0,0,127,192,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,128,0,0,1,255,255,128,0,0,1,255,255,128,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,1,255,255,128,0,0,1,255,255,128,0,0,1,255,255,128,0, + // 0xb3c4 도 + 196,179,39,36,180,48,3,0,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xb3cc 돌 + 204,179,39,39,195,48,3,253,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128, + // 0xb3d9 동 + 217,179,39,39,195,48,3,253,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,224,0,0,15,255,224,0,0,15,255,224,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,15,255,224,0,0,15,255,224,0,0,15,255,224,0, + // 0xb418 되 + 24,180,36,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,255,0,112,255,255,255,0,112,255,255,255,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,255,255,255,0,112,255,255,255,0,112,255,255,255,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,255,255,255,252,112,255,255,255,252,112,255,255,255,252,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112, + // 0xb41c 된 + 28,180,36,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,31,255,255,0,112,31,255,255,0,112,31,255,255,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,31,255,255,0,112,31,255,255,0,112,31,255,255,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,255,255,255,252,112,255,255,255,252,112,255,255,255,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,127,255,255,240,0,127,255,255,240,0,127,255,255,240, + // 0xb428 됨 + 40,180,36,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,31,255,255,0,112,31,255,255,0,112,31,255,255,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,31,255,255,0,112,31,255,255,0,112,31,255,255,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,255,255,255,252,112,255,255,255,252,112,255,255,255,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,240,0,1,255,255,240,0,1,255,255,240,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,255,255,240,0,1,255,255,240,0,1,255,255,240, + // 0xb4a4 뒤 + 164,180,36,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,255,224,112,255,255,255,224,112,255,255,255,224,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,255,255,255,224,112,255,255,255,224,112,255,255,255,224,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,255,252,112,255,255,255,252,112,255,255,255,252,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112, + // 0xb4dc 드 + 220,180,39,30,150,48,3,6,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xb514 디 + 20,181,36,39,195,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,255,0,112,255,255,255,0,112,255,255,255,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,255,255,255,0,112,255,255,255,0,112,255,255,255,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112, + // 0xb77c 라 + 124,183,39,39,195,48,6,253,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,255,255,248,28,0,255,255,248,28,0,255,255,248,28,0,0,0,56,28,0,0,0,56,28,0,0,0,56,28,0,0,0,56,28,0,0,0,56,28,0,0,0,56,28,0,255,255,248,31,254,255,255,248,31,254,255,255,248,31,254,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,255,255,248,28,0,255,255,248,28,0,255,255,248,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0, + // 0xb7ec 러 + 236,183,39,39,195,48,6,253,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,255,255,248,0,14,255,255,248,0,14,255,255,248,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,255,255,248,31,254,255,255,248,31,254,255,255,248,31,254,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,255,255,248,0,14,255,255,248,0,14,255,255,248,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14, + // 0xb808 레 + 8,184,39,39,195,48,6,253,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,255,255,248,3,142,255,255,248,3,142,255,255,248,3,142,0,0,56,3,142,0,0,56,3,142,0,0,56,3,142,0,0,56,3,142,0,0,56,3,142,0,0,56,3,142,255,255,248,255,142,255,255,248,255,142,255,255,248,255,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,255,255,248,3,142,255,255,248,3,142,255,255,248,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142, + // 0xb825 력 + 37,184,33,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,255,255,192,3,128,255,255,192,3,128,255,255,192,3,128,0,1,192,255,128,0,1,192,255,128,0,1,192,255,128,255,255,192,3,128,255,255,192,3,128,255,255,192,3,128,224,0,0,255,128,224,0,0,255,128,224,0,0,255,128,255,255,192,3,128,255,255,192,3,128,255,255,192,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,128,0,127,255,255,128,0,127,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128, + // 0xb85c 로 + 92,184,39,36,180,48,3,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xb8cc 료 + 204,184,39,36,180,48,3,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xb974 르 + 116,185,39,30,150,48,3,6,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xb9ac 리 + 172,185,33,39,195,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,255,255,248,3,128,255,255,248,3,128,255,255,248,3,128,0,0,56,3,128,0,0,56,3,128,0,0,56,3,128,0,0,56,3,128,0,0,56,3,128,0,0,56,3,128,255,255,248,3,128,255,255,248,3,128,255,255,248,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,255,255,248,3,128,255,255,248,3,128,255,255,248,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128, + // 0xb9b0 린 + 176,185,33,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,255,255,192,3,128,255,255,192,3,128,255,255,192,3,128,0,1,192,3,128,0,1,192,3,128,0,1,192,3,128,255,255,192,3,128,255,255,192,3,128,255,255,192,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,255,255,192,3,128,255,255,192,3,128,255,255,192,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,31,255,255,255,128,31,255,255,255,128,31,255,255,255,128, + // 0xb9bd 립 + 189,185,33,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,255,255,192,3,128,255,255,192,3,128,255,255,192,3,128,0,1,192,3,128,0,1,192,3,128,0,1,192,3,128,255,255,192,3,128,255,255,192,3,128,255,255,192,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,255,255,192,3,128,255,255,192,3,128,255,255,192,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,15,255,255,128,0,15,255,255,128,0,15,255,255,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,15,255,255,128,0,15,255,255,128,0,15,255,255,128, + // 0xb9c1 링 + 193,185,33,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,255,255,192,3,128,255,255,192,3,128,255,255,192,3,128,0,1,192,3,128,0,1,192,3,128,0,1,192,3,128,255,255,192,3,128,255,255,192,3,128,255,255,192,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,255,255,192,3,128,255,255,192,3,128,255,255,192,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,252,0,0,15,255,252,0,0,15,255,252,0,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,15,255,252,0,0,15,255,252,0,0,15,255,252,0, + // 0xba48 멈 + 72,186,36,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,192,0,112,255,255,192,0,112,255,255,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,31,240,224,1,192,31,240,224,1,192,31,240,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,255,255,192,0,112,255,255,192,0,112,255,255,192,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,240,0,1,255,255,240,0,1,255,255,240,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,255,255,240,0,1,255,255,240,0,1,255,255,240, + // 0xba54 메 + 84,186,42,39,234,48,3,253,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,255,255,255,0,113,192,255,255,255,0,113,192,255,255,255,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,31,241,192,224,0,7,31,241,192,224,0,7,31,241,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,255,255,255,0,113,192,255,255,255,0,113,192,255,255,255,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192, + // 0xba74 면 + 116,186,36,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,192,0,112,255,255,192,0,112,255,255,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,31,240,224,1,192,31,240,224,1,192,31,240,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,31,240,224,1,192,31,240,224,1,192,31,240,255,255,192,0,112,255,255,192,0,112,255,255,192,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,240,3,255,255,255,240,3,255,255,255,240, + // 0xbaa8 모 + 168,186,39,36,180,48,3,0,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xbabb 못 + 187,186,39,42,210,48,3,253,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,199,0,0,0,1,199,0,0,0,1,199,0,0,0,126,0,224,0,0,126,0,224,0,0,126,0,224,0, + // 0xbbf8 미 + 248,187,36,39,195,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,255,0,112,255,255,255,0,112,255,255,255,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,255,255,255,0,112,255,255,255,0,112,255,255,255,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112, + // 0xbc00 밀 + 0,188,36,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,192,0,112,255,255,192,0,112,255,255,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,255,255,192,0,112,255,255,192,0,112,255,255,192,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,240,0,15,255,255,240,0,15,255,255,240,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,15,255,255,240,0,15,255,255,240,0,15,255,255,240,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,15,255,255,240,0,15,255,255,240,0,15,255,255,240, + // 0xbc14 바 + 20,188,39,39,195,48,6,253,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,255,255,248,31,254,255,255,248,31,254,255,255,248,31,254,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,255,255,248,28,0,255,255,248,28,0,255,255,248,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0, + // 0xbc84 버 + 132,188,39,39,195,48,6,253,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,255,255,248,31,254,255,255,248,31,254,255,255,248,31,254,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,255,255,248,0,14,255,255,248,0,14,255,255,248,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14, + // 0xbca0 베 + 160,188,39,39,195,48,6,253,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,255,255,248,255,142,255,255,248,255,142,255,255,248,255,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,255,255,248,3,142,255,255,248,3,142,255,255,248,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142, + // 0xbca8 벨 + 168,188,36,42,210,48,3,253,0,0,0,28,112,0,0,0,28,112,0,0,0,28,112,0,0,0,28,112,0,0,0,28,112,0,0,0,28,112,224,1,192,28,112,224,1,192,28,112,224,1,192,28,112,224,1,192,28,112,224,1,192,28,112,224,1,192,28,112,255,255,199,252,112,255,255,199,252,112,255,255,199,252,112,224,1,192,28,112,224,1,192,28,112,224,1,192,28,112,255,255,192,28,112,255,255,192,28,112,255,255,192,28,112,0,0,0,28,112,0,0,0,28,112,0,0,0,28,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,240,0,15,255,255,240,0,15,255,255,240,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,15,255,255,240,0,15,255,255,240,0,15,255,255,240,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,15,255,255,240,0,15,255,255,240,0,15,255,255,240, + // 0xbcf8 본 + 248,188,39,42,210,48,3,253,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128, + // 0xbe44 비 + 68,190,33,39,195,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,255,255,248,3,128,255,255,248,3,128,255,255,248,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,255,255,248,3,128,255,255,248,3,128,255,255,248,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128, + // 0xc0ac 사 + 172,192,42,39,234,48,3,253,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,255,192,0,14,0,3,255,192,0,14,0,3,255,192,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,252,0,7,3,128,0,252,0,7,3,128,0,252,0,7,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0xc0bd 삽 + 189,192,42,42,252,48,3,253,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,126,0,0,127,192,0,126,0,0,127,192,0,126,0,0,127,192,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,252,0,56,0,112,0,252,0,56,0,112,0,252,0,56,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,255,255,240,0,0,1,255,255,240,0,0,1,255,255,240,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,255,255,240,0,0,1,255,255,240,0,0,1,255,255,240,0, + // 0xc0c8 새 + 200,192,42,39,234,48,3,253,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,255,192,0,14,0,3,255,192,0,14,0,3,255,192,0,113,192,3,129,192,0,113,192,3,129,192,0,113,192,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,252,0,7,3,129,192,252,0,7,3,129,192,252,0,7,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192, + // 0xc124 설 + 36,193,36,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,126,0,31,240,0,126,0,31,240,0,126,0,31,240,3,129,192,0,112,3,129,192,0,112,3,129,192,0,112,252,0,56,0,112,252,0,56,0,112,252,0,56,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,240,0,15,255,255,240,0,15,255,255,240,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,15,255,255,240,0,15,255,255,240,0,15,255,255,240,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,15,255,255,240,0,15,255,255,240,0,15,255,255,240, + // 0xc18c 소 + 140,193,39,36,180,48,3,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,199,0,0,0,1,199,0,0,0,1,199,0,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,3,240,0,28,0,3,240,0,28,0,3,240,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xc18d 속 + 141,193,39,42,210,48,3,253,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,63,0,0,0,0,63,0,0,0,0,63,0,0,0,1,192,224,0,0,1,192,224,0,0,1,192,224,0,0,126,0,28,0,0,126,0,28,0,0,126,0,28,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128, + // 0xc2a4 스 + 164,194,39,30,150,48,3,6,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,199,0,0,0,1,199,0,0,0,1,199,0,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,3,240,0,28,0,3,240,0,28,0,3,240,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xc2ac 슬 + 172,194,39,42,210,48,3,253,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,63,0,0,0,0,63,0,0,0,0,63,0,0,0,1,192,224,0,0,1,192,224,0,0,1,192,224,0,0,126,0,28,0,0,126,0,28,0,0,126,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128, + // 0xc2dc 시 + 220,194,36,39,195,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,113,192,0,112,0,113,192,0,112,0,113,192,0,112,3,128,56,0,112,3,128,56,0,112,3,128,56,0,112,252,0,7,0,112,252,0,7,0,112,252,0,7,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112, + // 0xc2dd 식 + 221,194,36,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,126,0,0,112,0,126,0,0,112,0,126,0,0,112,3,129,192,0,112,3,129,192,0,112,3,129,192,0,112,252,0,56,0,112,252,0,56,0,112,252,0,56,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,240,0,15,255,255,240,0,15,255,255,240,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112, + // 0xc5b4 어 + 180,197,42,39,234,48,3,253,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,3,255,192,0,1,192,3,255,192,0,1,192,3,255,192,0,1,192,28,0,56,0,1,192,28,0,56,0,1,192,28,0,56,0,1,192,224,0,7,0,1,192,224,0,7,0,1,192,224,0,7,0,1,192,224,0,7,3,255,192,224,0,7,3,255,192,224,0,7,3,255,192,224,0,7,0,1,192,224,0,7,0,1,192,224,0,7,0,1,192,28,0,56,0,1,192,28,0,56,0,1,192,28,0,56,0,1,192,3,255,192,0,1,192,3,255,192,0,1,192,3,255,192,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192, + // 0xc5c6 없 + 198,197,39,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,31,254,0,3,128,31,254,0,3,128,31,254,0,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,255,128,224,1,192,255,128,224,1,192,255,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,31,254,0,3,128,31,254,0,3,128,31,254,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,255,255,192,3,128,255,255,192,3,128,255,255,192,3,128,224,1,192,28,112,224,1,192,28,112,224,1,192,28,112,255,255,199,224,14,255,255,199,224,14,255,255,199,224,14, + // 0xc5d1 엑 + 209,197,33,42,210,48,6,253,0,0,0,227,128,0,0,0,227,128,0,0,0,227,128,31,254,0,227,128,31,254,0,227,128,31,254,0,227,128,224,1,192,227,128,224,1,192,227,128,224,1,192,227,128,224,1,192,227,128,224,1,192,227,128,224,1,192,227,128,224,1,255,227,128,224,1,255,227,128,224,1,255,227,128,224,1,192,227,128,224,1,192,227,128,224,1,192,227,128,31,254,0,227,128,31,254,0,227,128,31,254,0,227,128,0,0,0,227,128,0,0,0,227,128,0,0,0,227,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,128,0,127,255,255,128,0,127,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128, + // 0xc5d4 엔 + 212,197,33,42,210,48,6,253,0,0,0,227,128,0,0,0,227,128,0,0,0,227,128,31,254,0,227,128,31,254,0,227,128,31,254,0,227,128,224,1,192,227,128,224,1,192,227,128,224,1,192,227,128,224,1,192,227,128,224,1,192,227,128,224,1,192,227,128,224,1,255,227,128,224,1,255,227,128,224,1,255,227,128,224,1,192,227,128,224,1,192,227,128,224,1,192,227,128,31,254,0,227,128,31,254,0,227,128,31,254,0,227,128,0,0,0,227,128,0,0,0,227,128,0,0,0,227,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128, + // 0xc5f4 열 + 244,197,33,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,31,254,0,3,128,31,254,0,3,128,31,254,0,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,255,128,224,1,192,255,128,224,1,192,255,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,255,128,224,1,192,255,128,224,1,192,255,128,31,254,0,3,128,31,254,0,3,128,31,254,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,128,0,127,255,255,128,0,127,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,127,255,255,128,0,127,255,255,128,0,127,255,255,128,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,127,255,255,128,0,127,255,255,128,0,127,255,255,128, + // 0xc608 예 + 8,198,42,39,234,48,3,253,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,3,255,192,0,113,192,3,255,192,0,113,192,3,255,192,0,113,192,28,0,56,0,113,192,28,0,56,0,113,192,28,0,56,0,113,192,224,0,7,31,241,192,224,0,7,31,241,192,224,0,7,31,241,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,28,0,56,31,241,192,28,0,56,31,241,192,28,0,56,31,241,192,3,255,192,0,113,192,3,255,192,0,113,192,3,255,192,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192, + // 0xc624 오 + 36,198,39,39,195,48,3,0,0,15,255,224,0,0,15,255,224,0,0,15,255,224,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,15,255,224,0,0,15,255,224,0,0,15,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xc628 온 + 40,198,39,42,210,48,3,253,0,15,255,224,0,0,15,255,224,0,0,15,255,224,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,15,255,224,0,0,15,255,224,0,0,15,255,224,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128, + // 0xc644 완 + 68,198,42,42,252,48,3,253,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,3,255,248,0,112,0,3,255,248,0,112,0,3,255,248,0,112,0,28,0,7,0,112,0,28,0,7,0,112,0,28,0,7,0,112,0,28,0,7,0,127,192,28,0,7,0,127,192,28,0,7,0,127,192,28,0,7,0,112,0,28,0,7,0,112,0,28,0,7,0,112,0,3,255,248,0,112,0,3,255,248,0,112,0,3,255,248,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,255,255,255,252,112,0,255,255,255,252,112,0,255,255,255,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0, + // 0xc6d0 원 + 208,198,36,45,225,48,3,253,3,255,248,0,112,3,255,248,0,112,3,255,248,0,112,28,0,7,0,112,28,0,7,0,112,28,0,7,0,112,28,0,7,0,112,28,0,7,0,112,28,0,7,0,112,28,0,7,0,112,28,0,7,0,112,28,0,7,0,112,3,255,248,0,112,3,255,248,0,112,3,255,248,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,255,252,112,255,255,255,252,112,255,255,255,252,112,0,1,192,255,240,0,1,192,255,240,0,1,192,255,240,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,240,3,255,255,255,240,3,255,255,255,240, + // 0xc704 위 + 4,199,36,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,3,255,248,0,112,3,255,248,0,112,3,255,248,0,112,28,0,7,0,112,28,0,7,0,112,28,0,7,0,112,224,0,0,224,112,224,0,0,224,112,224,0,0,224,112,224,0,0,224,112,224,0,0,224,112,224,0,0,224,112,224,0,0,224,112,224,0,0,224,112,224,0,0,224,112,28,0,7,0,112,28,0,7,0,112,28,0,7,0,112,3,255,248,0,112,3,255,248,0,112,3,255,248,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,255,252,112,255,255,255,252,112,255,255,255,252,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112, + // 0xc73c 으 + 60,199,39,33,165,48,3,6,0,15,255,224,0,0,15,255,224,0,0,15,255,224,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,15,255,224,0,0,15,255,224,0,0,15,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xc74c 음 + 76,199,39,42,210,48,3,253,0,15,255,224,0,0,15,255,224,0,0,15,255,224,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,15,255,224,0,0,15,255,224,0,0,15,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128, + // 0xc774 이 + 116,199,36,39,195,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,3,255,192,0,112,3,255,192,0,112,3,255,192,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,224,0,7,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,3,255,192,0,112,3,255,192,0,112,3,255,192,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112, + // 0xc77c 일 + 124,199,33,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,31,254,0,3,128,31,254,0,3,128,31,254,0,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,31,254,0,3,128,31,254,0,3,128,31,254,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,128,0,127,255,255,128,0,127,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,127,255,255,128,0,127,255,255,128,0,127,255,255,128,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,127,255,255,128,0,127,255,255,128,0,127,255,255,128, + // 0xc77d 읽 + 125,199,33,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,31,254,0,3,128,31,254,0,3,128,31,254,0,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,31,254,0,3,128,31,254,0,3,128,31,254,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,63,255,128,255,254,63,255,128,255,254,63,255,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,255,254,0,3,128,255,254,0,3,128,255,254,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,255,254,0,3,128,255,254,0,3,128,255,254,0,3,128, + // 0xc785 입 + 133,199,33,42,210,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,31,254,0,3,128,31,254,0,3,128,31,254,0,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,31,254,0,3,128,31,254,0,3,128,31,254,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,15,255,255,128,0,15,255,255,128,0,15,255,255,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,15,255,255,128,0,15,255,255,128,0,15,255,255,128, + // 0xc790 자 + 144,199,39,39,195,48,6,253,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,255,255,248,28,0,255,255,248,28,0,255,255,248,28,0,0,1,192,28,0,0,1,192,28,0,0,1,192,28,0,0,1,192,28,0,0,1,192,28,0,0,1,192,28,0,0,14,0,31,254,0,14,0,31,254,0,14,0,31,254,0,126,0,28,0,0,126,0,28,0,0,126,0,28,0,3,129,192,28,0,3,129,192,28,0,3,129,192,28,0,252,0,56,28,0,252,0,56,28,0,252,0,56,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0, + // 0xc791 작 + 145,199,42,42,252,48,3,253,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,127,192,0,14,0,0,127,192,0,14,0,0,127,192,3,241,192,0,112,0,3,241,192,0,112,0,3,241,192,0,112,0,252,0,56,0,112,0,252,0,56,0,112,0,252,0,56,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0, + // 0xc798 잘 + 152,199,42,42,252,48,3,253,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,127,192,0,14,0,0,127,192,0,14,0,0,127,192,3,241,192,0,112,0,3,241,192,0,112,0,3,241,192,0,112,0,252,0,56,0,112,0,252,0,56,0,112,0,252,0,56,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0, + // 0xc7a5 장 + 165,199,42,42,252,48,3,253,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,127,192,0,14,0,0,127,192,0,14,0,0,127,192,3,241,192,0,112,0,3,241,192,0,112,0,3,241,192,0,112,0,252,0,56,0,112,0,252,0,56,0,112,0,252,0,56,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,128,0,0,1,255,255,128,0,0,1,255,255,128,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,1,255,255,128,0,0,1,255,255,128,0,0,1,255,255,128,0, + // 0xc7ac 재 + 172,199,39,39,195,48,6,253,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,255,255,248,28,14,255,255,248,28,14,255,255,248,28,14,0,1,192,28,14,0,1,192,28,14,0,1,192,28,14,0,1,192,28,14,0,1,192,28,14,0,1,192,28,14,0,14,0,31,254,0,14,0,31,254,0,14,0,31,254,0,126,0,28,14,0,126,0,28,14,0,126,0,28,14,3,129,192,28,14,3,129,192,28,14,3,129,192,28,14,252,0,56,28,14,252,0,56,28,14,252,0,56,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14,0,0,0,28,14, + // 0xc800 저 + 0,200,39,39,195,48,6,253,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,255,255,248,0,14,255,255,248,0,14,255,255,248,0,14,0,1,192,0,14,0,1,192,0,14,0,1,192,0,14,0,1,192,0,14,0,1,192,0,14,0,1,192,0,14,0,14,0,31,254,0,14,0,31,254,0,14,0,31,254,0,126,0,0,14,0,126,0,0,14,0,126,0,0,14,3,129,192,0,14,3,129,192,0,14,3,129,192,0,14,252,0,56,0,14,252,0,56,0,14,252,0,56,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14, + // 0xc804 전 + 4,200,36,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,192,0,112,255,255,192,0,112,255,255,192,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,31,240,0,14,0,31,240,0,14,0,31,240,3,241,192,0,112,3,241,192,0,112,3,241,192,0,112,252,0,56,0,112,252,0,56,0,112,252,0,56,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,240,3,255,255,255,240,3,255,255,255,240, + // 0xc815 정 + 21,200,36,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,192,0,112,255,255,192,0,112,255,255,192,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,31,240,0,14,0,31,240,0,14,0,31,240,3,241,192,0,112,3,241,192,0,112,3,241,192,0,112,252,0,56,0,112,252,0,56,0,112,252,0,56,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,128,0,1,255,255,128,0,1,255,255,128,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,1,255,255,128,0,1,255,255,128,0,1,255,255,128, + // 0xc81c 제 + 28,200,39,39,195,48,6,253,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,255,255,248,3,142,255,255,248,3,142,255,255,248,3,142,0,1,192,3,142,0,1,192,3,142,0,1,192,3,142,0,1,192,3,142,0,1,192,3,142,0,1,192,3,142,0,14,0,255,142,0,14,0,255,142,0,14,0,255,142,0,126,0,3,142,0,126,0,3,142,0,126,0,3,142,3,129,192,3,142,3,129,192,3,142,3,129,192,3,142,252,0,56,3,142,252,0,56,3,142,252,0,56,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142, + // 0xc8fd 죽 + 253,200,39,42,210,48,3,253,0,127,255,224,0,0,127,255,224,0,0,127,255,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,1,248,224,0,0,1,248,224,0,0,1,248,224,0,0,126,0,28,0,0,126,0,28,0,0,126,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128, + // 0xc900 준 + 0,201,39,42,210,48,3,253,0,127,255,224,0,0,127,255,224,0,0,127,255,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,1,248,224,0,0,1,248,224,0,0,1,248,224,0,0,126,0,28,0,0,126,0,28,0,0,126,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,3,128,56,0,0,3,128,56,0,0,3,128,56,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128, + // 0xc911 중 + 17,201,39,42,210,48,3,253,0,127,255,224,0,0,127,255,224,0,0,127,255,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,1,248,224,0,0,1,248,224,0,0,1,248,224,0,0,126,0,28,0,0,126,0,28,0,0,126,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,224,0,0,15,255,224,0,0,15,255,224,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,15,255,224,0,0,15,255,224,0,0,15,255,224,0, + // 0xc990 즐 + 144,201,39,42,210,48,3,253,0,127,255,224,0,0,127,255,224,0,0,127,255,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,1,248,224,0,0,1,248,224,0,0,1,248,224,0,0,126,0,28,0,0,126,0,28,0,0,126,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128, + // 0xc9c0 지 + 192,201,33,39,195,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,255,255,248,3,128,255,255,248,3,128,255,255,248,3,128,0,1,192,3,128,0,1,192,3,128,0,1,192,3,128,0,1,192,3,128,0,1,192,3,128,0,1,192,3,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,126,0,3,128,0,126,0,3,128,0,126,0,3,128,3,129,192,3,128,3,129,192,3,128,3,129,192,3,128,252,0,56,3,128,252,0,56,3,128,252,0,56,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128, + // 0xcc98 처 + 152,204,39,39,195,48,6,253,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14,255,255,248,0,14,255,255,248,0,14,255,255,248,0,14,0,1,192,0,14,0,1,192,0,14,0,1,192,0,14,0,14,0,31,254,0,14,0,31,254,0,14,0,31,254,0,126,0,0,14,0,126,0,0,14,0,126,0,0,14,3,129,192,0,14,3,129,192,0,14,3,129,192,0,14,252,0,56,0,14,252,0,56,0,14,252,0,56,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14, + // 0xcd08 초 + 8,205,39,39,195,48,3,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,127,255,252,0,0,127,255,252,0,0,127,255,252,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,63,0,0,0,0,63,0,0,0,0,63,0,0,0,1,192,224,0,0,1,192,224,0,0,1,192,224,0,0,126,0,28,0,0,126,0,28,0,0,126,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xcd95 축 + 149,205,39,42,210,48,3,253,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,127,255,224,0,0,127,255,224,0,0,127,255,224,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,199,0,0,0,1,199,0,0,0,1,199,0,0,0,126,0,224,0,0,126,0,224,0,0,126,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128, + // 0xcd9c 출 + 156,205,39,42,210,48,3,253,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,127,255,224,0,0,127,255,224,0,0,127,255,224,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,199,0,0,0,1,199,0,0,0,1,199,0,0,0,126,0,224,0,0,126,0,224,0,0,126,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128, + // 0xcda4 춤 + 164,205,39,42,210,48,3,253,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,127,255,224,0,0,127,255,224,0,0,127,255,224,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,199,0,0,0,1,199,0,0,0,1,199,0,0,0,126,0,224,0,0,126,0,224,0,0,126,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128, + // 0xcde8 취 + 232,205,36,42,210,48,3,253,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,31,255,255,0,112,31,255,255,0,112,31,255,255,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,15,192,0,112,0,15,192,0,112,0,15,192,0,112,0,112,56,0,112,0,112,56,0,112,0,112,56,0,112,31,128,7,0,112,31,128,7,0,112,31,128,7,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,255,252,112,255,255,255,252,112,255,255,255,252,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112, + // 0xce58 치 + 88,206,33,39,195,48,6,253,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,255,255,248,3,128,255,255,248,3,128,255,255,248,3,128,0,1,192,3,128,0,1,192,3,128,0,1,192,3,128,0,14,0,3,128,0,14,0,3,128,0,14,0,3,128,0,126,0,3,128,0,126,0,3,128,0,126,0,3,128,3,129,192,3,128,3,129,192,3,128,3,129,192,3,128,252,0,56,3,128,252,0,56,3,128,252,0,56,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128, + // 0xce68 침 + 104,206,36,42,210,48,3,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,112,0,0,112,0,112,0,0,112,0,112,0,0,112,255,255,192,0,112,255,255,192,0,112,255,255,192,0,112,0,112,0,0,112,0,112,0,0,112,0,112,0,0,112,3,142,0,0,112,3,142,0,0,112,3,142,0,0,112,252,1,192,0,112,252,1,192,0,112,252,1,192,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,240,0,1,255,255,240,0,1,255,255,240,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,255,255,240,0,1,255,255,240,0,1,255,255,240, + // 0xce74 카 + 116,206,36,39,195,48,9,253,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,255,255,192,224,0,255,255,192,224,0,255,255,192,224,0,0,1,192,224,0,0,1,192,224,0,0,1,192,224,0,0,1,192,224,0,0,1,192,224,0,0,1,192,224,0,0,1,192,255,240,0,1,192,255,240,0,1,192,255,240,255,254,0,224,0,255,254,0,224,0,255,254,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,112,0,224,0,0,112,0,224,0,0,112,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,252,0,0,224,0,252,0,0,224,0,252,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0, + // 0xcf1c 켜 + 28,207,36,39,195,48,9,253,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,192,0,112,255,255,192,0,112,255,255,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,255,240,0,1,192,255,240,0,1,192,255,240,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,255,254,0,0,112,255,254,0,0,112,255,254,0,0,112,0,14,0,255,240,0,14,0,255,240,0,14,0,255,240,0,112,0,0,112,0,112,0,0,112,0,112,0,0,112,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,252,0,0,0,112,252,0,0,0,112,252,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112, + // 0xd0d1 탑 + 209,208,42,42,252,48,3,253,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,255,255,192,0,127,192,255,255,192,0,127,192,255,255,192,0,127,192,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,255,255,240,0,0,1,255,255,240,0,0,1,255,255,240,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,255,255,240,0,0,1,255,255,240,0,0,1,255,255,240,0, + // 0xd130 터 + 48,209,39,39,195,48,6,253,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,255,255,248,0,14,255,255,248,0,14,255,255,248,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,255,255,248,31,254,255,255,248,31,254,255,255,248,31,254,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,255,255,248,0,14,255,255,248,0,14,255,255,248,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14, + // 0xd14c 테 + 76,209,39,39,195,48,6,253,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,255,255,248,3,142,255,255,248,3,142,255,255,248,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,255,255,248,255,142,255,255,248,255,142,255,255,248,255,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,255,255,248,3,142,255,255,248,3,142,255,255,248,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142,0,0,0,3,142, + // 0xd1a0 토 + 160,209,39,39,195,48,3,0,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xd2b8 트 + 184,210,39,33,165,48,3,6,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xd39c 펜 + 156,211,36,42,210,48,3,253,0,0,0,28,112,0,0,0,28,112,0,0,0,28,112,0,0,0,28,112,0,0,0,28,112,0,0,0,28,112,255,255,255,28,112,255,255,255,28,112,255,255,255,28,112,3,129,192,28,112,3,129,192,28,112,3,129,192,28,112,3,129,199,252,112,3,129,199,252,112,3,129,199,252,112,3,129,192,28,112,3,129,192,28,112,3,129,192,28,112,255,255,255,28,112,255,255,255,28,112,255,255,255,28,112,0,0,0,28,112,0,0,0,28,112,0,0,0,28,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,127,255,255,240,0,127,255,255,240,0,127,255,255,240, + // 0xd504 프 + 4,213,39,30,150,48,3,6,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254, + // 0xd558 하 + 88,213,39,39,195,48,6,253,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,255,255,248,28,0,255,255,248,28,0,255,255,248,28,0,3,254,0,28,0,3,254,0,28,0,3,254,0,28,0,28,1,192,28,0,28,1,192,28,0,28,1,192,28,0,224,0,56,31,254,224,0,56,31,254,224,0,56,31,254,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,28,1,192,28,0,28,1,192,28,0,28,1,192,28,0,3,254,0,28,0,3,254,0,28,0,3,254,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0, + // 0xd569 합 + 105,213,42,42,252,48,3,253,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,248,0,112,0,255,255,248,0,112,0,255,255,248,0,112,0,3,254,0,0,112,0,3,254,0,0,112,0,3,254,0,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,127,192,28,1,192,0,127,192,28,1,192,0,127,192,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,3,254,0,0,112,0,3,254,0,0,112,0,3,254,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,255,255,240,0,0,1,255,255,240,0,0,1,255,255,240,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,255,255,240,0,0,1,255,255,240,0,0,1,255,255,240,0, + // 0xd648 홈 + 72,214,39,45,225,48,3,253,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,127,255,252,0,0,127,255,252,0,0,127,255,252,0,0,15,255,224,0,0,15,255,224,0,0,15,255,224,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,0,15,255,224,0,0,15,255,224,0,0,15,255,224,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128, + // 0xd654 화 + 84,214,42,42,252,48,3,253,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,31,255,255,3,128,0,31,255,255,3,128,0,31,255,255,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,3,255,248,3,128,0,3,255,248,3,128,0,3,255,248,3,128,0,28,0,7,3,255,192,28,0,7,3,255,192,28,0,7,3,255,192,28,0,7,3,128,0,28,0,7,3,128,0,28,0,7,3,128,0,3,255,248,3,128,0,3,255,248,3,128,0,3,255,248,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,255,255,255,227,128,0,255,255,255,227,128,0,255,255,255,227,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0xd788 히 + 136,215,33,39,195,48,6,253,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,0,112,0,3,128,255,255,248,3,128,255,255,248,3,128,255,255,248,3,128,3,254,0,3,128,3,254,0,3,128,3,254,0,3,128,28,1,192,3,128,28,1,192,3,128,28,1,192,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,28,1,192,3,128,28,1,192,3,128,28,1,192,3,128,3,254,0,3,128,3,254,0,3,128,3,254,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Latin_Extended_A_30.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Latin_Extended_A_30.cpp new file mode 100644 index 0000000000..5801b894dd --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Latin_Extended_A_30.cpp @@ -0,0 +1,288 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// Unifont Latin Extended-A 48pt, capital 'A' height: 30px, width: 100%, range: 0x0100-0x017f +extern const uint8_t Unifont_Latin_Extended_A_30[14555] = { + 129,30,0,1,127,1,42,250, // unifont_t + // 0x0100 Ā + 18,39,117,24,3,0,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0101 ā + 18,33,99,24,3,0,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0102 Ă + 18,42,126,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0103 ă + 18,39,117,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0104 Ą + 21,36,108,24,3,250,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,0,14,0,0,14,0,0,14,0,0,1,248,0,1,248,0,1,248, + // 0x0105 ą + 21,30,90,24,3,250,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192,0,14,0,0,14,0,0,14,0,0,1,248,0,1,248,0,1,248, + // 0x0106 Ć + 18,42,126,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0107 ć + 18,36,108,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0108 Ĉ + 18,42,126,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0109 ĉ + 18,36,108,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x010a Ċ + 18,42,126,24,3,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x010b ċ + 18,36,108,24,3,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x010c Č + 18,42,126,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x010d č + 18,36,108,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x010e Ď + 18,42,126,24,3,0,224,112,0,224,112,0,224,112,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,240,0,255,240,0,255,240,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,14,0,224,14,0,224,14,0,255,240,0,255,240,0,255,240,0, + // 0x010f ď + 18,42,126,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,31,241,192,31,241,192,31,241,192,224,15,192,224,15,192,224,15,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0110 Đ + 21,30,90,24,0,0,31,254,0,31,254,0,31,254,0,28,1,192,28,1,192,28,1,192,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,255,240,56,255,240,56,255,240,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,1,192,28,1,192,28,1,192,31,254,0,31,254,0,31,254,0, + // 0x0111 đ + 21,33,99,24,3,0,0,1,192,0,1,192,0,1,192,0,127,248,0,127,248,0,127,248,0,1,192,0,1,192,0,1,192,31,241,192,31,241,192,31,241,192,224,15,192,224,15,192,224,15,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0112 Ē + 18,39,117,24,3,0,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x0113 ē + 18,33,99,24,3,0,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0114 Ĕ + 18,42,126,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x0115 ĕ + 18,36,108,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0116 Ė + 18,42,126,24,3,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x0117 ė + 18,36,108,24,3,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0118 Ę + 18,36,108,24,3,250,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192,0,112,0,0,112,0,0,112,0,0,15,192,0,15,192,0,15,192, + // 0x0119 ę + 18,30,90,24,3,250,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,3,128,0,3,128,0,3,128,0,0,126,0,0,126,0,0,126,0, + // 0x011a Ě + 18,42,126,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x011b ě + 18,36,108,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x011c Ĝ + 18,42,126,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,127,192,224,127,192,224,127,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x011d ĝ + 18,42,126,24,3,250,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,1,192,0,1,192,0,1,192,31,241,192,31,241,192,31,241,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0,28,0,0,28,0,0,28,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x011e Ğ + 18,42,126,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,127,192,224,127,192,224,127,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x011f ğ + 18,45,135,24,3,250,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,1,192,0,1,192,0,1,192,31,241,192,31,241,192,31,241,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0,28,0,0,28,0,0,28,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0120 Ġ + 18,42,126,24,3,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,127,192,224,127,192,224,127,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0121 ġ + 18,42,126,24,3,250,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,1,192,0,1,192,0,1,192,31,241,192,31,241,192,31,241,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0,28,0,0,28,0,0,28,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0122 Ģ + 18,36,108,24,3,250,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,127,192,224,127,192,224,127,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192,0,112,0,0,112,0,0,112,0,31,128,0,31,128,0,31,128,0, + // 0x0123 ģ + 18,42,126,24,3,250,0,126,0,0,126,0,0,126,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,1,192,0,1,192,0,1,192,31,241,192,31,241,192,31,241,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0,28,0,0,28,0,0,28,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0124 Ĥ + 18,42,126,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0125 ĥ + 18,42,126,24,3,0,31,128,0,31,128,0,31,128,0,224,112,0,224,112,0,224,112,0,0,0,0,0,0,0,0,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0126 Ħ + 24,30,90,24,0,0,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,255,255,255,255,255,255,255,255,255,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,31,255,248,31,255,248,31,255,248,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + // 0x0127 ħ + 21,33,99,24,0,0,28,0,0,28,0,0,28,0,0,255,240,0,255,240,0,255,240,0,28,0,0,28,0,0,28,0,0,28,127,192,28,127,192,28,127,192,31,128,56,31,128,56,31,128,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + // 0x0128 Ĩ + 18,42,126,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,255,192,31,255,192,31,255,192, + // 0x0129 ĩ + 18,36,108,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,240,0,3,240,0,3,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,255,192,31,255,192,31,255,192, + // 0x012a Ī + 15,39,78,24,6,0,255,240,255,240,255,240,0,0,0,0,0,0,0,0,0,0,0,0,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x012b ī + 15,33,66,24,6,0,255,240,255,240,255,240,0,0,0,0,0,0,0,0,0,0,0,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x012c Ĭ + 18,42,126,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,255,192,31,255,192,31,255,192, + // 0x012d ĭ + 18,36,108,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,3,240,0,3,240,0,3,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,255,192,31,255,192,31,255,192, + // 0x012e Į + 15,36,72,24,6,250,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,0,126,0,126,0,126, + // 0x012f į + 15,39,78,24,6,250,3,128,3,128,3,128,3,128,3,128,3,128,0,0,0,0,0,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,0,126,0,126,0,126, + // 0x0130 İ + 15,42,84,24,6,0,3,128,3,128,3,128,3,128,3,128,3,128,0,0,0,0,0,0,0,0,0,0,0,0,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x0131 ı + 15,24,48,24,6,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x0132 IJ + 18,30,90,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0133 ij + 15,42,84,24,6,250,224,14,224,14,224,14,224,14,224,14,224,14,0,0,0,0,0,0,0,0,0,0,0,0,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,31,142,31,142,31,142,0,14,0,14,0,14,224,14,224,14,224,14,31,240,31,240,31,240, + // 0x0134 Ĵ + 21,42,126,24,3,0,0,126,0,0,126,0,0,126,0,3,129,192,3,129,192,3,129,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,248,3,255,248,3,255,248,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x0135 ĵ + 18,42,126,24,3,250,0,126,0,0,126,0,0,126,0,3,129,192,3,129,192,3,129,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,0,0,126,0,0,126,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,224,112,0,224,112,0,224,112,0,31,128,0,31,128,0,31,128,0, + // 0x0136 Ķ + 21,36,108,24,0,250,28,0,56,28,0,56,28,0,56,28,1,192,28,1,192,28,1,192,28,14,0,28,14,0,28,14,0,28,112,0,28,112,0,28,112,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,28,112,0,28,112,0,28,112,0,28,14,0,28,14,0,28,14,0,28,1,192,28,1,192,28,1,192,28,0,56,28,0,56,28,0,56,3,128,0,3,128,0,3,128,0,252,0,0,252,0,0,252,0,0, + // 0x0137 ķ + 21,39,117,24,0,250,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,1,192,28,1,192,28,1,192,28,14,0,28,14,0,28,14,0,28,112,0,28,112,0,28,112,0,31,128,0,31,128,0,31,128,0,28,112,0,28,112,0,28,112,0,28,14,0,28,14,0,28,14,0,28,1,192,28,1,192,28,1,192,28,0,56,28,0,56,28,0,56,3,128,0,3,128,0,3,128,0,252,0,0,252,0,0,252,0,0, + // 0x0138 ĸ + 18,24,72,24,3,0,224,1,192,224,1,192,224,1,192,224,14,0,224,14,0,224,14,0,224,112,0,224,112,0,224,112,0,255,128,0,255,128,0,255,128,0,255,128,0,255,128,0,255,128,0,224,112,0,224,112,0,224,112,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192, + // 0x0139 Ĺ + 18,42,126,24,3,0,3,240,0,3,240,0,3,240,0,252,0,0,252,0,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x013a ĺ + 15,42,84,24,6,0,3,240,3,240,3,240,252,0,252,0,252,0,0,0,0,0,0,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x013b Ļ + 18,36,108,24,3,250,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192,0,112,0,0,112,0,0,112,0,31,128,0,31,128,0,31,128,0, + // 0x013c ļ + 15,39,78,24,6,250,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,252,0,252,0,252,0, + // 0x013d Ľ + 18,42,126,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x013e ľ + 15,42,84,24,6,0,224,112,224,112,224,112,31,128,31,128,31,128,0,0,0,0,0,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x013f Ŀ + 18,30,90,24,3,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x0140 ŀ + 15,33,66,24,3,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,142,3,142,3,142,3,142,3,142,3,142,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x0141 Ł + 21,30,90,24,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,14,0,28,14,0,28,14,0,28,112,0,28,112,0,28,112,0,31,128,0,31,128,0,31,128,0,252,0,0,252,0,0,252,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,31,255,248,31,255,248,31,255,248, + // 0x0142 ł + 15,33,66,24,6,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,142,3,142,3,142,3,240,3,240,3,240,31,128,31,128,31,128,227,128,227,128,227,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x0143 Ń + 18,42,126,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,1,192,224,1,192,224,1,192, + // 0x0144 ń + 18,36,108,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0145 Ņ + 21,36,108,24,0,250,28,0,56,28,0,56,28,0,56,31,128,56,31,128,56,31,128,56,31,128,56,31,128,56,31,128,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,14,56,28,14,56,28,14,56,28,14,56,28,14,56,28,14,56,28,1,248,28,1,248,28,1,248,28,1,248,28,1,248,28,1,248,28,0,56,28,0,56,28,0,56,3,128,0,3,128,0,3,128,0,252,0,0,252,0,0,252,0,0, + // 0x0146 ņ + 21,30,90,24,0,250,28,127,192,28,127,192,28,127,192,31,128,56,31,128,56,31,128,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,3,128,0,3,128,0,3,128,0,252,0,0,252,0,0,252,0,0, + // 0x0147 Ň + 18,42,126,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,252,1,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,227,129,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,113,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,15,192,224,1,192,224,1,192,224,1,192, + // 0x0148 ň + 18,36,108,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0149 ʼn + 18,39,117,24,3,0,252,0,0,252,0,0,252,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,0,0,0,0,0,0,0,0,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x014a Ŋ + 18,30,90,24,3,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,126,0,224,126,0,224,126,0, + // 0x014b ŋ + 18,30,90,24,3,250,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,0,126,0,0,126,0,0,126,0, + // 0x014c Ō + 18,39,117,24,3,0,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x014d ō + 18,33,99,24,3,0,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x014e Ŏ + 18,42,126,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x014f ŏ + 18,36,108,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0150 Ő + 21,42,126,24,3,0,31,129,248,31,129,248,31,129,248,224,14,0,224,14,0,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0151 ő + 21,36,108,24,3,0,31,129,248,31,129,248,31,129,248,224,14,0,224,14,0,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0152 Œ + 21,30,90,24,3,0,31,143,248,31,143,248,31,143,248,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,127,192,224,127,192,224,127,192,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,31,143,248,31,143,248,31,143,248, + // 0x0153 œ + 21,24,72,24,3,0,31,143,192,31,143,192,31,143,192,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,127,248,224,127,248,224,127,248,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,56,224,112,56,224,112,56,31,143,192,31,143,192,31,143,192, + // 0x0154 Ŕ + 18,42,126,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0,224,112,0,224,112,0,224,112,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0155 ŕ + 18,36,108,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x0156 Ŗ + 21,36,108,24,0,250,31,255,192,31,255,192,31,255,192,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,31,255,192,31,255,192,31,255,192,28,14,0,28,14,0,28,14,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,3,128,0,3,128,0,3,128,0,252,0,0,252,0,0,252,0,0, + // 0x0157 ŗ + 21,30,90,24,0,250,28,127,192,28,127,192,28,127,192,31,128,56,31,128,56,31,128,56,28,0,56,28,0,56,28,0,56,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,3,128,0,3,128,0,3,128,0,252,0,0,252,0,0,252,0,0, + // 0x0158 Ř + 18,42,126,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,0,255,254,0,255,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,254,0,255,254,0,255,254,0,224,112,0,224,112,0,224,112,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0159 ř + 18,36,108,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,0,227,254,0,227,254,0,252,1,192,252,1,192,252,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + // 0x015a Ś + 18,42,126,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x015b ś + 18,36,108,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x015c Ŝ + 18,42,126,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x015d ŝ + 18,36,108,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x015e Ş + 18,36,108,24,3,250,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,112,0,0,112,0,0,112,0,31,128,0,31,128,0,31,128,0, + // 0x015f ş + 18,30,90,24,3,250,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,112,0,0,112,0,0,112,0,31,128,0,31,128,0,31,128,0, + // 0x0160 Š + 18,42,126,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0161 š + 18,36,108,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,0,0,224,0,0,224,0,0,31,128,0,31,128,0,31,128,0,0,126,0,0,126,0,0,126,0,0,1,192,0,1,192,0,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0162 Ţ + 21,36,108,24,3,250,255,255,248,255,255,248,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,128,0,31,128,0,31,128,0, + // 0x0163 ţ + 15,36,72,24,3,250,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,0,126,0,126,0,126,0,112,0,112,0,112,31,128,31,128,31,128, + // 0x0164 Ť + 21,42,126,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,248,255,255,248,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0165 ť + 15,42,84,24,3,0,28,14,28,14,28,14,3,240,3,240,3,240,0,0,0,0,0,0,0,0,0,0,0,0,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,0,126,0,126,0,126, + // 0x0166 Ŧ + 21,30,90,24,3,0,255,255,248,255,255,248,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0167 ŧ + 15,30,60,24,3,0,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,0,126,0,126,0,126, + // 0x0168 Ũ + 18,42,126,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0169 ũ + 18,36,108,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x016a Ū + 18,39,117,24,3,0,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x016b ū + 18,33,99,24,3,0,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x016c Ŭ + 18,42,126,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x016d ŭ + 18,39,117,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x016e Ů + 18,42,126,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x016f ů + 18,36,108,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0170 Ű + 21,42,126,24,3,0,31,129,248,31,129,248,31,129,248,224,14,0,224,14,0,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0171 ű + 21,36,108,24,3,0,31,129,248,31,129,248,31,129,248,224,14,0,224,14,0,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0172 Ų + 18,36,108,24,3,250,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,3,128,0,3,128,0,3,128,0,0,126,0,0,126,0,0,126,0, + // 0x0173 ų + 21,30,90,24,3,250,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192,0,14,0,0,14,0,0,14,0,0,1,248,0,1,248,0,1,248, + // 0x0174 Ŵ + 18,42,126,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,227,241,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0175 ŵ + 21,36,108,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,56,224,0,56,224,0,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,31,143,192,31,143,192,31,143,192, + // 0x0176 Ŷ + 21,42,126,24,3,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0177 ŷ + 18,42,126,24,3,250,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,15,192,28,15,192,28,15,192,3,241,192,3,241,192,3,241,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,31,254,0,31,254,0,31,254,0, + // 0x0178 Ÿ + 21,42,126,24,3,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x0179 Ź + 18,42,126,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x017a ź + 18,36,108,24,3,0,0,126,0,0,126,0,0,126,0,31,128,0,31,128,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x017b Ż + 18,42,126,24,3,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x017c ż + 18,36,108,24,3,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x017d Ž + 18,42,126,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x017e ž + 18,36,108,24,3,0,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,0,1,192,0,1,192,0,1,192,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x017f ſ + 15,33,66,24,3,0,0,126,0,126,0,126,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,128,255,128,255,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Simplified_Chinese_30.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Simplified_Chinese_30.cpp new file mode 100644 index 0000000000..799e9a435f --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Simplified_Chinese_30.cpp @@ -0,0 +1,778 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// Unifont Simplified Chinese 48pt, capital 'A' height: 30px, width: 100%, range: 0x201c-0xff1a, glyphs: 373 +extern const uint8_t Unifont_Simplified_Chinese_30[23990] = { + 161,30,28,32,26,255,42,250, // unifont_t + // 0x201c “ + 28,32,18,12,36,24,3,24,28,1,192,28,1,192,28,1,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,252,15,192,252,15,192,252,15,192, + // 0x201d ” + 29,32,18,12,36,24,3,24,252,15,192,252,15,192,252,15,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,224,14,0,224,14,0,224,14,0, + // 0x22bf ⊿ + 191,34,18,18,54,24,3,0,0,1,192,0,1,192,0,1,192,0,15,192,0,15,192,0,15,192,0,113,192,0,113,192,0,113,192,3,129,192,3,129,192,3,129,192,28,1,192,28,1,192,28,1,192,255,255,192,255,255,192,255,255,192, + // 0x4e00 一 + 0,78,45,3,18,48,0,18,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x4e09 三 + 9,78,45,36,216,48,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x4e0a 上 + 10,78,45,45,14,48,0,253,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x4e0b 下 + 11,78,45,45,14,48,0,250,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x4e0d 不 + 13,78,42,45,14,48,0,250,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,63,28,0,0,0,0,63,28,0,0,0,0,63,28,0,0,0,1,199,3,128,0,0,1,199,3,128,0,0,1,199,3,128,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,28,0,7,0,1,192,28,0,7,0,1,192,28,0,7,0,1,192,224,0,7,0,0,0,224,0,7,0,0,0,224,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x4e13 专 + 19,78,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,1,248,28,0,0,0,1,248,28,0,0,0,1,248,28,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0x4e1d 丝 + 29,78,45,45,14,48,0,253,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,28,0,56,224,1,192,28,0,56,224,1,192,28,0,56,224,1,192,31,255,192,255,254,0,31,255,192,255,254,0,31,255,192,255,254,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,31,255,248,255,255,192,31,255,248,255,255,192,31,255,248,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x4e2a 个 + 42,78,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,252,0,7,0,1,248,252,0,7,0,1,248,252,0,7,0,1,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x4e2d 中 + 45,78,33,48,240,48,6,250,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + // 0x4e3a 为 + 58,78,39,48,240,48,0,250,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,112,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,31,255,255,255,254,31,255,255,255,254,31,255,255,255,254,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,224,14,0,0,56,224,14,0,0,56,224,14,0,1,192,28,14,0,1,192,28,14,0,1,192,28,14,0,1,192,28,14,0,1,192,28,14,0,1,192,28,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14,3,128,0,0,14,3,128,0,0,14,3,128,0,0,14,28,0,0,28,112,28,0,0,28,112,28,0,0,28,112,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128, + // 0x4e3b 主 + 59,78,45,45,14,48,0,253,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x4e49 义 + 73,78,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,3,240,0,0,126,0,3,240,0,0,126,0,3,240,0,0,126,0,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248, + // 0x4e4b 之 + 75,78,42,45,14,48,3,253,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,240,0,255,255,255,255,240,0,255,255,255,255,240,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,3,240,0,0,0,0,3,240,0,0,0,0,3,240,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,224,1,255,255,255,192,224,1,255,255,255,192,224,1,255,255,255,192, + // 0x4e86 了 + 134,78,36,45,225,48,3,250,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,63,0,0,0,0,63,0,0,0,0,63,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,14,56,0,0,0,14,56,0,0,0,14,56,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + // 0x4e8c 二 + 140,78,45,30,180,48,0,3,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x4e8e 于 + 142,78,45,45,14,48,0,250,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x4ea4 交 + 164,78,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,15,192,28,0,0,0,15,192,28,0,0,0,15,192,28,0,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,252,0,0,0,15,248,252,0,0,0,15,248,252,0,0,0,15,248, + // 0x4eae 亮 + 174,78,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,1,255,252,1,192,224,1,255,252,1,192,224,1,255,252,1,192,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,3,240,0,28,0,56,3,240,0,28,0,56,3,240,0,28,0,56,252,0,0,3,255,248,252,0,0,3,255,248,252,0,0,3,255,248, + // 0x4ece 从 + 206,78,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,28,112,0,0,14,0,28,112,0,0,14,0,28,112,0,0,113,192,28,112,0,0,113,192,28,112,0,0,113,192,28,112,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,224,14,0,0,112,56,224,14,0,0,112,56,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,28,0,56,0,1,192,28,0,56,0,1,192,28,0,56,0,1,192,224,1,192,0,0,56,224,1,192,0,0,56,224,1,192,0,0,56, + // 0x4ee4 令 + 228,78,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,56,3,128,0,0,14,56,3,128,0,0,14,56,3,128,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0, + // 0x4ee5 以 + 229,78,39,48,240,48,6,250,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,224,14,0,28,0,224,14,0,28,0,224,14,0,28,0,224,1,192,28,0,224,1,192,28,0,224,1,192,28,0,224,1,192,28,0,224,1,192,28,0,224,1,192,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,224,0,224,0,0,224,0,224,0,0,224,0,224,0,0,224,0,224,0,0,224,0,224,0,0,224,0,224,0,0,224,0,224,0,0,224,0,224,0,0,224,0,224,112,7,0,0,224,112,7,0,0,224,112,7,0,0,227,128,7,28,0,227,128,7,28,0,227,128,7,28,0,252,0,56,3,128,252,0,56,3,128,252,0,56,3,128,224,1,192,0,112,224,1,192,0,112,224,1,192,0,112,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14, + // 0x4ef6 件 + 246,78,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0, + // 0x4efd 份 + 253,78,45,48,32,48,0,250,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,224,112,0,0,14,0,224,112,0,0,14,0,224,112,0,0,14,0,224,112,0,0,14,0,224,112,0,0,14,0,224,112,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,3,240,7,0,1,192,3,240,7,0,1,192,3,240,7,0,1,192,3,240,56,0,1,192,3,240,56,0,1,192,3,240,56,0,1,192,28,113,199,255,254,56,28,113,199,255,254,56,28,113,199,255,254,56,224,112,0,224,14,0,224,112,0,224,14,0,224,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,0,113,192,0,112,0,0,113,192,0,112,0,0,113,192,0,112,0, + // 0x4f11 休 + 17,79,45,48,32,48,0,250,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,3,240,0,28,0,0,3,240,0,28,0,0,3,240,0,28,0,0,3,240,0,255,128,0,3,240,0,255,128,0,3,240,0,255,128,0,28,112,0,255,128,0,28,112,0,255,128,0,28,112,0,255,128,0,224,112,7,28,112,0,224,112,7,28,112,0,224,112,7,28,112,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,126,0,28,0,56,0,126,0,28,0,56,0,126,0,28,0,56,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0, + // 0x4f20 传 + 32,79,45,48,32,48,0,250,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,240,0,224,0,0,3,240,0,224,0,0,3,240,0,224,0,0,3,241,255,255,255,248,3,241,255,255,255,248,3,241,255,255,255,248,28,112,0,224,0,0,28,112,0,224,0,0,28,112,0,224,0,0,224,112,7,0,0,0,224,112,7,0,0,0,224,112,7,0,0,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0, + // 0x4f4d 位 + 77,79,45,48,32,48,0,250,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,3,240,0,0,0,0,3,240,0,0,0,0,3,240,0,0,0,0,3,240,0,0,14,0,3,240,0,0,14,0,3,240,0,0,14,0,28,112,56,0,14,0,28,112,56,0,14,0,28,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,127,255,255,255,248,0,127,255,255,255,248,0,127,255,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x4f4e 低 + 78,79,45,48,32,48,0,250,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,3,255,192,0,14,0,3,255,192,0,14,0,3,255,192,0,14,63,255,128,0,0,14,63,255,128,0,0,14,63,255,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,28,112,63,255,255,248,28,112,63,255,255,248,28,112,63,255,255,248,224,112,56,3,128,0,224,112,56,3,128,0,224,112,56,3,128,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,14,56,0,112,56,0,14,56,0,112,56,0,14,56,0,112,56,224,14,56,0,112,56,224,14,56,0,112,56,224,14,56,0,112,63,3,129,248,0,112,63,3,129,248,0,112,63,3,129,248,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56, + // 0x4f53 体 + 83,79,45,48,32,48,0,250,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,3,240,0,28,0,0,3,240,0,28,0,0,3,240,0,28,0,0,3,240,0,255,128,0,3,240,0,255,128,0,3,240,0,255,128,0,28,112,0,255,128,0,28,112,0,255,128,0,28,112,0,255,128,0,224,112,7,28,112,0,224,112,7,28,112,0,224,112,7,28,112,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,113,199,255,241,192,0,113,199,255,241,192,0,113,199,255,241,192,0,126,0,28,0,56,0,126,0,28,0,56,0,126,0,28,0,56,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0, + // 0x4f59 余 + 89,79,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,143,255,255,142,0,3,143,255,255,142,0,3,143,255,255,142,0,252,0,7,0,1,248,252,0,7,0,1,248,252,0,7,0,1,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,28,1,199,0,1,192,28,1,199,0,1,192,28,1,199,0,1,192,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x4f5c 作 + 92,79,45,48,32,48,0,250,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,112,7,255,255,248,0,112,7,255,255,248,0,112,7,255,255,248,0,112,56,224,0,0,0,112,56,224,0,0,0,112,56,224,0,0,3,240,56,224,0,0,3,240,56,224,0,0,3,240,56,224,0,0,3,241,192,224,0,0,3,241,192,224,0,0,3,241,192,224,0,0,28,112,0,255,254,0,28,112,0,255,254,0,28,112,0,255,254,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0, + // 0x4f7f 使 + 127,79,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,127,255,255,255,248,0,127,255,255,255,248,0,127,255,255,255,248,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,31,129,255,255,255,192,31,129,255,255,255,192,31,129,255,255,255,192,31,129,192,28,1,192,31,129,192,28,1,192,31,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,56,28,0,0,3,128,56,28,0,0,3,128,56,28,0,0,3,128,7,28,0,0,3,128,7,28,0,0,3,128,7,28,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,7,28,0,0,3,128,7,28,0,0,3,128,7,28,0,0,3,128,56,3,240,0,3,128,56,3,240,0,3,128,56,3,240,0,3,143,192,0,15,248,3,143,192,0,15,248,3,143,192,0,15,248, + // 0x4f9b 供 + 155,79,45,48,32,48,0,250,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,3,240,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,28,112,7,0,112,0,28,112,7,0,112,0,28,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,113,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192,0,126,0,0,1,192,0,126,0,0,1,192,0,126,0,0,1,192, + // 0x4fb5 侵 + 181,79,45,48,32,48,0,250,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,63,255,254,0,0,14,63,255,254,0,0,14,63,255,254,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,3,240,63,255,254,0,3,240,63,255,254,0,3,240,63,255,254,0,3,240,0,0,0,0,3,240,0,0,0,0,3,240,0,0,0,0,28,113,255,255,255,192,28,113,255,255,255,192,28,113,255,255,255,192,224,113,192,0,1,192,224,113,192,0,1,192,224,113,192,0,1,192,0,112,63,255,240,0,0,112,63,255,240,0,0,112,63,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,7,227,240,0,0,112,7,227,240,0,0,112,7,227,240,0,0,113,248,0,15,248,0,113,248,0,15,248,0,113,248,0,15,248, + // 0x4fdd 保 + 221,79,45,48,32,48,0,250,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,63,255,254,0,0,14,63,255,254,0,0,14,63,255,254,0,0,14,56,0,14,0,0,14,56,0,14,0,0,14,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,3,240,63,255,254,0,3,240,63,255,254,0,3,240,63,255,254,0,3,240,0,28,0,0,3,240,0,28,0,0,3,240,0,28,0,0,28,112,0,28,0,0,28,112,0,28,0,0,28,112,0,28,0,0,224,113,255,255,255,192,224,113,255,255,255,192,224,113,255,255,255,192,0,112,0,255,128,0,0,112,0,255,128,0,0,112,0,255,128,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,126,0,28,0,56,0,126,0,28,0,56,0,126,0,28,0,56,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0, + // 0x4fe1 信 + 225,79,45,48,32,48,0,250,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,63,255,255,248,0,14,63,255,255,248,0,14,63,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,240,7,255,255,192,3,240,7,255,255,192,3,240,7,255,255,192,3,240,0,0,0,0,3,240,0,0,0,0,3,240,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,224,112,7,255,255,192,224,112,7,255,255,192,224,112,7,255,255,192,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192, + // 0x503c 值 + 60,80,45,48,32,48,0,250,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,15,255,255,255,192,0,15,255,255,255,192,0,15,255,255,255,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,240,63,255,254,0,3,240,63,255,254,0,3,240,63,255,254,0,3,240,56,0,14,0,3,240,56,0,14,0,3,240,56,0,14,0,28,112,63,255,254,0,28,112,63,255,254,0,28,112,63,255,254,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,127,255,255,255,248,0,127,255,255,255,248,0,127,255,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x503e 倾 + 62,80,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,255,248,0,112,0,255,255,248,0,112,0,255,255,248,0,113,192,0,112,0,0,113,192,0,112,0,0,113,192,0,112,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,31,255,192,3,129,192,31,255,192,3,129,192,31,255,192,31,129,192,28,1,192,31,129,192,28,1,192,31,129,192,28,1,192,31,129,255,28,113,192,31,129,255,28,113,192,31,129,255,28,113,192,227,129,192,28,113,192,227,129,192,28,113,192,227,129,192,28,113,192,3,129,192,28,113,192,3,129,192,28,113,192,3,129,192,28,113,192,3,129,192,28,113,192,3,129,192,28,113,192,3,129,192,28,113,192,3,129,199,28,113,192,3,129,199,28,113,192,3,129,199,28,113,192,3,129,248,28,113,192,3,129,248,28,113,192,3,129,248,28,113,192,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,224,0,56,3,128,0,224,0,56,3,128,0,224,0,56, + // 0x504f 偏 + 79,80,42,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,31,129,255,255,255,192,31,129,255,255,255,192,31,129,255,255,255,192,31,129,192,0,0,0,31,129,192,0,0,0,31,129,192,0,0,0,227,129,192,0,0,0,227,129,192,0,0,0,227,129,192,0,0,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,248,227,129,192,3,129,248,227,129,192,3,129,248,227,129,192,3,142,56,227,129,192,3,142,56,227,129,192,3,142,56,227,129,192,3,142,63,255,255,192,3,142,63,255,255,192,3,142,63,255,255,192,3,142,56,227,129,192,3,142,56,227,129,192,3,142,56,227,129,192,3,142,56,227,129,192,3,142,56,227,129,192,3,142,56,227,129,192,3,240,56,227,129,192,3,240,56,227,129,192,3,240,56,227,129,192,3,128,56,0,15,192,3,128,56,0,15,192,3,128,56,0,15,192, + // 0x505c 停 + 92,80,45,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,31,128,56,0,14,0,31,128,56,0,14,0,31,128,56,0,14,0,31,128,63,255,254,0,31,128,63,255,254,0,31,128,63,255,254,0,227,128,0,0,0,0,227,128,0,0,0,0,227,128,0,0,0,0,3,143,255,255,255,248,3,143,255,255,255,248,3,143,255,255,255,248,3,142,0,0,0,56,3,142,0,0,0,56,3,142,0,0,0,56,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,7,28,0,0,3,128,7,28,0,0,3,128,7,28,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0, + // 0x50a8 储 + 168,80,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,126,0,255,254,56,0,126,0,255,254,56,0,126,0,255,254,56,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,142,0,3,129,192,3,142,0,3,129,192,3,142,0,31,128,7,255,255,248,31,128,7,255,255,248,31,128,7,255,255,248,31,128,0,3,128,0,31,128,0,3,128,0,31,128,0,3,128,0,227,255,192,28,0,0,227,255,192,28,0,0,227,255,192,28,0,0,3,129,192,255,255,192,3,129,192,255,255,192,3,129,192,255,255,192,3,129,199,28,1,192,3,129,199,28,1,192,3,129,199,28,1,192,3,129,248,28,1,192,3,129,248,28,1,192,3,129,248,28,1,192,3,129,192,31,255,192,3,129,192,31,255,192,3,129,192,31,255,192,3,129,199,28,1,192,3,129,199,28,1,192,3,129,199,28,1,192,3,129,248,28,1,192,3,129,248,28,1,192,3,129,248,28,1,192,3,129,192,31,255,192,3,129,192,31,255,192,3,129,192,31,255,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192, + // 0x50cf 像 + 207,80,45,48,32,48,0,250,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,255,240,0,0,14,7,255,240,0,0,14,7,255,240,0,0,14,56,0,112,0,0,14,56,0,112,0,0,14,56,0,112,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,0,126,56,3,129,192,0,126,56,3,129,192,0,126,56,3,129,192,3,240,56,28,1,192,3,240,56,28,1,192,3,240,56,28,1,192,3,240,63,255,255,192,3,240,63,255,255,192,3,240,63,255,255,192,28,112,0,224,0,0,28,112,0,224,0,0,28,112,0,224,0,0,224,112,7,28,1,192,224,112,7,28,1,192,224,112,7,28,1,192,0,113,248,227,142,0,0,113,248,227,142,0,0,113,248,227,142,0,0,112,7,3,240,0,0,112,7,3,240,0,0,112,7,3,240,0,0,113,248,31,142,0,0,113,248,31,142,0,0,113,248,31,142,0,0,112,0,227,142,0,0,112,0,227,142,0,0,112,0,227,142,0,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,113,248,227,128,56,0,113,248,227,128,56,0,113,248,227,128,56,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0, + // 0x5145 充 + 69,81,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,1,192,28,14,0,0,1,192,28,14,0,0,1,192,28,14,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,31,128,0,3,255,192,31,128,0,3,255,192,31,128,0,3,255,192, + // 0x5148 先 + 72,81,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,127,255,255,254,0,0,127,255,255,254,0,0,127,255,255,254,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,28,0,7,0,0,0,28,0,7,0,0,0,28,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,3,128,0,3,255,248,3,128,0,3,255,248,3,128,0,3,255,248,252,0,0,0,0,0,252,0,0,0,0,0,252,0,0,0,0,0, + // 0x5149 光 + 73,81,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,3,128,0,3,255,248,3,128,0,3,255,248,3,128,0,3,255,248,252,0,0,0,0,0,252,0,0,0,0,0,252,0,0,0,0,0, + // 0x5165 入 + 101,81,45,48,32,48,0,250,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,224,0,0,0,1,248,224,0,0,0,1,248,224,0,0,0,1,248, + // 0x5168 全 + 104,81,45,45,14,48,0,253,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,143,255,255,142,0,3,143,255,255,142,0,3,143,255,255,142,0,252,0,7,0,1,248,252,0,7,0,1,248,252,0,7,0,1,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192, + // 0x5171 共 + 113,81,42,48,32,48,3,250,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,31,255,255,255,254,0,31,255,255,255,254,0,31,255,255,255,254,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,255,255,255,255,255,192,255,255,255,255,255,192,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0, + // 0x5173 关 + 115,81,45,48,32,48,0,250,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,3,240,0,0,126,0,3,240,0,0,126,0,3,240,0,0,126,0,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248, + // 0x5177 具 + 119,81,45,45,14,48,0,250,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0, + // 0x5197 冗 + 151,81,45,42,252,48,0,250,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,252,0,0,0,15,255,252,0,0,0,15,255,252,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,28,0,0,3,255,248,28,0,0,3,255,248,28,0,0,3,255,248,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0, + // 0x51b7 冷 + 183,81,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,56,28,14,0,0,0,56,28,14,0,0,0,56,28,14,0,0,113,192,3,129,248,0,113,192,3,129,248,0,113,192,3,129,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,255,128,0,0,14,0,255,128,0,0,14,0,255,128,0,0,14,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0x51c6 准 + 198,81,45,48,32,48,0,250,0,0,7,28,0,0,0,0,7,28,0,0,0,0,7,28,0,0,28,0,7,3,128,0,28,0,7,3,128,0,28,0,7,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,3,128,63,255,255,248,3,128,63,255,255,248,3,128,63,255,255,248,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,3,128,0,0,113,248,3,128,0,0,113,248,3,128,0,0,113,248,3,128,0,0,126,63,255,255,192,0,126,63,255,255,192,0,126,63,255,255,192,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,63,255,255,192,3,128,63,255,255,192,3,128,63,255,255,192,255,128,56,3,128,0,255,128,56,3,128,0,255,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,63,255,255,248,3,128,63,255,255,248,3,128,63,255,255,248,3,128,56,0,0,0,3,128,56,0,0,0,3,128,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x51fa 出 + 250,81,39,48,240,48,3,250,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14, + // 0x51fb 击 + 251,81,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0, + // 0x5206 分 + 6,82,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,224,127,255,255,128,56,224,127,255,255,128,56,224,127,255,255,128,56,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,7,28,0,0,3,128,7,28,0,0,3,128,7,28,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0, + // 0x5207 切 + 7,82,42,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,127,248,28,1,192,0,127,248,28,1,192,0,127,248,28,1,192,255,240,0,28,1,192,255,240,0,28,1,192,255,240,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,126,0,224,1,192,0,126,0,224,1,192,0,126,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,0,7,0,1,192,0,0,7,0,1,192,0,0,7,0,1,192,0,0,56,3,142,0,0,0,56,3,142,0,0,0,56,3,142,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0, + // 0x521b 创 + 27,82,42,48,32,48,0,250,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,28,0,0,227,129,192,28,0,0,227,129,192,28,0,0,227,129,192,227,255,248,3,129,192,227,255,248,3,129,192,227,255,248,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,142,56,3,129,192,3,142,56,3,129,192,3,142,56,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,192,0,127,255,224,113,192,0,127,255,224,113,192,0,127,255,224,113,192,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0, + // 0x521d 初 + 29,82,42,48,32,48,0,250,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,0,7,255,255,192,0,0,7,255,255,192,0,0,7,255,255,192,255,255,192,28,1,192,255,255,192,28,1,192,255,255,192,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,3,241,192,28,1,192,3,241,192,28,1,192,3,241,192,28,1,192,28,126,0,28,1,192,28,126,0,28,1,192,28,126,0,28,1,192,224,113,192,28,1,192,224,113,192,28,1,192,224,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,0,113,192,0,112,0,0,113,192,0,112,0,0,113,192,0,112,0, + // 0x522b 别 + 43,82,42,48,32,48,0,250,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,31,255,255,0,1,192,31,255,255,0,1,192,31,255,255,0,1,192,28,0,7,0,1,192,28,0,7,0,1,192,28,0,7,0,1,192,28,0,7,3,129,192,28,0,7,3,129,192,28,0,7,3,129,192,28,0,7,3,129,192,28,0,7,3,129,192,28,0,7,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,255,255,255,3,129,192,255,255,255,3,129,192,255,255,255,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,28,14,56,0,113,192,28,14,56,0,113,192,28,14,56,0,113,192,224,1,192,0,14,0,224,1,192,0,14,0,224,1,192,0,14,0, + // 0x5230 到 + 48,82,42,48,32,48,0,250,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,255,255,255,224,1,192,255,255,255,224,1,192,255,255,255,224,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,28,0,7,3,129,192,28,0,7,3,129,192,28,0,7,3,129,192,255,255,255,227,129,192,255,255,255,227,129,192,255,255,255,227,129,192,0,14,0,227,129,192,0,14,0,227,129,192,0,14,0,227,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,15,255,224,1,192,0,15,255,224,1,192,0,15,255,224,1,192,255,254,0,0,113,192,255,254,0,0,113,192,255,254,0,0,113,192,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0, + // 0x5236 制 + 54,82,42,48,32,48,0,250,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,255,255,227,129,192,3,255,255,227,129,192,3,255,255,227,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,255,255,255,255,129,192,255,255,255,255,129,192,255,255,255,255,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,3,255,255,227,129,192,3,255,255,227,129,192,3,255,255,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,248,224,1,192,3,129,248,224,1,192,3,129,248,224,1,192,3,129,199,0,1,192,3,129,199,0,1,192,3,129,199,0,1,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0, + // 0x5237 刷 + 55,82,45,48,32,48,0,250,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,3,255,255,252,0,56,3,255,255,252,0,56,3,255,255,252,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,255,255,252,112,56,3,255,255,252,112,56,3,255,255,252,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,255,255,252,112,56,3,255,255,252,112,56,3,255,255,252,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,224,112,63,28,0,56,224,112,63,28,0,56,224,112,63,28,0,56,0,112,56,224,0,56,0,112,56,224,0,56,0,112,56,224,0,56,0,0,56,0,14,56,0,0,56,0,14,56,0,0,56,0,14,56,0,0,56,0,1,192,0,0,56,0,1,192,0,0,56,0,1,192, + // 0x5272 割 + 114,82,42,48,32,48,0,250,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,255,255,255,224,1,192,255,255,255,224,1,192,255,255,255,224,1,192,224,0,0,227,129,192,224,0,0,227,129,192,224,0,0,227,129,192,0,14,7,3,129,192,0,14,7,3,129,192,0,14,7,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,255,255,255,227,129,192,255,255,255,227,129,192,255,255,255,227,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,28,0,7,0,1,192,28,0,7,0,1,192,28,0,7,0,1,192,28,0,7,0,1,192,28,0,7,0,1,192,28,0,7,0,1,192,31,255,255,0,113,192,31,255,255,0,113,192,31,255,255,0,113,192,28,0,7,0,14,0,28,0,7,0,14,0,28,0,7,0,14,0, + // 0x529b 力 + 155,82,36,48,240,48,3,250,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,112,0,0,112,0,112,0,0,112,0,112,0,0,112,0,112,0,0,112,0,112,0,0,112,0,112,0,0,112,3,128,7,0,112,3,128,7,0,112,3,128,7,0,112,28,0,0,227,128,28,0,0,227,128,28,0,0,227,128,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0, + // 0x529f 功 + 159,82,42,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,255,248,28,0,0,255,255,248,28,0,0,255,255,248,28,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,127,248,224,1,192,0,127,248,224,1,192,0,127,248,224,1,192,255,240,7,0,1,192,255,240,7,0,1,192,255,240,7,0,1,192,28,0,7,0,1,192,28,0,7,0,1,192,28,0,7,0,1,192,0,0,56,3,142,0,0,0,56,3,142,0,0,0,56,3,142,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0, + // 0x52a0 加 + 160,82,42,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,31,255,192,0,112,0,31,255,192,0,112,0,31,255,192,255,255,248,28,1,192,255,255,248,28,1,192,255,255,248,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,31,255,192,3,128,56,31,255,192,3,128,56,31,255,192,28,14,56,28,1,192,28,14,56,28,1,192,28,14,56,28,1,192,224,1,192,0,0,0,224,1,192,0,0,0,224,1,192,0,0,0, + // 0x52a8 动 + 168,82,42,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,31,255,192,28,0,0,31,255,192,28,0,0,31,255,192,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,7,255,255,192,0,0,7,255,255,192,0,0,7,255,255,192,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,255,255,248,28,1,192,255,255,248,28,1,192,255,255,248,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,192,28,14,0,224,1,192,28,14,0,224,1,192,28,14,0,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,255,255,199,0,1,192,255,255,199,0,1,192,255,255,199,0,1,192,28,1,199,0,1,192,28,1,199,0,1,192,28,1,199,0,1,192,0,0,56,3,142,0,0,0,56,3,142,0,0,0,56,3,142,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0, + // 0x5316 化 + 22,83,45,48,32,48,0,250,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,1,192,0,14,0,224,1,192,0,14,0,224,1,192,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,3,240,0,227,128,0,3,240,0,227,128,0,3,240,0,227,128,0,3,240,0,252,0,0,3,240,0,252,0,0,3,240,0,252,0,0,28,112,0,224,0,0,28,112,0,224,0,0,28,112,0,224,0,0,224,112,7,224,0,0,224,112,7,224,0,0,224,112,7,224,0,0,0,112,56,224,0,0,0,112,56,224,0,0,0,112,56,224,0,0,0,113,192,224,0,0,0,113,192,224,0,0,0,113,192,224,0,0,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,31,255,248,0,112,0,31,255,248,0,112,0,31,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x5347 升 + 71,83,45,48,32,48,0,250,0,0,7,3,128,0,0,0,7,3,128,0,0,0,7,3,128,0,0,1,255,227,128,0,0,1,255,227,128,0,0,1,255,227,128,0,3,255,192,3,128,0,3,255,192,3,128,0,3,255,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0, + // 0x534a 半 + 74,83,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x534f 协 + 79,83,45,48,32,48,0,250,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,255,254,63,255,240,0,255,254,63,255,240,0,255,254,63,255,240,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,56,224,126,0,3,128,56,224,126,0,3,128,56,224,126,0,3,128,56,224,113,192,3,128,56,224,113,192,3,128,56,224,113,192,3,129,192,224,112,56,3,129,192,224,112,56,3,129,192,224,112,56,3,142,0,224,112,56,3,142,0,224,112,56,3,142,0,224,112,56,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,56,28,112,0,3,128,56,28,112,0,3,128,56,28,112,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0, + // 0x5355 单 + 85,83,45,48,32,48,0,250,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x5361 卡 + 97,83,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x5370 印 + 112,83,39,45,225,48,3,250,0,15,192,0,0,0,15,192,0,0,0,15,192,0,0,255,240,7,255,254,255,240,7,255,254,255,240,7,255,254,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,255,255,199,0,14,255,255,199,0,14,255,255,199,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,127,199,28,112,224,127,199,28,112,224,127,199,28,112,255,128,7,3,128,255,128,7,3,128,255,128,7,3,128,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0, + // 0x5371 危 + 113,83,42,48,32,48,0,250,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,127,255,255,255,192,28,127,255,255,255,192,28,127,255,255,255,192,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,63,255,240,0,0,112,63,255,240,0,0,112,63,255,240,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,3,128,56,0,1,192,3,128,56,0,1,192,3,128,56,0,1,192,3,128,56,0,1,192,3,128,56,0,1,192,3,128,56,0,1,192,28,0,7,255,255,192,28,0,7,255,255,192,28,0,7,255,255,192,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0, + // 0x5374 却 + 116,83,42,48,32,48,0,250,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,31,255,192,0,14,0,31,255,192,0,14,0,31,255,192,31,255,255,28,1,192,31,255,255,28,1,192,31,255,255,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,255,255,255,252,1,192,255,255,255,252,1,192,255,255,255,252,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,28,0,56,28,113,192,28,0,56,28,113,192,28,0,56,28,113,192,255,255,255,28,14,0,255,255,255,28,14,0,255,255,255,28,14,0,28,0,7,28,0,0,28,0,7,28,0,0,28,0,7,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x5378 卸 + 120,83,42,48,32,48,0,250,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,255,255,31,255,192,3,255,255,31,255,192,3,255,255,31,255,192,28,14,0,28,1,192,28,14,0,28,1,192,28,14,0,28,1,192,224,14,0,28,1,192,224,14,0,28,1,192,224,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,31,255,255,28,1,192,31,255,255,28,1,192,31,255,255,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,3,143,248,28,1,192,3,143,248,28,1,192,3,143,248,28,1,192,3,142,0,28,1,192,3,142,0,28,1,192,3,142,0,28,1,192,3,142,0,28,113,192,3,142,0,28,113,192,3,142,0,28,113,192,3,143,255,28,14,0,3,143,255,28,14,0,3,143,255,28,14,0,255,240,0,28,0,0,255,240,0,28,0,0,255,240,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x538b 压 + 139,83,45,45,14,48,0,250,3,255,255,255,255,248,3,255,255,255,255,248,3,255,255,255,255,248,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,143,255,255,255,192,3,143,255,255,255,192,3,143,255,255,255,192,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,127,255,255,255,248,28,127,255,255,255,248,28,127,255,255,255,248,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0, + // 0x539f 原 + 159,83,45,45,14,48,0,250,3,255,255,255,255,248,3,255,255,255,255,248,3,255,255,255,255,248,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,3,129,255,255,240,0,3,129,255,255,240,0,3,129,255,255,240,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,255,255,240,0,3,129,255,255,240,0,3,129,255,255,240,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,255,255,240,0,3,129,255,255,240,0,3,129,255,255,240,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,129,192,224,112,0,3,129,192,224,112,0,3,129,192,224,112,0,28,14,0,224,14,0,28,14,0,224,14,0,28,14,0,224,14,0,28,112,56,224,1,192,28,112,56,224,1,192,28,112,56,224,1,192,224,0,7,0,0,0,224,0,7,0,0,0,224,0,7,0,0,0, + // 0x53cc 双 + 204,83,45,42,252,48,0,250,255,255,199,255,255,192,255,255,199,255,255,192,255,255,199,255,255,192,0,1,192,224,1,192,0,1,192,224,1,192,0,1,192,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,3,142,0,224,14,0,3,142,0,224,14,0,3,142,0,224,14,0,3,142,0,224,14,0,3,142,0,224,14,0,3,142,0,224,14,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,224,14,0,28,1,192,224,14,0,28,1,192,224,14,0,224,0,7,0,1,192,224,0,7,0,1,192,224,0,7,0,1,192,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + // 0x53cd 反 + 205,83,45,48,32,48,0,250,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,255,254,0,0,0,0,255,254,0,0,0,0,255,254,0,3,255,255,0,0,0,3,255,255,0,0,0,3,255,255,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,7,28,0,0,3,128,7,28,0,0,3,128,7,28,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,28,0,7,28,0,0,28,0,7,28,0,0,28,0,7,28,0,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,224,15,192,0,126,0,224,15,192,0,126,0,224,15,192,0,126,0,3,240,0,0,1,248,3,240,0,0,1,248,3,240,0,0,1,248, + // 0x53d6 取 + 214,83,45,45,14,48,0,250,255,255,255,224,0,0,255,255,255,224,0,0,255,255,255,224,0,0,3,128,56,255,255,192,3,128,56,255,255,192,3,128,56,255,255,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,129,255,227,142,0,3,129,255,227,142,0,3,129,255,227,142,0,255,254,56,0,112,0,255,254,56,0,112,0,255,254,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,0,0,56,3,142,0,0,0,56,3,142,0,0,0,56,3,142,0,0,0,56,28,1,192,0,0,56,28,1,192,0,0,56,28,1,192,0,0,56,224,0,56,0,0,56,224,0,56,0,0,56,224,0,56, + // 0x53d8 变 + 216,83,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,113,192,28,112,0,0,113,192,28,112,0,0,113,192,28,112,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,240,0,3,255,255,255,240,0,3,255,255,255,240,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,126,0,3,240,0,0,126,0,3,240,0,0,126,0,3,240,0,255,128,0,0,15,248,255,128,0,0,15,248,255,128,0,0,15,248, + // 0x53f0 台 + 240,83,39,48,240,48,3,250,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,28,0,0,0,14,28,0,0,0,14,28,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128, + // 0x5403 吃 + 3,84,42,45,14,48,3,253,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,240,56,0,0,0,255,240,56,0,0,0,255,240,56,0,0,0,224,112,63,255,255,192,224,112,63,255,255,192,224,112,63,255,255,192,224,113,192,0,0,0,224,113,192,0,0,0,224,113,192,0,0,0,224,126,0,0,0,0,224,126,0,0,0,0,224,126,0,0,0,0,224,112,63,255,240,0,224,112,63,255,240,0,224,112,63,255,240,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,252,0,0,224,112,0,252,0,0,224,112,0,252,0,0,255,240,7,0,0,0,255,240,7,0,0,0,255,240,7,0,0,0,224,112,56,0,0,0,224,112,56,0,0,0,224,112,56,0,0,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,0,63,255,255,192,0,0,63,255,255,192,0,0,63,255,255,192, + // 0x5408 合 + 8,84,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,3,240,0,0,126,0,3,240,0,0,126,0,3,240,0,0,126,0,252,15,255,255,129,248,252,15,255,255,129,248,252,15,255,255,129,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x540d 名 + 13,84,39,48,240,48,0,250,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,1,255,255,240,0,1,255,255,240,0,1,255,255,240,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,113,192,3,128,0,113,192,3,128,0,113,192,3,128,31,128,56,28,0,31,128,56,28,0,31,128,56,28,0,0,0,56,224,0,0,0,56,224,0,0,0,56,224,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,1,248,0,0,0,1,248,0,0,0,1,248,0,0,0,127,255,255,254,0,127,255,255,254,0,127,255,255,254,255,142,0,0,14,255,142,0,0,14,255,142,0,0,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14,0,15,255,255,254,0,15,255,255,254,0,15,255,255,254,0,14,0,0,14,0,14,0,0,14,0,14,0,0,14, + // 0x540e 后 + 14,84,45,48,32,48,0,250,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,255,254,0,0,0,0,255,254,0,0,0,0,255,254,0,0,127,255,0,0,0,0,127,255,0,0,0,0,127,255,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,127,255,255,255,248,0,127,255,255,255,248,0,127,255,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,113,255,255,254,0,0,113,255,255,254,0,0,113,255,255,254,0,0,113,192,0,14,0,0,113,192,0,14,0,0,113,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,224,1,255,255,254,0,224,1,255,255,254,0,224,1,255,255,254,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0, + // 0x5411 向 + 17,84,39,48,240,48,3,250,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,15,255,224,14,224,15,255,224,14,224,15,255,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,15,255,224,14,224,15,255,224,14,224,15,255,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x5426 否 + 38,84,45,45,14,48,0,250,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,1,199,31,128,0,0,1,199,31,128,0,0,1,199,31,128,0,0,14,7,0,126,0,0,14,7,0,126,0,0,14,7,0,126,0,3,240,7,0,1,192,3,240,7,0,1,192,3,240,7,0,1,192,252,0,7,0,0,56,252,0,7,0,0,56,252,0,7,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x542f 启 + 47,84,42,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,127,255,255,255,192,0,127,255,255,255,192,0,127,255,255,255,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,127,255,255,255,192,0,127,255,255,255,192,0,127,255,255,255,192,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192,224,1,255,255,255,192,224,1,255,255,255,192,224,1,255,255,255,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x544a 告 + 74,84,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,127,255,255,254,0,0,127,255,255,254,0,0,127,255,255,254,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,28,0,7,0,0,0,28,0,7,0,0,0,28,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x5468 周 + 104,84,39,45,225,48,0,250,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,143,255,255,142,3,143,255,255,142,3,143,255,255,142,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,0,0,14,3,128,0,0,14,3,128,0,0,14,3,129,255,252,14,3,129,255,252,14,3,129,255,252,14,3,129,192,28,14,3,129,192,28,14,3,129,192,28,14,3,129,192,28,14,3,129,192,28,14,3,129,192,28,14,3,129,255,252,14,3,129,255,252,14,3,129,255,252,14,28,0,0,0,14,28,0,0,0,14,28,0,0,0,14,28,0,0,3,142,28,0,0,3,142,28,0,0,3,142,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x547d 命 + 125,84,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,3,241,255,252,126,0,3,241,255,252,126,0,3,241,255,252,126,0,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,248,255,254,0,3,255,248,255,254,0,3,255,248,255,254,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,255,248,227,142,0,3,255,248,227,142,0,3,255,248,227,142,0,3,128,56,224,112,0,3,128,56,224,112,0,3,128,56,224,112,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0, + // 0x548c 和 + 140,84,42,48,32,48,0,250,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,15,248,0,0,0,0,15,248,0,0,0,0,15,248,0,0,0,31,254,0,0,0,0,31,254,0,0,0,0,31,254,0,0,0,0,0,14,0,31,255,192,0,14,0,31,255,192,0,14,0,31,255,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,255,255,255,28,1,192,255,255,255,28,1,192,255,255,255,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,126,0,28,1,192,0,126,0,28,1,192,0,126,0,28,1,192,0,127,192,28,1,192,0,127,192,28,1,192,0,127,192,28,1,192,3,142,56,28,1,192,3,142,56,28,1,192,3,142,56,28,1,192,3,142,56,28,1,192,3,142,56,28,1,192,3,142,56,28,1,192,28,14,0,28,1,192,28,14,0,28,1,192,28,14,0,28,1,192,224,14,0,31,255,192,224,14,0,31,255,192,224,14,0,31,255,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0, + // 0x54cd 响 + 205,84,39,48,240,48,3,250,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,255,240,7,0,0,255,240,7,0,0,255,240,7,0,0,224,113,255,255,254,224,113,255,255,254,224,113,255,255,254,224,113,192,0,14,224,113,192,0,14,224,113,192,0,14,224,113,192,0,14,224,113,192,0,14,224,113,192,0,14,224,113,199,255,142,224,113,199,255,142,224,113,199,255,142,224,113,199,3,142,224,113,199,3,142,224,113,199,3,142,224,113,199,3,142,224,113,199,3,142,224,113,199,3,142,224,113,199,3,142,224,113,199,3,142,224,113,199,3,142,255,241,199,3,142,255,241,199,3,142,255,241,199,3,142,224,113,199,255,142,224,113,199,255,142,224,113,199,255,142,0,1,192,0,14,0,1,192,0,14,0,1,192,0,14,0,1,192,0,14,0,1,192,0,14,0,1,192,0,14,0,1,192,3,142,0,1,192,3,142,0,1,192,3,142,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112, + // 0x55b7 喷 + 183,85,42,48,32,48,3,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,255,240,0,28,0,0,255,240,0,28,0,0,255,240,0,28,0,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,113,255,255,255,192,224,113,255,255,255,192,224,113,255,255,255,192,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,63,255,254,0,224,112,63,255,254,0,224,112,63,255,254,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,56,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,255,240,56,28,14,0,255,240,56,28,14,0,255,240,56,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,0,0,56,28,14,0,0,0,56,28,14,0,0,0,56,28,14,0,0,0,0,227,128,0,0,0,0,227,128,0,0,0,0,227,128,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,0,1,248,0,14,0,0,1,248,0,14,0,0,1,248,0,14,0, + // 0x5634 嘴 + 52,86,45,48,32,48,0,250,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,0,0,56,224,113,192,0,0,56,224,113,192,0,0,56,224,113,192,255,240,56,252,126,0,255,240,56,252,126,0,255,240,56,252,126,0,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,252,112,56,224,112,56,252,112,56,224,112,56,252,112,56,224,113,255,0,15,248,224,113,255,0,15,248,224,113,255,0,15,248,224,112,7,255,240,0,224,112,7,255,240,0,224,112,7,255,240,0,224,112,56,0,112,0,224,112,56,0,112,0,224,112,56,0,112,0,224,113,255,255,255,192,224,113,255,255,255,192,224,113,255,255,255,192,224,126,56,28,1,192,224,126,56,28,1,192,224,126,56,28,1,192,255,240,63,255,255,192,255,240,63,255,255,192,255,240,63,255,255,192,224,112,56,28,1,192,224,112,56,28,1,192,224,112,56,28,1,192,0,0,63,255,255,192,0,0,63,255,255,192,0,0,63,255,255,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192,28,113,192,0,1,192,28,113,192,0,1,192,28,113,192,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + // 0x5668 器 + 104,86,45,45,14,48,0,250,3,255,248,31,255,192,3,255,248,31,255,192,3,255,248,31,255,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,255,248,31,255,192,3,255,248,31,255,192,3,255,248,31,255,192,0,0,7,3,128,0,0,0,7,3,128,0,0,0,7,3,128,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,15,192,31,128,0,0,15,192,31,128,0,0,15,192,31,128,0,3,240,0,0,126,0,3,240,0,0,126,0,3,240,0,0,126,0,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248,3,255,248,31,255,192,3,255,248,31,255,192,3,255,248,31,255,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,255,248,31,255,192,3,255,248,31,255,192,3,255,248,31,255,192, + // 0x5674 噴 + 116,86,42,48,32,48,3,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,255,240,0,28,0,0,255,240,0,28,0,0,255,240,0,28,0,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,113,255,255,255,192,224,113,255,255,255,192,224,113,255,255,255,192,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,63,255,254,0,224,112,63,255,254,0,224,112,63,255,254,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,63,255,254,0,224,112,63,255,254,0,224,112,63,255,254,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,255,240,63,255,254,0,255,240,63,255,254,0,255,240,63,255,254,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x56de 回 + 222,86,36,42,210,48,6,253,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,127,255,224,112,224,127,255,224,112,224,127,255,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,127,255,224,112,224,127,255,224,112,224,127,255,224,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x56e0 因 + 224,86,39,45,225,48,3,250,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,227,255,255,255,142,227,255,255,255,142,227,255,255,255,142,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,1,192,224,14,224,1,192,224,14,224,1,192,224,14,224,14,0,28,14,224,14,0,28,14,224,14,0,28,14,224,112,0,3,142,224,112,0,3,142,224,112,0,3,142,227,128,0,3,142,227,128,0,3,142,227,128,0,3,142,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14, + // 0x56fa 固 + 250,86,39,45,225,48,3,250,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,227,255,255,255,142,227,255,255,255,142,227,255,255,255,142,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,127,255,252,14,224,127,255,252,14,224,127,255,252,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,127,255,252,14,224,127,255,252,14,224,127,255,252,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14, + // 0x56fe 图 + 254,86,39,45,225,48,3,250,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,15,255,252,14,224,15,255,252,14,224,15,255,252,14,224,126,0,224,14,224,126,0,224,14,224,126,0,224,14,227,129,199,0,14,227,129,199,0,14,227,129,199,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,15,199,224,14,224,15,199,224,14,224,15,199,224,14,255,240,0,31,254,255,240,0,31,254,255,240,0,31,254,224,1,248,0,14,224,1,248,0,14,224,1,248,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,15,192,0,14,224,15,192,0,14,224,15,192,0,14,224,0,63,0,14,224,0,63,0,14,224,0,63,0,14,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14, + // 0x5728 在 + 40,87,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,240,0,28,0,0,3,240,0,28,0,0,3,240,0,28,0,0,28,113,255,255,255,192,28,113,255,255,255,192,28,113,255,255,255,192,224,112,0,28,0,0,224,112,0,28,0,0,224,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,127,255,255,255,248,0,127,255,255,255,248,0,127,255,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x574f 坏 + 79,87,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,31,142,0,0,112,0,31,142,0,0,112,0,31,142,0,0,112,0,31,129,192,0,112,0,31,129,192,0,112,0,31,129,192,0,112,0,227,129,192,0,112,0,227,129,192,0,112,0,227,129,192,0,127,199,3,128,56,0,127,199,3,128,56,0,127,199,3,128,56,255,128,56,3,128,56,255,128,56,3,128,56,255,128,56,3,128,56,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0x5757 块 + 87,87,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,255,255,192,28,1,192,255,255,192,28,1,192,255,255,192,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,127,192,227,128,0,0,127,192,227,128,0,0,127,192,227,128,0,255,128,7,0,112,0,255,128,7,0,112,0,255,128,7,0,112,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56, + // 0x578b 型 + 139,87,45,45,14,48,0,253,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,31,255,255,224,1,192,31,255,255,224,1,192,31,255,255,224,1,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,255,255,255,227,129,192,255,255,255,227,129,192,255,255,255,227,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,3,128,56,0,1,192,3,128,56,0,1,192,3,128,56,0,1,192,3,128,56,0,113,192,3,128,56,0,113,192,3,128,56,0,113,192,28,0,7,0,14,0,28,0,7,0,14,0,28,0,7,0,14,0,224,0,7,0,0,0,224,0,7,0,0,0,224,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x57ab 垫 + 171,87,45,45,14,48,0,253,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,31,255,199,255,254,0,31,255,199,255,254,0,31,255,199,255,254,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,15,192,28,14,0,0,15,192,28,14,0,0,15,192,28,14,0,0,126,7,252,14,0,0,126,7,252,14,0,0,126,7,252,14,0,31,142,0,28,14,56,31,142,0,28,14,56,31,142,0,28,14,56,0,14,0,227,142,56,0,14,0,227,142,56,0,14,0,227,142,56,3,142,0,224,1,248,3,142,0,224,1,248,3,142,0,224,1,248,0,112,7,0,0,56,0,112,7,0,0,56,0,112,7,0,0,56,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x586b 填 + 107,88,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,255,254,56,0,14,0,255,254,56,0,14,0,255,254,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,254,56,0,14,0,3,254,56,0,14,0,3,254,56,0,14,0,255,143,255,255,255,248,255,143,255,255,255,248,255,143,255,255,255,248,28,0,7,0,112,0,28,0,7,0,112,0,28,0,7,0,112,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x58f3 壳 + 243,88,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,0,15,255,255,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,252,0,0,0,127,248,252,0,0,0,127,248,252,0,0,0,127,248, + // 0x5907 备 + 7,89,45,48,32,48,0,250,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,126,0,3,128,0,0,126,0,3,128,0,0,126,0,3,128,0,31,129,192,28,0,0,31,129,192,28,0,0,31,129,192,28,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,127,192,31,240,0,0,127,192,31,240,0,0,127,192,31,240,0,255,128,0,0,15,248,255,128,0,0,15,248,255,128,0,0,15,248,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x590d 复 + 13,89,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,127,255,255,255,192,0,127,255,255,255,192,0,127,255,255,255,192,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,28,127,255,255,240,0,28,127,255,255,240,0,28,127,255,255,240,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,126,0,3,128,0,0,126,0,3,128,0,0,126,0,3,128,0,31,129,192,28,0,0,31,129,192,28,0,0,31,129,192,28,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,127,192,31,240,0,0,127,192,31,240,0,0,127,192,31,240,0,255,128,0,0,15,248,255,128,0,0,15,248,255,128,0,0,15,248, + // 0x5916 外 + 22,89,42,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,255,248,28,0,0,3,255,248,28,0,0,3,255,248,28,0,0,3,128,56,31,128,0,3,128,56,31,128,0,3,128,56,31,128,0,28,0,56,28,112,0,28,0,56,28,112,0,28,0,56,28,112,0,28,0,56,28,14,0,28,0,56,28,14,0,28,0,56,28,14,0,227,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0, + // 0x591a 多 + 26,89,36,48,240,48,3,250,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,15,255,255,128,0,15,255,255,128,0,15,255,255,128,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,31,240,0,224,0,31,240,0,224,0,31,240,0,224,0,0,14,7,0,0,0,14,7,0,0,0,14,7,0,0,0,1,248,224,0,0,1,248,224,0,0,1,248,224,0,0,126,7,0,0,0,126,7,0,0,0,126,7,0,0,255,128,63,255,240,255,128,63,255,240,255,128,63,255,240,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,126,0,3,128,0,126,0,3,128,0,126,0,3,128,31,129,192,28,0,31,129,192,28,0,31,129,192,28,0,0,0,56,224,0,0,0,56,224,0,0,0,56,224,0,0,0,63,0,0,0,0,63,0,0,0,0,63,0,0,0,127,192,0,0,0,127,192,0,0,0,127,192,0,0,255,128,0,0,0,255,128,0,0,0,255,128,0,0,0, + // 0x5927 大 + 39,89,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248, + // 0x5929 天 + 41,89,45,45,14,48,0,250,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248, + // 0x592a 太 + 42,89,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,56,3,128,0,0,14,56,3,128,0,0,14,56,3,128,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248, + // 0x5931 失 + 49,89,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,127,255,255,254,0,0,127,255,255,254,0,0,127,255,255,254,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,28,0,7,0,0,0,28,0,7,0,0,0,28,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,128,0,0,15,192,31,128,0,0,15,192,31,128,0,0,15,192, + // 0x5934 头 + 52,89,45,48,32,48,0,250,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,28,0,0,0,0,7,28,0,0,0,0,7,28,0,0,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,3,128,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,3,240,0,0,1,192,3,240,0,0,1,192,3,240,0,0,1,192,252,0,0,0,1,192,252,0,0,0,1,192,252,0,0,0,1,192, + // 0x597d 好 + 125,89,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,199,255,255,248,3,129,199,255,255,248,3,129,199,255,255,248,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,224,1,192,227,128,0,224,1,192,227,128,0,224,1,192,227,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x59cb 始 + 203,89,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,255,255,192,28,14,0,255,255,192,28,14,0,255,255,192,28,14,0,3,129,192,224,1,192,3,129,192,224,1,192,3,129,192,224,1,192,3,129,199,255,255,248,3,129,199,255,255,248,3,129,199,255,255,248,3,129,192,224,0,56,3,129,192,224,0,56,3,129,192,224,0,56,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,28,14,0,255,255,192,28,14,0,255,255,192,28,14,0,255,255,192,3,142,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,224,0,0,255,255,192,224,0,0,255,255,192,224,0,0,255,255,192,0,0,0,224,1,192,0,0,0,224,1,192,0,0,0,224,1,192, + // 0x5b50 子 + 80,91,45,45,14,48,0,250,31,255,255,255,254,0,31,255,255,255,254,0,31,255,255,255,254,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x5b58 存 + 88,91,45,48,32,48,0,250,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,240,0,3,128,0,3,240,0,3,128,0,3,240,0,3,128,0,28,112,0,28,0,0,28,112,0,28,0,0,28,112,0,28,0,0,224,113,255,255,255,248,224,113,255,255,255,248,224,113,255,255,255,248,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,7,28,0,0,0,112,7,28,0,0,0,112,7,28,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0, + // 0x5b89 安 + 137,91,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,255,192,3,255,255,255,255,192,3,255,255,255,255,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,126,0,28,0,0,0,126,0,28,0,0,0,126,0,28,0,0,0,1,248,28,0,0,0,1,248,28,0,0,0,1,248,28,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,56,31,128,0,0,0,56,31,128,0,0,0,56,31,128,0,0,15,192,0,112,0,0,15,192,0,112,0,0,15,192,0,112,0,31,240,0,0,14,0,31,240,0,0,14,0,31,240,0,0,14,0, + // 0x5b8c 完 + 140,91,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,31,128,0,3,255,192,31,128,0,3,255,192,31,128,0,3,255,192, + // 0x5b9a 定 + 154,91,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,3,142,7,0,0,0,3,142,7,0,0,0,3,142,7,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0, + // 0x5ba2 客 + 162,91,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,14,0,0,1,192,224,14,0,0,1,192,224,14,0,0,1,192,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,143,192,28,0,0,3,143,192,28,0,0,3,143,192,28,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,127,192,31,240,0,0,127,192,31,240,0,0,127,192,31,240,0,255,128,0,0,15,248,255,128,0,0,15,248,255,128,0,0,15,248,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x5bab 宫 + 171,91,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0, + // 0x5bf9 对 + 249,91,42,48,32,48,3,250,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,0,1,199,255,255,192,0,1,199,255,255,192,0,1,199,255,255,192,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,3,142,7,3,128,0,3,142,7,3,128,0,3,142,7,3,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,0,0,0,227,128,0,0,0,0,227,128,0,0,0,0,227,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x5c06 将 + 6,92,45,48,32,48,0,250,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,255,254,0,0,14,0,255,254,0,0,14,0,255,254,0,0,14,7,0,14,0,0,14,7,0,14,0,0,14,7,0,14,0,28,14,56,0,112,0,28,14,56,0,112,0,28,14,56,0,112,0,3,142,0,227,128,0,3,142,0,227,128,0,3,142,0,227,128,0,3,142,0,28,0,0,3,142,0,28,0,0,3,142,0,28,0,0,0,14,0,224,112,0,0,14,0,224,112,0,0,14,0,224,112,0,0,14,63,0,112,0,0,14,63,0,112,0,0,14,63,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,3,142,63,255,255,248,3,142,63,255,255,248,3,142,63,255,255,248,252,14,0,0,112,0,252,14,0,0,112,0,252,14,0,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,0,224,112,0,0,14,0,224,112,0,0,14,0,224,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,28,112,0,0,14,0,28,112,0,0,14,0,28,112,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0, + // 0x5c0f 小 + 15,92,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,0,56,3,128,7,0,0,56,3,128,7,0,0,56,28,0,7,0,0,56,28,0,7,0,0,56,28,0,7,0,0,56,224,0,7,0,0,56,224,0,7,0,0,56,224,0,7,0,0,56,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x5c31 就 + 49,92,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,255,255,248,28,14,0,255,255,248,28,14,0,255,255,248,28,14,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,31,255,199,255,255,248,31,255,199,255,255,248,31,255,199,255,255,248,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,31,255,192,28,112,0,31,255,192,28,112,0,31,255,192,28,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,28,113,192,224,112,0,28,113,192,224,112,0,28,113,192,224,112,0,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,0,112,7,0,112,56,0,112,7,0,112,56,0,112,7,0,112,56,28,112,7,0,15,248,28,112,7,0,15,248,28,112,7,0,15,248,3,128,56,0,0,0,3,128,56,0,0,0,3,128,56,0,0,0, + // 0x5c4f 屏 + 79,92,42,45,14,48,0,250,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,143,255,255,254,0,3,143,255,255,254,0,3,143,255,255,254,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,255,255,255,255,192,3,255,255,255,255,192,3,255,255,255,255,192,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0, + // 0x5de5 工 + 229,93,45,36,216,48,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x5dee 差 + 238,93,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,113,255,255,254,0,0,113,255,255,254,0,0,113,255,255,254,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,0,127,255,255,255,192,0,127,255,255,255,192,0,127,255,255,255,192, + // 0x5df2 已 + 242,93,36,42,210,48,6,253,255,255,255,252,0,255,255,255,252,0,255,255,255,252,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,255,255,255,252,0,255,255,255,252,0,255,255,255,252,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240, + // 0x5e73 平 + 115,94,45,45,14,48,0,250,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x5e76 并 + 118,94,45,48,32,48,0,250,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0, + // 0x5e8a 床 + 138,94,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,3,255,255,255,255,248,3,255,255,255,255,248,3,255,255,255,255,248,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,143,255,255,255,192,3,143,255,255,255,192,3,143,255,255,255,192,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,7,252,0,0,3,128,7,252,0,0,3,128,7,252,0,0,3,128,56,227,128,0,3,128,56,227,128,0,3,128,56,227,128,0,3,128,56,227,128,0,3,128,56,227,128,0,3,128,56,227,128,0,3,129,192,224,112,0,3,129,192,224,112,0,3,129,192,224,112,0,28,14,0,224,14,0,28,14,0,224,14,0,28,14,0,224,14,0,28,112,0,224,1,248,28,112,0,224,1,248,28,112,0,224,1,248,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0, + // 0x5e94 应 + 148,94,45,45,14,48,0,253,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,3,255,255,255,255,248,3,255,255,255,255,248,3,255,255,255,255,248,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,3,142,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,3,129,192,224,1,192,3,129,192,224,1,192,3,129,192,224,1,192,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,224,127,255,255,255,248,224,127,255,255,255,248,224,127,255,255,255,248, + // 0x5e9f 废 + 159,94,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,3,255,255,255,255,248,3,255,255,255,255,248,3,255,255,255,255,248,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,129,192,224,112,0,3,129,192,224,112,0,3,129,192,224,112,0,3,142,0,224,14,0,3,142,0,224,14,0,3,142,0,224,14,0,3,143,255,255,255,248,3,143,255,255,255,248,3,143,255,255,255,248,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,255,255,192,3,128,7,255,255,192,3,128,7,255,255,192,3,128,56,224,1,192,3,128,56,224,1,192,3,128,56,224,1,192,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,28,14,0,28,112,0,28,14,0,28,112,0,28,14,0,28,112,0,28,112,7,224,14,0,28,112,7,224,14,0,28,112,7,224,14,0,224,1,248,0,1,248,224,1,248,0,1,248,224,1,248,0,1,248, + // 0x5ea6 度 + 166,94,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,3,255,255,255,255,248,3,255,255,255,255,248,3,255,255,255,255,248,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,255,255,255,255,192,3,255,255,255,255,192,3,255,255,255,255,192,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,63,255,128,0,3,128,63,255,128,0,3,128,63,255,128,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,143,255,255,240,0,3,143,255,255,240,0,3,143,255,255,240,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,7,252,0,0,28,0,7,252,0,0,28,0,7,252,0,0,224,1,248,3,240,0,224,1,248,3,240,0,224,1,248,3,240,0,3,254,0,0,15,248,3,254,0,0,15,248,3,254,0,0,15,248, + // 0x5f00 开 + 0,95,45,45,14,48,0,250,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0, + // 0x5f03 弃 + 3,95,42,48,32,48,3,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,254,0,31,255,255,255,254,0,31,255,255,255,254,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,255,255,255,240,0,3,255,255,255,240,0,3,255,255,255,240,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,255,255,255,255,255,192,255,255,255,255,255,192,255,255,255,255,255,192,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + // 0x5f0f 式 + 15,95,45,48,32,48,0,250,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,255,248,28,0,0,3,255,248,28,0,0,3,255,248,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,15,255,0,112,56,0,15,255,0,112,56,0,15,255,0,112,56,31,254,0,0,14,56,31,254,0,0,14,56,31,254,0,0,14,56,3,128,0,0,1,248,3,128,0,0,1,248,3,128,0,0,1,248,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56, + // 0x5f15 引 + 21,95,36,48,240,48,3,250,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,248,0,112,255,255,248,0,112,255,255,248,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,31,255,248,0,112,31,255,248,0,112,31,255,248,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,255,255,248,0,112,255,255,248,0,112,255,255,248,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,113,192,0,112,0,113,192,0,112,0,113,192,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112, + // 0x5f39 弹 + 57,95,45,48,32,48,0,250,0,0,7,0,1,192,0,0,7,0,1,192,0,0,7,0,1,192,255,254,0,224,14,0,255,254,0,224,14,0,255,254,0,224,14,0,0,14,0,28,112,0,0,14,0,28,112,0,0,14,0,28,112,0,0,14,7,255,255,192,0,14,7,255,255,192,0,14,7,255,255,192,0,14,7,3,129,192,0,14,7,3,129,192,0,14,7,3,129,192,31,254,7,3,129,192,31,254,7,3,129,192,31,254,7,3,129,192,28,0,7,255,255,192,28,0,7,255,255,192,28,0,7,255,255,192,28,0,7,3,129,192,28,0,7,3,129,192,28,0,7,3,129,192,28,0,7,3,129,192,28,0,7,3,129,192,28,0,7,3,129,192,31,254,7,255,255,192,31,254,7,255,255,192,31,254,7,255,255,192,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,63,255,255,248,0,14,63,255,255,248,0,14,63,255,255,248,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + // 0x5f52 归 + 82,95,39,48,240,48,3,250,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,224,113,255,255,254,224,113,255,255,254,224,113,255,255,254,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,63,255,254,224,112,63,255,254,224,112,63,255,254,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,224,112,0,0,14,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14,3,128,0,0,14,3,128,0,0,14,3,128,0,0,14,3,129,255,255,254,3,129,255,255,254,3,129,255,255,254,28,0,0,0,14,28,0,0,0,14,28,0,0,0,14,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0, + // 0x5f84 径 + 132,95,45,48,32,48,0,250,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,63,255,254,0,0,14,63,255,254,0,0,14,63,255,254,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,14,0,31,128,0,28,14,0,31,128,0,28,14,0,31,128,0,0,14,0,224,126,0,0,14,0,224,126,0,0,14,0,224,126,0,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,3,241,248,0,0,56,3,241,248,0,0,56,3,241,248,0,0,56,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,224,112,63,255,255,192,224,112,63,255,255,192,224,112,63,255,255,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x5f85 待 + 133,95,45,48,32,48,0,250,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,63,255,255,192,3,128,63,255,255,192,3,128,63,255,255,192,28,14,0,28,0,0,28,14,0,28,0,0,28,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,3,240,0,0,112,0,3,240,0,0,112,0,3,240,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,224,113,255,255,255,248,224,113,255,255,255,248,224,113,255,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0, + // 0x5faa 循 + 170,95,45,48,32,48,0,250,0,112,0,3,255,192,0,112,0,3,255,192,0,112,0,3,255,192,0,113,255,255,128,0,0,113,255,255,128,0,0,113,255,255,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,224,113,255,255,255,248,224,113,255,255,255,248,224,113,255,255,255,248,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,3,129,199,255,255,192,3,129,199,255,255,192,3,129,199,255,255,192,31,129,199,0,1,192,31,129,199,0,1,192,31,129,199,0,1,192,227,129,199,0,1,192,227,129,199,0,1,192,227,129,199,0,1,192,3,129,199,255,255,192,3,129,199,255,255,192,3,129,199,255,255,192,3,129,199,0,1,192,3,129,199,0,1,192,3,129,199,0,1,192,3,129,199,255,255,192,3,129,199,255,255,192,3,129,199,255,255,192,3,142,7,0,1,192,3,142,7,0,1,192,3,142,7,0,1,192,3,142,7,0,1,192,3,142,7,0,1,192,3,142,7,0,1,192,3,240,7,255,255,192,3,240,7,255,255,192,3,240,7,255,255,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192, + // 0x5fae 微 + 174,95,45,48,32,48,0,250,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,113,199,28,14,0,0,113,199,28,14,0,0,113,199,28,14,0,3,129,199,28,14,0,3,129,199,28,14,0,3,129,199,28,14,0,28,1,199,28,112,0,28,1,199,28,112,0,28,1,199,28,112,0,224,113,255,252,127,248,224,113,255,252,127,248,224,113,255,252,127,248,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,31,143,255,252,113,192,31,143,255,252,113,192,31,143,255,252,113,192,227,128,0,0,113,192,227,128,0,0,113,192,227,128,0,0,113,192,3,129,255,224,113,192,3,129,255,224,113,192,3,129,255,224,113,192,3,129,192,224,113,192,3,129,192,224,113,192,3,129,192,224,113,192,3,129,192,227,142,0,3,129,192,227,142,0,3,129,192,227,142,0,3,129,192,252,14,0,3,129,192,252,14,0,3,129,192,252,14,0,3,129,192,224,113,192,3,129,192,224,113,192,3,129,192,224,113,192,3,142,0,0,113,192,3,142,0,0,113,192,3,142,0,0,113,192,3,240,0,3,128,56,3,240,0,3,128,56,3,240,0,3,128,56, + // 0x5fc3 心 + 195,95,45,42,252,48,0,253,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,0,56,3,129,192,0,0,56,3,129,192,0,0,56,28,1,192,0,0,56,28,1,192,0,0,56,28,1,192,0,0,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,0,63,255,240,0,0,0,63,255,240,0,0,0,63,255,240,0, + // 0x5ffd 忽 + 253,95,45,45,14,48,0,253,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,127,255,255,254,0,0,127,255,255,254,0,0,127,255,255,254,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,28,1,192,224,14,0,28,1,192,224,14,0,28,1,192,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,14,0,224,1,192,0,14,0,224,1,192,0,14,0,224,1,192,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,224,1,255,255,240,0,224,1,255,255,240,0,224,1,255,255,240,0, + // 0x6027 性 + 39,96,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,126,7,255,255,192,0,126,7,255,255,192,0,126,7,255,255,192,28,113,199,3,128,0,28,113,199,3,128,0,28,113,199,3,128,0,28,112,56,3,128,0,28,112,56,3,128,0,28,112,56,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x603b 总 + 59,96,45,45,14,48,0,253,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,14,0,224,1,192,0,14,0,224,1,192,0,14,0,224,1,192,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,224,1,255,255,240,0,224,1,255,255,240,0,224,1,255,255,240,0, + // 0x6062 恢 + 98,96,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,126,0,224,0,0,0,126,0,224,0,0,0,126,0,224,0,0,28,113,192,224,112,0,28,113,192,224,112,0,28,113,192,224,112,0,28,112,0,224,112,0,28,112,0,224,112,0,28,112,0,224,112,0,28,112,7,0,112,56,28,112,7,0,112,56,28,112,7,0,112,56,224,112,7,28,112,56,224,112,7,28,112,56,224,112,7,28,112,56,0,112,7,28,113,192,0,112,7,28,113,192,0,112,7,28,113,192,0,112,56,224,112,0,0,112,56,224,112,0,0,112,56,224,112,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,0,113,192,3,142,0,0,113,192,3,142,0,0,113,192,3,142,0,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,7,0,0,56,0,112,7,0,0,56,0,112,7,0,0,56, + // 0x606f 息 + 111,96,45,45,14,48,0,253,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,14,0,224,1,192,0,14,0,224,1,192,0,14,0,224,1,192,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,224,1,255,255,240,0,224,1,255,255,240,0,224,1,255,255,240,0, + // 0x611f 感 + 31,97,45,48,32,48,0,250,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,3,255,255,255,255,248,3,255,255,255,255,248,3,255,255,255,255,248,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,143,255,227,129,192,3,143,255,227,129,192,3,143,255,227,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,143,255,227,142,0,3,143,255,227,142,0,3,143,255,227,142,0,3,142,0,224,126,0,3,142,0,224,126,0,3,142,0,224,126,0,3,142,0,224,112,56,3,142,0,224,112,56,3,142,0,224,112,56,28,15,255,227,142,56,28,15,255,227,142,56,28,15,255,227,142,56,28,0,0,28,1,248,28,0,0,28,1,248,28,0,0,28,1,248,224,0,0,224,0,56,224,0,0,224,0,56,224,0,0,224,0,56,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,28,14,0,224,1,192,28,14,0,224,1,192,28,14,0,224,1,192,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,224,1,255,255,240,56,224,1,255,255,240,56,224,1,255,255,240,56, + // 0x620f 戏 + 15,98,42,48,32,48,3,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,14,0,255,255,192,28,14,0,255,255,192,28,14,0,255,255,192,28,14,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,31,255,192,0,1,192,31,255,192,0,1,192,31,255,192,28,14,63,252,0,0,28,14,63,252,0,0,28,14,63,252,0,0,3,142,0,28,14,0,3,142,0,28,14,0,3,142,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,3,142,0,28,112,0,3,142,0,28,112,0,3,142,0,28,112,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,28,1,192,31,129,192,28,1,192,31,129,192,28,1,192,31,129,192,224,0,0,224,113,192,224,0,0,224,113,192,224,0,0,224,113,192,0,0,7,0,15,192,0,0,7,0,15,192,0,0,7,0,15,192,0,0,56,0,1,192,0,0,56,0,1,192,0,0,56,0,1,192, + // 0x6210 成 + 16,98,45,48,32,48,0,250,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,255,255,255,255,248,3,255,255,255,255,248,3,255,255,255,255,248,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,142,56,3,240,56,3,142,56,3,240,56,3,142,56,3,240,56,28,1,192,28,14,56,28,1,192,28,14,56,28,1,192,28,14,56,28,0,0,224,1,248,28,0,0,224,1,248,28,0,0,224,1,248,224,0,7,0,0,56,224,0,7,0,0,56,224,0,7,0,0,56, + // 0x6237 户 + 55,98,36,48,240,48,3,250,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,3,255,255,255,240,3,255,255,255,240,3,255,255,255,240,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,3,255,255,255,240,3,255,255,255,240,3,255,255,255,240,3,128,0,0,112,3,128,0,0,112,3,128,0,0,112,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0, + // 0x6240 所 + 64,98,45,48,32,48,0,250,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,1,255,0,127,192,0,1,255,0,127,192,0,1,255,0,127,192,3,254,0,255,128,0,3,254,0,255,128,0,3,254,0,255,128,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,255,248,224,0,0,3,255,248,224,0,0,3,255,248,224,0,0,3,128,56,255,255,248,3,128,56,255,255,248,3,128,56,255,255,248,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,255,248,224,14,0,3,255,248,224,14,0,3,255,248,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,28,0,7,0,14,0,28,0,7,0,14,0,28,0,7,0,14,0,28,0,7,0,14,0,28,0,7,0,14,0,28,0,7,0,14,0,224,0,56,0,14,0,224,0,56,0,14,0,224,0,56,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0, + // 0x6247 扇 + 71,98,42,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,255,192,3,255,255,255,255,192,3,255,255,255,255,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,255,255,255,255,192,3,255,255,255,255,192,3,255,255,255,255,192,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,255,255,31,255,192,3,255,255,31,255,192,3,255,255,31,255,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,3,142,7,3,129,192,3,142,7,3,129,192,3,142,7,3,129,192,3,129,199,0,113,192,3,129,199,0,113,192,3,129,199,0,113,192,28,14,7,3,129,192,28,14,7,3,129,192,28,14,7,3,129,192,28,112,7,28,1,192,28,112,7,28,1,192,28,112,7,28,1,192,224,1,199,0,113,192,224,1,199,0,113,192,224,1,199,0,113,192,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0, + // 0x624b 手 + 75,98,45,48,32,48,0,250,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,255,254,0,0,0,0,255,254,0,0,0,0,255,254,0,3,255,255,0,0,0,3,255,255,0,0,0,3,255,255,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x6253 打 + 83,98,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,126,0,3,128,0,0,126,0,3,128,0,0,126,0,3,128,0,3,240,0,3,128,0,3,240,0,3,128,0,3,240,0,3,128,0,252,112,0,3,128,0,252,112,0,3,128,0,252,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,28,112,0,227,128,0,28,112,0,227,128,0,28,112,0,227,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0, + // 0x6267 执 + 103,98,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,255,255,199,255,254,0,255,255,199,255,254,0,255,255,199,255,254,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,113,192,28,14,0,0,113,192,28,14,0,0,113,192,28,14,0,0,126,7,28,14,0,0,126,7,28,14,0,0,126,7,28,14,0,3,240,0,252,14,0,3,240,0,252,14,0,3,240,0,252,14,0,252,112,0,28,14,0,252,112,0,28,14,0,252,112,0,28,14,0,0,112,0,227,142,0,0,112,0,227,142,0,0,112,0,227,142,0,0,112,0,227,142,56,0,112,0,227,142,56,0,112,0,227,142,56,0,112,7,0,14,56,0,112,7,0,14,56,0,112,7,0,14,56,28,112,56,0,1,248,28,112,56,0,1,248,28,112,56,0,1,248,3,129,192,0,0,56,3,129,192,0,0,56,3,129,192,0,0,56, + // 0x6279 批 + 121,98,45,48,32,48,0,250,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,56,0,112,7,0,112,56,0,112,7,0,112,56,255,255,199,0,112,56,255,255,199,0,112,56,255,255,199,0,112,56,0,112,7,0,113,192,0,112,7,0,113,192,0,112,7,0,113,192,0,112,7,252,126,0,0,112,7,252,126,0,0,112,7,252,126,0,0,113,199,0,112,0,0,113,199,0,112,0,0,113,199,0,112,0,0,126,7,0,112,0,0,126,7,0,112,0,0,126,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,252,112,7,0,112,0,252,112,7,0,112,0,252,112,7,0,112,0,0,112,7,0,112,56,0,112,7,0,112,56,0,112,7,0,112,56,0,112,7,28,112,56,0,112,7,28,112,56,0,112,7,28,112,56,0,112,7,224,112,56,0,112,7,224,112,56,0,112,7,224,112,56,28,112,7,0,15,248,28,112,7,0,15,248,28,112,7,0,15,248,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0, + // 0x6296 抖 + 150,98,45,48,32,48,0,250,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,113,192,224,112,0,0,113,192,224,112,0,0,113,192,224,112,0,0,126,0,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,3,240,0,0,127,248,3,240,0,0,127,248,3,240,0,0,127,248,252,112,63,255,240,0,252,112,63,255,240,0,252,112,63,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0, + // 0x62a5 报 + 165,98,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,255,255,199,0,113,192,255,255,199,0,113,192,255,255,199,0,113,192,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,113,199,255,255,192,0,113,199,255,255,192,0,113,199,255,255,192,0,126,7,28,1,192,0,126,7,28,1,192,0,126,7,28,1,192,3,240,7,28,1,192,3,240,7,28,1,192,3,240,7,28,1,192,252,112,7,3,142,0,252,112,7,3,142,0,252,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,28,112,7,28,1,192,28,112,7,28,1,192,28,112,7,28,1,192,3,128,7,224,0,56,3,128,7,224,0,56,3,128,7,224,0,56, + // 0x62ac 抬 + 172,98,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,255,255,199,0,1,192,255,255,199,0,1,192,255,255,199,0,1,192,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,126,7,255,255,192,0,126,7,255,255,192,0,126,7,255,255,192,3,240,7,0,1,192,3,240,7,0,1,192,3,240,7,0,1,192,252,112,7,0,1,192,252,112,7,0,1,192,252,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,28,112,7,255,255,192,28,112,7,255,255,192,28,112,7,255,255,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192, + // 0x62bd 抽 + 189,98,42,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,255,255,199,255,255,192,255,255,199,255,255,192,255,255,199,255,255,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,113,199,3,129,192,0,113,199,3,129,192,0,113,199,3,129,192,0,126,7,3,129,192,0,126,7,3,129,192,0,126,7,3,129,192,3,240,7,255,255,192,3,240,7,255,255,192,3,240,7,255,255,192,252,112,7,3,129,192,252,112,7,3,129,192,252,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,28,112,7,255,255,192,28,112,7,255,255,192,28,112,7,255,255,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192, + // 0x62d4 拔 + 212,98,45,48,32,48,0,250,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,255,254,63,255,255,248,255,254,63,255,255,248,255,254,63,255,255,248,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,113,192,224,0,0,0,113,192,224,0,0,0,113,192,224,0,0,0,126,0,255,255,192,0,126,0,255,255,192,0,126,0,255,255,192,3,240,7,28,1,192,3,240,7,28,1,192,3,240,7,28,1,192,252,112,7,28,1,192,252,112,7,28,1,192,252,112,7,28,1,192,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,28,113,192,28,1,192,28,113,192,28,1,192,28,113,192,28,1,192,3,128,7,224,0,56,3,128,7,224,0,56,3,128,7,224,0,56, + // 0x62e9 择 + 233,98,45,48,32,48,0,250,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,129,255,255,254,0,3,129,255,255,254,0,3,129,255,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,255,240,0,227,128,0,255,240,0,227,128,0,255,240,0,227,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,7,227,240,0,3,128,7,227,240,0,3,128,7,227,240,0,3,129,248,28,15,248,3,129,248,28,15,248,3,129,248,28,15,248,3,240,0,28,0,0,3,240,0,28,0,0,3,240,0,28,0,0,255,128,63,255,254,0,255,128,63,255,254,0,255,128,63,255,254,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,227,128,0,28,0,0,227,128,0,28,0,0,227,128,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + // 0x6309 按 + 9,99,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,255,254,56,0,0,56,255,254,56,0,0,56,255,254,56,0,0,56,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,126,63,255,255,248,0,126,63,255,255,248,0,126,63,255,255,248,3,240,0,224,14,0,3,240,0,224,14,0,3,240,0,224,14,0,252,112,0,224,14,0,252,112,0,224,14,0,252,112,0,224,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,0,252,112,0,0,112,0,252,112,0,0,112,0,252,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,28,112,0,224,14,0,28,112,0,224,14,0,28,112,0,224,14,0,3,128,63,0,1,192,3,128,63,0,1,192,3,128,63,0,1,192, + // 0x6321 挡 + 33,99,42,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,7,28,1,192,0,112,7,28,1,192,0,112,7,28,1,192,0,112,7,28,1,192,0,112,7,28,1,192,0,112,7,28,1,192,255,255,199,28,14,0,255,255,199,28,14,0,255,255,199,28,14,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,126,0,0,1,192,0,126,0,0,1,192,0,126,0,0,1,192,3,240,0,0,1,192,3,240,0,0,1,192,3,240,0,0,1,192,252,112,63,255,255,192,252,112,63,255,255,192,252,112,63,255,255,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,28,113,255,255,255,192,28,113,255,255,255,192,28,113,255,255,255,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192, + // 0x6324 挤 + 36,99,45,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,255,255,199,0,112,0,255,255,199,0,112,0,255,255,199,0,112,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,113,192,28,0,0,0,113,192,28,0,0,0,113,192,28,0,0,0,126,7,227,240,0,0,126,7,227,240,0,0,126,7,227,240,0,3,241,248,0,15,248,3,241,248,0,15,248,3,241,248,0,15,248,252,112,7,0,112,0,252,112,7,0,112,0,252,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,28,112,56,0,112,0,28,112,56,0,112,0,28,112,56,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0, + // 0x635f 损 + 95,99,42,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,255,255,192,255,254,0,255,255,192,255,254,0,255,255,192,255,254,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,113,199,0,1,192,0,113,199,0,1,192,0,113,199,0,1,192,0,126,7,3,129,192,0,126,7,3,129,192,0,126,7,3,129,192,3,240,7,3,129,192,3,240,7,3,129,192,3,240,7,3,129,192,252,112,7,3,129,192,252,112,7,3,129,192,252,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,28,112,0,224,1,192,28,112,0,224,1,192,28,112,0,224,1,192,3,128,63,0,1,192,3,128,63,0,1,192,3,128,63,0,1,192, + // 0x6362 换 + 98,99,45,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,255,254,56,0,112,0,255,254,56,0,112,0,255,254,56,0,112,0,0,113,199,255,255,192,0,113,199,255,255,192,0,113,199,255,255,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,126,7,3,129,192,0,126,7,3,129,192,0,126,7,3,129,192,3,240,7,3,129,192,3,240,7,3,129,192,3,240,7,3,129,192,252,112,7,3,129,192,252,112,7,3,129,192,252,112,7,3,129,192,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,28,112,7,0,1,192,28,112,7,0,1,192,28,112,7,0,1,192,3,129,248,0,0,56,3,129,248,0,0,56,3,129,248,0,0,56, + // 0x6389 掉 + 137,99,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,255,248,0,112,0,3,255,248,0,112,0,3,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,255,255,199,255,255,192,255,255,199,255,255,192,255,255,199,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,113,199,255,255,192,0,113,199,255,255,192,0,113,199,255,255,192,0,126,7,0,1,192,0,126,7,0,1,192,0,126,7,0,1,192,3,240,7,255,255,192,3,240,7,255,255,192,3,240,7,255,255,192,252,112,7,3,129,192,252,112,7,3,129,192,252,112,7,3,129,192,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + // 0x63a2 探 + 162,99,45,48,32,48,0,250,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,255,254,7,0,112,0,255,254,7,0,112,0,255,254,7,0,112,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,142,0,28,0,0,3,142,0,28,0,0,3,142,0,28,0,0,3,241,255,255,255,192,3,241,255,255,255,192,3,241,255,255,255,192,255,128,0,28,0,0,255,128,0,28,0,0,255,128,0,28,0,0,3,128,0,255,128,0,3,128,0,255,128,0,3,128,0,255,128,0,3,128,7,28,112,0,3,128,7,28,112,0,3,128,7,28,112,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,3,143,192,28,1,248,3,143,192,28,1,248,3,143,192,28,1,248,227,128,0,28,0,0,227,128,0,28,0,0,227,128,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + // 0x63a5 接 + 165,99,45,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,255,255,199,0,14,0,255,255,199,0,14,0,255,255,199,0,14,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,126,0,28,0,0,0,126,0,28,0,0,0,126,0,28,0,0,3,241,255,255,255,248,3,241,255,255,255,248,3,241,255,255,255,248,252,112,0,224,14,0,252,112,0,224,14,0,252,112,0,224,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,31,128,0,0,112,0,31,128,0,0,112,0,31,128,0,28,112,7,224,126,0,28,112,7,224,126,0,28,112,7,224,126,0,3,129,248,0,1,192,3,129,248,0,1,192,3,129,248,0,1,192, + // 0x63a7 控 + 167,99,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,255,254,56,0,0,56,255,254,56,0,0,56,255,254,56,0,0,56,0,113,192,224,113,192,0,113,192,224,113,192,0,113,192,224,113,192,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,126,56,0,1,192,0,126,56,0,1,192,0,126,56,0,1,192,3,240,0,0,0,0,3,240,0,0,0,0,3,240,0,0,0,0,252,112,7,255,255,192,252,112,7,255,255,192,252,112,7,255,255,192,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,28,113,255,255,255,248,28,113,255,255,255,248,28,113,255,255,255,248,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0, + // 0x63d0 提 + 208,99,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,255,255,199,255,255,192,255,255,199,255,255,192,255,255,199,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,113,199,255,255,192,0,113,199,255,255,192,0,113,199,255,255,192,0,126,0,0,0,0,0,126,0,0,0,0,0,126,0,0,0,0,3,240,63,255,255,248,3,240,63,255,255,248,3,240,63,255,255,248,252,112,0,3,128,0,252,112,0,3,128,0,252,112,0,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,255,192,0,112,7,3,255,192,0,112,7,3,255,192,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,28,112,56,227,128,0,28,112,56,227,128,0,28,112,56,227,128,0,3,129,192,31,255,248,3,129,192,31,255,248,3,129,192,31,255,248, + // 0x63d2 插 + 210,99,45,48,32,48,0,250,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,3,255,192,3,128,0,3,255,192,3,128,0,3,255,192,3,129,255,252,0,0,3,129,255,252,0,0,3,129,255,252,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,255,254,0,28,0,0,255,254,0,28,0,0,255,254,0,28,0,0,3,143,255,255,255,248,3,143,255,255,255,248,3,143,255,255,255,248,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,142,7,28,0,0,3,142,7,28,0,0,3,142,7,28,0,0,3,241,248,28,127,192,3,241,248,28,127,192,3,241,248,28,127,192,255,129,192,28,1,192,255,129,192,28,1,192,255,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,255,28,127,192,3,129,255,28,127,192,3,129,255,28,127,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,227,129,255,255,255,192,227,129,255,255,255,192,227,129,255,255,255,192,28,1,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192, + // 0x6536 收 + 54,101,42,48,32,48,3,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,7,0,0,0,224,112,7,0,0,0,224,112,7,0,0,0,224,112,7,255,255,192,224,112,7,255,255,192,224,112,7,255,255,192,224,112,56,0,112,0,224,112,56,0,112,0,224,112,56,0,112,0,224,113,199,0,112,0,224,113,199,0,112,0,224,113,199,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,227,240,0,227,128,0,227,240,0,227,128,0,227,240,0,227,128,0,252,112,0,227,128,0,252,112,0,227,128,0,252,112,0,227,128,0,224,112,0,28,0,0,224,112,0,28,0,0,224,112,0,28,0,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,113,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192, + // 0x653e 放 + 62,101,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,255,248,224,0,0,255,255,248,224,0,0,255,255,248,224,0,0,3,128,0,255,255,248,3,128,0,255,255,248,3,128,0,255,255,248,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,248,224,14,0,3,255,248,224,14,0,3,255,248,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,113,192,224,14,0,28,113,192,224,14,0,28,113,192,224,14,0,224,14,7,0,1,192,224,14,7,0,1,192,224,14,7,0,1,192,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + // 0x6570 数 + 112,101,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,28,14,7,3,128,0,28,14,7,3,128,0,28,14,7,3,128,0,3,142,56,3,128,0,3,142,56,3,128,0,3,142,56,3,128,0,0,14,0,3,255,248,0,14,0,3,255,248,0,14,0,3,255,248,255,255,255,28,1,192,255,255,255,28,1,192,255,255,255,28,1,192,3,142,56,28,1,192,3,142,56,28,1,192,3,142,56,28,1,192,28,14,7,28,1,192,28,14,7,28,1,192,28,14,7,28,1,192,224,14,0,227,129,192,224,14,0,227,129,192,224,14,0,227,129,192,0,112,0,3,142,0,0,112,0,3,142,0,0,112,0,3,142,0,255,255,248,3,142,0,255,255,248,3,142,0,255,255,248,3,142,0,3,128,56,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,31,129,192,3,142,0,31,129,192,3,142,0,31,129,192,3,142,0,0,126,0,3,142,0,0,126,0,3,142,0,0,126,0,3,142,0,3,241,192,28,1,192,3,241,192,28,1,192,3,241,192,28,1,192,252,0,56,224,0,56,252,0,56,224,0,56,252,0,56,224,0,56, + // 0x6572 敲 + 114,101,45,48,32,48,0,250,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,255,255,255,0,112,0,255,255,255,0,112,0,255,255,255,0,112,0,0,0,0,0,127,248,0,0,0,0,127,248,0,0,0,0,127,248,31,255,248,0,112,0,31,255,248,0,112,0,31,255,248,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,31,255,248,255,255,192,31,255,248,255,255,192,31,255,248,255,255,192,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,255,255,255,28,1,192,255,255,255,28,1,192,255,255,255,28,1,192,224,0,7,28,1,192,224,0,7,28,1,192,224,0,7,28,1,192,227,255,199,3,142,0,227,255,199,3,142,0,227,255,199,3,142,0,227,129,199,3,142,0,227,129,199,3,142,0,227,129,199,3,142,0,227,255,199,0,112,0,227,255,199,0,112,0,227,255,199,0,112,0,224,0,7,3,142,0,224,0,7,3,142,0,224,0,7,3,142,0,224,1,199,28,1,192,224,1,199,28,1,192,224,1,199,28,1,192,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56, + // 0x6574 整 + 116,101,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,255,255,255,227,255,248,255,255,255,227,255,248,255,255,255,227,255,248,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,31,255,255,227,129,192,31,255,255,227,129,192,31,255,255,227,129,192,28,14,7,3,129,192,28,14,7,3,129,192,28,14,7,3,129,192,31,255,255,3,142,0,31,255,255,3,142,0,31,255,255,3,142,0,3,142,56,0,112,0,3,142,56,0,112,0,3,142,56,0,112,0,28,14,7,3,142,0,28,14,7,3,142,0,28,14,7,3,142,0,224,14,0,28,1,248,224,14,0,28,1,248,224,14,0,28,1,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x6599 料 + 153,101,45,48,32,48,0,250,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,28,14,56,28,14,0,28,14,56,28,14,0,28,14,56,28,14,0,3,142,56,28,14,0,3,142,56,28,14,0,3,142,56,28,14,0,3,143,192,0,14,0,3,143,192,0,14,0,3,143,192,0,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,255,255,248,28,14,0,255,255,248,28,14,0,255,255,248,28,14,0,0,126,0,28,14,0,0,126,0,28,14,0,0,126,0,28,14,0,0,127,192,0,14,0,0,127,192,0,14,0,0,127,192,0,14,0,3,142,56,0,15,248,3,142,56,0,15,248,3,142,56,0,15,248,3,142,56,255,254,0,3,142,56,255,254,0,3,142,56,255,254,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + // 0x659c 斜 + 156,101,45,48,32,48,0,250,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,113,192,3,142,0,0,113,192,3,142,0,0,113,192,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,28,0,7,0,14,0,28,0,7,0,14,0,28,0,7,0,14,0,227,255,248,28,14,0,227,255,248,28,14,0,227,255,248,28,14,0,0,14,0,3,142,0,0,14,0,3,142,0,0,14,0,3,142,0,0,14,0,3,142,0,0,14,0,3,142,0,0,14,0,3,142,0,31,255,255,0,15,248,31,255,255,0,15,248,31,255,255,0,15,248,0,14,0,31,254,0,0,14,0,31,254,0,0,14,0,31,254,0,3,142,56,0,14,0,3,142,56,0,14,0,3,142,56,0,14,0,3,142,7,0,14,0,3,142,7,0,14,0,3,142,7,0,14,0,28,14,7,0,14,0,28,14,7,0,14,0,28,14,7,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,3,142,0,0,14,0,3,142,0,0,14,0,3,142,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0, + // 0x65ad 断 + 173,101,42,48,32,48,3,250,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,227,142,56,255,240,0,227,142,56,255,240,0,227,142,56,255,240,0,224,127,192,224,0,0,224,127,192,224,0,0,224,127,192,224,0,0,224,14,0,224,0,0,224,14,0,224,0,0,224,14,0,224,0,0,255,255,248,224,0,0,255,255,248,224,0,0,255,255,248,224,0,0,224,14,0,255,255,192,224,14,0,255,255,192,224,14,0,255,255,192,224,127,192,224,112,0,224,127,192,224,112,0,224,127,192,224,112,0,227,142,56,224,112,0,227,142,56,224,112,0,227,142,56,224,112,0,252,14,56,224,112,0,252,14,56,224,112,0,252,14,56,224,112,0,224,14,0,224,112,0,224,14,0,224,112,0,224,14,0,224,112,0,224,14,0,224,112,0,224,14,0,224,112,0,224,14,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,255,255,255,0,112,0,255,255,255,0,112,0,255,255,255,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0, + // 0x65b0 新 + 176,101,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,31,255,255,31,254,0,31,255,255,31,254,0,31,255,255,31,254,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,128,56,28,0,0,3,128,56,28,0,0,3,128,56,28,0,0,0,113,192,28,0,0,0,113,192,28,0,0,0,113,192,28,0,0,255,255,255,31,255,248,255,255,255,31,255,248,255,255,255,31,255,248,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,31,255,255,28,14,0,31,255,255,28,14,0,31,255,255,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,3,142,56,28,14,0,3,142,56,28,14,0,3,142,56,28,14,0,28,14,7,28,14,0,28,14,7,28,14,0,28,14,7,28,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,3,142,0,224,14,0,3,142,0,224,14,0,3,142,0,224,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0, + // 0x65b9 方 + 185,101,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,255,255,240,0,0,1,255,255,240,0,0,1,255,255,240,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + // 0x65e0 无 + 224,101,42,45,14,48,0,250,3,255,255,255,240,0,3,255,255,255,240,0,3,255,255,255,240,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,192,28,0,0,31,255,192,28,0,0,31,255,192,28,0,0,31,255,192,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0, + // 0x65f6 时 + 246,101,42,48,32,48,3,250,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,63,255,255,192,224,14,63,255,255,192,224,14,63,255,255,192,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,224,14,7,0,112,0,224,14,7,0,112,0,224,14,7,0,112,0,224,14,0,224,112,0,224,14,0,224,112,0,224,14,0,224,112,0,224,14,0,224,112,0,224,14,0,224,112,0,224,14,0,224,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0x660e 明 + 14,102,39,45,225,48,3,250,0,0,7,255,254,0,0,7,255,254,0,0,7,255,254,255,254,7,0,14,255,254,7,0,14,255,254,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,255,254,224,14,7,255,254,224,14,7,255,254,255,254,7,0,14,255,254,7,0,14,255,254,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,255,254,224,14,7,255,254,224,14,7,255,254,255,254,7,0,14,255,254,7,0,14,255,254,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,1,192,3,142,0,1,192,3,142,0,1,192,3,142,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112, + // 0x662f 是 + 47,102,45,48,32,48,0,250,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,3,142,7,0,0,0,3,142,7,0,0,0,3,142,7,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,224,0,63,255,255,248,224,0,63,255,255,248,224,0,63,255,255,248, + // 0x6682 暂 + 130,102,45,48,32,48,0,250,0,112,0,0,15,192,0,112,0,0,15,192,0,112,0,0,15,192,255,255,248,255,240,0,255,255,248,255,240,0,255,255,248,255,240,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,28,14,0,224,0,0,28,14,0,224,0,0,28,14,0,224,0,0,31,255,248,255,255,248,31,255,248,255,255,248,31,255,248,255,255,248,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,15,248,224,14,0,0,15,248,224,14,0,0,15,248,224,14,0,255,254,7,0,14,0,255,254,7,0,14,0,255,254,7,0,14,0,28,14,56,0,14,0,28,14,56,0,14,0,28,14,56,0,14,0,0,127,255,255,254,0,0,127,255,255,254,0,0,127,255,255,254,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0, + // 0x66ab 暫 + 171,102,42,48,32,48,3,250,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,255,255,248,255,240,0,255,255,248,255,240,0,255,255,248,255,240,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,255,255,248,224,0,0,255,255,248,224,0,0,255,255,248,224,0,0,224,112,56,255,255,192,224,112,56,255,255,192,224,112,56,255,255,192,255,255,248,224,112,0,255,255,248,224,112,0,255,255,248,224,112,0,224,112,56,224,112,0,224,112,56,224,112,0,224,112,56,224,112,0,255,255,248,224,112,0,255,255,248,224,112,0,255,255,248,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,255,255,248,224,112,0,255,255,248,224,112,0,255,255,248,224,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,3,255,255,255,128,0,3,255,255,255,128,0,3,255,255,255,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,255,255,255,128,0,3,255,255,255,128,0,3,255,255,255,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,255,255,255,128,0,3,255,255,255,128,0,3,255,255,255,128,0, + // 0x66f4 更 + 244,102,45,45,14,48,0,250,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,14,56,0,0,0,0,14,56,0,0,0,0,14,56,0,0,0,0,1,248,0,0,0,0,1,248,0,0,0,0,1,248,0,0,0,0,126,7,252,0,0,0,126,7,252,0,0,0,126,7,252,0,0,255,128,0,3,255,248,255,128,0,3,255,248,255,128,0,3,255,248, + // 0x6700 最 + 0,103,45,48,32,48,0,250,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,3,128,56,0,0,0,3,128,56,0,0,0,3,128,56,0,0,0,3,255,248,255,254,0,3,255,248,255,254,0,3,255,248,255,254,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,255,248,224,112,0,3,255,248,224,112,0,3,255,248,224,112,0,3,128,56,28,112,0,3,128,56,28,112,0,3,128,56,28,112,0,3,143,255,3,128,0,3,143,255,3,128,0,3,143,255,3,128,0,255,240,56,28,112,0,255,240,56,28,112,0,255,240,56,28,112,0,28,0,56,224,14,0,28,0,56,224,14,0,28,0,56,224,14,0,0,0,63,0,1,248,0,0,63,0,1,248,0,0,63,0,1,248, + // 0x6709 有 + 9,103,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,3,143,255,255,240,0,3,143,255,255,240,0,3,143,255,255,240,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,28,112,0,0,14,0,28,112,0,0,14,0,28,112,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0, + // 0x671f 期 + 31,103,42,48,32,48,0,250,3,128,56,0,0,0,3,128,56,0,0,0,3,128,56,0,0,0,3,128,56,31,255,192,3,128,56,31,255,192,3,128,56,31,255,192,31,255,255,28,1,192,31,255,255,28,1,192,31,255,255,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,255,248,31,255,192,3,255,248,31,255,192,3,255,248,31,255,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,128,56,31,255,192,3,128,56,31,255,192,3,128,56,31,255,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,255,255,255,28,1,192,255,255,255,28,1,192,255,255,255,28,1,192,0,1,192,224,1,192,0,1,192,224,1,192,0,1,192,224,1,192,3,128,56,224,1,192,3,128,56,224,1,192,3,128,56,224,1,192,28,0,7,0,113,192,28,0,7,0,113,192,28,0,7,0,113,192,224,0,56,0,14,0,224,0,56,0,14,0,224,0,56,0,14,0, + // 0x673a 机 + 58,103,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,255,240,0,0,112,7,255,240,0,0,112,7,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,255,255,199,0,112,0,255,255,199,0,112,0,255,255,199,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,3,254,7,0,112,0,3,254,7,0,112,0,3,254,7,0,112,0,28,113,199,0,112,0,28,113,199,0,112,0,28,113,199,0,112,0,28,113,199,0,112,0,28,113,199,0,112,0,28,113,199,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,0,112,7,0,112,56,0,112,7,0,112,56,0,112,7,0,112,56,0,112,7,0,112,56,0,112,7,0,112,56,0,112,7,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,15,248,0,112,56,0,15,248,0,112,56,0,15,248,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0, + // 0x6740 杀 + 64,103,45,48,32,48,0,250,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,126,0,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,0,1,248,31,128,0,0,1,248,31,128,0,0,1,248,31,128,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,1,248,31,128,0,0,1,248,31,128,0,0,1,248,31,128,0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0,31,128,7,0,1,192,31,128,7,0,1,192,31,128,7,0,1,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,28,1,199,0,1,192,28,1,199,0,1,192,28,1,199,0,1,192,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x675f 束 + 95,103,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,63,224,14,0,3,128,63,224,14,0,3,128,63,224,14,0,0,1,199,28,0,0,0,1,199,28,0,0,0,1,199,28,0,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,3,240,7,0,126,0,3,240,7,0,126,0,3,240,7,0,126,0,252,0,7,0,1,248,252,0,7,0,1,248,252,0,7,0,1,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x6761 条 + 97,103,45,48,32,48,0,250,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,126,0,3,128,0,0,126,0,3,128,0,0,126,0,3,128,0,31,129,192,28,0,0,31,129,192,28,0,0,31,129,192,28,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,127,199,31,240,0,0,127,199,31,240,0,0,127,199,31,240,0,255,128,7,0,15,248,255,128,7,0,15,248,255,128,7,0,15,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,28,1,199,0,1,192,28,1,199,0,1,192,28,1,199,0,1,192,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x6765 来 + 101,103,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,63,224,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,1,199,28,0,0,0,1,199,28,0,0,0,1,199,28,0,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,3,240,7,0,126,0,3,240,7,0,126,0,3,240,7,0,126,0,252,0,7,0,1,248,252,0,7,0,1,248,252,0,7,0,1,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x677f 板 + 127,103,45,48,32,48,0,250,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,127,192,0,112,0,0,127,192,0,112,0,0,127,192,0,112,7,255,128,0,0,112,7,255,128,0,0,112,7,255,128,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,255,255,199,0,0,0,255,255,199,0,0,0,255,255,199,0,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,3,240,7,28,1,192,3,240,7,28,1,192,3,240,7,28,1,192,3,254,7,28,1,192,3,254,7,28,1,192,3,254,7,28,1,192,28,113,199,28,1,192,28,113,199,28,1,192,28,113,199,28,1,192,28,113,199,3,142,0,28,113,199,3,142,0,28,113,199,3,142,0,224,112,7,3,142,0,224,112,7,3,142,0,224,112,7,3,142,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,113,192,224,0,56,0,113,192,224,0,56,0,113,192,224,0,56, + // 0x6797 林 + 151,103,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,255,255,199,255,255,248,255,255,199,255,255,248,255,255,199,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,240,0,31,240,0,3,240,0,31,240,0,3,240,0,31,240,0,3,254,0,31,240,0,3,254,0,31,240,0,3,254,0,31,240,0,28,113,192,227,142,0,28,113,192,227,142,0,28,113,192,227,142,0,28,112,0,227,142,0,28,112,0,227,142,0,28,112,0,227,142,0,224,112,7,3,129,192,224,112,7,3,129,192,224,112,7,3,129,192,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0, + // 0x67f1 柱 + 241,103,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,240,0,3,128,0,3,240,0,3,128,0,3,240,0,3,128,0,3,254,0,3,128,0,3,254,0,3,128,0,3,254,0,3,128,0,28,113,199,255,255,192,28,113,199,255,255,192,28,113,199,255,255,192,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x6821 校 + 33,104,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,7,255,255,248,0,112,7,255,255,248,0,112,7,255,255,248,255,255,192,0,0,0,255,255,192,0,0,0,255,255,192,0,0,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,3,240,7,0,1,192,3,240,7,0,1,192,3,240,7,0,1,192,3,254,56,0,0,56,3,254,56,0,0,56,3,254,56,0,0,56,28,113,192,224,14,0,28,113,192,224,14,0,28,113,192,224,14,0,28,112,0,224,14,0,28,112,0,224,14,0,28,112,0,224,14,0,224,112,0,28,112,0,224,112,0,28,112,0,224,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,63,0,1,248,0,112,63,0,1,248,0,112,63,0,1,248, + // 0x683c 格 + 60,104,45,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,255,254,63,0,112,0,255,254,63,0,112,0,255,254,63,0,112,0,0,113,192,227,128,0,0,113,192,227,128,0,0,113,192,227,128,0,3,240,0,28,0,0,3,240,0,28,0,0,3,240,0,28,0,0,3,254,0,227,128,0,3,254,0,227,128,0,3,254,0,227,128,0,28,113,199,0,126,0,28,113,199,0,126,0,28,113,199,0,126,0,28,112,56,0,1,248,28,112,56,0,1,248,28,112,56,0,1,248,224,113,199,255,254,0,224,113,199,255,254,0,224,113,199,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0, + // 0x68af 梯 + 175,104,45,48,32,48,0,250,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,255,255,192,3,129,192,255,255,192,3,129,192,255,255,192,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,3,240,7,255,255,192,3,240,7,255,255,192,3,240,7,255,255,192,3,254,7,3,128,0,3,254,7,3,128,0,3,254,7,3,128,0,28,113,199,3,128,0,28,113,199,3,128,0,28,113,199,3,128,0,28,112,7,255,255,248,28,112,7,255,255,248,28,112,7,255,255,248,224,112,0,31,128,56,224,112,0,31,128,56,224,112,0,31,128,56,0,112,0,227,128,56,0,112,0,227,128,56,0,112,0,227,128,56,0,112,7,3,142,56,0,112,7,3,142,56,0,112,7,3,142,56,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0, + // 0x68c0 检 + 192,104,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,255,255,199,0,112,0,255,255,199,0,112,0,255,255,199,0,112,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,3,241,199,255,241,248,3,241,199,255,241,248,3,241,199,255,241,248,3,254,0,0,0,0,3,254,0,0,0,0,3,254,0,0,0,0,28,113,192,224,14,0,28,113,192,224,14,0,28,113,192,224,14,0,28,112,0,28,14,0,28,112,0,28,14,0,28,112,0,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x69fd 槽 + 253,105,45,48,32,48,0,250,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,255,254,63,255,255,192,255,254,63,255,255,192,255,254,63,255,255,192,0,112,56,224,113,192,0,112,56,224,113,192,0,112,56,224,113,192,3,240,63,255,255,192,3,240,63,255,255,192,3,240,63,255,255,192,3,254,56,224,113,192,3,254,56,224,113,192,3,254,56,224,113,192,28,113,255,255,255,192,28,113,255,255,255,192,28,113,255,255,255,192,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,224,112,7,255,254,0,224,112,7,255,254,0,224,112,7,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0, + // 0x6a21 模 + 33,106,45,48,32,48,0,250,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,255,255,192,0,0,0,255,255,192,0,0,0,255,255,192,0,0,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,3,240,56,0,14,0,3,240,56,0,14,0,3,240,56,0,14,0,3,254,63,255,254,0,3,254,63,255,254,0,3,254,63,255,254,0,28,113,248,0,14,0,28,113,248,0,14,0,28,113,248,0,14,0,28,112,63,255,254,0,28,112,63,255,254,0,28,112,63,255,254,0,224,112,0,28,0,0,224,112,0,28,0,0,224,112,0,28,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,113,192,0,1,248,0,113,192,0,1,248,0,113,192,0,1,248, + // 0x6a59 橙 + 89,106,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,113,255,227,129,192,0,113,255,227,129,192,0,113,255,227,129,192,0,112,0,227,142,0,0,112,0,227,142,0,0,112,0,227,142,0,0,112,56,224,112,56,0,112,56,224,112,56,0,112,56,224,112,56,255,254,7,0,113,192,255,254,7,0,113,192,255,254,7,0,113,192,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,3,241,199,255,241,192,3,241,199,255,241,192,3,241,199,255,241,192,3,254,0,0,0,56,3,254,0,0,0,56,3,254,0,0,0,56,28,113,255,255,254,0,28,113,255,255,254,0,28,113,255,255,254,0,28,112,56,0,14,0,28,112,56,0,14,0,28,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,255,248,0,127,255,255,255,248,0,127,255,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x6b62 止 + 98,107,45,45,14,48,0,253,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x6b63 正 + 99,107,45,42,252,48,0,253,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x6b65 步 + 101,107,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,3,128,7,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,28,0,0,252,0,0,28,0,0,252,0,0,28,0,0,252,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,255,128,0,0,0,0,255,128,0,0,0,0,255,128,0,0,0,0, + // 0x6bd4 比 + 212,107,39,45,225,48,6,253,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,112,224,0,56,0,112,224,0,56,0,112,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,255,254,56,224,0,255,254,56,224,0,255,254,56,224,0,224,0,63,0,0,224,0,63,0,0,224,0,63,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,126,56,0,14,224,126,56,0,14,224,126,56,0,14,255,128,56,0,14,255,128,56,0,14,255,128,56,0,14,224,0,7,255,254,224,0,7,255,254,224,0,7,255,254, + // 0x6ca1 没 + 161,108,45,45,14,48,0,250,3,128,7,255,240,0,3,128,7,255,240,0,3,128,7,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,224,0,7,0,112,0,224,0,7,0,112,0,224,0,7,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,113,192,0,15,248,28,113,192,0,15,248,28,113,192,0,15,248,0,126,0,0,0,0,0,126,0,0,0,0,0,126,0,0,0,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,255,128,7,0,14,0,255,128,7,0,14,0,255,128,7,0,14,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,7,227,240,0,3,128,7,227,240,0,3,128,7,227,240,0,0,15,248,0,15,248,0,15,248,0,15,248,0,15,248,0,15,248, + // 0x6ce2 波 + 226,108,45,48,32,48,0,250,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,224,0,56,3,128,56,224,0,56,3,128,56,224,0,56,3,128,56,28,0,56,3,129,192,28,0,56,3,129,192,28,0,56,3,129,192,28,14,56,3,128,0,28,14,56,3,128,0,28,14,56,3,128,0,0,14,63,255,255,192,0,14,63,255,255,192,0,14,63,255,255,192,0,112,56,224,1,192,0,112,56,224,1,192,0,112,56,224,1,192,0,112,56,224,14,0,0,112,56,224,14,0,0,112,56,224,14,0,255,128,56,28,14,0,255,128,56,28,14,0,255,128,56,28,14,0,3,128,56,28,112,0,3,128,56,28,112,0,3,128,56,28,112,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,0,14,7,0,1,248,0,14,7,0,1,248,0,14,7,0,1,248, + // 0x6ce8 注 + 232,108,45,45,14,48,0,253,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,255,128,0,28,0,0,255,128,0,28,0,0,255,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,143,255,255,255,248,3,143,255,255,255,248,3,143,255,255,255,248, + // 0x6d17 洗 + 23,109,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,128,56,28,0,0,3,128,56,28,0,0,3,128,56,28,0,0,0,112,56,28,0,0,0,112,56,28,0,0,0,112,56,28,0,0,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,224,1,192,28,0,0,224,1,192,28,0,0,224,1,192,28,0,0,28,14,0,28,0,0,28,14,0,28,0,0,28,14,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,255,128,7,3,128,0,255,128,7,3,128,0,255,128,7,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,129,192,0,127,248,3,129,192,0,127,248,3,129,192,0,127,248,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0, + // 0x6d3b 活 + 59,109,45,48,32,48,0,250,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,3,128,0,31,254,0,3,128,0,31,254,0,3,128,0,31,254,0,0,112,63,252,0,0,0,112,63,252,0,0,0,112,63,252,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,255,128,56,0,14,0,255,128,56,0,14,0,255,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0, + // 0x6d41 流 + 65,109,45,48,32,48,0,250,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,224,0,7,0,112,0,224,0,7,0,112,0,224,0,7,0,112,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,1,255,255,255,192,28,1,255,255,255,192,28,1,255,255,255,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,255,128,56,28,14,0,255,128,56,28,14,0,255,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,56,3,128,56,28,14,56,3,128,56,28,14,56,3,129,192,28,14,56,3,129,192,28,14,56,3,129,192,28,14,56,0,14,0,28,1,248,0,14,0,28,1,248,0,14,0,28,1,248, + // 0x6d4b 测 + 75,109,42,48,32,48,0,250,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,3,129,255,252,1,192,3,129,255,252,1,192,3,129,255,252,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,113,192,0,113,192,28,113,192,0,113,192,28,113,192,224,1,199,28,113,192,224,1,199,28,113,192,224,1,199,28,113,192,28,1,199,28,113,192,28,1,199,28,113,192,28,1,199,28,113,192,28,1,199,28,113,192,28,1,199,28,113,192,28,1,199,28,113,192,0,113,199,28,113,192,0,113,199,28,113,192,0,113,199,28,113,192,0,113,199,28,113,192,0,113,199,28,113,192,0,113,199,28,113,192,3,129,199,28,113,192,3,129,199,28,113,192,3,129,199,28,113,192,255,129,199,28,113,192,255,129,199,28,113,192,255,129,199,28,113,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,56,224,1,192,3,128,56,224,1,192,3,128,56,224,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,129,192,0,113,192,3,129,192,0,113,192,3,129,192,0,113,192,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + // 0x6d88 消 + 136,109,39,48,240,48,0,250,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,3,128,56,28,14,3,128,56,28,14,3,128,56,28,14,0,112,7,28,14,0,112,7,28,14,0,112,7,28,14,0,112,7,28,112,0,112,7,28,112,0,112,7,28,112,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,28,0,63,255,254,28,0,63,255,254,28,0,63,255,254,28,14,56,0,14,28,14,56,0,14,28,14,56,0,14,0,14,56,0,14,0,14,56,0,14,0,14,56,0,14,0,112,63,255,254,0,112,63,255,254,0,112,63,255,254,0,112,56,0,14,0,112,56,0,14,0,112,56,0,14,255,128,56,0,14,255,128,56,0,14,255,128,56,0,14,3,128,63,255,254,3,128,63,255,254,3,128,63,255,254,3,128,56,0,14,3,128,56,0,14,3,128,56,0,14,3,128,56,0,14,3,128,56,0,14,3,128,56,0,14,3,128,56,3,142,3,128,56,3,142,3,128,56,3,142,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112, + // 0x6de1 淡 + 225,109,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,113,192,28,14,0,0,113,192,28,14,0,0,113,192,28,14,0,224,0,0,227,128,0,224,0,0,227,128,0,224,0,0,227,128,0,28,0,7,0,112,0,28,0,7,0,112,0,28,0,7,0,112,0,28,1,248,0,14,0,28,1,248,0,14,0,28,1,248,0,14,0,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,255,128,56,28,14,0,255,128,56,28,14,0,255,128,56,28,14,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,0,15,192,0,1,248,0,15,192,0,1,248,0,15,192,0,1,248, + // 0x6df7 混 + 247,109,45,45,14,48,0,250,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,0,113,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192,224,1,255,255,255,192,224,1,255,255,255,192,224,1,255,255,255,192,28,1,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,255,129,192,3,128,56,255,129,192,3,128,56,255,129,192,3,128,56,3,129,255,227,143,192,3,129,255,227,143,192,3,129,255,227,143,192,3,129,192,3,240,0,3,129,192,3,240,0,3,129,192,3,240,0,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,199,227,128,56,3,129,199,227,128,56,3,129,199,227,128,56,0,1,248,0,127,248,0,1,248,0,127,248,0,1,248,0,127,248, + // 0x6e05 清 + 5,110,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,224,0,63,255,254,0,224,0,63,255,254,0,224,0,63,255,254,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,15,255,255,255,248,28,15,255,255,255,248,28,15,255,255,255,248,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,255,128,56,0,14,0,255,128,56,0,14,0,255,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0, + // 0x6e29 温 + 41,110,45,42,252,48,0,253,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,224,0,63,255,254,0,224,0,63,255,254,0,224,0,63,255,254,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,255,129,192,227,129,192,255,129,192,227,129,192,255,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,143,255,255,255,248,3,143,255,255,255,248,3,143,255,255,255,248, + // 0x6e38 游 + 56,110,45,48,32,48,0,250,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,113,255,227,255,248,0,113,255,227,255,248,0,113,255,227,255,248,224,0,56,3,128,0,224,0,56,3,128,0,224,0,56,3,128,0,28,0,56,28,0,0,28,0,56,28,0,0,28,0,56,28,0,0,28,0,63,227,255,192,28,0,63,227,255,192,28,0,63,227,255,192,0,112,56,224,1,192,0,112,56,224,1,192,0,112,56,224,1,192,0,112,56,224,14,0,0,112,56,224,14,0,0,112,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,255,128,56,227,255,248,255,128,56,227,255,248,255,128,56,227,255,248,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,142,7,227,142,0,3,142,7,227,142,0,3,142,7,227,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x6e90 源 + 144,110,45,45,14,48,0,250,3,129,255,255,255,248,3,129,255,255,255,248,3,129,255,255,255,248,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,28,0,0,0,113,192,28,0,0,0,113,192,28,0,0,224,1,199,255,255,192,224,1,199,255,255,192,224,1,199,255,255,192,28,1,199,0,1,192,28,1,199,0,1,192,28,1,199,0,1,192,28,1,199,255,255,192,28,1,199,255,255,192,28,1,199,255,255,192,0,113,199,0,1,192,0,113,199,0,1,192,0,113,199,0,1,192,0,113,199,255,255,192,0,113,199,255,255,192,0,113,199,255,255,192,3,129,199,3,129,192,3,129,199,3,129,192,3,129,199,3,129,192,255,129,192,3,128,0,255,129,192,3,128,0,255,129,192,3,128,0,3,129,192,227,142,0,3,129,192,227,142,0,3,129,192,227,142,0,3,142,7,3,129,192,3,142,7,3,129,192,3,142,7,3,129,192,3,142,56,3,128,56,3,142,56,3,128,56,3,142,56,3,128,56,3,240,0,227,128,0,3,240,0,227,128,0,3,240,0,227,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x6ea2 溢 + 162,110,45,45,14,48,0,253,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,224,1,255,255,255,192,224,1,255,255,255,192,224,1,255,255,255,192,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,7,0,112,0,28,0,7,0,112,0,28,0,7,0,112,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,113,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,255,128,56,227,142,0,255,128,56,227,142,0,255,128,56,227,142,0,3,128,56,227,142,0,3,128,56,227,142,0,3,128,56,227,142,0,3,128,56,227,142,0,3,128,56,227,142,0,3,128,56,227,142,0,3,128,56,227,142,0,3,128,56,227,142,0,3,128,56,227,142,0,3,143,255,255,255,248,3,143,255,255,255,248,3,143,255,255,255,248, + // 0x6ed1 滑 + 209,110,45,45,14,48,0,250,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,63,252,14,0,0,112,63,252,14,0,0,112,63,252,14,0,224,0,56,28,14,0,224,0,56,28,14,0,224,0,56,28,14,0,28,15,255,255,255,248,28,15,255,255,255,248,28,15,255,255,255,248,28,14,0,0,0,56,28,14,0,0,0,56,28,14,0,0,0,56,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,255,128,56,0,14,0,255,128,56,0,14,0,255,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0, + // 0x6f0f 漏 + 15,111,45,45,14,48,0,250,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248,3,129,192,0,0,56,3,129,192,0,0,56,3,129,192,0,0,56,3,129,192,0,0,56,3,129,192,0,0,56,3,129,192,0,0,56,0,1,255,255,255,248,0,1,255,255,255,248,0,1,255,255,255,248,224,1,192,0,0,0,224,1,192,0,0,0,224,1,192,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,3,129,248,3,128,56,3,129,248,3,128,56,3,129,248,3,128,56,255,129,248,227,142,56,255,129,248,227,142,56,255,129,248,227,142,56,3,142,56,3,128,56,3,142,56,3,128,56,3,142,56,3,128,56,3,142,56,227,142,56,3,142,56,227,142,56,3,142,56,227,142,56,3,240,56,3,128,56,3,240,56,3,128,56,3,240,56,3,128,56,3,128,56,3,142,56,3,128,56,3,142,56,3,128,56,3,142,56,0,0,56,0,1,192,0,0,56,0,1,192,0,0,56,0,1,192, + // 0x6fc0 激 + 192,111,45,48,32,48,0,250,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,3,143,255,224,112,0,3,143,255,224,112,0,3,143,255,224,112,0,3,142,0,224,112,0,3,142,0,224,112,0,3,142,0,224,112,0,0,15,255,227,255,248,0,15,255,227,255,248,0,15,255,227,255,248,224,14,0,227,129,192,224,14,0,227,129,192,224,14,0,227,129,192,28,15,255,252,113,192,28,15,255,252,113,192,28,15,255,252,113,192,28,113,192,0,113,192,28,113,192,0,113,192,28,113,192,0,113,192,0,112,56,0,113,192,0,112,56,0,113,192,0,112,56,0,113,192,3,143,255,252,113,192,3,143,255,252,113,192,3,143,255,252,113,192,255,129,192,0,113,192,255,129,192,0,113,192,255,129,192,0,113,192,3,129,255,224,14,0,3,129,255,224,14,0,3,129,255,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,142,0,224,113,192,3,142,0,224,113,192,3,142,0,224,113,192,3,142,56,224,113,192,3,142,56,224,113,192,3,142,56,224,113,192,0,112,7,3,128,56,0,112,7,3,128,56,0,112,7,3,128,56, + // 0x706f 灯 + 111,112,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,28,126,0,3,128,0,28,126,0,3,128,0,28,126,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,0,0,227,128,0,28,0,0,227,128,0,28,0,0,227,128,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0, + // 0x70b9 点 + 185,112,42,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,63,255,255,192,0,0,63,255,255,192,0,0,63,255,255,192,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,3,255,255,255,240,0,3,255,255,255,240,0,3,255,255,255,240,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,255,255,255,240,0,3,255,255,255,240,0,3,255,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,28,0,56,28,1,192,28,0,56,28,1,192,28,0,56,28,1,192,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192, + // 0x70ed 热 + 237,112,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,255,255,199,255,254,0,255,255,199,255,254,0,255,255,199,255,254,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,127,192,252,14,0,0,127,192,252,14,0,0,127,192,252,14,0,3,240,0,28,14,0,3,240,0,28,14,0,3,240,0,28,14,0,252,112,0,227,142,56,252,112,0,227,142,56,252,112,0,227,142,56,0,112,0,227,142,56,0,112,0,227,142,56,0,112,0,227,142,56,28,112,7,0,1,248,28,112,7,0,1,248,28,112,7,0,1,248,3,128,56,0,0,56,3,128,56,0,0,56,3,128,56,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,0,224,14,0,28,14,0,224,14,0,28,14,0,224,14,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,28,1,192, + // 0x7247 片 + 71,114,39,48,240,48,3,250,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,252,0,3,255,255,252,0,3,255,255,252,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0, + // 0x7269 物 + 105,114,42,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,28,112,0,224,0,0,28,112,0,224,0,0,28,112,0,224,0,0,28,112,0,255,255,192,28,112,0,255,255,192,28,112,0,255,255,192,31,255,199,28,113,192,31,255,199,28,113,192,31,255,199,28,113,192,28,112,56,28,113,192,28,112,56,28,113,192,28,112,56,28,113,192,224,112,0,28,113,192,224,112,0,28,113,192,224,112,0,28,113,192,0,112,0,224,113,192,0,112,0,224,113,192,0,112,0,224,113,192,0,127,192,224,113,192,0,127,192,224,113,192,0,127,192,224,113,192,255,240,7,3,129,192,255,240,7,3,129,192,255,240,7,3,129,192,28,112,56,3,129,192,28,112,56,3,129,192,28,112,56,3,129,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x7279 特 + 121,114,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,7,255,255,192,28,112,7,255,255,192,28,112,7,255,255,192,31,255,192,3,128,0,31,255,192,3,128,0,31,255,192,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,224,112,63,255,255,248,224,112,63,255,255,248,224,112,63,255,255,248,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,127,192,0,14,0,0,127,192,0,14,0,0,127,192,0,14,0,255,240,7,255,255,248,255,240,7,255,255,248,255,240,7,255,255,248,28,112,0,0,14,0,28,112,0,0,14,0,28,112,0,0,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,3,142,0,0,112,0,3,142,0,0,112,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x7387 率 + 135,115,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,143,255,224,14,0,3,143,255,224,14,0,3,143,255,224,14,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,28,15,255,255,129,192,28,15,255,255,129,192,28,15,255,255,129,192,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x73af 环 + 175,115,45,42,252,48,0,250,255,255,199,255,255,248,255,255,199,255,255,248,255,255,199,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,31,255,192,31,142,0,31,255,192,31,142,0,31,255,192,31,142,0,0,112,0,227,129,192,0,112,0,227,129,192,0,112,0,227,129,192,0,112,7,3,128,56,0,112,7,3,128,56,0,112,7,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,127,192,3,128,0,0,127,192,3,128,0,0,127,192,3,128,0,255,128,0,3,128,0,255,128,0,3,128,0,255,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0x7528 用 + 40,117,39,45,225,48,0,250,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,28,0,7,0,14,28,0,7,0,14,28,0,7,0,14,28,0,7,3,142,28,0,7,3,142,28,0,7,3,142,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x7535 电 + 53,117,39,48,240,48,6,250,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,224,1,192,3,142,224,1,192,3,142,224,1,192,3,142,0,1,192,0,14,0,1,192,0,14,0,1,192,0,14,0,1,192,0,14,0,1,192,0,14,0,1,192,0,14,0,0,63,255,254,0,0,63,255,254,0,0,63,255,254, + // 0x7565 略 + 101,117,45,48,32,48,0,250,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,255,254,0,255,254,0,255,254,0,255,254,0,255,254,0,255,254,0,227,142,7,0,14,0,227,142,7,0,14,0,227,142,7,0,14,0,227,142,63,0,112,0,227,142,63,0,112,0,227,142,63,0,112,0,227,143,192,227,128,0,227,143,192,227,128,0,227,143,192,227,128,0,255,254,0,28,0,0,255,254,0,28,0,0,255,254,0,28,0,0,227,142,0,227,128,0,227,142,0,227,128,0,227,142,0,227,128,0,227,142,7,0,126,0,227,142,7,0,126,0,227,142,7,0,126,0,227,142,56,0,1,248,227,142,56,0,1,248,227,142,56,0,1,248,227,143,199,255,254,0,227,143,199,255,254,0,227,143,199,255,254,0,255,254,7,0,14,0,255,254,7,0,14,0,255,254,7,0,14,0,224,14,7,0,14,0,224,14,7,0,14,0,224,14,7,0,14,0,0,0,7,0,14,0,0,0,7,0,14,0,0,0,7,0,14,0,0,0,7,255,254,0,0,0,7,255,254,0,0,0,7,255,254,0,0,0,7,0,14,0,0,0,7,0,14,0,0,0,7,0,14,0, + // 0x767d 白 + 125,118,33,48,240,48,6,250,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128, + // 0x7684 的 + 132,118,39,48,240,48,3,250,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,28,0,0,224,0,28,0,0,224,0,28,0,0,224,0,255,255,192,255,254,255,255,192,255,254,255,255,192,255,254,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,1,248,0,14,224,1,248,0,14,224,1,248,0,14,224,1,192,224,14,224,1,192,224,14,224,1,192,224,14,255,255,192,28,14,255,255,192,28,14,255,255,192,28,14,224,1,192,28,14,224,1,192,28,14,224,1,192,28,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,255,255,192,0,14,255,255,192,0,14,255,255,192,0,14,224,1,192,28,112,224,1,192,28,112,224,1,192,28,112,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128, + // 0x76d1 监 + 209,118,45,45,14,48,0,253,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,3,129,192,28,0,0,3,129,192,28,0,0,3,129,192,28,0,0,3,129,192,31,255,192,3,129,192,31,255,192,3,129,192,31,255,192,3,129,192,28,0,0,3,129,192,28,0,0,3,129,192,28,0,0,3,129,192,224,112,0,3,129,192,224,112,0,3,129,192,224,112,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,199,0,14,0,3,129,199,0,14,0,3,129,199,0,14,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x76f4 直 + 244,118,45,45,14,48,0,253,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x7701 省 + 1,119,42,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,28,0,0,252,0,0,28,0,0,252,0,0,28,0,0,252,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,15,192,0,0,0,0,15,192,0,0,0,0,15,192,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,252,112,0,0,14,0,252,112,0,0,14,0,252,112,0,0,14,0,0,127,255,255,254,0,0,127,255,255,254,0,0,127,255,255,254,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,127,255,255,254,0,0,127,255,255,254,0,0,127,255,255,254,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,127,255,255,254,0,0,127,255,255,254,0,0,127,255,255,254,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0, + // 0x7720 眠 + 32,119,42,45,14,48,3,250,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,255,254,56,0,14,0,255,254,56,0,14,0,255,254,56,0,14,0,224,14,56,0,14,0,224,14,56,0,14,0,224,14,56,0,14,0,224,14,56,0,14,0,224,14,56,0,14,0,224,14,56,0,14,0,255,254,63,255,254,0,255,254,63,255,254,0,255,254,63,255,254,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,255,254,63,255,255,192,255,254,63,255,255,192,255,254,63,255,255,192,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,3,128,0,224,14,56,3,128,0,224,14,56,3,128,0,255,254,56,3,129,192,255,254,56,3,129,192,255,254,56,3,129,192,224,14,56,224,113,192,224,14,56,224,113,192,224,14,56,224,113,192,0,0,63,0,15,192,0,0,63,0,15,192,0,0,63,0,15,192,0,0,56,0,1,192,0,0,56,0,1,192,0,0,56,0,1,192, + // 0x786e 确 + 110,120,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,255,192,31,255,192,255,255,192,31,255,192,255,255,192,31,255,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,3,128,56,255,255,248,3,128,56,255,255,248,3,128,56,255,255,248,3,255,192,224,112,56,3,255,192,224,112,56,3,255,192,224,112,56,31,129,192,224,112,56,31,129,192,224,112,56,31,129,192,224,112,56,31,129,192,255,255,248,31,129,192,255,255,248,31,129,192,255,255,248,227,129,192,224,112,56,227,129,192,224,112,56,227,129,192,224,112,56,3,129,192,224,112,56,3,129,192,224,112,56,3,129,192,224,112,56,3,129,192,255,255,248,3,129,192,255,255,248,3,129,192,255,255,248,3,255,192,224,112,56,3,255,192,224,112,56,3,255,192,224,112,56,3,129,199,0,112,56,3,129,199,0,112,56,3,129,199,0,112,56,3,128,7,0,14,56,3,128,7,0,14,56,3,128,7,0,14,56,0,0,56,0,1,192,0,0,56,0,1,192,0,0,56,0,1,192, + // 0x79bb 离 + 187,121,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,192,28,112,0,0,113,192,28,112,0,0,113,192,28,112,0,0,112,63,224,112,0,0,112,63,224,112,0,0,112,63,224,112,0,0,113,192,28,112,0,0,113,192,28,112,0,0,113,192,28,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,28,0,56,0,1,192,28,0,56,0,1,192,28,0,56,0,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,15,255,255,129,192,28,15,255,255,129,192,28,15,255,255,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,0,0,0,113,192,28,0,0,0,113,192,28,0,0,0,113,192,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0, + // 0x79fb 移 + 251,121,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,127,192,3,128,0,0,127,192,3,128,0,0,127,192,3,128,0,255,240,0,31,255,192,255,240,0,31,255,192,255,240,0,31,255,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,7,28,14,0,0,112,7,28,14,0,0,112,7,28,14,0,255,255,192,3,240,0,255,255,192,3,240,0,255,255,192,3,240,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,240,0,28,14,0,3,240,0,28,14,0,3,240,0,28,14,0,3,254,7,224,112,0,3,254,7,224,112,0,3,254,7,224,112,0,28,113,192,3,255,248,28,113,192,3,255,248,28,113,192,3,255,248,28,113,192,28,0,56,28,113,192,28,0,56,28,113,192,28,0,56,224,112,7,227,129,192,224,112,7,227,129,192,224,112,7,227,129,192,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,128,0,0,112,0,31,128,0,0,112,0,31,128,0,0,112,7,224,0,0,0,112,7,224,0,0,0,112,7,224,0,0, + // 0x7a7a 空 + 122,122,45,45,14,48,0,253,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192, + // 0x7aef 端 + 239,122,45,48,32,48,0,250,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,255,255,199,3,129,192,255,255,199,3,129,192,255,255,199,3,129,192,0,0,7,255,255,192,0,0,7,255,255,192,0,0,7,255,255,192,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,224,14,63,255,255,248,224,14,63,255,255,248,224,14,63,255,255,248,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,28,14,0,28,0,0,28,14,0,28,0,0,28,14,0,28,0,0,28,14,7,255,255,192,28,14,7,255,255,192,28,14,7,255,255,192,28,112,7,28,113,192,28,112,7,28,113,192,28,112,7,28,113,192,28,112,7,28,113,192,28,112,7,28,113,192,28,112,7,28,113,192,0,127,199,28,113,192,0,127,199,28,113,192,0,127,199,28,113,192,255,128,7,28,113,192,255,128,7,28,113,192,255,128,7,28,113,192,28,0,7,28,113,192,28,0,7,28,113,192,28,0,7,28,113,192,0,0,7,0,15,192,0,0,7,0,15,192,0,0,7,0,15,192, + // 0x7b2c 第 + 44,123,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,255,255,31,255,248,3,255,255,31,255,248,3,255,255,31,255,248,28,14,0,224,112,0,28,14,0,224,112,0,28,14,0,224,112,0,224,1,199,0,14,0,224,1,199,0,14,0,224,1,199,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,14,0,0,0,7,0,14,0,0,0,7,0,14,0,0,0,7,0,14,0,0,0,7,0,14,0,0,0,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,3,255,255,255,255,192,3,255,255,255,255,192,3,255,255,255,255,192,0,0,63,0,1,192,0,0,63,0,1,192,0,0,63,0,1,192,0,1,199,0,1,192,0,1,199,0,1,192,0,1,199,0,1,192,0,126,7,3,142,0,0,126,7,3,142,0,0,126,7,3,142,0,255,128,7,0,112,0,255,128,7,0,112,0,255,128,7,0,112,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x7b49 等 + 73,123,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,255,255,31,255,248,3,255,255,31,255,248,3,255,255,31,255,248,28,14,0,224,112,0,28,14,0,224,112,0,28,14,0,224,112,0,224,1,199,0,14,0,224,1,199,0,14,0,224,1,199,0,14,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,227,128,0,0,1,192,227,128,0,0,1,192,227,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x7bb1 箱 + 177,123,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,255,255,31,255,248,3,255,255,31,255,248,3,255,255,31,255,248,3,142,0,224,112,0,3,142,0,224,112,0,3,142,0,224,112,0,28,1,199,0,14,0,28,1,199,0,14,0,28,1,199,0,14,0,224,14,0,0,0,0,224,14,0,0,0,0,224,14,0,0,0,0,0,14,0,255,255,192,0,14,0,255,255,192,0,14,0,255,255,192,31,255,248,224,1,192,31,255,248,224,1,192,31,255,248,224,1,192,0,14,0,224,1,192,0,14,0,224,1,192,0,14,0,224,1,192,0,126,0,255,255,192,0,126,0,255,255,192,0,126,0,255,255,192,0,127,192,224,1,192,0,127,192,224,1,192,0,127,192,224,1,192,3,142,56,224,1,192,3,142,56,224,1,192,3,142,56,224,1,192,3,142,56,255,255,192,3,142,56,255,255,192,3,142,56,255,255,192,28,14,0,224,1,192,28,14,0,224,1,192,28,14,0,224,1,192,224,14,0,224,1,192,224,14,0,224,1,192,224,14,0,224,1,192,0,14,0,255,255,192,0,14,0,255,255,192,0,14,0,255,255,192, + // 0x7c7b 类 + 123,124,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,1,199,28,0,0,0,1,199,28,0,0,0,1,199,28,0,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,31,128,0,0,14,0,31,128,0,0,14,0,31,128,0,0,14,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,3,240,0,0,126,0,3,240,0,0,126,0,3,240,0,0,126,0,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248, + // 0x7d22 索 + 34,125,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,56,0,0,56,28,0,56,0,0,56,28,0,56,0,0,56,224,1,192,3,129,192,224,1,192,3,129,192,224,1,192,3,129,192,0,127,255,252,0,0,0,127,255,252,0,0,0,127,255,252,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,1,248,0,112,0,0,1,248,0,112,0,0,1,248,0,112,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,14,0,0,0,7,0,14,0,0,0,7,0,14,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,3,129,199,0,112,0,3,129,199,0,112,0,3,129,199,0,112,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0, + // 0x7d2b 紫 + 43,125,42,48,32,48,0,250,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,3,142,0,224,14,0,3,142,0,224,14,0,3,142,0,224,14,0,3,143,248,255,240,0,3,143,248,255,240,0,3,143,248,255,240,0,3,142,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,3,143,248,224,1,192,3,143,248,224,1,192,3,143,248,224,1,192,255,240,0,31,255,192,255,240,0,31,255,192,255,240,0,31,255,192,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,127,255,252,0,0,0,127,255,252,0,0,0,127,255,252,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,1,248,0,112,0,0,1,248,0,112,0,0,1,248,0,112,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,14,0,0,0,7,0,14,0,0,0,7,0,14,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,3,129,199,0,112,0,3,129,199,0,112,0,3,129,199,0,112,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0, + // 0x7ea2 红 + 162,126,45,45,14,48,0,253,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,128,7,255,255,192,3,128,7,255,255,192,3,128,7,255,255,192,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,255,254,0,3,128,0,255,254,0,3,128,0,255,254,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,127,192,3,128,0,0,127,192,3,128,0,0,127,192,3,128,0,255,128,0,3,128,0,255,128,0,3,128,0,255,128,0,3,128,0,28,0,63,255,255,248,28,0,63,255,255,248,28,0,63,255,255,248, + // 0x7ea7 级 + 167,126,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,28,14,0,224,14,0,28,14,0,224,14,0,28,14,0,224,14,0,255,254,0,224,112,0,255,254,0,224,112,0,255,254,0,224,112,0,0,112,0,224,127,192,0,112,0,224,127,192,0,112,0,224,127,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,192,28,0,7,28,1,192,28,0,7,28,1,192,28,0,7,28,1,192,255,254,7,28,1,192,255,254,7,28,1,192,255,254,7,28,1,192,28,0,7,3,142,0,28,0,7,3,142,0,28,0,7,3,142,0,0,0,7,3,142,0,0,0,7,3,142,0,0,0,7,3,142,0,0,126,56,0,112,0,0,126,56,0,112,0,0,126,56,0,112,0,255,128,56,3,142,0,255,128,56,3,142,0,255,128,56,3,142,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,0,0,7,224,0,56,0,0,7,224,0,56,0,0,7,224,0,56, + // 0x7ebf 线 + 191,126,45,48,32,48,0,250,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,129,192,28,127,192,3,129,192,28,127,192,3,129,192,28,127,192,28,1,199,255,128,0,28,1,199,255,128,0,28,1,199,255,128,0,255,254,0,28,0,0,255,254,0,28,0,0,255,254,0,28,0,0,0,112,0,28,127,248,0,112,0,28,127,248,0,112,0,28,127,248,3,128,63,255,128,0,3,128,63,255,128,0,3,128,63,255,128,0,28,0,0,28,1,192,28,0,0,28,1,192,28,0,0,28,1,192,255,255,192,28,14,0,255,255,192,28,14,0,255,255,192,28,14,0,28,0,0,3,240,0,28,0,0,3,240,0,28,0,0,3,240,0,0,0,0,3,128,56,0,0,0,3,128,56,0,0,0,3,128,56,0,127,192,28,112,56,0,127,192,28,112,56,0,127,192,28,112,56,255,128,0,224,14,56,255,128,0,224,14,56,255,128,0,224,14,56,28,0,63,0,1,248,28,0,63,0,1,248,28,0,63,0,1,248,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56, + // 0x7ec6 细 + 198,126,42,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,128,7,255,255,192,3,128,7,255,255,192,3,128,7,255,255,192,3,129,199,3,129,192,3,129,199,3,129,192,3,129,199,3,129,192,28,1,199,3,129,192,28,1,199,3,129,192,28,1,199,3,129,192,255,254,7,3,129,192,255,254,7,3,129,192,255,254,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,28,0,7,255,255,192,28,0,7,255,255,192,28,0,7,255,255,192,255,255,199,3,129,192,255,255,199,3,129,192,255,255,199,3,129,192,28,0,7,3,129,192,28,0,7,3,129,192,28,0,7,3,129,192,0,0,7,3,129,192,0,0,7,3,129,192,0,0,7,3,129,192,0,127,199,3,129,192,0,127,199,3,129,192,0,127,199,3,129,192,255,128,7,3,129,192,255,128,7,3,129,192,255,128,7,3,129,192,28,0,7,255,255,192,28,0,7,255,255,192,28,0,7,255,255,192,0,0,7,0,1,192,0,0,7,0,1,192,0,0,7,0,1,192, + // 0x7ec8 终 + 200,126,45,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,3,128,0,255,254,0,3,128,0,255,254,0,3,128,0,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,28,14,63,0,112,0,28,14,63,0,112,0,28,14,63,0,112,0,255,255,192,227,128,0,255,255,192,227,128,0,255,255,192,227,128,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,28,0,63,0,126,0,28,0,63,0,126,0,28,0,63,0,126,0,255,255,192,0,1,248,255,255,192,0,1,248,255,255,192,0,1,248,28,0,0,252,0,0,28,0,0,252,0,0,28,0,0,252,0,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,126,0,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,255,128,7,224,0,0,255,128,7,224,0,0,255,128,7,224,0,0,28,0,0,31,128,0,28,0,0,31,128,0,28,0,0,31,128,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0, + // 0x7ed3 结 + 211,126,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,129,255,255,255,248,3,129,255,255,255,248,3,129,255,255,255,248,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,255,254,0,3,128,0,255,254,0,3,128,0,255,254,0,3,128,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,255,255,199,255,255,192,255,255,199,255,255,192,255,255,199,255,255,192,28,0,7,0,1,192,28,0,7,0,1,192,28,0,7,0,1,192,0,0,7,0,1,192,0,0,7,0,1,192,0,0,7,0,1,192,0,127,199,0,1,192,0,127,199,0,1,192,0,127,199,0,1,192,255,128,7,0,1,192,255,128,7,0,1,192,255,128,7,0,1,192,28,0,7,255,255,192,28,0,7,255,255,192,28,0,7,255,255,192,0,0,7,0,1,192,0,0,7,0,1,192,0,0,7,0,1,192, + // 0x7ed9 给 + 217,126,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,28,14,56,0,14,0,28,14,56,0,14,0,28,14,56,0,14,0,255,241,192,0,1,248,255,241,192,0,1,248,255,241,192,0,1,248,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,255,254,63,255,254,0,255,254,63,255,254,0,255,254,63,255,254,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,126,56,0,14,0,0,126,56,0,14,0,0,126,56,0,14,0,255,128,56,0,14,0,255,128,56,0,14,0,255,128,56,0,14,0,28,0,63,255,254,0,28,0,63,255,254,0,28,0,63,255,254,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0, + // 0x7edf 统 + 223,126,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,63,255,255,248,3,128,63,255,255,248,3,128,63,255,255,248,28,14,0,28,0,0,28,14,0,28,0,0,28,14,0,28,0,0,255,254,0,224,14,0,255,254,0,224,14,0,255,254,0,224,14,0,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,3,128,63,255,255,248,3,128,63,255,255,248,3,128,63,255,255,248,28,0,0,224,112,56,28,0,0,224,112,56,28,0,0,224,112,56,255,254,0,224,112,0,255,254,0,224,112,0,255,254,0,224,112,0,28,0,0,224,112,0,28,0,0,224,112,0,28,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,0,126,7,0,112,56,0,126,7,0,112,56,0,126,7,0,112,56,255,128,7,0,112,56,255,128,7,0,112,56,255,128,7,0,112,56,28,0,56,0,15,248,28,0,56,0,15,248,28,0,56,0,15,248,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0, + // 0x7ee7 继 + 231,126,45,45,14,48,0,253,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,63,3,129,192,3,128,63,3,129,192,3,128,63,3,129,192,28,14,56,227,142,0,28,14,56,227,142,0,28,14,56,227,142,0,255,240,56,3,128,0,255,240,56,3,128,0,255,240,56,3,128,0,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,28,0,56,31,240,0,28,0,56,31,240,0,28,0,56,31,240,0,255,254,56,227,142,0,255,254,56,227,142,0,255,254,56,227,142,0,28,0,63,3,129,192,28,0,63,3,129,192,28,0,63,3,129,192,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,3,128,0,0,126,56,3,128,0,0,126,56,3,128,0,0,126,56,3,128,0,255,128,56,3,128,0,255,128,56,3,128,0,255,128,56,3,128,0,28,0,63,255,255,248,28,0,63,255,255,248,28,0,63,255,255,248, + // 0x7eea 绪 + 234,126,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,3,128,63,255,241,192,3,128,63,255,241,192,3,128,63,255,241,192,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,28,14,0,28,112,0,28,14,0,28,112,0,28,14,0,28,112,0,255,241,255,255,255,248,255,241,255,255,255,248,255,241,255,255,255,248,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,28,0,7,255,254,0,28,0,7,255,254,0,28,0,7,255,254,0,255,254,63,0,14,0,255,254,63,0,14,0,255,254,63,0,14,0,28,1,199,0,14,0,28,1,199,0,14,0,28,1,199,0,14,0,0,0,7,255,254,0,0,0,7,255,254,0,0,0,7,255,254,0,0,126,7,0,14,0,0,126,7,0,14,0,0,126,7,0,14,0,255,128,7,0,14,0,255,128,7,0,14,0,255,128,7,0,14,0,28,0,7,255,254,0,28,0,7,255,254,0,28,0,7,255,254,0,0,0,7,0,14,0,0,0,7,0,14,0,0,0,7,0,14,0, + // 0x7eed 续 + 237,126,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,7,255,255,192,3,128,7,255,255,192,3,128,7,255,255,192,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,255,254,63,255,255,248,255,254,63,255,255,248,255,254,63,255,255,248,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,3,128,0,224,113,192,3,128,0,224,113,192,3,128,0,224,113,192,28,0,0,28,112,0,28,0,0,28,112,0,28,0,0,28,112,0,255,255,199,0,112,0,255,255,199,0,112,0,255,255,199,0,112,0,28,0,0,224,112,0,28,0,0,224,112,0,28,0,0,224,112,0,0,0,63,255,255,248,0,0,63,255,255,248,0,0,63,255,255,248,0,127,192,3,142,0,0,127,192,3,142,0,0,127,192,3,142,0,255,128,0,28,1,192,255,128,0,28,1,192,255,128,0,28,1,192,28,0,0,224,0,56,28,0,0,224,0,56,28,0,0,224,0,56,0,0,63,0,0,56,0,0,63,0,0,56,0,0,63,0,0,56, + // 0x7eff 绿 + 255,126,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,28,14,7,255,254,0,28,14,7,255,254,0,28,14,7,255,254,0,255,254,0,0,14,0,255,254,0,0,14,0,255,254,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,3,128,63,255,255,248,3,128,63,255,255,248,3,128,63,255,255,248,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,255,254,56,3,128,56,255,254,56,3,128,56,255,254,56,3,128,56,28,0,7,31,241,192,28,0,7,31,241,192,28,0,7,31,241,192,0,0,0,227,142,0,0,0,0,227,142,0,0,0,0,227,142,0,0,126,7,3,129,192,0,126,7,3,129,192,0,126,7,3,129,192,255,128,56,3,128,56,255,128,56,3,128,56,255,128,56,3,128,56,28,0,0,227,128,0,28,0,0,227,128,0,28,0,0,227,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x7f16 编 + 22,127,42,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,63,255,255,192,3,128,63,255,255,192,3,128,63,255,255,192,3,128,56,0,1,192,3,128,56,0,1,192,3,128,56,0,1,192,28,14,56,0,1,192,28,14,56,0,1,192,28,14,56,0,1,192,255,254,63,255,255,192,255,254,63,255,255,192,255,254,63,255,255,192,0,112,56,0,0,0,0,112,56,0,0,0,0,112,56,0,0,0,3,128,56,0,0,0,3,128,56,0,0,0,3,128,56,0,0,0,28,0,63,255,255,192,28,0,63,255,255,192,28,0,63,255,255,192,255,254,63,28,113,192,255,254,63,28,113,192,255,254,63,28,113,192,28,0,63,28,113,192,28,0,63,28,113,192,28,0,63,28,113,192,0,1,199,255,255,192,0,1,199,255,255,192,0,1,199,255,255,192,0,127,199,28,113,192,0,127,199,28,113,192,0,127,199,28,113,192,255,129,199,28,113,192,255,129,199,28,113,192,255,129,199,28,113,192,28,14,7,28,1,192,28,14,7,28,1,192,28,14,7,28,1,192,0,0,7,0,15,192,0,0,7,0,15,192,0,0,7,0,15,192, + // 0x7f3a 缺 + 58,127,45,48,32,48,0,250,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,255,192,3,128,0,3,255,192,3,128,0,3,255,192,3,128,0,28,112,7,255,255,192,28,112,7,255,255,192,28,112,7,255,255,192,224,112,0,3,129,192,224,112,0,3,129,192,224,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,255,255,248,3,129,192,255,255,248,3,129,192,255,255,248,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,28,112,0,28,113,192,28,112,0,28,113,192,28,112,0,28,113,192,28,112,0,28,113,192,28,112,0,28,113,192,28,112,0,28,127,192,224,14,0,28,127,192,224,14,0,28,127,192,224,14,0,31,129,192,224,14,0,31,129,192,224,14,0,31,129,192,224,14,0,0,1,199,0,1,192,0,1,199,0,1,192,0,1,199,0,1,192,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + // 0x7f51 网 + 81,127,39,45,225,48,3,250,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,1,192,3,142,224,1,192,3,142,224,1,192,3,142,227,129,199,3,142,227,129,199,3,142,227,129,199,3,142,224,113,192,227,142,224,113,192,227,142,224,113,192,227,142,224,14,0,28,14,224,14,0,28,14,224,14,0,28,14,224,14,0,28,14,224,14,0,28,14,224,14,0,28,14,224,113,192,227,142,224,113,192,227,142,224,113,192,227,142,224,113,192,227,142,224,113,192,227,142,224,113,192,227,142,227,129,199,3,142,227,129,199,3,142,227,129,199,3,142,252,0,56,0,14,252,0,56,0,14,252,0,56,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x7f6e 置 + 110,127,45,48,32,48,0,250,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x7f72 署 + 114,127,45,45,14,48,0,250,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,127,255,252,112,0,0,127,255,252,112,0,0,127,255,252,112,0,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,3,128,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,63,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,3,254,0,0,112,0,3,254,0,0,112,0,3,254,0,0,112,0,252,15,255,255,240,0,252,15,255,255,240,0,252,15,255,255,240,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0, + // 0x8005 者 + 5,128,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,3,255,255,252,112,0,3,255,255,252,112,0,3,255,255,252,112,0,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,126,0,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,3,142,0,0,112,0,3,142,0,0,112,0,3,142,0,0,112,0,28,15,255,255,240,0,28,15,255,255,240,0,28,15,255,255,240,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0, + // 0x806a 聪 + 106,128,45,48,32,48,0,250,0,0,0,224,14,0,0,0,0,224,14,0,0,0,0,224,14,0,255,255,192,28,14,0,255,255,192,28,14,0,255,255,192,28,14,0,28,14,0,28,112,0,28,14,0,28,112,0,28,14,0,28,112,0,28,14,7,255,255,192,28,14,7,255,255,192,28,14,7,255,255,192,31,254,7,0,1,192,31,254,7,0,1,192,31,254,7,0,1,192,28,14,7,0,1,192,28,14,7,0,1,192,28,14,7,0,1,192,28,14,7,0,1,192,28,14,7,0,1,192,28,14,7,0,1,192,31,254,7,255,255,192,31,254,7,255,255,192,31,254,7,255,255,192,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,15,192,28,113,192,28,15,192,28,113,192,28,15,192,28,113,192,31,254,7,28,0,56,31,254,7,28,0,56,31,254,7,28,0,56,252,14,7,28,0,56,252,14,7,28,0,56,252,14,7,28,0,56,0,14,7,28,14,56,0,14,7,28,14,56,0,14,7,28,14,56,0,14,56,3,254,0,0,14,56,3,254,0,0,14,56,3,254,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0, + // 0x80fd 能 + 253,128,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,28,0,56,28,14,0,28,0,56,28,14,0,28,0,56,28,14,0,255,255,255,31,240,0,255,255,255,31,240,0,255,255,255,31,240,0,0,0,7,28,0,0,0,0,7,28,0,0,0,0,7,28,0,0,0,0,0,28,0,56,0,0,0,28,0,56,0,0,0,28,0,56,31,255,248,28,0,56,31,255,248,28,0,56,31,255,248,28,0,56,28,0,56,3,255,248,28,0,56,3,255,248,28,0,56,3,255,248,28,0,56,0,0,0,28,0,56,0,0,0,28,0,56,0,0,0,31,255,248,28,1,192,31,255,248,28,1,192,31,255,248,28,1,192,28,0,56,28,14,0,28,0,56,28,14,0,28,0,56,28,14,0,28,0,56,31,240,0,28,0,56,31,240,0,28,0,56,31,240,0,31,255,248,28,0,0,31,255,248,28,0,0,31,255,248,28,0,0,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,14,56,28,0,56,28,14,56,28,0,56,28,14,56,28,0,56,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,255,248, + // 0x81ea 自 + 234,129,27,48,192,48,9,250,0,14,0,0,0,14,0,0,0,14,0,0,0,112,0,0,0,112,0,0,0,112,0,0,3,128,0,0,3,128,0,0,3,128,0,0,255,255,255,224,255,255,255,224,255,255,255,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,255,255,255,224,255,255,255,224,255,255,255,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,255,255,255,224,255,255,255,224,255,255,255,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,255,255,255,224,255,255,255,224,255,255,255,224,224,0,0,224,224,0,0,224,224,0,0,224, + // 0x81f3 至 + 243,129,45,42,252,48,0,253,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x83dc 菜 + 220,131,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,255,254,0,0,0,0,255,254,0,0,0,0,255,254,0,3,255,255,0,0,0,3,255,255,0,0,0,3,255,255,0,0,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,1,199,28,0,0,0,1,199,28,0,0,0,1,199,28,0,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,3,240,7,0,126,0,3,240,7,0,126,0,3,240,7,0,126,0,252,0,7,0,1,248,252,0,7,0,1,248,252,0,7,0,1,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x84dd 蓝 + 221,132,45,45,14,48,0,253,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,255,255,192,3,129,192,255,255,192,3,129,192,255,255,192,3,129,192,227,128,0,3,129,192,227,128,0,3,129,192,227,128,0,3,129,199,0,112,0,3,129,199,0,112,0,3,129,199,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x86c7 蛇 + 199,134,45,45,14,48,0,253,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,255,199,255,255,248,31,255,199,255,255,248,31,255,199,255,255,248,28,113,199,0,0,56,28,113,199,0,0,56,28,113,199,0,0,56,28,113,248,0,1,192,28,113,248,0,1,192,28,113,248,0,1,192,28,113,192,224,0,0,28,113,192,224,0,0,28,113,192,224,0,0,28,113,192,224,14,0,28,113,192,224,14,0,28,113,192,224,14,0,31,255,192,224,112,0,31,255,192,224,112,0,31,255,192,224,112,0,28,112,0,227,128,0,28,112,0,227,128,0,28,112,0,227,128,0,0,112,0,252,0,0,0,112,0,252,0,0,0,112,0,252,0,0,0,113,192,224,0,56,0,113,192,224,0,56,0,113,192,224,0,56,0,127,248,224,0,56,0,127,248,224,0,56,0,127,248,224,0,56,255,128,56,224,0,56,255,128,56,224,0,56,255,128,56,224,0,56,28,0,0,31,255,248,28,0,0,31,255,248,28,0,0,31,255,248, + // 0x884c 行 + 76,136,45,48,32,48,0,250,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,7,255,255,192,0,14,7,255,255,192,0,14,7,255,255,192,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,3,240,0,3,128,0,3,240,0,3,128,0,3,240,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0, + // 0x88ab 被 + 171,136,45,48,32,48,0,250,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,254,7,255,255,248,255,254,7,255,255,248,255,254,7,255,255,248,0,14,7,0,112,56,0,14,7,0,112,56,0,14,7,0,112,56,0,112,7,0,113,192,0,112,7,0,113,192,0,112,7,0,113,192,0,113,199,0,112,0,0,113,199,0,112,0,0,113,199,0,112,0,3,254,7,255,255,192,3,254,7,255,255,192,3,254,7,255,255,192,28,113,199,28,1,192,28,113,199,28,1,192,28,113,199,28,1,192,224,112,7,28,1,192,224,112,7,28,1,192,224,112,7,28,1,192,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,113,192,224,0,56,0,113,192,224,0,56,0,113,192,224,0,56, + // 0x88c5 装 + 197,136,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,3,142,63,255,255,248,3,142,63,255,255,248,3,142,63,255,255,248,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,126,0,3,128,0,0,126,0,3,128,0,0,126,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,252,14,7,255,255,192,252,14,7,255,255,192,252,14,7,255,255,192,0,14,56,0,0,0,0,14,56,0,0,0,0,14,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,199,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,15,192,224,14,0,0,15,192,224,14,0,0,15,192,224,14,0,3,241,192,28,112,0,3,241,192,28,112,0,3,241,192,28,112,0,252,1,199,3,240,0,252,1,199,3,240,0,252,1,199,3,240,0,0,1,248,0,15,248,0,1,248,0,15,248,0,1,248,0,15,248,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0, + // 0x8981 要 + 129,137,39,45,225,48,3,250,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,0,14,0,224,0,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,28,14,0,224,112,28,14,0,224,112,28,14,0,224,112,28,14,0,224,112,28,14,0,224,112,28,14,0,224,112,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,14,0,28,0,0,14,0,28,0,0,14,0,28,0,0,112,0,224,0,0,112,0,224,0,0,112,0,224,0,3,254,7,0,0,3,254,7,0,0,3,254,7,0,0,0,1,255,0,0,0,1,255,0,0,0,1,255,0,0,0,15,192,255,128,0,15,192,255,128,0,15,192,255,128,31,240,0,0,112,31,240,0,0,112,31,240,0,0,112, + // 0x89d2 角 + 210,137,39,48,240,48,0,250,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,127,255,255,128,0,127,255,255,128,0,127,255,255,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,227,255,255,255,254,227,255,255,255,254,227,255,255,255,254,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,28,0,7,0,14,28,0,7,0,14,28,0,7,0,14,28,0,7,3,142,28,0,7,3,142,28,0,7,3,142,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x8ba1 计 + 161,139,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,241,255,255,255,248,255,241,255,255,255,248,255,241,255,255,255,248,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,192,28,0,0,0,113,192,28,0,0,0,113,192,28,0,0,0,126,0,28,0,0,0,126,0,28,0,0,0,126,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x8bae 议 + 174,139,45,48,32,48,0,250,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,255,240,7,0,112,0,255,240,7,0,112,0,255,240,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,192,28,0,0,0,113,192,28,0,0,0,113,192,28,0,0,0,126,0,227,128,0,0,126,0,227,128,0,0,126,0,227,128,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,15,192,0,1,248,0,15,192,0,1,248,0,15,192,0,1,248, + // 0x8bbe 设 + 190,139,45,45,14,48,0,250,3,128,7,255,240,0,3,128,7,255,240,0,3,128,7,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,56,0,15,248,0,0,56,0,15,248,0,0,56,0,15,248,255,241,192,0,0,0,255,241,192,0,0,0,255,241,192,0,0,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,113,192,227,128,0,0,113,192,227,128,0,0,113,192,227,128,0,0,126,0,28,0,0,0,126,0,28,0,0,0,126,0,28,0,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,0,63,0,126,0,0,0,63,0,126,0,0,0,63,0,126,0,0,15,192,0,1,248,0,15,192,0,1,248,0,15,192,0,1,248, + // 0x8bd5 试 + 213,139,45,48,32,48,0,250,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,1,255,255,255,248,0,1,255,255,255,248,0,1,255,255,255,248,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,255,240,0,3,128,0,255,240,0,3,128,0,255,240,0,3,128,0,0,113,255,255,128,0,0,113,255,255,128,0,0,113,255,255,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,113,199,0,112,0,0,113,199,0,112,0,0,113,199,0,112,0,0,126,7,252,14,56,0,126,7,252,14,56,0,126,7,252,14,56,0,113,255,0,14,56,0,113,255,0,14,56,0,113,255,0,14,56,0,0,56,0,1,248,0,0,56,0,1,248,0,0,56,0,1,248,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56, + // 0x8bef 误 + 239,139,45,45,14,48,0,250,28,0,63,255,254,0,28,0,63,255,254,0,28,0,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,129,255,255,255,192,255,129,255,255,255,192,255,129,255,255,255,192,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,143,255,255,255,248,3,143,255,255,255,248,3,143,255,255,255,248,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,142,0,227,128,0,3,142,0,227,128,0,3,142,0,227,128,0,3,240,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,0,1,192,0,1,248,0,1,192,0,1,248,0,1,192,0,1,248, + // 0x8bf7 请 + 247,139,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,129,255,255,255,248,255,129,255,255,255,248,255,129,255,255,255,248,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,142,63,255,254,0,3,142,63,255,254,0,3,142,63,255,254,0,3,240,56,0,14,0,3,240,56,0,14,0,3,240,56,0,14,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0, + // 0x8bfb 读 + 251,139,45,48,32,48,0,250,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,63,255,255,248,0,0,63,255,255,248,0,0,63,255,255,248,255,240,0,0,0,56,255,240,0,0,0,56,255,240,0,0,0,56,0,112,0,224,113,192,0,112,0,224,113,192,0,112,0,224,113,192,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,113,192,3,142,0,0,113,192,3,142,0,0,113,192,3,142,0,0,126,0,28,1,192,0,126,0,28,1,192,0,126,0,28,1,192,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,0,63,0,0,56,0,0,63,0,0,56,0,0,63,0,0,56, + // 0x8c03 调 + 3,140,42,45,14,48,0,250,28,1,255,255,255,192,28,1,255,255,255,192,28,1,255,255,255,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,0,1,199,255,241,192,0,1,199,255,241,192,0,1,199,255,241,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192,28,1,192,255,129,192,28,1,192,255,129,192,28,1,192,255,129,192,28,1,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,199,255,241,192,3,129,199,255,241,192,3,129,199,255,241,192,3,129,199,0,113,192,3,129,199,0,113,192,3,129,199,0,113,192,3,143,199,0,113,192,3,143,199,0,113,192,3,143,199,0,113,192,3,241,199,255,241,192,3,241,199,255,241,192,3,241,199,255,241,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192,0,113,192,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + // 0x8d25 败 + 37,141,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,31,255,192,28,0,0,31,255,192,28,0,0,31,255,192,28,0,0,28,1,192,28,0,0,28,1,192,28,0,0,28,1,192,28,0,0,28,113,192,224,0,0,28,113,192,224,0,0,28,113,192,224,0,0,28,113,192,255,255,248,28,113,192,255,255,248,28,113,192,255,255,248,28,113,199,0,14,0,28,113,199,0,14,0,28,113,199,0,14,0,28,113,248,224,14,0,28,113,248,224,14,0,28,113,248,224,14,0,28,113,192,224,14,0,28,113,192,224,14,0,28,113,192,224,14,0,28,113,192,224,14,0,28,113,192,224,14,0,28,113,192,224,14,0,28,113,192,28,112,0,28,113,192,28,112,0,28,113,192,28,112,0,28,113,192,28,112,0,28,113,192,28,112,0,28,113,192,28,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,142,0,28,112,0,3,142,0,28,112,0,3,142,0,28,112,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,28,1,199,0,1,192,28,1,199,0,1,192,28,1,199,0,1,192,224,0,56,0,0,56,224,0,56,0,0,56,224,0,56,0,0,56, + // 0x8d2a 贪 + 42,141,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,3,240,0,224,126,0,3,240,0,224,126,0,3,240,0,224,126,0,252,15,255,255,129,248,252,15,255,255,129,248,252,15,255,255,129,248,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,0,56,31,128,0,0,0,56,31,128,0,0,0,56,31,128,0,0,15,192,0,126,0,0,15,192,0,126,0,0,15,192,0,126,0,31,240,0,0,1,192,31,240,0,0,1,192,31,240,0,0,1,192, + // 0x8d77 起 + 119,141,45,48,32,48,0,250,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,255,254,0,0,14,0,255,254,0,0,14,0,255,254,0,31,255,248,0,14,0,31,255,248,0,14,0,31,255,248,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,255,255,248,255,254,0,255,255,248,255,254,0,255,255,248,255,254,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,3,142,0,224,0,0,3,142,0,224,0,0,3,142,0,224,0,0,3,142,0,224,0,0,3,142,0,224,0,0,3,142,0,224,0,0,3,143,248,224,1,192,3,143,248,224,1,192,3,143,248,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,3,142,0,31,255,192,3,142,0,31,255,192,3,142,0,31,255,192,28,126,0,0,0,0,28,126,0,0,0,0,28,126,0,0,0,0,28,15,255,255,255,248,28,15,255,255,255,248,28,15,255,255,255,248,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0, + // 0x8d85 超 + 133,141,45,48,32,48,0,250,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,7,255,255,192,0,14,7,255,255,192,0,14,7,255,255,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,31,255,248,28,1,192,31,255,248,28,1,192,31,255,248,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,224,113,192,0,14,0,224,113,192,0,14,0,224,113,192,255,255,255,0,14,0,255,255,255,0,14,0,255,255,255,0,14,0,0,14,0,255,255,192,0,14,0,255,255,192,0,14,0,255,255,192,3,142,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,3,143,248,224,1,192,3,143,248,224,1,192,3,143,248,224,1,192,3,142,0,255,255,192,3,142,0,255,255,192,3,142,0,255,255,192,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,126,0,0,0,0,28,126,0,0,0,0,28,126,0,0,0,0,28,15,255,255,255,248,28,15,255,255,255,248,28,15,255,255,255,248,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0, + // 0x8ddd 距 + 221,141,45,42,252,48,0,253,31,255,199,255,255,248,31,255,199,255,255,248,31,255,199,255,255,248,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,31,255,199,255,255,192,31,255,199,255,255,192,31,255,199,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,28,127,199,0,1,192,28,127,199,0,1,192,28,127,199,0,1,192,28,112,7,0,1,192,28,112,7,0,1,192,28,112,7,0,1,192,28,112,7,255,255,192,28,112,7,255,255,192,28,112,7,255,255,192,28,112,7,0,0,0,28,112,7,0,0,0,28,112,7,0,0,0,28,127,199,0,0,0,28,127,199,0,0,0,28,127,199,0,0,0,255,128,7,0,0,0,255,128,7,0,0,0,255,128,7,0,0,0,0,0,7,255,255,248,0,0,7,255,255,248,0,0,7,255,255,248, + // 0x8f6c 转 + 108,143,45,48,32,48,0,250,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,255,255,199,255,255,192,255,255,199,255,255,192,255,255,199,255,255,192,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,112,0,28,0,0,28,112,0,28,0,0,28,112,0,28,0,0,224,112,63,255,255,248,224,112,63,255,255,248,224,112,63,255,255,248,255,255,192,28,0,0,255,255,192,28,0,0,255,255,192,28,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,127,192,0,1,192,0,127,192,0,1,192,0,127,192,0,1,192,255,240,0,224,14,0,255,240,0,224,14,0,255,240,0,224,14,0,28,112,0,28,112,0,28,112,0,28,112,0,28,112,0,28,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x8f6f 软 + 111,143,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,255,255,248,31,255,192,255,255,248,31,255,192,255,255,248,31,255,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,192,3,142,0,224,14,0,3,142,0,224,14,0,3,142,0,224,14,0,28,14,7,3,128,0,28,14,7,3,128,0,28,14,7,3,128,0,31,255,248,3,128,0,31,255,248,3,128,0,31,255,248,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,28,112,0,0,14,0,28,112,0,0,14,0,28,112,0,0,15,248,28,112,0,0,15,248,28,112,0,0,15,248,28,112,0,255,254,0,28,112,0,255,254,0,28,112,0,255,254,0,28,112,0,28,14,0,224,14,0,28,14,0,224,14,0,28,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,7,0,1,192,0,14,7,0,1,192,0,14,7,0,1,192,0,14,56,0,0,56,0,14,56,0,0,56,0,14,56,0,0,56, + // 0x8f74 轴 + 116,143,42,48,32,48,0,250,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,28,0,7,255,255,192,28,0,7,255,255,192,28,0,7,255,255,192,28,112,7,3,129,192,28,112,7,3,129,192,28,112,7,3,129,192,224,112,7,3,129,192,224,112,7,3,129,192,224,112,7,3,129,192,255,255,199,3,129,192,255,255,199,3,129,192,255,255,199,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,127,199,3,129,192,0,127,199,3,129,192,0,127,199,3,129,192,255,240,7,3,129,192,255,240,7,3,129,192,255,240,7,3,129,192,28,112,7,3,129,192,28,112,7,3,129,192,28,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192, + // 0x8f7d 载 + 125,143,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,142,0,0,14,0,3,142,0,0,14,0,3,142,0,31,255,255,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,255,255,255,3,129,192,255,255,255,3,129,192,255,255,255,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,28,14,0,3,142,0,28,14,0,3,142,0,28,14,0,3,142,0,31,255,255,3,142,0,31,255,255,3,142,0,31,255,255,3,142,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,15,255,0,112,56,0,15,255,0,112,56,0,15,255,0,112,56,255,254,0,3,142,56,255,254,0,3,142,56,255,254,0,3,142,56,0,14,0,28,1,248,0,14,0,28,1,248,0,14,0,28,1,248,0,14,0,224,0,56,0,14,0,224,0,56,0,14,0,224,0,56, + // 0x8f91 辑 + 145,143,45,48,32,48,0,250,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,7,255,254,0,3,128,7,255,254,0,3,128,7,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,255,255,199,0,14,0,255,255,199,0,14,0,255,255,199,0,14,0,28,0,7,255,254,0,28,0,7,255,254,0,28,0,7,255,254,0,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,224,113,255,255,255,248,224,113,255,255,255,248,224,113,255,255,255,248,255,255,199,0,14,0,255,255,199,0,14,0,255,255,199,0,14,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,127,199,255,254,0,0,127,199,255,254,0,0,127,199,255,254,0,255,240,7,0,14,0,255,240,7,0,14,0,255,240,7,0,14,0,28,112,7,3,255,248,28,112,7,3,255,248,28,112,7,3,255,248,0,113,255,252,14,0,0,113,255,252,14,0,0,113,255,252,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0, + // 0x8f93 输 + 147,143,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,255,254,56,0,14,0,255,254,56,0,14,0,255,254,56,0,14,0,3,129,199,255,241,248,3,129,199,255,241,248,3,129,199,255,241,248,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,112,63,252,1,192,28,112,63,252,1,192,28,112,63,252,1,192,224,112,56,28,113,192,224,112,56,28,113,192,224,112,56,28,113,192,255,254,56,28,113,192,255,254,56,28,113,192,255,254,56,28,113,192,0,112,63,252,113,192,0,112,63,252,113,192,0,112,63,252,113,192,0,126,56,28,113,192,0,126,56,28,113,192,0,126,56,28,113,192,255,240,56,28,113,192,255,240,56,28,113,192,255,240,56,28,113,192,28,112,63,252,113,192,28,112,63,252,113,192,28,112,63,252,113,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,113,192,0,112,56,28,113,192,0,112,56,28,113,192,0,112,56,252,14,0,0,112,56,252,14,0,0,112,56,252,14,0, + // 0x8fb9 边 + 185,143,45,45,14,48,0,253,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,255,240,0,28,1,192,255,240,0,28,1,192,255,240,0,28,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,0,113,192,0,112,0,0,113,192,0,112,0,0,113,192,0,112,0,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x8fc1 迁 + 193,143,45,45,14,48,0,253,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,3,128,0,31,254,0,3,128,0,31,254,0,3,128,0,31,254,0,0,112,63,252,0,0,0,112,63,252,0,0,0,112,63,252,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,241,255,255,255,248,255,241,255,255,255,248,255,241,255,255,255,248,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x8fd0 运 + 208,143,45,42,252,48,0,253,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,192,0,1,255,255,255,192,0,1,255,255,255,192,255,240,0,28,0,0,255,240,0,28,0,0,255,240,0,28,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,0,112,56,0,1,192,0,112,56,0,1,192,0,112,56,0,1,192,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x8fd1 近 + 209,143,45,45,14,48,0,253,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,3,128,0,0,127,192,3,128,0,0,127,192,3,128,0,0,127,192,0,112,7,255,128,0,0,112,7,255,128,0,0,112,7,255,128,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,255,255,248,0,0,7,255,255,248,0,0,7,255,255,248,255,240,7,0,112,0,255,240,7,0,112,0,255,240,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,113,192,0,112,0,0,113,192,0,112,0,0,113,192,0,112,0,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x8fd4 返 + 212,143,45,45,14,48,0,253,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,3,128,0,3,255,192,3,128,0,3,255,192,3,128,0,3,255,192,0,112,63,252,0,0,0,112,63,252,0,0,0,112,63,252,0,0,0,112,56,0,0,0,0,112,56,0,0,0,0,112,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,63,255,255,192,0,0,63,255,255,192,0,0,63,255,255,192,255,240,56,0,1,192,255,240,56,0,1,192,255,240,56,0,1,192,0,112,56,224,14,0,0,112,56,224,14,0,0,112,56,224,14,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,28,112,0,0,113,192,224,14,0,0,113,192,224,14,0,0,113,192,224,14,0,0,113,199,0,1,192,0,113,199,0,1,192,0,113,199,0,1,192,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x8fd8 还 + 216,143,45,42,252,48,0,253,3,128,63,255,255,192,3,128,63,255,255,192,3,128,63,255,255,192,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,240,0,252,112,0,255,240,0,252,112,0,255,240,0,252,112,0,0,112,7,28,14,0,0,112,7,28,14,0,0,112,7,28,14,0,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x8fdb 进 + 219,143,45,45,14,48,0,253,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,255,240,0,224,112,0,255,240,0,224,112,0,255,240,0,224,112,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x8fde 连 + 222,143,45,45,14,48,0,253,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,0,0,227,128,0,0,0,0,227,128,0,0,0,0,227,128,0,0,0,7,3,128,0,0,0,7,3,128,0,0,0,7,3,128,0,255,240,63,255,255,192,255,240,63,255,255,192,255,240,63,255,255,192,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x8ff7 迷 + 247,143,45,45,14,48,0,253,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,0,112,7,28,14,0,0,112,7,28,14,0,0,112,7,28,14,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,7,28,112,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,1,255,255,255,192,0,1,255,255,255,192,0,1,255,255,255,192,255,240,0,28,0,0,255,240,0,28,0,0,255,240,0,28,0,0,0,112,0,255,128,0,0,112,0,255,128,0,0,112,0,255,128,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x9000 退 + 0,144,45,45,14,48,0,253,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,255,240,63,255,254,0,255,240,63,255,254,0,255,240,63,255,254,0,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,224,14,0,0,112,56,224,14,0,0,112,56,224,14,0,0,112,63,0,1,192,0,112,63,0,1,192,0,112,63,0,1,192,0,112,56,0,1,192,0,112,56,0,1,192,0,112,56,0,1,192,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x9009 选 + 9,144,45,45,14,48,0,253,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,128,56,28,0,0,3,128,56,28,0,0,3,128,56,28,0,0,0,112,56,28,0,0,0,112,56,28,0,0,0,112,56,28,0,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,241,255,255,255,192,255,241,255,255,255,192,255,241,255,255,255,192,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,113,192,0,127,192,0,113,192,0,127,192,0,113,192,0,127,192,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x901f 速 + 31,144,45,45,14,48,0,253,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,56,28,14,0,0,0,56,28,14,0,0,0,56,28,14,0,255,240,56,28,14,0,255,240,56,28,14,0,255,240,56,28,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,0,255,128,0,0,112,0,255,128,0,0,112,0,255,128,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x90e8 部 + 232,144,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,14,0,3,255,248,0,14,0,3,255,248,0,14,0,3,255,248,31,255,255,227,128,56,31,255,255,227,128,56,31,255,255,227,128,56,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,255,255,255,255,129,192,255,255,255,255,129,192,255,255,255,255,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,128,56,0,0,0,3,128,56,0,0,0,3,128,56,3,255,255,3,128,56,3,255,255,3,128,56,3,255,255,3,128,56,3,128,7,3,128,56,3,128,7,3,128,56,3,128,7,3,128,56,3,128,7,3,241,192,3,128,7,3,241,192,3,128,7,3,241,192,3,128,7,3,142,0,3,128,7,3,142,0,3,128,7,3,142,0,3,255,255,3,128,0,3,255,255,3,128,0,3,255,255,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0x914d 配 + 77,145,45,45,14,48,0,250,255,255,248,0,0,0,255,255,248,0,0,0,255,255,248,0,0,0,3,142,0,255,254,0,3,142,0,255,254,0,3,142,0,255,254,0,3,142,0,0,14,0,3,142,0,0,14,0,3,142,0,0,14,0,255,255,248,0,14,0,255,255,248,0,14,0,255,255,248,0,14,0,227,142,56,0,14,0,227,142,56,0,14,0,227,142,56,0,14,0,227,142,56,0,14,0,227,142,56,0,14,0,227,142,56,0,14,0,227,142,56,255,254,0,227,142,56,255,254,0,227,142,56,255,254,0,227,143,248,224,14,0,227,143,248,224,14,0,227,143,248,224,14,0,252,0,56,224,0,0,252,0,56,224,0,0,252,0,56,224,0,0,224,0,56,224,0,0,224,0,56,224,0,0,224,0,56,224,0,0,255,255,248,224,0,0,255,255,248,224,0,0,255,255,248,224,0,0,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,255,255,248,31,255,248,255,255,248,31,255,248,255,255,248,31,255,248,224,0,56,0,0,0,224,0,56,0,0,0,224,0,56,0,0,0, + // 0x91ca 释 + 202,145,45,48,32,48,0,250,0,15,192,0,0,0,0,15,192,0,0,0,0,15,192,0,0,0,255,240,63,255,255,192,255,240,63,255,255,192,255,240,63,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,28,113,192,224,14,0,28,113,192,224,14,0,28,113,192,224,14,0,3,254,0,28,112,0,3,254,0,28,112,0,3,254,0,28,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,255,255,192,252,126,0,255,255,192,252,126,0,255,255,192,252,126,0,0,112,63,3,129,248,0,112,63,3,129,248,0,112,63,3,129,248,3,240,0,3,128,0,3,240,0,3,128,0,3,240,0,3,128,0,3,254,7,255,255,192,3,254,7,255,255,192,3,254,7,255,255,192,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,224,112,63,255,255,248,224,112,63,255,255,248,224,112,63,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0, + // 0x91cd 重 + 205,145,45,45,14,48,0,253,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,255,254,0,0,0,0,255,254,0,0,0,0,255,254,0,3,255,255,0,0,0,3,255,255,0,0,0,3,255,255,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x91cf 量 + 207,145,45,45,14,48,0,250,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192, + // 0x9488 针 + 136,148,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,127,248,3,128,0,0,127,248,3,128,0,0,127,248,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,31,255,192,3,128,0,31,255,192,3,128,0,31,255,192,3,128,0,224,112,63,255,255,248,224,112,63,255,255,248,224,112,63,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,255,255,248,3,128,0,255,255,248,3,128,0,255,255,248,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,126,0,3,128,0,0,126,0,3,128,0,0,126,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0x94ae 钮 + 174,148,45,45,14,48,0,253,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,3,255,192,28,14,0,3,255,192,28,14,0,3,255,192,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,28,0,0,28,14,0,28,0,0,28,14,0,28,0,0,28,14,0,227,255,192,28,14,0,227,255,192,28,14,0,227,255,192,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,255,255,192,224,14,0,255,255,192,224,14,0,255,255,192,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,113,192,224,14,0,0,113,192,224,14,0,0,113,192,224,14,0,0,126,0,224,14,0,0,126,0,224,14,0,0,126,0,224,14,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248, + // 0x9519 错 + 25,149,45,48,32,48,0,250,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,254,7,0,112,0,3,254,7,0,112,0,3,254,7,0,112,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,28,0,7,0,112,0,28,0,7,0,112,0,28,0,7,0,112,0,31,254,7,0,112,0,31,254,7,0,112,0,31,254,7,0,112,0,227,143,255,255,255,248,227,143,255,255,255,248,227,143,255,255,255,248,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,255,254,63,255,254,0,255,254,63,255,254,0,255,254,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,142,56,0,14,0,3,142,56,0,14,0,3,142,56,0,14,0,3,240,56,0,14,0,3,240,56,0,14,0,3,240,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0, + // 0x955c 镜 + 92,149,45,48,32,48,0,250,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,254,63,255,254,0,3,254,63,255,254,0,3,254,63,255,254,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,28,0,0,227,128,0,28,0,0,227,128,0,28,0,0,227,128,0,31,241,255,255,255,248,31,241,255,255,255,248,31,241,255,255,255,248,227,128,0,0,0,0,227,128,0,0,0,0,227,128,0,0,0,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,255,254,56,0,14,0,255,254,56,0,14,0,255,254,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,142,7,3,128,0,3,142,7,3,128,0,3,142,7,3,128,0,3,240,7,3,128,56,3,240,7,3,128,56,3,240,7,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,0,15,192,0,127,248,0,15,192,0,127,248,0,15,192,0,127,248, + // 0x957f 长 + 127,149,45,48,32,48,0,250,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,14,56,0,0,0,0,14,56,0,0,0,0,14,56,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,56,0,126,0,0,14,56,0,126,0,0,14,56,0,126,0,0,15,192,0,1,248,0,15,192,0,1,248,0,15,192,0,1,248,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0, + // 0x95ed 闭 + 237,149,39,48,240,48,3,250,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,3,143,255,255,254,3,143,255,255,254,3,143,255,255,254,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,227,255,255,255,142,227,255,255,255,142,227,255,255,255,142,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,63,0,14,224,0,63,0,14,224,0,63,0,14,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,112,7,0,14,224,112,7,0,14,224,112,7,0,14,227,128,7,0,14,227,128,7,0,14,227,128,7,0,14,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x95f2 闲 + 242,149,39,48,240,48,3,250,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,3,143,255,255,254,3,143,255,255,254,3,143,255,255,254,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,227,255,255,255,142,227,255,255,255,142,227,255,255,255,142,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,1,255,0,14,224,1,255,0,14,224,1,255,0,14,224,14,56,224,14,224,14,56,224,14,224,14,56,224,14,224,112,56,28,14,224,112,56,28,14,224,112,56,28,14,227,128,56,3,142,227,128,56,3,142,227,128,56,3,142,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x95f4 间 + 244,149,39,48,240,48,3,250,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,3,129,255,255,254,3,129,255,255,254,3,129,255,255,254,3,128,0,0,14,3,128,0,0,14,3,128,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,15,255,224,14,224,15,255,224,14,224,15,255,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,15,255,224,14,224,15,255,224,14,224,15,255,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,224,15,255,224,14,224,15,255,224,14,224,15,255,224,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,0,3,142,224,0,0,3,142,224,0,0,3,142,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x9608 阈 + 8,150,39,48,240,48,3,250,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,3,143,255,255,254,3,143,255,255,254,3,143,255,255,254,0,0,7,0,14,0,0,7,0,14,0,0,7,0,14,224,0,7,28,14,224,0,7,28,14,224,0,7,28,14,224,0,7,3,142,224,0,7,3,142,224,0,7,3,142,227,255,255,255,142,227,255,255,255,142,227,255,255,255,142,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,127,199,28,14,224,127,199,28,14,224,127,199,28,14,224,113,199,28,14,224,113,199,28,14,224,113,199,28,14,224,127,199,28,14,224,127,199,28,14,224,127,199,28,14,224,0,7,224,14,224,0,7,224,14,224,0,7,224,14,224,15,192,227,142,224,15,192,227,142,224,15,192,227,142,227,240,7,31,142,227,240,7,31,142,227,240,7,31,142,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,0,0,0,126,224,0,0,0,126,224,0,0,0,126, + // 0x964d 降 + 77,150,42,48,32,48,3,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,254,7,0,0,0,255,254,7,0,0,0,255,254,7,0,0,0,224,14,7,255,254,0,224,14,7,255,254,0,224,14,7,255,254,0,224,112,56,0,112,0,224,112,56,0,112,0,224,112,56,0,112,0,224,113,199,3,128,0,224,113,199,3,128,0,224,113,199,3,128,0,227,128,0,252,0,0,227,128,0,252,0,0,227,128,0,252,0,0,224,112,63,3,240,0,224,112,63,3,240,0,224,112,63,3,240,0,224,127,192,28,15,192,224,127,192,28,15,192,224,127,192,28,15,192,224,14,0,28,0,0,224,14,0,28,0,0,224,14,0,28,0,0,224,14,63,255,254,0,224,14,63,255,254,0,224,14,63,255,254,0,224,14,0,28,0,0,224,14,0,28,0,0,224,14,0,28,0,0,252,113,192,28,0,0,252,113,192,28,0,0,252,113,192,28,0,0,227,129,255,255,255,192,227,129,255,255,255,192,227,129,255,255,255,192,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0, + // 0x9650 限 + 80,150,42,45,14,48,3,250,255,241,255,255,240,0,255,241,255,255,240,0,255,241,255,255,240,0,224,113,192,0,112,0,224,113,192,0,112,0,224,113,192,0,112,0,227,129,192,0,112,0,227,129,192,0,112,0,227,129,192,0,112,0,227,129,255,255,240,0,227,129,255,255,240,0,227,129,255,255,240,0,252,1,192,0,112,0,252,1,192,0,112,0,252,1,192,0,112,0,227,129,192,0,112,0,227,129,192,0,112,0,227,129,192,0,112,0,224,113,255,255,240,0,224,113,255,255,240,0,224,113,255,255,240,0,224,113,192,224,14,0,224,113,192,224,14,0,224,113,192,224,14,0,224,113,192,224,112,0,224,113,192,224,112,0,224,113,192,224,112,0,252,113,192,31,128,0,252,113,192,31,128,0,252,113,192,31,128,0,227,129,192,28,0,0,227,129,192,28,0,0,227,129,192,28,0,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,199,0,112,0,224,1,199,0,112,0,224,1,199,0,112,0,224,1,248,0,15,192,224,1,248,0,15,192,224,1,248,0,15,192,224,1,192,0,0,0,224,1,192,0,0,0,224,1,192,0,0,0, + // 0x9664 除 + 100,150,42,45,14,48,3,250,255,240,0,224,0,0,255,240,0,224,0,0,255,240,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,227,128,7,28,0,0,227,128,7,28,0,0,227,128,7,28,0,0,227,128,56,3,128,0,227,128,56,3,128,0,227,128,56,3,128,0,252,1,192,0,112,0,252,1,192,0,112,0,252,1,192,0,112,0,227,142,63,255,143,192,227,142,63,255,143,192,227,142,63,255,143,192,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,113,255,255,254,0,224,113,255,255,254,0,224,113,255,255,254,0,252,112,0,224,0,0,252,112,0,224,0,0,252,112,0,224,0,0,227,128,56,227,128,0,227,128,56,227,128,0,227,128,56,227,128,0,224,1,192,224,112,0,224,1,192,224,112,0,224,1,192,224,112,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,0,56,224,14,0,224,0,56,224,14,0,224,0,56,224,14,0,224,0,7,0,0,0,224,0,7,0,0,0,224,0,7,0,0,0, + // 0x9669 险 + 105,150,42,48,32,48,3,250,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,255,240,0,224,0,0,255,240,0,224,0,0,255,240,0,224,0,0,224,112,7,28,0,0,224,112,7,28,0,0,224,112,7,28,0,0,227,128,7,28,0,0,227,128,7,28,0,0,227,128,7,28,0,0,227,128,56,3,128,0,227,128,56,3,128,0,227,128,56,3,128,0,252,1,192,0,112,0,252,1,192,0,112,0,252,1,192,0,112,0,227,142,63,255,143,192,227,142,63,255,143,192,227,142,63,255,143,192,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,224,112,0,252,113,192,224,112,0,252,113,192,224,112,0,252,113,192,224,112,0,227,128,56,227,128,0,227,128,56,227,128,0,227,128,56,227,128,0,224,0,56,3,128,0,224,0,56,3,128,0,224,0,56,3,128,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,15,255,255,255,192,224,15,255,255,255,192,224,15,255,255,255,192,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0, + // 0x96f6 零 + 246,150,45,48,32,48,0,250,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,7,0,0,56,28,0,7,0,0,56,28,0,7,0,0,56,224,127,199,31,241,192,224,127,199,31,241,192,224,127,199,31,241,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,127,199,31,240,0,0,127,199,31,240,0,0,127,199,31,240,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,15,192,31,128,0,0,15,192,31,128,0,0,15,192,31,128,0,3,240,56,0,126,0,3,240,56,0,126,0,3,240,56,0,126,0,252,0,7,0,1,248,252,0,7,0,1,248,252,0,7,0,1,248,0,127,255,255,128,0,0,127,255,255,128,0,0,127,255,255,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,1,248,28,0,0,0,1,248,28,0,0,0,1,248,28,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x9700 需 + 0,151,45,45,14,48,0,250,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,7,0,0,56,28,0,7,0,0,56,28,0,7,0,0,56,224,127,199,31,241,192,224,127,199,31,241,192,224,127,199,31,241,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,127,199,31,240,0,0,127,199,31,240,0,0,127,199,31,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,227,142,0,3,129,192,227,142,0,3,129,192,227,142,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0, + // 0x9752 青 + 82,151,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0, + // 0x975e 非 + 94,151,45,48,32,48,0,250,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,255,255,192,31,255,248,255,255,192,31,255,248,255,255,192,31,255,248,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,31,255,192,31,255,192,31,255,192,31,255,192,31,255,192,31,255,192,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,255,255,192,31,255,248,255,255,192,31,255,248,255,255,192,31,255,248,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0, + // 0x9760 靠 + 96,151,45,48,32,48,0,250,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,31,255,192,31,255,192,31,255,192,31,255,192,31,255,192,31,255,192,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,3,255,192,31,254,0,3,255,192,31,254,0,3,255,192,31,254,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,31,255,192,31,255,192,31,255,192,31,255,192,31,255,192,31,255,192,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0, + // 0x9762 面 + 98,151,45,45,14,48,0,250,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,255,252,14,0,3,129,255,252,14,0,3,129,255,252,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,255,252,14,0,3,129,255,252,14,0,3,129,255,252,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0, + // 0x9875 页 + 117,152,39,45,225,48,3,250,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,56,3,128,3,128,56,3,128,3,128,56,3,128,3,128,56,3,128,3,128,56,3,128,3,128,56,3,128,3,128,56,3,128,3,128,56,3,128,3,128,56,3,128,3,128,56,3,128,3,128,56,3,128,3,128,56,3,128,3,128,56,3,128,3,128,56,3,128,3,128,56,3,128,3,129,199,3,128,3,129,199,3,128,3,129,199,3,128,0,1,192,224,0,0,1,192,224,0,0,1,192,224,0,0,14,0,28,0,0,14,0,28,0,0,14,0,28,0,3,240,0,3,128,3,240,0,3,128,3,240,0,3,128,252,0,0,0,112,252,0,0,0,112,252,0,0,0,112, + // 0x9879 项 + 121,152,45,45,14,48,0,250,0,0,7,255,255,248,0,0,7,255,255,248,0,0,7,255,255,248,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,255,255,192,28,0,0,255,255,192,28,0,0,255,255,192,28,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,127,199,28,1,192,0,127,199,28,1,192,0,127,199,28,1,192,255,128,0,28,112,0,255,128,0,28,112,0,255,128,0,28,112,0,28,0,0,224,14,0,28,0,0,224,14,0,28,0,0,224,14,0,0,0,7,0,1,192,0,0,7,0,1,192,0,0,7,0,1,192,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + // 0x9884 预 + 132,152,45,45,14,48,0,250,255,254,7,255,255,248,255,254,7,255,255,248,255,254,7,255,255,248,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,28,112,0,28,0,0,28,112,0,28,0,0,28,112,0,28,0,0,3,128,7,255,255,192,3,128,7,255,255,192,3,128,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,255,255,199,3,129,192,255,255,199,3,129,192,255,255,199,3,129,192,3,129,199,3,129,192,3,129,199,3,129,192,3,129,199,3,129,192,3,142,7,3,129,192,3,142,7,3,129,192,3,142,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,28,1,192,3,128,7,28,1,192,3,128,7,28,1,192,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,227,128,7,0,1,192,227,128,7,0,1,192,227,128,7,0,1,192,28,0,56,0,0,56,28,0,56,0,0,56,28,0,56,0,0,56, + // 0x9891 频 + 145,152,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,255,255,248,0,112,7,255,255,248,0,112,7,255,255,248,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,127,192,28,0,0,28,127,192,28,0,0,28,127,192,28,0,0,28,112,7,255,255,192,28,112,7,255,255,192,28,112,7,255,255,192,28,112,7,0,1,192,28,112,7,0,1,192,28,112,7,0,1,192,255,255,255,3,129,192,255,255,255,3,129,192,255,255,255,3,129,192,0,0,7,3,129,192,0,0,7,3,129,192,0,0,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,28,113,199,28,1,192,28,113,199,28,1,192,28,113,199,28,1,192,224,1,192,28,112,0,224,1,192,28,112,0,224,1,192,28,112,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,3,240,7,0,1,192,3,240,7,0,1,192,3,240,7,0,1,192,252,0,56,0,0,56,252,0,56,0,0,56,252,0,56,0,0,56, + // 0x989d 额 + 157,152,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,14,0,255,255,248,0,14,0,255,255,248,0,14,0,255,255,248,31,255,255,0,112,0,31,255,255,0,112,0,31,255,255,0,112,0,28,0,7,3,128,0,28,0,7,3,128,0,28,0,7,3,128,0,0,112,0,31,255,192,0,112,0,31,255,192,0,112,0,31,255,192,0,127,248,28,1,192,0,127,248,28,1,192,0,127,248,28,1,192,3,128,56,28,113,192,3,128,56,28,113,192,3,128,56,28,113,192,28,113,192,28,113,192,28,113,192,28,113,192,28,113,192,28,113,192,0,14,0,28,113,192,0,14,0,28,113,192,0,14,0,28,113,192,0,113,192,28,113,192,0,113,192,28,113,192,0,113,192,28,113,192,3,128,56,28,113,192,3,128,56,28,113,192,3,128,56,28,113,192,31,255,255,28,113,192,31,255,255,28,113,192,31,255,255,28,113,192,227,128,56,3,142,0,227,128,56,3,142,0,227,128,56,3,142,0,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,255,248,28,0,56,3,255,248,28,0,56,3,255,248,28,0,56,3,128,56,224,0,56,3,128,56,224,0,56,3,128,56,224,0,56, + // 0x98ce 风 + 206,152,45,45,14,48,0,250,3,255,255,255,240,0,3,255,255,255,240,0,3,255,255,255,240,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,142,0,28,112,0,3,142,0,28,112,0,3,142,0,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,128,56,224,112,0,3,128,56,224,112,0,3,128,56,224,112,0,3,128,56,224,112,0,3,128,56,224,112,0,3,128,56,224,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,56,224,112,0,3,128,56,224,112,0,3,128,56,224,112,0,3,128,56,224,112,56,3,128,56,224,112,56,3,128,56,224,112,56,3,129,192,28,14,56,3,129,192,28,14,56,3,129,192,28,14,56,28,14,0,28,14,56,28,14,0,28,14,56,28,14,0,28,14,56,28,0,0,0,1,248,28,0,0,0,1,248,28,0,0,0,1,248,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56, + // 0x9971 饱 + 113,153,45,45,14,48,0,253,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,7,255,255,192,3,128,7,255,255,192,3,128,7,255,255,192,3,254,7,0,1,192,3,254,7,0,1,192,3,254,7,0,1,192,28,14,56,0,1,192,28,14,56,0,1,192,28,14,56,0,1,192,28,113,199,255,241,192,28,113,199,255,241,192,28,113,199,255,241,192,224,0,7,0,113,192,224,0,7,0,113,192,224,0,7,0,113,192,3,128,7,0,113,192,3,128,7,0,113,192,3,128,7,0,113,192,3,128,7,0,113,192,3,128,7,0,113,192,3,128,7,0,113,192,3,128,7,255,241,192,3,128,7,255,241,192,3,128,7,255,241,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,3,142,0,3,128,7,3,142,0,3,128,7,3,142,0,3,142,7,0,112,56,3,142,7,0,112,56,3,142,7,0,112,56,3,240,7,0,0,56,3,240,7,0,0,56,3,240,7,0,0,56,3,128,0,255,255,248,3,128,0,255,255,248,3,128,0,255,255,248, + // 0x9a6c 马 + 108,154,42,45,14,48,0,250,31,255,255,255,128,0,31,255,255,255,128,0,31,255,255,255,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,127,255,255,255,192,0,127,255,255,255,192,0,127,255,255,255,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,255,255,255,255,129,192,255,255,255,255,129,192,255,255,255,255,129,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0, + // 0x9a71 驱 + 113,154,45,45,14,48,0,250,255,254,7,255,255,248,255,254,7,255,255,248,255,254,7,255,255,248,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,28,14,7,0,1,192,28,14,7,0,1,192,28,14,7,0,1,192,28,14,7,28,1,192,28,14,7,28,1,192,28,14,7,28,1,192,28,14,7,3,142,0,28,14,7,3,142,0,28,14,7,3,142,0,28,14,7,3,142,0,28,14,7,3,142,0,28,14,7,3,142,0,31,255,199,0,112,0,31,255,199,0,112,0,31,255,199,0,112,0,0,1,199,0,112,0,0,1,199,0,112,0,0,1,199,0,112,0,0,1,199,3,142,0,0,1,199,3,142,0,0,1,199,3,142,0,0,127,199,3,142,0,0,127,199,3,142,0,0,127,199,3,142,0,255,129,199,28,1,192,255,129,199,28,1,192,255,129,199,28,1,192,28,1,199,224,1,192,28,1,199,224,1,192,28,1,199,224,1,192,0,1,199,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,3,142,7,255,255,248,3,142,7,255,255,248,3,142,7,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x9ad8 高 + 216,154,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,15,255,255,129,192,28,15,255,255,129,192,28,15,255,255,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,15,255,255,129,192,28,15,255,255,129,192,28,15,255,255,129,192,28,0,0,0,15,192,28,0,0,0,15,192,28,0,0,0,15,192, + // 0x9ec4 黄 + 196,158,45,48,32,48,0,250,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,128,0,0,15,192,31,128,0,0,15,192,31,128,0,0,15,192, + // 0x9ede 點 + 222,158,45,48,32,48,0,250,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,255,248,0,112,0,255,255,248,0,112,0,255,255,248,0,112,0,224,112,56,0,112,0,224,112,56,0,112,0,224,112,56,0,112,0,252,113,248,0,112,0,252,113,248,0,112,0,252,113,248,0,112,0,227,254,56,0,127,248,227,254,56,0,127,248,227,254,56,0,127,248,224,112,56,0,112,0,224,112,56,0,112,0,224,112,56,0,112,0,255,255,248,0,112,0,255,255,248,0,112,0,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,248,255,255,248,255,255,248,255,255,248,255,255,248,255,255,248,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,127,248,224,0,56,0,127,248,224,0,56,0,127,248,224,0,56,255,128,0,224,0,56,255,128,0,224,0,56,255,128,0,224,0,56,0,0,56,224,0,56,0,0,56,224,0,56,0,0,56,224,0,56,227,142,56,224,0,56,227,142,56,224,0,56,227,142,56,224,0,56,227,142,0,255,255,248,227,142,0,255,255,248,227,142,0,255,255,248,224,0,0,224,0,56,224,0,0,224,0,56,224,0,0,224,0,56, + // 0x9f50 齐 + 80,159,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,15,192,31,128,0,0,15,192,31,128,0,0,15,192,31,128,0,3,240,0,0,126,0,3,240,0,0,126,0,3,240,0,0,126,0,252,14,0,3,129,248,252,14,0,3,129,248,252,14,0,3,129,248,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + // 0xff1a : + 26,255,12,21,42,48,18,3,255,240,255,240,255,240,255,240,255,240,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,240,255,240,255,240,255,240,255,240,255,240, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Symbols_30.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Symbols_30.cpp new file mode 100644 index 0000000000..58600e54a7 --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Symbols_30.cpp @@ -0,0 +1,38 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// Unifont Symbols 48pt, capital 'A' height: 30px, width: 100% +extern const uint8_t Unifont_Symbols_30[140] = { + 129,30,8,0,10,0,42,250, // unifont_t + // 0x08 - LCD_STR_THERMOMETER a.k.a 0x1f321 🌡 + 15,36,72,48,15,0,3,128,3,128,3,128,28,112,28,112,28,112,28,112,28,112,28,112,28,112,28,112,28,112,28,112,28,112,28,112,31,240,31,240,31,240,31,240,31,240,31,240,31,240,31,240,31,240,255,254,255,254,255,254,255,254,255,254,255,254,255,254,255,254,255,254,31,240,31,240,31,240, + // 0x09 - LCD_STR_DEGREE a.k.a 0x00b0 ° + 12,12,24,24,6,18,31,128,31,128,31,128,224,112,224,112,224,112,224,112,224,112,224,112,31,128,31,128,31,128, + // 0x0a - replacement for 0x2026 used in Greek language files … + 21,6,18,24,3,0,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Traditional_Chinese_30.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Traditional_Chinese_30.cpp new file mode 100644 index 0000000000..a3b16c4eca --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Traditional_Chinese_30.cpp @@ -0,0 +1,646 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// Unifont Traditional Chinese 48pt, capital 'A' height: 30px, width: 100%, range: 0x22bf-0xff1a, glyphs: 307 +extern const uint8_t Unifont_Traditional_Chinese_30[18862] = { + 161,30,191,34,26,255,42,250, // unifont_t + // 0x22bf ⊿ + 191,34,18,18,54,24,3,0,0,1,192,0,1,192,0,1,192,0,15,192,0,15,192,0,15,192,0,113,192,0,113,192,0,113,192,3,129,192,3,129,192,3,129,192,28,1,192,28,1,192,28,1,192,255,255,192,255,255,192,255,255,192, + // 0x4e00 一 + 0,78,45,3,18,48,0,18,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x4e09 三 + 9,78,45,36,216,48,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x4e0a 上 + 10,78,45,45,14,48,0,253,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x4e0b 下 + 11,78,45,45,14,48,0,250,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x4e0d 不 + 13,78,42,45,14,48,0,250,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,63,28,0,0,0,0,63,28,0,0,0,0,63,28,0,0,0,1,199,3,128,0,0,1,199,3,128,0,0,1,199,3,128,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,28,0,7,0,1,192,28,0,7,0,1,192,28,0,7,0,1,192,224,0,7,0,0,0,224,0,7,0,0,0,224,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x4e26 並 + 38,78,45,45,14,48,0,253,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,0,113,192,28,14,0,0,113,192,28,14,0,0,113,192,28,14,0,0,113,192,28,112,0,0,113,192,28,112,0,0,113,192,28,112,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x4e2d 中 + 45,78,33,48,240,48,6,250,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,224,1,192,3,128,224,1,192,3,128,224,1,192,3,128,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + // 0x4e3b 主 + 59,78,45,45,14,48,0,253,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x4e4b 之 + 75,78,42,45,14,48,3,253,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,240,0,255,255,255,255,240,0,255,255,255,255,240,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,3,240,0,0,0,0,3,240,0,0,0,0,3,240,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,224,1,255,255,255,192,224,1,255,255,255,192,224,1,255,255,255,192, + // 0x4ea4 交 + 164,78,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,15,192,28,0,0,0,15,192,28,0,0,0,15,192,28,0,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,3,240,0,252,0,0,0,15,248,252,0,0,0,15,248,252,0,0,0,15,248, + // 0x4eae 亮 + 174,78,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,1,255,252,1,192,224,1,255,252,1,192,224,1,255,252,1,192,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,3,240,0,28,0,56,3,240,0,28,0,56,3,240,0,28,0,56,252,0,0,3,255,248,252,0,0,3,255,248,252,0,0,3,255,248, + // 0x4ee4 令 + 228,78,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,56,3,128,0,0,14,56,3,128,0,0,14,56,3,128,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0, + // 0x4ef6 件 + 246,78,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0, + // 0x4efd 份 + 253,78,45,48,32,48,0,250,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,224,112,0,0,14,0,224,112,0,0,14,0,224,112,0,0,14,0,224,112,0,0,14,0,224,112,0,0,14,0,224,112,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,3,240,7,0,1,192,3,240,7,0,1,192,3,240,7,0,1,192,3,240,56,0,1,192,3,240,56,0,1,192,3,240,56,0,1,192,28,113,199,255,254,56,28,113,199,255,254,56,28,113,199,255,254,56,224,112,0,224,14,0,224,112,0,224,14,0,224,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,0,113,192,0,112,0,0,113,192,0,112,0,0,113,192,0,112,0, + // 0x4f11 休 + 17,79,45,48,32,48,0,250,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,3,240,0,28,0,0,3,240,0,28,0,0,3,240,0,28,0,0,3,240,0,255,128,0,3,240,0,255,128,0,3,240,0,255,128,0,28,112,0,255,128,0,28,112,0,255,128,0,28,112,0,255,128,0,224,112,7,28,112,0,224,112,7,28,112,0,224,112,7,28,112,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,126,0,28,0,56,0,126,0,28,0,56,0,126,0,28,0,56,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0, + // 0x4f4d 位 + 77,79,45,48,32,48,0,250,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,3,240,0,0,0,0,3,240,0,0,0,0,3,240,0,0,0,0,3,240,0,0,14,0,3,240,0,0,14,0,3,240,0,0,14,0,28,112,56,0,14,0,28,112,56,0,14,0,28,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,127,255,255,255,248,0,127,255,255,255,248,0,127,255,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x4f4e 低 + 78,79,45,48,32,48,0,250,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,3,255,192,0,14,0,3,255,192,0,14,0,3,255,192,0,14,63,255,128,0,0,14,63,255,128,0,0,14,63,255,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,3,240,56,3,128,0,28,112,63,255,255,248,28,112,63,255,255,248,28,112,63,255,255,248,224,112,56,3,128,0,224,112,56,3,128,0,224,112,56,3,128,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,14,56,0,112,56,0,14,56,0,112,56,0,14,56,0,112,56,224,14,56,0,112,56,224,14,56,0,112,56,224,14,56,0,112,63,3,129,248,0,112,63,3,129,248,0,112,63,3,129,248,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0,112,56, + // 0x4f5c 作 + 92,79,45,48,32,48,0,250,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,112,7,255,255,248,0,112,7,255,255,248,0,112,7,255,255,248,0,112,56,224,0,0,0,112,56,224,0,0,0,112,56,224,0,0,3,240,56,224,0,0,3,240,56,224,0,0,3,240,56,224,0,0,3,241,192,224,0,0,3,241,192,224,0,0,3,241,192,224,0,0,28,112,0,255,254,0,28,112,0,255,254,0,28,112,0,255,254,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0, + // 0x4f9b 供 + 155,79,45,48,32,48,0,250,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,3,240,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,28,112,7,0,112,0,28,112,7,0,112,0,28,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,113,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192,0,126,0,0,1,192,0,126,0,0,1,192,0,126,0,0,1,192, + // 0x4fdd 保 + 221,79,45,48,32,48,0,250,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,63,255,254,0,0,14,63,255,254,0,0,14,63,255,254,0,0,14,56,0,14,0,0,14,56,0,14,0,0,14,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,3,240,63,255,254,0,3,240,63,255,254,0,3,240,63,255,254,0,3,240,0,28,0,0,3,240,0,28,0,0,3,240,0,28,0,0,28,112,0,28,0,0,28,112,0,28,0,0,28,112,0,28,0,0,224,113,255,255,255,192,224,113,255,255,255,192,224,113,255,255,255,192,0,112,0,255,128,0,0,112,0,255,128,0,0,112,0,255,128,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,126,0,28,0,56,0,126,0,28,0,56,0,126,0,28,0,56,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0, + // 0x4fe1 信 + 225,79,45,48,32,48,0,250,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,63,255,255,248,0,14,63,255,255,248,0,14,63,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,240,7,255,255,192,3,240,7,255,255,192,3,240,7,255,255,192,3,240,0,0,0,0,3,240,0,0,0,0,3,240,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,224,112,7,255,255,192,224,112,7,255,255,192,224,112,7,255,255,192,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192, + // 0x500b 個 + 11,80,42,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,31,129,192,28,1,192,31,129,192,28,1,192,31,129,192,28,1,192,31,129,192,28,1,192,31,129,192,28,1,192,31,129,192,28,1,192,227,129,199,255,241,192,227,129,199,255,241,192,227,129,199,255,241,192,3,129,199,0,113,192,3,129,199,0,113,192,3,129,199,0,113,192,3,129,199,0,113,192,3,129,199,0,113,192,3,129,199,0,113,192,3,129,199,0,113,192,3,129,199,0,113,192,3,129,199,0,113,192,3,129,199,255,241,192,3,129,199,255,241,192,3,129,199,255,241,192,3,129,199,0,113,192,3,129,199,0,113,192,3,129,199,0,113,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192, + // 0x503c 值 + 60,80,45,48,32,48,0,250,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,15,255,255,255,192,0,15,255,255,255,192,0,15,255,255,255,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,240,63,255,254,0,3,240,63,255,254,0,3,240,63,255,254,0,3,240,56,0,14,0,3,240,56,0,14,0,3,240,56,0,14,0,28,112,63,255,254,0,28,112,63,255,254,0,28,112,63,255,254,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,127,255,255,255,248,0,127,255,255,255,248,0,127,255,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x504f 偏 + 79,80,42,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,31,129,255,255,255,192,31,129,255,255,255,192,31,129,255,255,255,192,31,129,192,0,0,0,31,129,192,0,0,0,31,129,192,0,0,0,227,129,192,0,0,0,227,129,192,0,0,0,227,129,192,0,0,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,248,227,129,192,3,129,248,227,129,192,3,129,248,227,129,192,3,142,56,227,129,192,3,142,56,227,129,192,3,142,56,227,129,192,3,142,63,255,255,192,3,142,63,255,255,192,3,142,63,255,255,192,3,142,56,227,129,192,3,142,56,227,129,192,3,142,56,227,129,192,3,142,56,227,129,192,3,142,56,227,129,192,3,142,56,227,129,192,3,240,56,227,129,192,3,240,56,227,129,192,3,240,56,227,129,192,3,128,56,0,15,192,3,128,56,0,15,192,3,128,56,0,15,192, + // 0x505c 停 + 92,80,45,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,31,128,56,0,14,0,31,128,56,0,14,0,31,128,56,0,14,0,31,128,63,255,254,0,31,128,63,255,254,0,31,128,63,255,254,0,227,128,0,0,0,0,227,128,0,0,0,0,227,128,0,0,0,0,3,143,255,255,255,248,3,143,255,255,255,248,3,143,255,255,255,248,3,142,0,0,0,56,3,142,0,0,0,56,3,142,0,0,0,56,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,7,28,0,0,3,128,7,28,0,0,3,128,7,28,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0, + // 0x5075 偵 + 117,80,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,31,255,248,0,112,0,31,255,248,0,112,0,31,255,248,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,31,129,192,0,1,192,31,129,192,0,1,192,31,129,192,0,1,192,31,129,192,0,1,192,31,129,192,0,1,192,31,129,192,0,1,192,227,129,255,255,255,192,227,129,255,255,255,192,227,129,255,255,255,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192, + // 0x5099 備 + 153,80,45,48,32,48,0,250,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,63,255,255,248,0,14,63,255,255,248,0,14,63,255,255,248,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,3,241,255,255,255,248,3,241,255,255,255,248,3,241,255,255,255,248,3,240,0,224,0,0,3,240,0,224,0,0,3,240,0,224,0,0,28,112,7,255,255,192,28,112,7,255,255,192,28,112,7,255,255,192,224,112,63,3,129,192,224,112,63,3,129,192,224,112,63,3,129,192,0,113,199,255,255,192,0,113,199,255,255,192,0,113,199,255,255,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,0,15,192,0,112,7,0,15,192,0,112,7,0,15,192, + // 0x50b3 傳 + 179,80,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,127,255,255,255,248,0,127,255,255,255,248,0,127,255,255,255,248,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,31,129,255,255,255,192,31,129,255,255,255,192,31,129,255,255,255,192,31,129,192,28,1,192,31,129,192,28,1,192,31,129,192,28,1,192,227,129,255,255,255,192,227,129,255,255,255,192,227,129,255,255,255,192,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,143,255,255,255,248,3,143,255,255,255,248,3,143,255,255,255,248,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,143,255,255,255,248,3,143,255,255,255,248,3,143,255,255,255,248,3,128,56,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,28,112,0,3,128,7,28,112,0,3,128,7,28,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + // 0x50be 傾 + 190,80,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,255,255,248,0,112,7,255,255,248,0,112,7,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,255,255,192,3,129,192,255,255,192,3,129,192,255,255,192,31,129,192,224,1,192,31,129,192,224,1,192,31,129,192,224,1,192,31,129,255,224,1,192,31,129,255,224,1,192,31,129,255,224,1,192,227,129,192,255,255,192,227,129,192,255,255,192,227,129,192,255,255,192,3,129,192,224,1,192,3,129,192,224,1,192,3,129,192,224,1,192,3,129,192,255,255,192,3,129,192,255,255,192,3,129,192,255,255,192,3,129,199,224,1,192,3,129,199,224,1,192,3,129,199,224,1,192,3,129,248,224,1,192,3,129,248,224,1,192,3,129,248,224,1,192,3,129,192,255,255,192,3,129,192,255,255,192,3,129,192,255,255,192,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,7,0,0,56,3,128,7,0,0,56,3,128,7,0,0,56, + // 0x5132 儲 + 50,81,45,48,32,48,0,250,0,113,192,0,112,0,0,113,192,0,112,0,0,113,192,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,31,254,56,0,112,56,31,254,56,0,112,56,31,254,56,3,143,255,0,112,56,3,143,255,0,112,56,3,143,255,0,112,56,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,31,143,255,31,255,248,31,143,255,31,255,248,31,143,255,31,255,248,31,128,0,0,14,0,31,128,0,0,14,0,31,128,0,0,14,0,227,143,255,0,112,0,227,143,255,0,112,0,227,143,255,0,112,0,3,128,0,3,255,192,3,128,0,3,255,192,3,128,0,3,255,192,3,143,255,31,129,192,3,143,255,31,129,192,3,143,255,31,129,192,3,142,7,227,129,192,3,142,7,227,129,192,3,142,7,227,129,192,3,142,7,3,255,192,3,142,7,3,255,192,3,142,7,3,255,192,3,142,7,3,129,192,3,142,7,3,129,192,3,142,7,3,129,192,3,143,255,3,129,192,3,143,255,3,129,192,3,143,255,3,129,192,3,142,7,3,255,192,3,142,7,3,255,192,3,142,7,3,255,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192, + // 0x5145 充 + 69,81,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,1,192,28,14,0,0,1,192,28,14,0,0,1,192,28,14,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,31,128,0,3,255,192,31,128,0,3,255,192,31,128,0,3,255,192, + // 0x5148 先 + 72,81,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,127,255,255,254,0,0,127,255,255,254,0,0,127,255,255,254,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,28,0,7,0,0,0,28,0,7,0,0,0,28,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,3,128,0,3,255,248,3,128,0,3,255,248,3,128,0,3,255,248,252,0,0,0,0,0,252,0,0,0,0,0,252,0,0,0,0,0, + // 0x5149 光 + 73,81,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,3,128,0,3,255,248,3,128,0,3,255,248,3,128,0,3,255,248,252,0,0,0,0,0,252,0,0,0,0,0,252,0,0,0,0,0, + // 0x5165 入 + 101,81,45,48,32,48,0,250,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,224,0,0,0,1,248,224,0,0,0,1,248,224,0,0,0,1,248, + // 0x5168 全 + 104,81,45,45,14,48,0,253,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,143,255,255,142,0,3,143,255,255,142,0,3,143,255,255,142,0,252,0,7,0,1,248,252,0,7,0,1,248,252,0,7,0,1,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192, + // 0x5171 共 + 113,81,42,48,32,48,3,250,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,31,255,255,255,254,0,31,255,255,255,254,0,31,255,255,255,254,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,255,255,255,255,255,192,255,255,255,255,255,192,255,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0, + // 0x5177 具 + 119,81,45,45,14,48,0,250,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0, + // 0x5197 冗 + 151,81,45,42,252,48,0,250,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,252,0,0,0,15,255,252,0,0,0,15,255,252,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,28,0,0,3,255,248,28,0,0,3,255,248,28,0,0,3,255,248,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0, + // 0x51b7 冷 + 183,81,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,56,28,14,0,0,0,56,28,14,0,0,0,56,28,14,0,0,113,192,3,129,248,0,113,192,3,129,248,0,113,192,3,129,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,255,128,0,0,14,0,255,128,0,0,14,0,255,128,0,0,14,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0x51c6 准 + 198,81,45,48,32,48,0,250,0,0,7,28,0,0,0,0,7,28,0,0,0,0,7,28,0,0,28,0,7,3,128,0,28,0,7,3,128,0,28,0,7,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,3,128,63,255,255,248,3,128,63,255,255,248,3,128,63,255,255,248,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,3,128,0,0,113,248,3,128,0,0,113,248,3,128,0,0,113,248,3,128,0,0,126,63,255,255,192,0,126,63,255,255,192,0,126,63,255,255,192,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,63,255,255,192,3,128,63,255,255,192,3,128,63,255,255,192,255,128,56,3,128,0,255,128,56,3,128,0,255,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,63,255,255,248,3,128,63,255,255,248,3,128,63,255,255,248,3,128,56,0,0,0,3,128,56,0,0,0,3,128,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x51fa 出 + 250,81,39,48,240,48,3,250,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14, + // 0x5206 分 + 6,82,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,224,127,255,255,128,56,224,127,255,255,128,56,224,127,255,255,128,56,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,7,28,0,0,3,128,7,28,0,0,3,128,7,28,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0, + // 0x5217 列 + 23,82,42,48,32,48,0,250,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,31,255,255,224,1,192,31,255,255,224,1,192,31,255,255,224,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,127,255,3,129,192,0,127,255,3,129,192,0,127,255,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,28,112,56,3,129,192,28,112,56,3,129,192,28,112,56,3,129,192,224,14,56,3,129,192,224,14,56,3,129,192,224,14,56,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0, + // 0x521d 初 + 29,82,42,48,32,48,0,250,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,0,7,255,255,192,0,0,7,255,255,192,0,0,7,255,255,192,255,255,192,28,1,192,255,255,192,28,1,192,255,255,192,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,3,241,192,28,1,192,3,241,192,28,1,192,3,241,192,28,1,192,28,126,0,28,1,192,28,126,0,28,1,192,28,126,0,28,1,192,224,113,192,28,1,192,224,113,192,28,1,192,224,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,0,113,192,0,112,0,0,113,192,0,112,0,0,113,192,0,112,0, + // 0x5230 到 + 48,82,42,48,32,48,0,250,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,255,255,255,224,1,192,255,255,255,224,1,192,255,255,255,224,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,28,0,7,3,129,192,28,0,7,3,129,192,28,0,7,3,129,192,255,255,255,227,129,192,255,255,255,227,129,192,255,255,255,227,129,192,0,14,0,227,129,192,0,14,0,227,129,192,0,14,0,227,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,15,255,224,1,192,0,15,255,224,1,192,0,15,255,224,1,192,255,254,0,0,113,192,255,254,0,0,113,192,255,254,0,0,113,192,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0, + // 0x5236 制 + 54,82,42,48,32,48,0,250,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,255,255,227,129,192,3,255,255,227,129,192,3,255,255,227,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,255,255,255,255,129,192,255,255,255,255,129,192,255,255,255,255,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,3,255,255,227,129,192,3,255,255,227,129,192,3,255,255,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,248,224,1,192,3,129,248,224,1,192,3,129,248,224,1,192,3,129,199,0,1,192,3,129,199,0,1,192,3,129,199,0,1,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0, + // 0x5237 刷 + 55,82,45,48,32,48,0,250,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,3,255,255,252,0,56,3,255,255,252,0,56,3,255,255,252,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,255,255,252,112,56,3,255,255,252,112,56,3,255,255,252,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,255,255,252,112,56,3,255,255,252,112,56,3,255,255,252,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,28,112,56,224,112,63,28,0,56,224,112,63,28,0,56,224,112,63,28,0,56,0,112,56,224,0,56,0,112,56,224,0,56,0,112,56,224,0,56,0,0,56,0,14,56,0,0,56,0,14,56,0,0,56,0,14,56,0,0,56,0,1,192,0,0,56,0,1,192,0,0,56,0,1,192, + // 0x5275 創 + 117,82,42,48,32,48,0,250,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,15,192,0,1,192,0,15,192,0,1,192,0,15,192,0,1,192,0,112,56,0,1,192,0,112,56,0,1,192,0,112,56,0,1,192,3,142,7,3,129,192,3,142,7,3,129,192,3,142,7,3,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,227,129,192,227,255,255,3,129,192,227,255,255,3,129,192,227,255,255,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,255,255,3,129,192,3,255,255,3,129,192,3,255,255,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,255,255,3,129,192,3,255,255,3,129,192,3,255,255,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,255,255,3,129,192,3,255,255,3,129,192,3,255,255,3,129,192,28,112,7,0,1,192,28,112,7,0,1,192,28,112,7,0,1,192,28,112,7,0,1,192,28,112,7,0,1,192,28,112,7,0,1,192,224,127,255,0,113,192,224,127,255,0,113,192,224,127,255,0,113,192,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0, + // 0x529b 力 + 155,82,36,48,240,48,3,250,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112,0,112,0,0,112,0,112,0,0,112,0,112,0,0,112,0,112,0,0,112,0,112,0,0,112,0,112,0,0,112,3,128,7,0,112,3,128,7,0,112,3,128,7,0,112,28,0,0,227,128,28,0,0,227,128,28,0,0,227,128,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0, + // 0x52a0 加 + 160,82,42,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,31,255,192,0,112,0,31,255,192,0,112,0,31,255,192,255,255,248,28,1,192,255,255,248,28,1,192,255,255,248,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,31,255,192,3,128,56,31,255,192,3,128,56,31,255,192,28,14,56,28,1,192,28,14,56,28,1,192,28,14,56,28,1,192,224,1,192,0,0,0,224,1,192,0,0,0,224,1,192,0,0,0, + // 0x52d5 動 + 213,82,42,48,32,48,0,250,0,15,255,3,128,0,0,15,255,3,128,0,0,15,255,3,128,0,31,254,0,3,128,0,31,254,0,3,128,0,31,254,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,255,255,255,227,128,0,255,255,255,227,128,0,255,255,255,227,128,0,0,14,0,31,255,192,0,14,0,31,255,192,0,14,0,31,255,192,31,255,255,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,28,14,7,3,129,192,28,14,7,3,129,192,28,14,7,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,28,14,7,3,129,192,28,14,7,3,129,192,28,14,7,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,15,255,252,1,192,0,15,255,252,1,192,0,15,255,252,1,192,255,254,0,224,113,192,255,254,0,224,113,192,255,254,0,224,113,192,28,0,7,0,14,0,28,0,7,0,14,0,28,0,7,0,14,0, + // 0x5316 化 + 22,83,45,48,32,48,0,250,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,1,192,0,14,0,224,1,192,0,14,0,224,1,192,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,3,240,0,227,128,0,3,240,0,227,128,0,3,240,0,227,128,0,3,240,0,252,0,0,3,240,0,252,0,0,3,240,0,252,0,0,28,112,0,224,0,0,28,112,0,224,0,0,28,112,0,224,0,0,224,112,7,224,0,0,224,112,7,224,0,0,224,112,7,224,0,0,0,112,56,224,0,0,0,112,56,224,0,0,0,112,56,224,0,0,0,113,192,224,0,0,0,113,192,224,0,0,0,113,192,224,0,0,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,31,255,248,0,112,0,31,255,248,0,112,0,31,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x534a 半 + 74,83,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x5354 協 + 84,83,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,63,255,255,192,3,128,63,255,255,192,3,128,63,255,255,192,3,128,0,224,1,192,3,128,0,224,1,192,3,128,0,224,1,192,255,254,0,224,1,192,255,254,0,224,1,192,255,254,0,224,1,192,3,128,7,0,113,192,3,128,7,0,113,192,3,128,7,0,113,192,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,143,255,227,255,248,3,143,255,227,255,248,3,143,255,227,255,248,3,129,192,224,112,56,3,129,192,224,112,56,3,129,192,224,112,56,3,129,192,224,112,56,3,129,192,224,112,56,3,129,192,224,112,56,3,129,192,224,112,56,3,129,192,224,112,56,3,129,192,224,112,56,3,142,0,227,128,56,3,142,0,227,128,56,3,142,0,227,128,56,3,142,56,227,142,56,3,142,56,227,142,56,3,142,56,227,142,56,3,240,7,28,1,192,3,240,7,28,1,192,3,240,7,28,1,192, + // 0x5361 卡 + 97,83,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x5370 印 + 112,83,39,45,225,48,3,250,0,15,192,0,0,0,15,192,0,0,0,15,192,0,0,255,240,7,255,254,255,240,7,255,254,255,240,7,255,254,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,255,255,199,0,14,255,255,199,0,14,255,255,199,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,127,199,28,112,224,127,199,28,112,224,127,199,28,112,255,128,7,3,128,255,128,7,3,128,255,128,7,3,128,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,0,0, + // 0x5378 卸 + 120,83,42,48,32,48,0,250,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,255,255,31,255,192,3,255,255,31,255,192,3,255,255,31,255,192,28,14,0,28,1,192,28,14,0,28,1,192,28,14,0,28,1,192,224,14,0,28,1,192,224,14,0,28,1,192,224,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,31,255,255,28,1,192,31,255,255,28,1,192,31,255,255,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,3,143,248,28,1,192,3,143,248,28,1,192,3,143,248,28,1,192,3,142,0,28,1,192,3,142,0,28,1,192,3,142,0,28,1,192,3,142,0,28,113,192,3,142,0,28,113,192,3,142,0,28,113,192,3,143,255,28,14,0,3,143,255,28,14,0,3,143,255,28,14,0,255,240,0,28,0,0,255,240,0,28,0,0,255,240,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x537b 卻 + 123,83,42,48,32,48,0,250,0,113,192,0,0,0,0,113,192,0,0,0,0,113,192,0,0,0,0,112,56,0,0,0,0,112,56,0,0,0,0,112,56,0,0,0,3,128,7,31,255,192,3,128,7,31,255,192,3,128,7,31,255,192,28,14,7,28,1,192,28,14,7,28,1,192,28,14,7,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,28,0,7,28,1,192,28,0,7,28,1,192,28,0,7,28,1,192,227,255,248,28,1,192,227,255,248,28,1,192,227,255,248,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,113,192,3,128,56,28,113,192,3,128,56,28,113,192,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,3,255,248,28,0,0,3,255,248,28,0,0,3,255,248,28,0,0,3,128,56,28,0,0,3,128,56,28,0,0,3,128,56,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x539f 原 + 159,83,45,45,14,48,0,250,3,255,255,255,255,248,3,255,255,255,255,248,3,255,255,255,255,248,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,3,129,255,255,240,0,3,129,255,255,240,0,3,129,255,255,240,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,255,255,240,0,3,129,255,255,240,0,3,129,255,255,240,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,255,255,240,0,3,129,255,255,240,0,3,129,255,255,240,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,129,192,224,112,0,3,129,192,224,112,0,3,129,192,224,112,0,28,14,0,224,14,0,28,14,0,224,14,0,28,14,0,224,14,0,28,112,56,224,1,192,28,112,56,224,1,192,28,112,56,224,1,192,224,0,7,0,0,0,224,0,7,0,0,0,224,0,7,0,0,0, + // 0x53cd 反 + 205,83,45,48,32,48,0,250,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,255,254,0,0,0,0,255,254,0,0,0,0,255,254,0,3,255,255,0,0,0,3,255,255,0,0,0,3,255,255,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,7,28,0,0,3,128,7,28,0,0,3,128,7,28,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,28,0,7,28,0,0,28,0,7,28,0,0,28,0,7,28,0,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,224,15,192,0,126,0,224,15,192,0,126,0,224,15,192,0,126,0,3,240,0,0,1,248,3,240,0,0,1,248,3,240,0,0,1,248, + // 0x53d6 取 + 214,83,45,45,14,48,0,250,255,255,255,224,0,0,255,255,255,224,0,0,255,255,255,224,0,0,3,128,56,255,255,192,3,128,56,255,255,192,3,128,56,255,255,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,129,255,227,142,0,3,129,255,227,142,0,3,129,255,227,142,0,255,254,56,0,112,0,255,254,56,0,112,0,255,254,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,28,0,56,0,112,0,0,0,56,3,142,0,0,0,56,3,142,0,0,0,56,3,142,0,0,0,56,28,1,192,0,0,56,28,1,192,0,0,56,28,1,192,0,0,56,224,0,56,0,0,56,224,0,56,0,0,56,224,0,56, + // 0x53f0 台 + 240,83,39,48,240,48,3,250,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,28,0,0,0,14,28,0,0,0,14,28,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,3,255,255,255,128,3,255,255,255,128,3,255,255,255,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128, + // 0x5408 合 + 8,84,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,3,240,0,0,126,0,3,240,0,0,126,0,3,240,0,0,126,0,252,15,255,255,129,248,252,15,255,255,129,248,252,15,255,255,129,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x5426 否 + 38,84,45,45,14,48,0,250,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,1,199,31,128,0,0,1,199,31,128,0,0,1,199,31,128,0,0,14,7,0,126,0,0,14,7,0,126,0,0,14,7,0,126,0,3,240,7,0,1,192,3,240,7,0,1,192,3,240,7,0,1,192,252,0,7,0,0,56,252,0,7,0,0,56,252,0,7,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x544a 告 + 74,84,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,127,255,255,254,0,0,127,255,255,254,0,0,127,255,255,254,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,28,0,7,0,0,0,28,0,7,0,0,0,28,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x547d 命 + 125,84,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,3,241,255,252,126,0,3,241,255,252,126,0,3,241,255,252,126,0,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,248,255,254,0,3,255,248,255,254,0,3,255,248,255,254,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,255,248,227,142,0,3,255,248,227,142,0,3,255,248,227,142,0,3,128,56,224,112,0,3,128,56,224,112,0,3,128,56,224,112,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0, + // 0x548c 和 + 140,84,42,48,32,48,0,250,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,15,248,0,0,0,0,15,248,0,0,0,0,15,248,0,0,0,31,254,0,0,0,0,31,254,0,0,0,0,31,254,0,0,0,0,0,14,0,31,255,192,0,14,0,31,255,192,0,14,0,31,255,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,255,255,255,28,1,192,255,255,255,28,1,192,255,255,255,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,126,0,28,1,192,0,126,0,28,1,192,0,126,0,28,1,192,0,127,192,28,1,192,0,127,192,28,1,192,0,127,192,28,1,192,3,142,56,28,1,192,3,142,56,28,1,192,3,142,56,28,1,192,3,142,56,28,1,192,3,142,56,28,1,192,3,142,56,28,1,192,28,14,0,28,1,192,28,14,0,28,1,192,28,14,0,28,1,192,224,14,0,31,255,192,224,14,0,31,255,192,224,14,0,31,255,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0, + // 0x555f 啟 + 95,85,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,3,255,255,3,128,0,3,255,255,3,128,0,3,255,255,3,128,0,3,128,7,3,255,248,3,128,7,3,255,248,3,128,7,3,255,248,3,128,7,28,1,192,3,128,7,28,1,192,3,128,7,28,1,192,3,128,7,28,1,192,3,128,7,28,1,192,3,128,7,28,1,192,3,255,255,28,1,192,3,255,255,28,1,192,3,255,255,28,1,192,3,128,0,227,129,192,3,128,0,227,129,192,3,128,0,227,129,192,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,255,255,3,142,0,3,255,255,3,142,0,3,255,255,3,142,0,3,240,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,28,112,7,0,112,0,28,112,7,0,112,0,28,112,7,0,112,0,28,112,7,3,142,0,28,112,7,3,142,0,28,112,7,3,142,0,224,127,255,3,142,0,224,127,255,3,142,0,224,127,255,3,142,0,0,112,7,28,1,192,0,112,7,28,1,192,0,112,7,28,1,192,0,0,0,224,0,56,0,0,0,224,0,56,0,0,0,224,0,56, + // 0x55ae 單 + 174,85,45,45,14,48,0,250,31,255,248,255,255,192,31,255,248,255,255,192,31,255,248,255,255,192,28,0,56,224,1,192,28,0,56,224,1,192,28,0,56,224,1,192,28,0,56,224,1,192,28,0,56,224,1,192,28,0,56,224,1,192,31,255,248,255,255,192,31,255,248,255,255,192,31,255,248,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x5634 嘴 + 52,86,45,48,32,48,0,250,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,0,0,56,224,113,192,0,0,56,224,113,192,0,0,56,224,113,192,255,240,56,252,126,0,255,240,56,252,126,0,255,240,56,252,126,0,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,252,112,56,224,112,56,252,112,56,224,112,56,252,112,56,224,113,255,0,15,248,224,113,255,0,15,248,224,113,255,0,15,248,224,112,7,255,240,0,224,112,7,255,240,0,224,112,7,255,240,0,224,112,56,0,112,0,224,112,56,0,112,0,224,112,56,0,112,0,224,113,255,255,255,192,224,113,255,255,255,192,224,113,255,255,255,192,224,126,56,28,1,192,224,126,56,28,1,192,224,126,56,28,1,192,255,240,63,255,255,192,255,240,63,255,255,192,255,240,63,255,255,192,224,112,56,28,1,192,224,112,56,28,1,192,224,112,56,28,1,192,0,0,63,255,255,192,0,0,63,255,255,192,0,0,63,255,255,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192,28,113,192,0,1,192,28,113,192,0,1,192,28,113,192,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + // 0x5668 器 + 104,86,45,45,14,48,0,250,3,255,248,31,255,192,3,255,248,31,255,192,3,255,248,31,255,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,255,248,31,255,192,3,255,248,31,255,192,3,255,248,31,255,192,0,0,7,3,128,0,0,0,7,3,128,0,0,0,7,3,128,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,15,192,31,128,0,0,15,192,31,128,0,0,15,192,31,128,0,3,240,0,0,126,0,3,240,0,0,126,0,3,240,0,0,126,0,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248,3,255,248,31,255,192,3,255,248,31,255,192,3,255,248,31,255,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,255,248,31,255,192,3,255,248,31,255,192,3,255,248,31,255,192, + // 0x5674 噴 + 116,86,42,48,32,48,3,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,255,240,0,28,0,0,255,240,0,28,0,0,255,240,0,28,0,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,113,255,255,255,192,224,113,255,255,255,192,224,113,255,255,255,192,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,63,255,254,0,224,112,63,255,254,0,224,112,63,255,254,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,63,255,254,0,224,112,63,255,254,0,224,112,63,255,254,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,255,240,63,255,254,0,255,240,63,255,254,0,255,240,63,255,254,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x56de 回 + 222,86,36,42,210,48,6,253,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,127,255,224,112,224,127,255,224,112,224,127,255,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,127,255,224,112,224,127,255,224,112,224,127,255,224,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,255,255,255,255,240,255,255,255,255,240,255,255,255,255,240,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x56e0 因 + 224,86,39,45,225,48,3,250,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,227,255,255,255,142,227,255,255,255,142,227,255,255,255,142,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,1,192,224,14,224,1,192,224,14,224,1,192,224,14,224,14,0,28,14,224,14,0,28,14,224,14,0,28,14,224,112,0,3,142,224,112,0,3,142,224,112,0,3,142,227,128,0,3,142,227,128,0,3,142,227,128,0,3,142,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14, + // 0x56fa 固 + 250,86,39,45,225,48,3,250,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,227,255,255,255,142,227,255,255,255,142,227,255,255,255,142,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,127,255,252,14,224,127,255,252,14,224,127,255,252,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,127,255,252,14,224,127,255,252,14,224,127,255,252,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14, + // 0x5716 圖 + 22,87,39,48,240,48,3,250,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,224,127,255,252,14,224,127,255,252,14,224,127,255,252,14,224,112,0,28,14,224,112,0,28,14,224,112,0,28,14,224,127,255,252,14,224,127,255,252,14,224,127,255,252,14,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,227,255,255,255,142,227,255,255,255,142,227,255,255,255,142,227,128,0,3,142,227,128,0,3,142,227,128,0,3,142,227,143,255,227,142,227,143,255,227,142,227,143,255,227,142,227,142,0,227,142,227,142,0,227,142,227,142,0,227,142,227,255,255,255,142,227,255,255,255,142,227,255,255,255,142,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14, + // 0x5728 在 + 40,87,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,240,0,28,0,0,3,240,0,28,0,0,3,240,0,28,0,0,28,113,255,255,255,192,28,113,255,255,255,192,28,113,255,255,255,192,224,112,0,28,0,0,224,112,0,28,0,0,224,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,127,255,255,255,248,0,127,255,255,255,248,0,127,255,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x578b 型 + 139,87,45,45,14,48,0,253,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,31,255,255,224,1,192,31,255,255,224,1,192,31,255,255,224,1,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,255,255,255,227,129,192,255,255,255,227,129,192,255,255,255,227,129,192,0,112,56,3,129,192,0,112,56,3,129,192,0,112,56,3,129,192,3,128,56,0,1,192,3,128,56,0,1,192,3,128,56,0,1,192,3,128,56,0,113,192,3,128,56,0,113,192,3,128,56,0,113,192,28,0,7,0,14,0,28,0,7,0,14,0,28,0,7,0,14,0,224,0,7,0,0,0,224,0,7,0,0,0,224,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x57f7 執 + 247,87,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,31,255,192,28,0,0,31,255,192,28,0,0,31,255,192,28,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,255,255,248,28,14,0,255,255,248,28,14,0,255,255,248,28,14,0,28,1,192,28,14,0,28,1,192,28,14,0,28,1,192,28,14,0,3,142,7,28,14,0,3,142,7,28,14,0,3,142,7,28,14,0,31,255,192,252,14,0,31,255,192,252,14,0,31,255,192,252,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,227,142,0,0,112,0,227,142,0,0,112,0,227,142,0,255,255,248,227,142,0,255,255,248,227,142,0,255,255,248,227,142,0,0,112,0,224,14,56,0,112,0,224,14,56,0,112,0,224,14,56,0,112,7,0,14,56,0,112,7,0,14,56,0,112,7,0,14,56,0,112,7,0,1,248,0,112,7,0,1,248,0,112,7,0,1,248,0,112,56,0,0,56,0,112,56,0,0,56,0,112,56,0,0,56, + // 0x584a 塊 + 74,88,45,48,32,48,0,250,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,63,255,255,192,3,128,63,255,255,192,3,128,63,255,255,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,255,254,63,255,255,192,255,254,63,255,255,192,255,254,63,255,255,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,3,129,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,63,255,255,192,3,128,63,255,255,192,3,128,63,255,255,192,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,227,142,0,3,128,0,227,142,0,3,128,0,227,142,0,3,254,0,227,241,192,3,254,0,227,241,192,3,254,0,227,241,192,255,128,7,3,255,192,255,128,7,3,255,192,255,128,7,3,255,192,28,0,7,3,128,56,28,0,7,3,128,56,28,0,7,3,128,56,0,0,56,3,128,56,0,0,56,3,128,56,0,0,56,3,128,56,0,1,192,0,127,248,0,1,192,0,127,248,0,1,192,0,127,248, + // 0x586b 填 + 107,88,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,255,254,56,0,14,0,255,254,56,0,14,0,255,254,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,254,56,0,14,0,3,254,56,0,14,0,3,254,56,0,14,0,255,143,255,255,255,248,255,143,255,255,255,248,255,143,255,255,255,248,28,0,7,0,112,0,28,0,7,0,112,0,28,0,7,0,112,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + // 0x588a 墊 + 138,88,45,45,14,48,0,253,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,31,255,248,3,128,0,31,255,248,3,128,0,31,255,248,3,128,0,0,14,0,255,254,0,0,14,0,255,254,0,0,14,0,255,254,0,255,255,255,3,142,0,255,255,255,3,142,0,255,255,255,3,142,0,0,113,192,3,142,0,0,113,192,3,142,0,0,113,192,3,142,0,31,255,255,31,142,56,31,255,255,31,142,56,31,255,255,31,142,56,0,14,0,3,142,56,0,14,0,3,142,56,0,14,0,3,142,56,255,255,255,28,113,248,255,255,255,28,113,248,255,255,255,28,113,248,0,14,0,224,0,56,0,14,0,224,0,56,0,14,0,224,0,56,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x5916 外 + 22,89,42,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,255,248,28,0,0,3,255,248,28,0,0,3,255,248,28,0,0,3,128,56,31,128,0,3,128,56,31,128,0,3,128,56,31,128,0,28,0,56,28,112,0,28,0,56,28,112,0,28,0,56,28,112,0,28,0,56,28,14,0,28,0,56,28,14,0,28,0,56,28,14,0,227,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0, + // 0x591a 多 + 26,89,36,48,240,48,3,250,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,15,255,255,128,0,15,255,255,128,0,15,255,255,128,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,31,240,0,224,0,31,240,0,224,0,31,240,0,224,0,0,14,7,0,0,0,14,7,0,0,0,14,7,0,0,0,1,248,224,0,0,1,248,224,0,0,1,248,224,0,0,126,7,0,0,0,126,7,0,0,0,126,7,0,0,255,128,63,255,240,255,128,63,255,240,255,128,63,255,240,0,1,192,0,112,0,1,192,0,112,0,1,192,0,112,0,126,0,3,128,0,126,0,3,128,0,126,0,3,128,31,129,192,28,0,31,129,192,28,0,31,129,192,28,0,0,0,56,224,0,0,0,56,224,0,0,0,56,224,0,0,0,63,0,0,0,0,63,0,0,0,0,63,0,0,0,127,192,0,0,0,127,192,0,0,0,127,192,0,0,255,128,0,0,0,255,128,0,0,0,255,128,0,0,0, + // 0x5920 夠 + 32,89,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,255,248,28,0,0,3,255,248,28,0,0,3,255,248,28,0,0,28,0,56,31,255,248,28,0,56,31,255,248,28,0,56,31,255,248,227,129,192,224,0,56,227,129,192,224,0,56,227,129,192,224,0,56,0,126,7,0,0,56,0,126,7,0,0,56,0,126,7,0,0,56,0,112,0,31,254,56,0,112,0,31,254,56,0,112,0,31,254,56,3,142,0,28,14,56,3,142,0,28,14,56,3,142,0,28,14,56,252,15,255,28,14,56,252,15,255,28,14,56,252,15,255,28,14,56,0,112,7,28,14,56,0,112,7,28,14,56,0,112,7,28,14,56,3,240,56,31,254,56,3,240,56,31,254,56,3,240,56,31,254,56,28,14,56,28,14,56,28,14,56,28,14,56,28,14,56,28,14,56,0,1,192,0,0,56,0,1,192,0,0,56,0,1,192,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,3,240,0,0,113,192,3,240,0,0,113,192,3,240,0,0,113,192,252,0,0,0,14,0,252,0,0,0,14,0,252,0,0,0,14,0, + // 0x5927 大 + 39,89,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248, + // 0x5929 天 + 41,89,45,45,14,48,0,250,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,252,0,0,0,1,248,252,0,0,0,1,248,252,0,0,0,1,248, + // 0x5931 失 + 49,89,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,127,255,255,254,0,0,127,255,255,254,0,0,127,255,255,254,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,28,0,7,0,0,0,28,0,7,0,0,0,28,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,128,0,0,15,192,31,128,0,0,15,192,31,128,0,0,15,192, + // 0x59cb 始 + 203,89,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,255,255,192,28,14,0,255,255,192,28,14,0,255,255,192,28,14,0,3,129,192,224,1,192,3,129,192,224,1,192,3,129,192,224,1,192,3,129,199,255,255,248,3,129,199,255,255,248,3,129,199,255,255,248,3,129,192,224,0,56,3,129,192,224,0,56,3,129,192,224,0,56,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,28,14,0,255,255,192,28,14,0,255,255,192,28,14,0,255,255,192,3,142,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,224,0,0,255,255,192,224,0,0,255,255,192,224,0,0,255,255,192,0,0,0,224,1,192,0,0,0,224,1,192,0,0,0,224,1,192, + // 0x5a92 媒 + 146,90,45,48,32,48,0,250,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,255,254,7,0,112,0,255,254,7,0,112,0,255,254,7,0,112,0,3,142,7,255,240,0,3,142,7,255,240,0,3,142,7,255,240,0,3,142,7,0,112,0,3,142,7,0,112,0,3,142,7,0,112,0,3,142,7,255,240,0,3,142,7,255,240,0,3,142,7,255,240,0,28,14,0,28,0,0,28,14,0,28,0,0,28,14,0,28,0,0,28,15,255,255,255,248,28,15,255,255,255,248,28,15,255,255,255,248,3,142,0,28,0,0,3,142,0,28,0,0,3,142,0,28,0,0,0,112,0,255,128,0,0,112,0,255,128,0,0,112,0,255,128,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,7,28,112,0,3,142,56,28,15,248,3,142,56,28,15,248,3,142,56,28,15,248,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0, + // 0x5b50 子 + 80,91,45,45,14,48,0,250,31,255,255,255,254,0,31,255,255,255,254,0,31,255,255,255,254,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x5b58 存 + 88,91,45,48,32,48,0,250,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,240,0,3,128,0,3,240,0,3,128,0,3,240,0,3,128,0,28,112,0,28,0,0,28,112,0,28,0,0,28,112,0,28,0,0,224,113,255,255,255,248,224,113,255,255,255,248,224,113,255,255,255,248,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,7,28,0,0,0,112,7,28,0,0,0,112,7,28,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0, + // 0x5b89 安 + 137,91,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,255,192,3,255,255,255,255,192,3,255,255,255,255,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,126,0,28,0,0,0,126,0,28,0,0,0,126,0,28,0,0,0,1,248,28,0,0,0,1,248,28,0,0,0,1,248,28,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,56,31,128,0,0,0,56,31,128,0,0,0,56,31,128,0,0,15,192,0,112,0,0,15,192,0,112,0,0,15,192,0,112,0,31,240,0,0,14,0,31,240,0,0,14,0,31,240,0,0,14,0, + // 0x5b8c 完 + 140,91,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,31,128,0,3,255,192,31,128,0,3,255,192,31,128,0,3,255,192, + // 0x5b9a 定 + 154,91,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,3,142,7,0,0,0,3,142,7,0,0,0,3,142,7,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0, + // 0x5ba2 客 + 162,91,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,14,0,0,1,192,224,14,0,0,1,192,224,14,0,0,1,192,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,143,192,28,0,0,3,143,192,28,0,0,3,143,192,28,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,127,192,31,240,0,0,127,192,31,240,0,0,127,192,31,240,0,255,128,0,0,15,248,255,128,0,0,15,248,255,128,0,0,15,248,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x5bb9 容 + 185,91,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,3,240,0,0,126,0,3,240,0,0,126,0,3,240,0,0,126,0,252,127,255,255,241,248,252,127,255,255,241,248,252,127,255,255,241,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x5c0d 對 + 13,92,45,48,32,48,0,250,0,113,192,0,14,0,0,113,192,0,14,0,0,113,192,0,14,0,0,113,192,0,14,0,0,113,192,0,14,0,0,113,192,0,14,0,28,113,199,0,14,0,28,113,199,0,14,0,28,113,199,0,14,0,3,241,248,0,14,0,3,241,248,0,14,0,3,241,248,0,14,0,0,113,192,31,255,248,0,113,192,31,255,248,0,113,192,31,255,248,255,255,255,0,14,0,255,255,255,0,14,0,255,255,255,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,0,113,192,3,142,0,0,113,192,3,142,0,0,113,192,3,142,0,31,255,255,3,142,0,31,255,255,3,142,0,31,255,255,3,142,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,3,255,248,0,14,0,3,255,248,0,14,0,3,255,248,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,15,255,0,14,0,0,15,255,0,14,0,0,15,255,0,14,0,31,254,0,3,142,0,31,254,0,3,142,0,31,254,0,3,142,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0, + // 0x5c0f 小 + 15,92,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,0,56,3,128,7,0,0,56,3,128,7,0,0,56,28,0,7,0,0,56,28,0,7,0,0,56,28,0,7,0,0,56,224,0,7,0,0,56,224,0,7,0,0,56,224,0,7,0,0,56,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x5c31 就 + 49,92,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,255,255,248,28,14,0,255,255,248,28,14,0,255,255,248,28,14,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,31,255,199,255,255,248,31,255,199,255,255,248,31,255,199,255,255,248,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,31,255,192,28,112,0,31,255,192,28,112,0,31,255,192,28,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,28,113,192,224,112,0,28,113,192,224,112,0,28,113,192,224,112,0,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,224,112,56,0,112,7,0,112,56,0,112,7,0,112,56,0,112,7,0,112,56,28,112,7,0,15,248,28,112,7,0,15,248,28,112,7,0,15,248,3,128,56,0,0,0,3,128,56,0,0,0,3,128,56,0,0,0, + // 0x5de5 工 + 229,93,45,36,216,48,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x5dee 差 + 238,93,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,113,255,255,254,0,0,113,255,255,254,0,0,113,255,255,254,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,0,127,255,255,255,192,0,127,255,255,255,192,0,127,255,255,255,192, + // 0x5df2 已 + 242,93,36,42,210,48,6,253,255,255,255,252,0,255,255,255,252,0,255,255,255,252,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,255,255,255,252,0,255,255,255,252,0,255,255,255,252,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,31,255,255,255,240,31,255,255,255,240,31,255,255,255,240, + // 0x5e73 平 + 115,94,45,45,14,48,0,250,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,0,112,0,0,14,7,3,128,0,0,14,7,3,128,0,0,14,7,3,128,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x5e8a 床 + 138,94,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,3,255,255,255,255,248,3,255,255,255,255,248,3,255,255,255,255,248,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,143,255,255,255,192,3,143,255,255,255,192,3,143,255,255,255,192,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,7,252,0,0,3,128,7,252,0,0,3,128,7,252,0,0,3,128,56,227,128,0,3,128,56,227,128,0,3,128,56,227,128,0,3,128,56,227,128,0,3,128,56,227,128,0,3,128,56,227,128,0,3,129,192,224,112,0,3,129,192,224,112,0,3,129,192,224,112,0,28,14,0,224,14,0,28,14,0,224,14,0,28,14,0,224,14,0,28,112,0,224,1,248,28,112,0,224,1,248,28,112,0,224,1,248,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0, + // 0x5ea6 度 + 166,94,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,3,255,255,255,255,248,3,255,255,255,255,248,3,255,255,255,255,248,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,255,255,255,255,192,3,255,255,255,255,192,3,255,255,255,255,192,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,56,3,128,0,3,128,63,255,128,0,3,128,63,255,128,0,3,128,63,255,128,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,143,255,255,240,0,3,143,255,255,240,0,3,143,255,255,240,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,7,252,0,0,28,0,7,252,0,0,28,0,7,252,0,0,224,1,248,3,240,0,224,1,248,3,240,0,224,1,248,3,240,0,3,254,0,0,15,248,3,254,0,0,15,248,3,254,0,0,15,248, + // 0x5ee2 廢 + 226,94,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,3,255,255,255,255,248,3,255,255,255,255,248,3,255,255,255,255,248,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,143,255,28,112,0,3,143,255,28,112,0,3,143,255,28,112,0,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,142,56,0,126,0,3,142,56,0,126,0,3,142,56,0,126,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,254,63,31,241,248,3,254,63,31,241,248,3,254,63,31,241,248,3,128,7,28,112,0,3,128,7,28,112,0,3,128,7,28,112,0,3,143,255,224,15,192,3,143,255,224,15,192,3,143,255,224,15,192,3,142,0,31,254,0,3,142,0,31,254,0,3,142,0,31,254,0,3,143,255,28,14,0,3,143,255,28,14,0,3,143,255,28,14,0,28,0,7,3,240,0,28,0,7,3,240,0,28,0,7,3,240,0,28,1,199,28,14,0,28,1,199,28,14,0,28,1,199,28,14,0,224,0,56,224,1,192,224,0,56,224,1,192,224,0,56,224,1,192, + // 0x5efa 建 + 250,94,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,254,63,255,254,0,255,254,63,255,254,0,255,254,63,255,254,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,31,254,0,28,0,0,31,254,0,28,0,0,31,254,0,28,0,0,0,14,63,255,254,0,0,14,63,255,254,0,0,14,63,255,254,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,28,14,0,28,0,0,28,14,0,28,0,0,28,14,0,28,0,0,3,241,255,255,255,192,3,241,255,255,255,192,3,241,255,255,255,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,143,192,28,0,0,3,143,192,28,0,0,3,143,192,28,0,0,28,0,63,255,255,248,28,0,63,255,255,248,28,0,63,255,255,248,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0, + // 0x5f15 引 + 21,95,36,48,240,48,3,250,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,255,255,248,0,112,255,255,248,0,112,255,255,248,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,31,255,248,0,112,31,255,248,0,112,31,255,248,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,28,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,255,255,248,0,112,255,255,248,0,112,255,255,248,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112,0,113,192,0,112,0,113,192,0,112,0,113,192,0,112,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112, + // 0x5f85 待 + 133,95,45,48,32,48,0,250,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,63,255,255,192,3,128,63,255,255,192,3,128,63,255,255,192,28,14,0,28,0,0,28,14,0,28,0,0,28,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,3,240,0,0,112,0,3,240,0,0,112,0,3,240,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,224,113,255,255,255,248,224,113,255,255,255,248,224,113,255,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0, + // 0x5f8c 後 + 140,95,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,28,14,63,255,128,0,28,14,63,255,128,0,28,14,63,255,128,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,3,240,63,255,255,192,3,240,63,255,255,192,3,240,63,255,255,192,28,112,0,224,1,192,28,112,0,224,1,192,28,112,0,224,1,192,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,63,0,14,0,0,112,63,0,14,0,0,112,63,0,14,0,0,113,192,224,112,0,0,113,192,224,112,0,0,113,192,224,112,0,0,112,0,31,128,0,0,112,0,31,128,0,0,112,0,31,128,0,0,112,7,224,126,0,0,112,7,224,126,0,0,112,7,224,126,0,0,113,248,0,1,248,0,113,248,0,1,248,0,113,248,0,1,248, + // 0x5f91 徑 + 145,95,45,48,32,48,0,250,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,63,255,255,192,0,14,63,255,255,192,0,14,63,255,255,192,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,28,14,56,28,14,0,28,14,56,28,14,0,28,14,56,28,14,0,0,15,192,224,112,0,0,15,192,224,112,0,0,15,192,224,112,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,3,240,7,3,129,192,3,240,7,3,129,192,3,240,7,3,129,192,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,224,112,63,255,255,192,224,112,63,255,255,192,224,112,63,255,255,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x5f9e 從 + 158,95,45,48,32,48,0,250,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,28,14,7,28,113,192,28,14,7,28,113,192,28,14,7,28,113,192,0,14,56,3,128,56,0,14,56,3,128,56,0,14,56,3,128,56,0,113,192,28,0,56,0,113,192,28,0,56,0,113,192,28,0,56,3,240,0,3,128,0,3,240,0,3,128,0,3,240,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,224,112,7,3,128,0,224,112,7,3,128,0,224,112,7,3,128,0,0,112,7,3,255,192,0,112,7,3,255,192,0,112,7,3,255,192,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,56,227,128,0,0,112,56,227,128,0,0,112,56,227,128,0,0,112,56,31,128,0,0,112,56,31,128,0,0,112,56,31,128,0,0,113,192,3,255,248,0,113,192,3,255,248,0,113,192,3,255,248,0,126,0,0,0,0,0,126,0,0,0,0,0,126,0,0,0,0, + // 0x5fa9 復 + 169,95,45,48,32,48,0,250,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,14,7,0,0,0,0,112,7,255,255,248,0,112,7,255,255,248,0,112,7,255,255,248,3,128,56,0,0,0,3,128,56,0,0,0,3,128,56,0,0,0,28,15,199,255,255,192,28,15,199,255,255,192,28,15,199,255,255,192,0,14,7,0,1,192,0,14,7,0,1,192,0,14,7,0,1,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,3,240,7,0,1,192,3,240,7,0,1,192,3,240,7,0,1,192,28,112,7,255,255,192,28,112,7,255,255,192,28,112,7,255,255,192,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,56,224,112,0,0,112,56,224,112,0,0,112,56,224,112,0,0,112,0,31,128,0,0,112,0,31,128,0,0,112,0,31,128,0,0,112,7,224,126,0,0,112,7,224,126,0,0,112,7,224,126,0,0,113,248,0,1,248,0,113,248,0,1,248,0,113,248,0,1,248, + // 0x5fae 微 + 174,95,45,48,32,48,0,250,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,113,199,28,14,0,0,113,199,28,14,0,0,113,199,28,14,0,3,129,199,28,14,0,3,129,199,28,14,0,3,129,199,28,14,0,28,1,199,28,112,0,28,1,199,28,112,0,28,1,199,28,112,0,224,113,255,252,127,248,224,113,255,252,127,248,224,113,255,252,127,248,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,31,143,255,252,113,192,31,143,255,252,113,192,31,143,255,252,113,192,227,128,0,0,113,192,227,128,0,0,113,192,227,128,0,0,113,192,3,129,255,224,113,192,3,129,255,224,113,192,3,129,255,224,113,192,3,129,192,224,113,192,3,129,192,224,113,192,3,129,192,224,113,192,3,129,192,227,142,0,3,129,192,227,142,0,3,129,192,227,142,0,3,129,192,252,14,0,3,129,192,252,14,0,3,129,192,252,14,0,3,129,192,224,113,192,3,129,192,224,113,192,3,129,192,224,113,192,3,142,0,0,113,192,3,142,0,0,113,192,3,142,0,0,113,192,3,240,0,3,128,56,3,240,0,3,128,56,3,240,0,3,128,56, + // 0x5fc3 心 + 195,95,45,42,252,48,0,253,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,0,56,3,129,192,0,0,56,3,129,192,0,0,56,28,1,192,0,0,56,28,1,192,0,0,56,28,1,192,0,0,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,0,0,63,255,240,0,0,0,63,255,240,0,0,0,63,255,240,0, + // 0x6027 性 + 39,96,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,126,7,255,255,192,0,126,7,255,255,192,0,126,7,255,255,192,28,113,199,3,128,0,28,113,199,3,128,0,28,113,199,3,128,0,28,112,56,3,128,0,28,112,56,3,128,0,28,112,56,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x6062 恢 + 98,96,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,126,0,224,0,0,0,126,0,224,0,0,0,126,0,224,0,0,28,113,192,224,112,0,28,113,192,224,112,0,28,113,192,224,112,0,28,112,0,224,112,0,28,112,0,224,112,0,28,112,0,224,112,0,28,112,7,0,112,56,28,112,7,0,112,56,28,112,7,0,112,56,224,112,7,28,112,56,224,112,7,28,112,56,224,112,7,28,112,56,0,112,7,28,113,192,0,112,7,28,113,192,0,112,7,28,113,192,0,112,56,224,112,0,0,112,56,224,112,0,0,112,56,224,112,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,0,113,192,3,142,0,0,113,192,3,142,0,0,113,192,3,142,0,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,7,0,0,56,0,112,7,0,0,56,0,112,7,0,0,56, + // 0x606f 息 + 111,96,45,45,14,48,0,253,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,14,0,224,1,192,0,14,0,224,1,192,0,14,0,224,1,192,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,224,1,255,255,240,0,224,1,255,255,240,0,224,1,255,255,240,0, + // 0x61b6 憶 + 182,97,45,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,0,126,7,0,14,0,0,126,7,0,14,0,0,126,7,0,14,0,28,113,192,224,112,0,28,113,192,224,112,0,28,113,192,224,112,0,28,113,255,255,255,248,28,113,255,255,255,248,28,113,255,255,255,248,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,224,112,63,255,255,192,224,112,63,255,255,192,224,112,63,255,255,192,0,112,56,0,1,192,0,112,56,0,1,192,0,112,56,0,1,192,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,0,112,56,0,1,192,0,112,56,0,1,192,0,112,56,0,1,192,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,199,3,129,192,0,113,199,3,129,192,0,113,199,3,129,192,0,113,199,0,14,56,0,113,199,0,14,56,0,113,199,0,14,56,0,126,0,255,254,56,0,126,0,255,254,56,0,126,0,255,254,56, + // 0x61c9 應 + 201,97,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,3,255,255,255,255,248,3,255,255,255,255,248,3,255,255,255,255,248,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,3,129,192,255,255,248,3,129,192,255,255,248,3,129,192,255,255,248,3,143,199,224,112,0,3,143,199,224,112,0,3,143,199,224,112,0,3,241,192,255,255,192,3,241,192,255,255,192,3,241,192,255,255,192,3,129,192,224,112,0,3,129,192,224,112,0,3,129,192,224,112,0,3,129,192,255,255,192,3,129,192,255,255,192,3,129,192,255,255,192,3,129,192,224,112,0,3,129,192,224,112,0,3,129,192,224,112,0,3,129,192,255,255,248,3,129,192,255,255,248,3,129,192,255,255,248,3,129,192,224,0,0,3,129,192,224,0,0,3,129,192,224,0,0,28,0,56,28,1,192,28,0,56,28,1,192,28,0,56,28,1,192,28,112,56,28,14,56,28,112,56,28,14,56,28,112,56,28,14,56,224,112,56,0,14,56,224,112,56,0,14,56,224,112,56,0,14,56,3,128,7,255,254,0,3,128,7,255,254,0,3,128,7,255,254,0, + // 0x6210 成 + 16,98,45,48,32,48,0,250,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,255,255,255,255,248,3,255,255,255,255,248,3,255,255,255,255,248,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,255,248,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,142,56,3,240,56,3,142,56,3,240,56,3,142,56,3,240,56,28,1,192,28,14,56,28,1,192,28,14,56,28,1,192,28,14,56,28,0,0,224,1,248,28,0,0,224,1,248,28,0,0,224,1,248,224,0,7,0,0,56,224,0,7,0,0,56,224,0,7,0,0,56, + // 0x6236 戶 + 54,98,39,48,240,48,0,250,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,255,254,0,0,0,255,254,0,0,0,255,254,0,127,255,0,0,0,127,255,0,0,0,127,255,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,127,255,255,254,0,127,255,255,254,0,127,255,255,254,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14,0,127,255,255,254,0,127,255,255,254,0,127,255,255,254,0,112,0,0,14,0,112,0,0,14,0,112,0,0,14,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,0,0,0, + // 0x6240 所 + 64,98,45,48,32,48,0,250,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,1,255,0,127,192,0,1,255,0,127,192,0,1,255,0,127,192,3,254,0,255,128,0,3,254,0,255,128,0,3,254,0,255,128,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,255,248,224,0,0,3,255,248,224,0,0,3,255,248,224,0,0,3,128,56,255,255,248,3,128,56,255,255,248,3,128,56,255,255,248,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,255,248,224,14,0,3,255,248,224,14,0,3,255,248,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,28,0,7,0,14,0,28,0,7,0,14,0,28,0,7,0,14,0,28,0,7,0,14,0,28,0,7,0,14,0,28,0,7,0,14,0,224,0,56,0,14,0,224,0,56,0,14,0,224,0,56,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0, + // 0x6247 扇 + 71,98,42,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,255,192,3,255,255,255,255,192,3,255,255,255,255,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,255,255,255,255,192,3,255,255,255,255,192,3,255,255,255,255,192,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,255,255,31,255,192,3,255,255,31,255,192,3,255,255,31,255,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,3,142,7,3,129,192,3,142,7,3,129,192,3,142,7,3,129,192,3,129,199,0,113,192,3,129,199,0,113,192,3,129,199,0,113,192,28,14,7,3,129,192,28,14,7,3,129,192,28,14,7,3,129,192,28,112,7,28,1,192,28,112,7,28,1,192,28,112,7,28,1,192,224,1,199,0,113,192,224,1,199,0,113,192,224,1,199,0,113,192,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0, + // 0x624b 手 + 75,98,45,48,32,48,0,250,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,255,254,0,0,0,0,255,254,0,0,0,0,255,254,0,3,255,255,0,0,0,3,255,255,0,0,0,3,255,255,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0, + // 0x6253 打 + 83,98,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,126,0,3,128,0,0,126,0,3,128,0,0,126,0,3,128,0,3,240,0,3,128,0,3,240,0,3,128,0,3,240,0,3,128,0,252,112,0,3,128,0,252,112,0,3,128,0,252,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,28,112,0,227,128,0,28,112,0,227,128,0,28,112,0,227,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0, + // 0x6279 批 + 121,98,45,48,32,48,0,250,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,56,0,112,7,0,112,56,0,112,7,0,112,56,255,255,199,0,112,56,255,255,199,0,112,56,255,255,199,0,112,56,0,112,7,0,113,192,0,112,7,0,113,192,0,112,7,0,113,192,0,112,7,252,126,0,0,112,7,252,126,0,0,112,7,252,126,0,0,113,199,0,112,0,0,113,199,0,112,0,0,113,199,0,112,0,0,126,7,0,112,0,0,126,7,0,112,0,0,126,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,3,240,7,0,112,0,252,112,7,0,112,0,252,112,7,0,112,0,252,112,7,0,112,0,0,112,7,0,112,56,0,112,7,0,112,56,0,112,7,0,112,56,0,112,7,28,112,56,0,112,7,28,112,56,0,112,7,28,112,56,0,112,7,224,112,56,0,112,7,224,112,56,0,112,7,224,112,56,28,112,7,0,15,248,28,112,7,0,15,248,28,112,7,0,15,248,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0, + // 0x6296 抖 + 150,98,45,48,32,48,0,250,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,113,192,224,112,0,0,113,192,224,112,0,0,113,192,224,112,0,0,126,0,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,3,240,0,0,127,248,3,240,0,0,127,248,3,240,0,0,127,248,252,112,63,255,240,0,252,112,63,255,240,0,252,112,63,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0, + // 0x62bd 抽 + 189,98,42,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,255,255,199,255,255,192,255,255,199,255,255,192,255,255,199,255,255,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,113,199,3,129,192,0,113,199,3,129,192,0,113,199,3,129,192,0,126,7,3,129,192,0,126,7,3,129,192,0,126,7,3,129,192,3,240,7,255,255,192,3,240,7,255,255,192,3,240,7,255,255,192,252,112,7,3,129,192,252,112,7,3,129,192,252,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,28,112,7,255,255,192,28,112,7,255,255,192,28,112,7,255,255,192,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192, + // 0x62d4 拔 + 212,98,45,48,32,48,0,250,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,255,254,63,255,255,248,255,254,63,255,255,248,255,254,63,255,255,248,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,113,192,224,0,0,0,113,192,224,0,0,0,113,192,224,0,0,0,126,0,255,255,192,0,126,0,255,255,192,0,126,0,255,255,192,3,240,7,28,1,192,3,240,7,28,1,192,3,240,7,28,1,192,252,112,7,28,1,192,252,112,7,28,1,192,252,112,7,28,1,192,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,28,113,192,28,1,192,28,113,192,28,1,192,28,113,192,28,1,192,3,128,7,224,0,56,3,128,7,224,0,56,3,128,7,224,0,56, + // 0x6309 按 + 9,99,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,255,254,56,0,0,56,255,254,56,0,0,56,255,254,56,0,0,56,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,126,63,255,255,248,0,126,63,255,255,248,0,126,63,255,255,248,3,240,0,224,14,0,3,240,0,224,14,0,3,240,0,224,14,0,252,112,0,224,14,0,252,112,0,224,14,0,252,112,0,224,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,0,252,112,0,0,112,0,252,112,0,0,112,0,252,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,28,112,0,224,14,0,28,112,0,224,14,0,28,112,0,224,14,0,3,128,63,0,1,192,3,128,63,0,1,192,3,128,63,0,1,192, + // 0x6389 掉 + 137,99,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,255,248,0,112,0,3,255,248,0,112,0,3,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,255,255,199,255,255,192,255,255,199,255,255,192,255,255,199,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,113,199,255,255,192,0,113,199,255,255,192,0,113,199,255,255,192,0,126,7,0,1,192,0,126,7,0,1,192,0,126,7,0,1,192,3,240,7,255,255,192,3,240,7,255,255,192,3,240,7,255,255,192,252,112,7,3,129,192,252,112,7,3,129,192,252,112,7,3,129,192,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + // 0x63a2 探 + 162,99,45,48,32,48,0,250,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,255,254,7,0,112,0,255,254,7,0,112,0,255,254,7,0,112,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,142,0,28,0,0,3,142,0,28,0,0,3,142,0,28,0,0,3,241,255,255,255,192,3,241,255,255,255,192,3,241,255,255,255,192,255,128,0,28,0,0,255,128,0,28,0,0,255,128,0,28,0,0,3,128,0,255,128,0,3,128,0,255,128,0,3,128,0,255,128,0,3,128,7,28,112,0,3,128,7,28,112,0,3,128,7,28,112,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,3,143,192,28,1,248,3,143,192,28,1,248,3,143,192,28,1,248,227,128,0,28,0,0,227,128,0,28,0,0,227,128,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + // 0x63a5 接 + 165,99,45,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,255,255,199,0,14,0,255,255,199,0,14,0,255,255,199,0,14,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,126,0,28,0,0,0,126,0,28,0,0,0,126,0,28,0,0,3,241,255,255,255,248,3,241,255,255,255,248,3,241,255,255,255,248,252,112,0,224,14,0,252,112,0,224,14,0,252,112,0,224,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,31,128,0,0,112,0,31,128,0,0,112,0,31,128,0,28,112,7,224,126,0,28,112,7,224,126,0,28,112,7,224,126,0,3,129,248,0,1,192,3,129,248,0,1,192,3,129,248,0,1,192, + // 0x63a7 控 + 167,99,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,255,254,56,0,0,56,255,254,56,0,0,56,255,254,56,0,0,56,0,113,192,224,113,192,0,113,192,224,113,192,0,113,192,224,113,192,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,126,56,0,1,192,0,126,56,0,1,192,0,126,56,0,1,192,3,240,0,0,0,0,3,240,0,0,0,0,3,240,0,0,0,0,252,112,7,255,255,192,252,112,7,255,255,192,252,112,7,255,255,192,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,28,113,255,255,255,248,28,113,255,255,255,248,28,113,255,255,255,248,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0, + // 0x63d0 提 + 208,99,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,255,255,199,255,255,192,255,255,199,255,255,192,255,255,199,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,113,199,255,255,192,0,113,199,255,255,192,0,113,199,255,255,192,0,126,0,0,0,0,0,126,0,0,0,0,0,126,0,0,0,0,3,240,63,255,255,248,3,240,63,255,255,248,3,240,63,255,255,248,252,112,0,3,128,0,252,112,0,3,128,0,252,112,0,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,255,192,0,112,7,3,255,192,0,112,7,3,255,192,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,28,112,56,227,128,0,28,112,56,227,128,0,28,112,56,227,128,0,3,129,192,31,255,248,3,129,192,31,255,248,3,129,192,31,255,248, + // 0x63d2 插 + 210,99,45,48,32,48,0,250,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,3,255,192,3,128,0,3,255,192,3,128,0,3,255,192,3,129,255,252,0,0,3,129,255,252,0,0,3,129,255,252,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,255,254,0,28,0,0,255,254,0,28,0,0,255,254,0,28,0,0,3,143,255,255,255,248,3,143,255,255,255,248,3,143,255,255,255,248,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,142,7,28,0,0,3,142,7,28,0,0,3,142,7,28,0,0,3,241,248,28,127,192,3,241,248,28,127,192,3,241,248,28,127,192,255,129,192,28,1,192,255,129,192,28,1,192,255,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,255,28,127,192,3,129,255,28,127,192,3,129,255,28,127,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,227,129,255,255,255,192,227,129,255,255,255,192,227,129,255,255,255,192,28,1,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192, + // 0x63db 換 + 219,99,45,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,56,0,0,56,0,112,56,0,0,56,0,112,56,0,0,56,0,126,56,28,112,56,0,126,56,28,112,56,0,126,56,28,112,56,3,240,56,224,14,56,3,240,56,224,14,56,3,240,56,224,14,56,252,112,56,3,128,56,252,112,56,3,128,56,252,112,56,3,128,56,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,28,112,7,0,1,192,28,112,7,0,1,192,28,112,7,0,1,192,3,129,248,0,0,56,3,129,248,0,0,56,3,129,248,0,0,56, + // 0x64c7 擇 + 199,100,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,56,28,112,56,0,112,56,28,112,56,0,112,56,28,112,56,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,126,63,255,255,248,0,126,63,255,255,248,0,126,63,255,255,248,3,240,0,224,14,0,3,240,0,224,14,0,3,240,0,224,14,0,252,112,0,28,112,0,252,112,0,28,112,0,252,112,0,28,112,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + // 0x64ca 擊 + 202,100,45,48,32,48,0,250,0,14,0,3,255,192,0,14,0,3,255,192,0,14,0,3,255,192,31,255,255,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,3,142,56,3,129,192,3,142,56,3,129,192,3,142,56,3,129,192,3,255,248,28,0,56,3,255,248,28,0,56,3,255,248,28,0,56,3,142,56,3,255,192,3,142,56,3,255,192,3,142,56,3,255,192,255,255,255,227,129,192,255,255,255,227,129,192,255,255,255,227,129,192,28,14,7,0,126,0,28,14,7,0,126,0,28,14,7,0,126,0,31,255,255,31,129,248,31,255,255,31,129,248,31,255,255,31,129,248,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,127,255,252,0,0,0,127,255,252,0,0,0,127,255,252,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0, + // 0x64cb 擋 + 203,100,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,7,28,112,0,3,128,7,28,112,0,3,128,7,28,112,0,3,129,255,255,255,248,3,129,255,255,255,248,3,129,255,255,255,248,255,241,192,0,0,56,255,241,192,0,0,56,255,241,192,0,0,56,3,142,0,0,1,192,3,142,0,0,1,192,3,142,0,0,1,192,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,240,63,255,254,0,3,240,63,255,254,0,3,240,63,255,254,0,255,128,0,0,0,0,255,128,0,0,0,0,255,128,0,0,0,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,227,129,255,255,255,192,227,129,255,255,255,192,227,129,255,255,255,192,28,1,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192, + // 0x64e0 擠 + 224,100,45,48,32,48,0,250,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,255,240,0,227,129,192,255,240,0,227,129,192,255,240,0,227,129,192,3,143,255,28,126,0,3,143,255,28,126,0,3,143,255,28,126,0,3,129,199,28,113,192,3,129,199,28,113,192,3,129,199,28,113,192,3,129,199,28,112,56,3,129,199,28,112,56,3,129,199,28,112,56,3,254,63,28,126,0,3,254,63,28,126,0,3,254,63,28,126,0,255,128,0,0,0,0,255,128,0,0,0,0,255,128,0,0,0,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,227,128,56,0,14,0,227,128,56,0,14,0,227,128,56,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0, + // 0x6536 收 + 54,101,42,48,32,48,3,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,7,0,0,0,224,112,7,0,0,0,224,112,7,0,0,0,224,112,7,255,255,192,224,112,7,255,255,192,224,112,7,255,255,192,224,112,56,0,112,0,224,112,56,0,112,0,224,112,56,0,112,0,224,113,199,0,112,0,224,113,199,0,112,0,224,113,199,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,224,112,7,0,112,0,227,240,0,227,128,0,227,240,0,227,128,0,227,240,0,227,128,0,252,112,0,227,128,0,252,112,0,227,128,0,252,112,0,227,128,0,224,112,0,28,0,0,224,112,0,28,0,0,224,112,0,28,0,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,113,192,0,1,192,0,113,192,0,1,192,0,113,192,0,1,192, + // 0x653e 放 + 62,101,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,255,248,224,0,0,255,255,248,224,0,0,255,255,248,224,0,0,3,128,0,255,255,248,3,128,0,255,255,248,3,128,0,255,255,248,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,248,224,14,0,3,255,248,224,14,0,3,255,248,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,113,192,224,14,0,28,113,192,224,14,0,28,113,192,224,14,0,224,14,7,0,1,192,224,14,7,0,1,192,224,14,7,0,1,192,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + // 0x6557 敗 + 87,101,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,31,255,192,28,0,0,31,255,192,28,0,0,31,255,192,28,0,0,28,1,192,224,0,0,28,1,192,224,0,0,28,1,192,224,0,0,28,1,192,255,255,248,28,1,192,255,255,248,28,1,192,255,255,248,31,255,199,0,14,0,31,255,199,0,14,0,31,255,199,0,14,0,28,1,199,0,14,0,28,1,199,0,14,0,28,1,199,0,14,0,28,1,248,224,14,0,28,1,248,224,14,0,28,1,248,224,14,0,31,255,192,224,14,0,31,255,192,224,14,0,31,255,192,224,14,0,28,1,192,224,14,0,28,1,192,224,14,0,28,1,192,224,14,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,31,255,192,28,112,0,31,255,192,28,112,0,31,255,192,28,112,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,3,142,0,28,112,0,3,142,0,28,112,0,3,142,0,28,112,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,28,1,199,0,1,192,28,1,199,0,1,192,28,1,199,0,1,192,224,0,56,0,0,56,224,0,56,0,0,56,224,0,56,0,0,56, + // 0x6574 整 + 116,101,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,255,255,255,227,255,248,255,255,255,227,255,248,255,255,255,227,255,248,0,14,0,28,1,192,0,14,0,28,1,192,0,14,0,28,1,192,31,255,255,227,129,192,31,255,255,227,129,192,31,255,255,227,129,192,28,14,7,3,129,192,28,14,7,3,129,192,28,14,7,3,129,192,31,255,255,3,142,0,31,255,255,3,142,0,31,255,255,3,142,0,3,142,56,0,112,0,3,142,56,0,112,0,3,142,56,0,112,0,28,14,7,3,142,0,28,14,7,3,142,0,28,14,7,3,142,0,224,14,0,28,1,248,224,14,0,28,1,248,224,14,0,28,1,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x6578 數 + 120,101,45,48,32,48,0,250,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,31,255,255,0,112,0,31,255,255,0,112,0,31,255,255,0,112,0,28,14,7,0,112,0,28,14,7,0,112,0,28,14,7,0,112,0,255,255,255,227,128,0,255,255,255,227,128,0,255,255,255,227,128,0,28,14,7,3,255,248,28,14,7,3,255,248,28,14,7,3,255,248,31,255,255,28,1,192,31,255,255,28,1,192,31,255,255,28,1,192,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,28,14,7,3,129,192,28,14,7,3,129,192,28,14,7,3,129,192,31,255,255,3,142,0,31,255,255,3,142,0,31,255,255,3,142,0,0,112,0,3,142,0,0,112,0,3,142,0,0,112,0,3,142,0,255,255,255,0,112,0,255,255,255,0,112,0,255,255,255,0,112,0,3,128,7,3,142,0,3,128,7,3,142,0,3,128,7,3,142,0,31,240,56,3,142,0,31,240,56,3,142,0,31,240,56,3,142,0,0,15,192,28,1,192,0,15,192,28,1,192,0,15,192,28,1,192,255,240,63,224,0,56,255,240,63,224,0,56,255,240,63,224,0,56, + // 0x6599 料 + 153,101,45,48,32,48,0,250,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,28,14,56,28,14,0,28,14,56,28,14,0,28,14,56,28,14,0,3,142,56,28,14,0,3,142,56,28,14,0,3,142,56,28,14,0,3,143,192,0,14,0,3,143,192,0,14,0,3,143,192,0,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,255,255,248,28,14,0,255,255,248,28,14,0,255,255,248,28,14,0,0,126,0,28,14,0,0,126,0,28,14,0,0,126,0,28,14,0,0,127,192,0,14,0,0,127,192,0,14,0,0,127,192,0,14,0,3,142,56,0,15,248,3,142,56,0,15,248,3,142,56,0,15,248,3,142,56,255,254,0,3,142,56,255,254,0,3,142,56,255,254,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + // 0x659c 斜 + 156,101,45,48,32,48,0,250,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,113,192,3,142,0,0,113,192,3,142,0,0,113,192,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,28,0,7,0,14,0,28,0,7,0,14,0,28,0,7,0,14,0,227,255,248,28,14,0,227,255,248,28,14,0,227,255,248,28,14,0,0,14,0,3,142,0,0,14,0,3,142,0,0,14,0,3,142,0,0,14,0,3,142,0,0,14,0,3,142,0,0,14,0,3,142,0,31,255,255,0,15,248,31,255,255,0,15,248,31,255,255,0,15,248,0,14,0,31,254,0,0,14,0,31,254,0,0,14,0,31,254,0,3,142,56,0,14,0,3,142,56,0,14,0,3,142,56,0,14,0,3,142,7,0,14,0,3,142,7,0,14,0,3,142,7,0,14,0,28,14,7,0,14,0,28,14,7,0,14,0,28,14,7,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,3,142,0,0,14,0,3,142,0,0,14,0,3,142,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0, + // 0x65b0 新 + 176,101,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,31,255,255,31,254,0,31,255,255,31,254,0,31,255,255,31,254,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,128,56,28,0,0,3,128,56,28,0,0,3,128,56,28,0,0,0,113,192,28,0,0,0,113,192,28,0,0,0,113,192,28,0,0,255,255,255,31,255,248,255,255,255,31,255,248,255,255,255,31,255,248,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,31,255,255,28,14,0,31,255,255,28,14,0,31,255,255,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,3,142,56,28,14,0,3,142,56,28,14,0,3,142,56,28,14,0,28,14,7,28,14,0,28,14,7,28,14,0,28,14,7,28,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,3,142,0,224,14,0,3,142,0,224,14,0,3,142,0,224,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0, + // 0x65b7 斷 + 183,101,42,48,32,48,3,250,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,227,128,7,3,254,0,227,128,7,3,254,0,227,128,7,3,254,0,227,254,56,227,128,0,227,254,56,227,128,0,227,254,56,227,128,0,224,112,63,227,128,0,224,112,63,227,128,0,224,112,63,227,128,0,227,142,7,3,128,0,227,142,7,3,128,0,227,142,7,3,128,0,227,254,63,227,255,192,227,254,63,227,255,192,227,254,63,227,255,192,224,14,0,227,142,0,224,14,0,227,142,0,224,14,0,227,142,0,255,255,255,227,142,0,255,255,255,227,142,0,255,255,255,227,142,0,224,112,7,3,142,0,224,112,7,3,142,0,224,112,7,3,142,0,227,128,7,3,142,0,227,128,7,3,142,0,227,128,7,3,142,0,227,254,56,227,142,0,227,254,56,227,142,0,227,254,56,227,142,0,224,112,63,227,142,0,224,112,63,227,142,0,224,112,63,227,142,0,227,142,7,3,142,0,227,142,7,3,142,0,227,142,7,3,142,0,227,254,63,227,142,0,227,254,63,227,142,0,227,254,63,227,142,0,224,14,0,252,14,0,224,14,0,252,14,0,224,14,0,252,14,0,255,255,255,224,14,0,255,255,255,224,14,0,255,255,255,224,14,0, + // 0x65bc 於 + 188,101,45,45,14,48,0,253,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,255,255,248,28,112,0,255,255,248,28,112,0,255,255,248,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,255,199,0,1,192,3,255,199,0,1,192,3,255,199,0,1,192,3,129,248,0,0,56,3,129,248,0,0,56,3,129,248,0,0,56,3,129,192,31,128,0,3,129,192,31,128,0,3,129,192,31,128,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,112,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,252,0,0,3,129,192,252,0,0,3,129,192,252,0,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,113,192,0,112,0,28,113,192,0,112,0,28,113,192,0,112,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0, + // 0x6607 昇 + 7,102,45,45,14,48,0,250,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,3,128,0,0,1,255,3,128,0,0,1,255,3,128,0,31,254,0,3,128,0,31,254,0,3,128,0,31,254,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + // 0x660e 明 + 14,102,39,45,225,48,3,250,0,0,7,255,254,0,0,7,255,254,0,0,7,255,254,255,254,7,0,14,255,254,7,0,14,255,254,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,255,254,224,14,7,255,254,224,14,7,255,254,255,254,7,0,14,255,254,7,0,14,255,254,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,255,254,224,14,7,255,254,224,14,7,255,254,255,254,7,0,14,255,254,7,0,14,255,254,7,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,1,192,3,142,0,1,192,3,142,0,1,192,3,142,0,14,0,0,112,0,14,0,0,112,0,14,0,0,112, + // 0x662f 是 + 47,102,45,48,32,48,0,250,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,3,142,7,0,0,0,3,142,7,0,0,0,3,142,7,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,224,0,63,255,255,248,224,0,63,255,255,248,224,0,63,255,255,248, + // 0x6642 時 + 66,102,42,48,32,48,3,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,254,0,28,0,0,255,254,0,28,0,0,255,254,0,28,0,0,224,14,63,255,254,0,224,14,63,255,254,0,224,14,63,255,254,0,224,14,0,28,0,0,224,14,0,28,0,0,224,14,0,28,0,0,224,14,0,28,0,0,224,14,0,28,0,0,224,14,0,28,0,0,224,15,255,255,255,192,224,15,255,255,255,192,224,15,255,255,255,192,255,254,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,63,255,255,192,224,14,63,255,255,192,224,14,63,255,255,192,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,7,0,112,0,224,14,7,0,112,0,224,14,7,0,112,0,255,254,0,224,112,0,255,254,0,224,112,0,255,254,0,224,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0x66ab 暫 + 171,102,42,48,32,48,3,250,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,255,255,248,255,240,0,255,255,248,255,240,0,255,255,248,255,240,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,255,255,248,224,0,0,255,255,248,224,0,0,255,255,248,224,0,0,224,112,56,255,255,192,224,112,56,255,255,192,224,112,56,255,255,192,255,255,248,224,112,0,255,255,248,224,112,0,255,255,248,224,112,0,224,112,56,224,112,0,224,112,56,224,112,0,224,112,56,224,112,0,255,255,248,224,112,0,255,255,248,224,112,0,255,255,248,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,255,255,248,224,112,0,255,255,248,224,112,0,255,255,248,224,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,3,255,255,255,128,0,3,255,255,255,128,0,3,255,255,255,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,255,255,255,128,0,3,255,255,255,128,0,3,255,255,255,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,255,255,255,128,0,3,255,255,255,128,0,3,255,255,255,128,0, + // 0x66f4 更 + 244,102,45,45,14,48,0,250,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,14,56,0,0,0,0,14,56,0,0,0,0,14,56,0,0,0,0,1,248,0,0,0,0,1,248,0,0,0,0,1,248,0,0,0,0,126,7,252,0,0,0,126,7,252,0,0,0,126,7,252,0,0,255,128,0,3,255,248,255,128,0,3,255,248,255,128,0,3,255,248, + // 0x6700 最 + 0,103,45,48,32,48,0,250,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,3,128,56,0,0,0,3,128,56,0,0,0,3,128,56,0,0,0,3,255,248,255,254,0,3,255,248,255,254,0,3,255,248,255,254,0,3,128,56,224,14,0,3,128,56,224,14,0,3,128,56,224,14,0,3,255,248,224,112,0,3,255,248,224,112,0,3,255,248,224,112,0,3,128,56,28,112,0,3,128,56,28,112,0,3,128,56,28,112,0,3,143,255,3,128,0,3,143,255,3,128,0,3,143,255,3,128,0,255,240,56,28,112,0,255,240,56,28,112,0,255,240,56,28,112,0,28,0,56,224,14,0,28,0,56,224,14,0,28,0,56,224,14,0,0,0,63,0,1,248,0,0,63,0,1,248,0,0,63,0,1,248, + // 0x6709 有 + 9,103,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,3,143,255,255,240,0,3,143,255,255,240,0,3,143,255,255,240,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,28,112,0,0,14,0,28,112,0,0,14,0,28,112,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0, + // 0x677f 板 + 127,103,45,48,32,48,0,250,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,127,192,0,112,0,0,127,192,0,112,0,0,127,192,0,112,7,255,128,0,0,112,7,255,128,0,0,112,7,255,128,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,255,255,199,0,0,0,255,255,199,0,0,0,255,255,199,0,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,3,240,7,28,1,192,3,240,7,28,1,192,3,240,7,28,1,192,3,254,7,28,1,192,3,254,7,28,1,192,3,254,7,28,1,192,28,113,199,28,1,192,28,113,199,28,1,192,28,113,199,28,1,192,28,113,199,3,142,0,28,113,199,3,142,0,28,113,199,3,142,0,224,112,7,3,142,0,224,112,7,3,142,0,224,112,7,3,142,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,113,192,224,0,56,0,113,192,224,0,56,0,113,192,224,0,56, + // 0x67f1 柱 + 241,103,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,240,0,3,128,0,3,240,0,3,128,0,3,240,0,3,128,0,3,254,0,3,128,0,3,254,0,3,128,0,3,254,0,3,128,0,28,113,199,255,255,192,28,113,199,255,255,192,28,113,199,255,255,192,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x6821 校 + 33,104,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,7,255,255,248,0,112,7,255,255,248,0,112,7,255,255,248,255,255,192,0,0,0,255,255,192,0,0,0,255,255,192,0,0,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,3,240,7,0,1,192,3,240,7,0,1,192,3,240,7,0,1,192,3,254,56,0,0,56,3,254,56,0,0,56,3,254,56,0,0,56,28,113,192,224,14,0,28,113,192,224,14,0,28,113,192,224,14,0,28,112,0,224,14,0,28,112,0,224,14,0,28,112,0,224,14,0,224,112,0,28,112,0,224,112,0,28,112,0,224,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,63,0,1,248,0,112,63,0,1,248,0,112,63,0,1,248, + // 0x683c 格 + 60,104,45,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,255,254,63,0,112,0,255,254,63,0,112,0,255,254,63,0,112,0,0,113,192,227,128,0,0,113,192,227,128,0,0,113,192,227,128,0,3,240,0,28,0,0,3,240,0,28,0,0,3,240,0,28,0,0,3,254,0,227,128,0,3,254,0,227,128,0,3,254,0,227,128,0,28,113,199,0,126,0,28,113,199,0,126,0,28,113,199,0,126,0,28,112,56,0,1,248,28,112,56,0,1,248,28,112,56,0,1,248,224,113,199,255,254,0,224,113,199,255,254,0,224,113,199,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0, + // 0x689d 條 + 157,104,45,48,32,48,0,250,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,3,241,199,28,112,0,3,241,199,28,112,0,3,241,199,28,112,0,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,224,113,192,252,126,0,224,113,192,252,126,0,224,113,192,252,126,0,0,113,255,3,129,248,0,113,255,3,129,248,0,113,255,3,129,248,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,113,199,255,255,192,0,113,199,255,255,192,0,113,199,255,255,192,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,227,142,0,0,113,192,227,142,0,0,113,192,227,142,0,0,113,199,3,129,192,0,113,199,3,129,192,0,113,199,3,129,192,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0, + // 0x68c4 棄 + 196,104,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,14,0,0,0,7,0,14,0,0,0,7,0,14,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,1,199,28,0,0,0,1,199,28,0,0,0,1,199,28,0,0,0,126,7,3,240,0,0,126,7,3,240,0,0,126,7,3,240,0,255,128,7,0,15,248,255,128,7,0,15,248,255,128,7,0,15,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x69fd 槽 + 253,105,45,48,32,48,0,250,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,113,255,255,255,248,0,113,255,255,255,248,0,113,255,255,255,248,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,255,254,63,255,255,192,255,254,63,255,255,192,255,254,63,255,255,192,0,112,56,224,113,192,0,112,56,224,113,192,0,112,56,224,113,192,3,240,63,255,255,192,3,240,63,255,255,192,3,240,63,255,255,192,3,254,56,224,113,192,3,254,56,224,113,192,3,254,56,224,113,192,28,113,255,255,255,192,28,113,255,255,255,192,28,113,255,255,255,192,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,224,112,7,255,254,0,224,112,7,255,254,0,224,112,7,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0, + // 0x6a59 橙 + 89,106,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,113,255,227,129,192,0,113,255,227,129,192,0,113,255,227,129,192,0,112,0,227,142,0,0,112,0,227,142,0,0,112,0,227,142,0,0,112,56,224,112,56,0,112,56,224,112,56,0,112,56,224,112,56,255,254,7,0,113,192,255,254,7,0,113,192,255,254,7,0,113,192,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,3,241,199,255,241,192,3,241,199,255,241,192,3,241,199,255,241,192,3,254,0,0,0,56,3,254,0,0,0,56,3,254,0,0,0,56,28,113,255,255,254,0,28,113,255,255,254,0,28,113,255,255,254,0,28,112,56,0,14,0,28,112,56,0,14,0,28,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,224,112,56,0,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,255,248,0,127,255,255,255,248,0,127,255,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x6a5f 機 + 95,106,45,48,32,48,0,250,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,56,227,142,56,0,112,56,227,142,56,0,112,56,227,142,56,0,112,63,227,143,248,0,112,63,227,143,248,0,112,63,227,143,248,255,254,7,3,129,192,255,254,7,3,129,192,255,254,7,3,129,192,0,112,56,227,142,56,0,112,56,227,142,56,0,112,56,227,142,56,3,240,63,227,143,248,3,240,63,227,143,248,3,240,63,227,143,248,3,254,7,3,129,192,3,254,7,3,129,192,3,254,7,3,129,192,28,113,255,255,255,248,28,113,255,255,255,248,28,113,255,255,255,248,28,112,7,0,112,0,28,112,7,0,112,0,28,112,7,0,112,0,224,112,7,0,113,192,224,112,7,0,113,192,224,112,7,0,113,192,0,112,7,0,113,192,0,112,7,0,113,192,0,112,7,0,113,192,0,112,56,224,14,56,0,112,56,224,14,56,0,112,56,224,14,56,0,112,56,28,14,56,0,112,56,28,14,56,0,112,56,28,14,56,0,112,56,0,113,248,0,112,56,0,113,248,0,112,56,0,113,248,0,113,192,3,128,56,0,113,192,3,128,56,0,113,192,3,128,56, + // 0x6aa2 檢 + 162,106,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,255,255,199,0,1,192,255,255,199,0,1,192,255,255,199,0,1,192,0,112,56,255,254,56,0,112,56,255,254,56,0,112,56,255,254,56,3,240,0,0,0,0,3,240,0,0,0,0,3,240,0,0,0,0,3,254,0,0,0,0,3,254,0,0,0,0,3,254,0,0,0,0,28,113,199,252,127,192,28,113,199,252,127,192,28,113,199,252,127,192,28,113,199,28,113,192,28,113,199,28,113,192,28,113,199,28,113,192,224,112,7,28,113,192,224,112,7,28,113,192,224,112,7,28,113,192,0,112,7,252,127,192,0,112,7,252,127,192,0,112,7,252,127,192,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,7,28,113,192,0,112,7,28,113,192,0,112,7,28,113,192,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56, + // 0x6b62 止 + 98,107,45,45,14,48,0,253,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x6b63 正 + 99,107,45,42,252,48,0,253,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x6b65 步 + 101,107,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,3,128,7,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,28,0,0,252,0,0,28,0,0,252,0,0,28,0,0,252,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,0,127,192,0,0,0,255,128,0,0,0,0,255,128,0,0,0,0,255,128,0,0,0,0, + // 0x6b78 歸 + 120,107,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,31,255,199,255,255,192,31,255,199,255,255,192,31,255,199,255,255,192,28,1,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192,31,255,192,255,255,192,31,255,192,255,255,192,31,255,192,255,255,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,31,255,199,255,255,192,31,255,199,255,255,192,31,255,199,255,255,192,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,28,127,199,255,255,192,28,127,199,255,255,192,28,127,199,255,255,192,28,112,7,3,129,192,28,112,7,3,129,192,28,112,7,3,129,192,28,112,7,3,129,192,28,112,7,3,129,192,28,112,7,3,129,192,28,127,199,3,241,192,28,127,199,3,241,192,28,127,199,3,241,192,255,128,7,3,142,0,255,128,7,3,142,0,255,128,7,3,142,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0x6bbc 殼 + 188,107,45,48,32,48,0,250,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,31,254,0,0,14,0,31,254,0,0,14,0,31,254,0,31,255,255,28,14,0,31,255,255,28,14,0,31,255,255,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,0,14,0,28,14,0,3,255,248,28,14,0,3,255,248,28,14,0,3,255,248,28,14,0,0,0,0,224,1,248,0,0,0,224,1,248,0,0,0,224,1,248,31,255,255,0,0,0,31,255,255,0,0,0,31,255,255,0,0,0,28,0,7,255,255,192,28,0,7,255,255,192,28,0,7,255,255,192,227,255,248,28,1,192,227,255,248,28,1,192,227,255,248,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,3,255,192,3,142,0,3,255,192,3,142,0,3,255,192,3,142,0,3,129,192,3,142,0,3,129,192,3,142,0,3,129,192,3,142,0,3,129,199,0,112,0,3,129,199,0,112,0,3,129,199,0,112,0,3,129,248,3,142,0,3,129,248,3,142,0,3,129,248,3,142,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,224,0,7,224,0,56,224,0,7,224,0,56,224,0,7,224,0,56, + // 0x6bd4 比 + 212,107,39,45,225,48,6,253,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,112,224,0,56,0,112,224,0,56,0,112,224,0,56,3,128,224,0,56,3,128,224,0,56,3,128,224,0,56,28,0,224,0,56,28,0,224,0,56,28,0,255,254,56,224,0,255,254,56,224,0,255,254,56,224,0,224,0,63,0,0,224,0,63,0,0,224,0,63,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,0,224,0,56,0,14,224,0,56,0,14,224,0,56,0,14,224,126,56,0,14,224,126,56,0,14,224,126,56,0,14,255,128,56,0,14,255,128,56,0,14,255,128,56,0,14,224,0,7,255,254,224,0,7,255,254,224,0,7,255,254, + // 0x6c92 沒 + 146,108,45,48,32,48,0,250,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,224,0,7,0,1,192,224,0,7,0,1,192,224,0,7,0,1,192,28,0,56,3,142,0,28,0,56,3,142,0,28,0,56,3,142,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,0,14,63,255,255,192,0,14,63,255,255,192,0,14,63,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,255,128,0,224,14,0,255,128,0,224,14,0,255,128,0,224,14,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,7,224,14,0,3,128,7,224,14,0,3,128,7,224,14,0,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + // 0x6d88 消 + 136,109,39,48,240,48,0,250,0,0,0,28,0,0,0,0,28,0,0,0,0,28,0,3,128,56,28,14,3,128,56,28,14,3,128,56,28,14,0,112,7,28,14,0,112,7,28,14,0,112,7,28,14,0,112,7,28,112,0,112,7,28,112,0,112,7,28,112,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0,28,0,63,255,254,28,0,63,255,254,28,0,63,255,254,28,14,56,0,14,28,14,56,0,14,28,14,56,0,14,0,14,56,0,14,0,14,56,0,14,0,14,56,0,14,0,112,63,255,254,0,112,63,255,254,0,112,63,255,254,0,112,56,0,14,0,112,56,0,14,0,112,56,0,14,255,128,56,0,14,255,128,56,0,14,255,128,56,0,14,3,128,63,255,254,3,128,63,255,254,3,128,63,255,254,3,128,56,0,14,3,128,56,0,14,3,128,56,0,14,3,128,56,0,14,3,128,56,0,14,3,128,56,0,14,3,128,56,3,142,3,128,56,3,142,3,128,56,3,142,0,0,56,0,112,0,0,56,0,112,0,0,56,0,112, + // 0x6de1 淡 + 225,109,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,113,192,28,14,0,0,113,192,28,14,0,0,113,192,28,14,0,224,0,0,227,128,0,224,0,0,227,128,0,224,0,0,227,128,0,28,0,7,0,112,0,28,0,7,0,112,0,28,0,7,0,112,0,28,1,248,0,14,0,28,1,248,0,14,0,28,1,248,0,14,0,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,255,128,56,28,14,0,255,128,56,28,14,0,255,128,56,28,14,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,0,15,192,0,1,248,0,15,192,0,1,248,0,15,192,0,1,248, + // 0x6e05 清 + 5,110,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,224,0,63,255,254,0,224,0,63,255,254,0,224,0,63,255,254,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,15,255,255,255,248,28,15,255,255,255,248,28,15,255,255,255,248,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,255,128,56,0,14,0,255,128,56,0,14,0,255,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,3,142,0,3,128,56,3,142,0,3,128,56,3,142,0,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0, + // 0x6e2c 測 + 44,110,45,48,32,48,0,250,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,3,129,255,252,0,56,3,129,255,252,0,56,3,129,255,252,0,56,0,113,192,28,0,56,0,113,192,28,0,56,0,113,192,28,0,56,0,113,192,28,112,56,0,113,192,28,112,56,0,113,192,28,112,56,224,1,255,252,112,56,224,1,255,252,112,56,224,1,255,252,112,56,28,1,192,28,112,56,28,1,192,28,112,56,28,1,192,28,112,56,28,1,192,28,112,56,28,1,192,28,112,56,28,1,192,28,112,56,0,113,255,252,112,56,0,113,255,252,112,56,0,113,255,252,112,56,0,113,192,28,112,56,0,113,192,28,112,56,0,113,192,28,112,56,3,129,192,28,112,56,3,129,192,28,112,56,3,129,192,28,112,56,255,129,255,252,112,56,255,129,255,252,112,56,255,129,255,252,112,56,3,128,0,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,3,128,56,224,0,56,3,128,56,224,0,56,3,128,56,224,0,56,3,128,56,28,0,56,3,128,56,28,0,56,3,128,56,28,0,56,3,129,192,28,14,56,3,129,192,28,14,56,3,129,192,28,14,56,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192, + // 0x6e90 源 + 144,110,45,45,14,48,0,250,3,129,255,255,255,248,3,129,255,255,255,248,3,129,255,255,255,248,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,3,128,0,0,113,192,28,0,0,0,113,192,28,0,0,0,113,192,28,0,0,224,1,199,255,255,192,224,1,199,255,255,192,224,1,199,255,255,192,28,1,199,0,1,192,28,1,199,0,1,192,28,1,199,0,1,192,28,1,199,255,255,192,28,1,199,255,255,192,28,1,199,255,255,192,0,113,199,0,1,192,0,113,199,0,1,192,0,113,199,0,1,192,0,113,199,255,255,192,0,113,199,255,255,192,0,113,199,255,255,192,3,129,199,3,129,192,3,129,199,3,129,192,3,129,199,3,129,192,255,129,192,3,128,0,255,129,192,3,128,0,255,129,192,3,128,0,3,129,192,227,142,0,3,129,192,227,142,0,3,129,192,227,142,0,3,142,7,3,129,192,3,142,7,3,129,192,3,142,7,3,129,192,3,142,56,3,128,56,3,142,56,3,128,56,3,142,56,3,128,56,3,240,0,227,128,0,3,240,0,227,128,0,3,240,0,227,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x6e96 準 + 150,110,45,48,32,48,0,250,3,128,7,28,0,0,3,128,7,28,0,0,3,128,7,28,0,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,224,0,63,255,255,192,224,0,63,255,255,192,224,0,63,255,255,192,28,112,56,28,0,0,28,112,56,28,0,0,28,112,56,28,0,0,0,113,255,255,254,0,0,113,255,255,254,0,0,113,255,255,254,0,3,142,56,28,0,0,3,142,56,28,0,0,3,142,56,28,0,0,255,128,63,255,254,0,255,128,63,255,254,0,255,128,63,255,254,0,3,128,56,28,0,0,3,128,56,28,0,0,3,128,56,28,0,0,3,128,63,255,255,192,3,128,63,255,255,192,3,128,63,255,255,192,3,128,56,0,0,0,3,128,56,0,0,0,3,128,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x6eab 溫 + 171,110,45,45,14,48,0,253,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,0,14,56,28,14,0,0,14,56,28,14,0,0,14,56,28,14,0,224,14,56,227,142,0,224,14,56,227,142,0,224,14,56,227,142,0,28,112,63,0,14,0,28,112,63,0,14,0,28,112,63,0,14,0,28,112,63,255,254,0,28,112,63,255,254,0,28,112,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,252,1,255,255,255,192,252,1,255,255,255,192,252,1,255,255,255,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,1,192,227,129,192,28,15,255,255,255,248,28,15,255,255,255,248,28,15,255,255,255,248, + // 0x6fc0 激 + 192,111,45,48,32,48,0,250,0,0,56,0,112,0,0,0,56,0,112,0,0,0,56,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,3,143,255,224,112,0,3,143,255,224,112,0,3,143,255,224,112,0,3,142,0,224,112,0,3,142,0,224,112,0,3,142,0,224,112,0,0,15,255,227,255,248,0,15,255,227,255,248,0,15,255,227,255,248,224,14,0,227,129,192,224,14,0,227,129,192,224,14,0,227,129,192,28,15,255,252,113,192,28,15,255,252,113,192,28,15,255,252,113,192,28,113,192,0,113,192,28,113,192,0,113,192,28,113,192,0,113,192,0,112,56,0,113,192,0,112,56,0,113,192,0,112,56,0,113,192,3,143,255,252,113,192,3,143,255,252,113,192,3,143,255,252,113,192,255,129,192,0,113,192,255,129,192,0,113,192,255,129,192,0,113,192,3,129,255,224,14,0,3,129,255,224,14,0,3,129,255,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,142,0,224,113,192,3,142,0,224,113,192,3,142,0,224,113,192,3,142,56,224,113,192,3,142,56,224,113,192,3,142,56,224,113,192,0,112,7,3,128,56,0,112,7,3,128,56,0,112,7,3,128,56, + // 0x7121 無 + 33,113,42,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,127,255,255,255,192,0,127,255,255,255,192,0,127,255,255,255,192,3,142,56,227,128,0,3,142,56,227,128,0,3,142,56,227,128,0,28,14,56,227,128,0,28,14,56,227,128,0,28,14,56,227,128,0,0,14,56,227,128,0,0,14,56,227,128,0,0,14,56,227,128,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,14,56,227,128,0,0,14,56,227,128,0,0,14,56,227,128,0,0,14,56,227,128,0,0,14,56,227,128,0,0,14,56,227,128,0,0,14,56,227,128,0,0,14,56,227,128,0,0,14,56,227,128,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,28,0,56,28,1,192,28,0,56,28,1,192,28,0,56,28,1,192,224,0,0,0,1,192,224,0,0,0,1,192,224,0,0,0,1,192, + // 0x71b1 熱 + 177,113,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,31,255,192,28,0,0,31,255,192,28,0,0,31,255,192,28,0,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,255,254,0,255,255,248,28,14,0,255,255,248,28,14,0,255,255,248,28,14,0,28,1,192,28,14,0,28,1,192,28,14,0,28,1,192,28,14,0,224,112,56,252,14,0,224,112,56,252,14,0,224,112,56,252,14,0,31,255,192,28,14,0,31,255,192,28,14,0,31,255,192,28,14,0,0,112,0,227,142,56,0,112,0,227,142,56,0,112,0,227,142,56,0,127,192,227,142,56,0,127,192,227,142,56,0,127,192,227,142,56,255,128,7,0,1,248,255,128,7,0,1,248,255,128,7,0,1,248,28,0,56,0,0,56,28,0,56,0,0,56,28,0,56,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,0,224,14,0,28,14,0,224,14,0,28,14,0,224,14,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,28,1,192, + // 0x71c8 燈 + 200,113,45,48,32,48,0,250,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,129,255,227,129,192,3,129,255,227,129,192,3,129,255,227,129,192,3,128,0,227,142,0,3,128,0,227,142,0,3,128,0,227,142,0,3,142,56,224,112,56,3,142,56,224,112,56,3,142,56,224,112,56,227,240,7,0,113,192,227,240,7,0,113,192,227,240,7,0,113,192,227,128,56,0,14,0,227,128,56,0,14,0,227,128,56,0,14,0,227,129,199,255,241,192,227,129,199,255,241,192,227,129,199,255,241,192,227,142,0,0,0,56,227,142,0,0,0,56,227,142,0,0,0,56,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,28,112,56,0,14,0,28,112,56,0,14,0,28,112,56,0,14,0,28,14,7,0,112,0,28,14,7,0,112,0,28,14,7,0,112,0,28,15,255,255,255,248,28,15,255,255,255,248,28,15,255,255,255,248,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0, + // 0x7247 片 + 71,114,39,48,240,48,3,250,0,0,0,224,0,0,0,0,224,0,0,0,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128,0,0,0,3,255,255,252,0,3,255,255,252,0,3,255,255,252,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,3,128,0,28,0,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,224,0,0,28,0,224,0,0,28,0,224,0,0,28,0, + // 0x7269 物 + 105,114,42,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,28,112,0,224,0,0,28,112,0,224,0,0,28,112,0,224,0,0,28,112,0,255,255,192,28,112,0,255,255,192,28,112,0,255,255,192,31,255,199,28,113,192,31,255,199,28,113,192,31,255,199,28,113,192,28,112,56,28,113,192,28,112,56,28,113,192,28,112,56,28,113,192,224,112,0,28,113,192,224,112,0,28,113,192,224,112,0,28,113,192,0,112,0,224,113,192,0,112,0,224,113,192,0,112,0,224,113,192,0,127,192,224,113,192,0,127,192,224,113,192,0,127,192,224,113,192,255,240,7,3,129,192,255,240,7,3,129,192,255,240,7,3,129,192,28,112,56,3,129,192,28,112,56,3,129,192,28,112,56,3,129,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x7387 率 + 135,115,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,143,255,224,14,0,3,143,255,224,14,0,3,143,255,224,14,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,3,128,56,28,14,0,3,128,56,28,14,0,3,128,56,28,14,0,28,15,255,255,129,192,28,15,255,255,129,192,28,15,255,255,129,192,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x7528 用 + 40,117,39,45,225,48,0,250,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,28,0,7,0,14,28,0,7,0,14,28,0,7,0,14,28,0,7,3,142,28,0,7,3,142,28,0,7,3,142,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x754c 界 + 76,117,45,45,14,48,0,250,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,15,192,31,128,0,0,15,192,31,128,0,0,15,192,31,128,0,3,241,192,28,126,0,3,241,192,28,126,0,3,241,192,28,126,0,252,1,192,28,1,248,252,1,192,28,1,248,252,1,192,28,1,248,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0, + // 0x767d 白 + 125,118,33,48,240,48,6,250,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,0,0,0,112,0,0,0,0,112,0,0,0,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128,255,255,255,255,128,255,255,255,255,128,255,255,255,255,128,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128, + // 0x7684 的 + 132,118,39,48,240,48,3,250,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,28,0,0,224,0,28,0,0,224,0,28,0,0,224,0,255,255,192,255,254,255,255,192,255,254,255,255,192,255,254,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,1,248,0,14,224,1,248,0,14,224,1,248,0,14,224,1,192,224,14,224,1,192,224,14,224,1,192,224,14,255,255,192,28,14,255,255,192,28,14,255,255,192,28,14,224,1,192,28,14,224,1,192,28,14,224,1,192,28,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,224,1,192,0,14,255,255,192,0,14,255,255,192,0,14,255,255,192,0,14,224,1,192,28,112,224,1,192,28,112,224,1,192,28,112,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128, + // 0x76e3 監 + 227,118,45,42,252,48,0,253,3,255,255,3,128,0,3,255,255,3,128,0,3,255,255,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,255,255,3,255,248,3,255,255,3,255,248,3,255,255,3,255,248,3,128,7,28,0,0,3,128,7,28,0,0,3,128,7,28,0,0,3,255,255,28,112,0,3,255,255,28,112,0,3,255,255,28,112,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,255,255,0,14,0,3,255,255,0,14,0,3,255,255,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x76f4 直 + 244,118,45,45,14,48,0,253,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x7720 眠 + 32,119,42,45,14,48,3,250,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,255,254,56,0,14,0,255,254,56,0,14,0,255,254,56,0,14,0,224,14,56,0,14,0,224,14,56,0,14,0,224,14,56,0,14,0,224,14,56,0,14,0,224,14,56,0,14,0,224,14,56,0,14,0,255,254,63,255,254,0,255,254,63,255,254,0,255,254,63,255,254,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,255,254,63,255,255,192,255,254,63,255,255,192,255,254,63,255,255,192,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,28,0,0,224,14,56,3,128,0,224,14,56,3,128,0,224,14,56,3,128,0,255,254,56,3,129,192,255,254,56,3,129,192,255,254,56,3,129,192,224,14,56,224,113,192,224,14,56,224,113,192,224,14,56,224,113,192,0,0,63,0,15,192,0,0,63,0,15,192,0,0,63,0,15,192,0,0,56,0,1,192,0,0,56,0,1,192,0,0,56,0,1,192, + // 0x780d 砍 + 13,120,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,255,192,28,0,0,255,255,192,28,0,0,255,255,192,28,0,0,0,112,0,31,255,192,0,112,0,31,255,192,0,112,0,31,255,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,255,199,3,128,0,3,255,199,3,128,0,3,255,199,3,128,0,31,129,192,3,128,0,31,129,192,3,128,0,31,129,192,3,128,0,31,129,192,3,128,0,31,129,192,3,128,0,31,129,192,3,128,0,227,129,192,28,112,0,227,129,192,28,112,0,227,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,129,192,28,112,0,3,255,192,224,14,0,3,255,192,224,14,0,3,255,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + // 0x78ba 確 + 186,120,45,48,32,48,0,250,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,254,63,255,255,248,255,254,63,255,255,248,255,254,63,255,255,248,3,128,56,227,128,56,3,128,56,227,128,56,3,128,56,227,128,56,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,28,0,7,255,255,248,28,0,7,255,255,248,28,0,7,255,255,248,31,254,7,0,112,0,31,254,7,0,112,0,31,254,7,0,112,0,28,14,63,0,112,0,28,14,63,0,112,0,28,14,63,0,112,0,252,15,199,255,255,248,252,15,199,255,255,248,252,15,199,255,255,248,28,14,7,0,112,0,28,14,7,0,112,0,28,14,7,0,112,0,28,14,7,0,112,0,28,14,7,0,112,0,28,14,7,0,112,0,28,14,7,255,255,248,28,14,7,255,255,248,28,14,7,255,255,248,31,254,7,0,112,0,31,254,7,0,112,0,31,254,7,0,112,0,28,14,7,0,112,0,28,14,7,0,112,0,28,14,7,0,112,0,0,0,7,255,255,248,0,0,7,255,255,248,0,0,7,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x79fb 移 + 251,121,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,127,192,3,128,0,0,127,192,3,128,0,0,127,192,3,128,0,255,240,0,31,255,192,255,240,0,31,255,192,255,240,0,31,255,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,7,28,14,0,0,112,7,28,14,0,0,112,7,28,14,0,255,255,192,3,240,0,255,255,192,3,240,0,255,255,192,3,240,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,240,0,28,14,0,3,240,0,28,14,0,3,240,0,28,14,0,3,254,7,224,112,0,3,254,7,224,112,0,3,254,7,224,112,0,28,113,192,3,255,248,28,113,192,3,255,248,28,113,192,3,255,248,28,113,192,28,0,56,28,113,192,28,0,56,28,113,192,28,0,56,224,112,7,227,129,192,224,112,7,227,129,192,224,112,7,227,129,192,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,0,126,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,128,0,0,112,0,31,128,0,0,112,0,31,128,0,0,112,7,224,0,0,0,112,7,224,0,0,0,112,7,224,0,0, + // 0x7a4d 積 + 77,122,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,127,199,255,255,248,0,127,199,255,255,248,0,127,199,255,255,248,255,240,0,3,128,0,255,240,0,3,128,0,255,240,0,3,128,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,255,255,199,255,255,248,255,255,199,255,255,248,255,255,199,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,240,7,255,255,192,3,240,7,255,255,192,3,240,7,255,255,192,3,254,7,0,1,192,3,254,7,0,1,192,3,254,7,0,1,192,28,113,199,255,255,192,28,113,199,255,255,192,28,113,199,255,255,192,28,113,199,0,1,192,28,113,199,0,1,192,28,113,199,0,1,192,224,112,7,255,255,192,224,112,7,255,255,192,224,112,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192, + // 0x7aef 端 + 239,122,45,48,32,48,0,250,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,255,255,199,3,129,192,255,255,199,3,129,192,255,255,199,3,129,192,0,0,7,255,255,192,0,0,7,255,255,192,0,0,7,255,255,192,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,224,14,63,255,255,248,224,14,63,255,255,248,224,14,63,255,255,248,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,28,14,0,28,0,0,28,14,0,28,0,0,28,14,0,28,0,0,28,14,7,255,255,192,28,14,7,255,255,192,28,14,7,255,255,192,28,112,7,28,113,192,28,112,7,28,113,192,28,112,7,28,113,192,28,112,7,28,113,192,28,112,7,28,113,192,28,112,7,28,113,192,0,127,199,28,113,192,0,127,199,28,113,192,0,127,199,28,113,192,255,128,7,28,113,192,255,128,7,28,113,192,255,128,7,28,113,192,28,0,7,28,113,192,28,0,7,28,113,192,28,0,7,28,113,192,0,0,7,0,15,192,0,0,7,0,15,192,0,0,7,0,15,192, + // 0x7b49 等 + 73,123,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,255,255,31,255,248,3,255,255,31,255,248,3,255,255,31,255,248,28,14,0,224,112,0,28,14,0,224,112,0,28,14,0,224,112,0,224,1,199,0,14,0,224,1,199,0,14,0,224,1,199,0,14,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,227,128,0,0,1,192,227,128,0,0,1,192,227,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x7ba1 管 + 161,123,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,255,255,31,255,248,3,255,255,31,255,248,3,255,255,31,255,248,28,14,0,224,112,0,28,14,0,224,112,0,28,14,0,224,112,0,224,1,199,0,14,0,224,1,199,0,14,0,224,1,199,0,14,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,224,127,255,255,129,192,224,127,255,255,129,192,224,127,255,255,129,192,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,127,255,255,128,0,0,127,255,255,128,0,0,127,255,255,128,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x7bb1 箱 + 177,123,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,255,255,31,255,248,3,255,255,31,255,248,3,255,255,31,255,248,3,142,0,224,112,0,3,142,0,224,112,0,3,142,0,224,112,0,28,1,199,0,14,0,28,1,199,0,14,0,28,1,199,0,14,0,224,14,0,0,0,0,224,14,0,0,0,0,224,14,0,0,0,0,0,14,0,255,255,192,0,14,0,255,255,192,0,14,0,255,255,192,31,255,248,224,1,192,31,255,248,224,1,192,31,255,248,224,1,192,0,14,0,224,1,192,0,14,0,224,1,192,0,14,0,224,1,192,0,126,0,255,255,192,0,126,0,255,255,192,0,126,0,255,255,192,0,127,192,224,1,192,0,127,192,224,1,192,0,127,192,224,1,192,3,142,56,224,1,192,3,142,56,224,1,192,3,142,56,224,1,192,3,142,56,255,255,192,3,142,56,255,255,192,3,142,56,255,255,192,28,14,0,224,1,192,28,14,0,224,1,192,28,14,0,224,1,192,224,14,0,224,1,192,224,14,0,224,1,192,224,14,0,224,1,192,0,14,0,255,255,192,0,14,0,255,255,192,0,14,0,255,255,192, + // 0x7cfb 系 + 251,124,39,48,240,48,3,250,0,0,7,255,240,0,0,7,255,240,0,0,7,255,240,31,255,248,0,0,31,255,248,0,0,31,255,248,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,112,0,28,0,0,112,0,28,0,0,112,0,28,0,3,128,0,224,0,3,128,0,224,0,3,128,0,224,0,31,255,255,0,0,31,255,255,0,0,31,255,255,0,0,0,0,56,0,0,0,0,56,0,0,0,0,56,0,0,0,15,192,3,128,0,15,192,3,128,0,15,192,3,128,3,240,0,0,112,3,240,0,0,112,3,240,0,0,112,255,255,255,255,254,255,255,255,255,254,255,255,255,255,254,0,0,56,0,14,0,0,56,0,14,0,0,56,0,14,0,112,56,28,0,0,112,56,28,0,0,112,56,28,0,3,128,56,3,128,3,128,56,3,128,3,128,56,3,128,28,0,56,0,112,28,0,56,0,112,28,0,56,0,112,224,14,56,0,14,224,14,56,0,14,224,14,56,0,14,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + // 0x7d05 紅 + 5,125,45,45,14,48,0,253,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,128,7,255,255,192,3,128,7,255,255,192,3,128,7,255,255,192,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,255,254,0,3,128,0,255,254,0,3,128,0,255,254,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,224,0,63,255,255,248,224,0,63,255,255,248,224,0,63,255,255,248, + // 0x7d22 索 + 34,125,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,56,0,0,56,28,0,56,0,0,56,28,0,56,0,0,56,224,1,192,3,129,192,224,1,192,3,129,192,224,1,192,3,129,192,0,127,255,252,0,0,0,127,255,252,0,0,0,127,255,252,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,1,248,0,112,0,0,1,248,0,112,0,0,1,248,0,112,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,14,0,0,0,7,0,14,0,0,0,7,0,14,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,3,129,199,0,112,0,3,129,199,0,112,0,3,129,199,0,112,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0, + // 0x7d2b 紫 + 43,125,42,48,32,48,0,250,0,14,0,224,0,0,0,14,0,224,0,0,0,14,0,224,0,0,3,142,0,224,14,0,3,142,0,224,14,0,3,142,0,224,14,0,3,143,248,255,240,0,3,143,248,255,240,0,3,143,248,255,240,0,3,142,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,3,143,248,224,1,192,3,143,248,224,1,192,3,143,248,224,1,192,255,240,0,31,255,192,255,240,0,31,255,192,255,240,0,31,255,192,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,127,255,252,0,0,0,127,255,252,0,0,0,127,255,252,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,0,7,224,0,0,0,1,248,0,112,0,0,1,248,0,112,0,0,1,248,0,112,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,14,0,0,0,7,0,14,0,0,0,7,0,14,0,0,112,7,3,128,0,0,112,7,3,128,0,0,112,7,3,128,0,3,129,199,0,112,0,3,129,199,0,112,0,3,129,199,0,112,0,28,0,56,0,14,0,28,0,56,0,14,0,28,0,56,0,14,0, + // 0x7d30 細 + 48,125,42,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,128,7,255,255,192,3,128,7,255,255,192,3,128,7,255,255,192,3,129,199,3,129,192,3,129,199,3,129,192,3,129,199,3,129,192,28,1,199,3,129,192,28,1,199,3,129,192,28,1,199,3,129,192,255,254,7,3,129,192,255,254,7,3,129,192,255,254,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,28,14,7,255,255,192,28,14,7,255,255,192,28,14,7,255,255,192,255,255,199,3,129,192,255,255,199,3,129,192,255,255,199,3,129,192,0,1,199,3,129,192,0,1,199,3,129,192,0,1,199,3,129,192,0,0,7,3,129,192,0,0,7,3,129,192,0,0,7,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,224,0,7,255,255,192,224,0,7,255,255,192,224,0,7,255,255,192,0,0,7,0,1,192,0,0,7,0,1,192,0,0,7,0,1,192, + // 0x7d42 終 + 66,125,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,0,31,255,192,3,128,0,31,255,192,3,128,0,31,255,192,3,142,0,224,1,192,3,142,0,224,1,192,3,142,0,224,1,192,28,14,7,224,14,0,28,14,7,224,14,0,28,14,7,224,14,0,255,240,56,28,112,0,255,240,56,28,112,0,255,240,56,28,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,28,14,0,224,14,0,28,14,0,224,14,0,28,14,0,224,14,0,255,254,63,0,1,248,255,254,63,0,1,248,255,254,63,0,1,248,0,14,0,31,128,0,0,14,0,31,128,0,0,14,0,31,128,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,227,142,0,0,14,0,227,142,0,0,14,0,227,142,0,0,14,0,227,142,0,252,0,0,227,142,0,252,0,0,227,142,0,252,0,0,224,0,0,3,128,0,224,0,0,3,128,0,224,0,0,3,128,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0, + // 0x7d71 統 + 113,125,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,142,63,255,255,248,3,142,63,255,255,248,3,142,63,255,255,248,28,14,0,28,0,0,28,14,0,28,0,0,28,14,0,28,0,0,255,240,0,224,14,0,255,240,0,224,14,0,255,240,0,224,14,0,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,3,128,63,255,255,248,3,128,63,255,255,248,3,128,63,255,255,248,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,224,112,56,255,255,192,224,112,0,255,255,192,224,112,0,255,255,192,224,112,0,0,1,192,224,112,0,0,1,192,224,112,0,0,1,192,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,28,113,199,0,112,56,28,113,199,0,112,56,28,113,199,0,112,56,28,113,199,0,112,56,28,113,199,0,112,56,28,113,199,0,112,56,224,0,56,0,15,248,224,0,56,0,15,248,224,0,56,0,15,248,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0, + // 0x7d72 絲 + 114,125,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,28,1,199,255,240,0,28,1,199,255,240,0,28,1,199,255,240,0,255,254,0,3,128,0,255,254,0,3,128,0,255,254,0,3,128,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,28,14,7,255,255,192,28,14,7,255,255,192,28,14,7,255,255,192,255,255,192,3,129,192,255,255,192,3,129,192,255,255,192,3,129,192,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,0,0,227,142,0,0,0,0,227,142,0,0,0,0,227,142,0,28,113,199,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,28,113,248,3,128,56,28,113,248,3,128,56,28,113,248,3,128,56,224,0,0,227,128,0,224,0,0,227,128,0,224,0,0,227,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x7da0 綠 + 160,125,45,48,32,48,0,250,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,255,254,0,3,128,0,224,14,0,3,128,0,224,14,0,3,128,0,224,14,0,3,142,7,0,14,0,3,142,7,0,14,0,3,142,7,0,14,0,28,14,7,255,240,0,28,14,7,255,240,0,28,14,7,255,240,0,255,240,0,0,112,0,255,240,0,0,112,0,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,63,255,255,248,3,128,63,255,255,248,3,128,63,255,255,248,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,255,254,56,3,128,56,255,254,56,3,128,56,255,254,56,3,128,56,0,14,7,31,241,192,0,14,7,31,241,192,0,14,7,31,241,192,0,0,0,227,142,0,0,0,0,227,142,0,0,0,0,227,142,0,227,142,7,3,129,192,227,142,7,3,129,192,227,142,7,3,129,192,227,142,56,3,128,56,227,142,56,3,128,56,227,142,56,3,128,56,224,0,0,227,128,0,224,0,0,227,128,0,224,0,0,227,128,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x7db2 網 + 178,125,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,255,255,248,0,112,7,255,255,248,0,112,7,255,255,248,3,128,7,0,0,56,3,128,7,0,0,56,3,128,7,0,0,56,3,128,7,224,14,56,3,128,7,224,14,56,3,128,7,224,14,56,28,14,7,28,112,56,28,14,7,28,112,56,28,14,7,28,112,56,255,254,7,255,255,248,255,254,7,255,255,248,255,254,7,255,255,248,0,112,7,3,128,56,0,112,7,3,128,56,0,112,7,3,128,56,3,128,7,0,112,56,3,128,7,0,112,56,3,128,7,0,112,56,3,128,7,255,255,248,3,128,7,255,255,248,3,128,7,255,255,248,28,14,7,28,0,56,28,14,7,28,0,56,28,14,7,28,0,56,255,241,199,28,0,56,255,241,199,28,0,56,255,241,199,28,0,56,0,0,7,31,254,56,0,0,7,31,254,56,0,0,7,31,254,56,28,113,199,0,0,56,28,113,199,0,0,56,28,113,199,0,0,56,28,113,199,0,0,56,28,113,199,0,0,56,28,113,199,0,0,56,28,113,199,0,14,56,28,113,199,0,14,56,28,113,199,0,14,56,224,0,7,0,1,192,224,0,7,0,1,192,224,0,7,0,1,192, + // 0x7dd2 緒 + 210,125,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,3,128,56,3,128,7,255,254,56,3,128,7,255,254,56,3,128,7,255,254,56,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,3,129,192,28,1,192,3,142,0,28,1,192,3,142,0,28,1,192,3,142,0,255,254,63,255,255,248,255,254,63,255,255,248,255,254,63,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,28,14,0,255,255,192,28,14,0,255,255,192,28,14,0,255,255,192,255,255,199,224,1,192,255,255,199,224,1,192,255,255,199,224,1,192,0,1,248,224,1,192,0,1,248,224,1,192,0,1,248,224,1,192,0,0,0,255,255,192,0,0,0,255,255,192,0,0,0,255,255,192,28,113,192,224,1,192,28,113,192,224,1,192,28,113,192,224,1,192,28,113,192,224,1,192,28,113,192,224,1,192,28,113,192,224,1,192,224,0,0,255,255,192,224,0,0,255,255,192,224,0,0,255,255,192,0,0,0,224,1,192,0,0,0,224,1,192,0,0,0,224,1,192, + // 0x7dda 線 + 218,125,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,224,0,0,0,112,0,224,0,0,0,112,0,224,0,0,3,128,7,255,255,192,3,128,7,255,255,192,3,128,7,255,255,192,3,142,7,0,1,192,3,142,7,0,1,192,3,142,7,0,1,192,28,14,7,255,255,192,28,14,7,255,255,192,28,14,7,255,255,192,255,240,7,0,1,192,255,240,7,0,1,192,255,240,7,0,1,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,14,0,3,240,56,28,14,0,3,240,56,28,14,0,3,240,56,255,254,63,227,241,192,255,254,63,227,241,192,255,254,63,227,241,192,0,14,0,227,142,0,0,14,0,227,142,0,0,14,0,227,142,0,0,0,7,3,142,0,0,0,7,3,142,0,0,0,7,3,142,0,227,142,7,3,129,192,227,142,7,3,129,192,227,142,7,3,129,192,227,142,56,3,129,192,227,142,56,3,129,192,227,142,56,3,129,192,224,1,192,227,128,56,224,1,192,227,128,56,224,1,192,227,128,56,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + // 0x7de8 編 + 232,125,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,7,255,255,248,3,128,7,255,255,248,3,128,7,255,255,248,3,129,199,0,0,56,3,129,199,0,0,56,3,129,199,0,0,56,28,1,199,0,0,56,28,1,199,0,0,56,28,1,199,0,0,56,255,254,7,255,255,248,255,254,7,255,255,248,255,254,7,255,255,248,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,28,14,7,255,255,248,28,14,7,255,255,248,28,14,7,255,255,248,255,255,199,227,142,56,255,255,199,227,142,56,255,255,199,227,142,56,0,1,199,227,142,56,0,1,199,227,142,56,0,1,199,227,142,56,0,0,56,255,255,248,0,0,56,255,255,248,0,0,56,255,255,248,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,224,1,192,227,128,56,224,1,192,227,128,56,224,1,192,227,128,56,0,0,0,224,1,248,0,0,0,224,1,248,0,0,0,224,1,248, + // 0x7e2e 縮 + 46,126,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,63,255,255,248,3,128,63,255,255,248,3,128,63,255,255,248,3,142,56,0,0,56,3,142,56,0,0,56,3,142,56,0,0,56,28,14,0,224,0,0,28,14,0,224,0,0,28,14,0,224,0,0,255,240,0,255,255,248,255,240,0,255,255,248,255,240,0,255,255,248,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,3,128,63,3,128,0,3,128,63,3,128,0,3,128,63,3,128,0,28,15,199,31,255,192,28,15,199,31,255,192,28,15,199,31,255,192,255,254,7,28,1,192,255,254,7,28,1,192,255,254,7,28,1,192,0,14,7,28,1,192,0,14,7,28,1,192,0,14,7,28,1,192,0,0,7,31,255,192,0,0,7,31,255,192,0,0,7,31,255,192,227,142,7,28,1,192,227,142,7,28,1,192,227,142,7,28,1,192,227,142,7,28,1,192,227,142,7,28,1,192,227,142,7,28,1,192,224,0,7,31,255,192,224,0,7,31,255,192,224,0,7,31,255,192,0,0,7,28,1,192,0,0,7,28,1,192,0,0,7,28,1,192, + // 0x7e3d 總 + 61,126,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,128,7,255,255,192,3,128,7,255,255,192,3,128,7,255,255,192,3,129,199,3,129,192,3,129,199,3,129,192,3,129,199,3,129,192,28,1,199,31,255,192,28,1,199,31,255,192,28,1,199,31,255,192,255,254,7,224,15,192,255,254,7,224,15,192,255,254,7,224,15,192,0,112,7,28,113,192,0,112,7,28,113,192,0,112,7,28,113,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,28,14,7,28,113,192,28,14,7,28,113,192,28,14,7,28,113,192,255,255,199,255,255,192,255,255,199,255,255,192,255,255,199,255,255,192,0,1,192,3,128,0,0,1,192,3,128,0,0,1,192,3,128,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,28,113,199,28,113,192,28,113,199,28,113,192,28,113,199,28,113,192,28,113,199,28,0,56,28,113,199,28,0,56,28,113,199,28,0,56,224,0,7,28,14,56,224,0,7,28,14,56,224,0,7,28,14,56,0,0,56,3,254,0,0,0,56,3,254,0,0,0,56,3,254,0, + // 0x7e7c 繼 + 124,126,45,48,32,48,0,250,0,112,0,28,1,192,0,112,0,28,1,192,0,112,0,28,1,192,0,112,56,224,1,192,0,112,56,224,1,192,0,112,56,224,1,192,3,128,56,255,142,56,3,128,56,255,142,56,3,128,56,255,142,56,3,142,56,28,15,248,3,142,56,28,15,248,3,142,56,28,15,248,28,14,56,227,129,192,28,14,56,227,129,192,28,14,56,227,129,192,255,240,56,255,143,248,255,240,56,255,143,248,255,240,56,255,143,248,0,112,56,3,128,56,0,112,56,3,128,56,0,112,56,3,128,56,3,128,63,255,255,248,3,128,63,255,255,248,3,128,63,255,255,248,28,14,56,28,1,192,28,14,56,28,1,192,28,14,56,28,1,192,255,254,56,224,1,192,255,254,56,224,1,192,255,254,56,224,1,192,0,14,56,255,142,56,0,14,56,255,142,56,0,14,56,255,142,56,0,0,56,28,15,248,0,0,56,28,15,248,0,0,56,28,15,248,227,142,56,227,129,192,227,142,56,227,129,192,227,142,56,227,129,192,227,142,56,255,143,248,227,142,56,255,143,248,227,142,56,255,143,248,224,0,56,3,128,56,224,0,56,3,128,56,224,0,56,3,128,56,0,0,63,255,255,248,0,0,63,255,255,248,0,0,63,255,255,248, + // 0x7e8c 續 + 140,126,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,142,7,255,255,192,3,142,7,255,255,192,3,142,7,255,255,192,28,14,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,255,240,63,255,255,248,255,240,63,255,255,248,255,240,63,255,255,248,0,112,56,28,112,56,0,112,56,28,112,56,0,112,56,28,112,56,3,128,63,255,255,248,3,128,63,255,255,248,3,128,63,255,255,248,28,14,7,0,1,192,28,14,7,0,1,192,28,14,7,0,1,192,255,255,199,255,255,192,255,255,199,255,255,192,255,255,199,255,255,192,0,1,199,0,1,192,0,1,199,0,1,192,0,1,199,0,1,192,0,0,7,255,255,192,0,0,7,255,255,192,0,0,7,255,255,192,28,113,199,0,1,192,28,113,199,0,1,192,28,113,199,0,1,192,28,113,199,255,255,192,28,113,199,255,255,192,28,113,199,255,255,192,224,0,0,224,14,0,224,0,0,224,14,0,224,0,0,224,14,0,0,0,7,0,1,192,0,0,7,0,1,192,0,0,7,0,1,192, + // 0x7ea2 红 + 162,126,45,45,14,48,0,253,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,128,7,255,255,192,3,128,7,255,255,192,3,128,7,255,255,192,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,255,254,0,3,128,0,255,254,0,3,128,0,255,254,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,127,192,3,128,0,0,127,192,3,128,0,0,127,192,3,128,0,255,128,0,3,128,0,255,128,0,3,128,0,255,128,0,3,128,0,28,0,63,255,255,248,28,0,63,255,255,248,28,0,63,255,255,248, + // 0x7f6e 置 + 110,127,45,48,32,48,0,250,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x7f72 署 + 114,127,45,45,14,48,0,250,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,127,255,252,112,0,0,127,255,252,112,0,0,127,255,252,112,0,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,3,128,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,63,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,3,254,0,0,112,0,3,254,0,0,112,0,3,254,0,0,112,0,252,15,255,255,240,0,252,15,255,255,240,0,252,15,255,255,240,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0, + // 0x8070 聰 + 112,128,45,48,32,48,0,250,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,255,255,192,28,0,0,255,255,192,28,0,0,255,255,192,28,0,0,28,14,7,255,255,192,28,14,7,255,255,192,28,14,7,255,255,192,28,14,7,3,129,192,28,14,7,3,129,192,28,14,7,3,129,192,31,254,7,31,255,192,31,254,7,31,255,192,31,254,7,31,255,192,28,14,7,224,15,192,28,14,7,224,15,192,28,14,7,224,15,192,28,14,7,28,113,192,28,14,7,28,113,192,28,14,7,28,113,192,31,254,7,3,129,192,31,254,7,3,129,192,31,254,7,3,129,192,28,14,7,28,113,192,28,14,7,28,113,192,28,14,7,28,113,192,28,14,7,255,255,192,28,14,7,255,255,192,28,14,7,255,255,192,28,15,192,28,0,0,28,15,192,28,0,0,28,15,192,28,0,0,31,254,0,3,129,192,31,254,0,3,129,192,31,254,0,3,129,192,252,14,56,227,128,56,252,14,56,227,128,56,252,14,56,227,128,56,0,14,56,224,14,56,0,14,56,224,14,56,0,14,56,224,14,56,0,15,192,224,14,0,0,15,192,224,14,0,0,15,192,224,14,0,0,14,0,31,254,0,0,14,0,31,254,0,0,14,0,31,254,0, + // 0x81ea 自 + 234,129,27,48,192,48,9,250,0,14,0,0,0,14,0,0,0,14,0,0,0,112,0,0,0,112,0,0,0,112,0,0,3,128,0,0,3,128,0,0,3,128,0,0,255,255,255,224,255,255,255,224,255,255,255,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,255,255,255,224,255,255,255,224,255,255,255,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,255,255,255,224,255,255,255,224,255,255,255,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,224,0,0,224,255,255,255,224,255,255,255,224,255,255,255,224,224,0,0,224,224,0,0,224,224,0,0,224, + // 0x85cd 藍 + 205,133,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,3,128,0,3,255,255,3,128,0,3,255,255,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,255,255,3,255,248,3,255,255,3,255,248,3,255,255,3,255,248,3,128,7,28,0,0,3,128,7,28,0,0,3,128,7,28,0,0,3,255,255,28,112,0,3,255,255,28,112,0,3,255,255,28,112,0,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,255,255,0,14,0,3,255,255,0,14,0,3,255,255,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x884c 行 + 76,136,45,48,32,48,0,250,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,7,255,255,192,0,14,7,255,255,192,0,14,7,255,255,192,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,3,240,0,3,128,0,3,240,0,3,128,0,3,240,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,224,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0, + // 0x8868 表 + 104,136,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,199,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,14,0,224,14,0,0,14,0,224,14,0,0,14,0,224,14,0,0,126,0,28,112,0,0,126,0,28,112,0,0,126,0,28,112,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,252,14,7,0,126,0,252,14,7,0,126,0,252,14,7,0,126,0,0,14,56,0,1,248,0,14,56,0,1,248,0,14,56,0,1,248,0,15,192,0,0,0,0,15,192,0,0,0,0,15,192,0,0,0, + // 0x88ab 被 + 171,136,45,48,32,48,0,250,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,254,7,255,255,248,255,254,7,255,255,248,255,254,7,255,255,248,0,14,7,0,112,56,0,14,7,0,112,56,0,14,7,0,112,56,0,112,7,0,113,192,0,112,7,0,113,192,0,112,7,0,113,192,0,113,199,0,112,0,0,113,199,0,112,0,0,113,199,0,112,0,3,254,7,255,255,192,3,254,7,255,255,192,3,254,7,255,255,192,28,113,199,28,1,192,28,113,199,28,1,192,28,113,199,28,1,192,224,112,7,28,1,192,224,112,7,28,1,192,224,112,7,28,1,192,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,3,142,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,113,192,224,0,56,0,113,192,224,0,56,0,113,192,224,0,56, + // 0x88c5 装 + 197,136,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,3,142,63,255,255,248,3,142,63,255,255,248,3,142,63,255,255,248,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,126,0,3,128,0,0,126,0,3,128,0,0,126,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,252,14,7,255,255,192,252,14,7,255,255,192,252,14,7,255,255,192,0,14,56,0,0,0,0,14,56,0,0,0,0,14,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,199,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,15,192,224,14,0,0,15,192,224,14,0,0,15,192,224,14,0,3,241,192,28,112,0,3,241,192,28,112,0,3,241,192,28,112,0,252,1,199,3,240,0,252,1,199,3,240,0,252,1,199,3,240,0,0,1,248,0,15,248,0,1,248,0,15,248,0,1,248,0,15,248,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0, + // 0x88dd 裝 + 221,136,45,48,32,48,0,250,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,255,192,3,128,0,3,255,192,3,128,0,3,255,192,3,128,0,0,1,199,255,255,192,0,1,199,255,255,192,0,1,199,255,255,192,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,255,254,0,3,129,192,255,254,0,3,129,192,255,254,0,28,1,248,0,0,0,28,1,248,0,0,0,28,1,248,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,1,199,0,0,0,0,1,199,0,0,0,0,1,199,0,0,0,0,15,192,224,14,0,0,15,192,224,14,0,0,15,192,224,14,0,3,241,192,28,112,0,3,241,192,28,112,0,3,241,192,28,112,0,252,1,199,3,240,0,252,1,199,3,240,0,252,1,199,3,240,0,0,1,248,0,15,248,0,1,248,0,15,248,0,1,248,0,15,248,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0, + // 0x8907 複 + 7,137,45,48,32,48,0,250,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,0,7,255,255,248,0,0,7,255,255,248,0,0,7,255,255,248,255,254,56,0,0,0,255,254,56,0,0,0,255,254,56,0,0,0,0,15,199,255,255,192,0,15,199,255,255,192,0,15,199,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,3,241,199,0,1,192,3,241,199,0,1,192,3,241,199,0,1,192,28,126,7,255,255,192,28,126,7,255,255,192,28,126,7,255,255,192,224,113,192,224,0,0,224,113,192,224,0,0,224,113,192,224,0,0,0,113,192,255,255,192,0,113,192,255,255,192,0,113,192,255,255,192,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,56,224,112,0,0,112,56,224,112,0,0,112,56,224,112,0,0,112,0,31,128,0,0,112,0,31,128,0,0,112,0,31,128,0,0,112,7,224,126,0,0,112,7,224,126,0,0,112,7,224,126,0,0,113,248,0,1,248,0,113,248,0,1,248,0,113,248,0,1,248, + // 0x89d2 角 + 210,137,39,48,240,48,0,250,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,0,0,0,127,255,255,128,0,127,255,255,128,0,127,255,255,128,3,128,0,3,128,3,128,0,3,128,3,128,0,3,128,28,0,0,28,0,28,0,0,28,0,28,0,0,28,0,227,255,255,255,254,227,255,255,255,254,227,255,255,255,254,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,7,0,14,3,128,7,0,14,3,128,7,0,14,28,0,7,0,14,28,0,7,0,14,28,0,7,0,14,28,0,7,3,142,28,0,7,3,142,28,0,7,3,142,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x8a08 計 + 8,138,45,48,32,48,0,250,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,255,255,248,3,128,0,255,255,248,3,128,0,255,255,248,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,31,255,192,3,128,0,31,255,192,3,128,0,31,255,192,3,128,0,0,0,63,255,255,248,0,0,63,255,255,248,0,0,63,255,255,248,31,255,192,3,128,0,31,255,192,3,128,0,31,255,192,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,31,255,192,3,128,0,31,255,192,3,128,0,31,255,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,31,255,192,3,128,0,31,255,192,3,128,0,31,255,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0x8a0a 訊 + 10,138,45,48,32,48,0,250,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,0,112,63,255,240,0,0,112,63,255,240,0,0,112,63,255,240,0,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,255,255,192,224,112,0,255,255,192,224,112,0,255,255,192,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,31,254,0,224,112,0,31,254,0,224,112,0,31,254,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,31,254,63,255,240,0,31,254,63,255,240,0,31,254,63,255,240,0,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,31,254,0,224,112,0,31,254,0,224,112,0,31,254,0,224,112,0,28,14,0,224,112,0,28,14,0,224,112,0,28,14,0,224,112,0,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,224,112,56,28,14,0,224,14,56,28,14,0,224,14,56,28,14,0,224,14,56,31,254,0,224,14,56,31,254,0,224,14,56,31,254,0,224,14,56,28,14,0,224,1,248,28,14,0,224,1,248,28,14,0,224,1,248,0,0,0,224,0,56,0,0,0,224,0,56,0,0,0,224,0,56, + // 0x8a18 記 + 24,138,45,45,14,48,0,253,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,255,255,248,0,1,192,255,255,248,0,1,192,255,255,248,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,31,255,192,0,1,192,31,255,192,0,1,192,31,255,192,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,31,255,192,255,255,192,31,255,192,255,255,192,31,255,192,255,255,192,0,0,0,224,1,192,0,0,0,224,1,192,0,0,0,224,1,192,31,255,192,224,0,0,31,255,192,224,0,0,31,255,192,224,0,0,28,1,192,224,0,0,28,1,192,224,0,0,28,1,192,224,0,0,28,1,192,224,0,0,28,1,192,224,0,0,28,1,192,224,0,0,28,1,192,224,0,56,28,1,192,224,0,56,28,1,192,224,0,56,31,255,192,224,0,56,31,255,192,224,0,56,31,255,192,224,0,56,28,1,192,31,255,248,28,1,192,31,255,248,28,1,192,31,255,248, + // 0x8a2d 設 + 45,138,45,48,32,48,0,250,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,255,255,248,224,14,0,255,255,248,224,14,0,255,255,248,224,14,0,0,0,0,224,14,0,0,0,0,224,14,0,0,0,0,224,14,0,31,255,199,0,1,248,31,255,199,0,1,248,31,255,199,0,1,248,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,31,255,199,255,255,192,31,255,199,255,255,192,31,255,199,255,255,192,0,0,0,224,1,192,0,0,0,224,1,192,0,0,0,224,1,192,31,255,192,224,1,192,31,255,192,224,1,192,31,255,192,224,1,192,28,1,192,28,14,0,28,1,192,28,14,0,28,1,192,28,14,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,3,128,0,28,1,192,3,128,0,28,1,192,3,128,0,31,255,192,28,112,0,31,255,192,28,112,0,31,255,192,28,112,0,28,1,192,224,14,0,28,1,192,224,14,0,28,1,192,224,14,0,0,0,63,0,1,248,0,0,63,0,1,248,0,0,63,0,1,248, + // 0x8a66 試 + 102,138,45,48,32,48,0,250,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,0,112,0,0,113,192,0,112,0,0,113,192,0,112,0,0,113,192,0,0,0,0,112,56,0,0,0,0,112,56,0,0,0,0,112,56,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,0,0,63,255,255,248,0,0,63,255,255,248,0,0,63,255,255,248,31,254,0,0,112,0,31,254,0,0,112,0,31,254,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,31,254,7,252,112,0,31,254,7,252,112,0,31,254,7,252,112,0,0,0,0,224,112,0,0,0,0,224,112,0,0,0,0,224,112,0,31,254,0,224,112,0,31,254,0,224,112,0,31,254,0,224,112,0,28,14,0,224,112,0,28,14,0,224,112,0,28,14,0,224,112,0,28,14,0,224,14,0,28,14,0,224,14,0,28,14,0,224,14,0,28,14,0,255,142,56,28,14,0,255,142,56,28,14,0,255,142,56,31,254,63,224,14,56,31,254,63,224,14,56,31,254,63,224,14,56,28,14,0,0,1,248,28,14,0,0,1,248,28,14,0,0,1,248,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56, + // 0x8a8d 認 + 141,138,45,45,14,48,0,253,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,255,255,199,28,1,192,255,255,199,28,1,192,255,255,199,28,1,192,0,0,7,28,1,192,0,0,7,28,1,192,0,0,7,28,1,192,31,254,56,224,1,192,31,254,56,224,1,192,31,254,56,224,1,192,0,0,0,224,113,192,0,0,0,224,113,192,0,0,0,224,113,192,31,254,7,0,14,0,31,254,7,0,14,0,31,254,7,0,14,0,0,0,56,28,0,0,0,0,56,28,0,0,0,0,56,28,0,0,31,254,0,3,128,0,31,254,0,3,128,0,31,254,0,3,128,0,28,14,0,227,129,192,28,14,0,227,129,192,28,14,0,227,129,192,28,14,56,224,0,56,28,14,56,224,0,56,28,14,56,224,0,56,28,14,56,224,14,56,28,14,56,224,14,56,28,14,56,224,14,56,31,254,56,224,14,56,31,254,56,224,14,56,31,254,56,224,14,56,28,1,192,31,254,0,28,1,192,31,254,0,28,1,192,31,254,0, + // 0x8aa4 誤 + 164,138,45,48,32,48,0,250,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,0,7,0,1,192,0,0,7,0,1,192,0,0,7,0,1,192,255,255,199,0,1,192,255,255,199,0,1,192,255,255,199,0,1,192,0,0,7,255,255,192,0,0,7,255,255,192,0,0,7,255,255,192,31,254,0,0,0,0,31,254,0,0,0,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,7,255,255,192,31,254,7,255,255,192,31,254,7,255,255,192,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,31,254,0,3,128,0,31,254,0,3,128,0,31,254,0,3,128,0,28,14,63,255,255,248,28,14,63,255,255,248,28,14,63,255,255,248,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,3,128,0,28,14,0,28,112,0,28,14,0,28,112,0,28,14,0,28,112,0,31,254,0,224,14,0,31,254,0,224,14,0,31,254,0,224,14,0,28,14,7,0,1,192,28,14,7,0,1,192,28,14,7,0,1,192,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + // 0x8abf 調 + 191,138,42,48,32,48,0,250,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,0,7,3,129,192,0,0,7,3,129,192,0,0,7,3,129,192,255,255,199,3,129,192,255,255,199,3,129,192,255,255,199,3,129,192,0,0,7,31,241,192,0,0,7,31,241,192,0,0,7,31,241,192,31,254,7,3,129,192,31,254,7,3,129,192,31,254,7,3,129,192,0,0,7,255,255,192,0,0,7,255,255,192,0,0,7,255,255,192,31,254,7,0,1,192,31,254,7,0,1,192,31,254,7,0,1,192,0,0,7,31,241,192,0,0,7,31,241,192,0,0,7,31,241,192,31,254,7,28,113,192,31,254,7,28,113,192,31,254,7,28,113,192,28,14,7,28,113,192,28,14,7,28,113,192,28,14,7,28,113,192,28,14,7,31,241,192,28,14,7,31,241,192,28,14,7,31,241,192,28,14,7,0,1,192,28,14,7,0,1,192,28,14,7,0,1,192,31,254,56,0,1,192,31,254,56,0,1,192,31,254,56,0,1,192,28,14,56,0,113,192,28,14,56,0,113,192,28,14,56,0,113,192,0,1,192,0,14,0,0,1,192,0,14,0,0,1,192,0,14,0, + // 0x8acb 請 + 203,138,45,48,32,48,0,250,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,0,63,255,255,248,0,0,63,255,255,248,0,0,63,255,255,248,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,0,0,7,255,255,192,0,0,7,255,255,192,0,0,7,255,255,192,31,254,0,3,128,0,31,254,0,3,128,0,31,254,0,3,128,0,0,0,63,255,255,248,0,0,63,255,255,248,0,0,63,255,255,248,31,254,0,0,0,0,31,254,0,0,0,0,31,254,0,0,0,0,0,0,7,255,255,192,0,0,7,255,255,192,0,0,7,255,255,192,31,254,7,0,1,192,31,254,7,0,1,192,31,254,7,0,1,192,28,14,7,255,255,192,28,14,7,255,255,192,28,14,7,255,255,192,28,14,7,0,1,192,28,14,7,0,1,192,28,14,7,0,1,192,28,14,7,255,255,192,28,14,7,255,255,192,28,14,7,255,255,192,31,254,7,0,1,192,31,254,7,0,1,192,31,254,7,0,1,192,28,14,7,0,113,192,28,14,7,0,113,192,28,14,7,0,113,192,0,0,7,0,14,0,0,0,7,0,14,0,0,0,7,0,14,0, + // 0x8b70 議 + 112,139,45,48,32,48,0,250,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,0,63,255,255,248,0,0,63,255,255,248,0,0,63,255,255,248,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,0,0,7,255,255,192,0,0,7,255,255,192,0,0,7,255,255,192,31,254,0,3,128,0,31,254,0,3,128,0,31,254,0,3,128,0,0,0,63,255,255,248,0,0,63,255,255,248,0,0,63,255,255,248,31,254,0,28,113,192,31,254,0,28,113,192,31,254,0,28,113,192,0,0,7,224,112,56,0,0,7,224,112,56,0,0,7,224,112,56,31,254,0,224,112,0,31,254,0,224,112,0,31,254,0,224,112,0,28,14,63,255,255,248,28,14,63,255,255,248,28,14,63,255,255,248,28,14,0,224,112,0,28,14,0,224,112,0,28,14,0,224,112,0,28,14,0,252,113,192,28,14,0,252,113,192,28,14,0,252,113,192,31,254,63,224,14,56,31,254,63,224,14,56,31,254,63,224,14,56,28,14,0,224,113,248,28,14,0,224,113,248,28,14,0,224,113,248,0,0,7,227,128,56,0,0,7,227,128,56,0,0,7,227,128,56, + // 0x8b80 讀 + 128,139,45,48,32,48,0,250,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,255,255,199,255,255,192,255,255,199,255,255,192,255,255,199,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,63,255,255,248,31,254,63,255,255,248,31,254,63,255,255,248,0,0,56,28,112,56,0,0,56,28,112,56,0,0,56,28,112,56,31,254,63,255,255,248,31,254,63,255,255,248,31,254,63,255,255,248,0,0,7,0,1,192,0,0,7,0,1,192,0,0,7,0,1,192,31,254,7,255,255,192,31,254,7,255,255,192,31,254,7,255,255,192,28,14,7,0,1,192,28,14,7,0,1,192,28,14,7,0,1,192,28,14,7,255,255,192,28,14,7,255,255,192,28,14,7,255,255,192,28,14,7,0,1,192,28,14,7,0,1,192,28,14,7,0,1,192,31,254,7,255,255,192,31,254,7,255,255,192,31,254,7,255,255,192,28,14,0,224,14,0,28,14,0,224,14,0,28,14,0,224,14,0,0,0,7,0,1,192,0,0,7,0,1,192,0,0,7,0,1,192, + // 0x8b8a 變 + 138,139,45,48,32,48,0,250,3,128,7,0,1,192,3,128,7,0,1,192,3,128,7,0,1,192,28,1,255,252,14,0,28,1,255,252,14,0,28,1,255,252,14,0,224,14,0,0,112,56,224,14,0,0,112,56,224,14,0,0,112,56,255,240,63,227,255,192,255,240,63,227,255,192,255,240,63,227,255,192,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,28,14,63,224,112,56,28,14,63,224,112,56,28,14,63,224,112,56,255,254,0,3,255,248,255,254,0,3,255,248,255,254,0,3,255,248,0,0,63,224,0,0,0,0,63,224,0,0,0,0,63,224,0,0,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,63,227,142,56,227,142,63,227,142,56,227,142,63,227,142,56,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,127,255,255,254,0,0,127,255,255,254,0,0,127,255,255,254,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,0,1,255,252,0,0,0,1,255,252,0,0,0,1,255,252,0,0,0,126,0,3,240,0,0,126,0,3,240,0,0,126,0,3,240,0,255,128,0,0,15,248,255,128,0,0,15,248,255,128,0,0,15,248, + // 0x8cc7 資 + 199,140,45,48,32,48,0,250,28,0,7,0,0,0,28,0,7,0,0,0,28,0,7,0,0,0,3,128,7,255,255,192,3,128,7,255,255,192,3,128,7,255,255,192,0,14,56,28,1,192,0,14,56,28,1,192,0,14,56,28,1,192,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,255,128,0,227,128,0,255,128,0,227,128,0,255,128,0,227,128,0,3,128,7,0,126,0,3,128,7,0,126,0,3,128,7,0,126,0,3,129,248,0,1,248,3,129,248,0,1,248,3,129,248,0,1,248,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x8ddd 距 + 221,141,45,42,252,48,0,253,31,255,199,255,255,248,31,255,199,255,255,248,31,255,199,255,255,248,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,28,1,199,0,0,0,31,255,199,255,255,192,31,255,199,255,255,192,31,255,199,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,28,127,199,0,1,192,28,127,199,0,1,192,28,127,199,0,1,192,28,112,7,0,1,192,28,112,7,0,1,192,28,112,7,0,1,192,28,112,7,255,255,192,28,112,7,255,255,192,28,112,7,255,255,192,28,112,7,0,0,0,28,112,7,0,0,0,28,112,7,0,0,0,28,127,199,0,0,0,28,127,199,0,0,0,28,127,199,0,0,0,255,128,7,0,0,0,255,128,7,0,0,0,255,128,7,0,0,0,0,0,7,255,255,248,0,0,7,255,255,248,0,0,7,255,255,248, + // 0x8eca 車 + 202,142,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0, + // 0x8edf 軟 + 223,142,45,48,32,48,0,250,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,255,255,248,31,255,192,255,255,248,31,255,192,255,255,248,31,255,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,31,255,192,224,14,0,31,255,192,224,14,0,31,255,192,224,14,0,28,113,199,3,128,0,28,113,199,3,128,0,28,113,199,3,128,0,31,255,192,3,128,0,31,255,192,3,128,0,31,255,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,28,113,192,3,128,0,31,255,192,28,112,0,31,255,192,28,112,0,31,255,192,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,255,255,248,28,112,0,255,255,248,28,112,0,255,255,248,28,112,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,56,0,0,56,0,112,56,0,0,56,0,112,56,0,0,56, + // 0x8ef8 軸 + 248,142,42,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,255,255,248,3,128,0,255,255,248,3,128,0,255,255,248,3,128,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,31,255,199,3,129,192,31,255,199,3,129,192,31,255,199,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,31,255,199,3,129,192,31,255,199,3,129,192,31,255,199,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,31,255,199,255,255,192,31,255,199,255,255,192,31,255,199,255,255,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,255,255,255,3,129,192,255,255,255,3,129,192,255,255,255,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192, + // 0x8f09 載 + 9,143,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,31,255,255,3,142,0,31,255,255,3,142,0,31,255,255,3,142,0,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,255,255,255,227,128,0,255,255,255,227,128,0,255,255,255,227,128,0,0,14,0,3,129,192,0,14,0,3,129,192,0,14,0,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,31,255,255,3,129,192,28,14,7,3,129,192,28,14,7,3,129,192,28,14,7,3,129,192,31,255,255,3,142,0,31,255,255,3,142,0,31,255,255,3,142,0,28,14,7,3,142,0,28,14,7,3,142,0,28,14,7,3,142,0,31,255,255,0,112,0,31,255,255,0,112,0,31,255,255,0,112,0,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,255,255,255,227,142,56,255,255,255,227,142,56,255,255,255,227,142,56,0,14,0,28,1,248,0,14,0,28,1,248,0,14,0,28,1,248,0,14,0,224,0,56,0,14,0,224,0,56,0,14,0,224,0,56, + // 0x8f2f 輯 + 47,143,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,255,255,248,224,14,0,255,255,248,224,14,0,255,255,248,224,14,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,255,254,0,31,255,192,0,0,0,31,255,192,0,0,0,31,255,192,0,0,0,28,113,199,255,255,248,28,113,199,255,255,248,28,113,199,255,255,248,31,255,192,224,14,0,31,255,192,224,14,0,31,255,192,224,14,0,28,113,192,255,254,0,28,113,192,255,254,0,28,113,192,255,254,0,31,255,192,224,14,0,31,255,192,224,14,0,31,255,192,224,14,0,0,112,0,255,254,0,0,112,0,255,254,0,0,112,0,255,254,0,255,255,248,224,14,0,255,255,248,224,14,0,255,255,248,224,14,0,0,112,0,224,127,248,0,112,0,224,127,248,0,112,0,224,127,248,0,112,63,255,142,0,0,112,63,255,142,0,0,112,63,255,142,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0, + // 0x8f38 輸 + 56,143,45,48,32,48,0,250,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,0,227,128,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,255,254,56,0,14,0,255,254,56,0,14,0,255,254,56,0,14,0,3,129,199,255,241,248,3,129,199,255,241,248,3,129,199,255,241,248,255,254,0,0,0,0,255,254,0,0,0,0,255,254,0,0,0,0,227,142,63,252,1,192,227,142,63,252,1,192,227,142,63,252,1,192,255,254,56,28,113,192,255,254,56,28,113,192,255,254,56,28,113,192,227,142,56,28,113,192,227,142,56,28,113,192,227,142,56,28,113,192,255,254,63,252,113,192,255,254,63,252,113,192,255,254,63,252,113,192,3,128,56,28,113,192,3,128,56,28,113,192,3,128,56,28,113,192,255,254,56,28,113,192,255,254,56,28,113,192,255,254,56,28,113,192,3,128,63,252,113,192,3,128,63,252,113,192,3,128,63,252,113,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,1,192,3,128,56,28,113,192,3,128,56,28,113,192,3,128,56,28,113,192,3,128,56,252,14,0,3,128,56,252,14,0,3,128,56,252,14,0, + // 0x8f49 轉 + 73,143,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,255,255,199,255,255,192,255,255,199,255,255,192,255,255,199,255,255,192,0,112,7,3,129,192,0,112,7,3,129,192,0,112,7,3,129,192,31,255,199,255,255,192,31,255,199,255,255,192,31,255,199,255,255,192,28,113,199,3,129,192,28,113,199,3,129,192,28,113,199,3,129,192,31,255,199,255,255,192,31,255,199,255,255,192,31,255,199,255,255,192,28,113,192,3,128,56,28,113,192,3,128,56,28,113,192,3,128,56,31,255,199,255,255,248,31,255,199,255,255,248,31,255,199,255,255,248,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,255,255,199,255,255,248,255,255,199,255,255,248,255,255,199,255,255,248,0,112,7,0,14,0,0,112,7,0,14,0,0,112,7,0,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,3,142,0,0,112,0,3,142,0,0,112,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x8fd1 近 + 209,143,45,45,14,48,0,253,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,3,128,0,0,127,192,3,128,0,0,127,192,3,128,0,0,127,192,0,112,7,255,128,0,0,112,7,255,128,0,0,112,7,255,128,0,0,112,7,0,0,0,0,112,7,0,0,0,0,112,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,255,255,248,0,0,7,255,255,248,0,0,7,255,255,248,255,240,7,0,112,0,255,240,7,0,112,0,255,240,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,113,192,0,112,0,0,113,192,0,112,0,0,113,192,0,112,0,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x8fd4 返 + 212,143,45,45,14,48,0,253,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,3,128,0,3,255,192,3,128,0,3,255,192,3,128,0,3,255,192,0,112,63,252,0,0,0,112,63,252,0,0,0,112,63,252,0,0,0,112,56,0,0,0,0,112,56,0,0,0,0,112,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,63,255,255,192,0,0,63,255,255,192,0,0,63,255,255,192,255,240,56,0,1,192,255,240,56,0,1,192,255,240,56,0,1,192,0,112,56,224,14,0,0,112,56,224,14,0,0,112,56,224,14,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,28,112,0,0,112,56,28,112,0,0,112,56,28,112,0,0,113,192,224,14,0,0,113,192,224,14,0,0,113,192,224,14,0,0,113,199,0,1,192,0,113,199,0,1,192,0,113,199,0,1,192,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x9000 退 + 0,144,45,45,14,48,0,253,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,56,0,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,0,0,56,0,14,0,255,240,63,255,254,0,255,240,63,255,254,0,255,240,63,255,254,0,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,28,1,192,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,0,112,0,0,112,56,224,14,0,0,112,56,224,14,0,0,112,56,224,14,0,0,112,63,0,1,192,0,112,63,0,1,192,0,112,63,0,1,192,0,112,56,0,1,192,0,112,56,0,1,192,0,112,56,0,1,192,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x901f 速 + 31,144,45,45,14,48,0,253,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,56,28,14,0,0,0,56,28,14,0,0,0,56,28,14,0,255,240,56,28,14,0,255,240,56,28,14,0,255,240,56,28,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,0,255,128,0,0,112,0,255,128,0,0,112,0,255,128,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,7,28,112,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x9023 連 + 35,144,45,45,14,48,0,253,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,3,143,255,255,255,248,3,143,255,255,255,248,3,143,255,255,255,248,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,1,255,255,255,192,0,1,255,255,255,192,0,1,255,255,255,192,0,1,192,28,1,192,0,1,192,28,1,192,0,1,192,28,1,192,255,129,255,255,255,192,255,129,255,255,255,192,255,129,255,255,255,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,192,28,1,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,143,255,255,255,248,3,143,255,255,255,248,3,143,255,255,255,248,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,28,112,0,28,0,0,28,112,0,28,0,0,28,112,0,28,0,0,224,15,255,255,255,248,224,15,255,255,255,248,224,15,255,255,255,248, + // 0x9032 進 + 50,144,45,45,14,48,0,253,0,0,7,28,0,0,0,0,7,28,0,0,0,0,7,28,0,0,3,128,7,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,1,248,3,128,0,0,1,248,3,128,0,0,1,248,3,128,0,0,14,63,255,255,192,0,14,63,255,255,192,0,14,63,255,255,192,255,240,56,3,128,0,255,240,56,3,128,0,255,240,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,63,255,255,192,0,112,63,255,255,192,0,112,63,255,255,192,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,56,0,0,0,0,112,56,0,0,0,0,112,56,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,3,142,0,0,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x904b 運 + 75,144,45,42,252,48,0,253,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,0,113,192,28,1,192,0,113,192,28,1,192,0,113,192,28,1,192,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,63,255,254,0,0,0,63,255,254,0,0,0,63,255,254,0,255,240,56,28,14,0,255,240,56,28,14,0,255,240,56,28,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,56,28,14,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,142,0,28,0,0,3,142,0,28,0,0,3,142,0,28,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x9054 達 + 84,144,45,45,14,48,0,253,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,1,255,255,255,192,0,1,255,255,255,192,0,1,255,255,255,192,0,0,7,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,255,240,0,227,128,0,255,240,0,227,128,0,255,240,0,227,128,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,63,255,254,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,113,255,255,255,192,0,113,255,255,255,192,0,113,255,255,255,192,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,3,142,0,28,0,0,3,142,0,28,0,0,3,142,0,28,0,0,28,1,255,255,255,248,28,1,255,255,255,248,28,1,255,255,255,248, + // 0x9078 選 + 120,144,45,45,14,48,0,253,0,15,255,3,255,192,0,15,255,3,255,192,0,15,255,3,255,192,28,14,7,3,129,192,28,14,7,3,129,192,28,14,7,3,129,192,3,143,255,3,255,192,3,143,255,3,255,192,3,143,255,3,255,192,3,142,0,227,128,56,3,142,0,227,128,56,3,142,0,227,128,56,0,1,255,224,127,248,0,1,255,224,127,248,0,1,255,224,127,248,0,0,7,0,112,0,0,0,7,0,112,0,0,0,7,0,112,0,255,129,255,255,255,192,255,129,255,255,255,192,255,129,255,255,255,192,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,143,255,255,255,248,3,143,255,255,255,248,3,143,255,255,255,248,3,128,7,0,112,0,3,128,7,0,112,0,3,128,7,0,112,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,129,192,0,1,192,3,129,192,0,1,192,3,129,192,0,1,192,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,224,15,255,255,255,248,224,15,255,255,255,248,224,15,255,255,255,248, + // 0x9084 還 + 132,144,45,42,252,48,0,253,28,1,255,255,255,192,28,1,255,255,255,192,28,1,255,255,255,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,192,227,129,192,3,129,255,255,255,192,3,129,255,255,255,192,3,129,255,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,255,248,0,15,255,255,255,248,0,15,255,255,255,248,255,128,0,0,0,0,255,128,0,0,0,0,255,128,0,0,0,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,56,0,14,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,63,255,254,0,3,128,7,28,1,192,3,128,7,28,1,192,3,128,7,28,1,192,3,128,63,3,142,0,3,128,63,3,142,0,3,128,63,3,142,0,3,143,199,224,112,0,3,143,199,224,112,0,3,143,199,224,112,0,28,112,7,0,14,0,28,112,7,0,14,0,28,112,7,0,14,0,224,15,255,255,255,248,224,15,255,255,255,248,224,15,255,255,255,248, + // 0x908a 邊 + 138,144,45,48,32,48,0,250,0,0,0,224,0,0,0,0,0,224,0,0,0,0,0,224,0,0,28,1,255,255,254,0,28,1,255,255,254,0,28,1,255,255,254,0,3,129,199,28,14,0,3,129,199,28,14,0,3,129,199,28,14,0,3,129,192,227,142,0,3,129,192,227,142,0,3,129,192,227,142,0,0,1,255,255,254,0,0,1,255,255,254,0,0,1,255,255,254,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,255,143,255,255,255,192,255,143,255,255,255,192,255,143,255,255,255,192,3,142,56,0,113,192,3,142,56,0,113,192,3,142,56,0,113,192,3,129,192,224,14,0,3,129,192,224,14,0,3,129,192,224,14,0,3,142,63,255,241,192,3,142,63,255,241,192,3,142,63,255,241,192,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,0,0,0,3,128,7,255,240,0,3,128,7,255,240,0,3,128,7,255,240,0,3,128,56,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,3,129,192,3,240,0,3,129,192,3,240,0,3,129,192,3,240,0,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,224,15,255,255,255,248,224,15,255,255,255,248,224,15,255,255,255,248, + // 0x90e8 部 + 232,144,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,14,0,3,255,248,0,14,0,3,255,248,0,14,0,3,255,248,31,255,255,227,128,56,31,255,255,227,128,56,31,255,255,227,128,56,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,3,128,7,3,129,192,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,255,255,255,255,129,192,255,255,255,255,129,192,255,255,255,255,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,129,192,0,0,0,3,128,56,0,0,0,3,128,56,0,0,0,3,128,56,3,255,255,3,128,56,3,255,255,3,128,56,3,255,255,3,128,56,3,128,7,3,128,56,3,128,7,3,128,56,3,128,7,3,128,56,3,128,7,3,241,192,3,128,7,3,241,192,3,128,7,3,241,192,3,128,7,3,142,0,3,128,7,3,142,0,3,128,7,3,142,0,3,255,255,3,128,0,3,255,255,3,128,0,3,255,255,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,3,128,7,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0, + // 0x91cb 釋 + 203,145,45,48,32,48,0,250,0,15,192,0,0,0,0,15,192,0,0,0,0,15,192,0,0,0,255,240,7,255,255,192,255,240,7,255,255,192,255,240,7,255,255,192,0,112,7,28,113,192,0,112,7,28,113,192,0,112,7,28,113,192,28,113,199,255,255,192,28,113,199,255,255,192,28,113,199,255,255,192,3,254,0,3,128,0,3,254,0,3,128,0,3,254,0,3,128,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,3,240,0,224,14,0,3,240,0,224,14,0,3,240,0,224,14,0,3,254,0,28,112,0,3,254,0,28,112,0,3,254,0,28,112,0,28,113,199,255,255,192,28,113,199,255,255,192,28,113,199,255,255,192,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,224,112,63,255,255,248,224,112,63,255,255,248,224,112,63,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0, + // 0x91cd 重 + 205,145,45,45,14,48,0,253,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,255,254,0,0,0,0,255,254,0,0,0,0,255,254,0,3,255,255,0,0,0,3,255,255,0,0,0,3,255,255,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248, + // 0x91cf 量 + 207,145,45,45,14,48,0,250,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192, + // 0x91dd 針 + 221,145,45,48,32,48,0,250,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,3,129,192,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,28,0,56,3,128,0,227,255,192,3,128,0,227,255,192,3,128,0,227,255,192,3,128,0,0,112,63,255,255,248,0,112,63,255,255,248,0,112,63,255,255,248,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,255,255,248,3,128,0,255,255,248,3,128,0,255,255,248,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,224,113,192,3,128,0,224,113,192,3,128,0,224,113,192,3,128,0,28,126,0,3,128,0,28,126,0,3,128,0,28,126,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,0,127,248,3,128,0,0,127,248,3,128,0,0,127,248,3,128,0,255,240,0,3,128,0,255,240,0,3,128,0,255,240,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0, + // 0x9215 鈕 + 21,146,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,3,142,0,28,14,0,3,142,0,28,14,0,3,142,0,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,28,0,0,28,14,0,28,0,0,28,14,0,28,0,0,28,14,0,227,254,0,28,14,0,227,254,0,28,14,0,227,254,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,7,255,254,0,0,112,7,255,254,0,0,112,7,255,254,0,255,255,192,224,14,0,255,255,192,224,14,0,255,255,192,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,0,112,0,224,14,0,224,113,192,224,14,0,224,113,192,224,14,0,224,113,192,224,14,0,28,126,0,224,14,0,28,126,0,224,14,0,28,126,0,224,14,0,28,112,0,224,14,0,28,112,0,224,14,0,28,112,0,224,14,0,0,127,192,224,14,0,0,127,192,224,14,0,0,127,192,224,14,0,255,128,63,255,255,248,255,128,63,255,255,248,255,128,63,255,255,248,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + // 0x932f 錯 + 47,147,45,48,32,48,0,250,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,3,142,0,28,14,0,3,142,0,28,14,0,3,142,0,28,14,0,3,129,199,255,255,248,3,129,199,255,255,248,3,129,199,255,255,248,28,0,56,28,14,0,28,0,56,28,14,0,28,0,56,28,14,0,227,255,192,28,14,0,227,255,192,28,14,0,227,255,192,28,14,0,0,112,7,255,255,248,0,112,7,255,255,248,0,112,7,255,255,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,255,255,248,255,255,192,255,255,248,255,255,192,255,255,248,255,255,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,224,113,192,224,1,192,224,113,192,224,1,192,224,113,192,224,1,192,28,126,0,255,255,192,28,126,0,255,255,192,28,126,0,255,255,192,28,112,0,224,1,192,28,112,0,224,1,192,28,112,0,224,1,192,0,127,248,224,1,192,0,127,248,224,1,192,0,127,248,224,1,192,255,240,0,255,255,192,255,240,0,255,255,192,255,240,0,255,255,192,28,0,0,224,1,192,28,0,0,224,1,192,28,0,0,224,1,192, + // 0x9375 鍵 + 117,147,45,45,14,48,0,253,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,28,113,255,31,255,192,28,113,255,31,255,192,28,113,255,31,255,192,28,14,7,0,113,192,28,14,7,0,113,192,28,14,7,0,113,192,224,0,7,255,255,248,224,0,7,255,255,248,224,0,7,255,255,248,31,240,56,0,113,192,31,240,56,0,113,192,31,240,56,0,113,192,3,128,56,31,255,192,3,128,56,31,255,192,3,128,56,31,255,192,3,129,255,0,112,0,3,129,255,0,112,0,3,129,255,0,112,0,255,240,7,31,255,192,255,240,7,31,255,192,255,240,7,31,255,192,3,129,199,0,112,0,3,129,199,0,112,0,3,129,199,0,112,0,227,129,199,255,255,248,227,129,199,255,255,248,227,129,199,255,255,248,31,240,56,0,112,0,31,240,56,0,112,0,31,240,56,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,3,128,56,0,112,0,3,241,199,0,0,0,3,241,199,0,0,0,3,241,199,0,0,0,252,14,0,255,255,248,252,14,0,255,255,248,252,14,0,255,255,248, + // 0x9577 長 + 119,149,45,45,14,48,0,250,0,15,255,255,254,0,0,15,255,255,254,0,0,15,255,255,254,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,15,255,255,240,0,0,15,255,255,240,0,0,15,255,255,240,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14,0,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,112,56,0,0,0,0,112,56,0,0,0,0,112,56,0,0,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,227,128,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,0,28,0,0,0,112,56,3,128,0,0,112,56,3,128,0,0,112,56,3,128,0,0,113,192,0,126,0,0,113,192,0,126,0,0,113,192,0,126,0,0,126,0,0,1,248,0,126,0,0,1,248,0,126,0,0,1,248,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0, + // 0x9589 閉 + 137,149,39,45,225,48,3,250,255,254,0,255,254,255,254,0,255,254,255,254,0,255,254,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,255,254,0,255,254,255,254,0,255,254,255,254,0,255,254,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,255,254,0,255,254,255,254,0,255,254,255,254,0,255,254,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,0,7,0,14,224,127,255,255,142,224,127,255,255,142,224,127,255,255,142,224,0,63,0,14,224,0,63,0,14,224,0,63,0,14,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,14,7,0,14,224,14,7,0,14,224,14,7,0,14,224,112,7,0,14,224,112,7,0,14,224,112,7,0,14,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,0,56,3,142,224,0,56,3,142,224,0,56,3,142,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112, + // 0x958b 開 + 139,149,36,45,225,48,3,250,255,254,7,255,240,255,254,7,255,240,255,254,7,255,240,224,14,7,0,112,224,14,7,0,112,224,14,7,0,112,255,254,7,255,240,255,254,7,255,240,255,254,7,255,240,224,14,7,0,112,224,14,7,0,112,224,14,7,0,112,255,254,7,255,240,255,254,7,255,240,255,254,7,255,240,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,127,255,224,112,224,127,255,224,112,224,127,255,224,112,224,14,7,0,112,224,14,7,0,112,224,14,7,0,112,224,14,7,0,112,224,14,7,0,112,224,14,7,0,112,227,255,255,252,112,227,255,255,252,112,227,255,255,252,112,224,14,7,0,112,224,14,7,0,112,224,14,7,0,112,224,14,7,0,112,224,14,7,0,112,224,14,7,0,112,224,112,7,0,112,224,112,7,0,112,224,112,7,0,112,227,128,7,28,112,227,128,7,28,112,227,128,7,28,112,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128, + // 0x9593 間 + 147,149,36,45,225,48,3,250,255,254,7,255,240,255,254,7,255,240,255,254,7,255,240,224,14,7,0,112,224,14,7,0,112,224,14,7,0,112,255,254,7,255,240,255,254,7,255,240,255,254,7,255,240,224,14,7,0,112,224,14,7,0,112,224,14,7,0,112,255,254,7,255,240,255,254,7,255,240,255,254,7,255,240,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,127,255,224,112,224,127,255,224,112,224,127,255,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,127,255,224,112,224,127,255,224,112,224,127,255,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,127,255,224,112,224,127,255,224,112,224,127,255,224,112,224,112,0,224,112,224,112,0,224,112,224,112,0,224,112,224,0,0,0,112,224,0,0,0,112,224,0,0,0,112,224,0,0,28,112,224,0,0,28,112,224,0,0,28,112,224,0,0,3,128,224,0,0,3,128,224,0,0,3,128, + // 0x95dc 關 + 220,149,39,48,240,48,3,250,255,254,0,255,254,255,254,0,255,254,255,254,0,255,254,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,255,254,0,255,254,255,254,0,255,254,255,254,0,255,254,224,14,0,224,14,224,14,0,224,14,224,14,0,224,14,255,254,0,255,254,255,254,0,255,254,255,254,0,255,254,224,112,0,224,14,224,112,0,224,14,224,112,0,224,14,227,129,199,3,142,227,129,199,3,142,227,129,199,3,142,227,254,7,252,14,227,254,7,252,14,227,254,7,252,14,224,113,192,227,142,224,113,192,227,142,224,113,192,227,142,227,255,199,255,142,227,255,199,255,142,227,255,199,255,142,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,227,129,199,3,142,227,129,199,3,142,227,129,199,3,142,227,255,199,255,142,227,255,199,255,142,227,255,199,255,142,224,1,199,0,14,224,1,199,0,14,224,1,199,0,14,224,14,7,3,142,224,14,7,3,142,224,14,7,3,142,224,112,7,0,112,224,112,7,0,112,224,112,7,0,112, + // 0x964d 降 + 77,150,42,48,32,48,3,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,254,7,0,0,0,255,254,7,0,0,0,255,254,7,0,0,0,224,14,7,255,254,0,224,14,7,255,254,0,224,14,7,255,254,0,224,112,56,0,112,0,224,112,56,0,112,0,224,112,56,0,112,0,224,113,199,3,128,0,224,113,199,3,128,0,224,113,199,3,128,0,227,128,0,252,0,0,227,128,0,252,0,0,227,128,0,252,0,0,224,112,63,3,240,0,224,112,63,3,240,0,224,112,63,3,240,0,224,127,192,28,15,192,224,127,192,28,15,192,224,127,192,28,15,192,224,14,0,28,0,0,224,14,0,28,0,0,224,14,0,28,0,0,224,14,63,255,254,0,224,14,63,255,254,0,224,14,63,255,254,0,224,14,0,28,0,0,224,14,0,28,0,0,224,14,0,28,0,0,252,113,192,28,0,0,252,113,192,28,0,0,252,113,192,28,0,0,227,129,255,255,255,192,227,129,255,255,255,192,227,129,255,255,255,192,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0,224,0,0,28,0,0, + // 0x9664 除 + 100,150,42,45,14,48,3,250,255,240,0,224,0,0,255,240,0,224,0,0,255,240,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,227,128,7,28,0,0,227,128,7,28,0,0,227,128,7,28,0,0,227,128,56,3,128,0,227,128,56,3,128,0,227,128,56,3,128,0,252,1,192,0,112,0,252,1,192,0,112,0,252,1,192,0,112,0,227,142,63,255,143,192,227,142,63,255,143,192,227,142,63,255,143,192,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,113,255,255,254,0,224,113,255,255,254,0,224,113,255,255,254,0,252,112,0,224,0,0,252,112,0,224,0,0,252,112,0,224,0,0,227,128,56,227,128,0,227,128,56,227,128,0,227,128,56,227,128,0,224,1,192,224,112,0,224,1,192,224,112,0,224,1,192,224,112,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,0,56,224,14,0,224,0,56,224,14,0,224,0,56,224,14,0,224,0,7,0,0,0,224,0,7,0,0,0,224,0,7,0,0,0, + // 0x968e 階 + 142,150,42,48,32,48,3,250,0,0,56,3,128,0,0,0,56,3,128,0,0,0,56,3,128,0,255,254,56,3,129,192,255,254,56,3,129,192,255,254,56,3,129,192,224,14,63,227,142,0,224,14,63,227,142,0,224,14,63,227,142,0,224,112,56,3,240,0,224,112,56,3,240,0,224,112,56,3,240,0,224,112,56,227,129,192,224,112,56,227,129,192,224,112,56,227,129,192,227,128,63,3,129,192,227,128,63,3,129,192,227,128,63,3,129,192,224,112,56,28,127,192,224,112,56,28,127,192,224,112,56,28,127,192,224,112,0,224,0,0,224,112,0,224,0,0,224,112,0,224,0,0,224,14,63,255,254,0,224,14,63,255,254,0,224,14,63,255,254,0,224,14,56,0,14,0,224,14,56,0,14,0,224,14,56,0,14,0,224,14,56,0,14,0,224,14,56,0,14,0,224,14,56,0,14,0,252,112,63,255,254,0,252,112,63,255,254,0,252,112,63,255,254,0,227,128,56,0,14,0,227,128,56,0,14,0,227,128,56,0,14,0,224,0,56,0,14,0,224,0,56,0,14,0,224,0,56,0,14,0,224,0,63,255,254,0,224,0,63,255,254,0,224,0,63,255,254,0,224,0,56,0,14,0,224,0,56,0,14,0,224,0,56,0,14,0, + // 0x96d9 雙 + 217,150,45,48,32,48,0,250,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,255,255,31,255,248,3,255,255,31,255,248,3,255,255,31,255,248,31,129,192,252,14,0,31,129,192,252,14,0,31,129,192,252,14,0,227,255,255,31,255,248,227,255,255,31,255,248,227,255,255,31,255,248,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,255,255,31,255,248,3,255,255,31,255,248,3,255,255,31,255,248,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,255,255,31,255,248,3,255,255,31,255,248,3,255,255,31,255,248,3,128,0,28,0,0,3,128,0,28,0,0,3,128,0,28,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,0,63,224,0,0,0,127,192,31,240,0,0,127,192,31,240,0,0,127,192,31,240,0,255,128,0,0,15,248,255,128,0,0,15,248,255,128,0,0,15,248, + // 0x96e2 離 + 226,150,42,48,32,48,3,250,3,128,0,28,112,0,3,128,0,28,112,0,3,128,0,28,112,0,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,255,255,248,224,0,0,255,255,248,224,0,0,255,255,248,224,0,0,3,142,0,255,255,192,3,142,0,255,255,192,3,142,0,255,255,192,224,112,63,224,112,0,224,112,63,224,112,0,224,112,63,224,112,0,227,142,56,224,112,0,227,142,56,224,112,0,227,142,56,224,112,0,224,0,56,255,255,192,224,0,56,255,255,192,224,0,56,255,255,192,255,255,248,224,112,0,255,255,248,224,112,0,255,255,248,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,0,112,0,224,112,0,255,255,248,255,255,192,255,255,248,255,255,192,255,255,248,255,255,192,227,128,56,224,112,0,227,128,56,224,112,0,227,128,56,224,112,0,227,142,56,224,112,0,227,142,56,224,112,0,227,142,56,224,112,0,227,254,56,224,112,0,227,254,56,224,112,0,227,254,56,224,112,0,224,0,56,255,255,192,224,0,56,255,255,192,224,0,56,255,255,192,224,14,56,224,0,0,224,14,56,224,0,0,224,14,56,224,0,0,224,1,192,224,0,0,224,1,192,224,0,0,224,1,192,224,0,0, + // 0x96fb 電 + 251,150,45,48,32,48,0,250,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,248,31,255,255,255,255,248,31,255,255,255,255,248,28,0,7,0,0,56,28,0,7,0,0,56,28,0,7,0,0,56,224,127,199,31,241,192,224,127,199,31,241,192,224,127,199,31,241,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,127,199,31,240,0,0,127,199,31,240,0,0,127,199,31,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,56,0,0,7,0,0,56,0,0,7,0,0,56,0,0,7,0,0,56,0,0,7,0,0,56,0,0,7,0,0,56,0,0,0,255,255,248,0,0,0,255,255,248,0,0,0,255,255,248, + // 0x9752 青 + 82,151,45,48,32,48,0,250,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,28,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0, + // 0x975e 非 + 94,151,45,48,32,48,0,250,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,255,255,192,31,255,248,255,255,192,31,255,248,255,255,192,31,255,248,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,31,255,192,31,255,192,31,255,192,31,255,192,31,255,192,31,255,192,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,255,255,192,31,255,248,255,255,192,31,255,248,255,255,192,31,255,248,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0, + // 0x9762 面 + 98,151,45,45,14,48,0,250,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,0,1,192,0,0,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,255,252,14,0,3,129,255,252,14,0,3,129,255,252,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,255,252,14,0,3,129,255,252,14,0,3,129,255,252,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0, + // 0x9805 項 + 5,152,45,45,14,48,0,250,0,0,7,255,255,248,0,0,7,255,255,248,0,0,7,255,255,248,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,255,255,192,28,0,0,255,255,192,28,0,0,255,255,192,28,0,0,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,255,255,192,0,112,7,0,1,192,0,112,7,0,1,192,0,112,7,0,1,192,0,127,199,0,1,192,0,127,199,0,1,192,0,127,199,0,1,192,255,128,7,255,255,192,255,128,7,255,255,192,255,128,7,255,255,192,28,0,0,224,14,0,28,0,0,224,14,0,28,0,0,224,14,0,0,0,7,0,1,192,0,0,7,0,1,192,0,0,7,0,1,192,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + // 0x9810 預 + 16,152,45,45,14,48,0,250,31,255,192,255,255,248,31,255,192,255,255,248,31,255,192,255,255,248,0,1,192,0,112,0,0,1,192,0,112,0,0,1,192,0,112,0,3,142,0,3,128,0,3,142,0,3,128,0,3,142,0,3,128,0,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,14,0,224,1,192,0,14,0,224,1,192,0,14,0,224,1,192,255,255,248,224,1,192,255,255,248,224,1,192,255,255,248,224,1,192,0,112,56,255,255,192,0,112,56,255,255,192,0,112,56,255,255,192,0,113,192,224,1,192,0,113,192,224,1,192,0,113,192,224,1,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,255,255,192,0,112,0,28,14,0,0,112,0,28,14,0,0,112,0,28,14,0,28,112,0,224,1,192,28,112,0,224,1,192,28,112,0,224,1,192,3,128,7,0,0,56,3,128,7,0,0,56,3,128,7,0,0,56, + // 0x984d 額 + 77,152,45,48,32,48,0,250,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0,0,112,0,255,255,248,0,112,0,255,255,248,0,112,0,255,255,248,255,255,248,0,112,0,255,255,248,0,112,0,255,255,248,0,112,0,224,0,56,3,128,0,224,0,56,3,128,0,224,0,56,3,128,0,3,128,0,255,255,192,3,128,0,255,255,192,3,128,0,255,255,192,3,255,192,224,1,192,3,255,192,224,1,192,3,255,192,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,227,142,0,255,255,192,227,142,0,255,255,192,227,142,0,255,255,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,3,142,0,255,255,192,3,142,0,255,255,192,3,142,0,255,255,192,28,1,192,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,255,255,248,224,1,192,255,255,248,224,1,192,255,255,248,224,1,192,28,1,192,255,255,192,28,1,192,255,255,192,28,1,192,255,255,192,28,1,192,28,14,0,28,1,192,28,14,0,28,1,192,28,14,0,31,255,192,224,1,192,31,255,192,224,1,192,31,255,192,224,1,192,28,1,199,0,0,56,28,1,199,0,0,56,28,1,199,0,0,56, + // 0x985e 類 + 94,152,45,48,32,48,0,250,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,224,112,56,255,255,248,224,112,56,255,255,248,224,112,56,255,255,248,28,113,192,0,112,0,28,113,192,0,112,0,28,113,192,0,112,0,255,255,248,3,128,0,255,255,248,3,128,0,255,255,248,3,128,0,3,240,0,255,255,192,3,240,0,255,255,192,3,240,0,255,255,192,28,113,192,224,1,192,28,113,192,224,1,192,28,113,192,224,1,192,224,112,56,224,1,192,224,112,56,224,1,192,224,112,56,224,1,192,0,0,0,255,255,192,0,0,0,255,255,192,0,0,0,255,255,192,0,113,192,224,1,192,0,113,192,224,1,192,0,113,192,224,1,192,0,112,56,255,255,192,0,112,56,255,255,192,0,112,56,255,255,192,255,255,248,224,1,192,255,255,248,224,1,192,255,255,248,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,0,112,0,224,1,192,3,142,0,255,255,192,3,142,0,255,255,192,3,142,0,255,255,192,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,28,1,192,224,1,192,28,1,192,224,1,192,28,1,192,224,1,192,224,0,7,0,0,56,224,0,7,0,0,56,224,0,7,0,0,56, + // 0x98a8 風 + 168,152,45,45,14,48,0,250,3,255,255,255,254,0,3,255,255,255,254,0,3,255,255,255,254,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,255,142,0,3,128,0,255,142,0,3,128,0,255,142,0,3,143,255,0,14,0,3,143,255,0,14,0,3,143,255,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,128,7,0,14,0,3,143,255,255,142,0,3,143,255,255,142,0,3,143,255,255,142,0,3,142,7,3,142,0,3,142,7,3,142,0,3,142,7,3,142,0,3,142,7,3,142,0,3,142,7,3,142,0,3,142,7,3,142,0,3,143,255,255,142,0,3,143,255,255,142,0,3,143,255,255,142,0,3,142,7,0,14,0,3,142,7,0,14,0,3,142,7,0,14,0,3,128,7,28,14,56,3,128,7,28,14,56,3,128,7,28,14,56,3,128,7,255,142,56,3,128,7,255,142,56,3,128,7,255,142,56,28,127,248,3,142,56,28,127,248,3,142,56,28,127,248,3,142,56,28,14,0,0,1,248,28,14,0,0,1,248,28,14,0,0,1,248,224,0,0,0,0,56,224,0,0,0,0,56,224,0,0,0,0,56, + // 0x98fd 飽 + 253,152,45,48,32,48,0,250,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,14,0,28,0,0,0,113,192,255,255,192,0,113,192,255,255,192,0,113,192,255,255,192,0,112,56,224,1,192,0,112,56,224,1,192,0,112,56,224,1,192,3,142,7,0,1,192,3,142,7,0,1,192,3,142,7,0,1,192,31,255,248,255,241,192,31,255,248,255,241,192,31,255,248,255,241,192,227,128,56,224,113,192,227,128,56,224,113,192,227,128,56,224,113,192,3,255,248,224,113,192,3,255,248,224,113,192,3,255,248,224,113,192,3,128,56,255,241,192,3,128,56,255,241,192,3,128,56,255,241,192,3,255,248,224,1,192,3,255,248,224,1,192,3,255,248,224,1,192,3,128,0,224,113,192,3,128,0,224,113,192,3,128,0,224,113,192,3,142,0,224,14,0,3,142,0,224,14,0,3,142,0,224,14,0,3,129,192,224,0,56,3,129,192,224,0,56,3,129,192,224,0,56,3,142,56,224,0,56,3,142,56,224,0,56,3,142,56,224,0,56,3,240,56,31,255,248,3,240,56,31,255,248,3,240,56,31,255,248,3,128,0,0,0,0,3,128,0,0,0,0,3,128,0,0,0,0, + // 0x9918 餘 + 24,153,45,48,32,48,0,250,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,14,0,0,112,0,0,113,192,3,142,0,0,113,192,3,142,0,0,113,192,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,0,112,56,3,142,0,3,142,7,28,1,192,3,142,7,28,1,192,3,142,7,28,1,192,31,255,248,227,254,56,31,255,248,227,254,56,31,255,248,227,254,56,227,128,56,0,112,0,227,128,56,0,112,0,227,128,56,0,112,0,3,255,248,0,112,0,3,255,248,0,112,0,3,255,248,0,112,0,3,128,56,255,255,248,3,128,56,255,255,248,3,128,56,255,255,248,3,255,248,0,112,0,3,255,248,0,112,0,3,255,248,0,112,0,3,128,0,28,126,0,3,128,0,28,126,0,3,128,0,28,126,0,3,142,0,28,113,192,3,142,0,28,113,192,3,142,0,28,113,192,3,129,192,224,112,56,3,129,192,224,112,56,3,129,192,224,112,56,3,142,63,0,112,56,3,142,63,0,112,56,3,142,63,0,112,56,3,240,56,28,112,0,3,240,56,28,112,0,3,240,56,28,112,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + // 0x99ac 馬 + 172,153,39,45,225,48,0,250,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,3,255,255,255,240,3,255,255,255,240,3,255,255,255,240,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,3,255,255,255,240,3,255,255,255,240,3,255,255,255,240,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,3,128,7,0,0,3,255,255,255,254,3,255,255,255,254,3,255,255,255,254,0,0,0,0,14,0,0,0,0,14,0,0,0,0,14,0,112,56,28,14,0,112,56,28,14,0,112,56,28,14,28,14,7,3,142,28,14,7,3,142,28,14,7,3,142,28,14,7,3,142,28,14,7,3,142,28,14,7,3,142,224,0,0,0,14,224,0,0,0,14,224,0,0,0,14,0,0,0,28,112,0,0,0,28,112,0,0,0,28,112,0,0,0,3,128,0,0,0,3,128,0,0,0,3,128, + // 0x9a45 驅 + 69,154,45,45,14,48,0,250,255,254,63,255,255,248,255,254,63,255,255,248,255,254,63,255,255,248,227,128,56,0,0,0,227,128,56,0,0,0,227,128,56,0,0,0,255,254,56,31,255,192,255,254,56,31,255,192,255,254,56,31,255,192,227,128,56,28,1,192,227,128,56,28,1,192,227,128,56,28,1,192,255,254,56,28,1,192,255,254,56,28,1,192,255,254,56,28,1,192,227,128,56,31,255,192,227,128,56,31,255,192,227,128,56,31,255,192,227,128,56,0,0,0,227,128,56,0,0,0,227,128,56,0,0,0,255,254,56,255,143,248,255,254,56,255,143,248,255,254,56,255,143,248,0,14,56,227,142,56,0,14,56,227,142,56,0,14,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,227,142,56,255,143,248,227,142,56,255,143,248,227,142,56,255,143,248,224,14,56,0,0,0,224,14,56,0,0,0,224,14,56,0,0,0,0,14,63,255,255,248,0,14,63,255,255,248,0,14,63,255,255,248,3,240,0,0,0,0,3,240,0,0,0,0,3,240,0,0,0,0, + // 0x9ad4 體 + 212,154,45,48,32,48,0,250,0,0,0,28,112,0,0,0,0,28,112,0,0,0,0,28,112,0,31,255,199,255,255,192,31,255,199,255,255,192,31,255,199,255,255,192,28,1,199,28,113,192,28,1,199,28,113,192,28,1,199,28,113,192,31,241,199,255,255,192,31,241,199,255,255,192,31,241,199,255,255,192,28,113,199,28,113,192,28,113,199,28,113,192,28,113,199,28,113,192,255,255,255,255,255,192,255,255,255,255,255,192,255,255,255,255,255,192,224,0,56,0,0,0,224,0,56,0,0,0,224,0,56,0,0,0,31,255,199,255,255,192,31,255,199,255,255,192,31,255,199,255,255,192,28,1,192,0,0,0,28,1,192,0,0,0,28,1,192,0,0,0,31,255,199,255,255,192,31,255,199,255,255,192,31,255,199,255,255,192,28,1,199,0,1,192,28,1,199,0,1,192,28,1,199,0,1,192,31,255,199,255,255,192,31,255,199,255,255,192,31,255,199,255,255,192,28,1,192,224,14,0,28,1,192,224,14,0,28,1,192,224,14,0,28,1,192,28,112,0,28,1,192,28,112,0,28,1,192,28,112,0,28,113,255,255,255,248,28,113,255,255,255,248,28,113,255,255,255,248,28,14,0,0,0,0,28,14,0,0,0,0,28,14,0,0,0,0, + // 0x9ad8 高 + 216,154,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,15,255,255,129,192,28,15,255,255,129,192,28,15,255,255,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,14,0,3,129,192,28,15,255,255,129,192,28,15,255,255,129,192,28,15,255,255,129,192,28,0,0,0,15,192,28,0,0,0,15,192,28,0,0,0,15,192, + // 0x9ec3 黃 + 195,158,45,48,32,48,0,250,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,15,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,248,255,255,255,255,255,248,255,255,255,255,255,248,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,112,7,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,14,0,3,128,0,0,14,0,3,128,0,0,14,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x9ede 點 + 222,158,45,48,32,48,0,250,0,0,0,0,112,0,0,0,0,0,112,0,0,0,0,0,112,0,255,255,248,0,112,0,255,255,248,0,112,0,255,255,248,0,112,0,224,112,56,0,112,0,224,112,56,0,112,0,224,112,56,0,112,0,252,113,248,0,112,0,252,113,248,0,112,0,252,113,248,0,112,0,227,254,56,0,127,248,227,254,56,0,127,248,227,254,56,0,127,248,224,112,56,0,112,0,224,112,56,0,112,0,224,112,56,0,112,0,255,255,248,0,112,0,255,255,248,0,112,0,255,255,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,255,255,248,255,255,248,255,255,248,255,255,248,255,255,248,255,255,248,0,112,0,224,0,56,0,112,0,224,0,56,0,112,0,224,0,56,0,127,248,224,0,56,0,127,248,224,0,56,0,127,248,224,0,56,255,128,0,224,0,56,255,128,0,224,0,56,255,128,0,224,0,56,0,0,56,224,0,56,0,0,56,224,0,56,0,0,56,224,0,56,227,142,56,224,0,56,227,142,56,224,0,56,227,142,56,224,0,56,227,142,0,255,255,248,227,142,0,255,255,248,227,142,0,255,255,248,224,0,0,224,0,56,224,0,0,224,0,56,224,0,0,224,0,56, + // 0x9f4a 齊 + 74,159,45,48,32,48,0,250,0,0,56,0,0,0,0,0,56,0,0,0,0,0,56,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,31,255,255,255,255,192,31,255,255,255,255,192,31,255,255,255,255,192,0,1,192,28,0,0,0,1,192,28,0,0,0,1,192,28,0,0,0,0,56,224,15,192,0,0,56,224,15,192,0,0,56,224,15,192,31,255,199,31,240,0,31,255,199,31,240,0,31,255,199,31,240,0,3,129,199,28,112,0,3,129,199,28,112,0,3,129,199,28,112,0,3,129,199,28,112,0,3,129,199,28,112,0,3,129,199,28,112,0,28,1,199,28,14,0,28,1,199,28,14,0,28,1,199,28,14,0,224,15,199,31,129,248,224,15,199,31,129,248,224,15,199,31,129,248,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,127,255,255,240,0,0,127,255,255,240,0,0,127,255,255,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0,3,128,0,0,112,0, + // 0xff1a : + 26,255,12,21,42,48,18,3,255,240,255,240,255,240,255,240,255,240,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,240,255,240,255,240,255,240,255,240,255,240, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Vietnamese_30.cpp b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Vietnamese_30.cpp new file mode 100644 index 0000000000..c5a54a797d --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/Unifont/30px/Unifont_Vietnamese_30.cpp @@ -0,0 +1,246 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../fontdata.h" + +#if HAS_GRAPHICAL_TFT && TFT_FONT == UNIFONT + +// Unifont Vietnamese 48pt, capital 'A' height: 30px, width: 100%, range: 0x0102-0x1ef9, glyphs: 107 +extern const uint8_t Unifont_Vietnamese_30[12660] = { + 161,30,2,1,249,30,42,250, // unifont_t + // 0x0102 Ă + 2,1,18,42,126,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x0103 ă + 3,1,18,39,117,24,3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0110 Đ + 16,1,21,30,90,24,0,0,31,254,0,31,254,0,31,254,0,28,1,192,28,1,192,28,1,192,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,255,240,56,255,240,56,255,240,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,1,192,28,1,192,28,1,192,31,254,0,31,254,0,31,254,0, + // 0x0111 đ + 17,1,21,33,99,24,3,0,0,1,192,0,1,192,0,1,192,0,127,248,0,127,248,0,127,248,0,1,192,0,1,192,0,1,192,31,241,192,31,241,192,31,241,192,224,15,192,224,15,192,224,15,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x0128 Ĩ + 40,1,18,42,126,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,255,192,31,255,192,31,255,192, + // 0x0129 ĩ + 41,1,18,36,108,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,240,0,3,240,0,3,240,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,31,255,192,31,255,192,31,255,192, + // 0x0168 Ũ + 104,1,18,42,126,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x0169 ũ + 105,1,18,36,108,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x01a0 Ơ + 160,1,18,33,99,24,3,0,0,1,192,0,1,192,0,1,192,31,241,192,31,241,192,31,241,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x01a1 ơ + 161,1,18,27,81,24,3,0,0,1,192,0,1,192,0,1,192,31,241,192,31,241,192,31,241,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x01af Ư + 175,1,21,36,108,24,3,0,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x01b0 ư + 176,1,21,30,90,24,3,0,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,126,0,224,126,0,224,126,0,31,142,0,31,142,0,31,142,0, + // 0x0303 ̃ + 3,3,18,6,18,0,235,33,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0, + // 0x0309 ̉ + 9,3,12,15,30,0,238,27,31,128,31,128,31,128,224,112,224,112,224,112,0,112,0,112,0,112,3,128,3,128,3,128,3,128,3,128,3,128, + // 0x0323 ̣ + 35,3,6,6,6,0,241,250,252,252,252,252,252,252, + // 0x0340 ̀ + 64,3,9,9,18,0,235,30,224,0,224,0,224,0,28,0,28,0,28,0,3,128,3,128,3,128, + // 0x0341 ́ + 65,3,9,9,18,0,244,30,3,128,3,128,3,128,28,0,28,0,28,0,224,0,224,0,224,0, + // 0x1ea0 Ạ + 160,30,15,36,72,24,3,250,3,128,3,128,3,128,28,112,28,112,28,112,28,112,28,112,28,112,224,14,224,14,224,14,224,14,224,14,224,14,255,254,255,254,255,254,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,0,0,0,0,0,0,3,128,3,128,3,128, + // 0x1ea1 ạ + 161,30,18,30,90,24,3,250,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192,0,0,0,0,0,0,0,0,0,3,128,0,3,128,0,3,128,0, + // 0x1ea2 Ả + 162,30,18,42,126,24,3,0,224,0,0,224,0,0,224,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,224,0,0,224,0,0,224,0,0,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,28,14,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + // 0x1ea3 ả + 163,30,18,39,117,24,3,0,0,112,0,0,112,0,0,112,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x1ea4 Ấ + 164,30,18,42,126,24,3,0,0,1,192,0,1,192,0,1,192,3,142,0,3,142,0,3,142,0,28,112,0,28,112,0,28,112,0,224,14,0,224,14,0,224,14,0,3,128,0,3,128,0,3,128,0,28,112,0,28,112,0,28,112,0,28,112,0,28,112,0,28,112,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,255,254,0,255,254,0,255,254,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0, + // 0x1ea5 ấ + 165,30,18,39,117,24,3,0,0,1,192,0,1,192,0,1,192,3,142,0,3,142,0,3,142,0,28,112,0,28,112,0,28,112,0,224,14,0,224,14,0,224,14,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x1ea6 Ầ + 166,30,18,42,126,24,3,0,224,0,0,224,0,0,224,0,0,28,112,0,28,112,0,28,112,0,3,142,0,3,142,0,3,142,0,28,1,192,28,1,192,28,1,192,0,112,0,0,112,0,0,112,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,31,255,192,31,255,192,31,255,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192, + // 0x1ea7 ầ + 167,30,18,39,117,24,3,0,224,0,0,224,0,0,224,0,0,28,112,0,28,112,0,28,112,0,3,142,0,3,142,0,3,142,0,28,1,192,28,1,192,28,1,192,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x1ea8 Ẩ + 168,30,18,42,126,24,3,0,0,14,0,0,14,0,0,14,0,0,1,192,0,1,192,0,1,192,3,142,0,3,142,0,3,142,0,28,112,0,28,112,0,28,112,0,227,142,0,227,142,0,227,142,0,28,112,0,28,112,0,28,112,0,28,112,0,28,112,0,28,112,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,255,254,0,255,254,0,255,254,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0, + // 0x1ea9 ẩ + 169,30,21,42,126,24,3,0,0,1,192,0,1,192,0,1,192,0,0,56,0,0,56,0,0,56,0,113,192,0,113,192,0,113,192,3,142,0,3,142,0,3,142,0,28,1,192,28,1,192,28,1,192,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x1eaa Ẫ + 170,30,18,42,126,24,6,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,3,128,0,3,128,0,3,128,0,28,112,0,28,112,0,28,112,0,224,14,0,224,14,0,224,14,0,3,128,0,3,128,0,3,128,0,28,112,0,28,112,0,28,112,0,28,112,0,28,112,0,28,112,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,255,254,0,255,254,0,255,254,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0, + // 0x1eab ẫ + 171,30,21,42,126,24,3,0,3,240,56,3,240,56,3,240,56,28,15,192,28,15,192,28,15,192,0,112,0,0,112,0,0,112,0,3,142,0,3,142,0,3,142,0,28,1,192,28,1,192,28,1,192,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x1eac Ậ + 172,30,15,45,90,24,6,250,3,128,3,128,3,128,28,112,28,112,28,112,224,14,224,14,224,14,3,128,3,128,3,128,28,112,28,112,28,112,28,112,28,112,28,112,224,14,224,14,224,14,224,14,224,14,224,14,255,254,255,254,255,254,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,0,0,0,0,0,0,3,128,3,128,3,128, + // 0x1ead ậ + 173,30,18,42,126,24,3,250,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192,0,0,0,0,0,0,0,0,0,0,112,0,0,112,0,0,112,0, + // 0x1eae Ắ + 174,30,15,42,84,24,3,0,0,112,0,112,0,112,3,128,3,128,3,128,224,14,224,14,224,14,31,240,31,240,31,240,3,128,3,128,3,128,28,112,28,112,28,112,28,112,28,112,28,112,224,14,224,14,224,14,224,14,224,14,224,14,255,254,255,254,255,254,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + // 0x1eaf ắ + 175,30,18,42,126,24,3,0,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x1eb0 Ằ + 176,30,15,42,84,24,3,0,28,0,28,0,28,0,3,128,3,128,3,128,224,14,224,14,224,14,31,240,31,240,31,240,3,128,3,128,3,128,28,112,28,112,28,112,28,112,28,112,28,112,224,14,224,14,224,14,224,14,224,14,224,14,255,254,255,254,255,254,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + // 0x1eb1 ằ + 177,30,18,42,126,24,3,0,28,0,0,28,0,0,28,0,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,28,1,192,28,1,192,28,1,192,3,254,0,3,254,0,3,254,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x1eb2 Ẳ + 178,30,21,42,126,24,0,0,0,112,0,0,112,0,0,112,0,0,14,0,0,14,0,0,14,0,227,240,56,227,240,56,227,240,56,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,31,255,192,31,255,192,31,255,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192, + // 0x1eb3 ẳ + 179,30,18,42,126,24,3,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x1eb4 Ẵ + 180,30,21,42,126,24,0,0,3,240,56,3,240,56,3,240,56,28,15,192,28,15,192,28,15,192,224,0,56,224,0,56,224,0,56,31,255,192,31,255,192,31,255,192,0,112,0,0,112,0,0,112,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,3,142,0,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,31,255,192,31,255,192,31,255,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192, + // 0x1eb5 ẵ + 181,30,18,42,126,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x1eb6 Ặ + 182,30,15,42,84,24,3,250,224,14,224,14,224,14,31,240,31,240,31,240,3,128,3,128,3,128,28,112,28,112,28,112,28,112,28,112,28,112,224,14,224,14,224,14,224,14,224,14,224,14,255,254,255,254,255,254,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,0,0,0,0,0,0,3,128,3,128,3,128, + // 0x1eb7 ặ + 183,30,18,39,117,24,3,250,28,14,0,28,14,0,28,14,0,3,240,0,3,240,0,3,240,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,0,1,192,0,1,192,0,1,192,31,255,192,31,255,192,31,255,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192,0,0,0,0,0,0,0,0,0,3,128,0,3,128,0,3,128,0, + // 0x1eb8 Ẹ + 184,30,18,36,108,24,3,250,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192,0,0,0,0,0,0,0,0,0,3,128,0,3,128,0,3,128,0, + // 0x1eb9 ẹ + 185,30,18,30,90,24,3,250,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,3,128,0,3,128,0,3,128,0, + // 0x1eba Ẻ + 186,30,18,42,126,24,3,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x1ebb ẻ + 187,30,18,42,126,24,3,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ebc Ẽ + 188,30,18,39,117,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x1ebd ẽ + 189,30,18,33,99,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ebe Ế + 190,30,18,42,126,24,3,0,0,1,192,0,1,192,0,1,192,3,142,0,3,142,0,3,142,0,28,112,0,28,112,0,28,112,0,224,14,0,224,14,0,224,14,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x1ebf ế + 191,30,18,39,117,24,3,0,0,1,192,0,1,192,0,1,192,3,142,0,3,142,0,3,142,0,28,112,0,28,112,0,28,112,0,224,14,0,224,14,0,224,14,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ec0 Ề + 192,30,18,42,126,24,3,0,224,0,0,224,0,0,224,0,0,28,112,0,28,112,0,28,112,0,3,142,0,3,142,0,3,142,0,28,1,192,28,1,192,28,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x1ec1 ề + 193,30,18,39,117,24,3,0,224,0,0,224,0,0,224,0,0,28,112,0,28,112,0,28,112,0,3,142,0,3,142,0,3,142,0,28,1,192,28,1,192,28,1,192,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ec2 Ể + 194,30,18,42,126,24,3,0,0,14,0,0,14,0,0,14,0,3,129,192,3,129,192,3,129,192,28,113,192,28,113,192,28,113,192,224,14,0,224,14,0,224,14,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x1ec3 ể + 195,30,18,42,126,24,3,0,0,14,0,0,14,0,0,14,0,0,1,192,0,1,192,0,1,192,3,129,192,3,129,192,3,129,192,28,126,0,28,126,0,28,126,0,224,14,0,224,14,0,224,14,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ec4 Ễ + 196,30,18,42,126,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,3,128,0,3,128,0,3,128,0,28,112,0,28,112,0,28,112,0,224,14,0,224,14,0,224,14,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192, + // 0x1ec5 ễ + 197,30,18,42,126,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,3,128,0,3,128,0,3,128,0,28,112,0,28,112,0,28,112,0,224,14,0,224,14,0,224,14,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ec6 Ệ + 198,30,18,45,135,24,3,250,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,254,0,255,254,0,255,254,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,192,255,255,192,255,255,192,0,0,0,0,0,0,0,0,0,0,112,0,0,112,0,0,112,0, + // 0x1ec7 ệ + 199,30,18,42,126,24,3,250,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255,255,192,255,255,192,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,112,0,0,112,0,0,112,0, + // 0x1ec8 Ỉ + 200,30,15,42,84,24,6,0,3,128,3,128,3,128,0,112,0,112,0,112,0,112,0,112,0,112,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x1ec9 ỉ + 201,30,15,39,78,24,6,0,28,0,28,0,28,0,3,128,3,128,3,128,3,128,3,128,3,128,28,0,28,0,28,0,0,0,0,0,0,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254, + // 0x1eca Ị + 202,30,15,36,72,24,6,250,255,254,255,254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254,0,0,0,0,0,0,3,128,3,128,3,128, + // 0x1ecb ị + 203,30,15,39,78,24,6,250,3,128,3,128,3,128,3,128,3,128,3,128,0,0,0,0,0,0,31,128,31,128,31,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254,255,254,0,0,0,0,0,0,3,128,3,128,3,128, + // 0x1ecc Ọ + 204,30,18,36,108,24,3,250,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,112,0,0,112,0,0,112,0, + // 0x1ecd ọ + 205,30,18,30,90,24,3,250,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,112,0,0,112,0,0,112,0, + // 0x1ece Ỏ + 206,30,18,42,126,24,3,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ecf ỏ + 207,30,18,39,117,24,3,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ed0 Ố + 208,30,18,42,126,24,3,0,0,1,192,0,1,192,0,1,192,3,142,0,3,142,0,3,142,0,28,112,0,28,112,0,28,112,0,224,14,0,224,14,0,224,14,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ed1 ố + 209,30,18,39,117,24,3,0,0,1,192,0,1,192,0,1,192,3,142,0,3,142,0,3,142,0,28,112,0,28,112,0,28,112,0,224,14,0,224,14,0,224,14,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ed2 Ồ + 210,30,18,42,126,24,3,0,224,0,0,224,0,0,224,0,0,28,112,0,28,112,0,28,112,0,3,142,0,3,142,0,3,142,0,28,1,192,28,1,192,28,1,192,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ed3 ồ + 211,30,18,39,117,24,3,0,224,0,0,224,0,0,224,0,0,28,112,0,28,112,0,28,112,0,3,142,0,3,142,0,3,142,0,28,1,192,28,1,192,28,1,192,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ed4 Ổ + 212,30,18,42,126,24,3,0,0,14,0,0,14,0,0,14,0,3,129,192,3,129,192,3,129,192,28,113,192,28,113,192,28,113,192,224,14,0,224,14,0,224,14,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ed5 ổ + 213,30,18,42,126,24,3,0,0,14,0,0,14,0,0,14,0,0,1,192,0,1,192,0,1,192,3,129,192,3,129,192,3,129,192,28,126,0,28,126,0,28,126,0,224,14,0,224,14,0,224,14,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ed6 Ỗ + 214,30,18,42,126,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,3,128,0,3,128,0,3,128,0,28,112,0,28,112,0,28,112,0,224,14,0,224,14,0,224,14,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ed7 ỗ + 215,30,18,42,126,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,3,128,0,3,128,0,3,128,0,28,112,0,28,112,0,28,112,0,224,14,0,224,14,0,224,14,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ed8 Ộ + 216,30,18,45,135,24,3,250,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,112,0,0,112,0,0,112,0, + // 0x1ed9 ộ + 217,30,18,42,126,24,3,250,3,240,0,3,240,0,3,240,0,28,14,0,28,14,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,0,31,254,0,31,254,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,112,0,0,112,0,0,112,0, + // 0x1eda Ớ + 218,30,21,42,126,24,3,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,1,192,28,1,192,28,1,192,0,0,56,0,0,56,0,0,56,31,240,56,31,240,56,31,240,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x1edb ớ + 219,30,21,36,108,24,3,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,28,1,192,28,1,192,28,1,192,0,0,56,0,0,56,0,0,56,31,240,56,31,240,56,31,240,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x1edc Ờ + 220,30,21,42,126,24,3,0,28,0,0,28,0,0,28,0,0,3,128,0,3,128,0,3,128,0,0,113,192,0,113,192,0,113,192,0,0,56,0,0,56,0,0,56,31,240,56,31,240,56,31,240,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x1edd ờ + 221,30,21,36,108,24,3,0,28,0,0,28,0,0,28,0,0,3,128,0,3,128,0,3,128,0,0,113,192,0,113,192,0,113,192,0,0,56,0,0,56,0,0,56,31,240,56,31,240,56,31,240,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x1ede Ở + 222,30,21,42,126,24,3,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,113,192,0,113,192,0,113,192,3,128,56,3,128,56,3,128,56,31,240,56,31,240,56,31,240,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x1edf ở + 223,30,21,39,117,24,3,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,129,192,3,129,192,3,129,192,0,0,56,0,0,56,0,0,56,31,240,56,31,240,56,31,240,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x1ee0 Ỡ + 224,30,21,39,117,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,1,192,0,1,192,0,1,192,31,240,56,31,240,56,31,240,56,224,14,56,224,14,56,224,14,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x1ee1 ỡ + 225,30,21,39,117,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,1,192,0,1,192,0,1,192,0,0,56,0,0,56,0,0,56,31,240,56,31,240,56,31,240,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x1ee2 Ợ + 226,30,21,42,126,24,3,250,0,1,192,0,1,192,0,1,192,0,0,56,0,0,56,0,0,56,31,240,56,31,240,56,31,240,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0,0,0,0,0,0,0,0,0,0,3,128,0,3,128,0,3,128,0, + // 0x1ee3 ợ + 227,30,21,36,108,24,3,250,0,1,192,0,1,192,0,1,192,0,0,56,0,0,56,0,0,56,31,240,56,31,240,56,31,240,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0,0,0,0,0,0,0,0,0,0,3,128,0,3,128,0,3,128,0, + // 0x1ee4 Ụ + 228,30,18,36,108,24,3,250,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0,0,0,0,0,0,0,0,0,0,0,112,0,0,112,0,0,112,0, + // 0x1ee5 ụ + 229,30,18,30,90,24,3,250,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192,0,0,0,0,0,0,0,0,0,0,112,0,0,112,0,0,112,0, + // 0x1ee6 Ủ + 230,30,18,42,126,24,3,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ee7 ủ + 231,30,18,39,117,24,3,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,15,192,224,15,192,224,15,192,31,241,192,31,241,192,31,241,192, + // 0x1ee8 Ứ + 232,30,21,42,126,24,3,0,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,129,192,3,129,192,3,129,192,0,0,56,0,0,56,0,0,56,224,14,56,224,14,56,224,14,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x1ee9 ứ + 233,30,21,36,108,24,3,0,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,3,129,192,3,129,192,3,129,192,0,0,56,0,0,56,0,0,56,224,14,56,224,14,56,224,14,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,126,0,224,126,0,224,126,0,31,142,0,31,142,0,31,142,0, + // 0x1eea Ừ + 234,30,21,42,126,24,3,0,224,0,0,224,0,0,224,0,0,28,0,0,28,0,0,28,0,0,3,129,192,3,129,192,3,129,192,0,0,56,0,0,56,0,0,56,224,14,56,224,14,56,224,14,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x1eeb ừ + 235,30,21,36,108,24,3,0,224,0,0,224,0,0,224,0,0,28,0,0,28,0,0,28,0,0,3,129,192,3,129,192,3,129,192,0,0,56,0,0,56,0,0,56,224,14,56,224,14,56,224,14,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,126,0,224,126,0,224,126,0,31,142,0,31,142,0,31,142,0, + // 0x1eec Ử + 236,30,21,42,126,24,3,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,113,192,0,113,192,0,113,192,3,128,56,3,128,56,3,128,56,224,14,56,224,14,56,224,14,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x1eed ử + 237,30,21,39,117,24,3,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,129,192,3,129,192,3,129,192,0,0,56,0,0,56,0,0,56,224,14,56,224,14,56,224,14,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,126,0,224,126,0,224,126,0,31,142,0,31,142,0,31,142,0, + // 0x1eee Ữ + 238,30,21,42,126,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,1,192,0,1,192,0,1,192,0,0,56,0,0,56,0,0,56,224,14,56,224,14,56,224,14,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0, + // 0x1eef ữ + 239,30,21,39,117,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,1,192,0,1,192,0,1,192,0,0,56,0,0,56,0,0,56,224,14,56,224,14,56,224,14,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,126,0,224,126,0,224,126,0,31,142,0,31,142,0,31,142,0, + // 0x1ef0 Ự + 240,30,21,42,126,24,3,250,0,1,192,0,1,192,0,1,192,0,0,56,0,0,56,0,0,56,224,14,56,224,14,56,224,14,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,31,240,0,31,240,0,31,240,0,0,0,0,0,0,0,0,0,0,3,128,0,3,128,0,3,128,0, + // 0x1ef1 ự + 241,30,21,36,108,24,3,250,0,1,192,0,1,192,0,1,192,0,0,56,0,0,56,0,0,56,224,14,56,224,14,56,224,14,56,224,15,192,224,15,192,224,15,192,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,224,126,0,224,126,0,224,126,0,31,142,0,31,142,0,31,142,0,0,0,0,0,0,0,0,0,0,3,128,0,3,128,0,3,128,0, + // 0x1ef2 Ỳ + 242,30,21,42,126,24,3,0,28,0,0,28,0,0,28,0,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,0,0,0,0,0,0,0,0,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x1ef3 ỳ + 243,30,18,45,135,24,3,250,28,0,0,28,0,0,28,0,0,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,15,192,28,15,192,28,15,192,3,241,192,3,241,192,3,241,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ef4 Ỵ + 244,30,21,36,108,24,3,250,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,0,0,0,0,0,0,0,0,0,112,0,0,112,0,0,112,0, + // 0x1ef5 ỵ + 245,30,18,30,90,24,3,250,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,15,192,28,15,192,28,15,192,3,241,192,3,241,192,3,241,192,0,1,192,0,1,192,0,1,192,31,254,0,31,254,0,31,254,0,0,112,0,0,112,0,0,112,0, + // 0x1ef6 Ỷ + 246,30,21,42,126,24,3,0,0,112,0,0,112,0,0,112,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,112,0,0,112,0,0,112,0,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x1ef7 ỷ + 247,30,18,45,135,24,3,250,3,128,0,3,128,0,3,128,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,3,128,0,3,128,0,3,128,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,15,192,28,15,192,28,15,192,3,241,192,3,241,192,3,241,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,31,254,0,31,254,0,31,254,0, + // 0x1ef8 Ỹ + 248,30,21,39,117,24,3,0,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,3,142,0,3,142,0,3,142,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + // 0x1ef9 ỹ + 249,30,18,42,126,24,3,250,31,129,192,31,129,192,31,129,192,224,126,0,224,126,0,224,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,28,15,192,28,15,192,28,15,192,3,241,192,3,241,192,3,241,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,31,254,0,31,254,0,31,254,0, +}; + +#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/fontdata/fontdata.h b/Marlin/src/lcd/tft/fontdata/fontdata.h new file mode 100644 index 0000000000..9508656a8d --- /dev/null +++ b/Marlin/src/lcd/tft/fontdata/fontdata.h @@ -0,0 +1,117 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "../../../inc/MarlinConfigPre.h" + +#define NOTOSANS 1 +#define UNIFONT 2 +#define HELVETICA 3 + +#ifndef TFT_FONT + #define TFT_FONT NOTOSANS +#endif + +#define _LATIN_EXTENDED_A 1 +#define _CYRILLIC 2 +#define _GREEK 3 +#define _KATAKANA 4 +#define _KOREAN 5 +#define _VIETNAMESE 6 +#define _SIMPLIFIED_CHINESE 7 +#define _TRADITIONAL_CHINESE 8 + +#define LCODE_cz _LATIN_EXTENDED_A +#define LCODE_hr _LATIN_EXTENDED_A +#define LCODE_pl _LATIN_EXTENDED_A +#define LCODE_sk _LATIN_EXTENDED_A +#define LCODE_tr _LATIN_EXTENDED_A +#define LCODE_bg _CYRILLIC +#define LCODE_ru _CYRILLIC +#define LCODE_uk _CYRILLIC +#define LCODE_el _GREEK +#define LCODE_el_CY _GREEK +#define LCODE_jp_kana _KATAKANA +#define LCODE_ko_KR _KOREAN +#define LCODE_vi _VIETNAMESE +#define LCODE_zh_CN _SIMPLIFIED_CHINESE +#define LCODE_zh_TW _TRADITIONAL_CHINESE + +#define _LCODE(N) (CAT(LCODE_, LCD_LANGUAGE) == N) + +#if _LCODE(_LATIN_EXTENDED_A) + #define FONT_EXTRA Latin_Extended_A + #define EXTRA_GLYPHS 128 +#elif _LCODE(_CYRILLIC) + #define FONT_EXTRA Cyrillic + #define EXTRA_GLYPHS 145 +#elif _LCODE(_GREEK) + #define FONT_EXTRA Greek + #define EXTRA_GLYPHS 73 +#elif _LCODE(_KATAKANA) + #define FONT_EXTRA Katakana + #define EXTRA_GLYPHS 102 +#elif _LCODE(_KOREAN) + #define FONT_EXTRA Korean + #define EXTRA_GLYPHS 110 +#elif _LCODE(_VIETNAMESE) + #define FONT_EXTRA Vietnamese + #define EXTRA_GLYPHS 107 +#elif _LCODE(_SIMPLIFIED_CHINESE) + #define FONT_EXTRA Simplified_Chinese + #define EXTRA_GLYPHS 373 +#elif _LCODE(_TRADITIONAL_CHINESE) + #define FONT_EXTRA Traditional_Chinese + #define EXTRA_GLYPHS 307 +#else // Basin Latin (0x0020 - 0x007f) and Latin-1 Supplement (0x0080-0x00ff) characters only + #define EXTRA_GLYPHS 0 +#endif + +#undef _LCODE +#undef LCODE_cz +#undef LCODE_hr +#undef LCODE_pl +#undef LCODE_sk +#undef LCODE_tr +#undef LCODE_bg +#undef LCODE_ru +#undef LCODE_uk +#undef LCODE_el +#undef LCODE_el_CY +#undef LCODE_jp_kana +#undef LCODE_ko_KR +#undef LCODE_vi +#undef LCODE_zh_CN +#undef LCODE_zh_TW + +#if TFT_FONT == NOTOSANS + #define FONT_FAMILY NotoSans_Medium +#elif TFT_FONT == UNIFONT + #define FONT_FAMILY Unifont +#elif TFT_FONT == HELVETICA + #define FONT_FAMILY Helvetica + #ifdef FONT_EXTRA + #error "Helvetica font does not have symbols required for selected LCD_LANGUAGE." + #endif +#else + #error "Invalid TFT_FONT value." +#endif diff --git a/Marlin/src/lcd/tft/images/back_32x32x4.cpp b/Marlin/src/lcd/tft/images/back_32x32x4.cpp index 84a6e3aba6..d19bc76509 100644 --- a/Marlin/src/lcd/tft/images/back_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/back_32x32x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t back_32x32x4[512] = { +extern const uint8_t back_32x32x4[]; +const tImage Back_32x32x4 = { (void *)back_32x32x4, 32, 32, GREYSCALE4 }; + +const uint8_t back_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/background_320x30x16.cpp b/Marlin/src/lcd/tft/images/background_320x30x16.cpp index 49c4a84a0c..8710bd2ea0 100644 --- a/Marlin/src/lcd/tft/images/background_320x30x16.cpp +++ b/Marlin/src/lcd/tft/images/background_320x30x16.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint16_t background_320x30x16[9600] = { +extern const uint16_t background_320x30x16[]; +const tImage Background320x30x16 = { (void *)background_320x30x16, 320, 30, HIGHCOLOR }; + +const uint16_t background_320x30x16[9600] = { 0x10F2, 0x18D2, 0x18D2, 0x10D2, 0x18D2, 0x18D2, 0x18D2, 0x18D2, 0x18D2, 0x18D2, 0x18D2, 0x18D2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18D2, 0x18F2, 0x18F2, 0x18D2, 0x18D2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F2, 0x18F3, 0x18F3, 0x20F2, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x2112, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x2113, 0x20F2, 0x20F3, 0x20F2, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x2113, 0x28F3, 0x2113, 0x20F3, 0x2113, 0x28F3, 0x20F3, 0x2113, 0x2113, 0x2113, 0x2113, 0x2113, 0x2113, 0x2113, 0x28F3, 0x28F3, 0x2113, 0x2113, 0x2113, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2113, 0x2913, 0x2913, 0x2913, 0x2914, 0x2913, 0x2913, 0x28F3, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x28F3, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x28F3, 0x2913, 0x2913, 0x2914, 0x2913, 0x2913, 0x2913, 0x2113, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2113, 0x2113, 0x2113, 0x28F3, 0x28F3, 0x2113, 0x2113, 0x2113, 0x2113, 0x2113, 0x2113, 0x2113, 0x20F3, 0x28F3, 0x2113, 0x20F3, 0x2113, 0x28F3, 0x2113, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F2, 0x20F3, 0x20F2, 0x2113, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x2112, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x20F2, 0x18F3, 0x18F3, 0x18F2, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x1D7C, 0x1D7C, 0x1D7C, 0x1D7C, 0x1D7C, 0x1D7C, 0x1D7C, 0x1D7C, 0x1D7C, 0x1D7C, 0x1D7C, 0x1D7C, 0x1D9C, 0x1D9C, 0x1D9C, 0x1D9C, 0x1D9C, 0x1D9C, 0x1D9C, 0x1D9C, 0x1D9D, 0x1D9D, 0x1D9D, 0x1D9D, 0x259C, 0x1DBC, 0x1D9D, 0x259D, 0x1D9C, 0x259C, 0x259C, 0x259C, 0x259C, 0x259C, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25DD, 0x25DD, 0x25BD, 0x25BD, 0x1DDD, 0x25DD, 0x25DD, 0x25DD, 0x25BD, 0x25DD, 0x25DD, 0x25DD, 0x25DD, 0x25DD, 0x25DD, 0x25DD, 0x25DD, 0x25DD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x2DFD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x2DFD, 0x2DFD, 0x2DFD, 0x2DFD, 0x2DFD, 0x25FD, 0x2DFE, 0x2DFD, 0x2DFD, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E3E, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E3D, 0x2E3D, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3D, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x365E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E3E, 0x365E, 0x2E5E, 0x2E5E, 0x2E5E, 0x365E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E5E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3D, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3D, 0x2E3E, 0x2E3E, 0x2E3E, 0x2E3D, 0x2E3D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E3E, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2E1D, 0x2DFD, 0x2DFD, 0x2DFE, 0x25FD, 0x2DFD, 0x2DFD, 0x2DFD, 0x2DFD, 0x2DFD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x2DFD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25FD, 0x25DD, 0x25DD, 0x25DD, 0x25DD, 0x25DD, 0x25DD, 0x25DD, 0x25DD, 0x25DD, 0x25BD, 0x25DD, 0x25DD, 0x25DD, 0x1DDD, 0x25BD, 0x25BD, 0x25DD, 0x25DD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x25BD, 0x1C7C, 0x1C7C, 0x1C7C, 0x1C7B, 0x1C7C, 0x1C7C, 0x1C7C, 0x1C7C, 0x1C7C, 0x1C7C, 0x1C9C, 0x1C9C, 0x1C9C, 0x1C9C, 0x1C9C, 0x1C9C, 0x1C9C, 0x1C9C, 0x1C9C, 0x1C9C, 0x1C9C, 0x1C9C, 0x249C, 0x1C9C, 0x1D9D, 0x1D7C, 0x1CFC, 0x1C9C, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x24BC, 0x1CBC, 0x1CBC, 0x24BC, 0x24BC, 0x24BC, 0x1CBC, 0x24DC, 0x24DC, 0x24DC, 0x253D, 0x25BD, 0x253D, 0x24DD, 0x24BC, 0x24BC, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24FD, 0x24DC, 0x24DC, 0x24FD, 0x24FD, 0x24FC, 0x24DD, 0x24FD, 0x251C, 0x25FD, 0x255D, 0x24FD, 0x24FD, 0x24FD, 0x24FD, 0x24FC, 0x24FD, 0x24FD, 0x24FD, 0x24FD, 0x24FD, 0x24FD, 0x24FD, 0x24FD, 0x2CFD, 0x2CFD, 0x2CFD, 0x2CFD, 0x2CFD, 0x2CFD, 0x2CFD, 0x2CFD, 0x251D, 0x24FD, 0x24FD, 0x251D, 0x2D1D, 0x24FD, 0x2CFD, 0x25BD, 0x25BD, 0x253C, 0x2CFC, 0x2D1D, 0x251D, 0x2CFD, 0x2CFD, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1C, 0x2D5D, 0x2DDE, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D1D, 0x2D3D, 0x2D1D, 0x2D1D, 0x2E1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D3D, 0x2D1D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D3D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2DDE, 0x2D5D, 0x2D1C, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2D1D, 0x2CFD, 0x2CFD, 0x251D, 0x2D1D, 0x2CFC, 0x253C, 0x25BD, 0x25BD, 0x2CFD, 0x24FD, 0x2D1D, 0x251D, 0x24FD, 0x24FD, 0x251D, 0x2CFD, 0x2CFD, 0x2CFD, 0x2CFD, 0x2CFD, 0x2CFD, 0x2CFD, 0x2CFD, 0x24FD, 0x24FD, 0x24FD, 0x24FD, 0x24FD, 0x24FD, 0x24FD, 0x24FD, 0x24FC, 0x24FD, 0x24FD, 0x24FD, 0x24FD, 0x255D, 0x25FD, 0x251C, 0x24FD, 0x24DD, 0x24FC, 0x24FD, 0x24FD, 0x24DC, 0x24DC, 0x24FD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24DD, 0x24BC, 0x24BC, 0x24DD, 0x253D, 0x25BD, 0x253D, 0x24DC, 0x24DC, 0x24DC, 0x1CBC, 0x24BC, 0x24BC, 0x24BC, 0x1CBC, 0x1CBC, 0x24BC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, 0x1CBC, diff --git a/Marlin/src/lcd/tft/images/bootscreen_112x38x1.cpp b/Marlin/src/lcd/tft/images/bootscreen_112x38x1.cpp index 2308917b13..bac075e78b 100644 --- a/Marlin/src/lcd/tft/images/bootscreen_112x38x1.cpp +++ b/Marlin/src/lcd/tft/images/bootscreen_112x38x1.cpp @@ -21,12 +21,16 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT #include "../../../inc/MarlinConfig.h" -extern const uint8_t marlin_logo_112x38x1[532] = { +extern const uint8_t marlin_logo_112x38x1[]; +const tImage MarlinLogo112x38x1 = { (void *)marlin_logo_112x38x1, 112, 38, GREYSCALE1 }; + +const uint8_t marlin_logo_112x38x1[532] = { B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111, diff --git a/Marlin/src/lcd/tft/images/bootscreen_195x59x16.cpp b/Marlin/src/lcd/tft/images/bootscreen_195x59x16.cpp index 2545f845a8..db49bba733 100644 --- a/Marlin/src/lcd/tft/images/bootscreen_195x59x16.cpp +++ b/Marlin/src/lcd/tft/images/bootscreen_195x59x16.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint16_t marlin_logo_195x59x16[11505] = { +extern const uint16_t marlin_logo_195x59x16[]; +const tImage MarlinLogo195x59x16 = { (void *)marlin_logo_195x59x16, 195, 59, HIGHCOLOR }; + +const uint16_t marlin_logo_195x59x16[11505] = { 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18AD, 0x310E, 0x7A32, 0xAAD3, 0xD395, 0xD395, 0xD395, 0xD375, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD375, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18AE, 0x20AD, 0x18AD, 0x496F, 0xAAD3, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD375, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD375, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0x18AD, 0x20AB, 0x18AD, 0x18AD, 0x18AD, 0x20EE, 0x8252, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD3B5, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xDB95, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, diff --git a/Marlin/src/lcd/tft/images/bootscreen_228x255x2.cpp b/Marlin/src/lcd/tft/images/bootscreen_228x255x2.cpp index 0899407153..35dc5b5f9c 100644 --- a/Marlin/src/lcd/tft/images/bootscreen_228x255x2.cpp +++ b/Marlin/src/lcd/tft/images/bootscreen_228x255x2.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t marlin_logo_228x255x2[14535] = { +extern const uint8_t marlin_logo_228x255x2[]; +const tImage MarlinLogo228x255x2 = { (void *)marlin_logo_228x255x2, 228, 255, GREYSCALE2 }; + +const uint8_t marlin_logo_228x255x2[14535] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/Marlin/src/lcd/tft/images/bootscreen_228x255x4.cpp b/Marlin/src/lcd/tft/images/bootscreen_228x255x4.cpp index 3ed61a1b20..fe60e173e6 100644 --- a/Marlin/src/lcd/tft/images/bootscreen_228x255x4.cpp +++ b/Marlin/src/lcd/tft/images/bootscreen_228x255x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t marlin_logo_228x255x4[29070] = { +extern const uint8_t marlin_logo_228x255x4[]; +const tImage MarlinLogo228x255x4 = { (void *)marlin_logo_228x255x4, 228, 255, GREYSCALE4 }; + +const uint8_t marlin_logo_228x255x4[29070] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x9E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xDF, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/Marlin/src/lcd/tft/images/bootscreen_320x240x16.cpp b/Marlin/src/lcd/tft/images/bootscreen_320x240x16.cpp index cad6f1fef1..5c2f68beed 100644 --- a/Marlin/src/lcd/tft/images/bootscreen_320x240x16.cpp +++ b/Marlin/src/lcd/tft/images/bootscreen_320x240x16.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint16_t marlin_logo_320x240x16[76800] = { +extern const uint16_t marlin_logo_320x240x16[]; +const tImage MarlinLogo320x240x16 = { (void *)marlin_logo_320x240x16, 320, 240, HIGHCOLOR }; + +const uint16_t marlin_logo_320x240x16[76800] = { 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18AE, 0x20AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AE, 0x18AD, 0x18AD, 0x0119, 0x011A, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x011A, 0x0119, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x20AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18AD, 0x18CE, 0x00F8, 0x0119, 0x0119, 0x0119, 0x0119, 0x08F7, 0x18CE, 0x18AD, 0x20AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x08D5, 0x011A, 0x0119, 0x10D2, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x28EE, 0x8252, 0xCB54, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18CD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x011A, 0x10D2, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18CD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18CD, 0x18CD, 0x18AE, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x08F5, 0x00F9, 0x0119, 0x00F7, 0x00F7, 0x0119, 0x0119, 0x08F5, 0x18AE, 0x18AD, 0x18AD, 0x18CD, 0x18AD, 0x18AE, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18AD, 0x20AE, 0x08F5, 0x0119, 0x0119, 0x10D2, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x20AE, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x20AD, 0x394F, 0xB313, 0xD395, 0x7211, 0x18AD, 0x18AD, 0x20CD, 0x18AD, 0x18AD, 0x20AD, 0x18AD, 0x18AD, 0x18AE, 0x0119, 0x00F9, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AE, 0x18AE, 0x18AD, 0x011A, 0x0119, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x0119, 0x011A, 0x18CD, 0x20AD, 0x18CD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18AE, 0x0119, 0x011A, 0x08F3, 0x18AD, 0x18AD, 0x08F4, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18AD, 0x18AE, 0x08F5, 0x0119, 0x00F9, 0x10D2, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18AD, 0x18CD, 0x18AD, 0x18AD, 0x496F, 0xCB55, 0xD395, 0xBB54, 0x28CE, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18AE, 0x18AD, 0x18AD, 0x18CD, 0x18AD, 0x011A, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18CD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x20AD, diff --git a/Marlin/src/lcd/tft/images/bootscreen_480x320x16.cpp b/Marlin/src/lcd/tft/images/bootscreen_480x320x16.cpp index b90228af03..ecec2f6e58 100644 --- a/Marlin/src/lcd/tft/images/bootscreen_480x320x16.cpp +++ b/Marlin/src/lcd/tft/images/bootscreen_480x320x16.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint16_t marlin_logo_480x320x16[153600] = { +extern const uint16_t marlin_logo_480x320x16[]; +const tImage MarlinLogo480x320x16 = { (void *)marlin_logo_480x320x16, 480, 320, HIGHCOLOR }; + +const uint16_t marlin_logo_480x320x16[153600] = { 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x10AE, 0x00F8, 0x00F9, 0x00D6, 0x18AD, 0x188C, 0x188C, 0x18AC, 0x188C, 0x18AC, 0x18AC, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188D, 0x188D, 0x188D, 0x188D, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x011A, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x011A, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x188D, 0x18AD, 0x18AC, 0x18AC, 0x188D, 0x18AD, 0x18AD, 0x18AC, 0x18AD, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x188D, 0x18AC, 0x18AC, 0x00F9, 0x00F9, 0x18AC, 0x18AD, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188C, 0x188C, 0x18AB, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x10AE, 0x00F7, 0x00F9, 0x00F6, 0x188D, 0x18AC, 0x18AC, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x011A, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x011A, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x011A, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AC, 0x18AD, 0x18AD, 0x188D, 0x18AC, 0x18AC, 0x188D, 0x188D, 0x18AC, 0x18AD, 0x18AD, 0x18AD, 0x18AC, 0x18AD, 0x00F9, 0x00F9, 0x18AC, 0x18AD, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x10AF, 0x00F8, 0x00F8, 0x00F7, 0x18AD, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188D, 0x18AC, 0x18AD, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x011A, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x011A, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x011A, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AC, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AC, 0x18AD, 0x00F9, 0x00F9, 0x18AC, 0x18AD, 0x18AC, 0x18AC, 0x18AD, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, diff --git a/Marlin/src/lcd/tft/images/btn_rounded_42x39x4.cpp b/Marlin/src/lcd/tft/images/btn_rounded_42x39x4.cpp index bd7b9220eb..7045558df5 100644 --- a/Marlin/src/lcd/tft/images/btn_rounded_42x39x4.cpp +++ b/Marlin/src/lcd/tft/images/btn_rounded_42x39x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t btn_rounded_42x39x4[819] = { +extern const uint8_t btn_rounded_42x39x4[]; +const tImage BtnRounded_42x39x4 = { (void *)btn_rounded_42x39x4, 42, 39, GREYSCALE4 }; + +const uint8_t btn_rounded_42x39x4[819] = { 0x87, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x87, 0x77, 0xAB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xB9, 0x77, 0x78, 0x87, 0x8E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x68, diff --git a/Marlin/src/lcd/tft/images/btn_rounded_64x52x4.cpp b/Marlin/src/lcd/tft/images/btn_rounded_64x52x4.cpp index 4768f7e5fc..c0892a6a6d 100644 --- a/Marlin/src/lcd/tft/images/btn_rounded_64x52x4.cpp +++ b/Marlin/src/lcd/tft/images/btn_rounded_64x52x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t btn_rounded_64x52x4[1664] = { +extern const uint8_t btn_rounded_64x52x4[]; +const tImage BtnRounded_64x52x4 = { (void *)btn_rounded_64x52x4, 64, 52, GREYSCALE4 }; + +const uint8_t btn_rounded_64x52x4[1664] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x79, 0xCE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0x87, 0x77, 0x78, diff --git a/Marlin/src/lcd/tft/images/cancel_64x64x4.cpp b/Marlin/src/lcd/tft/images/cancel_64x64x4.cpp index a315e2df1c..9198c4b717 100644 --- a/Marlin/src/lcd/tft/images/cancel_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/cancel_64x64x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t cancel_64x64x4[2048] = { +extern const uint8_t cancel_64x64x4[]; +const tImage Cancel_64x64x4 = { (void *)cancel_64x64x4, 64, 64, GREYSCALE4 }; + +const uint8_t cancel_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/chamber_64x64x4.cpp b/Marlin/src/lcd/tft/images/chamber_64x64x4.cpp index 23722f616d..8def3df406 100644 --- a/Marlin/src/lcd/tft/images/chamber_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/chamber_64x64x4.cpp @@ -21,10 +21,15 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t chamber_64x64x4[2048] = { +extern const uint8_t chamber_64x64x4[], chamber_heated_64x64x4[]; +const tImage Chamber_64x64x4 = { (void *)chamber_64x64x4, 64, 64, GREYSCALE4 }; +const tImage Chamber_Heated_64x64x4 = { (void *)chamber_heated_64x64x4, 64, 64, GREYSCALE4 }; + +const uint8_t chamber_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -91,7 +96,7 @@ extern const uint8_t chamber_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; -extern const uint8_t chamber_heated_64x64x4[2048] = { +const uint8_t chamber_heated_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/confirm_64x64x4.cpp b/Marlin/src/lcd/tft/images/confirm_64x64x4.cpp index ff623ed349..2c3da6fb79 100644 --- a/Marlin/src/lcd/tft/images/confirm_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/confirm_64x64x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t confirm_64x64x4[2048] = { +extern const uint8_t confirm_64x64x4[]; +const tImage Confirm_64x64x4 = { (void *)confirm_64x64x4, 64, 64, GREYSCALE4 }; + +const uint8_t confirm_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/decrease_64x64x4.cpp b/Marlin/src/lcd/tft/images/decrease_64x64x4.cpp index b586700986..dd85a1e66c 100644 --- a/Marlin/src/lcd/tft/images/decrease_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/decrease_64x64x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t decrease_64x64x4[2048] = { +extern const uint8_t decrease_64x64x4[]; +const tImage Decrease_64x64x4 = { (void *)decrease_64x64x4, 64, 64, GREYSCALE4 }; + +const uint8_t decrease_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/directory_32x32x4.cpp b/Marlin/src/lcd/tft/images/directory_32x32x4.cpp index 5fa55c8468..847eafd6d4 100644 --- a/Marlin/src/lcd/tft/images/directory_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/directory_32x32x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t directory_32x32x4[512] = { +extern const uint8_t directory_32x32x4[]; +const tImage Directory_32x32x4 = { (void *)directory_32x32x4, 32, 32, GREYSCALE4 }; + +const uint8_t directory_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/down_32x32x4.cpp b/Marlin/src/lcd/tft/images/down_32x32x4.cpp index eabf6f97fe..2ea8cc33c0 100644 --- a/Marlin/src/lcd/tft/images/down_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/down_32x32x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t down_32x32x4[512] = { +extern const uint8_t down_32x32x4[]; +const tImage Down_32x32x4 = { (void *)down_32x32x4, 32, 32, GREYSCALE4 }; + +const uint8_t down_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/fan_64x64x4.cpp b/Marlin/src/lcd/tft/images/fan_64x64x4.cpp index 1a154a6ea4..f4a09afe2b 100644 --- a/Marlin/src/lcd/tft/images/fan_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/fan_64x64x4.cpp @@ -21,10 +21,15 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t fan0_64x64x4[2048] = { +extern const uint8_t fan0_64x64x4[], fan1_64x64x4[]; +const tImage Fan0_64x64x4 = { (void *)fan0_64x64x4, 64, 64, GREYSCALE4 }; +const tImage Fan1_64x64x4 = { (void *)fan1_64x64x4, 64, 64, GREYSCALE4 }; + +const uint8_t fan0_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -91,7 +96,7 @@ extern const uint8_t fan0_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; -extern const uint8_t fan1_64x64x4[2048] = { +const uint8_t fan1_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/fan_fast_64x64x4.cpp b/Marlin/src/lcd/tft/images/fan_fast_64x64x4.cpp index 4586954ccf..e5b4bf3ae8 100644 --- a/Marlin/src/lcd/tft/images/fan_fast_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/fan_fast_64x64x4.cpp @@ -21,10 +21,15 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t fan_fast0_64x64x4[2048] = { +extern const uint8_t fan_fast0_64x64x4[], fan_fast1_64x64x4[]; +const tImage Fan_Fast0_64x64x4 = { (void *)fan_fast0_64x64x4, 64, 64, GREYSCALE4 }; +const tImage Fan_Fast1_64x64x4 = { (void *)fan_fast1_64x64x4, 64, 64, GREYSCALE4 }; + +const uint8_t fan_fast0_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -91,7 +96,7 @@ extern const uint8_t fan_fast0_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; -extern const uint8_t fan_fast1_64x64x4[2048] = { +const uint8_t fan_fast1_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/fan_slow_64x64x4.cpp b/Marlin/src/lcd/tft/images/fan_slow_64x64x4.cpp index 7bbd149ae7..009a7572a7 100644 --- a/Marlin/src/lcd/tft/images/fan_slow_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/fan_slow_64x64x4.cpp @@ -21,10 +21,15 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t fan_slow0_64x64x4[2048] = { +extern const uint8_t fan_slow0_64x64x4[], fan_slow1_64x64x4[]; +const tImage Fan_Slow0_64x64x4 = { (void *)fan_slow0_64x64x4, 64, 64, GREYSCALE4 }; +const tImage Fan_Slow1_64x64x4 = { (void *)fan_slow1_64x64x4, 64, 64, GREYSCALE4 }; + +const uint8_t fan_slow0_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -91,7 +96,7 @@ extern const uint8_t fan_slow0_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; -extern const uint8_t fan_slow1_64x64x4[2048] = { +const uint8_t fan_slow1_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/feedrate_32x32x4.cpp b/Marlin/src/lcd/tft/images/feedrate_32x32x4.cpp index 52f9124fdb..c5a51c49a7 100644 --- a/Marlin/src/lcd/tft/images/feedrate_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/feedrate_32x32x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t feedrate_32x32x4[512] = { +extern const uint8_t feedrate_32x32x4[]; +const tImage Feedrate_32x32x4 = { (void *)feedrate_32x32x4, 32, 32, GREYSCALE4 }; + +const uint8_t feedrate_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x87, 0x77, 0x77, 0x78, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x77, 0x8A, 0xCD, 0xA8, 0xCC, 0xB9, 0x87, 0x78, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x77, 0x9C, 0xEF, 0xFF, 0xA8, 0xFF, 0xFF, 0xDA, 0x87, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/flowrate_32x32x4.cpp b/Marlin/src/lcd/tft/images/flowrate_32x32x4.cpp index 2259472f79..ae98ed235b 100644 --- a/Marlin/src/lcd/tft/images/flowrate_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/flowrate_32x32x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t flowrate_32x32x4[512] = { +extern const uint8_t flowrate_32x32x4[]; +const tImage Flowrate_32x32x4 = { (void *)flowrate_32x32x4, 32, 32, GREYSCALE4 }; + +const uint8_t flowrate_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x88, 0x88, 0x88, 0x87, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/heated_bed_64x64x4.cpp b/Marlin/src/lcd/tft/images/heated_bed_64x64x4.cpp index 5382ff7558..486c5dfaa1 100644 --- a/Marlin/src/lcd/tft/images/heated_bed_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/heated_bed_64x64x4.cpp @@ -21,10 +21,15 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t bed_64x64x4[2048] = { +extern const uint8_t bed_64x64x4[], bed_heated_64x64x4[]; +const tImage Bed_64x64x4 = { (void *)bed_64x64x4, 64, 64, GREYSCALE4 }; +const tImage Bed_Heated_64x64x4 = { (void *)bed_heated_64x64x4, 64, 64, GREYSCALE4 }; + +const uint8_t bed_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -91,7 +96,7 @@ extern const uint8_t bed_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; -extern const uint8_t bed_heated_64x64x4[2048] = { +const uint8_t bed_heated_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/home_64x64x4.cpp b/Marlin/src/lcd/tft/images/home_64x64x4.cpp index 27384c99c0..a98978ff25 100644 --- a/Marlin/src/lcd/tft/images/home_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/home_64x64x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t home_64x64x4[2048] = { +extern const uint8_t home_64x64x4[]; +const tImage Home_64x64x4 = { (void *)home_64x64x4, 64, 64, GREYSCALE4 }; + +const uint8_t home_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/hotend_64x64x4.cpp b/Marlin/src/lcd/tft/images/hotend_64x64x4.cpp index 7b068aa7e4..f3829dd89e 100644 --- a/Marlin/src/lcd/tft/images/hotend_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/hotend_64x64x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t hotend_64x64x4[2048] = { +extern const uint8_t hotend_64x64x4[]; +const tImage HotEnd_64x64x4 = { (void *)hotend_64x64x4, 64, 64, GREYSCALE4 }; + +const uint8_t hotend_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/increase_64x64x4.cpp b/Marlin/src/lcd/tft/images/increase_64x64x4.cpp index 710fe8e78e..58b43cf661 100644 --- a/Marlin/src/lcd/tft/images/increase_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/increase_64x64x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t increase_64x64x4[2048] = { +extern const uint8_t increase_64x64x4[]; +const tImage Increase_64x64x4 = { (void *)increase_64x64x4, 64, 64, GREYSCALE4 }; + +const uint8_t increase_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/left_32x32x4.cpp b/Marlin/src/lcd/tft/images/left_32x32x4.cpp index 486518d508..b1d750a812 100644 --- a/Marlin/src/lcd/tft/images/left_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/left_32x32x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t left_32x32x4[512] = { +extern const uint8_t left_32x32x4[]; +const tImage Left_32x32x4 = { (void *)left_32x32x4, 32, 32, GREYSCALE4 }; + +const uint8_t left_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/leveling_32x32x4.cpp b/Marlin/src/lcd/tft/images/leveling_32x32x4.cpp index 3243d7f27f..0863feafba 100644 --- a/Marlin/src/lcd/tft/images/leveling_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/leveling_32x32x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t leveling_32x32x4[512] = { +extern const uint8_t leveling_32x32x4[]; +const tImage Leveling_32x32x4 = { (void *)leveling_32x32x4, 32, 32, GREYSCALE4 }; + +const uint8_t leveling_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/menu_64x64x4.cpp b/Marlin/src/lcd/tft/images/menu_64x64x4.cpp index bbbe66ab1b..2c4454148e 100644 --- a/Marlin/src/lcd/tft/images/menu_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/menu_64x64x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t menu_64x64x4[2048] = { +extern const uint8_t menu_64x64x4[]; +const tImage Menu_64x64x4 = { (void *)menu_64x64x4, 64, 64, GREYSCALE4 }; + +const uint8_t menu_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/pause_64x64x4.cpp b/Marlin/src/lcd/tft/images/pause_64x64x4.cpp index 3079b22a17..430fa8422c 100644 --- a/Marlin/src/lcd/tft/images/pause_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/pause_64x64x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t pause_64x64x4[2048] = { +extern const uint8_t pause_64x64x4[]; +const tImage Pause_64x64x4 = { (void *)pause_64x64x4, 64, 64, GREYSCALE4 }; + +const uint8_t pause_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/refresh_32x32x4.cpp b/Marlin/src/lcd/tft/images/refresh_32x32x4.cpp index f8548d2837..223e659233 100644 --- a/Marlin/src/lcd/tft/images/refresh_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/refresh_32x32x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t refresh_32x32x4[512] = { +extern const uint8_t refresh_32x32x4[]; +const tImage Refresh_32x32x4 = { (void *)refresh_32x32x4, 32, 32, GREYSCALE4 }; + +const uint8_t refresh_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/right_32x32x4.cpp b/Marlin/src/lcd/tft/images/right_32x32x4.cpp index ab9c36eae0..67d1496787 100644 --- a/Marlin/src/lcd/tft/images/right_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/right_32x32x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t right_32x32x4[512] = { +extern const uint8_t right_32x32x4[]; +const tImage Right_32x32x4 = { (void *)right_32x32x4, 32, 32, GREYSCALE4 }; + +const uint8_t right_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/sd_64x64x4.cpp b/Marlin/src/lcd/tft/images/sd_64x64x4.cpp index 3f786f46ca..805021f21b 100644 --- a/Marlin/src/lcd/tft/images/sd_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/sd_64x64x4.cpp @@ -21,9 +21,13 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT +extern const uint8_t sd_64x64x4[]; +const tImage SD_64x64x4 = { (void *)sd_64x64x4, 64, 64, GREYSCALE4 }; + extern const uint8_t sd_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/settings_64x64x4.cpp b/Marlin/src/lcd/tft/images/settings_64x64x4.cpp index 093e7ff61e..0817405143 100644 --- a/Marlin/src/lcd/tft/images/settings_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/settings_64x64x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t settings_64x64x4[2048] = { +extern const uint8_t settings_64x64x4[]; +const tImage Settings_64x64x4 = { (void *)settings_64x64x4, 64, 64, GREYSCALE4 }; + +const uint8_t settings_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/slider_8x16x4.cpp b/Marlin/src/lcd/tft/images/slider_8x16x4.cpp index 2839cd9806..e3d6298aa2 100644 --- a/Marlin/src/lcd/tft/images/slider_8x16x4.cpp +++ b/Marlin/src/lcd/tft/images/slider_8x16x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t slider_8x16x4[64] = { +extern const uint8_t slider_8x16x4[]; +const tImage Slider8x16x4 = { (void *)slider_8x16x4, 8, 16, GREYSCALE4 }; + +const uint8_t slider_8x16x4[64] = { 0x88, 0xFF, 0xFF, 0x88, 0x8F, 0xFF, 0xFF, 0xF8, 0x8F, 0xFF, 0xFF, 0xF8, diff --git a/Marlin/src/lcd/tft/images/time_elapsed_32x32x4.cpp b/Marlin/src/lcd/tft/images/time_elapsed_32x32x4.cpp index e6626f4c87..4ba462431f 100644 --- a/Marlin/src/lcd/tft/images/time_elapsed_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/time_elapsed_32x32x4.cpp @@ -17,10 +17,14 @@ **/ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t time_elapsed_32x32x4[512] = { +extern const uint8_t time_elapsed_32x32x4[]; +const tImage Time_Elapsed_32x32x4 = { (void *)time_elapsed_32x32x4, 32, 32, GREYSCALE4 }; + +const uint8_t time_elapsed_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xad, 0xca, 0x98, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8a, 0xff, 0xff, 0xfe, 0xb8, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/time_remaining_32x32x4.cpp b/Marlin/src/lcd/tft/images/time_remaining_32x32x4.cpp index 8c64403a2b..7088e9dea3 100644 --- a/Marlin/src/lcd/tft/images/time_remaining_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/time_remaining_32x32x4.cpp @@ -17,10 +17,14 @@ **/ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t time_remaining_32x32x4[512] = { +extern const uint8_t time_remaining_32x32x4[]; +const tImage Time_Remaining_32x32x4 = { (void *)time_remaining_32x32x4, 32, 32, GREYSCALE4 }; + +const uint8_t time_remaining_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x9a, 0xbd, 0xb8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x89, 0xce, 0xff, 0xff, 0xf9, 0x78, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/images/up_32x32x4.cpp b/Marlin/src/lcd/tft/images/up_32x32x4.cpp index b36a028cc9..9147ea9b2c 100644 --- a/Marlin/src/lcd/tft/images/up_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/up_32x32x4.cpp @@ -21,10 +21,14 @@ */ #include "../../../inc/MarlinConfigPre.h" +#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t up_32x32x4[512] = { +extern const uint8_t up_32x32x4[]; +const tImage Up_32x32x4 = { (void *)up_32x32x4, 32, 32, GREYSCALE4 }; + +const uint8_t up_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, diff --git a/Marlin/src/lcd/tft/tft.h b/Marlin/src/lcd/tft/tft.h index 15464cb045..87dea453df 100644 --- a/Marlin/src/lcd/tft/tft.h +++ b/Marlin/src/lcd/tft/tft.h @@ -23,7 +23,7 @@ #include "tft_queue.h" #include "canvas.h" -#include "tft_color.h" +#include "ui_theme.h" #include "tft_string.h" #include "tft_image.h" #include "../tft_io/tft_io.h" diff --git a/Marlin/src/lcd/tft/tft_color.h b/Marlin/src/lcd/tft/tft_color.h index 66ec41e711..cd03224615 100644 --- a/Marlin/src/lcd/tft/tft_color.h +++ b/Marlin/src/lcd/tft/tft_color.h @@ -67,125 +67,3 @@ #define COLOR_VIVID_GREEN 0x7FE0 // #7FFF00 #define COLOR_DARK_ORANGE 0xFC40 // #FF8C00 #define COLOR_CORAL_RED 0xF9E7 // #FF3F3F - -#ifndef COLOR_BACKGROUND - #define COLOR_BACKGROUND COLOR_MIDNIGHT_BLUE -#endif -#ifndef COLOR_SELECTION_BG - #define COLOR_SELECTION_BG COLOR_DARK_PURPLE -#endif -#ifndef COLOR_WEBSITE_URL - #define COLOR_WEBSITE_URL COLOR_OCEAN_BOAT_BLUE -#endif - -#ifndef COLOR_INACTIVE - #define COLOR_INACTIVE COLOR_GREY -#endif -#ifndef COLOR_COLD - #define COLOR_COLD COLOR_CYAN -#endif -#ifndef COLOR_HOTEND - #define COLOR_HOTEND COLOR_SCARLET -#endif -#ifndef COLOR_HEATED_BED - #define COLOR_HEATED_BED COLOR_DARK_ORANGE -#endif -#ifndef COLOR_CHAMBER - #define COLOR_CHAMBER COLOR_DARK_ORANGE -#endif -#ifndef COLOR_COOLER - #define COLOR_COOLER COLOR_DARK_ORANGE -#endif -#ifndef COLOR_FAN - #define COLOR_FAN COLOR_CYAN -#endif - -#ifndef COLOR_AXIS_HOMED - #define COLOR_AXIS_HOMED COLOR_WHITE -#endif -#ifndef COLOR_AXIS_NOT_HOMED - #define COLOR_AXIS_NOT_HOMED COLOR_YELLOW -#endif - -#ifndef COLOR_RATE_100 - #define COLOR_RATE_100 COLOR_VIVID_GREEN -#endif -#ifndef COLOR_RATE_ALTERED - #define COLOR_RATE_ALTERED COLOR_YELLOW -#endif - -#ifndef COLOR_PRINT_TIME - #define COLOR_PRINT_TIME COLOR_CYAN -#endif - -#ifndef COLOR_PROGRESS_FRAME - #define COLOR_PROGRESS_FRAME COLOR_WHITE -#endif -#ifndef COLOR_PROGRESS_BAR - #define COLOR_PROGRESS_BAR COLOR_BLUE -#endif -#ifndef COLOR_PROGRESS_BG - #define COLOR_PROGRESS_BG COLOR_BLACK -#endif - -#ifndef COLOR_STATUS_MESSAGE - #define COLOR_STATUS_MESSAGE COLOR_YELLOW -#endif - -#ifndef COLOR_CONTROL_ENABLED - #define COLOR_CONTROL_ENABLED COLOR_WHITE -#endif -#ifndef COLOR_CONTROL_DISABLED - #define COLOR_CONTROL_DISABLED COLOR_GREY -#endif -#ifndef COLOR_CONTROL_CANCEL - #define COLOR_CONTROL_CANCEL COLOR_SCARLET -#endif -#ifndef COLOR_CONTROL_CONFIRM - #define COLOR_CONTROL_CONFIRM COLOR_VIVID_GREEN -#endif -#ifndef COLOR_BUSY - #define COLOR_BUSY COLOR_SILVER -#endif - -#ifndef COLOR_MENU_TEXT - #define COLOR_MENU_TEXT COLOR_YELLOW -#endif -#ifndef COLOR_MENU_VALUE - #define COLOR_MENU_VALUE COLOR_WHITE -#endif - -#ifndef COLOR_SLIDER - #define COLOR_SLIDER COLOR_WHITE -#endif -#ifndef COLOR_SLIDER_INACTIVE - #define COLOR_SLIDER_INACTIVE COLOR_GREY -#endif - -#ifndef COLOR_UBL - #define COLOR_UBL COLOR_WHITE -#endif - -#ifndef COLOR_TOUCH_CALIBRATION - #define COLOR_TOUCH_CALIBRATION COLOR_WHITE -#endif - -#ifndef COLOR_KILL_SCREEN_BG - #define COLOR_KILL_SCREEN_BG COLOR_MAROON -#endif -#ifndef COLOR_KILL_SCREEN_TEXT - #define COLOR_KILL_SCREEN_TEXT COLOR_WHITE -#endif - -#ifndef E_BTN_COLOR - #define E_BTN_COLOR COLOR_YELLOW -#endif -#ifndef X_BTN_COLOR - #define X_BTN_COLOR COLOR_CORAL_RED -#endif -#ifndef Y_BTN_COLOR - #define Y_BTN_COLOR COLOR_VIVID_GREEN -#endif -#ifndef Z_BTN_COLOR - #define Z_BTN_COLOR COLOR_LIGHT_BLUE -#endif diff --git a/Marlin/src/lcd/tft/tft_font.h b/Marlin/src/lcd/tft/tft_font.h index 6c8838ed7c..114c1b735e 100644 --- a/Marlin/src/lcd/tft/tft_font.h +++ b/Marlin/src/lcd/tft/tft_font.h @@ -21,10 +21,6 @@ */ #pragma once -#include "../../inc/MarlinConfigPre.h" - -#if HAS_GRAPHICAL_TFT - #define JOIN(A,B,C) CAT(CAT(A, B), C) #define MENU_FONT_NAME JOIN(FONT_FAMILY, _, FONT_SIZE) #define SYMBOLS_FONT_NAME JOIN(FONT_FAMILY, _Symbols_, FONT_SIZE) @@ -36,5 +32,3 @@ extern const uint8_t SYMBOLS_FONT_NAME[]; #define EXTRA_FONT_NAME JOIN(FONT_FAMILY, JOIN(_, FONT_EXTRA, _), FONT_SIZE) extern const uint8_t EXTRA_FONT_NAME[]; #endif - -#endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/tft_image.cpp b/Marlin/src/lcd/tft/tft_image.cpp index 6309de032e..1a5851948d 100644 --- a/Marlin/src/lcd/tft/tft_image.cpp +++ b/Marlin/src/lcd/tft/tft_image.cpp @@ -27,58 +27,10 @@ #include "tft_image.h" #include "ui_common.h" -const tImage NoLogo = { nullptr, 0, 0, NOCOLORS }; - -#if ENABLED(SHOW_BOOTSCREEN) - const tImage MarlinLogo112x38x1 = { (void *)marlin_logo_112x38x1, 112, 38, GREYSCALE1 }; - const tImage MarlinLogo228x255x2 = { (void *)marlin_logo_228x255x2, 228, 255, GREYSCALE2 }; - const tImage MarlinLogo228x255x4 = { (void *)marlin_logo_228x255x4, 228, 255, GREYSCALE4 }; - const tImage MarlinLogo195x59x16 = { (void *)marlin_logo_195x59x16, 195, 59, HIGHCOLOR }; - const tImage MarlinLogo320x240x16 = { (void *)marlin_logo_320x240x16, 320, 240, HIGHCOLOR }; - const tImage MarlinLogo480x320x16 = { (void *)marlin_logo_480x320x16, 480, 320, HIGHCOLOR }; -#endif -const tImage Background320x30x16 = { (void *)background_320x30x16, 320, 30, HIGHCOLOR }; - -const tImage HotEnd_64x64x4 = { (void *)hotend_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Bed_64x64x4 = { (void *)bed_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Bed_Heated_64x64x4 = { (void *)bed_heated_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Chamber_64x64x4 = { (void *)chamber_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Chamber_Heated_64x64x4 = { (void *)chamber_heated_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Fan0_64x64x4 = { (void *)fan0_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Fan1_64x64x4 = { (void *)fan1_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Fan_Slow0_64x64x4 = { (void *)fan_slow0_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Fan_Slow1_64x64x4 = { (void *)fan_slow1_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Fan_Fast0_64x64x4 = { (void *)fan_fast0_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Fan_Fast1_64x64x4 = { (void *)fan_fast1_64x64x4, 64, 64, GREYSCALE4 }; -const tImage SD_64x64x4 = { (void *)sd_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Home_64x64x4 = { (void *)home_64x64x4, 64, 64, GREYSCALE4 }; -const tImage BtnRounded_64x52x4 = { (void *)btn_rounded_64x52x4, 64, 52, GREYSCALE4 }; -const tImage BtnRounded_42x39x4 = { (void *)btn_rounded_42x39x4, 42, 39, GREYSCALE4 }; -const tImage Menu_64x64x4 = { (void *)menu_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Settings_64x64x4 = { (void *)settings_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Confirm_64x64x4 = { (void *)confirm_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Cancel_64x64x4 = { (void *)cancel_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Increase_64x64x4 = { (void *)increase_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Decrease_64x64x4 = { (void *)decrease_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Pause_64x64x4 = { (void *)pause_64x64x4, 64, 64, GREYSCALE4 }; - -const tImage Feedrate_32x32x4 = { (void *)feedrate_32x32x4, 32, 32, GREYSCALE4 }; -const tImage Flowrate_32x32x4 = { (void *)flowrate_32x32x4, 32, 32, GREYSCALE4 }; -const tImage Directory_32x32x4 = { (void *)directory_32x32x4, 32, 32, GREYSCALE4 }; -const tImage Back_32x32x4 = { (void *)back_32x32x4, 32, 32, GREYSCALE4 }; -const tImage Up_32x32x4 = { (void *)up_32x32x4, 32, 32, GREYSCALE4 }; -const tImage Down_32x32x4 = { (void *)down_32x32x4, 32, 32, GREYSCALE4 }; -const tImage Left_32x32x4 = { (void *)left_32x32x4, 32, 32, GREYSCALE4 }; -const tImage Right_32x32x4 = { (void *)right_32x32x4, 32, 32, GREYSCALE4 }; -const tImage Refresh_32x32x4 = { (void *)refresh_32x32x4, 32, 32, GREYSCALE4 }; -const tImage Leveling_32x32x4 = { (void *)leveling_32x32x4, 32, 32, GREYSCALE4 }; -const tImage Time_Elapsed_32x32x4 = { (void *)time_elapsed_32x32x4, 32, 32, GREYSCALE4 }; -const tImage Time_Remaining_32x32x4 = { (void *)time_remaining_32x32x4, 32, 32, GREYSCALE4 }; - -const tImage Slider8x16x4 = { (void *)slider_8x16x4, 8, 16, GREYSCALE4 }; +const tImage NoLogo = { nullptr, 0, 0, NOCOLORS }; const tImage images[imgCount] = { - TERN(SHOW_BOOTSCREEN, TERN(BOOT_MARLIN_LOGO_SMALL, MarlinLogo195x59x16, MARLIN_LOGO_FULL_SIZE), NoLogo), + TERN(SHOW_BOOTSCREEN, BOOTSCREEN_LOGO, NoLogo), HotEnd_64x64x4, Bed_64x64x4, Bed_Heated_64x64x4, diff --git a/Marlin/src/lcd/tft/tft_image.h b/Marlin/src/lcd/tft/tft_image.h index 7761a72dc3..7087ea44ba 100644 --- a/Marlin/src/lcd/tft/tft_image.h +++ b/Marlin/src/lcd/tft/tft_image.h @@ -25,47 +25,6 @@ #include -extern const uint8_t marlin_logo_112x38x1[]; -extern const uint8_t marlin_logo_228x255x2[]; -extern const uint8_t marlin_logo_228x255x4[]; -extern const uint16_t marlin_logo_195x59x16[]; -extern const uint16_t marlin_logo_320x240x16[]; -extern const uint16_t marlin_logo_480x320x16[]; -extern const uint16_t background_320x30x16[]; - -extern const uint8_t hotend_64x64x4[]; -extern const uint8_t bed_64x64x4[], bed_heated_64x64x4[]; -extern const uint8_t chamber_64x64x4[], chamber_heated_64x64x4[]; -extern const uint8_t fan0_64x64x4[], fan1_64x64x4[]; -extern const uint8_t fan_slow0_64x64x4[], fan_slow1_64x64x4[]; -extern const uint8_t fan_fast0_64x64x4[], fan_fast1_64x64x4[]; -extern const uint8_t sd_64x64x4[]; -extern const uint8_t home_64x64x4[]; -extern const uint8_t btn_rounded_64x52x4[]; -extern const uint8_t btn_rounded_42x39x4[]; -extern const uint8_t menu_64x64x4[]; -extern const uint8_t settings_64x64x4[]; -extern const uint8_t confirm_64x64x4[]; -extern const uint8_t cancel_64x64x4[]; -extern const uint8_t increase_64x64x4[]; -extern const uint8_t decrease_64x64x4[]; -extern const uint8_t pause_64x64x4[]; - -extern const uint8_t feedrate_32x32x4[]; -extern const uint8_t flowrate_32x32x4[]; -extern const uint8_t directory_32x32x4[]; -extern const uint8_t back_32x32x4[]; -extern const uint8_t up_32x32x4[]; -extern const uint8_t down_32x32x4[]; -extern const uint8_t left_32x32x4[]; -extern const uint8_t right_32x32x4[]; -extern const uint8_t refresh_32x32x4[]; -extern const uint8_t leveling_32x32x4[]; -extern const uint8_t time_elapsed_32x32x4[]; -extern const uint8_t time_remaining_32x32x4[]; - -extern const uint8_t slider_8x16x4[]; - enum MarlinImage : uint8_t { imgBootScreen = 0x00, imgHotEnd, diff --git a/Marlin/src/lcd/tft/tft_string.h b/Marlin/src/lcd/tft/tft_string.h index 420a3cc2b5..ae05df40f0 100644 --- a/Marlin/src/lcd/tft/tft_string.h +++ b/Marlin/src/lcd/tft/tft_string.h @@ -51,98 +51,7 @@ #define FONT_MARLIN_HIEROGLYPHS_2BPP 0xA2 #define FONT_MARLIN_HIEROGLYPHS_4BPP 0xA4 -#define _LATIN_EXTENDED_A 1 -#define _CYRILLIC 2 -#define _GREEK 3 -#define _KATAKANA 4 -#define _KOREAN 5 -#define _VIETNAMESE 6 -#define _SIMPLIFIED_CHINESE 7 -#define _TRADITIONAL_CHINESE 8 - -#define LCODE_cz _LATIN_EXTENDED_A -#define LCODE_hr _LATIN_EXTENDED_A -#define LCODE_pl _LATIN_EXTENDED_A -#define LCODE_sk _LATIN_EXTENDED_A -#define LCODE_tr _LATIN_EXTENDED_A -#define LCODE_bg _CYRILLIC -#define LCODE_ru _CYRILLIC -#define LCODE_uk _CYRILLIC -#define LCODE_el _GREEK -#define LCODE_el_CY _GREEK -#define LCODE_jp_kana _KATAKANA -#define LCODE_ko_KR _KOREAN -#define LCODE_vi _VIETNAMESE -#define LCODE_zh_CN _SIMPLIFIED_CHINESE -#define LCODE_zh_TW _TRADITIONAL_CHINESE - -#define _LCODE(N) (CAT(LCODE_, LCD_LANGUAGE) == N) - -#if _LCODE(_LATIN_EXTENDED_A) - #define FONT_EXTRA Latin_Extended_A - #define EXTRA_GLYPHS 128 -#elif _LCODE(_CYRILLIC) - #define FONT_EXTRA Cyrillic - #define EXTRA_GLYPHS 145 -#elif _LCODE(_GREEK) - #define FONT_EXTRA Greek - #define EXTRA_GLYPHS 73 -#elif _LCODE(_KATAKANA) - #define FONT_EXTRA Katakana - #define EXTRA_GLYPHS 102 -#elif _LCODE(_KOREAN) - #define FONT_EXTRA Korean - #define EXTRA_GLYPHS 110 -#elif _LCODE(_VIETNAMESE) - #define FONT_EXTRA Vietnamese - #define EXTRA_GLYPHS 107 -#elif _LCODE(_SIMPLIFIED_CHINESE) - #define FONT_EXTRA Simplified_Chinese - #define EXTRA_GLYPHS 373 -#elif _LCODE(_TRADITIONAL_CHINESE) - #define FONT_EXTRA Traditional_Chinese - #define EXTRA_GLYPHS 307 -#else // Basin Latin (0x0020 - 0x007f) and Latin-1 Supplement (0x0080-0x00ff) characters only - #define EXTRA_GLYPHS 0 -#endif - -#undef _LCODE -#undef LCODE_cz -#undef LCODE_hr -#undef LCODE_pl -#undef LCODE_sk -#undef LCODE_tr -#undef LCODE_bg -#undef LCODE_ru -#undef LCODE_uk -#undef LCODE_el -#undef LCODE_el_CY -#undef LCODE_jp_kana -#undef LCODE_ko_KR -#undef LCODE_vi -#undef LCODE_zh_CN -#undef LCODE_zh_TW - -#define NOTOSANS 1 -#define UNIFONT 2 -#define HELVETICA 3 - -#ifndef TFT_FONT - #define TFT_FONT NOTOSANS -#endif - -#if TFT_FONT == NOTOSANS - #define FONT_FAMILY NotoSans_Medium -#elif TFT_FONT == UNIFONT - #define FONT_FAMILY Unifont -#elif TFT_FONT == HELVETICA - #define FONT_FAMILY Helvetica - #ifdef FONT_EXTRA - #error "Helvetica font does not have symbols required for selected LCD_LANGUAGE." - #endif -#else - #error "Invalid TFT_FONT value." -#endif +#include "fontdata/fontdata.h" // TFT font with unicode support typedef struct __attribute__((__packed__)) { diff --git a/Marlin/src/lcd/tft/themes/theme_ANET_BLACK.h b/Marlin/src/lcd/tft/themes/theme_ANET_BLACK.h new file mode 100644 index 0000000000..8db729a04b --- /dev/null +++ b/Marlin/src/lcd/tft/themes/theme_ANET_BLACK.h @@ -0,0 +1,53 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +// Anet ET4/ET5 Black Theme + +#define COLOR_RED2 0xF003 // #F70019 +#define COLOR_ORANGE2 0xFDE0 // #FFBE00 +#define COLOR_LIME2 0xA7E0 // #A5FF00 +#define COLOR_BLACK2 0x2124 // #212421 + +#define COLOR_BACKGROUND COLOR_BLACK2 +#define COLOR_SELECTION_BG COLOR_ORANGE2 +#define COLOR_COLD COLOR_WHITE +#define COLOR_HOTEND COLOR_RED2 +#define COLOR_HEATED_BED COLOR_RED2 +#define COLOR_CHAMBER COLOR_WHITE +#define COLOR_FAN COLOR_WHITE +#define COLOR_AXIS_FRAME COLOR_WHITE +#define COLOR_AXIS_HOMED COLOR_ORANGE2 +#define COLOR_AXIS_NOT_HOMED COLOR_ORANGE2 +#define COLOR_RATE_100 COLOR_LIME2 +#define COLOR_RATE_ALTERED COLOR_ORANGE2 +#define COLOR_PRINT_TIME COLOR_WHITE +#define COLOR_PROGRESS_BAR COLOR_ORANGE2 +#define COLOR_STATUS_MESSAGE COLOR_ORANGE2 +#define COLOR_SD_ENABLED COLOR_CONTROL_ENABLED +#define COLOR_SD_DISABLED COLOR_CONTROL_DISABLED +#define COLOR_MENU_TEXT COLOR_WHITE +#define COLOR_MENU_VALUE_FONT COLOR_ORANGE2 +#define COLOR_SLIDER COLOR_ORANGE2 +#define COLOR_INCREASE COLOR_WHITE +#define COLOR_DECREASE COLOR_WHITE +#define COLOR_TICK COLOR_VIVID_GREEN diff --git a/Marlin/src/lcd/tft/themes/theme_BLACK_MARLIN.h b/Marlin/src/lcd/tft/themes/theme_BLACK_MARLIN.h new file mode 100644 index 0000000000..4af483b492 --- /dev/null +++ b/Marlin/src/lcd/tft/themes/theme_BLACK_MARLIN.h @@ -0,0 +1,30 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#define MOVE_AXIS_SCREEN // Special "Move Axis" screen activated by touching coordinates area + +#ifndef COLOR_BACKGROUND + #define COLOR_BACKGROUND COLOR_BLACK +#endif +#define COLOR_COLD COLOR_WHITE +#define COLOR_FAN COLOR_WHITE diff --git a/Marlin/src/lcd/tft/themes/theme_BLUE_MARLIN.h b/Marlin/src/lcd/tft/themes/theme_BLUE_MARLIN.h new file mode 100644 index 0000000000..9e0a518bad --- /dev/null +++ b/Marlin/src/lcd/tft/themes/theme_BLUE_MARLIN.h @@ -0,0 +1,133 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#define MOVE_AXIS_SCREEN // Special "Move Axis" screen activated by touching coordinates area + +#ifndef COLOR_BACKGROUND + #define COLOR_BACKGROUND COLOR_MIDNIGHT_BLUE +#endif +#ifndef COLOR_SELECTION_BG + #define COLOR_SELECTION_BG COLOR_DARK_PURPLE +#endif +#ifndef COLOR_WEBSITE_URL + #define COLOR_WEBSITE_URL COLOR_OCEAN_BOAT_BLUE +#endif + +#ifndef COLOR_INACTIVE + #define COLOR_INACTIVE COLOR_GREY +#endif +#ifndef COLOR_COLD + #define COLOR_COLD COLOR_CYAN +#endif +#ifndef COLOR_HOTEND + #define COLOR_HOTEND COLOR_SCARLET +#endif +#ifndef COLOR_HEATED_BED + #define COLOR_HEATED_BED COLOR_DARK_ORANGE +#endif +#ifndef COLOR_CHAMBER + #define COLOR_CHAMBER COLOR_DARK_ORANGE +#endif +#ifndef COLOR_COOLER + #define COLOR_COOLER COLOR_DARK_ORANGE +#endif +#ifndef COLOR_FAN + #define COLOR_FAN COLOR_CYAN +#endif + +#ifndef COLOR_AXIS_HOMED + #define COLOR_AXIS_HOMED COLOR_WHITE +#endif +#ifndef COLOR_AXIS_NOT_HOMED + #define COLOR_AXIS_NOT_HOMED COLOR_YELLOW +#endif + +#ifndef COLOR_RATE_100 + #define COLOR_RATE_100 COLOR_VIVID_GREEN +#endif +#ifndef COLOR_RATE_ALTERED + #define COLOR_RATE_ALTERED COLOR_YELLOW +#endif + +#ifndef COLOR_PRINT_TIME + #define COLOR_PRINT_TIME COLOR_CYAN +#endif + +#ifndef COLOR_PROGRESS_FRAME + #define COLOR_PROGRESS_FRAME COLOR_WHITE +#endif +#ifndef COLOR_PROGRESS_BAR + #define COLOR_PROGRESS_BAR COLOR_BLUE +#endif +#ifndef COLOR_PROGRESS_BG + #define COLOR_PROGRESS_BG COLOR_BLACK +#endif + +#ifndef COLOR_STATUS_MESSAGE + #define COLOR_STATUS_MESSAGE COLOR_YELLOW +#endif + +#ifndef COLOR_CONTROL_ENABLED + #define COLOR_CONTROL_ENABLED COLOR_WHITE +#endif +#ifndef COLOR_CONTROL_DISABLED + #define COLOR_CONTROL_DISABLED COLOR_GREY +#endif +#ifndef COLOR_CONTROL_CANCEL + #define COLOR_CONTROL_CANCEL COLOR_SCARLET +#endif +#ifndef COLOR_CONTROL_CONFIRM + #define COLOR_CONTROL_CONFIRM COLOR_VIVID_GREEN +#endif +#ifndef COLOR_BUSY + #define COLOR_BUSY COLOR_SILVER +#endif + +#ifndef COLOR_MENU_TEXT + #define COLOR_MENU_TEXT COLOR_YELLOW +#endif +#ifndef COLOR_MENU_VALUE + #define COLOR_MENU_VALUE COLOR_WHITE +#endif + +#ifndef COLOR_SLIDER + #define COLOR_SLIDER COLOR_WHITE +#endif +#ifndef COLOR_SLIDER_INACTIVE + #define COLOR_SLIDER_INACTIVE COLOR_GREY +#endif + +#ifndef COLOR_UBL + #define COLOR_UBL COLOR_WHITE +#endif + +#ifndef COLOR_TOUCH_CALIBRATION + #define COLOR_TOUCH_CALIBRATION COLOR_WHITE +#endif + +#ifndef COLOR_KILL_SCREEN_BG + #define COLOR_KILL_SCREEN_BG COLOR_MAROON +#endif +#ifndef COLOR_KILL_SCREEN_TEXT + #define COLOR_KILL_SCREEN_TEXT COLOR_WHITE +#endif diff --git a/Marlin/src/lcd/tft/themes/theme_CUSTOM.h b/Marlin/src/lcd/tft/themes/theme_CUSTOM.h new file mode 100644 index 0000000000..4af483b492 --- /dev/null +++ b/Marlin/src/lcd/tft/themes/theme_CUSTOM.h @@ -0,0 +1,30 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#define MOVE_AXIS_SCREEN // Special "Move Axis" screen activated by touching coordinates area + +#ifndef COLOR_BACKGROUND + #define COLOR_BACKGROUND COLOR_BLACK +#endif +#define COLOR_COLD COLOR_WHITE +#define COLOR_FAN COLOR_WHITE diff --git a/Marlin/src/lcd/tft/themes/theme_default.h b/Marlin/src/lcd/tft/themes/theme_default.h new file mode 100644 index 0000000000..c2e1770904 --- /dev/null +++ b/Marlin/src/lcd/tft/themes/theme_default.h @@ -0,0 +1,144 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#ifndef COLOR_BACKGROUND + #define COLOR_BACKGROUND COLOR_MIDNIGHT_BLUE +#endif +#ifndef COLOR_SELECTION_BG + #define COLOR_SELECTION_BG COLOR_DARK_PURPLE +#endif +#ifndef COLOR_WEBSITE_URL + #define COLOR_WEBSITE_URL COLOR_OCEAN_BOAT_BLUE +#endif + +#ifndef COLOR_INACTIVE + #define COLOR_INACTIVE COLOR_GREY +#endif +#ifndef COLOR_COLD + #define COLOR_COLD COLOR_CYAN +#endif +#ifndef COLOR_HOTEND + #define COLOR_HOTEND COLOR_SCARLET +#endif +#ifndef COLOR_HEATED_BED + #define COLOR_HEATED_BED COLOR_DARK_ORANGE +#endif +#ifndef COLOR_CHAMBER + #define COLOR_CHAMBER COLOR_DARK_ORANGE +#endif +#ifndef COLOR_COOLER + #define COLOR_COOLER COLOR_DARK_ORANGE +#endif +#ifndef COLOR_FAN + #define COLOR_FAN COLOR_CYAN +#endif + +#ifndef COLOR_AXIS_HOMED + #define COLOR_AXIS_HOMED COLOR_WHITE +#endif +#ifndef COLOR_AXIS_NOT_HOMED + #define COLOR_AXIS_NOT_HOMED COLOR_YELLOW +#endif + +#ifndef COLOR_RATE_100 + #define COLOR_RATE_100 COLOR_VIVID_GREEN +#endif +#ifndef COLOR_RATE_ALTERED + #define COLOR_RATE_ALTERED COLOR_YELLOW +#endif + +#ifndef COLOR_PRINT_TIME + #define COLOR_PRINT_TIME COLOR_CYAN +#endif + +#ifndef COLOR_PROGRESS_FRAME + #define COLOR_PROGRESS_FRAME COLOR_WHITE +#endif +#ifndef COLOR_PROGRESS_BAR + #define COLOR_PROGRESS_BAR COLOR_BLUE +#endif +#ifndef COLOR_PROGRESS_BG + #define COLOR_PROGRESS_BG COLOR_BLACK +#endif + +#ifndef COLOR_STATUS_MESSAGE + #define COLOR_STATUS_MESSAGE COLOR_YELLOW +#endif + +#ifndef COLOR_CONTROL_ENABLED + #define COLOR_CONTROL_ENABLED COLOR_WHITE +#endif +#ifndef COLOR_CONTROL_DISABLED + #define COLOR_CONTROL_DISABLED COLOR_GREY +#endif +#ifndef COLOR_CONTROL_CANCEL + #define COLOR_CONTROL_CANCEL COLOR_SCARLET +#endif +#ifndef COLOR_CONTROL_CONFIRM + #define COLOR_CONTROL_CONFIRM COLOR_VIVID_GREEN +#endif +#ifndef COLOR_BUSY + #define COLOR_BUSY COLOR_SILVER +#endif + +#ifndef COLOR_MENU_TEXT + #define COLOR_MENU_TEXT COLOR_YELLOW +#endif +#ifndef COLOR_MENU_VALUE + #define COLOR_MENU_VALUE COLOR_WHITE +#endif + +#ifndef COLOR_SLIDER + #define COLOR_SLIDER COLOR_WHITE +#endif +#ifndef COLOR_SLIDER_INACTIVE + #define COLOR_SLIDER_INACTIVE COLOR_GREY +#endif + +#ifndef COLOR_UBL + #define COLOR_UBL COLOR_WHITE +#endif + +#ifndef COLOR_TOUCH_CALIBRATION + #define COLOR_TOUCH_CALIBRATION COLOR_WHITE +#endif + +#ifndef COLOR_KILL_SCREEN_BG + #define COLOR_KILL_SCREEN_BG COLOR_MAROON +#endif +#ifndef COLOR_KILL_SCREEN_TEXT + #define COLOR_KILL_SCREEN_TEXT COLOR_WHITE +#endif + +#ifndef E_BTN_COLOR + #define E_BTN_COLOR COLOR_YELLOW +#endif +#ifndef X_BTN_COLOR + #define X_BTN_COLOR COLOR_CORAL_RED +#endif +#ifndef Y_BTN_COLOR + #define Y_BTN_COLOR COLOR_VIVID_GREEN +#endif +#ifndef Z_BTN_COLOR + #define Z_BTN_COLOR COLOR_LIGHT_BLUE +#endif diff --git a/Marlin/src/lcd/tft/touch.cpp b/Marlin/src/lcd/tft/touch.cpp index 0c742071ff..3de0f4f42a 100644 --- a/Marlin/src/lcd/tft/touch.cpp +++ b/Marlin/src/lcd/tft/touch.cpp @@ -247,10 +247,6 @@ void Touch::touch(touch_control_t *control) { case UBL: hold(control, UBL_REPEAT_DELAY); ui.encoderPosition += control->data; break; #endif - case MOVE_AXIS: - ui.goto_screen((screenFunc_t)ui.move_axis_screen); - break; - // TODO: TOUCH could receive data to pass to the callback case BUTTON: ((screenFunc_t)control->data)(); break; @@ -323,11 +319,4 @@ bool MarlinUI::touch_pressed() { return touch.is_clicked(); } -void add_control(uint16_t x, uint16_t y, TouchControlType control_type, intptr_t data, MarlinImage image, bool is_enabled, uint16_t color_enabled, uint16_t color_disabled) { - const uint16_t width = images[image].width, height = images[image].height; - tft.canvas(x, y, width, height); - tft.add_image(0, 0, image, is_enabled ? color_enabled : color_disabled); - if (is_enabled) touch.add_control(control_type, x, y, width, height, data); -} - #endif // TOUCH_SCREEN diff --git a/Marlin/src/lcd/tft/touch.h b/Marlin/src/lcd/tft/touch.h index 91e863573b..16f51bfaaa 100644 --- a/Marlin/src/lcd/tft/touch.h +++ b/Marlin/src/lcd/tft/touch.h @@ -23,9 +23,6 @@ #include "../../inc/MarlinConfigPre.h" -#include "tft_color.h" -#include "tft_image.h" - #if ENABLED(TOUCH_SCREEN_CALIBRATION) #include "../tft_io/touch_calibration.h" #endif @@ -64,17 +61,10 @@ enum TouchControlType : uint16_t { FEEDRATE, FLOWRATE, UBL, - MOVE_AXIS, STOP, BUTTON, }; -typedef void (*screenFunc_t)(); - -void add_control(uint16_t x, uint16_t y, TouchControlType control_type, intptr_t data, MarlinImage image, bool is_enabled = true, uint16_t color_enabled = COLOR_CONTROL_ENABLED, uint16_t color_disabled = COLOR_CONTROL_DISABLED); -inline void add_control(uint16_t x, uint16_t y, TouchControlType control_type, MarlinImage image, bool is_enabled = true, uint16_t color_enabled = COLOR_CONTROL_ENABLED, uint16_t color_disabled = COLOR_CONTROL_DISABLED) { add_control(x, y, control_type, 0, image, is_enabled, color_enabled, color_disabled); } -inline void add_control(uint16_t x, uint16_t y, screenFunc_t screen, MarlinImage image, bool is_enabled = true, uint16_t color_enabled = COLOR_CONTROL_ENABLED, uint16_t color_disabled = COLOR_CONTROL_DISABLED) { add_control(x, y, MENU_SCREEN, (intptr_t)screen, image, is_enabled, color_enabled, color_disabled); } - typedef struct __attribute__((__packed__)) { TouchControlType type; uint16_t x; @@ -109,7 +99,7 @@ class Touch { static bool get_point(int16_t *x, int16_t *y); static void touch(touch_control_t *control); - static void hold(touch_control_t *control, millis_t delay = 0); + static void hold(touch_control_t *control, millis_t delay=0); public: static void init(); @@ -131,7 +121,10 @@ class Touch { static void sleepTimeout(); static void wakeUp(); #endif - static void add_control(TouchControlType type, uint16_t x, uint16_t y, uint16_t width, uint16_t height, intptr_t data = 0); + static void add_control(TouchControlType type, uint16_t x, uint16_t y, uint16_t width, uint16_t height, intptr_t data=0); + static void add_control(TouchControlType type, uint16_t x, uint16_t y, uint16_t width, uint16_t height, void (*handler)()) { + add_control(type, x, y, width, height, intptr_t(handler)); + } }; extern Touch touch; diff --git a/Marlin/src/lcd/tft/ui_1024x600.cpp b/Marlin/src/lcd/tft/ui_1024x600.cpp deleted file mode 100644 index ddb606674c..0000000000 --- a/Marlin/src/lcd/tft/ui_1024x600.cpp +++ /dev/null @@ -1,1083 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "../../inc/MarlinConfigPre.h" - -#if HAS_UI_1024x600 - -#include "ui_common.h" - -#include "../marlinui.h" -#include "../menu/menu.h" -#include "../../libs/numtostr.h" - -#include "../../sd/cardreader.h" -#include "../../module/temperature.h" -#include "../../module/printcounter.h" -#include "../../module/planner.h" -#include "../../module/motion.h" - -#if DISABLED(LCD_PROGRESS_BAR) && ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) - #include "../../feature/filwidth.h" - #include "../../gcode/parser.h" -#endif - -#if ENABLED(AUTO_BED_LEVELING_UBL) - #include "../../feature/bedlevel/bedlevel.h" -#endif - -void MarlinUI::tft_idle() { - #if ENABLED(TOUCH_SCREEN) - if (TERN0(HAS_TOUCH_SLEEP, lcd_sleep_task())) return; - if (draw_menu_navigation) { - add_control(164, TFT_HEIGHT - 50, PAGE_UP, imgPageUp, encoderTopLine > 0); - add_control(796, TFT_HEIGHT - 50, PAGE_DOWN, imgPageDown, encoderTopLine + LCD_HEIGHT < screen_items); - add_control(480, TFT_HEIGHT - 50, BACK, imgBack); - draw_menu_navigation = false; - } - #endif - - tft.queue.async(); - - TERN_(TOUCH_SCREEN, if (tft.queue.is_empty()) touch.idle()); // Touch driver is not DMA-aware, so only check for touch controls after screen drawing is completed -} - -#if ENABLED(SHOW_BOOTSCREEN) - - void MarlinUI::show_bootscreen() { - tft.queue.reset(); - - tft.canvas(0, 0, TFT_WIDTH, TFT_HEIGHT); - #if ENABLED(BOOT_MARLIN_LOGO_SMALL) - #define BOOT_LOGO_W 195 // MarlinLogo195x59x16 - #define BOOT_LOGO_H 59 - #define SITE_URL_Y (TFT_HEIGHT - 70) - tft.set_background(COLOR_BACKGROUND); - #else - #define BOOT_LOGO_W TFT_WIDTH // MarlinLogo480x320x16 - #define BOOT_LOGO_H TFT_HEIGHT - #define SITE_URL_Y (TFT_HEIGHT - 90) - #endif - tft.add_image((TFT_WIDTH - BOOT_LOGO_W) / 2, (TFT_HEIGHT - BOOT_LOGO_H) / 2, imgBootScreen); - #ifdef WEBSITE_URL - tft_string.set(WEBSITE_URL); - tft.add_text(tft_string.center(TFT_WIDTH), SITE_URL_Y, COLOR_WEBSITE_URL, tft_string); - #endif - - tft.queue.sync(); - } - - void MarlinUI::bootscreen_completion(const millis_t sofar) { - if ((BOOTSCREEN_TIMEOUT) > sofar) safe_delay((BOOTSCREEN_TIMEOUT) - sofar); - clear_lcd(); - } - -#endif - -void MarlinUI::draw_kill_screen() { - tft.queue.reset(); - tft.fill(0, 0, TFT_WIDTH, TFT_HEIGHT, COLOR_KILL_SCREEN_BG); - - uint16_t line = 2; - - menu_line(line++, COLOR_KILL_SCREEN_BG); - tft_string.set(status_message); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); - - line++; - menu_line(line++, COLOR_KILL_SCREEN_BG); - tft_string.set(GET_TEXT_F(MSG_HALTED)); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); - - menu_line(line++, COLOR_KILL_SCREEN_BG); - tft_string.set(GET_TEXT_F(MSG_PLEASE_RESET)); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); - - tft.queue.sync(); -} - -void draw_heater_status(uint16_t x, uint16_t y, const int8_t heater) { - MarlinImage image = imgHotEnd; - celsius_t currentTemperature, targetTemperature; - - if (heater >= 0) { // HotEnd - #if HAS_EXTRUDERS - currentTemperature = thermalManager.wholeDegHotend(heater); - targetTemperature = thermalManager.degTargetHotend(heater); - #else - return; - #endif - } - #if HAS_HEATED_BED - else if (heater == H_BED) { - currentTemperature = thermalManager.wholeDegBed(); - targetTemperature = thermalManager.degTargetBed(); - } - #endif - #if HAS_TEMP_CHAMBER - else if (heater == H_CHAMBER) { - currentTemperature = thermalManager.wholeDegChamber(); - #if HAS_HEATED_CHAMBER - targetTemperature = thermalManager.degTargetChamber(); - #else - targetTemperature = ABSOLUTE_ZERO; - #endif - } - #endif - #if HAS_TEMP_COOLER - else if (heater == H_COOLER) { - currentTemperature = thermalManager.wholeDegCooler(); - targetTemperature = TERN(HAS_COOLER, thermalManager.degTargetCooler(), ABSOLUTE_ZERO); - } - #endif - else return; - - TERN_(TOUCH_SCREEN, if (targetTemperature >= 0) touch.add_control(HEATER, x, y, 80, 120, heater)); - tft.canvas(x, y, 80, 120); - tft.set_background(COLOR_BACKGROUND); - - uint16_t color = currentTemperature < 0 ? COLOR_INACTIVE : COLOR_COLD; - - if (heater >= 0) { // HotEnd - if (currentTemperature >= 50) color = COLOR_HOTEND; - } - #if HAS_HEATED_BED - else if (heater == H_BED) { - if (currentTemperature >= 50) color = COLOR_HEATED_BED; - image = targetTemperature > 0 ? imgBedHeated : imgBed; - } - #endif - #if HAS_TEMP_CHAMBER - else if (heater == H_CHAMBER) { - if (currentTemperature >= 50) color = COLOR_CHAMBER; - image = targetTemperature > 0 ? imgChamberHeated : imgChamber; - } - #endif - #if HAS_TEMP_COOLER - else if (heater == H_COOLER) { - if (currentTemperature <= 26) color = COLOR_COLD; - if (currentTemperature > 26) color = COLOR_RED; - image = targetTemperature > 26 ? imgCoolerHot : imgCooler; - } - #endif - - tft.add_image(8, 28, image, color); - - tft_string.set(i16tostr3rj(currentTemperature)); - tft_string.add(LCD_STR_DEGREE); - tft_string.trim(); - tft.add_text(tft_string.center(80) + 2, 82, color, tft_string); - - if (targetTemperature >= 0) { - tft_string.set(i16tostr3rj(targetTemperature)); - tft_string.add(LCD_STR_DEGREE); - tft_string.trim(); - tft.add_text(tft_string.center(80) + 2, 8, color, tft_string); - } -} - -void draw_fan_status(uint16_t x, uint16_t y, const bool blink) { - TERN_(TOUCH_SCREEN, touch.add_control(FAN, x, y, 80, 120)); - tft.canvas(x, y, 80, 120); - tft.set_background(COLOR_BACKGROUND); - - uint8_t fanSpeed = thermalManager.fan_speed[0]; - MarlinImage image; - - if (fanSpeed >= 127) - image = blink ? imgFanFast1 : imgFanFast0; - else if (fanSpeed > 0) - image = blink ? imgFanSlow1 : imgFanSlow0; - else - image = imgFanIdle; - - tft.add_image(8, 20, image, COLOR_FAN); - - tft_string.set(ui8tostr4pctrj(thermalManager.fan_speed[0])); - tft_string.trim(); - tft.add_text(tft_string.center(80) + 6, 82, COLOR_FAN, tft_string); -} - -void MarlinUI::draw_status_screen() { - const bool blink = get_blink(); - - TERN_(TOUCH_SCREEN, touch.clear()); - - // Statuses of heaters and fans - uint16_t y = TFT_STATUS_TOP_Y; - for (uint16_t i = 0 ; i < ITEMS_COUNT; i++) { - const uint16_t x = (TFT_WIDTH / ITEMS_COUNT - 80) / 2 + (TFT_WIDTH * i / ITEMS_COUNT); - switch (i) { - #if HAS_EXTRUDERS - case ITEM_E0: draw_heater_status(x, y, H_E0); break; - #endif - #if HAS_MULTI_HOTEND - case ITEM_E1: draw_heater_status(x, y, H_E1); break; - #endif - #if HOTENDS > 2 - case ITEM_E2: draw_heater_status(x, y, H_E2); break; - #endif - #if HAS_HEATED_BED - case ITEM_BED: draw_heater_status(x, y, H_BED); break; - #endif - #if HAS_TEMP_CHAMBER - case ITEM_CHAMBER: draw_heater_status(x, y, H_CHAMBER); break; - #endif - #if HAS_TEMP_COOLER - case ITEM_COOLER: draw_heater_status(x, y, H_COOLER); break; - #endif - #if HAS_FAN - case ITEM_FAN: draw_fan_status(x, y, blink); break; - #endif - } - } - - y += 200; - - // Coordinates - tft.canvas(4, y, TFT_WIDTH - 8, FONT_LINE_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft.add_rectangle(0, 0, TFT_WIDTH - 8, FONT_LINE_HEIGHT, COLOR_AXIS_HOMED); - - if (TERN0(LCD_SHOW_E_TOTAL, printingIsActive())) { - #if ENABLED(LCD_SHOW_E_TOTAL) - tft.add_text(200, 3, COLOR_AXIS_HOMED, "E"); - const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm - tft_string.set(ftostr4sign(e_move_accumulator / escale)); - tft_string.add(escale == 10 ? 'c' : 'm'); - tft_string.add('m'); - tft.add_text(500 - tft_string.width(), 3, COLOR_AXIS_HOMED, tft_string); - #endif - } - else { - #if HAS_X_AXIS - tft.add_text(200, 3, COLOR_AXIS_HOMED, "X"); - const bool nhx = axis_should_home(X_AXIS); - if (blink && nhx) - tft_string.set('?'); - else - tft_string.set(ftostr4sign(LOGICAL_X_POSITION(current_position.x))); - tft.add_text(300 - tft_string.width(), 3, nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); - #endif - - #if HAS_Y_AXIS - tft.add_text(500, 3, COLOR_AXIS_HOMED, "Y"); - const bool nhy = axis_should_home(Y_AXIS); - if (blink && nhy) - tft_string.set('?'); - else - tft_string.set(ftostr4sign(LOGICAL_Y_POSITION(current_position.y))); - tft.add_text(600 - tft_string.width(), 3, nhy ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); - #endif - } - - #if HAS_Z_AXIS - tft.add_text(800, 3, COLOR_AXIS_HOMED, "Z"); - uint16_t offset = 32; - const bool nhz = axis_should_home(Z_AXIS); - if (blink && nhz) - tft_string.set('?'); - else { - const float z = LOGICAL_Z_POSITION(current_position.z); - tft_string.set(ftostr52sp((int16_t)z)); - tft_string.rtrim(); - offset += tft_string.width(); - - tft_string.set(ftostr52sp(z)); - offset -= tft_string.width(); - } - tft.add_text(900 - tft_string.width() - offset, 3, nhz ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); - #endif // HAS_Z_AXIS - - TERN_(TOUCH_SCREEN, touch.add_control(MOVE_AXIS, 4, y, TFT_WIDTH - 8, FONT_LINE_HEIGHT)); - - y += 100; - // Feed rate - tft.canvas(274, y, 200, 32); - tft.set_background(COLOR_BACKGROUND); - uint16_t color = feedrate_percentage == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; - tft.add_image(0, 0, imgFeedRate, color); - tft_string.set(i16tostr3rj(feedrate_percentage)); - tft_string.add('%'); - tft.add_text(36, 1, color, tft_string); - TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, 274, y, 200, 32)); - - // Flow rate - #if HAS_EXTRUDERS - tft.canvas(650, y, 128, 32); - tft.set_background(COLOR_BACKGROUND); - color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; - tft.add_image(0, 0, imgFlowRate, color); - tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); - tft_string.add('%'); - tft.add_text(36, 1, color, tft_string); - TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, 650, y, 200, 32, active_extruder)); - #endif - - #if ENABLED(TOUCH_SCREEN) - add_control(900, y, menu_main, imgSettings); - #if HAS_MEDIA - const bool cm = card.isMounted(), pa = printingIsActive(); - if (cm && pa) - add_control(12, y, STOP, imgCancel, true, COLOR_CONTROL_CANCEL); - else - add_control(12, y, menu_media, imgSD, cm && !pa, COLOR_CONTROL_ENABLED, COLOR_CONTROL_DISABLED); - #endif - #endif - - y += 100; - const progress_t progress = TERN(HAS_PRINT_PROGRESS_PERMYRIAD, get_progress_permyriad, get_progress_percent)(); - #if ENABLED(SHOW_ELAPSED_TIME) && DISABLED(SHOW_REMAINING_TIME) - // Print duration so far (time elapsed) - centered - char elapsed_str[22]; - duration_t elapsed = print_job_timer.duration(); - elapsed.toString(elapsed_str); - - // Same width constraints as feedrate/flowrate controls - constexpr uint16_t time_str_width = 476, image_width = 36; - - tft.canvas((TFT_WIDTH - time_str_width) / 2, y, time_str_width, 32); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(elapsed_str); - uint16_t text_pos_x = tft_string.center(time_str_width - image_width); - tft.add_image(text_pos_x, 0, imgTimeElapsed, COLOR_PRINT_TIME); - tft.add_text(text_pos_x + image_width, 1, COLOR_PRINT_TIME, tft_string); - - #elif DISABLED(SHOW_ELAPSED_TIME) && ENABLED(SHOW_REMAINING_TIME) - // Print time remaining estimation - centered - char estimate_str[22]; - duration_t elapsed = print_job_timer.duration(); - - // Get the estimate, first from M73 - uint32_t estimate_remaining = (0 - #if ALL(SET_PROGRESS_MANUALLY, SET_REMAINING_TIME) - + get_remaining_time() - #endif - ); - // If no M73 estimate is available but we have progress data, calculate time remaining assuming time elapsed is linear with progress - if (!estimate_remaining && progress > 0) - estimate_remaining = elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress; - - // Generate estimate string - if (!estimate_remaining) - tft_string.set("-"); - else { - duration_t estimation = estimate_remaining; - estimation.toString(estimate_str); - tft_string.set(estimate_str); - } - - // Same width constraints as feedrate/flowrate controls - constexpr uint16_t time_str_width = 476, image_width = 36; - - tft.canvas((TFT_WIDTH - time_str_width) / 2, y, time_str_width, 32); - tft.set_background(COLOR_BACKGROUND); - color = printingIsActive() ? COLOR_PRINT_TIME : COLOR_INACTIVE; - uint16_t text_pos_x = tft_string.center(time_str_width - image_width); - tft.add_image(text_pos_x, 0, imgTimeRemaining, color); - tft.add_text(text_pos_x + image_width, 1, color, tft_string); - - #elif ALL(SHOW_REMAINING_TIME, SHOW_ELAPSED_TIME) - // Print duration so far (time elapsed) - aligned under feed rate - char elapsed_str[22]; - duration_t elapsed = print_job_timer.duration(); - elapsed.toString(elapsed_str); - - tft.canvas(274, y, 200, 32); - tft.set_background(COLOR_BACKGROUND); - tft.add_image(0, 0, imgTimeElapsed, COLOR_PRINT_TIME); - tft_string.set(elapsed_str); - tft.add_text(36, 1, COLOR_PRINT_TIME, tft_string); - - // Print time remaining estimation - aligned under flow rate - char estimate_str[22]; - - // Get the estimate, first from M73 - uint32_t estimate_remaining = (0 - #if ALL(SET_PROGRESS_MANUALLY, SET_REMAINING_TIME) - + get_remaining_time() - #endif - ); - // If no M73 estimate is available but we have progress data, calculate time remaining assuming time elapsed is linear with progress - if (!estimate_remaining && progress > 0) - estimate_remaining = elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress; - - // Generate estimate string - if (!estimate_remaining) - tft_string.set("-"); - else { - duration_t estimation = estimate_remaining; - estimation.toString(estimate_str); - tft_string.set(estimate_str); - } - - // Push out the estimate to the screen - tft.canvas(650, y, 200, 32); - tft.set_background(COLOR_BACKGROUND); - color = printingIsActive() ? COLOR_PRINT_TIME : COLOR_INACTIVE; - tft.add_image(0, 0, imgTimeRemaining, color); - tft.add_text(36, 1, color, tft_string); - #endif - - y += 50; - // Progress bar - tft.canvas(4, y, TFT_WIDTH - 8, 9); - tft.set_background(COLOR_PROGRESS_BG); - tft.add_rectangle(0, 0, TFT_WIDTH - 8, 9, COLOR_PROGRESS_FRAME); - if (progress) - tft.add_bar(1, 1, ((TFT_WIDTH - 10) * progress / (PROGRESS_SCALE)) / 100, 7, COLOR_PROGRESS_BAR); - - y += 50; - // Status message - const uint16_t status_height = TFT_HEIGHT - y; - tft.canvas(0, y, TFT_WIDTH, status_height); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(status_message); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), (status_height - FONT_LINE_HEIGHT) / 2, COLOR_STATUS_MESSAGE, tft_string); -} - -// Low-level draw_edit_screen can be used to draw an edit screen from anyplace -void MenuEditItemBase::draw_edit_screen(FSTR_P const fstr, const char * const value/*=nullptr*/) { - ui.encoder_direction_normal(); - TERN_(TOUCH_SCREEN, touch.clear()); - - uint16_t line = 1; - - menu_line(line++); - tft_string.set(fstr, itemIndex, itemStringC, itemStringF); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - - TERN_(AUTO_BED_LEVELING_UBL, if (ui.external_control) line++); // ftostr52() will overwrite *value so *value has to be displayed first - - menu_line(line); - tft_string.set(value); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - #if ENABLED(AUTO_BED_LEVELING_UBL) - if (ui.external_control) { - menu_line(line - 1); - - tft_string.set(X_LBL); - tft.add_text((TFT_WIDTH / 2 - 120), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(ftostr52(LOGICAL_X_POSITION(current_position.x))); - tft_string.trim(); - tft.add_text((TFT_WIDTH / 2 - 16) - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - tft_string.set(Y_LBL); - tft.add_text((TFT_WIDTH / 2 + 16), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(ftostr52(LOGICAL_X_POSITION(current_position.y))); - tft_string.trim(); - tft.add_text((TFT_WIDTH / 2 + 120) - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - } - #endif - - if (ui.can_show_slider()) { - - #define SLIDER_LENGTH 600 - #define SLIDER_Y_POSITION 200 - - tft.canvas((TFT_WIDTH - SLIDER_LENGTH) / 2, SLIDER_Y_POSITION, SLIDER_LENGTH, 16); - tft.set_background(COLOR_BACKGROUND); - - int16_t position = (SLIDER_LENGTH - 2) * ui.encoderPosition / maxEditValue; - tft.add_bar(0, 7, 1, 2, ui.encoderPosition == 0 ? COLOR_SLIDER_INACTIVE : COLOR_SLIDER); - tft.add_bar(1, 6, position, 4, COLOR_SLIDER); - tft.add_bar(position + 1, 6, SLIDER_LENGTH - 2 - position, 4, COLOR_SLIDER_INACTIVE); - tft.add_bar(SLIDER_LENGTH - 1, 7, 1, 2, int32_t(ui.encoderPosition) == maxEditValue ? COLOR_SLIDER : COLOR_SLIDER_INACTIVE); - - #if ENABLED(TOUCH_SCREEN) - tft.add_image((SLIDER_LENGTH - 8) * ui.encoderPosition / maxEditValue, 0, imgSlider, COLOR_SLIDER); - touch.add_control(SLIDER, (TFT_WIDTH - SLIDER_LENGTH) / 2, SLIDER_Y_POSITION - 8, SLIDER_LENGTH, 32, maxEditValue); - #endif - } - - tft.draw_edit_screen_buttons(); -} - -void TFT::draw_edit_screen_buttons() { - #if ENABLED(TOUCH_SCREEN) - add_control(164, TFT_HEIGHT - 64, DECREASE, imgDecrease); - add_control(796, TFT_HEIGHT - 64, INCREASE, imgIncrease); - add_control(480, TFT_HEIGHT - 64, CLICK, imgConfirm); - #endif -} - -// The Select Screen presents a prompt and two "buttons" -void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, const bool yesno, FSTR_P const pref, const char * const string/*=nullptr*/, FSTR_P const suff/*=nullptr*/) { - uint16_t line = 1; - - if (!string) line++; - - menu_line(line++); - tft_string.set(pref); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); - - if (string) { - menu_line(line++); - tft_string.set(string); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); - } - - if (suff) { - menu_line(line); - tft_string.set(suff); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); - } - #if ENABLED(TOUCH_SCREEN) - add_control(88, TFT_HEIGHT - 64, CANCEL, imgCancel, true, yesno ? HALF(COLOR_CONTROL_CANCEL) : COLOR_CONTROL_CANCEL); - add_control(328, TFT_HEIGHT - 64, CONFIRM, imgConfirm, true, yesno ? COLOR_CONTROL_CONFIRM : HALF(COLOR_CONTROL_CONFIRM)); - #else - menu_line(++line); - if (no) { - tft_string.set(no); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH / 2), 0, !yesno ? COLOR_RED : COLOR_MENU_TEXT, tft_string); - } - - if (yes) { - tft_string.set(yes); - tft_string.trim(); - tft.add_text(TFT_WIDTH / 2 + tft_string.center(TFT_WIDTH / 2), 0, yesno ? COLOR_RED : COLOR_MENU_TEXT, tft_string); - } - #endif -} - -#if ENABLED(ADVANCED_PAUSE_FEATURE) - - void MarlinUI::draw_hotend_status(const uint8_t row, const uint8_t extruder) { - #if ENABLED(TOUCH_SCREEN) - touch.clear(); - draw_menu_navigation = false; - touch.add_control(RESUME_CONTINUE, 0, 0, TFT_WIDTH, TFT_HEIGHT); - #endif - - menu_line(row); - tft_string.set(GET_TEXT_F(MSG_FILAMENT_CHANGE_NOZZLE)); - tft_string.add('E'); - tft_string.add((char)('1' + extruder)); - tft_string.add(' '); - tft_string.add(i16tostr3rj(thermalManager.wholeDegHotend(extruder))); - tft_string.add(LCD_STR_DEGREE); - tft_string.add(F(" / ")); - tft_string.add(i16tostr3rj(thermalManager.degTargetHotend(extruder))); - tft_string.add(LCD_STR_DEGREE); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); - } - -#endif // ADVANCED_PAUSE_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_UBL) - #define GRID_OFFSET_X 8 - #define GRID_OFFSET_Y 8 - #define GRID_WIDTH 192 - #define GRID_HEIGHT 192 - #define CONTROL_OFFSET 16 - - void MarlinUI::ubl_plot(const uint8_t x_plot, const uint8_t y_plot) { - - tft.canvas(GRID_OFFSET_X, GRID_OFFSET_Y, GRID_WIDTH, GRID_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft.add_rectangle(0, 0, GRID_WIDTH, GRID_HEIGHT, COLOR_WHITE); - - for (uint16_t x = 0; x < (GRID_MAX_POINTS_X); x++) - for (uint16_t y = 0; y < (GRID_MAX_POINTS_Y); y++) - if (position_is_reachable({ bedlevel.get_mesh_x(x), bedlevel.get_mesh_y(y) })) - tft.add_bar(1 + (x * 2 + 1) * (GRID_WIDTH - 4) / (GRID_MAX_POINTS_X) / 2, GRID_HEIGHT - 3 - ((y * 2 + 1) * (GRID_HEIGHT - 4) / (GRID_MAX_POINTS_Y) / 2), 2, 2, COLOR_UBL); - - tft.add_rectangle((x_plot * 2 + 1) * (GRID_WIDTH - 4) / (GRID_MAX_POINTS_X) / 2 - 1, GRID_HEIGHT - 5 - ((y_plot * 2 + 1) * (GRID_HEIGHT - 4) / (GRID_MAX_POINTS_Y) / 2), 6, 6, COLOR_UBL); - - const xy_pos_t pos = { bedlevel.get_mesh_x(x_plot), bedlevel.get_mesh_y(y_plot) }, - lpos = pos.asLogical(); - - tft.canvas(320, GRID_OFFSET_Y + (GRID_HEIGHT - MENU_ITEM_HEIGHT) / 2 - MENU_ITEM_HEIGHT, 120, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(X_LBL); - tft.add_text(0, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(ftostr52(lpos.x)); - tft_string.trim(); - tft.add_text(120 - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - tft.canvas(320, GRID_OFFSET_Y + (GRID_HEIGHT - MENU_ITEM_HEIGHT) / 2, 120, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(Y_LBL); - tft.add_text(0, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(ftostr52(lpos.y)); - tft_string.trim(); - tft.add_text(120 - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - tft.canvas(320, GRID_OFFSET_Y + (GRID_HEIGHT - MENU_ITEM_HEIGHT) / 2 + MENU_ITEM_HEIGHT, 120, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(Z_LBL); - tft.add_text(0, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(isnan(bedlevel.z_values[x_plot][y_plot]) ? "-----" : ftostr43sign(bedlevel.z_values[x_plot][y_plot])); - tft_string.trim(); - tft.add_text(120 - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - constexpr uint8_t w = (TFT_WIDTH) / 10; - tft.canvas(GRID_OFFSET_X + (GRID_WIDTH - w) / 2, GRID_OFFSET_Y + GRID_HEIGHT + CONTROL_OFFSET - 5, w, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(ui8tostr3rj(x_plot)); - tft_string.trim(); - tft.add_text(tft_string.center(w), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - tft.canvas(GRID_OFFSET_X + GRID_WIDTH + CONTROL_OFFSET + 16 - 24, GRID_OFFSET_Y + (GRID_HEIGHT - MENU_ITEM_HEIGHT) / 2, w, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(ui8tostr3rj(y_plot)); - tft_string.trim(); - tft.add_text(tft_string.center(w), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - #if ENABLED(TOUCH_SCREEN) - touch.clear(); - draw_menu_navigation = false; - add_control(GRID_OFFSET_X + GRID_WIDTH + CONTROL_OFFSET, GRID_OFFSET_Y + CONTROL_OFFSET, UBL, ENCODER_STEPS_PER_MENU_ITEM * GRID_MAX_POINTS_X, imgUp); - add_control(GRID_OFFSET_X + GRID_WIDTH + CONTROL_OFFSET, GRID_OFFSET_Y + GRID_HEIGHT - CONTROL_OFFSET - 32, UBL, - ENCODER_STEPS_PER_MENU_ITEM * GRID_MAX_POINTS_X, imgDown); - add_control(GRID_OFFSET_X + CONTROL_OFFSET, GRID_OFFSET_Y + GRID_HEIGHT + CONTROL_OFFSET, UBL, - ENCODER_STEPS_PER_MENU_ITEM, imgLeft); - add_control(GRID_OFFSET_X + GRID_WIDTH - CONTROL_OFFSET - 32, GRID_OFFSET_Y + GRID_HEIGHT + CONTROL_OFFSET, UBL, ENCODER_STEPS_PER_MENU_ITEM, imgRight); - add_control(320, GRID_OFFSET_Y + GRID_HEIGHT + CONTROL_OFFSET, CLICK, imgLeveling); - add_control(224, TFT_HEIGHT - 34, BACK, imgBack); - #endif - } -#endif // AUTO_BED_LEVELING_UBL - -#if ENABLED(BABYSTEP_ZPROBE_OFFSET) - #include "../../feature/babystep.h" -#endif - -#if HAS_BED_PROBE - #include "../../module/probe.h" -#endif - -#define Z_SELECTION_Z 1 -#define Z_SELECTION_Z_PROBE -1 - -struct { - #if HAS_X_AXIS - xy_int_t xValuePos; - #endif - #if HAS_Y_AXIS - xy_int_t yValuePos; - #endif - #if HAS_Z_AXIS - xy_int_t zValuePos, zTypePos; - int z_selection = Z_SELECTION_Z; - #endif - #if HAS_EXTRUDERS - xy_int_t eValuePos, eNamePos; - uint8_t e_selection = 0; - #endif - xy_int_t stepValuePos; - float currentStepSize = 10.0; - bool blocked = false; - char message[32]; -} motionAxisState; - -#define BTN_WIDTH 64 -#define BTN_HEIGHT 52 -#define X_MARGIN 20 -#define Y_MARGIN 15 - -static void quick_feedback() { - #if HAS_CHIRP - ui.chirp(); // Buzz and wait. Is the delay needed for buttons to settle? - #if ALL(HAS_MARLINUI_MENU, HAS_BEEPER) - for (int8_t i = 5; i--;) { buzzer.tick(); delay(2); } - #elif HAS_MARLINUI_MENU - delay(10); - #endif - #endif -} - -#define CUR_STEP_VALUE_WIDTH 104 -static void drawCurStepValue() { - tft_string.set(ftostr52sp(motionAxisState.currentStepSize)); - tft_string.add(F("mm")); - tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft.add_text(tft_string.center(CUR_STEP_VALUE_WIDTH), 0, COLOR_AXIS_HOMED, tft_string); -} - -#if HAS_Z_AXIS - static void drawCurZSelection() { - tft_string.set('Z'); - tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), 34); - tft.set_background(COLOR_BACKGROUND); - tft.add_text(0, 0, Z_BTN_COLOR, tft_string); - tft.queue.sync(); - tft_string.set(F("Offset")); - tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + 34, tft_string.width(), 34); - tft.set_background(COLOR_BACKGROUND); - #if HAS_BED_PROBE - if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) - tft.add_text(0, 0, Z_BTN_COLOR, tft_string); - #endif - } -#endif - -#if HAS_EXTRUDERS - static void drawCurESelection() { - tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set('E'); - tft.add_text(0, 0, E_BTN_COLOR, tft_string); - tft.add_text(tft_string.width(), 0, E_BTN_COLOR, ui8tostr3rj(motionAxisState.e_selection)); - } -#endif - -static void drawMessage(PGM_P const msg) { - tft.canvas(X_MARGIN, TFT_HEIGHT - Y_MARGIN - 34, TFT_HEIGHT / 2, 34); - tft.set_background(COLOR_BACKGROUND); - tft.add_text(0, 0, COLOR_YELLOW, msg); -} - -static void drawMessage(FSTR_P const fmsg) { drawMessage(FTOP(fmsg)); } - -static void drawAxisValue(const AxisEnum axis) { - const float value = ( - TERN_(HAS_BED_PROBE, axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE ? probe.offset.z :) - ui.manual_move.axis_value(axis) - ); - xy_int_t pos; - uint16_t color; - switch (axis) { - #if HAS_X_AXIS - case X_AXIS: pos = motionAxisState.xValuePos; color = X_BTN_COLOR; break; - #endif - #if HAS_Y_AXIS - case Y_AXIS: pos = motionAxisState.yValuePos; color = Y_BTN_COLOR; break; - #endif - #if HAS_Z_AXIS - case Z_AXIS: pos = motionAxisState.zValuePos; color = Z_BTN_COLOR; break; - #endif - #if HAS_EXTRUDERS - case E_AXIS: pos = motionAxisState.eValuePos; color = E_BTN_COLOR; break; - #endif - default: return; - } - tft.canvas(pos.x, pos.y, BTN_WIDTH + X_MARGIN, BTN_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(ftostr52sp(value)); - tft.add_text(0, 0, color, tft_string); -} - -static void moveAxis(const AxisEnum axis, const int8_t direction) { - quick_feedback(); - - #if HAS_EXTRUDERS - if (axis == E_AXIS && thermalManager.tooColdToExtrude(motionAxisState.e_selection)) { - drawMessage(F("Too cold")); - return; - } - #endif - - const float diff = motionAxisState.currentStepSize * direction; - - #if HAS_BED_PROBE - - if (axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { - #if ENABLED(BABYSTEP_ZPROBE_OFFSET) - const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z; - const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0; - const float bsDiff = planner.mm_per_step[Z_AXIS] * babystep_increment, - new_probe_offset = probe.offset.z + bsDiff, - new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET - , do_probe ? new_probe_offset : hotend_offset[active_extruder].z - bsDiff - , new_probe_offset - ); - if (WITHIN(new_offs, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { - babystep.add_steps(Z_AXIS, babystep_increment); - if (do_probe) - probe.offset.z = new_offs; - else - TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); - drawMessage(F("")); // Clear the error - drawAxisValue(axis); - } - else - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - - #else - // Only change probe.offset.z - probe.offset.z += diff; - if (direction < 0 && current_position.z < Z_PROBE_OFFSET_RANGE_MIN) { - current_position.z = Z_PROBE_OFFSET_RANGE_MIN; - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - else if (direction > 0 && current_position.z > Z_PROBE_OFFSET_RANGE_MAX) { - current_position.z = Z_PROBE_OFFSET_RANGE_MAX; - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - else - drawMessage(F("")); // Clear the error - - drawAxisValue(axis); - #endif - } - - #endif // HAS_BED_PROBE - - if (!ui.manual_move.processing) { - // Get motion limit from software endstops, if any - float min, max; - soft_endstop.get_manual_axis_limits(axis, min, max); - - // Delta limits XY based on the current offset from center - // This assumes the center is 0,0 - #if ENABLED(DELTA) - if (axis != Z_AXIS && TERN1(HAS_EXTRUDERS, axis != E_AXIS)) { - max = SQRT(sq(float(PRINTABLE_RADIUS)) - sq(current_position[Y_AXIS - axis])); // (Y_AXIS - axis) == the other axis - min = -max; - } - #endif - - // Get the new position - const bool limited = ui.manual_move.apply_diff(axis, diff, min, max); - #if IS_KINEMATIC - UNUSED(limited); - #else - FSTR_P const msg = limited ? GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS) : FPSTR(NUL_STR); - drawMessage(msg); - #endif - - ui.manual_move.soon(axis OPTARG(MULTI_E_MANUAL, motionAxisState.e_selection)); - } - - drawAxisValue(axis); -} - -#if HAS_EXTRUDERS - static void e_plus() { moveAxis(E_AXIS, 1); } - static void e_minus() { moveAxis(E_AXIS, -1); } -#endif -#if HAS_X_AXIS - static void x_minus() { moveAxis(X_AXIS, -1); } - static void x_plus() { moveAxis(X_AXIS, 1); } -#endif -#if HAS_Y_AXIS - static void y_plus() { moveAxis(Y_AXIS, 1); } - static void y_minus() { moveAxis(Y_AXIS, -1); } -#endif -#if HAS_Z_AXIS - static void z_plus() { moveAxis(Z_AXIS, 1); } - static void z_minus() { moveAxis(Z_AXIS, -1); } -#endif - -#if ENABLED(TOUCH_SCREEN) - #if HAS_EXTRUDERS - static void e_select() { - if (++motionAxisState.e_selection >= EXTRUDERS) - motionAxisState.e_selection = 0; - quick_feedback(); - drawCurESelection(); - drawAxisValue(E_AXIS); - } - #endif - - static void do_home() { - quick_feedback(); - drawMessage(GET_TEXT_F(MSG_LEVEL_BED_HOMING)); - queue.inject_P(G28_STR); - // Disable touch until home is done - touch.disable(); - TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); - TERN_(HAS_X_AXIS, drawAxisValue(X_AXIS)); - TERN_(HAS_Y_AXIS, drawAxisValue(Y_AXIS)); - TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); - } - - static void step_size() { - motionAxisState.currentStepSize = motionAxisState.currentStepSize / 10.0; - if (motionAxisState.currentStepSize < 0.0015) motionAxisState.currentStepSize = 10.0; - quick_feedback(); - drawCurStepValue(); - } -#endif - -#if ALL(HAS_BED_PROBE, TOUCH_SCREEN) - static void z_select() { - motionAxisState.z_selection *= -1; - quick_feedback(); - drawCurZSelection(); - drawAxisValue(Z_AXIS); - } -#endif - -static void disable_steppers() { - quick_feedback(); - queue.inject(F("M84")); -} - -static void drawBtn(const int x, const int y, const char *label, intptr_t data, const MarlinImage img, uint16_t bgColor, const bool enabled=true) { - const uint16_t width = images[imgBtn52Rounded].width, - height = images[imgBtn52Rounded].height; - - if (!enabled) bgColor = COLOR_CONTROL_DISABLED; - - tft.canvas(x, y, width, height); - tft.set_background(COLOR_BACKGROUND); - tft.add_image(0, 0, imgBtn52Rounded, bgColor, COLOR_BACKGROUND, COLOR_DARKGREY); - - // TODO: Make an add_text() taking a font arg - if (label) { - tft_string.set(label); - tft_string.trim(); - tft.add_text(tft_string.center(width), height / 2 - tft_string.font_height() / 2, bgColor, tft_string); - } - else - tft.add_image(0, 0, img, bgColor, COLOR_BACKGROUND, COLOR_DARKGREY); - - TERN_(TOUCH_SCREEN, if (enabled) touch.add_control(BUTTON, x, y, width, height, data)); -} - -void MarlinUI::move_axis_screen() { - // Reset - defer_status_screen(true); - motionAxisState.blocked = false; - TERN_(TOUCH_SCREEN, touch.enable()); - - ui.clear_lcd(); - - TERN_(TOUCH_SCREEN, touch.clear()); - - const bool busy = printingIsActive(); - - // Babysteps during printing? Select babystep for Z probe offset - #if ENABLED(BABYSTEP_ZPROBE_OFFSET) - if (busy) motionAxisState.z_selection = Z_SELECTION_Z_PROBE; - #endif - - // ROW 1 -> E- Y- CurY Z+ - int x = X_MARGIN, y = Y_MARGIN, spacing = 0; - - TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy)); - - spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; - x += BTN_WIDTH + spacing; - - TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy)); - - x += BTN_WIDTH; - - // Cur Y - #if HAS_Y_AXIS - motionAxisState.yValuePos.set(x + 2, y); - drawAxisValue(Y_AXIS); - #endif - - x += spacing; - #if HAS_Z_AXIS - drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have baby step - #endif - - // ROW 2 -> "Ex" X- HOME X+ "Z" - y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; - x = X_MARGIN; - spacing = (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; - - #if HAS_EXTRUDERS - motionAxisState.eNamePos.set(x, y); - drawCurESelection(); - TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); - #endif - - x += BTN_WIDTH + spacing; - - TERN_(HAS_X_AXIS, drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy)); - - x += BTN_WIDTH + spacing; //imgHome is 64x64 - - #if ALL(HAS_X_AXIS, TOUCH_SCREEN) - add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy); - #endif - - x += BTN_WIDTH + spacing; - const uint16_t xplus_x = x; - - TERN_(HAS_X_AXIS, drawBtn(x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy)); - - x += BTN_WIDTH + spacing; - - #if HAS_Z_AXIS - motionAxisState.zTypePos.set(x, y); - drawCurZSelection(); - #endif - - #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) - if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); - #endif - - // ROW 3 -> E- CurX Y- Z- - y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; - x = X_MARGIN; - spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; - - #if HAS_EXTRUDERS - drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); - motionAxisState.eValuePos.set(x, y + BTN_HEIGHT + 2); - TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); - #endif - - // Cur X - #if HAS_X_AXIS - motionAxisState.xValuePos.set(BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4, y - 10); - drawAxisValue(X_AXIS); - #endif - - x += BTN_WIDTH + spacing; - - // Cur Y - TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); - - x += BTN_WIDTH + spacing; - - // Cur Z - #if HAS_Z_AXIS - drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have babystep - motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); - drawAxisValue(Z_AXIS); - #endif - - // ROW 4 -> step_size disable steppers back - y = TFT_HEIGHT - Y_MARGIN - 32; - x = TFT_WIDTH / 2 - CUR_STEP_VALUE_WIDTH / 2; - motionAxisState.stepValuePos.set(x, y); - if (!busy) { - drawCurStepValue(); - TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, x, y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); - } - - // Aligned with x+ - drawBtn(xplus_x, TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT, "off", (intptr_t)disable_steppers, imgCancel, COLOR_WHITE, !busy); - - TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); -} - -#endif // HAS_UI_1024x600 diff --git a/Marlin/src/lcd/tft/ui_1024x600.h b/Marlin/src/lcd/tft/ui_1024x600.h index c6b5d9f85e..669f1258b7 100644 --- a/Marlin/src/lcd/tft/ui_1024x600.h +++ b/Marlin/src/lcd/tft/ui_1024x600.h @@ -19,31 +19,283 @@ * along with this program. If not, see . * */ -#pragma once -#define MARLIN_LOGO_FULL_SIZE MarlinLogo480x320x16 +#include "../../inc/MarlinConfigPre.h" -#include "ui_common.h" +// -------------------------------- Core Parameters -------------------------------- -#define TFT_STATUS_TOP_Y 4 -#define TFT_TOP_LINE_Y 4 +#define MENU_TEXT_X 16 +#define MENU_TEXT_Y tft_string.vcenter(MENU_ITEM_HEIGHT) -#define MENU_TEXT_X_OFFSET 16 -#define MENU_TEXT_Y_OFFSET tft_string.vcenter(MENU_ITEM_HEIGHT) +#define MENU_ITEM_ICON_X 5 +#define MENU_ITEM_ICON_Y 5 +#define MENU_ITEM_ICON_SPACE 42 -#define MENU_ITEM_ICON_X 5 -#define MENU_ITEM_ICON_Y 5 -#define MENU_ITEM_ICON_SPACE 42 +#define MENU_ITEM_HEIGHT 43 +#define MENU_LINE_HEIGHT (MENU_ITEM_HEIGHT + 2) +#define MENU_TOP_LINE_Y 4 -#define MENU_ITEM_HEIGHT 43 -#define MENU_LINE_HEIGHT (MENU_ITEM_HEIGHT + 2) - -#if (TFT_FONT == NOTOSANS) || (TFT_FONT == HELVETICA) - #define FONT_SIZE 19 +#if TFT_FONT == NOTOSANS || TFT_FONT == HELVETICA + #define FONT_SIZE 19 #elif TFT_FONT == UNIFONT - #define FONT_SIZE 20 + #define FONT_SIZE 20 #endif -#define FONT_LINE_HEIGHT 34 +#define FONT_LINE_HEIGHT 34 -#include "tft_font.h" +// --------------------------------------------------------------------------------- + +#define VCENTER tft_string.vcenter(FONT_LINE_HEIGHT) + +// MarlinUI::show_bootscreen() +#ifndef BOOTSCREEN_LOGO + #if ENABLED(BOOT_MARLIN_LOGO_SMALL) + #define BOOTSCREEN_LOGO MarlinLogo195x59x16 + #define BOOTSCREEN_LOGO_W 195 + #define BOOTSCREEN_LOGO_H 59 + #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 70) + #else + #define BOOTSCREEN_LOGO MarlinLogo480x320x16 + #define BOOTSCREEN_LOGO_W TFT_WIDTH + #define BOOTSCREEN_LOGO_H TFT_HEIGHT + #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 90) + #endif +#endif + +#if !defined(BOOTSCREEN_LOGO_X) && !defined(BOOTSCREEN_LOGO_Y) + #define BOOTSCREEN_LOGO_X (TFT_WIDTH - BOOTSCREEN_LOGO_W) / 2 + #define BOOTSCREEN_LOGO_Y (TFT_HEIGHT - BOOTSCREEN_LOGO_H) / 2 +#endif + +#if !defined(NAVIGATION_PAGE_UP_X) && !defined(NAVIGATION_PAGE_UP_Y) && !defined(NAVIGATION_PAGE_DOWN_X) && !defined(NAVIGATION_PAGE_DOWN_Y) && !defined(NAVIGATION_BACK_X) && !defined(NAVIGATION_BACK_Y) + #define NAVIGATION_PAGE_UP_X 164 + #define NAVIGATION_PAGE_UP_Y TFT_HEIGHT - 50 + #define NAVIGATION_PAGE_DOWN_X 796 + #define NAVIGATION_PAGE_DOWN_Y TFT_HEIGHT - 50 + #define NAVIGATION_BACK_X 480 + #define NAVIGATION_BACK_Y TFT_HEIGHT - 50 +#endif + +#if !defined(BUTTON_DECREASE_X) && !defined(BUTTON_DECREASE_Y) && !defined(BUTTON_INCREASE_X) && !defined(BUTTON_INCREASE_Y) && !defined(BUTTON_CLICK_X) && !defined(BUTTON_CLICK_Y) + #define BUTTON_DECREASE_X 164 + #define BUTTON_DECREASE_Y TFT_HEIGHT - 80 + #define BUTTON_INCREASE_X 796 + #define BUTTON_INCREASE_Y TFT_HEIGHT - 80 + #define BUTTON_CLICK_X 480 + #define BUTTON_CLICK_Y TFT_HEIGHT - 80 +#endif + +#if !defined(BUTTON_CANCEL_X) && !defined(BUTTON_CANCEL_Y) && !defined(BUTTON_CONFIRM_X) && !defined(BUTTON_CONFIRM_Y) + #define BUTTON_CANCEL_X 256 + #define BUTTON_CANCEL_Y TFT_HEIGHT - 80 + #define BUTTON_CONFIRM_X 704 + #define BUTTON_CONFIRM_Y TFT_HEIGHT - 80 +#endif + +// MarlinUI::draw_kill_screen() +#if !defined(KILL_SCREEN_STATUS_Y) && !defined(KILL_SCREEN_HALTED_Y) && !defined(KILL_SCREEN_RESET_Y) + #define KILL_SCREEN_STATUS_Y 94 + #define KILL_SCREEN_HALTED_Y 184 + #define KILL_SCREEN_RESET_Y 229 +#endif + +// draw_heater_status() and draw_fan_status() +#if !defined(TEMP_FAN_CONTROL_W) && !defined(TEMP_FAN_CONTROL_H) + #define TEMP_FAN_CONTROL_W 80 + #define TEMP_FAN_CONTROL_H 120 +#endif +#if !defined(TEMP_ICON_X) && !defined(TEMP_ICON_Y) + #define TEMP_ICON_X 8 + #define TEMP_ICON_Y 28 +#endif +#if !defined(FAN_ICON_X) && !defined(FAN_ICON_Y) + #define FAN_ICON_X 8 + #define FAN_ICON_Y 20 +#endif + +#if !defined(TEMP_CURRENT_TEXT_X) && !defined(TEMP_CURRENT_TEXT_Y) && !defined(TEMP_TARGET_TEXT_X) && !defined(TEMP_TARGET_TEXT_Y) + #define TEMP_CURRENT_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 2 + #define TEMP_CURRENT_TEXT_Y 80 + VCENTER + #define TEMP_TARGET_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 2 + #define TEMP_TARGET_TEXT_Y 6 + VCENTER +#endif + +#if !defined(FAN_TEXT_X) && !defined(FAN_TEXT_Y) + #define FAN_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 6 + #define FAN_TEXT_Y 80 + VCENTER +#endif + +// MarlinUI::draw_status_screen() +#if !defined(MAX_ITEMS) && !defined(ITEM_X) && !defined(ITEM_Y) + #define MAX_ITEMS 12 + #define ITEM_X(N) (TFT_WIDTH / _MIN(ITEMS_COUNT, MAX_ITEMS) - TEMP_FAN_CONTROL_W) / 2 + (TFT_WIDTH * N / _MIN(ITEMS_COUNT, MAX_ITEMS)) + #define ITEM_Y 4 +#endif + +#if !defined(COORDINATES_W) && !defined(COORDINATES_H) && !defined(COORDINATES_X) && !defined(COORDINATES_Y) + #define COORDINATES_W TFT_WIDTH - 8 + #define COORDINATES_H FONT_LINE_HEIGHT + #define COORDINATES_X 4 + #define COORDINATES_Y 204 +#endif + +#if !defined(E_MARK_X) && !defined(E_MARK_Y) && !defined(E_VALUE_X) && !defined(E_VALUE_Y) + #define E_MARK_X 572 + #define E_MARK_Y VCENTER + #define E_VALUE_X 672 - tft_string.width() + #define E_VALUE_Y VCENTER +#endif + +#if !defined(X_MARK_X) && !defined(X_MARK_Y) && !defined(X_VALUE_X) && !defined(X_VALUE_Y) + #define X_MARK_X 64 + #define X_MARK_Y VCENTER + #define X_VALUE_X 164 - tft_string.width() + #define X_VALUE_Y VCENTER +#endif + +#if !defined(Y_MARK_X) && !defined(Y_MARK_Y) && !defined(Y_VALUE_X) && !defined(Y_VALUE_Y) + #define Y_MARK_X 318 + #define Y_MARK_Y VCENTER + #define Y_VALUE_X 418 - tft_string.width() + #define Y_VALUE_Y VCENTER +#endif + +#if !defined(Z_MARK_X) && !defined(Z_MARK_Y) && !defined(Z_VALUE_X) && !defined(Z_VALUE_Y) + #define Z_MARK_X 826 + #define Z_MARK_Y VCENTER + #define Z_VALUE_X 965 - tft_string.width() + #define Z_VALUE_Y VCENTER + #define Z_VALUE_OFFSET 32 +#endif + +#if !defined(FEEDRATE_W) && !defined(FEEDRATE_H) && !defined(FEEDRATE_X) && !defined(FEEDRATE_Y) + #define FEEDRATE_W 120 + #define FEEDRATE_H 32 + #define FEEDRATE_X 274 + #define FEEDRATE_Y 304 +#endif +#if !defined(FEEDRATE_ICON_X) && !defined(FEEDRATE_ICON_Y) && !defined(FEEDRATE_ICON_Y) && !defined(FEEDRATE_TEXT_Y) + #define FEEDRATE_ICON_X 0 + #define FEEDRATE_ICON_Y 0 + #define FEEDRATE_TEXT_X 36 + #define FEEDRATE_TEXT_Y tft_string.vcenter(30) +#endif + +#if !defined(FLOWRATE_W) && !defined(FLOWRATE_H) && !defined(FLOWRATE_X) && !defined(FLOWRATE_Y) + #define FLOWRATE_W 120 + #define FLOWRATE_H 32 + #define FLOWRATE_X 650 + #define FLOWRATE_Y 304 +#endif +#if !defined(FLOWRATE_ICON_X) && !defined(FLOWRATE_ICON_Y) && !defined(FLOWRATE_TEXT_X) && !defined(FLOWRATE_TEXT_Y) + #define FLOWRATE_ICON_X 0 + #define FLOWRATE_ICON_Y 0 + #define FLOWRATE_TEXT_X 36 + #define FLOWRATE_TEXT_Y tft_string.vcenter(30) +#endif + +#if !defined(MENU_ICON_X) && !defined(MENU_ICON_Y) + #define MENU_ICON_X 900 + #define MENU_ICON_Y 304 +#endif +#if !defined(SDCARD_ICON_X) && !defined(SDCARD_ICON_Y) + #define SDCARD_ICON_X 60 + #define SDCARD_ICON_Y 304 +#endif + +#if !defined(ELAPSED_TIME_W) && !defined(ELAPSED_TIME_H) && !defined(ELAPSED_TIME_X) && !defined(ELAPSED_TIME_Y) + #if ALL(SHOW_ELAPSED_TIME, SHOW_REMAINING_TIME) + #define ELAPSED_TIME_W (TFT_WIDTH / 2) + #define ELAPSED_TIME_X (TFT_WIDTH / 2) - ELAPSED_TIME_W + #elif ENABLED(SHOW_ELAPSED_TIME) + #define ELAPSED_TIME_W TFT_WIDTH + #define ELAPSED_TIME_X (TFT_WIDTH - ELAPSED_TIME_W) / 2 + #endif + + #define ELAPSED_TIME_H 32 + #define ELAPSED_TIME_Y 404 +#endif + +#if !defined(REMAINING_TIME_W) && !defined(REMAINING_TIME_H) && !defined(REMAINING_TIME_X) && !defined(REMAINING_TIME_Y) + #if ALL(SHOW_ELAPSED_TIME, SHOW_REMAINING_TIME) + #define REMAINING_TIME_W (TFT_WIDTH / 2) + #define REMAINING_TIME_X (TFT_WIDTH / 2) + #elif ENABLED(SHOW_REMAINING_TIME) + #define REMAINING_TIME_W TFT_WIDTH + #define REMAINING_TIME_X (TFT_WIDTH - REMAINING_TIME_W) / 2 + #endif + + #define REMAINING_TIME_H 32 + #define REMAINING_TIME_Y 404 +#endif + +#if !defined(ELAPSED_TIME_IMAGE_X) && !defined(ELAPSED_TIME_IMAGE_Y) && !defined(ELAPSED_TIME_TEXT_X) && !defined(ELAPSED_TIME_TEXT_Y) + #define ELAPSED_TIME_IMAGE_X tft_string.center(ELAPSED_TIME_W) - 18 + #define ELAPSED_TIME_IMAGE_Y 0 + #define ELAPSED_TIME_TEXT_X tft_string.center(ELAPSED_TIME_W) + 18 + #define ELAPSED_TIME_TEXT_Y tft_string.vcenter(29) +#endif + +#if !defined(REMAINING_TIME_IMAGE_X) && !defined(REMAINING_TIME_IMAGE_Y) && !defined(REMAINING_TIME_TEXT_X) && !defined(REMAINING_TIME_TEXT_Y) + #define REMAINING_TIME_IMAGE_X tft_string.center(ELAPSED_TIME_W) - 18 + #define REMAINING_TIME_IMAGE_Y 0 + #define REMAINING_TIME_TEXT_X tft_string.center(ELAPSED_TIME_W) + 18 + #define REMAINING_TIME_TEXT_Y tft_string.vcenter(29) +#endif + +#if !defined(PROGRESS_BAR_W) && !defined(PROGRESS_BAR_H) && !defined(PROGRESS_BAR_X) && !defined(PROGRESS_BAR_Y) + #define PROGRESS_BAR_W TFT_WIDTH - 8 + #define PROGRESS_BAR_H 12 + #define PROGRESS_BAR_X 4 + #define PROGRESS_BAR_Y 454 +#endif + +#if !defined(STATUS_MESSAGE_W) && !defined(STATUS_MESSAGE_H) && !defined(STATUS_MESSAGE_X) && !defined(STATUS_MESSAGE_Y) + #define STATUS_MESSAGE_W TFT_WIDTH + #define STATUS_MESSAGE_H FONT_LINE_HEIGHT + #define STATUS_MESSAGE_X 0 + #define STATUS_MESSAGE_Y 504 +#endif + +#if !defined(STATUS_MESSAGE_TEXT_X) && !defined(STATUS_MESSAGE_TEXT_Y) + #define STATUS_MESSAGE_TEXT_X tft_string.center(STATUS_MESSAGE_W) + #define STATUS_MESSAGE_TEXT_Y VCENTER +#endif + +// MenuEditItemBase::draw_edit_screen() +#if !defined(SLIDER_W) && !defined(SLIDER_Y) + #define SLIDER_W 720 + #define SLIDER_Y 320 +#endif + +#if ENABLED(AUTO_BED_LEVELING_UBL) + #if !defined(UBL_X_LABEL_X) && !defined(UBL_X_TEXT_X) && !defined(UBL_Y_LABEL_X) && !defined(UBL_Y_TEXT_X) + #define UBL_X_LABEL_X (TFT_WIDTH / 2 - 120) + #define UBL_X_TEXT_X (TFT_WIDTH / 2 - 16) - tft_string.width() + #define UBL_Y_LABEL_X (TFT_WIDTH / 2 + 16) + #define UBL_Y_TEXT_X (TFT_WIDTH / 2 + 120) - tft_string.width() + #endif + + // MarlinUI::ubl_plot() + #if !defined(UBL_GRID_W) && !defined(UBL_GRID_H) && !defined(UBL_GRID_X) && !defined(UBL_GRID_Y) && !defined(UBL_CONTROL_OFFSET) + #define UBL_GRID_W 192 + #define UBL_GRID_H 192 + #define UBL_GRID_X 8 + #define UBL_GRID_Y 8 + #define UBL_CONTROL_OFFSET 16 + #endif + + #if !defined(UBL_COORDINATES_W) && !defined(UBL_COORDINATES_X) && !defined(UBL_X_COORDINATE_Y) && !defined(UBL_Y_COORDINATE_Y) && !defined(UBL_Z_COORDINATE_Y) + #define UBL_COORDINATES_W 120 + #define UBL_COORDINATES_X 320 + + #define UBL_X_COORDINATE_Y UBL_GRID_Y + (UBL_GRID_H - MENU_ITEM_HEIGHT) / 2 - MENU_ITEM_HEIGHT + #define UBL_Y_COORDINATE_Y UBL_GRID_Y + (UBL_GRID_H - MENU_ITEM_HEIGHT) / 2 + #define UBL_Z_COORDINATE_Y UBL_GRID_Y + (UBL_GRID_H - MENU_ITEM_HEIGHT) / 2 + MENU_ITEM_HEIGHT + #endif + + #if !defined(UBL_ACTION_X) && !defined(UBL_ACTION_Y) + #define UBL_ACTION_X UBL_COORDINATES_X + #define UBL_ACTION_Y UBL_GRID_Y + UBL_GRID_H + UBL_CONTROL_OFFSET + #endif +#endif diff --git a/Marlin/src/lcd/tft/ui_240x320.h b/Marlin/src/lcd/tft/ui_240x320.h new file mode 100644 index 0000000000..c542e00e4f --- /dev/null +++ b/Marlin/src/lcd/tft/ui_240x320.h @@ -0,0 +1,294 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../inc/MarlinConfigPre.h" + +// -------------------------------- Core Parameters -------------------------------- + +#define MENU_TEXT_X 10 +#define MENU_TEXT_Y tft_string.vcenter(MENU_ITEM_HEIGHT) + +#define MENU_ITEM_ICON_X 0 +#define MENU_ITEM_ICON_Y 0 +#define MENU_ITEM_ICON_SPACE 32 + +#define MENU_ITEM_HEIGHT 32 +#define MENU_LINE_HEIGHT (MENU_ITEM_HEIGHT + 2) +#define MENU_TOP_LINE_Y 2 + +#if TFT_FONT == NOTOSANS || TFT_FONT == HELVETICA + #define FONT_SIZE 14 +#elif TFT_FONT == UNIFONT + #define FONT_SIZE 10 +#endif + +#define FONT_LINE_HEIGHT 24 + +// --------------------------------------------------------------------------------- + +#define VCENTER tft_string.vcenter(FONT_LINE_HEIGHT) + +// MarlinUI::show_bootscreen() +#ifndef BOOTSCREEN_LOGO + #if ENABLED(BOOT_MARLIN_LOGO_SMALL) + #define BOOTSCREEN_LOGO MarlinLogo195x59x16 + #define BOOTSCREEN_LOGO_W 195 + #define BOOTSCREEN_LOGO_H 59 + #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 48) + #else + #define BOOTSCREEN_LOGO MarlinLogo320x240x16 + #define BOOTSCREEN_LOGO_W TFT_WIDTH + #define BOOTSCREEN_LOGO_H TFT_HEIGHT + #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 54) + #endif +#endif + +#if !defined(BOOTSCREEN_LOGO_X) && !defined(BOOTSCREEN_LOGO_Y) + #define BOOTSCREEN_LOGO_X (TFT_WIDTH - BOOTSCREEN_LOGO_W) / 2 + #define BOOTSCREEN_LOGO_Y (TFT_HEIGHT - BOOTSCREEN_LOGO_H) / 2 +#endif + +#if !defined(NAVIGATION_PAGE_UP_X) && !defined(NAVIGATION_PAGE_UP_Y) && !defined(NAVIGATION_PAGE_DOWN_X) && !defined(NAVIGATION_PAGE_DOWN_Y) && !defined(NAVIGATION_BACK_X) && !defined(NAVIGATION_BACK_Y) + #define NAVIGATION_PAGE_UP_X 24 + #define NAVIGATION_PAGE_UP_Y TFT_HEIGHT - 34 + #define NAVIGATION_PAGE_DOWN_X 186 + #define NAVIGATION_PAGE_DOWN_Y TFT_HEIGHT - 34 + #define NAVIGATION_BACK_X 104 + #define NAVIGATION_BACK_Y TFT_HEIGHT - 34 +#endif + +#if !defined(BUTTON_DECREASE_X) && !defined(BUTTON_DECREASE_Y) && !defined(BUTTON_INCREASE_X) && !defined(BUTTON_INCREASE_Y) && !defined(BUTTON_CLICK_X) && !defined(BUTTON_CLICK_Y) + #define BUTTON_DECREASE_X 8 + #define BUTTON_DECREASE_Y TFT_HEIGHT - 64 + #define BUTTON_INCREASE_X 168 + #define BUTTON_INCREASE_Y TFT_HEIGHT - 64 + #define BUTTON_CLICK_X 88 + #define BUTTON_CLICK_Y TFT_HEIGHT - 64 +#endif + +#if !defined(BUTTON_CANCEL_X) && !defined(BUTTON_CANCEL_Y) && !defined(BUTTON_CONFIRM_X) && !defined(BUTTON_CONFIRM_Y) + #define BUTTON_CANCEL_X 20 + #define BUTTON_CANCEL_Y TFT_HEIGHT - 64 + #define BUTTON_CONFIRM_X 156 + #define BUTTON_CONFIRM_Y TFT_HEIGHT - 64 +#endif + +// MarlinUI::draw_kill_screen() +#if !defined(KILL_SCREEN_STATUS_Y) && !defined(KILL_SCREEN_HALTED_Y) && !defined(KILL_SCREEN_RESET_Y) + #define KILL_SCREEN_STATUS_Y 104 + #define KILL_SCREEN_HALTED_Y 172 + #define KILL_SCREEN_RESET_Y 206 +#endif + +// draw_heater_status() and draw_fan_status() +#if !defined(TEMP_FAN_CONTROL_W) && !defined(TEMP_FAN_CONTROL_H) + #define TEMP_FAN_CONTROL_W 60 + #define TEMP_FAN_CONTROL_H 100 +#endif +#if !defined(TEMP_ICON_X) && !defined(TEMP_ICON_Y) + #define TEMP_ICON_X -2 + #define TEMP_ICON_Y 18 +#endif +#if !defined(FAN_ICON_X) && !defined(FAN_ICON_Y) + #define FAN_ICON_X -2 + #define FAN_ICON_Y 10 +#endif + +#if !defined(TEMP_CURRENT_TEXT_X) && !defined(TEMP_CURRENT_TEXT_Y) && !defined(TEMP_TARGET_TEXT_X) && !defined(TEMP_TARGET_TEXT_Y) + #define TEMP_CURRENT_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 2 + #define TEMP_CURRENT_TEXT_Y 69 + VCENTER + #define TEMP_TARGET_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 2 + #define TEMP_TARGET_TEXT_Y 5 + VCENTER +#endif + +#if !defined(FAN_TEXT_X) && !defined(FAN_TEXT_Y) + #define FAN_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 6 + #define FAN_TEXT_Y 69 + VCENTER +#endif + +// MarlinUI::draw_status_screen() +#if !defined(MAX_ITEMS) && !defined(ITEM_X) && !defined(ITEM_Y) + #define MAX_ITEMS 4 + #define ITEM_X(N) (TFT_WIDTH / _MIN(ITEMS_COUNT, MAX_ITEMS) - TEMP_FAN_CONTROL_W) / 2 + (TFT_WIDTH * N / _MIN(ITEMS_COUNT, MAX_ITEMS)) + #define ITEM_Y 2 +#endif + +#if !defined(COORDINATES_W) && !defined(COORDINATES_H) && !defined(COORDINATES_X) && !defined(COORDINATES_Y) + #define COORDINATES_W TFT_WIDTH - 8 + #define COORDINATES_H FONT_LINE_HEIGHT * 2 + #define COORDINATES_X 4 + #define COORDINATES_Y 104 +#endif + +#if !defined(E_MARK_X) && !defined(E_MARK_Y) && !defined(E_VALUE_X) && !defined(E_VALUE_Y) + #define E_MARK_X 10 + #define E_MARK_Y VCENTER + FONT_LINE_HEIGHT + #define E_VALUE_X 77 - tft_string.width() + #define E_VALUE_Y VCENTER + FONT_LINE_HEIGHT +#endif + +#if !defined(X_MARK_X) && !defined(X_MARK_Y) && !defined(X_VALUE_X) && !defined(X_VALUE_Y) + #define X_MARK_X 10 + #define X_MARK_Y VCENTER + #define X_VALUE_X 77 - tft_string.width() + #define X_VALUE_Y VCENTER +#endif + +#if !defined(Y_MARK_X) && !defined(Y_MARK_Y) && !defined(Y_VALUE_X) && !defined(Y_VALUE_Y) + #define Y_MARK_X 129 + #define Y_MARK_Y VCENTER + #define Y_VALUE_X 197 - tft_string.width() + #define Y_VALUE_Y VCENTER +#endif + +#if !defined(Z_MARK_X) && !defined(Z_MARK_Y) && !defined(Z_VALUE_X) && !defined(Z_VALUE_Y) + #define Z_MARK_X 129 + #define Z_MARK_Y VCENTER + FONT_LINE_HEIGHT + #define Z_VALUE_X 222 - tft_string.width() + #define Z_VALUE_Y VCENTER + FONT_LINE_HEIGHT + #define Z_VALUE_OFFSET 25 +#endif + +#if !defined(FEEDRATE_W) && !defined(FEEDRATE_H) && !defined(FEEDRATE_X) && !defined(FEEDRATE_Y) + #define FEEDRATE_W 90 + #define FEEDRATE_H 32 + #define FEEDRATE_X 20 + #define FEEDRATE_Y 166 +#endif +#if !defined(FEEDRATE_ICON_X) && !defined(FEEDRATE_ICON_Y) && !defined(FEEDRATE_ICON_Y) && !defined(FEEDRATE_TEXT_Y) + #define FEEDRATE_ICON_X 0 + #define FEEDRATE_ICON_Y 0 + #define FEEDRATE_TEXT_X 36 + #define FEEDRATE_TEXT_Y tft_string.vcenter(30) +#endif + +#if !defined(FLOWRATE_W) && !defined(FLOWRATE_H) && !defined(FLOWRATE_X) && !defined(FLOWRATE_Y) + #define FLOWRATE_W 90 + #define FLOWRATE_H 32 + #define FLOWRATE_X 134 + #define FLOWRATE_Y 166 +#endif +#if !defined(FLOWRATE_ICON_X) && !defined(FLOWRATE_ICON_Y) && !defined(FLOWRATE_TEXT_X) && !defined(FLOWRATE_TEXT_Y) + #define FLOWRATE_ICON_X 0 + #define FLOWRATE_ICON_Y 0 + #define FLOWRATE_TEXT_X 36 + #define FLOWRATE_TEXT_Y tft_string.vcenter(30) +#endif + +#if !defined(MENU_ICON_X) && !defined(MENU_ICON_Y) + #define MENU_ICON_X 176 + #define MENU_ICON_Y 210 +#endif +#if !defined(SDCARD_ICON_X) && !defined(SDCARD_ICON_Y) + #define SDCARD_ICON_X 0 + #define SDCARD_ICON_Y 210 +#endif + +#if !defined(ELAPSED_TIME_W) && !defined(ELAPSED_TIME_H) && !defined(ELAPSED_TIME_X) && !defined(ELAPSED_TIME_Y) + #define ELAPSED_TIME_H 32 + #define ELAPSED_TIME_W 112 + #define ELAPSED_TIME_X (TFT_WIDTH - ELAPSED_TIME_W) / 2 + #define ELAPSED_TIME_Y 246 +#endif + +#if !defined(REMAINING_TIME_W) && !defined(REMAINING_TIME_H) && !defined(REMAINING_TIME_X) && !defined(REMAINING_TIME_Y) + #if ALL(SHOW_ELAPSED_TIME, SHOW_REMAINING_TIME) + #define REMAINING_TIME_Y 210 + #elif ENABLED(SHOW_REMAINING_TIME) + #define REMAINING_TIME_Y 246 + #endif + + #define REMAINING_TIME_H 32 + #define REMAINING_TIME_W 112 + #define REMAINING_TIME_X (TFT_WIDTH - REMAINING_TIME_W) / 2 +#endif + +#if !defined(ELAPSED_TIME_IMAGE_X) && !defined(ELAPSED_TIME_IMAGE_Y) && !defined(ELAPSED_TIME_TEXT_X) && !defined(ELAPSED_TIME_TEXT_Y) + #define ELAPSED_TIME_IMAGE_X tft_string.center(ELAPSED_TIME_W) - 18 + #define ELAPSED_TIME_IMAGE_Y 0 + #define ELAPSED_TIME_TEXT_X tft_string.center(ELAPSED_TIME_W) + 18 + #define ELAPSED_TIME_TEXT_Y tft_string.vcenter(29) +#endif + +#if !defined(REMAINING_TIME_IMAGE_X) && !defined(REMAINING_TIME_IMAGE_Y) && !defined(REMAINING_TIME_TEXT_X) && !defined(REMAINING_TIME_TEXT_Y) + #define REMAINING_TIME_IMAGE_X tft_string.center(ELAPSED_TIME_W) - 18 + #define REMAINING_TIME_IMAGE_Y 0 + #define REMAINING_TIME_TEXT_X tft_string.center(ELAPSED_TIME_W) + 18 + #define REMAINING_TIME_TEXT_Y tft_string.vcenter(29) +#endif + +#if !defined(PROGRESS_BAR_W) && !defined(PROGRESS_BAR_H) && !defined(PROGRESS_BAR_X) && !defined(PROGRESS_BAR_Y) + #define PROGRESS_BAR_W TFT_WIDTH - 8 + #define PROGRESS_BAR_H 9 + #define PROGRESS_BAR_X 4 + #define PROGRESS_BAR_Y 282 +#endif + +#if !defined(STATUS_MESSAGE_W) && !defined(STATUS_MESSAGE_H) && !defined(STATUS_MESSAGE_X) && !defined(STATUS_MESSAGE_Y) + #define STATUS_MESSAGE_W TFT_WIDTH + #define STATUS_MESSAGE_H FONT_LINE_HEIGHT + #define STATUS_MESSAGE_X 0 + #define STATUS_MESSAGE_Y 292 +#endif + +#if !defined(STATUS_MESSAGE_TEXT_X) && !defined(STATUS_MESSAGE_TEXT_Y) + #define STATUS_MESSAGE_TEXT_X tft_string.center(STATUS_MESSAGE_W) + #define STATUS_MESSAGE_TEXT_Y VCENTER +#endif + +// MenuEditItemBase::draw_edit_screen() +#if !defined(SLIDER_W) && !defined(SLIDER_Y) + #define SLIDER_W 220 + #define SLIDER_Y 140 +#endif + +#if ENABLED(AUTO_BED_LEVELING_UBL) + #if !defined(UBL_X_LABEL_X) && !defined(UBL_X_TEXT_X) && !defined(UBL_Y_LABEL_X) && !defined(UBL_Y_TEXT_X) + #define UBL_X_LABEL_X (TFT_WIDTH / 2 - 104) + #define UBL_X_TEXT_X (TFT_WIDTH / 2 - 16) - tft_string.width() + #define UBL_Y_LABEL_X (TFT_WIDTH / 2 + 16) + #define UBL_Y_TEXT_X (TFT_WIDTH / 2 + 104) - tft_string.width() + #endif + + // MarlinUI::ubl_plot() + #if !defined(UBL_GRID_W) && !defined(UBL_GRID_H) && !defined(UBL_GRID_X) && !defined(UBL_GRID_Y) && !defined(UBL_CONTROL_OFFSET) + #define UBL_GRID_W 144 + #define UBL_GRID_H 144 + #define UBL_GRID_X 8 + #define UBL_GRID_Y 8 + #define UBL_CONTROL_OFFSET 8 + #endif + + #if !defined(UBL_COORDINATES_W) && !defined(UBL_COORDINATES_X) && !defined(UBL_X_COORDINATE_Y) && !defined(UBL_Y_COORDINATE_Y) && !defined(UBL_Z_COORDINATE_Y) + #define UBL_COORDINATES_W 120 + #define UBL_COORDINATES_X 20 + + #define UBL_X_COORDINATE_Y 196 + #define UBL_Y_COORDINATE_Y 220 + #define UBL_Z_COORDINATE_Y 244 + #endif + + #if !defined(UBL_ACTION_X) && !defined(UBL_ACTION_Y) + #define UBL_ACTION_X 180 + #define UBL_ACTION_Y 220 + #endif +#endif diff --git a/Marlin/src/lcd/tft/ui_320x240.cpp b/Marlin/src/lcd/tft/ui_320x240.cpp deleted file mode 100644 index dcbfa935b4..0000000000 --- a/Marlin/src/lcd/tft/ui_320x240.cpp +++ /dev/null @@ -1,1221 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "../../inc/MarlinConfigPre.h" - -#if HAS_UI_320x240 - -#include "ui_common.h" - -#include "../marlinui.h" -#include "../menu/menu.h" -#include "../../libs/numtostr.h" - -#include "../../sd/cardreader.h" -#include "../../module/temperature.h" -#include "../../module/printcounter.h" -#include "../../module/planner.h" -#include "../../module/motion.h" - -#if DISABLED(LCD_PROGRESS_BAR) && ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) - #include "../../feature/filwidth.h" - #include "../../gcode/parser.h" -#endif - -#if ENABLED(AUTO_BED_LEVELING_UBL) - #include "../../feature/bedlevel/bedlevel.h" -#endif - -void MarlinUI::tft_idle() { - #if ENABLED(TOUCH_SCREEN) - if (TERN0(HAS_TOUCH_SLEEP, lcd_sleep_task())) return; - if (draw_menu_navigation) { - constexpr uint16_t cx = TERN(TFT_COLOR_UI_PORTRAIT, 16, 48), - cy = TERN(TFT_COLOR_UI_PORTRAIT, 286, 206); - add_control(cx, cy, PAGE_UP, imgPageUp, encoderTopLine > 0); - add_control(cx + 192, cy, PAGE_DOWN, imgPageDown, encoderTopLine + LCD_HEIGHT < screen_items); - add_control(cx + 96, cy, BACK, imgBack); - draw_menu_navigation = false; - } - #endif - - tft.queue.async(); - - TERN_(TOUCH_SCREEN, if (tft.queue.is_empty()) touch.idle()); // Touch driver is not DMA-aware, so only check for touch controls after screen drawing is completed -} - -#if ENABLED(SHOW_BOOTSCREEN) - - void MarlinUI::show_bootscreen() { - tft.queue.reset(); - - tft.canvas(0, 0, TFT_WIDTH, TFT_HEIGHT); - #if ENABLED(BOOT_MARLIN_LOGO_SMALL) - #define BOOT_LOGO_W 195 // MarlinLogo195x59x16 - #define BOOT_LOGO_H 59 - #define SITE_URL_Y (TFT_HEIGHT - 48) - tft.set_background(COLOR_BACKGROUND); - #else - #define BOOT_LOGO_W TFT_WIDTH // MarlinLogo320x240x16 - #define BOOT_LOGO_H TFT_HEIGHT - #define SITE_URL_Y (TFT_HEIGHT - 54) - #endif - tft.add_image((TFT_WIDTH - BOOT_LOGO_W) / 2, (TFT_HEIGHT - BOOT_LOGO_H) / 2, imgBootScreen); - #ifdef WEBSITE_URL - tft_string.set(WEBSITE_URL); - tft.add_text(tft_string.center(TFT_WIDTH), SITE_URL_Y, COLOR_WEBSITE_URL, tft_string); - #endif - - tft.queue.sync(); - } - - void MarlinUI::bootscreen_completion(const millis_t sofar) { - if ((BOOTSCREEN_TIMEOUT) > sofar) safe_delay((BOOTSCREEN_TIMEOUT) - sofar); - clear_lcd(); - } - -#endif - -void MarlinUI::draw_kill_screen() { - tft.queue.reset(); - tft.fill(0, 0, TFT_WIDTH, TFT_HEIGHT, COLOR_KILL_SCREEN_BG); - - tft.canvas(0, 60, TFT_WIDTH, FONT_LINE_HEIGHT); - tft.set_background(COLOR_KILL_SCREEN_BG); - tft_string.set(status_message); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_KILL_SCREEN_TEXT, tft_string); - - tft.canvas(0, 120, TFT_WIDTH, FONT_LINE_HEIGHT); - tft.set_background(COLOR_KILL_SCREEN_BG); - tft_string.set(GET_TEXT(MSG_HALTED)); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_KILL_SCREEN_TEXT, tft_string); - - tft.canvas(0, 160, TFT_WIDTH, FONT_LINE_HEIGHT); - tft.set_background(COLOR_KILL_SCREEN_BG); - tft_string.set(GET_TEXT(MSG_PLEASE_RESET)); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_KILL_SCREEN_TEXT, tft_string); - - tft.queue.sync(); -} - -void draw_heater_status(uint16_t x, uint16_t y, const int8_t heater) { - MarlinImage image = imgHotEnd; - celsius_t currentTemperature, targetTemperature; - - if (heater >= 0) { // HotEnd - #if HAS_EXTRUDERS - currentTemperature = thermalManager.wholeDegHotend(heater); - targetTemperature = thermalManager.degTargetHotend(heater); - #else - return; - #endif - } - #if HAS_HEATED_BED - else if (heater == H_BED) { - currentTemperature = thermalManager.wholeDegBed(); - targetTemperature = thermalManager.degTargetBed(); - } - #endif - #if HAS_TEMP_CHAMBER - else if (heater == H_CHAMBER) { - currentTemperature = thermalManager.wholeDegChamber(); - #if HAS_HEATED_CHAMBER - targetTemperature = thermalManager.degTargetChamber(); - #else - targetTemperature = ABSOLUTE_ZERO; - #endif - } - #endif - #if HAS_TEMP_COOLER - else if (heater == H_COOLER) { - currentTemperature = thermalManager.wholeDegCooler(); - targetTemperature = TERN(HAS_COOLER, thermalManager.degTargetCooler(), ABSOLUTE_ZERO); - } - #endif - else return; - - TERN_(TOUCH_SCREEN, if (targetTemperature >= 0) touch.add_control(HEATER, x, y, 64, 100, heater)); - tft.canvas(x, y, 64, 100); - tft.set_background(COLOR_BACKGROUND); - - uint16_t color = currentTemperature < 0 ? COLOR_INACTIVE : COLOR_COLD; - - if (heater >= 0) { // HotEnd - if (currentTemperature >= 50) color = COLOR_HOTEND; - } - #if HAS_HEATED_BED - else if (heater == H_BED) { - if (currentTemperature >= 50) color = COLOR_HEATED_BED; - image = targetTemperature > 0 ? imgBedHeated : imgBed; - } - #endif - #if HAS_TEMP_CHAMBER - else if (heater == H_CHAMBER) { - if (currentTemperature >= 50) color = COLOR_CHAMBER; - image = targetTemperature > 0 ? imgChamberHeated : imgChamber; - } - #endif - #if HAS_TEMP_COOLER - else if (heater == H_COOLER) { - if (currentTemperature <= 26) color = COLOR_COLD; - if (currentTemperature > 26) color = COLOR_RED; - image = targetTemperature > 26 ? imgCoolerHot : imgCooler; - } - #endif - - tft.add_image(0, 18, image, color); - - tft_string.set(i16tostr3rj(currentTemperature)); - tft_string.add(LCD_STR_DEGREE); - tft_string.trim(); - tft.add_text(tft_string.center(64) + 2, 69 + tft_string.vcenter(FONT_LINE_HEIGHT), color, tft_string); - - if (targetTemperature >= 0) { - tft_string.set(i16tostr3rj(targetTemperature)); - tft_string.add(LCD_STR_DEGREE); - tft_string.trim(); - tft.add_text(tft_string.center(64) + 2, 5 + tft_string.vcenter(FONT_LINE_HEIGHT), color, tft_string); - } -} - -void draw_fan_status(uint16_t x, uint16_t y, const bool blink) { - TERN_(TOUCH_SCREEN, touch.add_control(FAN, x, y, 64, 100)); - tft.canvas(x, y, 64, 100); - tft.set_background(COLOR_BACKGROUND); - - uint8_t fanSpeed = thermalManager.fan_speed[0]; - MarlinImage image; - - if (fanSpeed >= 127) - image = blink ? imgFanFast1 : imgFanFast0; - else if (fanSpeed > 0) - image = blink ? imgFanSlow1 : imgFanSlow0; - else - image = imgFanIdle; - - tft.add_image(0, 10, image, COLOR_FAN); - - tft_string.set(ui8tostr4pctrj(thermalManager.fan_speed[0])); - tft_string.trim(); - tft.add_text(tft_string.center(64) + 6, 69 + tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_FAN, tft_string); -} - -void MarlinUI::draw_status_screen() { - const bool blink = get_blink(); - - TERN_(TOUCH_SCREEN, touch.clear()); - - // Statuses of heaters and fans - constexpr uint16_t y = TFT_STATUS_TOP_Y; - for (uint16_t i = 0 ; i < ITEMS_COUNT; i++) { - const uint16_t x = (TFT_WIDTH / ITEMS_COUNT - 64) / 2 + (TFT_WIDTH * i / ITEMS_COUNT); - switch (i) { - #if HAS_EXTRUDERS - case ITEM_E0: draw_heater_status(x, y, H_E0); break; - #endif - #if HAS_MULTI_HOTEND - case ITEM_E1: draw_heater_status(x, y, H_E1); break; - #endif - #if HOTENDS > 2 - case ITEM_E2: draw_heater_status(x, y, H_E2); break; - #endif - #if HAS_HEATED_BED - case ITEM_BED: draw_heater_status(x, y, H_BED); break; - #endif - #if HAS_TEMP_CHAMBER - case ITEM_CHAMBER: draw_heater_status(x, y, H_CHAMBER); break; - #endif - #if HAS_TEMP_COOLER - case ITEM_COOLER: draw_heater_status(x, y, H_COOLER); break; - #endif - #if HAS_FAN - case ITEM_FAN: draw_fan_status(x, y, blink); break; - #endif - } - } - - // 2nd horizontal group - current coordinates (height = 24, top margin = 3) - uint16_t width = TERN(TFT_COLOR_UI_PORTRAIT, 232, 312), - height = FONT_LINE_HEIGHT * TERN(TFT_COLOR_UI_PORTRAIT, 2, 1); - tft.canvas(4, 103, width, height); - tft.set_background(COLOR_BACKGROUND); - tft.add_rectangle(0, 0, width, height, COLOR_AXIS_HOMED); - - if (TERN0(LCD_SHOW_E_TOTAL, printingIsActive())) { - #if ENABLED(LCD_SHOW_E_TOTAL) - tft.add_text(10, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "E"); - const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm - tft_string.set(ftostr4sign(e_move_accumulator / escale)); - tft_string.add(escale == 10 ? 'c' : 'm'); - tft_string.add('m'); - tft.add_text(127 - tft_string.width(), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, tft_string); - #endif - } - else { - #if HAS_X_AXIS - tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 32, 10), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "X"); - const bool nhx = axis_should_home(X_AXIS); - tft_string.set(blink && nhx ? "?" : ftostr4sign(LOGICAL_X_POSITION(current_position.x))); - uint16_t pos_x = TERN(TFT_COLOR_UI_PORTRAIT, 32 - tft_string.width() / 2, 68 - tft_string.width()), - pos_y = SUM_TERN(TFT_COLOR_UI_PORTRAIT, tft_string.vcenter(FONT_LINE_HEIGHT), FONT_LINE_HEIGHT); - tft.add_text(pos_x, pos_y, nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); - #endif - - #if HAS_Y_AXIS - tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 110, 127), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "Y"); - const bool nhy = axis_should_home(Y_AXIS); - tft_string.set(blink && nhy ? "?" : ftostr4sign(LOGICAL_Y_POSITION(current_position.y))); - tft.add_text( - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - 110 - tft_string.width() / 2, FONT_LINE_HEIGHT + tft_string.vcenter(FONT_LINE_HEIGHT), - #else - 185 - tft_string.width(), tft_string.vcenter(FONT_LINE_HEIGHT), - #endif - nhy ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string - ); - #endif - } - - #if HAS_Z_AXIS - tft.add_text(TERN(TFT_COLOR_UI_PORTRAIT, 192, 219), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "Z"); - const bool nhz = axis_should_home(Z_AXIS); - uint16_t offset = 25; - if (blink && nhz) - tft_string.set('?'); - else { - const float z = LOGICAL_Z_POSITION(current_position.z); - tft_string.set(ftostr52sp((int16_t)z)); - tft_string.rtrim(); - offset += tft_string.width(); - - tft_string.set(ftostr52sp(z)); - offset -= tft_string.width(); - } - #endif - - uint16_t pos_x = TERN(TFT_COLOR_UI_PORTRAIT, 192 - tft_string.width() / 2, 301 - tft_string.width() - offset), - pos_y = SUM_TERN(TFT_COLOR_UI_PORTRAIT, tft_string.vcenter(FONT_LINE_HEIGHT), FONT_LINE_HEIGHT); - tft.add_text(pos_x, pos_y, nhz ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); - - // 3rd horizontal group - controls and times (height = 64, top margin = 3) - // 3rd group, subgroup A - controls (on the sides) - #if ENABLED(TOUCH_SCREEN) - width = TERN(TFT_COLOR_UI_PORTRAIT, 232, 312); - height = TERN(TFT_COLOR_UI_PORTRAIT, FONT_LINE_HEIGHT * 2, FONT_LINE_HEIGHT); - touch.add_control(MOVE_AXIS, 0, 103, width, height); - add_control(256, 130, menu_main, imgSettings); - TERN_(SDSUPPORT, add_control(0, 130, menu_media, imgSD, !printingIsActive(), COLOR_CONTROL_ENABLED, card.isMounted() && printingIsActive() ? COLOR_BUSY : COLOR_CONTROL_DISABLED)); - #endif - - // 3rd group, subgroup B - speeds (center, top half) - - // Feed rate - tft.canvas( - TERN(TFT_COLOR_UI_PORTRAIT, 30, 70), - TERN(TFT_COLOR_UI_PORTRAIT, 172, 132), - TERN(TFT_COLOR_UI_PORTRAIT, 80, 88), - MENU_ITEM_HEIGHT - ); - tft.set_background(COLOR_BACKGROUND); - uint16_t color = feedrate_percentage == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; - tft.add_image(0, 0, imgFeedRate, color); - tft_string.set(i16tostr3rj(feedrate_percentage)); - tft_string.add('%'); - tft.add_text(32, tft_string.vcenter(30), color, tft_string); - TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, - TERN(TFT_COLOR_UI_PORTRAIT, 30, 70), - TERN(TFT_COLOR_UI_PORTRAIT, 172, 132), - 80, MENU_ITEM_HEIGHT - )); - - // Flow rate - tft.canvas( - TERN(TFT_COLOR_UI_PORTRAIT, 140, 162), - TERN(TFT_COLOR_UI_PORTRAIT, 172, 132), - TERN(TFT_COLOR_UI_PORTRAIT, 80, 88), - MENU_ITEM_HEIGHT - ); - tft.set_background(COLOR_BACKGROUND); - color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; - tft.add_image(0, 0, imgFlowRate, color); - tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); - tft_string.add('%'); - tft.add_text(32, tft_string.vcenter(30), color, tft_string); - #if ENABLED(TOUCH_SCREEN) - touch.add_control(FLOWRATE, - TERN(TFT_COLOR_UI_PORTRAIT, 140, 170), - TERN(TFT_COLOR_UI_PORTRAIT, 172, 132), - 80, MENU_ITEM_HEIGHT, active_extruder - ); - #endif - - // 3rd group, subgroup C - times (center, bottom half) - const progress_t progress = TERN(HAS_PRINT_PROGRESS_PERMYRIAD, get_progress_permyriad, get_progress_percent)(); - const uint16_t time_str_width = 180, image_width = 34; - pos_x = (TFT_WIDTH - time_str_width) / 2; - pos_y = TERN(TFT_COLOR_UI_PORTRAIT, 256, 164); - #if ENABLED(SHOW_ELAPSED_TIME) && DISABLED(SHOW_REMAINING_TIME) - // Print duration so far (time elapsed) - centered - char elapsed_str[18]; - duration_t elapsed = print_job_timer.duration(); - elapsed.toCompactString(elapsed_str); - - tft.canvas(pos_x, pos_y, time_str_width, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(elapsed_str); - uint16_t text_pos_x = tft_string.center(time_str_width - image_width); - tft.add_image(text_pos_x, 0, imgTimeElapsed, COLOR_PRINT_TIME); - tft.add_text(text_pos_x + image_width, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_PRINT_TIME, tft_string); - - #elif DISABLED(SHOW_ELAPSED_TIME) && ENABLED(SHOW_REMAINING_TIME) - // Print time remaining estimation - centered - char estimate_str[18]; - duration_t elapsed = print_job_timer.duration(); - - // Get the estimate, first from M73 - uint32_t estimate_remaining = (0 - #if ALL(SET_PROGRESS_MANUALLY, SET_REMAINING_TIME) - + get_remaining_time() - #endif - ); - // If no M73 estimate is available but we have progress data, calculate time remaining assuming time elapsed is linear with progress - if (!estimate_remaining && progress > 0) - estimate_remaining = elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress; - - // Generate estimate string - if (!estimate_remaining) - tft_string.set("-"); - else { - duration_t estimation = estimate_remaining; - estimation.toCompactString(estimate_str); - tft_string.set(estimate_str); - } - - tft.canvas(pos_x, pos_y, time_str_width, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - color = printingIsActive() ? COLOR_PRINT_TIME : COLOR_INACTIVE; - uint16_t text_pos_x = tft_string.center(time_str_width - image_width); - tft.add_image(text_pos_x, 0, imgTimeRemaining, color); - tft.add_text(text_pos_x + image_width, tft_string.vcenter(FONT_LINE_HEIGHT), color, tft_string); - - #elif ALL(SHOW_REMAINING_TIME, SHOW_ELAPSED_TIME) - // Print duration so far (time elapsed) - aligned under feed rate - char elapsed_str[18]; - duration_t elapsed = print_job_timer.duration(); - elapsed.toCompactString(elapsed_str); - - tft.canvas(pos_x, pos_y, time_str_width / 2 - 2, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft.add_image(0, 0, imgTimeElapsed, COLOR_PRINT_TIME); - tft_string.set(elapsed_str); - tft.add_text(32, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_PRINT_TIME, tft_string); - - // Print time remaining estimation - aligned under flow rate - char estimate_str[18]; - - // Get the estimate, first from M73 - uint32_t estimate_remaining = (0 - #if ALL(SET_PROGRESS_MANUALLY, SET_REMAINING_TIME) - + get_remaining_time() - #endif - ); - // If no M73 estimate is available but we have progress data, calculate time remaining assuming time elapsed is linear with progress - if (!estimate_remaining && progress > 0) - estimate_remaining = elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress; - - // Generate estimate string - if (!estimate_remaining) - tft_string.set("-"); - else { - duration_t estimation = estimate_remaining; - estimation.toCompactString(estimate_str); - tft_string.set(estimate_str); - } - - // Push out the estimate to the screen - tft.canvas(pos_x + time_str_width / 2 + 2, pos_y, time_str_width / 2 - 2, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - color = printingIsActive() ? COLOR_PRINT_TIME : COLOR_INACTIVE; - tft.add_image(0, 0, imgTimeRemaining, color); - tft.add_text(32, tft_string.vcenter(FONT_LINE_HEIGHT), color, tft_string); - #endif - - // Fourth horizontal group - progress bar (height = 9, top margin = 4) - pos_y = TERN(TFT_COLOR_UI_PORTRAIT, 278, 198); - tft.canvas(4, pos_y, TFT_WIDTH - 8, 9); - tft.set_background(COLOR_PROGRESS_BG); - tft.add_rectangle(0, 0, TFT_WIDTH - 8, 9, COLOR_PROGRESS_FRAME); - if (progress) - tft.add_bar(1, 1, ((TFT_WIDTH - 10) * progress / (PROGRESS_SCALE)) / 100, 7, COLOR_PROGRESS_BAR); - - // Status message - pos_y += 9 + 7; - tft.canvas(0, pos_y, TFT_WIDTH, TFT_HEIGHT - pos_y); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(status_message); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_STATUS_MESSAGE, tft_string); - - #if ENABLED(TOUCH_SCREEN) - { - add_control( - TERN(TFT_COLOR_UI_PORTRAIT, 176, 256), - TERN(TFT_COLOR_UI_PORTRAIT, 210, 130), - menu_main, imgSettings - ); - #if HAS_MEDIA - const bool cm = card.isMounted(), pa = printingIsActive(); - if (cm && pa) - add_control(0, TERN(TFT_COLOR_UI_PORTRAIT, 210, 130), STOP, imgCancel, true, COLOR_CONTROL_CANCEL); - else - add_control(0, TERN(TFT_COLOR_UI_PORTRAIT, 210, 130), menu_media, imgSD, cm && !pa, COLOR_CONTROL_ENABLED, COLOR_CONTROL_DISABLED); - #endif - } - #endif // TOUCH_SCREEN -} - -// Low-level draw_edit_screen can be used to draw an edit screen from anyplace -void MenuEditItemBase::draw_edit_screen(FSTR_P const fstr, const char * const value/*=nullptr*/) { - ui.encoder_direction_normal(); - TERN_(TOUCH_SCREEN, touch.clear()); - - uint16_t line = 1; - - menu_line(line++); - tft_string.set(fstr, itemIndex, itemStringC, itemStringF); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - - TERN_(AUTO_BED_LEVELING_UBL, if (ui.external_control) line++); // ftostr52() will overwrite *value so *value has to be displayed first - - menu_line(line); - tft_string.set(value); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - #if ENABLED(AUTO_BED_LEVELING_UBL) - if (ui.external_control) { - menu_line(line - 1); - - tft_string.set(X_LBL); - tft.add_text(TFT_WIDTH / 2 - 120, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(ftostr52(LOGICAL_X_POSITION(current_position.x))); - tft_string.trim(); - tft.add_text(TFT_WIDTH / 2 - 16 - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - tft_string.set(Y_LBL); - tft.add_text(TFT_WIDTH / 2 + 16, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(ftostr52(LOGICAL_X_POSITION(current_position.y))); - tft_string.trim(); - tft.add_text(TFT_WIDTH / 2 + 120 - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - } - #endif - - if (ui.can_show_slider()) { - - #define SLIDER_LENGTH 224 - #define SLIDER_Y_POSITION 140 - - tft.canvas((TFT_WIDTH - SLIDER_LENGTH) / 2, SLIDER_Y_POSITION, SLIDER_LENGTH, 16); - tft.set_background(COLOR_BACKGROUND); - - int16_t position = (SLIDER_LENGTH - 2) * ui.encoderPosition / maxEditValue; - tft.add_bar(0, 7, 1, 2, ui.encoderPosition == 0 ? COLOR_SLIDER_INACTIVE : COLOR_SLIDER); - tft.add_bar(1, 6, position, 4, COLOR_SLIDER); - tft.add_bar(position + 1, 6, SLIDER_LENGTH - 2 - position, 4, COLOR_SLIDER_INACTIVE); - tft.add_bar(SLIDER_LENGTH - 1, 7, 1, 2, int32_t(ui.encoderPosition) == maxEditValue ? COLOR_SLIDER : COLOR_SLIDER_INACTIVE); - - #if ENABLED(TOUCH_SCREEN) - tft.add_image((SLIDER_LENGTH - 8) * ui.encoderPosition / maxEditValue, 0, imgSlider, COLOR_SLIDER); - touch.add_control(SLIDER, (TFT_WIDTH - SLIDER_LENGTH) / 2, SLIDER_Y_POSITION - 8, SLIDER_LENGTH, 32, maxEditValue); - #endif - } - - tft.draw_edit_screen_buttons(); -} - -void TFT::draw_edit_screen_buttons() { - #if ENABLED(TOUCH_SCREEN) - add_control(TERN(TFT_COLOR_UI_PORTRAIT, 16, 32), TFT_HEIGHT - 64, DECREASE, imgDecrease); - add_control(TERN(TFT_COLOR_UI_PORTRAIT, 172, 224), TFT_HEIGHT - 64, INCREASE, imgIncrease); - add_control(TERN(TFT_COLOR_UI_PORTRAIT, 96, 128), TFT_HEIGHT - 64, CLICK, imgConfirm); - #endif -} - -// The Select Screen presents a prompt and two "buttons" -void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, const bool yesno, FSTR_P const pref, const char * const string/*=nullptr*/, FSTR_P const suff/*=nullptr*/) { - uint16_t line = 1; - - if (!string) line++; - - menu_line(line++); - tft_string.set(pref); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - - if (string) { - menu_line(line++); - tft_string.set(string); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - } - - if (suff) { - menu_line(line); - tft_string.set(suff); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - } - #if ENABLED(TOUCH_SCREEN) - if (no) add_control(TERN(TFT_COLOR_UI_PORTRAIT, 32,48), TFT_HEIGHT - 64, CANCEL, imgCancel, true, yesno ? HALF(COLOR_CONTROL_CANCEL) : COLOR_CONTROL_CANCEL); - if (yes) add_control(TERN(TFT_COLOR_UI_PORTRAIT, 172, 208), TFT_HEIGHT - 64, CONFIRM, imgConfirm, true, yesno ? COLOR_CONTROL_CONFIRM : HALF(COLOR_CONTROL_CONFIRM)); - #endif -} - -#if ENABLED(ADVANCED_PAUSE_FEATURE) - - void MarlinUI::draw_hotend_status(const uint8_t row, const uint8_t extruder) { - #if ENABLED(TOUCH_SCREEN) - touch.clear(); - draw_menu_navigation = false; - touch.add_control(RESUME_CONTINUE, 0, 0, TFT_WIDTH, TFT_HEIGHT); - #endif - - menu_line(row); - tft_string.set(GET_TEXT(MSG_FILAMENT_CHANGE_NOZZLE)); - tft_string.add('E'); - tft_string.add((char)('1' + extruder)); - tft_string.add(' '); - tft_string.add(i16tostr3rj(thermalManager.wholeDegHotend(extruder))); - tft_string.add(LCD_STR_DEGREE); - tft_string.add(F(" / ")); - tft_string.add(i16tostr3rj(thermalManager.degTargetHotend(extruder))); - tft_string.add(LCD_STR_DEGREE); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - } - -#endif // ADVANCED_PAUSE_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_UBL) - #define GRID_OFFSET_X 8 - #define GRID_OFFSET_Y 8 - #define GRID_WIDTH 144 - #define GRID_HEIGHT 144 - #define CONTROL_OFFSET 8 - - void MarlinUI::ubl_plot(const uint8_t x_plot, const uint8_t y_plot) { - - tft.canvas(GRID_OFFSET_X, GRID_OFFSET_Y, GRID_WIDTH, GRID_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft.add_rectangle(0, 0, GRID_WIDTH, GRID_HEIGHT, COLOR_WHITE); - - for (uint16_t x = 0; x < (GRID_MAX_POINTS_X); x++) - for (uint16_t y = 0; y < (GRID_MAX_POINTS_Y); y++) - if (position_is_reachable({ bedlevel.get_mesh_x(x), bedlevel.get_mesh_y(y) })) - tft.add_bar(1 + (x * 2 + 1) * (GRID_WIDTH - 4) / (GRID_MAX_POINTS_X) / 2, GRID_HEIGHT - 3 - ((y * 2 + 1) * (GRID_HEIGHT - 4) / (GRID_MAX_POINTS_Y) / 2), 2, 2, COLOR_UBL); - - tft.add_rectangle((x_plot * 2 + 1) * (GRID_WIDTH - 4) / (GRID_MAX_POINTS_X) / 2 - 1, GRID_HEIGHT - 5 - ((y_plot * 2 + 1) * (GRID_HEIGHT - 4) / (GRID_MAX_POINTS_Y) / 2), 6, 6, COLOR_UBL); - - const xy_pos_t pos = { bedlevel.get_mesh_x(x_plot), bedlevel.get_mesh_y(y_plot) }, - lpos = pos.asLogical(); - - tft.canvas(216, GRID_OFFSET_Y + (GRID_HEIGHT - MENU_ITEM_HEIGHT) / 2 - MENU_ITEM_HEIGHT, 96, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(X_LBL); - tft.add_text(0, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(ftostr52(lpos.x)); - tft_string.trim(); - tft.add_text(96 - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - tft.canvas(216, GRID_OFFSET_Y + (GRID_HEIGHT - MENU_ITEM_HEIGHT) / 2, 96, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(Y_LBL); - tft.add_text(0, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(ftostr52(lpos.y)); - tft_string.trim(); - tft.add_text(96 - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - tft.canvas(216, GRID_OFFSET_Y + (GRID_HEIGHT - MENU_ITEM_HEIGHT) / 2 + MENU_ITEM_HEIGHT, 96, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(Z_LBL); - tft.add_text(0, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(isnan(bedlevel.z_values[x_plot][y_plot]) ? "-----" : ftostr43sign(bedlevel.z_values[x_plot][y_plot])); - tft_string.trim(); - tft.add_text(96 - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - constexpr uint8_t w = (TFT_WIDTH) / 10; - tft.canvas(GRID_OFFSET_X + (GRID_WIDTH - w) / 2, GRID_OFFSET_Y + GRID_HEIGHT + CONTROL_OFFSET - 1, w, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(ui8tostr3rj(x_plot)); - tft_string.trim(); - tft.add_text(tft_string.center(w), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - tft.canvas(GRID_OFFSET_X + GRID_WIDTH + CONTROL_OFFSET, GRID_OFFSET_Y + (GRID_HEIGHT - 27) / 2, w, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(ui8tostr3rj(y_plot)); - tft_string.trim(); - tft.add_text(tft_string.center(w), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - #if ENABLED(TOUCH_SCREEN) - touch.clear(); - draw_menu_navigation = false; - add_control(GRID_OFFSET_X + GRID_WIDTH + CONTROL_OFFSET, GRID_OFFSET_Y + CONTROL_OFFSET, UBL, (ENCODER_STEPS_PER_MENU_ITEM) * (GRID_MAX_POINTS_X), imgUp); - add_control(GRID_OFFSET_X + GRID_WIDTH + CONTROL_OFFSET, GRID_OFFSET_Y + GRID_HEIGHT - CONTROL_OFFSET - 32, UBL, -(ENCODER_STEPS_PER_MENU_ITEM) * (GRID_MAX_POINTS_X), imgDown); - add_control(GRID_OFFSET_X + CONTROL_OFFSET, GRID_OFFSET_Y + GRID_HEIGHT + CONTROL_OFFSET, UBL, -(ENCODER_STEPS_PER_MENU_ITEM), imgLeft); - add_control(GRID_OFFSET_X + GRID_WIDTH - CONTROL_OFFSET - 32, GRID_OFFSET_Y + GRID_HEIGHT + CONTROL_OFFSET, UBL, ENCODER_STEPS_PER_MENU_ITEM, imgRight); - add_control(224, GRID_OFFSET_Y + GRID_HEIGHT + CONTROL_OFFSET, CLICK, imgLeveling); - add_control(144, 206, BACK, imgBack); - #endif - } -#endif // AUTO_BED_LEVELING_UBL - -#if ENABLED(BABYSTEP_ZPROBE_OFFSET) - #include "../../feature/babystep.h" -#endif - -#if HAS_BED_PROBE - #include "../../module/probe.h" -#endif - -#define Z_SELECTION_Z 1 -#define Z_SELECTION_Z_PROBE -1 - -struct { - #if HAS_X_AXIS - xy_int_t xValuePos; - #endif - #if HAS_Y_AXIS - xy_int_t yValuePos; - #endif - #if HAS_Z_AXIS - xy_int_t zValuePos, zTypePos; - int z_selection = Z_SELECTION_Z; - #endif - #if HAS_EXTRUDERS - xy_int_t eValuePos, eNamePos; - uint8_t e_selection = 0; - #endif - xy_int_t stepValuePos; - float currentStepSize = 10.0; - bool blocked = false; - char message[32]; -} motionAxisState; - -#define BTN_WIDTH 48 -#define BTN_HEIGHT 39 -#define X_MARGIN 15 -#define Y_MARGIN 11 - -static void quick_feedback() { - #if HAS_CHIRP - ui.chirp(); // Buzz and wait. Is the delay needed for buttons to settle? - #if ALL(HAS_MARLINUI_MENU, HAS_BEEPER) - for (int8_t i = 5; i--;) { buzzer.tick(); delay(2); } - #elif HAS_MARLINUI_MENU - delay(10); - #endif - #endif -} - -#define CUR_STEP_VALUE_WIDTH 38 -static void drawCurStepValue() { - tft_string.set(ftostr52sp(motionAxisState.currentStepSize)); - tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, 20); - tft.set_background(COLOR_BACKGROUND); - tft.add_text(CUR_STEP_VALUE_WIDTH - tft_string.width(), 0, COLOR_AXIS_HOMED, tft_string); - tft.queue.sync(); - tft_string.set(F("mm")); - tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y + 20, CUR_STEP_VALUE_WIDTH, 20); - tft.set_background(COLOR_BACKGROUND); - tft.add_text(CUR_STEP_VALUE_WIDTH - tft_string.width(), 0, COLOR_AXIS_HOMED, tft_string); -} - -#if HAS_Z_AXIS - static void drawCurZSelection() { - tft_string.set('Z'); - tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), 20); - tft.set_background(COLOR_BACKGROUND); - tft.add_text(0, 0, Z_BTN_COLOR, tft_string); - tft.queue.sync(); - tft_string.set(F("Offset")); - tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + 34, tft_string.width(), 20); - tft.set_background(COLOR_BACKGROUND); - #if HAS_BED_PROBE - if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) - tft.add_text(0, 0, Z_BTN_COLOR, tft_string); - #endif - } -#endif - -#if HAS_EXTRUDERS - static void drawCurESelection() { - tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set('E'); - tft.add_text(0, 0, E_BTN_COLOR, tft_string); - tft.add_text(tft_string.width(), 0, E_BTN_COLOR, ui8tostr3rj(motionAxisState.e_selection)); - } -#endif - -static void drawMessage(PGM_P const msg) { - tft.canvas(X_MARGIN, - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - TFT_HEIGHT - 2 * BTN_HEIGHT, TFT_WIDTH - X_MARGIN - #else - TFT_HEIGHT - Y_MARGIN - 29, (TFT_WIDTH / 2) - (BTN_WIDTH / 2) - X_MARGIN - #endif - , FONT_LINE_HEIGHT - ); - tft.set_background(COLOR_BACKGROUND); - tft.add_text(0, 0, COLOR_STATUS_MESSAGE, msg); -} - -static void drawMessage(FSTR_P const fmsg) { drawMessage(FTOP(fmsg)); } - -static void drawAxisValue(const AxisEnum axis) { - const float value = ( - TERN_(HAS_BED_PROBE, axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE ? probe.offset.z :) - ui.manual_move.axis_value(axis) - ); - xy_int_t pos; - uint16_t color; - switch (axis) { - #if HAS_X_AXIS - case X_AXIS: pos = motionAxisState.xValuePos; color = X_BTN_COLOR; break; - #endif - #if HAS_Y_AXIS - case Y_AXIS: pos = motionAxisState.yValuePos; color = Y_BTN_COLOR; break; - #endif - #if HAS_Z_AXIS - case Z_AXIS: pos = motionAxisState.zValuePos; color = Z_BTN_COLOR; break; - #endif - #if HAS_EXTRUDERS - case E_AXIS: pos = motionAxisState.eValuePos; color = E_BTN_COLOR; break; - #endif - default: return; - } - tft.canvas(pos.x, pos.y, BTN_WIDTH + X_MARGIN, FONT_LINE_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(ftostr52sp(value)); - tft.add_text(0, 0, color, tft_string); -} - -static void moveAxis(const AxisEnum axis, const int8_t direction) { - quick_feedback(); - - #if HAS_EXTRUDERS - if (axis == E_AXIS && thermalManager.tooColdToExtrude(motionAxisState.e_selection)) { - drawMessage(F("Too cold")); - return; - } - #endif - - const float diff = motionAxisState.currentStepSize * direction; - - #if HAS_BED_PROBE - - if (axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { - #if ENABLED(BABYSTEP_ZPROBE_OFFSET) - const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z; - const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0; - const float bsDiff = planner.mm_per_step[Z_AXIS] * babystep_increment, - new_probe_offset = probe.offset.z + bsDiff, - new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET - , do_probe ? new_probe_offset : hotend_offset[active_extruder].z - bsDiff - , new_probe_offset - ); - if (WITHIN(new_offs, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { - babystep.add_steps(Z_AXIS, babystep_increment); - if (do_probe) - probe.offset.z = new_offs; - else - TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); - drawMessage(NUL_STR); // Clear the error - drawAxisValue(axis); - } - else - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - - #else - // Only change probe.offset.z - probe.offset.z += diff; - if (direction < 0 && current_position.z < Z_PROBE_OFFSET_RANGE_MIN) { - current_position.z = Z_PROBE_OFFSET_RANGE_MIN; - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - else if (direction > 0 && current_position.z > Z_PROBE_OFFSET_RANGE_MAX) { - current_position.z = Z_PROBE_OFFSET_RANGE_MAX; - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - else - drawMessage(NUL_STR); // Clear the error - - drawAxisValue(axis); - #endif - } - - #endif // HAS_BED_PROBE - - if (!ui.manual_move.processing) { - // Get motion limit from software endstops, if any - float min, max; - soft_endstop.get_manual_axis_limits(axis, min, max); - - // Delta limits XY based on the current offset from center - // This assumes the center is 0,0 - #if ENABLED(DELTA) - if (axis != Z_AXIS && TERN1(HAS_EXTRUDERS, axis != E_AXIS)) { - max = SQRT(sq(float(PRINTABLE_RADIUS)) - sq(current_position[Y_AXIS - axis])); // (Y_AXIS - axis) == the other axis - min = -max; - } - #endif - - // Get the new position - const bool limited = ui.manual_move.apply_diff(axis, diff, min, max); - #if IS_KINEMATIC - UNUSED(limited); - #else - PGM_P const msg = limited ? GET_TEXT(MSG_LCD_SOFT_ENDSTOPS) : NUL_STR; - drawMessage(msg); - #endif - - ui.manual_move.soon(axis OPTARG(MULTI_E_MANUAL, motionAxisState.e_selection)); - } - - drawAxisValue(axis); -} - -#if HAS_EXTRUDERS - static void e_plus() { moveAxis(E_AXIS, 1); } - static void e_minus() { moveAxis(E_AXIS, -1); } -#endif -#if HAS_X_AXIS - static void x_minus() { moveAxis(X_AXIS, -1); } - static void x_plus() { moveAxis(X_AXIS, 1); } -#endif -#if HAS_Y_AXIS - static void y_plus() { moveAxis(Y_AXIS, 1); } - static void y_minus() { moveAxis(Y_AXIS, -1); } -#endif -#if HAS_Z_AXIS - static void z_plus() { moveAxis(Z_AXIS, 1); } - static void z_minus() { moveAxis(Z_AXIS, -1); } -#endif - -#if ENABLED(TOUCH_SCREEN) - #if HAS_EXTRUDERS - static void e_select() { - if (++motionAxisState.e_selection >= EXTRUDERS) - motionAxisState.e_selection = 0; - quick_feedback(); - drawCurESelection(); - drawAxisValue(E_AXIS); - } - #endif - - static void do_home() { - quick_feedback(); - drawMessage(GET_TEXT_F(MSG_LEVEL_BED_HOMING)); - queue.inject_P(G28_STR); - // Disable touch until home is done - touch.disable(); - TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); - TERN_(HAS_X_AXIS, drawAxisValue(X_AXIS)); - TERN_(HAS_Y_AXIS, drawAxisValue(Y_AXIS)); - TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); - } - - static void step_size() { - motionAxisState.currentStepSize = motionAxisState.currentStepSize / 10.0; - if (motionAxisState.currentStepSize < 0.0015) motionAxisState.currentStepSize = 10.0; - quick_feedback(); - drawCurStepValue(); - } - - #if HAS_BED_PROBE - static void z_select() { - motionAxisState.z_selection *= -1; - quick_feedback(); - drawCurZSelection(); - drawAxisValue(Z_AXIS); - } - #endif - -#endif // TOUCH_SCREEN - -static void disable_steppers() { - quick_feedback(); - queue.inject(F("M84")); -} - -static void drawBtn(const int x, const int y, const char *label, intptr_t data, const MarlinImage img, uint16_t bgColor, const bool enabled=true) { - const uint16_t width = images[imgBtn39Rounded].width, - height = images[imgBtn39Rounded].height; - - if (!enabled) bgColor = COLOR_CONTROL_DISABLED; - - tft.canvas(x, y, width, height); - tft.set_background(COLOR_BACKGROUND); - tft.add_image(0, 0, imgBtn39Rounded, bgColor, COLOR_BACKGROUND, COLOR_DARKGREY); - - // TODO: Make an add_text() taking a font arg - if (label) { - tft_string.set(label); - tft_string.trim(); - tft.add_text(tft_string.center(width), height / 2 - tft_string.font_height() / 2, bgColor, tft_string); - } - else - tft.add_image(0, 0, img, bgColor, COLOR_BACKGROUND, COLOR_DARKGREY); - - TERN_(TOUCH_SCREEN, if (enabled) touch.add_control(BUTTON, x, y, width, height, data)); -} - -void MarlinUI::move_axis_screen() { - // Reset - defer_status_screen(true); - motionAxisState.blocked = false; - TERN_(TOUCH_SCREEN, touch.enable()); - - ui.clear_lcd(); - - TERN_(TOUCH_SCREEN, touch.clear()); - - const bool busy = printingIsActive(); - - // Babysteps during printing? Select babystep for Z probe offset - #if ENABLED(BABYSTEP_ZPROBE_OFFSET) - if (busy) motionAxisState.z_selection = Z_SELECTION_Z_PROBE; - #endif - - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - - // ROW 1 -> E+ Y+ Z+ - int x = X_MARGIN, y = Y_MARGIN, spacing = 0; - - TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy)); - - spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; - x += BTN_WIDTH + spacing; - uint16_t yplus_x = x; - - TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy)); - - x += BTN_WIDTH + spacing; - uint16_t zplus_x = x; - - #if HAS_Z_AXIS - drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have baby step - #endif - - // ROW 2 -> "Ex" CurY "Z" - x = X_MARGIN; - y += BTN_HEIGHT + 2; - - #if HAS_EXTRUDERS - motionAxisState.eNamePos.set(x, y); - drawCurESelection(); - TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); - #endif - - #if HAS_Y_AXIS - motionAxisState.yValuePos.set(yplus_x, y); - drawAxisValue(Y_AXIS); - #endif - - #if HAS_Z_AXIS - motionAxisState.zTypePos.set(zplus_x, y); - drawCurZSelection(); - #endif - - // ROW 3 -> X- HOME X+ - y += (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3 - 2; - x = X_MARGIN; - - #if HAS_X_AXIS - drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy); - TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); - drawBtn(zplus_x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy); - #endif - - #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) - if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); - #endif - - // ROW 4 -> Cur X - y += BTN_HEIGHT + 2; - - #if HAS_X_AXIS - motionAxisState.xValuePos.set(x, y); - drawAxisValue(X_AXIS); - #endif - - // ROW 5 -> E- CurX Y- Z- - y += (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3 - 2; - x = X_MARGIN; - - #if HAS_EXTRUDERS - drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); - motionAxisState.eValuePos.set(x, y + BTN_HEIGHT + 2); - TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); - #endif - - x += BTN_WIDTH + spacing; - - TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); - - x += BTN_WIDTH + spacing; - - #if HAS_Z_AXIS - drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step - motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); - drawAxisValue(Z_AXIS); - #endif - - // ROW 6 -> step_size disable steppers back - y = TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT; - x = zplus_x - CUR_STEP_VALUE_WIDTH - 10; - motionAxisState.stepValuePos.set(X_MARGIN + BTN_WIDTH - CUR_STEP_VALUE_WIDTH, y); - - if (!busy) { - drawCurStepValue(); - TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); - } - - // Aligned with x+ - drawBtn(yplus_x, y, "off", (intptr_t)disable_steppers, imgCancel, COLOR_WHITE, !busy); - - #else // !TFT_COLOR_UI_PORTRAIT - - // ROW 1 -> E+ Y+ CurY Z+ - int x = X_MARGIN, y = Y_MARGIN, spacing = 0; - - TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy)); - - spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; - x += BTN_WIDTH + spacing; - uint16_t yplus_x = x; - - TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy)); - - x += BTN_WIDTH; - - #if HAS_Y_AXIS - motionAxisState.yValuePos.set(x + 2, y); - drawAxisValue(Y_AXIS); - #endif - - x += spacing; - - #if HAS_Z_AXIS - drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step - #endif - - // ROW 2 -> "Ex" X- HOME X+ "Z" - y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; - x = X_MARGIN; - spacing = (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; - - #if HAS_EXTRUDERS - motionAxisState.eNamePos.set(x, y); - drawCurESelection(); - TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); - #endif - - x += BTN_WIDTH + spacing; - - TERN_(HAS_X_AXIS, drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy)); - - x += BTN_WIDTH + spacing; //imgHome is 64x64 - - #if ALL(HAS_X_AXIS, TOUCH_SCREEN) - add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy); - #endif - - x += BTN_WIDTH + spacing; - const uint16_t xplus_x = x; - - TERN_(HAS_X_AXIS, drawBtn(x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy)); - - x += BTN_WIDTH + spacing; - - #if HAS_Z_AXIS - motionAxisState.zTypePos.set(x, y); - drawCurZSelection(); - #endif - - #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) - if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, (intptr_t)z_select); - #endif - - // ROW 3 -> E- CurX Y- Z- - y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; - x = X_MARGIN; - spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; - - #if HAS_EXTRUDERS - drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); - motionAxisState.eValuePos.set(x, y + BTN_HEIGHT + 2); - TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); - #endif - - // Cur X - #if HAS_X_AXIS - motionAxisState.xValuePos.set(BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4, y - 10); - drawAxisValue(X_AXIS); - #endif - - x += BTN_WIDTH + spacing; - - // Cur Y - TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); - - x += BTN_WIDTH + spacing; - - // Cur Z - #if HAS_Z_AXIS - drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step - motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); - drawAxisValue(Z_AXIS); - #endif - - // ROW 4 -> step_size disable steppers back - y = TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT; - x = xplus_x - CUR_STEP_VALUE_WIDTH - 10; - motionAxisState.stepValuePos.set(yplus_x + BTN_WIDTH - CUR_STEP_VALUE_WIDTH, y); - if (!busy) { - drawCurStepValue(); - TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); - } - - // Aligned with x+ - drawBtn(xplus_x, y, "off", (intptr_t)disable_steppers, imgCancel, COLOR_WHITE, !busy); - - #endif // !TFT_COLOR_UI_PORTRAIT - - TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); -} - -#endif // HAS_UI_320x240 diff --git a/Marlin/src/lcd/tft/ui_320x240.h b/Marlin/src/lcd/tft/ui_320x240.h index 1d3aa86f81..5725a8ed2d 100644 --- a/Marlin/src/lcd/tft/ui_320x240.h +++ b/Marlin/src/lcd/tft/ui_320x240.h @@ -19,32 +19,285 @@ * along with this program. If not, see . * */ -#pragma once -#define MARLIN_LOGO_FULL_SIZE MarlinLogo320x240x16 +#include "../../inc/MarlinConfigPre.h" -#include "ui_common.h" +// -------------------------------- Core Parameters -------------------------------- -#define TFT_STATUS_TOP_Y 0 -#define TFT_TOP_LINE_Y 2 +#define MENU_TEXT_X 10 +#define MENU_TEXT_Y tft_string.vcenter(MENU_ITEM_HEIGHT) -#define MENU_TEXT_X_OFFSET 10 -#define MENU_TEXT_Y_OFFSET tft_string.vcenter(MENU_ITEM_HEIGHT) +#define MENU_ITEM_ICON_X 0 +#define MENU_ITEM_ICON_Y 0 +#define MENU_ITEM_ICON_SPACE 32 -#define MENU_ITEM_ICON_X 0 -#define MENU_ITEM_ICON_Y 0 -#define MENU_ITEM_ICON_SPACE 32 +#define MENU_ITEM_HEIGHT 32 +#define MENU_LINE_HEIGHT (MENU_ITEM_HEIGHT + 2) +#define MENU_TOP_LINE_Y 2 -#define MENU_ITEM_HEIGHT 32 -#define MENU_LINE_HEIGHT (MENU_ITEM_HEIGHT + 2) -#define FONT_LINE_HEIGHT 24 - -#if (TFT_FONT == NOTOSANS) || (TFT_FONT == HELVETICA) - #define FONT_SIZE 14 +#if TFT_FONT == NOTOSANS || TFT_FONT == HELVETICA + #define FONT_SIZE 14 #elif TFT_FONT == UNIFONT - #define FONT_SIZE 10 + #define FONT_SIZE 10 #endif -#define FONT_LINE_HEIGHT 24 +#define FONT_LINE_HEIGHT 24 -#include "tft_font.h" +// --------------------------------------------------------------------------------- + +#define VCENTER tft_string.vcenter(FONT_LINE_HEIGHT) + +// MarlinUI::show_bootscreen() +#ifndef BOOTSCREEN_LOGO + #if ENABLED(BOOT_MARLIN_LOGO_SMALL) + #define BOOTSCREEN_LOGO MarlinLogo195x59x16 + #define BOOTSCREEN_LOGO_W 195 + #define BOOTSCREEN_LOGO_H 59 + #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 48) + #else + #define BOOTSCREEN_LOGO MarlinLogo320x240x16 + #define BOOTSCREEN_LOGO_W TFT_WIDTH + #define BOOTSCREEN_LOGO_H TFT_HEIGHT + #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 54) + #endif +#endif + +#if !defined(BOOTSCREEN_LOGO_X) && !defined(BOOTSCREEN_LOGO_Y) + #define BOOTSCREEN_LOGO_X (TFT_WIDTH - BOOTSCREEN_LOGO_W) / 2 + #define BOOTSCREEN_LOGO_Y (TFT_HEIGHT - BOOTSCREEN_LOGO_H) / 2 +#endif + +#if !defined(NAVIGATION_PAGE_UP_X) && !defined(NAVIGATION_PAGE_UP_Y) && !defined(NAVIGATION_PAGE_DOWN_X) && !defined(NAVIGATION_PAGE_DOWN_Y) && !defined(NAVIGATION_BACK_X) && !defined(NAVIGATION_BACK_Y) + #define NAVIGATION_PAGE_UP_X 48 + #define NAVIGATION_PAGE_UP_Y TFT_HEIGHT - 34 + #define NAVIGATION_PAGE_DOWN_X 240 + #define NAVIGATION_PAGE_DOWN_Y TFT_HEIGHT - 34 + #define NAVIGATION_BACK_X 144 + #define NAVIGATION_BACK_Y TFT_HEIGHT - 34 +#endif + +#if !defined(BUTTON_DECREASE_X) && !defined(BUTTON_DECREASE_Y) && !defined(BUTTON_INCREASE_X) && !defined(BUTTON_INCREASE_Y) && !defined(BUTTON_CLICK_X) && !defined(BUTTON_CLICK_Y) + #define BUTTON_DECREASE_X 32 + #define BUTTON_DECREASE_Y TFT_HEIGHT - 64 + #define BUTTON_INCREASE_X 224 + #define BUTTON_INCREASE_Y TFT_HEIGHT - 64 + #define BUTTON_CLICK_X 128 + #define BUTTON_CLICK_Y TFT_HEIGHT - 64 +#endif + +#if !defined(BUTTON_CANCEL_X) && !defined(BUTTON_CANCEL_Y) && !defined(BUTTON_CONFIRM_X) && !defined(BUTTON_CONFIRM_Y) + #define BUTTON_CANCEL_X 48 + #define BUTTON_CANCEL_Y TFT_HEIGHT - 64 + #define BUTTON_CONFIRM_X 208 + #define BUTTON_CONFIRM_Y TFT_HEIGHT - 64 +#endif + +// MarlinUI::draw_kill_screen() +#if !defined(KILL_SCREEN_STATUS_Y) && !defined(KILL_SCREEN_HALTED_Y) && !defined(KILL_SCREEN_RESET_Y) + #define KILL_SCREEN_STATUS_Y 60 + #define KILL_SCREEN_HALTED_Y 120 + #define KILL_SCREEN_RESET_Y 160 +#endif + +// draw_heater_status() and draw_fan_status() +#if !defined(TEMP_FAN_CONTROL_W) && !defined(TEMP_FAN_CONTROL_H) + #define TEMP_FAN_CONTROL_W 64 + #define TEMP_FAN_CONTROL_H 100 +#endif +#if !defined(TEMP_ICON_X) && !defined(TEMP_ICON_Y) + #define TEMP_ICON_X 0 + #define TEMP_ICON_Y 18 +#endif +#if !defined(FAN_ICON_X) && !defined(FAN_ICON_Y) + #define FAN_ICON_X 0 + #define FAN_ICON_Y 10 +#endif + +#if !defined(TEMP_CURRENT_TEXT_X) && !defined(TEMP_CURRENT_TEXT_Y) && !defined(TEMP_TARGET_TEXT_X) && !defined(TEMP_TARGET_TEXT_Y) + #define TEMP_CURRENT_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 2 + #define TEMP_CURRENT_TEXT_Y 69 + VCENTER + #define TEMP_TARGET_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 2 + #define TEMP_TARGET_TEXT_Y 5 + VCENTER +#endif + +#if !defined(FAN_TEXT_X) && !defined(FAN_TEXT_Y) + #define FAN_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 6 + #define FAN_TEXT_Y 69 + VCENTER +#endif + +// MarlinUI::draw_status_screen() +#if !defined(MAX_ITEMS) && !defined(ITEM_X) && !defined(ITEM_Y) + #define MAX_ITEMS 5 + #define ITEM_X(N) (TFT_WIDTH / _MIN(ITEMS_COUNT, MAX_ITEMS) - TEMP_FAN_CONTROL_W) / 2 + (TFT_WIDTH * N / _MIN(ITEMS_COUNT, MAX_ITEMS)) + #define ITEM_Y 2 +#endif + +#if !defined(COORDINATES_W) && !defined(COORDINATES_H) && !defined(COORDINATES_X) && !defined(COORDINATES_Y) + #define COORDINATES_W TFT_WIDTH - 8 + #define COORDINATES_H FONT_LINE_HEIGHT + #define COORDINATES_X 4 + #define COORDINATES_Y 103 +#endif + +#if ENABLED(LCD_SHOW_E_TOTAL) + #if !defined(E_MARK_X) && !defined(E_MARK_Y) && !defined(E_VALUE_X) && !defined(E_VALUE_Y) + #define E_MARK_X 10 + #define E_MARK_Y VCENTER + #define E_VALUE_X 127 - tft_string.width() + #define E_VALUE_Y VCENTER + #endif +#else + #if !defined(X_MARK_X) && !defined(X_MARK_Y) && !defined(X_VALUE_X) && !defined(X_VALUE_Y) + #define X_MARK_X 10 + #define X_MARK_Y VCENTER + #define X_VALUE_X 68 - tft_string.width() + #define X_VALUE_Y VCENTER + #endif + + #if !defined(Y_MARK_X) && !defined(Y_MARK_Y) && !defined(Y_VALUE_X) && !defined(Y_VALUE_Y) + #define Y_MARK_X 114 + #define Y_MARK_Y VCENTER + #define Y_VALUE_X 172 - tft_string.width() + #define Y_VALUE_Y VCENTER + #endif +#endif + +#if !defined(Z_MARK_X) && !defined(Z_MARK_Y) && !defined(Z_VALUE_X) && !defined(Z_VALUE_Y) + #define Z_MARK_X 219 + #define Z_MARK_Y VCENTER + #define Z_VALUE_X 301 - tft_string.width() + #define Z_VALUE_Y VCENTER + #define Z_VALUE_OFFSET 25 +#endif + +#if !defined(FEEDRATE_W) && !defined(FEEDRATE_H) && !defined(FEEDRATE_X) && !defined(FEEDRATE_Y) + #define FEEDRATE_W 86 + #define FEEDRATE_H 32 + #define FEEDRATE_X 70 + #define FEEDRATE_Y 134 +#endif +#if !defined(FEEDRATE_ICON_X) && !defined(FEEDRATE_ICON_Y) && !defined(FEEDRATE_ICON_Y) && !defined(FEEDRATE_TEXT_Y) + #define FEEDRATE_ICON_X 0 + #define FEEDRATE_ICON_Y 0 + #define FEEDRATE_TEXT_X 36 + #define FEEDRATE_TEXT_Y tft_string.vcenter(30) +#endif + +#if !defined(FLOWRATE_W) && !defined(FLOWRATE_H) && !defined(FLOWRATE_X) && !defined(FLOWRATE_Y) + #define FLOWRATE_W 86 + #define FLOWRATE_H 32 + #define FLOWRATE_X 170 + #define FLOWRATE_Y 134 +#endif +#if !defined(FLOWRATE_ICON_X) && !defined(FLOWRATE_ICON_Y) && !defined(FLOWRATE_TEXT_X) && !defined(FLOWRATE_TEXT_Y) + #define FLOWRATE_ICON_X 0 + #define FLOWRATE_ICON_Y 0 + #define FLOWRATE_TEXT_X 36 + #define FLOWRATE_TEXT_Y tft_string.vcenter(30) +#endif + +#if !defined(MENU_ICON_X) && !defined(MENU_ICON_Y) + #define MENU_ICON_X 256 + #define MENU_ICON_Y 130 +#endif +#if !defined(SDCARD_ICON_X) && !defined(SDCARD_ICON_Y) + #define SDCARD_ICON_X 0 + #define SDCARD_ICON_Y 130 +#endif + +#if !defined(ELAPSED_TIME_W) && !defined(ELAPSED_TIME_H) && !defined(ELAPSED_TIME_X) && !defined(ELAPSED_TIME_Y) + #if ALL(SHOW_ELAPSED_TIME, SHOW_REMAINING_TIME) + #define ELAPSED_TIME_W 96 + #define ELAPSED_TIME_X (TFT_WIDTH / 2) - ELAPSED_TIME_W + #elif ENABLED(SHOW_ELAPSED_TIME) + #define ELAPSED_TIME_W 192 + #define ELAPSED_TIME_X (TFT_WIDTH - ELAPSED_TIME_W) / 2 + #endif + + #define ELAPSED_TIME_H 32 + #define ELAPSED_TIME_Y 168 +#endif + +#if !defined(REMAINING_TIME_W) && !defined(REMAINING_TIME_H) && !defined(REMAINING_TIME_X) && !defined(REMAINING_TIME_Y) + #if ALL(SHOW_ELAPSED_TIME, SHOW_REMAINING_TIME) + #define REMAINING_TIME_W 96 + #define REMAINING_TIME_X (TFT_WIDTH / 2) + #elif ENABLED(SHOW_REMAINING_TIME) + #define REMAINING_TIME_W 192 + #define REMAINING_TIME_X (TFT_WIDTH - REMAINING_TIME_W) / 2 + #endif + + #define REMAINING_TIME_H 32 + #define REMAINING_TIME_Y 168 +#endif + +#if !defined(ELAPSED_TIME_IMAGE_X) && !defined(ELAPSED_TIME_IMAGE_Y) && !defined(ELAPSED_TIME_TEXT_X) && !defined(ELAPSED_TIME_TEXT_Y) + #define ELAPSED_TIME_IMAGE_X tft_string.center(ELAPSED_TIME_W) - 18 + #define ELAPSED_TIME_IMAGE_Y 0 + #define ELAPSED_TIME_TEXT_X tft_string.center(ELAPSED_TIME_W) + 18 + #define ELAPSED_TIME_TEXT_Y tft_string.vcenter(29) +#endif + +#if !defined(REMAINING_TIME_IMAGE_X) && !defined(REMAINING_TIME_IMAGE_Y) && !defined(REMAINING_TIME_TEXT_X) && !defined(REMAINING_TIME_TEXT_Y) + #define REMAINING_TIME_IMAGE_X tft_string.center(ELAPSED_TIME_W) - 18 + #define REMAINING_TIME_IMAGE_Y 0 + #define REMAINING_TIME_TEXT_X tft_string.center(ELAPSED_TIME_W) + 18 + #define REMAINING_TIME_TEXT_Y tft_string.vcenter(29) +#endif + +#if !defined(PROGRESS_BAR_W) && !defined(PROGRESS_BAR_H) && !defined(PROGRESS_BAR_X) && !defined(PROGRESS_BAR_Y) + #define PROGRESS_BAR_W TFT_WIDTH - 8 + #define PROGRESS_BAR_H 9 + #define PROGRESS_BAR_X 4 + #define PROGRESS_BAR_Y 202 +#endif + +#if !defined(STATUS_MESSAGE_W) && !defined(STATUS_MESSAGE_H) && !defined(STATUS_MESSAGE_X) && !defined(STATUS_MESSAGE_Y) + #define STATUS_MESSAGE_W TFT_WIDTH + #define STATUS_MESSAGE_H FONT_LINE_HEIGHT + #define STATUS_MESSAGE_X 0 + #define STATUS_MESSAGE_Y 212 +#endif + +#if !defined(STATUS_MESSAGE_TEXT_X) && !defined(STATUS_MESSAGE_TEXT_Y) + #define STATUS_MESSAGE_TEXT_X tft_string.center(STATUS_MESSAGE_W) + #define STATUS_MESSAGE_TEXT_Y VCENTER +#endif + +// MenuEditItemBase::draw_edit_screen() +#if !defined(SLIDER_W) && !defined(SLIDER_Y) + #define SLIDER_W 224 + #define SLIDER_Y 140 +#endif + +#if ENABLED(AUTO_BED_LEVELING_UBL) + #if !defined(UBL_X_LABEL_X) && !defined(UBL_X_TEXT_X) && !defined(UBL_Y_LABEL_X) && !defined(UBL_Y_TEXT_X) + #define UBL_X_LABEL_X (TFT_WIDTH / 2 - 120) + #define UBL_X_TEXT_X (TFT_WIDTH / 2 - 16) - tft_string.width() + #define UBL_Y_LABEL_X (TFT_WIDTH / 2 + 16) + #define UBL_Y_TEXT_X (TFT_WIDTH / 2 + 120) - tft_string.width() + #endif + + // MarlinUI::ubl_plot() + #if !defined(UBL_GRID_W) && !defined(UBL_GRID_H) && !defined(UBL_GRID_X) && !defined(UBL_GRID_Y) && !defined(UBL_CONTROL_OFFSET) + #define UBL_GRID_W 144 + #define UBL_GRID_H 144 + #define UBL_GRID_X 8 + #define UBL_GRID_Y 8 + #define UBL_CONTROL_OFFSET 8 + #endif + + #if !defined(UBL_COORDINATES_W) && !defined(UBL_COORDINATES_X) && !defined(UBL_X_COORDINATE_Y) && !defined(UBL_Y_COORDINATE_Y) && !defined(UBL_Z_COORDINATE_Y) + #define UBL_COORDINATES_W 96 + #define UBL_COORDINATES_X 216 + + #define UBL_X_COORDINATE_Y UBL_GRID_Y + (UBL_GRID_H - MENU_ITEM_HEIGHT) / 2 - MENU_ITEM_HEIGHT + #define UBL_Y_COORDINATE_Y UBL_GRID_Y + (UBL_GRID_H - MENU_ITEM_HEIGHT) / 2 + #define UBL_Z_COORDINATE_Y UBL_GRID_Y + (UBL_GRID_H - MENU_ITEM_HEIGHT) / 2 + MENU_ITEM_HEIGHT + #endif + + #if !defined(UBL_ACTION_X) && !defined(UBL_ACTION_Y) + #define UBL_ACTION_X 224 + #define UBL_ACTION_Y UBL_GRID_Y + UBL_GRID_H + UBL_CONTROL_OFFSET + #endif +#endif diff --git a/Marlin/src/lcd/tft/ui_320x480.h b/Marlin/src/lcd/tft/ui_320x480.h new file mode 100644 index 0000000000..87f6b4ebe4 --- /dev/null +++ b/Marlin/src/lcd/tft/ui_320x480.h @@ -0,0 +1,294 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../inc/MarlinConfigPre.h" + +// -------------------------------- Core Parameters -------------------------------- + +#define MENU_TEXT_X 16 +#define MENU_TEXT_Y tft_string.vcenter(MENU_ITEM_HEIGHT) + +#define MENU_ITEM_ICON_X 5 +#define MENU_ITEM_ICON_Y 5 +#define MENU_ITEM_ICON_SPACE 42 + +#define MENU_ITEM_HEIGHT 43 +#define MENU_LINE_HEIGHT (MENU_ITEM_HEIGHT + 2) +#define MENU_TOP_LINE_Y 4 + +#if TFT_FONT == NOTOSANS || TFT_FONT == HELVETICA + #define FONT_SIZE 19 +#elif TFT_FONT == UNIFONT + #define FONT_SIZE 20 +#endif + +#define FONT_LINE_HEIGHT 34 + +// --------------------------------------------------------------------------------- + +#define VCENTER tft_string.vcenter(FONT_LINE_HEIGHT) + +// MarlinUI::show_bootscreen() +#ifndef BOOTSCREEN_LOGO + #if ENABLED(BOOT_MARLIN_LOGO_SMALL) + #define BOOTSCREEN_LOGO MarlinLogo195x59x16 + #define BOOTSCREEN_LOGO_W 195 + #define BOOTSCREEN_LOGO_H 59 + #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 70) + #else + #define BOOTSCREEN_LOGO MarlinLogo480x320x16 + #define BOOTSCREEN_LOGO_W TFT_WIDTH + #define BOOTSCREEN_LOGO_H TFT_HEIGHT + #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 90) + #endif +#endif + +#if !defined(BOOTSCREEN_LOGO_X) && !defined(BOOTSCREEN_LOGO_Y) + #define BOOTSCREEN_LOGO_X (TFT_WIDTH - BOOTSCREEN_LOGO_W) / 2 + #define BOOTSCREEN_LOGO_Y (TFT_HEIGHT - BOOTSCREEN_LOGO_H) / 2 +#endif + +#if !defined(NAVIGATION_PAGE_UP_X) && !defined(NAVIGATION_PAGE_UP_Y) && !defined(NAVIGATION_PAGE_DOWN_X) && !defined(NAVIGATION_PAGE_DOWN_Y) && !defined(NAVIGATION_BACK_X) && !defined(NAVIGATION_BACK_Y) + #define NAVIGATION_PAGE_UP_X 48 + #define NAVIGATION_PAGE_UP_Y TFT_HEIGHT - 38 + #define NAVIGATION_PAGE_DOWN_X 240 + #define NAVIGATION_PAGE_DOWN_Y TFT_HEIGHT - 38 + #define NAVIGATION_BACK_X 144 + #define NAVIGATION_BACK_Y TFT_HEIGHT - 38 +#endif + +#if !defined(BUTTON_DECREASE_X) && !defined(BUTTON_DECREASE_Y) && !defined(BUTTON_INCREASE_X) && !defined(BUTTON_INCREASE_Y) && !defined(BUTTON_CLICK_X) && !defined(BUTTON_CLICK_Y) + #define BUTTON_DECREASE_X 32 + #define BUTTON_DECREASE_Y TFT_HEIGHT - 64 + #define BUTTON_INCREASE_X 224 + #define BUTTON_INCREASE_Y TFT_HEIGHT - 64 + #define BUTTON_CLICK_X 128 + #define BUTTON_CLICK_Y TFT_HEIGHT - 64 +#endif + +#if !defined(BUTTON_CANCEL_X) && !defined(BUTTON_CANCEL_Y) && !defined(BUTTON_CONFIRM_X) && !defined(BUTTON_CONFIRM_Y) + #define BUTTON_CANCEL_X 48 + #define BUTTON_CANCEL_Y TFT_HEIGHT - 64 + #define BUTTON_CONFIRM_X 208 + #define BUTTON_CONFIRM_Y TFT_HEIGHT - 64 +#endif + +// MarlinUI::draw_kill_screen() +#if !defined(KILL_SCREEN_STATUS_Y) && !defined(KILL_SCREEN_HALTED_Y) && !defined(KILL_SCREEN_RESET_Y) + #define KILL_SCREEN_STATUS_Y 139 + #define KILL_SCREEN_HALTED_Y 229 + #define KILL_SCREEN_RESET_Y 274 +#endif + +// draw_heater_status() and draw_fan_status() +#if !defined(TEMP_FAN_CONTROL_W) && !defined(TEMP_FAN_CONTROL_H) + #define TEMP_FAN_CONTROL_W 80 + #define TEMP_FAN_CONTROL_H 120 +#endif +#if !defined(TEMP_ICON_X) && !defined(TEMP_ICON_Y) + #define TEMP_ICON_X 0 + #define TEMP_ICON_Y 28 +#endif +#if !defined(FAN_ICON_X) && !defined(FAN_ICON_Y) + #define FAN_ICON_X 0 + #define FAN_ICON_Y 20 +#endif + +#if !defined(TEMP_CURRENT_TEXT_X) && !defined(TEMP_CURRENT_TEXT_Y) && !defined(TEMP_TARGET_TEXT_X) && !defined(TEMP_TARGET_TEXT_Y) + #define TEMP_CURRENT_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 2 + #define TEMP_CURRENT_TEXT_Y 80 + VCENTER + #define TEMP_TARGET_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 2 + #define TEMP_TARGET_TEXT_Y 6 + VCENTER +#endif + +#if !defined(FAN_TEXT_X) && !defined(FAN_TEXT_Y) + #define FAN_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 6 + #define FAN_TEXT_Y 80 + VCENTER +#endif + +// MarlinUI::draw_status_screen() +#if !defined(MAX_ITEMS) && !defined(ITEM_X) && !defined(ITEM_Y) + #define MAX_ITEMS 4 + #define ITEM_X(N) (TFT_WIDTH / _MIN(ITEMS_COUNT, MAX_ITEMS) - TEMP_FAN_CONTROL_W) / 2 + (TFT_WIDTH * N / _MIN(ITEMS_COUNT, MAX_ITEMS)) + #define ITEM_Y 4 +#endif + +#if !defined(COORDINATES_W) && !defined(COORDINATES_H) && !defined(COORDINATES_X) && !defined(COORDINATES_Y) + #define COORDINATES_W TFT_WIDTH - 8 + #define COORDINATES_H FONT_LINE_HEIGHT * 2 + #define COORDINATES_X 4 + #define COORDINATES_Y 132 +#endif + +#if !defined(E_MARK_X) && !defined(E_MARK_Y) && !defined(E_VALUE_X) && !defined(E_VALUE_Y) + #define E_MARK_X 10 + #define E_MARK_Y VCENTER + FONT_LINE_HEIGHT + #define E_VALUE_X 103 - tft_string.width() + #define E_VALUE_Y VCENTER + FONT_LINE_HEIGHT +#endif + +#if !defined(X_MARK_X) && !defined(X_MARK_Y) && !defined(X_VALUE_X) && !defined(X_VALUE_Y) + #define X_MARK_X 10 + #define X_MARK_Y VCENTER + #define X_VALUE_X 103 - tft_string.width() + #define X_VALUE_Y VCENTER +#endif + +#if !defined(Y_MARK_X) && !defined(Y_MARK_Y) && !defined(Y_VALUE_X) && !defined(Y_VALUE_Y) + #define Y_MARK_X 176 + #define Y_MARK_Y VCENTER + #define Y_VALUE_X 265 - tft_string.width() + #define Y_VALUE_Y VCENTER +#endif + +#if !defined(Z_MARK_X) && !defined(Z_MARK_Y) && !defined(Z_VALUE_X) && !defined(Z_VALUE_Y) + #define Z_MARK_X 176 + #define Z_MARK_Y VCENTER + FONT_LINE_HEIGHT + #define Z_VALUE_X 297 - tft_string.width() + #define Z_VALUE_Y VCENTER + FONT_LINE_HEIGHT + #define Z_VALUE_OFFSET 32 +#endif + +#if !defined(FEEDRATE_W) && !defined(FEEDRATE_H) && !defined(FEEDRATE_X) && !defined(FEEDRATE_Y) + #define FEEDRATE_W 120 + #define FEEDRATE_H 32 + #define FEEDRATE_X 24 + #define FEEDRATE_Y 218 +#endif +#if !defined(FEEDRATE_ICON_X) && !defined(FEEDRATE_ICON_Y) && !defined(FEEDRATE_ICON_Y) && !defined(FEEDRATE_TEXT_Y) + #define FEEDRATE_ICON_X 0 + #define FEEDRATE_ICON_Y 0 + #define FEEDRATE_TEXT_X 36 + #define FEEDRATE_TEXT_Y tft_string.vcenter(30) +#endif + +#if !defined(FLOWRATE_W) && !defined(FLOWRATE_H) && !defined(FLOWRATE_X) && !defined(FLOWRATE_Y) + #define FLOWRATE_W 120 + #define FLOWRATE_H 32 + #define FLOWRATE_X 176 + #define FLOWRATE_Y 218 +#endif +#if !defined(FLOWRATE_ICON_X) && !defined(FLOWRATE_ICON_Y) && !defined(FLOWRATE_TEXT_X) && !defined(FLOWRATE_TEXT_Y) + #define FLOWRATE_ICON_X 0 + #define FLOWRATE_ICON_Y 0 + #define FLOWRATE_TEXT_X 36 + #define FLOWRATE_TEXT_Y tft_string.vcenter(30) +#endif + +#if !defined(MENU_ICON_X) && !defined(MENU_ICON_Y) + #define MENU_ICON_X 250 + #define MENU_ICON_Y 354 +#endif +#if !defined(SDCARD_ICON_X) && !defined(SDCARD_ICON_Y) + #define SDCARD_ICON_X 6 + #define SDCARD_ICON_Y 354 +#endif + +#if !defined(ELAPSED_TIME_W) && !defined(ELAPSED_TIME_H) && !defined(ELAPSED_TIME_X) && !defined(ELAPSED_TIME_Y) + #define ELAPSED_TIME_W 168 + #define ELAPSED_TIME_H 29 + #define ELAPSED_TIME_X (TFT_WIDTH - ELAPSED_TIME_W) / 2 + #define ELAPSED_TIME_Y 388 +#endif + +#if !defined(REMAINING_TIME_W) && !defined(REMAINING_TIME_H) && !defined(REMAINING_TIME_X) && !defined(REMAINING_TIME_Y) + #if ALL(SHOW_ELAPSED_TIME, SHOW_REMAINING_TIME) + #define REMAINING_TIME_Y 354 + #elif ENABLED(SHOW_REMAINING_TIME) + #define REMAINING_TIME_Y 388 + #endif + + #define REMAINING_TIME_H 29 + #define REMAINING_TIME_W 168 + #define REMAINING_TIME_X (TFT_WIDTH - REMAINING_TIME_W) / 2 +#endif + +#if !defined(ELAPSED_TIME_IMAGE_X) && !defined(ELAPSED_TIME_IMAGE_Y) && !defined(ELAPSED_TIME_TEXT_X) && !defined(ELAPSED_TIME_TEXT_Y) + #define ELAPSED_TIME_IMAGE_X tft_string.center(ELAPSED_TIME_W) - 18 + #define ELAPSED_TIME_IMAGE_Y 0 + #define ELAPSED_TIME_TEXT_X tft_string.center(ELAPSED_TIME_W) + 18 + #define ELAPSED_TIME_TEXT_Y tft_string.vcenter(29) +#endif + +#if !defined(REMAINING_TIME_IMAGE_X) && !defined(REMAINING_TIME_IMAGE_Y) && !defined(REMAINING_TIME_TEXT_X) && !defined(REMAINING_TIME_TEXT_Y) + #define REMAINING_TIME_IMAGE_X tft_string.center(ELAPSED_TIME_W) - 18 + #define REMAINING_TIME_IMAGE_Y 0 + #define REMAINING_TIME_TEXT_X tft_string.center(ELAPSED_TIME_W) + 18 + #define REMAINING_TIME_TEXT_Y tft_string.vcenter(29) +#endif + +#if !defined(PROGRESS_BAR_W) && !defined(PROGRESS_BAR_H) && !defined(PROGRESS_BAR_X) && !defined(PROGRESS_BAR_Y) + #define PROGRESS_BAR_W TFT_WIDTH - 8 + #define PROGRESS_BAR_H 12 + #define PROGRESS_BAR_X 4 + #define PROGRESS_BAR_Y 422 +#endif + +#if !defined(STATUS_MESSAGE_W) && !defined(STATUS_MESSAGE_H) && !defined(STATUS_MESSAGE_X) && !defined(STATUS_MESSAGE_Y) + #define STATUS_MESSAGE_W TFT_WIDTH + #define STATUS_MESSAGE_H FONT_LINE_HEIGHT + #define STATUS_MESSAGE_X 0 + #define STATUS_MESSAGE_Y 440 +#endif + +#if !defined(STATUS_MESSAGE_TEXT_X) && !defined(STATUS_MESSAGE_TEXT_Y) + #define STATUS_MESSAGE_TEXT_X tft_string.center(STATUS_MESSAGE_W) + #define STATUS_MESSAGE_TEXT_Y VCENTER +#endif + +// MenuEditItemBase::draw_edit_screen() +#if !defined(SLIDER_W) && !defined(SLIDER_Y) + #define SLIDER_W 288 + #define SLIDER_Y 280 +#endif + +#if ENABLED(AUTO_BED_LEVELING_UBL) + #if !defined(UBL_X_LABEL_X) && !defined(UBL_X_TEXT_X) && !defined(UBL_Y_LABEL_X) && !defined(UBL_Y_TEXT_X) + #define UBL_X_LABEL_X (TFT_WIDTH / 2 - 120) + #define UBL_X_TEXT_X (TFT_WIDTH / 2 - 16) - tft_string.width() + #define UBL_Y_LABEL_X (TFT_WIDTH / 2 + 16) + #define UBL_Y_TEXT_X (TFT_WIDTH / 2 + 120) - tft_string.width() + #endif + + // MarlinUI::ubl_plot() + #if !defined(UBL_GRID_W) && !defined(UBL_GRID_H) && !defined(UBL_GRID_X) && !defined(UBL_GRID_Y) && !defined(UBL_CONTROL_OFFSET) + #define UBL_GRID_W 192 + #define UBL_GRID_H 192 + #define UBL_GRID_X 8 + #define UBL_GRID_Y 8 + #define UBL_CONTROL_OFFSET 16 + #endif + + #if !defined(UBL_COORDINATES_W) && !defined(UBL_COORDINATES_X) && !defined(UBL_X_COORDINATE_Y) && !defined(UBL_Y_COORDINATE_Y) && !defined(UBL_Z_COORDINATE_Y) + #define UBL_COORDINATES_W 168 + #define UBL_COORDINATES_X 20 + + #define UBL_X_COORDINATE_Y 283 + #define UBL_Y_COORDINATE_Y 326 + #define UBL_Z_COORDINATE_Y 369 + #endif + + #if !defined(UBL_ACTION_X) && !defined(UBL_ACTION_Y) + #define UBL_ACTION_X 240 + #define UBL_ACTION_Y 332 + #endif +#endif diff --git a/Marlin/src/lcd/tft/ui_480x272.h b/Marlin/src/lcd/tft/ui_480x272.h new file mode 100644 index 0000000000..83f9e5c21a --- /dev/null +++ b/Marlin/src/lcd/tft/ui_480x272.h @@ -0,0 +1,306 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../inc/MarlinConfigPre.h" + +// -------------------------------- Core Parameters -------------------------------- + +#define MENU_TEXT_X 16 +#define MENU_TEXT_Y tft_string.vcenter(MENU_ITEM_HEIGHT) + +#define MENU_ITEM_ICON_X 5 +#define MENU_ITEM_ICON_Y 5 +#define MENU_ITEM_ICON_SPACE 42 + +#define MENU_ITEM_HEIGHT 36 +#define MENU_LINE_HEIGHT (MENU_ITEM_HEIGHT + 2) +#define MENU_TOP_LINE_Y 4 + +#if TFT_FONT == NOTOSANS + #define FONT_SIZE 16 + #define FONT_LINE_HEIGHT 26 +#elif TFT_FONT == UNIFONT + #define FONT_SIZE 10 + #define FONT_LINE_HEIGHT 24 +#elif TFT_FONT == HELVETICA + #define FONT_SIZE 14 + #define FONT_LINE_HEIGHT 24 +#endif + +// --------------------------------------------------------------------------------- + +#define VCENTER tft_string.vcenter(FONT_LINE_HEIGHT) + +// MarlinUI::show_bootscreen() +#ifndef BOOTSCREEN_LOGO + #if ENABLED(BOOT_MARLIN_LOGO_SMALL) + #define BOOTSCREEN_LOGO MarlinLogo195x59x16 + #define BOOTSCREEN_LOGO_W 195 + #define BOOTSCREEN_LOGO_H 59 + #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 70) + #else + #define BOOTSCREEN_LOGO MarlinLogo480x320x16 + #define BOOTSCREEN_LOGO_W TFT_WIDTH + #define BOOTSCREEN_LOGO_H TFT_HEIGHT + #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 90) + #endif +#endif + +#if !defined(BOOTSCREEN_LOGO_X) && !defined(BOOTSCREEN_LOGO_Y) + #define BOOTSCREEN_LOGO_X (TFT_WIDTH - BOOTSCREEN_LOGO_W) / 2 + #define BOOTSCREEN_LOGO_Y (TFT_HEIGHT - BOOTSCREEN_LOGO_H) / 2 +#endif + +#if !defined(NAVIGATION_PAGE_UP_X) && !defined(NAVIGATION_PAGE_UP_Y) && !defined(NAVIGATION_PAGE_DOWN_X) && !defined(NAVIGATION_PAGE_DOWN_Y) && !defined(NAVIGATION_BACK_X) && !defined(NAVIGATION_BACK_Y) + #define NAVIGATION_PAGE_UP_X 104 + #define NAVIGATION_PAGE_UP_Y TFT_HEIGHT - 34 + #define NAVIGATION_PAGE_DOWN_X 344 + #define NAVIGATION_PAGE_DOWN_Y TFT_HEIGHT - 34 + #define NAVIGATION_BACK_X 224 + #define NAVIGATION_BACK_Y TFT_HEIGHT - 34 +#endif + +#if !defined(BUTTON_DECREASE_X) && !defined(BUTTON_DECREASE_Y) && !defined(BUTTON_INCREASE_X) && !defined(BUTTON_INCREASE_Y) && !defined(BUTTON_CLICK_X) && !defined(BUTTON_CLICK_Y) + #define BUTTON_DECREASE_X 64 + #define BUTTON_DECREASE_Y TFT_HEIGHT - 64 + #define BUTTON_INCREASE_X 352 + #define BUTTON_INCREASE_Y TFT_HEIGHT - 64 + #define BUTTON_CLICK_X 208 + #define BUTTON_CLICK_Y TFT_HEIGHT - 64 +#endif + +#if !defined(BUTTON_CANCEL_X) && !defined(BUTTON_CANCEL_Y) && !defined(BUTTON_CONFIRM_X) && !defined(BUTTON_CONFIRM_Y) + #define BUTTON_CANCEL_X 88 + #define BUTTON_CANCEL_Y TFT_HEIGHT - 64 + #define BUTTON_CONFIRM_X 328 + #define BUTTON_CONFIRM_Y TFT_HEIGHT - 64 +#endif + +// MarlinUI::draw_kill_screen() +#if !defined(KILL_SCREEN_STATUS_Y) && !defined(KILL_SCREEN_HALTED_Y) && !defined(KILL_SCREEN_RESET_Y) + #define KILL_SCREEN_STATUS_Y 62 + #define KILL_SCREEN_HALTED_Y 136 + #define KILL_SCREEN_RESET_Y 172 +#endif + +// draw_heater_status() and draw_fan_status() +#if !defined(TEMP_FAN_CONTROL_W) && !defined(TEMP_FAN_CONTROL_H) + #define TEMP_FAN_CONTROL_W 80 + #define TEMP_FAN_CONTROL_H 112 +#endif +#if !defined(TEMP_ICON_X) && !defined(TEMP_ICON_Y) + #define TEMP_ICON_X 8 + #define TEMP_ICON_Y 24 +#endif +#if !defined(FAN_ICON_X) && !defined(FAN_ICON_Y) + #define FAN_ICON_X 8 + #define FAN_ICON_Y 16 +#endif + +#if !defined(TEMP_CURRENT_TEXT_X) && !defined(TEMP_CURRENT_TEXT_Y) && !defined(TEMP_TARGET_TEXT_X) && !defined(TEMP_TARGET_TEXT_Y) + #define TEMP_CURRENT_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 2 + #define TEMP_CURRENT_TEXT_Y 76 + VCENTER + #define TEMP_TARGET_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 2 + #define TEMP_TARGET_TEXT_Y 2 + VCENTER +#endif + +#if !defined(FAN_TEXT_X) && !defined(FAN_TEXT_Y) + #define FAN_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 6 + #define FAN_TEXT_Y 76 + VCENTER +#endif + +// MarlinUI::draw_status_screen() +#if !defined(MAX_ITEMS) && !defined(ITEM_X) && !defined(ITEM_Y) + #define MAX_ITEMS 5 + #define ITEM_X(N) (TFT_WIDTH / _MIN(ITEMS_COUNT, MAX_ITEMS) - TEMP_FAN_CONTROL_W) / 2 + (TFT_WIDTH * N / _MIN(ITEMS_COUNT, MAX_ITEMS)) + #define ITEM_Y 4 +#endif + +#if !defined(COORDINATES_W) && !defined(COORDINATES_H) && !defined(COORDINATES_X) && !defined(COORDINATES_Y) + #define COORDINATES_W TFT_WIDTH - 8 + #define COORDINATES_H FONT_LINE_HEIGHT + #define COORDINATES_X 4 + #define COORDINATES_Y 122 +#endif + +#if ENABLED(LCD_SHOW_E_TOTAL) + #if !defined(E_MARK_X) && !defined(E_MARK_Y) && !defined(E_VALUE_X) && !defined(E_VALUE_Y) + #define E_MARK_X 16 + #define E_MARK_Y VCENTER + #define E_VALUE_X 192 - tft_string.width() + #define E_VALUE_Y VCENTER + #endif +#else + #if !defined(X_MARK_X) && !defined(X_MARK_Y) && !defined(X_VALUE_X) && !defined(X_VALUE_Y) + #define X_MARK_X 16 + #define X_MARK_Y VCENTER + #define X_VALUE_X 102 - tft_string.width() + #define X_VALUE_Y VCENTER + #endif + + #if !defined(Y_MARK_X) && !defined(Y_MARK_Y) && !defined(Y_VALUE_X) && !defined(Y_VALUE_Y) + #define Y_MARK_X 192 + #define Y_MARK_Y VCENTER + #define Y_VALUE_X 280 - tft_string.width() + #define Y_VALUE_Y VCENTER + #endif +#endif + +#if !defined(Z_MARK_X) && !defined(Z_MARK_Y) && !defined(Z_VALUE_X) && !defined(Z_VALUE_Y) + #define Z_MARK_X 330 + #define Z_MARK_Y VCENTER + #define Z_VALUE_X 455 - tft_string.width() + #define Z_VALUE_Y VCENTER + #define Z_VALUE_OFFSET 32 +#endif + +#if !defined(FEEDRATE_W) && !defined(FEEDRATE_H) && !defined(FEEDRATE_X) && !defined(FEEDRATE_Y) + #define FEEDRATE_W 120 + #define FEEDRATE_H 32 + #define FEEDRATE_X 96 + #define FEEDRATE_Y 156 +#endif +#if !defined(FEEDRATE_ICON_X) && !defined(FEEDRATE_ICON_Y) && !defined(FEEDRATE_ICON_Y) && !defined(FEEDRATE_TEXT_Y) + #define FEEDRATE_ICON_X 0 + #define FEEDRATE_ICON_Y 0 + #define FEEDRATE_TEXT_X 36 + #define FEEDRATE_TEXT_Y tft_string.vcenter(30) +#endif + +#if !defined(FLOWRATE_W) && !defined(FLOWRATE_H) && !defined(FLOWRATE_X) && !defined(FLOWRATE_Y) + #define FLOWRATE_W 120 + #define FLOWRATE_H 32 + #define FLOWRATE_X 284 + #define FLOWRATE_Y 156 +#endif +#if !defined(FLOWRATE_ICON_X) && !defined(FLOWRATE_ICON_Y) && !defined(FLOWRATE_TEXT_X) && !defined(FLOWRATE_TEXT_Y) + #define FLOWRATE_ICON_X 0 + #define FLOWRATE_ICON_Y 0 + #define FLOWRATE_TEXT_X 36 + #define FLOWRATE_TEXT_Y tft_string.vcenter(30) +#endif + +#if !defined(MENU_ICON_X) && !defined(MENU_ICON_Y) + #define MENU_ICON_X 404 + #define MENU_ICON_Y 156 +#endif +#if !defined(SDCARD_ICON_X) && !defined(SDCARD_ICON_Y) + #define SDCARD_ICON_X 12 + #define SDCARD_ICON_Y 156 +#endif + +#if !defined(ELAPSED_TIME_W) && !defined(ELAPSED_TIME_H) && !defined(ELAPSED_TIME_X) && !defined(ELAPSED_TIME_Y) + #if ALL(SHOW_ELAPSED_TIME, SHOW_REMAINING_TIME) + #define ELAPSED_TIME_W 164 + #define ELAPSED_TIME_X (TFT_WIDTH / 2) - ELAPSED_TIME_W + #elif ENABLED(SHOW_ELAPSED_TIME) + #define ELAPSED_TIME_W 288 + #define ELAPSED_TIME_X (TFT_WIDTH - ELAPSED_TIME_W) / 2 + #endif + + #define ELAPSED_TIME_H 29 + #define ELAPSED_TIME_Y 192 +#endif + +#if !defined(REMAINING_TIME_W) && !defined(REMAINING_TIME_H) && !defined(REMAINING_TIME_X) && !defined(REMAINING_TIME_Y) + #if ALL(SHOW_ELAPSED_TIME, SHOW_REMAINING_TIME) + #define REMAINING_TIME_W 164 + #define REMAINING_TIME_X (TFT_WIDTH / 2) + #elif ENABLED(SHOW_REMAINING_TIME) + #define REMAINING_TIME_W 288 + #define REMAINING_TIME_X (TFT_WIDTH - REMAINING_TIME_W) / 2 + #endif + + #define REMAINING_TIME_H 29 + #define REMAINING_TIME_Y 192 +#endif + +#if !defined(ELAPSED_TIME_IMAGE_X) && !defined(ELAPSED_TIME_IMAGE_Y) && !defined(ELAPSED_TIME_TEXT_X) && !defined(ELAPSED_TIME_TEXT_Y) + #define ELAPSED_TIME_IMAGE_X tft_string.center(ELAPSED_TIME_W) - 18 + #define ELAPSED_TIME_IMAGE_Y 0 + #define ELAPSED_TIME_TEXT_X tft_string.center(ELAPSED_TIME_W) + 18 + #define ELAPSED_TIME_TEXT_Y tft_string.vcenter(29) +#endif + +#if !defined(REMAINING_TIME_IMAGE_X) && !defined(REMAINING_TIME_IMAGE_Y) && !defined(REMAINING_TIME_TEXT_X) && !defined(REMAINING_TIME_TEXT_Y) + #define REMAINING_TIME_IMAGE_X tft_string.center(ELAPSED_TIME_W) - 18 + #define REMAINING_TIME_IMAGE_Y 0 + #define REMAINING_TIME_TEXT_X tft_string.center(ELAPSED_TIME_W) + 18 + #define REMAINING_TIME_TEXT_Y tft_string.vcenter(29) +#endif + +#if !defined(PROGRESS_BAR_W) && !defined(PROGRESS_BAR_H) && !defined(PROGRESS_BAR_X) && !defined(PROGRESS_BAR_Y) + #define PROGRESS_BAR_W TFT_WIDTH - 8 + #define PROGRESS_BAR_H 12 + #define PROGRESS_BAR_X 4 + #define PROGRESS_BAR_Y 228 +#endif + +#if !defined(STATUS_MESSAGE_W) && !defined(STATUS_MESSAGE_H) && !defined(STATUS_MESSAGE_X) && !defined(STATUS_MESSAGE_Y) + #define STATUS_MESSAGE_W TFT_WIDTH + #define STATUS_MESSAGE_H FONT_LINE_HEIGHT + #define STATUS_MESSAGE_X 0 + #define STATUS_MESSAGE_Y 242 +#endif + +#if !defined(STATUS_MESSAGE_TEXT_X) && !defined(STATUS_MESSAGE_TEXT_Y) + #define STATUS_MESSAGE_TEXT_X tft_string.center(STATUS_MESSAGE_W) + #define STATUS_MESSAGE_TEXT_Y VCENTER +#endif + +// MenuEditItemBase::draw_edit_screen() +#if !defined(SLIDER_W) && !defined(SLIDER_Y) + #define SLIDER_W 336 + #define SLIDER_Y 160 +#endif + +#if ENABLED(AUTO_BED_LEVELING_UBL) + #if !defined(UBL_X_LABEL_X) && !defined(UBL_X_TEXT_X) && !defined(UBL_Y_LABEL_X) && !defined(UBL_Y_TEXT_X) + #define UBL_X_LABEL_X (TFT_WIDTH / 2 - 120) + #define UBL_X_TEXT_X (TFT_WIDTH / 2 - 16) - tft_string.width() + #define UBL_Y_LABEL_X (TFT_WIDTH / 2 + 16) + #define UBL_Y_TEXT_X (TFT_WIDTH / 2 + 120) - tft_string.width() + #endif + + // MarlinUI::ubl_plot() + #if !defined(UBL_GRID_W) && !defined(UBL_GRID_H) && !defined(UBL_GRID_X) && !defined(UBL_GRID_Y) && !defined(UBL_CONTROL_OFFSET) + #define UBL_GRID_W 192 + #define UBL_GRID_H 192 + #define UBL_GRID_X 8 + #define UBL_GRID_Y 8 + #define UBL_CONTROL_OFFSET 16 + #endif + + #if !defined(UBL_COORDINATES_W) && !defined(UBL_COORDINATES_X) && !defined(UBL_X_COORDINATE_Y) && !defined(UBL_Y_COORDINATE_Y) && !defined(UBL_Z_COORDINATE_Y) + #define UBL_COORDINATES_W 120 + #define UBL_COORDINATES_X 320 + + #define UBL_X_COORDINATE_Y UBL_GRID_Y + (UBL_GRID_H - MENU_ITEM_HEIGHT) / 2 - MENU_ITEM_HEIGHT + #define UBL_Y_COORDINATE_Y UBL_GRID_Y + (UBL_GRID_H - MENU_ITEM_HEIGHT) / 2 + #define UBL_Z_COORDINATE_Y UBL_GRID_Y + (UBL_GRID_H - MENU_ITEM_HEIGHT) / 2 + MENU_ITEM_HEIGHT +#endif + + #if !defined(UBL_ACTION_X) && !defined(UBL_ACTION_Y) + #define UBL_ACTION_X UBL_COORDINATES_X + #define UBL_ACTION_Y UBL_GRID_Y + UBL_GRID_H + UBL_CONTROL_OFFSET + #endif +#endif diff --git a/Marlin/src/lcd/tft/ui_480x320.cpp b/Marlin/src/lcd/tft/ui_480x320.cpp deleted file mode 100644 index 8e554cf413..0000000000 --- a/Marlin/src/lcd/tft/ui_480x320.cpp +++ /dev/null @@ -1,1196 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "../../inc/MarlinConfigPre.h" - -#if HAS_UI_480x320 || HAS_UI_480x272 - -#include "ui_common.h" - -#include "../marlinui.h" -#include "../menu/menu.h" -#include "../../libs/numtostr.h" - -#include "../../sd/cardreader.h" -#include "../../module/temperature.h" -#include "../../module/printcounter.h" -#include "../../module/planner.h" -#include "../../module/motion.h" - -#if DISABLED(LCD_PROGRESS_BAR) && ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) - #include "../../feature/filwidth.h" - #include "../../gcode/parser.h" -#endif - -#if ENABLED(AUTO_BED_LEVELING_UBL) - #include "../../feature/bedlevel/bedlevel.h" -#endif - -void MarlinUI::tft_idle() { - #if ENABLED(TOUCH_SCREEN) - if (TERN0(HAS_TOUCH_SLEEP, lcd_sleep_task())) return; - if (draw_menu_navigation) { - add_control(TFT_WIDTH / 6 - 16, TFT_HEIGHT - 34, PAGE_UP, imgPageUp, encoderTopLine > 0); - add_control(TFT_WIDTH / 2 - 16, TFT_HEIGHT - 34, PAGE_DOWN, imgPageDown, encoderTopLine + LCD_HEIGHT < screen_items); - add_control(5 * TFT_WIDTH / 6 - 16, TFT_HEIGHT - 34, BACK, imgBack); - draw_menu_navigation = false; - } - #endif - - tft.queue.async(); - - TERN_(TOUCH_SCREEN, if (tft.queue.is_empty()) touch.idle()); // Touch driver is not DMA-aware, so only check for touch controls after screen drawing is completed -} - -#if ENABLED(SHOW_BOOTSCREEN) - - void MarlinUI::show_bootscreen() { - tft.queue.reset(); - - tft.canvas(0, 0, TFT_WIDTH, TFT_HEIGHT); - #if ENABLED(BOOT_MARLIN_LOGO_SMALL) - #define BOOT_LOGO_W 195 // MarlinLogo195x59x16 - #define BOOT_LOGO_H 59 - #define SITE_URL_Y (TFT_HEIGHT - 70) - tft.set_background(COLOR_BACKGROUND); - #else - #define BOOT_LOGO_W TFT_WIDTH // MarlinLogo480x320x16 - #define BOOT_LOGO_H TFT_HEIGHT - #define SITE_URL_Y (TFT_HEIGHT - 90) - #endif - tft.add_image((TFT_WIDTH - BOOT_LOGO_W) / 2, (TFT_HEIGHT - BOOT_LOGO_H) / 2, imgBootScreen); - #ifdef WEBSITE_URL - tft_string.set(WEBSITE_URL); - tft.add_text(tft_string.center(TFT_WIDTH), SITE_URL_Y, COLOR_WEBSITE_URL, tft_string); - #endif - - tft.queue.sync(); - } - - void MarlinUI::bootscreen_completion(const millis_t sofar) { - if ((BOOTSCREEN_TIMEOUT) > sofar) safe_delay((BOOTSCREEN_TIMEOUT) - sofar); - clear_lcd(); - } - -#endif - -void MarlinUI::draw_kill_screen() { - tft.queue.reset(); - tft.fill(0, 0, TFT_WIDTH, TFT_HEIGHT, COLOR_KILL_SCREEN_BG); - - uint16_t line = 2; - - menu_line(line++, COLOR_KILL_SCREEN_BG); - tft_string.set(status_message); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); - - line++; - menu_line(line++, COLOR_KILL_SCREEN_BG); - tft_string.set(GET_TEXT(MSG_HALTED)); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); - - menu_line(line++, COLOR_KILL_SCREEN_BG); - tft_string.set(GET_TEXT(MSG_PLEASE_RESET)); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); - - tft.queue.sync(); -} - -void draw_heater_status(uint16_t x, uint16_t y, const int8_t heater) { - MarlinImage image = imgHotEnd; - celsius_t currentTemperature, targetTemperature; - - if (heater >= 0) { // HotEnd - #if HAS_EXTRUDERS - currentTemperature = thermalManager.wholeDegHotend(heater); - targetTemperature = thermalManager.degTargetHotend(heater); - #else - return; - #endif - } - #if HAS_HEATED_BED - else if (heater == H_BED) { - currentTemperature = thermalManager.wholeDegBed(); - targetTemperature = thermalManager.degTargetBed(); - } - #endif - #if HAS_TEMP_CHAMBER - else if (heater == H_CHAMBER) { - currentTemperature = thermalManager.wholeDegChamber(); - #if HAS_HEATED_CHAMBER - targetTemperature = thermalManager.degTargetChamber(); - #else - targetTemperature = ABSOLUTE_ZERO; - #endif - } - #endif - #if HAS_TEMP_COOLER - else if (heater == H_COOLER) { - currentTemperature = thermalManager.wholeDegCooler(); - targetTemperature = TERN(HAS_COOLER, thermalManager.degTargetCooler(), ABSOLUTE_ZERO); - } - #endif - else return; - - TERN_(TOUCH_SCREEN, if (targetTemperature >= 0) touch.add_control(HEATER, x, y, 80, 120, heater)); - tft.canvas(x, y, 80, 120); - tft.set_background(COLOR_BACKGROUND); - - uint16_t color = currentTemperature < 0 ? COLOR_INACTIVE : COLOR_COLD; - - if (heater >= 0) { // HotEnd - if (currentTemperature >= 50) color = COLOR_HOTEND; - } - #if HAS_HEATED_BED - else if (heater == H_BED) { - if (currentTemperature >= 50) color = COLOR_HEATED_BED; - image = targetTemperature > 0 ? imgBedHeated : imgBed; - } - #endif - #if HAS_TEMP_CHAMBER - else if (heater == H_CHAMBER) { - if (currentTemperature >= 50) color = COLOR_CHAMBER; - image = targetTemperature > 0 ? imgChamberHeated : imgChamber; - } - #endif - #if HAS_TEMP_COOLER - else if (heater == H_COOLER) { - if (currentTemperature <= 26) color = COLOR_COLD; - if (currentTemperature > 26) color = COLOR_RED; - image = targetTemperature > 26 ? imgCoolerHot : imgCooler; - } - #endif - - tft.add_image(8, 28, image, color); - - tft_string.set(i16tostr3rj(currentTemperature)); - tft_string.add(LCD_STR_DEGREE); - tft_string.trim(); - tft.add_text(tft_string.center(80) + 2, 80 + tft_string.vcenter(FONT_LINE_HEIGHT), color, tft_string); - - if (targetTemperature >= 0) { - tft_string.set(i16tostr3rj(targetTemperature)); - tft_string.add(LCD_STR_DEGREE); - tft_string.trim(); - tft.add_text(tft_string.center(80) + 2, 6 + tft_string.vcenter(FONT_LINE_HEIGHT), color, tft_string); - } -} - -void draw_fan_status(uint16_t x, uint16_t y, const bool blink) { - TERN_(TOUCH_SCREEN, touch.add_control(FAN, x, y, 80, 120)); - tft.canvas(x, y, 80, 120); - tft.set_background(COLOR_BACKGROUND); - - uint8_t fanSpeed = thermalManager.fan_speed[0]; - MarlinImage image; - - if (fanSpeed >= 127) - image = blink ? imgFanFast1 : imgFanFast0; - else if (fanSpeed > 0) - image = blink ? imgFanSlow1 : imgFanSlow0; - else - image = imgFanIdle; - - tft.add_image(8, 20, image, COLOR_FAN); - - tft_string.set(ui8tostr4pctrj(thermalManager.fan_speed[0])); - tft_string.trim(); - tft.add_text(tft_string.center(80) + 6, 80 + tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_FAN, tft_string); -} - -void MarlinUI::draw_status_screen() { - const bool blink = get_blink(); - - TERN_(TOUCH_SCREEN, touch.clear()); - - // Statuses of heaters and fans - uint16_t y = STATUS_MARGIN_SIZE; - for (uint16_t i = 0; i < ITEMS_COUNT; i++) { - uint16_t x = (TFT_WIDTH / ITEMS_COUNT - 80) / 2 + (TFT_WIDTH * i / ITEMS_COUNT); - switch (i) { - #if HAS_EXTRUDERS - case ITEM_E0: draw_heater_status(x, y, H_E0); break; - #endif - #if HAS_MULTI_HOTEND - case ITEM_E1: draw_heater_status(x, y, H_E1); break; - #endif - #if HOTENDS > 2 - case ITEM_E2: draw_heater_status(x, y, H_E2); break; - #endif - #if HAS_HEATED_BED - case ITEM_BED: draw_heater_status(x, y, H_BED); break; - #endif - #if HAS_TEMP_CHAMBER - case ITEM_CHAMBER: draw_heater_status(x, y, H_CHAMBER); break; - #endif - #if HAS_TEMP_COOLER - case ITEM_COOLER: draw_heater_status(x, y, H_COOLER); break; - #endif - #if HAS_FAN - case ITEM_FAN: draw_fan_status(x, y, blink); break; - #endif - } - } - - y += STATUS_MARGIN_SIZE + 114; - - // Coordinates - constexpr uint16_t coords_width = TFT_WIDTH - 8; - tft.canvas((TFT_WIDTH - coords_width) / 2, y, coords_width, FONT_LINE_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft.add_rectangle(0, 0, coords_width, FONT_LINE_HEIGHT, COLOR_AXIS_HOMED); - - if (TERN0(LCD_SHOW_E_TOTAL, printingIsActive())) { - #if ENABLED(LCD_SHOW_E_TOTAL) - tft.add_text(16, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, "E"); - const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm - tft_string.set(ftostr4sign(e_move_accumulator / escale)); - tft_string.add(escale == 10 ? 'c' : 'm'); - tft_string.add('m'); - tft.add_text(192 - tft_string.width(), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, tft_string); - #endif - } - else { - // Coords in mask "X____Y____Z____" - #if HAS_X_AXIS - tft_string.set("X"); - tft.add_text(coords_width / 30 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, tft_string); - - const bool nhx = axis_should_home(X_AXIS); - tft_string.set(blink && nhx ? "?" : ftostr4sign(LOGICAL_X_POSITION(current_position.x))); - tft_string.ltrim(); - tft.add_text(coords_width / 5 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); - #endif - - #if HAS_Y_AXIS - tft_string.set("Y"); - tft.add_text(11 * coords_width / 30 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, tft_string); - - const bool nhy = axis_should_home(Y_AXIS); - tft_string.set(blink && nhy ? "?" : ftostr4sign(LOGICAL_Y_POSITION(current_position.y))); - tft_string.ltrim(); - tft.add_text(8 * coords_width / 15 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), nhy ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); - #endif - } - - #if HAS_Z_AXIS - tft_string.set("Z"); - tft.add_text(7 * coords_width / 10 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_AXIS_HOMED, tft_string); - - const bool nhz = axis_should_home(Z_AXIS); - tft_string.set(blink && nhz ? "?" : ftostr52sp(LOGICAL_Z_POSITION(current_position.z))); - tft_string.ltrim(); - tft_string.rtrim(); - tft.add_text(13 * coords_width / 15 - tft_string.width() / 2, tft_string.vcenter(FONT_LINE_HEIGHT), nhz ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); - #endif - - TERN_(TOUCH_SCREEN, touch.add_control(MOVE_AXIS, 4, y, TFT_WIDTH - 8, FONT_LINE_HEIGHT)); - - y += STATUS_MARGIN_SIZE + 34; - - // Feed rate (preparing) - tft_string.set(i16tostr3rj(feedrate_percentage)); - tft_string.add("%"); - uint16_t component_width = 36 + tft_string.width(); // 32px icon size + 4px margin before text - uint16_t color = feedrate_percentage == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; - uint16_t x = FEEDRATE_X(component_width); - - // Feed rate (drawing) - tft.canvas(x, y, component_width, 32); - tft.set_background(COLOR_BACKGROUND); - tft.add_image(0, 0, imgFeedRate, color); - tft.add_text(36, tft_string.vcenter(30), color, tft_string); - TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, x, y, component_width, 32)); - - #if HAS_EXTRUDERS - // Flow rate (preparing) - tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); - tft_string.add('%'); - component_width = 36 + tft_string.width(); - color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; - x = FLOWRATE_X(component_width); - - // Flow rate (drawing) - tft.canvas(x, y, component_width, 32); - tft.set_background(COLOR_BACKGROUND); - tft.add_image(0, 0, imgFlowRate, color); - tft.add_text(36, tft_string.vcenter(30), color, tft_string); - TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, x, y, component_width, 32, active_extruder)); - #endif - - y += TERN(HAS_UI_480x272, 36, 44); - - const progress_t progress = TERN(HAS_PRINT_PROGRESS_PERMYRIAD, get_progress_permyriad, get_progress_percent)(); - #if ENABLED(SHOW_ELAPSED_TIME) && DISABLED(SHOW_REMAINING_TIME) - // Print duration so far (time elapsed) - centered - char elapsed_str[22]; - duration_t elapsed = print_job_timer.duration(); - elapsed.toString(elapsed_str); - - // Same width constraints as feedrate/flowrate controls - constexpr uint16_t time_str_width = 288, image_width = 36; - - tft.canvas((TFT_WIDTH - time_str_width) / 2, y, time_str_width, 32); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(elapsed_str); - uint16_t text_pos_x = tft_string.center(time_str_width - image_width); - tft.add_image(text_pos_x, 0, imgTimeElapsed, COLOR_PRINT_TIME); - tft.add_text(text_pos_x + image_width, tft_string.vcenter(29), COLOR_PRINT_TIME, tft_string); - - #elif DISABLED(SHOW_ELAPSED_TIME) && ENABLED(SHOW_REMAINING_TIME) - // Print time remaining estimation - centered - char estimate_str[22]; - duration_t elapsed = print_job_timer.duration(); - - // Get the estimate, first from M73 - uint32_t estimate_remaining = (0 - #if ALL(SET_PROGRESS_MANUALLY, SET_REMAINING_TIME) - + get_remaining_time() - #endif - ); - // If no M73 estimate is available but we have progress data, calculate time remaining assuming time elapsed is linear with progress - if (!estimate_remaining && progress > 0) - estimate_remaining = elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress; - - // Generate estimate string - if (!estimate_remaining) - tft_string.set("-"); - else { - duration_t estimation = estimate_remaining; - estimation.toString(estimate_str); - tft_string.set(estimate_str); - } - - // Same width constraints as feedrate/flowrate controls - constexpr uint16_t time_str_width = 288, image_width = 36; - - tft.canvas((TFT_WIDTH - time_str_width) / 2, y, time_str_width, 32); - tft.set_background(COLOR_BACKGROUND); - color = printingIsActive() ? COLOR_PRINT_TIME : COLOR_INACTIVE; - uint16_t text_pos_x = tft_string.center(time_str_width - image_width); - tft.add_image(text_pos_x, 0, imgTimeRemaining, color); - tft.add_text(text_pos_x + image_width, tft_string.vcenter(29), color, tft_string); - - #elif ALL(SHOW_REMAINING_TIME, SHOW_ELAPSED_TIME) - // Print duration so far (time elapsed) - aligned under feed rate - char elapsed_str[18]; - duration_t elapsed = print_job_timer.duration(); - elapsed.toCompactString(elapsed_str); - - tft.canvas(96, y, 144, 32); - tft.set_background(COLOR_BACKGROUND); - tft.add_image(0, 0, imgTimeElapsed, COLOR_PRINT_TIME); - tft_string.set(elapsed_str); - tft.add_text(36, tft_string.vcenter(29), COLOR_PRINT_TIME, tft_string); - - // Print time remaining estimation - aligned under flow rate - char estimate_str[18]; - - // Get the estimate, first from M73 - uint32_t estimate_remaining = (0 - #if ALL(SET_PROGRESS_MANUALLY, SET_REMAINING_TIME) - + get_remaining_time() - #endif - ); - // If no M73 estimate is available but we have progress data, calculate time remaining assuming time elapsed is linear with progress - if (!estimate_remaining && progress > 0) - estimate_remaining = elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress; - - // Generate estimate string - if (!estimate_remaining) - tft_string.set("-"); - else { - duration_t estimation = estimate_remaining; - estimation.toCompactString(estimate_str); - tft_string.set(estimate_str); - } - - // Push out the estimate to the screen - tft.canvas(256, y, 144, 32); - tft.set_background(COLOR_BACKGROUND); - color = printingIsActive() ? COLOR_PRINT_TIME : COLOR_INACTIVE; - tft.add_image(0, 0, imgTimeRemaining, color); - tft.add_text(36, tft_string.vcenter(29), color, tft_string); - #endif - - y += TERN(HAS_UI_480x272, 36, 44); - - // Progress bar - // TODO: print percentage text for SHOW_PROGRESS_PERCENT - tft.canvas(4, y, TFT_WIDTH - 8, 9); - tft.set_background(COLOR_PROGRESS_BG); - tft.add_rectangle(0, 0, TFT_WIDTH - 8, 9, COLOR_PROGRESS_FRAME); - if (progress) - tft.add_bar(1, 1, ((TFT_WIDTH - 10) * progress / (PROGRESS_SCALE)) / 100, 7, COLOR_PROGRESS_BAR); - - y += 12; - // Status message - // Canvas height should be 40px on 480x320 and 28 on 480x272 - const uint16_t status_height = TFT_HEIGHT - y; - tft.canvas(0, y, TFT_WIDTH, status_height); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(status_message); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), tft_string.vcenter(FONT_LINE_HEIGHT), COLOR_STATUS_MESSAGE, tft_string); -} - -// Low-level draw_edit_screen can be used to draw an edit screen from anyplace -void MenuEditItemBase::draw_edit_screen(FSTR_P const fstr, const char * const value/*=nullptr*/) { - ui.encoder_direction_normal(); - TERN_(TOUCH_SCREEN, touch.clear()); - - uint16_t line = 1; - - menu_line(line++); - tft_string.set(fstr, itemIndex, itemStringC, itemStringF); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - - TERN_(AUTO_BED_LEVELING_UBL, if (ui.external_control) line++); // ftostr52() will overwrite *value so *value has to be displayed first - - menu_line(line); - tft_string.set(value); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - #if ENABLED(AUTO_BED_LEVELING_UBL) - if (ui.external_control) { - menu_line(line - 1); - - tft_string.set(X_LBL); - tft.add_text((TFT_WIDTH / 2 - 120), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(ftostr52(LOGICAL_X_POSITION(current_position.x))); - tft_string.trim(); - tft.add_text((TFT_WIDTH / 2 - 16) - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - tft_string.set(Y_LBL); - tft.add_text((TFT_WIDTH / 2 + 16), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(ftostr52(LOGICAL_X_POSITION(current_position.y))); - tft_string.trim(); - tft.add_text((TFT_WIDTH / 2 + 120) - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - } - #endif - - if (ui.can_show_slider()) { - - #define SLIDER_LENGTH TFT_WIDTH * 0.7 - #define SLIDER_Y_POSITION 186 - - tft.canvas((TFT_WIDTH - SLIDER_LENGTH) / 2, SLIDER_Y_POSITION, SLIDER_LENGTH, 16); - tft.set_background(COLOR_BACKGROUND); - - int16_t position = (SLIDER_LENGTH - 2) * ui.encoderPosition / maxEditValue; - tft.add_bar(0, 7, 1, 2, ui.encoderPosition == 0 ? COLOR_SLIDER_INACTIVE : COLOR_SLIDER); - tft.add_bar(1, 6, position, 4, COLOR_SLIDER); - tft.add_bar(position + 1, 6, SLIDER_LENGTH - 2 - position, 4, COLOR_SLIDER_INACTIVE); - tft.add_bar(SLIDER_LENGTH - 1, 7, 1, 2, int32_t(ui.encoderPosition) == maxEditValue ? COLOR_SLIDER : COLOR_SLIDER_INACTIVE); - - #if ENABLED(TOUCH_SCREEN) - tft.add_image((SLIDER_LENGTH - 8) * ui.encoderPosition / maxEditValue, 0, imgSlider, COLOR_SLIDER); - touch.add_control(SLIDER, (TFT_WIDTH - SLIDER_LENGTH) / 2, SLIDER_Y_POSITION - 8, SLIDER_LENGTH, 32, maxEditValue); - #endif - } - - tft.draw_edit_screen_buttons(); -} - -void TFT::draw_edit_screen_buttons() { - #if ENABLED(TOUCH_SCREEN) - add_control((TFT_WIDTH - 3 * 64) / 6, TFT_HEIGHT - 64, DECREASE, imgDecrease); - add_control((TFT_WIDTH - 64) / 2, TFT_HEIGHT - 64, INCREASE, imgIncrease); - add_control((TFT_WIDTH * 5 - 3 * 64) / 6, TFT_HEIGHT - 64, CLICK, imgConfirm); - #endif -} - -// The Select Screen presents a prompt and two "buttons" -void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, const bool yesno, FSTR_P const pref, const char * const string/*=nullptr*/, FSTR_P const suff/*=nullptr*/) { - uint16_t line = 1; - - if (!string) line++; - - menu_line(line++); - tft_string.set(pref); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); - - if (string) { - menu_line(line++); - tft_string.set(string); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); - } - - if (suff) { - menu_line(line); - tft_string.set(suff); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); - } - #if ENABLED(TOUCH_SCREEN) - if (no) add_control(TFT_WIDTH / 4 - 32, TFT_HEIGHT - 64, CANCEL, imgCancel, true, yesno ? HALF(COLOR_CONTROL_CANCEL) : COLOR_CONTROL_CANCEL); - if (yes) add_control(TFT_WIDTH * 3 / 4 - 32, TFT_HEIGHT - 64, CONFIRM, imgConfirm, true, yesno ? COLOR_CONTROL_CONFIRM : HALF(COLOR_CONTROL_CONFIRM)); - #endif -} - -#if ENABLED(ADVANCED_PAUSE_FEATURE) - - void MarlinUI::draw_hotend_status(const uint8_t row, const uint8_t extruder) { - #if ENABLED(TOUCH_SCREEN) - touch.clear(); - draw_menu_navigation = false; - touch.add_control(RESUME_CONTINUE, 0, 0, TFT_WIDTH, TFT_HEIGHT); - #endif - - menu_line(row); - tft_string.set(GET_TEXT(MSG_FILAMENT_CHANGE_NOZZLE)); - tft_string.add('E'); - tft_string.add((char)('1' + extruder)); - tft_string.add(' '); - tft_string.add(i16tostr3rj(thermalManager.wholeDegHotend(extruder))); - tft_string.add(LCD_STR_DEGREE); - tft_string.add(F(" / ")); - tft_string.add(i16tostr3rj(thermalManager.degTargetHotend(extruder))); - tft_string.add(LCD_STR_DEGREE); - tft_string.trim(); - tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); - } - -#endif // ADVANCED_PAUSE_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_UBL) - #define GRID_OFFSET_X 8 - #define GRID_OFFSET_Y 8 - #define GRID_WIDTH 192 - #define GRID_HEIGHT 192 - #define CONTROL_OFFSET 16 - - void MarlinUI::ubl_plot(const uint8_t x_plot, const uint8_t y_plot) { - - tft.canvas(GRID_OFFSET_X, GRID_OFFSET_Y, GRID_WIDTH, GRID_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft.add_rectangle(0, 0, GRID_WIDTH, GRID_HEIGHT, COLOR_WHITE); - - for (uint16_t x = 0; x < (GRID_MAX_POINTS_X); x++) - for (uint16_t y = 0; y < (GRID_MAX_POINTS_Y); y++) - if (position_is_reachable({ bedlevel.get_mesh_x(x), bedlevel.get_mesh_y(y) })) - tft.add_bar(1 + (x * 2 + 1) * (GRID_WIDTH - 4) / (GRID_MAX_POINTS_X) / 2, GRID_HEIGHT - 3 - ((y * 2 + 1) * (GRID_HEIGHT - 4) / (GRID_MAX_POINTS_Y) / 2), 2, 2, COLOR_UBL); - - tft.add_rectangle((x_plot * 2 + 1) * (GRID_WIDTH - 4) / (GRID_MAX_POINTS_X) / 2 - 1, GRID_HEIGHT - 5 - ((y_plot * 2 + 1) * (GRID_HEIGHT - 4) / (GRID_MAX_POINTS_Y) / 2), 6, 6, COLOR_UBL); - - const xy_pos_t pos = { bedlevel.get_mesh_x(x_plot), bedlevel.get_mesh_y(y_plot) }, - lpos = pos.asLogical(); - - tft.canvas(320, GRID_OFFSET_Y + (GRID_HEIGHT - MENU_ITEM_HEIGHT) / 2 - MENU_ITEM_HEIGHT, 120, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(X_LBL); - tft.add_text(0, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(ftostr52(lpos.x)); - tft_string.trim(); - tft.add_text(120 - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - tft.canvas(320, GRID_OFFSET_Y + (GRID_HEIGHT - MENU_ITEM_HEIGHT) / 2, 120, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(Y_LBL); - tft.add_text(0, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(ftostr52(lpos.y)); - tft_string.trim(); - tft.add_text(120 - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - tft.canvas(320, GRID_OFFSET_Y + (GRID_HEIGHT - MENU_ITEM_HEIGHT) / 2 + MENU_ITEM_HEIGHT, 120, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(Z_LBL); - tft.add_text(0, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); - tft_string.set(isnan(bedlevel.z_values[x_plot][y_plot]) ? "-----" : ftostr43sign(bedlevel.z_values[x_plot][y_plot])); - tft_string.trim(); - tft.add_text(120 - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - constexpr uint8_t w = (TFT_WIDTH) / 10; - tft.canvas(GRID_OFFSET_X + (GRID_WIDTH - w) / 2, GRID_OFFSET_Y + GRID_HEIGHT + CONTROL_OFFSET - 5, w, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(ui8tostr3rj(x_plot)); - tft_string.trim(); - tft.add_text(tft_string.center(w), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - tft.canvas(GRID_OFFSET_X + GRID_WIDTH + CONTROL_OFFSET + 16 - 24, GRID_OFFSET_Y + (GRID_HEIGHT - MENU_ITEM_HEIGHT) / 2, w, MENU_ITEM_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(ui8tostr3rj(y_plot)); - tft_string.trim(); - tft.add_text(tft_string.center(w), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); - - #if ENABLED(TOUCH_SCREEN) - touch.clear(); - draw_menu_navigation = false; - add_control(GRID_OFFSET_X + GRID_WIDTH + CONTROL_OFFSET, GRID_OFFSET_Y + CONTROL_OFFSET, UBL, (ENCODER_STEPS_PER_MENU_ITEM) * (GRID_MAX_POINTS_X), imgUp); - add_control(GRID_OFFSET_X + GRID_WIDTH + CONTROL_OFFSET, GRID_OFFSET_Y + GRID_HEIGHT - CONTROL_OFFSET - 32, UBL, -(ENCODER_STEPS_PER_MENU_ITEM) * (GRID_MAX_POINTS_X), imgDown); - add_control(GRID_OFFSET_X + CONTROL_OFFSET, GRID_OFFSET_Y + GRID_HEIGHT + CONTROL_OFFSET, UBL, -(ENCODER_STEPS_PER_MENU_ITEM), imgLeft); - add_control(GRID_OFFSET_X + GRID_WIDTH - CONTROL_OFFSET - 32, GRID_OFFSET_Y + GRID_HEIGHT + CONTROL_OFFSET, UBL, ENCODER_STEPS_PER_MENU_ITEM, imgRight); - add_control(320, GRID_OFFSET_Y + GRID_HEIGHT + CONTROL_OFFSET, CLICK, imgLeveling); - add_control(224, TFT_HEIGHT - 34, BACK, imgBack); - #endif - } -#endif // AUTO_BED_LEVELING_UBL - -#if ENABLED(BABYSTEP_ZPROBE_OFFSET) - #include "../../feature/babystep.h" -#endif - -#if HAS_BED_PROBE - #include "../../module/probe.h" -#endif - -#define Z_SELECTION_Z 1 -#define Z_SELECTION_Z_PROBE -1 - -struct { - #if HAS_X_AXIS - xy_int_t xValuePos; - #endif - #if HAS_Y_AXIS - xy_int_t yValuePos; - #endif - #if HAS_Z_AXIS - xy_int_t zValuePos, zTypePos; - int z_selection = Z_SELECTION_Z; - #endif - #if HAS_EXTRUDERS - xy_int_t eValuePos, eNamePos; - uint8_t e_selection = 0; - #endif - xy_int_t stepValuePos; - float currentStepSize = 10.0; - bool blocked = false; - char message[32]; -} motionAxisState; - -#define BTN_WIDTH 64 -#define BTN_HEIGHT 52 -#define X_MARGIN 20 -#define Y_MARGIN 15 -#define Y_OFFSET TERN(HAS_UI_480x272, 28, 34) - -static void quick_feedback() { - #if HAS_CHIRP - ui.chirp(); // Buzz and wait. Is the delay needed for buttons to settle? - #if ALL(HAS_MARLINUI_MENU, HAS_BEEPER) - for (int8_t i = 5; i--;) { buzzer.tick(); delay(2); } - #elif HAS_MARLINUI_MENU - delay(10); - #endif - #endif -} - -#define CUR_STEP_VALUE_WIDTH 104 -static void drawCurStepValue() { - tft_string.set(ftostr52sp(motionAxisState.currentStepSize)); - tft_string.trim(); - tft_string.add(F("mm")); - tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft.add_text(0, 0, COLOR_AXIS_HOMED, tft_string); -} - -#if HAS_Z_AXIS - static void drawCurZSelection() { - tft_string.set('Z'); - tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), FONT_LINE_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft.add_text(0, 0, Z_BTN_COLOR, tft_string); - - tft.queue.sync(); - - tft_string.set(F("Offset")); - tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + Y_OFFSET, tft_string.width(), Y_OFFSET TERN_(HAS_UI_480x272, - 10)); - tft.set_background(COLOR_BACKGROUND); - #if HAS_BED_PROBE - if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) - tft.add_text(0, 0, Z_BTN_COLOR, tft_string); - #endif - } -#endif - -#if HAS_EXTRUDERS - static void drawCurESelection() { - tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); - tft.set_background(COLOR_BACKGROUND); - tft_string.set('E'); - tft_string.add(utostr3(motionAxisState.e_selection)); - tft.add_text(tft_string.center(BTN_WIDTH), 0, E_BTN_COLOR, tft_string); - } -#endif - -static void drawMessage(PGM_P const msg) { - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - tft.canvas(X_MARGIN, TFT_HEIGHT - 2 * MOVE_AXIS_MARGIN_SIZE - BTN_HEIGHT - FONT_LINE_HEIGHT, TFT_WIDTH - X_MARGIN * 2, FONT_LINE_HEIGHT); - #else - tft.canvas(X_MARGIN, TFT_HEIGHT - Y_MARGIN - Y_OFFSET, TFT_HEIGHT / 2, Y_OFFSET); - #endif - tft.set_background(COLOR_BACKGROUND); - tft.add_text(0, 0, COLOR_YELLOW, msg); -} - -static void drawMessage(FSTR_P const fmsg) { drawMessage(FTOP(fmsg)); } - -static void drawAxisValue(const AxisEnum axis) { - const float value = ( - TERN_(HAS_BED_PROBE, axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE ? probe.offset.z :) - ui.manual_move.axis_value(axis) - ); - xy_int_t pos; - uint16_t color; - switch (axis) { - #if HAS_X_AXIS - case X_AXIS: pos = motionAxisState.xValuePos; color = X_BTN_COLOR; break; - #endif - #if HAS_Y_AXIS - case Y_AXIS: pos = motionAxisState.yValuePos; color = Y_BTN_COLOR; break; - #endif - #if HAS_Z_AXIS - case Z_AXIS: pos = motionAxisState.zValuePos; color = Z_BTN_COLOR; break; - #endif - #if HAS_EXTRUDERS - case E_AXIS: pos = motionAxisState.eValuePos; color = E_BTN_COLOR; break; - #endif - default: return; - } - tft.canvas(pos.x, pos.y, BTN_WIDTH + X_MARGIN, BTN_HEIGHT TERN_(HAS_UI_480x272, / 2)); - tft.set_background(COLOR_BACKGROUND); - tft_string.set(ftostr52sp(value)); - tft_string.trim(); - tft.add_text(tft_string.center(BTN_WIDTH + X_MARGIN), 0, color, tft_string); -} - -static void moveAxis(const AxisEnum axis, const int8_t direction) { - quick_feedback(); - - #if HAS_EXTRUDERS - if (axis == E_AXIS && thermalManager.tooColdToExtrude(motionAxisState.e_selection)) { - drawMessage(F("Too cold")); - return; - } - #endif - - const float diff = motionAxisState.currentStepSize * direction; - - #if HAS_BED_PROBE - - if (axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { - #if ENABLED(BABYSTEP_ZPROBE_OFFSET) - const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z; - const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0; - const float bsDiff = planner.mm_per_step[Z_AXIS] * babystep_increment, - new_probe_offset = probe.offset.z + bsDiff, - new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET - , do_probe ? new_probe_offset : hotend_offset[active_extruder].z - bsDiff - , new_probe_offset - ); - if (WITHIN(new_offs, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { - babystep.add_steps(Z_AXIS, babystep_increment); - if (do_probe) - probe.offset.z = new_offs; - else - TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); - drawMessage(NUL_STR); // Clear the error - drawAxisValue(axis); - } - else - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - - #else - // Only change probe.offset.z - probe.offset.z += diff; - if (direction < 0 && current_position.z < Z_PROBE_OFFSET_RANGE_MIN) { - current_position.z = Z_PROBE_OFFSET_RANGE_MIN; - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - else if (direction > 0 && current_position.z > Z_PROBE_OFFSET_RANGE_MAX) { - current_position.z = Z_PROBE_OFFSET_RANGE_MAX; - drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); - } - else - drawMessage(NUL_STR); // Clear the error - - drawAxisValue(axis); - #endif - } - - #endif // HAS_BED_PROBE - - if (!ui.manual_move.processing) { - // Get motion limit from software endstops, if any - float min, max; - soft_endstop.get_manual_axis_limits(axis, min, max); - - // Delta limits XY based on the current offset from center - // This assumes the center is 0,0 - #if ENABLED(DELTA) - if (axis != Z_AXIS && TERN1(HAS_EXTRUDERS, axis != E_AXIS)) { - max = SQRT(sq(float(PRINTABLE_RADIUS)) - sq(current_position[Y_AXIS - axis])); // (Y_AXIS - axis) == the other axis - min = -max; - } - #endif - - // Get the new position - const bool limited = ui.manual_move.apply_diff(axis, diff, min, max); - #if IS_KINEMATIC - UNUSED(limited); - #else - PGM_P const msg = limited ? GET_TEXT(MSG_LCD_SOFT_ENDSTOPS) : NUL_STR; - drawMessage(msg); - #endif - - ui.manual_move.soon(axis OPTARG(MULTI_E_MANUAL, motionAxisState.e_selection)); - } - - drawAxisValue(axis); -} - -#if HAS_EXTRUDERS - static void e_plus() { moveAxis(E_AXIS, 1); } - static void e_minus() { moveAxis(E_AXIS, -1); } -#endif -#if HAS_X_AXIS - static void x_minus() { moveAxis(X_AXIS, -1); } - static void x_plus() { moveAxis(X_AXIS, 1); } -#endif -#if HAS_Y_AXIS - static void y_plus() { moveAxis(Y_AXIS, 1); } - static void y_minus() { moveAxis(Y_AXIS, -1); } -#endif -#if HAS_Z_AXIS - static void z_plus() { moveAxis(Z_AXIS, 1); } - static void z_minus() { moveAxis(Z_AXIS, -1); } -#endif - -#if ENABLED(TOUCH_SCREEN) - #if HAS_EXTRUDERS - static void e_select() { - if (++motionAxisState.e_selection >= EXTRUDERS) - motionAxisState.e_selection = 0; - quick_feedback(); - drawCurESelection(); - drawAxisValue(E_AXIS); - } - #endif - - static void do_home() { - quick_feedback(); - drawMessage(GET_TEXT_F(MSG_LEVEL_BED_HOMING)); - queue.inject_P(G28_STR); - // Disable touch until home is done - touch.disable(); - TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); - TERN_(HAS_X_AXIS, drawAxisValue(X_AXIS)); - TERN_(HAS_Y_AXIS, drawAxisValue(Y_AXIS)); - TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); - } - - static void step_size() { - motionAxisState.currentStepSize = motionAxisState.currentStepSize / 10.0; - if (motionAxisState.currentStepSize < 0.0015) motionAxisState.currentStepSize = 10.0; - quick_feedback(); - drawCurStepValue(); - } -#endif // TOUCH_SCREEN - -#if ALL(HAS_BED_PROBE, TOUCH_SCREEN) - static void z_select() { - motionAxisState.z_selection *= -1; - quick_feedback(); - drawCurZSelection(); - drawAxisValue(Z_AXIS); - } -#endif - -static void disable_steppers() { - quick_feedback(); - queue.inject(F("M84")); -} - -static void drawBtn(const int x, const int y, const char *label, intptr_t data, const MarlinImage img, uint16_t bgColor, const bool enabled=true) { - const uint16_t width = images[imgBtn52Rounded].width, - height = images[imgBtn52Rounded].height; - - if (!enabled) bgColor = COLOR_CONTROL_DISABLED; - - tft.canvas(x, y, width, height); - tft.set_background(COLOR_BACKGROUND); - tft.add_image(0, 0, imgBtn52Rounded, bgColor, COLOR_BACKGROUND, COLOR_DARKGREY); - - // TODO: Make an add_text() taking a font arg - if (label) { - tft_string.set(label); - tft_string.trim(); - tft.add_text(tft_string.center(width), height / 2 - tft_string.font_height() / 2, bgColor, tft_string); - } - else - tft.add_image(0, 0, img, bgColor, COLOR_BACKGROUND, COLOR_DARKGREY); - - TERN_(TOUCH_SCREEN, if (enabled) touch.add_control(BUTTON, x, y, width, height, data)); -} - -void MarlinUI::move_axis_screen() { - // Reset - defer_status_screen(true); - motionAxisState.blocked = false; - TERN_(TOUCH_SCREEN, touch.enable()); - - ui.clear_lcd(); - - TERN_(TOUCH_SCREEN, touch.clear()); - - const bool busy = printingIsActive(); - - // Babysteps during printing? Select babystep for Z probe offset - #if ENABLED(BABYSTEP_ZPROBE_OFFSET) - if (busy) motionAxisState.z_selection = Z_SELECTION_Z_PROBE; - #endif - - #if ENABLED(TFT_COLOR_UI_PORTRAIT) - - int y = MOVE_AXIS_MARGIN_SIZE; - - /************************************************************************** - * 1st: | Button "E+" | Button "Y+" | Button "Z+" | - *************************************************************************/ - - TERN_(HAS_EXTRUDERS, drawBtn(TFT_WIDTH / 6 - BTN_WIDTH / 2, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy)); - TERN_(HAS_Y_AXIS, drawBtn(TFT_WIDTH / 2 - BTN_WIDTH / 2, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy)); - TERN_(HAS_Z_AXIS, drawBtn(TFT_WIDTH * 5 / 6 - BTN_WIDTH / 2, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET))); - - y += BTN_HEIGHT + 4; - - /************************************************************************** - * 2nd: | Label "Ex" (E0, E1, etc.) | Y value | Label "Z" | - *************************************************************************/ - - // Label "Ex" (E0, E1, etc.) - #if HAS_EXTRUDERS - motionAxisState.eNamePos.set(TFT_WIDTH / 6 - BTN_WIDTH / 2, y); - drawCurESelection(); - #if ENABLED(TOUCH_SCREEN) - if (!busy) touch.add_control(BUTTON, motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select); - #endif - #endif - - // Y value - #if HAS_Y_AXIS - motionAxisState.yValuePos.set(TFT_WIDTH / 2 - (BTN_WIDTH + X_MARGIN) / 2, y); - drawAxisValue(Y_AXIS); - #endif - - // Label "Z" - #ifdef HAS_Z_AXIS - motionAxisState.zTypePos.set(TFT_WIDTH * 5 / 6 - BTN_WIDTH / 2, y); - drawCurZSelection(); - #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) - if (!busy) touch.add_control(BUTTON, motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, BTN_WIDTH, FONT_LINE_HEIGHT * 2, (intptr_t)z_select); - #endif - #endif - - y += BTN_HEIGHT + MOVE_AXIS_MARGIN_SIZE; - - /************************************************************************** - * 3rd: | Button "X-" | Button "Homing" | Button "X+" | - *************************************************************************/ - - #if HAS_X_AXIS - drawBtn(TFT_WIDTH / 6 - BTN_WIDTH / 2, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy); - TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy)); - drawBtn(TFT_WIDTH * 5 / 6 - BTN_WIDTH / 2, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy); - #endif - - y += BTN_HEIGHT + 4; - - /************************************************************************** - * 4th: | X value | - *************************************************************************/ - - #ifdef HAS_X_AXIS - motionAxisState.xValuePos.set(TFT_WIDTH / 6 - (BTN_WIDTH + X_MARGIN) / 2, y); - drawAxisValue(X_AXIS); - #endif - - y += BTN_HEIGHT + MOVE_AXIS_MARGIN_SIZE; - - /************************************************************************** - * 5th: | Button "E-" | Button "Y-" | Button "Z-" - *************************************************************************/ - - TERN_(HAS_EXTRUDERS, drawBtn(TFT_WIDTH / 6 - BTN_WIDTH / 2, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy)); - TERN_(HAS_Y_AXIS, drawBtn(TFT_WIDTH / 2 - BTN_WIDTH / 2, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); - TERN_(HAS_Z_AXIS, drawBtn(TFT_WIDTH * 5 / 6 - BTN_WIDTH / 2, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET))); - - y += BTN_HEIGHT + 4; - - /************************************************************************** - * 6th: | Current Ex value | Z value | - *************************************************************************/ - - // Current Ex value - #ifdef HAS_EXTRUDERS - motionAxisState.eValuePos.set(TFT_WIDTH / 6 - (BTN_WIDTH + X_MARGIN) / 2, y); - drawAxisValue(E_AXIS); - #endif - - #ifdef HAS_Z_AXIS - motionAxisState.zValuePos.set(TFT_WIDTH * 5 / 6 - (BTN_WIDTH + X_MARGIN) / 2, y); - drawAxisValue(Z_AXIS); - #endif - - y += BTN_HEIGHT + MOVE_AXIS_MARGIN_SIZE; - - /************************************************************************** - * 7th: | Message - drawMessage(...) function | - *************************************************************************/ - - y += FONT_LINE_HEIGHT + MOVE_AXIS_MARGIN_SIZE; - - /************************************************************************** - * 8th: | Step size | Button "Disable steppers" | Button "Back" | - *************************************************************************/ - - // Step size - motionAxisState.stepValuePos.set(X_MARGIN, y + 12); - if (!busy) { - drawCurStepValue(); - TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y + 12, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); - } - - // Button "Disable steppers" - drawBtn(TFT_WIDTH / 2, y, "off", (intptr_t)disable_steppers, imgCancel, COLOR_WHITE, !busy); - - // Button "Back" - TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH * 5 / 6 - images[imgBack].width / 2, y + 12, BACK, imgBack)); - - #else // !TFT_COLOR_UI_PORTRAIT - - // ROW 1 -> E- Y- CurY Z+ - int x = X_MARGIN, y = Y_MARGIN, spacing = 0; - - TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", (intptr_t)e_plus, imgUp, E_BTN_COLOR, !busy)); - - spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; - x += BTN_WIDTH + spacing; - - TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", (intptr_t)y_plus, imgUp, Y_BTN_COLOR, !busy)); - - x += BTN_WIDTH; - - // Cur Y - #if HAS_Y_AXIS - motionAxisState.yValuePos.set(x + 2, y); - drawAxisValue(Y_AXIS); - #endif - - x += spacing; - #if HAS_Z_AXIS - drawBtn(x, y, "Z+", (intptr_t)z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have baby step - #endif - - // ROW 2 -> "Ex" X- HOME X+ "Z" - y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; - x = X_MARGIN; - spacing = (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; - - #if HAS_EXTRUDERS - motionAxisState.eNamePos.set(x, y); - drawCurESelection(); - TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, (intptr_t)e_select)); - #endif - - x += BTN_WIDTH + spacing; - - TERN_(HAS_X_AXIS, drawBtn(x, y, "X-", (intptr_t)x_minus, imgLeft, X_BTN_COLOR, !busy)); - - x += BTN_WIDTH + spacing; //imgHome is 64x64 - - #if ALL(HAS_X_AXIS, TOUCH_SCREEN) - add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, (intptr_t)do_home, imgHome, !busy); - #endif - - x += BTN_WIDTH + spacing; - const uint16_t xplus_x = x; - - TERN_(HAS_X_AXIS, drawBtn(x, y, "X+", (intptr_t)x_plus, imgRight, X_BTN_COLOR, !busy)); - - x += BTN_WIDTH + spacing; - - #if HAS_Z_AXIS - motionAxisState.zTypePos.set(x, y); - drawCurZSelection(); - #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) - if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, Y_OFFSET * 2, (intptr_t)z_select); - #endif - #endif - - // ROW 3 -> E- CurX Y- Z- - y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; - x = X_MARGIN; - spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; - - #if HAS_EXTRUDERS - drawBtn(x, y, "E-", (intptr_t)e_minus, imgDown, E_BTN_COLOR, !busy); - motionAxisState.eValuePos.set(x, y + BTN_HEIGHT + 2); - drawAxisValue(E_AXIS); - #endif - - // Cur X - #if HAS_X_AXIS - motionAxisState.xValuePos.set(BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4, y - 10); - TERN_(HAS_X_AXIS, drawAxisValue(X_AXIS)); - #endif - - x += BTN_WIDTH + spacing; - - // Cur Y - TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", (intptr_t)y_minus, imgDown, Y_BTN_COLOR, !busy)); - - x += BTN_WIDTH + spacing; - - // Cur Z - #if HAS_Z_AXIS - drawBtn(x, y, "Z-", (intptr_t)z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); //only enabled when not busy or have baby step - motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); - drawAxisValue(Z_AXIS); - #endif - - // ROW 4 -> step_size disable steppers back - y = TFT_HEIGHT - Y_MARGIN - TERN(HAS_UI_480x272, BTN_WIDTH / 2, 32); - x = TFT_WIDTH / 2 - CUR_STEP_VALUE_WIDTH / 2; - motionAxisState.stepValuePos.set(x, y); - if (!busy) { - drawCurStepValue(); - TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, (intptr_t)step_size)); - } - - // Aligned with x+ - drawBtn(xplus_x, TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT, "off", (intptr_t)disable_steppers, imgCancel, COLOR_WHITE, !busy); - - TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); - - #endif // !TFT_COLOR_UI_PORTRAIT -} - -#endif // HAS_UI_480x320 || HAS_UI_480x272 diff --git a/Marlin/src/lcd/tft/ui_480x320.h b/Marlin/src/lcd/tft/ui_480x320.h index d3036d0981..421fe03a18 100644 --- a/Marlin/src/lcd/tft/ui_480x320.h +++ b/Marlin/src/lcd/tft/ui_480x320.h @@ -19,117 +19,285 @@ * along with this program. If not, see . * */ -#pragma once -#define MARLIN_LOGO_FULL_SIZE MarlinLogo480x320x16 +#include "../../inc/MarlinConfigPre.h" -#include "ui_common.h" +// -------------------------------- Core Parameters -------------------------------- -#define TFT_STATUS_TOP_Y 4 -#define TFT_TOP_LINE_Y 4 +#define MENU_TEXT_X 16 +#define MENU_TEXT_Y tft_string.vcenter(MENU_ITEM_HEIGHT) -#define MENU_TEXT_X_OFFSET 16 -#define MENU_TEXT_Y_OFFSET tft_string.vcenter(MENU_ITEM_HEIGHT) +#define MENU_ITEM_ICON_X 5 +#define MENU_ITEM_ICON_Y 5 +#define MENU_ITEM_ICON_SPACE 42 -#define MENU_ITEM_ICON_X 5 -#define MENU_ITEM_ICON_Y 5 -#define MENU_ITEM_ICON_SPACE 42 +#define MENU_ITEM_HEIGHT 43 +#define MENU_LINE_HEIGHT (MENU_ITEM_HEIGHT + 2) +#define MENU_TOP_LINE_Y 4 -#if HAS_UI_480x320 - - #define MENU_ITEM_HEIGHT 43 - #define FONT_LINE_HEIGHT 34 - - #if (TFT_FONT == NOTOSANS) || (TFT_FONT == HELVETICA) - #define FONT_SIZE 19 - #elif TFT_FONT == UNIFONT - #define FONT_SIZE 20 - #endif - -#elif HAS_UI_480x272 - #if TFT_FONT == NOTOSANS - #define FONT_SIZE 16 - #define FONT_LINE_HEIGHT 26 - #elif TFT_FONT == UNIFONT - #define FONT_SIZE 10 - #define FONT_LINE_HEIGHT 24 - #elif TFT_FONT == HELVETICA - #define FONT_SIZE 14 - #define FONT_LINE_HEIGHT 24 - #endif - - #define MENU_ITEM_HEIGHT 36 +#if TFT_FONT == NOTOSANS || TFT_FONT == HELVETICA + #define FONT_SIZE 19 +#elif TFT_FONT == UNIFONT + #define FONT_SIZE 20 #endif -#define MENU_LINE_HEIGHT (MENU_ITEM_HEIGHT + 2) +#define FONT_LINE_HEIGHT 34 -/** - * Status screen - portrait layout: - * - * | FAN E0 BED .. | - 120px - * | Coordinates | - FONT_LINE_HEIGHT - * | Feedrate Flowrate | - 32px - * | SD Settings | - 64px if ENABLED(TOUCHSCREEN), else 0px - * | Print duration time | - 29px - * | Progress bar | - 7px - * | Status message | - FONT_LINE_HEIGHT - * - * Summary with touchscreen: - * - Total height: 252px + 2 * FONT_LINE_HEIGHT (320px if FONT_LINE_HEIGHT is 34px) - * - Rows count: 7 - * - Margins count: 8 - * - * Summary without touchscreen: - * - Total height: 188px + 2 * FONT_LINE_HEIGHT (256px if FONT_LINE_HEIGHT is 34px) - * - Rows count: 6 - * - Margins count: 7 - * - * Status screen - landscape layout: - * - * | FAN E0 BED ... | - 120px - * | Coordinates | - FONT_LINE_HEIGHT - * | SD Flowrate Feedrate Settings | - 44px for TOUCHSCREEN, else 32px - * | Print duration time | - 29px - * | Progress bar | - 7px - * | Status message | - FONT_LINE_HEIGHT - * - * Summary with touchscreen: - * - Total height: 200px (268px if FONT_LINE_HEIGHT is 34px) - * - Rows count: 6 - * - Margins count: 7 - * - * Summary without touchscreen: - * - Total height: 188px + 2 * FONT_LINE_HEIGHT (256px if FONT_LINE_HEIGHT is 34px) - * - Rows count: 6 - * - Margins count: 7 - */ -#if ENABLED(TFT_COLOR_UI_PORTRAIT) - #if ENABLED(TOUCH_SCREEN) - #define STATUS_TOTAL_ROWS_HEIGHT (2 * FONT_LINE_HEIGHT + 120 + 32 + 64 + 29 + 7) - #define STATUS_MARGINS_REGIONS 8 +// --------------------------------------------------------------------------------- - #define MOVE_AXIS_TOTAL_ROWS_HEIGHT (7 * BTN_HEIGHT + FONT_LINE_HEIGHT + 12) - #define MOVE_AXIS_MARGIN_REGIONS 6 - #define MOVE_AXIS_MARGIN_SIZE ((TFT_HEIGHT - MOVE_AXIS_TOTAL_ROWS_HEIGHT) / MOVE_AXIS_MARGIN_REGIONS) +#define VCENTER tft_string.vcenter(FONT_LINE_HEIGHT) + +// MarlinUI::show_bootscreen() +#ifndef BOOTSCREEN_LOGO + #if ENABLED(BOOT_MARLIN_LOGO_SMALL) + #define BOOTSCREEN_LOGO MarlinLogo195x59x16 + #define BOOTSCREEN_LOGO_W 195 + #define BOOTSCREEN_LOGO_H 59 + #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 70) #else - #define STATUS_TOTAL_ROWS_HEIGHT (2 * FONT_LINE_HEIGHT + 120 + 32 + 29 + 7) - #define STATUS_MARGINS_REGIONS 7 + #define BOOTSCREEN_LOGO MarlinLogo480x320x16 + #define BOOTSCREEN_LOGO_W TFT_WIDTH + #define BOOTSCREEN_LOGO_H TFT_HEIGHT + #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 90) #endif - - #define FEEDRATE_X(W) ((TFT_WIDTH - 2 * (W)) / 4) - #define FLOWRATE_X(W) ((3 * TFT_WIDTH - 2 * (W)) / 4) - #define SETTINGS_X (3 * TFT_WIDTH / 4 - 32) - #define SDCARD_X (TFT_WIDTH / 4 - 32) -#else - #define STATUS_TOTAL_ROWS_HEIGHT (2 * FONT_LINE_HEIGHT + 120 + TERN(TOUCH_SCREEN, 44, 32) + 29 + 7) - #define STATUS_MARGINS_REGIONS 7 - - #define FEEDRATE_X(W) (3 * TFT_WIDTH / 8 - (W) / 2) - #define FLOWRATE_X(W) (5 * TFT_WIDTH / 8 - (W) / 2) - #define SETTINGS_X (TFT_WIDTH / 8 - 32) - #define SDCARD_X (7 * TFT_WIDTH / 8 - 32) #endif -#define STATUS_MARGIN_SIZE ((TFT_HEIGHT - STATUS_TOTAL_ROWS_HEIGHT) / STATUS_MARGINS_REGIONS) +#if !defined(BOOTSCREEN_LOGO_X) && !defined(BOOTSCREEN_LOGO_Y) + #define BOOTSCREEN_LOGO_X (TFT_WIDTH - BOOTSCREEN_LOGO_W) / 2 + #define BOOTSCREEN_LOGO_Y (TFT_HEIGHT - BOOTSCREEN_LOGO_H) / 2 +#endif -#include "tft_font.h" +#if !defined(NAVIGATION_PAGE_UP_X) && !defined(NAVIGATION_PAGE_UP_Y) && !defined(NAVIGATION_PAGE_DOWN_X) && !defined(NAVIGATION_PAGE_DOWN_Y) && !defined(NAVIGATION_BACK_X) && !defined(NAVIGATION_BACK_Y) + #define NAVIGATION_PAGE_UP_X 104 + #define NAVIGATION_PAGE_UP_Y TFT_HEIGHT - 34 + #define NAVIGATION_PAGE_DOWN_X 344 + #define NAVIGATION_PAGE_DOWN_Y TFT_HEIGHT - 34 + #define NAVIGATION_BACK_X 224 + #define NAVIGATION_BACK_Y TFT_HEIGHT - 34 +#endif + +#if !defined(BUTTON_DECREASE_X) && !defined(BUTTON_DECREASE_Y) && !defined(BUTTON_INCREASE_X) && !defined(BUTTON_INCREASE_Y) && !defined(BUTTON_CLICK_X) && !defined(BUTTON_CLICK_Y) + #define BUTTON_DECREASE_X 64 + #define BUTTON_DECREASE_Y TFT_HEIGHT - 64 + #define BUTTON_INCREASE_X 352 + #define BUTTON_INCREASE_Y TFT_HEIGHT - 64 + #define BUTTON_CLICK_X 208 + #define BUTTON_CLICK_Y TFT_HEIGHT - 64 +#endif + +#if !defined(BUTTON_CANCEL_X) && !defined(BUTTON_CANCEL_Y) && !defined(BUTTON_CONFIRM_X) && !defined(BUTTON_CONFIRM_Y) + #define BUTTON_CANCEL_X 88 + #define BUTTON_CANCEL_Y TFT_HEIGHT - 64 + #define BUTTON_CONFIRM_X 328 + #define BUTTON_CONFIRM_Y TFT_HEIGHT - 64 +#endif + +// MarlinUI::draw_kill_screen() +#if !defined(KILL_SCREEN_STATUS_Y) && !defined(KILL_SCREEN_HALTED_Y) && !defined(KILL_SCREEN_RESET_Y) + #define KILL_SCREEN_STATUS_Y 94 + #define KILL_SCREEN_HALTED_Y 184 + #define KILL_SCREEN_RESET_Y 229 +#endif + +// draw_heater_status() and draw_fan_status() +#if !defined(TEMP_FAN_CONTROL_W) && !defined(TEMP_FAN_CONTROL_H) + #define TEMP_FAN_CONTROL_W 80 + #define TEMP_FAN_CONTROL_H 120 +#endif +#if !defined(TEMP_ICON_X) && !defined(TEMP_ICON_Y) + #define TEMP_ICON_X 8 + #define TEMP_ICON_Y 28 +#endif +#if !defined(FAN_ICON_X) && !defined(FAN_ICON_Y) + #define FAN_ICON_X 8 + #define FAN_ICON_Y 20 +#endif + +#if !defined(TEMP_CURRENT_TEXT_X) && !defined(TEMP_CURRENT_TEXT_Y) && !defined(TEMP_TARGET_TEXT_X) && !defined(TEMP_TARGET_TEXT_Y) + #define TEMP_CURRENT_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 2 + #define TEMP_CURRENT_TEXT_Y 80 + VCENTER + #define TEMP_TARGET_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 2 + #define TEMP_TARGET_TEXT_Y 6 + VCENTER +#endif + +#if !defined(FAN_TEXT_X) && !defined(FAN_TEXT_Y) + #define FAN_TEXT_X tft_string.center(TEMP_FAN_CONTROL_W) + 6 + #define FAN_TEXT_Y 80 + VCENTER +#endif + +// MarlinUI::draw_status_screen() +#if !defined(MAX_ITEMS) && !defined(ITEM_X) && !defined(ITEM_Y) + #define MAX_ITEMS 5 + #define ITEM_X(N) (TFT_WIDTH / _MIN(ITEMS_COUNT, MAX_ITEMS) - TEMP_FAN_CONTROL_W) / 2 + (TFT_WIDTH * N / _MIN(ITEMS_COUNT, MAX_ITEMS)) + #define ITEM_Y 4 +#endif + +#if !defined(COORDINATES_W) && !defined(COORDINATES_H) && !defined(COORDINATES_X) && !defined(COORDINATES_Y) + #define COORDINATES_W TFT_WIDTH - 8 + #define COORDINATES_H FONT_LINE_HEIGHT + #define COORDINATES_X 4 + #define COORDINATES_Y 132 +#endif + +#if ENABLED(LCD_SHOW_E_TOTAL) + #if !defined(E_MARK_X) && !defined(E_MARK_Y) && !defined(E_VALUE_X) && !defined(E_VALUE_Y) + #define E_MARK_X 16 + #define E_MARK_Y VCENTER + #define E_VALUE_X 192 - tft_string.width() + #define E_VALUE_Y VCENTER + #endif +#else + #if !defined(X_MARK_X) && !defined(X_MARK_Y) && !defined(X_VALUE_X) && !defined(X_VALUE_Y) + #define X_MARK_X 16 + #define X_MARK_Y VCENTER + #define X_VALUE_X 102 - tft_string.width() + #define X_VALUE_Y VCENTER + #endif + + #if !defined(Y_MARK_X) && !defined(Y_MARK_Y) && !defined(Y_VALUE_X) && !defined(Y_VALUE_Y) + #define Y_MARK_X 192 + #define Y_MARK_Y VCENTER + #define Y_VALUE_X 280 - tft_string.width() + #define Y_VALUE_Y VCENTER + #endif +#endif + +#if !defined(Z_MARK_X) && !defined(Z_MARK_Y) && !defined(Z_VALUE_X) && !defined(Z_VALUE_Y) + #define Z_MARK_X 330 + #define Z_MARK_Y VCENTER + #define Z_VALUE_X 455 - tft_string.width() + #define Z_VALUE_Y VCENTER + #define Z_VALUE_OFFSET 32 +#endif + +#if !defined(FEEDRATE_W) && !defined(FEEDRATE_H) && !defined(FEEDRATE_X) && !defined(FEEDRATE_Y) + #define FEEDRATE_W 120 + #define FEEDRATE_H 32 + #define FEEDRATE_X 96 + #define FEEDRATE_Y 180 +#endif +#if !defined(FEEDRATE_ICON_X) && !defined(FEEDRATE_ICON_Y) && !defined(FEEDRATE_ICON_Y) && !defined(FEEDRATE_TEXT_Y) + #define FEEDRATE_ICON_X 0 + #define FEEDRATE_ICON_Y 0 + #define FEEDRATE_TEXT_X 36 + #define FEEDRATE_TEXT_Y tft_string.vcenter(30) +#endif + +#if !defined(FLOWRATE_W) && !defined(FLOWRATE_H) && !defined(FLOWRATE_X) && !defined(FLOWRATE_Y) + #define FLOWRATE_W 120 + #define FLOWRATE_H 32 + #define FLOWRATE_X 284 + #define FLOWRATE_Y 180 +#endif +#if !defined(FLOWRATE_ICON_X) && !defined(FLOWRATE_ICON_Y) && !defined(FLOWRATE_TEXT_X) && !defined(FLOWRATE_TEXT_Y) + #define FLOWRATE_ICON_X 0 + #define FLOWRATE_ICON_Y 0 + #define FLOWRATE_TEXT_X 36 + #define FLOWRATE_TEXT_Y tft_string.vcenter(30) +#endif + +#if !defined(MENU_ICON_X) && !defined(MENU_ICON_Y) + #define MENU_ICON_X 404 + #define MENU_ICON_Y 180 +#endif +#if !defined(SDCARD_ICON_X) && !defined(SDCARD_ICON_Y) + #define SDCARD_ICON_X 12 + #define SDCARD_ICON_Y 180 +#endif + +#if !defined(ELAPSED_TIME_W) && !defined(ELAPSED_TIME_H) && !defined(ELAPSED_TIME_X) && !defined(ELAPSED_TIME_Y) + #if ALL(SHOW_ELAPSED_TIME, SHOW_REMAINING_TIME) + #define ELAPSED_TIME_W 164 + #define ELAPSED_TIME_X (TFT_WIDTH / 2) - ELAPSED_TIME_W + #elif ENABLED(SHOW_ELAPSED_TIME) + #define ELAPSED_TIME_W 288 + #define ELAPSED_TIME_X (TFT_WIDTH - ELAPSED_TIME_W) / 2 + #endif + + #define ELAPSED_TIME_H 29 + #define ELAPSED_TIME_Y 224 +#endif + +#if !defined(REMAINING_TIME_W) && !defined(REMAINING_TIME_H) && !defined(REMAINING_TIME_X) && !defined(REMAINING_TIME_Y) + #if ALL(SHOW_ELAPSED_TIME, SHOW_REMAINING_TIME) + #define REMAINING_TIME_W 164 + #define REMAINING_TIME_X (TFT_WIDTH / 2) + #elif ENABLED(SHOW_REMAINING_TIME) + #define REMAINING_TIME_W 288 + #define REMAINING_TIME_X (TFT_WIDTH - REMAINING_TIME_W) / 2 + #endif + + #define REMAINING_TIME_H 29 + #define REMAINING_TIME_Y 224 +#endif + +#if !defined(ELAPSED_TIME_IMAGE_X) && !defined(ELAPSED_TIME_IMAGE_Y) && !defined(ELAPSED_TIME_TEXT_X) && !defined(ELAPSED_TIME_TEXT_Y) + #define ELAPSED_TIME_IMAGE_X tft_string.center(ELAPSED_TIME_W) - 18 + #define ELAPSED_TIME_IMAGE_Y 0 + #define ELAPSED_TIME_TEXT_X tft_string.center(ELAPSED_TIME_W) + 18 + #define ELAPSED_TIME_TEXT_Y tft_string.vcenter(29) +#endif + +#if !defined(REMAINING_TIME_IMAGE_X) && !defined(REMAINING_TIME_IMAGE_Y) && !defined(REMAINING_TIME_TEXT_X) && !defined(REMAINING_TIME_TEXT_Y) + #define REMAINING_TIME_IMAGE_X tft_string.center(ELAPSED_TIME_W) - 18 + #define REMAINING_TIME_IMAGE_Y 0 + #define REMAINING_TIME_TEXT_X tft_string.center(ELAPSED_TIME_W) + 18 + #define REMAINING_TIME_TEXT_Y tft_string.vcenter(29) +#endif + +#if !defined(PROGRESS_BAR_W) && !defined(PROGRESS_BAR_H) && !defined(PROGRESS_BAR_X) && !defined(PROGRESS_BAR_Y) + #define PROGRESS_BAR_W TFT_WIDTH - 8 + #define PROGRESS_BAR_H 12 + #define PROGRESS_BAR_X 4 + #define PROGRESS_BAR_Y 262 +#endif + +#if !defined(STATUS_MESSAGE_W) && !defined(STATUS_MESSAGE_H) && !defined(STATUS_MESSAGE_X) && !defined(STATUS_MESSAGE_Y) + #define STATUS_MESSAGE_W TFT_WIDTH + #define STATUS_MESSAGE_H FONT_LINE_HEIGHT + #define STATUS_MESSAGE_X 0 + #define STATUS_MESSAGE_Y 280 +#endif + +#if !defined(STATUS_MESSAGE_TEXT_X) && !defined(STATUS_MESSAGE_TEXT_Y) + #define STATUS_MESSAGE_TEXT_X tft_string.center(STATUS_MESSAGE_W) + #define STATUS_MESSAGE_TEXT_Y VCENTER +#endif + +// MenuEditItemBase::draw_edit_screen() +#if !defined(SLIDER_W) && !defined(SLIDER_Y) + #define SLIDER_W 336 + #define SLIDER_Y 186 +#endif + +#if ENABLED(AUTO_BED_LEVELING_UBL) + #if !defined(UBL_X_LABEL_X) && !defined(UBL_X_TEXT_X) && !defined(UBL_Y_LABEL_X) && !defined(UBL_Y_TEXT_X) + #define UBL_X_LABEL_X (TFT_WIDTH / 2 - 120) + #define UBL_X_TEXT_X (TFT_WIDTH / 2 - 16) - tft_string.width() + #define UBL_Y_LABEL_X (TFT_WIDTH / 2 + 16) + #define UBL_Y_TEXT_X (TFT_WIDTH / 2 + 120) - tft_string.width() + #endif + + // MarlinUI::ubl_plot() + #if !defined(UBL_GRID_W) && !defined(UBL_GRID_H) && !defined(UBL_GRID_X) && !defined(UBL_GRID_Y) && !defined(UBL_CONTROL_OFFSET) + #define UBL_GRID_W 192 + #define UBL_GRID_H 192 + #define UBL_GRID_X 8 + #define UBL_GRID_Y 8 + #define UBL_CONTROL_OFFSET 16 + #endif + + #if !defined(UBL_COORDINATES_W) && !defined(UBL_COORDINATES_X) && !defined(UBL_X_COORDINATE_Y) && !defined(UBL_Y_COORDINATE_Y) && !defined(UBL_Z_COORDINATE_Y) + #define UBL_COORDINATES_W 130 + #define UBL_COORDINATES_X 310 + + #define UBL_X_COORDINATE_Y UBL_GRID_Y + (UBL_GRID_H - MENU_ITEM_HEIGHT) / 2 - MENU_ITEM_HEIGHT + #define UBL_Y_COORDINATE_Y UBL_GRID_Y + (UBL_GRID_H - MENU_ITEM_HEIGHT) / 2 + #define UBL_Z_COORDINATE_Y UBL_GRID_Y + (UBL_GRID_H - MENU_ITEM_HEIGHT) / 2 + MENU_ITEM_HEIGHT + #endif + + #if !defined(UBL_ACTION_X) && !defined(UBL_ACTION_Y) + #define UBL_ACTION_X UBL_COORDINATES_X + #define UBL_ACTION_Y UBL_GRID_Y + UBL_GRID_H + UBL_CONTROL_OFFSET + #endif +#endif diff --git a/Marlin/src/lcd/tft/ui_color_ui.cpp b/Marlin/src/lcd/tft/ui_color_ui.cpp new file mode 100644 index 0000000000..d2fc08a09c --- /dev/null +++ b/Marlin/src/lcd/tft/ui_color_ui.cpp @@ -0,0 +1,588 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../inc/MarlinConfigPre.h" + +#if ENABLED(TFT_COLOR_UI) + +#include "ui_common.h" + +#include "../marlinui.h" +#include "../menu/menu.h" +#include "../../libs/numtostr.h" + +#include "../../sd/cardreader.h" +#include "../../module/temperature.h" +#include "../../module/printcounter.h" +#include "../../module/planner.h" +#include "../../module/motion.h" + +#if DISABLED(LCD_PROGRESS_BAR) && ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) + #include "../../feature/filwidth.h" + #include "../../gcode/parser.h" +#endif + +#if ENABLED(AUTO_BED_LEVELING_UBL) + #include "../../feature/bedlevel/bedlevel.h" +#endif + +void MarlinUI::tft_idle() { + #if ENABLED(TOUCH_SCREEN) + if (TERN0(HAS_TOUCH_SLEEP, lcd_sleep_task())) return; + if (draw_menu_navigation) { + add_control(NAVIGATION_PAGE_UP_X, NAVIGATION_PAGE_UP_Y, PAGE_UP, imgPageUp, encoderTopLine > 0); + add_control(NAVIGATION_PAGE_DOWN_X, NAVIGATION_PAGE_DOWN_Y, PAGE_DOWN, imgPageDown, encoderTopLine + LCD_HEIGHT < screen_items); + add_control(NAVIGATION_BACK_X, NAVIGATION_BACK_Y, BACK, imgBack); + draw_menu_navigation = false; + } + #endif + + tft.queue.async(); + + TERN_(TOUCH_SCREEN, if (tft.queue.is_empty()) touch.idle()); // Touch driver is not DMA-aware, so only check for touch controls after screen drawing is completed +} + +#if ENABLED(SHOW_BOOTSCREEN) + + void MarlinUI::show_bootscreen() { + tft.queue.reset(); + + tft.canvas(0, 0, TFT_WIDTH, TFT_HEIGHT); + TERN_(BOOT_MARLIN_LOGO_SMALL, tft.set_background(COLOR_BACKGROUND)); + tft.add_image(BOOTSCREEN_LOGO_X, BOOTSCREEN_LOGO_Y, imgBootScreen); + #ifdef WEBSITE_URL + tft_string.set(WEBSITE_URL); + tft.add_text(tft_string.center(TFT_WIDTH), BOOTSCREEN_SITE_URL_Y, COLOR_WEBSITE_URL, tft_string); + #endif + + tft.queue.sync(); + } + + void MarlinUI::bootscreen_completion(const millis_t sofar) { + if ((BOOTSCREEN_TIMEOUT) > sofar) safe_delay((BOOTSCREEN_TIMEOUT) - sofar); + clear_lcd(); + } +#endif + +void MarlinUI::draw_kill_screen() { + tft.queue.reset(); + tft.fill(0, 0, TFT_WIDTH, TFT_HEIGHT, COLOR_KILL_SCREEN_BG); + + text_line(KILL_SCREEN_STATUS_Y, COLOR_KILL_SCREEN_BG); + tft_string.set(status_message); + tft_string.trim(); + tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); + + text_line(KILL_SCREEN_HALTED_Y, COLOR_KILL_SCREEN_BG); + tft_string.set(GET_TEXT(MSG_HALTED)); + tft_string.trim(); + tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); + + text_line(KILL_SCREEN_RESET_Y, COLOR_KILL_SCREEN_BG); + tft_string.set(GET_TEXT(MSG_PLEASE_RESET)); + tft_string.trim(); + tft.add_text(tft_string.center(TFT_WIDTH), 0, COLOR_MENU_TEXT, tft_string); + + tft.queue.sync(); +} + +void draw_heater_status(uint16_t x, uint16_t y, const int8_t heater) { + MarlinImage image = imgHotEnd; + celsius_t currentTemperature, targetTemperature; + + if (heater >= 0) { // HotEnd + #if HAS_EXTRUDERS + currentTemperature = thermalManager.wholeDegHotend(heater); + targetTemperature = thermalManager.degTargetHotend(heater); + #else + return; + #endif + } + #if HAS_HEATED_BED + else if (heater == H_BED) { + currentTemperature = thermalManager.wholeDegBed(); + targetTemperature = thermalManager.degTargetBed(); + } + #endif + #if HAS_TEMP_CHAMBER + else if (heater == H_CHAMBER) { + currentTemperature = thermalManager.wholeDegChamber(); + #if HAS_HEATED_CHAMBER + targetTemperature = thermalManager.degTargetChamber(); + #else + targetTemperature = ABSOLUTE_ZERO; + #endif + } + #endif + #if HAS_TEMP_COOLER + else if (heater == H_COOLER) { + currentTemperature = thermalManager.wholeDegCooler(); + targetTemperature = TERN(HAS_COOLER, thermalManager.degTargetCooler(), ABSOLUTE_ZERO); + } + #endif + else return; + + TERN_(TOUCH_SCREEN, if (targetTemperature >= 0) touch.add_control(HEATER, x, y, TEMP_FAN_CONTROL_W, TEMP_FAN_CONTROL_H, heater)); + tft.canvas(x, y, TEMP_FAN_CONTROL_W, TEMP_FAN_CONTROL_H); + tft.set_background(COLOR_BACKGROUND); + + uint16_t color = currentTemperature < 0 ? COLOR_INACTIVE : COLOR_COLD; + + if (heater >= 0) { // HotEnd + if (currentTemperature >= 50) color = COLOR_HOTEND; + } + #if HAS_HEATED_BED + else if (heater == H_BED) { + if (currentTemperature >= 50) color = COLOR_HEATED_BED; + image = targetTemperature > 0 ? imgBedHeated : imgBed; + } + #endif + #if HAS_TEMP_CHAMBER + else if (heater == H_CHAMBER) { + if (currentTemperature >= 50) color = COLOR_CHAMBER; + image = targetTemperature > 0 ? imgChamberHeated : imgChamber; + } + #endif + #if HAS_TEMP_COOLER + else if (heater == H_COOLER) { + if (currentTemperature <= 26) color = COLOR_COLD; + if (currentTemperature > 26) color = COLOR_RED; + image = targetTemperature > 26 ? imgCoolerHot : imgCooler; + } + #endif + + tft.add_image(TEMP_ICON_X, TEMP_ICON_Y, image, color); + + tft_string.set(i16tostr3rj(currentTemperature)); + tft_string.add(LCD_STR_DEGREE); + tft_string.trim(); + tft.add_text(TEMP_CURRENT_TEXT_X, TEMP_CURRENT_TEXT_Y, color, tft_string); + + if (targetTemperature >= 0) { + tft_string.set(i16tostr3rj(targetTemperature)); + tft_string.add(LCD_STR_DEGREE); + tft_string.trim(); + tft.add_text(TEMP_TARGET_TEXT_X, TEMP_TARGET_TEXT_Y, color, tft_string); + } +} + +void draw_fan_status(uint16_t x, uint16_t y, const bool blink) { + TERN_(TOUCH_SCREEN, touch.add_control(FAN, x, y, TEMP_FAN_CONTROL_W, TEMP_FAN_CONTROL_H)); + tft.canvas(x, y, TEMP_FAN_CONTROL_W, TEMP_FAN_CONTROL_H); + tft.set_background(COLOR_BACKGROUND); + + uint8_t fanSpeed = thermalManager.fan_speed[0]; + MarlinImage image; + + if (fanSpeed >= 127) + image = blink ? imgFanFast1 : imgFanFast0; + else if (fanSpeed > 0) + image = blink ? imgFanSlow1 : imgFanSlow0; + else + image = imgFanIdle; + + tft.add_image(FAN_ICON_X, FAN_ICON_Y, image, COLOR_FAN); + + tft_string.set(ui8tostr4pctrj(thermalManager.fan_speed[0])); + tft_string.trim(); + tft.add_text(FAN_TEXT_X, FAN_TEXT_Y, COLOR_FAN, tft_string); +} + +void MarlinUI::draw_status_screen() { + const bool blink = get_blink(); + TERN_(TOUCH_SCREEN, touch.clear()); + + // Statuses of heaters and fans + for (uint16_t i = 0; i < _MIN(ITEMS_COUNT, MAX_ITEMS); i++) { + switch (i) { + #if HAS_EXTRUDERS + case ITEM_E0: draw_heater_status(ITEM_X(i), ITEM_Y, H_E0); break; + #endif + #if HAS_MULTI_HOTEND + case ITEM_E1: draw_heater_status(ITEM_X(i), ITEM_Y, H_E1); break; + #endif + #if HOTENDS > 2 + case ITEM_E2: draw_heater_status(ITEM_X(i), ITEM_Y, H_E2); break; + #endif + #if HAS_HEATED_BED + case ITEM_BED: draw_heater_status(ITEM_X(i), ITEM_Y, H_BED); break; + #endif + #if HAS_TEMP_CHAMBER + case ITEM_CHAMBER: draw_heater_status(ITEM_X(i), ITEM_Y, H_CHAMBER); break; + #endif + #if HAS_TEMP_COOLER + case ITEM_COOLER: draw_heater_status(ITEM_X(i), ITEM_Y, H_COOLER); break; + #endif + #if HAS_FAN + case ITEM_FAN: draw_fan_status(ITEM_X(i), ITEM_Y, blink); break; + #endif + } + } + + // Coordinates + #if ENABLED(MOVE_AXIS_SCREEN) + TERN_(TOUCH_SCREEN, touch.add_control(MENU_SCREEN, COORDINATES_X, COORDINATES_Y, COORDINATES_W, COORDINATES_H, (intptr_t) ui.move_axis_screen)); + #endif + + tft.canvas(COORDINATES_X, COORDINATES_Y, COORDINATES_W, COORDINATES_H); + tft.set_background(COLOR_BACKGROUND); + tft.add_rectangle(0, 0, COORDINATES_W, COORDINATES_H, COLOR_AXIS_HOMED); + + #if ENABLED(HAS_X_AXIS) && defined(X_MARK_X) && defined(X_MARK_Y) && defined(X_VALUE_X) && defined(X_VALUE_Y) + tft.add_text(X_MARK_X, X_MARK_Y, COLOR_AXIS_HOMED , "X"); + const bool nhx = axis_should_home(X_AXIS); + tft_string.set(blink && nhx ? "?" : ftostr4sign(LOGICAL_X_POSITION(current_position.x))); + tft.add_text(X_VALUE_X, X_VALUE_Y, nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + #endif + + #if ENABLED(HAS_Y_AXIS) && defined(Y_MARK_X) && defined(Y_MARK_Y) && defined(Y_VALUE_X) && defined(Y_VALUE_Y) + tft.add_text(Y_MARK_X, Y_MARK_Y, COLOR_AXIS_HOMED , "Y"); + const bool nhy = axis_should_home(Y_AXIS); + tft_string.set(blink && nhy ? "?" : ftostr4sign(LOGICAL_Y_POSITION(current_position.y))); + tft.add_text(Y_VALUE_X, Y_VALUE_Y, nhy ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + #endif + + #if ENABLED(HAS_Z_AXIS) && defined(Z_MARK_X) && defined(Z_MARK_Y) && defined(Z_VALUE_X) && defined(Z_VALUE_Y) && defined(Z_VALUE_OFFSET) + tft.add_text(Z_MARK_X, Z_MARK_Y, COLOR_AXIS_HOMED , "Z"); + uint16_t offset = Z_VALUE_OFFSET; + const bool nhz = axis_should_home(Z_AXIS); + if (blink && nhz) + tft_string.set('?'); + else { + const float z = LOGICAL_Z_POSITION(current_position.z); + tft_string.set(ftostr52sp((int16_t)z)); + tft_string.rtrim(); + offset += tft_string.width(); + + tft_string.set(ftostr52sp(z)); + offset -= tft_string.width(); + } + tft.add_text(Z_VALUE_X - offset, Z_VALUE_Y, nhz ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); + #endif + + + #if ENABLED(LCD_SHOW_E_TOTAL) && defined(E_MARK_X) && defined(E_MARK_Y) && defined(E_VALUE_X) && defined(E_VALUE_Y) + tft.add_text(E_MARK_X, E_MARK_Y, COLOR_AXIS_HOMED, "E"); + if (printingIsActive()) { + const uint8_t escale = e_move_accumulator >= 10000.0f ? 10 : 1; // After 10m switch to cm to fit into 4 digits output of ftostr4sign() + tft_string.set(ftostr4sign(e_move_accumulator / escale)); + const uint16_t e_value_x = E_VALUE_X; + tft_string.add(escale == 10 ? " cm" : " mm"); + tft.add_text(e_value_x, E_VALUE_Y, COLOR_AXIS_HOMED, tft_string); + } + else { + tft_string.set("--"); + tft.add_text(E_VALUE_X, E_VALUE_Y, COLOR_AXIS_HOMED, tft_string); + } + #endif + + // Feed rate + tft.canvas(FEEDRATE_X, FEEDRATE_Y, FEEDRATE_W, FEEDRATE_H); + tft.set_background(COLOR_BACKGROUND); + uint16_t color = feedrate_percentage == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; + tft.add_image(0, 0, imgFeedRate, color); + tft_string.set(i16tostr3rj(feedrate_percentage)); + tft_string.add('%'); + tft.add_text(36, tft_string.vcenter(30), color , tft_string); + TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, FEEDRATE_X, FEEDRATE_Y, FEEDRATE_W, FEEDRATE_H)); + + #if HAS_EXTRUDERS + // Flow rate + tft.canvas(FLOWRATE_X, FLOWRATE_Y, FLOWRATE_W, FLOWRATE_H); + tft.set_background(COLOR_BACKGROUND); + color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; + tft.add_image(FLOWRATE_ICON_X, FLOWRATE_ICON_X, imgFlowRate, color); + tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); + tft_string.add('%'); + tft.add_text(FLOWRATE_TEXT_X, FLOWRATE_TEXT_Y, color , tft_string); + TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, FLOWRATE_X, FLOWRATE_Y, FLOWRATE_W, FLOWRATE_H, active_extruder)); + #endif + + #if ENABLED(TOUCH_SCREEN) + add_control(MENU_ICON_X, MENU_ICON_Y, menu_main, imgSettings); + #if ENABLED(SDSUPPORT) + const bool cm = card.isMounted(), pa = printingIsActive(); + if (cm && pa) + add_control(SDCARD_ICON_X, SDCARD_ICON_Y, STOP, imgCancel, true, COLOR_CONTROL_CANCEL); + else + add_control(SDCARD_ICON_X, SDCARD_ICON_Y, menu_media, imgSD, cm && !pa, COLOR_CONTROL_ENABLED, COLOR_CONTROL_DISABLED); + #endif + #endif + + #if ANY(SHOW_ELAPSED_TIME, SHOW_REMAINING_TIME) + char buffer[22]; + duration_t elapsed = print_job_timer.duration(); + #endif + + const progress_t progress = TERN(HAS_PRINT_PROGRESS_PERMYRIAD, get_progress_permyriad, get_progress_percent)(); + + #if ENABLED(SHOW_ELAPSED_TIME) + elapsed.toDigital(buffer); + tft.canvas(ELAPSED_TIME_X, ELAPSED_TIME_Y, ELAPSED_TIME_W, ELAPSED_TIME_H); + tft.set_background(COLOR_BACKGROUND); + tft_string.set(buffer); + #if defined(ELAPSED_TIME_IMAGE_X) && defined(ELAPSED_TIME_IMAGE_Y) + tft.add_image(ELAPSED_TIME_IMAGE_X, ELAPSED_TIME_IMAGE_Y, imgTimeElapsed, COLOR_PRINT_TIME); + #endif + tft.add_text(ELAPSED_TIME_TEXT_X, ELAPSED_TIME_TEXT_Y, COLOR_PRINT_TIME, tft_string); + #endif + + #if ENABLED(SHOW_REMAINING_TIME) + // Get the estimate, first from M73 + uint32_t estimate_remaining = (0 + #if ALL(SET_PROGRESS_MANUALLY, SET_REMAINING_TIME) + + get_remaining_time() + #endif + ); + // If no M73 estimate is available but we have progress data, calculate time remaining assuming time elapsed is linear with progress + if (!estimate_remaining && progress > 0) + estimate_remaining = elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress; + + // Generate estimate string + if (!estimate_remaining) + tft_string.set("-"); + else { + duration_t estimation = estimate_remaining; + estimation.toString(buffer); + tft_string.set(buffer); + } + + tft.canvas(REMAINING_TIME_X, REMAINING_TIME_Y, REMAINING_TIME_W, REMAINING_TIME_H); + tft.set_background(COLOR_BACKGROUND); + tft_string.set(buffer); + color = printingIsActive() ? COLOR_PRINT_TIME : COLOR_INACTIVE; + #if defined(REMAINING_TIME_IMAGE_X) && defined(REMAINING_TIME_IMAGE_Y) + tft.add_image(REMAINING_TIME_IMAGE_X, REMAINING_TIME_IMAGE_Y, imgTimeRemaining, color); + #endif + tft.add_text(REMAINING_TIME_TEXT_X, REMAINING_TIME_TEXT_Y, color, tft_string); + #endif + + // Progress bar + // TODO: print percentage text for SHOW_PROGRESS_PERCENT + tft.canvas(PROGRESS_BAR_X, PROGRESS_BAR_Y, PROGRESS_BAR_W, PROGRESS_BAR_H); + tft.set_background(COLOR_PROGRESS_BG); + tft.add_rectangle(0, 0, PROGRESS_BAR_W, PROGRESS_BAR_H, COLOR_PROGRESS_FRAME); + if (progress) + tft.add_bar(1, 1, ((PROGRESS_BAR_W - 2) * progress / (PROGRESS_SCALE)) / 100, 7, COLOR_PROGRESS_BAR); + + // Status message + tft.canvas(STATUS_MESSAGE_X, STATUS_MESSAGE_Y, STATUS_MESSAGE_W, STATUS_MESSAGE_H); + tft.set_background(COLOR_BACKGROUND); + tft_string.set(status_message); + tft_string.trim(); + tft.add_text(STATUS_MESSAGE_TEXT_X, STATUS_MESSAGE_TEXT_Y, COLOR_STATUS_MESSAGE, tft_string); +} + +// Low-level draw_edit_screen can be used to draw an edit screen from anyplace +void MenuEditItemBase::draw_edit_screen(FSTR_P const fstr, const char * const value/*=nullptr*/) { + ui.encoder_direction_normal(); + TERN_(TOUCH_SCREEN, touch.clear()); + + uint16_t line = 1; + + menu_line(line++); + tft_string.set(fstr, itemIndex, itemStringC, itemStringF); + tft_string.trim(); + tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); + + TERN_(AUTO_BED_LEVELING_UBL, if (ui.external_control) line++); // ftostr52() will overwrite *value so *value has to be displayed first + + menu_line(line); + tft_string.set(value); + tft_string.trim(); + tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y, COLOR_MENU_VALUE, tft_string); + + #if ENABLED(AUTO_BED_LEVELING_UBL) + if (ui.external_control) { + menu_line(line - 1); + + tft_string.set(X_LBL); + tft.add_text(UBL_X_LABEL_X, MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); + tft_string.set(ftostr52(LOGICAL_X_POSITION(current_position.x))); + tft_string.trim(); + tft.add_text(UBL_X_TEXT_X, MENU_TEXT_Y, COLOR_MENU_VALUE, tft_string); + + tft_string.set(Y_LBL); + tft.add_text(UBL_Y_LABEL_X, MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); + tft_string.set(ftostr52(LOGICAL_X_POSITION(current_position.y))); + tft_string.trim(); + tft.add_text(UBL_Y_TEXT_X, MENU_TEXT_Y, COLOR_MENU_VALUE, tft_string); + } + #endif + + if (ui.can_show_slider()) { + tft.canvas((TFT_WIDTH - SLIDER_W) / 2, SLIDER_Y, SLIDER_W, 16); + tft.set_background(COLOR_BACKGROUND); + + int16_t position = (SLIDER_W - 2) * ui.encoderPosition / maxEditValue; + tft.add_bar(0, 7, 1, 2, ui.encoderPosition == 0 ? COLOR_SLIDER_INACTIVE : COLOR_SLIDER); + tft.add_bar(1, 6, position, 4, COLOR_SLIDER); + tft.add_bar(position + 1, 6, SLIDER_W - 2 - position, 4, COLOR_SLIDER_INACTIVE); + tft.add_bar(SLIDER_W - 1, 7, 1, 2, int32_t(ui.encoderPosition) == maxEditValue ? COLOR_SLIDER : COLOR_SLIDER_INACTIVE); + + #if ENABLED(TOUCH_SCREEN) + tft.add_image((SLIDER_W - 8) * ui.encoderPosition / maxEditValue, 0, imgSlider, COLOR_SLIDER); + touch.add_control(SLIDER, (TFT_WIDTH - SLIDER_W) / 2, SLIDER_Y - 8, SLIDER_W, 32, maxEditValue); + #endif + } + + tft.draw_edit_screen_buttons(); +} + +void TFT::draw_edit_screen_buttons() { + #if ENABLED(TOUCH_SCREEN) + add_control(BUTTON_DECREASE_X, BUTTON_DECREASE_Y, DECREASE, imgDecrease); + add_control(BUTTON_INCREASE_X, BUTTON_INCREASE_Y, INCREASE, imgIncrease); + add_control(BUTTON_CLICK_X, BUTTON_CLICK_Y, CLICK, imgConfirm); + #endif +} + +// The Select Screen presents a prompt and two "buttons" +void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, const bool yesno, FSTR_P const pref, const char * const string/*=nullptr*/, FSTR_P const suff/*=nullptr*/) { + uint16_t line = 1; + + if (!string) line++; + + menu_line(line++); + tft_string.set(pref); + tft_string.trim(); + tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); + + if (string) { + menu_line(line++); + tft_string.set(string); + tft_string.trim(); + tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); + } + + if (suff) { + menu_line(line); + tft_string.set(suff); + tft_string.trim(); + tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); + } + #if ENABLED(TOUCH_SCREEN) + if (no) add_control(BUTTON_CANCEL_X, BUTTON_CANCEL_Y, CANCEL, imgCancel, true, yesno ? HALF(COLOR_CONTROL_CANCEL) : COLOR_CONTROL_CANCEL); + if (yes) add_control(BUTTON_CONFIRM_X, BUTTON_CONFIRM_Y, CONFIRM, imgConfirm, true, yesno ? COLOR_CONTROL_CONFIRM : HALF(COLOR_CONTROL_CONFIRM)); + #else + // Even without touch screen "no" and "yes" buttons are still need to be displayed + if (no) add_control(BUTTON_CANCEL_X, BUTTON_CANCEL_Y, NONE, imgCancel, true, yesno ? HALF(COLOR_CONTROL_CANCEL) : COLOR_CONTROL_CANCEL); + if (yes) add_control(BUTTON_CONFIRM_X, BUTTON_CONFIRM_Y, NONE, imgConfirm, true, yesno ? COLOR_CONTROL_CONFIRM : HALF(COLOR_CONTROL_CONFIRM)); + #endif +} + +#if ENABLED(ADVANCED_PAUSE_FEATURE) + + void MarlinUI::draw_hotend_status(const uint8_t row, const uint8_t extruder) { + #if ENABLED(TOUCH_SCREEN) + touch.clear(); + draw_menu_navigation = false; + touch.add_control(RESUME_CONTINUE, 0, 0, TFT_WIDTH, TFT_HEIGHT); + #endif + + menu_line(row); + tft_string.set(GET_TEXT(MSG_FILAMENT_CHANGE_NOZZLE)); + tft_string.add('E'); + tft_string.add((char)('1' + extruder)); + tft_string.add(' '); + tft_string.add(i16tostr3rj(thermalManager.wholeDegHotend(extruder))); + tft_string.add(LCD_STR_DEGREE); + tft_string.add(F(" / ")); + tft_string.add(i16tostr3rj(thermalManager.degTargetHotend(extruder))); + tft_string.add(LCD_STR_DEGREE); + tft_string.trim(); + tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); + } + +#endif // ADVANCED_PAUSE_FEATURE + +#if ENABLED(AUTO_BED_LEVELING_UBL) + + void MarlinUI::ubl_plot(const uint8_t x_plot, const uint8_t y_plot) { + + tft.canvas(UBL_GRID_X, UBL_GRID_Y, UBL_GRID_W, UBL_GRID_H); + tft.set_background(COLOR_BACKGROUND); + tft.add_rectangle(0, 0, UBL_GRID_W, UBL_GRID_H, COLOR_WHITE); + + for (uint16_t x = 0; x < (GRID_MAX_POINTS_X); x++) + for (uint16_t y = 0; y < (GRID_MAX_POINTS_Y); y++) + if (position_is_reachable({ bedlevel.get_mesh_x(x), bedlevel.get_mesh_y(y) })) + tft.add_bar(1 + (x * 2 + 1) * (UBL_GRID_W - 4) / (GRID_MAX_POINTS_X) / 2, UBL_GRID_H - 3 - ((y * 2 + 1) * (UBL_GRID_H - 4) / (GRID_MAX_POINTS_Y) / 2), 2, 2, COLOR_UBL); + + tft.add_rectangle((x_plot * 2 + 1) * (UBL_GRID_W - 4) / (GRID_MAX_POINTS_X) / 2 - 1, UBL_GRID_H - 5 - ((y_plot * 2 + 1) * (UBL_GRID_H - 4) / (GRID_MAX_POINTS_Y) / 2), 6, 6, COLOR_UBL); + + const xy_pos_t pos = { bedlevel.get_mesh_x(x_plot), bedlevel.get_mesh_y(y_plot) }, + lpos = pos.asLogical(); + + tft.canvas(UBL_COORDINATES_X, UBL_X_COORDINATE_Y, UBL_COORDINATES_W, MENU_ITEM_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft_string.set(X_LBL); + tft.add_text(0, MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); + tft_string.set(ftostr52(lpos.x)); + tft_string.trim(); + tft.add_text(UBL_COORDINATES_W - tft_string.width(), MENU_TEXT_Y, COLOR_MENU_VALUE, tft_string); + + tft.canvas(UBL_COORDINATES_X, UBL_Y_COORDINATE_Y, UBL_COORDINATES_W, MENU_ITEM_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft_string.set(Y_LBL); + tft.add_text(0, MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); + tft_string.set(ftostr52(lpos.y)); + tft_string.trim(); + tft.add_text(UBL_COORDINATES_W - tft_string.width(), MENU_TEXT_Y, COLOR_MENU_VALUE, tft_string); + + tft.canvas(UBL_COORDINATES_X, UBL_Z_COORDINATE_Y, UBL_COORDINATES_W, MENU_ITEM_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft_string.set(Z_LBL); + tft.add_text(0, MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); + tft_string.set(isnan(bedlevel.z_values[x_plot][y_plot]) ? "-----" : ftostr43sign(bedlevel.z_values[x_plot][y_plot])); + tft_string.trim(); + tft.add_text(UBL_COORDINATES_W - tft_string.width(), MENU_TEXT_Y, COLOR_MENU_VALUE, tft_string); + + #define UBL_TEXT_AREA_W (2 * UBL_CONTROL_OFFSET + 32) + + tft.canvas(UBL_GRID_X + (UBL_GRID_W - UBL_TEXT_AREA_W) / 2, UBL_GRID_Y + UBL_GRID_H + UBL_CONTROL_OFFSET + 16 - MENU_ITEM_HEIGHT / 2, UBL_TEXT_AREA_W, MENU_ITEM_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft_string.set(ui8tostr3rj(x_plot)); + tft_string.trim(); + tft.add_text(tft_string.center(UBL_TEXT_AREA_W), MENU_TEXT_Y, COLOR_MENU_VALUE, tft_string); + + tft.canvas(UBL_GRID_X + UBL_GRID_W + UBL_CONTROL_OFFSET + 16 - UBL_TEXT_AREA_W / 2, UBL_GRID_Y + (UBL_GRID_H - MENU_ITEM_HEIGHT) / 2, UBL_TEXT_AREA_W, MENU_ITEM_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft_string.set(ui8tostr3rj(y_plot)); + tft_string.trim(); + tft.add_text(tft_string.center(UBL_TEXT_AREA_W), MENU_TEXT_Y, COLOR_MENU_VALUE, tft_string); + + #if ENABLED(TOUCH_SCREEN) + touch.clear(); + draw_menu_navigation = false; + add_control(UBL_GRID_X + UBL_GRID_W + UBL_CONTROL_OFFSET, UBL_GRID_Y + UBL_CONTROL_OFFSET, UBL, (ENCODER_STEPS_PER_MENU_ITEM) * (GRID_MAX_POINTS_X), imgUp); + add_control(UBL_GRID_X + UBL_GRID_W + UBL_CONTROL_OFFSET, UBL_GRID_Y + UBL_GRID_H - UBL_CONTROL_OFFSET - 32, UBL, -(ENCODER_STEPS_PER_MENU_ITEM) * (GRID_MAX_POINTS_X), imgDown); + add_control(UBL_GRID_X + UBL_CONTROL_OFFSET, UBL_GRID_Y + UBL_GRID_H + UBL_CONTROL_OFFSET, UBL, -(ENCODER_STEPS_PER_MENU_ITEM), imgLeft); + add_control(UBL_GRID_X + UBL_GRID_W - UBL_CONTROL_OFFSET - 32, UBL_GRID_Y + UBL_GRID_H + UBL_CONTROL_OFFSET, UBL, ENCODER_STEPS_PER_MENU_ITEM, imgRight); + + add_control(UBL_ACTION_X, UBL_ACTION_Y, CLICK, imgLeveling); + add_control(NAVIGATION_BACK_X, NAVIGATION_BACK_Y, BACK, imgBack); + #endif + } +#endif // AUTO_BED_LEVELING_UBL + +#endif // TFT_COLOR_UI diff --git a/Marlin/src/lcd/tft/ui_common.cpp b/Marlin/src/lcd/tft/ui_common.cpp index 962daadb19..09364d846b 100644 --- a/Marlin/src/lcd/tft/ui_common.cpp +++ b/Marlin/src/lcd/tft/ui_common.cpp @@ -28,13 +28,164 @@ #include "../lcdprint.h" #include "../../libs/numtostr.h" #include "../menu/menu.h" +#include "../../gcode/queue.h" +#include "../../module/temperature.h" +#include "../../module/planner.h" +#include "../../module/probe.h" + +#if ENABLED(BABYSTEP_ZPROBE_OFFSET) + #include "../../feature/babystep.h" +#endif + +motionAxisState_t motionAxisState; +static xy_uint_t cursor; +#if ENABLED(TOUCH_SCREEN) + bool draw_menu_navigation = false; +#endif void menu_pause_option(); -static xy_uint_t cursor; +void quick_feedback() { + #if HAS_CHIRP + ui.chirp(); // Buzz and wait. Is the delay needed for buttons to settle? + #if ALL(HAS_MARLINUI_MENU, HAS_BEEPER) + for (int8_t i = 5; i--;) { buzzer.tick(); delay(2); } + #elif HAS_MARLINUI_MENU + delay(10); + #endif + #endif +} + +void disable_steppers() { + quick_feedback(); + queue.inject(F("M84")); +} + +void moveAxis(const AxisEnum axis, const int8_t direction) { + quick_feedback(); + + #if HAS_EXTRUDERS + if (axis == E_AXIS && thermalManager.tooColdToExtrude(motionAxisState.e_selection)) { + drawMessage(F("Too cold")); + return; + } + #endif + + const float diff = motionAxisState.currentStepSize * direction; + + #if HAS_BED_PROBE + + if (axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE) { + #if ENABLED(BABYSTEP_ZPROBE_OFFSET) + const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z; + const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0; + const float bsDiff = planner.mm_per_step[Z_AXIS] * babystep_increment, + new_probe_offset = probe.offset.z + bsDiff, + new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET + , do_probe ? new_probe_offset : hotend_offset[active_extruder].z - bsDiff + , new_probe_offset + ); + if (WITHIN(new_offs, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { + babystep.add_steps(Z_AXIS, babystep_increment); + if (do_probe) + probe.offset.z = new_offs; + else + TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); + drawMessage_P(NUL_STR); // Clear the error + drawAxisValue(axis); + } + else + drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); + + #else + // Only change probe.offset.z + probe.offset.z += diff; + if (direction < 0 && current_position.z < Z_PROBE_OFFSET_RANGE_MIN) { + current_position.z = Z_PROBE_OFFSET_RANGE_MIN; + drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); + } + else if (direction > 0 && current_position.z > Z_PROBE_OFFSET_RANGE_MAX) { + current_position.z = Z_PROBE_OFFSET_RANGE_MAX; + drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); + } + else + drawMessage_P(NUL_STR); // Clear the error + + drawAxisValue(axis); + #endif + } + + #endif // HAS_BED_PROBE + + if (!ui.manual_move.processing) { + // Get motion limit from software endstops, if any + float min, max; + soft_endstop.get_manual_axis_limits(axis, min, max); + + // Delta limits XY based on the current offset from center + // This assumes the center is 0,0 + #if ENABLED(DELTA) + if (axis != Z_AXIS && TERN1(HAS_EXTRUDERS, axis != E_AXIS)) { + max = SQRT(sq(float(PRINTABLE_RADIUS)) - sq(current_position[Y_AXIS - axis])); // (Y_AXIS - axis) == the other axis + min = -max; + } + #endif + + // Get the new position + const bool limited = ui.manual_move.apply_diff(axis, diff, min, max); + #if IS_KINEMATIC + UNUSED(limited); + #else + FSTR_P const msg = limited ? GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS) : FPSTR(NUL_STR); + drawMessage(msg); + #endif + + ui.manual_move.soon(axis OPTARG(MULTI_E_MANUAL, motionAxisState.e_selection)); + } + + drawAxisValue(axis); +} #if ENABLED(TOUCH_SCREEN) - bool draw_menu_navigation = false; + + void do_home() { + quick_feedback(); + drawMessage(GET_TEXT_F(MSG_LEVEL_BED_HOMING)); + queue.inject_P(G28_STR); + // Disable touch until home is done + touch.disable(); + TERN_(HAS_EXTRUDERS, drawAxisValue(E_AXIS)); + TERN_(HAS_X_AXIS, drawAxisValue(X_AXIS)); + TERN_(HAS_Y_AXIS, drawAxisValue(Y_AXIS)); + TERN_(HAS_Z_AXIS, drawAxisValue(Z_AXIS)); + } + + void step_size() { + motionAxisState.currentStepSize = motionAxisState.currentStepSize / 10.0; + if (motionAxisState.currentStepSize < 0.0015) motionAxisState.currentStepSize = 10.0; + quick_feedback(); + drawCurStepValue(); + } + + #if HAS_EXTRUDERS + void e_select() { + if (++motionAxisState.e_selection >= EXTRUDERS) + motionAxisState.e_selection = 0; + quick_feedback(); + drawCurESelection(); + drawAxisValue(E_AXIS); + } + #endif + + #if HAS_BED_PROBE + void z_select() { + motionAxisState.z_selection *= -1; + quick_feedback(); + drawCurZSelection(); + drawAxisValue(Z_AXIS); + } + #endif + #endif #if HAS_TOUCH_SLEEP @@ -56,12 +207,16 @@ static xy_uint_t cursor; return false; } -#endif +#endif // HAS_TOUCH_SLEEP + +void text_line(const uint16_t y, uint16_t color) { + tft.canvas(0, y, TFT_WIDTH, MENU_ITEM_HEIGHT); + tft.set_background(color); +} void menu_line(const uint8_t row, uint16_t color) { cursor.set(0, row); - tft.canvas(0, TFT_TOP_LINE_Y + cursor.y * MENU_LINE_HEIGHT, TFT_WIDTH, MENU_ITEM_HEIGHT); - tft.set_background(color); + text_line(MENU_TOP_LINE_Y + cursor.y * MENU_LINE_HEIGHT, color); } void menu_item(const uint8_t row, bool sel ) { @@ -75,10 +230,42 @@ void menu_item(const uint8_t row, bool sel ) { menu_line(row, sel ? COLOR_SELECTION_BG : COLOR_BACKGROUND); #if ENABLED(TOUCH_SCREEN) const TouchControlType tct = TERN(SINGLE_TOUCH_NAVIGATION, true, sel) ? MENU_CLICK : MENU_ITEM; - touch.add_control(tct, 0, TFT_TOP_LINE_Y + row * MENU_LINE_HEIGHT, TFT_WIDTH, MENU_ITEM_HEIGHT, encoderTopLine + row); + touch.add_control(tct, 0, MENU_TOP_LINE_Y + row * MENU_LINE_HEIGHT, TFT_WIDTH, MENU_ITEM_HEIGHT, encoderTopLine + row); #endif } +void add_control(uint16_t x, uint16_t y, TouchControlType control_type, intptr_t data, MarlinImage image, bool is_enabled, uint16_t color_enabled, uint16_t color_disabled) { + const uint16_t width = images[image].width, height = images[image].height; + tft.canvas(x, y, width, height); + tft.add_image(0, 0, image, is_enabled ? color_enabled : color_disabled); + #if ENABLED(TOUCH_SCREEN) + if (is_enabled) touch.add_control(control_type, x, y, width, height, data); + #endif +} + +void drawBtn(const int x, const int y, const char *label, intptr_t data, const MarlinImage btnimg, const MarlinImage img, uint16_t bgColor, const bool enabled) { + const uint16_t width = images[btnimg].width, + height = images[btnimg].height; + + if (!enabled) bgColor = COLOR_CONTROL_DISABLED; + + tft.canvas(x, y, width, height); + tft.set_background(COLOR_BACKGROUND); + tft.add_image(0, 0, btnimg, bgColor, COLOR_BACKGROUND, COLOR_DARKGREY); + + // TODO: Make an add_text() taking a font arg + if (label) { + tft_string.set(label); + tft_string.trim(); + tft.add_text(tft_string.center(width), height / 2 - tft_string.font_height() / 2, bgColor, tft_string); + } + else + tft.add_image(0, 0, img, bgColor, COLOR_BACKGROUND, COLOR_DARKGREY); + + TERN_(TOUCH_SCREEN, if (enabled) touch.add_control(BUTTON, x, y, width, height, data)); +} + + // // lcdprint.h functions // @@ -88,7 +275,7 @@ void menu_item(const uint8_t row, bool sel ) { void lcd_gotopixel(const uint16_t x, const uint16_t y) { if (x >= TFT_WIDTH) return; cursor.set(x / (TFT_COL_WIDTH), y / MENU_LINE_HEIGHT); - tft.canvas(x, TFT_TOP_LINE_Y + y, (TFT_WIDTH) - x, MENU_ITEM_HEIGHT); + tft.canvas(x, MENU_TOP_LINE_Y + y, (TFT_WIDTH) - x, MENU_ITEM_HEIGHT); tft.set_background(COLOR_BACKGROUND); } @@ -99,7 +286,7 @@ void lcd_moveto(const lcd_uint_t col, const lcd_uint_t row) { int lcd_put_lchar_max(const lchar_t &c, const pixel_len_t max_length) { if (max_length < 1) return 0; tft_string.set(c); - tft.add_text(MENU_TEXT_X_OFFSET, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); + tft.add_text(MENU_TEXT_X, MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); lcd_gotopixel((cursor.x + 1) * (TFT_COL_WIDTH) + tft_string.width(), cursor.y * MENU_LINE_HEIGHT); return tft_string.width(); } @@ -109,7 +296,7 @@ int lcd_put_u8str_max_P(PGM_P utf8_pstr, const pixel_len_t max_length) { tft_string.set(utf8_pstr); tft_string.trim(); tft_string.truncate(max_length); - tft.add_text(MENU_TEXT_X_OFFSET, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); + tft.add_text(MENU_TEXT_X, MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); lcd_gotopixel((cursor.x + 1) * (TFT_COL_WIDTH) + tft_string.width(), cursor.y * MENU_LINE_HEIGHT); return tft_string.width(); } @@ -139,7 +326,7 @@ void MenuItemBase::_draw(const bool sel, const uint8_t row, FSTR_P const fstr, c case 0x02: image = imgDirectory; break; // LCD_STR_FOLDER } - uint8_t offset = MENU_TEXT_X_OFFSET; + uint8_t offset = MENU_TEXT_X; if (image != noImage) { string++; offset = MENU_ITEM_ICON_SPACE; @@ -148,7 +335,7 @@ void MenuItemBase::_draw(const bool sel, const uint8_t row, FSTR_P const fstr, c tft_string.set(string, itemIndex, itemStringC, itemStringF); - tft.add_text(offset, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); + tft.add_text(offset, MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); } // Draw a menu item with a (potentially) editable value @@ -156,10 +343,10 @@ void MenuEditItemBase::draw(const bool sel, const uint8_t row, FSTR_P const fstr menu_item(row, sel); tft_string.set(fstr, itemIndex, itemStringC, itemStringF); - tft.add_text(MENU_TEXT_X_OFFSET, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string); + tft.add_text(MENU_TEXT_X, MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); if (inStr) { tft_string.set(inStr); - tft.add_text(TFT_WIDTH - MENU_TEXT_X_OFFSET - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string); + tft.add_text(TFT_WIDTH - MENU_TEXT_X - tft_string.width(), MENU_TEXT_Y, COLOR_MENU_VALUE, tft_string); } } @@ -172,7 +359,7 @@ void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t s const bool center = bool(style & SS_CENTER), full = bool(style & SS_FULL); if (!full || !vstr) { if (vstr) tft_string.add(vstr); - tft.add_text(center ? tft_string.center(TFT_WIDTH) : 0, MENU_TEXT_Y_OFFSET, COLOR_YELLOW, tft_string); + tft.add_text(center ? tft_string.center(TFT_WIDTH) : 0, MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); return; } @@ -180,12 +367,12 @@ void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t s if (*vstr == ':') { tft_string.add(':'); vstr++; } // Left-justified label - tft.add_text(0, MENU_TEXT_Y_OFFSET, COLOR_YELLOW, tft_string); + tft.add_text(0, MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); // Right-justified value, after spaces while (*vstr == ' ') vstr++; tft_string.set(vstr); - tft.add_text(TFT_WIDTH - 1 - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_YELLOW, tft_string); + tft.add_text(TFT_WIDTH - 1 - tft_string.width(), MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); } #if HAS_MEDIA @@ -193,8 +380,8 @@ void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t s void MenuItem_sdbase::draw(const bool sel, const uint8_t row, FSTR_P const, CardReader &theCard, const bool isDir) { menu_item(row, sel); if (isDir) tft.add_image(MENU_ITEM_ICON_X, MENU_ITEM_ICON_Y, imgDirectory, COLOR_MENU_TEXT, sel ? COLOR_SELECTION_BG : COLOR_BACKGROUND); - uint8_t maxlen = (MENU_ITEM_HEIGHT) - (MENU_TEXT_Y_OFFSET) + 1; - tft.add_text(MENU_ITEM_ICON_SPACE, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, ui.scrolled_filename(theCard, maxlen, row, sel)); + uint8_t maxlen = (MENU_ITEM_HEIGHT) - (MENU_TEXT_Y) + 1; + tft.add_text(MENU_ITEM_ICON_SPACE, MENU_TEXT_Y, COLOR_MENU_TEXT, ui.scrolled_filename(theCard, maxlen, row, sel)); } #endif diff --git a/Marlin/src/lcd/tft/ui_common.h b/Marlin/src/lcd/tft/ui_common.h index 2a81ee2114..592bf3184e 100644 --- a/Marlin/src/lcd/tft/ui_common.h +++ b/Marlin/src/lcd/tft/ui_common.h @@ -33,39 +33,143 @@ #if ENABLED(TOUCH_SCREEN) #include "touch.h" extern bool draw_menu_navigation; +#else + // add_control() function is used to display encoder-controlled elements + enum TouchControlType : uint16_t { + NONE = 0x0000, + }; #endif -#if HAS_UI_320x240 - #include "ui_320x240.h" -#elif HAS_UI_480x320 || HAS_UI_480x272 - #include "ui_480x320.h" -#elif HAS_UI_1024x600 - #include "ui_1024x600.h" -#else - #error "Unsupported display resolution!" +#define UI_INCL_(W, H) STRINGIFY_(ui_##W##x##H.h) +#define UI_INCL(W, H) UI_INCL_(W, H) + +#include "ui_theme.h" +#include UI_INCL(TFT_WIDTH, TFT_HEIGHT) +#include "tft_font.h" +#include "tft_color.h" + +// Common Implementation +#define Z_SELECTION_Z 1 +#define Z_SELECTION_Z_PROBE -1 + +typedef struct { + #if HAS_X_AXIS + xy_int_t xValuePos; + #endif + #if HAS_Y_AXIS + xy_int_t yValuePos; + #endif + #if HAS_Z_AXIS + xy_int_t zValuePos, zTypePos; + int z_selection = Z_SELECTION_Z; + #endif + #if HAS_EXTRUDERS + xy_int_t eValuePos, eNamePos; + uint8_t e_selection = 0; + #endif + xy_int_t stepValuePos; + float currentStepSize = 10.0; + bool blocked = false; + char message[32]; +} motionAxisState_t; + +extern motionAxisState_t motionAxisState; + +void moveAxis(const AxisEnum axis, const int8_t direction); + +#if HAS_EXTRUDERS + inline void e_plus() { moveAxis(E_AXIS, +1); } + inline void e_minus() { moveAxis(E_AXIS, -1); } +#endif +#if HAS_X_AXIS + inline void x_minus() { moveAxis(X_AXIS, -1); } + inline void x_plus() { moveAxis(X_AXIS, +1); } +#endif +#if HAS_Y_AXIS + inline void y_plus() { moveAxis(Y_AXIS, +1); } + inline void y_minus() { moveAxis(Y_AXIS, -1); } +#endif +#if HAS_Z_AXIS + inline void z_plus() { moveAxis(Z_AXIS, +1); } + inline void z_minus() { moveAxis(Z_AXIS, -1); } +#endif +void quick_feedback(); +void disable_steppers(); +#if ENABLED(TOUCH_SCREEN) + void do_home(); + void step_size(); + #if HAS_BED_PROBE + void z_select(); + #endif + #if HAS_EXTRUDERS + void e_select(); + #endif +#endif +#if HAS_TOUCH_SLEEP + bool lcd_sleep_task(); #endif void draw_heater_status(uint16_t x, uint16_t y, const int8_t Heater); void draw_fan_status(uint16_t x, uint16_t y, const bool blink); +void text_line(const uint16_t y, uint16_t color=COLOR_BACKGROUND); void menu_line(const uint8_t row, uint16_t color=COLOR_BACKGROUND); void menu_item(const uint8_t row, bool sel = false); -#if HAS_TOUCH_SLEEP - bool lcd_sleep_task(); +typedef void (*screenFunc_t)(); +void add_control( + uint16_t x, uint16_t y, TouchControlType control_type, intptr_t data, MarlinImage image, bool is_enabled=true, + uint16_t color_enabled=COLOR_CONTROL_ENABLED, uint16_t color_disabled=COLOR_CONTROL_DISABLED +); +inline void add_control( + uint16_t x, uint16_t y, TouchControlType control_type, MarlinImage image, + bool is_enabled=true, uint16_t color_enabled=COLOR_CONTROL_ENABLED, uint16_t color_disabled=COLOR_CONTROL_DISABLED +) { + add_control(x, y, control_type, 0, image, is_enabled, color_enabled, color_disabled); +} +#if ENABLED(TOUCH_SCREEN) + inline void add_control( + uint16_t x, uint16_t y, TouchControlType control_type, screenFunc_t action, MarlinImage image, bool is_enabled=true, + uint16_t color_enabled=COLOR_CONTROL_ENABLED, uint16_t color_disabled=COLOR_CONTROL_DISABLED + ) { + add_control(x, y, control_type, (intptr_t)action, image, is_enabled, color_enabled, color_disabled); + } + inline void add_control( + uint16_t x, uint16_t y, screenFunc_t screen, MarlinImage image, bool is_enabled=true, + uint16_t color_enabled=COLOR_CONTROL_ENABLED, uint16_t color_disabled=COLOR_CONTROL_DISABLED + ) { + add_control(x, y, MENU_SCREEN, (intptr_t)screen, image, is_enabled, color_enabled, color_disabled); + } #endif +void drawBtn(const int x, const int y, const char *label, intptr_t data, const MarlinImage btnimg, const MarlinImage img, uint16_t bgColor, const bool enabled=true); +void drawBtn(const int x, const int y, const char *label, intptr_t data, const MarlinImage img, uint16_t bgColor, const bool enabled=true); +inline void drawBtn(const int x, const int y, const char *label, void (*handler)(), const MarlinImage img, uint16_t bgColor, const bool enabled=true) { + drawBtn(x, y, label, intptr_t(handler), img, bgColor, enabled); +} + +// Custom Implementation +void drawMessage_P(PGM_P const msg); +inline void drawMessage(FSTR_P const fmsg) { drawMessage_P(FTOP(fmsg)); } + +void drawAxisValue(const AxisEnum axis); +void drawCurZSelection(); +void drawCurESelection(); +void drawCurStepValue(); + #define ABSOLUTE_ZERO -273.15 -enum { - OPTITEM(HAS_EXTRUDERS, ITEM_E0) - OPTITEM(HAS_MULTI_HOTEND, ITEM_E1) - #if HOTENDS > 2 - ITEM_E2, - #endif - OPTITEM(HAS_HEATED_BED, ITEM_BED) - OPTITEM(HAS_TEMP_CHAMBER, ITEM_CHAMBER) - OPTITEM(HAS_TEMP_COOLER, ITEM_COOLER) - OPTITEM(HAS_FAN, ITEM_FAN) - ITEMS_COUNT -}; +#if DISABLED(CUSTOM_STATUS_SCREEN_ITEMS_ORDER) + enum { + OPTITEM(HAS_EXTRUDERS, ITEM_E0) + OPTITEM(HAS_MULTI_HOTEND, ITEM_E1) + #if HOTENDS > 2 + ITEM_E2, + #endif + OPTITEM(HAS_HEATED_BED, ITEM_BED) + OPTITEM(HAS_TEMP_CHAMBER, ITEM_CHAMBER) + OPTITEM(HAS_TEMP_COOLER, ITEM_COOLER) + OPTITEM(HAS_FAN, ITEM_FAN) + ITEMS_COUNT + }; +#endif diff --git a/Marlin/src/lcd/tft/ui_move_axis_screen_1024.cpp b/Marlin/src/lcd/tft/ui_move_axis_screen_1024.cpp new file mode 100644 index 0000000000..a68752c9dd --- /dev/null +++ b/Marlin/src/lcd/tft/ui_move_axis_screen_1024.cpp @@ -0,0 +1,265 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../inc/MarlinConfigPre.h" + +#if HAS_UI_1024x600 + +#include "ui_common.h" + +#if ENABLED(MOVE_AXIS_SCREEN) + +#include "../marlinui.h" +#include "../menu/menu.h" +#include "../../libs/numtostr.h" + +#include "../../sd/cardreader.h" +#include "../../module/temperature.h" +#include "../../module/printcounter.h" +#include "../../module/planner.h" +#include "../../module/motion.h" + +#if ENABLED(BABYSTEP_ZPROBE_OFFSET) + #include "../../feature/babystep.h" +#endif + +#if HAS_BED_PROBE + #include "../../module/probe.h" +#endif + +#define BTN_WIDTH 64 +#define BTN_HEIGHT 52 +#define X_MARGIN 20 +#define Y_MARGIN 15 + +#define CUR_STEP_VALUE_WIDTH 104 +void drawCurStepValue() { + tft_string.set(ftostr52sp(motionAxisState.currentStepSize)); + tft_string.add(F("mm")); + tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft.add_text(tft_string.center(CUR_STEP_VALUE_WIDTH), 0, COLOR_AXIS_HOMED, tft_string); +} + +#if HAS_Z_AXIS + void drawCurZSelection() { + tft_string.set('Z'); + tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), 34); + tft.set_background(COLOR_BACKGROUND); + tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + + tft.queue.sync(); + + tft_string.set(F("Offset")); + tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + 34, tft_string.width(), 34); + tft.set_background(COLOR_BACKGROUND); + #if HAS_BED_PROBE + if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) + tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + #endif + } +#endif + +#if HAS_EXTRUDERS + void drawCurESelection() { + tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft_string.set('E'); + tft.add_text(0, 0, E_BTN_COLOR, tft_string); + tft.add_text(tft_string.width(), 0, E_BTN_COLOR, ui8tostr3rj(motionAxisState.e_selection)); + } +#endif + +void drawMessage_P(PGM_P const msg) { + tft.canvas(X_MARGIN, TFT_HEIGHT - Y_MARGIN - 34, TFT_HEIGHT / 2, 34); + tft.set_background(COLOR_BACKGROUND); + tft.add_text(0, 0, COLOR_STATUS_MESSAGE, msg); +} + +void drawAxisValue(const AxisEnum axis) { + const float value = ( + TERN_(HAS_BED_PROBE, axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE ? probe.offset.z :) + ui.manual_move.axis_value(axis) + ); + xy_int_t pos; + uint16_t color; + switch (axis) { + #if HAS_X_AXIS + case X_AXIS: pos = motionAxisState.xValuePos; color = X_BTN_COLOR; break; + #endif + #if HAS_Y_AXIS + case Y_AXIS: pos = motionAxisState.yValuePos; color = Y_BTN_COLOR; break; + #endif + #if HAS_Z_AXIS + case Z_AXIS: pos = motionAxisState.zValuePos; color = Z_BTN_COLOR; break; + #endif + #if HAS_EXTRUDERS + case E_AXIS: pos = motionAxisState.eValuePos; color = E_BTN_COLOR; break; + #endif + default: return; + } + tft.canvas(pos.x, pos.y, BTN_WIDTH + X_MARGIN, BTN_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft_string.set(ftostr52sp(value)); + tft.add_text(0, 0, color, tft_string); +} + +void drawBtn(const int x, const int y, const char *label, intptr_t data, const MarlinImage img, uint16_t bgColor, const bool enabled/*=true*/) { + drawBtn(x, y, label, data, imgBtn52Rounded, img, bgColor, enabled); +} + +void MarlinUI::move_axis_screen() { + // Reset + defer_status_screen(true); + motionAxisState.blocked = false; + TERN_(TOUCH_SCREEN, touch.enable()); + + ui.clear_lcd(); + + TERN_(TOUCH_SCREEN, touch.clear()); + + const bool busy = printingIsActive(); + + // Babysteps during printing? Select babystep for Z probe offset + #if ENABLED(BABYSTEP_ZPROBE_OFFSET) + if (busy) motionAxisState.z_selection = Z_SELECTION_Z_PROBE; + #endif + + /************************************************************************** + * Row 1: | [E-] | [Y-] | Current Y | [Z+] | + *************************************************************************/ + + int x = X_MARGIN, y = Y_MARGIN, spacing = 0; + + TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", e_plus, imgUp, E_BTN_COLOR, !busy)); + + spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; + x += BTN_WIDTH + spacing; + + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", y_plus, imgUp, Y_BTN_COLOR, !busy)); + + x += BTN_WIDTH; + + // Current Y + #if HAS_Y_AXIS + motionAxisState.yValuePos.set(x + 2, y); + drawAxisValue(Y_AXIS); + #endif + + x += spacing; + #if HAS_Z_AXIS + drawBtn(x, y, "Z+", z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have baby step + #endif + + /************************************************************************** + * Row 2: | "Ex" | [X-] | [Home] | [X+] | "Z" | + *************************************************************************/ + + y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; + x = X_MARGIN; + spacing = (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; + + #if HAS_EXTRUDERS + motionAxisState.eNamePos.set(x, y); + drawCurESelection(); + TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, e_select)); + #endif + + x += BTN_WIDTH + spacing; + + TERN_(HAS_X_AXIS, drawBtn(x, y, "X-", x_minus, imgLeft, X_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; + + #if ALL(HAS_X_AXIS, TOUCH_SCREEN) + add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, do_home, imgHome, !busy); + #endif + + x += BTN_WIDTH + spacing; + const uint16_t xplus_x = x; + + TERN_(HAS_X_AXIS, drawBtn(x, y, "X+", x_plus, imgRight, X_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; + + #if HAS_Z_AXIS + motionAxisState.zTypePos.set(x, y); + drawCurZSelection(); + #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) + if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, z_select); + #endif + #endif + + /************************************************************************** + * Row 3: | [E-] | Current X | [Y-] | [Z-] | + *************************************************************************/ + + y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; + x = X_MARGIN; + spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; + + #if HAS_EXTRUDERS + drawBtn(x, y, "E-", e_minus, imgDown, E_BTN_COLOR, !busy); + motionAxisState.eValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(E_AXIS); + #endif + + // Current X + #if HAS_X_AXIS + motionAxisState.xValuePos.set(BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4, y - 10); + drawAxisValue(X_AXIS); + #endif + + x += BTN_WIDTH + spacing; + + // Current Y + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", y_minus, imgDown, Y_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; + + // Current Z + #if HAS_Z_AXIS + drawBtn(x, y, "Z-", z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have babystep + motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(Z_AXIS); + #endif + + /************************************************************************** + * Row 4: | Step Size | [Disable Steppers] | [Back] | + *************************************************************************/ + + y = TFT_HEIGHT - Y_MARGIN - 32; + x = TFT_WIDTH / 2 - CUR_STEP_VALUE_WIDTH / 2; + motionAxisState.stepValuePos.set(x, y); + if (!busy) { + drawCurStepValue(); + TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, x, y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, step_size)); + } + + // Aligned with x+ + drawBtn(xplus_x, TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT, "off", disable_steppers, imgCancel, COLOR_WHITE, !busy); + + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); +} + +#endif // MOVE_AXIS_SCREEN +#endif // HAS_UI_1024x600 diff --git a/Marlin/src/lcd/tft/ui_move_axis_screen_320.cpp b/Marlin/src/lcd/tft/ui_move_axis_screen_320.cpp new file mode 100644 index 0000000000..54a65c17bf --- /dev/null +++ b/Marlin/src/lcd/tft/ui_move_axis_screen_320.cpp @@ -0,0 +1,399 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../inc/MarlinConfigPre.h" + +#if HAS_UI_320x240 + +#include "ui_common.h" + +#if ENABLED(MOVE_AXIS_SCREEN) + +#include "../marlinui.h" +#include "../menu/menu.h" +#include "../../libs/numtostr.h" + +#include "../../sd/cardreader.h" +#include "../../module/temperature.h" +#include "../../module/printcounter.h" +#include "../../module/planner.h" +#include "../../module/motion.h" + +#if ENABLED(BABYSTEP_ZPROBE_OFFSET) + #include "../../feature/babystep.h" +#endif + +#if HAS_BED_PROBE + #include "../../module/probe.h" +#endif + +#define BTN_WIDTH 48 +#define BTN_HEIGHT 39 +#define X_MARGIN 15 +#define Y_MARGIN 11 + +#define CUR_STEP_VALUE_WIDTH 38 +void drawCurStepValue() { + tft_string.set(ftostr52sp(motionAxisState.currentStepSize)); + tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, 20); + tft.set_background(COLOR_BACKGROUND); + tft.add_text(CUR_STEP_VALUE_WIDTH - tft_string.width(), 0, COLOR_AXIS_HOMED, tft_string); + + tft.queue.sync(); + + tft_string.set(F("mm")); + tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y + 20, CUR_STEP_VALUE_WIDTH, 20); + tft.set_background(COLOR_BACKGROUND); + tft.add_text(CUR_STEP_VALUE_WIDTH - tft_string.width(), 0, COLOR_AXIS_HOMED, tft_string); +} + +#if HAS_Z_AXIS + void drawCurZSelection() { + tft_string.set('Z'); + tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), 20); + tft.set_background(COLOR_BACKGROUND); + tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + + tft.queue.sync(); + + tft_string.set(F("Offset")); + tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + 34, tft_string.width(), 20); + tft.set_background(COLOR_BACKGROUND); + #if HAS_BED_PROBE + if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) + tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + #endif + } +#endif + +#if HAS_EXTRUDERS + void drawCurESelection() { + tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft_string.set('E'); + tft.add_text(0, 0, E_BTN_COLOR, tft_string); + tft.add_text(tft_string.width(), 0, E_BTN_COLOR, ui8tostr3rj(motionAxisState.e_selection)); + } +#endif + +void drawMessage_P(PGM_P const msg) { + tft.canvas(X_MARGIN, + #if ENABLED(TFT_COLOR_UI_PORTRAIT) + TFT_HEIGHT - 2 * BTN_HEIGHT, TFT_WIDTH - X_MARGIN + #else + TFT_HEIGHT - Y_MARGIN - 29, (TFT_WIDTH / 2) - (BTN_WIDTH / 2) - X_MARGIN + #endif + , FONT_LINE_HEIGHT + ); + tft.set_background(COLOR_BACKGROUND); + tft.add_text(0, 0, COLOR_STATUS_MESSAGE, msg); +} + +void drawAxisValue(const AxisEnum axis) { + const float value = ( + TERN_(HAS_BED_PROBE, axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE ? probe.offset.z :) + ui.manual_move.axis_value(axis) + ); + xy_int_t pos; + uint16_t color; + switch (axis) { + #if HAS_X_AXIS + case X_AXIS: pos = motionAxisState.xValuePos; color = X_BTN_COLOR; break; + #endif + #if HAS_Y_AXIS + case Y_AXIS: pos = motionAxisState.yValuePos; color = Y_BTN_COLOR; break; + #endif + #if HAS_Z_AXIS + case Z_AXIS: pos = motionAxisState.zValuePos; color = Z_BTN_COLOR; break; + #endif + #if HAS_EXTRUDERS + case E_AXIS: pos = motionAxisState.eValuePos; color = E_BTN_COLOR; break; + #endif + default: return; + } + tft.canvas(pos.x, pos.y, BTN_WIDTH + X_MARGIN, FONT_LINE_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft_string.set(ftostr52sp(value)); + tft.add_text(0, 0, color, tft_string); +} + +void drawBtn(const int x, const int y, const char *label, intptr_t data, const MarlinImage img, uint16_t bgColor, const bool enabled/*=true*/) { + drawBtn(x, y, label, data, imgBtn39Rounded, img, bgColor, enabled); +} + +void MarlinUI::move_axis_screen() { + // Reset + defer_status_screen(true); + motionAxisState.blocked = false; + TERN_(TOUCH_SCREEN, touch.enable()); + + ui.clear_lcd(); + + TERN_(TOUCH_SCREEN, touch.clear()); + + const bool busy = printingIsActive(); + + // Babysteps during printing? Select babystep for Z probe offset + #if ENABLED(BABYSTEP_ZPROBE_OFFSET) + if (busy) motionAxisState.z_selection = Z_SELECTION_Z_PROBE; + #endif + + #if ENABLED(TFT_COLOR_UI_PORTRAIT) + + /************************************************************************** + * ROW 1: | [E+] | [Y+] | [Z+] | + *************************************************************************/ + + int x = X_MARGIN, y = Y_MARGIN, spacing = 0; + + TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", e_plus, imgUp, E_BTN_COLOR, !busy)); + + spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; + x += BTN_WIDTH + spacing; + uint16_t yplus_x = x; + + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", y_plus, imgUp, Y_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; + uint16_t zplus_x = x; + + #if HAS_Z_AXIS + drawBtn(x, y, "Z+", z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have baby step + #endif + + /************************************************************************** + * ROW 2: | "Ex" | Current Y | "Z" | + *************************************************************************/ + + x = X_MARGIN; + y += BTN_HEIGHT + 2; + + #if HAS_EXTRUDERS + motionAxisState.eNamePos.set(x, y); + drawCurESelection(); + TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, e_select)); + #endif + + #if HAS_Y_AXIS + motionAxisState.yValuePos.set(yplus_x, y); + drawAxisValue(Y_AXIS); + #endif + + #if HAS_Z_AXIS + motionAxisState.zTypePos.set(zplus_x, y); + drawCurZSelection(); + #endif + + /************************************************************************** + * ROW 3: | [X-] | [Home] | [X+] | "Z" | + *************************************************************************/ + + y += (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3 - 2; + x = X_MARGIN; + + #if HAS_X_AXIS + drawBtn(x, y, "X-", x_minus, imgLeft, X_BTN_COLOR, !busy); + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, do_home, imgHome, !busy)); + drawBtn(zplus_x, y, "X+", x_plus, imgRight, X_BTN_COLOR, !busy); + #endif + + #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) + if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, z_select); + #endif + + /************************************************************************** + * ROW 4: | Current X | + *************************************************************************/ + + y += BTN_HEIGHT + 2; + + #if HAS_X_AXIS + motionAxisState.xValuePos.set(x, y); + drawAxisValue(X_AXIS); + #endif + + /************************************************************************** + * ROW 5: | [E-] | [Y-] | [Z-] | + *************************************************************************/ + + y += (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3 - 2; + x = X_MARGIN; + + #if HAS_EXTRUDERS + drawBtn(x, y, "E-", e_minus, imgDown, E_BTN_COLOR, !busy); + motionAxisState.eValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(E_AXIS); + #endif + + x += BTN_WIDTH + spacing; + + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", y_minus, imgDown, Y_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; + + #if HAS_Z_AXIS + drawBtn(x, y, "Z-", z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have baby step + motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(Z_AXIS); + #endif + + /************************************************************************** + * ROW 6: | Step Size | [Disable Steppers] | [Back] | + *************************************************************************/ + + y = TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT; + x = zplus_x - CUR_STEP_VALUE_WIDTH - 10; + motionAxisState.stepValuePos.set(X_MARGIN + BTN_WIDTH - CUR_STEP_VALUE_WIDTH, y); + + if (!busy) { + drawCurStepValue(); + TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, step_size)); + } + + // Aligned with x+ + drawBtn(yplus_x, y, "off", disable_steppers, imgCancel, COLOR_WHITE, !busy); + + #else // !TFT_COLOR_UI_PORTRAIT + + /************************************************************************** + * ROW 1: | [E+] | [Y+] | Current Y | [Z+] | + *************************************************************************/ + + int x = X_MARGIN, y = Y_MARGIN, spacing = 0; + + TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", e_plus, imgUp, E_BTN_COLOR, !busy)); + + spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; + x += BTN_WIDTH + spacing; + uint16_t yplus_x = x; + + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", y_plus, imgUp, Y_BTN_COLOR, !busy)); + + x += BTN_WIDTH; + + // Current Y + #if HAS_Y_AXIS + motionAxisState.yValuePos.set(x + 2, y); + drawAxisValue(Y_AXIS); + #endif + + x += spacing; + + #if HAS_Z_AXIS + drawBtn(x, y, "Z+", z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have baby step + #endif + + /************************************************************************** + * ROW 2: | "Ex" | [X-] | [Home] | [X+] | "Z" | + *************************************************************************/ + + y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; + x = X_MARGIN; + spacing = (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; + + #if HAS_EXTRUDERS + motionAxisState.eNamePos.set(x, y); + drawCurESelection(); + TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, e_select)); + #endif + + x += BTN_WIDTH + spacing; + + TERN_(HAS_X_AXIS, drawBtn(x, y, "X-", x_minus, imgLeft, X_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; + + #if ALL(HAS_X_AXIS, TOUCH_SCREEN) + add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, do_home, imgHome, !busy); + #endif + + x += BTN_WIDTH + spacing; + const uint16_t xplus_x = x; + + TERN_(HAS_X_AXIS, drawBtn(x, y, "X+", x_plus, imgRight, X_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; + + #if HAS_Z_AXIS + motionAxisState.zTypePos.set(x, y); + drawCurZSelection(); + #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) + if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, 34 * 2, z_select); + #endif + #endif + + /************************************************************************** + * ROW 3: | [E-] | Current X | [Y-] | [Z-] | + *************************************************************************/ + + y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; + x = X_MARGIN; + spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; + + #if HAS_EXTRUDERS + drawBtn(x, y, "E-", e_minus, imgDown, E_BTN_COLOR, !busy); + motionAxisState.eValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(E_AXIS); + #endif + + // Current X + #if HAS_X_AXIS + motionAxisState.xValuePos.set(BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4, y - 10); + drawAxisValue(X_AXIS); + #endif + + x += BTN_WIDTH + spacing; + + // Current Y + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", y_minus, imgDown, Y_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; + + // Current Z + #if HAS_Z_AXIS + drawBtn(x, y, "Z-", z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have baby step + motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(Z_AXIS); + #endif + + /************************************************************************** + * ROW 4: | Step Size | [Disable Steppers] | [Back] | + *************************************************************************/ + + y = TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT; + x = xplus_x - CUR_STEP_VALUE_WIDTH - 10; + motionAxisState.stepValuePos.set(yplus_x + BTN_WIDTH - CUR_STEP_VALUE_WIDTH, y); + if (!busy) { + drawCurStepValue(); + TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, step_size)); + } + + // Aligned with x+ + drawBtn(xplus_x, y, "off", disable_steppers, imgCancel, COLOR_WHITE, !busy); + + #endif // !TFT_COLOR_UI_PORTRAIT + + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); +} + +#endif // MOVE_AXIS_SCREEN +#endif // HAS_UI_320x240 diff --git a/Marlin/src/lcd/tft/ui_move_axis_screen_480.cpp b/Marlin/src/lcd/tft/ui_move_axis_screen_480.cpp new file mode 100644 index 0000000000..e311c7e8ec --- /dev/null +++ b/Marlin/src/lcd/tft/ui_move_axis_screen_480.cpp @@ -0,0 +1,400 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../inc/MarlinConfigPre.h" + +#if HAS_UI_480x320 || HAS_UI_480x272 + +#include "ui_common.h" + +#if ENABLED(MOVE_AXIS_SCREEN) + +#include "../marlinui.h" +#include "../menu/menu.h" +#include "../../libs/numtostr.h" + +#include "../../sd/cardreader.h" +#include "../../module/temperature.h" +#include "../../module/printcounter.h" +#include "../../module/planner.h" +#include "../../module/motion.h" + +#if ENABLED(BABYSTEP_ZPROBE_OFFSET) + #include "../../feature/babystep.h" +#endif + +#if HAS_BED_PROBE + #include "../../module/probe.h" +#endif + +#if ENABLED(TFT_COLOR_UI_PORTRAIT) + #define MOVE_AXIS_TOTAL_ROWS_HEIGHT (7 * BTN_HEIGHT + FONT_LINE_HEIGHT + 12) + #define MOVE_AXIS_MARGIN_REGIONS 6 + #define MOVE_AXIS_MARGIN_SIZE ((TFT_HEIGHT - MOVE_AXIS_TOTAL_ROWS_HEIGHT) / MOVE_AXIS_MARGIN_REGIONS) +#endif + +#define BTN_WIDTH 64 +#define BTN_HEIGHT 52 +#define X_MARGIN 20 +#define Y_MARGIN 15 +#define Y_OFFSET TERN(HAS_UI_480x272, 28, 34) + +#define CUR_STEP_VALUE_WIDTH 104 +void drawCurStepValue() { + tft_string.set(ftostr52sp(motionAxisState.currentStepSize)); + tft_string.trim(); + tft_string.add(F("mm")); + tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft.add_text(0, 0, COLOR_AXIS_HOMED, tft_string); +} + +#if HAS_Z_AXIS + void drawCurZSelection() { + tft_string.set('Z'); + tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, tft_string.width(), FONT_LINE_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + + tft.queue.sync(); + + tft_string.set(F("Offset")); + tft.canvas(motionAxisState.zTypePos.x, motionAxisState.zTypePos.y + Y_OFFSET, tft_string.width(), Y_OFFSET TERN_(HAS_UI_480x272, - 10)); + tft.set_background(COLOR_BACKGROUND); + #if HAS_BED_PROBE + if (motionAxisState.z_selection == Z_SELECTION_Z_PROBE) + tft.add_text(0, 0, Z_BTN_COLOR, tft_string); + #endif + } +#endif + +#if HAS_EXTRUDERS + void drawCurESelection() { + tft.canvas(motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft_string.set('E'); + tft_string.add(utostr3(motionAxisState.e_selection)); + tft.add_text(tft_string.center(BTN_WIDTH), 0, E_BTN_COLOR, tft_string); + } +#endif + +void drawMessage_P(PGM_P const msg) { + #if ENABLED(TFT_COLOR_UI_PORTRAIT) + tft.canvas(X_MARGIN, TFT_HEIGHT - 2 * MOVE_AXIS_MARGIN_SIZE - BTN_HEIGHT - FONT_LINE_HEIGHT, TFT_WIDTH - X_MARGIN * 2, FONT_LINE_HEIGHT); + #else + tft.canvas(X_MARGIN, TFT_HEIGHT - Y_MARGIN - Y_OFFSET, TFT_HEIGHT / 2, Y_OFFSET); + #endif + tft.set_background(COLOR_BACKGROUND); + tft.add_text(0, 0, COLOR_STATUS_MESSAGE, msg); +} + +void drawAxisValue(const AxisEnum axis) { + const float value = ( + TERN_(HAS_BED_PROBE, axis == Z_AXIS && motionAxisState.z_selection == Z_SELECTION_Z_PROBE ? probe.offset.z :) + ui.manual_move.axis_value(axis) + ); + xy_int_t pos; + uint16_t color; + switch (axis) { + #if HAS_X_AXIS + case X_AXIS: pos = motionAxisState.xValuePos; color = X_BTN_COLOR; break; + #endif + #if HAS_Y_AXIS + case Y_AXIS: pos = motionAxisState.yValuePos; color = Y_BTN_COLOR; break; + #endif + #if HAS_Z_AXIS + case Z_AXIS: pos = motionAxisState.zValuePos; color = Z_BTN_COLOR; break; + #endif + #if HAS_EXTRUDERS + case E_AXIS: pos = motionAxisState.eValuePos; color = E_BTN_COLOR; break; + #endif + default: return; + } + tft.canvas(pos.x, pos.y, BTN_WIDTH + X_MARGIN, BTN_HEIGHT TERN_(HAS_UI_480x272, / 2)); + tft.set_background(COLOR_BACKGROUND); + tft_string.set(ftostr52sp(value)); + tft_string.trim(); + tft.add_text(tft_string.center(BTN_WIDTH + X_MARGIN), 0, color, tft_string); +} + +void drawBtn(const int x, const int y, const char *label, intptr_t data, const MarlinImage img, uint16_t bgColor, const bool enabled/*=true*/) { + drawBtn(x, y, label, data, imgBtn52Rounded, img, bgColor, enabled); +} + +void MarlinUI::move_axis_screen() { + // Reset + defer_status_screen(true); + motionAxisState.blocked = false; + TERN_(TOUCH_SCREEN, touch.enable()); + + ui.clear_lcd(); + + TERN_(TOUCH_SCREEN, touch.clear()); + + const bool busy = printingIsActive(); + + // Babysteps during printing? Select babystep for Z probe offset + #if ENABLED(BABYSTEP_ZPROBE_OFFSET) + if (busy) motionAxisState.z_selection = Z_SELECTION_Z_PROBE; + #endif + + #if ENABLED(TFT_COLOR_UI_PORTRAIT) + + int y = MOVE_AXIS_MARGIN_SIZE; + + /************************************************************************** + * ROW 1: | [E+] | [Y+] | [Z+] | + *************************************************************************/ + + TERN_(HAS_EXTRUDERS, drawBtn(TFT_WIDTH / 6 - BTN_WIDTH / 2, y, "E+", e_plus, imgUp, E_BTN_COLOR, !busy)); + TERN_(HAS_Y_AXIS, drawBtn(TFT_WIDTH / 2 - BTN_WIDTH / 2, y, "Y+", y_plus, imgUp, Y_BTN_COLOR, !busy)); + TERN_(HAS_Z_AXIS, drawBtn(TFT_WIDTH * 5 / 6 - BTN_WIDTH / 2, y, "Z+", z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET))); + + y += BTN_HEIGHT + 4; + + /************************************************************************** + * ROW 2: | "Ex" (E0, E1, etc.) | Current Y | "Z" | + *************************************************************************/ + + // Label "Ex" (E0, E1, etc.) + #if HAS_EXTRUDERS + motionAxisState.eNamePos.set(TFT_WIDTH / 6 - BTN_WIDTH / 2, y); + drawCurESelection(); + #if ENABLED(TOUCH_SCREEN) + if (!busy) touch.add_control(BUTTON, motionAxisState.eNamePos.x, motionAxisState.eNamePos.y, BTN_WIDTH, BTN_HEIGHT, e_select); + #endif + #endif + + // Current Y + #if HAS_Y_AXIS + motionAxisState.yValuePos.set(TFT_WIDTH / 2 - (BTN_WIDTH + X_MARGIN) / 2, y); + drawAxisValue(Y_AXIS); + #endif + + // Label "Z" + #ifdef HAS_Z_AXIS + motionAxisState.zTypePos.set(TFT_WIDTH * 5 / 6 - BTN_WIDTH / 2, y); + drawCurZSelection(); + #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) + if (!busy) touch.add_control(BUTTON, motionAxisState.zTypePos.x, motionAxisState.zTypePos.y, BTN_WIDTH, FONT_LINE_HEIGHT * 2, z_select); + #endif + #endif + + y += BTN_HEIGHT + MOVE_AXIS_MARGIN_SIZE; + + /************************************************************************** + * ROW 3: | [X-] | [Home] | [X+] | + *************************************************************************/ + + #if HAS_X_AXIS + drawBtn(TFT_WIDTH / 6 - BTN_WIDTH / 2, y, "X-", x_minus, imgLeft, X_BTN_COLOR, !busy); + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, do_home, imgHome, !busy)); + drawBtn(TFT_WIDTH * 5 / 6 - BTN_WIDTH / 2, y, "X+", x_plus, imgRight, X_BTN_COLOR, !busy); + #endif + + y += BTN_HEIGHT + 4; + + /************************************************************************** + * ROW 4: | Current X | + *************************************************************************/ + + #ifdef HAS_X_AXIS + motionAxisState.xValuePos.set(TFT_WIDTH / 6 - (BTN_WIDTH + X_MARGIN) / 2, y); + drawAxisValue(X_AXIS); + #endif + + y += BTN_HEIGHT + MOVE_AXIS_MARGIN_SIZE; + + /************************************************************************** + * ROW 5: | [E-] | [Y-] | [Z-] | + *************************************************************************/ + + TERN_(HAS_EXTRUDERS, drawBtn(TFT_WIDTH / 6 - BTN_WIDTH / 2, y, "E-", e_minus, imgDown, E_BTN_COLOR, !busy)); + TERN_(HAS_Y_AXIS, drawBtn(TFT_WIDTH / 2 - BTN_WIDTH / 2, y, "Y-", y_minus, imgDown, Y_BTN_COLOR, !busy)); + TERN_(HAS_Z_AXIS, drawBtn(TFT_WIDTH * 5 / 6 - BTN_WIDTH / 2, y, "Z-", z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET))); + + y += BTN_HEIGHT + 4; + + /************************************************************************** + * ROW 6: | Current Ex | Current Z | + *************************************************************************/ + + // Current Ex value + #ifdef HAS_EXTRUDERS + motionAxisState.eValuePos.set(TFT_WIDTH / 6 - (BTN_WIDTH + X_MARGIN) / 2, y); + drawAxisValue(E_AXIS); + #endif + + #ifdef HAS_Z_AXIS + motionAxisState.zValuePos.set(TFT_WIDTH * 5 / 6 - (BTN_WIDTH + X_MARGIN) / 2, y); + drawAxisValue(Z_AXIS); + #endif + + y += BTN_HEIGHT + MOVE_AXIS_MARGIN_SIZE; + + /************************************************************************** + * ROW 7: | Message - drawMessage(...) function | + *************************************************************************/ + + y += FONT_LINE_HEIGHT + MOVE_AXIS_MARGIN_SIZE; + + /************************************************************************** + * ROW 8: | Step Size | [Disable Steppers] | [Back] | + *************************************************************************/ + + // Step size + motionAxisState.stepValuePos.set(X_MARGIN, y + 12); + if (!busy) { + drawCurStepValue(); + TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y + 12, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, step_size)); + } + + // Button "Disable steppers" + drawBtn(TFT_WIDTH / 2, y, "off", disable_steppers, imgCancel, COLOR_WHITE, !busy); + + // Button "Back" + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH * 5 / 6 - images[imgBack].width / 2, y + 12, BACK, imgBack)); + + #else // !TFT_COLOR_UI_PORTRAIT + + /************************************************************************** + * ROW 1: | [E+] | [Y+] | [Z+] | + *************************************************************************/ + + int x = X_MARGIN, y = Y_MARGIN, spacing = 0; + + TERN_(HAS_EXTRUDERS, drawBtn(x, y, "E+", e_plus, imgUp, E_BTN_COLOR, !busy)); + + spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; + x += BTN_WIDTH + spacing; + + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y+", y_plus, imgUp, Y_BTN_COLOR, !busy)); + + x += BTN_WIDTH; + + // Current Y + #if HAS_Y_AXIS + motionAxisState.yValuePos.set(x + 2, y); + drawAxisValue(Y_AXIS); + #endif + + x += spacing; + + #if HAS_Z_AXIS + drawBtn(x, y, "Z+", z_plus, imgUp, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have baby step + #endif + + /************************************************************************** + * ROW 2: | "Ex" | [X-] | [Home] | [X+] | "Z" | + *************************************************************************/ + + y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; + x = X_MARGIN; + spacing = (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4; + + #if HAS_EXTRUDERS + motionAxisState.eNamePos.set(x, y); + drawCurESelection(); + TERN_(TOUCH_SCREEN, if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, BTN_HEIGHT, e_select)); + #endif + + x += BTN_WIDTH + spacing; + + TERN_(HAS_X_AXIS, drawBtn(x, y, "X-", x_minus, imgLeft, X_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; + + #if ALL(HAS_X_AXIS, TOUCH_SCREEN) + add_control(TFT_WIDTH / 2 - images[imgHome].width / 2, y - (images[imgHome].width - BTN_HEIGHT) / 2, BUTTON, do_home, imgHome, !busy); + #endif + + x += BTN_WIDTH + spacing; + const uint16_t xplus_x = x; + + TERN_(HAS_X_AXIS, drawBtn(x, y, "X+", x_plus, imgRight, X_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; + + #if HAS_Z_AXIS + motionAxisState.zTypePos.set(x, y); + drawCurZSelection(); + #if ALL(HAS_BED_PROBE, TOUCH_SCREEN) + if (!busy) touch.add_control(BUTTON, x, y, BTN_WIDTH, Y_OFFSET * 2, z_select); + #endif + #endif + + /************************************************************************** + * ROW 3: | [E-] | Current X | [Y-] | [Z-] | + *************************************************************************/ + + y += BTN_HEIGHT + (TFT_HEIGHT - Y_MARGIN * 2 - 4 * BTN_HEIGHT) / 3; + x = X_MARGIN; + spacing = (TFT_WIDTH - X_MARGIN * 2 - 3 * BTN_WIDTH) / 2; + + #if HAS_EXTRUDERS + drawBtn(x, y, "E-", e_minus, imgDown, E_BTN_COLOR, !busy); + motionAxisState.eValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(E_AXIS); + #endif + + // Current X + #if HAS_X_AXIS + motionAxisState.xValuePos.set(BTN_WIDTH + (TFT_WIDTH - X_MARGIN * 2 - 5 * BTN_WIDTH) / 4, y - 10); + drawAxisValue(X_AXIS); + #endif + + x += BTN_WIDTH + spacing; + + // Current Y + TERN_(HAS_Y_AXIS, drawBtn(x, y, "Y-", y_minus, imgDown, Y_BTN_COLOR, !busy)); + + x += BTN_WIDTH + spacing; + + // Current Z + #if HAS_Z_AXIS + drawBtn(x, y, "Z-", z_minus, imgDown, Z_BTN_COLOR, !busy || ENABLED(BABYSTEP_ZPROBE_OFFSET)); // Only enabled when not busy or have baby step + motionAxisState.zValuePos.set(x, y + BTN_HEIGHT + 2); + drawAxisValue(Z_AXIS); + #endif + + /************************************************************************** + * ROW 4: | Step Size | [Disable Steppers] | [Back] | + *************************************************************************/ + + y = TFT_HEIGHT - Y_MARGIN - TERN(HAS_UI_480x272, BTN_WIDTH / 2, 32); + x = TFT_WIDTH / 2 - CUR_STEP_VALUE_WIDTH / 2; + motionAxisState.stepValuePos.set(x, y); + if (!busy) { + drawCurStepValue(); + TERN_(TOUCH_SCREEN, touch.add_control(BUTTON, motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT, step_size)); + } + + // Aligned with x+ + drawBtn(xplus_x, TFT_HEIGHT - Y_MARGIN - BTN_HEIGHT, "off", disable_steppers, imgCancel, COLOR_WHITE, !busy); + + TERN_(TOUCH_SCREEN, add_control(TFT_WIDTH - X_MARGIN - BTN_WIDTH, y, BACK, imgBack)); + + #endif // !TFT_COLOR_UI_PORTRAIT +} + +#endif // MOVE_AXIS_SCREEN +#endif // HAS_UI_480x320 || HAS_UI_480x272 diff --git a/Marlin/src/lcd/tft/ui_theme.h b/Marlin/src/lcd/tft/ui_theme.h new file mode 100644 index 0000000000..1925cdc071 --- /dev/null +++ b/Marlin/src/lcd/tft/ui_theme.h @@ -0,0 +1,35 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include "../../inc/MarlinConfigPre.h" + +#ifndef TFT_THEME + #define TFT_THEME BLUE_MARLIN +#endif + +#define TFT_THEME_INCL_(M) STRINGIFY_(themes/theme_##M.h) +#define TFT_THEME_INCL(M) TFT_THEME_INCL_(M) + +#include "tft_color.h" +#include TFT_THEME_INCL(TFT_THEME) +#include "themes/theme_default.h" diff --git a/Marlin/src/lcd/tft_io/tft_orientation.h b/Marlin/src/lcd/tft_io/tft_orientation.h index 99c6a13c64..d85e6b12db 100644 --- a/Marlin/src/lcd/tft_io/tft_orientation.h +++ b/Marlin/src/lcd/tft_io/tft_orientation.h @@ -58,11 +58,6 @@ #define TFT_COLOR_RGB _BV32(3) #define TFT_COLOR_BGR _BV32(4) -// Each TFT Driver is responsible for its default color mode. -//#ifndef TFT_COLOR -// #define TFT_COLOR TFT_COLOR_RGB -//#endif - #define TOUCH_ORIENTATION_NONE 0 #define TOUCH_LANDSCAPE 1 #define TOUCH_PORTRAIT 2 diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.h b/buildroot/share/PlatformIO/scripts/common-dependencies.h index b37a377df9..2def0d88b6 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.h +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.h @@ -110,14 +110,219 @@ #endif #if HAS_GRAPHICAL_TFT - #define NOTOSANS 1 - #define UNIFONT 2 - #define HELVETICA 3 + #include "../../../../Marlin/src/lcd/tft/fontdata/fontdata.h" + #define UI_INCL_(W, H) STRINGIFY_(../../../../Marlin/src/lcd/tft/ui_##W##x##H.h) + #define UI_INCL(W, H) UI_INCL_(W, H) + #include UI_INCL(TFT_WIDTH, TFT_HEIGHT) + + #define Latin_Extended_A 1 + #define Cyrillic 2 + #define Greek 3 + #define Katakana 4 + #define Korean 5 + #define Vietnamese 6 + #define Simplified_Chinese 7 + #define Traditional_Chinese 8 + #if TFT_FONT == NOTOSANS - #define TFT_FONT_NOTOSANS + #if FONT_SIZE == 14 + #define TFT_FONT_NOTOSANS_14 + #if FONT_EXTRA == Latin_Extended_A + #define TFT_FONT_NOTOSANS_14_LATIN + #elif FONT_EXTRA == Cyrillic + #define TFT_FONT_NOTOSANS_14_CYRIL + #elif FONT_EXTRA == Greek + #define TFT_FONT_NOTOSANS_14_GREEK + #elif FONT_EXTRA == Katakana + #define TFT_FONT_NOTOSANS_14_KATA + #elif FONT_EXTRA == Korean + #define TFT_FONT_NOTOSANS_14_KO + #elif FONT_EXTRA == Vietnamese + #define TFT_FONT_NOTOSANS_14_VI + #elif FONT_EXTRA == Simplified_Chinese + #define TFT_FONT_NOTOSANS_14_ZH_CN + #elif FONT_EXTRA == Traditional_Chinese + #define TFT_FONT_NOTOSANS_14_ZH_TW + #endif + #elif FONT_SIZE == 16 + #define TFT_FONT_NOTOSANS_16 + #if FONT_EXTRA == Latin_Extended_A + #define TFT_FONT_NOTOSANS_16_LATIN + #elif FONT_EXTRA == Cyrillic + #define TFT_FONT_NOTOSANS_16_CYRIL + #elif FONT_EXTRA == Greek + #define TFT_FONT_NOTOSANS_16_GREEK + #elif FONT_EXTRA == Katakana + #define TFT_FONT_NOTOSANS_16_KATA + #elif FONT_EXTRA == Korean + #define TFT_FONT_NOTOSANS_16_KO + #elif FONT_EXTRA == Vietnamese + #define TFT_FONT_NOTOSANS_16_VI + #elif FONT_EXTRA == Simplified_Chinese + #define TFT_FONT_NOTOSANS_16_ZH_CN + #elif FONT_EXTRA == Traditional_Chinese + #define TFT_FONT_NOTOSANS_16_ZH_TW + #endif + #elif FONT_SIZE == 19 + #define TFT_FONT_NOTOSANS_19 + #if FONT_EXTRA == Latin_Extended_A + #define TFT_FONT_NOTOSANS_19_LATIN + #elif FONT_EXTRA == Cyrillic + #define TFT_FONT_NOTOSANS_19_CYRIL + #elif FONT_EXTRA == Greek + #define TFT_FONT_NOTOSANS_19_GREEK + #elif FONT_EXTRA == Katakana + #define TFT_FONT_NOTOSANS_19_KATA + #elif FONT_EXTRA == Korean + #define TFT_FONT_NOTOSANS_19_KO + #elif FONT_EXTRA == Vietnamese + #define TFT_FONT_NOTOSANS_19_VI + #elif FONT_EXTRA == Simplified_Chinese + #define TFT_FONT_NOTOSANS_19_ZH_CN + #elif FONT_EXTRA == Traditional_Chinese + #define TFT_FONT_NOTOSANS_19_ZH_TW + #endif + #elif FONT_SIZE == 26 + #define TFT_FONT_NOTOSANS_26 + #if FONT_EXTRA == Latin_Extended_A + #define TFT_FONT_NOTOSANS_26_LATIN + #elif FONT_EXTRA == Cyrillic + #define TFT_FONT_NOTOSANS_26_CYRIL + #elif FONT_EXTRA == Greek + #define TFT_FONT_NOTOSANS_26_GREEK + #elif FONT_EXTRA == Katakana + #define TFT_FONT_NOTOSANS_26_KATA + #elif FONT_EXTRA == Korean + #define TFT_FONT_NOTOSANS_26_KO + #elif FONT_EXTRA == Vietnamese + #define TFT_FONT_NOTOSANS_26_VI + #elif FONT_EXTRA == Simplified_Chinese + #define TFT_FONT_NOTOSANS_26_ZH_CN + #elif FONT_EXTRA == Traditional_Chinese + #define TFT_FONT_NOTOSANS_26_ZH_TW + #endif + #elif FONT_SIZE == 27 + #define TFT_FONT_NOTOSANS_27 + #if FONT_EXTRA == Latin_Extended_A + #define TFT_FONT_NOTOSANS_27_LATIN + #elif FONT_EXTRA == Cyrillic + #define TFT_FONT_NOTOSANS_27_CYRIL + #elif FONT_EXTRA == Greek + #define TFT_FONT_NOTOSANS_27_GREEK + #elif FONT_EXTRA == Katakana + #define TFT_FONT_NOTOSANS_27_KATA + #elif FONT_EXTRA == Korean + #define TFT_FONT_NOTOSANS_27_KO + #elif FONT_EXTRA == Vietnamese + #define TFT_FONT_NOTOSANS_27_VI + #elif FONT_EXTRA == Simplified_Chinese + #define TFT_FONT_NOTOSANS_27_ZH_CN + #elif FONT_EXTRA == Traditional_Chinese + #define TFT_FONT_NOTOSANS_27_ZH_TW + #endif + #elif FONT_SIZE == 28 + #define TFT_FONT_NOTOSANS_28 + #if FONT_EXTRA == Latin_Extended_A + #define TFT_FONT_NOTOSANS_28_LATIN + #elif FONT_EXTRA == Cyrillic + #define TFT_FONT_NOTOSANS_28_CYRIL + #elif FONT_EXTRA == Greek + #define TFT_FONT_NOTOSANS_28_GREEK + #elif FONT_EXTRA == Katakana + #define TFT_FONT_NOTOSANS_28_KATA + #elif FONT_EXTRA == Korean + #define TFT_FONT_NOTOSANS_28_KO + #elif FONT_EXTRA == Vietnamese + #define TFT_FONT_NOTOSANS_28_VI + #elif FONT_EXTRA == Simplified_Chinese + #define TFT_FONT_NOTOSANS_28_ZH_CN + #elif FONT_EXTRA == Traditional_Chinese + #define TFT_FONT_NOTOSANS_28_ZH_TW + #endif + #elif FONT_SIZE == 29 + #define TFT_FONT_NOTOSANS_29 + #if FONT_EXTRA == Latin_Extended_A + #define TFT_FONT_NOTOSANS_29_LATIN + #elif FONT_EXTRA == Cyrillic + #define TFT_FONT_NOTOSANS_29_CYRIL + #elif FONT_EXTRA == Greek + #define TFT_FONT_NOTOSANS_29_GREEK + #elif FONT_EXTRA == Katakana + #define TFT_FONT_NOTOSANS_29_KATA + #elif FONT_EXTRA == Korean + #define TFT_FONT_NOTOSANS_29_KO + #elif FONT_EXTRA == Vietnamese + #define TFT_FONT_NOTOSANS_29_VI + #elif FONT_EXTRA == Simplified_Chinese + #define TFT_FONT_NOTOSANS_29_ZH_CN + #elif FONT_EXTRA == Traditional_Chinese + #define TFT_FONT_NOTOSANS_29_ZH_TW + #endif + #endif #elif TFT_FONT == UNIFONT - #define TFT_FONT_UNIFONT + #if FONT_SIZE == 10 + #define TFT_FONT_UNIFONT_10 + #if FONT_EXTRA == Latin_Extended_A + #define TFT_FONT_UNIFONT_10_LATIN + #elif FONT_EXTRA == Cyrillic + #define TFT_FONT_UNIFONT_10_CYRIL + #elif FONT_EXTRA == Greek + #define TFT_FONT_UNIFONT_10_GREEK + #elif FONT_EXTRA == Katakana + #define TFT_FONT_UNIFONT_10_KATA + #elif FONT_EXTRA == Korean + #define TFT_FONT_UNIFONT_10_KO + #elif FONT_EXTRA == Vietnamese + #define TFT_FONT_UNIFONT_10_VI + #elif FONT_EXTRA == Simplified_Chinese + #define TFT_FONT_UNIFONT_10_ZH_CN + #elif FONT_EXTRA == Traditional_Chinese + #define TFT_FONT_UNIFONT_10_ZH_TW + #endif + #elif FONT_SIZE == 20 + #define TFT_FONT_UNIFONT_20 + #if FONT_EXTRA == Latin_Extended_A + #define TFT_FONT_UNIFONT_20_LATIN + #elif FONT_EXTRA == Cyrillic + #define TFT_FONT_UNIFONT_20_CYRIL + #elif FONT_EXTRA == Greek + #define TFT_FONT_UNIFONT_20_GREEK + #elif FONT_EXTRA == Katakana + #define TFT_FONT_UNIFONT_20_KATA + #elif FONT_EXTRA == Korean + #define TFT_FONT_UNIFONT_20_KO + #elif FONT_EXTRA == Vietnamese + #define TFT_FONT_UNIFONT_20_VI + #elif FONT_EXTRA == Simplified_Chinese + #define TFT_FONT_UNIFONT_20_ZH_CN + #elif FONT_EXTRA == Traditional_Chinese + #define TFT_FONT_UNIFONT_20_ZH_TW + #endif + #elif FONT_SIZE == 30 + #define TFT_FONT_UNIFONT_30 + #if FONT_EXTRA == Latin_Extended_A + #define TFT_FONT_UNIFONT_30_LATIN + #elif FONT_EXTRA == Cyrillic + #define TFT_FONT_UNIFONT_30_CYRIL + #elif FONT_EXTRA == Greek + #define TFT_FONT_UNIFONT_30_GREEK + #elif FONT_EXTRA == Katakana + #define TFT_FONT_UNIFONT_30_KATA + #elif FONT_EXTRA == Korean + #define TFT_FONT_UNIFONT_30_KO + #elif FONT_EXTRA == Vietnamese + #define TFT_FONT_UNIFONT_30_VI + #elif FONT_EXTRA == Simplified_Chinese + #define TFT_FONT_UNIFONT_30_ZH_CN + #elif FONT_EXTRA == Traditional_Chinese + #define TFT_FONT_UNIFONT_30_ZH_TW + #endif + #endif #elif TFT_FONT == HELVETICA - #define TFT_FONT_HELVETICA + #if FONT_SIZE == 14 + #define TFT_FONT_HELVETICA_14 + #elif FONT_SIZE == 19 + #define TFT_FONT_HELVETICA_19 + #endif #endif #endif diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.py b/buildroot/share/PlatformIO/scripts/common-dependencies.py index e90ba24dd3..faa44292a8 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.py +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.py @@ -94,7 +94,7 @@ if pioutil.is_pio_build(): val = None if val: opt = mat[1].upper() - blab("%s.custom_marlin.%s = '%s'" % ( env['PIOENV'], opt, val )) + blab("%s.custom_marlin.%s = '%s'" % ( env['PIOENV'], opt, val ), 2) add_to_feat_cnf(opt, val) def get_all_known_libs(): @@ -202,14 +202,14 @@ if pioutil.is_pio_build(): relp = os.path.relpath(fullpath, marlinbasedir) if srcfilepattern.match(relp): if info: - blab("Added src file %s (%s)" % (relp, str(info))) + blab("Added src file %s (%s)" % (relp, str(info)), 3) else: - blab("Added src file %s " % relp) + blab("Added src file %s " % relp, 3) cur_srcs.add(relp) # Special rule: If a direct folder is specified add all files within. fullplain = os.path.join(marlinbasedir, plain) if os.path.isdir(fullplain): - blab("Directory content addition for %s " % plain) + blab("Directory content addition for %s " % plain, 3) gpattern = os.path.join(fullplain, "**") for fname in glob.glob(gpattern, recursive=True): addentry(fname, "dca") @@ -227,12 +227,12 @@ if pioutil.is_pio_build(): # Special rule: If a direct folder is specified then remove all files within. def onremove(relp, info=None): if info: - blab("Removed src file %s (%s)" % (relp, str(info))) + blab("Removed src file %s (%s)" % (relp, str(info)), 3) else: - blab("Removed src file %s " % relp) + blab("Removed src file %s " % relp, 3) fullplain = os.path.join(marlinbasedir, plain) if os.path.isdir(fullplain): - blab("Directory content removal for %s " % plain) + blab("Directory content removal for %s " % plain, 2) def filt(x): common = os.path.commonpath([plain, x]) if not common == os.path.normpath(plain): return True @@ -248,10 +248,10 @@ if pioutil.is_pio_build(): cur_srcs = set(filter(filt, cur_srcs)) # Transform the resulting set into a string. for x in cur_srcs: - if len(build_src_filter) > 0: build_src_filter += ' ' + if build_src_filter != "": build_src_filter += ' ' build_src_filter += "+<" + x + ">" - #blab("Final build_src_filter: " + build_src_filter) + #blab("Final build_src_filter: " + build_src_filter, 3) else: build_src_filter = build_filters @@ -281,7 +281,7 @@ if pioutil.is_pio_build(): # def MarlinHas(env, feature): load_marlin_features() - r = re.compile('^' + feature + '$') + r = re.compile('^' + feature + '$', re.IGNORECASE) found = list(filter(r.match, env['MARLIN_FEATURES'])) # Defines could still be 'false' or '0', so check @@ -294,7 +294,7 @@ if pioutil.is_pio_build(): elif val in env['MARLIN_FEATURES']: some_on = env.MarlinHas(val) - #blab("%s is %s" % (feature, str(some_on))) + #blab("%s is %s" % (feature, str(some_on)), 2) return some_on diff --git a/ini/features.ini b/ini/features.ini index 96a27b3ff9..2b1d09e20f 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -56,10 +56,114 @@ DWIN_CREALITY_LCD = build_src_filter=+ DWIN_CREALITY_LCD_JYERSUI = build_src_filter=+ IS_DWIN_MARLINUI = build_src_filter=+ -HAS_GRAPHICAL_TFT = build_src_filter=+ - -TFT_FONT_HELVETICA = build_src_filter=+ -TFT_FONT_NOTOSANS = build_src_filter=+ -TFT_FONT_UNIFONT = build_src_filter=+ +HAS_GRAPHICAL_TFT = build_src_filter=+ - - +HAS_UI_320X.+ = build_src_filter=+ +HAS_UI_480X.+ = build_src_filter=+ +HAS_UI_1024X.+ = build_src_filter=+ +# Helvetica 14 +TFT_FONT_HELVETICA_14 = build_src_filter=+ +# Helvetica 19 +TFT_FONT_HELVETICA_19 = build_src_filter=+ +# Notosans 14 +TFT_FONT_NOTOSANS_14 = build_src_filter=+ + +TFT_FONT_NOTOSANS_14_LATIN = build_src_filter=+ +TFT_FONT_NOTOSANS_14_CYRIL = build_src_filter=+ +TFT_FONT_NOTOSANS_14_GREEK = build_src_filter=+ +TFT_FONT_NOTOSANS_14_KATA = build_src_filter=+ +TFT_FONT_NOTOSANS_14_KO = build_src_filter=+ +TFT_FONT_NOTOSANS_14_ZH_CN = build_src_filter=+ +TFT_FONT_NOTOSANS_14_ZH_TW = build_src_filter=+ +TFT_FONT_NOTOSANS_14_VI = build_src_filter=+ +# Notosans 16 +TFT_FONT_NOTOSANS_16 = build_src_filter=+ + +TFT_FONT_NOTOSANS_16_LATIN = build_src_filter=+ +TFT_FONT_NOTOSANS_16_CYRIL = build_src_filter=+ +TFT_FONT_NOTOSANS_16_GREEK = build_src_filter=+ +TFT_FONT_NOTOSANS_16_KATA = build_src_filter=+ +TFT_FONT_NOTOSANS_16_KO = build_src_filter=+ +TFT_FONT_NOTOSANS_16_ZH_CN = build_src_filter=+ +TFT_FONT_NOTOSANS_16_ZH_TW = build_src_filter=+ +TFT_FONT_NOTOSANS_16_VI = build_src_filter=+ +# Notosans 19 +TFT_FONT_NOTOSANS_19 = build_src_filter=+ + +TFT_FONT_NOTOSANS_19_LATIN = build_src_filter=+ +TFT_FONT_NOTOSANS_19_CYRIL = build_src_filter=+ +TFT_FONT_NOTOSANS_19_GREEK = build_src_filter=+ +TFT_FONT_NOTOSANS_19_KATA = build_src_filter=+ +TFT_FONT_NOTOSANS_19_KO = build_src_filter=+ +TFT_FONT_NOTOSANS_19_ZH_CN = build_src_filter=+ +TFT_FONT_NOTOSANS_19_ZH_TW = build_src_filter=+ +TFT_FONT_NOTOSANS_19_VI = build_src_filter=+ +# Notosans 26 +TFT_FONT_NOTOSANS_26 = build_src_filter=+ + +TFT_FONT_NOTOSANS_26_LATIN = build_src_filter=+ +TFT_FONT_NOTOSANS_26_CYRIL = build_src_filter=+ +TFT_FONT_NOTOSANS_26_GREEK = build_src_filter=+ +TFT_FONT_NOTOSANS_26_KATA = build_src_filter=+ +TFT_FONT_NOTOSANS_26_KO = build_src_filter=+ +TFT_FONT_NOTOSANS_26_ZH_CN = build_src_filter=+ +TFT_FONT_NOTOSANS_26_ZH_TW = build_src_filter=+ +TFT_FONT_NOTOSANS_26_VI = build_src_filter=+ +# Notosans 27 +TFT_FONT_NOTOSANS_27 = build_src_filter=+ + +TFT_FONT_NOTOSANS_27_LATIN = build_src_filter=+ +TFT_FONT_NOTOSANS_27_CYRIL = build_src_filter=+ +TFT_FONT_NOTOSANS_27_GREEK = build_src_filter=+ +TFT_FONT_NOTOSANS_27_KATA = build_src_filter=+ +TFT_FONT_NOTOSANS_27_KO = build_src_filter=+ +TFT_FONT_NOTOSANS_27_ZH_CN = build_src_filter=+ +TFT_FONT_NOTOSANS_27_ZH_TW = build_src_filter=+ +TFT_FONT_NOTOSANS_27_VI = build_src_filter=+ +# Notosans 28 +TFT_FONT_NOTOSANS_28 = build_src_filter=+ + +TFT_FONT_NOTOSANS_28_LATIN = build_src_filter=+ +TFT_FONT_NOTOSANS_28_CYRIL = build_src_filter=+ +TFT_FONT_NOTOSANS_28_GREEK = build_src_filter=+ +TFT_FONT_NOTOSANS_28_KATA = build_src_filter=+ +TFT_FONT_NOTOSANS_28_KO = build_src_filter=+ +TFT_FONT_NOTOSANS_28_ZH_CN = build_src_filter=+ +TFT_FONT_NOTOSANS_28_ZH_TW = build_src_filter=+ +TFT_FONT_NOTOSANS_28_VI = build_src_filter=+ +# Notosans 29 +TFT_FONT_NOTOSANS_29 = build_src_filter=+ + +TFT_FONT_NOTOSANS_29_LATIN = build_src_filter=+ +TFT_FONT_NOTOSANS_29_CYRIL = build_src_filter=+ +TFT_FONT_NOTOSANS_29_GREEK = build_src_filter=+ +TFT_FONT_NOTOSANS_29_KATA = build_src_filter=+ +TFT_FONT_NOTOSANS_29_KO = build_src_filter=+ +TFT_FONT_NOTOSANS_29_ZH_CN = build_src_filter=+ +TFT_FONT_NOTOSANS_29_ZH_TW = build_src_filter=+ +TFT_FONT_NOTOSANS_29_VI = build_src_filter=+ +# Unifont 10 +TFT_FONT_UNIFONT_10 = build_src_filter=+ + +TFT_FONT_UNIFONT_10_LATIN = build_src_filter=+ +TFT_FONT_UNIFONT_10_CYRIL = build_src_filter=+ +TFT_FONT_UNIFONT_10_GREEK = build_src_filter=+ +TFT_FONT_UNIFONT_10_KATA = build_src_filter=+ +TFT_FONT_UNIFONT_10_KO = build_src_filter=+ +TFT_FONT_UNIFONT_10_ZH_CN = build_src_filter=+ +TFT_FONT_UNIFONT_10_ZH_TW = build_src_filter=+ +TFT_FONT_UNIFONT_10_VI = build_src_filter=+ +# Unifont 20 +TFT_FONT_UNIFONT_20 = build_src_filter=+ + +TFT_FONT_UNIFONT_20_LATIN = build_src_filter=+ +TFT_FONT_UNIFONT_20_CYRIL = build_src_filter=+ +TFT_FONT_UNIFONT_20_GREEK = build_src_filter=+ +TFT_FONT_UNIFONT_20_KATA = build_src_filter=+ +TFT_FONT_UNIFONT_20_KO = build_src_filter=+ +TFT_FONT_UNIFONT_20_ZH_CN = build_src_filter=+ +TFT_FONT_UNIFONT_20_ZH_TW = build_src_filter=+ +TFT_FONT_UNIFONT_20_VI = build_src_filter=+ +# Unifont 30 +TFT_FONT_UNIFONT_30 = build_src_filter=+ + +TFT_FONT_UNIFONT_30_LATIN = build_src_filter=+ +TFT_FONT_UNIFONT_30_CYRIL = build_src_filter=+ +TFT_FONT_UNIFONT_30_GREEK = build_src_filter=+ +TFT_FONT_UNIFONT_30_KATA = build_src_filter=+ +TFT_FONT_UNIFONT_30_KO = build_src_filter=+ +TFT_FONT_UNIFONT_30_ZH_CN = build_src_filter=+ +TFT_FONT_UNIFONT_30_ZH_TW = build_src_filter=+ +TFT_FONT_UNIFONT_30_VI = build_src_filter=+ IS_TFTGLCD_PANEL = build_src_filter=+ HAS_TOUCH_BUTTONS = build_src_filter=+ HAS_MARLINUI_MENU = build_src_filter=+ - From 885e9cc0576af2c6a79d8bfa9a4f1560c6748b27 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 18 Jul 2023 00:41:02 +0000 Subject: [PATCH 631/659] [cron] Bump distribution date (2023-07-18) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 9b48bdda72..07a652980c 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-17" +//#define STRING_DISTRIBUTION_DATE "2023-07-18" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index aa5089e42e..bb12b390f9 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-17" + #define STRING_DISTRIBUTION_DATE "2023-07-18" #endif /** From 45193b4a1d82023f1b763c0340e40ec5b6fcc51c Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 19 Jul 2023 21:12:32 -0500 Subject: [PATCH 632/659] =?UTF-8?q?=F0=9F=94=A5=20Always=20use=20ISR=20for?= =?UTF-8?q?=20BABYSTEPPING=20(#26035)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 1 - Marlin/src/HAL/ESP32/inc/SanityCheck.h | 4 ---- Marlin/src/feature/babystep.cpp | 4 ++-- Marlin/src/feature/babystep.h | 9 ++------- Marlin/src/inc/Changes.h | 2 ++ Marlin/src/module/stepper.cpp | 20 ++++++++++---------- Marlin/src/module/stepper.h | 4 ++-- Marlin/src/module/temperature.cpp | 8 -------- 8 files changed, 18 insertions(+), 34 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index b1fde0a45d..f97f9d0173 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2206,7 +2206,6 @@ */ //#define BABYSTEPPING #if ENABLED(BABYSTEPPING) - //#define INTEGRATED_BABYSTEPPING // Integration of babystepping into the Stepper ISR //#define EP_BABYSTEPPING // M293/M294 babystepping with EMERGENCY_PARSER support //#define BABYSTEP_WITHOUT_HOMING //#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement) diff --git a/Marlin/src/HAL/ESP32/inc/SanityCheck.h b/Marlin/src/HAL/ESP32/inc/SanityCheck.h index e6c364a6fe..dd199c390d 100644 --- a/Marlin/src/HAL/ESP32/inc/SanityCheck.h +++ b/Marlin/src/HAL/ESP32/inc/SanityCheck.h @@ -52,10 +52,6 @@ #error "FAST_PWM_FAN is not available on TinyBee." #endif -#if ALL(I2S_STEPPER_STREAM, BABYSTEPPING) && DISABLED(INTEGRATED_BABYSTEPPING) - #error "BABYSTEPPING on I2S stream requires INTEGRATED_BABYSTEPPING." -#endif - #if USING_PULLDOWNS #error "PULLDOWN pin mode is not available on ESP32 boards." #endif diff --git a/Marlin/src/feature/babystep.cpp b/Marlin/src/feature/babystep.cpp index e431e40165..c6717268a6 100644 --- a/Marlin/src/feature/babystep.cpp +++ b/Marlin/src/feature/babystep.cpp @@ -66,7 +66,7 @@ void Babystep::add_mm(const AxisEnum axis, const_float_t mm) { steps[BS_AXIS_IND(axis)] = distance; TERN_(BABYSTEP_DISPLAY_TOTAL, axis_total[BS_TOTAL_IND(axis)] = distance); TERN_(BABYSTEP_ALWAYS_AVAILABLE, gcode.reset_stepper_timeout()); - TERN_(INTEGRATED_BABYSTEPPING, if (has_steps()) stepper.initiateBabystepping()); + TERN_(BABYSTEPPING, if (has_steps()) stepper.initiateBabystepping()); } #endif @@ -77,7 +77,7 @@ void Babystep::add_steps(const AxisEnum axis, const int16_t distance) { steps[BS_AXIS_IND(axis)] += distance; TERN_(BABYSTEP_DISPLAY_TOTAL, axis_total[BS_TOTAL_IND(axis)] += distance); TERN_(BABYSTEP_ALWAYS_AVAILABLE, gcode.reset_stepper_timeout()); - TERN_(INTEGRATED_BABYSTEPPING, if (has_steps()) stepper.initiateBabystepping()); + TERN_(BABYSTEPPING, if (has_steps()) stepper.initiateBabystepping()); } #if ENABLED(EP_BABYSTEPPING) diff --git a/Marlin/src/feature/babystep.h b/Marlin/src/feature/babystep.h index df88da6e14..38a19a3b14 100644 --- a/Marlin/src/feature/babystep.h +++ b/Marlin/src/feature/babystep.h @@ -23,13 +23,8 @@ #include "../inc/MarlinConfigPre.h" -#if ENABLED(INTEGRATED_BABYSTEPPING) - #define BABYSTEPS_PER_SEC 1000UL - #define BABYSTEP_TICKS ((STEPPER_TIMER_RATE) / (BABYSTEPS_PER_SEC)) -#else - #define BABYSTEPS_PER_SEC 976UL - #define BABYSTEP_TICKS ((TEMP_TIMER_RATE) / (BABYSTEPS_PER_SEC)) -#endif +#define BABYSTEPS_PER_SEC 1000UL +#define BABYSTEP_TICKS ((STEPPER_TIMER_RATE) / (BABYSTEPS_PER_SEC)) #if ANY(IS_CORE, BABYSTEP_XY, I2C_POSITION_ENCODERS) #define BS_AXIS_IND(A) A diff --git a/Marlin/src/inc/Changes.h b/Marlin/src/inc/Changes.h index 8a4a9c2b48..b64b6a7ca7 100644 --- a/Marlin/src/inc/Changes.h +++ b/Marlin/src/inc/Changes.h @@ -659,6 +659,8 @@ #error "Z3_USE_ENDSTOP is obsolete. Instead set Z2_STOP_PIN directly. (e.g., 'Z3_USE_ENDSTOP _ZMAX_' becomes 'Z3_STOP_PIN Z_MAX_PIN')" #elif defined(Z4_USE_ENDSTOP) #error "Z4_USE_ENDSTOP is obsolete. Instead set Z4_STOP_PIN directly. (e.g., 'Z4_USE_ENDSTOP _ZMAX_' becomes 'Z4_STOP_PIN Z_MAX_PIN')" +#elif defined(INTEGRATED_BABYSTEPPING) + #error "INTEGRATED_BABYSTEPPING is no longer needed and should be removed." #endif // L64xx stepper drivers have been removed diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index d1c8eef69c..9bafe7443d 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -106,7 +106,7 @@ Stepper stepper; // Singleton #include "../feature/bedlevel/bdl/bdl.h" #endif -#if ENABLED(INTEGRATED_BABYSTEPPING) +#if ENABLED(BABYSTEPPING) #include "../feature/babystep.h" #endif @@ -273,7 +273,7 @@ uint32_t Stepper::advance_divisor = 0, #endif #endif -#if ENABLED(INTEGRATED_BABYSTEPPING) +#if ENABLED(BABYSTEPPING) hal_timer_t Stepper::nextBabystepISR = BABYSTEP_NEVER; #endif @@ -1543,7 +1543,7 @@ void Stepper::isr() { // Define 2.5 msec task for auxilliary functions. if (!fxdTiCtrl_nextAuxISR) { endstops.update(); - TERN_(INTEGRATED_BABYSTEPPING, if (babystep.has_steps()) babystepping_isr()); + TERN_(BABYSTEPPING, if (babystep.has_steps()) babystepping_isr()); fxdTiCtrl_refreshAxisDidMove(); fxdTiCtrl_nextAuxISR = 0.0025f * (STEPPER_TIMER_RATE); } @@ -1574,7 +1574,7 @@ void Stepper::isr() { nextAdvanceISR = la_interval; #endif - #if ENABLED(INTEGRATED_BABYSTEPPING) + #if ENABLED(BABYSTEPPING) const bool is_babystep = (nextBabystepISR == 0); // 0 = Do Babystepping (XY)Z pulses if (is_babystep) nextBabystepISR = babystepping_isr(); #endif @@ -1583,7 +1583,7 @@ void Stepper::isr() { if (!nextMainISR) nextMainISR = block_phase_isr(); // Manage acc/deceleration, get next block - #if ENABLED(INTEGRATED_BABYSTEPPING) + #if ENABLED(BABYSTEPPING) if (is_babystep) // Avoid ANY stepping too soon after baby-stepping NOLESS(nextMainISR, (BABYSTEP_TICKS) / 8); // FULL STOP for 125µs after a baby-step @@ -1596,7 +1596,7 @@ void Stepper::isr() { TERN_(INPUT_SHAPING_X, NOMORE(interval, ShapingQueue::peek_x())); // Time until next input shaping echo for X TERN_(INPUT_SHAPING_Y, NOMORE(interval, ShapingQueue::peek_y())); // Time until next input shaping echo for Y TERN_(LIN_ADVANCE, NOMORE(interval, nextAdvanceISR)); // Come back early for Linear Advance? - TERN_(INTEGRATED_BABYSTEPPING, NOMORE(interval, nextBabystepISR)); // Come back early for Babystepping? + TERN_(BABYSTEPPING, NOMORE(interval, nextBabystepISR)); // Come back early for Babystepping? // // Compute remaining time for each ISR phase @@ -1608,7 +1608,7 @@ void Stepper::isr() { nextMainISR -= interval; TERN_(HAS_ZV_SHAPING, ShapingQueue::decrement_delays(interval)); TERN_(LIN_ADVANCE, if (nextAdvanceISR != LA_ADV_NEVER) nextAdvanceISR -= interval); - TERN_(INTEGRATED_BABYSTEPPING, if (nextBabystepISR != BABYSTEP_NEVER) nextBabystepISR -= interval); + TERN_(BABYSTEPPING, if (nextBabystepISR != BABYSTEP_NEVER) nextBabystepISR -= interval); } // standard motion control @@ -2807,7 +2807,7 @@ hal_timer_t Stepper::block_phase_isr() { #endif // LIN_ADVANCE -#if ENABLED(INTEGRATED_BABYSTEPPING) +#if ENABLED(BABYSTEPPING) // Timer interrupt for baby-stepping hal_timer_t Stepper::babystepping_isr() { @@ -3669,7 +3669,7 @@ void Stepper::report_positions() { // No other ISR should ever interrupt this! void Stepper::do_babystep(const AxisEnum axis, const bool direction) { - IF_DISABLED(INTEGRATED_BABYSTEPPING, cli()); + IF_DISABLED(BABYSTEPPING, cli()); switch (axis) { @@ -3750,7 +3750,7 @@ void Stepper::report_positions() { default: break; } - IF_DISABLED(INTEGRATED_BABYSTEPPING, sei()); + IF_DISABLED(BABYSTEPPING, sei()); } #endif // BABYSTEPPING diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 8ec4024ea6..7dbb6b8b5a 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -416,7 +416,7 @@ class Stepper { static bool la_active; // Whether linear advance is used on the present segment. #endif - #if ENABLED(INTEGRATED_BABYSTEPPING) + #if ENABLED(BABYSTEPPING) static constexpr hal_timer_t BABYSTEP_NEVER = HAL_TIMER_TYPE_MAX; static hal_timer_t nextBabystepISR; #endif @@ -475,7 +475,7 @@ class Stepper { static void advance_isr(); #endif - #if ENABLED(INTEGRATED_BABYSTEPPING) + #if ENABLED(BABYSTEPPING) // The Babystepping ISR phase static hal_timer_t babystepping_isr(); FORCE_INLINE static void initiateBabystepping() { diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index d7bf9c8b79..d7c764540b 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -160,10 +160,6 @@ #include "stepper.h" #endif -#if ENABLED(BABYSTEPPING) && DISABLED(INTEGRATED_BABYSTEPPING) - #include "../feature/babystep.h" -#endif - #if ENABLED(FILAMENT_WIDTH_SENSOR) #include "../feature/filwidth.h" #endif @@ -4122,10 +4118,6 @@ void Temperature::isr() { // Additional ~1kHz Tasks // - #if ENABLED(BABYSTEPPING) && DISABLED(INTEGRATED_BABYSTEPPING) - babystep.task(); - #endif - // Check fan tachometers TERN_(HAS_FANCHECK, fan_check.update_tachometers()); From 6bc42300a1ce3fcbf2b396a6e1fbf11453f77544 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 20 Jul 2023 06:06:07 +0000 Subject: [PATCH 633/659] [cron] Bump distribution date (2023-07-20) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 07a652980c..4d497d77fd 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-18" +//#define STRING_DISTRIBUTION_DATE "2023-07-20" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index bb12b390f9..eb1db1bc5e 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-18" + #define STRING_DISTRIBUTION_DATE "2023-07-20" #endif /** From a0e3dea8b879aba8e0d2d7e4dc6a6447b3fe76ad Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 20 Jul 2023 20:25:39 -0500 Subject: [PATCH 634/659] =?UTF-8?q?=F0=9F=9A=B8=20ColorUI=20Touch=20Calibr?= =?UTF-8?q?ate=20in=20CW=20order?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/macros.h | 6 +++--- Marlin/src/inc/Conditionals_LCD.h | 12 +++++++----- Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 2 ++ Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp | 3 ++- Marlin/src/lcd/dogm/status_screen_DOGM.cpp | 2 +- .../src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp | 10 +++++----- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 8 ++++---- Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp | 6 +++--- .../src/lcd/extui/mks_ui/draw_touch_calibration.cpp | 6 +++--- .../src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp | 2 +- Marlin/src/lcd/tft/tft_string.h | 5 ++++- Marlin/src/lcd/tft/ui_common.cpp | 10 +++++----- Marlin/src/lcd/tft/ui_common.h | 2 +- Marlin/src/lcd/tft_io/touch_calibration.cpp | 6 +++--- Marlin/src/lcd/tft_io/touch_calibration.h | 6 +++--- Marlin/src/lcd/touch/touch_buttons.cpp | 2 +- Marlin/src/libs/W25Qxx.cpp | 10 ++++++---- 17 files changed, 54 insertions(+), 44 deletions(-) diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h index da17450c2b..bb2bea2e30 100644 --- a/Marlin/src/core/macros.h +++ b/Marlin/src/core/macros.h @@ -396,9 +396,9 @@ FORCE_INLINE constexpr T operator|(T x, T y) { return static_cast(static_cast(x) | static_cast(y)); } \ FORCE_INLINE constexpr T operator^(T x, T y) { return static_cast(static_cast(x) ^ static_cast(y)); } \ FORCE_INLINE constexpr T operator~(T x) { return static_cast(~static_cast(x)); } \ - FORCE_INLINE T & operator&=(T &x, T y) { return x &= y; } \ - FORCE_INLINE T & operator|=(T &x, T y) { return x |= y; } \ - FORCE_INLINE T & operator^=(T &x, T y) { return x ^= y; } + FORCE_INLINE T & operator&=(T &x, T y) { x = x & y; return x; } \ + FORCE_INLINE T & operator|=(T &x, T y) { x = x | y; return x; } \ + FORCE_INLINE T & operator^=(T &x, T y) { x = x ^ y; return x; } // C++11 solution that is standard compliant. is not available on all platform namespace Private { diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 01bc2805d9..084a3d74e9 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -1782,20 +1782,22 @@ #define HAS_UI_1024x600 1 #endif +// Number of text lines the screen can display (may depend on font used) +// Touch screens leave space for extra buttons at the bottom #if ANY(HAS_UI_320x240, HAS_UI_480x272) #if ENABLED(TFT_COLOR_UI_PORTRAIT) - #define LCD_HEIGHT TERN(TOUCH_SCREEN, 8, 9) // Fewer lines with touch buttons onscreen + #define LCD_HEIGHT TERN(TOUCH_SCREEN, 8, 9) #else - #define LCD_HEIGHT TERN(TOUCH_SCREEN, 6, 7) // Fewer lines with touch buttons onscreen + #define LCD_HEIGHT TERN(TOUCH_SCREEN, 6, 7) #endif #elif HAS_UI_480x320 #if ENABLED(TFT_COLOR_UI_PORTRAIT) - #define LCD_HEIGHT TERN(TOUCH_SCREEN, 9, 10) // Fewer lines with touch buttons onscreen + #define LCD_HEIGHT TERN(TOUCH_SCREEN, 9, 10) #else - #define LCD_HEIGHT TERN(TOUCH_SCREEN, 6, 7) // Fewer lines with touch buttons onscreen + #define LCD_HEIGHT TERN(TOUCH_SCREEN, 6, 7) #endif #elif HAS_UI_1024x600 - #define LCD_HEIGHT TERN(TOUCH_SCREEN, 12, 13) // Fewer lines with touch buttons onscreen + #define LCD_HEIGHT TERN(TOUCH_SCREEN, 12, 13) #endif // This emulated DOGM has 'touch/xpt2046', not 'tft/xpt2046' diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index 148d0877cf..b59ec150a1 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -784,6 +784,7 @@ void MarlinUI::draw_status_message(const bool blink) { } #if HAS_PRINT_PROGRESS + #define TPOFFSET (LCD_WIDTH - 1) static uint8_t timepos = TPOFFSET - 6; static char buffer[8]; @@ -837,6 +838,7 @@ void MarlinUI::draw_status_message(const bool blink) { } } #endif + #endif // HAS_PRINT_PROGRESS /** diff --git a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp index 02e5f05d92..4cec4dfa43 100644 --- a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp +++ b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp @@ -596,8 +596,8 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const #endif // HAS_CUTTER - #if HAS_PRINT_PROGRESS // UNTESTED!!! + #define TPOFFSET (LCD_WIDTH - 1) static uint8_t timepos = TPOFFSET - 6; @@ -648,6 +648,7 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const } } #endif + #endif // HAS_PRINT_PROGRESS #if ENABLED(LCD_PROGRESS_BAR) diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp index 5bce83849f..2067a8428d 100644 --- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp +++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp @@ -773,7 +773,7 @@ void MarlinUI::draw_status_screen() { u8g.drawBox(PROGRESS_BAR_X + 1, PROGRESS_BAR_Y + 1, progress_bar_solid_width, 2); // Progress strings - if (PAGE_CONTAINS(EXTRAS_BASELINE - INFO_FONT_ASCENT, EXTRAS_BASELINE - 1)){ + if (PAGE_CONTAINS(EXTRAS_BASELINE - INFO_FONT_ASCENT, EXTRAS_BASELINE - 1)) { ui.rotate_progress(); lcd_put_u8str(PROGRESS_BAR_X, EXTRAS_BASELINE, bufferc); } diff --git a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp index 48c49b5c33..c6aff38dc9 100644 --- a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp +++ b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp @@ -510,8 +510,8 @@ U8G_PB_DEV(u8g_dev_tft_320x240_upscale_from_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, } else { // clear last cross - x = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_RIGHT)].x; - y = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_RIGHT)].y; + x = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_LEFT)].x; + y = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_LEFT)].y; drawCross(x, y, TFT_MARLINBG_COLOR); } @@ -519,10 +519,10 @@ U8G_PB_DEV(u8g_dev_tft_320x240_upscale_from_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, if (stage < CALIBRATION_SUCCESS) { // handle current state switch (stage) { - case CALIBRATION_TOP_LEFT: str = GET_TEXT_F(MSG_TOP_LEFT); break; - case CALIBRATION_BOTTOM_LEFT: str = GET_TEXT_F(MSG_BOTTOM_LEFT); break; - case CALIBRATION_TOP_RIGHT: str = GET_TEXT_F(MSG_TOP_RIGHT); break; + case CALIBRATION_TOP_LEFT: str = GET_TEXT_F(MSG_TOP_LEFT); break; + case CALIBRATION_TOP_RIGHT: str = GET_TEXT_F(MSG_TOP_RIGHT); break; case CALIBRATION_BOTTOM_RIGHT: str = GET_TEXT_F(MSG_BOTTOM_RIGHT); break; + case CALIBRATION_BOTTOM_LEFT: str = GET_TEXT_F(MSG_BOTTOM_LEFT); break; default: break; } diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index fea1f081f6..5156848a43 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -1420,7 +1420,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case MLEVEL_BL: if (draw) - drawMenuItem(row, ICON_AxisBL, F("Bottom Left")); + drawMenuItem(row, ICON_AxisBL, GET_TEXT_F(MSG_BOTTOM_LEFT)); else { popupHandler(Popup_MoveWait); if (use_probe) { @@ -1443,7 +1443,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case MLEVEL_TL: if (draw) - drawMenuItem(row, ICON_AxisTL, F("Top Left")); + drawMenuItem(row, ICON_AxisTL, GET_TEXT_F(MSG_TOP_LEFT)); else { popupHandler(Popup_MoveWait); if (use_probe) { @@ -1466,7 +1466,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case MLEVEL_TR: if (draw) - drawMenuItem(row, ICON_AxisTR, F("Top Right")); + drawMenuItem(row, ICON_AxisTR, GET_TEXT_F(MSG_TOP_RIGHT)); else { popupHandler(Popup_MoveWait); if (use_probe) { @@ -1489,7 +1489,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case MLEVEL_BR: if (draw) - drawMenuItem(row, ICON_AxisBR, F("Bottom Right")); + drawMenuItem(row, ICON_AxisBR, GET_TEXT_F(MSG_BOTTOM_RIGHT)); else { popupHandler(Popup_MoveWait); if (use_probe) { diff --git a/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp b/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp index cf87bacf3b..470fe10c43 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp @@ -60,10 +60,10 @@ namespace ExtUI { void onPrintTimerStopped() { dgus.timerEvent(AC_timer_stopped); } void onPrintDone() {} - void onFilamentRunout(const extruder_t) { dgus.filamentRunout(); } + void onFilamentRunout(const extruder_t) { dgus.filamentRunout(); } - void onUserConfirmRequired(const char * const msg) { dgus.confirmationRequest(msg); } - void onStatusChanged(const char * const msg) { dgus.statusChange(msg); } + void onUserConfirmRequired(const char * const msg) { dgus.confirmationRequest(msg); } + void onStatusChanged(const char * const msg) { dgus.statusChange(msg); } void onHomingStart() { dgus.homingStart(); } void onHomingDone() { dgus.homingComplete(); } diff --git a/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp b/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp index dda9ee1c29..0fd2aa0ee9 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_touch_calibration.cpp @@ -62,8 +62,8 @@ void lv_update_touch_calibration_screen() { } else { // clear last cross - x = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_RIGHT)].x; - y = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_RIGHT)].y; + x = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_LEFT)].x; + y = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_LEFT)].y; drawCross(x, y, LV_COLOR_BACKGROUND.full); } @@ -72,9 +72,9 @@ void lv_update_touch_calibration_screen() { // handle current state switch (stage) { case CALIBRATION_TOP_LEFT: str = GET_TEXT(MSG_TOP_LEFT); break; - case CALIBRATION_BOTTOM_LEFT: str = GET_TEXT(MSG_BOTTOM_LEFT); break; case CALIBRATION_TOP_RIGHT: str = GET_TEXT(MSG_TOP_RIGHT); break; case CALIBRATION_BOTTOM_RIGHT: str = GET_TEXT(MSG_BOTTOM_RIGHT); break; + case CALIBRATION_BOTTOM_LEFT: str = GET_TEXT(MSG_BOTTOM_LEFT); break; default: break; } diff --git a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp index 09b9c7a53e..a53e0d606b 100644 --- a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp +++ b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp @@ -310,7 +310,7 @@ static bool get_point(int16_t *x, int16_t *y) { #if ENABLED(TOUCH_SCREEN_CALIBRATION) const calibrationState state = touch_calibration.get_calibration_state(); - if (state >= CALIBRATION_TOP_LEFT && state <= CALIBRATION_BOTTOM_RIGHT) { + if (WITHIN(state, CALIBRATION_TOP_LEFT, CALIBRATION_BOTTOM_LEFT)) { if (touch_calibration.handleTouch(*x, *y)) lv_update_touch_calibration_screen(); return false; } diff --git a/Marlin/src/lcd/tft/tft_string.h b/Marlin/src/lcd/tft/tft_string.h index ae05df40f0..008064f692 100644 --- a/Marlin/src/lcd/tft/tft_string.h +++ b/Marlin/src/lcd/tft/tft_string.h @@ -173,7 +173,10 @@ class TFT_String { static uint16_t *string() { return data; } static uint16_t width() { return span; } static uint16_t center(const uint16_t width) { return span > width ? 0 : (width - span) / 2; } - static uint16_t vcenter(const uint16_t height) { return (height + font_header->capitalAHeight + 1) / 2 > font_header->fontAscent ? (height + font_header->capitalAHeight + 1) / 2 - font_header->fontAscent : 0 ; } + static uint16_t vcenter(const uint16_t height) { + const uint16_t mid = (height + font_header->capitalAHeight + 1) / 2; + return mid > font_header->fontAscent ? mid - font_header->fontAscent : 0; + } }; extern TFT_String tft_string; diff --git a/Marlin/src/lcd/tft/ui_common.cpp b/Marlin/src/lcd/tft/ui_common.cpp index 09364d846b..5f426294dc 100644 --- a/Marlin/src/lcd/tft/ui_common.cpp +++ b/Marlin/src/lcd/tft/ui_common.cpp @@ -440,8 +440,8 @@ void MarlinUI::clear_lcd() { stage = touch_calibration.calibration_start(); } else { - x = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_RIGHT)].x; - y = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_RIGHT)].y; + x = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_LEFT)].x; + y = touch_calibration.calibration_points[_MIN(stage - 1, CALIBRATION_BOTTOM_LEFT)].y; tft.canvas(x - 15, y - 15, 31, 31); tft.set_background(COLOR_BACKGROUND); } @@ -450,10 +450,10 @@ void MarlinUI::clear_lcd() { if (stage < CALIBRATION_SUCCESS) { switch (stage) { - case CALIBRATION_TOP_LEFT: tft_string.set(GET_TEXT(MSG_TOP_LEFT)); break; - case CALIBRATION_BOTTOM_LEFT: tft_string.set(GET_TEXT(MSG_BOTTOM_LEFT)); break; - case CALIBRATION_TOP_RIGHT: tft_string.set(GET_TEXT(MSG_TOP_RIGHT)); break; + case CALIBRATION_TOP_LEFT: tft_string.set(GET_TEXT(MSG_TOP_LEFT)); break; + case CALIBRATION_TOP_RIGHT: tft_string.set(GET_TEXT(MSG_TOP_RIGHT)); break; case CALIBRATION_BOTTOM_RIGHT: tft_string.set(GET_TEXT(MSG_BOTTOM_RIGHT)); break; + case CALIBRATION_BOTTOM_LEFT: tft_string.set(GET_TEXT(MSG_BOTTOM_LEFT)); break; default: break; } diff --git a/Marlin/src/lcd/tft/ui_common.h b/Marlin/src/lcd/tft/ui_common.h index 592bf3184e..8229ab36ab 100644 --- a/Marlin/src/lcd/tft/ui_common.h +++ b/Marlin/src/lcd/tft/ui_common.h @@ -109,7 +109,7 @@ void disable_steppers(); bool lcd_sleep_task(); #endif -void draw_heater_status(uint16_t x, uint16_t y, const int8_t Heater); +void draw_heater_status(uint16_t x, uint16_t y, const int8_t heater); void draw_fan_status(uint16_t x, uint16_t y, const bool blink); void text_line(const uint16_t y, uint16_t color=COLOR_BACKGROUND); diff --git a/Marlin/src/lcd/tft_io/touch_calibration.cpp b/Marlin/src/lcd/tft_io/touch_calibration.cpp index c239a94b41..3cd73fe620 100644 --- a/Marlin/src/lcd/tft_io/touch_calibration.cpp +++ b/Marlin/src/lcd/tft_io/touch_calibration.cpp @@ -103,10 +103,10 @@ bool TouchCalibration::handleTouch(const uint16_t x, const uint16_t y) { } switch (calibration_state) { - case CALIBRATION_TOP_LEFT: calibration_state = CALIBRATION_BOTTOM_LEFT; break; - case CALIBRATION_BOTTOM_LEFT: calibration_state = CALIBRATION_TOP_RIGHT; break; + case CALIBRATION_TOP_LEFT: calibration_state = CALIBRATION_TOP_RIGHT; break; case CALIBRATION_TOP_RIGHT: calibration_state = CALIBRATION_BOTTOM_RIGHT; break; - case CALIBRATION_BOTTOM_RIGHT: validate_calibration(); break; + case CALIBRATION_BOTTOM_RIGHT: calibration_state = CALIBRATION_BOTTOM_LEFT; break; + case CALIBRATION_BOTTOM_LEFT: validate_calibration(); break; default: break; } diff --git a/Marlin/src/lcd/tft_io/touch_calibration.h b/Marlin/src/lcd/tft_io/touch_calibration.h index e9d3110c56..2dd8a81ab7 100644 --- a/Marlin/src/lcd/tft_io/touch_calibration.h +++ b/Marlin/src/lcd/tft_io/touch_calibration.h @@ -43,9 +43,9 @@ typedef struct __attribute__((__packed__)) { enum calibrationState : uint8_t { CALIBRATION_TOP_LEFT = 0x00, - CALIBRATION_BOTTOM_LEFT, CALIBRATION_TOP_RIGHT, CALIBRATION_BOTTOM_RIGHT, + CALIBRATION_BOTTOM_LEFT, CALIBRATION_SUCCESS, CALIBRATION_FAIL, CALIBRATION_NONE, @@ -73,12 +73,12 @@ public: calibration_state = CALIBRATION_TOP_LEFT; calibration_points[CALIBRATION_TOP_LEFT].x = 30; calibration_points[CALIBRATION_TOP_LEFT].y = 30; - calibration_points[CALIBRATION_BOTTOM_LEFT].x = 30; - calibration_points[CALIBRATION_BOTTOM_LEFT].y = TFT_HEIGHT - 31; calibration_points[CALIBRATION_TOP_RIGHT].x = TFT_WIDTH - 31; calibration_points[CALIBRATION_TOP_RIGHT].y = 30; calibration_points[CALIBRATION_BOTTOM_RIGHT].x = TFT_WIDTH - 31; calibration_points[CALIBRATION_BOTTOM_RIGHT].y = TFT_HEIGHT - 31; + calibration_points[CALIBRATION_BOTTOM_LEFT].x = 30; + calibration_points[CALIBRATION_BOTTOM_LEFT].y = TFT_HEIGHT - 31; failed_count = 0; return calibration_state; } diff --git a/Marlin/src/lcd/touch/touch_buttons.cpp b/Marlin/src/lcd/touch/touch_buttons.cpp index 856594c31a..1ae5397b2e 100644 --- a/Marlin/src/lcd/touch/touch_buttons.cpp +++ b/Marlin/src/lcd/touch/touch_buttons.cpp @@ -80,7 +80,7 @@ uint8_t TouchButtons::read_buttons() { #if ENABLED(TOUCH_SCREEN_CALIBRATION) const calibrationState state = touch_calibration.get_calibration_state(); - if (WITHIN(state, CALIBRATION_TOP_LEFT, CALIBRATION_BOTTOM_RIGHT)) { + if (WITHIN(state, CALIBRATION_TOP_LEFT, CALIBRATION_BOTTOM_LEFT)) { if (touch_calibration.handleTouch(x, y)) ui.refresh(); return 0; } diff --git a/Marlin/src/libs/W25Qxx.cpp b/Marlin/src/libs/W25Qxx.cpp index 591d0d0693..558d604ea5 100644 --- a/Marlin/src/libs/W25Qxx.cpp +++ b/Marlin/src/libs/W25Qxx.cpp @@ -48,10 +48,12 @@ void W25QXXFlash::init(uint8_t spiRate) { * STM32F1 has 3 SPI ports, SPI1 in APB2, SPI2/SPI3 in APB1 * so the minimum prescale of SPI1 is DIV4, SPI2/SPI3 is DIV2 */ - #if SPI_DEVICE == 1 - #define SPI_CLOCK_MAX SPI_CLOCK_DIV4 - #else - #define SPI_CLOCK_MAX SPI_CLOCK_DIV2 + #ifndef SPI_CLOCK_MAX + #if SPI_DEVICE == 1 + #define SPI_CLOCK_MAX SPI_CLOCK_DIV4 + #else + #define SPI_CLOCK_MAX SPI_CLOCK_DIV2 + #endif #endif uint8_t clock; switch (spiRate) { From 9135e3f7d3fd0d634656f1c54c70a0ba1f878bfd Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 20 Jul 2023 21:10:03 -0500 Subject: [PATCH 635/659] =?UTF-8?q?=F0=9F=9A=B8=20Revert=20M206=20Home=20O?= =?UTF-8?q?ffset=20behavior=20(#25996)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 13 ++++--- Marlin/src/MarlinCore.cpp | 2 +- Marlin/src/feature/powerloss.cpp | 13 +++---- Marlin/src/feature/powerloss.h | 4 +-- Marlin/src/gcode/calibrate/G28.cpp | 9 +---- Marlin/src/gcode/gcode.cpp | 4 +-- Marlin/src/gcode/gcode.h | 4 +-- Marlin/src/gcode/geometry/G53-G59.cpp | 7 +--- Marlin/src/gcode/geometry/G92.cpp | 12 +++---- Marlin/src/gcode/geometry/M206_M428.cpp | 4 +-- Marlin/src/gcode/probe/M951.cpp | 4 +-- Marlin/src/inc/Conditionals_adv.h | 1 + Marlin/src/inc/Conditionals_post.h | 12 +++---- Marlin/src/lcd/menu/menu_advanced.cpp | 2 +- Marlin/src/module/delta.cpp | 2 +- Marlin/src/module/delta.h | 2 +- Marlin/src/module/motion.cpp | 28 ++++----------- Marlin/src/module/motion.h | 45 +++++++++---------------- Marlin/src/module/settings.cpp | 7 ++-- Marlin/src/module/tool_change.cpp | 23 ++++--------- ini/features.ini | 2 +- 21 files changed, 70 insertions(+), 130 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index f97f9d0173..6c29900cdf 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -3835,14 +3835,17 @@ //#define REPETIER_GCODE_M360 // Add commands originally from Repetier FW /** - * Enable this option for a leaner build of Marlin that removes all - * workspace offsets, simplifying coordinate transformations, leveling, etc. - * - * - M206 and M428 are disabled. - * - G92 will revert to its behavior from Marlin 1.0. + * Enable this option for a leaner build of Marlin that removes + * workspace offsets to slightly optimize performance. + * G92 will revert to its behavior from Marlin 1.0. */ //#define NO_WORKSPACE_OFFSETS +/** + * Disable M206 and M428 if you don't need home offsets. + */ +//#define NO_HOME_OFFSETS + /** * CNC G-code options * Support CNC-style G-code dialects used by laser cutters, drawing machine cams, etc. diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 03b5e8c7a9..43a3cf04a8 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -1337,7 +1337,7 @@ void setup() { SETUP_RUN(touchBt.init()); #endif - TERN_(HAS_M206_COMMAND, current_position += home_offset); // Init current position based on home_offset + TERN_(HAS_HOME_OFFSET, current_position += home_offset); // Init current position based on home_offset sync_plan_position(); // Vital to init stepper/planner equivalent for current_position diff --git a/Marlin/src/feature/powerloss.cpp b/Marlin/src/feature/powerloss.cpp index 7c49aee247..7fb60349c6 100644 --- a/Marlin/src/feature/powerloss.cpp +++ b/Marlin/src/feature/powerloss.cpp @@ -207,7 +207,7 @@ void PrintJobRecovery::save(const bool force/*=false*/, const float zraise/*=POW TERN_(GCODE_REPEAT_MARKERS, info.stored_repeat = repeat); TERN_(HAS_HOME_OFFSET, info.home_offset = home_offset); - TERN_(HAS_POSITION_SHIFT, info.position_shift = position_shift); + TERN_(HAS_WORKSPACE_OFFSET, info.workspace_offset = workspace_offset); E_TERN_(info.active_extruder = active_extruder); #if DISABLED(NO_VOLUMETRICS) @@ -552,10 +552,7 @@ void PrintJobRecovery::resume() { TERN_(GCODE_REPEAT_MARKERS, repeat = info.stored_repeat); TERN_(HAS_HOME_OFFSET, home_offset = info.home_offset); - TERN_(HAS_POSITION_SHIFT, position_shift = info.position_shift); - #if HAS_HOME_OFFSET || HAS_POSITION_SHIFT - LOOP_NUM_AXES(i) update_workspace_offset((AxisEnum)i); - #endif + TERN_(HAS_WORKSPACE_OFFSET, workspace_offset = info.workspace_offset); // Relative axis modes gcode.axis_relative = info.axis_relative; @@ -600,11 +597,11 @@ void PrintJobRecovery::resume() { DEBUG_EOL(); #endif - #if HAS_POSITION_SHIFT - DEBUG_ECHOPGM("position_shift: "); + #if HAS_WORKSPACE_OFFSET + DEBUG_ECHOPGM("workspace_offset: "); LOOP_NUM_AXES(i) { if (i) DEBUG_CHAR(','); - DEBUG_ECHO(info.position_shift[i]); + DEBUG_ECHO(info.workspace_offset[i]); } DEBUG_EOL(); #endif diff --git a/Marlin/src/feature/powerloss.h b/Marlin/src/feature/powerloss.h index df46545825..a69862b259 100644 --- a/Marlin/src/feature/powerloss.h +++ b/Marlin/src/feature/powerloss.h @@ -67,8 +67,8 @@ typedef struct { #if HAS_HOME_OFFSET xyz_pos_t home_offset; #endif - #if HAS_POSITION_SHIFT - xyz_pos_t position_shift; + #if HAS_WORKSPACE_OFFSET + xyz_pos_t workspace_offset; #endif #if HAS_MULTI_EXTRUDER uint8_t active_extruder; diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 33a8ed76e6..b364c0382c 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -120,14 +120,7 @@ * (Z is already at the right height) */ constexpr xy_float_t safe_homing_xy = { Z_SAFE_HOMING_X_POINT, Z_SAFE_HOMING_Y_POINT }; - #if HAS_HOME_OFFSET && DISABLED(Z_SAFE_HOMING_POINT_ABSOLUTE) - xy_float_t okay_homing_xy = safe_homing_xy; - okay_homing_xy -= home_offset; - #else - constexpr xy_float_t okay_homing_xy = safe_homing_xy; - #endif - - destination.set(okay_homing_xy, current_position.z); + destination.set(safe_homing_xy, current_position.z); TERN_(HOMING_Z_WITH_PROBE, destination -= probe.offset_xy); diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 16847eb1f1..fd2a78d1fd 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -715,7 +715,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 204: M204(); break; // M204: Set acceleration case 205: M205(); break; // M205: Set advanced settings - #if HAS_M206_COMMAND + #if HAS_HOME_OFFSET case 206: M206(); break; // M206: Set home offsets #endif @@ -881,7 +881,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { case 425: M425(); break; // M425: Tune backlash compensation #endif - #if HAS_M206_COMMAND + #if HAS_HOME_OFFSET case 428: M428(); break; // M428: Apply current_position to home_offset #endif diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 23f245faa1..f9ee81f2eb 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -860,7 +860,7 @@ private: static void M205(); static void M205_report(const bool forReplay=true); - #if HAS_M206_COMMAND + #if HAS_HOME_OFFSET static void M206(); static void M206_report(const bool forReplay=true); #endif @@ -1043,7 +1043,7 @@ private: static void M425_report(const bool forReplay=true); #endif - #if HAS_M206_COMMAND + #if HAS_HOME_OFFSET static void M428(); #endif diff --git a/Marlin/src/gcode/geometry/G53-G59.cpp b/Marlin/src/gcode/geometry/G53-G59.cpp index c51c29f423..017b54a084 100644 --- a/Marlin/src/gcode/geometry/G53-G59.cpp +++ b/Marlin/src/gcode/geometry/G53-G59.cpp @@ -37,12 +37,7 @@ bool GcodeSuite::select_coordinate_system(const int8_t _new) { xyz_float_t new_offset{0}; if (WITHIN(_new, 0, MAX_COORDINATE_SYSTEMS - 1)) new_offset = coordinate_system[_new]; - LOOP_NUM_AXES(i) { - if (position_shift[i] != new_offset[i]) { - position_shift[i] = new_offset[i]; - update_workspace_offset((AxisEnum)i); - } - } + workspace_offset = new_offset; return true; } diff --git a/Marlin/src/gcode/geometry/G92.cpp b/Marlin/src/gcode/geometry/G92.cpp index dfe4170620..626441f4e2 100644 --- a/Marlin/src/gcode/geometry/G92.cpp +++ b/Marlin/src/gcode/geometry/G92.cpp @@ -63,10 +63,7 @@ void GcodeSuite::G92() { #if ENABLED(CNC_COORDINATE_SYSTEMS) && !IS_SCARA case 1: // G92.1 - Zero the Workspace Offset - LOOP_NUM_AXES(i) if (position_shift[i]) { - position_shift[i] = 0; - update_workspace_offset((AxisEnum)i); - } + workspace_offset.reset(); break; #endif @@ -92,10 +89,9 @@ void GcodeSuite::G92() { v = TERN0(HAS_EXTRUDERS, i == E_AXIS) ? l : LOGICAL_TO_NATIVE(l, i), // Axis position in NATIVE space (applying the existing offset) d = v - current_position[i]; // How much is the current axis position altered by? if (!NEAR_ZERO(d)) { - #if HAS_POSITION_SHIFT && NONE(IS_SCARA, POLARGRAPH) // When using workspaces... + #if HAS_WORKSPACE_OFFSET && NONE(IS_SCARA, POLARGRAPH) // When using workspaces... if (TERN1(HAS_EXTRUDERS, i != E_AXIS)) { - position_shift[i] += d; // ...most axes offset the workspace... - update_workspace_offset((AxisEnum)i); + workspace_offset[i] += d; // ...most axes offset the workspace... } else { #if HAS_EXTRUDERS @@ -120,7 +116,7 @@ void GcodeSuite::G92() { #if ENABLED(CNC_COORDINATE_SYSTEMS) // Apply Workspace Offset to the active coordinate system if (WITHIN(active_coordinate_system, 0, MAX_COORDINATE_SYSTEMS - 1)) - coordinate_system[active_coordinate_system] = position_shift; + coordinate_system[active_coordinate_system] = workspace_offset; #endif if (sync_XYZE) sync_plan_position(); diff --git a/Marlin/src/gcode/geometry/M206_M428.cpp b/Marlin/src/gcode/geometry/M206_M428.cpp index b055f0e207..7017eabbdc 100644 --- a/Marlin/src/gcode/geometry/M206_M428.cpp +++ b/Marlin/src/gcode/geometry/M206_M428.cpp @@ -22,7 +22,7 @@ #include "../../inc/MarlinConfig.h" -#if HAS_M206_COMMAND +#if HAS_HOME_OFFSET #include "../gcode.h" #include "../../module/motion.h" @@ -101,4 +101,4 @@ void GcodeSuite::M428() { OKAY_BUZZ(); } -#endif // HAS_M206_COMMAND +#endif // HAS_HOME_OFFSET diff --git a/Marlin/src/gcode/probe/M951.cpp b/Marlin/src/gcode/probe/M951.cpp index 7a06400e33..93feffdce9 100644 --- a/Marlin/src/gcode/probe/M951.cpp +++ b/Marlin/src/gcode/probe/M951.cpp @@ -46,7 +46,7 @@ void mpe_settings_init() { mpe_settings.parking_xpos[0] = pex[0]; // M951 L mpe_settings.parking_xpos[1] = pex[1]; // M951 R mpe_settings.grab_distance = PARKING_EXTRUDER_GRAB_DISTANCE; // M951 I - TERN_(HAS_HOME_OFFSET, set_home_offset(X_AXIS, mpe_settings.grab_distance * -1)); + TERN_(HAS_HOME_OFFSET, set_home_offset(X_AXIS, -mpe_settings.grab_distance)); mpe_settings.slow_feedrate = MMM_TO_MMS(MPE_SLOW_SPEED); // M951 J mpe_settings.fast_feedrate = MMM_TO_MMS(MPE_FAST_SPEED); // M951 H mpe_settings.travel_distance = MPE_TRAVEL_DISTANCE; // M951 D @@ -59,7 +59,7 @@ void GcodeSuite::M951() { if (parser.seenval('R')) mpe_settings.parking_xpos[1] = parser.value_linear_units(); if (parser.seenval('I')) { mpe_settings.grab_distance = parser.value_linear_units(); - TERN_(HAS_HOME_OFFSET, set_home_offset(X_AXIS, mpe_settings.grab_distance * -1)); + TERN_(HAS_HOME_OFFSET, set_home_offset(X_AXIS, -mpe_settings.grab_distance)); } if (parser.seenval('J')) mpe_settings.slow_feedrate = MMM_TO_MMS(parser.value_linear_units()); if (parser.seenval('H')) mpe_settings.fast_feedrate = MMM_TO_MMS(parser.value_linear_units()); diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index eac9e21110..25050d972f 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -97,6 +97,7 @@ #if !HAS_X_AXIS //#define LCD_SHOW_E_TOTAL #define NO_WORKSPACE_OFFSETS + #define NO_HOME_OFFSETS #undef AUTOTEMP #undef CALIBRATION_MEASURE_LEFT #undef CALIBRATION_MEASURE_RIGHT diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 8cc3f6bc2d..442fcfbafd 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -3140,15 +3140,15 @@ #undef MOTOR_CURRENT #endif -// Updated G92 behavior shifts the workspace +// G92 shifts the workspace #if DISABLED(NO_WORKSPACE_OFFSETS) - #define HAS_POSITION_SHIFT 1 + #define HAS_WORKSPACE_OFFSET 1 +#endif +#if DISABLED(NO_HOME_OFFSETS) #if IS_CARTESIAN - #define HAS_HOME_OFFSET 1 // The home offset also shifts the coordinate space - #define HAS_WORKSPACE_OFFSET 1 // Cumulative offset to workspace to save some calculation - #define HAS_M206_COMMAND 1 // M206 sets the home offset for Cartesian machines + #define HAS_HOME_OFFSET 1 // M206 affects the Native Machine Space on G28 #elif IS_SCARA - #define HAS_SCARA_OFFSET 1 // The SCARA home offset applies only on G28 + #define HAS_SCARA_OFFSET 1 // The SCARA home offset applies only on G28 #endif #endif diff --git a/Marlin/src/lcd/menu/menu_advanced.cpp b/Marlin/src/lcd/menu/menu_advanced.cpp index 7c142d8390..7cf4d34cb7 100644 --- a/Marlin/src/lcd/menu/menu_advanced.cpp +++ b/Marlin/src/lcd/menu/menu_advanced.cpp @@ -695,7 +695,7 @@ void menu_advanced_settings() { } #endif - #if HAS_M206_COMMAND + #if HAS_HOME_OFFSET // M428 - Set Home Offsets ACTION_ITEM(MSG_SET_HOME_OFFSETS, []{ queue.inject(F("M428")); ui.return_to_status(); }); #endif diff --git a/Marlin/src/module/delta.cpp b/Marlin/src/module/delta.cpp index 58dc13972c..cfa134860b 100644 --- a/Marlin/src/module/delta.cpp +++ b/Marlin/src/module/delta.cpp @@ -101,7 +101,7 @@ void recalc_delta_settings() { * * Suggested optimizations include: * - * - Disable the home_offset (M206) and/or position_shift (G92) + * - Disable the home_offset (M206) and/or workspace_offset (G92) * features to remove up to 12 float additions. */ diff --git a/Marlin/src/module/delta.h b/Marlin/src/module/delta.h index 0a0c6124ee..041094fd7f 100644 --- a/Marlin/src/module/delta.h +++ b/Marlin/src/module/delta.h @@ -64,7 +64,7 @@ void recalc_delta_settings(); * * Suggested optimizations include: * - * - Disable the home_offset (M206) and/or position_shift (G92) + * - Disable the home_offset (M206) and/or workspace_offset (G92) * features to remove up to 12 float additions. * * - Use a fast-inverse-sqrt function and add the reciprocal. diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index c97523cbd3..cd768d9e40 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -177,16 +177,12 @@ xyz_pos_t cartes; * The workspace can be offset by some commands, or * these offsets may be omitted to save on computation. */ -#if HAS_POSITION_SHIFT - // The distance that XYZ has been offset by G92. Reset by G28. - xyz_pos_t position_shift{0}; -#endif #if HAS_HOME_OFFSET // This offset is added to the configured home position. // Set by M206, M428, or menu item. Saved to EEPROM. xyz_pos_t home_offset{0}; #endif -#if HAS_HOME_OFFSET && HAS_POSITION_SHIFT +#if HAS_WORKSPACE_OFFSET // The above two are combined to save on computes xyz_pos_t workspace_offset{0}; #endif @@ -2468,7 +2464,7 @@ void set_axis_is_at_home(const AxisEnum axis) { #if ENABLED(DUAL_X_CARRIAGE) if (axis == X_AXIS && (active_extruder == 1 || dual_x_carriage_mode == DXC_DUPLICATION_MODE)) { - current_position.x = x_home_pos(active_extruder); + current_position.x = SUM_TERN(HAS_HOME_OFFSET, x_home_pos(active_extruder), home_offset.x); return; } #endif @@ -2478,7 +2474,7 @@ void set_axis_is_at_home(const AxisEnum axis) { #elif ENABLED(DELTA) current_position[axis] = (axis == Z_AXIS) ? DIFF_TERN(HAS_BED_PROBE, delta_height, probe.offset.z) : base_home_pos(axis); #else - current_position[axis] = base_home_pos(axis); + current_position[axis] = SUM_TERN(HAS_HOME_OFFSET, base_home_pos(axis), home_offset[axis]); #endif /** @@ -2499,10 +2495,7 @@ void set_axis_is_at_home(const AxisEnum axis) { TERN_(BABYSTEP_DISPLAY_TOTAL, babystep.reset_total(axis)); - #if HAS_POSITION_SHIFT - position_shift[axis] = 0; - update_workspace_offset(axis); - #endif + TERN_(HAS_WORKSPACE_OFFSET, workspace_offset[axis] = 0); if (DEBUGGING(LEVELING)) { #if HAS_HOME_OFFSET @@ -2513,20 +2506,11 @@ void set_axis_is_at_home(const AxisEnum axis) { } } -#if HAS_WORKSPACE_OFFSET - void update_workspace_offset(const AxisEnum axis) { - workspace_offset[axis] = home_offset[axis] + position_shift[axis]; - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Axis ", AS_CHAR(AXIS_CHAR(axis)), " home_offset = ", home_offset[axis], " position_shift = ", position_shift[axis]); - } -#endif - -#if HAS_M206_COMMAND +#if HAS_HOME_OFFSET /** - * Change the home offset for an axis. - * Also refreshes the workspace offset. + * Set the home offset for an axis. */ void set_home_offset(const AxisEnum axis, const_float_t v) { home_offset[axis] = v; - update_workspace_offset(axis); } #endif diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index 9d5da849e5..fceeffa707 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -147,12 +147,6 @@ inline float home_bump_mm(const AxisEnum axis) { return pgm_read_any(&home_bump_mm_P[axis]); } -#if HAS_WORKSPACE_OFFSET - void update_workspace_offset(const AxisEnum axis); -#else - inline void update_workspace_offset(const AxisEnum) {} -#endif - #if HAS_HOTEND_OFFSET extern xyz_pos_t hotend_offset[HOTENDS]; void reset_hotend_offsets(); @@ -484,32 +478,23 @@ void home_if_needed(const bool keeplev=false); #define BABYSTEP_ALLOWED() ((ENABLED(BABYSTEP_WITHOUT_HOMING) || all_axes_trusted()) && (ENABLED(BABYSTEP_ALWAYS_AVAILABLE) || printer_busy())) +#if HAS_HOME_OFFSET + extern xyz_pos_t home_offset; +#endif + /** * Workspace offsets */ -#if HAS_HOME_OFFSET || HAS_POSITION_SHIFT - #if HAS_HOME_OFFSET - extern xyz_pos_t home_offset; - #endif - #if HAS_POSITION_SHIFT - extern xyz_pos_t position_shift; - #endif - #if HAS_HOME_OFFSET && HAS_POSITION_SHIFT - extern xyz_pos_t workspace_offset; - #define _WS workspace_offset - #elif HAS_HOME_OFFSET - #define _WS home_offset - #else - #define _WS position_shift - #endif - #define NATIVE_TO_LOGICAL(POS, AXIS) ((POS) + _WS[AXIS]) - #define LOGICAL_TO_NATIVE(POS, AXIS) ((POS) - _WS[AXIS]) - FORCE_INLINE void toLogical(xy_pos_t &raw) { raw += _WS; } - FORCE_INLINE void toLogical(xyz_pos_t &raw) { raw += _WS; } - FORCE_INLINE void toLogical(xyze_pos_t &raw) { raw += _WS; } - FORCE_INLINE void toNative(xy_pos_t &raw) { raw -= _WS; } - FORCE_INLINE void toNative(xyz_pos_t &raw) { raw -= _WS; } - FORCE_INLINE void toNative(xyze_pos_t &raw) { raw -= _WS; } +#if HAS_WORKSPACE_OFFSET + extern xyz_pos_t workspace_offset; + #define NATIVE_TO_LOGICAL(POS, AXIS) ((POS) + workspace_offset[AXIS]) + #define LOGICAL_TO_NATIVE(POS, AXIS) ((POS) - workspace_offset[AXIS]) + FORCE_INLINE void toLogical(xy_pos_t &raw) { raw += workspace_offset; } + FORCE_INLINE void toLogical(xyz_pos_t &raw) { raw += workspace_offset; } + FORCE_INLINE void toLogical(xyze_pos_t &raw) { raw += workspace_offset; } + FORCE_INLINE void toNative(xy_pos_t &raw) { raw -= workspace_offset; } + FORCE_INLINE void toNative(xyz_pos_t &raw) { raw -= workspace_offset; } + FORCE_INLINE void toNative(xyze_pos_t &raw) { raw -= workspace_offset; } #else #define NATIVE_TO_LOGICAL(POS, AXIS) (POS) #define LOGICAL_TO_NATIVE(POS, AXIS) (POS) @@ -633,7 +618,7 @@ void home_if_needed(const bool keeplev=false); #endif -#if HAS_M206_COMMAND +#if HAS_HOME_OFFSET void set_home_offset(const AxisEnum axis, const_float_t v); #endif diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index c8ce84cd83..c125577f5c 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -670,10 +670,7 @@ void MarlinSettings::postprocess() { #endif // Software endstops depend on home_offset - LOOP_NUM_AXES(i) { - update_workspace_offset((AxisEnum)i); - update_software_endstops((AxisEnum)i); - } + LOOP_NUM_AXES(i) update_software_endstops((AxisEnum)i); TERN_(ENABLE_LEVELING_FADE_HEIGHT, set_z_fade_height(new_z_fade_height, false)); // false = no report @@ -3701,7 +3698,7 @@ void MarlinSettings::reset() { // // M206 Home Offset // - TERN_(HAS_M206_COMMAND, gcode.M206_report(forReplay)); + TERN_(HAS_HOME_OFFSET, gcode.M206_report(forReplay)); // // M218 Hotend offsets diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index d65b3fb32a..4c286c81a0 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -1417,19 +1417,13 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { #if ANY(TC_GCODE_USE_GLOBAL_X, TC_GCODE_USE_GLOBAL_Y, TC_GCODE_USE_GLOBAL_Z) // G0/G1/G2/G3/G5 moves are relative to the active tool. // Shift the workspace to make custom moves relative to T0. - xyz_pos_t old_position_shift; + xyz_pos_t old_workspace_offset; if (new_tool > 0) { - old_position_shift = position_shift; + old_workspace_offset = workspace_offset; const xyz_pos_t &he = hotend_offset[new_tool]; - #if ENABLED(TC_GCODE_USE_GLOBAL_X) - position_shift.x -= he.x; update_workspace_offset(X_AXIS); - #endif - #if ENABLED(TC_GCODE_USE_GLOBAL_Y) - position_shift.y -= he.y; update_workspace_offset(Y_AXIS); - #endif - #if ENABLED(TC_GCODE_USE_GLOBAL_Z) - position_shift.z -= he.z; update_workspace_offset(Z_AXIS); - #endif + TERN_(TC_GCODE_USE_GLOBAL_X, workspace_offset.x -= he.x); + TERN_(TC_GCODE_USE_GLOBAL_Y, workspace_offset.y -= he.y); + TERN_(TC_GCODE_USE_GLOBAL_Z, workspace_offset.z -= he.z); } #endif @@ -1462,12 +1456,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { } #if ANY(TC_GCODE_USE_GLOBAL_X, TC_GCODE_USE_GLOBAL_Y, TC_GCODE_USE_GLOBAL_Z) - if (new_tool > 0) { - position_shift = old_position_shift; - TERN_(TC_GCODE_USE_GLOBAL_X, update_workspace_offset(X_AXIS)); - TERN_(TC_GCODE_USE_GLOBAL_Y, update_workspace_offset(Y_AXIS)); - TERN_(TC_GCODE_USE_GLOBAL_Z, update_workspace_offset(Z_AXIS)); - } + if (new_tool > 0) workspace_offset = old_workspace_offset; #endif // If using MECHANICAL_SWITCHING extruder/nozzle, set HOTEND_OFFSET in Z axis after running EVENT_GCODE_TOOLCHANGE diff --git a/ini/features.ini b/ini/features.ini index 2b1d09e20f..1a3546e575 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -318,7 +318,7 @@ PARK_HEAD_ON_PAUSE = build_src_filter=+ CNC_WORKSPACE_PLANES = build_src_filter=+ CNC_COORDINATE_SYSTEMS = build_src_filter=+ -HAS_M206_COMMAND = build_src_filter=+ +HAS_HOME_OFFSET = build_src_filter=+ EXPECTED_PRINTER_CHECK = build_src_filter=+ HOST_KEEPALIVE_FEATURE = build_src_filter=+ AUTO_REPORT_POSITION = build_src_filter=+ From 91c6a7180d8aa3f2ab8b9bbb486d68dc9657dbff Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 21 Jul 2023 06:06:24 +0000 Subject: [PATCH 636/659] [cron] Bump distribution date (2023-07-21) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 4d497d77fd..af787a2c11 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-20" +//#define STRING_DISTRIBUTION_DATE "2023-07-21" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index eb1db1bc5e..13fc730122 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-20" + #define STRING_DISTRIBUTION_DATE "2023-07-21" #endif /** From 6379d4dbca389b264cf5b404bd6fd9f5c3221be8 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sat, 22 Jul 2023 15:05:04 +1200 Subject: [PATCH 637/659] =?UTF-8?q?=F0=9F=A9=B9=20Suppress=20G33=20string?= =?UTF-8?q?=20warning=20(#26095)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/calibrate/G33.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/gcode/calibrate/G33.cpp b/Marlin/src/gcode/calibrate/G33.cpp index a3cb7f0b9d..7530737dde 100644 --- a/Marlin/src/gcode/calibrate/G33.cpp +++ b/Marlin/src/gcode/calibrate/G33.cpp @@ -649,7 +649,7 @@ void GcodeSuite::G33() { SERIAL_ECHOLNPGM("Save with M500 and/or copy to Configuration.h"); } else { // !end iterations - SString<14> msg; + SString<15> msg; if (iterations < 31) msg.setf(F("Iteration : %02i"), (unsigned int)iterations); else From e451dec674d9093c8c10f953c5f6bcc7f9ed42b0 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 22 Jul 2023 06:05:47 +0000 Subject: [PATCH 638/659] [cron] Bump distribution date (2023-07-22) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index af787a2c11..293a90aaa1 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-21" +//#define STRING_DISTRIBUTION_DATE "2023-07-22" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 13fc730122..205a5d8c42 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-21" + #define STRING_DISTRIBUTION_DATE "2023-07-22" #endif /** From 5bcaae62f2c7965ee7f99eb44a44022f1cbad959 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Mon, 24 Jul 2023 15:31:39 +1200 Subject: [PATCH 639/659] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Compact=20RGB565?= =?UTF-8?q?=20TFT=20boot=20images=20(#26011)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/Configuration.h | 2 + Marlin/src/HAL/LPC1768/tft/tft_spi.h | 6 +- Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h | 2 +- Marlin/src/HAL/STM32/tft/tft_fsmc.h | 6 +- Marlin/src/HAL/STM32/tft/tft_ltdc.h | 6 +- Marlin/src/HAL/STM32/tft/tft_spi.h | 6 +- Marlin/src/HAL/STM32F1/tft/tft_fsmc.h | 6 +- Marlin/src/HAL/STM32F1/tft/tft_spi.h | 6 +- Marlin/src/lcd/tft/canvas.cpp | 108 +- Marlin/src/lcd/tft/images/back_32x32x4.cpp | 6 +- .../lcd/tft/images/background_320x30x16.cpp | 6 +- .../lcd/tft/images/bootscreen_1024x600x16.cpp | 4184 +++++++++++++++++ .../lcd/tft/images/bootscreen_112x38x1.cpp | 15 +- .../lcd/tft/images/bootscreen_195x59x16.cpp | 99 +- .../lcd/tft/images/bootscreen_228x255x2.cpp | 12 +- .../lcd/tft/images/bootscreen_228x255x4.cpp | 12 +- .../lcd/tft/images/bootscreen_240x250x16.cpp | 376 ++ .../lcd/tft/images/bootscreen_320x240x16.cpp | 276 +- .../lcd/tft/images/bootscreen_480x320x16.cpp | 453 +- .../lcd/tft/images/btn_rounded_42x39x4.cpp | 6 +- .../lcd/tft/images/btn_rounded_64x52x4.cpp | 6 +- Marlin/src/lcd/tft/images/cancel_64x64x4.cpp | 6 +- Marlin/src/lcd/tft/images/chamber_64x64x4.cpp | 8 +- Marlin/src/lcd/tft/images/confirm_64x64x4.cpp | 6 +- .../src/lcd/tft/images/decrease_64x64x4.cpp | 6 +- .../src/lcd/tft/images/directory_32x32x4.cpp | 6 +- Marlin/src/lcd/tft/images/down_32x32x4.cpp | 6 +- Marlin/src/lcd/tft/images/fan_64x64x4.cpp | 8 +- .../src/lcd/tft/images/fan_fast_64x64x4.cpp | 8 +- .../src/lcd/tft/images/fan_slow_64x64x4.cpp | 8 +- .../src/lcd/tft/images/feedrate_32x32x4.cpp | 6 +- .../src/lcd/tft/images/flowrate_32x32x4.cpp | 6 +- .../src/lcd/tft/images/heated_bed_64x64x4.cpp | 8 +- Marlin/src/lcd/tft/images/home_64x64x4.cpp | 6 +- Marlin/src/lcd/tft/images/hotend_64x64x4.cpp | 6 +- .../src/lcd/tft/images/increase_64x64x4.cpp | 6 +- Marlin/src/lcd/tft/images/left_32x32x4.cpp | 6 +- .../src/lcd/tft/images/leveling_32x32x4.cpp | 6 +- Marlin/src/lcd/tft/images/menu_64x64x4.cpp | 6 +- Marlin/src/lcd/tft/images/pause_64x64x4.cpp | 6 +- Marlin/src/lcd/tft/images/refresh_32x32x4.cpp | 6 +- Marlin/src/lcd/tft/images/right_32x32x4.cpp | 6 +- Marlin/src/lcd/tft/images/sd_64x64x4.cpp | 6 +- .../src/lcd/tft/images/settings_64x64x4.cpp | 6 +- Marlin/src/lcd/tft/images/slider_8x16x4.cpp | 6 +- .../lcd/tft/images/time_elapsed_32x32x4.cpp | 7 +- .../lcd/tft/images/time_remaining_32x32x4.cpp | 7 +- Marlin/src/lcd/tft/images/up_32x32x4.cpp | 6 +- Marlin/src/lcd/tft/tft.h | 16 +- Marlin/src/lcd/tft/tft_image.h | 11 +- Marlin/src/lcd/tft/tft_queue.cpp | 6 +- Marlin/src/lcd/tft/ui_1024x600.h | 12 +- Marlin/src/lcd/tft/ui_240x320.h | 8 +- Marlin/src/lcd/tft/ui_480x320.h | 2 +- Marlin/src/lcd/tft/ui_color_ui.cpp | 2 +- Marlin/src/lcd/tft_io/tft_io.h | 4 +- Marlin/src/lcd/tft_io/tft_orientation.h | 2 +- Marlin/src/pins/linux/pins_RAMPS_LINUX.h | 2 +- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h | 4 +- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h | 2 +- Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h | 4 +- Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h | 4 +- .../src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h | 2 +- Marlin/src/pins/stm32f1/pins_CHITU3D_common.h | 2 +- Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h | 2 +- Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h | 2 +- .../src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h | 2 +- .../pins/stm32f1/pins_MKS_ROBIN_NANO_common.h | 2 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h | 2 +- .../pins/stm32f4/pins_BTT_SKR_V2_0_common.h | 2 +- .../pins/stm32f4/pins_MKS_MONSTER8_common.h | 2 +- Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h | 2 +- .../stm32f4/pins_MKS_ROBIN_NANO_V3_common.h | 2 +- .../src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h | 2 +- Marlin/src/pins/stm32f4/pins_TRONXY_V10.h | 2 +- .../pins/stm32h7/pins_BTT_SKR_V3_0_common.h | 2 +- .../share/pixmaps/logo/marlin-240x250.png | Bin 0 -> 27169 bytes .../scripts/rle16_compress_cpp_image_data.py | 142 + buildroot/tests/LERDGEK | 2 +- 82 files changed, 5783 insertions(+), 247 deletions(-) create mode 100644 Marlin/src/lcd/tft/images/bootscreen_1024x600x16.cpp create mode 100644 Marlin/src/lcd/tft/images/bootscreen_240x250x16.cpp create mode 100644 buildroot/share/pixmaps/logo/marlin-240x250.png create mode 100755 buildroot/share/scripts/rle16_compress_cpp_image_data.py diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 90a5939a24..3127d59e8b 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -3313,6 +3313,8 @@ #define TFT_THEME BLACK_MARLIN //#define TFT_SHARED_IO // I/O is shared between TFT display and other devices. Disable async data transfer. + + #define COMPACT_MARLIN_BOOT_LOGO // Use compressed data to save Flash space #endif #if ENABLED(TFT_LVGL_UI) diff --git a/Marlin/src/HAL/LPC1768/tft/tft_spi.h b/Marlin/src/HAL/LPC1768/tft/tft_spi.h index 0ebb29dd60..6d5829fc73 100644 --- a/Marlin/src/HAL/LPC1768/tft/tft_spi.h +++ b/Marlin/src/HAL/LPC1768/tft/tft_spi.h @@ -49,7 +49,7 @@ #define DATASIZE_8BIT SSP_DATABIT_8 #define DATASIZE_16BIT SSP_DATABIT_16 #define TFT_IO_DRIVER TFT_SPI -#define DMA_MAX_SIZE 0xFFF +#define DMA_MAX_WORDS 0xFFF #define DMA_MINC_ENABLE 1 #define DMA_MINC_DISABLE 0 @@ -82,8 +82,8 @@ public: static void writeSequence(uint16_t *data, uint16_t count) { transmit(DMA_MINC_ENABLE, data, count); } static void writeMultiple(uint16_t color, uint32_t count) { while (count > 0) { - transmit(DMA_MINC_DISABLE, &color, count > DMA_MAX_SIZE ? DMA_MAX_SIZE : count); - count = count > DMA_MAX_SIZE ? count - DMA_MAX_SIZE : 0; + transmit(DMA_MINC_DISABLE, &color, count > DMA_MAX_WORDS ? DMA_MAX_WORDS : count); + count = count > DMA_MAX_WORDS ? count - DMA_MAX_WORDS : 0; } } }; diff --git a/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h b/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h index c388f3288b..944b8267f6 100644 --- a/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h +++ b/Marlin/src/HAL/NATIVE_SIM/tft/tft_spi.h @@ -33,7 +33,7 @@ #define DATASIZE_8BIT 8 #define DATASIZE_16BIT 16 #define TFT_IO_DRIVER TFT_SPI -#define DMA_MAX_SIZE 0xFFFF +#define DMA_MAX_WORDS 0xFFFF #define DMA_MINC_ENABLE 1 #define DMA_MINC_DISABLE 0 diff --git a/Marlin/src/HAL/STM32/tft/tft_fsmc.h b/Marlin/src/HAL/STM32/tft/tft_fsmc.h index e710e5511c..1776cbdb0f 100644 --- a/Marlin/src/HAL/STM32/tft/tft_fsmc.h +++ b/Marlin/src/HAL/STM32/tft/tft_fsmc.h @@ -45,7 +45,7 @@ #define DATASIZE_8BIT SPI_DATASIZE_8BIT #define DATASIZE_16BIT SPI_DATASIZE_16BIT #define TFT_IO_DRIVER TFT_FSMC -#define DMA_MAX_SIZE 0xFFFF +#define DMA_MAX_WORDS 0xFFFF #define TFT_DATASIZE TERN(TFT_INTERFACE_FSMC_8BIT, DATASIZE_8BIT, DATASIZE_16BIT) typedef TERN(TFT_INTERFACE_FSMC_8BIT, uint8_t, uint16_t) tft_data_t; @@ -85,8 +85,8 @@ class TFT_FSMC { static void writeSequence(uint16_t *data, uint16_t count) { transmit(DMA_PINC_ENABLE, data, count); } static void writeMultiple(uint16_t color, uint32_t count) { while (count > 0) { - transmit(DMA_MINC_DISABLE, &color, count > DMA_MAX_SIZE ? DMA_MAX_SIZE : count); - count = count > DMA_MAX_SIZE ? count - DMA_MAX_SIZE : 0; + transmit(DMA_MINC_DISABLE, &color, count > DMA_MAX_WORDS ? DMA_MAX_WORDS : count); + count = count > DMA_MAX_WORDS ? count - DMA_MAX_WORDS : 0; } } }; diff --git a/Marlin/src/HAL/STM32/tft/tft_ltdc.h b/Marlin/src/HAL/STM32/tft/tft_ltdc.h index 22c3a13778..90cc58d8a5 100644 --- a/Marlin/src/HAL/STM32/tft/tft_ltdc.h +++ b/Marlin/src/HAL/STM32/tft/tft_ltdc.h @@ -32,7 +32,7 @@ #define DATASIZE_8BIT SPI_DATASIZE_8BIT #define DATASIZE_16BIT SPI_DATASIZE_16BIT #define TFT_IO_DRIVER TFT_LTDC -#define DMA_MAX_SIZE 0xFFFF +#define DMA_MAX_WORDS 0xFFFF #define TFT_DATASIZE DATASIZE_16BIT typedef uint16_t tft_data_t; @@ -71,8 +71,8 @@ class TFT_LTDC { static void writeSequence(uint16_t *data, uint16_t count) { transmit(DMA_PINC_ENABLE, data, count); } static void writeMultiple(uint16_t color, uint32_t count) { while (count > 0) { - transmit(DMA_PINC_DISABLE, &color, count > DMA_MAX_SIZE ? DMA_MAX_SIZE : count); - count = count > DMA_MAX_SIZE ? count - DMA_MAX_SIZE : 0; + transmit(DMA_PINC_DISABLE, &color, count > DMA_MAX_WORDS ? DMA_MAX_WORDS : count); + count = count > DMA_MAX_WORDS ? count - DMA_MAX_WORDS : 0; } } }; diff --git a/Marlin/src/HAL/STM32/tft/tft_spi.h b/Marlin/src/HAL/STM32/tft/tft_spi.h index 3d1f9829e3..6345c91f6c 100644 --- a/Marlin/src/HAL/STM32/tft/tft_spi.h +++ b/Marlin/src/HAL/STM32/tft/tft_spi.h @@ -42,7 +42,7 @@ #define DATASIZE_16BIT SPI_DATASIZE_16BIT #define DATASIZE_32BIT SPI_DATASIZE_32BIT #define TFT_IO_DRIVER TFT_SPI -#define DMA_MAX_SIZE 0xFFFF +#define DMA_MAX_WORDS 0xFFFF class TFT_SPI { private: @@ -81,8 +81,8 @@ public: static void writeSequence(uint16_t *data, uint16_t count) { transmit(DMA_MINC_ENABLE, data, count); } static void writeMultiple(uint16_t color, uint32_t count) { while (count > 0) { - transmit(DMA_MINC_DISABLE, &color, count > DMA_MAX_SIZE ? DMA_MAX_SIZE : count); - count = count > DMA_MAX_SIZE ? count - DMA_MAX_SIZE : 0; + transmit(DMA_MINC_DISABLE, &color, count > DMA_MAX_WORDS ? DMA_MAX_WORDS : count); + count = count > DMA_MAX_WORDS ? count - DMA_MAX_WORDS : 0; } } }; diff --git a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h index 67a2b9cd53..214acf127e 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h +++ b/Marlin/src/HAL/STM32F1/tft/tft_fsmc.h @@ -40,7 +40,7 @@ #define DATASIZE_8BIT DMA_SIZE_8BITS #define DATASIZE_16BIT DMA_SIZE_16BITS #define TFT_IO_DRIVER TFT_FSMC -#define DMA_MAX_SIZE 0xFFFF +#define DMA_MAX_WORDS 0xFFFF #define DMA_PINC_ENABLE DMA_PINC_MODE #define DMA_PINC_DISABLE 0 @@ -77,8 +77,8 @@ class TFT_FSMC { static void writeSequence(uint16_t *data, uint16_t count) { transmit(DMA_PINC_ENABLE, data, count); } static void writeMultiple(uint16_t color, uint32_t count) { while (count > 0) { - transmit(DMA_PINC_DISABLE, &color, count > DMA_MAX_SIZE ? DMA_MAX_SIZE : count); - count = count > DMA_MAX_SIZE ? count - DMA_MAX_SIZE : 0; + transmit(DMA_PINC_DISABLE, &color, count > DMA_MAX_WORDS ? DMA_MAX_WORDS : count); + count = count > DMA_MAX_WORDS ? count - DMA_MAX_WORDS : 0; } } }; diff --git a/Marlin/src/HAL/STM32F1/tft/tft_spi.h b/Marlin/src/HAL/STM32F1/tft/tft_spi.h index 5a57081c2a..af53f352be 100644 --- a/Marlin/src/HAL/STM32F1/tft/tft_spi.h +++ b/Marlin/src/HAL/STM32F1/tft/tft_spi.h @@ -56,7 +56,7 @@ #define DATASIZE_8BIT DATA_SIZE_8BIT #define DATASIZE_16BIT DATA_SIZE_16BIT #define TFT_IO_DRIVER TFT_SPI -#define DMA_MAX_SIZE 0xFFFF +#define DMA_MAX_WORDS 0xFFFF #define DMA_MINC_ENABLE DMA_MINC_MODE #define DMA_MINC_DISABLE 0 @@ -89,8 +89,8 @@ public: static void writeSequence(uint16_t *data, uint16_t count) { transmit(DMA_MINC_ENABLE, data, count); } static void writeMultiple(uint16_t color, uint32_t count) { while (count > 0) { - transmit(DMA_MINC_DISABLE, &color, count > DMA_MAX_SIZE ? DMA_MAX_SIZE : count); - count = count > DMA_MAX_SIZE ? count - DMA_MAX_SIZE : 0; + transmit(DMA_MINC_DISABLE, &color, count > DMA_MAX_WORDS ? DMA_MAX_WORDS : count); + count = count > DMA_MAX_WORDS ? count - DMA_MAX_WORDS : 0; } } }; diff --git a/Marlin/src/lcd/tft/canvas.cpp b/Marlin/src/lcd/tft/canvas.cpp index 4a056524a2..4bded72251 100644 --- a/Marlin/src/lcd/tft/canvas.cpp +++ b/Marlin/src/lcd/tft/canvas.cpp @@ -37,12 +37,14 @@ void Canvas::instantiate(uint16_t x, uint16_t y, uint16_t width, uint16_t height startLine = 0; endLine = 0; + // The TFT handles DMA within the given canvas rectangle + // so whatever is drawn will be offset on the screen by x,y. tft.set_window(x, y, x + width - 1, y + height - 1); } void Canvas::next() { startLine = endLine; - endLine = TFT_BUFFER_SIZE < width * (height - startLine) ? startLine + TFT_BUFFER_SIZE / width : height; + endLine = (TFT_BUFFER_WORDS) < width * (height - startLine) ? startLine + (TFT_BUFFER_WORDS) / width : height; } bool Canvas::toScreen() { @@ -99,28 +101,84 @@ void Canvas::addImage(int16_t x, int16_t y, MarlinImage image, uint16_t *colors) uint16_t *data = (uint16_t *)images[image].data; if (!data) return; - uint16_t image_width = images[image].width, - image_height = images[image].height; + const uint16_t image_width = images[image].width, + image_height = images[image].height; colorMode_t color_mode = images[image].colorMode; - if (color_mode != HIGHCOLOR) - return addImage(x, y, image_width, image_height, color_mode, (uint8_t *)data, colors); - - // HIGHCOLOR - 16 bits per pixel - - for (int16_t i = 0; i < image_height; i++) { - int16_t line = y + i; - if (line >= startLine && line < endLine) { - uint16_t *pixel = buffer + x + (line - startLine) * width; - for (int16_t j = 0; j < image_width; j++) { - if ((x + j >= 0) && (x + j < width)) *pixel = ENDIAN_COLOR(*data); - pixel++; - data++; + if (color_mode == HIGHCOLOR) { + // HIGHCOLOR - 16 bits per pixel + int16_t line = y; + for (int16_t i = 0; i < image_height; i++, line++) { + if (WITHIN(line, startLine, endLine - 1)) { + uint16_t *pixel = buffer + x + (line - startLine) * width; + uint16_t cx = x; + for (int16_t j = 0; j < image_width; j++, cx++) { + if (WITHIN(cx, 0, width - 1)) { + uint16_t color = ENDIAN_COLOR(*data); + if (color == 0x0001) color = COLOR_BACKGROUND; + *pixel = color; + } + pixel++; + data++; + } } + else + data += image_width; } - else - data += image_width; + return; } + + #if ENABLED(COMPACT_MARLIN_BOOT_LOGO) + // RLE16 HIGHCOLOR - 16 bits per pixel + if (color_mode == RLE16) { + uint8_t *bytedata = (uint8_t *)images[image].data; + if (!bytedata) return; + + // Loop through the image data advancing the row and column as needed + int16_t srcy = 0, srcx = 0, // Image data line / column index + dsty = y, dstx = x; // Destination line / column index + + uint16_t color = 0; // Persist the last fetched color value + bool done = false; + while (!done) { + uint8_t count = *bytedata++; // Get the count byte + const bool uniq = bool(count & 0x80); // >= 128 is a distinct run; < 128 is a repeat run + count = (count & 0x7F) + 1; // Actual count is 7-bit plus 1 + + bool getcol = true; // Get at least one color word + while (count--) { // Emit 'count' pixels + + if (getcol) { + getcol = uniq; // Keep getting colors if not RLE + const uint16_t msb = *bytedata++, // Color most-significant bits + lsb = *bytedata++; // Color least-significant bits + color = ENDIAN_COLOR((msb << 8) | lsb); // Color with proper endianness + if (color == 0x0001) color = COLOR_BACKGROUND; // 0x0001 is "transparent" + } + + if (WITHIN(dsty, startLine, endLine - 1)) { // Dest pixel Y within the segment? + if (WITHIN(dstx, 0, width - 1)) { // Dest pixel X within the canvas? + uint16_t * const pixel = buffer + dstx + (dsty - startLine) * width; + *pixel = color; // Store the color in the pixel + } + } + + ++srcx; ++dstx; // Advance the pixel column + if (srcx >= image_width) { // Past the right edge of the source image? + ++srcy; ++dsty; // Advance to the next line + srcx = 0; dstx = x; // May be shifted within the canvas, but usually not + if (dsty >= endLine || srcy >= image_height) { // Done with the segment or the image? + done = true; // Set a flag to end the loop... + break; // ...and break out of while(count--) + } + } + } + } + return; + } + #endif // COMPACT_MARLIN_BOOT_LOGO + + addImage(x, y, image_width, image_height, color_mode, (uint8_t *)data, colors); } void Canvas::addImage(int16_t x, int16_t y, uint8_t image_width, uint8_t image_height, colorMode_t color_mode, uint8_t *data, uint16_t *colors) { @@ -138,8 +196,8 @@ void Canvas::addImage(int16_t x, int16_t y, uint8_t image_width, uint8_t image_h colors--; for (int16_t i = 0; i < image_height; i++) { - int16_t line = y + i; - if (line >= startLine && line < endLine) { + const int16_t line = y + i; + if (WITHIN(line, startLine, endLine - 1)) { uint16_t *pixel = buffer + x + (line - startLine) * width; uint8_t offset = 8 - bitsPerPixel; for (int16_t j = 0; j < image_width; j++) { @@ -147,7 +205,7 @@ void Canvas::addImage(int16_t x, int16_t y, uint8_t image_width, uint8_t image_h data++; offset = 8 - bitsPerPixel; } - if ((x + j >= 0) && (x + j < width)) { + if (WITHIN(x + j, 0, width - 1)) { const uint8_t color = ((*data) >> offset) & mask; if (color) *pixel = *(colors + color); } @@ -165,8 +223,8 @@ void Canvas::addRect(uint16_t x, uint16_t y, uint16_t rectangleWidth, uint16_t r if (endLine < y || startLine > y + rectangleHeight) return; for (uint16_t i = 0; i < rectangleHeight; i++) { - uint16_t line = y + i; - if (line >= startLine && line < endLine) { + const uint16_t line = y + i; + if (WITHIN(line, startLine, endLine - 1)) { uint16_t *pixel = buffer + x + (line - startLine) * width; if (i == 0 || i == rectangleHeight - 1) { for (uint16_t j = 0; j < rectangleWidth; j++) *pixel++ = color; @@ -184,8 +242,8 @@ void Canvas::addBar(uint16_t x, uint16_t y, uint16_t barWidth, uint16_t barHeigh if (endLine < y || startLine > y + barHeight) return; for (uint16_t i = 0; i < barHeight; i++) { - uint16_t line = y + i; - if (line >= startLine && line < endLine) { + const uint16_t line = y + i; + if (WITHIN(line, startLine, endLine - 1)) { uint16_t *pixel = buffer + x + (line - startLine) * width; for (uint16_t j = 0; j < barWidth; j++) *pixel++ = color; } diff --git a/Marlin/src/lcd/tft/images/back_32x32x4.cpp b/Marlin/src/lcd/tft/images/back_32x32x4.cpp index d19bc76509..d858956c97 100644 --- a/Marlin/src/lcd/tft/images/back_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/back_32x32x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t back_32x32x4[]; -const tImage Back_32x32x4 = { (void *)back_32x32x4, 32, 32, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t back_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -63,4 +61,6 @@ const uint8_t back_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, }; +const tImage Back_32x32x4 = { (void *)back_32x32x4, 32, 32, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/background_320x30x16.cpp b/Marlin/src/lcd/tft/images/background_320x30x16.cpp index 8710bd2ea0..9e2916a3e5 100644 --- a/Marlin/src/lcd/tft/images/background_320x30x16.cpp +++ b/Marlin/src/lcd/tft/images/background_320x30x16.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint16_t background_320x30x16[]; -const tImage Background320x30x16 = { (void *)background_320x30x16, 320, 30, HIGHCOLOR }; +#include "../tft_image.h" const uint16_t background_320x30x16[9600] = { 0x10F2, 0x18D2, 0x18D2, 0x10D2, 0x18D2, 0x18D2, 0x18D2, 0x18D2, 0x18D2, 0x18D2, 0x18D2, 0x18D2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18D2, 0x18F2, 0x18F2, 0x18D2, 0x18D2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F2, 0x18F3, 0x18F3, 0x20F2, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x2112, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x2113, 0x20F2, 0x20F3, 0x20F2, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x2113, 0x28F3, 0x2113, 0x20F3, 0x2113, 0x28F3, 0x20F3, 0x2113, 0x2113, 0x2113, 0x2113, 0x2113, 0x2113, 0x2113, 0x28F3, 0x28F3, 0x2113, 0x2113, 0x2113, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2113, 0x2913, 0x2913, 0x2913, 0x2914, 0x2913, 0x2913, 0x28F3, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x28F3, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x28F3, 0x2913, 0x2913, 0x2914, 0x2913, 0x2913, 0x2913, 0x2113, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2913, 0x2113, 0x2113, 0x2113, 0x28F3, 0x28F3, 0x2113, 0x2113, 0x2113, 0x2113, 0x2113, 0x2113, 0x2113, 0x20F3, 0x28F3, 0x2113, 0x20F3, 0x2113, 0x28F3, 0x2113, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F2, 0x20F3, 0x20F2, 0x2113, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x2112, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x20F3, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x20F2, 0x18F3, 0x18F3, 0x18F2, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F3, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, 0x18F2, @@ -61,4 +59,6 @@ const uint16_t background_320x30x16[9600] = { 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x006D, 0x004D, 0x004D, 0x004D, 0x0150, 0x01F1, 0x0150, 0x006D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x006D, 0x004D, 0x004E, 0x004D, 0x004D, 0x004D, 0x0150, 0x01F1, 0x00AE, 0x006D, 0x004D, 0x004D, 0x004D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x004D, 0x006D, 0x006D, 0x004D, 0x006D, 0x004D, 0x006D, 0x006D, 0x006D, 0x0170, 0x01B1, 0x006D, 0x006D, 0x004D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006D, 0x004E, 0x006E, 0x01D1, 0x010F, 0x006D, 0x006D, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x004D, 0x006D, 0x006E, 0x004E, 0x0212, 0x004D, 0x004E, 0x006E, 0x006D, 0x004D, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006D, 0x006D, 0x010F, 0x01D1, 0x006E, 0x004E, 0x006D, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x004D, 0x006D, 0x006D, 0x01B1, 0x0170, 0x006D, 0x006D, 0x006D, 0x004D, 0x006D, 0x004D, 0x006D, 0x006D, 0x004D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x004D, 0x004D, 0x004D, 0x006D, 0x00AE, 0x01F1, 0x0150, 0x004D, 0x004D, 0x004D, 0x004E, 0x004D, 0x006D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D }; +const tImage Background320x30x16 = { (void *)background_320x30x16, 320, 30, HIGHCOLOR }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/bootscreen_1024x600x16.cpp b/Marlin/src/lcd/tft/images/bootscreen_1024x600x16.cpp new file mode 100644 index 0000000000..fb97dc8e52 --- /dev/null +++ b/Marlin/src/lcd/tft/images/bootscreen_1024x600x16.cpp @@ -0,0 +1,4184 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../../inc/MarlinConfigPre.h" + +#if ALL(HAS_GRAPHICAL_TFT, SHOW_BOOTSCREEN) + +#include "../tft_image.h" + +const uint16_t marlin_logo_1024x600x16[614400] = { + 0x20EF,0x20EF,0x20EF,0x210F,0x210F,0x210F,0x20EE,0x20EE,0x20EE,0x20EF,0x20EF,0x20EF,0x20EE,0x210E,0x210E,0x210E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190F,0x190F,0x210F,0x20EF,0x210F,0x210F,0x190F,0x210F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210E,0x210E,0x210F,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210F,0x210F,0x210F,0x20EF,0x210F,0x190F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x20EF,0x290F,0x28EF,0x210F,0x2110,0x1931,0x1933,0x0934,0x0155,0x0177,0x0197,0x01B8,0x01FA,0x01DA,0x01FA,0x01FA,0x01D9,0x01D9,0x01FA,0x01F9,0x01D8,0x0197,0x0155,0x0135,0x08F3,0x1113,0x1952,0x2131,0x2111,0x2910,0x2910,0x2910,0x20EF,0x290F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x210F,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2910,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x212F,0x212F,0x210F,0x2930,0x210F,0x2110,0x20EF,0x2110,0x2110,0x2110,0x2131,0x2132,0x1953,0x1954,0x1174,0x11B6,0x19F7,0x11D6,0x0995,0x0974,0x0954,0x0953,0x1133,0x1132,0x1972,0x2172,0x2192,0x2992,0x2171,0x2971,0x2151,0x2151,0x2151,0x2151,0x2130,0x2151,0x2151,0x2951,0x2131,0x2951,0x2131,0x2931,0x2930,0x2951,0x2130,0x2151,0x2151,0x2151,0x2151,0x2151,0x2171,0x2192,0x2151,0x2151,0x1931,0x1930,0x2151,0x2172,0x1952,0x1972,0x1973,0x1174,0x1195,0x11B6,0x09B7,0x09D7,0x09B7,0x09D7,0x09F8,0x09F8,0x09F8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D7,0x0997,0x0975,0x1133,0x1112,0x1911,0x1911,0x1910,0x2110,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x20F0,0x2910,0x2110,0x2110,0x2131,0x1932,0x1952,0x1953,0x1995,0x19D6,0x1A18,0x19F8,0x19F8,0x11D7,0x0975,0x0113,0x0933,0x1132,0x1132,0x1931,0x1910,0x2110,0x210F,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x1932,0x1953,0x1195,0x11D6,0x11F7,0x11D6,0x11B6,0x0974,0x0974,0x1174,0x0973,0x0973,0x0954,0x0975,0x09B6,0x09D7,0x11F7,0x19D7,0x1974,0x1933,0x1911,0x2111,0x2131,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x20F0,0x20F0,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x2132,0x1933,0x1154,0x1996,0x19D7,0x11D7,0x11B7,0x0954,0x1132,0x1131,0x1951,0x1951,0x10F1,0x1112,0x1133,0x1996,0x1A19,0x11F9,0x11B8,0x0956,0x1134,0x1134,0x1133,0x1134,0x1154,0x1175,0x0976,0x09B7,0x11F7,0x19F7,0x1195,0x1174,0x1133,0x1132,0x1952,0x1132,0x1153,0x0973,0x0974,0x11B6,0x1A17,0x1A17,0x11B6,0x1154,0x1132,0x1911,0x1910,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x20EF,0x210F,0x20EF,0x2910,0x2910,0x2110,0x2130,0x2110,0x2110,0x2130,0x1931,0x1932,0x0913,0x19D7,0x1A19,0x19F8,0x19B7,0x10F3,0x18F2,0x1911,0x2130,0x2130,0x2130,0x18EF,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2110,0x2110,0x2131,0x1931,0x1132,0x0933,0x19B6,0x19D7,0x19F7,0x19B6,0x1132,0x1131,0x1931,0x1930,0x2131,0x1931,0x1112,0x0913,0x11B6,0x11F7,0x1A18,0x19D7,0x1133,0x1912,0x2111,0x2111,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x214F,0x192F,0x1930,0x1910,0x10F0,0x2153,0x2174,0x2195,0x2195,0x1996,0x19B6,0x0975,0x0954,0x0913,0x0912,0x1131,0x1930,0x2110,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x1930,0x1930,0x1910,0x1930,0x1931,0x1111,0x08F2,0x19F6,0x11F7,0x11F7,0x11B5,0x0912,0x1932,0x2131,0x2130,0x2110,0x2110,0x2110,0x2110,0x2131,0x1931,0x1132,0x1994,0x19F7,0x19D7,0x11B7,0x0975,0x1154,0x1153,0x1931,0x1931,0x1910,0x2110,0x210F,0x210F,0x292F,0x292F,0x292F,0x2930,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2930,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2910,0x2930,0x2110,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2131,0x2131,0x1912,0x08F2,0x1994,0x21F6,0x29F6,0x1995,0x1113,0x1132,0x1932,0x1132,0x1132,0x1132,0x1132,0x0933,0x1995,0x19B6,0x21F6,0x19B5,0x0912,0x1932,0x1931,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x290F,0x210F,0x210F,0x2930,0x2910,0x20F0,0x18F1,0x10F2,0x0934,0x0955,0x0176,0x0176,0x0196,0x0197,0x0176,0x0976,0x0955,0x0934,0x1113,0x1133,0x1932,0x1911,0x1911,0x1910,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210E,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x20EF,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x20EF,0x2110,0x210F,0x210F,0x2130,0x2130,0x2150,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x20EF,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x20EF,0x210F,0x20EF,0x20EF,0x20EF,0x210F,0x20EF,0x210F,0x190F,0x1910,0x1910,0x1910,0x1910,0x1911,0x10F1,0x1133,0x11D7,0x09D8,0x09FA,0x01DA,0x01BA,0x01BA,0x01BA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01BA,0x01DA,0x01D9,0x01B9,0x01DA,0x01B9,0x01B9,0x01DA,0x01BA,0x01BA,0x01DA,0x01DA,0x01BA,0x01BA,0x01DA,0x01B9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01B8,0x11D9,0x19D7,0x08B1,0x18D0,0x20F0,0x20EF,0x20EE,0x210E,0x20EE,0x20EE,0x210F,0x210F,0x210F,0x20EF,0x20EF,0x20EF,0x18EF,0x18EF, + 0x20EF,0x20EF,0x20EF,0x20EF,0x210F,0x18EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x210F,0x210E,0x210E,0x210E,0x212F,0x190E,0x212E,0x190E,0x190E,0x190E,0x190E,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x190F,0x210F,0x210F,0x210F,0x20EE,0x210F,0x20EE,0x210F,0x210E,0x210F,0x20EE,0x210E,0x210E,0x210F,0x20EE,0x210E,0x210E,0x210F,0x20EE,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x20EF,0x28EF,0x28EF,0x290F,0x2910,0x2110,0x1931,0x1132,0x0933,0x0975,0x0177,0x01B8,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01D9,0x01F9,0x01D8,0x01D8,0x0997,0x0955,0x0913,0x1113,0x1932,0x1911,0x2111,0x20F0,0x2910,0x2910,0x28EF,0x20EF,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2110,0x2910,0x2110,0x2110,0x210F,0x2130,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x210F,0x210F,0x2110,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2130,0x210F,0x212F,0x210F,0x2930,0x210F,0x212F,0x210F,0x2930,0x2110,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2111,0x2131,0x1932,0x1933,0x1174,0x1195,0x19F7,0x19F7,0x11D6,0x1195,0x0954,0x0933,0x0912,0x0912,0x10F1,0x1111,0x1110,0x1110,0x1910,0x1911,0x1910,0x1931,0x1910,0x1910,0x1910,0x1930,0x1910,0x1910,0x1910,0x1910,0x2110,0x2110,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1931,0x1931,0x1110,0x1110,0x1910,0x1110,0x1910,0x1931,0x1910,0x1911,0x1111,0x1111,0x0912,0x0933,0x0134,0x1196,0x09B7,0x09D7,0x09D7,0x11F8,0x09F8,0x09F8,0x09D8,0x09B7,0x09D8,0x09D8,0x09D8,0x09D7,0x09B7,0x1175,0x1133,0x1112,0x1932,0x1910,0x2110,0x210F,0x212F,0x212F,0x212F,0x190F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2131,0x1931,0x1932,0x1133,0x1174,0x1195,0x11B6,0x19D7,0x19D7,0x11B7,0x19D7,0x1175,0x0912,0x1132,0x1932,0x1931,0x2131,0x2110,0x2130,0x210F,0x210F,0x210F,0x290F,0x20EE,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x1932,0x1133,0x1195,0x11D6,0x11F7,0x11F7,0x11B6,0x0974,0x0953,0x0953,0x0953,0x0953,0x0954,0x0975,0x09D6,0x11F7,0x11D7,0x11B6,0x1974,0x1932,0x1911,0x2111,0x2131,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2111,0x2131,0x2132,0x1932,0x1154,0x1995,0x19D7,0x19D7,0x11B6,0x0954,0x0932,0x1131,0x1951,0x1931,0x1911,0x1112,0x1954,0x19B6,0x19F8,0x11F8,0x0997,0x0956,0x0934,0x0913,0x0913,0x1133,0x0934,0x0955,0x0996,0x11D7,0x11F8,0x11F7,0x11B5,0x1174,0x1153,0x1132,0x1132,0x1132,0x1153,0x0953,0x0974,0x11B6,0x1A17,0x19F7,0x1195,0x1134,0x1132,0x1911,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x20EF,0x2910,0x290F,0x2110,0x210F,0x2110,0x2130,0x2130,0x1931,0x1111,0x0913,0x19F7,0x19F8,0x19F8,0x1996,0x1113,0x1912,0x1911,0x1910,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x210F,0x2110,0x2130,0x2130,0x1931,0x1132,0x0933,0x19B6,0x19D7,0x19F7,0x19B5,0x1132,0x1111,0x1931,0x1910,0x2131,0x1931,0x1112,0x0912,0x11B6,0x11F7,0x1A18,0x19D6,0x1113,0x1912,0x2111,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x210F,0x2930,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x210F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x212F,0x212F,0x212F,0x192F,0x190F,0x1910,0x1911,0x2152,0x2153,0x2174,0x1975,0x21B6,0x19B6,0x11B6,0x1195,0x0933,0x1132,0x1932,0x1930,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x212F,0x1930,0x2130,0x1930,0x2130,0x1931,0x1131,0x0912,0x19D6,0x11F7,0x11F7,0x1195,0x0912,0x1932,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x1931,0x1932,0x1153,0x19D7,0x19F8,0x11B7,0x1176,0x1154,0x1153,0x1932,0x1931,0x2130,0x190F,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x2930,0x2930,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x2930,0x210F,0x210F,0x290F,0x212F,0x210F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2131,0x2131,0x1912,0x08F2,0x1994,0x21D6,0x29F6,0x1994,0x1112,0x1132,0x1952,0x1132,0x1932,0x1132,0x1133,0x0933,0x1995,0x19D6,0x21F6,0x1995,0x0912,0x1132,0x1931,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x2930,0x210F,0x2110,0x2111,0x1912,0x1133,0x1175,0x0996,0x0997,0x09B7,0x01B7,0x01B7,0x0197,0x0997,0x0976,0x0934,0x1133,0x1133,0x1932,0x1931,0x1931,0x2131,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x20EF,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x20EF,0x210F,0x210F,0x210F,0x20EF,0x210F,0x20EF,0x210F,0x20EF,0x210F,0x20EF,0x210F,0x20EF,0x20EF,0x210F,0x210F,0x210F,0x18EF,0x190F,0x1910,0x1910,0x1910,0x1911,0x10F1,0x0913,0x11D7,0x09F9,0x01D9,0x01BA,0x01BA,0x01BA,0x01BA,0x01BA,0x01DA,0x01DA,0x01BA,0x01DA,0x01BA,0x01BA,0x01B9,0x01DA,0x01B9,0x01B9,0x01B9,0x01B9,0x01B9,0x01BA,0x01BA,0x01DA,0x01BA,0x01BA,0x01BA,0x01BA,0x01BA,0x01BA,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B8,0x11F9,0x11B7,0x08D2,0x18D0,0x20F0,0x20EF,0x20EF,0x20EE,0x20EE,0x20EE,0x210F,0x210F,0x210F,0x20EF,0x20EF,0x20EF,0x20EF,0x18EF, + 0x210F,0x20EF,0x20EF,0x20EF,0x210F,0x210F,0x20EE,0x210F,0x20EE,0x210E,0x20EE,0x20EF,0x20EE,0x20EE,0x210E,0x210E,0x210E,0x212F,0x210F,0x212F,0x190E,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210E,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x292F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x1911,0x1953,0x1154,0x0996,0x09B8,0x01D8,0x01D9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01D9,0x01F9,0x01D9,0x01D9,0x01D8,0x09D8,0x11D7,0x1195,0x1133,0x2153,0x2111,0x20F0,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x292F,0x210F,0x2930,0x2130,0x210F,0x2130,0x2130,0x2110,0x2130,0x2110,0x2910,0x2910,0x2910,0x2910,0x210F,0x2110,0x210F,0x212F,0x2130,0x212F,0x2930,0x2130,0x2930,0x212F,0x2930,0x2930,0x2130,0x2930,0x2110,0x210F,0x2930,0x210F,0x2930,0x290F,0x212F,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x2930,0x2930,0x290F,0x212F,0x292F,0x212F,0x2930,0x2130,0x210F,0x2130,0x210F,0x2130,0x2130,0x2110,0x2131,0x1911,0x1932,0x1953,0x1994,0x1195,0x19D6,0x19D6,0x19D6,0x1196,0x0954,0x0933,0x0912,0x08F1,0x08F1,0x08F0,0x08F0,0x10F1,0x10F0,0x10F0,0x10F0,0x10F0,0x10F0,0x10F0,0x10F0,0x1111,0x1111,0x1111,0x10F1,0x10F1,0x18F1,0x10F1,0x1111,0x10F1,0x1911,0x1111,0x10F1,0x1111,0x1111,0x08F0,0x08F1,0x1111,0x10F1,0x10F1,0x10F1,0x10F0,0x10F1,0x08F1,0x0911,0x0912,0x0933,0x0975,0x0996,0x1218,0x09D7,0x11D7,0x09D7,0x0996,0x0997,0x0196,0x0176,0x09B7,0x09D8,0x1219,0x11F8,0x11B7,0x1175,0x1113,0x1912,0x1931,0x2131,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2930,0x210F,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2930,0x2110,0x2910,0x2910,0x2930,0x2910,0x210F,0x290F,0x2910,0x2910,0x2910,0x210F,0x2910,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x2910,0x2910,0x2110,0x2110,0x2130,0x2151,0x1931,0x1932,0x1133,0x1154,0x1175,0x19B6,0x19D7,0x19D7,0x19B6,0x19D6,0x1995,0x0912,0x1111,0x1931,0x2151,0x2130,0x2150,0x2130,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x292F,0x290F,0x210F,0x212F,0x2110,0x2930,0x2930,0x2130,0x2130,0x2110,0x2110,0x2131,0x1911,0x1932,0x1174,0x19D6,0x19F7,0x1A17,0x11B6,0x0995,0x0933,0x0954,0x0953,0x0954,0x0954,0x0975,0x0996,0x11D7,0x11D7,0x11B6,0x1974,0x1932,0x1911,0x2111,0x2131,0x2130,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2950,0x2130,0x2110,0x2110,0x2131,0x2131,0x2132,0x1932,0x1954,0x1995,0x19B6,0x19D7,0x11B6,0x0974,0x0912,0x1131,0x1951,0x1951,0x1931,0x1932,0x1953,0x19B6,0x19D7,0x11D8,0x0997,0x0976,0x0954,0x0913,0x0913,0x0913,0x0934,0x0954,0x0996,0x11D7,0x19F7,0x19F7,0x11B5,0x1174,0x1152,0x1132,0x1131,0x1132,0x1132,0x1173,0x0974,0x11D6,0x1A17,0x19F7,0x1175,0x1133,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x2130,0x2110,0x2130,0x2131,0x1932,0x0933,0x19F7,0x1A18,0x1A18,0x1196,0x1113,0x1911,0x1931,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x1910,0x1911,0x1132,0x1153,0x11B6,0x19D7,0x19F7,0x19B6,0x1132,0x1111,0x2131,0x2130,0x1931,0x1911,0x1112,0x1113,0x1195,0x11F7,0x1A18,0x19D6,0x1112,0x1912,0x2111,0x2110,0x2130,0x2130,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x1911,0x1932,0x1953,0x1933,0x1954,0x1995,0x21D6,0x11B6,0x1195,0x1174,0x1133,0x1952,0x1931,0x2130,0x2110,0x210F,0x210F,0x2130,0x2930,0x212F,0x212F,0x2130,0x1930,0x2130,0x1931,0x1932,0x1132,0x11D6,0x11D6,0x11F7,0x1195,0x1112,0x1931,0x2131,0x2131,0x20F0,0x2110,0x2110,0x2130,0x2110,0x1931,0x1932,0x1153,0x19B5,0x19F7,0x19D7,0x19B7,0x1175,0x1133,0x1132,0x1951,0x2131,0x2130,0x2130,0x210F,0x210F,0x212F,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x210F,0x210F,0x2910,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2910,0x2910,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x210F,0x212F,0x210F,0x2930,0x212F,0x210F,0x2110,0x2110,0x2130,0x2930,0x210F,0x210F,0x290F,0x210F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2131,0x2131,0x1932,0x1112,0x1974,0x21F6,0x2A17,0x1994,0x1112,0x1112,0x1932,0x1932,0x1932,0x1132,0x1132,0x1133,0x1995,0x21D6,0x21F6,0x1194,0x1132,0x1132,0x1932,0x2131,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x2130,0x2130,0x2110,0x2130,0x2130,0x2132,0x1953,0x1995,0x1196,0x11F8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x11B7,0x1196,0x1154,0x1112,0x1932,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x2930,0x210F,0x210F,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2110,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x210F,0x2910,0x2910,0x210F,0x2930,0x210F,0x210F,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x2930,0x2930,0x2930,0x2110,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x292F,0x290F,0x292F,0x2930,0x2930,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x18EF,0x2130,0x2110,0x1910,0x1910,0x1111,0x0912,0x11D7,0x09D8,0x01D9,0x01BA,0x01BA,0x01BA,0x01BA,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01B9,0x01BA,0x01B9,0x01DA,0x01B9,0x01B9,0x01B9,0x01BA,0x01B9,0x01DA,0x01BA,0x01BA,0x01DA,0x01DA,0x01BA,0x01BA,0x01BA,0x01BA,0x01DA,0x01DA,0x01D9,0x01F9,0x01B9,0x01B9,0x01B9,0x0198,0x11F9,0x11B6,0x08D1,0x18F0,0x2110,0x210F,0x20EE,0x210E,0x20EE,0x20EE,0x20EE,0x20EE,0x210F,0x210F,0x210F,0x20EE,0x18EE,0x210F, + 0x210F,0x20EF,0x210F,0x210F,0x20EE,0x210E,0x210F,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x210E,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210E,0x212F,0x210E,0x210F,0x210E,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210E,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x2130,0x2110,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2110,0x1911,0x1133,0x11B5,0x11F8,0x09D8,0x09F9,0x01D9,0x01D9,0x01B9,0x01DA,0x01FA,0x01DA,0x01FA,0x01F9,0x01D9,0x0A1A,0x01F9,0x09F8,0x11F8,0x19D7,0x1133,0x1932,0x2111,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x292F,0x290F,0x212F,0x2930,0x210F,0x2130,0x2130,0x210F,0x2130,0x210F,0x2110,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x210F,0x2130,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x2930,0x2930,0x210F,0x210F,0x2930,0x210F,0x2930,0x210F,0x290F,0x2930,0x292F,0x212F,0x2130,0x210F,0x212F,0x2130,0x212F,0x292F,0x2930,0x2110,0x2130,0x2111,0x1931,0x1932,0x1932,0x1953,0x1974,0x1195,0x19B6,0x19D6,0x19D7,0x19D7,0x19B6,0x19B5,0x1154,0x1153,0x1153,0x0932,0x1132,0x0912,0x1133,0x1132,0x1132,0x1132,0x1153,0x1153,0x1153,0x1132,0x1153,0x1953,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1153,0x1133,0x0933,0x0933,0x0933,0x1133,0x1133,0x1133,0x1132,0x1133,0x1132,0x1133,0x0933,0x0954,0x0975,0x0996,0x11D7,0x11D7,0x09D7,0x09B7,0x0996,0x0976,0x0155,0x0156,0x0156,0x0176,0x09B7,0x11F8,0x11F8,0x11D7,0x1196,0x1153,0x1932,0x2131,0x2131,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2910,0x2910,0x2110,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x212F,0x212F,0x2930,0x210F,0x210F,0x2130,0x210F,0x2930,0x2130,0x210F,0x212F,0x2130,0x212F,0x212F,0x2930,0x2130,0x2130,0x2130,0x212F,0x210F,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x2110,0x2930,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2930,0x2110,0x2110,0x2130,0x2110,0x2130,0x1931,0x1931,0x1932,0x1133,0x1134,0x1154,0x19B6,0x19B6,0x19D7,0x19D6,0x19D6,0x1994,0x0912,0x1111,0x1931,0x2151,0x2151,0x2130,0x2110,0x290F,0x290F,0x290F,0x292F,0x3150,0x292F,0x210F,0x210F,0x212F,0x2110,0x2930,0x2930,0x2130,0x2930,0x2130,0x2110,0x2110,0x1911,0x1932,0x1153,0x19B6,0x19F7,0x1A17,0x11D7,0x1196,0x0954,0x0954,0x0954,0x0954,0x0974,0x0975,0x09B6,0x11D7,0x11D7,0x1196,0x1974,0x1932,0x2131,0x2131,0x2130,0x2130,0x2930,0x2950,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2150,0x2950,0x2130,0x2130,0x2130,0x2110,0x2131,0x1911,0x1932,0x1974,0x1995,0x19D7,0x19D7,0x11B7,0x1175,0x0932,0x1131,0x1931,0x1951,0x1931,0x1932,0x1133,0x1995,0x11B6,0x11D7,0x11F7,0x11B7,0x0975,0x0954,0x0934,0x0934,0x0934,0x0955,0x0996,0x11D7,0x11F7,0x1A17,0x11B5,0x1173,0x1952,0x1931,0x1131,0x1132,0x1152,0x1153,0x0974,0x11D6,0x19F7,0x19F7,0x1195,0x1133,0x1112,0x1911,0x2111,0x2110,0x2130,0x2130,0x2130,0x2930,0x210F,0x290F,0x292F,0x2930,0x2930,0x2110,0x2130,0x2930,0x2930,0x210F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x2930,0x2930,0x2110,0x2110,0x2130,0x1931,0x1932,0x0913,0x19F7,0x1A18,0x19F8,0x19B6,0x1132,0x1911,0x2131,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x212F,0x2130,0x2110,0x2110,0x2130,0x1931,0x1932,0x1133,0x19B6,0x19D7,0x19F7,0x19D6,0x1112,0x1911,0x2131,0x2130,0x2131,0x1931,0x1912,0x1112,0x11B6,0x11F7,0x1A17,0x19D6,0x1112,0x1912,0x1911,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x210F,0x2110,0x212F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x290F,0x290F,0x210F,0x290F,0x292F,0x292F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2150,0x2130,0x1910,0x1911,0x1912,0x1932,0x1933,0x1974,0x21D6,0x19D6,0x1195,0x19D5,0x1173,0x1952,0x1931,0x1930,0x2110,0x210F,0x2130,0x2930,0x2130,0x212F,0x212F,0x2130,0x2150,0x2130,0x1931,0x1932,0x0912,0x19D6,0x11F7,0x19F7,0x1195,0x1112,0x1931,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x1910,0x1911,0x1132,0x1174,0x19D6,0x19F7,0x19D7,0x19D6,0x1154,0x1132,0x1952,0x1931,0x2151,0x2130,0x2110,0x210F,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x2930,0x2910,0x2910,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2910,0x2930,0x2910,0x210F,0x210F,0x2930,0x210F,0x2930,0x2930,0x212F,0x2110,0x2110,0x2130,0x210F,0x2930,0x212F,0x210F,0x290F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2150,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2111,0x2131,0x1932,0x1112,0x1974,0x21D6,0x2A17,0x1995,0x1132,0x1132,0x1932,0x1932,0x1932,0x1932,0x1133,0x1133,0x19B5,0x21D6,0x21F6,0x19B4,0x1132,0x1932,0x1931,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2110,0x2131,0x1953,0x1994,0x11B6,0x11D8,0x09F9,0x09D8,0x09F9,0x01F9,0x09F9,0x01D8,0x09D8,0x09D7,0x19D7,0x19B6,0x1153,0x1932,0x1932,0x2152,0x2131,0x2151,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x2930,0x210F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2130,0x2110,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2950,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2950,0x212F,0x2930,0x2930,0x2110,0x2130,0x2130,0x2930,0x210F,0x210F,0x292F,0x290F,0x292F,0x290F,0x292F,0x292F,0x290F,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x1910,0x10F0,0x08F2,0x11D7,0x09D8,0x01D9,0x01DA,0x01BA,0x01DA,0x01BA,0x01BA,0x01DA,0x01BA,0x01DA,0x01B9,0x01B9,0x01BA,0x01BA,0x01BA,0x01BA,0x01B9,0x01DA,0x01B9,0x01DA,0x01BA,0x01BA,0x01DA,0x01BA,0x01DA,0x01BA,0x01BA,0x01BA,0x01DA,0x01BA,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x09D9,0x11D8,0x11B6,0x08F1,0x18F0,0x2110,0x210F,0x210F,0x210E,0x20EE,0x210E,0x210F,0x210E,0x20EF,0x20EF,0x210F,0x20EE,0x210E,0x210E, + 0x210F,0x210F,0x20EF,0x20EE,0x210F,0x210F,0x20EE,0x210E,0x210E,0x20EE,0x210E,0x210F,0x210F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210E,0x210E,0x210E,0x210E,0x210F,0x210F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x210F,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x2930,0x290F,0x2930,0x2930,0x2110,0x10F1,0x1153,0x11D6,0x11F8,0x09D8,0x09F9,0x01D9,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01D9,0x01FA,0x01D9,0x01F9,0x01D9,0x09F9,0x09D8,0x19F7,0x1154,0x1912,0x2111,0x2110,0x2910,0x28EF,0x290F,0x28EF,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x2110,0x2910,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x210F,0x2910,0x210F,0x210F,0x210F,0x20EF,0x2930,0x2130,0x210F,0x210F,0x212F,0x210F,0x212F,0x292F,0x2930,0x2130,0x2130,0x2130,0x2131,0x1911,0x1931,0x1932,0x1953,0x1174,0x19B5,0x19B6,0x11B6,0x19B7,0x19D7,0x19F7,0x19D7,0x19F7,0x19F7,0x19D6,0x19D7,0x19D6,0x19B6,0x11B6,0x11B6,0x11B6,0x1196,0x1195,0x1196,0x11B6,0x1195,0x1195,0x1195,0x1196,0x1195,0x1195,0x1196,0x19B6,0x1196,0x11B6,0x11B6,0x11B6,0x11B6,0x1196,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19D6,0x19D6,0x11D7,0x11B7,0x11D7,0x11D8,0x11D8,0x11B7,0x0996,0x0976,0x0996,0x0155,0x0155,0x0135,0x0156,0x0996,0x11D7,0x11F8,0x19D7,0x19B6,0x1974,0x1932,0x1911,0x2110,0x2130,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2110,0x2110,0x2930,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x212F,0x2130,0x2110,0x2110,0x210F,0x290F,0x210F,0x2930,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x210F,0x2930,0x2930,0x212F,0x210F,0x2930,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x212F,0x2930,0x212F,0x290F,0x2930,0x2930,0x210F,0x210F,0x2910,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2910,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x1910,0x1911,0x1932,0x1112,0x1153,0x1995,0x1995,0x21D6,0x21F7,0x19D6,0x19D6,0x1974,0x1112,0x1111,0x1931,0x2131,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2110,0x2130,0x2950,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1153,0x1174,0x19F7,0x1A17,0x11D7,0x11B7,0x0976,0x0955,0x0975,0x0975,0x0975,0x1196,0x11D7,0x11D7,0x11D7,0x1996,0x1953,0x1932,0x2131,0x2111,0x2110,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2930,0x2130,0x2110,0x2110,0x2130,0x2131,0x1911,0x1953,0x1995,0x19D7,0x19F7,0x19D7,0x1195,0x0933,0x1132,0x1951,0x1951,0x1951,0x1932,0x1932,0x1154,0x1195,0x11D7,0x11D7,0x11D7,0x11B7,0x0975,0x0955,0x0955,0x0975,0x0996,0x11B6,0x11D7,0x19F7,0x19D6,0x1994,0x1153,0x1952,0x1951,0x1911,0x1132,0x1153,0x1173,0x11B5,0x1A17,0x19F7,0x19F7,0x1195,0x1154,0x1112,0x1911,0x2111,0x2110,0x2130,0x2130,0x210F,0x2930,0x2930,0x290F,0x2910,0x2930,0x2930,0x2110,0x2110,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x2930,0x2130,0x2130,0x2110,0x2110,0x1931,0x1912,0x1113,0x19D7,0x19F8,0x19F8,0x1196,0x1112,0x1911,0x1911,0x2110,0x2150,0x2130,0x210F,0x212F,0x212F,0x292F,0x290F,0x290F,0x210F,0x2930,0x2130,0x2110,0x2130,0x1931,0x1932,0x1133,0x19B6,0x19D7,0x19F8,0x19B6,0x08F2,0x1111,0x1931,0x2131,0x2131,0x1932,0x1932,0x1112,0x11B6,0x19F7,0x1A38,0x19D6,0x1112,0x1912,0x2111,0x2110,0x2130,0x2110,0x2110,0x2130,0x212F,0x212F,0x2930,0x2110,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x2930,0x2110,0x212F,0x212F,0x212F,0x2930,0x210F,0x2930,0x210F,0x2110,0x210F,0x210F,0x212F,0x212F,0x2930,0x210F,0x2930,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x212F,0x2130,0x2130,0x2130,0x2930,0x2110,0x2930,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2150,0x2130,0x1910,0x1931,0x1932,0x1912,0x1932,0x1953,0x19B5,0x19B6,0x1195,0x19F6,0x19D5,0x1973,0x1952,0x1931,0x1910,0x2110,0x2130,0x2110,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x2131,0x1932,0x1112,0x19D6,0x11F7,0x1A17,0x1195,0x1111,0x2152,0x2151,0x2951,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x1931,0x1932,0x1153,0x1995,0x19D7,0x19F7,0x19D7,0x19B6,0x1154,0x1133,0x1952,0x2152,0x2151,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2130,0x2110,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x290F,0x2130,0x2110,0x2110,0x2130,0x2950,0x212F,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x2110,0x2930,0x210F,0x210F,0x210F,0x2110,0x2910,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x2930,0x210F,0x2130,0x212F,0x212F,0x210F,0x210F,0x2930,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2111,0x1932,0x1932,0x1112,0x1974,0x21F6,0x2A17,0x1994,0x1112,0x1132,0x1932,0x1932,0x1932,0x1132,0x1152,0x1153,0x19B5,0x21F6,0x2216,0x1994,0x0912,0x1932,0x1931,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2930,0x2130,0x2130,0x2131,0x1931,0x1932,0x1994,0x19B6,0x11D7,0x09D8,0x09F9,0x01F9,0x01F9,0x01D9,0x01D9,0x01F9,0x01D8,0x09D8,0x11D8,0x19D7,0x1975,0x1953,0x1952,0x1952,0x1931,0x1931,0x2131,0x1931,0x2131,0x2130,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2931,0x2931,0x2931,0x2130,0x2131,0x2131,0x2131,0x2130,0x2931,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2131,0x2130,0x2130,0x2130,0x2931,0x2131,0x2130,0x2131,0x2131,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2110,0x2131,0x2131,0x2130,0x2130,0x2131,0x2110,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x290F,0x292F,0x292F,0x292F,0x2930,0x2910,0x2110,0x2110,0x2110,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2110,0x10F0,0x08F2,0x19F7,0x1219,0x01B9,0x01BA,0x0199,0x01BA,0x01DA,0x01DA,0x01BA,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01B9,0x01BA,0x01BA,0x01B9,0x01DA,0x01DA,0x01FA,0x01DA,0x01B9,0x01B9,0x01BA,0x01DA,0x01BA,0x01BA,0x01BA,0x01BA,0x01DA,0x01D9,0x01FA,0x01F9,0x01D9,0x01B9,0x01D9,0x09D9,0x1219,0x1196,0x08D1,0x18F0,0x2110,0x210F,0x210F,0x212F,0x20EE,0x20EE,0x20EE,0x210F,0x20EF,0x20EE,0x210F,0x210E,0x210E,0x210E, + 0x210F,0x190F,0x210F,0x210E,0x210E,0x210E,0x210E,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210F,0x210E,0x210F,0x210F,0x210F,0x20EF,0x20EF,0x210F,0x210F,0x210F,0x210E,0x210E,0x210E,0x210E,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x290F,0x2930,0x290F,0x2930,0x2130,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2110,0x2110,0x10F1,0x1154,0x11B6,0x11F8,0x09F9,0x01F9,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01DA,0x01FA,0x01D9,0x01FA,0x01F9,0x01D9,0x09D8,0x11D7,0x1175,0x1112,0x2131,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x292F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x2130,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x1930,0x1931,0x1931,0x1932,0x1953,0x1974,0x1995,0x1996,0x19B6,0x19D7,0x11D7,0x19D7,0x11D7,0x1A18,0x1A18,0x2238,0x1A18,0x2238,0x1A18,0x2238,0x1A18,0x1A18,0x1A38,0x19F8,0x1A18,0x2218,0x2218,0x1A18,0x1A18,0x2218,0x2218,0x1A18,0x1A18,0x1A18,0x19F8,0x19F8,0x19F8,0x1A19,0x1A39,0x2239,0x19F8,0x21F8,0x19D7,0x21F8,0x19F7,0x19F7,0x19F7,0x19F7,0x11F8,0x11D8,0x11D8,0x09B8,0x0997,0x0976,0x0955,0x0955,0x0135,0x0135,0x0135,0x0955,0x0976,0x11B7,0x19F8,0x19D7,0x19B6,0x1994,0x1932,0x1911,0x2110,0x2110,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2930,0x210F,0x210F,0x2910,0x2110,0x2930,0x212F,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x2110,0x2930,0x210F,0x290F,0x290F,0x2910,0x2930,0x2110,0x2110,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x210F,0x290F,0x2930,0x2910,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2130,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x2930,0x2110,0x2910,0x2110,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2110,0x2130,0x1931,0x1911,0x1932,0x1153,0x1974,0x19B5,0x19D6,0x19D6,0x19D6,0x21D6,0x1174,0x1133,0x1112,0x1931,0x2131,0x2131,0x2130,0x2930,0x292F,0x210F,0x210F,0x290F,0x2930,0x2930,0x210F,0x210F,0x210F,0x2130,0x2950,0x2130,0x2130,0x2130,0x2130,0x1931,0x1911,0x1953,0x1174,0x19D6,0x1A17,0x11D7,0x11B7,0x1197,0x1196,0x0996,0x0996,0x11B6,0x11B6,0x11D7,0x11D7,0x19B7,0x1975,0x1953,0x1911,0x1911,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x1911,0x1953,0x1994,0x19B6,0x19D7,0x19D7,0x1196,0x1153,0x1132,0x1131,0x1931,0x1931,0x1931,0x1952,0x1153,0x1195,0x19D6,0x11F7,0x1218,0x09D7,0x09B6,0x0976,0x0996,0x0996,0x09B6,0x11D6,0x19F6,0x19D6,0x1194,0x1973,0x1952,0x1952,0x1931,0x1932,0x1932,0x1133,0x1153,0x1195,0x19F7,0x19F7,0x19D6,0x1175,0x1154,0x1112,0x1911,0x2111,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x2930,0x2930,0x2930,0x2930,0x210F,0x2110,0x2930,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2110,0x2110,0x2130,0x2130,0x1911,0x1912,0x0912,0x19D7,0x1A18,0x19F8,0x1175,0x1132,0x1911,0x1910,0x2110,0x2130,0x2130,0x2130,0x2930,0x212F,0x2930,0x210F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2130,0x1930,0x1111,0x1153,0x11B6,0x11D7,0x19F8,0x19B6,0x10F2,0x10F1,0x2111,0x2111,0x2131,0x1932,0x1912,0x1112,0x11B5,0x11F7,0x1A17,0x19D6,0x1112,0x1911,0x2111,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2930,0x210F,0x2110,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x2110,0x212F,0x212F,0x210F,0x212F,0x290F,0x290F,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x190F,0x2130,0x1931,0x1931,0x1932,0x1932,0x1132,0x1153,0x1174,0x1174,0x2216,0x19F6,0x1174,0x1152,0x1952,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1911,0x0912,0x19D6,0x11D6,0x19D6,0x1195,0x1111,0x1931,0x2151,0x2130,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x1911,0x1911,0x1932,0x1153,0x19B6,0x21F7,0x19F7,0x19D7,0x19B6,0x1154,0x1133,0x1932,0x2132,0x2131,0x2131,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x292F,0x290F,0x292F,0x290F,0x292F,0x290F,0x210F,0x212F,0x2130,0x210F,0x2130,0x212F,0x210F,0x2130,0x212F,0x210F,0x290F,0x210F,0x2930,0x210F,0x2110,0x290F,0x210F,0x210F,0x2110,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2910,0x210F,0x2910,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2131,0x1931,0x1932,0x1112,0x1974,0x21B6,0x2A17,0x1995,0x1112,0x1132,0x1932,0x1932,0x1952,0x1932,0x1132,0x1153,0x1994,0x21D6,0x21F6,0x1994,0x0912,0x1932,0x1931,0x1910,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x1174,0x11B6,0x09B8,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D8,0x09B8,0x11D8,0x19B6,0x1174,0x1953,0x1932,0x1932,0x1931,0x1911,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2111,0x2111,0x2131,0x2130,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x210F,0x210F,0x212F,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2110,0x2110,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x2930,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x2130,0x1910,0x08F1,0x11D7,0x09F8,0x01B9,0x01BA,0x01BA,0x01BA,0x01BA,0x01BA,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01B9,0x01BA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01BA,0x01DA,0x01BA,0x01DA,0x01BA,0x01BA,0x01BA,0x01DA,0x01DA,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01B8,0x01D8,0x11D8,0x1195,0x08D1,0x18F0,0x20F0,0x210F,0x210F,0x210F,0x20EE,0x20EE,0x20EE,0x210E,0x210F,0x20EE,0x20EE,0x210E,0x210E,0x210E, + 0x190F,0x190F,0x210F,0x210F,0x210E,0x210E,0x20EE,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210E,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x20EF,0x210E,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EE,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x212F,0x2110,0x2110,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2130,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2110,0x2110,0x1911,0x1112,0x19B6,0x1A18,0x09D8,0x01D9,0x01B9,0x01B9,0x01DA,0x01DA,0x01DA,0x01FA,0x01D9,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D8,0x09D7,0x1195,0x1112,0x2131,0x2931,0x2910,0x2930,0x2930,0x20EF,0x210F,0x2930,0x210F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2910,0x2110,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x212F,0x212F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2910,0x2110,0x2110,0x2130,0x2930,0x2930,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x1930,0x1931,0x2152,0x1932,0x1953,0x1953,0x1995,0x1995,0x19D6,0x19F7,0x2218,0x1A18,0x19F8,0x19F7,0x1A18,0x2218,0x2218,0x2238,0x2218,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2238,0x2238,0x2238,0x1A18,0x2239,0x1A19,0x19F8,0x19F8,0x19F8,0x19F8,0x21F8,0x21F7,0x21F7,0x19D7,0x19F7,0x1A18,0x19F8,0x11D7,0x11B7,0x11B7,0x11D8,0x0997,0x0155,0x0135,0x0935,0x0955,0x0134,0x0135,0x0155,0x0996,0x1196,0x11D7,0x19D7,0x1996,0x1974,0x1912,0x18F1,0x2110,0x2130,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x210F,0x2930,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2930,0x2910,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x2930,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2151,0x1931,0x1952,0x1953,0x1974,0x1995,0x19B6,0x19D7,0x21F7,0x21F7,0x1174,0x0912,0x1111,0x1931,0x2131,0x2130,0x2930,0x2930,0x210F,0x20EF,0x210F,0x290F,0x292F,0x2930,0x212F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2150,0x2130,0x2131,0x1931,0x1932,0x1953,0x19B5,0x19D7,0x11D7,0x11D7,0x11D7,0x1197,0x11B7,0x11B6,0x11B7,0x19D7,0x11D7,0x11B6,0x19B6,0x1974,0x1953,0x2131,0x2111,0x2110,0x2110,0x2110,0x2130,0x2130,0x2150,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x1931,0x1953,0x1974,0x19B6,0x19D7,0x19F7,0x19D7,0x1174,0x0932,0x1131,0x1931,0x1931,0x1931,0x1932,0x1952,0x1173,0x11B5,0x1A17,0x1218,0x11F7,0x09B7,0x09B6,0x09B6,0x11D7,0x11D7,0x11D6,0x19D6,0x1994,0x1173,0x1953,0x1932,0x1931,0x1931,0x1931,0x1132,0x1153,0x1174,0x11B6,0x19F7,0x1A18,0x19D6,0x1175,0x1153,0x1111,0x1911,0x2131,0x2110,0x2110,0x2130,0x2110,0x210F,0x210F,0x212F,0x290F,0x2910,0x210F,0x210F,0x2110,0x2930,0x2110,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2131,0x2131,0x1912,0x1133,0x19D7,0x1A18,0x19F8,0x1195,0x1132,0x1951,0x1930,0x2110,0x2130,0x2130,0x2130,0x2930,0x2130,0x2930,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1153,0x19B6,0x19D7,0x19F8,0x19B6,0x08F2,0x10F1,0x2111,0x2111,0x2111,0x1932,0x1912,0x1112,0x11B5,0x11D6,0x1A17,0x19D6,0x1112,0x1931,0x2111,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x212F,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x2130,0x2110,0x2930,0x2930,0x2110,0x210F,0x212F,0x290F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2131,0x2152,0x1932,0x1911,0x1132,0x1153,0x1153,0x0954,0x19F6,0x2216,0x19B5,0x1132,0x1132,0x1931,0x1931,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x2131,0x1911,0x1112,0x19D6,0x19F7,0x19F7,0x1195,0x1112,0x1931,0x2151,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1911,0x1932,0x1974,0x19B6,0x21F7,0x21F7,0x19D7,0x1196,0x1154,0x1113,0x1112,0x2132,0x2131,0x2131,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2930,0x210F,0x2930,0x290F,0x290F,0x2910,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x2930,0x210F,0x290F,0x210F,0x2910,0x210F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x212F,0x2930,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x2950,0x2130,0x2130,0x2130,0x2130,0x2131,0x2132,0x1932,0x1113,0x1975,0x21D6,0x2A17,0x1994,0x0912,0x1132,0x1932,0x1932,0x1932,0x1952,0x1132,0x1153,0x1994,0x21D6,0x21F6,0x1994,0x0912,0x1132,0x1931,0x2131,0x2130,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1132,0x1153,0x11B6,0x11D8,0x09B8,0x01D9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x11D8,0x1196,0x0955,0x1154,0x1133,0x08F2,0x08F2,0x08F1,0x10F2,0x1112,0x1111,0x1912,0x1931,0x1931,0x1911,0x1111,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1911,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1911,0x1911,0x1911,0x1911,0x1111,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x10F1,0x1911,0x1911,0x1911,0x10F1,0x10F1,0x1911,0x1911,0x1911,0x1111,0x1911,0x1911,0x1111,0x1911,0x1111,0x1112,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1131,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x10F1,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2110,0x2910,0x2930,0x210F,0x2910,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2110,0x18F0,0x1112,0x11D6,0x1219,0x09D9,0x01DA,0x01BA,0x01DA,0x0199,0x01B9,0x01BA,0x01B9,0x01DA,0x01DA,0x01DA,0x01B9,0x01B9,0x0199,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01BA,0x01B9,0x01B9,0x0199,0x01BA,0x01DA,0x01DA,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01B8,0x11D8,0x1175,0x08F1,0x1910,0x2110,0x210F,0x210F,0x210E,0x20EE,0x20EE,0x210E,0x210F,0x210E,0x20EE,0x20EE,0x210E,0x210E,0x210E, + 0x190E,0x190F,0x210E,0x210F,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x20EF,0x290F,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2930,0x210F,0x2110,0x212F,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x212F,0x210F,0x2110,0x2930,0x2910,0x2130,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x2910,0x2110,0x2110,0x2111,0x2131,0x1112,0x19D6,0x11B7,0x09D8,0x01B9,0x01B9,0x01B9,0x01BA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01D9,0x01DA,0x01D9,0x01F9,0x01D8,0x09D8,0x11B6,0x1112,0x2132,0x2131,0x2931,0x2910,0x2930,0x2910,0x2930,0x2110,0x2130,0x2130,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2930,0x2110,0x2110,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1911,0x1932,0x1932,0x1953,0x1153,0x1174,0x1195,0x1195,0x1195,0x19B6,0x1995,0x1995,0x1995,0x1195,0x1195,0x11B6,0x19B6,0x11B6,0x19D6,0x19B6,0x19B6,0x19B6,0x1995,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x1195,0x19B6,0x11B6,0x19B6,0x19B6,0x11B6,0x19B6,0x1996,0x1996,0x19B6,0x1995,0x1995,0x1995,0x19B6,0x11B6,0x19D6,0x11B7,0x11B7,0x11F8,0x11D8,0x11B7,0x0976,0x0955,0x0935,0x0955,0x0135,0x0135,0x0955,0x0996,0x11B7,0x19D7,0x19B7,0x1996,0x1954,0x1912,0x1911,0x2110,0x2130,0x2930,0x210F,0x292F,0x210F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2910,0x2910,0x2110,0x210F,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2910,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2110,0x2910,0x210F,0x210F,0x2930,0x2930,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x292F,0x2930,0x2930,0x2930,0x2150,0x2151,0x1931,0x1932,0x1933,0x1954,0x1995,0x19D6,0x19F7,0x2217,0x21F7,0x1154,0x1112,0x1111,0x1911,0x2131,0x2130,0x2130,0x212F,0x210F,0x290F,0x210F,0x292F,0x2930,0x212F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2150,0x2150,0x2131,0x1931,0x1932,0x1933,0x1174,0x19D6,0x19B7,0x11D7,0x19F8,0x11B7,0x1197,0x11B7,0x19B7,0x11B7,0x19D7,0x19B6,0x1995,0x1953,0x1932,0x2111,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2130,0x1931,0x1932,0x1974,0x1995,0x19D7,0x19D7,0x19D7,0x11B5,0x0933,0x1132,0x1931,0x1931,0x1931,0x1931,0x1952,0x1153,0x1174,0x11D5,0x19F7,0x11D7,0x11D6,0x11D7,0x11D7,0x11D6,0x11B6,0x19D6,0x19B5,0x1994,0x1953,0x1952,0x1932,0x1932,0x1932,0x1932,0x1933,0x1153,0x1174,0x19B6,0x2218,0x2218,0x19B6,0x1174,0x1953,0x1911,0x2131,0x2131,0x2110,0x2130,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x1912,0x1113,0x19F7,0x1A18,0x19D8,0x1996,0x1133,0x1931,0x1910,0x2130,0x2110,0x2950,0x2110,0x2930,0x2130,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1133,0x1195,0x19F7,0x19D8,0x19B6,0x1112,0x10F1,0x2111,0x2111,0x2131,0x1932,0x1912,0x1133,0x19B6,0x19F7,0x1A17,0x19D6,0x1112,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x210F,0x2930,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2930,0x212F,0x212F,0x210F,0x290F,0x290F,0x2930,0x2130,0x2930,0x210F,0x210F,0x290F,0x290F,0x2930,0x292F,0x290F,0x210F,0x2930,0x290F,0x210F,0x292F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x292F,0x292F,0x212F,0x292F,0x292F,0x210F,0x210F,0x212F,0x2110,0x2131,0x2152,0x1931,0x1111,0x1132,0x1132,0x1153,0x1154,0x19B5,0x21F6,0x21D6,0x1132,0x1132,0x1932,0x1931,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1112,0x19D6,0x19F7,0x19D7,0x19B5,0x0911,0x1931,0x2151,0x2951,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2111,0x1931,0x1911,0x1132,0x1974,0x19D6,0x19F7,0x2218,0x19D7,0x1996,0x1134,0x1133,0x1932,0x2132,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x2930,0x210F,0x290F,0x210F,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x2930,0x2110,0x2930,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2950,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1932,0x1112,0x1974,0x29F6,0x2A17,0x1994,0x1112,0x1132,0x1932,0x1932,0x1932,0x1932,0x1132,0x1133,0x1994,0x21F6,0x21F6,0x1194,0x0912,0x1132,0x1952,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1952,0x1132,0x1174,0x1196,0x11D8,0x09F9,0x01B9,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x09D9,0x09D8,0x11D8,0x11B7,0x1196,0x1175,0x0954,0x0954,0x0934,0x1133,0x1133,0x1133,0x1133,0x0912,0x1112,0x0912,0x0912,0x1112,0x0912,0x0912,0x0912,0x0912,0x1113,0x0912,0x0913,0x1113,0x08F2,0x1112,0x08F2,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x1113,0x0913,0x0912,0x0912,0x1112,0x0912,0x0912,0x1112,0x0912,0x0912,0x0912,0x1112,0x0912,0x0912,0x1112,0x1112,0x08F2,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0932,0x0912,0x0932,0x0932,0x0912,0x0912,0x0912,0x0912,0x0912,0x1112,0x1112,0x1112,0x1132,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1112,0x1912,0x1912,0x2132,0x2111,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x2930,0x210F,0x290F,0x290F,0x2910,0x2910,0x210F,0x2910,0x290F,0x2930,0x2910,0x2910,0x2910,0x2110,0x210F,0x2930,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x18F0,0x1132,0x11B6,0x1A39,0x09D9,0x01B9,0x01BA,0x01BA,0x01B9,0x01B9,0x01BA,0x01B9,0x01DA,0x01D9,0x01DA,0x01B9,0x01BA,0x01BA,0x01BA,0x01DA,0x01BA,0x01BA,0x01DA,0x01DA,0x01DA,0x01BA,0x01BA,0x0199,0x01B9,0x01B9,0x01B9,0x01B9,0x01B9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09B8,0x11D8,0x1175,0x08F1,0x18F0,0x2110,0x20EF,0x212F,0x210F,0x20EE,0x210F,0x210F,0x20EE,0x210E,0x20EE,0x20EE,0x210E,0x210E,0x210E, + 0x190E,0x210E,0x190E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x210F,0x290F,0x2930,0x290F,0x210F,0x212F,0x212F,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x2110,0x2110,0x2110,0x2111,0x1912,0x1133,0x21F7,0x11F9,0x01B8,0x01D9,0x0199,0x01BA,0x01DA,0x01DA,0x01FA,0x01FA,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01F9,0x01F9,0x09F8,0x19F7,0x1153,0x1932,0x2131,0x2131,0x2131,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x2131,0x2131,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1931,0x1952,0x1952,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1132,0x1132,0x1132,0x1153,0x1153,0x1153,0x1153,0x1132,0x1132,0x1953,0x1132,0x1132,0x1112,0x1112,0x1112,0x1132,0x1133,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1953,0x1953,0x1953,0x1973,0x1153,0x1153,0x0934,0x0954,0x0976,0x11B7,0x11F8,0x11F8,0x11B7,0x0976,0x0955,0x0955,0x0955,0x0955,0x0996,0x11D7,0x19F8,0x19F7,0x19B6,0x1175,0x1933,0x1912,0x2111,0x2110,0x2130,0x210F,0x292F,0x210F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2930,0x2130,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2930,0x290F,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x290F,0x290F,0x2930,0x212F,0x2930,0x210F,0x212F,0x210F,0x2930,0x2930,0x210F,0x2910,0x2110,0x2910,0x2910,0x290F,0x290F,0x2930,0x2930,0x210F,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2910,0x2910,0x2910,0x290F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x290F,0x292F,0x210F,0x212F,0x2950,0x2130,0x2130,0x1931,0x1912,0x1933,0x1154,0x1996,0x19F7,0x2217,0x2217,0x19F6,0x1174,0x1112,0x1112,0x1911,0x2151,0x2131,0x2950,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x212F,0x210F,0x212F,0x210F,0x2150,0x2151,0x2131,0x2131,0x1911,0x1932,0x1954,0x1975,0x1176,0x1196,0x19D7,0x11B7,0x11B7,0x11B7,0x1196,0x19B6,0x1196,0x1175,0x1974,0x1932,0x1931,0x1910,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2130,0x2130,0x1931,0x1952,0x1953,0x1975,0x19B6,0x19D7,0x19D7,0x19B6,0x1174,0x1132,0x1132,0x1952,0x1931,0x1952,0x1952,0x1152,0x1173,0x1194,0x1195,0x1195,0x11B5,0x19F7,0x19D6,0x1195,0x11B5,0x19B5,0x1994,0x1152,0x1132,0x1952,0x1932,0x2152,0x1932,0x1112,0x1133,0x1154,0x1195,0x19D7,0x19F7,0x19D7,0x1195,0x1994,0x1932,0x1911,0x2110,0x2110,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x212F,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x1911,0x1912,0x1113,0x21F7,0x2219,0x19D8,0x1175,0x1153,0x1931,0x1910,0x2110,0x2110,0x2930,0x2930,0x290F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1153,0x19B6,0x19D7,0x19F8,0x19B6,0x1112,0x10F1,0x2111,0x2111,0x2131,0x2132,0x1932,0x1113,0x19B6,0x19F7,0x1A18,0x19D6,0x1112,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2151,0x2131,0x1931,0x1911,0x1932,0x1132,0x1133,0x1153,0x1195,0x21D6,0x21F6,0x0933,0x1132,0x1932,0x1931,0x1930,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2131,0x1911,0x1112,0x19D6,0x19F7,0x19D7,0x1175,0x08F1,0x1931,0x2131,0x2130,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2110,0x2130,0x2131,0x1911,0x1911,0x1132,0x1154,0x19B6,0x2217,0x2218,0x19D7,0x1995,0x1134,0x1133,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2910,0x210F,0x290F,0x290F,0x210F,0x2930,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x210F,0x2930,0x210F,0x290F,0x210F,0x2910,0x2910,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x2130,0x210F,0x2130,0x2131,0x1932,0x1932,0x1132,0x1974,0x21F6,0x2A16,0x19B4,0x1132,0x1132,0x1932,0x1932,0x1932,0x1932,0x1132,0x1133,0x1994,0x21F6,0x21F6,0x1995,0x0912,0x1932,0x1931,0x1931,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x2110,0x2111,0x2132,0x1932,0x1153,0x1196,0x11B8,0x09D9,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01B9,0x01B9,0x01B9,0x09D9,0x09F8,0x11F8,0x11F8,0x11F8,0x11D7,0x11D7,0x11D7,0x11B7,0x11B6,0x11B6,0x11B6,0x1195,0x11B6,0x1195,0x1195,0x1196,0x1196,0x1196,0x11B6,0x1196,0x1196,0x1196,0x1197,0x1196,0x11B6,0x1196,0x1196,0x1196,0x11B6,0x11B6,0x11B6,0x11B6,0x1196,0x11B6,0x11B6,0x1196,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x1196,0x11B6,0x11B6,0x1196,0x1196,0x1196,0x11B6,0x19B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11D6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11D6,0x11D6,0x11D6,0x11D6,0x11D6,0x11D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D7,0x19D7,0x19D6,0x19D7,0x19B6,0x19D6,0x19D6,0x19B6,0x19B6,0x1975,0x1134,0x1113,0x1912,0x1912,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x212F,0x210F,0x210F,0x2910,0x210F,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x18EF,0x1911,0x1953,0x1175,0x1218,0x09F9,0x01DA,0x01B9,0x01B9,0x0199,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01B9,0x01DA,0x01B9,0x01B9,0x01BA,0x01DA,0x0199,0x01B9,0x01B9,0x01B9,0x01B9,0x01D9,0x01DA,0x01B9,0x01D9,0x01B9,0x01B9,0x01D9,0x01B9,0x09B8,0x11D8,0x1155,0x08F1,0x1911,0x2110,0x210F,0x210F,0x212F,0x210E,0x210E,0x210E,0x210F,0x210F,0x210E,0x210E,0x210E,0x210E,0x210E, + 0x190E,0x190E,0x190E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210F,0x210F,0x20EE,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x290F,0x290F,0x20EF,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x292F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x292F,0x212F,0x210F,0x212F,0x2930,0x210F,0x290F,0x2930,0x290F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2930,0x2930,0x210F,0x212F,0x210F,0x210F,0x2930,0x2910,0x210F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2111,0x1912,0x1154,0x19F8,0x11F9,0x09D9,0x01B9,0x01B9,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01D9,0x021A,0x09F9,0x09D8,0x11F8,0x0954,0x1133,0x1932,0x1931,0x1931,0x1911,0x1910,0x1910,0x1910,0x1910,0x2131,0x2131,0x2131,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x1931,0x2131,0x2131,0x1931,0x2131,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x2111,0x2111,0x2131,0x2111,0x2111,0x2131,0x1911,0x1911,0x2131,0x2131,0x1911,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x1910,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2131,0x1930,0x1931,0x1911,0x1931,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x18F1,0x1911,0x1911,0x1911,0x1111,0x1911,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1111,0x1132,0x1132,0x1133,0x0933,0x0955,0x11B6,0x11D7,0x19F8,0x11F8,0x11B7,0x0976,0x0976,0x0955,0x0976,0x11B7,0x19F8,0x19F8,0x19D7,0x1996,0x1954,0x1933,0x2132,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2110,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x210F,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1932,0x1133,0x1975,0x1195,0x19D7,0x19F7,0x2217,0x19D6,0x1154,0x0912,0x10F1,0x1931,0x2151,0x2151,0x2130,0x212F,0x212F,0x210F,0x210F,0x2130,0x212F,0x2130,0x212F,0x2130,0x2130,0x2150,0x2150,0x2130,0x1910,0x1911,0x1932,0x1933,0x1154,0x1155,0x1196,0x11D7,0x11D7,0x11B7,0x1196,0x1196,0x1196,0x1175,0x1153,0x1952,0x1911,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2910,0x210F,0x210F,0x292F,0x210F,0x210F,0x292F,0x290F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2950,0x2130,0x2130,0x2130,0x1930,0x1931,0x1952,0x1154,0x1996,0x19B7,0x19F8,0x19D7,0x1195,0x0933,0x1132,0x1932,0x1931,0x1931,0x1951,0x1952,0x1952,0x1973,0x1173,0x1174,0x1195,0x1195,0x19B5,0x1174,0x1174,0x1973,0x1973,0x1952,0x1952,0x1931,0x1932,0x1932,0x1932,0x1113,0x1133,0x1175,0x1196,0x19D7,0x2218,0x19D7,0x1975,0x1973,0x1932,0x1911,0x2110,0x2130,0x2130,0x210F,0x2930,0x290F,0x210F,0x210F,0x2930,0x290F,0x210F,0x2930,0x290F,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x1911,0x1912,0x1112,0x21F7,0x2219,0x19D8,0x1175,0x1953,0x1931,0x2130,0x2130,0x2930,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2131,0x1932,0x1133,0x19B6,0x19D7,0x19F7,0x19B6,0x1112,0x1111,0x1911,0x2111,0x2131,0x2132,0x1912,0x1133,0x19D6,0x19F7,0x1A17,0x19D6,0x0912,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x212F,0x212F,0x2930,0x290F,0x212F,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x212F,0x2930,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x212F,0x2930,0x2930,0x2110,0x2910,0x2910,0x2930,0x2910,0x292F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1952,0x1132,0x1153,0x1153,0x1174,0x21F6,0x2A17,0x1153,0x1112,0x1952,0x1952,0x1931,0x1910,0x2110,0x2130,0x292F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1112,0x19D6,0x19F7,0x19F7,0x1195,0x0911,0x1910,0x2151,0x2950,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1111,0x1133,0x1174,0x19D6,0x19F7,0x19F7,0x19D7,0x1995,0x1154,0x1133,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2110,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2910,0x2110,0x2110,0x2930,0x2930,0x2110,0x210F,0x2110,0x2110,0x2910,0x210F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1932,0x1932,0x1112,0x1974,0x21F6,0x2216,0x19B5,0x1112,0x1132,0x1952,0x1112,0x1932,0x1932,0x1132,0x1133,0x1994,0x21F6,0x21F6,0x19B5,0x0912,0x1132,0x1952,0x1951,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2111,0x1931,0x1932,0x1133,0x1196,0x11D8,0x09F9,0x01FA,0x01BA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x09F9,0x11F9,0x11F9,0x1219,0x1219,0x1219,0x1A19,0x1A39,0x1A39,0x1A38,0x2239,0x2239,0x2259,0x2259,0x2259,0x2259,0x2A59,0x2A59,0x2A7A,0x225A,0x2A5A,0x2A5A,0x2A5A,0x2A5A,0x2A5A,0x225A,0x2A5A,0x2A5A,0x2A7A,0x2A5A,0x2A5A,0x227A,0x227A,0x227A,0x227A,0x2A7A,0x2259,0x2259,0x2A79,0x2A79,0x2A79,0x2A79,0x2A79,0x2259,0x2A59,0x2A59,0x2A59,0x2A59,0x2A59,0x2A59,0x2A59,0x2259,0x2A79,0x2259,0x2259,0x2259,0x2259,0x2259,0x2279,0x2279,0x2279,0x2259,0x2279,0x2279,0x2279,0x2279,0x2259,0x2259,0x2259,0x2259,0x2259,0x2239,0x2259,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x1A18,0x2238,0x1A38,0x1A18,0x2238,0x2218,0x21F8,0x21D7,0x1975,0x1113,0x1933,0x1912,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2110,0x2930,0x2130,0x2130,0x2930,0x2930,0x210F,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x18EF,0x1911,0x1953,0x0954,0x1A18,0x09F9,0x09DA,0x01DA,0x01B9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01B9,0x01B9,0x01D9,0x01B9,0x01B9,0x01DA,0x01B9,0x01DA,0x01B9,0x01B9,0x01B9,0x09B9,0x01B9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01B9,0x01D9,0x01B9,0x09B8,0x19D8,0x0934,0x1112,0x1911,0x2110,0x2110,0x210F,0x210F,0x210E,0x210E,0x210F,0x292F,0x210F,0x210F,0x20EE,0x20EE,0x210E,0x210E, + 0x210F,0x210F,0x210E,0x212E,0x210E,0x212E,0x212F,0x210E,0x210E,0x210E,0x210E,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x212F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x290F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x2930,0x2930,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2930,0x2130,0x2930,0x2930,0x290F,0x290F,0x2930,0x212F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x2110,0x2130,0x2110,0x1911,0x1932,0x1133,0x2239,0x09F9,0x09FA,0x01BA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01D9,0x01F9,0x01D9,0x09D8,0x09B7,0x0954,0x0912,0x0912,0x1112,0x1111,0x1111,0x1911,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x1932,0x1911,0x1911,0x1931,0x1111,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1111,0x1111,0x1111,0x1911,0x1911,0x1111,0x1931,0x1931,0x1111,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1910,0x1910,0x2130,0x2131,0x2110,0x2130,0x2110,0x2110,0x20F0,0x18F0,0x18F0,0x1911,0x1931,0x1931,0x1910,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x1910,0x2111,0x2110,0x2131,0x2131,0x1910,0x1911,0x2131,0x1931,0x1931,0x1931,0x2131,0x1910,0x2131,0x1931,0x1911,0x1111,0x1111,0x1112,0x1174,0x1195,0x19B6,0x19D7,0x19D7,0x11D7,0x1196,0x1196,0x11B6,0x11B7,0x19F7,0x19F8,0x19D7,0x1996,0x1974,0x1133,0x1932,0x2132,0x2951,0x2931,0x2930,0x292F,0x292F,0x292F,0x210F,0x292F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x2910,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x2110,0x2110,0x210F,0x2110,0x2930,0x210F,0x210F,0x2110,0x2110,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x292F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x1911,0x1931,0x1932,0x1954,0x1155,0x1196,0x19D7,0x2218,0x19F7,0x19D6,0x1174,0x0912,0x10F1,0x1911,0x2131,0x2150,0x2130,0x212F,0x20EF,0x210F,0x210F,0x212F,0x2150,0x212F,0x212F,0x2130,0x2130,0x2150,0x2110,0x2110,0x2131,0x1931,0x1932,0x1933,0x1134,0x1175,0x19D7,0x11D7,0x11B7,0x1196,0x1175,0x1175,0x1153,0x1132,0x1931,0x1931,0x190F,0x190F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2910,0x2910,0x290F,0x2930,0x290F,0x292F,0x292F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1132,0x1153,0x1175,0x19D7,0x19D7,0x19F7,0x19B6,0x1154,0x1133,0x1112,0x1932,0x1131,0x1931,0x1131,0x1952,0x1952,0x1152,0x1153,0x1153,0x1974,0x1974,0x1153,0x1153,0x1952,0x1952,0x1932,0x1931,0x1911,0x1931,0x1932,0x1133,0x1133,0x1154,0x1175,0x19D6,0x2218,0x2218,0x1995,0x1154,0x1953,0x1931,0x1910,0x2110,0x2110,0x2930,0x2130,0x210F,0x2910,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x1911,0x1911,0x1133,0x21F7,0x19F8,0x19B7,0x1175,0x1153,0x1931,0x2131,0x2130,0x2130,0x2930,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1133,0x19B6,0x19F7,0x19F8,0x19B6,0x1112,0x1911,0x1911,0x2131,0x2111,0x2132,0x1112,0x1133,0x19D6,0x11F7,0x1A17,0x19B6,0x1112,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x2110,0x212F,0x212F,0x290F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2110,0x210F,0x212F,0x210F,0x2130,0x2110,0x2910,0x2910,0x210F,0x2930,0x210F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2950,0x2110,0x2130,0x2130,0x1930,0x1951,0x1952,0x1153,0x1133,0x1154,0x21F6,0x2A17,0x1153,0x1132,0x1952,0x1952,0x1951,0x1930,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1112,0x19D6,0x19F8,0x19F8,0x1196,0x0912,0x1931,0x2151,0x2150,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2150,0x2131,0x1911,0x1911,0x1132,0x1133,0x1174,0x19D6,0x19F7,0x19F7,0x21F7,0x1995,0x1974,0x1933,0x1912,0x2131,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x292F,0x292F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2910,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2910,0x2910,0x210F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2930,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x290F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1932,0x1132,0x1132,0x1994,0x21F6,0x2A17,0x1994,0x1132,0x1132,0x1952,0x1932,0x1932,0x1932,0x1132,0x1132,0x1974,0x21F6,0x21F6,0x1995,0x0912,0x1932,0x1972,0x1931,0x2130,0x2130,0x212F,0x2130,0x210F,0x210F,0x2110,0x2130,0x2131,0x2131,0x1912,0x1113,0x1175,0x11D7,0x11F9,0x09D9,0x01BA,0x01BA,0x01B9,0x01DA,0x01DA,0x01B9,0x01D9,0x01D9,0x09F9,0x09F9,0x09D9,0x09D8,0x11D8,0x11D8,0x11D8,0x11F8,0x11F8,0x19F8,0x19F8,0x1A18,0x1A18,0x19F8,0x2218,0x2218,0x2218,0x2238,0x1A18,0x1A18,0x2219,0x19F8,0x19F8,0x1A18,0x19F8,0x19D8,0x19F8,0x19F8,0x19F8,0x19F8,0x1A18,0x19F8,0x1A18,0x1A18,0x1A18,0x1A18,0x19F8,0x19F8,0x19F8,0x1A18,0x1A18,0x19F8,0x19F8,0x1A18,0x19F8,0x19F8,0x19F7,0x19F7,0x19D7,0x21F8,0x19F8,0x19F7,0x19D7,0x19F7,0x19F8,0x19D7,0x19D7,0x19F7,0x19D7,0x19D7,0x19F7,0x19D7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19D7,0x19F7,0x19F7,0x19D7,0x19F8,0x19D8,0x19D8,0x19D8,0x19D8,0x19D8,0x19D8,0x19D7,0x19F7,0x19D7,0x19F7,0x2218,0x1A18,0x19F7,0x19F8,0x19F8,0x19F8,0x19D8,0x21D7,0x19B6,0x1134,0x1113,0x1911,0x1911,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2910,0x2910,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x212F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x20EF,0x190F,0x1931,0x1952,0x0933,0x11D7,0x09D8,0x09D9,0x09FA,0x01DA,0x01B9,0x01B9,0x01D9,0x09F9,0x01B8,0x01B8,0x01D9,0x01B8,0x01B9,0x01D9,0x01B9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01B9,0x09B9,0x0998,0x09B8,0x09B8,0x09B8,0x09D8,0x01B8,0x01B9,0x09FA,0x01D9,0x01D9,0x09F9,0x09B8,0x0997,0x19F7,0x1134,0x1112,0x1911,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x20EE,0x20EE,0x20EE,0x210E, + 0x212F,0x212F,0x210F,0x212F,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x292F,0x212F,0x210F,0x212F,0x212F,0x292F,0x212F,0x292F,0x212F,0x212F,0x2930,0x290F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x212F,0x210F,0x210F,0x2110,0x2930,0x290F,0x2930,0x2930,0x212F,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2110,0x2110,0x2111,0x1911,0x1912,0x1134,0x1A18,0x1219,0x01B9,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01F9,0x01D9,0x09F9,0x09B7,0x0996,0x0954,0x0934,0x0933,0x1133,0x1133,0x1133,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1133,0x1133,0x1132,0x1132,0x1112,0x1112,0x1112,0x1911,0x1911,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1932,0x1132,0x1154,0x1175,0x1196,0x19B6,0x19D7,0x19B7,0x19F7,0x19F7,0x19F7,0x21F7,0x19D6,0x19B6,0x1154,0x1133,0x1912,0x2132,0x2131,0x2931,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x292F,0x292F,0x2930,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x210F,0x2930,0x2130,0x2130,0x2130,0x212F,0x212F,0x290F,0x290F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x210F,0x2910,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x290F,0x2910,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1911,0x1933,0x1133,0x1154,0x1195,0x19B6,0x2218,0x2217,0x19D6,0x1154,0x1133,0x1111,0x1931,0x2131,0x2150,0x210F,0x210F,0x210F,0x212F,0x2950,0x212F,0x212F,0x2150,0x212F,0x212F,0x210F,0x2110,0x2110,0x2131,0x2131,0x1932,0x1933,0x1134,0x1155,0x19D7,0x11D7,0x11D7,0x11B6,0x1175,0x1154,0x1132,0x1132,0x1931,0x1910,0x212F,0x212F,0x212F,0x212F,0x212F,0x2950,0x2130,0x210F,0x2130,0x2130,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1932,0x1153,0x1174,0x1196,0x19D7,0x19D7,0x19D7,0x1996,0x1134,0x1133,0x1132,0x1932,0x1932,0x1952,0x1952,0x1952,0x1952,0x1932,0x1932,0x1132,0x1132,0x1152,0x1132,0x1932,0x1932,0x1931,0x1911,0x1911,0x1932,0x1132,0x1133,0x1154,0x1175,0x11B6,0x19F7,0x2218,0x19F7,0x1174,0x1953,0x1932,0x1911,0x2130,0x2110,0x2110,0x2930,0x2110,0x210F,0x2930,0x2930,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x1911,0x1912,0x1113,0x21F8,0x2219,0x19B8,0x1175,0x1933,0x1931,0x1910,0x2110,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x2130,0x1910,0x1931,0x1133,0x19B6,0x19F7,0x19F8,0x19B6,0x1112,0x1911,0x1911,0x2111,0x2131,0x1931,0x1932,0x0933,0x11B6,0x11F7,0x1A17,0x19B6,0x1112,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2930,0x212F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x2930,0x290F,0x290F,0x210F,0x2110,0x2110,0x2930,0x212F,0x210F,0x212F,0x2110,0x2110,0x2110,0x290F,0x290F,0x292F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1930,0x1931,0x1952,0x1132,0x1153,0x1174,0x21D6,0x21F6,0x1174,0x1112,0x1952,0x1931,0x1951,0x1930,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2132,0x1112,0x19B6,0x19F8,0x19F8,0x11B6,0x0932,0x1131,0x2151,0x2151,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x1931,0x1111,0x1132,0x1133,0x1174,0x19D6,0x21F7,0x21F7,0x21F7,0x1995,0x1954,0x1932,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x212F,0x292F,0x2930,0x2930,0x290F,0x210F,0x210F,0x290F,0x2910,0x2910,0x290F,0x2930,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x290F,0x2930,0x210F,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2930,0x210F,0x290F,0x290F,0x292F,0x212F,0x292F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1931,0x1152,0x1132,0x1994,0x21F6,0x2216,0x19B5,0x0912,0x1132,0x1932,0x1932,0x1932,0x1932,0x1132,0x1132,0x1994,0x21D6,0x21F6,0x19B5,0x0912,0x1932,0x1952,0x1931,0x2131,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2111,0x1912,0x1133,0x1175,0x11B7,0x11D8,0x09D9,0x09DA,0x01BA,0x01DA,0x01BA,0x01DA,0x01B9,0x01D9,0x01D9,0x09F9,0x09D8,0x09B8,0x11B8,0x0997,0x11B7,0x1196,0x1196,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1155,0x1175,0x1175,0x1155,0x1175,0x1196,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1154,0x1175,0x1155,0x1155,0x1155,0x1155,0x1175,0x1155,0x1154,0x1154,0x1175,0x1154,0x1154,0x1175,0x1154,0x1175,0x1154,0x1175,0x1175,0x1175,0x1175,0x1175,0x1154,0x1155,0x1175,0x1155,0x1155,0x1155,0x1155,0x1155,0x1175,0x1155,0x1175,0x1154,0x1175,0x1175,0x1174,0x1175,0x1195,0x11B6,0x19D7,0x19F8,0x19D8,0x21F8,0x19B7,0x19B6,0x1954,0x1112,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x292F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x292F,0x212F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x292F,0x210F,0x292F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2110,0x2131,0x1952,0x1133,0x1175,0x09B7,0x09F9,0x09D9,0x01D9,0x01D9,0x09D9,0x09D8,0x01B8,0x09B7,0x09D8,0x09B7,0x09B8,0x09B8,0x09B8,0x09D9,0x09B9,0x01B8,0x09D9,0x01D9,0x09D9,0x09B8,0x0998,0x11B8,0x11B8,0x11D8,0x11B7,0x11D8,0x11B7,0x0997,0x09D9,0x01D9,0x01F9,0x09F9,0x09D9,0x09B8,0x0997,0x11B6,0x1133,0x1111,0x1911,0x2110,0x210F,0x210F,0x210F,0x210F,0x292F,0x210E,0x210F,0x210F,0x20EE,0x20EE,0x210E,0x210E,0x210E, + 0x212F,0x190F,0x210F,0x210F,0x210F,0x210E,0x210F,0x210E,0x210E,0x210F,0x210F,0x210F,0x210E,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x290F,0x290F,0x20EF,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x2930,0x210F,0x2930,0x2910,0x290F,0x210F,0x212F,0x2930,0x212F,0x2130,0x2110,0x2110,0x212F,0x210F,0x2930,0x210F,0x210F,0x212F,0x2110,0x2130,0x2130,0x210F,0x2130,0x2110,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2131,0x1911,0x1112,0x1134,0x19F8,0x09D9,0x01D9,0x01DA,0x01FB,0x01FA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01D9,0x01FA,0x01FA,0x09F9,0x09D9,0x09F8,0x09D7,0x11D7,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x1196,0x19B6,0x1196,0x1196,0x11B6,0x11B6,0x11B6,0x1196,0x1196,0x1195,0x1195,0x1195,0x1196,0x11B6,0x11B6,0x11B6,0x11B6,0x1196,0x1196,0x1196,0x1195,0x1196,0x1196,0x11B6,0x1196,0x1196,0x1196,0x11B6,0x1196,0x19B6,0x1196,0x1196,0x11B6,0x1196,0x1196,0x11B6,0x11B6,0x11B6,0x19B6,0x11B6,0x11B6,0x11B6,0x11B6,0x19B6,0x11B6,0x19B6,0x1195,0x1154,0x1153,0x1932,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2150,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1953,0x1133,0x1154,0x1174,0x1996,0x19D7,0x19D7,0x2217,0x2217,0x21D6,0x19B5,0x1154,0x1133,0x1912,0x1912,0x2131,0x2931,0x2910,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x212F,0x2130,0x212F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x2930,0x2930,0x290F,0x2930,0x210F,0x2930,0x290F,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x2930,0x2130,0x212F,0x212F,0x210F,0x2130,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2910,0x210F,0x2930,0x210F,0x290F,0x210F,0x290F,0x292F,0x212F,0x290F,0x290F,0x2930,0x212F,0x2130,0x2110,0x2110,0x2130,0x212F,0x292F,0x292F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1932,0x1912,0x1133,0x1154,0x1195,0x19F7,0x2238,0x2217,0x19D6,0x1154,0x0912,0x1132,0x1931,0x2151,0x2130,0x212F,0x212F,0x210F,0x2950,0x2130,0x212F,0x2150,0x2950,0x212F,0x210F,0x210F,0x2110,0x2130,0x2131,0x2152,0x1933,0x1133,0x1154,0x19D7,0x19F7,0x19F7,0x11B6,0x1175,0x0933,0x1132,0x1111,0x1930,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x290F,0x2910,0x2910,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1951,0x1953,0x1154,0x1195,0x19D7,0x19D7,0x19D7,0x1196,0x1154,0x0913,0x1112,0x1933,0x1932,0x1952,0x1952,0x1952,0x1952,0x1932,0x1932,0x1932,0x1932,0x1952,0x1952,0x1952,0x1932,0x1131,0x1131,0x1132,0x1133,0x1133,0x1154,0x1175,0x1196,0x19D7,0x1A18,0x21F7,0x19B6,0x1133,0x1932,0x1931,0x2131,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2930,0x2910,0x2910,0x210F,0x2930,0x2930,0x2110,0x2930,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1911,0x1912,0x1133,0x2218,0x2219,0x19B7,0x1155,0x1953,0x2132,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2930,0x2930,0x2130,0x2111,0x1911,0x1133,0x19B5,0x19F7,0x19F8,0x19B6,0x1112,0x1911,0x2131,0x2111,0x2131,0x1932,0x1932,0x1133,0x11D6,0x11F7,0x1A18,0x19B6,0x1112,0x1912,0x2111,0x2111,0x2130,0x2110,0x2130,0x2930,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x2110,0x2930,0x212F,0x212F,0x2930,0x210F,0x212F,0x2930,0x212F,0x210F,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x212F,0x212F,0x210F,0x2130,0x1930,0x1931,0x1932,0x1132,0x1133,0x1995,0x2A17,0x2A17,0x1174,0x1112,0x1132,0x1951,0x1951,0x1930,0x1930,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2132,0x1112,0x1995,0x19F8,0x19F8,0x19D7,0x1154,0x1111,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x2130,0x2151,0x1931,0x1931,0x1112,0x1133,0x1175,0x19B6,0x2218,0x2217,0x19D6,0x1995,0x1153,0x1133,0x1952,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2110,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2910,0x2110,0x2910,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x210F,0x1910,0x1930,0x1931,0x1952,0x1132,0x1994,0x2216,0x2216,0x1994,0x0912,0x1112,0x1932,0x1932,0x1932,0x1932,0x1932,0x1133,0x1995,0x21F6,0x21F7,0x1175,0x0912,0x1132,0x1931,0x1931,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2111,0x1911,0x1932,0x1974,0x19B6,0x09B7,0x09D9,0x09D9,0x09DA,0x01B9,0x01B9,0x01DA,0x01DA,0x09FA,0x09F9,0x09F9,0x11F9,0x11B7,0x0976,0x1175,0x1154,0x0933,0x0912,0x1113,0x1113,0x1133,0x1133,0x1133,0x1953,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1133,0x1132,0x1132,0x1112,0x1112,0x1132,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1933,0x1933,0x1933,0x1132,0x1132,0x1932,0x1112,0x1112,0x1132,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1133,0x1133,0x1133,0x1133,0x1933,0x1113,0x1933,0x1933,0x1113,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x08F2,0x0913,0x1154,0x1996,0x19D8,0x19D8,0x21D8,0x21D7,0x1996,0x1954,0x1112,0x1912,0x2132,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x2930,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x2930,0x212F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x290F,0x292F,0x292F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2130,0x2151,0x1931,0x1132,0x1134,0x0976,0x11D8,0x09D8,0x09B8,0x09D9,0x09B8,0x09D8,0x09B7,0x0996,0x0996,0x1196,0x1196,0x1196,0x0997,0x0997,0x0997,0x11F9,0x09D9,0x1219,0x09D8,0x0997,0x0956,0x1176,0x1176,0x19B6,0x1996,0x1155,0x0955,0x0976,0x0997,0x09D8,0x09D9,0x09D9,0x09D8,0x0997,0x0955,0x1154,0x0912,0x1931,0x1910,0x2110,0x212F,0x210F,0x20EE,0x210E,0x210E,0x210E,0x210F,0x210E,0x210E,0x210E,0x210E,0x20EE,0x210E, + 0x1910,0x190F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210E,0x210E,0x210F,0x210F,0x210F,0x210E,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x290F,0x2910,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x210F,0x210F,0x290F,0x290F,0x212F,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x2130,0x2110,0x2110,0x2111,0x1911,0x1933,0x0934,0x1A19,0x09D9,0x01B9,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01FA,0x01FA,0x01FA,0x01F9,0x01D9,0x1219,0x1219,0x1219,0x1A18,0x1A18,0x1A39,0x1A18,0x1A18,0x2218,0x1A18,0x2218,0x2218,0x2218,0x2218,0x2239,0x1A18,0x2239,0x2238,0x1A18,0x2218,0x1A18,0x1A18,0x2238,0x2238,0x2238,0x1A18,0x2239,0x2218,0x2218,0x2218,0x2218,0x1A18,0x2219,0x1A18,0x2218,0x1A18,0x2218,0x2218,0x2219,0x2218,0x2218,0x1A18,0x2218,0x2218,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x19F8,0x1A18,0x19F8,0x19F8,0x1A18,0x1A18,0x19F7,0x19B6,0x1174,0x1133,0x1932,0x1931,0x1931,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x292F,0x210F,0x290F,0x210F,0x290F,0x212F,0x212F,0x2930,0x210F,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x212F,0x212F,0x2110,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x292F,0x2930,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1932,0x1933,0x1154,0x1174,0x1174,0x1995,0x1994,0x1994,0x1974,0x1953,0x1932,0x1932,0x1911,0x1911,0x2131,0x2110,0x2910,0x210F,0x290F,0x292F,0x210F,0x292F,0x292F,0x210F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x212F,0x210F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x290F,0x2930,0x212F,0x212F,0x2930,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x290F,0x2930,0x290F,0x2110,0x210F,0x2110,0x2130,0x2130,0x212F,0x292F,0x210F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1912,0x1932,0x1133,0x1174,0x19B6,0x19F7,0x2218,0x19F7,0x19D6,0x0933,0x1112,0x1931,0x1930,0x2130,0x2150,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2151,0x2132,0x1932,0x1133,0x1154,0x19D6,0x19F7,0x19F7,0x11B6,0x1154,0x0932,0x1111,0x1931,0x2150,0x2150,0x214F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2910,0x2130,0x2130,0x2930,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1932,0x1153,0x1175,0x1996,0x19D7,0x19D7,0x19D7,0x1196,0x1154,0x1133,0x1113,0x1132,0x1932,0x1952,0x1952,0x1932,0x1932,0x1931,0x1111,0x1932,0x1111,0x1131,0x1952,0x1932,0x1132,0x1132,0x1133,0x1153,0x1154,0x0954,0x1195,0x19D7,0x1A18,0x1A17,0x19D6,0x1154,0x1132,0x1932,0x1911,0x2110,0x2130,0x2130,0x2930,0x210F,0x210F,0x2130,0x2110,0x2930,0x2110,0x2930,0x2910,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1911,0x1112,0x1154,0x2218,0x2219,0x19B7,0x1155,0x1933,0x1911,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2131,0x1931,0x1132,0x19B5,0x19F7,0x19F8,0x19B6,0x1112,0x1911,0x1931,0x2131,0x2131,0x1932,0x1932,0x0933,0x11D6,0x11F7,0x19F7,0x19D6,0x08F2,0x1912,0x2111,0x2110,0x2130,0x2930,0x2110,0x2930,0x2930,0x2930,0x212F,0x212F,0x2930,0x212F,0x2110,0x2110,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x290F,0x2930,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2130,0x1931,0x1932,0x1132,0x1133,0x1975,0x29F7,0x29F7,0x1974,0x08F2,0x1932,0x1952,0x1951,0x1930,0x2130,0x2130,0x2150,0x2130,0x2110,0x2130,0x2151,0x2131,0x1912,0x1174,0x19F7,0x19F8,0x19F7,0x1154,0x1132,0x1131,0x1931,0x2131,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x2930,0x292F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1911,0x1132,0x1133,0x1175,0x19B6,0x19D7,0x21F7,0x19D6,0x1995,0x1153,0x1153,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x2930,0x290F,0x210F,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x210F,0x2930,0x2110,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x212F,0x210F,0x2130,0x1930,0x1951,0x1152,0x1132,0x1994,0x21F6,0x21F6,0x19B5,0x0912,0x1112,0x1932,0x1932,0x1932,0x1932,0x1952,0x1132,0x1995,0x21D6,0x21F7,0x1995,0x0912,0x1132,0x1931,0x1931,0x2130,0x2130,0x2110,0x212F,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x1911,0x1932,0x1133,0x1995,0x19B7,0x11D8,0x09F9,0x09D9,0x01B9,0x09D9,0x09D9,0x09D9,0x09F9,0x09F9,0x11F8,0x11D7,0x1175,0x1174,0x1133,0x1132,0x1112,0x1112,0x1932,0x1912,0x1932,0x1932,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x1912,0x1912,0x1912,0x1912,0x1912,0x18F1,0x1911,0x1912,0x18F1,0x1911,0x1911,0x1931,0x1911,0x1931,0x1111,0x1111,0x1112,0x0913,0x1134,0x1155,0x19B7,0x21D7,0x19D7,0x21D7,0x1996,0x1134,0x1113,0x1912,0x2132,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x210F,0x212F,0x2930,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1932,0x1113,0x1175,0x11B7,0x11D8,0x09B8,0x09D8,0x11D8,0x0996,0x0134,0x0934,0x1174,0x0954,0x0934,0x1155,0x0955,0x0955,0x0956,0x0997,0x11F8,0x11D8,0x09B7,0x0955,0x00F4,0x08F3,0x1113,0x1154,0x1113,0x1133,0x0912,0x0913,0x0955,0x09B7,0x09B8,0x09D8,0x11D8,0x0976,0x0934,0x0912,0x1111,0x1910,0x1910,0x2130,0x210F,0x210E,0x210F,0x210E,0x210E,0x210F,0x210E,0x210F,0x210E,0x20EE,0x210E,0x210E,0x210E, + 0x1930,0x1910,0x1910,0x190F,0x190F,0x210F,0x190F,0x190E,0x210E,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x2930,0x210F,0x290F,0x212F,0x292F,0x292F,0x290F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2930,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2910,0x2910,0x212F,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2130,0x2130,0x2111,0x1911,0x1112,0x1155,0x1A39,0x09F9,0x01B9,0x01BA,0x01DA,0x01FB,0x01FB,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01D9,0x01D8,0x1219,0x1219,0x1218,0x1A18,0x1A18,0x19F8,0x19F8,0x1A18,0x19F8,0x19F7,0x19F8,0x19F8,0x19F8,0x21F8,0x19F8,0x21F8,0x19F8,0x19F8,0x1A18,0x1A18,0x1A18,0x1A18,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x1A18,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19D8,0x19D8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x1A18,0x1A18,0x1A18,0x1A18,0x19F8,0x19D7,0x19F7,0x19F7,0x19D6,0x1174,0x1133,0x1112,0x1931,0x1931,0x2131,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x292F,0x2930,0x292F,0x292F,0x290F,0x290F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2930,0x2110,0x2130,0x2930,0x2110,0x2910,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x290F,0x290F,0x292F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2131,0x2132,0x1932,0x1952,0x1953,0x1132,0x1132,0x1132,0x1132,0x1932,0x1932,0x1911,0x1911,0x2131,0x2130,0x2130,0x2930,0x2110,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x2130,0x2130,0x212F,0x210F,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x2110,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2130,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x212F,0x2930,0x212F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2910,0x2910,0x210F,0x2930,0x290F,0x290F,0x2930,0x210F,0x2910,0x2930,0x2110,0x2110,0x2130,0x2130,0x210F,0x212F,0x292F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x2930,0x2930,0x2131,0x2131,0x2131,0x1912,0x1912,0x1133,0x1154,0x1195,0x19F7,0x2217,0x2217,0x19D6,0x1133,0x1111,0x1911,0x1930,0x2150,0x2150,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2131,0x1931,0x1932,0x1112,0x1154,0x19D6,0x19F7,0x19F7,0x11B6,0x0953,0x0912,0x1111,0x1930,0x2151,0x2970,0x2950,0x212F,0x210F,0x212F,0x212F,0x214F,0x212F,0x212F,0x210F,0x2930,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x290F,0x2910,0x290F,0x2910,0x2930,0x2130,0x2130,0x2930,0x2910,0x2910,0x2910,0x2110,0x2930,0x2130,0x2130,0x2110,0x212F,0x2130,0x2130,0x1931,0x1931,0x1132,0x1133,0x1175,0x19B6,0x19D7,0x21F8,0x19D7,0x19B6,0x1155,0x1134,0x1133,0x0912,0x1112,0x1132,0x1132,0x1952,0x1952,0x1932,0x1932,0x1112,0x1132,0x1953,0x1953,0x1132,0x1153,0x1154,0x1154,0x1175,0x1195,0x19D7,0x2218,0x2218,0x19F7,0x1133,0x10F2,0x1912,0x1911,0x1910,0x2110,0x2110,0x2130,0x2130,0x212F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1112,0x1154,0x2239,0x21F8,0x19B7,0x1154,0x1953,0x1931,0x1910,0x2110,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x1910,0x1931,0x1953,0x11B5,0x19F7,0x19F8,0x1995,0x1112,0x10F1,0x1911,0x2131,0x2131,0x1932,0x1132,0x0933,0x11D7,0x11F8,0x1A18,0x11B6,0x10F2,0x1911,0x2131,0x2130,0x2130,0x2110,0x2930,0x2930,0x2110,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2110,0x212F,0x210F,0x290F,0x290F,0x2930,0x212F,0x2930,0x210F,0x212F,0x212F,0x2110,0x2110,0x2930,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x292F,0x290F,0x290F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x290F,0x290F,0x210F,0x292F,0x292F,0x292F,0x2930,0x292F,0x212F,0x290F,0x210F,0x290F,0x2930,0x290F,0x210F,0x212F,0x2130,0x1931,0x1932,0x1932,0x1133,0x1995,0x2A17,0x21F7,0x1154,0x08F2,0x1112,0x1952,0x1951,0x2131,0x1930,0x2130,0x2130,0x210F,0x2130,0x2130,0x2151,0x1931,0x1932,0x1154,0x2217,0x19F8,0x19F7,0x0974,0x0913,0x1112,0x1952,0x1931,0x2131,0x2951,0x2130,0x2130,0x212F,0x210F,0x292F,0x292F,0x212F,0x210F,0x2130,0x2130,0x2131,0x2131,0x1931,0x1112,0x1133,0x1174,0x19B6,0x19D7,0x21F7,0x21F7,0x1995,0x0933,0x1132,0x1932,0x1931,0x2151,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2110,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x290F,0x2910,0x210F,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2910,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x2930,0x210F,0x292F,0x210F,0x292F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1132,0x1132,0x1994,0x21F6,0x21F6,0x1994,0x0912,0x1112,0x1932,0x1911,0x1932,0x1932,0x1932,0x1133,0x19B5,0x21F6,0x21D6,0x1995,0x0912,0x1132,0x1952,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x1911,0x1932,0x1953,0x1995,0x19D7,0x1A19,0x11F9,0x09F9,0x09D9,0x09D9,0x11F9,0x1219,0x11F8,0x1196,0x1174,0x1133,0x1132,0x1932,0x1932,0x1931,0x1911,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x1910,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1910,0x1931,0x2131,0x2131,0x2131,0x2131,0x1910,0x2131,0x2131,0x2131,0x2131,0x2131,0x2110,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x1931,0x1911,0x2110,0x2111,0x2110,0x2110,0x2131,0x1910,0x2131,0x1930,0x2151,0x2130,0x1910,0x1910,0x1930,0x1910,0x1931,0x1911,0x2131,0x2131,0x2131,0x1911,0x2111,0x2111,0x2111,0x2111,0x2131,0x2111,0x2110,0x2130,0x2130,0x2131,0x2131,0x2131,0x2151,0x1911,0x1112,0x1112,0x1134,0x1155,0x1996,0x21D7,0x21F8,0x21D7,0x19D7,0x1134,0x08F2,0x1912,0x2132,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2930,0x2110,0x2130,0x212F,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x2930,0x2910,0x2910,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2110,0x2131,0x1911,0x1112,0x1134,0x1196,0x11D7,0x09D8,0x09B7,0x09B7,0x0935,0x00F3,0x08F2,0x1112,0x0912,0x1113,0x1133,0x0913,0x0934,0x0934,0x0996,0x11B7,0x11F8,0x1196,0x0934,0x08D3,0x08F2,0x10F2,0x1932,0x1132,0x08F1,0x08F1,0x08F2,0x0954,0x11D7,0x11F8,0x11D8,0x09B7,0x0975,0x0913,0x1132,0x1111,0x1910,0x2130,0x210F,0x20EF,0x20EE,0x20EE,0x210E,0x210E,0x292F,0x210F,0x210F,0x210E,0x20EE,0x210E,0x210F,0x210F, + 0x1911,0x1931,0x1910,0x1910,0x190F,0x190F,0x190F,0x190F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x2110,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x2930,0x212F,0x292F,0x292F,0x212F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x2110,0x2110,0x2910,0x2930,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x292F,0x210F,0x292F,0x210F,0x292F,0x2930,0x2930,0x212F,0x2130,0x2130,0x2110,0x2111,0x1931,0x1112,0x1155,0x1A19,0x01B9,0x01B9,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01D9,0x01B8,0x09D7,0x09B6,0x11B6,0x11B6,0x1196,0x11B6,0x1196,0x1196,0x19B6,0x19B6,0x1195,0x1996,0x1996,0x1996,0x1996,0x19B6,0x1996,0x19B6,0x19B6,0x19B6,0x19B6,0x11B5,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x11B6,0x11B6,0x19B6,0x19B6,0x1996,0x19B6,0x19B6,0x19B6,0x19B6,0x1996,0x1996,0x19B6,0x1996,0x19B6,0x1996,0x1996,0x19B6,0x19B6,0x19B6,0x1196,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19D6,0x19D6,0x19F7,0x19F7,0x21F7,0x19D6,0x1994,0x1133,0x1111,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x2930,0x2130,0x2131,0x2131,0x1931,0x1932,0x1931,0x1932,0x1912,0x1932,0x1931,0x1911,0x1931,0x1911,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x290F,0x212F,0x2130,0x212F,0x2130,0x212F,0x2130,0x2930,0x2930,0x212F,0x2930,0x210F,0x210F,0x2130,0x2130,0x2910,0x210F,0x210F,0x2130,0x2130,0x2930,0x212F,0x2130,0x212F,0x210F,0x290F,0x2930,0x210F,0x210F,0x292F,0x292F,0x212F,0x292F,0x292F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x210F,0x2910,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x28F0,0x2910,0x2910,0x290F,0x290F,0x2930,0x292F,0x292F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2111,0x2111,0x1912,0x1912,0x1133,0x1154,0x19B6,0x2217,0x19F7,0x21F7,0x1995,0x1132,0x1912,0x1910,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x2950,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2131,0x1932,0x1133,0x1133,0x19D6,0x1A17,0x19F7,0x11B6,0x1153,0x0912,0x1111,0x1930,0x2151,0x2950,0x2950,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x20EF,0x2110,0x2930,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x1910,0x1931,0x1932,0x1133,0x1154,0x1175,0x19B7,0x19D7,0x21D7,0x19D7,0x19B6,0x1175,0x1154,0x0933,0x0912,0x0912,0x0912,0x1132,0x1132,0x1132,0x1112,0x1132,0x1133,0x1133,0x1133,0x1153,0x1154,0x1154,0x1175,0x11B6,0x19D7,0x1A18,0x2218,0x2217,0x1995,0x1112,0x10F1,0x1911,0x1911,0x2110,0x2110,0x2110,0x2950,0x2130,0x210F,0x2130,0x2130,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2131,0x1931,0x1931,0x1112,0x0913,0x21D7,0x2239,0x21F8,0x19B6,0x1954,0x1952,0x2131,0x2130,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2131,0x1931,0x1153,0x1195,0x19F7,0x2218,0x1195,0x1112,0x1911,0x1911,0x2131,0x1911,0x1932,0x1132,0x1133,0x11D6,0x11F8,0x1A18,0x19B6,0x10F2,0x1911,0x2111,0x2130,0x2110,0x2930,0x2930,0x2110,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x2110,0x2110,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2930,0x290F,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2930,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x2930,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x2130,0x2131,0x1932,0x1132,0x1133,0x1975,0x2A17,0x29F7,0x1974,0x08F2,0x1112,0x1932,0x2151,0x2131,0x2110,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x1911,0x1932,0x1133,0x19D6,0x19F8,0x19F8,0x11B6,0x0934,0x1133,0x1132,0x1932,0x1931,0x2151,0x2130,0x210F,0x210F,0x212F,0x212F,0x2950,0x292F,0x210F,0x210F,0x2110,0x2151,0x2131,0x1931,0x1911,0x1112,0x1133,0x1975,0x1996,0x21F7,0x21F7,0x19D6,0x19B5,0x1153,0x1132,0x1932,0x1931,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2910,0x290F,0x290F,0x210F,0x2930,0x2110,0x210F,0x2910,0x2910,0x210F,0x2910,0x2110,0x2110,0x210F,0x2910,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x212F,0x2130,0x212F,0x212F,0x292F,0x292F,0x210F,0x212F,0x2130,0x2131,0x1931,0x1932,0x1132,0x1994,0x21F6,0x21F6,0x19B5,0x0912,0x1112,0x1932,0x1932,0x1932,0x1932,0x1932,0x1133,0x19B5,0x21D6,0x21D6,0x19B5,0x0912,0x1132,0x1952,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2930,0x212F,0x2930,0x2130,0x2110,0x2130,0x1931,0x1932,0x1954,0x1995,0x11B6,0x11D7,0x19F8,0x11D8,0x11D7,0x11B7,0x1196,0x1175,0x1154,0x1133,0x1932,0x1932,0x1931,0x1931,0x1931,0x1930,0x2131,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2131,0x2131,0x1931,0x1931,0x1112,0x1112,0x1133,0x1154,0x19B6,0x19D7,0x21F8,0x21F7,0x1996,0x1134,0x08F2,0x1912,0x2152,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x290F,0x292F,0x290F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x2910,0x210F,0x2910,0x210F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2110,0x2110,0x1911,0x1111,0x1113,0x1996,0x11D7,0x11D8,0x11B7,0x1196,0x0934,0x0912,0x1112,0x1112,0x1912,0x1912,0x1112,0x1133,0x1133,0x0933,0x1196,0x19F7,0x11D7,0x11B6,0x0914,0x08F2,0x1112,0x1111,0x1111,0x1111,0x1111,0x1111,0x0912,0x0933,0x11B7,0x11D8,0x11B7,0x11D7,0x0954,0x08F2,0x10F1,0x1110,0x1910,0x210F,0x210F,0x210F,0x210E,0x210F,0x210E,0x210F,0x210F,0x210F,0x212F,0x212F,0x20EE,0x292F,0x210F,0x210F, + 0x1132,0x1131,0x1931,0x1910,0x1910,0x1910,0x190F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x212F,0x212F,0x290F,0x210F,0x212F,0x2930,0x212F,0x210F,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x290F,0x2930,0x2910,0x2910,0x290F,0x210F,0x2930,0x2110,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x290F,0x290F,0x210F,0x292F,0x212F,0x212F,0x2930,0x2130,0x2130,0x2110,0x2131,0x1932,0x1132,0x0934,0x1A19,0x09D9,0x01B9,0x01DA,0x01DA,0x01DB,0x01FA,0x01DA,0x01FA,0x01DA,0x01FA,0x01FB,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01D9,0x01B8,0x0976,0x0934,0x0933,0x1133,0x1153,0x1154,0x1153,0x1133,0x1153,0x1153,0x1153,0x1974,0x1933,0x1133,0x1933,0x1933,0x1933,0x1933,0x1953,0x1153,0x1152,0x1153,0x1953,0x1153,0x1133,0x1133,0x1133,0x1133,0x1153,0x1153,0x1153,0x1133,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1133,0x1153,0x1153,0x1133,0x1153,0x1153,0x1133,0x1133,0x1153,0x1133,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1154,0x1995,0x19F6,0x2217,0x2217,0x19D6,0x19B5,0x1153,0x1111,0x1911,0x1931,0x2151,0x2150,0x2130,0x2110,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x290F,0x290F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x212F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2130,0x2131,0x2131,0x2131,0x1931,0x1931,0x2131,0x1931,0x2131,0x2131,0x1930,0x2130,0x2110,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x212F,0x2130,0x2930,0x2130,0x2930,0x2930,0x2130,0x2130,0x212F,0x210F,0x212F,0x2930,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2910,0x2910,0x2930,0x210F,0x2910,0x210F,0x2910,0x2930,0x210F,0x290F,0x2910,0x210F,0x290F,0x290F,0x292F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2111,0x1931,0x1932,0x1153,0x1174,0x19B6,0x19D6,0x19F7,0x21F6,0x1994,0x1932,0x1911,0x1911,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1932,0x1132,0x1153,0x19D6,0x1A17,0x11D6,0x11B5,0x1154,0x1132,0x1911,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2930,0x2930,0x210F,0x2110,0x2930,0x2930,0x2910,0x210F,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x210F,0x212F,0x2130,0x2130,0x2151,0x1931,0x1932,0x1933,0x1154,0x1175,0x1996,0x19B7,0x19D7,0x19D7,0x19D7,0x19B6,0x1195,0x0954,0x0933,0x0933,0x0933,0x0933,0x1153,0x1133,0x1133,0x1133,0x0933,0x1154,0x1175,0x1175,0x11B6,0x19D7,0x1A17,0x1A18,0x2218,0x19D7,0x1995,0x1133,0x10F1,0x1911,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x2130,0x212F,0x2130,0x2130,0x212F,0x210F,0x290F,0x290F,0x292F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x2130,0x210F,0x2110,0x2110,0x2130,0x2131,0x1931,0x1932,0x1112,0x1133,0x19B6,0x2A58,0x2218,0x19B7,0x1155,0x1133,0x1932,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2130,0x2110,0x1910,0x1931,0x1132,0x11B5,0x1A18,0x2218,0x1195,0x1132,0x1932,0x1911,0x2131,0x1931,0x2152,0x1132,0x0933,0x11D6,0x11F8,0x1A18,0x19D6,0x10F2,0x1911,0x2111,0x2110,0x2110,0x2930,0x2930,0x2110,0x210F,0x212F,0x2930,0x2130,0x212F,0x212F,0x2930,0x2930,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x210F,0x212F,0x210F,0x212F,0x2930,0x212F,0x210F,0x2930,0x210F,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x292F,0x210F,0x212F,0x292F,0x212F,0x2930,0x2110,0x210F,0x2910,0x210F,0x210F,0x2930,0x210F,0x2130,0x2130,0x2131,0x1952,0x1932,0x1113,0x1975,0x2A17,0x21F7,0x1974,0x1112,0x1932,0x1932,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x2130,0x2131,0x1932,0x1133,0x0933,0x19F7,0x1A18,0x19F7,0x11B6,0x0934,0x0913,0x1953,0x1932,0x2152,0x2131,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2151,0x2131,0x1911,0x1932,0x1133,0x1174,0x19B6,0x21F7,0x21F7,0x19D6,0x1195,0x1153,0x1132,0x1931,0x1931,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2910,0x210F,0x2910,0x210F,0x2910,0x2910,0x2910,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x210F,0x212F,0x210F,0x212F,0x292F,0x292F,0x292F,0x2130,0x2130,0x2131,0x1952,0x1952,0x1153,0x1995,0x21F6,0x21F6,0x19B5,0x0912,0x1112,0x1112,0x1911,0x1932,0x1952,0x1952,0x1153,0x19B5,0x21D6,0x2217,0x19B5,0x0912,0x1112,0x1932,0x2131,0x1930,0x2130,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x210F,0x2130,0x2130,0x1931,0x1932,0x1953,0x1153,0x1974,0x1995,0x1175,0x1154,0x1154,0x1154,0x1153,0x1952,0x1931,0x1931,0x1931,0x1910,0x1910,0x1930,0x1930,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2150,0x2130,0x2131,0x1931,0x1931,0x1932,0x1112,0x1153,0x1174,0x19B6,0x19D7,0x21F7,0x19D7,0x1996,0x1154,0x08F2,0x1932,0x2132,0x2131,0x2151,0x2131,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x210F,0x290F,0x290F,0x2930,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2930,0x290F,0x210F,0x2930,0x210F,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x212F,0x292F,0x290F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2111,0x1911,0x10F2,0x1154,0x11B7,0x11B7,0x11D8,0x11B7,0x0934,0x1112,0x1111,0x1911,0x1932,0x1911,0x1932,0x1132,0x1133,0x0933,0x19D6,0x2238,0x19D7,0x1195,0x0913,0x1112,0x1912,0x1931,0x1911,0x1931,0x1931,0x1131,0x1111,0x1153,0x11B6,0x11D8,0x1A18,0x11D7,0x0933,0x08F1,0x1111,0x1930,0x18EF,0x210F,0x210F,0x210E,0x210E,0x210E,0x210F,0x212F,0x210F,0x210E,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F, + 0x1974,0x1153,0x1932,0x1931,0x1931,0x1910,0x1910,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x290F,0x2930,0x210F,0x2930,0x212F,0x212F,0x212F,0x2930,0x210F,0x290F,0x2910,0x2910,0x2930,0x210F,0x210F,0x2110,0x290F,0x290F,0x290F,0x210F,0x290F,0x212F,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x212F,0x212F,0x2930,0x2110,0x2110,0x2130,0x2131,0x1931,0x1112,0x1154,0x1A19,0x09F9,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x09F9,0x0197,0x0975,0x0933,0x1132,0x1132,0x1112,0x1112,0x1912,0x1912,0x1112,0x1112,0x1932,0x1912,0x1912,0x1912,0x1912,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1912,0x1932,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1932,0x1932,0x1932,0x1932,0x1931,0x1111,0x1932,0x1911,0x1931,0x1111,0x1932,0x1112,0x1132,0x1132,0x1132,0x1133,0x1174,0x19F6,0x21F7,0x21F7,0x19D6,0x1994,0x1153,0x1132,0x1931,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x210F,0x210F,0x2910,0x2910,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x2110,0x2930,0x2910,0x210F,0x2910,0x210F,0x210F,0x210F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x292F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x2131,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x292F,0x290F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x290F,0x290F,0x2910,0x2930,0x210F,0x2910,0x290F,0x290F,0x2910,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x210F,0x210F,0x292F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2131,0x1931,0x1932,0x1153,0x1194,0x11D6,0x19D7,0x1A17,0x21F6,0x1133,0x1912,0x1911,0x1910,0x2951,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x2110,0x2130,0x2131,0x1932,0x1132,0x1133,0x19D6,0x1A17,0x11D6,0x19B6,0x1154,0x1112,0x1911,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x2910,0x2910,0x290F,0x2910,0x2910,0x290F,0x292F,0x292F,0x2930,0x2910,0x2910,0x2910,0x2910,0x28F0,0x2910,0x2110,0x2930,0x2110,0x210F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1931,0x1932,0x1933,0x1154,0x1955,0x1175,0x19B6,0x19D7,0x19D7,0x19F7,0x19D7,0x19D6,0x1195,0x1175,0x0954,0x0954,0x0954,0x0954,0x0954,0x0934,0x1155,0x1175,0x1196,0x19D7,0x19F8,0x19F8,0x2218,0x19F7,0x19D6,0x1195,0x1153,0x1112,0x1911,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x210F,0x2930,0x2110,0x2130,0x2131,0x2131,0x1932,0x1132,0x1133,0x1195,0x2A58,0x2218,0x19D7,0x1996,0x1133,0x1933,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2130,0x2130,0x1930,0x1932,0x1133,0x19B6,0x1A18,0x19F7,0x1195,0x1132,0x1911,0x1911,0x1911,0x2131,0x1932,0x1932,0x0933,0x11D6,0x11F8,0x19F8,0x19D6,0x10F2,0x1911,0x2111,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2110,0x212F,0x212F,0x2930,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x2930,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2910,0x210F,0x2930,0x290F,0x210F,0x2110,0x2130,0x2130,0x1931,0x1932,0x1932,0x1133,0x1975,0x2A17,0x21F7,0x1995,0x08F2,0x1932,0x2152,0x2131,0x2130,0x2110,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2131,0x1931,0x1932,0x0933,0x1195,0x19F8,0x19F8,0x19F8,0x1196,0x0934,0x1133,0x1132,0x1932,0x2131,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2131,0x2131,0x1932,0x1132,0x1153,0x1174,0x19B6,0x21F7,0x21F7,0x21F6,0x1995,0x1153,0x1932,0x1932,0x2131,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2110,0x2910,0x210F,0x210F,0x210F,0x2930,0x210F,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x210F,0x2910,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x2930,0x2130,0x2130,0x2131,0x1952,0x1952,0x1133,0x1995,0x21F6,0x21F7,0x19B5,0x0912,0x1112,0x1112,0x1932,0x1932,0x1952,0x1132,0x1153,0x19B5,0x21F6,0x2217,0x19D6,0x0912,0x1112,0x1932,0x2151,0x2131,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1910,0x1931,0x1931,0x1932,0x1932,0x1132,0x1132,0x1933,0x1953,0x1932,0x1932,0x1931,0x1910,0x1910,0x2130,0x1910,0x2110,0x1930,0x1930,0x2110,0x210F,0x2130,0x210F,0x2130,0x210F,0x210F,0x212F,0x210F,0x2130,0x212F,0x212F,0x2110,0x2110,0x210F,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x2130,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x210F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2930,0x2130,0x2930,0x2910,0x2910,0x2110,0x2930,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2151,0x1931,0x1932,0x1132,0x1153,0x1154,0x1996,0x19D7,0x19D7,0x21F7,0x19B6,0x1134,0x1112,0x1912,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x210F,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2930,0x210F,0x290F,0x290F,0x210F,0x210F,0x2130,0x212F,0x210F,0x290F,0x2930,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x2930,0x292F,0x292F,0x2930,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2110,0x2131,0x1911,0x10F1,0x1133,0x19B7,0x19F8,0x11D7,0x11B6,0x0933,0x1112,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1132,0x0933,0x19B6,0x19F7,0x19D7,0x1995,0x0913,0x10F2,0x1911,0x1910,0x1930,0x1910,0x1930,0x1910,0x1111,0x1133,0x11B6,0x11D7,0x11D8,0x11B7,0x0933,0x08F1,0x1911,0x1910,0x1910,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F, + 0x2217,0x1174,0x1153,0x1132,0x1932,0x1931,0x1931,0x2130,0x190F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x212F,0x212F,0x2930,0x2110,0x212F,0x212F,0x290F,0x290F,0x212F,0x2930,0x2930,0x210F,0x2930,0x212F,0x2930,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x290F,0x210F,0x292F,0x210F,0x292F,0x210F,0x290F,0x2930,0x2930,0x2130,0x2131,0x1911,0x1112,0x1154,0x1A19,0x09D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01FA,0x09F9,0x09B7,0x0975,0x1153,0x1153,0x1932,0x1932,0x1912,0x1932,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1930,0x1931,0x1911,0x1931,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x2131,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1132,0x1153,0x1154,0x19B5,0x21F7,0x19F6,0x19D6,0x19B5,0x1153,0x1132,0x1911,0x1931,0x2151,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2910,0x2910,0x210F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x212F,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x2930,0x2930,0x212F,0x212F,0x2130,0x2130,0x210F,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x292F,0x290F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2131,0x1931,0x1953,0x1174,0x1195,0x11D6,0x19F7,0x19D6,0x1174,0x1133,0x1911,0x1931,0x2131,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1952,0x1133,0x1133,0x19F7,0x2217,0x19F7,0x1195,0x1153,0x1112,0x1911,0x2131,0x2130,0x2130,0x2110,0x2130,0x210F,0x2130,0x212F,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x290F,0x212F,0x212F,0x290F,0x210F,0x292F,0x290F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1932,0x1912,0x1933,0x1134,0x1955,0x1175,0x1196,0x1196,0x11B6,0x11B6,0x11D7,0x11D6,0x19D6,0x11D6,0x11D6,0x11D6,0x11D6,0x11B6,0x19D7,0x19D7,0x19D7,0x19F7,0x19F8,0x19D7,0x19D7,0x19B6,0x1175,0x1154,0x1133,0x1933,0x1932,0x1931,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x292F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2111,0x2131,0x1932,0x1132,0x1153,0x1995,0x2A38,0x2A18,0x19B7,0x1996,0x1954,0x1112,0x1932,0x1931,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x2930,0x210F,0x2110,0x2130,0x2110,0x2151,0x1951,0x1132,0x1133,0x19D6,0x2238,0x19F7,0x1175,0x1132,0x1932,0x1931,0x1911,0x2131,0x2152,0x1932,0x1133,0x19D7,0x1A18,0x1A18,0x19B6,0x10F2,0x1911,0x2111,0x2130,0x2110,0x2930,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x2110,0x2910,0x210F,0x2930,0x2110,0x2930,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x290F,0x290F,0x2910,0x2130,0x2130,0x1910,0x1931,0x1932,0x1133,0x1995,0x2A17,0x21F7,0x1975,0x1112,0x1932,0x2152,0x2131,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2131,0x1952,0x1133,0x1154,0x19B6,0x19D7,0x19F8,0x2218,0x1175,0x0933,0x1133,0x1132,0x1932,0x2171,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x292F,0x2930,0x2930,0x2130,0x2131,0x1911,0x1932,0x1953,0x1153,0x1174,0x19B6,0x19F7,0x2217,0x19D6,0x1995,0x1153,0x1132,0x1932,0x2131,0x2111,0x2131,0x2130,0x2130,0x2110,0x2130,0x2930,0x292F,0x212F,0x212F,0x212F,0x212F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2930,0x2910,0x290F,0x210F,0x2910,0x210F,0x2910,0x2910,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x292F,0x210F,0x292F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1932,0x0912,0x1995,0x21F6,0x2217,0x19B6,0x0912,0x1112,0x1932,0x1932,0x1932,0x1952,0x1932,0x1132,0x1994,0x21F6,0x19F6,0x19D6,0x0913,0x1112,0x1932,0x1951,0x2151,0x2130,0x2130,0x210F,0x2130,0x2950,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x1930,0x1930,0x1931,0x1931,0x1952,0x1932,0x1932,0x1911,0x1931,0x2131,0x2131,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2930,0x212F,0x292F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2930,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2930,0x210F,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2150,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2910,0x20EF,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2131,0x1931,0x1931,0x1112,0x1153,0x1174,0x1196,0x19F7,0x2218,0x21F7,0x19B6,0x1134,0x1933,0x1112,0x1911,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x214F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x290F,0x2930,0x210F,0x210F,0x212F,0x212F,0x290F,0x210F,0x2930,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x1911,0x18F1,0x1953,0x19D7,0x11D7,0x19F8,0x11B6,0x1133,0x1111,0x1911,0x2130,0x2110,0x2110,0x1911,0x1911,0x1132,0x1133,0x19B6,0x2217,0x19D7,0x1995,0x0913,0x10F2,0x1931,0x1931,0x1910,0x1910,0x1910,0x1930,0x1931,0x1153,0x11B6,0x19F8,0x19F8,0x19D7,0x0913,0x1111,0x1931,0x1930,0x190F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F, + 0x2238,0x19B6,0x1175,0x1133,0x1132,0x1932,0x1931,0x1931,0x1910,0x1910,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x212F,0x290F,0x210F,0x212F,0x210F,0x210F,0x2910,0x2910,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x2910,0x2910,0x212F,0x212F,0x290F,0x290F,0x212F,0x212F,0x290F,0x290F,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x210F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x210F,0x292F,0x292F,0x290F,0x2910,0x2110,0x2110,0x2110,0x1931,0x1932,0x1134,0x1A18,0x09D9,0x09FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01FA,0x01FA,0x01F9,0x09D9,0x09B7,0x0975,0x0933,0x1132,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x2131,0x2111,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x2151,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1132,0x1153,0x1174,0x19B5,0x21F7,0x21F7,0x21D6,0x1995,0x1153,0x1112,0x1911,0x1931,0x2131,0x2151,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x212F,0x212F,0x2130,0x2110,0x210F,0x212F,0x2130,0x210F,0x2130,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x212F,0x292F,0x290F,0x290F,0x210F,0x2130,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x2930,0x2930,0x292F,0x292F,0x212F,0x212F,0x210F,0x2110,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x210F,0x2930,0x2930,0x2930,0x290F,0x210F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x290F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x1931,0x1932,0x1973,0x1174,0x11B6,0x19F7,0x19F7,0x19B6,0x1154,0x1932,0x1931,0x2110,0x2130,0x2110,0x2930,0x2130,0x212F,0x292F,0x212F,0x292F,0x212F,0x2130,0x2110,0x2131,0x1932,0x1132,0x1153,0x19D6,0x2217,0x19D6,0x1995,0x1154,0x1112,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x292F,0x292F,0x292F,0x290F,0x290F,0x212F,0x212F,0x2930,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x292F,0x210F,0x2930,0x2130,0x2110,0x2130,0x1911,0x1931,0x1932,0x1932,0x1933,0x1154,0x1175,0x1175,0x1175,0x11B6,0x11D6,0x11B6,0x11D7,0x19F7,0x1A17,0x2218,0x1A17,0x1A17,0x19F7,0x19D7,0x19D7,0x19D7,0x19B6,0x19B7,0x1195,0x1175,0x1154,0x1133,0x1933,0x1932,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2930,0x2931,0x2111,0x1911,0x1112,0x1133,0x1995,0x2217,0x2218,0x21F7,0x1996,0x1134,0x1133,0x1912,0x1911,0x2131,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x2950,0x292F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2131,0x1951,0x1931,0x1132,0x0933,0x21F7,0x2238,0x19D7,0x1175,0x1933,0x1931,0x1911,0x1911,0x2131,0x2152,0x1932,0x1133,0x11B6,0x19F8,0x1A18,0x19D6,0x08F2,0x1911,0x2131,0x2110,0x2110,0x2110,0x2130,0x2930,0x210F,0x2930,0x2930,0x290F,0x2110,0x2110,0x290F,0x210F,0x2930,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x210F,0x2930,0x212F,0x212F,0x2930,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2910,0x210F,0x210F,0x210F,0x2130,0x2130,0x2131,0x1932,0x1932,0x1133,0x1975,0x2A18,0x21F7,0x1995,0x08F2,0x1933,0x2152,0x2131,0x2130,0x2130,0x212F,0x212F,0x292F,0x292F,0x212F,0x210F,0x2130,0x2131,0x1952,0x1932,0x1133,0x1154,0x19B6,0x19F7,0x21F8,0x19F7,0x1175,0x0933,0x1133,0x1932,0x2152,0x2151,0x1910,0x2130,0x2130,0x2130,0x210F,0x210F,0x292F,0x2930,0x290F,0x2910,0x2130,0x2130,0x2131,0x1952,0x1932,0x1153,0x1133,0x1154,0x19B6,0x19F7,0x2217,0x19D6,0x1995,0x1953,0x1112,0x1932,0x2152,0x2131,0x2131,0x2110,0x2110,0x2110,0x2130,0x2930,0x210F,0x210F,0x210F,0x212F,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2110,0x2930,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2130,0x2930,0x290F,0x292F,0x210F,0x210F,0x2110,0x2131,0x1911,0x1912,0x1112,0x1995,0x21F6,0x21F7,0x21D6,0x0913,0x1112,0x1932,0x1932,0x1932,0x1952,0x1932,0x1132,0x1994,0x21D6,0x21F7,0x21F7,0x1134,0x1112,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1911,0x1931,0x1911,0x1910,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x2130,0x210F,0x2930,0x2110,0x2930,0x2930,0x292F,0x292F,0x292F,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x2110,0x2110,0x2930,0x2130,0x2930,0x2930,0x212F,0x2930,0x2930,0x290F,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x210F,0x2930,0x292F,0x212F,0x2930,0x2930,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x1930,0x1931,0x1131,0x1132,0x1153,0x1174,0x19D6,0x19D7,0x2218,0x2217,0x1996,0x1154,0x1113,0x1112,0x1911,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x290F,0x290F,0x212F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x2110,0x210F,0x210F,0x2930,0x290F,0x2910,0x2910,0x290F,0x2930,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x210F,0x292F,0x292F,0x212F,0x210F,0x292F,0x210F,0x210F,0x2930,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x1910,0x1911,0x1133,0x19D7,0x11D7,0x11B7,0x19B6,0x1133,0x1911,0x1911,0x2110,0x2110,0x2110,0x2111,0x1911,0x1932,0x1133,0x19B5,0x2217,0x19D7,0x1195,0x0912,0x10F1,0x1911,0x1910,0x2130,0x2130,0x1910,0x1930,0x1931,0x1153,0x11B6,0x11D7,0x19F8,0x19D7,0x0933,0x1111,0x1931,0x1930,0x190F,0x190F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F, + 0x19F7,0x19F7,0x1195,0x1154,0x1133,0x1132,0x1932,0x1932,0x1931,0x1930,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2110,0x2910,0x2910,0x210F,0x212F,0x212F,0x210F,0x2910,0x210F,0x292F,0x210F,0x290F,0x290F,0x212F,0x212F,0x292F,0x292F,0x212F,0x210F,0x290F,0x290F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2930,0x2930,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x292F,0x212F,0x212F,0x292F,0x292F,0x212F,0x210F,0x290F,0x210F,0x2910,0x2930,0x2110,0x2130,0x1931,0x1932,0x1154,0x1A18,0x09F9,0x01D9,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01F9,0x01F9,0x09D9,0x09B7,0x1195,0x1153,0x1132,0x1932,0x1931,0x1931,0x1911,0x1911,0x2151,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x2131,0x2131,0x1931,0x1931,0x2131,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1930,0x2131,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x1931,0x1931,0x2131,0x2151,0x1931,0x1952,0x1931,0x1931,0x1931,0x1932,0x1932,0x1132,0x1133,0x1133,0x1154,0x19B6,0x21F7,0x2217,0x19D6,0x1174,0x1153,0x1132,0x1112,0x1932,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2130,0x2130,0x2930,0x2910,0x2930,0x2930,0x210F,0x210F,0x290F,0x2930,0x2930,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x212F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2930,0x2110,0x210F,0x2110,0x2930,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x292F,0x212F,0x2930,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x2930,0x2930,0x290F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x292F,0x212F,0x210F,0x2130,0x2930,0x2130,0x2130,0x2131,0x1911,0x1132,0x1153,0x1195,0x11D7,0x1A17,0x19D7,0x1154,0x1953,0x1931,0x2111,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x2130,0x2110,0x2131,0x2132,0x1112,0x1153,0x19D6,0x2217,0x19D6,0x1995,0x1153,0x1112,0x1931,0x2131,0x2131,0x2131,0x2110,0x2130,0x2930,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2130,0x212F,0x212F,0x2130,0x2930,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2910,0x2110,0x290F,0x210F,0x210F,0x290F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1932,0x1933,0x1953,0x1954,0x1995,0x19B5,0x19D6,0x19F7,0x2217,0x1A17,0x1A17,0x1A17,0x2217,0x19D6,0x19B6,0x19D6,0x19B6,0x19B6,0x19B5,0x1995,0x1154,0x1153,0x1132,0x1912,0x1911,0x1911,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x292F,0x290F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x2130,0x2951,0x2131,0x2111,0x1911,0x1112,0x1133,0x1995,0x19D6,0x2238,0x21F7,0x1995,0x1134,0x1112,0x1932,0x1931,0x2131,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x294F,0x292F,0x212F,0x210F,0x2930,0x2130,0x210F,0x2110,0x2131,0x2151,0x1951,0x1132,0x0912,0x1195,0x2218,0x1A18,0x19B6,0x1154,0x1933,0x1931,0x2111,0x2111,0x2131,0x2132,0x1932,0x1133,0x11D6,0x11F7,0x19F8,0x19D6,0x08F2,0x1911,0x2131,0x2130,0x2110,0x2110,0x2110,0x2930,0x2130,0x210F,0x290F,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2930,0x210F,0x210F,0x290F,0x2110,0x2930,0x210F,0x210F,0x210F,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x210F,0x2130,0x210F,0x1910,0x1910,0x1932,0x1932,0x1133,0x1995,0x2A18,0x2217,0x1995,0x08F2,0x1112,0x1932,0x2131,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2151,0x2151,0x1932,0x1112,0x1113,0x1154,0x19B6,0x19D7,0x2218,0x19D6,0x0974,0x0933,0x0912,0x1952,0x1952,0x2151,0x2130,0x190F,0x2130,0x2130,0x2130,0x210F,0x290F,0x290F,0x290F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1132,0x1133,0x1194,0x19D6,0x2217,0x2217,0x19D6,0x1995,0x1153,0x1112,0x1932,0x2131,0x2131,0x2111,0x2110,0x2110,0x2930,0x2930,0x2930,0x212F,0x2130,0x2110,0x210F,0x290F,0x2930,0x2930,0x2930,0x290F,0x210F,0x2910,0x2930,0x2110,0x2910,0x210F,0x290F,0x290F,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x292F,0x210F,0x2130,0x2130,0x2930,0x2930,0x2910,0x2930,0x2110,0x2130,0x2110,0x1911,0x1911,0x1132,0x1995,0x21F7,0x21F7,0x19B6,0x0913,0x1113,0x1932,0x1952,0x1932,0x1932,0x1932,0x1132,0x1974,0x21D6,0x19D6,0x19F6,0x1175,0x0912,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2930,0x2910,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2150,0x2150,0x210F,0x210F,0x210F,0x212F,0x2930,0x2110,0x2930,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x2910,0x2930,0x2910,0x210F,0x210F,0x210F,0x212F,0x2130,0x2150,0x2150,0x1930,0x1110,0x1131,0x1173,0x1174,0x19D6,0x21F7,0x2218,0x21F7,0x1995,0x1154,0x1112,0x1112,0x1911,0x2111,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2910,0x2930,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x212F,0x292F,0x2930,0x210F,0x210F,0x210F,0x290F,0x292F,0x210F,0x292F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x1911,0x1912,0x1953,0x19F7,0x19F8,0x19D7,0x1995,0x1133,0x1931,0x1910,0x2110,0x2110,0x2110,0x2111,0x1911,0x1112,0x1133,0x19B6,0x2218,0x21F7,0x1995,0x1113,0x1112,0x1911,0x1930,0x1910,0x190F,0x2130,0x1930,0x1111,0x1132,0x11D6,0x11F8,0x1A19,0x19D7,0x0933,0x1132,0x1931,0x1910,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F, + 0x11B6,0x11D7,0x19F7,0x19B6,0x1174,0x1133,0x1133,0x1112,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2930,0x2930,0x212F,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2910,0x210F,0x2930,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x292F,0x212F,0x212F,0x210F,0x2930,0x290F,0x210F,0x212F,0x2930,0x212F,0x2930,0x212F,0x2930,0x2930,0x2930,0x210F,0x2930,0x210F,0x2930,0x212F,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x212F,0x212F,0x292F,0x292F,0x210F,0x292F,0x210F,0x212F,0x210F,0x212F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2130,0x1931,0x1112,0x1154,0x1A38,0x09D8,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x01D9,0x01FA,0x01D9,0x01D9,0x09D8,0x09B7,0x0975,0x1153,0x1132,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x1931,0x2131,0x1931,0x1931,0x1931,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x1932,0x1932,0x1952,0x1932,0x1952,0x1952,0x1952,0x1952,0x1952,0x1932,0x1932,0x1132,0x1133,0x1154,0x1154,0x19D6,0x19F7,0x19D7,0x19D6,0x1195,0x1133,0x1133,0x1132,0x1931,0x1931,0x2131,0x2131,0x1910,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2950,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2110,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x1930,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1930,0x2131,0x2131,0x2131,0x2131,0x2130,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x2110,0x2110,0x2910,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x2910,0x2110,0x2930,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2930,0x210F,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1132,0x1133,0x1195,0x11F7,0x1A18,0x11D7,0x1175,0x1132,0x1932,0x2111,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2152,0x1932,0x1133,0x19D6,0x2217,0x19D6,0x19B5,0x1153,0x1112,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x292F,0x210F,0x290F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1932,0x1952,0x1953,0x1953,0x1974,0x1995,0x1995,0x1995,0x19B5,0x1195,0x1995,0x1995,0x1995,0x1974,0x1974,0x1974,0x1954,0x1133,0x1132,0x1132,0x1911,0x1911,0x1911,0x1910,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x2131,0x18F1,0x10F2,0x1953,0x1995,0x21F6,0x2238,0x21F7,0x1995,0x1154,0x1113,0x1912,0x1911,0x2131,0x2130,0x2130,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1112,0x1154,0x19D7,0x2238,0x19D7,0x1175,0x1174,0x1932,0x1911,0x2131,0x2111,0x2131,0x2132,0x1932,0x1133,0x11B6,0x11F7,0x1A18,0x19D7,0x08F2,0x1931,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x2930,0x290F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x290F,0x210F,0x210F,0x290F,0x2910,0x2910,0x210F,0x290F,0x2930,0x2910,0x2110,0x2910,0x2910,0x2910,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x2130,0x2130,0x1931,0x1931,0x1132,0x1113,0x1975,0x21F7,0x21F7,0x1995,0x08F2,0x1932,0x2152,0x2131,0x2130,0x2110,0x210F,0x212F,0x212F,0x2930,0x210F,0x212F,0x2130,0x2131,0x2131,0x1931,0x1932,0x1912,0x1133,0x1975,0x1996,0x21F7,0x2217,0x19D6,0x1174,0x1153,0x1132,0x1932,0x1952,0x1931,0x2130,0x1910,0x2130,0x2130,0x210F,0x210F,0x292F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1911,0x1912,0x1132,0x1133,0x1994,0x19D6,0x2217,0x19F6,0x19D6,0x19B5,0x1153,0x1132,0x1912,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x2930,0x2930,0x212F,0x290F,0x2930,0x2110,0x2930,0x2110,0x210F,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x290F,0x290F,0x2910,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x210F,0x292F,0x210F,0x212F,0x2930,0x2930,0x2130,0x2930,0x2930,0x2930,0x2110,0x2110,0x2131,0x2111,0x1932,0x1112,0x1995,0x21F7,0x19D7,0x19D6,0x1133,0x1113,0x1933,0x1952,0x1932,0x1932,0x1932,0x1932,0x1973,0x21D5,0x19D6,0x19F6,0x19D6,0x1154,0x1112,0x1932,0x1931,0x2131,0x2151,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x290F,0x290F,0x2930,0x210F,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x292F,0x290F,0x210F,0x2930,0x2930,0x210F,0x2930,0x290F,0x2930,0x2930,0x2130,0x212F,0x212F,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2950,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x210F,0x2130,0x2110,0x2110,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2110,0x212F,0x210F,0x212F,0x212F,0x2130,0x2150,0x2130,0x1930,0x1931,0x1131,0x1153,0x1174,0x19B6,0x19F7,0x19F7,0x21F7,0x19B6,0x1974,0x1133,0x1912,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x290F,0x290F,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x210F,0x2110,0x2930,0x2910,0x210F,0x290F,0x210F,0x210F,0x292F,0x210F,0x290F,0x210F,0x212F,0x290F,0x210F,0x212F,0x210F,0x292F,0x212F,0x210F,0x292F,0x210F,0x290F,0x210F,0x210F,0x292F,0x2930,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2111,0x1911,0x1933,0x19F7,0x19F7,0x19B7,0x1995,0x1953,0x1911,0x1910,0x2110,0x2110,0x2110,0x2111,0x1912,0x1912,0x0913,0x19B6,0x2217,0x19F7,0x1195,0x1113,0x1112,0x1931,0x1930,0x2130,0x212F,0x1930,0x1930,0x1131,0x1133,0x11B6,0x1A18,0x1A18,0x19D7,0x0913,0x1111,0x1931,0x1930,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F, + 0x1196,0x11B6,0x19D6,0x1A17,0x19D6,0x1174,0x1133,0x1113,0x1932,0x1912,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2110,0x212F,0x212F,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x210F,0x212F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930,0x2930,0x290F,0x212F,0x212F,0x2930,0x212F,0x2930,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x292F,0x290F,0x2930,0x210F,0x2930,0x290F,0x290F,0x292F,0x210F,0x292F,0x210F,0x292F,0x212F,0x292F,0x292F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2130,0x2111,0x1912,0x1134,0x2239,0x09F9,0x01D9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x09D8,0x09B7,0x0975,0x0933,0x1133,0x1133,0x1132,0x1132,0x1111,0x1911,0x1932,0x1932,0x1932,0x1932,0x1911,0x1911,0x1932,0x1932,0x1911,0x1111,0x1912,0x1112,0x1111,0x1111,0x1132,0x1132,0x1112,0x1932,0x1111,0x1912,0x1111,0x1111,0x1111,0x1911,0x1111,0x1111,0x1911,0x1111,0x1111,0x1111,0x1911,0x1911,0x1111,0x1111,0x1911,0x1111,0x1111,0x1111,0x1111,0x1111,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1953,0x1133,0x1113,0x1113,0x0933,0x1154,0x19B6,0x19D7,0x19F7,0x19D6,0x1175,0x1153,0x1133,0x1132,0x1931,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2111,0x2131,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1910,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2930,0x2910,0x2910,0x2930,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2930,0x2110,0x2110,0x2910,0x290F,0x2930,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2110,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x290F,0x2930,0x292F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1911,0x1112,0x1154,0x11D7,0x1A18,0x11D7,0x1155,0x1112,0x1911,0x1911,0x2131,0x2130,0x2130,0x2930,0x290F,0x210F,0x292F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2131,0x1132,0x1133,0x19D6,0x2217,0x19D6,0x19B5,0x1153,0x1112,0x1931,0x2131,0x2131,0x2130,0x2110,0x2930,0x2110,0x2910,0x2930,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x1931,0x1911,0x1932,0x1912,0x1932,0x1132,0x1933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1953,0x1933,0x1112,0x1912,0x1112,0x1912,0x1911,0x1911,0x1931,0x1931,0x2131,0x2130,0x2130,0x212F,0x290F,0x292F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x2930,0x2930,0x290F,0x210F,0x210F,0x292F,0x2930,0x2150,0x2951,0x2131,0x2111,0x1911,0x1912,0x1953,0x1974,0x21D6,0x2217,0x21F7,0x19B6,0x1154,0x1112,0x1112,0x1911,0x1911,0x2131,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x2950,0x212F,0x212F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2131,0x1931,0x1932,0x1132,0x1174,0x19D6,0x2218,0x21D7,0x1196,0x1175,0x1954,0x1952,0x1931,0x2111,0x2110,0x2131,0x2131,0x1912,0x1113,0x11B6,0x1A18,0x1A18,0x19D6,0x08F2,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x212F,0x212F,0x2110,0x2930,0x210F,0x212F,0x290F,0x290F,0x212F,0x2930,0x2110,0x2910,0x2930,0x210F,0x2930,0x290F,0x210F,0x290F,0x210F,0x2910,0x2930,0x2930,0x2910,0x2910,0x210F,0x290F,0x2910,0x2910,0x210F,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x1931,0x1932,0x1132,0x1113,0x1995,0x2A18,0x2218,0x1996,0x08F2,0x1932,0x2152,0x2131,0x2130,0x210F,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x2130,0x2130,0x1910,0x2131,0x1931,0x1932,0x1912,0x1133,0x1154,0x19B6,0x2217,0x2238,0x19F6,0x1174,0x0933,0x1132,0x1932,0x1951,0x1930,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2151,0x2151,0x2131,0x1911,0x1911,0x1112,0x1132,0x1994,0x21D6,0x19D6,0x21F7,0x19D6,0x19B5,0x1153,0x1132,0x1912,0x2131,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2930,0x212F,0x2130,0x2110,0x290F,0x210F,0x2110,0x2110,0x210F,0x2910,0x210F,0x2110,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x210F,0x212F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x2130,0x2110,0x2131,0x1932,0x1933,0x1975,0x21F7,0x19D7,0x19D6,0x1134,0x1113,0x1933,0x1953,0x1932,0x1932,0x1931,0x1111,0x1153,0x1994,0x19B6,0x19F6,0x19D6,0x19B6,0x1154,0x1112,0x1912,0x1931,0x2151,0x2151,0x2131,0x2130,0x190F,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2930,0x2930,0x210F,0x2930,0x212F,0x212F,0x2930,0x210F,0x210F,0x2930,0x2930,0x210F,0x290F,0x210F,0x2110,0x210F,0x2930,0x212F,0x212F,0x2930,0x2130,0x2130,0x210F,0x2130,0x2930,0x2930,0x2110,0x210F,0x2130,0x2930,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x2910,0x210F,0x210F,0x2930,0x2110,0x2110,0x2930,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1911,0x1932,0x1133,0x1174,0x1195,0x21F7,0x21F7,0x21D7,0x19B6,0x1153,0x1112,0x1912,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x292F,0x290F,0x210F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x292F,0x290F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x292F,0x210F,0x212F,0x210F,0x292F,0x210F,0x212F,0x292F,0x292F,0x292F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1911,0x1911,0x1133,0x21F7,0x1A18,0x19B7,0x1995,0x1953,0x1931,0x1910,0x2110,0x2110,0x2110,0x2131,0x1932,0x1932,0x1133,0x19B6,0x2217,0x19F7,0x1995,0x1112,0x1111,0x1931,0x1930,0x2130,0x2130,0x2130,0x1930,0x1932,0x1153,0x11B6,0x1A18,0x1A18,0x19B7,0x1133,0x1111,0x1911,0x1910,0x1910,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F, + 0x0954,0x1175,0x11D6,0x19F7,0x19F7,0x19D6,0x1175,0x1133,0x1113,0x1112,0x1932,0x1931,0x2131,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x212F,0x292F,0x210F,0x212F,0x210F,0x292F,0x292F,0x212F,0x212F,0x2110,0x210F,0x212F,0x212F,0x290F,0x290F,0x212F,0x2930,0x2930,0x2110,0x210F,0x290F,0x290F,0x2930,0x290F,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x292F,0x290F,0x210F,0x290F,0x2910,0x2110,0x2110,0x2110,0x1911,0x1912,0x1133,0x1A18,0x09D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01D9,0x01D9,0x01FA,0x01D9,0x01D9,0x09D9,0x0997,0x0996,0x0975,0x0954,0x1154,0x1154,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1112,0x1133,0x1133,0x1133,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1113,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x0912,0x1133,0x1133,0x1133,0x1133,0x1133,0x0933,0x0933,0x0933,0x0933,0x1133,0x1154,0x1954,0x1154,0x0913,0x0933,0x0933,0x1175,0x19B6,0x19F7,0x19F7,0x19D6,0x1175,0x1174,0x1133,0x1132,0x1932,0x2151,0x2151,0x2131,0x2130,0x2131,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x1911,0x1931,0x1911,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1112,0x1132,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1932,0x1132,0x1132,0x1132,0x1132,0x1932,0x1931,0x1911,0x1911,0x1931,0x2131,0x2110,0x2130,0x2110,0x2930,0x2930,0x2930,0x2110,0x212F,0x212F,0x210F,0x212F,0x210F,0x290F,0x2910,0x2910,0x2110,0x210F,0x2910,0x290F,0x290F,0x2910,0x210F,0x2910,0x2110,0x2910,0x2910,0x2910,0x2110,0x2130,0x2110,0x2130,0x212F,0x212F,0x212F,0x2130,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x2910,0x290F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1911,0x1112,0x1134,0x11D6,0x1A18,0x19F7,0x1195,0x1133,0x1932,0x2131,0x2110,0x2130,0x2130,0x2110,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x2130,0x2110,0x2131,0x1932,0x1133,0x19D6,0x2217,0x19D6,0x19B5,0x1153,0x1112,0x1931,0x2131,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x292F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2111,0x1911,0x1911,0x1911,0x1912,0x1912,0x1932,0x1932,0x1932,0x1932,0x1912,0x1911,0x1911,0x1911,0x18F1,0x1911,0x1911,0x2111,0x2131,0x2151,0x2130,0x210F,0x2930,0x292F,0x290F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x2130,0x212F,0x292F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x290F,0x2930,0x2130,0x2151,0x2151,0x2131,0x1911,0x1112,0x1133,0x1995,0x21D6,0x21F7,0x21F7,0x19B5,0x1154,0x1112,0x1112,0x1911,0x2131,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1952,0x1932,0x1132,0x1153,0x19D6,0x2217,0x2218,0x1996,0x1154,0x1954,0x1953,0x2152,0x2131,0x2130,0x2130,0x2130,0x2131,0x1932,0x1113,0x11B6,0x11F7,0x1A18,0x19D6,0x08F2,0x1932,0x2131,0x2110,0x2110,0x2130,0x2130,0x2110,0x2930,0x212F,0x2930,0x210F,0x212F,0x212F,0x2930,0x290F,0x212F,0x2930,0x2910,0x2910,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x2910,0x2930,0x2930,0x210F,0x210F,0x2910,0x290F,0x290F,0x2910,0x2930,0x210F,0x212F,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2110,0x2110,0x210F,0x2110,0x2130,0x1931,0x1932,0x1932,0x1113,0x1995,0x29F7,0x21F7,0x21B6,0x08F2,0x1932,0x1952,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x1911,0x1912,0x1133,0x1174,0x19B6,0x2237,0x2237,0x19D6,0x1194,0x1153,0x1132,0x1952,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2151,0x1931,0x1911,0x1112,0x1132,0x1974,0x19B5,0x21D6,0x21F7,0x21D6,0x19B5,0x1153,0x1933,0x1932,0x1911,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x212F,0x210F,0x290F,0x292F,0x292F,0x210F,0x212F,0x212F,0x292F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x2110,0x2110,0x2131,0x1932,0x1932,0x1954,0x21F7,0x21F7,0x19D7,0x1155,0x0913,0x1113,0x1953,0x1932,0x1932,0x1952,0x1132,0x1132,0x1153,0x1995,0x19D6,0x2217,0x21F7,0x21D6,0x1133,0x1112,0x1912,0x2152,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x212F,0x2130,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2130,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2110,0x2110,0x2930,0x2110,0x2130,0x210F,0x290F,0x210F,0x212F,0x212F,0x2110,0x2130,0x2130,0x1911,0x1932,0x1133,0x1174,0x19B6,0x21F7,0x2218,0x21F7,0x19B5,0x1153,0x1112,0x1911,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x292F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2110,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x2130,0x2930,0x2130,0x2130,0x2150,0x2131,0x2131,0x1911,0x1912,0x1112,0x19D6,0x19F7,0x19B6,0x1995,0x1973,0x1931,0x1910,0x2110,0x2110,0x2110,0x1910,0x1911,0x1132,0x0933,0x19B6,0x2217,0x19F7,0x1995,0x1112,0x1911,0x1931,0x1930,0x2130,0x2130,0x1930,0x1931,0x1132,0x1133,0x11B6,0x11F8,0x19F8,0x19D7,0x1113,0x1111,0x1910,0x1910,0x190F,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F, + 0x0933,0x0933,0x1175,0x19B6,0x1A17,0x19F7,0x19D7,0x1175,0x1134,0x1112,0x1112,0x1931,0x1931,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x210F,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2910,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x2930,0x290F,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x292F,0x212F,0x210F,0x212F,0x292F,0x212F,0x292F,0x212F,0x292F,0x290F,0x290F,0x210F,0x2110,0x2130,0x2110,0x2111,0x1912,0x1154,0x2239,0x09D9,0x01D9,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01F9,0x09F9,0x09D9,0x09B8,0x0997,0x09B7,0x1197,0x11B7,0x1196,0x1196,0x1196,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1196,0x1195,0x1195,0x1195,0x1196,0x1196,0x1996,0x1196,0x1196,0x1196,0x1196,0x1196,0x1196,0x1196,0x1196,0x1196,0x11B6,0x1196,0x11B6,0x1196,0x1195,0x11B6,0x11B5,0x1195,0x1195,0x1195,0x11B5,0x11B5,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11D6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B7,0x1196,0x0954,0x1154,0x1154,0x1134,0x1133,0x0913,0x1154,0x1175,0x19B6,0x19D7,0x19F7,0x19D6,0x1995,0x1174,0x1153,0x1132,0x1911,0x1911,0x2111,0x2110,0x2110,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x212F,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x210F,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2111,0x2131,0x1932,0x1132,0x1153,0x1153,0x1174,0x1154,0x1154,0x1154,0x1154,0x0954,0x1174,0x1174,0x1174,0x1154,0x1154,0x1154,0x1174,0x1174,0x1174,0x1154,0x1174,0x1175,0x1154,0x1154,0x1154,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1194,0x1174,0x1174,0x1153,0x1153,0x1932,0x1932,0x1932,0x1931,0x2131,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2910,0x2110,0x2110,0x2910,0x2930,0x210F,0x2910,0x2930,0x2910,0x2910,0x290F,0x2910,0x2930,0x2110,0x2110,0x2130,0x210F,0x210F,0x212F,0x212F,0x2130,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x210F,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x212F,0x2930,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2150,0x2131,0x2131,0x1931,0x1112,0x1154,0x11D7,0x19F8,0x11D7,0x1195,0x1132,0x1932,0x2131,0x2131,0x2110,0x2930,0x2110,0x210F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x2130,0x2131,0x1932,0x1133,0x19D6,0x2217,0x19D6,0x19B5,0x1973,0x1111,0x1911,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2930,0x210F,0x290F,0x290F,0x2930,0x2930,0x210F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2110,0x2111,0x1911,0x1911,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x18F0,0x2111,0x2110,0x2111,0x2131,0x2130,0x2130,0x2930,0x2130,0x2930,0x212F,0x210F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x292F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2151,0x2131,0x1912,0x1112,0x1153,0x1995,0x21F7,0x21F7,0x21F7,0x19B6,0x1154,0x1112,0x1111,0x1931,0x1911,0x2131,0x2130,0x2110,0x2110,0x2130,0x210F,0x2130,0x2130,0x212F,0x210F,0x2130,0x210F,0x210F,0x2130,0x2151,0x2131,0x1911,0x1911,0x1132,0x1974,0x1995,0x2217,0x2A38,0x19D6,0x1134,0x1133,0x1953,0x1952,0x2152,0x2130,0x2130,0x2110,0x2130,0x2131,0x1912,0x1133,0x11D6,0x11F7,0x1A38,0x19F7,0x0912,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x212F,0x212F,0x210F,0x210F,0x2930,0x212F,0x2930,0x290F,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x292F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2110,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2131,0x1932,0x1932,0x1113,0x1995,0x29F7,0x21F7,0x1995,0x08F2,0x1912,0x1952,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2131,0x2131,0x2131,0x1932,0x1912,0x1132,0x1174,0x19D6,0x2217,0x2217,0x19F6,0x1174,0x1153,0x1132,0x1952,0x1931,0x2131,0x2131,0x1930,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2151,0x2131,0x1931,0x1911,0x1112,0x1133,0x1154,0x19B5,0x21F7,0x21F7,0x21F7,0x19B5,0x1174,0x1132,0x1912,0x1911,0x2131,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x2930,0x2910,0x2910,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x212F,0x212F,0x210F,0x292F,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x1911,0x1932,0x1974,0x21F7,0x21F7,0x21F7,0x1996,0x0913,0x08F2,0x1112,0x1932,0x1932,0x1973,0x1952,0x1132,0x1152,0x1153,0x1195,0x1A17,0x2238,0x21F7,0x1995,0x1133,0x1112,0x1912,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x2110,0x210F,0x2110,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2930,0x210F,0x2110,0x2110,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x210F,0x210F,0x2110,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1931,0x2131,0x2130,0x2110,0x1910,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x292F,0x2930,0x2130,0x2130,0x2130,0x1931,0x1932,0x1133,0x1154,0x19D6,0x2217,0x2217,0x21F6,0x1995,0x1153,0x1132,0x1911,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x2930,0x2930,0x290F,0x290F,0x2930,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x210F,0x290F,0x210F,0x212F,0x212F,0x292F,0x212F,0x292F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x10F1,0x1133,0x19D6,0x19F7,0x19D7,0x19B5,0x1953,0x1911,0x2130,0x2110,0x2110,0x2131,0x2111,0x1932,0x1112,0x1133,0x19D6,0x2217,0x21F7,0x1195,0x1132,0x1932,0x1931,0x1910,0x2130,0x2130,0x1930,0x1931,0x1132,0x1153,0x11D6,0x1A18,0x1A19,0x11B6,0x1112,0x1111,0x1931,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130, + 0x1112,0x1132,0x0933,0x1175,0x11B6,0x19F7,0x2218,0x19D7,0x1995,0x1133,0x1133,0x1932,0x1932,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x292F,0x292F,0x292F,0x212F,0x2930,0x2930,0x2110,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2110,0x2910,0x2110,0x2910,0x2930,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x2930,0x212F,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x210F,0x2910,0x210F,0x290F,0x290F,0x2910,0x2910,0x2110,0x212F,0x210F,0x212F,0x210F,0x212F,0x292F,0x292F,0x212F,0x212F,0x2930,0x290F,0x2930,0x2910,0x2110,0x2110,0x2110,0x2111,0x1912,0x1133,0x1A39,0x09D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01D9,0x01FA,0x09FA,0x09F9,0x09D9,0x11F9,0x11F9,0x19F9,0x19F9,0x19F9,0x1A19,0x1A18,0x19F8,0x19F8,0x2218,0x19F7,0x2218,0x2218,0x2218,0x2218,0x2218,0x1A18,0x2218,0x21F8,0x2218,0x21F8,0x2218,0x2218,0x2218,0x2239,0x1A18,0x2238,0x2238,0x1A18,0x2238,0x1A18,0x2239,0x2238,0x1A18,0x1A18,0x1A38,0x2238,0x1A18,0x2238,0x2238,0x1A18,0x1A38,0x1A18,0x1A38,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x11F8,0x11F8,0x11F8,0x1A39,0x1A18,0x1196,0x0955,0x0954,0x1154,0x1133,0x1133,0x0933,0x0934,0x1175,0x19B6,0x19F7,0x19F7,0x19D6,0x19B5,0x1154,0x1153,0x1932,0x1911,0x1911,0x2111,0x2111,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x1910,0x1910,0x2130,0x1930,0x1930,0x1930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x1930,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2131,0x2130,0x2131,0x2130,0x2131,0x2131,0x1911,0x1932,0x1953,0x1174,0x1195,0x1195,0x11B5,0x11B6,0x11B6,0x1196,0x11B6,0x11B6,0x11B6,0x11B6,0x11B7,0x11B7,0x11B7,0x11B7,0x11B7,0x11B7,0x11D7,0x11D7,0x11B7,0x11B7,0x11D7,0x11B7,0x11B6,0x11B6,0x11B6,0x11B6,0x11B7,0x11D7,0x11B7,0x11B7,0x11B6,0x11B6,0x11B6,0x11B6,0x11D6,0x11B6,0x11B6,0x1195,0x1195,0x1174,0x1153,0x1153,0x1932,0x1932,0x1931,0x2131,0x2110,0x2110,0x2130,0x2130,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x210F,0x2110,0x2110,0x2910,0x210F,0x2910,0x2930,0x2910,0x2910,0x2910,0x290F,0x210F,0x2910,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x210F,0x290F,0x212F,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2150,0x2151,0x2131,0x1911,0x1112,0x0933,0x11D7,0x19F8,0x11F7,0x1195,0x1133,0x1932,0x2131,0x2131,0x2130,0x2110,0x210F,0x2130,0x210F,0x210F,0x292F,0x290F,0x210F,0x210F,0x2110,0x2131,0x1932,0x1133,0x19D6,0x21F7,0x19D6,0x19B5,0x1153,0x1111,0x1911,0x2131,0x2130,0x2930,0x2110,0x2110,0x2910,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x2130,0x210F,0x210F,0x2130,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x2930,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x210F,0x2130,0x2130,0x210F,0x212F,0x212F,0x290F,0x290F,0x292F,0x292F,0x2930,0x212F,0x2930,0x2130,0x2930,0x2130,0x2130,0x2130,0x2110,0x2131,0x1910,0x1910,0x2110,0x1910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x292F,0x212F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2151,0x2131,0x1911,0x1112,0x1133,0x1995,0x21F7,0x21F7,0x2217,0x19D6,0x1154,0x1132,0x1111,0x1931,0x1911,0x1910,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x1931,0x1111,0x1132,0x1153,0x1995,0x2A17,0x2A38,0x21F7,0x1995,0x1134,0x1133,0x1932,0x1931,0x2151,0x2130,0x2130,0x2110,0x2130,0x2131,0x1932,0x1112,0x11B6,0x11F7,0x1A18,0x19F7,0x08F2,0x1932,0x2132,0x2131,0x2110,0x2130,0x2110,0x2930,0x212F,0x212F,0x290F,0x290F,0x212F,0x2930,0x2930,0x210F,0x210F,0x2930,0x2910,0x2910,0x210F,0x210F,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x292F,0x210F,0x290F,0x290F,0x2930,0x290F,0x2110,0x210F,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x2930,0x210F,0x2930,0x2130,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x1931,0x1932,0x1112,0x1112,0x1995,0x21F7,0x21D7,0x21B6,0x10F2,0x1912,0x2152,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x1931,0x1112,0x1133,0x1174,0x19D6,0x2217,0x2217,0x21F6,0x1174,0x1153,0x1952,0x1931,0x1931,0x1931,0x2151,0x1930,0x2130,0x2130,0x212F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1132,0x1133,0x1174,0x19B6,0x21F7,0x2217,0x19D6,0x19B6,0x1154,0x1133,0x1912,0x1911,0x2131,0x2131,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x292F,0x210F,0x212F,0x212F,0x292F,0x212F,0x210F,0x292F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x1911,0x1912,0x1953,0x21D6,0x21F7,0x21F7,0x19B6,0x1175,0x1133,0x0912,0x1933,0x1932,0x1952,0x1952,0x1131,0x1132,0x1153,0x1174,0x11D6,0x2238,0x21F7,0x21D6,0x1995,0x1133,0x1132,0x1912,0x1931,0x2131,0x2151,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x2110,0x210F,0x210F,0x210F,0x290F,0x2930,0x2110,0x2110,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x290F,0x290F,0x292F,0x212F,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1931,0x1932,0x1932,0x1931,0x1932,0x1911,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2130,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930,0x210F,0x2130,0x2131,0x2151,0x2152,0x1132,0x1153,0x1174,0x19D6,0x21F7,0x21F7,0x21F6,0x19B5,0x1153,0x1132,0x1912,0x1911,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x210F,0x212F,0x212F,0x210F,0x292F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x292F,0x212F,0x210F,0x212F,0x292F,0x212F,0x212F,0x292F,0x210F,0x292F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1932,0x1133,0x19D6,0x19F7,0x19D7,0x19B5,0x1952,0x1931,0x2110,0x2110,0x2110,0x2110,0x2131,0x1911,0x1132,0x0933,0x19D6,0x2217,0x19F7,0x1995,0x1132,0x1911,0x1931,0x1930,0x2130,0x212F,0x2130,0x1931,0x1932,0x1133,0x11B6,0x1A18,0x1A18,0x19B7,0x1133,0x1911,0x1911,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F, + 0x1111,0x1111,0x0912,0x0933,0x0954,0x19B6,0x19F7,0x21F8,0x19D7,0x1195,0x1154,0x1113,0x1932,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x292F,0x212F,0x210F,0x292F,0x210F,0x292F,0x2930,0x2930,0x2930,0x292F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x212F,0x2930,0x210F,0x2130,0x212F,0x2930,0x2930,0x212F,0x212F,0x2930,0x2110,0x2930,0x290F,0x2110,0x2930,0x2930,0x290F,0x2910,0x2910,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x290F,0x210F,0x2910,0x2910,0x2930,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x210F,0x292F,0x212F,0x212F,0x2930,0x210F,0x290F,0x2910,0x2110,0x2110,0x2110,0x1911,0x1912,0x1154,0x2239,0x11F9,0x09DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FB,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x09FA,0x09FA,0x09D9,0x11F9,0x1A19,0x1A19,0x1A19,0x1A19,0x19F8,0x19F8,0x19D7,0x19F8,0x19D7,0x19B7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x21D8,0x19B7,0x21F8,0x19D8,0x19D7,0x19D7,0x19D7,0x19D7,0x19F7,0x19F7,0x19F7,0x19D7,0x19F7,0x19F7,0x19F7,0x19F7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x19F8,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x11D7,0x11D7,0x11D7,0x19F7,0x19F8,0x11D7,0x11D7,0x19F8,0x19F8,0x11B6,0x1195,0x0954,0x0933,0x1133,0x0913,0x1133,0x1154,0x1175,0x11B6,0x19F7,0x19F7,0x19D6,0x19B5,0x1174,0x1153,0x1132,0x1932,0x1911,0x1911,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x2131,0x2131,0x2131,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x1931,0x2151,0x2151,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x1911,0x1911,0x1911,0x1911,0x1931,0x1932,0x1953,0x1174,0x11B5,0x11D6,0x11D7,0x11D7,0x09D7,0x09D7,0x09D8,0x09D8,0x09D8,0x09F8,0x09F8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x11F8,0x11F8,0x11F8,0x09F8,0x1218,0x11F8,0x11F8,0x11D7,0x11D7,0x11B6,0x1195,0x1174,0x1174,0x1153,0x1932,0x1911,0x1911,0x2110,0x2110,0x2130,0x2930,0x2930,0x290F,0x2930,0x212F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2910,0x2110,0x2930,0x2910,0x2110,0x2110,0x210F,0x290F,0x2910,0x2910,0x2110,0x210F,0x2910,0x290F,0x292F,0x210F,0x292F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2110,0x210F,0x290F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2110,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x212F,0x2130,0x2131,0x2131,0x1931,0x1112,0x1133,0x19F7,0x1A18,0x1A18,0x1195,0x1133,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2110,0x2110,0x1931,0x1932,0x1133,0x21F6,0x2217,0x19D6,0x19B5,0x1153,0x1111,0x1911,0x2131,0x2110,0x2110,0x2110,0x210F,0x2930,0x292F,0x290F,0x210F,0x290F,0x210F,0x2150,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2930,0x290F,0x2930,0x2930,0x292F,0x292F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x292F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2150,0x2151,0x2131,0x1910,0x1111,0x1112,0x1134,0x1996,0x21D7,0x21F7,0x21F7,0x19B6,0x1154,0x1132,0x1111,0x1931,0x1930,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2110,0x2130,0x2130,0x2110,0x1911,0x1931,0x1932,0x1132,0x1153,0x1974,0x2A17,0x21F7,0x19B6,0x19B6,0x1974,0x1133,0x1932,0x1911,0x1911,0x2151,0x2130,0x2110,0x2110,0x2130,0x2131,0x1931,0x1133,0x11B6,0x11F8,0x1A19,0x19D7,0x08F2,0x1932,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x290F,0x210F,0x2930,0x2110,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1911,0x1931,0x1932,0x1112,0x21B5,0x29F7,0x21D7,0x1995,0x1112,0x1112,0x1931,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2151,0x2151,0x1931,0x1111,0x1133,0x1174,0x19D6,0x19F6,0x2217,0x21F6,0x1174,0x1153,0x1953,0x1932,0x1931,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2151,0x1931,0x1111,0x1132,0x1133,0x1174,0x19D6,0x21F7,0x2217,0x21F7,0x19B5,0x1153,0x1132,0x1911,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2930,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x2110,0x210F,0x2910,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x292F,0x290F,0x2930,0x2930,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x2130,0x2111,0x1911,0x1932,0x1974,0x21F6,0x21F7,0x19D6,0x19B6,0x1175,0x08F2,0x1112,0x1132,0x1973,0x1952,0x1111,0x1132,0x1132,0x1153,0x1194,0x19D6,0x19F7,0x21F7,0x21F7,0x1995,0x1133,0x1112,0x1912,0x2132,0x2131,0x2131,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2110,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x292F,0x212F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x290F,0x210F,0x2130,0x210F,0x2130,0x212F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x210F,0x210F,0x290F,0x2930,0x20EF,0x290F,0x290F,0x290F,0x2930,0x2930,0x2130,0x2130,0x2130,0x1930,0x1910,0x1911,0x1931,0x1932,0x1953,0x1953,0x1153,0x1132,0x1932,0x1932,0x1931,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x210F,0x290F,0x290F,0x2930,0x2130,0x2130,0x2151,0x2152,0x2152,0x1132,0x1133,0x1154,0x19B5,0x21F6,0x2217,0x19D6,0x19B5,0x1153,0x1132,0x1932,0x1911,0x2111,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2930,0x292F,0x290F,0x210F,0x290F,0x292F,0x210F,0x210F,0x290F,0x292F,0x212F,0x292F,0x210F,0x290F,0x290F,0x2930,0x2930,0x212F,0x210F,0x290F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x292F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1930,0x1931,0x1932,0x1132,0x1154,0x19D6,0x19D7,0x21F7,0x19B5,0x1932,0x1911,0x1910,0x2110,0x2110,0x2130,0x2131,0x1912,0x1133,0x1154,0x19D6,0x19F7,0x19F6,0x1994,0x1132,0x1931,0x1910,0x2110,0x2130,0x2130,0x2130,0x1931,0x1932,0x1154,0x11D7,0x1A18,0x1A18,0x19B7,0x1133,0x1911,0x2111,0x2110,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F, + 0x1931,0x1911,0x1111,0x1112,0x0912,0x0954,0x1196,0x19D7,0x2218,0x21F7,0x1996,0x1134,0x1133,0x1932,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x210F,0x2130,0x2930,0x212F,0x212F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2110,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x210F,0x2110,0x2130,0x2930,0x210F,0x2110,0x2910,0x2910,0x2110,0x2110,0x290F,0x210F,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x290F,0x210F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x2910,0x2930,0x290F,0x290F,0x290F,0x2910,0x2110,0x2130,0x2110,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x290F,0x2910,0x2930,0x2110,0x2110,0x1911,0x1911,0x1134,0x2219,0x09D9,0x09D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x09FA,0x09D9,0x0997,0x1197,0x1197,0x11B7,0x1197,0x1996,0x1996,0x1196,0x1195,0x1195,0x1175,0x19B5,0x1195,0x1195,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1996,0x1996,0x1976,0x1976,0x1996,0x1996,0x1996,0x1996,0x1195,0x1195,0x1195,0x1995,0x1195,0x1195,0x1195,0x1195,0x1195,0x19B5,0x1995,0x19B6,0x1195,0x1995,0x1196,0x1196,0x11B6,0x11B6,0x1196,0x1195,0x11B6,0x11B6,0x1196,0x11B6,0x11B6,0x11B6,0x11B6,0x19F7,0x1A18,0x1A18,0x11B6,0x1175,0x0954,0x1154,0x1133,0x1133,0x1133,0x1154,0x1175,0x11B6,0x19F7,0x19F7,0x19D6,0x1195,0x1154,0x1153,0x1133,0x1112,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1932,0x1932,0x1952,0x1931,0x1932,0x1931,0x1932,0x1932,0x1932,0x2132,0x1932,0x2132,0x2132,0x1932,0x1952,0x1952,0x1931,0x1931,0x1932,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1952,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x18F1,0x1911,0x1911,0x1911,0x1911,0x1911,0x1112,0x1112,0x1133,0x0954,0x0996,0x09B7,0x09D8,0x09F8,0x09D8,0x09D8,0x09F8,0x09F9,0x09F9,0x01D9,0x01D9,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01D9,0x01D9,0x09D9,0x09D9,0x01D8,0x09D9,0x01D8,0x09D9,0x01D8,0x09D9,0x09D9,0x09D9,0x09D9,0x01D9,0x09F9,0x09F9,0x09D9,0x09F9,0x09F8,0x09F9,0x09F8,0x11F8,0x11D8,0x11D7,0x11B6,0x1195,0x1174,0x1953,0x1932,0x1931,0x1911,0x2130,0x2110,0x2130,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x290F,0x2910,0x2910,0x2110,0x2930,0x2910,0x2910,0x290F,0x292F,0x290F,0x292F,0x210F,0x210F,0x2910,0x210F,0x2930,0x2910,0x2930,0x2930,0x210F,0x212F,0x290F,0x2930,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1112,0x1133,0x19D6,0x1A18,0x1A18,0x1195,0x1132,0x1931,0x1931,0x2130,0x2130,0x2130,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x2130,0x2131,0x1931,0x1132,0x1133,0x19D6,0x2217,0x19D6,0x19B5,0x1153,0x1112,0x1931,0x2131,0x2110,0x2110,0x2110,0x2930,0x292F,0x292F,0x292F,0x292F,0x290F,0x2110,0x2150,0x2130,0x2130,0x2110,0x210F,0x2130,0x210F,0x290F,0x210F,0x210F,0x2130,0x2130,0x210F,0x2930,0x2930,0x2930,0x290F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x212F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x20EF,0x210F,0x210F,0x290F,0x2110,0x2910,0x2130,0x2110,0x2110,0x210F,0x2930,0x2930,0x2910,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x212F,0x210F,0x292F,0x292F,0x292F,0x292F,0x212F,0x210F,0x2930,0x290F,0x292F,0x290F,0x290F,0x292F,0x2930,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2151,0x2131,0x1931,0x1111,0x1112,0x1134,0x1995,0x21F7,0x2218,0x21F7,0x19B6,0x1154,0x1112,0x1111,0x1911,0x1930,0x1930,0x2130,0x2130,0x2130,0x210F,0x212F,0x2930,0x210F,0x212F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2131,0x2131,0x1932,0x1932,0x1112,0x1153,0x1174,0x2A17,0x2A17,0x21D7,0x1975,0x1133,0x1133,0x1953,0x1932,0x1911,0x1910,0x2130,0x2130,0x2110,0x2130,0x2130,0x2151,0x1931,0x1133,0x11B6,0x11F8,0x1A18,0x19D7,0x08F2,0x1912,0x2131,0x2110,0x2110,0x2930,0x2110,0x2110,0x212F,0x212F,0x290F,0x210F,0x212F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x290F,0x2910,0x2910,0x290F,0x2930,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x212F,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x2110,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1112,0x1995,0x21F7,0x21F7,0x1995,0x1112,0x1112,0x1931,0x2131,0x2131,0x2110,0x2110,0x2130,0x210F,0x2930,0x210F,0x2130,0x210F,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2130,0x2151,0x1931,0x1931,0x1132,0x1133,0x1995,0x19B6,0x21F7,0x2237,0x19D6,0x1174,0x1154,0x1133,0x1932,0x1931,0x2131,0x2111,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x212F,0x2130,0x2130,0x2950,0x2130,0x2130,0x1931,0x1131,0x1132,0x1133,0x1154,0x19D6,0x2217,0x19F7,0x19F6,0x19B5,0x1133,0x1932,0x1932,0x2131,0x2131,0x2130,0x2110,0x2130,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x2110,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x290F,0x2910,0x290F,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2110,0x1911,0x1912,0x1953,0x1995,0x21D7,0x19D7,0x19D7,0x19B5,0x1154,0x1113,0x1112,0x1932,0x1952,0x1952,0x1932,0x1952,0x1153,0x1133,0x1154,0x19D6,0x21F7,0x21F7,0x21D7,0x1975,0x1133,0x1112,0x1912,0x2132,0x2131,0x2111,0x2110,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2130,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x2110,0x2110,0x2110,0x2930,0x210F,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x2110,0x2130,0x2110,0x1910,0x1931,0x1911,0x1111,0x1132,0x1153,0x1974,0x19B5,0x19D6,0x19D6,0x1995,0x1154,0x1133,0x1132,0x1932,0x1911,0x1911,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2130,0x2130,0x2131,0x2152,0x1932,0x1112,0x1133,0x1174,0x21F6,0x21F7,0x2237,0x19D6,0x1194,0x1154,0x1953,0x1932,0x1931,0x1911,0x2131,0x2931,0x2951,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x212F,0x210F,0x2930,0x2930,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x2930,0x212F,0x210F,0x212F,0x2130,0x2131,0x1931,0x1931,0x1132,0x1153,0x1175,0x19D6,0x19D7,0x21F7,0x19B5,0x1932,0x1911,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1133,0x1154,0x19D6,0x21F7,0x19D6,0x1994,0x1932,0x1931,0x2130,0x2110,0x2130,0x2130,0x2130,0x1931,0x1932,0x1154,0x11D7,0x1A18,0x1A18,0x19D7,0x1133,0x1911,0x2111,0x2110,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F, + 0x2131,0x1931,0x1951,0x1131,0x1111,0x1132,0x0954,0x19B6,0x2217,0x2218,0x21F7,0x19B6,0x0913,0x1133,0x1912,0x1932,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x290F,0x290F,0x290F,0x2110,0x2930,0x2130,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x2930,0x2110,0x210F,0x2930,0x290F,0x2110,0x210F,0x2930,0x2930,0x2110,0x210F,0x210F,0x2110,0x2910,0x210F,0x2910,0x2910,0x2110,0x2910,0x290F,0x210F,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2110,0x2110,0x290F,0x290F,0x290F,0x2930,0x212F,0x212F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x210F,0x290F,0x290F,0x2910,0x2910,0x2130,0x2130,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2930,0x2110,0x2110,0x2111,0x1912,0x1133,0x2219,0x11F9,0x09D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x09D9,0x0997,0x0976,0x0934,0x1154,0x1154,0x1954,0x1954,0x1933,0x1953,0x1953,0x1153,0x1973,0x1953,0x1973,0x1973,0x1973,0x1153,0x1953,0x1953,0x1953,0x1933,0x1933,0x1133,0x1933,0x1953,0x1933,0x1133,0x1953,0x1153,0x1153,0x1153,0x1953,0x1953,0x1953,0x1153,0x1153,0x1133,0x1153,0x1153,0x1153,0x1133,0x1153,0x1153,0x1153,0x1153,0x1153,0x1973,0x1153,0x1153,0x1153,0x1153,0x1974,0x1974,0x1174,0x1174,0x1174,0x1195,0x2258,0x1A38,0x11B6,0x1196,0x1175,0x1154,0x1174,0x1133,0x0933,0x1133,0x1154,0x1175,0x11B5,0x19F7,0x19F7,0x19D6,0x1175,0x1155,0x1154,0x1133,0x1113,0x1112,0x1112,0x1111,0x1111,0x1111,0x10F1,0x1112,0x1112,0x1112,0x1133,0x1132,0x1112,0x1112,0x1932,0x1932,0x1112,0x1932,0x1912,0x1912,0x1912,0x1912,0x1112,0x1112,0x1112,0x1112,0x1112,0x1932,0x1132,0x1112,0x1112,0x1112,0x1932,0x1132,0x1932,0x1132,0x1932,0x1932,0x1111,0x1932,0x1932,0x1912,0x1932,0x1932,0x1112,0x1912,0x1112,0x1112,0x1132,0x1132,0x1112,0x1112,0x1112,0x1112,0x1111,0x1112,0x1912,0x1112,0x10F2,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1113,0x1133,0x1154,0x0975,0x0996,0x09D8,0x09D8,0x09F9,0x09F9,0x01D9,0x01F9,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x01F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x09F9,0x09D8,0x09D8,0x09D7,0x11B6,0x1195,0x1154,0x1153,0x1932,0x1931,0x1911,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x210F,0x2930,0x2130,0x2130,0x2130,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2910,0x2930,0x290F,0x210F,0x210F,0x210F,0x290F,0x2910,0x290F,0x210F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x290F,0x212F,0x210F,0x2110,0x2910,0x2110,0x2910,0x210F,0x210F,0x290F,0x210F,0x290F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x1911,0x1111,0x1133,0x19B6,0x1A18,0x19F8,0x11B6,0x1133,0x1931,0x1931,0x2110,0x2130,0x2130,0x210F,0x210F,0x292F,0x210F,0x292F,0x212F,0x2130,0x2130,0x1931,0x1952,0x1133,0x1133,0x19F6,0x2217,0x19D6,0x19B5,0x1153,0x1112,0x1911,0x2131,0x2930,0x2930,0x2930,0x210F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x2930,0x212F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x2910,0x2930,0x2130,0x2130,0x210F,0x210F,0x2130,0x2930,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x2150,0x2131,0x1951,0x1932,0x1112,0x1154,0x1175,0x19D7,0x21F8,0x21F7,0x21D6,0x1154,0x1112,0x1111,0x1911,0x1930,0x1930,0x2130,0x2110,0x2110,0x2130,0x212F,0x210F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2111,0x2131,0x2132,0x1932,0x1113,0x1154,0x1175,0x21D7,0x2A38,0x21F7,0x1174,0x1133,0x0912,0x1132,0x2172,0x2131,0x1910,0x2110,0x2130,0x2130,0x20EF,0x210F,0x2110,0x2130,0x1911,0x1132,0x11B6,0x19F8,0x1A18,0x19D7,0x10F2,0x1912,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x2910,0x2910,0x212F,0x212F,0x2930,0x2930,0x210F,0x210F,0x2110,0x2110,0x2910,0x2910,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2110,0x210F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x1931,0x1931,0x1932,0x1112,0x21B5,0x21F7,0x21F7,0x19B6,0x1113,0x1932,0x1931,0x2131,0x2130,0x2110,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x2130,0x2110,0x2930,0x2930,0x2110,0x210F,0x210F,0x2130,0x2130,0x2151,0x2151,0x1931,0x1132,0x1133,0x1174,0x19B6,0x2217,0x2217,0x1195,0x1175,0x1154,0x1933,0x1932,0x1911,0x1911,0x2131,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x1951,0x1931,0x1111,0x1132,0x1174,0x19D5,0x19D6,0x2217,0x19D6,0x1995,0x1133,0x1112,0x2132,0x2131,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2930,0x210F,0x290F,0x210F,0x2910,0x2930,0x2930,0x2110,0x2110,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1954,0x1995,0x19B6,0x21D7,0x19D6,0x19B5,0x1133,0x1112,0x1112,0x1932,0x1952,0x1952,0x1952,0x1152,0x1112,0x0932,0x1174,0x19B6,0x2218,0x2218,0x19B6,0x1195,0x1133,0x1112,0x1932,0x1911,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x2930,0x210F,0x2930,0x290F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x290F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2110,0x210F,0x2910,0x210F,0x2110,0x2930,0x210F,0x2110,0x2110,0x210F,0x210F,0x212F,0x210F,0x2930,0x2130,0x2130,0x2110,0x2110,0x2910,0x2110,0x2930,0x2930,0x210F,0x290F,0x290F,0x2910,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x2130,0x2110,0x2130,0x2131,0x1931,0x1931,0x1952,0x1153,0x1174,0x19B5,0x19D6,0x19F7,0x1A18,0x1A18,0x1A18,0x1A18,0x11B6,0x1154,0x1133,0x1932,0x1931,0x1911,0x2130,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x2130,0x2130,0x212F,0x2130,0x210F,0x2110,0x2130,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2110,0x2110,0x2151,0x2152,0x1911,0x1112,0x1153,0x1174,0x21F7,0x2217,0x19D6,0x19D6,0x1174,0x1153,0x1953,0x1912,0x1911,0x2111,0x2111,0x2131,0x2110,0x2110,0x2130,0x2130,0x2950,0x2110,0x2110,0x2130,0x212F,0x210F,0x292F,0x212F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x2930,0x210F,0x210F,0x2130,0x2130,0x1910,0x1911,0x1932,0x1153,0x1174,0x19D6,0x19D7,0x19D7,0x19D6,0x1994,0x1932,0x1931,0x2131,0x2131,0x2130,0x2131,0x1931,0x1112,0x1133,0x1174,0x19D6,0x19F7,0x19D6,0x1974,0x1932,0x1931,0x2110,0x2110,0x2130,0x2110,0x2130,0x2131,0x1932,0x1134,0x11B7,0x1A18,0x1A19,0x19B7,0x1133,0x1932,0x2131,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F, + 0x2130,0x2151,0x1931,0x1931,0x1111,0x1111,0x0932,0x1154,0x19B6,0x2217,0x2218,0x19D7,0x19B6,0x1134,0x1113,0x1932,0x2132,0x2131,0x2131,0x2110,0x2130,0x2150,0x2130,0x212F,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x212F,0x212F,0x2930,0x212F,0x2930,0x210F,0x2130,0x2110,0x2110,0x2110,0x290F,0x2930,0x210F,0x2130,0x2130,0x212F,0x212F,0x2930,0x2910,0x210F,0x2910,0x2910,0x210F,0x2910,0x2910,0x210F,0x2910,0x2910,0x210F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2110,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2111,0x18F2,0x1133,0x2219,0x11D9,0x09D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x021B,0x01FA,0x01DA,0x01D9,0x01F9,0x09D8,0x0997,0x0955,0x1133,0x1113,0x1912,0x1912,0x1912,0x1912,0x1911,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1911,0x1912,0x1912,0x1912,0x1912,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1931,0x1932,0x1931,0x1931,0x1931,0x1931,0x1932,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x0932,0x0933,0x0995,0x1A38,0x19F7,0x11B6,0x1195,0x1195,0x1154,0x1133,0x1133,0x0913,0x1133,0x1134,0x1175,0x19B6,0x19F7,0x19F7,0x11B6,0x1196,0x0955,0x1155,0x1134,0x1133,0x1113,0x1133,0x1112,0x1112,0x1112,0x1113,0x0913,0x1133,0x0913,0x1133,0x1133,0x1133,0x1132,0x1133,0x1133,0x1133,0x1133,0x1113,0x1113,0x1113,0x1112,0x1112,0x1112,0x1113,0x1113,0x1133,0x1132,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1133,0x1132,0x1132,0x1133,0x1133,0x1133,0x1133,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1113,0x1133,0x1133,0x1133,0x1153,0x1153,0x1153,0x1154,0x1154,0x1175,0x1175,0x0996,0x09B7,0x09B8,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01D9,0x01DA,0x01DA,0x01DA,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01DA,0x01FA,0x01FA,0x01D9,0x01D9,0x01FA,0x01DA,0x01FA,0x01D9,0x01F9,0x01F9,0x01D9,0x01F9,0x09F9,0x09D8,0x09D7,0x11B7,0x1195,0x1174,0x1153,0x1132,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x210F,0x210F,0x2130,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x290F,0x290F,0x290F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2131,0x1911,0x1111,0x1133,0x11B6,0x1A18,0x19F7,0x19B6,0x1133,0x1931,0x2131,0x2110,0x2110,0x2130,0x212F,0x210F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1952,0x1133,0x0933,0x19D6,0x2217,0x19D6,0x19B5,0x1153,0x1112,0x1911,0x2131,0x2930,0x2110,0x210F,0x210F,0x290F,0x292F,0x292F,0x290F,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2930,0x2110,0x2130,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x210F,0x2110,0x2110,0x2910,0x210F,0x2910,0x2910,0x2910,0x2930,0x2930,0x212F,0x212F,0x2930,0x210F,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x2130,0x210F,0x212F,0x2930,0x2110,0x2910,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2151,0x1111,0x1132,0x1154,0x1995,0x21F7,0x2218,0x21F8,0x19B6,0x1154,0x1112,0x1912,0x1911,0x2131,0x1910,0x2130,0x212F,0x2130,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2131,0x2132,0x1912,0x1113,0x1134,0x1996,0x21D7,0x2218,0x21F7,0x1175,0x1154,0x1133,0x1132,0x1111,0x1931,0x1910,0x2110,0x2110,0x2930,0x2130,0x2110,0x2110,0x2130,0x2130,0x1931,0x1132,0x11B6,0x19F8,0x1A19,0x19D7,0x10F2,0x1911,0x2111,0x2130,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x2910,0x2930,0x210F,0x2930,0x2910,0x2910,0x2910,0x2110,0x210F,0x2110,0x2910,0x2910,0x2930,0x210F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x212F,0x292F,0x210F,0x212F,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x2110,0x2130,0x2130,0x1931,0x1931,0x1932,0x1112,0x21B5,0x2A17,0x21F7,0x19B6,0x1113,0x1932,0x2132,0x2131,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x2930,0x2110,0x2130,0x2130,0x210F,0x212F,0x292F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1931,0x1132,0x1133,0x1174,0x19B6,0x21F7,0x2218,0x19B6,0x1975,0x1954,0x1112,0x1912,0x2131,0x2131,0x2110,0x2110,0x2130,0x2930,0x210F,0x212F,0x212F,0x210F,0x2930,0x2950,0x210F,0x2130,0x2151,0x1931,0x1111,0x1111,0x1132,0x1194,0x11B5,0x19D6,0x2217,0x19D6,0x1995,0x1133,0x1932,0x2111,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2930,0x2930,0x2110,0x210F,0x290F,0x2910,0x2910,0x2910,0x2930,0x2930,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2110,0x2130,0x1931,0x1932,0x1153,0x1975,0x1175,0x19D7,0x21D7,0x19B6,0x1995,0x1153,0x1132,0x1932,0x1932,0x1952,0x1952,0x1131,0x1131,0x1132,0x0933,0x1195,0x11B6,0x19F7,0x1A17,0x19D6,0x1995,0x1133,0x1132,0x1912,0x2131,0x2111,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2930,0x290F,0x290F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2110,0x210F,0x2910,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x292F,0x210F,0x210F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1953,0x1994,0x1195,0x1A17,0x1A17,0x2238,0x1A38,0x11F8,0x1A39,0x1A59,0x1A39,0x1A18,0x19D7,0x1155,0x1133,0x1932,0x1931,0x2131,0x2151,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2930,0x2110,0x2930,0x2930,0x2110,0x2930,0x2130,0x2130,0x210F,0x2130,0x2110,0x2130,0x2130,0x1931,0x1932,0x1112,0x1153,0x1174,0x19B6,0x21F7,0x19F7,0x19D6,0x1995,0x1154,0x1133,0x1112,0x1912,0x2111,0x2111,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2930,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x210F,0x2130,0x2130,0x2151,0x1911,0x1911,0x1153,0x1154,0x1995,0x19D7,0x21F7,0x21F7,0x1995,0x1974,0x1932,0x1931,0x2131,0x2131,0x2131,0x2131,0x1932,0x1112,0x1133,0x1195,0x19D6,0x21F7,0x21D6,0x1974,0x1952,0x2131,0x2130,0x2110,0x2110,0x2130,0x2131,0x1931,0x1933,0x1134,0x19B7,0x1A18,0x1A18,0x19D7,0x1133,0x1912,0x2111,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F, + 0x210F,0x210F,0x2130,0x2131,0x1931,0x1131,0x1132,0x1133,0x1995,0x19B6,0x21F7,0x2218,0x19F7,0x1995,0x1134,0x1113,0x1932,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x2910,0x2110,0x2110,0x210F,0x2930,0x2930,0x2110,0x2930,0x212F,0x2930,0x212F,0x212F,0x2930,0x212F,0x2930,0x290F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x2910,0x210F,0x2910,0x2910,0x2930,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2110,0x2110,0x2110,0x18F1,0x10F1,0x1134,0x2219,0x09D9,0x01B9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01FA,0x021A,0x021A,0x01FA,0x01FA,0x01F9,0x01F9,0x09B8,0x0976,0x1154,0x1113,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1910,0x1910,0x1910,0x1910,0x1910,0x1930,0x1910,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x2131,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1911,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1911,0x1911,0x1931,0x1911,0x1931,0x1932,0x1932,0x1932,0x1931,0x1932,0x1132,0x1112,0x0933,0x0954,0x19F7,0x2238,0x2238,0x11B6,0x1175,0x1174,0x1133,0x1133,0x0913,0x0933,0x1154,0x1195,0x19D7,0x19F8,0x1A18,0x19F7,0x11D7,0x19D7,0x19B6,0x19B5,0x19B6,0x19B5,0x21D6,0x21D6,0x19B6,0x19B6,0x19B5,0x19B6,0x19B6,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x21B5,0x21B5,0x21B5,0x21B5,0x21B5,0x21B5,0x21B5,0x2195,0x2195,0x2195,0x2195,0x1995,0x21B5,0x21B5,0x21B5,0x2195,0x19B5,0x19B5,0x21B5,0x19B5,0x21B5,0x21B5,0x21B4,0x1994,0x1994,0x1994,0x19B5,0x19B5,0x19B5,0x1995,0x19B5,0x1995,0x19B5,0x19B5,0x21B5,0x19B5,0x21B5,0x19B5,0x1995,0x21B5,0x21B5,0x2195,0x21B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B6,0x1996,0x19B6,0x19B6,0x11B6,0x09B7,0x09B8,0x09F9,0x01D9,0x01D9,0x01FA,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01F9,0x01D9,0x09F9,0x09D8,0x09B7,0x0996,0x0954,0x1153,0x1932,0x1931,0x2131,0x2131,0x2131,0x2110,0x2110,0x2130,0x2110,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2110,0x210F,0x2130,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x2930,0x212F,0x2930,0x2910,0x210F,0x2110,0x2910,0x210F,0x290F,0x290F,0x2930,0x2910,0x2930,0x2130,0x2110,0x2130,0x2130,0x1931,0x1932,0x1133,0x11B6,0x1A18,0x19F7,0x1195,0x1132,0x1931,0x1931,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x2110,0x1910,0x1932,0x1132,0x1113,0x0933,0x19D6,0x21F7,0x19D6,0x19B5,0x1174,0x1132,0x1932,0x2131,0x2130,0x2930,0x290F,0x292F,0x210F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x292F,0x292F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x290F,0x2910,0x210F,0x210F,0x2110,0x2930,0x210F,0x2930,0x2910,0x2910,0x2910,0x2110,0x210F,0x212F,0x210F,0x212F,0x210F,0x2930,0x2930,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2110,0x210F,0x2930,0x2110,0x2930,0x290F,0x2110,0x2930,0x2930,0x2130,0x212F,0x2130,0x2130,0x2151,0x1910,0x10F1,0x1132,0x1153,0x19B6,0x19F7,0x2218,0x21F7,0x19B6,0x1154,0x1112,0x1112,0x1911,0x1910,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2951,0x2131,0x1911,0x1912,0x1133,0x1133,0x1175,0x21D7,0x2A38,0x21F7,0x1975,0x1134,0x1133,0x1132,0x1952,0x2152,0x1910,0x1910,0x2130,0x2130,0x2930,0x2110,0x2130,0x2110,0x2110,0x2131,0x1932,0x1133,0x11B6,0x1A18,0x1A19,0x19D7,0x08F2,0x1911,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x212F,0x2930,0x290F,0x290F,0x2930,0x210F,0x2910,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x292F,0x212F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1911,0x1912,0x1132,0x21B5,0x21F7,0x21F7,0x1995,0x1113,0x1112,0x2132,0x2131,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1953,0x1153,0x1154,0x19B6,0x2218,0x2218,0x1996,0x1975,0x1954,0x1912,0x18F1,0x1911,0x1911,0x2110,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x2930,0x2950,0x18EF,0x190F,0x2151,0x2171,0x1911,0x1931,0x1132,0x1132,0x1153,0x1995,0x2217,0x2217,0x19D6,0x1174,0x1112,0x1932,0x2131,0x2111,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2930,0x210F,0x292F,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2910,0x290F,0x2930,0x2910,0x290F,0x290F,0x290F,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x1134,0x1996,0x21D7,0x21D7,0x19B6,0x1975,0x1974,0x1132,0x10F1,0x1932,0x1952,0x1951,0x1931,0x1152,0x1132,0x0933,0x1174,0x19B6,0x1A17,0x2218,0x21F7,0x1995,0x1133,0x1112,0x18F1,0x2131,0x2111,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x210F,0x2930,0x210F,0x290F,0x2930,0x2930,0x290F,0x2930,0x210F,0x2110,0x2110,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1930,0x1931,0x1132,0x1153,0x1174,0x11D6,0x1A17,0x2238,0x1A18,0x11D7,0x09B7,0x0996,0x09B7,0x11F8,0x1A39,0x1A18,0x11B6,0x1154,0x1112,0x1931,0x1931,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x2130,0x2130,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x2152,0x1932,0x1112,0x1133,0x1174,0x19D6,0x2217,0x21F7,0x19D6,0x1175,0x1154,0x1112,0x1912,0x1911,0x2131,0x2111,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x290F,0x210F,0x210F,0x2930,0x290F,0x212F,0x212F,0x290F,0x210F,0x212F,0x210F,0x212F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2950,0x2130,0x210F,0x2110,0x2151,0x2151,0x1931,0x1132,0x1153,0x1175,0x19D7,0x19F7,0x21F7,0x19D6,0x1974,0x1133,0x1131,0x1931,0x2151,0x2151,0x2131,0x1932,0x1112,0x1113,0x0913,0x0934,0x19D7,0x21F7,0x21D6,0x1973,0x1952,0x1931,0x2130,0x2110,0x2110,0x2110,0x2131,0x1932,0x1133,0x1154,0x11B6,0x19F8,0x2218,0x19B6,0x1133,0x1912,0x2131,0x2110,0x2110,0x212F,0x210F,0x210F,0x212F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F, + 0x210F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1111,0x1132,0x1153,0x1174,0x19D6,0x2217,0x2217,0x21F7,0x1996,0x1133,0x1133,0x1952,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2110,0x2930,0x210F,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x212F,0x2130,0x210F,0x212F,0x2130,0x212F,0x210F,0x210F,0x290F,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x18F1,0x18F2,0x1133,0x19F8,0x11F9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x021A,0x01FA,0x01FA,0x01F9,0x01F9,0x09D8,0x0996,0x1154,0x1112,0x1912,0x1911,0x2111,0x2111,0x2111,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x1930,0x1930,0x1930,0x2131,0x2131,0x1910,0x2131,0x2131,0x2131,0x2131,0x2111,0x2111,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1930,0x2131,0x2131,0x1910,0x1931,0x1931,0x2131,0x1931,0x1911,0x2131,0x1931,0x1931,0x1931,0x1931,0x1132,0x1132,0x0912,0x0974,0x2238,0x2217,0x19F7,0x11B6,0x1175,0x1154,0x1133,0x0933,0x0933,0x0933,0x1154,0x1196,0x19F7,0x1A18,0x1A18,0x2238,0x2218,0x2217,0x2217,0x21F7,0x2A17,0x2A38,0x2A38,0x2A38,0x2A38,0x2A38,0x2237,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A17,0x2A37,0x2A17,0x2A38,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A17,0x2A16,0x2A17,0x29F6,0x2A16,0x2A16,0x2A16,0x2A17,0x2A17,0x21F7,0x2A37,0x2217,0x2217,0x2217,0x2217,0x2217,0x2A17,0x2217,0x2A17,0x2A17,0x2A17,0x21F7,0x29F7,0x21F7,0x2A17,0x21F6,0x21F7,0x21F7,0x21F7,0x19D6,0x21F7,0x19D7,0x19D7,0x11B7,0x09D8,0x09D8,0x01D9,0x01F9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01D9,0x01FA,0x01D9,0x01D9,0x09D8,0x09D8,0x09D7,0x11B6,0x1174,0x1133,0x1932,0x1931,0x2131,0x2131,0x2130,0x2110,0x2130,0x2110,0x2110,0x210F,0x2130,0x2110,0x2130,0x212F,0x210F,0x2130,0x212F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x2930,0x2910,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x2930,0x2930,0x2930,0x210F,0x2130,0x2110,0x2130,0x2131,0x1932,0x1133,0x19D6,0x19F7,0x19F7,0x1996,0x1132,0x1911,0x1931,0x2130,0x2130,0x2130,0x212F,0x292F,0x292F,0x212F,0x212F,0x210F,0x2130,0x1910,0x1911,0x1132,0x1133,0x0933,0x19D6,0x19F7,0x19D6,0x19D5,0x1174,0x1112,0x1931,0x2131,0x2130,0x210F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x290F,0x290F,0x2930,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2930,0x2930,0x2930,0x2110,0x2110,0x2910,0x2910,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x212F,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2930,0x290F,0x2930,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x1911,0x1111,0x1112,0x1133,0x19B6,0x21F7,0x2217,0x2218,0x19B6,0x1154,0x1112,0x1112,0x1911,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1911,0x1912,0x1133,0x1133,0x1995,0x21F7,0x21F8,0x21F7,0x19B6,0x1154,0x1133,0x1112,0x1111,0x2152,0x2151,0x1930,0x190F,0x2130,0x2130,0x2930,0x2130,0x2130,0x2110,0x2130,0x2131,0x1932,0x1113,0x19D6,0x11F8,0x1A18,0x19D7,0x08F2,0x1931,0x2131,0x2110,0x2110,0x2930,0x2930,0x2930,0x210F,0x210F,0x2910,0x2910,0x2910,0x2930,0x210F,0x2910,0x2110,0x210F,0x2930,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2110,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x290F,0x292F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2110,0x1931,0x1931,0x1932,0x1112,0x19B5,0x2A17,0x21F7,0x19B6,0x08F2,0x1912,0x2132,0x2131,0x2131,0x2130,0x210F,0x210F,0x2930,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x1133,0x1154,0x19B6,0x2A38,0x21F8,0x1996,0x1995,0x1133,0x1912,0x1912,0x2131,0x2131,0x2131,0x2130,0x2110,0x210F,0x2130,0x210F,0x2930,0x2950,0x20EF,0x18EF,0x2151,0x2151,0x1931,0x1931,0x1131,0x1131,0x1132,0x1154,0x19D6,0x2217,0x2217,0x19B5,0x1133,0x1932,0x1911,0x2131,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x2910,0x290F,0x290F,0x290F,0x210F,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910,0x2930,0x2930,0x2930,0x212F,0x212F,0x292F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2151,0x1932,0x1932,0x1133,0x1974,0x19B6,0x21D6,0x21D6,0x21B6,0x1995,0x1954,0x1112,0x10F1,0x1932,0x1952,0x1952,0x1952,0x1152,0x0912,0x1154,0x1154,0x11D6,0x2238,0x2217,0x19D6,0x1995,0x1133,0x1112,0x1911,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2110,0x2130,0x2130,0x1931,0x1931,0x1132,0x1153,0x11B6,0x19F7,0x11F8,0x11B7,0x0996,0x0976,0x0976,0x0996,0x0976,0x0976,0x0997,0x11F8,0x19D8,0x1996,0x1133,0x1912,0x1911,0x1910,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x210F,0x212F,0x2130,0x2930,0x2930,0x2930,0x2130,0x210F,0x2130,0x2930,0x2930,0x2130,0x2930,0x212F,0x212F,0x2130,0x2130,0x2131,0x2952,0x2131,0x1911,0x1112,0x1133,0x1174,0x21F7,0x21F7,0x21F7,0x19D6,0x1175,0x1154,0x1112,0x1932,0x1932,0x2111,0x2111,0x2111,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x292F,0x292F,0x290F,0x210F,0x212F,0x292F,0x210F,0x212F,0x210F,0x290F,0x292F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x1931,0x1112,0x1153,0x1174,0x19B6,0x19F7,0x2218,0x21F7,0x1995,0x1153,0x1932,0x1931,0x1931,0x1931,0x2151,0x1931,0x1912,0x1133,0x1133,0x1154,0x1196,0x21D7,0x21D6,0x21B5,0x1973,0x1952,0x2131,0x2110,0x2110,0x2130,0x2131,0x2132,0x1932,0x1113,0x1154,0x11B6,0x2218,0x2218,0x19B6,0x1133,0x1911,0x2111,0x2110,0x2130,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110, + 0x210F,0x2110,0x2110,0x2150,0x2130,0x1930,0x1910,0x1111,0x1111,0x1153,0x1174,0x19B6,0x19F7,0x2218,0x21F7,0x1995,0x0933,0x1133,0x1953,0x1932,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2950,0x2130,0x2130,0x2930,0x2930,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x210F,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2910,0x2910,0x210F,0x2910,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x290F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2930,0x2110,0x2110,0x1911,0x1912,0x1974,0x1A18,0x09B8,0x09FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01FA,0x021A,0x01DA,0x01DA,0x01D9,0x01D9,0x1219,0x1A18,0x0934,0x1133,0x1912,0x2132,0x2111,0x2111,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x1930,0x1931,0x2131,0x2131,0x2131,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2130,0x2131,0x2131,0x2131,0x2131,0x2110,0x2131,0x2110,0x2131,0x2151,0x2131,0x2131,0x2131,0x2131,0x1910,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1132,0x0912,0x0933,0x0954,0x1195,0x19D6,0x19D7,0x19D6,0x19B6,0x1154,0x1154,0x0933,0x0933,0x0933,0x1154,0x1174,0x19B5,0x19D6,0x19D6,0x19D6,0x21F7,0x21F6,0x21F6,0x21F7,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21F6,0x21F6,0x21F6,0x21D6,0x21F6,0x21F6,0x21F6,0x21D6,0x21F6,0x21F7,0x21D6,0x21F6,0x21F6,0x21D6,0x21D6,0x21F7,0x21D6,0x21D6,0x21D6,0x21D6,0x21F6,0x21D6,0x21D6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21D6,0x21D6,0x21D6,0x21D6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F7,0x19D6,0x19D6,0x21D6,0x21D6,0x19D6,0x21F7,0x21D6,0x21D6,0x21D6,0x21D6,0x21D7,0x21D6,0x21F7,0x21F6,0x19D6,0x21F7,0x21F7,0x19D7,0x19D7,0x11D8,0x11D8,0x09D9,0x09F9,0x01D9,0x01B9,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FB,0x01FB,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01F9,0x01F9,0x01D9,0x09D9,0x09D8,0x11F8,0x11B6,0x1175,0x1133,0x1111,0x1931,0x1910,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x210F,0x212F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x2930,0x2910,0x2910,0x210F,0x2930,0x210F,0x290F,0x290F,0x2910,0x210F,0x210F,0x2930,0x2110,0x2130,0x2130,0x1911,0x1932,0x1133,0x19F6,0x1A18,0x19F7,0x1196,0x1153,0x1931,0x2131,0x2110,0x2130,0x2950,0x2130,0x292F,0x292F,0x212F,0x210F,0x212F,0x2130,0x2130,0x1931,0x1132,0x1153,0x1154,0x19F6,0x19F7,0x19D6,0x19D5,0x1174,0x1111,0x1911,0x2130,0x2930,0x2930,0x292F,0x290F,0x290F,0x292F,0x2930,0x2930,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2151,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x2930,0x2930,0x212F,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x290F,0x2910,0x2910,0x20EF,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x290F,0x2930,0x290F,0x2930,0x290F,0x290F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2130,0x2130,0x2130,0x2151,0x1952,0x1112,0x1112,0x1133,0x19B5,0x2217,0x2217,0x21F7,0x1995,0x1154,0x1132,0x1112,0x1931,0x2131,0x2130,0x2130,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x212F,0x2130,0x2130,0x2130,0x2131,0x2132,0x1932,0x1112,0x1133,0x1995,0x2A38,0x21F7,0x19B7,0x1996,0x1154,0x1113,0x1132,0x1932,0x1911,0x2151,0x2151,0x2150,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x2110,0x2150,0x2151,0x1932,0x1133,0x19D6,0x1A18,0x1A19,0x19B7,0x1112,0x1931,0x2131,0x2130,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2910,0x2930,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x2930,0x210F,0x2910,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x2930,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2930,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x2130,0x2110,0x2130,0x1910,0x1931,0x1932,0x1112,0x21B5,0x29F7,0x21F7,0x19B5,0x08F2,0x10F2,0x1932,0x2131,0x2131,0x2130,0x2110,0x20EF,0x2930,0x2930,0x2130,0x2110,0x2130,0x2130,0x2110,0x210F,0x2130,0x212F,0x210F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2131,0x2131,0x2152,0x1932,0x1132,0x1133,0x1154,0x19B6,0x21F7,0x21F7,0x21D7,0x1995,0x1153,0x1112,0x1932,0x1931,0x2131,0x2131,0x2110,0x2110,0x2130,0x2930,0x2930,0x2930,0x2130,0x2110,0x2150,0x2151,0x2151,0x2130,0x2151,0x1931,0x1132,0x1132,0x0954,0x19D6,0x2217,0x21F7,0x19B5,0x1132,0x1931,0x1931,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2930,0x210F,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x292F,0x212F,0x2130,0x2151,0x1931,0x1931,0x1932,0x1932,0x1953,0x1995,0x19B5,0x21D6,0x21D6,0x21D6,0x1995,0x1974,0x1112,0x1111,0x1931,0x1952,0x1952,0x1973,0x1153,0x0912,0x0933,0x0954,0x19D6,0x2238,0x2217,0x19D6,0x1995,0x1953,0x1112,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x210F,0x210F,0x210F,0x2930,0x2910,0x210F,0x2110,0x2110,0x2910,0x2930,0x2910,0x290F,0x290F,0x290F,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2110,0x2910,0x210F,0x210F,0x290F,0x2930,0x2930,0x210F,0x210F,0x2930,0x210F,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2110,0x1910,0x1931,0x1132,0x19D6,0x2239,0x19F8,0x11B7,0x0976,0x0975,0x0975,0x0975,0x0955,0x0975,0x0976,0x0976,0x0976,0x11B7,0x2A59,0x1175,0x1112,0x1931,0x2111,0x2110,0x212F,0x210F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x2930,0x2930,0x2130,0x2930,0x2130,0x2930,0x2110,0x2130,0x2930,0x2930,0x212F,0x210F,0x2110,0x2130,0x2131,0x2131,0x2131,0x1912,0x1912,0x1133,0x1154,0x21D6,0x21F7,0x21F7,0x19D6,0x1995,0x1154,0x1112,0x1912,0x2132,0x2131,0x2111,0x2110,0x2130,0x2130,0x2130,0x2150,0x2130,0x212F,0x210F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1911,0x1111,0x1133,0x1174,0x19D6,0x2218,0x2218,0x21F7,0x1195,0x1153,0x1133,0x1932,0x1931,0x1931,0x1931,0x1951,0x1932,0x1112,0x1133,0x1975,0x19D7,0x2218,0x19D7,0x19B6,0x1974,0x1953,0x2152,0x2131,0x2110,0x2110,0x2131,0x2152,0x1932,0x1112,0x0913,0x1175,0x21F8,0x2239,0x21F8,0x1995,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130, + 0x2130,0x210F,0x2130,0x2130,0x2130,0x1910,0x1910,0x1910,0x1111,0x1132,0x1153,0x1174,0x19B6,0x19D7,0x2218,0x21F7,0x19B6,0x0934,0x1133,0x1932,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2930,0x2110,0x2110,0x2110,0x2910,0x210F,0x2910,0x2910,0x2110,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x2910,0x210F,0x290F,0x2910,0x2930,0x2930,0x290F,0x2930,0x2930,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x1911,0x1112,0x1154,0x19F8,0x09D9,0x09FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x021A,0x01FA,0x01FA,0x01DA,0x01FA,0x01F9,0x1219,0x11D8,0x0954,0x1133,0x1912,0x1932,0x2132,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x2131,0x2131,0x1931,0x2131,0x1931,0x2131,0x1931,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1952,0x1932,0x1952,0x1953,0x1133,0x0912,0x1133,0x1174,0x1175,0x19D7,0x19F7,0x19F7,0x19B6,0x1174,0x1154,0x0933,0x0913,0x1153,0x1133,0x1174,0x1174,0x1174,0x1995,0x1974,0x1995,0x1974,0x1974,0x1995,0x1975,0x1975,0x1995,0x1995,0x1995,0x1994,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1994,0x19B5,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x19B5,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1195,0x19B5,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1975,0x1995,0x1995,0x1995,0x1995,0x1995,0x1196,0x1196,0x1197,0x09B8,0x09D8,0x01D9,0x01D9,0x01D9,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FB,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x09F9,0x09F9,0x09F8,0x11D7,0x0996,0x1154,0x1132,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x210F,0x2910,0x210F,0x2930,0x210F,0x2110,0x2910,0x210F,0x2110,0x2910,0x2110,0x2110,0x210F,0x210F,0x290F,0x292F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x2930,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x1911,0x1932,0x1133,0x19D6,0x1A38,0x19D7,0x19B6,0x1153,0x1931,0x2131,0x2130,0x2130,0x2950,0x212F,0x210F,0x212F,0x292F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1932,0x1133,0x1154,0x19F6,0x19F7,0x19F6,0x19D5,0x1174,0x1132,0x1931,0x2130,0x2130,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2110,0x2130,0x2110,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x210F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x2110,0x2930,0x210F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x290F,0x20EF,0x2930,0x2930,0x210F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1111,0x1112,0x1133,0x1995,0x21F7,0x2217,0x21F7,0x19B6,0x1154,0x1132,0x1112,0x1911,0x1931,0x1930,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2110,0x2131,0x2131,0x1912,0x1112,0x1133,0x1154,0x2A38,0x21F8,0x21D7,0x19B6,0x1154,0x1133,0x1932,0x1911,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2151,0x1932,0x1133,0x19D6,0x1A18,0x19F8,0x19D7,0x08F2,0x1931,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x212F,0x290F,0x290F,0x2930,0x2930,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x2110,0x2110,0x2110,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x20EF,0x210F,0x2930,0x2930,0x18EF,0x1910,0x1910,0x1931,0x1932,0x1112,0x21B5,0x21F6,0x2217,0x21B6,0x08F2,0x10F2,0x1932,0x2131,0x2131,0x2130,0x20EF,0x210F,0x2930,0x2930,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2131,0x2131,0x2131,0x1931,0x1932,0x1132,0x1133,0x1154,0x19B6,0x2217,0x2217,0x21F7,0x1995,0x1133,0x1112,0x1912,0x2132,0x2111,0x2130,0x2110,0x2930,0x2930,0x2130,0x210F,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1911,0x1132,0x0933,0x1195,0x2217,0x2237,0x21D6,0x1133,0x1112,0x1931,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2110,0x2910,0x2910,0x210F,0x290F,0x2930,0x210F,0x290F,0x2930,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x212F,0x2150,0x2150,0x2130,0x2131,0x1931,0x1912,0x1933,0x1933,0x1995,0x19B5,0x21D6,0x19B6,0x21D6,0x21B6,0x1974,0x1132,0x1132,0x1132,0x1952,0x1973,0x1952,0x1132,0x0912,0x0953,0x1174,0x19D6,0x2217,0x2217,0x21F7,0x1975,0x1953,0x1112,0x1911,0x2111,0x2131,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x2930,0x212F,0x2930,0x210F,0x212F,0x290F,0x2930,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x290F,0x2910,0x2930,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x1910,0x1931,0x1153,0x19F7,0x1A18,0x1A19,0x09B7,0x0955,0x0955,0x0934,0x0975,0x0955,0x0955,0x0975,0x0975,0x0976,0x11B7,0x2259,0x1996,0x10F2,0x1911,0x2111,0x2110,0x212F,0x212F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2130,0x2110,0x2110,0x2930,0x2930,0x2930,0x2130,0x2930,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2131,0x2111,0x1912,0x1912,0x1133,0x1954,0x19B6,0x21F7,0x21F7,0x21D6,0x1995,0x1154,0x1112,0x1912,0x1932,0x1911,0x2111,0x2131,0x2130,0x2130,0x2950,0x2130,0x212F,0x210F,0x210F,0x290F,0x292F,0x292F,0x212F,0x2130,0x212F,0x210F,0x212F,0x210F,0x292F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1931,0x1111,0x1112,0x1954,0x1995,0x21F7,0x2218,0x2218,0x19B6,0x1154,0x1133,0x1132,0x1131,0x1931,0x1931,0x1951,0x1932,0x1132,0x1133,0x1175,0x19B6,0x19F7,0x19F7,0x19D7,0x19B5,0x1953,0x1932,0x1931,0x1911,0x2130,0x2131,0x2151,0x2152,0x1112,0x1112,0x1154,0x19D7,0x2238,0x2218,0x19D7,0x1154,0x1111,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x290F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2130,0x2110, + 0x2130,0x2130,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2151,0x1931,0x1932,0x1133,0x1174,0x19D6,0x21F7,0x2218,0x19F7,0x19B6,0x1154,0x1133,0x1932,0x1932,0x2151,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x2110,0x2110,0x2930,0x2910,0x2930,0x2910,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2930,0x2930,0x290F,0x290F,0x290F,0x2910,0x2930,0x2910,0x290F,0x210F,0x2910,0x2930,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x1911,0x1912,0x1134,0x1A18,0x09F9,0x09DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x021A,0x021A,0x01FA,0x01FA,0x01F9,0x09D8,0x0976,0x0955,0x0913,0x1113,0x1112,0x1912,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1910,0x1911,0x1931,0x1931,0x1111,0x1932,0x1932,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1111,0x1112,0x1932,0x1953,0x1153,0x1133,0x0933,0x1174,0x1175,0x1195,0x11B6,0x11B6,0x19B6,0x1175,0x1174,0x1154,0x1153,0x1133,0x1133,0x1153,0x1153,0x1133,0x1133,0x1133,0x1933,0x1112,0x1933,0x1933,0x1933,0x1933,0x1953,0x1133,0x1153,0x1153,0x1153,0x1153,0x1133,0x1133,0x1153,0x1133,0x1153,0x1133,0x1933,0x1153,0x1153,0x1953,0x1953,0x1153,0x1153,0x1953,0x1953,0x1133,0x1153,0x1153,0x1153,0x1153,0x1953,0x1933,0x1933,0x1953,0x1153,0x1953,0x1953,0x1953,0x1953,0x1133,0x1133,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1954,0x1134,0x1954,0x1133,0x1133,0x1133,0x1133,0x1133,0x1154,0x0934,0x0955,0x0176,0x01B8,0x09F9,0x01D9,0x01D9,0x01D9,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x09F9,0x09F9,0x09D8,0x09B6,0x0975,0x1153,0x1932,0x2152,0x2131,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2930,0x2110,0x212F,0x212F,0x290F,0x210F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x2930,0x290F,0x2910,0x2910,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x1931,0x1932,0x1133,0x19D6,0x1A17,0x19F7,0x1196,0x1133,0x1911,0x1911,0x2130,0x2130,0x2150,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x2130,0x2130,0x1931,0x1931,0x1132,0x1154,0x19D6,0x19D6,0x19D6,0x19B5,0x1153,0x1112,0x1911,0x2130,0x2130,0x292F,0x292F,0x290F,0x292F,0x2930,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2111,0x1911,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x2110,0x2110,0x2910,0x210F,0x2910,0x2910,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2151,0x2151,0x1911,0x1111,0x1112,0x1154,0x19B5,0x2217,0x21F7,0x19B6,0x19B6,0x1154,0x1132,0x1111,0x1911,0x1910,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x210F,0x2130,0x2110,0x2130,0x2130,0x212F,0x2110,0x2110,0x2130,0x2130,0x2111,0x1912,0x1132,0x1133,0x1995,0x21F7,0x21F7,0x19B7,0x19B6,0x1154,0x1133,0x1932,0x1932,0x1931,0x1931,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2151,0x1932,0x0912,0x19D7,0x1A18,0x19F8,0x19B6,0x08F2,0x1911,0x2131,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x2930,0x2110,0x2110,0x2910,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x2930,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1112,0x21D5,0x2A17,0x2217,0x19B5,0x08F2,0x1912,0x1932,0x2151,0x2130,0x2930,0x2110,0x210F,0x2930,0x2110,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x2131,0x1931,0x1932,0x1933,0x1933,0x1154,0x19B6,0x21F7,0x2218,0x21F7,0x1175,0x0933,0x1133,0x1112,0x1931,0x2131,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1912,0x1133,0x1995,0x21F7,0x2217,0x21F7,0x1133,0x1112,0x1932,0x2151,0x2131,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2110,0x2110,0x2910,0x2910,0x210F,0x2110,0x2930,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1911,0x1911,0x1912,0x1912,0x1954,0x1974,0x1995,0x1996,0x21D6,0x21D6,0x21D6,0x1974,0x1112,0x1132,0x1111,0x1952,0x1952,0x1952,0x1153,0x1133,0x1153,0x1174,0x19B6,0x19B6,0x21F7,0x21D7,0x1975,0x1133,0x1112,0x1911,0x1911,0x2110,0x2110,0x2130,0x2130,0x2130,0x2930,0x2130,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x210F,0x290F,0x290F,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x2930,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x1910,0x1931,0x1153,0x19D6,0x1A18,0x1A18,0x11D7,0x0976,0x0955,0x0934,0x0954,0x0954,0x0955,0x0955,0x11B6,0x11B7,0x19F8,0x2218,0x1155,0x08F2,0x1911,0x2131,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2930,0x2110,0x210F,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x2131,0x1911,0x1912,0x1933,0x1954,0x1995,0x21F7,0x21F7,0x21D6,0x1995,0x1134,0x1133,0x1112,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2950,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x1931,0x1931,0x1132,0x1132,0x1974,0x1995,0x19D6,0x19D7,0x21D7,0x1995,0x1154,0x1153,0x1132,0x1932,0x1931,0x1931,0x1951,0x1931,0x1132,0x1133,0x1995,0x1996,0x19D7,0x21F8,0x19D7,0x19B6,0x1974,0x1932,0x1932,0x1911,0x1911,0x2131,0x2152,0x1931,0x1912,0x1112,0x1154,0x19B6,0x2218,0x2218,0x19D7,0x19B5,0x1153,0x1111,0x1931,0x2151,0x2130,0x2130,0x210F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110, + 0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2151,0x2131,0x1931,0x1931,0x1132,0x1133,0x1174,0x19B6,0x1A17,0x1A17,0x19F7,0x19B6,0x0934,0x1133,0x1932,0x2152,0x2131,0x2130,0x2110,0x2110,0x2930,0x2110,0x2930,0x210F,0x2110,0x210F,0x2930,0x2110,0x2910,0x210F,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x2930,0x212F,0x212F,0x210F,0x2930,0x2930,0x212F,0x292F,0x290F,0x2910,0x2910,0x2910,0x2930,0x210F,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x212F,0x212F,0x212F,0x210F,0x292F,0x210F,0x292F,0x292F,0x210F,0x2110,0x2130,0x2130,0x2131,0x1911,0x10F2,0x1134,0x1A18,0x09D9,0x01D9,0x01DA,0x01FA,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x021A,0x021A,0x01FA,0x01DA,0x01FA,0x01D9,0x01B8,0x0177,0x0996,0x0955,0x0934,0x1133,0x1113,0x1113,0x1133,0x1133,0x1133,0x1133,0x1132,0x1112,0x1132,0x1132,0x1132,0x1132,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1133,0x1132,0x1132,0x1132,0x1133,0x1133,0x1133,0x1133,0x1132,0x1133,0x1112,0x1133,0x1132,0x0912,0x0912,0x1112,0x1133,0x1133,0x1133,0x0933,0x1174,0x1175,0x1195,0x11B6,0x11B6,0x11B6,0x1195,0x1154,0x1154,0x1153,0x1153,0x1953,0x1132,0x1932,0x1932,0x1932,0x1932,0x1912,0x1932,0x1912,0x1932,0x1932,0x1912,0x1932,0x1932,0x1932,0x1112,0x1932,0x1932,0x1132,0x1112,0x1132,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1132,0x1132,0x1932,0x1932,0x1932,0x1932,0x1132,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1132,0x1932,0x1132,0x1932,0x1132,0x1132,0x1132,0x1952,0x1952,0x1932,0x1953,0x1132,0x1932,0x1933,0x1112,0x1932,0x1132,0x1932,0x1932,0x1132,0x1133,0x1134,0x0954,0x0976,0x09D8,0x01D8,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FB,0x01FB,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01D9,0x09F9,0x09D8,0x09D7,0x11B6,0x1174,0x1952,0x1952,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2910,0x2910,0x212F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x210F,0x2110,0x2130,0x2130,0x1931,0x1112,0x1133,0x19D6,0x1A18,0x19D7,0x19B6,0x1133,0x1932,0x2131,0x2110,0x2130,0x2130,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2131,0x1911,0x1132,0x0953,0x19D6,0x19F7,0x19D6,0x19B5,0x1174,0x1112,0x1931,0x2130,0x2930,0x290F,0x292F,0x292F,0x290F,0x292F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1931,0x1911,0x1932,0x1932,0x1932,0x1932,0x1952,0x1932,0x2132,0x1911,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x2930,0x212F,0x2930,0x210F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2110,0x2910,0x210F,0x210F,0x290F,0x210F,0x2930,0x212F,0x212F,0x210F,0x292F,0x292F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x292F,0x210F,0x212F,0x2130,0x2951,0x2151,0x1931,0x1111,0x1132,0x0933,0x19B5,0x21F7,0x2217,0x19D6,0x1995,0x1153,0x1132,0x1931,0x1911,0x1931,0x1910,0x1910,0x2130,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2131,0x1932,0x1112,0x1153,0x19B5,0x21F7,0x2218,0x19D7,0x1996,0x1154,0x1133,0x1932,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x1930,0x2151,0x1932,0x1112,0x19D7,0x1A18,0x19F8,0x19B7,0x08F2,0x1931,0x2111,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x210F,0x2110,0x210F,0x2910,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x2110,0x210F,0x2910,0x2910,0x2110,0x2910,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x2930,0x2930,0x210F,0x210F,0x2110,0x2930,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x08F2,0x21B5,0x2A17,0x2217,0x21D6,0x10F2,0x1112,0x2152,0x2151,0x2130,0x2110,0x210F,0x210F,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x2930,0x2130,0x210F,0x2130,0x2110,0x2130,0x2110,0x2131,0x2131,0x1932,0x1933,0x1133,0x1154,0x1995,0x21F7,0x2217,0x19D7,0x1195,0x1154,0x1133,0x1932,0x1932,0x2111,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x1910,0x1911,0x1931,0x1112,0x1154,0x21F7,0x21F7,0x2217,0x1153,0x1112,0x1912,0x2132,0x2131,0x2130,0x2130,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x290F,0x290F,0x2930,0x210F,0x290F,0x2910,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2910,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x1911,0x1911,0x1912,0x1932,0x1933,0x1954,0x1995,0x21D6,0x19B6,0x21D6,0x19B5,0x1154,0x1133,0x1112,0x1111,0x1131,0x1973,0x1993,0x1132,0x1133,0x0933,0x1154,0x19B6,0x19D7,0x21F7,0x19B6,0x1995,0x1133,0x1932,0x1911,0x2131,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x210F,0x210F,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x210F,0x2930,0x290F,0x290F,0x210F,0x210F,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2930,0x2110,0x2930,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2130,0x210F,0x2110,0x1910,0x1911,0x1153,0x11B6,0x1A18,0x19F8,0x11D8,0x0996,0x0955,0x0954,0x0934,0x0934,0x0955,0x0955,0x11B7,0x11F8,0x1A19,0x19F8,0x0955,0x08F2,0x1911,0x2131,0x2130,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x210F,0x2930,0x2930,0x2930,0x2130,0x2130,0x212F,0x2130,0x2930,0x210F,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2110,0x2111,0x2111,0x1911,0x1912,0x1933,0x1954,0x19B6,0x21F7,0x21F7,0x21F7,0x1995,0x1154,0x1113,0x1912,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2910,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2950,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x1931,0x1931,0x1112,0x1132,0x1174,0x1995,0x19D6,0x21F7,0x19D6,0x19B6,0x1134,0x1112,0x1112,0x1131,0x1131,0x1951,0x1952,0x1932,0x1932,0x1133,0x1174,0x1996,0x19D7,0x21F7,0x21F7,0x19B6,0x1974,0x1133,0x1932,0x1911,0x1911,0x2131,0x2152,0x1952,0x1912,0x10F2,0x1954,0x1995,0x2218,0x2218,0x19D7,0x19B6,0x1154,0x1132,0x1931,0x2151,0x2130,0x2130,0x2130,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2110,0x2130,0x2130, + 0x2131,0x2130,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1132,0x1132,0x1174,0x19B6,0x2218,0x2218,0x19D7,0x1195,0x1133,0x1112,0x1912,0x2132,0x2131,0x2130,0x2910,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x210F,0x292F,0x290F,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x2930,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1912,0x1133,0x1A39,0x09F9,0x01B9,0x01DA,0x01FA,0x021A,0x01DA,0x01FA,0x01DA,0x01FB,0x01FB,0x021B,0x01FA,0x01FA,0x01FB,0x01FA,0x021A,0x01FA,0x01B9,0x0198,0x11F8,0x11F8,0x0996,0x1196,0x1196,0x1196,0x11B6,0x1196,0x1196,0x1196,0x1195,0x1195,0x11B5,0x1195,0x1195,0x11B5,0x1196,0x1196,0x11B6,0x1196,0x11B6,0x1195,0x1196,0x1196,0x1196,0x1195,0x1196,0x11B6,0x11B6,0x1195,0x1195,0x1195,0x11B5,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x1196,0x1196,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x19D6,0x11D6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x19D6,0x1195,0x1154,0x1153,0x1153,0x0933,0x0933,0x0933,0x1154,0x1175,0x11B6,0x19D6,0x19D7,0x11B6,0x11B5,0x1154,0x1133,0x1133,0x1132,0x1932,0x1932,0x1932,0x1911,0x1911,0x2132,0x1932,0x2132,0x2132,0x1932,0x1932,0x1932,0x1911,0x1931,0x1932,0x1911,0x1931,0x1931,0x1931,0x1931,0x1911,0x1932,0x1911,0x1931,0x1911,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1932,0x1931,0x1931,0x1931,0x1932,0x1932,0x1931,0x1931,0x1931,0x1932,0x1952,0x1132,0x1133,0x0934,0x0955,0x09B7,0x09F9,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x0A1A,0x09F9,0x09D7,0x11B6,0x1195,0x1132,0x1932,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x2910,0x2930,0x2930,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x210F,0x2910,0x2930,0x2910,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2910,0x2930,0x210F,0x210F,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2130,0x1931,0x1912,0x0913,0x19D6,0x1A18,0x19D7,0x1196,0x1133,0x1932,0x1931,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x1910,0x1911,0x1132,0x1154,0x19D6,0x19F6,0x19D6,0x19B5,0x1173,0x1112,0x1931,0x2130,0x2930,0x2930,0x292F,0x290F,0x290F,0x290F,0x2130,0x2110,0x2130,0x2131,0x1931,0x1931,0x1932,0x1932,0x1132,0x1132,0x1133,0x1133,0x1953,0x1953,0x1953,0x1952,0x1932,0x1931,0x1911,0x2111,0x2131,0x2130,0x2110,0x2110,0x2130,0x210F,0x290F,0x210F,0x2930,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x2910,0x2910,0x210F,0x210F,0x2910,0x2930,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x212F,0x2930,0x2930,0x2130,0x2930,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2150,0x2131,0x1951,0x1132,0x0912,0x1153,0x19B5,0x19F7,0x2217,0x21F6,0x19B5,0x1133,0x1112,0x1131,0x1911,0x1910,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2131,0x1931,0x1112,0x1954,0x1995,0x21F7,0x2A38,0x21F7,0x1995,0x1154,0x1133,0x1132,0x1911,0x1911,0x2131,0x2131,0x2131,0x2130,0x2110,0x210F,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2131,0x1911,0x1112,0x19D7,0x1A18,0x1A19,0x19B7,0x08F2,0x1911,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2930,0x210F,0x2110,0x2910,0x2110,0x2910,0x2910,0x2930,0x210F,0x290F,0x210F,0x290F,0x290F,0x2930,0x210F,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x2152,0x1111,0x10F2,0x21B5,0x2A17,0x21F7,0x21B6,0x1112,0x1912,0x2132,0x2131,0x2131,0x2930,0x2930,0x210F,0x210F,0x2910,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2130,0x2110,0x2110,0x2130,0x2131,0x2131,0x1932,0x1112,0x1112,0x1174,0x19B5,0x21F7,0x21F7,0x19D6,0x1195,0x1154,0x1112,0x1112,0x1931,0x1911,0x2131,0x2110,0x210F,0x210F,0x210F,0x20EF,0x210F,0x2130,0x2130,0x210F,0x2130,0x1931,0x1931,0x1112,0x1133,0x21D6,0x21F7,0x2A17,0x1974,0x1112,0x1912,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2910,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x210F,0x2910,0x2110,0x2930,0x210F,0x2110,0x2110,0x2910,0x2930,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x292F,0x292F,0x2930,0x2930,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x1911,0x1931,0x1932,0x1932,0x1932,0x1953,0x1974,0x1995,0x21D6,0x21F7,0x21D6,0x21D6,0x1954,0x1112,0x10F1,0x1111,0x1952,0x2173,0x1952,0x1132,0x0912,0x1133,0x1174,0x19B6,0x19D6,0x21F7,0x19B6,0x19B5,0x1954,0x1112,0x1911,0x1911,0x2131,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x292F,0x292F,0x212F,0x212F,0x210F,0x2110,0x2910,0x210F,0x210F,0x2930,0x2930,0x290F,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x210F,0x2930,0x210F,0x2910,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x1931,0x1153,0x19B6,0x19F7,0x11D8,0x11D8,0x0975,0x0955,0x0954,0x0954,0x0934,0x0934,0x0955,0x0996,0x11D8,0x11F8,0x19F8,0x0955,0x08F2,0x1932,0x2131,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x2130,0x212F,0x2130,0x2130,0x212F,0x292F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x2131,0x1911,0x1912,0x1953,0x1954,0x21D6,0x21F7,0x21F7,0x21F6,0x19B6,0x1154,0x1112,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x2930,0x212F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x2110,0x210F,0x2110,0x210F,0x212F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x1931,0x1911,0x1132,0x1154,0x1995,0x19D6,0x19D7,0x19B6,0x19B6,0x1974,0x1112,0x1111,0x1111,0x1131,0x1931,0x1951,0x1952,0x1132,0x1132,0x1154,0x1995,0x19B6,0x19F7,0x21F7,0x19B6,0x1975,0x1133,0x1112,0x1911,0x1911,0x1931,0x2152,0x1952,0x1112,0x1112,0x1133,0x1995,0x21F7,0x2218,0x21F7,0x19B6,0x1174,0x1132,0x1111,0x1931,0x2130,0x2130,0x2130,0x2930,0x212F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130, + 0x1931,0x2131,0x2131,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2131,0x1931,0x1132,0x1133,0x1174,0x11B6,0x1A17,0x2218,0x19F7,0x1195,0x1133,0x1133,0x1932,0x2131,0x2131,0x2110,0x2910,0x2110,0x210F,0x2110,0x2130,0x2110,0x2130,0x2110,0x210F,0x2930,0x210F,0x290F,0x290F,0x2930,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2910,0x2910,0x2930,0x2930,0x2110,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x210F,0x2130,0x212F,0x2130,0x210F,0x2930,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2110,0x2130,0x2130,0x2130,0x2131,0x2111,0x1911,0x1912,0x0913,0x1A39,0x09F9,0x01D9,0x01FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FB,0x01FB,0x01DB,0x01FB,0x01DA,0x01FB,0x01FB,0x01FA,0x01FA,0x09DA,0x01B9,0x1219,0x1219,0x1219,0x1218,0x1A18,0x1A39,0x1A39,0x1A39,0x1A39,0x2239,0x2239,0x2238,0x2238,0x2258,0x2238,0x2238,0x2259,0x2239,0x2239,0x2238,0x2239,0x2239,0x2239,0x2239,0x2259,0x2238,0x2239,0x2239,0x2259,0x2259,0x2238,0x2238,0x2239,0x2239,0x2239,0x2239,0x2259,0x2259,0x2238,0x2239,0x2259,0x2238,0x2239,0x2259,0x2259,0x2238,0x2238,0x1A18,0x2238,0x1A38,0x1A18,0x1A18,0x1A18,0x1A38,0x1A38,0x1A17,0x11B6,0x1195,0x1154,0x1153,0x0932,0x0933,0x0933,0x1154,0x1195,0x19D6,0x19D6,0x19D7,0x19D6,0x1195,0x1154,0x1133,0x1132,0x1132,0x1911,0x1932,0x1911,0x1932,0x2132,0x1911,0x2132,0x1911,0x1932,0x1932,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x2131,0x1931,0x1911,0x1931,0x1931,0x1931,0x2131,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1132,0x1112,0x0934,0x0955,0x09B7,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DB,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x09F9,0x09F9,0x09F8,0x11B7,0x1195,0x1153,0x1932,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x2930,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2910,0x210F,0x290F,0x2930,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x2930,0x2930,0x210F,0x2930,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2110,0x2130,0x2110,0x2110,0x2130,0x1931,0x1932,0x0912,0x19D6,0x1A18,0x11D7,0x19B6,0x1133,0x1912,0x1931,0x2130,0x2130,0x2130,0x212F,0x292F,0x294F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x1911,0x1132,0x1154,0x19D6,0x19F6,0x19D6,0x19D5,0x1173,0x1111,0x1931,0x2130,0x2930,0x2930,0x292F,0x292F,0x290F,0x2930,0x2930,0x2130,0x2130,0x2131,0x1931,0x1932,0x1153,0x1133,0x1154,0x1174,0x1175,0x1175,0x1154,0x0934,0x1133,0x1133,0x1133,0x1932,0x1932,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x212F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2910,0x210F,0x2910,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x2130,0x210F,0x2130,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x2930,0x2930,0x212F,0x210F,0x210F,0x212F,0x2950,0x2951,0x2151,0x1931,0x1111,0x1112,0x0933,0x19B5,0x21F7,0x2218,0x19F6,0x19B5,0x1154,0x1112,0x1111,0x1911,0x1910,0x1910,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1932,0x1153,0x19B5,0x21F7,0x2218,0x21F7,0x1995,0x1174,0x1133,0x1932,0x1911,0x1911,0x1910,0x1930,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2150,0x1931,0x1911,0x1113,0x19D7,0x1A18,0x1A19,0x19B7,0x08F2,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x2910,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2930,0x290F,0x2930,0x2910,0x2930,0x2930,0x210F,0x2930,0x210F,0x2910,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2110,0x2130,0x2130,0x2151,0x2132,0x1911,0x10F1,0x21B5,0x2A17,0x21F7,0x21B6,0x1113,0x1912,0x2132,0x2131,0x2131,0x2110,0x2110,0x2110,0x210F,0x2910,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1911,0x1932,0x1132,0x1174,0x1995,0x19D6,0x2218,0x2217,0x19B6,0x1154,0x1112,0x1912,0x1931,0x2131,0x2130,0x210F,0x2930,0x2130,0x210F,0x210F,0x2950,0x2150,0x190F,0x2150,0x2151,0x1911,0x1112,0x1133,0x19B6,0x21F7,0x2A17,0x1974,0x1112,0x1932,0x1931,0x2131,0x2130,0x2110,0x2130,0x2130,0x210F,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x290F,0x2910,0x2930,0x2910,0x2910,0x2110,0x210F,0x2110,0x2910,0x210F,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2131,0x2131,0x1911,0x1911,0x1932,0x1933,0x1153,0x1974,0x1995,0x19D6,0x21D6,0x19B6,0x19B5,0x1953,0x1132,0x1111,0x1111,0x1952,0x1952,0x1111,0x1132,0x1133,0x1133,0x1995,0x1995,0x19B6,0x2217,0x21F7,0x19B5,0x1154,0x1112,0x1111,0x1911,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2930,0x2930,0x292F,0x292F,0x212F,0x2930,0x210F,0x2930,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x210F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x1931,0x1932,0x1174,0x19D7,0x11D7,0x11D7,0x11B6,0x0975,0x0134,0x0955,0x0934,0x0114,0x0135,0x0997,0x11B8,0x11D8,0x11D8,0x1175,0x08F2,0x1911,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2150,0x212F,0x2130,0x212F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1911,0x1912,0x1953,0x1954,0x19B5,0x21F7,0x21F7,0x21F7,0x1995,0x1154,0x1112,0x1912,0x1931,0x2131,0x2150,0x2130,0x212F,0x212F,0x210F,0x292F,0x292F,0x210F,0x210F,0x2910,0x2910,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1931,0x1112,0x1953,0x1995,0x19D6,0x21F7,0x19D6,0x19D6,0x1974,0x1133,0x1112,0x10F1,0x1111,0x1931,0x1931,0x1931,0x1132,0x1132,0x1153,0x1995,0x19B6,0x19D7,0x21F7,0x19B6,0x1975,0x1133,0x1912,0x1912,0x10F1,0x1931,0x1952,0x1952,0x1132,0x1112,0x1154,0x1995,0x21F7,0x2217,0x21F7,0x19B6,0x1974,0x1132,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x212F,0x292F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x292F,0x2930, + 0x1911,0x1931,0x2131,0x1911,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2131,0x2131,0x1931,0x1111,0x1133,0x1174,0x19D6,0x19F7,0x2218,0x19F7,0x1175,0x1133,0x1112,0x1932,0x2131,0x2131,0x2910,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x210F,0x2930,0x2110,0x2110,0x2110,0x2130,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2130,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2930,0x2910,0x2910,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x2930,0x292F,0x212F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2131,0x2111,0x1911,0x1912,0x1133,0x2239,0x0A19,0x01B9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FB,0x021B,0x01FB,0x01DA,0x01FB,0x01DA,0x01FA,0x01FA,0x01DA,0x09DA,0x09D9,0x1219,0x11F8,0x11D8,0x11D8,0x11D8,0x19F8,0x19F8,0x1A18,0x19F8,0x19F8,0x19F7,0x19F7,0x1A17,0x19F7,0x19F7,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x2218,0x19F8,0x2218,0x19F8,0x19F7,0x19F7,0x19D7,0x19F7,0x2218,0x19F7,0x19F8,0x19F8,0x19F8,0x19F7,0x19D7,0x19F8,0x19F8,0x19F8,0x19F7,0x19F7,0x19D7,0x19D7,0x19D7,0x19F7,0x19F7,0x19F7,0x1A18,0x1A18,0x1A18,0x1A17,0x19F7,0x11D7,0x11B6,0x11B6,0x1195,0x1174,0x0933,0x0933,0x0933,0x0933,0x0954,0x1195,0x19D7,0x19F7,0x19D6,0x11B6,0x1195,0x1154,0x1132,0x1132,0x1112,0x1932,0x1932,0x1911,0x1932,0x1931,0x1911,0x1931,0x1911,0x18F1,0x1911,0x1931,0x1911,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x2152,0x1931,0x1931,0x2131,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x1931,0x1911,0x1931,0x1911,0x2131,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1132,0x1132,0x0934,0x0955,0x09B7,0x01D9,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FB,0x01DA,0x01FB,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01F9,0x09F9,0x11F9,0x11F8,0x19D6,0x1133,0x1932,0x1931,0x2131,0x2110,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x212F,0x212F,0x210F,0x2110,0x2930,0x2110,0x2910,0x2110,0x2930,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2110,0x210F,0x2110,0x2130,0x2110,0x2130,0x1931,0x1932,0x1133,0x19D7,0x1A18,0x19D7,0x19B6,0x1133,0x1111,0x1931,0x2110,0x2130,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2150,0x2131,0x1911,0x1132,0x1154,0x19D6,0x19F7,0x19D6,0x19B5,0x1973,0x1112,0x1931,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2131,0x1931,0x1132,0x1133,0x1174,0x19D6,0x2238,0x1A18,0x2238,0x2258,0x2258,0x2238,0x1A17,0x19D6,0x1195,0x1154,0x1112,0x1932,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x290F,0x2910,0x2910,0x2930,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x210F,0x210F,0x2130,0x212F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x2910,0x2930,0x2930,0x290F,0x2930,0x2130,0x2110,0x2151,0x2151,0x1911,0x1111,0x1112,0x1133,0x19B5,0x2217,0x2217,0x21F7,0x19B5,0x1153,0x1132,0x1111,0x1911,0x1910,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x2130,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1912,0x1933,0x21B5,0x21F7,0x2217,0x21F7,0x1995,0x1174,0x1133,0x1132,0x1952,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x2950,0x212F,0x212F,0x212F,0x2130,0x2131,0x1932,0x1113,0x19D7,0x19F8,0x1A19,0x19D7,0x08F2,0x1912,0x2151,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x2930,0x290F,0x2910,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x2930,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x2130,0x2930,0x2110,0x2110,0x2110,0x2130,0x2131,0x2152,0x1912,0x1112,0x21B5,0x2A17,0x21F7,0x21B6,0x1113,0x1912,0x1932,0x2131,0x2931,0x2110,0x2910,0x210F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x292F,0x290F,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1912,0x1112,0x1154,0x11B5,0x2237,0x2238,0x2238,0x19B5,0x0933,0x1112,0x1932,0x1931,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2151,0x1931,0x1111,0x1133,0x19B5,0x2217,0x2217,0x1994,0x1112,0x1932,0x1931,0x2131,0x2110,0x2130,0x2110,0x2130,0x2110,0x2930,0x2930,0x212F,0x210F,0x290F,0x212F,0x210F,0x210F,0x210F,0x2910,0x2930,0x2910,0x2110,0x2110,0x2110,0x2930,0x2930,0x290F,0x210F,0x2110,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x210F,0x2930,0x212F,0x2930,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x2910,0x2110,0x2130,0x2110,0x2131,0x2151,0x2131,0x1931,0x1911,0x1932,0x1953,0x1953,0x1954,0x1995,0x21D6,0x21D6,0x19B6,0x19B5,0x1953,0x1112,0x1111,0x1931,0x2172,0x1932,0x1932,0x1112,0x1132,0x1133,0x1174,0x1995,0x21F7,0x2217,0x19D6,0x19B6,0x1974,0x1112,0x18F1,0x2111,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2930,0x210F,0x292F,0x292F,0x2930,0x290F,0x210F,0x290F,0x210F,0x210F,0x212F,0x2930,0x2110,0x210F,0x2930,0x2930,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x210F,0x2910,0x2930,0x2110,0x2110,0x2910,0x2930,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2110,0x2930,0x210F,0x2110,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x2110,0x2110,0x2110,0x1910,0x1932,0x1174,0x11B6,0x11B7,0x19F7,0x11F7,0x19F7,0x11B6,0x0996,0x0976,0x0976,0x09B7,0x11D8,0x0997,0x11B8,0x19D8,0x0975,0x08F2,0x1111,0x1911,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x212F,0x210F,0x290F,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1912,0x1933,0x1974,0x19B5,0x21F7,0x21F7,0x21F7,0x1995,0x1154,0x1112,0x1911,0x2151,0x2131,0x2951,0x2130,0x2130,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x2110,0x2110,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x2930,0x2930,0x2130,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1132,0x1953,0x1154,0x1995,0x21F7,0x21F7,0x19B5,0x1974,0x1153,0x1132,0x1111,0x1911,0x1951,0x1952,0x1111,0x1111,0x1132,0x1153,0x1195,0x19D6,0x19D7,0x19D7,0x19B6,0x1975,0x1133,0x1912,0x1912,0x1912,0x1911,0x1931,0x1952,0x1932,0x1132,0x0933,0x19B5,0x2217,0x2218,0x2217,0x19B6,0x1154,0x1133,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x212F,0x210F,0x290F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F, + 0x1932,0x1932,0x1932,0x1931,0x2111,0x2110,0x2130,0x2110,0x2930,0x2930,0x2130,0x2130,0x2110,0x2131,0x1931,0x1112,0x1133,0x1174,0x19B6,0x19F7,0x2218,0x19D7,0x1996,0x1134,0x1112,0x1912,0x2131,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x290F,0x210F,0x210F,0x212F,0x210F,0x290F,0x2930,0x290F,0x2930,0x2930,0x2110,0x2930,0x2110,0x2110,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x2910,0x290F,0x2930,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x2930,0x210F,0x292F,0x292F,0x210F,0x292F,0x290F,0x292F,0x290F,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2131,0x2110,0x1911,0x1912,0x0913,0x1A38,0x0A19,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FB,0x01FB,0x01FB,0x01FB,0x01FB,0x01FB,0x01FB,0x01DA,0x01FA,0x01DA,0x01D9,0x09D9,0x09D8,0x09B7,0x0996,0x1196,0x11B6,0x1196,0x11B6,0x1196,0x1195,0x11B6,0x1195,0x1195,0x1195,0x1195,0x1195,0x1995,0x1175,0x1195,0x1195,0x1175,0x1196,0x1196,0x1195,0x1995,0x1995,0x1195,0x1195,0x1995,0x1175,0x1195,0x1195,0x1175,0x1995,0x1175,0x1175,0x1175,0x1175,0x1195,0x1175,0x1195,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1975,0x1175,0x1175,0x1175,0x1195,0x1195,0x1195,0x11B6,0x11B5,0x11B6,0x11D6,0x11D6,0x19F7,0x11B6,0x19B5,0x1174,0x1153,0x0933,0x0913,0x0933,0x0954,0x1195,0x19D6,0x19D6,0x19F7,0x11B6,0x11B5,0x1174,0x1153,0x1132,0x1132,0x1132,0x1132,0x1932,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1932,0x1912,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1952,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1932,0x1932,0x1932,0x1932,0x1931,0x1932,0x1932,0x1932,0x1932,0x1931,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1132,0x1132,0x1133,0x0934,0x0155,0x09B7,0x01D9,0x01FA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01FB,0x01DA,0x01DB,0x01DA,0x01DA,0x01DA,0x01DA,0x01FB,0x01DB,0x01DA,0x01DA,0x01DB,0x01DA,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DB,0x01DB,0x01DA,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01F9,0x09F9,0x09F9,0x11D7,0x11B6,0x1974,0x1111,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x212F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2910,0x2910,0x290F,0x2930,0x2910,0x2910,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2910,0x2930,0x290F,0x2930,0x210F,0x290F,0x290F,0x2910,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x1911,0x1932,0x1133,0x19D6,0x19F8,0x19D7,0x19B6,0x1133,0x1932,0x1931,0x2110,0x2130,0x2930,0x212F,0x292F,0x212F,0x294F,0x292F,0x212F,0x212F,0x2130,0x2131,0x1931,0x1132,0x1154,0x19D6,0x19F7,0x19B6,0x19B5,0x1953,0x1112,0x1931,0x2131,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2131,0x2131,0x1932,0x1133,0x1995,0x11B6,0x19F8,0x1218,0x11D7,0x11F8,0x09D7,0x09D8,0x11F8,0x1A38,0x1A38,0x1A18,0x21F7,0x1174,0x1933,0x1932,0x2111,0x2130,0x2110,0x2110,0x2130,0x210F,0x2110,0x2110,0x210F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2930,0x290F,0x2910,0x290F,0x290F,0x2930,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x2910,0x2910,0x2910,0x290F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x210F,0x2910,0x2930,0x2930,0x2130,0x2130,0x2151,0x2131,0x10F1,0x1112,0x1133,0x1995,0x21F7,0x2217,0x21F7,0x1995,0x1133,0x1112,0x1111,0x1931,0x1930,0x1910,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2150,0x2130,0x2110,0x2131,0x1931,0x1911,0x1112,0x1953,0x21B5,0x21F7,0x2217,0x21F7,0x19B5,0x1154,0x1133,0x1932,0x1931,0x1931,0x1931,0x2130,0x2130,0x2110,0x2110,0x2130,0x210F,0x2150,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2151,0x1911,0x1113,0x19D7,0x19F9,0x19F9,0x19D7,0x08F2,0x1932,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2930,0x212F,0x292F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2131,0x2132,0x1912,0x10F2,0x21B6,0x2A17,0x21F7,0x21B6,0x1113,0x1912,0x1932,0x2111,0x2110,0x2110,0x2910,0x2110,0x290F,0x2910,0x2930,0x2110,0x2110,0x2130,0x212F,0x212F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x1931,0x1111,0x1132,0x1174,0x11B5,0x2238,0x2218,0x19F7,0x19B5,0x1133,0x1132,0x1932,0x1931,0x2110,0x2130,0x2130,0x210F,0x210F,0x2110,0x2130,0x210F,0x1910,0x2131,0x1931,0x1112,0x1132,0x19B5,0x2217,0x2217,0x19B5,0x1112,0x1932,0x1931,0x2131,0x2131,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2910,0x210F,0x2110,0x210F,0x210F,0x290F,0x290F,0x210F,0x2910,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2110,0x210F,0x2910,0x210F,0x212F,0x290F,0x210F,0x2910,0x2110,0x2930,0x2130,0x2131,0x2131,0x2151,0x2131,0x1931,0x1952,0x1932,0x1932,0x1953,0x1953,0x1995,0x21D6,0x21D6,0x21D6,0x21B5,0x1953,0x1132,0x1131,0x1972,0x1952,0x1932,0x1932,0x1112,0x1112,0x1953,0x1174,0x19B5,0x2238,0x19D6,0x19D7,0x21D6,0x1154,0x1112,0x1911,0x2110,0x2110,0x2110,0x2130,0x210F,0x212F,0x210F,0x210F,0x212F,0x292F,0x2930,0x290F,0x210F,0x2930,0x212F,0x210F,0x212F,0x2930,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2110,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x2930,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x210F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2110,0x1910,0x1931,0x1153,0x1174,0x19B6,0x19F7,0x19F7,0x1A18,0x1A17,0x19F7,0x11B7,0x11D8,0x11F8,0x11F8,0x11D8,0x11B8,0x11D8,0x0975,0x08F2,0x1111,0x1911,0x2131,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x292F,0x292F,0x290F,0x2930,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2150,0x2130,0x2131,0x1911,0x1932,0x1953,0x1174,0x19D6,0x21F7,0x21F7,0x21F7,0x19B5,0x1154,0x1112,0x1912,0x2131,0x2131,0x2130,0x2130,0x2130,0x292F,0x292F,0x292F,0x292F,0x290F,0x2930,0x210F,0x2130,0x212F,0x210F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x1932,0x1133,0x1174,0x19B5,0x19D6,0x21F6,0x21D6,0x1974,0x1153,0x1132,0x1111,0x10F1,0x1931,0x1952,0x1931,0x1111,0x1112,0x1153,0x1195,0x19D6,0x19D7,0x19D7,0x21D7,0x1975,0x1934,0x1912,0x1912,0x1912,0x1912,0x1932,0x1952,0x1932,0x1112,0x1133,0x1195,0x21F7,0x2238,0x2217,0x21D6,0x1154,0x1113,0x1112,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2930,0x210F,0x292F,0x292F,0x290F,0x290F,0x2930,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F, + 0x1994,0x1133,0x1953,0x1932,0x1911,0x2131,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2131,0x2131,0x1911,0x1111,0x1133,0x1195,0x19D6,0x19F7,0x19F7,0x21F7,0x1996,0x1134,0x1112,0x1912,0x2131,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x2930,0x210F,0x212F,0x2930,0x292F,0x292F,0x290F,0x290F,0x2910,0x2110,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x290F,0x290F,0x210F,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x290F,0x210F,0x212F,0x212F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2910,0x2910,0x2110,0x2130,0x2130,0x2131,0x2131,0x1911,0x1912,0x1133,0x1A18,0x1219,0x01B9,0x01DA,0x01DA,0x01DA,0x01FA,0x01FB,0x01DA,0x01FB,0x01FB,0x01DB,0x01FB,0x01FB,0x01BA,0x01BA,0x01DA,0x01D9,0x09D9,0x09D8,0x0976,0x0954,0x0954,0x0933,0x1153,0x1153,0x1153,0x1133,0x1133,0x1132,0x1132,0x1132,0x1152,0x1952,0x1132,0x1932,0x1133,0x1133,0x1133,0x1953,0x1133,0x1133,0x1133,0x1112,0x1133,0x1953,0x1933,0x1133,0x1133,0x1133,0x1132,0x1132,0x1933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x1133,0x1133,0x1133,0x1933,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1133,0x1133,0x1153,0x1153,0x0913,0x1174,0x19F6,0x19F7,0x19F7,0x11D6,0x11B5,0x1174,0x0933,0x0913,0x0913,0x0933,0x1154,0x1175,0x19B6,0x19D7,0x19F7,0x11D6,0x1195,0x1174,0x1154,0x1153,0x0933,0x0932,0x1132,0x1112,0x1112,0x1132,0x1132,0x1112,0x1132,0x1132,0x1932,0x1132,0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1132,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1132,0x1112,0x1112,0x1932,0x1932,0x1112,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1132,0x1133,0x0933,0x0954,0x0176,0x01B8,0x01B9,0x01DA,0x01BA,0x01DA,0x01FB,0x01DA,0x01FA,0x01FB,0x01DA,0x01DA,0x01BA,0x01DA,0x01BA,0x01BA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DB,0x01DB,0x01DA,0x01DA,0x01DB,0x01DA,0x01DA,0x01DA,0x01FB,0x01DB,0x01DB,0x01DA,0x01FB,0x01FB,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01D9,0x01D9,0x01F9,0x09F9,0x09F9,0x09D7,0x19D6,0x1173,0x10F1,0x1911,0x2131,0x2130,0x2130,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x2910,0x2910,0x210F,0x2930,0x290F,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2130,0x2130,0x2131,0x1931,0x1932,0x0933,0x19D7,0x1A18,0x19F8,0x1196,0x1133,0x1911,0x2131,0x2131,0x2130,0x2130,0x212F,0x210F,0x212F,0x292F,0x212F,0x212F,0x2130,0x2130,0x1910,0x1911,0x1132,0x1174,0x19F6,0x19F7,0x19B5,0x19B5,0x1973,0x1111,0x1910,0x2110,0x2930,0x2930,0x2930,0x2910,0x2930,0x2130,0x2130,0x2110,0x1931,0x1932,0x1174,0x19D6,0x19F8,0x11D8,0x09B8,0x01B7,0x01B8,0x01B8,0x0197,0x01B8,0x09D8,0x09F8,0x11F8,0x11F7,0x19F7,0x1974,0x1932,0x2131,0x2131,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x2910,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x292F,0x290F,0x2110,0x210F,0x2110,0x2930,0x2930,0x2130,0x2131,0x2131,0x1111,0x1112,0x1132,0x1995,0x2217,0x2238,0x21F7,0x1995,0x1133,0x1112,0x1112,0x1911,0x1931,0x2131,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x214F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1111,0x1132,0x1153,0x1995,0x21F7,0x21F7,0x21F7,0x19B6,0x1133,0x1112,0x1932,0x1911,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1911,0x1113,0x19B7,0x1A19,0x1A19,0x19B7,0x10F3,0x1912,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x210F,0x290F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x292F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2110,0x2130,0x2151,0x2132,0x1112,0x1113,0x21D6,0x21F7,0x2A17,0x21B6,0x1113,0x1932,0x1911,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x210F,0x2110,0x2130,0x2110,0x2110,0x212F,0x292F,0x292F,0x292F,0x212F,0x210F,0x292F,0x292F,0x292F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2131,0x2131,0x1952,0x1132,0x1112,0x1153,0x11B5,0x1A17,0x2217,0x21F7,0x1995,0x1154,0x1112,0x1931,0x1910,0x2151,0x2930,0x2110,0x2110,0x2110,0x2950,0x210F,0x2110,0x1931,0x1931,0x1111,0x1112,0x19B5,0x2A37,0x21F6,0x1994,0x1112,0x1932,0x1952,0x1931,0x2131,0x2131,0x2130,0x2110,0x2110,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2910,0x210F,0x2930,0x2930,0x210F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x290F,0x2930,0x2930,0x2930,0x210F,0x2110,0x2930,0x2130,0x2130,0x2131,0x2131,0x2131,0x1931,0x1951,0x1932,0x1932,0x1932,0x1953,0x1995,0x21D6,0x21D6,0x21F6,0x2195,0x1953,0x1112,0x1932,0x1952,0x1972,0x1932,0x1912,0x1112,0x1132,0x1133,0x1174,0x19B6,0x19B6,0x19D7,0x2218,0x19D6,0x1133,0x1912,0x1911,0x2110,0x2930,0x2930,0x2130,0x212F,0x210F,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2930,0x2110,0x2910,0x2110,0x2910,0x2930,0x210F,0x212F,0x2930,0x210F,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x1911,0x1932,0x1153,0x1174,0x11B6,0x19F7,0x19F7,0x19F7,0x19F7,0x19D7,0x11B7,0x11B7,0x19F8,0x1218,0x11F8,0x11D8,0x1196,0x0913,0x1112,0x10F1,0x1931,0x2151,0x2130,0x2130,0x2130,0x210F,0x212F,0x2130,0x210F,0x212F,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x292F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2110,0x2110,0x212F,0x210F,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2131,0x1931,0x1932,0x1133,0x1974,0x19B5,0x21F7,0x2217,0x21F7,0x19B6,0x1154,0x1112,0x1111,0x1911,0x2131,0x2130,0x2130,0x2130,0x212F,0x292F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x2110,0x2930,0x210F,0x290F,0x292F,0x292F,0x210F,0x290F,0x210F,0x2930,0x2930,0x212F,0x2110,0x2110,0x2130,0x2130,0x2131,0x2151,0x2151,0x2132,0x1912,0x1132,0x1974,0x19B6,0x21F6,0x19D6,0x19B6,0x1995,0x1133,0x1132,0x10F1,0x10F0,0x1911,0x2152,0x1951,0x1111,0x1132,0x1133,0x1175,0x19F7,0x19D7,0x19D7,0x19D7,0x1995,0x1934,0x1933,0x1932,0x2132,0x1932,0x1932,0x1932,0x1132,0x1132,0x0933,0x1195,0x21F7,0x2217,0x19F7,0x19D6,0x1174,0x1113,0x10F2,0x1111,0x2151,0x2151,0x2130,0x210F,0x210F,0x210F,0x2930,0x2930,0x290F,0x2930,0x210F,0x2110,0x2930,0x2930,0x210F,0x212F,0x212F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F, + 0x21F6,0x1175,0x1154,0x1953,0x1932,0x1911,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x2131,0x1111,0x1132,0x1133,0x1995,0x19B6,0x21F7,0x21F8,0x19D7,0x1996,0x1134,0x1933,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x2910,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x212F,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2930,0x2110,0x2910,0x2110,0x2130,0x2110,0x2130,0x2110,0x1910,0x1911,0x0912,0x19F7,0x1219,0x09D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DB,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01D9,0x01B8,0x09B8,0x09B7,0x0134,0x0913,0x0932,0x1132,0x1132,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1931,0x1911,0x1931,0x1932,0x1912,0x1912,0x1932,0x1911,0x1912,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1112,0x1112,0x0933,0x1195,0x1A17,0x19F7,0x19D6,0x11D6,0x11B5,0x1174,0x1133,0x0913,0x0913,0x0934,0x0934,0x1175,0x19D7,0x19F7,0x19F7,0x11D6,0x11B6,0x1195,0x1195,0x0974,0x0953,0x0953,0x0953,0x0933,0x1153,0x1153,0x1153,0x1153,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x0932,0x1133,0x0933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x1132,0x1133,0x1153,0x1132,0x1133,0x1133,0x1153,0x0933,0x0933,0x0933,0x0933,0x0933,0x0933,0x0953,0x1153,0x1153,0x1153,0x1153,0x1174,0x1175,0x0976,0x09B7,0x09D8,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DB,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DB,0x01DB,0x01DB,0x01DB,0x01DB,0x01DB,0x01DA,0x01DA,0x01DA,0x01DA,0x01DB,0x01DB,0x01DB,0x01DA,0x01DA,0x01DA,0x01DB,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D8,0x11F8,0x19F7,0x1174,0x1111,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2910,0x2930,0x2910,0x290F,0x2910,0x2910,0x290F,0x2930,0x210F,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x212F,0x2130,0x2110,0x2130,0x2130,0x1931,0x1932,0x0933,0x19D6,0x1A18,0x11D7,0x19B6,0x1133,0x1911,0x1931,0x2131,0x2110,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1132,0x1154,0x19D6,0x2217,0x19D6,0x19B5,0x1973,0x10F1,0x1931,0x2130,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2130,0x2131,0x1931,0x1132,0x1154,0x11D7,0x11D8,0x09B8,0x01B8,0x01B8,0x01B8,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x09F8,0x09D8,0x11D7,0x1195,0x1132,0x1911,0x2111,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x210F,0x2930,0x210F,0x210F,0x290F,0x210F,0x2910,0x2930,0x210F,0x2110,0x2110,0x2110,0x210F,0x2910,0x290F,0x210F,0x210F,0x212F,0x210F,0x290F,0x292F,0x292F,0x292F,0x290F,0x210F,0x290F,0x290F,0x2910,0x210F,0x2110,0x2110,0x2931,0x2131,0x2131,0x1911,0x10F1,0x1112,0x1174,0x2217,0x2217,0x2217,0x19B6,0x1134,0x1113,0x1112,0x1111,0x1931,0x1910,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2130,0x2131,0x1931,0x1911,0x1132,0x1154,0x1175,0x21F7,0x2218,0x21F7,0x19B6,0x1154,0x1133,0x1932,0x1911,0x1931,0x1910,0x2110,0x2130,0x2930,0x2130,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2131,0x1911,0x1113,0x19B7,0x19F9,0x19F9,0x19B7,0x08F2,0x1912,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2910,0x2910,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2130,0x210F,0x210F,0x2130,0x2130,0x2131,0x1911,0x1112,0x1134,0x21F7,0x21F7,0x21F7,0x21B6,0x1133,0x1912,0x1931,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x2930,0x2110,0x2110,0x2130,0x2130,0x292F,0x212F,0x210F,0x212F,0x212F,0x210F,0x292F,0x292F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2131,0x2172,0x2152,0x1111,0x0912,0x0933,0x19D6,0x19F7,0x2217,0x19F7,0x1174,0x1153,0x1132,0x1911,0x2151,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2131,0x1931,0x1112,0x1112,0x19B5,0x2A17,0x21F6,0x1995,0x1112,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2110,0x210F,0x2910,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2910,0x2110,0x2910,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x290F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x2930,0x212F,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x1930,0x1931,0x1931,0x1931,0x1932,0x1933,0x1953,0x1975,0x21D6,0x21D6,0x21D6,0x1995,0x1133,0x1132,0x1952,0x1952,0x1932,0x1932,0x1911,0x1932,0x1133,0x1153,0x1174,0x11B6,0x19D7,0x1A18,0x19F7,0x1995,0x1133,0x1911,0x2111,0x2110,0x2130,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x210F,0x210F,0x212F,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x210F,0x2110,0x1910,0x1911,0x1132,0x1153,0x1174,0x1195,0x19B6,0x11B6,0x1196,0x1196,0x0976,0x0976,0x11B7,0x11F8,0x11F8,0x11F8,0x11D7,0x0954,0x0912,0x1112,0x1911,0x2131,0x2131,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2910,0x290F,0x292F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2110,0x2110,0x2110,0x2131,0x2131,0x1932,0x1932,0x1133,0x1174,0x19D6,0x19F7,0x2217,0x21F7,0x19B5,0x1154,0x1112,0x1911,0x1911,0x2131,0x2130,0x2130,0x2130,0x2930,0x2930,0x212F,0x2930,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2110,0x2130,0x210F,0x2130,0x210F,0x2930,0x2930,0x290F,0x2910,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x2132,0x1932,0x1932,0x1133,0x1954,0x19B5,0x19F6,0x19D6,0x19D6,0x1995,0x1154,0x1132,0x1111,0x1911,0x1910,0x1931,0x1931,0x1931,0x1132,0x1153,0x1194,0x19D6,0x19F7,0x19D7,0x19D7,0x1996,0x1954,0x1933,0x1912,0x1932,0x2132,0x1932,0x1932,0x1932,0x1132,0x1133,0x1175,0x21F7,0x2217,0x19F7,0x19D6,0x1154,0x1133,0x1112,0x1111,0x1931,0x2151,0x2951,0x2130,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2910,0x290F,0x210F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F, + 0x19F7,0x11D6,0x1195,0x1134,0x1132,0x1932,0x1911,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x2151,0x1931,0x1911,0x1112,0x1133,0x1174,0x19B6,0x21D7,0x21F8,0x19D7,0x1995,0x1134,0x1113,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2130,0x2930,0x2110,0x2930,0x2930,0x290F,0x210F,0x290F,0x290F,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x2930,0x212F,0x210F,0x290F,0x290F,0x292F,0x292F,0x210F,0x292F,0x290F,0x2910,0x2930,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x1910,0x1911,0x1953,0x19D7,0x1219,0x09D9,0x01D9,0x01B9,0x01D9,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01B9,0x01B9,0x01B8,0x09D8,0x11F8,0x11D7,0x0113,0x0932,0x1132,0x1131,0x1931,0x1931,0x1910,0x1910,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2131,0x1910,0x2131,0x1931,0x1911,0x1911,0x2131,0x2111,0x2131,0x1911,0x1911,0x2111,0x2131,0x1911,0x2131,0x2131,0x2110,0x1910,0x2111,0x2131,0x2131,0x1931,0x1910,0x2130,0x2131,0x2110,0x2131,0x1911,0x2131,0x2111,0x2131,0x1911,0x2131,0x1931,0x2131,0x2131,0x2131,0x1931,0x1931,0x1931,0x1932,0x1112,0x1153,0x1174,0x11B6,0x19D7,0x19F7,0x19D6,0x19D6,0x1154,0x0933,0x0933,0x0913,0x0934,0x0954,0x1175,0x11B6,0x19F7,0x19F7,0x19F7,0x11D6,0x11B6,0x11B6,0x11B5,0x11B5,0x11B5,0x11B5,0x1195,0x11B5,0x11B6,0x1195,0x1995,0x1995,0x1995,0x19B5,0x1995,0x1995,0x1995,0x19B5,0x1995,0x19B6,0x1995,0x19B5,0x1195,0x1995,0x1996,0x1195,0x1195,0x1996,0x1195,0x1195,0x11B5,0x1195,0x1195,0x11B5,0x1195,0x1995,0x1995,0x1195,0x1195,0x19B5,0x1995,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x1995,0x19B5,0x19B5,0x19B5,0x1995,0x19B5,0x19B5,0x19B5,0x11B5,0x19B5,0x19B5,0x19D5,0x19D5,0x19D5,0x19D5,0x19D5,0x19D6,0x19D5,0x19D5,0x19D6,0x11D6,0x11D7,0x09B7,0x09F8,0x01D9,0x01FA,0x01DA,0x01B9,0x01BA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01DB,0x01FB,0x01DB,0x01DB,0x01DA,0x01DA,0x01FB,0x01DA,0x01DB,0x01DA,0x01FB,0x01DA,0x01DB,0x01DA,0x01FB,0x01DA,0x01DB,0x01DA,0x01FB,0x01DA,0x01DB,0x01DB,0x01DA,0x01DA,0x01DA,0x01DA,0x01FB,0x01FB,0x01FB,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01F9,0x09F9,0x09F8,0x19F7,0x1174,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x2910,0x2910,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x2930,0x290F,0x210F,0x212F,0x210F,0x2110,0x2130,0x2130,0x1931,0x1932,0x0933,0x19F7,0x1A18,0x11D7,0x1196,0x1133,0x1932,0x2131,0x2110,0x2130,0x2130,0x210F,0x2930,0x210F,0x210F,0x292F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1132,0x1154,0x19D6,0x19F7,0x11B5,0x19B5,0x1953,0x1111,0x1931,0x2131,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x2110,0x2131,0x1911,0x1132,0x1154,0x11D7,0x11D8,0x09B8,0x01B8,0x01D9,0x01FA,0x01D9,0x01FA,0x01F9,0x01F9,0x09F9,0x09F9,0x11F9,0x11F8,0x1175,0x1112,0x1911,0x2111,0x2110,0x2110,0x2110,0x2130,0x2930,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x2910,0x290F,0x210F,0x2910,0x2930,0x2110,0x2930,0x2110,0x210F,0x210F,0x290F,0x2930,0x2930,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x212F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x1111,0x1112,0x1174,0x21F7,0x2217,0x21F7,0x19B6,0x1154,0x0913,0x1112,0x1932,0x1931,0x2131,0x2110,0x2130,0x2130,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2150,0x2130,0x2130,0x1910,0x1931,0x1112,0x1133,0x1974,0x1995,0x21F7,0x21F8,0x21F7,0x19B6,0x1154,0x1133,0x1932,0x1931,0x1931,0x2130,0x2130,0x2110,0x210F,0x2930,0x212F,0x2930,0x210F,0x212F,0x292F,0x210F,0x212F,0x2130,0x2110,0x210F,0x2130,0x2130,0x2130,0x210F,0x212F,0x2130,0x2131,0x1911,0x1112,0x19B7,0x1A19,0x19F9,0x19B7,0x10F2,0x1911,0x2131,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x290F,0x290F,0x2910,0x290F,0x210F,0x2910,0x2910,0x2910,0x2110,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x2110,0x2930,0x2930,0x290F,0x210F,0x210F,0x212F,0x2930,0x2930,0x210F,0x210F,0x210F,0x292F,0x2930,0x2930,0x2130,0x2150,0x2131,0x1911,0x1112,0x1154,0x21D7,0x21F7,0x21F7,0x1995,0x1133,0x1932,0x1911,0x2110,0x2110,0x2930,0x2930,0x2930,0x210F,0x210F,0x2110,0x2130,0x2110,0x2130,0x2930,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x2930,0x2110,0x20EF,0x2110,0x2130,0x2972,0x2172,0x1931,0x10F1,0x1132,0x1153,0x11B5,0x19F7,0x2217,0x19D6,0x1174,0x1132,0x1931,0x1931,0x2151,0x2130,0x2130,0x2110,0x2110,0x210F,0x1910,0x2131,0x1931,0x1932,0x1132,0x21D5,0x2A37,0x21F6,0x1994,0x1112,0x1111,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2110,0x2910,0x2930,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x210F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2151,0x2131,0x1931,0x1931,0x1932,0x1932,0x1953,0x21B5,0x21F7,0x21F7,0x19B6,0x1994,0x1112,0x1132,0x1952,0x1952,0x1932,0x1931,0x1932,0x1932,0x1132,0x1153,0x1154,0x19D7,0x1A18,0x19F7,0x19B7,0x1134,0x1912,0x2111,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2910,0x2910,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x2130,0x2130,0x2131,0x1911,0x1912,0x1912,0x1133,0x1153,0x1174,0x1174,0x1174,0x1154,0x0955,0x0955,0x0956,0x11B7,0x11F8,0x11F8,0x19F8,0x11B6,0x0954,0x1113,0x10F1,0x1911,0x2131,0x2131,0x2110,0x2110,0x2130,0x2110,0x210F,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2131,0x1911,0x1932,0x1133,0x1154,0x19B6,0x19F7,0x19F7,0x19F7,0x19B5,0x1153,0x1112,0x10F1,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2131,0x2111,0x1911,0x1111,0x1932,0x1133,0x1974,0x19B6,0x19D6,0x19F6,0x19D6,0x1995,0x1133,0x1132,0x1932,0x1932,0x1931,0x1931,0x1931,0x1932,0x1132,0x1133,0x1174,0x19D6,0x19F7,0x19F7,0x19D7,0x1996,0x1154,0x1133,0x1112,0x1912,0x1912,0x1932,0x1932,0x1912,0x1133,0x1153,0x1175,0x21F7,0x2217,0x19F7,0x19B6,0x1154,0x1133,0x1112,0x1912,0x1931,0x2151,0x2151,0x2130,0x210F,0x210F,0x210F,0x2930,0x2930,0x290F,0x290F,0x210F,0x2930,0x2910,0x2910,0x210F,0x2910,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F, + 0x11F8,0x11D8,0x11B7,0x1175,0x1154,0x1132,0x1931,0x1931,0x2131,0x2110,0x2130,0x2930,0x2110,0x2130,0x2110,0x2131,0x2131,0x2131,0x1911,0x1112,0x1133,0x1154,0x19B6,0x19D7,0x21F8,0x21D7,0x1996,0x1154,0x1132,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2110,0x212F,0x2930,0x290F,0x290F,0x210F,0x290F,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2910,0x290F,0x290F,0x2910,0x2910,0x210F,0x290F,0x2110,0x210F,0x290F,0x210F,0x290F,0x292F,0x212F,0x2110,0x2110,0x290F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x2910,0x2930,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2110,0x1911,0x1911,0x1953,0x1175,0x1A18,0x09D8,0x09D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01B9,0x09D9,0x09F8,0x1A18,0x11B6,0x0933,0x1152,0x1131,0x1951,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x2110,0x2110,0x2110,0x2111,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2131,0x2130,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1911,0x1911,0x1132,0x1133,0x1175,0x19D6,0x19F7,0x19F7,0x19D6,0x1996,0x1155,0x0934,0x0913,0x0913,0x0934,0x0954,0x1175,0x19B6,0x19F7,0x19F7,0x1A17,0x19F7,0x11F6,0x19F6,0x19F6,0x19F6,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19D6,0x19D6,0x21F7,0x21F7,0x21F6,0x2217,0x21F7,0x21F7,0x21F7,0x21F7,0x21F7,0x2217,0x21F7,0x2217,0x21F7,0x2217,0x19F7,0x21F7,0x21F7,0x21F7,0x21F7,0x2217,0x2217,0x2217,0x21F7,0x2217,0x21F7,0x2217,0x2217,0x2217,0x2217,0x2217,0x21F7,0x2217,0x2217,0x2217,0x2217,0x2217,0x21F6,0x2217,0x2217,0x2217,0x2217,0x2217,0x2217,0x19F6,0x19F6,0x1A16,0x19F6,0x19F6,0x19F6,0x19F6,0x19F6,0x19F6,0x19F6,0x11D6,0x11D7,0x11D7,0x09D7,0x09D8,0x01D9,0x01D9,0x01B9,0x01B9,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01FB,0x01DA,0x01FB,0x01DA,0x01FB,0x01DA,0x01FB,0x01DA,0x01FB,0x01DA,0x01DB,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x01D9,0x09F9,0x11F8,0x11D7,0x1175,0x1112,0x1911,0x2131,0x2131,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2910,0x2910,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x2930,0x210F,0x2910,0x210F,0x2930,0x290F,0x290F,0x2930,0x2130,0x2110,0x2130,0x2130,0x2131,0x1932,0x1133,0x19D7,0x1A18,0x11D7,0x11B6,0x1133,0x1932,0x2131,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x292F,0x292F,0x2930,0x2130,0x2130,0x2131,0x1911,0x1112,0x1154,0x19D6,0x19F7,0x19B6,0x1995,0x1973,0x1111,0x2131,0x2130,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1133,0x1175,0x11B7,0x09D8,0x01B9,0x01B9,0x01D9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01D9,0x09D9,0x09F9,0x11D8,0x1195,0x1112,0x2131,0x2110,0x2110,0x2930,0x2930,0x2110,0x2930,0x210F,0x210F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x210F,0x2910,0x2910,0x292F,0x210F,0x2910,0x2110,0x210F,0x212F,0x290F,0x290F,0x290F,0x292F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2930,0x210F,0x292F,0x290F,0x292F,0x210F,0x212F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2111,0x2131,0x1932,0x1112,0x1133,0x21D6,0x21F7,0x2218,0x19B6,0x0914,0x08F3,0x1112,0x1112,0x1952,0x1931,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1112,0x1154,0x19B6,0x21D7,0x2218,0x21D7,0x19B6,0x1134,0x1113,0x1112,0x1931,0x2131,0x2131,0x2130,0x2110,0x2110,0x210F,0x290F,0x290F,0x2930,0x290F,0x292F,0x292F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2930,0x210F,0x210F,0x2130,0x2130,0x2131,0x1911,0x10F2,0x19B7,0x19F8,0x19F9,0x19B7,0x10F2,0x1931,0x1910,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x2910,0x290F,0x2910,0x2910,0x210F,0x210F,0x2110,0x2110,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x210F,0x210F,0x2930,0x292F,0x290F,0x290F,0x210F,0x290F,0x2930,0x212F,0x210F,0x210F,0x292F,0x212F,0x2930,0x2930,0x2130,0x2131,0x1931,0x1112,0x1133,0x1155,0x21F7,0x21D7,0x21F7,0x1995,0x1933,0x1932,0x2131,0x2110,0x2110,0x2930,0x2930,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x292F,0x210F,0x212F,0x292F,0x292F,0x292F,0x210F,0x212F,0x2130,0x212F,0x2130,0x212F,0x212F,0x210F,0x2130,0x2930,0x2130,0x2110,0x20EF,0x2110,0x2951,0x2151,0x2131,0x1911,0x1131,0x0932,0x1194,0x11B5,0x19F7,0x2217,0x19B5,0x1153,0x1132,0x1931,0x2131,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x1911,0x1952,0x1132,0x1112,0x19B5,0x2A17,0x21D6,0x19B5,0x1112,0x1932,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x2930,0x2130,0x2130,0x210F,0x2930,0x2930,0x290F,0x2910,0x2930,0x2110,0x2110,0x2110,0x2930,0x210F,0x2110,0x2930,0x212F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1132,0x1974,0x19B6,0x21F7,0x19B6,0x1995,0x1153,0x1132,0x1952,0x1952,0x1931,0x1931,0x1932,0x1932,0x1952,0x1153,0x0954,0x19B6,0x11D7,0x2218,0x19B7,0x1154,0x1112,0x1911,0x2111,0x2110,0x2110,0x210F,0x210F,0x290F,0x212F,0x2930,0x290F,0x290F,0x212F,0x2930,0x212F,0x212F,0x210F,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x2930,0x2130,0x2110,0x2111,0x1911,0x1911,0x1932,0x1132,0x1132,0x1953,0x1153,0x1154,0x1154,0x1155,0x0935,0x0975,0x11B7,0x19F8,0x1A18,0x1A17,0x11D6,0x0954,0x0912,0x1112,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x2111,0x1931,0x1112,0x1153,0x1154,0x1195,0x19F7,0x19F7,0x21F7,0x19D6,0x1154,0x1112,0x1912,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x1911,0x1911,0x10F2,0x1112,0x1133,0x1995,0x19B6,0x19D6,0x19F7,0x19D6,0x1995,0x1153,0x1132,0x1112,0x1932,0x1932,0x1931,0x1952,0x1932,0x1132,0x1153,0x1174,0x19D6,0x19F7,0x19F7,0x19D6,0x1995,0x1154,0x1133,0x1112,0x1912,0x1912,0x1932,0x1932,0x1932,0x1112,0x1154,0x1195,0x19F6,0x2217,0x19F7,0x19D6,0x1155,0x1133,0x1112,0x1112,0x1932,0x2131,0x2131,0x2130,0x210F,0x210F,0x210F,0x212F,0x2130,0x2930,0x290F,0x2930,0x2910,0x2910,0x290F,0x290F,0x2930,0x2910,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x292F, + 0x11F9,0x11F8,0x11D8,0x11B7,0x1175,0x1153,0x1132,0x1931,0x1911,0x2131,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2131,0x2151,0x2131,0x1911,0x1112,0x1133,0x1154,0x1996,0x21F7,0x21F8,0x19D7,0x19B6,0x0933,0x1133,0x1952,0x1931,0x1930,0x2110,0x2110,0x2130,0x212F,0x212F,0x292F,0x212F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x2110,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x212F,0x2930,0x2930,0x290F,0x210F,0x2930,0x2930,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x2930,0x290F,0x2930,0x2110,0x2110,0x2110,0x2110,0x292F,0x212F,0x210F,0x210F,0x212F,0x292F,0x290F,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1953,0x1134,0x19B7,0x11D8,0x09D9,0x09D9,0x09D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01B9,0x01DA,0x01DA,0x01D9,0x01D9,0x09D9,0x11F9,0x09D8,0x19D7,0x1175,0x1153,0x1152,0x1952,0x1951,0x2151,0x2151,0x2130,0x2130,0x212F,0x212F,0x2930,0x2930,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2131,0x1911,0x1111,0x1112,0x1133,0x1174,0x19B6,0x19D7,0x19B7,0x19D7,0x1196,0x1154,0x1154,0x0913,0x1134,0x0933,0x1154,0x1174,0x1195,0x11B5,0x11D6,0x19F6,0x19F6,0x1A17,0x1A17,0x19F6,0x19F6,0x19F6,0x19D6,0x19D6,0x19D6,0x19B6,0x19D6,0x19D6,0x19B6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19B6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x21D6,0x19D6,0x21D6,0x21D6,0x19D6,0x21F6,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19F6,0x19D6,0x19D6,0x19D6,0x19D6,0x19B5,0x19D6,0x19D5,0x11B5,0x19D5,0x19D6,0x19F6,0x19F6,0x19F6,0x11D6,0x11D6,0x19F7,0x11D7,0x09B7,0x09D8,0x09F9,0x01D9,0x01DA,0x01B9,0x01B9,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01FB,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x021B,0x01FA,0x01FA,0x01FA,0x01DA,0x01D9,0x09F9,0x09F9,0x19F8,0x1175,0x1112,0x1911,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x1911,0x1111,0x0933,0x19D6,0x19F8,0x19F7,0x1196,0x1132,0x1111,0x1911,0x2110,0x2110,0x2130,0x2130,0x2930,0x292F,0x292F,0x210F,0x210F,0x2930,0x2130,0x2131,0x1931,0x1132,0x1154,0x19F6,0x19F7,0x19D6,0x1995,0x1974,0x1112,0x2131,0x2131,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1132,0x11B5,0x1A18,0x09F9,0x09D9,0x01B9,0x01B9,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01B9,0x01D9,0x09F9,0x11F8,0x19B6,0x10F2,0x1911,0x2111,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x212F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x210F,0x2910,0x290F,0x290F,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2130,0x2130,0x210F,0x2130,0x2110,0x2930,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2111,0x1931,0x1912,0x1112,0x19B5,0x2217,0x21F7,0x21D7,0x1134,0x08F3,0x10F2,0x1132,0x1931,0x1951,0x2131,0x2130,0x2130,0x2130,0x210F,0x212F,0x2950,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2151,0x1931,0x1952,0x1952,0x1113,0x1154,0x1995,0x21D7,0x2218,0x21F7,0x19B6,0x1154,0x1113,0x1112,0x1932,0x1931,0x2151,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2131,0x1931,0x1113,0x19D7,0x1A19,0x1A19,0x19B7,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x212F,0x212F,0x290F,0x290F,0x212F,0x210F,0x290F,0x290F,0x290F,0x2110,0x2130,0x2130,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x1931,0x1932,0x1933,0x1134,0x21D7,0x21D7,0x21D7,0x21D6,0x1954,0x1912,0x1932,0x2131,0x2131,0x2130,0x2110,0x2930,0x2110,0x2910,0x210F,0x2930,0x2930,0x2110,0x2130,0x292F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2930,0x2130,0x20F0,0x20F0,0x2110,0x2110,0x2130,0x2130,0x2131,0x1931,0x1132,0x1153,0x0954,0x19B6,0x2238,0x21F7,0x1994,0x1132,0x1932,0x1931,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x1931,0x1932,0x1932,0x1112,0x21B5,0x2A17,0x21F6,0x1974,0x1112,0x1932,0x1931,0x1931,0x2131,0x2110,0x2130,0x2110,0x2930,0x2110,0x210F,0x2130,0x210F,0x210F,0x212F,0x210F,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x20EF,0x20EF,0x210F,0x2930,0x2930,0x292F,0x292F,0x210F,0x212F,0x292F,0x210F,0x2130,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1112,0x1112,0x1154,0x19B6,0x19B6,0x19B6,0x1174,0x1132,0x1952,0x1932,0x1952,0x1931,0x1931,0x1931,0x1932,0x1153,0x0933,0x1196,0x19D7,0x19F8,0x19B7,0x1154,0x1112,0x1931,0x2111,0x2110,0x2110,0x210F,0x210F,0x2910,0x210F,0x212F,0x290F,0x290F,0x2930,0x212F,0x2130,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2110,0x2110,0x2130,0x2110,0x2111,0x1911,0x1911,0x1932,0x1932,0x1932,0x1932,0x1953,0x1153,0x1974,0x1154,0x0954,0x0975,0x11D7,0x1A18,0x1A18,0x1A17,0x11B6,0x1133,0x0912,0x1111,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x212F,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2151,0x1932,0x1932,0x1132,0x1154,0x1195,0x19D6,0x2217,0x19F7,0x1995,0x1134,0x08F2,0x1112,0x1952,0x2151,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2131,0x2131,0x2131,0x2132,0x1932,0x1112,0x1113,0x1134,0x1154,0x1996,0x19D7,0x21F7,0x19D6,0x1195,0x1174,0x1132,0x1111,0x1111,0x1932,0x1932,0x1952,0x1932,0x1953,0x1174,0x1174,0x11B6,0x19F7,0x2217,0x19D6,0x1995,0x1154,0x1153,0x1132,0x1912,0x1932,0x1932,0x1932,0x1912,0x1133,0x1154,0x1174,0x19D6,0x2217,0x2217,0x19D6,0x1174,0x1134,0x1113,0x1932,0x1931,0x2131,0x2131,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130, + 0x09D9,0x09D8,0x11F9,0x11D8,0x11B6,0x1175,0x1153,0x1132,0x1931,0x1931,0x2131,0x2131,0x2131,0x2110,0x2130,0x2110,0x2110,0x2131,0x2130,0x1911,0x1911,0x1112,0x1133,0x1975,0x19B6,0x21F7,0x21F7,0x19F7,0x19B6,0x1154,0x1133,0x1132,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x210F,0x292F,0x292F,0x212F,0x2930,0x2930,0x2130,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2930,0x2110,0x2910,0x290F,0x290F,0x2910,0x210F,0x2110,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x2110,0x2130,0x2130,0x2131,0x1931,0x1952,0x0912,0x1175,0x19F8,0x11D8,0x09D8,0x09D9,0x09D9,0x09D9,0x09FA,0x01B9,0x01D9,0x09DA,0x01D9,0x09D9,0x01D9,0x09D8,0x09B7,0x11B7,0x1195,0x1154,0x1132,0x1952,0x1951,0x2151,0x2150,0x2150,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x210F,0x2110,0x2130,0x2110,0x2110,0x2930,0x2110,0x2130,0x2930,0x2110,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2930,0x2110,0x2130,0x2110,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x1910,0x1911,0x1111,0x1112,0x1153,0x1174,0x1996,0x19D7,0x19B7,0x19D7,0x1996,0x1155,0x0934,0x0933,0x0913,0x1134,0x1154,0x1154,0x1174,0x1194,0x11B5,0x1194,0x11B5,0x11B5,0x11B5,0x11B5,0x1195,0x1174,0x1995,0x1194,0x1995,0x1995,0x1194,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1175,0x1194,0x1995,0x1995,0x1175,0x1195,0x1995,0x1195,0x1195,0x1995,0x1995,0x1194,0x1194,0x1174,0x1174,0x1194,0x1995,0x1174,0x1974,0x1174,0x1174,0x1174,0x1194,0x1174,0x1174,0x1195,0x1195,0x1174,0x1194,0x1995,0x1995,0x1194,0x1194,0x1194,0x1994,0x1994,0x1994,0x1194,0x19B4,0x1995,0x1995,0x19B5,0x1194,0x11B5,0x11B5,0x11B5,0x11B5,0x11B6,0x09B6,0x09B7,0x0A19,0x01F9,0x01D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01D9,0x09D8,0x11D8,0x1175,0x1112,0x1932,0x2151,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x292F,0x292F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2110,0x210F,0x2910,0x2910,0x210F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x2131,0x1911,0x1912,0x1133,0x11B6,0x1A18,0x19F8,0x1196,0x1133,0x1911,0x2131,0x2110,0x2130,0x2930,0x2110,0x2930,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2151,0x1931,0x1132,0x1154,0x19D6,0x2217,0x19B6,0x19B5,0x1953,0x10F1,0x2131,0x2151,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x1911,0x1132,0x1195,0x1A38,0x09F8,0x01D9,0x01B9,0x01DA,0x01DA,0x01DA,0x01FA,0x01B9,0x01DA,0x01DA,0x09D9,0x11F9,0x19F8,0x1175,0x1112,0x2131,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x2130,0x2110,0x2910,0x2110,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x290F,0x290F,0x210F,0x2910,0x290F,0x210F,0x2110,0x2110,0x210F,0x290F,0x290F,0x210F,0x212F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x292F,0x290F,0x292F,0x292F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2110,0x2111,0x1932,0x1111,0x1133,0x21F6,0x2217,0x2A18,0x1155,0x08F3,0x10F2,0x1112,0x1931,0x1911,0x1910,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2950,0x292F,0x2950,0x212F,0x212F,0x210F,0x1930,0x1931,0x1931,0x1932,0x1153,0x1133,0x1995,0x21F7,0x21F7,0x21F8,0x1996,0x1154,0x1133,0x1932,0x1911,0x1931,0x2131,0x2130,0x2130,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x212F,0x210F,0x2110,0x212F,0x210F,0x210F,0x2930,0x2110,0x2131,0x1911,0x1112,0x19D7,0x1A18,0x19F9,0x19B7,0x0912,0x1931,0x2151,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2110,0x2930,0x2930,0x2110,0x2110,0x2130,0x2930,0x2130,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x292F,0x210F,0x290F,0x2930,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x212F,0x2130,0x2130,0x1930,0x1931,0x1932,0x1133,0x1175,0x19B7,0x19D7,0x21D7,0x1996,0x1133,0x1912,0x1931,0x2131,0x2130,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x2930,0x2930,0x2110,0x210F,0x212F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x210F,0x2110,0x2130,0x2130,0x1931,0x1931,0x1132,0x1133,0x1175,0x21F7,0x2217,0x19B5,0x1133,0x1112,0x1931,0x2131,0x2110,0x2130,0x2110,0x2130,0x1910,0x1911,0x1931,0x1132,0x1132,0x19B5,0x2A17,0x21F6,0x1994,0x1112,0x1112,0x1931,0x2131,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x210F,0x2930,0x210F,0x2110,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2110,0x210F,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x20EF,0x210F,0x290F,0x210F,0x290F,0x292F,0x292F,0x290F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2131,0x1931,0x1911,0x1112,0x1133,0x19B6,0x19D7,0x19B6,0x19B5,0x1153,0x1152,0x1952,0x1931,0x1931,0x2131,0x1931,0x1931,0x1952,0x0913,0x1175,0x19F7,0x19D8,0x19D7,0x1155,0x1112,0x1911,0x2111,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x210F,0x210F,0x212F,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x290F,0x292F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2930,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2130,0x2110,0x2110,0x2131,0x1911,0x1911,0x1911,0x1911,0x1932,0x1952,0x1953,0x1133,0x1133,0x0933,0x0954,0x19F7,0x1A17,0x1A17,0x2217,0x1195,0x1154,0x1112,0x1111,0x1931,0x2131,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x212F,0x210F,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2950,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1132,0x1153,0x1154,0x1195,0x19D6,0x21F7,0x21F7,0x1195,0x1154,0x0912,0x1132,0x1952,0x1951,0x1930,0x1930,0x1951,0x1930,0x1930,0x1930,0x1910,0x2130,0x1930,0x2131,0x2131,0x1911,0x2111,0x2111,0x2111,0x2131,0x2131,0x2131,0x1911,0x2131,0x1931,0x1912,0x1112,0x1112,0x1133,0x1134,0x1175,0x19B6,0x19F7,0x19F7,0x19D6,0x19B5,0x1974,0x1133,0x1112,0x1932,0x1931,0x1932,0x1912,0x1932,0x1953,0x1154,0x1174,0x11B6,0x19F7,0x19F7,0x19D6,0x1995,0x1154,0x1133,0x1132,0x1112,0x1932,0x1932,0x1932,0x1932,0x1133,0x1133,0x1175,0x19D6,0x2217,0x2217,0x19D6,0x1154,0x0933,0x1133,0x1132,0x1932,0x1931,0x2131,0x2130,0x2110,0x210F,0x210F,0x210F,0x2930,0x2130,0x210F,0x2110,0x2110,0x210F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130, + 0x09D8,0x09D8,0x09D8,0x11F8,0x11F8,0x1196,0x1175,0x1133,0x1132,0x1932,0x1911,0x2111,0x2131,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2131,0x2131,0x1931,0x1953,0x1133,0x1174,0x19B6,0x19F7,0x1A17,0x2238,0x11B6,0x0933,0x1133,0x1132,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x212F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x292F,0x292F,0x2930,0x2110,0x2930,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x2910,0x210F,0x210F,0x212F,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x2930,0x2910,0x210F,0x2930,0x2910,0x290F,0x2910,0x2910,0x2910,0x2110,0x2910,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x2930,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2130,0x2130,0x2110,0x1911,0x1911,0x10F1,0x0933,0x19F7,0x11F7,0x09B7,0x09D8,0x09B8,0x11F9,0x09B9,0x09D9,0x09D9,0x09B9,0x09B8,0x09B8,0x09F8,0x11F8,0x11F8,0x19D7,0x0954,0x1133,0x1952,0x1951,0x2151,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2110,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x2130,0x210F,0x2110,0x210F,0x210F,0x2110,0x2930,0x210F,0x2110,0x210F,0x2110,0x2130,0x2110,0x2110,0x2930,0x210F,0x210F,0x2110,0x2130,0x2110,0x210F,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2131,0x1931,0x1931,0x1112,0x1133,0x1154,0x1996,0x19B7,0x19D7,0x19D7,0x1175,0x1155,0x0934,0x0933,0x1133,0x1133,0x1153,0x1153,0x1153,0x1153,0x0953,0x0953,0x0953,0x0953,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1133,0x1153,0x1153,0x1133,0x1153,0x1133,0x1133,0x1153,0x1153,0x1153,0x1153,0x1132,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x1132,0x1132,0x1133,0x1133,0x1153,0x1153,0x1153,0x1153,0x1154,0x0954,0x0975,0x0176,0x09D8,0x09D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01D9,0x09F9,0x11F9,0x11F8,0x1175,0x10F2,0x1912,0x2131,0x2131,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x2910,0x2930,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x290F,0x2930,0x2130,0x2110,0x2110,0x2130,0x1931,0x1932,0x1133,0x19D6,0x19F8,0x11D7,0x1196,0x1133,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2930,0x292F,0x210F,0x292F,0x210F,0x2130,0x2130,0x2131,0x1911,0x1132,0x1154,0x19D6,0x19F7,0x11B5,0x1995,0x1953,0x1111,0x1911,0x2130,0x2110,0x2930,0x210F,0x2110,0x2110,0x2130,0x2931,0x2131,0x1911,0x1933,0x1174,0x11D7,0x09D8,0x09D9,0x01B9,0x01B9,0x01B9,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x09F9,0x1219,0x19F8,0x1154,0x1112,0x1911,0x2110,0x2130,0x2930,0x2110,0x2110,0x210F,0x210F,0x2930,0x2930,0x2910,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x290F,0x210F,0x290F,0x2930,0x210F,0x2930,0x2110,0x2910,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x290F,0x210F,0x290F,0x290F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2131,0x2152,0x1911,0x08D1,0x1954,0x2A17,0x2217,0x21D7,0x08F3,0x08D2,0x1953,0x2152,0x1911,0x1910,0x2130,0x2130,0x2130,0x2130,0x212F,0x190F,0x210F,0x210F,0x2930,0x2930,0x2930,0x212F,0x2110,0x1930,0x1951,0x1932,0x1133,0x1133,0x19B6,0x21F7,0x2218,0x21F7,0x1996,0x1134,0x1112,0x1112,0x1932,0x2131,0x2151,0x2130,0x210F,0x210F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x2130,0x2131,0x1911,0x1113,0x19D7,0x1A18,0x1A19,0x19B6,0x1112,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x2130,0x212F,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x210F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x2930,0x290F,0x210F,0x210F,0x2930,0x2910,0x2930,0x2130,0x2110,0x2131,0x1931,0x1932,0x1133,0x1174,0x19B6,0x19D7,0x21F8,0x21D7,0x1974,0x1132,0x1911,0x1911,0x2131,0x2130,0x2130,0x2110,0x2930,0x2930,0x210F,0x210F,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x2130,0x210F,0x210F,0x210F,0x292F,0x2930,0x2130,0x2110,0x2110,0x2130,0x2930,0x2930,0x290F,0x210F,0x2110,0x2130,0x2131,0x1931,0x1132,0x1133,0x1175,0x19D6,0x2217,0x21F6,0x1153,0x1132,0x1911,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x1910,0x1911,0x1132,0x1112,0x19B5,0x2A37,0x21F6,0x19B5,0x1112,0x1932,0x1931,0x2131,0x2110,0x2110,0x2130,0x2110,0x2110,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x290F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x212F,0x2930,0x2130,0x2151,0x2131,0x1911,0x1912,0x1133,0x1975,0x19B6,0x19B6,0x2217,0x1974,0x1152,0x1951,0x1911,0x1910,0x1931,0x2151,0x1931,0x1132,0x1113,0x1154,0x19F7,0x19F8,0x19F8,0x1175,0x1112,0x1911,0x2110,0x2110,0x2130,0x2110,0x2930,0x2910,0x2930,0x2930,0x212F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x2930,0x2910,0x2910,0x2110,0x2910,0x2910,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2930,0x2130,0x2110,0x2110,0x1910,0x1911,0x1931,0x1932,0x1932,0x1932,0x1932,0x1132,0x0912,0x0933,0x11B5,0x1A17,0x2238,0x2217,0x1995,0x1133,0x1112,0x1932,0x2152,0x2131,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x212F,0x2110,0x2110,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x212F,0x210F,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2931,0x2131,0x2131,0x2131,0x1932,0x1132,0x1153,0x1154,0x1195,0x19D6,0x19D7,0x19D7,0x19B6,0x1154,0x0912,0x0912,0x1111,0x1131,0x1111,0x1131,0x1111,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x10F1,0x10F1,0x10F2,0x0912,0x1133,0x1154,0x1195,0x19B6,0x19F7,0x19D7,0x19F7,0x19B6,0x1174,0x1133,0x1112,0x1111,0x1931,0x1952,0x1912,0x1112,0x1132,0x1133,0x1174,0x1195,0x19F7,0x19F7,0x19D6,0x19B5,0x1173,0x1153,0x1112,0x1932,0x1932,0x1952,0x1952,0x1933,0x1133,0x1153,0x1195,0x21F7,0x2217,0x2218,0x19B6,0x1154,0x1133,0x1112,0x1111,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x2930,0x2130,0x2110,0x2110,0x2110,0x2130,0x210F,0x2930,0x290F,0x210F,0x290F,0x290F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130, + 0x09D8,0x09B8,0x09D8,0x09F8,0x11F8,0x11D7,0x11B6,0x1175,0x1153,0x1132,0x1932,0x1911,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x2131,0x2131,0x2152,0x1932,0x1932,0x1133,0x1174,0x19B6,0x2218,0x1A17,0x2218,0x1195,0x0933,0x1153,0x1932,0x1911,0x2131,0x2131,0x2130,0x2130,0x212F,0x212F,0x292F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x2930,0x2110,0x2910,0x2910,0x210F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2110,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x2910,0x2930,0x210F,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x290F,0x2930,0x290F,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x1911,0x1911,0x0912,0x11B5,0x19F6,0x11B6,0x11D7,0x11B7,0x11B8,0x09B8,0x0998,0x09B8,0x09B8,0x09B7,0x09B7,0x11D7,0x1A18,0x19F7,0x1174,0x1132,0x1932,0x1931,0x1930,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x292F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x2930,0x210F,0x210F,0x2910,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x212F,0x210F,0x2130,0x210F,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x1931,0x1911,0x1112,0x1133,0x1154,0x19B6,0x19B7,0x19B7,0x19B7,0x1996,0x1154,0x1134,0x1133,0x1133,0x1153,0x1132,0x1153,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1152,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1932,0x1132,0x1111,0x1112,0x1932,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1133,0x0934,0x0175,0x09F8,0x01D8,0x01F9,0x01D9,0x01B9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01DA,0x01FA,0x01F9,0x0A19,0x11F8,0x1175,0x1112,0x1932,0x2131,0x2131,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x2930,0x2930,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2131,0x1932,0x1133,0x19D6,0x11F7,0x11D7,0x11B6,0x1133,0x1932,0x2131,0x2110,0x2110,0x2130,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2131,0x1911,0x1112,0x1154,0x19B6,0x21F7,0x19B6,0x19B5,0x1973,0x1112,0x1911,0x2130,0x2130,0x2930,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x1911,0x1932,0x1154,0x11B6,0x11F8,0x09F9,0x01D9,0x01B9,0x01B9,0x01DA,0x01DA,0x01D9,0x01DA,0x01D9,0x09F9,0x1219,0x11B6,0x1133,0x1912,0x1911,0x2131,0x2130,0x2130,0x2930,0x2910,0x2930,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x210F,0x290F,0x210F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910,0x2910,0x2930,0x210F,0x210F,0x2130,0x2110,0x2110,0x2930,0x2110,0x2910,0x2110,0x2110,0x2910,0x290F,0x290F,0x290F,0x2930,0x212F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2151,0x1911,0x08D1,0x1974,0x2A17,0x21F7,0x19D6,0x08D3,0x08D2,0x2153,0x1931,0x1910,0x2110,0x2110,0x2130,0x2110,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x1931,0x1952,0x1132,0x1153,0x1175,0x21D7,0x21F7,0x21F7,0x1996,0x1954,0x1113,0x1912,0x1911,0x1911,0x2131,0x2130,0x2130,0x210F,0x210F,0x210F,0x2930,0x290F,0x2910,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x290F,0x292F,0x292F,0x210F,0x290F,0x210F,0x210F,0x2110,0x2130,0x2131,0x1912,0x1113,0x19D7,0x1A19,0x1A19,0x19D7,0x1112,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x210F,0x2130,0x212F,0x210F,0x290F,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x2930,0x2130,0x212F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2930,0x292F,0x212F,0x292F,0x292F,0x212F,0x292F,0x292F,0x212F,0x290F,0x210F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2131,0x1931,0x1932,0x1132,0x1154,0x19B5,0x21F7,0x2218,0x21D7,0x1975,0x1953,0x1932,0x1911,0x1910,0x2131,0x2130,0x2130,0x210F,0x2930,0x290F,0x210F,0x210F,0x212F,0x2130,0x2930,0x210F,0x212F,0x292F,0x212F,0x210F,0x212F,0x292F,0x290F,0x290F,0x2930,0x2130,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x210F,0x210F,0x2130,0x2930,0x2930,0x210F,0x290F,0x2910,0x2130,0x2130,0x1931,0x1931,0x1112,0x1154,0x19B6,0x2238,0x19F6,0x1153,0x1112,0x1932,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x1911,0x1911,0x1132,0x1132,0x19B5,0x2A37,0x21F6,0x19B5,0x1112,0x1932,0x1952,0x1931,0x2130,0x2110,0x2130,0x2110,0x2930,0x2930,0x2930,0x212F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x210F,0x2930,0x212F,0x210F,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2930,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x212F,0x292F,0x292F,0x2930,0x2130,0x2131,0x2131,0x1932,0x1113,0x1154,0x19B6,0x19B6,0x21F6,0x1994,0x1111,0x1931,0x1931,0x1931,0x1931,0x2131,0x1911,0x1932,0x1133,0x1154,0x19F7,0x19F8,0x19F8,0x1175,0x1112,0x1911,0x2110,0x2130,0x2110,0x2930,0x2930,0x2910,0x2110,0x2110,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x2930,0x2110,0x2130,0x2110,0x2110,0x2111,0x2111,0x2111,0x1911,0x1932,0x1112,0x1112,0x1112,0x1133,0x19B6,0x21F7,0x2237,0x2217,0x1995,0x1133,0x1112,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2930,0x2930,0x2930,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1932,0x1133,0x1174,0x1195,0x19D6,0x19F7,0x21F7,0x19D7,0x1154,0x0933,0x0932,0x0932,0x0932,0x0932,0x0932,0x1132,0x1132,0x1152,0x1152,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1133,0x0933,0x1153,0x1154,0x1195,0x19D6,0x19F7,0x19F7,0x19F7,0x19D7,0x1195,0x1994,0x1153,0x1112,0x1131,0x1932,0x1952,0x1932,0x1112,0x1112,0x1133,0x1154,0x1195,0x19F7,0x1A17,0x1A17,0x19B5,0x1174,0x1132,0x1132,0x1932,0x1911,0x1932,0x1953,0x1953,0x1133,0x1154,0x1195,0x19D7,0x2218,0x21F7,0x21F7,0x1174,0x1113,0x1112,0x1111,0x1931,0x2131,0x2130,0x2110,0x2110,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x292F,0x292F,0x210F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110, + 0x09B8,0x09B7,0x09D8,0x09D8,0x11F8,0x11F8,0x11D8,0x11B6,0x1175,0x1133,0x1933,0x1932,0x1931,0x2131,0x2131,0x2110,0x2110,0x2110,0x2130,0x2131,0x2151,0x2131,0x1910,0x1911,0x1111,0x1132,0x1174,0x19B6,0x19D7,0x19F7,0x21F7,0x1175,0x0933,0x1133,0x1932,0x1931,0x2131,0x2130,0x2130,0x2110,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2910,0x2910,0x210F,0x210F,0x2910,0x2110,0x2930,0x2110,0x2910,0x2930,0x2930,0x290F,0x210F,0x2910,0x2910,0x2910,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x2930,0x210F,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x2910,0x2910,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x2130,0x2930,0x212F,0x210F,0x212F,0x212F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x1951,0x1132,0x1153,0x1994,0x1195,0x19D6,0x19D7,0x19D7,0x11D7,0x11D7,0x19F7,0x19F7,0x19D7,0x19F7,0x19D6,0x19B5,0x1974,0x1132,0x1932,0x1911,0x1910,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x20EF,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2910,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2131,0x1931,0x1931,0x1112,0x1113,0x1154,0x1175,0x19B7,0x19F7,0x19D7,0x19D6,0x1154,0x0933,0x1133,0x0912,0x1132,0x1132,0x1132,0x1132,0x1152,0x1952,0x1952,0x1932,0x1932,0x1931,0x1911,0x1932,0x1932,0x1932,0x1912,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x1131,0x1131,0x1131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1952,0x1131,0x1931,0x1931,0x1931,0x1931,0x1131,0x1931,0x1931,0x1111,0x1131,0x1931,0x1911,0x1932,0x1952,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1932,0x1932,0x2152,0x1932,0x1932,0x1932,0x1931,0x1931,0x1952,0x1932,0x1952,0x1132,0x1113,0x0913,0x0155,0x09D8,0x09F9,0x09F9,0x01D9,0x01D9,0x01FA,0x01DA,0x01B9,0x01FA,0x01B9,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FB,0x01DA,0x01FA,0x01FA,0x01F9,0x01D9,0x09F8,0x11D8,0x1175,0x1133,0x2152,0x2131,0x2131,0x2110,0x210F,0x212F,0x210F,0x290F,0x210F,0x210F,0x2910,0x2110,0x2930,0x2110,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x2110,0x2930,0x2910,0x290F,0x2930,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x290F,0x2930,0x2930,0x290F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x1911,0x1932,0x1133,0x19D7,0x1A18,0x19F8,0x1195,0x1133,0x1912,0x2132,0x2131,0x2110,0x210F,0x2130,0x212F,0x210F,0x210F,0x292F,0x212F,0x2930,0x2130,0x2131,0x1911,0x1112,0x1154,0x19B6,0x19D7,0x19B6,0x19B5,0x1153,0x1112,0x2131,0x2131,0x2130,0x2110,0x2910,0x2910,0x2930,0x2130,0x2130,0x2110,0x1911,0x1932,0x1154,0x1196,0x11F8,0x11F9,0x09D9,0x01D9,0x01B9,0x01B9,0x01B9,0x01DA,0x09FA,0x0A1A,0x1219,0x1A18,0x1175,0x1132,0x1932,0x2131,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x2910,0x2110,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x292F,0x210F,0x2910,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2930,0x2910,0x2910,0x290F,0x290F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1930,0x2131,0x1931,0x1932,0x08F1,0x1994,0x21F6,0x21F7,0x19B6,0x08D2,0x1112,0x1932,0x1911,0x2130,0x2130,0x210F,0x2930,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x2130,0x1931,0x1931,0x1132,0x1133,0x1154,0x21D7,0x21F7,0x21D7,0x19B6,0x1154,0x1112,0x1112,0x1931,0x2131,0x2131,0x2110,0x2130,0x212F,0x210F,0x210F,0x212F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x210F,0x2910,0x2110,0x2130,0x2110,0x1911,0x1113,0x19D7,0x1A18,0x1A19,0x19D7,0x1112,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2930,0x2930,0x2930,0x2910,0x210F,0x2130,0x210F,0x2130,0x2130,0x2930,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x2930,0x2130,0x2130,0x2110,0x2930,0x210F,0x210F,0x2930,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x292F,0x2930,0x2930,0x2110,0x2110,0x1910,0x1931,0x1932,0x1132,0x1153,0x1995,0x21F7,0x2218,0x21F7,0x1154,0x1113,0x1953,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x290F,0x210F,0x290F,0x210F,0x292F,0x212F,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x212F,0x2110,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2130,0x1931,0x1931,0x1112,0x1133,0x19B6,0x2A38,0x21F6,0x1154,0x08F1,0x1111,0x1931,0x1930,0x2130,0x2110,0x2130,0x1910,0x1931,0x1931,0x1932,0x1132,0x19B5,0x2A37,0x2217,0x1994,0x1112,0x1112,0x2152,0x2151,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x212F,0x210F,0x292F,0x292F,0x212F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x212F,0x2930,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x210F,0x210F,0x20EF,0x2910,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x212F,0x2110,0x2130,0x2151,0x1932,0x1113,0x1134,0x1996,0x21D7,0x21D6,0x1974,0x10F1,0x1911,0x1931,0x1931,0x2131,0x1931,0x1911,0x1931,0x1112,0x1154,0x19F7,0x1A18,0x2218,0x1196,0x1112,0x1911,0x2131,0x2110,0x2110,0x2110,0x2910,0x2930,0x210F,0x2110,0x212F,0x2930,0x2930,0x2130,0x2110,0x2110,0x2110,0x210F,0x290F,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x2930,0x2930,0x2930,0x2110,0x2110,0x2910,0x2110,0x2910,0x290F,0x290F,0x2930,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x2930,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2131,0x2151,0x2152,0x1911,0x1111,0x1112,0x1133,0x1995,0x2217,0x2A38,0x21F7,0x1995,0x1153,0x08F2,0x1912,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2930,0x2931,0x2131,0x2131,0x2131,0x1911,0x1932,0x1953,0x1174,0x19B5,0x19D6,0x19D7,0x2217,0x2218,0x19D6,0x11B6,0x11B5,0x11D6,0x11D5,0x11D6,0x11B5,0x11B5,0x11D6,0x11B5,0x11B5,0x11B5,0x11B6,0x11B6,0x11B5,0x11B6,0x11B6,0x19D6,0x11B6,0x19D6,0x19F6,0x19D6,0x19D6,0x19F6,0x19D6,0x2217,0x1A17,0x1A17,0x19F7,0x19B6,0x1195,0x1154,0x1132,0x1111,0x1111,0x1931,0x1952,0x1952,0x1932,0x1133,0x1154,0x1154,0x1196,0x19D7,0x1A18,0x1A17,0x19D6,0x1174,0x1133,0x1932,0x1932,0x1111,0x1911,0x1112,0x1932,0x1953,0x1974,0x1195,0x19F7,0x19F7,0x19F7,0x21F7,0x1175,0x0912,0x10F2,0x1931,0x1951,0x1910,0x2110,0x2110,0x210F,0x290F,0x290F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2950,0x212F,0x212F,0x210F,0x210F,0x292F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x2930, + 0x0997,0x0997,0x09B7,0x09D8,0x11D8,0x11F8,0x11F8,0x11D7,0x11B6,0x1175,0x1154,0x1933,0x1932,0x1931,0x2131,0x2111,0x2130,0x2130,0x2130,0x2951,0x2130,0x2130,0x1910,0x1910,0x1931,0x1132,0x1133,0x1174,0x19B5,0x19D6,0x2218,0x21F7,0x1175,0x1133,0x1133,0x1932,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x210F,0x212F,0x292F,0x290F,0x210F,0x2930,0x290F,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x290F,0x2930,0x2910,0x2930,0x210F,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2130,0x212F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x292F,0x290F,0x2930,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2130,0x2130,0x1931,0x1931,0x1132,0x1132,0x1153,0x1174,0x1175,0x19B6,0x19F6,0x19D6,0x19D6,0x1995,0x19B5,0x1974,0x1153,0x1133,0x1112,0x1911,0x1911,0x1910,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2131,0x1931,0x1911,0x1112,0x1113,0x1154,0x1996,0x19D7,0x2218,0x19F7,0x1195,0x1154,0x0933,0x0932,0x1132,0x1132,0x1152,0x1132,0x1932,0x1932,0x1931,0x1952,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1931,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1952,0x1932,0x1932,0x1952,0x1932,0x1931,0x1952,0x1952,0x1932,0x1931,0x1931,0x1931,0x2132,0x1911,0x1911,0x1931,0x1931,0x1932,0x1932,0x1132,0x1133,0x1154,0x0955,0x09B7,0x09D8,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01F9,0x01F9,0x09F9,0x11D8,0x1195,0x1112,0x1932,0x2131,0x2130,0x2110,0x2130,0x210F,0x212F,0x2930,0x210F,0x290F,0x2930,0x210F,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x290F,0x2930,0x290F,0x290F,0x2930,0x2910,0x2910,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x2930,0x2930,0x210F,0x2930,0x290F,0x2930,0x292F,0x292F,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x290F,0x2930,0x2910,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x1931,0x1111,0x1133,0x11D6,0x1A18,0x19F8,0x1196,0x1113,0x1932,0x2131,0x2131,0x2110,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x2930,0x2930,0x2130,0x2131,0x1911,0x1112,0x1154,0x19B6,0x21F7,0x19B6,0x1995,0x1153,0x1112,0x2131,0x2131,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x2130,0x2110,0x2111,0x1952,0x1153,0x1175,0x11B7,0x1A19,0x11F9,0x09B8,0x01B9,0x01B9,0x01B9,0x09D9,0x09D9,0x1219,0x1219,0x11D7,0x1133,0x1132,0x1931,0x2131,0x2130,0x2130,0x2110,0x2930,0x2110,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x212F,0x2930,0x290F,0x210F,0x290F,0x2930,0x292F,0x210F,0x210F,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2910,0x2910,0x290F,0x2930,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x08F1,0x1994,0x21F6,0x21F7,0x1995,0x08F3,0x1112,0x1931,0x2130,0x2130,0x2930,0x2130,0x2930,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x292F,0x212F,0x2130,0x2130,0x1931,0x1132,0x1133,0x0933,0x19D6,0x21F7,0x21F7,0x1996,0x1154,0x1133,0x1932,0x1911,0x1931,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2110,0x2110,0x1932,0x1113,0x11B7,0x1A19,0x1A19,0x19D7,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x2910,0x2930,0x2130,0x2110,0x2130,0x210F,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2930,0x2130,0x2130,0x2930,0x2930,0x2110,0x2110,0x2910,0x290F,0x292F,0x210F,0x292F,0x212F,0x210F,0x212F,0x210F,0x2930,0x2930,0x2930,0x2110,0x2110,0x1911,0x1931,0x1932,0x1132,0x1153,0x1995,0x21F7,0x2217,0x2217,0x1975,0x1133,0x1132,0x1952,0x1932,0x1931,0x2130,0x2130,0x2130,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x2130,0x2930,0x210F,0x210F,0x2930,0x2930,0x2130,0x2130,0x1931,0x1931,0x1132,0x1133,0x19B6,0x21F7,0x21F7,0x1174,0x0912,0x1132,0x1931,0x1910,0x2130,0x2110,0x2110,0x2131,0x1931,0x1931,0x1132,0x1132,0x19B5,0x2217,0x21F6,0x1995,0x1112,0x1112,0x2152,0x2151,0x2130,0x1910,0x2110,0x2130,0x2930,0x2930,0x210F,0x2930,0x210F,0x2930,0x210F,0x212F,0x2930,0x2930,0x210F,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2930,0x210F,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2130,0x1931,0x1932,0x1132,0x1133,0x1996,0x21D6,0x21D6,0x1994,0x1111,0x1911,0x1931,0x1911,0x2131,0x2131,0x1931,0x1931,0x1112,0x0933,0x19D7,0x1A18,0x19F8,0x1196,0x1112,0x1911,0x2111,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x210F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x210F,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x290F,0x2910,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2130,0x210F,0x2110,0x2130,0x2131,0x2130,0x2131,0x1931,0x1911,0x1911,0x1112,0x1133,0x1995,0x21F7,0x2A17,0x21F7,0x1995,0x1133,0x1112,0x1912,0x2131,0x2111,0x2130,0x2131,0x2930,0x2130,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x290F,0x2930,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2111,0x1911,0x1932,0x1932,0x1953,0x1974,0x1995,0x19B6,0x19D7,0x2218,0x2218,0x1A38,0x1A38,0x1A17,0x1A38,0x1A17,0x1A17,0x1A17,0x1A17,0x1A38,0x1A38,0x1A18,0x1A18,0x2238,0x1A18,0x1A38,0x1A18,0x1A18,0x19F7,0x1A18,0x19F7,0x19F7,0x11F7,0x19F7,0x19F7,0x19F7,0x19F6,0x19F6,0x19D6,0x1195,0x1174,0x1153,0x1111,0x1111,0x1931,0x2151,0x1952,0x1932,0x1132,0x1153,0x1154,0x1195,0x19D7,0x1A18,0x1A17,0x19D6,0x1194,0x1132,0x1132,0x1932,0x1932,0x1911,0x1912,0x1932,0x1133,0x1154,0x19B6,0x19D7,0x19F7,0x2218,0x19D7,0x1175,0x0933,0x1112,0x1111,0x1931,0x2131,0x2110,0x2110,0x210F,0x210F,0x210F,0x292F,0x290F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x292F,0x210F,0x292F,0x210F,0x290F,0x210F,0x2130,0x2110,0x2110,0x2930,0x210F,0x2930,0x2930, + 0x0955,0x0975,0x0976,0x09B7,0x11D8,0x11F8,0x11F8,0x11F8,0x11B7,0x11B6,0x0955,0x1154,0x1953,0x1932,0x1931,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2151,0x1931,0x1132,0x1132,0x1974,0x19B6,0x19F7,0x2218,0x21F7,0x1195,0x1134,0x1133,0x1932,0x2132,0x2151,0x2130,0x2110,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2930,0x210F,0x210F,0x2910,0x210F,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x2131,0x1931,0x1911,0x1932,0x1132,0x1132,0x1133,0x1133,0x1153,0x1133,0x1113,0x1112,0x1112,0x1132,0x1912,0x1912,0x1911,0x1911,0x2131,0x2130,0x2130,0x210F,0x212F,0x210F,0x290F,0x292F,0x210F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x2910,0x2110,0x2130,0x2930,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x2130,0x2930,0x210F,0x210F,0x2110,0x2130,0x2130,0x2131,0x1931,0x1911,0x1112,0x1153,0x1154,0x19B6,0x19B6,0x11B6,0x11B6,0x1195,0x1174,0x1153,0x0933,0x1153,0x1152,0x1132,0x1932,0x1131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x2132,0x1932,0x1911,0x1932,0x1932,0x1932,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1952,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x2132,0x2132,0x2111,0x1911,0x2131,0x1932,0x2152,0x1932,0x1112,0x1133,0x0934,0x0955,0x09D7,0x09F9,0x01D9,0x01B9,0x01D9,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01F9,0x01D9,0x09D8,0x11D7,0x1175,0x1112,0x1911,0x2131,0x2130,0x2110,0x2130,0x210F,0x210F,0x2930,0x290F,0x210F,0x290F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x210F,0x210F,0x2910,0x290F,0x290F,0x210F,0x2910,0x2910,0x210F,0x290F,0x2930,0x2910,0x210F,0x210F,0x210F,0x290F,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x2110,0x290F,0x210F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x1912,0x1133,0x19D7,0x1A18,0x19F7,0x1196,0x0912,0x1932,0x2131,0x2131,0x2110,0x2130,0x210F,0x212F,0x292F,0x212F,0x292F,0x212F,0x2950,0x2130,0x2131,0x1931,0x1132,0x1154,0x19D6,0x19F7,0x19D6,0x19B5,0x1153,0x1112,0x2131,0x2131,0x2930,0x2930,0x210F,0x210F,0x2930,0x2130,0x2110,0x2110,0x2131,0x1931,0x1932,0x1154,0x1175,0x11B7,0x11B8,0x09B8,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x11F9,0x19F8,0x1175,0x1132,0x1932,0x1931,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x212F,0x2930,0x2910,0x210F,0x210F,0x290F,0x290F,0x2110,0x2110,0x2110,0x2910,0x290F,0x210F,0x290F,0x2930,0x2930,0x2910,0x2910,0x2910,0x210F,0x2930,0x290F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x1910,0x2131,0x2151,0x1932,0x08F1,0x19B5,0x21F6,0x21F7,0x19B5,0x0913,0x1112,0x1931,0x2130,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2950,0x212F,0x212F,0x212F,0x2110,0x1930,0x1951,0x1152,0x1153,0x1995,0x21F7,0x21F7,0x1996,0x1134,0x1153,0x1932,0x1931,0x2131,0x2130,0x2130,0x210F,0x2110,0x2930,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2110,0x2111,0x1932,0x1113,0x11B7,0x19F8,0x1A19,0x19D7,0x1132,0x1931,0x1910,0x2110,0x2130,0x2130,0x2110,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x210F,0x2130,0x2110,0x2110,0x2910,0x210F,0x2910,0x2930,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2111,0x1911,0x1911,0x1932,0x1133,0x1153,0x1974,0x21F7,0x2A17,0x21F7,0x1154,0x1113,0x1932,0x1952,0x1952,0x1931,0x2131,0x2130,0x2130,0x210F,0x212F,0x292F,0x210F,0x210F,0x290F,0x290F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x290F,0x2930,0x210F,0x210F,0x290F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x212F,0x212F,0x212F,0x2930,0x2930,0x292F,0x290F,0x2930,0x2110,0x2130,0x2130,0x2131,0x1931,0x1132,0x1133,0x21D6,0x2A38,0x21F7,0x1194,0x0912,0x1132,0x1931,0x1931,0x1910,0x2110,0x2130,0x2131,0x1931,0x1931,0x1932,0x1133,0x21D6,0x2A17,0x21F6,0x1995,0x0912,0x1932,0x2152,0x1931,0x2131,0x2130,0x2130,0x2110,0x2930,0x2930,0x2110,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x2930,0x210F,0x2910,0x2910,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x290F,0x290F,0x212F,0x212F,0x292F,0x292F,0x292F,0x210F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x290F,0x292F,0x210F,0x210F,0x212F,0x2130,0x2110,0x2130,0x2151,0x1932,0x1132,0x1133,0x1995,0x21D6,0x19D5,0x1974,0x10F1,0x1911,0x1931,0x2131,0x1910,0x2131,0x1931,0x1931,0x1112,0x1174,0x19F7,0x1A18,0x19F8,0x1195,0x1112,0x1911,0x2111,0x2110,0x2110,0x2130,0x2110,0x2930,0x2110,0x212F,0x210F,0x2930,0x2930,0x212F,0x2110,0x2110,0x210F,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x1910,0x2131,0x2131,0x1931,0x1911,0x1932,0x1153,0x1995,0x21F7,0x21F7,0x21D6,0x19B5,0x1133,0x1112,0x1912,0x1911,0x2131,0x2131,0x2130,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x2930,0x2110,0x210F,0x2110,0x2130,0x2130,0x2930,0x2131,0x2131,0x2131,0x1931,0x1931,0x1953,0x1974,0x19B5,0x19B6,0x1996,0x19D6,0x19D7,0x19F7,0x19F7,0x19F7,0x19F7,0x1A17,0x19F7,0x19F7,0x19F7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x19F7,0x19F7,0x11D7,0x11D7,0x19F7,0x19F7,0x19F7,0x19F7,0x11D6,0x11B6,0x11B5,0x11B5,0x19B5,0x1994,0x1994,0x1152,0x1132,0x1931,0x1931,0x2151,0x1931,0x1931,0x1132,0x1133,0x1154,0x1195,0x19D7,0x1A18,0x19F7,0x19B6,0x1174,0x1133,0x1112,0x1132,0x1932,0x1932,0x1932,0x1132,0x1133,0x1154,0x1995,0x19D7,0x2218,0x19F8,0x19B6,0x1154,0x0912,0x1112,0x1932,0x1931,0x2130,0x2110,0x2130,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x2130,0x2110,0x2110,0x210F,0x290F,0x292F, + 0x1133,0x0934,0x1155,0x1196,0x11B7,0x11D8,0x11D8,0x11F8,0x11F8,0x11D7,0x1196,0x1175,0x1154,0x1953,0x1932,0x1911,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x2150,0x2150,0x1930,0x1930,0x1910,0x1131,0x1132,0x1994,0x19B6,0x21F7,0x2218,0x19D7,0x1995,0x1154,0x1933,0x1912,0x2132,0x2111,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x290F,0x2930,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x212F,0x212F,0x210F,0x292F,0x210F,0x210F,0x2930,0x2910,0x2110,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x1910,0x1911,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1112,0x1912,0x1912,0x1912,0x1911,0x1911,0x1911,0x2131,0x1910,0x2110,0x2130,0x2130,0x2130,0x2930,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x2930,0x2910,0x2930,0x2930,0x210F,0x212F,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1931,0x1132,0x1153,0x1154,0x1195,0x11B6,0x19D6,0x19D6,0x19D6,0x1174,0x1154,0x1153,0x1132,0x1132,0x1132,0x1131,0x1131,0x1111,0x1931,0x1911,0x1932,0x1912,0x1912,0x1932,0x1932,0x1932,0x1932,0x1912,0x1932,0x1931,0x1931,0x1932,0x1932,0x1931,0x1931,0x1932,0x1932,0x1931,0x1932,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1932,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1912,0x1912,0x1911,0x1911,0x1912,0x1912,0x1912,0x1912,0x1912,0x1911,0x1912,0x1911,0x1932,0x1912,0x1932,0x1953,0x1133,0x0934,0x0155,0x11D8,0x09D9,0x09FA,0x01B9,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DB,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01FA,0x01F9,0x01F9,0x09D8,0x11D7,0x0954,0x1112,0x1932,0x2131,0x2131,0x2110,0x2130,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2930,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x2930,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2110,0x210F,0x290F,0x290F,0x210F,0x212F,0x2110,0x2110,0x2130,0x2130,0x1931,0x1112,0x0912,0x19D7,0x11F8,0x11F7,0x1196,0x1112,0x1912,0x2132,0x2131,0x2130,0x2130,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x2930,0x2150,0x2131,0x1911,0x1132,0x1154,0x19D6,0x19F7,0x19B6,0x19B6,0x1153,0x1111,0x2131,0x2931,0x2930,0x2910,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x1931,0x1932,0x1133,0x1154,0x1176,0x11B7,0x11D8,0x11D8,0x09D8,0x09F9,0x09D8,0x11D8,0x11D8,0x1175,0x0933,0x1132,0x1931,0x1930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2930,0x2910,0x2910,0x2930,0x2930,0x210F,0x2910,0x2930,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1911,0x10F1,0x1994,0x21F6,0x21F6,0x19B5,0x08F2,0x1112,0x1931,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x1931,0x1132,0x1153,0x1154,0x21F7,0x21F7,0x21F7,0x1154,0x0913,0x1132,0x1931,0x2131,0x2130,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x290F,0x210F,0x2110,0x2110,0x2131,0x1932,0x1113,0x11B6,0x19F8,0x1A19,0x19D7,0x1133,0x1911,0x2131,0x2130,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x210F,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2130,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x212F,0x2930,0x2910,0x2910,0x2110,0x210F,0x2910,0x2110,0x2930,0x212F,0x212F,0x212F,0x2930,0x2130,0x2130,0x1910,0x1911,0x1932,0x1932,0x1133,0x1153,0x1975,0x21F7,0x2A17,0x21F7,0x1954,0x1112,0x1112,0x1932,0x1931,0x1931,0x1910,0x1930,0x2130,0x2130,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x292F,0x210F,0x290F,0x2110,0x210F,0x2110,0x2130,0x2130,0x2130,0x212F,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x290F,0x210F,0x2930,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x21B6,0x2A38,0x2217,0x1995,0x0912,0x1132,0x1952,0x1931,0x2131,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1133,0x21B5,0x2A17,0x21F6,0x19B5,0x0912,0x1112,0x1952,0x2151,0x2131,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x212F,0x2930,0x292F,0x212F,0x212F,0x2110,0x2930,0x2110,0x2930,0x2130,0x2110,0x2130,0x2130,0x2930,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x2910,0x210F,0x290F,0x2930,0x210F,0x210F,0x2930,0x290F,0x210F,0x292F,0x212F,0x292F,0x212F,0x212F,0x290F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x2930,0x210F,0x210F,0x212F,0x2130,0x2130,0x2110,0x1931,0x1931,0x1132,0x1133,0x1995,0x21D6,0x21D5,0x1994,0x1111,0x1911,0x2131,0x2131,0x2131,0x1910,0x1930,0x1931,0x1112,0x1153,0x19F7,0x1A18,0x19F8,0x1196,0x1112,0x1911,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x2930,0x212F,0x212F,0x210F,0x2930,0x210F,0x212F,0x2110,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910,0x210F,0x2110,0x210F,0x2930,0x2910,0x2910,0x2910,0x210F,0x2930,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2110,0x2130,0x2131,0x2131,0x2131,0x1911,0x1932,0x1153,0x1974,0x21F6,0x2217,0x21F7,0x1995,0x1133,0x1112,0x1911,0x1911,0x2131,0x2111,0x2930,0x2130,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x2910,0x2930,0x290F,0x2930,0x2930,0x210F,0x292F,0x210F,0x210F,0x290F,0x2930,0x212F,0x2930,0x2130,0x2130,0x2130,0x2131,0x2110,0x2131,0x1932,0x1932,0x1953,0x1154,0x1174,0x1174,0x1175,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1175,0x1995,0x1175,0x1195,0x1175,0x1175,0x1195,0x1195,0x1195,0x1195,0x1195,0x1174,0x1174,0x1194,0x1174,0x1174,0x1153,0x1153,0x1952,0x1131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1132,0x1153,0x1195,0x19D6,0x2218,0x1A17,0x19D6,0x1175,0x1133,0x1132,0x1132,0x1932,0x1931,0x1932,0x1132,0x1133,0x1154,0x1995,0x19D7,0x21F8,0x21F8,0x19D7,0x1175,0x0913,0x1112,0x1111,0x2151,0x2151,0x2130,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2110,0x2110,0x2130,0x2110,0x2130,0x212F,0x210F,0x212F,0x292F,0x292F,0x212F,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x2110,0x290F,0x210F,0x292F,0x292F, + 0x1112,0x1133,0x1133,0x1154,0x1196,0x11B7,0x11F8,0x11F8,0x11F8,0x11F8,0x11D7,0x1196,0x1175,0x1133,0x1133,0x1952,0x2131,0x2131,0x1910,0x2130,0x2110,0x2130,0x2130,0x2150,0x2150,0x1930,0x1910,0x1911,0x1952,0x1133,0x1995,0x19B6,0x2218,0x2218,0x19D7,0x1175,0x1154,0x1133,0x1912,0x2132,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x2930,0x212F,0x292F,0x212F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x210F,0x2110,0x2910,0x210F,0x2910,0x2930,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x2910,0x2130,0x2130,0x2130,0x1910,0x1910,0x1931,0x1931,0x1911,0x1952,0x1932,0x1932,0x1912,0x1911,0x1931,0x2131,0x2131,0x2131,0x2130,0x2131,0x2130,0x2110,0x2130,0x2130,0x2110,0x210F,0x210F,0x2910,0x210F,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1133,0x1154,0x1195,0x19D6,0x1A17,0x11B6,0x0954,0x0954,0x0953,0x1133,0x0932,0x1132,0x0912,0x1112,0x1111,0x1111,0x1112,0x1112,0x1112,0x1112,0x10F2,0x10F2,0x1112,0x1112,0x10F2,0x1112,0x1112,0x1112,0x1112,0x1112,0x1111,0x1111,0x1112,0x1112,0x1112,0x1112,0x10F1,0x1111,0x1112,0x1111,0x1112,0x1112,0x1111,0x1111,0x1112,0x1111,0x1111,0x1112,0x10F1,0x10F1,0x1111,0x1111,0x1112,0x1112,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x10F2,0x10F2,0x1112,0x1112,0x1112,0x1113,0x0913,0x0914,0x0176,0x09B8,0x09D9,0x01B9,0x01D9,0x01D9,0x021A,0x01FA,0x01D9,0x01DA,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x021A,0x01FA,0x01FA,0x01FA,0x01FA,0x01F9,0x01F9,0x11F8,0x11F7,0x1154,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x1911,0x1112,0x1133,0x19F7,0x1A18,0x1A18,0x1196,0x1113,0x1912,0x2132,0x2131,0x2130,0x2130,0x210F,0x2930,0x292F,0x292F,0x212F,0x210F,0x212F,0x2150,0x2131,0x1931,0x1132,0x1154,0x21F7,0x21F7,0x19D6,0x19B5,0x1133,0x1112,0x2131,0x2931,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2131,0x1932,0x1932,0x1133,0x1154,0x1196,0x11B7,0x11D8,0x09B8,0x11D8,0x11D8,0x1197,0x1176,0x0933,0x1132,0x1931,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2930,0x2910,0x2910,0x2930,0x2110,0x2910,0x2910,0x2110,0x2910,0x2910,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x2930,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x10F1,0x1994,0x21F6,0x19D6,0x1995,0x0912,0x1112,0x1931,0x1930,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130,0x1910,0x1931,0x1932,0x1132,0x1195,0x2217,0x2A38,0x19B6,0x0913,0x1132,0x1111,0x1931,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x294F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930,0x20EF,0x210F,0x2110,0x2131,0x1932,0x1113,0x11B6,0x19F8,0x1A19,0x19D7,0x1113,0x1911,0x2111,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x210F,0x2110,0x212F,0x212F,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x210F,0x212F,0x2130,0x212F,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2930,0x210F,0x212F,0x2930,0x2930,0x2910,0x2910,0x2930,0x2110,0x2930,0x2110,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1932,0x1933,0x1133,0x1133,0x1975,0x21F7,0x2A17,0x21F6,0x1954,0x1133,0x1112,0x1932,0x1952,0x1951,0x1931,0x1930,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2930,0x2930,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1932,0x1932,0x1133,0x19B5,0x2A38,0x21F7,0x1195,0x0933,0x1112,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x1930,0x1931,0x1132,0x1112,0x21B5,0x2A17,0x21F6,0x1994,0x0912,0x1111,0x1952,0x2151,0x2131,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x210F,0x212F,0x2930,0x210F,0x2110,0x2910,0x2110,0x2110,0x2110,0x2130,0x2930,0x290F,0x290F,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x212F,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2930,0x210F,0x212F,0x2130,0x210F,0x2110,0x2131,0x1932,0x1932,0x1132,0x19B5,0x21F6,0x21D5,0x1994,0x1112,0x1911,0x1931,0x2131,0x2131,0x2131,0x1910,0x1911,0x1111,0x1153,0x19F7,0x1A18,0x1A18,0x1195,0x1132,0x1931,0x2131,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x292F,0x212F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x2910,0x290F,0x28EF,0x290F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x2111,0x1911,0x1912,0x1933,0x1995,0x21F7,0x2217,0x21F7,0x1975,0x1133,0x1932,0x1911,0x1911,0x2131,0x2130,0x2130,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x212F,0x2110,0x2930,0x290F,0x290F,0x292F,0x292F,0x212F,0x212F,0x292F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2131,0x1931,0x1932,0x1132,0x1132,0x1132,0x1152,0x1153,0x1153,0x1153,0x1153,0x1953,0x1153,0x1133,0x1953,0x1953,0x1933,0x1133,0x1132,0x1933,0x1133,0x1133,0x1153,0x1133,0x1153,0x1153,0x1153,0x1973,0x1973,0x1153,0x1132,0x1132,0x1132,0x1931,0x1952,0x1931,0x1931,0x1931,0x2152,0x1932,0x1112,0x1112,0x1133,0x1195,0x19D6,0x2217,0x19F7,0x19D6,0x1195,0x1154,0x1153,0x1132,0x1131,0x1131,0x1111,0x1132,0x1133,0x1174,0x1195,0x19D7,0x19F7,0x19F7,0x19D7,0x1175,0x1133,0x1112,0x1111,0x1931,0x2151,0x2150,0x2130,0x2130,0x2130,0x212F,0x210F,0x290F,0x292F,0x292F,0x290F,0x290F,0x2910,0x2930,0x2110,0x210F,0x2130,0x292F,0x292F,0x292F,0x210F,0x292F,0x212F,0x292F,0x210F,0x212F,0x212F,0x292F,0x2930,0x210F,0x210F,0x290F,0x292F,0x292F, + 0x1911,0x1932,0x1932,0x1153,0x1175,0x1196,0x11B7,0x11D8,0x11F8,0x11F9,0x11F8,0x11D7,0x11B6,0x1154,0x1154,0x1132,0x1932,0x1931,0x2131,0x2130,0x2110,0x2130,0x212F,0x2130,0x2130,0x1930,0x2130,0x2131,0x1911,0x1932,0x1133,0x1154,0x19B6,0x2217,0x2218,0x19D7,0x1995,0x1133,0x1112,0x1932,0x2152,0x2151,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x292F,0x290F,0x292F,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x212F,0x210F,0x2910,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x212F,0x292F,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x2110,0x210F,0x290F,0x2930,0x290F,0x2930,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1911,0x1910,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x210F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2930,0x210F,0x210F,0x2910,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x212F,0x292F,0x292F,0x210F,0x2930,0x210F,0x2110,0x2910,0x2930,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1153,0x1154,0x19B6,0x19D6,0x2218,0x1196,0x1175,0x0954,0x1154,0x0953,0x0933,0x0932,0x0932,0x0932,0x1132,0x0932,0x1113,0x1113,0x1113,0x1113,0x10F3,0x1113,0x1113,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1133,0x1132,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1112,0x1133,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1133,0x1133,0x1133,0x1134,0x0934,0x0955,0x0955,0x0176,0x01B8,0x01D9,0x01D9,0x01D9,0x01B9,0x01FA,0x01DA,0x01DA,0x01DA,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01FA,0x0A1A,0x09F9,0x11F8,0x19F7,0x1175,0x1112,0x1931,0x1931,0x2131,0x2130,0x2130,0x210F,0x210F,0x2130,0x210F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x290F,0x210F,0x212F,0x292F,0x292F,0x210F,0x2930,0x290F,0x2930,0x210F,0x210F,0x2910,0x2930,0x2930,0x210F,0x212F,0x292F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2131,0x1931,0x1932,0x0933,0x19D7,0x1A18,0x1A18,0x11B6,0x1113,0x1932,0x2131,0x2131,0x2130,0x2130,0x212F,0x292F,0x292F,0x212F,0x212F,0x2950,0x212F,0x2130,0x2131,0x1932,0x1132,0x1154,0x19D6,0x19F7,0x19D6,0x19B6,0x1153,0x1112,0x2131,0x2130,0x2930,0x210F,0x212F,0x212F,0x290F,0x2930,0x210F,0x2110,0x2110,0x2110,0x1931,0x1932,0x1933,0x1133,0x1155,0x1196,0x1196,0x11B7,0x11B7,0x11B7,0x1196,0x0934,0x1133,0x1132,0x1931,0x2131,0x2131,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x1911,0x10F1,0x1994,0x21F6,0x19D6,0x19B5,0x08F2,0x1112,0x1931,0x1930,0x2150,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2950,0x212F,0x212F,0x2130,0x2130,0x1910,0x1931,0x1932,0x1132,0x1195,0x2217,0x2A38,0x1195,0x1133,0x1132,0x1931,0x1930,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x210F,0x290F,0x290F,0x20EF,0x210F,0x2110,0x2131,0x1932,0x1133,0x1196,0x1A19,0x1A19,0x19F8,0x1113,0x1912,0x2131,0x2110,0x2110,0x2110,0x2910,0x2930,0x2930,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x212F,0x210F,0x212F,0x212F,0x2930,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x290F,0x2930,0x2910,0x2910,0x2110,0x2910,0x2110,0x2930,0x2130,0x2130,0x210F,0x2130,0x2130,0x2131,0x1911,0x1932,0x1953,0x1153,0x1133,0x1174,0x21F7,0x2A17,0x21F6,0x1974,0x10F2,0x1912,0x1931,0x1931,0x1951,0x1930,0x1930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x210F,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2910,0x290F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1932,0x1932,0x1133,0x19B5,0x2A38,0x19D6,0x19B5,0x0933,0x1132,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x1930,0x1931,0x1132,0x1132,0x21D5,0x2217,0x21D6,0x1995,0x1112,0x1112,0x2152,0x2151,0x2131,0x2110,0x2110,0x2130,0x2930,0x2110,0x2110,0x2930,0x210F,0x212F,0x292F,0x212F,0x2910,0x210F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2930,0x210F,0x290F,0x2930,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x2930,0x290F,0x292F,0x212F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x2930,0x2930,0x210F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2131,0x1931,0x1932,0x1132,0x1994,0x21F6,0x21D5,0x1994,0x1112,0x1911,0x1931,0x2131,0x2131,0x2131,0x1910,0x1931,0x1131,0x1153,0x19F7,0x1A18,0x19F7,0x11B6,0x1132,0x1931,0x1910,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x2930,0x290F,0x2930,0x290F,0x2930,0x212F,0x2930,0x212F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2130,0x212F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2930,0x210F,0x2930,0x2910,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2110,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x28F0,0x2910,0x290F,0x290F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2111,0x18F1,0x18F1,0x1932,0x1133,0x1995,0x21F7,0x21F7,0x21F7,0x1995,0x1953,0x1112,0x1911,0x1911,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x2930,0x292F,0x2930,0x292F,0x2130,0x2110,0x2130,0x2930,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x2930,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1912,0x1932,0x1932,0x1911,0x1911,0x1932,0x1932,0x1911,0x1911,0x1912,0x1932,0x1912,0x1932,0x1932,0x1112,0x1132,0x1132,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x2132,0x1931,0x1111,0x1112,0x0933,0x1174,0x19D6,0x21F7,0x2217,0x19D6,0x1174,0x1153,0x1133,0x1932,0x1132,0x1932,0x1132,0x1132,0x1132,0x1153,0x19B5,0x19B6,0x19F7,0x21F8,0x19B7,0x1175,0x1134,0x1132,0x1911,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2110,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x210F,0x290F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x292F, + 0x1931,0x1931,0x1912,0x1933,0x1154,0x1175,0x1196,0x11B7,0x11D8,0x11F8,0x1219,0x11F8,0x11D7,0x1196,0x1154,0x1133,0x1112,0x1932,0x2131,0x2131,0x2130,0x2150,0x192F,0x192F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x10F1,0x1112,0x1154,0x19B6,0x21F7,0x2218,0x19D6,0x1995,0x1113,0x1112,0x1952,0x1952,0x2151,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x212F,0x210F,0x2930,0x2110,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2910,0x2930,0x2910,0x2910,0x210F,0x290F,0x290F,0x2930,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x2110,0x2930,0x2130,0x2130,0x1910,0x2130,0x2131,0x2131,0x2131,0x2110,0x2110,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x210F,0x2910,0x2930,0x2930,0x2110,0x2110,0x210F,0x2910,0x2910,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1953,0x1154,0x1996,0x19B6,0x21F7,0x19F7,0x19D6,0x19B6,0x19B5,0x19B5,0x19B5,0x19B5,0x19D5,0x19B5,0x19B5,0x19B5,0x19B6,0x1995,0x1996,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x21B5,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1994,0x1994,0x1995,0x1994,0x19B5,0x1995,0x1995,0x1995,0x1995,0x1995,0x21B5,0x19B6,0x19B6,0x21B6,0x21D6,0x21D6,0x21D6,0x19B6,0x19D6,0x19D6,0x19D7,0x19D7,0x19D7,0x11D8,0x11F9,0x09D9,0x01F9,0x01FA,0x01B9,0x01B9,0x01D9,0x01D9,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01FA,0x01FB,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01D9,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x09F9,0x11F8,0x11D7,0x1154,0x1112,0x1932,0x1931,0x2130,0x2130,0x2110,0x2110,0x210F,0x2130,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x212F,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x2930,0x210F,0x290F,0x290F,0x2930,0x290F,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2110,0x1931,0x1932,0x1133,0x19F7,0x1A18,0x19F8,0x11B6,0x1113,0x1912,0x2131,0x2131,0x2130,0x2130,0x212F,0x292F,0x212F,0x210F,0x210F,0x212F,0x2930,0x2130,0x1910,0x1911,0x1132,0x1154,0x19D6,0x19D7,0x19B6,0x19B5,0x1154,0x1112,0x1931,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x2130,0x2130,0x2131,0x1952,0x1952,0x1133,0x0933,0x1195,0x1196,0x11B7,0x11B7,0x1196,0x1175,0x1133,0x1132,0x1931,0x1931,0x2131,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2110,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x210F,0x210F,0x2930,0x212F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x1911,0x10F1,0x2194,0x2A16,0x21D6,0x1994,0x0912,0x1112,0x1931,0x1951,0x2130,0x212F,0x212F,0x2950,0x210F,0x210F,0x2950,0x2950,0x210F,0x212F,0x212F,0x2130,0x2131,0x1931,0x1132,0x0912,0x19B5,0x2A38,0x19F7,0x1175,0x1113,0x1132,0x1931,0x2151,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x214F,0x214F,0x214F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2110,0x2131,0x2131,0x1932,0x1113,0x1196,0x19F8,0x1A19,0x19D7,0x1113,0x1912,0x2131,0x2131,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x290F,0x2910,0x2910,0x2910,0x2930,0x2130,0x2930,0x2130,0x2130,0x2130,0x2131,0x1931,0x1952,0x1953,0x1133,0x1153,0x1174,0x2217,0x2A17,0x21D6,0x1954,0x1112,0x10F1,0x1911,0x1931,0x1931,0x2151,0x2150,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x212F,0x2130,0x2130,0x2930,0x2930,0x210F,0x212F,0x290F,0x2930,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1932,0x1932,0x1133,0x19B5,0x2A38,0x21F7,0x1195,0x0913,0x1132,0x1952,0x1931,0x2131,0x2130,0x2130,0x2130,0x1910,0x1931,0x1932,0x1132,0x21F6,0x2A37,0x21F6,0x1994,0x0912,0x1132,0x1952,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x212F,0x2930,0x2930,0x290F,0x210F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x292F,0x292F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x212F,0x2930,0x2930,0x212F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1132,0x1994,0x21F6,0x21D5,0x1973,0x1112,0x1911,0x2131,0x2131,0x2131,0x1910,0x1930,0x1931,0x1111,0x1153,0x1A17,0x1A38,0x1A17,0x1195,0x1132,0x1911,0x1910,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x2110,0x2930,0x2110,0x210F,0x210F,0x2130,0x2930,0x2130,0x2930,0x210F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2951,0x2131,0x2111,0x1911,0x1912,0x1133,0x1975,0x21D7,0x2A18,0x21D7,0x19B5,0x1153,0x1132,0x1111,0x1931,0x2131,0x2951,0x2930,0x2130,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2130,0x2130,0x2950,0x2130,0x2130,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1930,0x1930,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x2132,0x1911,0x1911,0x2131,0x1911,0x1910,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x1931,0x2151,0x2131,0x1911,0x1111,0x1112,0x1133,0x1174,0x19B6,0x21F7,0x2217,0x19D6,0x1154,0x1133,0x1132,0x1132,0x1952,0x1952,0x1932,0x1132,0x1132,0x1153,0x1175,0x19B6,0x21F7,0x21F8,0x19D7,0x1175,0x1113,0x1112,0x1111,0x2132,0x2151,0x2151,0x1910,0x210F,0x210F,0x2130,0x2130,0x212F,0x210F,0x290F,0x292F,0x292F,0x210F,0x210F,0x290F,0x2910,0x290F,0x2910,0x290F,0x212F,0x292F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F, + 0x2151,0x1911,0x1911,0x1932,0x1933,0x1133,0x1175,0x1196,0x11D7,0x11F8,0x11F8,0x11F9,0x11F8,0x11D7,0x1196,0x1154,0x1133,0x1132,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x2110,0x2151,0x2130,0x2111,0x1911,0x1912,0x1133,0x1974,0x19B6,0x2217,0x2217,0x19D6,0x1995,0x1133,0x1132,0x1132,0x1932,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x2110,0x2110,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x2910,0x2910,0x2930,0x290F,0x290F,0x2910,0x2110,0x2930,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x290F,0x2110,0x2930,0x2910,0x210F,0x2910,0x2910,0x210F,0x2930,0x290F,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2910,0x2910,0x2910,0x210F,0x2930,0x210F,0x290F,0x2910,0x2910,0x2910,0x290F,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x2930,0x2910,0x2930,0x2910,0x2110,0x2110,0x2930,0x2930,0x2110,0x2910,0x210F,0x290F,0x210F,0x2110,0x210F,0x2110,0x210F,0x2930,0x2910,0x2110,0x2910,0x2910,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x2130,0x2130,0x2130,0x2150,0x2150,0x2130,0x1931,0x1931,0x1932,0x1133,0x1954,0x1975,0x19D6,0x2217,0x2217,0x21F7,0x2217,0x2217,0x2217,0x2217,0x2A37,0x2A37,0x2A38,0x2A38,0x2A38,0x3238,0x3238,0x3238,0x2A38,0x2A38,0x2A38,0x3238,0x2A18,0x2A18,0x2A38,0x2A38,0x2A38,0x2A38,0x2A38,0x2A38,0x2A38,0x2A38,0x3238,0x2A38,0x2A38,0x2A38,0x2A37,0x2A38,0x2A37,0x2A37,0x2A38,0x2A38,0x2A38,0x2A37,0x2A17,0x3238,0x3238,0x2A37,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A37,0x2A17,0x29F7,0x2A17,0x2A17,0x2A17,0x21F7,0x2A17,0x21F7,0x21F7,0x21F7,0x2218,0x2217,0x2217,0x19F7,0x19F8,0x1A18,0x19F8,0x11F8,0x1219,0x01F9,0x09FA,0x01D9,0x01D9,0x01D9,0x01B9,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01D9,0x01DA,0x01DA,0x01B9,0x01DA,0x01DA,0x01D9,0x01D9,0x09D8,0x11F8,0x11D7,0x1154,0x1132,0x1931,0x2131,0x1910,0x2130,0x2110,0x2110,0x210F,0x2130,0x210F,0x2930,0x210F,0x290F,0x290F,0x292F,0x290F,0x2910,0x2910,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x290F,0x290F,0x2930,0x210F,0x2130,0x2130,0x2130,0x1911,0x1112,0x1133,0x19D7,0x1A18,0x19F7,0x11B6,0x1113,0x1912,0x2131,0x2110,0x2130,0x2130,0x212F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x1911,0x1132,0x1154,0x19D6,0x2217,0x19D6,0x19B6,0x1133,0x1112,0x2131,0x2130,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2110,0x2131,0x1931,0x1931,0x1932,0x1132,0x1133,0x1174,0x11B6,0x1196,0x11B6,0x11B6,0x1154,0x1112,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x212F,0x2910,0x2930,0x210F,0x2930,0x2910,0x2110,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2110,0x2110,0x2130,0x290F,0x290F,0x2930,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x2930,0x212F,0x210F,0x2130,0x2110,0x2130,0x2110,0x2130,0x2131,0x1911,0x10D0,0x1994,0x2A16,0x21F6,0x19B5,0x0912,0x1112,0x1931,0x1931,0x2130,0x210F,0x212F,0x2950,0x210F,0x210F,0x2950,0x2130,0x212F,0x212F,0x2130,0x2130,0x1931,0x1952,0x1132,0x0912,0x19D6,0x2218,0x11B6,0x1175,0x1133,0x1932,0x1951,0x2131,0x2130,0x2130,0x212F,0x2130,0x2150,0x212F,0x210F,0x212F,0x212F,0x212F,0x214F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x2910,0x2110,0x2131,0x2152,0x1932,0x0913,0x11B7,0x19F8,0x1A19,0x19D8,0x1113,0x1932,0x2111,0x2111,0x2110,0x2110,0x2910,0x2930,0x210F,0x2930,0x2930,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x290F,0x2930,0x290F,0x290F,0x2910,0x2930,0x290F,0x2930,0x2930,0x2930,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x290F,0x2910,0x2910,0x2910,0x20EF,0x2910,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x1931,0x1932,0x1953,0x1153,0x1153,0x1174,0x21F7,0x2A38,0x21D6,0x1974,0x1932,0x1111,0x1911,0x1911,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x212F,0x210F,0x210F,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x210F,0x290F,0x290F,0x210F,0x292F,0x290F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1931,0x1132,0x1133,0x19B5,0x2217,0x21F7,0x11B5,0x0913,0x1132,0x1932,0x1931,0x2131,0x2110,0x2130,0x2130,0x2130,0x1931,0x1132,0x1132,0x21F5,0x2216,0x21F6,0x19B5,0x0912,0x1132,0x2152,0x2151,0x2151,0x2130,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x292F,0x2930,0x210F,0x210F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2910,0x2910,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x292F,0x292F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x2930,0x2930,0x2930,0x2130,0x2110,0x2110,0x2130,0x2130,0x2131,0x2151,0x1932,0x1112,0x1994,0x21F6,0x21D5,0x21B4,0x1111,0x1911,0x2131,0x2131,0x2131,0x2130,0x2130,0x1931,0x1131,0x1132,0x19F6,0x1A38,0x1A17,0x11B5,0x1132,0x1931,0x2131,0x2130,0x2130,0x2110,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2930,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x2110,0x2930,0x2110,0x2910,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2111,0x1912,0x1912,0x1133,0x1995,0x21D7,0x2A18,0x21F7,0x1995,0x1154,0x1132,0x1111,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2130,0x2130,0x2150,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x1930,0x1931,0x1931,0x1931,0x1931,0x2111,0x2131,0x2131,0x2131,0x2111,0x2110,0x2131,0x2111,0x2111,0x2111,0x2131,0x2131,0x2111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x2131,0x1931,0x2131,0x1931,0x1931,0x1931,0x1911,0x1911,0x1132,0x1133,0x1174,0x19B5,0x21F7,0x2217,0x19B6,0x1174,0x1133,0x1132,0x1132,0x1132,0x1932,0x1952,0x1132,0x1153,0x1153,0x1174,0x19B6,0x21F7,0x19F7,0x19D7,0x1175,0x1113,0x1112,0x1911,0x1911,0x2131,0x2151,0x2130,0x210F,0x210F,0x2130,0x2130,0x210F,0x212F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x212F,0x212F,0x292F,0x290F,0x212F,0x210F,0x290F,0x290F,0x210F,0x292F,0x290F,0x210F, + 0x2131,0x2131,0x1911,0x1911,0x1912,0x1932,0x1133,0x1154,0x1175,0x11B7,0x11F8,0x11F9,0x11F8,0x11F8,0x11D7,0x1195,0x1154,0x1133,0x1132,0x1932,0x1911,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x1931,0x1911,0x1112,0x1112,0x1174,0x19D6,0x19F7,0x1A17,0x21F7,0x1195,0x0953,0x1132,0x1112,0x2152,0x2131,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x210F,0x290F,0x290F,0x2130,0x212F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x290F,0x210F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2930,0x212F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2930,0x210F,0x290F,0x290F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x20EF,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x20EF,0x210F,0x2910,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x290F,0x210F,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x2910,0x210F,0x2910,0x210F,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x2130,0x2150,0x2130,0x2130,0x2131,0x1931,0x1932,0x1933,0x1933,0x21B5,0x21D6,0x1995,0x1995,0x19B5,0x19B5,0x21D6,0x21F6,0x21F6,0x21D6,0x21D6,0x21D6,0x21D6,0x21B6,0x21B6,0x21D6,0x21D6,0x21D6,0x21D7,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21F7,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21F6,0x21D6,0x21F6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21D6,0x21D6,0x21D6,0x21F6,0x21F6,0x21D6,0x21D6,0x21D7,0x19B6,0x19B6,0x19B6,0x11B6,0x11D7,0x11B6,0x11B7,0x09B7,0x09B8,0x09D9,0x01D9,0x01D9,0x01B8,0x01B9,0x01D9,0x01D9,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x09F9,0x09F9,0x09F9,0x11F8,0x19D7,0x1174,0x1112,0x1931,0x1931,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x2910,0x290F,0x290F,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x2930,0x212F,0x212F,0x290F,0x290F,0x212F,0x212F,0x290F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x1931,0x1111,0x1133,0x19F7,0x1A18,0x19F8,0x1196,0x0912,0x1111,0x1931,0x2131,0x2130,0x2930,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x2130,0x2131,0x1911,0x1132,0x1154,0x19B6,0x19F7,0x19D6,0x19B5,0x1133,0x1112,0x2111,0x2130,0x2110,0x290F,0x210F,0x292F,0x2930,0x2930,0x210F,0x210F,0x2110,0x2130,0x1910,0x1931,0x1932,0x1132,0x1133,0x1174,0x19D6,0x19D7,0x19F7,0x11B6,0x1154,0x1132,0x1932,0x1931,0x1910,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x290F,0x290F,0x2910,0x210F,0x210F,0x290F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x1911,0x10F1,0x1974,0x21F6,0x21D5,0x1994,0x08F2,0x1112,0x1931,0x1931,0x2130,0x2130,0x2150,0x2150,0x210F,0x212F,0x212F,0x2150,0x210F,0x2130,0x2130,0x2130,0x1951,0x1932,0x1132,0x0933,0x2217,0x2238,0x19D6,0x1174,0x1133,0x1953,0x1951,0x2131,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x2130,0x2130,0x2151,0x2152,0x1112,0x0913,0x11D7,0x1A19,0x1A19,0x19D7,0x10F2,0x1912,0x2111,0x2110,0x2910,0x2910,0x210F,0x2910,0x2930,0x210F,0x2930,0x2910,0x210F,0x210F,0x2930,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x290F,0x2930,0x290F,0x2910,0x2930,0x2910,0x2930,0x2130,0x2130,0x2130,0x2110,0x1931,0x1911,0x1932,0x1953,0x1154,0x1174,0x21D6,0x2A17,0x21D6,0x2195,0x1112,0x10F1,0x1911,0x2131,0x2131,0x2130,0x2130,0x190F,0x2130,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x292F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x210F,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x2130,0x2930,0x2130,0x210F,0x210F,0x212F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1112,0x1113,0x19B5,0x2217,0x19F7,0x11B5,0x0933,0x1112,0x1932,0x1931,0x2111,0x2130,0x2130,0x2130,0x1930,0x1931,0x1132,0x1132,0x21D5,0x2216,0x21D6,0x1994,0x1112,0x1112,0x2152,0x2151,0x2131,0x2110,0x2130,0x2110,0x2110,0x2910,0x210F,0x2930,0x2930,0x292F,0x210F,0x290F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x2930,0x210F,0x210F,0x210F,0x212F,0x2130,0x2110,0x210F,0x2130,0x2130,0x2131,0x2131,0x1932,0x1132,0x19B4,0x2A16,0x19D5,0x1994,0x1112,0x1911,0x1931,0x2131,0x1911,0x2131,0x1930,0x1931,0x1131,0x1153,0x1A16,0x1A17,0x19F7,0x11B5,0x1132,0x1931,0x1910,0x2110,0x2130,0x2130,0x2130,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x290F,0x210F,0x2930,0x210F,0x2930,0x290F,0x210F,0x2930,0x2930,0x2930,0x2910,0x2910,0x210F,0x2930,0x2930,0x2110,0x2110,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x2930,0x2110,0x210F,0x2910,0x210F,0x2930,0x2910,0x210F,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2111,0x1911,0x1932,0x1933,0x1975,0x21F7,0x2217,0x19F6,0x1195,0x1153,0x1112,0x10F1,0x10F0,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2951,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2151,0x1930,0x1931,0x2131,0x2131,0x2131,0x2111,0x2111,0x2131,0x2111,0x2110,0x2131,0x2131,0x1911,0x2111,0x2131,0x1911,0x1931,0x2131,0x1911,0x1911,0x2111,0x2111,0x2111,0x2111,0x2131,0x2131,0x1911,0x1911,0x1931,0x1911,0x1932,0x1132,0x1133,0x1154,0x19B5,0x21F7,0x21F7,0x19B5,0x1174,0x1153,0x1153,0x1152,0x1132,0x1932,0x1111,0x1111,0x1132,0x1153,0x1195,0x19D6,0x19D7,0x21F7,0x19D7,0x1175,0x1133,0x10F2,0x1911,0x2111,0x2131,0x2110,0x2110,0x210F,0x2130,0x2110,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F, + 0x2131,0x1911,0x2131,0x1911,0x1911,0x1912,0x1933,0x1153,0x1154,0x1176,0x11B7,0x11F8,0x11F9,0x11F9,0x11F8,0x11D7,0x1195,0x1174,0x1133,0x1132,0x1931,0x1911,0x2131,0x2151,0x2130,0x2150,0x2130,0x2110,0x2110,0x2130,0x2131,0x2151,0x1931,0x1111,0x1133,0x1174,0x19D6,0x2217,0x1A17,0x19F6,0x19B5,0x1133,0x1132,0x1932,0x2151,0x2131,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x292F,0x290F,0x290F,0x212F,0x210F,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x2930,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x212F,0x292F,0x290F,0x290F,0x2930,0x2110,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2910,0x290F,0x290F,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2910,0x28EF,0x290F,0x290F,0x290F,0x2910,0x210F,0x2910,0x210F,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x210F,0x2910,0x210F,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x212F,0x212F,0x2130,0x2950,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1912,0x1912,0x1932,0x1953,0x1933,0x1953,0x1953,0x1973,0x1153,0x1973,0x1974,0x1954,0x1974,0x1974,0x1974,0x1974,0x1954,0x1954,0x1974,0x1974,0x1954,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1174,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1954,0x1974,0x1974,0x1954,0x1974,0x1974,0x1974,0x1974,0x1174,0x1994,0x1994,0x1994,0x1974,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x21B5,0x1995,0x19B5,0x19B6,0x21D6,0x19B6,0x19D6,0x19D6,0x19D7,0x19D7,0x11D7,0x11D8,0x11F9,0x09D9,0x09D9,0x01B8,0x09F9,0x01D8,0x01D9,0x01B9,0x01B9,0x01B9,0x09D9,0x01B9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01B9,0x01D9,0x01DA,0x01B9,0x01B9,0x01B9,0x01B9,0x01B9,0x01D9,0x01B9,0x01D9,0x01B9,0x01D9,0x01B9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x01FA,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x09D9,0x09D9,0x09F9,0x09D8,0x11D8,0x11B6,0x1154,0x1112,0x2132,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x2930,0x2130,0x2130,0x2110,0x2130,0x1931,0x1111,0x1133,0x19D6,0x1A18,0x19F8,0x19B6,0x0912,0x1932,0x2131,0x2130,0x2130,0x2930,0x212F,0x292F,0x292F,0x292F,0x210F,0x212F,0x212F,0x2130,0x2130,0x1911,0x1132,0x1154,0x19B6,0x19F7,0x19D6,0x19B6,0x1133,0x1912,0x2131,0x2110,0x2930,0x290F,0x212F,0x210F,0x290F,0x2930,0x210F,0x210F,0x2130,0x2130,0x2110,0x1911,0x1932,0x1932,0x1112,0x1154,0x19B5,0x19D6,0x11D6,0x1195,0x0913,0x1132,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x2930,0x292F,0x290F,0x292F,0x210F,0x290F,0x210F,0x210F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2930,0x290F,0x210F,0x212F,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x1911,0x10F1,0x1974,0x21D6,0x21D5,0x19B5,0x0912,0x1112,0x1952,0x1931,0x2150,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x2950,0x212F,0x2130,0x2130,0x2130,0x1931,0x1932,0x0932,0x0954,0x1A17,0x1A18,0x19F7,0x1175,0x1133,0x1953,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210E,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2131,0x2151,0x1931,0x1112,0x0913,0x19D7,0x19F8,0x1A19,0x19D7,0x10F2,0x1911,0x2111,0x2110,0x2910,0x2110,0x2930,0x2910,0x210F,0x210F,0x2930,0x290F,0x2930,0x210F,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2930,0x2930,0x2130,0x2130,0x2131,0x1931,0x1931,0x1932,0x1933,0x1153,0x1174,0x21D6,0x2A17,0x21D6,0x1974,0x1933,0x1932,0x1911,0x1910,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x2150,0x212F,0x212F,0x212F,0x292F,0x210F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x292F,0x292F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1932,0x1112,0x1995,0x2217,0x19F7,0x11B6,0x0933,0x1132,0x1952,0x1931,0x2131,0x2130,0x2130,0x2130,0x1930,0x1931,0x1132,0x0932,0x19D5,0x2A17,0x21F6,0x1995,0x1112,0x1112,0x2152,0x2151,0x2131,0x2130,0x2130,0x2110,0x2930,0x2910,0x210F,0x2930,0x212F,0x2930,0x292F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x212F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x2930,0x2910,0x290F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x212F,0x292F,0x292F,0x212F,0x210F,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x2930,0x210F,0x2930,0x2110,0x2110,0x2130,0x2131,0x2151,0x1931,0x1132,0x1994,0x21F6,0x19D5,0x19B4,0x1112,0x1931,0x1931,0x2131,0x2131,0x2131,0x1910,0x1931,0x1131,0x1153,0x1A17,0x1A17,0x11F7,0x11B6,0x1132,0x1931,0x1930,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x2930,0x212F,0x290F,0x290F,0x290F,0x2930,0x212F,0x2930,0x2930,0x210F,0x2930,0x2930,0x212F,0x2930,0x2930,0x2130,0x212F,0x212F,0x2930,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x210F,0x210F,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x210F,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2111,0x2111,0x1911,0x1912,0x1953,0x1975,0x19D7,0x2218,0x19F7,0x19B5,0x0953,0x0912,0x10F1,0x1111,0x1910,0x1910,0x1910,0x1910,0x2131,0x2131,0x1911,0x2111,0x2111,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2130,0x1910,0x2131,0x2111,0x2130,0x2131,0x2131,0x2131,0x1931,0x1931,0x1931,0x1931,0x1910,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1132,0x1133,0x1154,0x19B6,0x21F7,0x2217,0x19B5,0x1194,0x1153,0x1133,0x1152,0x1952,0x1932,0x1111,0x1132,0x1132,0x1153,0x19B5,0x19D6,0x19F7,0x21F7,0x19D7,0x1175,0x1133,0x1112,0x1911,0x2131,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x292F,0x2930,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x292F, + 0x2132,0x1931,0x1911,0x1911,0x1911,0x1911,0x1912,0x1132,0x1153,0x1154,0x1196,0x11B7,0x19F8,0x11F8,0x1A39,0x11F8,0x11D6,0x1195,0x1154,0x1133,0x1132,0x1931,0x1911,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2151,0x2152,0x1931,0x1112,0x1133,0x1174,0x19D6,0x2217,0x2217,0x19D6,0x1195,0x1153,0x1132,0x1952,0x1931,0x1910,0x2110,0x2110,0x2130,0x210F,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x2930,0x210F,0x290F,0x212F,0x212F,0x292F,0x292F,0x2930,0x2930,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x2910,0x290F,0x290F,0x2930,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x2910,0x210F,0x210F,0x2910,0x2930,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x2910,0x2910,0x2910,0x28F0,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x28EF,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x210F,0x2910,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2910,0x210F,0x210F,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2930,0x2910,0x2110,0x2110,0x2110,0x2130,0x210F,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2111,0x2132,0x1912,0x1912,0x1912,0x1912,0x1112,0x1132,0x1932,0x1112,0x1112,0x1912,0x1112,0x1112,0x1112,0x1132,0x1112,0x1113,0x1133,0x1113,0x1133,0x1933,0x1113,0x1113,0x1113,0x1113,0x1113,0x1112,0x1112,0x1112,0x1113,0x1113,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1112,0x1112,0x1133,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1132,0x1132,0x1112,0x1112,0x1112,0x1132,0x1933,0x1133,0x1933,0x1153,0x1153,0x1154,0x1974,0x1995,0x1175,0x1195,0x11B7,0x11D7,0x19F8,0x1219,0x1A19,0x11F8,0x1A19,0x1219,0x09B8,0x09D8,0x09F9,0x09F9,0x09D8,0x09D8,0x09D9,0x09D8,0x09D9,0x09F9,0x09D9,0x09D9,0x09F9,0x09D9,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x01D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01D9,0x09F9,0x01D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09B9,0x09B9,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x09F8,0x11F8,0x19F7,0x19D6,0x1153,0x1912,0x1911,0x2131,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2130,0x2130,0x2131,0x1931,0x1111,0x1133,0x19D6,0x1A18,0x19F8,0x1196,0x1112,0x1911,0x2131,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x2950,0x2130,0x2130,0x1911,0x1132,0x1174,0x19F6,0x19F7,0x19D6,0x1995,0x1133,0x1912,0x2131,0x2110,0x2110,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2111,0x2131,0x1932,0x1112,0x1153,0x19D6,0x21F7,0x19F7,0x11B5,0x0912,0x1132,0x1931,0x2131,0x2110,0x2130,0x210F,0x212F,0x2130,0x212F,0x2930,0x292F,0x212F,0x292F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x2930,0x2930,0x2110,0x2110,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2930,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x10F1,0x2174,0x29F6,0x21F6,0x1994,0x1112,0x1112,0x1931,0x1931,0x2130,0x2150,0x2150,0x190F,0x212F,0x212F,0x2950,0x2150,0x2130,0x2130,0x2130,0x2131,0x1931,0x1112,0x0933,0x0954,0x19F7,0x1A18,0x1A18,0x11B6,0x0933,0x1132,0x1931,0x1931,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2151,0x2131,0x1911,0x1112,0x1154,0x19F8,0x1A18,0x1A39,0x19D7,0x1112,0x2111,0x2111,0x2110,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x28EF,0x20EF,0x290F,0x290F,0x2950,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x292F,0x292F,0x292F,0x290F,0x290F,0x2910,0x2930,0x2130,0x2130,0x2110,0x1910,0x1931,0x1932,0x1933,0x1954,0x1175,0x21D6,0x21F7,0x21D6,0x1974,0x1132,0x1912,0x1911,0x1931,0x2130,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x290F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1132,0x1133,0x19B5,0x2217,0x19F7,0x11B5,0x0933,0x1132,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x1910,0x1931,0x1132,0x1132,0x19D5,0x2217,0x21F6,0x1995,0x1112,0x1112,0x1932,0x2151,0x2151,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x2910,0x2110,0x2930,0x2930,0x212F,0x210F,0x290F,0x290F,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x210F,0x290F,0x210F,0x292F,0x2930,0x2930,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x1931,0x1132,0x19B4,0x21F5,0x21D5,0x1994,0x1112,0x1911,0x2131,0x2131,0x2131,0x2131,0x1931,0x1931,0x1112,0x1133,0x1A17,0x1A38,0x1A18,0x11B5,0x1132,0x1911,0x1930,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x212F,0x212F,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x212F,0x2930,0x210F,0x212F,0x2930,0x2110,0x2110,0x2930,0x212F,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x210F,0x2910,0x2910,0x2930,0x2910,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2110,0x2910,0x2930,0x2130,0x2130,0x2110,0x2110,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2131,0x2931,0x2131,0x2131,0x2111,0x1911,0x1912,0x1953,0x19B5,0x19D6,0x1A17,0x1A17,0x11B5,0x0954,0x0912,0x08F1,0x08F1,0x10F1,0x10F1,0x10F1,0x10F1,0x10F1,0x1911,0x1911,0x10F1,0x1911,0x1911,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x18F1,0x1911,0x1911,0x1111,0x1111,0x1111,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1912,0x1112,0x1112,0x1112,0x1112,0x10F1,0x10F1,0x1911,0x1911,0x1911,0x1911,0x1912,0x1911,0x18F1,0x10F1,0x10F1,0x1112,0x1112,0x1133,0x1133,0x1154,0x1195,0x21F7,0x21F7,0x19B6,0x1995,0x1153,0x1132,0x1112,0x1132,0x1952,0x1932,0x1132,0x1132,0x1153,0x1994,0x19D6,0x19F7,0x2218,0x19D6,0x1175,0x1133,0x1132,0x1911,0x1911,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x292F,0x212F,0x292F,0x210F,0x290F,0x210F,0x292F,0x292F,0x292F,0x292F, + 0x1932,0x1932,0x1911,0x1931,0x1931,0x1931,0x1911,0x1111,0x1132,0x1953,0x1154,0x1175,0x11B7,0x19F8,0x1218,0x1218,0x1218,0x11D6,0x1195,0x1174,0x1133,0x1132,0x1911,0x1931,0x2131,0x2110,0x2930,0x2130,0x2130,0x2130,0x2110,0x2151,0x2151,0x1931,0x1111,0x1112,0x0912,0x1174,0x19D6,0x19F7,0x2217,0x21F6,0x1195,0x1153,0x1132,0x1932,0x2131,0x2111,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x292F,0x210F,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2910,0x2910,0x290F,0x210F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x290F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x20EF,0x210F,0x210F,0x2910,0x210F,0x210F,0x2910,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2910,0x290F,0x2910,0x2910,0x210F,0x290F,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x2910,0x210F,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2910,0x2910,0x290F,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2910,0x2110,0x2910,0x2110,0x210F,0x210F,0x2130,0x2930,0x212F,0x212F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2130,0x2131,0x2111,0x2111,0x2111,0x1911,0x1912,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1912,0x1912,0x1932,0x1932,0x1912,0x1932,0x1912,0x1912,0x1932,0x1912,0x1112,0x1912,0x1932,0x1912,0x1912,0x1912,0x1932,0x1912,0x1912,0x1932,0x1912,0x1932,0x1912,0x1112,0x1112,0x1932,0x1932,0x1912,0x1912,0x1912,0x1912,0x1932,0x1932,0x1912,0x1912,0x1932,0x1912,0x1912,0x1912,0x1932,0x1911,0x1932,0x1932,0x1931,0x1931,0x1932,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1912,0x1912,0x1912,0x1911,0x1912,0x1912,0x1912,0x1132,0x1132,0x1133,0x1134,0x1154,0x1175,0x1196,0x1196,0x11B6,0x11B6,0x19D7,0x11D7,0x19D8,0x19F8,0x11D8,0x11F8,0x19F8,0x11D8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x19F9,0x11D8,0x11F8,0x11F9,0x11D8,0x11D8,0x11F9,0x11D8,0x11F8,0x11D8,0x11F8,0x11D8,0x11F8,0x11F8,0x11F8,0x09D8,0x11F9,0x11D8,0x11D8,0x11D8,0x11B8,0x11D8,0x11B8,0x11B8,0x11D8,0x11D8,0x11D8,0x11F8,0x19D7,0x19D6,0x21B5,0x1932,0x1911,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2110,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x290F,0x212F,0x292F,0x292F,0x212F,0x212F,0x292F,0x212F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1112,0x0933,0x19D6,0x1A18,0x1A18,0x11B6,0x1132,0x1911,0x2131,0x2130,0x2130,0x2130,0x212F,0x292F,0x212F,0x292F,0x292F,0x292F,0x2950,0x2130,0x2130,0x1931,0x1132,0x1154,0x19D6,0x19D6,0x19F7,0x19B5,0x1133,0x1912,0x2111,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2131,0x1932,0x1112,0x1133,0x19B5,0x19F6,0x19D6,0x19B5,0x0912,0x1132,0x1931,0x2131,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x2930,0x212F,0x292F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x2910,0x2910,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1911,0x10F2,0x2174,0x29F6,0x21F6,0x1994,0x1112,0x1112,0x1952,0x1931,0x2151,0x2130,0x212F,0x190F,0x212F,0x2130,0x2150,0x2150,0x2130,0x2130,0x2130,0x1910,0x1932,0x1132,0x1133,0x0954,0x11D7,0x1A18,0x1A18,0x19F7,0x0934,0x1132,0x1932,0x1931,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2150,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2130,0x2151,0x1931,0x1111,0x1133,0x1175,0x19F8,0x19F8,0x1A18,0x19B6,0x1932,0x2111,0x2111,0x2910,0x2910,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x210F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x20CE,0x20CE,0x28EF,0x290F,0x3150,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x2930,0x2930,0x2130,0x2131,0x2131,0x1911,0x1132,0x1974,0x1174,0x21D6,0x2A17,0x21F7,0x1154,0x1133,0x1111,0x1911,0x1911,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x2930,0x290F,0x290F,0x210F,0x212F,0x2130,0x212F,0x212F,0x2930,0x2930,0x212F,0x2930,0x2910,0x2930,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1932,0x1133,0x19B5,0x2217,0x1A17,0x19B6,0x0933,0x1132,0x1952,0x1911,0x2131,0x2130,0x2130,0x2130,0x1930,0x1931,0x1132,0x1132,0x19D5,0x2216,0x19F6,0x19B5,0x08F2,0x1932,0x1952,0x2151,0x2131,0x2110,0x2110,0x2930,0x2930,0x2930,0x2110,0x210F,0x212F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x2930,0x2910,0x2110,0x2110,0x2930,0x210F,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2930,0x210F,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1132,0x1994,0x21F5,0x21D5,0x1994,0x1112,0x1911,0x2131,0x2131,0x2131,0x2131,0x1911,0x1931,0x1932,0x1133,0x19F7,0x1A38,0x1A18,0x11B5,0x1132,0x1931,0x1930,0x2130,0x2110,0x2130,0x212F,0x212F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x210F,0x2130,0x2110,0x2930,0x210F,0x212F,0x2930,0x2930,0x210F,0x290F,0x2930,0x210F,0x212F,0x212F,0x210F,0x2930,0x2110,0x2110,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x210F,0x2910,0x2910,0x2930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2931,0x2110,0x2110,0x2131,0x2111,0x1911,0x1932,0x1153,0x19B5,0x19F7,0x1A17,0x2237,0x19F6,0x1195,0x1174,0x0913,0x0912,0x08F2,0x08F2,0x08F2,0x1113,0x08F2,0x0912,0x1113,0x1112,0x0912,0x1112,0x1112,0x1112,0x1112,0x1112,0x0912,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1133,0x1112,0x1112,0x1112,0x0912,0x0912,0x1132,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x0912,0x0912,0x1112,0x1112,0x1112,0x0912,0x1113,0x0912,0x1133,0x0933,0x0913,0x1113,0x1113,0x1112,0x1112,0x1133,0x1132,0x1132,0x1113,0x1112,0x1112,0x1112,0x1113,0x1133,0x1133,0x1154,0x1195,0x19D6,0x2217,0x2217,0x19B6,0x1995,0x1153,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1153,0x1174,0x19D6,0x19F7,0x2217,0x21F7,0x1995,0x1133,0x1132,0x1932,0x1931,0x2110,0x2130,0x2110,0x2910,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x212F,0x2930,0x210F,0x292F,0x210F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F, + 0x1953,0x1132,0x1952,0x1932,0x1931,0x1911,0x2131,0x1931,0x1932,0x1112,0x1933,0x1154,0x1175,0x11B7,0x11D8,0x1218,0x1218,0x11F8,0x11D7,0x1196,0x1174,0x1133,0x1132,0x1912,0x1911,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x2110,0x2151,0x2151,0x1931,0x1111,0x1112,0x1133,0x1174,0x19B5,0x2217,0x2217,0x19F6,0x1995,0x1153,0x1132,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x210F,0x212F,0x210F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x292F,0x292F,0x210F,0x2130,0x212F,0x2130,0x2930,0x212F,0x2930,0x212F,0x210F,0x210F,0x290F,0x2930,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2930,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x210F,0x2910,0x2910,0x2910,0x210F,0x2110,0x210F,0x210F,0x2930,0x290F,0x2910,0x2930,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x290F,0x210F,0x210F,0x292F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x292F,0x290F,0x210F,0x2910,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x2111,0x2111,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x2132,0x1931,0x2152,0x1932,0x1931,0x1931,0x1932,0x1932,0x1931,0x1911,0x1932,0x1911,0x1952,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1932,0x1931,0x1931,0x1931,0x2132,0x1911,0x1931,0x1911,0x2132,0x1911,0x1931,0x1911,0x2131,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1911,0x2151,0x2131,0x2131,0x1911,0x1911,0x1911,0x2131,0x1931,0x1911,0x1911,0x2132,0x1932,0x1932,0x1912,0x1133,0x1133,0x1154,0x1154,0x1154,0x1154,0x1154,0x1955,0x1975,0x1155,0x1155,0x1175,0x1175,0x1155,0x1175,0x1175,0x1176,0x1175,0x1996,0x1175,0x1175,0x1196,0x1176,0x1176,0x1196,0x1175,0x1196,0x1996,0x1196,0x1176,0x1196,0x1196,0x1196,0x1196,0x1196,0x11B6,0x1176,0x1196,0x1196,0x1175,0x1996,0x1996,0x1155,0x1176,0x1996,0x1196,0x19B6,0x19B6,0x19B6,0x19B6,0x1995,0x1974,0x2173,0x1932,0x1910,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x212F,0x212F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x2110,0x2910,0x210F,0x210F,0x290F,0x210F,0x2910,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x290F,0x290F,0x292F,0x212F,0x212F,0x292F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2130,0x2130,0x2130,0x1931,0x1112,0x1133,0x19F7,0x1A38,0x1A18,0x11B6,0x1133,0x1932,0x2131,0x2110,0x2130,0x2950,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x2930,0x2130,0x2130,0x1931,0x1132,0x1174,0x19F6,0x19F7,0x19F7,0x19B5,0x1133,0x1912,0x2131,0x2110,0x2110,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2130,0x2110,0x2110,0x2131,0x1932,0x1912,0x1133,0x1995,0x21F7,0x19D6,0x1195,0x0912,0x1132,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2130,0x2130,0x210F,0x2930,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2930,0x2930,0x212F,0x212F,0x210F,0x2930,0x2930,0x210F,0x2910,0x2910,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2131,0x2131,0x1912,0x10F2,0x2174,0x29F6,0x21D6,0x1995,0x1112,0x1112,0x1952,0x2131,0x2151,0x2150,0x2130,0x190F,0x212F,0x2150,0x2150,0x2150,0x2110,0x2131,0x1910,0x1911,0x1932,0x1153,0x0934,0x1175,0x11D7,0x11D7,0x1A18,0x19F8,0x0954,0x0933,0x1132,0x1952,0x2151,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2110,0x1911,0x1931,0x1952,0x1153,0x21F6,0x19F8,0x19F8,0x19F8,0x1995,0x1932,0x2131,0x2130,0x2110,0x2910,0x2910,0x2930,0x2930,0x210F,0x2930,0x290F,0x290F,0x2930,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x28EE,0x28EF,0x290F,0x28CE,0x20AD,0x20AD,0x20CE,0x20CE,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2930,0x292F,0x2930,0x2130,0x2130,0x2130,0x2111,0x1911,0x1953,0x1974,0x1174,0x19B6,0x2A38,0x2A17,0x1974,0x1112,0x1912,0x1931,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x292F,0x212F,0x292F,0x212F,0x212F,0x212F,0x292F,0x290F,0x210F,0x2910,0x2110,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2110,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2150,0x2131,0x1931,0x1932,0x1133,0x19B5,0x2218,0x21F7,0x19B6,0x0933,0x1132,0x1952,0x1931,0x2131,0x2130,0x2130,0x2130,0x1951,0x1931,0x1132,0x1132,0x19D5,0x2216,0x21F6,0x1995,0x08F2,0x1112,0x2152,0x2152,0x2131,0x2110,0x2130,0x2130,0x2930,0x2910,0x2110,0x2110,0x2930,0x212F,0x210F,0x290F,0x2930,0x210F,0x2910,0x2910,0x2930,0x2930,0x2110,0x2110,0x210F,0x2930,0x210F,0x290F,0x290F,0x2910,0x290F,0x290F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2910,0x210F,0x2910,0x2910,0x210F,0x2930,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2111,0x1931,0x1931,0x1132,0x1994,0x21F5,0x19D5,0x1994,0x1112,0x1931,0x2131,0x2131,0x2131,0x2111,0x1911,0x1931,0x1932,0x1153,0x19F7,0x1218,0x1A18,0x1195,0x1133,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x210F,0x292F,0x292F,0x210F,0x292F,0x212F,0x292F,0x292F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x212F,0x2930,0x210F,0x212F,0x2130,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x28F0,0x28EF,0x290F,0x2910,0x290F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x292F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x1911,0x1112,0x1133,0x1195,0x19F7,0x1A38,0x1A58,0x1A38,0x1A18,0x19F7,0x19F7,0x19D7,0x19B7,0x1196,0x1196,0x11B7,0x1196,0x1196,0x1196,0x11B6,0x1196,0x11B6,0x1195,0x11B6,0x1196,0x19B6,0x1996,0x1996,0x19B6,0x19B6,0x11B6,0x11B6,0x11B6,0x19B6,0x19D6,0x11B6,0x11B6,0x1196,0x11B6,0x11B6,0x1196,0x11D6,0x11B6,0x11B6,0x19B6,0x1196,0x11B6,0x1196,0x1195,0x11B5,0x1195,0x1195,0x1195,0x11B6,0x1196,0x11B6,0x11B6,0x11B6,0x11B6,0x19B6,0x11B6,0x11D6,0x11B6,0x11B6,0x19B6,0x11B6,0x11B5,0x11B6,0x11B5,0x19D6,0x19D6,0x19B6,0x19D6,0x19B6,0x19B6,0x19D6,0x19D6,0x19F7,0x19F7,0x1A17,0x1A17,0x1A17,0x19D6,0x1174,0x1154,0x1133,0x1132,0x1132,0x1932,0x1132,0x1132,0x1133,0x1174,0x1995,0x19F6,0x19D7,0x19D7,0x21F7,0x1995,0x1133,0x1112,0x1111,0x1931,0x2151,0x2130,0x2110,0x2130,0x210F,0x2930,0x2930,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x212F,0x210F,0x292F,0x212F, + 0x21F6,0x1174,0x1153,0x1932,0x1932,0x1911,0x2131,0x2131,0x1911,0x1912,0x1912,0x1933,0x1154,0x1175,0x11D7,0x11F8,0x11F8,0x1218,0x11F8,0x11D7,0x11B6,0x1175,0x1154,0x1933,0x1932,0x1911,0x2131,0x2131,0x2110,0x2110,0x2130,0x2110,0x2130,0x2151,0x2151,0x1931,0x1111,0x1112,0x1133,0x1174,0x19B5,0x2217,0x2217,0x19D6,0x19B5,0x1133,0x1132,0x1932,0x1931,0x2131,0x2131,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x290F,0x290F,0x2930,0x210F,0x2930,0x292F,0x292F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2930,0x2930,0x212F,0x2930,0x210F,0x210F,0x2930,0x212F,0x210F,0x212F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x2930,0x210F,0x210F,0x2130,0x210F,0x212F,0x210F,0x2930,0x210F,0x210F,0x2110,0x2130,0x212F,0x212F,0x2930,0x290F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x2130,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2110,0x2910,0x2910,0x210F,0x2930,0x210F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x1931,0x1930,0x2131,0x2111,0x2131,0x2111,0x2111,0x1931,0x1931,0x2131,0x2131,0x1911,0x2131,0x2131,0x2111,0x1911,0x2131,0x2131,0x1910,0x1911,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2111,0x2111,0x2131,0x2111,0x2131,0x2111,0x2131,0x2131,0x2131,0x2110,0x2111,0x1910,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x2131,0x2111,0x1911,0x1932,0x1932,0x1933,0x1932,0x1953,0x1933,0x1933,0x1913,0x1933,0x1113,0x1133,0x1113,0x1133,0x1934,0x1133,0x1113,0x1133,0x1133,0x1134,0x1133,0x1133,0x1133,0x1134,0x1134,0x1133,0x1134,0x1134,0x1113,0x1134,0x1134,0x1134,0x1133,0x1134,0x1134,0x1133,0x1134,0x1134,0x1133,0x1133,0x1133,0x1153,0x1133,0x1133,0x1134,0x1134,0x1134,0x1134,0x1134,0x1154,0x1133,0x1932,0x1912,0x1911,0x2111,0x2110,0x2110,0x2130,0x2930,0x210F,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x2910,0x2910,0x290F,0x292F,0x2930,0x210F,0x2930,0x210F,0x2910,0x2910,0x290F,0x290F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x210F,0x292F,0x292F,0x292F,0x292F,0x2130,0x2130,0x2131,0x2131,0x1931,0x1112,0x1133,0x19F7,0x1A18,0x11F7,0x19D6,0x1133,0x1932,0x2131,0x2130,0x2130,0x2950,0x212F,0x210F,0x210F,0x292F,0x210F,0x292F,0x212F,0x2130,0x2130,0x1931,0x1132,0x1174,0x19D6,0x19F7,0x19D6,0x19B5,0x1113,0x1912,0x2131,0x2130,0x2110,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2130,0x2110,0x2111,0x1932,0x1932,0x1133,0x1995,0x19D6,0x19D6,0x19B5,0x1132,0x1111,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x2930,0x292F,0x2930,0x212F,0x2930,0x210F,0x210F,0x2930,0x212F,0x212F,0x2930,0x2930,0x2930,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x210F,0x2130,0x212F,0x212F,0x210F,0x2110,0x210F,0x2930,0x2110,0x2910,0x2910,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2111,0x2132,0x1912,0x10F2,0x1974,0x29F6,0x21D6,0x21B5,0x1112,0x1112,0x1952,0x2151,0x2150,0x2130,0x212F,0x212F,0x212F,0x2150,0x2130,0x2151,0x2130,0x2131,0x1911,0x1911,0x1933,0x1154,0x0954,0x0976,0x11D7,0x11D8,0x11F8,0x11F8,0x11B6,0x0954,0x1153,0x1952,0x1952,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x290F,0x210F,0x290F,0x292F,0x212F,0x210F,0x290F,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x1931,0x1911,0x1932,0x1132,0x1995,0x21F7,0x19F7,0x19F8,0x19D7,0x1154,0x1932,0x2131,0x2130,0x2110,0x2910,0x2930,0x2930,0x210F,0x292F,0x292F,0x290F,0x2930,0x210F,0x212F,0x292F,0x2930,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x28EE,0x28CE,0x28CD,0x28AD,0x184B,0x49F2,0x4190,0x208D,0x20CE,0x28EF,0x292F,0x290F,0x290F,0x292F,0x290F,0x2910,0x2930,0x290F,0x210F,0x2930,0x2930,0x2130,0x2130,0x2131,0x1932,0x1953,0x1174,0x1996,0x2A18,0x2A17,0x1174,0x1113,0x1912,0x1931,0x1910,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x2930,0x292F,0x292F,0x292F,0x292F,0x212F,0x290F,0x292F,0x210F,0x2910,0x2110,0x210F,0x2110,0x210F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x19B5,0x21F7,0x19F7,0x19B6,0x1133,0x1132,0x1932,0x1931,0x2130,0x2130,0x2130,0x2150,0x1951,0x1931,0x1132,0x1132,0x19B5,0x2217,0x21F6,0x1995,0x08F2,0x1112,0x2152,0x2151,0x2131,0x2110,0x2110,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x290F,0x2930,0x2910,0x2910,0x2930,0x2110,0x2910,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2930,0x210F,0x2910,0x2110,0x2910,0x2110,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2111,0x1931,0x1931,0x1132,0x1994,0x21F5,0x19D5,0x1994,0x1132,0x1911,0x2131,0x2131,0x2111,0x2131,0x1911,0x1931,0x1112,0x1153,0x19F7,0x1A38,0x11F8,0x11B6,0x0932,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2130,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x210F,0x2130,0x2930,0x2930,0x2930,0x210F,0x2910,0x2110,0x2110,0x2110,0x2930,0x212F,0x210F,0x212F,0x212F,0x2930,0x2110,0x290F,0x290F,0x2910,0x2110,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x2930,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x1911,0x1931,0x1111,0x1133,0x1195,0x11D6,0x2238,0x2259,0x2279,0x2259,0x2A5A,0x2A7A,0x2A5A,0x2A5A,0x2A7A,0x2A5A,0x225A,0x2A7A,0x2279,0x2259,0x2259,0x2A79,0x2259,0x2259,0x2A59,0x2A79,0x2A59,0x2A39,0x2259,0x2A59,0x2259,0x2259,0x2259,0x227A,0x2259,0x2A7A,0x2259,0x2239,0x2259,0x2259,0x2259,0x227A,0x227A,0x2A7A,0x2259,0x2259,0x2259,0x2239,0x2259,0x2239,0x2A59,0x2A59,0x2A59,0x2259,0x2259,0x2259,0x2279,0x2279,0x2259,0x2259,0x2259,0x2259,0x2259,0x2259,0x2239,0x2259,0x2259,0x2258,0x2258,0x2259,0x2238,0x2259,0x1A18,0x2238,0x2238,0x1A18,0x19F8,0x1A18,0x19F7,0x1A18,0x19F7,0x19D6,0x1175,0x1154,0x1153,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1154,0x1195,0x19D6,0x19D7,0x21F7,0x21F7,0x1995,0x1154,0x1132,0x1911,0x1931,0x1910,0x2130,0x2130,0x210F,0x212F,0x2930,0x2930,0x2930,0x210F,0x210F,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x294F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2151,0x2131,0x2131,0x2151,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x290F,0x2930,0x212F,0x212F,0x212F,0x212F, + 0x2237,0x19D6,0x1174,0x1133,0x1112,0x1932,0x1931,0x2131,0x2131,0x1911,0x1911,0x1912,0x1133,0x1154,0x1195,0x11B7,0x11F8,0x1218,0x11F8,0x11F8,0x11B7,0x1196,0x1175,0x1134,0x1133,0x1932,0x1911,0x2111,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2151,0x1931,0x1111,0x1112,0x1133,0x1174,0x19B5,0x2217,0x1A17,0x19F6,0x19B5,0x0933,0x1132,0x1932,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2930,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x292F,0x2110,0x210F,0x210F,0x2910,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2930,0x2930,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2910,0x2110,0x2910,0x2110,0x2130,0x2110,0x2930,0x2930,0x2930,0x290F,0x2930,0x210F,0x2130,0x2130,0x210F,0x2930,0x2930,0x290F,0x2930,0x210F,0x2930,0x210F,0x210F,0x292F,0x212F,0x212F,0x210F,0x2130,0x2930,0x2130,0x2130,0x210F,0x210F,0x2110,0x2130,0x212F,0x290F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x292F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x292F,0x212F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2930,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2930,0x2130,0x212F,0x2930,0x2930,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x2111,0x1911,0x2132,0x2132,0x1912,0x1912,0x1911,0x1912,0x1932,0x1912,0x1932,0x1932,0x1112,0x1912,0x1912,0x1912,0x1112,0x1112,0x1912,0x1932,0x1912,0x1912,0x1932,0x1932,0x1912,0x1932,0x1912,0x1912,0x1112,0x1912,0x1912,0x1912,0x1112,0x1112,0x1112,0x1932,0x1912,0x1912,0x1932,0x1912,0x1932,0x1952,0x1112,0x1112,0x1912,0x1932,0x1912,0x1932,0x1912,0x1932,0x1911,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2110,0x2130,0x2130,0x212F,0x212F,0x2930,0x2910,0x2910,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2910,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x290F,0x292F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x2110,0x2110,0x2131,0x1911,0x1132,0x1133,0x19F7,0x1A38,0x11F8,0x11B6,0x1133,0x1111,0x1931,0x2130,0x2130,0x2930,0x212F,0x212F,0x292F,0x290F,0x210F,0x210F,0x292F,0x2130,0x2110,0x1911,0x1132,0x1154,0x21D6,0x19F7,0x19F7,0x1995,0x1133,0x1912,0x1911,0x2131,0x2930,0x2930,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1932,0x1133,0x19B5,0x2217,0x19D6,0x1995,0x1132,0x1932,0x1911,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x210F,0x2930,0x2930,0x210F,0x290F,0x2930,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2930,0x212F,0x210F,0x2930,0x210F,0x210F,0x2110,0x212F,0x212F,0x2930,0x2110,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2131,0x2132,0x1912,0x10F2,0x1974,0x21D6,0x21B6,0x1995,0x10F2,0x1112,0x1931,0x1910,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1932,0x1932,0x1954,0x1175,0x1176,0x1196,0x11F8,0x11F8,0x11D7,0x11D7,0x11D7,0x1196,0x1154,0x1133,0x1932,0x1932,0x2151,0x2131,0x2130,0x2110,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2930,0x212F,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2151,0x1931,0x1911,0x1932,0x1132,0x1974,0x21F6,0x21F7,0x19F7,0x21F7,0x1975,0x1112,0x1911,0x2131,0x2110,0x2110,0x2930,0x2110,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x28CD,0x28AD,0x28AD,0x206C,0x392E,0x9C3A,0xDE3F,0xBD5E,0x102B,0x28CE,0x290F,0x290F,0x28EF,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2110,0x2130,0x1911,0x1912,0x1154,0x1175,0x21F8,0x2218,0x1975,0x1113,0x1912,0x1932,0x1911,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x210F,0x2930,0x210F,0x210F,0x292F,0x292F,0x212F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x1910,0x1931,0x1112,0x1113,0x21B6,0x2A17,0x21F7,0x1995,0x1133,0x1112,0x1931,0x1930,0x2130,0x2130,0x2130,0x2150,0x1931,0x1931,0x1132,0x1133,0x19B5,0x2217,0x21F6,0x1995,0x08F2,0x1112,0x1952,0x1931,0x2130,0x2110,0x2130,0x2130,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x210F,0x2910,0x2930,0x2110,0x2910,0x2910,0x2910,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2910,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x2930,0x2910,0x210F,0x210F,0x2910,0x2930,0x2930,0x212F,0x210F,0x210F,0x210F,0x212F,0x2110,0x2110,0x2130,0x2130,0x2151,0x1931,0x1131,0x1132,0x1994,0x21F5,0x19D5,0x1994,0x1112,0x1911,0x1931,0x2131,0x1910,0x2111,0x2131,0x1931,0x1112,0x1133,0x19F7,0x1A38,0x1218,0x11B6,0x1133,0x1931,0x2131,0x2110,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x210F,0x292F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2930,0x2130,0x2930,0x2130,0x2110,0x210F,0x2110,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x212F,0x292F,0x292F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1932,0x1132,0x1154,0x1195,0x19D7,0x19D7,0x19D7,0x19D8,0x19D8,0x19D8,0x2219,0x2219,0x19F8,0x21F8,0x1A18,0x19F8,0x2218,0x1A18,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F7,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x1A18,0x19F8,0x1A18,0x1A18,0x19F8,0x19F8,0x19D8,0x19D8,0x19F8,0x19F8,0x1A18,0x19F8,0x1A18,0x1A18,0x19D7,0x19F8,0x21F8,0x19F8,0x2218,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19D8,0x19D8,0x2218,0x19F7,0x19F7,0x1A17,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19D7,0x19F7,0x19F7,0x19F7,0x1A18,0x19F7,0x19F7,0x19D6,0x19D6,0x1995,0x1174,0x1153,0x1953,0x1133,0x1132,0x1132,0x1132,0x1132,0x1133,0x1154,0x1175,0x19B6,0x19D7,0x19D7,0x21D7,0x1995,0x1133,0x1932,0x1932,0x1931,0x1910,0x2110,0x2110,0x2130,0x2930,0x292F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2151,0x1931,0x2151,0x2151,0x2151,0x2131,0x2151,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F, + 0x1218,0x11F7,0x11B6,0x1174,0x1133,0x1132,0x1932,0x2152,0x2131,0x2111,0x1911,0x1911,0x1912,0x1133,0x1154,0x1196,0x11B7,0x11F8,0x11F8,0x11F9,0x11F8,0x11D8,0x1196,0x1175,0x1154,0x1133,0x1932,0x1911,0x2131,0x2130,0x2130,0x2930,0x210F,0x210F,0x2130,0x2151,0x2131,0x1931,0x1111,0x1112,0x1133,0x1174,0x19B5,0x2217,0x19F7,0x19F7,0x19B5,0x0933,0x1132,0x1952,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x2930,0x212F,0x2110,0x2930,0x2930,0x2110,0x2930,0x2130,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2910,0x210F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x290F,0x2930,0x2930,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2910,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2910,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x20F0,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2111,0x2131,0x2131,0x2111,0x2111,0x2111,0x2111,0x2111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1932,0x1911,0x1911,0x1911,0x1931,0x1931,0x1932,0x1911,0x1911,0x1931,0x1931,0x1932,0x1931,0x1911,0x1911,0x2132,0x1911,0x1911,0x1911,0x1932,0x1931,0x1911,0x1911,0x1911,0x1911,0x1931,0x2132,0x1931,0x1911,0x1932,0x1911,0x1911,0x1911,0x2111,0x2111,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x212F,0x210F,0x2130,0x210F,0x210F,0x212F,0x292F,0x210F,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x290F,0x2910,0x2910,0x290F,0x2110,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x212F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1112,0x1133,0x19F7,0x1A39,0x1A18,0x19D6,0x0933,0x1932,0x2151,0x2130,0x2130,0x2950,0x212F,0x292F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2110,0x2130,0x1931,0x1132,0x1153,0x19D6,0x21F7,0x19F7,0x19B6,0x1133,0x1912,0x2131,0x2110,0x2130,0x2910,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x1911,0x1912,0x1133,0x1995,0x2217,0x19F6,0x19B5,0x1133,0x1132,0x1931,0x1910,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2130,0x210F,0x2930,0x210F,0x2930,0x2930,0x212F,0x2110,0x2110,0x2110,0x2930,0x2910,0x2930,0x210F,0x2930,0x210F,0x2110,0x2110,0x210F,0x212F,0x2130,0x212F,0x212F,0x210F,0x2910,0x2910,0x210F,0x2130,0x210F,0x2110,0x290F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1912,0x10F2,0x1975,0x21D6,0x21B6,0x19B5,0x1112,0x1112,0x2151,0x2130,0x2130,0x210F,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x1911,0x1911,0x1912,0x1133,0x1154,0x19B6,0x19D7,0x11B7,0x11D8,0x09B7,0x0997,0x0997,0x11F8,0x11D7,0x19D6,0x1174,0x1133,0x1952,0x1952,0x1931,0x2110,0x2130,0x2110,0x210F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x292F,0x210F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1931,0x1112,0x1132,0x1974,0x21D6,0x2217,0x21F7,0x19D7,0x1995,0x1133,0x1912,0x1911,0x2110,0x2110,0x2110,0x2930,0x2910,0x2930,0x290F,0x292F,0x292F,0x292F,0x2930,0x292F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290E,0x28CD,0x30CD,0x288C,0x202A,0x6A32,0xC51D,0xCD9F,0xD5DF,0x9C5A,0x102B,0x20CE,0x28EE,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x290F,0x2930,0x290F,0x2910,0x2910,0x2130,0x2130,0x1931,0x1932,0x1154,0x19D7,0x2218,0x21D7,0x1114,0x10F2,0x1932,0x1931,0x1910,0x2110,0x2130,0x2130,0x212F,0x2130,0x212F,0x210F,0x292F,0x292F,0x210F,0x210F,0x212F,0x292F,0x210F,0x2930,0x290F,0x290F,0x2930,0x2930,0x210F,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2131,0x1911,0x1912,0x1112,0x1995,0x21F7,0x21F7,0x19B5,0x1133,0x1112,0x1931,0x1910,0x2130,0x2130,0x2130,0x2150,0x1930,0x1951,0x1132,0x1132,0x21D6,0x21F6,0x19D6,0x19B5,0x0912,0x1111,0x2152,0x2151,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x290F,0x290F,0x290F,0x2930,0x2110,0x2930,0x2110,0x2910,0x2110,0x2110,0x2130,0x212F,0x210F,0x2930,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x290F,0x210F,0x2930,0x2930,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2110,0x2130,0x2130,0x2131,0x1931,0x1131,0x1131,0x19B4,0x21F5,0x19D5,0x1994,0x1132,0x1931,0x2131,0x2131,0x2111,0x2110,0x2111,0x1931,0x1932,0x0933,0x19F7,0x1A38,0x1218,0x1196,0x1153,0x1932,0x2131,0x2110,0x2130,0x212F,0x292F,0x212F,0x292F,0x210F,0x290F,0x292F,0x212F,0x212F,0x2930,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2130,0x2110,0x210F,0x2930,0x212F,0x212F,0x2930,0x292F,0x212F,0x212F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x210F,0x2910,0x212F,0x212F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1112,0x1133,0x1133,0x1134,0x1154,0x1155,0x1134,0x1155,0x1155,0x1155,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1995,0x1155,0x1175,0x1155,0x1175,0x1175,0x1175,0x1175,0x1155,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1155,0x1175,0x1175,0x1155,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1155,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1195,0x1175,0x1195,0x1175,0x1174,0x1175,0x1174,0x1154,0x1133,0x1133,0x1133,0x1132,0x1932,0x1132,0x1152,0x1132,0x1133,0x1154,0x1175,0x19B6,0x19F7,0x19D7,0x21F7,0x1996,0x1154,0x1932,0x1911,0x1911,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1932,0x1952,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F, + 0x09F8,0x11F8,0x11D7,0x1196,0x1175,0x1133,0x1132,0x1911,0x1911,0x2131,0x2111,0x2131,0x1932,0x1112,0x1112,0x1134,0x1196,0x11D7,0x11D8,0x11F9,0x1219,0x11F8,0x11D8,0x1196,0x1175,0x1134,0x1112,0x1911,0x1911,0x2130,0x2950,0x2930,0x210F,0x210F,0x2130,0x2130,0x2131,0x2131,0x1910,0x1911,0x1132,0x1153,0x1994,0x19B5,0x19D6,0x19F7,0x2217,0x1195,0x0933,0x1133,0x1953,0x1932,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x292F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2130,0x2130,0x210F,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x212F,0x212F,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2930,0x2110,0x210F,0x210F,0x2910,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x2910,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x2110,0x2930,0x212F,0x2110,0x2910,0x2930,0x2910,0x2910,0x2910,0x290F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2110,0x210F,0x210F,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2111,0x2131,0x2131,0x1910,0x1910,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2111,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1910,0x2131,0x2131,0x2152,0x2131,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x210F,0x212F,0x212F,0x212F,0x2930,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x292F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x290F,0x290F,0x290F,0x2930,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2930,0x290F,0x2930,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1911,0x1112,0x0934,0x11D7,0x1A18,0x11F8,0x11D6,0x0932,0x1111,0x1951,0x2151,0x2130,0x2130,0x212F,0x210F,0x2930,0x290F,0x290F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1132,0x1974,0x19B6,0x19D6,0x19D6,0x19B5,0x1133,0x1112,0x2131,0x2131,0x2130,0x2110,0x2110,0x210F,0x2930,0x2930,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1912,0x1133,0x1975,0x21F6,0x19F6,0x19D6,0x1153,0x1132,0x1911,0x1930,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x292F,0x292F,0x2930,0x290F,0x290F,0x2930,0x212F,0x212F,0x212F,0x2130,0x2110,0x2930,0x210F,0x2130,0x2930,0x2110,0x2110,0x2930,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2930,0x2930,0x210F,0x210F,0x2130,0x2130,0x2930,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1112,0x10F2,0x1995,0x21F6,0x21F6,0x1995,0x0912,0x10F1,0x1931,0x2130,0x2110,0x2130,0x2950,0x2130,0x2130,0x2110,0x2130,0x2131,0x18F0,0x10F1,0x1133,0x1175,0x19F7,0x1A18,0x11D8,0x09B7,0x0997,0x0997,0x0997,0x0997,0x11B7,0x11F8,0x1A39,0x11D7,0x1995,0x1133,0x1952,0x1931,0x2130,0x2110,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x1930,0x1931,0x1111,0x1132,0x1174,0x21D6,0x2A38,0x2217,0x19D7,0x1975,0x1133,0x1112,0x1911,0x2131,0x2110,0x2130,0x2110,0x2930,0x2930,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x2910,0x290F,0x292F,0x292F,0x290F,0x290F,0x28CD,0x30CD,0x284B,0x38AC,0xA3D8,0xDD7E,0xC4DC,0xBCDC,0xCD9F,0x4990,0x184C,0x20CE,0x290F,0x290F,0x292F,0x290F,0x210F,0x292F,0x292F,0x290F,0x2930,0x2930,0x2910,0x2910,0x2130,0x2131,0x1911,0x1112,0x1995,0x2218,0x2218,0x1996,0x08F3,0x1112,0x1932,0x2131,0x2130,0x2130,0x2110,0x210F,0x212F,0x2130,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x210F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x2910,0x290F,0x292F,0x2930,0x2930,0x2910,0x2910,0x290F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x292F,0x290F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2131,0x2131,0x1912,0x1132,0x21B5,0x2217,0x19D6,0x19B6,0x1154,0x1132,0x1932,0x1931,0x2130,0x2130,0x2130,0x210F,0x2130,0x1931,0x1111,0x0932,0x21D6,0x2217,0x21F6,0x1994,0x0912,0x1131,0x2151,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x292F,0x290F,0x2930,0x210F,0x2130,0x2130,0x2130,0x210F,0x2110,0x2130,0x2130,0x210F,0x2930,0x210F,0x2910,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x212F,0x292F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2110,0x210F,0x290F,0x210F,0x2110,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x19B4,0x21F5,0x19D5,0x1994,0x1132,0x1932,0x1931,0x2131,0x2131,0x2110,0x2110,0x1911,0x1932,0x1154,0x1A17,0x1A38,0x1218,0x11B6,0x1133,0x1931,0x2131,0x2130,0x2130,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x2930,0x212F,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2111,0x1911,0x1931,0x1932,0x1912,0x1912,0x1912,0x1112,0x1912,0x1912,0x1912,0x1112,0x1112,0x1112,0x1933,0x1132,0x1112,0x1132,0x1112,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1113,0x1113,0x1133,0x1133,0x1133,0x1133,0x1113,0x1112,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1112,0x1113,0x1113,0x1133,0x1133,0x1133,0x1113,0x1113,0x1112,0x1112,0x1112,0x1133,0x1133,0x1113,0x1112,0x1133,0x1133,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1112,0x1112,0x1133,0x1133,0x1153,0x1153,0x1133,0x1132,0x1112,0x1112,0x1111,0x1911,0x1111,0x1112,0x1132,0x1132,0x1153,0x1153,0x1154,0x1195,0x19F7,0x19F7,0x2217,0x19B6,0x1133,0x1112,0x1931,0x1931,0x2111,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x212F,0x210F,0x2110,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x292F,0x2930,0x294F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1911,0x1132,0x1133,0x1133,0x1133,0x1132,0x1132,0x1112,0x1932,0x1932,0x1931,0x1931,0x1910,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F, + 0x09F9,0x09F8,0x11D8,0x11D8,0x11B6,0x1175,0x1153,0x1112,0x1911,0x2131,0x2131,0x2131,0x2131,0x1911,0x1112,0x1112,0x1154,0x11B6,0x11B7,0x1A19,0x11F9,0x1219,0x11F9,0x09D7,0x11B7,0x1175,0x1154,0x1132,0x1931,0x2131,0x2110,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x1911,0x1932,0x1153,0x1174,0x19D5,0x19D6,0x2217,0x2217,0x1195,0x0933,0x1133,0x1952,0x2132,0x2131,0x2130,0x2110,0x2930,0x2930,0x2110,0x210F,0x210F,0x212F,0x2130,0x2930,0x212F,0x212F,0x292F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2930,0x2110,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x210F,0x2130,0x2930,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x2910,0x2910,0x2110,0x2110,0x210F,0x2910,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x210F,0x2910,0x2910,0x2910,0x210F,0x210F,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2151,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x292F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2930,0x212F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2930,0x290F,0x2930,0x210F,0x212F,0x212F,0x210F,0x212F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2150,0x2130,0x1931,0x1112,0x1113,0x0934,0x19F8,0x1218,0x1218,0x11D7,0x0933,0x1111,0x1951,0x2151,0x2130,0x2130,0x2130,0x2930,0x212F,0x2930,0x210F,0x210F,0x210F,0x2130,0x2110,0x1931,0x1932,0x1154,0x19B6,0x19D6,0x21F7,0x19B5,0x1112,0x1111,0x2131,0x2131,0x2110,0x2110,0x2110,0x210F,0x2930,0x2930,0x210F,0x210F,0x2930,0x2930,0x2130,0x2130,0x2131,0x1931,0x1912,0x1133,0x1974,0x19B6,0x19D6,0x21F6,0x1154,0x1952,0x1931,0x1930,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x290F,0x2930,0x2930,0x292F,0x290F,0x210F,0x212F,0x2130,0x2130,0x2130,0x212F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2930,0x290F,0x290F,0x292F,0x212F,0x212F,0x290F,0x290F,0x212F,0x2930,0x212F,0x210F,0x210F,0x2110,0x210F,0x2110,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1112,0x08F2,0x1995,0x21D6,0x21D6,0x19B5,0x1112,0x1111,0x1931,0x2130,0x2130,0x2930,0x212F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1911,0x10F1,0x0933,0x19D6,0x19F7,0x11F8,0x09B7,0x0976,0x0976,0x0976,0x0976,0x0996,0x0996,0x11D7,0x1218,0x19F8,0x1195,0x1133,0x1932,0x1931,0x2151,0x2110,0x210F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x210F,0x2130,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1132,0x1154,0x21D6,0x2217,0x2217,0x21F7,0x1975,0x1133,0x1112,0x1911,0x1911,0x2131,0x2130,0x2110,0x2130,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x290F,0x2910,0x290F,0x290F,0x290E,0x28CD,0x28AC,0x284A,0x490D,0xC4BB,0xD51D,0xC4BB,0xC4BB,0xC4FD,0xAC7B,0x288C,0x208D,0x20CE,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x2930,0x2930,0x290F,0x2930,0x2110,0x2110,0x2110,0x2131,0x1911,0x1112,0x19B6,0x19F7,0x19D7,0x1196,0x0913,0x1112,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x290F,0x2930,0x290F,0x292F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2910,0x2910,0x290F,0x2930,0x212F,0x210F,0x212F,0x292F,0x210F,0x292F,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2131,0x1932,0x1112,0x19B5,0x2217,0x19D6,0x19D6,0x1154,0x1112,0x1932,0x1931,0x2130,0x2110,0x210F,0x210F,0x2130,0x2131,0x1131,0x1132,0x19D5,0x2217,0x21F6,0x1994,0x0912,0x1932,0x2151,0x2130,0x2130,0x2950,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x290F,0x210F,0x2930,0x2910,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x212F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2930,0x210F,0x2910,0x2110,0x2130,0x2130,0x2130,0x1931,0x1931,0x1131,0x19B4,0x21F5,0x19D5,0x19B4,0x1132,0x1932,0x2152,0x2131,0x2131,0x2110,0x2110,0x2131,0x1932,0x1133,0x1A17,0x1A18,0x11F8,0x11B6,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x2930,0x2930,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2951,0x2131,0x2131,0x2111,0x2110,0x2110,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2930,0x2110,0x2110,0x2110,0x290F,0x210F,0x2930,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2131,0x2111,0x2111,0x1911,0x1911,0x2111,0x2111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1911,0x1911,0x1932,0x1911,0x1912,0x1932,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1111,0x1912,0x1912,0x1932,0x1111,0x1911,0x1911,0x1911,0x1911,0x1932,0x1932,0x1132,0x1153,0x0953,0x1174,0x11B5,0x19F7,0x19F7,0x19F7,0x19B6,0x1154,0x1112,0x1111,0x1931,0x1910,0x2110,0x2110,0x2130,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2130,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1932,0x1132,0x1133,0x1154,0x1154,0x1174,0x1174,0x1174,0x1133,0x1153,0x1153,0x1132,0x1911,0x1931,0x1930,0x1930,0x2130,0x2130,0x212F,0x212F,0x212F, + 0x09F9,0x09F9,0x11D8,0x11D8,0x11D7,0x11B6,0x1175,0x1133,0x1112,0x1911,0x1911,0x2131,0x2131,0x2131,0x2132,0x1932,0x1132,0x1154,0x1175,0x11B7,0x11D8,0x11F9,0x11F9,0x11F9,0x11D8,0x11B6,0x1195,0x1153,0x1952,0x1931,0x2131,0x2130,0x210F,0x2110,0x2110,0x2930,0x2930,0x2130,0x2151,0x2130,0x2131,0x1931,0x1132,0x1153,0x1194,0x19B5,0x19F6,0x1A17,0x2217,0x11B5,0x0934,0x1133,0x1912,0x2131,0x2131,0x2130,0x2930,0x2110,0x2130,0x2130,0x212F,0x2130,0x2930,0x2930,0x210F,0x292F,0x292F,0x290F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x212F,0x2930,0x2110,0x210F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x2930,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x2930,0x2110,0x210F,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x20F0,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x2130,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x212F,0x210F,0x210F,0x2110,0x2130,0x2930,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2130,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x290F,0x290F,0x2930,0x290F,0x210F,0x212F,0x210F,0x212F,0x2930,0x212F,0x212F,0x2130,0x212F,0x2130,0x212F,0x2130,0x2950,0x2151,0x2131,0x1931,0x1112,0x1113,0x0954,0x1A18,0x1219,0x1219,0x1A18,0x0974,0x0912,0x1931,0x1930,0x2150,0x2130,0x2130,0x2930,0x212F,0x2130,0x210F,0x210F,0x212F,0x2130,0x2110,0x1911,0x1132,0x1174,0x19B6,0x19F7,0x2217,0x19D6,0x1133,0x1111,0x2131,0x2130,0x2930,0x2930,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x1911,0x1932,0x1933,0x1995,0x21F7,0x19D6,0x19B6,0x1154,0x1132,0x1951,0x2151,0x2131,0x2130,0x2130,0x2930,0x2130,0x212F,0x292F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2910,0x210F,0x2130,0x210F,0x2110,0x210F,0x212F,0x212F,0x2930,0x2110,0x212F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x2930,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2930,0x212F,0x210F,0x212F,0x2930,0x2930,0x212F,0x210F,0x210F,0x2130,0x2130,0x2110,0x1911,0x1932,0x1133,0x19B5,0x19D6,0x19D6,0x19B5,0x1133,0x1932,0x1951,0x1910,0x2130,0x2950,0x210F,0x210F,0x2130,0x2130,0x2151,0x2151,0x1931,0x1112,0x1195,0x1A17,0x11D7,0x11B7,0x0997,0x0976,0x0976,0x0976,0x0976,0x0976,0x0976,0x11B7,0x11F8,0x11D7,0x11B6,0x0934,0x1132,0x1931,0x2131,0x2130,0x2130,0x212F,0x292F,0x2950,0x292F,0x292F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1132,0x1174,0x19D6,0x2217,0x21F7,0x21D7,0x1995,0x1133,0x1112,0x1911,0x1911,0x2111,0x2131,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x2930,0x212F,0x2930,0x290F,0x290F,0x2930,0x2930,0x3130,0x290F,0x28CE,0x28AD,0x288C,0x284A,0x512D,0xD53D,0xD4DB,0xCCBB,0xCCBB,0xC47A,0xD53E,0x6A73,0x208C,0x208D,0x20CE,0x2930,0x292F,0x290F,0x290F,0x210F,0x212F,0x292F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2930,0x2131,0x1911,0x1112,0x19B6,0x19F7,0x19D7,0x19B6,0x0912,0x1932,0x1911,0x2131,0x2130,0x210F,0x2110,0x2130,0x212F,0x212F,0x212F,0x2930,0x290F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x290F,0x2930,0x2930,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2930,0x2110,0x210F,0x2110,0x2110,0x2131,0x1932,0x1132,0x21B5,0x2217,0x19F6,0x19B6,0x1154,0x1112,0x1132,0x1931,0x2130,0x2130,0x212F,0x2130,0x2130,0x2131,0x1131,0x1133,0x19D6,0x19F7,0x19F6,0x1995,0x0912,0x1131,0x1931,0x1910,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2930,0x2930,0x290F,0x210F,0x210F,0x212F,0x2130,0x2130,0x210F,0x2130,0x212F,0x210F,0x2110,0x210F,0x2930,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x2910,0x290F,0x2930,0x210F,0x210F,0x2930,0x2930,0x210F,0x290F,0x210F,0x210F,0x292F,0x292F,0x292F,0x212F,0x2130,0x212F,0x210F,0x2110,0x2130,0x2130,0x2110,0x210F,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x19B4,0x21D5,0x19D5,0x19B4,0x1132,0x1132,0x1931,0x1931,0x2131,0x2131,0x2111,0x1931,0x1932,0x1153,0x1A17,0x1A18,0x11F8,0x1195,0x1132,0x1931,0x2151,0x2130,0x2130,0x2930,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x2950,0x2130,0x2130,0x2110,0x2951,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2111,0x2131,0x2131,0x2151,0x2131,0x2131,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x292F,0x292F,0x292F,0x212F,0x292F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2111,0x2110,0x2131,0x2131,0x2110,0x2110,0x2111,0x2111,0x2131,0x2110,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x1911,0x2131,0x2111,0x2111,0x1911,0x2131,0x2111,0x2131,0x1931,0x2131,0x2131,0x1931,0x1911,0x2131,0x1911,0x2131,0x1911,0x2131,0x2131,0x2131,0x1931,0x2131,0x1931,0x1931,0x1911,0x2131,0x2111,0x2131,0x1910,0x2111,0x2131,0x1910,0x2131,0x2131,0x1931,0x2131,0x1931,0x2131,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1952,0x1932,0x1932,0x1932,0x1133,0x1133,0x1174,0x19B6,0x19F7,0x2217,0x19D6,0x1175,0x1133,0x1132,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x292F,0x210F,0x210F,0x20EF,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1930,0x1952,0x1953,0x1154,0x1175,0x19D6,0x19F7,0x1A17,0x21F7,0x21F7,0x21F7,0x21F6,0x21D6,0x21B5,0x1994,0x1952,0x1931,0x1910,0x2130,0x2130,0x212F,0x214F,0x214F, + 0x09D9,0x09D8,0x11D8,0x11D8,0x11D8,0x11B7,0x1196,0x1175,0x1153,0x1932,0x1911,0x1911,0x2131,0x2151,0x2152,0x1932,0x1111,0x1112,0x1154,0x1196,0x11B7,0x11F8,0x1219,0x1219,0x1219,0x11F8,0x11B6,0x1175,0x1133,0x1132,0x1931,0x2131,0x2131,0x2130,0x2130,0x2930,0x2930,0x2950,0x2950,0x2151,0x2130,0x1911,0x1931,0x1932,0x1153,0x1194,0x11B5,0x19F6,0x2237,0x2217,0x1195,0x1133,0x1112,0x1932,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x292F,0x292F,0x2930,0x2930,0x2910,0x2910,0x2110,0x2930,0x2110,0x2930,0x2930,0x2130,0x2930,0x2110,0x210F,0x290F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x2110,0x2930,0x2110,0x2910,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x2910,0x290F,0x210F,0x210F,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x210F,0x2910,0x2910,0x2930,0x210F,0x2910,0x2930,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x2130,0x210F,0x2110,0x2110,0x210F,0x2130,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x2130,0x210F,0x2110,0x2110,0x2130,0x2930,0x2110,0x2930,0x2930,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2930,0x2930,0x2110,0x2930,0x210F,0x2930,0x290F,0x290F,0x2930,0x2930,0x2130,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x2910,0x290F,0x2910,0x290F,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2930,0x2930,0x2110,0x2930,0x2110,0x2130,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x290F,0x290F,0x2930,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x2130,0x2971,0x2130,0x1930,0x1931,0x1132,0x1133,0x0955,0x1218,0x1219,0x1219,0x1A39,0x1195,0x0932,0x1131,0x1931,0x2151,0x2150,0x2130,0x2130,0x210F,0x2930,0x210F,0x290F,0x212F,0x2130,0x2110,0x1931,0x1132,0x1174,0x19D6,0x19D6,0x21F7,0x19D6,0x1112,0x1112,0x1931,0x2131,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x290F,0x20EF,0x2930,0x2130,0x210F,0x210F,0x2110,0x2131,0x1931,0x1933,0x1974,0x21F7,0x19F7,0x1196,0x1154,0x1113,0x1952,0x2151,0x2131,0x2130,0x2130,0x2130,0x2950,0x212F,0x2930,0x292F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x2930,0x210F,0x212F,0x212F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x210F,0x290F,0x2910,0x2930,0x2910,0x2910,0x2930,0x2930,0x212F,0x2130,0x210F,0x210F,0x210F,0x292F,0x2130,0x2130,0x2131,0x1911,0x1932,0x1112,0x19B5,0x21F6,0x19D6,0x19D5,0x1132,0x1112,0x1931,0x1910,0x2110,0x2930,0x210F,0x210F,0x2130,0x2130,0x2130,0x2151,0x1932,0x1133,0x11B5,0x11D7,0x11D7,0x11B7,0x0976,0x0955,0x0956,0x0955,0x0955,0x0955,0x0976,0x0997,0x11F8,0x11D8,0x11B7,0x0954,0x1953,0x1932,0x2131,0x2130,0x2930,0x212F,0x292F,0x292F,0x292F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2131,0x2131,0x1932,0x1132,0x1174,0x19D6,0x2218,0x2217,0x21D7,0x1995,0x1133,0x1112,0x1911,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x292F,0x2930,0x292F,0x290F,0x2930,0x292F,0x292F,0x290F,0x290F,0x28CE,0x28AD,0x28AC,0x2009,0x61F0,0xCCDB,0xD4DB,0xD4DB,0xCCBA,0xD4DB,0xD4FC,0xB43A,0x30AC,0x208D,0x20AD,0x20EF,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2930,0x2130,0x2131,0x1911,0x1112,0x19B6,0x19F8,0x19D7,0x19B6,0x1133,0x1931,0x1931,0x2110,0x2130,0x2110,0x2130,0x2130,0x2950,0x2930,0x210F,0x290F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x290F,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2910,0x210F,0x210F,0x2110,0x2110,0x1931,0x1931,0x1132,0x19B5,0x21F7,0x19F6,0x19B6,0x1154,0x1112,0x1132,0x1931,0x2130,0x2130,0x212F,0x2130,0x2110,0x1930,0x1131,0x1133,0x19B5,0x2217,0x19F7,0x19B5,0x0912,0x1131,0x1931,0x1910,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x210F,0x2930,0x290F,0x290F,0x290F,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x2910,0x2910,0x2910,0x210F,0x2910,0x290F,0x290F,0x2910,0x210F,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1911,0x1132,0x19B4,0x21F5,0x19D5,0x19B4,0x1132,0x1932,0x1931,0x2131,0x2131,0x2131,0x2131,0x1931,0x1932,0x1133,0x19F7,0x1A18,0x11F7,0x11B6,0x0932,0x1931,0x2131,0x2130,0x2130,0x2930,0x290F,0x292F,0x292F,0x290F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2971,0x2151,0x2131,0x1931,0x1911,0x1911,0x1911,0x1932,0x2173,0x2173,0x2152,0x1932,0x1931,0x1931,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x2130,0x2930,0x210F,0x210F,0x2930,0x2930,0x2110,0x210F,0x2130,0x212F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x212F,0x212F,0x2930,0x2930,0x210F,0x2930,0x212F,0x2130,0x210F,0x2930,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x2130,0x1910,0x2131,0x1911,0x1911,0x2131,0x1931,0x1931,0x1931,0x1952,0x1952,0x1952,0x1132,0x1153,0x1154,0x19B5,0x21F7,0x2217,0x21F7,0x1995,0x1133,0x1112,0x1111,0x1932,0x2131,0x2151,0x2130,0x2130,0x2930,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x290F,0x210F,0x210F,0x2930,0x292F,0x212F,0x212F,0x212F,0x1930,0x2130,0x1911,0x1132,0x1174,0x1195,0x19D7,0x19F7,0x1A17,0x1A18,0x19F7,0x2218,0x2218,0x2217,0x19F7,0x19D6,0x21D5,0x1973,0x1952,0x1931,0x1930,0x2130,0x2150,0x2150,0x2170, + 0x09B7,0x09B7,0x09B8,0x11F8,0x11F8,0x11D8,0x11D7,0x1196,0x1174,0x1133,0x1932,0x1911,0x1911,0x2131,0x2152,0x2151,0x1911,0x1131,0x1153,0x1174,0x11B6,0x09B7,0x11F8,0x1219,0x1219,0x1218,0x09D7,0x11D7,0x1175,0x1153,0x1112,0x1912,0x1911,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x1910,0x1931,0x1152,0x1132,0x1174,0x11B5,0x2217,0x2238,0x19D7,0x1195,0x1133,0x1112,0x1912,0x2131,0x2110,0x2110,0x2110,0x2130,0x212F,0x2130,0x212F,0x2130,0x2130,0x2930,0x210F,0x290F,0x2110,0x2930,0x2910,0x2910,0x2930,0x2110,0x2910,0x2930,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x2110,0x2930,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x2930,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x2130,0x2130,0x210F,0x2930,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x210F,0x2110,0x2110,0x210F,0x2130,0x2110,0x2110,0x2130,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2110,0x2110,0x210F,0x210F,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x2930,0x2130,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x2110,0x2130,0x2930,0x2130,0x2930,0x2110,0x2110,0x2930,0x2930,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x212F,0x2930,0x210F,0x210F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2110,0x2910,0x210F,0x2910,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x2110,0x2130,0x212F,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x190F,0x18F0,0x1111,0x1133,0x1134,0x0955,0x11F8,0x11F9,0x1219,0x11F8,0x11B6,0x0933,0x1132,0x1131,0x1931,0x2151,0x2150,0x2130,0x212F,0x212F,0x20EF,0x210F,0x2930,0x2130,0x2130,0x1931,0x1932,0x1154,0x21F6,0x19F7,0x19F7,0x19B5,0x1112,0x1111,0x1931,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x20EF,0x210F,0x2930,0x292F,0x210F,0x210F,0x2110,0x2131,0x1911,0x1132,0x1174,0x21F7,0x2217,0x19F7,0x1195,0x1133,0x1112,0x1932,0x2151,0x2131,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x210F,0x2130,0x212F,0x2930,0x2110,0x210F,0x2130,0x2930,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2110,0x1911,0x1932,0x1112,0x21D6,0x21F6,0x19D6,0x19D5,0x1133,0x1112,0x1931,0x2131,0x2110,0x2130,0x210F,0x210F,0x210F,0x2930,0x2130,0x2131,0x1931,0x0912,0x11B5,0x11F7,0x11F8,0x0997,0x0955,0x0955,0x0955,0x0975,0x0934,0x0934,0x0955,0x1197,0x11F8,0x19F8,0x11B7,0x1155,0x1112,0x1932,0x2131,0x2130,0x2930,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2131,0x2131,0x2131,0x1932,0x1133,0x1174,0x19D6,0x2217,0x21F7,0x19D7,0x1996,0x1154,0x10F2,0x18F1,0x1911,0x2111,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x28CE,0x208D,0x288C,0x306B,0x7A93,0xE57E,0xD4DB,0xD4DB,0xD49A,0xD4BA,0xDD3C,0xCCBB,0x48ED,0x30AD,0x20AD,0x28EE,0x2930,0x28EF,0x28EF,0x290F,0x292F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2930,0x2131,0x1911,0x1112,0x19B6,0x19F7,0x19D7,0x19D6,0x1132,0x1931,0x1930,0x2130,0x2110,0x2130,0x2110,0x2130,0x2930,0x2930,0x2130,0x2930,0x290F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x2930,0x2930,0x210F,0x290F,0x2930,0x2930,0x212F,0x292F,0x2930,0x212F,0x2130,0x2130,0x212F,0x210F,0x2930,0x290F,0x2930,0x2930,0x210F,0x2110,0x2131,0x2131,0x1932,0x1132,0x19B5,0x2217,0x19D6,0x19B6,0x0933,0x1132,0x1132,0x1911,0x2130,0x2130,0x212F,0x2930,0x2110,0x1910,0x1111,0x1133,0x19B5,0x2217,0x19F7,0x1995,0x0912,0x1132,0x1931,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x290F,0x292F,0x290F,0x290F,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2910,0x290F,0x210F,0x2930,0x2910,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x292F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2110,0x1931,0x1931,0x1132,0x1994,0x21D5,0x19D5,0x1994,0x1112,0x1111,0x1931,0x1931,0x2131,0x2131,0x2111,0x1911,0x1932,0x1154,0x19F7,0x1A18,0x19F8,0x1195,0x1132,0x1131,0x1930,0x2130,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2171,0x2151,0x1911,0x1931,0x1932,0x1932,0x1953,0x1953,0x1953,0x1132,0x1112,0x1132,0x1932,0x1952,0x1932,0x2131,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x2910,0x210F,0x2110,0x2910,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x290F,0x292F,0x290F,0x290F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2130,0x2110,0x2110,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x1931,0x1931,0x1932,0x1153,0x1153,0x1174,0x19D6,0x19F6,0x21F7,0x21F6,0x1995,0x1154,0x1132,0x1111,0x1911,0x1931,0x2131,0x2130,0x2130,0x2130,0x2930,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2131,0x1911,0x1111,0x1953,0x1995,0x11B6,0x11B7,0x19F8,0x1A18,0x11B6,0x1196,0x11B6,0x19D7,0x19F7,0x19D7,0x19D6,0x19B5,0x1994,0x1152,0x1931,0x1930,0x1930,0x2150,0x2170,0x2150, + 0x0976,0x0996,0x11B7,0x11D8,0x11D8,0x11F8,0x09D8,0x11B7,0x1196,0x1175,0x1133,0x1932,0x1931,0x1911,0x2131,0x2131,0x2131,0x1952,0x1152,0x1173,0x1174,0x1196,0x09B7,0x11F8,0x11F8,0x11F8,0x1218,0x11D7,0x11B7,0x1175,0x1154,0x1132,0x1932,0x1931,0x1911,0x2110,0x2130,0x2930,0x2110,0x2130,0x2130,0x2130,0x1910,0x1931,0x1931,0x1152,0x1153,0x1174,0x11B5,0x19F7,0x2217,0x19D7,0x1995,0x1154,0x1112,0x1912,0x2131,0x2110,0x2110,0x2130,0x2130,0x210F,0x212F,0x2130,0x2130,0x210F,0x2110,0x2930,0x210F,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x210F,0x2910,0x2110,0x2910,0x290F,0x210F,0x2910,0x2110,0x2110,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2110,0x2910,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2930,0x2110,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x2930,0x212F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2930,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x2130,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2910,0x2910,0x210F,0x210F,0x2930,0x2910,0x2110,0x2910,0x2910,0x2930,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2930,0x2110,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x2130,0x2930,0x2930,0x2110,0x2110,0x2930,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x2930,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2910,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2110,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x2930,0x210F,0x2130,0x2130,0x1910,0x1931,0x1132,0x1133,0x0955,0x0976,0x09B8,0x09F9,0x09F9,0x11F9,0x09B6,0x0954,0x1173,0x1132,0x1951,0x2131,0x2131,0x2130,0x2930,0x292F,0x210F,0x210F,0x212F,0x2130,0x2130,0x1931,0x1132,0x1154,0x19F6,0x19F7,0x19D7,0x19B6,0x1112,0x1112,0x1931,0x2131,0x2130,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2130,0x1910,0x1932,0x1153,0x19D6,0x2238,0x2218,0x19B6,0x1154,0x1113,0x1112,0x1931,0x2131,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x2130,0x2930,0x210F,0x2130,0x2930,0x2110,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x292F,0x290F,0x290F,0x2910,0x2910,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x10F1,0x1112,0x21B5,0x21D6,0x19D6,0x19D6,0x0933,0x1132,0x1952,0x1931,0x2131,0x2130,0x210F,0x212F,0x2930,0x2130,0x2130,0x1931,0x1911,0x08F2,0x1195,0x19F7,0x11D7,0x11B7,0x0955,0x0955,0x0955,0x0955,0x0114,0x0114,0x0935,0x1196,0x11F8,0x1A19,0x19D7,0x0954,0x1112,0x1931,0x2111,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x1911,0x1932,0x1132,0x1974,0x21D6,0x21F7,0x2217,0x21F7,0x1995,0x1133,0x1112,0x18F1,0x1911,0x2131,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x292F,0x212F,0x292F,0x290F,0x210F,0x290F,0x290F,0x28EF,0x28AD,0x28AC,0x2009,0x8AD4,0xDD1C,0xD4DB,0xDCDB,0xDCBA,0xD499,0xD4BA,0xE55D,0xABD8,0x282A,0x286C,0x20AD,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2131,0x18F1,0x1133,0x19D6,0x19D7,0x11D7,0x19D6,0x0912,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x2130,0x2110,0x210F,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x2930,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2910,0x2930,0x212F,0x210F,0x2130,0x2131,0x1931,0x1932,0x1112,0x19B5,0x21F7,0x19D6,0x19D6,0x1154,0x1112,0x1932,0x1931,0x2130,0x2130,0x210F,0x2130,0x2130,0x1911,0x1132,0x0933,0x19B6,0x19F7,0x19D6,0x19D6,0x0912,0x1932,0x2152,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x290F,0x290F,0x292F,0x210F,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2910,0x2910,0x290F,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2910,0x210F,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2111,0x1931,0x1932,0x1132,0x19B5,0x19D5,0x19D5,0x1994,0x1132,0x1111,0x1931,0x2131,0x2131,0x2111,0x1911,0x1932,0x1932,0x1153,0x19F7,0x1A38,0x19F8,0x1195,0x0932,0x1931,0x1931,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1931,0x1911,0x1932,0x1133,0x1153,0x1974,0x1994,0x1174,0x1154,0x1154,0x1154,0x1133,0x1133,0x1112,0x1932,0x1931,0x2131,0x2131,0x2111,0x2130,0x2130,0x2110,0x2930,0x2110,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2110,0x2130,0x210F,0x2110,0x2910,0x210F,0x210F,0x210F,0x2110,0x2110,0x2910,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x212F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x212F,0x2130,0x2110,0x2110,0x212F,0x2130,0x2130,0x2110,0x2130,0x212F,0x210F,0x2130,0x212F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x1910,0x1910,0x1911,0x1911,0x1932,0x1132,0x1133,0x1174,0x19B5,0x21F7,0x21F7,0x21D6,0x1995,0x1133,0x1132,0x1111,0x1931,0x1931,0x1910,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x2930,0x212F,0x212F,0x2130,0x2130,0x1931,0x1911,0x1112,0x1154,0x1995,0x11B6,0x11D7,0x19F8,0x1196,0x0975,0x0955,0x0955,0x0975,0x11B6,0x11B6,0x19D6,0x11B5,0x1994,0x1953,0x1931,0x1931,0x1930,0x1930,0x1930,0x2150, + 0x1175,0x0975,0x0996,0x11B7,0x11D8,0x11F8,0x11F8,0x11F8,0x09B7,0x1196,0x1154,0x1133,0x1112,0x1911,0x1910,0x2131,0x2131,0x1931,0x1931,0x1132,0x1153,0x1174,0x0975,0x11B7,0x09D8,0x1219,0x11F8,0x11F8,0x11D7,0x11B6,0x1196,0x1154,0x1133,0x1932,0x1931,0x2131,0x18F0,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1133,0x1174,0x19B5,0x19D7,0x2218,0x21F7,0x1995,0x1133,0x1112,0x1911,0x2131,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x2930,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x2110,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x2130,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x210F,0x2110,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x290F,0x2930,0x2130,0x2110,0x2910,0x2930,0x2910,0x210F,0x2910,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x212F,0x290F,0x2930,0x210F,0x2130,0x210F,0x2130,0x2110,0x210F,0x210F,0x2930,0x290F,0x210F,0x2910,0x2910,0x210F,0x2910,0x210F,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x290F,0x2910,0x2910,0x2910,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x210F,0x210F,0x2930,0x210F,0x210F,0x2930,0x2930,0x210F,0x2110,0x2910,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x292F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x292F,0x210F,0x2930,0x2930,0x2130,0x2130,0x2131,0x1932,0x1153,0x1195,0x1197,0x09B8,0x09B8,0x09D9,0x0A1A,0x1219,0x09D7,0x0975,0x1195,0x1153,0x1132,0x1951,0x2131,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1132,0x1154,0x19D6,0x19F7,0x19B6,0x1195,0x1113,0x1112,0x1931,0x2131,0x2930,0x2910,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x292F,0x210F,0x212F,0x2130,0x2130,0x1910,0x1911,0x1132,0x1995,0x2218,0x2238,0x19F7,0x1196,0x1134,0x1112,0x1912,0x2131,0x2111,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x210F,0x212F,0x2930,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x292F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2152,0x10F1,0x10F2,0x21B6,0x21D6,0x19D6,0x19D6,0x0933,0x0912,0x1972,0x2151,0x2151,0x2130,0x2130,0x212F,0x2130,0x2130,0x2150,0x2131,0x1911,0x1112,0x1195,0x19F7,0x11F7,0x11D7,0x0955,0x0935,0x0955,0x0934,0x0934,0x0934,0x0134,0x11B6,0x19F8,0x11D8,0x19F7,0x1174,0x1112,0x1931,0x2111,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x2111,0x1932,0x1133,0x1974,0x19D6,0x21F7,0x2217,0x19D7,0x1975,0x1133,0x1112,0x1111,0x1911,0x2111,0x2951,0x2130,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2930,0x292F,0x290F,0x290F,0x28AD,0x288C,0x306B,0x82B3,0xE57E,0xD4BA,0xDCDA,0xD499,0xDC99,0xDCBA,0xD4BA,0xDCFC,0x82B3,0x284A,0x206C,0x28EE,0x28EF,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x1911,0x18F2,0x1133,0x21F7,0x19F8,0x19D7,0x19B6,0x00D1,0x1111,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2130,0x2930,0x2930,0x2930,0x292F,0x212F,0x2930,0x212F,0x2110,0x2930,0x212F,0x292F,0x290F,0x290F,0x2930,0x2930,0x2910,0x2930,0x292F,0x2930,0x2930,0x2910,0x290F,0x290F,0x2930,0x2110,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2110,0x2131,0x1931,0x1952,0x1132,0x19B5,0x2217,0x19D6,0x19D6,0x1154,0x1132,0x1111,0x1930,0x2130,0x2130,0x212F,0x2130,0x2130,0x1911,0x1132,0x1154,0x19D7,0x21F7,0x19D6,0x1195,0x0913,0x1953,0x2152,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x290F,0x210F,0x290F,0x2910,0x210F,0x2110,0x2110,0x2130,0x292F,0x292F,0x212F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x210F,0x290F,0x290F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x210F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1132,0x19B5,0x21F6,0x19D5,0x1994,0x1132,0x1931,0x1931,0x1931,0x2131,0x2131,0x2111,0x1911,0x1112,0x1154,0x19D7,0x1A18,0x1A18,0x1195,0x0932,0x1931,0x1931,0x2130,0x2130,0x212F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1932,0x1152,0x1173,0x1195,0x19D6,0x19D6,0x19F6,0x21F6,0x21F7,0x21D6,0x21D6,0x1995,0x1995,0x1112,0x1912,0x1911,0x2111,0x2111,0x2131,0x2130,0x2930,0x2930,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x2910,0x20EF,0x2910,0x210F,0x2110,0x210F,0x2110,0x2930,0x210F,0x290F,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2930,0x2110,0x2930,0x2130,0x2130,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2131,0x2131,0x2130,0x2131,0x2110,0x2130,0x1931,0x1931,0x1932,0x1132,0x1132,0x1154,0x19B5,0x21F7,0x21F7,0x21F6,0x1995,0x1112,0x1112,0x1111,0x1931,0x2151,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x2930,0x2130,0x2110,0x2130,0x2130,0x1931,0x1911,0x1112,0x1995,0x21D7,0x11B6,0x11D7,0x11B7,0x0975,0x0955,0x0934,0x0934,0x0955,0x0975,0x1196,0x11B6,0x19D6,0x1995,0x1974,0x1952,0x1931,0x1930,0x1930,0x1930,0x1930, + 0x1134,0x1154,0x1175,0x1196,0x11B7,0x11F8,0x11F8,0x11D8,0x11F8,0x11D7,0x1196,0x1174,0x1153,0x1111,0x1911,0x2131,0x2131,0x2151,0x1910,0x1931,0x1132,0x1153,0x1174,0x0975,0x11D7,0x11F8,0x11F8,0x11F9,0x11F8,0x11F8,0x11B7,0x1196,0x1133,0x1112,0x1952,0x1931,0x2131,0x2130,0x2110,0x2110,0x2950,0x2130,0x2130,0x2150,0x1930,0x1931,0x1911,0x1912,0x1132,0x1174,0x19B6,0x21F7,0x2218,0x21F7,0x1996,0x1133,0x1132,0x1932,0x2131,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x210F,0x2110,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2930,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2910,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x210F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x210F,0x2130,0x210F,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x2130,0x210F,0x2130,0x210F,0x2110,0x2110,0x2130,0x2130,0x2930,0x2110,0x2110,0x2930,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x210F,0x2930,0x2110,0x2930,0x2110,0x2110,0x210F,0x290F,0x2110,0x2110,0x290F,0x290F,0x210F,0x2910,0x2910,0x210F,0x210F,0x2110,0x290F,0x290F,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x2910,0x2110,0x2110,0x2110,0x210F,0x290F,0x290F,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2910,0x290F,0x210F,0x2910,0x210F,0x2110,0x210F,0x210F,0x2910,0x2930,0x2910,0x2910,0x2930,0x2930,0x290F,0x210F,0x210F,0x2110,0x2910,0x2930,0x2110,0x2110,0x2110,0x210F,0x2930,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x210F,0x290F,0x2930,0x2930,0x2910,0x2910,0x2110,0x210F,0x290F,0x2930,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x2110,0x2110,0x2110,0x2930,0x210F,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x292F,0x292F,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x2930,0x2130,0x2130,0x1931,0x1932,0x1953,0x19B6,0x19F8,0x11F9,0x09D9,0x01B9,0x01B9,0x09FA,0x09F9,0x09F9,0x11F8,0x19F7,0x11B5,0x1132,0x1952,0x1931,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x1931,0x1132,0x1153,0x19D6,0x19F7,0x19F7,0x19B5,0x1133,0x1112,0x1911,0x2131,0x2930,0x2910,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x1910,0x1931,0x1132,0x1153,0x19B6,0x2238,0x1A18,0x19F7,0x1996,0x1133,0x1112,0x1912,0x1911,0x2111,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x210F,0x212F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x212F,0x292F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x2152,0x10F1,0x08F2,0x21B6,0x21D7,0x19D7,0x19F7,0x0953,0x08F2,0x1973,0x2152,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2151,0x2151,0x1911,0x1112,0x1195,0x19F7,0x11D7,0x11D8,0x0996,0x0155,0x0134,0x0934,0x0934,0x0134,0x0955,0x11D7,0x19F8,0x1A18,0x19D7,0x1174,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2130,0x2130,0x2110,0x2131,0x2131,0x2131,0x1912,0x1132,0x1154,0x21D6,0x21F7,0x2217,0x19D6,0x1995,0x1133,0x1112,0x1911,0x1911,0x2111,0x2130,0x2130,0x2110,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x292F,0x28CD,0x286C,0x2009,0x7251,0xDD1C,0xDCDA,0xDCB9,0xD498,0xD478,0xDC99,0xD499,0xDCBA,0xE55D,0x7211,0x282A,0x288C,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2111,0x1911,0x1112,0x1134,0x19D7,0x19F8,0x19D7,0x19D6,0x0912,0x1111,0x1931,0x2131,0x2151,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x212F,0x212F,0x212F,0x2930,0x212F,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x292F,0x292F,0x210F,0x2930,0x290F,0x290F,0x2110,0x210F,0x210F,0x290F,0x2930,0x290F,0x212F,0x212F,0x210F,0x212F,0x2930,0x212F,0x2930,0x210F,0x212F,0x2130,0x212F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1931,0x1932,0x1132,0x19B5,0x2217,0x19D6,0x19D6,0x1174,0x0912,0x1932,0x1931,0x2130,0x2130,0x2130,0x2130,0x2111,0x1932,0x1133,0x0954,0x19D7,0x19F7,0x19D7,0x11B6,0x0933,0x1133,0x1972,0x1951,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x212F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2130,0x212F,0x212F,0x292F,0x290F,0x290F,0x2910,0x2910,0x290F,0x2110,0x2930,0x210F,0x2930,0x212F,0x212F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2930,0x290F,0x2910,0x290F,0x290F,0x290F,0x2930,0x290F,0x2110,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1112,0x1132,0x19B5,0x19D6,0x19D5,0x19B4,0x1132,0x1931,0x1951,0x1931,0x2131,0x2131,0x1931,0x1911,0x1932,0x1153,0x19F7,0x1A18,0x19F8,0x1195,0x1132,0x1931,0x2151,0x2130,0x2130,0x210F,0x2130,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1132,0x1153,0x1995,0x19D6,0x19D6,0x19F7,0x21F7,0x19F7,0x21F7,0x21F7,0x19F7,0x19D7,0x19B6,0x1974,0x1133,0x1912,0x1911,0x1911,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2150,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2110,0x2131,0x2131,0x1911,0x1931,0x1931,0x1132,0x1132,0x0933,0x19B5,0x21F7,0x21F7,0x21F7,0x1995,0x1133,0x1112,0x1111,0x1911,0x1911,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2110,0x2110,0x2130,0x2110,0x2131,0x1932,0x1132,0x21B5,0x19D7,0x11D7,0x11D7,0x0975,0x0955,0x0954,0x0954,0x0934,0x0934,0x0955,0x1176,0x19B6,0x19D6,0x19D6,0x1994,0x1932,0x1931,0x1910,0x1910,0x1930,0x2130, + 0x1113,0x1133,0x1154,0x1175,0x1196,0x11B7,0x11F8,0x1219,0x11F8,0x11F8,0x11D7,0x1195,0x1174,0x1132,0x1111,0x1911,0x1930,0x2130,0x1910,0x1931,0x1111,0x1132,0x1153,0x1174,0x1196,0x09B7,0x11F8,0x11F8,0x11F9,0x11D8,0x19F9,0x11B7,0x0955,0x1154,0x1133,0x1932,0x2152,0x2111,0x2110,0x2130,0x2110,0x2130,0x2930,0x2930,0x2130,0x2131,0x1911,0x1911,0x1932,0x1133,0x1974,0x19B6,0x2217,0x2217,0x21F7,0x19B5,0x1153,0x1132,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2950,0x2130,0x2130,0x2930,0x2110,0x2910,0x2910,0x2930,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x290F,0x2930,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x2930,0x290F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x210F,0x2910,0x2910,0x2910,0x2930,0x2910,0x2110,0x2110,0x2930,0x290F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x210F,0x2930,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x2930,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x2130,0x212F,0x210F,0x210F,0x212F,0x2130,0x210F,0x2130,0x2130,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2910,0x2930,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x210F,0x2910,0x210F,0x210F,0x2110,0x2910,0x2110,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x210F,0x290F,0x290F,0x2930,0x2930,0x210F,0x212F,0x2130,0x210F,0x2930,0x2910,0x2110,0x2110,0x2110,0x2910,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2910,0x2110,0x2910,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x2910,0x210F,0x2910,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x210F,0x212F,0x212F,0x2930,0x290F,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x2930,0x2110,0x2930,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1932,0x1133,0x1995,0x19D7,0x11F9,0x121A,0x09D9,0x01B9,0x01DA,0x09DA,0x09FA,0x09F9,0x09F9,0x11F8,0x11D7,0x1174,0x1153,0x1932,0x2151,0x2130,0x2130,0x210F,0x212F,0x2130,0x2150,0x2151,0x1931,0x1132,0x1133,0x19D6,0x2217,0x19F7,0x11B6,0x1154,0x1132,0x1931,0x2131,0x2931,0x2930,0x290F,0x290F,0x290F,0x2930,0x292F,0x290F,0x290F,0x210F,0x210F,0x212F,0x2130,0x2110,0x2130,0x1911,0x1931,0x1953,0x1174,0x19B6,0x19F7,0x2218,0x2218,0x1175,0x1133,0x1112,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x2930,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x10F2,0x1134,0x21D7,0x19D7,0x19D7,0x19D7,0x0954,0x00D1,0x1953,0x1952,0x1931,0x2130,0x2130,0x2130,0x2110,0x2130,0x2150,0x2131,0x1931,0x1132,0x1174,0x11B6,0x11D7,0x11D7,0x11D7,0x11D7,0x0155,0x0955,0x0975,0x0976,0x11F7,0x1A18,0x19F8,0x19D7,0x19B6,0x1154,0x1932,0x1931,0x2111,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x1912,0x1132,0x1954,0x19B6,0x21F7,0x21F7,0x19D6,0x1175,0x1133,0x1112,0x1111,0x1911,0x2131,0x2951,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x210F,0x212F,0x292F,0x292F,0x290F,0x20AD,0x206B,0x200A,0x512D,0xE55D,0xD4BA,0xD479,0xD478,0xDC78,0xDC78,0xDC78,0xDC99,0xDCDA,0xE55D,0x510D,0x280A,0x30CD,0x28EE,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2130,0x2110,0x2110,0x2110,0x2111,0x1911,0x1911,0x1113,0x1975,0x19D7,0x11D8,0x11D7,0x19B7,0x0912,0x1112,0x1952,0x2151,0x2131,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2130,0x2130,0x210F,0x2130,0x2130,0x2930,0x290F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x2110,0x2110,0x210F,0x212F,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x2130,0x212F,0x212F,0x1930,0x1930,0x1931,0x1132,0x1112,0x19B5,0x2217,0x19D6,0x19B5,0x1154,0x1132,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x1911,0x1932,0x1153,0x1174,0x19D7,0x19D7,0x19D7,0x19B6,0x0934,0x1153,0x1972,0x1931,0x2151,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x210F,0x2930,0x212F,0x2930,0x210F,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x290F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1112,0x1133,0x19B5,0x19D5,0x19D5,0x1994,0x1132,0x1932,0x1952,0x1931,0x2151,0x1931,0x1931,0x1931,0x1932,0x1154,0x1A17,0x1A18,0x19F8,0x1195,0x1132,0x1951,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2131,0x1911,0x1931,0x1132,0x19B5,0x19D6,0x19D6,0x19F7,0x19F7,0x11B6,0x1196,0x19B6,0x19B7,0x19D7,0x19D7,0x19B7,0x19B6,0x1174,0x1133,0x1932,0x1912,0x1931,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2131,0x2130,0x2130,0x2130,0x2110,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2131,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x2131,0x1911,0x2131,0x2131,0x1931,0x1932,0x1953,0x1174,0x19D6,0x19D6,0x19D6,0x19D6,0x1995,0x1133,0x1112,0x1931,0x1931,0x2131,0x2110,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x290F,0x210F,0x2910,0x2110,0x2130,0x2130,0x2131,0x2131,0x1932,0x1133,0x21B6,0x21F7,0x19D7,0x11B6,0x0955,0x0954,0x1195,0x1195,0x0934,0x0934,0x0955,0x1196,0x11B6,0x19B6,0x19D6,0x1995,0x1932,0x1911,0x1910,0x1910,0x1910,0x2130, + 0x1112,0x1132,0x1133,0x1154,0x1195,0x0996,0x11D7,0x11F8,0x11F8,0x11F8,0x11D8,0x11B7,0x1196,0x1174,0x1132,0x1111,0x1911,0x1910,0x2131,0x1910,0x1931,0x1931,0x1132,0x1173,0x1174,0x11B6,0x09B7,0x11F8,0x11D8,0x11D9,0x11F9,0x11D8,0x11D7,0x1195,0x1154,0x1973,0x1932,0x1911,0x2131,0x2110,0x2110,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2111,0x1911,0x1932,0x1133,0x1974,0x19B6,0x19F7,0x2217,0x21F7,0x19B5,0x1153,0x1112,0x1932,0x2152,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x290F,0x290F,0x2930,0x2930,0x2910,0x2110,0x210F,0x2930,0x212F,0x210F,0x212F,0x2930,0x290F,0x2110,0x2110,0x2110,0x2930,0x210F,0x2110,0x2930,0x2930,0x210F,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x290F,0x212F,0x2930,0x290F,0x2910,0x2110,0x2110,0x210F,0x210F,0x2130,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x290F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x2130,0x212F,0x2930,0x2930,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x290F,0x290F,0x290F,0x2930,0x2910,0x290F,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2110,0x2910,0x2930,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x2930,0x2910,0x2930,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x2910,0x210F,0x2910,0x290F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x290F,0x210F,0x290F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2110,0x290F,0x2930,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x290F,0x210F,0x2110,0x2110,0x210F,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x212F,0x210F,0x210F,0x290F,0x2930,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x290F,0x2110,0x2110,0x2930,0x2110,0x210F,0x2930,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x19B7,0x11D8,0x11FA,0x09FA,0x01B9,0x01B9,0x01B9,0x01BA,0x09DA,0x01D9,0x09F9,0x09D8,0x09B7,0x1195,0x1153,0x1952,0x2152,0x2130,0x2110,0x2130,0x2130,0x2130,0x2151,0x2151,0x1931,0x1932,0x1132,0x19B5,0x19F7,0x19F7,0x19D6,0x0954,0x1132,0x1911,0x2131,0x2931,0x2930,0x2930,0x292F,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x290F,0x212F,0x2110,0x2110,0x2130,0x2131,0x1931,0x1112,0x1133,0x1154,0x19D6,0x2218,0x2218,0x21F7,0x1154,0x1133,0x1932,0x1932,0x1911,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x290F,0x292F,0x2930,0x210F,0x210F,0x210F,0x212F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1932,0x10F2,0x10F2,0x1975,0x19B7,0x11B7,0x11D8,0x11D7,0x11B6,0x00F2,0x1153,0x1952,0x1931,0x2131,0x2151,0x2130,0x210F,0x210F,0x2130,0x2131,0x1931,0x1932,0x1153,0x1195,0x11B6,0x11F8,0x11F8,0x11F8,0x11D7,0x11B7,0x11B7,0x11D7,0x1A18,0x11D7,0x19F7,0x19B6,0x1175,0x1133,0x1932,0x2131,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x2131,0x1911,0x1112,0x1154,0x19B6,0x21F7,0x21F7,0x19D7,0x1995,0x1133,0x1112,0x1911,0x1911,0x2131,0x2131,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x292F,0x210F,0x292F,0x290F,0x28EE,0x28AC,0x202A,0x40CC,0xCC9A,0xDCDA,0xDCB9,0xDC78,0xDC57,0xDC78,0xDC58,0xDC78,0xDC78,0xDCBA,0xED7D,0x48CC,0x282A,0x30EE,0x28EE,0x28EF,0x290F,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x2130,0x2110,0x2110,0x2110,0x2111,0x1911,0x1911,0x1112,0x1133,0x1175,0x19D8,0x11D8,0x11D8,0x19D7,0x1154,0x0912,0x1932,0x2132,0x2131,0x2110,0x2130,0x2110,0x2130,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x1930,0x1931,0x1132,0x1112,0x19B5,0x2217,0x19D6,0x19B6,0x1154,0x1132,0x1932,0x1931,0x2130,0x2130,0x2130,0x2131,0x1932,0x1132,0x1154,0x0975,0x11B6,0x11F8,0x19F8,0x11B7,0x0954,0x1133,0x1973,0x1952,0x1931,0x2131,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x292F,0x2930,0x210F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2130,0x2110,0x2110,0x212F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x28F0,0x2910,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x1911,0x1932,0x1932,0x1133,0x19B5,0x21F6,0x19D5,0x1994,0x1132,0x1932,0x1952,0x1931,0x2131,0x2131,0x1931,0x1931,0x1132,0x1154,0x19F7,0x1A18,0x19F8,0x1195,0x1132,0x1931,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1111,0x1953,0x19B5,0x11B6,0x19D7,0x19D7,0x1196,0x0955,0x0955,0x0955,0x1176,0x11B6,0x11D7,0x19F8,0x11B7,0x11B6,0x1195,0x1133,0x1112,0x1932,0x1932,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2131,0x2131,0x2131,0x2130,0x2131,0x2131,0x2131,0x2130,0x2131,0x2130,0x2130,0x1930,0x1910,0x1910,0x1931,0x1931,0x1911,0x1931,0x1931,0x1910,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2111,0x1931,0x1931,0x1911,0x1931,0x1931,0x1911,0x1931,0x2131,0x1911,0x1911,0x1911,0x1911,0x1910,0x1910,0x1910,0x1931,0x1910,0x1911,0x1931,0x2131,0x1911,0x1910,0x1910,0x1910,0x1911,0x1911,0x1931,0x2131,0x1911,0x2111,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1910,0x1930,0x1931,0x1931,0x1930,0x1930,0x2130,0x2130,0x1930,0x1930,0x1910,0x2131,0x1910,0x1910,0x1910,0x1910,0x1910,0x1911,0x1911,0x1911,0x1911,0x1911,0x18F1,0x18F1,0x1911,0x1911,0x1911,0x1911,0x1912,0x1932,0x1953,0x1974,0x19D5,0x21F7,0x19F7,0x19D6,0x1995,0x1133,0x1112,0x1911,0x1931,0x1910,0x2131,0x2110,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x2910,0x2110,0x2130,0x2110,0x2131,0x1911,0x1932,0x1933,0x19B6,0x21F7,0x19F7,0x11B6,0x0975,0x0954,0x0975,0x0974,0x0133,0x0934,0x0955,0x1196,0x11B6,0x19D7,0x21D6,0x1994,0x1932,0x1931,0x1911,0x2110,0x2110,0x2951, + 0x1932,0x1932,0x1932,0x1153,0x1154,0x1195,0x0996,0x09D7,0x11F8,0x09F8,0x1219,0x11F8,0x11B7,0x11B6,0x1154,0x1132,0x1111,0x1931,0x1931,0x1930,0x1931,0x1931,0x1972,0x1132,0x1153,0x1175,0x1196,0x11B7,0x09B7,0x11D8,0x09D8,0x11D8,0x11D8,0x09B6,0x1196,0x1154,0x1133,0x1932,0x1911,0x2131,0x2110,0x2931,0x2110,0x2110,0x2110,0x2110,0x2130,0x2131,0x2111,0x1911,0x1111,0x1132,0x1174,0x19B6,0x19F7,0x2218,0x19F7,0x1195,0x1174,0x1133,0x1932,0x1931,0x2111,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x2910,0x2910,0x2910,0x210F,0x2910,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x2110,0x2930,0x210F,0x212F,0x210F,0x210F,0x2930,0x2110,0x2910,0x2910,0x2930,0x290F,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2930,0x210F,0x2910,0x2930,0x2910,0x290F,0x290F,0x210F,0x2110,0x2930,0x2930,0x290F,0x212F,0x2930,0x210F,0x2910,0x2110,0x2930,0x2110,0x2130,0x2130,0x2930,0x2110,0x2110,0x210F,0x292F,0x290F,0x290F,0x290F,0x2930,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x210F,0x210F,0x2130,0x212F,0x212F,0x210F,0x212F,0x2930,0x212F,0x212F,0x2130,0x2930,0x212F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x212F,0x212F,0x210F,0x212F,0x2930,0x2930,0x2930,0x210F,0x210F,0x290F,0x2910,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2910,0x2910,0x290F,0x290F,0x2930,0x2910,0x210F,0x210F,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2910,0x210F,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x2910,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x2930,0x210F,0x210F,0x2910,0x210F,0x210F,0x290F,0x2910,0x210F,0x210F,0x2910,0x2910,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2110,0x2930,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x2930,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2130,0x2130,0x210F,0x2930,0x2130,0x2930,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2151,0x2151,0x1911,0x1132,0x1154,0x19F8,0x09B8,0x09D9,0x09DA,0x01DA,0x01BA,0x01DA,0x01BA,0x01DA,0x09DA,0x09D9,0x09D9,0x09B7,0x11B6,0x1195,0x1153,0x2152,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x1951,0x1952,0x1132,0x19D5,0x2237,0x1A17,0x11D6,0x1174,0x1132,0x1111,0x1931,0x2131,0x2131,0x2930,0x2930,0x2910,0x2910,0x2930,0x210F,0x292F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2131,0x2131,0x1932,0x1112,0x1133,0x1174,0x19D6,0x21F7,0x2218,0x21F7,0x1155,0x1133,0x1933,0x1932,0x1932,0x1931,0x2131,0x2151,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x292F,0x292F,0x210F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x2930,0x212F,0x212F,0x292F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x1931,0x1931,0x1932,0x1113,0x1134,0x19B7,0x19D8,0x11B8,0x11D8,0x11D8,0x11D7,0x0975,0x0912,0x1952,0x1931,0x1931,0x2151,0x2151,0x2110,0x210F,0x2130,0x2130,0x1910,0x1932,0x1933,0x1134,0x1155,0x11B6,0x19F8,0x1A18,0x19F8,0x11F7,0x11D7,0x11D7,0x19F8,0x19F7,0x19D7,0x1995,0x1112,0x1912,0x1931,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x1911,0x1912,0x1112,0x1154,0x21D6,0x2217,0x21F7,0x19D6,0x1995,0x1153,0x1112,0x1111,0x2131,0x2131,0x2131,0x2110,0x2110,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2930,0x210F,0x290F,0x290F,0x210E,0x290E,0x28AD,0x204B,0x306A,0xD51C,0xDCDA,0xDCB9,0xDC78,0xDC98,0xDC78,0xDC57,0xDC78,0xDC78,0xDC78,0xDC99,0xE51C,0xBC5A,0x492E,0x286C,0x28EE,0x28EF,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2110,0x2110,0x2111,0x1911,0x1912,0x1133,0x1175,0x1196,0x11D8,0x11D8,0x11D9,0x11D8,0x1175,0x0933,0x1953,0x1952,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x2130,0x2130,0x210F,0x2130,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2910,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x2930,0x2910,0x290F,0x290F,0x2930,0x2930,0x290F,0x212F,0x2930,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x2130,0x1930,0x1931,0x1132,0x1133,0x19B5,0x21F7,0x19B6,0x19B5,0x1153,0x1112,0x1932,0x1931,0x2131,0x2131,0x1911,0x1911,0x1932,0x1153,0x1195,0x11B6,0x11B7,0x11D7,0x11F8,0x11D7,0x0975,0x0934,0x1153,0x1132,0x1911,0x1931,0x2131,0x2130,0x2130,0x2930,0x210F,0x210F,0x2930,0x212F,0x2130,0x212F,0x210F,0x2930,0x2110,0x2130,0x2110,0x2130,0x212F,0x292F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x212F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x212F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x1911,0x1932,0x1132,0x1133,0x19B5,0x19D6,0x19D5,0x1994,0x1132,0x1931,0x1931,0x1951,0x1930,0x1910,0x1931,0x1931,0x1132,0x1154,0x19F7,0x19F8,0x19F8,0x1195,0x1132,0x1111,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x1911,0x1932,0x1994,0x19F6,0x11B6,0x11D7,0x11B7,0x1176,0x0955,0x0955,0x0955,0x0955,0x0976,0x11B7,0x11F8,0x11D8,0x11D7,0x11B6,0x0955,0x0913,0x1112,0x1112,0x1112,0x1111,0x1111,0x1931,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1111,0x1911,0x1911,0x1931,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1111,0x1911,0x1931,0x1111,0x1911,0x1911,0x1911,0x1111,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1911,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1912,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1932,0x1931,0x1911,0x1931,0x1911,0x1111,0x1911,0x1911,0x1911,0x1931,0x1931,0x1111,0x1911,0x1911,0x1911,0x1111,0x1111,0x1911,0x1111,0x1911,0x1912,0x1912,0x1911,0x1912,0x1912,0x1912,0x1112,0x1112,0x1112,0x1112,0x1132,0x1133,0x1154,0x1174,0x19F6,0x2217,0x19D6,0x1174,0x1133,0x1132,0x1931,0x1911,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x290F,0x212F,0x212F,0x210E,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x2930,0x2930,0x2130,0x2110,0x210F,0x210F,0x210F,0x2110,0x2910,0x2910,0x2930,0x2130,0x2111,0x2111,0x1912,0x1112,0x1995,0x21F7,0x19F8,0x11D7,0x0976,0x0975,0x0975,0x0954,0x0954,0x0954,0x0955,0x1196,0x11B6,0x19D7,0x1995,0x1974,0x1932,0x1911,0x1910,0x1910,0x2130,0x2130, + 0x2131,0x1911,0x1931,0x1932,0x1153,0x1174,0x0975,0x0996,0x09B7,0x11F8,0x11F8,0x11F8,0x11D8,0x11B7,0x1196,0x1174,0x1153,0x1932,0x1931,0x2151,0x2151,0x2151,0x1931,0x1932,0x1132,0x1153,0x1174,0x1195,0x11B6,0x11B7,0x11D8,0x1219,0x11F8,0x11F8,0x11B6,0x0975,0x1133,0x1132,0x1932,0x2132,0x2131,0x2931,0x2910,0x2910,0x2910,0x2930,0x2110,0x2130,0x2130,0x1911,0x1911,0x1932,0x1133,0x1174,0x19B6,0x19F7,0x2217,0x21F7,0x1195,0x1154,0x1132,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x210F,0x212F,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910,0x210F,0x2930,0x2930,0x210F,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x2110,0x2910,0x2110,0x2930,0x2110,0x212F,0x292F,0x292F,0x210F,0x210F,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x2930,0x290F,0x292F,0x2930,0x210F,0x212F,0x2110,0x210F,0x2910,0x2930,0x2110,0x2910,0x2910,0x2910,0x290F,0x2930,0x290F,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x2930,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x2930,0x2110,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x290F,0x2930,0x290F,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2930,0x2110,0x210F,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x2110,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x210F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x2930,0x2930,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x212F,0x2130,0x2130,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2910,0x2910,0x2930,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2910,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2910,0x210F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2910,0x2910,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x290F,0x210F,0x2930,0x290F,0x290F,0x210F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x212F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2930,0x2930,0x210F,0x2130,0x2130,0x2130,0x2151,0x2131,0x1912,0x1112,0x1154,0x11D8,0x11D9,0x09DA,0x01BA,0x01BA,0x01BA,0x01BA,0x01BA,0x01BA,0x01D9,0x01B9,0x09F9,0x09D8,0x11D7,0x11B6,0x1133,0x1952,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2151,0x1952,0x1132,0x1995,0x2217,0x1A17,0x19D6,0x1195,0x0933,0x1112,0x1911,0x2131,0x2131,0x2931,0x2930,0x2110,0x2110,0x2110,0x210F,0x2930,0x292F,0x212F,0x210F,0x212F,0x210F,0x2110,0x2131,0x2111,0x1911,0x1911,0x1912,0x1133,0x1975,0x19B6,0x21F7,0x2A38,0x21D7,0x1155,0x1133,0x1933,0x1932,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2930,0x210F,0x292F,0x292F,0x292F,0x290F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2930,0x290F,0x292F,0x292F,0x292F,0x212F,0x210F,0x2930,0x210F,0x212F,0x210F,0x212F,0x210F,0x2930,0x290F,0x290F,0x210F,0x2110,0x2130,0x2130,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x1951,0x1932,0x1133,0x0914,0x19B7,0x11B8,0x11B8,0x09D8,0x11F9,0x09D8,0x11D8,0x11B6,0x0953,0x1153,0x1952,0x1911,0x2151,0x2131,0x2110,0x2110,0x2130,0x2110,0x2131,0x2131,0x1932,0x1133,0x1134,0x1155,0x1195,0x19F7,0x19D7,0x11B6,0x11B6,0x19F7,0x19B6,0x19B6,0x1995,0x1133,0x1912,0x1911,0x2110,0x2130,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x1931,0x1912,0x1112,0x1154,0x21F6,0x2217,0x2217,0x21F7,0x1995,0x1133,0x1112,0x1912,0x1931,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x2130,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x290E,0x28CD,0x28AC,0x2829,0xABF7,0xDD1B,0xDCBA,0xDC99,0xDC98,0xDC57,0xDC57,0xDC57,0xDC57,0xDC58,0xD458,0xDC99,0xDCFB,0xDD1D,0x492E,0x288D,0x28CE,0x28EF,0x290F,0x210F,0x290F,0x2930,0x290F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2111,0x1911,0x1912,0x1953,0x1174,0x1196,0x11B7,0x11D9,0x09D9,0x11D9,0x11D8,0x11B7,0x1196,0x1175,0x1133,0x1911,0x1911,0x2131,0x2130,0x2130,0x2130,0x2930,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2930,0x2930,0x2930,0x2910,0x2930,0x290F,0x2910,0x2910,0x2110,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x290F,0x2930,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1932,0x1132,0x1133,0x19B5,0x21F7,0x19B6,0x19B5,0x1154,0x1112,0x1932,0x1931,0x2131,0x1931,0x1911,0x1932,0x1953,0x1174,0x11B6,0x09B7,0x09B7,0x09B8,0x11F8,0x1218,0x0976,0x0954,0x1195,0x1153,0x1132,0x1911,0x2131,0x2130,0x2130,0x2110,0x210F,0x210F,0x290F,0x2930,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x2930,0x2110,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2111,0x1911,0x1932,0x1133,0x1153,0x19B5,0x19D6,0x19B5,0x1994,0x1132,0x1931,0x1952,0x1931,0x1930,0x1930,0x1930,0x1931,0x1132,0x1153,0x19F7,0x1A18,0x19D8,0x1196,0x1132,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1952,0x1994,0x19B6,0x11D7,0x11B7,0x0976,0x0976,0x0975,0x0934,0x0934,0x0934,0x0955,0x0996,0x11D8,0x11D8,0x11F8,0x09D7,0x0976,0x0935,0x0913,0x0913,0x0913,0x0913,0x0912,0x0912,0x0912,0x1112,0x1112,0x1112,0x0912,0x1112,0x0912,0x1112,0x0912,0x0912,0x0912,0x1112,0x0912,0x0912,0x0912,0x0912,0x0912,0x1112,0x1112,0x0912,0x0912,0x0912,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1133,0x1112,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1132,0x1153,0x1153,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1132,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1113,0x1113,0x1113,0x1133,0x1133,0x1154,0x1154,0x1175,0x21F7,0x2217,0x19F7,0x1174,0x1153,0x1132,0x1931,0x1911,0x2131,0x2130,0x2130,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x2930,0x2930,0x2130,0x2130,0x2111,0x1911,0x1912,0x1112,0x1175,0x19F7,0x19F7,0x19F8,0x11B7,0x0976,0x0975,0x0955,0x0975,0x0975,0x0995,0x11B6,0x19B7,0x19B6,0x19B6,0x1974,0x1932,0x1911,0x2110,0x20F0,0x2110,0x2930, + 0x2130,0x2110,0x1911,0x1931,0x1932,0x1133,0x1154,0x1175,0x0996,0x09B7,0x11D8,0x11F8,0x09D8,0x11D8,0x11D7,0x1196,0x1154,0x1133,0x1932,0x1931,0x2131,0x2131,0x1911,0x1931,0x1911,0x1132,0x1153,0x1174,0x1195,0x11B7,0x1218,0x11F8,0x1219,0x1218,0x11D7,0x0996,0x0954,0x1153,0x1132,0x1911,0x2131,0x2131,0x2931,0x2110,0x2110,0x2910,0x2110,0x2130,0x2130,0x2130,0x2131,0x1911,0x1131,0x1132,0x1154,0x19B5,0x2217,0x2217,0x19D6,0x1995,0x1133,0x1133,0x1932,0x2132,0x2131,0x2131,0x2130,0x2130,0x210F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x210F,0x2910,0x2910,0x290F,0x210F,0x2930,0x2930,0x2910,0x210F,0x2930,0x2110,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2110,0x2110,0x2910,0x2110,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x210F,0x2930,0x2930,0x2910,0x210F,0x2930,0x2910,0x2910,0x2110,0x2910,0x2930,0x2910,0x2110,0x2910,0x2930,0x2910,0x210F,0x2910,0x2930,0x210F,0x2910,0x2910,0x2930,0x2910,0x2910,0x2930,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x2110,0x2110,0x210F,0x210F,0x210F,0x2910,0x2930,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x2110,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x2930,0x210F,0x210F,0x290F,0x2910,0x290F,0x2910,0x2910,0x2930,0x210F,0x2930,0x2910,0x290F,0x210F,0x2930,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2930,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2930,0x210F,0x210F,0x2930,0x2910,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x290F,0x292F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2930,0x2910,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x290F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2151,0x2131,0x1932,0x1133,0x1175,0x1A18,0x11F9,0x01D9,0x01BA,0x01BA,0x01DA,0x01BA,0x01BA,0x01DA,0x01DA,0x09D9,0x09D8,0x09D8,0x11F7,0x19D6,0x1133,0x1932,0x2152,0x2131,0x2130,0x2130,0x2130,0x2131,0x2151,0x2151,0x1931,0x1132,0x1974,0x21F6,0x19F6,0x19F7,0x1195,0x1154,0x1153,0x10F1,0x1932,0x2131,0x2951,0x2131,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1932,0x1133,0x1154,0x19B6,0x2218,0x2238,0x1996,0x1154,0x1154,0x1133,0x1932,0x1931,0x1911,0x2131,0x2110,0x2130,0x2110,0x2110,0x210F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2930,0x212F,0x2130,0x2130,0x212F,0x210F,0x290F,0x2910,0x2110,0x2930,0x212F,0x2930,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x1931,0x1952,0x1974,0x0934,0x1196,0x19B8,0x0998,0x11D9,0x09D9,0x09D9,0x09F9,0x09F8,0x11D8,0x11B6,0x0933,0x1953,0x1932,0x2152,0x2130,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x2152,0x1932,0x1112,0x1112,0x1953,0x1974,0x1154,0x1974,0x1994,0x1994,0x1994,0x1953,0x1132,0x1911,0x1910,0x1910,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x1931,0x2152,0x1932,0x1112,0x1174,0x21F6,0x2217,0x2238,0x21F7,0x1995,0x1133,0x1111,0x1911,0x1931,0x2131,0x2130,0x2130,0x2110,0x2110,0x210F,0x20EF,0x2930,0x2910,0x2930,0x210F,0x210F,0x210F,0x2110,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x28CE,0x288C,0x2009,0x8AD3,0xDD3C,0xDCDA,0xDC99,0xDC78,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xDC78,0xDC78,0xDC99,0xE51C,0xBC19,0x304B,0x28AD,0x28CE,0x28EF,0x290F,0x2910,0x2930,0x2930,0x290F,0x210F,0x210F,0x2110,0x2130,0x2131,0x1931,0x1932,0x1953,0x1995,0x11B6,0x0997,0x09B8,0x09D9,0x09D9,0x09D9,0x09D9,0x09D8,0x11B7,0x1196,0x1174,0x1953,0x1931,0x2131,0x2130,0x2130,0x2130,0x2930,0x2130,0x212F,0x212F,0x2110,0x2130,0x2130,0x2930,0x2930,0x210F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x290F,0x2930,0x2930,0x210F,0x210F,0x212F,0x2930,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x1930,0x1931,0x1931,0x1932,0x1133,0x19B6,0x2217,0x19D6,0x1995,0x1974,0x1132,0x1131,0x1911,0x1931,0x1931,0x1952,0x1953,0x1154,0x1195,0x0996,0x09B7,0x01B8,0x09D9,0x1219,0x1219,0x0997,0x0176,0x0995,0x0974,0x1153,0x1932,0x2131,0x2131,0x2131,0x2930,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x2110,0x2930,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x292F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2930,0x2930,0x2110,0x2110,0x2130,0x2110,0x1911,0x1931,0x1973,0x1153,0x1154,0x19B5,0x19B5,0x19B5,0x1974,0x1132,0x1932,0x1951,0x2151,0x1910,0x1930,0x1930,0x1931,0x1111,0x1153,0x19F7,0x1A18,0x19D7,0x1195,0x1112,0x1931,0x1910,0x2130,0x2110,0x2130,0x2110,0x210F,0x2130,0x210F,0x2130,0x2130,0x210F,0x2110,0x2130,0x1931,0x1931,0x1132,0x1995,0x19D6,0x11D7,0x0996,0x0956,0x0976,0x1196,0x1175,0x0114,0x0934,0x0955,0x0976,0x09D8,0x09D8,0x11F9,0x11F8,0x09B8,0x0997,0x11B7,0x11B7,0x19D7,0x11D7,0x11B6,0x11B6,0x1196,0x1196,0x1196,0x1196,0x1196,0x1195,0x1196,0x1196,0x1196,0x1196,0x1195,0x1195,0x1196,0x1196,0x11B6,0x1196,0x1196,0x1196,0x1196,0x1196,0x11B6,0x11B6,0x11B6,0x1196,0x19B6,0x19B6,0x19B6,0x19B6,0x11B6,0x1196,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x19B6,0x11B6,0x1196,0x1196,0x1196,0x1196,0x11B6,0x1196,0x1196,0x1196,0x1196,0x1195,0x1195,0x1195,0x1196,0x1196,0x1196,0x1196,0x1196,0x1196,0x11B6,0x1196,0x11B6,0x1196,0x11B6,0x1196,0x11B6,0x11B6,0x1195,0x11B6,0x11B6,0x1195,0x11B6,0x11B6,0x11B6,0x11B6,0x19B6,0x11B6,0x11B6,0x11B6,0x19B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x19B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x19B6,0x11B6,0x11B6,0x11B6,0x11B6,0x19B6,0x19B6,0x11B5,0x11B5,0x1195,0x1195,0x1195,0x11B6,0x1195,0x1195,0x1195,0x11B5,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x11B6,0x11B6,0x11B6,0x1196,0x11B6,0x11B6,0x11B6,0x11B6,0x1196,0x1196,0x19D7,0x19D7,0x19F7,0x19F7,0x19D6,0x1174,0x1153,0x1132,0x1131,0x1931,0x2131,0x2110,0x2110,0x2110,0x210F,0x2930,0x2930,0x2930,0x2930,0x20EF,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1112,0x1113,0x1175,0x19D7,0x11D8,0x11D8,0x09B7,0x0997,0x0996,0x0176,0x0996,0x09B6,0x11B7,0x11D7,0x11B7,0x19B6,0x1995,0x1953,0x1932,0x2111,0x2110,0x2110,0x2110,0x2110, + 0x2110,0x2110,0x2131,0x2131,0x1911,0x1111,0x1133,0x1154,0x1175,0x0996,0x11B7,0x11D8,0x11F8,0x11F8,0x11D8,0x11D7,0x11B6,0x0954,0x1133,0x1932,0x1931,0x1911,0x2131,0x1911,0x1931,0x1931,0x1932,0x1153,0x1174,0x1195,0x11D7,0x11F8,0x09F8,0x1218,0x11F8,0x11D7,0x11B6,0x1195,0x1133,0x1932,0x1932,0x2111,0x2931,0x2111,0x2110,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x1931,0x1931,0x1111,0x1132,0x1174,0x19B5,0x21F7,0x2217,0x19B6,0x1995,0x1134,0x1112,0x1932,0x1932,0x2111,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2930,0x210F,0x212F,0x2930,0x2130,0x212F,0x210F,0x2930,0x212F,0x210F,0x210F,0x2910,0x2910,0x2930,0x210F,0x2930,0x290F,0x2910,0x210F,0x210F,0x212F,0x2910,0x2930,0x2910,0x210F,0x210F,0x2910,0x210F,0x2910,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x2910,0x210F,0x290F,0x210F,0x2910,0x2110,0x2110,0x210F,0x210F,0x2130,0x2110,0x2110,0x2130,0x2930,0x2930,0x2930,0x292F,0x292F,0x290F,0x292F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x212F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x212F,0x292F,0x210F,0x212F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2131,0x2152,0x1932,0x1133,0x1195,0x11D8,0x09D8,0x01D9,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x09D9,0x09D8,0x11D7,0x19D6,0x0912,0x1932,0x2152,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1153,0x21D6,0x2217,0x19F7,0x11D6,0x1195,0x1153,0x0912,0x1111,0x1931,0x2131,0x2111,0x2931,0x2130,0x2130,0x2930,0x2110,0x2930,0x210F,0x212F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2111,0x2131,0x2131,0x1912,0x1912,0x1933,0x1154,0x19B6,0x2218,0x2A38,0x19B6,0x1975,0x1133,0x1112,0x1912,0x1932,0x2131,0x2110,0x2130,0x2110,0x2110,0x210F,0x2930,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x212F,0x2130,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x290F,0x290F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x1931,0x1953,0x1174,0x0955,0x11D8,0x0998,0x0998,0x09B9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D8,0x11F7,0x1175,0x1153,0x1932,0x2131,0x2131,0x2131,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x1911,0x2152,0x1932,0x1932,0x1932,0x1932,0x1112,0x1932,0x1911,0x10F1,0x1931,0x1910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x1931,0x1931,0x1931,0x1132,0x1132,0x1154,0x21F6,0x2217,0x2217,0x21F7,0x1995,0x1133,0x1112,0x1911,0x1931,0x2131,0x1910,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x2910,0x2930,0x2110,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x28EE,0x28AD,0x202A,0x61D0,0xDD3C,0xDCDA,0xDC99,0xDC98,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC78,0xDC78,0xDC99,0xED5D,0x9AF5,0x302B,0x28AD,0x28EE,0x290F,0x2910,0x2930,0x2930,0x2910,0x2110,0x2130,0x2930,0x2130,0x2130,0x1911,0x1911,0x1932,0x1974,0x1195,0x11B7,0x09D8,0x01B8,0x01B9,0x01DA,0x09DA,0x09DA,0x09D9,0x09D8,0x11B7,0x1196,0x1974,0x1932,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x2910,0x2930,0x290F,0x210F,0x210F,0x212F,0x2930,0x2930,0x210F,0x2930,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x1931,0x1952,0x1132,0x1113,0x19B6,0x2217,0x19B6,0x19B5,0x1174,0x1112,0x1132,0x1931,0x1931,0x1952,0x1952,0x1974,0x1195,0x11D7,0x11D8,0x09F9,0x01B8,0x01B9,0x09F9,0x09F9,0x01D8,0x09F8,0x1218,0x11D6,0x1154,0x1132,0x1932,0x2131,0x2130,0x2130,0x2930,0x210F,0x2910,0x2910,0x2110,0x2130,0x2110,0x2110,0x2930,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x212F,0x212F,0x210F,0x290F,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x1931,0x1952,0x1973,0x1153,0x1174,0x19B5,0x21D6,0x19B5,0x1973,0x1132,0x1931,0x2151,0x2131,0x1930,0x1930,0x1930,0x1931,0x1932,0x1153,0x19F7,0x1A18,0x19D7,0x1195,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x1930,0x1931,0x1931,0x1132,0x1195,0x19F7,0x11B7,0x09B7,0x0976,0x0976,0x0975,0x0955,0x0934,0x0934,0x0955,0x0976,0x0197,0x09D8,0x11F9,0x09D8,0x1219,0x11F9,0x11F9,0x225A,0x225A,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2219,0x2239,0x2239,0x2218,0x2218,0x2219,0x2218,0x2238,0x2218,0x2218,0x2218,0x2218,0x1A18,0x2218,0x1A18,0x1A18,0x1A18,0x2218,0x2218,0x1A18,0x1A18,0x2218,0x2218,0x1A18,0x1A18,0x2218,0x1A18,0x2218,0x2218,0x1A18,0x1A18,0x2218,0x1A18,0x2218,0x2218,0x2238,0x1A18,0x2218,0x2218,0x2218,0x1A18,0x2218,0x19F8,0x2218,0x1A18,0x2218,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2218,0x1A18,0x2218,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x19F8,0x1A18,0x1A18,0x19F8,0x1A18,0x2218,0x1A18,0x2238,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x2218,0x1A18,0x1A18,0x2218,0x1A18,0x1A18,0x2238,0x2238,0x2218,0x2218,0x2238,0x2218,0x2238,0x2218,0x2238,0x2218,0x2238,0x2238,0x2238,0x2238,0x2239,0x2238,0x2239,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2218,0x19D6,0x1175,0x1153,0x1132,0x1932,0x1931,0x1931,0x2110,0x2110,0x2110,0x2110,0x290F,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x292F,0x212F,0x212F,0x292F,0x212F,0x212F,0x2150,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x1932,0x1132,0x1133,0x1175,0x11D7,0x11D7,0x09D8,0x09B8,0x09B8,0x09B7,0x09B7,0x11D7,0x11D7,0x11F8,0x19F7,0x19D7,0x19B6,0x1174,0x1952,0x1931,0x2111,0x2110,0x2110,0x2110,0x2110, + 0x2110,0x2110,0x2110,0x2110,0x2131,0x1931,0x1932,0x1132,0x1154,0x1175,0x11D7,0x11D8,0x1219,0x11F9,0x11F8,0x09D8,0x11D7,0x1196,0x1154,0x1133,0x1911,0x1931,0x2131,0x2131,0x2131,0x2131,0x1911,0x1132,0x1133,0x1174,0x1196,0x09B7,0x09D7,0x09F8,0x09F8,0x11F8,0x11F8,0x1196,0x1995,0x1133,0x1932,0x1932,0x18F1,0x2131,0x2931,0x2110,0x2110,0x2110,0x2930,0x2130,0x2151,0x2131,0x1931,0x1931,0x1131,0x1132,0x1174,0x19B5,0x19F7,0x19F7,0x19D7,0x1995,0x1133,0x1133,0x1912,0x2132,0x2111,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x210F,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x2110,0x2110,0x2910,0x210F,0x2910,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x2110,0x2130,0x210F,0x212F,0x292F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2150,0x2150,0x1930,0x1930,0x2150,0x2130,0x2150,0x2130,0x2130,0x2130,0x210F,0x2930,0x212F,0x212F,0x212F,0x2130,0x2131,0x2131,0x1911,0x1112,0x1195,0x19F8,0x09B8,0x01B9,0x01B9,0x01BA,0x01BA,0x01DA,0x01BA,0x01BA,0x01B9,0x09D9,0x09D9,0x11D8,0x1A17,0x1195,0x0912,0x1131,0x1951,0x2151,0x2151,0x2130,0x2130,0x2130,0x2131,0x2151,0x1931,0x1931,0x1132,0x1994,0x2217,0x2238,0x1A17,0x19D7,0x11B5,0x1133,0x10F2,0x1912,0x1931,0x2131,0x2131,0x2130,0x2130,0x2930,0x2110,0x2130,0x212F,0x212F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x1912,0x1932,0x1133,0x1154,0x1995,0x2A38,0x2218,0x19B6,0x1975,0x1133,0x1112,0x1912,0x1931,0x2131,0x2131,0x2130,0x2110,0x2110,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1932,0x1133,0x0934,0x1A19,0x11F9,0x0998,0x09B9,0x01B9,0x01DA,0x01DA,0x01D9,0x01D9,0x01B8,0x1219,0x1A18,0x0933,0x1132,0x1931,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x1931,0x1932,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2131,0x1931,0x1931,0x1132,0x1132,0x1174,0x21F7,0x2217,0x2217,0x21F6,0x1174,0x1133,0x1132,0x1931,0x1931,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x210F,0x2910,0x210F,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x28EE,0x20AD,0x286B,0x40CC,0xD4DB,0xD4BA,0xDC99,0xDCB9,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC77,0xDC57,0xDC78,0xD478,0xE51C,0x8A93,0x302A,0x288C,0x28EE,0x290F,0x290F,0x210F,0x210F,0x2930,0x2110,0x2130,0x2110,0x2130,0x2131,0x1911,0x1911,0x1933,0x19B6,0x11D7,0x11F8,0x09D9,0x09D9,0x01D9,0x01DA,0x01DA,0x09DA,0x09FA,0x09D9,0x11D8,0x11B7,0x1175,0x1133,0x1932,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2910,0x210F,0x290F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x1930,0x1930,0x1931,0x1132,0x1113,0x19B6,0x21F7,0x19B6,0x19B6,0x1174,0x1132,0x1131,0x1131,0x1931,0x1952,0x1973,0x1175,0x1196,0x11D8,0x1219,0x09F9,0x01B9,0x01D9,0x01F9,0x01F9,0x01F9,0x0A1A,0x123A,0x11F7,0x0975,0x1133,0x1932,0x2131,0x2131,0x2110,0x2110,0x210F,0x290F,0x2910,0x2130,0x2130,0x2130,0x2130,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1932,0x1952,0x1974,0x1154,0x1195,0x19B6,0x19B6,0x21B5,0x1153,0x1132,0x1931,0x2151,0x2131,0x2130,0x1930,0x1930,0x1930,0x1131,0x1173,0x1A17,0x1A18,0x19F7,0x1195,0x1132,0x1931,0x1910,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x212F,0x2930,0x2130,0x2110,0x2130,0x2131,0x1931,0x1911,0x1112,0x1194,0x19D7,0x11B6,0x11D7,0x0996,0x0955,0x0955,0x0934,0x0955,0x0935,0x0135,0x0976,0x09B7,0x09D8,0x09D8,0x09D8,0x11F8,0x11F8,0x11F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19D8,0x21F8,0x19F8,0x19D7,0x21F8,0x19D7,0x19F8,0x21F8,0x21F8,0x19F8,0x19F8,0x19F8,0x19F8,0x2218,0x2218,0x19F8,0x19F8,0x21F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x21F8,0x21F8,0x19F8,0x2218,0x19F7,0x19F8,0x2218,0x19F7,0x19F7,0x19F8,0x19F7,0x19F8,0x19F8,0x19F7,0x19F7,0x19F7,0x19F7,0x19F8,0x19D7,0x19F7,0x19F8,0x19D7,0x19F8,0x19F7,0x19F7,0x19F8,0x19F8,0x19F7,0x19F7,0x19D7,0x19F8,0x19F8,0x19F7,0x19F7,0x19F8,0x19D7,0x19D7,0x19D7,0x19F7,0x19F8,0x19F7,0x19F7,0x19F7,0x19F7,0x19D7,0x19F7,0x19D7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19D7,0x19D7,0x19F7,0x19F7,0x19D7,0x19D7,0x19F7,0x19D7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19D7,0x19D7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x1A17,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x21F8,0x19F7,0x19F7,0x2218,0x2218,0x19F8,0x1A18,0x19F8,0x19F7,0x19F7,0x19F7,0x19F7,0x19F8,0x19F8,0x1A18,0x1A18,0x2218,0x2218,0x19D7,0x19D7,0x19B6,0x1174,0x1133,0x1132,0x1932,0x1931,0x1931,0x2110,0x2110,0x2130,0x2110,0x2930,0x2910,0x290F,0x210F,0x210F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x190F,0x1910,0x2151,0x1932,0x1153,0x1154,0x1175,0x19D7,0x11D8,0x09B8,0x09D8,0x09B8,0x09D8,0x11D8,0x19F8,0x1A18,0x1A38,0x1A17,0x19B6,0x1974,0x1132,0x1931,0x1931,0x2110,0x2930,0x2910,0x2910,0x20F0, + 0x2110,0x2110,0x2110,0x2130,0x2130,0x1910,0x1911,0x1932,0x1132,0x1174,0x1195,0x11B7,0x11D8,0x11F8,0x1218,0x11F8,0x11F8,0x11D7,0x1196,0x1154,0x1132,0x1911,0x2131,0x2151,0x2131,0x1931,0x1911,0x1931,0x1132,0x1133,0x1174,0x1196,0x11D7,0x11F8,0x11F8,0x1219,0x11F8,0x11D7,0x1196,0x1155,0x1133,0x1912,0x1912,0x2111,0x2951,0x2131,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x1931,0x1131,0x1132,0x1174,0x19D6,0x2217,0x21F7,0x21F7,0x1995,0x1134,0x1933,0x1932,0x1911,0x2111,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x292F,0x290F,0x2930,0x292F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2910,0x2910,0x210F,0x2910,0x2910,0x2930,0x2910,0x2110,0x210F,0x2110,0x2910,0x2910,0x2110,0x2930,0x212F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2930,0x212F,0x210F,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x212F,0x212F,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x212F,0x212F,0x2110,0x2110,0x210F,0x210F,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x2110,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2110,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2110,0x210F,0x2110,0x2130,0x210F,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2930,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x292F,0x292F,0x290F,0x292F,0x212F,0x292F,0x212F,0x2130,0x2130,0x2130,0x1950,0x1130,0x090F,0x1150,0x1130,0x1930,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1132,0x1174,0x19F8,0x11D8,0x09D9,0x01B9,0x01B9,0x01BA,0x01DA,0x01DA,0x01BA,0x01B9,0x01B9,0x09D8,0x09D7,0x19F7,0x1174,0x1132,0x1931,0x1951,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1931,0x1932,0x1953,0x19B5,0x2217,0x1A18,0x1A18,0x19D7,0x1174,0x1133,0x1112,0x1912,0x2132,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x2130,0x2930,0x2930,0x2110,0x2110,0x2110,0x2111,0x2111,0x2132,0x1912,0x1133,0x1134,0x1995,0x2A38,0x21F7,0x19B6,0x1995,0x1153,0x1132,0x1932,0x1931,0x2131,0x2111,0x2110,0x2110,0x2110,0x290F,0x290F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x2930,0x210F,0x2910,0x2110,0x2110,0x212F,0x212F,0x212F,0x2130,0x212F,0x2930,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2131,0x1932,0x1133,0x0955,0x11F9,0x09D9,0x01B9,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01D9,0x09D8,0x11F8,0x1195,0x1133,0x1932,0x1931,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x2131,0x1931,0x2131,0x1911,0x1931,0x1911,0x1910,0x1910,0x2130,0x2130,0x2930,0x2930,0x2130,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1112,0x0912,0x1174,0x21F6,0x2217,0x2217,0x19F6,0x1194,0x1133,0x1112,0x1911,0x1911,0x2131,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2110,0x210F,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x28CD,0x286C,0x2009,0xB3F8,0xDCDA,0xDCB9,0xE4B9,0xDC78,0xDC77,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC78,0xDC99,0xE51B,0x9B15,0x386B,0x28AD,0x28EE,0x28EF,0x290F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2111,0x1911,0x1912,0x1133,0x1196,0x11D7,0x09D9,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x09D9,0x09D9,0x11B8,0x19D7,0x1174,0x1932,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2930,0x290F,0x290F,0x2910,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x292F,0x290F,0x290F,0x2930,0x210F,0x212F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1930,0x1931,0x1132,0x1113,0x19B6,0x21F7,0x19B6,0x19B6,0x1154,0x1132,0x1132,0x1131,0x1131,0x1152,0x1174,0x1195,0x1197,0x11D9,0x09F9,0x01FA,0x01D9,0x01D9,0x01FA,0x01FA,0x01D9,0x01D9,0x09F9,0x09F8,0x11D7,0x1154,0x1932,0x2131,0x2131,0x2110,0x2110,0x2930,0x2910,0x2910,0x2130,0x2130,0x2130,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x212F,0x290F,0x210F,0x212F,0x212F,0x290F,0x290F,0x290F,0x292F,0x212F,0x292F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x1911,0x1932,0x1953,0x1174,0x1154,0x19B6,0x19B6,0x19B5,0x21B5,0x1953,0x1932,0x1931,0x2131,0x2130,0x2151,0x2130,0x1930,0x1931,0x1132,0x1153,0x19F7,0x1A18,0x19F7,0x11B5,0x1132,0x1931,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x1930,0x1931,0x1931,0x1132,0x1154,0x19B6,0x11D7,0x11D8,0x09B7,0x0976,0x0155,0x0135,0x0955,0x0955,0x0976,0x0997,0x09B7,0x09D7,0x11D8,0x11D7,0x11B7,0x11B7,0x11B6,0x1196,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1995,0x1996,0x1195,0x1195,0x1996,0x1996,0x1195,0x1995,0x1995,0x1996,0x1996,0x19B6,0x1995,0x1996,0x1995,0x1995,0x1996,0x1996,0x1995,0x1995,0x1195,0x1996,0x1195,0x19B6,0x1195,0x19B6,0x1195,0x1995,0x1995,0x1995,0x1995,0x1996,0x1995,0x1996,0x1195,0x1195,0x1995,0x1996,0x1195,0x1996,0x1996,0x1995,0x1195,0x1195,0x1195,0x1995,0x1195,0x1995,0x1195,0x1195,0x1195,0x1995,0x1195,0x1995,0x1175,0x1195,0x1195,0x1195,0x1995,0x1995,0x1195,0x1995,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1995,0x1995,0x1175,0x1195,0x1195,0x1995,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1995,0x1995,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1995,0x19B5,0x1995,0x1995,0x1195,0x1195,0x1195,0x1195,0x1195,0x1175,0x1175,0x1195,0x1175,0x1175,0x1175,0x1195,0x1195,0x1195,0x1195,0x1155,0x1154,0x1154,0x1133,0x1133,0x1132,0x1932,0x1931,0x1931,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1910,0x1931,0x1932,0x1132,0x1974,0x1154,0x11B6,0x19D7,0x11D8,0x11D8,0x11D8,0x11D8,0x11B7,0x11D7,0x19F7,0x19D7,0x19D6,0x19B5,0x1994,0x1953,0x1932,0x1931,0x1930,0x2110,0x2130,0x2930,0x2910,0x2910, + 0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x1931,0x1952,0x1152,0x1153,0x0975,0x0996,0x09D7,0x1218,0x1219,0x11F8,0x11F8,0x11B7,0x1196,0x1154,0x1112,0x1911,0x1931,0x2151,0x2131,0x1931,0x1931,0x1931,0x1132,0x1133,0x1174,0x1195,0x09B7,0x09D7,0x11F8,0x1219,0x11F8,0x11B7,0x1196,0x1155,0x1133,0x1912,0x1912,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2151,0x1931,0x1132,0x1153,0x1174,0x19B6,0x19D7,0x19F7,0x21F7,0x1975,0x1154,0x1933,0x1932,0x1911,0x2111,0x2131,0x2130,0x2110,0x2930,0x2930,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x292F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x290F,0x290F,0x210F,0x2910,0x2930,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x2930,0x212F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x210F,0x210F,0x210F,0x2910,0x2930,0x2910,0x2930,0x2910,0x2930,0x2910,0x2930,0x210F,0x2910,0x2910,0x2930,0x210F,0x2910,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2930,0x210F,0x210F,0x210F,0x290F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x210F,0x2930,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2910,0x2910,0x210F,0x292F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2930,0x290F,0x290F,0x210F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x292F,0x212F,0x2130,0x210F,0x212F,0x2150,0x2171,0x1950,0x00CE,0x32D6,0x4358,0x0930,0x1130,0x1930,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1112,0x1154,0x11B6,0x11D8,0x11F9,0x0A1A,0x09FA,0x01DA,0x01B9,0x09DA,0x01B9,0x09D9,0x09F9,0x11F9,0x11F8,0x1195,0x1153,0x1953,0x1952,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x1911,0x1932,0x1932,0x1133,0x1174,0x19D7,0x2218,0x2218,0x19D6,0x1174,0x1113,0x1112,0x1912,0x2132,0x2151,0x2131,0x2130,0x2110,0x2130,0x210F,0x2130,0x212F,0x212F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2111,0x2152,0x2152,0x1932,0x1132,0x1133,0x1995,0x21F7,0x21F7,0x21F7,0x1975,0x1133,0x1113,0x1932,0x1932,0x2131,0x2111,0x2110,0x2110,0x2910,0x292F,0x292F,0x290F,0x290F,0x292F,0x210F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1952,0x0954,0x11B7,0x09D8,0x01B9,0x09DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x09FA,0x09F9,0x09D8,0x19F8,0x1154,0x1112,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x2110,0x2131,0x2131,0x2131,0x1911,0x2131,0x2131,0x2131,0x2130,0x2130,0x210F,0x2110,0x2930,0x2930,0x210F,0x2110,0x2110,0x2110,0x2150,0x2151,0x2131,0x1931,0x1931,0x1132,0x1133,0x1174,0x19F6,0x2237,0x2217,0x19D6,0x1995,0x1133,0x1112,0x1911,0x1911,0x2131,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x2110,0x210F,0x210F,0x210F,0x2910,0x2930,0x2930,0x210F,0x210F,0x2930,0x2910,0x2910,0x290F,0x28EF,0x28CE,0x206C,0x282A,0x8293,0xE53C,0xDC99,0xDCB9,0xDC78,0xDC78,0xDC78,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC78,0xDC78,0xDC99,0xE4FB,0x92D3,0x302A,0x30CD,0x28CE,0x28EF,0x290F,0x20EF,0x210F,0x2110,0x2930,0x2130,0x2130,0x2110,0x2111,0x1911,0x1112,0x1995,0x19F8,0x1219,0x09D9,0x01D9,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01D9,0x09D9,0x09D8,0x2239,0x19B6,0x1112,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x2930,0x290F,0x210F,0x2930,0x210F,0x2930,0x2930,0x2910,0x290F,0x290F,0x210F,0x2930,0x2930,0x290F,0x290F,0x2930,0x210F,0x2110,0x2930,0x210F,0x210F,0x2930,0x2930,0x292F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2150,0x1930,0x1931,0x1112,0x1113,0x19B6,0x2217,0x19D6,0x1995,0x1154,0x0912,0x1952,0x1952,0x1132,0x1153,0x1994,0x11B6,0x11D8,0x09D9,0x01D9,0x01FA,0x01FA,0x01FA,0x01FA,0x021A,0x01D9,0x01B9,0x09F9,0x11F9,0x1A18,0x1175,0x1112,0x1931,0x2131,0x2930,0x2930,0x2110,0x2910,0x2930,0x210F,0x2130,0x2130,0x2130,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x2132,0x1932,0x1132,0x1174,0x1995,0x19D6,0x21F7,0x19B6,0x1995,0x1994,0x1953,0x1932,0x2151,0x2131,0x1910,0x2130,0x1930,0x1950,0x1931,0x1132,0x1174,0x19F7,0x19F8,0x19F7,0x1195,0x1152,0x1951,0x2151,0x2130,0x2130,0x2110,0x2130,0x210F,0x2130,0x2930,0x210F,0x2110,0x2130,0x2130,0x2131,0x2131,0x1931,0x1112,0x1153,0x1195,0x11D7,0x11F8,0x1A19,0x11F8,0x0996,0x0175,0x0976,0x0996,0x11D7,0x09D7,0x11F8,0x11F8,0x11B6,0x0975,0x1154,0x1134,0x1133,0x1133,0x1112,0x1132,0x1133,0x1133,0x1133,0x1132,0x1132,0x1933,0x1133,0x1933,0x1133,0x1112,0x1133,0x1133,0x1133,0x1133,0x1133,0x1112,0x1133,0x1133,0x1133,0x1133,0x1133,0x1112,0x1132,0x1933,0x1933,0x1132,0x1133,0x1132,0x1132,0x1133,0x1933,0x1133,0x1133,0x1133,0x1132,0x1133,0x1133,0x1133,0x1933,0x1933,0x1133,0x1133,0x1933,0x1933,0x1933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x1133,0x1133,0x1132,0x1132,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1133,0x1953,0x1953,0x1133,0x1133,0x1133,0x1132,0x1133,0x1133,0x1132,0x1133,0x1933,0x1933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1933,0x1132,0x1132,0x1133,0x1133,0x1132,0x1132,0x1133,0x1133,0x1133,0x1133,0x1153,0x1153,0x1133,0x1132,0x1133,0x1133,0x1133,0x1112,0x1133,0x1933,0x1133,0x1133,0x1112,0x1112,0x1132,0x1132,0x1112,0x1112,0x1132,0x1133,0x1133,0x1133,0x1112,0x1112,0x1112,0x1932,0x1951,0x1931,0x1930,0x2130,0x2110,0x2110,0x2130,0x2110,0x2930,0x290F,0x290F,0x290F,0x292F,0x212F,0x210F,0x210F,0x2130,0x210F,0x2130,0x212F,0x2930,0x212F,0x292F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2150,0x2130,0x190F,0x1910,0x1910,0x1931,0x1952,0x1953,0x1154,0x1195,0x19D7,0x19F8,0x19F8,0x11D7,0x0976,0x0955,0x1175,0x1175,0x1154,0x1153,0x1153,0x1132,0x1952,0x1932,0x1931,0x1930,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930, + 0x2130,0x2130,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x0953,0x0995,0x09B6,0x11F8,0x1219,0x11F8,0x11D8,0x11D8,0x19D7,0x1195,0x1154,0x1132,0x1911,0x1931,0x1931,0x2151,0x2131,0x1911,0x1931,0x1132,0x1153,0x1174,0x11B6,0x09B6,0x11D7,0x11F8,0x11F8,0x11F8,0x11B7,0x1196,0x1175,0x1133,0x1912,0x1912,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2131,0x2151,0x1931,0x1132,0x1133,0x1154,0x19B6,0x19D7,0x21F8,0x21D7,0x1975,0x1954,0x1912,0x1932,0x1911,0x2131,0x2131,0x2110,0x2930,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x2930,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2930,0x2910,0x2910,0x2910,0x2110,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x2930,0x212F,0x212F,0x2930,0x212F,0x292F,0x212F,0x210F,0x212F,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x2910,0x2910,0x210F,0x2930,0x290F,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x2910,0x2910,0x292F,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x212F,0x2130,0x212F,0x210F,0x2130,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2131,0x2131,0x2151,0x2152,0x2131,0x2131,0x2131,0x2130,0x2110,0x2110,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x292F,0x2930,0x2130,0x212F,0x212F,0x2150,0x2171,0x1150,0x010F,0x0170,0x4C3B,0x545B,0x1A33,0x0130,0x1110,0x1930,0x2150,0x2130,0x210F,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1153,0x1175,0x11B7,0x11F9,0x11FA,0x09FA,0x09DA,0x09B9,0x01B9,0x01B9,0x09D9,0x09F9,0x1219,0x19F7,0x1174,0x1153,0x1972,0x2152,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x1931,0x1912,0x1953,0x1153,0x1995,0x21F7,0x2218,0x2217,0x21D6,0x1975,0x1113,0x1112,0x1912,0x2132,0x2131,0x2110,0x2931,0x2930,0x2110,0x2130,0x210F,0x210F,0x210F,0x2950,0x2110,0x2110,0x2110,0x2110,0x2130,0x2131,0x2131,0x2131,0x1931,0x1912,0x1133,0x1133,0x19B6,0x2218,0x21F7,0x21D7,0x1975,0x1133,0x1133,0x1932,0x1932,0x2111,0x2111,0x2110,0x2930,0x2930,0x210F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2950,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x2930,0x2130,0x2130,0x1931,0x1132,0x1195,0x11F8,0x09B8,0x01D9,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x09F9,0x1A19,0x1175,0x1112,0x1911,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x2130,0x2131,0x2130,0x2130,0x2151,0x2150,0x2130,0x210F,0x20EF,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x2131,0x2151,0x1931,0x1911,0x1132,0x0932,0x1174,0x21F6,0x2217,0x2217,0x21F7,0x1995,0x0912,0x1111,0x1111,0x1911,0x2131,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2930,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x28EE,0x28AD,0x202B,0x514E,0xCCBB,0xDCDA,0xDCB9,0xDC98,0xDC77,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC78,0xDC99,0xDCDA,0xB3B7,0x302A,0x38EE,0x28CE,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2130,0x2130,0x1910,0x2111,0x1911,0x1933,0x1175,0x1A18,0x11F9,0x01B8,0x01B9,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01D9,0x09D9,0x09D8,0x1A18,0x19D6,0x08F2,0x1932,0x2131,0x2131,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2930,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x2930,0x292F,0x210F,0x212F,0x292F,0x2950,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x1930,0x1931,0x1112,0x1113,0x19B6,0x21F7,0x19D7,0x19B6,0x1154,0x1112,0x1152,0x1952,0x1132,0x1153,0x1175,0x1196,0x09B8,0x09D9,0x01D9,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01B9,0x01B9,0x09F9,0x09F9,0x19F8,0x1175,0x1112,0x1931,0x2131,0x2951,0x2110,0x210F,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2130,0x2130,0x1931,0x2152,0x1932,0x1132,0x1133,0x1995,0x19D6,0x21F7,0x19D6,0x19B6,0x1974,0x1953,0x1932,0x2152,0x2131,0x2130,0x1910,0x2130,0x2130,0x1930,0x1931,0x1132,0x1174,0x1A18,0x11F8,0x11F8,0x11B6,0x1153,0x1952,0x2131,0x2130,0x2130,0x210F,0x210F,0x212F,0x2930,0x2110,0x210F,0x2110,0x2130,0x2110,0x2110,0x1911,0x1911,0x1931,0x1132,0x1154,0x11B6,0x19F8,0x11F8,0x1218,0x11F8,0x11F8,0x11D7,0x11F7,0x11F8,0x11F7,0x1218,0x11B6,0x1175,0x1154,0x1133,0x1112,0x1112,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1932,0x1911,0x1911,0x1911,0x1911,0x1932,0x1911,0x1911,0x1932,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1932,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1932,0x1932,0x1911,0x1911,0x1911,0x1932,0x1932,0x1931,0x1931,0x1932,0x1911,0x1931,0x1931,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1932,0x1931,0x1911,0x1931,0x1931,0x1931,0x1911,0x1911,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1911,0x1931,0x1931,0x1931,0x1931,0x1930,0x1930,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x210F,0x2110,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x1910,0x1931,0x1911,0x1932,0x1133,0x1154,0x1195,0x19F7,0x2218,0x19F8,0x19D7,0x0975,0x0934,0x1134,0x1154,0x1153,0x1933,0x1932,0x1931,0x1931,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930, + 0x2130,0x2110,0x210F,0x210F,0x210F,0x212F,0x2130,0x2110,0x2130,0x1931,0x1932,0x1152,0x1174,0x0995,0x11B6,0x11D7,0x11F8,0x11F8,0x1A19,0x11F8,0x19F7,0x1175,0x1154,0x1112,0x1112,0x2152,0x1931,0x2131,0x1931,0x1931,0x1931,0x1132,0x1173,0x1194,0x1195,0x11B6,0x11D7,0x11F8,0x11F8,0x19F8,0x11B7,0x1196,0x1175,0x1133,0x1932,0x1932,0x1911,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2151,0x1931,0x1931,0x1932,0x1133,0x1174,0x19D6,0x21F7,0x21F7,0x19B6,0x1975,0x1954,0x1112,0x1932,0x2131,0x2131,0x2131,0x2950,0x2930,0x2930,0x290F,0x2930,0x212F,0x2930,0x292F,0x212F,0x212F,0x2130,0x2930,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x210F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x212F,0x2130,0x2930,0x2930,0x210F,0x210F,0x2130,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x292F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x292F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x212F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x2110,0x2110,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x212F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x212F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x210F,0x212F,0x210F,0x212F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2132,0x1932,0x1932,0x1931,0x2132,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x292F,0x292F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2991,0x1930,0x092F,0x010F,0x3358,0x441A,0x443A,0x3357,0x0130,0x0930,0x1130,0x1950,0x2150,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2131,0x1931,0x1952,0x1974,0x1175,0x1197,0x11B8,0x11D9,0x11D9,0x11D9,0x11F9,0x11F9,0x11F8,0x11F8,0x19F8,0x19B6,0x1153,0x1132,0x1931,0x1930,0x1910,0x2110,0x2110,0x210F,0x2130,0x212F,0x2130,0x2110,0x2130,0x2130,0x2131,0x1931,0x1932,0x1953,0x1154,0x1175,0x19D7,0x2217,0x2217,0x19D6,0x1974,0x1112,0x10F1,0x1911,0x1911,0x2131,0x2130,0x2930,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2110,0x2130,0x2110,0x2130,0x2130,0x2111,0x2132,0x1932,0x1133,0x1154,0x19B6,0x21F7,0x2218,0x21F7,0x1175,0x1113,0x1113,0x1112,0x2132,0x2132,0x2131,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x292F,0x290F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2110,0x2130,0x1931,0x1132,0x11D6,0x1219,0x09D9,0x09DA,0x01BA,0x01BA,0x01BA,0x01DA,0x01BA,0x01BA,0x01DA,0x01DA,0x01D9,0x09F9,0x1A19,0x19B6,0x08F1,0x1931,0x1910,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2131,0x2151,0x1930,0x1931,0x1931,0x1932,0x1132,0x1174,0x19F6,0x2217,0x2217,0x19D6,0x1994,0x1133,0x1111,0x1911,0x1911,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x2930,0x2930,0x210F,0x2930,0x2910,0x290F,0x2930,0x290F,0x28EF,0x28EF,0x28CE,0x286C,0x282A,0xBC39,0xDCFB,0xE4DA,0xDC98,0xDC78,0xDC77,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC78,0xDCBA,0xDD3C,0x512D,0x308C,0x28CE,0x28EF,0x20EF,0x210F,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x1931,0x1911,0x1132,0x1154,0x11B7,0x09D8,0x01D9,0x01B9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01B9,0x01D9,0x09B9,0x09B8,0x19F8,0x19D6,0x0912,0x1932,0x2152,0x2130,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2930,0x290F,0x2910,0x210F,0x2930,0x2930,0x2930,0x290F,0x212F,0x210F,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1930,0x1911,0x1112,0x1133,0x21D6,0x21F7,0x19B6,0x1995,0x1133,0x1133,0x1152,0x1152,0x1132,0x1174,0x1195,0x11D7,0x09D8,0x09F9,0x01D9,0x01FA,0x01DA,0x01DA,0x01FB,0x01DA,0x01B9,0x01B9,0x09F9,0x1219,0x11F8,0x1175,0x1112,0x1932,0x2131,0x2130,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x292F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2131,0x2152,0x1111,0x1132,0x1133,0x1994,0x19B6,0x19B6,0x21F7,0x19D6,0x1975,0x1933,0x1932,0x1912,0x1931,0x1931,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1132,0x0954,0x1A18,0x1A19,0x11F8,0x11B6,0x1132,0x1131,0x1931,0x2130,0x2130,0x2150,0x212F,0x212F,0x212F,0x2930,0x2910,0x2110,0x2130,0x2130,0x2131,0x2131,0x1910,0x1911,0x1912,0x1133,0x1175,0x11B6,0x11D7,0x19F8,0x1A18,0x11F7,0x11D7,0x11F7,0x11D7,0x11D6,0x11B6,0x1174,0x0932,0x1132,0x1932,0x1911,0x1931,0x1911,0x1931,0x1910,0x1911,0x1931,0x1931,0x1931,0x1910,0x1910,0x2131,0x1910,0x1910,0x1910,0x2131,0x1910,0x2131,0x1911,0x2111,0x2111,0x2111,0x1910,0x2111,0x1911,0x2131,0x1910,0x2111,0x1910,0x1910,0x1910,0x2110,0x1910,0x2111,0x1910,0x2131,0x1910,0x2131,0x1911,0x2131,0x1910,0x1911,0x1911,0x1911,0x1910,0x2111,0x2110,0x2111,0x2110,0x2111,0x2111,0x2111,0x2111,0x2131,0x1910,0x2131,0x1910,0x1931,0x1911,0x2111,0x2111,0x2130,0x1910,0x1931,0x1910,0x2131,0x1931,0x2131,0x2131,0x2131,0x1911,0x2131,0x1911,0x1911,0x2131,0x1910,0x1910,0x1910,0x1910,0x2131,0x2111,0x2111,0x1911,0x2111,0x2111,0x2131,0x1910,0x2111,0x2131,0x1931,0x1910,0x1910,0x1910,0x1910,0x1910,0x2131,0x2111,0x2131,0x1911,0x2131,0x2131,0x1931,0x1911,0x2131,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1911,0x2111,0x1911,0x1911,0x1911,0x2131,0x1911,0x2131,0x1910,0x2131,0x1931,0x1931,0x1910,0x2131,0x2131,0x2131,0x1931,0x2131,0x2131,0x1911,0x1910,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x290F,0x210F,0x210F,0x292F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x1910,0x1931,0x1132,0x1133,0x1154,0x19B5,0x21F7,0x2218,0x21F7,0x1996,0x0934,0x0913,0x1113,0x1113,0x1953,0x1932,0x1932,0x1931,0x1911,0x1931,0x1910,0x1910,0x2130,0x2150,0x212F,0x210F,0x2130,0x210F,0x2930,0x2910, + 0x2110,0x2110,0x2130,0x2930,0x212F,0x212F,0x2930,0x2130,0x2130,0x1930,0x1931,0x1952,0x1152,0x1154,0x1175,0x1196,0x11D7,0x1A18,0x11F8,0x1A19,0x11F8,0x11D7,0x1195,0x1154,0x1133,0x1132,0x1932,0x1952,0x2151,0x1931,0x1931,0x1931,0x1132,0x1153,0x1174,0x1195,0x11B7,0x11D8,0x11F8,0x11F8,0x11F8,0x11D7,0x1196,0x1154,0x1953,0x1932,0x1911,0x1911,0x2151,0x2151,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2151,0x1911,0x1932,0x1133,0x1995,0x19B6,0x21F7,0x21F7,0x19B6,0x1975,0x1954,0x1933,0x1912,0x1911,0x2131,0x2130,0x2130,0x2130,0x2930,0x2130,0x212F,0x2930,0x2930,0x2930,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x212F,0x292F,0x212F,0x210F,0x290F,0x210F,0x2110,0x2910,0x2910,0x212F,0x210F,0x210F,0x2930,0x212F,0x210F,0x2930,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x2930,0x210F,0x212F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x212F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2110,0x210F,0x2930,0x210F,0x290F,0x292F,0x2930,0x210F,0x2910,0x290F,0x210F,0x212F,0x292F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x290F,0x2930,0x2930,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2152,0x1932,0x1932,0x1932,0x1932,0x1132,0x1932,0x1932,0x1931,0x2131,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x2930,0x2930,0x292F,0x210F,0x212F,0x2130,0x2150,0x2170,0x2171,0x090F,0x010F,0x01B1,0x3C1A,0x341A,0x341A,0x33D9,0x0A12,0x010F,0x0930,0x1150,0x1950,0x2150,0x2130,0x2130,0x2150,0x2950,0x2130,0x2110,0x2130,0x2130,0x2131,0x1931,0x1952,0x1954,0x1175,0x1176,0x1197,0x11B8,0x11D8,0x1A18,0x11D7,0x11D7,0x11D6,0x1175,0x1153,0x1152,0x1931,0x1930,0x1930,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1952,0x1932,0x1933,0x1154,0x1175,0x19D7,0x21F7,0x2217,0x21F6,0x1174,0x1133,0x1111,0x1911,0x2131,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x2130,0x212F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2132,0x1953,0x1133,0x1954,0x1996,0x21D7,0x2218,0x21D7,0x1175,0x1113,0x1113,0x1933,0x2132,0x2132,0x2110,0x2110,0x2130,0x2930,0x2110,0x2930,0x210F,0x212F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2110,0x1931,0x1133,0x11B6,0x11F8,0x09D9,0x01B9,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x09FA,0x09F9,0x11F8,0x19D7,0x0912,0x1931,0x2130,0x2130,0x2130,0x2950,0x2130,0x2130,0x2930,0x2110,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1911,0x1132,0x1112,0x1174,0x21F6,0x2217,0x2237,0x19D6,0x1994,0x1132,0x1111,0x1911,0x1911,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x2930,0x2930,0x210F,0x212F,0x292F,0x2930,0x210F,0x2130,0x2110,0x2110,0x290F,0x290F,0x290F,0x28EF,0x28EF,0x28AD,0x282B,0x8AF4,0xDCFB,0xDCDA,0xDCB9,0xDC98,0xDC78,0xDC36,0xDC57,0xDC57,0xDC57,0xE457,0xDC37,0xE457,0xDC37,0xDC57,0xDC37,0xDC58,0xDC78,0xDCBA,0xE53C,0x61CF,0x284B,0x28CE,0x20CE,0x290F,0x2910,0x2930,0x2110,0x2130,0x2110,0x2130,0x2131,0x1911,0x1932,0x1953,0x1174,0x19D7,0x11F9,0x01B9,0x01D9,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x09DA,0x09D9,0x09B8,0x11D7,0x19D6,0x1133,0x1111,0x2131,0x2131,0x2130,0x2110,0x210F,0x210F,0x2130,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x1930,0x1931,0x1112,0x1113,0x19B6,0x21F8,0x19B6,0x1995,0x1134,0x1112,0x1153,0x1152,0x1152,0x1174,0x1195,0x11D7,0x09D8,0x09D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01BA,0x01B9,0x0A1A,0x1219,0x11D8,0x1175,0x1112,0x1911,0x2131,0x2130,0x2110,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x210F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2910,0x210F,0x2910,0x210F,0x2930,0x2930,0x210F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x210F,0x212F,0x2930,0x2930,0x292F,0x212F,0x210F,0x2130,0x2130,0x1931,0x1932,0x1132,0x1133,0x1174,0x19D6,0x19D6,0x19B6,0x21D6,0x1995,0x1954,0x1933,0x1932,0x1911,0x2131,0x2131,0x2130,0x2130,0x2110,0x2131,0x1931,0x1131,0x1132,0x1174,0x1A18,0x1219,0x11F8,0x11B6,0x1133,0x1131,0x1931,0x2130,0x2130,0x2950,0x2930,0x212F,0x212F,0x212F,0x210F,0x2930,0x2110,0x2130,0x2131,0x2110,0x2110,0x2131,0x1931,0x1953,0x1154,0x1175,0x1175,0x11B6,0x11D6,0x11B5,0x1195,0x1195,0x0974,0x1174,0x1153,0x1132,0x1132,0x1931,0x1931,0x1911,0x1910,0x1910,0x2131,0x2110,0x2130,0x2130,0x2130,0x1910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x1910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x1910,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x1910,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x210F,0x2930,0x210F,0x2110,0x290F,0x290F,0x210F,0x212F,0x2130,0x210F,0x210F,0x2110,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x292F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x1931,0x1911,0x1932,0x1132,0x1153,0x19B5,0x21D6,0x2217,0x21F7,0x19B6,0x1134,0x0913,0x0912,0x1132,0x1932,0x1932,0x1931,0x2131,0x2130,0x1910,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2910, + 0x2130,0x2110,0x2130,0x210F,0x212F,0x210F,0x212F,0x2930,0x2930,0x2130,0x2130,0x1931,0x1952,0x1133,0x1133,0x1154,0x1196,0x11D7,0x1A18,0x1218,0x1A39,0x1A18,0x11B7,0x1176,0x0954,0x1133,0x1953,0x1952,0x1952,0x1931,0x1931,0x1931,0x1931,0x1132,0x1153,0x1174,0x1195,0x11B6,0x11F8,0x11F8,0x1218,0x11F8,0x11D7,0x1196,0x1174,0x1133,0x1932,0x1932,0x2131,0x2131,0x2151,0x2150,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x1910,0x1911,0x1912,0x1133,0x1995,0x21D7,0x21F7,0x19F7,0x19B6,0x1975,0x1153,0x1132,0x1912,0x1931,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2930,0x210F,0x2130,0x210F,0x2930,0x2910,0x210F,0x2910,0x2930,0x210F,0x2110,0x210F,0x210F,0x2930,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x210F,0x2910,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2910,0x2910,0x290F,0x2930,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x2930,0x210F,0x2910,0x2910,0x2930,0x290F,0x2110,0x210F,0x2930,0x2930,0x2930,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2930,0x2110,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x290F,0x210F,0x2910,0x210F,0x2930,0x2930,0x2910,0x2930,0x2930,0x2110,0x2930,0x2930,0x290F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x210F,0x2110,0x210F,0x2930,0x2110,0x2930,0x2930,0x2930,0x2910,0x2110,0x2130,0x2130,0x2110,0x210F,0x2930,0x2930,0x2930,0x2130,0x212F,0x212F,0x2930,0x2930,0x2930,0x210F,0x210F,0x2930,0x210F,0x210F,0x2910,0x2910,0x210F,0x212F,0x210F,0x290F,0x210F,0x2930,0x210F,0x2910,0x290F,0x2930,0x2910,0x2910,0x210F,0x210F,0x210F,0x2910,0x2930,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x292F,0x2910,0x2910,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2130,0x2131,0x2131,0x2132,0x1932,0x1933,0x1933,0x1133,0x1153,0x1133,0x1133,0x1133,0x1132,0x1932,0x1931,0x1931,0x2130,0x2110,0x2130,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2150,0x110F,0x010F,0x010F,0x2B57,0x2BF9,0x2C3A,0x2419,0x2C19,0x2B98,0x0191,0x0130,0x090F,0x1950,0x1950,0x2150,0x2130,0x2130,0x210F,0x2130,0x2930,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x1954,0x1154,0x1155,0x1155,0x1995,0x1975,0x1154,0x1153,0x1112,0x1111,0x1951,0x1931,0x1930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x210F,0x2910,0x2910,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1912,0x1133,0x1154,0x1175,0x19D7,0x2217,0x19F7,0x21D6,0x1174,0x1112,0x1111,0x1911,0x2131,0x2131,0x2931,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2131,0x2132,0x1912,0x1133,0x1154,0x19B6,0x21F7,0x2218,0x19D7,0x1175,0x1133,0x1113,0x1933,0x1932,0x1911,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x210F,0x212F,0x290F,0x2910,0x2910,0x2930,0x2930,0x292F,0x292F,0x290F,0x212F,0x2130,0x2130,0x2131,0x1132,0x1195,0x09D7,0x09B8,0x01D9,0x01DA,0x01DA,0x01DA,0x01DB,0x01DA,0x01DA,0x01DA,0x09FA,0x09FA,0x09D9,0x11F8,0x1195,0x0912,0x1931,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2151,0x2131,0x2152,0x1911,0x1111,0x1111,0x1132,0x1974,0x21D6,0x2217,0x2217,0x19D6,0x1995,0x1112,0x10F1,0x18F1,0x1911,0x2111,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x292F,0x290F,0x290F,0x290F,0x28CE,0x204B,0x40ED,0xD4DB,0xD4DA,0xDCB9,0xDC78,0xDC78,0xDC77,0xDC57,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC37,0xDC57,0xDC78,0xDCB9,0xDD1B,0xABF8,0x202A,0x30EE,0x28CE,0x20EF,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2131,0x2131,0x1911,0x1932,0x1174,0x11B7,0x09F8,0x01D9,0x01B9,0x01DA,0x01DA,0x01FA,0x01DA,0x01BA,0x01DA,0x01B9,0x09B9,0x11F9,0x19F7,0x19D6,0x1112,0x1932,0x1931,0x2110,0x2130,0x2110,0x210F,0x210F,0x2930,0x2110,0x2930,0x2930,0x2930,0x292F,0x212F,0x212F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x210F,0x210F,0x2930,0x2910,0x290F,0x2930,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x2150,0x2150,0x1930,0x1931,0x1112,0x1113,0x19B6,0x21F7,0x19B6,0x19B6,0x1154,0x1112,0x1152,0x1152,0x1152,0x1153,0x1195,0x1196,0x09D8,0x09F9,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01B9,0x09F9,0x1219,0x11D8,0x1175,0x1112,0x1932,0x2151,0x2130,0x2110,0x210F,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x292F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x212F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2910,0x290F,0x2910,0x2930,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x2130,0x2130,0x1911,0x1932,0x1132,0x1133,0x1174,0x19D6,0x2237,0x19B6,0x1995,0x1995,0x1954,0x1933,0x1912,0x1911,0x1931,0x2131,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1132,0x0933,0x0975,0x11F8,0x11F9,0x11F8,0x11B7,0x0933,0x1112,0x1911,0x1910,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x1911,0x1932,0x1953,0x1953,0x1953,0x1153,0x1974,0x1153,0x1133,0x1133,0x1953,0x1132,0x1932,0x1932,0x1911,0x1910,0x1910,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x2930,0x2930,0x2130,0x2110,0x210F,0x2130,0x2130,0x2131,0x2111,0x1931,0x1932,0x1133,0x1153,0x1995,0x19D6,0x21D7,0x21D6,0x1995,0x1154,0x1113,0x08F1,0x1111,0x1931,0x1951,0x1930,0x1930,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2150,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F, + 0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2131,0x1911,0x1932,0x1133,0x1154,0x1154,0x11B6,0x11D7,0x19F8,0x1219,0x11F8,0x11D8,0x11D7,0x1196,0x0954,0x1153,0x1153,0x1952,0x1952,0x2151,0x1931,0x1931,0x1931,0x1932,0x1153,0x1174,0x1196,0x11B7,0x11F8,0x11F8,0x1A19,0x1A18,0x11B7,0x1196,0x1154,0x1133,0x1932,0x1911,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x212F,0x2150,0x2130,0x2110,0x1910,0x1911,0x1912,0x1133,0x1995,0x19D6,0x2218,0x19D6,0x19B6,0x1994,0x1153,0x1132,0x1111,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x2130,0x210F,0x212F,0x2130,0x212F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x2910,0x2110,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2910,0x2910,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x210F,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x210F,0x210F,0x2910,0x2910,0x290F,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x2110,0x2910,0x2110,0x212F,0x212F,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x210F,0x2910,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x210F,0x2110,0x210F,0x2930,0x210F,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2930,0x2930,0x2930,0x2110,0x2930,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x210F,0x2930,0x2930,0x210F,0x210F,0x2930,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2930,0x210F,0x2130,0x210F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2110,0x2930,0x210F,0x2110,0x2110,0x2930,0x2130,0x210F,0x210F,0x2110,0x2910,0x2910,0x2910,0x210F,0x2930,0x2930,0x2910,0x290F,0x290F,0x210F,0x2930,0x212F,0x2950,0x2130,0x2130,0x2130,0x1911,0x1932,0x1932,0x1133,0x1154,0x1174,0x1195,0x1195,0x1195,0x1195,0x1175,0x1174,0x1133,0x1132,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2110,0x2150,0x2130,0x2130,0x210F,0x2130,0x2930,0x2930,0x212F,0x2130,0x2130,0x1950,0x112F,0x010F,0x01D1,0x2BD9,0x2419,0x2419,0x1BF9,0x2419,0x2C19,0x1AD5,0x0150,0x012F,0x110F,0x1970,0x1930,0x2130,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1932,0x1932,0x1932,0x1933,0x1113,0x1112,0x1112,0x1132,0x1112,0x1931,0x1931,0x1930,0x1930,0x1930,0x210F,0x2130,0x2130,0x2110,0x2930,0x2910,0x2930,0x2910,0x2910,0x2930,0x2110,0x2130,0x2130,0x2110,0x2111,0x1911,0x1932,0x1133,0x1154,0x1195,0x19D6,0x2217,0x2217,0x21D6,0x1994,0x1133,0x1112,0x1911,0x2111,0x2111,0x2110,0x2931,0x2130,0x210F,0x210F,0x212F,0x210F,0x212F,0x2950,0x212F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2111,0x1911,0x1932,0x1133,0x1975,0x19B6,0x21D7,0x2218,0x19D7,0x1175,0x1134,0x1133,0x1932,0x1932,0x2131,0x2131,0x2110,0x2110,0x2130,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x210F,0x212F,0x292F,0x2930,0x2910,0x2910,0x2910,0x2930,0x292F,0x290F,0x290F,0x212F,0x2130,0x2130,0x1931,0x1932,0x1195,0x11F8,0x09B8,0x09D9,0x01DA,0x09FA,0x01DA,0x01DA,0x01FB,0x01FA,0x01DA,0x09FA,0x09D9,0x11D8,0x19D7,0x1174,0x1112,0x1931,0x2130,0x2130,0x2130,0x210F,0x212F,0x2930,0x212F,0x210F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x292F,0x2930,0x210F,0x210F,0x2131,0x2152,0x1931,0x1911,0x1112,0x1112,0x1154,0x21F6,0x2217,0x2217,0x21F6,0x1994,0x1132,0x10F1,0x18F1,0x18F0,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2910,0x210F,0x212F,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x28EE,0x288D,0x1809,0x9B55,0xDCFB,0xDCB9,0xDCB9,0xDC58,0xDC78,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC16,0xE457,0xDC37,0xDC37,0xDC57,0xE478,0xDCB9,0xDCDA,0xCCFB,0x2009,0x28CE,0x28CE,0x20EF,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1154,0x19D7,0x11F8,0x09F9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01B9,0x01B9,0x01B9,0x09D9,0x11F9,0x1A17,0x19B5,0x1112,0x1932,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x2110,0x2110,0x212F,0x212F,0x292F,0x2930,0x212F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x290F,0x210F,0x2930,0x2910,0x2930,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2130,0x210F,0x2930,0x2930,0x2110,0x2930,0x2110,0x210F,0x210F,0x212F,0x2130,0x2130,0x212F,0x2150,0x2150,0x1930,0x1911,0x1112,0x1133,0x19B6,0x21F7,0x19D7,0x19B6,0x1154,0x1112,0x1152,0x1152,0x1132,0x1153,0x1174,0x11B6,0x11D7,0x09D9,0x09D9,0x01D9,0x01B9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x09F9,0x1219,0x11B7,0x1154,0x1112,0x1932,0x2131,0x2130,0x2110,0x210F,0x2930,0x2930,0x2130,0x2110,0x2110,0x210F,0x212F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x212F,0x210F,0x2930,0x212F,0x210F,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x292F,0x210F,0x210F,0x2930,0x2130,0x2130,0x1931,0x1931,0x1112,0x1133,0x1154,0x19D6,0x2217,0x19F6,0x1995,0x1154,0x1134,0x1133,0x1933,0x1932,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x0934,0x0975,0x11F8,0x11F9,0x11F9,0x11D8,0x0954,0x1133,0x1931,0x1931,0x2130,0x2130,0x2130,0x210F,0x2930,0x212F,0x212F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2130,0x2131,0x2131,0x2131,0x1931,0x1931,0x1932,0x1932,0x1112,0x1111,0x1932,0x1932,0x1911,0x1931,0x1911,0x1911,0x1911,0x2130,0x1910,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x210F,0x212F,0x210F,0x2110,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x210F,0x2110,0x2130,0x2110,0x2130,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x210F,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x2110,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x2131,0x1911,0x1911,0x1133,0x1133,0x1995,0x21D6,0x21D7,0x21D6,0x1995,0x1133,0x1112,0x1112,0x1931,0x1951,0x1951,0x1930,0x1930,0x1930,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x290F, + 0x2130,0x2130,0x2930,0x2130,0x212F,0x2130,0x210F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1912,0x1132,0x1153,0x1154,0x1196,0x11B7,0x11F8,0x1219,0x11F8,0x11F8,0x11D7,0x0995,0x1174,0x1133,0x1132,0x1952,0x1951,0x1951,0x1930,0x1931,0x1931,0x1132,0x1153,0x1174,0x1176,0x11B7,0x11F8,0x11F8,0x1A19,0x11F8,0x11B7,0x1196,0x1174,0x1133,0x1112,0x1931,0x1931,0x2151,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2930,0x2131,0x1911,0x1911,0x1112,0x1133,0x1995,0x19D6,0x19D6,0x19D6,0x19D5,0x1994,0x1153,0x1132,0x1132,0x1931,0x1931,0x2131,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2930,0x2930,0x2930,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2930,0x2130,0x2930,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x20F0,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x2110,0x2930,0x2110,0x2910,0x2910,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2930,0x2110,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x210F,0x210F,0x212F,0x210F,0x1910,0x1930,0x1911,0x1932,0x1153,0x1175,0x19B6,0x11D7,0x11F8,0x1218,0x1218,0x11F8,0x11F7,0x11D7,0x1195,0x1153,0x1952,0x1931,0x1910,0x2130,0x2130,0x2110,0x2130,0x2930,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x1930,0x1950,0x092F,0x014F,0x2B57,0x23F9,0x1C19,0x13F9,0x13F9,0x1C19,0x243A,0x2BB8,0x01B1,0x014F,0x092F,0x1970,0x2150,0x2150,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2151,0x2131,0x2152,0x2152,0x1911,0x1932,0x1932,0x1912,0x1932,0x1931,0x1931,0x1910,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x2110,0x2910,0x2930,0x2910,0x2910,0x2930,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x2131,0x2132,0x1912,0x1133,0x1133,0x1195,0x19F6,0x2237,0x2237,0x21D6,0x1994,0x1133,0x10F1,0x1911,0x18F0,0x2111,0x2130,0x2930,0x2950,0x2130,0x212F,0x210F,0x212F,0x2150,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2111,0x1932,0x1132,0x1133,0x1155,0x19B7,0x2218,0x2218,0x21F8,0x1175,0x0913,0x1133,0x1933,0x1932,0x2131,0x2131,0x2110,0x2130,0x2130,0x212F,0x2130,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x290F,0x290F,0x2930,0x2910,0x2930,0x2930,0x292F,0x290F,0x210F,0x210F,0x2130,0x2110,0x1910,0x1931,0x1154,0x19D7,0x11D8,0x09D9,0x09B9,0x09DA,0x01BA,0x01B9,0x09FA,0x01D9,0x09D9,0x09D9,0x09D8,0x11D8,0x19F7,0x1174,0x1132,0x1931,0x2130,0x2130,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2110,0x2131,0x2152,0x1932,0x1112,0x1112,0x1154,0x21F6,0x2217,0x2237,0x19D6,0x1174,0x1132,0x10F1,0x1911,0x2111,0x2110,0x2130,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x290F,0x28EF,0x20AD,0x286B,0x490D,0xDD3C,0xDCDA,0xDCB9,0xDC78,0xDC57,0xDC57,0xDC37,0xDC57,0xE457,0xE457,0xDC16,0xE437,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xDC57,0xDC78,0xDC99,0xDCFB,0xABB7,0x286B,0x28AD,0x28CE,0x20EF,0x210F,0x210F,0x210F,0x2130,0x210F,0x2130,0x2131,0x2131,0x1911,0x1911,0x1133,0x1175,0x11D7,0x09D8,0x09F9,0x01D9,0x01D9,0x01D9,0x01DA,0x01B9,0x01B9,0x09D9,0x09D8,0x11F8,0x2217,0x1994,0x1112,0x1911,0x1910,0x2130,0x2130,0x2110,0x2130,0x212F,0x290F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x2930,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x2110,0x2930,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x2150,0x2150,0x1930,0x1911,0x1112,0x1133,0x19D6,0x2218,0x19D7,0x1195,0x1154,0x1133,0x1152,0x1952,0x1132,0x1132,0x1173,0x11B5,0x11B7,0x09D8,0x09D9,0x01D9,0x09F9,0x09F9,0x01D9,0x01D9,0x09F9,0x09F9,0x11F8,0x11D8,0x1175,0x1133,0x1112,0x1931,0x2131,0x2110,0x2130,0x210F,0x2110,0x2930,0x2130,0x2110,0x2130,0x2930,0x210F,0x292F,0x210F,0x2910,0x2910,0x2930,0x2910,0x2110,0x2110,0x210F,0x212F,0x2930,0x2930,0x2130,0x2130,0x210F,0x2930,0x2930,0x2910,0x2910,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2950,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1132,0x1112,0x1174,0x19D6,0x21F7,0x21F7,0x19B6,0x1175,0x1133,0x1113,0x1932,0x1932,0x1931,0x1931,0x1910,0x2130,0x2130,0x2110,0x2110,0x2131,0x1931,0x1932,0x1133,0x0934,0x0996,0x11F9,0x09F9,0x09F9,0x09D8,0x0975,0x0933,0x1132,0x1931,0x1911,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x1931,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x2111,0x2111,0x2110,0x1910,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x2930,0x210F,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2110,0x2130,0x2130,0x210F,0x2130,0x2930,0x210F,0x210F,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x2930,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x2130,0x2110,0x2130,0x2930,0x2110,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x294F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x1911,0x1932,0x1133,0x1154,0x1995,0x21F6,0x21F7,0x21D6,0x1975,0x1113,0x1112,0x1112,0x1931,0x2152,0x1951,0x2151,0x2130,0x192F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F, + 0x2930,0x2130,0x2130,0x2130,0x2150,0x2130,0x210F,0x210F,0x210F,0x290F,0x2930,0x2110,0x2130,0x2131,0x2111,0x1932,0x1132,0x1153,0x1155,0x1196,0x11D7,0x11F8,0x1219,0x1219,0x11F8,0x11D7,0x11B6,0x0954,0x1153,0x1132,0x1952,0x1951,0x1951,0x1931,0x1931,0x1931,0x1132,0x1153,0x1175,0x1196,0x11B7,0x19F8,0x11F8,0x11F8,0x11F8,0x11B7,0x1196,0x1174,0x1153,0x1132,0x1931,0x1931,0x2151,0x2130,0x2130,0x2130,0x212F,0x2950,0x2130,0x2130,0x2111,0x2111,0x18F1,0x1112,0x1133,0x1175,0x19D6,0x19F6,0x19D6,0x19D6,0x1174,0x1153,0x1132,0x1132,0x1931,0x1931,0x2151,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x1910,0x1930,0x1931,0x1952,0x1974,0x1995,0x11D6,0x11F8,0x11F8,0x09F8,0x09D8,0x09F9,0x09F8,0x1218,0x11F8,0x11D7,0x11B5,0x1994,0x1952,0x1931,0x2131,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2150,0x2150,0x112F,0x092F,0x01D1,0x33F9,0x23F9,0x1419,0x1419,0x1419,0x13F9,0x243A,0x2C3A,0x12D4,0x0150,0x012F,0x112F,0x2150,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1910,0x1911,0x2131,0x1911,0x1911,0x2131,0x1930,0x2130,0x2130,0x2130,0x2150,0x212F,0x212F,0x2130,0x2930,0x2930,0x2910,0x2910,0x2910,0x290F,0x2930,0x290F,0x2930,0x2110,0x2930,0x2930,0x2130,0x2111,0x2111,0x1911,0x1912,0x1133,0x1154,0x1195,0x2217,0x2217,0x2217,0x21F6,0x1954,0x1933,0x1912,0x1911,0x2111,0x2131,0x2931,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1132,0x1134,0x1175,0x19B7,0x2218,0x2218,0x19D7,0x1175,0x1133,0x1133,0x1932,0x1931,0x1931,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x292F,0x212F,0x290F,0x2930,0x2930,0x2910,0x2910,0x210F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x1911,0x1132,0x1995,0x11D7,0x11F9,0x09B9,0x09B9,0x09B9,0x09B9,0x01B9,0x01B9,0x09D9,0x11D8,0x11F8,0x19D7,0x1194,0x1132,0x1131,0x1931,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x290F,0x2930,0x2110,0x1910,0x2131,0x2132,0x1912,0x1112,0x1133,0x21D6,0x2217,0x2217,0x19D6,0x1994,0x1132,0x10F1,0x1911,0x1910,0x2110,0x2130,0x2130,0x2110,0x2110,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x20CE,0x28AD,0x282A,0xABF8,0xDCFB,0xDCB9,0xD478,0xD457,0xDC78,0xDC37,0xDC37,0xDC37,0xE457,0xDC16,0xE457,0xDC37,0xE437,0xE437,0xDC16,0xDC37,0xE478,0xDC37,0xE478,0xDC99,0xDCBA,0x8AD4,0x308C,0x28AD,0x28EE,0x20EF,0x210F,0x210F,0x2930,0x2130,0x210F,0x2130,0x2130,0x2111,0x2131,0x1931,0x1932,0x1154,0x11B6,0x11D8,0x09D9,0x09D9,0x09D9,0x09D9,0x01B9,0x01B9,0x09D9,0x11F8,0x11D8,0x19D7,0x1995,0x1133,0x1132,0x1931,0x1910,0x2110,0x2130,0x2130,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2910,0x290F,0x2930,0x2930,0x210F,0x2930,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2130,0x210F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2150,0x1930,0x1911,0x1112,0x1133,0x19B6,0x2218,0x19D7,0x19B6,0x1133,0x1133,0x1952,0x1952,0x1132,0x1152,0x1173,0x1195,0x11B6,0x11B7,0x11D8,0x09F9,0x0A19,0x09F9,0x09F9,0x09D8,0x09F8,0x11F8,0x11F8,0x11B7,0x1175,0x1133,0x1932,0x1931,0x2131,0x2130,0x2130,0x210F,0x2930,0x2930,0x2130,0x2130,0x210F,0x2110,0x292F,0x292F,0x210F,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x210F,0x2930,0x212F,0x212F,0x2930,0x2130,0x2130,0x2930,0x2930,0x2910,0x2910,0x292F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1932,0x1112,0x1974,0x19B6,0x21F7,0x21F7,0x19D6,0x1995,0x1154,0x1133,0x1132,0x1932,0x1931,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1953,0x1175,0x0976,0x09B8,0x09F9,0x09F9,0x09F9,0x09D8,0x09B7,0x1195,0x1174,0x1932,0x1931,0x1911,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x2930,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2910,0x290F,0x210F,0x210F,0x212F,0x292F,0x210F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2110,0x210F,0x2110,0x210F,0x2930,0x210F,0x212F,0x212F,0x2930,0x2930,0x212F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x210F,0x210F,0x212F,0x2110,0x2110,0x2110,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x210E,0x212F,0x2950,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1932,0x1932,0x1112,0x1154,0x1995,0x21D6,0x21F6,0x21D6,0x1995,0x1133,0x1112,0x1911,0x1911,0x1931,0x2151,0x2150,0x2150,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F, + 0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x210F,0x2930,0x2930,0x2930,0x2130,0x2131,0x2132,0x1932,0x1132,0x1133,0x1175,0x0996,0x11B7,0x11F8,0x1219,0x1A39,0x11F8,0x09B6,0x0975,0x0953,0x1133,0x1132,0x1931,0x1951,0x1931,0x1931,0x1931,0x1931,0x1932,0x1153,0x1174,0x1196,0x11B7,0x11D8,0x11F8,0x11D8,0x19F8,0x11B7,0x1195,0x1154,0x1132,0x1132,0x1951,0x2171,0x2130,0x2150,0x2150,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2111,0x1912,0x1112,0x1133,0x1174,0x19B6,0x21F6,0x19D6,0x21D6,0x1974,0x1153,0x1112,0x1111,0x1932,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x2131,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2131,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2110,0x2111,0x2110,0x2110,0x2110,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2111,0x2111,0x2131,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2111,0x2130,0x2110,0x2111,0x2111,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2111,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x2110,0x2110,0x2110,0x2110,0x2111,0x2111,0x2110,0x2111,0x2110,0x2110,0x2110,0x2111,0x2110,0x2131,0x2110,0x2111,0x2110,0x2110,0x2110,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x2110,0x2131,0x2110,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x1910,0x1931,0x1931,0x1952,0x1952,0x1974,0x1195,0x11D6,0x11D7,0x09D8,0x09D9,0x01D9,0x01D9,0x09F9,0x09D9,0x0A19,0x1219,0x11F8,0x11D7,0x19D5,0x1173,0x1111,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2150,0x212F,0x212F,0x212F,0x212F,0x194F,0x112F,0x012F,0x12B4,0x2C19,0x2439,0x1419,0x0BF8,0x1419,0x13F8,0x1C19,0x2C39,0x343A,0x01F2,0x012F,0x090F,0x192F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x2110,0x2111,0x2151,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2131,0x2131,0x1932,0x1952,0x1132,0x1153,0x1194,0x19D6,0x2217,0x2217,0x21D6,0x1954,0x1933,0x1912,0x18F1,0x2111,0x2110,0x2951,0x2130,0x2930,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2131,0x1932,0x1132,0x1133,0x1175,0x19B7,0x21F8,0x2218,0x21D7,0x1175,0x1133,0x1133,0x1952,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x292F,0x292F,0x290F,0x292F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x212F,0x290F,0x210F,0x2930,0x2130,0x2110,0x1931,0x1912,0x1133,0x1996,0x19F8,0x1A19,0x11F9,0x11F9,0x09D9,0x11F9,0x1219,0x1A19,0x1A38,0x2217,0x19B5,0x0912,0x1111,0x1931,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x212F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2111,0x1911,0x1912,0x1912,0x1113,0x1995,0x21F7,0x2217,0x21D6,0x1995,0x1132,0x1111,0x1911,0x1931,0x2110,0x2951,0x2130,0x2110,0x2110,0x210F,0x2110,0x2910,0x2110,0x2910,0x2910,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x20AD,0x182A,0x61D0,0xDD3C,0xD4B9,0xDC99,0xDC78,0xDC78,0xDC57,0xDC57,0xDC37,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xE437,0xE437,0xDC37,0xDC57,0xE457,0xDC57,0xDC78,0xDC99,0xDCDB,0x7A31,0x202A,0x28CD,0x20CE,0x20EF,0x290F,0x290F,0x2930,0x2130,0x2130,0x2110,0x2131,0x2131,0x2131,0x1931,0x1932,0x1994,0x21F6,0x11F7,0x11F8,0x11D8,0x09D8,0x11F9,0x11F9,0x11D8,0x11F8,0x19F8,0x1196,0x1155,0x1113,0x1112,0x1932,0x1931,0x2131,0x2130,0x2130,0x2110,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x2930,0x210F,0x290F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x212F,0x292F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2130,0x2930,0x2930,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2150,0x1930,0x1911,0x1112,0x1134,0x19D6,0x21F7,0x19B6,0x1195,0x1133,0x1132,0x1932,0x1932,0x1131,0x1131,0x1153,0x1174,0x1195,0x11B6,0x11D7,0x11F8,0x1A19,0x11F8,0x11F8,0x11F8,0x11F8,0x11F7,0x11B6,0x1195,0x1954,0x1112,0x1931,0x2131,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x212F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2150,0x2130,0x2131,0x1911,0x1111,0x1132,0x1974,0x19B5,0x21F7,0x21F7,0x19D6,0x1174,0x1133,0x1953,0x1952,0x1932,0x2152,0x1911,0x1910,0x1910,0x1910,0x2130,0x2130,0x2151,0x1931,0x1932,0x1133,0x1174,0x11B6,0x09B7,0x09D9,0x09D9,0x09FA,0x09D9,0x09D9,0x09D8,0x11B7,0x11B6,0x1154,0x1932,0x1932,0x1931,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x2910,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2130,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x2910,0x2110,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x2930,0x290F,0x2930,0x2910,0x2110,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x210F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x210F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x2910,0x290F,0x290F,0x2930,0x290F,0x2910,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x2130,0x2130,0x212F,0x210F,0x212F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2951,0x2151,0x2131,0x1911,0x1931,0x10F1,0x1113,0x1154,0x1995,0x19D6,0x21D6,0x21D6,0x1995,0x1112,0x10F2,0x1911,0x1911,0x2131,0x2131,0x1930,0x1930,0x190F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212E,0x212E,0x212F,0x212F,0x212F,0x212F,0x212F, + 0x212F,0x210F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x212F,0x2930,0x290F,0x290F,0x2930,0x2930,0x2130,0x2111,0x1931,0x1932,0x1133,0x1154,0x1175,0x11B7,0x11B7,0x11F8,0x1218,0x1218,0x11F8,0x11B7,0x1195,0x1174,0x1153,0x1132,0x1931,0x1951,0x1951,0x1931,0x1931,0x1932,0x1132,0x1153,0x1154,0x1176,0x11B7,0x11B7,0x11F8,0x11F8,0x11D8,0x11D7,0x1195,0x1174,0x1153,0x1132,0x1951,0x1931,0x2151,0x2150,0x2130,0x210F,0x2130,0x2130,0x2130,0x2951,0x2131,0x1911,0x1912,0x1112,0x1133,0x1995,0x19B5,0x21D6,0x21D6,0x19B5,0x1974,0x1153,0x1112,0x1112,0x1111,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x1911,0x1911,0x2131,0x2131,0x2130,0x2111,0x2111,0x2111,0x1911,0x2111,0x1911,0x1931,0x1931,0x1931,0x2111,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1910,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2111,0x1911,0x2131,0x2111,0x1911,0x2131,0x2131,0x2131,0x2131,0x1931,0x2131,0x2111,0x2111,0x1931,0x1911,0x2111,0x2111,0x1931,0x2131,0x2111,0x2111,0x1931,0x1911,0x1931,0x1911,0x1931,0x1931,0x2111,0x2131,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1931,0x2131,0x1911,0x1911,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1910,0x1931,0x1931,0x1911,0x1931,0x1931,0x1911,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x1911,0x2111,0x2111,0x2111,0x2111,0x1911,0x2111,0x2111,0x2111,0x1911,0x2111,0x2111,0x2111,0x2131,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2131,0x2111,0x2111,0x2131,0x2111,0x1911,0x2111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x2111,0x1911,0x2111,0x1911,0x2111,0x2111,0x2111,0x2111,0x1911,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x2111,0x2111,0x1911,0x2111,0x2111,0x1911,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x1911,0x1911,0x1911,0x1911,0x2111,0x2111,0x2111,0x2111,0x2111,0x1911,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2131,0x2111,0x2111,0x2131,0x1931,0x2111,0x2111,0x2131,0x1911,0x2131,0x2111,0x2111,0x1911,0x2111,0x2111,0x1911,0x2111,0x2111,0x2111,0x2111,0x1911,0x2111,0x1911,0x1911,0x1911,0x2111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1132,0x1132,0x1153,0x0954,0x0996,0x09B7,0x09D8,0x01D8,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01D9,0x09F9,0x09D8,0x09B7,0x11D6,0x1174,0x1912,0x1911,0x1910,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x192F,0x192F,0x112F,0x0190,0x2B98,0x2419,0x13F8,0x13F8,0x0BF8,0x0BF9,0x1419,0x1419,0x2C5A,0x3C7A,0x1AD5,0x0150,0x090F,0x190F,0x2130,0x2130,0x210F,0x2130,0x2950,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x212F,0x2150,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x290F,0x2110,0x2110,0x2110,0x2131,0x2131,0x1931,0x1932,0x1153,0x1153,0x1195,0x19D6,0x2217,0x21F6,0x21B5,0x2195,0x1953,0x1912,0x1911,0x2111,0x2131,0x2130,0x2951,0x2130,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1932,0x1133,0x1154,0x19D6,0x21F7,0x2218,0x21F7,0x1174,0x1153,0x1953,0x1932,0x1931,0x2131,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x210E,0x292F,0x292F,0x210F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x210F,0x2130,0x2110,0x2130,0x1911,0x1931,0x1912,0x1133,0x1996,0x11B7,0x19D8,0x2219,0x19F9,0x2239,0x19F8,0x19D7,0x19B6,0x1174,0x1132,0x1111,0x1931,0x1910,0x1910,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2131,0x1911,0x1931,0x1912,0x1113,0x1954,0x21F6,0x2217,0x21F7,0x1995,0x0912,0x10F1,0x1911,0x1931,0x2131,0x2110,0x2130,0x2110,0x2110,0x210F,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x292F,0x210F,0x290F,0x290F,0x20CE,0x206C,0x2009,0xCCDB,0xD4DA,0xDC99,0xDC99,0xDC78,0xDC57,0xDC57,0xDC57,0xDC36,0xE457,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xDC37,0xDC37,0xE457,0xE457,0xE478,0xDC58,0xDC78,0xDCDA,0x7A51,0x1809,0x28EE,0x28CE,0x210F,0x292F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1973,0x21D5,0x19B5,0x19D7,0x19D7,0x19D8,0x11D8,0x1A18,0x19F8,0x19D7,0x19B6,0x1955,0x1133,0x1912,0x1912,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x290F,0x290F,0x290F,0x210F,0x2930,0x212F,0x212F,0x2930,0x212F,0x210F,0x290F,0x290F,0x2910,0x2930,0x212F,0x292F,0x290F,0x2930,0x212F,0x212F,0x2910,0x2930,0x2930,0x2930,0x290F,0x210F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x2930,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1910,0x1911,0x1132,0x1133,0x19B6,0x21F7,0x19D7,0x1995,0x1133,0x1133,0x1952,0x1931,0x1931,0x1931,0x1132,0x1973,0x1994,0x1995,0x1195,0x19B6,0x11D7,0x11D7,0x19F7,0x11D7,0x19D7,0x19B6,0x1995,0x1974,0x1933,0x1912,0x1911,0x2131,0x2150,0x2110,0x2130,0x212F,0x290F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x210F,0x210F,0x2910,0x2110,0x2110,0x210F,0x2930,0x2910,0x2930,0x2930,0x290F,0x210F,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2150,0x2130,0x1911,0x1111,0x1132,0x1954,0x21B5,0x21F6,0x21F7,0x21D6,0x1174,0x1133,0x1132,0x1132,0x1932,0x1951,0x1931,0x2130,0x1910,0x1910,0x1910,0x2130,0x2151,0x2151,0x1931,0x1132,0x1154,0x1175,0x11D7,0x09D9,0x09D9,0x09FA,0x01DA,0x01D9,0x09D9,0x09F9,0x09D8,0x11B7,0x1175,0x1153,0x1932,0x1931,0x2111,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2930,0x2930,0x2910,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2910,0x2110,0x210F,0x2910,0x290F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2930,0x2910,0x2910,0x2930,0x210F,0x2110,0x2910,0x2910,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2910,0x2110,0x2930,0x2110,0x2910,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x2930,0x210F,0x290F,0x210F,0x2930,0x2930,0x290F,0x210F,0x2930,0x290F,0x2910,0x2910,0x2910,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x290F,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x210F,0x210F,0x212F,0x2130,0x210F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2151,0x2131,0x2131,0x1911,0x1112,0x1933,0x1954,0x1995,0x19D6,0x21F7,0x21F6,0x1995,0x1153,0x1112,0x1911,0x1911,0x2111,0x2131,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212E,0x212F,0x210F,0x210F,0x212F,0x212F, + 0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2110,0x2131,0x1931,0x1932,0x1133,0x1154,0x1175,0x1196,0x11D7,0x11F8,0x1218,0x1A18,0x11F8,0x19F7,0x0975,0x0933,0x1133,0x1112,0x1952,0x1931,0x1931,0x1931,0x1952,0x1932,0x1132,0x1133,0x1154,0x1175,0x1197,0x11D8,0x11D8,0x11F8,0x11D7,0x11D7,0x1195,0x1154,0x1133,0x1132,0x1952,0x1931,0x2131,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2951,0x2131,0x1911,0x1111,0x1132,0x1133,0x1974,0x1995,0x19B6,0x21D6,0x19B5,0x1995,0x1174,0x1133,0x1112,0x1112,0x1112,0x1112,0x1111,0x1111,0x1112,0x1112,0x1112,0x1932,0x1112,0x1912,0x1912,0x1932,0x1912,0x1911,0x1911,0x1911,0x1931,0x1911,0x1912,0x1912,0x1912,0x1912,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1912,0x1912,0x1912,0x1932,0x1912,0x1912,0x1911,0x1932,0x1911,0x1912,0x1912,0x1912,0x1912,0x1932,0x1932,0x1932,0x1912,0x1912,0x1911,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1912,0x1932,0x1932,0x1932,0x1932,0x1912,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1912,0x1912,0x1912,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1931,0x1932,0x1932,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1912,0x1931,0x1932,0x1931,0x1931,0x1932,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1912,0x1912,0x1911,0x1932,0x1912,0x1912,0x1912,0x1911,0x1912,0x1912,0x1912,0x1912,0x1932,0x1932,0x1932,0x1912,0x1912,0x1911,0x1911,0x1911,0x1912,0x1932,0x1932,0x1932,0x1932,0x1912,0x1932,0x1932,0x1932,0x1912,0x1912,0x1932,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1932,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1932,0x1932,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1932,0x1932,0x1912,0x1912,0x1932,0x1912,0x1912,0x1912,0x1912,0x1911,0x1912,0x1912,0x1932,0x1912,0x1912,0x1912,0x1932,0x1912,0x1932,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1932,0x1912,0x1932,0x1912,0x1912,0x1912,0x1932,0x1911,0x1912,0x1912,0x1932,0x1932,0x1932,0x1911,0x1911,0x1932,0x1912,0x1912,0x1932,0x1932,0x1911,0x1911,0x1932,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1111,0x1911,0x1111,0x10F1,0x1112,0x1112,0x1112,0x1112,0x1112,0x0933,0x0954,0x1196,0x09B7,0x09D8,0x09D9,0x01D9,0x01DA,0x01FA,0x01D9,0x01FA,0x01FA,0x09FA,0x09D9,0x09B8,0x09B7,0x11B6,0x1995,0x1132,0x2132,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2110,0x2110,0x2130,0x210F,0x2130,0x2150,0x212F,0x212F,0x192F,0x112F,0x010E,0x1232,0x33F9,0x23F8,0x13F8,0x1419,0x0BF9,0x0BF9,0x0BF9,0x13D8,0x2439,0x3C7B,0x3398,0x0170,0x092F,0x1930,0x2150,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2110,0x2930,0x2930,0x2930,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2131,0x2151,0x1951,0x1132,0x1132,0x1173,0x1194,0x19B6,0x2217,0x2217,0x21B6,0x1995,0x1133,0x1912,0x1911,0x1910,0x2131,0x2130,0x2150,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2131,0x2131,0x1932,0x1112,0x1133,0x1174,0x19D6,0x21F7,0x2217,0x21F7,0x1174,0x1153,0x1133,0x1932,0x1932,0x1911,0x1931,0x2131,0x2110,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x212F,0x2930,0x212F,0x2130,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1953,0x1953,0x1134,0x1134,0x1135,0x1134,0x1134,0x1134,0x1133,0x1133,0x1973,0x1932,0x1911,0x1910,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1931,0x1132,0x1133,0x21B6,0x2217,0x21F7,0x19B5,0x0913,0x08F1,0x1111,0x1931,0x2131,0x2151,0x2130,0x2110,0x2130,0x210F,0x2110,0x210F,0x2110,0x2910,0x2910,0x2930,0x2930,0x2930,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x290F,0x290F,0x20EE,0x208D,0x284B,0x8AF5,0xDD3C,0xDCBA,0xDC99,0xDC78,0xDC78,0xDC57,0xDC37,0xDC36,0xDC36,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xDC36,0xDC36,0xDC37,0xDC37,0xDC57,0xDC57,0xE478,0xDC99,0xE4DA,0xA376,0x2009,0x28AD,0x28CE,0x20EE,0x292F,0x2930,0x210F,0x2930,0x20EF,0x20EF,0x2110,0x2130,0x2130,0x2130,0x2111,0x1911,0x1932,0x1953,0x1954,0x1975,0x0934,0x1155,0x19B6,0x1995,0x1995,0x1974,0x1933,0x1932,0x1912,0x1911,0x2131,0x2131,0x2130,0x2110,0x2130,0x210F,0x210F,0x210F,0x290F,0x290F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x2910,0x210F,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x212F,0x210F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x290F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x1930,0x1911,0x1132,0x1133,0x19B6,0x2218,0x19D7,0x1995,0x1133,0x1133,0x1952,0x1951,0x1931,0x1931,0x1951,0x1952,0x1973,0x1973,0x1153,0x1974,0x1174,0x1995,0x1995,0x1175,0x1975,0x1974,0x1953,0x1932,0x18F1,0x1911,0x2131,0x2131,0x2130,0x210F,0x212F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x290F,0x210F,0x2930,0x2910,0x2910,0x2930,0x2110,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x1910,0x1931,0x1911,0x1112,0x1974,0x21D6,0x21F7,0x21F7,0x19B6,0x1995,0x1133,0x1112,0x1111,0x1931,0x1931,0x2151,0x2131,0x2130,0x18EF,0x210F,0x2130,0x2130,0x1930,0x2152,0x1932,0x1133,0x1995,0x11D7,0x11D8,0x09F9,0x09FA,0x01FA,0x01DA,0x01DA,0x01D9,0x09F9,0x11F9,0x11D8,0x11B6,0x1154,0x1133,0x1932,0x2132,0x2111,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2110,0x210F,0x210F,0x2930,0x210F,0x210F,0x2930,0x2110,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x2930,0x2910,0x2910,0x210F,0x210F,0x2930,0x2910,0x2110,0x2110,0x2930,0x2910,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x2910,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x2110,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x212F,0x2930,0x2930,0x292F,0x210F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2131,0x2131,0x1931,0x10F1,0x1112,0x1933,0x1153,0x1995,0x21D6,0x21F7,0x19D6,0x1995,0x1954,0x1132,0x1911,0x1911,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x212F,0x210E,0x212F,0x212F,0x212F,0x212F,0x212F, + 0x212F,0x212F,0x2930,0x2130,0x210F,0x210F,0x2130,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2110,0x2130,0x2131,0x1931,0x1932,0x1133,0x1154,0x1175,0x1196,0x11B7,0x11F8,0x1A18,0x1A19,0x19F8,0x11D7,0x1195,0x0954,0x1132,0x1112,0x1931,0x1931,0x1931,0x1931,0x1931,0x1912,0x1932,0x1153,0x1154,0x1196,0x11B7,0x11F8,0x11F8,0x11F8,0x11F8,0x11D7,0x1195,0x0954,0x1133,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x2131,0x1931,0x1931,0x1911,0x1132,0x1953,0x1974,0x19B5,0x21D6,0x19D6,0x19D6,0x19B5,0x1195,0x1174,0x1154,0x1133,0x1133,0x1133,0x1133,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1113,0x1133,0x1133,0x1113,0x1113,0x1133,0x1133,0x1112,0x1133,0x1133,0x1133,0x1133,0x1133,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1153,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1112,0x1132,0x1133,0x1133,0x1112,0x1133,0x1133,0x1133,0x0912,0x0912,0x1113,0x0913,0x0933,0x0933,0x0934,0x0954,0x0955,0x0996,0x0996,0x09D8,0x09D8,0x01D9,0x01D9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01D9,0x01D9,0x09D9,0x09B8,0x11D7,0x19D6,0x1112,0x1911,0x1911,0x2131,0x2130,0x2110,0x2130,0x2130,0x2930,0x2130,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x194F,0x112F,0x094F,0x43D9,0x3C3A,0x2419,0x13F9,0x0BF9,0x0BF9,0x0BF9,0x1419,0x13D8,0x2419,0x345A,0x3BF9,0x09D1,0x094F,0x112F,0x2150,0x2130,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2110,0x2130,0x2930,0x2910,0x210F,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1152,0x1153,0x1194,0x19D6,0x21F7,0x2A17,0x21D6,0x1974,0x1933,0x1912,0x1911,0x1931,0x2131,0x2151,0x2130,0x2130,0x210F,0x2130,0x212F,0x2930,0x212F,0x210F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1911,0x1132,0x1132,0x1174,0x19B5,0x21F7,0x2A38,0x21D6,0x1174,0x1154,0x1933,0x1932,0x1932,0x1911,0x2111,0x1910,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x1932,0x1932,0x1932,0x1933,0x1913,0x1113,0x1113,0x1112,0x1932,0x1932,0x1931,0x1931,0x2131,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x212F,0x2930,0x212F,0x210F,0x2110,0x2130,0x2131,0x1931,0x1932,0x1132,0x1153,0x21F7,0x2217,0x21F7,0x1133,0x08D2,0x1111,0x1932,0x2131,0x2131,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2110,0x210F,0x2910,0x2930,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x28EF,0x28CE,0x206B,0x40ED,0xCC9A,0xDCDB,0xDCB9,0xDC78,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xDC37,0xDC37,0xE457,0xDC36,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xE477,0xDC78,0xDC98,0xDCDA,0xC438,0x284A,0x286C,0x20AD,0x20EE,0x290F,0x210F,0x290F,0x210F,0x20EF,0x2110,0x2110,0x2110,0x2130,0x2110,0x2111,0x2111,0x1911,0x1912,0x1932,0x1933,0x1933,0x1933,0x1113,0x1133,0x1112,0x1912,0x1932,0x1911,0x1911,0x2111,0x2131,0x2130,0x2110,0x2110,0x2110,0x2130,0x210F,0x212F,0x292F,0x292F,0x210F,0x210F,0x290F,0x2930,0x2110,0x2110,0x2910,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x290F,0x210F,0x212F,0x2930,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x292F,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1930,0x1911,0x1132,0x1133,0x19D6,0x21F7,0x19D7,0x1996,0x1134,0x1133,0x1952,0x1951,0x1930,0x1930,0x1931,0x1931,0x1931,0x1932,0x1932,0x1933,0x1933,0x1133,0x1133,0x1133,0x1933,0x1912,0x1912,0x1911,0x18F1,0x1910,0x2130,0x2131,0x2130,0x2930,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2910,0x292F,0x212F,0x2930,0x212F,0x210F,0x210F,0x212F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1112,0x1112,0x1974,0x21D6,0x21F6,0x21F7,0x21F6,0x1995,0x1153,0x1112,0x1931,0x1931,0x2131,0x1910,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1154,0x1996,0x11D8,0x09D9,0x09FA,0x01DA,0x01DA,0x01B9,0x01B9,0x01D9,0x01D9,0x09F9,0x09D8,0x11B7,0x1195,0x1954,0x1932,0x2132,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x290F,0x210F,0x210F,0x210F,0x2110,0x2110,0x20EF,0x2130,0x2110,0x2110,0x2130,0x2110,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x2930,0x2910,0x210F,0x210F,0x2110,0x2930,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x210F,0x2910,0x210F,0x2910,0x210F,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x210F,0x2130,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x2910,0x2110,0x2930,0x2110,0x2910,0x2110,0x2110,0x2910,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2910,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x210F,0x2910,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x212F,0x2930,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x2930,0x210F,0x210F,0x210F,0x2130,0x2130,0x2131,0x1911,0x1111,0x1112,0x1133,0x1153,0x1995,0x21F6,0x21F7,0x19D6,0x1995,0x1153,0x1132,0x1931,0x1911,0x1910,0x2130,0x2110,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F, + 0x210F,0x210F,0x20EF,0x210F,0x2130,0x210F,0x210F,0x212F,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x1931,0x1931,0x1132,0x1132,0x1154,0x1175,0x1196,0x11B7,0x11F8,0x19F8,0x1A18,0x19F8,0x11B7,0x1175,0x1133,0x1132,0x1132,0x1932,0x1931,0x1931,0x1911,0x1931,0x1911,0x1932,0x1953,0x1154,0x1195,0x0996,0x11D7,0x11F8,0x1A19,0x1A18,0x11B6,0x1175,0x1154,0x1133,0x1932,0x1931,0x1931,0x2110,0x2110,0x2130,0x2130,0x212F,0x2130,0x2130,0x2151,0x2151,0x1931,0x1911,0x1112,0x1153,0x1994,0x19B6,0x21F7,0x19D7,0x19D7,0x19D7,0x11B6,0x11B6,0x1196,0x1196,0x11B6,0x1196,0x1196,0x1196,0x11B6,0x1196,0x1196,0x1196,0x1196,0x1196,0x1196,0x1196,0x1196,0x1195,0x1196,0x1196,0x1196,0x1195,0x1195,0x1175,0x1175,0x1175,0x1175,0x1175,0x1195,0x1175,0x1175,0x1175,0x1175,0x0975,0x1175,0x1175,0x1175,0x1175,0x1175,0x0975,0x1175,0x1175,0x0975,0x1175,0x1175,0x1175,0x1175,0x1175,0x0975,0x1175,0x1175,0x1175,0x1195,0x1175,0x1195,0x1195,0x1175,0x1175,0x1175,0x1175,0x0975,0x1195,0x1195,0x1175,0x1175,0x1175,0x1175,0x1175,0x1195,0x1195,0x1195,0x1175,0x1195,0x1195,0x1195,0x1175,0x1195,0x1195,0x1175,0x1175,0x1175,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1175,0x1175,0x1195,0x1195,0x1175,0x1195,0x1195,0x1195,0x1175,0x1175,0x1195,0x1195,0x1175,0x1195,0x1195,0x1195,0x0975,0x1195,0x1195,0x1195,0x1175,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1175,0x1175,0x1175,0x1175,0x0975,0x1195,0x1175,0x1195,0x1175,0x1195,0x1195,0x1196,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1175,0x1196,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1175,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1175,0x1175,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1175,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1175,0x1195,0x1175,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1175,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1175,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1175,0x1175,0x1195,0x1175,0x1195,0x0975,0x1195,0x1196,0x1196,0x0996,0x11B6,0x11D7,0x1197,0x11B7,0x09B7,0x0997,0x09D8,0x09D8,0x09F9,0x09FA,0x01D9,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x09D9,0x11D8,0x19F8,0x21F7,0x1112,0x1911,0x1911,0x2131,0x2110,0x2130,0x2130,0x210F,0x2130,0x2930,0x2110,0x2930,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x194F,0x092F,0x32D5,0x64DD,0x44BB,0x2439,0x1419,0x0BF9,0x0C19,0x0C19,0x1419,0x1C19,0x2C5A,0x3C5A,0x549B,0x3316,0x094F,0x114F,0x1950,0x2150,0x2150,0x2130,0x2130,0x2150,0x212F,0x212F,0x2130,0x192F,0x2150,0x1930,0x2130,0x2130,0x2130,0x2130,0x2930,0x2910,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x210F,0x210F,0x2930,0x2910,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x2151,0x1952,0x1152,0x1153,0x1194,0x19F6,0x2217,0x19D6,0x21D6,0x1974,0x1133,0x1932,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1932,0x1132,0x1174,0x19B5,0x2217,0x2217,0x19B6,0x1175,0x1974,0x1133,0x1932,0x1912,0x1911,0x2131,0x2110,0x2110,0x2110,0x2110,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1911,0x1912,0x1932,0x1932,0x1932,0x1911,0x1911,0x1931,0x2131,0x2131,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x210F,0x290F,0x2910,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x1910,0x1911,0x1932,0x1112,0x1995,0x2A17,0x2A17,0x19B6,0x08F3,0x08D2,0x1932,0x2152,0x2131,0x2130,0x2130,0x2110,0x210F,0x210F,0x212F,0x2930,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x212F,0x212F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x28EE,0x288D,0x200A,0xA397,0xE51C,0xDCBA,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC36,0xDC37,0xDC37,0xDC36,0xDC37,0xE457,0xDC57,0xDC57,0xDC57,0xE457,0xDC16,0xDC36,0xDC57,0xDC98,0xD498,0xC438,0x61CF,0x204A,0x28AD,0x28EE,0x290F,0x290F,0x290F,0x2910,0x210F,0x210F,0x2110,0x2930,0x2130,0x2110,0x2110,0x2111,0x1911,0x1931,0x1911,0x1911,0x1912,0x1912,0x1932,0x1932,0x1911,0x1911,0x1911,0x2131,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x2930,0x2930,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x2910,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x2930,0x2930,0x210F,0x2930,0x212F,0x212F,0x2930,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1930,0x1911,0x1112,0x1133,0x19D6,0x21F7,0x21F7,0x1195,0x1154,0x1132,0x1952,0x1931,0x1930,0x1930,0x1930,0x1950,0x1910,0x1911,0x1911,0x1911,0x1932,0x1932,0x1932,0x1932,0x1911,0x18F1,0x1911,0x2111,0x2111,0x1910,0x2130,0x2130,0x2110,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x290F,0x2930,0x290F,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x212F,0x2930,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2152,0x1932,0x1132,0x1113,0x1974,0x21D6,0x21F7,0x21F7,0x21D6,0x1995,0x1133,0x1112,0x1911,0x1931,0x1931,0x2130,0x2110,0x2110,0x210F,0x2110,0x2110,0x2150,0x2151,0x2130,0x1931,0x1932,0x1133,0x1996,0x19F8,0x11D8,0x09D9,0x09DA,0x09FA,0x01BA,0x01BA,0x01B9,0x01B9,0x01DA,0x09D9,0x09D9,0x11D8,0x19D7,0x1154,0x1932,0x1932,0x2131,0x2131,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x2110,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2130,0x210F,0x212F,0x210F,0x2910,0x210F,0x210F,0x210F,0x2930,0x210F,0x2110,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x210F,0x2130,0x210F,0x2130,0x210F,0x2110,0x2930,0x2930,0x2930,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x212F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x210F,0x2910,0x2910,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x2930,0x292F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x292F,0x212F,0x210F,0x292F,0x290F,0x210F,0x210F,0x2930,0x210F,0x212F,0x2930,0x2930,0x212F,0x210F,0x210F,0x212F,0x292F,0x292F,0x210F,0x2930,0x210F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1911,0x1111,0x1953,0x1153,0x19B5,0x21F6,0x19F7,0x21F7,0x19B5,0x1133,0x1112,0x1111,0x1931,0x2131,0x2130,0x2110,0x2110,0x210F,0x212F,0x210F,0x212F,0x214F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F, + 0x2130,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2130,0x1931,0x1931,0x1132,0x1133,0x1153,0x1175,0x1196,0x11B7,0x19F8,0x1A18,0x19F8,0x19F8,0x11B7,0x1175,0x1154,0x1133,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1153,0x1174,0x1196,0x11B7,0x11D8,0x11F8,0x11F8,0x11F8,0x11B7,0x1175,0x1154,0x1153,0x1932,0x1932,0x2131,0x2110,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2151,0x2131,0x1911,0x1931,0x1132,0x1133,0x1174,0x19B5,0x19F7,0x1A18,0x1A18,0x1A18,0x11F8,0x19F8,0x19F8,0x19F8,0x1A18,0x2218,0x19F8,0x2239,0x2219,0x2219,0x19F8,0x2219,0x2219,0x1A18,0x2219,0x2239,0x1A18,0x2239,0x2239,0x2238,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2218,0x1A18,0x2218,0x1A18,0x2239,0x2238,0x2218,0x2218,0x2238,0x2218,0x2218,0x2238,0x1A18,0x1A18,0x2239,0x1A18,0x1A18,0x2218,0x1A18,0x2218,0x2218,0x1A18,0x2218,0x1A18,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2218,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x2238,0x2218,0x2238,0x1A18,0x2218,0x1A18,0x1A18,0x1A18,0x2238,0x1A18,0x2218,0x1A18,0x2238,0x2218,0x1A18,0x1A18,0x2218,0x2218,0x1A18,0x1A18,0x2238,0x2238,0x1A18,0x1A18,0x2218,0x2218,0x1A18,0x1A18,0x2238,0x2238,0x2218,0x1A18,0x2238,0x2218,0x1A18,0x1A18,0x2218,0x2218,0x1A18,0x1A18,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x2218,0x2218,0x1A18,0x1A18,0x1A38,0x1A18,0x1A18,0x1A18,0x2238,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2218,0x1A18,0x2218,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2218,0x1A18,0x1A18,0x1A18,0x2218,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x2238,0x1A18,0x2218,0x1A18,0x1A18,0x1A18,0x2218,0x1A18,0x1A18,0x2218,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x2238,0x1A38,0x1A18,0x2218,0x2238,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2238,0x2218,0x1A18,0x1A18,0x1A18,0x1A18,0x1A38,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2238,0x2238,0x1A18,0x1A38,0x1A38,0x1A18,0x1A38,0x2238,0x2238,0x1A18,0x2238,0x1A18,0x1A38,0x1A38,0x1A18,0x11F7,0x1A18,0x1A18,0x1A18,0x11F8,0x1A19,0x11D8,0x11F8,0x11F9,0x09D8,0x09F9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01BA,0x01DA,0x09DA,0x09D9,0x11D8,0x11D7,0x19D6,0x08F2,0x1911,0x1931,0x2110,0x2130,0x2110,0x210F,0x210F,0x2130,0x2930,0x2930,0x2110,0x2930,0x2130,0x2130,0x212F,0x212F,0x192F,0x194F,0x114F,0x2233,0x22B5,0x2356,0x23D8,0x1C19,0x0BF9,0x0C19,0x0C19,0x1439,0x1C39,0x2BD8,0x3BF9,0x43F9,0x3B36,0x1170,0x114F,0x194F,0x1950,0x1950,0x2150,0x194F,0x192F,0x192F,0x192F,0x1930,0x1950,0x1950,0x1930,0x2150,0x2150,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x212F,0x2130,0x2130,0x212F,0x210F,0x2910,0x2910,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x1931,0x1931,0x1152,0x1173,0x1194,0x19D6,0x2217,0x19D6,0x19B6,0x1995,0x1113,0x1112,0x1912,0x2131,0x2131,0x2130,0x2930,0x2130,0x210F,0x210F,0x212F,0x292F,0x2150,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1131,0x1132,0x1174,0x19B5,0x2217,0x2217,0x1996,0x1995,0x1954,0x1133,0x1912,0x1912,0x2111,0x2131,0x2110,0x2110,0x2910,0x2910,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x290F,0x290F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2110,0x2131,0x2131,0x2111,0x2131,0x2131,0x1911,0x1911,0x2111,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x2910,0x210F,0x210F,0x2130,0x210F,0x210F,0x2910,0x2930,0x2910,0x2910,0x210F,0x212F,0x210F,0x210F,0x2130,0x210F,0x210F,0x2110,0x2130,0x2130,0x2131,0x1911,0x1932,0x1112,0x19B5,0x2A17,0x21F7,0x1995,0x08F3,0x10F2,0x1952,0x1931,0x1910,0x2130,0x2130,0x2130,0x210F,0x212F,0x2130,0x2930,0x2130,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x28EE,0x28CD,0x286C,0x514E,0xE53D,0xDCBA,0xDC99,0xDC78,0xDC58,0xDC57,0xDC37,0xDC37,0xDC37,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xDC37,0xE457,0xDC57,0xDC57,0xE457,0xDC16,0xE457,0xDC77,0xDC98,0xDC99,0xCC99,0xDD7E,0x412D,0x206B,0x28CE,0x28EE,0x290F,0x2910,0x2910,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2131,0x1910,0x1911,0x1910,0x1931,0x1931,0x1911,0x1911,0x1911,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x2110,0x210F,0x2910,0x2910,0x2930,0x212F,0x212F,0x2110,0x2930,0x2910,0x290F,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x2930,0x2130,0x212F,0x212F,0x2130,0x212F,0x290F,0x2930,0x290F,0x2930,0x212F,0x214F,0x2130,0x212F,0x2150,0x2130,0x1930,0x1931,0x1132,0x1133,0x19D6,0x2217,0x19D7,0x1996,0x1133,0x1132,0x1932,0x1930,0x2130,0x2130,0x2130,0x2130,0x2110,0x1910,0x1910,0x2131,0x1911,0x1911,0x1911,0x18F1,0x1911,0x1911,0x2111,0x18F0,0x2110,0x2110,0x2130,0x2930,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x290F,0x2930,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x292F,0x212F,0x2930,0x2930,0x2930,0x2110,0x2130,0x2110,0x2110,0x2131,0x2131,0x1931,0x1932,0x1112,0x1133,0x1175,0x21F7,0x21F7,0x21F7,0x21D6,0x1995,0x1133,0x1112,0x1111,0x1911,0x2151,0x1910,0x2130,0x2130,0x210F,0x210F,0x2910,0x2110,0x2150,0x2151,0x1931,0x1911,0x1111,0x1113,0x1996,0x11D8,0x11D8,0x09B9,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01D9,0x09D9,0x11D8,0x19B7,0x1174,0x1112,0x1931,0x2131,0x2151,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x2930,0x210F,0x2110,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x212F,0x210F,0x2930,0x290F,0x212F,0x2930,0x2110,0x2930,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x2110,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x212F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x290F,0x2930,0x290F,0x290F,0x2930,0x2910,0x2910,0x2930,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2930,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x210F,0x2930,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x2930,0x2930,0x290F,0x290F,0x210F,0x2930,0x2910,0x210F,0x292F,0x210F,0x210F,0x290F,0x292F,0x210F,0x290F,0x210F,0x292F,0x2930,0x212F,0x2930,0x2930,0x212F,0x210F,0x2930,0x2930,0x2930,0x210F,0x2130,0x2930,0x2130,0x2130,0x2131,0x18F1,0x1112,0x1133,0x1153,0x19B5,0x21F6,0x21F7,0x21F7,0x19B5,0x1153,0x1112,0x1111,0x1911,0x1930,0x2110,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x2950,0x212F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F, + 0x2950,0x2130,0x2110,0x2110,0x2910,0x210F,0x210F,0x2930,0x2930,0x292F,0x292F,0x292F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2151,0x1931,0x1952,0x1132,0x1133,0x1154,0x1196,0x11B7,0x19F8,0x1A19,0x19F8,0x11F8,0x11B7,0x1175,0x1174,0x1133,0x1132,0x1932,0x1932,0x1931,0x2151,0x1952,0x1932,0x1132,0x1153,0x1174,0x1196,0x11B7,0x11B7,0x11F8,0x1218,0x11F8,0x19D7,0x1175,0x1154,0x1133,0x1932,0x1931,0x2131,0x2130,0x2110,0x210F,0x210F,0x2130,0x2950,0x2150,0x2151,0x2151,0x2131,0x1931,0x1912,0x1132,0x1132,0x1974,0x19B6,0x19F7,0x2218,0x1A18,0x19F8,0x19F8,0x2218,0x2218,0x2218,0x21F8,0x21F8,0x21F8,0x21F9,0x21F9,0x21F8,0x19F8,0x19F8,0x2219,0x2239,0x1A18,0x2259,0x2239,0x1A18,0x1A18,0x1A18,0x2238,0x1A18,0x2238,0x2218,0x2218,0x2238,0x2238,0x2239,0x2238,0x2238,0x2238,0x2238,0x2238,0x2238,0x2238,0x2218,0x2238,0x2218,0x2238,0x2238,0x2238,0x2238,0x2238,0x2218,0x2238,0x2238,0x2218,0x2238,0x2218,0x2238,0x2238,0x2238,0x2239,0x2238,0x2218,0x2218,0x2238,0x2238,0x2238,0x2238,0x1A18,0x2238,0x2238,0x2238,0x2238,0x1A18,0x2238,0x2238,0x2218,0x2238,0x2238,0x2218,0x2218,0x2238,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2238,0x2238,0x2238,0x2238,0x2238,0x2238,0x2238,0x2218,0x2238,0x2238,0x2238,0x2218,0x2238,0x2238,0x2218,0x2218,0x2218,0x2218,0x2238,0x2238,0x2238,0x2238,0x2238,0x2218,0x2238,0x2238,0x2218,0x2218,0x2218,0x2238,0x2238,0x2238,0x2238,0x2238,0x2218,0x2218,0x2238,0x2238,0x2238,0x2218,0x2238,0x1A18,0x2238,0x1A18,0x19F8,0x2218,0x2218,0x2218,0x2238,0x2238,0x1A18,0x2218,0x2218,0x2218,0x1A18,0x2218,0x1A18,0x2238,0x2218,0x1A18,0x2218,0x2238,0x2239,0x2238,0x2218,0x2218,0x2218,0x2218,0x2238,0x2218,0x2238,0x2218,0x2238,0x2218,0x2218,0x2218,0x2238,0x2238,0x2238,0x1A18,0x1A18,0x2238,0x2238,0x2218,0x2238,0x2218,0x2218,0x2238,0x2238,0x2238,0x2238,0x2218,0x2238,0x2238,0x2238,0x2218,0x2238,0x2238,0x2238,0x2238,0x2238,0x2238,0x2238,0x2238,0x2238,0x2238,0x2238,0x2218,0x2218,0x2238,0x2238,0x2218,0x2238,0x2238,0x2238,0x2218,0x1A18,0x1A18,0x2218,0x2238,0x2238,0x2218,0x2238,0x2238,0x1A18,0x2238,0x2238,0x2218,0x2238,0x2238,0x1A18,0x2238,0x1A38,0x1A38,0x2238,0x2238,0x2238,0x2238,0x2238,0x2238,0x2238,0x2238,0x2259,0x2238,0x2258,0x2258,0x2238,0x2238,0x1A38,0x2258,0x2238,0x2238,0x2258,0x2238,0x1A38,0x2238,0x2258,0x2259,0x2238,0x1A38,0x1A18,0x1A39,0x1A19,0x19F9,0x11F9,0x11D8,0x09D8,0x09F9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01BA,0x09DA,0x09D9,0x11D8,0x19F8,0x19B5,0x08F1,0x1911,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x2130,0x2930,0x2930,0x2910,0x2930,0x2930,0x2950,0x212F,0x212F,0x214F,0x192F,0x112F,0x010E,0x00EE,0x014F,0x0212,0x1BF9,0x1419,0x1439,0x1439,0x1419,0x2419,0x0190,0x00CD,0x00CD,0x010E,0x114F,0x112F,0x194F,0x112F,0x112F,0x090E,0x090E,0x090E,0x090E,0x090E,0x090E,0x090E,0x112F,0x110F,0x110F,0x112F,0x190F,0x190F,0x2130,0x2110,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210E,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2910,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1951,0x1952,0x1952,0x1153,0x1195,0x19D6,0x2217,0x21F7,0x19B6,0x1995,0x1133,0x1112,0x1911,0x1911,0x2151,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x212F,0x212F,0x212F,0x210F,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x1930,0x1910,0x1952,0x1132,0x1153,0x19B6,0x2A38,0x2218,0x19B6,0x1995,0x1154,0x1133,0x1932,0x1932,0x2132,0x2131,0x2930,0x2930,0x2110,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x290F,0x290F,0x290F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x2110,0x2131,0x2130,0x2130,0x2110,0x2110,0x2910,0x210F,0x2910,0x290F,0x2910,0x2130,0x2130,0x210F,0x210F,0x2930,0x210F,0x2910,0x210F,0x2930,0x212F,0x210F,0x212F,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x2131,0x1932,0x1932,0x1112,0x21D5,0x2A17,0x21F6,0x1995,0x08F2,0x1932,0x2152,0x2131,0x2130,0x2130,0x210F,0x2130,0x210F,0x212F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x290F,0x290F,0x28EE,0x28AD,0x304B,0xB3D8,0xDCBA,0xDC99,0xDC78,0xDC58,0xDC57,0xDC37,0xE457,0xE457,0xDC37,0xDC37,0xDC37,0xDC37,0xDC36,0xE457,0xE457,0xE457,0xDC37,0xDC36,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xDC98,0xD478,0xDD1B,0xDD7D,0x9BF8,0x180A,0x28AD,0x28EE,0x290F,0x2930,0x2930,0x2930,0x2930,0x210F,0x20EF,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x2130,0x2130,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x2110,0x2110,0x2910,0x2910,0x2930,0x290F,0x2930,0x210F,0x290F,0x2930,0x2930,0x2930,0x2910,0x2910,0x210F,0x290F,0x2110,0x2110,0x2930,0x2930,0x2930,0x2130,0x2930,0x212F,0x2130,0x2930,0x290F,0x210F,0x2910,0x210F,0x212F,0x212F,0x212F,0x212F,0x2150,0x2130,0x1930,0x1911,0x1112,0x1133,0x19B6,0x21F7,0x21D7,0x1995,0x1113,0x1112,0x1931,0x1910,0x2130,0x192F,0x2150,0x2130,0x2130,0x2130,0x2130,0x2111,0x2131,0x2131,0x2131,0x1931,0x2111,0x2110,0x2131,0x2130,0x2110,0x2110,0x2130,0x2930,0x210F,0x210F,0x2930,0x292F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x2910,0x290F,0x292F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x2130,0x2930,0x2131,0x2131,0x2131,0x1111,0x10F2,0x1133,0x1174,0x21F7,0x2218,0x21F7,0x21D6,0x1974,0x1133,0x10F2,0x1911,0x1931,0x1931,0x2130,0x190F,0x210F,0x2930,0x2930,0x210F,0x2110,0x210F,0x2150,0x2130,0x1911,0x1911,0x10F2,0x1133,0x19B6,0x19F8,0x09B8,0x09D9,0x01B9,0x01BA,0x01BA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x09D9,0x11D8,0x19D7,0x1975,0x10F2,0x1911,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x292F,0x290F,0x2930,0x290F,0x210F,0x2910,0x2110,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2110,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x2130,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2930,0x2110,0x2930,0x2110,0x2930,0x210F,0x2110,0x210F,0x2110,0x2910,0x2910,0x290F,0x2910,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x2910,0x2110,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x290F,0x2930,0x2930,0x210F,0x210F,0x210F,0x2910,0x2110,0x2110,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x212F,0x210F,0x212F,0x210F,0x292F,0x210F,0x2930,0x2930,0x292F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2110,0x1911,0x1912,0x1133,0x1173,0x19B5,0x21F6,0x21F7,0x19F6,0x1995,0x1133,0x0912,0x1111,0x1931,0x1911,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x292F, + 0x2950,0x2130,0x2110,0x2910,0x2930,0x2910,0x290F,0x210F,0x210F,0x212F,0x292F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1931,0x1132,0x1153,0x1154,0x1196,0x19B7,0x19F8,0x19F9,0x19F8,0x11D8,0x11D7,0x1196,0x1154,0x1153,0x1132,0x1932,0x1932,0x1931,0x1931,0x1931,0x1932,0x1132,0x1153,0x1174,0x1196,0x11B7,0x11B7,0x11F8,0x1A19,0x19F8,0x11B7,0x1196,0x1154,0x1133,0x1932,0x1932,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2951,0x2131,0x2131,0x2151,0x1931,0x1911,0x1932,0x1132,0x1133,0x1174,0x1175,0x1195,0x1996,0x1996,0x1996,0x19B6,0x1996,0x19B6,0x19B6,0x1996,0x19B7,0x19B7,0x19B6,0x19B6,0x19B7,0x19B6,0x11B6,0x11B6,0x11B6,0x11B6,0x19D6,0x19D6,0x11B6,0x19B6,0x19B6,0x19B6,0x19D6,0x19D6,0x19B6,0x19B6,0x19B6,0x19B6,0x19D6,0x19D6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B5,0x19B5,0x19D6,0x19B6,0x19D6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B5,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19D6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x1996,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x1996,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x11B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x1996,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19D6,0x19B6,0x19B6,0x19B6,0x19D6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B5,0x19B6,0x19B6,0x19B6,0x19B5,0x19B6,0x19B6,0x19B6,0x19B5,0x19B6,0x19B6,0x19B6,0x11B5,0x19B5,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19D6,0x19B5,0x19B6,0x19B6,0x19B5,0x19B5,0x19B6,0x19B6,0x19B6,0x19B6,0x19D6,0x19B6,0x19B6,0x19D5,0x11B5,0x19D6,0x19D6,0x19B5,0x19B5,0x19B6,0x19B6,0x19B5,0x19D6,0x19D6,0x19B6,0x19D6,0x19D6,0x19D6,0x11D6,0x19D6,0x19D7,0x19B7,0x19D7,0x11B7,0x11B7,0x11B8,0x09B8,0x09D8,0x09F9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x09D9,0x09D9,0x11D8,0x19F7,0x1175,0x1112,0x1931,0x2131,0x2131,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x2110,0x2910,0x2930,0x2930,0x212F,0x212F,0x214F,0x212F,0x192F,0x194F,0x114F,0x092F,0x014F,0x01F1,0x23F9,0x1C19,0x1419,0x1419,0x1C19,0x23D9,0x014F,0x00CD,0x00EE,0x092F,0x1970,0x114F,0x114F,0x092F,0x010E,0x00EE,0x010E,0x010E,0x012E,0x012E,0x010E,0x010E,0x00ED,0x00ED,0x010E,0x00ED,0x00AD,0x00CE,0x1910,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2151,0x1952,0x1132,0x1153,0x1195,0x2217,0x21F8,0x21F7,0x19D6,0x1174,0x1953,0x1112,0x1911,0x2131,0x2131,0x2930,0x2130,0x2130,0x212F,0x2930,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1154,0x19D6,0x2A38,0x19D7,0x19B6,0x1995,0x1153,0x1933,0x1912,0x2131,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2930,0x2910,0x2910,0x2930,0x290F,0x2930,0x210F,0x2130,0x210F,0x210F,0x2110,0x210F,0x2930,0x290F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x210F,0x2110,0x2130,0x2130,0x1931,0x1931,0x1932,0x1112,0x21B5,0x2A17,0x19D6,0x1995,0x1112,0x1932,0x2152,0x2131,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x2130,0x2950,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2950,0x290F,0x290F,0x28EF,0x28AD,0x286B,0x512E,0xD4BB,0xDC9A,0xE4B9,0xDC78,0xDC37,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC36,0xDC57,0xE457,0xDC36,0xDC36,0xDC37,0xE457,0xDC36,0xDC37,0xE457,0xE457,0xDC37,0xE457,0xDC57,0xDC78,0xDC98,0xE51B,0xD51B,0xBCBA,0x1809,0x20AD,0x20CE,0x290F,0x2910,0x2930,0x210F,0x2110,0x20EF,0x2910,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2930,0x2930,0x2110,0x2110,0x210F,0x2930,0x212F,0x212F,0x210F,0x2930,0x210F,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2910,0x2930,0x2930,0x2930,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x210F,0x2930,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1930,0x1931,0x1112,0x1133,0x21D6,0x21F7,0x21D7,0x1995,0x1133,0x1112,0x1931,0x1930,0x1930,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1910,0x1910,0x2130,0x2110,0x2130,0x2130,0x2110,0x2930,0x2130,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x2930,0x2910,0x292F,0x292F,0x290F,0x2910,0x2910,0x290F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2930,0x2130,0x2131,0x2131,0x1932,0x1112,0x0912,0x1154,0x21F7,0x2218,0x21F7,0x21D6,0x1974,0x1133,0x10F1,0x10F1,0x18F0,0x2131,0x2130,0x190F,0x190F,0x210F,0x2930,0x2930,0x2910,0x210F,0x2110,0x2130,0x2130,0x1911,0x1911,0x1112,0x1133,0x19D7,0x11D8,0x11D9,0x09D9,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01B9,0x01B9,0x09D9,0x11F9,0x19D7,0x1975,0x1112,0x1911,0x1911,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2930,0x290F,0x2110,0x2110,0x2110,0x2110,0x2950,0x2110,0x2130,0x2110,0x2110,0x2930,0x2910,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x210F,0x2130,0x2130,0x212F,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x210F,0x210F,0x212F,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2930,0x2110,0x2910,0x2910,0x2930,0x2930,0x2930,0x290F,0x2930,0x210F,0x2910,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2930,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x290F,0x210F,0x290F,0x290F,0x292F,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2110,0x2930,0x2930,0x290F,0x290F,0x2930,0x210F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2110,0x212F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x2111,0x1911,0x1911,0x1132,0x1154,0x1995,0x21F6,0x19F6,0x21F6,0x1995,0x1133,0x1112,0x1111,0x1931,0x1931,0x2131,0x2130,0x2110,0x2130,0x2110,0x2930,0x2130,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x210F,0x2110,0x2910,0x2930, + 0x2130,0x2110,0x2110,0x210F,0x2110,0x212F,0x212F,0x210F,0x2930,0x290F,0x290F,0x292F,0x290F,0x290F,0x2930,0x210F,0x212F,0x292F,0x210F,0x2110,0x2130,0x2130,0x2131,0x1931,0x1952,0x1152,0x1153,0x1174,0x1195,0x11B7,0x19F8,0x19F9,0x19F8,0x11F8,0x11D7,0x1175,0x1154,0x1133,0x1112,0x1932,0x1931,0x2131,0x1931,0x1931,0x1932,0x1132,0x1132,0x1154,0x1196,0x11D7,0x11B7,0x11F8,0x11F8,0x19F8,0x11B7,0x1176,0x1154,0x1133,0x1112,0x1932,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x2131,0x1931,0x1932,0x1952,0x1132,0x1132,0x1112,0x1112,0x1112,0x1112,0x1113,0x1113,0x1933,0x1933,0x1933,0x1933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1153,0x1153,0x1133,0x1153,0x1153,0x1133,0x1153,0x1153,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1932,0x1132,0x1932,0x1132,0x1932,0x1912,0x1932,0x1132,0x1132,0x1132,0x1933,0x1933,0x1933,0x1933,0x1132,0x1132,0x1953,0x1132,0x1133,0x1133,0x1133,0x1933,0x1933,0x1133,0x1933,0x1933,0x1933,0x1932,0x1132,0x1933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1933,0x1133,0x1133,0x1933,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1132,0x1933,0x1932,0x1132,0x1933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1933,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x1132,0x1132,0x1933,0x1133,0x1133,0x1933,0x1933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1933,0x1133,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1933,0x1133,0x1133,0x1933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x1132,0x1133,0x1132,0x1132,0x1133,0x1132,0x1132,0x1133,0x1132,0x1932,0x1932,0x1932,0x1132,0x1932,0x1932,0x1132,0x1132,0x1132,0x1132,0x1932,0x1132,0x1132,0x1132,0x1132,0x1932,0x1932,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1132,0x1112,0x1132,0x1112,0x1132,0x1953,0x1932,0x1132,0x1132,0x1132,0x1132,0x1932,0x1132,0x1132,0x1932,0x1132,0x1932,0x1132,0x1132,0x1132,0x1932,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1132,0x1132,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1133,0x1133,0x1154,0x1154,0x1154,0x1155,0x1176,0x1197,0x11D8,0x09D8,0x09F9,0x01FA,0x01D9,0x01DA,0x01FA,0x01FA,0x01D9,0x09D9,0x09F8,0x19F8,0x21F7,0x1154,0x1112,0x1931,0x2131,0x2110,0x2951,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x2130,0x210F,0x212F,0x212F,0x192F,0x1950,0x1950,0x1150,0x0950,0x014F,0x01F1,0x2C19,0x1C19,0x1419,0x1419,0x1C19,0x2C19,0x014F,0x00ED,0x094F,0x114F,0x1990,0x114F,0x114F,0x00EE,0x3336,0x4C5B,0x3C3A,0x3C3A,0x3C7A,0x3C7A,0x44BB,0x44BB,0x44BB,0x447A,0x443A,0x3BF9,0x4C1A,0x32D5,0x00CE,0x190F,0x2150,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x2930,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x210F,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1132,0x1153,0x1175,0x19D6,0x21F7,0x21F7,0x19B6,0x1974,0x1133,0x1111,0x1911,0x2131,0x2131,0x2930,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2151,0x2151,0x1931,0x1111,0x1132,0x1154,0x19B6,0x21F7,0x19D7,0x21F7,0x19B5,0x1153,0x1112,0x1911,0x1911,0x2111,0x2110,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x212F,0x210F,0x212F,0x2930,0x290F,0x210F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x210F,0x2110,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2910,0x2930,0x2930,0x210F,0x2110,0x210F,0x2130,0x212F,0x2130,0x210F,0x2110,0x210F,0x290F,0x2930,0x210F,0x212F,0x212F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1932,0x1112,0x21B5,0x2217,0x19B6,0x1974,0x10F2,0x1912,0x2132,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2930,0x2130,0x2130,0x2930,0x2930,0x212F,0x210F,0x210F,0x212F,0x292F,0x2930,0x292F,0x28EF,0x28CE,0x286C,0x2009,0xB419,0xDCDA,0xDC99,0xDC78,0xDC57,0xDC57,0xE457,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC36,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xE457,0xDC57,0xDC37,0xDC57,0xDC78,0xDC78,0xC437,0xDD5C,0xAC59,0x1809,0x208C,0x20EE,0x290F,0x2910,0x2910,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x210F,0x2930,0x210F,0x212F,0x2930,0x2930,0x2910,0x2910,0x2910,0x290F,0x210F,0x2910,0x2110,0x2930,0x2930,0x2930,0x290F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2130,0x212F,0x2130,0x2110,0x2930,0x290F,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x1931,0x1911,0x1112,0x1133,0x21D6,0x2217,0x21F7,0x1995,0x1133,0x1932,0x1931,0x1930,0x1930,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x210F,0x2930,0x2910,0x2930,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2110,0x2131,0x1932,0x1112,0x0913,0x1154,0x19D7,0x2238,0x21F7,0x19B6,0x1995,0x1953,0x10D1,0x10D0,0x1910,0x2131,0x2151,0x2150,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2950,0x2130,0x1910,0x1911,0x1912,0x1133,0x21D7,0x19D8,0x09D8,0x09B9,0x09DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01BA,0x01B9,0x09D9,0x11F9,0x19D7,0x1174,0x1112,0x1911,0x1910,0x1910,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2130,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x2930,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2130,0x210F,0x2110,0x2910,0x2930,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2930,0x2910,0x2910,0x210F,0x2910,0x210F,0x2930,0x2930,0x2110,0x2110,0x2910,0x2930,0x2110,0x2930,0x2930,0x2110,0x2930,0x2930,0x2110,0x2930,0x2910,0x2910,0x2110,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x2110,0x212F,0x212F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2910,0x2110,0x2110,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2930,0x210F,0x2930,0x2930,0x2930,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x292F,0x212F,0x212F,0x210F,0x212F,0x2950,0x2130,0x210F,0x2110,0x2130,0x2131,0x2111,0x1911,0x1112,0x1133,0x1154,0x1995,0x21F6,0x21F7,0x21F7,0x1195,0x1133,0x1112,0x1111,0x1931,0x1931,0x2151,0x2131,0x2130,0x2130,0x2110,0x2110,0x2930,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110, + 0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x212F,0x212F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2131,0x1951,0x1932,0x1953,0x1153,0x1174,0x1196,0x19B7,0x19F8,0x19F9,0x11F8,0x11F8,0x11B7,0x1196,0x1154,0x1133,0x1932,0x1911,0x1911,0x2131,0x1931,0x1931,0x1931,0x1132,0x1153,0x1174,0x19B6,0x11B7,0x11D7,0x11F8,0x11F8,0x19F8,0x11B7,0x1196,0x1154,0x1133,0x1932,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1912,0x1912,0x1911,0x1912,0x1932,0x1111,0x1912,0x1932,0x1111,0x1932,0x1931,0x1931,0x1932,0x1911,0x1911,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1912,0x1912,0x1911,0x18F1,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1932,0x1932,0x1911,0x1932,0x1912,0x1912,0x1932,0x1912,0x1912,0x1911,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1911,0x1912,0x1911,0x1912,0x1912,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x18F1,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x18F1,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1932,0x1932,0x1912,0x1933,0x1954,0x1154,0x1196,0x11B7,0x11D8,0x09F9,0x09F9,0x01D9,0x01F9,0x01F9,0x01F9,0x01D9,0x09F8,0x11F8,0x2218,0x1175,0x1112,0x1912,0x1911,0x2130,0x2110,0x2130,0x2110,0x210F,0x292F,0x292F,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x192F,0x1950,0x1150,0x0950,0x014F,0x01D1,0x2BF9,0x1BF9,0x1C19,0x1C3A,0x1BF9,0x2BD9,0x014F,0x00ED,0x114F,0x112F,0x1990,0x114F,0x092F,0x012E,0x3397,0x44BB,0x2C5A,0x2439,0x1C39,0x1C18,0x1C59,0x1C39,0x2439,0x2439,0x347A,0x3C9B,0x4C7B,0x3B98,0x00AE,0x10EF,0x1930,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x212F,0x2930,0x210F,0x2930,0x210F,0x290F,0x290F,0x2110,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1952,0x1133,0x1133,0x1175,0x19B6,0x21F7,0x21F7,0x19B6,0x1974,0x1132,0x1112,0x10F1,0x2131,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2150,0x2130,0x1930,0x1931,0x1112,0x1132,0x1154,0x19D6,0x2217,0x19F7,0x21D6,0x1995,0x1954,0x1933,0x1911,0x1911,0x2131,0x2931,0x2130,0x2110,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x292F,0x290F,0x210F,0x2130,0x2130,0x2110,0x210F,0x2930,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2910,0x2930,0x210F,0x2110,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x2930,0x2110,0x2930,0x290F,0x212F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2930,0x2130,0x2130,0x2110,0x1931,0x1932,0x1932,0x1112,0x19B5,0x21F7,0x21D6,0x1974,0x1112,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x292F,0x210F,0x212F,0x292F,0x292F,0x210F,0x290F,0x28EF,0x28AD,0x202B,0x48ED,0xDD1C,0xDC99,0xDC78,0xDC78,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC57,0xE457,0xDC57,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xDC37,0xE457,0xE457,0xDC58,0xDC99,0xCC78,0xD51C,0x7251,0x1809,0x208C,0x20CE,0x28EF,0x290F,0x2910,0x2110,0x2110,0x2910,0x2930,0x2930,0x2130,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x212F,0x2130,0x2110,0x2110,0x2130,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2910,0x2910,0x2930,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2910,0x290F,0x2910,0x2110,0x2930,0x2910,0x2930,0x2930,0x290F,0x210F,0x2930,0x212F,0x2930,0x212F,0x212F,0x2110,0x2110,0x2930,0x210F,0x2110,0x2930,0x2930,0x210F,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x2110,0x1931,0x1911,0x1112,0x1133,0x21D6,0x2217,0x21F7,0x1996,0x1133,0x1912,0x1931,0x1910,0x2130,0x2130,0x190F,0x190F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x2910,0x2930,0x290F,0x2930,0x290F,0x210F,0x290F,0x2910,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2111,0x2131,0x1932,0x1133,0x1154,0x19D6,0x2238,0x2218,0x21D7,0x1995,0x1953,0x1111,0x10F0,0x1910,0x2131,0x2151,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x1910,0x2111,0x1912,0x1933,0x1996,0x19D7,0x11D8,0x09D9,0x09D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01B9,0x09D9,0x11F8,0x19D6,0x1174,0x1112,0x1911,0x1930,0x2130,0x2950,0x2930,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x2130,0x2110,0x2130,0x210F,0x2110,0x2930,0x2930,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x212F,0x212F,0x2130,0x210F,0x2930,0x210F,0x2110,0x2910,0x2930,0x2910,0x2110,0x2110,0x2110,0x210F,0x290F,0x2930,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x2130,0x2130,0x212F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x290F,0x2930,0x2910,0x2910,0x290F,0x2910,0x2910,0x2930,0x2930,0x210F,0x210F,0x2930,0x2910,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x2930,0x2930,0x2910,0x2910,0x2110,0x2130,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x2110,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x290F,0x290F,0x2930,0x292F,0x290F,0x290F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2950,0x2950,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x2130,0x2110,0x2130,0x2130,0x2131,0x1911,0x1112,0x1133,0x1133,0x1995,0x21F6,0x21F7,0x21F6,0x1995,0x1153,0x1132,0x1111,0x1931,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110, + 0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2930,0x212F,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2110,0x1910,0x1931,0x1931,0x1932,0x1133,0x1154,0x1174,0x1175,0x19B7,0x19F8,0x19F9,0x11F8,0x11F8,0x11B7,0x1195,0x1154,0x1133,0x1932,0x1932,0x1932,0x1931,0x2152,0x1931,0x1932,0x1132,0x1133,0x1154,0x1175,0x11B7,0x19F8,0x11F8,0x11F8,0x19F8,0x11B7,0x1175,0x0933,0x1133,0x1112,0x1911,0x1931,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2131,0x2130,0x2131,0x1910,0x2130,0x2130,0x2130,0x2110,0x2111,0x2131,0x1910,0x2111,0x2111,0x2131,0x2111,0x2111,0x2131,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x1910,0x1910,0x2130,0x1910,0x2131,0x2110,0x2110,0x2110,0x2111,0x2110,0x2110,0x1910,0x2111,0x2110,0x1910,0x2130,0x2110,0x1910,0x2111,0x1910,0x1910,0x2110,0x2110,0x2111,0x2111,0x18F0,0x2111,0x2131,0x2110,0x2110,0x2111,0x1910,0x2111,0x2110,0x2110,0x1910,0x2111,0x2110,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2110,0x2111,0x2110,0x2111,0x2110,0x2111,0x1910,0x2110,0x2110,0x2111,0x2110,0x2110,0x1910,0x2110,0x2131,0x2111,0x1910,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2131,0x1911,0x1911,0x2111,0x1910,0x1910,0x2111,0x1910,0x2131,0x1910,0x2131,0x2110,0x2110,0x1910,0x2111,0x1910,0x2111,0x1911,0x2111,0x1911,0x2111,0x1910,0x2111,0x2110,0x1910,0x1910,0x2110,0x2111,0x2110,0x1910,0x2111,0x2111,0x2111,0x1910,0x2111,0x2110,0x2110,0x1910,0x1910,0x2111,0x1911,0x1910,0x2111,0x1911,0x1911,0x1910,0x2111,0x18F0,0x1931,0x2131,0x1910,0x1910,0x2131,0x1911,0x2111,0x2111,0x1911,0x1910,0x2111,0x2111,0x2131,0x1911,0x2111,0x2111,0x2131,0x1910,0x2131,0x2131,0x2110,0x1910,0x2111,0x2111,0x2110,0x1910,0x2111,0x2110,0x1910,0x1910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x1910,0x1910,0x1910,0x2110,0x1910,0x2110,0x2110,0x2111,0x1910,0x2111,0x2111,0x2110,0x1910,0x2111,0x2111,0x1910,0x1910,0x2111,0x2110,0x2111,0x2110,0x2110,0x2110,0x2130,0x1910,0x2110,0x1910,0x1910,0x2130,0x2130,0x2110,0x2130,0x1910,0x2110,0x2130,0x1910,0x1910,0x2110,0x2110,0x1910,0x1910,0x2110,0x2110,0x1910,0x1910,0x2131,0x1910,0x2130,0x1910,0x2110,0x2110,0x2110,0x1910,0x2110,0x2131,0x1910,0x1910,0x2131,0x2110,0x2131,0x1910,0x1911,0x1931,0x1931,0x1911,0x1932,0x1932,0x1932,0x1912,0x1933,0x1954,0x1175,0x1196,0x11D7,0x11F8,0x09F8,0x09F8,0x0A39,0x0A19,0x1218,0x1218,0x19D7,0x1975,0x1112,0x1111,0x1911,0x1931,0x2130,0x2130,0x2110,0x210F,0x212F,0x212F,0x292F,0x292F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x192F,0x192F,0x112F,0x0950,0x014F,0x01D1,0x2BFA,0x243A,0x1C19,0x1C3A,0x1BF9,0x23B8,0x016F,0x010E,0x112F,0x112F,0x1990,0x196F,0x092E,0x014E,0x2377,0x349B,0x245A,0x1439,0x0C18,0x0C38,0x0C19,0x0C18,0x0BF8,0x13F8,0x1C39,0x2C5A,0x3C5A,0x2B57,0x00EE,0x08EF,0x1930,0x1930,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x210F,0x210F,0x290F,0x2930,0x2110,0x2110,0x2930,0x2930,0x290F,0x290F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1952,0x1133,0x1154,0x1175,0x19B6,0x21F7,0x21F7,0x21D6,0x1975,0x1133,0x10F1,0x1911,0x1910,0x2130,0x2930,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x210F,0x212F,0x2130,0x210F,0x2130,0x2130,0x2131,0x1931,0x1952,0x1133,0x1174,0x19D6,0x19D7,0x21F7,0x19D6,0x1995,0x1154,0x1112,0x1911,0x1911,0x2111,0x2931,0x2931,0x2930,0x2130,0x212F,0x2110,0x2930,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x210F,0x2110,0x210F,0x212F,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x1932,0x1932,0x1112,0x21B5,0x2A17,0x21D6,0x1974,0x10F2,0x1912,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2910,0x2930,0x2930,0x2930,0x2110,0x2930,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x28EF,0x28CE,0x28AD,0x280A,0xABB8,0xD49A,0xDC99,0xE499,0xE478,0xDC57,0xDC37,0xDC57,0xDC37,0xDC37,0xDC57,0xDC37,0xDC57,0xDC36,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC58,0xDC98,0xDCBA,0xDD1C,0x48EC,0x1809,0x28CD,0x312F,0x290F,0x290F,0x2910,0x210F,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2930,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x210F,0x2910,0x2910,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x212F,0x2110,0x210F,0x2930,0x2930,0x2930,0x2930,0x2110,0x2130,0x212F,0x212F,0x212F,0x2930,0x210F,0x2930,0x2930,0x212F,0x210F,0x210F,0x2910,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x2150,0x2130,0x1931,0x1911,0x1132,0x1133,0x21D6,0x21F7,0x21D7,0x1995,0x1133,0x1932,0x1931,0x1931,0x1930,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x210F,0x2130,0x2130,0x210F,0x210F,0x2110,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x292F,0x290F,0x290F,0x292F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1932,0x1133,0x19B6,0x2218,0x19F7,0x19D7,0x1975,0x1133,0x1932,0x1111,0x18F0,0x1910,0x2131,0x2131,0x20F0,0x20EF,0x210F,0x210F,0x210F,0x2950,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2131,0x1911,0x1912,0x1954,0x19B6,0x19D8,0x11F8,0x09B8,0x01D9,0x01B9,0x01D9,0x01B9,0x01B9,0x09D9,0x09D9,0x11D8,0x19D7,0x19B6,0x1153,0x10F1,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x2110,0x210F,0x212F,0x210F,0x210F,0x2930,0x2930,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x212F,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x2130,0x2930,0x2930,0x2910,0x2110,0x2910,0x210F,0x212F,0x212F,0x2930,0x2130,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x2930,0x210F,0x2930,0x2930,0x2930,0x210F,0x290F,0x2930,0x290F,0x210F,0x2930,0x2130,0x2930,0x2110,0x2110,0x210F,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2930,0x290F,0x290F,0x2930,0x2130,0x2110,0x2130,0x2110,0x2910,0x2110,0x2910,0x210F,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2910,0x290F,0x290F,0x210F,0x290F,0x2910,0x290F,0x290F,0x2910,0x210F,0x210F,0x290F,0x2910,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x292F,0x290F,0x292F,0x210F,0x292F,0x2930,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2110,0x1931,0x1911,0x1912,0x1133,0x1154,0x1995,0x21F7,0x2217,0x19D6,0x1195,0x1133,0x1112,0x1132,0x1931,0x2152,0x2151,0x2151,0x2131,0x2131,0x1910,0x2110,0x2110,0x2110,0x2110,0x2131,0x2110,0x2130,0x2130,0x2131,0x2131,0x2131,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x1910,0x2131,0x1910,0x1931,0x2131,0x2131,0x1910,0x2111,0x2131, + 0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2110,0x1930,0x1931,0x1932,0x1952,0x1953,0x1133,0x1155,0x1196,0x11D7,0x19F8,0x11F8,0x19F9,0x19F8,0x11B7,0x1175,0x1154,0x1153,0x1932,0x1932,0x1931,0x1931,0x2152,0x1952,0x1932,0x1132,0x1112,0x1154,0x1196,0x11B6,0x19D8,0x11F8,0x11F8,0x11F8,0x11B7,0x1175,0x1154,0x0912,0x1132,0x1932,0x1931,0x1931,0x2110,0x2111,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2131,0x2111,0x2111,0x2111,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x1911,0x2131,0x2131,0x1912,0x1912,0x1953,0x1174,0x1195,0x19D7,0x11D7,0x11F7,0x1A18,0x1A18,0x1A17,0x19D6,0x1174,0x1133,0x1111,0x1911,0x1910,0x2130,0x2130,0x2110,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x190F,0x192F,0x192F,0x1150,0x0970,0x014F,0x01D1,0x2BFA,0x241A,0x1C3A,0x1C19,0x1BF9,0x23B8,0x014F,0x00ED,0x114F,0x114F,0x1970,0x114F,0x090E,0x014E,0x2376,0x2C7A,0x1419,0x1439,0x0C38,0x0C38,0x0C39,0x0418,0x0C18,0x0C19,0x1C19,0x243A,0x345A,0x2357,0x00EE,0x090F,0x1930,0x1950,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x210F,0x292F,0x290F,0x2930,0x2930,0x2110,0x2930,0x290F,0x2930,0x2930,0x2930,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x1154,0x1175,0x19D6,0x21F7,0x21F7,0x21F6,0x1974,0x1133,0x1111,0x1931,0x2131,0x2131,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x212F,0x2130,0x210F,0x210F,0x2130,0x2130,0x2131,0x2172,0x1952,0x1132,0x0933,0x1174,0x19B6,0x19D6,0x2217,0x19D6,0x1995,0x1154,0x1112,0x1911,0x2111,0x2131,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x210F,0x2130,0x212F,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2110,0x2110,0x210F,0x210F,0x290F,0x210F,0x2910,0x290F,0x2930,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2910,0x2910,0x210F,0x2930,0x2910,0x2110,0x2130,0x210F,0x210F,0x2930,0x292F,0x290F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1932,0x1112,0x21B5,0x2A17,0x21D6,0x1974,0x1112,0x1932,0x2132,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2110,0x2930,0x2930,0x212F,0x292F,0x292F,0x212F,0x212F,0x210F,0x290F,0x28EF,0x28CE,0x286C,0x512E,0xD4BB,0xD499,0xDC99,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xDC57,0xDC36,0xDC57,0xDC57,0xDC36,0xDC37,0xE457,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC37,0xDC37,0xE457,0xE457,0xDC57,0xDC78,0xDCB9,0xD4DB,0x61AF,0x2009,0x30EE,0x290E,0x28EF,0x290F,0x20EF,0x2910,0x2910,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x2930,0x2110,0x210F,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x2930,0x210F,0x210F,0x2930,0x290F,0x2930,0x212F,0x212F,0x210F,0x290F,0x2930,0x290F,0x2910,0x2930,0x2110,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x2930,0x290F,0x2930,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1932,0x1132,0x1133,0x19B6,0x29F7,0x21D7,0x21B6,0x1113,0x1932,0x1931,0x1931,0x2130,0x2150,0x190F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x2130,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x210F,0x2930,0x2930,0x210F,0x2930,0x290F,0x2910,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x290F,0x292F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2131,0x1932,0x1132,0x1174,0x21F7,0x2218,0x19F7,0x19B6,0x1133,0x10F2,0x1111,0x1911,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2111,0x1911,0x1912,0x1933,0x1995,0x19D7,0x11D7,0x09D8,0x09D9,0x01B8,0x01D9,0x01B9,0x01B9,0x09D8,0x09D8,0x11B7,0x19B6,0x1995,0x1132,0x1911,0x1911,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x2930,0x2130,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x210F,0x2910,0x210F,0x2930,0x212F,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2930,0x2930,0x2110,0x2930,0x290F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x212F,0x2930,0x2110,0x210F,0x210F,0x210F,0x2110,0x2930,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x212F,0x2930,0x212F,0x2930,0x212F,0x212F,0x2930,0x210F,0x290F,0x210F,0x290F,0x212F,0x212F,0x2930,0x212F,0x210F,0x210F,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x290F,0x210F,0x2130,0x212F,0x212F,0x2130,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2110,0x2930,0x2910,0x2930,0x2910,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x210F,0x290F,0x290F,0x20EF,0x2910,0x290F,0x290F,0x2930,0x2910,0x290F,0x290F,0x290F,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x290F,0x292F,0x290F,0x210F,0x2930,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2131,0x1911,0x1932,0x1113,0x1154,0x1995,0x21F7,0x2217,0x21F6,0x1975,0x1133,0x1112,0x1111,0x1932,0x1952,0x2152,0x2151,0x2151,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2111,0x2131,0x2111,0x2131,0x2111,0x2111,0x2131,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1931,0x1931,0x1911,0x1911, + 0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x2930,0x2130,0x2130,0x210F,0x2110,0x2910,0x2910,0x2930,0x292F,0x290F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2150,0x1930,0x1931,0x1932,0x1953,0x1133,0x1133,0x1155,0x1196,0x11D7,0x11D8,0x19F9,0x19F9,0x11F8,0x19D7,0x1175,0x1154,0x1133,0x1112,0x1932,0x1931,0x1931,0x2152,0x2132,0x1932,0x1112,0x1133,0x1154,0x1175,0x1196,0x11D7,0x19F8,0x11F8,0x11D8,0x19D7,0x1196,0x1195,0x0933,0x1112,0x1932,0x2152,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x1930,0x1930,0x1930,0x2130,0x2130,0x1910,0x2130,0x2110,0x2111,0x2111,0x2110,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2110,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2110,0x2110,0x2130,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x2110,0x2131,0x2111,0x1911,0x1932,0x1933,0x1974,0x1974,0x1974,0x1174,0x1995,0x1974,0x1133,0x1132,0x1112,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x292F,0x292F,0x292F,0x2930,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2150,0x1950,0x1950,0x1170,0x012F,0x01D1,0x2BF9,0x243A,0x245A,0x1C3A,0x1BF9,0x2398,0x014F,0x010E,0x112F,0x112F,0x1970,0x1970,0x090E,0x014F,0x23B7,0x247A,0x0C18,0x0C39,0x0418,0x0418,0x0C59,0x0C39,0x0418,0x0C18,0x13F8,0x1C19,0x2C39,0x2B77,0x00EE,0x090F,0x1950,0x1950,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x212F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x290F,0x212F,0x2130,0x2930,0x2130,0x212F,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1132,0x1154,0x1174,0x19D6,0x2217,0x21F7,0x19D6,0x1994,0x1112,0x1111,0x1911,0x2151,0x2151,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2110,0x210F,0x2110,0x2130,0x2130,0x2130,0x2151,0x1931,0x1931,0x1112,0x1133,0x1174,0x19B5,0x2217,0x21F7,0x19D6,0x1995,0x1153,0x1112,0x1932,0x2131,0x2131,0x2130,0x2930,0x2930,0x2930,0x2930,0x2130,0x210F,0x212F,0x212F,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2930,0x2930,0x210F,0x292F,0x2930,0x2930,0x2930,0x2910,0x210F,0x2110,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2131,0x1932,0x1932,0x1112,0x21B5,0x2A17,0x21F6,0x1974,0x1112,0x1932,0x2152,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2110,0x212F,0x212F,0x292F,0x292F,0x212F,0x292F,0x210F,0x28EF,0x28AD,0x180A,0xA397,0xDCDB,0xDCDA,0xE499,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xDC36,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC37,0xE477,0xE457,0xDC58,0xDC99,0xDCBA,0xD4FB,0x306B,0x206B,0x20AD,0x28EE,0x290F,0x2910,0x2910,0x2110,0x2110,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2930,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2930,0x290F,0x290F,0x290F,0x2910,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x2910,0x2910,0x290F,0x2930,0x210F,0x2930,0x212F,0x212F,0x212F,0x2930,0x212F,0x2930,0x2930,0x2930,0x210F,0x2930,0x2950,0x2930,0x210F,0x2130,0x2130,0x2130,0x1930,0x1931,0x1932,0x1133,0x1133,0x19B6,0x21F7,0x21D7,0x1996,0x1133,0x1112,0x1952,0x1931,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2130,0x2930,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x2910,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2910,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2111,0x1912,0x1133,0x21D6,0x2238,0x19F7,0x19D6,0x0954,0x1112,0x1111,0x1911,0x1910,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x2130,0x2930,0x210F,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1911,0x1912,0x1933,0x1954,0x19B6,0x19F7,0x11D7,0x09D8,0x09D8,0x09F8,0x09D8,0x09D8,0x11D7,0x11F7,0x11B6,0x1995,0x2194,0x1953,0x1931,0x1931,0x2130,0x2150,0x2150,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2930,0x290F,0x292F,0x292F,0x292F,0x2930,0x212F,0x210F,0x212F,0x292F,0x292F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x2930,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x292F,0x292F,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x2910,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x212F,0x2930,0x212F,0x210F,0x2930,0x212F,0x210F,0x210F,0x2910,0x290F,0x290F,0x210F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2110,0x210F,0x2130,0x212F,0x2130,0x2930,0x290F,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2110,0x2110,0x212F,0x212F,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x2950,0x2130,0x2130,0x2110,0x2110,0x1911,0x1111,0x1112,0x1154,0x1996,0x21F7,0x2217,0x19D6,0x1975,0x1133,0x1112,0x1131,0x1931,0x1931,0x1931,0x2152,0x2151,0x1951,0x1931,0x1951,0x1931,0x1931,0x1932,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1912,0x1912,0x1911,0x1911,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1111,0x1911,0x1912,0x1912,0x1111,0x1932,0x1932,0x1912, + 0x212F,0x210F,0x2930,0x2930,0x210F,0x212F,0x2930,0x2130,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2930,0x2910,0x210F,0x2930,0x2930,0x290F,0x212F,0x292F,0x212F,0x2150,0x2150,0x1930,0x1931,0x1931,0x1932,0x1932,0x1133,0x1154,0x1175,0x11B6,0x11D7,0x11F8,0x19F9,0x1A19,0x11D8,0x11B7,0x1176,0x1154,0x1133,0x1132,0x1932,0x1931,0x2131,0x2131,0x1931,0x1932,0x1112,0x1133,0x1154,0x1175,0x1196,0x11D7,0x19F8,0x1A19,0x11F8,0x11D7,0x11D7,0x1175,0x0933,0x0912,0x1132,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1951,0x1951,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2111,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2150,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x210F,0x2110,0x2130,0x210F,0x2110,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2110,0x210F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x210F,0x210F,0x2110,0x210F,0x210F,0x2110,0x2110,0x2130,0x210F,0x2110,0x2130,0x2110,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2111,0x2131,0x2131,0x1931,0x1932,0x1932,0x1932,0x1932,0x1112,0x1111,0x1911,0x1911,0x1911,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2150,0x2150,0x194F,0x114F,0x0950,0x012F,0x01D1,0x2BD9,0x2419,0x1C39,0x2439,0x1C19,0x2398,0x014F,0x00EE,0x194F,0x110E,0x194F,0x1970,0x090E,0x012E,0x2BD8,0x1C39,0x0C18,0x0418,0x0418,0x0439,0x0418,0x03F8,0x0418,0x0C19,0x1439,0x1C19,0x2C5A,0x2357,0x010F,0x090F,0x1150,0x1950,0x1930,0x2130,0x212F,0x212F,0x292F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x290F,0x212F,0x210F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x210F,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2151,0x1952,0x1133,0x1154,0x1175,0x19D6,0x2217,0x2217,0x21F6,0x1974,0x1132,0x1111,0x1911,0x2131,0x2151,0x2130,0x2950,0x2130,0x212F,0x292F,0x210F,0x290F,0x2930,0x2110,0x2130,0x2130,0x2130,0x2150,0x2110,0x2130,0x1930,0x1911,0x1111,0x1132,0x1132,0x1974,0x19D6,0x21F7,0x21F7,0x19B6,0x1995,0x1133,0x1112,0x1911,0x2131,0x2130,0x2110,0x2930,0x2110,0x2930,0x2130,0x212F,0x2130,0x2930,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2910,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x2930,0x292F,0x2930,0x2930,0x210F,0x2930,0x2110,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2131,0x1932,0x1932,0x1112,0x21B5,0x2A17,0x21D6,0x1994,0x1112,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x210F,0x212F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2930,0x292F,0x212F,0x292F,0x292F,0x212F,0x292F,0x290F,0x28EE,0x288C,0x388C,0xD4FC,0xDCDA,0xDCB9,0xE498,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC36,0xDC57,0xDC57,0xDC37,0xDC36,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xE457,0xDC36,0xDC37,0xE457,0xE457,0xDC58,0xDC78,0xDCB9,0xE55D,0x6A11,0x200A,0x28AD,0x28EE,0x290F,0x2910,0x210F,0x210F,0x2110,0x2930,0x210F,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2910,0x2110,0x2930,0x210F,0x290F,0x290F,0x210F,0x2910,0x210F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x210F,0x2930,0x212F,0x2930,0x212F,0x212F,0x2930,0x2110,0x210F,0x210F,0x290F,0x2930,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x1930,0x1952,0x1132,0x1133,0x19B6,0x21D7,0x21D7,0x19B6,0x1113,0x1112,0x1932,0x1931,0x2130,0x2130,0x190F,0x210F,0x210F,0x2930,0x212F,0x212F,0x2110,0x2130,0x2110,0x2110,0x210F,0x2110,0x210F,0x2130,0x210F,0x210F,0x212F,0x292F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2930,0x212F,0x2930,0x2130,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x1932,0x1153,0x2217,0x1A17,0x2218,0x1195,0x0913,0x1112,0x1911,0x1931,0x1910,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2930,0x210F,0x2110,0x2930,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2131,0x2110,0x2111,0x1911,0x1912,0x1133,0x1174,0x1995,0x11B6,0x19F7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D6,0x19B5,0x1994,0x1973,0x1952,0x1931,0x2151,0x2151,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2930,0x212F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x292F,0x2930,0x2930,0x210F,0x290F,0x210F,0x210F,0x2930,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x212F,0x210F,0x2930,0x210F,0x290F,0x292F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2910,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x212F,0x212F,0x212F,0x2930,0x212F,0x2930,0x290F,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x2910,0x290F,0x210F,0x2930,0x290F,0x210F,0x2930,0x2930,0x210F,0x290F,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2150,0x2150,0x2130,0x2130,0x2130,0x1911,0x1911,0x1112,0x1133,0x1995,0x21F7,0x21F7,0x21F7,0x1995,0x1133,0x1112,0x1111,0x1932,0x1931,0x1951,0x1931,0x1931,0x1931,0x1931,0x1931,0x1952,0x1952,0x1132,0x1932,0x1932,0x1932,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1133,0x1133,0x1112,0x1133,0x1132,0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132, + 0x290F,0x210F,0x210F,0x2110,0x2930,0x2930,0x210F,0x210F,0x212F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x290F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2150,0x2150,0x2130,0x1931,0x1931,0x1932,0x1933,0x1113,0x1154,0x1175,0x1196,0x11D7,0x19F9,0x19F9,0x19F9,0x19F8,0x1197,0x1175,0x1154,0x1133,0x1111,0x1931,0x1910,0x2131,0x2131,0x2131,0x1931,0x1932,0x1953,0x1154,0x1196,0x19B7,0x11D7,0x11D7,0x19F8,0x11F8,0x11B7,0x11B6,0x0975,0x0934,0x00F2,0x08F2,0x1112,0x1112,0x1111,0x1111,0x1112,0x1111,0x1131,0x1111,0x1111,0x1111,0x1131,0x1111,0x1111,0x1111,0x10F1,0x10F1,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1930,0x1930,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2110,0x2110,0x2130,0x2130,0x2930,0x210F,0x2130,0x2110,0x2110,0x210F,0x2110,0x2910,0x210F,0x210F,0x2930,0x2930,0x2130,0x210F,0x210F,0x2110,0x2930,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2110,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x210F,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2131,0x2131,0x2131,0x1931,0x1911,0x1911,0x1911,0x2131,0x1931,0x1910,0x1910,0x2130,0x2130,0x2130,0x2130,0x2950,0x212F,0x210F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x214F,0x192F,0x114F,0x1150,0x012F,0x01B1,0x2BD9,0x241A,0x245A,0x1C19,0x1C19,0x23B8,0x016F,0x010E,0x194F,0x194F,0x194F,0x194F,0x092F,0x012F,0x2BF8,0x247A,0x1439,0x0C39,0x0418,0x0438,0x0418,0x0418,0x0418,0x0418,0x1439,0x1C39,0x2C39,0x2B97,0x010F,0x0930,0x1150,0x1930,0x192F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x290F,0x290F,0x2930,0x2930,0x2910,0x290F,0x290F,0x290F,0x2930,0x292F,0x292F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2151,0x2172,0x1932,0x1132,0x1133,0x1174,0x19F7,0x2217,0x2217,0x21F6,0x1974,0x1133,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x1930,0x1931,0x1911,0x1112,0x1133,0x1154,0x19D6,0x2217,0x19D7,0x21F7,0x1174,0x1112,0x1912,0x1911,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x2110,0x290F,0x290F,0x2930,0x2110,0x2930,0x2930,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2930,0x212F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x210F,0x210F,0x2910,0x2110,0x2930,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2132,0x1952,0x1112,0x21B5,0x2A17,0x21D6,0x1174,0x1112,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2910,0x2910,0x290F,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x30EE,0x284B,0x8AF4,0xDD1B,0xDCB9,0xDCB9,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC36,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xDC37,0xDC37,0xDC57,0xE457,0xDC58,0xDC78,0xDC99,0xE55C,0xB459,0x284A,0x28CD,0x28EE,0x290F,0x290F,0x290F,0x2910,0x2110,0x2930,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2910,0x2910,0x2110,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x2110,0x2930,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x2110,0x2930,0x2910,0x290F,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x212F,0x212F,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x2930,0x2930,0x212F,0x210F,0x2130,0x2150,0x2130,0x2151,0x1931,0x1131,0x1132,0x1133,0x19B6,0x21F8,0x21F7,0x19B6,0x0913,0x10F2,0x1932,0x2151,0x2130,0x2130,0x210F,0x210F,0x212F,0x2930,0x210F,0x2130,0x2130,0x2110,0x210F,0x2110,0x2110,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x212F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x2930,0x2130,0x2130,0x2930,0x2130,0x2110,0x2111,0x1911,0x1112,0x19B5,0x2238,0x2218,0x19F7,0x0913,0x08F2,0x1112,0x1931,0x2151,0x2131,0x2130,0x2110,0x210F,0x2110,0x2110,0x2930,0x2930,0x2110,0x2930,0x2950,0x2930,0x2110,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x2111,0x1931,0x1932,0x1112,0x1153,0x1974,0x1195,0x1175,0x1195,0x1195,0x1154,0x1154,0x1953,0x1112,0x1111,0x1911,0x1910,0x2131,0x1930,0x2130,0x210F,0x210F,0x2130,0x2150,0x2150,0x2130,0x2150,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2930,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x210F,0x2130,0x2130,0x2930,0x2930,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x210F,0x210F,0x2130,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x290F,0x292F,0x292F,0x212F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2930,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x290F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2150,0x2130,0x2131,0x1911,0x1931,0x1932,0x1133,0x1995,0x19D6,0x21F7,0x21F7,0x1995,0x1112,0x1112,0x1111,0x1931,0x2152,0x2172,0x1931,0x1111,0x1111,0x1111,0x1132,0x1152,0x1153,0x1173,0x1153,0x1153,0x1153,0x1153,0x1173,0x1174,0x1154,0x1974,0x1954,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1994,0x1974,0x1974,0x1995,0x1994,0x1994,0x1995,0x1994,0x1994,0x1994,0x1994, + 0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x292F,0x212F,0x292F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2131,0x2111,0x1931,0x1932,0x1932,0x1133,0x1153,0x1175,0x11B6,0x11B7,0x19F9,0x19F9,0x11F9,0x11F8,0x11B7,0x1175,0x1154,0x1153,0x1931,0x1931,0x1931,0x2131,0x2131,0x1931,0x1932,0x1932,0x1953,0x1175,0x1996,0x1196,0x11D7,0x11D8,0x11D8,0x11D8,0x11D7,0x11D7,0x11B6,0x0975,0x0954,0x1154,0x1154,0x1153,0x0953,0x0953,0x0933,0x0953,0x0933,0x0932,0x0932,0x0932,0x0932,0x0912,0x1133,0x1133,0x1112,0x1112,0x1132,0x1132,0x0912,0x1132,0x1112,0x0932,0x0912,0x1112,0x1112,0x0911,0x1112,0x1112,0x1111,0x1111,0x1931,0x1911,0x1931,0x2130,0x2130,0x2130,0x2930,0x2130,0x2930,0x210F,0x210F,0x210F,0x2110,0x2930,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x2930,0x2930,0x212F,0x210F,0x2930,0x292F,0x212F,0x212F,0x2110,0x2930,0x290F,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x212F,0x2930,0x2110,0x2930,0x212F,0x210F,0x2930,0x2110,0x2930,0x2930,0x2930,0x212F,0x212F,0x292F,0x292F,0x290F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x210F,0x212F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2110,0x2130,0x2130,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x2110,0x2110,0x210F,0x2110,0x2930,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x1910,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x214F,0x194F,0x1950,0x1150,0x012F,0x01B1,0x2BD9,0x2419,0x1C39,0x1C3A,0x2419,0x23B8,0x014F,0x00EE,0x194F,0x192F,0x192F,0x1950,0x092F,0x012F,0x2BD8,0x247A,0x1459,0x0C39,0x0418,0x0418,0x0418,0x0439,0x0439,0x0C19,0x0C18,0x1419,0x2C3A,0x2357,0x010E,0x092F,0x1150,0x1930,0x1930,0x2130,0x212F,0x212F,0x210F,0x292F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2130,0x2130,0x2151,0x1931,0x1132,0x1133,0x1154,0x1195,0x21F7,0x2217,0x2217,0x21F6,0x1974,0x1133,0x1112,0x1931,0x1931,0x2130,0x2130,0x2130,0x210F,0x290F,0x2930,0x2130,0x2130,0x2110,0x2930,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2131,0x1931,0x1911,0x1112,0x1133,0x1175,0x19D7,0x19F7,0x19F7,0x19B6,0x1133,0x1932,0x1932,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x2110,0x292F,0x290F,0x2110,0x2110,0x2930,0x2930,0x210F,0x2910,0x2910,0x290F,0x290F,0x210F,0x2930,0x290F,0x2910,0x2910,0x2930,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2110,0x2110,0x210F,0x212F,0x292F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2130,0x2131,0x2131,0x1932,0x1932,0x1112,0x1995,0x2A17,0x21D6,0x1974,0x1112,0x1932,0x2152,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x290F,0x290F,0x292F,0x212F,0x292F,0x292F,0x292F,0x290F,0x28EE,0x30EE,0x308B,0xC47A,0xDCDA,0xDCB9,0xDC78,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xDC36,0xDC37,0xDC57,0xDC37,0xDC37,0xDC57,0xDC37,0xDC37,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xDC37,0xDC57,0xDC37,0xE458,0xDC58,0xDC78,0xDC99,0xE51C,0xCCBB,0x40ED,0x28AC,0x20AD,0x28EF,0x290F,0x290F,0x210F,0x2930,0x2910,0x2110,0x212F,0x2930,0x212F,0x2930,0x212F,0x2930,0x2930,0x212F,0x212F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2910,0x2930,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x2110,0x2110,0x210F,0x210F,0x2930,0x290F,0x2910,0x290F,0x210F,0x2930,0x292F,0x290F,0x212F,0x210F,0x210F,0x2930,0x2930,0x212F,0x2930,0x2910,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1932,0x1132,0x1134,0x1996,0x21F8,0x21D8,0x19B7,0x0913,0x10F2,0x1932,0x2151,0x2131,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x210F,0x212F,0x212F,0x2930,0x210F,0x212F,0x2930,0x290F,0x210F,0x292F,0x2930,0x2910,0x2930,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x2930,0x212F,0x2130,0x2110,0x2130,0x2110,0x2110,0x2111,0x10F1,0x19B5,0x2238,0x1A18,0x19D6,0x0913,0x10F1,0x1931,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x2950,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x1911,0x1931,0x1931,0x1932,0x1132,0x1133,0x1133,0x1133,0x1933,0x1132,0x1111,0x1931,0x1931,0x1930,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x290F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2930,0x2110,0x2130,0x2930,0x210F,0x210F,0x212F,0x2130,0x210F,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x292F,0x210F,0x212F,0x2930,0x2930,0x290F,0x210F,0x2110,0x210F,0x2130,0x2130,0x212F,0x210F,0x2130,0x2150,0x2150,0x2130,0x2130,0x2130,0x2131,0x1911,0x1911,0x1932,0x1153,0x1995,0x21F6,0x21F7,0x21F7,0x1175,0x1133,0x1112,0x1111,0x1931,0x1952,0x2152,0x1931,0x1911,0x1131,0x1111,0x1132,0x1973,0x21D5,0x21F6,0x21F6,0x2216,0x2A17,0x2A17,0x2A37,0x2A57,0x2A37,0x3237,0x3237,0x2A17,0x3237,0x2A17,0x3237,0x3237,0x2A37,0x3237,0x2A37,0x3237,0x2A37,0x2A37,0x2A17,0x2A17,0x2A16,0x2A16,0x21F6,0x29D6,0x29D6, + 0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2130,0x212F,0x212F,0x2130,0x2130,0x2110,0x2930,0x2910,0x2110,0x2110,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2111,0x2131,0x1932,0x1912,0x1132,0x1153,0x1175,0x11B6,0x11B8,0x11F9,0x1219,0x1219,0x11F8,0x11B7,0x1175,0x1174,0x1132,0x1131,0x1931,0x1931,0x2131,0x2131,0x1911,0x1932,0x1932,0x1133,0x1154,0x1155,0x1196,0x11B7,0x11F8,0x11F8,0x11F8,0x09D7,0x11D7,0x11F7,0x11D7,0x19F7,0x19F7,0x19F7,0x19F7,0x11F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x1A17,0x1A17,0x19F7,0x19F7,0x19D7,0x19D7,0x19D7,0x19F7,0x19D7,0x19D7,0x19D7,0x19F6,0x11D6,0x19D6,0x19D6,0x19D6,0x11D6,0x19D6,0x11B5,0x1174,0x1153,0x1952,0x1911,0x1911,0x1911,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x212F,0x2130,0x212F,0x2130,0x210F,0x212F,0x210F,0x210F,0x212F,0x2130,0x212F,0x2130,0x2130,0x210F,0x2110,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x212F,0x210F,0x210F,0x2130,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2130,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x210F,0x2130,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2910,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2150,0x212F,0x2150,0x212F,0x212F,0x212F,0x2130,0x2150,0x212F,0x212F,0x212F,0x194F,0x1950,0x1170,0x012F,0x01D2,0x2BF9,0x2419,0x1C39,0x243A,0x243A,0x23B8,0x012F,0x00EE,0x1950,0x110F,0x194F,0x1950,0x092F,0x012E,0x2BD8,0x1C39,0x0C19,0x0418,0x0438,0x0418,0x0418,0x0439,0x0418,0x0C19,0x0BF8,0x1419,0x2C5A,0x1B36,0x010F,0x092F,0x1130,0x1930,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x290F,0x290F,0x290F,0x2930,0x292F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1952,0x1952,0x1133,0x1153,0x1174,0x19D6,0x2217,0x21F7,0x19D6,0x1174,0x1133,0x1112,0x1912,0x1931,0x2130,0x2130,0x210F,0x2110,0x2930,0x20EF,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2151,0x2151,0x1931,0x1932,0x1132,0x1154,0x1175,0x19F7,0x19F8,0x19D7,0x1154,0x1112,0x1932,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x2930,0x290F,0x2930,0x2930,0x290F,0x2910,0x210F,0x2110,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x290F,0x2930,0x210F,0x210F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x210F,0x290F,0x2910,0x2110,0x2930,0x2110,0x2910,0x290F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2131,0x2131,0x2132,0x1932,0x1112,0x1995,0x29F7,0x21D6,0x1954,0x10F2,0x1912,0x2152,0x2151,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x212F,0x2930,0x2930,0x2110,0x2910,0x2910,0x2910,0x2930,0x292F,0x292F,0x290F,0x290F,0x290F,0x290E,0x28CE,0x206B,0x59AF,0xDD1B,0xDCDA,0xDCB9,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC37,0xDC37,0xDC36,0xDC37,0xDC37,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC37,0xDC37,0xDC58,0xDC58,0xDC78,0xD499,0xCC9A,0x512D,0x412E,0x20AD,0x28EE,0x20EF,0x290F,0x2910,0x210F,0x2930,0x2910,0x210F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2910,0x2930,0x210F,0x2930,0x290F,0x210F,0x212F,0x2930,0x210F,0x2910,0x2930,0x2930,0x2930,0x2930,0x292F,0x2950,0x210F,0x210F,0x210F,0x210F,0x2950,0x2150,0x2130,0x2130,0x1931,0x1932,0x1133,0x1134,0x19B7,0x21F8,0x19F8,0x19B7,0x0914,0x1112,0x1112,0x1931,0x2151,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x2930,0x212F,0x2930,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2910,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x2910,0x2910,0x2930,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2111,0x1911,0x1112,0x19B5,0x1A18,0x1A18,0x19B6,0x08F2,0x1111,0x1931,0x2131,0x2130,0x2110,0x2130,0x2930,0x2110,0x2930,0x2130,0x2130,0x2130,0x2930,0x2110,0x2930,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x1910,0x1931,0x1952,0x1952,0x1932,0x1932,0x1912,0x1932,0x2152,0x1951,0x1931,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2150,0x192F,0x2150,0x2150,0x2150,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x214F,0x214F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x192F,0x212F,0x212F,0x212F,0x214F,0x214F,0x212F,0x212F,0x214F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x292F,0x212F,0x210F,0x212F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x290F,0x210F,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2110,0x2130,0x2110,0x2131,0x2110,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2930,0x212F,0x212F,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x2130,0x210F,0x212F,0x2930,0x2130,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x2950,0x2150,0x2130,0x2130,0x1910,0x1911,0x1931,0x1952,0x1153,0x1995,0x21F6,0x2217,0x21F6,0x1995,0x1153,0x1112,0x1111,0x1931,0x1951,0x1952,0x1931,0x1111,0x1112,0x1112,0x1974,0x21D5,0x21F6,0x21F6,0x2217,0x2A37,0x21F7,0x21F7,0x2217,0x2A17,0x2A37,0x2A37,0x2A37,0x2A37,0x2A17,0x21F6,0x21F6,0x21F6,0x29F6,0x29F6,0x29F6,0x29F6,0x2A16,0x2A16,0x2A16,0x29F6,0x2A16,0x29F6,0x21F6,0x21D6,0x21D6,0x21D6, + 0x2910,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2110,0x2131,0x2111,0x1911,0x1932,0x1132,0x1154,0x1175,0x0996,0x11D8,0x1A19,0x1219,0x1A19,0x11F8,0x11B7,0x1195,0x1154,0x1132,0x1932,0x1911,0x1931,0x1931,0x1931,0x1931,0x1911,0x1912,0x1133,0x1154,0x1995,0x1196,0x19D7,0x11D7,0x11D8,0x11D8,0x11F8,0x11F8,0x1218,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11D8,0x11F8,0x11F8,0x11F8,0x11D8,0x11F8,0x11F8,0x11F8,0x11D8,0x1218,0x1218,0x1218,0x11F8,0x1218,0x1A18,0x1A18,0x1A18,0x19F7,0x11B5,0x1154,0x1133,0x1112,0x1931,0x2111,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2930,0x2910,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x212F,0x212F,0x210F,0x2110,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x212F,0x210F,0x2110,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2930,0x210F,0x210F,0x2130,0x210F,0x2130,0x212F,0x2130,0x210F,0x212F,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2930,0x212F,0x2130,0x212F,0x212F,0x212F,0x2930,0x210F,0x2910,0x2110,0x2910,0x2910,0x2910,0x2930,0x212F,0x2110,0x2110,0x2110,0x210F,0x2930,0x290F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x2130,0x212F,0x192F,0x2150,0x194F,0x192F,0x192F,0x192F,0x2150,0x2150,0x212F,0x212F,0x212F,0x212F,0x194F,0x114F,0x1170,0x012F,0x01D1,0x2BD9,0x241A,0x245A,0x1C39,0x1BF9,0x2398,0x014F,0x00CD,0x1950,0x194F,0x194F,0x112F,0x092F,0x010E,0x2BD8,0x1C19,0x0C18,0x0C39,0x0418,0x0439,0x0439,0x0419,0x0419,0x0C19,0x1439,0x1C39,0x347B,0x1AF5,0x010F,0x092F,0x1150,0x1930,0x2130,0x2130,0x212F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2910,0x2910,0x2110,0x2930,0x2110,0x2910,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x212F,0x292F,0x210F,0x292F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2110,0x2131,0x2151,0x2152,0x1932,0x1132,0x1133,0x1175,0x19D6,0x2217,0x2218,0x19D6,0x1154,0x1153,0x1112,0x1911,0x1931,0x2131,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x2130,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1132,0x1133,0x0934,0x19B6,0x19F8,0x19F7,0x19B5,0x1132,0x1932,0x1932,0x2131,0x2110,0x2930,0x2110,0x2110,0x2930,0x2930,0x210F,0x212F,0x212F,0x290F,0x210F,0x290F,0x2910,0x210F,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x2930,0x290F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2930,0x2910,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2132,0x1932,0x1112,0x21B5,0x21F6,0x21D6,0x1995,0x10F2,0x1912,0x2152,0x2151,0x2130,0x2110,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x2930,0x290F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x28EE,0x28CE,0x202A,0xA3B6,0xD4DA,0xDC99,0xDC98,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC58,0xDC99,0xDC99,0xCC59,0x48EC,0x38ED,0x28AD,0x28CE,0x20EE,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x2910,0x2930,0x2110,0x2110,0x2910,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x2910,0x2910,0x210F,0x210F,0x290F,0x2930,0x2930,0x210F,0x2930,0x2930,0x212F,0x2930,0x2930,0x210F,0x2950,0x2930,0x212F,0x212F,0x210F,0x212F,0x2950,0x2150,0x2130,0x2151,0x1931,0x1932,0x1133,0x0934,0x19B7,0x19F8,0x19D8,0x19D7,0x1155,0x0913,0x1132,0x1952,0x2151,0x2130,0x2130,0x2130,0x210F,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x210F,0x2930,0x210F,0x212F,0x210F,0x210F,0x2930,0x2910,0x212F,0x212F,0x2930,0x290F,0x290F,0x2930,0x210F,0x2930,0x290F,0x210F,0x2930,0x2930,0x210F,0x290F,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x210F,0x2910,0x210F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x1911,0x1112,0x19D6,0x1A18,0x19F7,0x11B6,0x0912,0x1111,0x2131,0x2131,0x2130,0x210F,0x2130,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2950,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x1930,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2151,0x2150,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x1930,0x1930,0x1950,0x2150,0x2150,0x192F,0x1950,0x2150,0x192F,0x2150,0x2130,0x212F,0x212F,0x212F,0x2150,0x212F,0x2150,0x212F,0x214F,0x214F,0x212F,0x212F,0x2130,0x2150,0x2130,0x2130,0x2130,0x1930,0x1930,0x1930,0x192F,0x192F,0x192F,0x2150,0x214F,0x212F,0x212F,0x2150,0x194F,0x1950,0x192F,0x2150,0x192F,0x1930,0x1930,0x1930,0x192F,0x1930,0x2130,0x212F,0x212F,0x2130,0x212F,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x1930,0x1930,0x2130,0x1930,0x1930,0x1930,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x1911,0x1932,0x1931,0x1931,0x1932,0x1931,0x2131,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x210F,0x2110,0x2910,0x210F,0x210F,0x2110,0x2130,0x2130,0x210F,0x210F,0x2110,0x2910,0x290F,0x290F,0x210F,0x2910,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x2130,0x2150,0x1910,0x1910,0x1911,0x1932,0x1132,0x1153,0x1194,0x19D6,0x2217,0x2217,0x1995,0x1153,0x1112,0x1111,0x1131,0x1931,0x1952,0x1952,0x1111,0x1111,0x1132,0x1974,0x21D6,0x21F6,0x21F7,0x21F7,0x21D6,0x21D6,0x21D6,0x21D6,0x19B5,0x21B5,0x1995,0x1995,0x1995,0x1974,0x1994,0x1994,0x1974,0x1994,0x1994,0x1974,0x1974,0x2194,0x1974,0x1994,0x1994,0x1994,0x1994,0x2195,0x1974,0x1974,0x1974,0x1974, + 0x290F,0x290F,0x210F,0x210F,0x292F,0x290F,0x210F,0x2930,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2930,0x210F,0x2110,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2130,0x2130,0x2151,0x1931,0x1932,0x1132,0x1133,0x1175,0x0996,0x11D8,0x1219,0x1219,0x1A19,0x11F8,0x11D7,0x1175,0x1153,0x1133,0x1952,0x1932,0x1931,0x1931,0x1911,0x1911,0x1912,0x1932,0x1933,0x1154,0x19B6,0x11B6,0x11D7,0x11B7,0x09B7,0x09B7,0x0996,0x0996,0x0997,0x0997,0x0997,0x09B7,0x09B7,0x0997,0x09B7,0x0997,0x09B7,0x09B7,0x09B7,0x09B7,0x09B7,0x09B7,0x09B7,0x09B7,0x09B7,0x0997,0x09B7,0x09B7,0x09B7,0x0997,0x09B7,0x09B7,0x0997,0x09B7,0x09B7,0x09B7,0x09B7,0x11D8,0x1218,0x1A18,0x11B6,0x1154,0x1133,0x1932,0x1911,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x290F,0x2910,0x210F,0x2930,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x212F,0x2930,0x2930,0x2930,0x2110,0x2110,0x210F,0x2930,0x210F,0x210F,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x292F,0x290F,0x210F,0x212F,0x212F,0x2130,0x210F,0x2130,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2130,0x212F,0x290F,0x290F,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x2130,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x212F,0x212F,0x2130,0x210F,0x2930,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x2910,0x210F,0x290F,0x290F,0x2930,0x210F,0x2930,0x290F,0x210F,0x210F,0x290F,0x210F,0x2110,0x210F,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2150,0x194F,0x194F,0x1950,0x194F,0x192F,0x192F,0x192F,0x192F,0x192F,0x2130,0x192F,0x2150,0x2170,0x1970,0x1170,0x012F,0x01B1,0x2BD9,0x241A,0x243A,0x1C3A,0x241A,0x2398,0x014F,0x00EE,0x112F,0x110F,0x1970,0x1950,0x092F,0x012E,0x2397,0x2419,0x1419,0x0C19,0x03F8,0x0418,0x0418,0x0439,0x03F8,0x03F8,0x1439,0x245A,0x3C7B,0x12B4,0x010F,0x090F,0x1130,0x1930,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x210F,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x290F,0x210F,0x290F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2151,0x2152,0x1952,0x1111,0x1132,0x1154,0x1995,0x19D6,0x2218,0x2218,0x19B6,0x1975,0x1153,0x1132,0x1911,0x1911,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x2110,0x210F,0x2130,0x2130,0x2950,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1132,0x1133,0x1154,0x19F7,0x2218,0x2217,0x1133,0x1112,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x212F,0x212F,0x210F,0x2930,0x2930,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2110,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1932,0x1112,0x21B5,0x2A17,0x21D6,0x1974,0x10F1,0x1932,0x2152,0x2131,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2110,0x2110,0x2110,0x2930,0x2910,0x292F,0x292F,0x292F,0x292F,0x292F,0x290E,0x28EE,0x288C,0x30AC,0xCCDB,0xDCB9,0xDCB9,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC36,0xDC37,0xDC37,0xDC57,0xE457,0xDC37,0xDC37,0xDC36,0xDC36,0xDC37,0xDC36,0xDC36,0xDC37,0xDC57,0xE457,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC78,0xE4BA,0xE4FB,0x8251,0x282A,0x288C,0x20AD,0x28EE,0x290F,0x292F,0x290F,0x2930,0x2930,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x290F,0x2910,0x210F,0x210F,0x2930,0x290F,0x290F,0x2110,0x2110,0x2910,0x2910,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x292F,0x2930,0x212F,0x2930,0x210F,0x2930,0x290F,0x212F,0x210F,0x212F,0x2150,0x2150,0x2130,0x1931,0x1931,0x1132,0x1153,0x0954,0x19D7,0x1A18,0x19D8,0x11B7,0x1155,0x0913,0x1112,0x1932,0x2151,0x2131,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x2930,0x212F,0x210F,0x2930,0x210F,0x290F,0x212F,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2930,0x2110,0x210F,0x210F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x1912,0x1112,0x19D6,0x1A18,0x19F7,0x1195,0x0912,0x1931,0x2151,0x2130,0x18EF,0x210F,0x210F,0x2930,0x2130,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x210F,0x210F,0x210F,0x2110,0x212F,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x1910,0x1910,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2150,0x1930,0x1950,0x1950,0x1950,0x194F,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x192F,0x194F,0x192F,0x192F,0x192F,0x212F,0x192F,0x212F,0x212F,0x214F,0x2150,0x2150,0x2150,0x2150,0x1930,0x1950,0x1930,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x194F,0x192F,0x1950,0x1950,0x1950,0x1950,0x192F,0x1950,0x1950,0x1930,0x1930,0x1930,0x192F,0x192F,0x1950,0x1950,0x1930,0x1930,0x1930,0x2150,0x2150,0x1930,0x1950,0x1930,0x1950,0x1950,0x1930,0x1950,0x1950,0x1930,0x1930,0x1930,0x1930,0x1950,0x1930,0x192F,0x192F,0x192F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x210F,0x2950,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1911,0x1911,0x1932,0x1132,0x1132,0x1112,0x1132,0x1112,0x1112,0x1932,0x1931,0x1931,0x2131,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2930,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x2930,0x290F,0x2930,0x2130,0x210F,0x2130,0x2930,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2930,0x2930,0x212F,0x210F,0x2110,0x2130,0x2130,0x2131,0x1910,0x1911,0x1111,0x1132,0x1153,0x19B5,0x19F6,0x2217,0x21D6,0x1995,0x1153,0x1112,0x1111,0x1111,0x1952,0x1952,0x1931,0x1111,0x1111,0x1133,0x1974,0x21D6,0x21D6,0x21F7,0x21D6,0x1995,0x1154,0x1954,0x1133,0x1133,0x1133,0x1113,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1912, + 0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x210F,0x2130,0x210F,0x2130,0x212F,0x210F,0x2130,0x2110,0x2110,0x2930,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x2130,0x2130,0x2131,0x2131,0x1931,0x1131,0x1132,0x1154,0x1175,0x11B7,0x11D7,0x1A19,0x1219,0x11F9,0x11D8,0x11B7,0x1195,0x1154,0x1153,0x1932,0x1932,0x1911,0x2131,0x1931,0x1911,0x1932,0x1932,0x1933,0x1154,0x1995,0x19D6,0x11D7,0x11D7,0x11D7,0x11B7,0x11B7,0x09B7,0x11B7,0x09B7,0x0997,0x11B7,0x11D8,0x09B7,0x09B7,0x11B8,0x09B7,0x09B7,0x11D8,0x11B8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x09B7,0x11D8,0x11D8,0x09B7,0x09B7,0x11D8,0x09D7,0x09D7,0x09B7,0x09B7,0x09B7,0x09D7,0x11D8,0x11D8,0x11B7,0x1175,0x1153,0x1132,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2110,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x2910,0x210F,0x2910,0x2930,0x210F,0x2930,0x290F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2130,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x2930,0x2930,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x292F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2110,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x210F,0x2110,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x212F,0x210F,0x2130,0x210F,0x2930,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2910,0x210F,0x290F,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x290F,0x290F,0x2930,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2150,0x1950,0x194F,0x1150,0x1150,0x1150,0x114F,0x1150,0x112F,0x1950,0x1930,0x1930,0x1950,0x1950,0x1950,0x114F,0x1150,0x012F,0x01B2,0x2BB9,0x241A,0x1C1A,0x243A,0x2419,0x2398,0x014F,0x00CD,0x112F,0x192F,0x1950,0x194F,0x114F,0x010E,0x2B97,0x2C39,0x1C19,0x0C19,0x03F8,0x0418,0x03F8,0x0418,0x0418,0x0C19,0x1419,0x245A,0x3C7B,0x1294,0x00EE,0x090F,0x110F,0x190F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x2930,0x290F,0x292F,0x2930,0x292F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1132,0x1954,0x1995,0x19D6,0x2217,0x2217,0x21D6,0x1975,0x1953,0x1932,0x1911,0x1911,0x2131,0x2130,0x2930,0x2930,0x2110,0x2110,0x210F,0x2130,0x210F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1112,0x0933,0x19D7,0x2238,0x21F7,0x1153,0x10F2,0x1912,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2110,0x2910,0x2910,0x2110,0x2910,0x2910,0x290F,0x2930,0x210F,0x290F,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x290F,0x290F,0x210F,0x2910,0x2110,0x2110,0x2930,0x292F,0x210F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2131,0x2131,0x1932,0x1932,0x1112,0x21B5,0x2A17,0x21D6,0x1974,0x10F2,0x1932,0x2152,0x2131,0x2130,0x2930,0x2130,0x2930,0x2930,0x2930,0x2130,0x2930,0x2130,0x2930,0x2930,0x2910,0x2930,0x290F,0x292F,0x292F,0x292F,0x292F,0x28EE,0x28CD,0x204B,0x6A32,0xD4DB,0xDCDA,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC36,0xDC36,0xDC37,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xDC36,0xE457,0xDC37,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC37,0xDC58,0xE499,0xE4FB,0xCC9A,0x2809,0x30AC,0x28AD,0x28EE,0x290F,0x2930,0x290F,0x210F,0x2930,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x290F,0x210F,0x2910,0x210F,0x210F,0x210F,0x2910,0x2910,0x290F,0x210F,0x2930,0x210F,0x210F,0x2110,0x2110,0x210F,0x2930,0x290F,0x290F,0x292F,0x210F,0x290F,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x290F,0x2930,0x290F,0x2110,0x2130,0x2130,0x2130,0x2151,0x1930,0x1951,0x1952,0x1152,0x1133,0x0954,0x19F7,0x19F8,0x11D8,0x11B7,0x1196,0x0913,0x1112,0x1932,0x2151,0x2131,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x2930,0x2930,0x2130,0x2930,0x2930,0x290F,0x290F,0x2930,0x212F,0x212F,0x2930,0x2930,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2131,0x2111,0x1912,0x1113,0x19F7,0x1217,0x11D7,0x1195,0x1112,0x1931,0x2131,0x2110,0x210F,0x210F,0x212F,0x2930,0x2130,0x210F,0x20EF,0x2930,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x2930,0x2930,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x1950,0x1950,0x1950,0x112F,0x1950,0x114F,0x1950,0x114F,0x1150,0x1150,0x1150,0x114F,0x1150,0x112F,0x112F,0x112F,0x192F,0x192F,0x192F,0x194F,0x194F,0x194F,0x192F,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x112F,0x1150,0x1150,0x1150,0x1150,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x1150,0x1150,0x1150,0x1150,0x1150,0x1150,0x1150,0x1150,0x114F,0x1150,0x1150,0x1150,0x1930,0x1930,0x1950,0x112F,0x1130,0x1950,0x1150,0x1150,0x1150,0x1150,0x1150,0x1150,0x1150,0x1150,0x1150,0x1150,0x1130,0x1130,0x1130,0x112F,0x112F,0x192F,0x192F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x2930,0x212F,0x2130,0x2950,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2150,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2110,0x1911,0x1911,0x1911,0x1112,0x1132,0x1133,0x1174,0x1195,0x1195,0x1195,0x1154,0x1153,0x1133,0x1132,0x1931,0x1931,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x210F,0x2110,0x2130,0x2130,0x2110,0x2930,0x2130,0x2930,0x2130,0x2130,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1131,0x1152,0x1153,0x1195,0x19F6,0x2217,0x2217,0x1995,0x1153,0x1132,0x1111,0x1911,0x1931,0x1931,0x1931,0x1111,0x1132,0x1132,0x1174,0x19B6,0x21D6,0x21F7,0x21D6,0x1974,0x1154,0x1133,0x1113,0x1113,0x1112,0x1112,0x1112,0x1112,0x10F1,0x1112,0x1112,0x1112,0x1912,0x1932,0x1932,0x1932,0x1911,0x1931,0x1931,0x1911,0x1911,0x1931,0x1911,0x1931,0x1911,0x1932,0x1911,0x1912,0x1912, + 0x2910,0x290F,0x2910,0x20EF,0x210F,0x290F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2110,0x2930,0x2930,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2951,0x2130,0x1931,0x1931,0x1111,0x1132,0x1154,0x1175,0x11B7,0x11D8,0x11F8,0x11F9,0x11D8,0x11D8,0x11B7,0x1195,0x1154,0x1133,0x1932,0x1932,0x2152,0x2132,0x2132,0x1932,0x1912,0x1932,0x1132,0x1133,0x1974,0x19B5,0x19B6,0x19D6,0x1A17,0x19F7,0x1A18,0x1A18,0x1A18,0x19F8,0x1A18,0x19F8,0x19F8,0x1A18,0x19F8,0x19F8,0x1A18,0x19F8,0x19F8,0x1A18,0x1A18,0x19F8,0x1A18,0x1A18,0x1A18,0x1A18,0x19F8,0x1A18,0x11F7,0x1A18,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x09D8,0x11F8,0x11D8,0x11D8,0x11F8,0x11B7,0x1175,0x1174,0x1132,0x1952,0x1931,0x2151,0x2151,0x2130,0x2150,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x210F,0x2930,0x290F,0x2930,0x2930,0x290F,0x2910,0x2910,0x210F,0x2110,0x2130,0x2130,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x2110,0x2110,0x2910,0x210F,0x2930,0x2910,0x2910,0x2930,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2930,0x2930,0x2110,0x210F,0x2930,0x2930,0x2110,0x210F,0x2110,0x2930,0x2110,0x2110,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x212F,0x2930,0x2130,0x2930,0x210F,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x210F,0x290F,0x212F,0x2930,0x210F,0x210F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2130,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x212F,0x212F,0x210F,0x212F,0x2110,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x2110,0x2130,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2150,0x1950,0x114F,0x114F,0x1150,0x0970,0x0970,0x094F,0x094F,0x0950,0x1150,0x1150,0x1130,0x1930,0x192F,0x112F,0x112F,0x1150,0x012F,0x01D2,0x2BD9,0x2C3A,0x1BF9,0x1BF9,0x1BF9,0x23B8,0x016F,0x00EE,0x114F,0x190F,0x2150,0x1950,0x194F,0x012F,0x3377,0x449B,0x2C5A,0x1C5A,0x1439,0x0C18,0x0C39,0x0C19,0x0C39,0x1439,0x1C39,0x2C5A,0x449B,0x1AB5,0x010E,0x112F,0x1930,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2910,0x2930,0x212F,0x212F,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x290F,0x210F,0x2110,0x2930,0x2110,0x2110,0x210F,0x2910,0x2910,0x290F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2151,0x1932,0x1932,0x1133,0x1954,0x1995,0x21F7,0x2A38,0x21F7,0x19B6,0x1995,0x1153,0x1933,0x1911,0x2131,0x2131,0x2951,0x2930,0x2110,0x2930,0x2110,0x2110,0x210F,0x212F,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2131,0x1932,0x1112,0x0913,0x19D7,0x2A38,0x2217,0x1153,0x10F2,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2930,0x2130,0x2930,0x210F,0x2930,0x210F,0x2110,0x2910,0x2910,0x2910,0x290F,0x2910,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x292F,0x210F,0x210F,0x292F,0x212F,0x210F,0x2110,0x2130,0x2110,0x2130,0x2131,0x2132,0x1932,0x1112,0x21D5,0x2A17,0x21D6,0x1974,0x1112,0x1912,0x2152,0x2131,0x2130,0x2130,0x2930,0x2930,0x2930,0x2130,0x2930,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x292F,0x292F,0x290F,0x290E,0x30CD,0x306B,0xABF8,0xD4BA,0xDC98,0xDC78,0xDC77,0xDC57,0xE457,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC36,0xE436,0xE457,0xDC37,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xE457,0xDC57,0xDC37,0xDC78,0xE4DA,0xED7D,0x7A52,0x306B,0x30AD,0x28CE,0x28EF,0x290F,0x290F,0x292F,0x2930,0x2930,0x2910,0x2930,0x210F,0x2110,0x2910,0x2910,0x2910,0x2930,0x290F,0x292F,0x212F,0x292F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x212F,0x212F,0x292F,0x2930,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x210F,0x2110,0x2110,0x2110,0x2130,0x2131,0x1931,0x1931,0x1952,0x1173,0x0974,0x0995,0x1A18,0x11F8,0x11B7,0x11B7,0x11B6,0x1154,0x1133,0x1952,0x2152,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x212F,0x2130,0x212F,0x212F,0x2930,0x290F,0x210F,0x2110,0x210F,0x2110,0x210F,0x290F,0x2910,0x2910,0x212F,0x212F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x2910,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2131,0x2131,0x1912,0x1133,0x19F7,0x1A18,0x19F7,0x1175,0x1111,0x1931,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x2130,0x1950,0x112F,0x092F,0x092F,0x092F,0x092F,0x092F,0x092F,0x092F,0x092F,0x092F,0x094F,0x094F,0x092F,0x092F,0x092F,0x092F,0x112F,0x114F,0x112F,0x192F,0x194F,0x1950,0x1950,0x1950,0x112F,0x112F,0x092F,0x092F,0x092F,0x092F,0x092F,0x092F,0x092F,0x092F,0x1150,0x1150,0x0930,0x1150,0x1150,0x1150,0x0950,0x0950,0x1150,0x0950,0x092F,0x092F,0x094F,0x092F,0x092F,0x092F,0x092F,0x092F,0x092F,0x090F,0x090F,0x090F,0x010F,0x012F,0x012F,0x012F,0x012F,0x012F,0x012F,0x012F,0x012F,0x012F,0x092F,0x092F,0x092F,0x092F,0x094F,0x092F,0x092F,0x090E,0x090F,0x110F,0x110F,0x190F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x212F,0x2130,0x2110,0x2130,0x2131,0x1931,0x1932,0x1933,0x1153,0x1175,0x19F7,0x1A18,0x2259,0x2279,0x1A59,0x1A38,0x1A18,0x19D6,0x1194,0x1153,0x1132,0x1931,0x1911,0x2131,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1952,0x1973,0x1174,0x1195,0x19D6,0x19D6,0x21F6,0x1995,0x1153,0x1112,0x1111,0x1111,0x1931,0x2152,0x1931,0x1111,0x1132,0x1133,0x1174,0x19D6,0x21D6,0x21F7,0x19D6,0x1974,0x1133,0x1112,0x1112,0x1112,0x1112,0x1912,0x1932,0x1932,0x1932,0x1911,0x2152,0x1931,0x2152,0x1952,0x1911,0x1911,0x2131,0x1931,0x1931,0x1910,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x2131,0x2111,0x2111,0x2111, + 0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x210F,0x292F,0x2130,0x2130,0x2130,0x2131,0x1911,0x1932,0x1132,0x1154,0x1175,0x1196,0x11D8,0x11D8,0x11F9,0x11F9,0x11D8,0x11B7,0x1196,0x1154,0x1133,0x1932,0x1932,0x2152,0x2152,0x1931,0x1932,0x1932,0x1911,0x1932,0x1932,0x1153,0x1173,0x1174,0x11B5,0x11B5,0x19B5,0x1195,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x11B6,0x19B6,0x19B6,0x19D7,0x19B6,0x19B6,0x11B6,0x11B6,0x11B6,0x19B6,0x11B6,0x19D6,0x11B6,0x19D6,0x19D6,0x11D6,0x11D6,0x19D7,0x19D7,0x19F7,0x11F7,0x19F8,0x1A19,0x1218,0x11F9,0x11F9,0x11F8,0x11D7,0x11B7,0x0954,0x1154,0x1153,0x1932,0x1951,0x2151,0x2150,0x2150,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2110,0x2110,0x210F,0x2110,0x290F,0x210F,0x290F,0x290F,0x2910,0x210F,0x2930,0x2910,0x2910,0x210F,0x2110,0x2110,0x2910,0x2110,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x2930,0x210F,0x2930,0x2930,0x212F,0x2930,0x212F,0x210F,0x290F,0x2930,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x212F,0x210F,0x292F,0x210F,0x212F,0x2930,0x290F,0x290F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x210F,0x2930,0x290F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x212F,0x210F,0x212F,0x2930,0x212F,0x2110,0x2130,0x212F,0x212F,0x290F,0x290F,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x290F,0x290F,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2110,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2910,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2110,0x210F,0x2110,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x210F,0x2110,0x2110,0x2110,0x2130,0x212F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x2150,0x1950,0x1950,0x094F,0x094F,0x016F,0x014F,0x01B0,0x0A12,0x0A12,0x0190,0x012F,0x012F,0x1150,0x1130,0x1150,0x112F,0x1150,0x0950,0x0130,0x01B1,0x2BD9,0x2419,0x1C19,0x243A,0x23F9,0x2BB8,0x016F,0x090E,0x194F,0x10EE,0x194F,0x1950,0x1950,0x094F,0x1A74,0x3378,0x2BD8,0x2419,0x1C5A,0x0BF8,0x0C19,0x0C19,0x1419,0x1C5A,0x2C3A,0x3419,0x3BD9,0x1A74,0x094F,0x1130,0x1930,0x2130,0x2130,0x2930,0x210F,0x210F,0x212F,0x212F,0x290F,0x2930,0x210F,0x2930,0x2130,0x212F,0x2930,0x212F,0x212F,0x2930,0x290F,0x2930,0x210F,0x2930,0x2930,0x2930,0x2130,0x2110,0x2110,0x2110,0x2930,0x2910,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x2110,0x2130,0x2131,0x2151,0x2131,0x1932,0x1933,0x1154,0x1995,0x21F7,0x2217,0x21F7,0x19B6,0x1995,0x1153,0x1132,0x1911,0x2131,0x2131,0x2110,0x2930,0x2110,0x2930,0x2130,0x210F,0x210F,0x2150,0x2130,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1112,0x08F3,0x19D6,0x2A38,0x21F7,0x1154,0x1112,0x1911,0x2131,0x2111,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930,0x210F,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x2910,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2930,0x290F,0x290F,0x2930,0x210F,0x2930,0x2910,0x210F,0x2110,0x2910,0x2110,0x2930,0x2110,0x2910,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2130,0x2131,0x2132,0x1912,0x1112,0x21B5,0x21F6,0x21D6,0x1974,0x1112,0x1932,0x2151,0x2131,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x292F,0x292F,0x292F,0x28EE,0x28AC,0x40AC,0xCC7A,0xD499,0xDC99,0xDC78,0xDC37,0xE457,0xDC57,0xDC57,0xDC36,0xDC57,0xDC56,0xDC36,0xE457,0xDC57,0xDC57,0xDC37,0xDC57,0xDC37,0xE457,0xDC36,0xDC36,0xDC36,0xDC36,0xE457,0xDC37,0xDC37,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xDC57,0xDC57,0xDC57,0xDC58,0xDC99,0xE4FB,0xCCBB,0x61AF,0x286B,0x30CE,0x28EE,0x290F,0x290F,0x292F,0x2930,0x290F,0x2910,0x2930,0x2910,0x2930,0x2910,0x2910,0x210F,0x2910,0x210F,0x290F,0x210F,0x212F,0x292F,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x212F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x2110,0x2930,0x2910,0x2930,0x2930,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1952,0x1153,0x1174,0x1175,0x11B6,0x1A18,0x11F8,0x11D8,0x11D7,0x11D7,0x1175,0x1153,0x1132,0x2152,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x2930,0x290F,0x2110,0x2930,0x2110,0x2110,0x210F,0x2930,0x2910,0x210F,0x212F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x2110,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2111,0x1912,0x1133,0x19F7,0x19F7,0x11D7,0x1174,0x1111,0x1931,0x2110,0x2130,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x2110,0x2930,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x2130,0x2930,0x2930,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2150,0x1930,0x110F,0x00CE,0x010E,0x012F,0x012F,0x010E,0x010E,0x010E,0x010E,0x012E,0x014F,0x016F,0x012E,0x012E,0x012E,0x012E,0x010E,0x012E,0x094F,0x114F,0x112F,0x1950,0x1950,0x1950,0x1970,0x092F,0x010E,0x010E,0x012F,0x014F,0x014F,0x016F,0x012F,0x012E,0x010E,0x010E,0x014F,0x0950,0x0950,0x0950,0x0150,0x014F,0x012F,0x010E,0x012F,0x012F,0x014F,0x014F,0x014F,0x016F,0x016F,0x0190,0x11B1,0x094F,0x010F,0x010F,0x012F,0x014F,0x016F,0x0190,0x0190,0x0190,0x0190,0x0190,0x0170,0x0190,0x016F,0x016F,0x016F,0x016F,0x014F,0x016F,0x016F,0x016F,0x012E,0x012E,0x012F,0x112F,0x110F,0x192F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2150,0x2150,0x2150,0x1930,0x192F,0x192F,0x190F,0x190F,0x190F,0x190F,0x192F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x210F,0x2130,0x2110,0x2131,0x1931,0x1932,0x1953,0x1974,0x19B6,0x11F7,0x1218,0x1218,0x1219,0x0A19,0x1219,0x09F9,0x1218,0x11F8,0x11F7,0x19F6,0x1994,0x1952,0x1932,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x1910,0x1910,0x1930,0x1931,0x1931,0x1931,0x1931,0x1952,0x1153,0x1174,0x1195,0x19F6,0x19D6,0x19D6,0x1995,0x1133,0x1132,0x1112,0x1931,0x1911,0x1932,0x1931,0x1111,0x1132,0x1133,0x1174,0x19D6,0x21F7,0x21D6,0x21D6,0x1974,0x1133,0x1112,0x1111,0x1912,0x1932,0x1932,0x1932,0x1931,0x1911,0x1931,0x1931,0x2131,0x2131,0x2151,0x2131,0x1931,0x1910,0x2130,0x2130,0x2110,0x1910,0x2110,0x2130,0x2110,0x2110,0x2111,0x2111,0x2111,0x2110,0x2111,0x2111, + 0x2910,0x2910,0x2910,0x2910,0x2930,0x290F,0x2910,0x210F,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x2130,0x2110,0x2930,0x2910,0x2930,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x20EE,0x20EE,0x20EF,0x210F,0x2130,0x2131,0x2131,0x1931,0x1932,0x1132,0x1153,0x1195,0x11B7,0x11D8,0x11F8,0x11F9,0x11F8,0x11F8,0x11D7,0x1196,0x1154,0x1113,0x1112,0x1932,0x1931,0x1931,0x2131,0x2131,0x1931,0x1911,0x1932,0x1952,0x1952,0x1952,0x1152,0x1132,0x1132,0x1132,0x1113,0x1113,0x0913,0x1113,0x1113,0x0913,0x1113,0x0913,0x0913,0x1133,0x1113,0x0913,0x0913,0x0913,0x1133,0x1133,0x0933,0x0933,0x0913,0x0933,0x0913,0x0933,0x1134,0x0933,0x0933,0x0954,0x0934,0x0955,0x11B7,0x11D8,0x11F9,0x1219,0x1219,0x11F8,0x11B6,0x0954,0x0912,0x1112,0x1111,0x1931,0x2151,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2910,0x2110,0x2110,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x2110,0x2130,0x2110,0x2930,0x2910,0x2110,0x2110,0x2930,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x2910,0x2910,0x210F,0x210F,0x210F,0x2910,0x290F,0x210F,0x210F,0x2910,0x2110,0x2130,0x2130,0x210F,0x212F,0x2130,0x212F,0x212F,0x2130,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2130,0x2130,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x290F,0x210F,0x2910,0x2110,0x292F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x2930,0x2930,0x2110,0x2130,0x212F,0x212F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x2110,0x2130,0x212F,0x212F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2930,0x2110,0x2130,0x212F,0x210F,0x210F,0x212F,0x2130,0x212F,0x2930,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x192F,0x112F,0x092F,0x014F,0x016F,0x0A52,0x2336,0x3C3A,0x3C5A,0x447B,0x445A,0x3BF9,0x1A94,0x0991,0x0970,0x1150,0x1150,0x092F,0x0970,0x0130,0x01F2,0x2BD9,0x2419,0x2419,0x1C19,0x23F9,0x2377,0x014F,0x00EE,0x192F,0x192F,0x2150,0x1950,0x192F,0x112F,0x0950,0x012F,0x012F,0x01D1,0x23F9,0x1419,0x1419,0x0BF8,0x13F8,0x2419,0x12D5,0x014F,0x012E,0x010E,0x1150,0x1950,0x2150,0x2130,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x292F,0x290F,0x292F,0x210F,0x292F,0x2930,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x212F,0x210F,0x212F,0x292F,0x2930,0x2130,0x2930,0x2110,0x2930,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x292F,0x212F,0x2130,0x2130,0x2131,0x2111,0x1931,0x1932,0x1933,0x1133,0x1975,0x21D6,0x2237,0x19F6,0x19B6,0x1174,0x1953,0x1112,0x1911,0x18F0,0x2110,0x2931,0x2930,0x2950,0x2930,0x2130,0x210F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1932,0x1113,0x21D6,0x2A38,0x21D6,0x1133,0x1132,0x1932,0x1931,0x1910,0x2110,0x2110,0x2130,0x2130,0x2930,0x2930,0x212F,0x210F,0x290F,0x2930,0x290F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x210F,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2930,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2131,0x1932,0x1912,0x1112,0x21D5,0x2217,0x21D6,0x1974,0x1112,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930,0x2130,0x2130,0x2930,0x2930,0x2910,0x2910,0x2930,0x292F,0x292F,0x292F,0x290F,0x290F,0x28CD,0x204B,0x69F0,0xDCFB,0xDCB9,0xDC98,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC37,0xDC36,0xDC36,0xE457,0xDC37,0xDC57,0xDC37,0xDC37,0xDC57,0xDC37,0xDC57,0xDC57,0xDC56,0xDC36,0xE457,0xE437,0xDC37,0xDC36,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC37,0xDC57,0xDC58,0xDC78,0xD479,0xDCFB,0xCCFC,0x40CD,0x30AD,0x28EE,0x290E,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x210F,0x2930,0x292F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x210F,0x292F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2930,0x2910,0x2910,0x290F,0x290F,0x210F,0x2910,0x290F,0x2930,0x290F,0x210F,0x212F,0x210F,0x2930,0x2930,0x2930,0x212F,0x210F,0x2930,0x2910,0x2910,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1132,0x1174,0x1195,0x1196,0x11B7,0x1A18,0x11F8,0x11D8,0x11D8,0x19F8,0x11D7,0x0954,0x1133,0x1952,0x1952,0x2151,0x2131,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x210F,0x210F,0x2930,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2111,0x1932,0x1133,0x19F7,0x11F7,0x11F7,0x1174,0x1132,0x2151,0x2110,0x210F,0x210F,0x2150,0x2950,0x2130,0x210F,0x210F,0x210F,0x2930,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x20EF,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x110F,0x00CD,0x2AF5,0x4419,0x33D9,0x3BF9,0x445B,0x4C7B,0x4C9B,0x4C7B,0x4CBC,0x4CDC,0x4CBB,0x4C9B,0x4C9B,0x445A,0x445A,0x4C5A,0x43F9,0x3B57,0x0970,0x1150,0x1150,0x1150,0x1950,0x1170,0x0950,0x4378,0x43B8,0x3BD8,0x441A,0x443A,0x445B,0x3C3A,0x3BF9,0x33B8,0x3BF9,0x09F2,0x012F,0x0130,0x0150,0x0191,0x0190,0x1AD5,0x3C19,0x3C19,0x33F9,0x3C19,0x445A,0x445A,0x443A,0x4C7B,0x5C9C,0x3357,0x010F,0x00EE,0x3B57,0x5CBC,0x443A,0x445A,0x447B,0x447B,0x447B,0x3C5A,0x449B,0x44BB,0x44BB,0x449B,0x4CBC,0x4CBC,0x449B,0x449B,0x4CBB,0x449A,0x447A,0x445A,0x4C7B,0x43D9,0x012F,0x112F,0x1930,0x1930,0x2150,0x2130,0x2130,0x2130,0x2150,0x2150,0x1950,0x1950,0x112F,0x112F,0x112F,0x110F,0x110F,0x10EF,0x08EF,0x10EF,0x110F,0x110F,0x1910,0x2110,0x2130,0x2930,0x2930,0x2930,0x2110,0x2130,0x2130,0x2131,0x2152,0x1952,0x1953,0x1175,0x11D7,0x11D8,0x09D8,0x09F9,0x01D9,0x01D9,0x01D9,0x01D9,0x09F9,0x09D8,0x09F8,0x11D7,0x1195,0x1154,0x1132,0x1932,0x1932,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x1911,0x1931,0x1931,0x1910,0x2131,0x2151,0x1911,0x1911,0x1931,0x1931,0x1952,0x1973,0x1952,0x1132,0x1153,0x1195,0x19D6,0x19D6,0x21F7,0x1995,0x0933,0x1112,0x1132,0x1952,0x1932,0x1932,0x1911,0x1111,0x1132,0x1153,0x1174,0x19D6,0x19F6,0x19D6,0x21F6,0x1994,0x1132,0x1112,0x1932,0x1931,0x2132,0x1911,0x2131,0x1931,0x2131,0x2131,0x2110,0x1910,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x20F0, + 0x2910,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x2910,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2910,0x2110,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x2130,0x2950,0x2151,0x2131,0x1931,0x1931,0x1132,0x1154,0x1175,0x11B6,0x11D7,0x11F8,0x11F9,0x11F9,0x11D8,0x19D7,0x1996,0x1154,0x1113,0x1112,0x1912,0x1931,0x2131,0x2151,0x2131,0x2131,0x1931,0x1931,0x1931,0x1931,0x1111,0x1131,0x1112,0x1932,0x1932,0x1932,0x1932,0x1112,0x1912,0x1112,0x1112,0x1112,0x1112,0x1112,0x1912,0x1912,0x1932,0x1932,0x1112,0x1112,0x1933,0x1132,0x1132,0x1112,0x1132,0x1112,0x1112,0x1112,0x1133,0x1112,0x1133,0x0933,0x0934,0x1196,0x11D8,0x1A19,0x1218,0x1218,0x11F7,0x0996,0x0954,0x0933,0x1111,0x1111,0x1931,0x2131,0x2150,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2110,0x2910,0x2910,0x2930,0x2910,0x210F,0x2930,0x2930,0x2910,0x210F,0x2130,0x2110,0x2930,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x2110,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2930,0x210F,0x210F,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x290F,0x2930,0x290F,0x2910,0x2910,0x2910,0x2910,0x2130,0x2130,0x2130,0x2110,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x2910,0x2930,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x212F,0x212F,0x2110,0x2110,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2910,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2930,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2930,0x2910,0x2930,0x2910,0x2130,0x210F,0x210F,0x2130,0x212F,0x212F,0x2130,0x2150,0x212F,0x1950,0x112F,0x094F,0x0170,0x3377,0x3C3A,0x2C19,0x2C3A,0x2419,0x2C39,0x2C19,0x343A,0x3C3A,0x3377,0x09B1,0x0950,0x1150,0x0950,0x0950,0x0150,0x01B1,0x2BD9,0x2C1A,0x2419,0x2419,0x241A,0x2378,0x012F,0x00EE,0x112F,0x192F,0x192F,0x192F,0x1950,0x1950,0x1150,0x092F,0x012F,0x0190,0x23F9,0x1C19,0x1419,0x13F8,0x1BF9,0x347B,0x0212,0x010E,0x010E,0x092F,0x1950,0x1950,0x2130,0x2130,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x292F,0x292F,0x292F,0x290F,0x292F,0x212F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x212F,0x292F,0x292F,0x2130,0x2930,0x2930,0x2930,0x2110,0x2930,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x1153,0x1195,0x21F7,0x21F7,0x19D6,0x19D6,0x1174,0x1953,0x1912,0x1911,0x2111,0x2131,0x2931,0x2130,0x2130,0x2110,0x212F,0x212F,0x2150,0x2130,0x2130,0x2130,0x2110,0x2130,0x1911,0x1932,0x1133,0x19B5,0x2A17,0x21F7,0x1154,0x1132,0x1932,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x290F,0x210F,0x290F,0x290F,0x210F,0x2930,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1932,0x1112,0x21B5,0x21F6,0x21D6,0x1974,0x1112,0x1911,0x2131,0x2131,0x2131,0x2130,0x2130,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x2930,0x2910,0x2930,0x2910,0x290F,0x292F,0x290F,0x290F,0x28EE,0x28CD,0x200A,0xA396,0xDCDA,0xDC99,0xDC98,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xDC36,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC36,0xE457,0xDC36,0xDC36,0xDC37,0xDC57,0xDC37,0xE457,0xDC37,0xDC37,0xDC57,0xDC37,0xDC57,0xDC57,0xDC58,0xDC78,0xDC79,0xDCBA,0xFE1F,0x6A11,0x308C,0x28CD,0x28EE,0x290F,0x290F,0x290F,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x290F,0x2930,0x210F,0x292F,0x292F,0x210F,0x2930,0x2110,0x2910,0x290F,0x2930,0x290F,0x290F,0x290F,0x292F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x210F,0x210F,0x2930,0x2930,0x210F,0x290F,0x210F,0x290F,0x2930,0x2930,0x210F,0x210F,0x2930,0x210F,0x210F,0x2930,0x2910,0x2910,0x2930,0x2130,0x2130,0x2130,0x2110,0x1931,0x1132,0x1153,0x0974,0x11B6,0x11B7,0x11B7,0x11F8,0x11F8,0x11F8,0x11D8,0x1A18,0x19F8,0x0975,0x0934,0x1133,0x1952,0x1931,0x2111,0x2130,0x2110,0x2130,0x2930,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x2930,0x290F,0x290F,0x2930,0x212F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2130,0x210F,0x2110,0x212F,0x212F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2111,0x1932,0x1113,0x19D6,0x1A18,0x11D6,0x11B5,0x1132,0x1931,0x2130,0x210F,0x212F,0x2150,0x2950,0x2130,0x210F,0x2930,0x2110,0x2130,0x2950,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x212F,0x192F,0x110F,0x00CD,0x549B,0x54FD,0x345A,0x2C3A,0x2C19,0x2419,0x2419,0x1BD8,0x23F8,0x1BF8,0x23F8,0x23D8,0x23F8,0x2BF8,0x3419,0x3419,0x3C39,0x43D8,0x014F,0x0950,0x1150,0x1150,0x1170,0x1170,0x012F,0x4BD9,0x64FD,0x4C7B,0x3419,0x23F8,0x2C19,0x2C19,0x3C9B,0x3C9B,0x3C7A,0x2356,0x0170,0x0150,0x0170,0x0191,0x0A94,0x449B,0x347A,0x2C39,0x2C39,0x23F9,0x2C19,0x2BF8,0x3439,0x3C5A,0x4C5B,0x0A12,0x010F,0x012F,0x4C3A,0x443A,0x33F9,0x2C19,0x2419,0x1BD8,0x2419,0x1BF8,0x2439,0x2419,0x2419,0x1C18,0x2419,0x1C18,0x1C18,0x1BF8,0x23F8,0x23F8,0x2C39,0x3459,0x3C5A,0x4419,0x012F,0x112F,0x192F,0x1930,0x192F,0x2130,0x2150,0x2150,0x1950,0x1950,0x1150,0x0950,0x014F,0x012E,0x010E,0x010E,0x00EE,0x00EE,0x00EE,0x00CE,0x00CE,0x00EF,0x1110,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2132,0x1953,0x1154,0x1196,0x11D7,0x09F8,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x09D8,0x09B7,0x0996,0x1175,0x1133,0x1133,0x1132,0x1932,0x1932,0x1932,0x1911,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1932,0x1911,0x1911,0x1911,0x1911,0x2131,0x1911,0x1911,0x1931,0x1932,0x1911,0x1911,0x1911,0x1931,0x1932,0x1952,0x1932,0x1932,0x1932,0x1132,0x1952,0x1153,0x1132,0x0933,0x1195,0x19B6,0x19D6,0x19D6,0x1995,0x1154,0x1112,0x1132,0x1932,0x1932,0x1912,0x1932,0x1912,0x1112,0x1153,0x1174,0x19B6,0x19F6,0x21F7,0x21F6,0x1995,0x1133,0x1132,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x20F0, + 0x2910,0x2110,0x2910,0x2930,0x210F,0x210F,0x2910,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2910,0x2910,0x2910,0x210F,0x290F,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x212F,0x292F,0x290F,0x292F,0x212F,0x2130,0x2130,0x2950,0x2151,0x2131,0x1931,0x1952,0x1132,0x1133,0x1175,0x1196,0x11D7,0x1A19,0x11F9,0x19F9,0x11D8,0x11B7,0x1176,0x1154,0x1133,0x1112,0x1911,0x1911,0x2131,0x2111,0x2131,0x1910,0x2131,0x1930,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1932,0x1911,0x1932,0x1932,0x1911,0x1912,0x1912,0x1911,0x2132,0x1911,0x1931,0x1932,0x1911,0x1911,0x1931,0x1931,0x1932,0x1931,0x1931,0x1911,0x1911,0x1932,0x1932,0x1112,0x1932,0x1153,0x0933,0x0954,0x1196,0x11D7,0x1A18,0x1A19,0x1218,0x11D7,0x11B6,0x0954,0x1133,0x1112,0x1111,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x212F,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2910,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x210F,0x2910,0x2930,0x2910,0x2930,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2910,0x2110,0x2910,0x2910,0x2110,0x2130,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x2130,0x212F,0x2930,0x2930,0x2930,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x2930,0x2910,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2110,0x210F,0x2910,0x210F,0x212F,0x2930,0x2930,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x212F,0x210F,0x2930,0x290F,0x2930,0x210F,0x210F,0x2110,0x212F,0x212F,0x210F,0x210F,0x2930,0x212F,0x2930,0x2110,0x210F,0x210F,0x212F,0x2930,0x210F,0x290F,0x290F,0x2930,0x2930,0x212F,0x290F,0x2930,0x290F,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x292F,0x212F,0x292F,0x212F,0x290F,0x210F,0x292F,0x212F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2930,0x2130,0x2930,0x212F,0x212F,0x2930,0x2930,0x2930,0x210F,0x2910,0x2910,0x2930,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x192F,0x112F,0x092F,0x0150,0x3BB9,0x33F9,0x23D8,0x23F9,0x1BD8,0x1BD8,0x1BD8,0x1BD8,0x1BD8,0x23D8,0x33D9,0x2B57,0x0170,0x014F,0x0950,0x0950,0x0150,0x01D2,0x2BD9,0x23F9,0x1BD9,0x1BF9,0x2C1A,0x2B98,0x014F,0x090E,0x192F,0x190F,0x214F,0x214F,0x192F,0x1950,0x112F,0x112F,0x010F,0x01B0,0x2BF9,0x1C19,0x13F8,0x13F9,0x1BF9,0x345B,0x0A12,0x012F,0x0970,0x1170,0x1950,0x1930,0x2130,0x210F,0x212F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2930,0x290F,0x2930,0x210F,0x2930,0x2930,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x210F,0x210F,0x2130,0x212F,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x1153,0x1174,0x19D6,0x21F7,0x2217,0x19D6,0x1974,0x1133,0x1932,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x1995,0x2A38,0x2A17,0x1174,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x292F,0x292F,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2930,0x2930,0x212F,0x210F,0x292F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1933,0x1133,0x21B5,0x21F7,0x21D6,0x1974,0x1112,0x1932,0x2151,0x2131,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2950,0x2930,0x290F,0x28CE,0x208C,0x282A,0xCC9A,0xDCDA,0xDC99,0xDC98,0xDC57,0xDC37,0xDC57,0xDC57,0xDC36,0xDC37,0xDC37,0xDC36,0xE457,0xDC37,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xDC36,0xE457,0xDC37,0xDC37,0xE457,0xE457,0xDC36,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC78,0xDC99,0xDC99,0xD4BA,0x618F,0x286B,0x30EE,0x28EE,0x20EE,0x290F,0x2930,0x2930,0x2930,0x2110,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x210F,0x210F,0x2110,0x2930,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2930,0x2930,0x290F,0x210F,0x2930,0x210F,0x210F,0x2910,0x290F,0x2930,0x2910,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x290F,0x2110,0x2110,0x210F,0x2930,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2130,0x2110,0x2130,0x2130,0x2110,0x1911,0x1132,0x1154,0x11D6,0x19F7,0x11B7,0x09B7,0x11D7,0x11D7,0x11D7,0x11B7,0x11F8,0x1A19,0x19F8,0x1196,0x1175,0x1133,0x1932,0x2111,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x212F,0x212F,0x2930,0x2130,0x212F,0x212F,0x2930,0x2910,0x2930,0x2930,0x2930,0x292F,0x212F,0x212F,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2110,0x2110,0x1911,0x1932,0x1133,0x19D6,0x11F7,0x11D6,0x1195,0x1131,0x1910,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x210F,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x210F,0x292F,0x290F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x192F,0x110F,0x010E,0x445A,0x345A,0x2439,0x1C19,0x13F8,0x1419,0x13F8,0x13F8,0x13F8,0x1C18,0x1C18,0x1BF8,0x1BF8,0x1BF8,0x23F8,0x2BD8,0x33F8,0x3BD8,0x014F,0x0950,0x1150,0x1150,0x1150,0x1150,0x0950,0x0190,0x4C1A,0x445A,0x2C3A,0x23F9,0x13B8,0x13B8,0x1BF8,0x1C18,0x2439,0x23F8,0x1316,0x01F1,0x01D1,0x0233,0x23F9,0x2419,0x1C19,0x13F8,0x13F8,0x13F8,0x1BD8,0x23F8,0x23F8,0x3C3A,0x3398,0x0190,0x012F,0x0150,0x3BF9,0x33F9,0x2C19,0x23F8,0x1BD8,0x1BF9,0x1C19,0x1418,0x1419,0x1419,0x1439,0x1418,0x1418,0x1418,0x13F8,0x1418,0x1BF8,0x1BF8,0x2418,0x2C18,0x3C5A,0x4419,0x010E,0x1150,0x1930,0x1930,0x1930,0x2130,0x2130,0x2150,0x1950,0x1150,0x0970,0x0170,0x01D0,0x0A93,0x2376,0x3418,0x3C7A,0x447B,0x4C9B,0x4C7B,0x549C,0x3B78,0x0130,0x1110,0x1930,0x1930,0x2130,0x2130,0x2130,0x2130,0x2110,0x1911,0x1932,0x1933,0x19B5,0x19F7,0x11D8,0x09D8,0x09D9,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x09FA,0x01D9,0x09F9,0x09D8,0x09B7,0x0976,0x0955,0x0934,0x0912,0x1112,0x1132,0x1112,0x1112,0x1932,0x1912,0x1912,0x1932,0x1932,0x1912,0x1912,0x1111,0x1912,0x1912,0x1112,0x1112,0x1112,0x1112,0x1912,0x1112,0x1912,0x1912,0x1912,0x1912,0x1112,0x1112,0x1932,0x1932,0x1112,0x1932,0x1932,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x0912,0x0953,0x11B5,0x21F7,0x19F7,0x19B6,0x1174,0x1154,0x1133,0x1132,0x1932,0x1912,0x1932,0x1932,0x1912,0x1133,0x1954,0x1174,0x19B6,0x19F7,0x21F7,0x19D6,0x1974,0x1112,0x1112,0x1931,0x1931,0x1931,0x1930,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910, + 0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x210F,0x290F,0x290F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2930,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x212F,0x212F,0x292F,0x212F,0x2930,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2151,0x1931,0x1931,0x1132,0x1153,0x1175,0x11B6,0x11D8,0x19F9,0x19F9,0x11D8,0x19D8,0x19D7,0x1196,0x1174,0x1133,0x1932,0x1931,0x1931,0x2131,0x2110,0x2130,0x2130,0x2130,0x1930,0x2130,0x1930,0x1910,0x1930,0x1930,0x1931,0x1931,0x1931,0x1931,0x1911,0x2111,0x1911,0x1911,0x2131,0x2131,0x2111,0x1911,0x1910,0x1931,0x1931,0x1910,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1132,0x1133,0x1155,0x1196,0x11D7,0x1218,0x1A19,0x1A19,0x11D7,0x11B6,0x1155,0x1133,0x1112,0x1111,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2910,0x2910,0x2930,0x290F,0x2930,0x2910,0x2910,0x292F,0x290F,0x2110,0x2910,0x2110,0x2930,0x2910,0x2910,0x290F,0x2930,0x210F,0x2910,0x2930,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2930,0x210F,0x212F,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x2910,0x210F,0x212F,0x212F,0x210F,0x292F,0x212F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x2930,0x210F,0x212F,0x2930,0x210F,0x210F,0x2930,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x210F,0x210F,0x2930,0x2930,0x2930,0x210F,0x2110,0x2130,0x2130,0x212F,0x290F,0x2930,0x212F,0x212F,0x2110,0x2110,0x210F,0x212F,0x210F,0x212F,0x2930,0x290F,0x2910,0x2930,0x212F,0x212F,0x210F,0x2930,0x292F,0x210F,0x2910,0x2910,0x210F,0x210F,0x290F,0x2930,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x2930,0x2930,0x292F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2930,0x2930,0x210F,0x2930,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x2930,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x2910,0x290F,0x290F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2150,0x192F,0x112F,0x012F,0x22B5,0x3BF9,0x23B8,0x1BB8,0x1BD9,0x13D9,0x13D8,0x13B8,0x13D8,0x1BF9,0x1BD8,0x23B8,0x33D8,0x1A74,0x014F,0x014F,0x0970,0x0150,0x01D2,0x33D9,0x23D9,0x23F9,0x23F9,0x23D9,0x2B98,0x014F,0x08EE,0x192F,0x192F,0x212F,0x2150,0x214F,0x1950,0x110F,0x112F,0x092F,0x0170,0x2BF9,0x1BD9,0x1BF9,0x1BF9,0x23F9,0x3C3A,0x01B1,0x010F,0x0970,0x1150,0x1950,0x2130,0x2130,0x212F,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x2930,0x2910,0x2930,0x210F,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2130,0x210F,0x210F,0x212F,0x212F,0x292F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1932,0x1133,0x1153,0x1195,0x21F6,0x2217,0x2217,0x19D6,0x1974,0x1133,0x1912,0x18F1,0x2131,0x2130,0x2130,0x2130,0x2130,0x2150,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1953,0x1133,0x1975,0x2A17,0x2A17,0x1974,0x1112,0x1932,0x1931,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2910,0x290F,0x290F,0x2930,0x210F,0x2930,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x210F,0x2930,0x2930,0x290F,0x2930,0x2910,0x2110,0x2930,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x2130,0x210F,0x2130,0x2130,0x2131,0x2131,0x1932,0x1933,0x1113,0x21B5,0x21F7,0x21D6,0x1974,0x1112,0x2152,0x2152,0x2151,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x28CE,0x204B,0x48ED,0xDCFC,0xDCBA,0xDC98,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC36,0xDC37,0xDC36,0xDC37,0xDC37,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xE457,0xDC36,0xDC37,0xE457,0xE477,0xDC36,0xDC37,0xDC37,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC58,0xDC78,0xD479,0xCC79,0x8AB3,0x2809,0x30CD,0x28ED,0x20EE,0x290F,0x290F,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x2110,0x2110,0x210F,0x2110,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2110,0x212F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2930,0x212F,0x2930,0x210F,0x2930,0x290F,0x2930,0x212F,0x210F,0x2130,0x2130,0x2130,0x2111,0x1911,0x1133,0x1195,0x19F7,0x11F8,0x0996,0x0996,0x0996,0x0976,0x0976,0x0976,0x0996,0x19F8,0x1A19,0x11D8,0x1996,0x1133,0x1932,0x1911,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x212F,0x2930,0x2930,0x212F,0x212F,0x2930,0x210F,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2110,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x1911,0x1932,0x1133,0x11D6,0x19F7,0x11D6,0x1194,0x1131,0x1931,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x292F,0x2930,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x192F,0x090F,0x010E,0x3C3A,0x2419,0x13F8,0x1419,0x1419,0x1419,0x0C18,0x0C18,0x0BF8,0x1418,0x1418,0x13F8,0x1BF8,0x1BF8,0x23F8,0x2BF8,0x33F8,0x33B8,0x0170,0x0950,0x1150,0x1150,0x1150,0x1170,0x1170,0x0150,0x1253,0x445B,0x23F9,0x1BF8,0x13D8,0x13D8,0x0BD8,0x1418,0x1419,0x1C18,0x1BD8,0x02B4,0x0232,0x0B16,0x13D8,0x1418,0x0BF8,0x0BF8,0x0BF8,0x1419,0x1BF8,0x1BF8,0x2C19,0x3C3A,0x1274,0x0170,0x014F,0x0190,0x3BF9,0x2BD9,0x23D8,0x1BF8,0x1BF8,0x13F8,0x13F8,0x0C19,0x0BF8,0x0BF8,0x0C19,0x0C18,0x0C19,0x0BF8,0x0C18,0x1418,0x13F8,0x1C19,0x1C19,0x2439,0x345A,0x3BD9,0x012F,0x1130,0x1930,0x1930,0x2130,0x2130,0x2130,0x2150,0x1150,0x094F,0x1212,0x3BD8,0x3C5A,0x3C9A,0x349A,0x2479,0x2459,0x2439,0x2C7A,0x3C7A,0x44BC,0x441A,0x0130,0x0930,0x1130,0x1930,0x2110,0x2130,0x2130,0x2130,0x2110,0x2131,0x1912,0x1133,0x1995,0x11B7,0x09D8,0x09D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x09F9,0x09D9,0x09D8,0x09B7,0x0996,0x1175,0x0934,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1133,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1112,0x1113,0x1113,0x0912,0x0913,0x1133,0x1134,0x19B5,0x2A38,0x2217,0x19D6,0x1995,0x1154,0x1133,0x1112,0x1932,0x1912,0x1912,0x1912,0x1912,0x1112,0x1134,0x1975,0x19B6,0x21F7,0x21F7,0x21D6,0x1995,0x1133,0x1112,0x1911,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930, + 0x2910,0x2110,0x2110,0x2930,0x2910,0x2930,0x2910,0x2910,0x210F,0x210F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2910,0x2110,0x2130,0x2930,0x290F,0x210F,0x212F,0x210F,0x292F,0x212F,0x2930,0x210F,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1974,0x1175,0x1196,0x11B7,0x19F8,0x19F8,0x19F9,0x19D8,0x11B7,0x1196,0x1154,0x1133,0x1112,0x1932,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1910,0x2131,0x2131,0x2131,0x2132,0x1932,0x1132,0x1154,0x1195,0x11B6,0x11D7,0x1218,0x1A19,0x1A19,0x11D8,0x1196,0x0955,0x1134,0x1112,0x1912,0x1911,0x2151,0x2951,0x2951,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x210F,0x2130,0x2110,0x2110,0x2910,0x210F,0x2110,0x2130,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2930,0x290F,0x290F,0x2930,0x292F,0x2930,0x292F,0x292F,0x290F,0x210F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x2930,0x2130,0x2130,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x212F,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x2930,0x290F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x290F,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x292F,0x2930,0x210F,0x2910,0x2910,0x2930,0x290F,0x2910,0x210F,0x2110,0x2910,0x2910,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x290F,0x290F,0x2930,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x2110,0x2110,0x2130,0x2930,0x290F,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2930,0x2130,0x210F,0x2930,0x212F,0x2930,0x212F,0x2930,0x212F,0x212F,0x212F,0x2110,0x210F,0x2130,0x212F,0x2130,0x2130,0x2130,0x210F,0x2110,0x2930,0x212F,0x2930,0x290F,0x2910,0x2110,0x2910,0x2910,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x292F,0x290F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x214F,0x192F,0x090F,0x0970,0x43D9,0x2B98,0x1BB9,0x1BF9,0x13F9,0x13D9,0x13F9,0x13D9,0x13D9,0x13D9,0x1BD8,0x1BB8,0x2377,0x3357,0x0190,0x014F,0x0150,0x0130,0x01B1,0x33B9,0x2BD9,0x23F9,0x23F9,0x23D9,0x2B78,0x012F,0x08EE,0x192F,0x212F,0x212F,0x212F,0x212F,0x192F,0x192F,0x112F,0x010F,0x0170,0x33F9,0x1BF9,0x241A,0x23F9,0x23D9,0x33FA,0x0150,0x010F,0x1170,0x1970,0x1950,0x2150,0x2130,0x2130,0x210F,0x210F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2930,0x290F,0x290F,0x290F,0x2910,0x290F,0x210F,0x290F,0x290F,0x292F,0x212F,0x292F,0x292F,0x292F,0x2930,0x2930,0x292F,0x290F,0x2930,0x2910,0x2930,0x2930,0x2130,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1932,0x1953,0x1153,0x1195,0x19D6,0x2217,0x21F7,0x19B5,0x1174,0x1133,0x1912,0x1911,0x2131,0x2130,0x2110,0x2130,0x212F,0x2150,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1953,0x1153,0x1995,0x2A17,0x2A17,0x1974,0x1112,0x1932,0x2131,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x2110,0x210F,0x2130,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2110,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2131,0x2111,0x1912,0x1932,0x1113,0x21B5,0x21F6,0x21F6,0x1974,0x1112,0x1932,0x2151,0x2151,0x2131,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x310E,0x284B,0x8293,0xDCDB,0xDC99,0xDC99,0xDC78,0xDC57,0xDC37,0xDC57,0xDC37,0xDC57,0xE457,0xDC36,0xDC36,0xDC36,0xE457,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC36,0xE457,0xDC36,0xDC36,0xDC37,0xE457,0xDC36,0xDC37,0xDC37,0xDC37,0xDC57,0xDC36,0xDC36,0xDC37,0xDC57,0xDC58,0xDC58,0xD478,0xD499,0xD4BA,0x510D,0x202A,0x28CD,0x290E,0x290F,0x2930,0x2930,0x210F,0x210F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2930,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x210F,0x2930,0x2930,0x2930,0x2910,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2110,0x2930,0x210F,0x292F,0x210F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2130,0x212F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2131,0x2131,0x1932,0x1154,0x19F7,0x19F8,0x11D8,0x0976,0x0975,0x0955,0x0135,0x0134,0x0134,0x0955,0x11B7,0x11F8,0x19F8,0x19D7,0x1134,0x1932,0x2131,0x2131,0x2930,0x210F,0x210F,0x2910,0x210F,0x210F,0x212F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2110,0x2130,0x1931,0x1932,0x1133,0x11B5,0x19F7,0x19F7,0x1194,0x1111,0x1931,0x1910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x192F,0x192F,0x090E,0x012E,0x3C5A,0x1C19,0x1419,0x1439,0x0C19,0x0C18,0x0C18,0x0C18,0x0C18,0x0BF8,0x1418,0x13F8,0x13F8,0x1BF8,0x23F8,0x23D8,0x33F8,0x3397,0x0150,0x0950,0x1150,0x1150,0x1150,0x1170,0x1150,0x0950,0x0170,0x3398,0x2C19,0x1BF9,0x13F8,0x1419,0x0BD8,0x0BF8,0x0C18,0x0C18,0x1418,0x0BB7,0x0315,0x0BB7,0x1418,0x0BF8,0x0C19,0x0BF8,0x0BF8,0x13F8,0x1BF9,0x23F9,0x2C19,0x2357,0x01F2,0x014F,0x014F,0x01B1,0x3BF9,0x23B8,0x23D8,0x1BD8,0x13D8,0x13F8,0x1419,0x0C19,0x0C19,0x0C19,0x0418,0x0C19,0x0C19,0x0C19,0x0BF8,0x0BF8,0x1419,0x1419,0x1BF8,0x23F8,0x3439,0x4419,0x012F,0x1150,0x1930,0x1930,0x2150,0x2130,0x1930,0x1950,0x1150,0x012F,0x3BB8,0x447B,0x2418,0x1C18,0x1418,0x1418,0x0BF8,0x0BD8,0x1418,0x2419,0x345A,0x33B9,0x0170,0x0950,0x1130,0x1930,0x1930,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1133,0x21D7,0x19F7,0x09D8,0x09D9,0x01D9,0x01FA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x09FA,0x09D9,0x09D9,0x11D8,0x11B8,0x1196,0x11B6,0x1195,0x1995,0x1995,0x1995,0x1994,0x1994,0x1995,0x1994,0x1974,0x1994,0x1974,0x1994,0x1994,0x1974,0x1974,0x1974,0x1994,0x1994,0x1974,0x1974,0x1974,0x1974,0x1974,0x1994,0x1994,0x1974,0x1974,0x1974,0x1974,0x1994,0x1994,0x1994,0x1995,0x1995,0x21B5,0x21D5,0x21D6,0x21D6,0x21D6,0x21F6,0x19F6,0x21D6,0x1995,0x1153,0x1133,0x1932,0x1932,0x1912,0x1912,0x1912,0x1912,0x1113,0x1134,0x1155,0x1996,0x21F8,0x19D7,0x21F7,0x1995,0x1133,0x1132,0x1931,0x1931,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910, + 0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x2910,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x1931,0x2152,0x1932,0x1954,0x1175,0x1196,0x11B7,0x19F8,0x11D9,0x11F9,0x11F8,0x11B7,0x1196,0x1154,0x1133,0x1112,0x1931,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x1910,0x2130,0x2130,0x2130,0x2131,0x1931,0x1952,0x1132,0x1153,0x1175,0x11B6,0x11D7,0x11F8,0x1A39,0x11F9,0x11D8,0x11B7,0x1175,0x1133,0x1112,0x10F1,0x2131,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x212F,0x210F,0x2130,0x2130,0x210F,0x210F,0x2910,0x2930,0x210F,0x2930,0x290F,0x2930,0x290F,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x2930,0x2110,0x2110,0x212F,0x212F,0x210F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2110,0x210F,0x2110,0x2930,0x210F,0x2130,0x2130,0x2110,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x212F,0x292F,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x2110,0x2910,0x2910,0x212F,0x212F,0x2930,0x290F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2930,0x2110,0x2930,0x2110,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x2130,0x210F,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x2930,0x2910,0x2910,0x2910,0x210F,0x2910,0x2930,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x2910,0x2910,0x290F,0x292F,0x2930,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x214F,0x192F,0x090F,0x1A13,0x441A,0x2BB9,0x1BD9,0x13D9,0x13B9,0x13D9,0x13D9,0x13F9,0x13D9,0x1BF9,0x1BD9,0x23D9,0x2B98,0x3378,0x09D1,0x012F,0x012F,0x0130,0x01B1,0x33D9,0x341A,0x2C1A,0x23FA,0x2BF9,0x2B78,0x012F,0x08EE,0x194F,0x212F,0x212F,0x212F,0x212F,0x212F,0x192F,0x112F,0x010F,0x0170,0x33F9,0x23D9,0x23F9,0x23F9,0x2BF9,0x33D9,0x012F,0x010F,0x1170,0x1950,0x1930,0x2130,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x290F,0x2910,0x2910,0x290F,0x290F,0x292F,0x292F,0x292F,0x212F,0x2930,0x292F,0x2930,0x292F,0x292F,0x292F,0x290F,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2110,0x2930,0x212F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1953,0x1174,0x1195,0x21F7,0x2217,0x19D6,0x1995,0x1954,0x1953,0x1911,0x1931,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x1931,0x1932,0x1132,0x1153,0x1995,0x2A17,0x2A17,0x1994,0x1112,0x1912,0x1931,0x2131,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x210F,0x212F,0x2910,0x2110,0x212F,0x212F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2930,0x210F,0x290F,0x2110,0x2110,0x2110,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1912,0x1932,0x1113,0x21B5,0x21F6,0x21D6,0x1994,0x1112,0x1932,0x2151,0x2151,0x2130,0x2130,0x2130,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290E,0x310E,0x306B,0xABD8,0xD4BA,0xDC99,0xDC78,0xDC78,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC37,0xDC36,0xDC36,0xE457,0xDC37,0xDC57,0xDC37,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC36,0xDC36,0xDC37,0xE437,0xDC37,0xE457,0xDC37,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xDC37,0xDC58,0xDC58,0xDC78,0xD479,0xD479,0x92F3,0x2008,0x288B,0x30EE,0x290F,0x292F,0x290F,0x2930,0x290F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x210F,0x290F,0x210F,0x2910,0x290F,0x210F,0x2930,0x2930,0x292F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x2910,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1175,0x19F8,0x19F8,0x11D8,0x0976,0x0955,0x0935,0x0134,0x0934,0x0134,0x0155,0x0976,0x11F8,0x1A19,0x19D7,0x1155,0x1112,0x2131,0x2111,0x2110,0x2930,0x2910,0x2910,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x212F,0x2930,0x212F,0x212F,0x210F,0x2930,0x290F,0x212F,0x2930,0x2110,0x2130,0x2130,0x2930,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x292F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1932,0x1133,0x19D6,0x11F6,0x11D6,0x1195,0x1132,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2130,0x2110,0x2130,0x2110,0x2930,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x1930,0x112F,0x090E,0x012F,0x345A,0x1C19,0x0C19,0x0C39,0x0C19,0x0C39,0x0C18,0x0BF8,0x0BF8,0x0BF8,0x0BF8,0x0BD8,0x1BF8,0x1BD8,0x23D8,0x23D8,0x33F8,0x2B77,0x014F,0x0950,0x1150,0x1970,0x1150,0x1150,0x1150,0x0950,0x0150,0x1253,0x345A,0x1BF9,0x1419,0x1419,0x0C18,0x0C18,0x0C18,0x0C18,0x0C18,0x0C18,0x03D7,0x0BF8,0x0C18,0x03F8,0x0C39,0x0C18,0x0BF8,0x13F8,0x1C19,0x23F9,0x3419,0x0212,0x0190,0x012F,0x012F,0x01B1,0x441A,0x2BB8,0x23D8,0x1BD8,0x13F8,0x1419,0x0BF8,0x0C18,0x0C39,0x0419,0x0419,0x03F8,0x0419,0x0C19,0x0C19,0x0BF8,0x13F9,0x13F8,0x1BF9,0x23F9,0x3419,0x43F9,0x012F,0x1130,0x1930,0x1930,0x2130,0x2150,0x1930,0x1950,0x1150,0x012F,0x33B8,0x3439,0x1C18,0x1418,0x0BF8,0x03F8,0x0C18,0x0C19,0x1439,0x1C19,0x2C5A,0x2BB8,0x0170,0x0930,0x1150,0x1130,0x1930,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1153,0x11B5,0x11D7,0x09D8,0x09F9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x09D9,0x09F9,0x11D9,0x11B8,0x11D7,0x2238,0x2217,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x3237,0x2A37,0x2A37,0x2A17,0x2A17,0x2A16,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x3237,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x29F6,0x2A17,0x29F6,0x2A17,0x21F6,0x21F6,0x21F6,0x21F6,0x19B5,0x19B5,0x19B5,0x1994,0x1974,0x1933,0x1112,0x1912,0x1912,0x1912,0x1912,0x1933,0x1933,0x1134,0x1155,0x19B7,0x21F8,0x21F8,0x21F7,0x1975,0x1133,0x1112,0x1911,0x2151,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x2930,0x2130,0x210F,0x2130,0x2130,0x2130,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2110,0x2910,0x2930, + 0x2110,0x2110,0x210F,0x2110,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x212F,0x2930,0x212F,0x210F,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x2152,0x1932,0x1133,0x1155,0x1196,0x11B7,0x19D8,0x11F9,0x11F9,0x19F9,0x11B7,0x1196,0x1154,0x1133,0x1132,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x210F,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1132,0x1133,0x1175,0x1196,0x11D8,0x1A39,0x1A39,0x1A19,0x11D8,0x1197,0x1155,0x1134,0x1113,0x18F2,0x1911,0x2111,0x2111,0x2110,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2930,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x210F,0x212F,0x210F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x292F,0x212F,0x210F,0x290F,0x2930,0x2930,0x2130,0x2130,0x2130,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x212F,0x2930,0x2910,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x2930,0x292F,0x212F,0x212F,0x210F,0x292F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x290F,0x290F,0x2110,0x2110,0x2910,0x210F,0x2930,0x292F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x2130,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2110,0x2110,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x212F,0x210F,0x290F,0x210F,0x2930,0x2930,0x292F,0x212F,0x2930,0x2930,0x2930,0x2130,0x212F,0x2130,0x2930,0x2110,0x2910,0x2930,0x292F,0x292F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x214F,0x192F,0x00EE,0x2AB5,0x4C5B,0x2BD9,0x23FA,0x13D9,0x13D9,0x13D9,0x13D9,0x13F9,0x13D9,0x13D9,0x1BD9,0x1BB8,0x2BB8,0x3B98,0x09D1,0x012F,0x0130,0x0130,0x01B2,0x33DA,0x23B9,0x23D9,0x23D9,0x2BD9,0x33B9,0x014F,0x090E,0x192F,0x212F,0x214F,0x212F,0x210F,0x212F,0x1950,0x112F,0x010F,0x0170,0x33D9,0x2BF9,0x23B9,0x23D9,0x2BF9,0x443A,0x0170,0x0950,0x1150,0x1930,0x2150,0x2130,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x212F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x210F,0x2930,0x2930,0x290F,0x292F,0x292F,0x212F,0x292F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2131,0x2131,0x1931,0x1932,0x1953,0x1974,0x1995,0x19D6,0x19F7,0x19B5,0x1995,0x1994,0x1932,0x1931,0x1931,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1133,0x1133,0x1995,0x2A17,0x2A17,0x1974,0x1112,0x1912,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2110,0x2110,0x290F,0x2930,0x210F,0x290F,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x2110,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2111,0x1932,0x1932,0x1133,0x19B5,0x21D6,0x21D6,0x1974,0x1132,0x1952,0x2152,0x2151,0x2131,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x30EE,0x40CD,0xD4BB,0xDC9A,0xDC99,0xDC78,0xDC58,0xDC58,0xDC37,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC36,0xDC36,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC37,0xDC57,0xDC56,0xE456,0xDC36,0xE437,0xDC16,0xE437,0xE457,0xE457,0xDC57,0xDC37,0xDC37,0xDC57,0xDC37,0xDC57,0xDC17,0xDC37,0xDC58,0xDC99,0xD499,0xC439,0x594E,0x282A,0x288C,0x30EE,0x310F,0x2930,0x2930,0x2930,0x212F,0x2130,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x2930,0x2910,0x2910,0x290F,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x2930,0x210F,0x2130,0x2130,0x212F,0x2930,0x2930,0x2110,0x2930,0x2930,0x2110,0x2131,0x1911,0x1112,0x1175,0x1A18,0x1A39,0x11F8,0x0976,0x0135,0x0954,0x0934,0x0134,0x0954,0x0955,0x0976,0x1A19,0x223A,0x19D8,0x1134,0x10F2,0x2131,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x210F,0x2930,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x2110,0x1910,0x1931,0x1132,0x1153,0x19D6,0x19F7,0x19F6,0x1194,0x1132,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2910,0x2110,0x2110,0x2130,0x212F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x1930,0x112F,0x00EE,0x014F,0x3C9B,0x1C39,0x1439,0x0C39,0x03F8,0x0418,0x03F8,0x0C18,0x0BF8,0x1419,0x1C39,0x245A,0x2419,0x2C39,0x345A,0x3C5A,0x4C9B,0x3BB8,0x012F,0x1170,0x1950,0x112F,0x1930,0x1950,0x1150,0x1150,0x0130,0x014F,0x2397,0x2439,0x1419,0x0C19,0x0C18,0x0C19,0x03F8,0x0418,0x0418,0x0C39,0x03F8,0x0418,0x0418,0x0418,0x0C39,0x0C19,0x0C18,0x1419,0x1BF9,0x2C1A,0x2337,0x0170,0x014F,0x010E,0x010F,0x09D1,0x545B,0x3C1A,0x33F9,0x2C39,0x1C19,0x13F8,0x0C19,0x0C39,0x03F8,0x0419,0x0418,0x0419,0x03F8,0x03F9,0x0BF9,0x0BF9,0x1419,0x1C39,0x243A,0x343A,0x445B,0x543A,0x092F,0x1950,0x1950,0x1930,0x2130,0x1930,0x1930,0x1950,0x112F,0x010E,0x3BD8,0x345A,0x1C18,0x0C18,0x0BF8,0x0C39,0x0C18,0x0C18,0x0BF9,0x1419,0x243A,0x2BF9,0x0150,0x0950,0x1150,0x1950,0x1930,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1133,0x11B5,0x11D7,0x09D7,0x01F9,0x01D9,0x01DA,0x01B9,0x01BA,0x01BA,0x01BA,0x01BA,0x09DA,0x09FA,0x09D9,0x09D9,0x11D8,0x11B7,0x19B7,0x21F7,0x21F7,0x21F7,0x21F7,0x29F7,0x29F7,0x29F7,0x2A17,0x2A17,0x29F6,0x29F6,0x2A17,0x2A16,0x29F6,0x29F6,0x29F6,0x29F6,0x29F6,0x29D6,0x29F6,0x29F6,0x21F6,0x2A16,0x29F6,0x29F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21F6,0x21D5,0x21B5,0x21B5,0x1974,0x1953,0x1932,0x1111,0x1911,0x1911,0x1912,0x1912,0x1932,0x1113,0x1134,0x1155,0x19B7,0x21F8,0x21F8,0x21D7,0x1995,0x1133,0x1112,0x1931,0x1931,0x2151,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x2130,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2930, + 0x2110,0x210F,0x2110,0x210F,0x2910,0x2910,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x2930,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2111,0x1911,0x1933,0x1954,0x1155,0x1196,0x11B7,0x11D8,0x11F9,0x11F9,0x11F8,0x11B7,0x0976,0x1174,0x1133,0x1132,0x1931,0x2131,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1911,0x1132,0x1154,0x1175,0x11B7,0x11D8,0x1A19,0x1A19,0x11F9,0x11B8,0x1197,0x1155,0x1134,0x1933,0x18F2,0x1911,0x2111,0x2111,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x212F,0x212F,0x2930,0x2930,0x212F,0x212F,0x2930,0x212F,0x210F,0x2930,0x2110,0x2110,0x2930,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2930,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2110,0x210F,0x2910,0x2930,0x2930,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x292F,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x192F,0x00CE,0x2A95,0x4C5B,0x2BDA,0x1BD9,0x1BD9,0x13D9,0x13D9,0x13FA,0x1BFA,0x1BFA,0x13D9,0x1BD9,0x23B8,0x2BB8,0x3357,0x11F2,0x012F,0x012F,0x012F,0x01B1,0x3BDA,0x2399,0x23B9,0x23D9,0x2BFA,0x33B9,0x014F,0x08EE,0x192F,0x212F,0x212F,0x212F,0x190F,0x212F,0x1950,0x112F,0x010F,0x09B1,0x33D9,0x2BB9,0x23D9,0x2BD9,0x33FA,0x441A,0x0170,0x092F,0x1150,0x1930,0x2130,0x2130,0x212F,0x212F,0x2930,0x292F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2910,0x2110,0x2910,0x2930,0x2930,0x292F,0x292F,0x292F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x1931,0x1932,0x1953,0x1133,0x1154,0x1195,0x19B6,0x21F7,0x19D6,0x21D6,0x1994,0x1111,0x1931,0x1930,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x1133,0x1995,0x2217,0x21F7,0x1995,0x1112,0x1932,0x1931,0x2131,0x2131,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x212F,0x290F,0x2930,0x212F,0x2930,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2930,0x210F,0x290F,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x2910,0x2930,0x210F,0x2110,0x2110,0x210F,0x212F,0x292F,0x292F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2131,0x2131,0x1931,0x1932,0x1133,0x19B5,0x21F6,0x21D6,0x1994,0x1132,0x1952,0x2152,0x2151,0x2131,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x312F,0x30CD,0x596F,0xDCFC,0xDC99,0xDCB9,0xDC78,0xDC58,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC36,0xDC37,0xDC36,0xE457,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC36,0xDC56,0xDC56,0xE457,0xDC36,0xDC36,0xE437,0xE437,0xE457,0xDC36,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC37,0xDC37,0xDC58,0xDC79,0xDC79,0xD479,0xC459,0x7A72,0x200A,0x28AD,0x28EE,0x3130,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x210F,0x2910,0x2930,0x290F,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2110,0x2130,0x210F,0x210F,0x2130,0x2110,0x2930,0x2110,0x2110,0x2111,0x1912,0x1112,0x1175,0x1A18,0x1A18,0x11F8,0x0976,0x0955,0x0954,0x0954,0x0954,0x0954,0x0155,0x0976,0x1A19,0x223A,0x19D8,0x0934,0x1112,0x1911,0x2131,0x2130,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x2930,0x2930,0x290F,0x210F,0x210F,0x2930,0x212F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x292F,0x292F,0x290F,0x212F,0x212F,0x2130,0x212F,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x1931,0x1932,0x1133,0x19D6,0x19F6,0x19F6,0x1195,0x1132,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2910,0x2910,0x2930,0x2910,0x210F,0x212F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x1930,0x192F,0x08EE,0x014F,0x3C9B,0x1439,0x0C19,0x0C19,0x0418,0x0418,0x0C19,0x1419,0x1C5A,0x2C5A,0x345A,0x343A,0x3439,0x33F8,0x33B8,0x3BD8,0x545A,0x3316,0x012F,0x1150,0x194F,0x192F,0x1950,0x1950,0x1950,0x1150,0x0950,0x014F,0x0232,0x2C5A,0x1C19,0x1419,0x0C18,0x0C39,0x0418,0x0418,0x0438,0x0418,0x0418,0x0418,0x0418,0x0439,0x0418,0x0C19,0x0C39,0x13F8,0x23F9,0x2BF9,0x01B0,0x010F,0x010F,0x010F,0x0950,0x0991,0x2274,0x2AF5,0x3398,0x3C19,0x2C19,0x1BF8,0x1418,0x0418,0x0418,0x0419,0x0439,0x0439,0x03F8,0x03F8,0x0C19,0x1419,0x2C3A,0x343A,0x3419,0x3BF9,0x3B98,0x1A53,0x1150,0x1950,0x1930,0x1930,0x2130,0x1930,0x1950,0x1950,0x112F,0x00EE,0x2B77,0x345A,0x1C18,0x0BF8,0x0BF8,0x03F8,0x0C39,0x03F8,0x1439,0x13F9,0x243A,0x23B8,0x0150,0x0950,0x0930,0x1150,0x1950,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1152,0x1194,0x11D7,0x09F8,0x09F8,0x01D9,0x01D9,0x01DA,0x01BA,0x01BA,0x01BA,0x01B9,0x09FA,0x09F9,0x09D9,0x11D8,0x11B7,0x1996,0x1976,0x1995,0x1975,0x1974,0x1974,0x1974,0x1974,0x1995,0x1974,0x1994,0x1994,0x1994,0x1974,0x1994,0x1994,0x1974,0x1974,0x1994,0x1994,0x1974,0x1994,0x1974,0x1994,0x1994,0x1974,0x1994,0x1994,0x1994,0x1994,0x1994,0x1974,0x1974,0x1974,0x1974,0x1974,0x1153,0x1974,0x1974,0x1953,0x1953,0x1953,0x1133,0x1932,0x1932,0x1911,0x1911,0x1911,0x1911,0x1932,0x1932,0x1112,0x1154,0x1155,0x1996,0x2218,0x21F8,0x21D7,0x1995,0x1133,0x1112,0x1911,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x2930,0x290F, + 0x290F,0x210F,0x210F,0x2110,0x2930,0x2910,0x2910,0x2110,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x2910,0x2910,0x2110,0x2130,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x212F,0x2130,0x2930,0x212F,0x210F,0x2130,0x2130,0x2110,0x2131,0x1932,0x1932,0x1954,0x1155,0x1176,0x11B8,0x11D8,0x11F9,0x1219,0x11F8,0x11D7,0x0975,0x1154,0x1133,0x1111,0x1931,0x1931,0x2131,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x20EF,0x210F,0x20EF,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2111,0x1931,0x10F1,0x1112,0x1133,0x1175,0x1196,0x11D8,0x11F9,0x1A19,0x11F8,0x11D8,0x1197,0x1155,0x1134,0x1113,0x1912,0x2112,0x2111,0x2111,0x2111,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x2130,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x290F,0x2930,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2950,0x2930,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x2930,0x212F,0x2110,0x2930,0x2110,0x210F,0x212F,0x210F,0x2930,0x2930,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2110,0x210F,0x2110,0x2110,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x210F,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x212F,0x2930,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x1930,0x090F,0x11D2,0x4C3B,0x3C1A,0x23D9,0x1BD9,0x1BDA,0x1BD9,0x1BFA,0x1BFA,0x1BDA,0x1BD9,0x23D9,0x2BD9,0x3BFA,0x3B57,0x0970,0x010F,0x010F,0x010F,0x09B1,0x43FA,0x341A,0x2BFA,0x2BFA,0x2BD9,0x3BD9,0x0970,0x08EE,0x190F,0x18EF,0x212F,0x214F,0x190F,0x212F,0x192F,0x090E,0x00CE,0x1A74,0x3C1A,0x33D9,0x33FA,0x33FA,0x3BFA,0x43FA,0x0130,0x0930,0x1130,0x1930,0x2110,0x2130,0x212F,0x2950,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x290F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x292F,0x212F,0x292F,0x292F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2131,0x1932,0x1932,0x1133,0x1153,0x1175,0x19D6,0x19F7,0x2217,0x19B5,0x1153,0x1131,0x1931,0x1931,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x1911,0x1932,0x1933,0x1153,0x1995,0x2217,0x2217,0x1974,0x10F2,0x1912,0x1931,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2930,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2910,0x290F,0x210F,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x2110,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2131,0x2111,0x1931,0x1932,0x1132,0x21B5,0x21F6,0x21F6,0x1974,0x1112,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x2930,0x2930,0x290F,0x310F,0x288C,0x8AB3,0xE51C,0xDCB9,0xDC99,0xDC58,0xDC57,0xDC37,0xDC37,0xDC57,0xE457,0xDC37,0xDC16,0xDC37,0xDC36,0xDC36,0xDC36,0xDC57,0xDC57,0xDC57,0xE457,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xE457,0xE437,0xE437,0xDC37,0xE457,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC38,0xDC58,0xDC79,0xDC9A,0xDCDB,0xD51D,0x82D4,0x200A,0x28AD,0x3110,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2910,0x2110,0x2110,0x290F,0x290F,0x2930,0x2910,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2910,0x2910,0x210F,0x290F,0x2910,0x2910,0x2910,0x2930,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1911,0x1112,0x1175,0x19F8,0x1A18,0x11D8,0x0976,0x0135,0x0134,0x0134,0x0954,0x0154,0x0155,0x0996,0x19F8,0x19F8,0x19D7,0x1154,0x1112,0x1931,0x2131,0x2130,0x2130,0x2110,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x210F,0x210F,0x290F,0x210F,0x2930,0x212F,0x212F,0x2930,0x2930,0x212F,0x2130,0x2110,0x210F,0x210F,0x212F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x290F,0x290F,0x292F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1932,0x1153,0x19D6,0x19F7,0x19F6,0x1195,0x1132,0x1111,0x1931,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2110,0x2910,0x2930,0x2110,0x210F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x2110,0x2110,0x2910,0x2110,0x2930,0x212F,0x2930,0x212F,0x212F,0x2150,0x212F,0x212F,0x1950,0x112F,0x00EE,0x014F,0x3CBB,0x1439,0x0C19,0x0418,0x0419,0x0418,0x0C19,0x0BB7,0x0273,0x01F0,0x018F,0x014E,0x014E,0x012E,0x00ED,0x00CD,0x00AD,0x00EE,0x1150,0x112F,0x1970,0x192F,0x1930,0x1930,0x1950,0x1950,0x1150,0x014F,0x016F,0x2377,0x2439,0x1419,0x0C39,0x0419,0x03F8,0x0418,0x0438,0x0438,0x0439,0x0439,0x0418,0x0419,0x0418,0x03F8,0x1439,0x1C19,0x2BD9,0x0233,0x012F,0x010E,0x1170,0x19B1,0x1170,0x092F,0x00EE,0x00EE,0x00EE,0x012F,0x014F,0x0293,0x1C39,0x0C18,0x0C39,0x0419,0x03F8,0x0439,0x0C19,0x0C19,0x0BF9,0x2C7B,0x01F2,0x0170,0x012F,0x012F,0x010F,0x092F,0x1150,0x1930,0x1930,0x1910,0x2150,0x2150,0x1930,0x1950,0x092F,0x010E,0x22F5,0x449B,0x1C19,0x1419,0x0C18,0x0C19,0x0C19,0x0C19,0x1439,0x1C3A,0x245A,0x2BB8,0x0150,0x0950,0x0930,0x1950,0x1930,0x2130,0x2150,0x2130,0x2131,0x2131,0x1911,0x1132,0x1153,0x11D6,0x1218,0x0A19,0x09F9,0x01D9,0x01D9,0x01DA,0x09FA,0x09FA,0x0A1A,0x0A1A,0x11F9,0x11D8,0x11B7,0x1196,0x1175,0x1134,0x1113,0x1112,0x1112,0x1112,0x1132,0x1933,0x1132,0x1112,0x1132,0x1932,0x1912,0x1932,0x1932,0x1132,0x1933,0x1933,0x1133,0x1133,0x1132,0x1933,0x1133,0x1132,0x1933,0x1932,0x1932,0x1953,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1953,0x1952,0x1953,0x1953,0x1932,0x1932,0x1112,0x1912,0x1932,0x1931,0x1932,0x1931,0x1931,0x1931,0x1931,0x1932,0x1953,0x1974,0x1154,0x19B6,0x21F7,0x21F7,0x21F7,0x1995,0x1112,0x1111,0x1111,0x1931,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x290F,0x292F, + 0x2930,0x212F,0x212F,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x212F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1933,0x1134,0x1175,0x1196,0x11B7,0x11F9,0x1219,0x1219,0x11F8,0x11B7,0x1196,0x1154,0x1132,0x1932,0x1931,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2110,0x1910,0x1931,0x1112,0x1133,0x1175,0x1196,0x11D7,0x1A19,0x1A19,0x19F8,0x11D8,0x1196,0x1175,0x1154,0x1933,0x1912,0x1911,0x2111,0x2111,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x212F,0x210F,0x290F,0x210F,0x212F,0x212F,0x292F,0x210F,0x292F,0x212F,0x212F,0x292F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x2151,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2930,0x2930,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2910,0x2910,0x2930,0x210F,0x290F,0x210F,0x2910,0x2910,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x212F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x192F,0x1930,0x1130,0x0950,0x4399,0x441A,0x33FA,0x23FA,0x23FA,0x23FA,0x23FA,0x1BDA,0x1BD9,0x23DA,0x2BFA,0x33D9,0x43DA,0x3AF6,0x090F,0x08EF,0x090F,0x010F,0x09D2,0x43FA,0x33DA,0x33FA,0x2BD9,0x33B9,0x43D9,0x094F,0x08EE,0x212F,0x212F,0x212F,0x2150,0x212F,0x192F,0x112F,0x00CE,0x0991,0x4BDA,0x3BDA,0x33DA,0x33D9,0x33DA,0x3BFA,0x43DA,0x0130,0x1150,0x1930,0x1930,0x2110,0x2130,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2910,0x2910,0x210F,0x2910,0x210F,0x290F,0x2910,0x2910,0x2910,0x2930,0x2110,0x210F,0x2130,0x210F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x2930,0x2930,0x212F,0x2930,0x2130,0x212F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1153,0x1174,0x1175,0x19F7,0x19F6,0x21D6,0x21B5,0x1132,0x1931,0x1931,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x1931,0x1932,0x1933,0x1133,0x1995,0x21F7,0x2217,0x1995,0x1112,0x1912,0x1931,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2930,0x212F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2930,0x210F,0x210F,0x2910,0x290F,0x210F,0x2910,0x2910,0x2930,0x2930,0x2910,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x1931,0x1932,0x1133,0x19B5,0x21D6,0x21D6,0x1994,0x1132,0x1932,0x2151,0x2131,0x2131,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x3130,0x290F,0x30EF,0x284B,0xABD8,0xE4FB,0xDC99,0xDC98,0xDC78,0xDC57,0xDC58,0xDC57,0xDC57,0xDC37,0xDC37,0xE437,0xDC37,0xDC36,0xE436,0xDC37,0xDC57,0xDC57,0xDC37,0xDC57,0xDC37,0xDC57,0xDC57,0xDC36,0xDC36,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC58,0xDC79,0xDC79,0xDCBA,0xED7E,0xABF9,0x284B,0x286C,0x28EF,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x2930,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2110,0x2910,0x210F,0x2910,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1132,0x1154,0x19D7,0x11D8,0x11D8,0x0997,0x0155,0x0134,0x0134,0x0134,0x0134,0x0155,0x09B7,0x1A18,0x1A18,0x19D7,0x1154,0x1112,0x1931,0x2131,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x2930,0x290F,0x2930,0x2930,0x212F,0x212F,0x2930,0x210F,0x2930,0x210F,0x2930,0x2930,0x212F,0x2930,0x210F,0x212F,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x1931,0x1132,0x1153,0x19D6,0x19F7,0x11D6,0x11B5,0x1132,0x1931,0x1931,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2910,0x210F,0x2910,0x210F,0x210F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x290F,0x2110,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x194F,0x194F,0x00EE,0x012F,0x3C9B,0x1C39,0x0BF8,0x0419,0x0C39,0x0419,0x0C19,0x0BD8,0x02B4,0x0232,0x0232,0x0232,0x0A52,0x1252,0x09F1,0x012F,0x00EE,0x00AD,0x112F,0x1950,0x1950,0x1950,0x2130,0x192F,0x1930,0x1950,0x1150,0x0950,0x016F,0x0211,0x345A,0x1C19,0x0C19,0x0C39,0x0418,0x0439,0x0438,0x0418,0x0439,0x0439,0x0418,0x0419,0x0439,0x0C39,0x1419,0x2439,0x2357,0x016F,0x010F,0x092F,0x1970,0x1950,0x1150,0x1150,0x1150,0x1150,0x092F,0x012F,0x010E,0x01F1,0x2439,0x0C18,0x0418,0x0C39,0x03F8,0x0419,0x0C39,0x0C19,0x13F9,0x347B,0x0190,0x012F,0x0150,0x0930,0x1150,0x1150,0x1930,0x1930,0x1930,0x1930,0x2130,0x2150,0x192F,0x1950,0x112F,0x010E,0x1253,0x449B,0x1BF9,0x1439,0x0C19,0x0C39,0x0C19,0x0C39,0x1439,0x1C39,0x243A,0x2398,0x0150,0x0950,0x1150,0x1130,0x1950,0x2150,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1153,0x1195,0x11D6,0x1218,0x09F9,0x09F9,0x09D9,0x09FA,0x0A1A,0x09F9,0x1219,0x09D8,0x11D8,0x11B7,0x1175,0x1174,0x1133,0x1113,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1932,0x1932,0x1911,0x1911,0x1932,0x1932,0x1932,0x1932,0x1932,0x1912,0x1932,0x1912,0x1912,0x1932,0x1932,0x1912,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1952,0x1932,0x1111,0x1932,0x1911,0x1911,0x1911,0x1931,0x2131,0x1931,0x2151,0x1931,0x1931,0x1932,0x1952,0x1153,0x1994,0x19B6,0x19F7,0x2217,0x21F7,0x1995,0x1153,0x1111,0x1111,0x1931,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x212F,0x210F,0x210F,0x2130,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x212F,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x2930,0x290F, + 0x212F,0x210F,0x210F,0x210F,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x292F,0x290F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x212F,0x2930,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2132,0x1932,0x1933,0x1133,0x1155,0x1196,0x11B7,0x1A19,0x1219,0x1219,0x11F8,0x11B6,0x1175,0x1154,0x1133,0x1952,0x1931,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x2930,0x212F,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x1911,0x1911,0x1112,0x1133,0x1154,0x11B6,0x19D8,0x11F8,0x1A19,0x1A19,0x19D8,0x11B6,0x1175,0x1954,0x1933,0x1932,0x1911,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x292F,0x210F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2110,0x210F,0x210F,0x210F,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x1910,0x1910,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x2130,0x212F,0x2130,0x210F,0x212F,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x212F,0x2130,0x210F,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x290F,0x2930,0x2930,0x2930,0x290F,0x212F,0x212F,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x212F,0x210F,0x212F,0x212F,0x2110,0x2110,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x290F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x1930,0x1930,0x1130,0x2234,0x43DA,0x3BFA,0x33FA,0x2BFA,0x2BDA,0x2BDA,0x23DA,0x2BDA,0x2BB9,0x33DA,0x43DA,0x4399,0x2A33,0x110F,0x08EF,0x08EF,0x010F,0x09B2,0x4C1A,0x33D9,0x33D9,0x2BB9,0x33B9,0x3B99,0x092F,0x08CE,0x210F,0x210F,0x212F,0x2130,0x192F,0x1950,0x00EE,0x2233,0x541B,0x43FA,0x3BFA,0x33DA,0x33B9,0x3BDA,0x441A,0x4BFA,0x010F,0x1130,0x1930,0x2130,0x2130,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x210F,0x210F,0x2910,0x2110,0x2910,0x2910,0x2130,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x310F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2110,0x2930,0x2930,0x290F,0x292F,0x290F,0x292F,0x2930,0x212F,0x210F,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x2131,0x1911,0x1931,0x1132,0x1153,0x1154,0x1195,0x21F7,0x19D6,0x29F6,0x1953,0x1131,0x1931,0x2151,0x2130,0x212F,0x210F,0x2130,0x2110,0x2131,0x1932,0x1933,0x1133,0x19B6,0x2217,0x2217,0x1995,0x1112,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x210F,0x292F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x212F,0x210F,0x2910,0x2910,0x2110,0x2930,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2910,0x2930,0x2110,0x290F,0x290F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2131,0x2131,0x1932,0x1932,0x1133,0x21D6,0x21F6,0x21D6,0x1974,0x1132,0x1932,0x2151,0x2131,0x2931,0x2930,0x2950,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x2930,0x2950,0x2930,0x3130,0x3130,0x3130,0x310F,0x30EE,0x282B,0xCCBB,0xE4FA,0xDC98,0xDC78,0xDC58,0xDC57,0xDC57,0xDC37,0xDC57,0xDC37,0xE457,0xDC37,0xDC37,0xDC57,0xE457,0xDC36,0xDC57,0xDC57,0xDC57,0xE457,0xDC37,0xDC36,0xDC57,0xDC57,0xE457,0xDC37,0xE457,0xDC37,0xE457,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC17,0xDC37,0xDC38,0xDC58,0xD479,0xDCDB,0x8293,0x38AC,0x30CE,0x28CE,0x28EF,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2130,0x210F,0x2110,0x2110,0x2130,0x2130,0x2131,0x2132,0x1932,0x1154,0x1996,0x11B7,0x11D7,0x09D7,0x0197,0x0156,0x0156,0x0176,0x0176,0x0997,0x1A18,0x11D7,0x11D7,0x19B6,0x1154,0x1932,0x2131,0x2130,0x2110,0x2130,0x2130,0x2110,0x210F,0x2930,0x2930,0x210F,0x210F,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2930,0x212F,0x212F,0x2930,0x210F,0x290F,0x210F,0x212F,0x2130,0x212F,0x2130,0x212F,0x210F,0x210F,0x2110,0x2130,0x1931,0x1132,0x1153,0x19D6,0x1A17,0x19F6,0x1194,0x1112,0x1911,0x1911,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x2930,0x2930,0x2110,0x2910,0x2910,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x292F,0x290F,0x292F,0x212F,0x212F,0x2130,0x212F,0x2150,0x192F,0x00EE,0x012F,0x3C7B,0x1419,0x0C18,0x0C39,0x03F8,0x0419,0x0419,0x0C19,0x1419,0x1C39,0x245A,0x2C3A,0x2C5A,0x345A,0x3C3A,0x4C5B,0x1A33,0x00CE,0x112F,0x1950,0x192F,0x212F,0x2130,0x2130,0x2130,0x1930,0x192F,0x1150,0x094F,0x016F,0x1B15,0x2C5A,0x1C5A,0x0C18,0x0419,0x0418,0x0438,0x0438,0x0438,0x0439,0x0418,0x0418,0x0419,0x0C19,0x13F9,0x343A,0x0212,0x012F,0x092F,0x1970,0x1950,0x192F,0x1950,0x192F,0x1930,0x1130,0x114F,0x094F,0x00EE,0x0190,0x2439,0x1419,0x0418,0x03F8,0x0418,0x0C19,0x03F8,0x0BF9,0x1C19,0x44BC,0x0170,0x0150,0x0950,0x1171,0x1150,0x1950,0x1950,0x1930,0x1930,0x1930,0x2130,0x192F,0x1930,0x1950,0x112F,0x012F,0x0170,0x3C3A,0x1BD8,0x0BF8,0x0BF8,0x0BF9,0x0C19,0x0C19,0x1419,0x1419,0x243A,0x23B8,0x0150,0x0950,0x1170,0x1950,0x1950,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x1931,0x1952,0x1974,0x1195,0x11D6,0x11D7,0x11D8,0x11F9,0x09D8,0x11F9,0x11F9,0x11D8,0x11B7,0x1196,0x1175,0x1174,0x1933,0x1932,0x1932,0x1931,0x1911,0x1911,0x2131,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x2132,0x1911,0x1931,0x2131,0x1911,0x1911,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1951,0x1931,0x1931,0x1931,0x1931,0x1911,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x1931,0x1931,0x1132,0x1133,0x1174,0x19D6,0x2217,0x2217,0x19D7,0x1995,0x1133,0x1111,0x1111,0x1931,0x2151,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2930,0x2930, + 0x212F,0x212F,0x212F,0x2110,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x210F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1932,0x1933,0x1154,0x1155,0x1196,0x11D7,0x11F8,0x1219,0x1218,0x19F8,0x19D7,0x1175,0x1174,0x1133,0x1912,0x1932,0x2111,0x2131,0x2931,0x2130,0x2110,0x2930,0x292F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1112,0x1153,0x1175,0x1196,0x11D7,0x1A18,0x1A18,0x1A18,0x19D7,0x1196,0x1175,0x1954,0x1113,0x1912,0x1912,0x1912,0x1932,0x1931,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x290F,0x2930,0x2110,0x210F,0x212F,0x2110,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1931,0x1930,0x2151,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2110,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x290F,0x2930,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2110,0x2110,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2110,0x210F,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x1930,0x1130,0x1171,0x3B38,0x43FA,0x3BDA,0x33DA,0x2BD9,0x2BDA,0x2BDA,0x33DA,0x33BA,0x43DA,0x4B99,0x2A54,0x110F,0x10EE,0x190F,0x08EF,0x010F,0x11B2,0x4C1B,0x3BDA,0x33DA,0x33DA,0x3BDA,0x4379,0x090F,0x08AE,0x210F,0x212F,0x212F,0x2130,0x1930,0x110F,0x21F2,0x53DA,0x4BDA,0x43DA,0x3BB9,0x33B9,0x3BBA,0x43DA,0x4C1B,0x4399,0x00EF,0x1130,0x1930,0x2130,0x2130,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2910,0x2910,0x2910,0x2930,0x210F,0x210F,0x290F,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x2930,0x212F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2130,0x2130,0x210F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2131,0x1931,0x1932,0x1132,0x1133,0x1174,0x19D6,0x21F6,0x21D6,0x1973,0x1112,0x1931,0x2131,0x2150,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1933,0x1133,0x19B6,0x2A17,0x21F7,0x1995,0x1112,0x1932,0x1931,0x2131,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x292F,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2930,0x290F,0x2910,0x2910,0x290F,0x2910,0x2910,0x2110,0x210F,0x290F,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2110,0x2131,0x2131,0x1932,0x1932,0x1133,0x21D6,0x21F6,0x21F6,0x1974,0x1112,0x1952,0x2152,0x2131,0x2931,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2950,0x2950,0x2950,0x2930,0x3151,0x3130,0x3130,0x3110,0x310F,0x30AE,0x38AC,0xE53D,0xDCB9,0xDC78,0xDC78,0xDC57,0xDC57,0xDC57,0xE457,0xDC57,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xDC17,0xDC37,0xDC38,0xDC58,0xDC99,0xDCDB,0x7A11,0x302A,0x410E,0x30EE,0x28EE,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x290F,0x210F,0x290F,0x210F,0x2930,0x290F,0x290F,0x2930,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2110,0x2110,0x2930,0x2110,0x210F,0x2130,0x2130,0x2131,0x2131,0x1932,0x1933,0x1175,0x19B6,0x19F8,0x1218,0x1219,0x11F8,0x11F8,0x11D8,0x11D8,0x1A18,0x19F8,0x19D7,0x1175,0x1154,0x1953,0x1932,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x2930,0x210F,0x2930,0x212F,0x212F,0x2930,0x2930,0x212F,0x2930,0x2930,0x290F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x210F,0x290F,0x2930,0x290F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x1931,0x1932,0x0933,0x19D6,0x19F7,0x19D6,0x11B5,0x1112,0x1911,0x1911,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x212F,0x2930,0x2930,0x2910,0x2110,0x2930,0x2910,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2930,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x192F,0x192F,0x00EE,0x012F,0x3C5A,0x1C19,0x1439,0x0418,0x0C19,0x0419,0x0419,0x0C19,0x0C19,0x0C19,0x1419,0x13F9,0x1C19,0x1BF8,0x23F9,0x3C3A,0x1212,0x00CE,0x1130,0x1930,0x192F,0x212F,0x2130,0x2130,0x212F,0x192F,0x1950,0x112F,0x1170,0x016F,0x01B0,0x343A,0x245A,0x1439,0x03F8,0x0419,0x0439,0x0459,0x0439,0x0439,0x0418,0x0C39,0x0C19,0x1419,0x2419,0x2377,0x012F,0x012F,0x1150,0x1150,0x1950,0x192F,0x192F,0x192F,0x192F,0x1930,0x112F,0x1150,0x010E,0x014F,0x2C3A,0x0BF8,0x0C19,0x0C39,0x0C19,0x0BF9,0x1439,0x13F9,0x1C19,0x343A,0x0150,0x0950,0x0950,0x1150,0x1130,0x1950,0x1950,0x1930,0x1930,0x192F,0x2130,0x192F,0x1950,0x192F,0x1150,0x010F,0x010F,0x2B77,0x23F9,0x1419,0x0BF8,0x0C19,0x0BF9,0x0C19,0x13F9,0x13F9,0x2C5A,0x2398,0x0150,0x0950,0x1150,0x1950,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1953,0x1154,0x1175,0x1196,0x11B6,0x11D7,0x11D7,0x11D7,0x11B7,0x1196,0x1195,0x1174,0x1153,0x1932,0x1932,0x1911,0x1911,0x2131,0x2131,0x2131,0x2111,0x2131,0x2110,0x2131,0x2131,0x2110,0x2111,0x2131,0x2131,0x2131,0x1910,0x2110,0x2110,0x2130,0x2130,0x2111,0x2110,0x2131,0x2110,0x2111,0x1910,0x2131,0x2131,0x2111,0x1910,0x2110,0x1910,0x2131,0x1930,0x1930,0x1930,0x1931,0x1930,0x1930,0x1910,0x2130,0x2110,0x2110,0x2110,0x2131,0x1931,0x1931,0x1132,0x1953,0x1994,0x19B5,0x2217,0x1A17,0x21F7,0x19B5,0x1133,0x1112,0x1111,0x1931,0x2151,0x2150,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x210F,0x2910,0x290F,0x210F,0x290F,0x212F,0x210F,0x2930,0x210F,0x210F,0x2930,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110, + 0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x2110,0x2110,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x1931,0x1952,0x1953,0x1154,0x1175,0x1176,0x11B7,0x11F8,0x1218,0x1A39,0x19F8,0x19D7,0x1175,0x1134,0x1933,0x1932,0x2132,0x2111,0x2110,0x2110,0x2130,0x2930,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x292F,0x212F,0x2130,0x2930,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x1931,0x1932,0x1932,0x1133,0x1175,0x1196,0x11D7,0x1A39,0x1A39,0x11D8,0x11D7,0x1196,0x1175,0x1133,0x1133,0x1112,0x1932,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x292F,0x292F,0x210F,0x290F,0x212F,0x292F,0x210F,0x212F,0x2930,0x2930,0x212F,0x212F,0x2930,0x210F,0x212F,0x2110,0x2130,0x292F,0x212F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x2130,0x2130,0x2150,0x2130,0x2131,0x2131,0x1931,0x1932,0x1932,0x1132,0x1132,0x1932,0x1952,0x1952,0x1952,0x1951,0x1931,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x210F,0x290F,0x292F,0x212F,0x212F,0x2930,0x210F,0x2930,0x2930,0x210F,0x212F,0x210F,0x2930,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2930,0x290F,0x2930,0x2930,0x2930,0x210F,0x2930,0x212F,0x2930,0x290F,0x2930,0x210F,0x2930,0x210F,0x212F,0x212F,0x290F,0x290F,0x2930,0x2930,0x2930,0x290F,0x2930,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x2110,0x210F,0x210F,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1930,0x1910,0x1110,0x19D2,0x4BDA,0x43DA,0x3BDA,0x33B9,0x33B9,0x3BBA,0x43DA,0x439A,0x4379,0x3295,0x1130,0x10EE,0x18EE,0x2150,0x192F,0x00EE,0x19D2,0x4BFB,0x3BB9,0x3BDA,0x3BDA,0x3BBA,0x4399,0x090F,0x10AE,0x2110,0x2130,0x2130,0x1950,0x00CE,0x2A13,0x5BFB,0x4BBA,0x4BBA,0x3B99,0x3BB9,0x43DA,0x3BBA,0x43DA,0x541B,0x32B6,0x1150,0x1950,0x1930,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2910,0x2910,0x2930,0x2110,0x2930,0x212F,0x210F,0x2110,0x2930,0x2930,0x210F,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x2930,0x2130,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x2910,0x210F,0x290F,0x212F,0x2130,0x212F,0x210F,0x210F,0x212F,0x2130,0x2110,0x2130,0x2130,0x1931,0x1931,0x1132,0x1132,0x1153,0x19B6,0x21D6,0x21D6,0x1154,0x1132,0x1932,0x1951,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1912,0x1134,0x21B6,0x2A17,0x2217,0x1995,0x1112,0x1932,0x1931,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x212F,0x210F,0x2930,0x2910,0x210F,0x210F,0x2930,0x290F,0x210F,0x212F,0x212F,0x210F,0x290F,0x2930,0x210F,0x210F,0x2930,0x2110,0x2930,0x2910,0x2910,0x290F,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2131,0x2131,0x1932,0x1932,0x1153,0x21D6,0x21D6,0x21F6,0x1995,0x1132,0x1952,0x2152,0x2131,0x2131,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x2950,0x2950,0x2930,0x2950,0x3130,0x3131,0x3131,0x3110,0x30EF,0x308D,0x596F,0xE55C,0xDCB9,0xDC98,0xDC78,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xE457,0xDC37,0xDC37,0xE457,0xDC37,0xDC57,0xDC37,0xDC37,0xDC16,0xDC37,0xDC37,0xDC37,0xDC16,0xDC17,0xDC37,0xDC37,0xDC17,0xDC37,0xDC17,0xDC58,0xDC59,0xDCBA,0xAB56,0x3009,0x410E,0x392F,0x310F,0x312F,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x2930,0x290F,0x210F,0x210F,0x2930,0x2930,0x290F,0x292F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x210F,0x2910,0x2930,0x212F,0x212F,0x2130,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1912,0x1133,0x1995,0x19F7,0x1A38,0x1A59,0x1A39,0x1A19,0x19F8,0x1A18,0x2259,0x2238,0x19B6,0x1154,0x1953,0x1932,0x1931,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x292F,0x292F,0x212F,0x210F,0x210F,0x2930,0x2930,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1932,0x1133,0x19D6,0x19F6,0x11D6,0x1195,0x1112,0x1931,0x2131,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x210F,0x2110,0x2930,0x2110,0x2110,0x210F,0x292F,0x2930,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x2130,0x1930,0x192F,0x00EE,0x012F,0x449B,0x1C39,0x1439,0x0C39,0x0C18,0x0C19,0x0C19,0x0C19,0x0C19,0x0C19,0x0C19,0x1439,0x1419,0x13D8,0x1BF8,0x343A,0x01B1,0x00CE,0x1150,0x1950,0x2150,0x2150,0x212F,0x212F,0x212F,0x2130,0x2150,0x1950,0x1170,0x0970,0x012F,0x0A73,0x347B,0x1C3A,0x0C19,0x0419,0x0418,0x0439,0x0439,0x0418,0x0439,0x0419,0x1419,0x2419,0x2BF9,0x01D1,0x010E,0x114F,0x114F,0x1950,0x192F,0x2150,0x212F,0x2150,0x192F,0x192F,0x192F,0x114F,0x010E,0x0170,0x343A,0x13F9,0x1419,0x0C19,0x0BF8,0x0C19,0x0BD8,0x1C19,0x243A,0x341A,0x0150,0x0950,0x0950,0x1150,0x1130,0x1950,0x1930,0x190F,0x212F,0x212F,0x212F,0x2150,0x192F,0x1950,0x1950,0x092F,0x00EE,0x1274,0x23B8,0x13F8,0x0BF8,0x0C19,0x0C19,0x1419,0x13F9,0x1C19,0x2C1A,0x2398,0x0150,0x0950,0x1150,0x1150,0x1930,0x190F,0x2110,0x210F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1132,0x1153,0x1154,0x1174,0x1175,0x1195,0x1175,0x1175,0x1174,0x1173,0x1132,0x1952,0x1931,0x1931,0x2111,0x2131,0x2131,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x1930,0x1930,0x1910,0x2130,0x2131,0x2151,0x2130,0x2131,0x1910,0x1911,0x1932,0x1953,0x1174,0x19D5,0x19F6,0x2217,0x2217,0x1995,0x1133,0x1112,0x1111,0x1910,0x2130,0x2150,0x2130,0x2110,0x20EF,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x210F,0x2930,0x290F,0x210F,0x290F,0x292F,0x292F,0x292F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x212F,0x2130,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2930, + 0x292F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x292F,0x292F,0x290F,0x290F,0x2910,0x290F,0x212F,0x2930,0x2110,0x210F,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x2930,0x210F,0x210F,0x212F,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2131,0x2131,0x1932,0x1932,0x1153,0x1153,0x1154,0x1175,0x11B7,0x1A18,0x1218,0x1A19,0x19F8,0x11B7,0x1176,0x1134,0x1933,0x1912,0x2131,0x2111,0x2130,0x2130,0x2130,0x2130,0x2950,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x212F,0x2130,0x210F,0x2130,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x2131,0x1911,0x1911,0x1912,0x1133,0x1174,0x11B6,0x11D7,0x1A18,0x1A39,0x11F8,0x11D7,0x11B6,0x1195,0x1154,0x1134,0x1133,0x1133,0x1133,0x1132,0x1932,0x1932,0x1932,0x1931,0x1931,0x2131,0x1910,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2930,0x2110,0x2130,0x2110,0x2110,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x212F,0x2130,0x2130,0x1931,0x1931,0x1932,0x1932,0x1153,0x1974,0x1994,0x1994,0x19B5,0x1994,0x1974,0x1973,0x1973,0x1953,0x1932,0x1931,0x1931,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x290F,0x290F,0x212F,0x2930,0x2130,0x210F,0x210F,0x212F,0x2930,0x2930,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x290F,0x2930,0x290F,0x2930,0x290F,0x2930,0x212F,0x2930,0x2930,0x290F,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x292F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2110,0x212F,0x212F,0x2930,0x212F,0x210F,0x212F,0x2130,0x2130,0x210F,0x190F,0x1910,0x1110,0x0910,0x4338,0x4BBA,0x43DA,0x3BB9,0x3BDA,0x43BA,0x4BDB,0x3B38,0x19B2,0x08EF,0x10CE,0x18EE,0x212F,0x2150,0x190F,0x08CE,0x19B2,0x541B,0x3B99,0x43FB,0x43DA,0x4399,0x4B79,0x0910,0x08AE,0x2110,0x2110,0x190F,0x10EF,0x3254,0x5BBA,0x539A,0x4B99,0x439A,0x439A,0x43BA,0x43BA,0x4BDA,0x4BDA,0x4B99,0x1171,0x1150,0x1950,0x2130,0x210F,0x2130,0x2930,0x2130,0x210F,0x210F,0x212F,0x212F,0x2930,0x212F,0x2130,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x2110,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x292F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x2110,0x2930,0x2910,0x2910,0x2930,0x290F,0x210F,0x212F,0x210F,0x210F,0x2130,0x212F,0x2130,0x2130,0x2130,0x1930,0x1931,0x1932,0x1132,0x1133,0x19D6,0x21F7,0x1995,0x1974,0x1133,0x1932,0x2151,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x1932,0x1933,0x1133,0x1996,0x21F7,0x2A17,0x19B5,0x1112,0x1932,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2930,0x2910,0x212F,0x2930,0x2930,0x290F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x210F,0x212F,0x212F,0x2930,0x2910,0x2910,0x210F,0x2930,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x292F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2110,0x2131,0x1932,0x1932,0x1153,0x21D6,0x21F6,0x21D6,0x1995,0x1112,0x1952,0x2152,0x2151,0x2931,0x2931,0x2930,0x2950,0x2930,0x2950,0x3150,0x2950,0x2950,0x3151,0x2930,0x3130,0x3130,0x3131,0x3130,0x30EF,0x308C,0x7A73,0xE55C,0xDCB9,0xDC78,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xE437,0xE437,0xDC37,0xE437,0xE457,0xDC37,0xDC37,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC17,0xDC37,0xDC17,0xDC37,0xDC17,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC38,0xDC58,0xDC79,0xCC39,0x404A,0x308C,0x390E,0x310F,0x310F,0x312F,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x212F,0x290F,0x2930,0x2930,0x290F,0x2930,0x2910,0x2910,0x2930,0x290F,0x2930,0x290F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2131,0x2111,0x1931,0x1932,0x1133,0x1995,0x11B5,0x19F7,0x19D7,0x11B6,0x11B6,0x19B6,0x19B6,0x1195,0x1154,0x1133,0x1932,0x1931,0x1931,0x2130,0x2130,0x2110,0x2130,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2110,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x210F,0x210F,0x212F,0x212F,0x2110,0x210F,0x210F,0x2910,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1932,0x1133,0x19D6,0x19F7,0x19D7,0x1195,0x1132,0x1911,0x2131,0x2110,0x2130,0x2930,0x210F,0x210F,0x292F,0x292F,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x290F,0x290F,0x292F,0x2930,0x292F,0x292F,0x2930,0x212F,0x2130,0x1930,0x1930,0x08EE,0x012F,0x447B,0x243A,0x1C39,0x0C19,0x0C18,0x0C19,0x0C19,0x0C39,0x0C19,0x0BF9,0x0BF9,0x0BF9,0x1419,0x1419,0x1C19,0x3C5A,0x0190,0x00AD,0x1950,0x2170,0x2150,0x2150,0x212F,0x212F,0x2150,0x2130,0x2130,0x1950,0x114F,0x1150,0x0950,0x0150,0x2BD9,0x243A,0x13F9,0x0C19,0x0C19,0x0419,0x0419,0x0C39,0x0C19,0x0C39,0x1419,0x2C1A,0x2B98,0x010E,0x012F,0x1150,0x112F,0x192F,0x212F,0x2130,0x212F,0x212F,0x212F,0x192F,0x192F,0x194F,0x010E,0x014F,0x341A,0x1C19,0x1C19,0x0BF8,0x0BF8,0x13F9,0x1C19,0x1BF9,0x2C1A,0x2BD9,0x012F,0x0950,0x1150,0x1150,0x1950,0x1930,0x192F,0x192F,0x212F,0x212F,0x212F,0x212F,0x212F,0x1950,0x1950,0x112F,0x00EE,0x09F2,0x341A,0x1BF9,0x13F9,0x1419,0x0BF9,0x13F9,0x1C19,0x1BF9,0x2C3A,0x2378,0x0150,0x0950,0x1150,0x1950,0x1930,0x2130,0x2130,0x2130,0x2130,0x2931,0x2130,0x2110,0x2131,0x2131,0x1932,0x1932,0x1932,0x1133,0x1133,0x1133,0x1133,0x1953,0x1132,0x1132,0x1131,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2930,0x2110,0x210F,0x2130,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2131,0x1931,0x1911,0x1932,0x1953,0x1174,0x19D6,0x2217,0x2217,0x19F6,0x1195,0x1153,0x1152,0x1111,0x1931,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2910,0x2110,0x2930,0x2910,0x210F,0x2930,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2930,0x210F,0x210F,0x2930,0x210F,0x212F,0x2130,0x210F,0x2930,0x2930, + 0x292F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x210F,0x212F,0x292F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2910,0x2930,0x290F,0x2930,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x2131,0x2132,0x1932,0x1132,0x1133,0x1154,0x1195,0x11B7,0x19F8,0x1A19,0x11F9,0x11D8,0x1197,0x1176,0x1134,0x1133,0x1932,0x2131,0x1911,0x2131,0x2130,0x2130,0x2150,0x2150,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2910,0x2110,0x210F,0x210F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2951,0x2951,0x2131,0x2131,0x1911,0x1112,0x1133,0x1154,0x1196,0x11D7,0x1A18,0x1A18,0x11F8,0x11D7,0x11B7,0x0996,0x0975,0x0954,0x1154,0x1134,0x1133,0x1133,0x1133,0x1952,0x1932,0x1932,0x1931,0x2131,0x2131,0x2131,0x1910,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x2930,0x2110,0x210F,0x212F,0x2930,0x2110,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x212F,0x2150,0x2130,0x2131,0x1931,0x1932,0x1133,0x1154,0x1995,0x19D6,0x19F7,0x19F7,0x19F7,0x1A17,0x19F7,0x19D6,0x11B5,0x1195,0x1153,0x1112,0x1932,0x1951,0x2151,0x2151,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2151,0x2131,0x2130,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x290F,0x2930,0x210F,0x212F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2930,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x212F,0x2130,0x190F,0x18EF,0x08EF,0x21F3,0x53DA,0x4BDA,0x43B9,0x43BA,0x43BA,0x4359,0x21F4,0x008E,0x10AE,0x10CE,0x212F,0x212F,0x2130,0x190F,0x08CF,0x19B2,0x5C1C,0x4BDB,0x43BA,0x43BA,0x439A,0x53BA,0x0910,0x10AF,0x2110,0x18EF,0x1930,0x5318,0x63FB,0x5BBA,0x4B79,0x4B59,0x4B7A,0x4BBA,0x4B9A,0x4BBA,0x4BBA,0x539A,0x1191,0x0910,0x1930,0x1930,0x2130,0x2130,0x2130,0x2930,0x2930,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x210F,0x290F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2930,0x2950,0x2130,0x1930,0x1931,0x1931,0x1153,0x1133,0x19D6,0x21F7,0x1995,0x1154,0x1133,0x1932,0x1931,0x2151,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1912,0x1133,0x21B6,0x21F7,0x21F7,0x1995,0x1112,0x1912,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x212F,0x212F,0x2930,0x290F,0x212F,0x212F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x210F,0x2110,0x2930,0x210F,0x2930,0x2930,0x290F,0x210F,0x2910,0x2910,0x210F,0x2910,0x2110,0x2110,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x1932,0x1132,0x1153,0x21D6,0x21F6,0x21D6,0x1995,0x1112,0x1952,0x2152,0x2151,0x2131,0x2931,0x2931,0x2951,0x2930,0x2930,0x2950,0x3150,0x2950,0x2950,0x3151,0x3130,0x3151,0x3131,0x310F,0x390F,0x308C,0x9336,0xE51C,0xDC99,0xDC98,0xDC78,0xDC57,0xDC57,0xDC37,0xDC37,0xDC36,0xDC37,0xE457,0xDC37,0xE457,0xDC37,0xDC57,0xDC36,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC37,0xDC37,0xE457,0xDC37,0xE437,0xDC37,0xDC37,0xDC16,0xDC16,0xDC37,0xDC37,0xDC37,0xDC37,0xDC38,0xDC38,0xDC58,0xDC59,0xE4FB,0x614E,0x2009,0x28AC,0x310E,0x310F,0x290F,0x290F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x2111,0x1911,0x1932,0x1932,0x1953,0x1953,0x1133,0x1954,0x1153,0x1133,0x1953,0x1933,0x1932,0x1931,0x1911,0x2131,0x2130,0x2110,0x2130,0x2110,0x2930,0x2930,0x2910,0x2110,0x2930,0x212F,0x210F,0x2130,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x2910,0x2910,0x2110,0x2910,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1932,0x1133,0x19D6,0x19F7,0x19F7,0x1195,0x1132,0x1911,0x2131,0x2131,0x2130,0x2930,0x210F,0x210F,0x210F,0x292F,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x290F,0x290F,0x292F,0x292F,0x292F,0x212F,0x2930,0x2130,0x2130,0x1930,0x08EF,0x010F,0x3C3B,0x23F9,0x1C19,0x1419,0x0BD8,0x0BD8,0x0BF9,0x0BF9,0x141A,0x0C19,0x1419,0x1419,0x13F9,0x1BF9,0x1BF9,0x44BC,0x09D1,0x00CE,0x1130,0x1930,0x2150,0x192F,0x2150,0x2130,0x2130,0x212F,0x2130,0x192F,0x1950,0x1970,0x092F,0x010F,0x0253,0x241A,0x13F9,0x13F9,0x1419,0x0C19,0x0C19,0x0C39,0x0C19,0x1419,0x1BF9,0x343A,0x1AB5,0x010E,0x010F,0x1150,0x1950,0x192F,0x212F,0x212F,0x2150,0x212F,0x210F,0x212F,0x2150,0x1950,0x08EE,0x012F,0x33D9,0x23D9,0x1BF9,0x1BF9,0x13D8,0x13D9,0x13D9,0x23F9,0x2C1A,0x33D9,0x012F,0x0950,0x1150,0x1950,0x1950,0x1950,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x192F,0x192F,0x192F,0x112F,0x00EF,0x11F2,0x3C5B,0x2419,0x1C19,0x1419,0x0BD8,0x13D9,0x1BF9,0x241A,0x343A,0x2B98,0x0150,0x0950,0x1150,0x1930,0x2130,0x2130,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2111,0x2131,0x2131,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1952,0x1951,0x1951,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x210F,0x210F,0x2930,0x2130,0x212F,0x2130,0x212F,0x2130,0x210F,0x2130,0x2130,0x2130,0x210F,0x212F,0x2130,0x2930,0x2930,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2131,0x1911,0x1932,0x1953,0x1174,0x19F6,0x21F7,0x21F7,0x19D6,0x1995,0x1153,0x1132,0x1131,0x1931,0x1931,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x212F,0x210F,0x2910,0x2910,0x2910,0x210F,0x210F,0x2930,0x210F,0x292F,0x292F, + 0x292F,0x292F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x210F,0x210F,0x292F,0x292F,0x290F,0x210F,0x290F,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x2930,0x2930,0x2930,0x210F,0x210F,0x292F,0x212F,0x210F,0x2130,0x2930,0x2910,0x2110,0x2110,0x2130,0x2130,0x1931,0x1931,0x1932,0x1132,0x1153,0x1174,0x1195,0x11B7,0x11D8,0x11F9,0x19F9,0x11D8,0x11B7,0x1175,0x1154,0x1133,0x1932,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2930,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2110,0x2930,0x2110,0x2930,0x2130,0x2131,0x2131,0x1911,0x1932,0x1132,0x1133,0x1175,0x1196,0x11F7,0x1A19,0x11F8,0x11F8,0x11F8,0x09D7,0x0996,0x0996,0x0975,0x0954,0x1154,0x1154,0x1154,0x1154,0x1953,0x1953,0x1952,0x1932,0x2131,0x1931,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x210F,0x2110,0x210F,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x2910,0x2110,0x2110,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1932,0x1112,0x1153,0x1195,0x19F7,0x19F7,0x1A17,0x1A17,0x19F7,0x1A18,0x1A18,0x19F7,0x19F7,0x19D6,0x1195,0x0933,0x1133,0x1952,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x1931,0x2131,0x2131,0x2111,0x2131,0x2111,0x2111,0x2111,0x2131,0x2131,0x2111,0x2111,0x2111,0x2131,0x1911,0x1911,0x1910,0x2131,0x2111,0x2111,0x2131,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2131,0x2131,0x2131,0x2111,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x212F,0x212F,0x210F,0x2130,0x2110,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x2930,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x212F,0x212F,0x2130,0x210F,0x2110,0x290F,0x290F,0x212F,0x212F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2130,0x210F,0x2110,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2910,0x2910,0x2910,0x290F,0x210F,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x212F,0x210F,0x212F,0x2110,0x18EF,0x10EF,0x1971,0x5BDA,0x53DA,0x4BDA,0x4BBA,0x4B9A,0x4B79,0x1951,0x088E,0x10AE,0x2110,0x212F,0x210F,0x190F,0x18EF,0x10CF,0x21B2,0x5BDB,0x4BBA,0x4BBA,0x4B9A,0x4B9A,0x539A,0x08EF,0x10AF,0x10CF,0x18F0,0x5318,0x6BDB,0x63BB,0x5B9A,0x4B7A,0x4B7A,0x4B9A,0x4BBA,0x4BBA,0x4B9A,0x539A,0x19B2,0x090F,0x1110,0x1910,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x292F,0x210F,0x212F,0x212F,0x292F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2930,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x212F,0x212F,0x212F,0x210F,0x2950,0x2130,0x210F,0x1910,0x1930,0x1952,0x1132,0x1133,0x19B6,0x21F7,0x21B6,0x1974,0x1133,0x1952,0x1951,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x21B6,0x21F7,0x21F7,0x1995,0x1112,0x1912,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x212F,0x2930,0x210F,0x212F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2910,0x210F,0x2910,0x210F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2930,0x2110,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1132,0x1153,0x21D6,0x21F6,0x21F6,0x19B5,0x1133,0x1953,0x2152,0x2151,0x2951,0x2931,0x2951,0x2950,0x2950,0x2930,0x2950,0x2950,0x3150,0x3151,0x3150,0x3151,0x3151,0x3950,0x310F,0x38EE,0x308C,0xABD8,0xDCFB,0xDCB9,0xDC78,0xDC78,0xDC57,0xDC37,0xDC57,0xDC37,0xDC57,0xDC37,0xDC37,0xDC36,0xE457,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xE437,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC17,0xDC17,0xDC37,0xDC17,0xDC17,0xDC17,0xDC17,0xDC37,0xDC17,0xDC37,0xDC38,0xDC38,0xDC9A,0xC3F8,0x2808,0x306B,0x30CD,0x30EE,0x310F,0x290F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2910,0x2930,0x210F,0x210F,0x2930,0x290F,0x2910,0x2910,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2910,0x2910,0x2930,0x290F,0x2910,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2111,0x1911,0x1911,0x1911,0x1911,0x1912,0x1932,0x1911,0x1911,0x1931,0x1911,0x1911,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x210F,0x2930,0x210F,0x2130,0x2130,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x212F,0x212F,0x210F,0x290F,0x2930,0x2910,0x210F,0x2930,0x2910,0x2110,0x2910,0x2110,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x1931,0x1932,0x1133,0x11D6,0x1A17,0x19D7,0x1995,0x1132,0x1911,0x2131,0x2131,0x2130,0x2930,0x2930,0x2930,0x290F,0x292F,0x212F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x210F,0x212F,0x292F,0x290F,0x292F,0x290F,0x2930,0x290F,0x212F,0x210F,0x2130,0x1910,0x1930,0x08EF,0x010F,0x441B,0x23B9,0x23FA,0x1BFA,0x13B8,0x0BB8,0x0BB9,0x0BB8,0x0BD9,0x13F9,0x1C1A,0x13D9,0x13D9,0x2419,0x2C1A,0x447B,0x11F2,0x00CE,0x1130,0x1930,0x2150,0x2150,0x212F,0x2130,0x212F,0x212F,0x2130,0x2150,0x2150,0x1930,0x08EF,0x00AE,0x2B37,0x2BFA,0x23D9,0x1BD9,0x1BF9,0x1C19,0x13F9,0x13F9,0x13D9,0x1BF9,0x23D9,0x33FA,0x1A74,0x00EE,0x090F,0x1130,0x192F,0x192F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x192F,0x08EE,0x00EE,0x3BFA,0x2398,0x23F9,0x23F9,0x1BD9,0x1BD9,0x1BB9,0x2BD9,0x33FA,0x3BD9,0x010F,0x1150,0x1150,0x1130,0x1930,0x2150,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x192F,0x2130,0x1930,0x08EF,0x0991,0x3C1A,0x2BF9,0x23F9,0x13D9,0x13B8,0x1BD9,0x23D9,0x2BFA,0x33FA,0x3378,0x012F,0x0930,0x1130,0x1930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1951,0x1930,0x2150,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x2130,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x1911,0x1932,0x1153,0x1974,0x19D6,0x2217,0x2217,0x21F7,0x1995,0x1133,0x1132,0x1131,0x1931,0x1930,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x212F,0x210F,0x212F,0x292F,0x210F,0x290F,0x210F,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x2910,0x2910,0x210F,0x210F,0x2910,0x2930,0x210F,0x2910,0x290F,0x290F,0x210F,0x210F,0x292F,0x290F, + 0x292F,0x292F,0x212F,0x210F,0x2930,0x290F,0x290F,0x2930,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2910,0x2930,0x2110,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x1931,0x1931,0x1931,0x1132,0x1153,0x1174,0x19B6,0x19B7,0x19D8,0x19F9,0x1A19,0x19F9,0x11D7,0x1175,0x1975,0x1133,0x1932,0x1932,0x2152,0x2131,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x210F,0x292F,0x210F,0x292F,0x292F,0x290F,0x210F,0x292F,0x210F,0x290F,0x290F,0x2110,0x210F,0x2110,0x2930,0x2110,0x2110,0x2130,0x2131,0x1931,0x1931,0x2152,0x1932,0x1133,0x1154,0x11B6,0x11F7,0x11F8,0x09F8,0x0A19,0x0A19,0x09D8,0x09B7,0x0996,0x0976,0x11B6,0x19B6,0x19B6,0x19B6,0x19B5,0x1974,0x1953,0x1953,0x1932,0x2132,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x2930,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1132,0x1153,0x19D6,0x19F7,0x19F7,0x19F7,0x19F7,0x11B6,0x11B6,0x11B6,0x11D7,0x19F8,0x19F8,0x11D8,0x11D7,0x11B6,0x0934,0x08F2,0x1112,0x1111,0x1111,0x10F1,0x10F1,0x1911,0x1911,0x1111,0x1111,0x1932,0x1911,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x10F1,0x18F1,0x18F1,0x18F1,0x10F1,0x10F1,0x10F1,0x1111,0x10F1,0x18F1,0x18F1,0x10F1,0x10F1,0x18F1,0x18F1,0x10F1,0x1911,0x10F1,0x10F1,0x10F1,0x10F1,0x1911,0x18F1,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x212F,0x212F,0x210F,0x212F,0x2930,0x2930,0x212F,0x210F,0x2930,0x210F,0x210F,0x212F,0x2930,0x292F,0x210F,0x290F,0x2930,0x212F,0x2110,0x2930,0x290F,0x210F,0x210F,0x210F,0x212F,0x292F,0x292F,0x212F,0x212F,0x210F,0x210F,0x2130,0x210F,0x2930,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x210F,0x2110,0x2110,0x210F,0x290F,0x210F,0x290F,0x292F,0x210F,0x210F,0x290F,0x2930,0x2910,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x2910,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x210F,0x2130,0x2950,0x212F,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x18EF,0x18EF,0x1951,0x63FB,0x5BDA,0x53BA,0x53BA,0x53BA,0x5B9A,0x08CF,0x086E,0x18EF,0x2930,0x2130,0x210F,0x20EF,0x18EF,0x08AE,0x2192,0x5BDB,0x539A,0x539A,0x539A,0x539A,0x535A,0x08AF,0x002D,0x18CF,0x5B19,0x637A,0x637A,0x5B7A,0x5359,0x537A,0x539A,0x539A,0x53BA,0x539A,0x5BBA,0x21F3,0x1110,0x1930,0x1910,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2151,0x1932,0x1112,0x1112,0x21B6,0x29F7,0x21F6,0x1995,0x1133,0x1132,0x1951,0x1950,0x2130,0x212F,0x2130,0x2130,0x2130,0x1931,0x1932,0x1113,0x21B5,0x29F7,0x2A17,0x2195,0x1112,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x2930,0x2110,0x2110,0x2930,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2930,0x2930,0x210F,0x2910,0x2910,0x2910,0x210F,0x2910,0x2930,0x2910,0x2110,0x2110,0x212F,0x212F,0x290F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1132,0x1153,0x21D6,0x21F6,0x19F6,0x19B5,0x1133,0x1953,0x2173,0x2952,0x2951,0x2931,0x2951,0x2950,0x2950,0x3171,0x3150,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3930,0x392F,0x390E,0x388C,0xB3F8,0xDCDB,0xDC99,0xDC78,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xE457,0xDC36,0xDC36,0xDC36,0xDC57,0xDC57,0xDC57,0xDC37,0xE457,0xDC37,0xE437,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xDC17,0xDC17,0xE437,0xDC16,0xDC16,0xDC17,0xDC17,0xDBF6,0xDC17,0xDC37,0xDC38,0xDC58,0xDC9A,0xBC19,0x40AC,0x306B,0x30CE,0x30EE,0x290F,0x290F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x2930,0x2930,0x2910,0x2910,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2910,0x290F,0x290F,0x290F,0x2930,0x2910,0x2930,0x210F,0x2910,0x210F,0x2930,0x2110,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2131,0x2111,0x2111,0x2111,0x2111,0x2131,0x2131,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x210F,0x2930,0x2130,0x2130,0x2930,0x212F,0x2930,0x2930,0x212F,0x210F,0x210F,0x2930,0x212F,0x210F,0x212F,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2110,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x2110,0x2910,0x2910,0x2110,0x2910,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x11D6,0x11F7,0x11D7,0x1195,0x1132,0x1911,0x2111,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x290F,0x210F,0x290F,0x290F,0x210F,0x292F,0x290F,0x210F,0x292F,0x292F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x2910,0x290F,0x290F,0x2930,0x210F,0x2110,0x1910,0x1910,0x08EF,0x00EF,0x545C,0x33DA,0x2BDA,0x23B9,0x1378,0x1BB9,0x1BB9,0x1BB9,0x23FA,0x23FA,0x2C1B,0x2C1A,0x23FA,0x2BFA,0x343A,0x549C,0x11B2,0x00CE,0x1930,0x2150,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1930,0x1110,0x008E,0x3275,0x4BFB,0x3BBA,0x33DA,0x2BDA,0x23B9,0x23B9,0x23DA,0x23B9,0x23B9,0x2399,0x33DA,0x441B,0x3B38,0x00AE,0x1110,0x190F,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x190F,0x190F,0x110F,0x012F,0x543B,0x33D9,0x33B9,0x2BB9,0x2399,0x2BB9,0x2BB9,0x33BA,0x3BFA,0x3B79,0x00EF,0x090F,0x1130,0x1950,0x1930,0x2130,0x190F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2150,0x1930,0x08CF,0x0950,0x43B9,0x33D9,0x2BFA,0x23D9,0x1BB9,0x23D9,0x2BDA,0x33FA,0x3BFA,0x3B78,0x010F,0x1130,0x110F,0x1910,0x2130,0x2130,0x2110,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x1931,0x1931,0x1931,0x1931,0x1930,0x1930,0x1930,0x1930,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x210F,0x212F,0x210F,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x2130,0x2130,0x2930,0x2130,0x2130,0x1910,0x1911,0x1932,0x1133,0x1174,0x19B6,0x2217,0x21F7,0x21F7,0x1995,0x1133,0x1112,0x1911,0x1931,0x1931,0x1930,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F, + 0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2110,0x2110,0x2110,0x212F,0x2930,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x1930,0x1931,0x1951,0x1132,0x1153,0x1174,0x1196,0x19B7,0x19F9,0x1A19,0x1A39,0x1A19,0x11B7,0x1196,0x1174,0x1133,0x1132,0x1932,0x1932,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x210F,0x2110,0x210F,0x292F,0x212F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x2130,0x2130,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x2132,0x1932,0x1912,0x1133,0x1154,0x11D6,0x11F8,0x1218,0x09F8,0x0A19,0x09F8,0x09B7,0x09B7,0x11B7,0x11B7,0x11B6,0x11B7,0x19F7,0x2218,0x19D7,0x1995,0x1154,0x1953,0x1952,0x1911,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2910,0x210F,0x210F,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x2110,0x2110,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2130,0x1931,0x1112,0x1195,0x19D7,0x19D7,0x11D7,0x11B6,0x0996,0x0976,0x0975,0x0975,0x0975,0x11B6,0x11D7,0x11D8,0x11D8,0x11D8,0x1196,0x0934,0x0933,0x0912,0x0912,0x0912,0x0912,0x0912,0x1112,0x1112,0x0912,0x0912,0x0913,0x0912,0x0912,0x0912,0x1112,0x0912,0x08F2,0x08F2,0x0912,0x08F2,0x0912,0x08F2,0x08F2,0x0912,0x08F2,0x08F2,0x0912,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08D2,0x08D2,0x08F2,0x08F2,0x08D2,0x08F2,0x08F2,0x08F2,0x0912,0x08F2,0x08F1,0x08F1,0x10F2,0x1112,0x1932,0x1932,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2930,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x2110,0x210F,0x2930,0x2930,0x290F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x212F,0x210F,0x290F,0x210F,0x290F,0x210F,0x2910,0x290F,0x290F,0x210F,0x2910,0x210F,0x2110,0x210F,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x210F,0x290F,0x210F,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x2110,0x210F,0x2130,0x2930,0x2130,0x2930,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x18CF,0x10EF,0x63BA,0x5BBA,0x539A,0x539A,0x539A,0x5B7A,0x088E,0x108E,0x20F0,0x2110,0x210F,0x210F,0x210F,0x18CF,0x10CF,0x2171,0x63DB,0x53BB,0x539B,0x539B,0x537B,0x5B7B,0x004E,0x18F0,0x6339,0x635A,0x5B39,0x5B5A,0x5B5A,0x535A,0x537A,0x5B9B,0x5BBB,0x5B9A,0x5B9A,0x21D3,0x10EF,0x1930,0x190F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2910,0x290F,0x210F,0x210F,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x2151,0x2972,0x1932,0x1112,0x1112,0x1975,0x29F7,0x21D6,0x1974,0x1133,0x1932,0x1951,0x2151,0x2150,0x212F,0x2130,0x2130,0x2130,0x2131,0x1932,0x1133,0x21B5,0x21F7,0x29F7,0x21B5,0x1112,0x1912,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x212F,0x2930,0x2930,0x212F,0x212F,0x212F,0x2110,0x2110,0x210F,0x210F,0x290F,0x2930,0x210F,0x2930,0x290F,0x210F,0x2910,0x2910,0x2930,0x2930,0x2110,0x2930,0x2910,0x2910,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x210F,0x290F,0x292F,0x290F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1911,0x1132,0x1174,0x19D6,0x19F7,0x19F6,0x19B5,0x1133,0x1933,0x2973,0x2952,0x2952,0x2931,0x2951,0x3151,0x2950,0x3150,0x3150,0x3151,0x3151,0x3171,0x3151,0x3151,0x3150,0x3950,0x392F,0x390E,0x40AC,0xBC19,0xDCDA,0xE4B9,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC56,0xDC36,0xDC56,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC17,0xE437,0xDC17,0xDC17,0xE437,0xE417,0xDBF6,0xDC16,0xDC16,0xDBF6,0xDBF7,0xDC17,0xDC37,0xDC38,0xD418,0xD438,0xDCBB,0xCC9B,0x6190,0x308C,0x38EE,0x310F,0x310F,0x290F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x290F,0x290F,0x290F,0x2930,0x2910,0x2930,0x2910,0x2930,0x2110,0x2130,0x2930,0x212F,0x210F,0x2110,0x2110,0x2930,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2910,0x210F,0x2910,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x2930,0x210F,0x210F,0x212F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x2910,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2110,0x2910,0x2910,0x2910,0x20F0,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1932,0x1133,0x11D6,0x11F7,0x11D7,0x1995,0x1132,0x1911,0x2111,0x2110,0x2110,0x2110,0x2930,0x290F,0x212F,0x212F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2930,0x212F,0x212F,0x212F,0x292F,0x2930,0x290F,0x2930,0x2930,0x2110,0x2110,0x210F,0x2130,0x1910,0x08CF,0x00AF,0x647D,0x4BFB,0x43FB,0x339A,0x3BFB,0x4C7D,0x443C,0x443C,0x441B,0x3BBA,0x3BDB,0x3BDB,0x441B,0x43FB,0x4C1B,0x53DA,0x0910,0x10CF,0x1910,0x2130,0x2130,0x212F,0x212F,0x212F,0x214F,0x212F,0x2150,0x2130,0x2130,0x18F0,0x10F0,0x5B9A,0x4B7A,0x437A,0x439A,0x3B9A,0x3B9A,0x339A,0x339A,0x339A,0x33BA,0x3BBA,0x43BA,0x4B9A,0x641C,0x1951,0x10F0,0x1910,0x2110,0x2130,0x210F,0x2130,0x212F,0x292F,0x2930,0x212F,0x210F,0x190F,0x10EF,0x00EE,0x5C1B,0x439A,0x3B9A,0x3B9A,0x3379,0x3BBA,0x3B79,0x3B7A,0x4BFB,0x4379,0x00CE,0x1110,0x1930,0x1930,0x192F,0x212F,0x192F,0x190F,0x212F,0x2130,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x10CF,0x0910,0x53DB,0x43BA,0x3BDA,0x33DA,0x33BA,0x33BA,0x339A,0x3BDA,0x4BFB,0x4358,0x010F,0x1130,0x1910,0x1910,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x1931,0x1930,0x1931,0x1930,0x1930,0x1930,0x1930,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2950,0x2130,0x2130,0x1911,0x1932,0x1133,0x1174,0x19D6,0x2217,0x2217,0x19F6,0x1175,0x1153,0x1132,0x1112,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x292F,0x290F,0x2930,0x290F,0x290F,0x290F,0x292F,0x212F,0x292F,0x210F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2930,0x2910,0x2910,0x2910,0x290F,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F, + 0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2930,0x2930,0x290F,0x210F,0x290F,0x2930,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930,0x2910,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2910,0x290F,0x210F,0x2930,0x2930,0x2110,0x2930,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2150,0x2151,0x1951,0x1972,0x1952,0x1153,0x1174,0x1196,0x19B7,0x19F8,0x1A19,0x1A19,0x11F8,0x19D7,0x1195,0x1154,0x1133,0x1112,0x1932,0x1932,0x2131,0x2131,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2930,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x2151,0x2131,0x2131,0x2131,0x1912,0x1112,0x1133,0x1175,0x11D7,0x11F8,0x09F8,0x09F9,0x09D8,0x09B8,0x09B7,0x11B7,0x11B6,0x0975,0x1176,0x11B7,0x2219,0x2218,0x19D7,0x19B7,0x21D6,0x1153,0x1111,0x1911,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x2930,0x2110,0x210F,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2130,0x2130,0x210F,0x290F,0x210F,0x2910,0x2910,0x210F,0x2910,0x210F,0x2930,0x290F,0x212F,0x210F,0x292F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2131,0x1911,0x1112,0x19D6,0x19F7,0x11D7,0x11B7,0x0996,0x1196,0x0975,0x0955,0x0954,0x0955,0x0955,0x0976,0x11D8,0x11D8,0x11D8,0x11F8,0x11D7,0x11B6,0x11B6,0x11B6,0x11D7,0x11B7,0x11D7,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x1196,0x11B6,0x1196,0x11B6,0x11B6,0x19D7,0x19D7,0x19D7,0x11B6,0x19B7,0x11B6,0x11B6,0x11B6,0x11D6,0x11D6,0x11B6,0x11B6,0x11B6,0x11B6,0x19D6,0x11B6,0x11B7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x19F7,0x19F7,0x19F7,0x19F7,0x19D7,0x19D7,0x19D6,0x19B6,0x1154,0x1133,0x1112,0x1112,0x1932,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x2930,0x2930,0x210F,0x210F,0x210F,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x2130,0x2930,0x210F,0x212F,0x2930,0x2930,0x2910,0x2930,0x210F,0x2930,0x2910,0x2910,0x290F,0x2930,0x290F,0x2930,0x290F,0x290F,0x210F,0x2130,0x212F,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2130,0x2930,0x2130,0x2130,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x18EF,0x18EF,0x6BBA,0x63BB,0x5B9A,0x5BBA,0x5B9A,0x5B7A,0x088E,0x18AF,0x2110,0x2110,0x210F,0x210F,0x20EF,0x20EF,0x10CF,0x29B2,0x63BB,0x5B9A,0x5B9B,0x5B7A,0x5B7B,0x639B,0x3A15,0x633A,0x6B7B,0x635A,0x637B,0x5B5A,0x5319,0x5B5A,0x5B9A,0x5BBB,0x5B9A,0x5B79,0x21B2,0x10EF,0x1930,0x1930,0x2130,0x2110,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2130,0x2130,0x2930,0x2910,0x2110,0x2910,0x2110,0x2930,0x2130,0x2130,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x290F,0x210F,0x292F,0x292F,0x210F,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2151,0x2151,0x1932,0x1112,0x1133,0x21B5,0x21F7,0x21D6,0x1974,0x1133,0x1112,0x1931,0x1930,0x2150,0x2150,0x212F,0x2130,0x2110,0x1931,0x1132,0x1133,0x21B5,0x21F7,0x2A17,0x19B5,0x1112,0x1932,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x210F,0x212F,0x2930,0x2930,0x212F,0x212F,0x212F,0x2930,0x210F,0x2910,0x290F,0x2930,0x2910,0x2910,0x2930,0x210F,0x290F,0x2930,0x290F,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2930,0x2930,0x2110,0x2930,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2151,0x2151,0x1931,0x1111,0x1133,0x19B5,0x19F7,0x19F7,0x19F7,0x19B6,0x1154,0x1953,0x2173,0x2952,0x2972,0x2951,0x2951,0x3171,0x2950,0x3150,0x2950,0x3151,0x3151,0x3171,0x3171,0x3171,0x3150,0x3930,0x392F,0x412F,0x48ED,0xD4BB,0xDCBA,0xDC99,0xDC58,0xDC58,0xDC37,0xDC37,0xE457,0xDC36,0xE457,0xDC57,0xDC56,0xDC56,0xE457,0xDC56,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC16,0xDC17,0xDC37,0xE417,0xDC17,0xE417,0xDC16,0xDC17,0xDC16,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC18,0xDC38,0xDC59,0xD47A,0xDCFC,0xA397,0x40CD,0x38EE,0x310F,0x310F,0x3130,0x3130,0x2930,0x2950,0x2950,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2930,0x2910,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x210F,0x290F,0x210F,0x2930,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2110,0x2930,0x2910,0x2110,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2110,0x2930,0x2910,0x290F,0x2930,0x2930,0x292F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x2930,0x212F,0x2130,0x2130,0x210F,0x2930,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2910,0x290F,0x212F,0x292F,0x210F,0x210F,0x212F,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x1910,0x1931,0x1132,0x0933,0x11D6,0x19F7,0x19F7,0x1995,0x1132,0x1911,0x2111,0x2110,0x2110,0x210F,0x2110,0x2930,0x212F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x292F,0x292F,0x290F,0x210F,0x2930,0x212F,0x2930,0x2930,0x212F,0x292F,0x2930,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2110,0x2930,0x2110,0x2130,0x1910,0x10CF,0x008E,0x6C3D,0x4B5A,0x537B,0x3AF9,0x3B19,0x32F8,0x6C9E,0x19F4,0x006E,0x006E,0x004E,0x004E,0x004E,0x004E,0x004E,0x002D,0x108F,0x18AF,0x20EF,0x210F,0x2950,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x18F0,0x10AF,0x5AD8,0x6B7B,0x5B5A,0x5B5B,0x535B,0x4B5A,0x537B,0x4B7B,0x4B7A,0x4B7A,0x4B9B,0x4B9B,0x537A,0x535A,0x637A,0x637A,0x086E,0x20F0,0x2110,0x2110,0x2910,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x10EE,0x08CE,0x63DB,0x4B5A,0x4B7A,0x4B7A,0x4B7A,0x4B7A,0x435A,0x4B7A,0x5BFC,0x63FC,0x008F,0x1110,0x1930,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x10CF,0x1110,0x6BFC,0x53BB,0x4B9B,0x437A,0x437A,0x439A,0x437A,0x4BBB,0x5BDB,0x5379,0x08EF,0x1110,0x1910,0x1910,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x1911,0x1931,0x1931,0x1951,0x1931,0x1931,0x1930,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x212F,0x210F,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x2930,0x2110,0x2930,0x2130,0x2131,0x1911,0x1111,0x1133,0x1174,0x19D6,0x2217,0x2217,0x19F6,0x1995,0x1133,0x1112,0x1932,0x1931,0x2151,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x292F,0x210F,0x290F,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x212F,0x292F,0x290F,0x210F,0x210F,0x290F,0x2110,0x2910,0x2930,0x290F,0x2930,0x2930,0x290F,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F, + 0x210F,0x212F,0x210F,0x290F,0x290F,0x2930,0x210F,0x2930,0x2910,0x2910,0x2910,0x210F,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2930,0x290F,0x210F,0x290F,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x2910,0x2910,0x210F,0x212F,0x210F,0x290F,0x290F,0x210F,0x292F,0x290F,0x292F,0x210F,0x210F,0x210F,0x212F,0x2150,0x2130,0x2151,0x1951,0x1932,0x1932,0x1153,0x1175,0x1196,0x11B7,0x19F8,0x1A19,0x1A19,0x1A18,0x11D7,0x1195,0x1154,0x1133,0x1132,0x1932,0x2152,0x2131,0x2130,0x2110,0x2130,0x212F,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x212F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2130,0x210F,0x290F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2111,0x1931,0x1912,0x1112,0x1153,0x11B6,0x11F7,0x09F8,0x09F8,0x09D8,0x09D8,0x09B7,0x0996,0x0955,0x0955,0x0976,0x0976,0x11B7,0x19F8,0x11F8,0x19F8,0x19B7,0x1154,0x1111,0x1911,0x1910,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2930,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2131,0x1911,0x1112,0x19B6,0x11D7,0x11D7,0x0996,0x0975,0x0975,0x0955,0x0954,0x0954,0x0954,0x0955,0x0956,0x0997,0x09B8,0x09D8,0x11F9,0x1219,0x1A39,0x1A39,0x1A39,0x2259,0x2239,0x225A,0x2259,0x227A,0x2259,0x2259,0x2259,0x225A,0x227A,0x225A,0x225A,0x2A7A,0x225A,0x225A,0x225A,0x227A,0x225A,0x225A,0x225A,0x225A,0x225A,0x227A,0x227A,0x227A,0x2259,0x2259,0x2A79,0x2A7A,0x2259,0x227A,0x225A,0x225A,0x2259,0x225A,0x2259,0x225A,0x2239,0x2259,0x2239,0x2259,0x2259,0x2259,0x2239,0x2259,0x2239,0x2259,0x2A59,0x21F7,0x1995,0x1133,0x1132,0x1932,0x1951,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x290F,0x212F,0x2930,0x212F,0x210F,0x212F,0x212F,0x2130,0x2930,0x210F,0x210F,0x2110,0x210F,0x2110,0x2910,0x2910,0x2910,0x210F,0x2910,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x2930,0x210F,0x212F,0x2910,0x2910,0x210F,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x2930,0x210F,0x2930,0x290F,0x2110,0x210F,0x2110,0x290F,0x210F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x210F,0x20EF,0x10AE,0x6B9A,0x6BBB,0x639A,0x639A,0x5B7A,0x635A,0x108F,0x18AF,0x2110,0x20EF,0x2930,0x2930,0x20EF,0x2110,0x10AE,0x2992,0x63BB,0x639B,0x639B,0x5B7B,0x5B3A,0x5B3A,0x631A,0x631A,0x633A,0x6B5B,0x635A,0x635A,0x5B3A,0x5B5A,0x639B,0x639A,0x5B7A,0x2192,0x10EF,0x190F,0x2130,0x190F,0x2130,0x2110,0x2130,0x2130,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x210F,0x210F,0x212F,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2910,0x2110,0x290F,0x2910,0x2110,0x2930,0x2110,0x2130,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x292F,0x290F,0x292F,0x292F,0x210F,0x292F,0x212F,0x212F,0x210F,0x212F,0x2930,0x210F,0x2130,0x2130,0x2131,0x1911,0x1132,0x1133,0x19D5,0x2217,0x19D6,0x1995,0x1133,0x1932,0x1931,0x2130,0x2150,0x2150,0x210F,0x210F,0x2110,0x1931,0x1132,0x1133,0x21B5,0x2A17,0x21F6,0x21B5,0x1112,0x1932,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x210F,0x2930,0x210F,0x2930,0x2130,0x210F,0x212F,0x212F,0x212F,0x2930,0x2910,0x2930,0x2930,0x2930,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2910,0x2910,0x2930,0x2910,0x2930,0x2110,0x2110,0x2110,0x2930,0x292F,0x290F,0x292F,0x290F,0x292F,0x290F,0x2910,0x2930,0x2130,0x2130,0x2151,0x2151,0x1931,0x1111,0x1132,0x1153,0x19B6,0x19F7,0x19F7,0x19F7,0x11B6,0x1174,0x1953,0x2173,0x2153,0x2952,0x2951,0x2951,0x2951,0x3151,0x3151,0x3151,0x3171,0x3151,0x3171,0x3171,0x3151,0x3150,0x3930,0x392F,0x410E,0x48ED,0xDCDC,0xDCBA,0xDC99,0xDC78,0xDC57,0xDC57,0xDC37,0xDC37,0xDC36,0xDC57,0xDC36,0xDC57,0xDC56,0xDC57,0xE457,0xDC36,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC36,0xDC37,0xDC37,0xDC37,0xDC36,0xDC36,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC16,0xDC16,0xE417,0xDC17,0xDC16,0xDC16,0xDC17,0xDC17,0xDBF6,0xDC17,0xDC17,0xDC17,0xDBF7,0xDC17,0xDC18,0xDC38,0xDC59,0xDC59,0xD49A,0xDD1D,0x8AB4,0x308C,0x390F,0x310F,0x310F,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2930,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2930,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2130,0x2130,0x2130,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2110,0x210F,0x2930,0x2130,0x212F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x1931,0x1131,0x1153,0x11D6,0x19F7,0x19D7,0x1995,0x1132,0x1911,0x2131,0x2110,0x2130,0x2110,0x2110,0x2930,0x210F,0x212F,0x2930,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2110,0x2130,0x2930,0x2130,0x2110,0x18EF,0x10AF,0x004E,0x73DC,0x637B,0x6B7C,0x5B1A,0x52FA,0x635A,0x6BBC,0x31B4,0x1890,0x186F,0x102F,0x102F,0x102F,0x102F,0x102F,0x102E,0x102E,0x20AF,0x20AF,0x20EF,0x210F,0x2130,0x212F,0x212F,0x2150,0x2930,0x2110,0x20F0,0x188F,0x3153,0x733A,0x6B1A,0x6B1B,0x6B1B,0x633B,0x633B,0x635B,0x5B5B,0x635B,0x5B3B,0x5B5B,0x633B,0x633B,0x631A,0x631A,0x7B7B,0x49F5,0x20B0,0x20F0,0x2910,0x2910,0x290F,0x290F,0x292F,0x292F,0x212F,0x212F,0x210F,0x10EE,0x088E,0x637B,0x635B,0x637B,0x637C,0x5B5B,0x5B3B,0x635B,0x637B,0x639C,0x73DD,0x088F,0x18D0,0x1910,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2110,0x18CF,0x10AF,0x6BBB,0x637B,0x637B,0x533B,0x535B,0x533B,0x535B,0x639B,0x63BB,0x5B59,0x10CF,0x18F0,0x1910,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2110,0x2110,0x2130,0x2130,0x2131,0x1931,0x1931,0x1931,0x1931,0x1952,0x1951,0x1931,0x1951,0x1931,0x2151,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x212F,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x292F,0x2930,0x2130,0x2110,0x2130,0x2130,0x2131,0x1911,0x1112,0x1133,0x1154,0x19D6,0x1A17,0x2217,0x21F7,0x1995,0x1133,0x1112,0x1911,0x1952,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x292F,0x210F,0x292F,0x212F,0x212F,0x290F,0x210F,0x290F,0x292F,0x2910,0x2930,0x290F,0x292F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2910,0x2930,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F, + 0x212F,0x210F,0x2930,0x212F,0x2930,0x2930,0x210F,0x210F,0x2910,0x2910,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x2110,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2151,0x1931,0x1931,0x1911,0x1132,0x1974,0x1975,0x1196,0x11B7,0x11F8,0x1219,0x11F8,0x11F8,0x11B7,0x0975,0x1134,0x1133,0x1912,0x1932,0x2131,0x2131,0x2150,0x2130,0x212F,0x212F,0x2130,0x2930,0x2130,0x212F,0x2930,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x290F,0x210F,0x290F,0x212F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x1911,0x1911,0x1132,0x1194,0x19D7,0x11F8,0x11F8,0x09D8,0x09B7,0x0996,0x0955,0x0955,0x0935,0x0955,0x0976,0x0996,0x11B7,0x11D8,0x11D8,0x19D7,0x1154,0x1112,0x1911,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2130,0x2130,0x2131,0x1911,0x1133,0x19D6,0x19F7,0x11D7,0x11B7,0x0996,0x0975,0x0955,0x0975,0x0954,0x0954,0x0955,0x0976,0x0997,0x11D8,0x09D8,0x09D8,0x11F8,0x1A19,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19D8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19D8,0x19F8,0x19F8,0x19F8,0x19F8,0x19D7,0x19F8,0x19F7,0x19D7,0x19D7,0x19F7,0x19F8,0x19D8,0x19F8,0x19F8,0x19D8,0x19D8,0x19D8,0x19F8,0x19F8,0x19D7,0x19F8,0x19F8,0x19D7,0x19F8,0x19F8,0x19F8,0x19F8,0x1A18,0x1A18,0x2217,0x19D6,0x1154,0x1132,0x1111,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x290F,0x292F,0x290F,0x290F,0x2930,0x2930,0x212F,0x212F,0x2130,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2930,0x212F,0x2930,0x210F,0x212F,0x2130,0x210F,0x2930,0x290F,0x210F,0x2910,0x210F,0x2110,0x2910,0x210F,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x20EF,0x20EF,0x18CF,0x6B9A,0x6BBB,0x637A,0x637B,0x637A,0x633A,0x10AF,0x18AF,0x20F0,0x20F0,0x2930,0x2930,0x20EF,0x20EF,0x10AF,0x2151,0x6BBB,0x637B,0x635B,0x633B,0x633B,0x633B,0x631A,0x631A,0x633B,0x633A,0x635B,0x6B7B,0x635A,0x637A,0x639A,0x637A,0x2171,0x190F,0x1930,0x1930,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x2910,0x210F,0x2910,0x2910,0x2930,0x2910,0x290F,0x292F,0x210F,0x210F,0x2910,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2130,0x2110,0x2110,0x210F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x2110,0x2110,0x1910,0x1911,0x1132,0x1153,0x19B5,0x21D6,0x21D6,0x1995,0x1133,0x1952,0x1931,0x2130,0x2150,0x2130,0x212F,0x210F,0x2110,0x1931,0x1132,0x1153,0x19B5,0x21F6,0x21F6,0x1994,0x1112,0x1912,0x1911,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x212F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2110,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x210F,0x2930,0x290F,0x290F,0x2910,0x2930,0x2910,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x290F,0x290F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2131,0x2152,0x1931,0x1132,0x1133,0x1154,0x0975,0x19F7,0x19F8,0x19F7,0x11D7,0x11B6,0x1174,0x1974,0x2173,0x2152,0x2952,0x2951,0x2951,0x3151,0x3151,0x3151,0x3171,0x3171,0x3171,0x3171,0x3171,0x3951,0x3950,0x414F,0x410E,0x48CD,0xDCDC,0xDCBA,0xDC99,0xDC78,0xDC58,0xDC57,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC36,0xE457,0xDC36,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC37,0xDC37,0xE457,0xDC37,0xDC36,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC36,0xDC37,0xDC16,0xDC16,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC16,0xDC16,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDBF7,0xDC38,0xDC38,0xD439,0xCC39,0xDD1D,0x408C,0x40EE,0x392F,0x3930,0x3130,0x2930,0x2930,0x2950,0x2950,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x212F,0x210F,0x290F,0x292F,0x210F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x20EF,0x290F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2930,0x210F,0x292F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x2930,0x2930,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x212F,0x2930,0x2930,0x290F,0x290F,0x210F,0x212F,0x290F,0x2930,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1111,0x1132,0x19D6,0x19F7,0x19D7,0x1175,0x1112,0x1911,0x2131,0x2110,0x2110,0x2930,0x2910,0x2930,0x292F,0x292F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2930,0x292F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x212F,0x210F,0x290F,0x2930,0x2930,0x2110,0x2930,0x2130,0x2130,0x2110,0x2110,0x20F0,0x18AF,0x108F,0x8BFD,0x7B5B,0x733B,0x731B,0x7B3C,0x7B5C,0x72DA,0x8B9D,0x9BFF,0x9BDE,0x9BBE,0x9BBE,0x9BBE,0x9BDE,0x937C,0x93BD,0x9C1D,0x7319,0x206E,0x28F0,0x20EF,0x210F,0x212F,0x212F,0x2930,0x2930,0x20F0,0x20AF,0x2090,0x72B9,0x831B,0x82FB,0x831C,0x7B1C,0x7B1C,0x733C,0x6AFB,0x6B1B,0x733B,0x733B,0x733C,0x731C,0x7B3C,0x7B3C,0x7AFB,0x72B9,0x831B,0x30D1,0x28D0,0x28D0,0x28F0,0x28EF,0x20EF,0x210F,0x292F,0x292F,0x210E,0x18EE,0x18CE,0x106E,0x737B,0x735C,0x7B7D,0x733C,0x6AFB,0x6AFB,0x733C,0x733C,0x735C,0x7BBC,0x106F,0x18D0,0x18F0,0x18EF,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2950,0x212F,0x210F,0x2110,0x20D0,0x20D0,0x737B,0x735B,0x737C,0x733C,0x62FB,0x62FB,0x6B3B,0x739C,0x7BBC,0x6B3A,0x18AF,0x18CF,0x18CF,0x18EF,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x1911,0x1931,0x1931,0x1932,0x1132,0x1132,0x1152,0x1152,0x1152,0x1952,0x1932,0x1911,0x1911,0x1911,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x210F,0x210F,0x2110,0x210F,0x2130,0x2131,0x2131,0x1931,0x1932,0x1133,0x1154,0x19B6,0x21F7,0x2217,0x19D6,0x1174,0x1133,0x1112,0x1932,0x2132,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x212F,0x212F,0x292F,0x290F, + 0x212F,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2930,0x290F,0x290F,0x210F,0x2110,0x290F,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x1930,0x1931,0x1931,0x1952,0x1953,0x1954,0x1175,0x1196,0x11D7,0x11F8,0x1219,0x1219,0x11F8,0x11B7,0x1175,0x1134,0x1113,0x1912,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x292F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x18F1,0x1912,0x1133,0x11B6,0x11F7,0x11F8,0x09F8,0x09B7,0x0976,0x0135,0x0134,0x0955,0x0955,0x0955,0x0976,0x09B7,0x11D8,0x11D8,0x19B7,0x1154,0x1112,0x1911,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2930,0x2110,0x210F,0x210F,0x212F,0x212F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1112,0x19D6,0x19F7,0x11D7,0x11B7,0x0996,0x0975,0x0955,0x0954,0x0954,0x0954,0x0975,0x0996,0x09B7,0x11D8,0x09B8,0x11D8,0x11B7,0x1196,0x1196,0x1196,0x1195,0x1196,0x1195,0x1175,0x1175,0x1175,0x1175,0x1196,0x1195,0x1196,0x1176,0x1175,0x1175,0x1176,0x1155,0x1155,0x1175,0x1155,0x1175,0x1175,0x1175,0x1175,0x1175,0x1155,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1155,0x1175,0x1175,0x1175,0x1175,0x1175,0x1996,0x1196,0x1196,0x1196,0x11B6,0x11D7,0x19F7,0x1A18,0x19F7,0x19D6,0x1974,0x1132,0x1912,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2130,0x2930,0x212F,0x212F,0x292F,0x292F,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2930,0x210F,0x210F,0x212F,0x212F,0x290F,0x210F,0x290F,0x210F,0x2930,0x212F,0x212F,0x210F,0x212F,0x2130,0x210F,0x212F,0x210F,0x212F,0x210F,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2110,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x210F,0x2930,0x210F,0x2130,0x210F,0x2130,0x2130,0x2930,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x20EF,0x10AE,0x73BB,0x6B7B,0x6B7B,0x635B,0x635B,0x633A,0x18B0,0x18AF,0x20CF,0x20EF,0x2910,0x290F,0x20EF,0x20EF,0x10AE,0x2952,0x6B9B,0x6B7B,0x635B,0x633B,0x6B3B,0x631A,0x6B1A,0x6B1B,0x6B3B,0x6B3B,0x635A,0x6B7B,0x637A,0x6B9B,0x6359,0x2171,0x18CF,0x2110,0x212F,0x190F,0x2130,0x210F,0x212F,0x212F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x210F,0x2910,0x210F,0x2910,0x2930,0x212F,0x210F,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x2910,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2131,0x1911,0x1132,0x1153,0x19D6,0x21F6,0x19B6,0x1995,0x1153,0x1932,0x1931,0x1930,0x2130,0x2110,0x2110,0x2130,0x2131,0x1931,0x1932,0x1133,0x19B5,0x21F7,0x21F6,0x19B5,0x1112,0x1932,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x290F,0x2910,0x2110,0x2930,0x2910,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x290F,0x2910,0x2930,0x2130,0x2131,0x1911,0x1912,0x1112,0x1154,0x1175,0x1175,0x0996,0x11D7,0x11F8,0x11F8,0x11D7,0x19D7,0x19B6,0x1995,0x1974,0x2153,0x2952,0x2951,0x2951,0x3151,0x3171,0x3171,0x3171,0x3171,0x3171,0x3171,0x3971,0x3971,0x3950,0x4150,0x410E,0x48ED,0xDCDC,0xDC9A,0xDC99,0xDC78,0xDC58,0xE457,0xDC37,0xE457,0xDC37,0xDC37,0xE457,0xDC36,0xDC36,0xDC36,0xDC57,0xDC57,0xDC37,0xDC57,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC16,0xDC37,0xDC16,0xDC37,0xDC17,0xDC16,0xDC16,0xDC16,0xDC16,0xDC17,0xDC16,0xDBF6,0xDC16,0xDC16,0xDBF6,0xDBF6,0xDC17,0xDC17,0xDBF7,0xDBF7,0xDC17,0xDC38,0xDC59,0xD459,0xC439,0x408B,0x304B,0x410F,0x310F,0x3130,0x3130,0x3130,0x3150,0x2950,0x2950,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2110,0x2110,0x210F,0x210F,0x2910,0x2930,0x292F,0x292F,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x20EF,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2930,0x290F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x210F,0x2130,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x212F,0x2930,0x2930,0x210F,0x2130,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1931,0x0912,0x11B5,0x19F7,0x11D6,0x1195,0x1132,0x1911,0x2111,0x2131,0x2930,0x2930,0x2910,0x2930,0x2930,0x292F,0x2930,0x290F,0x210F,0x212F,0x210F,0x212F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x292F,0x2930,0x212F,0x210F,0x2930,0x2110,0x2110,0x2930,0x2930,0x2110,0x2930,0x2110,0x20EF,0x188F,0x104E,0x93BD,0x8B3C,0x831C,0x8AFC,0x82DB,0x82BB,0x8ADB,0x829A,0x8A9B,0x8A9B,0x92BB,0x8A9B,0x92DB,0x92FB,0x9B3C,0x9B7C,0x9BBD,0x939B,0x206E,0x28D0,0x20EF,0x210F,0x212F,0x2930,0x210F,0x2910,0x28F0,0x204F,0x4954,0x8AFB,0x8ADB,0x92DC,0x8ADC,0x8AFC,0x82DC,0x82FC,0x7AFB,0x7AFB,0x7B1B,0x831C,0x82FC,0x82DB,0x8B1C,0x8AFC,0x8AFC,0x82BB,0x82DB,0x7A99,0x202F,0x30B0,0x28D0,0x28F0,0x290F,0x210F,0x292F,0x292F,0x212F,0x20EE,0x18AE,0x102E,0x7B3B,0x831C,0x8B1D,0x82DC,0x82DC,0x82DC,0x82DC,0x7AFB,0x833C,0x8B9D,0x2090,0x20B0,0x20D0,0x20EF,0x2930,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x20F0,0x20D0,0x2090,0x833B,0x833C,0x8B5D,0x82FC,0x7ABB,0x7ADC,0x7AFC,0x833C,0x8B7C,0x731A,0x208F,0x20AF,0x20CF,0x20EF,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2111,0x1911,0x1911,0x1932,0x1132,0x1153,0x1174,0x1194,0x1994,0x19B5,0x19B4,0x1174,0x1153,0x1112,0x1912,0x1911,0x1911,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x290F,0x2930,0x212F,0x212F,0x212F,0x210F,0x2110,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2131,0x2131,0x1911,0x1932,0x1133,0x1154,0x19B6,0x21F7,0x2217,0x21F7,0x1174,0x0913,0x1112,0x1932,0x1931,0x2131,0x2130,0x2110,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x292F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2910,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F, + 0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x210F,0x210F,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x292F,0x2910,0x210F,0x210F,0x2930,0x212F,0x292F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1932,0x1932,0x1953,0x1153,0x1174,0x1196,0x11D7,0x1218,0x1A19,0x1A19,0x19F8,0x11B7,0x1155,0x1134,0x1133,0x1933,0x1932,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x18F0,0x1111,0x1112,0x1174,0x11F7,0x11F8,0x1219,0x11F8,0x0996,0x0114,0x0114,0x0934,0x1175,0x1195,0x0976,0x0976,0x11B7,0x19F8,0x11B7,0x1175,0x1112,0x1931,0x2110,0x2130,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x2110,0x210F,0x210F,0x290F,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x212F,0x2130,0x2930,0x2930,0x210F,0x210F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2111,0x1911,0x10F2,0x19D6,0x19F7,0x11B7,0x11B7,0x0976,0x0955,0x0934,0x0934,0x0954,0x0954,0x0955,0x0976,0x09B7,0x11D8,0x11D8,0x11B7,0x0954,0x0933,0x1133,0x1113,0x1132,0x0912,0x1133,0x1133,0x1133,0x1132,0x1133,0x1133,0x1132,0x1132,0x1113,0x1112,0x1113,0x1113,0x1113,0x1913,0x1113,0x1112,0x1112,0x1113,0x1113,0x1113,0x1133,0x1133,0x1133,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1112,0x1112,0x1112,0x1112,0x1132,0x1133,0x1133,0x1174,0x1174,0x0934,0x1155,0x11B6,0x19F7,0x2218,0x19F7,0x19B6,0x1974,0x1112,0x1112,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2930,0x212F,0x210F,0x210F,0x2910,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x2130,0x210F,0x2130,0x2930,0x210F,0x2930,0x212F,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x290F,0x210F,0x210F,0x210F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x20F0,0x18CF,0x83FC,0x739B,0x737B,0x737B,0x6B5B,0x735B,0x186F,0x188F,0x20D0,0x28F0,0x20EF,0x20EF,0x20EF,0x20F0,0x10AF,0x2952,0x73BC,0x6B7B,0x6B7C,0x6B5C,0x631B,0x6B1B,0x733B,0x6B1B,0x6B1B,0x6B3B,0x6B5B,0x6B5A,0x6B9B,0x635A,0x2971,0x18EF,0x1910,0x2110,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2930,0x290F,0x210F,0x2930,0x210F,0x210F,0x2930,0x210F,0x2110,0x210F,0x2930,0x212F,0x2930,0x2910,0x210F,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x210F,0x212F,0x290F,0x210F,0x290F,0x212F,0x210F,0x290F,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2910,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x2110,0x2130,0x2110,0x1931,0x1932,0x1133,0x1994,0x19D6,0x19D6,0x19B5,0x1994,0x1132,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1932,0x1153,0x19B6,0x2217,0x21F7,0x1994,0x1112,0x1911,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x212F,0x2930,0x290F,0x290F,0x2930,0x2110,0x2930,0x2930,0x210F,0x290F,0x2110,0x2930,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x290F,0x292F,0x290F,0x2930,0x2910,0x290F,0x2910,0x2910,0x2930,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x2110,0x2110,0x2930,0x2151,0x1931,0x1911,0x1113,0x1154,0x1996,0x19D7,0x19F8,0x11D7,0x11B7,0x11D8,0x11F8,0x11D8,0x19D8,0x19D7,0x19B6,0x1995,0x2174,0x2973,0x2952,0x2951,0x3171,0x3171,0x3171,0x3171,0x3151,0x3171,0x3171,0x3971,0x3971,0x3950,0x4150,0x410E,0x510E,0xDCDC,0xDCBA,0xDC99,0xDC58,0xDC58,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xDC16,0xDC36,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC16,0xDC17,0xDC37,0xDC37,0xDC17,0xDC17,0xDC17,0xDBF6,0xDC16,0xDC16,0xDC17,0xDC16,0xDC16,0xDC16,0xDBF6,0xDC17,0xDC17,0xDBF7,0xDBF7,0xDC17,0xDC17,0xDC38,0xDC59,0xD459,0x79F0,0x2809,0x38AD,0x390F,0x310F,0x3130,0x3150,0x3150,0x3150,0x2950,0x2950,0x2950,0x2950,0x2950,0x2930,0x2951,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2910,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x290F,0x290F,0x292F,0x210F,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x292F,0x290F,0x290F,0x290F,0x20EF,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x212F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1931,0x1133,0x19D6,0x1A17,0x11D6,0x1195,0x1132,0x1911,0x2111,0x2110,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x290F,0x210F,0x2930,0x2930,0x2930,0x290F,0x210F,0x292F,0x292F,0x2930,0x290F,0x290F,0x290F,0x292F,0x292F,0x2930,0x2930,0x2930,0x292F,0x292F,0x210F,0x2110,0x2930,0x2930,0x2930,0x2110,0x210F,0x20CF,0x188F,0x204F,0x9B9D,0x931C,0x9B1D,0x9AFC,0x9ADC,0x9ABC,0x9A9C,0x9A7C,0x9A7C,0xA29C,0x9A7C,0x9A7B,0x9A9B,0x9A9B,0x9A9B,0x92BA,0x92FA,0x935B,0x286F,0x28D0,0x28EF,0x290F,0x210F,0x290F,0x20EF,0x28D0,0x286F,0x282F,0x92DB,0x9ADC,0xA2DD,0x9ABC,0x927C,0x92BC,0x929C,0x8ADC,0x8ADC,0x7A7A,0x82BB,0x931D,0x8ADC,0x92DC,0x92BC,0x92BC,0x929C,0x92BC,0x92DC,0x9B5D,0x5154,0x3070,0x30D0,0x28F0,0x2930,0x290F,0x292F,0x210F,0x210F,0x20EF,0x208E,0x206F,0x935C,0x92FD,0x92DD,0x9ABD,0x929C,0x92BD,0x8A7B,0x8A9B,0x931C,0xA3FF,0x2870,0x206F,0x20CF,0x20EF,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x28F0,0x20AF,0x2870,0x9B7C,0x9B3D,0x9AFD,0x92BC,0x92BC,0x92BC,0x8ABC,0x92FC,0x933C,0x82FA,0x2870,0x28B0,0x20D0,0x2910,0x20F0,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x1911,0x1932,0x1932,0x1153,0x1174,0x11B5,0x11B6,0x19F7,0x1A17,0x19F7,0x19F7,0x19F7,0x19D6,0x1995,0x1133,0x1112,0x1911,0x1932,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2930,0x2130,0x2110,0x2131,0x2152,0x1911,0x1911,0x1932,0x1133,0x1174,0x19B6,0x21F7,0x2218,0x19D6,0x1174,0x1133,0x1112,0x1911,0x1931,0x2131,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F, + 0x210F,0x212F,0x210F,0x2930,0x210F,0x2930,0x2930,0x210F,0x290F,0x290F,0x2910,0x210F,0x210F,0x290F,0x2910,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2910,0x290F,0x2910,0x292F,0x290F,0x290F,0x290F,0x210F,0x212F,0x290F,0x290F,0x2910,0x2930,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1932,0x1133,0x1153,0x1175,0x11B6,0x11D7,0x11F8,0x1A19,0x1A19,0x19F9,0x1197,0x1175,0x1154,0x1133,0x1912,0x1931,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x210F,0x210F,0x2930,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x1910,0x1911,0x1111,0x1153,0x11B6,0x11F8,0x1218,0x1218,0x09B6,0x0955,0x0114,0x0934,0x0975,0x0975,0x0976,0x0976,0x11D7,0x1A18,0x19D7,0x1174,0x1132,0x1931,0x2130,0x2110,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2910,0x2110,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2111,0x1911,0x1112,0x1174,0x21F7,0x19D7,0x11B7,0x0996,0x0955,0x0955,0x0934,0x0934,0x0134,0x0975,0x11B7,0x11D7,0x11D7,0x19D7,0x1155,0x1133,0x1133,0x1112,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1931,0x1931,0x1911,0x1931,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x18F1,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x10F1,0x1911,0x1911,0x1911,0x1111,0x1111,0x1112,0x1112,0x1133,0x0934,0x11B6,0x19D7,0x21F7,0x21F7,0x19B6,0x1974,0x1133,0x1912,0x1932,0x2132,0x2111,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2930,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x210F,0x2930,0x210F,0x210F,0x2930,0x2930,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x290F,0x290F,0x2930,0x290F,0x212F,0x212F,0x2930,0x290F,0x2930,0x210F,0x212F,0x212F,0x210F,0x2930,0x2930,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2110,0x2110,0x2930,0x2110,0x2910,0x2930,0x290F,0x210F,0x212F,0x2950,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2110,0x2110,0x20F0,0x18AF,0x7BBB,0x737B,0x735B,0x735B,0x735B,0x7B7C,0x5237,0x2090,0x28D0,0x28D0,0x20EF,0x20EF,0x2110,0x2110,0x18AF,0x2931,0x739C,0x739C,0x6B5B,0x6B1B,0x6B1B,0x731B,0x731B,0x731B,0x6B1B,0x6B3B,0x6B5B,0x739B,0x6B5A,0x2952,0x18EF,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x210F,0x2910,0x290F,0x210F,0x290F,0x2930,0x210F,0x210F,0x2930,0x2930,0x290F,0x290F,0x2910,0x290F,0x2910,0x2910,0x2910,0x2110,0x2930,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1132,0x1153,0x1195,0x19D6,0x19D6,0x19B5,0x1994,0x1152,0x1932,0x2151,0x2131,0x2130,0x2110,0x2130,0x2130,0x2131,0x2152,0x1933,0x1153,0x19B5,0x21F7,0x21F7,0x1994,0x1112,0x1911,0x2131,0x2131,0x2110,0x2130,0x2110,0x2930,0x2110,0x2930,0x2930,0x212F,0x290F,0x2930,0x2930,0x212F,0x2930,0x2930,0x210F,0x2930,0x2110,0x2110,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x2930,0x2930,0x290F,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x2930,0x2130,0x2130,0x2131,0x1911,0x1112,0x1113,0x1996,0x19D7,0x1A19,0x19F8,0x11D8,0x09B7,0x11B7,0x11B8,0x11B8,0x19D8,0x19D7,0x19D7,0x21B6,0x2195,0x2173,0x2972,0x2951,0x3151,0x3171,0x3171,0x3171,0x3171,0x3992,0x3151,0x3971,0x3951,0x4151,0x4150,0x40EE,0x592E,0xDCDC,0xDC9A,0xDC99,0xDC78,0xE458,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC36,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC17,0xE437,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC17,0xDC17,0xDC16,0xDC17,0xDC16,0xDC16,0xDC17,0xDBF6,0xDC16,0xDC16,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDC16,0xDBF6,0xDBF6,0xDC17,0xDBF6,0xDBF7,0xDC17,0xDC17,0xDC18,0xD438,0xDC59,0xD47A,0x698F,0x388C,0x410E,0x390F,0x3130,0x3130,0x3130,0x3130,0x3151,0x3151,0x3151,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x210F,0x2130,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2951,0x2930,0x2930,0x2930,0x290F,0x290F,0x292F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x28EF,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x210F,0x210F,0x212F,0x292F,0x210F,0x212F,0x212F,0x210F,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2930,0x212F,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x11D6,0x11F7,0x11D6,0x1195,0x1132,0x1911,0x2131,0x2110,0x2130,0x2930,0x2910,0x290F,0x2930,0x2930,0x210F,0x290F,0x2930,0x2930,0x210F,0x2930,0x292F,0x2930,0x2930,0x210F,0x210F,0x290F,0x292F,0x2930,0x210F,0x292F,0x292F,0x292F,0x212F,0x2930,0x2930,0x2930,0x292F,0x292F,0x210F,0x2930,0x2110,0x2930,0x210F,0x2110,0x2110,0x20CF,0x208F,0x204F,0x9B7D,0xA31D,0xA2BC,0xA2BC,0xA29C,0xA27C,0xA25C,0xAA5C,0xAA7D,0xAA5C,0xAA5C,0xAA5C,0xAA7C,0xA27C,0xAA9C,0xA2BB,0x9ADB,0xA37C,0x284F,0x30D0,0x28CF,0x20EF,0x290F,0x2910,0x28D0,0x28B0,0x304F,0x69B6,0x9ADC,0xA2BC,0xAA9C,0xAA9D,0xA27C,0xA29C,0x9ABC,0x9ABC,0x9B1D,0x7A19,0x4893,0x92DC,0x9ADC,0x9ABC,0x9ABC,0xA2BD,0xA29D,0xA2BD,0x9A9C,0x9ADC,0x8ABB,0x3891,0x30B0,0x30D0,0x28EF,0x290F,0x292F,0x292F,0x210F,0x20EF,0x208E,0x284F,0x9B1D,0x9ADD,0xA2BD,0xA29D,0xA2BD,0xA29D,0xA29C,0x9A9C,0x9AFC,0xABDF,0x3050,0x2870,0x20AF,0x28EF,0x2910,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x20CF,0x288F,0x284F,0x9B1C,0xA2FC,0xA2BC,0xA29C,0xA29C,0xA29D,0x9A9C,0x9ABC,0x9B1D,0x8ADB,0x3070,0x30B0,0x28D0,0x2910,0x28F0,0x20F0,0x2110,0x2110,0x2111,0x2111,0x2131,0x1932,0x1932,0x1954,0x1995,0x19D6,0x19F7,0x19F7,0x1A18,0x11F7,0x1A18,0x19F8,0x11F7,0x19F7,0x19D7,0x1995,0x1133,0x1112,0x1932,0x1932,0x2132,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2931,0x2130,0x2930,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2132,0x2132,0x1912,0x1132,0x1133,0x1174,0x19B6,0x2217,0x21F8,0x21D7,0x1995,0x1113,0x1112,0x1911,0x1931,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x2130,0x212F,0x2130,0x212F,0x210F,0x2930,0x210F,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F, + 0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x210F,0x290F,0x290F,0x2910,0x290F,0x290F,0x2910,0x2910,0x292F,0x290F,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x2910,0x2930,0x2930,0x2910,0x2930,0x292F,0x292F,0x290F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x2152,0x1952,0x1952,0x1133,0x1154,0x1175,0x11B6,0x11D8,0x1A19,0x1A19,0x1A19,0x11D8,0x11B7,0x1155,0x1134,0x1133,0x1111,0x1931,0x1931,0x2131,0x1910,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x292F,0x292F,0x212F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x210F,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1111,0x1132,0x1175,0x19F7,0x1A19,0x1218,0x11D7,0x0955,0x0114,0x0934,0x0954,0x0975,0x0955,0x0976,0x19F7,0x19F8,0x19D7,0x1174,0x1132,0x2131,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x2930,0x2930,0x290F,0x2930,0x210F,0x2910,0x2110,0x2930,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x1911,0x1112,0x1133,0x19B5,0x19B6,0x11D7,0x11D7,0x11D7,0x0976,0x0975,0x0996,0x1196,0x19D7,0x19F7,0x11B7,0x1196,0x1155,0x1134,0x1933,0x1932,0x1932,0x1931,0x1911,0x1910,0x1911,0x1911,0x1931,0x1930,0x2131,0x2131,0x2131,0x1910,0x1910,0x1910,0x2131,0x2111,0x2131,0x2111,0x2111,0x2111,0x2111,0x2111,0x2131,0x1910,0x2111,0x2131,0x2131,0x2111,0x2131,0x2131,0x2110,0x1910,0x2110,0x2110,0x2110,0x1910,0x2131,0x2131,0x1931,0x1930,0x2131,0x2131,0x2131,0x1911,0x1931,0x1931,0x1931,0x1911,0x10F1,0x10F2,0x1133,0x0933,0x19B6,0x21F7,0x21F7,0x21F7,0x19B6,0x1154,0x1133,0x1912,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2910,0x290F,0x210F,0x212F,0x212F,0x2130,0x212F,0x2930,0x210F,0x212F,0x210F,0x2930,0x210F,0x292F,0x290F,0x2930,0x290F,0x2930,0x212F,0x2110,0x2110,0x2930,0x290F,0x2930,0x210F,0x2930,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2910,0x2910,0x290F,0x290F,0x212F,0x210F,0x2930,0x2950,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x18AF,0x739A,0x7B9B,0x735B,0x733B,0x731B,0x7B1B,0x837C,0x5A37,0x28B0,0x28D0,0x28F0,0x20CF,0x20CF,0x20F0,0x188F,0x3993,0x737B,0x735B,0x733B,0x731B,0x731B,0x6AFB,0x731B,0x733B,0x735B,0x735B,0x739B,0x6B3A,0x18D0,0x18CF,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x212F,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x212F,0x292F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1932,0x1133,0x1153,0x19D5,0x19F6,0x19F6,0x19D5,0x1993,0x1131,0x1931,0x2172,0x2151,0x2130,0x2110,0x2130,0x2131,0x2152,0x1932,0x1933,0x1133,0x19B5,0x21F7,0x21F7,0x1995,0x1132,0x1932,0x2131,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x212F,0x212F,0x290F,0x290F,0x212F,0x212F,0x2930,0x2930,0x212F,0x2930,0x210F,0x2930,0x290F,0x290F,0x210F,0x2910,0x2930,0x290F,0x290F,0x290F,0x292F,0x210F,0x2930,0x2930,0x210F,0x2930,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2131,0x2131,0x1911,0x1112,0x1134,0x19D8,0x19F8,0x19F9,0x19F8,0x11B7,0x0997,0x1197,0x0997,0x1197,0x1197,0x19D7,0x2218,0x21D7,0x21B6,0x2194,0x2973,0x3172,0x3172,0x3172,0x3151,0x3171,0x3171,0x3972,0x3971,0x3971,0x3951,0x4151,0x4130,0x40EE,0x616F,0xDCFC,0xDC9A,0xDC79,0xDC58,0xE458,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xDC37,0xDC37,0xE437,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC17,0xDC37,0xDC17,0xDC17,0xDC37,0xDC16,0xDC17,0xDC17,0xDC16,0xDC17,0xDC17,0xDC17,0xDC16,0xDC16,0xDBF6,0xDC17,0xDBF6,0xDC17,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBF6,0xDBF7,0xDC17,0xDC17,0xDC17,0xD417,0xDC58,0xDC7A,0xCC59,0x614F,0x386C,0x38EE,0x390F,0x3130,0x3130,0x3151,0x3151,0x3151,0x3131,0x2930,0x3151,0x2930,0x2951,0x2951,0x2930,0x2930,0x2930,0x2930,0x3151,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x28EF,0x28EF,0x28EE,0x28EF,0x28EE,0x28EE,0x28EE,0x28EE,0x28EE,0x28EE,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x292F,0x292F,0x2930,0x2130,0x2930,0x2130,0x2130,0x2130,0x212F,0x292F,0x210F,0x290F,0x290F,0x212F,0x212F,0x212F,0x2130,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x2930,0x210F,0x290F,0x292F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x19D6,0x19F7,0x11F7,0x1195,0x1112,0x1911,0x2131,0x2130,0x2130,0x2930,0x2110,0x2910,0x210F,0x212F,0x2930,0x2110,0x212F,0x212F,0x210F,0x210F,0x292F,0x2930,0x2930,0x210F,0x290F,0x292F,0x2930,0x292F,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x212F,0x210F,0x2930,0x2110,0x2930,0x210F,0x210F,0x20EF,0x20CF,0x208F,0x3070,0xAB7E,0xAAFD,0xAABD,0xAA7D,0xB27D,0xB27D,0xBA9E,0xBA7E,0xB23C,0xB23D,0xBA7D,0xB25D,0xB27D,0xBA9D,0xB2BD,0xAABC,0xA2DB,0xA35C,0x282E,0x308F,0x28CF,0x20CF,0x28EF,0x28F0,0x30D0,0x38D1,0x4091,0x9ABB,0xAABC,0xB29D,0xB29D,0xB27D,0xB27D,0xAA7C,0xAABC,0xA2DC,0xA33D,0x50B3,0x4031,0x8A7A,0xAAFD,0xA2BC,0xA29D,0xAA9D,0xB2BE,0xB2BE,0xAABD,0xAADD,0xAB1D,0x6976,0x3850,0x30D0,0x28AF,0x20EF,0x20EE,0x210E,0x210F,0x20CE,0x206E,0x282F,0xAB5E,0xAADD,0xB2BE,0xAA7D,0xB29E,0xB27D,0xAA9D,0xAA9D,0xAAFD,0xAB9E,0x3030,0x2870,0x288F,0x28CF,0x2910,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x20EF,0x28CF,0x288F,0x3870,0xA31C,0xAADC,0xB2DD,0xB2BD,0xAA5C,0xAA5C,0xAA9D,0xAABD,0xAB1D,0x9AFC,0x3030,0x3070,0x28D0,0x20CF,0x20EF,0x2910,0x2910,0x2910,0x2111,0x2131,0x2132,0x1932,0x1954,0x19B5,0x19D6,0x19D7,0x19D7,0x11D7,0x11D7,0x11D7,0x11B7,0x11B7,0x11D7,0x19F8,0x19F7,0x19D7,0x1175,0x1113,0x1133,0x1932,0x2153,0x1932,0x1911,0x1931,0x1931,0x1931,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2111,0x2111,0x2111,0x2131,0x1911,0x2131,0x2132,0x1931,0x2131,0x2131,0x2131,0x1931,0x2131,0x2131,0x2111,0x2131,0x1932,0x1912,0x1932,0x1112,0x1133,0x1154,0x1995,0x21F7,0x21F7,0x21F7,0x1975,0x1113,0x10F2,0x1911,0x2131,0x2131,0x2131,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x210F,0x2110,0x2910,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930, + 0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x210F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2151,0x2151,0x2131,0x1931,0x1932,0x1932,0x1133,0x1154,0x1175,0x1196,0x11D8,0x11F9,0x1A1A,0x1A19,0x19F8,0x1197,0x1155,0x1134,0x1133,0x1932,0x1931,0x2131,0x1910,0x1910,0x2150,0x2130,0x2130,0x2130,0x210F,0x212F,0x2930,0x2930,0x2130,0x212F,0x210F,0x2110,0x2110,0x2930,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x1931,0x1911,0x1132,0x1154,0x11B6,0x11F8,0x1A39,0x1A18,0x0996,0x0155,0x0955,0x0955,0x0955,0x0955,0x11B6,0x19F8,0x19F7,0x19D6,0x1974,0x1911,0x1910,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2910,0x2910,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x210F,0x2930,0x2110,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x1911,0x1911,0x1112,0x1153,0x19B6,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19D7,0x19F7,0x19D7,0x19D7,0x19D7,0x1995,0x1134,0x1933,0x1932,0x1932,0x2131,0x2131,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1931,0x2131,0x1911,0x1112,0x1113,0x1134,0x1995,0x19D7,0x2218,0x21F7,0x1996,0x1974,0x1113,0x1912,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x290F,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2930,0x2930,0x292F,0x292F,0x290F,0x290F,0x212F,0x2930,0x210F,0x2110,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x210F,0x2110,0x2910,0x2930,0x2930,0x212F,0x2930,0x210F,0x2930,0x2930,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x20EF,0x2110,0x20EF,0x2110,0x108E,0x6B39,0x83BC,0x7B5B,0x7B1B,0x7B1B,0x7B1B,0x7B1B,0x8B7C,0x6A78,0x28B0,0x28D0,0x28F0,0x20AF,0x20AF,0x186E,0x3994,0x7B5C,0x733B,0x733C,0x731C,0x731B,0x7B1C,0x731B,0x7B3B,0x7B5B,0x7B9C,0x6B1A,0x2911,0x18AF,0x20F0,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x290F,0x2910,0x2930,0x2910,0x2910,0x2910,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1930,0x1931,0x1932,0x1153,0x1174,0x19D6,0x19F7,0x21F6,0x21D5,0x1152,0x1111,0x1931,0x2151,0x2151,0x1910,0x2110,0x2130,0x2131,0x2131,0x1932,0x1112,0x1133,0x19B6,0x21F7,0x21F7,0x1995,0x1932,0x1932,0x2131,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x212F,0x210F,0x290F,0x2930,0x292F,0x210F,0x212F,0x2930,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x2910,0x2930,0x2930,0x210F,0x292F,0x290F,0x210F,0x210F,0x290F,0x2930,0x210F,0x2930,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x212F,0x212F,0x2130,0x2930,0x2130,0x2131,0x1911,0x1112,0x1175,0x21F8,0x19D8,0x19D8,0x0977,0x0956,0x0976,0x1176,0x0976,0x0976,0x1176,0x19B7,0x2218,0x19D7,0x21B6,0x2195,0x2973,0x2972,0x3152,0x3172,0x3172,0x3172,0x3172,0x3972,0x3972,0x3971,0x4171,0x4151,0x4150,0x40CE,0x6990,0xDCDC,0xD479,0xDC99,0xDC58,0xDC58,0xDC37,0xDC37,0xDC37,0xDC17,0xE457,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE437,0xDC37,0xDC37,0xDC37,0xDC37,0xE437,0xDC37,0xDC17,0xDC37,0xDC37,0xDC37,0xDC17,0xDC17,0xDC16,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDBF6,0xDBF6,0xDC17,0xDC16,0xDC17,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBD6,0xDBF7,0xDC17,0xDC17,0xDC17,0xDC17,0xDC38,0xD459,0xCC39,0xB3B7,0x48AC,0x40AD,0x390F,0x3930,0x3150,0x3150,0x3151,0x3151,0x3151,0x3131,0x3151,0x3151,0x2950,0x2951,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2950,0x292F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x20EF,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x310F,0x310F,0x30EF,0x28EE,0x30EE,0x30CE,0x30EE,0x30EE,0x30EE,0x30EE,0x30EE,0x30EE,0x30EE,0x30EE,0x30EE,0x30EE,0x28EE,0x30EE,0x28EE,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x292F,0x212F,0x212F,0x210F,0x292F,0x290F,0x290F,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x19D6,0x19F7,0x11F7,0x1195,0x1132,0x1911,0x2131,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x292F,0x2110,0x210F,0x212F,0x2930,0x210F,0x210F,0x2930,0x2930,0x210F,0x290F,0x290F,0x292F,0x2930,0x2930,0x290F,0x292F,0x2930,0x2930,0x2110,0x210F,0x2930,0x2950,0x2930,0x212F,0x2930,0x2930,0x2930,0x2130,0x210F,0x210F,0x210F,0x20AF,0x206F,0x304F,0xB39E,0xB2DD,0xB27C,0xBA7D,0xB25D,0xC27E,0xC29E,0xC25E,0xBA3D,0xBA3D,0xC25D,0xC27E,0xC27E,0xBA7D,0xBA9D,0xB2BD,0xA2BB,0xA33C,0x302F,0x30B0,0x28AF,0x28D0,0x28F0,0x30D0,0x38B1,0x3891,0x7196,0xAAFC,0xB2BD,0xBA9D,0xBA7D,0xBA9E,0xBABE,0xB29D,0xB2BC,0xB31D,0x927A,0x3810,0x3810,0x7176,0xAADD,0xAA9C,0xB29D,0xB2BE,0xBABE,0xBABE,0xBADE,0xB2DE,0xB2DD,0xB33E,0x4051,0x3891,0x28D0,0x28EF,0x210F,0x210F,0x210F,0x20CE,0x206E,0x280E,0xAB5E,0xB2DE,0xB29D,0xBA7E,0xBA7E,0xBA7D,0xB29D,0xB2BD,0xB2DD,0xBB9F,0x3830,0x3070,0x288F,0x28EF,0x2910,0x2930,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x20EF,0x28CF,0x288F,0x3850,0xAB1C,0xBAFD,0xBA9D,0xBA7D,0xB25D,0xBA7D,0xB27D,0xB2BD,0xB2FE,0xA2FD,0x3830,0x3090,0x28B0,0x28F0,0x28EF,0x2910,0x2930,0x2930,0x2110,0x2111,0x1911,0x1932,0x1174,0x19D6,0x19D7,0x19F7,0x11D7,0x11B7,0x0976,0x0976,0x0976,0x0976,0x0996,0x11D7,0x19F8,0x11D7,0x19B6,0x1175,0x1133,0x1113,0x1132,0x1912,0x1932,0x1912,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1932,0x1912,0x1912,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1112,0x1112,0x1133,0x1133,0x1154,0x19B6,0x21F7,0x21F7,0x21F7,0x1175,0x1134,0x10F2,0x18F1,0x1911,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2910,0x2110,0x2930,0x2110,0x2110,0x2910,0x2930,0x2910,0x2910,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910, + 0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2910,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2110,0x2910,0x2910,0x210F,0x2910,0x2910,0x290F,0x290F,0x292F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2150,0x2130,0x2131,0x1931,0x1931,0x1132,0x1133,0x1154,0x1175,0x1196,0x11D8,0x11F9,0x1A1A,0x1A19,0x19F8,0x1197,0x1155,0x1133,0x1132,0x1932,0x1931,0x1931,0x1910,0x2131,0x2151,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x210F,0x212F,0x210F,0x210F,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x1931,0x1911,0x1112,0x1133,0x1175,0x11D7,0x1A18,0x11F8,0x11F7,0x0976,0x0975,0x0976,0x0976,0x0996,0x19F8,0x11D7,0x11B6,0x19D6,0x1974,0x1911,0x1910,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x290F,0x2910,0x212F,0x2130,0x2110,0x2910,0x2110,0x2110,0x2930,0x2930,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x210F,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2130,0x2131,0x1931,0x1111,0x1132,0x1995,0x19F7,0x2217,0x19F7,0x19F7,0x19F7,0x19D7,0x19F7,0x19F7,0x19D6,0x21D6,0x1174,0x1112,0x1932,0x2152,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x290F,0x2930,0x2110,0x2930,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2150,0x2130,0x2151,0x2152,0x1932,0x10F2,0x1133,0x1154,0x19B6,0x21F7,0x2218,0x21F7,0x19B6,0x1154,0x1113,0x1912,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x2930,0x290F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x210F,0x2930,0x2930,0x292F,0x210F,0x2110,0x2110,0x2930,0x290F,0x290F,0x210F,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x2110,0x2110,0x2930,0x290F,0x210F,0x2930,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x210F,0x2110,0x2930,0x2930,0x2930,0x5A97,0x83BC,0x7B5B,0x7B3B,0x7B1B,0x7AFB,0x82FB,0x831B,0x833B,0x72D9,0x3932,0x28D0,0x288F,0x208F,0x206F,0x4173,0x837C,0x7B3C,0x833C,0x7B1C,0x72FB,0x7B1C,0x7B3C,0x7B5C,0x7B7C,0x62D9,0x20F1,0x20D0,0x20D0,0x20EF,0x2110,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x212F,0x210F,0x2910,0x210F,0x290F,0x210F,0x210F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x212F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x2130,0x2950,0x2130,0x1930,0x1911,0x1131,0x1132,0x1154,0x19B5,0x19F7,0x21F7,0x19D6,0x1994,0x1952,0x1910,0x1930,0x2151,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1912,0x1112,0x1133,0x19B6,0x21F7,0x21F7,0x1974,0x1932,0x1912,0x2111,0x2131,0x2111,0x2110,0x2130,0x2130,0x2110,0x210F,0x212F,0x2930,0x290F,0x2930,0x212F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x212F,0x2910,0x2110,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x2930,0x2110,0x2131,0x1911,0x1112,0x21F7,0x2239,0x19D8,0x1197,0x0935,0x0956,0x1176,0x1196,0x1196,0x1196,0x1176,0x19B7,0x2218,0x21F8,0x21B6,0x2195,0x2973,0x3173,0x3172,0x3172,0x3171,0x3151,0x3992,0x3972,0x3992,0x4172,0x4172,0x4171,0x4150,0x40EE,0x7211,0xDCFC,0xD499,0xDC99,0xDC58,0xDC58,0xDC37,0xDC37,0xDC57,0xDC57,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC17,0xDC37,0xE437,0xDC17,0xDC17,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC16,0xDC16,0xDC16,0xDC16,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDBF6,0xDBF6,0xDBF6,0xDC17,0xDBF6,0xDBF6,0xDBF6,0xDC17,0xDBF6,0xDBF6,0xDBF7,0xDBF6,0xDBF7,0xDBF6,0xDC17,0xDC17,0xDC38,0xDC38,0xD438,0xCC39,0xCC9B,0x594F,0x40EE,0x3930,0x3951,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x2930,0x2930,0x2950,0x2950,0x2950,0x2950,0x2930,0x2950,0x2950,0x2930,0x2951,0x3131,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x310F,0x290F,0x290E,0x30EE,0x30EE,0x30CD,0x30CD,0x30CD,0x30CD,0x30AD,0x30AD,0x308C,0x308C,0x306C,0x306C,0x306C,0x306C,0x308D,0x30AD,0x30AD,0x30CE,0x30CE,0x30EE,0x30EE,0x30EE,0x28EE,0x28EE,0x290F,0x290F,0x210F,0x210F,0x290F,0x2110,0x2110,0x2930,0x2110,0x210F,0x210F,0x292F,0x292F,0x290F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2110,0x210F,0x2930,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x292F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x19D6,0x1A17,0x11D7,0x11B5,0x1132,0x1911,0x2131,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x2930,0x2930,0x212F,0x210F,0x292F,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2910,0x2110,0x2930,0x2930,0x2930,0x212F,0x210F,0x210F,0x2930,0x2930,0x2930,0x210F,0x210F,0x20CF,0x208F,0x38B1,0xBBBF,0xBAFD,0xBABE,0xBA7D,0xC25D,0xC25E,0xCA5E,0xCA5E,0xCA5E,0xCA5E,0xC23D,0xCA9E,0xC25D,0xC27D,0xBA7C,0xB29C,0xB2DC,0xBB9E,0x300F,0x3090,0x28B0,0x28AF,0x28D0,0x30D0,0x38B1,0x48B2,0xBB7E,0xB2DD,0xBABD,0xC2BE,0xC2BE,0xCABE,0xBA9D,0xBA9D,0xB2BC,0xBB3E,0x50B2,0x300F,0x3810,0x58B3,0x9A7B,0xB2DD,0xBADE,0xBABE,0xBA7D,0xBA9E,0xC2BE,0xBADE,0xBADE,0xC37F,0x79B7,0x4071,0x30B0,0x28EF,0x290F,0x290F,0x292F,0x28EF,0x288F,0x3050,0xB37E,0xBADE,0xBABE,0xC29E,0xBA7E,0xC29E,0xC29E,0xBABD,0xB2DD,0xC3BF,0x4050,0x3070,0x30B0,0x28F0,0x2910,0x2930,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2910,0x28CF,0x308F,0x48D2,0xAB1C,0xBADD,0xC2BE,0xC29E,0xC27D,0xC29E,0xBA7D,0xBABE,0xBB1E,0xB33E,0x3830,0x3890,0x30D0,0x28EF,0x2910,0x290F,0x2910,0x2930,0x2111,0x2111,0x1911,0x1112,0x1174,0x19D6,0x19F7,0x19F7,0x0996,0x0975,0x0975,0x0955,0x0135,0x0155,0x0976,0x0996,0x11D8,0x19F8,0x19F8,0x1196,0x0934,0x1134,0x1153,0x1133,0x1132,0x1112,0x1132,0x1132,0x1911,0x1911,0x1931,0x1131,0x1111,0x1932,0x1932,0x1932,0x1932,0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1131,0x1132,0x1111,0x1111,0x1112,0x1132,0x1132,0x1133,0x1134,0x1114,0x1175,0x19B6,0x21F7,0x21F7,0x19B6,0x1175,0x1113,0x10F2,0x1911,0x2152,0x2131,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2930,0x2930,0x2930,0x2110,0x2130,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110, + 0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2910,0x2910,0x212F,0x210F,0x290F,0x2930,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x2930,0x2930,0x210F,0x2930,0x210F,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1133,0x1154,0x1175,0x1197,0x11B8,0x19F9,0x1A19,0x1A19,0x19F8,0x11B7,0x1175,0x1154,0x1133,0x1932,0x1931,0x1911,0x2131,0x2151,0x2130,0x2110,0x2130,0x2130,0x210F,0x2930,0x2130,0x2110,0x210F,0x2110,0x2110,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x2910,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x1911,0x1912,0x1133,0x1154,0x1196,0x11F8,0x1A18,0x1218,0x11D7,0x11D7,0x11B7,0x11B7,0x19F7,0x19F7,0x19D7,0x1195,0x1994,0x1953,0x1911,0x2110,0x2130,0x2110,0x210F,0x2130,0x2110,0x210F,0x2130,0x2130,0x2130,0x212F,0x210F,0x292F,0x290F,0x2910,0x2130,0x210F,0x2110,0x2910,0x2110,0x210F,0x2110,0x2110,0x290F,0x210F,0x2930,0x290F,0x210F,0x210F,0x2910,0x210F,0x290F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2131,0x1931,0x1931,0x1132,0x1153,0x1995,0x19B5,0x19B6,0x19B6,0x11B6,0x11B5,0x11B5,0x1995,0x1995,0x1974,0x1133,0x1932,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2150,0x2130,0x212F,0x2130,0x212F,0x212F,0x210F,0x212F,0x2130,0x210F,0x2930,0x210F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x2950,0x2130,0x2130,0x2951,0x2152,0x1932,0x1112,0x1133,0x1134,0x1995,0x21F7,0x21F7,0x21F7,0x19B6,0x1974,0x1133,0x1932,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x2930,0x2910,0x2910,0x290F,0x2930,0x210F,0x2110,0x210F,0x210F,0x210F,0x2110,0x2910,0x290F,0x290F,0x210F,0x212F,0x212F,0x2930,0x290F,0x212F,0x2930,0x2110,0x2110,0x2930,0x290F,0x2930,0x212F,0x212F,0x212F,0x2930,0x212F,0x2930,0x210F,0x2930,0x290F,0x2130,0x2130,0x212F,0x2930,0x210F,0x2930,0x210F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2130,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2910,0x2910,0x39B3,0x8BDC,0x7B5B,0x7B3B,0x831B,0x831C,0x82FC,0x82FB,0x8B1B,0x8B3B,0x7AD9,0x4974,0x2890,0x204F,0x180E,0x4154,0x8B5D,0x831C,0x831C,0x831C,0x7B1C,0x7B1C,0x7B3C,0x839D,0x6298,0x20B0,0x18AF,0x20F0,0x20F0,0x20EF,0x2910,0x210F,0x290F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x212F,0x2930,0x212F,0x2930,0x2930,0x210F,0x210F,0x290F,0x210F,0x2910,0x210F,0x210F,0x210F,0x2110,0x2910,0x210F,0x290F,0x290F,0x2910,0x2930,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2150,0x1930,0x1931,0x1111,0x1132,0x1174,0x1995,0x19D6,0x19F7,0x21F7,0x21B5,0x1973,0x1931,0x1930,0x1930,0x2150,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1912,0x1112,0x1133,0x19B6,0x21F7,0x21F7,0x1975,0x1932,0x1932,0x2131,0x2111,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x212F,0x212F,0x290F,0x290F,0x212F,0x212F,0x290F,0x210F,0x2930,0x210F,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x290F,0x2930,0x210F,0x290F,0x2930,0x2930,0x2930,0x210F,0x212F,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2130,0x2131,0x1932,0x1133,0x2217,0x19F8,0x19D8,0x0976,0x0955,0x0955,0x1175,0x1196,0x1175,0x1175,0x1175,0x19B7,0x19F8,0x21F8,0x21D7,0x2195,0x2974,0x3173,0x3172,0x3972,0x3172,0x3972,0x3992,0x4192,0x4192,0x4172,0x4171,0x4151,0x4971,0x40CD,0x7A32,0xDCFC,0xD479,0xDC79,0xDC58,0xDC58,0xDC37,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC37,0xDC37,0xE437,0xE437,0xE437,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC36,0xDC36,0xDC16,0xDC16,0xDC37,0xDC16,0xDC16,0xDC16,0xDBF6,0xDC17,0xDC17,0xDC17,0xDBF6,0xDC16,0xDC16,0xDBF6,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDC17,0xDC17,0xDBF7,0xDBF6,0xDBF6,0xDBF6,0xDC17,0xDBF7,0xDBF7,0xDC17,0xDC58,0xD459,0xD47A,0x9AF5,0x386C,0x410F,0x3910,0x3951,0x3151,0x3151,0x3151,0x3151,0x3131,0x3151,0x3151,0x2950,0x2950,0x2950,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x3131,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x290F,0x290F,0x310F,0x28EF,0x28EF,0x30EF,0x30EE,0x28CE,0x30CD,0x30AD,0x30AD,0x308C,0x308C,0x304B,0x280A,0x280A,0x280A,0x300A,0x300A,0x300A,0x300A,0x382B,0x382B,0x382B,0x302B,0x300B,0x280B,0x280B,0x304C,0x308D,0x30AD,0x30CD,0x30CE,0x30EE,0x28EE,0x28EE,0x290F,0x290F,0x20EF,0x290F,0x210F,0x210F,0x2910,0x2910,0x290F,0x2930,0x290F,0x290F,0x292F,0x292F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2110,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2110,0x2930,0x210F,0x290F,0x2930,0x290F,0x2930,0x212F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2110,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x19D6,0x1A17,0x11D6,0x11B5,0x1132,0x1911,0x2131,0x2131,0x2130,0x2930,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x212F,0x212F,0x2930,0x2930,0x210F,0x210F,0x212F,0x292F,0x2930,0x2930,0x2110,0x2110,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x212F,0x2930,0x212F,0x210F,0x210F,0x20CF,0x206E,0x3890,0xC3DF,0xBAFE,0xC2DE,0xC29E,0xC27E,0xCA5E,0xCA5E,0xCA5E,0xD27E,0xCA7E,0xCA5E,0xCA7E,0xCA7E,0xC29D,0xBA9C,0xB2BC,0xB2DC,0xC3FF,0x380F,0x3890,0x288F,0x28B0,0x30B0,0x30B0,0x3870,0x8A79,0xC39F,0xBB1E,0xC2DD,0xC2BE,0xCABE,0xC2BE,0xC2BD,0xBADD,0xBAFD,0xAB1D,0x380F,0x300F,0x300F,0x3810,0x9239,0xBAFE,0xC2FE,0xC2BE,0xBA9E,0xC29E,0xBA9D,0xBABE,0xBAFE,0xBB3E,0xB33D,0x50B2,0x3090,0x30F0,0x290F,0x292F,0x20EF,0x28EF,0x206E,0x302F,0xB37E,0xBAFE,0xC2DE,0xC2BF,0xC2BE,0xC29E,0xC2BE,0xC2DD,0xBAFD,0xC3BF,0x4051,0x3070,0x28AF,0x28EF,0x2910,0x290F,0x2930,0x210F,0x2930,0x212F,0x212F,0x2150,0x212F,0x210F,0x20EF,0x28EF,0x286F,0x48D1,0xBB5D,0xC2FD,0xC2DE,0xCABE,0xC29E,0xC29E,0xC29E,0xC2DE,0xC33F,0xB35E,0x3830,0x3890,0x30D0,0x28EF,0x28EF,0x290F,0x2910,0x2930,0x2111,0x2131,0x1932,0x1132,0x1174,0x19D6,0x19F7,0x11D7,0x0955,0x0955,0x0935,0x0934,0x0935,0x0935,0x0155,0x0976,0x09B7,0x11F8,0x11F8,0x11D7,0x0955,0x1155,0x0934,0x1154,0x1154,0x1153,0x1133,0x1153,0x1132,0x1132,0x1152,0x1152,0x1132,0x1132,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1153,0x1133,0x1134,0x1154,0x1975,0x19D7,0x2218,0x21D7,0x21D7,0x1995,0x1113,0x1112,0x1911,0x2131,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2131,0x2110,0x2110,0x2110,0x2110,0x2131,0x2110,0x2130,0x2130,0x2110,0x2131,0x2131,0x2111,0x2111,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110, + 0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2110,0x2110,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2910,0x2930,0x290F,0x210F,0x210F,0x290F,0x2930,0x212F,0x2930,0x290F,0x2910,0x2930,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x2110,0x2130,0x2151,0x1951,0x1131,0x1132,0x1154,0x1175,0x1197,0x11B8,0x11F9,0x19F9,0x1A19,0x19D8,0x19B7,0x1175,0x1154,0x1133,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x1910,0x1931,0x1132,0x1133,0x1175,0x11B6,0x11D7,0x1A18,0x1A18,0x11F8,0x11D7,0x11D7,0x2238,0x1A17,0x1195,0x1154,0x1974,0x1952,0x18F0,0x1910,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x210F,0x212F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2910,0x210F,0x2910,0x2910,0x290F,0x210F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x290F,0x2110,0x2110,0x2110,0x2130,0x2131,0x1931,0x1931,0x1932,0x1953,0x1154,0x1974,0x1154,0x1174,0x1174,0x1153,0x1153,0x1133,0x1112,0x1932,0x1931,0x1931,0x1931,0x2130,0x2110,0x2110,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2151,0x2152,0x1911,0x1111,0x1112,0x1134,0x1995,0x21F7,0x19F7,0x19D7,0x21D6,0x1174,0x1133,0x1932,0x1911,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2930,0x210F,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x210F,0x2910,0x2930,0x2930,0x2930,0x290F,0x212F,0x212F,0x2910,0x2910,0x212F,0x212F,0x2930,0x210F,0x290F,0x2930,0x290F,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x290F,0x290F,0x2930,0x212F,0x212F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2930,0x2930,0x212F,0x2930,0x292F,0x290F,0x292F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2110,0x20EF,0x18CF,0x18AF,0x18AF,0x5236,0x837C,0x7B3B,0x831C,0x831C,0x82FC,0x8B1C,0x8B1C,0x8B3C,0x8B1B,0x82FA,0x40F2,0x200F,0x200F,0x4934,0x8B3C,0x82FC,0x8B3D,0x831C,0x831C,0x831C,0x8B7D,0x6258,0x184F,0x20AF,0x18CF,0x20EF,0x2110,0x210F,0x2930,0x2930,0x2910,0x290F,0x292F,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x2110,0x2130,0x2130,0x1910,0x1111,0x1132,0x1994,0x1174,0x19B6,0x19F7,0x21F7,0x19B5,0x1974,0x1932,0x1931,0x1930,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x10F1,0x1112,0x1154,0x19D6,0x2217,0x21F7,0x1974,0x1933,0x1932,0x2131,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x212F,0x290F,0x290F,0x210F,0x292F,0x2930,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x2910,0x210F,0x2910,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x2130,0x2131,0x1932,0x1133,0x21D7,0x2218,0x19D8,0x1197,0x0955,0x0955,0x0955,0x1175,0x1155,0x1155,0x1155,0x21D8,0x2219,0x21F8,0x21B7,0x2195,0x2974,0x3173,0x3172,0x3972,0x3171,0x3972,0x3992,0x4192,0x4192,0x4192,0x4171,0x4151,0x4950,0x48EE,0x8AB4,0xDCFC,0xD499,0xDC79,0xDC58,0xDC58,0xDC37,0xDC37,0xE458,0xE437,0xDC37,0xDC36,0xDC37,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC16,0xDC17,0xDC17,0xDC37,0xDC37,0xDC36,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC17,0xDC16,0xDC16,0xDC17,0xDC17,0xDC17,0xDC16,0xDC17,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xD3D6,0xDBD6,0xDBF6,0xDBF7,0xDC17,0xD3D6,0xDBF6,0xDBF7,0xDC17,0xDC18,0xDC39,0xDC7A,0xAB56,0x48AD,0x40AE,0x38EF,0x3930,0x3951,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x2930,0x2930,0x2951,0x2950,0x3151,0x2930,0x3131,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x290F,0x290F,0x2930,0x3130,0x3110,0x28EF,0x30EF,0x30CE,0x30CE,0x30CE,0x308D,0x286C,0x284C,0x282B,0x302A,0x302A,0x48AC,0x592E,0x71B0,0x8232,0x9294,0xAB57,0xBBB8,0xC3F9,0xC41A,0xC43A,0xC43A,0xBBFA,0xBBD9,0xB398,0xA336,0x9AF5,0x8253,0x616F,0x48AC,0x382B,0x302A,0x282B,0x308C,0x30CE,0x30EE,0x28EE,0x28EE,0x28EF,0x28EF,0x290F,0x290F,0x2930,0x2910,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x212F,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x2930,0x2930,0x290F,0x210F,0x210F,0x212F,0x212F,0x2930,0x290F,0x210F,0x212F,0x2130,0x212F,0x2930,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2131,0x1931,0x1932,0x1133,0x19D6,0x1A17,0x11D6,0x1195,0x1132,0x1911,0x2131,0x2130,0x2930,0x2130,0x210F,0x210F,0x292F,0x212F,0x290F,0x290F,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2110,0x2130,0x210F,0x212F,0x2930,0x2930,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x28EF,0x28AF,0x3890,0xCC3F,0xCB9F,0xCB5F,0xCB1F,0xD2FF,0xD2FF,0xD2DF,0xD2DF,0xD2FF,0xD2FF,0xD2DF,0xD2FF,0xD2FF,0xD31F,0xCB3E,0xC33E,0xCBDF,0xDCBF,0x300F,0x3890,0x30B0,0x30D0,0x30D0,0x38B0,0x5954,0xBBFF,0xC3BF,0xC35E,0xC2FE,0xCB1F,0xCB1F,0xCB1E,0xCB1E,0xCB5E,0xC39F,0x9A9A,0x300F,0x302F,0x3030,0x3830,0x8A18,0xC35E,0xC33F,0xCB1F,0xC2FE,0xCB1F,0xCB1F,0xCB3F,0xCB7F,0xC37F,0xCC1F,0x8A99,0x304F,0x30F0,0x3130,0x290F,0x210F,0x20CE,0x28AF,0x3890,0xC3FF,0xCB9F,0xCB5F,0xCB1F,0xCAFE,0xCAFE,0xCAFE,0xC31E,0xCB9F,0xD43F,0x3850,0x3070,0x28B0,0x28F0,0x2930,0x2930,0x292F,0x290F,0x2930,0x212F,0x212F,0x212F,0x2950,0x2930,0x20EF,0x28CF,0x288F,0x40B0,0xCC1F,0xD39F,0xD35F,0xCB1F,0xCADE,0xC2DE,0xC2FE,0xC31F,0xCB9F,0xC3DF,0x382F,0x3090,0x28CF,0x20EF,0x290F,0x292F,0x210F,0x2110,0x2110,0x1911,0x1912,0x1133,0x1174,0x19F7,0x1A18,0x11D7,0x0955,0x0935,0x0955,0x0955,0x0935,0x0955,0x0955,0x0956,0x0997,0x11D8,0x1A18,0x11D7,0x0975,0x1175,0x1195,0x1195,0x1195,0x1195,0x1174,0x1174,0x1974,0x1973,0x1973,0x1973,0x1974,0x1974,0x1974,0x1974,0x1974,0x1995,0x1174,0x1174,0x1974,0x1174,0x1174,0x1974,0x1173,0x1173,0x1994,0x1973,0x1994,0x19B5,0x19B5,0x19B6,0x21B6,0x21D7,0x21D7,0x21D7,0x21D7,0x1995,0x1133,0x10F2,0x1911,0x1911,0x2131,0x2951,0x2130,0x2130,0x210F,0x2110,0x2130,0x2930,0x210F,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2131,0x2110,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2110,0x2111,0x2111,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2111,0x2111,0x2111,0x2111,0x2131,0x2111,0x2131,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x1910,0x2110,0x2111, + 0x210F,0x210F,0x2930,0x210F,0x212F,0x2930,0x210F,0x290F,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2110,0x210F,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x212F,0x210F,0x2930,0x290F,0x210F,0x2910,0x2930,0x2110,0x2910,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1951,0x1930,0x1931,0x1132,0x1154,0x1155,0x1196,0x11B7,0x19F9,0x1A19,0x1A19,0x19F8,0x11B6,0x1175,0x1154,0x1933,0x1911,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x210F,0x290F,0x210F,0x290F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x292F,0x212F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2131,0x1932,0x1152,0x1153,0x1174,0x11B5,0x19F7,0x19D6,0x19D6,0x19D6,0x19B6,0x19D6,0x19B5,0x1174,0x1153,0x1952,0x1932,0x18F0,0x2110,0x2130,0x2930,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x2930,0x210F,0x210F,0x2910,0x2930,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x1931,0x1931,0x1932,0x1953,0x1953,0x1973,0x1153,0x1153,0x1153,0x1952,0x1932,0x1931,0x1911,0x1911,0x2131,0x2110,0x2110,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2110,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x210F,0x212F,0x212F,0x210F,0x2130,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2151,0x1911,0x1112,0x1112,0x1134,0x1995,0x19D7,0x2218,0x2217,0x19D6,0x1154,0x1133,0x1132,0x1932,0x1931,0x1931,0x2131,0x2130,0x2130,0x2150,0x2130,0x2130,0x210F,0x210F,0x2110,0x210F,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x210F,0x210F,0x2930,0x2910,0x2910,0x210F,0x2930,0x2910,0x210F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x2930,0x290F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x2950,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2910,0x210F,0x20EF,0x20CF,0x20CF,0x20AF,0x5216,0x835C,0x831B,0x831B,0x8AFB,0x8B1C,0x8AFC,0x931C,0x933C,0x8B1B,0x82BA,0x5175,0x200F,0x40D3,0x8AFC,0x82FC,0x8B1C,0x8B1C,0x8B1C,0x8B3C,0x6238,0x182F,0x208F,0x20CF,0x20CF,0x20EF,0x210F,0x2930,0x2930,0x2930,0x290F,0x290F,0x292F,0x2930,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2910,0x2930,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x292F,0x212F,0x292F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1111,0x1132,0x1153,0x1175,0x19D6,0x19D7,0x21F7,0x21D6,0x1974,0x1132,0x1911,0x1930,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1912,0x1133,0x1154,0x21F7,0x2217,0x21F7,0x1974,0x1933,0x1932,0x2111,0x2110,0x2130,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x292F,0x210F,0x2930,0x210F,0x212F,0x290F,0x2930,0x210F,0x2930,0x212F,0x2930,0x2930,0x290F,0x2910,0x2910,0x292F,0x210F,0x290F,0x290F,0x2910,0x2930,0x2930,0x210F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x292F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x2130,0x2130,0x2131,0x1911,0x1132,0x1975,0x2218,0x19D8,0x19D8,0x1196,0x0975,0x0975,0x0955,0x0934,0x0935,0x1156,0x19D8,0x21F9,0x21F8,0x21D7,0x29B6,0x2974,0x3173,0x3972,0x3952,0x3972,0x3972,0x3972,0x4192,0x4192,0x4192,0x4172,0x4951,0x4971,0x40CD,0x92D4,0xDCDB,0xD479,0xDC79,0xDC58,0xDC58,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC36,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC36,0xDC36,0xDC37,0xDC37,0xDC37,0xDC16,0xDC37,0xDC16,0xDC16,0xDC36,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDBF6,0xDBF6,0xDC16,0xDC16,0xDBF6,0xDBF6,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBF6,0xDBF6,0xDBF7,0xDBF7,0xD3D6,0xDBF6,0xDBF7,0xDC17,0xDBF7,0xDC38,0xDC38,0xCBF8,0x694F,0x40AE,0x38CF,0x3910,0x3931,0x3951,0x3971,0x3971,0x3171,0x3151,0x3150,0x3151,0x3150,0x3151,0x3151,0x3151,0x3151,0x3131,0x3151,0x2930,0x3130,0x3131,0x3130,0x3130,0x3130,0x2930,0x3150,0x3130,0x2930,0x2930,0x292F,0x290F,0x290F,0x290F,0x310F,0x310F,0x30EF,0x30CE,0x30CE,0x30AD,0x38AD,0x306C,0x280A,0x280A,0x382B,0x592E,0x7A32,0x9B16,0xB3B8,0xC3F9,0xCC19,0xCC19,0xCC19,0xCBF9,0xCBF9,0xCBF9,0xCC19,0xCBF9,0xCC19,0xCBF9,0xCC1A,0xC3D9,0xC3D9,0xC3D9,0xC3F9,0xC3F9,0xCC3A,0xCC3A,0xB3D8,0x9B36,0x71F1,0x40AC,0x280A,0x282B,0x288D,0x28AD,0x28EE,0x28EF,0x28EF,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x212F,0x2930,0x290F,0x210F,0x212F,0x212F,0x2930,0x290F,0x290F,0x2930,0x212F,0x2930,0x212F,0x210F,0x2930,0x2930,0x212F,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2110,0x1930,0x1911,0x1932,0x1133,0x19D6,0x1A17,0x11D6,0x1195,0x1132,0x1911,0x2131,0x2130,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x2930,0x2130,0x210F,0x212F,0x2930,0x2930,0x2110,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x290F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x212F,0x210F,0x2930,0x290F,0x210F,0x2930,0x28EF,0x28CF,0x38B0,0xAB9D,0xC3BF,0xBB3D,0xBB1E,0xC31E,0xC33E,0xC31E,0xC31E,0xC33E,0xC33E,0xC33E,0xC33E,0xBB1D,0xBB3D,0xB33D,0xB35C,0xAB5C,0x9B3B,0x40D1,0x38D0,0x30D0,0x30F0,0x30F0,0x30D0,0x82B8,0xB3FE,0xAB5D,0xAB3D,0xB33D,0xBB3D,0xB31D,0xAADC,0xB31C,0xB33C,0x92BA,0x50F3,0x304F,0x3090,0x3070,0x3870,0x58F3,0x927A,0xB31D,0xBB3D,0xBB3E,0xBB5E,0xBB5E,0xBB5E,0xB35D,0xB37D,0xBBDE,0xABDD,0x30B0,0x30F0,0x290F,0x290F,0x290F,0x20EF,0x28CF,0x30B0,0xB3DE,0xC3BF,0xB33D,0xBB1D,0xBB1D,0xBB1D,0xBB1D,0xB33D,0xBBBE,0xAB9C,0x304F,0x288F,0x20AF,0x28EF,0x2910,0x2930,0x210F,0x210F,0x292F,0x2130,0x212F,0x2130,0x212F,0x210F,0x210F,0x28EF,0x30CF,0x40D0,0xB3BD,0xCBDF,0xC37E,0xC35E,0xBB1D,0xBB1D,0xBB1D,0xBB5E,0xC3DF,0xAB9D,0x3870,0x30AF,0x28CF,0x20EF,0x292F,0x292F,0x210F,0x2110,0x2110,0x1931,0x1932,0x1133,0x1195,0x19F7,0x1A18,0x11D7,0x0955,0x0935,0x0955,0x0955,0x0955,0x0955,0x0955,0x0956,0x0996,0x11D8,0x11F8,0x11D7,0x0996,0x19F7,0x2238,0x2217,0x2217,0x21F7,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x2A16,0x21F6,0x29F6,0x29F6,0x21F6,0x21F6,0x21F7,0x21F6,0x21D6,0x21F6,0x21F6,0x21F5,0x21F6,0x21F6,0x2A16,0x2A16,0x2A16,0x2A16,0x2A17,0x21F7,0x21F7,0x21D7,0x21B6,0x21B6,0x1975,0x1933,0x1932,0x1911,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x1910,0x1911,0x1911,0x1931,0x1911,0x1911,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x2111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x2131,0x1911,0x1931,0x1911,0x1931,0x1931,0x1931, + 0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x2910,0x2110,0x2110,0x2910,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2110,0x210F,0x290F,0x292F,0x210F,0x290F,0x290F,0x210F,0x2930,0x2930,0x290F,0x2910,0x2910,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x212F,0x210F,0x212F,0x212F,0x2150,0x2130,0x1930,0x1931,0x1111,0x1132,0x1154,0x1175,0x1196,0x11B8,0x19F9,0x1A19,0x1A19,0x19D8,0x11B6,0x1175,0x1133,0x1132,0x1912,0x2131,0x1910,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2930,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x210F,0x2930,0x2110,0x2130,0x2130,0x1931,0x1931,0x1932,0x1953,0x1973,0x1994,0x1994,0x1994,0x1153,0x1153,0x1973,0x1953,0x1932,0x1932,0x1952,0x1931,0x1910,0x2110,0x2930,0x2930,0x2910,0x2110,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x2910,0x2110,0x210F,0x210F,0x2910,0x2930,0x290F,0x2930,0x2910,0x2910,0x290F,0x210F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x1910,0x1911,0x1931,0x1952,0x1952,0x1952,0x1952,0x1952,0x1931,0x1931,0x1910,0x1910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x210F,0x210F,0x20EF,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x2130,0x2930,0x2951,0x2151,0x1911,0x1112,0x1112,0x1134,0x1195,0x21F7,0x2217,0x19F7,0x1195,0x1174,0x1174,0x1132,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2930,0x2110,0x210F,0x2910,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x2910,0x210F,0x2110,0x212F,0x212F,0x210F,0x210F,0x2930,0x210F,0x2910,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2910,0x210F,0x210F,0x210F,0x2930,0x212F,0x2130,0x212F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2910,0x210F,0x2110,0x20F0,0x20D0,0x208F,0x5A16,0x833B,0x831C,0x8B3C,0x8B1C,0x92FC,0x92FB,0x92FB,0x92FB,0x92FC,0x931C,0x7A5A,0x69F8,0x829B,0x8ABC,0x92FC,0x8AFC,0x8AFC,0x8B1C,0x2030,0x204F,0x20D0,0x20F0,0x2110,0x2130,0x2130,0x212F,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x2910,0x2930,0x210F,0x2910,0x2910,0x290F,0x290F,0x2930,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x210F,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x292F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x1911,0x1911,0x1132,0x1974,0x19B5,0x19F7,0x21F7,0x19B6,0x21D6,0x1995,0x1112,0x1911,0x1911,0x2130,0x2150,0x2150,0x2130,0x212F,0x2110,0x2130,0x2151,0x2131,0x1911,0x1112,0x1133,0x1195,0x2217,0x2217,0x19D6,0x1174,0x1953,0x1932,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x212F,0x212F,0x212F,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x2930,0x292F,0x210F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2931,0x2131,0x1911,0x1912,0x1134,0x19B7,0x19D8,0x19D8,0x11D7,0x11B6,0x0975,0x0955,0x0955,0x0956,0x1176,0x19B8,0x2219,0x21F8,0x21D7,0x2195,0x3194,0x3173,0x3952,0x3952,0x3972,0x3972,0x4192,0x4172,0x4172,0x4192,0x4172,0x4971,0x5171,0x48EE,0x9B15,0xE4FC,0xD479,0xDC58,0xDC58,0xE458,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC36,0xDC36,0xDC36,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xDC16,0xDC17,0xDC17,0xDC37,0xDC16,0xDC16,0xDC36,0xDC16,0xDC16,0xDC17,0xDC16,0xDC16,0xDC17,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDBF6,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDC17,0xDBF6,0xDBF6,0xDBD6,0xDBF7,0xDBD6,0xDBD6,0xDBD6,0xDBF6,0xDBF7,0xDBF7,0xDBF7,0xDC18,0xD419,0x9273,0x488D,0x40EF,0x38EF,0x3110,0x3931,0x3951,0x3151,0x3171,0x3151,0x3151,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x3130,0x3150,0x3150,0x3130,0x3130,0x2930,0x3130,0x292F,0x292F,0x290F,0x310F,0x310F,0x28CE,0x30AE,0x30AD,0x308D,0x304B,0x384B,0x406B,0x610E,0x8A53,0xB397,0xCC3A,0xD43A,0xCC19,0xC3B8,0xC397,0xC397,0xC377,0xCB77,0xCB97,0xCB77,0xCB97,0xCB97,0xCB97,0xCB97,0xC397,0xC398,0xC3B8,0xC398,0xC3B8,0xC3B8,0xBB97,0xBB77,0xB377,0xB377,0xB377,0xB397,0xB3D8,0xBBF9,0x9B16,0x69B0,0x388C,0x282B,0x286C,0x30CE,0x28EE,0x28EF,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x290F,0x290F,0x2910,0x210F,0x210F,0x212F,0x2930,0x2110,0x210F,0x2930,0x210F,0x212F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1112,0x1133,0x19D6,0x1A17,0x11D7,0x1195,0x1132,0x1911,0x1910,0x2130,0x2130,0x2930,0x2930,0x210F,0x212F,0x212F,0x292F,0x2930,0x2130,0x2130,0x210F,0x2110,0x2110,0x2930,0x2110,0x210F,0x210F,0x2930,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x2910,0x2910,0x2930,0x2930,0x2110,0x2130,0x210F,0x212F,0x210F,0x290F,0x210F,0x2910,0x2910,0x28CF,0x200D,0x280D,0x280E,0x300E,0x300E,0x300E,0x300E,0x300E,0x300E,0x300E,0x300E,0x300E,0x280E,0x280D,0x280D,0x200D,0x200D,0x180C,0x30CF,0x28CF,0x20AF,0x20CF,0x28CF,0x28D0,0x204E,0x180D,0x200D,0x200D,0x200D,0x280D,0x280E,0x280D,0x280D,0x200D,0x200D,0x284E,0x30D0,0x28D0,0x28D0,0x30B0,0x282E,0x200D,0x280E,0x280E,0x300E,0x300E,0x300E,0x280E,0x280D,0x280D,0x280D,0x284E,0x28CF,0x20EF,0x20EF,0x210F,0x20EF,0x20EF,0x28EF,0x30CF,0x200D,0x280D,0x300E,0x300E,0x300E,0x300E,0x300E,0x280D,0x200D,0x200D,0x28AF,0x28CF,0x2910,0x2930,0x2930,0x2930,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x3110,0x30AF,0x200D,0x280D,0x300E,0x300E,0x300E,0x300E,0x300E,0x280E,0x280D,0x282E,0x30D0,0x28CF,0x290F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2151,0x1931,0x1932,0x1112,0x1195,0x21F7,0x19F7,0x11B7,0x0956,0x0955,0x0955,0x0955,0x0955,0x0955,0x0955,0x0956,0x0996,0x11D7,0x11F7,0x11D7,0x11F7,0x2238,0x2A79,0x2A38,0x2A38,0x2A38,0x2A37,0x2A37,0x2A37,0x2A17,0x2A37,0x2A17,0x2A37,0x2A17,0x2A17,0x3237,0x3238,0x3238,0x3258,0x2A37,0x2A17,0x2A37,0x2A37,0x2A37,0x2A16,0x29F6,0x2A16,0x2A16,0x2A16,0x2A17,0x2A17,0x29F6,0x2A17,0x29F6,0x2175,0x1954,0x1933,0x1912,0x2111,0x2111,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2110,0x2131,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1911,0x1911,0x1111,0x1911,0x1912,0x1111,0x1111,0x1111,0x1111,0x10F1,0x1111,0x1911,0x1111,0x1111,0x1111,0x1111,0x1112,0x1112,0x1112,0x1112,0x1912,0x1912,0x1912,0x1111,0x1111,0x1912,0x1911,0x1911,0x1932,0x1932,0x1131,0x1111,0x1111,0x1912, + 0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2910,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2910,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1930,0x1931,0x1132,0x1954,0x1155,0x1196,0x11B8,0x19F9,0x1A19,0x1A19,0x19F8,0x1196,0x1175,0x1153,0x1932,0x1932,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2930,0x2930,0x212F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1931,0x1931,0x1932,0x1952,0x1932,0x1932,0x1952,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1910,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x2930,0x2930,0x210F,0x2930,0x290F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2110,0x1910,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1910,0x1910,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x210F,0x290F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x2110,0x2910,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2110,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x2930,0x2930,0x2130,0x2131,0x2131,0x1911,0x1112,0x1133,0x1154,0x1195,0x19F7,0x1A17,0x2217,0x19B6,0x1174,0x1153,0x1132,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x292F,0x292F,0x290F,0x210F,0x290F,0x290F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2910,0x210F,0x2910,0x290F,0x210F,0x290F,0x2930,0x290F,0x2930,0x290F,0x2930,0x2910,0x2910,0x2930,0x212F,0x2930,0x210F,0x210F,0x2930,0x2910,0x2910,0x290F,0x290F,0x210F,0x2930,0x2910,0x210F,0x2930,0x210F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x2930,0x210F,0x212F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2930,0x292F,0x212F,0x210F,0x212F,0x292F,0x212F,0x210F,0x212F,0x292F,0x212F,0x2930,0x2930,0x290F,0x2110,0x2110,0x20F0,0x20D0,0x28D0,0x2090,0x5A17,0x8B3C,0x8AFB,0x931C,0x931C,0x92FB,0x92FC,0x92FC,0x92DC,0x92FC,0x92DC,0x8A9C,0x8A7B,0x92DC,0x92DC,0x92DC,0x92FC,0x82FB,0x200E,0x184F,0x28F0,0x2910,0x2110,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2910,0x210F,0x2910,0x2930,0x2930,0x210F,0x290F,0x210F,0x2910,0x2910,0x210F,0x290F,0x210F,0x2910,0x210F,0x2910,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x1911,0x1111,0x1112,0x1974,0x1995,0x19D6,0x21F7,0x21F7,0x1996,0x1974,0x1953,0x1932,0x1911,0x1910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1912,0x1112,0x1154,0x1995,0x2217,0x2217,0x19D6,0x1174,0x1953,0x1932,0x2131,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x210F,0x212F,0x212F,0x212F,0x2110,0x210F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x290F,0x2930,0x290F,0x210F,0x210F,0x212F,0x292F,0x210F,0x290F,0x290F,0x292F,0x292F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2110,0x2111,0x2111,0x1912,0x1133,0x1975,0x19D7,0x19F8,0x19F8,0x11D7,0x0976,0x0976,0x0976,0x0997,0x11B8,0x19F9,0x2219,0x21D7,0x21B6,0x2975,0x3173,0x3173,0x3972,0x3972,0x3972,0x4172,0x4172,0x4172,0x4192,0x4192,0x4992,0x4971,0x5171,0x48EE,0xA356,0xDCDB,0xD479,0xDC78,0xDC58,0xDC37,0xDC37,0xDC37,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC16,0xDC37,0xDC37,0xDC16,0xDC37,0xDC16,0xDC17,0xDC17,0xDC16,0xDC16,0xDC16,0xDC36,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDBF6,0xDC16,0xDBF6,0xDC17,0xDC16,0xDBF6,0xDBF6,0xDC16,0xDBF6,0xDBF6,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBF7,0xDBD7,0xDBD7,0xDC18,0xD418,0xCBF9,0x79D1,0x40AD,0x410F,0x38F0,0x3910,0x3951,0x3971,0x3171,0x3151,0x3171,0x3171,0x3151,0x3171,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x3150,0x3130,0x3130,0x3130,0x3150,0x310F,0x312F,0x310F,0x30EE,0x30EE,0x38EE,0x38CD,0x388C,0x302B,0x384B,0x6990,0xA2F5,0xC3D9,0xCBF9,0xD3F9,0xCBB8,0xD3B8,0xCB97,0xCB97,0xCB97,0xCB97,0xCB77,0xCB56,0xCB77,0xD377,0xCB77,0xCB97,0xCB97,0xCB97,0xC377,0xC377,0xC397,0xC397,0xC397,0xC397,0xBB97,0xBBB7,0xBB97,0xBB97,0xBB97,0xB397,0xB377,0xB397,0xAB97,0xAB97,0xB3D9,0xA398,0x7A94,0x38AD,0x180B,0x208C,0x28CE,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x210F,0x2930,0x290F,0x2910,0x2910,0x2930,0x2930,0x2130,0x2110,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1132,0x0933,0x19D6,0x11F7,0x11D7,0x1195,0x1132,0x1911,0x2131,0x2130,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x292F,0x2930,0x212F,0x2130,0x210F,0x2130,0x2130,0x2930,0x2110,0x2110,0x212F,0x212F,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x210F,0x2910,0x2930,0x2930,0x2930,0x2130,0x212F,0x2130,0x210F,0x2930,0x210F,0x290F,0x290F,0x2910,0x28AE,0x206E,0x204D,0x202D,0x202D,0x202D,0x202D,0x200D,0x180D,0x180D,0x202D,0x202D,0x204D,0x204E,0x206E,0x204D,0x186D,0x208E,0x20AF,0x20CF,0x20CF,0x20CF,0x20EF,0x20F0,0x20CF,0x20AF,0x208F,0x208E,0x206E,0x206E,0x206E,0x206E,0x206E,0x206E,0x208E,0x28AF,0x28CF,0x28F0,0x28CF,0x28F0,0x28CF,0x288F,0x286E,0x286E,0x284E,0x204E,0x284E,0x204E,0x206E,0x206E,0x206E,0x208E,0x20CF,0x20EF,0x20EF,0x210F,0x210F,0x210F,0x20EF,0x28EF,0x28AF,0x286E,0x286E,0x284E,0x284E,0x284E,0x286E,0x286E,0x288E,0x28AF,0x28CF,0x290F,0x210F,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x28EF,0x28EF,0x28AF,0x286E,0x284E,0x286E,0x284E,0x286E,0x286E,0x286E,0x286E,0x288E,0x28CF,0x290F,0x210F,0x210F,0x210F,0x210E,0x212F,0x2950,0x2130,0x1911,0x1931,0x1132,0x1174,0x21F7,0x19F7,0x19F7,0x0976,0x0976,0x0955,0x0955,0x0955,0x0955,0x0976,0x0976,0x0996,0x11D7,0x19F7,0x11D6,0x11B6,0x11B6,0x19B6,0x19B6,0x19B6,0x1995,0x19B5,0x19B5,0x1995,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x1995,0x2195,0x2195,0x21B5,0x21B5,0x21B5,0x21B5,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1974,0x1974,0x1974,0x1954,0x1953,0x1912,0x1912,0x1911,0x2131,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1911,0x1911,0x1932,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1112,0x1132,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1153,0x1133,0x1133, + 0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2930,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2131,0x1931,0x2152,0x1933,0x1133,0x1155,0x1197,0x19D8,0x19F9,0x1A19,0x19F8,0x19F8,0x1196,0x1155,0x1153,0x1932,0x2152,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x292F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2131,0x1910,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1910,0x2151,0x2131,0x2110,0x2110,0x2110,0x2910,0x20F0,0x20F0,0x2110,0x2930,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x2930,0x212F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2930,0x210F,0x2110,0x210F,0x210F,0x212F,0x2930,0x290F,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x1910,0x1910,0x1910,0x1930,0x2151,0x2130,0x2110,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x210F,0x2110,0x2110,0x2130,0x2110,0x2130,0x2930,0x2930,0x2930,0x2130,0x210F,0x2130,0x2110,0x2130,0x210F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2130,0x2151,0x2152,0x1932,0x1112,0x1132,0x1153,0x11B5,0x19F7,0x2217,0x2217,0x1195,0x1174,0x1133,0x1132,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x290F,0x292F,0x290F,0x290F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x290F,0x210F,0x290F,0x210F,0x210F,0x2110,0x212F,0x212F,0x210F,0x2910,0x2910,0x2930,0x2910,0x2930,0x290F,0x210F,0x2930,0x210F,0x2930,0x290F,0x210F,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x290F,0x2910,0x2110,0x2110,0x2930,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x28F0,0x20D0,0x2890,0x6237,0x8B3C,0x8B1C,0x931C,0x92FC,0x92FC,0x92DC,0x92DC,0x92BC,0x9ADC,0x929C,0x9ABC,0x9ADD,0x9ADD,0x92DC,0x92FC,0x8AFB,0x180E,0x208F,0x28F0,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x2910,0x290F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x292F,0x290F,0x292F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2111,0x1911,0x1912,0x1112,0x1953,0x1995,0x1995,0x2218,0x2217,0x1996,0x1154,0x1112,0x1912,0x1911,0x1910,0x2151,0x2150,0x2130,0x210F,0x2130,0x2150,0x2130,0x2130,0x2151,0x1931,0x1132,0x1133,0x0954,0x11B5,0x2217,0x2217,0x19B5,0x1153,0x1932,0x1931,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x292F,0x212F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x290F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2110,0x2110,0x2131,0x2132,0x1933,0x1954,0x21D7,0x2218,0x1A18,0x19F7,0x1196,0x11B7,0x1A18,0x2239,0x2239,0x2219,0x2218,0x21D7,0x2195,0x2974,0x2952,0x3152,0x3972,0x3972,0x4172,0x4192,0x4192,0x4192,0x4192,0x4992,0x4992,0x4971,0x5171,0x490E,0xA357,0xE4FC,0xDC79,0xDC58,0xDC58,0xDC57,0xDC57,0xDC37,0xDC57,0xDC36,0xDC36,0xDC37,0xDC37,0xDC16,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC17,0xDC16,0xDC17,0xDC17,0xDBF6,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDBF6,0xDBF6,0xDC16,0xDBF6,0xDBF6,0xD3F6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF7,0xDBF6,0xDBD7,0xDBF7,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBD6,0xDBD6,0xDBD7,0xDBF8,0xDC18,0xD419,0xD45A,0x58EE,0x48EF,0x4930,0x3930,0x3951,0x3951,0x3971,0x3951,0x3150,0x3150,0x3151,0x3171,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x3130,0x3130,0x3130,0x3150,0x3130,0x312F,0x310F,0x310F,0x30EE,0x30EE,0x38EE,0x38AD,0x386C,0x408C,0x696F,0x9AF4,0xD47A,0xDC7B,0xCBF8,0xC377,0xCB77,0xCB77,0xD397,0xD397,0xD377,0xD377,0xD356,0xD356,0xD377,0xD377,0xCB56,0xD377,0xCB76,0xCB76,0xCB76,0xC376,0xC397,0xC377,0xBB76,0xBB97,0xBB97,0xB397,0xB3B7,0xB397,0xB3B8,0xB3B8,0xB3B8,0xB3B8,0xABD8,0xABB8,0xABB8,0x9B77,0x9337,0x8B36,0x9378,0x9BD9,0x72B5,0x390E,0x208D,0x20AE,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x2930,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x2130,0x2130,0x212F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1932,0x1153,0x19F6,0x19F7,0x11D7,0x1195,0x1133,0x1911,0x2131,0x2131,0x2930,0x2110,0x210F,0x210F,0x210F,0x292F,0x2930,0x2130,0x2130,0x210F,0x210F,0x2130,0x2930,0x2930,0x2930,0x210F,0x2930,0x290F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x210F,0x2930,0x2930,0x212F,0x2130,0x212F,0x210F,0x290F,0x2930,0x2930,0x290F,0x2910,0x28EF,0x28EF,0x28EF,0x28EF,0x28CF,0x28AE,0x28AF,0x28CF,0x28CF,0x28CF,0x28CF,0x28CF,0x20CF,0x20CF,0x28CF,0x28EF,0x20CF,0x20CF,0x20EF,0x20EF,0x20EF,0x210F,0x2110,0x2930,0x20EF,0x28F0,0x28F0,0x20EF,0x28EF,0x28EF,0x28EF,0x28EF,0x28EF,0x2910,0x28EF,0x20EF,0x28EF,0x2910,0x2910,0x2910,0x2910,0x2910,0x28CF,0x28AF,0x28CF,0x28CF,0x28CF,0x28AF,0x28EF,0x28F0,0x20CF,0x20CF,0x290F,0x210F,0x212F,0x210F,0x210F,0x292F,0x290F,0x2930,0x28EF,0x28EF,0x28EF,0x28CF,0x28CF,0x28CF,0x28EF,0x28EF,0x28EF,0x28EF,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x210F,0x290F,0x290F,0x3110,0x30F0,0x30F0,0x28AF,0x28CF,0x28CF,0x28CF,0x28CF,0x28EF,0x28CF,0x2910,0x2930,0x210F,0x210F,0x210E,0x210F,0x212F,0x210F,0x2110,0x1930,0x1931,0x1132,0x1133,0x19B5,0x21F7,0x19F7,0x1196,0x1176,0x0976,0x1196,0x0955,0x0975,0x0996,0x11B7,0x11F7,0x1A18,0x19F7,0x0995,0x0913,0x0913,0x0933,0x0933,0x0913,0x1113,0x0912,0x0912,0x1112,0x1132,0x1112,0x1112,0x1132,0x1133,0x1132,0x1112,0x1113,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1112,0x1112,0x1932,0x1112,0x1112,0x10F2,0x18F2,0x1911,0x1911,0x2111,0x2110,0x2110,0x2110,0x210F,0x292F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2150,0x2130,0x2130,0x2131,0x2131,0x1931,0x1912,0x1932,0x1933,0x1153,0x1954,0x1974,0x1974,0x1974,0x1994,0x1974,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x21B5,0x21B4,0x21B5,0x21B5,0x21D5,0x21B5,0x21D5,0x21D5,0x21D5,0x21D5,0x21D5,0x21D5,0x21D5,0x21B5,0x21D5,0x21D5,0x21D5,0x21D5,0x21F6,0x29F5,0x29F5,0x21F5,0x21D5,0x21D5,0x21D5,0x21D5, + 0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x210F,0x290F,0x212F,0x2930,0x212F,0x210F,0x2930,0x290F,0x210F,0x2930,0x2930,0x290F,0x290F,0x2930,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x290F,0x290F,0x2910,0x292F,0x292F,0x290F,0x290F,0x210F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x294F,0x212F,0x212F,0x2130,0x2130,0x2131,0x2131,0x1932,0x1933,0x1154,0x1155,0x1197,0x11D8,0x11F8,0x1A19,0x19F8,0x19D8,0x1196,0x1154,0x1133,0x1932,0x2132,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2110,0x2130,0x2130,0x1910,0x2130,0x1910,0x1910,0x1931,0x1931,0x1910,0x2111,0x1910,0x1930,0x1910,0x2131,0x2130,0x2110,0x2110,0x2930,0x2910,0x2110,0x2910,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x2110,0x210F,0x212F,0x210F,0x290F,0x2930,0x2930,0x2110,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x2110,0x2910,0x2930,0x2930,0x2110,0x2110,0x2910,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2130,0x2110,0x210F,0x2130,0x2930,0x2930,0x2930,0x2930,0x2130,0x2110,0x2110,0x2130,0x210F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2151,0x2131,0x1931,0x1132,0x1133,0x1154,0x1195,0x19D6,0x2238,0x21F7,0x1195,0x1174,0x1132,0x1132,0x1932,0x1931,0x2130,0x2130,0x2110,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2930,0x210F,0x212F,0x210F,0x2110,0x2910,0x2930,0x2930,0x2930,0x290F,0x212F,0x212F,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x2910,0x290F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2910,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x290F,0x290F,0x212F,0x212F,0x210F,0x292F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2910,0x210F,0x2110,0x20F0,0x28F0,0x28B0,0x2070,0x59D6,0x8B3C,0x931C,0x931C,0x92FC,0x9AFC,0x9ADC,0x9ABC,0x9ADC,0x9ABC,0x9ABC,0x9A9C,0xA2FD,0x9ADD,0x9AFC,0x82DA,0x180E,0x208F,0x20EF,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x210F,0x290F,0x210F,0x2910,0x210F,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x210F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1912,0x1132,0x1953,0x1995,0x19B6,0x21F7,0x2217,0x19B6,0x1974,0x1133,0x1932,0x1931,0x1931,0x2110,0x2130,0x2150,0x2130,0x2110,0x2130,0x2130,0x2130,0x2151,0x1931,0x1132,0x1133,0x1133,0x1175,0x21F7,0x2217,0x21F6,0x1994,0x1152,0x1931,0x1931,0x2131,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x212F,0x210F,0x212F,0x290F,0x290F,0x292F,0x292F,0x2930,0x2930,0x290F,0x2930,0x290F,0x2930,0x210F,0x2930,0x290F,0x292F,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x212F,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x2130,0x2131,0x2131,0x2132,0x1932,0x1953,0x1975,0x21F7,0x21F7,0x19F7,0x19F7,0x1A18,0x2239,0x2239,0x2239,0x21F8,0x21D7,0x21B6,0x2995,0x2974,0x3173,0x3972,0x3972,0x4172,0x4172,0x4192,0x4192,0x4192,0x4992,0x4192,0x4992,0x4992,0x5191,0x48EE,0xA356,0xE4FC,0xDC79,0xDC58,0xDC57,0xDC57,0xDC37,0xDC36,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC16,0xDC37,0xDC17,0xDC16,0xDC17,0xDC16,0xDC17,0xDBF6,0xDC16,0xDC16,0xDBF6,0xDC16,0xDC16,0xDC16,0xDC16,0xDC17,0xDC16,0xDC16,0xDC17,0xDBF6,0xDBF6,0xDBF6,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF7,0xDBF6,0xDBD6,0xDBF6,0xDBF6,0xDBD7,0xDBD6,0xDBB6,0xDBD6,0xDBB6,0xDBB6,0xDBD6,0xDBD7,0xDBF7,0xDBF7,0xDBF8,0xD3F8,0xD43A,0xB357,0x592F,0x490F,0x4130,0x4130,0x3930,0x3951,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3171,0x3151,0x3150,0x3130,0x3150,0x3150,0x3130,0x312F,0x312F,0x310F,0x38EE,0x38EE,0x40CE,0x386C,0x48CD,0x8A94,0xCC39,0xD439,0xD419,0xD3D8,0xD3B7,0xCB96,0xCB76,0xD376,0xD376,0xD377,0xD356,0xD356,0xD376,0xD356,0xD356,0xCB56,0xD376,0xCB76,0xCB76,0xC335,0xCB96,0xC376,0xC397,0xBB97,0xBB97,0xB397,0xAB97,0xAB97,0xABB7,0xA3D8,0xA3D8,0xA3F8,0xA419,0xA419,0xA3F9,0xA3F9,0xA3F9,0x9BD9,0x9BD9,0x93B9,0x93B8,0x8BB8,0x8378,0x8B98,0x8BB9,0x6AD5,0x20AD,0x20AD,0x28EF,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x2930,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x2930,0x212F,0x2930,0x2930,0x2930,0x290F,0x292F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1133,0x19D6,0x1A17,0x11D7,0x11B6,0x1133,0x1911,0x2131,0x2130,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x210F,0x2930,0x290F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x292F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x290F,0x28EF,0x2910,0x2910,0x2910,0x20EF,0x2910,0x2910,0x2910,0x28EF,0x2930,0x2910,0x2910,0x20EF,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x20EF,0x290F,0x210F,0x20EF,0x20EF,0x2930,0x2910,0x290F,0x20EF,0x210F,0x210F,0x2910,0x2930,0x2930,0x290F,0x28EF,0x28EF,0x20EF,0x28EF,0x28EF,0x28EF,0x2910,0x290F,0x20EF,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x28EF,0x28EF,0x28EF,0x28EF,0x290F,0x28EF,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2950,0x212F,0x210F,0x210F,0x212F,0x210F,0x290F,0x210F,0x212F,0x210F,0x290F,0x20EF,0x2910,0x28F0,0x2910,0x28EF,0x28EF,0x28EF,0x290F,0x28EF,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2110,0x1930,0x1931,0x1952,0x1132,0x1153,0x19D6,0x21F7,0x19D7,0x19D7,0x11B6,0x11B6,0x1196,0x11B6,0x19D7,0x19F7,0x19F7,0x11D6,0x1194,0x0953,0x1133,0x1133,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1112,0x1112,0x1132,0x1112,0x1132,0x1932,0x1932,0x1932,0x1112,0x1111,0x1912,0x1911,0x1911,0x1911,0x1932,0x1931,0x1932,0x1931,0x1932,0x1911,0x2132,0x1911,0x1911,0x1911,0x1911,0x2131,0x2130,0x2110,0x210F,0x212F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2150,0x2130,0x2130,0x2131,0x1931,0x1932,0x1932,0x1953,0x2195,0x21D6,0x29F7,0x2A38,0x2A17,0x3238,0x2A37,0x3237,0x3258,0x3258,0x3258,0x3278,0x3258,0x3258,0x3278,0x3278,0x3257,0x3278,0x3257,0x3257,0x3257,0x3257,0x3237,0x3258,0x3257,0x3237,0x2A37,0x3237,0x3237,0x2A37,0x2A37,0x2A37,0x2A17,0x2A37,0x2A16,0x2A37,0x2A16,0x2A16,0x2A16,0x2A16,0x29F6, + 0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2910,0x2910,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x2930,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2130,0x2131,0x2131,0x1932,0x1933,0x1134,0x1155,0x0996,0x11D8,0x1A19,0x1A19,0x11F8,0x11D7,0x1196,0x1154,0x1112,0x1932,0x1911,0x2131,0x2130,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x210F,0x2130,0x2930,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x1910,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x2930,0x2110,0x2130,0x210F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x210F,0x212F,0x2130,0x2110,0x2910,0x2910,0x2930,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2110,0x2130,0x2131,0x1931,0x1132,0x1132,0x1154,0x1175,0x19D6,0x2218,0x21F7,0x19D6,0x1174,0x0912,0x1112,0x1931,0x1931,0x2151,0x2130,0x212F,0x212F,0x292F,0x2930,0x292F,0x290F,0x290F,0x290F,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x210F,0x212F,0x210F,0x212F,0x2930,0x2930,0x290F,0x210F,0x2930,0x2930,0x2110,0x2110,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2110,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x210F,0x2910,0x290F,0x210F,0x290F,0x290F,0x212F,0x212F,0x210F,0x290F,0x2930,0x2910,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x290F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x2110,0x2910,0x20D0,0x20B0,0x204F,0x59D5,0x933C,0x931C,0x9AFC,0x9AFC,0x9ADC,0x9ABC,0xA2DD,0xA2BD,0x9A9C,0x9A9C,0xA2BD,0xA2DD,0x9B1D,0x8ADA,0x180D,0x208F,0x20EF,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2930,0x292F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2910,0x2930,0x2110,0x2110,0x2910,0x210F,0x2910,0x2910,0x290F,0x290F,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2110,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x212F,0x292F,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1912,0x1112,0x1133,0x1995,0x19D6,0x21F7,0x21F7,0x1995,0x1154,0x1953,0x1132,0x1952,0x1931,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2151,0x2131,0x2131,0x1931,0x1932,0x1133,0x1133,0x1995,0x21F7,0x2217,0x21D6,0x19B5,0x1153,0x1132,0x1910,0x1931,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2910,0x290F,0x210F,0x210F,0x2910,0x2930,0x2110,0x2110,0x2110,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x3130,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2931,0x2131,0x2152,0x2132,0x1953,0x1974,0x1995,0x21F6,0x2217,0x21F7,0x19F7,0x21F7,0x21D7,0x21B6,0x2195,0x2195,0x2995,0x3173,0x3173,0x3972,0x4172,0x4172,0x4192,0x4192,0x4192,0x4192,0x49B2,0x4992,0x49B2,0x4992,0x5191,0x512F,0x92D5,0xDCDC,0xDC99,0xDC78,0xDC78,0xDC57,0xDC37,0xDC36,0xDC36,0xDC37,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC16,0xDC37,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC16,0xDC17,0xDC17,0xDC17,0xDC16,0xDC16,0xDC16,0xDBF6,0xDC16,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBD7,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBD7,0xDBD7,0xDBF8,0xD3F8,0xE4BB,0xA316,0x510F,0x4930,0x4130,0x3930,0x3951,0x3971,0x3971,0x3991,0x3971,0x3971,0x3171,0x3971,0x3951,0x3151,0x3151,0x3151,0x3151,0x3150,0x3150,0x3130,0x3130,0x312F,0x390F,0x38EE,0x40CD,0x48AD,0x612F,0xA2F5,0xDC5A,0xD419,0xCB97,0xCB97,0xCB97,0xCB76,0xD396,0xD376,0xD396,0xD376,0xCB56,0xD356,0xD356,0xD356,0xD356,0xD356,0xCB56,0xCB76,0xC355,0xCB76,0xCB96,0xC396,0xBB96,0xBB96,0xB376,0xAB76,0xABB7,0xA3B7,0x9BB7,0x9BF8,0x93F8,0x9418,0x9419,0x9419,0x9419,0x8C19,0x9439,0x945A,0x943A,0x945A,0x9C7B,0x947B,0x945B,0x945A,0x945B,0x941A,0x8BD9,0x8BD9,0x7B78,0x41B1,0x20CE,0x20EE,0x28EF,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x212F,0x2930,0x292F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x11D6,0x11F7,0x11D7,0x1195,0x1133,0x1911,0x2131,0x2110,0x2130,0x2930,0x212F,0x2930,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2110,0x2930,0x290F,0x210F,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x2930,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x292F,0x290F,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x210F,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2910,0x20EF,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x20EF,0x290F,0x28EF,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x292F,0x212F,0x210F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x28EF,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x290F,0x210F,0x2930,0x210F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1931,0x1952,0x1132,0x1994,0x19D6,0x19D7,0x19D7,0x19F7,0x19F7,0x19F7,0x19F7,0x19D7,0x19D6,0x19B6,0x1154,0x1153,0x1152,0x1152,0x1132,0x1132,0x1952,0x1952,0x1931,0x1931,0x1931,0x1131,0x1111,0x1911,0x1911,0x1932,0x1931,0x1952,0x1932,0x1932,0x1931,0x1931,0x1911,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2111,0x2131,0x2130,0x2110,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2150,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1953,0x1994,0x29F6,0x2A17,0x2A17,0x2A17,0x29F7,0x2A17,0x2A17,0x2A17,0x29F7,0x29F6,0x29F6,0x2A16,0x29F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21F6,0x29F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21D6,0x21F5,0x21F5,0x21B5,0x21B5,0x21D5,0x21D5,0x21B5,0x21B5, + 0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x290F,0x292F,0x292F,0x2910,0x2910,0x2110,0x2930,0x2930,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2131,0x2131,0x1932,0x1133,0x1154,0x0975,0x11B7,0x11F8,0x1A19,0x1A19,0x11F8,0x11D7,0x1196,0x1154,0x1133,0x1932,0x2131,0x2131,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x2910,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2930,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2110,0x2130,0x2110,0x2130,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2930,0x210F,0x212F,0x210F,0x210F,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x2930,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x1931,0x1931,0x1132,0x1153,0x1174,0x1175,0x19D6,0x2218,0x21F7,0x19D6,0x1174,0x1112,0x1112,0x1931,0x2151,0x2130,0x2130,0x2130,0x2930,0x2930,0x212F,0x210F,0x2930,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x290F,0x290F,0x212F,0x212F,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x2930,0x2910,0x210F,0x290F,0x2930,0x210F,0x212F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x210F,0x212F,0x2930,0x210F,0x2930,0x2930,0x210F,0x20EF,0x20F0,0x20D0,0x28B0,0x286F,0x5194,0x935C,0x931C,0x9AFC,0x9ADC,0xA2FD,0x9ABC,0x9A9D,0x9A9D,0x9A7C,0xA2BD,0xA2DD,0xA31D,0x829A,0x180D,0x208F,0x20EF,0x210F,0x2930,0x212F,0x2130,0x2130,0x210F,0x210F,0x2930,0x2930,0x292F,0x292F,0x290F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2910,0x210F,0x2110,0x290F,0x210F,0x210F,0x2910,0x210F,0x210F,0x2910,0x2910,0x290F,0x210F,0x2930,0x210F,0x210F,0x2930,0x2910,0x2930,0x2910,0x2930,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1911,0x1111,0x1112,0x1133,0x1975,0x21D6,0x21F7,0x21F7,0x19B6,0x1154,0x1133,0x1132,0x1931,0x1951,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x1911,0x1932,0x1113,0x1133,0x1175,0x21F7,0x2218,0x21F7,0x19B5,0x1974,0x1152,0x1131,0x1930,0x1930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x210F,0x2930,0x2910,0x2930,0x2110,0x2110,0x2930,0x2110,0x290F,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x212F,0x2930,0x212F,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x2930,0x2930,0x2130,0x2931,0x2131,0x2131,0x2132,0x2132,0x2132,0x1953,0x21B4,0x21D5,0x19B5,0x19B5,0x21B5,0x2195,0x2195,0x2194,0x2994,0x2973,0x3173,0x3973,0x3972,0x4172,0x4992,0x4992,0x4993,0x4992,0x4192,0x49B2,0x49B3,0x4992,0x51B2,0x51B1,0x5150,0x8A94,0xE4FC,0xDC9A,0xDC78,0xDC58,0xDC57,0xDC36,0xDC36,0xDC36,0xDC37,0xDC37,0xDC57,0xD417,0xD417,0xDC37,0xDC37,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC16,0xDC17,0xDC16,0xDBF6,0xDC16,0xDC17,0xDC16,0xDBF6,0xDC16,0xDBF6,0xDC17,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF7,0xDBF6,0xD3D6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBB6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBD7,0xDBF8,0xDBF8,0xD419,0xE4DC,0x71B1,0x510F,0x4930,0x4150,0x4151,0x3951,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3131,0x3951,0x3951,0x3950,0x3950,0x3930,0x392F,0x390F,0x390F,0x40EE,0x386C,0x6970,0xB377,0xD43A,0xDBF9,0xD3B8,0xD377,0xD376,0xD376,0xD376,0xD376,0xD356,0xD356,0xD376,0xD376,0xD356,0xD356,0xCB56,0xCB56,0xCB76,0xCB76,0xCB76,0xC376,0xBB76,0xC3B7,0xB396,0xAB96,0xAB96,0x9B55,0x9B76,0x9BB7,0x93B7,0x9C18,0x9C59,0x9C9A,0x9CBB,0x94BB,0x9CFC,0x9CFD,0x9D1D,0x9D3D,0x94FD,0x94DC,0x9D1D,0x9D1D,0x9CFD,0x9CFD,0x9CFD,0x9CFD,0x9C9C,0x947C,0x947B,0x8BFA,0x8BF9,0x8BFA,0x5253,0x20CE,0x20EF,0x20EF,0x290F,0x292F,0x2910,0x290F,0x210F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x2110,0x212F,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x290F,0x292F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1133,0x11B6,0x19F7,0x11D7,0x11B6,0x1133,0x1911,0x2131,0x2110,0x2130,0x2930,0x2930,0x2930,0x210F,0x212F,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x210F,0x2930,0x212F,0x210F,0x210F,0x2910,0x210F,0x2930,0x2910,0x210F,0x2930,0x2930,0x290F,0x292F,0x292F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x2930,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2930,0x210F,0x2930,0x2110,0x2910,0x2110,0x2930,0x2110,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x290F,0x2910,0x2910,0x20EF,0x210F,0x290F,0x2930,0x2130,0x212F,0x212F,0x2950,0x212F,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x210F,0x210F,0x292F,0x212F,0x212F,0x210F,0x210F,0x20EF,0x2930,0x210F,0x210F,0x292F,0x292F,0x292F,0x290F,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x210F,0x2130,0x2130,0x1931,0x1951,0x1951,0x1132,0x1132,0x1153,0x1995,0x19D6,0x19B6,0x19B6,0x19B6,0x19B5,0x1995,0x1174,0x1154,0x1133,0x1132,0x1131,0x1931,0x1931,0x1931,0x1931,0x1951,0x1951,0x1951,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x2150,0x2130,0x2130,0x1930,0x2131,0x1931,0x1931,0x1932,0x1953,0x1995,0x21F6,0x2A17,0x21F7,0x21D6,0x21B6,0x1995,0x1995,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1174,0x1174,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1994,0x1994,0x1994,0x1994,0x1994,0x1974,0x1994,0x1994,0x1974,0x1994,0x1974,0x1994,0x1974,0x1974, + 0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x212F,0x2930,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x290F,0x210F,0x210F,0x292F,0x292F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x2910,0x2930,0x2930,0x2110,0x2930,0x292F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2130,0x2131,0x1911,0x1912,0x1133,0x1174,0x1195,0x11B7,0x11D8,0x1219,0x1A19,0x11F8,0x19D7,0x1196,0x1154,0x1933,0x1912,0x1931,0x2130,0x2130,0x2110,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x2910,0x2110,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x290F,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x210F,0x2910,0x2930,0x290F,0x210F,0x2910,0x2910,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x210F,0x2910,0x2110,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2930,0x2930,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2110,0x2910,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x210F,0x212F,0x2930,0x212F,0x2110,0x2930,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x292F,0x2930,0x210F,0x290F,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1951,0x1952,0x1153,0x1154,0x1175,0x19B6,0x21F7,0x2217,0x19D6,0x1154,0x1112,0x1112,0x1931,0x2151,0x2951,0x2930,0x210F,0x210F,0x2130,0x2130,0x210F,0x2110,0x212F,0x2130,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x212F,0x212F,0x290F,0x2930,0x210F,0x290F,0x2910,0x2910,0x2110,0x2110,0x2930,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x2110,0x2110,0x2130,0x2930,0x290F,0x210F,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2110,0x2930,0x2110,0x2110,0x28F0,0x20CF,0x28B0,0x286F,0x5174,0x933B,0x9B1C,0xA31C,0xA2FD,0x9ABC,0xA29C,0xA29D,0xA29D,0xAADD,0xAADD,0xA2FC,0x8ADA,0x180D,0x20AF,0x28EF,0x210F,0x212F,0x212F,0x2130,0x2130,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x292F,0x292F,0x210F,0x212F,0x212F,0x290F,0x2930,0x290F,0x210F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x2910,0x290F,0x290F,0x210F,0x2110,0x2930,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1911,0x1112,0x1153,0x19B5,0x2A37,0x21F7,0x19D6,0x21D6,0x1974,0x1113,0x1112,0x1931,0x1931,0x2150,0x2130,0x212F,0x210F,0x2130,0x2130,0x2110,0x2131,0x2131,0x2132,0x1912,0x1113,0x1134,0x1976,0x21D7,0x2218,0x21F7,0x19B6,0x1994,0x1953,0x1932,0x1931,0x1930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x2930,0x212F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x210F,0x2930,0x290F,0x210F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2130,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2130,0x2130,0x2930,0x2951,0x2931,0x2931,0x2952,0x2152,0x2152,0x2173,0x2194,0x21B4,0x21B4,0x2194,0x2174,0x2174,0x2994,0x2973,0x2973,0x3173,0x3972,0x3972,0x4172,0x4172,0x4992,0x4992,0x4993,0x49B3,0x49B3,0x49B2,0x49B2,0x51B2,0x51B1,0x492F,0x7212,0xDCFC,0xD499,0xD458,0xDC58,0xDC57,0xDC57,0xDC37,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC17,0xD416,0xDC16,0xDC17,0xDC17,0xE417,0xDC17,0xDBF7,0xDBF6,0xDC17,0xDC16,0xDC17,0xDC17,0xDC37,0xDC16,0xDC16,0xDC17,0xDC16,0xDBF6,0xDBF7,0xDBF6,0xDBF7,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBD7,0xDBD7,0xD3D7,0xD3D8,0xCBD8,0xB357,0x488D,0x4930,0x4150,0x4150,0x4171,0x3971,0x3971,0x3971,0x3971,0x3991,0x3971,0x3971,0x3971,0x3951,0x3951,0x3950,0x3930,0x392F,0x390F,0x40CE,0x40AD,0x6990,0xBBB8,0xE4BC,0xD3F9,0xCB77,0xD377,0xD377,0xD376,0xD377,0xD356,0xD356,0xD356,0xD356,0xD376,0xD356,0xD356,0xCB56,0xCB56,0xCB76,0xCB76,0xC396,0xC3B6,0xBBB6,0xBBB6,0xABB6,0xA396,0x9BB7,0x9BD7,0x93F7,0x9438,0x9438,0x9479,0x9CBA,0x9CFB,0xAD7D,0xB5DF,0xB5FF,0xB5FF,0x953D,0x953E,0x953E,0x84DC,0x8CFD,0x8D3E,0x84FD,0x84DD,0x8CBD,0x8CBD,0x8CBD,0x8CBD,0x9CDD,0x9CDD,0x9C9C,0x9C7C,0x943B,0x945B,0x83B9,0x41D2,0x290F,0x20EF,0x210F,0x210F,0x2930,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x11D6,0x19F7,0x19F7,0x11B6,0x1133,0x1911,0x1911,0x2110,0x2130,0x2930,0x2930,0x2930,0x210F,0x210F,0x2910,0x2910,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x212F,0x2930,0x212F,0x2110,0x210F,0x210F,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x212F,0x212F,0x292F,0x292F,0x290F,0x292F,0x2930,0x2930,0x2930,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x2130,0x210F,0x2930,0x2930,0x292F,0x212F,0x210F,0x2930,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x20EF,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x2930,0x290F,0x212F,0x292F,0x210F,0x212F,0x210F,0x2130,0x212F,0x2130,0x212F,0x2130,0x212F,0x2930,0x2930,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x210F,0x290F,0x290F,0x2930,0x210F,0x292F,0x212F,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1951,0x1931,0x1111,0x1132,0x1973,0x1994,0x1974,0x1174,0x1154,0x1174,0x1994,0x1153,0x1132,0x1111,0x1931,0x1931,0x1951,0x1930,0x1930,0x1930,0x2131,0x2151,0x2130,0x2130,0x2130,0x1930,0x1930,0x1930,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x210F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1931,0x1131,0x1132,0x1153,0x1995,0x21F6,0x21F7,0x21D6,0x21B6,0x1974,0x1154,0x1133,0x1133,0x1133,0x1133,0x1132,0x1112,0x1132,0x1132,0x1132,0x1933,0x1132,0x1132,0x1112,0x1132,0x1933,0x1112,0x1932,0x1933,0x1132,0x1132,0x1132,0x1112,0x1132,0x1953,0x1132,0x1933,0x1132,0x1132,0x1132,0x1953,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1953, + 0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x292F,0x290F,0x210F,0x292F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x2930,0x290F,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x292F,0x290F,0x2930,0x210F,0x210F,0x2130,0x210F,0x290F,0x292F,0x2930,0x2930,0x2130,0x2111,0x1931,0x1932,0x1153,0x1174,0x1175,0x11B6,0x11F8,0x1218,0x1A19,0x1A18,0x19D7,0x19B6,0x1154,0x1133,0x1912,0x1911,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2930,0x212F,0x212F,0x2110,0x210F,0x212F,0x2930,0x210F,0x2110,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x210F,0x210F,0x212F,0x210F,0x212F,0x290F,0x290F,0x2930,0x210F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2910,0x2910,0x2930,0x2910,0x210F,0x210F,0x210F,0x290F,0x292F,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x2110,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x210F,0x2910,0x2910,0x2930,0x2910,0x2910,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x2930,0x212F,0x2930,0x2130,0x2130,0x2110,0x2930,0x2130,0x2130,0x2110,0x2110,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x290F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x212F,0x2930,0x2930,0x290F,0x2930,0x2130,0x2130,0x2950,0x2150,0x2130,0x2130,0x2130,0x1930,0x1952,0x1152,0x1153,0x1154,0x1155,0x19D7,0x2218,0x2217,0x19D6,0x1154,0x1112,0x1112,0x1931,0x2151,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x2130,0x212F,0x2130,0x2110,0x2930,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2930,0x2110,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x2910,0x290F,0x2910,0x2910,0x210F,0x290F,0x2930,0x210F,0x290F,0x2910,0x2910,0x2110,0x2110,0x210F,0x2930,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x212F,0x210F,0x292F,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x20EF,0x28CF,0x28AF,0x286F,0x5153,0x933B,0xA33C,0xA2FD,0xA2DD,0xA2BD,0xA29D,0xA29D,0xAABD,0xAADD,0xA2FD,0x8ABA,0x200E,0x208F,0x28F0,0x2910,0x212F,0x212F,0x2130,0x2930,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x290F,0x290F,0x210F,0x212F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x290F,0x210F,0x2910,0x290F,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x2930,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1111,0x1112,0x1133,0x1995,0x2217,0x2217,0x21F7,0x19B6,0x1154,0x1133,0x1932,0x1911,0x1931,0x1930,0x2130,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1932,0x1912,0x1113,0x1114,0x1176,0x21D7,0x2218,0x21F8,0x21D7,0x1995,0x1153,0x1952,0x1951,0x1930,0x2150,0x2130,0x2930,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2910,0x210F,0x2130,0x212F,0x210F,0x2930,0x290F,0x2930,0x2930,0x210F,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2910,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2931,0x2931,0x2951,0x2931,0x2931,0x2931,0x2952,0x2131,0x2152,0x2152,0x2172,0x2173,0x2973,0x2973,0x2973,0x3173,0x3172,0x3172,0x3972,0x4172,0x4172,0x4993,0x4172,0x4993,0x4993,0x49B3,0x49B3,0x49B3,0x49B2,0x51B2,0x51B2,0x5150,0x71F2,0xD4DC,0xD479,0xDC78,0xDC58,0xDC78,0xDC57,0xD437,0xD436,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC17,0xDC37,0xDC16,0xDC16,0xDC16,0xDBF6,0xDC17,0xDBF7,0xDBF7,0xDC17,0xDC16,0xDC17,0xDC16,0xDC17,0xDBF6,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBF6,0xDBF6,0xDBD6,0xDBD6,0xDBF6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB7,0xDBD7,0xDBD8,0xD3D8,0xC3B8,0x79D1,0x40AD,0x4930,0x4130,0x4171,0x3951,0x3951,0x4171,0x4192,0x3971,0x3971,0x4171,0x4171,0x4151,0x3930,0x4130,0x410F,0x40EE,0x386C,0x6150,0xBBB8,0xDC7B,0xDC19,0xD3B8,0xD377,0xD377,0xDB77,0xD356,0xD356,0xDB77,0xD336,0xD356,0xD356,0xD356,0xD376,0xCB56,0xCB56,0xCB76,0xC396,0xC3B7,0xBBD7,0xB3B7,0xABB6,0xA3D7,0x9BD6,0x8BB6,0x9438,0x8C38,0x8C79,0x8C99,0x8499,0x951B,0x951B,0xA5BE,0xADFF,0xADBF,0x8CFC,0x63B7,0x42D4,0x21B0,0x1990,0x116F,0x1970,0x1990,0x114F,0x1970,0x1970,0x2190,0x1970,0x2991,0x29B1,0x39F2,0x4212,0x5274,0x5A94,0x5A74,0x5A54,0x41D2,0x3130,0x292F,0x290F,0x210F,0x290F,0x210F,0x2910,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x290F,0x290F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1133,0x11D6,0x11F7,0x11F7,0x11B6,0x1133,0x1911,0x2111,0x2110,0x2930,0x2930,0x2110,0x2930,0x210F,0x2930,0x2930,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x212F,0x2930,0x212F,0x2930,0x2930,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x210F,0x2930,0x212F,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2910,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x290F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x212F,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x2150,0x2130,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x292F,0x210F,0x290F,0x292F,0x2930,0x292F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1132,0x1133,0x1953,0x1132,0x1952,0x1931,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1132,0x1133,0x19B5,0x2217,0x21F7,0x21F7,0x19B6,0x1974,0x1133,0x1132,0x1132,0x1932,0x1932,0x1112,0x1932,0x1912,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1912,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1912,0x1932,0x1932,0x1112,0x1932,0x1932,0x1932,0x1932,0x1932,0x1111,0x1932,0x1932, + 0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x2910,0x290F,0x2930,0x210F,0x290F,0x292F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2930,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2910,0x2930,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2931,0x2111,0x1911,0x1932,0x1133,0x0953,0x1175,0x11B6,0x11F8,0x1A19,0x1219,0x1A19,0x19F8,0x19B6,0x1154,0x1133,0x1112,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2930,0x210F,0x290F,0x210F,0x2910,0x2930,0x2910,0x2910,0x210F,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x290F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x290F,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x2910,0x2930,0x2910,0x2110,0x2910,0x2910,0x290F,0x292F,0x290F,0x292F,0x2130,0x2130,0x2130,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x290F,0x290F,0x210F,0x2930,0x290F,0x2930,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2151,0x1931,0x1932,0x1133,0x1154,0x1195,0x19D7,0x2238,0x2218,0x19B6,0x1154,0x1133,0x1112,0x1932,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x2110,0x2930,0x212F,0x2930,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x2930,0x2930,0x2110,0x2110,0x2130,0x210F,0x292F,0x290F,0x2910,0x2930,0x2110,0x2110,0x2930,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2130,0x2110,0x20EF,0x2110,0x290F,0x290F,0x28F0,0x28D0,0x288F,0x5153,0x9B3C,0xA31D,0xA2FD,0xA2BD,0xA27C,0xA25C,0xAABD,0xAADD,0xA2FD,0x92FB,0x200E,0x208F,0x28EF,0x20EF,0x210F,0x212F,0x2930,0x2930,0x212F,0x212F,0x210F,0x290F,0x2930,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2930,0x210F,0x2910,0x2930,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x210F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1111,0x1112,0x1173,0x19B5,0x19D6,0x2217,0x2217,0x19B5,0x1154,0x1133,0x1932,0x1911,0x1910,0x1910,0x2151,0x2130,0x210F,0x210F,0x2130,0x2130,0x2131,0x2131,0x2132,0x1912,0x1113,0x1134,0x1176,0x19D8,0x2219,0x21F8,0x21D7,0x1975,0x1133,0x1112,0x1931,0x2151,0x2151,0x2130,0x2130,0x2110,0x2930,0x2910,0x2110,0x2110,0x2910,0x2930,0x2930,0x2910,0x290F,0x2930,0x2110,0x210F,0x210F,0x2930,0x2930,0x2930,0x210F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x2951,0x2931,0x3131,0x3151,0x2931,0x2931,0x2931,0x2931,0x2952,0x2952,0x2972,0x2952,0x2952,0x3193,0x3193,0x3172,0x3972,0x4192,0x4172,0x4172,0x4172,0x49B3,0x4993,0x49B3,0x49B3,0x49B3,0x49B3,0x49B2,0x51B2,0x59D2,0x5991,0x7212,0xD4DC,0xCC59,0xD458,0xD437,0xD457,0xD457,0xD457,0xDC57,0xDC57,0xDC57,0xD437,0xDC37,0xDC37,0xDC37,0xD437,0xDC37,0xDC17,0xDC17,0xDC17,0xDC16,0xDC17,0xDBF6,0xDBF7,0xDC17,0xDC17,0xDC16,0xDBF6,0xDBF6,0xDC16,0xDC17,0xDC17,0xDC16,0xDC17,0xDBF7,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xD3D6,0xD3B6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDBB6,0xDB96,0xDBD6,0xDBB6,0xDBB7,0xDBD7,0xDBF8,0xD3D8,0xCBF9,0x612F,0x40AD,0x4930,0x4971,0x4191,0x4171,0x4171,0x4151,0x4191,0x4171,0x3951,0x4151,0x4130,0x410F,0x40EE,0x40AD,0x612E,0xB357,0xE4BC,0xD3D9,0xCB98,0xD377,0xD377,0xD377,0xDB77,0xD356,0xD356,0xDB76,0xD336,0xD356,0xD356,0xCB56,0xCB56,0xCB76,0xC376,0xC397,0xC3B7,0xB397,0xABB7,0x9BB7,0x9BF7,0x9438,0x8438,0x8478,0x7458,0x6C58,0x74D9,0x7D1A,0x855B,0x8DBD,0x8D5C,0x95BE,0x7CDB,0x42B4,0x114E,0x008C,0x08AC,0x08CD,0x10EE,0x10EE,0x10EE,0x10EE,0x10EE,0x10EE,0x10EE,0x10CE,0x10EE,0x190F,0x10AD,0x10AD,0x18AD,0x108D,0x18AD,0x18AD,0x188D,0x186D,0x18AE,0x20EE,0x20EF,0x290F,0x292F,0x292F,0x2930,0x292F,0x290F,0x292F,0x2930,0x290F,0x2930,0x290F,0x2910,0x2110,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x212F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x19D6,0x19F7,0x11F7,0x11B6,0x1112,0x1911,0x2131,0x2110,0x2930,0x2930,0x2110,0x2130,0x210F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2110,0x2110,0x2930,0x210F,0x212F,0x210F,0x290F,0x2930,0x2910,0x2910,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x2930,0x2930,0x212F,0x212F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x2930,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2110,0x2930,0x2930,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1951,0x1931,0x1931,0x2151,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1132,0x1153,0x1995,0x21F7,0x21F7,0x21F7,0x19B6,0x1974,0x1133,0x1932,0x1912,0x1912,0x1911,0x1911,0x1931,0x1931,0x1931,0x1952,0x1952,0x1931,0x1931,0x1931,0x1931,0x2131,0x1911,0x2132,0x1931,0x1931,0x2132,0x1931,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1932,0x1931,0x1931,0x1931, + 0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2910,0x2930,0x212F,0x2930,0x212F,0x212F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2110,0x2910,0x290F,0x210F,0x290F,0x290F,0x292F,0x212F,0x292F,0x212F,0x292F,0x292F,0x290F,0x210F,0x2930,0x210F,0x2110,0x2930,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2130,0x2110,0x2131,0x1931,0x1132,0x1132,0x1174,0x0975,0x11D7,0x11D7,0x11F8,0x1A19,0x11F8,0x19F8,0x11B6,0x1154,0x1133,0x1132,0x1932,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2930,0x2910,0x210F,0x2930,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x290F,0x290F,0x290F,0x210F,0x2910,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2110,0x2910,0x2930,0x2910,0x2910,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2910,0x2110,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x290F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2930,0x290F,0x290F,0x292F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x212F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x290F,0x2110,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1953,0x1154,0x1195,0x19D7,0x1A18,0x2218,0x19B6,0x1154,0x1133,0x1112,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x212F,0x210F,0x290F,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x2910,0x210F,0x290F,0x210F,0x2930,0x290F,0x2910,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x2110,0x2110,0x212F,0x292F,0x290F,0x290F,0x2110,0x2110,0x2110,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2130,0x210F,0x210F,0x2130,0x212F,0x210F,0x290F,0x28EF,0x28CF,0x308F,0x5153,0xA33D,0xA31D,0xAAFD,0xAA9D,0xA27C,0xAA9D,0xB2DD,0xAAFD,0x9ADB,0x200E,0x208F,0x28F0,0x20EF,0x210F,0x2930,0x2910,0x2930,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2930,0x210F,0x210F,0x2930,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2131,0x2131,0x1911,0x1932,0x1112,0x1153,0x19B5,0x19F6,0x2217,0x2217,0x19D6,0x1174,0x1132,0x1932,0x1911,0x1910,0x2130,0x2130,0x2950,0x2130,0x210F,0x2110,0x2130,0x2130,0x2131,0x2152,0x1932,0x1113,0x1113,0x1155,0x21D8,0x2219,0x2218,0x21D7,0x1975,0x1133,0x1112,0x1911,0x1931,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2910,0x2930,0x2110,0x2930,0x290F,0x2930,0x210F,0x2910,0x2930,0x290F,0x290F,0x210F,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x292F,0x290F,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2931,0x2951,0x3151,0x3131,0x3131,0x2931,0x2931,0x2931,0x2951,0x2951,0x3152,0x3152,0x3152,0x3172,0x3172,0x3172,0x3172,0x3972,0x4192,0x4192,0x4172,0x4993,0x4993,0x4993,0x49B3,0x49B3,0x49D3,0x51D3,0x51D3,0x51D3,0x51B2,0x5191,0x69F2,0xD4FD,0xCC7A,0xCC58,0xD438,0xD457,0xD457,0xD477,0xDC98,0xDC57,0xDC58,0xD437,0xD437,0xD437,0xD457,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC36,0xDC16,0xDC17,0xDC17,0xDC17,0xDC16,0xDC17,0xDC17,0xDC17,0xD3F6,0xDC37,0xDC37,0xDC16,0xDC17,0xDBF6,0xDBF7,0xDBF6,0xDBD6,0xDBD6,0xDBF6,0xDBD6,0xDBD6,0xDBF6,0xDBF6,0xDBF6,0xDBF7,0xD3B6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDB96,0xDBB6,0xDB96,0xDB96,0xDB96,0xDBB6,0xDBB6,0xDBD7,0xDBB7,0xDBD7,0xD3D7,0xCBD8,0xC3B8,0x590E,0x48EE,0x4950,0x4971,0x4171,0x4171,0x4171,0x4171,0x4171,0x4151,0x4130,0x490F,0x40CD,0x50CD,0xA316,0xD45A,0xDC3A,0xD3B8,0xD377,0xD377,0xD376,0xD356,0xDB56,0xDB56,0xDB56,0xD356,0xD356,0xD356,0xCB56,0xCB77,0xCB56,0xC377,0xC3B7,0xBB97,0xAB97,0xA3B7,0x9BB7,0x93F8,0x8C38,0x8458,0x7458,0x7CDA,0x751A,0x751B,0x755C,0x7DBD,0x7DDD,0x85BD,0x859D,0x8DBE,0x6459,0x094E,0x00ED,0x090E,0x10EE,0x10EE,0x18EE,0x18EF,0x18EF,0x190F,0x18EE,0x190F,0x18EE,0x190F,0x190F,0x18EE,0x18EE,0x18EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EF,0x20EF,0x20EF,0x20EF,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2910,0x2910,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x210F,0x2130,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x19B6,0x19F7,0x11D7,0x11B6,0x1133,0x1911,0x2111,0x2110,0x2130,0x2930,0x2930,0x2930,0x212F,0x212F,0x2930,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x2930,0x2930,0x210F,0x210F,0x2930,0x210F,0x290F,0x2930,0x2110,0x2110,0x210F,0x210F,0x2910,0x2910,0x290F,0x210F,0x290F,0x292F,0x212F,0x292F,0x2930,0x2930,0x212F,0x2930,0x210F,0x2930,0x290F,0x2930,0x210F,0x2930,0x2930,0x212F,0x2930,0x212F,0x2130,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x210F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2950,0x212F,0x212F,0x212F,0x2150,0x212F,0x2150,0x2130,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2150,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x2930,0x210F,0x290F,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x214F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x214F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2930,0x2130,0x212F,0x2930,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x1930,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1951,0x1930,0x1930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1912,0x1133,0x1153,0x1195,0x2217,0x21F7,0x21F7,0x19B6,0x1154,0x1933,0x1912,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1911,0x1911,0x2131,0x1931,0x1910,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x1911,0x2131,0x2131,0x2111,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x1911,0x1911,0x1931,0x1910,0x2131,0x2131,0x2131,0x2111,0x2111,0x2131, + 0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x212F,0x210F,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x2130,0x2110,0x2130,0x1910,0x1931,0x1932,0x1132,0x0953,0x0975,0x0996,0x11F8,0x11F8,0x1A19,0x11F8,0x19F8,0x1196,0x1154,0x1133,0x1112,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2910,0x2110,0x210F,0x2110,0x2910,0x2930,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2930,0x2930,0x2110,0x210F,0x290F,0x290F,0x210F,0x2110,0x2110,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x292F,0x2930,0x2930,0x2130,0x2130,0x2110,0x2130,0x1910,0x1930,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1952,0x1932,0x1133,0x1154,0x1195,0x19D7,0x2218,0x2218,0x19B6,0x1154,0x0912,0x1112,0x1932,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x212F,0x212F,0x2130,0x2930,0x212F,0x2930,0x2930,0x290F,0x212F,0x212F,0x2930,0x2930,0x2930,0x210F,0x290F,0x2910,0x290F,0x290F,0x2910,0x210F,0x290F,0x290F,0x2930,0x2910,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x292F,0x290F,0x210F,0x290F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x292F,0x212F,0x292F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x28CF,0x28AF,0x304F,0x5113,0xA2FD,0xAAFD,0xAADE,0xAA9D,0xAA9D,0xB2BD,0xAADD,0x9ADB,0x280E,0x206F,0x28CF,0x28F0,0x20EF,0x210F,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x212F,0x212F,0x2110,0x210F,0x2130,0x2131,0x1931,0x1912,0x1112,0x1153,0x1995,0x21F6,0x2217,0x21F6,0x1995,0x1154,0x1132,0x1131,0x1111,0x1910,0x2130,0x2130,0x2971,0x2130,0x2130,0x210F,0x2110,0x2130,0x2131,0x1911,0x1952,0x1133,0x1113,0x1155,0x19D7,0x2218,0x2219,0x21D7,0x1975,0x1113,0x10F2,0x1911,0x1911,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2110,0x2910,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x290F,0x292F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x290F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2931,0x2930,0x2930,0x2930,0x2931,0x2931,0x2931,0x3131,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3172,0x3172,0x3172,0x3172,0x3972,0x3992,0x3992,0x3972,0x4172,0x4192,0x4193,0x4993,0x4993,0x4993,0x49B3,0x49B4,0x49D3,0x51D3,0x51D3,0x51D3,0x51D2,0x4970,0x61D2,0xD51D,0xCCBB,0xD499,0xCC58,0xD458,0xD478,0xD457,0xD478,0xD478,0xD457,0xD457,0xD458,0xD458,0xD457,0xD457,0xD437,0xD436,0xD437,0xD437,0xDC36,0xDC36,0xDC17,0xDC17,0xDC17,0xDC37,0xDC37,0xDC37,0xDC17,0xDC17,0xDBF6,0xD3F6,0xD3F6,0xD3F6,0xDBF6,0xDBF6,0xDBF6,0xDBF7,0xDBF6,0xDBF6,0xDBF6,0xDBF7,0xDBD6,0xDBD6,0xD3D6,0xDBD6,0xD3D6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBD6,0xDBB6,0xDBB6,0xDB96,0xDB96,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDBB7,0xDBB7,0xDBD7,0xD3F8,0xCBF9,0xCC3A,0x590E,0x490F,0x4950,0x4971,0x4171,0x4971,0x4151,0x4150,0x4930,0x490F,0x50CE,0x8212,0xD45A,0xDC3A,0xD3B8,0xD397,0xD377,0xD376,0xDB77,0xDB77,0xDB56,0xDB56,0xD336,0xD356,0xD356,0xD356,0xCB76,0xCB76,0xCB97,0xC3B7,0xB397,0xAB97,0xA3D8,0x93D7,0x8C18,0x8C99,0x7C58,0x6C58,0x74FA,0x7D7C,0x755B,0x7D9C,0x7DDD,0x7DBD,0x7DDD,0x759D,0x7D9D,0x857D,0x53F7,0x010D,0x112E,0x112F,0x192F,0x190F,0x190F,0x18EF,0x190F,0x190F,0x190F,0x190F,0x210F,0x190F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x20EF,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2910,0x210F,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x2110,0x2130,0x212F,0x212F,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2131,0x1931,0x1932,0x1133,0x19D6,0x19F8,0x11D7,0x11B6,0x1133,0x1111,0x1911,0x2110,0x2130,0x2930,0x2930,0x2130,0x210F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x210F,0x210F,0x2930,0x2930,0x2930,0x290F,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930,0x212F,0x292F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2910,0x210F,0x2110,0x2110,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2110,0x2930,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2150,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2950,0x2130,0x2150,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x292F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2950,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2151,0x2130,0x1930,0x1930,0x2131,0x2131,0x2131,0x2130,0x1930,0x1930,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x2130,0x2130,0x1931,0x1931,0x1932,0x1953,0x1153,0x1995,0x2217,0x2217,0x21F7,0x19B5,0x1153,0x1132,0x1912,0x1911,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110, + 0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x290F,0x210F,0x2110,0x2930,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x2110,0x2110,0x2110,0x1930,0x1931,0x1132,0x1152,0x0953,0x0975,0x0996,0x11D7,0x11F8,0x1A19,0x1A19,0x19D8,0x11B6,0x1155,0x1133,0x1112,0x1911,0x1931,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x212F,0x212F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x292F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x2110,0x210F,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x2930,0x2130,0x210F,0x2130,0x2130,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x2110,0x2110,0x2130,0x1910,0x1930,0x1931,0x1931,0x1931,0x1932,0x1932,0x1952,0x1952,0x2152,0x1931,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x292F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2151,0x2131,0x1932,0x1112,0x1133,0x1154,0x1175,0x19D7,0x2218,0x2218,0x1196,0x1154,0x1112,0x1932,0x1932,0x1931,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x2930,0x290F,0x290F,0x210F,0x2130,0x212F,0x210F,0x2110,0x2930,0x210F,0x290F,0x290F,0x210F,0x2930,0x290F,0x210F,0x2930,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x2930,0x210F,0x2930,0x212F,0x210F,0x2930,0x292F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x210F,0x292F,0x290F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x28EF,0x28CF,0x3090,0x3050,0x50B3,0xA2DD,0xB2FE,0xAA9D,0xAA9D,0xB2BD,0xB2DD,0xA2DC,0x280E,0x288F,0x28CF,0x28EF,0x2910,0x2930,0x2930,0x290F,0x290F,0x290F,0x292F,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2110,0x2110,0x2910,0x210F,0x2910,0x2910,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1911,0x1132,0x1153,0x19B5,0x21F6,0x2217,0x21F7,0x19B5,0x1133,0x1112,0x1131,0x1111,0x1931,0x1910,0x2150,0x2150,0x2130,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1132,0x1133,0x1154,0x21D7,0x2218,0x2218,0x21F7,0x1975,0x1113,0x10F2,0x18F1,0x1911,0x2131,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x290F,0x2930,0x210F,0x290F,0x292F,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x292F,0x292F,0x292F,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2931,0x2930,0x2931,0x2931,0x3131,0x3151,0x3131,0x3151,0x3171,0x3171,0x3171,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x4192,0x4192,0x4192,0x4192,0x4192,0x4993,0x49B3,0x49B3,0x49B3,0x49B4,0x49D3,0x49D3,0x51D3,0x51D3,0x51F3,0x4971,0x59D1,0xCCFD,0xCCDB,0xCCBA,0xCC99,0xCC99,0xCC78,0xCC78,0xCC78,0xCC78,0xCC78,0xCC58,0xCC57,0xD478,0xD478,0xCC57,0xD457,0xD457,0xD436,0xD436,0xD457,0xD436,0xDC37,0xD437,0xD416,0xD417,0xD437,0xD417,0xD417,0xDC37,0xD416,0xD3F6,0xD3F6,0xD417,0xD3F6,0xDC17,0xDC17,0xDC17,0xDC17,0xDBF6,0xDBF7,0xDBF7,0xDBF7,0xD3D6,0xDBD6,0xDBD6,0xDBD6,0xD3D6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDBB6,0xDB96,0xDBB6,0xDBB6,0xDBB6,0xDBB7,0xDBD7,0xDBD7,0xD3D8,0xD419,0xBBF9,0x592F,0x490F,0x4971,0x4971,0x4971,0x4950,0x5150,0x48CE,0x612F,0xC3F9,0xD43A,0xD3D8,0xD3B7,0xD397,0xD376,0xD376,0xD336,0xD356,0xDB56,0xDB56,0xD356,0xD356,0xCB36,0xD377,0xCB97,0xCBB7,0xC3F8,0xBBD8,0xAB97,0x9BB7,0x9C19,0x9459,0x8459,0x7458,0x6C78,0x74FA,0x7D5B,0x7D9C,0x759C,0x759C,0x7DBD,0x7DBD,0x759C,0x755C,0x751B,0x7D3C,0x74BB,0x094E,0x114F,0x112F,0x192F,0x192F,0x190F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2910,0x2910,0x2910,0x2930,0x290F,0x2930,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x212F,0x210F,0x2930,0x210F,0x212F,0x2930,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x1931,0x1931,0x1932,0x1133,0x19B6,0x19F7,0x11D7,0x19B6,0x1113,0x1912,0x2111,0x2110,0x2130,0x2930,0x2930,0x2930,0x212F,0x2930,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2930,0x290F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2130,0x2130,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x292F,0x290F,0x212F,0x292F,0x212F,0x212F,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x292F,0x292F,0x2930,0x2930,0x2110,0x2110,0x2930,0x2930,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x210F,0x292F,0x292F,0x20EF,0x2910,0x210F,0x290F,0x2110,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2150,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x2130,0x2150,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x2930,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2150,0x212F,0x192F,0x2130,0x2130,0x212F,0x2130,0x210F,0x2130,0x212F,0x212F,0x2130,0x2130,0x1910,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x2930,0x2130,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1133,0x1153,0x1995,0x21F7,0x2217,0x21F7,0x19B5,0x1174,0x1132,0x1932,0x1911,0x2131,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110, + 0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2930,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x210F,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2151,0x1931,0x1131,0x1132,0x0953,0x0975,0x11B6,0x11D7,0x1A19,0x1A19,0x1A19,0x19F8,0x1176,0x1134,0x1113,0x1112,0x1911,0x1911,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x290F,0x210F,0x290F,0x292F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2910,0x2910,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x210F,0x210F,0x2910,0x212F,0x210F,0x2110,0x2110,0x210F,0x2130,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x212F,0x210F,0x210F,0x212F,0x2930,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x2930,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x212F,0x2910,0x2930,0x210F,0x212F,0x2930,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x1931,0x1911,0x1111,0x1132,0x1132,0x1133,0x1133,0x08F2,0x08F2,0x1112,0x1111,0x1911,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x290F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1932,0x1133,0x1174,0x1196,0x19D7,0x2218,0x19F7,0x19B6,0x1154,0x1133,0x1932,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x2110,0x2930,0x290F,0x290F,0x290F,0x292F,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x210F,0x292F,0x292F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2910,0x210F,0x210F,0x2930,0x2930,0x2930,0x212F,0x292F,0x290F,0x292F,0x292F,0x212F,0x292F,0x212F,0x292F,0x2930,0x292F,0x212F,0x292F,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x28EF,0x28AF,0x3070,0x3810,0x6935,0xB31E,0xB2BD,0xB29D,0xB2BD,0xB2BD,0xA2DC,0x280E,0x286E,0x28F0,0x28F0,0x2910,0x2930,0x2930,0x2930,0x292F,0x292F,0x290F,0x292F,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2110,0x2130,0x2151,0x2131,0x1911,0x1112,0x1133,0x19B5,0x2217,0x2218,0x21F7,0x19B6,0x1154,0x0912,0x10F1,0x1951,0x2151,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x2130,0x2151,0x1931,0x1931,0x1932,0x1133,0x1154,0x21F7,0x2A38,0x2218,0x19D7,0x1995,0x1134,0x10F2,0x18F1,0x1911,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2910,0x2110,0x2910,0x2110,0x2930,0x2110,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x2910,0x290F,0x2930,0x210F,0x290F,0x2910,0x2930,0x290F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x212F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2930,0x2931,0x2931,0x2931,0x3131,0x3131,0x3151,0x3151,0x3151,0x3171,0x3151,0x3972,0x3151,0x3972,0x3972,0x4192,0x4192,0x4192,0x4192,0x4193,0x4993,0x4993,0x4993,0x49B3,0x49B3,0x51D4,0x51D3,0x51D3,0x51D3,0x51F3,0x51D2,0x51B1,0x5A12,0xC51D,0xBCDB,0xBC99,0xC4B9,0xC498,0xC498,0xC478,0xBC57,0xBC57,0xBC37,0xB437,0xC478,0xC478,0xC457,0xC457,0xCC57,0xCC56,0xCC56,0xCC57,0xCC57,0xCC57,0xD457,0xD457,0xD437,0xD437,0xD437,0xD437,0xD417,0xD417,0xD437,0xD437,0xD417,0xD417,0xD417,0xD417,0xD3F6,0xD417,0xD416,0xD3F6,0xDC17,0xD3F7,0xD3F7,0xD3F7,0xD3D6,0xD3D6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDB96,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xD396,0xD395,0xD396,0xDBB7,0xD3B7,0xD3D7,0xD3D8,0xCC19,0xC3F9,0x590F,0x5950,0x5151,0x5151,0x50EF,0x58EE,0x9294,0xDC9B,0xCBD8,0xCBB7,0xD397,0xD376,0xD376,0xDB96,0xDB76,0xDB76,0xD356,0xD356,0xD335,0xD356,0xD376,0xCB97,0xCB97,0xC3D7,0xB3B7,0xABB7,0x9BD7,0x9418,0x949A,0x7C79,0x7479,0x6C99,0x751A,0x7D9C,0x759C,0x757C,0x757C,0x7D9D,0x755C,0x6CFB,0x74FB,0x7D3B,0x7CDB,0x8D1C,0x8CFC,0x4AD4,0x2190,0x214F,0x2150,0x212F,0x212F,0x214F,0x214F,0x212F,0x2150,0x2950,0x2970,0x2950,0x212F,0x210F,0x212F,0x210F,0x292F,0x210F,0x292F,0x210F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2930,0x2930,0x290F,0x210F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2930,0x290F,0x212F,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1133,0x19D6,0x19F7,0x11D7,0x11B6,0x1133,0x1111,0x1911,0x2110,0x2110,0x2930,0x2110,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x2110,0x2110,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x290F,0x2930,0x2930,0x212F,0x210F,0x210F,0x2930,0x212F,0x210F,0x2930,0x2130,0x210F,0x2110,0x2110,0x210F,0x290F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x292F,0x2930,0x2910,0x2910,0x2930,0x2130,0x2130,0x2130,0x2130,0x2150,0x2150,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2110,0x2130,0x2930,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2150,0x2130,0x2130,0x1930,0x2150,0x2130,0x2130,0x2130,0x212F,0x2130,0x2150,0x212F,0x2150,0x2130,0x2130,0x1910,0x2131,0x2131,0x2150,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2111,0x2131,0x2131,0x2130,0x2131,0x2130,0x2110,0x2110,0x2110,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x210F,0x210F,0x2110,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x1912,0x1132,0x1154,0x1995,0x21F7,0x2217,0x19D6,0x19B5,0x1153,0x1132,0x1911,0x1931,0x1911,0x1910,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x20EF,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x2110,0x210F,0x2130,0x210F, + 0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x2110,0x212F,0x212F,0x212F,0x2930,0x290F,0x290F,0x2930,0x2130,0x212F,0x2130,0x2930,0x2130,0x212F,0x212F,0x292F,0x292F,0x210F,0x2130,0x2130,0x1930,0x1931,0x1132,0x1132,0x1154,0x0975,0x11B6,0x11D7,0x19F9,0x1A19,0x19F9,0x19F8,0x1196,0x1154,0x1133,0x1112,0x1911,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2130,0x2110,0x2930,0x2110,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2910,0x210F,0x210F,0x292F,0x292F,0x290F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x292F,0x290F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2130,0x2130,0x2110,0x2110,0x2130,0x210F,0x2110,0x2930,0x210F,0x212F,0x2110,0x2110,0x210F,0x2130,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2930,0x210F,0x2910,0x290F,0x210F,0x2930,0x212F,0x212F,0x292F,0x290F,0x292F,0x290F,0x2930,0x212F,0x210F,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x290F,0x292F,0x292F,0x210F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1951,0x1931,0x1953,0x1974,0x1995,0x19D6,0x21F7,0x19D6,0x19D6,0x19B5,0x1174,0x1133,0x1112,0x1111,0x1911,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x290F,0x210F,0x290F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2131,0x1931,0x1132,0x1133,0x1154,0x1196,0x19F7,0x2218,0x2218,0x19B6,0x1154,0x1133,0x1952,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2110,0x2910,0x290F,0x2930,0x210F,0x290F,0x290F,0x2930,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x210F,0x2910,0x2910,0x290F,0x290F,0x2930,0x210F,0x2910,0x2930,0x210F,0x212F,0x210F,0x2930,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x210F,0x2930,0x290F,0x290F,0x292F,0x292F,0x292F,0x2930,0x292F,0x212F,0x2930,0x212F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x28EF,0x30D0,0x3090,0x3830,0x5072,0xB2FD,0xB2BD,0xB29D,0xBABD,0xB2BD,0xA2BC,0x300E,0x286E,0x28F0,0x28EF,0x2910,0x2930,0x2930,0x290F,0x2930,0x292F,0x292F,0x2930,0x2930,0x210F,0x290F,0x2930,0x210F,0x290F,0x292F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x2910,0x2910,0x2930,0x2930,0x2930,0x290F,0x2930,0x2130,0x2130,0x212F,0x292F,0x292F,0x210F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2110,0x2130,0x2130,0x2151,0x1911,0x10F1,0x1133,0x1174,0x2217,0x2217,0x2217,0x19B6,0x1974,0x0912,0x1111,0x1931,0x2151,0x2150,0x2150,0x2150,0x2130,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1154,0x19B6,0x2238,0x2218,0x19D7,0x1175,0x1133,0x10F2,0x18F1,0x1911,0x2131,0x2131,0x2130,0x2110,0x2930,0x2110,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x292F,0x290F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2950,0x2950,0x2930,0x2951,0x3151,0x3131,0x3131,0x3151,0x3151,0x3151,0x3151,0x3171,0x3972,0x3951,0x3951,0x3972,0x3972,0x4172,0x4172,0x4192,0x4193,0x4993,0x4993,0x49B3,0x49B3,0x49B3,0x49B3,0x51B3,0x51D3,0x51D3,0x51D3,0x51F3,0x51F2,0x49D1,0x5A32,0xB4FC,0xB4BA,0xB479,0xB458,0xB478,0xB457,0xBC78,0xBC78,0xBC78,0xBC98,0xBC98,0xBC98,0xC4B8,0xC498,0xC477,0xC477,0xCC97,0xC477,0xC477,0xCC77,0xC457,0xCC57,0xCC57,0xCC37,0xCC37,0xCC57,0xCC37,0xCC37,0xCC37,0xCC57,0xCC37,0xCC57,0xCC37,0xCC37,0xCC37,0xCC37,0xC417,0xCC37,0xCBF6,0xCBF7,0xCC17,0xD417,0xD3F7,0xD3F7,0xD3F7,0xD3F7,0xD3F6,0xD3D6,0xD3D6,0xDBD6,0xDBB6,0xDB96,0xDBB6,0xDBB6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDBB6,0xDBB6,0xDBB7,0xDBD7,0xDBD7,0xD3D7,0xD3D8,0xDC7B,0x9AB5,0x6130,0x6171,0x592F,0x58CD,0xBBB8,0xD419,0xCBD7,0xCB97,0xD396,0xD376,0xD355,0xD355,0xD376,0xD356,0xDB97,0xD356,0xD356,0xCB56,0xCB97,0xCBB7,0xCBF8,0xBBB7,0xA396,0x9BB7,0x9418,0x8C79,0x8479,0x6C58,0x6478,0x753B,0x7D9D,0x75BC,0x759C,0x759C,0x755C,0x753B,0x751B,0x74FB,0x74BA,0x7CBA,0x84DB,0x847A,0x8C7A,0x5293,0x210E,0x292F,0x212F,0x2130,0x2130,0x214F,0x214F,0x2950,0x2150,0x2950,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2910,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x2930,0x292F,0x290F,0x2930,0x212F,0x212F,0x292F,0x2930,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x19D6,0x19F7,0x11D7,0x19B6,0x1133,0x1912,0x2111,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x212F,0x212F,0x2110,0x2930,0x2130,0x210F,0x2930,0x290F,0x210F,0x2130,0x210F,0x2930,0x212F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2910,0x210F,0x290F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x2910,0x2110,0x2110,0x2130,0x2131,0x2131,0x2110,0x2130,0x1930,0x2150,0x2150,0x2150,0x2130,0x1930,0x2130,0x1930,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x2910,0x2910,0x290F,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2150,0x212F,0x2130,0x2130,0x2130,0x2151,0x1930,0x1950,0x1950,0x1950,0x2150,0x2150,0x2150,0x2130,0x2150,0x2150,0x192F,0x2150,0x1930,0x2130,0x2131,0x2131,0x2131,0x2130,0x2130,0x2131,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x2130,0x1931,0x2131,0x2131,0x1930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x1910,0x2131,0x1931,0x1932,0x1132,0x1133,0x1995,0x21D7,0x21F7,0x21F7,0x19B5,0x1154,0x1132,0x1131,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x210F,0x210F,0x212F,0x2930,0x2930,0x2930,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x2930,0x2930, + 0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2910,0x2910,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1952,0x1132,0x1154,0x1175,0x11B7,0x11D8,0x19F9,0x1A19,0x1A19,0x19F8,0x11B6,0x0954,0x1113,0x1132,0x1931,0x1931,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2930,0x2130,0x212F,0x210F,0x2130,0x2110,0x290F,0x2930,0x2930,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2930,0x210F,0x2130,0x2930,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x212F,0x212F,0x2110,0x2130,0x2130,0x2130,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x290F,0x2910,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2930,0x212F,0x210F,0x290F,0x290F,0x292F,0x292F,0x2950,0x2930,0x2130,0x2130,0x2151,0x1951,0x1952,0x1173,0x1994,0x1195,0x11B6,0x11D7,0x11D7,0x11F8,0x1218,0x11F8,0x1A18,0x19F7,0x19D6,0x1994,0x1953,0x1952,0x2131,0x2151,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x2130,0x2130,0x2930,0x2130,0x212F,0x210F,0x2910,0x2930,0x290F,0x2910,0x210F,0x290F,0x290F,0x292F,0x290F,0x210F,0x292F,0x210F,0x2110,0x2130,0x2131,0x2131,0x1952,0x1932,0x1153,0x1174,0x11B6,0x19F7,0x2218,0x2218,0x19D6,0x1154,0x1133,0x1932,0x1931,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x2130,0x212F,0x210F,0x2130,0x2930,0x212F,0x212F,0x2930,0x212F,0x292F,0x292F,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x290F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x210F,0x212F,0x2130,0x2930,0x212F,0x212F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x28EF,0x28D0,0x3090,0x3850,0x58F4,0xB2FD,0xB2BD,0xB29D,0xBA9D,0xB2BD,0xAAFC,0x300E,0x286E,0x30D0,0x28EF,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2930,0x2910,0x2930,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x2910,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930,0x2910,0x2930,0x2130,0x2130,0x2130,0x2930,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2130,0x2131,0x1911,0x1112,0x1133,0x1154,0x21D6,0x2217,0x19F7,0x19D6,0x1154,0x1132,0x1111,0x1931,0x1931,0x2150,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x2130,0x2110,0x2130,0x1911,0x1932,0x1153,0x1995,0x2238,0x2218,0x19F7,0x1195,0x1153,0x08F2,0x1111,0x2131,0x2131,0x2951,0x2130,0x2930,0x2110,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2110,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x3151,0x2951,0x3151,0x3152,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3951,0x3952,0x3952,0x3972,0x4172,0x4172,0x4192,0x4993,0x4993,0x4993,0x49B3,0x49B3,0x51D3,0x49B3,0x51B4,0x51D3,0x51D3,0x51F3,0x51F3,0x51F2,0x51F2,0x6AF5,0xCDBF,0xBD1C,0xBCFA,0xB499,0xBCD9,0xBCD9,0xBCD9,0xC4FA,0xC4F9,0xBCD9,0xBCB8,0xBC98,0xBCB8,0xC4B8,0xC498,0xC498,0xC498,0xBC97,0xBC97,0xC498,0xBC97,0xBC77,0xBC77,0xBC57,0xC477,0xC477,0xC457,0xC457,0xC457,0xBC37,0xBC57,0xBC57,0xBC37,0xBC37,0xBC57,0xBC37,0xBC37,0xBC37,0xC437,0xC437,0xC417,0xC417,0xCC17,0xCBF7,0xD3F7,0xD3D6,0xD3D6,0xD3D6,0xD3B6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDBB6,0xDBB6,0xD396,0xDB96,0xDBB7,0xD3B7,0xD3B7,0xD3D8,0xCBF9,0x60CD,0x482B,0x60CD,0xCBD9,0xD3F8,0xCB97,0xCB96,0xD3B7,0xD396,0xD376,0xDB76,0xD356,0xD356,0xD356,0xCB56,0xD376,0xCB97,0xCB97,0xC397,0xBBB7,0xABD7,0x9BD7,0x9438,0x949A,0x8479,0x6C78,0x6478,0x6D1A,0x7DBD,0x75BD,0x6D7C,0x75BD,0x7DBD,0x753B,0x74DA,0x7CDA,0x7CBA,0x7C79,0x8459,0x73B7,0x83D8,0x947A,0x6B15,0x186C,0x290E,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2950,0x2950,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x212F,0x292F,0x2930,0x210F,0x210F,0x292F,0x290F,0x290F,0x2930,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2910,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x1931,0x1112,0x1133,0x19D7,0x19F7,0x11D7,0x11B6,0x1113,0x1912,0x2111,0x2111,0x2130,0x2930,0x2930,0x2930,0x2110,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x290F,0x290F,0x2110,0x210F,0x2930,0x210F,0x212F,0x212F,0x2930,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x2910,0x2930,0x212F,0x212F,0x2930,0x2930,0x2930,0x212F,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2111,0x2111,0x2111,0x2131,0x1911,0x1931,0x1931,0x2151,0x2151,0x1950,0x1930,0x1950,0x1951,0x1930,0x1910,0x1911,0x1931,0x1931,0x2151,0x1931,0x2131,0x2130,0x2131,0x2131,0x2131,0x1911,0x1931,0x1910,0x1931,0x1930,0x2130,0x2130,0x2130,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x212F,0x2130,0x2131,0x2111,0x2111,0x2131,0x2131,0x2131,0x2131,0x2150,0x2130,0x2130,0x2130,0x2151,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1951,0x2151,0x1950,0x2150,0x2150,0x1950,0x1950,0x1951,0x1931,0x1931,0x1931,0x1931,0x1931,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x1911,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x1910,0x2151,0x2151,0x2151,0x2131,0x1931,0x1931,0x2131,0x2131,0x1931,0x1951,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2150,0x2150,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2131,0x1931,0x1931,0x1932,0x1132,0x1153,0x1995,0x19D6,0x21F7,0x21F7,0x1995,0x1153,0x1112,0x1111,0x1931,0x1931,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F, + 0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x212F,0x2930,0x2110,0x2110,0x2910,0x2110,0x2910,0x20F0,0x2110,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2930,0x210F,0x212F,0x212F,0x292F,0x210F,0x290F,0x210F,0x210F,0x2110,0x210F,0x2130,0x2930,0x2930,0x2930,0x212F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2131,0x1931,0x1932,0x1133,0x1154,0x1175,0x1176,0x11D8,0x19F9,0x1A19,0x1A19,0x19F8,0x1196,0x1155,0x1133,0x1132,0x1931,0x1911,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2930,0x212F,0x2130,0x212F,0x2130,0x2130,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x212F,0x2130,0x210F,0x212F,0x212F,0x292F,0x292F,0x212F,0x2130,0x210F,0x2930,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x210F,0x212F,0x2130,0x2110,0x2110,0x210F,0x2110,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x2110,0x210F,0x210F,0x2930,0x2930,0x290F,0x2910,0x2910,0x290F,0x290F,0x292F,0x210F,0x212F,0x212F,0x210F,0x292F,0x210F,0x212F,0x2930,0x2930,0x212F,0x212F,0x2130,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2130,0x2130,0x2130,0x1931,0x1932,0x1153,0x1174,0x1195,0x1196,0x11B7,0x11D8,0x09F9,0x09D9,0x09F9,0x09D8,0x09F9,0x09D8,0x11D7,0x19B6,0x1994,0x1952,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x2910,0x2910,0x290F,0x2910,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x2110,0x2130,0x2110,0x2131,0x1931,0x1932,0x1932,0x1153,0x1174,0x1195,0x19D7,0x2217,0x2238,0x19B6,0x1154,0x1153,0x1932,0x1931,0x1931,0x2111,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2930,0x210F,0x2930,0x2930,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2950,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x28EF,0x28D0,0x3090,0x3850,0x50B3,0xB2FD,0xB2BD,0xBA9D,0xBABD,0xBABD,0xB31D,0x300E,0x284E,0x30CF,0x28F0,0x290F,0x2930,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x290F,0x210F,0x210F,0x290F,0x2910,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x210F,0x290F,0x290F,0x210F,0x2930,0x2930,0x2930,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x2110,0x2930,0x2131,0x2111,0x10F1,0x1112,0x1174,0x19D6,0x2217,0x21F7,0x19D6,0x1154,0x1133,0x1112,0x1911,0x2151,0x2150,0x2130,0x210F,0x212F,0x2930,0x210F,0x210F,0x2910,0x2930,0x2130,0x2130,0x2111,0x1911,0x1153,0x1174,0x19F7,0x2238,0x1A17,0x11B5,0x0933,0x1112,0x1111,0x1911,0x2131,0x2130,0x2130,0x2130,0x2110,0x210F,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x3151,0x3151,0x3171,0x3151,0x3151,0x3151,0x3171,0x3151,0x3951,0x3952,0x3952,0x4172,0x3972,0x4172,0x4192,0x4172,0x4192,0x4993,0x4993,0x49B3,0x49B3,0x51B3,0x51B3,0x51D4,0x51D4,0x51D3,0x51F4,0x51F3,0x51F3,0x51F2,0x51F2,0x7315,0xCDBE,0xBD3C,0xBD1B,0xBD1A,0xBCFA,0xBCF9,0xC4FA,0xC4FA,0xC4FA,0xC51A,0xC4F9,0xC4F9,0xCCFA,0xC4F9,0xC4D9,0xCCD9,0xC4D9,0xC4F9,0xC4F9,0xC519,0xC4F9,0xC519,0xC519,0xC4F9,0xC4F9,0xC4D9,0xC4D9,0xC4D9,0xBCB9,0xBCB8,0xB498,0xB498,0xB498,0xA457,0xA457,0xA457,0xA457,0xA436,0xB478,0xB458,0xBC78,0xBC78,0xC458,0xC438,0xCC17,0xCBF7,0xCBD6,0xD3D6,0xD3D6,0xD3B6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBD6,0xD3B6,0xDBB6,0xDBB6,0xD396,0xD396,0xDBB6,0xD396,0xD396,0xDB96,0xDB96,0xDBB7,0xDBB7,0xDBD8,0xD3B8,0x91F1,0x790E,0xCBB8,0xD3B7,0xD397,0xCB76,0xD397,0xD376,0xD396,0xD376,0xD356,0xD376,0xD376,0xD376,0xCB97,0xCBB7,0xC3B7,0xBBF8,0xABB7,0x9BB7,0x9C59,0x9479,0x84BA,0x6C58,0x5C57,0x6CFA,0x759C,0x7DDD,0x75DD,0x759C,0x755B,0x753B,0x6CB9,0x7CDA,0x84DA,0x8499,0x8459,0x83F7,0x83D8,0x8BB8,0x9C3A,0x6AD5,0x30EE,0x310E,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x292F,0x2950,0x2930,0x212F,0x212F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x210F,0x210F,0x290F,0x2930,0x292F,0x2930,0x2930,0x292F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2110,0x210F,0x2910,0x290F,0x290F,0x2930,0x2930,0x290F,0x2930,0x2110,0x2930,0x2930,0x210F,0x2930,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x292F,0x290F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x1931,0x1932,0x1113,0x19D6,0x19F8,0x11D7,0x19B6,0x1113,0x1912,0x2131,0x2111,0x2130,0x2130,0x2930,0x2110,0x2110,0x2930,0x2930,0x290F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x290F,0x290F,0x212F,0x2930,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x2930,0x210F,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x292F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x292F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2131,0x2111,0x2132,0x1912,0x1932,0x1912,0x1932,0x1952,0x1931,0x1951,0x1931,0x1951,0x1951,0x1951,0x1952,0x1932,0x1932,0x1932,0x1932,0x1952,0x2152,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1132,0x1131,0x1931,0x1931,0x1951,0x1931,0x2130,0x2130,0x2110,0x2910,0x2910,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x292F,0x212F,0x2110,0x2131,0x1931,0x2152,0x1932,0x1952,0x1932,0x1932,0x1932,0x1951,0x2151,0x1931,0x1931,0x1931,0x1931,0x1952,0x1132,0x1152,0x1132,0x1932,0x1952,0x1951,0x1951,0x1951,0x1951,0x1951,0x1951,0x1951,0x1152,0x1952,0x1952,0x1932,0x1952,0x1931,0x2131,0x2131,0x1931,0x1931,0x1952,0x1952,0x1932,0x1932,0x1932,0x1932,0x1932,0x2152,0x1952,0x1931,0x1931,0x1952,0x1952,0x2152,0x1932,0x1952,0x1952,0x1932,0x1952,0x1931,0x1951,0x1952,0x1931,0x1952,0x1952,0x1952,0x1952,0x1952,0x1932,0x1932,0x1931,0x1931,0x2131,0x2130,0x1930,0x2130,0x2150,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1931,0x1931,0x1932,0x1132,0x1153,0x1995,0x21F6,0x21F7,0x21F7,0x1995,0x1153,0x1132,0x1111,0x1911,0x1910,0x1930,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x210F,0x290F,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x292F, + 0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x2910,0x2910,0x2110,0x2910,0x2110,0x2910,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x210F,0x2110,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x2930,0x2130,0x2130,0x1931,0x1111,0x1133,0x1134,0x1175,0x1196,0x11D7,0x19F9,0x1A19,0x1A19,0x11D8,0x11B7,0x1155,0x1174,0x1932,0x1932,0x2131,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2930,0x2930,0x212F,0x212F,0x2930,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x212F,0x2930,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2910,0x2910,0x290F,0x290F,0x292F,0x292F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x2930,0x2930,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x2930,0x2130,0x2110,0x1931,0x1931,0x1132,0x1174,0x1175,0x1196,0x11B7,0x09D9,0x09F9,0x09FA,0x01D9,0x01D9,0x01D9,0x09D9,0x09D9,0x09D8,0x11B6,0x1175,0x1133,0x1932,0x1911,0x1910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2930,0x290F,0x210F,0x2910,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x292F,0x210F,0x2110,0x2110,0x2130,0x2130,0x1931,0x1931,0x1132,0x1153,0x1154,0x1175,0x19D6,0x2217,0x2217,0x19B5,0x1154,0x1153,0x1932,0x1932,0x2131,0x2111,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x2930,0x2110,0x2110,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x2110,0x2110,0x2910,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2930,0x2130,0x210F,0x2930,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x292F,0x290F,0x2930,0x3110,0x28B0,0x3070,0x3850,0x5072,0xB31E,0xB2BD,0xBA9D,0xBA9E,0xB29D,0xB31D,0x300E,0x282D,0x30CF,0x28EF,0x28EF,0x290F,0x210F,0x290F,0x292F,0x292F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2910,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2930,0x210F,0x2930,0x290F,0x2930,0x210F,0x290F,0x290F,0x2910,0x210F,0x2910,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x292F,0x212F,0x292F,0x290F,0x290F,0x2110,0x2130,0x2131,0x18F1,0x08D1,0x1133,0x19D6,0x2238,0x2217,0x19B6,0x0934,0x1113,0x1112,0x1911,0x2151,0x2131,0x2130,0x2110,0x20EF,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2131,0x18F0,0x1112,0x1154,0x19D6,0x2238,0x1A17,0x11B5,0x0933,0x1132,0x1932,0x1931,0x2131,0x2131,0x2130,0x2110,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2910,0x290F,0x210F,0x2930,0x210F,0x290F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3151,0x3171,0x3171,0x3171,0x3171,0x3151,0x3151,0x3951,0x3971,0x3972,0x3972,0x4172,0x4172,0x4192,0x4172,0x4192,0x4993,0x4993,0x49B3,0x49B3,0x51B4,0x51B3,0x51D4,0x51D4,0x51D4,0x51D4,0x51D3,0x51D3,0x59F3,0x59F3,0x49B1,0x72F5,0xBD1C,0xBD3C,0xBD3B,0xC51B,0xC51A,0xBCFA,0xC4FA,0xC4FA,0xC51A,0xC51A,0xC51A,0xC4FA,0xC4D9,0xCCFA,0xCCFA,0xCCFA,0xC4D9,0xC4FA,0xC51A,0xC51A,0xBD1A,0xBD19,0xBD19,0xBD1A,0xB519,0xBD3A,0xB53A,0xB53A,0xB53A,0xB53A,0xAD3A,0xAD39,0xAD39,0xAD5A,0xA539,0xA539,0x9CF8,0x9CB8,0x9477,0x9C57,0x9C37,0xA437,0xAC17,0xBC58,0xBC17,0xC417,0xCC17,0xD3F7,0xD3D6,0xD3D6,0xD3B6,0xDBB6,0xDBB6,0xD3B6,0xD3B6,0xD395,0xD3B6,0xD3B6,0xD3B6,0xDBB6,0xDBB6,0xDB96,0xDB96,0xD376,0xDB76,0xD376,0xD376,0xDB97,0xDBB7,0xDBB7,0xD397,0xDBD8,0xDBB7,0xD396,0xD396,0xD396,0xD376,0xD356,0xD376,0xD376,0xD376,0xCB76,0xCB76,0xCB97,0xC397,0xBBB7,0xB3D8,0x9BB7,0x93F8,0x8C79,0x7438,0x6417,0x5C37,0x6CFA,0x7DBC,0x7DBC,0x75BC,0x759C,0x7D7C,0x74FA,0x6C99,0x7CB9,0x8CB9,0x8418,0x83D6,0x7B75,0x8396,0x8BB7,0x9C39,0x93B8,0x5A32,0x28CD,0x310F,0x310F,0x312F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x210F,0x212F,0x292F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x212F,0x212F,0x210F,0x290F,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1133,0x19D7,0x11F8,0x11D7,0x19D6,0x1133,0x1912,0x2132,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2930,0x2930,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2930,0x210F,0x2130,0x212F,0x2930,0x290F,0x210F,0x210F,0x2930,0x2110,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2910,0x2910,0x290F,0x210F,0x212F,0x212F,0x2110,0x2110,0x2130,0x210F,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x290F,0x2910,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2131,0x1932,0x1933,0x1133,0x1133,0x1133,0x1153,0x1133,0x1953,0x1952,0x1132,0x1131,0x1173,0x1173,0x1153,0x1153,0x1133,0x1133,0x1133,0x1953,0x1973,0x1933,0x1932,0x1132,0x1933,0x1133,0x1133,0x1133,0x1153,0x1133,0x1153,0x1952,0x1972,0x2131,0x2131,0x2110,0x2110,0x2910,0x210F,0x210F,0x2930,0x2930,0x2930,0x2130,0x290F,0x210F,0x210F,0x210F,0x2130,0x2130,0x1952,0x1953,0x1953,0x1974,0x1154,0x1954,0x1953,0x1953,0x1952,0x1952,0x1932,0x1132,0x1132,0x1153,0x1174,0x1174,0x1154,0x1153,0x1153,0x1153,0x1973,0x1972,0x1931,0x1952,0x1152,0x1153,0x1173,0x1174,0x1174,0x1173,0x1153,0x1132,0x1952,0x1952,0x1952,0x1931,0x1952,0x1973,0x1973,0x1153,0x1133,0x1133,0x1133,0x1133,0x1953,0x1952,0x1932,0x1132,0x1132,0x1153,0x1153,0x1153,0x1153,0x1153,0x1953,0x1953,0x1152,0x1152,0x1132,0x1152,0x1153,0x1153,0x1973,0x1973,0x1953,0x1953,0x1932,0x1932,0x1952,0x1951,0x1931,0x1930,0x1930,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2110,0x2130,0x2110,0x2131,0x2131,0x2131,0x2131,0x2152,0x1952,0x1932,0x1952,0x1132,0x1132,0x1153,0x1194,0x21F6,0x21F7,0x21F7,0x1995,0x1153,0x1132,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2930,0x292F,0x2930,0x2930,0x212F,0x2930,0x2930,0x212F,0x212F,0x290F,0x210F,0x292F,0x212F,0x2930,0x210F,0x290F,0x210F,0x290F,0x210F,0x2110,0x210F,0x212F,0x210F,0x210F,0x210F, + 0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2930,0x2910,0x2910,0x2110,0x2910,0x210F,0x290F,0x2930,0x210F,0x292F,0x2130,0x2130,0x2131,0x1931,0x1112,0x1133,0x1154,0x1175,0x1196,0x11B7,0x19F8,0x1A19,0x1A19,0x11D8,0x11B6,0x1175,0x1174,0x1132,0x1911,0x2111,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2930,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x2910,0x210F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x2910,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2930,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x290F,0x2910,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x290F,0x210F,0x290F,0x290F,0x292F,0x210F,0x2130,0x2110,0x2130,0x1911,0x1932,0x1133,0x1154,0x1195,0x09B7,0x09D8,0x09F9,0x01FA,0x01DA,0x01BA,0x01DA,0x01DA,0x01FA,0x01D9,0x09F9,0x11D8,0x1196,0x1154,0x1932,0x1931,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x290F,0x290F,0x2930,0x210F,0x2110,0x2130,0x2130,0x1931,0x1931,0x1932,0x1153,0x1154,0x1175,0x19D6,0x2218,0x2218,0x19B6,0x1154,0x1133,0x1912,0x2132,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x2130,0x212F,0x2130,0x212F,0x212F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2930,0x2110,0x2930,0x2910,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x292F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x212F,0x212F,0x2130,0x212F,0x212F,0x292F,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x212F,0x210F,0x2930,0x2910,0x30F0,0x30B0,0x3070,0x3830,0x4811,0xBAFE,0xBABE,0xBA9D,0xC29E,0xC2BE,0xBB1D,0x380E,0x280D,0x30AF,0x30CF,0x28EF,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x212F,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x210F,0x210F,0x2930,0x2930,0x290F,0x210F,0x210F,0x2930,0x2910,0x2910,0x210F,0x210F,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x292F,0x292F,0x290F,0x2110,0x2110,0x2131,0x18F1,0x08D1,0x1175,0x21F7,0x2218,0x2217,0x1174,0x08F2,0x10F2,0x1111,0x1931,0x2151,0x2130,0x210F,0x210F,0x210F,0x2110,0x2910,0x2910,0x2910,0x2930,0x2930,0x2110,0x2131,0x1911,0x1112,0x1174,0x19F7,0x1A38,0x1A17,0x0953,0x0912,0x1132,0x1931,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2110,0x2910,0x2930,0x290F,0x290F,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x2930,0x2930,0x3151,0x3150,0x2930,0x2930,0x3150,0x3150,0x3151,0x3171,0x3171,0x3171,0x3971,0x3971,0x3951,0x3971,0x3972,0x4172,0x4172,0x4192,0x4192,0x4192,0x4993,0x4993,0x49B3,0x51B3,0x49B3,0x51B3,0x51B3,0x51D4,0x51B3,0x59D4,0x59D3,0x59D3,0x59D3,0x59F2,0x51B1,0x51B0,0xB4DC,0xC55D,0xBD1B,0xC4FA,0xC4FA,0xC4DA,0xBCB9,0xC4B9,0xC4B9,0xC4B9,0xC4B9,0xC498,0xC499,0xC499,0xC499,0xC499,0xC4B9,0xC499,0xC4D9,0xC4DA,0xBCFA,0xBCF9,0xBD1A,0xB53A,0xB51A,0xB53A,0xB53A,0xB53A,0xB55A,0xB55A,0xAD7B,0xAD7B,0xAD9B,0xAD9B,0xA59B,0xA59B,0xA59B,0xA59B,0xA59B,0xA57B,0xA55A,0xA51A,0xACD9,0xA478,0xA3F6,0xABD6,0xB3F6,0xC417,0xC3F7,0xCBF7,0xD3D7,0xD3D6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xDBB6,0xDBB6,0xD396,0xD396,0xDB96,0xDB76,0xDB76,0xDB96,0xDB76,0xDB97,0xDB96,0xDB76,0xDB96,0xDB96,0xD376,0xD376,0xD376,0xCB55,0xD376,0xD376,0xCB56,0xCB76,0xCB97,0xC3B7,0xBB97,0xB3B7,0xA3D7,0x93F7,0x8C38,0x7C59,0x6C38,0x6478,0x6CFA,0x6D3B,0x7DDD,0x7DDD,0x7D9C,0x7D5B,0x751A,0x74B9,0x7438,0x7C38,0x9499,0x9417,0x8B96,0x8B55,0x9396,0x9396,0xA419,0xA43A,0x5A12,0x30CD,0x30EE,0x312F,0x312F,0x312F,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x290F,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2111,0x1931,0x1952,0x1132,0x1154,0x19D7,0x11F8,0x11D7,0x19D7,0x1153,0x1932,0x2132,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x210F,0x210F,0x2930,0x2130,0x212F,0x290F,0x290F,0x212F,0x212F,0x2130,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x2930,0x2910,0x2110,0x2910,0x290F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x2130,0x210F,0x2930,0x2110,0x2110,0x2930,0x212F,0x2930,0x212F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2131,0x1932,0x1933,0x1974,0x1995,0x19B6,0x21D7,0x21D6,0x19B5,0x1974,0x1153,0x0932,0x0932,0x1173,0x1194,0x19F6,0x19D6,0x19B6,0x19B6,0x1995,0x1995,0x1154,0x1133,0x1133,0x1133,0x1954,0x1996,0x19D6,0x19D7,0x19D7,0x11B6,0x1195,0x1174,0x1953,0x1932,0x2151,0x2131,0x2930,0x2110,0x210F,0x210F,0x2110,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x1931,0x1953,0x1974,0x19B5,0x19B6,0x19B6,0x19B6,0x1995,0x1195,0x1974,0x1153,0x1153,0x1153,0x1154,0x1195,0x19D6,0x19D7,0x19D6,0x19D6,0x1195,0x1995,0x1974,0x1153,0x1952,0x1153,0x1173,0x1194,0x19D6,0x19D6,0x19F7,0x19D6,0x19B5,0x1974,0x1153,0x1952,0x1932,0x1132,0x1952,0x1973,0x19B5,0x19B5,0x19B6,0x19B6,0x19B5,0x1995,0x1994,0x1173,0x1953,0x1133,0x1154,0x1995,0x19B5,0x19B6,0x19B6,0x19B6,0x1995,0x1974,0x1174,0x1153,0x1153,0x1153,0x1153,0x1194,0x19B5,0x1995,0x21B6,0x1995,0x1995,0x1974,0x1953,0x1952,0x1951,0x1931,0x1930,0x2151,0x2130,0x2130,0x2130,0x1931,0x2131,0x1931,0x1931,0x2132,0x1932,0x1932,0x1932,0x1932,0x1952,0x1953,0x1153,0x1132,0x1133,0x1153,0x1174,0x21F6,0x21F7,0x21F7,0x19B5,0x1154,0x1132,0x1932,0x1931,0x1930,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x2130,0x2110,0x210F,0x210F,0x212F,0x290F,0x210F,0x212F,0x212F,0x2930,0x212F,0x292F,0x292F,0x290F,0x2930,0x212F,0x212F,0x2930,0x2930,0x2930,0x210F,0x210F,0x212F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F, + 0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x2910,0x2910,0x2930,0x290F,0x292F,0x292F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x290F,0x2930,0x290F,0x210F,0x210F,0x2110,0x2110,0x2151,0x1931,0x1112,0x1113,0x1134,0x1175,0x11B6,0x19D7,0x11D8,0x1A19,0x19F8,0x19F8,0x0996,0x1175,0x1153,0x1132,0x1911,0x1931,0x2130,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x290F,0x2930,0x2930,0x210F,0x210F,0x2130,0x210F,0x2130,0x2930,0x2930,0x2910,0x2910,0x290F,0x290F,0x292F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x292F,0x2110,0x2110,0x2930,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2130,0x2130,0x1931,0x1932,0x1153,0x1175,0x11B7,0x11D8,0x09F9,0x09FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x09FA,0x11F9,0x11B7,0x1154,0x1933,0x2132,0x2131,0x2110,0x2110,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x212F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2151,0x1931,0x1931,0x1932,0x1153,0x1154,0x1175,0x19B6,0x2258,0x2238,0x19B6,0x1174,0x1112,0x1912,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x212F,0x2930,0x212F,0x210F,0x212F,0x212F,0x210F,0x2930,0x212F,0x2110,0x210F,0x2910,0x290F,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x212F,0x210F,0x292F,0x292F,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x2930,0x2930,0x2110,0x2930,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x212F,0x2930,0x2930,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x212F,0x212F,0x292F,0x292F,0x212F,0x290F,0x2910,0x28CF,0x28D0,0x30B0,0x3871,0x4031,0x5032,0xC2FE,0xC27D,0xC27E,0xC27D,0xCA9E,0xBABC,0x380E,0x280D,0x388F,0x30AF,0x30CF,0x28CF,0x28EF,0x28EF,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2910,0x210F,0x2930,0x290F,0x210F,0x210F,0x2910,0x2910,0x210F,0x2910,0x2110,0x2910,0x290F,0x290F,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x292F,0x292F,0x290F,0x2110,0x2110,0x1911,0x1912,0x1953,0x19B6,0x21F7,0x2238,0x19B6,0x0913,0x08F2,0x10F1,0x1911,0x2151,0x2951,0x2110,0x210F,0x210F,0x2930,0x2930,0x2930,0x20EF,0x290F,0x2910,0x2910,0x2110,0x2110,0x1911,0x1153,0x1195,0x1A38,0x1A38,0x11B6,0x0112,0x0911,0x1952,0x2151,0x2131,0x2130,0x2110,0x2930,0x2110,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x2930,0x2950,0x2930,0x2930,0x2930,0x2110,0x2930,0x2910,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x290F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x3130,0x2930,0x3130,0x3130,0x3130,0x3130,0x3150,0x3151,0x3130,0x3150,0x3150,0x3150,0x3151,0x3151,0x3151,0x3171,0x3171,0x3971,0x3971,0x3951,0x3971,0x3972,0x4172,0x4192,0x4172,0x4193,0x4193,0x4993,0x4993,0x4993,0x49B3,0x51B3,0x51B3,0x51D4,0x51D4,0x51D4,0x59D3,0x59B3,0x59D3,0x59B2,0x492F,0x61D1,0xBCBB,0xD55D,0xD55C,0xABF7,0xA3D6,0xBC38,0xBC58,0xC478,0xC458,0xBC17,0xC437,0xBC17,0xBC17,0xC437,0xC417,0xC417,0xC417,0xC417,0xBBF7,0xBC17,0xB437,0xB458,0xAC58,0xA437,0xA458,0xA478,0xA498,0xA4B8,0xA4D9,0xA4D9,0xA4D9,0xAD1A,0xA53A,0xA51A,0xA53A,0xA57A,0xA57A,0xA57B,0xA59B,0xA59B,0xAD9B,0xAD7B,0xAD7B,0xB55B,0xB51A,0xB4FA,0xB4D9,0xBC98,0xB457,0xB3F6,0xBBB6,0xBBB6,0xCBF7,0xCBD6,0xCBD6,0xCBD6,0xCBD6,0xD3D6,0xD3D6,0xD3B6,0xD3B6,0xD396,0xD396,0xD396,0xD396,0xDB96,0xDB96,0xD376,0xDB76,0xDB76,0xDB76,0xDB96,0xDB96,0xDB76,0xD356,0xD396,0xD376,0xCB55,0xD376,0xCB75,0xCB75,0xCB96,0xC3B7,0xB376,0xB3B7,0xA3D8,0x93D7,0x9459,0x7C38,0x6C17,0x5C17,0x751A,0x7D9C,0x7DDD,0x759C,0x759C,0x7D7B,0x7D1A,0x7498,0x7C37,0x8417,0x9417,0x93F7,0x8B55,0x9355,0x9376,0x9B96,0x9BB7,0xAC39,0xA419,0x51D1,0x28AD,0x30EF,0x310F,0x3130,0x3130,0x3130,0x2930,0x3150,0x3150,0x3130,0x3130,0x3130,0x3130,0x2930,0x2930,0x3130,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2110,0x2110,0x212F,0x2930,0x212F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x212F,0x2130,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x2131,0x1931,0x1932,0x1133,0x0934,0x11D7,0x11D7,0x11D7,0x11B7,0x1133,0x1112,0x1932,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x2930,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2930,0x290F,0x212F,0x2930,0x2930,0x210F,0x2930,0x210F,0x2910,0x2910,0x290F,0x210F,0x290F,0x2910,0x2930,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x2130,0x210F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x210F,0x2110,0x2130,0x210F,0x212F,0x210F,0x2130,0x2110,0x1931,0x1953,0x1974,0x19B6,0x19D7,0x2218,0x2218,0x19F7,0x19B6,0x1996,0x1154,0x0933,0x0913,0x0954,0x11B6,0x1A17,0x19F7,0x1A17,0x19F7,0x19F7,0x11B6,0x1174,0x1134,0x1133,0x1133,0x1175,0x19F7,0x1A18,0x1A18,0x1A19,0x1A18,0x11D7,0x1195,0x1153,0x1953,0x1952,0x2131,0x2931,0x2930,0x2110,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x1910,0x1932,0x1973,0x1195,0x11D6,0x11F7,0x1A18,0x11F7,0x11D7,0x11B6,0x19B5,0x1174,0x1153,0x0933,0x0974,0x11B6,0x1A38,0x1A18,0x1A18,0x1A18,0x11D7,0x11B6,0x1995,0x1153,0x1153,0x1153,0x1194,0x11B6,0x11F7,0x1218,0x1A18,0x19F8,0x11D7,0x1195,0x1974,0x1953,0x1132,0x1132,0x1153,0x1174,0x19F6,0x1A17,0x1A18,0x1A18,0x1A18,0x19F7,0x19B5,0x1195,0x1154,0x0913,0x0954,0x11B6,0x2238,0x19F8,0x19F8,0x19D7,0x19D7,0x11B6,0x1174,0x1154,0x1174,0x1154,0x1174,0x11B5,0x19D7,0x19D7,0x21F8,0x19D7,0x19D7,0x19B6,0x1954,0x1953,0x1952,0x1931,0x1931,0x1931,0x1930,0x1931,0x2152,0x1952,0x1932,0x1932,0x1952,0x1932,0x1933,0x1953,0x1133,0x1133,0x1153,0x1154,0x0933,0x0913,0x0934,0x1175,0x19F7,0x2217,0x21F7,0x19B5,0x1154,0x1132,0x1932,0x1931,0x1930,0x1930,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x290F,0x2930,0x212F,0x212F,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x2930,0x2930, + 0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2910,0x20EF,0x2110,0x210F,0x210F,0x292F,0x290F,0x212F,0x292F,0x210F,0x210F,0x292F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x2930,0x292F,0x210F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1911,0x1932,0x1133,0x1154,0x1175,0x1196,0x11D7,0x19F8,0x1A18,0x1A18,0x11F8,0x0996,0x1174,0x1153,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x212F,0x212F,0x2930,0x212F,0x210F,0x290F,0x2930,0x210F,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2130,0x2930,0x210F,0x2910,0x290F,0x290F,0x212F,0x292F,0x212F,0x210F,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2130,0x2130,0x1931,0x1932,0x1154,0x1195,0x09B7,0x09D8,0x09FA,0x01FA,0x01DA,0x01BA,0x01DA,0x01DB,0x01FB,0x01DA,0x01DA,0x09DA,0x09D9,0x11B7,0x1175,0x1953,0x2152,0x2111,0x2130,0x2930,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x2110,0x2930,0x292F,0x210F,0x212F,0x292F,0x210F,0x290F,0x210F,0x290F,0x212F,0x2130,0x2950,0x2150,0x2130,0x1930,0x1930,0x1931,0x1132,0x1153,0x1154,0x1175,0x19D6,0x2238,0x2218,0x1195,0x1974,0x1112,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2110,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x290F,0x212F,0x212F,0x210F,0x292F,0x212F,0x210F,0x292F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x2930,0x212F,0x210F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x2910,0x3110,0x30F0,0x30D0,0x3891,0x4051,0x4810,0x78F6,0xCADE,0xCA5D,0xCA5E,0xCA5E,0xCA7E,0xC27C,0x5010,0x380E,0x380E,0x386F,0x308F,0x30CF,0x28CF,0x28F0,0x2910,0x2910,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x2930,0x2930,0x290F,0x2910,0x2910,0x2910,0x290F,0x2930,0x210F,0x2910,0x290F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2930,0x2110,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x2910,0x2930,0x290F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x210F,0x292F,0x292F,0x290F,0x2110,0x2110,0x2131,0x1932,0x1954,0x19D6,0x2218,0x19F8,0x1196,0x1133,0x1112,0x1911,0x1910,0x2151,0x2130,0x2110,0x210F,0x210F,0x2930,0x2950,0x2910,0x290F,0x290F,0x290F,0x2910,0x2110,0x2131,0x1932,0x1153,0x11B6,0x1A18,0x1A18,0x1195,0x0912,0x1112,0x1931,0x2131,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x2930,0x2910,0x210F,0x290F,0x210F,0x2910,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x290F,0x2930,0x2910,0x2910,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x3130,0x3130,0x3130,0x3130,0x3130,0x3130,0x3150,0x3150,0x3151,0x3151,0x3151,0x3151,0x3171,0x3171,0x3971,0x3971,0x3971,0x3972,0x4172,0x4172,0x4172,0x4193,0x4193,0x4993,0x49B3,0x4993,0x49B3,0x51B3,0x51B3,0x51D4,0x51D3,0x51D3,0x59D4,0x59D3,0x59B2,0x61B2,0x512F,0x69F1,0xC49B,0xCCDB,0xCCBA,0xC499,0xC479,0xC458,0xC458,0xCC79,0xCC58,0xCC58,0xCC58,0xCC38,0xCC38,0xCC38,0xCC38,0xCC38,0xCC38,0xCC18,0xCC38,0xCC18,0xC438,0xC438,0xBC38,0xBC58,0xB458,0xB458,0xAC58,0xAC58,0xAC57,0xA457,0xA478,0xA478,0xA457,0x9C57,0x9C77,0x9C77,0x9477,0x9497,0x9497,0x9498,0x94B8,0x9CB8,0xA4D9,0xACF9,0xB51A,0xB51A,0xBD3A,0xBCFA,0xBCD9,0xBCB9,0xC4B9,0xCCBA,0xBC17,0xB3D6,0xBBB6,0xC3F6,0xC417,0xCC17,0xCBF7,0xCBF7,0xCBD6,0xCBB6,0xD396,0xD396,0xD375,0xD396,0xDB96,0xDB96,0xDB76,0xD376,0xDB76,0xDB56,0xDB96,0xDB76,0xDB56,0xDB76,0xD355,0xD396,0xD396,0xCB76,0xCB96,0xCBB6,0xC3F7,0xB3D7,0x9B96,0x93D7,0x9439,0x8C79,0x7479,0x6458,0x6CFA,0x64DA,0x755B,0x85FE,0x7DBC,0x755B,0x855B,0x7499,0x7C37,0x83F6,0x8BD6,0x93D7,0xA3F7,0x9B75,0x9B76,0xA376,0x9B76,0xA3B7,0xAC5A,0xB49B,0x6A74,0x30AD,0x310F,0x310F,0x3110,0x3130,0x3130,0x3130,0x3150,0x3150,0x3150,0x3150,0x3150,0x3150,0x3130,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2930,0x212F,0x2930,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x2930,0x2130,0x2110,0x2110,0x2110,0x2131,0x2131,0x1931,0x1952,0x1132,0x1133,0x0954,0x11B7,0x11D8,0x11D8,0x11B7,0x1155,0x08F2,0x1912,0x2132,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x2930,0x2110,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x2910,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x2930,0x210F,0x2110,0x2130,0x2111,0x1932,0x1953,0x1975,0x11B7,0x11D7,0x1A18,0x19F8,0x11D7,0x11D7,0x1196,0x0955,0x0933,0x0933,0x0974,0x11B6,0x11D7,0x11F7,0x11F8,0x11F7,0x11D7,0x11B6,0x1175,0x0954,0x1154,0x0934,0x1175,0x11B7,0x11F8,0x11F9,0x1219,0x11F8,0x11F8,0x11B6,0x1174,0x1953,0x1932,0x2131,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x1931,0x1932,0x1153,0x1195,0x11D7,0x11F8,0x1218,0x11F8,0x11D7,0x11B7,0x1196,0x0974,0x0954,0x0954,0x0975,0x11B7,0x11F8,0x1219,0x1219,0x1219,0x11D8,0x11B7,0x1175,0x1154,0x1154,0x1154,0x1175,0x11B6,0x11D7,0x11F8,0x1219,0x1219,0x11D7,0x11B6,0x1195,0x1153,0x1133,0x1132,0x1153,0x1174,0x11D6,0x11F8,0x1218,0x1218,0x11F8,0x11D7,0x11B6,0x1175,0x0934,0x0913,0x0955,0x11B6,0x1A18,0x11F8,0x11F8,0x11D8,0x11D7,0x11D7,0x1195,0x1174,0x0934,0x0954,0x1175,0x11B6,0x19D7,0x11D8,0x19F8,0x19D8,0x19D7,0x19D6,0x1975,0x1953,0x1953,0x1932,0x1931,0x1931,0x1931,0x1931,0x1932,0x1953,0x1153,0x1153,0x1153,0x1154,0x1154,0x1154,0x1175,0x1175,0x1175,0x0975,0x1196,0x0996,0x11B6,0x19F7,0x2218,0x21F7,0x19B5,0x1174,0x1132,0x1131,0x1931,0x1910,0x1930,0x1910,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x2930,0x212F,0x2930,0x2930,0x2930, + 0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x210F,0x292F,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2910,0x2930,0x2130,0x2110,0x210F,0x2110,0x210F,0x210F,0x292F,0x210F,0x290F,0x290F,0x210F,0x212F,0x2130,0x2131,0x1911,0x1912,0x1932,0x1133,0x1133,0x1175,0x1196,0x11D7,0x1A18,0x1A39,0x1A19,0x11F8,0x0996,0x1154,0x1132,0x1932,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x2930,0x2930,0x210F,0x290F,0x210F,0x290F,0x212F,0x212F,0x292F,0x292F,0x212F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x2930,0x2910,0x2110,0x2930,0x210F,0x2930,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x2110,0x2110,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x210F,0x290F,0x290F,0x210F,0x2910,0x2110,0x2110,0x2930,0x2930,0x2910,0x2910,0x2930,0x210F,0x210F,0x210F,0x2930,0x2910,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x210F,0x290F,0x290F,0x292F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x292F,0x212F,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x2110,0x2130,0x1910,0x1911,0x1932,0x1154,0x11B6,0x11F8,0x09D9,0x01DA,0x01B9,0x01DA,0x01DB,0x01DB,0x01FB,0x01FB,0x01DA,0x01DA,0x09D9,0x11F9,0x11B7,0x1175,0x1133,0x1911,0x1911,0x2110,0x2930,0x2930,0x210F,0x210F,0x212F,0x2930,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x2930,0x212F,0x2930,0x212F,0x290F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1951,0x1932,0x1133,0x1154,0x1175,0x19D6,0x2218,0x21F7,0x19B6,0x1154,0x10F2,0x1911,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x2130,0x212F,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x292F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x210F,0x210F,0x290F,0x290F,0x2910,0x30F0,0x30D0,0x3890,0x4030,0x4811,0x8116,0xCA9E,0xD27E,0xD23E,0xD23E,0xD23E,0xD25E,0xD29E,0xC2BD,0xA239,0x68D3,0x4830,0x384F,0x3890,0x30B0,0x28F0,0x2910,0x2910,0x2930,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x292F,0x210F,0x290F,0x2110,0x2110,0x2111,0x1912,0x1113,0x2217,0x2238,0x19F8,0x1195,0x1133,0x1932,0x1911,0x2131,0x2130,0x2110,0x210F,0x210F,0x210F,0x290F,0x2930,0x2910,0x290F,0x290F,0x290F,0x2110,0x2110,0x2131,0x1932,0x1133,0x19F7,0x1A38,0x1A18,0x1196,0x0913,0x1932,0x1931,0x2131,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x210F,0x2930,0x292F,0x290F,0x2930,0x290F,0x210F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x3130,0x3130,0x3150,0x3151,0x3151,0x3151,0x3150,0x3150,0x3151,0x3171,0x3151,0x3171,0x3971,0x3972,0x3992,0x4192,0x3972,0x3972,0x3972,0x4172,0x4193,0x4193,0x4193,0x4993,0x49B3,0x49B4,0x49B3,0x49B3,0x51D3,0x51D4,0x59D3,0x59D3,0x59B3,0x5992,0x6191,0x592F,0x8AD4,0xD4FC,0xCCBB,0xCC9A,0xCC99,0xCC79,0xCC58,0xCC38,0xCC58,0xD438,0xD437,0xD437,0xD417,0xD417,0xD417,0xD417,0xD437,0xD438,0xD437,0xD437,0xD438,0xD438,0xCC38,0xCC38,0xCC38,0xCC38,0xC458,0xC437,0xC458,0xC438,0xC458,0xC458,0xBC58,0xBC58,0xBC58,0xBC58,0xB458,0xB457,0xAC57,0xAC57,0xA437,0xA437,0xA437,0xA437,0xAC37,0xAC17,0xAC57,0xB478,0xBC99,0xB499,0xBCFA,0xC51A,0xB4B9,0xB478,0xAC58,0xB478,0xB458,0xB417,0xABD6,0xB3B6,0xBBF7,0xC3F7,0xCBF7,0xCBD7,0xD3D7,0xD3B6,0xD3B6,0xD396,0xD396,0xDB96,0xD376,0xDB76,0xD356,0xDB76,0xD355,0xD355,0xD335,0xD355,0xD335,0xD376,0xD396,0xCB96,0xC3D6,0xBBD6,0xBC58,0xA458,0x8C17,0x73D7,0x6C18,0x6C99,0x6D1B,0x6D5B,0x7DBC,0x7DBD,0x753B,0x7D5B,0x8D7C,0x84D9,0x7C57,0x83D6,0x8374,0x9375,0xA3F7,0xABD7,0xABD7,0xABD7,0xA396,0x9B76,0xA3B7,0xAC19,0xB49B,0x8377,0x28AD,0x310F,0x3950,0x3150,0x3950,0x3150,0x3150,0x3150,0x3130,0x3150,0x3150,0x3130,0x3151,0x3151,0x3150,0x3150,0x2930,0x2930,0x2930,0x3130,0x2930,0x2930,0x290F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x290F,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x2930,0x212F,0x212F,0x290F,0x290F,0x292F,0x212F,0x2930,0x2930,0x212F,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2110,0x1910,0x2131,0x1932,0x1952,0x1133,0x1174,0x1196,0x11D7,0x09D8,0x11D8,0x11D8,0x11B6,0x1174,0x1112,0x1912,0x1911,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x2110,0x210F,0x2930,0x2110,0x210F,0x210F,0x2110,0x2930,0x2110,0x2910,0x2930,0x290F,0x210F,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x2930,0x212F,0x2930,0x212F,0x212F,0x2930,0x210F,0x2110,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x1911,0x1932,0x1954,0x1995,0x19F7,0x11F8,0x11F8,0x11F8,0x11F8,0x11D7,0x1196,0x0975,0x0954,0x0934,0x1195,0x11D6,0x11D7,0x11D8,0x11D8,0x09D7,0x11D7,0x11B7,0x0976,0x0954,0x0954,0x0954,0x0976,0x0997,0x11D8,0x09D8,0x09F9,0x09F9,0x11F8,0x11D7,0x1175,0x1953,0x1952,0x2131,0x2131,0x2110,0x2110,0x210F,0x2910,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2110,0x1931,0x1953,0x1174,0x11B6,0x11D7,0x11F8,0x11F8,0x11F8,0x09D8,0x11D7,0x11B6,0x0975,0x0954,0x0954,0x0996,0x11D7,0x11F9,0x1219,0x1219,0x11F9,0x11D8,0x11B7,0x1175,0x1174,0x1174,0x1174,0x1195,0x11B6,0x11F8,0x11F9,0x1219,0x11F9,0x09D8,0x09B7,0x1195,0x1174,0x1153,0x1133,0x1174,0x1195,0x11D7,0x11F8,0x11F8,0x11F8,0x11D8,0x11D7,0x11B6,0x1196,0x0954,0x0914,0x0975,0x11D7,0x11F8,0x11D8,0x11D8,0x09D8,0x11D8,0x11D7,0x11B6,0x1175,0x0934,0x0934,0x11B6,0x11D7,0x11D8,0x11D8,0x11D8,0x11B7,0x11D8,0x19D7,0x1995,0x1153,0x1953,0x1932,0x1931,0x1931,0x1931,0x1932,0x1153,0x1154,0x1195,0x11B6,0x11D7,0x11D7,0x11D8,0x11F8,0x11F8,0x11D8,0x11F8,0x11F8,0x1A19,0x11F8,0x1A18,0x1A18,0x19D7,0x1195,0x1974,0x1132,0x1111,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x290F,0x2930,0x290F,0x210F,0x212F,0x2130,0x2930,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x2930,0x212F, + 0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2910,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2110,0x2130,0x2130,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x2130,0x2110,0x2111,0x2131,0x1932,0x1932,0x1133,0x1154,0x1175,0x19B6,0x11D7,0x1A18,0x1A39,0x1A18,0x11D7,0x1196,0x1174,0x1132,0x1112,0x1931,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x290F,0x212F,0x210F,0x292F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x290F,0x290F,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x292F,0x210F,0x210F,0x2930,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x210F,0x2910,0x2110,0x2910,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x210F,0x210F,0x210F,0x290F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x212F,0x212F,0x290F,0x290F,0x290F,0x2110,0x2110,0x2110,0x1911,0x1132,0x1154,0x1196,0x09B8,0x09D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DB,0x01FB,0x01DB,0x01DA,0x01DA,0x09B9,0x11D9,0x19D7,0x1195,0x1133,0x1912,0x1911,0x2110,0x2930,0x2930,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x292F,0x2930,0x210F,0x2110,0x2110,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1133,0x1154,0x1175,0x19D7,0x2218,0x21F7,0x19B6,0x1153,0x1112,0x1912,0x1911,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x290F,0x210F,0x2930,0x2910,0x2910,0x290F,0x290F,0x292F,0x292F,0x212F,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x212F,0x292F,0x290F,0x2910,0x2910,0x30F0,0x38B0,0x4050,0x5031,0x99F9,0xCABE,0xD27E,0xD23E,0xDA1E,0xDA3E,0xDA1E,0xDA3E,0xDA5E,0xD29D,0xCABD,0xC2FD,0xA25A,0x4830,0x382F,0x3890,0x30D0,0x28F0,0x2910,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2110,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2130,0x212F,0x2130,0x210F,0x212F,0x210F,0x290F,0x2910,0x2110,0x2110,0x2131,0x1912,0x1113,0x2217,0x1A38,0x19D7,0x1175,0x1133,0x1912,0x1911,0x2110,0x2110,0x2110,0x2910,0x290F,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x2930,0x2930,0x2930,0x2131,0x1911,0x0933,0x19F7,0x1A38,0x19F8,0x1196,0x1133,0x1932,0x1931,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x210F,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x2930,0x3130,0x3130,0x3130,0x3130,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3971,0x3972,0x4192,0x4192,0x4172,0x4172,0x3972,0x4172,0x4193,0x4993,0x4993,0x4993,0x49D4,0x49D4,0x49B3,0x51D3,0x51D3,0x59D3,0x59B3,0x59B2,0x5992,0x5971,0x590F,0x9B16,0xDCDC,0xD4BA,0xD49A,0xD479,0xD458,0xD458,0xD458,0xD437,0xD437,0xD417,0xD437,0xD417,0xD417,0xD417,0xD417,0xD417,0xD417,0xD417,0xD417,0xD417,0xD417,0xD417,0xD417,0xD417,0xD417,0xD437,0xCC17,0xCC17,0xCC17,0xCC17,0xCC37,0xCC17,0xCC17,0xCC17,0xCC17,0xCC17,0xC437,0xC417,0xC437,0xC437,0xBC37,0xBC37,0xC437,0xBC37,0xBC17,0xBBF7,0xBC17,0xB3D6,0xB3F6,0xB417,0xB458,0xB499,0xB499,0xB4BA,0xAC78,0xBCDA,0xBCD9,0xC4DA,0xBC78,0xB438,0xB3F7,0xB3B6,0xB3B6,0xBBB6,0xC3B6,0xCBD6,0xCBB7,0xD3B7,0xD3B7,0xD396,0xDB97,0xD376,0xD376,0xDB56,0xD356,0xD356,0xD355,0xD355,0xD375,0xD376,0xD376,0xCBB7,0xCBF7,0xBC18,0xB499,0xA4DA,0x8CDA,0x74BA,0x64BA,0x5CB9,0x6D7C,0x6DBD,0x7E1E,0x85FE,0x6CDA,0x6417,0x7C78,0x8417,0x8BF6,0x8B54,0x9B95,0xA395,0xB3D7,0xB3F7,0xAB96,0xABB7,0xA397,0x9BB7,0xA43A,0xAC9B,0x9C5B,0x3970,0x290F,0x3130,0x3150,0x3150,0x3971,0x3151,0x3971,0x3151,0x3150,0x3151,0x3150,0x3151,0x3130,0x3151,0x3151,0x3150,0x3150,0x3130,0x3130,0x3130,0x3130,0x3130,0x2910,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x2930,0x2930,0x210F,0x292F,0x210F,0x2130,0x292F,0x212F,0x2930,0x2930,0x290F,0x212F,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x210F,0x210F,0x2930,0x2130,0x2110,0x1910,0x1931,0x1952,0x1153,0x1175,0x1196,0x09B7,0x09D8,0x09D8,0x09D8,0x11D8,0x11D7,0x11B6,0x1995,0x1112,0x1911,0x1931,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x2110,0x210F,0x2910,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2910,0x2910,0x2910,0x2110,0x2910,0x290F,0x2110,0x210F,0x2930,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2130,0x2130,0x210F,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x1911,0x1932,0x1133,0x1175,0x11D7,0x11D8,0x11D8,0x11F8,0x11F8,0x11F8,0x09B7,0x0975,0x0954,0x0134,0x0995,0x09B6,0x09D7,0x11D8,0x11D8,0x09D8,0x11D7,0x11B7,0x1196,0x0935,0x0934,0x0954,0x0976,0x0997,0x11D8,0x09D9,0x09D8,0x09D9,0x09D8,0x09D7,0x1195,0x1153,0x1932,0x2131,0x2110,0x2110,0x2110,0x2930,0x2910,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1154,0x1175,0x11D7,0x11F8,0x09F9,0x09F9,0x11F8,0x09D7,0x0996,0x0975,0x0954,0x0134,0x0976,0x09D7,0x11F9,0x1219,0x09F9,0x11F9,0x11D9,0x11B7,0x1175,0x1154,0x1154,0x1154,0x1175,0x09B6,0x09B8,0x11F9,0x09F9,0x09F9,0x11F9,0x11D7,0x1195,0x1174,0x1133,0x1133,0x1174,0x0975,0x11B7,0x11F8,0x11F8,0x11F8,0x09D8,0x11D8,0x11B7,0x1176,0x0934,0x0934,0x0976,0x09B7,0x11F9,0x09D9,0x09D9,0x09D8,0x11D8,0x11D8,0x11B6,0x0954,0x0113,0x0934,0x0996,0x11B7,0x11D8,0x11D8,0x09B8,0x11D8,0x11B8,0x11B7,0x1195,0x1154,0x1953,0x1932,0x1932,0x1932,0x1932,0x1132,0x1154,0x1195,0x11D7,0x11F8,0x1219,0x09F8,0x09D8,0x09D8,0x09F9,0x09F9,0x01D9,0x09D9,0x09D9,0x09D8,0x11F9,0x11D8,0x19B6,0x1174,0x1112,0x1111,0x1931,0x1930,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2930,0x210F,0x210F,0x292F,0x290F,0x290F,0x210F,0x2930,0x2930,0x2930,0x2130,0x212F,0x212F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x210F,0x210F,0x2930,0x212F, + 0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2910,0x290F,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x292F,0x210F,0x212F,0x210F,0x290F,0x210F,0x210F,0x2130,0x2110,0x2111,0x1911,0x1932,0x1932,0x1133,0x1974,0x1175,0x1196,0x11D7,0x1A18,0x1A19,0x11F8,0x11D7,0x1196,0x1154,0x1133,0x1112,0x1931,0x1931,0x2131,0x2130,0x2151,0x2130,0x2110,0x2130,0x2130,0x212F,0x2930,0x290F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2110,0x2910,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2930,0x2910,0x2930,0x2910,0x2910,0x2930,0x210F,0x290F,0x290F,0x210F,0x2910,0x290F,0x2910,0x2910,0x2910,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x290F,0x210F,0x290F,0x210F,0x2130,0x2130,0x1931,0x1931,0x1133,0x1154,0x11B7,0x09D8,0x09F9,0x01FA,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01BA,0x01B9,0x09D9,0x11F9,0x19F7,0x1995,0x1133,0x1931,0x2111,0x2110,0x2130,0x2930,0x210F,0x290F,0x210F,0x292F,0x2930,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2910,0x2110,0x212F,0x212F,0x210F,0x212F,0x2110,0x2130,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2150,0x2151,0x1952,0x1952,0x1973,0x1174,0x1175,0x19D6,0x19F7,0x21F7,0x21D6,0x1154,0x1112,0x10F2,0x1911,0x2151,0x2151,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x212F,0x210F,0x2130,0x2930,0x2930,0x2910,0x2930,0x2110,0x2930,0x2930,0x2110,0x210F,0x210F,0x210F,0x292F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2131,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2131,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x292F,0x290F,0x2910,0x28D0,0x30B0,0x3870,0x5892,0xB2DC,0xD31F,0xD27E,0xDA3E,0xE23F,0xE21E,0xE1FE,0xE21F,0xE21F,0xE23E,0xDA5E,0xD27D,0xCA9D,0xBA9C,0xBB1D,0x7134,0x382F,0x3890,0x30D0,0x28EF,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x290F,0x2910,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2110,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2131,0x2131,0x1932,0x1113,0x2218,0x1A38,0x19D7,0x1195,0x1133,0x1932,0x1911,0x2130,0x2130,0x2130,0x2110,0x290F,0x2930,0x2930,0x2910,0x290F,0x290F,0x210F,0x290F,0x2130,0x2130,0x1910,0x1932,0x1133,0x19F7,0x1A18,0x19F8,0x1196,0x0912,0x1932,0x1911,0x2130,0x2110,0x2930,0x2910,0x2930,0x210F,0x292F,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x290F,0x2930,0x2930,0x292F,0x292F,0x2930,0x210F,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x2930,0x3130,0x3130,0x3130,0x3151,0x3151,0x3151,0x3151,0x3151,0x3971,0x3151,0x3171,0x3971,0x3971,0x3971,0x3971,0x3951,0x3971,0x3971,0x4172,0x4192,0x41B3,0x41B3,0x4193,0x49B3,0x49B3,0x49B3,0x49D4,0x51D4,0x51D3,0x51D3,0x51D3,0x51B2,0x59B2,0x5991,0x5950,0x590F,0x9AF5,0xDCDC,0xD47A,0xD479,0xDC99,0xD458,0xD437,0xDC37,0xD437,0xD417,0xDC37,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xD416,0xDC17,0xDC17,0xD417,0xD417,0xDC17,0xD3F7,0xDC17,0xD417,0xD417,0xD416,0xD417,0xD417,0xD3F6,0xD3F7,0xD417,0xD3F7,0xD417,0xD3F7,0xD3F7,0xD3F7,0xD3F7,0xD3F7,0xCBF6,0xCBF6,0xCBF7,0xCBF7,0xCBF7,0xCBF7,0xCBF7,0xCBF7,0xCBF7,0xCBF7,0xC3F7,0xC437,0xB3F6,0xA3B6,0x9B96,0xAC18,0xAC37,0xB478,0xC4FA,0xBCD9,0xB498,0xB478,0xBC98,0xBC78,0xBC37,0xBBD6,0xBBB6,0xBB95,0xBB96,0xC396,0xCBB7,0xCB96,0xD396,0xD396,0xDB97,0xD376,0xDB76,0xDB76,0xDB76,0xDB96,0xD375,0xD376,0xCB76,0xC355,0xBB76,0xABB6,0xAC79,0xA4FA,0x8D1B,0x857C,0x7DDE,0x6DBD,0x551B,0x4CDA,0x6DBD,0x755C,0x5BD7,0x6BD7,0x83D7,0x8BD6,0x9396,0xABD6,0xB3F7,0xB3D7,0xAB96,0xA335,0xA356,0x9B76,0x9BD8,0x9C5A,0xA4BC,0xA4DD,0x5A95,0x290F,0x2930,0x3151,0x3971,0x3971,0x3971,0x3971,0x3971,0x3171,0x3150,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x3130,0x3130,0x3150,0x3130,0x3130,0x3130,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x292F,0x212F,0x2910,0x2910,0x210F,0x212F,0x2130,0x212F,0x212F,0x290F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2930,0x2110,0x2930,0x2131,0x2130,0x1911,0x1932,0x1953,0x1174,0x0975,0x09B7,0x09D8,0x09D8,0x09D9,0x09D9,0x09D8,0x11D8,0x11B7,0x1195,0x1154,0x1952,0x1931,0x2131,0x2131,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x210F,0x2910,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2930,0x290F,0x2910,0x210F,0x2910,0x2910,0x2910,0x2930,0x2130,0x2930,0x2130,0x292F,0x292F,0x2910,0x2930,0x290F,0x2930,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2131,0x1931,0x1932,0x1133,0x1195,0x11D8,0x11F9,0x09F9,0x09F9,0x09F8,0x09D8,0x09D7,0x0175,0x0154,0x0154,0x0996,0x11B7,0x09D8,0x09D8,0x09F8,0x09D8,0x11D8,0x11B7,0x0976,0x0955,0x0934,0x0955,0x0955,0x0997,0x11D8,0x09F9,0x09D9,0x09D9,0x09D8,0x09D7,0x1175,0x1154,0x1932,0x2131,0x2110,0x2910,0x290F,0x2910,0x290F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1953,0x1154,0x1196,0x11D8,0x11F9,0x09F9,0x09F9,0x11F9,0x09D8,0x0996,0x0955,0x0955,0x0955,0x0976,0x09B7,0x09F9,0x0A1A,0x09FA,0x09F9,0x09D9,0x11B8,0x1196,0x1154,0x0954,0x0954,0x0975,0x0997,0x09D8,0x09F9,0x09F9,0x09F9,0x09D9,0x09B7,0x1196,0x1174,0x0933,0x0933,0x1174,0x11B6,0x11D7,0x11F8,0x11F9,0x11F9,0x11D9,0x11B8,0x11B7,0x1196,0x0914,0x0934,0x0976,0x09D8,0x09F9,0x09F9,0x09D9,0x09D8,0x09D8,0x11D8,0x11B6,0x0955,0x0913,0x0914,0x1197,0x11D8,0x11D9,0x09D9,0x09B8,0x09D9,0x11D9,0x11D8,0x1196,0x1154,0x1112,0x1912,0x1931,0x1931,0x1932,0x1953,0x1195,0x11D7,0x09D8,0x09F9,0x09D9,0x01D9,0x01B8,0x01D9,0x01F9,0x01FA,0x01D9,0x01D9,0x01B9,0x09D9,0x11D9,0x11B7,0x0955,0x0913,0x10F1,0x1911,0x1931,0x2130,0x2150,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x292F,0x2930,0x2930,0x2930,0x212F,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x292F,0x290F,0x292F,0x2930,0x212F,0x212F,0x210F,0x2930,0x2930,0x212F,0x212F,0x2930,0x210F,0x2930,0x2930,0x212F,0x210F,0x210F,0x290F, + 0x212F,0x212F,0x210F,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x212F,0x2910,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x290F,0x210F,0x290F,0x2130,0x2110,0x2130,0x1931,0x1931,0x1932,0x1932,0x1933,0x1133,0x1154,0x1196,0x11D7,0x19F8,0x1A19,0x1A19,0x11D7,0x11B6,0x1174,0x1133,0x1132,0x1911,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2930,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2910,0x2910,0x210F,0x2930,0x2110,0x2930,0x210F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x2930,0x210F,0x2910,0x290F,0x290F,0x2910,0x2910,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x212F,0x2130,0x2130,0x1931,0x1932,0x1133,0x1175,0x0996,0x11F9,0x09D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x09D9,0x09D9,0x19F8,0x19F7,0x1995,0x1132,0x1911,0x2111,0x2130,0x2110,0x2930,0x290F,0x290F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x2110,0x210F,0x2930,0x210F,0x2910,0x210F,0x292F,0x292F,0x212F,0x2930,0x2930,0x2130,0x2130,0x2930,0x210F,0x2130,0x2130,0x2130,0x2150,0x2130,0x2151,0x1952,0x1952,0x1953,0x1153,0x1154,0x19D6,0x21F7,0x2218,0x21D7,0x1134,0x08F2,0x10F1,0x1911,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2930,0x2930,0x2110,0x2930,0x2930,0x2110,0x2130,0x2110,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2110,0x2131,0x2131,0x2131,0x1931,0x1931,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x2131,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x292F,0x290F,0x290F,0x2910,0x28F0,0x30D0,0x3070,0x4871,0xAA7A,0xD31E,0xD2BE,0xDA3D,0xE21E,0xE21E,0xE1FE,0xE1FF,0xE1FE,0xEA1F,0xE21E,0xE23E,0xDA5E,0xDA9E,0xCA9D,0xC2BC,0xC31D,0x60D3,0x382F,0x30B0,0x28CF,0x28F0,0x2910,0x2910,0x2930,0x290F,0x210F,0x212F,0x210F,0x210F,0x2930,0x290F,0x210F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2130,0x2131,0x1932,0x0913,0x1A17,0x1A39,0x19F7,0x1195,0x1133,0x1932,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x2930,0x2930,0x290F,0x290F,0x212F,0x2930,0x2110,0x2130,0x2131,0x1931,0x0912,0x19D7,0x2239,0x19F8,0x1195,0x0912,0x1932,0x2111,0x2110,0x2130,0x2930,0x290F,0x2930,0x2930,0x292F,0x2950,0x292F,0x212F,0x292F,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x3130,0x3130,0x3150,0x3130,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3971,0x3151,0x3951,0x3971,0x3971,0x3972,0x3971,0x3971,0x3972,0x4172,0x41B3,0x49B3,0x49B3,0x4193,0x4993,0x49B3,0x51D4,0x49B3,0x51D3,0x51D3,0x51B3,0x51B2,0x59B2,0x5991,0x6191,0x614F,0x9AF5,0xDCBB,0xDC7A,0xDC79,0xDC79,0xD438,0xD437,0xDC37,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDBF6,0xDC17,0xDC17,0xDC16,0xDC16,0xDC16,0xDBF6,0xDC17,0xD3F6,0xDBF7,0xDC17,0xDC17,0xD3F6,0xDC17,0xD3F6,0xD3F6,0xD3F6,0xD3F6,0xD3F6,0xD3F6,0xDBF7,0xDBF7,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3F6,0xD3F6,0xCBF7,0xCBF7,0xC3F7,0xC417,0xBC17,0xB418,0xABD7,0xABF7,0xB437,0xBC58,0xBC78,0xB458,0xC499,0xC499,0xBC78,0xC478,0xBC38,0xC438,0xBBD7,0xB396,0xBB96,0xBB75,0xC396,0xCB76,0xCB76,0xD396,0xDBB7,0xDB96,0xDB96,0xDB96,0xD376,0xD376,0xD396,0xCB76,0xBB96,0xB3B7,0xA3F7,0x9CDA,0x955C,0x8DBD,0x757C,0x5D5C,0x551B,0x449A,0x4C99,0x5C99,0x7479,0x8438,0x8BB6,0x9BB6,0xA3B6,0xB3F7,0xBC18,0xB3D7,0xAB96,0xA396,0x9376,0x9BD8,0x945A,0x947B,0x9D1E,0x5B37,0x190F,0x2950,0x3171,0x3971,0x3971,0x3971,0x3971,0x3971,0x3151,0x3171,0x3151,0x3171,0x3151,0x3151,0x3151,0x3151,0x3171,0x3151,0x3130,0x3130,0x3130,0x3150,0x3130,0x3130,0x3130,0x3150,0x2930,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x292F,0x212F,0x2910,0x2910,0x210F,0x212F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2110,0x2130,0x2131,0x1931,0x1111,0x1132,0x1154,0x1195,0x0996,0x11F8,0x09D8,0x09F9,0x01D9,0x01B9,0x01D9,0x09F9,0x09B7,0x11B7,0x1195,0x1994,0x1132,0x1911,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2930,0x2130,0x212F,0x2930,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x2110,0x2930,0x2110,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x2930,0x290F,0x2910,0x2910,0x290F,0x2910,0x210F,0x2910,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2130,0x2130,0x2130,0x292F,0x292F,0x2910,0x2930,0x2910,0x290F,0x290F,0x2930,0x2130,0x2130,0x212F,0x2130,0x2110,0x2130,0x2110,0x2131,0x1931,0x1933,0x1954,0x1196,0x11D8,0x11F9,0x09F9,0x0A19,0x09D8,0x09D8,0x09B7,0x0176,0x0134,0x0134,0x0996,0x11D7,0x09D8,0x09D8,0x09D8,0x09F8,0x09D8,0x09B7,0x0997,0x0955,0x0955,0x0955,0x0976,0x0997,0x09D8,0x09D9,0x09D9,0x09D9,0x09D8,0x11D8,0x1176,0x1154,0x1932,0x2131,0x2130,0x2910,0x290F,0x290F,0x290F,0x290F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2111,0x1932,0x1953,0x1975,0x1196,0x11D8,0x09F9,0x09F9,0x09F9,0x09D9,0x09D8,0x0996,0x0955,0x0955,0x0975,0x0996,0x09B7,0x09F9,0x09FA,0x09F9,0x09FA,0x11D9,0x09B8,0x1196,0x0954,0x0954,0x0954,0x0976,0x09B7,0x09D9,0x09F9,0x0A1A,0x09F9,0x09D9,0x09B7,0x1196,0x1174,0x0933,0x0933,0x1175,0x1196,0x11D7,0x11F9,0x1219,0x11F9,0x09D8,0x09B8,0x1197,0x1176,0x0934,0x0114,0x0976,0x09D8,0x0A19,0x01F9,0x01D9,0x09D8,0x09B8,0x11D8,0x11B7,0x1175,0x0914,0x0914,0x0997,0x11D8,0x09D9,0x09D9,0x09D9,0x09B9,0x09D9,0x11D8,0x1196,0x1154,0x1133,0x1932,0x1911,0x1932,0x1932,0x1954,0x1196,0x11D8,0x09B8,0x09D9,0x01D9,0x01B9,0x01B9,0x01D9,0x01DA,0x01D9,0x01DA,0x01B9,0x01DA,0x09DA,0x09B9,0x1197,0x1155,0x1133,0x1112,0x1911,0x1930,0x2130,0x2150,0x2150,0x212F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x212F,0x210F,0x2930,0x2930,0x292F,0x292F,0x2930,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2930, + 0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x2930,0x290F,0x2930,0x210F,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x2910,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x292F,0x292F,0x290F,0x290F,0x210F,0x212F,0x2130,0x2110,0x2131,0x2151,0x1931,0x1932,0x1932,0x1132,0x1133,0x1154,0x11B6,0x11D7,0x11F8,0x11F8,0x1A19,0x19F7,0x19B6,0x1154,0x1132,0x1132,0x1911,0x2131,0x2151,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2110,0x212F,0x212F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x290F,0x290F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2910,0x2910,0x2110,0x2930,0x2930,0x290F,0x290F,0x210F,0x2910,0x2930,0x210F,0x2910,0x2910,0x290F,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x210F,0x2930,0x2930,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x212F,0x210F,0x2130,0x2131,0x1931,0x1932,0x1113,0x1155,0x1197,0x09D8,0x09D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x09FA,0x09D9,0x11F8,0x19F8,0x19B6,0x1954,0x1912,0x1911,0x2131,0x2110,0x2930,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2110,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1132,0x1153,0x1995,0x19D7,0x2218,0x2218,0x19D6,0x1154,0x1113,0x10F2,0x1911,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2110,0x2130,0x2110,0x2111,0x2111,0x1911,0x2132,0x1932,0x1933,0x1933,0x1133,0x1153,0x1133,0x1132,0x1132,0x1132,0x1932,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x290F,0x2910,0x2910,0x30D1,0x3850,0x7976,0xCAFD,0xD2BE,0xDA5D,0xE25E,0xE21E,0xE9FF,0xEA1F,0xE9FF,0xE9FF,0xE9FF,0xE9FE,0xE23E,0xE23E,0xDA5E,0xDA7D,0xD2BD,0xC2BC,0xB2DC,0x5071,0x386F,0x30B0,0x28CF,0x28EF,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2930,0x290F,0x2930,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2930,0x2110,0x2110,0x290F,0x210F,0x2930,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x2930,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2131,0x1912,0x1113,0x2218,0x2259,0x19F8,0x1175,0x1133,0x1932,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x210F,0x210F,0x292F,0x2130,0x2130,0x2110,0x1910,0x1931,0x1112,0x19D7,0x1A18,0x19F8,0x1175,0x1112,0x1911,0x2111,0x2131,0x2130,0x2130,0x2930,0x2930,0x290F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3971,0x3151,0x3971,0x3971,0x3971,0x3972,0x3971,0x3972,0x4192,0x4192,0x4192,0x4193,0x4193,0x49B3,0x49B3,0x49B3,0x4993,0x49B3,0x49B3,0x51B3,0x51B3,0x51B3,0x59B2,0x59B2,0x6191,0x614F,0xAB36,0xDCBB,0xDC7A,0xDC79,0xDC58,0xDC38,0xDC37,0xDC37,0xDC17,0xDC17,0xDC16,0xDC16,0xDC17,0xDC17,0xDC17,0xDC17,0xDBF6,0xDBF6,0xDC16,0xDBF6,0xDC16,0xDC16,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xD3D6,0xD3D6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBF7,0xDBD6,0xD3D6,0xD3D6,0xDBD6,0xDBD6,0xDBD6,0xD3D6,0xDBD6,0xD3D6,0xDBF6,0xD3D6,0xDBD6,0xDBD6,0xD3D6,0xD3D6,0xD3B6,0xCBD6,0xCBF6,0xCBF7,0xCBD7,0xC3D7,0xC3D7,0xC3D7,0xC3F7,0xBBB6,0xB396,0xB3D6,0xC479,0xC479,0xBC78,0xBC58,0xB437,0xB438,0xBC58,0xBC38,0xBC17,0xBBB6,0xBB96,0xBB76,0xCB96,0xCB76,0xD396,0xD376,0xD376,0xD376,0xD376,0xD376,0xD397,0xCB97,0xC397,0xB396,0xA3B7,0x93D7,0x949A,0x851B,0x85BE,0x6D7D,0x5D3C,0x5D1C,0x5CFB,0x6CFB,0x7479,0x73F7,0x93F7,0xA417,0xABF7,0xABD6,0xABB6,0xA396,0xA3B7,0x9BF8,0x8BF8,0x8C39,0x94FC,0x953E,0x6BD9,0x194F,0x192F,0x31B1,0x39B2,0x3991,0x3991,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3151,0x3151,0x3171,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x3150,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x2110,0x2110,0x210F,0x2930,0x2930,0x2130,0x212F,0x2130,0x212F,0x2110,0x210F,0x2130,0x2131,0x2131,0x1911,0x1111,0x1973,0x19B5,0x1197,0x09D8,0x09F9,0x01D9,0x01F9,0x01FA,0x01B9,0x01B9,0x09F9,0x09F8,0x11D7,0x11B6,0x19B5,0x1132,0x10F1,0x2151,0x2151,0x2951,0x2110,0x210F,0x2930,0x2930,0x2130,0x210F,0x210F,0x210F,0x290F,0x2930,0x2110,0x2110,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x2910,0x2110,0x2930,0x2130,0x2110,0x2930,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x290F,0x210F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2110,0x2131,0x2131,0x1911,0x1932,0x1954,0x1196,0x11F8,0x09F9,0x09F9,0x09F9,0x09F9,0x09D8,0x0997,0x0176,0x0135,0x0135,0x0976,0x09B7,0x09F8,0x09D8,0x09D8,0x09D8,0x09B8,0x09B8,0x0997,0x0955,0x0955,0x0955,0x0976,0x0997,0x09B8,0x09D9,0x09D9,0x09D9,0x09F9,0x09B8,0x0976,0x1134,0x1932,0x2131,0x2130,0x2910,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2131,0x1932,0x1933,0x1154,0x1196,0x11D8,0x11F9,0x09F9,0x09F9,0x09D9,0x09D8,0x09B7,0x0975,0x0955,0x0955,0x0976,0x09B7,0x09F9,0x09FA,0x09FA,0x09FA,0x09F9,0x09B8,0x1196,0x0954,0x0954,0x0955,0x0975,0x0997,0x09D8,0x09F9,0x0A1A,0x121A,0x09D9,0x09B8,0x1196,0x1175,0x0913,0x0933,0x0974,0x0996,0x11D8,0x09F9,0x11F9,0x1219,0x09D9,0x09B8,0x11B7,0x1196,0x0934,0x0114,0x0176,0x09D8,0x0A19,0x09F9,0x01D9,0x09D9,0x09B8,0x09B7,0x1196,0x0955,0x0914,0x0934,0x09B7,0x09B8,0x09D9,0x09FA,0x09D9,0x09D9,0x09D9,0x09B8,0x11B7,0x1175,0x1133,0x1932,0x1911,0x1911,0x1932,0x1974,0x11B6,0x11F8,0x09F9,0x09FA,0x01B9,0x01B9,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x09FA,0x09FA,0x09B9,0x1197,0x1175,0x1133,0x1112,0x1931,0x2131,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x292F,0x2930,0x292F,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2110,0x2130,0x212F,0x212F, + 0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x212F,0x292F,0x292F,0x290F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1931,0x1132,0x1133,0x1154,0x1175,0x11B6,0x11D7,0x19F8,0x1A19,0x1A18,0x19F8,0x1196,0x1174,0x1153,0x1111,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x2930,0x290F,0x210F,0x210F,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x210F,0x210F,0x290F,0x2910,0x2110,0x2910,0x2910,0x290F,0x210F,0x2910,0x2910,0x2930,0x210F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1132,0x1134,0x1175,0x0997,0x09D8,0x09B9,0x09D9,0x09DA,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x11F9,0x11F8,0x19F8,0x19B6,0x1154,0x1132,0x1912,0x1911,0x2110,0x2110,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x212F,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1911,0x1953,0x1154,0x1995,0x19D7,0x21F8,0x2218,0x19B6,0x1154,0x1113,0x1112,0x1111,0x2131,0x2131,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x2111,0x2111,0x1911,0x1932,0x1913,0x1133,0x1134,0x1154,0x1154,0x1174,0x1175,0x1174,0x1194,0x1994,0x1973,0x1952,0x1911,0x1911,0x2111,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x2930,0x292F,0x212F,0x210F,0x210F,0x290F,0x2910,0x2910,0x28F0,0x30B0,0x4030,0xAA7A,0xD2DD,0xDA9E,0xE25E,0xE23E,0xEA1F,0xEA1F,0xF1FF,0xF1FF,0xF1FF,0xE9FF,0xE9FF,0xEA1F,0xE23E,0xE23E,0xE25E,0xDA7E,0xD29D,0xCB1D,0xA259,0x380F,0x3090,0x28AF,0x28F0,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x2930,0x290F,0x290F,0x2910,0x2110,0x2930,0x210F,0x210F,0x2930,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x2110,0x2910,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2910,0x2110,0x2130,0x2110,0x2130,0x2130,0x1911,0x1932,0x0913,0x2218,0x1A39,0x19F8,0x1196,0x1133,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x1931,0x1911,0x1112,0x19D7,0x1A18,0x19F8,0x1196,0x1112,0x1912,0x2111,0x2110,0x2130,0x2130,0x2930,0x290F,0x212F,0x292F,0x292F,0x292F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3130,0x3130,0x3130,0x3151,0x3131,0x3151,0x3151,0x3151,0x3151,0x3151,0x3171,0x3151,0x3151,0x3971,0x3971,0x3972,0x3972,0x3971,0x3972,0x4192,0x4192,0x4192,0x4193,0x4193,0x4193,0x4193,0x49B3,0x49B3,0x49B3,0x4993,0x49B3,0x51B3,0x51B2,0x59B2,0x61B2,0x61B1,0x614F,0xAB56,0xDCBB,0xDC9A,0xDC59,0xDC38,0xDC38,0xDC37,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC37,0xDC17,0xDC17,0xDC17,0xDC16,0xDC16,0xDBF6,0xDC16,0xDC16,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDBD6,0xDBD6,0xD3D6,0xDBD6,0xDBB6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD3D6,0xD3B6,0xD3D7,0xD3D7,0xCBB7,0xCBB7,0xCBB7,0xCBB7,0xBB96,0xBBB6,0xBBF7,0xBC38,0xC479,0xBC79,0xBC79,0xBC58,0xB458,0xBC58,0xBC38,0xBBF7,0xC3D7,0xBB76,0xBB55,0xC376,0xCB76,0xD396,0xCB56,0xD396,0xD376,0xD376,0xD397,0xCB96,0xC397,0xB3B7,0xA3B7,0x9418,0x8C9A,0x7CBA,0x6CDB,0x5CBB,0x64FC,0x5C9A,0x6CDA,0x84DA,0x8C99,0x9438,0x9BD6,0xA3D6,0xA3B6,0x9B95,0xA3D7,0x93F7,0x8C18,0x8C9A,0x8CDC,0x8D3E,0x851D,0x2A12,0x112F,0x2170,0x39B2,0x3991,0x3992,0x3991,0x3971,0x3991,0x3991,0x3971,0x3971,0x3971,0x3951,0x3151,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x3130,0x3130,0x3130,0x3130,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x210F,0x2930,0x290F,0x290F,0x2930,0x210F,0x290F,0x2930,0x292F,0x210F,0x2930,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2110,0x2110,0x2131,0x2131,0x1911,0x1111,0x1153,0x11B6,0x09B7,0x09D9,0x09D9,0x01DA,0x01FA,0x01DA,0x01DA,0x01B9,0x01F9,0x09F9,0x09D8,0x11B7,0x11B5,0x1173,0x10F1,0x1931,0x2151,0x2931,0x2110,0x210F,0x2930,0x2930,0x292F,0x212F,0x290F,0x290F,0x2910,0x2930,0x2910,0x2930,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2910,0x290F,0x2910,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2111,0x1912,0x1932,0x1134,0x1196,0x11D8,0x09F9,0x09F9,0x09F9,0x09D9,0x09D8,0x09B8,0x0156,0x0135,0x0135,0x0976,0x09B7,0x09D8,0x09F9,0x09D8,0x09D8,0x09B8,0x09B8,0x0977,0x0955,0x0955,0x0955,0x1176,0x0977,0x09D8,0x09D9,0x09D9,0x09D9,0x09D9,0x09D8,0x0976,0x1154,0x1932,0x2131,0x2110,0x2910,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x212F,0x2130,0x2110,0x2111,0x1912,0x1933,0x1155,0x1196,0x09B8,0x09F9,0x09F9,0x09FA,0x09D9,0x09D8,0x0997,0x0975,0x0955,0x0955,0x0996,0x09B8,0x09F9,0x09FA,0x09FA,0x09FA,0x09D9,0x09B8,0x0996,0x0955,0x0954,0x0954,0x0976,0x0997,0x09D9,0x09FA,0x09F9,0x0A1A,0x09D9,0x09B8,0x1196,0x1175,0x1134,0x0933,0x0974,0x1196,0x09D8,0x11F9,0x09F9,0x121A,0x09D9,0x09B8,0x0997,0x1196,0x0935,0x0114,0x0976,0x01B8,0x09F9,0x0A1A,0x09F9,0x01D9,0x09D8,0x09B7,0x1196,0x1175,0x0113,0x0935,0x11B7,0x09D8,0x09D9,0x09FA,0x09D9,0x09D9,0x09D9,0x11F9,0x11B7,0x1175,0x1133,0x1932,0x1931,0x1911,0x1932,0x1974,0x1196,0x11F8,0x09F9,0x01D9,0x01B9,0x01DA,0x01BA,0x01BA,0x01DA,0x01DA,0x01BA,0x01BA,0x09DA,0x09DA,0x11D9,0x11B7,0x1154,0x1133,0x1911,0x1911,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x292F,0x290F,0x2930,0x2930,0x210F,0x212F,0x2930,0x2930,0x2930,0x2930,0x212F,0x2130,0x212F,0x212F,0x2930,0x212F,0x210F,0x2930,0x210F,0x290F,0x2930,0x2930,0x290F,0x2930,0x290F,0x2930,0x2110,0x210F,0x212F,0x212F, + 0x2130,0x212F,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x290F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x290F,0x292F,0x292F,0x292F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x1910,0x1931,0x1931,0x1931,0x1952,0x1133,0x1133,0x1154,0x1176,0x11D7,0x11F8,0x1A19,0x19F8,0x19D7,0x1195,0x1154,0x1133,0x1932,0x2131,0x2131,0x2131,0x2130,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2110,0x2110,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2910,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x292F,0x2930,0x210F,0x210F,0x2110,0x2930,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x2930,0x210F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x292F,0x210F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x1952,0x1133,0x1154,0x1175,0x0997,0x11D8,0x09F9,0x09D9,0x09D9,0x01D9,0x09D9,0x01D9,0x09D9,0x11F9,0x11F8,0x19D7,0x1996,0x1974,0x1133,0x1912,0x1911,0x2111,0x2110,0x2110,0x2930,0x2910,0x290F,0x290F,0x210F,0x210F,0x2110,0x2130,0x212F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x292F,0x290F,0x210F,0x290F,0x210F,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2110,0x2110,0x2111,0x1931,0x1912,0x1933,0x1133,0x1175,0x19D7,0x2218,0x2218,0x19B6,0x1155,0x08F2,0x1112,0x1932,0x1932,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x1911,0x1911,0x1912,0x1132,0x1133,0x1154,0x1175,0x19B6,0x11B7,0x19F7,0x11F7,0x1A18,0x11F7,0x11D6,0x11B5,0x11B5,0x1173,0x1132,0x1931,0x1911,0x2131,0x2110,0x2110,0x2110,0x2110,0x2130,0x2930,0x212F,0x292F,0x292F,0x292F,0x290F,0x2910,0x28F0,0x28D0,0x3070,0x6114,0xCB1D,0xDADE,0xDA5D,0xE21E,0xEA1E,0xEA1F,0xF21F,0xF1FF,0xF1DF,0xF1FF,0xF1DF,0xF1FF,0xEA1F,0xEA1F,0xEA1E,0xE23E,0xDA3D,0xDA7D,0xDAFE,0xCB5E,0x4830,0x304F,0x30D0,0x28F0,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x2930,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x2930,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x290F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2930,0x210F,0x212F,0x212F,0x2110,0x2110,0x2131,0x2131,0x1932,0x1133,0x1A18,0x1A39,0x19F8,0x1176,0x1113,0x1932,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x2110,0x2130,0x2130,0x2131,0x1911,0x1112,0x19F7,0x1A18,0x19F8,0x1175,0x1112,0x1911,0x2111,0x2910,0x2110,0x2930,0x290F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x2930,0x3130,0x2930,0x2930,0x2930,0x3130,0x3130,0x3150,0x3151,0x3151,0x3151,0x3151,0x3131,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3971,0x3972,0x3972,0x3972,0x3972,0x3972,0x4192,0x4192,0x41B3,0x4193,0x4193,0x4193,0x4193,0x4993,0x49B3,0x51B3,0x51D3,0x51B3,0x51B2,0x59B2,0x59B2,0x6191,0x614F,0xA336,0xDC9B,0xDC59,0xDC59,0xDC58,0xDC38,0xDC17,0xDC37,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC16,0xDC17,0xDC17,0xDC16,0xDC16,0xDC16,0xDC16,0xDBF6,0xDC16,0xDC16,0xDBF6,0xDBF6,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDB95,0xDBB6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xD395,0xD396,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xDBD7,0xD3B7,0xD3B7,0xD3B7,0xCB96,0xCB96,0xCBD7,0xC3B6,0xBBD7,0xB3D7,0xAB96,0xBC38,0xBC58,0xBC58,0xB438,0xB438,0xBC38,0xBC17,0xC3F7,0xBBB6,0xC396,0xC376,0xC376,0xCB76,0xD376,0xCB76,0xCB56,0xCB76,0xCB97,0xCB96,0xC397,0xB397,0xA3B7,0x9418,0x949A,0x84BB,0x749A,0x74FC,0x7D3C,0x7CDA,0x7417,0x8C79,0xA4DA,0xA479,0x9BD6,0x9BD6,0x9BF7,0x8BD7,0x8438,0x849A,0x8D3C,0x8D5E,0x853E,0x42F5,0x110F,0x2991,0x31B2,0x39D2,0x39B2,0x3992,0x4192,0x4192,0x3991,0x3971,0x3971,0x3971,0x3971,0x3951,0x3951,0x3972,0x3951,0x3151,0x3151,0x3151,0x3171,0x3151,0x3151,0x3131,0x3131,0x3151,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x210F,0x210F,0x2910,0x290F,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x210F,0x2930,0x2930,0x210F,0x2130,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x2131,0x1911,0x1132,0x1154,0x19D7,0x11F9,0x09D9,0x01B9,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01D9,0x09F9,0x09F9,0x11D8,0x11D6,0x1174,0x08D1,0x1931,0x2952,0x2931,0x2130,0x2110,0x210F,0x292F,0x292F,0x212F,0x290F,0x2930,0x2110,0x2110,0x2910,0x2930,0x290F,0x210F,0x2930,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x210F,0x2110,0x2131,0x2111,0x2132,0x1932,0x1134,0x1196,0x11B7,0x09F9,0x09F9,0x09F9,0x09D9,0x09D8,0x0997,0x0156,0x0135,0x0135,0x0976,0x09B7,0x09D8,0x09D8,0x09B8,0x09B8,0x09D8,0x09B8,0x0976,0x0955,0x0955,0x0955,0x0976,0x0997,0x09D8,0x09D9,0x09D9,0x09D9,0x09D9,0x09B8,0x0975,0x1154,0x1953,0x2131,0x2110,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2111,0x1912,0x1933,0x1154,0x1196,0x09B8,0x09D9,0x09D9,0x09DA,0x09D9,0x09D8,0x0997,0x0976,0x0955,0x0955,0x0176,0x09B7,0x09F9,0x09FA,0x09FA,0x09FA,0x09D9,0x09B8,0x0976,0x0954,0x0954,0x0954,0x0975,0x09B7,0x09D9,0x09FA,0x0A1A,0x09F9,0x09D9,0x09B8,0x1196,0x1175,0x0934,0x0934,0x0955,0x0996,0x09D8,0x09F9,0x09F9,0x09F9,0x09D9,0x11D8,0x1197,0x1196,0x0914,0x0114,0x0976,0x09D8,0x09F9,0x01F9,0x01D9,0x01D9,0x09D9,0x09D8,0x11B6,0x1175,0x0113,0x0934,0x0997,0x09B8,0x09FA,0x09FA,0x09D9,0x01B9,0x09B9,0x09B8,0x11B7,0x1175,0x1153,0x1932,0x1111,0x1932,0x1932,0x1974,0x11B6,0x09D8,0x09F9,0x01D9,0x01D9,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01BA,0x01BA,0x09DA,0x09B9,0x11D9,0x1196,0x1154,0x1132,0x1931,0x2131,0x2150,0x2130,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2110,0x290F,0x210F,0x290F,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x212F,0x2930,0x2930,0x210F,0x212F,0x212F,0x2930,0x2130,0x212F,0x2130,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x292F,0x290F,0x2930,0x210F,0x2930,0x212F,0x212F,0x212F, + 0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1951,0x1932,0x1132,0x1133,0x1154,0x1196,0x11B7,0x19F8,0x1A39,0x19F8,0x19D7,0x1196,0x1174,0x1133,0x1912,0x1911,0x2131,0x2131,0x2131,0x2110,0x2110,0x2130,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2910,0x210F,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x2110,0x2110,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x292F,0x292F,0x290F,0x2930,0x290F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2131,0x2131,0x1931,0x1132,0x1154,0x1175,0x1196,0x11D8,0x11F9,0x11F9,0x09D9,0x09D9,0x09D9,0x09D8,0x09D8,0x11F8,0x11D7,0x19B7,0x1175,0x1954,0x1933,0x1912,0x1911,0x1911,0x2110,0x2130,0x2110,0x2930,0x2110,0x210F,0x2930,0x210F,0x2930,0x2110,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x212F,0x292F,0x292F,0x210F,0x292F,0x210F,0x210F,0x2910,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2132,0x1912,0x1112,0x1134,0x1175,0x19D7,0x2218,0x21F8,0x19D7,0x1154,0x0913,0x1112,0x1953,0x1952,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2111,0x1931,0x1931,0x2131,0x1931,0x1931,0x2131,0x2132,0x2131,0x1931,0x1931,0x2131,0x2131,0x2131,0x1911,0x2131,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1932,0x1953,0x1154,0x1195,0x1196,0x11B7,0x11D8,0x11D8,0x11F9,0x11F8,0x1219,0x11F8,0x11F7,0x11F7,0x11B6,0x1195,0x1173,0x1132,0x1931,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x212F,0x212F,0x210F,0x2910,0x28F0,0x28D0,0x2890,0x3850,0x81D7,0xD33E,0xDA9D,0xDA3D,0xEA3E,0xEA1E,0xE9FF,0xF1FF,0xF1DF,0xF1DF,0xF1DF,0xF9FF,0xF1FF,0xF1FF,0xE9FE,0xEA1E,0xEA1E,0xE23E,0xE27E,0xDABD,0xDB9F,0x60F3,0x384F,0x30B0,0x28F0,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x2910,0x210F,0x2910,0x2110,0x2910,0x290F,0x2930,0x2910,0x2930,0x210F,0x210F,0x290F,0x2930,0x212F,0x212F,0x2930,0x290F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x2110,0x2930,0x2110,0x2131,0x1932,0x1113,0x1A18,0x1A39,0x19D8,0x1196,0x1133,0x1932,0x1931,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2110,0x2130,0x2130,0x2131,0x1932,0x0912,0x19F7,0x1A18,0x19F8,0x1155,0x1113,0x1912,0x2111,0x2110,0x2930,0x2110,0x2930,0x292F,0x212F,0x212F,0x292F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3130,0x3130,0x3130,0x3130,0x3150,0x3151,0x3151,0x3151,0x3131,0x3151,0x3151,0x3151,0x3151,0x3971,0x3951,0x3971,0x3972,0x3972,0x4192,0x3972,0x3972,0x4192,0x4192,0x4193,0x4193,0x4193,0x4193,0x4192,0x4992,0x49B3,0x51D3,0x51D3,0x51B3,0x5192,0x59B2,0x59B1,0x61B1,0x696F,0xAB77,0xDC9B,0xDC79,0xDC59,0xDC38,0xDC17,0xDC17,0xDC37,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC16,0xDC17,0xDC16,0xDBF6,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBD6,0xDBD6,0xDBB6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDB96,0xD396,0xD396,0xDB96,0xDB96,0xDBB6,0xDB96,0xDB96,0xDB96,0xDB96,0xDBB7,0xD396,0xCBB7,0xCBD7,0xC3D7,0xB3B7,0xB3B7,0xB3D7,0xBC18,0xB418,0xB417,0xBC58,0xBC38,0xBC18,0xBC17,0xC3F7,0xC3D7,0xC396,0xC376,0xC356,0xCB76,0xD376,0xD376,0xD396,0xCB76,0xCB97,0xBB76,0xB397,0xA397,0xA439,0x947A,0x8C9A,0x84DB,0x84BB,0x84DB,0x8C99,0x9479,0x9C99,0xA499,0x9C38,0x9C58,0x9C58,0x8C58,0x8CBA,0x8D3C,0x959E,0x959F,0x6C5B,0x1170,0x2191,0x31D2,0x39D2,0x41B2,0x39B2,0x4192,0x4192,0x4192,0x4172,0x3971,0x3972,0x3972,0x3971,0x3951,0x3972,0x3951,0x3951,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x3150,0x3150,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x210F,0x2910,0x212F,0x2930,0x210F,0x210F,0x2930,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x2152,0x1932,0x1132,0x1154,0x19D7,0x11F9,0x09D9,0x01BA,0x01DA,0x01FA,0x01FB,0x01DA,0x01B9,0x01DA,0x09D9,0x09D9,0x09D8,0x19D7,0x1995,0x10F2,0x1911,0x2952,0x2131,0x2130,0x2110,0x2130,0x2130,0x212F,0x292F,0x2930,0x2910,0x2910,0x2110,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x212F,0x2930,0x2130,0x2110,0x2111,0x1912,0x1932,0x1154,0x1196,0x11D8,0x09D8,0x09F9,0x09F9,0x09F9,0x09F9,0x0997,0x0156,0x0135,0x0135,0x0996,0x09B7,0x09D8,0x09D8,0x09D8,0x09D8,0x09B8,0x09B8,0x0997,0x0155,0x0955,0x0955,0x0976,0x11B7,0x09B8,0x09D9,0x09D9,0x09D9,0x09D9,0x09D8,0x0976,0x1154,0x1932,0x2131,0x2131,0x2110,0x210F,0x290F,0x292F,0x210F,0x292F,0x212F,0x210F,0x2110,0x2110,0x2111,0x1932,0x1933,0x1154,0x1196,0x09B8,0x09D9,0x09D9,0x09FA,0x09F9,0x09B8,0x0997,0x0976,0x0955,0x0155,0x0996,0x09B7,0x09D9,0x0A1A,0x09FA,0x09FA,0x09D9,0x09B8,0x1196,0x0955,0x0954,0x0955,0x0976,0x09B7,0x09D9,0x0A1A,0x09FA,0x0A1A,0x09D9,0x09B8,0x1196,0x1175,0x1154,0x0934,0x0955,0x0996,0x09D8,0x11F9,0x09F9,0x121A,0x09D9,0x11D8,0x11B7,0x1196,0x0914,0x0934,0x0976,0x09D8,0x09F9,0x09FA,0x01FA,0x09F9,0x09D9,0x09D8,0x1196,0x1175,0x0914,0x0934,0x0997,0x09D8,0x09F9,0x09DA,0x09DA,0x09B9,0x09B9,0x09B8,0x0996,0x1195,0x1153,0x1932,0x1932,0x1932,0x1932,0x1974,0x11D7,0x11F8,0x09D9,0x01DA,0x01B9,0x01DA,0x01FB,0x01FA,0x01DA,0x01BA,0x01DA,0x09DA,0x09BA,0x09B9,0x11B8,0x1175,0x1133,0x1932,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2930,0x212F,0x2130,0x2110,0x2130,0x2110,0x2110,0x290F,0x210F,0x290F,0x210F,0x212F,0x290F,0x290F,0x210F,0x2930,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2110,0x2110,0x290F,0x290F,0x2930,0x290F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2930,0x212F, + 0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x290F,0x290F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2910,0x2910,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2151,0x1952,0x1932,0x1132,0x1133,0x1155,0x1196,0x11D8,0x1A19,0x1A19,0x19F8,0x19D7,0x1196,0x1154,0x1133,0x1912,0x1912,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2910,0x210F,0x2110,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x2130,0x2930,0x2110,0x2110,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x292F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x212F,0x212F,0x292F,0x2930,0x210F,0x210F,0x212F,0x212F,0x290F,0x292F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1153,0x1175,0x1196,0x11D8,0x11F8,0x11F9,0x09D9,0x09D9,0x09B8,0x11D8,0x11B8,0x11B7,0x1196,0x1175,0x1975,0x1953,0x1112,0x1912,0x1912,0x1911,0x2131,0x2131,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x2130,0x2130,0x210F,0x2110,0x2130,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x292F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1912,0x1133,0x1133,0x1975,0x19D6,0x21F7,0x21F7,0x21D7,0x1995,0x0913,0x0912,0x10F2,0x1112,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x10F1,0x1111,0x1911,0x1111,0x1111,0x1111,0x1111,0x1111,0x1932,0x1932,0x1912,0x1912,0x1111,0x1112,0x10F1,0x10F1,0x1912,0x1911,0x1911,0x1912,0x10F1,0x10F1,0x10F1,0x10F2,0x10F2,0x10F2,0x10F2,0x1112,0x1113,0x0934,0x0955,0x0976,0x0997,0x09B8,0x09B8,0x09D9,0x09D9,0x09F9,0x09F9,0x09F9,0x1219,0x1218,0x11D7,0x11B6,0x1194,0x1152,0x1111,0x1931,0x2151,0x2131,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x292F,0x290F,0x2930,0x2910,0x28D0,0x308F,0x3830,0x9219,0xD2FE,0xDA5D,0xE25E,0xF25F,0xEA1F,0xF1FF,0xF1FF,0xF1FF,0xF1DF,0xF9DF,0xF9FF,0xF9FF,0xF1FF,0xF1FF,0xF21F,0xF23F,0xF25F,0xE25E,0xDA7D,0xD31E,0x7135,0x380F,0x3090,0x28D0,0x2910,0x20EF,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x292F,0x210F,0x210F,0x2930,0x212F,0x2930,0x212F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2131,0x1912,0x1113,0x19F7,0x1A39,0x19D8,0x1176,0x1133,0x1932,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x1931,0x1932,0x1133,0x19F7,0x1A18,0x1A18,0x1175,0x1113,0x1912,0x2111,0x2110,0x2930,0x2930,0x290F,0x292F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3130,0x3150,0x3130,0x3150,0x3150,0x3130,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3152,0x3151,0x3151,0x3972,0x3972,0x3972,0x3972,0x3972,0x3952,0x3972,0x3992,0x4192,0x4192,0x4193,0x4192,0x4193,0x4192,0x49B3,0x49B3,0x51D3,0x51D3,0x51B3,0x51B2,0x51B2,0x5992,0x5991,0x596F,0x6990,0xBBD8,0xDCBB,0xDC79,0xDC58,0xD417,0xDC17,0xDC37,0xDC38,0xDC17,0xDC17,0xDC37,0xDC17,0xDC17,0xDC17,0xDC17,0xDC16,0xDC17,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xD395,0xDB96,0xDB96,0xDBB6,0xDBB6,0xDBB6,0xDB95,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xD376,0xDB96,0xDB76,0xDB76,0xDB76,0xDB76,0xD396,0xD396,0xD396,0xCBB7,0xCBB7,0xC3D7,0xC3B7,0xBBB6,0xB396,0xBBF7,0xBBF7,0xBBF7,0xB3F7,0xBC18,0xBC38,0xBC18,0xBBF7,0xBBF7,0xBBB7,0xC396,0xC355,0xC336,0xD376,0xCB76,0xCB76,0xCB97,0xCB97,0xBB76,0xB376,0xAB97,0xA418,0x9C5A,0x949A,0x8C7A,0x8459,0x8438,0x83D7,0x9479,0x9C99,0x9C99,0x9499,0x94DA,0x953B,0x8D3C,0x8D7D,0x8D5D,0x74BC,0x19D1,0x21B1,0x31D2,0x41F3,0x41D2,0x41B2,0x41D3,0x4192,0x4192,0x4192,0x4192,0x4192,0x4172,0x3971,0x3972,0x3972,0x3992,0x3972,0x3972,0x3951,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x3130,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x2930,0x210F,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x2110,0x2110,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2131,0x2131,0x1912,0x1112,0x1175,0x19F8,0x11F9,0x09D9,0x0199,0x01BA,0x01DA,0x01FA,0x01DA,0x01DA,0x01B9,0x09DA,0x09B9,0x09B8,0x11D7,0x21F6,0x08F2,0x1911,0x2152,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x212F,0x2930,0x2910,0x2930,0x210F,0x292F,0x2930,0x290F,0x210F,0x210F,0x2910,0x2910,0x210F,0x290F,0x2910,0x210F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2910,0x2930,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2130,0x2110,0x2110,0x2131,0x1912,0x1932,0x1154,0x1196,0x11D8,0x09D8,0x09D9,0x09D9,0x09F9,0x09D9,0x09B8,0x0176,0x0135,0x0135,0x0976,0x09B7,0x09F8,0x09D9,0x09D8,0x09D8,0x09B8,0x09B8,0x0997,0x0155,0x0955,0x0135,0x0976,0x0997,0x09B8,0x09D9,0x09D8,0x09D8,0x09D8,0x09D8,0x0995,0x0933,0x1132,0x1931,0x2131,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2111,0x1911,0x1933,0x1154,0x1176,0x09B8,0x09F9,0x09F9,0x09F9,0x09D9,0x09D8,0x09B7,0x0956,0x0955,0x0155,0x0176,0x09B7,0x09D9,0x09FA,0x09FA,0x09D9,0x09D9,0x09B8,0x0976,0x0954,0x0934,0x0955,0x0976,0x0997,0x09B8,0x09F9,0x09F9,0x09F9,0x09D8,0x09B7,0x11B6,0x1175,0x1154,0x0934,0x0975,0x0996,0x09D8,0x09F9,0x09F9,0x121A,0x09D9,0x09B8,0x11B7,0x1196,0x0934,0x0114,0x0176,0x09D8,0x09F9,0x09FA,0x09FA,0x09D9,0x09D9,0x09B8,0x11B7,0x1175,0x0914,0x0955,0x0997,0x09B8,0x09D9,0x09FA,0x09DA,0x09D9,0x09B9,0x09B8,0x0996,0x1154,0x1133,0x1132,0x1932,0x1931,0x1932,0x1954,0x11B6,0x11F8,0x09F9,0x01D9,0x0199,0x01BA,0x01DA,0x01DA,0x01BA,0x01BA,0x01BA,0x09DA,0x09D9,0x11D9,0x1197,0x1155,0x1112,0x1931,0x1911,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2930,0x292F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x2110,0x2110,0x2930,0x2930,0x290F,0x290F,0x210F,0x2110,0x210F,0x210F,0x2910,0x210F,0x290F,0x290F,0x210F,0x2910,0x210F,0x210F,0x290F,0x2930,0x2930,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2910,0x2930,0x2930,0x290F,0x210F,0x292F, + 0x212F,0x212F,0x210F,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x2910,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2150,0x1931,0x1931,0x1932,0x1132,0x1154,0x1175,0x11B7,0x11D8,0x1A19,0x1A19,0x19F8,0x11D7,0x1196,0x1175,0x1133,0x1932,0x1912,0x1931,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x2110,0x2930,0x212F,0x2930,0x290F,0x290F,0x2930,0x292F,0x210F,0x210F,0x292F,0x212F,0x210F,0x2930,0x2130,0x212F,0x2930,0x210F,0x212F,0x290F,0x290F,0x210F,0x290F,0x292F,0x210F,0x292F,0x212F,0x292F,0x212F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x292F,0x212F,0x292F,0x210F,0x290F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x210F,0x210F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2131,0x1931,0x1932,0x1153,0x1174,0x11B6,0x11D7,0x11F8,0x1219,0x11F8,0x11D8,0x11D8,0x11B7,0x11B7,0x1196,0x1155,0x1154,0x1133,0x1132,0x1912,0x1912,0x1911,0x1911,0x2131,0x2131,0x2130,0x2930,0x2910,0x210F,0x210F,0x210F,0x2910,0x2930,0x210F,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2110,0x2930,0x292F,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1932,0x1932,0x1132,0x1153,0x1174,0x19D6,0x21F7,0x21F7,0x21D7,0x21B6,0x1154,0x0913,0x1113,0x0912,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x10F2,0x10F2,0x08F2,0x08F2,0x1112,0x1112,0x1112,0x1112,0x10F2,0x10F2,0x1112,0x1112,0x10F2,0x1112,0x10F2,0x1112,0x1112,0x10F2,0x10F2,0x10F2,0x10F2,0x1112,0x1113,0x1133,0x1133,0x1134,0x1154,0x1175,0x0976,0x09B7,0x09D8,0x09D9,0x09D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x09D9,0x09F8,0x11D8,0x11B7,0x19B6,0x1994,0x1112,0x1931,0x1931,0x2130,0x1910,0x2130,0x2130,0x2130,0x210F,0x2930,0x212F,0x2930,0x2910,0x3110,0x28D0,0x286F,0x380F,0x9219,0xD2FE,0xDA7D,0xEA5E,0xEA3E,0xF21F,0xF21F,0xFA1F,0xF9FF,0xF9FF,0xF9FF,0xF9DF,0xF9FF,0xF9FF,0xF1FF,0xFA1F,0xF23F,0xEA1E,0xEA5E,0xDA7D,0xDB1F,0x89B7,0x380F,0x3090,0x30D0,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x2930,0x2910,0x210F,0x290F,0x290F,0x210F,0x2910,0x2110,0x210F,0x2110,0x2110,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x212F,0x2130,0x210F,0x212F,0x2130,0x210F,0x210F,0x2930,0x2910,0x2110,0x212F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1932,0x1113,0x1A18,0x1A19,0x19D8,0x1176,0x1133,0x1932,0x2131,0x2110,0x2130,0x212F,0x210F,0x2130,0x212F,0x2950,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x1931,0x1932,0x1113,0x19F7,0x1A18,0x19F8,0x1175,0x1113,0x1912,0x2131,0x2131,0x2130,0x2930,0x290F,0x292F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x2930,0x3150,0x3130,0x3150,0x3130,0x3150,0x3150,0x3151,0x3151,0x3171,0x3151,0x3151,0x3171,0x3151,0x3971,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4993,0x49B3,0x49B3,0x51D3,0x51B3,0x51B3,0x5192,0x5192,0x5991,0x5991,0x592F,0x7A32,0xCC59,0xDCBB,0xDC79,0xD438,0xDC38,0xDC38,0xDC17,0xDC37,0xDC37,0xDBF7,0xDC17,0xDC17,0xDC17,0xDC17,0xDBF6,0xDC17,0xDC16,0xDC16,0xDBF6,0xDBF6,0xDC16,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBD6,0xDBB6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDBB6,0xDBB6,0xDB96,0xDB96,0xDBB6,0xDB96,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDB96,0xDB96,0xDB76,0xDB76,0xDB76,0xDB96,0xD376,0xDB96,0xD376,0xD396,0xCB96,0xCB96,0xCB96,0xC3B6,0xC3B7,0xBB96,0xBBB6,0xBBD7,0xBBF7,0xBBF8,0xB3F7,0xBC38,0xBC18,0xBC17,0xBBF7,0xC3F8,0xC396,0xC336,0xCB56,0xCB76,0xCB97,0xCB76,0xCB76,0xCB76,0xC376,0xB376,0xB3D8,0xA3F8,0xA459,0x9C7A,0x9459,0x8C39,0x8C38,0x8417,0x8C38,0x8C79,0x94BA,0x951B,0x955D,0x957D,0x959E,0x8D3D,0x3252,0x2190,0x31B1,0x39D2,0x49F3,0x41B2,0x49D2,0x49B2,0x49B2,0x4192,0x4192,0x4172,0x4172,0x4172,0x4192,0x3972,0x3972,0x3972,0x3972,0x3992,0x3972,0x3151,0x3972,0x3151,0x3151,0x3171,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3130,0x3130,0x3150,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x290F,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x2910,0x2910,0x2930,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x2110,0x2110,0x2131,0x2111,0x1911,0x1132,0x1995,0x19F8,0x1219,0x09DA,0x01BA,0x01BA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x09DA,0x09D9,0x11D8,0x11D7,0x21F6,0x1112,0x1111,0x2152,0x2131,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x210F,0x2930,0x2930,0x290F,0x292F,0x212F,0x210F,0x2930,0x212F,0x2110,0x2930,0x2910,0x210F,0x2930,0x2910,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x292F,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x292F,0x292F,0x210F,0x290F,0x212F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1912,0x1933,0x1154,0x1196,0x11F8,0x09D8,0x09D9,0x09F9,0x01D9,0x09D8,0x09B8,0x0156,0x0155,0x0135,0x0976,0x11D8,0x09D8,0x09F9,0x09D8,0x09D8,0x09B8,0x09D8,0x0996,0x0155,0x0955,0x0975,0x0976,0x0997,0x09D8,0x09D9,0x09D8,0x09D8,0x09D8,0x09D7,0x0995,0x0953,0x1132,0x1951,0x2131,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2131,0x1932,0x1933,0x1154,0x1196,0x11D8,0x09D9,0x09D9,0x09F9,0x09D9,0x11D8,0x0997,0x0955,0x0955,0x0975,0x0976,0x09B7,0x09F9,0x09F9,0x09FA,0x11FA,0x11F9,0x11B8,0x0996,0x0954,0x0954,0x0955,0x0976,0x0997,0x09D9,0x09F9,0x09F9,0x09F9,0x09D8,0x09B7,0x1196,0x1175,0x0954,0x0954,0x0975,0x0996,0x11D8,0x09F9,0x09F9,0x121A,0x09D8,0x09B8,0x0997,0x1196,0x0934,0x0134,0x0976,0x09D8,0x09F9,0x09F9,0x09F9,0x09F9,0x09D9,0x09B8,0x1196,0x1175,0x0914,0x0934,0x0997,0x09B8,0x09D9,0x09FA,0x09DA,0x09D9,0x09D9,0x09B8,0x1196,0x1154,0x1153,0x1932,0x1911,0x1931,0x1932,0x1953,0x1175,0x11D8,0x09F9,0x01D9,0x01B9,0x01B9,0x01B9,0x01BA,0x01BA,0x01B9,0x01B9,0x09B9,0x09D9,0x11D8,0x1196,0x1154,0x1932,0x1931,0x1931,0x2110,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x210F,0x2910,0x210F,0x210F,0x290F,0x290F,0x2110,0x2110,0x2910,0x2910,0x210F,0x2930,0x2930,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x2910,0x290F,0x2930,0x292F,0x292F, + 0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2110,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x2930,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x210F,0x2930,0x210F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x2930,0x2130,0x2110,0x2110,0x2110,0x2910,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2150,0x2130,0x2151,0x2152,0x1932,0x1132,0x1134,0x1175,0x11B6,0x11D8,0x1A18,0x19F8,0x19F8,0x11D7,0x11B6,0x1154,0x1133,0x1132,0x1932,0x1931,0x2131,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x2130,0x2930,0x292F,0x210F,0x210F,0x290F,0x290F,0x2930,0x292F,0x2930,0x292F,0x2930,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x292F,0x292F,0x212F,0x292F,0x292F,0x212F,0x210F,0x292F,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x292F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x292F,0x292F,0x292F,0x290F,0x290F,0x212F,0x212F,0x292F,0x212F,0x292F,0x212F,0x2930,0x2130,0x2130,0x212F,0x210F,0x290F,0x212F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1111,0x1133,0x1174,0x1196,0x11D7,0x11F8,0x11F8,0x1219,0x1219,0x11D8,0x11B7,0x1175,0x1154,0x1154,0x1133,0x1132,0x1112,0x1911,0x1911,0x1911,0x1911,0x2131,0x2110,0x2130,0x2130,0x2930,0x2910,0x2910,0x210F,0x2110,0x210F,0x210F,0x290F,0x2910,0x2910,0x2930,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2131,0x2152,0x1932,0x1912,0x1132,0x1133,0x1995,0x21D6,0x21F7,0x21D7,0x1996,0x21B6,0x21D6,0x21D6,0x21D5,0x21B5,0x19B5,0x1994,0x1994,0x1994,0x1994,0x1974,0x1974,0x1994,0x1974,0x1974,0x1974,0x1974,0x1974,0x1994,0x1994,0x1974,0x1994,0x1994,0x1995,0x1995,0x1994,0x1994,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x21D6,0x21D6,0x19D6,0x19D7,0x19F7,0x11D7,0x11F8,0x09F8,0x09F9,0x01D9,0x01D9,0x01DA,0x01D9,0x01DA,0x01DA,0x01B9,0x01D9,0x09D9,0x09D8,0x11D8,0x19D7,0x19B5,0x1953,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x2930,0x2930,0x2910,0x28F0,0x28D0,0x3090,0x3830,0x9A39,0xDB1E,0xDA7D,0xE23E,0xEA1E,0xF1FE,0xF1FF,0xF9FF,0xF9DF,0xF9FF,0xF9DF,0xF9DF,0xF9FF,0xF9FF,0xF9FF,0xF1FF,0xF1FE,0xEA1E,0xE23E,0xDA7E,0xDB3F,0x91F8,0x380F,0x306F,0x28D0,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2930,0x2930,0x210F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x210F,0x2110,0x210F,0x290F,0x210F,0x212F,0x212F,0x2110,0x2130,0x2131,0x1932,0x1133,0x2218,0x1A39,0x19F8,0x1176,0x1113,0x1911,0x2111,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x2110,0x2930,0x2910,0x2130,0x2110,0x2131,0x1932,0x1133,0x19F7,0x1A18,0x19F8,0x1175,0x1112,0x1932,0x2111,0x2110,0x2930,0x2930,0x292F,0x292F,0x292F,0x212F,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x2930,0x2910,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x3150,0x3130,0x3150,0x3150,0x3151,0x3151,0x3151,0x3151,0x3171,0x3171,0x3972,0x3971,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x4172,0x4193,0x4993,0x49B3,0x49B3,0x49B3,0x4992,0x4992,0x5192,0x5192,0x5171,0x5171,0x5991,0x5970,0x616F,0x9B15,0xE51D,0xDC9A,0xDC79,0xD438,0xDC38,0xDC38,0xDC37,0xDC37,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDBF6,0xDBF6,0xDBF6,0xDC17,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xD3D6,0xDBD6,0xDBD6,0xDBD6,0xD3D6,0xDBD6,0xDBD6,0xDBB6,0xD3B6,0xD3B6,0xDBB6,0xDBB6,0xD3B6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xD396,0xDBB6,0xD396,0xDB96,0xDB96,0xDBB6,0xD396,0xD376,0xD376,0xDB96,0xDB76,0xDB96,0xDB96,0xDB76,0xDB96,0xDB76,0xDB96,0xD376,0xD376,0xD376,0xD396,0xD396,0xCB96,0xCB96,0xCB96,0xC396,0xBB96,0xBB96,0xBBB7,0xBBF7,0xB3D7,0xB3D7,0xBC18,0xBBF8,0xB3B7,0xBBD7,0xC3B7,0xC356,0xC356,0xC356,0xCB76,0xCB56,0xCB56,0xC376,0xBB56,0xB356,0xB3D7,0xAC39,0xA439,0x9C59,0x9439,0x8C59,0x94BA,0x8438,0x5AF3,0x7C39,0x8CFB,0x8CFC,0x955D,0x8CDC,0x52F5,0x31B0,0x41D1,0x49F2,0x51F3,0x49B2,0x4992,0x4992,0x4992,0x4972,0x4992,0x49B3,0x4172,0x4172,0x4172,0x3972,0x3972,0x4192,0x3972,0x3972,0x3971,0x3972,0x3971,0x3971,0x3951,0x3951,0x3151,0x3151,0x3151,0x3151,0x3131,0x3151,0x3131,0x3131,0x3130,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x290F,0x2930,0x2930,0x2930,0x2110,0x210F,0x212F,0x2930,0x2930,0x2930,0x210F,0x212F,0x210F,0x2930,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1132,0x1995,0x19F8,0x11F9,0x09DA,0x01DA,0x01BA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x09B9,0x09B9,0x11B8,0x11D7,0x21D6,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x2110,0x210F,0x212F,0x212F,0x2130,0x212F,0x2930,0x2930,0x212F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x212F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2930,0x2910,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x2930,0x2130,0x2130,0x2110,0x2131,0x2131,0x1932,0x1933,0x1154,0x1175,0x11D7,0x09D8,0x09D9,0x09F9,0x09D8,0x09D8,0x0197,0x0156,0x0155,0x0135,0x0976,0x09B7,0x09D8,0x01D8,0x09D8,0x09D8,0x09D8,0x09D8,0x0997,0x0155,0x0135,0x0134,0x0976,0x0997,0x09B8,0x09D8,0x09D8,0x09F8,0x09F8,0x09D7,0x0995,0x1154,0x1952,0x1931,0x1931,0x2130,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1932,0x1933,0x1154,0x1196,0x11D8,0x09D9,0x09D9,0x09F9,0x09D9,0x09B8,0x0997,0x0955,0x0935,0x0955,0x0156,0x0997,0x09F9,0x09F9,0x09D9,0x09D9,0x09B8,0x0997,0x1196,0x0955,0x0974,0x0955,0x0976,0x0997,0x09D9,0x09F9,0x09F9,0x09F9,0x09B8,0x0997,0x1196,0x1175,0x0934,0x0954,0x0975,0x0996,0x09D8,0x09D8,0x1219,0x09F9,0x11D9,0x09B8,0x11B7,0x1196,0x0934,0x0134,0x0976,0x09D8,0x09F9,0x09F9,0x01D9,0x09D9,0x09B8,0x0997,0x1196,0x1175,0x0934,0x0934,0x0996,0x09B8,0x09F9,0x09FA,0x09D9,0x09D9,0x09B9,0x09B8,0x1196,0x1175,0x1953,0x1932,0x1931,0x1911,0x1912,0x1933,0x1155,0x11B7,0x09D8,0x09D9,0x01B9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x09F9,0x09F9,0x11D8,0x11B7,0x19B6,0x1953,0x1932,0x1931,0x2131,0x2130,0x2130,0x210F,0x2110,0x210F,0x212F,0x212F,0x2930,0x2930,0x212F,0x210F,0x210F,0x2930,0x2130,0x2110,0x2930,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x210F,0x2930,0x2110,0x2930,0x290F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x2930,0x2930, + 0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x210F,0x2930,0x290F,0x290F,0x292F,0x212F,0x290F,0x2930,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x292F,0x290F,0x212F,0x212F,0x2930,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x292F,0x210F,0x292F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2131,0x2151,0x1911,0x1932,0x1132,0x1154,0x1175,0x11B6,0x11D7,0x1A19,0x1A19,0x11F8,0x11F8,0x11B6,0x1174,0x1153,0x1132,0x1911,0x2131,0x2111,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x212F,0x292F,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x212F,0x212F,0x292F,0x292F,0x212F,0x292F,0x290F,0x292F,0x210F,0x292F,0x212F,0x210F,0x292F,0x212F,0x210F,0x212F,0x210F,0x210F,0x292F,0x290F,0x292F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x292F,0x212F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x292F,0x210F,0x292F,0x292F,0x292F,0x212F,0x2130,0x2130,0x2130,0x210F,0x290F,0x290F,0x292F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1133,0x1174,0x1195,0x11B7,0x11F8,0x1A19,0x1A19,0x11F8,0x19F8,0x11B6,0x1175,0x1154,0x1154,0x1112,0x1112,0x1912,0x1911,0x1911,0x1911,0x2110,0x2110,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x2930,0x2910,0x210F,0x2910,0x210F,0x2910,0x2930,0x292F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x212F,0x210F,0x2110,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x2131,0x1931,0x1931,0x1132,0x1133,0x1974,0x21B6,0x21D6,0x21B6,0x21B6,0x21D6,0x2A17,0x2A17,0x2A17,0x2A37,0x3237,0x3237,0x3257,0x3258,0x3257,0x3258,0x3258,0x3258,0x3237,0x3257,0x3258,0x3237,0x3237,0x3237,0x3237,0x2A37,0x2A37,0x3237,0x2A37,0x2A37,0x2A16,0x2A37,0x2A37,0x2A37,0x2A17,0x2A37,0x2217,0x2217,0x21F7,0x19F7,0x19F7,0x19F7,0x11D8,0x11F8,0x09D8,0x09F9,0x01D9,0x01D9,0x01DA,0x01DA,0x01BA,0x01DA,0x0199,0x01DA,0x09D9,0x09B8,0x11D8,0x11B7,0x19D6,0x1133,0x1911,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x290F,0x2910,0x2910,0x28F0,0x28D0,0x3090,0x3830,0x9239,0xD33E,0xDA9D,0xE25E,0xEA3F,0xF21F,0xF1FF,0xF9FF,0xF9FF,0xF9FF,0xF9FF,0xF9DF,0xF9DF,0xF9FF,0xF9FF,0xF9FF,0xF1FE,0xEA1E,0xEA3E,0xE29E,0xDB5F,0x89F8,0x382F,0x3090,0x28CF,0x28EF,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x290F,0x2930,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x210F,0x2130,0x2110,0x2910,0x290F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1911,0x1112,0x2218,0x1A39,0x19F8,0x1176,0x1113,0x1932,0x2131,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x2130,0x210F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2131,0x2131,0x1912,0x1113,0x19D7,0x2219,0x19D7,0x1196,0x1112,0x1932,0x2131,0x2130,0x2130,0x212F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x3150,0x3150,0x3150,0x3151,0x3151,0x3151,0x3151,0x3171,0x3171,0x3972,0x3972,0x3971,0x3972,0x3972,0x3972,0x4192,0x3972,0x3972,0x3972,0x3972,0x4193,0x4192,0x49B3,0x49B3,0x4993,0x49B3,0x49B2,0x5192,0x5192,0x5172,0x5151,0x5971,0x5991,0x594F,0x71D0,0xCC5A,0xDCDB,0xDC7A,0xDC79,0xDC58,0xDC38,0xD417,0xDC17,0xDC37,0xDC37,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC16,0xDBF6,0xDC17,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDC17,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBF6,0xD3D6,0xDBD6,0xD3D6,0xD3D6,0xD3D6,0xDBD6,0xDBD6,0xD3D6,0xD3B6,0xD3B6,0xD3B6,0xD3D6,0xD3B6,0xDBD6,0xD3B6,0xD3B6,0xD3B6,0xDBB6,0xD3B6,0xD3B6,0xD396,0xDBB6,0xDB96,0xD396,0xD375,0xD376,0xDB96,0xDB96,0xDB76,0xDB76,0xDB76,0xDB76,0xDB96,0xDB76,0xDB76,0xD376,0xD376,0xD396,0xD376,0xD396,0xD376,0xD396,0xCB96,0xCB96,0xC397,0xBB76,0xBBB7,0xBBD7,0xBBD7,0xB3D7,0xB3D7,0xB3B7,0xBBB7,0xBBB7,0xC3B7,0xBB76,0xC397,0xC376,0xC356,0xCB76,0xC335,0xCB76,0xBB76,0xB376,0xB3D7,0xB459,0xA47A,0x9459,0x8C7A,0x94DB,0x8CBA,0x7C39,0x5314,0x5B76,0x847A,0x849A,0x6B76,0x6B15,0x6294,0x51B0,0x494F,0x5191,0x5192,0x5191,0x5171,0x5192,0x4992,0x4972,0x4992,0x4992,0x4172,0x4192,0x4192,0x4172,0x4172,0x4192,0x3972,0x3972,0x3972,0x3951,0x3972,0x3952,0x3972,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3131,0x3131,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x1911,0x1112,0x1974,0x19D7,0x11B8,0x09D9,0x09DA,0x01BA,0x01BA,0x01DA,0x01FB,0x09FA,0x01DA,0x09B9,0x11D9,0x11B8,0x19D7,0x21D6,0x1112,0x1911,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x212F,0x210F,0x212F,0x2130,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x2110,0x2130,0x2130,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2930,0x210F,0x210F,0x2910,0x290F,0x290F,0x210F,0x290F,0x210F,0x212F,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x290F,0x290F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x1931,0x1932,0x1132,0x1154,0x1195,0x11D7,0x09F8,0x09F9,0x09F9,0x09D8,0x09D8,0x09B7,0x0176,0x0135,0x0135,0x0976,0x0997,0x09F8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D7,0x0996,0x0155,0x0134,0x0134,0x0975,0x09B7,0x09B8,0x09D8,0x09D8,0x09F8,0x09F8,0x11D7,0x0995,0x1154,0x1153,0x1931,0x1931,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1932,0x1953,0x1154,0x1196,0x11D8,0x11D9,0x09D9,0x09D9,0x11D9,0x09B8,0x0996,0x0955,0x0955,0x0935,0x0976,0x0997,0x09F9,0x09F9,0x09F9,0x09F9,0x11D9,0x11B8,0x0996,0x0975,0x0954,0x0975,0x0976,0x0997,0x09D8,0x09F9,0x09F9,0x09F9,0x11D8,0x11B7,0x1196,0x1175,0x1154,0x0934,0x0975,0x0996,0x09D8,0x09F9,0x09F9,0x1219,0x11F9,0x09B7,0x0996,0x1196,0x0934,0x0934,0x0976,0x09B8,0x09F9,0x09F9,0x09F9,0x09D9,0x09D8,0x0997,0x1196,0x1175,0x0934,0x0934,0x0976,0x09D8,0x09D9,0x09D9,0x09FA,0x09D9,0x09B8,0x11B8,0x1196,0x1174,0x1953,0x1932,0x1911,0x1911,0x1932,0x1932,0x1975,0x11B6,0x11D8,0x09D9,0x09D9,0x09D8,0x01B8,0x09D9,0x01D8,0x09F8,0x09F8,0x11D8,0x19F7,0x19B6,0x1154,0x1933,0x1931,0x1931,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x290F,0x290F,0x210F,0x2110,0x290F,0x290F,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930, + 0x212F,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x2930,0x290F,0x290F,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2930,0x290F,0x210F,0x290F,0x2110,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x2930,0x2930,0x292F,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x2110,0x2130,0x2110,0x2110,0x1911,0x1911,0x1932,0x1154,0x1175,0x1196,0x11D7,0x11F8,0x1A18,0x11D7,0x11D7,0x11B6,0x0974,0x1153,0x1132,0x1931,0x1931,0x1910,0x1910,0x2130,0x2130,0x2150,0x2930,0x2130,0x2930,0x210F,0x210F,0x290F,0x210F,0x290F,0x292F,0x292F,0x292F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x210F,0x290F,0x292F,0x210F,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x290F,0x210F,0x292F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x210F,0x290F,0x292F,0x292F,0x292F,0x2930,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1932,0x1133,0x1154,0x1175,0x11B7,0x11D8,0x11F9,0x11F8,0x19F8,0x11B7,0x1196,0x1175,0x1154,0x1953,0x1132,0x1111,0x1911,0x1931,0x2131,0x2151,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2930,0x2910,0x2110,0x210F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x2151,0x1931,0x1932,0x1132,0x1974,0x1995,0x21D7,0x21D7,0x21F6,0x21D6,0x21D6,0x21D6,0x21F6,0x21F6,0x29F6,0x21F6,0x2A16,0x2A16,0x29F6,0x29F6,0x29F6,0x29F6,0x29F6,0x29F6,0x29F6,0x29F6,0x2A16,0x21D6,0x21F6,0x29F6,0x29F6,0x21F6,0x21F6,0x29F6,0x29F6,0x21F6,0x21F6,0x21F6,0x21F6,0x19D6,0x21F6,0x21F7,0x19D7,0x11B7,0x11B7,0x09B7,0x09D8,0x09D8,0x01D9,0x01D9,0x01DA,0x01DA,0x01BA,0x01BA,0x01DB,0x01DB,0x01BA,0x09B9,0x09B9,0x11D8,0x19D7,0x19B6,0x1132,0x1932,0x1931,0x1931,0x1910,0x2130,0x210F,0x2130,0x210F,0x210F,0x2910,0x210F,0x2910,0x28F0,0x28D0,0x3090,0x3850,0x89F8,0xCB1E,0xDA9D,0xE27E,0xEA3F,0xF23F,0xFA3F,0xF9FF,0xF9FF,0xF9DF,0xF9FF,0xF9FF,0xF9FF,0xF9DF,0xF1FF,0xFA1F,0xF23F,0xEA3E,0xE23E,0xDA9E,0xD31E,0x7976,0x3850,0x30B0,0x28CF,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x210F,0x2930,0x2930,0x290F,0x210F,0x290F,0x2110,0x2110,0x290F,0x210F,0x210F,0x290F,0x212F,0x212F,0x292F,0x212F,0x210F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x292F,0x212F,0x210F,0x212F,0x2130,0x2130,0x1911,0x1132,0x2238,0x2239,0x19F8,0x1176,0x1133,0x1932,0x2131,0x2110,0x2130,0x2130,0x210F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x2110,0x2910,0x2910,0x2110,0x2111,0x1912,0x1113,0x19D7,0x2218,0x19F7,0x1175,0x1112,0x1911,0x2130,0x2130,0x2130,0x2930,0x292F,0x292F,0x210F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3130,0x3150,0x3150,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x4192,0x4192,0x4192,0x4192,0x4192,0x4193,0x4192,0x4192,0x4993,0x49B3,0x51B2,0x51B2,0x5171,0x5171,0x5991,0x6191,0x5950,0x6990,0x9B15,0xE51C,0xDC9A,0xD459,0xDC79,0xDC58,0xDC37,0xDC58,0xDC37,0xDC37,0xDC17,0xDC17,0xDC16,0xDC16,0xDC17,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDBF6,0xDC16,0xDC16,0xD3F6,0xDC17,0xDC17,0xD3F7,0xDC17,0xD3F6,0xD3F6,0xD3F6,0xD3F6,0xD3F6,0xD3F6,0xD3D6,0xD3D6,0xD3F6,0xD3F6,0xD3F6,0xD3D6,0xD3F6,0xD3F7,0xD3F6,0xD3D6,0xD3B6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3B6,0xD3B6,0xD3D6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD396,0xD396,0xD396,0xD396,0xD396,0xD396,0xDB96,0xDB96,0xDB75,0xDB76,0xDB76,0xDB76,0xD335,0xD355,0xD355,0xD376,0xD376,0xD376,0xD376,0xD396,0xD376,0xD376,0xD376,0xCB96,0xCB97,0xC376,0xBB76,0xBB96,0xBBB7,0xBBB7,0xBBD7,0xBBB7,0xBBB7,0xBBB7,0xBB97,0xBB76,0xC376,0xCB97,0xCB96,0xCB76,0xCB56,0xC376,0xBB55,0xB356,0xA397,0xA419,0xA4BB,0x949A,0x847A,0x84DB,0x8CFB,0x8CFB,0x6BD7,0x5B14,0x6B55,0x8BF8,0xA439,0xAC3A,0xABD9,0x92F5,0x71D2,0x5950,0x5951,0x5992,0x5992,0x5192,0x5192,0x4992,0x4992,0x4992,0x4172,0x4193,0x4172,0x4192,0x4192,0x4192,0x3972,0x3972,0x3972,0x3971,0x3951,0x3972,0x3972,0x3952,0x3971,0x3971,0x3151,0x3151,0x3151,0x3131,0x3131,0x3151,0x3130,0x3130,0x2930,0x2930,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x290F,0x2910,0x2110,0x212F,0x212F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x212F,0x292F,0x2130,0x210F,0x2130,0x2110,0x2131,0x1911,0x1132,0x1994,0x19D7,0x11B7,0x09B8,0x09DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x09FA,0x09FA,0x11D9,0x11B8,0x19B6,0x1154,0x1112,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x210F,0x210F,0x2930,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x210F,0x290F,0x2930,0x2910,0x2930,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x1911,0x1132,0x1153,0x1195,0x11D7,0x11F8,0x09D8,0x09D8,0x09F8,0x09F8,0x09B7,0x0156,0x0135,0x0134,0x0955,0x09B7,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D7,0x09B7,0x0155,0x0955,0x0954,0x0975,0x0996,0x09D7,0x09F8,0x09D8,0x09D8,0x09F7,0x11D7,0x1195,0x1154,0x1152,0x1932,0x1931,0x2130,0x2110,0x210F,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1154,0x1176,0x11B8,0x11D9,0x11D9,0x11D9,0x11D8,0x11B8,0x1197,0x0955,0x0955,0x0955,0x0975,0x09B7,0x09D8,0x09F9,0x09F9,0x11F9,0x11D8,0x0997,0x0975,0x0975,0x1154,0x0954,0x0976,0x0997,0x09D8,0x09F9,0x09F9,0x11F9,0x11D8,0x1197,0x1196,0x1175,0x0954,0x0954,0x0975,0x0996,0x09D7,0x11F8,0x09F8,0x11F9,0x09D8,0x09B7,0x11B6,0x11B6,0x0934,0x0934,0x0976,0x09D7,0x09D8,0x09F9,0x09F9,0x09D9,0x09B8,0x0997,0x11B6,0x1195,0x0934,0x0934,0x0976,0x09B7,0x09D8,0x09D9,0x09F9,0x09D9,0x09D8,0x09B7,0x1196,0x1974,0x1932,0x1911,0x1911,0x18F0,0x1911,0x1912,0x1954,0x1195,0x19D8,0x11F8,0x11F8,0x11F8,0x1219,0x09F8,0x1219,0x1218,0x1218,0x19F7,0x1175,0x1133,0x1112,0x1911,0x1931,0x1930,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2910,0x2910,0x2110,0x2110,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x2910,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930, + 0x212F,0x212F,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2930,0x290F,0x210F,0x2910,0x2930,0x290F,0x292F,0x290F,0x292F,0x210F,0x210F,0x290F,0x210F,0x2910,0x290F,0x210F,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x2110,0x2110,0x2110,0x2131,0x1911,0x1931,0x1132,0x1153,0x1175,0x11B6,0x11F7,0x11F8,0x1218,0x11F8,0x11D7,0x11B6,0x1174,0x1153,0x1132,0x1932,0x1931,0x1911,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x210F,0x292F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x2930,0x290F,0x292F,0x290F,0x292F,0x292F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2130,0x2131,0x1932,0x1933,0x1133,0x1155,0x11B7,0x11F8,0x11F8,0x11F9,0x19F8,0x19D8,0x19B6,0x1975,0x1113,0x1133,0x1932,0x1911,0x1911,0x1911,0x2131,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x210F,0x2910,0x290F,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x210F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1132,0x1953,0x1154,0x1954,0x1974,0x1954,0x1954,0x1974,0x1953,0x1953,0x1974,0x1974,0x1953,0x1974,0x1974,0x1974,0x1994,0x1994,0x1974,0x1974,0x1974,0x1994,0x1974,0x1994,0x1974,0x1974,0x1974,0x1974,0x1974,0x1994,0x2194,0x1974,0x1994,0x1994,0x1994,0x1995,0x1995,0x1995,0x1995,0x19B6,0x1196,0x11D7,0x09B7,0x09D8,0x01D9,0x01D9,0x01DA,0x01DA,0x01BA,0x01DA,0x01DB,0x01BA,0x01BA,0x09B9,0x09B9,0x11B8,0x19B7,0x19B5,0x1112,0x1932,0x1951,0x1930,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x2910,0x2910,0x28F0,0x28F0,0x30B0,0x3870,0x6935,0xCB3E,0xD2BD,0xE29E,0xEA7F,0xEA3E,0xF21F,0xF9FF,0xF1DF,0xF9FF,0xF9DF,0xF9FF,0xF9FF,0xF9FF,0xFA1F,0xF21F,0xF25F,0xEA3E,0xE27E,0xD29D,0xD35F,0x5072,0x3850,0x30B0,0x28F0,0x2910,0x2910,0x290F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2110,0x2110,0x2910,0x2930,0x2110,0x2930,0x290F,0x210F,0x290F,0x210F,0x210F,0x2110,0x290F,0x210F,0x290F,0x2930,0x212F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2910,0x2910,0x290F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x1911,0x1112,0x2218,0x2239,0x19D8,0x1196,0x1133,0x1932,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x2910,0x2910,0x2131,0x2131,0x1912,0x1113,0x19F7,0x19F8,0x19F8,0x1195,0x1112,0x1931,0x2110,0x2130,0x2130,0x2930,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x3150,0x3130,0x3130,0x3150,0x3151,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3971,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x4192,0x4192,0x4172,0x4192,0x4192,0x4993,0x4192,0x4192,0x4992,0x4993,0x51B3,0x5192,0x5191,0x5171,0x5991,0x61B1,0x6190,0x8A73,0xCC7A,0xE4FB,0xDC99,0xDC58,0xDC58,0xDC58,0xDC37,0xDC37,0xDC17,0xDC37,0xDC37,0xDC37,0xDC16,0xDC16,0xDC17,0xDC17,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC17,0xDC16,0xDC17,0xD416,0xD416,0xD417,0xD416,0xD417,0xD417,0xD417,0xD417,0xD417,0xCC16,0xCC17,0xCBF6,0xCBF6,0xCBF6,0xCBF7,0xCBF6,0xCC17,0xCBF6,0xCBF7,0xCBF7,0xCBF6,0xCBF6,0xCBD6,0xCBD6,0xCBF7,0xCBD6,0xCBF6,0xCBD6,0xCBD6,0xCBF7,0xCBD7,0xCBD6,0xCBD6,0xCBD6,0xCBD6,0xCBB6,0xCBD6,0xCBD6,0xD3B6,0xD3B6,0xCBB6,0xD3B6,0xD396,0xD396,0xDB96,0xDB96,0xDB76,0xDB76,0xDB76,0xDB55,0xDB55,0xD355,0xDB76,0xD376,0xDB76,0xDB76,0xD376,0xD376,0xD376,0xDB96,0xD356,0xD356,0xD376,0xCB76,0xCB76,0xC376,0xBB76,0xBB97,0xBB97,0xBB97,0xB397,0xB396,0xBB97,0xBB76,0xBB76,0xC376,0xC376,0xCB76,0xC356,0xC356,0xC356,0xBB56,0xAB56,0xA397,0x9C19,0x9CBB,0x849A,0x7C9A,0x7CBA,0x84FB,0x8CFB,0x73F8,0x6B35,0x8BB7,0x9BD7,0xA3B7,0xB3B7,0xB377,0xB398,0x9AD6,0x6991,0x5930,0x5971,0x5992,0x5992,0x5172,0x5192,0x4992,0x4972,0x4992,0x4172,0x4192,0x4192,0x4192,0x4172,0x4172,0x3972,0x3972,0x3972,0x3972,0x3951,0x3972,0x3951,0x3951,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x3130,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2131,0x1931,0x1932,0x1153,0x1995,0x1197,0x11B8,0x09D9,0x09FA,0x01D9,0x09FA,0x01DA,0x09DA,0x09D9,0x09F9,0x11D8,0x19B7,0x1995,0x1112,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2110,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x212F,0x210F,0x290F,0x290F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x1931,0x1911,0x1932,0x1953,0x1175,0x11D7,0x11D7,0x11F8,0x09F8,0x09F8,0x09D7,0x0997,0x0155,0x0134,0x0934,0x0975,0x11B6,0x11D7,0x09D8,0x09D7,0x09D7,0x09D7,0x11D7,0x0996,0x0975,0x0955,0x0934,0x0975,0x1196,0x11D7,0x11F8,0x09D7,0x11F8,0x11F7,0x11D6,0x1195,0x1174,0x1953,0x1932,0x1951,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1954,0x1175,0x11B7,0x11D8,0x11D8,0x11D8,0x11D8,0x11B7,0x1196,0x0955,0x0954,0x0955,0x0975,0x0996,0x11D8,0x11F9,0x09D9,0x11F9,0x11B8,0x11B7,0x1195,0x1154,0x1154,0x0954,0x0975,0x0996,0x11D8,0x11F8,0x11F9,0x11F8,0x11D7,0x11B6,0x1195,0x1174,0x1154,0x1154,0x1174,0x0995,0x11D7,0x11D8,0x09D8,0x11F8,0x11D7,0x11B7,0x11B6,0x1195,0x0934,0x0934,0x0996,0x09B7,0x11F8,0x09F8,0x09F8,0x11D8,0x11B8,0x1197,0x1196,0x1175,0x0913,0x0914,0x0975,0x1197,0x11D8,0x09D8,0x09D8,0x09D8,0x09B7,0x11B7,0x1195,0x1974,0x1932,0x1911,0x2111,0x2131,0x1911,0x1912,0x1933,0x1154,0x1196,0x19B7,0x19F7,0x11D7,0x19F8,0x11F7,0x11F7,0x11D6,0x11D6,0x1195,0x1153,0x1933,0x1111,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x2110,0x2910,0x2910,0x2110,0x210F,0x210F,0x2910,0x2930,0x290F,0x2910,0x2910,0x2930,0x290F,0x2910,0x2910,0x210F,0x2930,0x290F,0x290F,0x2930,0x210F,0x2930,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x2930,0x210F,0x210F,0x290F, + 0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x210F,0x290F,0x2910,0x290F,0x210F,0x2930,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x292F,0x290F,0x210F,0x210F,0x2110,0x2130,0x2131,0x2131,0x1911,0x1132,0x1133,0x1174,0x11B6,0x11D7,0x1A18,0x1218,0x1218,0x11D7,0x1195,0x1174,0x1174,0x1153,0x1952,0x1931,0x1931,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x2930,0x2930,0x210F,0x212F,0x210F,0x210F,0x292F,0x290F,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2910,0x2930,0x210F,0x2910,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2910,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2131,0x2111,0x1932,0x10F2,0x1113,0x1175,0x1196,0x11D8,0x11F8,0x1A39,0x1A19,0x19F8,0x19B6,0x1154,0x1133,0x1112,0x1911,0x1931,0x2131,0x2131,0x2110,0x2110,0x2130,0x2110,0x210F,0x210F,0x2130,0x2110,0x2110,0x210F,0x210F,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x292F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x1931,0x1932,0x1112,0x1112,0x1912,0x1132,0x1112,0x1112,0x1912,0x1112,0x1112,0x10F2,0x1112,0x1112,0x1112,0x1112,0x1132,0x1112,0x1112,0x1112,0x1932,0x1112,0x1112,0x1112,0x1132,0x1112,0x1112,0x1132,0x1132,0x1132,0x1932,0x1912,0x1912,0x1112,0x1112,0x1112,0x1112,0x1132,0x1133,0x1133,0x1154,0x1175,0x0976,0x09B7,0x09B7,0x01D8,0x01D9,0x01B9,0x01BA,0x01BA,0x01BA,0x01BA,0x01BA,0x01DA,0x09D9,0x09B9,0x0997,0x19D7,0x1995,0x1112,0x1931,0x1931,0x1930,0x2150,0x2130,0x2130,0x2130,0x210F,0x2110,0x2930,0x290F,0x290F,0x290F,0x28F0,0x30D0,0x3890,0x4850,0xB2BC,0xD2FE,0xDABE,0xE25E,0xEA3E,0xF21F,0xF21F,0xF9FF,0xF9FF,0xFA1F,0xF1FF,0xF1FF,0xF1FF,0xF1FF,0xF23F,0xEA3E,0xE23E,0xDA9E,0xDAFE,0xC31E,0x400F,0x3870,0x30B0,0x28F0,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x2910,0x210F,0x2110,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2110,0x1911,0x1112,0x2218,0x2239,0x19F8,0x1196,0x1133,0x1932,0x1931,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2910,0x2110,0x2931,0x2131,0x1912,0x1113,0x2218,0x1A39,0x19F8,0x1195,0x1112,0x1911,0x2110,0x2130,0x2130,0x2930,0x292F,0x292F,0x210F,0x290F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3130,0x3150,0x3150,0x3150,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3171,0x3171,0x3151,0x3151,0x3951,0x3971,0x3972,0x3972,0x3972,0x3972,0x4172,0x4172,0x4172,0x4192,0x4192,0x4192,0x4192,0x4192,0x4992,0x49B3,0x49B2,0x4992,0x4971,0x5171,0x5171,0x5970,0x6990,0x79F1,0xBBD8,0xE51C,0xDC9A,0xDC79,0xDC58,0xE479,0xDC37,0xDC37,0xDC58,0xDC37,0xDC37,0xDC17,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC37,0xDC16,0xDC16,0xDC16,0xDBF6,0xDBF6,0xDC16,0xDC16,0xD416,0xD3F6,0xD417,0xCC16,0xCC37,0xCC37,0xCC37,0xC437,0xC437,0xC417,0xC437,0xC437,0xC417,0xC417,0xC437,0xBC17,0xBC17,0xBC17,0xC437,0xBC17,0xBC37,0xBC17,0xBC17,0xBC17,0xC417,0xBC17,0xBC17,0xBC17,0xBC17,0xBBF7,0xBBF6,0xBBF6,0xC3F7,0xC3F6,0xC3F6,0xC3F6,0xC3F6,0xC3F6,0xC3D6,0xC3D6,0xC3D6,0xC3B6,0xCBB6,0xCBB5,0xCB95,0xCB95,0xD375,0xD376,0xD355,0xD355,0xDB96,0xDB96,0xDB76,0xDB56,0xDB75,0xDB76,0xD355,0xD375,0xD375,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD376,0xCB76,0xCB56,0xC356,0xC377,0xBB97,0xBB97,0xBB77,0xBB97,0xBB97,0xB356,0xBB76,0xBB56,0xC376,0xCB76,0xCB76,0xC376,0xC376,0xB336,0xA336,0x9376,0x8BF8,0x8419,0x84BB,0x8D3C,0x7CFB,0x749A,0x8CDB,0x8C9A,0x83B7,0x9396,0x9B76,0xAB77,0xB377,0xB357,0xBB78,0xBB98,0xA2D6,0x7191,0x5910,0x5971,0x6192,0x5992,0x5192,0x5192,0x4992,0x4992,0x4192,0x4192,0x4192,0x4172,0x4172,0x4172,0x4192,0x4192,0x3971,0x3971,0x3992,0x3972,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3151,0x3130,0x3131,0x3130,0x3150,0x2950,0x2950,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x292F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2110,0x2130,0x2131,0x1931,0x1931,0x1932,0x1974,0x1175,0x11B7,0x19F8,0x1219,0x121A,0x09D9,0x09D9,0x09B9,0x11F9,0x1A19,0x19F8,0x21F7,0x1133,0x1111,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x2130,0x2130,0x2110,0x210F,0x2130,0x2930,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x212F,0x292F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x2110,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2131,0x2111,0x1911,0x1932,0x1953,0x1995,0x2217,0x11F7,0x11F7,0x11F8,0x11F8,0x1A18,0x11B7,0x0955,0x0934,0x0914,0x0975,0x11B6,0x11F7,0x11D7,0x11D7,0x11D7,0x11D7,0x19F7,0x1196,0x0954,0x0954,0x0954,0x1175,0x11B6,0x1A18,0x11F8,0x11F8,0x11F7,0x1A17,0x19F7,0x1174,0x1153,0x1952,0x1951,0x2151,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1953,0x1995,0x19D7,0x19D8,0x19F8,0x11F8,0x19D8,0x19D7,0x1196,0x1154,0x1134,0x1154,0x1175,0x11B6,0x11F8,0x11F9,0x1219,0x11F8,0x11D7,0x1196,0x1195,0x1154,0x0933,0x1154,0x0974,0x1196,0x11D7,0x11F8,0x1218,0x11F8,0x11D7,0x11B6,0x19B5,0x1174,0x1153,0x1153,0x1154,0x1175,0x11D6,0x11F7,0x11F7,0x11F8,0x11D7,0x11B6,0x19D6,0x11B5,0x0933,0x0913,0x0975,0x11B6,0x11F8,0x11F8,0x11F8,0x11F8,0x11B7,0x1196,0x19B6,0x1175,0x0913,0x0913,0x1175,0x1196,0x19D8,0x11D8,0x11F8,0x11F8,0x11B7,0x11B6,0x19B5,0x1953,0x1932,0x1911,0x2131,0x2110,0x2131,0x1911,0x1912,0x1113,0x1133,0x1154,0x1154,0x1154,0x1175,0x1174,0x1133,0x1154,0x1974,0x1953,0x1112,0x1911,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2910,0x2910,0x210F,0x210F,0x2110,0x2910,0x2910,0x2930,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x210F,0x290F,0x292F,0x210F,0x2930,0x290F, + 0x2150,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x2930,0x290F,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2930,0x2130,0x2130,0x1931,0x1931,0x1132,0x1153,0x1175,0x11B6,0x11D7,0x11F8,0x1A19,0x11F8,0x11F7,0x11B6,0x0974,0x1174,0x1153,0x1932,0x1931,0x1931,0x1910,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x212F,0x210F,0x2110,0x2910,0x210F,0x2930,0x2110,0x2110,0x290F,0x210F,0x2110,0x2110,0x212F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x2910,0x290F,0x290F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x1911,0x1932,0x1112,0x1133,0x1154,0x1196,0x11D7,0x1218,0x1A39,0x1A19,0x19F8,0x19B7,0x1155,0x1133,0x1912,0x1911,0x2111,0x2111,0x2131,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x2130,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x210F,0x2930,0x2910,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x294F,0x212F,0x210F,0x2130,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2930,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1911,0x1911,0x1912,0x1932,0x1932,0x1912,0x1911,0x1911,0x1911,0x1932,0x1912,0x1911,0x1911,0x1932,0x1911,0x1911,0x1931,0x1911,0x1912,0x1932,0x1932,0x1932,0x1912,0x1932,0x1932,0x1912,0x1932,0x1912,0x1912,0x1932,0x1912,0x1912,0x1912,0x1932,0x1912,0x1932,0x1112,0x1133,0x1153,0x1154,0x1175,0x1196,0x09D7,0x09D8,0x01D9,0x01D9,0x01DA,0x01DA,0x01DB,0x01DA,0x01DA,0x09DA,0x09D9,0x09B9,0x0997,0x19B6,0x1974,0x1112,0x1931,0x1931,0x2151,0x2130,0x2130,0x212F,0x212F,0x2130,0x2930,0x290F,0x290F,0x290F,0x28EF,0x28EF,0x30F0,0x38B0,0x4050,0x7955,0xD33E,0xD2BE,0xDA7E,0xEA5E,0xF25F,0xF23F,0xFA3F,0xF21F,0xFA1F,0xF1FF,0xF21F,0xF21F,0xF23F,0xEA3E,0xE25E,0xE27E,0xDABE,0xDB5F,0x89B7,0x380F,0x3090,0x28B0,0x28F0,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x2930,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x210F,0x290F,0x212F,0x212F,0x212F,0x210F,0x2130,0x1910,0x1911,0x1112,0x2218,0x2239,0x19F8,0x1196,0x1133,0x1932,0x1931,0x2131,0x2130,0x2130,0x2150,0x2130,0x212F,0x212F,0x212F,0x2130,0x210F,0x2910,0x2110,0x2931,0x2131,0x2132,0x1912,0x1113,0x2218,0x1A19,0x19F8,0x1196,0x1112,0x1931,0x2131,0x2130,0x2130,0x2130,0x2930,0x292F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3130,0x3150,0x3150,0x3150,0x3150,0x3150,0x3151,0x3150,0x3150,0x3151,0x3150,0x3151,0x3151,0x3171,0x3171,0x3171,0x3151,0x3971,0x3971,0x3972,0x3972,0x3972,0x3972,0x4172,0x4172,0x4172,0x4192,0x4192,0x4192,0x4192,0x49B3,0x4992,0x4992,0x4992,0x4992,0x4992,0x5192,0x5191,0x5170,0x5970,0x6990,0x9AF4,0xDCFC,0xDCBB,0xDC99,0xDC59,0xDC58,0xDC58,0xDC37,0xDC17,0xDC37,0xDC37,0xDC37,0xDC17,0xDC37,0xDC16,0xDC17,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDBF6,0xDC16,0xDBF6,0xDC16,0xDC16,0xD416,0xD417,0xCC17,0xCC37,0xC437,0xC478,0xBC57,0xBC78,0xB457,0xB477,0xB477,0xB498,0xB478,0xB498,0xAC78,0xB478,0xB478,0xAC78,0xAC78,0xB498,0xAC78,0xB498,0xB478,0xB498,0xAC78,0xB478,0xB478,0xB498,0xB478,0xB498,0xB478,0xB458,0xB458,0xB458,0xB458,0xB457,0xB437,0xBC58,0xBC37,0xBC37,0xB417,0xBC17,0xC417,0xC3F6,0xC3D6,0xC3D6,0xCBB5,0xD3B6,0xCB75,0xCB75,0xD355,0xD396,0xDB96,0xD376,0xDB76,0xD375,0xD376,0xD376,0xD355,0xD375,0xD355,0xD356,0xD356,0xD356,0xD335,0xD356,0xD356,0xD356,0xD356,0xCB56,0xCB76,0xC356,0xC377,0xC397,0xC397,0xBB76,0xBB76,0xBB76,0xBB56,0xBB56,0xC376,0xC356,0xC376,0xC376,0xC376,0xBB56,0xB356,0xA377,0x9397,0x8BD8,0x8439,0x8D1C,0x7CFB,0x7CFB,0x749A,0x7C7A,0x94BB,0x8BD7,0x9376,0xA377,0xAB56,0xBB77,0xBB57,0xBB78,0xBB58,0xBB58,0x9AB6,0x6130,0x5910,0x5972,0x5992,0x5192,0x4972,0x51B3,0x4992,0x4992,0x4192,0x4172,0x4192,0x4192,0x4172,0x3972,0x3972,0x3972,0x3972,0x3972,0x3951,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x3151,0x3130,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2910,0x290F,0x2930,0x2910,0x290F,0x2910,0x290F,0x2910,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x292F,0x292F,0x212F,0x210F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1952,0x1954,0x1975,0x1196,0x19D7,0x19F8,0x11D8,0x11B8,0x11D8,0x19D8,0x21F8,0x21D6,0x1954,0x1112,0x1911,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2110,0x210F,0x212F,0x210F,0x2130,0x210F,0x212F,0x2130,0x2130,0x212F,0x2930,0x212F,0x212F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2130,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2111,0x1931,0x1932,0x1932,0x1974,0x19D5,0x19D6,0x19F7,0x19F7,0x19D7,0x19D6,0x19D6,0x1154,0x0934,0x0933,0x1174,0x19D6,0x19F6,0x19D7,0x19D7,0x11D7,0x19F7,0x19D6,0x19B5,0x1154,0x1153,0x1174,0x1174,0x19B5,0x19D6,0x19F7,0x19F7,0x19D6,0x19F7,0x19B5,0x1974,0x1953,0x1952,0x1951,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x1931,0x1952,0x1953,0x1974,0x1995,0x19B6,0x19D7,0x19F7,0x19D7,0x19B6,0x1995,0x1154,0x1133,0x1154,0x1174,0x1195,0x19F7,0x19F8,0x19F7,0x19D7,0x19D7,0x19B6,0x1974,0x1153,0x1153,0x1153,0x0953,0x1195,0x11B6,0x11D7,0x11F7,0x11D7,0x19D6,0x19B6,0x1995,0x1173,0x1152,0x1153,0x1153,0x1174,0x11B5,0x19F6,0x19F7,0x11D6,0x11B6,0x19B6,0x19B5,0x19B5,0x0933,0x0913,0x1174,0x11B6,0x11D7,0x11D7,0x11D7,0x11D7,0x11B6,0x1996,0x1995,0x1974,0x1133,0x1133,0x1154,0x1196,0x19B6,0x11B7,0x11D6,0x11D6,0x19B6,0x19B5,0x1994,0x1953,0x1931,0x2131,0x2130,0x2131,0x2131,0x2111,0x1911,0x1912,0x1932,0x1132,0x1133,0x1933,0x1132,0x1132,0x1932,0x1932,0x1112,0x1932,0x1932,0x1931,0x1910,0x2131,0x2130,0x2150,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2110,0x2110,0x2130,0x210F,0x2130,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x210F,0x2110,0x2910,0x210F,0x290F,0x2930,0x290F,0x290F,0x2930,0x290F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F, + 0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x290F,0x210F,0x212F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x212F,0x292F,0x2930,0x2110,0x2130,0x2951,0x2151,0x2131,0x1952,0x1132,0x1153,0x1174,0x1196,0x11D7,0x1A18,0x1A18,0x1A18,0x11D7,0x11B6,0x0955,0x1133,0x1153,0x1932,0x1932,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x2930,0x2110,0x2130,0x2130,0x2930,0x2130,0x2110,0x2930,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x2931,0x2110,0x2130,0x2931,0x2130,0x2130,0x2110,0x2111,0x2110,0x2110,0x2131,0x2110,0x2110,0x2110,0x2110,0x2131,0x2130,0x2131,0x2131,0x2130,0x2130,0x2930,0x2130,0x2110,0x2130,0x2130,0x2930,0x2910,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x2131,0x2152,0x1932,0x1953,0x1174,0x1154,0x1196,0x19F8,0x1A19,0x1A19,0x1A39,0x19F8,0x19B7,0x1134,0x1113,0x10F1,0x18F1,0x2111,0x2110,0x2151,0x2130,0x2130,0x2110,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x212F,0x2130,0x212F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x290F,0x2910,0x2910,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x292F,0x210F,0x2930,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x2930,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x210E,0x210F,0x210F,0x212F,0x2150,0x2130,0x2131,0x1931,0x1931,0x1911,0x1911,0x1931,0x2131,0x1911,0x2131,0x1911,0x2131,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x2131,0x1931,0x1911,0x1931,0x2131,0x1931,0x1931,0x1932,0x1931,0x1952,0x1932,0x1932,0x1112,0x1112,0x1133,0x0955,0x11B7,0x11D8,0x09F9,0x0A1A,0x09FA,0x01DA,0x01DA,0x01DA,0x01DA,0x0A1B,0x121A,0x09D9,0x11B7,0x1175,0x1154,0x1132,0x1952,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x210F,0x2930,0x2930,0x2910,0x28F0,0x28F0,0x30D0,0x4090,0x4850,0xA25A,0xD33E,0xDA9E,0xDA5E,0xEA5E,0xF23F,0xF21F,0xF21E,0xF21E,0xF25F,0xF25F,0xEA1E,0xEA3E,0xE23E,0xE27E,0xDABE,0xDB3F,0xBADC,0x5051,0x3870,0x30B0,0x28D0,0x28F0,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2930,0x210F,0x290F,0x210F,0x212F,0x210F,0x2110,0x2130,0x2131,0x1912,0x1133,0x19F8,0x19F8,0x1A19,0x11B7,0x1154,0x1132,0x1932,0x1931,0x1931,0x1930,0x2151,0x2130,0x2130,0x212F,0x212F,0x212F,0x2930,0x2110,0x2930,0x2931,0x2111,0x1911,0x1933,0x1154,0x19F8,0x11F8,0x1A18,0x19D6,0x1153,0x1111,0x1911,0x2131,0x2131,0x2130,0x2950,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3150,0x3150,0x3150,0x3151,0x3151,0x3151,0x3150,0x3151,0x3151,0x3151,0x3151,0x3971,0x3971,0x3171,0x3171,0x3151,0x3971,0x3992,0x3972,0x3972,0x3972,0x3972,0x4172,0x4192,0x4192,0x4192,0x4192,0x4993,0x49B3,0x49B3,0x49B2,0x4992,0x4992,0x4992,0x5192,0x5171,0x5971,0x6170,0x7A11,0xC439,0xED3C,0xDC79,0xD458,0xDC78,0xDC58,0xDC58,0xDC37,0xDC37,0xE437,0xDC17,0xDC16,0xDC16,0xDC16,0xDC37,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDBF6,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDC16,0xDC37,0xD437,0xD457,0xCC57,0xBC57,0xB457,0xAC78,0xA457,0xA498,0x9477,0x9497,0x8C77,0x94B8,0x8C97,0x8C98,0x8C77,0x8C77,0x8C77,0x8C98,0x8C77,0x8C77,0x8457,0x8C57,0x8457,0x8457,0x8436,0x8C57,0x8437,0x8436,0x8436,0x8C37,0x8416,0x8C16,0x83F6,0x8C16,0x8BF6,0x8BF6,0x8BF6,0x9416,0x9416,0x9C37,0x9C17,0xA417,0xA416,0xB437,0xB417,0xBBF7,0xC3F7,0xC3F6,0xCBD6,0xCBD6,0xCB96,0xD3B6,0xD396,0xD396,0xD376,0xD375,0xD375,0xCB55,0xD375,0xD376,0xD376,0xD356,0xD356,0xDB76,0xDB56,0xD335,0xD356,0xD336,0xD336,0xD356,0xCB36,0xD356,0xCB56,0xC336,0xC356,0xC376,0xC376,0xC356,0xBB35,0xB335,0xBB36,0xC377,0xC376,0xC356,0xC356,0xC377,0xC377,0xB356,0xA356,0x9377,0x8397,0x7C18,0x851C,0x7D1C,0x7D1C,0x6C9A,0x6C59,0x8459,0x8BD8,0x8B56,0xA356,0xAB57,0xBB37,0xBB57,0xBB57,0xBB37,0xBB58,0xBB78,0x9254,0x610F,0x5910,0x5971,0x5172,0x5172,0x4992,0x4992,0x4992,0x4992,0x4992,0x4192,0x4172,0x4172,0x4192,0x3972,0x3972,0x3972,0x3971,0x3971,0x3971,0x3151,0x3151,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3130,0x3151,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x290F,0x2930,0x2930,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x2130,0x2110,0x2110,0x2130,0x2131,0x2131,0x2152,0x1933,0x1953,0x1154,0x1175,0x1995,0x1996,0x1996,0x1954,0x1133,0x1112,0x1111,0x1910,0x1910,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x212F,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x292F,0x290F,0x210F,0x290F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2930,0x2130,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1952,0x1952,0x1153,0x1154,0x1974,0x1174,0x1174,0x1174,0x1174,0x1154,0x1973,0x1153,0x1973,0x1974,0x1994,0x1995,0x1195,0x1994,0x1174,0x1174,0x1973,0x1153,0x1953,0x1153,0x1973,0x1974,0x1974,0x1174,0x1174,0x1174,0x1153,0x1153,0x1952,0x1931,0x1931,0x2131,0x2110,0x2130,0x2130,0x212F,0x212F,0x292F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1952,0x1953,0x1974,0x1974,0x1994,0x1995,0x1174,0x1153,0x1973,0x1953,0x1953,0x1153,0x1174,0x1194,0x1195,0x1195,0x1195,0x1195,0x1995,0x1974,0x1953,0x1132,0x1952,0x1952,0x1973,0x1194,0x1194,0x1195,0x11B5,0x19B5,0x1994,0x1974,0x1973,0x1952,0x1932,0x1132,0x1973,0x1973,0x1994,0x1194,0x19B5,0x19B5,0x1194,0x1174,0x1974,0x1953,0x1953,0x1152,0x1974,0x1194,0x1194,0x1195,0x19B5,0x19B5,0x1174,0x1954,0x1953,0x1953,0x1953,0x1953,0x1174,0x1174,0x1995,0x19B5,0x1995,0x1994,0x1994,0x1974,0x1952,0x1952,0x2151,0x2130,0x2110,0x2110,0x2130,0x2131,0x1910,0x1931,0x1931,0x1932,0x1952,0x1932,0x1952,0x1952,0x1931,0x1931,0x1932,0x1931,0x2151,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2930,0x2130,0x2130,0x210F,0x210F,0x212F,0x2930,0x290F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2910,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x2930,0x210F,0x2910,0x2910,0x290F,0x2930,0x210F,0x210F,0x2110,0x210F,0x210F,0x290F, + 0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x210F,0x290F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2910,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2910,0x290F,0x290F,0x290F,0x210F,0x2110,0x210F,0x2910,0x2110,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x290F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2151,0x2151,0x1932,0x1132,0x1133,0x1175,0x1196,0x11B7,0x1A19,0x1A18,0x19F8,0x11D7,0x1196,0x0955,0x0934,0x1133,0x1933,0x1932,0x1932,0x2132,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1930,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2152,0x2152,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2132,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2931,0x2131,0x2131,0x2131,0x2131,0x2152,0x2152,0x2132,0x1932,0x1112,0x1133,0x1153,0x1175,0x11B6,0x19F8,0x1A19,0x1A19,0x1A39,0x19F8,0x19B7,0x1175,0x1113,0x10F1,0x18F1,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x210E,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x2131,0x2111,0x2110,0x2130,0x2131,0x2131,0x1910,0x2131,0x1931,0x1931,0x2131,0x2131,0x1910,0x2111,0x2131,0x2131,0x2131,0x1931,0x1911,0x2131,0x1931,0x1911,0x1910,0x2131,0x1931,0x2131,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1133,0x1154,0x1195,0x09B7,0x11D8,0x09F9,0x09D9,0x09FA,0x01DA,0x09FA,0x09FA,0x09FA,0x1219,0x11D8,0x11B7,0x1175,0x1153,0x1932,0x1931,0x2131,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x290F,0x290F,0x28F0,0x30D0,0x38B0,0x4070,0x5030,0xBABC,0xDB5F,0xDA9E,0xE27E,0xE23E,0xEA5F,0xEA3E,0xEA5E,0xEA5F,0xEA5E,0xE23E,0xE25E,0xDA5D,0xD29D,0xD31E,0xD39F,0x60B3,0x4050,0x3890,0x30D0,0x28D0,0x28F0,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2930,0x210F,0x290F,0x210F,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2930,0x2930,0x2930,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2930,0x290F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1952,0x1132,0x1134,0x19F8,0x1219,0x11F9,0x19F8,0x0954,0x1153,0x1953,0x1932,0x1931,0x1931,0x2151,0x2130,0x1930,0x2130,0x212F,0x2930,0x210F,0x2110,0x2931,0x2131,0x1911,0x1912,0x1133,0x1155,0x19D8,0x1A19,0x19F8,0x19F7,0x1174,0x1132,0x1932,0x1931,0x2131,0x2131,0x2951,0x2930,0x210F,0x292F,0x290F,0x2910,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3150,0x3150,0x3150,0x3151,0x3130,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3151,0x3151,0x3971,0x3151,0x3151,0x3151,0x3972,0x3972,0x3972,0x3992,0x3972,0x4172,0x4172,0x4192,0x4192,0x4192,0x4192,0x4993,0x49B3,0x49B2,0x4992,0x4992,0x5192,0x5192,0x5191,0x5191,0x5950,0x592E,0xA336,0xDCDB,0xE4BA,0xDC59,0xDC79,0xDC58,0xDC37,0xDC37,0xDC37,0xDC17,0xDC17,0xDC17,0xDC37,0xDC17,0xDC16,0xDC16,0xDC16,0xDC37,0xDC16,0xDC16,0xDC16,0xDC16,0xE417,0xDC16,0xDBF6,0xDC16,0xDC16,0xDC37,0xD457,0xD478,0xC457,0xBC78,0xA457,0x9457,0x9497,0x8477,0x84D8,0x74B7,0x74B7,0x74D7,0x6CB7,0x6CB7,0x74D8,0x6CB7,0x6CB7,0x6CB7,0x6CB7,0x6CB7,0x6CB7,0x6C97,0x6C97,0x6C97,0x6C97,0x6CB7,0x6C97,0x6C97,0x6C97,0x6C97,0x7497,0x6C77,0x7497,0x7497,0x7477,0x7457,0x7457,0x7436,0x6C16,0x6BF5,0x6BF5,0x6BB4,0x73B4,0x73B4,0x83D5,0x8BF5,0x9BF6,0xA3F6,0xABF6,0xB3F6,0xB3F6,0xB3D6,0xBBD6,0xBBB6,0xC3D7,0xC3B6,0xC3B6,0xC375,0xCBB6,0xCB96,0xCB75,0xCB76,0xCB76,0xD376,0xD376,0xD355,0xD356,0xD335,0xD336,0xD356,0xD336,0xD336,0xD356,0xCB36,0xCB36,0xCB36,0xCB56,0xCB76,0xC356,0xC356,0xBB15,0xBB35,0xBB36,0xC356,0xC336,0xC336,0xCB56,0xC376,0xBB56,0xB356,0xA357,0x93B8,0x7BB7,0x7C5A,0x7CFC,0x753C,0x753C,0x6CDB,0x74BA,0x849A,0x8C18,0x8B56,0xA357,0xAB57,0xBB78,0xB2F6,0xBB37,0xBB16,0xBB57,0xC378,0xB317,0x79B2,0x58EF,0x5951,0x5972,0x5172,0x5192,0x5192,0x4992,0x4992,0x4172,0x4172,0x4192,0x4192,0x4172,0x3972,0x3992,0x3972,0x3972,0x3972,0x3971,0x3971,0x3971,0x3171,0x3151,0x3171,0x3151,0x3151,0x3130,0x3131,0x3130,0x3151,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2910,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2131,0x2131,0x2132,0x1932,0x1932,0x1933,0x1933,0x1133,0x1112,0x1912,0x18F1,0x1911,0x1910,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x1931,0x1932,0x1932,0x1933,0x1933,0x1132,0x1133,0x1133,0x1132,0x1933,0x1132,0x1132,0x1132,0x1132,0x1132,0x1152,0x1153,0x1132,0x1132,0x1132,0x1132,0x1932,0x1932,0x1932,0x1932,0x1952,0x1933,0x1133,0x1953,0x1933,0x1933,0x1932,0x1932,0x1931,0x2130,0x2130,0x2130,0x2930,0x212F,0x290F,0x290F,0x290F,0x210F,0x2130,0x2150,0x2130,0x212F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1952,0x1952,0x1953,0x1152,0x1952,0x1952,0x1931,0x1931,0x1932,0x1952,0x1952,0x1153,0x1153,0x1153,0x1153,0x1153,0x1953,0x1953,0x1932,0x1931,0x1951,0x1972,0x1952,0x1152,0x1173,0x1153,0x1153,0x1153,0x1153,0x1952,0x1952,0x1952,0x1931,0x1931,0x1951,0x1952,0x1952,0x1152,0x1153,0x1153,0x1153,0x1132,0x1932,0x1932,0x1952,0x1952,0x1152,0x1153,0x1173,0x1153,0x1153,0x1153,0x1953,0x1932,0x1932,0x1932,0x1952,0x1932,0x1952,0x1152,0x1153,0x1153,0x1153,0x1152,0x1952,0x1952,0x1931,0x1931,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x1910,0x1931,0x1931,0x1931,0x1931,0x1911,0x1910,0x2131,0x2131,0x2131,0x2131,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2930,0x2930,0x210F,0x2930,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2910,0x210F,0x2910,0x210F,0x290F,0x2910,0x210F,0x210F,0x210F,0x210F,0x2930, + 0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x210F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x212F,0x292F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x290F,0x210F,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x1931,0x1931,0x1932,0x1954,0x1175,0x1196,0x11D7,0x1A19,0x1A19,0x11D8,0x11B7,0x1196,0x0955,0x0934,0x0933,0x1113,0x10F2,0x10F2,0x10F1,0x10F1,0x1111,0x10F0,0x10F0,0x1931,0x1911,0x1911,0x1111,0x1111,0x1911,0x1911,0x1111,0x1931,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x10F1,0x1911,0x1911,0x1911,0x10F1,0x1111,0x10F1,0x1111,0x10F1,0x10F1,0x10F1,0x1911,0x10F1,0x10F1,0x10F1,0x10F1,0x10F1,0x10F1,0x10F1,0x10F1,0x10F1,0x1111,0x1111,0x1111,0x1111,0x1111,0x10F1,0x10F1,0x10F1,0x1911,0x1111,0x10F1,0x10F1,0x1111,0x10F1,0x1111,0x1111,0x1111,0x1111,0x1912,0x1912,0x1911,0x1111,0x1911,0x1911,0x1911,0x10F1,0x1911,0x18F0,0x10F0,0x18F0,0x18F1,0x10F1,0x10F1,0x08F1,0x10F1,0x08D1,0x08D1,0x08D1,0x08F2,0x0913,0x0955,0x1196,0x11F8,0x11F8,0x1219,0x1A19,0x19D8,0x1196,0x1155,0x1113,0x1912,0x1911,0x2111,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x212F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x290F,0x290F,0x2910,0x210F,0x210F,0x210F,0x2930,0x290F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2110,0x2910,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x1910,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x2110,0x1910,0x2130,0x2130,0x2130,0x1931,0x1911,0x1911,0x1932,0x1953,0x1174,0x1195,0x11B7,0x11D8,0x11D8,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x11F8,0x11D7,0x1195,0x1974,0x1932,0x1932,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x28EF,0x30F0,0x38D0,0x40B0,0x4850,0x5851,0xB29B,0xDB5F,0xD29E,0xDA7E,0xDA5E,0xE25E,0xDA5E,0xE27E,0xE27E,0xDA5D,0xD27D,0xD29D,0xD33F,0xC31D,0x7114,0x4030,0x3890,0x30D0,0x28D0,0x28F0,0x2910,0x2910,0x290F,0x290F,0x2910,0x2930,0x2930,0x2910,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x2910,0x2930,0x290F,0x2930,0x290F,0x2110,0x2930,0x212F,0x2130,0x2930,0x2910,0x2910,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2110,0x210F,0x2930,0x2130,0x2110,0x2130,0x2130,0x1931,0x1111,0x1133,0x1175,0x11F8,0x11F9,0x11F9,0x09B8,0x0975,0x0974,0x1174,0x1153,0x1152,0x1131,0x1931,0x1930,0x2130,0x2130,0x210F,0x2130,0x210F,0x2110,0x2110,0x2111,0x1912,0x1113,0x1134,0x1176,0x11B7,0x11F8,0x11F8,0x11D7,0x1175,0x1133,0x1133,0x1932,0x1911,0x1931,0x2131,0x2130,0x2110,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x3150,0x3150,0x3150,0x3150,0x3130,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3971,0x3971,0x3971,0x3972,0x3972,0x3972,0x3992,0x3972,0x3972,0x4192,0x4172,0x4192,0x4192,0x4172,0x4172,0x4993,0x4992,0x4992,0x4993,0x49B3,0x4992,0x4992,0x5171,0x5171,0x5170,0x594F,0x7A11,0xCC7A,0xE4FB,0xD479,0xDC79,0xDC58,0xDC58,0xDC37,0xDC37,0xE437,0xDC37,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC37,0xDC16,0xDC16,0xDC37,0xDC37,0xDC17,0xDC16,0xDBF6,0xDBF6,0xDC16,0xDC36,0xDC37,0xDC37,0xD437,0xC437,0xBC57,0xAC57,0x9C98,0x9D19,0x955A,0x857A,0x7D9B,0x75BA,0x75DB,0x761C,0x761B,0x761B,0x761C,0x6E1C,0x761C,0x6E1C,0x6E1C,0x763C,0x763C,0x763C,0x763C,0x765D,0x765D,0x763D,0x763C,0x763C,0x7E3C,0x7E3C,0x761C,0x7E3D,0x7E1C,0x7E1C,0x7E1C,0x7DFC,0x7DFC,0x7DFC,0x7DFC,0x7DFC,0x7DFC,0x7DFC,0x7DDC,0x7DBB,0x7D7A,0x7D39,0x7CB8,0x7C97,0x7C56,0x8436,0x83F5,0x83B5,0x8BB5,0x8BB5,0x9BB5,0xA3D6,0xABD6,0xB3F6,0xB3F6,0xBBD6,0xBB96,0xBBB6,0xC396,0xCB96,0xCB75,0xCB55,0xD376,0xD376,0xD356,0xD356,0xD336,0xD336,0xD336,0xD336,0xD336,0xCB36,0xCB36,0xCB35,0xCB15,0xCB56,0xCB56,0xC336,0xBB15,0xBAF5,0xBAF5,0xC315,0xC336,0xCB77,0xC336,0xC356,0xBB56,0xB356,0xA357,0x93B8,0x7BB8,0x6BD8,0x855D,0x755D,0x757D,0x6CFB,0x6CBA,0x7CBB,0x8418,0x8B76,0x9315,0xAB57,0xBB77,0xBB36,0xBB16,0xBB16,0xBB16,0xBB37,0xC378,0xA2D6,0x7171,0x6110,0x5952,0x5992,0x5192,0x4992,0x4992,0x4992,0x4992,0x4992,0x4192,0x4192,0x4192,0x4192,0x3992,0x3972,0x3971,0x3951,0x3151,0x3971,0x3171,0x3171,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2910,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x2910,0x290F,0x2930,0x2930,0x2930,0x210F,0x210F,0x290F,0x292F,0x292F,0x292F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x2132,0x1931,0x1931,0x1912,0x1911,0x2131,0x2111,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x2130,0x2130,0x2110,0x210F,0x212F,0x212F,0x2130,0x2930,0x2110,0x2110,0x212F,0x210F,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x290F,0x210F,0x292F,0x290F,0x290F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x1931,0x1931,0x1932,0x1952,0x1952,0x1952,0x1932,0x1932,0x1932,0x1931,0x1111,0x1931,0x1931,0x1931,0x1952,0x1952,0x1952,0x1952,0x1931,0x1911,0x1911,0x1911,0x1931,0x1931,0x1932,0x1952,0x1952,0x1952,0x1953,0x1952,0x1932,0x1932,0x2131,0x2111,0x2130,0x2110,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x1931,0x1952,0x1952,0x1952,0x1972,0x1951,0x1931,0x1931,0x1931,0x1911,0x1931,0x1131,0x1152,0x1152,0x1952,0x1952,0x1952,0x1952,0x1952,0x1931,0x1931,0x1910,0x1931,0x1931,0x1931,0x1931,0x1952,0x1952,0x1972,0x1952,0x1952,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1952,0x1972,0x1932,0x1952,0x1931,0x1931,0x1931,0x1931,0x1931,0x1952,0x1952,0x1952,0x1952,0x1972,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1132,0x1952,0x1952,0x1952,0x1952,0x1931,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2910,0x210F,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x2910,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x2930,0x290F,0x2910,0x2910,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930, + 0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x290F,0x2930,0x2930,0x2930,0x2910,0x2930,0x210F,0x210F,0x2910,0x2910,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2910,0x290F,0x210F,0x2930,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x2110,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x1911,0x1932,0x1933,0x1154,0x1175,0x1196,0x11D8,0x1A19,0x1A19,0x19F9,0x11D8,0x11D7,0x1197,0x1176,0x1175,0x0934,0x1134,0x1133,0x1133,0x1133,0x1132,0x1112,0x1112,0x1132,0x1132,0x1132,0x1133,0x0932,0x1133,0x1133,0x1133,0x1133,0x1133,0x1113,0x1133,0x0933,0x1113,0x1113,0x0912,0x0912,0x0912,0x0912,0x1133,0x0912,0x0912,0x1113,0x1113,0x1113,0x1113,0x1113,0x1133,0x1132,0x1132,0x1133,0x1132,0x0932,0x1133,0x1133,0x0913,0x1133,0x0933,0x0912,0x0933,0x0933,0x0913,0x1133,0x0913,0x1133,0x1113,0x1113,0x1133,0x1133,0x0912,0x1113,0x0933,0x0913,0x0913,0x0913,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x08F2,0x08F1,0x08F2,0x0912,0x0913,0x0933,0x0933,0x0933,0x1154,0x1174,0x1175,0x1196,0x11B7,0x19F8,0x11F8,0x1218,0x1A19,0x11F8,0x1196,0x1155,0x1133,0x1112,0x1911,0x2111,0x2131,0x2130,0x2930,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x290F,0x2910,0x2930,0x2930,0x210F,0x210F,0x290F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x2131,0x1932,0x1132,0x1154,0x1175,0x1196,0x1196,0x11B7,0x11B7,0x11B8,0x11D8,0x11B7,0x11B6,0x1195,0x1974,0x1953,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x28EF,0x30F0,0x38B0,0x4090,0x4870,0x5030,0x99F9,0xD33F,0xD2FE,0xCA9D,0xCA7D,0xD29E,0xCA7D,0xCA7D,0xCA9D,0xCABD,0xD37F,0xBB1D,0x60D3,0x4030,0x3890,0x30B0,0x28D0,0x28F0,0x2910,0x2910,0x2930,0x290F,0x2910,0x2930,0x2930,0x290F,0x210F,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x2910,0x2930,0x210F,0x212F,0x210F,0x2910,0x2910,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2131,0x1931,0x1112,0x0933,0x1196,0x11F8,0x09F9,0x09F9,0x09D8,0x09B7,0x11B6,0x11B5,0x1194,0x1174,0x1152,0x1131,0x1931,0x2151,0x2130,0x2110,0x210F,0x2110,0x2110,0x2111,0x1912,0x1933,0x1134,0x1175,0x11B7,0x11D8,0x11D8,0x11F8,0x11D8,0x11B6,0x1175,0x1154,0x1953,0x1932,0x1931,0x2131,0x2131,0x2130,0x2930,0x2930,0x2930,0x2930,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2950,0x3150,0x3150,0x3150,0x3150,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3951,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x4172,0x4192,0x4192,0x4192,0x4192,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x51B2,0x5192,0x5171,0x5991,0x594F,0x8AB4,0xDCDB,0xDCBA,0xDC99,0xDC78,0xDC58,0xDC37,0xDC37,0xDC17,0xDC37,0xDC37,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC37,0xDC16,0xDC16,0xDC16,0xDC17,0xDC37,0xDC16,0xDC37,0xDBF6,0xDC16,0xDC37,0xDC57,0xD457,0xC457,0xAC57,0x9C57,0x94D8,0x8D5A,0x8E1C,0x7E3C,0x765D,0x6E7D,0x6EBE,0x66DE,0x66FE,0x66DE,0x66FE,0x5EDE,0x66FE,0x66FE,0x5EFE,0x5EFE,0x66FE,0x5EDE,0x66FE,0x5EDE,0x5EDE,0x5EDE,0x5EBE,0x66BE,0x66BE,0x5EBE,0x66BE,0x66BE,0x66BE,0x66BE,0x66BE,0x669E,0x66BE,0x669E,0x669E,0x6E9E,0x6EBE,0x6E9E,0x6EBE,0x76DF,0x76DF,0x7EBE,0x86BE,0x8E9F,0x8E7E,0x8E5E,0x963D,0x95FC,0x8D9B,0x8519,0x7CB8,0x7456,0x73F5,0x7BF5,0x8C16,0x9436,0x9C16,0xAC37,0xB437,0xABD6,0xBBD7,0xBB96,0xC396,0xCB96,0xCB76,0xCB76,0xCB56,0xD376,0xD356,0xD356,0xD356,0xD336,0xD336,0xD336,0xCB15,0xCB15,0xD356,0xCB36,0xCB36,0xC335,0xC315,0xBAF5,0xBAD5,0xC315,0xCB56,0xCB36,0xCB36,0xC336,0xBB56,0xB357,0xA377,0x93B8,0x73D8,0x6419,0x753C,0x6D9D,0x6D7D,0x6D5D,0x64DB,0x7CFB,0x8C9A,0x8376,0x9335,0xA356,0xBB77,0xBB36,0xBB36,0xBAF6,0xC316,0xC316,0xC337,0xBB38,0x89F3,0x6110,0x6151,0x5972,0x5172,0x5172,0x4992,0x4992,0x4992,0x4192,0x4192,0x4172,0x4192,0x4172,0x3972,0x3972,0x3972,0x3972,0x3971,0x3151,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x3151,0x3151,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x290F,0x292F,0x212F,0x2130,0x292F,0x212F,0x292F,0x290F,0x2930,0x290F,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2131,0x2110,0x2110,0x2131,0x2111,0x2111,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x2910,0x2110,0x2110,0x2110,0x2130,0x2930,0x290F,0x212F,0x292F,0x290F,0x292F,0x2930,0x2130,0x2930,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1910,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1931,0x2131,0x2131,0x2131,0x2130,0x2130,0x2930,0x292F,0x290F,0x292F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1930,0x1931,0x1951,0x1951,0x1951,0x1931,0x1931,0x1930,0x1930,0x1931,0x1931,0x1931,0x1931,0x1951,0x1952,0x1952,0x1931,0x1931,0x1952,0x1931,0x1931,0x1910,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2151,0x2131,0x2130,0x2130,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1930,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2110,0x2130,0x2130,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2930,0x290F,0x210F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930, + 0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x290F,0x210F,0x290F,0x290F,0x212F,0x210F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2910,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x290F,0x210F,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x292F,0x292F,0x2130,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x2930,0x212F,0x212F,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2131,0x1931,0x1931,0x1932,0x1153,0x1175,0x1196,0x11D8,0x11D8,0x11F9,0x1A19,0x11F9,0x11D8,0x11D8,0x11D8,0x11D8,0x19F8,0x19F8,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19D7,0x19F7,0x19D7,0x19F7,0x19F7,0x19F7,0x19D7,0x19F7,0x19D7,0x19F7,0x19F7,0x19F7,0x19D7,0x19F7,0x19F7,0x19F8,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x2217,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x1A17,0x19F7,0x19F8,0x19F8,0x19F7,0x19F7,0x2218,0x19F7,0x1A18,0x19F7,0x2218,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19D7,0x11D7,0x19F7,0x19F8,0x1A38,0x2239,0x2238,0x2259,0x2239,0x1A39,0x1A18,0x1A18,0x1A39,0x1219,0x1A39,0x11F8,0x11D8,0x1196,0x1175,0x1134,0x10F2,0x1911,0x2111,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x290F,0x210F,0x292F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2131,0x1911,0x1931,0x1112,0x1933,0x1974,0x1995,0x19B6,0x1995,0x1995,0x1975,0x1154,0x1153,0x1953,0x1952,0x1911,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x2130,0x2130,0x2130,0x2930,0x292F,0x210F,0x292F,0x292F,0x290F,0x28EF,0x30F0,0x30B0,0x38B0,0x4090,0x4030,0x5872,0x9219,0xB2DD,0xC2FE,0xC2FD,0xC2FD,0xC31E,0xC33E,0xBB3D,0x81B6,0x4850,0x4070,0x3890,0x30B0,0x28D0,0x28F0,0x28F0,0x2910,0x2910,0x2930,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x2110,0x2130,0x2110,0x2910,0x210F,0x210F,0x290F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2131,0x1931,0x1932,0x1153,0x1195,0x11F8,0x09F9,0x09F9,0x09F9,0x09F9,0x09D8,0x09D7,0x11F7,0x11D6,0x11B5,0x0974,0x1132,0x1132,0x1951,0x2131,0x2130,0x2110,0x2110,0x2111,0x2132,0x1933,0x1954,0x1996,0x19D7,0x19F8,0x11D8,0x09B8,0x09D8,0x11D8,0x11D7,0x11B7,0x1195,0x1154,0x1133,0x1932,0x1931,0x2131,0x2131,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x2930,0x3150,0x3150,0x3150,0x2930,0x3150,0x3150,0x3151,0x3151,0x3151,0x3150,0x3151,0x3150,0x3151,0x3951,0x3151,0x3151,0x3951,0x3971,0x3951,0x3951,0x3951,0x3971,0x3972,0x3972,0x3972,0x3972,0x3972,0x4192,0x4192,0x4192,0x4172,0x4172,0x4992,0x49B3,0x4992,0x4992,0x4992,0x4992,0x51B2,0x51B2,0x5191,0x5171,0x5950,0x616F,0xABB7,0xDCDB,0xDCBA,0xDC99,0xDC58,0xDC38,0xDC58,0xDC58,0xDC38,0xDC37,0xDC17,0xDC37,0xDC17,0xE437,0xDC16,0xDC16,0xDC16,0xDC16,0xDC17,0xDC37,0xDC17,0xDC17,0xDBF6,0xDBF6,0xD416,0xDC37,0xDC37,0xDC37,0xD437,0xCC58,0xBC57,0xAC57,0x9498,0x84F9,0x7D9B,0x6DFC,0x667D,0x5EBD,0x56FE,0x4EFE,0x46FE,0x46FE,0x3EFE,0x3EFE,0x3EDE,0x3EDE,0x36DE,0x36DE,0x36DE,0x36DD,0x36FE,0x36DE,0x36DE,0x36DE,0x3EDE,0x3EDE,0x3EDE,0x3EDE,0x3EDE,0x3EDE,0x3EDE,0x3EDE,0x3EBE,0x3EDE,0x3EBE,0x46DE,0x46DE,0x46DE,0x46DF,0x46DE,0x46DF,0x46BE,0x46DE,0x46BE,0x4EBE,0x4EBE,0x56BE,0x569E,0x5E9E,0x667E,0x669E,0x6E9E,0x769E,0x769E,0x7E9E,0x765D,0x75FC,0x759A,0x6D19,0x6C97,0x7477,0x7C36,0x7BB5,0x8395,0x9BB6,0xA3B6,0xAB96,0xBB96,0xC396,0xC376,0xC355,0xCB56,0xCB36,0xD336,0xD356,0xD356,0xD336,0xD336,0xD336,0xD316,0xCB16,0xCB36,0xD356,0xD356,0xCB36,0xCB36,0xCB15,0xC2D4,0xCB15,0xCAF5,0xCB16,0xCB36,0xC357,0xBB57,0xAB36,0x9336,0x8BD9,0x73F9,0x6459,0x6D5D,0x659D,0x5D9D,0x659D,0x5CFB,0x751B,0x84DA,0x7BB6,0x8314,0xA356,0xB376,0xC357,0xC316,0xC316,0xC316,0xC2F6,0xC317,0xC338,0xAAB6,0x7171,0x58F0,0x5951,0x5972,0x5172,0x4992,0x4992,0x4992,0x4172,0x4172,0x4192,0x4192,0x3972,0x3972,0x3972,0x3972,0x3972,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x292F,0x290F,0x210F,0x2130,0x212F,0x2130,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x210F,0x210F,0x2910,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2130,0x2131,0x2131,0x2131,0x1931,0x2131,0x2131,0x2131,0x1931,0x2131,0x2151,0x1931,0x1931,0x1951,0x1931,0x1951,0x1951,0x2151,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2910,0x2930,0x290F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x1951,0x1951,0x1931,0x1931,0x2130,0x1930,0x1930,0x1930,0x1951,0x1951,0x1951,0x1951,0x1931,0x2152,0x1931,0x1931,0x2130,0x2110,0x2130,0x1910,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x1930,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1930,0x1931,0x1930,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1930,0x2130,0x2130,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2930,0x210F,0x210F,0x2930,0x2930,0x2130,0x212F,0x2930,0x212F,0x212F,0x210F,0x2910,0x2910,0x210F,0x2930,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930, + 0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2910,0x290F,0x290F,0x210F,0x2930,0x290F,0x210F,0x210F,0x2910,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2930,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x292F,0x292F,0x210F,0x290F,0x290F,0x292F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x212F,0x2930,0x212F,0x210F,0x212F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2131,0x1931,0x1932,0x1954,0x1175,0x1196,0x11D7,0x19F9,0x11D8,0x11F9,0x11F9,0x11D9,0x11D9,0x11D9,0x11F9,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11D8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11D8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x1219,0x11F8,0x19F9,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x19F8,0x11F8,0x11F8,0x11F8,0x19F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11D8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x1218,0x11F8,0x11F8,0x11F8,0x1218,0x11F8,0x11F8,0x11F8,0x1218,0x11F8,0x11F8,0x11F8,0x1218,0x1218,0x1218,0x11F8,0x1218,0x1A39,0x11F9,0x11F9,0x11F9,0x11D8,0x11F8,0x09D8,0x09D8,0x09D7,0x09B7,0x09B7,0x09D7,0x11F8,0x09D7,0x11D7,0x1196,0x1155,0x1134,0x1112,0x1912,0x1911,0x2111,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2910,0x2910,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x2130,0x210F,0x210F,0x2110,0x2110,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2111,0x1931,0x1931,0x1932,0x1932,0x1953,0x1933,0x1933,0x1932,0x1932,0x1931,0x1931,0x1931,0x1930,0x1910,0x2110,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2930,0x2930,0x212F,0x2930,0x212F,0x292F,0x210F,0x290F,0x28EF,0x28EF,0x28EF,0x30CF,0x30B0,0x3890,0x3850,0x3810,0x4010,0x5072,0x60F4,0x6914,0x60D3,0x4851,0x4010,0x380F,0x3870,0x38B0,0x30AF,0x28D0,0x28F0,0x28F0,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x290F,0x2910,0x210F,0x2930,0x290F,0x2930,0x290F,0x290F,0x2910,0x210F,0x2110,0x2930,0x2910,0x210F,0x290F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1953,0x1174,0x11B6,0x1218,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F8,0x09F8,0x11D7,0x11D7,0x11B5,0x1174,0x1153,0x1952,0x1931,0x1910,0x2131,0x2131,0x2132,0x2153,0x1954,0x1995,0x19F7,0x19F8,0x11D8,0x09B7,0x09B7,0x09B7,0x09B8,0x19F9,0x11D8,0x19B7,0x1995,0x1954,0x1953,0x1932,0x2131,0x2131,0x2931,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3130,0x3150,0x3150,0x3150,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3951,0x3951,0x3951,0x3951,0x3971,0x3971,0x3971,0x3971,0x3972,0x3972,0x3972,0x3972,0x3972,0x4192,0x4192,0x4192,0x4172,0x4192,0x4993,0x49B3,0x4992,0x4992,0x4992,0x51B2,0x51B2,0x5192,0x5991,0x5970,0x6190,0xB3F8,0xDCDB,0xDCBA,0xDC79,0xDC58,0xDC58,0xDC57,0xDC37,0xDC58,0xDC37,0xDC37,0xDC16,0xDC17,0xDC37,0xDC17,0xDC16,0xDC16,0xDC16,0xDC17,0xDC17,0xDC17,0xDC37,0xDC17,0xDC16,0xD416,0xD416,0xDC57,0xDC57,0xD478,0xCC57,0xB457,0xA477,0x94B8,0x7D19,0x6D9A,0x663C,0x5EBE,0x4F1E,0x3F1E,0x373E,0x2F1E,0x2F1E,0x26FE,0x26FE,0x26FE,0x1EFE,0x1EDE,0x1EFE,0x1EFE,0x1EFE,0x1F1E,0x1EFE,0x1EDE,0x271E,0x1EFE,0x1EDE,0x1EDE,0x1EDE,0x1EDE,0x1EDE,0x1EDE,0x1EDE,0x1EDE,0x26DE,0x26DE,0x26DE,0x26DE,0x26DE,0x26DE,0x26DE,0x26DE,0x2EDF,0x2EDF,0x2EDE,0x2EDE,0x2EDE,0x36DE,0x36BE,0x36BE,0x369D,0x3E9E,0x3E9E,0x3E9E,0x469E,0x4EBE,0x4EDF,0x56FF,0x66FF,0x6EFF,0x76DF,0x7E9E,0x7E3D,0x7DBB,0x74F9,0x7437,0x73D6,0x83F6,0x8BB6,0x9B95,0xA396,0xAB96,0xBBB7,0xB356,0xC376,0xC336,0xCB56,0xCB36,0xCB56,0xCB36,0xD336,0xD336,0xD336,0xD316,0xD336,0xCB15,0xD336,0xD336,0xCB15,0xCB15,0xCAF5,0xC2D5,0xCAF5,0xCB16,0xCB16,0xC316,0xBB36,0xA316,0x9337,0x8BF9,0x6C19,0x5C9A,0x657D,0x5D9D,0x5DDE,0x5DDD,0x659C,0x64FA,0x8D3C,0x7BF7,0x7AF4,0x9B15,0xBB77,0xC356,0xC316,0xCAF6,0xCAF6,0xC2F6,0xCB17,0xC317,0xBB18,0x89F3,0x58CF,0x6151,0x5972,0x5192,0x5192,0x4992,0x4992,0x4992,0x4172,0x4192,0x4172,0x3972,0x4192,0x3972,0x3972,0x3972,0x3972,0x3151,0x3151,0x3151,0x3151,0x3171,0x3151,0x3151,0x3151,0x3131,0x3150,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x290F,0x2930,0x292F,0x292F,0x2930,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x210F,0x2930,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2951,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2131,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x1910,0x2131,0x2130,0x2131,0x2131,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x2131,0x2131,0x1931,0x2131,0x1931,0x2131,0x2151,0x2151,0x1931,0x1931,0x1951,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x1911,0x2151,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1951,0x2131,0x2131,0x2130,0x2130,0x2131,0x2131,0x1951,0x1951,0x1951,0x1931,0x1931,0x1931,0x2131,0x2131,0x2130,0x2130,0x2131,0x2131,0x2131,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2151,0x2130,0x2131,0x2130,0x2130,0x2131,0x1930,0x1930,0x1931,0x2131,0x1931,0x1931,0x1931,0x1930,0x1931,0x1931,0x1930,0x1910,0x1930,0x2151,0x2130,0x2131,0x1931,0x2131,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2151,0x1930,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2151,0x2131,0x2131,0x2131,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2930,0x212F,0x212F,0x210F,0x2110,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x2110,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910, + 0x212F,0x212F,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x212F,0x290F,0x292F,0x290F,0x2930,0x2930,0x2110,0x2910,0x290F,0x210F,0x2910,0x2910,0x2930,0x2910,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x292F,0x292F,0x210F,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x210F,0x2910,0x2910,0x2910,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x2151,0x1932,0x1932,0x1113,0x1155,0x1196,0x11B7,0x11D8,0x11D8,0x11D8,0x11D9,0x09B8,0x09B8,0x11D8,0x11D8,0x11D8,0x09B8,0x09B8,0x11B8,0x09B7,0x09B7,0x11D8,0x11D8,0x11D8,0x09B8,0x09B8,0x11D8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B7,0x09B8,0x09B8,0x09B8,0x09B8,0x09B7,0x09B8,0x09B8,0x09B7,0x09B7,0x09B7,0x09B7,0x09B7,0x09B7,0x09B7,0x0997,0x09B7,0x09B8,0x09B8,0x0997,0x09B8,0x09B8,0x0997,0x0997,0x09B7,0x09B7,0x09B8,0x09B8,0x09B8,0x09B7,0x0997,0x09B8,0x09B7,0x09B7,0x09B8,0x09B7,0x0997,0x09B7,0x09B7,0x09D8,0x09D8,0x09B8,0x09B8,0x09B8,0x0998,0x0997,0x0997,0x0997,0x09B7,0x09B7,0x09D8,0x09D7,0x11F8,0x09B7,0x19F7,0x11B6,0x0934,0x1113,0x1933,0x1912,0x2132,0x2131,0x2131,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x2130,0x2930,0x2930,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2910,0x2930,0x2930,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2110,0x20F0,0x2910,0x2910,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x2130,0x2930,0x2130,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x1910,0x1910,0x2131,0x1931,0x2131,0x1931,0x1911,0x1931,0x1931,0x1930,0x1930,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x2110,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x3110,0x30F0,0x30D0,0x30B0,0x3090,0x3870,0x3870,0x382F,0x300F,0x300F,0x304F,0x3070,0x306F,0x30AF,0x30D0,0x28F0,0x28F0,0x28EF,0x290F,0x2930,0x2910,0x2910,0x2910,0x2930,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x290F,0x210F,0x290F,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x2910,0x290F,0x2930,0x2930,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2111,0x1912,0x1954,0x1195,0x11D7,0x1219,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x01F9,0x09F9,0x09F8,0x09D7,0x11B6,0x1195,0x1153,0x1932,0x1931,0x1910,0x1910,0x2131,0x1932,0x1954,0x1975,0x21D7,0x19F8,0x19D8,0x11B7,0x09B7,0x0997,0x0997,0x09B7,0x19F9,0x19F9,0x19F8,0x19B6,0x19B5,0x1953,0x1952,0x2132,0x2131,0x2931,0x2951,0x2931,0x2930,0x2931,0x2930,0x2930,0x3130,0x2930,0x2930,0x2930,0x2930,0x3130,0x3150,0x3150,0x3150,0x3150,0x3150,0x3150,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x3951,0x3951,0x3971,0x3951,0x3951,0x3951,0x3951,0x3951,0x3971,0x3992,0x3972,0x4172,0x4172,0x4192,0x4192,0x4192,0x4192,0x4192,0x49B3,0x49B3,0x49B3,0x49B3,0x4992,0x51B3,0x51B2,0x51B2,0x51B2,0x5192,0x5971,0x5950,0x69D1,0xC47A,0xD4BB,0xDC9A,0xDC79,0xDC78,0xDC58,0xDC37,0xDC37,0xDC37,0xDC17,0xDC37,0xDC17,0xDC37,0xDC37,0xDC16,0xDC37,0xDC16,0xDC17,0xDC16,0xDC37,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xD437,0xD437,0xD457,0xCC57,0xC478,0xB457,0x9C77,0x8497,0x7539,0x6E1B,0x669D,0x571E,0x471F,0x373F,0x273E,0x275F,0x1F5F,0x1F5F,0x1F3F,0x171E,0x171F,0x171F,0x171F,0x171F,0x173F,0x171F,0x171F,0x171F,0x173F,0x171F,0x171F,0x16FE,0x171F,0x16FE,0x171F,0x171F,0x16FF,0x171F,0x171F,0x16FF,0x16FF,0x16FF,0x16FF,0x171F,0x171F,0x171F,0x171F,0x1F1F,0x1F1F,0x1F1F,0x1F1F,0x1F1F,0x1F1F,0x271F,0x26FF,0x26FF,0x26FE,0x26DE,0x1EBE,0x26BE,0x26BE,0x2EDE,0x2EBE,0x36DE,0x46DE,0x4EBE,0x5EBF,0x66BF,0x7EBF,0x869F,0x8E5E,0x85BC,0x7D1A,0x7CB9,0x8458,0x8C38,0x8BD6,0x9396,0x9B96,0xAB97,0xB376,0xBB97,0xC376,0xCB77,0xCB36,0xCB36,0xD336,0xCB16,0xD316,0xD316,0xD316,0xCAF5,0xD316,0xD315,0xCAF5,0xCAD5,0xC2B4,0xC2D5,0xCB16,0xCB36,0xCB16,0xCB37,0xBB37,0xA2F6,0x8B57,0x8419,0x6C59,0x549A,0x5DBE,0x55BD,0x55FE,0x5E3E,0x5DBD,0x5CFA,0x855C,0x7C18,0x7B14,0x9AF4,0xBB56,0xC316,0xCB16,0xCB37,0xCAF6,0xC2D6,0xCAF6,0xC2F6,0xC338,0xA296,0x7130,0x6130,0x5972,0x5992,0x5192,0x4992,0x4992,0x4992,0x4192,0x4172,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2910,0x2930,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x2131,0x2131,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2111,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2110,0x2131,0x2131,0x1911,0x1911,0x2131,0x2131,0x1931,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1932,0x1931,0x1931,0x1911,0x1911,0x1911,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x1931,0x2151,0x1950,0x1930,0x1930,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1952,0x1931,0x1932,0x1952,0x1931,0x1931,0x1931,0x1911,0x1910,0x2131,0x2131,0x1931,0x1951,0x1951,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1910,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1951,0x1951,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1952,0x1951,0x1931,0x1931,0x2131,0x2131,0x2131,0x2130,0x2131,0x2130,0x1930,0x2131,0x2130,0x1931,0x2151,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x210F,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2910,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x2910,0x210F,0x290F,0x290F,0x2910,0x2930, + 0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x212F,0x2930,0x210F,0x210F,0x2910,0x2110,0x2910,0x290F,0x290F,0x2910,0x2930,0x2930,0x2910,0x2930,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2110,0x2930,0x2930,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x290F,0x2930,0x292F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x212F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2910,0x2910,0x2110,0x2930,0x2130,0x2110,0x2110,0x2930,0x2930,0x2110,0x2930,0x2130,0x2130,0x2131,0x1911,0x1912,0x1932,0x1933,0x1955,0x1996,0x19B7,0x19D8,0x11D8,0x11D8,0x11D8,0x11F9,0x11B8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11F8,0x11D8,0x11D8,0x11D8,0x11F8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11F8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11F9,0x11D8,0x09B8,0x11D8,0x11D8,0x11D8,0x09B8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x09B7,0x11D8,0x11F8,0x11D8,0x11D8,0x11D7,0x09B7,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x09D8,0x09D8,0x11D8,0x11D8,0x11D8,0x11B8,0x11D8,0x11D8,0x11B8,0x09B7,0x11D8,0x11D8,0x11D8,0x11F8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11F8,0x09D8,0x11F8,0x11D8,0x11B8,0x11B8,0x09B8,0x11B8,0x11F8,0x11D8,0x11F8,0x1A18,0x11D7,0x11F7,0x19F7,0x1195,0x1154,0x1133,0x1932,0x1912,0x2132,0x2111,0x2110,0x2910,0x2110,0x2110,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2930,0x210F,0x2930,0x210F,0x210F,0x2130,0x210F,0x2110,0x210F,0x290F,0x290F,0x2910,0x210F,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2910,0x2110,0x210F,0x2130,0x2110,0x2930,0x2110,0x2130,0x2130,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x2910,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x292F,0x2930,0x2910,0x2910,0x28EF,0x30F0,0x30B0,0x30B0,0x30B0,0x3090,0x38D1,0x30B0,0x3090,0x288F,0x30D0,0x28D0,0x28F0,0x28EF,0x28EF,0x2910,0x2930,0x2930,0x210F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x210F,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x2930,0x2910,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1912,0x1133,0x1196,0x11F8,0x09D8,0x01D9,0x01D9,0x01B9,0x01B9,0x01D9,0x01F9,0x01D9,0x01D8,0x09F8,0x09B7,0x11B6,0x1174,0x1132,0x1111,0x1911,0x1931,0x1912,0x1933,0x1934,0x1996,0x19F7,0x19F8,0x11B8,0x0997,0x0996,0x0996,0x0996,0x0996,0x11B7,0x19F8,0x19F8,0x19D7,0x19B6,0x1974,0x1952,0x2152,0x2151,0x2951,0x2931,0x2931,0x2931,0x2931,0x2930,0x2930,0x2930,0x2930,0x3150,0x3150,0x3150,0x3130,0x3150,0x3130,0x3151,0x3150,0x3150,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3951,0x3951,0x3951,0x3971,0x3971,0x3951,0x3952,0x3972,0x3972,0x3972,0x4192,0x4192,0x4172,0x4192,0x4192,0x4192,0x4192,0x49B2,0x49B3,0x49B3,0x49B3,0x49B2,0x4992,0x5192,0x51B2,0x51B2,0x5992,0x5991,0x514F,0x69D1,0xC45A,0xD49A,0xDC9A,0xDC79,0xDC58,0xDC57,0xDC37,0xDC57,0xDC17,0xDC17,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC16,0xDC36,0xDC16,0xDC16,0xDC36,0xDC37,0xDC17,0xDC37,0xD416,0xD436,0xD457,0xD437,0xD477,0xC457,0xBC78,0xAC78,0x9457,0x84B8,0x757A,0x6E3C,0x5EBD,0x4F1E,0x3F3F,0x2F3E,0x1F5F,0x1F7F,0x175F,0x175F,0x175F,0x0F5F,0x0F3F,0x0F3F,0x0F3F,0x0F3F,0x0F3F,0x0F3F,0x0F3F,0x0F3F,0x0F1F,0x0F1F,0x0F1F,0x0F1F,0x0F1F,0x0F1F,0x0F1F,0x06FF,0x0F1F,0x0F1F,0x0F1F,0x0F1F,0x0F1F,0x0EFF,0x0EFF,0x0EFF,0x0EFF,0x0F1F,0x0F1F,0x0EFF,0x0EFF,0x0F1F,0x0F1F,0x0EFF,0x0EFF,0x0EFF,0x171F,0x16FF,0x171F,0x0EFE,0x16FF,0x16FF,0x16FF,0x16FF,0x16DE,0x1EDE,0x1EDE,0x26BE,0x2EBE,0x369E,0x3E5D,0x467D,0x5E9E,0x669F,0x769F,0x7E7F,0x7E1D,0x85DD,0x7D3B,0x84FA,0x8499,0x8C58,0x93F7,0x9BB7,0xA3B7,0xAB97,0xBB77,0xC357,0xCB77,0xCB36,0xCB16,0xD336,0xCB16,0xD316,0xD316,0xD316,0xD336,0xD316,0xD316,0xCAD5,0xCAB5,0xCAD5,0xD316,0xCB16,0xCB16,0xC337,0xB317,0x9B16,0x8B77,0x7C3A,0x5C59,0x551C,0x5DFE,0x561E,0x4DFE,0x5E5F,0x661E,0x5D1A,0x74DA,0x8458,0x8334,0x92D4,0xBB36,0xC336,0xC316,0xCAF6,0xCAF6,0xCAB5,0xCAF6,0xCAF6,0xC317,0xB2F7,0x79B2,0x58F0,0x5972,0x5992,0x5172,0x4972,0x4992,0x4172,0x4192,0x4172,0x4192,0x3972,0x3992,0x3972,0x3972,0x3972,0x3972,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x2130,0x2130,0x2110,0x2110,0x2130,0x210F,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2130,0x2110,0x2130,0x2131,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1932,0x2132,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x2131,0x1931,0x2131,0x2131,0x1911,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1931,0x1932,0x1932,0x1932,0x1911,0x1932,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1932,0x1932,0x1912,0x1912,0x1932,0x1932,0x1932,0x1931,0x1932,0x1932,0x1931,0x1931,0x1931,0x1131,0x1932,0x1911,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1912,0x1932,0x1912,0x1932,0x1912,0x1932,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1952,0x1952,0x1952,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x1932,0x1931,0x1952,0x1932,0x1952,0x1952,0x1932,0x1932,0x1932,0x1931,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1952,0x1931,0x1952,0x1931,0x1931,0x1952,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1952,0x1932,0x1131,0x1952,0x1932,0x1932,0x1932,0x1932,0x1932,0x1132,0x1932,0x1132,0x1132,0x1932,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x2130,0x212F,0x2930,0x210F,0x2110,0x2110,0x210F,0x2930,0x2110,0x210F,0x2930,0x290F,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930, + 0x2930,0x212F,0x210F,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x2930,0x292F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x2910,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x210F,0x290F,0x2930,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x210F,0x2930,0x2110,0x2130,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x2112,0x1912,0x1953,0x2195,0x21B6,0x19D7,0x19F8,0x19F8,0x19F8,0x19F8,0x19F7,0x19F8,0x1A18,0x1A18,0x19F8,0x19D7,0x19F8,0x19D7,0x19F8,0x19F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11D8,0x11F8,0x19F8,0x19F8,0x19F8,0x1A18,0x1A18,0x19F8,0x19F8,0x19F8,0x1A19,0x19F8,0x1A18,0x19F8,0x19F8,0x1A18,0x19F8,0x19F8,0x19F8,0x19F8,0x1A18,0x19F8,0x19F8,0x1A18,0x19F8,0x19F8,0x1A18,0x1A18,0x19F8,0x1A18,0x1A18,0x1A18,0x19F8,0x19F8,0x1A18,0x1A18,0x19F8,0x19F8,0x19F8,0x1A18,0x1A18,0x19F8,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x19F8,0x1A18,0x2238,0x19F8,0x1A18,0x1A18,0x11F8,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A38,0x1A17,0x2237,0x2237,0x19D6,0x1174,0x1133,0x1932,0x1912,0x1911,0x2111,0x2111,0x2131,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x2930,0x290F,0x2930,0x210F,0x2930,0x290F,0x210F,0x2910,0x290F,0x210F,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2110,0x2930,0x2930,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2910,0x210F,0x212F,0x212F,0x2130,0x2110,0x210F,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x212F,0x2950,0x2130,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x28F0,0x30F0,0x28CF,0x30F0,0x30D0,0x30D0,0x30F0,0x3110,0x28F0,0x28EF,0x28EF,0x290F,0x2910,0x290F,0x210F,0x290F,0x2930,0x2930,0x2910,0x2930,0x2930,0x290F,0x290F,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x210F,0x290F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2111,0x1932,0x1154,0x19B7,0x11F8,0x09F9,0x01B9,0x01D9,0x01B9,0x01B9,0x01DA,0x01FA,0x01D9,0x01D9,0x09D8,0x09D8,0x11D7,0x1195,0x1152,0x1111,0x1951,0x1932,0x1912,0x1912,0x1934,0x21B7,0x19D7,0x11D7,0x0997,0x0976,0x0975,0x0975,0x0975,0x0996,0x0996,0x11B7,0x19D8,0x19D7,0x21D6,0x1974,0x1932,0x2152,0x2152,0x2952,0x2951,0x2931,0x2931,0x2930,0x2931,0x2931,0x3151,0x3150,0x2930,0x3150,0x3150,0x3130,0x3151,0x3151,0x3151,0x3151,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3971,0x3951,0x3951,0x3951,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x4172,0x4172,0x4172,0x4172,0x4172,0x4193,0x4192,0x4192,0x4192,0x4172,0x4992,0x49B3,0x49B3,0x51B3,0x51B3,0x51B2,0x51B2,0x51B2,0x5192,0x5971,0x5950,0x7212,0xD4BB,0xD47A,0xD479,0xDC79,0xDC58,0xDC37,0xDC37,0xDC37,0xDC17,0xDC37,0xDC17,0xDC16,0xDC16,0xDC16,0xDC37,0xDC17,0xDC16,0xDC16,0xDC36,0xDC36,0xDC36,0xD416,0xD416,0xD416,0xD436,0xD457,0xCC57,0xCC98,0xC4B8,0xB4B8,0x9C36,0x8456,0x7CF8,0x75BA,0x6E9D,0x5EBD,0x4F3F,0x373E,0x273E,0x1F5F,0x177F,0x0F5E,0x0F5F,0x0F5F,0x0F5F,0x0F5F,0x0F3F,0x0F3F,0x0F3F,0x0F3F,0x0F1F,0x0F1F,0x071F,0x071F,0x071F,0x071F,0x071F,0x071F,0x071F,0x071F,0x06FF,0x071F,0x071F,0x06FF,0x071F,0x071F,0x06FF,0x06FF,0x06FF,0x0EFF,0x06FF,0x06FF,0x06FF,0x071F,0x06FF,0x06FF,0x06FF,0x0F1F,0x06FF,0x0EFF,0x06FF,0x0EFF,0x0F1F,0x0EFF,0x0EFF,0x0EFF,0x0EFF,0x0EFF,0x0EFF,0x16FF,0x16FF,0x1EDF,0x1EDF,0x26DF,0x2EBF,0x2EBF,0x369E,0x3E9E,0x4E9F,0x56BF,0x66BF,0x667F,0x663E,0x65BC,0x653A,0x6CDA,0x74BA,0x7C59,0x8BF8,0x9397,0x9B77,0xAB77,0xBB77,0xC398,0xCB57,0xCB36,0xD337,0xCB16,0xCAF6,0xCAF6,0xCAF5,0xD316,0xD316,0xDB37,0xCAD5,0xC294,0xC2B5,0xCAD5,0xCAF6,0xC2F6,0xC357,0xB337,0x92F6,0x8377,0x7C5A,0x5479,0x5DDE,0x4DFE,0x45FD,0x45FD,0x565F,0x665F,0x6DBD,0x74FA,0x7C37,0x7B34,0x92F4,0xB335,0xBAF5,0xCB16,0xCAF6,0xCAD6,0xC295,0xCAD6,0xCAF6,0xCB17,0xBB17,0x9234,0x58EF,0x5931,0x5992,0x5172,0x4972,0x4972,0x4992,0x4192,0x4193,0x3972,0x3972,0x3972,0x3972,0x3972,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x3151,0x3150,0x2930,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x2930,0x2930,0x290F,0x290F,0x210F,0x212F,0x212F,0x2130,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x2930,0x2930,0x2930,0x212F,0x212F,0x2930,0x2930,0x2930,0x2130,0x2110,0x2131,0x1931,0x1931,0x1931,0x1932,0x1132,0x1132,0x1112,0x1932,0x1112,0x1932,0x1112,0x1112,0x1112,0x1112,0x1112,0x10F2,0x10F1,0x1112,0x10F2,0x1112,0x10F2,0x1112,0x10F1,0x10F2,0x10F2,0x10F2,0x10F2,0x1112,0x10F2,0x10F2,0x10F2,0x10F2,0x10F2,0x10F2,0x10F1,0x10F2,0x10F1,0x10F2,0x10F2,0x10F2,0x10F1,0x10F1,0x10F1,0x10F1,0x10F1,0x10F2,0x10F2,0x10F2,0x10F2,0x10F1,0x10F1,0x1112,0x10F1,0x10F1,0x10F1,0x10F1,0x10F1,0x10F2,0x10F2,0x10F2,0x10F2,0x10F1,0x10F1,0x10F1,0x10D1,0x10F1,0x10F1,0x10F1,0x10F2,0x10F1,0x08F1,0x10F2,0x10F2,0x10F2,0x10F2,0x10F2,0x08F1,0x10F2,0x08F1,0x08F1,0x08F1,0x0912,0x0911,0x0911,0x08F1,0x08F1,0x08F1,0x08D1,0x08F1,0x0912,0x0912,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x10F2,0x1112,0x10F2,0x10F2,0x10F2,0x10F2,0x08F1,0x10F1,0x10F1,0x10F1,0x10F1,0x10D1,0x10D2,0x10D2,0x08D1,0x1112,0x0912,0x08F1,0x0911,0x0911,0x1111,0x1111,0x08F1,0x10F2,0x10F2,0x10F2,0x08F1,0x10F2,0x10F1,0x1112,0x10F1,0x1112,0x1112,0x1112,0x08F2,0x0912,0x08F2,0x1112,0x1112,0x1112,0x10F2,0x10F1,0x08F1,0x1111,0x10F1,0x1112,0x0911,0x0912,0x0912,0x0912,0x0912,0x0912,0x1112,0x1112,0x08F2,0x1112,0x1112,0x1112,0x1112,0x1112,0x0911,0x0911,0x0911,0x0911,0x0911,0x0911,0x0911,0x0912,0x0912,0x1132,0x1112,0x1112,0x10F1,0x1111,0x10F1,0x10F1,0x10F1,0x10F2,0x10F2,0x10F2,0x08F2,0x1112,0x08F2,0x1112,0x08F2,0x0911,0x0911,0x08F2,0x08F2,0x1112,0x08F2,0x0912,0x08F2,0x08F2,0x08F2,0x0912,0x0912,0x0912,0x0912,0x0912,0x10F2,0x10F1,0x10F1,0x10F1,0x10F1,0x08F1,0x10F1,0x10F1,0x10F1,0x1112,0x1111,0x1112,0x1112,0x1132,0x1132,0x1112,0x1132,0x1932,0x1932,0x1931,0x1911,0x1911,0x2131,0x2131,0x2131,0x2131,0x2150,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x2130,0x2930,0x212F,0x292F,0x212F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x290F,0x210F,0x2930,0x2930,0x2930,0x2910,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910,0x210F,0x290F,0x210F,0x210F,0x2930,0x290F,0x2930,0x2930, + 0x290F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x2930,0x2910,0x2910,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x290F,0x210F,0x2930,0x290F,0x210F,0x290F,0x2930,0x290F,0x2930,0x210F,0x2110,0x2110,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2930,0x2110,0x210F,0x2110,0x2910,0x2110,0x2930,0x2110,0x2910,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x290F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x2110,0x210F,0x212F,0x2130,0x2130,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x2111,0x2111,0x1912,0x1932,0x1953,0x1954,0x1995,0x1995,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19D6,0x19D7,0x19B6,0x19D7,0x11D6,0x19D7,0x19B6,0x19D6,0x19B6,0x19B6,0x11B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19D7,0x19B7,0x19D7,0x19B7,0x19D7,0x19B6,0x19B7,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19D6,0x19D6,0x19D6,0x19B6,0x19B6,0x19B6,0x19B6,0x11B6,0x19D6,0x19B6,0x11B6,0x11B6,0x19B6,0x19B6,0x19B6,0x1196,0x19D6,0x11B6,0x19D6,0x11D6,0x19D6,0x19B6,0x19D6,0x11B6,0x19D6,0x19D6,0x11B6,0x19B6,0x11B6,0x19B6,0x19B6,0x11B6,0x19B6,0x1195,0x19B5,0x1194,0x1174,0x1153,0x1132,0x1132,0x1912,0x1911,0x1911,0x2111,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x212F,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x2930,0x2910,0x2910,0x292F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2930,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2910,0x2910,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x212F,0x210F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x28EF,0x28EF,0x28EF,0x28F0,0x28F0,0x28F0,0x28EF,0x2910,0x20EF,0x2910,0x2930,0x2910,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2910,0x290F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x2930,0x290F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2111,0x1912,0x1154,0x11B7,0x1219,0x09F9,0x01D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01D9,0x01DA,0x01D9,0x01D9,0x09D8,0x11D7,0x11B6,0x1153,0x1131,0x2173,0x1952,0x1912,0x1112,0x1954,0x19B7,0x19F8,0x11B7,0x0976,0x0955,0x0154,0x0974,0x0975,0x0975,0x0976,0x1196,0x19B7,0x19D7,0x21B6,0x1974,0x1952,0x2152,0x2131,0x2131,0x2931,0x2951,0x2931,0x2931,0x3151,0x3151,0x2930,0x3150,0x3150,0x3150,0x3150,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3151,0x3151,0x3971,0x3971,0x3971,0x3971,0x3951,0x3971,0x3971,0x3971,0x3972,0x3972,0x3972,0x4172,0x4172,0x4192,0x4192,0x4172,0x4172,0x4193,0x4193,0x4192,0x4993,0x4992,0x4992,0x4993,0x51B3,0x51B3,0x51B2,0x51B2,0x51B2,0x59B2,0x5991,0x512F,0x71F2,0xC45A,0xD479,0xDC99,0xD458,0xD437,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC16,0xDC37,0xDC37,0xDC37,0xDC16,0xDC37,0xDC16,0xDC37,0xDC37,0xDC36,0xD436,0xD436,0xD436,0xCC36,0xD477,0xCC77,0xCC98,0xC498,0xBCB8,0xA477,0x8C56,0x84B7,0x7D39,0x75FB,0x667D,0x5EFE,0x473E,0x375E,0x1F3E,0x175E,0x0F5E,0x0F5F,0x075F,0x075F,0x075F,0x075F,0x075F,0x0F5F,0x073F,0x071F,0x071F,0x071F,0x071F,0x071F,0x071F,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x071F,0x06FF,0x071F,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06DF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x0EFF,0x0EFF,0x06DF,0x0EDF,0x0EDF,0x0EDF,0x0EDF,0x16DF,0x16DF,0x1EDF,0x1EBF,0x269E,0x269E,0x2E9E,0x3EBF,0x46DF,0x4EDF,0x56BF,0x5E7F,0x5E1E,0x657C,0x6D1B,0x74BA,0x8C9A,0xA49B,0x9397,0x9336,0xA336,0xBB98,0xCB98,0xCB78,0xC317,0xCAF6,0xCB16,0xCAF6,0xD337,0xD316,0xD336,0xCAF5,0xD2F6,0xC294,0xC294,0xCAF6,0xC2D5,0xC2F6,0xBB37,0xB337,0x9316,0x83B8,0x747A,0x4CBA,0x5E1F,0x4E1E,0x35DD,0x463E,0x4E5E,0x5E3E,0x6DFE,0x753B,0x7C37,0x8335,0x9B15,0xB336,0xC316,0xCAF6,0xCAB5,0xCAD6,0xCAB5,0xCAD6,0xCAD6,0xCB17,0xC317,0xAAD6,0x6110,0x6151,0x5972,0x5172,0x4992,0x4992,0x4992,0x4192,0x4192,0x3972,0x3972,0x3972,0x3972,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x292F,0x292F,0x290F,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x2130,0x1910,0x1911,0x1911,0x1111,0x1112,0x1112,0x0912,0x0913,0x0913,0x08F3,0x0913,0x0913,0x08F3,0x0913,0x0913,0x0913,0x0913,0x0913,0x0913,0x0913,0x0913,0x0913,0x0913,0x0913,0x0913,0x0913,0x08F3,0x0913,0x0913,0x0913,0x08F3,0x0913,0x08F3,0x08F3,0x0913,0x0913,0x0913,0x08F3,0x0913,0x0913,0x0913,0x0913,0x0913,0x0913,0x0912,0x08F2,0x0912,0x0913,0x0913,0x08F3,0x0913,0x0913,0x0913,0x0913,0x0913,0x0913,0x0933,0x0933,0x1133,0x0913,0x1134,0x1134,0x1134,0x1133,0x1134,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1154,0x1134,0x1154,0x1134,0x1134,0x1133,0x1133,0x1133,0x0913,0x0933,0x1133,0x0933,0x0933,0x0933,0x0933,0x1153,0x0933,0x0933,0x1134,0x1154,0x0954,0x0954,0x1154,0x0934,0x1154,0x0934,0x0934,0x0934,0x1134,0x1134,0x1154,0x1154,0x1154,0x0934,0x1154,0x0933,0x1133,0x1134,0x1114,0x1134,0x1134,0x0913,0x0933,0x1154,0x1154,0x0933,0x0933,0x0933,0x1133,0x0913,0x0914,0x1134,0x0934,0x0913,0x1133,0x1133,0x1133,0x1133,0x1133,0x0913,0x0933,0x0933,0x0934,0x0933,0x0934,0x1134,0x1134,0x1134,0x1134,0x0933,0x0913,0x0933,0x0954,0x0933,0x0954,0x0954,0x0954,0x0954,0x0954,0x1154,0x0954,0x0933,0x1154,0x1134,0x0933,0x0933,0x1154,0x0953,0x0953,0x0953,0x0953,0x0953,0x0953,0x0953,0x0953,0x0953,0x0954,0x0933,0x1154,0x1133,0x1154,0x1133,0x1154,0x1133,0x1133,0x1133,0x1134,0x0933,0x0934,0x1154,0x1154,0x0933,0x1154,0x0953,0x0954,0x0934,0x1154,0x1134,0x0934,0x0934,0x0934,0x0954,0x0954,0x0934,0x0954,0x0954,0x1154,0x0934,0x1134,0x1134,0x1133,0x1133,0x1133,0x1133,0x1133,0x0933,0x0933,0x0913,0x0933,0x0933,0x0933,0x0933,0x0933,0x0912,0x0912,0x0912,0x1112,0x1112,0x1112,0x1911,0x1911,0x1911,0x2131,0x2131,0x2151,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2110,0x2930,0x210F,0x210F,0x2930,0x2110,0x292F,0x292F,0x2930,0x290F,0x2910,0x210F,0x2910,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930, + 0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2110,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x210F,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2910,0x2910,0x210F,0x2110,0x210F,0x290F,0x292F,0x290F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x2110,0x210F,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x1911,0x1911,0x1912,0x1912,0x1933,0x1133,0x1112,0x1112,0x1112,0x1112,0x10F2,0x1112,0x10F2,0x1112,0x1113,0x1113,0x1113,0x1113,0x1133,0x1133,0x1113,0x1113,0x0913,0x0913,0x0913,0x1113,0x1113,0x0913,0x1113,0x1113,0x0913,0x0913,0x08F3,0x08F3,0x1113,0x0913,0x0913,0x1113,0x1113,0x08F3,0x1113,0x0913,0x08F2,0x08F2,0x08F3,0x08F2,0x0912,0x1113,0x0912,0x0913,0x0913,0x0912,0x0913,0x1113,0x0912,0x0913,0x0913,0x0913,0x0913,0x08F2,0x0913,0x0913,0x0913,0x0913,0x0913,0x08F2,0x1113,0x1113,0x1113,0x08F2,0x0913,0x0913,0x0912,0x0912,0x0912,0x0912,0x0913,0x08F3,0x0913,0x0913,0x0913,0x0913,0x0912,0x1112,0x08F2,0x10F2,0x10F2,0x1112,0x1132,0x1132,0x1932,0x1911,0x1911,0x1911,0x2131,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x210F,0x2910,0x2910,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x2930,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2930,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x2930,0x2110,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2930,0x210F,0x210F,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x212F,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2910,0x210F,0x2110,0x2110,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x210F,0x2110,0x2110,0x2110,0x210F,0x2130,0x210F,0x210F,0x210F,0x212F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2930,0x2930,0x210F,0x2930,0x290F,0x2930,0x290F,0x290F,0x2930,0x290F,0x210F,0x2930,0x210F,0x2910,0x2930,0x2110,0x2110,0x2910,0x2930,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x2930,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1911,0x1933,0x1975,0x1A18,0x11F9,0x09D9,0x01FA,0x01D9,0x01D9,0x01DA,0x01FA,0x01DA,0x01DA,0x01B9,0x01D9,0x09D8,0x11F8,0x11B6,0x1153,0x1132,0x2193,0x1953,0x1912,0x1933,0x1975,0x2218,0x2218,0x11D7,0x0956,0x0935,0x0954,0x0974,0x0974,0x0975,0x0955,0x0976,0x11B7,0x19D7,0x21D6,0x2195,0x1932,0x2152,0x2152,0x2951,0x2931,0x2931,0x2931,0x2931,0x3151,0x2931,0x2951,0x3150,0x2930,0x3130,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3951,0x3951,0x3971,0x3971,0x3971,0x3971,0x3971,0x4192,0x4172,0x3972,0x3972,0x4172,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4993,0x4192,0x49B3,0x49B3,0x51D3,0x51B3,0x51B3,0x51B3,0x51B2,0x51B2,0x5192,0x59B2,0x5970,0x71F1,0xCC9B,0xCC5A,0xDC9A,0xD458,0xDC58,0xDC58,0xDC37,0xDC37,0xD416,0xDC16,0xDC37,0xDC37,0xD3F6,0xDC37,0xDC17,0xDC16,0xDC37,0xDC37,0xD416,0xD416,0xD416,0xD436,0xCC37,0xCC57,0xCC77,0xC498,0xC498,0xB498,0xAC77,0x9477,0x8CB7,0x8539,0x85DB,0x763C,0x66BD,0x4EDE,0x3F3F,0x2F3E,0x1F5F,0x175E,0x0F3E,0x075E,0x075F,0x075F,0x075F,0x075F,0x073F,0x073F,0x071F,0x071F,0x071F,0x06FF,0x071F,0x06FF,0x06DF,0x06FF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06FF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06DF,0x06DF,0x06DF,0x06DF,0x06FF,0x0EFF,0x0EFF,0x0EFF,0x06DF,0x0EDF,0x0EDF,0x0EDF,0x16DF,0x16DF,0x16BF,0x1EBF,0x1E9E,0x1E7E,0x267F,0x2EBF,0x3EBF,0x4EBF,0x567F,0x5DFE,0x655C,0x649A,0x63F9,0x73D9,0x9C7B,0x9BF9,0x9B57,0xA357,0xBB78,0xCB98,0xCB58,0xCB37,0xCB17,0xC2F6,0xCAF6,0xCAF6,0xCAD5,0xCAF6,0xCAD5,0xCAB5,0xC294,0xCAF6,0xC2F6,0xC2F6,0xC337,0xAB36,0x9377,0x8419,0x5C38,0x5D7D,0x563E,0x461E,0x35FD,0x3E3E,0x4E5E,0x561E,0x767F,0x7D7C,0x7C38,0x7B14,0x9B55,0xB336,0xC336,0xCAF5,0xCAF6,0xCAB5,0xCAB5,0xCAD6,0xCAF6,0xCB17,0xC317,0xBB38,0x7151,0x6110,0x5993,0x5152,0x4972,0x4972,0x4993,0x4192,0x4192,0x4192,0x3972,0x3972,0x3971,0x3971,0x3951,0x3951,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x2950,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x290F,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x292F,0x290F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x1910,0x1910,0x1911,0x1112,0x1133,0x1174,0x1995,0x19D6,0x19F7,0x19F8,0x2218,0x2218,0x2218,0x2218,0x2219,0x2218,0x2239,0x2218,0x2238,0x2218,0x2218,0x2218,0x2238,0x2238,0x2238,0x2238,0x2238,0x2238,0x2A39,0x2238,0x2238,0x2238,0x2238,0x2218,0x2238,0x2A39,0x2A38,0x2218,0x2A39,0x2238,0x2239,0x2238,0x2239,0x2218,0x2238,0x2218,0x2238,0x2238,0x2238,0x2218,0x2239,0x2239,0x2A39,0x2239,0x2A39,0x2238,0x2238,0x2218,0x2A59,0x2238,0x2238,0x2238,0x2A18,0x21F8,0x2A18,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2238,0x2218,0x2239,0x2218,0x2A39,0x2239,0x2218,0x2218,0x2238,0x2218,0x2238,0x2218,0x2238,0x2238,0x2238,0x2218,0x2238,0x2218,0x2218,0x2218,0x2239,0x2238,0x2219,0x2219,0x2218,0x1A18,0x2238,0x1A18,0x2239,0x2218,0x2238,0x1A18,0x2238,0x2238,0x2218,0x2218,0x2218,0x2218,0x2218,0x21F8,0x1A18,0x2218,0x2238,0x2218,0x2218,0x1A18,0x2238,0x1A18,0x21F8,0x21F8,0x21F8,0x21F8,0x2218,0x2218,0x2218,0x21F8,0x21F8,0x21F8,0x2218,0x19F8,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x21F8,0x2218,0x19F8,0x1A18,0x1A18,0x1A38,0x1A38,0x1A38,0x1A38,0x2238,0x2218,0x2238,0x2218,0x2218,0x19F8,0x1A18,0x1A18,0x2238,0x2218,0x2238,0x2238,0x2238,0x1A18,0x1A38,0x1A38,0x1A38,0x1A18,0x2238,0x1A18,0x2238,0x2218,0x2218,0x2218,0x21F8,0x21F8,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2238,0x2218,0x2218,0x2218,0x2218,0x2218,0x2239,0x2218,0x2218,0x2218,0x2239,0x1A18,0x1A18,0x19F8,0x2218,0x1A18,0x2219,0x2218,0x2219,0x2218,0x2219,0x2218,0x2238,0x2238,0x2238,0x2218,0x2218,0x2238,0x1A18,0x1A17,0x1A38,0x1A17,0x2217,0x19F7,0x19F7,0x19B6,0x19B6,0x1175,0x1113,0x1113,0x1112,0x1112,0x1111,0x1931,0x2131,0x2130,0x2130,0x2150,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x2110,0x210F,0x2930,0x290F,0x2930,0x2910,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910,0x210F,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930, + 0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2910,0x2930,0x2110,0x2910,0x2910,0x2110,0x2110,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2111,0x2111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x18F1,0x1912,0x1912,0x1912,0x1112,0x1912,0x1912,0x1112,0x1112,0x1912,0x1912,0x1112,0x1112,0x1112,0x1112,0x1112,0x1912,0x10F2,0x1112,0x1912,0x10F1,0x1112,0x1112,0x1112,0x1112,0x1912,0x1112,0x1912,0x1112,0x1112,0x10F2,0x1912,0x1112,0x1912,0x1912,0x1112,0x10F1,0x1912,0x1112,0x1112,0x1112,0x1112,0x10F2,0x1112,0x1112,0x1112,0x1112,0x1932,0x1112,0x1112,0x1112,0x1132,0x1112,0x1912,0x1912,0x1912,0x1112,0x1912,0x1912,0x1912,0x1112,0x1912,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1912,0x1912,0x1912,0x1912,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x2111,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2930,0x2110,0x2930,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2910,0x2910,0x2910,0x2910,0x2110,0x212F,0x212F,0x212F,0x2930,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2910,0x2910,0x210F,0x2930,0x290F,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2930,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x210F,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x2930,0x210F,0x2110,0x2110,0x210F,0x210F,0x290F,0x290F,0x212F,0x212F,0x290F,0x290F,0x2930,0x210F,0x290F,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x210F,0x2910,0x2930,0x2110,0x210F,0x210F,0x2110,0x210F,0x2930,0x2110,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x210F,0x2930,0x210F,0x212F,0x212F,0x292F,0x212F,0x212F,0x292F,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x20EF,0x290F,0x290F,0x2930,0x290F,0x2910,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x210F,0x2910,0x2930,0x2910,0x2910,0x210F,0x290F,0x290F,0x2910,0x2930,0x290F,0x290F,0x2930,0x210F,0x212F,0x2110,0x210F,0x2910,0x210F,0x210F,0x210F,0x2910,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1911,0x1933,0x1175,0x19F8,0x11F9,0x09F9,0x01FA,0x01D9,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01B9,0x09D9,0x11F9,0x11D7,0x19D6,0x1153,0x1111,0x2173,0x2173,0x1912,0x1113,0x1975,0x21F7,0x2218,0x11D7,0x0976,0x0955,0x0954,0x0954,0x0974,0x0954,0x0955,0x1176,0x19D7,0x21F8,0x21B6,0x2195,0x1953,0x2152,0x2131,0x2931,0x2951,0x2931,0x2931,0x2951,0x2931,0x3131,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3151,0x3951,0x3951,0x3151,0x3951,0x3951,0x3951,0x3971,0x3972,0x3972,0x3972,0x4192,0x4172,0x4172,0x4192,0x4192,0x4172,0x4192,0x4192,0x4993,0x4992,0x49B3,0x4993,0x49B3,0x49B3,0x49B3,0x51D3,0x51B3,0x51B3,0x51B3,0x51B3,0x59B2,0x5991,0x5970,0x69B1,0xBC19,0xCC5A,0xDC7A,0xDC79,0xDC58,0xDC38,0xDC17,0xDC37,0xDC37,0xDC16,0xDC37,0xDC37,0xDC57,0xDC16,0xDC37,0xDC37,0xDC37,0xD437,0xD417,0xD416,0xD437,0xCC37,0xCC37,0xCC98,0xC498,0xBCB8,0xB4B8,0xA477,0x9456,0x8C97,0x8518,0x859A,0x7E1C,0x6E9D,0x5EDE,0x4EFE,0x371E,0x2F5F,0x1F5E,0x0F3E,0x075E,0x075E,0x075F,0x075F,0x075F,0x075F,0x073F,0x073F,0x071F,0x071F,0x06FF,0x06FF,0x06FF,0x06FF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06BF,0x06DF,0x06DF,0x06DF,0x06BF,0x06BF,0x06DF,0x06DF,0x06DF,0x06BF,0x06DF,0x06DF,0x06BF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06FF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x0EFF,0x0EFF,0x06FF,0x06FF,0x06DF,0x06DF,0x06DF,0x06DF,0x0EDF,0x0EDF,0x0EBF,0x0EBF,0x0E9F,0x0E9F,0x167E,0x1E7E,0x267E,0x365F,0x4E5F,0x5E3F,0x65BE,0x547B,0x5419,0x747B,0x8CBD,0x8C1A,0x8B99,0x9B58,0xAB58,0xBB99,0xC379,0xC338,0xC2F6,0xCB17,0xCAF6,0xD316,0xD2F6,0xD2F6,0xD2F6,0xC274,0xC295,0xC2B6,0xC2D6,0xBAF6,0xBB37,0x9B36,0x8BB8,0x7C7A,0x5CBA,0x5DFE,0x565F,0x35FD,0x361D,0x363D,0x4EBF,0x563E,0x767F,0x7D9D,0x6BF7,0x72F4,0x9B35,0xB356,0xC316,0xC2F5,0xCAD5,0xCAB5,0xCAB5,0xCAB5,0xCAD6,0xCB17,0xC317,0xBB17,0x81D3,0x58F0,0x5972,0x5152,0x4972,0x4972,0x4992,0x4192,0x4172,0x4172,0x3972,0x3972,0x3971,0x3972,0x3972,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3131,0x3151,0x3151,0x2930,0x2950,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x290F,0x292F,0x292F,0x290F,0x292F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2110,0x2130,0x2130,0x1910,0x1910,0x1911,0x1131,0x1953,0x1974,0x19B6,0x19D7,0x19F7,0x11D7,0x11D8,0x09B7,0x11D8,0x09D8,0x11D8,0x09D8,0x11D8,0x09B8,0x11D8,0x11B8,0x11D8,0x11D8,0x11D8,0x11B8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x09D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11B8,0x11D8,0x11D8,0x11D8,0x11B8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11B8,0x11D8,0x11B8,0x11D8,0x11D8,0x11B8,0x11B8,0x11D8,0x09D8,0x11D8,0x09B7,0x11D8,0x11B8,0x11D8,0x11B8,0x11D8,0x11B8,0x11D8,0x11B8,0x11D8,0x09B7,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D7,0x11D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x11D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x11F8,0x09D8,0x09F8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x11D8,0x09D8,0x11D8,0x09B7,0x11D8,0x09B7,0x11D7,0x11D7,0x11D8,0x11D8,0x11F8,0x11D8,0x11D8,0x11B8,0x11F9,0x11D8,0x11D8,0x11D9,0x11D8,0x11B8,0x11D8,0x11B8,0x11D8,0x09D8,0x11D8,0x09D8,0x11D8,0x09B8,0x11B8,0x11B8,0x11D8,0x11D8,0x09B8,0x09B8,0x09F8,0x09D8,0x09D8,0x09B7,0x09D8,0x09D8,0x09D8,0x09B7,0x11D8,0x09D8,0x11D8,0x09D8,0x09D8,0x09B8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D7,0x09F8,0x09D7,0x09D8,0x09D8,0x09D8,0x09D8,0x11D8,0x11D8,0x11D8,0x09B8,0x11D8,0x11D8,0x11D8,0x09B8,0x11D8,0x11D8,0x11F8,0x09D8,0x11D8,0x11D8,0x11F8,0x09D8,0x11D8,0x11D8,0x11D8,0x11B8,0x11D8,0x11B8,0x11D8,0x09B8,0x11D8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x11D8,0x09B8,0x11D8,0x11D8,0x11D8,0x11D8,0x11F8,0x11D8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x1A18,0x1A18,0x2218,0x19D7,0x1175,0x0934,0x1133,0x1132,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2930,0x210F,0x290F,0x2930,0x210F,0x2910,0x2110,0x2930,0x212F,0x2930,0x212F,0x212F,0x212F,0x2930,0x210F,0x290F,0x290F,0x210F,0x2910,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x290F, + 0x212F,0x210F,0x212F,0x212F,0x2930,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x2110,0x2910,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2110,0x210F,0x2910,0x2910,0x2930,0x2930,0x2910,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x212F,0x292F,0x210F,0x292F,0x212F,0x212F,0x210F,0x210F,0x292F,0x290F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x1910,0x2131,0x1911,0x1931,0x1911,0x1911,0x1911,0x2111,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1932,0x1911,0x1932,0x1932,0x1932,0x1912,0x1931,0x1931,0x1931,0x1911,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1932,0x1932,0x2132,0x1932,0x1931,0x1911,0x1931,0x1931,0x1932,0x1932,0x1911,0x1911,0x1932,0x1911,0x1931,0x2131,0x2131,0x1911,0x2131,0x1931,0x1931,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2930,0x2110,0x290F,0x290F,0x290F,0x210F,0x2910,0x2110,0x210F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x2110,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x2930,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2930,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x2110,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x210F,0x212F,0x210F,0x2910,0x2110,0x2110,0x2910,0x2910,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x290F,0x290F,0x2910,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x20EF,0x2910,0x2910,0x210F,0x2910,0x2910,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2910,0x290F,0x2930,0x2910,0x2110,0x2110,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2110,0x2930,0x2910,0x2110,0x2110,0x210F,0x2910,0x2910,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2111,0x1911,0x1913,0x1175,0x19D7,0x11D9,0x09D9,0x09F9,0x01D9,0x01D9,0x01DA,0x01DA,0x01D9,0x01B9,0x01B9,0x09B9,0x09B8,0x11B7,0x1995,0x1132,0x1111,0x1952,0x1932,0x1912,0x1113,0x1975,0x21D7,0x19F8,0x11F8,0x0976,0x0955,0x1175,0x0954,0x0954,0x0954,0x0976,0x19D7,0x19D7,0x19D7,0x19B6,0x1975,0x2153,0x2152,0x2132,0x2951,0x2951,0x2931,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3971,0x3951,0x3951,0x3951,0x3971,0x3971,0x3971,0x3972,0x3972,0x3972,0x3972,0x3972,0x4172,0x4172,0x4192,0x4192,0x4192,0x4193,0x4193,0x4993,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x51D3,0x51D3,0x51D3,0x51D3,0x51B2,0x5992,0x5130,0x594F,0xBC19,0xCC7A,0xD47A,0xD459,0xD417,0xDC58,0xDC38,0xDC37,0xD416,0xDC16,0xDC37,0xD416,0xD436,0xDC37,0xDC37,0xD416,0xD437,0xD437,0xD437,0xCC37,0xCC37,0xC457,0xC478,0xC4B8,0xBCD9,0xB4B8,0x9C97,0x9497,0x84B7,0x7D38,0x7DBA,0x75FB,0x6E5C,0x5E9D,0x4EDE,0x3EFE,0x375F,0x275F,0x173E,0x0F3E,0x075E,0x075F,0x075F,0x075F,0x075F,0x075F,0x073F,0x073F,0x073F,0x071F,0x06FF,0x06FF,0x06FF,0x06FF,0x06DF,0x06DF,0x06DF,0x06BF,0x06DF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x069F,0x069F,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06DF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x069F,0x06BF,0x06BF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06BF,0x0EBF,0x0EBF,0x0E9F,0x0E5E,0x165E,0x1E3E,0x261E,0x35FF,0x45DF,0x4D9F,0x555E,0x54BC,0x3357,0x4338,0x6BBB,0x8C1C,0x9BFB,0xA3BA,0xAB58,0xBB58,0xC337,0xC317,0xCB17,0xD337,0xCAF6,0xCAD6,0xCAD6,0xCAB6,0xC295,0xC295,0xC2B6,0xC2F7,0xBB17,0xAB16,0x8AD5,0x8C19,0x6C79,0x551B,0x5E3F,0x4E5E,0x361D,0x2E1D,0x365E,0x4EBF,0x567E,0x663E,0x7DDD,0x63B6,0x7314,0x9315,0xB336,0xC336,0xC2D5,0xCAD5,0xCA95,0xCA95,0xCA95,0xCAB5,0xCAD6,0xC2F6,0xC358,0x9234,0x6110,0x5952,0x5152,0x4931,0x4972,0x4992,0x4192,0x4192,0x4172,0x4172,0x3972,0x3972,0x3972,0x3972,0x3972,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x290F,0x290F,0x292F,0x290F,0x212F,0x2130,0x2930,0x210F,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x1910,0x1931,0x1932,0x1952,0x1174,0x1175,0x1196,0x11B7,0x09B7,0x09D8,0x09D8,0x09B8,0x09B8,0x09D8,0x01B8,0x09D9,0x09D9,0x01B8,0x09D8,0x09B8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09B8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D9,0x09B8,0x09D8,0x09D8,0x09B8,0x09B8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x01B8,0x09D8,0x09D9,0x09D9,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09B8,0x11D8,0x11D8,0x09D9,0x09D9,0x09D8,0x09D8,0x09D9,0x09D9,0x09D9,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D9,0x09D9,0x09B8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09B8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x01D8,0x09D8,0x09D8,0x09D9,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D9,0x09D9,0x09D9,0x09B9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09B8,0x09D8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D9,0x09D8,0x09D9,0x09D9,0x09D9,0x09D9,0x09B9,0x01B8,0x01D8,0x01D8,0x01B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D9,0x09D8,0x09D9,0x09D9,0x09D8,0x09D8,0x09D9,0x09D9,0x09D8,0x09D8,0x09F9,0x09D8,0x09D8,0x09D8,0x09D8,0x09B8,0x09D9,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D8,0x09D9,0x09D9,0x09D8,0x09F9,0x09D8,0x09F9,0x09D8,0x09F8,0x09F8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09B8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09B8,0x09B8,0x09D9,0x09B8,0x09B9,0x09D9,0x09B8,0x09B8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09F8,0x09D8,0x09D8,0x09D8,0x09B8,0x11D8,0x1A19,0x1A18,0x11D7,0x0954,0x0913,0x1112,0x1911,0x1931,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x210F,0x212F,0x212F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2910, + 0x212F,0x2930,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x212F,0x210F,0x2110,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x292F,0x290F,0x290F,0x210F,0x2930,0x210F,0x212F,0x210F,0x212F,0x292F,0x212F,0x210F,0x290F,0x290F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2131,0x2110,0x2131,0x2111,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2111,0x1910,0x2111,0x2110,0x2111,0x1910,0x2131,0x2131,0x2131,0x1911,0x2131,0x2131,0x2111,0x2131,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x1910,0x2131,0x1910,0x2131,0x2131,0x2111,0x2131,0x2111,0x2111,0x2111,0x2131,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2131,0x2111,0x2111,0x1910,0x2111,0x1911,0x2111,0x2111,0x2131,0x1911,0x2131,0x2111,0x1911,0x2131,0x1911,0x1911,0x1911,0x1910,0x1911,0x2131,0x2111,0x2110,0x2111,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x212F,0x2110,0x2930,0x210F,0x2930,0x290F,0x290F,0x210F,0x2910,0x2110,0x2110,0x210F,0x210F,0x210F,0x290F,0x212F,0x212F,0x210F,0x290F,0x2930,0x212F,0x210F,0x2110,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x292F,0x290F,0x2930,0x290F,0x2910,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x212F,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2910,0x210F,0x210F,0x210F,0x2910,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x2130,0x2130,0x2110,0x2910,0x2910,0x210F,0x210F,0x2110,0x210F,0x2910,0x210F,0x210F,0x2910,0x2110,0x2130,0x2110,0x2130,0x2930,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2910,0x2910,0x290F,0x20EF,0x290F,0x290F,0x2930,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x290F,0x2930,0x210F,0x2910,0x2910,0x290F,0x210F,0x2930,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2110,0x2110,0x2910,0x2930,0x2910,0x290F,0x210F,0x290F,0x210F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2111,0x2111,0x1913,0x1155,0x11B7,0x11B8,0x09D9,0x09F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09B9,0x09B8,0x09B7,0x11B6,0x1174,0x1953,0x1932,0x1911,0x1911,0x1912,0x1933,0x1954,0x21B7,0x19F8,0x19F8,0x11B7,0x1176,0x1175,0x1175,0x0954,0x0955,0x11B6,0x19D7,0x21F8,0x21D7,0x21B6,0x2195,0x2174,0x2152,0x2952,0x2951,0x2951,0x2951,0x3151,0x3151,0x3171,0x3151,0x3131,0x3151,0x3151,0x3151,0x3151,0x3951,0x3971,0x3971,0x3971,0x3971,0x3951,0x3972,0x3971,0x3972,0x3972,0x3971,0x3972,0x3972,0x4192,0x4172,0x4172,0x4192,0x4192,0x4193,0x4192,0x4193,0x49B3,0x49B3,0x49B3,0x4993,0x49B3,0x49B3,0x51D3,0x49B3,0x49B3,0x51B3,0x51D3,0x51D3,0x59D3,0x59D3,0x59B2,0x5971,0x5970,0xAB77,0xCC7A,0xD49A,0xD459,0xD438,0xD437,0xD417,0xDC37,0xDC37,0xD416,0xD436,0xDC57,0xDC57,0xD457,0xD457,0xD457,0xCC57,0xC437,0xC437,0xC478,0xC478,0xC4B8,0xBCB9,0xB498,0xA498,0x9C97,0x8497,0x84F8,0x8579,0x7DDB,0x763C,0x6E7C,0x5E9C,0x56DE,0x46FE,0x3F3F,0x2F5F,0x1F5F,0x173F,0x0F5E,0x073E,0x075F,0x075F,0x075F,0x075F,0x075F,0x073F,0x073F,0x073F,0x073F,0x06FF,0x06DF,0x06FF,0x06DF,0x06DF,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x069F,0x06BF,0x06BF,0x06BF,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x067F,0x069F,0x069F,0x069F,0x069F,0x069F,0x06BF,0x06BF,0x06BF,0x069F,0x06BF,0x069F,0x06BF,0x06BF,0x069F,0x069F,0x067F,0x067F,0x067F,0x067F,0x069F,0x06BF,0x06BF,0x06DF,0x06DF,0x06BF,0x06BF,0x06BF,0x06DF,0x06BF,0x06BF,0x06BF,0x0E9F,0x0E9F,0x0E7F,0x165F,0x163F,0x1DFE,0x1DBE,0x2D9E,0x357E,0x3D3E,0x3C7C,0x33DB,0x3318,0x42F7,0x6359,0x941C,0xAC3C,0xB3FB,0xB338,0xBB38,0xC338,0xC2F7,0xCB17,0xCAF7,0xCAB6,0xD2F7,0xCAB6,0xC296,0xCAB6,0xBA95,0xBAD6,0xB317,0xA337,0x8316,0x845A,0x6479,0x65BD,0x565E,0x467F,0x2DFC,0x2E3D,0x367E,0x469E,0x569F,0x5E1D,0x7DBD,0x63F7,0x7314,0x92F4,0xB356,0xC315,0xCAF5,0xCAB5,0xCAB5,0xCA94,0xD2B5,0xCAB5,0xCAD6,0xCAD6,0xCB38,0xA275,0x60F0,0x6152,0x5152,0x4972,0x4972,0x4992,0x4192,0x4192,0x4172,0x4172,0x3972,0x3972,0x3972,0x3972,0x3972,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x210F,0x210F,0x2930,0x290F,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1952,0x1953,0x1154,0x0954,0x0996,0x11D8,0x09D9,0x09F9,0x01D8,0x01B8,0x01D9,0x01B9,0x01D9,0x01D9,0x01B9,0x01B9,0x01D9,0x01D9,0x01D9,0x09D9,0x01D9,0x01D9,0x01D9,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x01B9,0x01D9,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09F9,0x01D9,0x01B9,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D8,0x01D8,0x09D8,0x01B8,0x09D9,0x09D9,0x09D9,0x01B9,0x09D9,0x09D9,0x01D9,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x09D9,0x01D9,0x01D9,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x01D9,0x01D8,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09F9,0x01D9,0x01D9,0x09D9,0x01D9,0x09D9,0x09D9,0x01D9,0x01D8,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D8,0x09D8,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x01B9,0x01D9,0x09DA,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x01D9,0x01D9,0x09D9,0x09D9,0x09D9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x09D9,0x01D9,0x09D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x01D8,0x01D8,0x01F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x01D9,0x09D9,0x09D9,0x01D9,0x09F9,0x09D9,0x01D8,0x01F9,0x01F9,0x01D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09B8,0x09D9,0x09D9,0x09D9,0x01D9,0x09D9,0x09D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D8,0x01F9,0x01D9,0x09D9,0x01B8,0x09D8,0x09F8,0x11F8,0x11D7,0x1195,0x1133,0x1111,0x1911,0x1930,0x1910,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x2130,0x2130,0x2930,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x2930,0x212F,0x212F,0x210F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930, + 0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x292F,0x212F,0x2930,0x212F,0x212F,0x290F,0x210F,0x290F,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x2930,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x292F,0x292F,0x290F,0x292F,0x290F,0x210F,0x290F,0x210F,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x2930,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x210F,0x212F,0x212F,0x2930,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2951,0x2130,0x2131,0x2110,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x2110,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2131,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x292F,0x290F,0x290F,0x292F,0x210F,0x2930,0x2110,0x210F,0x210F,0x290F,0x210F,0x2910,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2930,0x212F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2110,0x2930,0x210F,0x212F,0x210F,0x292F,0x290F,0x290F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x292F,0x2930,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x2130,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x2130,0x2110,0x212F,0x210F,0x212F,0x2930,0x212F,0x210F,0x290F,0x2930,0x292F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x2910,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x210F,0x2130,0x2130,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x2910,0x290F,0x290F,0x2110,0x2110,0x290F,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2111,0x1912,0x1154,0x19D7,0x1197,0x09B8,0x09F8,0x09F9,0x0198,0x01B9,0x09D9,0x01B9,0x09D9,0x09D9,0x09D8,0x11B7,0x11B6,0x1174,0x1973,0x1932,0x1931,0x1911,0x1912,0x1912,0x1954,0x1995,0x19F7,0x1A18,0x19F8,0x19D7,0x1195,0x1195,0x1195,0x11B6,0x19F7,0x19F8,0x21F8,0x21D7,0x21B6,0x2195,0x2173,0x2952,0x2952,0x2931,0x2931,0x3151,0x3151,0x3151,0x3151,0x3171,0x3171,0x3171,0x3171,0x3971,0x3971,0x3971,0x3971,0x3971,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x3992,0x3972,0x4192,0x4192,0x4192,0x4193,0x4193,0x4193,0x4193,0x4993,0x4193,0x49B3,0x49B3,0x49B3,0x49B3,0x49D3,0x51D3,0x51D3,0x51D3,0x51D3,0x51D3,0x51D3,0x59D3,0x59B3,0x59B2,0x5991,0x5950,0xAB77,0xCC7A,0xCC59,0xD459,0xD458,0xDC58,0xD437,0xD437,0xD416,0xDC37,0xDC37,0xD457,0xD457,0xD477,0xCC77,0xC477,0xC477,0xBC77,0xBCB8,0xBCD9,0xB4D8,0xACB8,0x9C77,0x9477,0x8CB8,0x8CD8,0x8559,0x85BB,0x7E1C,0x763C,0x665C,0x5E9C,0x56FD,0x471E,0x3F5F,0x2F5F,0x275F,0x173F,0x0F3F,0x0F5F,0x075F,0x075F,0x075F,0x075F,0x073F,0x073F,0x073F,0x071F,0x06FE,0x06DE,0x06DE,0x06DE,0x06DF,0x06DF,0x06BF,0x06BF,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x067F,0x067F,0x067F,0x067F,0x067F,0x067F,0x067F,0x067F,0x065F,0x067F,0x067F,0x067F,0x067F,0x067F,0x065F,0x065F,0x067F,0x067F,0x065F,0x067F,0x067F,0x069F,0x069F,0x069F,0x069F,0x067F,0x067F,0x067F,0x065F,0x067F,0x067F,0x069F,0x069F,0x06BF,0x06BF,0x06BF,0x069F,0x069F,0x06BF,0x069F,0x06BF,0x06BF,0x06BF,0x06BF,0x06BF,0x069F,0x0E7F,0x0E7F,0x165F,0x161F,0x15DE,0x157E,0x1D5E,0x253E,0x2D1E,0x34DE,0x3C7D,0x3BDB,0x2A76,0x3215,0x62D8,0xA43D,0xB41C,0xAB7A,0xAB18,0xB2F8,0xC338,0xCB18,0xCAF7,0xCAF7,0xCAD7,0xCA96,0xC295,0xBA54,0xBAB6,0xBAF7,0xB337,0x9B16,0x7B15,0x7419,0x5CBA,0x5E1E,0x4E9F,0x2DFC,0x263D,0x2E5D,0x369E,0x46BF,0x56BF,0x6E9F,0x7DDD,0x6C17,0x6AF3,0x92F4,0xB315,0xC2F5,0xCAD5,0xCAD5,0xCAB4,0xCA94,0xCA95,0xCA95,0xCAB5,0xCAB6,0xCB38,0xB2F7,0x7151,0x5931,0x5131,0x4972,0x4972,0x4992,0x4172,0x4172,0x4172,0x4172,0x3972,0x3972,0x3972,0x3972,0x3971,0x3951,0x3151,0x3971,0x3151,0x3151,0x3151,0x3151,0x3150,0x3150,0x3150,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x2930,0x2910,0x2910,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1932,0x1112,0x0933,0x0955,0x11D7,0x1219,0x09D8,0x09D9,0x09D9,0x01D9,0x01B9,0x01D9,0x01B9,0x01D9,0x01DA,0x01D9,0x01D9,0x01DA,0x01B9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01FA,0x01DA,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01D9,0x01B9,0x01B9,0x01D9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x09FA,0x01D9,0x09FA,0x09D9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01F9,0x01F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x01F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09F9,0x01D9,0x01D8,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01D9,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x01D9,0x09D9,0x09D9,0x01B9,0x01D9,0x01D9,0x09FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09DA,0x01D9,0x01D9,0x01D9,0x09F9,0x01D9,0x01D9,0x01D9,0x01D9,0x09F9,0x01D9,0x09F9,0x09D8,0x09B7,0x1195,0x1133,0x1111,0x1110,0x1930,0x2110,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2910,0x210F,0x2110,0x2910,0x210F,0x210F,0x2930,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x290F,0x292F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F, + 0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2930,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x210F,0x210F,0x2930,0x2930,0x2930,0x292F,0x212F,0x2930,0x212F,0x212F,0x2930,0x210F,0x2930,0x290F,0x210F,0x290F,0x210F,0x212F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x2110,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x210F,0x212F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x290F,0x292F,0x210F,0x210F,0x292F,0x212F,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2930,0x210F,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x20F0,0x2110,0x2910,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2930,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x292F,0x290F,0x2930,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x290F,0x2930,0x2930,0x290F,0x2930,0x212F,0x290F,0x290F,0x212F,0x212F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x292F,0x290F,0x2910,0x290F,0x290F,0x290F,0x2930,0x210F,0x2110,0x210F,0x2110,0x212F,0x212F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x290F,0x290F,0x2930,0x210F,0x290F,0x212F,0x210F,0x292F,0x212F,0x2930,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2910,0x2110,0x2110,0x2110,0x2130,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x2910,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x210F,0x2930,0x212F,0x210F,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x212F,0x292F,0x2930,0x212F,0x210F,0x2930,0x212F,0x2130,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2910,0x290F,0x290F,0x2110,0x2110,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x292F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x2910,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2111,0x1932,0x1954,0x19B6,0x1197,0x11D8,0x11D8,0x11F8,0x09B8,0x09B8,0x09B8,0x09B8,0x09D8,0x11F9,0x11B7,0x11B6,0x1995,0x1974,0x2173,0x1931,0x2131,0x2131,0x1931,0x1932,0x1953,0x1975,0x19B6,0x2218,0x19F8,0x19F7,0x19B6,0x19D6,0x19B6,0x19D6,0x19F7,0x2218,0x21F7,0x21B6,0x2195,0x2174,0x2173,0x2952,0x2972,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3971,0x3171,0x3171,0x3151,0x3951,0x3951,0x3972,0x3972,0x3992,0x3972,0x3971,0x3972,0x4192,0x3972,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4193,0x4193,0x4193,0x4993,0x49B3,0x49B3,0x49B3,0x49B3,0x49D3,0x49D3,0x49B3,0x51D3,0x51D3,0x51D3,0x51D3,0x51D3,0x51D3,0x51D3,0x59F3,0x59D3,0x5991,0x5950,0x9B16,0xCC7A,0xD47A,0xD479,0xD479,0xD438,0xD437,0xDC57,0xDC57,0xD416,0xD457,0xD477,0xD477,0xCC77,0xC477,0xBCB8,0xBCD8,0xB4D8,0xACF9,0xA4F9,0x94D8,0x8CB7,0x7C97,0x7CD8,0x7D59,0x85BB,0x7DFC,0x765C,0x6E7C,0x669D,0x56BD,0x4EDD,0x471E,0x3F3E,0x375E,0x277F,0x1F5F,0x175F,0x075F,0x075F,0x075F,0x077F,0x075F,0x075F,0x075F,0x073F,0x073F,0x071F,0x06FE,0x06FE,0x06DE,0x06DE,0x06BE,0x06DF,0x06BF,0x06BF,0x06BF,0x069F,0x069F,0x067F,0x067F,0x067F,0x067F,0x067F,0x067F,0x067F,0x067F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x063F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x067F,0x065F,0x067F,0x067F,0x067F,0x067F,0x067F,0x067F,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x069F,0x067F,0x065F,0x0E3F,0x0E1F,0x0DFF,0x0DBF,0x0D7E,0x155E,0x14FE,0x1CDE,0x2CBE,0x349E,0x3BFC,0x32F9,0x2A16,0x39F5,0x6AD8,0x9BDC,0xABDC,0xB37B,0xB2F9,0xBB19,0xCB39,0xCB18,0xCAF8,0xCAD7,0xBA55,0xC2B6,0xBA95,0xBAB6,0xB2F7,0xAB37,0x8AF5,0x7336,0x747A,0x54FA,0x5E7F,0x467E,0x2E5D,0x265D,0x267E,0x369E,0x46DF,0x4E7E,0x6EBF,0x75BC,0x6BF6,0x72F3,0x92D3,0xB335,0xC2F5,0xCAD5,0xCA94,0xCA95,0xCA74,0xD295,0xCA74,0xCAB5,0xCAB6,0xCB17,0xBB18,0x7172,0x5911,0x5972,0x5172,0x4972,0x4992,0x4192,0x4172,0x4172,0x3972,0x3972,0x3972,0x3972,0x3972,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x2930,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x290F,0x290F,0x2930,0x2910,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x1930,0x1931,0x1932,0x1133,0x0933,0x0955,0x11D7,0x11F9,0x09D9,0x01D9,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01B9,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01B9,0x01FA,0x01D9,0x01B9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01FA,0x01D9,0x01DA,0x01DA,0x01D9,0x01FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01D9,0x01DA,0x01DA,0x01D9,0x01D9,0x01DA,0x01DA,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01DA,0x01DA,0x01D9,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x09DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01FA,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01FA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x01D9,0x01DA,0x01DA,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x09D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01DA,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x01D9,0x09D8,0x09B7,0x1175,0x1153,0x1132,0x1911,0x1910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x2930,0x2930,0x2110,0x2110,0x2910,0x210F,0x2930,0x210F,0x290F,0x290F,0x210F,0x292F,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F, + 0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x2110,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x290F,0x210F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x2930,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x2930,0x212F,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2930,0x210F,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2930,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2930,0x2930,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x290F,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x2930,0x2930,0x210F,0x210F,0x212F,0x2930,0x210F,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x290F,0x210F,0x212F,0x290F,0x290F,0x2930,0x2930,0x2910,0x210F,0x2110,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x210F,0x210F,0x210F,0x2910,0x2930,0x2110,0x2110,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2930,0x210F,0x210F,0x2910,0x2930,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2110,0x2930,0x210F,0x2910,0x210F,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x2110,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x292F,0x210F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2930,0x2910,0x2930,0x2930,0x210F,0x2930,0x2930,0x290F,0x290F,0x2910,0x210F,0x2910,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2130,0x2930,0x2130,0x2131,0x1912,0x1933,0x1154,0x1976,0x19B7,0x19F8,0x1A18,0x19F8,0x11D8,0x19F8,0x11D8,0x19F8,0x19F8,0x11B6,0x1995,0x1994,0x1953,0x1932,0x1931,0x2131,0x2111,0x2131,0x1932,0x1953,0x1974,0x1995,0x19B6,0x19F7,0x19F7,0x2217,0x19D6,0x1196,0x19D6,0x2217,0x2217,0x21B6,0x2195,0x2174,0x2153,0x2953,0x2952,0x2951,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3971,0x3171,0x3971,0x3971,0x3972,0x3972,0x3972,0x3972,0x4192,0x4192,0x3972,0x3972,0x4192,0x4192,0x4192,0x4193,0x4192,0x4192,0x4193,0x4193,0x49B3,0x4193,0x4993,0x49B3,0x49D3,0x49D3,0x49B3,0x49D3,0x51D3,0x51D4,0x51D3,0x51D3,0x51D3,0x51D4,0x51F4,0x51D3,0x59D3,0x59D3,0x59B2,0x5970,0x8A74,0xCC5A,0xD47A,0xD47A,0xD479,0xD458,0xD438,0xD437,0xD437,0xD437,0xD457,0xCC57,0xCC77,0xCCB8,0xC4B8,0xB4D8,0xACD8,0x9CD8,0x8CB8,0x7CD8,0x7D18,0x7559,0x75DB,0x761B,0x6E5C,0x665C,0x669D,0x5EBD,0x56DD,0x4EFD,0x471E,0x3F3E,0x375E,0x2F5F,0x277F,0x1F7E,0x177F,0x0F7F,0x0F7F,0x077F,0x077F,0x075F,0x075F,0x077F,0x073F,0x073F,0x071E,0x071E,0x071E,0x06FE,0x06DF,0x06DE,0x06BE,0x06BE,0x06BE,0x069E,0x069F,0x069F,0x069F,0x067F,0x067F,0x067F,0x067F,0x067F,0x065F,0x065F,0x065F,0x065F,0x065F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x065F,0x063F,0x063F,0x063F,0x061F,0x061F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x063F,0x065F,0x065F,0x067F,0x067F,0x067F,0x067F,0x067F,0x067F,0x067F,0x069F,0x067F,0x067F,0x067F,0x065F,0x065F,0x065F,0x061F,0x05FF,0x05DF,0x0DBF,0x0D5E,0x0D1E,0x14FE,0x1CDF,0x143D,0x1BFC,0x2BFD,0x335B,0x2AB9,0x21D6,0x31B6,0x6AB9,0xA3BD,0xABBD,0xB35B,0xB319,0xBAF9,0xCB19,0xCAF8,0xCAD8,0xC296,0xBA76,0xBA96,0xBAD7,0xBB37,0xA337,0x7AD5,0x73B8,0x64BA,0x557C,0x5EDF,0x367E,0x263D,0x1E5D,0x269E,0x2E9E,0x46FF,0x4E7E,0x76DF,0x7DFD,0x6C17,0x6AD3,0x92D3,0xB315,0xC2F5,0xCAD5,0xCA94,0xCA94,0xCA95,0xCA95,0xD295,0xCA95,0xCAB6,0xC2D7,0xC338,0x7972,0x58F0,0x5951,0x5172,0x4972,0x4972,0x4172,0x4172,0x4172,0x3971,0x3971,0x3971,0x3972,0x3951,0x3151,0x3951,0x3131,0x3151,0x3171,0x3151,0x3150,0x3150,0x2930,0x3150,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x290F,0x290F,0x290F,0x2930,0x2110,0x2110,0x2110,0x210F,0x2930,0x2950,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1932,0x1112,0x0913,0x0955,0x19D7,0x09B8,0x09B9,0x09F9,0x01D9,0x01B9,0x01DA,0x01D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01B9,0x01B9,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01D9,0x01D9,0x01D9,0x01FA,0x01D9,0x01D9,0x01D9,0x01FA,0x01DA,0x01DA,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01B9,0x01B9,0x01B9,0x01B9,0x01D9,0x01DA,0x01B9,0x01B9,0x01DA,0x01D9,0x01DA,0x01DA,0x01B9,0x01D9,0x01B9,0x01B9,0x01D9,0x01D9,0x01DA,0x01DA,0x01D9,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01FA,0x01D9,0x01DA,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01F9,0x01B9,0x01D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x01B9,0x01DA,0x01DA,0x01DA,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01D9,0x01DA,0x01DA,0x01D9,0x01D9,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09DA,0x01B9,0x01DA,0x01D9,0x01D9,0x01F9,0x01D9,0x01FA,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01B9,0x01B9,0x01DA,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x09F9,0x09F8,0x09B7,0x1175,0x0912,0x1132,0x1911,0x2111,0x2110,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2910,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2110,0x2930,0x290F,0x210F,0x290F,0x290F, + 0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2930,0x2110,0x2910,0x2910,0x290F,0x210F,0x292F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x290F,0x292F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x2910,0x290F,0x2930,0x290F,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2931,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2930,0x2930,0x2930,0x210F,0x290F,0x210F,0x212F,0x2130,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2910,0x210F,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x210F,0x210F,0x2930,0x210F,0x212F,0x210F,0x290F,0x2910,0x2110,0x210F,0x210F,0x2930,0x2930,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x2110,0x290F,0x290F,0x290F,0x2910,0x210F,0x2910,0x292F,0x290F,0x210F,0x2930,0x2110,0x210F,0x2910,0x2930,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x292F,0x210F,0x210F,0x2110,0x2930,0x2110,0x210F,0x2110,0x2910,0x2110,0x2110,0x2910,0x210F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2930,0x210F,0x290F,0x210F,0x2110,0x2110,0x2910,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x210F,0x210F,0x2930,0x2110,0x2110,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2930,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2930,0x210F,0x292F,0x2930,0x210F,0x292F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2910,0x210F,0x20EF,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x2930,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2130,0x2130,0x2131,0x2131,0x1932,0x1933,0x1954,0x1996,0x1196,0x19D7,0x19F7,0x19B6,0x21F8,0x11B6,0x19D7,0x19B6,0x1995,0x1974,0x1953,0x1932,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2132,0x2153,0x2194,0x1995,0x19B5,0x19D6,0x19D6,0x19B6,0x1995,0x19B6,0x21D6,0x21D6,0x21B5,0x2174,0x2153,0x2973,0x2952,0x2952,0x3151,0x3171,0x3151,0x3171,0x3151,0x3951,0x3951,0x3951,0x3951,0x3971,0x3972,0x3972,0x3972,0x3972,0x3972,0x4192,0x3992,0x4192,0x4192,0x4192,0x3972,0x4192,0x4193,0x4192,0x4192,0x4192,0x4193,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x51D4,0x51D3,0x49B3,0x49B3,0x51D3,0x51D3,0x51D4,0x51D3,0x51D3,0x51D3,0x59F4,0x59D3,0x61F3,0x61D2,0x5950,0x7A33,0xC41A,0xD47A,0xD47A,0xD479,0xD479,0xD458,0xD457,0xD457,0xCC77,0xCC77,0xCCB8,0xC4B8,0xBCB8,0xAC97,0x9C97,0x8C56,0x7C97,0x74B7,0x7559,0x75BB,0x763C,0x769D,0x6EBE,0x5EBD,0x56FE,0x46DD,0x3EFD,0x3F1E,0x373E,0x2F5E,0x2F7F,0x277E,0x1F7F,0x177F,0x177F,0x0F7E,0x0F7F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x075F,0x075F,0x073F,0x071E,0x071E,0x06FE,0x06FE,0x06DE,0x06BE,0x06BE,0x06BE,0x069E,0x069E,0x069F,0x069F,0x069F,0x067F,0x067F,0x067F,0x065F,0x065F,0x063F,0x065F,0x063F,0x063F,0x063F,0x063F,0x063F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x063F,0x063F,0x063F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x063F,0x063F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x065F,0x063F,0x065F,0x063F,0x061F,0x05FF,0x05DF,0x05BF,0x057F,0x053F,0x04FE,0x0CBE,0x0C7E,0x0C3D,0x13DC,0x1B9C,0x2B7C,0x2B1B,0x327A,0x2176,0x3975,0x7299,0xB3FF,0xB3BD,0xB33B,0xBAFA,0xBAD9,0xC2F9,0xC2D8,0xC2D8,0xBA96,0xBAB6,0xB2D6,0xB317,0x9B17,0x7B16,0x6C19,0x655C,0x55FD,0x4EBF,0x2E5D,0x1E7D,0x1E7D,0x1E7E,0x2EDF,0x3EBF,0x56BF,0x6E7E,0x85FD,0x6BD6,0x72D3,0x9AF4,0xBB35,0xC2F5,0xCAB5,0xCA94,0xCA94,0xD295,0xCA74,0xCA75,0xCA95,0xCAB6,0xC2B6,0xC318,0x81B3,0x58F0,0x5951,0x5172,0x4972,0x4972,0x4172,0x4172,0x4192,0x4171,0x4192,0x3972,0x3971,0x3971,0x3951,0x3151,0x3152,0x3151,0x3151,0x3151,0x3151,0x2950,0x2930,0x3150,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2910,0x290F,0x2930,0x2930,0x290F,0x2930,0x2110,0x2110,0x2110,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x10F2,0x0913,0x1175,0x11B7,0x11D8,0x09D9,0x01D9,0x01DA,0x01B9,0x01DA,0x01DA,0x01D9,0x01DA,0x01DA,0x01FA,0x01DA,0x01B9,0x01B9,0x01DA,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01FA,0x01D9,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01DA,0x01D9,0x01DA,0x01D9,0x01B9,0x01D9,0x01D9,0x01B9,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01FA,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01B9,0x01D9,0x01DA,0x01D9,0x01DA,0x01D9,0x01DA,0x01D9,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01D9,0x01D9,0x01F9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x09F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01D9,0x01FA,0x01D9,0x01DA,0x01DA,0x01DA,0x01B9,0x01D9,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01D9,0x01F9,0x01FA,0x01D9,0x01D9,0x01D9,0x01FA,0x01D9,0x09F9,0x09F8,0x11B7,0x0974,0x1153,0x1112,0x1911,0x2111,0x2131,0x2110,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x292F,0x212F,0x210F,0x2130,0x212F,0x212F,0x2130,0x2130,0x2110,0x2910,0x2910,0x210F,0x2930,0x292F,0x292F,0x292F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F, + 0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x290F,0x2930,0x2930,0x2930,0x2930,0x2130,0x210F,0x212F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2110,0x212F,0x210F,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2930,0x2930,0x210F,0x212F,0x2130,0x2130,0x2930,0x2130,0x2930,0x2930,0x210F,0x212F,0x210F,0x2930,0x212F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2910,0x2930,0x2930,0x2930,0x2910,0x2910,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x212F,0x212F,0x2930,0x210F,0x212F,0x210F,0x2910,0x2110,0x212F,0x2130,0x210F,0x2110,0x210F,0x210F,0x2130,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x210F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x210F,0x2110,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x210F,0x2930,0x2110,0x2110,0x210F,0x210F,0x2910,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2930,0x2130,0x2110,0x2930,0x210F,0x212F,0x210F,0x2110,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x292F,0x2930,0x210F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2930,0x210F,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x212F,0x212F,0x290F,0x210F,0x210F,0x290F,0x210F,0x292F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2130,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x292F,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x2930,0x2110,0x2930,0x2110,0x2910,0x210F,0x290F,0x2910,0x2910,0x2930,0x212F,0x210F,0x210F,0x2930,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x210F,0x290F,0x290F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x2130,0x2130,0x2131,0x1911,0x1932,0x1953,0x1954,0x1974,0x1974,0x1954,0x1954,0x1954,0x1955,0x1975,0x1974,0x1953,0x1953,0x1931,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2131,0x2131,0x2152,0x2173,0x2193,0x21B4,0x21D5,0x19B5,0x1994,0x1974,0x1974,0x21B5,0x2195,0x2974,0x2953,0x2952,0x2952,0x2952,0x3151,0x3151,0x3171,0x3171,0x3151,0x3971,0x3951,0x3951,0x3951,0x3971,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x4192,0x4192,0x4192,0x4192,0x41B3,0x4192,0x41B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x4993,0x49B3,0x51D3,0x51D3,0x49B3,0x51D3,0x51D3,0x51D4,0x51D4,0x51D4,0x59F4,0x59F4,0x59D3,0x61F3,0x59B2,0x5950,0x7A33,0xC41A,0xCC7A,0xD47A,0xCC59,0xD459,0xCC58,0xCC58,0xCC78,0xCC98,0xC4B8,0xC4D8,0xB4B8,0xA497,0x9497,0x8CB7,0x8518,0x859A,0x7DDB,0x763C,0x767D,0x667D,0x5EBD,0x56FE,0x46FD,0x3F1E,0x373E,0x2F5E,0x2F7F,0x277F,0x1F7F,0x1F9F,0x179F,0x179F,0x179F,0x0F9F,0x0F9F,0x079F,0x079F,0x079F,0x077F,0x077F,0x077F,0x077F,0x075F,0x075F,0x073F,0x071E,0x071F,0x06FE,0x06FE,0x06DE,0x06BE,0x06BE,0x069E,0x069E,0x069E,0x069F,0x067E,0x067E,0x065E,0x067F,0x067F,0x065F,0x065F,0x063F,0x063F,0x063F,0x063F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x05FF,0x061F,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x061F,0x061F,0x061F,0x061F,0x063F,0x061F,0x061F,0x063F,0x063F,0x065F,0x063F,0x063F,0x063F,0x065F,0x063F,0x065F,0x061F,0x061F,0x05FF,0x05BF,0x05BF,0x059F,0x057F,0x051F,0x04DF,0x047E,0x0C5E,0x143E,0x1BFE,0x1B9D,0x1B1C,0x1ABB,0x2A9B,0x3219,0x2936,0x4156,0x82DB,0xABBE,0xBB7D,0xBB1B,0xC31A,0xC2F9,0xC2D8,0xBA97,0xB276,0xBAD7,0xB2F7,0xA317,0x8AF6,0x6B36,0x74DB,0x551B,0x567F,0x3E9F,0x267E,0x1E7E,0x1EBE,0x167E,0x2EBF,0x3EDF,0x56BF,0x6E7E,0x85FD,0x7417,0x72F3,0x92D3,0xB2F5,0xC2F5,0xCAB4,0xCA94,0xD295,0xCA74,0xCA54,0xCA74,0xCA75,0xCA95,0xC2B6,0xBAF7,0x89D3,0x58CF,0x5131,0x5152,0x4972,0x4992,0x4172,0x4192,0x4192,0x4192,0x3972,0x3971,0x3971,0x3951,0x3952,0x3952,0x3151,0x3151,0x3151,0x3151,0x3150,0x3150,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1112,0x1133,0x1175,0x11B7,0x11D9,0x09D9,0x09FA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01B9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x09F9,0x01D9,0x01B9,0x09D9,0x01B9,0x01D9,0x09D9,0x01D9,0x01D9,0x09D9,0x09D9,0x01D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01B9,0x01D9,0x01D9,0x01B9,0x01D9,0x09D9,0x01D9,0x01D9,0x09F9,0x01D9,0x01D9,0x09D9,0x01D9,0x09D9,0x09D9,0x01D9,0x09D9,0x09D9,0x01B8,0x09D9,0x09D9,0x09D9,0x01B9,0x01B9,0x09D9,0x01D9,0x09D9,0x09D9,0x09D9,0x01D9,0x09D9,0x01D9,0x01D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01D9,0x01D9,0x09D9,0x09D9,0x01B9,0x01B9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01B9,0x09D9,0x09D9,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x01D9,0x01D9,0x09D9,0x09D9,0x01D9,0x09D9,0x01B9,0x01D9,0x01D9,0x01D9,0x09D9,0x01D9,0x01D9,0x09D9,0x09F9,0x01D9,0x09D9,0x09D9,0x01D9,0x09D9,0x09D9,0x09D9,0x01D9,0x09D9,0x01D9,0x09D9,0x09D9,0x09D9,0x01D9,0x09D9,0x09D9,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01D9,0x01D9,0x09D9,0x09D9,0x09D9,0x09F9,0x01D9,0x01B9,0x01D9,0x09F9,0x01D9,0x09F9,0x09F9,0x01D9,0x01D9,0x01B9,0x09D9,0x01B9,0x01B8,0x01D9,0x01D9,0x09D9,0x01B9,0x01B9,0x09D9,0x01D9,0x01B9,0x01D9,0x09D9,0x01B9,0x01B9,0x09D9,0x09D9,0x09D9,0x01B8,0x01D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01B8,0x09D9,0x09D9,0x09D9,0x01D9,0x01B9,0x09D9,0x09D9,0x01B9,0x01D9,0x01D9,0x01B9,0x01D9,0x09FA,0x01F9,0x01D9,0x01D9,0x01FA,0x01D9,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01F9,0x09F9,0x09F8,0x11B7,0x0975,0x1133,0x1112,0x1911,0x2131,0x2931,0x2131,0x2110,0x2130,0x2130,0x2130,0x292F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x290F,0x290F,0x290F, + 0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x2910,0x2930,0x2930,0x210F,0x2930,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x210F,0x2130,0x212F,0x210F,0x210F,0x2110,0x2110,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x210F,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2110,0x2930,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2930,0x2110,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2930,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x2930,0x290F,0x292F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x2930,0x210F,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x290F,0x2910,0x2910,0x2910,0x210F,0x210F,0x2930,0x290F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2910,0x290F,0x290F,0x210F,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x210F,0x212F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x210F,0x2930,0x210F,0x2910,0x2910,0x2930,0x2930,0x290F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x290F,0x290F,0x2910,0x2910,0x2930,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x210F,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x2910,0x290F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1953,0x1933,0x1933,0x1953,0x1933,0x1933,0x1933,0x1933,0x1932,0x1932,0x1931,0x2131,0x2131,0x2130,0x2930,0x2930,0x2930,0x2930,0x2931,0x2931,0x2952,0x2152,0x2172,0x2173,0x1973,0x1973,0x1973,0x2173,0x2174,0x2153,0x2173,0x2153,0x2952,0x2952,0x2952,0x3151,0x3151,0x3151,0x3171,0x3151,0x3151,0x3971,0x3971,0x3971,0x3972,0x3972,0x3972,0x3992,0x3972,0x3972,0x3972,0x3972,0x4172,0x4192,0x4192,0x4193,0x4192,0x41B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x4993,0x49B3,0x49D3,0x49D3,0x49B3,0x49B3,0x51D4,0x51D3,0x51D3,0x51D3,0x51D3,0x51F4,0x51F4,0x51F4,0x59F4,0x59D3,0x61F3,0x61D2,0x5970,0x71F2,0xBBF9,0xCC7B,0xCC7A,0xCC79,0xD499,0xC458,0xCC98,0xCCD9,0xC4F9,0xBD19,0xA4B7,0x9476,0x8CB7,0x8D39,0x857A,0x85DB,0x7E3C,0x765D,0x6EBD,0x5EBD,0x56DE,0x4EDD,0x3EFD,0x371D,0x2F3E,0x275E,0x277F,0x177E,0x179F,0x0F9F,0x0FBF,0x0FBF,0x0FBF,0x07BF,0x07BF,0x07BF,0x079F,0x079F,0x079F,0x079F,0x077F,0x077F,0x077F,0x077F,0x077F,0x075F,0x073F,0x071F,0x06FE,0x06FE,0x06DE,0x06DE,0x06BE,0x069E,0x069E,0x069E,0x069F,0x069E,0x067E,0x067E,0x065E,0x065E,0x065E,0x065F,0x063F,0x063F,0x063F,0x063F,0x061F,0x061F,0x061F,0x061F,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05DF,0x05FF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x061F,0x063F,0x061F,0x05FF,0x05FF,0x05FF,0x05DF,0x05BF,0x059F,0x057F,0x051F,0x04DF,0x04BF,0x0C7E,0x041E,0x0BFE,0x13BE,0x0B3C,0x0A9B,0x127B,0x227C,0x323B,0x31B8,0x20D5,0x4136,0x933D,0xC3FF,0xBB5C,0xB2FA,0xBB1A,0xBAD9,0xBAD8,0xBAD8,0xB2D7,0xB338,0x9B17,0x7AF5,0x73F8,0x6D1C,0x55DD,0x4E9F,0x36BF,0x1E7E,0x167E,0x1EBF,0x1E9E,0x26DF,0x3EDF,0x56BE,0x6E7F,0x85BC,0x7417,0x7AD3,0x9AF4,0xBB15,0xC2D5,0xCAB5,0xCA54,0xD295,0xD254,0xD275,0xCA54,0xD275,0xCA95,0xC295,0xC338,0x9214,0x58F0,0x5951,0x5151,0x4972,0x4992,0x4992,0x4171,0x4172,0x4172,0x3971,0x3971,0x3972,0x3972,0x3151,0x3152,0x3151,0x3171,0x3171,0x3150,0x3150,0x3150,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2130,0x2110,0x2130,0x2130,0x2130,0x2151,0x1911,0x1112,0x1133,0x1155,0x11B7,0x11D9,0x09F9,0x01D9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01B9,0x01D9,0x01D9,0x09F9,0x09D9,0x09F9,0x09D9,0x09D9,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D9,0x09B8,0x09D9,0x09D8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x11F9,0x09D8,0x09D8,0x09D8,0x09D9,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09F8,0x09D8,0x09F9,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D9,0x09D8,0x09D9,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D9,0x09D9,0x09B8,0x11F9,0x09D8,0x11F9,0x09F8,0x09F8,0x09D8,0x09D8,0x09D8,0x11D9,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D9,0x09D8,0x09D8,0x09F8,0x09D8,0x09D8,0x09D8,0x09F9,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D9,0x09D8,0x09D9,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x11F9,0x09D8,0x09D8,0x09D9,0x09D9,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09F9,0x09D8,0x09D8,0x09D8,0x09D8,0x09F9,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09F9,0x09D8,0x09F8,0x09F9,0x09D8,0x09D8,0x09D8,0x09D8,0x09B8,0x09D8,0x09B8,0x09B8,0x09D8,0x09B8,0x09D8,0x09B8,0x09B8,0x09B8,0x09D8,0x09B8,0x09D8,0x09D8,0x09B8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09F9,0x09D8,0x09D9,0x09F9,0x09F9,0x09F9,0x01D9,0x09F9,0x01D9,0x01D9,0x01D9,0x01B9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01D9,0x09F9,0x09D8,0x09B6,0x1175,0x1133,0x1111,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2930,0x2130,0x2930,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x2110,0x2910,0x2110,0x210F,0x290F,0x290F,0x210F,0x292F,0x292F,0x290F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F, + 0x2131,0x2131,0x1930,0x2130,0x2130,0x2130,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x212F,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2131,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x2130,0x2110,0x2930,0x2110,0x2130,0x2930,0x2930,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2130,0x210F,0x2130,0x2110,0x2110,0x2130,0x210F,0x210F,0x2910,0x2110,0x2110,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x210F,0x2910,0x210F,0x290F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x2110,0x2910,0x2910,0x2110,0x2110,0x210F,0x2130,0x2130,0x2110,0x2930,0x290F,0x210F,0x2910,0x2910,0x290F,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x2930,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2110,0x2110,0x290F,0x210F,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x292F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2110,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2910,0x2910,0x2910,0x290F,0x290F,0x2110,0x2930,0x212F,0x212F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x212F,0x2930,0x2110,0x210F,0x2910,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x2930,0x2910,0x290F,0x290F,0x2910,0x210F,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2110,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x210F,0x2110,0x2110,0x2130,0x210F,0x2930,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x2132,0x2132,0x2152,0x1932,0x1932,0x1932,0x2132,0x2132,0x2132,0x2131,0x2131,0x2131,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2931,0x2911,0x2931,0x2951,0x2952,0x2152,0x2972,0x2173,0x2173,0x2173,0x2153,0x2152,0x2952,0x2932,0x2952,0x3152,0x3152,0x3151,0x3151,0x3151,0x3971,0x3971,0x3971,0x3992,0x3971,0x3972,0x3972,0x3972,0x3972,0x3972,0x4192,0x4192,0x4192,0x41B3,0x4192,0x41B2,0x41B3,0x4193,0x4192,0x4192,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x51D3,0x49D3,0x51D3,0x51F3,0x51D3,0x51D3,0x51F3,0x51D3,0x51F4,0x51F4,0x51F4,0x51F4,0x59F4,0x59F3,0x61B2,0x6191,0x7A53,0xBC1A,0xCC7A,0xCC7A,0xCC79,0xCC99,0xCCB9,0xCCD9,0xC4D9,0xACB8,0x9496,0x8496,0x7CD7,0x7D79,0x7DDB,0x6DFB,0x6E5D,0x667D,0x5EDE,0x56FE,0x4EFE,0x471E,0x3F1E,0x373E,0x2F5E,0x277E,0x279F,0x1F9F,0x17BF,0x17BF,0x0FBF,0x0FBF,0x0FBF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x077F,0x075F,0x073E,0x06FE,0x06FE,0x06DE,0x06FE,0x06BE,0x06BE,0x06BE,0x069E,0x069E,0x069E,0x069F,0x067E,0x065E,0x065E,0x065E,0x063E,0x063E,0x063E,0x063F,0x061E,0x061E,0x061F,0x061F,0x05FE,0x05FF,0x05DF,0x05DF,0x05FF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05BF,0x05BF,0x05DF,0x05DF,0x05DF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05DF,0x05BF,0x05BF,0x05BF,0x05DF,0x05BF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x05DF,0x05BF,0x05BF,0x059F,0x057F,0x051F,0x04FF,0x04BF,0x049F,0x0C5F,0x0C1E,0x0BBE,0x0B5D,0x0B1D,0x0ABC,0x0A3B,0x1A3B,0x221B,0x31FB,0x2958,0x2094,0x59B8,0xA37E,0xB39E,0xB33C,0xB2DA,0xBAD9,0xB2D9,0xB2D8,0xB339,0xAB38,0x9337,0x6AF5,0x747A,0x5D3C,0x565E,0x3E9F,0x269E,0x167E,0x16BE,0x16BF,0x1EBE,0x26DF,0x46FF,0x4E9E,0x6E5E,0x7D7C,0x7C17,0x7AD3,0x9AD4,0xBAD5,0xC2B5,0xCAB5,0xCA54,0xD274,0xD275,0xD254,0xD275,0xD275,0xCA95,0xC295,0xC2F7,0x89D3,0x58F0,0x5951,0x5151,0x4972,0x4972,0x4172,0x4172,0x4172,0x4172,0x3972,0x3952,0x3952,0x3972,0x3151,0x3151,0x3151,0x3171,0x3151,0x3150,0x3150,0x2950,0x2930,0x2950,0x2950,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2131,0x2131,0x1911,0x1112,0x1133,0x0954,0x11B7,0x11F9,0x09F9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01F9,0x01D9,0x09D9,0x09D9,0x09D8,0x1219,0x11F8,0x1218,0x1A18,0x11F8,0x19F8,0x19F8,0x19F8,0x1A18,0x1A18,0x19F8,0x1A18,0x1A18,0x19F8,0x19F8,0x19F8,0x11F8,0x19F8,0x19F8,0x19F8,0x11F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x11F8,0x19F8,0x11D7,0x19F8,0x11F8,0x11D7,0x11F8,0x19F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11D8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11D8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x19F8,0x11F8,0x11F8,0x19F8,0x19F8,0x11F8,0x11F8,0x11F8,0x11F8,0x19F8,0x11F8,0x11F8,0x19F8,0x11D8,0x11D8,0x11F8,0x11F8,0x11F8,0x11D8,0x11F8,0x19F8,0x11F8,0x11F8,0x19F8,0x19F8,0x11F8,0x11F8,0x11D7,0x11F8,0x11F8,0x11F8,0x11F8,0x1A18,0x11F8,0x11F7,0x1218,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11D8,0x19F8,0x19F8,0x11F8,0x11D7,0x11F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x11F8,0x19F8,0x19F8,0x11F8,0x11F8,0x11F8,0x11D8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11D8,0x11F8,0x11F8,0x11F8,0x19F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x19F8,0x11F8,0x19F8,0x11F8,0x11F8,0x19F8,0x11F8,0x11F8,0x11D8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x19F8,0x19F8,0x11F8,0x19F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11D8,0x11F8,0x1218,0x11F8,0x11F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x1A18,0x1A18,0x1A18,0x1A18,0x19F7,0x1A18,0x1A18,0x1218,0x11F8,0x1218,0x11F8,0x1218,0x11F8,0x11F8,0x11F8,0x11F8,0x09F8,0x09D8,0x09F9,0x09F9,0x01D9,0x01F9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x0A1A,0x01F9,0x09F9,0x09F8,0x09B6,0x0954,0x1153,0x1111,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x290F,0x210F,0x2930,0x2130,0x2130,0x210F,0x2130,0x2130, + 0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x2131,0x2131,0x2111,0x2110,0x2110,0x2110,0x2110,0x2130,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2111,0x2111,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2131,0x2130,0x2110,0x2130,0x2110,0x2110,0x2131,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2111,0x2111,0x2111,0x2110,0x2110,0x2111,0x2131,0x2131,0x2110,0x2130,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x2130,0x210F,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x210F,0x2910,0x210F,0x2910,0x210F,0x210F,0x2110,0x210F,0x290F,0x2110,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x290F,0x212F,0x212F,0x2910,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x290F,0x2930,0x210F,0x210F,0x2930,0x290F,0x290F,0x2910,0x2910,0x2930,0x2910,0x290F,0x290F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x210F,0x210F,0x2930,0x2110,0x2930,0x210F,0x2930,0x2130,0x212F,0x210F,0x292F,0x212F,0x212F,0x292F,0x290F,0x290F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2910,0x210F,0x290F,0x210F,0x2110,0x210F,0x2930,0x292F,0x290F,0x210F,0x2910,0x2110,0x2930,0x210F,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x2910,0x2910,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x210F,0x212F,0x210F,0x2930,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2110,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x2910,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x210F,0x2930,0x212F,0x212F,0x2130,0x2130,0x210F,0x292F,0x2930,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x3131,0x3131,0x2931,0x2911,0x2931,0x2931,0x2931,0x2932,0x2952,0x2952,0x2932,0x2952,0x2952,0x2952,0x2931,0x3151,0x3151,0x3171,0x3171,0x3971,0x3971,0x3971,0x3972,0x3971,0x3971,0x3971,0x3972,0x3972,0x3972,0x4192,0x4172,0x4192,0x41B3,0x4193,0x41B3,0x4192,0x4192,0x4192,0x4193,0x4192,0x49B3,0x49B3,0x49B3,0x49B3,0x49D3,0x49B3,0x49D3,0x51D3,0x51D3,0x51F3,0x51D3,0x51F3,0x51F3,0x51F3,0x51F3,0x51F3,0x5214,0x5214,0x49F3,0x51D3,0x59F3,0x59B2,0x5991,0x8294,0xBC3A,0xCC9A,0xCC9A,0xCC9A,0xCCDA,0xCCFA,0xBCB8,0xA477,0x9456,0x7C55,0x7CF7,0x7D79,0x761B,0x6E5C,0x66BD,0x5EDE,0x4EFE,0x471F,0x3F3F,0x371E,0x2F5E,0x2F5E,0x275F,0x277F,0x1F7E,0x179E,0x179F,0x0FBF,0x0FBF,0x0FBF,0x0FBF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x077F,0x075F,0x071E,0x06FE,0x06DE,0x06DE,0x06DE,0x06BE,0x06BE,0x069E,0x069E,0x067E,0x067E,0x067E,0x067E,0x065E,0x065E,0x065E,0x063E,0x063E,0x063E,0x061E,0x061E,0x05FE,0x05FE,0x05FF,0x05FE,0x05FF,0x05DE,0x05DF,0x05DF,0x05DF,0x05BF,0x05BF,0x05DF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x059F,0x05BF,0x059F,0x059F,0x059F,0x059F,0x059F,0x059F,0x059F,0x059F,0x059F,0x059F,0x05BF,0x059F,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05BF,0x05DF,0x05FF,0x05DF,0x05BF,0x05BF,0x05BF,0x059F,0x057F,0x055F,0x051F,0x04FF,0x04DF,0x049F,0x045F,0x03FE,0x0BFF,0x037E,0x033D,0x02DD,0x0A9D,0x0A3C,0x09FB,0x19FB,0x29FC,0x31BA,0x28F7,0x2874,0x721A,0xB3DF,0xBB9E,0xB31B,0xAAB9,0xB2FA,0xAAF9,0xAB39,0xA359,0x8337,0x6357,0x6CDB,0x559D,0x4E9F,0x2E9F,0x1EBF,0x16BE,0x16BF,0x0E9E,0x16BE,0x26DF,0x46FF,0x569F,0x6E3E,0x7D5C,0x73B6,0x82F4,0xA2D4,0xBAF5,0xC2B5,0xCA74,0xD274,0xD275,0xD275,0xD234,0xD254,0xD275,0xCA75,0xC2B5,0xBAD7,0x91F4,0x58AF,0x5951,0x5172,0x4992,0x4972,0x4192,0x4172,0x4172,0x4172,0x3972,0x3952,0x3972,0x3972,0x3151,0x3151,0x3151,0x3171,0x3150,0x3150,0x3150,0x2950,0x2950,0x2930,0x2950,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x292F,0x290F,0x2930,0x2110,0x2130,0x2131,0x2131,0x1911,0x1112,0x1133,0x1154,0x11D7,0x09F8,0x09F9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x09FA,0x0A1A,0x09F9,0x1219,0x11F8,0x11D8,0x11D7,0x19F8,0x19F7,0x19F7,0x19F7,0x21F7,0x19D7,0x21F7,0x19D6,0x19D7,0x19D6,0x19D7,0x19D6,0x19D7,0x19D6,0x21F7,0x21D7,0x19D6,0x19D6,0x19D7,0x19D7,0x19D7,0x19D7,0x21D7,0x19D7,0x21D7,0x19D6,0x21D7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D6,0x19D7,0x19D7,0x19F7,0x19D6,0x19D6,0x19F7,0x19D7,0x19D7,0x19F7,0x19F7,0x21F7,0x19D7,0x21F7,0x19D7,0x21F7,0x19D7,0x19D7,0x19D7,0x21F7,0x19D6,0x21F7,0x19D6,0x19D7,0x19D7,0x21F7,0x19D7,0x19D7,0x19D6,0x21F7,0x19F6,0x21F7,0x19D6,0x19D6,0x19D7,0x19D6,0x19D7,0x19D7,0x19D6,0x19D7,0x19D6,0x19D7,0x19D7,0x19D7,0x19B6,0x19D7,0x19D7,0x19D6,0x19D7,0x19F7,0x19D7,0x19F7,0x19D7,0x19F7,0x19D6,0x19F7,0x19D7,0x19F7,0x19D6,0x19F7,0x19D6,0x19F7,0x19D6,0x19F7,0x19D7,0x19D7,0x19D6,0x19D7,0x19D6,0x19D6,0x19B6,0x19D7,0x19B6,0x19D6,0x19B6,0x19B6,0x19B6,0x19D6,0x19D6,0x19D7,0x19B6,0x19D6,0x19D6,0x19B6,0x19B6,0x19D6,0x19B6,0x19D6,0x19B6,0x19D6,0x19D6,0x19D6,0x19B6,0x19D6,0x19D6,0x19D6,0x19B6,0x19B6,0x19B6,0x19D7,0x19B6,0x19D6,0x19D6,0x19D7,0x19D6,0x19D6,0x19B6,0x19D7,0x19D6,0x19D6,0x19D6,0x19D7,0x19D6,0x19D6,0x19D6,0x19D7,0x19D6,0x19D6,0x19D6,0x19D7,0x19B6,0x19D7,0x19D6,0x19D7,0x19D6,0x19D6,0x19D6,0x19D7,0x19D6,0x19D7,0x19F7,0x21F7,0x19F7,0x21F7,0x21F7,0x21F7,0x21F7,0x21F7,0x21F7,0x21F7,0x21F7,0x21F7,0x21F7,0x21F7,0x19F7,0x21F7,0x21F7,0x2217,0x21F7,0x21F7,0x21F7,0x21F7,0x21F7,0x21F7,0x21F7,0x21F7,0x19F6,0x2217,0x21F7,0x21F7,0x19F7,0x2217,0x19F7,0x21F7,0x19D7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x11F8,0x11F8,0x09F8,0x09F9,0x09F9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01F9,0x09F9,0x09D8,0x11D7,0x0954,0x1133,0x1931,0x1931,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2110,0x2110,0x2930,0x210F,0x2130,0x212F,0x210F,0x292F,0x290F,0x210F,0x292F,0x210F,0x292F,0x290F,0x212F,0x210F,0x2130,0x2130,0x2130, + 0x1973,0x1973,0x1952,0x1952,0x1952,0x1952,0x1952,0x1931,0x2152,0x1931,0x1931,0x1911,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x2131,0x2131,0x2131,0x2131,0x2151,0x1951,0x1951,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x2131,0x2131,0x2131,0x1910,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1930,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x2131,0x2151,0x2131,0x2151,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2111,0x2131,0x2111,0x2111,0x2111,0x2111,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2930,0x2110,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x212F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2910,0x2910,0x210F,0x2130,0x2930,0x2110,0x290F,0x210F,0x210F,0x2910,0x290F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2110,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x2110,0x212F,0x212F,0x210F,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x2930,0x210F,0x290F,0x210F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x2930,0x2910,0x2930,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x290F,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x210F,0x212F,0x292F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x2930,0x2110,0x2910,0x2930,0x290F,0x210F,0x210F,0x2910,0x290F,0x2930,0x210F,0x210F,0x210F,0x2910,0x2930,0x290F,0x2910,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x290F,0x2930,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2110,0x2930,0x2110,0x2910,0x2910,0x2910,0x2110,0x2930,0x2910,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x290F,0x2910,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x2930,0x290F,0x2910,0x290F,0x2910,0x2930,0x2910,0x290F,0x2910,0x2930,0x210F,0x210F,0x290F,0x2930,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x2930,0x292F,0x292F,0x292F,0x292F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2150,0x2130,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x3130,0x3151,0x3131,0x3131,0x2931,0x2951,0x2931,0x2931,0x2952,0x2952,0x3152,0x3152,0x3152,0x3151,0x3131,0x3151,0x3972,0x3972,0x3992,0x3992,0x3992,0x3971,0x3971,0x3972,0x3971,0x3972,0x3992,0x3972,0x4172,0x4172,0x4193,0x4193,0x4192,0x4192,0x4192,0x4192,0x4192,0x49B3,0x49B3,0x49B3,0x49B3,0x4993,0x49B3,0x51B3,0x49D3,0x49D3,0x49D3,0x49B2,0x49D3,0x51F3,0x51F3,0x51F3,0x49F3,0x49F3,0x5214,0x5234,0x4A34,0x4A13,0x4A33,0x49F3,0x49B1,0x59D1,0x82F5,0xAC19,0xCCFB,0xCCDB,0xCD1B,0xC4DA,0xB4B9,0xA477,0x9456,0x8CB7,0x8517,0x7DBA,0x865C,0x6E7C,0x66DD,0x56FE,0x46FE,0x3F1E,0x373F,0x2F5F,0x275F,0x279F,0x1F7F,0x177F,0x177F,0x0F9F,0x0FBF,0x0FBF,0x0FBF,0x0FDF,0x07DF,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x079F,0x07BF,0x07BF,0x077F,0x073E,0x071E,0x06DE,0x06DE,0x06BE,0x06BE,0x06BE,0x06BE,0x069E,0x067E,0x067E,0x067E,0x067E,0x065E,0x065E,0x065E,0x065E,0x063E,0x063E,0x063E,0x061E,0x061E,0x061E,0x061E,0x05FE,0x05FE,0x05FF,0x05DE,0x05DE,0x05DF,0x05DF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x059F,0x059F,0x059F,0x059F,0x057F,0x059F,0x059F,0x059F,0x057F,0x059F,0x059F,0x057F,0x059F,0x059F,0x057F,0x057F,0x057F,0x059F,0x059F,0x059F,0x059F,0x059F,0x059F,0x057F,0x057F,0x059F,0x059F,0x059F,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x059F,0x05BF,0x059F,0x059F,0x057F,0x057F,0x055F,0x051F,0x04FF,0x04DF,0x04BF,0x047F,0x043F,0x03DE,0x0BBF,0x037E,0x031E,0x02DD,0x029D,0x129E,0x0A1C,0x11BB,0x21DC,0x219A,0x3179,0x2095,0x38B5,0x829C,0xB3DF,0xB37D,0xA2DA,0xA2DA,0xA2F9,0xA33A,0x8B18,0x7B58,0x63F9,0x54DB,0x55FE,0x3E9F,0x26BF,0x169E,0x0EBE,0x0EBE,0x16FF,0x16BE,0x2EDF,0x3EDF,0x5EDF,0x6DFD,0x7D3B,0x6B35,0x82B4,0xA2B4,0xBAB5,0xCA95,0xCA74,0xD254,0xD254,0xD254,0xD254,0xD254,0xCA54,0xCA95,0xCAB6,0xBAD7,0x89F4,0x50AF,0x5951,0x4951,0x4972,0x4992,0x4172,0x4172,0x4172,0x3972,0x3952,0x3972,0x3972,0x3971,0x3151,0x3151,0x3171,0x3151,0x3150,0x3150,0x2930,0x2950,0x2950,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x2110,0x2130,0x2131,0x2131,0x1932,0x1112,0x1133,0x0954,0x11D7,0x11F9,0x01F9,0x01F9,0x01FA,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x09D9,0x09B8,0x11D9,0x11D8,0x11B7,0x0955,0x0934,0x08F3,0x00D2,0x00D2,0x08D2,0x08B1,0x08D2,0x08D2,0x08B1,0x08D1,0x08B1,0x08D1,0x08D2,0x08D2,0x08D2,0x08D2,0x08D2,0x08D2,0x08D2,0x08F2,0x10F2,0x08D2,0x10F2,0x10F2,0x10F2,0x10F2,0x08F2,0x08D2,0x08F2,0x10F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x1112,0x0912,0x10F2,0x08F2,0x10F2,0x08F2,0x08F2,0x08F2,0x1112,0x1112,0x10F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x10F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x10F2,0x1113,0x10F2,0x10F2,0x10F2,0x1113,0x1113,0x08F2,0x1113,0x1113,0x1112,0x1112,0x08F2,0x08F3,0x1113,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F3,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x1112,0x08F2,0x08F2,0x08F2,0x0912,0x0912,0x08F2,0x08F2,0x1112,0x10F2,0x1113,0x10F3,0x10F2,0x10F2,0x10F2,0x10F2,0x10F3,0x10F2,0x10F2,0x10F2,0x10F2,0x10F2,0x08F2,0x10F2,0x10F2,0x08F2,0x10F2,0x10F2,0x10F2,0x10F2,0x10F2,0x10F2,0x10F2,0x08F2,0x10F3,0x10F2,0x08F2,0x08F2,0x10F3,0x08F2,0x1113,0x1112,0x08F2,0x1113,0x1112,0x08F2,0x1113,0x10F3,0x1113,0x10F2,0x1113,0x1113,0x1112,0x1112,0x10F2,0x10F2,0x1113,0x1113,0x08F3,0x08F3,0x1113,0x1113,0x1113,0x08F2,0x1113,0x1113,0x08F2,0x08F2,0x1113,0x08F2,0x08F2,0x08F2,0x08F2,0x08D2,0x08F2,0x08D2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08D2,0x08F2,0x08F2,0x08D2,0x08D2,0x08D2,0x08D2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08D2,0x08F2,0x08F2,0x08D2,0x08D2,0x08D2,0x08F2,0x08D2,0x08D2,0x08D2,0x08D2,0x08F2,0x08F2,0x08D2,0x08F2,0x0913,0x0913,0x0975,0x1196,0x09B7,0x09D8,0x09F9,0x09F9,0x01B9,0x01B9,0x01BA,0x01DA,0x01BA,0x01DA,0x01DA,0x01D9,0x01FA,0x01F9,0x09F9,0x11F8,0x11D7,0x0954,0x1112,0x1931,0x1931,0x2130,0x2110,0x2130,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2910,0x2110,0x2930,0x2130,0x2130,0x212F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2130,0x2110,0x2130,0x2130, + 0x21F5,0x21D5,0x2194,0x1973,0x1953,0x1132,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x2132,0x1931,0x1931,0x1931,0x1931,0x1951,0x1931,0x1931,0x1951,0x1952,0x1952,0x1931,0x1951,0x1952,0x1931,0x1932,0x2132,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2132,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1931,0x1931,0x1931,0x1932,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1951,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1931,0x2132,0x1931,0x1931,0x1931,0x1931,0x1932,0x2132,0x1932,0x1931,0x1931,0x1931,0x1932,0x1931,0x1932,0x1932,0x1932,0x1931,0x1931,0x1932,0x1932,0x1932,0x1931,0x1931,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x2132,0x1911,0x1911,0x1911,0x1912,0x1912,0x1911,0x1932,0x2132,0x1911,0x2131,0x1911,0x2111,0x2131,0x2131,0x2111,0x2131,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x2930,0x210F,0x210F,0x2130,0x210F,0x210F,0x212F,0x2130,0x2130,0x2930,0x2110,0x2930,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2910,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x290F,0x210F,0x2930,0x2910,0x210F,0x2110,0x2110,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x210F,0x290F,0x210F,0x2930,0x290F,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2910,0x2930,0x210F,0x290F,0x2930,0x290F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x290F,0x212F,0x210F,0x2930,0x2930,0x210F,0x2930,0x290F,0x210F,0x292F,0x212F,0x292F,0x292F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x212F,0x212F,0x2910,0x2930,0x210F,0x212F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x210F,0x212F,0x290F,0x2930,0x290F,0x290F,0x292F,0x292F,0x210F,0x292F,0x212F,0x210F,0x290F,0x210F,0x2910,0x2910,0x290F,0x2910,0x290F,0x210F,0x2910,0x2910,0x2910,0x210F,0x2910,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x210F,0x210F,0x2910,0x2910,0x210F,0x2110,0x2930,0x2910,0x2110,0x2930,0x2910,0x2910,0x2910,0x210F,0x2910,0x2110,0x2930,0x210F,0x2110,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2930,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x2930,0x3131,0x3131,0x3131,0x3131,0x3151,0x3151,0x3151,0x3151,0x2951,0x3172,0x3172,0x3151,0x3152,0x3151,0x3972,0x3972,0x3972,0x3992,0x3972,0x3992,0x3971,0x3972,0x3972,0x3971,0x4192,0x4192,0x4192,0x4193,0x4192,0x4993,0x4192,0x4192,0x4192,0x4192,0x49B3,0x4992,0x49B3,0x49B3,0x49B3,0x49B3,0x51B3,0x51D3,0x51B3,0x51D3,0x49B3,0x49D3,0x49B2,0x51F3,0x51F3,0x5213,0x49F3,0x49F3,0x49F3,0x4A33,0x4234,0x3A12,0x31D1,0x3A12,0x5273,0x62B4,0x8B97,0xB49A,0xC4FB,0xCD1B,0xCD5B,0xBCFA,0xA478,0x8415,0x8476,0x8D59,0x85BA,0x761B,0x6E7C,0x66DD,0x56FD,0x46FD,0x36FD,0x375F,0x2F7F,0x277F,0x1F7F,0x177F,0x0F7F,0x0F9F,0x0FBF,0x0FBF,0x0FDF,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x077F,0x073E,0x071E,0x06FE,0x06BD,0x06BD,0x06BE,0x06BE,0x06BE,0x069E,0x067E,0x067E,0x067E,0x065E,0x067E,0x065E,0x065E,0x065E,0x063D,0x063E,0x061E,0x061E,0x061E,0x05FE,0x061E,0x05FE,0x05FE,0x05FF,0x05DE,0x05DE,0x05BE,0x05BE,0x05BF,0x05BF,0x059F,0x059F,0x059F,0x057F,0x057F,0x057F,0x057F,0x057F,0x057F,0x057F,0x057F,0x057F,0x057F,0x057F,0x055F,0x055F,0x057F,0x055F,0x055F,0x055F,0x057F,0x057F,0x057F,0x055F,0x057F,0x057F,0x057F,0x057F,0x057F,0x057F,0x057F,0x057F,0x059F,0x059F,0x059F,0x059F,0x059F,0x059F,0x059F,0x057F,0x057F,0x057F,0x057F,0x055F,0x057F,0x055F,0x051F,0x04FF,0x04DF,0x049F,0x049F,0x043F,0x041F,0x0BFF,0x039F,0x035E,0x02FE,0x02BE,0x0A9E,0x0A3D,0x0A1C,0x09BB,0x19BC,0x21BB,0x31BB,0x3139,0x2895,0x4916,0x9B5E,0xB3BF,0xA31C,0x9AFB,0x9AFA,0x933A,0x7AF8,0x6B99,0x5C5A,0x5D9D,0x4E7F,0x36BF,0x26BF,0x16DF,0x0EDF,0x0EDE,0x16DF,0x1EFF,0x2EDF,0x3EBE,0x5EBF,0x6DDD,0x7CFB,0x7355,0x92F5,0xAAB4,0xC2B5,0xCA74,0xCA74,0xD254,0xD274,0xD254,0xD254,0xD254,0xD274,0xCA95,0xC2B6,0xC318,0x89D3,0x5910,0x5151,0x5172,0x4972,0x4972,0x4172,0x4172,0x4172,0x3972,0x3972,0x3951,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3150,0x3150,0x3150,0x3150,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x292F,0x292F,0x292F,0x2130,0x2130,0x2131,0x2131,0x1911,0x1132,0x1134,0x1175,0x11B7,0x09F8,0x09F9,0x01F9,0x01D9,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01B9,0x09B9,0x09B8,0x11B8,0x0976,0x0935,0x0914,0x0913,0x1113,0x10F2,0x10F2,0x10F2,0x18F2,0x10F2,0x10F1,0x10F1,0x1912,0x18F2,0x10F1,0x18F2,0x18F2,0x10F1,0x18F2,0x18F2,0x10F1,0x18F2,0x1912,0x10F2,0x1912,0x18F2,0x10F1,0x18F2,0x18F2,0x18F2,0x18F2,0x10F2,0x18F2,0x18F2,0x1912,0x1912,0x1912,0x18F2,0x1912,0x1112,0x1912,0x1912,0x1912,0x10F1,0x1912,0x1912,0x1911,0x10F1,0x1912,0x18F2,0x10F1,0x1112,0x18F2,0x1912,0x10F1,0x18F2,0x18F2,0x18F1,0x10F1,0x10F1,0x18F2,0x18F2,0x18F2,0x10F1,0x1112,0x10F1,0x1912,0x18F2,0x18F2,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x18F2,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1112,0x1912,0x1912,0x1912,0x1112,0x1912,0x10F2,0x1912,0x1912,0x18F2,0x10F2,0x18F2,0x1112,0x1912,0x1112,0x1912,0x1112,0x18F2,0x18F2,0x1912,0x1912,0x1912,0x18F2,0x1912,0x1912,0x1912,0x1912,0x18F2,0x18F2,0x18F2,0x18F2,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x18F2,0x18F2,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x18F2,0x1112,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1112,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x18F2,0x18F2,0x18F2,0x1912,0x18F2,0x18F2,0x18F2,0x18F2,0x10F2,0x1912,0x1912,0x10F1,0x18F2,0x1912,0x10F1,0x1912,0x18F2,0x10F1,0x1912,0x18F2,0x10F1,0x1912,0x1912,0x18F2,0x10F1,0x1912,0x10F1,0x18F2,0x18F2,0x1912,0x10F1,0x18F2,0x1912,0x1112,0x10F2,0x1912,0x1112,0x1933,0x1133,0x1133,0x1154,0x0975,0x09B7,0x11F8,0x09D9,0x09D9,0x09DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01B9,0x01DA,0x021A,0x01D9,0x09D8,0x11F8,0x11D6,0x1174,0x1132,0x1931,0x2151,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x212F,0x292F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x2130,0x2110,0x2130,0x2110, + 0x19D6,0x19D6,0x19B5,0x1154,0x1133,0x1113,0x1112,0x1133,0x1133,0x1933,0x1933,0x1132,0x1132,0x1132,0x1112,0x1112,0x1932,0x1112,0x1932,0x1932,0x1112,0x1132,0x1932,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1932,0x1932,0x1932,0x1932,0x1112,0x1112,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1112,0x1932,0x1932,0x1912,0x1912,0x1932,0x1932,0x1132,0x1132,0x1112,0x1932,0x1912,0x1932,0x1932,0x1932,0x1912,0x1932,0x1112,0x1112,0x1132,0x1932,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1132,0x1132,0x1112,0x1132,0x1132,0x1132,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1131,0x1132,0x1132,0x1132,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1912,0x1912,0x1111,0x1932,0x1932,0x1932,0x1112,0x1932,0x1112,0x1932,0x1932,0x1932,0x1132,0x1132,0x1932,0x1932,0x1932,0x1112,0x1932,0x1932,0x1112,0x1112,0x1112,0x1112,0x1112,0x1932,0x1112,0x1112,0x1112,0x1932,0x1112,0x1932,0x1932,0x1932,0x1912,0x1912,0x1112,0x1112,0x1112,0x1912,0x1912,0x1912,0x1932,0x1932,0x1932,0x1932,0x1112,0x1912,0x1912,0x1912,0x1932,0x1932,0x1932,0x1912,0x2111,0x2111,0x2111,0x2111,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x210F,0x212F,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x2910,0x210F,0x2930,0x2930,0x210F,0x290F,0x210F,0x290F,0x2930,0x210F,0x290F,0x2930,0x2910,0x210F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x210F,0x2910,0x2930,0x2930,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x2910,0x2110,0x210F,0x2910,0x290F,0x210F,0x210F,0x290F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2110,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x292F,0x292F,0x210F,0x292F,0x2930,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2930,0x2930,0x212F,0x212F,0x210F,0x292F,0x212F,0x210F,0x210F,0x2910,0x2110,0x2930,0x2910,0x2930,0x210F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x2930,0x212F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x210F,0x290F,0x2930,0x290F,0x290F,0x2910,0x210F,0x2910,0x2930,0x210F,0x2930,0x2930,0x2930,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2110,0x2110,0x210F,0x2110,0x2930,0x212F,0x210F,0x292F,0x290F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x210F,0x290F,0x210F,0x212F,0x2930,0x212F,0x210F,0x2130,0x2130,0x210F,0x2130,0x212F,0x210F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2910,0x2930,0x2930,0x210F,0x210F,0x2930,0x212F,0x2130,0x2130,0x210F,0x2110,0x2130,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3151,0x3131,0x3131,0x3131,0x2931,0x3151,0x3151,0x3151,0x3172,0x3172,0x3172,0x3172,0x3172,0x3152,0x3152,0x3972,0x3972,0x3992,0x3992,0x3992,0x3992,0x3972,0x3972,0x4172,0x4172,0x4192,0x4192,0x4192,0x4192,0x4193,0x4193,0x4193,0x4193,0x4192,0x4992,0x4992,0x49B3,0x49B3,0x51B3,0x51D3,0x51B3,0x51B2,0x51B2,0x51D3,0x51D3,0x51F3,0x51F3,0x51F3,0x51D3,0x51D3,0x5213,0x5233,0x4A34,0x4213,0x3A33,0x3A73,0x3A94,0x4B56,0x6C39,0x84BB,0xA51C,0xAD1C,0xBD5C,0xBD5B,0xB4FA,0x9C78,0x7BF5,0x7C76,0x8D9A,0x861B,0x6E1B,0x667C,0x5EDD,0x4EDD,0x46FD,0x371E,0x375E,0x2F7F,0x1F5E,0x177F,0x177F,0x0F9F,0x0F9F,0x0FBF,0x0FBF,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x075E,0x073E,0x06FD,0x06DD,0x06DD,0x06BD,0x06BD,0x06BD,0x06BE,0x069E,0x067D,0x067E,0x065E,0x065D,0x067D,0x065D,0x065D,0x065D,0x063D,0x063D,0x061D,0x061D,0x061E,0x05FE,0x05FE,0x05FE,0x05DE,0x05DE,0x05BE,0x05DE,0x05BE,0x05BE,0x05BE,0x05BE,0x059E,0x059E,0x059F,0x057E,0x057E,0x057E,0x055F,0x057F,0x055F,0x055F,0x055F,0x055F,0x055F,0x055F,0x053F,0x053F,0x055F,0x055F,0x053F,0x053F,0x055F,0x055F,0x055F,0x055F,0x055F,0x055F,0x055F,0x055F,0x055F,0x055F,0x055F,0x055F,0x057F,0x057F,0x055F,0x055F,0x055F,0x055F,0x057F,0x057F,0x055F,0x055F,0x055F,0x053F,0x053F,0x053F,0x053F,0x04FF,0x04BF,0x04BF,0x049F,0x045F,0x043F,0x03FF,0x039F,0x037F,0x033F,0x02DE,0x027D,0x025E,0x0A3D,0x09FD,0x09DC,0x11BC,0x19BC,0x29BC,0x319B,0x28F8,0x2075,0x59DA,0x933E,0x9B3E,0x92DB,0x8ADA,0x7AB8,0x62F8,0x5BB9,0x54BB,0x5E1F,0x469F,0x2E9E,0x16BE,0x16DF,0x0EDE,0x0EDE,0x16FE,0x271F,0x2EFF,0x3EDF,0x567E,0x763E,0x6C79,0x7B55,0x92D4,0xAA94,0xC2B4,0xCAB5,0xD274,0xCA34,0xD254,0xD254,0xD254,0xD254,0xCA54,0xCA75,0xC2B6,0xBAF7,0x7972,0x5931,0x5131,0x4952,0x4972,0x4972,0x4172,0x4172,0x4172,0x3972,0x3971,0x3972,0x3971,0x3151,0x3151,0x3171,0x3151,0x3150,0x3150,0x3150,0x3150,0x2930,0x2950,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x292F,0x2930,0x2130,0x2131,0x2131,0x1911,0x1112,0x1154,0x1196,0x11D7,0x1219,0x09F9,0x01D9,0x01FA,0x01F9,0x01FA,0x01D9,0x01D9,0x01DA,0x01DA,0x01B9,0x01D9,0x09B9,0x11F9,0x19D8,0x1996,0x1154,0x1113,0x1133,0x1112,0x1932,0x1932,0x1932,0x1911,0x1911,0x2132,0x2132,0x2132,0x2131,0x1911,0x1931,0x1911,0x1932,0x1932,0x2132,0x1931,0x2131,0x2131,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x2131,0x1911,0x1931,0x1931,0x2131,0x1931,0x1932,0x1932,0x2132,0x2132,0x2132,0x1931,0x2132,0x1911,0x2132,0x2132,0x2132,0x2132,0x2152,0x2132,0x2132,0x2132,0x1932,0x2132,0x2132,0x2111,0x2132,0x2132,0x2132,0x2132,0x2132,0x2132,0x2132,0x2132,0x2132,0x1911,0x2132,0x1931,0x2131,0x2131,0x1911,0x1911,0x2131,0x1911,0x2132,0x1911,0x2131,0x2131,0x2132,0x1911,0x1931,0x1931,0x1911,0x1911,0x2132,0x2132,0x2132,0x2132,0x1931,0x2132,0x2132,0x1911,0x2132,0x2132,0x2132,0x1932,0x2152,0x2132,0x2132,0x1911,0x1911,0x1911,0x2132,0x2132,0x1931,0x1931,0x1932,0x1911,0x2132,0x1911,0x2132,0x2132,0x1911,0x1911,0x1931,0x1911,0x1931,0x1911,0x1911,0x2132,0x2132,0x1911,0x2132,0x1911,0x1931,0x2132,0x1911,0x2131,0x1931,0x1911,0x1911,0x1911,0x1931,0x2132,0x1911,0x1911,0x1911,0x2132,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1931,0x1911,0x2132,0x2132,0x1931,0x1931,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x2132,0x1931,0x1911,0x1911,0x1911,0x2132,0x1911,0x1911,0x1931,0x1911,0x2132,0x2132,0x2132,0x1911,0x2132,0x2111,0x2131,0x2131,0x2132,0x1911,0x2132,0x2132,0x2132,0x1911,0x2132,0x1931,0x2132,0x2132,0x2132,0x2132,0x2132,0x2131,0x1931,0x2131,0x2132,0x1911,0x2131,0x1911,0x2131,0x2111,0x2132,0x2132,0x2132,0x2132,0x2152,0x1932,0x1932,0x1932,0x1932,0x1932,0x1953,0x1153,0x1174,0x1175,0x0976,0x11B8,0x11F9,0x0A1A,0x09DA,0x01BA,0x01BA,0x01BA,0x01DA,0x01DA,0x01D9,0x01D9,0x0A1A,0x01D9,0x09D8,0x09D7,0x11B6,0x1174,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x2950,0x2930,0x2150,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x210F,0x210F,0x212F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x212F,0x210F,0x212F, + 0x1196,0x19B6,0x1195,0x0954,0x0954,0x1134,0x0933,0x1133,0x1113,0x1133,0x1133,0x1134,0x1133,0x1133,0x1113,0x1113,0x1113,0x1133,0x1112,0x1133,0x1133,0x1112,0x1133,0x1133,0x1133,0x0932,0x1133,0x1133,0x0932,0x1132,0x1133,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1132,0x1133,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1132,0x1132,0x1133,0x1113,0x1133,0x1132,0x1132,0x1133,0x1132,0x1132,0x1133,0x1133,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1112,0x1133,0x1133,0x1133,0x1132,0x1132,0x1113,0x1133,0x1132,0x1132,0x1133,0x1133,0x1132,0x0932,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1132,0x1132,0x1112,0x1133,0x1112,0x1133,0x1133,0x1133,0x1133,0x1133,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1113,0x1133,0x1133,0x1133,0x1133,0x1953,0x1953,0x1953,0x1953,0x1153,0x1153,0x1133,0x1133,0x1132,0x1133,0x1132,0x1112,0x1932,0x1912,0x1912,0x2111,0x2131,0x2110,0x2110,0x2931,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x212F,0x292F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x210F,0x2110,0x2930,0x2930,0x210F,0x290F,0x210F,0x210F,0x2910,0x210F,0x210F,0x2910,0x210F,0x290F,0x2910,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x210F,0x210F,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x2910,0x2910,0x2930,0x2110,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x2910,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2910,0x2910,0x2930,0x210F,0x290F,0x210F,0x212F,0x210F,0x212F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x212F,0x212F,0x290F,0x292F,0x210F,0x212F,0x290F,0x2910,0x210F,0x2110,0x2910,0x2910,0x210F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2910,0x210F,0x2110,0x210F,0x2930,0x210F,0x2110,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2130,0x210F,0x210F,0x290F,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2930,0x2130,0x2130,0x2930,0x2130,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2950,0x2930,0x3131,0x3131,0x3131,0x3151,0x3131,0x3151,0x3151,0x3151,0x3171,0x3151,0x3172,0x3172,0x3172,0x3151,0x3172,0x3972,0x3972,0x3972,0x3972,0x3972,0x3992,0x3972,0x3972,0x4172,0x4172,0x4192,0x4193,0x4172,0x4192,0x4993,0x4993,0x4192,0x49B3,0x49B3,0x49B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51D3,0x51B2,0x51D3,0x51D3,0x51D2,0x51F3,0x51D3,0x51D3,0x51D3,0x5213,0x5253,0x4253,0x3212,0x3A93,0x5BD8,0x74FC,0x857D,0x95BE,0x959D,0xADBD,0xB5DD,0xB59C,0xA519,0x7C15,0x6BF5,0x8539,0x85FC,0x765C,0x665C,0x5EDD,0x4EFD,0x3F1E,0x2EFD,0x2F5F,0x277F,0x277F,0x1F7E,0x177F,0x0F9F,0x0FBF,0x0FBF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079E,0x075E,0x073E,0x071D,0x06DD,0x06BD,0x06BD,0x06BD,0x06BD,0x069D,0x069D,0x067D,0x067D,0x065D,0x065D,0x065D,0x065D,0x065D,0x063D,0x063D,0x063D,0x061D,0x061D,0x061D,0x05FD,0x05FE,0x05DE,0x05DE,0x05DE,0x05BE,0x05BE,0x05BE,0x05BE,0x05BE,0x059E,0x059E,0x059E,0x057E,0x057E,0x057E,0x055E,0x055E,0x055F,0x053E,0x053E,0x053F,0x053F,0x053F,0x053F,0x053F,0x051F,0x051F,0x053F,0x053F,0x051F,0x053F,0x053F,0x053F,0x053F,0x051F,0x051F,0x053F,0x053F,0x053F,0x053F,0x053F,0x055F,0x055F,0x053F,0x053F,0x053F,0x053F,0x055F,0x055F,0x055F,0x053F,0x051F,0x053F,0x051F,0x051F,0x051F,0x051F,0x04FF,0x04BF,0x04BF,0x049F,0x047F,0x045F,0x03FF,0x03BF,0x037F,0x037F,0x02FE,0x02BE,0x027E,0x023D,0x021D,0x01FD,0x01BC,0x099C,0x119C,0x21BC,0x29BC,0x317A,0x1896,0x30B6,0x7ABD,0x8B1D,0x7A9A,0x7ADA,0x72F9,0x6379,0x5C3A,0x4D1B,0x5E7F,0x3EBF,0x26DE,0x0EBE,0x0EFF,0x0EFF,0x171F,0x16FE,0x271F,0x2F1F,0x46FF,0x563E,0x865F,0x7478,0x7314,0x9AF5,0xB2D5,0xC2B4,0xCA74,0xCA54,0xD254,0xD254,0xD254,0xD234,0xCA34,0xD275,0xCA95,0xC2B6,0xBAF7,0x7131,0x6131,0x5152,0x4952,0x4972,0x4172,0x4172,0x4172,0x3972,0x3971,0x3971,0x3971,0x3951,0x3151,0x3171,0x3171,0x3150,0x3130,0x3150,0x3150,0x3150,0x2950,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2110,0x2930,0x2130,0x2131,0x1911,0x1112,0x1154,0x1196,0x11D8,0x09F9,0x09F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x09D9,0x09D9,0x11F9,0x19D8,0x1175,0x1113,0x1112,0x10F2,0x1912,0x1911,0x1911,0x1911,0x2131,0x1911,0x2131,0x2111,0x2111,0x1910,0x2131,0x2131,0x2131,0x1910,0x2131,0x1911,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2111,0x2131,0x1911,0x1910,0x2131,0x2111,0x2131,0x2131,0x2131,0x1910,0x1910,0x2131,0x2110,0x2110,0x2131,0x1910,0x2131,0x2111,0x2131,0x2111,0x2111,0x2111,0x2131,0x2130,0x2131,0x2111,0x2131,0x2111,0x2131,0x2111,0x1931,0x1910,0x2111,0x2111,0x2110,0x2111,0x2111,0x2111,0x2131,0x2131,0x2131,0x2111,0x2131,0x2111,0x2111,0x2110,0x2110,0x2110,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x1910,0x1911,0x1910,0x2111,0x2110,0x2131,0x2111,0x2131,0x1910,0x2131,0x1910,0x2111,0x2131,0x2111,0x2131,0x2131,0x2111,0x2131,0x2111,0x2131,0x2111,0x2111,0x2111,0x2131,0x2111,0x2131,0x1911,0x2131,0x2131,0x1931,0x1931,0x2111,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2131,0x1911,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1911,0x2131,0x2131,0x2111,0x2131,0x2111,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2111,0x1931,0x1911,0x2131,0x2131,0x1911,0x1910,0x2131,0x2111,0x1911,0x1910,0x2111,0x2111,0x1910,0x1911,0x2131,0x2111,0x2131,0x2111,0x2131,0x1910,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2131,0x2131,0x2131,0x2111,0x2111,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2111,0x2111,0x2131,0x2110,0x2111,0x2111,0x2131,0x2131,0x2131,0x2111,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1952,0x1132,0x1133,0x1134,0x1176,0x09B7,0x1219,0x09D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01FA,0x01D9,0x09F9,0x09F8,0x09D7,0x11D7,0x1195,0x1132,0x1911,0x1931,0x2131,0x2130,0x2951,0x2130,0x2150,0x2130,0x2110,0x2110,0x210F,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x292F,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F, + 0x1176,0x1196,0x1195,0x1195,0x1175,0x1175,0x1175,0x1175,0x1175,0x1174,0x1975,0x1975,0x1975,0x1154,0x1154,0x1154,0x1154,0x1154,0x1154,0x1154,0x1974,0x1154,0x1154,0x1174,0x1174,0x1154,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1174,0x1974,0x1974,0x1974,0x1174,0x1974,0x1174,0x1174,0x1174,0x1974,0x1154,0x1974,0x1154,0x1974,0x1174,0x1174,0x1154,0x1174,0x1154,0x1174,0x1154,0x1174,0x1154,0x1154,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1154,0x1154,0x1154,0x1174,0x1174,0x1174,0x1154,0x1154,0x1154,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1974,0x1174,0x1974,0x1974,0x1174,0x1974,0x1974,0x1154,0x1974,0x1974,0x1174,0x1174,0x1974,0x1974,0x1974,0x1154,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1954,0x1974,0x1974,0x1974,0x1174,0x1174,0x1974,0x1174,0x1975,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1174,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1174,0x1974,0x1994,0x1974,0x1994,0x1974,0x1994,0x1174,0x1974,0x1974,0x1154,0x1154,0x1133,0x1933,0x1932,0x1911,0x2131,0x2111,0x2131,0x2110,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x210F,0x2930,0x292F,0x212F,0x292F,0x2930,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x2910,0x2930,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x2110,0x2930,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2910,0x2910,0x2110,0x212F,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x290F,0x292F,0x290F,0x290F,0x2930,0x292F,0x292F,0x292F,0x212F,0x2930,0x290F,0x2930,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2130,0x2130,0x2110,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2110,0x2910,0x2910,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x210F,0x210F,0x210F,0x290F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x212F,0x292F,0x290F,0x2930,0x210F,0x290F,0x290F,0x2930,0x2930,0x210F,0x292F,0x2930,0x290F,0x2930,0x290F,0x290F,0x210F,0x2930,0x212F,0x2930,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2130,0x2930,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x290F,0x290F,0x292F,0x210F,0x290F,0x2930,0x290F,0x290F,0x292F,0x212F,0x212F,0x2930,0x2930,0x2130,0x212F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2950,0x2930,0x2130,0x2950,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x3150,0x3150,0x2930,0x2930,0x2930,0x2930,0x2931,0x3131,0x3151,0x3151,0x3151,0x3151,0x3151,0x3171,0x3151,0x3171,0x3171,0x3171,0x3171,0x3972,0x3151,0x3972,0x3972,0x3972,0x3972,0x3972,0x3992,0x4192,0x4193,0x4193,0x4192,0x4192,0x4193,0x49B3,0x49B3,0x4993,0x51B3,0x49B3,0x49B3,0x51B3,0x51B3,0x5192,0x51B2,0x51B2,0x5192,0x5192,0x5192,0x5192,0x59B2,0x59D2,0x59D2,0x59D2,0x51B2,0x51B2,0x51B2,0x49D2,0x41D2,0x4A53,0x6397,0x84FB,0x959E,0x8DDE,0x8DDE,0x8DFE,0x961E,0x9DFD,0xA5FD,0x9D9B,0x8497,0x7476,0x7D39,0x85FB,0x75FB,0x661B,0x5EBD,0x571E,0x471E,0x373E,0x2F5E,0x279F,0x1F9F,0x179F,0x179F,0x17BF,0x0FBF,0x0FBF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x079E,0x079E,0x075E,0x071D,0x06FD,0x06DD,0x06BC,0x069C,0x06BD,0x06BD,0x069D,0x069D,0x069D,0x067D,0x065D,0x065C,0x065D,0x065D,0x063D,0x063D,0x063D,0x061D,0x061D,0x061D,0x061D,0x05FD,0x05FD,0x05DD,0x05DD,0x05DE,0x05BE,0x05BE,0x05BE,0x05BE,0x05BE,0x059E,0x059E,0x059E,0x057E,0x057E,0x055E,0x055E,0x055E,0x055E,0x053E,0x053E,0x053E,0x053F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x051F,0x053F,0x051F,0x051F,0x051F,0x053F,0x053F,0x053F,0x051F,0x051F,0x051F,0x04FF,0x04FF,0x051F,0x04FF,0x04BF,0x049F,0x049F,0x047F,0x043F,0x03FF,0x03BF,0x039F,0x037F,0x0B5F,0x0B1F,0x029E,0x027E,0x023E,0x01FD,0x01DE,0x01BD,0x099D,0x119D,0x199C,0x219C,0x31BC,0x397A,0x2075,0x38D6,0x7ADD,0x8B5D,0x72FA,0x6319,0x63FA,0x545A,0x55BE,0x467F,0x36FF,0x1EBE,0x0EFE,0x06DE,0x06FE,0x0EFF,0x171F,0x273F,0x371F,0x4EDF,0x667E,0x7DFD,0x6BF6,0x8335,0x9AB4,0xBAD5,0xC294,0xCA74,0xD254,0xD234,0xD234,0xD254,0xD254,0xD254,0xCA55,0xCA96,0xC2D7,0xB2D7,0x6911,0x5951,0x5152,0x4972,0x4972,0x4152,0x4152,0x3972,0x3972,0x3972,0x3951,0x3971,0x3971,0x3171,0x3151,0x3151,0x3150,0x3150,0x3150,0x2930,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2130,0x2130,0x2131,0x1931,0x1132,0x1154,0x1175,0x11B8,0x11F9,0x01D9,0x09FA,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09F9,0x09F9,0x11F9,0x19B7,0x1155,0x1113,0x1112,0x1911,0x18F1,0x18F0,0x2111,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2111,0x2111,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x20F0,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x1930,0x1930,0x1930,0x1911,0x1911,0x1932,0x1112,0x1113,0x1134,0x1196,0x11D8,0x09B8,0x09D9,0x09DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01F9,0x01F9,0x0A19,0x11F8,0x11B6,0x1195,0x1132,0x1111,0x1931,0x2131,0x2131,0x2130,0x2150,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x290F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x290F,0x290F,0x212F,0x210F,0x210F,0x210F, + 0x1196,0x19B6,0x19D6,0x2217,0x2237,0x2217,0x21F7,0x2217,0x2217,0x2A17,0x2A38,0x2A17,0x2A38,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x29F7,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A37,0x2A17,0x2A17,0x2216,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x29F7,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A37,0x2A17,0x2A37,0x2A17,0x2A37,0x2A37,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A16,0x2A16,0x29F6,0x21F6,0x2A16,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x2217,0x21F7,0x21D6,0x1995,0x1133,0x1933,0x1932,0x2132,0x2131,0x2111,0x2131,0x2131,0x2110,0x2130,0x2930,0x2930,0x2930,0x2110,0x2130,0x2130,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x212F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x2930,0x2910,0x2910,0x2930,0x290F,0x2910,0x2910,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2910,0x2910,0x290F,0x210F,0x2910,0x210F,0x2930,0x2110,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2910,0x210F,0x2910,0x210F,0x2930,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x292F,0x290F,0x292F,0x212F,0x212F,0x2930,0x2110,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x2930,0x2930,0x2930,0x2130,0x2130,0x212F,0x2930,0x2930,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x210F,0x2930,0x2910,0x2910,0x290F,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2930,0x290F,0x290F,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2930,0x210F,0x290F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x290F,0x210F,0x292F,0x290F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2930,0x212F,0x210F,0x2110,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x292F,0x212F,0x2930,0x2930,0x210F,0x212F,0x290F,0x290F,0x290F,0x2930,0x212F,0x292F,0x212F,0x2130,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x292F,0x212F,0x2930,0x2930,0x2930,0x2950,0x2930,0x2910,0x2930,0x2930,0x2910,0x2110,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x2930,0x2950,0x2951,0x2951,0x2951,0x2930,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3171,0x3171,0x3171,0x3971,0x3971,0x3971,0x3972,0x3972,0x3972,0x3972,0x4172,0x4193,0x4192,0x4193,0x4193,0x4193,0x4192,0x49B3,0x4993,0x49B3,0x49B3,0x49B3,0x51B3,0x51B3,0x49B2,0x51B2,0x51B2,0x51B2,0x5192,0x5191,0x5191,0x5171,0x59B1,0x5991,0x59B1,0x5190,0x5170,0x4970,0x59D1,0x6253,0x7B37,0x943A,0x9CDC,0x9D3D,0x957D,0x95BD,0x8DBD,0x85DD,0x8E1D,0x963E,0x961D,0x8DDC,0x7D19,0x6C97,0x6CB7,0x7DBA,0x7E3C,0x663B,0x5E7C,0x56DE,0x471E,0x373E,0x2F5E,0x277F,0x1F9F,0x17BF,0x0F9F,0x0F9F,0x0FBF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x077E,0x073D,0x071D,0x06FC,0x06DC,0x06BC,0x06BC,0x06BC,0x069C,0x06BD,0x069C,0x069D,0x067C,0x067C,0x067C,0x065C,0x063C,0x063C,0x063C,0x063C,0x063D,0x061D,0x061D,0x061D,0x05FD,0x05FD,0x05FD,0x05DD,0x05DD,0x05BD,0x05BD,0x05BD,0x05BE,0x05BE,0x059E,0x059E,0x057E,0x057E,0x057E,0x055E,0x055E,0x053E,0x053E,0x053E,0x053E,0x051E,0x051F,0x051F,0x051F,0x04FF,0x04FF,0x04FE,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x051F,0x051F,0x051F,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04DF,0x04DF,0x04DF,0x04FF,0x049F,0x049F,0x049F,0x047F,0x043F,0x041F,0x03DF,0x039F,0x035F,0x035F,0x031F,0x02DF,0x029F,0x025E,0x021E,0x021F,0x01DE,0x019E,0x09BE,0x097C,0x095B,0x197C,0x299C,0x39DC,0x3139,0x28B6,0x6A9C,0x837D,0x6AF9,0x6359,0x643B,0x4CDB,0x567F,0x3EDF,0x26DE,0x16DE,0x0EFE,0x06FE,0x0F1F,0x173F,0x173F,0x273F,0x3F3F,0x4EFF,0x6EBF,0x7DDD,0x6BB6,0x7AD4,0xA2F5,0xBAB5,0xC274,0xCA54,0xD254,0xD234,0xD254,0xD234,0xD234,0xD255,0xCA55,0xC276,0xC2D7,0xAAB7,0x60D0,0x5952,0x5152,0x4972,0x4972,0x4152,0x4192,0x4172,0x3972,0x3971,0x3972,0x3971,0x3151,0x3151,0x3151,0x3150,0x3151,0x3150,0x3130,0x3150,0x2930,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2131,0x2131,0x1931,0x1132,0x1154,0x1175,0x11D8,0x09D9,0x09FA,0x01D9,0x01D9,0x01D9,0x01DA,0x01FA,0x01D9,0x01FA,0x01D9,0x01D9,0x09F9,0x121A,0x11F8,0x19F8,0x1155,0x1113,0x1912,0x1911,0x18F1,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2130,0x2130,0x210F,0x2110,0x2130,0x2110,0x2110,0x2130,0x210F,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x20EF,0x2110,0x2110,0x2110,0x2110,0x2110,0x20EF,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2131,0x1911,0x1912,0x1133,0x1134,0x1176,0x11B8,0x11D9,0x09D9,0x09FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01D9,0x01F9,0x01F9,0x09F8,0x11F8,0x11D7,0x19B5,0x1133,0x1111,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x290F,0x292F, + 0x0935,0x1175,0x1996,0x2217,0x2A37,0x2217,0x2217,0x2217,0x2217,0x2217,0x2A17,0x2A37,0x2A37,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A37,0x2A17,0x2A17,0x2A38,0x2A38,0x2A37,0x2A37,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2217,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2217,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A18,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A18,0x2A17,0x2A18,0x2A18,0x2A17,0x2A17,0x2A17,0x2A18,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A17,0x2A37,0x2A37,0x2A37,0x2A17,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A17,0x2A17,0x2A37,0x2A17,0x2A37,0x2A37,0x2A37,0x2A37,0x2A38,0x2A37,0x2A37,0x2217,0x2A37,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A37,0x2A16,0x2A17,0x2A37,0x2A37,0x2A37,0x2A17,0x2A17,0x2A37,0x2A37,0x2A37,0x2217,0x19B6,0x19B5,0x21B5,0x1954,0x1953,0x1933,0x2132,0x2131,0x2111,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x210F,0x212F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x210F,0x2910,0x2910,0x210F,0x2910,0x2110,0x2910,0x2910,0x2930,0x290F,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2110,0x210F,0x2910,0x210F,0x290F,0x2930,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x290F,0x210F,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x212F,0x290F,0x290F,0x212F,0x2930,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2930,0x292F,0x292F,0x292F,0x290F,0x210F,0x210F,0x290F,0x2930,0x2110,0x2930,0x2910,0x2930,0x210F,0x210F,0x2910,0x2910,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2930,0x2910,0x2910,0x2930,0x2910,0x290F,0x2910,0x2930,0x2930,0x212F,0x210F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x290F,0x2930,0x210F,0x212F,0x210F,0x2930,0x2130,0x210F,0x212F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x210F,0x210F,0x2930,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x212F,0x212F,0x292F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x2930,0x3150,0x3151,0x3151,0x2951,0x3151,0x3151,0x3151,0x2950,0x3171,0x3171,0x3151,0x3171,0x3171,0x3171,0x3171,0x3171,0x3971,0x3971,0x3971,0x3972,0x3972,0x3972,0x3972,0x4192,0x4172,0x4172,0x4193,0x4193,0x4192,0x4993,0x49B3,0x49B3,0x49B3,0x49B3,0x4992,0x4992,0x4992,0x51B2,0x51B2,0x51B2,0x51B2,0x5192,0x5991,0x5991,0x5970,0x5970,0x5990,0x69D1,0x7252,0x8B35,0x9BD8,0xB4DC,0xBD1D,0xC59F,0xB51D,0xA51C,0x8CBA,0x7C79,0x8D5B,0x95FD,0x963E,0x963E,0x965D,0x85DC,0x7559,0x64B7,0x4C35,0x6518,0x7E1C,0x661B,0x5E7C,0x5EFE,0x4F1E,0x3F1E,0x2F5E,0x277F,0x1F9F,0x179F,0x0F9F,0x0F9F,0x0F9F,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x079F,0x07BF,0x07BF,0x07BF,0x079E,0x075D,0x073D,0x071D,0x06DC,0x06BC,0x06BC,0x06BC,0x06BC,0x06BC,0x069C,0x069C,0x069C,0x069C,0x067C,0x065C,0x065C,0x065C,0x065C,0x063C,0x063C,0x063C,0x061C,0x063C,0x061C,0x05FC,0x05FD,0x05FD,0x05DD,0x05DD,0x05BD,0x05BD,0x05BD,0x05BD,0x059D,0x059D,0x059E,0x059E,0x057E,0x055E,0x055E,0x055E,0x053E,0x053E,0x053E,0x053E,0x051E,0x051F,0x051F,0x04FE,0x04FF,0x04FF,0x04FE,0x04FF,0x04DE,0x04DE,0x04DF,0x04DE,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04FF,0x04BF,0x049F,0x047F,0x047F,0x045F,0x043F,0x041F,0x03DF,0x03BF,0x037F,0x035F,0x02FF,0x02DF,0x029F,0x029F,0x025F,0x021F,0x01FF,0x01DE,0x019E,0x019D,0x099D,0x097C,0x115B,0x197B,0x31BC,0x317A,0x28D6,0x6ABC,0x7B7C,0x6319,0x63DA,0x5C9B,0x55BD,0x4E9F,0x3F1F,0x26FE,0x173F,0x0F1E,0x0F1E,0x0F1E,0x175F,0x173F,0x273F,0x371F,0x571F,0x6EBF,0x7D9C,0x6B75,0x7A52,0xAAB4,0xC2B5,0xCA74,0xCA33,0xD234,0xCA13,0xD214,0xD234,0xD235,0xCA34,0xCA55,0xC276,0xC2F8,0xA256,0x60F0,0x5951,0x5172,0x4952,0x4172,0x4151,0x3951,0x3971,0x3972,0x3972,0x3972,0x3151,0x3151,0x3151,0x3951,0x3130,0x3150,0x3150,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2131,0x2131,0x1931,0x1132,0x1154,0x0975,0x11D8,0x121A,0x09D9,0x01B9,0x01DA,0x01B9,0x01DA,0x01DA,0x01D9,0x01FA,0x01FA,0x01D9,0x01D9,0x09D8,0x11F8,0x19D7,0x1155,0x1113,0x1112,0x18F1,0x2111,0x2111,0x2131,0x2931,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x210F,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2930,0x2130,0x210F,0x2110,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x210F,0x210F,0x2910,0x2110,0x2130,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x2930,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2930,0x2130,0x210F,0x2110,0x2130,0x2130,0x210F,0x2110,0x2930,0x210F,0x210F,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2930,0x2930,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x210F,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2910,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2131,0x1952,0x1932,0x1132,0x1133,0x1176,0x11B7,0x11D9,0x09F9,0x01DA,0x01DA,0x01D9,0x01D9,0x01DA,0x01FA,0x01FA,0x01D9,0x01D9,0x01F9,0x09F9,0x11F8,0x11D7,0x19B5,0x1132,0x1111,0x1911,0x1911,0x1910,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F, + 0x1114,0x1113,0x1134,0x1154,0x1174,0x1994,0x1994,0x1974,0x1974,0x1995,0x1995,0x1974,0x1994,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x19B5,0x1995,0x1995,0x1995,0x19B5,0x1995,0x1995,0x1995,0x1995,0x2195,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1994,0x19B5,0x1995,0x1994,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x19B5,0x19B5,0x1994,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1975,0x1995,0x1995,0x1975,0x1975,0x2195,0x2195,0x1975,0x1995,0x1995,0x1975,0x1975,0x1975,0x1975,0x1995,0x1975,0x1975,0x1995,0x1995,0x1975,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x19B5,0x1995,0x19B5,0x1995,0x1995,0x1995,0x19B5,0x1995,0x1995,0x21B5,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x19B5,0x1995,0x1995,0x1995,0x19B5,0x19B5,0x19B5,0x19B5,0x1995,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1994,0x1994,0x1994,0x1995,0x1995,0x1994,0x19B5,0x19B5,0x19B5,0x21D5,0x21D6,0x21F6,0x21F6,0x21F6,0x2217,0x21D6,0x21B5,0x1154,0x1933,0x1932,0x2132,0x2111,0x2111,0x2131,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x292F,0x290F,0x290F,0x290F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x210F,0x2930,0x290F,0x290F,0x2910,0x2910,0x2110,0x2110,0x2910,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x2930,0x290F,0x2910,0x2910,0x2110,0x210F,0x2930,0x2930,0x210F,0x210F,0x290F,0x2910,0x2930,0x2930,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x290F,0x292F,0x290F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x2130,0x2130,0x2130,0x2930,0x2110,0x2130,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2930,0x2110,0x210F,0x2910,0x2930,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x290F,0x2930,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x2910,0x210F,0x2930,0x2910,0x2910,0x2910,0x2930,0x210F,0x2910,0x2110,0x2130,0x212F,0x210F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x292F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x2110,0x2930,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x2910,0x2110,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x292F,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3150,0x3151,0x2951,0x2951,0x2951,0x3151,0x3171,0x3171,0x3151,0x3171,0x3171,0x3151,0x3171,0x3171,0x3971,0x3991,0x3971,0x3971,0x3992,0x3971,0x3972,0x4192,0x4192,0x4192,0x4192,0x4193,0x4193,0x4192,0x4172,0x4992,0x49B3,0x49B2,0x49B2,0x49B2,0x4992,0x51B2,0x5192,0x51B2,0x51B2,0x5191,0x5991,0x5991,0x5150,0x5970,0x61D1,0x8B16,0xB45A,0xC4FC,0xD59E,0xD59E,0xC57D,0xBD5D,0xAD1B,0x9CBA,0x8458,0x84B9,0x8D5B,0x9DFE,0x963E,0x965E,0x861C,0x861C,0x75BA,0x6517,0x5CD7,0x6538,0x761B,0x6E3B,0x667C,0x5EBD,0x4EFE,0x3F3E,0x375F,0x275E,0x1F5E,0x177E,0x179F,0x0F7E,0x0FBF,0x07BF,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BE,0x079E,0x077E,0x075D,0x071C,0x06FC,0x06DC,0x06BC,0x06BC,0x06BC,0x06BC,0x069B,0x069B,0x069B,0x069B,0x067B,0x067B,0x067B,0x065B,0x067B,0x065B,0x063B,0x063C,0x063C,0x063C,0x061C,0x061C,0x05FC,0x05FC,0x05FC,0x05DC,0x05BC,0x05DD,0x05BD,0x05BD,0x05BD,0x059D,0x059D,0x059D,0x057D,0x057E,0x055E,0x055E,0x055E,0x053E,0x053E,0x051E,0x051E,0x051E,0x04FE,0x04FE,0x04FE,0x04FF,0x04DE,0x04DE,0x04DE,0x04FF,0x04DF,0x04DE,0x04BE,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x049F,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x049F,0x049F,0x047F,0x045F,0x045F,0x043F,0x043F,0x03FF,0x03BF,0x037F,0x035F,0x031F,0x02DF,0x02BF,0x02BF,0x027F,0x023F,0x021F,0x01FF,0x01DE,0x01BE,0x019D,0x019D,0x099C,0x095B,0x113A,0x29BC,0x319A,0x3137,0x733D,0x737C,0x6359,0x641A,0x54FB,0x5E5F,0x46DF,0x2F1F,0x1F3F,0x0F1E,0x0F3F,0x0F3F,0x0F3F,0x173F,0x1F5F,0x2F5F,0x371F,0x56FF,0x767F,0x74DA,0x7314,0x8A73,0xB2B4,0xC2B4,0xCA74,0xCA34,0xD234,0xD214,0xDA35,0xD235,0xD235,0xCA35,0xCA55,0xC276,0xBAB7,0x91F4,0x58D0,0x5952,0x4951,0x4972,0x4151,0x3951,0x3972,0x3972,0x3971,0x3971,0x3971,0x3971,0x3951,0x3951,0x3151,0x3130,0x3150,0x3130,0x3130,0x3150,0x2930,0x2950,0x2930,0x2930,0x2950,0x2930,0x2131,0x2131,0x1931,0x1932,0x1153,0x1195,0x11D7,0x11F9,0x09D9,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01D9,0x01D9,0x09F9,0x11F8,0x11B7,0x1154,0x1133,0x1112,0x1911,0x1911,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x212F,0x210F,0x2930,0x2110,0x210F,0x210F,0x2110,0x2110,0x2130,0x210F,0x2110,0x2110,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2930,0x2930,0x2130,0x2930,0x2110,0x2930,0x2930,0x210F,0x2930,0x212F,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2110,0x210F,0x2930,0x2930,0x2910,0x210F,0x2930,0x2910,0x2930,0x2930,0x290F,0x2930,0x2930,0x212F,0x2930,0x2930,0x210F,0x290F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x2130,0x212F,0x2930,0x2930,0x2930,0x212F,0x2930,0x2130,0x2130,0x212F,0x2110,0x2110,0x2130,0x2130,0x2930,0x210F,0x2130,0x210F,0x2910,0x2910,0x210F,0x210F,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x2930,0x210F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2930,0x2930,0x2110,0x210F,0x2130,0x2130,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x2930,0x2910,0x210F,0x210F,0x2110,0x2110,0x2930,0x210F,0x290F,0x210F,0x290F,0x2930,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x212F,0x292F,0x290F,0x210F,0x290F,0x210F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1132,0x1134,0x1196,0x11B7,0x11D9,0x09D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01FA,0x01FA,0x01D9,0x01FA,0x01D9,0x01D9,0x0A19,0x11F8,0x11D7,0x19B5,0x1132,0x1132,0x1931,0x2131,0x2110,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F, + 0x1133,0x1112,0x1112,0x1132,0x1132,0x1132,0x1112,0x1112,0x1132,0x1132,0x1133,0x1132,0x1132,0x1133,0x1112,0x1113,0x1133,0x1132,0x1112,0x1133,0x1133,0x1132,0x1113,0x1933,0x1133,0x1133,0x1933,0x1113,0x1113,0x1933,0x1113,0x1113,0x1933,0x1133,0x1133,0x1133,0x1132,0x1132,0x1133,0x1933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x1133,0x1133,0x1132,0x1153,0x1133,0x1132,0x1132,0x1133,0x1133,0x1133,0x1953,0x1133,0x1133,0x1953,0x1133,0x1133,0x1133,0x1133,0x1133,0x1933,0x1933,0x1933,0x1113,0x1113,0x1933,0x1933,0x1933,0x1133,0x1113,0x1933,0x1133,0x1933,0x1933,0x1933,0x1933,0x1933,0x1933,0x1933,0x1113,0x1933,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1112,0x1132,0x1133,0x1133,0x1133,0x1933,0x1133,0x1133,0x1133,0x1132,0x1133,0x1133,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1133,0x1133,0x1133,0x1933,0x1133,0x1132,0x1133,0x1112,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1933,0x1113,0x1112,0x1112,0x1112,0x1132,0x1132,0x1133,0x1133,0x1132,0x1132,0x1132,0x1132,0x08F2,0x0912,0x0912,0x1133,0x1995,0x2217,0x2A37,0x21F6,0x1995,0x1954,0x1953,0x1932,0x2132,0x2111,0x2111,0x2110,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2130,0x2930,0x2930,0x2930,0x2130,0x212F,0x2130,0x2130,0x210F,0x2110,0x2910,0x2910,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x2930,0x2110,0x2130,0x2130,0x2131,0x2131,0x2110,0x2131,0x2131,0x2131,0x2131,0x1931,0x1951,0x1931,0x1952,0x1951,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2930,0x292F,0x292F,0x292F,0x290F,0x2930,0x2910,0x2910,0x2110,0x2930,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2910,0x2930,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x290F,0x210F,0x2130,0x212F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x2110,0x2110,0x2930,0x290F,0x2930,0x2930,0x2930,0x292F,0x210F,0x210F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x3151,0x3151,0x3151,0x2951,0x3171,0x2951,0x3171,0x3151,0x3171,0x3171,0x3171,0x3151,0x3971,0x3171,0x3971,0x3971,0x3971,0x3971,0x3971,0x4172,0x4192,0x4172,0x4192,0x4192,0x4192,0x4172,0x4993,0x4993,0x49B3,0x4992,0x4992,0x4992,0x4992,0x5192,0x5192,0x5191,0x51B2,0x5191,0x5991,0x5990,0x5990,0x69F2,0x8AF5,0xB43A,0xCD1D,0xD57E,0xCD5D,0xC57D,0xACFB,0x9CB9,0x8C78,0x8437,0x951A,0x9D9C,0x95DC,0x961D,0x8E3D,0x8E5E,0x7E1C,0x6DDB,0x7E5C,0x7E5C,0x6578,0x5D99,0x765C,0x6E9C,0x667C,0x569D,0x56FE,0x473E,0x373E,0x275E,0x1F7E,0x177E,0x0F7E,0x0F9E,0x0FBF,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x075D,0x073D,0x071C,0x06FC,0x06DC,0x06BB,0x06BC,0x06BC,0x06BB,0x06BB,0x069B,0x069B,0x069B,0x069B,0x067B,0x067B,0x065B,0x065B,0x065B,0x065B,0x065B,0x063B,0x063B,0x061B,0x063C,0x061C,0x05FC,0x05FC,0x05DC,0x05DC,0x05DD,0x05BC,0x059C,0x059D,0x059D,0x059D,0x059D,0x057D,0x055D,0x055D,0x055E,0x053E,0x053E,0x053E,0x053E,0x053E,0x04FE,0x04FE,0x04FE,0x04DE,0x04DE,0x04DE,0x04DE,0x04DE,0x04DE,0x04BE,0x04BF,0x04BF,0x04BF,0x04BF,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x04BF,0x049F,0x049F,0x049F,0x047F,0x047F,0x049F,0x047F,0x049F,0x049F,0x049F,0x047F,0x047F,0x047F,0x047F,0x047F,0x045F,0x043F,0x043F,0x041F,0x03FF,0x03DF,0x039F,0x035F,0x033F,0x031F,0x02DF,0x02BF,0x029F,0x025F,0x021F,0x01FF,0x01FF,0x01DE,0x01BE,0x01BE,0x09BD,0x099D,0x117C,0x113B,0x29BC,0x319A,0x4A19,0x7B7D,0x6319,0x5B99,0x4C19,0x557D,0x567F,0x3EDF,0x271F,0x173E,0x177F,0x0F3E,0x0F5F,0x0F5F,0x175F,0x1F3F,0x2F3F,0x3EFE,0x5EFF,0x7E5E,0x7C99,0x6A92,0x9293,0xB294,0xC274,0xCA54,0xD254,0xD234,0xD214,0xD214,0xD1F4,0xD235,0xCA34,0xCA55,0xC276,0xC2F8,0x8192,0x58F0,0x5952,0x4972,0x4972,0x4172,0x3972,0x3972,0x3972,0x3972,0x3972,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x3130,0x3130,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2951,0x2152,0x1932,0x1153,0x1175,0x19F8,0x11F8,0x09D9,0x09D9,0x01BA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01D9,0x01D9,0x01D9,0x09F9,0x11F9,0x1196,0x1134,0x1112,0x1112,0x1932,0x1931,0x2131,0x2130,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x210F,0x2110,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x212F,0x2930,0x210F,0x212F,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x212F,0x210F,0x2130,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2110,0x2110,0x2930,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2110,0x2110,0x2110,0x2910,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x2130,0x212F,0x2130,0x2150,0x1930,0x1951,0x1952,0x1953,0x1134,0x1155,0x11B7,0x11F9,0x09D9,0x09FA,0x01D9,0x01B9,0x01D9,0x01DA,0x01FA,0x01FA,0x01D9,0x01F9,0x01D8,0x09D8,0x11F8,0x11D6,0x1195,0x1133,0x1112,0x1931,0x1931,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F, + 0x1912,0x1912,0x1912,0x1912,0x1911,0x1911,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1932,0x1932,0x1912,0x1112,0x1912,0x1932,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1932,0x1932,0x1932,0x1912,0x1912,0x1932,0x1932,0x1932,0x1932,0x1112,0x1112,0x1932,0x1912,0x1932,0x1132,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1132,0x1932,0x1932,0x1932,0x1132,0x1932,0x1912,0x1912,0x1932,0x1932,0x1912,0x1932,0x1912,0x1912,0x1912,0x1912,0x1912,0x1932,0x1912,0x1912,0x1912,0x1932,0x1912,0x1932,0x1912,0x1912,0x1932,0x1912,0x1932,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1932,0x1912,0x1932,0x1112,0x1912,0x1932,0x1932,0x1932,0x1912,0x1932,0x1912,0x1912,0x1912,0x1912,0x1932,0x1932,0x1112,0x1932,0x1132,0x1932,0x1932,0x1112,0x1132,0x1932,0x1932,0x1132,0x1132,0x1912,0x1912,0x1932,0x1932,0x1912,0x1912,0x1932,0x1112,0x1112,0x1912,0x1112,0x1112,0x1112,0x1112,0x1932,0x1112,0x1912,0x1112,0x1912,0x1932,0x1112,0x1112,0x1932,0x1912,0x1912,0x1912,0x1112,0x1111,0x1912,0x1912,0x1111,0x1111,0x1932,0x1112,0x1112,0x1112,0x1112,0x1112,0x1133,0x1995,0x21F6,0x2217,0x21D6,0x1995,0x1154,0x1953,0x1932,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x2930,0x2910,0x210F,0x2930,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2910,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2130,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x210F,0x2110,0x210F,0x2910,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1952,0x1952,0x1952,0x1952,0x1931,0x2131,0x2131,0x2130,0x2110,0x210F,0x292F,0x292F,0x212F,0x292F,0x2930,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x2910,0x2910,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2110,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x210F,0x2130,0x2110,0x210F,0x2910,0x210F,0x212F,0x290F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x292F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x2110,0x2110,0x2930,0x2930,0x292F,0x212F,0x212F,0x210F,0x210F,0x292F,0x2930,0x292F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3151,0x3151,0x2930,0x3151,0x3151,0x3151,0x2951,0x2951,0x3171,0x3171,0x3151,0x3151,0x3171,0x3171,0x3971,0x3171,0x3971,0x3971,0x3971,0x3971,0x3971,0x4171,0x4192,0x4192,0x4172,0x4172,0x4192,0x4992,0x4992,0x4993,0x4993,0x4992,0x51B2,0x4992,0x5192,0x5192,0x5192,0x59B2,0x5991,0x5970,0x5150,0x5970,0x7A53,0xABD9,0xCCDC,0xD55D,0xD55D,0xCD7D,0xB4FA,0x9C98,0x8416,0x7416,0x84D8,0x8D7B,0x8DDC,0x8E1D,0x861C,0x7E3C,0x763C,0x765D,0x661C,0x661B,0x665C,0x665B,0x5E1A,0x5E1A,0x667B,0x5E9C,0x56DD,0x4EDD,0x471E,0x371E,0x2F3E,0x277E,0x1F9F,0x179F,0x0F9F,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x0FBF,0x075D,0x073C,0x06FC,0x06DC,0x06DB,0x06BB,0x06DC,0x06BB,0x069B,0x06BB,0x069B,0x069B,0x069A,0x069A,0x067A,0x067A,0x067A,0x067A,0x065B,0x065B,0x065B,0x063B,0x061B,0x061B,0x061B,0x061B,0x05FB,0x05FB,0x05DC,0x05DC,0x05DC,0x05BC,0x05BC,0x05BC,0x059C,0x059D,0x059D,0x057D,0x057D,0x055D,0x055D,0x055D,0x053E,0x051D,0x051D,0x051E,0x04FE,0x04FE,0x04FE,0x04DE,0x04DE,0x04DE,0x04DE,0x04DE,0x04BE,0x04BE,0x04BF,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x047F,0x047F,0x049F,0x047F,0x047F,0x047F,0x047F,0x047F,0x047F,0x045F,0x045F,0x047F,0x047F,0x047F,0x047F,0x045F,0x045F,0x045F,0x047F,0x045F,0x045F,0x043F,0x043F,0x041F,0x03FF,0x03FF,0x03DF,0x03BF,0x037F,0x035F,0x031F,0x02FF,0x02BF,0x02BF,0x025F,0x023F,0x021F,0x01FF,0x01DF,0x01DE,0x01BE,0x01BE,0x09BE,0x099D,0x117C,0x113A,0x29BB,0x3178,0x5A9B,0x83FE,0x5319,0x5C1B,0x4C9B,0x5E1F,0x4EDF,0x371F,0x1F3F,0x173E,0x0F5F,0x0F5F,0x0F7F,0x0F7F,0x175F,0x1F5F,0x2F1F,0x46FF,0x66DF,0x861E,0x73F6,0x7293,0x9A94,0xBA94,0xCA74,0xCA54,0xD234,0xD214,0xD1F4,0xD214,0xD214,0xD214,0xCA35,0xCA35,0xC256,0xC2F8,0x7131,0x6111,0x5152,0x4972,0x4172,0x4172,0x3972,0x3972,0x3972,0x3972,0x3971,0x3972,0x3151,0x3151,0x3151,0x3130,0x3130,0x3151,0x3130,0x3130,0x2930,0x2950,0x2950,0x2950,0x2931,0x2151,0x2152,0x1953,0x1154,0x11B6,0x1219,0x11F9,0x01B9,0x01B9,0x01BA,0x01DA,0x01DA,0x01FA,0x01FA,0x01D9,0x01D9,0x01D9,0x09F9,0x11F9,0x11B7,0x1134,0x1113,0x1932,0x1911,0x1911,0x2130,0x2130,0x2130,0x2130,0x2910,0x290F,0x2910,0x2910,0x2910,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x2110,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2930,0x2130,0x212F,0x2130,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x210F,0x2130,0x2110,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2110,0x2930,0x2130,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x2130,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x210F,0x292F,0x2930,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2151,0x2151,0x1932,0x1933,0x1154,0x1175,0x11B7,0x11F9,0x09F9,0x09D9,0x01B9,0x01B9,0x01DA,0x01FA,0x01DA,0x01FA,0x01D9,0x01D9,0x01F9,0x09D8,0x09D8,0x19F7,0x1195,0x1132,0x1112,0x1931,0x1910,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x210F,0x2930,0x212F,0x212F,0x210F,0x210F,0x2110,0x210F,0x2110,0x290F,0x210F,0x292F,0x290F,0x290F, + 0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1911,0x1931,0x1911,0x1911,0x18F1,0x1911,0x1911,0x18F1,0x18F1,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1932,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1932,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1931,0x1932,0x1932,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1911,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1931,0x1931,0x1911,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1931,0x1932,0x1932,0x1911,0x1911,0x1911,0x1932,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1932,0x1931,0x1932,0x1112,0x1952,0x1953,0x1994,0x21D6,0x2217,0x21F6,0x19B5,0x1154,0x1133,0x1912,0x1911,0x1931,0x1910,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x2910,0x2910,0x210F,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x290F,0x2910,0x210F,0x2110,0x210F,0x212F,0x212F,0x2910,0x2910,0x210F,0x2110,0x2910,0x2930,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x210F,0x2910,0x210F,0x210F,0x290F,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1132,0x1153,0x1153,0x1153,0x1133,0x1133,0x1132,0x1132,0x1132,0x1932,0x1911,0x1910,0x2130,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2910,0x2930,0x2910,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x2110,0x2930,0x2910,0x290F,0x290F,0x2930,0x2910,0x210F,0x290F,0x2930,0x2910,0x210F,0x2910,0x2910,0x2910,0x2930,0x2110,0x2910,0x2110,0x2110,0x2930,0x2930,0x2110,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x210F,0x2110,0x2110,0x2910,0x210F,0x2110,0x2110,0x210F,0x2910,0x2930,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x210F,0x2110,0x2110,0x2110,0x2930,0x290F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2110,0x210F,0x210F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x2930,0x2930,0x3150,0x2930,0x2930,0x2950,0x3151,0x3151,0x2930,0x3151,0x3151,0x2951,0x2951,0x3171,0x3151,0x3171,0x3172,0x3172,0x3151,0x3171,0x3971,0x3971,0x3971,0x3991,0x4192,0x4192,0x4171,0x4192,0x4192,0x4192,0x4192,0x49B2,0x49B2,0x49B3,0x4993,0x4993,0x4992,0x4972,0x4971,0x5192,0x5191,0x59B2,0x5991,0x5970,0x5970,0x69B1,0x8AB4,0xB3F9,0xCCDC,0xD4FD,0xCCFC,0xCD1C,0xB4DA,0xA498,0x9498,0x8CD8,0x8D7A,0x8E1C,0x865D,0x765C,0x665C,0x5E5C,0x5E7C,0x5EBD,0x56DD,0x56BD,0x569D,0x4E7C,0x463B,0x461A,0x465B,0x4E7B,0x46BC,0x46FD,0x473E,0x3F3E,0x2F3E,0x275E,0x1F9F,0x179E,0x0F9E,0x0F9F,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07BF,0x079E,0x075D,0x071C,0x06FC,0x06DB,0x06DB,0x06DB,0x06DC,0x06BB,0x06BB,0x06BA,0x069A,0x069A,0x069A,0x069A,0x069A,0x067A,0x065A,0x065A,0x065A,0x065A,0x063A,0x063B,0x063B,0x063B,0x061B,0x061B,0x05FB,0x05FB,0x05DB,0x05DB,0x05DC,0x05DC,0x05BC,0x05BC,0x05BC,0x059C,0x059D,0x059D,0x057D,0x055D,0x055D,0x055D,0x053D,0x053D,0x051D,0x051E,0x051E,0x04FE,0x04FE,0x04FE,0x04DE,0x04DE,0x04DE,0x04DE,0x049E,0x049E,0x049F,0x047E,0x047E,0x047E,0x047E,0x047F,0x049F,0x047F,0x047F,0x047F,0x045F,0x045F,0x045F,0x045F,0x045F,0x045F,0x045F,0x045F,0x045F,0x045F,0x045F,0x045F,0x045F,0x043F,0x045F,0x045F,0x045F,0x045F,0x045F,0x043F,0x043F,0x041F,0x041F,0x03FF,0x03FF,0x03BF,0x039F,0x037F,0x035F,0x031F,0x02FF,0x02DF,0x02BF,0x027F,0x025F,0x021F,0x01FF,0x01FF,0x01BE,0x01BE,0x01BE,0x01BE,0x09BE,0x099D,0x119C,0x197A,0x299A,0x2998,0x739E,0x6B9C,0x537A,0x5C5B,0x4CDB,0x5E7F,0x3EDF,0x271F,0x173F,0x0F5F,0x0F5F,0x077F,0x0F9F,0x177F,0x1F7F,0x273F,0x371F,0x4EDE,0x76BF,0x7D9C,0x7395,0x7A72,0xA294,0xBA94,0xCA54,0xCA34,0xD234,0xD214,0xD214,0xD1F4,0xD214,0xD214,0xCA14,0xC235,0xC296,0xBAD7,0x68F0,0x5931,0x5151,0x4972,0x4151,0x4172,0x3972,0x3972,0x3972,0x3972,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3130,0x3150,0x2950,0x2950,0x2930,0x2950,0x2951,0x2131,0x2152,0x1953,0x1195,0x11D7,0x11F8,0x0198,0x09B9,0x01B9,0x09FA,0x01DA,0x01DA,0x01BA,0x01B9,0x01D9,0x09F9,0x09F9,0x1219,0x11B7,0x1155,0x1954,0x1932,0x1931,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x2910,0x210F,0x2110,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2930,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x2930,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x2910,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2930,0x210F,0x2130,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x210F,0x2110,0x210F,0x210F,0x212F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2930,0x210F,0x2110,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x290F,0x210F,0x212F,0x2930,0x212F,0x2930,0x210F,0x290F,0x2930,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x2930,0x2930,0x2110,0x2930,0x2110,0x2930,0x210F,0x2110,0x2930,0x2110,0x2930,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2930,0x2130,0x2130,0x210F,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x2930,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2150,0x2151,0x1931,0x1931,0x1112,0x1134,0x1155,0x1197,0x11D8,0x09D9,0x09FA,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01D9,0x01D9,0x01D9,0x09F8,0x09D8,0x11D7,0x1195,0x0912,0x1111,0x1931,0x2131,0x2131,0x2130,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930, + 0x2110,0x2111,0x2131,0x2131,0x2131,0x2111,0x2111,0x2111,0x1910,0x2111,0x2111,0x2111,0x2111,0x2110,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x1911,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x1911,0x2111,0x2131,0x2111,0x1911,0x1931,0x1931,0x2111,0x1911,0x1910,0x1910,0x1910,0x1911,0x2131,0x1911,0x1911,0x1910,0x2131,0x1910,0x1931,0x1931,0x1931,0x1910,0x2131,0x2111,0x1911,0x1911,0x2111,0x2111,0x2131,0x1911,0x1911,0x1911,0x2131,0x2111,0x2111,0x2111,0x2111,0x1910,0x2131,0x2111,0x2111,0x2111,0x2111,0x2111,0x2131,0x2111,0x2131,0x2111,0x2111,0x2111,0x2131,0x2111,0x2111,0x2111,0x2131,0x1911,0x2131,0x1911,0x2111,0x2111,0x2111,0x2111,0x1911,0x2111,0x1911,0x2111,0x2131,0x2111,0x2111,0x1910,0x2111,0x1911,0x2131,0x1931,0x2131,0x1911,0x1910,0x1911,0x1931,0x1911,0x1931,0x1931,0x2131,0x2111,0x2111,0x1911,0x2111,0x2131,0x2111,0x2110,0x2131,0x2131,0x2130,0x2130,0x2131,0x2111,0x2131,0x2131,0x2111,0x2131,0x2131,0x1911,0x2111,0x1911,0x2131,0x1931,0x1911,0x1911,0x1931,0x1910,0x1910,0x1910,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1111,0x1132,0x1133,0x1174,0x21F6,0x2237,0x2217,0x1995,0x1974,0x1133,0x1932,0x1911,0x1931,0x1931,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x212F,0x210F,0x2130,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x210F,0x2930,0x290F,0x2910,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2910,0x210F,0x212F,0x212F,0x2910,0x2930,0x2110,0x2110,0x2910,0x2910,0x210F,0x2930,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x292F,0x2930,0x2130,0x2130,0x2131,0x1932,0x1932,0x1132,0x1173,0x1174,0x19B5,0x19B5,0x1194,0x1174,0x0954,0x1154,0x1153,0x1132,0x1111,0x1911,0x1910,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x2910,0x2930,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x2110,0x210F,0x212F,0x2930,0x212F,0x210F,0x2930,0x290F,0x290F,0x210F,0x2910,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2930,0x2910,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x2930,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x210F,0x2910,0x210F,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2950,0x2950,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2950,0x3150,0x3151,0x2930,0x3130,0x3131,0x3151,0x3151,0x3151,0x3171,0x3171,0x3171,0x3151,0x3171,0x3151,0x3971,0x3992,0x3992,0x3992,0x4192,0x4191,0x4192,0x4191,0x4191,0x4192,0x41B2,0x49B2,0x49D2,0x49B2,0x4992,0x4972,0x4992,0x5192,0x5172,0x5191,0x5191,0x5170,0x5150,0x512F,0x69B1,0x92D5,0xC43A,0xD4BC,0xD4DC,0xD4FC,0xCCFC,0xC4DB,0xA478,0x9477,0x8497,0x8519,0x85BB,0x865C,0x6E7C,0x5E7C,0x465B,0x469C,0x3EBC,0x3F1D,0x3F1D,0x36DD,0x36DD,0x36BC,0x3EBC,0x3EBC,0x46DD,0x46FD,0x3F1D,0x3F3D,0x375E,0x2F5E,0x275E,0x1F7E,0x177E,0x179E,0x0FBF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07DF,0x0FDF,0x0FBE,0x0F9E,0x075C,0x071B,0x06FB,0x06DB,0x06DB,0x06FB,0x06DB,0x06BB,0x06BA,0x06BA,0x06BA,0x06BA,0x069A,0x069A,0x069A,0x069A,0x067A,0x067A,0x065A,0x065A,0x065A,0x063A,0x063A,0x063A,0x061A,0x061A,0x061A,0x05FB,0x05FB,0x05FB,0x05DB,0x05DB,0x05DB,0x05BB,0x05BC,0x05BC,0x059C,0x057C,0x057C,0x057D,0x055D,0x055D,0x053D,0x053D,0x051D,0x051D,0x04FD,0x04FD,0x04FD,0x04FE,0x04DE,0x04DE,0x04BE,0x04BE,0x049E,0x049E,0x049E,0x047E,0x047E,0x049F,0x047E,0x047F,0x045F,0x045F,0x045F,0x045F,0x045F,0x045F,0x043F,0x043F,0x043F,0x043F,0x043F,0x043F,0x043F,0x043F,0x043F,0x043F,0x043F,0x041F,0x043F,0x043F,0x043F,0x043F,0x043F,0x041F,0x043F,0x041F,0x03FF,0x03DF,0x03BF,0x039F,0x039F,0x035F,0x035F,0x033F,0x02FF,0x02DF,0x02BF,0x029F,0x025F,0x023F,0x021F,0x01FF,0x01DF,0x01DF,0x01BE,0x01BE,0x01BE,0x09BE,0x099D,0x119C,0x21BB,0x29BA,0x421A,0x7BFF,0x5B5B,0x53BA,0x4C5B,0x55BE,0x4EDF,0x371F,0x1F3F,0x175F,0x0F7F,0x0F9F,0x077F,0x0F7F,0x0F7F,0x1F7F,0x2F5F,0x3F1F,0x56BE,0x7EBF,0x853B,0x6AF3,0x8AB3,0xAA94,0xC274,0xCA54,0xD234,0xD213,0xD214,0xD1F4,0xD214,0xD1F4,0xD235,0xCA14,0xC255,0xC2B7,0xA276,0x60F0,0x5951,0x4951,0x4172,0x4172,0x4172,0x3971,0x3972,0x3951,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3130,0x2930,0x2950,0x2950,0x2950,0x2151,0x2152,0x2153,0x1154,0x11B6,0x11F8,0x09B8,0x09B8,0x09D9,0x09D9,0x01DA,0x01DA,0x01BA,0x01BA,0x01DA,0x01D9,0x09F9,0x1A19,0x11D7,0x0954,0x1154,0x1932,0x1911,0x1931,0x1930,0x2130,0x2130,0x2130,0x212F,0x2930,0x2130,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2110,0x210F,0x210F,0x2930,0x2910,0x210F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x2130,0x2110,0x2110,0x2130,0x2110,0x210F,0x2130,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2930,0x2110,0x2130,0x210F,0x212F,0x210F,0x290F,0x2930,0x210F,0x212F,0x2930,0x2130,0x2110,0x2130,0x210F,0x210F,0x2130,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x2110,0x2110,0x210F,0x2110,0x2130,0x2110,0x210F,0x2130,0x2130,0x210F,0x2130,0x2110,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x210F,0x2110,0x2930,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1133,0x1175,0x1197,0x11D8,0x11F9,0x09D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01D9,0x01D9,0x01D9,0x01D8,0x09F8,0x11B6,0x1195,0x1132,0x10F1,0x1931,0x2151,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x2930,0x2110,0x210F,0x2130,0x2130,0x2110,0x2930,0x2930, + 0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x20F0,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x2110,0x2131,0x2110,0x2131,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2110,0x2131,0x2110,0x2131,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x2151,0x2151,0x2151,0x1931,0x1931,0x1911,0x1911,0x1112,0x1133,0x1994,0x21F6,0x2217,0x19D6,0x19D6,0x1174,0x1953,0x1932,0x1932,0x2131,0x2151,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2930,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x2930,0x2910,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x210F,0x210F,0x2910,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2930,0x210F,0x210F,0x20EF,0x292F,0x292F,0x290F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x1174,0x11B5,0x19D6,0x11D6,0x2217,0x2217,0x19F7,0x19F7,0x2217,0x19F6,0x21D6,0x1974,0x1932,0x1911,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2110,0x2130,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x210F,0x2930,0x212F,0x212F,0x212F,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x28EF,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2930,0x2910,0x210F,0x2110,0x2110,0x2110,0x2910,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x2930,0x2910,0x2910,0x210F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x3130,0x3150,0x3150,0x3171,0x3171,0x3151,0x3151,0x3150,0x3151,0x3171,0x3171,0x3972,0x3972,0x3972,0x3972,0x3972,0x4192,0x4191,0x4191,0x4191,0x4191,0x41B2,0x49B2,0x4191,0x4191,0x4171,0x4991,0x4991,0x51B2,0x5192,0x5192,0x5171,0x5150,0x512F,0x594F,0x7212,0xAB97,0xCC9B,0xD4DC,0xCC9B,0xCC9B,0xCCDB,0xC49A,0xB499,0xA478,0x8C77,0x84D8,0x85BA,0x865C,0x769D,0x669C,0x4E9C,0x3EDC,0x371D,0x2F5E,0x2F7E,0x277E,0x1F5D,0x275D,0x275E,0x2F5E,0x375E,0x375E,0x375E,0x377E,0x2F7E,0x279E,0x279E,0x1F9F,0x179E,0x179E,0x0F9E,0x0FBF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x0FBF,0x0FBE,0x17DE,0x0F9D,0x073C,0x06FB,0x06DA,0x06DA,0x06BA,0x06BA,0x06DA,0x06BA,0x06DA,0x06BA,0x06DA,0x06B9,0x0699,0x0699,0x0699,0x0699,0x0679,0x0679,0x067A,0x065A,0x0659,0x065A,0x063A,0x0619,0x061A,0x061A,0x05FA,0x05FA,0x05FA,0x05DA,0x05FB,0x05DB,0x05BB,0x05BB,0x05BB,0x05BB,0x059B,0x057C,0x057C,0x057C,0x055C,0x055C,0x055D,0x053D,0x053D,0x051D,0x051D,0x04FD,0x04FD,0x04FE,0x04DE,0x04DE,0x04DE,0x04BE,0x049E,0x049E,0x049E,0x049E,0x049F,0x047E,0x047E,0x047E,0x045F,0x045F,0x045F,0x043F,0x043F,0x043F,0x043F,0x043F,0x041F,0x041F,0x043F,0x041F,0x043F,0x043F,0x043F,0x043F,0x041F,0x041F,0x043F,0x041F,0x041F,0x041F,0x041F,0x041F,0x03FF,0x03FF,0x03FF,0x03DF,0x03BF,0x039F,0x037F,0x035F,0x033F,0x031F,0x031F,0x02DF,0x02DF,0x02BF,0x025F,0x023F,0x01FF,0x01FF,0x01DF,0x01DF,0x01DF,0x01BE,0x01BE,0x019E,0x099D,0x099C,0x117C,0x21BB,0x2999,0x5AFD,0x6B7C,0x5B9B,0x53FA,0x4CDB,0x4E5F,0x3EDF,0x2F3F,0x175F,0x0F7F,0x0F7F,0x0F7F,0x0F7F,0x0F7F,0x177F,0x1F7F,0x2F3F,0x471F,0x569E,0x867F,0x6C57,0x72F3,0x9293,0xBAD5,0xC274,0xCA13,0xD214,0xD1F4,0xD1F4,0xD1F4,0xD214,0xD214,0xD234,0xCA35,0xC255,0xC2D7,0x91F4,0x58CF,0x5151,0x4951,0x4151,0x4172,0x4172,0x4172,0x3971,0x3972,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x2930,0x2930,0x2930,0x2951,0x2951,0x2132,0x2153,0x1153,0x1195,0x1A39,0x09F9,0x09B9,0x09B9,0x01B9,0x01BA,0x01DA,0x01DA,0x01DA,0x09DA,0x09D9,0x11D8,0x0976,0x1154,0x1954,0x1933,0x1932,0x1911,0x1910,0x1910,0x1910,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x2110,0x2930,0x2930,0x2130,0x2130,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x2910,0x2930,0x2110,0x210F,0x2910,0x2110,0x2110,0x210F,0x2910,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x2110,0x2110,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x210F,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x2930,0x2110,0x2110,0x2130,0x2130,0x210F,0x2110,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x212F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2930,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x210F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2151,0x2151,0x1931,0x1953,0x1133,0x1175,0x1197,0x09B8,0x11F9,0x09DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01FA,0x01D9,0x09D8,0x09D8,0x0996,0x1175,0x1132,0x1111,0x1911,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2130,0x2930,0x212F,0x2930,0x2930,0x2110, + 0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2151,0x2151,0x2131,0x2131,0x1931,0x1931,0x1912,0x1132,0x1133,0x1995,0x21F7,0x2217,0x19F7,0x19B5,0x1174,0x1133,0x1932,0x1932,0x2131,0x1911,0x2110,0x2130,0x2130,0x2930,0x2110,0x2130,0x2110,0x2130,0x2930,0x2930,0x2930,0x210F,0x212F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2910,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2930,0x2930,0x210F,0x290F,0x2930,0x210F,0x2910,0x210F,0x2930,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2930,0x210F,0x292F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x212F,0x212F,0x2130,0x210F,0x2110,0x2930,0x210F,0x210F,0x290F,0x292F,0x292F,0x290F,0x292F,0x292F,0x2130,0x2130,0x2131,0x1932,0x1932,0x1154,0x1195,0x1A17,0x19F7,0x19F7,0x19F7,0x19F7,0x2218,0x1A17,0x1A17,0x1A17,0x19F6,0x21D6,0x1973,0x1932,0x2111,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x290F,0x2930,0x210F,0x2910,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2130,0x210F,0x2110,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x210F,0x210F,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2910,0x290F,0x290F,0x2930,0x2930,0x2930,0x2910,0x2110,0x2930,0x290F,0x2930,0x2930,0x2930,0x290F,0x292F,0x290F,0x210F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3151,0x3151,0x3171,0x3171,0x3151,0x3151,0x3151,0x3151,0x3971,0x3171,0x3971,0x3972,0x3971,0x4172,0x3972,0x4171,0x4191,0x3971,0x3971,0x4171,0x4192,0x49B2,0x49B2,0x4171,0x4971,0x4971,0x5191,0x5191,0x5991,0x5171,0x512F,0x48CE,0x594F,0x8AB5,0xB3B8,0xCC7B,0xD4BB,0xD4DB,0xD4BB,0xD4DB,0xCCDB,0xBCBA,0xAC98,0x9457,0x8477,0x7D39,0x7E1B,0x767C,0x669C,0x4E9C,0x3EBC,0x36DD,0x2F5E,0x279E,0x1F9E,0x177E,0x0F7E,0x179E,0x179E,0x1F9E,0x1F7E,0x279E,0x277E,0x277E,0x1F7E,0x1F9E,0x179E,0x0F9E,0x0FBE,0x0FBF,0x07BE,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x0FBF,0x0FBE,0x17BE,0x1FDE,0x177D,0x0F1B,0x0EFA,0x06DA,0x06BA,0x06B9,0x06B9,0x06BA,0x06DA,0x06D9,0x06D9,0x06D9,0x06B9,0x0699,0x0699,0x0699,0x0699,0x0679,0x0679,0x0679,0x0679,0x0659,0x0659,0x0639,0x0639,0x0639,0x0639,0x0619,0x05F9,0x05F9,0x05F9,0x05FA,0x05DA,0x05DA,0x05DA,0x05BA,0x05BB,0x059B,0x057B,0x057B,0x057C,0x055C,0x055C,0x055C,0x053C,0x051C,0x051C,0x051D,0x04FD,0x04FD,0x04DD,0x04DD,0x04DD,0x04BE,0x04BE,0x04BE,0x049E,0x049E,0x049E,0x047E,0x047E,0x047E,0x045E,0x045F,0x045F,0x043F,0x043F,0x043F,0x043F,0x043F,0x041F,0x041F,0x041F,0x041F,0x041F,0x041F,0x041F,0x041F,0x041F,0x041F,0x041F,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03DF,0x03DF,0x03DF,0x03BF,0x03BF,0x03BF,0x037F,0x037F,0x035F,0x033F,0x033F,0x031F,0x02FF,0x02DF,0x029F,0x027F,0x025F,0x023F,0x021F,0x01FF,0x01DF,0x01DF,0x01DF,0x01BF,0x019E,0x019E,0x099D,0x099D,0x117B,0x219A,0x31B9,0x73BF,0x6B9C,0x5BDB,0x4C5B,0x457D,0x46BF,0x2EFF,0x1F3F,0x175F,0x0F7F,0x0F7F,0x077F,0x0F9F,0x0F7F,0x179F,0x279F,0x373F,0x4EFE,0x6E9E,0x861E,0x6B95,0x7AD3,0xA2D4,0xBA94,0xC233,0xCA13,0xD214,0xD214,0xD1F3,0xD1F3,0xD1F4,0xD214,0xD235,0xC234,0xBA55,0xC2F8,0x8192,0x58F0,0x5131,0x4951,0x4152,0x4172,0x4172,0x3972,0x3972,0x3971,0x3971,0x3151,0x3151,0x3151,0x3131,0x3151,0x3131,0x3130,0x3151,0x2951,0x2951,0x2951,0x2152,0x2153,0x1153,0x19D6,0x11F8,0x09F9,0x09B9,0x09B9,0x01B9,0x09DA,0x01DA,0x09DA,0x09FA,0x09D9,0x09D8,0x11B7,0x1155,0x1133,0x1932,0x1911,0x1911,0x1910,0x2130,0x2130,0x2130,0x2130,0x2950,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2930,0x2930,0x290F,0x210F,0x2930,0x2910,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2930,0x210F,0x2930,0x2130,0x210F,0x2130,0x2110,0x210F,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2910,0x2110,0x210F,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x2930,0x2110,0x2930,0x2930,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x210F,0x2110,0x212F,0x210F,0x2130,0x2110,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x2110,0x2930,0x210F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2930,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x2110,0x2930,0x210F,0x210F,0x210F,0x2130,0x2110,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x292F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2151,0x2151,0x1931,0x1952,0x1133,0x1155,0x1197,0x11D8,0x11FA,0x09FA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01D9,0x01F9,0x09D9,0x09B7,0x11D7,0x1195,0x1112,0x1111,0x1911,0x2131,0x2131,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x2130, + 0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x20EF,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x20EF,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2930,0x210F,0x2110,0x2110,0x2110,0x20EF,0x2110,0x2110,0x2110,0x2110,0x2110,0x20F0,0x2110,0x2110,0x2110,0x2110,0x2130,0x20EF,0x2110,0x2110,0x2110,0x2110,0x2130,0x20EF,0x210F,0x210F,0x210F,0x2130,0x2110,0x210F,0x2130,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x20EF,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x1910,0x2110,0x2130,0x2130,0x2151,0x2151,0x2131,0x2131,0x1931,0x1932,0x1132,0x1133,0x1995,0x21F7,0x19F7,0x19F7,0x1995,0x1154,0x1153,0x1132,0x1911,0x1911,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x210F,0x2110,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x2930,0x2910,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x290F,0x2930,0x2910,0x210F,0x290F,0x290F,0x210F,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x210F,0x210F,0x212F,0x2130,0x212F,0x2130,0x210F,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x2110,0x2110,0x1931,0x1932,0x1133,0x1154,0x2217,0x2238,0x11D7,0x11B7,0x11B6,0x11B6,0x11B6,0x11B6,0x11D6,0x19F7,0x19F7,0x19D6,0x1994,0x1932,0x2132,0x2131,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x210F,0x2110,0x210F,0x2110,0x2910,0x2930,0x2910,0x290F,0x210F,0x290F,0x2910,0x210F,0x2930,0x212F,0x2930,0x2930,0x210F,0x210F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2930,0x2130,0x2930,0x2930,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x290F,0x290F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x3171,0x3151,0x3151,0x3151,0x3130,0x3150,0x3151,0x3151,0x3971,0x3971,0x3951,0x3951,0x3951,0x3951,0x3971,0x3951,0x4171,0x4171,0x3931,0x4171,0x4171,0x4191,0x4992,0x49B2,0x4971,0x4971,0x4971,0x5191,0x5191,0x5150,0x512F,0x50EE,0x590F,0x79F2,0xA336,0xC41A,0xCC9B,0xD49B,0xD49B,0xD49A,0xD4DB,0xD4DB,0xCCFA,0xBCB9,0x9C57,0x8C97,0x8539,0x8E3C,0x7E9D,0x66BD,0x56BD,0x46FD,0x371D,0x2F5E,0x2F9F,0x1F9F,0x179E,0x0FBE,0x0FBE,0x0FDF,0x079E,0x0FBE,0x0F9E,0x179E,0x179E,0x179E,0x179F,0x17BF,0x0FBF,0x0FBE,0x07BE,0x07BF,0x07BF,0x07DF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x0FDF,0x0FBE,0x1F9E,0x1F9E,0x2F9E,0x1F1B,0x16DA,0x16BA,0x16DA,0x0EB9,0x06B9,0x06B9,0x06B9,0x06D9,0x06D9,0x06D9,0x06D9,0x06B8,0x06B8,0x0698,0x0698,0x0698,0x0698,0x0698,0x0698,0x0678,0x0658,0x0658,0x0658,0x0638,0x0658,0x0638,0x0618,0x0618,0x0618,0x05F9,0x05F9,0x05F9,0x05D9,0x05DA,0x05BA,0x05BA,0x059A,0x059B,0x059B,0x057B,0x057B,0x057C,0x055C,0x053C,0x051C,0x051C,0x051C,0x04FD,0x04FD,0x04FD,0x04FD,0x04DD,0x04DE,0x04BE,0x04BE,0x049E,0x049E,0x049E,0x047E,0x047E,0x045E,0x045E,0x043E,0x043F,0x043F,0x043F,0x041F,0x041F,0x041F,0x041F,0x041F,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03DF,0x03DF,0x03DF,0x03DF,0x03DF,0x03DF,0x03BF,0x03BF,0x03DF,0x039F,0x03BF,0x039F,0x039F,0x037F,0x037F,0x035F,0x035F,0x033F,0x031F,0x031F,0x02FF,0x02DF,0x02BF,0x029F,0x027F,0x023F,0x021F,0x021F,0x01FF,0x01DF,0x01BF,0x01BF,0x019E,0x019E,0x019E,0x099D,0x117C,0x21BC,0x2159,0x52BC,0x6B9D,0x6C1E,0x541B,0x3CBB,0x4E5F,0x36BF,0x271F,0x171F,0x0F7F,0x0F9F,0x079F,0x0FBF,0x0F9F,0x179F,0x1F9F,0x277F,0x371E,0x56BE,0x769F,0x7D5B,0x6313,0x7A72,0xAAB4,0xBA74,0xCA33,0xD234,0xD1F3,0xD1F3,0xD1F3,0xD1F3,0xD1F3,0xD214,0xCA34,0xC235,0xBA55,0xBAD7,0x6910,0x58F0,0x5131,0x4931,0x4151,0x3951,0x3951,0x3971,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3131,0x3151,0x2951,0x2951,0x2951,0x2131,0x1932,0x1953,0x1995,0x1A18,0x09D8,0x09B8,0x0999,0x09B9,0x09DA,0x09FA,0x09D9,0x09D9,0x09B8,0x11D7,0x1175,0x1113,0x1912,0x1911,0x1911,0x2111,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x290F,0x2930,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2930,0x2910,0x210F,0x210F,0x2910,0x210F,0x2910,0x210F,0x210F,0x2930,0x2910,0x2910,0x2110,0x2110,0x210F,0x2930,0x2930,0x2110,0x210F,0x2930,0x210F,0x210F,0x2130,0x210F,0x210F,0x2130,0x2110,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2110,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x212F,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x210F,0x2110,0x212F,0x210F,0x212F,0x212F,0x2130,0x2930,0x2110,0x2110,0x2910,0x210F,0x210F,0x2910,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x290F,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2130,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x1910,0x1911,0x1112,0x1954,0x1175,0x1197,0x11D8,0x09D9,0x01DA,0x01BA,0x01BA,0x01BA,0x01DA,0x01DA,0x01FA,0x01DA,0x01D9,0x01D9,0x09F9,0x09D8,0x11B7,0x1175,0x1112,0x10F1,0x1911,0x2111,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F, + 0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2110,0x2110,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2110,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2151,0x1931,0x1932,0x1912,0x1132,0x1133,0x1195,0x19F7,0x19F7,0x21F7,0x19B6,0x1174,0x1153,0x1132,0x1931,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x2930,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x2110,0x2110,0x2110,0x2930,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x290F,0x2930,0x2930,0x212F,0x212F,0x212F,0x2130,0x2910,0x2110,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x212F,0x212F,0x2110,0x1910,0x1931,0x1112,0x1133,0x1995,0x2218,0x19F7,0x1196,0x1196,0x1175,0x0975,0x0975,0x0955,0x0995,0x11D7,0x1A17,0x19D6,0x19B5,0x1974,0x1932,0x2131,0x2131,0x2110,0x2130,0x2130,0x210F,0x2110,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x290F,0x2910,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x212F,0x212F,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2930,0x212F,0x212F,0x2930,0x212F,0x212F,0x292F,0x212F,0x210F,0x292F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x290F,0x292F,0x2930,0x2930,0x292F,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3151,0x3150,0x3150,0x3151,0x3150,0x3151,0x3151,0x3130,0x3151,0x3151,0x3151,0x3951,0x3971,0x3950,0x3950,0x3950,0x3951,0x3951,0x3931,0x4151,0x4151,0x4971,0x4991,0x4991,0x4991,0x4971,0x4950,0x4950,0x4950,0x5150,0x490F,0x48CD,0x50EE,0x69B1,0x9AF5,0xBBF9,0xCC3A,0xD47A,0xD45A,0xD47A,0xD49A,0xD4BA,0xDCFB,0xD4FB,0xCD1A,0xB498,0x8C15,0x84B7,0x8DBA,0x7E5C,0x6EBD,0x56BD,0x46DD,0x3F1E,0x2F3D,0x279F,0x1F9F,0x17BF,0x0FBF,0x0FBF,0x07BF,0x07DF,0x07DF,0x07DF,0x07BF,0x0FBF,0x0FBF,0x0FBF,0x0FBF,0x0F9F,0x0FBF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07FF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x0FDF,0x0FDF,0x17BE,0x277D,0x275D,0x2F1C,0x26BA,0x269A,0x2699,0x2F1B,0x1EFA,0x0ED9,0x06B9,0x06B9,0x06B9,0x06D9,0x06D8,0x06D8,0x06D8,0x06D8,0x06B8,0x06B8,0x0698,0x0698,0x0698,0x0698,0x0678,0x0677,0x0678,0x0657,0x0658,0x0657,0x0637,0x0617,0x0638,0x0617,0x0618,0x05F8,0x05F8,0x05F9,0x05D8,0x05D9,0x05B9,0x05BA,0x059A,0x059A,0x057A,0x057B,0x055B,0x055B,0x053B,0x053B,0x053C,0x051C,0x051C,0x04FC,0x04FC,0x04FD,0x04DD,0x04DD,0x04BE,0x049E,0x049E,0x047E,0x047E,0x047E,0x045E,0x045E,0x045E,0x043E,0x043E,0x043E,0x043E,0x043F,0x041F,0x041F,0x041F,0x041F,0x03FF,0x03FF,0x03FF,0x03DF,0x03DF,0x03DF,0x03DF,0x03DF,0x03BF,0x03BF,0x03BF,0x03BF,0x03BF,0x03BF,0x039F,0x039F,0x039F,0x039F,0x037F,0x037F,0x035F,0x035F,0x033F,0x031F,0x031F,0x031F,0x02FF,0x02DF,0x02DF,0x029F,0x027F,0x023F,0x021F,0x01FF,0x01FF,0x01DF,0x01DF,0x01BF,0x01BF,0x01BE,0x019E,0x099E,0x099D,0x115B,0x219B,0x2979,0x6B7F,0x639D,0x5C1D,0x3C3B,0x3D3D,0x4EFF,0x2EFF,0x1F3F,0x175F,0x0F7F,0x0F9F,0x079F,0x0F9F,0x0F9F,0x179F,0x1F7F,0x2F5F,0x3EFE,0x5E9E,0x865E,0x7458,0x72D3,0x9293,0xBAB5,0xC233,0xCA33,0xC9F3,0xD213,0xD1F3,0xD9F4,0xD1F3,0xD214,0xD214,0xCA14,0xC234,0xBA96,0xB2D7,0x58AF,0x5911,0x5131,0x4952,0x4151,0x3951,0x3951,0x3951,0x3972,0x3151,0x3971,0x3171,0x3151,0x3171,0x3151,0x3151,0x3151,0x2931,0x2931,0x2931,0x2131,0x2132,0x1933,0x1974,0x19D7,0x19F8,0x19F9,0x09B8,0x0998,0x09B9,0x09B8,0x09B8,0x09B8,0x11B7,0x1195,0x1153,0x1932,0x1911,0x1911,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x292F,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x210F,0x2930,0x210F,0x2910,0x290F,0x290F,0x2930,0x210F,0x2930,0x2930,0x290F,0x210F,0x2930,0x290F,0x2910,0x2930,0x2930,0x210F,0x2930,0x2930,0x212F,0x212F,0x2930,0x210F,0x212F,0x2930,0x212F,0x292F,0x2930,0x210F,0x212F,0x2130,0x2110,0x2930,0x2930,0x210F,0x2110,0x2930,0x2930,0x2110,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2910,0x290F,0x210F,0x2910,0x2910,0x290F,0x210F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2910,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x210F,0x290F,0x290F,0x2910,0x2930,0x290F,0x290F,0x2930,0x2930,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2910,0x212F,0x212F,0x292F,0x212F,0x210F,0x210F,0x2930,0x212F,0x2930,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2930,0x210F,0x2930,0x212F,0x212F,0x2930,0x2930,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x2130,0x210F,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2110,0x210F,0x2130,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x2110,0x1931,0x1911,0x1932,0x1134,0x1175,0x1197,0x11D9,0x11FA,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01D9,0x09D8,0x09D8,0x19D7,0x1175,0x1132,0x1111,0x1911,0x2110,0x2110,0x2131,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F, + 0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x2110,0x2110,0x2110,0x2930,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x2110,0x2130,0x2110,0x2110,0x2930,0x2930,0x2110,0x2910,0x2910,0x210F,0x2110,0x2930,0x210F,0x210F,0x2130,0x210F,0x212F,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1911,0x1112,0x1112,0x0933,0x1195,0x19F7,0x2218,0x1A17,0x11B5,0x1174,0x1133,0x1132,0x1931,0x1931,0x2151,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x2930,0x2930,0x210F,0x210F,0x212F,0x2930,0x290F,0x290F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x210F,0x2910,0x2110,0x2110,0x2910,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x212F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2130,0x2130,0x2930,0x2910,0x2910,0x210F,0x290F,0x292F,0x210F,0x210F,0x212F,0x210F,0x2110,0x1910,0x1931,0x1933,0x1133,0x21D6,0x19F7,0x1196,0x1196,0x0976,0x0955,0x0954,0x0934,0x0934,0x0975,0x11B6,0x19F7,0x19F7,0x19D6,0x1974,0x1112,0x1932,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2110,0x2110,0x2930,0x2930,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x2930,0x20EF,0x210F,0x290F,0x2930,0x2110,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x212F,0x2130,0x210F,0x212F,0x212F,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x290F,0x210F,0x210F,0x292F,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x3150,0x3150,0x3151,0x3130,0x3150,0x3150,0x3951,0x3951,0x3950,0x3950,0x3930,0x3950,0x3950,0x4171,0x4150,0x4971,0x4971,0x4971,0x4971,0x4950,0x4950,0x4950,0x490F,0x490F,0x48CE,0x50EE,0x592E,0x79F1,0xA315,0xC419,0xD47B,0xD45A,0xD45A,0xD45A,0xDC7A,0xDC9A,0xD49A,0xD4BA,0xD4DA,0xCCBA,0xBC98,0x9C56,0x8456,0x8D59,0x8E3C,0x765C,0x669D,0x4EDD,0x3F1E,0x375E,0x277F,0x1F9F,0x179F,0x0F9E,0x0FBF,0x0FBF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x0FDF,0x17DE,0x1F9E,0x2F5D,0x2EFC,0x2E7A,0x2E18,0x2E38,0x3679,0x3F1B,0x2ED9,0x1EF9,0x0ED9,0x06B8,0x06D8,0x06D8,0x06F8,0x06F8,0x06D8,0x06D7,0x06D7,0x06D7,0x06B7,0x06B7,0x06B7,0x0697,0x0697,0x0677,0x0677,0x0677,0x0677,0x0656,0x0636,0x0637,0x0637,0x0637,0x0617,0x0617,0x0617,0x0618,0x05F8,0x05D8,0x05D8,0x05D9,0x05B9,0x0599,0x059A,0x057A,0x057A,0x055A,0x055B,0x053B,0x053B,0x053C,0x051C,0x04FC,0x04FC,0x04DC,0x04DD,0x04BD,0x04BD,0x04BE,0x049E,0x049E,0x047E,0x047E,0x045E,0x045E,0x045E,0x045E,0x043F,0x043E,0x043F,0x043F,0x041F,0x041E,0x041F,0x03FF,0x03FF,0x03FF,0x03DF,0x03DF,0x03DF,0x03BF,0x03BF,0x03BF,0x03BF,0x03BF,0x03BF,0x039F,0x039F,0x039F,0x039F,0x037F,0x037F,0x037F,0x037F,0x037F,0x035F,0x033F,0x033F,0x031F,0x031F,0x02FF,0x02FF,0x02DF,0x02BF,0x029F,0x027F,0x025F,0x023F,0x021F,0x01FF,0x01DF,0x01DF,0x01DF,0x01BF,0x01BF,0x019E,0x01BE,0x09BE,0x119D,0x199C,0x217A,0x31FA,0x5B5D,0x5BDD,0x441B,0x349B,0x463F,0x36DF,0x271F,0x175F,0x0F7F,0x0F9F,0x0FBF,0x0F9F,0x0F9F,0x0F9F,0x179F,0x277F,0x371E,0x4EDE,0x6E9E,0x7DDD,0x6BB6,0x7252,0xA2B4,0xBA74,0xC1F3,0xD213,0xC9F3,0xD1F3,0xD1F3,0xDA14,0xD214,0xC9F3,0xC9F4,0xCA14,0xC255,0xC2D7,0xA276,0x60D0,0x5931,0x4931,0x4952,0x4172,0x3951,0x3951,0x3951,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3131,0x2951,0x2951,0x2931,0x2131,0x1912,0x1933,0x21B6,0x2218,0x2219,0x1A19,0x1A19,0x1219,0x1219,0x1218,0x19D7,0x1175,0x1974,0x1132,0x1911,0x1911,0x2111,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x290F,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2930,0x2110,0x2910,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2910,0x210F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2910,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x212F,0x210F,0x292F,0x290F,0x210F,0x290F,0x2930,0x2930,0x290F,0x210F,0x2110,0x2930,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x2930,0x290F,0x290F,0x2930,0x290F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x1931,0x1932,0x1953,0x1154,0x1175,0x11B7,0x11D9,0x09D9,0x01D9,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x09D8,0x11D8,0x11B6,0x1174,0x1132,0x1111,0x1931,0x2131,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F, + 0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x2110,0x2130,0x2110,0x2930,0x2930,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2951,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1132,0x1133,0x0954,0x11B6,0x19D7,0x1A17,0x1A17,0x11B5,0x1194,0x1153,0x1132,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2950,0x2130,0x210F,0x210F,0x2930,0x210F,0x210F,0x290F,0x292F,0x2930,0x212F,0x210F,0x210F,0x210F,0x212F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2130,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x210F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x292F,0x210F,0x210F,0x2130,0x2930,0x2930,0x2110,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x2110,0x2110,0x1911,0x1932,0x1953,0x1175,0x19D7,0x11B7,0x0976,0x0976,0x0976,0x0975,0x0934,0x0954,0x0954,0x0975,0x11B6,0x19F7,0x19F7,0x19D7,0x1174,0x1933,0x1932,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x210F,0x2110,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2930,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x212F,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x290F,0x2910,0x210F,0x2910,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x20EF,0x210F,0x210F,0x2110,0x210F,0x2110,0x210F,0x210F,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2930,0x2130,0x210F,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x292F,0x292F,0x210F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x290F,0x292F,0x3130,0x3150,0x3130,0x3150,0x3150,0x3150,0x3130,0x3130,0x3930,0x3930,0x3930,0x3930,0x3930,0x4150,0x4150,0x4150,0x4950,0x4930,0x492F,0x492F,0x492F,0x490E,0x40CD,0x40AD,0x48AD,0x614F,0x8AB4,0xB397,0xCC3A,0xD45A,0xD47A,0xDC5A,0xDC59,0xDC59,0xDC79,0xDC9A,0xDC99,0xDC9A,0xD4B9,0xCCB9,0xCCFA,0xB498,0x8C15,0x8CB7,0x95BA,0x863B,0x6E5B,0x569C,0x4EFD,0x3F3E,0x2F5E,0x279F,0x179F,0x0F9E,0x0FBF,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x0FDE,0x17BE,0x277D,0x2F3C,0x2E9A,0x3619,0x3597,0x45F8,0x4638,0x4658,0x3EB9,0x26D9,0x16D8,0x0ED8,0x06D8,0x06F8,0x06F7,0x06F7,0x06F7,0x06F7,0x06F7,0x06D6,0x06D6,0x06B6,0x06B6,0x06B6,0x0696,0x0696,0x06B6,0x0696,0x0696,0x0676,0x0676,0x0656,0x0656,0x0636,0x0636,0x0636,0x0636,0x0616,0x0617,0x05F7,0x05F7,0x05D7,0x05D8,0x05B8,0x05B8,0x0598,0x0599,0x0579,0x055A,0x055A,0x055A,0x053B,0x051B,0x051B,0x04FB,0x04FC,0x04FC,0x04DC,0x04BD,0x04BD,0x049D,0x047E,0x047E,0x045D,0x045E,0x045E,0x045E,0x045E,0x043E,0x043E,0x043E,0x043F,0x041E,0x041F,0x03FF,0x03FF,0x03FF,0x03DF,0x03DF,0x03BF,0x03BF,0x03DF,0x03BF,0x039F,0x039F,0x039F,0x039F,0x039F,0x037F,0x037F,0x037F,0x035F,0x035F,0x035F,0x035F,0x033F,0x033F,0x033F,0x031F,0x02FF,0x02FF,0x02FF,0x02DF,0x02BF,0x02BF,0x029F,0x027F,0x025F,0x023F,0x023F,0x01FF,0x01FF,0x01DF,0x01DF,0x01DF,0x01BF,0x01BE,0x019E,0x09BE,0x097D,0x117C,0x219C,0x1959,0x52FD,0x539D,0x543E,0x3C7C,0x351C,0x46BF,0x2EFF,0x1F3F,0x0F5F,0x0F7F,0x0F9F,0x0FBF,0x079F,0x0F9F,0x17BF,0x1F9F,0x2F5F,0x3F1F,0x4E9E,0x769F,0x855B,0x62F3,0x8A93,0xAA94,0xBA34,0xCA13,0xD213,0xD1F3,0xD1F3,0xD1F3,0xD1F3,0xC9F3,0xD214,0xD234,0xC214,0xC255,0xBA97,0x8993,0x58AF,0x5931,0x4931,0x4151,0x4151,0x3951,0x3972,0x3972,0x3971,0x3171,0x3151,0x3151,0x3150,0x3151,0x3151,0x3151,0x3151,0x2931,0x2931,0x2131,0x2132,0x2132,0x1953,0x1995,0x19B6,0x19B7,0x2238,0x1A18,0x1A18,0x11B6,0x1154,0x1954,0x1112,0x1931,0x1931,0x2111,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2930,0x290F,0x2930,0x210F,0x210F,0x210F,0x2110,0x2910,0x290F,0x210F,0x290F,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2910,0x2910,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x212F,0x212F,0x2910,0x210F,0x2930,0x210F,0x2910,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x2930,0x2930,0x212F,0x210F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x210F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2131,0x1931,0x1932,0x1933,0x1154,0x1175,0x11B8,0x11F9,0x09D9,0x01D9,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01B9,0x09D9,0x09D9,0x09B7,0x11B6,0x1175,0x1132,0x1111,0x1931,0x1911,0x2131,0x2130,0x2130,0x2951,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F, + 0x2110,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2110,0x2131,0x2131,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2111,0x2110,0x2110,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2131,0x2110,0x2131,0x2130,0x2110,0x2110,0x2131,0x2110,0x2111,0x2110,0x2131,0x2130,0x2111,0x2111,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2111,0x2110,0x2131,0x2130,0x2110,0x2131,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2151,0x2130,0x2151,0x2151,0x2172,0x1931,0x1952,0x1112,0x1133,0x0954,0x1195,0x19F7,0x1A17,0x19F7,0x19D6,0x1174,0x1153,0x1112,0x1911,0x1931,0x2131,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2110,0x210F,0x2930,0x2930,0x210F,0x2910,0x290F,0x210F,0x2930,0x290F,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2930,0x2110,0x2930,0x2910,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x290F,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2930,0x2910,0x2910,0x210F,0x290F,0x210F,0x290F,0x210F,0x2130,0x2130,0x2110,0x1911,0x1932,0x1153,0x19B6,0x2218,0x1196,0x0976,0x0976,0x0976,0x1175,0x0954,0x0934,0x0954,0x0955,0x11B6,0x11D7,0x19F7,0x19D7,0x1995,0x1133,0x1932,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x2930,0x212F,0x292F,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x20EF,0x210F,0x2930,0x212F,0x212F,0x2130,0x212F,0x2930,0x2950,0x2130,0x2930,0x2950,0x2930,0x2130,0x2930,0x2110,0x2930,0x2130,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x3130,0x3130,0x3150,0x3150,0x3130,0x3130,0x3150,0x312F,0x312F,0x312F,0x312F,0x3930,0x4170,0x390F,0x390F,0x412F,0x412F,0x410F,0x40EE,0x40CD,0x40AD,0x40AD,0x40AD,0x48CD,0x594E,0x8273,0xAB97,0xCC7A,0xDCDB,0xD49B,0xD47A,0xD459,0xD459,0xDC59,0xDC59,0xDC59,0xDC79,0xDC79,0xDC79,0xD479,0xD499,0xD4D9,0xC4D9,0x9C36,0x8C76,0x957A,0x8E1B,0x763B,0x667C,0x56FD,0x4F3E,0x375E,0x277E,0x1F7E,0x0F7E,0x0F9E,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x0FBE,0x179D,0x275C,0x36FB,0x3639,0x45F8,0x3D15,0x4D76,0x5DD8,0x4DD7,0x4658,0x2E98,0x1ED8,0x0ED8,0x0EF7,0x0717,0x0717,0x06F7,0x06F7,0x06F6,0x06F6,0x06F6,0x06F6,0x06F6,0x06F6,0x06D5,0x06D5,0x06B5,0x06B5,0x06B5,0x06B5,0x0695,0x0675,0x0675,0x0675,0x0675,0x0655,0x0655,0x0655,0x0635,0x0635,0x0615,0x05F6,0x05F6,0x05F7,0x05D7,0x05B7,0x05B7,0x0597,0x0598,0x0578,0x0578,0x0559,0x0539,0x0539,0x053A,0x051A,0x051B,0x04FC,0x04DC,0x04DC,0x04BD,0x04BD,0x049D,0x047D,0x047E,0x047E,0x045E,0x043E,0x045E,0x043E,0x043E,0x041E,0x041E,0x041E,0x041F,0x041F,0x03FF,0x03DF,0x03DF,0x03DF,0x03BF,0x03BF,0x03BF,0x03BF,0x03BF,0x039F,0x039F,0x037F,0x037F,0x037F,0x037F,0x035F,0x035F,0x033F,0x033F,0x033F,0x033F,0x033F,0x031F,0x031F,0x02FF,0x02DF,0x02DF,0x02DF,0x02DF,0x02BF,0x029F,0x027F,0x025F,0x023F,0x023F,0x021F,0x01FF,0x01FF,0x01DF,0x01DF,0x01BF,0x01BE,0x019E,0x019D,0x097D,0x097C,0x199C,0x197A,0x29FB,0x537E,0x4BDE,0x4C7E,0x245B,0x3E1F,0x36DF,0x1F1F,0x175F,0x0F9F,0x0FBF,0x079F,0x079F,0x079F,0x0F9F,0x177F,0x279F,0x2F3E,0x471F,0x5EBE,0x7E5E,0x7458,0x72D3,0x9273,0xB274,0xC233,0xD234,0xD213,0xD1F3,0xD1F4,0xD1D3,0xD1F3,0xD214,0xD214,0xCA14,0xC235,0xC276,0xB297,0x7131,0x58F0,0x5131,0x4951,0x4951,0x4151,0x4172,0x3951,0x3971,0x3971,0x3151,0x3151,0x2930,0x3130,0x3151,0x3151,0x2931,0x2951,0x2931,0x2951,0x2951,0x2132,0x2173,0x2153,0x1933,0x1133,0x1133,0x1133,0x1133,0x1132,0x1112,0x1912,0x1911,0x1931,0x2131,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x2930,0x212F,0x2930,0x2930,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2110,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2930,0x2130,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2131,0x1911,0x1911,0x1933,0x1154,0x1175,0x11B8,0x1219,0x09F9,0x01B9,0x01BA,0x01BA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01D9,0x0A19,0x09D8,0x09B6,0x1195,0x1133,0x1112,0x1932,0x1911,0x2131,0x2110,0x2151,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x212F,0x214F,0x212F, + 0x1931,0x1931,0x2131,0x2131,0x1931,0x2131,0x2131,0x2131,0x2111,0x2111,0x2131,0x2131,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x1910,0x2111,0x1911,0x1911,0x2111,0x2131,0x1910,0x1910,0x1930,0x2130,0x1930,0x1930,0x1931,0x1911,0x1931,0x1911,0x1911,0x2111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x2111,0x2111,0x1910,0x2111,0x2111,0x2111,0x1911,0x1911,0x1911,0x1911,0x2110,0x2110,0x1910,0x2110,0x2111,0x1910,0x2111,0x1910,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1911,0x1931,0x1911,0x2111,0x1911,0x2111,0x2111,0x2111,0x1911,0x1911,0x2111,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x2111,0x2111,0x1911,0x1911,0x1911,0x1911,0x2131,0x1911,0x1911,0x1911,0x1910,0x1910,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1910,0x1911,0x1911,0x1911,0x1910,0x1911,0x1910,0x1911,0x18F0,0x1910,0x1910,0x1910,0x1911,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x2130,0x1910,0x1910,0x2130,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x2111,0x1911,0x1911,0x1910,0x1910,0x1910,0x1910,0x2110,0x1910,0x2131,0x2111,0x2131,0x2131,0x2151,0x2151,0x2151,0x2151,0x1932,0x1953,0x1132,0x0933,0x0954,0x0995,0x19F7,0x2238,0x2217,0x19D6,0x1974,0x1133,0x1932,0x1911,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x2910,0x2110,0x210F,0x210F,0x2130,0x210F,0x212F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x2110,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x2110,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x2930,0x2130,0x2130,0x1910,0x1911,0x1112,0x1153,0x19D6,0x19F7,0x1197,0x1197,0x0976,0x0976,0x0955,0x0954,0x0934,0x0934,0x0155,0x11B6,0x11D7,0x1A18,0x19D7,0x1995,0x1933,0x1932,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x292F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x28EE,0x290F,0x290E,0x290E,0x292F,0x292F,0x290F,0x290F,0x290E,0x292F,0x292F,0x290F,0x292F,0x312F,0x312F,0x310F,0x312F,0x310F,0x312F,0x310F,0x310F,0x30EE,0x30EE,0x30EE,0x310E,0x390E,0x412F,0x410E,0x38CD,0x38AC,0x304B,0x302A,0x302A,0x386B,0x48ED,0x6190,0x8AB4,0xABB8,0xCC7A,0xD4DB,0xDCFB,0xDCBB,0xDCBA,0xDC99,0xDC79,0xDC79,0xDC79,0xDC79,0xDC79,0xE479,0xDC58,0xDC79,0xDC99,0xD479,0xCCB9,0xCCD9,0xB497,0x9C36,0x94F8,0x95BA,0x7DFB,0x6E3B,0x5EBC,0x4F1D,0x3F3E,0x2F5E,0x275E,0x177E,0x0F9E,0x0F9E,0x0FBF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DE,0x07BE,0x0F9D,0x177D,0x273C,0x3EFB,0x4659,0x55F8,0x4D15,0x54F5,0x6556,0x5D76,0x5618,0x3E78,0x2EB8,0x16B7,0x0F17,0x0717,0x0717,0x0717,0x0716,0x0716,0x0716,0x0715,0x0715,0x06F5,0x06F5,0x06F4,0x06F4,0x06D4,0x06D4,0x06D4,0x06B4,0x06B4,0x0694,0x0694,0x0694,0x0694,0x0674,0x0674,0x0674,0x0674,0x0654,0x0634,0x0634,0x0614,0x0615,0x05F5,0x05F5,0x05D5,0x05B6,0x05B6,0x0596,0x0597,0x0577,0x0557,0x0558,0x0559,0x0539,0x051A,0x04FA,0x04FB,0x04DB,0x04BC,0x049C,0x049D,0x047D,0x047D,0x045D,0x043D,0x045E,0x043E,0x043E,0x043E,0x041E,0x041E,0x041E,0x041E,0x03FF,0x03FF,0x03DF,0x03DF,0x03DF,0x03BF,0x03BF,0x03BF,0x03BF,0x039F,0x037F,0x037F,0x037F,0x037F,0x035F,0x035F,0x035F,0x035F,0x033F,0x033F,0x033F,0x031F,0x031F,0x031F,0x02FF,0x02FF,0x02DF,0x02DF,0x02DF,0x02BF,0x029F,0x029F,0x027F,0x025F,0x025F,0x023F,0x021F,0x021F,0x01DF,0x01FF,0x01BF,0x01DF,0x01BE,0x019E,0x017D,0x019D,0x099D,0x097C,0x199C,0x0959,0x3ADD,0x53FF,0x441D,0x347D,0x24FC,0x3EBF,0x271F,0x173F,0x0F7F,0x0F9F,0x07BF,0x07BF,0x079F,0x079F,0x0F9F,0x179F,0x277F,0x373F,0x46DE,0x6EBF,0x85DD,0x7396,0x8273,0xAA94,0xBA34,0xCA34,0xCA13,0xD1F3,0xD1D3,0xD1F3,0xD1D3,0xD1F3,0xD1F3,0xCA14,0xCA14,0xC255,0xBA76,0xA235,0x60D0,0x58F0,0x5131,0x4951,0x4151,0x4151,0x3951,0x3971,0x3971,0x3171,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x2951,0x2931,0x2931,0x2931,0x2931,0x2132,0x2132,0x2152,0x2132,0x1932,0x1932,0x1932,0x1931,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2110,0x210F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2930,0x292F,0x2930,0x2930,0x210F,0x210F,0x292F,0x2930,0x292F,0x210F,0x210F,0x2930,0x2930,0x290F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2930,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x2910,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x210F,0x2930,0x2130,0x210F,0x210F,0x210F,0x2110,0x2130,0x2950,0x2130,0x1910,0x1910,0x1931,0x1911,0x1933,0x1154,0x1175,0x11D7,0x11D9,0x09D9,0x09B9,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D8,0x09D8,0x11B7,0x1195,0x1153,0x1112,0x1911,0x1911,0x2110,0x2130,0x2130,0x2950,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F, + 0x1912,0x1111,0x1932,0x1932,0x1932,0x1911,0x1911,0x1911,0x1911,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1111,0x1911,0x1911,0x1911,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1911,0x1111,0x1111,0x1911,0x1911,0x1912,0x1912,0x1912,0x1911,0x1912,0x1912,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1932,0x1932,0x1112,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1111,0x1911,0x1911,0x1911,0x1111,0x1111,0x10F1,0x1911,0x10F1,0x1911,0x1911,0x1911,0x1911,0x1911,0x10F1,0x1111,0x1911,0x1111,0x1911,0x1911,0x1911,0x1911,0x1111,0x1911,0x1111,0x1111,0x1911,0x1111,0x1911,0x1911,0x1111,0x1111,0x1111,0x1111,0x1911,0x1911,0x1911,0x1911,0x10F1,0x1911,0x10F1,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1910,0x2131,0x1931,0x1931,0x1951,0x1952,0x1132,0x1132,0x0933,0x0953,0x1195,0x19F7,0x1A17,0x2217,0x19B5,0x1154,0x1132,0x1112,0x1911,0x2131,0x2111,0x2110,0x2130,0x2130,0x2130,0x2930,0x2930,0x290F,0x210F,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x290F,0x210F,0x2910,0x290F,0x290F,0x290F,0x2930,0x2110,0x2930,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x2910,0x2930,0x2110,0x2110,0x2110,0x2930,0x2910,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x292F,0x210F,0x212F,0x290F,0x290F,0x210F,0x290F,0x2930,0x292F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2110,0x2910,0x290F,0x292F,0x290F,0x2930,0x2130,0x2130,0x2130,0x1930,0x1931,0x1132,0x1153,0x19B6,0x19D7,0x11D8,0x11B7,0x0997,0x0976,0x0955,0x0954,0x0934,0x0934,0x0955,0x11B6,0x19F8,0x19F8,0x19D7,0x1975,0x1913,0x1932,0x2131,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x292F,0x290E,0x290E,0x290F,0x290E,0x290E,0x290E,0x28EE,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x292F,0x210F,0x210F,0x292F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2910,0x2110,0x2930,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2930,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290E,0x292F,0x292F,0x290F,0x292F,0x28EE,0x28EE,0x28EE,0x28EE,0x28EE,0x28EE,0x290E,0x292F,0x292F,0x312F,0x290F,0x310F,0x290F,0x28EE,0x290F,0x310F,0x30EE,0x30EE,0x310E,0x310E,0x390E,0x390E,0x30ED,0x30CD,0x30AC,0x288C,0x286B,0x286B,0x284B,0x306B,0x304B,0x40AC,0x512E,0x69D0,0x7A32,0x9B15,0xBC18,0xD4BB,0xE53D,0xE53C,0xDD1C,0xDCDB,0xD4BA,0xD499,0xD499,0xD479,0xD478,0xDC79,0xE499,0xDC79,0xDC78,0xDC58,0xDC37,0xDC58,0xDC58,0xD478,0xD499,0xD4FA,0xC4B8,0xA456,0x9496,0x9538,0x8DDA,0x75FB,0x6E9C,0x56DD,0x471E,0x373D,0x275E,0x1F5E,0x177E,0x0FBF,0x0FBF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x079D,0x0F9D,0x177D,0x273C,0x3EFB,0x4E9A,0x5E19,0x5D36,0x5CB5,0x64B5,0x64F5,0x6DF8,0x5699,0x3ED8,0x2F18,0x16F7,0x0EF6,0x06F6,0x0716,0x0736,0x0736,0x0735,0x0715,0x0715,0x0714,0x0714,0x06F4,0x06F4,0x06F4,0x06F4,0x06F3,0x06D3,0x06D3,0x06D3,0x06D3,0x06D3,0x06B2,0x06B2,0x0692,0x0692,0x0672,0x0672,0x0672,0x0652,0x0653,0x0633,0x0633,0x0613,0x05F4,0x05F4,0x05D4,0x05B4,0x05B4,0x0595,0x0595,0x0576,0x0556,0x0557,0x0538,0x0519,0x04F9,0x04DA,0x04DB,0x04BB,0x049C,0x047C,0x047D,0x045D,0x045D,0x045D,0x043D,0x043E,0x041E,0x041E,0x041E,0x041E,0x03FE,0x03DE,0x03DF,0x03BF,0x03BF,0x03BF,0x03DF,0x03BF,0x03BF,0x039F,0x039F,0x037F,0x037F,0x037F,0x037F,0x035F,0x035F,0x033F,0x033F,0x033F,0x035F,0x033F,0x031F,0x031F,0x02FF,0x02DF,0x02DF,0x02DF,0x02DF,0x02BF,0x029F,0x029F,0x029F,0x027F,0x027F,0x025F,0x023F,0x021F,0x01FF,0x021F,0x01DF,0x01DF,0x01BE,0x01BE,0x01DF,0x01BE,0x01BE,0x019D,0x09BD,0x11BD,0x11BB,0x1199,0x437F,0x43FE,0x3C9E,0x24BC,0x2E3F,0x2EFF,0x171F,0x0F5F,0x0F9F,0x0F9F,0x0FBF,0x07BF,0x079F,0x0F9F,0x179F,0x1F9F,0x273E,0x371E,0x56DE,0x765E,0x84DA,0x6A93,0x8A53,0xB274,0xC254,0xCA34,0xC9D2,0xD1F3,0xC9D3,0xD1F4,0xD1D3,0xD1D3,0xC9F3,0xC9F4,0xC1F4,0xC235,0xB276,0x89B3,0x506E,0x5110,0x4931,0x4131,0x4151,0x3951,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x2931,0x2931,0x2931,0x2931,0x2931,0x2931,0x2131,0x2131,0x2152,0x2152,0x2152,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x2910,0x2930,0x2930,0x2930,0x212F,0x2930,0x2130,0x2130,0x2930,0x212F,0x292F,0x2930,0x2930,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2930,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x2930,0x212F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2130,0x212F,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1931,0x1933,0x1133,0x1155,0x11B7,0x11B8,0x09B9,0x09D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x09D9,0x09F8,0x11B7,0x1195,0x1954,0x10F2,0x1911,0x1911,0x18F0,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F, + 0x1133,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x1112,0x1112,0x1112,0x1112,0x1132,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1112,0x1112,0x1133,0x1133,0x1132,0x1112,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1132,0x1132,0x1133,0x1113,0x1133,0x1133,0x1132,0x1132,0x1133,0x1133,0x1133,0x1112,0x1133,0x1132,0x1132,0x1133,0x1133,0x1113,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1113,0x1133,0x1133,0x1133,0x1113,0x1133,0x1133,0x1132,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1153,0x1132,0x1132,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1952,0x1952,0x1132,0x0933,0x0953,0x1174,0x19D6,0x19F7,0x2237,0x19B5,0x1174,0x1133,0x1932,0x1911,0x2131,0x2111,0x2131,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2930,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x210F,0x2910,0x2910,0x290F,0x290F,0x210F,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2930,0x2910,0x2930,0x2910,0x2110,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2930,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2910,0x2930,0x2930,0x290F,0x2930,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1154,0x1196,0x19F8,0x11F8,0x11B8,0x0997,0x0977,0x0976,0x0955,0x0935,0x0135,0x0976,0x19F8,0x19F8,0x19F8,0x19B6,0x1134,0x1912,0x2132,0x2131,0x2130,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x292F,0x2930,0x292F,0x292F,0x210F,0x290F,0x292F,0x290F,0x28EE,0x28EE,0x28EE,0x28EE,0x28EE,0x28CD,0x28EE,0x28EE,0x28EE,0x28EE,0x28EE,0x28EE,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x20EE,0x20EE,0x20EE,0x20EE,0x210F,0x20EE,0x20EF,0x290F,0x20EF,0x20EF,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2930,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x312F,0x290F,0x290E,0x28EE,0x290E,0x28EE,0x28EE,0x28EE,0x28CE,0x28CE,0x28EE,0x28EE,0x290E,0x290E,0x290E,0x28ED,0x28CD,0x28AD,0x28AD,0x28CD,0x28AD,0x28AD,0x30CD,0x308C,0x30AC,0x306B,0x284A,0x2829,0x2009,0x2009,0x2829,0x38AB,0x596E,0x7A52,0x9B56,0xABF8,0xC47A,0xCCBB,0xD4DC,0xDCFC,0xDCFC,0xDCFB,0xDCFB,0xDCDA,0xDCDA,0xDCB9,0xD499,0xD499,0xD499,0xDC99,0xD478,0xDC78,0xD458,0xDC58,0xDC78,0xDC78,0xDC78,0xDC57,0xDC57,0xDC78,0xD498,0xD4D9,0xC4B8,0xA456,0x9456,0x94F8,0x8D79,0x7DDA,0x6E3B,0x5EBC,0x4EDD,0x3F1D,0x2F3E,0x1F5E,0x177E,0x0F9E,0x0FBF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07BE,0x07BE,0x07BD,0x077D,0x0F5C,0x273C,0x3EFB,0x4EBB,0x6639,0x6D98,0x6454,0x5BF2,0x7D16,0x75B7,0x6658,0x4ED8,0x36F8,0x1ED7,0x0ED6,0x06F6,0x0716,0x0736,0x0735,0x0735,0x0735,0x0734,0x0714,0x0714,0x0714,0x0714,0x0713,0x06F3,0x0713,0x06F2,0x06F2,0x06F2,0x06F2,0x06F2,0x06D1,0x06D1,0x06D1,0x06D1,0x06B1,0x06B1,0x0691,0x0691,0x0671,0x0671,0x0651,0x0651,0x0631,0x0632,0x0612,0x05F2,0x05F2,0x05D2,0x05B3,0x0594,0x0594,0x0555,0x0556,0x0516,0x0517,0x04F8,0x04D9,0x04B9,0x04BA,0x049B,0x047C,0x047C,0x045C,0x045D,0x043D,0x043D,0x041D,0x041D,0x03FE,0x03FE,0x03FE,0x03DE,0x03DE,0x03DF,0x03BF,0x03BF,0x03BF,0x039F,0x039F,0x039F,0x037F,0x037F,0x037F,0x037F,0x037F,0x035F,0x035F,0x035F,0x033F,0x033F,0x033F,0x033F,0x031F,0x02FF,0x02FF,0x02DF,0x02DF,0x02DF,0x02BF,0x02BF,0x029F,0x029F,0x027F,0x027F,0x025F,0x025F,0x023F,0x021F,0x021F,0x01FF,0x01FF,0x01DF,0x01BF,0x01BF,0x01DF,0x01BF,0x01BE,0x019E,0x017D,0x017D,0x09BC,0x017A,0x1A5B,0x43FF,0x343E,0x2CBD,0x153D,0x2EDF,0x1F1F,0x0F5F,0x0F7F,0x0F9F,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x179F,0x27BF,0x2F5F,0x46DE,0x66BF,0x85FE,0x6B75,0x7A73,0x9A54,0xBA74,0xC234,0xCA13,0xC9F3,0xD1F3,0xD1F3,0xD1D3,0xD1D3,0xD1F4,0xD1F4,0xCA14,0xC235,0xBA35,0xB276,0x7952,0x58F0,0x5131,0x4931,0x4151,0x4151,0x3971,0x3951,0x3971,0x3171,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3131,0x3131,0x2931,0x2931,0x2931,0x2931,0x2931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2930,0x2130,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x2930,0x2930,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2930,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2130,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1931,0x1931,0x1132,0x1153,0x1175,0x19D8,0x11F9,0x09D9,0x09D9,0x01DA,0x01BA,0x01DA,0x01FB,0x01DA,0x01DA,0x01FA,0x01FA,0x01D9,0x09D9,0x09D8,0x11B7,0x1996,0x1133,0x1912,0x1932,0x2111,0x2110,0x2110,0x2130,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F, + 0x1195,0x1196,0x11B6,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1196,0x1195,0x1195,0x1195,0x1196,0x1196,0x1195,0x1195,0x1196,0x1196,0x11B6,0x1195,0x1196,0x1195,0x11B6,0x1195,0x1196,0x11B6,0x1196,0x1196,0x11B6,0x1196,0x1196,0x1196,0x11B6,0x1196,0x1196,0x1196,0x1196,0x1195,0x1196,0x11B6,0x11B6,0x1195,0x11B6,0x11B6,0x11B6,0x1195,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x1195,0x1196,0x1196,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B5,0x11B6,0x11B6,0x11B6,0x1195,0x11B6,0x1195,0x11B6,0x1195,0x11B6,0x11B6,0x19B6,0x11B5,0x11B6,0x11B6,0x11B5,0x1195,0x11B6,0x1195,0x1195,0x1196,0x1196,0x1196,0x1196,0x1196,0x1196,0x1196,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1196,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x11B6,0x11B6,0x1196,0x1195,0x11B6,0x11B6,0x1196,0x11B6,0x11B5,0x11B6,0x1196,0x11B6,0x11B6,0x11B6,0x1195,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x19B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x19D6,0x11D6,0x19B6,0x19B6,0x19D6,0x11B6,0x11B6,0x19B6,0x11B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19D6,0x19B6,0x19B5,0x1995,0x1174,0x1153,0x1133,0x1132,0x1932,0x1931,0x1931,0x1931,0x1931,0x2152,0x2172,0x1972,0x1132,0x1132,0x1153,0x1195,0x19D6,0x2237,0x2217,0x19B5,0x1174,0x1153,0x1932,0x1911,0x2111,0x2110,0x2131,0x2130,0x2110,0x2130,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2930,0x212F,0x212F,0x210F,0x2910,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2910,0x2910,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x210F,0x210F,0x290F,0x2930,0x2910,0x290F,0x290F,0x2930,0x290F,0x292F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2930,0x2930,0x2930,0x292F,0x292F,0x212F,0x210F,0x2130,0x2150,0x1931,0x1111,0x1132,0x1154,0x1196,0x19F8,0x11F8,0x11D8,0x0997,0x0977,0x0976,0x0956,0x0956,0x0996,0x11F8,0x1A18,0x19F8,0x21F8,0x1995,0x1133,0x1912,0x2111,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x2930,0x2930,0x210F,0x292F,0x292F,0x292F,0x2930,0x2930,0x292F,0x290F,0x28EE,0x20CE,0x20AD,0x208C,0x206C,0x206C,0x206C,0x206C,0x288C,0x288C,0x208C,0x288C,0x288C,0x28AC,0x28CD,0x28CD,0x28AD,0x28ED,0x28CD,0x28EE,0x28ED,0x290E,0x28EE,0x28EE,0x290E,0x290E,0x290E,0x28EE,0x28EE,0x290F,0x28EE,0x20EE,0x20EE,0x210F,0x20EF,0x20EF,0x20EF,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x20EF,0x210F,0x290F,0x210F,0x20EF,0x290F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x28EE,0x290E,0x290F,0x28EE,0x290F,0x28EE,0x28EE,0x28EE,0x28CD,0x28CE,0x28CE,0x28CD,0x28CD,0x28CD,0x28CD,0x30EE,0x30EE,0x30ED,0x310D,0x28ED,0x28AC,0x208B,0x206B,0x202A,0x202A,0x282A,0x280A,0x200A,0x282A,0x302A,0x386A,0x40AB,0x512D,0x7210,0x92D3,0xABB6,0xCC79,0xD4FB,0xDD1B,0xE51C,0xDCFB,0xDCDA,0xD4BA,0xD49A,0xD499,0xD479,0xD499,0xD499,0xD499,0xDCB9,0xDC99,0xDC99,0xD478,0xDC78,0xD478,0xDC78,0xD458,0xD458,0xDC58,0xDC78,0xD437,0xD437,0xD457,0xD477,0xDC98,0xDCB8,0xD4D9,0xC4B8,0xAC76,0x9C76,0x94D7,0x8D79,0x85DA,0x765C,0x667C,0x56DD,0x46FD,0x375E,0x275E,0x1F7E,0x179E,0x0FBE,0x0FDF,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DE,0x07DE,0x07BE,0x07BE,0x07BE,0x07BE,0x07BE,0x07BE,0x07BE,0x077D,0x077C,0x0F5C,0x1F3C,0x371B,0x4EDB,0x665A,0x6D98,0x74B6,0x6392,0x7C75,0x8577,0x7618,0x5E78,0x46B8,0x26B6,0x16B6,0x0EF6,0x0F36,0x0756,0x0756,0x0755,0x0734,0x0734,0x0734,0x0734,0x0733,0x0733,0x0733,0x0733,0x0732,0x0732,0x0732,0x0732,0x0711,0x0711,0x0710,0x0710,0x0710,0x0710,0x070F,0x06EF,0x06F0,0x06EF,0x06CF,0x06CF,0x06AF,0x068F,0x068F,0x066F,0x0650,0x0650,0x0630,0x0630,0x05F1,0x05D1,0x05B1,0x0592,0x0573,0x0554,0x0535,0x0516,0x04F7,0x04D8,0x04D9,0x0499,0x049A,0x047B,0x047B,0x045C,0x045C,0x043D,0x041D,0x041D,0x041D,0x03FE,0x03FE,0x03FE,0x03DE,0x03DF,0x03BF,0x03BF,0x03BF,0x03BF,0x039F,0x039F,0x037F,0x037F,0x037F,0x035F,0x035F,0x035F,0x035F,0x035F,0x033F,0x033F,0x033F,0x031F,0x031F,0x02FF,0x02FF,0x02DF,0x02DF,0x02DF,0x02BF,0x029F,0x029F,0x027F,0x027F,0x027F,0x025F,0x025F,0x023F,0x023F,0x01FF,0x01FF,0x01FF,0x01DF,0x01DF,0x01BF,0x01BE,0x01BE,0x019E,0x019E,0x019E,0x019D,0x09BD,0x09BC,0x01BA,0x1ADD,0x2BFE,0x249E,0x0CDD,0x15DE,0x1F1F,0x0F1F,0x0F5F,0x0F9F,0x0FBF,0x07BF,0x07BF,0x07BF,0x079F,0x0F9F,0x17BF,0x277F,0x371E,0x4EDE,0x767E,0x7D1B,0x62D4,0x8253,0xA233,0xBA34,0xCA34,0xC9F3,0xD214,0xD1F3,0xD1D3,0xD1D3,0xC9D3,0xC9F3,0xCA14,0xCA14,0xBA14,0xB235,0xAA56,0x60AF,0x5911,0x5151,0x4130,0x4151,0x3951,0x3971,0x3971,0x3171,0x3171,0x3171,0x3151,0x3151,0x3131,0x3131,0x3131,0x2930,0x2930,0x2931,0x2931,0x2931,0x2931,0x2951,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x292F,0x2930,0x292F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x290F,0x2910,0x2910,0x2930,0x2930,0x2930,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2930,0x2130,0x2930,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x212F,0x290F,0x290F,0x290F,0x292F,0x292F,0x2930,0x290F,0x290F,0x2110,0x2110,0x2930,0x2910,0x290F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2130,0x2930,0x212F,0x210F,0x210F,0x2110,0x2930,0x2110,0x210F,0x2110,0x2930,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x2930,0x2110,0x2930,0x212F,0x212F,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x290F,0x210F,0x2110,0x210F,0x2130,0x212F,0x212F,0x2930,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1112,0x1153,0x1195,0x11D8,0x11F9,0x09D9,0x0199,0x01B9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01B9,0x01D9,0x09D8,0x09D8,0x11B7,0x1175,0x1133,0x1912,0x1911,0x2111,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F, + 0x1A18,0x1A18,0x1A18,0x19F8,0x2218,0x1A18,0x1A18,0x2218,0x2238,0x1A18,0x2239,0x1A18,0x2238,0x1A38,0x1A39,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x1A39,0x2239,0x2239,0x2219,0x2219,0x2239,0x2239,0x1A18,0x2239,0x2239,0x1A38,0x2239,0x1A18,0x1A18,0x1A18,0x2238,0x1A38,0x1A38,0x1A38,0x2238,0x1A38,0x1A38,0x1A18,0x1A18,0x1A18,0x1A38,0x1A18,0x1A18,0x1A18,0x1A38,0x1A18,0x2238,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x2238,0x1A38,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x2218,0x2238,0x1A18,0x2238,0x2218,0x2238,0x2238,0x2238,0x1A18,0x2238,0x2218,0x1A18,0x1A18,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x2218,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x2238,0x1A18,0x1A18,0x1A18,0x1A18,0x2238,0x1A38,0x1A18,0x1A38,0x1A18,0x1A18,0x1A18,0x2238,0x2238,0x1A18,0x1A18,0x2239,0x2238,0x2239,0x2238,0x2239,0x2239,0x2239,0x2239,0x2239,0x1A18,0x2238,0x1A38,0x2238,0x1A18,0x2238,0x2238,0x2238,0x1A18,0x1A18,0x1A18,0x1A18,0x2238,0x2238,0x2218,0x2238,0x2238,0x2238,0x2238,0x2238,0x2217,0x19F6,0x1995,0x1133,0x1132,0x1932,0x1932,0x1931,0x1931,0x2131,0x2972,0x1952,0x1932,0x1132,0x1133,0x1153,0x1195,0x19D6,0x2217,0x2217,0x19B5,0x1174,0x1953,0x1912,0x1912,0x2131,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x2130,0x212F,0x2930,0x210F,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x290F,0x210F,0x292F,0x290F,0x2930,0x2930,0x290F,0x2910,0x2910,0x2930,0x2930,0x290F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2930,0x2910,0x292F,0x292F,0x2930,0x2130,0x2130,0x2131,0x1931,0x1132,0x1133,0x0954,0x1196,0x11D8,0x11D8,0x11D8,0x11B8,0x0997,0x0997,0x11B7,0x11D7,0x11F8,0x1A18,0x1A18,0x2218,0x19B6,0x1134,0x1112,0x1911,0x2111,0x2130,0x2930,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2910,0x2930,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x292F,0x292F,0x290F,0x2930,0x292F,0x292F,0x290F,0x28EF,0x20CE,0x188C,0x20AC,0x208B,0x184B,0x202A,0x202A,0x204B,0x202A,0x204B,0x284B,0x204A,0x202A,0x204A,0x204B,0x288B,0x30AC,0x30AC,0x28AC,0x28AC,0x28AC,0x28CC,0x28AC,0x28CD,0x28CD,0x28AD,0x28ED,0x28ED,0x28CD,0x28CD,0x28EE,0x28CD,0x20CD,0x20CD,0x28CE,0x20CE,0x20CD,0x20CE,0x28EE,0x20CE,0x20CE,0x20CE,0x28CE,0x28CE,0x20CE,0x20CE,0x20CE,0x20CE,0x20AD,0x20CD,0x20CE,0x20CE,0x20CE,0x28EE,0x20CE,0x20CE,0x20CE,0x28CE,0x28CE,0x28CE,0x28CD,0x20AD,0x20AD,0x28CD,0x28CD,0x28CD,0x28CE,0x28AD,0x28AD,0x288C,0x288C,0x28AC,0x30AD,0x30CD,0x30CD,0x288C,0x30AC,0x308C,0x286B,0x286B,0x202A,0x1809,0x1808,0x1808,0x1808,0x2008,0x2829,0x40CC,0x598F,0x7A72,0x9B36,0xABB7,0xBC59,0xCCBB,0xDCFC,0xDCFC,0xDCFB,0xDCFB,0xDCDA,0xDCDA,0xDCDA,0xDCB9,0xDCB9,0xDC99,0xDC99,0xDC99,0xDC99,0xDC99,0xDC78,0xDC78,0xDC79,0xDC99,0xDC98,0xDC78,0xDC78,0xDC78,0xD457,0xD457,0xD457,0xDC78,0xD457,0xD457,0xD458,0xD478,0xD477,0xD497,0xD4B8,0xD4D8,0xC497,0xAC56,0x9C35,0x94B6,0x8D18,0x85DA,0x7E3B,0x6E7C,0x5EBD,0x4EFD,0x3F1E,0x2F5E,0x1F7E,0x179E,0x0F9E,0x0FBE,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x0FDF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DE,0x07BE,0x07BE,0x079E,0x079E,0x079E,0x079E,0x079E,0x079D,0x079D,0x077D,0x0F5C,0x1F5C,0x2F3C,0x46FB,0x563A,0x6D78,0x7CB6,0x7BF4,0x7BD3,0x84D6,0x7D97,0x6E38,0x5698,0x36B7,0x1EB6,0x16F6,0x0F36,0x0F56,0x0755,0x0755,0x0754,0x0754,0x0754,0x0753,0x0753,0x0753,0x0753,0x0732,0x0732,0x0752,0x0751,0x0751,0x0731,0x0730,0x0730,0x072F,0x072F,0x072E,0x072E,0x072E,0x072E,0x070E,0x070E,0x070E,0x06EE,0x06EE,0x06CE,0x06CE,0x06AE,0x06AE,0x068E,0x066E,0x064F,0x062F,0x060F,0x05D0,0x05B0,0x0591,0x0572,0x0553,0x0534,0x04F5,0x04F6,0x04D7,0x04B8,0x0499,0x047A,0x047A,0x045B,0x045B,0x043C,0x041C,0x041C,0x03FD,0x03FD,0x03DD,0x03DE,0x03DE,0x03BE,0x03BF,0x03BF,0x039F,0x039F,0x037F,0x037F,0x037F,0x037F,0x035F,0x035F,0x035F,0x035F,0x033F,0x033F,0x033F,0x031F,0x031F,0x031F,0x02FF,0x02FF,0x02DF,0x02DF,0x02BF,0x029F,0x029F,0x027F,0x029F,0x027F,0x027F,0x025F,0x025F,0x023F,0x023F,0x01FF,0x01FF,0x01FF,0x01DF,0x01DF,0x01BF,0x01BF,0x019E,0x01BF,0x01BF,0x019E,0x01BE,0x017D,0x019D,0x017B,0x01FB,0x1B3D,0x1C1E,0x14FF,0x0D5E,0x169F,0x173F,0x0F5F,0x0F7F,0x0FBF,0x07BF,0x07BF,0x07BF,0x07BF,0x0FBF,0x0F9F,0x1F9F,0x273E,0x3EFE,0x5E9E,0x7E1E,0x7C59,0x7293,0x9A94,0xB254,0xC234,0xCA14,0xD1F3,0xD1D3,0xD1F4,0xD1D3,0xD1D3,0xD1F4,0xC9F4,0xC9F4,0xC214,0xBA14,0xB255,0x91F4,0x58AF,0x5931,0x4931,0x4151,0x3951,0x3951,0x3971,0x3171,0x3171,0x3171,0x3151,0x3171,0x3151,0x3131,0x3131,0x3131,0x3131,0x2931,0x2930,0x2930,0x2930,0x2110,0x2130,0x2130,0x2110,0x2130,0x210F,0x292F,0x292F,0x292F,0x2930,0x290F,0x290F,0x2910,0x290F,0x2910,0x2910,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2910,0x2910,0x2930,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x212F,0x210F,0x2930,0x2130,0x2110,0x2110,0x2130,0x212F,0x290F,0x290F,0x2110,0x2110,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2930,0x2110,0x2110,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2130,0x210F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x20EF,0x210F,0x2110,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x212F,0x212F,0x2110,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x2130,0x2110,0x210F,0x2930,0x2110,0x2110,0x2110,0x212F,0x212F,0x210F,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2130,0x212F,0x212F,0x2930,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1132,0x0933,0x11B6,0x11D8,0x11D8,0x09D9,0x09DA,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01B9,0x01D9,0x01D9,0x01B8,0x09B8,0x11B7,0x1996,0x1133,0x1112,0x1911,0x2111,0x2130,0x2110,0x2130,0x2130,0x210F,0x2130,0x210F, + 0x1A18,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x1A18,0x2218,0x2218,0x2218,0x2238,0x2238,0x1A18,0x1A18,0x1A18,0x2218,0x2219,0x19F8,0x2239,0x1A18,0x2219,0x2219,0x2218,0x2218,0x2219,0x2219,0x2218,0x19F8,0x1A18,0x2218,0x1A18,0x2218,0x2218,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A17,0x1A18,0x19F7,0x19F7,0x19D7,0x19F7,0x19F7,0x19F7,0x19F8,0x19F8,0x19F8,0x19F8,0x19F7,0x19F8,0x19F8,0x19F7,0x19F7,0x1A17,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x1A18,0x2218,0x19F7,0x19F7,0x1A18,0x19F7,0x19F7,0x19F8,0x19F7,0x19F7,0x19F8,0x19F8,0x19F7,0x1A18,0x19F7,0x19F7,0x1A18,0x19F8,0x1A18,0x1A18,0x19F8,0x19F8,0x1A18,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x19F8,0x1A18,0x19F8,0x19F8,0x19F8,0x19F8,0x1A18,0x19F8,0x1A18,0x1A18,0x1A18,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x1A18,0x19F7,0x19F8,0x19F7,0x19F7,0x19F8,0x19F7,0x19F8,0x19F7,0x19F7,0x1A17,0x1A17,0x19F7,0x2218,0x19B6,0x19B6,0x19D7,0x19F7,0x2238,0x1A17,0x19F7,0x19F7,0x19D6,0x1154,0x1112,0x1132,0x1911,0x1911,0x2111,0x2131,0x2131,0x2132,0x1932,0x1132,0x1153,0x1153,0x1174,0x19D6,0x2217,0x2217,0x1995,0x1174,0x1954,0x1932,0x1932,0x2111,0x2131,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910,0x2930,0x2930,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2130,0x2130,0x2910,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x290F,0x210F,0x2110,0x2110,0x2130,0x1951,0x1952,0x1132,0x1133,0x0954,0x11B6,0x19F8,0x11D8,0x09B8,0x11D8,0x09B7,0x11B7,0x11D7,0x19F8,0x1A18,0x2239,0x2238,0x19B6,0x1154,0x1112,0x1911,0x2131,0x2131,0x2130,0x2110,0x210F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x292F,0x292F,0x2930,0x2930,0x292F,0x290F,0x290F,0x290F,0x28EE,0x8BD9,0xCDBF,0xD5FF,0xBD3D,0xAC9B,0xA45A,0x93B8,0x9BB8,0x8B36,0x7293,0x6A32,0x6A32,0x59B0,0x59AF,0x494E,0x40EC,0x38CC,0x308B,0x30AB,0x286A,0x286B,0x284A,0x286B,0x284A,0x284A,0x286A,0x286B,0x202A,0x204B,0x202A,0x182A,0x182A,0x180A,0x180A,0x180A,0x182A,0x182B,0x204B,0x182B,0x204B,0x204B,0x202B,0x202B,0x204B,0x204B,0x184B,0x184B,0x182B,0x182B,0x204B,0x204B,0x202B,0x204B,0x204B,0x202B,0x202B,0x200A,0x180A,0x180A,0x1809,0x1809,0x1809,0x1809,0x1809,0x200A,0x200A,0x200A,0x2009,0x200A,0x2009,0x284A,0x306B,0x308B,0x38AC,0x40CC,0x410D,0x514E,0x598F,0x69F0,0x7A72,0x8B14,0xA3B6,0xB459,0xCCFB,0xDD5C,0xE59D,0xE59E,0xE59D,0xE57D,0xE53C,0xDD1C,0xDCDB,0xD49A,0xD499,0xD479,0xDC79,0xDC79,0xDC78,0xDC78,0xDC98,0xDC78,0xE499,0xDC78,0xE498,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC58,0xDC58,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xD457,0xD457,0xD457,0xD457,0xD477,0xD498,0xD4B8,0xCCD8,0xC4B8,0xAC77,0x9C76,0x94B7,0x9559,0x8DBA,0x865C,0x767C,0x66BD,0x4EDD,0x3F1E,0x373E,0x277E,0x1F7E,0x179E,0x17BE,0x0FDF,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x0FBF,0x0FBF,0x0FBF,0x0F9F,0x0FBF,0x0FBF,0x0FBF,0x07BF,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BE,0x07BE,0x07BE,0x07BE,0x077D,0x077D,0x079D,0x079D,0x07BE,0x079D,0x079D,0x077D,0x0F7C,0x175C,0x275C,0x3EFB,0x565A,0x6578,0x84F7,0x9496,0x83B3,0x73B2,0x84F6,0x75D8,0x5E38,0x46B8,0x2696,0x1EF6,0x1736,0x0F56,0x0735,0x0755,0x0775,0x0774,0x0774,0x0774,0x0753,0x0753,0x0773,0x0772,0x0772,0x0772,0x0771,0x0771,0x0770,0x0750,0x076F,0x074F,0x076F,0x076E,0x074D,0x074D,0x074D,0x074D,0x074D,0x074D,0x074E,0x074D,0x074D,0x072D,0x072D,0x070D,0x070D,0x070D,0x06EE,0x0EEE,0x0ECF,0x068F,0x064F,0x060F,0x05CF,0x0590,0x0571,0x0552,0x0533,0x0514,0x04D5,0x04B6,0x04B7,0x0498,0x0479,0x045A,0x045A,0x043B,0x043B,0x041C,0x03FC,0x03FD,0x03DD,0x03DE,0x03BE,0x03BE,0x03BE,0x039F,0x039F,0x039F,0x037F,0x037F,0x035F,0x035F,0x033F,0x035F,0x033F,0x033F,0x031F,0x033F,0x031F,0x031F,0x02FF,0x02FF,0x02FF,0x02DF,0x02DF,0x02BF,0x029F,0x029F,0x027F,0x027F,0x027F,0x027F,0x023F,0x023F,0x025F,0x023F,0x023F,0x01FF,0x01DF,0x01DF,0x01BF,0x01DF,0x01BF,0x01BF,0x01BF,0x019E,0x01BF,0x019E,0x01DE,0x01BE,0x019C,0x019B,0x025B,0x13BE,0x0C7E,0x0D3E,0x05DE,0x16BF,0x173F,0x0F7F,0x0F9F,0x0FBF,0x0FDF,0x07BF,0x07DF,0x07BF,0x079E,0x179F,0x277F,0x2F1E,0x46DE,0x665D,0x85BD,0x6314,0x8AB4,0xAA74,0xBA34,0xCA14,0xC1B2,0xC9D3,0xD1D3,0xD1D3,0xD1B3,0xD1F4,0xC9D3,0xC9D3,0xCA14,0xC215,0xBA35,0xBAB7,0x68F0,0x58CF,0x5972,0x4951,0x4151,0x3951,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3131,0x3131,0x3151,0x3131,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x212F,0x2930,0x292F,0x290F,0x2910,0x290F,0x290F,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2930,0x2110,0x2110,0x2110,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x210F,0x290F,0x2930,0x290F,0x2930,0x290F,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2110,0x210F,0x210F,0x2110,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x2110,0x2110,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2110,0x2110,0x2130,0x210F,0x2130,0x2930,0x212F,0x2930,0x2930,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2910,0x290F,0x2930,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x212F,0x2950,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1133,0x1175,0x11B7,0x11F9,0x09D9,0x09FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01FA,0x01F9,0x09D9,0x11F8,0x11B7,0x1195,0x1133,0x10F1,0x1911,0x2111,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F, + 0x1175,0x1175,0x1175,0x1996,0x1195,0x19B6,0x1996,0x1996,0x1196,0x1196,0x1996,0x1196,0x11B6,0x11B6,0x19B6,0x19B6,0x19B6,0x1996,0x1996,0x19B6,0x11B6,0x19B6,0x19B6,0x19B6,0x1996,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x1996,0x1996,0x1996,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B5,0x19B6,0x19B6,0x19B5,0x19B5,0x19B5,0x19B5,0x1195,0x19B6,0x1196,0x19B6,0x11B6,0x1195,0x19B6,0x19D6,0x1995,0x19B5,0x1996,0x19B6,0x19B6,0x1195,0x19B6,0x19B6,0x1196,0x19B6,0x1195,0x19B5,0x19B5,0x19B5,0x1995,0x1995,0x19B5,0x19B5,0x1995,0x19B5,0x1995,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x1195,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x11B6,0x19B6,0x11B6,0x11B6,0x11B6,0x11B6,0x1196,0x19B6,0x11B6,0x1196,0x19B6,0x1196,0x1196,0x19B6,0x1996,0x1195,0x1196,0x19B6,0x19B6,0x19B6,0x1196,0x1196,0x19B6,0x1996,0x1996,0x19B6,0x1196,0x1196,0x11B6,0x19B6,0x1195,0x19B6,0x1196,0x1196,0x1196,0x1196,0x1196,0x1195,0x1996,0x1996,0x1196,0x1196,0x1196,0x1196,0x1195,0x1995,0x1995,0x1995,0x1195,0x1196,0x1196,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1175,0x1175,0x1975,0x1154,0x1175,0x1195,0x19D6,0x19F7,0x2218,0x19F7,0x19F6,0x1174,0x0912,0x1112,0x1932,0x2131,0x2111,0x2131,0x2131,0x1931,0x1952,0x1132,0x1133,0x1174,0x1174,0x19D6,0x2218,0x2217,0x1195,0x1175,0x1954,0x1912,0x1912,0x2111,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x212F,0x210F,0x290F,0x2930,0x290F,0x2930,0x2930,0x2930,0x210F,0x2910,0x2910,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2930,0x2930,0x2910,0x2910,0x2110,0x210F,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x2930,0x2930,0x210F,0x212F,0x2130,0x212F,0x210F,0x212F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2930,0x2130,0x2130,0x2151,0x1951,0x1132,0x1133,0x1154,0x0975,0x11D7,0x11F8,0x11D8,0x11B7,0x11B7,0x11D7,0x11D7,0x11B6,0x19F7,0x19D7,0x19D6,0x19B5,0x1974,0x1133,0x1911,0x1911,0x2131,0x2130,0x2110,0x2130,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x2910,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2930,0x292F,0x292F,0x2930,0x2930,0x292F,0x290F,0x290F,0x20EE,0x20CE,0x8398,0xEE9F,0xE65F,0xE65F,0xE61F,0xD59E,0xCD5E,0xC4FC,0xC4BB,0xC4DC,0xC4DB,0xCCFC,0xC4BB,0xCCDB,0xC49A,0xBC9A,0xB459,0xB439,0xABF8,0xA3D7,0xA3B7,0x9B96,0x9355,0x9356,0x9335,0x9376,0x8B35,0x9355,0x82D4,0x7A93,0x6A11,0x61D0,0x514E,0x410D,0x38AC,0x388B,0x304A,0x284A,0x2829,0x282A,0x2829,0x2829,0x2809,0x2809,0x2809,0x2009,0x2009,0x2809,0x2809,0x282A,0x282A,0x282A,0x282A,0x304A,0x304A,0x304A,0x306A,0x388B,0x40AB,0x40AB,0x40EC,0x596E,0x6A31,0x82D4,0x8B15,0x9B77,0x9B97,0x9B97,0xA3B7,0xABD8,0xBC59,0xCCDB,0xCCFC,0xD53D,0xDD3D,0xD53D,0xDD3D,0xDD5D,0xE57D,0xE55D,0xDD3C,0xDD3C,0xDD1B,0xDD1B,0xDCFA,0xDCFA,0xD4DA,0xD4B9,0xDCB9,0xDCB9,0xDC99,0xD478,0xDC79,0xDC79,0xDC79,0xDC78,0xDC58,0xDC78,0xDC78,0xDC57,0xDC78,0xDC58,0xDC58,0xE478,0xDC57,0xE458,0xE458,0xE458,0xE457,0xE458,0xDC37,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xD457,0xD477,0xD498,0xCCB8,0xCCD9,0xC4D8,0xAC97,0x9C96,0x94D7,0x9538,0x8DBA,0x861B,0x765C,0x669C,0x56BC,0x46FD,0x371E,0x2F5E,0x1F7E,0x1F9E,0x179E,0x0F9E,0x0FBE,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x0FBF,0x0FBF,0x179F,0x0F7E,0x179F,0x1F9F,0x1F7E,0x179F,0x17BF,0x17BF,0x0FBF,0x0FBF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BE,0x07BE,0x07BE,0x07BE,0x079D,0x079E,0x079D,0x07BE,0x07BD,0x079D,0x079D,0x079D,0x077C,0x175C,0x1F5C,0x371C,0x569B,0x6DD9,0x84D6,0x9476,0x93F4,0x7B92,0x8454,0x8577,0x65B7,0x5E98,0x3ED8,0x2717,0x1716,0x0F36,0x0755,0x0775,0x0775,0x0775,0x0774,0x0774,0x0773,0x0773,0x0772,0x0772,0x0772,0x0792,0x0771,0x0771,0x0770,0x0770,0x076F,0x076F,0x078E,0x076E,0x076D,0x076D,0x076D,0x076D,0x076D,0x076C,0x076D,0x074C,0x076C,0x076C,0x074C,0x074C,0x074C,0x074C,0x072C,0x072D,0x072D,0x0F0D,0x0EEE,0x0ECE,0x0EAE,0x064E,0x060F,0x05CF,0x0590,0x0571,0x0532,0x0513,0x04F4,0x04D5,0x0496,0x0477,0x0478,0x0459,0x0439,0x041A,0x041B,0x03FC,0x03DC,0x03DD,0x03BD,0x03BE,0x039E,0x039E,0x039E,0x037F,0x037F,0x035F,0x035F,0x035F,0x033F,0x033F,0x033F,0x033F,0x033F,0x031F,0x031F,0x02FF,0x02FF,0x02DF,0x02FF,0x02DF,0x02BF,0x02BF,0x029F,0x029F,0x027F,0x027F,0x027F,0x027F,0x025F,0x023F,0x023F,0x023F,0x021F,0x01FF,0x01FF,0x01DF,0x01DF,0x01DF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x019E,0x01BE,0x01BD,0x019C,0x01FB,0x02FD,0x0BFE,0x0CDE,0x057F,0x061F,0x16FF,0x175F,0x0F7F,0x0F9F,0x07BF,0x07BF,0x07BF,0x07BF,0x0FBF,0x0F9F,0x1F9F,0x275F,0x3F1E,0x569E,0x7E5E,0x7CBA,0x7293,0x9A74,0xB254,0xC214,0xC9F3,0xC9D3,0xD1D3,0xD1B3,0xD9F4,0xD1B3,0xD1D3,0xC9D4,0xCA14,0xC214,0xBA14,0xBA55,0xA215,0x60AF,0x5931,0x5151,0x4151,0x3951,0x3951,0x3971,0x3171,0x3151,0x3151,0x3171,0x3131,0x3131,0x3131,0x3151,0x3131,0x3151,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x290F,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x212F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x210F,0x210F,0x2910,0x2910,0x2910,0x290F,0x210F,0x2910,0x2930,0x290F,0x2930,0x290F,0x2930,0x210F,0x212F,0x2130,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2130,0x210F,0x2110,0x210F,0x212F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2910,0x2110,0x2930,0x2910,0x2910,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x210F,0x2930,0x2130,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x210F,0x2930,0x2930,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x212F,0x210F,0x2110,0x2130,0x210F,0x2130,0x2130,0x2110,0x210F,0x2130,0x2110,0x2110,0x2130,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x212F,0x212F,0x2130,0x210F,0x210F,0x2110,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x2110,0x2930,0x210F,0x210F,0x2110,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1931,0x1112,0x1133,0x1196,0x11B7,0x1219,0x09D9,0x01D9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x09D9,0x11D8,0x11D7,0x1995,0x1133,0x1912,0x1911,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110, + 0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x1133,0x1133,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1933,0x1133,0x1133,0x1112,0x1133,0x1133,0x1133,0x1133,0x1113,0x1113,0x1133,0x1133,0x1933,0x1933,0x1112,0x1133,0x1113,0x1113,0x1933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1953,0x1133,0x1132,0x1953,0x1132,0x1132,0x1132,0x1132,0x1153,0x1153,0x1973,0x1153,0x1153,0x1953,0x1153,0x1153,0x1153,0x1133,0x1953,0x1953,0x1933,0x1933,0x1933,0x1953,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1152,0x1953,0x1953,0x1153,0x1133,0x1953,0x1133,0x1133,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1153,0x1133,0x1133,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1133,0x1133,0x1953,0x1133,0x1133,0x1153,0x1133,0x1953,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1112,0x1133,0x1133,0x1133,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1133,0x1153,0x1133,0x1953,0x1133,0x1153,0x1133,0x1133,0x1154,0x1195,0x19F7,0x2238,0x1A17,0x19F6,0x1194,0x1133,0x1112,0x1911,0x2131,0x2152,0x2152,0x2151,0x1931,0x1911,0x1932,0x1953,0x1153,0x0954,0x19B6,0x2238,0x2218,0x1175,0x1975,0x1113,0x1912,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x292F,0x292F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2110,0x2910,0x2930,0x2930,0x2930,0x2930,0x2110,0x2910,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2930,0x2110,0x2110,0x2110,0x2910,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x210F,0x292F,0x290F,0x290F,0x2930,0x2930,0x210F,0x2130,0x2930,0x2130,0x2130,0x2130,0x210F,0x212F,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x1931,0x1931,0x1931,0x1153,0x1153,0x1175,0x19D7,0x1A39,0x1A18,0x11B7,0x0976,0x11B6,0x11B6,0x1195,0x1195,0x1154,0x1153,0x1133,0x1132,0x1952,0x1932,0x1911,0x1910,0x2130,0x2110,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x2930,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x2930,0x2930,0x292F,0x292F,0x290F,0x20EF,0x20EE,0x208C,0x5A32,0xAC7B,0xDDFF,0xDDDF,0xCD3D,0xCD3D,0xCCFC,0xCCFC,0xC49A,0xC49A,0xCCDB,0xCCDB,0xCCBA,0xCCBA,0xCCBA,0xCCBA,0xCCBA,0xCC9A,0xD4DA,0xD4DA,0xDCFB,0xDCFB,0xDD1C,0xD4FB,0xDD3C,0xE53C,0xDD3C,0xE53C,0xE53C,0xE55D,0xE57D,0xE57D,0xE57D,0xED7D,0xE55D,0xE57D,0xE57D,0xE55D,0xE57D,0xE57D,0xE57D,0xE57D,0xE57D,0xE57D,0xE57D,0xDD5D,0xE55D,0xDD3C,0xE55D,0xDD3C,0xE55D,0xDD5C,0xE55D,0xDD3C,0xE55D,0xDD3C,0xE55D,0xE55D,0xE57D,0xE55D,0xE55C,0xE55C,0xDD3C,0xDD3C,0xDD1C,0xDCFB,0xDD1B,0xD4DA,0xD4BA,0xD4BA,0xCC99,0xD499,0xD499,0xCC79,0xD499,0xD499,0xCC79,0xD479,0xD478,0xD479,0xD499,0xD499,0xD499,0xD499,0xDC99,0xD498,0xDC99,0xD478,0xDC99,0xDC78,0xDC78,0xDC78,0xDC78,0xDC58,0xE478,0xDC57,0xDC57,0xDC57,0xDC57,0xE477,0xDC57,0xDC57,0xDC57,0xE457,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xD457,0xDC77,0xDC98,0xDCB8,0xD4B8,0xC4B8,0xAC97,0x9C97,0x9D18,0x9DBA,0x8DDA,0x863B,0x765B,0x667C,0x5EBD,0x4EDD,0x3EFD,0x375E,0x275E,0x1F7E,0x179E,0x179E,0x0FBE,0x0FBE,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x0FBF,0x0F9F,0x179F,0x1F7F,0x277F,0x275E,0x273E,0x379F,0x2F5E,0x277E,0x1F7E,0x179F,0x0F9F,0x0FBF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DE,0x07BE,0x07BE,0x07BE,0x079E,0x07BD,0x07BD,0x07BD,0x079D,0x079D,0x079D,0x077C,0x0F7C,0x1F5C,0x371C,0x4EBB,0x6DFA,0x84D7,0x8C15,0xA476,0x8BB3,0x83B3,0x8CF6,0x7556,0x6638,0x4EF9,0x2F17,0x16F6,0x0F36,0x0755,0x0775,0x0775,0x0775,0x0794,0x0794,0x0773,0x0773,0x0773,0x0772,0x0792,0x0791,0x0791,0x0791,0x0790,0x0790,0x078F,0x078F,0x078E,0x078E,0x078D,0x078D,0x078D,0x078D,0x076C,0x078C,0x078C,0x078C,0x076C,0x078C,0x076B,0x076B,0x076B,0x076B,0x074B,0x074B,0x074B,0x074B,0x0F4C,0x0F4C,0x0F2C,0x0F2D,0x0F0E,0x0EEE,0x0EAE,0x064E,0x05EF,0x05B0,0x0570,0x0511,0x04D3,0x0494,0x0475,0x0456,0x0437,0x0418,0x0419,0x03FA,0x03FB,0x03DC,0x03BC,0x03BD,0x039D,0x039E,0x039E,0x039E,0x037F,0x035F,0x037F,0x035F,0x033F,0x033F,0x033F,0x033F,0x031F,0x031F,0x031F,0x031F,0x02FF,0x02FF,0x02DF,0x02BF,0x02BF,0x02BF,0x02BF,0x029F,0x029F,0x027F,0x025F,0x027F,0x025F,0x023F,0x021F,0x021F,0x021F,0x021F,0x01DF,0x01DF,0x01DF,0x01DF,0x01DF,0x01DF,0x019F,0x019F,0x019F,0x019F,0x019E,0x019E,0x01BE,0x019D,0x01FD,0x027C,0x035D,0x0C5E,0x0D5F,0x05DF,0x065F,0x173F,0x0F7F,0x0FBF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x0FBF,0x179F,0x1F7F,0x2F3E,0x46FE,0x667E,0x85FE,0x7376,0x7A53,0xA254,0xBA34,0xCA14,0xC9F3,0xC9D3,0xD1D3,0xD1D3,0xD1D3,0xD1D4,0xD1D3,0xC9F4,0xC9F4,0xC214,0xBA14,0xBA96,0x8151,0x508F,0x5131,0x4951,0x4151,0x4172,0x3971,0x3951,0x3171,0x3151,0x3171,0x3971,0x3151,0x3151,0x3151,0x3131,0x3151,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2110,0x2130,0x2131,0x2131,0x2111,0x2111,0x2131,0x2131,0x2110,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x210F,0x2110,0x2110,0x210F,0x2910,0x210F,0x290F,0x2930,0x2930,0x2910,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x2110,0x2930,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2910,0x2910,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2930,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2930,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x210F,0x2930,0x2110,0x210F,0x210F,0x2930,0x210F,0x212F,0x2130,0x2110,0x2110,0x212F,0x212F,0x210F,0x2930,0x212F,0x210F,0x2110,0x2110,0x210F,0x210F,0x2130,0x2130,0x2930,0x212F,0x210F,0x2930,0x212F,0x212F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x1931,0x1911,0x1132,0x0933,0x1176,0x0997,0x09B8,0x09D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01D9,0x01B9,0x09F9,0x11F8,0x19F8,0x1195,0x1133,0x1111,0x1911,0x2131,0x2131,0x2130,0x2130,0x2110, + 0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1912,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1932,0x1911,0x1111,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1932,0x1911,0x1111,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1912,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1112,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1911,0x1111,0x1911,0x1932,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1912,0x1911,0x1111,0x1111,0x1912,0x1911,0x1912,0x1912,0x1912,0x1912,0x10F1,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1912,0x1912,0x1932,0x1111,0x1931,0x1911,0x1931,0x1931,0x1111,0x1111,0x1111,0x1112,0x1132,0x1133,0x0933,0x1195,0x19D6,0x1A17,0x1A17,0x19F6,0x1194,0x1133,0x1112,0x1912,0x2132,0x2152,0x2131,0x2131,0x2131,0x1932,0x1932,0x1953,0x1153,0x0954,0x19D6,0x2A59,0x19D7,0x1175,0x1154,0x1933,0x1932,0x1932,0x2131,0x2131,0x2131,0x2930,0x2930,0x2130,0x210F,0x210F,0x212F,0x2930,0x210F,0x212F,0x210F,0x212F,0x210F,0x2110,0x2930,0x2930,0x2110,0x2910,0x210F,0x212F,0x2930,0x2930,0x210F,0x2930,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x2110,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2110,0x2130,0x2131,0x1931,0x1931,0x1132,0x1153,0x1174,0x11B6,0x1A18,0x1A38,0x11D7,0x1196,0x1175,0x1175,0x1174,0x1153,0x1132,0x1132,0x1932,0x1911,0x1911,0x1911,0x1911,0x2130,0x2110,0x2110,0x2130,0x212F,0x290F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2910,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x2930,0x2930,0x2930,0x2930,0x292F,0x210F,0x210F,0x20EF,0x28EF,0x28CE,0x288D,0x286C,0x496F,0x9BB8,0xD57E,0xD57E,0xD53D,0xD51C,0xD51C,0xDD3C,0xD4FB,0xD4DB,0xD4DB,0xD4DA,0xD4DA,0xD4DA,0xD4DA,0xD4DA,0xD4DA,0xD4B9,0xDCBA,0xDCBA,0xDCBA,0xD4BA,0xDCBA,0xD499,0xDCB9,0xD499,0xDC99,0xDC99,0xDC99,0xDCB9,0xDCB9,0xDCB9,0xDCB9,0xDCB9,0xDCB9,0xDCDA,0xDCD9,0xDCD9,0xDCDA,0xDCDA,0xDCDA,0xDCB9,0xDCDA,0xDCDA,0xE4FA,0xDCDA,0xE4FA,0xDCDA,0xE4FA,0xDCDA,0xDCDA,0xDCDA,0xDCDA,0xDCDA,0xDCDA,0xDCDA,0xDCB9,0xDCB9,0xDCB9,0xDCB9,0xD498,0xD499,0xD499,0xDC99,0xD498,0xD478,0xD478,0xDC78,0xD478,0xDC78,0xD478,0xDC99,0xD478,0xD478,0xD478,0xDC78,0xD458,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC58,0xD458,0xDC78,0xDC78,0xDC58,0xDC58,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xE477,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xDC37,0xDC36,0xE457,0xDC37,0xE477,0xDC57,0xDC57,0xDC36,0xDC57,0xDC57,0xDC77,0xDC98,0xDC98,0xCC77,0xBC36,0xAC57,0xACF9,0xA55A,0x95BA,0x85FB,0x763B,0x6E7C,0x5E9C,0x56DD,0x46FD,0x3F1D,0x2F3D,0x2F7E,0x1F7E,0x179E,0x179E,0x17BE,0x0FBE,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x0F9F,0x179F,0x175E,0x275E,0x2F3E,0x371E,0x3F1E,0x46FE,0x471E,0x471E,0x3F5F,0x2F3E,0x275E,0x1F7E,0x179E,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DE,0x07DE,0x07BE,0x07BE,0x07BE,0x07BE,0x07BE,0x07BD,0x07BD,0x07BD,0x07BD,0x079D,0x079C,0x0F7C,0x1F7C,0x2F3C,0x4EBB,0x6E1A,0x7CD6,0x9435,0xAC97,0x9BD4,0x8B93,0x8414,0x8D57,0x6DB7,0x5EF9,0x3F18,0x1F17,0x0F36,0x0F56,0x0776,0x0775,0x0775,0x0795,0x0794,0x0794,0x0794,0x0793,0x0793,0x0792,0x0792,0x07B2,0x0791,0x0791,0x0790,0x0790,0x078F,0x078F,0x078E,0x078E,0x07AE,0x078D,0x078D,0x078C,0x078C,0x078C,0x078C,0x078B,0x078B,0x078B,0x078B,0x078B,0x078A,0x078A,0x076A,0x076A,0x076A,0x076A,0x076A,0x076A,0x076B,0x076B,0x0F4C,0x0F4C,0x0F0D,0x0EEE,0x0EAF,0x0E4F,0x05D0,0x0591,0x0511,0x04D2,0x0493,0x0474,0x0455,0x0437,0x0418,0x03F9,0x03DA,0x03DB,0x03BB,0x03BC,0x03BD,0x039D,0x039E,0x037E,0x037F,0x035F,0x035F,0x035F,0x033F,0x031F,0x033F,0x031F,0x031F,0x031F,0x02FF,0x02FF,0x02DF,0x02BF,0x02DF,0x02BF,0x029F,0x029F,0x029F,0x029F,0x027F,0x027F,0x025F,0x025F,0x023F,0x021F,0x021F,0x021F,0x01FF,0x01FF,0x01FF,0x01DF,0x01DF,0x01DF,0x01BF,0x01BF,0x019F,0x019F,0x019F,0x019F,0x01BF,0x019E,0x01BE,0x01BD,0x021C,0x02DD,0x039D,0x0CDF,0x0D9F,0x061F,0x0EBF,0x177F,0x0F9F,0x0FBF,0x07BF,0x07BF,0x07DF,0x07BF,0x0FBF,0x0F9F,0x177F,0x277F,0x373F,0x4E9D,0x765E,0x8D3C,0x6A73,0xA2D5,0xB234,0xC213,0xC9F3,0xC9D3,0xD1B3,0xD1D4,0xD1D3,0xD1D3,0xD1D3,0xC9D3,0xC9F3,0xC9F4,0xC235,0xBA35,0xB296,0x586E,0x58F0,0x5131,0x4951,0x4172,0x4172,0x3972,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x2930,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x18F0,0x2131,0x2131,0x2132,0x2132,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2110,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2930,0x2110,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x292F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2930,0x212F,0x212F,0x2930,0x2930,0x210F,0x2130,0x210F,0x2130,0x2110,0x2930,0x212F,0x210F,0x2930,0x2930,0x210F,0x2930,0x290F,0x210F,0x212F,0x212F,0x2930,0x2130,0x2930,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2110,0x2110,0x212F,0x212F,0x290F,0x290F,0x212F,0x2130,0x2110,0x2110,0x2130,0x212F,0x2130,0x212F,0x2930,0x212F,0x212F,0x2930,0x212F,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x2930,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1133,0x0934,0x0955,0x11B8,0x09D9,0x0A1A,0x01FA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01F9,0x09F9,0x09D8,0x11D7,0x1995,0x1133,0x1111,0x1931,0x2131,0x2131,0x2130,0x2130, + 0x1910,0x1910,0x2110,0x1910,0x1910,0x1910,0x1910,0x2111,0x2131,0x1911,0x2111,0x2111,0x2111,0x2131,0x2111,0x2111,0x2131,0x1931,0x2131,0x2131,0x2131,0x1910,0x2131,0x2111,0x2111,0x2131,0x2111,0x2111,0x2131,0x1911,0x2111,0x2111,0x1910,0x2111,0x2111,0x2131,0x2131,0x1931,0x1931,0x2131,0x1910,0x1910,0x1910,0x2131,0x2131,0x2130,0x2131,0x1910,0x1930,0x1930,0x1930,0x1910,0x1931,0x1931,0x1931,0x1931,0x1931,0x1910,0x1911,0x1911,0x1910,0x1910,0x2111,0x1910,0x1911,0x1911,0x1931,0x1911,0x1931,0x1931,0x1911,0x1910,0x1910,0x1910,0x1930,0x1931,0x1910,0x1910,0x1910,0x1910,0x1931,0x1911,0x1911,0x1911,0x1931,0x2131,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x2131,0x2131,0x2131,0x1911,0x1911,0x2131,0x1911,0x1911,0x2111,0x1911,0x1931,0x1911,0x2131,0x1911,0x1911,0x1931,0x2111,0x1910,0x1911,0x1911,0x1911,0x2131,0x1931,0x2131,0x2131,0x1911,0x2131,0x1931,0x1911,0x2111,0x1910,0x1911,0x2111,0x1910,0x2131,0x1931,0x1911,0x1911,0x2151,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1112,0x1153,0x1154,0x1175,0x19B6,0x19F7,0x1A17,0x19D6,0x1174,0x1153,0x1112,0x1911,0x2131,0x2132,0x2131,0x2131,0x2151,0x1931,0x1932,0x1153,0x1153,0x1175,0x19D7,0x21F8,0x19D7,0x19B6,0x1154,0x1133,0x1912,0x1911,0x2131,0x2131,0x2130,0x2130,0x2110,0x210F,0x212F,0x2930,0x210F,0x2930,0x212F,0x2930,0x2930,0x212F,0x2130,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x210F,0x290F,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x290F,0x290F,0x292F,0x292F,0x292F,0x2930,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x210F,0x2110,0x2130,0x2131,0x2152,0x1932,0x1132,0x0932,0x1174,0x19D6,0x1A17,0x1A18,0x19F7,0x1196,0x0954,0x1154,0x1133,0x1133,0x1932,0x1931,0x1931,0x1931,0x1911,0x1910,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x292F,0x212F,0x212F,0x210F,0x210F,0x292F,0x2930,0x2130,0x2130,0x2930,0x2930,0x2930,0x292F,0x2930,0x290F,0x28EF,0x28EE,0x28CD,0x28AD,0x288C,0x202A,0x40ED,0x8B36,0xD55E,0xE5BF,0xE57E,0xDD1C,0xDD1C,0xD4FB,0xD4DB,0xDCFB,0xD4DA,0xDCDA,0xD49A,0xD4BA,0xD4BA,0xDCDA,0xDCBA,0xDCBA,0xDCBA,0xDCBA,0xDCBA,0xDCBA,0xDCB9,0xDCB9,0xDC99,0xDC99,0xDC99,0xDC99,0xDC99,0xDC99,0xE4B9,0xDCB9,0xE4B9,0xDC99,0xDCB9,0xDC99,0xDC99,0xDC78,0xDC99,0xDC98,0xDC78,0xDC78,0xDC78,0xDC78,0xDC79,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC99,0xDC99,0xDC99,0xDC99,0xDC78,0xDC99,0xDC98,0xDC98,0xDC98,0xDC78,0xDC78,0xDC98,0xDC78,0xDC99,0xDC78,0xDC78,0xDC78,0xDC78,0xDC58,0xDC78,0xDC58,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xDC58,0xDC58,0xDC57,0xDC58,0xDC58,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC37,0xDC37,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xD437,0xD437,0xCC57,0xCCD8,0xCD7A,0xB57A,0x9D9A,0x8DDB,0x7E1B,0x765C,0x66BD,0x56DD,0x4F1D,0x3F1D,0x375E,0x2F5E,0x277E,0x1F7E,0x179E,0x17BF,0x0FBE,0x0FBE,0x0FDF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x0F9F,0x177E,0x1F7F,0x2F5E,0x371E,0x4F3F,0x5F1E,0x5EBD,0x5E7C,0x5E5C,0x567D,0x56DE,0x4F1E,0x473E,0x2F5E,0x1F7E,0x179E,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DE,0x07DE,0x07DE,0x07BE,0x07BE,0x07BE,0x07BE,0x07BD,0x07BE,0x07BD,0x07BD,0x07BD,0x07BD,0x079C,0x0F7C,0x177C,0x2F5C,0x4EDC,0x661A,0x7D17,0x9456,0xAC56,0xA3D4,0x9BB3,0x83B3,0x8CF6,0x7D97,0x5E78,0x46F9,0x2F38,0x1757,0x0F76,0x0776,0x0796,0x0795,0x07B5,0x0795,0x0794,0x07B4,0x0794,0x07B3,0x0793,0x07B3,0x07B2,0x07B2,0x07B1,0x07B1,0x07B0,0x07B0,0x07AF,0x07AF,0x07AF,0x07AE,0x07AE,0x07AD,0x078D,0x07AD,0x07AC,0x07AC,0x07AC,0x07AB,0x07AB,0x078B,0x078A,0x07AA,0x07AA,0x07AA,0x078A,0x07AA,0x0789,0x0789,0x0789,0x0789,0x076A,0x076A,0x076B,0x0F6B,0x0F2C,0x0F2D,0x0EEE,0x16F0,0x16D1,0x1692,0x0E32,0x0592,0x0512,0x04B2,0x0453,0x0435,0x03F6,0x03F7,0x03F8,0x03DA,0x03DB,0x03BC,0x03BC,0x039D,0x039E,0x037E,0x035E,0x033E,0x033F,0x033F,0x033F,0x031F,0x031F,0x031F,0x02FF,0x02FF,0x02DF,0x02DF,0x02BF,0x02BF,0x02BF,0x02BF,0x029F,0x029F,0x029F,0x029F,0x027F,0x025F,0x025F,0x023F,0x023F,0x021F,0x021F,0x01FF,0x01FF,0x01FF,0x01DF,0x01DF,0x01DF,0x01BF,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x019F,0x019E,0x019E,0x019D,0x01BC,0x027C,0x031C,0x0C3E,0x153F,0x0DDF,0x065F,0x0EFF,0x179F,0x0FBF,0x0FBF,0x07BF,0x07BF,0x07BF,0x07BF,0x0FBF,0x179F,0x1F9F,0x2F3E,0x46FE,0x5E7D,0x8E3E,0x6BB6,0x82B4,0xA253,0xBA34,0xC1F3,0xC9F4,0xD1D3,0xD1D4,0xD9D4,0xD193,0xD1B3,0xC9B3,0xC9D3,0xC9D3,0xC1F4,0xC234,0xBA55,0x91B3,0x586E,0x5911,0x4951,0x4151,0x4151,0x3972,0x3971,0x3171,0x3151,0x3151,0x3171,0x3151,0x3151,0x3151,0x3151,0x2950,0x2930,0x2930,0x2951,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2110,0x2130,0x2151,0x2151,0x2131,0x1911,0x1911,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930,0x2110,0x2910,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x212F,0x210F,0x2130,0x212F,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2110,0x2930,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2910,0x2930,0x2110,0x2110,0x2910,0x2910,0x2110,0x2130,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x292F,0x292F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2130,0x212F,0x212F,0x2930,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2930,0x2130,0x2131,0x1911,0x1911,0x1133,0x1154,0x0975,0x11D7,0x09F9,0x09FA,0x0A1A,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01D9,0x01B8,0x09F9,0x11D8,0x11B7,0x1195,0x1133,0x1111,0x1111,0x1931,0x1931,0x1931, + 0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2151,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x1930,0x2130,0x2130,0x1930,0x1930,0x1930,0x2130,0x2110,0x2130,0x2110,0x2110,0x2131,0x2110,0x1910,0x2111,0x2110,0x1910,0x1910,0x2110,0x1910,0x1910,0x1910,0x1910,0x1910,0x2130,0x1910,0x1910,0x1910,0x2130,0x2110,0x2131,0x2110,0x2131,0x1910,0x2111,0x2111,0x2131,0x2131,0x2131,0x1910,0x2131,0x2131,0x1931,0x1910,0x2131,0x1931,0x1910,0x1931,0x1910,0x1910,0x1910,0x2110,0x2130,0x1910,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x2110,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2110,0x2131,0x2110,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1112,0x1133,0x1133,0x1154,0x19B6,0x2217,0x19F7,0x19D6,0x1174,0x1133,0x1112,0x1911,0x2152,0x2152,0x2151,0x2131,0x1931,0x1931,0x1132,0x1153,0x1154,0x1175,0x19F7,0x2238,0x21F8,0x19B6,0x1154,0x1133,0x1932,0x1931,0x2131,0x2111,0x2130,0x2110,0x2130,0x2930,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x212F,0x2930,0x2110,0x2930,0x2930,0x2110,0x210F,0x2930,0x290F,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x290F,0x290F,0x2910,0x2930,0x2930,0x210F,0x210F,0x2930,0x290F,0x292F,0x290F,0x2930,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x2110,0x2130,0x2131,0x2152,0x1932,0x1132,0x1153,0x0954,0x11B6,0x1A17,0x1A17,0x19F7,0x1196,0x1154,0x1133,0x1133,0x1932,0x1932,0x1931,0x1931,0x2111,0x2111,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x2930,0x292F,0x2930,0x290F,0x290F,0x290F,0x28EF,0x28EE,0x28CE,0x28AD,0x28AC,0x288C,0x284B,0x38AC,0x61B0,0xA377,0xCCDB,0xE59E,0xE57E,0xDD3D,0xD4FB,0xD4DB,0xD4BA,0xD4DB,0xD4DB,0xD4BA,0xDCDA,0xDCBA,0xDCBA,0xDCBA,0xDCBA,0xDCBA,0xDCBA,0xDCBA,0xDCBA,0xDC99,0xDC99,0xDC99,0xDC99,0xE499,0xE499,0xDC98,0xE499,0xE499,0xE499,0xE498,0xDC78,0xDC98,0xDC99,0xDC78,0xDC78,0xDC78,0xDC58,0xDC78,0xDC78,0xDC78,0xE479,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC78,0xDC78,0xDC58,0xDC78,0xDC78,0xDC78,0xDC58,0xDC58,0xDC78,0xDC78,0xDC57,0xE478,0xDC37,0xDC78,0xDC57,0xDC57,0xDC57,0xDC58,0xDC37,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC58,0xDC37,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xDC37,0xDC37,0xDC17,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC37,0xDC57,0xDC57,0xDC36,0xE457,0xDC57,0xDC57,0xDC37,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xD436,0xDC57,0xD457,0xD477,0xCCD8,0xC539,0xB55A,0x9D7A,0x8DDA,0x863C,0x767C,0x669C,0x56FD,0x46FD,0x3F3E,0x373E,0x2F5E,0x277E,0x277E,0x1F9E,0x179E,0x179E,0x0FBF,0x0FDF,0x0FDF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x0FBF,0x0F9F,0x179F,0x277F,0x375F,0x471E,0x5EFE,0x669D,0x6E3C,0x75FB,0x6D79,0x6D59,0x6559,0x65BA,0x667D,0x5EFE,0x4F3E,0x2F3E,0x1F5E,0x179E,0x0FBE,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DE,0x07DE,0x07BE,0x07BE,0x07BE,0x07BE,0x07BE,0x07DE,0x07BD,0x07DE,0x07BD,0x07BD,0x079C,0x0F9C,0x177C,0x273C,0x46FC,0x5E3A,0x8579,0x9456,0xAC56,0xB416,0x9B93,0x8B72,0x8C55,0x8557,0x65F7,0x4ED9,0x3759,0x1F58,0x0F57,0x0F97,0x0796,0x0796,0x07B6,0x07B5,0x07B5,0x07B5,0x07B4,0x07B4,0x07B4,0x07B3,0x07B3,0x07B2,0x07B2,0x07B2,0x07B1,0x07B1,0x07B0,0x07B0,0x07AF,0x07AF,0x07AE,0x07AE,0x07AE,0x07AD,0x07AD,0x07AD,0x07AC,0x07AC,0x07AC,0x07AB,0x07AB,0x07AB,0x07AA,0x07AA,0x07AA,0x07A9,0x07A9,0x07A9,0x07A9,0x0789,0x0789,0x0789,0x078A,0x076A,0x076B,0x0F6C,0x0F4D,0x0F4E,0x0F2F,0x0F10,0x16F1,0x16D2,0x1653,0x0DD2,0x0532,0x04B2,0x0473,0x0454,0x0436,0x0417,0x03F9,0x03B9,0x03BB,0x039C,0x039D,0x037D,0x037E,0x035E,0x033E,0x033F,0x033F,0x031F,0x031F,0x02FF,0x02FF,0x02FF,0x02DF,0x02BF,0x02BF,0x02BF,0x02BF,0x029F,0x029F,0x029F,0x027F,0x027F,0x027F,0x025F,0x025F,0x023F,0x023F,0x021F,0x021F,0x01FF,0x01FF,0x01FF,0x01DF,0x01DF,0x01DF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x019F,0x019F,0x019E,0x019D,0x019C,0x021C,0x02BD,0x035C,0x14BF,0x1DDF,0x0E1F,0x0E9F,0x173F,0x17BF,0x0FBF,0x0FBF,0x07BF,0x07BF,0x0FBF,0x0FBF,0x17BF,0x177E,0x2F9F,0x373E,0x4EDE,0x7EBF,0x855B,0x72F4,0x8A73,0xAA33,0xC214,0xC9F3,0xD1D3,0xD1B3,0xD1B4,0xD193,0xD193,0xD1B3,0xD1D3,0xC9B3,0xC1B3,0xC214,0xBA35,0xB255,0x68CF,0x58D0,0x5131,0x4952,0x4152,0x3971,0x3972,0x3171,0x3171,0x3151,0x3151,0x3171,0x3171,0x3151,0x3150,0x2930,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1933,0x1133,0x1133,0x1153,0x1154,0x1174,0x1994,0x1974,0x1953,0x1932,0x1932,0x1932,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2930,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x290F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2910,0x210F,0x290F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x2930,0x210F,0x210F,0x2910,0x2910,0x2930,0x290F,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x212F,0x2930,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x2110,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x212F,0x210F,0x2130,0x212F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2930,0x210F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1911,0x1911,0x1132,0x1154,0x11B6,0x0997,0x09F9,0x09F9,0x01D9,0x01B9,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01D9,0x01B9,0x09F9,0x09B8,0x11D8,0x19F7,0x11B5,0x1153,0x1112,0x1111,0x1931,0x1931, + 0x210F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2110,0x2131,0x2111,0x2130,0x2110,0x2110,0x2110,0x2110,0x2131,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x2111,0x2110,0x2110,0x2110,0x2110,0x2130,0x1910,0x1910,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x1910,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x1930,0x1930,0x2130,0x2110,0x1910,0x1910,0x2130,0x2130,0x2110,0x1910,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x1910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x2130,0x2130,0x2131,0x1911,0x1911,0x1112,0x1133,0x1195,0x19D6,0x19F7,0x19F7,0x21D6,0x1174,0x1112,0x10F2,0x10F1,0x2152,0x2152,0x2151,0x1931,0x1931,0x1931,0x1932,0x1152,0x1153,0x1195,0x21F7,0x2238,0x2217,0x19B6,0x1174,0x1133,0x1932,0x1931,0x2131,0x2131,0x2131,0x2930,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2130,0x212F,0x212F,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x2110,0x2930,0x2910,0x210F,0x2910,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x210F,0x2910,0x2910,0x2910,0x2910,0x2110,0x210F,0x2930,0x210F,0x2930,0x2910,0x2910,0x210F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2130,0x2131,0x1931,0x1932,0x1153,0x1174,0x0954,0x19B6,0x1A17,0x1A17,0x21F7,0x19B5,0x0933,0x1112,0x1132,0x1132,0x1931,0x1931,0x1911,0x1910,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x2110,0x2930,0x2930,0x2930,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x2130,0x2930,0x210F,0x292F,0x292F,0x292F,0x210F,0x290F,0x290F,0x28EE,0x28EE,0x28CD,0x28CD,0x28AD,0x30AC,0x286B,0x2009,0x2809,0x514E,0x7A73,0xA3B8,0xBC5A,0xD4FC,0xDD3D,0xDD3D,0xDD1C,0xDD1C,0xDCFC,0xDCFC,0xDCDB,0xDCDB,0xDCBA,0xDCBA,0xDCBA,0xDC9A,0xDC99,0xDC99,0xDC9A,0xDC99,0xDC99,0xDC99,0xDC99,0xDC79,0xE499,0xDC58,0xE479,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xE499,0xE499,0xDC58,0xDC58,0xDC38,0xDC58,0xE499,0xDC78,0xDC58,0xE479,0xDC38,0xDC58,0xDC78,0xDC58,0xDC78,0xDC78,0xDC58,0xDC58,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC17,0xDC17,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xDC37,0xE457,0xDC36,0xDC16,0xDC36,0xDC36,0xDC36,0xDC36,0xDC57,0xDC37,0xDC57,0xDC57,0xE457,0xDC37,0xDC36,0xDC57,0xDC57,0xDC77,0xDC77,0xDC57,0xDC57,0xDC57,0xD477,0xCC57,0xC477,0xBCF9,0xB5BB,0xA5FC,0x8E1B,0x7E1B,0x6E5C,0x5E9C,0x4EBC,0x46FD,0x3F1D,0x373E,0x2F3E,0x277E,0x1F7E,0x1F9E,0x179F,0x179F,0x0F9F,0x0FBF,0x0FBF,0x0FBF,0x07BF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x0FBF,0x17BF,0x279F,0x2F3E,0x4F1E,0x669D,0x659A,0x85BB,0x8539,0x8CB8,0x7C35,0x8C97,0x8497,0x6C56,0x6CF8,0x761C,0x6EDE,0x3E9C,0x371E,0x279E,0x179E,0x0FBE,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07BE,0x07BE,0x07BE,0x07BE,0x07BD,0x07BD,0x079D,0x079C,0x179D,0x275D,0x46FC,0x5E5B,0x859A,0x8C76,0xAC77,0xBC57,0xA394,0x9332,0x8BD3,0x8D17,0x75F8,0x5EB9,0x4739,0x2758,0x1757,0x0F77,0x0F97,0x0796,0x07B6,0x07B6,0x07B6,0x07B5,0x07B5,0x07B5,0x07B4,0x07B4,0x07B3,0x07B3,0x07D3,0x07D2,0x07B2,0x07B1,0x07D1,0x07D1,0x07D0,0x07D0,0x07CF,0x07AF,0x07AE,0x07CE,0x07AE,0x07AD,0x07CD,0x07CD,0x07AC,0x07AC,0x07AC,0x07AB,0x07AB,0x07AB,0x07CB,0x07CA,0x07CA,0x07AA,0x07A9,0x07A9,0x0789,0x0789,0x078A,0x078A,0x078B,0x078B,0x076C,0x0F6D,0x0F6D,0x0F4E,0x0F2E,0x0F0F,0x0EF0,0x16D1,0x16D3,0x1673,0x0DF3,0x0553,0x04B3,0x0454,0x0416,0x03D7,0x03B8,0x039A,0x039B,0x037C,0x035C,0x035D,0x035E,0x035E,0x033E,0x031E,0x031F,0x031F,0x02FF,0x02FF,0x02FF,0x02DF,0x02BF,0x029F,0x029F,0x029F,0x029F,0x029F,0x027F,0x027F,0x025F,0x025F,0x025F,0x023F,0x023F,0x023F,0x021F,0x021F,0x021F,0x01FF,0x01DF,0x01BF,0x01DF,0x01DF,0x01BF,0x019F,0x01BF,0x01BF,0x019F,0x01BF,0x019F,0x01BE,0x019E,0x019C,0x01DC,0x023C,0x02FC,0x03BC,0x1D5F,0x15FF,0x0E5F,0x069E,0x175F,0x17BF,0x0FBF,0x0FBF,0x07BF,0x0FDF,0x0FBF,0x0FBF,0x0F7E,0x1F9F,0x2F3E,0x3EDE,0x66BE,0x865E,0x7417,0x6A31,0x9A32,0xBA33,0xCA14,0xD1D3,0xD1B3,0xD1D4,0xD193,0xD193,0xD1B3,0xD1D3,0xC9B3,0xC9D3,0xC9F4,0xC235,0xBA56,0x99D4,0x504E,0x50F1,0x5152,0x4152,0x3951,0x3971,0x3971,0x3151,0x3131,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3131,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x2930,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x210F,0x290F,0x290F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x1154,0x1195,0x19D6,0x19D6,0x19D7,0x19D7,0x19F7,0x19F7,0x19F7,0x1195,0x1153,0x1133,0x1112,0x1932,0x1931,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x2130,0x212F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2110,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x210F,0x2130,0x2110,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2110,0x210F,0x290F,0x290F,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x290F,0x2930,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x212F,0x2930,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1911,0x1911,0x1132,0x1133,0x1195,0x11D7,0x09D8,0x01D9,0x01D9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01B9,0x01B9,0x09F9,0x09F9,0x11F8,0x11D7,0x11B6,0x0933,0x08F2,0x1112,0x1133, + 0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2110,0x2131,0x2131,0x2131,0x2131,0x2130,0x2131,0x2131,0x2110,0x2131,0x2130,0x2130,0x2110,0x2110,0x2111,0x2111,0x2111,0x2110,0x2111,0x2111,0x2111,0x2110,0x2110,0x2131,0x2110,0x2130,0x2131,0x2130,0x2130,0x2130,0x1910,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x1910,0x1930,0x1930,0x2130,0x1910,0x2130,0x2130,0x1910,0x2130,0x1910,0x2130,0x2110,0x2110,0x2130,0x1910,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2150,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x1911,0x1912,0x1132,0x0933,0x1195,0x19D6,0x21F7,0x21F7,0x19B6,0x1974,0x1133,0x1111,0x1931,0x1931,0x2151,0x2171,0x1931,0x1910,0x1931,0x1131,0x1153,0x1153,0x1195,0x19F7,0x19F7,0x2218,0x19B6,0x1174,0x1153,0x1932,0x1931,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x210F,0x2130,0x2930,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x212F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x2930,0x2910,0x2910,0x210F,0x2910,0x2910,0x2110,0x210F,0x290F,0x210F,0x2930,0x210F,0x2910,0x2910,0x2110,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2910,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x292F,0x292F,0x292F,0x2930,0x2930,0x2130,0x2151,0x1931,0x1932,0x1132,0x1153,0x1174,0x19B6,0x19F7,0x2217,0x19F7,0x19B5,0x1133,0x1112,0x1112,0x1932,0x1931,0x1911,0x1910,0x2110,0x2130,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x2930,0x2930,0x292F,0x2930,0x2110,0x2930,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x210F,0x292F,0x210F,0x210F,0x290F,0x28EE,0x28EE,0x28EE,0x28CD,0x28CD,0x28AC,0x28AD,0x28AC,0x286C,0x284B,0x282B,0x282A,0x388C,0x512E,0x7211,0x8AD4,0xABB8,0xBC5A,0xCCDC,0xDD1D,0xE55E,0xE55D,0xE51D,0xDCFC,0xD4BB,0xD49A,0xD49A,0xD49A,0xD47A,0xDC9A,0xDC9A,0xDC79,0xDC79,0xDC79,0xDC79,0xDC79,0xDC79,0xDC79,0xDC79,0xDC79,0xDC79,0xDC99,0xDC99,0xE499,0xDC79,0xDC58,0xD458,0xDC58,0xDC79,0xDC99,0xDC79,0xDC58,0xD438,0xDC58,0xDC58,0xDC79,0xDC58,0xDC58,0xDC58,0xDC38,0xDC58,0xDC58,0xDC37,0xDC58,0xDC38,0xDC58,0xDC38,0xDC58,0xDC58,0xDC58,0xDC37,0xDC37,0xDC57,0xDC58,0xDC37,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC58,0xDC37,0xDC57,0xDC57,0xDC37,0xDC37,0xE457,0xDC57,0xDC57,0xE457,0xDC37,0xDC57,0xDC57,0xDC57,0xDC37,0xDC16,0xDC37,0xDC16,0xDC36,0xDC36,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC77,0xDC57,0xDC77,0xDC77,0xDC77,0xD457,0xC457,0xBC77,0xB4F8,0xB59A,0xA5FB,0x963C,0x7E5C,0x767C,0x669C,0x569C,0x4EBC,0x46FD,0x3EFD,0x371E,0x2F3D,0x2F7E,0x277E,0x1F7E,0x1F7E,0x177E,0x179F,0x17BF,0x0FBF,0x0FBF,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x0FBF,0x0F9F,0x1F9E,0x2F5E,0x3EFD,0x567C,0x6DBB,0x74B7,0x8436,0x8BF5,0xAC97,0xAC77,0xBCD8,0xAC97,0x9C77,0x73F5,0x74D8,0x75FB,0x565C,0x46FD,0x377E,0x1F9E,0x0F9E,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07BE,0x07BE,0x07BE,0x07BE,0x07BD,0x07BD,0x079D,0x0F9D,0x179D,0x277D,0x471D,0x5E5B,0x7D99,0x94B7,0xA436,0xB436,0xAB94,0xA353,0x9373,0x8C75,0x7DB8,0x6679,0x4EF9,0x3739,0x1F58,0x1778,0x0F97,0x07B7,0x07B7,0x07D7,0x07B6,0x07B6,0x07B5,0x07B5,0x07B5,0x07B5,0x07B4,0x07D4,0x07D3,0x07D3,0x07D3,0x07D2,0x07D2,0x07D1,0x07D1,0x07D1,0x07B0,0x07D0,0x07CF,0x07AF,0x07AF,0x07CE,0x07CE,0x07CE,0x07CD,0x07CD,0x07CC,0x07AC,0x07AC,0x07AC,0x07CB,0x07CB,0x07CB,0x07CA,0x07AA,0x07AA,0x07AA,0x07AA,0x078A,0x078A,0x078B,0x078B,0x078B,0x078C,0x078C,0x076D,0x076D,0x074D,0x0F2E,0x0F4F,0x0F10,0x16F1,0x16D3,0x1E94,0x1615,0x0D54,0x04B4,0x0435,0x03F6,0x03B7,0x03B8,0x039A,0x039B,0x035B,0x035C,0x033D,0x033D,0x033E,0x031E,0x031E,0x02FF,0x02FF,0x02FF,0x02DF,0x02BF,0x029F,0x029F,0x029F,0x027F,0x027F,0x027F,0x025F,0x025F,0x027F,0x023F,0x023F,0x023F,0x023F,0x021F,0x01FF,0x01FF,0x01FF,0x01DF,0x01DF,0x01DF,0x01DF,0x01BF,0x01BF,0x019F,0x019F,0x019F,0x019F,0x01BF,0x01BE,0x01DE,0x01BD,0x019B,0x01DB,0x023B,0x031C,0x0C7E,0x1D9F,0x161F,0x0E7F,0x0EDF,0x179F,0x17BF,0x0FBF,0x0FBF,0x07BF,0x0FBF,0x079F,0x17BF,0x177F,0x2F9F,0x371E,0x4EBD,0x76DF,0x8D9C,0x62D3,0x8A52,0xAA33,0xC213,0xC9F3,0xC9B3,0xD193,0xD1B4,0xD193,0xD1B3,0xD1D4,0xD1B3,0xC9D4,0xC9D3,0xC1F4,0xBA35,0xBA97,0x7931,0x58B0,0x5131,0x4952,0x4152,0x3951,0x3972,0x3972,0x3151,0x3151,0x3151,0x3971,0x3151,0x3130,0x3151,0x3151,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x292F,0x292F,0x2930,0x292F,0x292F,0x212F,0x212F,0x2110,0x2110,0x2930,0x2930,0x290F,0x290F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1111,0x1112,0x0934,0x11B6,0x1A18,0x1A18,0x1A18,0x19F8,0x1A18,0x1A18,0x1A18,0x1A18,0x19D6,0x1175,0x1174,0x1133,0x1132,0x1932,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2930,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x292F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x2110,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x212F,0x292F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x290F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2150,0x2130,0x1930,0x1931,0x1911,0x1132,0x1133,0x1175,0x11D7,0x09D8,0x09F9,0x01FA,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x09F9,0x01D9,0x09D9,0x09D8,0x11D7,0x11B6,0x0955,0x08F3,0x1134, + 0x2130,0x212F,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x2110,0x2131,0x2131,0x2131,0x2131,0x2131,0x1911,0x2131,0x2131,0x1931,0x2131,0x2131,0x1930,0x2130,0x2131,0x1930,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x2131,0x1911,0x1910,0x2111,0x2131,0x1931,0x1931,0x2131,0x2131,0x1931,0x2131,0x1931,0x1911,0x2131,0x2131,0x2131,0x2131,0x1931,0x1910,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x1910,0x2131,0x2111,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x1930,0x1931,0x1931,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x2131,0x2131,0x1931,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x294F,0x212F,0x212F,0x2930,0x2930,0x2130,0x2131,0x2132,0x1912,0x1132,0x1133,0x1995,0x21F6,0x21F7,0x21F7,0x19B5,0x1154,0x1132,0x1111,0x1931,0x2151,0x2172,0x2131,0x1910,0x1931,0x1952,0x1932,0x1132,0x0933,0x1195,0x19F7,0x2218,0x2217,0x19B6,0x1174,0x1153,0x1932,0x1912,0x2111,0x2111,0x2131,0x2130,0x2130,0x2130,0x2930,0x2950,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2130,0x2930,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x2930,0x2910,0x2930,0x2110,0x2110,0x210F,0x2930,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2930,0x2930,0x210F,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2110,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2930,0x292F,0x292F,0x292F,0x212F,0x2150,0x2150,0x2151,0x1952,0x1132,0x1153,0x1174,0x11D6,0x1A17,0x2218,0x21F7,0x1995,0x1133,0x1112,0x1111,0x1911,0x1931,0x2131,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x210F,0x210F,0x2130,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x292F,0x292F,0x212F,0x210F,0x210F,0x20EE,0x292F,0x290F,0x290E,0x28EE,0x28EE,0x28EE,0x28EE,0x28CD,0x28AD,0x28AD,0x30AD,0x30AD,0x308C,0x286C,0x202B,0x200A,0x1809,0x2009,0x280A,0x386B,0x514E,0x61D0,0x7A72,0x92F5,0xABD8,0xBC3A,0xC45A,0xCC9B,0xD4DC,0xDCFC,0xDCFC,0xE51C,0xE51C,0xE51C,0xED1C,0xE4FC,0xE4FB,0xE4FB,0xE4DB,0xE4DB,0xDCDB,0xDCBA,0xD49A,0xD479,0xD49A,0xD479,0xD479,0xD479,0xCC58,0xD458,0xD459,0xDC79,0xD479,0xDC79,0xDC79,0xDC79,0xD438,0xD458,0xDC59,0xDC79,0xDC79,0xDC58,0xDC58,0xDC58,0xD438,0xDC38,0xDC38,0xDC38,0xDC58,0xDC58,0xDC58,0xDC58,0xDC37,0xDC57,0xDC57,0xDC58,0xDC58,0xDC58,0xDC58,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE458,0xDC37,0xDC37,0xDC37,0xDC16,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC36,0xDC37,0xDC37,0xDC37,0xDC36,0xDC37,0xDC37,0xDC57,0xDC36,0xD416,0xDC56,0xDC57,0xDC57,0xDC57,0xD436,0xDC36,0xDC57,0xDC57,0xDC57,0xDC77,0xDC77,0xDC78,0xD478,0xCC98,0xBC97,0xA436,0x8C56,0x84B7,0x7D18,0x7D9A,0x7E1C,0x765C,0x6E9D,0x669D,0x5EDD,0x56DD,0x46FD,0x3EFD,0x371E,0x373E,0x2F3E,0x2F5E,0x275E,0x1F7F,0x179F,0x179F,0x0FBF,0x0FBF,0x0FBF,0x0FBF,0x0FDF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x0F9F,0x179F,0x1F7E,0x375E,0x571E,0x6E7D,0x95FB,0x8C76,0x9C16,0xB436,0xC497,0xC477,0xCCB8,0xC477,0xBC77,0x9C16,0x8436,0x857A,0x6E3B,0x5EFD,0x473D,0x2F5E,0x177E,0x0FBE,0x07BE,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07BE,0x07DE,0x07BE,0x07DE,0x07BD,0x079D,0x079D,0x179D,0x2F7D,0x471D,0x565B,0x85BA,0x8CB7,0xA436,0xB416,0xB3D5,0xABB4,0x9B73,0x83D3,0x7D37,0x7659,0x4E99,0x3F19,0x2738,0x1778,0x0F98,0x0798,0x07D8,0x07D7,0x07B7,0x07D7,0x07D6,0x07D6,0x07B6,0x07B5,0x07D5,0x07D5,0x07D4,0x07D4,0x07D3,0x07D3,0x07D3,0x07D2,0x07D2,0x07D2,0x07D1,0x07D1,0x07D0,0x07D0,0x07CF,0x07CF,0x07CF,0x07CE,0x07CE,0x07CE,0x07CD,0x07CD,0x07CD,0x07CD,0x07CC,0x07AC,0x07CC,0x07AB,0x07AB,0x07AB,0x07CB,0x07AB,0x07AB,0x07AB,0x078B,0x07AB,0x078B,0x078C,0x078C,0x078C,0x078C,0x078D,0x078D,0x076E,0x0F6F,0x0F50,0x0F31,0x1712,0x16D3,0x1EB5,0x1E56,0x15D7,0x04D5,0x0455,0x03F6,0x03B7,0x0378,0x037A,0x037B,0x035C,0x033C,0x033D,0x031E,0x031E,0x02FE,0x02FF,0x02DF,0x02DF,0x02BF,0x02BF,0x029F,0x029F,0x027F,0x029F,0x027F,0x025F,0x025F,0x025F,0x025F,0x023F,0x025F,0x023F,0x023F,0x021F,0x01FF,0x01FF,0x01DF,0x01DF,0x01FF,0x01DF,0x01DF,0x01BF,0x01BF,0x019F,0x019F,0x019F,0x01BF,0x01BE,0x09FE,0x09DD,0x019C,0x017B,0x021B,0x025A,0x037C,0x1D3F,0x1DDF,0x163F,0x065E,0x173F,0x17BF,0x0FBF,0x0FBF,0x0FDF,0x0FBF,0x0FBF,0x0FBF,0x179F,0x1F7F,0x2F5F,0x3EFE,0x5EBE,0x865E,0x63B5,0x69F0,0x9A12,0xBA13,0xC9F3,0xC9B3,0xD1B3,0xD1B3,0xD193,0xD1B3,0xD1B3,0xD1D4,0xC9B3,0xC9B3,0xC9F4,0xC235,0xC276,0xAA35,0x586F,0x5911,0x5152,0x4152,0x4151,0x3971,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1112,0x0933,0x11B6,0x1A18,0x19F8,0x19F8,0x11D7,0x0997,0x11B7,0x19F8,0x19F8,0x11F8,0x11D7,0x19F8,0x19D7,0x19D6,0x1154,0x1133,0x1112,0x1111,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1930,0x1931,0x1931,0x1931,0x1931,0x1951,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x2930,0x2110,0x212F,0x210F,0x2930,0x290F,0x212F,0x212F,0x212F,0x210F,0x2110,0x210F,0x212F,0x210F,0x2130,0x212F,0x210F,0x210F,0x212F,0x212F,0x2110,0x2130,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x292F,0x210F,0x212F,0x212F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2150,0x2150,0x2130,0x2130,0x1930,0x1910,0x1111,0x1133,0x0974,0x11D7,0x11F9,0x09D9,0x09FA,0x01DA,0x01BA,0x01DA,0x01DA,0x01D9,0x01B9,0x01D9,0x01B9,0x01D9,0x09F9,0x09D8,0x11D8,0x11B7,0x0955,0x0935, + 0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2151,0x2130,0x2130,0x2130,0x2131,0x2111,0x2111,0x2111,0x2111,0x1911,0x2131,0x1911,0x1911,0x1932,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2151,0x2131,0x2131,0x2150,0x2150,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x2930,0x2130,0x2951,0x2131,0x2132,0x1912,0x1132,0x1133,0x1995,0x21D6,0x21F7,0x21F7,0x19B5,0x1174,0x1132,0x1111,0x1111,0x2151,0x2151,0x2131,0x2131,0x2151,0x1952,0x1132,0x1132,0x0953,0x1195,0x19F7,0x2238,0x2217,0x19B6,0x1974,0x1133,0x1912,0x1912,0x2111,0x2131,0x2131,0x2931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x2930,0x2130,0x2110,0x2110,0x2930,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x212F,0x2130,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x2910,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x2930,0x292F,0x2930,0x2130,0x2130,0x2150,0x1951,0x1131,0x1132,0x1153,0x1174,0x11B6,0x1A17,0x2217,0x19D7,0x1995,0x1133,0x1112,0x18F1,0x1911,0x1911,0x1911,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x2930,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210E,0x20EE,0x290E,0x290E,0x28CD,0x28CD,0x28CE,0x28CE,0x28CE,0x28CE,0x28CE,0x28AD,0x28AD,0x288C,0x286C,0x284C,0x284B,0x202A,0x200A,0x280A,0x280A,0x280A,0x302A,0x384B,0x408C,0x48CC,0x512E,0x616E,0x69D0,0x71F1,0x8A93,0x92F5,0xAB97,0xBC18,0xD4DB,0xDD1D,0xDD1C,0xE55E,0xE55E,0xED7E,0xE55E,0xE53D,0xDD1C,0xDCFC,0xD4DB,0xD4BA,0xD4BB,0xD49A,0xDCBB,0xDCBB,0xDC9A,0xD49A,0xD47A,0xDC9A,0xDC7A,0xDC9A,0xDC9A,0xDC9A,0xDC9A,0xDC79,0xDC79,0xDC79,0xDC59,0xDC59,0xDC58,0xDC58,0xDC58,0xDC58,0xDC78,0xDC78,0xDC58,0xDC78,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xDC37,0xDC37,0xE437,0xE457,0xE457,0xDC57,0xDC36,0xDC36,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xDC77,0xDC78,0xD457,0xD477,0xCCB8,0xCCD9,0xBCF9,0xACF9,0x9CD8,0x84B7,0x7CB7,0x74D7,0x7539,0x75BA,0x763C,0x767D,0x76BD,0x669D,0x5EBD,0x4EBD,0x4EDD,0x471E,0x3F3E,0x375E,0x275E,0x277E,0x1F7E,0x179F,0x17BF,0x0FBF,0x0FBF,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BE,0x0FBF,0x0FBF,0x1F9E,0x277E,0x475F,0x5EBD,0x7E1C,0xA5BB,0x93D4,0xBC36,0xCC57,0xD457,0xCC16,0xD457,0xCC16,0xC436,0xB457,0x9416,0x7C76,0x7DDA,0x6E9C,0x4EBC,0x373D,0x277E,0x179E,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07BE,0x07BE,0x07DE,0x07BE,0x07BD,0x079D,0x179D,0x277D,0x3F1D,0x565B,0x7DDA,0x8CF8,0x9C15,0xB416,0xBC16,0xB3B5,0xABB5,0x8B93,0x7C95,0x8619,0x5E79,0x46FA,0x2F39,0x1F79,0x0F78,0x0F98,0x07B8,0x07D8,0x07D8,0x07D7,0x07D7,0x07D7,0x07D7,0x07D6,0x07D6,0x07D5,0x07D5,0x07D5,0x07D4,0x07D4,0x07D4,0x07D3,0x07D3,0x07D3,0x07D2,0x07D2,0x07D1,0x07D1,0x07D0,0x07D0,0x07D0,0x07D0,0x07CF,0x07CF,0x07CF,0x07CE,0x07CE,0x07CE,0x07CD,0x07CD,0x07CD,0x07CD,0x07CD,0x07CC,0x07CC,0x07CC,0x07AC,0x07AC,0x07AC,0x078C,0x07AC,0x078C,0x07AC,0x07AC,0x07AD,0x07AD,0x078D,0x078D,0x078E,0x076F,0x0F70,0x0F51,0x1732,0x1F34,0x16D5,0x1EB6,0x1E77,0x1DF8,0x0D17,0x0456,0x03D6,0x03B7,0x0379,0x035A,0x035B,0x033C,0x031D,0x031D,0x02FE,0x02FE,0x02DE,0x02DF,0x02BF,0x02BF,0x029F,0x029F,0x027F,0x027F,0x027F,0x025F,0x025F,0x025F,0x023F,0x023F,0x023F,0x021F,0x021F,0x021F,0x01FF,0x01DF,0x01FF,0x01DF,0x01DF,0x01DF,0x01DF,0x01BF,0x01BF,0x019F,0x017F,0x019F,0x019F,0x01BF,0x01BE,0x09DE,0x015B,0x015A,0x11FB,0x023A,0x029A,0x1C5E,0x2DDF,0x1DFF,0x167F,0x0EBF,0x177F,0x17BF,0x0FDF,0x07BF,0x0FDF,0x0FDF,0x079F,0x0FBF,0x177E,0x277F,0x2F1E,0x4EDE,0x76BF,0x7D5B,0x5A51,0x8A12,0xB233,0xCA14,0xC9D3,0xC9B3,0xD1B3,0xD1B3,0xD1B3,0xD1B3,0xD1B3,0xD1D4,0xC9B3,0xC9D3,0xC1F4,0xC235,0xBA76,0x8131,0x50AF,0x5952,0x4952,0x4152,0x3951,0x3971,0x3972,0x3171,0x3151,0x3131,0x3151,0x3151,0x3151,0x3151,0x3150,0x3150,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x212F,0x210F,0x2930,0x290F,0x2910,0x2910,0x290F,0x210F,0x2130,0x2110,0x2110,0x2131,0x2111,0x1931,0x1112,0x0954,0x19F8,0x19F8,0x1A39,0x11D8,0x0976,0x0976,0x0976,0x0956,0x0996,0x11B7,0x11B7,0x1A18,0x2218,0x19B6,0x1155,0x1154,0x1133,0x1112,0x1112,0x1131,0x1111,0x1911,0x1911,0x1911,0x1911,0x1111,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1951,0x1931,0x1931,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x290F,0x292F,0x2930,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2130,0x2930,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x210F,0x2130,0x212F,0x210F,0x290F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x2910,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1931,0x1131,0x0933,0x1195,0x09B7,0x11F9,0x09D9,0x01D9,0x01B9,0x01BA,0x01DA,0x01DA,0x01FA,0x01D9,0x01D9,0x01D9,0x09F9,0x09F9,0x09D8,0x11D8,0x0997,0x0136, + 0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x2130,0x210F,0x2130,0x2130,0x190F,0x1910,0x1931,0x1911,0x1910,0x1911,0x1911,0x10F1,0x1911,0x1911,0x18F1,0x1912,0x1112,0x10F2,0x10F2,0x10F2,0x10F2,0x10F2,0x1112,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1911,0x1911,0x1912,0x1111,0x1112,0x1112,0x1111,0x1111,0x1111,0x1111,0x1112,0x1112,0x1112,0x1112,0x1131,0x1111,0x1111,0x1911,0x1111,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x10F0,0x1110,0x1931,0x1911,0x1931,0x1931,0x1910,0x1930,0x1930,0x1930,0x2130,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210E,0x210E,0x210F,0x212F,0x292F,0x2130,0x2130,0x2131,0x1931,0x1932,0x1112,0x1133,0x1995,0x19D6,0x2217,0x21F7,0x19B5,0x1174,0x0912,0x1111,0x1110,0x1931,0x2131,0x2131,0x2151,0x2152,0x1931,0x1131,0x1132,0x0953,0x1174,0x19F7,0x2238,0x1A17,0x19D6,0x1175,0x1113,0x1912,0x18F1,0x2111,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x290F,0x210F,0x2910,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2930,0x212F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x2910,0x2910,0x2930,0x2930,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2930,0x2930,0x292F,0x2930,0x210F,0x2930,0x292F,0x290F,0x290F,0x212F,0x292F,0x2930,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2930,0x2930,0x210F,0x2930,0x2130,0x2130,0x2151,0x1911,0x1111,0x1132,0x1153,0x1174,0x19D6,0x2217,0x2238,0x19D6,0x1975,0x1133,0x1112,0x1911,0x1911,0x2131,0x2131,0x2110,0x2130,0x2110,0x2110,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2110,0x2130,0x2130,0x212F,0x210F,0x210F,0x2130,0x212F,0x210F,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x212F,0x210F,0x212F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x28EE,0x28EE,0x28EE,0x28CE,0x28EE,0x28AD,0x28AD,0x288D,0x28AD,0x28AD,0x28AD,0x30AD,0x28AD,0x28AC,0x288C,0x288C,0x286C,0x286C,0x204B,0x202B,0x202A,0x1809,0x1809,0x1809,0x1809,0x1809,0x2009,0x200A,0x282A,0x306B,0x5990,0x6A32,0x82B4,0x9336,0x9B77,0xABD9,0xC4BB,0xCCDC,0xD4FD,0xDD1E,0xDD1D,0xDD1D,0xE55E,0xE53E,0xE53E,0xE53D,0xE51D,0xE53D,0xE51C,0xE4FC,0xE4FC,0xE4FB,0xDCDB,0xDCDB,0xDCBA,0xDC9A,0xDC99,0xDCBA,0xDC99,0xDC99,0xDC99,0xDC99,0xDC99,0xDC99,0xDC99,0xDC99,0xDC79,0xDC79,0xDC78,0xDC99,0xDC58,0xDC58,0xDC78,0xE478,0xE478,0xE478,0xE478,0xE478,0xDC58,0xDC58,0xDC37,0xDC57,0xE458,0xE478,0xE458,0xE457,0xE458,0xE458,0xDC37,0xDC37,0xDC16,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC37,0xDC57,0xD437,0xDC37,0xDC78,0xD478,0xCC37,0xC457,0xC477,0xC4B8,0xC519,0xBD1A,0xB51A,0xAD19,0x9CD8,0x8C97,0x7C76,0x7CD7,0x8D7A,0x8DFC,0x8E3D,0x7E5D,0x7EBD,0x6EBD,0x56BD,0x469D,0x3EFD,0x371E,0x2F5E,0x275E,0x1F7E,0x179E,0x179E,0x0FBE,0x0FBF,0x0FBF,0x07BF,0x07BF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BE,0x0F9E,0x17BF,0x279E,0x377E,0x46FD,0x665C,0x7559,0xA539,0xAC56,0xCC78,0xD457,0xCBF6,0xD3F6,0xD3F6,0xCBD5,0xD437,0xCC78,0xAC17,0x83D5,0x7CF8,0x7E3C,0x565B,0x46FD,0x377E,0x1F9E,0x0FBE,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DE,0x07DE,0x07DF,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07BE,0x0F9D,0x179E,0x277E,0x36FD,0x567B,0x7DFA,0x9559,0x9415,0xABF6,0xC437,0xC3F6,0xB3B5,0x9394,0x7BF3,0x8D98,0x6E5A,0x56DA,0x373A,0x275A,0x1779,0x0F99,0x07B9,0x07B9,0x07D9,0x07D8,0x07D8,0x07D8,0x07D7,0x07D7,0x07D7,0x07D6,0x07D6,0x07D6,0x07D5,0x07D5,0x07D5,0x07D5,0x07D4,0x07D4,0x07D3,0x07D3,0x07D2,0x07D2,0x07D2,0x07D1,0x07D1,0x07D1,0x07D0,0x07D0,0x07D0,0x07D0,0x07CF,0x07CF,0x07CF,0x07CE,0x07CE,0x07CE,0x07CE,0x07CE,0x07CD,0x07AD,0x07CD,0x07CD,0x07CD,0x07CD,0x07CD,0x07AD,0x07AD,0x07AD,0x07AD,0x07AD,0x07AD,0x07AE,0x07AE,0x078F,0x076F,0x0F70,0x0F51,0x0F32,0x1774,0x1715,0x16F5,0x1ED7,0x2698,0x1E18,0x1578,0x0497,0x03D7,0x0377,0x0338,0x033A,0x033C,0x031C,0x031D,0x02FE,0x02DE,0x02BE,0x02BE,0x029E,0x029F,0x029F,0x029F,0x027F,0x027F,0x025F,0x025F,0x025F,0x023F,0x023F,0x023F,0x023F,0x021F,0x021F,0x01DF,0x01DF,0x01DF,0x01FF,0x01DF,0x01BF,0x01BF,0x01BF,0x01BF,0x019F,0x019F,0x019F,0x019F,0x019E,0x09BE,0x11BE,0x093C,0x091A,0x21FC,0x1A5B,0x01F8,0x135B,0x3D9F,0x25DF,0x1E3F,0x167F,0x173F,0x179F,0x0FDF,0x0FDF,0x0FDF,0x0FDF,0x0FBF,0x0F9F,0x17BF,0x1F7F,0x275F,0x3EFE,0x5EBE,0x863E,0x6BB6,0x69D0,0xA233,0xBA14,0xCA14,0xC9D3,0xD1B3,0xD1B4,0xD173,0xD193,0xD193,0xD1B3,0xC993,0xC9B3,0xC1D3,0xC214,0xC276,0xB276,0x608F,0x58F1,0x5172,0x4131,0x3951,0x3972,0x4192,0x3992,0x3151,0x3131,0x3131,0x3151,0x3151,0x3151,0x3130,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x292F,0x292F,0x292F,0x292F,0x212F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x2110,0x2110,0x2110,0x2130,0x2131,0x1911,0x10F2,0x1995,0x2238,0x1A18,0x11F8,0x11B7,0x0976,0x0935,0x0134,0x0935,0x0935,0x0976,0x11B7,0x1A19,0x19F8,0x11B7,0x1155,0x0934,0x0913,0x0912,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1111,0x1111,0x1111,0x1111,0x1111,0x1131,0x1131,0x1131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2930,0x2110,0x2130,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2930,0x210F,0x212F,0x212F,0x212F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x212F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x210F,0x290F,0x210F,0x212F,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2130,0x2130,0x1910,0x1911,0x1152,0x1153,0x0975,0x11B7,0x11F9,0x09D9,0x01B9,0x01BA,0x01DA,0x01DA,0x09FA,0x01DA,0x01DA,0x01B9,0x01D9,0x01D9,0x09FA,0x09D9,0x09B8,0x0198, + 0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x1910,0x1110,0x1111,0x1111,0x1111,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1133,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x0912,0x1112,0x0912,0x0912,0x1112,0x1132,0x0912,0x0912,0x0912,0x1132,0x0932,0x0932,0x0912,0x0912,0x0912,0x0912,0x1112,0x0912,0x0912,0x0912,0x0912,0x1112,0x0911,0x0911,0x1112,0x0912,0x0911,0x0911,0x08F1,0x08F1,0x08F1,0x0911,0x1111,0x1132,0x1131,0x1111,0x1911,0x1911,0x1110,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2131,0x2152,0x1912,0x1132,0x1153,0x1995,0x19D6,0x21F7,0x21F7,0x19B5,0x1174,0x1132,0x1111,0x1111,0x1911,0x2131,0x2131,0x2131,0x1951,0x1951,0x1131,0x1132,0x0953,0x1174,0x19F6,0x2217,0x19F7,0x19B6,0x1174,0x1933,0x1912,0x1911,0x2111,0x2111,0x2130,0x2130,0x2130,0x2930,0x2910,0x2910,0x2930,0x2110,0x2910,0x2910,0x2110,0x2130,0x2130,0x212F,0x292F,0x212F,0x292F,0x290F,0x212F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2910,0x2910,0x210F,0x2110,0x212F,0x212F,0x210F,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x2930,0x2930,0x2930,0x2130,0x2130,0x1931,0x1931,0x1131,0x1132,0x1153,0x1153,0x19D6,0x2217,0x2217,0x21D6,0x1975,0x1133,0x1912,0x1912,0x1911,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x2910,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2151,0x2131,0x2151,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x2130,0x2130,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x292F,0x292F,0x212F,0x210F,0x210F,0x290F,0x290F,0x28EF,0x28EE,0x290F,0x28EE,0x28EE,0x28EE,0x290E,0x28EE,0x28CE,0x28CE,0x28CE,0x28CE,0x28CE,0x28CD,0x28CE,0x20AD,0x28CE,0x28CE,0x20AD,0x20AD,0x28CE,0x28CD,0x28CD,0x20AD,0x20AD,0x20AD,0x20AD,0x20AC,0x208C,0x206C,0x206B,0x204B,0x206C,0x286C,0x204B,0x200A,0x200A,0x202A,0x284B,0x306B,0x388C,0x38AD,0x48ED,0x594F,0x69B1,0x7212,0x8AB4,0x9B36,0xAB97,0xB3F9,0xCCDB,0xD51C,0xE55E,0xE57E,0xEDBF,0xED9E,0xED7E,0xED5D,0xE53C,0xDCFB,0xE51C,0xDCDB,0xE4FB,0xDCDB,0xE4DB,0xDCBA,0xDCBA,0xDCBA,0xDC9A,0xDC9A,0xDC9A,0xDC99,0xDC79,0xDC79,0xDC79,0xDC79,0xDC99,0xDC99,0xE499,0xE499,0xDC99,0xDC79,0xDC78,0xDC78,0xDC58,0xDC78,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xE458,0xDC37,0xDC58,0xDC58,0xDC78,0xDC57,0xDC57,0xDC58,0xDC78,0xDC78,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC58,0xD437,0xD457,0xD457,0xCC58,0xCC78,0xCC78,0xCC98,0xCCB9,0xC4D9,0xC4D9,0xBCD8,0xB4D9,0xACB8,0x9456,0x8415,0x7C35,0x8D19,0xA67D,0x9F1F,0x7EBE,0x6E9D,0x569D,0x56FD,0x471D,0x3F3E,0x2F5E,0x275D,0x1F5D,0x1F7E,0x179E,0x17BF,0x0FBF,0x0FBE,0x0FBF,0x07BF,0x0FDF,0x0FBF,0x0FBF,0x0F9E,0x179E,0x277E,0x373E,0x4EBD,0x65DB,0x8539,0x9456,0xBC98,0xCC78,0xCBF6,0xD416,0xDBF6,0xD3D6,0xDBF6,0xDC57,0xCC37,0xC458,0x9C37,0x7436,0x757A,0x663C,0x4EBC,0x3F5E,0x277E,0x17BF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07FF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DE,0x07DE,0x07DE,0x07BE,0x0F9E,0x179D,0x279E,0x371D,0x4E7C,0x761B,0x9579,0x93F5,0xABF5,0xBC16,0xC3F6,0xBBD5,0xA394,0x8BD4,0x84D6,0x867B,0x5EBA,0x3F1A,0x275A,0x177A,0x0F9A,0x07B9,0x07B9,0x07D9,0x07D9,0x07D9,0x07D9,0x07D8,0x07D8,0x07D8,0x07D7,0x07D7,0x07D7,0x07D6,0x07D6,0x07D6,0x07D5,0x07D5,0x07D5,0x07D4,0x07D4,0x07D3,0x07D3,0x07D3,0x07D3,0x07D2,0x07D2,0x07D2,0x07D1,0x07D1,0x07D1,0x07D1,0x07D0,0x07D0,0x07D0,0x07D0,0x07CF,0x07CF,0x07CF,0x07CF,0x07CF,0x07CF,0x07CE,0x07CE,0x07CE,0x07CE,0x07CE,0x07CE,0x07CE,0x07CE,0x07AE,0x07CE,0x07AE,0x07AF,0x07AF,0x078F,0x0790,0x0770,0x0F71,0x0F52,0x0F53,0x1754,0x1735,0x1EF6,0x1EB7,0x2699,0x265A,0x1D9A,0x0478,0x03B7,0x0358,0x0339,0x033B,0x031C,0x02FD,0x02FE,0x02BD,0x029E,0x02BE,0x029E,0x029F,0x027F,0x027F,0x027F,0x025F,0x025F,0x023F,0x023F,0x023F,0x021F,0x021F,0x021F,0x01FF,0x01FF,0x01DF,0x01DF,0x01DF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x019F,0x019F,0x099F,0x099E,0x119D,0x113C,0x193B,0x42BF,0x3ADD,0x2ABB,0x0258,0x3CFF,0x35BF,0x261F,0x165F,0x0EBE,0x175F,0x17BF,0x0FBF,0x07DF,0x07DF,0x07BF,0x07BF,0x0F9F,0x179F,0x279F,0x2F1E,0x46BE,0x769F,0x8D5B,0x5A31,0x9253,0xB234,0xC214,0xC9D3,0xD1B3,0xD193,0xD1B3,0xD193,0xD1B3,0xD1B3,0xC9B3,0xC9D3,0xC9D4,0xC214,0xC235,0xBA96,0x8993,0x58B0,0x5931,0x4951,0x4152,0x3951,0x3971,0x3992,0x3151,0x3131,0x3151,0x3151,0x3151,0x3131,0x3151,0x3130,0x2930,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x212F,0x292F,0x212F,0x212F,0x210F,0x210F,0x2910,0x2910,0x2930,0x2910,0x2110,0x2130,0x2130,0x1911,0x1911,0x10F2,0x1196,0x1A18,0x1A18,0x11B7,0x0976,0x0955,0x0935,0x0114,0x0934,0x0114,0x0135,0x0976,0x11D8,0x11D8,0x0997,0x0956,0x0955,0x0934,0x0933,0x1153,0x1133,0x1133,0x1133,0x1132,0x1132,0x1112,0x1112,0x1132,0x1112,0x1111,0x1132,0x1131,0x1131,0x1132,0x1132,0x1111,0x1112,0x1112,0x1112,0x1932,0x1932,0x1932,0x1931,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x290F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x2930,0x2130,0x210F,0x2130,0x2110,0x2110,0x2130,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x210F,0x212F,0x210F,0x2130,0x2110,0x210F,0x2130,0x212F,0x212F,0x212F,0x2930,0x290F,0x212F,0x212F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x2930,0x290F,0x212F,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x2130,0x210F,0x210F,0x210F,0x290F,0x212F,0x2930,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x292F,0x2930,0x2130,0x2130,0x2130,0x1931,0x1111,0x1132,0x0933,0x0975,0x11D7,0x11F9,0x09D9,0x01B9,0x01D9,0x01FA,0x01DA,0x01BA,0x01B9,0x01DA,0x01D9,0x01DA,0x01F9,0x01D9,0x01D9,0x01B9, + 0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2130,0x1910,0x1931,0x1131,0x1152,0x1973,0x1974,0x1994,0x1994,0x1994,0x1995,0x1994,0x1974,0x1974,0x1974,0x1974,0x1975,0x1975,0x1975,0x1995,0x1995,0x1974,0x1974,0x1994,0x1995,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1974,0x1974,0x1974,0x1974,0x1974,0x1994,0x1974,0x1974,0x1974,0x1973,0x1974,0x1973,0x1973,0x1974,0x1973,0x1974,0x1974,0x1974,0x1994,0x1974,0x1974,0x1974,0x1994,0x1974,0x1974,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1974,0x1994,0x1994,0x1994,0x1994,0x19B4,0x1994,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x21D5,0x19D5,0x19B4,0x21D5,0x21B5,0x19B4,0x1994,0x1973,0x1952,0x1132,0x1111,0x1932,0x1911,0x1911,0x2131,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2151,0x2172,0x1932,0x1112,0x1132,0x1133,0x1995,0x19D6,0x21F7,0x19F7,0x19D5,0x1174,0x1132,0x1111,0x1911,0x1931,0x1911,0x1931,0x2151,0x1951,0x1931,0x1131,0x1132,0x0933,0x1195,0x19F7,0x19F7,0x19F7,0x19B6,0x1154,0x1953,0x1912,0x1911,0x2131,0x1910,0x2110,0x2110,0x2130,0x2110,0x2110,0x2930,0x2930,0x2930,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2910,0x290F,0x210F,0x2930,0x212F,0x210F,0x290F,0x290F,0x292F,0x212F,0x2930,0x2930,0x290F,0x210F,0x2930,0x290F,0x2930,0x292F,0x2930,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1131,0x1132,0x1153,0x1174,0x19D6,0x21F7,0x2217,0x19D6,0x1995,0x1933,0x1112,0x18F1,0x18F1,0x2111,0x2110,0x2130,0x2130,0x2950,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x212F,0x2930,0x292F,0x292F,0x290F,0x290F,0x2930,0x2910,0x2930,0x2930,0x2930,0x2110,0x2131,0x2111,0x2131,0x2131,0x1931,0x1931,0x2152,0x2131,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x28EE,0x28EF,0x28EE,0x28EE,0x28EE,0x28EE,0x28EE,0x28EE,0x20CE,0x20CE,0x20EE,0x20CE,0x20EE,0x20CE,0x20CE,0x20CE,0x20CE,0x20AD,0x20AD,0x20AD,0x28CE,0x28CE,0x30EE,0x30CD,0x30EE,0x30CD,0x28AD,0x288C,0x288C,0x286C,0x284B,0x284B,0x202A,0x200A,0x2009,0x2009,0x2009,0x2009,0x2009,0x2829,0x388B,0x48EC,0x596E,0x69F0,0x8293,0x9315,0xABD7,0xBC19,0xC45A,0xCC7A,0xCC9B,0xD4DC,0xD4DB,0xD4FC,0xDCFC,0xDD1C,0xE51D,0xE51D,0xE53D,0xED5D,0xED3C,0xED3C,0xE51C,0xE4FC,0xE4DB,0xDCDB,0xE4DB,0xDCBA,0xDCBA,0xDCBA,0xDC99,0xDC79,0xDC79,0xDC99,0xDC79,0xDC79,0xDC79,0xDC79,0xDC79,0xDC59,0xDC78,0xE479,0xDC58,0xDC58,0xDC78,0xDC78,0xDC58,0xD458,0xD438,0xDC58,0xDC58,0xDC78,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC78,0xD458,0xD458,0xD458,0xD458,0xCC57,0xD458,0xCC57,0xCC78,0xCC78,0xC477,0xC4B8,0xC4D8,0xC4F9,0xB4D8,0x9456,0x6B93,0x5B93,0x74D8,0x861C,0x86BE,0x76BE,0x6EFE,0x5EFD,0x573E,0x473D,0x3F3D,0x2F3D,0x275D,0x1F7E,0x179E,0x179E,0x0FBE,0x0FBF,0x0F9E,0x0F9E,0x0F9E,0x179E,0x1F9F,0x2F5E,0x471E,0x569C,0x6DBA,0x84D8,0x9C36,0xBC37,0xCC37,0xD416,0xDC16,0xDBF6,0xD3B6,0xDBF7,0xD3F6,0xD437,0xCC78,0xBCB9,0x8C36,0x74B7,0x761C,0x5EBD,0x3EFD,0x275E,0x1F9F,0x0FBF,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07DE,0x07DF,0x07DF,0x07DE,0x07DE,0x07BE,0x0F9E,0x179E,0x277E,0x36FD,0x4E7C,0x763B,0x957A,0x8BF5,0xABD5,0xBBF6,0xC3D6,0xC3D6,0xB3B5,0x9394,0x7C14,0x8E3B,0x6EBB,0x46FB,0x2F3B,0x175A,0x0F7A,0x07BA,0x07BA,0x07DA,0x07FA,0x07DA,0x07D9,0x07D9,0x07D9,0x07F9,0x07F8,0x07F8,0x07D8,0x07D7,0x07D7,0x07D7,0x07F7,0x07D6,0x07D6,0x07D5,0x07F5,0x07D5,0x07D4,0x07D4,0x07D4,0x07D3,0x07D3,0x07F3,0x07D3,0x07D2,0x07D2,0x07F2,0x07F2,0x07F2,0x07F1,0x07F1,0x07F1,0x07D1,0x07D0,0x07D0,0x07D0,0x07D0,0x07D0,0x07D0,0x07D0,0x07CF,0x07CF,0x07CF,0x07CF,0x07CF,0x07CF,0x07CF,0x07AF,0x07AF,0x07D0,0x07B0,0x07B0,0x0790,0x0791,0x0771,0x0F72,0x0773,0x0F54,0x1755,0x1716,0x16D7,0x1EB8,0x269A,0x263B,0x1D9B,0x0499,0x03B8,0x0359,0x031A,0x02FB,0x02BC,0x02BD,0x02BE,0x029E,0x029E,0x029E,0x027E,0x027F,0x027F,0x027F,0x025F,0x023F,0x023F,0x021F,0x01FF,0x021F,0x01FF,0x01FF,0x01FF,0x01FF,0x01DF,0x01DF,0x01BF,0x01BF,0x019F,0x01BF,0x019F,0x019F,0x01BF,0x019F,0x019F,0x099F,0x099E,0x119D,0x193C,0x215C,0x5AFF,0x52DD,0x4B3D,0x1A38,0x237A,0x3D5F,0x2DFF,0x1E1F,0x169F,0x173F,0x17BF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07BF,0x079F,0x0F9F,0x179F,0x273E,0x3EFE,0x66BF,0x8E3E,0x6355,0x7A73,0xA233,0xC254,0xC1F3,0xC9B3,0xD1B3,0xD193,0xD193,0xD193,0xD1B3,0xD1B3,0xC993,0xC193,0xC1D4,0xC214,0xC276,0xAA56,0x68B0,0x50D0,0x5152,0x4151,0x4152,0x3972,0x3972,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3131,0x3130,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x292F,0x2930,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2910,0x2930,0x2110,0x2130,0x2131,0x18F1,0x10F2,0x19B6,0x1A19,0x11D8,0x0997,0x0955,0x0955,0x0955,0x0955,0x0934,0x0934,0x0935,0x0956,0x11F8,0x11D8,0x0997,0x0997,0x1196,0x1195,0x1195,0x1995,0x1995,0x1995,0x1995,0x1994,0x1994,0x1994,0x1994,0x1994,0x19B4,0x19B4,0x19B4,0x19B4,0x19B4,0x1994,0x1994,0x1994,0x1994,0x1954,0x1954,0x1133,0x1113,0x10F2,0x1912,0x1932,0x1931,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2110,0x2110,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x210F,0x2130,0x212F,0x212F,0x290F,0x290F,0x2930,0x212F,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x210F,0x212F,0x212F,0x2930,0x290F,0x212F,0x212F,0x2130,0x2930,0x2930,0x2930,0x2130,0x2930,0x2130,0x2930,0x2930,0x290F,0x212F,0x212F,0x290F,0x290F,0x212F,0x212F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2130,0x2130,0x2130,0x1931,0x1931,0x1112,0x0933,0x0975,0x11D7,0x09D8,0x09D9,0x09FA,0x01FA,0x01DA,0x01BA,0x01DA,0x01B9,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x01D9, + 0x2110,0x2110,0x2130,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x292F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1930,0x1931,0x1952,0x1973,0x19B4,0x19B5,0x21D6,0x21F6,0x21F6,0x21F7,0x21F6,0x21F6,0x29F7,0x29F6,0x29F7,0x29F7,0x29F6,0x29F7,0x2A17,0x29F7,0x2A17,0x2A17,0x2A17,0x29F6,0x2A17,0x2A37,0x29F6,0x2A16,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A16,0x2A37,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A16,0x2A16,0x2A16,0x2A16,0x2A16,0x2A16,0x2A16,0x2A16,0x2A16,0x2A16,0x2A16,0x2A16,0x2A16,0x2A17,0x2A17,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A17,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x3237,0x3257,0x2A37,0x3237,0x3237,0x3257,0x2A37,0x3257,0x2A37,0x2A37,0x2A16,0x2A17,0x2A37,0x2A37,0x2A57,0x2A37,0x2A17,0x2A17,0x2A16,0x29F6,0x21D6,0x21B5,0x1953,0x1132,0x1912,0x1912,0x1911,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x292F,0x2130,0x2130,0x2151,0x2172,0x1931,0x1911,0x1112,0x1133,0x1174,0x19D6,0x2217,0x19F7,0x19D6,0x1174,0x1153,0x1111,0x1931,0x1931,0x1911,0x2152,0x2151,0x2151,0x1931,0x1111,0x1132,0x0953,0x1194,0x19F7,0x2218,0x2217,0x19B6,0x1154,0x1933,0x1932,0x1931,0x2131,0x2110,0x2110,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x210F,0x2130,0x210F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x210F,0x290F,0x2910,0x2930,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x290F,0x290F,0x210F,0x2930,0x292F,0x212F,0x210F,0x292F,0x292F,0x292F,0x212F,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x292F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1153,0x1154,0x19D5,0x2217,0x21F7,0x21D7,0x1975,0x1133,0x1932,0x1911,0x1911,0x18F0,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x212F,0x292F,0x212F,0x292F,0x290F,0x290F,0x2930,0x2930,0x2910,0x2930,0x2930,0x2910,0x2110,0x2131,0x2111,0x1911,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1952,0x1932,0x2132,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x290F,0x20EF,0x20EF,0x210F,0x210F,0x290F,0x20EF,0x20EE,0x20EE,0x20EE,0x20EE,0x28EE,0x28EE,0x28CE,0x28CE,0x28EE,0x28EE,0x28EE,0x28CE,0x28CE,0x28CD,0x28CD,0x28CD,0x28AD,0x28CD,0x28CD,0x288C,0x28AC,0x208C,0x288B,0x288B,0x204B,0x204A,0x284A,0x202A,0x282A,0x282A,0x282A,0x282A,0x282A,0x282A,0x302A,0x304B,0x388B,0x388B,0x386B,0x388B,0x388B,0x48ED,0x512E,0x596F,0x69D0,0x7211,0x8272,0x92F4,0xA356,0xABB7,0xC47A,0xCCBB,0xDCFC,0xE53D,0xE55D,0xED7E,0xED7E,0xED5D,0xED3D,0xE51C,0xDCDB,0xDCBA,0xD49A,0xD47A,0xD47A,0xDC7A,0xDC7A,0xDC7A,0xDC79,0xDC79,0xDC79,0xDC99,0xDC79,0xDC79,0xDC79,0xDC79,0xDC58,0xDC58,0xDC58,0xDC78,0xDC58,0xDC58,0xDC58,0xDC58,0xDC78,0xDC78,0xDC58,0xD458,0xDC58,0xD437,0xD458,0xD457,0xD457,0xD457,0xD457,0xD477,0xCC77,0xCC97,0xC4B8,0xBCB8,0xBCF9,0xACF9,0x94B7,0x7C76,0x6C56,0x6CD7,0x75BA,0x7E5C,0x76BD,0x66DD,0x5EFD,0x575E,0x473E,0x375E,0x2F5E,0x277E,0x177E,0x179F,0x179E,0x0F9E,0x179E,0x177E,0x1F5E,0x2F3E,0x471E,0x5E5C,0x7DDB,0x8477,0xA436,0xC437,0xCBF6,0xD3F6,0xDBF6,0xDBD6,0xD3B6,0xDBB6,0xDBF6,0xDC37,0xCC37,0xC4B9,0x9457,0x7497,0x7E1C,0x5E9D,0x3EFD,0x2F5E,0x1F9F,0x0F9F,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07BE,0x0F9E,0x179E,0x277E,0x3F1E,0x4E7C,0x763B,0x8D7A,0x9415,0xABD5,0xBBD5,0xC3D6,0xC3D6,0xBBD6,0xA3B5,0x7B93,0x8D99,0x7EBC,0x4EDB,0x2F3B,0x1F7B,0x0F9B,0x0FBB,0x07DB,0x07DB,0x07DB,0x07DA,0x07DA,0x07DA,0x07DA,0x07D9,0x07F9,0x07D9,0x07D8,0x07F8,0x07F8,0x07D8,0x07D7,0x07D7,0x07D7,0x07D6,0x07D6,0x07D6,0x07D5,0x07D5,0x07D5,0x07D4,0x07D4,0x07D4,0x07D4,0x07D4,0x07D4,0x07D3,0x07F3,0x07F3,0x07F3,0x07F3,0x07F2,0x07D2,0x07F2,0x07D2,0x07D1,0x07D1,0x07D1,0x07D1,0x07F1,0x07D1,0x07D1,0x07D1,0x07D1,0x07D1,0x07D1,0x07B0,0x07B0,0x07D0,0x07D1,0x07D1,0x07B1,0x07B1,0x07B1,0x07B2,0x0792,0x0793,0x0773,0x0F54,0x0F35,0x0F16,0x16F6,0x16B8,0x1E99,0x1E5A,0x1DFB,0x1D3B,0x0C3A,0x0379,0x031A,0x02FB,0x02DC,0x02BD,0x029D,0x029E,0x027E,0x027F,0x027F,0x025F,0x025F,0x025F,0x023F,0x023F,0x021F,0x021F,0x01FF,0x01FF,0x01FF,0x01FF,0x01FF,0x01FF,0x01DF,0x01DF,0x01BF,0x01BF,0x019F,0x019F,0x019F,0x019F,0x01BF,0x019F,0x097E,0x117E,0x199E,0x191C,0x293B,0x5ABF,0x5ABD,0x5B1D,0x3A9A,0x1216,0x3C7E,0x357F,0x1DDE,0x165F,0x16FF,0x177F,0x0FBF,0x07BF,0x07BF,0x07DF,0x07BF,0x079F,0x0F9F,0x179F,0x279F,0x371E,0x56DE,0x86BF,0x853B,0x72D4,0x8A32,0xAA33,0xC213,0xC9D3,0xC9B3,0xD1D4,0xD1B3,0xD193,0xD193,0xD1B3,0xC9B3,0xC9B3,0xC1B3,0xC1D4,0xC235,0xBA56,0x8993,0x58AF,0x5952,0x4952,0x4152,0x3951,0x3951,0x3992,0x3971,0x3151,0x3971,0x3151,0x3131,0x3151,0x3131,0x3151,0x3130,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x1931,0x1911,0x08F2,0x19D7,0x19F8,0x11D8,0x0997,0x0956,0x0955,0x0955,0x0955,0x0934,0x0134,0x0955,0x0976,0x11D8,0x11F8,0x11D8,0x11D8,0x11F7,0x1A18,0x2238,0x2238,0x2A38,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x3257,0x3278,0x3277,0x3277,0x2A37,0x2A37,0x2A37,0x2A37,0x2A17,0x2A17,0x2A17,0x29F7,0x21B6,0x2195,0x1134,0x1113,0x1932,0x1932,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x2930,0x212F,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x292F,0x290F,0x290F,0x290F,0x2910,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x210F,0x2130,0x212F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x292F,0x2930,0x2130,0x2930,0x2130,0x2130,0x1910,0x1911,0x1132,0x1153,0x1195,0x11D7,0x09F8,0x01D9,0x09F9,0x01D9,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA, + 0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1951,0x1932,0x1153,0x19B4,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x29D6,0x2A17,0x29F6,0x29F7,0x2A17,0x29F6,0x29F6,0x29F6,0x29F6,0x29F6,0x29F6,0x29F6,0x29F6,0x29F6,0x29F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21D6,0x21F6,0x2216,0x21F6,0x21F6,0x21F6,0x21D6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21D6,0x21D6,0x21D6,0x21F6,0x21D6,0x21D6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F5,0x21F6,0x21F6,0x21F6,0x21D6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21D6,0x21F6,0x21F6,0x21D6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21D6,0x21D6,0x21F6,0x21D6,0x21D6,0x21D6,0x21F6,0x21F6,0x21D6,0x21D6,0x21F6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21F6,0x29F6,0x29F6,0x29F7,0x21D6,0x21D6,0x21F6,0x21F6,0x21F6,0x29F6,0x21F6,0x2A17,0x2217,0x2217,0x21D6,0x1974,0x1133,0x1112,0x1912,0x1932,0x1931,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x212F,0x2130,0x2130,0x2971,0x2152,0x1931,0x1111,0x1111,0x1153,0x1195,0x19F6,0x2217,0x1A17,0x19B6,0x1174,0x1153,0x1112,0x1932,0x1911,0x1911,0x1931,0x2151,0x2172,0x1931,0x1131,0x1112,0x0933,0x19B5,0x19F7,0x2238,0x2218,0x1996,0x1154,0x1953,0x1932,0x2132,0x2131,0x2131,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2130,0x2130,0x2110,0x210F,0x2930,0x2930,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x210F,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x2910,0x290F,0x290F,0x210F,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x292F,0x292F,0x212F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x1931,0x1931,0x1952,0x1973,0x1174,0x19B5,0x21F6,0x21F7,0x21D6,0x1975,0x1113,0x1112,0x1932,0x2131,0x2131,0x2110,0x20F0,0x2110,0x2110,0x2930,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x1931,0x1932,0x1932,0x1133,0x1133,0x1133,0x1134,0x1134,0x1134,0x1133,0x1912,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x212F,0x2930,0x2930,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x20EF,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x290F,0x290F,0x20EE,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x310F,0x28EE,0x28EE,0x28EE,0x28EE,0x290E,0x290E,0x310F,0x28EE,0x28CE,0x28CD,0x28EE,0x28AD,0x28EE,0x28CD,0x28CD,0x20AD,0x28CD,0x28AC,0x28CD,0x28CD,0x30CD,0x28AC,0x30AD,0x28AD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30EE,0x30CD,0x288C,0x28AC,0x288C,0x288C,0x286C,0x204B,0x202A,0x200A,0x1809,0x1809,0x2009,0x2009,0x2009,0x282A,0x304B,0x40CD,0x512E,0x7211,0x7A73,0x9316,0xA398,0xB3F9,0xC47B,0xCCBC,0xDCFD,0xE51E,0xE51E,0xED3E,0xED5E,0xED1D,0xED1D,0xED1D,0xE4DC,0xDCDB,0xDCBB,0xDC9A,0xDC79,0xDC79,0xDC79,0xDC59,0xDC79,0xDC58,0xDC58,0xDC58,0xE478,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xD458,0xDC58,0xD457,0xDC78,0xD458,0xD457,0xD477,0xCC57,0xCC77,0xC498,0xBCB8,0xBCF9,0xB4F9,0xAD19,0x9CB7,0x8435,0x7455,0x7D18,0x7DFB,0x7E7D,0x6E9D,0x66DD,0x56FD,0x46FD,0x373E,0x2F5E,0x1F5E,0x1F7E,0x177E,0x177E,0x1F5E,0x273E,0x371D,0x4EFD,0x5E7C,0x861C,0x8CB7,0xA456,0xC436,0xD457,0xDBF6,0xD3D6,0xD3B6,0xDBB6,0xDBD6,0xD3B6,0xD3F7,0xCC17,0xB3F6,0x9C57,0x7CB8,0x7DFB,0x669D,0x3EDD,0x2F5E,0x1F9F,0x0FBF,0x07BF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BE,0x07BF,0x0FBE,0x179E,0x277E,0x3F1E,0x569D,0x763C,0x8D59,0x8BF5,0xABD5,0xB3B5,0xC3B5,0xCBF6,0xC3D6,0xB3B5,0x8B73,0x84D7,0x869C,0x56BC,0x373C,0x1F7C,0x0F9C,0x0FBC,0x07BC,0x07DB,0x07DB,0x07FB,0x07FB,0x07DB,0x07DA,0x07DA,0x07FA,0x07FA,0x07D9,0x07D9,0x07D9,0x07D9,0x07D8,0x07D8,0x07D8,0x07D7,0x07D7,0x07D7,0x07D6,0x07D6,0x07D6,0x07D5,0x07D6,0x07D5,0x07D5,0x07D5,0x07D5,0x07D5,0x07D5,0x07D4,0x07D4,0x07F4,0x07D4,0x07D4,0x07D3,0x07D3,0x07F3,0x07D3,0x07D3,0x07F3,0x07F3,0x07D2,0x07D2,0x07D2,0x07D2,0x07D2,0x07D2,0x07B2,0x07B1,0x07D1,0x07D1,0x07D2,0x07D2,0x07D2,0x07D2,0x07D2,0x07B3,0x07B3,0x0794,0x0774,0x0754,0x0F35,0x0F36,0x0EF7,0x16D8,0x1699,0x1E7A,0x1DDA,0x1D7B,0x1CFC,0x0C1B,0x035A,0x02DA,0x02DC,0x02BD,0x029D,0x029E,0x025E,0x023E,0x023E,0x025F,0x023F,0x023F,0x023F,0x021F,0x021F,0x021F,0x01DF,0x01FF,0x01DF,0x01FF,0x01DF,0x01DF,0x021F,0x01DF,0x01DF,0x01BF,0x019F,0x019F,0x019F,0x019F,0x017E,0x097E,0x117D,0x197D,0x213C,0x20FA,0x629F,0x627C,0x62DC,0x5AFC,0x21F7,0x1AF9,0x2CDE,0x1D7E,0x15FE,0x1EDF,0x0F1F,0x0F9F,0x07BF,0x07BF,0x07DF,0x07BF,0x07BF,0x07BF,0x0F9F,0x1F9F,0x273E,0x3EDE,0x6EDF,0x969F,0x7BF7,0x7232,0xA233,0xBA13,0xC1B2,0xC9B3,0xD1D4,0xD1B4,0xD1B3,0xD193,0xD193,0xD1D4,0xC993,0xC9B3,0xC1B3,0xC1F4,0xBA35,0xB256,0x60AF,0x50D0,0x5152,0x4952,0x3931,0x3951,0x3972,0x3971,0x3971,0x3951,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2130,0x1911,0x1912,0x1133,0x19D7,0x19F8,0x11D8,0x11B8,0x0956,0x0955,0x0935,0x0955,0x0155,0x0155,0x0976,0x11D7,0x09D8,0x09D8,0x11D8,0x11D7,0x11D7,0x19F7,0x1A17,0x2217,0x21F7,0x2217,0x21F6,0x21F6,0x29F6,0x21F6,0x2A16,0x2A16,0x2216,0x21F6,0x21D5,0x21F5,0x21F6,0x21F6,0x21F6,0x2217,0x2A17,0x2A17,0x2A17,0x21F7,0x21B6,0x21B6,0x1975,0x1134,0x1953,0x1932,0x2132,0x2131,0x2130,0x2151,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x290F,0x2930,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x290F,0x290F,0x210F,0x290F,0x212F,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x292F,0x290F,0x212F,0x210F,0x2930,0x290F,0x210F,0x2110,0x2110,0x2110,0x2910,0x2930,0x290F,0x290F,0x2130,0x2130,0x212F,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x2110,0x210F,0x212F,0x2930,0x2930,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x290F,0x290F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2910,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2930,0x210F,0x290F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x1910,0x1111,0x1132,0x1153,0x11B6,0x11F8,0x11F8,0x09B8,0x01B8,0x01B9,0x01B9,0x01FA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA, + 0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x212F,0x212F,0x292F,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1953,0x1974,0x11B5,0x19D6,0x19D6,0x19D6,0x19D6,0x19D6,0x19B5,0x19B5,0x19B5,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x1994,0x1994,0x1994,0x1974,0x1974,0x1974,0x1974,0x1974,0x2195,0x1974,0x1974,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1995,0x1994,0x1994,0x1994,0x1974,0x1995,0x1974,0x1995,0x1974,0x1974,0x1994,0x1974,0x1974,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1994,0x1974,0x1974,0x1994,0x1994,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1994,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1154,0x1974,0x1974,0x1974,0x1954,0x1954,0x1974,0x1954,0x1974,0x1974,0x1974,0x1974,0x1974,0x1954,0x1974,0x1974,0x1974,0x1974,0x1954,0x1954,0x1954,0x1995,0x19B5,0x21F7,0x2218,0x2217,0x21F7,0x1995,0x1133,0x1133,0x1932,0x1932,0x2131,0x2111,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x292F,0x212F,0x2110,0x2130,0x2130,0x1931,0x1911,0x1931,0x1132,0x1153,0x11B5,0x19D6,0x19F7,0x19F7,0x19D6,0x1174,0x1133,0x1932,0x1932,0x1911,0x1931,0x2151,0x2151,0x1931,0x1931,0x1131,0x1152,0x1173,0x11B5,0x19D6,0x19F7,0x2217,0x1995,0x1974,0x1953,0x1932,0x1911,0x2111,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x212F,0x292F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x290F,0x2930,0x2910,0x2910,0x210F,0x290F,0x2910,0x2930,0x290F,0x210F,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x2930,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x210F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1132,0x1153,0x1174,0x1995,0x21F7,0x21F7,0x21F7,0x1975,0x1133,0x1112,0x1912,0x1911,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2110,0x2910,0x2930,0x2910,0x2910,0x2110,0x2110,0x2111,0x1911,0x1932,0x1973,0x1994,0x1175,0x1195,0x1196,0x1196,0x11B7,0x19B7,0x1175,0x1134,0x1112,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x290F,0x2910,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2910,0x2930,0x2910,0x2110,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x292F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x20EF,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x292F,0x290F,0x210E,0x20EE,0x20EE,0x28EE,0x290E,0x290F,0x290F,0x290E,0x28EE,0x28CE,0x28EE,0x28EE,0x290F,0x290E,0x28EE,0x28EE,0x28CE,0x28EE,0x28EE,0x28EE,0x28EE,0x28EE,0x28EE,0x28CE,0x28EE,0x20CD,0x28CE,0x28CE,0x28CE,0x28CE,0x28CE,0x20CE,0x28CE,0x28CE,0x20CE,0x20CE,0x28CE,0x28CD,0x28CE,0x28CD,0x28CD,0x28AD,0x288C,0x288C,0x288C,0x286C,0x284C,0x284B,0x284B,0x284B,0x304B,0x304B,0x306C,0x306C,0x388D,0x40AD,0x48EE,0x512F,0x69B1,0x71F2,0x8A94,0x9B16,0xB3D9,0xC45A,0xDCFD,0xED5E,0xED5E,0xED5E,0xE51C,0xDCBB,0xDC9A,0xDC7A,0xDC79,0xDC79,0xDC79,0xE479,0xDC79,0xDC58,0xDC79,0xDC79,0xDC79,0xDC58,0xDC58,0xDC58,0xDC58,0xDC78,0xDC58,0xDC57,0xDC57,0xD457,0xD458,0xD457,0xCC77,0xCC77,0xCC98,0xC498,0xC4D8,0xC4F9,0xBCF9,0xACB8,0x9476,0x7415,0x6C76,0x7539,0x7E3C,0x769D,0x66FE,0x571E,0x3EFD,0x3F5E,0x2F3E,0x275E,0x275E,0x273E,0x2F3E,0x3EFD,0x4EDD,0x669D,0x7DBA,0x8CD7,0xAC97,0xC457,0xCC16,0xDC17,0xDBF6,0xD3B6,0xDBD6,0xDBD7,0xDBD7,0xD3F7,0xCC17,0xB417,0x9C78,0x84D8,0x7DFB,0x66BD,0x46FD,0x273E,0x177F,0x0F9F,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x0FBF,0x179F,0x277E,0x3F1E,0x569D,0x763C,0x8D39,0x9415,0xA3B5,0xB395,0xC3B5,0xC3B6,0xCBD6,0xBBD5,0x9B94,0x73F4,0x8E5C,0x5EBC,0x371C,0x275C,0x179C,0x0FBC,0x07DC,0x07DC,0x07FC,0x07DC,0x07FC,0x07DB,0x07DB,0x07DB,0x07FB,0x07FB,0x07DA,0x07DA,0x07DA,0x07DA,0x07D9,0x07D9,0x07D9,0x07D8,0x07D8,0x07D8,0x07D7,0x07D7,0x07D7,0x07D7,0x07D7,0x07D6,0x07D6,0x07D6,0x07D6,0x07D6,0x07D6,0x07D6,0x07D6,0x07D5,0x07D5,0x07D5,0x07D5,0x07D5,0x07F4,0x07F4,0x07F4,0x07F4,0x07F4,0x07D4,0x07D4,0x07D3,0x07D3,0x07D4,0x07D4,0x07B3,0x07B3,0x07D3,0x07D3,0x07D3,0x07D3,0x07D3,0x07D3,0x07D3,0x07D3,0x07B4,0x07B4,0x0794,0x0775,0x0755,0x0736,0x0F36,0x0EF7,0x16D8,0x1698,0x1E7A,0x261B,0x1D5A,0x24FB,0x1C5C,0x0B7A,0x02FA,0x02BC,0x029C,0x027D,0x025E,0x023E,0x025E,0x023E,0x023F,0x023F,0x023F,0x023F,0x021F,0x01FF,0x01FF,0x01FF,0x01FF,0x01FF,0x01DF,0x01DF,0x01DF,0x01DF,0x01DF,0x01BF,0x01BF,0x019F,0x019F,0x017E,0x017E,0x095E,0x119E,0x195D,0x211B,0x28FA,0x5A3D,0x6A7D,0x623A,0x6ADC,0x4238,0x11B5,0x347D,0x1CFD,0x159E,0x165F,0x171F,0x0F7F,0x0FBF,0x07BF,0x07BF,0x07DF,0x07BF,0x07BF,0x0F9F,0x179F,0x277F,0x36FE,0x4E9D,0x8F1F,0x7CFA,0x6AD3,0x8A12,0xB233,0xC1D3,0xC9B3,0xD1B3,0xD1B4,0xD1B3,0xD193,0xD193,0xD1B3,0xC993,0xC993,0xC9D4,0xC1D4,0xC214,0xBA56,0x89B4,0x58AF,0x5131,0x4952,0x4151,0x3951,0x3971,0x3971,0x3951,0x3971,0x3151,0x3971,0x3151,0x3151,0x3131,0x3151,0x3150,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x2110,0x2130,0x1931,0x1912,0x1113,0x1196,0x1A18,0x19F9,0x11D8,0x0996,0x0976,0x0155,0x0155,0x0155,0x0975,0x0996,0x09B7,0x09D8,0x11F8,0x11F8,0x11D7,0x11D6,0x11B6,0x1195,0x1195,0x1195,0x1174,0x1974,0x1974,0x1974,0x1974,0x1974,0x1173,0x1173,0x1173,0x1173,0x1173,0x1174,0x1173,0x1174,0x1174,0x1975,0x19B5,0x21F7,0x21F7,0x21F7,0x21F7,0x19B6,0x1995,0x1154,0x1953,0x1932,0x1932,0x2131,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x212F,0x2130,0x212F,0x210F,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2930,0x2930,0x212F,0x2930,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x292F,0x212F,0x212F,0x2930,0x210F,0x212F,0x2130,0x2110,0x2110,0x2110,0x290F,0x2930,0x210F,0x2930,0x2130,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2930,0x2910,0x212F,0x212F,0x212F,0x212F,0x2930,0x290F,0x2930,0x212F,0x2930,0x212F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x210F,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2930,0x290F,0x2910,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x1930,0x1910,0x1931,0x1132,0x1133,0x1196,0x11D7,0x09B8,0x09D8,0x09D9,0x01D9,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA, + 0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2130,0x2130,0x2130,0x1910,0x1911,0x1931,0x1932,0x1953,0x1154,0x1174,0x19B5,0x19D6,0x19B6,0x19B5,0x1995,0x1174,0x1153,0x1153,0x1133,0x1132,0x1133,0x1132,0x1133,0x1133,0x1132,0x1132,0x1133,0x1132,0x1132,0x1133,0x1132,0x1112,0x1132,0x1133,0x1132,0x1932,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1132,0x1133,0x1133,0x1933,0x1133,0x1133,0x1133,0x1132,0x1133,0x1132,0x1153,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1132,0x1132,0x1112,0x1132,0x1132,0x1132,0x1132,0x1933,0x1132,0x1132,0x1112,0x1132,0x1132,0x1112,0x1112,0x1933,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x10F2,0x1112,0x1112,0x1112,0x1933,0x1133,0x1933,0x1133,0x1113,0x1154,0x19B6,0x2217,0x21F7,0x21F7,0x19B6,0x1154,0x1113,0x1912,0x1932,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2130,0x2151,0x1951,0x1132,0x1153,0x1153,0x1195,0x19D6,0x19F7,0x19F7,0x19D6,0x1175,0x1113,0x1132,0x1932,0x1931,0x1911,0x1931,0x1911,0x1931,0x1931,0x1131,0x1152,0x1153,0x1174,0x19D6,0x2238,0x2217,0x1195,0x1974,0x1953,0x1912,0x1931,0x2131,0x2131,0x2951,0x2930,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x2930,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2930,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2930,0x290F,0x290F,0x292F,0x2930,0x2930,0x2930,0x290F,0x2910,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x2930,0x2930,0x290F,0x292F,0x292F,0x290F,0x210F,0x2130,0x2130,0x2950,0x2150,0x2151,0x2131,0x1911,0x1931,0x1932,0x1973,0x1174,0x1194,0x2217,0x2217,0x21D6,0x1975,0x1133,0x1912,0x1912,0x1911,0x1911,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2930,0x2950,0x212F,0x2130,0x2130,0x2110,0x2930,0x2910,0x2931,0x2131,0x2131,0x18F0,0x1911,0x1153,0x19B5,0x19F7,0x11F7,0x11F8,0x1218,0x1A39,0x1A39,0x1A39,0x1A19,0x19D7,0x1154,0x1112,0x1931,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x212F,0x212F,0x290F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x210F,0x2910,0x210F,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2910,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x20EE,0x210F,0x210F,0x290F,0x292F,0x292F,0x210F,0x290F,0x20EE,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x20EE,0x20EE,0x20EE,0x210E,0x292F,0x292F,0x292F,0x292F,0x28EE,0x20EE,0x20EE,0x20EE,0x290F,0x290F,0x20EE,0x20EE,0x20EE,0x20EE,0x28EF,0x20CE,0x28EF,0x28EF,0x28EF,0x28EE,0x28EF,0x28CE,0x28EE,0x28EE,0x30EF,0x28CE,0x30EE,0x30CE,0x30CE,0x30CE,0x30CE,0x30CE,0x30CE,0x30CE,0x38CE,0x30CE,0x38CE,0x38CE,0x30CE,0x30AE,0x308D,0x284C,0x304C,0x282B,0x280A,0x300A,0x384B,0x48AC,0x616F,0x7A11,0xA357,0xBBF9,0xD49B,0xE4DC,0xE4FC,0xED1C,0xECFC,0xE4BB,0xE49A,0xDC79,0xDC9A,0xDC99,0xDC79,0xDC79,0xDC79,0xDC79,0xD458,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xD458,0xD458,0xD457,0xCC57,0xCC57,0xCC57,0xCC78,0xCC98,0xC4B8,0xC4F9,0xBD19,0xA4B7,0x7C15,0x7456,0x7D59,0x7E1C,0x767D,0x66DE,0x4EBD,0x46FD,0x371D,0x371D,0x2F1D,0x3F1E,0x46FD,0x56DD,0x667C,0x7DFB,0x84B7,0xA456,0xBC16,0xCBF6,0xDBF6,0xD3B6,0xDBD6,0xE3F7,0xE3F7,0xD3D7,0xCBD7,0xCC38,0xB437,0x9478,0x8519,0x761C,0x5EBD,0x473E,0x275E,0x177F,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07FF,0x07DF,0x07BF,0x07BF,0x0F9F,0x179F,0x277F,0x3F1E,0x569D,0x7E3C,0x8D39,0x9C56,0xABD5,0xBBB5,0xC395,0xC395,0xCBB6,0xBBB5,0xA3B5,0x7373,0x85BB,0x5E9C,0x3F1C,0x275D,0x179D,0x0FBD,0x07DD,0x07DD,0x07DD,0x07FC,0x07FC,0x07DC,0x07DC,0x07DC,0x07DB,0x07FB,0x07FB,0x07FB,0x07DA,0x07DA,0x07DA,0x07FA,0x07FA,0x07F9,0x07F9,0x07F9,0x07D8,0x07D8,0x07D8,0x07F8,0x07F8,0x07D8,0x07F8,0x07D7,0x07D7,0x07D7,0x07D7,0x07D7,0x07D7,0x07D7,0x07D6,0x07D6,0x07D6,0x07D6,0x07D6,0x07F5,0x07F5,0x07F5,0x07F5,0x07D5,0x07F5,0x07D5,0x07D5,0x07D5,0x07D5,0x07D5,0x07D5,0x07D5,0x07D5,0x07D4,0x07D4,0x07D4,0x07D4,0x07D4,0x07D4,0x07D4,0x07B5,0x07B5,0x0795,0x0776,0x0756,0x0736,0x0F16,0x0F17,0x16D8,0x1E99,0x263A,0x361B,0x357B,0x2C9B,0x2C5C,0x1B9C,0x0AFB,0x029C,0x025C,0x023D,0x023E,0x025E,0x023E,0x023F,0x023F,0x023F,0x023F,0x021F,0x01FF,0x01FF,0x01FF,0x01FF,0x01FF,0x01DF,0x01DF,0x01DF,0x01DF,0x01DF,0x01BF,0x019F,0x019F,0x01BF,0x019F,0x099F,0x097E,0x119E,0x21BE,0x293C,0x28FA,0x623D,0x6A3C,0x61D9,0x727B,0x629A,0x1974,0x2B7A,0x2CDE,0x151D,0x0DDE,0x16BF,0x175F,0x17BF,0x0FBF,0x07BF,0x07BF,0x07BF,0x079F,0x079F,0x179F,0x1F7F,0x2F3E,0x3EBD,0x6EBE,0x85DD,0x6334,0x79F1,0xAA33,0xC214,0xC9F3,0xC992,0xC9B3,0xD1B3,0xD1B4,0xD1B3,0xD1B3,0xC993,0xC9B3,0xC9D4,0xC9D4,0xC1D4,0xBA35,0xAA56,0x608F,0x50B0,0x5131,0x4972,0x4151,0x3951,0x3951,0x3951,0x3151,0x3171,0x3151,0x3171,0x3151,0x3151,0x3130,0x3151,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x2110,0x2130,0x2131,0x1911,0x10F2,0x0934,0x19D7,0x19F9,0x1A19,0x11F8,0x09B7,0x0976,0x0976,0x0975,0x0996,0x09B7,0x11F8,0x1218,0x11F8,0x11D7,0x0995,0x0954,0x0953,0x0933,0x0933,0x0912,0x0912,0x0912,0x1112,0x1112,0x1112,0x1112,0x1112,0x1111,0x1112,0x1152,0x1153,0x1153,0x1132,0x0912,0x0912,0x0912,0x0913,0x1134,0x1975,0x21D6,0x21F7,0x2217,0x19D6,0x1174,0x1154,0x1953,0x1932,0x2132,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2930,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x212F,0x2930,0x210F,0x2930,0x290F,0x212F,0x212F,0x2110,0x2110,0x210F,0x2130,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x212F,0x2930,0x292F,0x210F,0x290F,0x290F,0x2930,0x212F,0x212F,0x212F,0x2930,0x2930,0x290F,0x212F,0x212F,0x212F,0x2930,0x290F,0x212F,0x2930,0x290F,0x290F,0x212F,0x212F,0x212F,0x2930,0x2930,0x212F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x210F,0x2130,0x210F,0x2110,0x2910,0x210F,0x210F,0x2110,0x210F,0x210F,0x2110,0x2130,0x2110,0x2130,0x2130,0x2131,0x1951,0x1911,0x1112,0x1133,0x1175,0x11D7,0x11F8,0x09D8,0x01B8,0x01D9,0x01B9,0x01D9,0x01FA,0x01FA,0x01DA,0x01FA, + 0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x2930,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1933,0x1153,0x1974,0x21D6,0x21D6,0x19D6,0x1995,0x1174,0x1153,0x1133,0x1132,0x1112,0x1112,0x1132,0x1132,0x1932,0x1132,0x1112,0x1132,0x1132,0x1132,0x1932,0x1112,0x1112,0x1132,0x1932,0x1912,0x1932,0x1932,0x1932,0x1932,0x1132,0x1131,0x1132,0x1132,0x1132,0x1132,0x1131,0x1112,0x1111,0x1131,0x1932,0x1112,0x1112,0x1112,0x1912,0x1912,0x1912,0x1112,0x1132,0x1132,0x1132,0x1112,0x1132,0x1132,0x1111,0x1132,0x1131,0x1131,0x1932,0x1131,0x1932,0x1112,0x1111,0x1132,0x1132,0x1112,0x1912,0x1932,0x1932,0x1912,0x1111,0x1932,0x1932,0x1912,0x1912,0x1932,0x1932,0x1912,0x1912,0x1932,0x1912,0x1912,0x1912,0x1912,0x1111,0x1912,0x1911,0x1912,0x1912,0x1911,0x1912,0x1912,0x1911,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1113,0x1113,0x1134,0x19B6,0x21F7,0x2217,0x21F7,0x1995,0x1134,0x1112,0x1112,0x1932,0x1932,0x1931,0x1931,0x2131,0x2131,0x2111,0x2131,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x212F,0x2150,0x2130,0x2130,0x2151,0x2172,0x1951,0x1952,0x1132,0x1154,0x1175,0x19B6,0x19F7,0x19F7,0x19B6,0x1155,0x1113,0x1912,0x1932,0x1931,0x1911,0x2151,0x2151,0x1931,0x1952,0x1131,0x1132,0x1153,0x1174,0x19D6,0x2238,0x19F7,0x1195,0x1974,0x1953,0x1932,0x1931,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x290F,0x212F,0x210F,0x2910,0x2110,0x2130,0x210F,0x2110,0x2110,0x2130,0x2110,0x2910,0x2930,0x2130,0x2130,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x292F,0x290F,0x2930,0x290F,0x290F,0x292F,0x290F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2151,0x2131,0x1931,0x1931,0x1932,0x1953,0x1153,0x1995,0x21F7,0x21F7,0x21D6,0x1975,0x1113,0x1112,0x1912,0x1911,0x1911,0x2131,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x2930,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2131,0x2111,0x2131,0x2151,0x2151,0x1911,0x1132,0x1174,0x19F7,0x1A38,0x1218,0x09F9,0x09F9,0x0A19,0x0A19,0x09F9,0x11F9,0x11D8,0x19B6,0x1953,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x290F,0x2930,0x2930,0x210F,0x210F,0x210F,0x2130,0x2930,0x2930,0x2110,0x2110,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2130,0x210F,0x292F,0x292F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x20EF,0x292F,0x210F,0x210F,0x290F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x20EF,0x20EF,0x20EF,0x290F,0x290F,0x20EF,0x290F,0x290F,0x290F,0x28EF,0x290F,0x28EF,0x290F,0x290F,0x310F,0x310F,0x310F,0x310F,0x310F,0x310F,0x30EF,0x30EF,0x30EF,0x30EF,0x310F,0x310F,0x310F,0x30EF,0x390F,0x310F,0x390F,0x390F,0x390F,0x38EF,0x410F,0x410E,0x40EE,0x40CE,0x48CD,0x48AD,0x48CD,0x48AD,0x50CD,0x58ED,0x698F,0x8232,0xA336,0xC3F9,0xDCDC,0xED3D,0xE4FC,0xDCDB,0xDC9A,0xD47A,0xDC7A,0xDC7A,0xDC79,0xDC79,0xDC59,0xDC58,0xDC58,0xDC58,0xDC58,0xDC59,0xDC58,0xD437,0xD458,0xD437,0xD458,0xCC37,0xCC58,0xCC78,0xCC98,0xC498,0xC4B8,0xBCD9,0xA4B8,0x8456,0x6C36,0x74F8,0x863D,0x767D,0x6EDE,0x5EDE,0x4EDD,0x4EFE,0x46FD,0x4EDD,0x569D,0x665C,0x7E1B,0x8538,0xA497,0xBC57,0xC3F6,0xD3F6,0xDBF7,0xDBF7,0xDC17,0xDBF7,0xCBB6,0xCC17,0xBC17,0xA437,0x8457,0x7539,0x765D,0x56DD,0x3F3E,0x1F7E,0x179F,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x0F9F,0x179F,0x277F,0x3F1E,0x569D,0x7E1C,0x8D39,0x9C36,0xABD5,0xBBB5,0xBB75,0xCB95,0xCBB6,0xC3B6,0xABB5,0x72F2,0x8D7A,0x6EBD,0x471D,0x275D,0x1F9D,0x0F9D,0x07DD,0x07DD,0x07DD,0x07DD,0x07DD,0x07FD,0x07DC,0x07DC,0x07DC,0x07FC,0x07FC,0x07FB,0x07FB,0x07DB,0x07DB,0x07FB,0x07FA,0x07FA,0x07FA,0x07DA,0x07D9,0x07D9,0x07D9,0x07D9,0x07F9,0x07D8,0x07D8,0x07F8,0x07D8,0x07D8,0x07D8,0x07D8,0x07D8,0x07D8,0x07D7,0x07D7,0x07D7,0x07D7,0x07D7,0x07D6,0x07D6,0x07D6,0x07F6,0x07D6,0x07F7,0x07D7,0x07D7,0x07D7,0x07D6,0x07D6,0x07D6,0x07D6,0x07D6,0x07D6,0x07D6,0x07D6,0x07D5,0x07D5,0x07D5,0x07D5,0x07B5,0x07B6,0x0796,0x0796,0x0776,0x0756,0x0736,0x0F37,0x16F7,0x1EB8,0x2E99,0x3E5B,0x45DB,0x455C,0x3CBC,0x2BFB,0x239C,0x1B3C,0x0A9C,0x025C,0x025D,0x023D,0x023E,0x023F,0x023F,0x023F,0x021F,0x021F,0x01FF,0x01FF,0x01FF,0x01FF,0x01FF,0x01DF,0x01DF,0x01BF,0x01BF,0x01DF,0x01BF,0x01BF,0x01BF,0x019F,0x019F,0x099F,0x119E,0x115D,0x219E,0x295C,0x2098,0x6A3D,0x723C,0x69B8,0x7A3A,0x7ADB,0x39F6,0x1A57,0x347D,0x1CDD,0x0D7D,0x0E5F,0x173F,0x179F,0x0FBF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x0F9F,0x179F,0x275F,0x36FE,0x56BE,0x7E7F,0x7458,0x7A93,0x91F2,0xB213,0xC9F3,0xC192,0xC9B3,0xC9B3,0xD1B3,0xD193,0xD1B3,0xC993,0xC9B3,0xC9B3,0xC9D3,0xC1D4,0xC1F4,0xBA56,0x8972,0x506F,0x5911,0x5152,0x4151,0x4151,0x3951,0x3971,0x3951,0x3951,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x2130,0x2130,0x2131,0x1911,0x10F2,0x1113,0x1175,0x11D7,0x1A39,0x1A38,0x1A18,0x11D7,0x11B7,0x0996,0x11D7,0x11D7,0x11F7,0x11F7,0x09B6,0x0995,0x0954,0x0933,0x0932,0x1112,0x1111,0x1132,0x1111,0x1111,0x1932,0x1111,0x1111,0x1931,0x1111,0x1931,0x1931,0x1111,0x1131,0x1131,0x1132,0x1952,0x1132,0x1112,0x1112,0x1133,0x1134,0x1154,0x19B6,0x21F7,0x2217,0x19D6,0x1174,0x1154,0x1953,0x1932,0x1931,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2110,0x2930,0x2130,0x2130,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x2930,0x210F,0x210F,0x212F,0x210F,0x2110,0x212F,0x292F,0x212F,0x212F,0x210F,0x2930,0x2110,0x2110,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x2930,0x290F,0x212F,0x212F,0x2110,0x2110,0x212F,0x212F,0x2110,0x2110,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x210F,0x2930,0x210F,0x2930,0x210F,0x2930,0x210F,0x290F,0x290F,0x292F,0x212F,0x292F,0x290F,0x290F,0x210F,0x2930,0x292F,0x290F,0x292F,0x2930,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x210F,0x212F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x2930,0x2930,0x210F,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2131,0x2131,0x1931,0x1912,0x1112,0x1154,0x1195,0x11D7,0x11F8,0x09D8,0x01D9,0x01D9,0x01D9,0x01D9,0x01FA,0x01DA,0x01DA, + 0x2930,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2111,0x1911,0x1911,0x1932,0x1132,0x1153,0x1974,0x21D6,0x21F6,0x21D6,0x19B5,0x1974,0x1153,0x1132,0x1132,0x1132,0x1132,0x1952,0x1932,0x1932,0x1932,0x1952,0x1952,0x1952,0x1952,0x1952,0x1932,0x1932,0x1932,0x1932,0x1932,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1952,0x1952,0x1951,0x1931,0x1931,0x1931,0x1951,0x1931,0x1931,0x1931,0x1911,0x1911,0x1932,0x1931,0x1932,0x1912,0x1911,0x1931,0x1931,0x1931,0x1931,0x1111,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1911,0x1932,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1911,0x1931,0x1911,0x1931,0x1931,0x1931,0x1911,0x2131,0x2131,0x1931,0x1911,0x2131,0x1931,0x1931,0x1931,0x2132,0x2132,0x2131,0x1911,0x2132,0x1931,0x2132,0x1931,0x2132,0x1931,0x2152,0x1932,0x2152,0x1932,0x1932,0x1912,0x10F2,0x10F2,0x1133,0x1133,0x19B6,0x21F7,0x2217,0x21D7,0x1995,0x1134,0x0912,0x1132,0x1132,0x1932,0x1931,0x1931,0x2131,0x1931,0x2151,0x2151,0x2131,0x1931,0x1910,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2150,0x2130,0x2130,0x2131,0x2151,0x1952,0x1952,0x1132,0x1153,0x1154,0x19B6,0x21F8,0x21F8,0x19B6,0x1175,0x1133,0x1112,0x1111,0x1931,0x2151,0x2151,0x2131,0x1931,0x1111,0x1932,0x1153,0x1154,0x0954,0x19D6,0x2238,0x19F7,0x1195,0x1174,0x1132,0x1912,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x2930,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2930,0x2910,0x2110,0x2910,0x290F,0x292F,0x290F,0x290F,0x2930,0x290F,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2910,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x1952,0x1953,0x1153,0x19B5,0x21D6,0x2217,0x21D7,0x1975,0x1113,0x10F2,0x18F2,0x1911,0x2132,0x2131,0x1910,0x1910,0x2110,0x2110,0x2931,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2151,0x2151,0x2152,0x2152,0x1952,0x1132,0x1974,0x19D6,0x19F7,0x11F7,0x1218,0x01D8,0x01D9,0x01D9,0x01D9,0x09F9,0x09F9,0x09D8,0x11D8,0x11B7,0x19B5,0x1132,0x1911,0x1931,0x2151,0x2131,0x2130,0x2130,0x210F,0x212F,0x2130,0x292F,0x2930,0x212F,0x212F,0x210F,0x2930,0x290F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x292F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2930,0x290F,0x210F,0x2930,0x2130,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x210F,0x2110,0x210F,0x2110,0x210F,0x2130,0x2130,0x2130,0x210F,0x2930,0x210F,0x2110,0x2110,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x292F,0x290F,0x210F,0x290F,0x210F,0x292F,0x210F,0x292F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x2930,0x2930,0x2930,0x2910,0x2930,0x290F,0x290F,0x290F,0x3130,0x2930,0x3130,0x3130,0x3130,0x310F,0x3130,0x3110,0x3130,0x3130,0x3130,0x3130,0x3130,0x3930,0x3130,0x3130,0x3930,0x3930,0x3950,0x3930,0x3930,0x3930,0x4130,0x410F,0x4930,0x492F,0x5150,0x4930,0x5150,0x5170,0x5170,0x5150,0x514F,0x490E,0x40CD,0x408D,0x592F,0x69B1,0x92B5,0xB3B8,0xD49B,0xDCDC,0xE4FC,0xDCDB,0xDC9A,0xDC7A,0xDC59,0xDC79,0xDC59,0xDC79,0xDC59,0xDC59,0xE479,0xDC58,0xDC58,0xD438,0xD438,0xD458,0xD438,0xD438,0xD458,0xCC58,0xCC78,0xC498,0xC498,0xBCD9,0xACD8,0x8C36,0x7415,0x8519,0x8E1C,0x869E,0x76DE,0x5E7C,0x569C,0x569C,0x5E7C,0x663B,0x7E1B,0x9DFB,0xA519,0xAC16,0xBBF6,0xCBF6,0xD3F6,0xD417,0xDC17,0xD417,0xCBF6,0xBBF6,0xAC37,0x9C77,0x7477,0x75DB,0x66BD,0x46FE,0x2F5E,0x1F7E,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07BF,0x07BF,0x0FBF,0x1FBF,0x2F7F,0x3F1F,0x5E7D,0x7DFB,0x8CD8,0x93D5,0xABB5,0xC3D6,0xCBB5,0xCB95,0xCB96,0xCBB6,0xBBD6,0x7AF2,0x84F9,0x76DE,0x471D,0x2F7E,0x1FBE,0x0FBD,0x07BD,0x07DE,0x07DD,0x07DD,0x07DD,0x07DD,0x07DD,0x07FD,0x07FD,0x07DC,0x07DC,0x07DC,0x07FC,0x07DC,0x07DB,0x07DB,0x07FB,0x07DB,0x07DB,0x07DA,0x07DA,0x07DA,0x07DA,0x07FA,0x07F9,0x07F9,0x07F9,0x07D9,0x07D9,0x07D9,0x07D9,0x07D9,0x07D9,0x07D9,0x07D8,0x07D8,0x07D8,0x07F8,0x07F8,0x07D7,0x07F7,0x07D7,0x07D7,0x07D7,0x07D7,0x07F8,0x07D8,0x07D8,0x07D8,0x07D8,0x07D8,0x07D7,0x07D7,0x07D7,0x07D7,0x07D7,0x07D7,0x07D7,0x07D7,0x07D7,0x07B7,0x07B7,0x0797,0x0797,0x0797,0x0777,0x0757,0x0F37,0x1717,0x1ED7,0x3699,0x4E9B,0x563B,0x5DDC,0x5D7D,0x54DD,0x441C,0x233B,0x231C,0x1ABD,0x0A5C,0x025D,0x023E,0x021E,0x023E,0x021F,0x021F,0x021F,0x01FF,0x01FF,0x01FF,0x01DF,0x01FF,0x01DF,0x01DF,0x01BF,0x01BF,0x01DF,0x01BF,0x01FF,0x01DF,0x019F,0x019F,0x017E,0x097E,0x117D,0x217D,0x295C,0x28B9,0x6A1C,0x827C,0x79B8,0x8A5A,0x8ADA,0x6299,0x1174,0x33DC,0x249D,0x0D1D,0x0DBD,0x16BF,0x175F,0x0FBF,0x0FBF,0x07DF,0x07BF,0x07BF,0x07BF,0x0F9F,0x179F,0x1F7F,0x2F3F,0x46DE,0x6E9E,0x7D7C,0x7B55,0x79D1,0xA1D2,0xB9D3,0xC1D3,0xC9B3,0xC993,0xC993,0xD193,0xD193,0xC993,0xC993,0xC9B3,0xC9B3,0xC1B3,0xC1F4,0xBA35,0xB256,0x608F,0x58D0,0x5131,0x4131,0x4151,0x3971,0x3971,0x3971,0x3151,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2130,0x210F,0x212F,0x212F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x2130,0x2131,0x1911,0x18F1,0x1113,0x1134,0x1175,0x19D7,0x19F7,0x1A17,0x1A17,0x11F7,0x11D7,0x11D7,0x19F7,0x19F7,0x1195,0x0974,0x1173,0x1153,0x1152,0x1132,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x2151,0x1931,0x2151,0x1931,0x1931,0x1931,0x1951,0x1931,0x1951,0x1931,0x1932,0x1932,0x1112,0x1132,0x1153,0x1174,0x1995,0x19D6,0x2217,0x21F6,0x1175,0x1133,0x1132,0x1912,0x1911,0x2111,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2110,0x2130,0x210F,0x2930,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2130,0x212F,0x2930,0x210F,0x210F,0x2930,0x290F,0x212F,0x2930,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x2930,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x210F,0x2110,0x210F,0x212F,0x210F,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x2130,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2131,0x1911,0x1911,0x1112,0x1133,0x1195,0x11D7,0x1219,0x09D8,0x09F9,0x01D9,0x01F9,0x01FA,0x01DA,0x01DA, + 0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2131,0x1911,0x1911,0x1932,0x1132,0x1133,0x1974,0x21D6,0x21F6,0x21D6,0x1995,0x1174,0x1133,0x1132,0x1132,0x1132,0x1132,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1952,0x1952,0x1932,0x1952,0x1952,0x1952,0x1952,0x1952,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1951,0x1931,0x2151,0x1931,0x1931,0x1931,0x2151,0x2151,0x2131,0x1910,0x1910,0x1931,0x1911,0x2131,0x2131,0x2111,0x1911,0x1911,0x2131,0x1931,0x1931,0x1910,0x1931,0x1931,0x1931,0x1930,0x1931,0x1931,0x1910,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x1931,0x1931,0x1910,0x2131,0x2131,0x2131,0x2131,0x2131,0x2110,0x2130,0x2110,0x2111,0x2111,0x2131,0x2131,0x2111,0x2110,0x2130,0x2130,0x2131,0x2131,0x2131,0x2130,0x2111,0x2110,0x2131,0x2131,0x2131,0x1910,0x2131,0x1931,0x2131,0x1931,0x2131,0x2131,0x1931,0x2131,0x2152,0x2152,0x1932,0x1912,0x1112,0x1112,0x1153,0x19B6,0x19D6,0x19D7,0x21D7,0x1996,0x1154,0x0933,0x0933,0x1132,0x1132,0x1932,0x1932,0x1932,0x1952,0x1952,0x1952,0x1931,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1933,0x1154,0x1175,0x19B7,0x21F8,0x21F8,0x19B6,0x1175,0x1133,0x1132,0x1931,0x1931,0x2152,0x1910,0x1910,0x1931,0x1952,0x1932,0x1973,0x1154,0x0954,0x19D6,0x2238,0x19F7,0x1995,0x1974,0x1133,0x1932,0x1911,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x210F,0x2930,0x2110,0x2910,0x210F,0x290F,0x290F,0x2910,0x2930,0x2910,0x2110,0x2930,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x292F,0x290F,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1952,0x1952,0x1153,0x1995,0x21F6,0x21F7,0x21D7,0x1995,0x1134,0x10F2,0x18F2,0x1912,0x1911,0x2131,0x2131,0x1911,0x1910,0x2110,0x2110,0x2131,0x2131,0x2111,0x2111,0x2111,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x1931,0x1931,0x1951,0x1932,0x1932,0x1932,0x1112,0x1153,0x1175,0x19D7,0x09D7,0x09D8,0x01B8,0x01B8,0x01B9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x11D8,0x19D6,0x1994,0x1111,0x1931,0x2151,0x2151,0x2130,0x2130,0x2130,0x212F,0x2130,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x2930,0x212F,0x210F,0x2130,0x210F,0x210F,0x2130,0x2130,0x212F,0x210F,0x210F,0x292F,0x210F,0x290F,0x292F,0x210F,0x212F,0x212F,0x2930,0x2930,0x210F,0x2930,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2110,0x210F,0x2110,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2930,0x2910,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x292F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x3130,0x3110,0x3130,0x3130,0x3150,0x3130,0x3130,0x3130,0x3130,0x3950,0x3130,0x3950,0x3950,0x3950,0x3950,0x3950,0x3950,0x4150,0x4150,0x4150,0x4951,0x4951,0x4951,0x4971,0x4971,0x4971,0x4971,0x5191,0x4971,0x5191,0x5992,0x5991,0x5970,0x5970,0x590F,0x592F,0x69B0,0x92B4,0xB3B8,0xCC7B,0xE4FD,0xDCBC,0xDC9B,0xDC7A,0xDC7A,0xDC59,0xDC79,0xDC59,0xDC59,0xDC59,0xDC59,0xD438,0xD418,0xD438,0xD438,0xD458,0xD458,0xD458,0xCC57,0xCC77,0xC477,0xC498,0xBCB8,0xAC98,0x8BF5,0x73F5,0x8539,0x967D,0x8EBE,0x767D,0x665C,0x6E5C,0x765C,0x7E1B,0x95DB,0xA55A,0x9C56,0xBC57,0xC458,0xC3F6,0xCC37,0xC417,0xC417,0xC478,0xB498,0x9436,0x7C77,0x6D59,0x6E9D,0x56DD,0x3F3E,0x275E,0x179E,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07BF,0x0FBF,0x179F,0x2F7F,0x471E,0x5E7D,0x85FC,0x8CB8,0x93D5,0xB3B5,0xBBB5,0xCB95,0xCB75,0xCB95,0xCBB6,0xBBB6,0x82F3,0x8498,0x769D,0x4F1E,0x2F7E,0x1F9E,0x0FBE,0x07BE,0x07DE,0x07DE,0x07DE,0x07DE,0x07FE,0x07FD,0x07FD,0x07FD,0x07DD,0x07DD,0x07DC,0x07FC,0x07DC,0x07FC,0x07FC,0x07FC,0x07DC,0x07DB,0x07DB,0x07DB,0x07DB,0x07DB,0x07FA,0x07FA,0x07FA,0x07FA,0x07DA,0x07DA,0x07DA,0x07DA,0x07D9,0x07D9,0x07D9,0x07D9,0x07D9,0x07D9,0x07D9,0x07D8,0x07F8,0x07D8,0x07F8,0x07D8,0x07D8,0x07F9,0x07F9,0x07F9,0x07F9,0x07F9,0x07D9,0x07D9,0x07D9,0x07D9,0x07D8,0x07D8,0x07D8,0x07D8,0x07D8,0x07D8,0x07D8,0x07B8,0x07B8,0x07B8,0x0797,0x0798,0x0798,0x0798,0x0F58,0x1717,0x1ED7,0x2677,0x4699,0x5E7B,0x65FC,0x6DBC,0x655D,0x5C9C,0x4C1C,0x2ADA,0x22BB,0x22FE,0x129D,0x0A3D,0x023D,0x023E,0x021E,0x021E,0x021F,0x021F,0x01FF,0x01FF,0x01FF,0x01DF,0x01DF,0x01DF,0x01BF,0x01DF,0x01DF,0x01DF,0x01BF,0x01BF,0x019F,0x019F,0x017E,0x097D,0x095D,0x197D,0x297C,0x28D9,0x69FC,0x8A9C,0x81D9,0x9219,0x8A79,0x7ADA,0x2974,0x22B8,0x2C7E,0x14BD,0x0D7D,0x0E5F,0x171F,0x179F,0x0FBF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x0F9F,0x1F9F,0x275F,0x3EFE,0x569E,0x7E3E,0x8459,0x71F1,0x91D2,0xB1F3,0xC1F4,0xC9B3,0xC993,0xC972,0xD193,0xD193,0xD193,0xC993,0xC9B3,0xC9B3,0xC9D4,0xC1D4,0xB9D4,0xC297,0x8952,0x58B0,0x5111,0x4931,0x4151,0x4171,0x4171,0x3951,0x3951,0x3951,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x2950,0x3151,0x2930,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x290F,0x290F,0x210F,0x2130,0x2130,0x2111,0x1911,0x1912,0x1133,0x1134,0x1154,0x1175,0x1195,0x11B5,0x1195,0x11B5,0x19D6,0x11B5,0x19B5,0x1174,0x1153,0x1132,0x1952,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x1910,0x1910,0x1930,0x2131,0x2151,0x2131,0x2130,0x2130,0x1930,0x1930,0x1930,0x1930,0x1931,0x1931,0x1931,0x1911,0x1112,0x1132,0x1133,0x1174,0x1195,0x19D6,0x2A38,0x21F7,0x1174,0x1153,0x1132,0x1912,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2110,0x2130,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x2930,0x210F,0x210F,0x2930,0x212F,0x212F,0x290F,0x290F,0x210F,0x2930,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2110,0x2110,0x2130,0x1910,0x1910,0x1911,0x1911,0x1132,0x0933,0x0974,0x11D7,0x11D8,0x09D8,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9, + 0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2110,0x20EF,0x2110,0x2130,0x2131,0x2131,0x1911,0x1112,0x1132,0x1153,0x19B5,0x21F6,0x2217,0x19D6,0x1974,0x1153,0x1133,0x1953,0x1932,0x1952,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1132,0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x1112,0x1132,0x1952,0x1952,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x2131,0x1910,0x1910,0x2130,0x2130,0x2130,0x1910,0x2110,0x2110,0x2110,0x2131,0x2110,0x2131,0x2131,0x20F0,0x2110,0x2130,0x2110,0x2130,0x2130,0x1910,0x1930,0x1930,0x1930,0x1930,0x1930,0x1930,0x1930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1910,0x1910,0x1910,0x2131,0x2151,0x2151,0x2152,0x1931,0x1932,0x1112,0x1132,0x1153,0x1175,0x19B6,0x21F7,0x19F7,0x11D7,0x1195,0x1175,0x0934,0x1133,0x1133,0x1153,0x1132,0x1953,0x1152,0x1952,0x1952,0x1952,0x1931,0x2151,0x2131,0x2150,0x2130,0x2130,0x2150,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1954,0x1154,0x1976,0x19B7,0x2218,0x2218,0x19D6,0x1154,0x1133,0x1111,0x1111,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1132,0x1974,0x1154,0x1195,0x19D6,0x19F7,0x19D7,0x19B6,0x1174,0x1132,0x1112,0x1931,0x1931,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2151,0x1931,0x1111,0x1132,0x1153,0x19B5,0x19D6,0x2217,0x21D6,0x1975,0x1134,0x1113,0x1912,0x1912,0x1932,0x2131,0x2132,0x2131,0x1911,0x1911,0x1911,0x1911,0x1932,0x1932,0x1932,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1911,0x1111,0x1111,0x1111,0x1111,0x10F1,0x08F1,0x08F1,0x08F1,0x08F2,0x0913,0x0934,0x0955,0x0996,0x09D8,0x01F9,0x01D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01FA,0x09FA,0x09D9,0x11D8,0x19D7,0x1994,0x1112,0x1931,0x2151,0x1931,0x2131,0x2130,0x2130,0x210F,0x2130,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x2930,0x2910,0x210F,0x210F,0x2110,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x210F,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x2910,0x290F,0x290F,0x210F,0x2910,0x210F,0x2930,0x2910,0x2910,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x3150,0x3150,0x2930,0x3130,0x3130,0x3130,0x3151,0x3151,0x3151,0x3130,0x3151,0x3151,0x3951,0x3951,0x3951,0x3951,0x3971,0x3971,0x4171,0x4171,0x4171,0x4151,0x4972,0x4972,0x4992,0x4992,0x4992,0x4992,0x51B2,0x51B2,0x5192,0x5192,0x59B2,0x59B2,0x61D3,0x61D2,0x69D2,0x69D2,0x6170,0x510F,0x6150,0x71B1,0x92D5,0xB3B8,0xCC3A,0xDC9B,0xE4BB,0xDC7A,0xDC59,0xDC39,0xD439,0xDC59,0xDC58,0xDC58,0xD438,0xD438,0xD417,0xD437,0xD437,0xD437,0xD457,0xCC57,0xCC57,0xCC78,0xC498,0xBCB8,0xAC98,0x83D4,0x73F4,0x8D5A,0x8E3D,0x865D,0x7E1B,0x7E1B,0x861B,0x8DDB,0x9D9A,0x9497,0xA477,0xAC57,0xB478,0xB477,0xBC98,0xB477,0xA457,0x8C36,0x7436,0x64D7,0x7EDE,0x5F1E,0x3F3E,0x2F7E,0x1FBF,0x17BF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07BF,0x0F9E,0x179F,0x2F7F,0x3EFE,0x5E7D,0x85DC,0x8CB8,0x9BD5,0xB3B5,0xC395,0xCB75,0xCB55,0xD376,0xCB75,0xBB95,0x8AF3,0x8477,0x7E9E,0x4F1E,0x2F5E,0x1F7E,0x0F9E,0x07BE,0x07DE,0x07DE,0x07DE,0x07DE,0x07FE,0x07FE,0x07FE,0x07FD,0x07FD,0x07FD,0x07FD,0x07DD,0x07DD,0x07DD,0x07FD,0x07FC,0x07DC,0x07DC,0x07DC,0x07DC,0x07DC,0x07DB,0x07DB,0x07DB,0x07FB,0x07DB,0x07DB,0x07DA,0x07DA,0x07DA,0x07DA,0x07DA,0x07DA,0x07DA,0x07DA,0x07DA,0x07D9,0x07D9,0x07D9,0x07F9,0x07F9,0x07FA,0x07FA,0x07FA,0x07FA,0x07FA,0x07FA,0x07FA,0x07FA,0x07FA,0x07DA,0x07FA,0x07F9,0x07F9,0x07F9,0x07D9,0x07D9,0x07D9,0x07D9,0x07B9,0x07B9,0x07B9,0x07B9,0x07B9,0x0799,0x0799,0x0778,0x1779,0x2739,0x2ED8,0x2E17,0x567A,0x6E7C,0x6DFC,0x6D7C,0x6D1C,0x647D,0x5C1D,0x22B9,0x1A7A,0x22DD,0x127D,0x0A7E,0x023E,0x023E,0x021E,0x021F,0x021F,0x01FF,0x01FF,0x021F,0x01FF,0x01DF,0x01DF,0x01BF,0x01BF,0x01DF,0x01BF,0x01BF,0x01BF,0x019F,0x019F,0x019E,0x097E,0x119D,0x197D,0x297C,0x28F9,0x6A1C,0x929D,0x89F9,0x9219,0x9238,0x8ABA,0x4A17,0x11B5,0x2BFC,0x147C,0x0D1D,0x161F,0x0EBF,0x177F,0x17BF,0x07BF,0x07DF,0x07BF,0x07BF,0x07BF,0x0FBF,0x179F,0x1F5F,0x2F3F,0x4EBE,0x767E,0x8D5C,0x6252,0x89F2,0xAA13,0xC213,0xC1D3,0xC9D3,0xD1D4,0xD193,0xD193,0xD193,0xD193,0xC993,0xC9B3,0xC9B3,0xC1B3,0xC1D4,0xBA35,0xAA36,0x68B0,0x6131,0x5131,0x4951,0x4151,0x4171,0x3951,0x3971,0x3951,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2110,0x210F,0x2110,0x2110,0x2111,0x1911,0x1932,0x1933,0x1953,0x1133,0x1153,0x1153,0x1174,0x1174,0x1174,0x1994,0x1973,0x1953,0x1932,0x1931,0x1951,0x1930,0x1910,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x2110,0x2130,0x2130,0x1930,0x1911,0x1911,0x1931,0x1932,0x1952,0x1973,0x1974,0x1995,0x19D6,0x2217,0x21D6,0x19B5,0x1133,0x1112,0x1912,0x1932,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x292F,0x212F,0x290F,0x210F,0x290F,0x212F,0x292F,0x292F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x2930,0x210F,0x290F,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x290F,0x2930,0x210F,0x212F,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x212F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2151,0x1931,0x1911,0x1111,0x1152,0x1174,0x1154,0x1176,0x1197,0x09B8,0x09B8,0x09D9,0x01B9,0x01B9, + 0x212F,0x210F,0x2930,0x290F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2111,0x2131,0x1911,0x1932,0x1133,0x1153,0x19B5,0x21F7,0x21F7,0x21F6,0x1994,0x1153,0x1133,0x1132,0x1932,0x1952,0x1952,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1133,0x1153,0x0932,0x0933,0x0933,0x0933,0x0933,0x0933,0x1132,0x0912,0x1132,0x1132,0x1952,0x1952,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x2151,0x1952,0x1131,0x1132,0x1132,0x1154,0x1175,0x19D7,0x19F8,0x11F7,0x11F7,0x11D7,0x11B6,0x11B6,0x1175,0x1175,0x1174,0x1174,0x0953,0x0933,0x1133,0x1153,0x1952,0x1952,0x1931,0x2151,0x2150,0x2130,0x212F,0x212F,0x212F,0x2130,0x2930,0x2110,0x2110,0x2111,0x2132,0x2133,0x1933,0x1134,0x1175,0x19D7,0x2218,0x2218,0x19D6,0x1174,0x1132,0x1111,0x10F1,0x1951,0x2152,0x2152,0x2151,0x1931,0x1911,0x1932,0x1974,0x1154,0x1175,0x19D7,0x2218,0x19F7,0x19B6,0x1154,0x1133,0x1112,0x1911,0x2131,0x2131,0x2130,0x2130,0x2110,0x2930,0x2130,0x2130,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x2930,0x2110,0x2110,0x210F,0x2910,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x2151,0x1931,0x1931,0x1132,0x1153,0x1995,0x21F6,0x21F7,0x21F7,0x1995,0x1134,0x1113,0x1932,0x1912,0x1932,0x2132,0x2131,0x2111,0x2131,0x1931,0x1911,0x1912,0x1112,0x1112,0x1132,0x1132,0x1132,0x1112,0x0912,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x0913,0x0113,0x0933,0x0934,0x0955,0x1196,0x11B7,0x09D8,0x01D9,0x01D9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x09DA,0x09D9,0x11D8,0x11D7,0x19B5,0x1132,0x1932,0x1952,0x1931,0x2131,0x2130,0x2110,0x210F,0x2130,0x2930,0x210F,0x292F,0x292F,0x210F,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x210F,0x212F,0x210F,0x2130,0x2110,0x2910,0x2910,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2930,0x2910,0x210F,0x2110,0x2910,0x210F,0x2910,0x2910,0x2910,0x210F,0x2930,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x210F,0x2930,0x290F,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3971,0x3951,0x3971,0x3971,0x3971,0x4171,0x4172,0x4172,0x4172,0x4172,0x4992,0x4992,0x49B3,0x4992,0x49B2,0x49B3,0x51B3,0x5193,0x51B3,0x59B3,0x59B3,0x61D3,0x61D3,0x61D3,0x69F3,0x69F3,0x69F3,0x69D3,0x71D2,0x6991,0x71B1,0x79D1,0x9AB4,0xBBB8,0xD45A,0xDC9B,0xDC7A,0xDC5A,0xD459,0xDC79,0xD458,0xD438,0xD438,0xD438,0xD437,0xD437,0xD437,0xD437,0xD458,0xD437,0xCC57,0xC457,0xC478,0xBC98,0xA477,0x7BB4,0x7435,0x959A,0x9E5D,0x8DFB,0x8DFB,0x95DB,0x9DBB,0x9D5A,0x94B8,0xA4B8,0x9457,0x9456,0xA4B8,0x9CD8,0x8476,0x6C56,0x6D18,0x6E7C,0x5EFE,0x3F3D,0x273D,0x1F7E,0x17BF,0x0FBF,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07BF,0x07BF,0x0F9F,0x1F9F,0x2F5E,0x471E,0x669D,0x85DB,0x8C77,0xA3D5,0xB375,0xC395,0xCB95,0xD396,0xCB55,0xD395,0xC395,0x9334,0x7C36,0x7E9E,0x4EFE,0x2F5E,0x1F9E,0x0F9E,0x0FBE,0x07DE,0x07DE,0x07FE,0x07DE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07DE,0x07FD,0x07DD,0x07FD,0x07FD,0x07FD,0x07FD,0x07FD,0x07FD,0x07DC,0x07DC,0x07DC,0x07DC,0x07DC,0x07DC,0x07DC,0x07DB,0x07DB,0x07DB,0x07DB,0x07DB,0x07DB,0x07DB,0x07DB,0x07DB,0x07FB,0x07DA,0x07DA,0x07DA,0x07DA,0x07FA,0x07DA,0x07FB,0x07FB,0x07FB,0x07FB,0x07FB,0x07FB,0x07FB,0x07FB,0x07FB,0x07FB,0x07FB,0x07FA,0x07FA,0x07FA,0x07FB,0x07DB,0x07DB,0x07DA,0x07BA,0x07BA,0x07DA,0x07BA,0x07BA,0x0799,0x0799,0x0799,0x1779,0x1F59,0x2F3A,0x3698,0x35D7,0x667B,0x765C,0x6DBB,0x753B,0x74DC,0x6C7C,0x5C1D,0x2A99,0x1A39,0x229C,0x127D,0x0A5D,0x0A5E,0x021E,0x021F,0x021E,0x01FF,0x01FF,0x01FF,0x01FF,0x01DF,0x01BF,0x01DF,0x01BF,0x01BF,0x01BF,0x01BF,0x019F,0x01BF,0x01BF,0x019E,0x017E,0x097D,0x117D,0x217C,0x28F9,0x61BA,0x9ABD,0x9A3A,0x91D8,0x9217,0x9299,0x6258,0x1933,0x2B7B,0x1C5C,0x14DD,0x0D9E,0x167F,0x171F,0x17BF,0x0FBF,0x07BF,0x07BF,0x07DF,0x079F,0x0FBF,0x0F9F,0x1F9F,0x275F,0x3EDE,0x669E,0x8E1E,0x7396,0x71F1,0x99F2,0xB1F3,0xC1D3,0xC9B3,0xC993,0xC993,0xD193,0xD193,0xD1B3,0xC993,0xD1B3,0xC9B3,0xC1B3,0xC1D4,0xB9F4,0xBA56,0x8131,0x6111,0x5111,0x4931,0x4151,0x4171,0x3971,0x3971,0x3971,0x3971,0x3971,0x3151,0x3151,0x3151,0x3131,0x3131,0x3131,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x190F,0x2110,0x2131,0x2131,0x2132,0x1912,0x1912,0x1912,0x1932,0x1132,0x1132,0x1132,0x1953,0x1132,0x1932,0x1931,0x1931,0x1930,0x1930,0x1930,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2131,0x1931,0x1931,0x1931,0x1932,0x1953,0x1974,0x1194,0x21F7,0x2217,0x2217,0x1995,0x1153,0x1112,0x1111,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2930,0x292F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x210F,0x2930,0x212F,0x2130,0x2130,0x2110,0x2930,0x2130,0x210F,0x2110,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x2130,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x290F,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2930,0x210F,0x2930,0x2930,0x290F,0x290F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2930,0x2130,0x2150,0x2151,0x2130,0x1910,0x1931,0x1111,0x1132,0x1153,0x1154,0x1176,0x1197,0x09B7,0x11F9,0x11F9,0x09D9, + 0x2130,0x2130,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2131,0x1911,0x1911,0x1932,0x1133,0x1153,0x1995,0x21F6,0x21F6,0x21F7,0x19B5,0x1174,0x1133,0x1112,0x1112,0x1932,0x1952,0x1952,0x1152,0x1132,0x1153,0x1133,0x1154,0x1174,0x1195,0x11B5,0x11D6,0x11D6,0x19D6,0x19F7,0x19F6,0x11D6,0x11B5,0x11B5,0x1194,0x1173,0x1133,0x1132,0x1132,0x1931,0x1931,0x1931,0x1931,0x2151,0x2131,0x2130,0x2130,0x2130,0x2930,0x2110,0x210F,0x2110,0x2110,0x2930,0x2930,0x2110,0x2910,0x20EF,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2130,0x210F,0x212F,0x210F,0x2130,0x210F,0x210F,0x212F,0x2150,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2130,0x2172,0x2172,0x1131,0x1112,0x1133,0x1154,0x1196,0x11D7,0x1A18,0x11F8,0x11D8,0x09B7,0x09B7,0x09B7,0x11F8,0x11F8,0x1A18,0x11D7,0x11D7,0x1195,0x0974,0x1153,0x1953,0x1952,0x1931,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x2930,0x2110,0x2131,0x2111,0x2132,0x2132,0x1913,0x1134,0x1195,0x19D7,0x1A17,0x1A17,0x19D6,0x1174,0x0912,0x1111,0x1111,0x1931,0x2152,0x2131,0x2131,0x1931,0x1932,0x1932,0x1133,0x1154,0x1195,0x19F7,0x19F7,0x19F7,0x19D6,0x1154,0x1133,0x1112,0x1911,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x212F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x212F,0x212F,0x290F,0x290F,0x210F,0x290F,0x212F,0x212F,0x212F,0x212F,0x290F,0x292F,0x210F,0x212F,0x210F,0x2930,0x2930,0x2930,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x1931,0x1932,0x1132,0x1153,0x1994,0x21F6,0x21F7,0x21F7,0x1995,0x1133,0x1133,0x1912,0x1911,0x1911,0x1911,0x2111,0x1911,0x1911,0x1912,0x1932,0x1933,0x1133,0x1133,0x1154,0x1174,0x19B5,0x1195,0x1195,0x1196,0x11B6,0x1196,0x11B6,0x11D6,0x19D7,0x19D7,0x19F7,0x19F8,0x19F8,0x19F8,0x1A18,0x1A18,0x1A18,0x1A19,0x11F8,0x11D8,0x09B8,0x09D8,0x01F9,0x01DA,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x09DA,0x09D9,0x11B8,0x19D7,0x19D6,0x1133,0x1932,0x1932,0x2131,0x2131,0x2131,0x2130,0x2130,0x212F,0x290F,0x210F,0x290F,0x292F,0x292F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x2110,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x2910,0x210F,0x2910,0x210F,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x210F,0x2910,0x2110,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x2930,0x212F,0x2930,0x212F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x3150,0x3151,0x3151,0x3171,0x3151,0x3151,0x3131,0x3951,0x3130,0x3151,0x3971,0x3972,0x3971,0x3971,0x3972,0x4192,0x4192,0x4192,0x4192,0x4193,0x4192,0x4192,0x49B3,0x49B3,0x49D3,0x49B3,0x51D4,0x51B4,0x51B4,0x51B3,0x59B3,0x61D4,0x61F4,0x61D3,0x61D3,0x61B3,0x61D3,0x69D3,0x71F3,0x71D3,0x7A13,0x7A13,0x71F2,0x6970,0x71B1,0x8232,0xAB36,0xC3D8,0xCC5A,0xD47A,0xD479,0xD459,0xD438,0xD458,0xD458,0xD438,0xD437,0xD437,0xCC16,0xD437,0xD437,0xCC37,0xCC57,0xC457,0xBC77,0xBCB8,0x9C56,0x83D4,0x8C97,0x9DBB,0x9DFC,0x95DB,0x95DB,0x9DBB,0x9D9B,0x9D7A,0x9D9A,0x9559,0x8539,0x7518,0x7559,0x6DDA,0x6EBD,0x56FD,0x3F3E,0x275D,0x1F9E,0x179E,0x0FBF,0x0FDF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07BF,0x0FBF,0x1F9F,0x2F5E,0x3EFE,0x667D,0x85BB,0x8C16,0xABF6,0xBB95,0xCB96,0xD375,0xD376,0xD355,0xD375,0xC3B6,0x9313,0x8457,0x7E7D,0x571E,0x375E,0x1F9F,0x179E,0x0FBE,0x07DE,0x07DE,0x07FF,0x07FF,0x07FF,0x07FE,0x07FE,0x07FE,0x07DE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FD,0x07FD,0x07FD,0x07DD,0x07DD,0x07DD,0x07DD,0x07DC,0x07DC,0x07DC,0x07FC,0x07FC,0x07DC,0x07DC,0x07DB,0x07FB,0x07FC,0x07FC,0x07FC,0x07FB,0x07FB,0x07FB,0x07FB,0x07FB,0x07DB,0x07DC,0x07DC,0x07DB,0x07DC,0x07DC,0x07FC,0x07FC,0x07FC,0x07FC,0x07FC,0x07FC,0x07FC,0x07FC,0x07FB,0x07FC,0x07FB,0x07DB,0x07DB,0x07DB,0x07DB,0x07DB,0x07BB,0x07DB,0x07DB,0x07BB,0x07BA,0x079A,0x0F7A,0x177A,0x1F3A,0x373B,0x3EBA,0x3DF8,0x665B,0x763C,0x759B,0x74FB,0x74BB,0x749D,0x6C3D,0x2A78,0x1A19,0x125B,0x125D,0x0A3D,0x023E,0x025F,0x021E,0x021F,0x01FF,0x01FF,0x01FF,0x01FF,0x01FF,0x01DF,0x01DF,0x01BF,0x01BF,0x01BF,0x01BF,0x01DF,0x019E,0x017E,0x017D,0x097D,0x119D,0x219C,0x313A,0x61DB,0xA2FE,0x9A3A,0x99D7,0x9A17,0x9A99,0x7A79,0x2953,0x2277,0x2C3D,0x147C,0x0D5D,0x0E1E,0x16DF,0x179F,0x0FBF,0x0FDF,0x07BF,0x07DF,0x07DF,0x079F,0x0F9F,0x179F,0x1F5F,0x371F,0x56BF,0x867F,0x84DA,0x59F1,0x89D1,0xA9F3,0xC1D3,0xC9B3,0xC9B3,0xC993,0xD193,0xC973,0xD193,0xC993,0xD1B3,0xC9B3,0xC9B3,0xC1D3,0xB9F4,0xC276,0xA215,0x60D0,0x5911,0x4910,0x4151,0x4151,0x4171,0x3971,0x3971,0x3151,0x3171,0x3151,0x3151,0x3151,0x3131,0x3131,0x3131,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x290F,0x210F,0x2910,0x2910,0x20EF,0x210F,0x210F,0x2130,0x2110,0x210F,0x2110,0x2130,0x2131,0x2151,0x2131,0x2111,0x1911,0x1911,0x1911,0x1932,0x1932,0x1931,0x1932,0x1911,0x1911,0x1931,0x1930,0x1930,0x2130,0x2130,0x212F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x2110,0x2110,0x210F,0x2930,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1133,0x1174,0x19B6,0x2217,0x2217,0x2217,0x1995,0x1153,0x1132,0x1932,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x210F,0x212F,0x292F,0x212F,0x210F,0x212F,0x210F,0x2930,0x212F,0x2130,0x2130,0x2930,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x292F,0x212F,0x290F,0x2930,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x290F,0x210F,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x2910,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x2930,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2130,0x2131,0x2130,0x1910,0x1911,0x1932,0x1912,0x1133,0x1995,0x1996,0x19D7,0x11B8,0x11F9,0x11F9, + 0x2130,0x212F,0x212F,0x292F,0x292F,0x292F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1911,0x1911,0x1112,0x1133,0x1154,0x1995,0x21F6,0x21F7,0x21F7,0x19B5,0x1174,0x1153,0x1132,0x1932,0x1932,0x1132,0x1952,0x1153,0x1153,0x1154,0x1174,0x1175,0x1195,0x19B6,0x19D7,0x19F7,0x11F7,0x1A38,0x1A18,0x1A38,0x1A18,0x1A38,0x1A17,0x19F7,0x19F6,0x19D6,0x19D5,0x19B4,0x1153,0x1132,0x1132,0x1111,0x1931,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2910,0x2930,0x2910,0x290F,0x20EF,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x210F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x2910,0x210F,0x210F,0x212F,0x2930,0x210F,0x290F,0x292F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x2130,0x2151,0x2151,0x1931,0x1132,0x1112,0x1133,0x0954,0x11D6,0x11F7,0x09D8,0x09F8,0x09D8,0x09D9,0x09D9,0x09D9,0x09F9,0x1219,0x1219,0x1219,0x1A18,0x11B6,0x1195,0x1153,0x1952,0x2152,0x2131,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x2110,0x2930,0x2930,0x2111,0x2111,0x1911,0x1912,0x1933,0x1154,0x1195,0x19D6,0x19F7,0x2217,0x19B6,0x1174,0x1132,0x1132,0x1932,0x2152,0x2131,0x2152,0x1911,0x1911,0x1912,0x1132,0x1153,0x1154,0x1195,0x19F7,0x2218,0x2217,0x1195,0x1153,0x1132,0x1112,0x1931,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x2930,0x292F,0x210F,0x210F,0x210F,0x212F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x290F,0x290F,0x2930,0x2130,0x210F,0x2130,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x1132,0x1153,0x1994,0x21F6,0x21F6,0x21F6,0x19B5,0x1153,0x1132,0x1112,0x1911,0x1931,0x1911,0x2131,0x2111,0x1911,0x1912,0x1912,0x1133,0x1134,0x1154,0x1996,0x19D7,0x2218,0x2A79,0x2A79,0x2A9A,0x2A79,0x2279,0x2A7A,0x2A9A,0x227A,0x2A7A,0x225A,0x225A,0x223A,0x1A3A,0x1A19,0x1A19,0x1A19,0x1A19,0x11F9,0x11F9,0x11F9,0x09D8,0x09F9,0x01D9,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x09FA,0x09DA,0x09B9,0x11B8,0x19D7,0x19D6,0x1133,0x1932,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2930,0x2930,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2930,0x2930,0x2110,0x210F,0x210F,0x2910,0x210F,0x2910,0x2930,0x210F,0x210F,0x2910,0x2910,0x210F,0x2910,0x210F,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x212F,0x2130,0x2130,0x212F,0x2930,0x2930,0x2130,0x212F,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2950,0x2930,0x2930,0x2950,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3971,0x3971,0x3971,0x3972,0x3972,0x3972,0x3972,0x4192,0x4192,0x4193,0x41B3,0x49B3,0x49B3,0x49B3,0x49B3,0x51B4,0x51B4,0x51B3,0x51B4,0x59B4,0x59D4,0x59D4,0x59B3,0x61D4,0x69F4,0x69F4,0x69D4,0x69F4,0x71F4,0x7213,0x7213,0x7A34,0x7213,0x71D2,0x71B1,0x696F,0x71B0,0x8A72,0x9B15,0xBC18,0xCC9A,0xD49A,0xCC59,0xD458,0xD458,0xD458,0xD437,0xD437,0xD437,0xD417,0xD417,0xD437,0xCC57,0xCC57,0xC457,0xBC57,0xB477,0xA457,0x83D4,0x94D8,0xADFC,0xA5FC,0x9DDB,0x95DB,0x95DB,0x95FB,0x8E1B,0x85FB,0x761B,0x6E7C,0x6EFE,0x5F5F,0x3F1D,0x2F5E,0x1F7E,0x179E,0x0FBE,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07BF,0x0FBF,0x1F7E,0x2F5E,0x46FE,0x667D,0x857A,0x8BF5,0xABD5,0xC3B6,0xCB75,0xD375,0xD355,0xDB75,0xCB55,0xC396,0x9B33,0x8416,0x7E7D,0x56FE,0x375E,0x1F7E,0x0F9E,0x0FBE,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FD,0x07DD,0x07FD,0x07FD,0x07DD,0x07DD,0x07DD,0x07FD,0x07FC,0x07DC,0x07DC,0x07FC,0x07FC,0x07FC,0x07FC,0x07FC,0x07FC,0x07FC,0x07FC,0x07FC,0x07DC,0x07DC,0x07DC,0x07DC,0x07DC,0x07DC,0x07DD,0x07FD,0x07FC,0x07FD,0x07FD,0x07FD,0x07FC,0x07FC,0x07FC,0x07FC,0x07FC,0x07FC,0x07DC,0x07DC,0x07DC,0x07DC,0x07DC,0x07DC,0x07DC,0x07DB,0x07DC,0x07BB,0x079B,0x0F9B,0x0F7B,0x175B,0x273B,0x371B,0x3E9A,0x45F9,0x6E3B,0x7E1C,0x7D7B,0x7CDA,0x7CBB,0x7C9D,0x6C3E,0x2A38,0x1A19,0x1A3B,0x0A1C,0x0A3D,0x021E,0x021E,0x023F,0x021F,0x01FF,0x01DF,0x01DF,0x01DF,0x01DF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BE,0x019E,0x097D,0x117D,0x219C,0x313A,0x599A,0x9ADE,0x9A19,0x99D7,0xA1F7,0x9A58,0x8AB9,0x4194,0x19B5,0x33FC,0x1C3C,0x0CDD,0x15DE,0x169F,0x175F,0x17BF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07BF,0x0FBF,0x0F9F,0x1F7F,0x2F3F,0x46DF,0x6E9F,0x8DDE,0x62F4,0x71F1,0xA213,0xB9D3,0xC1B3,0xC993,0xD1B3,0xD193,0xD193,0xD193,0xD193,0xC9B3,0xC9B3,0xC9B3,0xC9D3,0xC1F4,0xBA14,0xC2D7,0x68F0,0x6131,0x4910,0x4951,0x4151,0x4171,0x3971,0x3951,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3151,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x2111,0x2131,0x2111,0x1911,0x2131,0x1931,0x1931,0x1931,0x1911,0x1931,0x1930,0x1910,0x2130,0x1910,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2130,0x210F,0x292F,0x292F,0x292F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1911,0x1932,0x1953,0x1154,0x19D6,0x21F7,0x2217,0x2217,0x1195,0x1154,0x1132,0x1112,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2110,0x2110,0x2910,0x2930,0x2910,0x2110,0x212F,0x210F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2130,0x212F,0x210F,0x210F,0x2930,0x2910,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x2130,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x2110,0x210F,0x210F,0x290F,0x290F,0x210F,0x2910,0x210F,0x210F,0x210F,0x2110,0x2910,0x2110,0x210F,0x210F,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x2110,0x210F,0x290F,0x290F,0x210F,0x212F,0x2930,0x210F,0x2130,0x212F,0x210F,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2111,0x1911,0x1932,0x1933,0x1953,0x1975,0x1175,0x1196,0x19B7,0x1197, + 0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x1931,0x1911,0x1112,0x1133,0x1154,0x1995,0x19F7,0x2217,0x19D6,0x19B5,0x1154,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1153,0x1154,0x1174,0x1175,0x1195,0x11B6,0x11B6,0x11B7,0x11B7,0x11B7,0x11D7,0x19F8,0x19F7,0x19F7,0x19F7,0x11F7,0x11F7,0x11F7,0x11F7,0x11D6,0x11D6,0x11B5,0x19B5,0x1174,0x1133,0x1132,0x1111,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x210F,0x2130,0x210F,0x2110,0x2930,0x290F,0x210F,0x292F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2131,0x1911,0x1931,0x1112,0x1132,0x1154,0x11B6,0x11D7,0x09D8,0x09F9,0x01D9,0x09F9,0x09FA,0x01D9,0x09F9,0x09FA,0x09FA,0x121A,0x11F9,0x11D8,0x11B7,0x1175,0x1153,0x1952,0x2131,0x2131,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2130,0x2110,0x2111,0x1911,0x1912,0x1112,0x1153,0x1195,0x19F6,0x2217,0x21F7,0x19D6,0x1174,0x1153,0x1111,0x1932,0x2132,0x2132,0x2111,0x18F0,0x1911,0x1932,0x1132,0x1133,0x0954,0x11B5,0x19F7,0x2238,0x2217,0x1195,0x1174,0x1112,0x1932,0x2132,0x2131,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x210F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x2930,0x290F,0x210F,0x212F,0x212F,0x290F,0x290F,0x212F,0x2930,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2131,0x2131,0x2131,0x1932,0x1932,0x1932,0x1153,0x1994,0x19F6,0x2217,0x21F6,0x19B5,0x1153,0x1132,0x1111,0x1911,0x1911,0x1911,0x2131,0x2131,0x2131,0x1912,0x1912,0x1133,0x1154,0x1175,0x19D7,0x2218,0x2218,0x19F8,0x19F8,0x19F8,0x19F7,0x11D7,0x19D7,0x19D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D8,0x19D8,0x19F8,0x19F8,0x19F8,0x11D8,0x11F8,0x11F8,0x11F8,0x11D8,0x09D8,0x09D9,0x01D9,0x01D9,0x01DA,0x01FA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x09D9,0x09B8,0x11B8,0x19D7,0x1975,0x1133,0x1932,0x1932,0x1931,0x2131,0x2130,0x2110,0x2130,0x2910,0x2910,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2930,0x2930,0x2110,0x2930,0x210F,0x290F,0x2910,0x210F,0x2930,0x2910,0x2910,0x2110,0x210F,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x2930,0x2110,0x2130,0x2110,0x2110,0x2910,0x2910,0x2110,0x20EF,0x2110,0x2110,0x2930,0x2110,0x2930,0x2910,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x2930,0x292F,0x212F,0x2930,0x212F,0x292F,0x292F,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2951,0x2950,0x2930,0x3131,0x3151,0x3131,0x3151,0x3151,0x3151,0x3151,0x3972,0x3971,0x3972,0x3972,0x3972,0x3992,0x3992,0x3992,0x4193,0x4193,0x4193,0x49B3,0x49B3,0x49D4,0x51D4,0x51B4,0x51B4,0x51D4,0x59D4,0x59B4,0x59D4,0x59D4,0x61F4,0x61F4,0x61F4,0x6A14,0x69F4,0x6A14,0x7214,0x7214,0x7213,0x7A34,0x7213,0x6991,0x6190,0x7A32,0x9B76,0x9355,0x82F4,0x7A92,0x7A92,0xA396,0xBC59,0xCC9A,0xCC79,0xCC38,0xD458,0xD438,0xD438,0xD437,0xD437,0xD417,0xD437,0xCC37,0xCC37,0xCC57,0xC457,0xBC37,0xB478,0x93B5,0x8BF6,0xA59B,0xAE1D,0x9DDB,0x95FB,0x85FB,0x863C,0x7E7D,0x6E9D,0x66DE,0x4F1E,0x36FD,0x2F5E,0x1F9E,0x179E,0x0F9E,0x0FBF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x0FBF,0x0F9F,0x1F7E,0x2F3E,0x4EFE,0x76BE,0x8519,0x8BB4,0xB3B6,0xC375,0xCB55,0xD355,0xDB55,0xD335,0xD355,0xC396,0x92F3,0x8416,0x867D,0x571E,0x375F,0x1F7E,0x179E,0x0FBE,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DE,0x07FF,0x07FF,0x07FF,0x07FF,0x07FE,0x07DE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FD,0x07FD,0x07DD,0x07DD,0x07DD,0x07FD,0x07FD,0x07DD,0x07DD,0x07FD,0x07FD,0x07FD,0x07FD,0x07FD,0x07DD,0x07DD,0x07FD,0x07DD,0x07DD,0x07DD,0x07FD,0x07FD,0x07DD,0x07DD,0x07FD,0x07FD,0x07FD,0x07FD,0x07FD,0x07FD,0x07FD,0x07FD,0x07FD,0x07FD,0x07DD,0x07DD,0x07DD,0x07DD,0x07BD,0x07DD,0x07DD,0x07DC,0x07DC,0x07BC,0x07BC,0x07BC,0x0F9C,0x179C,0x1F7C,0x2F5C,0x3F3C,0x469B,0x4DD9,0x6E3B,0x7DDB,0x855B,0x84DB,0x7C9B,0x8CBE,0x741D,0x2A18,0x1A19,0x1A3C,0x0A3C,0x021D,0x021E,0x021E,0x021F,0x01FE,0x01FF,0x01DF,0x01DF,0x01DF,0x01BF,0x01BF,0x01BF,0x019F,0x01BF,0x01DF,0x019E,0x01BE,0x01BE,0x099D,0x117D,0x217C,0x397B,0x4939,0x92BD,0x9A3A,0x99D7,0xA1D7,0xA278,0x9AD9,0x6236,0x1953,0x43DC,0x1BFB,0x14DD,0x0D9E,0x165F,0x173F,0x179F,0x0FBF,0x0FDF,0x07DF,0x07DF,0x0FDF,0x0FBF,0x0F9F,0x1F9F,0x275F,0x3F1F,0x569E,0x867F,0x7438,0x61F1,0x9212,0xB213,0xB992,0xC993,0xD1B3,0xD193,0xD193,0xC973,0xD193,0xC993,0xC9B3,0xC9B3,0xC193,0xC1D3,0xB9F4,0xC2D7,0x8192,0x58F0,0x5131,0x4951,0x4151,0x4151,0x3971,0x3971,0x3971,0x3971,0x3971,0x3171,0x3151,0x3151,0x3151,0x3151,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x2930,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x2131,0x2131,0x2131,0x2131,0x1931,0x1931,0x1931,0x1910,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2930,0x212F,0x2930,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1133,0x1153,0x19B5,0x2217,0x2217,0x2217,0x1195,0x1153,0x1132,0x1912,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2110,0x2110,0x2910,0x2930,0x2110,0x2930,0x212F,0x212F,0x212F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x210F,0x2110,0x2130,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x212F,0x290F,0x290F,0x2910,0x2910,0x290F,0x2930,0x212F,0x212F,0x210F,0x2930,0x210F,0x212F,0x2930,0x2930,0x210F,0x210F,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x292F,0x290F,0x290F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x2930,0x2110,0x212F,0x212F,0x292F,0x212F,0x210F,0x210F,0x2930,0x212F,0x290F,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x214F,0x212F,0x212F,0x2130,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1932,0x1932,0x1953,0x1974,0x1975,0x1134,0x1134, + 0x2130,0x2130,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1112,0x1133,0x1153,0x1195,0x19F7,0x19F7,0x19F7,0x19B6,0x1154,0x1133,0x1133,0x1132,0x1132,0x1132,0x1132,0x1153,0x1154,0x1174,0x1195,0x11B6,0x19D7,0x19F7,0x11D7,0x11B7,0x11B7,0x11B6,0x19B7,0x11B6,0x1196,0x11B6,0x11B6,0x11B6,0x11F7,0x11F7,0x19F7,0x19F7,0x11D7,0x11D6,0x19F6,0x1195,0x1195,0x1154,0x1132,0x1112,0x1911,0x1931,0x2131,0x1910,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x1910,0x1931,0x1931,0x1932,0x1132,0x1133,0x1175,0x11D7,0x09D8,0x09D8,0x09FA,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01FA,0x09DA,0x09D9,0x09F9,0x11D8,0x11B6,0x1174,0x1932,0x2131,0x2110,0x2110,0x2130,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x2130,0x2110,0x2110,0x2131,0x1911,0x1911,0x1112,0x1153,0x1995,0x19F6,0x2217,0x21F7,0x19D6,0x1994,0x1132,0x10F2,0x1912,0x2132,0x2131,0x2131,0x1931,0x1911,0x1932,0x1132,0x1133,0x0953,0x11B6,0x19F7,0x2217,0x1A17,0x19B5,0x1153,0x1133,0x1932,0x1931,0x2111,0x2110,0x2130,0x2930,0x2930,0x2110,0x2910,0x2930,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2930,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1932,0x1133,0x1153,0x19B5,0x19D6,0x21F7,0x21F6,0x1995,0x1153,0x1132,0x1111,0x1931,0x1110,0x1910,0x1931,0x1931,0x2131,0x1932,0x1912,0x1133,0x1154,0x1996,0x21F7,0x2218,0x21F8,0x19F7,0x19B6,0x1175,0x1175,0x0954,0x1174,0x1154,0x1174,0x1175,0x1175,0x1175,0x1175,0x1195,0x1175,0x1176,0x1176,0x1176,0x1196,0x1196,0x1196,0x11B7,0x11B7,0x11B7,0x09D8,0x09D9,0x01D9,0x01F9,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x09D9,0x09B9,0x09B8,0x11B7,0x19B6,0x1133,0x1933,0x1932,0x1932,0x2131,0x2131,0x2110,0x2110,0x2110,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2910,0x210F,0x2910,0x2910,0x210F,0x2110,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2930,0x2930,0x2930,0x2930,0x292F,0x212F,0x292F,0x2930,0x2130,0x212F,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2950,0x2930,0x2930,0x2950,0x2950,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3971,0x3151,0x3972,0x3972,0x3972,0x3972,0x3972,0x4192,0x3992,0x3992,0x3993,0x4193,0x41B3,0x4193,0x49B3,0x49B4,0x49B3,0x49B4,0x51D4,0x51D4,0x51B4,0x51B4,0x59D4,0x59D4,0x59D4,0x61F4,0x61F4,0x69F4,0x6A34,0x6A14,0x7214,0x7214,0x7213,0x69D2,0x6191,0x7233,0x9B97,0xAC18,0xA418,0xAC79,0x8BD7,0x7314,0x72F4,0x6272,0x6210,0x8B14,0xB418,0xCC99,0xC438,0xCC38,0xD458,0xD438,0xD438,0xD437,0xD437,0xD437,0xD437,0xD438,0xCC17,0xCC37,0xC438,0xB417,0xA3F7,0x8394,0x94B8,0xADFD,0x9E1C,0x8E1C,0x7E3C,0x6E5C,0x5E9D,0x4EDD,0x3EFD,0x2F5E,0x277E,0x179E,0x0FBF,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x0FBF,0x17BF,0x1F7E,0x373E,0x4EDD,0x767D,0x84D8,0x93B5,0xB3B6,0xC355,0xCB55,0xD355,0xDB55,0xD335,0xD375,0xC396,0x9B13,0x8416,0x7E5D,0x56FE,0x375F,0x1F9F,0x179E,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07DD,0x07FE,0x07FD,0x07FD,0x07DD,0x07FD,0x07DD,0x07DD,0x07FD,0x07FD,0x07FD,0x07DD,0x07DD,0x07DD,0x07FD,0x07FE,0x07DD,0x07FE,0x07FE,0x07FE,0x07FE,0x07FD,0x07FE,0x07FD,0x07FD,0x07FD,0x07FE,0x07FD,0x07FD,0x07FE,0x07FD,0x07FD,0x07FE,0x07DE,0x07DD,0x07DE,0x07DD,0x07BD,0x07DD,0x07DD,0x07DD,0x07DD,0x07BD,0x07BD,0x07BC,0x0F9C,0x177C,0x1F5C,0x2F3C,0x473D,0x4E7A,0x55F9,0x761B,0x7DBB,0x853B,0x84BA,0x8C9C,0x8CBE,0x73FD,0x21F7,0x221A,0x121B,0x0A1C,0x01FD,0x021E,0x01FE,0x021F,0x01FF,0x01FF,0x01DF,0x01DF,0x01DF,0x01DF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BE,0x019E,0x019E,0x017D,0x119D,0x197C,0x317B,0x38D8,0x929D,0xA25A,0xA1F8,0xA1B6,0xA257,0x9AB8,0x7A98,0x2933,0x3B1A,0x23BB,0x149C,0x155D,0x0E1E,0x16FF,0x177F,0x0FBF,0x07BF,0x07DF,0x07DF,0x0FDF,0x07BF,0x0F9F,0x179F,0x1F7F,0x2F1E,0x46BE,0x76BF,0x8DBD,0x5A72,0x9253,0xB213,0xB9B3,0xC9B3,0xC993,0xD193,0xC973,0xD193,0xD193,0xD1B3,0xD1B3,0xC993,0xC9B3,0xC1D3,0xB9D3,0xBA55,0xA256,0x58AF,0x6172,0x4931,0x4151,0x4151,0x4172,0x3971,0x3972,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x2950,0x2930,0x2950,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x210F,0x2130,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2110,0x2910,0x2930,0x2930,0x212F,0x2930,0x2930,0x2130,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2930,0x2130,0x2130,0x2130,0x2131,0x1910,0x1931,0x1932,0x1133,0x1154,0x19B5,0x19F7,0x2237,0x2217,0x1995,0x1154,0x1132,0x1931,0x1911,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x292F,0x210F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2110,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x290F,0x290F,0x292F,0x212F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x212F,0x210F,0x2910,0x2930,0x2110,0x212F,0x212F,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x212F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x292F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2930,0x212F,0x212F,0x292F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2130,0x2110,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x2950,0x2130,0x2130,0x2130,0x2111,0x1911,0x1932,0x1932,0x1932,0x1132,0x1133,0x1133, + 0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1930,0x1931,0x1931,0x1112,0x1132,0x1153,0x1195,0x19F7,0x2217,0x19F7,0x1195,0x1175,0x1153,0x1153,0x1132,0x1132,0x1132,0x1132,0x1153,0x1153,0x1174,0x1195,0x1196,0x19D7,0x19F7,0x19F7,0x11B6,0x11B6,0x1195,0x1154,0x1154,0x1154,0x1154,0x1154,0x1153,0x0954,0x0954,0x0954,0x1195,0x11D6,0x19F7,0x1A17,0x19F7,0x1A17,0x19D7,0x1195,0x1154,0x0912,0x1112,0x1931,0x1931,0x2131,0x2131,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x292F,0x290F,0x2910,0x210F,0x2910,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x210F,0x2110,0x1910,0x2131,0x2152,0x1932,0x1112,0x1154,0x11D7,0x09F8,0x09F9,0x09F9,0x01B9,0x01B9,0x01BA,0x01BA,0x01BA,0x01BA,0x01BA,0x09DA,0x09F9,0x09D9,0x19F8,0x1195,0x1112,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2930,0x2930,0x2110,0x2130,0x2131,0x2131,0x1931,0x1911,0x1112,0x1153,0x1194,0x19D6,0x2A38,0x2217,0x19B6,0x1974,0x1112,0x10F1,0x1911,0x2152,0x2151,0x2131,0x1911,0x1931,0x1931,0x1132,0x1133,0x0953,0x1195,0x19F7,0x2217,0x19F6,0x19B5,0x1153,0x1132,0x1932,0x1931,0x2131,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x290F,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2111,0x2131,0x1911,0x1932,0x1933,0x1153,0x1174,0x19D6,0x19F6,0x2217,0x19D6,0x1995,0x1153,0x1132,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1932,0x1133,0x1154,0x19B6,0x21F7,0x21F7,0x21F7,0x19D6,0x1995,0x1153,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1153,0x1153,0x0912,0x1132,0x1133,0x1133,0x1153,0x1153,0x0933,0x0933,0x0933,0x0954,0x0955,0x0996,0x09B7,0x09D8,0x09F9,0x01F9,0x01D9,0x01FA,0x01DA,0x01D9,0x09D9,0x11F9,0x11F9,0x19F8,0x1155,0x1133,0x1932,0x1932,0x1931,0x2111,0x2131,0x2130,0x2110,0x2110,0x2910,0x2910,0x20EF,0x290F,0x290F,0x210F,0x290F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x210F,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x212F,0x2130,0x292F,0x292F,0x290F,0x210F,0x292F,0x212F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x2950,0x2950,0x2950,0x3151,0x3151,0x3131,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3951,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x4192,0x4192,0x4193,0x4193,0x4193,0x49B3,0x49D4,0x49B4,0x49B4,0x51B4,0x51D4,0x51D4,0x59D4,0x59D4,0x59D4,0x59F4,0x61F4,0x59B3,0x61D4,0x61D3,0x61F3,0x69F4,0x69F3,0x69D2,0x69B2,0x7A12,0xA377,0xBC7A,0xB479,0xAC79,0xACFA,0xA4FA,0x6354,0x4A91,0x5AF3,0x6314,0x62F4,0x5A51,0x51D0,0x7293,0xABF8,0xCC9A,0xCC38,0xD438,0xD438,0xD418,0xD418,0xD417,0xD418,0xD418,0xD3F7,0xD417,0xCC17,0xCC18,0xC438,0xBC58,0x8B74,0x83F5,0x9D9B,0x961C,0x863C,0x767D,0x5EBD,0x4EFD,0x371E,0x2F5E,0x1F7E,0x179E,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07BF,0x0FBF,0x177E,0x275F,0x3F3E,0x56BD,0x763C,0x7C57,0x9BB5,0xBBB6,0xCB76,0xD355,0xDB35,0xDB35,0xDB35,0xD375,0xC375,0x92F3,0x8437,0x7E5D,0x56FE,0x375F,0x1F7F,0x0F9E,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DE,0x07DE,0x07DE,0x07FE,0x07FE,0x07DE,0x07DE,0x07DE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07DE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DD,0x07DD,0x07BD,0x07BD,0x07BD,0x0F9D,0x177D,0x1F5D,0x2F3C,0x471C,0x4E9B,0x5E3B,0x75FB,0x7D7B,0x851B,0x8CBB,0x847B,0x94FF,0x73FD,0x29F7,0x221A,0x121B,0x0A1C,0x021E,0x021E,0x01FE,0x01FE,0x01FF,0x01DF,0x01DF,0x01DF,0x01DF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x019E,0x017D,0x097D,0x197C,0x295B,0x30B8,0x823C,0xAA9C,0xAA39,0xA1B6,0xA217,0xA298,0x92D9,0x4154,0x3278,0x237A,0x1C7C,0x0D1D,0x0DFE,0x0E9E,0x177F,0x17DF,0x0FDF,0x07DF,0x07DF,0x07DF,0x07BF,0x0FBF,0x0FBF,0x179F,0x275F,0x36FE,0x5EDF,0x865F,0x5B34,0x8A73,0xAA13,0xB9F3,0xC9D3,0xC9D3,0xC9B3,0xC993,0xD193,0xC973,0xD1B3,0xD1B3,0xC9B3,0xC9B3,0xC1D3,0xB9D3,0xB214,0xB296,0x6910,0x6151,0x5151,0x4951,0x4171,0x4171,0x3972,0x3972,0x3972,0x3151,0x3951,0x3151,0x3151,0x3151,0x3151,0x3150,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x290F,0x292F,0x2930,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x2131,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x212F,0x2930,0x2930,0x2930,0x2130,0x212F,0x210F,0x212F,0x290F,0x292F,0x292F,0x210F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2131,0x2111,0x1931,0x1932,0x1153,0x1174,0x11B5,0x2217,0x2237,0x19D6,0x19B5,0x1153,0x1112,0x1931,0x1911,0x1910,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x290F,0x210F,0x2930,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x2910,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x2930,0x290F,0x212F,0x212F,0x290F,0x2930,0x2110,0x2110,0x2930,0x2930,0x290F,0x210F,0x290F,0x2910,0x2930,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x290F,0x290F,0x2930,0x290F,0x2930,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x2930,0x2910,0x2910,0x210F,0x290F,0x2910,0x2910,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x2930,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x2930,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2930,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2950,0x2950,0x2130,0x2130,0x2130,0x2110,0x2131,0x1931,0x1931,0x1931,0x1932,0x1932,0x1112, + 0x2150,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1132,0x1153,0x1995,0x19D6,0x21F7,0x19F7,0x19B6,0x1175,0x1154,0x1133,0x1153,0x1132,0x1132,0x1132,0x1153,0x1154,0x1195,0x1195,0x11B6,0x11D6,0x19F7,0x19D7,0x19B6,0x1195,0x1175,0x1154,0x1153,0x1133,0x1153,0x1133,0x1153,0x1132,0x1153,0x1153,0x1153,0x0954,0x0954,0x1195,0x11B6,0x19F7,0x19F7,0x19F7,0x19D6,0x11B6,0x1174,0x1133,0x1132,0x1911,0x1931,0x1931,0x1910,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x212F,0x210F,0x212F,0x210F,0x2930,0x210F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x290F,0x290F,0x212F,0x2930,0x2110,0x210F,0x2910,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2930,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x2930,0x292F,0x210F,0x210F,0x2110,0x2130,0x2151,0x2131,0x1932,0x10F2,0x1133,0x11B6,0x11F8,0x01D8,0x09F9,0x01B9,0x01BA,0x01BA,0x01BA,0x01BA,0x01BA,0x01BA,0x01DA,0x01B9,0x09F9,0x11F8,0x1196,0x1112,0x1931,0x2111,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2131,0x2131,0x1911,0x1911,0x1132,0x1153,0x1995,0x21D6,0x21F7,0x21F7,0x19B6,0x1974,0x1133,0x1112,0x1931,0x2131,0x2131,0x2131,0x1911,0x1931,0x1952,0x1112,0x1132,0x1154,0x1195,0x2217,0x2237,0x21F6,0x1194,0x1153,0x1132,0x1932,0x1931,0x1931,0x2131,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2131,0x2110,0x2131,0x2131,0x2131,0x2111,0x2111,0x1911,0x1932,0x1132,0x1133,0x1154,0x19B6,0x21F7,0x21F7,0x19D6,0x1995,0x1153,0x1133,0x1112,0x1932,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1112,0x1133,0x1154,0x19B6,0x2217,0x21F7,0x19D6,0x1995,0x1154,0x1112,0x1111,0x1111,0x1911,0x1111,0x1111,0x1931,0x1931,0x1931,0x1931,0x1931,0x1111,0x1931,0x1911,0x1911,0x1932,0x1132,0x1111,0x1132,0x1132,0x1153,0x1153,0x1174,0x0975,0x11B6,0x09D7,0x09F8,0x09F9,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x11F9,0x2239,0x21F8,0x1154,0x1112,0x1932,0x1931,0x2131,0x2131,0x2131,0x2130,0x2110,0x2110,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x2930,0x290F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x212F,0x212F,0x2110,0x2110,0x2110,0x2930,0x2130,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x2130,0x2930,0x290F,0x292F,0x2930,0x290F,0x292F,0x292F,0x212F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x2950,0x2950,0x2950,0x2930,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3151,0x3971,0x3971,0x3972,0x3972,0x4172,0x3972,0x4192,0x4192,0x4192,0x4193,0x4193,0x41B3,0x49B3,0x49B3,0x49B4,0x49D4,0x51B4,0x51B4,0x59D4,0x51D4,0x59D4,0x59D4,0x59D4,0x59D4,0x61F4,0x59D3,0x61D3,0x61D3,0x69F3,0x7213,0x6191,0x71D2,0x9B57,0xBC5B,0xBC9A,0xAC58,0xACB9,0xB55B,0x9CD9,0x6BF5,0x5BB4,0x5394,0x5374,0x4B34,0x5313,0x5B14,0x5AB3,0x5211,0x518F,0x7A92,0xB3F8,0xD49A,0xCC39,0xD438,0xD439,0xD418,0xD418,0xD418,0xD3F8,0xD418,0xD418,0xD3F7,0xCBF8,0xCC38,0xC479,0x9BF6,0x83D5,0xA5BC,0x8E1D,0x7E5D,0x669D,0x4EBD,0x3F1E,0x2F3E,0x1F7E,0x17BF,0x0FBF,0x0FBF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x0F9F,0x1F7F,0x2F5F,0x3F1E,0x5EBE,0x7DFC,0x7C16,0xA3D6,0xBB96,0xCB55,0xD335,0xDB55,0xDB35,0xDB55,0xD355,0xCB96,0x92F3,0x8416,0x7E5D,0x571E,0x375F,0x1F7F,0x0F9F,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DE,0x07FE,0x07FE,0x07FE,0x07FE,0x07DE,0x07DE,0x07FE,0x07FE,0x07DE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DD,0x07BD,0x07BD,0x0F9D,0x0F9D,0x177D,0x275D,0x373D,0x471D,0x567B,0x6E5C,0x75DB,0x7D5A,0x8D3B,0x8CBB,0x949C,0x9D1F,0x6BBD,0x29D7,0x1A1A,0x121C,0x01FC,0x01FD,0x01FE,0x01FF,0x01DF,0x01FF,0x01DF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x019F,0x019F,0x01BF,0x019E,0x09BE,0x099D,0x115C,0x29BD,0x30D9,0x69BB,0xAABC,0xB259,0xA1B6,0xA9F6,0xA237,0xA2FA,0x59B5,0x29B5,0x337A,0x1C5C,0x151D,0x0DDE,0x0E9F,0x175F,0x17BF,0x0FDF,0x07DF,0x07DF,0x07BF,0x07DF,0x07BF,0x0FBF,0x179F,0x1F7F,0x2F3F,0x4EDF,0x76BF,0x7499,0x7A73,0xA233,0xB1F3,0xC1D3,0xC9B3,0xC993,0xD193,0xD193,0xD193,0xD1B3,0xD1B3,0xD1B3,0xC9B3,0xC9B3,0xC1D4,0xB1F4,0xB276,0x89B2,0x6110,0x5951,0x4951,0x4151,0x4172,0x3972,0x3972,0x3972,0x3971,0x3951,0x3151,0x3151,0x3151,0x3130,0x3151,0x3150,0x2930,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2910,0x2910,0x2930,0x2930,0x290F,0x2930,0x292F,0x210F,0x290F,0x290F,0x290F,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x2130,0x212F,0x210F,0x2110,0x2110,0x2130,0x2111,0x2131,0x2131,0x2131,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x2130,0x2130,0x2130,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x292F,0x2930,0x2130,0x2130,0x2131,0x1911,0x1932,0x1932,0x1133,0x1174,0x1195,0x19F7,0x2217,0x21F6,0x1995,0x1153,0x1132,0x1932,0x1931,0x2111,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x290F,0x290F,0x290F,0x2930,0x2930,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x210F,0x290F,0x292F,0x210F,0x290F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x2930,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x290F,0x212F,0x292F,0x210F,0x290F,0x2110,0x2110,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x2910,0x2910,0x290F,0x210F,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x2930,0x2910,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x210F,0x290F,0x212F,0x2130,0x2130,0x2110,0x2130,0x210F,0x212F,0x210F,0x2930,0x212F,0x212F,0x212F,0x292F,0x2930,0x2130,0x2930,0x2110,0x2130,0x2130,0x1910,0x1930,0x1931,0x1931,0x1931, + 0x2930,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1911,0x1931,0x1932,0x1153,0x1153,0x19B5,0x19D6,0x19F7,0x19D6,0x1196,0x1175,0x1154,0x1133,0x1133,0x1132,0x1132,0x1132,0x1132,0x1194,0x11B5,0x11B5,0x11B6,0x11D6,0x19D7,0x11B6,0x1195,0x1154,0x1154,0x1154,0x1153,0x1953,0x1953,0x1952,0x1952,0x1953,0x1952,0x1953,0x1153,0x1132,0x1133,0x1154,0x1154,0x1175,0x1195,0x11D6,0x19D7,0x11B6,0x19D7,0x21F7,0x1174,0x1133,0x1132,0x1111,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x212F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x2930,0x2930,0x290F,0x290F,0x292F,0x212F,0x2930,0x212F,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x2930,0x292F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2151,0x2132,0x10F1,0x0912,0x11B6,0x1218,0x09F8,0x01D9,0x01B9,0x01BA,0x01FA,0x021B,0x01FB,0x01FA,0x01BA,0x01BA,0x01B9,0x09F9,0x1219,0x19D7,0x08F2,0x1911,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2151,0x2131,0x1931,0x1931,0x1132,0x1153,0x1995,0x21D6,0x21F7,0x21D6,0x21B6,0x1154,0x1133,0x10F1,0x1911,0x1931,0x1931,0x1931,0x2152,0x1952,0x1131,0x1112,0x1132,0x1153,0x19B5,0x2217,0x21F7,0x19F6,0x1195,0x1153,0x1153,0x1932,0x1932,0x1932,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x1931,0x2131,0x2131,0x2130,0x1910,0x2131,0x2131,0x2130,0x2130,0x2131,0x2131,0x2131,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1911,0x2131,0x2132,0x1932,0x1932,0x1132,0x1133,0x1154,0x21D6,0x21F7,0x19D6,0x21D7,0x1975,0x1153,0x1132,0x1112,0x1932,0x1931,0x1931,0x1931,0x1931,0x1952,0x1932,0x1132,0x1133,0x1154,0x19B6,0x2217,0x19F7,0x19D6,0x1175,0x1133,0x1112,0x1111,0x1911,0x2131,0x1911,0x2131,0x1930,0x2131,0x1930,0x1931,0x2131,0x1931,0x1931,0x2131,0x1911,0x2131,0x2131,0x1931,0x1911,0x1931,0x1931,0x1931,0x1132,0x1153,0x1174,0x1175,0x0996,0x11D7,0x11D8,0x09D8,0x09D8,0x09D9,0x09D8,0x11B8,0x11D7,0x2218,0x1996,0x1112,0x1912,0x1931,0x2131,0x2131,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x290F,0x2930,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x2930,0x2130,0x2130,0x2130,0x212F,0x210F,0x2110,0x2110,0x2910,0x2110,0x212F,0x210F,0x2130,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2930,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2930,0x212F,0x2130,0x2930,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2930,0x2950,0x2950,0x2950,0x3130,0x3151,0x3151,0x3131,0x3151,0x3151,0x3971,0x3971,0x3951,0x3951,0x3972,0x3972,0x4172,0x3972,0x3992,0x4192,0x3992,0x4193,0x4193,0x41B3,0x49B3,0x49B4,0x49B4,0x49B4,0x51B4,0x51B4,0x51B3,0x51B4,0x59D4,0x59B3,0x59B3,0x61D3,0x61D3,0x61D3,0x69F3,0x7213,0x69B1,0x8AD5,0xC49B,0xC4BB,0xB439,0xA417,0xACF9,0xAD3A,0x94F9,0x6C15,0x74B7,0x6477,0x5436,0x4BD5,0x4B74,0x4B54,0x5334,0x5B14,0x5AD3,0x5A92,0x51D0,0x492E,0x7232,0xB3B8,0xCC5A,0xCC39,0xCC18,0xD418,0xD418,0xD3F8,0xD3D7,0xD3D7,0xDC18,0xD3F8,0xCBF7,0xCC18,0xBC38,0xA417,0x7333,0x955B,0x8E1D,0x6E5D,0x56BD,0x46FE,0x2F3E,0x275E,0x177E,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07BF,0x0FBF,0x179F,0x277F,0x2F3E,0x46FE,0x669D,0x7DDB,0x8416,0xABB6,0xC3B6,0xCB35,0xDB56,0xDB56,0xDB36,0xDB55,0xD335,0xBB55,0x8AF2,0x8477,0x7E9D,0x4EFD,0x375F,0x1F7F,0x0F9E,0x07BF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FE,0x07FF,0x07FE,0x07FF,0x07DE,0x07DE,0x07FF,0x07FE,0x07FF,0x07FE,0x07FE,0x07FE,0x07FE,0x07FF,0x07FF,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FE,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DF,0x07DE,0x07DE,0x07DE,0x07FE,0x07DE,0x07DE,0x07DE,0x07BE,0x079D,0x0F9E,0x177E,0x277E,0x375D,0x3EBC,0x567C,0x765C,0x7DDB,0x855B,0x8CFB,0x8C9B,0x947C,0xA51F,0x5AFA,0x21F8,0x19FA,0x09FB,0x01FD,0x01BD,0x01DE,0x01DF,0x01DF,0x01DF,0x01BF,0x01BF,0x01DF,0x019F,0x01BF,0x019F,0x01BF,0x01BF,0x019E,0x019E,0x099E,0x117D,0x217C,0x28B9,0x5139,0xAA9C,0xB25A,0xA1B6,0xA1B6,0xA216,0xA2B9,0x7237,0x3173,0x2AF8,0x2C7C,0x14FD,0x15DE,0x0E7F,0x175F,0x17BF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x0FBF,0x1F9F,0x275F,0x3EFE,0x66BF,0x85DD,0x6AB3,0x9233,0xAA13,0xB9D3,0xC192,0xC9B3,0xC9B3,0xD193,0xD193,0xD193,0xD193,0xC993,0xC9B3,0xC9B3,0xC1B3,0xB9D4,0xBA55,0xA255,0x58AF,0x5911,0x4931,0x4151,0x4172,0x4172,0x3972,0x3972,0x3951,0x3951,0x3151,0x3151,0x3151,0x3151,0x3151,0x3130,0x2930,0x3150,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x210F,0x290F,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2111,0x1911,0x1912,0x1932,0x1912,0x1933,0x1933,0x1133,0x1133,0x1933,0x1932,0x1932,0x1931,0x1911,0x1910,0x2110,0x2130,0x2130,0x292F,0x292F,0x292F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x2930,0x2110,0x2130,0x2130,0x2131,0x2131,0x1911,0x1932,0x1153,0x1174,0x19B5,0x2217,0x21F7,0x19D6,0x19B5,0x1153,0x1132,0x1912,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x290F,0x290F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x292F,0x2930,0x212F,0x2930,0x292F,0x2930,0x210F,0x2110,0x2130,0x2130,0x2111,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x2910,0x2910,0x210F,0x2110,0x212F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x2930,0x2930,0x210F,0x2930,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x2930,0x2930,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x290F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x1930,0x2151,0x2151, + 0x2930,0x212F,0x292F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2110,0x1911,0x1931,0x1932,0x1153,0x1153,0x19B5,0x19F6,0x19F7,0x19D6,0x1995,0x1154,0x1154,0x1133,0x1953,0x1132,0x1132,0x1132,0x1132,0x1173,0x1195,0x11B5,0x11D6,0x19F7,0x11D6,0x11B6,0x1195,0x1154,0x1153,0x1153,0x1133,0x1953,0x1952,0x1932,0x1952,0x1952,0x1952,0x1932,0x1952,0x1973,0x1952,0x1153,0x1133,0x1133,0x1153,0x1174,0x1175,0x11B6,0x19D7,0x19D7,0x2218,0x2217,0x1153,0x1132,0x1112,0x1931,0x1931,0x1931,0x2131,0x2110,0x2130,0x212F,0x212F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2130,0x2110,0x2910,0x2110,0x2910,0x2110,0x210F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2130,0x212F,0x210F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x212F,0x292F,0x2110,0x2930,0x210F,0x290F,0x292F,0x292F,0x210F,0x212F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1112,0x11B5,0x11F8,0x09F8,0x0A1A,0x01B9,0x01DA,0x01FA,0x0A1B,0x021B,0x01DA,0x01BA,0x01BA,0x01B9,0x09F9,0x1A19,0x19B6,0x10F2,0x1911,0x2111,0x2131,0x2110,0x2130,0x2110,0x210F,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x1951,0x1932,0x1132,0x1133,0x1975,0x21D6,0x21F7,0x21D7,0x19B6,0x1174,0x1112,0x1111,0x1931,0x2152,0x2151,0x1951,0x1951,0x1931,0x1131,0x1132,0x1133,0x1174,0x19B5,0x21F7,0x2217,0x19F6,0x11B5,0x1153,0x1133,0x1133,0x1932,0x1932,0x1932,0x1911,0x1931,0x1911,0x1911,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1912,0x1932,0x1912,0x1912,0x1133,0x1133,0x1154,0x19B6,0x21F7,0x21F7,0x21F7,0x1175,0x1154,0x1132,0x1932,0x1932,0x1931,0x1931,0x2131,0x1931,0x1932,0x1932,0x1132,0x0913,0x1154,0x19D6,0x2217,0x21F7,0x19D6,0x1175,0x1133,0x1132,0x1111,0x1911,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2131,0x2110,0x2110,0x2131,0x1910,0x2131,0x1931,0x1951,0x1951,0x1132,0x1153,0x1154,0x1175,0x1195,0x11B6,0x11D7,0x11B7,0x11D7,0x11B7,0x11B6,0x1175,0x1154,0x1133,0x1932,0x1911,0x1931,0x2131,0x2130,0x2110,0x2130,0x2130,0x2110,0x2930,0x2930,0x210F,0x292F,0x210F,0x210F,0x2930,0x2930,0x290F,0x2110,0x210F,0x2930,0x2110,0x2110,0x2110,0x210F,0x2930,0x2110,0x2910,0x2110,0x210F,0x2930,0x2930,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2110,0x2110,0x2930,0x2130,0x2110,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x2130,0x2130,0x210F,0x210F,0x2930,0x2910,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2930,0x290F,0x2930,0x210F,0x2930,0x2930,0x2930,0x2110,0x2130,0x2930,0x2130,0x2930,0x2130,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x2950,0x2950,0x3150,0x3130,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3151,0x3951,0x3972,0x3972,0x3972,0x3972,0x3972,0x3992,0x3992,0x4193,0x4193,0x4193,0x49B3,0x4993,0x49B3,0x49B3,0x51B4,0x51B4,0x5193,0x51B3,0x59B3,0x59B3,0x59B3,0x61D3,0x61D3,0x61D3,0x69F3,0x69B1,0x8274,0xB419,0xC49B,0xBC79,0xAC38,0xAC78,0xACFA,0xA55A,0x84B7,0x6C76,0x6476,0x5476,0x5476,0x4C56,0x4C35,0x4BF5,0x4394,0x4B53,0x5354,0x5314,0x5AD3,0x5A72,0x5A32,0x59F1,0x61B0,0x7A32,0xAB97,0xCC5A,0xC418,0xCC19,0xD419,0xD3F8,0xD3F8,0xD3F8,0xD3F8,0xD418,0xD417,0xCC17,0xBC38,0xA3F7,0x6B13,0x955B,0x863D,0x665D,0x4EBD,0x3F1E,0x2F3E,0x1F7E,0x179F,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x0FBF,0x1F9F,0x275E,0x373E,0x4EDE,0x767D,0x7D39,0x8BF6,0xABB6,0xC396,0xD355,0xDB56,0xDB36,0xDB35,0xDB55,0xD376,0xC375,0x9313,0x8497,0x767D,0x4F1E,0x2F5E,0x1F7F,0x0F9F,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DE,0x07FF,0x07FE,0x07FF,0x07FE,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07FF,0x07DE,0x07FE,0x07DE,0x07DE,0x07BE,0x07BE,0x0F9E,0x0F9E,0x177E,0x277E,0x375E,0x46DD,0x5E7C,0x763C,0x7D9B,0x851A,0x94DB,0x947B,0xA4BD,0xA4FF,0x4258,0x21D8,0x19FB,0x11FC,0x01DD,0x01BD,0x01DE,0x01DF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x019F,0x01BF,0x01BF,0x01BF,0x01DF,0x017E,0x099E,0x097D,0x197D,0x28FA,0x48D8,0xA27C,0xBA9B,0xA9D7,0xA1B5,0xA1F6,0xA298,0x8A98,0x3972,0x2AB7,0x2C5C,0x1CFD,0x0D7D,0x0E5E,0x173F,0x17BF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x0FBF,0x179F,0x275F,0x371E,0x56DF,0x865F,0x7376,0x7A12,0xAA54,0xBA13,0xB9B2,0xC9D3,0xD1D3,0xC993,0xC993,0xD193,0xD193,0xD193,0xC973,0xC9B3,0xC9D4,0xC1D4,0xB1F4,0xBAB7,0x68F0,0x5911,0x4931,0x4951,0x4172,0x4172,0x4192,0x3971,0x3971,0x3971,0x3171,0x3151,0x3151,0x3151,0x3151,0x3130,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x290F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2111,0x1911,0x1911,0x1112,0x1133,0x1133,0x1154,0x1175,0x1995,0x1175,0x1175,0x1154,0x1133,0x1133,0x1132,0x1932,0x1931,0x2131,0x2130,0x2130,0x2930,0x2130,0x212F,0x212F,0x292F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2930,0x2930,0x2110,0x2910,0x2930,0x290F,0x290F,0x2110,0x2930,0x2130,0x2130,0x2111,0x1911,0x1932,0x1932,0x1953,0x1154,0x1995,0x2217,0x21F7,0x21F6,0x1995,0x1133,0x1133,0x1112,0x1911,0x2131,0x2110,0x2110,0x2130,0x2110,0x2130,0x2930,0x2930,0x2930,0x210F,0x212F,0x2130,0x212F,0x2130,0x212F,0x2930,0x2110,0x2930,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x1911,0x1931,0x1911,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x2910,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x2910,0x290F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x210F,0x210F,0x292F,0x292F,0x290F,0x2910,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130, + 0x2930,0x292F,0x290F,0x290F,0x210F,0x210F,0x212F,0x2930,0x210F,0x2130,0x2110,0x2110,0x1931,0x1931,0x1953,0x1153,0x1174,0x1195,0x19F6,0x2217,0x19F7,0x1195,0x1154,0x1133,0x1133,0x1933,0x1932,0x1112,0x1111,0x1111,0x1133,0x1174,0x11B5,0x11B6,0x11D6,0x11B6,0x19D7,0x1196,0x1974,0x1133,0x1132,0x1132,0x1112,0x1111,0x1931,0x1931,0x1111,0x1911,0x1931,0x1931,0x1931,0x1932,0x1952,0x1952,0x1953,0x1133,0x1133,0x1133,0x1133,0x1175,0x1195,0x19B6,0x2218,0x2217,0x19B5,0x1153,0x1132,0x1111,0x1931,0x1931,0x2131,0x2131,0x2130,0x2110,0x212F,0x210F,0x292F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2910,0x292F,0x292F,0x2930,0x2930,0x290F,0x210F,0x2930,0x2930,0x2930,0x292F,0x212F,0x212F,0x2130,0x2110,0x210F,0x210F,0x212F,0x212F,0x2930,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1132,0x1195,0x1A18,0x09D8,0x09F9,0x01B9,0x01D9,0x01B9,0x01FA,0x01DA,0x01DA,0x01B9,0x01B9,0x01D9,0x11F9,0x1A18,0x1195,0x10F2,0x1911,0x2111,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2151,0x2172,0x1932,0x1912,0x1112,0x1133,0x1995,0x21D7,0x21F7,0x21F7,0x19B5,0x1174,0x0912,0x1132,0x1952,0x1931,0x1931,0x1931,0x1931,0x1951,0x1932,0x1132,0x1153,0x1153,0x19B5,0x2217,0x19F7,0x19D6,0x1175,0x1154,0x0913,0x1133,0x1112,0x1132,0x1112,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1132,0x1132,0x1932,0x1932,0x1132,0x1132,0x1932,0x1932,0x1131,0x1132,0x1932,0x1932,0x1932,0x1132,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1912,0x1912,0x1912,0x1112,0x1932,0x1932,0x1112,0x1112,0x1112,0x1112,0x1112,0x1133,0x1133,0x1113,0x1134,0x1175,0x19D7,0x19D7,0x19D6,0x1975,0x1113,0x1132,0x1932,0x1932,0x1932,0x1952,0x1911,0x1911,0x2152,0x1952,0x1112,0x1112,0x1174,0x19D6,0x2217,0x2217,0x19B6,0x1175,0x1153,0x1132,0x1932,0x1911,0x2131,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1132,0x1133,0x1154,0x1175,0x19B6,0x1196,0x19D6,0x19B6,0x1154,0x1133,0x1132,0x1911,0x1931,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x212F,0x212F,0x292F,0x212F,0x210F,0x210F,0x212F,0x2130,0x210F,0x2910,0x2930,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2930,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2910,0x2910,0x2110,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x2130,0x210F,0x2130,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2930,0x2950,0x2930,0x2950,0x2930,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3971,0x3951,0x3972,0x3951,0x3972,0x3972,0x3972,0x3992,0x4193,0x4193,0x4193,0x41B3,0x49B3,0x49B3,0x4993,0x4993,0x51B3,0x51B3,0x51B3,0x59B3,0x59B3,0x59B3,0x61D3,0x61B2,0x69B2,0x69B1,0x79F2,0xAB97,0xD4DC,0xC47A,0xB438,0xB499,0xB4F9,0xAD3A,0x94D8,0x7CB7,0x6CD7,0x6D18,0x5CD7,0x4C95,0x4C96,0x4C76,0x4455,0x4435,0x5436,0x4BB4,0x4B53,0x5334,0x5314,0x5AD3,0x62B3,0x5A52,0x5A11,0x6212,0x61B0,0x8293,0xABB7,0xC43A,0xCC19,0xCBF8,0xD3D8,0xD3D8,0xD3D7,0xD3F7,0xD3F7,0xD417,0xCC18,0xC458,0xAC58,0x7354,0x9D9C,0x861D,0x669D,0x56FE,0x3F3E,0x277E,0x179F,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07BF,0x0F9F,0x1F9F,0x2F7F,0x471E,0x5EBE,0x7E1C,0x7C98,0x93F6,0xBBD6,0xC355,0xD356,0xDB35,0xDB35,0xDB35,0xD335,0xD376,0xB334,0x82F2,0x8477,0x769D,0x4F3E,0x2F3E,0x177F,0x0FBF,0x07BF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FE,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07DE,0x07BE,0x07BF,0x0FBE,0x0F9E,0x179E,0x277E,0x3F3E,0x46BC,0x5E7C,0x7E3C,0x859B,0x8CFA,0x94BA,0x9C9B,0xA4BE,0x947E,0x39F7,0x19B8,0x19DB,0x11FC,0x09DD,0x01BE,0x01BE,0x01BE,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x019F,0x017E,0x099E,0x195D,0x293B,0x40B8,0x89DA,0xB27B,0xA9D7,0xA9B5,0xA9D5,0xAA77,0x9AD8,0x49D3,0x2234,0x345C,0x1CFD,0x159E,0x0E3E,0x173F,0x0F7F,0x0FBF,0x07DF,0x07DF,0x07BF,0x07DF,0x07BF,0x07BF,0x0FBF,0x17BF,0x1F7F,0x2F3E,0x46BE,0x767F,0x7C79,0x6A32,0x9A53,0xA9F3,0xB1B2,0xC1D3,0xC9D3,0xC9B3,0xD1B3,0xD1B3,0xC973,0xD193,0xC973,0xC993,0xC1B3,0xC1D4,0xB9D4,0xBA55,0x8972,0x58D0,0x5131,0x4951,0x4172,0x4172,0x3972,0x3992,0x3971,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3131,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x290F,0x2930,0x292F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2130,0x1911,0x1932,0x1133,0x1154,0x1175,0x19B7,0x11D7,0x19F8,0x1A19,0x1A39,0x1A18,0x1A18,0x11B7,0x1175,0x1154,0x1133,0x1932,0x1911,0x1911,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2931,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2930,0x2930,0x2130,0x2110,0x2110,0x2110,0x2131,0x2152,0x1932,0x1153,0x1154,0x19B5,0x2217,0x2217,0x19D6,0x1174,0x1154,0x1953,0x1932,0x1931,0x2111,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1931,0x1931,0x1932,0x1932,0x1953,0x1133,0x1133,0x1153,0x1153,0x1153,0x1133,0x1112,0x1932,0x1911,0x1931,0x2110,0x2110,0x2130,0x210F,0x212F,0x210F,0x212F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2910,0x210F,0x2910,0x2930,0x2930,0x2930,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x2930,0x290F,0x290F,0x210F,0x2910,0x2930,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x212F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F, + 0x292F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2110,0x2111,0x1931,0x1911,0x1932,0x1153,0x1154,0x1175,0x19F6,0x2217,0x19D6,0x19B6,0x1174,0x1133,0x1112,0x1932,0x1912,0x1912,0x1911,0x1131,0x1132,0x1153,0x1174,0x1195,0x19D7,0x19D7,0x19D6,0x1195,0x1175,0x1153,0x1132,0x1112,0x1111,0x1111,0x1911,0x1131,0x1111,0x1931,0x1931,0x1111,0x1111,0x1931,0x1131,0x1931,0x1952,0x1952,0x1952,0x1132,0x1132,0x1133,0x1133,0x1174,0x19B6,0x19D7,0x21F7,0x21F7,0x1194,0x1153,0x1132,0x1111,0x1911,0x2131,0x2131,0x2130,0x2110,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2110,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x2930,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x210F,0x2930,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2131,0x1931,0x1932,0x1174,0x19F7,0x11F8,0x01B8,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01DA,0x01B9,0x09D8,0x1219,0x1A18,0x1174,0x1112,0x1911,0x2111,0x2110,0x2110,0x2110,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1912,0x1912,0x1933,0x1154,0x19B6,0x19D6,0x19D7,0x19D6,0x19B6,0x1154,0x1133,0x1132,0x1932,0x1931,0x1931,0x1951,0x2152,0x1931,0x1131,0x1132,0x1133,0x1154,0x19B5,0x19F7,0x1A17,0x19D6,0x1175,0x0954,0x1154,0x0933,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1132,0x1133,0x1133,0x1133,0x1133,0x1133,0x1132,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1133,0x1133,0x1132,0x1132,0x1132,0x1132,0x1152,0x1132,0x1132,0x1133,0x1132,0x1133,0x1132,0x1133,0x1133,0x1133,0x1133,0x1113,0x1133,0x1133,0x1133,0x1134,0x1995,0x21F7,0x19D6,0x19D6,0x1975,0x1133,0x1132,0x1932,0x1932,0x1931,0x1931,0x1931,0x1911,0x1932,0x1932,0x1112,0x1113,0x1154,0x19D6,0x2217,0x2217,0x19F6,0x1195,0x1133,0x1132,0x1932,0x1931,0x1931,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x1931,0x1931,0x1932,0x1932,0x1132,0x1153,0x1153,0x1153,0x1153,0x1153,0x1132,0x1931,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2930,0x2110,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2130,0x210F,0x2930,0x2910,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2950,0x2950,0x3150,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3971,0x3971,0x3951,0x3972,0x3972,0x3972,0x3972,0x3972,0x4193,0x4193,0x4193,0x4193,0x49B3,0x4993,0x5193,0x51B3,0x5193,0x5193,0x59B3,0x59B2,0x61B2,0x69D2,0x6191,0x612F,0x9AD5,0xCC7B,0xCC9A,0xC459,0xBC79,0xBCB9,0xB4F9,0xAD39,0x94F8,0x7CB7,0x6CF7,0x5CF6,0x5517,0x5517,0x4CF7,0x44B6,0x44B6,0x4496,0x4C76,0x4C35,0x5415,0x53B4,0x4B33,0x52F3,0x5AF4,0x62F4,0x5272,0x5A52,0x6252,0x6232,0x61F1,0x596F,0x7A52,0xB3B8,0xCC19,0xCBF8,0xD3F8,0xD3F8,0xD3D7,0xD3D7,0xD3F7,0xD418,0xC417,0xC438,0xA417,0x83D5,0x959B,0x7E3D,0x66BD,0x4EFD,0x375E,0x1F7E,0x17BF,0x0FBF,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x0FBF,0x17BF,0x1F7F,0x373F,0x4EFE,0x6E9D,0x85DC,0x7C36,0xA3D6,0xBBB6,0xCB55,0xD335,0xD335,0xDB15,0xDB35,0xD335,0xD396,0xB354,0x8312,0x84F9,0x6E9D,0x471E,0x2F5E,0x177F,0x0F9F,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DF,0x07DE,0x07DE,0x07DE,0x07DF,0x07BF,0x07BF,0x07BF,0x0FBF,0x0F9E,0x177E,0x2F7F,0x3F3E,0x4EBC,0x665C,0x7DFC,0x855A,0x8CDA,0x949A,0x9C7B,0xA4DE,0x8C3E,0x2175,0x21D9,0x19DB,0x09DD,0x01BD,0x01BE,0x01DE,0x01DF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x019F,0x017E,0x019E,0x099E,0x115D,0x295C,0x3098,0x819A,0xB27B,0xA9D8,0xA9D6,0xA9D5,0xA215,0xA2F8,0x6255,0x21F3,0x3C1B,0x24DD,0x1DBE,0x165F,0x171F,0x179F,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x0FBF,0x1FBF,0x273F,0x3EBE,0x6E9F,0x857C,0x62B3,0x9294,0x99D2,0xB1D2,0xC1D3,0xC9B3,0xD1B3,0xD1B3,0xC973,0xD193,0xC973,0xC973,0xC993,0xC9B4,0xC1B4,0xB9D4,0xB1F5,0xA215,0x68D0,0x5931,0x4951,0x4972,0x4172,0x3972,0x3992,0x3951,0x3971,0x3951,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x290F,0x2930,0x292F,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x290F,0x2910,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2131,0x1932,0x1153,0x1175,0x19D7,0x19F8,0x1A39,0x11F9,0x11F9,0x09D9,0x09F9,0x09F9,0x1219,0x11F8,0x11B7,0x1196,0x1154,0x1153,0x1932,0x1932,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2111,0x2131,0x2131,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x1931,0x1932,0x1953,0x1154,0x19B5,0x21F7,0x2217,0x19D7,0x1175,0x1154,0x1953,0x1932,0x1932,0x1911,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x292F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x1931,0x1931,0x1932,0x1952,0x1973,0x1974,0x1174,0x1195,0x1195,0x1195,0x11B5,0x1195,0x1174,0x1154,0x1132,0x1932,0x1911,0x2131,0x2130,0x2130,0x2110,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x2910,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x210F,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x290F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F, + 0x2930,0x2930,0x2910,0x290F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1911,0x1132,0x1953,0x1154,0x1154,0x19F6,0x2238,0x19D6,0x1195,0x1994,0x1153,0x1132,0x1932,0x1912,0x1932,0x1911,0x1911,0x1132,0x1153,0x1154,0x0954,0x19D6,0x19F7,0x19B6,0x1195,0x1174,0x1153,0x1132,0x1132,0x1111,0x1111,0x1932,0x1931,0x1131,0x1131,0x1131,0x1111,0x1111,0x1132,0x1111,0x1132,0x1132,0x1952,0x1952,0x1952,0x1932,0x1112,0x1112,0x1133,0x1154,0x1195,0x19B6,0x2217,0x2238,0x19D6,0x1154,0x1112,0x10F1,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x210F,0x2930,0x2910,0x2910,0x210F,0x212F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x210F,0x210F,0x2110,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2910,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2910,0x2110,0x2930,0x212F,0x210F,0x290F,0x2930,0x2930,0x2930,0x290F,0x212F,0x2110,0x210F,0x210F,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x1932,0x1153,0x19D6,0x1218,0x09F8,0x01D9,0x01D9,0x01D9,0x01FA,0x01D9,0x01D9,0x01D9,0x01B8,0x11F8,0x1A18,0x21F7,0x1153,0x1912,0x1911,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x210F,0x2110,0x2110,0x2131,0x2131,0x1912,0x1912,0x1133,0x1154,0x1995,0x19D6,0x19D6,0x19F6,0x21F6,0x1174,0x0912,0x1112,0x1911,0x1931,0x1931,0x2151,0x2152,0x1952,0x1911,0x1132,0x1132,0x1154,0x1195,0x19F7,0x1A17,0x19F7,0x11B6,0x1195,0x1195,0x1194,0x1994,0x1974,0x1974,0x1974,0x1974,0x1974,0x1994,0x1974,0x1174,0x1974,0x1974,0x1974,0x1974,0x1974,0x1994,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1174,0x1994,0x1974,0x1974,0x1174,0x1974,0x1974,0x1954,0x1974,0x1974,0x1974,0x1974,0x1174,0x1174,0x1975,0x1975,0x1975,0x1995,0x19B6,0x21D6,0x2217,0x21F7,0x21F6,0x1974,0x1133,0x1132,0x1932,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x1912,0x1112,0x1133,0x1154,0x19D7,0x2217,0x2217,0x19D6,0x1174,0x0933,0x1112,0x1132,0x1931,0x1931,0x2130,0x1910,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2930,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1952,0x1932,0x1931,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x212F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x2910,0x2910,0x290F,0x210F,0x2930,0x210F,0x2110,0x210F,0x20EF,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x2950,0x2950,0x2950,0x3150,0x3150,0x3151,0x3151,0x3151,0x3171,0x3971,0x3971,0x3972,0x3971,0x3972,0x3972,0x3972,0x3972,0x3992,0x4193,0x41B3,0x41B3,0x4193,0x4193,0x4993,0x4993,0x5193,0x5193,0x5193,0x5992,0x5992,0x6192,0x6191,0x6170,0x8253,0xC43A,0xE4FC,0xCC7A,0xCC99,0xC479,0xBCB9,0xB4F9,0xA4F8,0x84B7,0x7CF7,0x6CF7,0x6517,0x5516,0x5537,0x4D16,0x5537,0x4D17,0x4CF6,0x4496,0x4475,0x4C56,0x4BF5,0x53D5,0x5395,0x5B54,0x52F3,0x52B3,0x5AD3,0x62B3,0x5A52,0x5A32,0x6252,0x6A52,0x61F1,0x596F,0x8253,0xB397,0xCC19,0xCBF8,0xCBD7,0xCBD7,0xCBD7,0xCBF7,0xCBF7,0xCC37,0xC458,0x9BB6,0x7395,0x8D9B,0x763C,0x5EBD,0x3EFD,0x275E,0x179E,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x0FDF,0x0F9F,0x177F,0x275F,0x3F1F,0x569D,0x763C,0x8D5A,0x83D5,0xB417,0xBB96,0xCB76,0xD336,0xDB35,0xDB35,0xDB35,0xD355,0xD396,0xB354,0x7B12,0x8519,0x6EDE,0x473E,0x277F,0x17BF,0x0FBF,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DE,0x07DE,0x07BE,0x07DF,0x07DF,0x07BF,0x07DF,0x07BF,0x07BF,0x0FBF,0x179F,0x1F7E,0x2F5E,0x3EFD,0x567C,0x6E5C,0x85DB,0x8D5A,0x8CB9,0x947A,0xA4BC,0xB51F,0x8BFE,0x2976,0x21BA,0x11DC,0x099C,0x01BD,0x019D,0x01BE,0x01BF,0x01BF,0x01BF,0x019F,0x019F,0x01BF,0x019F,0x019F,0x019F,0x017E,0x099E,0x119D,0x297C,0x38F9,0x7199,0xB29C,0xA9F8,0xA9D6,0xA9B5,0xA1F4,0xA2D8,0x7275,0x29D3,0x2B59,0x249C,0x157E,0x165E,0x173F,0x179F,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x0FBF,0x179F,0x277F,0x36FE,0x569E,0x7DDD,0x6334,0x82B4,0x9A13,0xA9D2,0xC1F3,0xC1B2,0xC993,0xC993,0xD193,0xD193,0xD193,0xC952,0xC993,0xD1D4,0xC9D4,0xC1D4,0xB9F4,0xBA76,0x7110,0x5910,0x4931,0x4951,0x4172,0x4192,0x3971,0x3971,0x3951,0x3951,0x3171,0x3171,0x3171,0x3151,0x3151,0x3151,0x3150,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2110,0x2910,0x2110,0x2110,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x2130,0x2131,0x1932,0x1154,0x1196,0x11D8,0x11F9,0x121A,0x09D9,0x01B9,0x01D9,0x01B9,0x01B9,0x09F9,0x1219,0x11F8,0x09B7,0x1196,0x1154,0x1133,0x1132,0x1932,0x1932,0x2151,0x2151,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2111,0x2111,0x2111,0x2111,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1932,0x1953,0x1174,0x19B5,0x21F7,0x21F7,0x19D7,0x1175,0x1154,0x1133,0x1932,0x1932,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1932,0x1133,0x1174,0x1195,0x19D6,0x19F7,0x19F7,0x11F7,0x1A38,0x1A18,0x1A18,0x19D7,0x1175,0x1154,0x1112,0x1932,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x2910,0x290F,0x290F,0x2910,0x290F,0x2930,0x290F,0x2930,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x210F,0x2910,0x2930,0x210F,0x2930,0x2930,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x292F,0x212F,0x210F,0x212F,0x2930,0x2930,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x292F,0x212F,0x2110,0x2130,0x212F,0x2130,0x210F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x2130,0x2130, + 0x2930,0x290F,0x2910,0x2910,0x2110,0x2130,0x2130,0x2131,0x2131,0x1911,0x1912,0x1132,0x1133,0x1154,0x1154,0x19B6,0x2217,0x21F7,0x1995,0x1974,0x1153,0x1132,0x1932,0x1911,0x1931,0x1931,0x1931,0x1911,0x1932,0x1153,0x1174,0x1195,0x19F7,0x19F7,0x1196,0x1174,0x1133,0x1132,0x1132,0x1111,0x1932,0x1932,0x1952,0x1132,0x1152,0x1132,0x1153,0x1173,0x1173,0x1173,0x1153,0x1153,0x1132,0x1132,0x1132,0x1952,0x1932,0x1911,0x1912,0x1932,0x1132,0x1974,0x1175,0x19D6,0x2238,0x1A17,0x1175,0x1133,0x1112,0x1911,0x1911,0x2131,0x2110,0x2110,0x2130,0x2130,0x210F,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x212F,0x210F,0x2910,0x2930,0x2110,0x210F,0x290F,0x210F,0x290F,0x290F,0x2930,0x2910,0x210F,0x210F,0x2110,0x2910,0x2910,0x290F,0x2930,0x210F,0x290F,0x2930,0x2910,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2110,0x210F,0x2930,0x2930,0x290F,0x210F,0x290F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2930,0x2130,0x2110,0x2110,0x2111,0x1932,0x1132,0x1194,0x1A17,0x1218,0x1219,0x09D9,0x01D9,0x09F9,0x01D9,0x09D8,0x01B8,0x11F8,0x1A18,0x19F7,0x1174,0x1132,0x1931,0x2111,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x2130,0x2930,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x210F,0x2110,0x2110,0x2131,0x2131,0x2132,0x1932,0x1932,0x1133,0x1154,0x1995,0x19B6,0x2217,0x21F7,0x19D6,0x1154,0x0912,0x1112,0x1932,0x1931,0x2151,0x2131,0x1931,0x1931,0x1111,0x1132,0x1133,0x1153,0x1195,0x19D6,0x2217,0x2A58,0x2A58,0x2A58,0x2A37,0x3258,0x2A37,0x3237,0x2A17,0x2A37,0x2A37,0x2A37,0x2A17,0x2A38,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A16,0x2A16,0x2A37,0x2A37,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A37,0x2A17,0x2A38,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x21F6,0x19B5,0x1174,0x1153,0x1932,0x1932,0x1931,0x1911,0x1931,0x1931,0x1931,0x1932,0x1912,0x1112,0x1133,0x1154,0x19D6,0x2217,0x2217,0x19D6,0x1174,0x0933,0x1132,0x1132,0x1931,0x1931,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x290F,0x210F,0x2130,0x210F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2110,0x2110,0x2930,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2930,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2930,0x2110,0x2110,0x2930,0x2930,0x2930,0x290F,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2930,0x2930,0x2950,0x2930,0x2950,0x3150,0x3151,0x3171,0x3151,0x3151,0x3151,0x3171,0x3971,0x3151,0x3972,0x3972,0x3972,0x3972,0x4192,0x4192,0x4192,0x4193,0x41B3,0x4993,0x4993,0x4993,0x5193,0x5193,0x51B3,0x5992,0x5992,0x6191,0x6171,0x614F,0xAB57,0xDCBB,0xDCBB,0xD47A,0xCC79,0xC478,0xBCB9,0xBCF9,0xA4F8,0x84B6,0x74D6,0x6CF6,0x5CF6,0x5D37,0x5537,0x4D16,0x4D16,0x4D37,0x4D37,0x4D17,0x54F7,0x4CB6,0x4C55,0x5436,0x5BF5,0x5BB5,0x5B74,0x5B34,0x5AF3,0x5AD3,0x5AB3,0x5A93,0x6293,0x6272,0x6252,0x6A52,0x6A11,0x61B0,0x592E,0x8A52,0xBBD8,0xD439,0xCBF8,0xCBF8,0xCBD7,0xCBF7,0xCC17,0xC438,0xB438,0x8B95,0x7C37,0x85DC,0x665C,0x4EFD,0x375E,0x1F7E,0x17BF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x0FBF,0x0F9F,0x1F7F,0x2F3F,0x46FE,0x667D,0x7DFC,0x8C98,0x93D6,0xB3B6,0xC375,0xCB35,0xD335,0xDB35,0xDB35,0xDB35,0xD376,0xCB96,0xA354,0x7B53,0x859B,0x66DE,0x3F5E,0x277F,0x179F,0x0FBF,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x0FBF,0x179E,0x277E,0x375E,0x46DD,0x5E7C,0x763C,0x85BB,0x953A,0x94B9,0x9C9A,0xAC9C,0xB4FF,0x731B,0x2157,0x19BA,0x11BC,0x09BD,0x01BE,0x019E,0x01BF,0x01BF,0x01BF,0x01BF,0x019F,0x019F,0x019F,0x017F,0x019F,0x017E,0x099E,0x19BE,0x215C,0x3119,0x6138,0xA25B,0xAA39,0xA9D6,0xB216,0xA1F4,0xA296,0x7A76,0x4214,0x2AF7,0x2CBC,0x1D9E,0x163E,0x173F,0x179F,0x0FBF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07BF,0x07BF,0x0F9F,0x279F,0x373F,0x4E9E,0x763E,0x7458,0x72B4,0x8A12,0xAA12,0xB9D2,0xC9D3,0xC992,0xC992,0xD193,0xD193,0xD193,0xC973,0xC993,0xC993,0xC9D4,0xC1D4,0xB9D4,0xBA56,0x8152,0x58D0,0x5151,0x4951,0x4992,0x4171,0x3971,0x3971,0x3971,0x3951,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x1931,0x1132,0x0954,0x11B7,0x09B8,0x09FA,0x01DA,0x01D9,0x01BA,0x01BA,0x01DA,0x01B9,0x01B9,0x09F9,0x09F9,0x09F8,0x09B7,0x0975,0x0954,0x1133,0x1132,0x1132,0x1932,0x1931,0x1931,0x1931,0x1911,0x1931,0x2131,0x2131,0x2131,0x1931,0x2132,0x1932,0x1932,0x1932,0x1932,0x1911,0x2131,0x2111,0x2111,0x2131,0x2131,0x2130,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x1931,0x1932,0x1133,0x1154,0x19B5,0x21F7,0x2218,0x19D7,0x1175,0x1154,0x1133,0x1112,0x1932,0x2152,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x1931,0x1931,0x1931,0x1932,0x1133,0x1174,0x1195,0x11D6,0x11F8,0x11F8,0x1219,0x09F8,0x1219,0x1219,0x1218,0x11F8,0x11D7,0x1195,0x1153,0x1952,0x1931,0x2131,0x2130,0x2130,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x212F,0x290F,0x290F,0x2930,0x210F,0x2910,0x290F,0x290F,0x2910,0x2910,0x2110,0x290F,0x290F,0x2910,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x210F,0x2930,0x290F,0x210F,0x2910,0x2910,0x290F,0x2910,0x2930,0x210F,0x210F,0x2110,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2110,0x2930,0x2930,0x2910,0x2930,0x2910,0x2910,0x2110,0x2910,0x2910,0x290F,0x290F,0x210F,0x2910,0x2910,0x210F,0x290F,0x2930,0x290F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x210F,0x2930,0x290F,0x292F,0x212F,0x212F,0x2130,0x2110,0x210F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130, + 0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x1931,0x1112,0x1132,0x1133,0x1154,0x1175,0x19D6,0x2217,0x2217,0x19B6,0x1994,0x1953,0x1112,0x1932,0x1931,0x2151,0x2131,0x2131,0x1911,0x1111,0x1953,0x1154,0x1175,0x19D6,0x1A17,0x19D6,0x1174,0x1133,0x1132,0x1132,0x1952,0x1932,0x1132,0x1132,0x1132,0x1153,0x1194,0x19B5,0x19D6,0x19D6,0x19F6,0x19D6,0x1196,0x1195,0x1194,0x1153,0x1132,0x1132,0x1932,0x1932,0x1931,0x1111,0x1112,0x1133,0x1133,0x1195,0x19F7,0x1A18,0x19B6,0x1154,0x1112,0x1911,0x1911,0x2111,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2110,0x2910,0x2930,0x2910,0x2910,0x210F,0x2930,0x2910,0x2910,0x290F,0x210F,0x2930,0x2910,0x210F,0x210F,0x2930,0x2910,0x210F,0x210F,0x2930,0x210F,0x2930,0x2930,0x2930,0x290F,0x290F,0x2910,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1132,0x1195,0x19F7,0x1A18,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x11F8,0x1A38,0x19F7,0x1994,0x1112,0x1911,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2131,0x2151,0x2132,0x1932,0x1932,0x1112,0x1133,0x1174,0x19D6,0x2217,0x21F7,0x19B5,0x1154,0x1133,0x1112,0x1111,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1132,0x1153,0x1153,0x1174,0x1995,0x21F6,0x2A17,0x29F6,0x2A17,0x2A17,0x3237,0x3258,0x2A17,0x3237,0x3238,0x2A17,0x3238,0x2A38,0x2A17,0x2A17,0x2A37,0x2A17,0x2A37,0x2A37,0x2A17,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2217,0x2A37,0x2A37,0x2A17,0x2A17,0x2A37,0x2A17,0x3257,0x2A37,0x2A17,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A17,0x29F7,0x29F7,0x29F7,0x21D6,0x1153,0x1133,0x1153,0x1952,0x1932,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1112,0x1132,0x1133,0x1154,0x19D6,0x2237,0x2217,0x19B6,0x1154,0x1133,0x1132,0x1932,0x1931,0x1931,0x2130,0x1910,0x2110,0x2110,0x2110,0x2130,0x2110,0x2930,0x2110,0x2110,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x2930,0x210F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2151,0x2131,0x2131,0x2130,0x2150,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2130,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2910,0x210F,0x2930,0x290F,0x210F,0x290F,0x292F,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2951,0x2930,0x2930,0x2910,0x2930,0x2950,0x3150,0x3150,0x3151,0x3151,0x3171,0x3171,0x3151,0x3151,0x3171,0x3171,0x3971,0x3972,0x3972,0x3951,0x3972,0x4192,0x4192,0x4192,0x4172,0x4193,0x4993,0x4993,0x51B3,0x51B2,0x4972,0x5171,0x5971,0x5971,0x592F,0x79D1,0xCC5A,0xE4DC,0xDC9A,0xD49A,0xCC79,0xCC99,0xBC98,0xB4B8,0xA4B7,0x8C96,0x7CD6,0x64D6,0x6537,0x5D37,0x5536,0x4D16,0x4D37,0x4D57,0x4D16,0x4CF6,0x4CF7,0x54F7,0x54D7,0x5C96,0x5C56,0x6416,0x63B5,0x6375,0x6375,0x6313,0x6B34,0x62D3,0x5A92,0x5A52,0x5A72,0x6252,0x6272,0x6A52,0x61F1,0x69F0,0x594E,0x592E,0x8A72,0xBBD8,0xCC18,0xCC18,0xCBF7,0xC417,0xC438,0xC478,0xAC37,0x7B94,0x74B8,0x75FC,0x5EDD,0x3F3E,0x277E,0x179E,0x0FBE,0x07BE,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x0F9F,0x177F,0x275F,0x373F,0x56FE,0x6E3C,0x95FC,0x7BB5,0xA3B6,0xC3D6,0xCB55,0xD355,0xDB56,0xD315,0xD315,0xD335,0xCB55,0xC3B6,0x9B33,0x7BB4,0x85DB,0x66FE,0x373E,0x277F,0x179F,0x0F9F,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07BF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DE,0x07DF,0x07DF,0x07BF,0x07DF,0x07BF,0x07DF,0x07BF,0x07DF,0x07BF,0x0FBF,0x0FBF,0x179E,0x277E,0x3F3E,0x4EBD,0x667C,0x7E1B,0x95DB,0x951A,0x9CBA,0xA49A,0xB4DE,0xBD1F,0x5A7A,0x2137,0x199A,0x119C,0x09BD,0x09BE,0x017E,0x019E,0x019F,0x01BF,0x01BF,0x019F,0x017F,0x017E,0x019F,0x017E,0x09BF,0x11BE,0x197C,0x313A,0x50F8,0x9A5B,0xAA5A,0xA9F7,0xB216,0xA9F5,0x9A55,0x8AB6,0x5275,0x3B58,0x453D,0x2DBE,0x163E,0x171F,0x177F,0x0FBF,0x0FDF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07DF,0x07BF,0x0F9F,0x1F7F,0x2F3F,0x46DE,0x6E7E,0x857C,0x62D3,0x71F1,0xA253,0xBA33,0xCA13,0xC9D3,0xC992,0xC972,0xD193,0xD193,0xC972,0xC993,0xD1B4,0xC9D4,0xC193,0xB9B4,0xBA15,0xA1F4,0x58AF,0x5952,0x5151,0x4972,0x3951,0x3951,0x3951,0x3971,0x3971,0x3971,0x3951,0x3151,0x3151,0x3151,0x3131,0x3131,0x3151,0x2950,0x3150,0x2930,0x2950,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x2930,0x292F,0x2930,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x2930,0x2110,0x2110,0x2131,0x1911,0x1113,0x19B6,0x19F9,0x09B9,0x01B9,0x01BA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01D9,0x09F9,0x09F9,0x09B8,0x0996,0x0975,0x0954,0x0933,0x1133,0x1112,0x1111,0x1111,0x1911,0x1911,0x1912,0x1912,0x1932,0x1111,0x1111,0x1932,0x1932,0x1932,0x1912,0x1912,0x1912,0x1932,0x1932,0x1912,0x2132,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2151,0x2131,0x1931,0x1932,0x1132,0x1154,0x19B6,0x2217,0x2238,0x19D7,0x1175,0x1154,0x08F2,0x1112,0x1912,0x1931,0x2152,0x2151,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1932,0x1133,0x1174,0x1196,0x11F7,0x11F8,0x09D8,0x09F9,0x09F9,0x09D9,0x09F9,0x09F9,0x123A,0x09F9,0x09D8,0x11D7,0x1995,0x1953,0x1912,0x2111,0x2131,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2910,0x290F,0x2930,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x290F,0x210F,0x2930,0x2930,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2110,0x20F0,0x2910,0x2910,0x292F,0x210F,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x292F,0x212F,0x2130,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2130,0x2130, + 0x2110,0x210F,0x2110,0x2110,0x2110,0x2131,0x2131,0x1931,0x1112,0x1112,0x1133,0x0934,0x1195,0x19D6,0x21F7,0x2217,0x19B6,0x1995,0x1953,0x1932,0x1911,0x1911,0x1931,0x2151,0x2131,0x1931,0x1911,0x1911,0x1133,0x1174,0x1196,0x1A18,0x19F7,0x1195,0x1174,0x1132,0x1132,0x1931,0x1931,0x1932,0x1112,0x1132,0x0953,0x1194,0x19F6,0x19F6,0x1A17,0x1A17,0x19F7,0x19F7,0x19F7,0x19F7,0x11B6,0x1195,0x1174,0x1133,0x1932,0x1932,0x1931,0x1911,0x1932,0x1112,0x1133,0x1175,0x19F7,0x2239,0x11D7,0x1175,0x1112,0x1912,0x1911,0x18F0,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2930,0x2930,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2910,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x290F,0x210F,0x2930,0x2910,0x2910,0x2930,0x2910,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2130,0x2130,0x2110,0x1931,0x1911,0x1133,0x1995,0x19D6,0x1A18,0x11F7,0x11D7,0x11D7,0x11D7,0x19F7,0x2217,0x1995,0x1132,0x1932,0x1931,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x212F,0x2130,0x292F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2131,0x1931,0x1911,0x1932,0x1932,0x1132,0x1153,0x1994,0x21D6,0x21F7,0x21F6,0x19D6,0x1174,0x1133,0x1112,0x1931,0x1931,0x1931,0x1951,0x1952,0x1931,0x1932,0x1952,0x1132,0x1132,0x1133,0x1153,0x1153,0x1953,0x1954,0x1953,0x1974,0x1974,0x1974,0x1995,0x1995,0x1995,0x1995,0x1975,0x1995,0x1995,0x1995,0x19B5,0x19B5,0x1995,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x19B5,0x1995,0x19B5,0x19B5,0x1994,0x1995,0x19B5,0x19B5,0x1995,0x19B5,0x1994,0x1974,0x1994,0x1974,0x1974,0x1994,0x1994,0x1994,0x1974,0x1974,0x1954,0x1153,0x1113,0x1112,0x1932,0x1932,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1932,0x1912,0x1112,0x1153,0x1174,0x19B6,0x2217,0x2216,0x19D5,0x1174,0x1132,0x1132,0x1931,0x1931,0x1931,0x1910,0x2130,0x2110,0x2110,0x2130,0x2110,0x210F,0x210F,0x2130,0x210F,0x2930,0x2110,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x210F,0x290F,0x212F,0x210F,0x2930,0x2130,0x2930,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2110,0x2110,0x2930,0x2110,0x2930,0x2910,0x2930,0x2910,0x210F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2110,0x2110,0x2910,0x210F,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2910,0x2910,0x2930,0x3150,0x3151,0x2950,0x3151,0x3151,0x3151,0x3151,0x3151,0x3971,0x3151,0x3971,0x3971,0x3971,0x3951,0x3972,0x3972,0x4192,0x4192,0x4192,0x4172,0x4192,0x4172,0x49B3,0x5192,0x5192,0x5171,0x5150,0x5950,0x590E,0xA315,0xD47B,0xDCBB,0xDC9A,0xD479,0xD478,0xCC58,0xC478,0xC4B9,0xACB8,0x9476,0x8496,0x74B6,0x6D17,0x64F6,0x5CF6,0x5D16,0x5D16,0x5516,0x5D16,0x5CF6,0x5CF6,0x64D6,0x64B6,0x6C96,0x6C76,0x6C36,0x6BF5,0x73D5,0x6B74,0x6B54,0x6313,0x5AD2,0x5250,0x5251,0x5A71,0x5230,0x4A30,0x5271,0x5A92,0x5A72,0x5A72,0x5A72,0x5A31,0x51EF,0x59EF,0x8334,0xAC38,0xB458,0xB458,0xB458,0xAC99,0xA479,0x8C37,0x5BD5,0x759B,0x5EBD,0x471D,0x2F5E,0x1F9E,0x17BE,0x0FBE,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x0F9F,0x177F,0x1F5E,0x2F1E,0x471E,0x5E9D,0x7DFC,0x9519,0x8B95,0xB3B6,0xC375,0xCB35,0xD356,0xD335,0xD315,0xCB35,0xCB56,0xC396,0xB3B6,0x8353,0x7436,0x7E3C,0x56FE,0x373E,0x1F7F,0x179F,0x0F9F,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x077F,0x077F,0x077F,0x077F,0x077F,0x07BF,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07DF,0x07BF,0x07DF,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x07BF,0x07BF,0x0FBF,0x0FBF,0x1F9F,0x275E,0x3F1D,0x4EBC,0x665C,0x7DFB,0x8D7A,0x94FA,0x9C9A,0xAC9B,0xB4BE,0xA49F,0x41B7,0x2137,0x199B,0x119C,0x099D,0x099D,0x017E,0x01BE,0x01DF,0x01BF,0x019F,0x017E,0x019F,0x017E,0x019E,0x017E,0x11BE,0x197C,0x317B,0x38B7,0x8A3B,0xA25A,0xAA38,0xA9F6,0xA1F5,0x91F4,0x92F8,0x5A55,0x3AF6,0x451D,0x257C,0x1E1D,0x1EFF,0x177F,0x0F9F,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07BF,0x0FBF,0x179F,0x277F,0x3F1F,0x5E7E,0x861E,0x6355,0x7252,0x9A33,0xBA33,0xC1F3,0xC9B3,0xC992,0xD193,0xC972,0xD193,0xD193,0xC993,0xC993,0xC9B4,0xC9B4,0xC1B4,0xB9F4,0xB276,0x68F0,0x5931,0x5172,0x4971,0x4151,0x3951,0x4171,0x3971,0x3971,0x3971,0x3151,0x3151,0x3151,0x3131,0x3130,0x3131,0x3151,0x3151,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x290F,0x2930,0x292F,0x2930,0x2930,0x290F,0x292F,0x292F,0x290F,0x290F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x2130,0x2110,0x2130,0x2131,0x1912,0x1133,0x11B7,0x09B8,0x09B9,0x09DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x09F9,0x09D9,0x09D8,0x09B8,0x0996,0x1196,0x0934,0x0933,0x0933,0x1112,0x1112,0x1112,0x1112,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x10F2,0x1112,0x1112,0x1912,0x1932,0x1931,0x1911,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1911,0x1931,0x1132,0x1153,0x1154,0x19B6,0x2217,0x2218,0x19D7,0x1196,0x1154,0x0913,0x1112,0x1112,0x1952,0x1952,0x2152,0x2131,0x2131,0x2131,0x2111,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x1911,0x1932,0x1932,0x1133,0x1154,0x0954,0x1196,0x09B7,0x09F8,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01F9,0x09F9,0x09D9,0x11D8,0x19B6,0x1154,0x1912,0x1911,0x2131,0x2110,0x2110,0x2930,0x2110,0x2930,0x210F,0x212F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x292F,0x212F,0x210F,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x292F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x292F,0x290F,0x292F,0x292F,0x212F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x290F,0x2930,0x290F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x292F,0x2930,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110, + 0x212F,0x210F,0x2930,0x2930,0x2931,0x2131,0x18F1,0x1911,0x1133,0x1154,0x1174,0x19B6,0x19D7,0x21F7,0x21F7,0x19D6,0x1974,0x1133,0x1932,0x1911,0x1911,0x1910,0x2131,0x2131,0x2130,0x1910,0x1911,0x1112,0x1174,0x1175,0x11B7,0x2238,0x19D6,0x0974,0x1174,0x1152,0x1131,0x1951,0x1931,0x1131,0x1132,0x1153,0x1195,0x11D6,0x11F7,0x11F7,0x11F7,0x11D7,0x11B7,0x11D7,0x19D7,0x19D7,0x19F7,0x11B6,0x1195,0x1154,0x1132,0x1932,0x1931,0x1931,0x1931,0x1932,0x1153,0x1174,0x1A18,0x1A39,0x11F7,0x1195,0x1133,0x1912,0x1911,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x2910,0x2930,0x2930,0x210F,0x210F,0x2930,0x2910,0x210F,0x2930,0x290F,0x2930,0x210F,0x290F,0x290F,0x2910,0x290F,0x2930,0x2930,0x2910,0x290F,0x290F,0x290F,0x2910,0x210F,0x2930,0x2930,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x2930,0x2930,0x2130,0x2131,0x1931,0x1931,0x1132,0x1154,0x1995,0x19B6,0x19B6,0x19D6,0x1995,0x1154,0x1133,0x1133,0x1932,0x1931,0x2131,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2131,0x2151,0x1931,0x1931,0x1912,0x1932,0x1953,0x1153,0x1995,0x19D6,0x21F7,0x21F7,0x19B6,0x1154,0x1133,0x1132,0x1931,0x1931,0x2152,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1911,0x1912,0x1912,0x1932,0x1932,0x1132,0x1953,0x1132,0x1132,0x1112,0x1112,0x1133,0x1133,0x1133,0x1133,0x1132,0x1112,0x1133,0x1133,0x1133,0x1153,0x1133,0x1133,0x1132,0x1133,0x1133,0x1133,0x1132,0x1112,0x1132,0x1132,0x1132,0x1133,0x1132,0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1953,0x1112,0x1112,0x1112,0x1112,0x1952,0x1952,0x1931,0x1931,0x1930,0x1930,0x2151,0x2152,0x1931,0x1911,0x1132,0x1153,0x1154,0x19D6,0x21F6,0x21B4,0x21B4,0x1973,0x1952,0x1931,0x1931,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x212F,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x3150,0x3130,0x3130,0x3151,0x3151,0x3150,0x3151,0x3150,0x3151,0x3151,0x3151,0x3951,0x3971,0x3972,0x3972,0x4172,0x4192,0x4172,0x4172,0x4192,0x4192,0x4192,0x4192,0x4992,0x4992,0x4991,0x5191,0x5170,0x5170,0x616F,0x79F1,0xBB97,0xD459,0xDC79,0xDC79,0xDC99,0xD479,0xD478,0xCC78,0xBC77,0xB497,0xACB7,0x9CB7,0x8496,0x7CB6,0x74D6,0x74D6,0x74F6,0x74F6,0x74D6,0x74D6,0x7CD7,0x84F7,0x8CF8,0x8CD8,0x94F8,0x8CB7,0x8C77,0x8C56,0x8C36,0x9437,0x9437,0x9437,0x9457,0x9458,0x9478,0x94B9,0x8C99,0x8CB9,0x8499,0x7C78,0x7478,0x6C57,0x6C78,0x6C58,0x6458,0x6C78,0x6457,0x6C37,0x6C16,0x7437,0x7C58,0x8479,0x7C78,0x7C78,0x7458,0x6458,0x4457,0x45DA,0x4F3E,0x377E,0x1F9E,0x17BE,0x0FDF,0x0FDF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x0FDF,0x17BF,0x1FBF,0x279F,0x375F,0x473E,0x5F1E,0x7EDE,0x8D7A,0x8BF6,0xAB95,0xBB56,0xC356,0xCB36,0xD336,0xD336,0xCB56,0xC376,0xBB96,0xB3D7,0xA3F7,0x8416,0x64D7,0x5E7C,0x4F3E,0x377F,0x1F9F,0x17BF,0x0FBF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x07BF,0x079F,0x079F,0x079F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x075F,0x075F,0x075F,0x075F,0x075F,0x073F,0x075F,0x075F,0x073F,0x075F,0x075F,0x075F,0x077F,0x077F,0x079F,0x07BF,0x07BF,0x07BF,0x07BF,0x07DF,0x07BF,0x07DF,0x07BF,0x07BF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x0F9E,0x1F9E,0x275E,0x3F3E,0x571E,0x667C,0x7DFB,0x8D7B,0x9CFA,0xA4BA,0xAC9B,0xAC9C,0xACBF,0x3175,0x2157,0x197A,0x117B,0x119C,0x099D,0x099D,0x099E,0x019E,0x019E,0x019E,0x019F,0x019F,0x099F,0x099E,0x117D,0x197C,0x293B,0x30D8,0x6199,0x9A7A,0xAA59,0xAA38,0xAA57,0x9A57,0x8A77,0x72B7,0x4B16,0x4CBB,0x461F,0x369F,0x26FF,0x1F7F,0x0F9F,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07DF,0x07DF,0x0FDF,0x17BF,0x2F7F,0x467D,0x763E,0x6C38,0x6A52,0x9232,0xB233,0xC1D2,0xC9B2,0xC992,0xC993,0xD193,0xD1B3,0xC993,0xC993,0xC993,0xC9B3,0xC9B4,0xC1D4,0xB9F4,0xB276,0x7972,0x58F0,0x5972,0x4951,0x4171,0x4171,0x4171,0x3971,0x3971,0x3971,0x3151,0x3951,0x3951,0x3151,0x3151,0x3151,0x3151,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x290F,0x2930,0x2930,0x290F,0x2930,0x290F,0x292F,0x292F,0x290F,0x210F,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2131,0x1912,0x1133,0x19D7,0x11D9,0x09D9,0x09DA,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01D9,0x01D9,0x09F9,0x09D9,0x09D9,0x09B8,0x09B7,0x11B7,0x1196,0x1195,0x1995,0x1975,0x1974,0x1974,0x1994,0x1974,0x1995,0x1995,0x21B5,0x19B5,0x21D6,0x21F6,0x21D5,0x21D6,0x21B5,0x21B5,0x21D5,0x21B5,0x21B5,0x1974,0x1953,0x1112,0x1912,0x1931,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x1931,0x1951,0x1132,0x1132,0x1154,0x19B6,0x21F7,0x21F7,0x19F7,0x19D6,0x1175,0x0933,0x0912,0x08F1,0x1111,0x1132,0x1932,0x1931,0x1932,0x1912,0x1912,0x1932,0x1912,0x1912,0x1912,0x1932,0x1112,0x1112,0x1133,0x1133,0x1154,0x1196,0x11B7,0x09D8,0x09F9,0x01F9,0x01F9,0x01D9,0x01D9,0x01B9,0x01D9,0x01F9,0x09F9,0x09D9,0x09D8,0x11D7,0x1174,0x1932,0x1932,0x2131,0x2131,0x2131,0x2930,0x2110,0x2110,0x2110,0x2110,0x290F,0x210F,0x210F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x2930,0x2110,0x2910,0x2910,0x210F,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x292F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2130,0x210F,0x212F,0x210F,0x290F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130, + 0x212F,0x2130,0x2130,0x2130,0x2131,0x2111,0x18F1,0x1112,0x1133,0x1175,0x11B6,0x19F7,0x19F7,0x19F7,0x19D6,0x1974,0x1132,0x1112,0x1911,0x1910,0x1910,0x2130,0x2130,0x2130,0x2130,0x1930,0x1911,0x1112,0x1154,0x1175,0x19F7,0x2238,0x1196,0x1154,0x1974,0x1152,0x1931,0x1931,0x1931,0x1931,0x1133,0x1174,0x11B6,0x1217,0x11F7,0x11F7,0x11D7,0x0996,0x1196,0x1196,0x11B7,0x19D7,0x19D8,0x11D7,0x19B6,0x1995,0x1953,0x1952,0x1932,0x1931,0x1931,0x1932,0x1132,0x1174,0x11F7,0x1A39,0x11F8,0x1196,0x1154,0x1932,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x210F,0x292F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x210F,0x2930,0x2930,0x2110,0x2910,0x2910,0x2910,0x210F,0x2110,0x2910,0x2930,0x212F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2930,0x210F,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2110,0x210F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2131,0x1931,0x1911,0x1112,0x1133,0x1153,0x1954,0x1153,0x1133,0x1933,0x1912,0x1111,0x1931,0x2131,0x2110,0x2110,0x2130,0x2110,0x290F,0x212F,0x212F,0x210F,0x212F,0x2930,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1932,0x1932,0x1953,0x1153,0x1995,0x19B6,0x21F7,0x19D6,0x1195,0x1174,0x1153,0x1112,0x1932,0x1931,0x1931,0x2151,0x1931,0x1931,0x1931,0x1911,0x1931,0x1911,0x1931,0x1911,0x1932,0x1911,0x1932,0x1932,0x1911,0x1932,0x1932,0x1912,0x1932,0x1112,0x1112,0x1932,0x1112,0x1132,0x1932,0x1132,0x1132,0x1132,0x1132,0x1932,0x1932,0x1932,0x1112,0x1912,0x1912,0x1932,0x1932,0x1932,0x1112,0x1932,0x1912,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1911,0x1932,0x1932,0x1932,0x1932,0x2152,0x1931,0x1911,0x1910,0x1930,0x2151,0x2151,0x1931,0x1932,0x1112,0x1153,0x1174,0x19D6,0x21F6,0x21F5,0x21B3,0x2193,0x1952,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2930,0x2930,0x212F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2130,0x212F,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x292F,0x292F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x3151,0x3130,0x2930,0x3150,0x3151,0x3150,0x3151,0x3151,0x3151,0x3951,0x3971,0x3971,0x3971,0x3971,0x4172,0x4172,0x4172,0x4192,0x4192,0x4192,0x4192,0x4992,0x4991,0x4991,0x4971,0x4950,0x5170,0x594E,0x92B3,0xD479,0xDC79,0xDC79,0xDC78,0xDC78,0xDC98,0xD478,0xD458,0xC457,0xBC77,0xB477,0xA477,0x8C55,0x8475,0x8496,0x84B6,0x7CB6,0x7CB6,0x7CB6,0x84B6,0x8496,0x8496,0x8476,0x8C55,0x8C35,0x8C35,0x9436,0x9436,0x9436,0x9436,0x9436,0x9437,0x9437,0x9457,0x8C58,0x8C58,0x8478,0x7C78,0x7478,0x6C98,0x6498,0x5C98,0x5497,0x4497,0x4497,0x3C76,0x3476,0x3456,0x3435,0x3415,0x3C36,0x4457,0x5498,0x5C78,0x5C78,0x5C78,0x5458,0x4498,0x3D9A,0x46DD,0x2F1D,0x1F7E,0x17BE,0x0FDF,0x0FDF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x0FDF,0x17BF,0x17BF,0x1F9F,0x2F7E,0x3F3E,0x4F1D,0x6EDD,0x865C,0x8CB8,0xA3B6,0xB376,0xC356,0xCB36,0xCB56,0xD356,0xCB56,0xCB56,0xC376,0xB396,0xA3D6,0x8BD6,0x7457,0x5D79,0x56DD,0x3F5E,0x2F7E,0x1F9F,0x179F,0x0FBF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x079F,0x079F,0x079F,0x079F,0x077F,0x077F,0x077F,0x077F,0x077F,0x075F,0x075F,0x073F,0x073F,0x073F,0x073F,0x073F,0x073F,0x073F,0x073F,0x073F,0x073F,0x073F,0x075F,0x073F,0x075F,0x075F,0x077F,0x079F,0x0F9F,0x0FBF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x0FBF,0x17BF,0x1F9E,0x2F5E,0x473E,0x56BD,0x6E1C,0x7D9B,0x953B,0xA4DA,0xACBA,0xB4BB,0xB4BC,0x8BBC,0x3155,0x2158,0x197A,0x117B,0x099C,0x099D,0x099D,0x099E,0x099E,0x019E,0x019E,0x099E,0x099E,0x099E,0x117D,0x197D,0x215C,0x28F9,0x5138,0x923A,0xA259,0xA238,0xA237,0x9A37,0x8A57,0x7296,0x5B57,0x4C7A,0x45BD,0x2E3E,0x1EBE,0x1F5F,0x179F,0x0FDF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x0FDF,0x279F,0x3EBE,0x769F,0x855C,0x5A51,0x9252,0xB213,0xB9D2,0xC9D3,0xC9B2,0xC9B3,0xD1B3,0xC992,0xD193,0xC993,0xC993,0xD1B4,0xC9B3,0xC1D4,0xB9F4,0xB235,0x9A15,0x58AF,0x5972,0x4951,0x4151,0x4151,0x4171,0x3971,0x3971,0x3971,0x3151,0x3951,0x3971,0x3171,0x3151,0x3151,0x3151,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x2910,0x2930,0x2930,0x290F,0x2930,0x290F,0x292F,0x292F,0x290F,0x292F,0x2910,0x2910,0x2110,0x2930,0x2930,0x2110,0x2930,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2131,0x1932,0x1954,0x19B7,0x11F9,0x09B9,0x01B9,0x01DA,0x01DA,0x01DA,0x01FB,0x01DA,0x01DA,0x01DA,0x09FA,0x01D9,0x01D9,0x09D9,0x09B8,0x11B8,0x19D8,0x21F8,0x2A18,0x2A38,0x3238,0x3A58,0x3238,0x3258,0x3237,0x3237,0x3237,0x3258,0x3257,0x3258,0x2A17,0x2A37,0x21F6,0x2A16,0x29F6,0x29F6,0x29F6,0x2A17,0x2A17,0x29F6,0x21B5,0x1133,0x1112,0x1931,0x2131,0x2131,0x2131,0x2951,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2151,0x1951,0x1931,0x1132,0x1132,0x1154,0x1995,0x2217,0x2217,0x19F7,0x1A17,0x11B6,0x0954,0x0912,0x0112,0x0912,0x0933,0x0932,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1133,0x1153,0x1133,0x1154,0x1154,0x1175,0x0976,0x0997,0x09D8,0x01D9,0x01F9,0x01FA,0x01D9,0x01D9,0x01DA,0x01B9,0x01DA,0x01D9,0x01D9,0x0A1A,0x09D8,0x11B7,0x1995,0x1132,0x1932,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x290F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x2930,0x290F,0x2910,0x210F,0x2910,0x2910,0x290F,0x292F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x290F,0x290F,0x2910,0x2930,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x2910,0x2910,0x2930,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x292F,0x212F,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x212F,0x292F,0x212F,0x212F,0x210F,0x2130,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2910,0x210F,0x290F,0x210F,0x210F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130, + 0x212F,0x210F,0x2130,0x2131,0x2111,0x1911,0x1912,0x1133,0x1175,0x1196,0x19F7,0x2218,0x19F7,0x19B6,0x1154,0x1133,0x1112,0x1911,0x1910,0x1910,0x2110,0x2110,0x2130,0x2110,0x2130,0x1911,0x1911,0x1132,0x1174,0x1196,0x1A18,0x2218,0x1175,0x1154,0x1153,0x1932,0x1932,0x1952,0x1931,0x1112,0x1133,0x1195,0x1A18,0x1218,0x11F8,0x11B7,0x1196,0x1196,0x1175,0x0955,0x1196,0x11B7,0x19F8,0x19D8,0x11B7,0x1996,0x1154,0x1933,0x1912,0x1931,0x1911,0x1111,0x1132,0x1154,0x11D6,0x1A18,0x11F8,0x11B7,0x1154,0x1912,0x2131,0x2131,0x2110,0x2110,0x2110,0x2930,0x210F,0x2110,0x2110,0x2930,0x212F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2910,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x290F,0x2910,0x290F,0x2930,0x210F,0x210F,0x2910,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x212F,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x210F,0x210F,0x2110,0x2130,0x2130,0x2151,0x2110,0x1911,0x1911,0x1911,0x1932,0x1952,0x1952,0x1932,0x1911,0x1911,0x1931,0x1931,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x292F,0x292F,0x212F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210E,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1931,0x1932,0x1932,0x1132,0x1153,0x19B5,0x19F6,0x11B6,0x19D6,0x19B5,0x1174,0x1153,0x1112,0x1911,0x1931,0x1931,0x1931,0x2131,0x2131,0x1910,0x1910,0x1910,0x1910,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x1931,0x2152,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2151,0x1931,0x1931,0x1132,0x1153,0x1174,0x19D6,0x19F7,0x19F6,0x21B4,0x2193,0x2172,0x1951,0x1931,0x1930,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x292F,0x292F,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3151,0x3150,0x3151,0x3171,0x3151,0x3171,0x3971,0x3971,0x3971,0x3971,0x3972,0x4172,0x4172,0x4172,0x4172,0x4192,0x4192,0x4192,0x4171,0x4171,0x4971,0x4970,0x514F,0x594F,0xA355,0xD479,0xD458,0xDC58,0xDC78,0xDC58,0xDC58,0xDC78,0xD458,0xD458,0xCC57,0xBC57,0xAC36,0xA456,0x9435,0x8C55,0x9496,0x8C96,0x8CB6,0x8CD6,0x8CB6,0x8CB7,0x8CB7,0x8CB7,0x94B7,0x94B7,0x9497,0x9497,0x9497,0x9498,0x9C98,0x9C98,0x9C98,0x9498,0x9458,0x8C58,0x8C58,0x8458,0x7C78,0x7498,0x6C98,0x64D9,0x5D19,0x5D9B,0x5E1C,0x5E9D,0x5EDE,0x5EFE,0x5EFE,0x5EFE,0x5EFE,0x5EDE,0x66BE,0x5E5D,0x4D7A,0x4D3A,0x4CF9,0x551A,0x4C78,0x3CB8,0x359A,0x3EBD,0x271D,0x1F9E,0x17DF,0x0FDF,0x0FFF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x0FBF,0x17BF,0x17BF,0x1F9F,0x277E,0x2F5E,0x3F1D,0x56DD,0x76BD,0x85BB,0x8BF6,0xAB96,0xBB56,0xC356,0xCB56,0xCB56,0xCB56,0xCB55,0xC375,0xC376,0xB396,0xA3B6,0x8396,0x7478,0x5DDB,0x56FE,0x3F5E,0x277F,0x1F7F,0x177F,0x0F9F,0x0F9F,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x079F,0x079F,0x077F,0x079F,0x077F,0x077F,0x075F,0x075F,0x075F,0x075F,0x075F,0x073F,0x073F,0x073F,0x073F,0x071F,0x071F,0x071F,0x071F,0x071F,0x071F,0x071F,0x071F,0x071F,0x071F,0x071F,0x073F,0x071E,0x073E,0x073E,0x075F,0x077F,0x0F9F,0x079F,0x079F,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x07BF,0x079F,0x079F,0x077F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x077F,0x079F,0x079F,0x07BF,0x07BF,0x079F,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x079F,0x0F9F,0x179F,0x1F9E,0x2F7E,0x3F3E,0x56BD,0x663C,0x7DBB,0x8D5B,0x9CFA,0xACDA,0xB4BA,0xB4BB,0xB4BE,0x62B8,0x2136,0x195A,0x117B,0x097C,0x099D,0x099D,0x099E,0x019E,0x099E,0x099E,0x099E,0x099E,0x099E,0x097D,0x197D,0x215C,0x291A,0x40F8,0x8A19,0xA259,0xA217,0xA237,0x9A17,0x8A37,0x7296,0x6358,0x4C59,0x457C,0x363E,0x1EBE,0x1F5F,0x17BF,0x0FDF,0x0FDF,0x0FFF,0x07FF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x0FDF,0x1F9F,0x36DE,0x669E,0x85FD,0x5AB2,0x8A32,0xB233,0xB9D3,0xC9B2,0xC9B2,0xC992,0xD1B3,0xC992,0xD193,0xD193,0xC973,0xC993,0xC993,0xC1B3,0xB9D4,0xB215,0xAA76,0x60D0,0x6152,0x5151,0x4931,0x4151,0x4171,0x3971,0x3971,0x3972,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x212F,0x2130,0x2110,0x2130,0x2110,0x2111,0x1911,0x1133,0x19B6,0x11D8,0x09B9,0x09D9,0x01DA,0x01BA,0x01BA,0x01DA,0x01BA,0x01B9,0x01DA,0x01B9,0x09FA,0x09D9,0x11F9,0x11D9,0x11D8,0x19F8,0x21F8,0x21F7,0x21D7,0x29F7,0x3217,0x29F7,0x2A17,0x29F6,0x29D6,0x21D6,0x21B5,0x21D6,0x21D6,0x21D6,0x21F6,0x21F6,0x29F6,0x21D5,0x21D6,0x21D6,0x21F6,0x21F6,0x19D6,0x19D6,0x21B5,0x1153,0x1112,0x1911,0x1931,0x2131,0x2131,0x2131,0x2951,0x2951,0x2130,0x2130,0x2130,0x2130,0x2151,0x2151,0x1911,0x1131,0x1112,0x1153,0x1995,0x19F6,0x1A17,0x1A17,0x19F7,0x11D6,0x11B5,0x09B5,0x09B5,0x0995,0x11B6,0x11B6,0x0995,0x0995,0x1196,0x11B6,0x1195,0x1196,0x1196,0x1196,0x1196,0x1196,0x0996,0x0997,0x09B8,0x09B8,0x09F9,0x01D9,0x01D9,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01D9,0x09D9,0x11F9,0x19F7,0x1995,0x1112,0x1911,0x1911,0x1910,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x2930,0x290F,0x210F,0x210F,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x210F,0x2910,0x290F,0x210F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2910,0x2930,0x2910,0x290F,0x210F,0x290F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x212F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2130,0x212F,0x210F,0x290F,0x2930,0x210F,0x210F,0x2110,0x2130,0x210F,0x212F,0x2130,0x2130,0x2110,0x2130,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110, + 0x2110,0x2110,0x2110,0x1910,0x18F1,0x1912,0x1113,0x1155,0x19B6,0x19F7,0x2218,0x2217,0x19B6,0x1174,0x1133,0x1112,0x1111,0x1910,0x1910,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x1911,0x1911,0x1133,0x1174,0x1196,0x1A18,0x1A18,0x1195,0x1154,0x1133,0x1932,0x1932,0x1931,0x1932,0x1132,0x1134,0x11B6,0x1A18,0x1218,0x11B7,0x0996,0x0976,0x0955,0x0955,0x0955,0x0935,0x1175,0x19B7,0x11B7,0x19D7,0x1996,0x1974,0x1953,0x1932,0x1911,0x1911,0x1911,0x1132,0x1153,0x1196,0x1A39,0x1A18,0x11D7,0x1154,0x1953,0x1931,0x2131,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2130,0x210F,0x210F,0x290F,0x290F,0x2930,0x212F,0x212F,0x210F,0x2930,0x2110,0x2910,0x2910,0x210F,0x2910,0x2930,0x210F,0x212F,0x2930,0x290F,0x2930,0x212F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x2111,0x2111,0x1911,0x1931,0x1931,0x1911,0x1931,0x1910,0x1910,0x2110,0x2130,0x2130,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x292F,0x210F,0x290F,0x292F,0x210F,0x292F,0x292F,0x210E,0x210E,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1911,0x1931,0x1911,0x1112,0x1132,0x1153,0x19B5,0x19F6,0x19F6,0x19D6,0x19D6,0x1174,0x1132,0x1132,0x1931,0x1931,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x1910,0x2131,0x1931,0x1910,0x1931,0x1930,0x1930,0x2131,0x1910,0x2131,0x2131,0x2131,0x1931,0x1931,0x1930,0x1931,0x1931,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1910,0x2131,0x2131,0x2130,0x2130,0x2131,0x1910,0x2131,0x2131,0x2131,0x1910,0x2130,0x2130,0x2131,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2151,0x1951,0x1911,0x1132,0x1153,0x1195,0x19D6,0x2217,0x19F7,0x21F6,0x1952,0x1952,0x1931,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x212F,0x292F,0x212F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3151,0x3171,0x3171,0x3171,0x3171,0x3971,0x3971,0x3971,0x3971,0x3972,0x4172,0x4172,0x4172,0x4172,0x4192,0x4172,0x4171,0x4191,0x4171,0x4970,0x516F,0x61B0,0xBC19,0xD49A,0xD479,0xDC78,0xDC78,0xDC78,0xDC78,0xDC58,0xD458,0xD457,0xD457,0xCC57,0xC457,0xB456,0xB476,0xA476,0xA496,0xA4D7,0xA4D7,0x9CD7,0x9CF7,0x9CF7,0xA518,0xA519,0xA539,0xAD5A,0xA55A,0xAD7A,0xAD5A,0xA55B,0xA53A,0xA51A,0x9D1A,0x94FA,0x8CDA,0x8CB9,0x84B9,0x7C99,0x7498,0x6CF9,0x6D3A,0x6D7B,0x65DC,0x5E1C,0x5E9E,0x56DE,0x4EFE,0x471E,0x471E,0x3F3E,0x3F1E,0x3F1D,0x3EFD,0x46DD,0x4EDD,0x56BD,0x569E,0x563D,0x561C,0x34D8,0x24B7,0x25BA,0x2EDD,0x273D,0x1F9E,0x17DF,0x0FDF,0x0FFF,0x07FF,0x07FF,0x07DF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x0FDF,0x0FDF,0x0FDF,0x17BF,0x17BF,0x1F9F,0x277E,0x2F7E,0x3F3E,0x4F1D,0x66BD,0x7E3C,0x84B8,0x9BB6,0xB376,0xC356,0xC336,0xCB56,0xCB56,0xCB56,0xCB76,0xC375,0xC396,0xB376,0x9B75,0x7BB6,0x74D9,0x5E5C,0x471E,0x375E,0x1F5E,0x175F,0x177F,0x0F9F,0x0F9F,0x07BF,0x07BF,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x077F,0x077F,0x077F,0x077F,0x075F,0x075F,0x073F,0x073F,0x073F,0x073F,0x073F,0x073F,0x071F,0x071F,0x071F,0x06FE,0x06FF,0x06FF,0x071F,0x06FE,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FE,0x06FE,0x06FE,0x06FE,0x071E,0x071E,0x073F,0x075F,0x075F,0x079F,0x079F,0x07BF,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x0F9F,0x179F,0x1F9F,0x277E,0x3F5E,0x4EFD,0x667C,0x75FC,0x8D7B,0x9D1A,0xA4DA,0xACBA,0xB4BB,0xBCBC,0xB4FF,0x41D7,0x2138,0x115B,0x117C,0x097D,0x097D,0x099E,0x099E,0x099E,0x099E,0x099E,0x099E,0x099E,0x117E,0x197D,0x215C,0x293A,0x40F8,0x81F9,0xA259,0xA218,0xA217,0x91F6,0x8A36,0x7A96,0x6B38,0x4C39,0x455C,0x363E,0x26DE,0x1F5F,0x17BF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07FF,0x07FF,0x07FF,0x07DF,0x07DF,0x0FDF,0x179F,0x2F1E,0x56BE,0x867F,0x6354,0x8232,0xA9F2,0xB9D3,0xC9D3,0xC192,0xC9B3,0xC993,0xD1B3,0xD193,0xC973,0xC973,0xC993,0xC993,0xC9D4,0xC1D4,0xB1F5,0xAA76,0x68F0,0x6132,0x5152,0x4951,0x4151,0x4171,0x4192,0x3971,0x3972,0x3151,0x3171,0x3151,0x3151,0x3151,0x3131,0x3150,0x3150,0x2930,0x2930,0x2930,0x3130,0x2910,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x212F,0x2930,0x2110,0x2110,0x2110,0x2110,0x1911,0x1912,0x1975,0x19B7,0x11D8,0x09D9,0x01D9,0x01D9,0x01BA,0x01DA,0x01DA,0x01D9,0x01D9,0x01D9,0x09FA,0x11F9,0x11D9,0x11B8,0x11B7,0x1997,0x1975,0x1975,0x1975,0x1974,0x1954,0x1954,0x1974,0x1953,0x1954,0x1974,0x1954,0x1974,0x1953,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1995,0x21B5,0x19D6,0x19D6,0x21F7,0x19D6,0x21D6,0x1174,0x1132,0x1111,0x1931,0x2131,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2151,0x2130,0x1931,0x1931,0x1931,0x1931,0x1132,0x1153,0x19B5,0x19D6,0x19F7,0x1A17,0x1A18,0x1A18,0x1A38,0x1A18,0x1A18,0x1A18,0x11F7,0x1218,0x1218,0x11F7,0x11F7,0x11F7,0x11D7,0x19F7,0x11D7,0x11D7,0x11D7,0x11F8,0x11F8,0x09D9,0x09F9,0x09FA,0x01D9,0x01D9,0x01DA,0x01FA,0x01FA,0x01DA,0x01BA,0x01DA,0x09FA,0x09F9,0x11F8,0x19D7,0x1174,0x1112,0x1911,0x1931,0x1910,0x2131,0x2130,0x2110,0x2110,0x2110,0x2910,0x210F,0x212F,0x290F,0x210F,0x290F,0x210F,0x290F,0x2930,0x290F,0x292F,0x210F,0x2930,0x210F,0x210F,0x2110,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x2910,0x2910,0x290F,0x290F,0x2910,0x2110,0x2930,0x210F,0x2910,0x210F,0x210F,0x2930,0x2910,0x210F,0x290F,0x290F,0x2910,0x2910,0x2110,0x212F,0x210F,0x212F,0x2130,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2910,0x2910,0x210F,0x292F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2110,0x2130,0x210F,0x210F,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2910,0x210F, + 0x1911,0x1931,0x10F1,0x10F1,0x10F2,0x1113,0x1955,0x19B6,0x19D7,0x19F7,0x19D7,0x19B6,0x1175,0x1133,0x10F1,0x10F1,0x1910,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x1910,0x1932,0x1953,0x1175,0x11B6,0x19F8,0x19F8,0x1195,0x1154,0x1132,0x1932,0x1932,0x1932,0x1911,0x1132,0x1154,0x19D7,0x1A18,0x11F8,0x0976,0x0976,0x0955,0x0955,0x0934,0x0934,0x0934,0x0934,0x1196,0x19B7,0x19D8,0x19D7,0x1995,0x1954,0x1932,0x1932,0x1931,0x1911,0x1132,0x1174,0x0995,0x11F8,0x1A19,0x11B7,0x1154,0x1933,0x1931,0x2111,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x212F,0x290F,0x290F,0x212F,0x2930,0x2930,0x2930,0x210F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x290F,0x2930,0x212F,0x212F,0x2930,0x212F,0x290F,0x290F,0x210F,0x2910,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2910,0x210F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x212F,0x2930,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x2111,0x2110,0x2110,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210E,0x290F,0x210E,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x1111,0x1132,0x1153,0x11B5,0x19D6,0x2217,0x19F6,0x19B5,0x1173,0x1112,0x1132,0x1932,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x2130,0x2130,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2150,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2150,0x2130,0x2130,0x2110,0x2130,0x2151,0x1931,0x1911,0x1112,0x1133,0x1174,0x11D6,0x1A17,0x1A17,0x19F6,0x1995,0x1932,0x1931,0x2131,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x212F,0x292F,0x2930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x212F,0x2930,0x2930,0x2930,0x292F,0x2930,0x290F,0x2930,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3150,0x3151,0x3171,0x3151,0x3971,0x3171,0x3171,0x3971,0x3971,0x3971,0x3971,0x3971,0x4172,0x4172,0x4171,0x4171,0x4171,0x4171,0x4150,0x4950,0x514F,0x69F0,0xD4BB,0xDC9A,0xDC79,0xDC78,0xDC78,0xDC58,0xDC78,0xDC78,0xD458,0xD437,0xD457,0xD457,0xCC57,0xCC77,0xC477,0xC497,0xBC97,0xB496,0xB4B7,0xB4B7,0xACD7,0xACD7,0xACD7,0xACF8,0xA4F8,0xA4F9,0x9CF9,0x9CD9,0x94B8,0x9498,0x8C78,0x8C79,0x8499,0x84B9,0x84DA,0x7CFA,0x7D5B,0x7D9C,0x75DC,0x761D,0x6E1C,0x663D,0x5E5D,0x569D,0x4EBD,0x4EFE,0x471E,0x3F3E,0x373E,0x375E,0x375E,0x2F5E,0x2F5E,0x2F3E,0x373D,0x373D,0x3F1E,0x3F1E,0x471E,0x471E,0x473F,0x473F,0x2EDD,0x273D,0x27BF,0x17BF,0x17DF,0x0FFF,0x0FFF,0x07FF,0x07FF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x0FDF,0x0FDF,0x0FDF,0x0FDF,0x17BF,0x17BE,0x1FBF,0x279E,0x2F9E,0x375E,0x473D,0x56DD,0x765C,0x84F9,0x8BF6,0xAB96,0xBB56,0xC356,0xCB56,0xCB56,0xCB55,0xCB55,0xCB75,0xC395,0xBBB6,0xB376,0x8B55,0x73F6,0x6D5A,0x5E9D,0x3F1E,0x2F3E,0x1F5F,0x175F,0x0F5F,0x0F7F,0x0F9F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x077F,0x077F,0x075F,0x075F,0x075F,0x073F,0x073F,0x075F,0x073F,0x073F,0x073F,0x071F,0x071F,0x071F,0x071F,0x06FF,0x06FF,0x06FF,0x06FF,0x06FE,0x06FF,0x06FF,0x06FF,0x06DE,0x06FF,0x06DE,0x06DE,0x06DE,0x06DE,0x06DE,0x06DE,0x06DE,0x06DE,0x06DE,0x06FF,0x071F,0x071E,0x073F,0x077F,0x077F,0x077F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x077F,0x079F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x079F,0x079F,0x079F,0x079F,0x079F,0x07BF,0x07BF,0x079F,0x07BF,0x0F9F,0x0F9F,0x179F,0x279F,0x375E,0x471E,0x569D,0x6E1C,0x85BB,0x955B,0xA4FA,0xACBA,0xB49A,0xBCBB,0xBCDE,0x9C1E,0x39B7,0x1959,0x115B,0x097C,0x097D,0x099D,0x099E,0x099E,0x019E,0x099E,0x099E,0x099E,0x097E,0x197D,0x215C,0x293B,0x38F8,0x7198,0x9A5A,0xA218,0xA217,0x99F6,0x8A16,0x7A76,0x6B58,0x4BD8,0x451B,0x363D,0x26BE,0x1F5F,0x179F,0x0FBF,0x0FDF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x17BF,0x2F3F,0x4EDE,0x7E9F,0x63F6,0x7A52,0xAA13,0xC234,0xC9F3,0xC192,0xC992,0xC972,0xD193,0xC973,0xD193,0xC973,0xC973,0xC993,0xC1B3,0xC1D4,0xB1F4,0xBA97,0x7952,0x60F1,0x5932,0x4931,0x4951,0x4171,0x4192,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x2950,0x2930,0x2930,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x290F,0x2910,0x2110,0x2130,0x1911,0x1932,0x1974,0x19B6,0x1197,0x09B8,0x09D9,0x09FA,0x01DA,0x01DA,0x01D9,0x01D9,0x09F9,0x09F9,0x09D9,0x09B8,0x1197,0x1176,0x1155,0x1134,0x1113,0x1113,0x1112,0x1112,0x1912,0x1112,0x1112,0x1112,0x1112,0x1132,0x1932,0x1132,0x1932,0x1932,0x1932,0x1932,0x1953,0x1953,0x1933,0x1133,0x1133,0x1154,0x1195,0x21F7,0x2218,0x21F7,0x19B5,0x1174,0x1133,0x1112,0x1911,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2131,0x2151,0x1951,0x1952,0x1153,0x1974,0x19D6,0x21F7,0x2238,0x1A38,0x1A38,0x1A18,0x1A38,0x1A18,0x1A18,0x1A38,0x1A38,0x1217,0x1A18,0x11F7,0x19F7,0x19F7,0x11F7,0x19F7,0x19F8,0x11D8,0x09B8,0x09D9,0x09D9,0x09FA,0x01FA,0x01D9,0x01BA,0x01DA,0x01DA,0x01BA,0x01BA,0x01B9,0x09DA,0x09D9,0x11D8,0x19D7,0x1174,0x10F1,0x1911,0x2131,0x2130,0x2131,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x2910,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x210F,0x210F,0x212F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2110,0x2110,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2110,0x2130,0x212F,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2910,0x2930,0x2930,0x212F,0x2930,0x210F,0x2930,0x2110,0x2910,0x2910, + 0x1132,0x1112,0x1112,0x08F2,0x1113,0x1175,0x1996,0x21F7,0x21F7,0x19D7,0x19B6,0x1154,0x1133,0x1112,0x1111,0x1910,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1153,0x1175,0x11B6,0x19F7,0x1A18,0x1196,0x1154,0x1112,0x1912,0x2132,0x1931,0x1932,0x1133,0x0954,0x19F7,0x1A19,0x11F8,0x0996,0x0955,0x0935,0x0954,0x0954,0x0934,0x0934,0x0934,0x1175,0x19D7,0x19D7,0x19D7,0x21B6,0x1974,0x1933,0x1932,0x1931,0x1912,0x1953,0x1154,0x0995,0x11F8,0x1A19,0x19D7,0x1975,0x1933,0x1911,0x2111,0x2110,0x2110,0x2130,0x2930,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x290F,0x210F,0x212F,0x2930,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2910,0x2930,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2910,0x2930,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1111,0x1111,0x1132,0x1153,0x19B5,0x19D6,0x19F6,0x19D5,0x19B5,0x1154,0x1133,0x1112,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x1131,0x1112,0x1153,0x1174,0x11D6,0x1A17,0x1A17,0x19F6,0x19B5,0x1153,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x212F,0x292F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x2930,0x2930,0x292F,0x2930,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x212F,0x212F,0x292F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x2950,0x3150,0x3150,0x3150,0x3171,0x3151,0x3151,0x3151,0x3151,0x3971,0x3971,0x3971,0x3971,0x3971,0x4171,0x4172,0x4171,0x3951,0x4151,0x4150,0x412F,0x490E,0x8AD4,0xD4BB,0xDC99,0xDC99,0xDC78,0xDC78,0xDC78,0xDC58,0xDC78,0xD458,0xD437,0xD457,0xD457,0xD457,0xCC57,0xCC77,0xC477,0xC477,0xBC77,0xBC77,0xBC97,0xB4B7,0xB4B7,0xACB7,0xACD8,0xA4B8,0x9C98,0x9498,0x8C98,0x8498,0x8498,0x7C98,0x7498,0x6C78,0x74D9,0x74FA,0x757C,0x759C,0x6DFD,0x6E3D,0x665D,0x5E7D,0x569D,0x4EBD,0x4EDD,0x46FE,0x3F1E,0x3F3E,0x375E,0x2F5E,0x2F7E,0x277E,0x277E,0x279E,0x279E,0x279E,0x279E,0x277E,0x2F7E,0x2F7E,0x2F7E,0x2F7E,0x2F7E,0x2F7E,0x279E,0x1F9E,0x1FBF,0x17DF,0x0FDF,0x0FDF,0x07DF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x0FDF,0x0FDF,0x0FDF,0x0FDF,0x0FBF,0x17BF,0x17BF,0x179E,0x1F9E,0x277E,0x2F7E,0x377E,0x3F5D,0x56FD,0x6E7C,0x7D79,0x8C16,0xA3B6,0xB376,0xC356,0xCB36,0xCB56,0xCB55,0xCB55,0xCB75,0xC375,0xC396,0xBBD7,0xA356,0x8376,0x7498,0x65DB,0x4EBD,0x371E,0x273E,0x1F5F,0x175F,0x0F5F,0x0F7F,0x0F7F,0x079F,0x079F,0x079F,0x077F,0x077F,0x077F,0x077F,0x075F,0x075F,0x075F,0x073F,0x073F,0x073F,0x073F,0x071F,0x071F,0x071F,0x071F,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06DF,0x06DE,0x06DF,0x06DE,0x06DE,0x06DE,0x06DE,0x06DE,0x06BE,0x06BE,0x06BE,0x06BE,0x06BE,0x06BE,0x06BE,0x06BE,0x06BE,0x06BE,0x06BE,0x06DE,0x071F,0x073F,0x075F,0x075F,0x0F7F,0x0F7F,0x0F7F,0x0F7F,0x0F7F,0x0F7F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x075F,0x077F,0x077F,0x077F,0x077F,0x077F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x0F9F,0x179F,0x1F9F,0x2F7E,0x3F3E,0x4EBD,0x665C,0x75FB,0x8D7B,0x9D1A,0xACBA,0xB49A,0xBCBB,0xBCBC,0xB4BE,0x7B3B,0x2117,0x113A,0x095C,0x097D,0x099D,0x099D,0x099E,0x099E,0x099E,0x099E,0x097E,0x097E,0x117E,0x217D,0x293B,0x38F9,0x6138,0x923A,0xA218,0xA217,0x99D6,0x8A16,0x8276,0x7337,0x53D8,0x44FA,0x3E3E,0x26DE,0x1F5F,0x179F,0x0FBF,0x0FDF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x17BF,0x2F7F,0x46FE,0x6EBF,0x7CFA,0x7272,0x99F2,0xBA13,0xC1D3,0xC192,0xC992,0xC993,0xC972,0xD193,0xD193,0xD193,0xC993,0xC993,0xC9D4,0xC1D4,0xB1D4,0xBA76,0x89B3,0x58D0,0x6152,0x4931,0x4951,0x4171,0x4172,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2930,0x2110,0x2110,0x2910,0x210F,0x2130,0x2130,0x2110,0x1932,0x1954,0x1975,0x1197,0x19F8,0x11F9,0x09F9,0x09D9,0x01D9,0x09D9,0x09D9,0x09F9,0x09D8,0x11B7,0x1197,0x1176,0x1155,0x1134,0x1133,0x1913,0x1912,0x1912,0x1912,0x1912,0x1911,0x1932,0x1931,0x1911,0x1931,0x1932,0x1911,0x1932,0x1911,0x1932,0x1932,0x1932,0x1932,0x1932,0x1112,0x1933,0x1953,0x1154,0x19B5,0x19D6,0x2217,0x19F7,0x19B5,0x1154,0x1133,0x1112,0x1911,0x2132,0x2131,0x2131,0x2131,0x2130,0x2130,0x2150,0x2130,0x2130,0x2151,0x2131,0x2131,0x1931,0x1932,0x1132,0x1153,0x1974,0x19B5,0x19D6,0x19F6,0x19D6,0x19D6,0x19D6,0x19F6,0x11D6,0x19D6,0x19D6,0x11B5,0x11B5,0x19D6,0x11B5,0x11B6,0x19B6,0x11B6,0x11B7,0x11B7,0x09B8,0x09D9,0x09F9,0x09DA,0x01D9,0x01DA,0x01BA,0x01BA,0x01DA,0x01DA,0x01B9,0x01D9,0x09D9,0x11D8,0x19B6,0x1174,0x1112,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2910,0x2110,0x2930,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x210F,0x2930,0x212F,0x2130,0x2110,0x210F,0x292F,0x2930,0x292F,0x2930,0x212F,0x212F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x2930,0x212F,0x210F,0x2930,0x210F,0x210F,0x290F,0x2930,0x290F,0x2910,0x2910,0x2930,0x2910,0x2910,0x210F,0x290F,0x290F,0x2930,0x2130,0x210F,0x2130,0x210F,0x212F,0x2930,0x212F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2910,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2930,0x2910, + 0x11B6,0x1195,0x1175,0x1175,0x19B6,0x11B6,0x21F7,0x19F7,0x21F7,0x19B6,0x1134,0x1112,0x1111,0x1111,0x1911,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x1910,0x1930,0x1952,0x1153,0x1174,0x11B6,0x11D7,0x19F7,0x1195,0x1154,0x1112,0x1932,0x1931,0x1931,0x1932,0x1133,0x1174,0x19D7,0x1A39,0x11F8,0x0997,0x0955,0x0955,0x0954,0x0954,0x0954,0x0933,0x0934,0x1175,0x19D7,0x19D7,0x19B6,0x21B6,0x1974,0x1953,0x1932,0x1911,0x1111,0x1932,0x1154,0x0975,0x11F8,0x19F8,0x19B7,0x1974,0x1953,0x1911,0x2111,0x2110,0x2110,0x2930,0x2930,0x2110,0x2130,0x2930,0x2930,0x212F,0x212F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x2930,0x212F,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2930,0x2910,0x2910,0x290F,0x2930,0x2930,0x2930,0x2910,0x2930,0x2110,0x2930,0x2110,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x2930,0x2930,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2151,0x2151,0x1931,0x1931,0x1131,0x1152,0x1173,0x19B5,0x19D5,0x19F6,0x19D6,0x19B5,0x1974,0x1133,0x1112,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2150,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2130,0x2930,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1153,0x1174,0x11B6,0x19F7,0x1A17,0x19D6,0x1995,0x1133,0x1112,0x1931,0x2131,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x212F,0x2930,0x2930,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x2950,0x2950,0x3151,0x3151,0x3151,0x3151,0x3150,0x3151,0x3151,0x3151,0x3171,0x3971,0x3971,0x3971,0x3971,0x3971,0x4171,0x4171,0x3951,0x4151,0x4150,0x412F,0x5990,0xABB7,0xDCDB,0xDC99,0xDC78,0xDC78,0xDC78,0xDC58,0xDC58,0xDC58,0xD457,0xD457,0xD437,0xD457,0xD457,0xD457,0xCC57,0xCC77,0xC477,0xC477,0xC477,0xBC77,0xBC97,0xB4B8,0xB4D8,0xACB8,0x9C77,0x9C78,0x8C78,0x8498,0x7CB8,0x74D9,0x7519,0x6D5B,0x75BC,0x765E,0x6E5E,0x6E5E,0x665D,0x5E7E,0x567D,0x569D,0x4EBD,0x46DD,0x46FE,0x3F1E,0x3F3E,0x373E,0x373E,0x2F5E,0x277E,0x277E,0x277E,0x279F,0x1F9E,0x1FBF,0x1F9E,0x1F9E,0x1F9E,0x1F9E,0x1F7E,0x279E,0x279E,0x279E,0x279E,0x279E,0x1F9E,0x1FBE,0x17BE,0x17DF,0x0FDE,0x0FDF,0x0FFF,0x07FF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x0FDF,0x0FBF,0x0FDF,0x0FBF,0x17BF,0x17BF,0x1F9F,0x1F9E,0x279E,0x2F7E,0x2F7E,0x3F5D,0x4EFC,0x6E9C,0x7D7A,0x8437,0x9BB6,0xB376,0xBB56,0xC336,0xCB56,0xCB55,0xD355,0xCB55,0xCB76,0xC376,0xBB96,0xB3B7,0x9335,0x7BD7,0x6D5A,0x565C,0x3EDD,0x2F1E,0x273E,0x173F,0x173F,0x0F5F,0x0F7F,0x077F,0x077F,0x077F,0x077F,0x077F,0x075F,0x075F,0x075F,0x075F,0x075F,0x073F,0x073F,0x071F,0x071F,0x071F,0x071F,0x071F,0x06FE,0x06FF,0x06FE,0x06FF,0x06FE,0x06FE,0x06FF,0x06DE,0x06DE,0x06DE,0x06DF,0x06BE,0x06BE,0x06BE,0x06BE,0x06BE,0x06DF,0x06BE,0x06BE,0x069E,0x069E,0x069E,0x069E,0x067E,0x067E,0x067E,0x067E,0x069E,0x067E,0x069E,0x06DF,0x06FF,0x071F,0x071F,0x071F,0x071F,0x073F,0x073F,0x073F,0x075F,0x077F,0x077F,0x077F,0x077F,0x075F,0x077F,0x077F,0x075F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x0F9F,0x1F9F,0x277E,0x373E,0x46FD,0x5EBC,0x6E3C,0x859B,0x951A,0xA4B9,0xB49A,0xBC9A,0xC49B,0xBCBC,0xB4BF,0x5219,0x2159,0x115B,0x097C,0x097D,0x099D,0x099E,0x099E,0x09BE,0x099E,0x017E,0x097E,0x117E,0x197D,0x295C,0x311A,0x5918,0x91FA,0xA238,0xA217,0x99F6,0x9216,0x8296,0x7B38,0x5397,0x44BA,0x3E3D,0x2EDF,0x1F3F,0x177F,0x17BF,0x0FBF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x0FBF,0x1F7F,0x3F1F,0x5EBE,0x85FD,0x6A72,0x91D1,0xBA34,0xC1D3,0xC1B2,0xC992,0xC993,0xC993,0xD193,0xC993,0xD193,0xC993,0xC993,0xC9D4,0xB993,0xB9D4,0xB235,0xA235,0x60B0,0x5911,0x5131,0x4951,0x4171,0x4171,0x3971,0x3992,0x3171,0x3151,0x3151,0x3151,0x3131,0x3131,0x3151,0x3150,0x3150,0x2950,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2910,0x2930,0x2130,0x2110,0x1911,0x1953,0x1974,0x1975,0x19B7,0x19D8,0x11F8,0x11F9,0x11F9,0x11F9,0x11F8,0x19F9,0x11D8,0x1176,0x1175,0x1974,0x1974,0x1933,0x1932,0x1932,0x1911,0x1931,0x1911,0x2131,0x1911,0x1931,0x1931,0x1951,0x1931,0x2151,0x2152,0x1931,0x1931,0x1911,0x1931,0x2151,0x1931,0x2152,0x1932,0x1912,0x1112,0x1954,0x1154,0x1995,0x19D6,0x19F7,0x19F7,0x19B5,0x1174,0x1113,0x10F2,0x18F1,0x2111,0x2152,0x2131,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1911,0x1911,0x1111,0x10F1,0x1112,0x1112,0x1112,0x1112,0x1133,0x1132,0x1153,0x1153,0x1153,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1133,0x0934,0x0934,0x0956,0x0997,0x0998,0x09D9,0x09D9,0x09DA,0x01B9,0x01D9,0x01B9,0x01DA,0x09FA,0x09FA,0x09F9,0x11D7,0x19D6,0x1173,0x1932,0x1931,0x2131,0x2130,0x2110,0x2110,0x2130,0x210F,0x2910,0x2930,0x2930,0x2930,0x2910,0x2110,0x2930,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x210F,0x290F,0x210F,0x212F,0x212F,0x2930,0x2110,0x210F,0x212F,0x292F,0x290F,0x2110,0x2930,0x2110,0x2110,0x212F,0x212F,0x210F,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2130,0x212F,0x2930,0x210F,0x2930,0x210F,0x290F,0x292F,0x290F,0x2910,0x2910,0x2910,0x210F,0x290F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F, + 0x11F7,0x11D7,0x19F7,0x19D7,0x19D7,0x19F7,0x19F7,0x19D7,0x19B5,0x1154,0x1132,0x1111,0x1911,0x1911,0x2131,0x2130,0x2130,0x212F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x1930,0x1931,0x1953,0x1175,0x11B6,0x1A18,0x1A17,0x1195,0x1154,0x1133,0x1932,0x1931,0x1931,0x1912,0x1933,0x1154,0x11B6,0x1A19,0x11F8,0x09B7,0x0976,0x0975,0x0154,0x0954,0x0954,0x0954,0x0954,0x1195,0x19D7,0x19D6,0x19B6,0x1995,0x1953,0x1932,0x1911,0x1911,0x1932,0x1132,0x1154,0x1196,0x11F8,0x19F8,0x19D7,0x1975,0x1933,0x1931,0x2131,0x2110,0x2110,0x2930,0x2130,0x2110,0x2110,0x2130,0x2930,0x2130,0x210F,0x2930,0x2930,0x210F,0x2110,0x2110,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x2930,0x212F,0x210F,0x290F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x2130,0x212F,0x212F,0x2930,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2910,0x2910,0x2110,0x210F,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x212F,0x290F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2151,0x1931,0x1931,0x1131,0x1152,0x1173,0x1194,0x19F6,0x21F6,0x19D6,0x19B5,0x1974,0x1133,0x1112,0x1911,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x2130,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x1931,0x1132,0x0933,0x0974,0x11B6,0x19F7,0x19F7,0x19F7,0x1995,0x1133,0x1112,0x1111,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x292F,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x3151,0x3151,0x3971,0x3971,0x3971,0x3972,0x3971,0x3971,0x3971,0x3951,0x3950,0x4150,0x410E,0x61D0,0xBC19,0xD4BA,0xDC99,0xDC78,0xDC78,0xDC58,0xDC58,0xDC58,0xD458,0xD458,0xD457,0xD437,0xD437,0xD457,0xD457,0xCC57,0xCC77,0xCC77,0xC478,0xC498,0xBC98,0xBC98,0xBCD9,0xAC98,0x9C77,0x9497,0x8C98,0x8CB8,0x7CB8,0x74F9,0x7D9B,0x7DFC,0x763D,0x6E5D,0x669E,0x5EBE,0x56BE,0x56DE,0x4EDE,0x4EDE,0x46DE,0x46FE,0x3F1D,0x3F3E,0x373E,0x375E,0x2F5E,0x2F5E,0x2F7E,0x277E,0x277E,0x1F9E,0x1F9E,0x1F9E,0x179E,0x179E,0x179E,0x1FBE,0x1FBE,0x1FBE,0x179E,0x1F9E,0x1F9E,0x1F9E,0x1FBE,0x1FBE,0x1FBE,0x17BE,0x17BE,0x0FBE,0x0FDE,0x0FDE,0x07DE,0x07DF,0x07DF,0x07DF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x0FDF,0x0FDF,0x0FBF,0x17BF,0x17BF,0x17BF,0x1FBF,0x1F9E,0x279E,0x279E,0x2F7E,0x375D,0x3F3D,0x4EFD,0x669C,0x7DBA,0x8477,0x9BB6,0xB376,0xBB36,0xC336,0xCB36,0xCB35,0xCB55,0xD375,0xCB75,0xC376,0xC396,0xBB97,0xA356,0x8356,0x7479,0x65FC,0x4EBD,0x36FD,0x271E,0x1F3E,0x173E,0x0F3F,0x0F5F,0x0F5F,0x077F,0x077F,0x077F,0x075F,0x077F,0x075F,0x075F,0x075F,0x075F,0x073F,0x073F,0x071F,0x071F,0x071F,0x071F,0x071F,0x06FF,0x06FF,0x06FE,0x06FE,0x06FE,0x06FE,0x06DE,0x06DF,0x06DF,0x06DF,0x06BE,0x06BF,0x06BE,0x06BE,0x069E,0x069E,0x069E,0x069E,0x069E,0x069E,0x069E,0x069E,0x067E,0x065E,0x067E,0x065E,0x065E,0x065E,0x065E,0x065E,0x065E,0x067E,0x067E,0x069F,0x06BF,0x06BF,0x06DF,0x06DF,0x06FF,0x06FF,0x071F,0x0F3F,0x0F5F,0x0F5F,0x075F,0x075F,0x077F,0x077F,0x075F,0x075F,0x075F,0x075F,0x075F,0x075F,0x075F,0x075F,0x077F,0x077F,0x077F,0x077F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x0F9F,0x179F,0x1F7E,0x2F5E,0x3F1D,0x4EDD,0x667C,0x7DDB,0x8D3A,0x9CB9,0xAC99,0xBC9A,0xC49A,0xC49B,0xBCBD,0x8B9D,0x41D9,0x195A,0x115C,0x097C,0x099D,0x099D,0x099E,0x09BE,0x099E,0x099E,0x097E,0x117E,0x197D,0x215D,0x311B,0x50F8,0x81DA,0xA239,0xAA38,0x99F6,0x91F6,0x8A76,0x7B17,0x5B97,0x4C99,0x463E,0x2EDF,0x1F3F,0x175F,0x17BF,0x0FBF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x0FBF,0x1F9F,0x371E,0x56DE,0x8E5F,0x6AF4,0x89F1,0xB233,0xC1F3,0xC1B3,0xC9B2,0xC993,0xC972,0xC993,0xD193,0xD1B3,0xC993,0xC9B3,0xC1B3,0xC1B3,0xB9D4,0xB215,0xB276,0x68D0,0x6111,0x5151,0x4951,0x4171,0x4172,0x3992,0x3992,0x3171,0x3151,0x3171,0x3151,0x3131,0x3151,0x3151,0x2930,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x1931,0x1953,0x1954,0x1975,0x1196,0x19B7,0x19D7,0x11B7,0x11B7,0x11B7,0x1196,0x1195,0x1174,0x1953,0x1132,0x1932,0x1931,0x1911,0x1931,0x1931,0x2131,0x1931,0x2131,0x2131,0x1931,0x1910,0x1931,0x1930,0x1930,0x1931,0x1910,0x1930,0x1931,0x2131,0x1910,0x2131,0x2131,0x1931,0x1911,0x1932,0x1932,0x1133,0x1133,0x1174,0x19B6,0x2217,0x19D7,0x19B6,0x1154,0x1113,0x1112,0x18F1,0x2111,0x2111,0x2931,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1912,0x1112,0x1133,0x1155,0x1176,0x11B7,0x11D8,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x09F9,0x09D8,0x11F8,0x19F7,0x19B5,0x1973,0x1931,0x2131,0x2131,0x2130,0x2110,0x210F,0x210F,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x2110,0x2130,0x2110,0x2930,0x2110,0x2910,0x2910,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x290F,0x290F,0x212F,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x210F,0x2110,0x2110,0x2930,0x2110,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x212F,0x292F,0x210F,0x2130,0x2110,0x210F,0x2930,0x210F,0x2110,0x2130,0x2130,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F, + 0x11D7,0x19F7,0x19F8,0x19F7,0x19F7,0x19D7,0x19D6,0x1995,0x1974,0x1132,0x1911,0x1911,0x1910,0x2110,0x2110,0x2930,0x2110,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x1910,0x1910,0x1932,0x1174,0x11B6,0x1A38,0x1A18,0x1195,0x0954,0x1133,0x1932,0x1932,0x2152,0x1911,0x1112,0x1133,0x1196,0x19F8,0x11F8,0x09B7,0x09B7,0x0996,0x0975,0x0995,0x0154,0x0974,0x1195,0x11D6,0x19F7,0x11B6,0x1995,0x1153,0x1932,0x1932,0x1911,0x1911,0x1911,0x1112,0x1133,0x11D7,0x2239,0x19F8,0x19B7,0x1974,0x1132,0x1931,0x2131,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x2110,0x2930,0x2930,0x2930,0x2110,0x2110,0x2130,0x2110,0x210F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x2930,0x2930,0x212F,0x2930,0x2930,0x290F,0x210F,0x210F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x212F,0x2930,0x2930,0x290F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x290F,0x292F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x210F,0x290F,0x210F,0x292F,0x292F,0x212F,0x210F,0x210F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2151,0x1951,0x1931,0x1131,0x1132,0x1173,0x19B4,0x19D5,0x2217,0x21D6,0x1995,0x1174,0x1133,0x1112,0x1911,0x1911,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x1930,0x1931,0x1132,0x1133,0x1174,0x11D6,0x19F7,0x19F7,0x19D7,0x1995,0x1153,0x1132,0x1111,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x2950,0x3151,0x3150,0x3151,0x3151,0x3131,0x3151,0x3151,0x3150,0x3171,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3951,0x3950,0x392F,0x410E,0x7252,0xCCBA,0xD499,0xDC99,0xDC78,0xDC58,0xDC58,0xDC58,0xD457,0xD457,0xD457,0xD458,0xD437,0xD457,0xCC57,0xCC57,0xCC78,0xCC78,0xCC78,0xC478,0xBC98,0xBC99,0xB4B9,0xACDA,0x9458,0x8C78,0x84B8,0x84F9,0x7D39,0x7D9A,0x863C,0x7E7D,0x767D,0x667D,0x667D,0x5E9D,0x56BD,0x4EDD,0x4EFD,0x46FD,0x471E,0x471E,0x3F3E,0x3F3E,0x373E,0x375E,0x2F5E,0x2F5E,0x2F7E,0x277E,0x277E,0x277E,0x1F9E,0x1F9E,0x1F9E,0x179E,0x179E,0x17BE,0x17BE,0x17BE,0x17BE,0x17BE,0x17BE,0x17BE,0x1FBE,0x1FBE,0x1FBE,0x1FBE,0x1FBE,0x17BE,0x17BE,0x17BE,0x0FBE,0x0FBE,0x0FBE,0x0FDF,0x0FDF,0x07DF,0x07DF,0x07BF,0x0FDF,0x0FBF,0x0FDF,0x0FBF,0x0FBF,0x0FBF,0x17BF,0x17BF,0x1FBF,0x1F9E,0x1F9E,0x279E,0x2F7E,0x2F7D,0x375D,0x471C,0x56FC,0x6E9C,0x7D79,0x8457,0x9396,0xAB56,0xBB36,0xC315,0xCB56,0xD376,0xCB35,0xCB55,0xCB76,0xCB76,0xC396,0xC397,0xB356,0x9335,0x73B7,0x6D1A,0x5E9E,0x3F1E,0x2F3E,0x275E,0x1F3E,0x173E,0x0F3F,0x0F5F,0x0F5F,0x075F,0x075F,0x075F,0x073F,0x075F,0x073F,0x073F,0x073F,0x073F,0x071F,0x071F,0x071F,0x06FF,0x06FF,0x06FF,0x06FE,0x06FE,0x06FF,0x06DE,0x06DE,0x06DE,0x06DE,0x06DE,0x06BE,0x06BE,0x06BE,0x06BE,0x069E,0x069E,0x069E,0x069E,0x069E,0x069E,0x069E,0x067E,0x067E,0x067E,0x065E,0x065E,0x065E,0x065E,0x063E,0x063E,0x063E,0x063E,0x061E,0x061E,0x063E,0x063E,0x063E,0x065F,0x065F,0x065F,0x067F,0x067F,0x069F,0x06BF,0x0EFF,0x0EFF,0x0F3F,0x073F,0x075F,0x075F,0x075F,0x075F,0x075F,0x075F,0x075F,0x075F,0x075F,0x075F,0x075F,0x075F,0x077F,0x077F,0x077F,0x077F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x0F9F,0x179E,0x277E,0x373D,0x471D,0x5EBC,0x761C,0x857A,0x9CD9,0xAC99,0xBC99,0xC49A,0xCC7A,0xC49C,0xB47E,0x7AFB,0x2138,0x195B,0x115C,0x097D,0x099D,0x099E,0x099E,0x099E,0x099E,0x097E,0x097E,0x117D,0x215D,0x313B,0x40D8,0x79B9,0xA259,0xAA38,0xA1F6,0x91F6,0x8A56,0x82F7,0x5B57,0x4C99,0x463E,0x36DF,0x273F,0x175F,0x0F9F,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x07DF,0x0FDF,0x1F9F,0x2F3F,0x4EDE,0x8EBF,0x7376,0x79D1,0xAA13,0xB9D3,0xC1D3,0xC9B3,0xC992,0xC993,0xC972,0xC972,0xD1B3,0xC993,0xC9B3,0xC1B3,0xC1B3,0xB9F4,0xB215,0xB256,0x70F1,0x60F1,0x5951,0x4931,0x4971,0x4171,0x4192,0x3992,0x3171,0x3151,0x3971,0x3971,0x3151,0x3151,0x3150,0x3150,0x3150,0x2950,0x2950,0x2950,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2910,0x2930,0x2930,0x2910,0x2930,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2930,0x2930,0x20EF,0x2110,0x2111,0x1912,0x1912,0x1933,0x1974,0x1975,0x1975,0x1975,0x1975,0x1975,0x1954,0x1953,0x1132,0x1912,0x1911,0x1931,0x1911,0x1910,0x2131,0x1910,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x2131,0x2131,0x2131,0x2132,0x1932,0x1112,0x1133,0x1975,0x21D6,0x19D6,0x19D7,0x19D6,0x1134,0x1113,0x10F2,0x1911,0x2111,0x2110,0x2110,0x2110,0x2130,0x210F,0x2110,0x2130,0x2110,0x2110,0x2131,0x2131,0x2131,0x2131,0x2110,0x2130,0x2110,0x2110,0x18F0,0x1910,0x1910,0x1910,0x1910,0x1931,0x1910,0x2130,0x1910,0x2131,0x1911,0x2131,0x1932,0x1932,0x1933,0x1954,0x1975,0x19B7,0x11B7,0x11D8,0x11F9,0x11F9,0x09F8,0x11F9,0x11F9,0x1219,0x1A18,0x11B6,0x1196,0x1995,0x1953,0x1911,0x1910,0x2130,0x2130,0x2110,0x210F,0x2130,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x212F,0x2930,0x290F,0x210F,0x210F,0x212F,0x2930,0x2110,0x2110,0x2130,0x2130,0x212F,0x210F,0x292F,0x290F,0x2930,0x2110,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2930,0x2110,0x2930,0x2930,0x290F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2930,0x212F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2130,0x2110,0x2110,0x2130,0x2930,0x2930,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x2910,0x2910,0x210F,0x210F,0x292F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x2910,0x210F,0x290F,0x210F,0x290F,0x290F, + 0x1195,0x1196,0x19B6,0x19B6,0x19B6,0x1175,0x1154,0x1133,0x1112,0x1931,0x1911,0x1910,0x2130,0x2130,0x2110,0x2110,0x210F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x1910,0x1952,0x1154,0x11B6,0x19F7,0x1A38,0x11B6,0x0954,0x1153,0x1932,0x1952,0x1911,0x1911,0x1112,0x1133,0x1175,0x11D7,0x1A18,0x11D7,0x11D7,0x09B7,0x0996,0x0995,0x0975,0x0995,0x11D6,0x19F6,0x19D6,0x19B6,0x1974,0x1933,0x1932,0x1911,0x1911,0x1911,0x1912,0x1133,0x1134,0x19D7,0x2239,0x19F8,0x19B7,0x1974,0x1933,0x1931,0x2111,0x2110,0x2130,0x2930,0x2130,0x210F,0x2130,0x2130,0x2110,0x2130,0x2110,0x2910,0x2930,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2930,0x290F,0x290F,0x292F,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x2110,0x2130,0x210F,0x2110,0x2930,0x2930,0x2130,0x210F,0x2110,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x212F,0x290F,0x210F,0x292F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x1930,0x1931,0x1131,0x1152,0x1173,0x19B5,0x19D6,0x19D6,0x21D6,0x19B5,0x1174,0x1153,0x1112,0x1912,0x1931,0x1931,0x2131,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2131,0x1931,0x1111,0x1153,0x1174,0x11B5,0x19F7,0x19F7,0x19F7,0x1195,0x1153,0x1112,0x1911,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x210F,0x2930,0x292F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x3150,0x3150,0x3150,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3971,0x3971,0x3971,0x3971,0x3971,0x3951,0x3951,0x3950,0x392F,0x410E,0x7A93,0xCCBA,0xD4B9,0xDC99,0xDC78,0xDC78,0xD457,0xD458,0xD457,0xD457,0xD457,0xD457,0xD457,0xD457,0xCC57,0xCC57,0xCC78,0xCC98,0xC499,0xC499,0xBC99,0xAC78,0x9C78,0x9478,0x8C99,0x7C78,0x8519,0x8D9B,0x85FC,0x863C,0x765C,0x6E9C,0x667C,0x5E9C,0x5EBD,0x56BD,0x56DD,0x4EDD,0x46FD,0x471D,0x471D,0x3F3D,0x3F3D,0x3F3E,0x375E,0x375E,0x2F5E,0x2F5E,0x2F5E,0x277E,0x277E,0x277E,0x277E,0x1F9E,0x1F9E,0x1F9E,0x1F9E,0x1FBE,0x1FBE,0x17BE,0x17BE,0x17BE,0x17BE,0x17BE,0x17BE,0x1FBE,0x1F9E,0x1FBE,0x1FBE,0x1FBE,0x1FBE,0x17BE,0x17BE,0x17BE,0x17BF,0x17BF,0x0FBF,0x17DF,0x0FBF,0x0FBF,0x0FBF,0x0FBF,0x17BF,0x17BF,0x17BF,0x17BF,0x17BF,0x1FBF,0x1F9F,0x279E,0x279E,0x2F7E,0x2F7E,0x375D,0x3F3D,0x46FC,0x5EDC,0x767C,0x7D79,0x8437,0x9396,0xAB56,0xBB16,0xC315,0xCB36,0xCB56,0xD356,0xCB55,0xCB55,0xCB76,0xCB96,0xC396,0xB377,0x9AF5,0x8356,0x6C58,0x65BC,0x4EBD,0x371E,0x273E,0x1F3E,0x173E,0x0F1E,0x0F3F,0x0F3F,0x073F,0x075F,0x073F,0x073F,0x073F,0x073F,0x073F,0x073F,0x071F,0x071F,0x071F,0x071F,0x06FF,0x06FE,0x06FF,0x06FF,0x06FE,0x06DE,0x06DE,0x06DE,0x06DE,0x06DE,0x06DF,0x06BE,0x06BE,0x06BE,0x06BE,0x069E,0x06BE,0x069E,0x069E,0x069E,0x067E,0x067E,0x067E,0x065E,0x065E,0x065E,0x065E,0x063E,0x063E,0x063E,0x063E,0x061E,0x061E,0x061E,0x05FE,0x05FF,0x05FE,0x05FE,0x05FF,0x05FE,0x05FE,0x05FE,0x05FE,0x05FF,0x05FF,0x061F,0x0E5F,0x065F,0x0EBF,0x0EDF,0x0F1F,0x073F,0x075F,0x075F,0x075F,0x073F,0x073F,0x075F,0x075F,0x075F,0x075F,0x075F,0x075F,0x077F,0x077F,0x077F,0x077F,0x079F,0x079F,0x079F,0x079F,0x079F,0x0F9F,0x179F,0x1F7E,0x2F5E,0x3F3D,0x56DD,0x6E5C,0x7DBB,0x951A,0xA4B9,0xB479,0xC47A,0xCC7A,0xCC7A,0xC47C,0xAC3E,0x4198,0x2119,0x195B,0x117C,0x097D,0x097D,0x099E,0x099E,0x099E,0x099E,0x097E,0x117D,0x197D,0x293C,0x38D9,0x6979,0x9A5A,0xAA38,0xA1D6,0x99F6,0x9236,0x82B6,0x6357,0x5479,0x4E3E,0x36DF,0x273F,0x175F,0x0F9F,0x0FBF,0x0FBF,0x07BF,0x07BF,0x07DF,0x07DF,0x07BF,0x07BF,0x07DF,0x07DF,0x0FDF,0x179F,0x2F5F,0x46DE,0x7EBF,0x8459,0x69D1,0xA254,0xBA13,0xC1D3,0xC9B3,0xC993,0xC972,0xC972,0xC993,0xC993,0xC993,0xC9B3,0xC1B3,0xC1D3,0xB9D4,0xB1F4,0xBA76,0x8973,0x60D0,0x5951,0x5151,0x4951,0x4171,0x3971,0x41B2,0x3951,0x3951,0x3971,0x3971,0x3131,0x3131,0x3151,0x3150,0x2950,0x2950,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2910,0x2910,0x2930,0x292F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x290F,0x210F,0x2110,0x2110,0x2110,0x2111,0x1911,0x1932,0x1932,0x1933,0x1933,0x1933,0x1933,0x1933,0x1912,0x1912,0x1932,0x1931,0x1911,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x2131,0x1911,0x1911,0x1932,0x1133,0x1995,0x21D6,0x21F7,0x19D7,0x19B6,0x1154,0x1113,0x1911,0x1911,0x2111,0x2110,0x2110,0x2930,0x2930,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2111,0x1911,0x1932,0x1912,0x1133,0x1975,0x1995,0x11B6,0x1196,0x11D7,0x11D7,0x11D7,0x19F7,0x11D7,0x11B6,0x1175,0x1974,0x1932,0x1911,0x1910,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x2110,0x2930,0x2930,0x2930,0x210F,0x2130,0x2130,0x2110,0x2130,0x2930,0x2930,0x2930,0x2910,0x2910,0x290F,0x292F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2110,0x2110,0x2930,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x290F,0x290F,0x292F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x212F,0x292F,0x290F,0x290F,0x2110,0x2110,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x2930,0x290F,0x292F,0x290F,0x290F,0x210F,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x2130,0x210F,0x2130,0x210F,0x2930,0x210F,0x210F,0x2910,0x2930,0x290F,0x210F,0x212F,0x210F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F, + 0x1113,0x1113,0x1112,0x1133,0x1133,0x1132,0x10F1,0x1911,0x1911,0x1911,0x2131,0x2130,0x2130,0x2110,0x210F,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x210F,0x210F,0x1910,0x1931,0x1973,0x1195,0x19F7,0x1A18,0x11B6,0x1154,0x1153,0x1132,0x1932,0x1931,0x1911,0x1911,0x1132,0x1154,0x11B6,0x11F7,0x11F8,0x11D7,0x11D7,0x11D7,0x0996,0x0996,0x11B6,0x11D6,0x1A17,0x19D6,0x19B5,0x1954,0x1932,0x1932,0x1931,0x1911,0x1911,0x1932,0x1133,0x1175,0x19F7,0x2239,0x19D7,0x1996,0x1154,0x1932,0x2132,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x292F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x2130,0x210F,0x2930,0x2930,0x290F,0x210F,0x2910,0x2910,0x2930,0x290F,0x2910,0x2910,0x210F,0x210F,0x2930,0x290F,0x212F,0x212F,0x2930,0x2930,0x212F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2910,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x2130,0x212F,0x212F,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x292F,0x292F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x1930,0x1931,0x1931,0x1131,0x1152,0x1153,0x1995,0x19D6,0x19D6,0x19D6,0x19B6,0x1174,0x1133,0x1113,0x1932,0x1932,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2131,0x2131,0x2130,0x2131,0x2131,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x1932,0x1952,0x1153,0x1154,0x1195,0x19D6,0x19F7,0x21F7,0x1996,0x1133,0x1112,0x1111,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x292F,0x212F,0x212F,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x212F,0x212F,0x292F,0x2930,0x2930,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x3150,0x3150,0x3150,0x3130,0x3150,0x3151,0x3951,0x3971,0x3971,0x3971,0x3971,0x3951,0x3951,0x3930,0x3930,0x390F,0x38EE,0x82B3,0xCC9A,0xD499,0xDC98,0xDC78,0xDC78,0xD458,0xD458,0xD457,0xD457,0xD457,0xD457,0xCC57,0xCC57,0xCC77,0xCC77,0xCC78,0xC498,0xBCBA,0xB4BA,0xACBA,0x9C79,0x8C99,0x84B9,0x851A,0x857B,0x963D,0x863C,0x7E3C,0x765C,0x767C,0x6E7C,0x669C,0x5EBC,0x5EBC,0x56BD,0x56DD,0x4EDD,0x4EFD,0x46FD,0x471D,0x471D,0x3F3D,0x3F3D,0x3F3D,0x373E,0x375E,0x375E,0x2F5E,0x2F5E,0x2F7E,0x2F7E,0x2F7E,0x277E,0x277E,0x277E,0x279F,0x279F,0x279E,0x1F9E,0x1F9E,0x1F9E,0x1FBE,0x1F9E,0x1F9E,0x1F9E,0x1F9E,0x1F9E,0x1F9E,0x1F9E,0x1F9E,0x1F9E,0x1FBE,0x1F9E,0x1F9E,0x1FBF,0x1FBF,0x179F,0x17BF,0x17BF,0x1FBF,0x1FBF,0x1F9F,0x1F9F,0x1F9F,0x1F9F,0x1F9F,0x279F,0x279E,0x277E,0x2F7E,0x377E,0x375D,0x3F3D,0x471C,0x56FC,0x669B,0x7E3B,0x7476,0x83B5,0x9B76,0xAB56,0xBB56,0xC356,0xCB56,0xCB56,0xCB55,0xCB35,0xCB35,0xCB55,0xCB76,0xC376,0xBB77,0xAB36,0x8B36,0x7C18,0x655B,0x565D,0x3EFE,0x2F3E,0x273E,0x1F1E,0x171E,0x0F1F,0x0F3F,0x0F3F,0x071F,0x073F,0x071F,0x073F,0x073F,0x073F,0x071F,0x071F,0x071F,0x071F,0x06FF,0x06FF,0x06FF,0x06FF,0x06FF,0x06DE,0x06DE,0x06DE,0x06DE,0x06BE,0x06DF,0x06BE,0x06BF,0x06BF,0x06BE,0x06BE,0x069E,0x069E,0x069E,0x067E,0x067E,0x067E,0x067E,0x065E,0x065E,0x065E,0x065E,0x063E,0x063E,0x061E,0x061E,0x061E,0x061E,0x05FE,0x05FF,0x05FF,0x05DE,0x05DE,0x05BE,0x05BE,0x059E,0x059E,0x057E,0x057E,0x055E,0x055E,0x053E,0x053E,0x055D,0x057E,0x059E,0x05DE,0x0E7F,0x0EDF,0x0F3F,0x073F,0x073F,0x073F,0x073F,0x073F,0x073F,0x073F,0x073F,0x075F,0x075F,0x075F,0x077F,0x077F,0x077F,0x079F,0x079F,0x079F,0x079F,0x079F,0x079F,0x0F9F,0x179E,0x277E,0x375E,0x4EFD,0x669C,0x75FB,0x8D5A,0xA4F9,0xAC58,0xC459,0xCC79,0xCC7A,0xCC7B,0xBC7D,0x7B1B,0x3158,0x215A,0x117C,0x097C,0x097D,0x097D,0x099E,0x099E,0x099E,0x097E,0x117E,0x197D,0x295C,0x38F9,0x50F7,0x9A5A,0xAA38,0xA1D6,0x99F6,0x9215,0x8296,0x6B37,0x5459,0x4E1E,0x3EDF,0x271F,0x1F5F,0x0F7F,0x0F9F,0x0FBF,0x07BF,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x07DF,0x0FDF,0x179F,0x2F5F,0x3EDE,0x6E7E,0x8D5C,0x61F0,0x9A33,0xB214,0xB9F3,0xC1B3,0xC992,0xC993,0xC993,0xC973,0xC993,0xC9B3,0xC993,0xC193,0xC1D3,0xB9D4,0xB1D4,0xB235,0x91B4,0x60D0,0x5931,0x5151,0x4151,0x4171,0x4172,0x4192,0x3951,0x3951,0x3951,0x3971,0x3151,0x3131,0x3151,0x3150,0x3150,0x3150,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2930,0x290F,0x290F,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2930,0x292F,0x292F,0x2930,0x2130,0x2110,0x2131,0x1911,0x2152,0x1932,0x1912,0x1912,0x1932,0x1932,0x1911,0x1911,0x1931,0x2131,0x2131,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2111,0x1911,0x1911,0x1132,0x1995,0x21F6,0x21F7,0x21F7,0x1995,0x1153,0x1112,0x1911,0x2131,0x2111,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2930,0x2130,0x2110,0x2110,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2111,0x2111,0x1911,0x1912,0x1932,0x1933,0x1133,0x1154,0x1975,0x1995,0x1975,0x1975,0x1154,0x1154,0x1112,0x1112,0x1911,0x1911,0x1910,0x2110,0x2930,0x2130,0x2930,0x2110,0x2130,0x210F,0x2130,0x212F,0x2930,0x210F,0x2910,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x292F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x2930,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2910,0x2110,0x2110,0x290F,0x290F,0x292F,0x290F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x210F,0x212F,0x2930,0x210F,0x2110,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2110,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x292F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F, + 0x1911,0x18F1,0x1911,0x1912,0x1911,0x1911,0x1911,0x1911,0x1911,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x1910,0x1911,0x1953,0x1174,0x19D7,0x1A18,0x19D7,0x1175,0x1133,0x1133,0x1932,0x1931,0x1931,0x1911,0x1132,0x1133,0x1174,0x19D6,0x19D7,0x11D7,0x11D7,0x09B7,0x11B7,0x11D7,0x11D7,0x19D7,0x19F6,0x19D6,0x1994,0x1153,0x1932,0x1931,0x1931,0x1931,0x1932,0x1932,0x1153,0x1195,0x1A18,0x2239,0x19D7,0x1995,0x1133,0x1932,0x1931,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x210F,0x2110,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2110,0x2110,0x2910,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x290F,0x210F,0x2930,0x212F,0x2930,0x210F,0x290F,0x2930,0x2910,0x210F,0x2930,0x210F,0x2910,0x2930,0x210F,0x212F,0x2930,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x210F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x290F,0x210F,0x212F,0x290F,0x210F,0x290F,0x2930,0x2930,0x2930,0x210F,0x2110,0x2930,0x290F,0x292F,0x292F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x292F,0x2930,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x1931,0x1930,0x1111,0x1111,0x1132,0x1174,0x19B5,0x19D6,0x19D6,0x19D6,0x19B6,0x1175,0x1134,0x1133,0x1132,0x1932,0x1931,0x1931,0x2131,0x1911,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2130,0x2131,0x2131,0x2111,0x2131,0x2131,0x2111,0x2131,0x2111,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x1911,0x1911,0x1931,0x1911,0x1932,0x1932,0x1133,0x1174,0x1195,0x19D7,0x19F7,0x19F7,0x1996,0x1154,0x1113,0x1912,0x1931,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x292F,0x212F,0x2130,0x2130,0x212F,0x292F,0x2930,0x2930,0x292F,0x212F,0x2130,0x2930,0x292F,0x292F,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x3150,0x3150,0x3150,0x3150,0x3151,0x3971,0x3971,0x3971,0x3951,0x3951,0x3951,0x3130,0x3130,0x3130,0x390F,0x38EE,0x7A72,0xCC9A,0xD4B9,0xD498,0xDC78,0xD457,0xD478,0xD458,0xD458,0xD457,0xD457,0xCC57,0xCC57,0xCC57,0xCC78,0xC478,0xC498,0xBCB9,0xAC78,0x9C58,0x9499,0x8478,0x84B9,0x8D9C,0x8DDC,0x8E1D,0x861D,0x7E3C,0x763C,0x6E5C,0x6E7C,0x6E9C,0x669C,0x669C,0x5EBC,0x5EBC,0x56BC,0x56DD,0x56DD,0x4EDD,0x4EFD,0x4EFD,0x471D,0x471D,0x471D,0x3F1D,0x3F1D,0x3F3E,0x3F3E,0x3F3E,0x3F3E,0x3F3E,0x373E,0x375E,0x375E,0x2F5E,0x2F5E,0x2F5E,0x2F7E,0x2F9E,0x2F9E,0x2F9E,0x2F9E,0x279E,0x279E,0x279E,0x279E,0x279E,0x279E,0x277E,0x279E,0x279E,0x279E,0x279E,0x279E,0x279E,0x279E,0x279F,0x279F,0x279E,0x279E,0x279F,0x277E,0x277E,0x277E,0x277E,0x277E,0x2F7E,0x2F5E,0x375E,0x375E,0x3F5E,0x3F1D,0x471D,0x56DC,0x66BC,0x767C,0x85DA,0x7C76,0x93B5,0xAB76,0xB336,0xBB36,0xC356,0xCB56,0xCB56,0xCB55,0xCB35,0xCB35,0xCB55,0xCB55,0xCB76,0xC356,0xAB36,0x9B36,0x83F8,0x74FB,0x5DFD,0x4EDE,0x371E,0x2F3F,0x1F1E,0x16FE,0x16FE,0x0F1E,0x0F1F,0x0F1F,0x071E,0x0F1F,0x0F1F,0x0F1F,0x06FF,0x071F,0x071F,0x0EFF,0x06FF,0x06FF,0x06FF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DF,0x06DE,0x06DE,0x06BE,0x06BE,0x06BF,0x06BE,0x06BF,0x06BF,0x069E,0x069E,0x069E,0x067E,0x067E,0x067E,0x067E,0x067E,0x065E,0x065E,0x065E,0x063E,0x063E,0x063E,0x061E,0x061E,0x05FE,0x05FE,0x05FE,0x05DF,0x05DF,0x05DF,0x05BF,0x05BF,0x059F,0x059E,0x057E,0x055E,0x053E,0x051E,0x04FE,0x04DE,0x04DE,0x04BD,0x04BD,0x04DD,0x04FD,0x053D,0x05BE,0x063F,0x0EFF,0x0EFF,0x0F1F,0x071F,0x073F,0x071F,0x071F,0x073F,0x073F,0x073F,0x075F,0x075F,0x075F,0x077F,0x077F,0x077F,0x077F,0x079F,0x079F,0x079F,0x079F,0x0F7F,0x177E,0x1F7E,0x2F5E,0x471E,0x56BD,0x6E3C,0x85BB,0x9D1A,0xAC79,0xBC59,0xCC59,0xCC79,0xCC5A,0xC47C,0xAC1E,0x49B7,0x2959,0x195B,0x115C,0x097D,0x097D,0x099E,0x099E,0x097E,0x097E,0x117E,0x197D,0x215C,0x311A,0x48D7,0x923A,0xAA38,0xA1D6,0xA1F6,0x9215,0x8276,0x6B17,0x5C39,0x55DD,0x3E9F,0x2EFF,0x173F,0x0F5F,0x0F7F,0x079F,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x07DF,0x179F,0x275F,0x3EFE,0x669E,0x95FE,0x6272,0x9274,0xA1F3,0xB9D3,0xC1D3,0xC193,0xC993,0xC993,0xC993,0xC9B3,0xC993,0xC993,0xC193,0xC1D3,0xC1F4,0xB9F4,0xB215,0xA1F4,0x68D0,0x6151,0x5151,0x4951,0x4151,0x4172,0x3972,0x3971,0x3951,0x3951,0x3951,0x3951,0x3131,0x3151,0x3150,0x3150,0x2950,0x2950,0x294F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2110,0x2110,0x2930,0x292F,0x292F,0x2930,0x2130,0x2130,0x2110,0x2110,0x1910,0x2131,0x1911,0x2131,0x1911,0x1911,0x2111,0x2131,0x2130,0x2131,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x1911,0x1912,0x1132,0x19B5,0x21D6,0x21D6,0x21F6,0x21D5,0x1153,0x1132,0x1911,0x2111,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2930,0x210F,0x212F,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2111,0x2131,0x1931,0x1911,0x1932,0x1932,0x1912,0x1933,0x1912,0x1912,0x1912,0x1912,0x1911,0x1911,0x1911,0x2110,0x2110,0x2110,0x2930,0x2930,0x2130,0x2110,0x2110,0x2130,0x210F,0x212F,0x2930,0x290F,0x210F,0x210F,0x2130,0x212F,0x2130,0x2130,0x292F,0x212F,0x210F,0x2930,0x290F,0x210F,0x290F,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2110,0x210F,0x2930,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x2130,0x2130,0x210F,0x2110,0x2930,0x2910,0x210F,0x2930,0x2910,0x2930,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2930,0x212F,0x212F,0x210F,0x292F,0x2930,0x2930,0x2930,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x290F,0x2930,0x210F,0x2110,0x2930,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x292F,0x210F,0x212F,0x292F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F, + 0x2111,0x2131,0x2111,0x2111,0x2131,0x2131,0x2131,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x210F,0x1910,0x1931,0x1152,0x1174,0x19D6,0x19F8,0x19F8,0x11B6,0x1154,0x1113,0x1932,0x1931,0x2152,0x1952,0x1911,0x1112,0x1133,0x1174,0x1195,0x19D7,0x11B7,0x11B6,0x11D7,0x19D7,0x11B6,0x19B6,0x19D6,0x1994,0x1153,0x1932,0x1931,0x1911,0x1911,0x1931,0x1932,0x1133,0x1154,0x1195,0x1A17,0x2218,0x19D7,0x1175,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x2950,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x212F,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x2910,0x290F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2930,0x2930,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x214F,0x212F,0x212F,0x212F,0x2130,0x2930,0x290F,0x292F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2151,0x2151,0x1931,0x1110,0x1111,0x1132,0x1153,0x1995,0x19B6,0x19D7,0x19D7,0x19B6,0x1175,0x0933,0x0913,0x1132,0x1112,0x10F1,0x10F1,0x1911,0x10F1,0x1911,0x1911,0x10F1,0x10F1,0x10F1,0x10F1,0x1911,0x1911,0x1911,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x18F1,0x18F1,0x1911,0x1911,0x1912,0x1912,0x1912,0x1932,0x1912,0x1911,0x1912,0x1912,0x10F1,0x1111,0x1912,0x1112,0x1112,0x1133,0x1154,0x1195,0x19D7,0x19F7,0x21F7,0x1996,0x1154,0x1113,0x1932,0x1931,0x2131,0x2130,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x3150,0x3150,0x3150,0x3150,0x3151,0x3151,0x3951,0x3951,0x3951,0x3950,0x3951,0x3950,0x3950,0x392F,0x40EE,0x82B4,0xCC9A,0xD499,0xD498,0xD478,0xD478,0xD478,0xD458,0xD457,0xD457,0xD457,0xD477,0xCC57,0xCC57,0xC477,0xC498,0xBCB9,0xB4DA,0x9C58,0x8C58,0x84B9,0x84FA,0x95FC,0x963D,0x861C,0x7E3C,0x7E3C,0x765C,0x765C,0x6E7C,0x6E7C,0x6E7C,0x669D,0x669D,0x669D,0x669D,0x66BD,0x5EBD,0x5EBD,0x5EBD,0x5EDD,0x56DD,0x56DD,0x56DD,0x4EDD,0x4EFD,0x4EDD,0x4EDD,0x4EDD,0x4EDD,0x46BD,0x46DD,0x46DD,0x46FD,0x3EFD,0x3F1E,0x3F1E,0x3F1E,0x371E,0x373E,0x373D,0x373D,0x373D,0x373D,0x375E,0x377E,0x377E,0x377E,0x377E,0x2F7E,0x377E,0x2F5E,0x377E,0x377E,0x2F5E,0x2F5E,0x2F5E,0x2F5E,0x2F5E,0x2F5E,0x2F5E,0x2F5E,0x2F5E,0x2F5E,0x2F5E,0x2F5E,0x375E,0x375E,0x375E,0x3F3D,0x471D,0x46FD,0x4EDC,0x569C,0x669C,0x765C,0x7D79,0x7C76,0x8BD5,0x9B96,0xAB56,0xBB56,0xC336,0xC336,0xCB56,0xCB56,0xD355,0xD335,0xD335,0xCB35,0xCB55,0xCB55,0xC356,0xBB57,0xA336,0x8BB7,0x7CBA,0x6DDC,0x569E,0x46FE,0x371E,0x26FE,0x16BD,0x16DE,0x16FE,0x0EFE,0x0F1E,0x0F1F,0x0F1F,0x0EFF,0x0EFF,0x0EFF,0x0EFF,0x0EFF,0x0EFF,0x0EFF,0x0EDF,0x0EDF,0x06DE,0x06DF,0x06DF,0x06DF,0x06BF,0x06BF,0x06BE,0x06BE,0x06BE,0x06BE,0x069E,0x069E,0x069E,0x069E,0x069F,0x069E,0x067E,0x067E,0x065E,0x065E,0x065E,0x065E,0x065E,0x065E,0x063E,0x063E,0x063E,0x061E,0x061E,0x061E,0x05FF,0x05DE,0x05BE,0x05BE,0x05BF,0x059F,0x059E,0x059F,0x059F,0x057F,0x055F,0x055F,0x053F,0x04FF,0x04DE,0x04BE,0x047D,0x045D,0x047D,0x047D,0x047D,0x04BD,0x04FD,0x055D,0x05FF,0x0E9F,0x0EDF,0x06FF,0x06FF,0x06FE,0x071F,0x071F,0x071F,0x073F,0x073F,0x073F,0x075F,0x075F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x0F7F,0x1F7E,0x2F7E,0x3F3E,0x4EDD,0x667C,0x7DFB,0x953A,0xA479,0xB458,0xC459,0xCC59,0xCC59,0xCC7B,0xC47D,0x935C,0x3138,0x215B,0x195C,0x117D,0x119D,0x099E,0x097E,0x017E,0x099E,0x119E,0x117D,0x213C,0x311B,0x40D8,0x81D9,0xA259,0xA1F7,0xA1F6,0x9A15,0x8255,0x72D6,0x63F9,0x559D,0x3E5E,0x2EBF,0x1F1F,0x0F1F,0x073F,0x077F,0x079F,0x079F,0x07BF,0x079F,0x07BF,0x07BF,0x07BF,0x07DF,0x07DF,0x17BF,0x277F,0x36FE,0x567E,0x965F,0x7395,0x8A94,0xA234,0xB213,0xC1D3,0xC192,0xC993,0xC993,0xC993,0xD1D4,0xC9B3,0xC192,0xC192,0xC1B3,0xC1D3,0xC1F4,0xB214,0xAA15,0x68D0,0x6151,0x5172,0x4951,0x4152,0x4172,0x4192,0x3972,0x3951,0x3951,0x3972,0x3951,0x3151,0x3151,0x3150,0x3150,0x3150,0x2950,0x294F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2110,0x2930,0x2110,0x2110,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x2110,0x2930,0x2110,0x210F,0x212F,0x292F,0x290F,0x212F,0x2930,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x210F,0x290F,0x210F,0x2930,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x2930,0x2130,0x2131,0x1911,0x1912,0x1132,0x1994,0x21D6,0x21F6,0x2216,0x19B5,0x1153,0x1112,0x1911,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x2110,0x2110,0x2130,0x2110,0x2131,0x1931,0x1911,0x1911,0x1911,0x1931,0x1912,0x1911,0x1932,0x1932,0x2131,0x1911,0x2131,0x2110,0x2110,0x2110,0x2951,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2110,0x2930,0x2910,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x2930,0x2930,0x212F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F, + 0x2131,0x2110,0x2111,0x2111,0x2131,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x2950,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x1910,0x1931,0x1953,0x1174,0x1195,0x19F7,0x19F8,0x19D7,0x1195,0x1133,0x1132,0x1932,0x1931,0x1952,0x1931,0x1931,0x1112,0x1133,0x1153,0x1195,0x1175,0x19B6,0x11B6,0x11B6,0x19B5,0x1195,0x1174,0x1153,0x1132,0x1932,0x1931,0x1931,0x1931,0x1931,0x1132,0x1133,0x1174,0x19B6,0x2218,0x2218,0x19B6,0x1154,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x2950,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2910,0x210F,0x2910,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x290F,0x210F,0x2930,0x290F,0x210F,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x2130,0x210F,0x210F,0x212F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x292F,0x292F,0x210F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x292F,0x292F,0x212F,0x212F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2150,0x2130,0x2130,0x1910,0x1931,0x1112,0x1153,0x1154,0x1195,0x19B6,0x19D7,0x19D7,0x11B6,0x1175,0x0954,0x0934,0x0913,0x0913,0x1113,0x1113,0x1113,0x1112,0x1112,0x1112,0x0912,0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1133,0x1133,0x1112,0x1133,0x1113,0x1113,0x1113,0x1133,0x1133,0x1133,0x1153,0x1174,0x1195,0x11B6,0x19F7,0x19F7,0x21F7,0x1996,0x1154,0x1133,0x1932,0x1931,0x1911,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x292F,0x2930,0x292F,0x292F,0x292F,0x212F,0x2950,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x2130,0x2150,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2130,0x2930,0x2930,0x2930,0x292F,0x212F,0x212F,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x3150,0x3150,0x3150,0x3150,0x3151,0x3950,0x3150,0x3150,0x3150,0x3950,0x3950,0x3930,0x392F,0x410E,0x7252,0xCC9A,0xD4B9,0xD498,0xDC98,0xD478,0xD478,0xD478,0xD457,0xCC57,0xCC78,0xCC77,0xCC78,0xC477,0xC478,0xC4B9,0xB498,0x9437,0x8C37,0x8498,0x8D7B,0x8DDC,0x8E1D,0x861C,0x7E3C,0x765C,0x765C,0x6E5C,0x6E5C,0x6E7C,0x6E7D,0x6E9D,0x6E7D,0x6E7D,0x6E7D,0x6E7D,0x6E7D,0x6E7D,0x6E7D,0x6E7D,0x6E5D,0x6E7D,0x6E7D,0x6E7D,0x667D,0x6E9D,0x669D,0x669D,0x667D,0x665C,0x5E5C,0x5E5D,0x5E5C,0x5E7D,0x569D,0x56BD,0x56BD,0x4EBD,0x4EDD,0x4EDD,0x46DD,0x46FD,0x3EFD,0x46FD,0x3EFD,0x3EFD,0x3F1D,0x3F1D,0x3F3D,0x3F3D,0x3F3D,0x3F1D,0x3F1D,0x3F3D,0x3F3D,0x3F1D,0x3EFD,0x3EFD,0x3F1D,0x3F1E,0x3F1E,0x3F3E,0x3F1E,0x3F1E,0x3F1E,0x3F1E,0x3F1E,0x471E,0x471D,0x4EFD,0x56DD,0x5E9C,0x5E5B,0x6E3B,0x6DFA,0x85DB,0x84F8,0x83F5,0x9B95,0xAB55,0xBB56,0xBB36,0xC336,0xCB36,0xCB56,0xCB56,0xD355,0xD335,0xD315,0xD335,0xD376,0xCB56,0xC356,0xBB36,0xAB56,0x9B97,0x8C59,0x755B,0x663D,0x4EBE,0x3EDE,0x36FF,0x1E9D,0x1EBE,0x1EDE,0x16FE,0x16FE,0x16FE,0x16FF,0x16FF,0x16FF,0x16DE,0x16DF,0x16DF,0x16DF,0x16DF,0x0EDF,0x0EDF,0x0EBF,0x0EBF,0x0EBE,0x0EBF,0x0EBF,0x06BF,0x06BF,0x0EBF,0x069E,0x069E,0x069E,0x069E,0x069E,0x069E,0x067E,0x067E,0x067E,0x065E,0x065E,0x065E,0x065E,0x063E,0x063E,0x063E,0x063E,0x061E,0x061E,0x061E,0x061E,0x05FE,0x05FE,0x05DE,0x05BE,0x05BF,0x059F,0x059F,0x059F,0x057F,0x057F,0x057F,0x055F,0x053F,0x051F,0x04DF,0x04BE,0x047E,0x045E,0x045E,0x043D,0x041D,0x043D,0x043D,0x045D,0x047D,0x049D,0x053D,0x0DFF,0x0E9F,0x0EDF,0x0EFF,0x06FE,0x06FF,0x06FF,0x06FE,0x071F,0x071E,0x073F,0x073F,0x075F,0x075F,0x075F,0x077F,0x077F,0x077F,0x077F,0x077F,0x077F,0x0F7F,0x177F,0x277E,0x373E,0x4EFD,0x5E7C,0x761C,0x8D7B,0x9C99,0xAC38,0xC458,0xCC59,0xCC59,0xCC5A,0xCC7B,0xC49F,0x4998,0x2939,0x195B,0x117D,0x117D,0x097D,0x097E,0x099E,0x099E,0x119E,0x117D,0x195C,0x293B,0x38F8,0x7198,0x9A39,0xA1F7,0xA1F6,0x99F5,0x8A35,0x72B6,0x63B8,0x555C,0x3DFE,0x2E9F,0x1EDF,0x0EDF,0x06FF,0x077F,0x077F,0x079F,0x079F,0x079F,0x079F,0x07BF,0x07DF,0x07DF,0x07DF,0x0F9F,0x277F,0x371F,0x56BE,0x865F,0x7C79,0x7273,0x9A53,0xB213,0xB9D3,0xC193,0xC9B3,0xC993,0xC993,0xD1B3,0xC9B3,0xC172,0xC193,0xC1B3,0xC1D4,0xB9D4,0xB1F4,0xAA35,0x68D0,0x6131,0x5172,0x4972,0x4151,0x4172,0x4192,0x3972,0x3972,0x3951,0x3972,0x3951,0x3151,0x3151,0x3150,0x3150,0x2950,0x2950,0x294F,0x2950,0x2950,0x2930,0x2950,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x292F,0x210F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x2930,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x2130,0x2130,0x2131,0x1911,0x1112,0x1153,0x19B5,0x19D6,0x2216,0x2216,0x19B4,0x1973,0x1112,0x1931,0x2131,0x2111,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x2930,0x2130,0x2930,0x2130,0x2130,0x2130,0x2131,0x2111,0x2110,0x1910,0x2111,0x1911,0x1911,0x2131,0x2131,0x1910,0x2151,0x2131,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2930,0x2910,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x210F,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x2910,0x2910,0x2930,0x210F,0x2930,0x290F,0x290F,0x2910,0x290F,0x210F,0x290F,0x292F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x290F,0x290F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x212F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F, + 0x2130,0x2110,0x2131,0x2110,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x210F,0x2930,0x212F,0x212F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x1911,0x1952,0x1153,0x1174,0x11B6,0x19F7,0x19F7,0x19D7,0x1174,0x0912,0x1132,0x1111,0x1911,0x1931,0x1931,0x1932,0x1112,0x1112,0x1133,0x1953,0x1954,0x1974,0x1154,0x1133,0x1133,0x1152,0x1952,0x1932,0x1952,0x1931,0x1931,0x1111,0x1111,0x1133,0x1174,0x1195,0x2217,0x2218,0x2217,0x1195,0x1133,0x1132,0x1931,0x2131,0x2151,0x2130,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2930,0x2110,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2930,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x290F,0x2930,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x212F,0x2930,0x2930,0x2910,0x290F,0x290F,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x290F,0x2930,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x212F,0x210F,0x212F,0x210F,0x212F,0x292F,0x2930,0x2930,0x210F,0x290F,0x210F,0x292F,0x292F,0x292F,0x292F,0x2950,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2930,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x210F,0x212F,0x212F,0x2930,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x1931,0x1132,0x1133,0x1154,0x1175,0x11B6,0x19F7,0x19D7,0x11D7,0x11B7,0x19D7,0x19B7,0x19B7,0x19B7,0x19B7,0x19B6,0x19D6,0x19D6,0x19B6,0x19D6,0x19D6,0x19D6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B5,0x19D6,0x19B6,0x19D6,0x19B6,0x19D6,0x19B6,0x19B6,0x19B6,0x19B6,0x1996,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19D6,0x19D6,0x19F7,0x19D6,0x19F7,0x19F7,0x19F7,0x19F7,0x1A17,0x2238,0x19D6,0x1195,0x1153,0x1133,0x1932,0x1931,0x2131,0x2131,0x2110,0x210F,0x210F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x294F,0x292F,0x2930,0x2930,0x292F,0x2930,0x2950,0x212F,0x212F,0x2950,0x2950,0x2930,0x2950,0x2950,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x292F,0x292F,0x292F,0x2930,0x292F,0x292F,0x292F,0x292F,0x2930,0x292F,0x292F,0x292F,0x292F,0x212F,0x2950,0x212F,0x292F,0x292F,0x212F,0x2130,0x2930,0x212F,0x292F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x212F,0x292F,0x2930,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2950,0x2950,0x3150,0x3150,0x3130,0x3150,0x3951,0x3951,0x3950,0x3130,0x3930,0x3930,0x3930,0x390F,0x38EE,0x82B3,0xCCBA,0xD499,0xD499,0xD498,0xD478,0xD478,0xD457,0xD477,0xCC78,0xCC78,0xCC78,0xC478,0xC498,0xC4B9,0xBCDA,0xA458,0x8C17,0x8498,0x957B,0x9E3E,0x861C,0x7E1C,0x7E3D,0x765C,0x6E5C,0x6E7D,0x6E7D,0x6E7D,0x6E7D,0x667D,0x6E7D,0x6E7D,0x6E5D,0x763D,0x75FC,0x75DC,0x75BC,0x759B,0x759B,0x759B,0x757B,0x757B,0x757B,0x755A,0x755A,0x755A,0x755A,0x755A,0x755A,0x757A,0x757A,0x759B,0x6DBB,0x75FC,0x6E1C,0x6E3C,0x6E3C,0x665D,0x665C,0x5E7D,0x5E9D,0x56BD,0x56DD,0x56DD,0x56DD,0x56DD,0x56DD,0x56FD,0x4EFD,0x571D,0x571D,0x56FD,0x56FD,0x56FD,0x56FD,0x571D,0x56FD,0x56FD,0x4EFD,0x571E,0x4EFD,0x56FD,0x56FD,0x56FD,0x56DD,0x56DD,0x56BD,0x5EBD,0x669D,0x665C,0x6DFB,0x6D9A,0x7D39,0x7CB8,0x8477,0x83B5,0x9395,0xA396,0xB376,0xBB56,0xC356,0xC336,0xCB56,0xCB56,0xD356,0xD355,0xD335,0xD335,0xD335,0xD355,0xD376,0xCB56,0xC336,0xB315,0xA376,0x9418,0x8CFA,0x75DC,0x5E5D,0x4E9E,0x46BE,0x2E5D,0x267E,0x1EBE,0x1EDE,0x1EFE,0x16FE,0x16FE,0x16DE,0x16DE,0x16DF,0x16BE,0x1EDF,0x16BE,0x1EBF,0x1EBF,0x1EBF,0x16BE,0x169E,0x169E,0x0E9F,0x0E9F,0x0E9F,0x0E9F,0x0E9E,0x069E,0x069E,0x069E,0x067E,0x067E,0x067E,0x067E,0x067E,0x067E,0x065E,0x065E,0x065E,0x063E,0x063E,0x063E,0x061E,0x061E,0x061E,0x061E,0x061E,0x05FE,0x05DE,0x05DE,0x05BE,0x05BE,0x059E,0x059F,0x057F,0x057F,0x057F,0x055F,0x053F,0x051F,0x04FF,0x04DF,0x049E,0x047E,0x045E,0x045E,0x043E,0x043E,0x041D,0x041D,0x041D,0x041D,0x041D,0x041D,0x043D,0x047D,0x04DC,0x0DDF,0x167F,0x0EDF,0x0EDF,0x0EDF,0x06DE,0x06DE,0x06FE,0x071E,0x071E,0x073F,0x073F,0x073F,0x075F,0x075F,0x075F,0x077F,0x077F,0x077F,0x0F7F,0x0F7F,0x177F,0x277E,0x373E,0x46FE,0x56BD,0x6E3C,0x85BB,0x94B8,0xA438,0xBC58,0xC438,0xCC38,0xCC39,0xCC3A,0xC47D,0x937D,0x3137,0x215A,0x195C,0x117D,0x097D,0x099E,0x099E,0x099E,0x099E,0x117D,0x195C,0x293B,0x3919,0x6978,0x9A5A,0xA1F7,0xA1F7,0x99F6,0x8A15,0x7A96,0x6378,0x54DB,0x3DBE,0x2E3F,0x1EBF,0x0EBF,0x06DF,0x073F,0x075F,0x077F,0x077F,0x077F,0x079F,0x07BF,0x07BF,0x07DF,0x07BF,0x0F9F,0x1F5F,0x2F1F,0x4EBE,0x767E,0x853B,0x5A31,0x8A12,0xAA13,0xB9F3,0xC1D3,0xC9B3,0xC993,0xC973,0xD1B3,0xC993,0xC993,0xC993,0xC193,0xC1D4,0xB9B3,0xB1F4,0xB276,0x7911,0x5911,0x5151,0x4951,0x4172,0x4172,0x4192,0x3972,0x3972,0x3131,0x3951,0x3951,0x3951,0x3151,0x3150,0x2930,0x2930,0x2950,0x2950,0x2971,0x2951,0x2951,0x2930,0x2931,0x2930,0x2930,0x2130,0x2931,0x2130,0x2931,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2930,0x210F,0x210F,0x2930,0x2930,0x2110,0x2930,0x2110,0x2130,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x210F,0x212F,0x210F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x292F,0x290F,0x290F,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2151,0x1931,0x1911,0x1111,0x1153,0x1194,0x19F6,0x2237,0x1A16,0x19B5,0x1153,0x1112,0x1931,0x2131,0x2131,0x2130,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x20EF,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2930,0x2930,0x290F,0x2930,0x210F,0x210F,0x290F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x290F,0x290F,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x210F,0x2110,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x2110,0x2910,0x2910,0x210F,0x2110,0x2110,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2930,0x2930,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x2130,0x210F,0x2130,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x210F, + 0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x2130,0x2930,0x210F,0x292F,0x210F,0x290F,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2130,0x2110,0x2110,0x2111,0x1911,0x1932,0x1953,0x1154,0x1195,0x19F7,0x19F7,0x19F7,0x19D6,0x1154,0x1132,0x1112,0x1111,0x1931,0x2152,0x2172,0x1932,0x1932,0x1911,0x1112,0x1932,0x1132,0x1112,0x1132,0x1932,0x1932,0x1952,0x1952,0x1932,0x1932,0x1111,0x1112,0x1132,0x1153,0x1195,0x19D6,0x2217,0x2238,0x19D6,0x1154,0x1153,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x294F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2930,0x210F,0x290F,0x290F,0x2930,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x2130,0x212F,0x212F,0x210F,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x212F,0x2930,0x290F,0x210F,0x290F,0x2930,0x212F,0x212F,0x2910,0x210F,0x2930,0x2930,0x212F,0x212F,0x2930,0x290F,0x210F,0x290F,0x292F,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x294F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x292F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2130,0x2130,0x2130,0x2110,0x2131,0x1931,0x1931,0x1932,0x1133,0x1154,0x1175,0x19B6,0x19F7,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x19F8,0x1A18,0x1A18,0x19F8,0x19F7,0x19F7,0x19F7,0x2218,0x19F7,0x2218,0x1A18,0x2218,0x19F8,0x1A18,0x19F8,0x2218,0x2218,0x2218,0x2218,0x1A18,0x19F8,0x19F8,0x19F8,0x19F7,0x19F7,0x19F8,0x19F7,0x1A18,0x19F7,0x19F8,0x19F7,0x19F7,0x19F7,0x1A18,0x19F7,0x1195,0x1154,0x1132,0x1112,0x1911,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x292F,0x2930,0x2930,0x2130,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2950,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x212F,0x2130,0x2930,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3150,0x3150,0x3150,0x3151,0x3150,0x3150,0x3150,0x3130,0x3130,0x3930,0x390F,0x40EE,0x7A93,0xCCBA,0xD4B9,0xD499,0xD478,0xD478,0xD478,0xD478,0xCC77,0xCC78,0xCC78,0xC478,0xC478,0xBCB9,0xB4B9,0x9C37,0x9457,0x7C17,0x9D7B,0x95DC,0x8E1C,0x861C,0x7E3C,0x763C,0x6E5C,0x6E7D,0x6E5D,0x6E7D,0x667D,0x669D,0x669D,0x6E5D,0x6E5D,0x765E,0x761D,0x75BC,0x755B,0x753B,0x7D1B,0x7D1A,0x851A,0x851A,0x84FA,0x84DA,0x8CDA,0x8CD9,0x8CD9,0x8CD9,0x8CD9,0x8CB8,0x8CD8,0x8CD8,0x8CD9,0x8CF9,0x8519,0x853A,0x855A,0x857B,0x7D7B,0x7D9B,0x759B,0x7DDB,0x7E1C,0x7E5D,0x7E7D,0x7E7D,0x765D,0x763C,0x765C,0x767D,0x769D,0x767D,0x767D,0x767D,0x767D,0x767D,0x767D,0x769D,0x767D,0x767D,0x767D,0x767D,0x767D,0x767D,0x765D,0x765D,0x763C,0x763D,0x75FC,0x75DB,0x757A,0x7519,0x7CB8,0x8477,0x8C16,0x93D6,0x9B95,0xA355,0xB356,0xBB56,0xC376,0xC356,0xCB56,0xCB56,0xCB56,0xD356,0xD335,0xD335,0xD335,0xD335,0xD355,0xD356,0xCB56,0xC335,0xBB15,0xAB15,0xA3B7,0x9479,0x855B,0x75FC,0x665D,0x567E,0x3E1C,0x363D,0x367E,0x26BE,0x26BE,0x1EDE,0x1EDF,0x1EDE,0x1EBE,0x1EBE,0x1E9E,0x1E9E,0x1EBE,0x1E9E,0x1E9E,0x269E,0x269E,0x1E9E,0x1E7E,0x1E7E,0x167E,0x167E,0x167F,0x0E7F,0x0E7E,0x0E7E,0x0E7E,0x0E9F,0x067E,0x065E,0x067E,0x065E,0x065E,0x065E,0x063E,0x063E,0x063E,0x063E,0x063E,0x061E,0x061E,0x05FE,0x05FE,0x05FE,0x05FE,0x05DE,0x05BE,0x05BE,0x059E,0x059E,0x057F,0x0D7F,0x0D7F,0x0D5F,0x055F,0x053F,0x04FE,0x04DE,0x049E,0x047E,0x045E,0x045E,0x043E,0x043E,0x041E,0x041E,0x041D,0x03FD,0x03FD,0x03DD,0x03DD,0x03DD,0x03DC,0x041C,0x043C,0x051D,0x15FF,0x169F,0x16BF,0x0EBF,0x0EBE,0x0EBE,0x06DE,0x06FE,0x06FE,0x071F,0x071F,0x073F,0x073F,0x073F,0x075F,0x075F,0x0F7F,0x0F7F,0x0F7F,0x177F,0x175E,0x275E,0x2F3E,0x3F1E,0x4EBD,0x665C,0x7DDB,0x8CF9,0xA478,0xB458,0xC438,0xCC38,0xCC18,0xCC39,0xCC5B,0xBC5E,0x4976,0x2959,0x195C,0x115C,0x097D,0x099E,0x099E,0x099E,0x097E,0x117D,0x115C,0x215C,0x393A,0x6158,0x923A,0xA218,0xA1F7,0x99D6,0x9216,0x7A76,0x6B38,0x547B,0x3D5D,0x2DFE,0x1E5F,0x0E7F,0x069F,0x06FF,0x073F,0x077F,0x077F,0x079F,0x079F,0x079F,0x07BF,0x07BF,0x07BF,0x0F9F,0x1F5F,0x375F,0x46DE,0x667E,0x8DFE,0x5A92,0x8253,0xA233,0xB9F3,0xC1B3,0xC993,0xC993,0xC973,0xC973,0xC993,0xC993,0xC192,0xC193,0xC1D3,0xC1D4,0xB9F4,0xB235,0x7931,0x58F0,0x5972,0x4951,0x4172,0x4172,0x4172,0x3972,0x3972,0x3951,0x3951,0x3951,0x3951,0x3151,0x3151,0x2930,0x2930,0x2950,0x2971,0x2951,0x2951,0x2951,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2930,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2930,0x212F,0x2110,0x2930,0x2910,0x2930,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2150,0x2131,0x1931,0x1111,0x1132,0x1153,0x1194,0x19F6,0x1A17,0x1A17,0x19B5,0x1153,0x1112,0x1932,0x2131,0x2111,0x2110,0x2130,0x2931,0x2110,0x2110,0x2130,0x2110,0x2130,0x2930,0x210F,0x2130,0x210F,0x212F,0x212F,0x292F,0x210F,0x2130,0x2130,0x2930,0x20EF,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x2930,0x210F,0x2910,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2110,0x2910,0x2910,0x2930,0x2130,0x2930,0x2110,0x210F,0x2930,0x2110,0x2930,0x2930,0x2910,0x2930,0x2910,0x210F,0x2910,0x2930,0x210F,0x210F,0x210F,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2110,0x2910,0x2910,0x2910,0x2930,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F, + 0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x2930,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x292F,0x2930,0x2930,0x2110,0x2130,0x2130,0x2110,0x2111,0x1931,0x1932,0x1133,0x1174,0x19D6,0x19F7,0x19F7,0x19F7,0x11B5,0x0953,0x1133,0x1112,0x1932,0x1932,0x2152,0x2152,0x1931,0x1931,0x1911,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1952,0x1952,0x1932,0x1132,0x1112,0x1132,0x1153,0x1195,0x19D6,0x2217,0x2238,0x19D6,0x1174,0x1153,0x1932,0x1931,0x1931,0x2131,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x292F,0x290F,0x2910,0x2910,0x2910,0x2930,0x2910,0x2110,0x2910,0x2910,0x292F,0x210F,0x2930,0x212F,0x2930,0x2930,0x212F,0x212F,0x2930,0x210F,0x2130,0x2130,0x210F,0x290F,0x2930,0x210F,0x2930,0x2930,0x210F,0x290F,0x2110,0x2930,0x290F,0x290F,0x2910,0x210F,0x212F,0x212F,0x2930,0x290F,0x210F,0x212F,0x2930,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x292F,0x212F,0x292F,0x2930,0x292F,0x290F,0x290F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1153,0x1974,0x1995,0x19B6,0x19D7,0x19D7,0x19D7,0x19D8,0x19D7,0x19D7,0x19D7,0x19F8,0x19D7,0x19F7,0x19F7,0x19D7,0x11D7,0x19F8,0x19F7,0x19F7,0x19F7,0x19F7,0x19D7,0x19D7,0x19F7,0x19D7,0x19D7,0x19D7,0x19D7,0x19F7,0x19D7,0x19F7,0x19F7,0x19F7,0x19F8,0x19F8,0x19D7,0x19F7,0x19F8,0x19F8,0x19F7,0x19F7,0x19F8,0x19F8,0x19D7,0x19D7,0x19D7,0x19F7,0x19F7,0x19D7,0x19F7,0x19F7,0x19B6,0x1154,0x1154,0x1132,0x1111,0x1911,0x1911,0x2131,0x2130,0x2130,0x2130,0x2110,0x2930,0x212F,0x2930,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2930,0x292F,0x292F,0x2930,0x292F,0x2930,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3150,0x3150,0x3150,0x3150,0x3150,0x3150,0x3150,0x3130,0x3130,0x310F,0x390F,0x38CD,0x7A93,0xCCBA,0xD499,0xD499,0xD478,0xD478,0xD478,0xD478,0xCC78,0xCC77,0xCC78,0xC498,0xC4B9,0xB4BA,0xA479,0x83F7,0x8C78,0x951A,0xA63E,0x8DFC,0x861C,0x7E3C,0x765C,0x765D,0x6E5D,0x6E7D,0x6E7D,0x6E7D,0x669D,0x669D,0x669E,0x6E7E,0x765E,0x7E3E,0x757C,0x74FA,0x74DA,0x84FA,0x84DA,0x8CBA,0x8CBA,0x94B9,0x94B9,0x9499,0x9C99,0x9C99,0x9C99,0x9CB9,0xA499,0xA498,0xA478,0xA478,0x9C57,0x9C57,0x9C37,0x9C37,0x9437,0x9437,0x9417,0x8C17,0x8C17,0x8C17,0x8417,0x8417,0x7BF6,0x7C17,0x73F6,0x7416,0x73F6,0x7416,0x73F6,0x7416,0x7416,0x7437,0x7416,0x7417,0x7437,0x7437,0x73F6,0x73F6,0x73F6,0x73F6,0x73F6,0x73F6,0x73F6,0x73F6,0x73D6,0x7BD6,0x7BB6,0x7BB6,0x7BB6,0x83B6,0x8B96,0x9396,0x9B96,0xA396,0xAB76,0xB376,0xBB76,0xC376,0xC376,0xCB56,0xCB56,0xCB56,0xD356,0xD336,0xD336,0xD335,0xD336,0xD336,0xD336,0xD356,0xD356,0xC335,0xBB15,0xB315,0xA356,0x9BD7,0x8CB9,0x855B,0x75DC,0x6E3D,0x5DDC,0x45BC,0x461E,0x3E7E,0x2E9E,0x2EBE,0x26BE,0x269E,0x269E,0x267E,0x267E,0x267E,0x2EBE,0x2EBE,0x2E9E,0x2E9E,0x2E7E,0x2E7E,0x2E5E,0x2E5E,0x265E,0x267E,0x1E7E,0x167E,0x167E,0x0E7E,0x0E7E,0x0E5E,0x0E7E,0x0E7E,0x0E5E,0x065E,0x065E,0x065E,0x063E,0x063E,0x063E,0x061E,0x061E,0x061E,0x061E,0x05FE,0x0DFE,0x05DE,0x0DDE,0x0DBE,0x0DBE,0x0DBE,0x0D9E,0x0D7E,0x0D7E,0x0D7F,0x0D5F,0x0D5F,0x0D3F,0x0CFE,0x0CDE,0x04BE,0x049E,0x045E,0x045E,0x043E,0x043E,0x041E,0x041E,0x03FE,0x03FE,0x03FD,0x03FD,0x03FD,0x0BFD,0x03DD,0x03DD,0x03BC,0x03DC,0x03FC,0x047D,0x04FD,0x15DF,0x163F,0x169F,0x16BF,0x0EBE,0x0E9E,0x0EBE,0x0EDF,0x0EFF,0x0EFF,0x0F1F,0x0F1E,0x0F3F,0x0F3F,0x0F3F,0x0F5F,0x0F5F,0x0F5F,0x175E,0x1F5E,0x275E,0x2F3E,0x3F1E,0x4EBD,0x5E5C,0x75FC,0x8D5A,0x9CB8,0xAC38,0xC418,0xCC18,0xCC18,0xCC18,0xCC3A,0xCC7D,0x933C,0x28F7,0x193B,0x115C,0x117D,0x097D,0x099E,0x099E,0x097D,0x117D,0x197D,0x215C,0x313A,0x5958,0x89F9,0xA218,0xAA17,0x99F6,0x9216,0x8256,0x6AF8,0x53FA,0x3CDC,0x2D9E,0x1E1F,0x0E1E,0x065F,0x06DF,0x071F,0x075F,0x077F,0x079F,0x079F,0x079F,0x07BF,0x07DF,0x07DF,0x0F9F,0x1F7F,0x2F5F,0x3EFF,0x5E7E,0x863E,0x6334,0x7232,0xA254,0xB1F3,0xC1D3,0xC193,0xC172,0xC993,0xC993,0xD193,0xC992,0xC993,0xC193,0xC1D4,0xC1D4,0xB9F4,0xB255,0x8151,0x58D0,0x5972,0x4951,0x4172,0x4151,0x4172,0x3972,0x3972,0x3951,0x3951,0x3951,0x3951,0x3971,0x3151,0x3151,0x2950,0x2951,0x2951,0x2951,0x2131,0x2131,0x1931,0x1932,0x1932,0x1932,0x1931,0x1932,0x1932,0x2152,0x1931,0x2131,0x2131,0x2110,0x2130,0x2130,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x212F,0x212F,0x210F,0x2110,0x2910,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2150,0x2151,0x2151,0x1931,0x1111,0x1132,0x1153,0x1194,0x19F6,0x19F7,0x19F6,0x19D5,0x1133,0x1112,0x1912,0x2131,0x2111,0x2131,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x20EF,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x2910,0x210F,0x292F,0x292F,0x290F,0x2930,0x2930,0x290F,0x2930,0x290F,0x210F,0x2930,0x2930,0x2110,0x290F,0x210F,0x2930,0x2930,0x2930,0x2910,0x2110,0x210F,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x210F,0x2110,0x210F,0x2130,0x2130,0x210F,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F, + 0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x1931,0x1911,0x1932,0x1153,0x1175,0x19F7,0x11F7,0x1A17,0x19D7,0x1195,0x1154,0x1133,0x1132,0x1132,0x1952,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1132,0x1132,0x1132,0x1133,0x1154,0x1175,0x11B6,0x19F7,0x2238,0x2217,0x1995,0x1133,0x1132,0x1932,0x1931,0x1930,0x2150,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x2930,0x210F,0x290F,0x2110,0x2130,0x2130,0x2930,0x290F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2110,0x290F,0x2930,0x2930,0x2910,0x210F,0x2930,0x290F,0x290F,0x210F,0x210F,0x2110,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2110,0x210F,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x2930,0x210F,0x210F,0x2130,0x212F,0x2930,0x2130,0x210F,0x2930,0x2110,0x2930,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2910,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2930,0x2110,0x2110,0x2130,0x2110,0x2130,0x2131,0x1911,0x1931,0x1932,0x1152,0x1153,0x1174,0x1195,0x19B6,0x1196,0x19B6,0x11B6,0x19B7,0x1196,0x1196,0x19B6,0x19D6,0x11B6,0x19B6,0x11B6,0x11B6,0x19B6,0x19B6,0x11B6,0x19B6,0x1996,0x19B6,0x19B6,0x19B6,0x1996,0x19B6,0x1196,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x1996,0x19B6,0x1996,0x19B6,0x19B6,0x19B6,0x1996,0x19B6,0x19B6,0x1196,0x1996,0x1996,0x1196,0x1176,0x1195,0x1195,0x1175,0x1174,0x0933,0x1153,0x1132,0x1111,0x1931,0x1910,0x1911,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x3150,0x3150,0x3150,0x3150,0x3150,0x3150,0x3130,0x312F,0x310F,0x390F,0x38ED,0x7252,0xCCBB,0xD4B9,0xD499,0xDC78,0xD478,0xD478,0xD478,0xCC78,0xCC78,0xC498,0xC499,0xC4DA,0x93B5,0x7B74,0x9CDA,0x9D5C,0x9DDD,0x9DFD,0x8E1C,0x863C,0x7E3C,0x765C,0x765D,0x6E5D,0x6E5D,0x6E5D,0x6E5E,0x6E5E,0x765E,0x767F,0x7E9F,0x865F,0x7DBD,0x6499,0x6438,0x7439,0x7C59,0x8C7A,0x8C7A,0x947A,0x9C9A,0xA499,0xA499,0xA499,0xA479,0xAC79,0xAC78,0xAC78,0xAC58,0xAC58,0xAC58,0xAC37,0xB437,0xB437,0xB417,0xB417,0xAC17,0xABF7,0xABF7,0xABF7,0xABF7,0xA3D7,0xA3D7,0xA3D7,0x9BD7,0x9BD7,0x9BD7,0x9BD7,0x9BD7,0x9BD7,0x9BB7,0x9BD7,0x9BD7,0x9BD7,0x9BD7,0x9BD7,0x9BD7,0x9BD7,0x93B6,0x9BB6,0x9BB6,0x9B96,0x9BB6,0x9BB6,0x9B96,0x9B96,0x9B96,0x9B76,0x9B76,0x9B56,0xA356,0xA356,0xAB56,0xAB76,0xB376,0xBB76,0xBB76,0xC376,0xC376,0xCB56,0xCB56,0xCB56,0xCB56,0xD336,0xD336,0xD336,0xD336,0xD335,0xD335,0xD335,0xD356,0xD356,0xCB56,0xBB15,0xBB36,0xB376,0xA396,0x9C38,0x94F9,0x853A,0x7DBB,0x6DBB,0x657B,0x5DBC,0x55FD,0x4E3E,0x3E7E,0x369E,0x2E7D,0x265D,0x2E5D,0x2E3D,0x2E5D,0x369E,0x3E7E,0x467E,0x465E,0x465E,0x4E5E,0x463E,0x463E,0x3E3D,0x363E,0x2E5E,0x265E,0x1E5E,0x165E,0x165E,0x0E5E,0x0E5E,0x0E5E,0x0E3E,0x0E3E,0x0E3E,0x0E3E,0x0E3E,0x063E,0x061E,0x061E,0x0E1E,0x0E1E,0x0DFE,0x0DFE,0x0DDE,0x0DDE,0x0DBE,0x0D9E,0x0D9E,0x0D9E,0x0D7E,0x0D7E,0x0D5E,0x0D5E,0x0D3E,0x0D3E,0x0D1F,0x0CFE,0x0CDE,0x0C9E,0x0C7E,0x0C5E,0x0C3E,0x0C3D,0x0C1D,0x0C1E,0x0C1E,0x0BFE,0x0BFD,0x0BFD,0x0BDD,0x0BDD,0x0BDD,0x0BDD,0x0BBD,0x0BBC,0x0BBC,0x0BBC,0x0BBC,0x03FC,0x043C,0x151D,0x1DBE,0x1E5F,0x1E7E,0x1E7E,0x165E,0x167E,0x169F,0x16BE,0x16DF,0x16DF,0x16FF,0x171E,0x171E,0x173F,0x173F,0x175F,0x175E,0x173E,0x1F5E,0x273E,0x2F3E,0x3F1E,0x46DD,0x569D,0x6E3C,0x8D9B,0x94B8,0xAC38,0xBC18,0xC418,0xCC18,0xD418,0xD439,0xCC3B,0xC47F,0x3937,0x2119,0x195B,0x117D,0x097D,0x097D,0x099E,0x099E,0x119D,0x117D,0x215C,0x313A,0x5138,0x81FA,0xA239,0xAA18,0xA217,0x9216,0x8236,0x6AB7,0x5399,0x3C5B,0x2D5E,0x1DBE,0x0E1F,0x061E,0x069F,0x06DF,0x073F,0x075F,0x077F,0x079F,0x079F,0x079F,0x07DF,0x0FDF,0x0F9F,0x177F,0x275F,0x36FF,0x569E,0x867F,0x6BF7,0x6211,0x9A74,0xB1F3,0xC1D3,0xC9B3,0xC193,0xC993,0xD193,0xC993,0xC993,0xC993,0xC193,0xC1D3,0xC1D4,0xB9D4,0xB215,0x8972,0x58D0,0x5152,0x5172,0x4972,0x4172,0x4192,0x3972,0x4192,0x3951,0x3131,0x3951,0x3951,0x3151,0x3151,0x3171,0x3151,0x2951,0x2951,0x2131,0x2131,0x1932,0x1952,0x1953,0x1173,0x1173,0x1152,0x1132,0x1153,0x1132,0x1932,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2110,0x210F,0x212F,0x292F,0x2930,0x210F,0x212F,0x210F,0x210F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2950,0x2130,0x2130,0x2130,0x2151,0x2151,0x1931,0x1111,0x1132,0x1153,0x1174,0x19F6,0x2217,0x2217,0x19B5,0x0933,0x1112,0x1912,0x1912,0x2111,0x2111,0x2111,0x2111,0x2111,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x212F,0x2130,0x2130,0x2110,0x2110,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x290F,0x290F,0x2930,0x2930,0x2950,0x2950,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x210F,0x210F,0x2110,0x210F,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x292F,0x290F,0x2930,0x210F,0x2930,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2930,0x2110,0x2930,0x2930,0x2930,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x2930,0x2930,0x290F,0x2930,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x290F, + 0x210F,0x2130,0x2110,0x2110,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x2930,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2131,0x2131,0x2131,0x1911,0x1112,0x1153,0x1195,0x19F7,0x1A18,0x1A18,0x19D7,0x1175,0x1154,0x0933,0x1153,0x1153,0x1953,0x1952,0x1952,0x1952,0x1952,0x1972,0x2192,0x1952,0x1952,0x1952,0x1132,0x1132,0x1133,0x1154,0x1174,0x1195,0x11B6,0x19D7,0x19F7,0x2218,0x19D6,0x1154,0x1132,0x1111,0x1931,0x1931,0x2130,0x2130,0x2930,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2910,0x2910,0x2930,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x2130,0x2110,0x210F,0x2110,0x210F,0x210F,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x212F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x212F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x212F,0x212F,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x2910,0x2910,0x210F,0x210F,0x292F,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x1951,0x1952,0x1953,0x1153,0x1153,0x1154,0x1154,0x1154,0x1154,0x1154,0x1154,0x1154,0x1133,0x1153,0x1154,0x1153,0x1153,0x1153,0x1153,0x1154,0x1154,0x1954,0x1154,0x1154,0x1133,0x1154,0x1154,0x1154,0x1154,0x1154,0x1154,0x1974,0x1154,0x1954,0x1974,0x1154,0x1154,0x1154,0x1154,0x1154,0x1154,0x1974,0x1974,0x1154,0x1154,0x1954,0x1154,0x0933,0x0933,0x1133,0x1133,0x1133,0x1132,0x1132,0x1951,0x1931,0x1931,0x1930,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2150,0x2130,0x2151,0x2130,0x2150,0x2150,0x2150,0x2150,0x2151,0x2151,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3150,0x3150,0x3150,0x3150,0x3150,0x3150,0x3150,0x3130,0x310F,0x310F,0x310F,0x38CD,0x6A11,0xCCBB,0xD49A,0xD499,0xD478,0xD478,0xD478,0xD478,0xCC78,0xCC78,0xCC98,0xC499,0xB498,0x93F6,0x9CB8,0xB5BC,0xA59C,0x9DBC,0x95FC,0x8E1C,0x861C,0x863D,0x7E5D,0x763D,0x765D,0x765E,0x765E,0x7E5F,0x75FE,0x75BD,0x6D3C,0x5459,0x4355,0x3AB3,0x3A73,0x4273,0x52B4,0x62F5,0x7316,0x7B36,0x8377,0x8BB8,0x9C19,0xAC59,0xAC79,0xAC79,0xAC79,0xB479,0xB479,0xB459,0xB458,0xB438,0xB438,0xBC38,0xBC38,0xBC38,0xBC38,0xBC18,0xBC18,0xBC18,0xBC18,0xBC18,0xB418,0xB417,0xB417,0xB417,0xB417,0xB417,0xABF7,0xABF7,0xABF7,0xABF7,0xABF7,0xAC17,0xABF7,0xAC17,0xABF7,0xABF7,0xABF7,0xABF7,0xABF7,0xABF7,0xABF7,0xABD7,0xABB6,0xAB96,0xAB96,0xABB6,0xAB96,0xB3B7,0xB3B7,0xB3B7,0xB3B7,0xBBB7,0xBBB7,0xBB97,0xC377,0xC376,0xC376,0xC356,0xCB56,0xCB56,0xCB56,0xCB36,0xD336,0xD336,0xD336,0xD336,0xD335,0xD335,0xD336,0xD336,0xD336,0xCB56,0xBB15,0xBB56,0xBB77,0xB3D7,0xB459,0xAD1A,0x9D5B,0x957A,0x8D9B,0x85BB,0x85BC,0x7DFD,0x6DDD,0x5DFD,0x4E3D,0x467E,0x3E9E,0x3E9E,0x367E,0x3E5D,0x3E5D,0x465D,0x4E1D,0x4DBC,0x557C,0x553B,0x5D7C,0x5D7C,0x5DBD,0x55DD,0x4E1D,0x463D,0x365D,0x2E5E,0x1E1D,0x163E,0x163E,0x165E,0x0E3E,0x0E5E,0x0E3E,0x0E3E,0x0E3E,0x0E1E,0x0E1E,0x0E1E,0x0E1E,0x0DFE,0x0DFE,0x0DDE,0x0DDE,0x0DBE,0x0DBE,0x0D9E,0x0D7E,0x157E,0x155E,0x153E,0x153E,0x151E,0x151E,0x14FE,0x14DE,0x14BE,0x149E,0x147D,0x145D,0x145D,0x143D,0x143D,0x141D,0x141D,0x141D,0x141D,0x13FD,0x13FD,0x13DD,0x13DD,0x13BC,0x13DD,0x13BC,0x13BC,0x13BC,0x139C,0x0B9C,0x0B9C,0x0B9C,0x0BDC,0x147D,0x1CFD,0x259E,0x25DE,0x261E,0x261D,0x1E3E,0x1E3E,0x1E5E,0x167E,0x1E9E,0x16BE,0x1EDE,0x1EFE,0x1F1E,0x171E,0x1F3E,0x1F3E,0x1F3E,0x273E,0x273E,0x373E,0x3F1E,0x46DD,0x56BD,0x6E7D,0x85DB,0x94D8,0xA438,0xBBF8,0xC418,0xCC18,0xD418,0xD419,0xD43A,0xCC5D,0x82DC,0x3138,0x213B,0x115C,0x095D,0x097D,0x099E,0x099E,0x097D,0x117D,0x197C,0x315B,0x5159,0x79DA,0xA239,0xAA38,0xA217,0x9216,0x8236,0x72B7,0x5B59,0x441A,0x2CFD,0x1D9E,0x0DBE,0x05FE,0x065F,0x06BF,0x071F,0x073F,0x077F,0x079F,0x079F,0x079F,0x07DF,0x07DF,0x0F9F,0x177F,0x275F,0x371F,0x4EBE,0x7EDF,0x7499,0x5A11,0x9253,0xB234,0xB9D3,0xC1B3,0xC173,0xC973,0xC993,0xD1B3,0xC993,0xC993,0xC9B3,0xC1B3,0xC1D3,0xB9F4,0xB235,0x91D3,0x58B0,0x5131,0x5172,0x4992,0x4172,0x4172,0x4192,0x4192,0x3951,0x3951,0x3131,0x3971,0x3151,0x3151,0x3151,0x3151,0x2951,0x2951,0x2952,0x2152,0x1953,0x1994,0x19B5,0x19D6,0x19F6,0x11D6,0x11B5,0x1195,0x1195,0x1153,0x1133,0x1932,0x1931,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2950,0x2130,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x212F,0x2130,0x2130,0x2151,0x2151,0x1911,0x1111,0x1132,0x1153,0x11B5,0x19F6,0x2217,0x2217,0x1995,0x1133,0x1133,0x1912,0x2132,0x2111,0x2111,0x2111,0x2111,0x2131,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x290F,0x292F,0x2930,0x2930,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2950,0x2930,0x2130,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2930,0x2930,0x2930,0x210F,0x210F,0x2110,0x2930,0x210F,0x210F,0x2130,0x2930,0x212F,0x212F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x2930,0x2930,0x2930,0x212F,0x210F,0x212F,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x290F,0x292F, + 0x292F,0x292F,0x210F,0x2930,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2930,0x2130,0x2110,0x2111,0x2111,0x1911,0x1911,0x1132,0x1174,0x11B6,0x19F7,0x1A18,0x19F7,0x19B7,0x1196,0x1154,0x1154,0x0933,0x1133,0x1153,0x1152,0x1132,0x1952,0x1151,0x1152,0x1132,0x1132,0x1132,0x1132,0x1153,0x1154,0x1175,0x1195,0x19D6,0x19F7,0x19F7,0x19F7,0x19B6,0x1175,0x1153,0x1132,0x1131,0x1931,0x2130,0x2130,0x2130,0x2930,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2130,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x212F,0x212F,0x2930,0x2930,0x212F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2110,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x290F,0x2930,0x2910,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x2151,0x2151,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x2151,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x1931,0x1932,0x1932,0x1132,0x1133,0x1133,0x1133,0x1113,0x1113,0x1133,0x1113,0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x1112,0x1112,0x1112,0x1112,0x1113,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1113,0x1113,0x1112,0x1112,0x1113,0x1113,0x1133,0x1133,0x1113,0x1113,0x1112,0x1112,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1112,0x1112,0x1112,0x1132,0x1932,0x1931,0x1951,0x1951,0x2151,0x2151,0x2131,0x2151,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x1930,0x1930,0x1931,0x1931,0x1931,0x1931,0x1930,0x1931,0x1931,0x1930,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1930,0x1930,0x1930,0x2130,0x2130,0x2130,0x2130,0x1930,0x2131,0x1930,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1930,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1930,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1910,0x1931,0x1931,0x1930,0x1930,0x1931,0x1931,0x1930,0x1930,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1930,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1930,0x1931,0x1930,0x1930,0x1931,0x1930,0x1930,0x1930,0x1930,0x1931,0x1930,0x1930,0x1930,0x1930,0x1930,0x1930,0x1930,0x1930,0x1931,0x1930,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3150,0x3150,0x3150,0x3130,0x3130,0x3150,0x3150,0x3130,0x310F,0x310F,0x30CD,0x516F,0xCCBB,0xD4BA,0xD499,0xD499,0xD478,0xD478,0xD478,0xD478,0xCC78,0xCC98,0xC499,0xB498,0x8B94,0xB55B,0xB5BC,0xA59B,0x9DBC,0x95DC,0x95FD,0x8DFD,0x8E1D,0x8E3E,0x8E5F,0x8E7F,0x863E,0x5D1A,0x3BF7,0x2B14,0x22B3,0x2252,0x2232,0x2A32,0x3A13,0x4213,0x4A13,0x5234,0x5233,0x5A34,0x6254,0x6A74,0x7295,0x7AD5,0x8B16,0x9B97,0xAC19,0xB47A,0xBC7A,0xB45A,0xB439,0xBC59,0xBC39,0xBC39,0xBC38,0xBC38,0xBC38,0xC418,0xBC18,0xC418,0xC418,0xC418,0xC418,0xC417,0xBBF7,0xBBF7,0xBBF7,0xBBF7,0xBBF7,0xBBF7,0xBBF7,0xBBF7,0xBBF7,0xBBF7,0xBBF7,0xBBF7,0xBBF7,0xBBF7,0xBBD7,0xBBD7,0xBBD7,0xB3D7,0xB3D7,0xB3D7,0xBBD7,0xBBD7,0xBBB6,0xBBB6,0xBB96,0xBBB6,0xBBB6,0xBB96,0xBBB7,0xBBB7,0xBB97,0xC397,0xC376,0xC376,0xC376,0xCB76,0xCB56,0xCB56,0xCB56,0xD356,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xCB56,0xC336,0xBB16,0xBB77,0xB397,0xB3F8,0xBCDA,0xB51A,0xA53A,0x9D3A,0x9D5A,0x955A,0x957B,0x8D7B,0x7D5B,0x6D7B,0x5DDC,0x561D,0x4E5D,0x467E,0x465D,0x463D,0x45FC,0x4DDC,0x553A,0x64FA,0x6CBA,0x6479,0x6438,0x6418,0x6479,0x64DA,0x657C,0x55BC,0x4DFD,0x3E3D,0x2E3D,0x1DFD,0x1E1E,0x163E,0x161E,0x0E3E,0x0E1E,0x0E1E,0x0E1E,0x0E1E,0x0DFE,0x0DFE,0x0DFE,0x0DDE,0x0DDE,0x0DBE,0x0DBE,0x159E,0x159E,0x157E,0x155E,0x155E,0x1D3E,0x1D1D,0x1CFD,0x1CFE,0x1CDD,0x1CBD,0x1C9D,0x1C5D,0x1C3D,0x1C3C,0x1C1C,0x1C1C,0x1BFC,0x1BFC,0x1BDC,0x23DC,0x23DC,0x23DC,0x23DC,0x23BC,0x23BC,0x1B9B,0x23BB,0x1B9B,0x1B9B,0x1B9B,0x1B7B,0x1B7B,0x1B5B,0x1B5B,0x133A,0x1B7B,0x1BBB,0x243C,0x2CDD,0x353D,0x359E,0x35BD,0x35DD,0x2DDD,0x2DFE,0x2E1E,0x2E3E,0x265D,0x2E7E,0x269D,0x26DE,0x26FD,0x26FE,0x26FE,0x271E,0x2F1E,0x2F1E,0x371E,0x471E,0x4EFE,0x5EBD,0x6E7D,0x85FB,0x8CF9,0xA437,0xB3F8,0xC3F8,0xCBF8,0xD3F8,0xD418,0xD419,0xCC3C,0xB3FE,0x4177,0x295A,0x195C,0x117C,0x097D,0x099E,0x119E,0x119D,0x117D,0x197C,0x295B,0x4939,0x71BA,0x9A3A,0xAA38,0x99F7,0x91F6,0x8A36,0x7297,0x5B18,0x43BA,0x34DD,0x1D5E,0x0D7E,0x05BE,0x065F,0x069F,0x06FF,0x071F,0x075F,0x077F,0x079F,0x079F,0x07DF,0x07DF,0x0F9F,0x179F,0x277F,0x2F3F,0x46BE,0x76DF,0x7D3B,0x5231,0x9273,0xA9F3,0xB1B2,0xC1B3,0xC193,0xC993,0xC993,0xC9B3,0xC993,0xC193,0xC1B3,0xC1D3,0xB9B3,0xB9F4,0xB214,0x99D4,0x58D0,0x5131,0x4952,0x4992,0x4172,0x4172,0x3972,0x3972,0x3971,0x3951,0x3951,0x3951,0x3151,0x3151,0x3151,0x3151,0x2951,0x2951,0x2132,0x1953,0x1974,0x19D6,0x19F7,0x11F7,0x1217,0x1218,0x1218,0x1A18,0x1A18,0x19F7,0x11B5,0x1174,0x1152,0x1132,0x1931,0x1931,0x2131,0x2131,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x2131,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1111,0x1152,0x1153,0x1195,0x19D6,0x19F6,0x19D6,0x1995,0x1133,0x1133,0x1112,0x1912,0x1912,0x1931,0x2131,0x2131,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x212F,0x210F,0x290F,0x292F,0x210F,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x292F,0x292F,0x210F,0x212F,0x212F,0x2130,0x210F,0x2930,0x2930,0x2951,0x2951,0x2951,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x2110,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2110,0x2110,0x2130,0x2930,0x2130,0x2930,0x212F,0x2130,0x2130,0x210F,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x292F,0x210F,0x290F, + 0x210F,0x292F,0x210F,0x210F,0x210F,0x2130,0x210F,0x212F,0x212F,0x210F,0x2930,0x2930,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x2930,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2131,0x1931,0x1111,0x1133,0x1174,0x19B6,0x19D7,0x19F7,0x19D7,0x19D7,0x11B6,0x1195,0x0955,0x0954,0x0933,0x0953,0x1153,0x1153,0x1132,0x0932,0x1112,0x0912,0x1133,0x1153,0x1174,0x1195,0x19F7,0x1A17,0x1A17,0x1A17,0x19D6,0x1195,0x1133,0x1133,0x1132,0x1131,0x1931,0x1930,0x2130,0x2130,0x2130,0x292F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x2910,0x2930,0x2930,0x2110,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x290F,0x210F,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x290F,0x2930,0x212F,0x2930,0x212F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x2111,0x1911,0x1911,0x1911,0x1911,0x1911,0x10F1,0x1911,0x1110,0x1110,0x10F0,0x1910,0x10F0,0x1911,0x1110,0x1110,0x1111,0x10F1,0x10F0,0x1111,0x10F1,0x10F1,0x10F1,0x1111,0x1111,0x1111,0x10F1,0x1111,0x10F1,0x10F1,0x10F1,0x1111,0x10F1,0x10F1,0x10F0,0x10F0,0x10F0,0x10D0,0x10D1,0x10F1,0x10F1,0x10D1,0x10D1,0x10D1,0x10D1,0x10F1,0x10F1,0x10F0,0x10F0,0x10F0,0x10F0,0x10F0,0x10F0,0x08F1,0x08F1,0x08F1,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x0912,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F1,0x08F1,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08D2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x10F2,0x08F2,0x08F2,0x10F2,0x10F2,0x0912,0x0912,0x10F2,0x10F2,0x08F1,0x10F1,0x1111,0x1111,0x1111,0x1110,0x10F0,0x10F0,0x1110,0x1110,0x1110,0x10F0,0x1111,0x10F0,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1131,0x1131,0x1111,0x1911,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1131,0x1111,0x1111,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1111,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1111,0x1131,0x1111,0x1111,0x1111,0x1111,0x1111,0x1931,0x1111,0x1931,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1131,0x1111,0x1111,0x1911,0x1111,0x1131,0x1111,0x1111,0x1111,0x1131,0x1111,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1111,0x1111,0x1111,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1132,0x1131,0x1131,0x1111,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1931,0x1131,0x1131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3150,0x3130,0x3130,0x3130,0x3130,0x3130,0x312F,0x312F,0x310F,0x30CE,0x516F,0xBC39,0xD4BB,0xD499,0xD499,0xD499,0xD478,0xD478,0xD478,0xCC78,0xCC99,0xC478,0xAC37,0xAC98,0xC5BD,0xB57B,0xADBC,0x9DBC,0x95BC,0x95DD,0x95DE,0x855C,0x74FB,0x5C38,0x3AD4,0x19D0,0x118F,0x118F,0x19B0,0x21B1,0x21D2,0x29B2,0x31D2,0x39D2,0x41D3,0x41D3,0x49D3,0x51D3,0x51D3,0x51F3,0x59F3,0x61F3,0x61D3,0x61D2,0x61D2,0x61B2,0x5170,0x61B2,0x7234,0x8AF6,0xA398,0xB41A,0xBC1A,0xC45A,0xC439,0xC438,0xC438,0xC418,0xC418,0xC418,0xC418,0xC3F8,0xC3F7,0xC3F7,0xC3F7,0xC3F7,0xC3D7,0xC3D7,0xC3D7,0xC3F7,0xC3D7,0xC3D7,0xC3D7,0xC3D7,0xC3D7,0xC3D7,0xC3D7,0xC3D7,0xC3D7,0xC3B7,0xC3B7,0xC3B7,0xC3B7,0xC3B7,0xC3B7,0xC3B6,0xC396,0xC3B7,0xC397,0xC397,0xC397,0xC396,0xC397,0xC396,0xC397,0xCB76,0xCB76,0xCB56,0xCB56,0xCB56,0xCB56,0xD356,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xC316,0xC316,0xB316,0xB336,0xA2F5,0xAB96,0xBCBA,0xB4D9,0xACD9,0xA4B8,0xA498,0x9C97,0x9C98,0x9CB9,0x8478,0x7499,0x6D1A,0x5D7C,0x55DC,0x4E1D,0x4E1D,0x4DFC,0x55BB,0x54D9,0x5C17,0x7418,0x7BF9,0x83F9,0x83B8,0x83B8,0x7336,0x6B56,0x6397,0x5C38,0x553A,0x55FC,0x463D,0x363D,0x1DFD,0x1DFD,0x161E,0x161E,0x161E,0x0DFE,0x0DFE,0x0DFE,0x0DFE,0x0DDE,0x0DDE,0x0DBE,0x0DBE,0x0D9E,0x157D,0x155D,0x155E,0x1D5E,0x1D3E,0x253E,0x251E,0x24FD,0x2CDD,0x2CDD,0x2C9D,0x2C7C,0x2C3C,0x2C1C,0x2BDB,0x2BBB,0x2B9A,0x2B9A,0x2B7A,0x2B79,0x2B79,0x2B79,0x3379,0x3359,0x3359,0x3379,0x2B59,0x3359,0x3359,0x3359,0x3339,0x3339,0x3339,0x3339,0x2B19,0x2B19,0x2B19,0x2B19,0x2319,0x2B5A,0x2BBA,0x341B,0x449C,0x44FD,0x557D,0x4D9E,0x4DDE,0x4DFE,0x4E1E,0x4E3E,0x465D,0x469D,0x46BD,0x3EDD,0x3EDD,0x3EFD,0x36DD,0x36FE,0x3EFD,0x3EFE,0x46DD,0x4EDD,0x5EBD,0x6E7D,0x861C,0x8D39,0x9C37,0xB3F7,0xC3F7,0xCBF8,0xD3F8,0xD3F8,0xD419,0xD41B,0xC43D,0x7259,0x2938,0x193B,0x115C,0x117D,0x097D,0x099E,0x097D,0x117D,0x197C,0x215B,0x393A,0x5959,0x9A3A,0xA239,0x99F7,0x91F6,0x8A37,0x7A77,0x62D8,0x4359,0x347C,0x251D,0x0D3D,0x057E,0x05FE,0x065F,0x06DF,0x071F,0x075F,0x077F,0x079F,0x079F,0x07BF,0x07DF,0x079F,0x0F7F,0x1F7F,0x2F3F,0x3EDE,0x66BF,0x85BD,0x5251,0x8A94,0xAA13,0xB9B3,0xC1B3,0xC993,0xC993,0xD1B4,0xD1B3,0xC193,0xC193,0xC172,0xC1B3,0xC1D4,0xBA14,0xB214,0x99F4,0x58D0,0x5111,0x5172,0x4992,0x4172,0x3972,0x3972,0x3972,0x3951,0x3951,0x3131,0x3951,0x3151,0x3151,0x3151,0x3151,0x2951,0x2932,0x2153,0x2174,0x1995,0x11B6,0x11D7,0x1218,0x0A18,0x09F8,0x09F8,0x09F8,0x1239,0x1218,0x1A18,0x19F7,0x11B5,0x1153,0x1132,0x1131,0x1931,0x1931,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x2131,0x2131,0x2131,0x2131,0x1930,0x2131,0x2131,0x2151,0x2151,0x1930,0x2130,0x2130,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2151,0x2151,0x1951,0x1131,0x1132,0x1173,0x1174,0x19B6,0x19D7,0x21F7,0x19B5,0x1154,0x1133,0x1113,0x1132,0x1932,0x1952,0x1952,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2150,0x2130,0x2130,0x2130,0x1930,0x2130,0x2131,0x2130,0x2130,0x2930,0x290F,0x2910,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x292F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2951,0x2951,0x2951,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2951,0x2130,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x2150,0x2151,0x2130,0x2131,0x2131,0x2131,0x2130,0x2131,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x210F,0x210F, + 0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x2930,0x2930,0x2930,0x2930,0x210F,0x290F,0x292F,0x292F,0x290F,0x212F,0x2130,0x2110,0x2110,0x2930,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2131,0x1911,0x1911,0x1112,0x1133,0x1174,0x19B6,0x19D7,0x19F7,0x21F8,0x11D7,0x19F7,0x19D7,0x1196,0x0975,0x0974,0x0933,0x0953,0x0953,0x0933,0x0933,0x1154,0x1174,0x1195,0x19B6,0x19F7,0x1A17,0x1A17,0x2217,0x19D6,0x19B5,0x1153,0x1113,0x1112,0x1132,0x1931,0x1931,0x2130,0x2130,0x2130,0x2950,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2110,0x2110,0x2110,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x212F,0x212F,0x2930,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x2930,0x212F,0x210F,0x210F,0x212F,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1910,0x1910,0x10F1,0x10F1,0x10F1,0x10F2,0x0912,0x0912,0x0912,0x08F2,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0913,0x0913,0x0913,0x0913,0x1133,0x0933,0x0933,0x0933,0x0933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1133,0x1154,0x1134,0x1134,0x1154,0x1154,0x1133,0x1154,0x1153,0x1133,0x1133,0x1153,0x1132,0x1153,0x1132,0x1153,0x1153,0x1153,0x0953,0x1174,0x1174,0x0954,0x0954,0x0954,0x0954,0x1154,0x1154,0x1154,0x1154,0x1154,0x1154,0x1154,0x1154,0x0954,0x1154,0x1154,0x0934,0x1154,0x1154,0x1134,0x1154,0x1154,0x0934,0x1154,0x1134,0x1154,0x1134,0x1134,0x1154,0x1154,0x0934,0x0934,0x1154,0x1134,0x0934,0x1134,0x1134,0x0934,0x1134,0x1154,0x0934,0x0934,0x0934,0x0934,0x0934,0x0913,0x1133,0x0933,0x0933,0x1133,0x1133,0x1133,0x1133,0x1132,0x0912,0x0932,0x0932,0x1133,0x0932,0x0932,0x0912,0x0912,0x0912,0x08F2,0x00F2,0x08F2,0x00D1,0x08F2,0x00F2,0x00F2,0x00F2,0x08F2,0x00F2,0x00F2,0x00F2,0x08F2,0x00F2,0x00F2,0x00F2,0x08F2,0x00F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08D1,0x08F2,0x08D2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x00D1,0x00F1,0x00D1,0x00F2,0x00D1,0x00D1,0x00D1,0x00D1,0x00D1,0x00D1,0x00F1,0x00F2,0x00F1,0x00F2,0x00F2,0x00F2,0x00F2,0x00F2,0x00F2,0x00F2,0x00F2,0x00F2,0x00F2,0x08F2,0x00F2,0x08F2,0x00F2,0x00F2,0x00D1,0x00F2,0x00F2,0x08F2,0x00F2,0x00F2,0x00F2,0x00F2,0x00F2,0x0912,0x00F2,0x08F2,0x08F2,0x0912,0x00F2,0x0912,0x00F2,0x0912,0x00F2,0x0912,0x00F2,0x00F2,0x00F2,0x00F2,0x00F2,0x0112,0x00F2,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0932,0x0932,0x0912,0x0932,0x0912,0x0933,0x0933,0x0933,0x0912,0x0933,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0913,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0912,0x0932,0x0912,0x1132,0x1132,0x1932,0x1932,0x1931,0x2131,0x2131,0x2130,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x3130,0x3130,0x3130,0x3130,0x312F,0x312F,0x310E,0x30CE,0x38CD,0xABD8,0xD4DB,0xDCBA,0xDC99,0xD499,0xD499,0xD478,0xD478,0xCC98,0xCC99,0xC499,0xB458,0xC51B,0xBD5C,0xBD7C,0xB59D,0xA5BD,0xA5FE,0x8D5C,0x4B55,0x2A51,0x21F0,0x19AF,0x1990,0x21B1,0x29B1,0x2991,0x29B2,0x31B2,0x31B2,0x39D3,0x39B3,0x39B3,0x41B3,0x41B3,0x49D3,0x49D3,0x51B3,0x51B3,0x51B2,0x51B2,0x59B2,0x5192,0x5192,0x5972,0x5972,0x5972,0x5951,0x5951,0x5951,0x5951,0x6191,0x69D2,0x7A33,0xB3B8,0xCC7B,0xCC5A,0xC439,0xC439,0xC419,0xCC19,0xCBF8,0xCBF8,0xCBF8,0xCBD7,0xCBD7,0xCBB7,0xCBB7,0xCBD7,0xCBD7,0xCBD7,0xCBD7,0xCBD7,0xCBD7,0xCBB7,0xCBB7,0xCBB6,0xCBB7,0xCBB7,0xCB96,0xC396,0xCB96,0xC396,0xC396,0xCB96,0xCB96,0xCB96,0xCB96,0xCB76,0xCB76,0xCB76,0xCB76,0xCB76,0xCB76,0xCB76,0xCB56,0xCB76,0xCB56,0xD356,0xD356,0xD336,0xD356,0xD336,0xD336,0xD316,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xCB37,0xC316,0xBB37,0xAAD6,0x8A33,0x8A32,0xB3F8,0xBC99,0xBC98,0xB498,0xB498,0xB477,0xB477,0xB498,0xB4B8,0x9C78,0x8C79,0x7CDA,0x6D5B,0x5D7B,0x55FD,0x55FD,0x55FD,0x5D9B,0x64FA,0x6BD7,0x8BD8,0x93B8,0x9BB8,0x9B98,0x9B57,0x92F6,0x82B5,0x72B5,0x6B36,0x6438,0x5D3B,0x55DC,0x463D,0x2DFD,0x25FD,0x1DFE,0x15FE,0x15FE,0x15FE,0x15FE,0x15DE,0x15DE,0x15BD,0x159D,0x157D,0x157D,0x155D,0x1D3D,0x1D1D,0x251D,0x251D,0x2CFE,0x2CFE,0x34DD,0x3CDD,0x44BD,0x449C,0x447C,0x443B,0x4C1B,0x4BDA,0x4B9A,0x4B79,0x4358,0x4B78,0x5378,0x5398,0x5B99,0x5BD9,0x63DA,0x63FA,0x63FA,0x63FA,0x63DA,0x63DA,0x63DA,0x63DA,0x63DA,0x63DA,0x6399,0x6399,0x6399,0x63B9,0x6399,0x5B79,0x4B18,0x42F7,0x4338,0x4B79,0x53FA,0x5C7B,0x64DB,0x6D3C,0x6D5D,0x6D9D,0x6DBD,0x6DFD,0x661D,0x663D,0x5E7D,0x5E9D,0x56BD,0x4EBD,0x4EBD,0x46BD,0x46DD,0x4EBD,0x4EBD,0x56BD,0x669D,0x767D,0x861C,0x957A,0xA458,0xB418,0xC3F7,0xCBF8,0xD3D7,0xD3F8,0xDBF8,0xD41A,0xCC3C,0xABBD,0x3937,0x191A,0x195B,0x117D,0x119D,0x097D,0x097D,0x117D,0x197D,0x215B,0x313A,0x4918,0x923A,0xA259,0x99F7,0x91F7,0x8A17,0x7A77,0x62B8,0x4B19,0x343C,0x24BD,0x151E,0x055D,0x05DF,0x063F,0x06BF,0x06FF,0x073F,0x075F,0x079F,0x079F,0x07DF,0x07DF,0x0F9F,0x0F7F,0x177F,0x275F,0x36FE,0x5EDF,0x865F,0x52B2,0x8273,0xA213,0xB1D3,0xC1B3,0xC193,0xC9B3,0xC9B3,0xC9B3,0xC993,0xC193,0xC193,0xC1B3,0xC1D4,0xB9F4,0xB1F4,0xA215,0x6111,0x5111,0x5172,0x4972,0x4172,0x4171,0x4172,0x3972,0x3972,0x3971,0x3131,0x3151,0x3972,0x3151,0x3151,0x3151,0x2931,0x2952,0x2133,0x1974,0x19B6,0x11B7,0x09B7,0x09F8,0x09F9,0x01D8,0x01F9,0x01D9,0x09F9,0x09F9,0x1219,0x1218,0x11F7,0x11D6,0x1174,0x1153,0x1112,0x1111,0x1111,0x1931,0x1931,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1911,0x1910,0x1931,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2151,0x2151,0x1931,0x1931,0x1132,0x1153,0x1194,0x19B6,0x21F7,0x2217,0x19B6,0x1154,0x0933,0x0913,0x1132,0x1132,0x1952,0x1952,0x1952,0x1952,0x1931,0x1931,0x1931,0x2131,0x2110,0x2131,0x2130,0x2110,0x2130,0x2130,0x2150,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2151,0x2130,0x2130,0x2930,0x2930,0x2930,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x18F0,0x1910,0x1910,0x2110,0x2131,0x2151,0x2131,0x2151,0x2131,0x2130,0x2130,0x2131,0x1910,0x2131,0x2151,0x2151,0x2131,0x2130,0x1910,0x2110,0x1910,0x2130,0x2131,0x2151,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2150,0x2951,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2150,0x2151,0x2130,0x2131,0x2130,0x2131,0x2131,0x2130,0x2131,0x2131,0x2151,0x2130,0x2150,0x2130,0x2130,0x2151,0x2150,0x2151,0x2130,0x2131,0x2151,0x2151,0x2131,0x2151,0x2151,0x2151,0x2951,0x2931,0x2931,0x2130,0x2951,0x2130,0x2130,0x2991,0x2971,0x2151,0x2131,0x2131,0x2131,0x2131,0x1910,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x212F,0x210F,0x210F, + 0x290F,0x290F,0x290F,0x290F,0x212F,0x2130,0x212F,0x212F,0x292F,0x212F,0x2930,0x2930,0x2110,0x2930,0x2910,0x210F,0x2930,0x2930,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x2131,0x1931,0x1932,0x1133,0x1154,0x1975,0x1996,0x19D7,0x19F7,0x19F7,0x11D7,0x11D7,0x11B7,0x11B7,0x11D7,0x11D6,0x11B6,0x1195,0x11B6,0x11B6,0x19D6,0x19D6,0x19D6,0x19D6,0x19F7,0x19F7,0x21F6,0x1995,0x1994,0x1132,0x1111,0x1911,0x1931,0x1931,0x2130,0x2130,0x2130,0x212F,0x292F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2930,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2110,0x2110,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x212F,0x2930,0x2930,0x210F,0x210F,0x2930,0x290F,0x2930,0x2110,0x2930,0x2110,0x210F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x290F,0x212F,0x212F,0x2130,0x2130,0x212F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2131,0x1911,0x1911,0x1932,0x1133,0x1174,0x19B6,0x19B6,0x19F7,0x19F8,0x1A18,0x19F8,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2239,0x1A18,0x2219,0x1A18,0x1A19,0x1A18,0x2239,0x1A18,0x1A19,0x1A19,0x1A19,0x1A18,0x1A18,0x1A18,0x1A39,0x1A18,0x2239,0x1A18,0x1A18,0x1A18,0x2218,0x19F8,0x1A18,0x19F8,0x19F8,0x19F8,0x19F8,0x11F7,0x19F8,0x19F8,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F8,0x1A18,0x1A18,0x11F8,0x11F8,0x11F8,0x11F8,0x1218,0x11F8,0x11F8,0x1A18,0x11F8,0x1A18,0x19F8,0x1A18,0x11F8,0x1A18,0x1218,0x11F8,0x11F8,0x11F8,0x11F8,0x1A18,0x19F8,0x19F8,0x11F8,0x11F8,0x11F8,0x19F8,0x11F8,0x19F8,0x19F8,0x19F8,0x11F8,0x1A19,0x19F8,0x19F8,0x19F8,0x19F8,0x11F8,0x19F8,0x11F8,0x19F8,0x11F8,0x1A19,0x19F8,0x1A19,0x1A19,0x1A19,0x19F8,0x1A18,0x1A18,0x2239,0x1A18,0x1A38,0x1A18,0x1A18,0x1A18,0x1A38,0x1A18,0x1A39,0x1A19,0x2239,0x1A18,0x2238,0x2218,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x19F8,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A19,0x1A18,0x1A19,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2218,0x1A18,0x1A19,0x1A18,0x2218,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A38,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A38,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x19F8,0x1A18,0x19F8,0x1A18,0x19F8,0x19F8,0x11F8,0x19F8,0x11D7,0x19F8,0x11F8,0x19F8,0x11D7,0x19F8,0x11D8,0x19F8,0x11F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x19F8,0x1A18,0x19F8,0x1A18,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x11F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F7,0x19F7,0x19D7,0x19B6,0x1195,0x1974,0x1973,0x1952,0x2131,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x2930,0x3130,0x2930,0x2930,0x292F,0x312F,0x290F,0x30EE,0x38CD,0x9B77,0xD4FC,0xD4BA,0xDCB9,0xDC99,0xD479,0xD479,0xD478,0xD478,0xCC99,0xCC99,0xC4B9,0xC4FA,0xBD3B,0xBD7D,0xAD5C,0x94DB,0x6376,0x21B0,0x196F,0x2190,0x2190,0x2191,0x2991,0x29B1,0x29B2,0x31B2,0x39D3,0x31D3,0x31D3,0x39D3,0x39D3,0x39D3,0x41B3,0x41B3,0x49B3,0x49B3,0x49D3,0x51D3,0x51B3,0x49B2,0x5192,0x5192,0x5192,0x5192,0x5192,0x59B2,0x5993,0x5992,0x5992,0x5972,0x5972,0x5972,0x5992,0x5971,0x5130,0x510F,0x7A74,0xA357,0xABB8,0xC41A,0xC419,0xCC19,0xCBF8,0xCBF8,0xCBF8,0xD3F8,0xCBD7,0xD3D7,0xCBB7,0xCBB7,0xCBB7,0xCBB7,0xCBB7,0xCBB7,0xCBB7,0xCBB7,0xCBB6,0xCB96,0xCB96,0xCB96,0xCB96,0xCB96,0xCB76,0xCB76,0xCB76,0xCB76,0xCB76,0xCB76,0xCB76,0xCB56,0xCB56,0xCB56,0xCB56,0xD376,0xD356,0xD376,0xD356,0xD356,0xD356,0xD356,0xD336,0xD356,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xCB37,0xCB57,0xB2F6,0xA295,0x79D2,0x79D1,0x9293,0xCC9A,0xCCB9,0xCCB9,0xC4B8,0xC4B8,0xC4B8,0xC4B8,0xC4D8,0xC4D9,0xB499,0x9C99,0x8D1B,0x755C,0x659C,0x5DFD,0x561D,0x5E1D,0x65BC,0x6D1A,0x73D7,0x93B8,0x9B98,0xA378,0xAB78,0xAB57,0xA2F5,0x9AB5,0x8A54,0x8295,0x7316,0x6418,0x5D3B,0x4DDC,0x3DFD,0x2DFD,0x25FD,0x1DFD,0x1DFD,0x15DD,0x15BD,0x15BD,0x159E,0x1D9E,0x259E,0x257E,0x255D,0x253D,0x2D1D,0x2CFD,0x34DD,0x34DD,0x34BD,0x3C9C,0x447C,0x445B,0x543B,0x5C3B,0x643A,0x6C1A,0x7C5A,0x8C7B,0x9CDC,0xB53D,0xBD5E,0xBD5D,0xBD5D,0xBD3D,0xBD3D,0xBD3D,0xBD3D,0xBD3D,0xBD1D,0xBD1D,0xB51D,0xB51D,0xB51D,0xBD1C,0xB51C,0xBD1C,0xBD1D,0xBD3D,0xBD1C,0xBD1C,0xBD1D,0xBD1C,0xBD3D,0xB53D,0xA4BB,0x9C9B,0x94BB,0x8C9A,0x8C9A,0x847A,0x84BA,0x84DB,0x84FB,0x853C,0x7D5C,0x7D9C,0x75BC,0x75FD,0x6E3D,0x665D,0x5E7D,0x5E9D,0x5E9D,0x5EBD,0x5E9D,0x669D,0x6E7D,0x765C,0x8E1C,0x9DBB,0xA478,0xB3F7,0xC3F7,0xD3D7,0xD3D7,0xD3D7,0xDBD8,0xD3F9,0xD41A,0xC43E,0x59D8,0x2939,0x195B,0x117C,0x117D,0x097D,0x097D,0x117D,0x117D,0x215C,0x295B,0x40F8,0x79D9,0x9A19,0x91F7,0x91F7,0x8A17,0x8257,0x6A98,0x5319,0x3BFB,0x2C9D,0x14DD,0x0D3D,0x05BE,0x063F,0x069F,0x06FF,0x073F,0x077F,0x079F,0x07BF,0x07BF,0x07DF,0x07BF,0x0F9F,0x179F,0x277F,0x2EFE,0x4E9E,0x86BF,0x5333,0x7A73,0x99F2,0xBA14,0xC1B3,0xC193,0xC993,0xC993,0xC9B3,0xC173,0xC193,0xC193,0xC1B3,0xB9B3,0xB9F4,0xB214,0xAA35,0x6911,0x50F1,0x5152,0x5192,0x4992,0x4171,0x3971,0x4172,0x3971,0x3971,0x3971,0x3151,0x3971,0x3151,0x3151,0x3152,0x2911,0x2112,0x2133,0x2195,0x11B7,0x11F8,0x01B8,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01B9,0x01B9,0x01F9,0x0A19,0x09F8,0x11D7,0x0995,0x0933,0x0912,0x0912,0x1112,0x1112,0x1132,0x1112,0x1911,0x10F1,0x1911,0x1931,0x1911,0x1911,0x1932,0x1932,0x1112,0x1932,0x1932,0x1131,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1912,0x1111,0x1112,0x1111,0x1111,0x1111,0x1131,0x1131,0x1111,0x1911,0x1931,0x1931,0x1911,0x1911,0x1931,0x1911,0x2111,0x2131,0x2110,0x2130,0x2110,0x2110,0x2930,0x2110,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2150,0x2150,0x2151,0x1910,0x1931,0x1952,0x1153,0x1174,0x19B6,0x2218,0x2218,0x1196,0x0934,0x0933,0x0913,0x0933,0x1133,0x1153,0x1153,0x1173,0x1152,0x1952,0x1932,0x1911,0x1911,0x2111,0x2130,0x2110,0x2110,0x2950,0x2150,0x2130,0x212F,0x212F,0x212F,0x2150,0x2150,0x2150,0x2130,0x2131,0x2131,0x1931,0x1931,0x2152,0x2131,0x2131,0x2130,0x2131,0x2131,0x2130,0x1910,0x2131,0x1911,0x1910,0x1910,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2950,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2151,0x2151,0x2131,0x1910,0x18F0,0x18F0,0x1910,0x1910,0x1910,0x1931,0x2131,0x2131,0x2130,0x2130,0x2131,0x2151,0x1910,0x1910,0x1931,0x1931,0x1911,0x1910,0x2131,0x1910,0x2151,0x1931,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x1910,0x1930,0x1910,0x1910,0x1910,0x2131,0x2151,0x1911,0x2131,0x2111,0x2110,0x2130,0x2130,0x2130,0x2130,0x1910,0x1910,0x1910,0x18F0,0x1910,0x1910,0x18F0,0x1910,0x1931,0x1931,0x1910,0x2110,0x2110,0x18F0,0x2110,0x2130,0x190F,0x190F,0x2130,0x2130,0x1910,0x1910,0x1910,0x1911,0x1911,0x1910,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x1910,0x1910,0x2130,0x2131,0x2130,0x1910,0x1910,0x1910,0x1910,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x290F,0x2930,0x2930, + 0x2910,0x2910,0x2930,0x290F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x2111,0x1911,0x1912,0x1112,0x1133,0x1154,0x1195,0x19B6,0x19F7,0x1A18,0x19F8,0x19F8,0x19F8,0x11F8,0x11F7,0x1A18,0x1A18,0x19F8,0x19F7,0x19F7,0x11B6,0x19D6,0x19D6,0x19B6,0x1995,0x1174,0x1153,0x1952,0x1132,0x1911,0x1931,0x1930,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x212F,0x210F,0x210F,0x212F,0x292F,0x2930,0x292F,0x292F,0x292F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x210F,0x290F,0x292F,0x292F,0x290F,0x290F,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2930,0x2910,0x2110,0x212F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x212F,0x212F,0x2110,0x2110,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2110,0x210F,0x2110,0x2130,0x2130,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1953,0x1954,0x1995,0x11B6,0x11D7,0x11D8,0x11F9,0x11D8,0x11F9,0x11F9,0x11F9,0x09D9,0x09F9,0x09D8,0x09D9,0x09D9,0x09D9,0x09D8,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x09D8,0x09D9,0x09D9,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D8,0x11F9,0x09D9,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09F8,0x09D8,0x09F8,0x09F8,0x09F8,0x09F8,0x09F8,0x09F8,0x09F8,0x09F9,0x09F9,0x09D8,0x09F9,0x09D8,0x09F8,0x09F8,0x09F8,0x09D8,0x09F8,0x09F8,0x09F9,0x09D9,0x09F9,0x09D8,0x09F9,0x09D9,0x09F9,0x09D9,0x09F9,0x09F9,0x09F9,0x09D8,0x09F9,0x09F9,0x09F9,0x09F9,0x11F9,0x09D9,0x09F9,0x09F9,0x09F9,0x09D9,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x09D8,0x09D9,0x09D9,0x09F9,0x09D8,0x09D9,0x09D8,0x09D9,0x09D8,0x09D9,0x09D9,0x09D9,0x09B8,0x11F9,0x11F8,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x09F9,0x09F9,0x09F9,0x09F9,0x11F9,0x09F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x09F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x09F9,0x09F9,0x11F9,0x11F9,0x09F9,0x09F9,0x11F9,0x11F9,0x09F9,0x09F9,0x09F9,0x11F9,0x09F9,0x11F9,0x11F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x11F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09D9,0x09D9,0x09F9,0x11F9,0x09F9,0x09F9,0x09F9,0x09D9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x11F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09D9,0x09D9,0x09D9,0x09F9,0x09D9,0x09F9,0x09D9,0x09F9,0x09F9,0x11F9,0x09F9,0x09F9,0x11F9,0x11F9,0x09D9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F8,0x11F8,0x19F8,0x19D7,0x21B5,0x2194,0x2132,0x2131,0x2130,0x2930,0x2930,0x2950,0x2930,0x2930,0x3130,0x3150,0x3130,0x3130,0x292F,0x292F,0x292F,0x290F,0x30EE,0x288C,0x7A93,0xD4DC,0xD4BA,0xDCBA,0xDC99,0xDC99,0xD499,0xD479,0xD499,0xCC99,0xCC99,0xCCBA,0xC4DA,0xC51C,0xBD3D,0x5AB3,0x39D0,0x294F,0x2170,0x2990,0x2991,0x2991,0x3192,0x31B2,0x31B2,0x31B2,0x39B3,0x39B3,0x39B3,0x39D3,0x39D3,0x39D3,0x41D3,0x41D3,0x41D3,0x41B3,0x49D3,0x49D3,0x49D4,0x49D3,0x49D3,0x49B3,0x51B3,0x51B3,0x51B3,0x51B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x5993,0x5993,0x5992,0x5192,0x5192,0x5992,0x5171,0x5971,0x6191,0x71D2,0x8A94,0xAB37,0xBBD8,0xCC19,0xD419,0xCBF8,0xD3F8,0xD3D8,0xD3D8,0xD3B7,0xCB97,0xCB97,0xCB97,0xD397,0xD397,0xD396,0xCB96,0xCB96,0xD396,0xD376,0xD376,0xD376,0xD376,0xD376,0xD376,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD336,0xD336,0xD356,0xD356,0xD336,0xD336,0xD336,0xD336,0xD357,0xD357,0xD357,0xCB57,0xC337,0xB2D6,0x9234,0x7991,0x71B1,0x71B1,0xCC39,0xD499,0xD4B9,0xD4D9,0xD4B8,0xCCB8,0xD4B8,0xD4B8,0xCCB8,0xCCD9,0xBC98,0xA498,0x8D1B,0x755B,0x657B,0x5DDC,0x5E1D,0x5E1D,0x65DC,0x6D1B,0x7BF8,0x9BB8,0xA357,0xAB37,0xB316,0xBB16,0xB2D5,0xB2B5,0xA275,0x9A75,0x7A54,0x7316,0x6479,0x5D7B,0x45BC,0x35BC,0x2DDD,0x25DD,0x1DDD,0x1DBD,0x1DBD,0x1D9D,0x259E,0x2D7E,0x357E,0x3D7E,0x3D5E,0x453E,0x44FD,0x4CDD,0x54BC,0x549C,0x545B,0x5C5B,0x5C3A,0x6C3A,0x7C7B,0x8CBC,0x9CFC,0xACFC,0xB4FC,0xBCFC,0xC4FB,0xC4DB,0xC4DA,0xC4DA,0xCCDA,0xC4DA,0xC4DA,0xCCDA,0xC4DA,0xCCDA,0xCCBA,0xCCBA,0xCCBA,0xCCBA,0xCCBA,0xCCBA,0xCCDA,0xCCBA,0xCCDA,0xCCDA,0xCCDA,0xCCBA,0xCCDA,0xCCDA,0xC4D9,0xC4DA,0xBCDA,0xBCDA,0xBCDA,0xB4DA,0xACBA,0xA479,0xA49A,0xA49A,0xA4BA,0x9CBA,0x94DA,0x8CDA,0x8CFB,0x853B,0x7D7B,0x759B,0x75FC,0x763D,0x765D,0x767D,0x767D,0x765D,0x7E5D,0x863C,0x95FC,0xA57B,0xAC99,0xBBF7,0xCBF7,0xD3D7,0xD3D7,0xD3D7,0xDBD7,0xDBF8,0xD3F9,0xCC3D,0x82DB,0x3938,0x215A,0x197C,0x117C,0x097D,0x097D,0x119D,0x117D,0x195C,0x295B,0x3919,0x6979,0x921A,0x91F8,0x91F7,0x89F7,0x7A37,0x6A98,0x5319,0x3BBB,0x2C5D,0x1CDD,0x0D1D,0x0DBE,0x061F,0x069F,0x06FF,0x073F,0x077F,0x079F,0x07BF,0x07BF,0x07DF,0x079F,0x0F9F,0x179F,0x1F7F,0x2F1F,0x46BE,0x7EDF,0x5BD6,0x7252,0xA233,0xB1D3,0xC1B3,0xC193,0xC993,0xC9B3,0xC9B3,0xC173,0xC9B3,0xC9B3,0xC1B3,0xC1B3,0xB9F4,0xB1D4,0xAA35,0x7132,0x50F0,0x5152,0x5172,0x4972,0x4171,0x4171,0x4172,0x3971,0x3971,0x3951,0x3151,0x3151,0x3172,0x3152,0x3152,0x2931,0x2132,0x2153,0x2196,0x19D8,0x09D8,0x09D9,0x01F9,0x01D9,0x01DA,0x01DA,0x01B9,0x01DA,0x01B9,0x01D9,0x01F9,0x09F9,0x09D8,0x09B7,0x1196,0x0954,0x1154,0x0933,0x1133,0x1133,0x1132,0x1133,0x1132,0x1112,0x1932,0x1932,0x1932,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1912,0x1912,0x1912,0x1912,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1133,0x1952,0x1953,0x1953,0x1932,0x1932,0x1912,0x1912,0x1911,0x2111,0x2131,0x2111,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2150,0x2130,0x1930,0x1931,0x1931,0x1152,0x1153,0x1175,0x19D6,0x2238,0x19D7,0x0975,0x0954,0x0934,0x0933,0x0133,0x0933,0x0953,0x0953,0x1173,0x1994,0x1153,0x1132,0x1932,0x1931,0x2131,0x2110,0x2110,0x2130,0x2150,0x2130,0x212F,0x210F,0x212F,0x212F,0x2130,0x2150,0x2130,0x2151,0x1931,0x1911,0x1911,0x18F1,0x1911,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2972,0x2152,0x1911,0x1910,0x1911,0x1911,0x2151,0x2171,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x18F0,0x1911,0x1911,0x1911,0x1911,0x18F0,0x18F0,0x1910,0x1910,0x1910,0x2131,0x1931,0x10F0,0x1110,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1930,0x2130,0x2130,0x2951,0x2130,0x1910,0x2131,0x1931,0x2131,0x2130,0x2110,0x2110,0x2130,0x1931,0x1931,0x1931,0x1911,0x1910,0x1911,0x1911,0x2131,0x2131,0x2152,0x2131,0x1931,0x1910,0x1930,0x1910,0x1910,0x1930,0x18EF,0x1910,0x10EF,0x10F0,0x18F0,0x10D0,0x10D0,0x1911,0x2131,0x2131,0x2131,0x2131,0x1910,0x2130,0x2971,0x2130,0x190F,0x1910,0x1930,0x1910,0x1911,0x2152,0x2152,0x1911,0x1911,0x2151,0x2151,0x1931,0x2131,0x2152,0x2152,0x1910,0x1910,0x2151,0x2131,0x2151,0x1930,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x2130,0x1910,0x1910,0x2130,0x2130,0x2110,0x2110,0x210F,0x2930,0x2930,0x2930, + 0x2910,0x20EF,0x2910,0x2930,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2930,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2131,0x2131,0x2131,0x2131,0x1911,0x1911,0x1112,0x1112,0x1133,0x1154,0x1175,0x19B6,0x19D7,0x19F7,0x19F8,0x1A18,0x2238,0x2239,0x2238,0x19F7,0x21F7,0x19F7,0x19D6,0x1995,0x1974,0x1153,0x1153,0x1132,0x1112,0x1932,0x1931,0x2151,0x2151,0x1930,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x210F,0x212F,0x292F,0x292F,0x2930,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x210F,0x2130,0x210F,0x210F,0x2110,0x290F,0x210F,0x290F,0x290F,0x2110,0x2130,0x2130,0x2930,0x2110,0x2910,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x2930,0x212F,0x212F,0x212F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2110,0x212F,0x2930,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2930,0x212F,0x2130,0x212F,0x210F,0x2130,0x2130,0x2150,0x2131,0x1931,0x1111,0x1153,0x1154,0x1195,0x1196,0x11B7,0x09B8,0x09D8,0x09B9,0x09B9,0x09F9,0x09D9,0x09B9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01D9,0x09D9,0x09D9,0x09D9,0x09B9,0x09B9,0x09D9,0x09D9,0x01D9,0x09D9,0x09D9,0x01B9,0x09D9,0x01D9,0x01D9,0x09D9,0x01D9,0x01D9,0x01D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x09D9,0x09F9,0x09FA,0x09F9,0x01D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x09F9,0x01D8,0x09F8,0x09F9,0x01F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x01D8,0x01D9,0x09D9,0x09D9,0x09F9,0x09D9,0x09F9,0x09D9,0x09F9,0x09D9,0x01D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01B9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01D9,0x09B9,0x09D9,0x01B9,0x01B9,0x01B9,0x01D9,0x01D9,0x01D9,0x01B8,0x01B8,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x09D9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09D9,0x09F9,0x09D9,0x09FA,0x09D9,0x09F9,0x09F9,0x09FA,0x09FA,0x09F9,0x09FA,0x09FA,0x09FA,0x09FA,0x09DA,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09D9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09D9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09D9,0x09F9,0x09F9,0x09F9,0x09FA,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09FA,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09D9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09FA,0x09F9,0x09D9,0x09D9,0x09D9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09FA,0x09F9,0x09FA,0x09FA,0x09FA,0x09D9,0x09FA,0x09F9,0x11F9,0x11F9,0x11F9,0x19F8,0x19D7,0x21B5,0x1952,0x2131,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x3130,0x3130,0x312F,0x292F,0x292F,0x290F,0x30EE,0x30CD,0x61D1,0xDD3D,0xD4BA,0xD49A,0xD499,0xD479,0xD479,0xD479,0xD479,0xCC99,0xCC99,0xCCBA,0xCCFB,0xB4DB,0x7B76,0x290E,0x294F,0x2970,0x2970,0x2991,0x2991,0x3191,0x3192,0x3192,0x3192,0x39B2,0x39B2,0x39B3,0x39B3,0x39B3,0x39B3,0x39D3,0x39B3,0x41B3,0x41D3,0x41D3,0x49D3,0x49D3,0x49D3,0x49D3,0x49D3,0x49D3,0x51D3,0x51D3,0x51D3,0x51D3,0x51D3,0x51D3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x59B3,0x51B3,0x51B3,0x51B3,0x5192,0x5992,0x5992,0x5992,0x5971,0x5950,0x71F2,0x7A33,0x9AF5,0xB398,0xC3B8,0xCBF9,0xD3F8,0xD3D8,0xD3D8,0xD3D7,0xD3D7,0xD3B7,0xD3B7,0xD3B7,0xD397,0xD397,0xD397,0xD397,0xD396,0xD396,0xD376,0xD376,0xD376,0xD356,0xD376,0xD376,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xDB56,0xD356,0xD356,0xD356,0xD356,0xD337,0xD357,0xCB57,0xCB57,0xC357,0xB317,0x9A75,0x8A34,0x7191,0x6991,0x7191,0x9AD5,0xDCBB,0xD479,0xD499,0xD499,0xD498,0xD498,0xD498,0xD498,0xD498,0xCCB8,0xBC98,0xA498,0x8D1A,0x7D7B,0x5D7B,0x55DC,0x561D,0x5E1D,0x65DD,0x6D1B,0x7BF8,0x9BD8,0xA316,0xB2D6,0xBAD5,0xC2D6,0xC2B5,0xC295,0xBA95,0xB295,0x91F4,0x7A54,0x6377,0x6CFB,0x559C,0x45BC,0x359C,0x259C,0x259D,0x259D,0x2D9E,0x2D7D,0x355D,0x353E,0x3D1E,0x4CFD,0x54DD,0x64DC,0x853D,0x955D,0x9D5D,0x9D3D,0xA53D,0xAD3D,0xAD3C,0xB51C,0xB4FC,0xB4FC,0xBCDB,0xBCDB,0xC4DB,0xC4DB,0xCCBA,0xCCBA,0xCCBA,0xCCBA,0xCCBA,0xCCBA,0xCCBA,0xCCBA,0xCCBA,0xCC99,0xCC99,0xCC99,0xCC99,0xD499,0xD499,0xD499,0xD499,0xD4B9,0xD4B9,0xD4B9,0xD499,0xD4B9,0xD4B9,0xD4B9,0xD4B9,0xCC99,0xCCB9,0xCCB9,0xCCB9,0xC4B9,0xC499,0xC4B9,0xC4B9,0xC4B9,0xBCB9,0xBCB9,0xAC78,0xA459,0x9C58,0x9479,0x8C99,0x8CDA,0x84DA,0x853B,0x859B,0x85DC,0x85FC,0x85FC,0x8DFC,0x95DC,0x9D9B,0xAD1A,0xB499,0xBBF7,0xCBD7,0xD3B7,0xD3B7,0xDBB7,0xDBD7,0xDBD8,0xDBD9,0xD3FB,0xB3DD,0x59D8,0x2959,0x195B,0x117C,0x117D,0x119D,0x119D,0x119E,0x197D,0x215C,0x313A,0x5938,0x81FA,0x9219,0x9218,0x89F6,0x7A16,0x6A77,0x5B19,0x439A,0x343C,0x1C9D,0x0CFD,0x057E,0x061F,0x067F,0x06FF,0x073F,0x077F,0x07BF,0x07BF,0x07BF,0x07DF,0x079F,0x0F9F,0x179F,0x1F7F,0x273F,0x46FE,0x6EDF,0x6478,0x6A52,0x9A33,0xB1D3,0xB9B3,0xC193,0xC993,0xC993,0xC993,0xC993,0xC993,0xC9B3,0xC1B3,0xC1B3,0xB9F4,0xB1F4,0xAA35,0x7952,0x58F1,0x5952,0x5193,0x4972,0x4151,0x4171,0x3971,0x3971,0x3971,0x3971,0x3151,0x3151,0x3151,0x3152,0x3152,0x2932,0x2132,0x2154,0x21B6,0x19F8,0x1219,0x09FA,0x01D9,0x01DA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x09F9,0x09F8,0x11F8,0x11D7,0x09B5,0x1195,0x1195,0x1195,0x1995,0x1975,0x1995,0x1974,0x2194,0x1974,0x1974,0x1974,0x1974,0x1974,0x1994,0x1994,0x1994,0x1994,0x1994,0x1974,0x1974,0x1974,0x2174,0x2174,0x1974,0x1974,0x1974,0x2194,0x1994,0x1974,0x1995,0x1994,0x1994,0x1994,0x1974,0x1994,0x1994,0x1994,0x1995,0x1994,0x1994,0x19B5,0x1994,0x1974,0x1974,0x1953,0x1953,0x1932,0x2152,0x2131,0x2131,0x2111,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x2130,0x2950,0x210F,0x212F,0x2130,0x2130,0x2130,0x2150,0x2150,0x2131,0x1931,0x1131,0x1132,0x1154,0x1195,0x19D7,0x11D7,0x11B7,0x11D7,0x11D6,0x11D7,0x11D6,0x11F6,0x11F6,0x1A16,0x1A16,0x19D6,0x19B5,0x1174,0x1133,0x1953,0x1931,0x1911,0x2130,0x2130,0x2150,0x212F,0x212F,0x190F,0x212F,0x212F,0x2150,0x2150,0x2131,0x2151,0x1952,0x2173,0x2193,0x2153,0x1912,0x1931,0x1911,0x1911,0x1910,0x1931,0x1911,0x2993,0x2173,0x2132,0x2152,0x2993,0x2973,0x2172,0x2152,0x2172,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2110,0x2130,0x2130,0x1910,0x1910,0x1931,0x31F4,0x2993,0x29B3,0x31F4,0x29D4,0x2172,0x1931,0x1931,0x2152,0x1910,0x1910,0x1911,0x1911,0x1952,0x2193,0x21B3,0x21B3,0x29B4,0x29B4,0x2993,0x2173,0x1952,0x1952,0x2152,0x2131,0x1910,0x2130,0x2930,0x2151,0x2151,0x2152,0x2172,0x2152,0x2971,0x2110,0x2131,0x2151,0x2172,0x2173,0x2173,0x1972,0x1952,0x1931,0x1932,0x1952,0x2172,0x2193,0x2173,0x2152,0x1931,0x2151,0x2971,0x2992,0x29B2,0x29B2,0x31D3,0x29B3,0x3A35,0x3A35,0x31F4,0x2173,0x2152,0x2152,0x2131,0x1931,0x2131,0x1910,0x2151,0x2992,0x2130,0x190F,0x2130,0x1930,0x1910,0x1931,0x29D4,0x29B4,0x1932,0x1111,0x1932,0x1952,0x1931,0x1911,0x2152,0x2973,0x1910,0x1931,0x2131,0x2131,0x2151,0x1931,0x1910,0x1931,0x2972,0x2172,0x2972,0x2152,0x2151,0x2151,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x210F,0x210F,0x2910,0x290F, + 0x290F,0x2910,0x2910,0x2910,0x292F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x290F,0x210F,0x210F,0x210F,0x2910,0x2930,0x2130,0x2110,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2131,0x2131,0x1931,0x1911,0x1912,0x1132,0x1133,0x1133,0x1174,0x1154,0x1195,0x1995,0x1175,0x19B6,0x19B5,0x1995,0x1195,0x1154,0x1154,0x1133,0x1112,0x1132,0x1112,0x1912,0x1911,0x1911,0x1931,0x2151,0x2130,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2930,0x290F,0x290F,0x290F,0x290F,0x2130,0x2110,0x2130,0x2110,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x212F,0x210F,0x210F,0x212F,0x2930,0x290F,0x2930,0x212F,0x212F,0x2110,0x2110,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2110,0x2130,0x2130,0x2151,0x1911,0x1111,0x1133,0x1154,0x1175,0x11B7,0x11D8,0x09D9,0x09D9,0x09D9,0x09D9,0x09FA,0x09D9,0x09D9,0x01D9,0x09DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01DA,0x09DA,0x09D9,0x01D9,0x09DA,0x09D9,0x01D9,0x09DA,0x09DA,0x09DA,0x01DA,0x01D9,0x01DA,0x01DA,0x01D9,0x01D9,0x01DA,0x01D9,0x09F9,0x09FA,0x01DA,0x09DA,0x09DA,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09FA,0x09D9,0x09F9,0x09F9,0x01F9,0x01F9,0x01F9,0x01FA,0x01FA,0x09DA,0x09D9,0x09D9,0x09D9,0x09F9,0x01D9,0x01D9,0x01F9,0x01F9,0x09F9,0x01D9,0x01D9,0x01D9,0x01D9,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01D9,0x09D9,0x09F9,0x01D9,0x01D9,0x09F9,0x09D9,0x01D9,0x09D9,0x09FA,0x09FA,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01D9,0x09D9,0x09DA,0x09DA,0x09D9,0x09D9,0x01D9,0x09D9,0x09D9,0x09D9,0x09DA,0x09D9,0x09DA,0x09D9,0x09D9,0x09D9,0x01D9,0x01B9,0x09D9,0x09F9,0x01D9,0x01D9,0x01D9,0x01D9,0x09FA,0x09DA,0x09FA,0x09D9,0x09F9,0x09D9,0x09DA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09DA,0x09DA,0x09DA,0x09DA,0x09FA,0x09FA,0x09FA,0x09DA,0x09DA,0x09FA,0x09FA,0x09DA,0x09DA,0x09FA,0x09FA,0x09DA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09F9,0x09F9,0x09FA,0x09FA,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09FA,0x09FA,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09F9,0x09F9,0x09FA,0x09FA,0x09F9,0x09F9,0x09FA,0x09FA,0x09F9,0x09F9,0x09D9,0x09FA,0x09FA,0x09FA,0x09DA,0x09DA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09F9,0x09F9,0x09D9,0x09FA,0x09F9,0x09F9,0x09D9,0x09DA,0x09D9,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x11F9,0x11F9,0x19F8,0x19D7,0x21B5,0x2173,0x2151,0x2131,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x292F,0x290F,0x290F,0x290E,0x30EE,0x412E,0xBC9B,0xD4BB,0xD49A,0xD499,0xD499,0xD479,0xD479,0xD479,0xCC99,0xCCBA,0xCCBA,0xC4FB,0x93B7,0x416F,0x312F,0x2950,0x2971,0x3171,0x3171,0x3191,0x3191,0x3192,0x3192,0x3992,0x3992,0x39B3,0x39B2,0x39B3,0x39B3,0x41B3,0x41B3,0x41B3,0x41B3,0x41B3,0x41B3,0x41B3,0x41B3,0x49D3,0x49D3,0x49D3,0x49D3,0x49D3,0x49D3,0x49D3,0x49B3,0x51D3,0x51D3,0x51D3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B2,0x5192,0x5192,0x5171,0x5971,0x5970,0x69B1,0x8233,0x9AD5,0xBB98,0xD43A,0xD3F9,0xD3F8,0xD3F8,0xD3F8,0xD3D8,0xD3D8,0xD3B7,0xD397,0xD397,0xD377,0xD397,0xD377,0xDB97,0xDB97,0xD377,0xD376,0xD376,0xD376,0xD376,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD356,0xD357,0xCB57,0xCB57,0xC357,0xBB37,0xAAD6,0x81D2,0x79D3,0x71B2,0x6992,0x6991,0x7191,0xBBD8,0xDCBA,0xDC99,0xDC99,0xD478,0xD457,0xD457,0xD477,0xD478,0xD498,0xCC98,0xBC98,0xA498,0x8D1A,0x755B,0x5D9B,0x5DFD,0x561D,0x5E1D,0x65BC,0x6D1B,0x7BF8,0xA3D8,0xAB16,0xB2B5,0xBA95,0xC254,0xC254,0xC274,0xC275,0xBA75,0xA1F4,0x81F4,0x6A95,0x6C39,0x655C,0x4D9C,0x459C,0x357C,0x357C,0x357D,0x355D,0x455D,0x451D,0x4CFD,0x5CDD,0x64DC,0x74DC,0x8CFC,0xA53D,0xAD1C,0xB51B,0xBD1B,0xBCFB,0xBCFB,0xBCDA,0xC4DA,0xC4DA,0xC4BA,0xCCDA,0xCCBA,0xCCBA,0xCC9A,0xCC99,0xCC99,0xD499,0xD499,0xD499,0xD499,0xD499,0xD499,0xD499,0xD499,0xD479,0xD479,0xD499,0xD479,0xD499,0xD478,0xD499,0xD499,0xD499,0xD478,0xDC99,0xDC98,0xDC98,0xD498,0xD498,0xD498,0xD498,0xD498,0xD498,0xD478,0xD478,0xCC78,0xCC78,0xCC98,0xCC78,0xCC78,0xC458,0xBC58,0xB458,0xAC59,0xA479,0xA479,0x9C79,0x9499,0x94D9,0x8CD9,0x951A,0x953B,0x9D5B,0xA53A,0xA4D9,0xB4B9,0xBC58,0xC3F7,0xCBD7,0xD3B7,0xD3B7,0xDBB7,0xDBB7,0xDBB7,0xDBD8,0xD3DA,0xC3FD,0x7259,0x3159,0x215B,0x197C,0x117D,0x119D,0x119E,0x119E,0x197D,0x217C,0x313A,0x4918,0x79FA,0x9239,0x9A38,0x81D6,0x79F6,0x6A77,0x6319,0x437A,0x33FC,0x24BD,0x14DD,0x0D7E,0x05DF,0x067F,0x06DF,0x073F,0x077F,0x079F,0x07BF,0x07DF,0x07DF,0x079F,0x0F9F,0x0F9F,0x1F9F,0x277F,0x371E,0x5EDF,0x755B,0x6A92,0x9212,0xA9D3,0xB9B3,0xC193,0xC9B3,0xC993,0xC973,0xC993,0xC993,0xC993,0xC9B3,0xC1B3,0xB9D3,0xB1F4,0xAA35,0x81B3,0x50D0,0x5152,0x5172,0x4992,0x4171,0x4192,0x3972,0x3971,0x3151,0x3971,0x3171,0x3151,0x3151,0x3172,0x3152,0x2932,0x2112,0x1934,0x21B6,0x11D8,0x1219,0x09FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x09F9,0x09F9,0x1219,0x1A38,0x1A38,0x2238,0x2238,0x2238,0x2A38,0x2A38,0x2A38,0x2A37,0x3237,0x3217,0x3237,0x3237,0x3237,0x3237,0x3237,0x2A37,0x3258,0x2A57,0x3258,0x3237,0x3237,0x3237,0x3238,0x3237,0x3238,0x3258,0x3238,0x3237,0x3237,0x3237,0x3258,0x2A37,0x3237,0x3237,0x3237,0x2A37,0x2A37,0x2A17,0x2A37,0x2A17,0x2A37,0x2217,0x2A17,0x2217,0x21F6,0x21B5,0x1974,0x1953,0x1932,0x1932,0x1912,0x2111,0x2131,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2950,0x2130,0x212F,0x2130,0x2130,0x2130,0x2950,0x2130,0x2130,0x1930,0x1931,0x1132,0x1133,0x1154,0x1195,0x11B7,0x19D7,0x2239,0x2259,0x2238,0x19F7,0x1217,0x1217,0x1A17,0x1A17,0x1A38,0x2217,0x19D6,0x19B5,0x1973,0x1952,0x1911,0x1910,0x2130,0x2130,0x2150,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x2152,0x1952,0x29B4,0x3216,0x31F5,0x1953,0x1932,0x1931,0x1911,0x1911,0x1931,0x1931,0x2193,0x29B4,0x2173,0x2993,0x29B3,0x2193,0x2193,0x2172,0x2172,0x2152,0x2151,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x1910,0x2172,0x3215,0x21B3,0x2173,0x2193,0x2173,0x1952,0x2173,0x2173,0x2993,0x2131,0x1931,0x1911,0x1931,0x2193,0x21B4,0x21B4,0x2193,0x2193,0x2173,0x2173,0x2173,0x1973,0x2193,0x2152,0x1931,0x1910,0x2130,0x18F0,0x1910,0x2172,0x2193,0x1952,0x1931,0x1931,0x18F0,0x1910,0x2152,0x21B3,0x2193,0x1973,0x2193,0x1952,0x1111,0x1111,0x1932,0x2173,0x2193,0x2152,0x1911,0x1110,0x1910,0x1910,0x1930,0x2151,0x2151,0x2172,0x2172,0x29D4,0x29B3,0x2173,0x1932,0x1931,0x1931,0x1911,0x1911,0x1931,0x1910,0x2151,0x2992,0x2150,0x190F,0x1910,0x1910,0x1931,0x1931,0x29D4,0x3215,0x29D4,0x1932,0x1932,0x1932,0x1932,0x1111,0x2173,0x29B3,0x1931,0x2131,0x2131,0x1911,0x1911,0x1931,0x2152,0x29B3,0x29B3,0x2993,0x29B3,0x29B3,0x31B3,0x31B3,0x31B3,0x2993,0x2992,0x2971,0x2131,0x2130,0x2130,0x2110,0x210F,0x210F, + 0x290F,0x290F,0x2910,0x2110,0x210F,0x212F,0x212F,0x212F,0x210F,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x290F,0x292F,0x290F,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2131,0x2131,0x2131,0x2131,0x1931,0x1911,0x1912,0x1932,0x1912,0x1932,0x1133,0x1112,0x1112,0x1132,0x1132,0x1112,0x1112,0x1132,0x1132,0x1932,0x1932,0x1932,0x1931,0x1911,0x1911,0x1931,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2910,0x210F,0x2930,0x290F,0x290F,0x290F,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x2930,0x2930,0x2930,0x2131,0x2131,0x1932,0x1953,0x1154,0x1196,0x11D7,0x11D8,0x11F9,0x09F9,0x09FA,0x09F9,0x09D9,0x01D9,0x09DA,0x09FA,0x09FA,0x01D9,0x09DA,0x09FA,0x09DA,0x01DA,0x01DA,0x09DA,0x01D9,0x01D9,0x09DA,0x09DA,0x01DA,0x09DA,0x09FA,0x01DA,0x09DA,0x09FA,0x01DA,0x01DA,0x09FA,0x09FA,0x01DA,0x09DA,0x01D9,0x09FA,0x09DA,0x09DA,0x09FA,0x09D9,0x09D9,0x09FA,0x01D9,0x01D9,0x09FA,0x01DA,0x01F9,0x09FA,0x01FA,0x01D9,0x01FA,0x09FA,0x01D9,0x09D9,0x09D9,0x01D9,0x09D9,0x09D9,0x09D9,0x09F9,0x01D9,0x01D9,0x09F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x09DA,0x01D9,0x09D9,0x01D9,0x09D9,0x09D9,0x09D9,0x01D9,0x09D9,0x01D9,0x01D9,0x09FA,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09DA,0x09D9,0x09B9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01D9,0x09D9,0x09D9,0x01D9,0x01D9,0x09DA,0x01B9,0x09DA,0x09D9,0x09DA,0x09D9,0x09D9,0x09DA,0x01D9,0x01D9,0x01D9,0x01D9,0x09FA,0x09FA,0x01DA,0x01D9,0x09D9,0x09F9,0x09FA,0x09DA,0x09FA,0x09D9,0x09DA,0x09FA,0x09DA,0x09DA,0x09DA,0x09FA,0x09DA,0x09DA,0x09DA,0x09FA,0x09DA,0x09DA,0x09FA,0x09DA,0x09DA,0x09DA,0x09DA,0x09DA,0x09DA,0x09FA,0x09DA,0x09FA,0x09DA,0x09DA,0x09FA,0x09FA,0x09DA,0x09FA,0x09FA,0x09FA,0x09D9,0x09FA,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09F9,0x09F9,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09F9,0x09D9,0x09FA,0x09F9,0x09FA,0x09D9,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09DA,0x09DA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09DA,0x09DA,0x09DA,0x09DA,0x09DA,0x09DA,0x09FA,0x09DA,0x09FA,0x09D9,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09F9,0x11F9,0x11F9,0x19F8,0x19D7,0x19B5,0x2173,0x2151,0x2131,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x290E,0x28EE,0x30AC,0xABF9,0xD4DB,0xD49A,0xD49A,0xD499,0xDC99,0xD499,0xD499,0xD499,0xCC9A,0xCCDB,0xBC9B,0x72B4,0x310E,0x312F,0x3150,0x2951,0x3171,0x3171,0x3171,0x3192,0x3192,0x3992,0x3992,0x3992,0x3992,0x39B2,0x41B2,0x41B2,0x41B3,0x41B3,0x41B3,0x41B3,0x41B3,0x41B3,0x41B3,0x41B3,0x41B3,0x41B3,0x41B3,0x41B3,0x49B3,0x4192,0x41B3,0x49B3,0x49B3,0x51D3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x51D3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B2,0x5192,0x5192,0x5172,0x5171,0x5171,0x5150,0x5950,0x512F,0x6170,0x9AD5,0xB377,0xC3D9,0xCC19,0xD3F9,0xD3D8,0xD3B8,0xDBB7,0xDBB7,0xD397,0xD397,0xD397,0xD397,0xDB97,0xD397,0xD397,0xD397,0xD377,0xD376,0xD376,0xD376,0xD376,0xD376,0xD376,0xD356,0xD356,0xDB77,0xD356,0xD357,0xD357,0xD357,0xD357,0xD357,0xD357,0xD357,0xCB57,0xC357,0xBB58,0xAAF7,0x8213,0x6991,0x71D3,0x69B3,0x69B2,0x6192,0x6171,0x8A53,0xD47A,0xDC9A,0xDC99,0xDC78,0xDC58,0xDC57,0xDC57,0xDC57,0xD457,0xCC57,0xC477,0xB477,0x9C98,0x84F9,0x6D3A,0x5DBC,0x55FD,0x55FD,0x55FC,0x5D9C,0x6D1B,0x7C18,0xA3D8,0xAAF6,0xBA95,0xC254,0xC214,0xC213,0xCA14,0xCA34,0xC255,0xB215,0x91F4,0x7A35,0x6B37,0x751C,0x5D9C,0x559D,0x4D9C,0x457C,0x457D,0x4D3D,0x5D3D,0x85DF,0x8D7E,0x851C,0x94FC,0x9D1C,0xAD1C,0xB4FB,0xBCFB,0xBCFB,0xC4FB,0xC4DA,0xC4DA,0xC4DA,0xCCBA,0xCCBA,0xCCBA,0xCCBA,0xCC9A,0xD49A,0xD49A,0xD499,0xD499,0xD499,0xD499,0xD499,0xD499,0xD499,0xD479,0xD479,0xD479,0xD478,0xD478,0xD478,0xD478,0xD478,0xD478,0xD458,0xDC78,0xDC78,0xDC78,0xDC78,0xDC98,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xD478,0xD457,0xD477,0xD477,0xD457,0xCC58,0xCC58,0xCC58,0xC478,0xC478,0xBC98,0xBC99,0xB499,0xAC99,0xAC58,0xA458,0xA438,0xA438,0xAC18,0xAC17,0xB418,0xBC38,0xCC58,0xCBF7,0xD3B7,0xD3B6,0xDBB6,0xDBB6,0xDBB7,0xDBB7,0xDBB8,0xD3D9,0xCBFC,0xABBD,0x3937,0x215A,0x197C,0x119D,0x119D,0x099D,0x117D,0x117D,0x217C,0x315B,0x4118,0x71BA,0x925A,0x9A59,0x81D7,0x79F6,0x6A78,0x631A,0x433A,0x33DC,0x245D,0x14DD,0x0D5E,0x05DE,0x065F,0x06DF,0x073F,0x077F,0x0FBF,0x07BF,0x07DF,0x07DF,0x079F,0x0FBF,0x077F,0x179F,0x1F7F,0x373E,0x56FF,0x865E,0x62B2,0x8A12,0xA9F3,0xB9B3,0xC193,0xC9B3,0xC973,0xC973,0xC993,0xC993,0xC9B3,0xC9B4,0xC1B3,0xB9D3,0xB1D4,0xAA35,0x89D4,0x58F1,0x5132,0x5172,0x4972,0x4192,0x4192,0x3972,0x3971,0x3971,0x3971,0x3151,0x3151,0x3151,0x3172,0x3172,0x2932,0x2132,0x2134,0x2196,0x19F8,0x09D9,0x01B9,0x01BA,0x01DA,0x01DA,0x01BA,0x01BA,0x01DA,0x01DA,0x01DA,0x01D9,0x09D9,0x09B8,0x09D8,0x11F7,0x1A17,0x1A37,0x2238,0x2238,0x2A58,0x2A38,0x2A38,0x3258,0x2A17,0x29F7,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A17,0x2A38,0x2A37,0x2A37,0x2A37,0x2A37,0x3237,0x3237,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x29F6,0x29F7,0x29F7,0x29F7,0x2A17,0x2A17,0x2217,0x2237,0x2217,0x21F6,0x19B5,0x1174,0x1133,0x10F2,0x1912,0x1911,0x2131,0x2131,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1930,0x1932,0x1132,0x1154,0x1155,0x19B7,0x11D7,0x19F8,0x11D7,0x0996,0x0975,0x0155,0x0995,0x11D6,0x19F7,0x1A18,0x1A38,0x2238,0x21F7,0x1994,0x1132,0x1111,0x1931,0x1930,0x2130,0x2130,0x2130,0x210F,0x212F,0x2150,0x2150,0x2130,0x2131,0x2152,0x2152,0x1932,0x1932,0x1933,0x1932,0x1932,0x1932,0x1931,0x1931,0x1952,0x1952,0x29D4,0x2193,0x1932,0x1931,0x1911,0x1931,0x2172,0x2193,0x2173,0x2172,0x2172,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x2151,0x1931,0x2193,0x1973,0x1952,0x1932,0x1112,0x1932,0x1932,0x1932,0x1952,0x2193,0x2152,0x1931,0x2152,0x1952,0x1953,0x1953,0x1132,0x1132,0x1112,0x1111,0x1111,0x1932,0x1973,0x2194,0x2194,0x2173,0x2131,0x2110,0x18F0,0x18F0,0x2193,0x2194,0x2173,0x1932,0x1911,0x18F0,0x1911,0x2152,0x21B4,0x2194,0x1994,0x1974,0x1953,0x1132,0x1112,0x1952,0x2194,0x2193,0x2173,0x1931,0x1910,0x1910,0x1930,0x1930,0x1930,0x1930,0x1931,0x2152,0x2193,0x1952,0x1912,0x1932,0x1932,0x1931,0x1911,0x1911,0x1911,0x1910,0x2151,0x2992,0x2150,0x1910,0x1910,0x1930,0x1931,0x1932,0x21B4,0x29F5,0x29D5,0x1953,0x1932,0x1932,0x1932,0x1112,0x2193,0x29B4,0x1932,0x1931,0x1931,0x1931,0x1931,0x1932,0x31D4,0x2173,0x1911,0x1931,0x2152,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2930,0x2930,0x2930, + 0x292F,0x290F,0x210F,0x2110,0x212F,0x212F,0x210F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2910,0x210F,0x290F,0x210F,0x2130,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2151,0x2131,0x2131,0x2131,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1910,0x2131,0x2130,0x2130,0x2110,0x2130,0x210F,0x2110,0x2130,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x210F,0x2910,0x2910,0x290F,0x2930,0x290F,0x290F,0x2930,0x212F,0x290F,0x290F,0x210F,0x212F,0x210F,0x2130,0x2130,0x210F,0x212F,0x292F,0x212F,0x212F,0x2930,0x290F,0x290F,0x292F,0x210F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2131,0x2131,0x1931,0x1132,0x1154,0x1195,0x11B7,0x11F8,0x09F9,0x09F9,0x09F9,0x09FA,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01B9,0x09D9,0x09D9,0x01D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09FA,0x09F9,0x09D9,0x09F9,0x09F9,0x09D9,0x09FA,0x09F9,0x09D9,0x09F9,0x09F9,0x09D9,0x09D9,0x09F9,0x09F9,0x09F9,0x09D9,0x09F9,0x09F9,0x09D9,0x09FA,0x09F9,0x09D9,0x09D9,0x09F9,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x09D9,0x09D9,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09B9,0x09B9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x09D9,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x11F9,0x09F9,0x11F9,0x09F9,0x09F9,0x09F9,0x09D9,0x09FA,0x09DA,0x09F9,0x09F9,0x09FA,0x09FA,0x09FA,0x09FA,0x09D9,0x09F9,0x09F9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09D9,0x09F9,0x09D9,0x09FA,0x09FA,0x09F9,0x09F9,0x09FA,0x09FA,0x09F9,0x09F9,0x09F9,0x09F9,0x09D9,0x09D9,0x09F9,0x09D9,0x09D9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x11F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09FA,0x09F9,0x09FA,0x09F9,0x09F9,0x09FA,0x09FA,0x09FA,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09D9,0x09F9,0x09FA,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09D9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09FA,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x09F9,0x11FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09FA,0x09D9,0x09FA,0x09FA,0x09FA,0x09F9,0x09F9,0x09FA,0x09D9,0x09FA,0x09F9,0x09F9,0x09FA,0x09F9,0x09F9,0x11FA,0x11FA,0x11FA,0x11F9,0x11F9,0x11F9,0x11F8,0x19F8,0x19D6,0x1994,0x1952,0x2131,0x2151,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x292F,0x28EE,0x28CD,0x7AD4,0xD4FC,0xD4BB,0xDCBA,0xDCBA,0xDCBA,0xD4BA,0xD4BA,0xD4BA,0xCCDB,0xCCFC,0x82F5,0x496F,0x310E,0x292F,0x2950,0x3171,0x3171,0x3171,0x3171,0x3192,0x3171,0x3992,0x3992,0x3992,0x39B2,0x3992,0x3992,0x3992,0x4192,0x41B2,0x41B2,0x41B2,0x41B3,0x41B3,0x41B3,0x41B3,0x41B2,0x41B2,0x4192,0x41B3,0x41B3,0x41B2,0x41B3,0x41B3,0x4192,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x51B3,0x51B3,0x51B3,0x51B2,0x5192,0x5192,0x5192,0x5192,0x5192,0x5172,0x5172,0x5171,0x5151,0x5150,0x592F,0x6990,0x79D1,0xA2D5,0xC3D9,0xDC3A,0xD3F9,0xD3D8,0xD3B8,0xD3B8,0xD398,0xD397,0xD397,0xD397,0xD397,0xD377,0xD377,0xD397,0xD397,0xD377,0xD397,0xD397,0xD377,0xD377,0xDB97,0xDB97,0xDB97,0xDB97,0xD377,0xD398,0xD398,0xD378,0xCB77,0xCB77,0xC398,0xB317,0x79D2,0x6991,0x6171,0x61B2,0x61D3,0x69B3,0x61B2,0x6191,0x6150,0xB397,0xD459,0xDC79,0xDC78,0xDC58,0xDC58,0xDC58,0xDC37,0xDC37,0xD457,0xCC37,0xC457,0xAC57,0x9478,0x74F9,0x657B,0x5DDC,0x55FD,0x561D,0x55DC,0x5D9C,0x751B,0x8418,0x9B97,0xAAD6,0xBA75,0xC234,0xC214,0xC9F3,0xC9F3,0xCA14,0xC215,0xBA15,0xA1F4,0x81F5,0x6A95,0x74BB,0x653C,0x5D7C,0x5D9D,0x5D7D,0x553C,0x5CFC,0x6CDC,0x851C,0x9D3D,0xA51C,0xA4DB,0xB4FB,0xB4DB,0xBCDA,0xBCDA,0xC4DA,0xC4DA,0xCCDA,0xCCDA,0xCCBA,0xCCBA,0xCCBA,0xD4BA,0xD4BA,0xD49A,0xD49A,0xD499,0xD499,0xD499,0xD499,0xD499,0xD499,0xD499,0xDC99,0xDC99,0xDC99,0xDC99,0xDC79,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC58,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xD457,0xD437,0xD437,0xD437,0xD437,0xCC37,0xCC37,0xCC57,0xC457,0xC478,0xC458,0xBC58,0xBC38,0xBBF8,0xBBF8,0xBBD7,0xBBD7,0xC3D7,0xC3D7,0xC3F7,0xD418,0xD3D7,0xD3B6,0xD396,0xDB96,0xDB96,0xDB96,0xDBB7,0xDBB7,0xD3B9,0xD3FA,0xC43E,0x4978,0x2139,0x197B,0x117C,0x097D,0x099D,0x097D,0x117D,0x197D,0x295B,0x3919,0x619A,0x925B,0x9A59,0x81D7,0x71D7,0x6A78,0x631A,0x4B1A,0x339B,0x2C5D,0x14BD,0x0D5E,0x05BE,0x065F,0x06BF,0x073F,0x075F,0x0FBF,0x07BF,0x07DF,0x07DF,0x07BF,0x079F,0x0F9F,0x179F,0x1F9F,0x2F3E,0x4EFE,0x86BF,0x62F3,0x8212,0xA1F3,0xB1B3,0xC1B3,0xC993,0xC993,0xC993,0xC993,0xC993,0xC993,0xC9B4,0xC1D4,0xC1F4,0xB1D4,0xAA35,0x89D4,0x58F1,0x5132,0x5173,0x5192,0x4172,0x4172,0x3971,0x3971,0x3972,0x3971,0x3951,0x3971,0x3131,0x3172,0x3172,0x2912,0x2132,0x2134,0x2196,0x19D8,0x09B8,0x09B9,0x09DA,0x01DA,0x01BA,0x01BA,0x01BA,0x01DA,0x01DA,0x01D9,0x01B9,0x01B8,0x09B8,0x09B7,0x09D6,0x09B6,0x11B5,0x11B5,0x11B5,0x11B5,0x1995,0x1995,0x1995,0x1995,0x2195,0x1975,0x1995,0x1995,0x1995,0x1995,0x1995,0x1995,0x19B5,0x1995,0x1995,0x1994,0x1995,0x1995,0x1995,0x19B5,0x19B5,0x1995,0x1995,0x19B5,0x1995,0x1994,0x1995,0x1995,0x1995,0x1995,0x1994,0x1994,0x1974,0x1974,0x1995,0x1975,0x1995,0x1995,0x19B6,0x2217,0x2238,0x2217,0x2217,0x21D6,0x1974,0x1953,0x1932,0x1911,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2930,0x2110,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x1931,0x1932,0x1133,0x1154,0x1176,0x19D7,0x11D7,0x11B7,0x0976,0x0155,0x0955,0x0955,0x0955,0x0975,0x09B6,0x11D7,0x1A18,0x2217,0x19D6,0x1153,0x1132,0x1931,0x2151,0x2151,0x2130,0x2130,0x210F,0x212F,0x2950,0x2130,0x2130,0x2131,0x2131,0x2132,0x2153,0x2173,0x1933,0x1932,0x1932,0x1952,0x1931,0x1952,0x1952,0x1132,0x21B4,0x21B3,0x1952,0x1931,0x1931,0x1931,0x1932,0x1972,0x2172,0x2152,0x2172,0x2131,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1931,0x2193,0x1973,0x1112,0x1112,0x1912,0x1112,0x1932,0x1952,0x1973,0x2193,0x1931,0x1911,0x1932,0x1952,0x1953,0x1953,0x1974,0x1133,0x1932,0x1112,0x1912,0x1932,0x1953,0x1994,0x1974,0x1953,0x2152,0x1910,0x18F0,0x1911,0x2173,0x2173,0x1953,0x1952,0x1931,0x18F0,0x1911,0x2152,0x2193,0x21B4,0x2194,0x1973,0x1953,0x1132,0x1112,0x1933,0x1973,0x2173,0x2173,0x1931,0x1911,0x1931,0x2131,0x1930,0x2150,0x1930,0x1931,0x1951,0x2193,0x1953,0x1932,0x1932,0x1932,0x1911,0x1931,0x1911,0x1931,0x1910,0x2151,0x2992,0x2150,0x1930,0x2130,0x1931,0x1931,0x1932,0x1973,0x21B5,0x21B4,0x1953,0x1953,0x1132,0x1112,0x1112,0x2194,0x2194,0x1111,0x1931,0x1931,0x1911,0x1931,0x1932,0x29B4,0x2153,0x1931,0x1931,0x1931,0x1932,0x1932,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930, + 0x290F,0x210F,0x290F,0x210F,0x212F,0x212F,0x2110,0x2910,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x20EF,0x210F,0x290F,0x290F,0x2930,0x2130,0x210F,0x210F,0x2130,0x212F,0x2930,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x2111,0x2111,0x2111,0x2110,0x2131,0x2131,0x1930,0x1930,0x2130,0x2130,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x292F,0x290F,0x210F,0x210F,0x2930,0x2930,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x212F,0x212F,0x2930,0x210F,0x292F,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2930,0x2930,0x210F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2910,0x2910,0x2930,0x212F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2130,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2930,0x212F,0x212F,0x2130,0x2130,0x212F,0x292F,0x212F,0x2130,0x2930,0x2930,0x2131,0x2151,0x10F1,0x1112,0x1154,0x1196,0x11B7,0x11F8,0x09D8,0x09F9,0x09D9,0x01B9,0x01B9,0x01B8,0x01B8,0x01B8,0x11F9,0x11F9,0x09F9,0x11F9,0x11F9,0x09D9,0x11F9,0x11F9,0x1219,0x1219,0x1219,0x11F9,0x11F9,0x1219,0x1219,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x09D8,0x11F9,0x09D8,0x11F9,0x09D8,0x11F9,0x11D9,0x11D9,0x11F9,0x11F9,0x11F9,0x11F9,0x09F9,0x09F9,0x09F9,0x09F9,0x11F9,0x11F9,0x09F9,0x09D9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11D9,0x11D9,0x11F9,0x11D9,0x11F9,0x11F9,0x11D8,0x11F9,0x09F9,0x09F9,0x0A19,0x09F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11D9,0x11F9,0x1219,0x11F9,0x11F9,0x1219,0x1219,0x11F9,0x11F9,0x11F9,0x11F9,0x1219,0x1219,0x11F9,0x11F9,0x11F9,0x11F9,0x1219,0x11F9,0x11F9,0x1219,0x11F9,0x11F9,0x1219,0x11F9,0x11F9,0x1219,0x11F9,0x11F9,0x1219,0x11F9,0x11F9,0x11F9,0x1219,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x09F8,0x11F8,0x11F9,0x11F9,0x11F9,0x11D8,0x11F8,0x11F9,0x11F8,0x11F9,0x11F9,0x11D9,0x11F9,0x11F9,0x11F9,0x11F9,0x09D9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11D9,0x11D9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x1219,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x1219,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11D9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F9,0x11F8,0x11F8,0x19F8,0x19D7,0x21B5,0x1953,0x1931,0x2131,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x290F,0x290E,0x30EE,0x496F,0xBC7B,0xD4BB,0xDCBB,0xDCBB,0xDCBA,0xD4BA,0xD4BA,0xD4BB,0xC49B,0x8B36,0x38ED,0x30EE,0x310F,0x3130,0x3150,0x3151,0x3171,0x3171,0x3171,0x3991,0x3992,0x3992,0x3992,0x3992,0x3992,0x4192,0x3992,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x41B2,0x41B2,0x41B2,0x49B3,0x41B3,0x41B2,0x49B3,0x41B3,0x49B3,0x41B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x4192,0x4993,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49B3,0x49D3,0x49B3,0x49B3,0x49B3,0x49B3,0x51B3,0x51B3,0x49B2,0x49B2,0x4992,0x4992,0x4992,0x4992,0x4992,0x4972,0x4972,0x5172,0x5171,0x5171,0x5151,0x5150,0x510F,0x50EF,0x590F,0x8213,0xA317,0xB378,0xC3B9,0xCBD9,0xCBD9,0xCBB8,0xCBB8,0xD3B8,0xD397,0xD397,0xD397,0xD397,0xD397,0xD397,0xD397,0xD398,0xD397,0xD398,0xD398,0xD398,0xD398,0xCB98,0xCB98,0xC398,0xBB78,0xB337,0x9AD6,0x79F2,0x6150,0x6171,0x5972,0x5992,0x59B2,0x61B3,0x61B3,0x6192,0x6171,0x71B1,0xCC39,0xDC59,0xDC79,0xDC78,0xDC58,0xE458,0xE458,0xE457,0xDC37,0xD457,0xCC37,0xB437,0xA458,0x8CB9,0x6D1A,0x5D9C,0x55DD,0x4DFD,0x4DFD,0x55DC,0x5D7C,0x751B,0x83D8,0x9B16,0xAA75,0xBA55,0xC234,0xCA34,0xCA14,0xC9F4,0xC9F4,0xC1D4,0xB1D4,0xA1F4,0x9235,0x7AB6,0x84BB,0x753C,0x6D5C,0x6D7D,0x6D7D,0x757D,0x7D3D,0x853D,0x9D3D,0xAD5D,0xAD1C,0xBD1C,0xBD1C,0xC4FB,0xC4FB,0xC4DB,0xCCDB,0xCCDB,0xCCDB,0xCCBA,0xD4BA,0xD4BA,0xD4BA,0xD4BA,0xD4BA,0xD4BA,0xD4BA,0xDCBA,0xD49A,0xDC99,0xDC99,0xD499,0xD499,0xDC99,0xDC99,0xDC99,0xDC99,0xDC99,0xDC99,0xDC99,0xDC98,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC78,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xD437,0xD437,0xD437,0xD437,0xD417,0xD437,0xD437,0xD437,0xCC37,0xCC37,0xCC37,0xCC37,0xCC17,0xC417,0xC417,0xC3F7,0xCBF7,0xCBF7,0xCBD7,0xCBD7,0xCBD7,0xD3F7,0xD3D7,0xD3B6,0xD396,0xD396,0xDB96,0xDB96,0xDBB7,0xDB97,0xDBB8,0xD3DA,0xCC1D,0x727A,0x3159,0x215B,0x117C,0x097D,0x097D,0x097D,0x117D,0x197D,0x297C,0x391A,0x5138,0x927B,0x925A,0x81F8,0x71F7,0x6A78,0x6B1A,0x4B1A,0x337B,0x241C,0x149D,0x0D1E,0x05BE,0x065F,0x06BF,0x071F,0x075F,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07BF,0x079F,0x0F9F,0x17BF,0x177F,0x2F5F,0x46FE,0x86FF,0x6354,0x71D1,0x99F2,0xB1D3,0xC1D4,0xC9B3,0xC993,0xC993,0xC993,0xC993,0xC993,0xC993,0xC1B3,0xB9D3,0xB9F4,0xB235,0x91F4,0x58F1,0x5111,0x5172,0x4992,0x4992,0x4171,0x3971,0x3971,0x3971,0x3971,0x3951,0x3151,0x3151,0x3152,0x3172,0x2932,0x2132,0x2133,0x2196,0x19F8,0x11F9,0x09B9,0x09DA,0x01DA,0x09FA,0x01BA,0x01BA,0x01BA,0x09DA,0x09D9,0x09D9,0x11F9,0x11D8,0x11D7,0x0975,0x0954,0x0933,0x0933,0x0933,0x0932,0x1133,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1113,0x1112,0x1113,0x1133,0x1133,0x1133,0x1133,0x1112,0x1132,0x1112,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1112,0x10F2,0x1132,0x1112,0x1132,0x1112,0x1133,0x1113,0x08F2,0x0913,0x0933,0x1154,0x19D6,0x21F7,0x2217,0x21F6,0x1995,0x1153,0x1933,0x1911,0x2111,0x2131,0x2931,0x2930,0x2110,0x2110,0x2930,0x2930,0x2910,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1132,0x1154,0x1155,0x1196,0x11B7,0x11B7,0x1197,0x0976,0x0955,0x0934,0x0934,0x0955,0x0975,0x0996,0x11D7,0x19F7,0x21F7,0x1174,0x1112,0x1932,0x2152,0x2151,0x2130,0x2130,0x210F,0x2130,0x2950,0x2130,0x2110,0x2110,0x2131,0x1932,0x2153,0x2173,0x2174,0x2174,0x2173,0x1932,0x1932,0x1932,0x1952,0x1132,0x1993,0x2193,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1952,0x2173,0x2172,0x2152,0x2131,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x2173,0x1953,0x10F1,0x1112,0x1112,0x1932,0x1932,0x1952,0x29B4,0x1952,0x1911,0x1911,0x1911,0x1932,0x1132,0x1953,0x1953,0x1974,0x1953,0x1132,0x1112,0x1933,0x1973,0x1973,0x1974,0x1953,0x2131,0x1911,0x1910,0x2132,0x1953,0x1953,0x1973,0x1952,0x1931,0x1911,0x1911,0x2152,0x1973,0x1973,0x1994,0x1953,0x1153,0x1132,0x1973,0x1973,0x1953,0x1973,0x2173,0x1932,0x1931,0x2131,0x2151,0x1930,0x1930,0x1930,0x1931,0x1931,0x2173,0x1973,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1911,0x2151,0x2992,0x2130,0x1930,0x2151,0x1931,0x1931,0x1932,0x1953,0x1973,0x1973,0x1953,0x1973,0x1953,0x1113,0x1933,0x29B5,0x1953,0x1112,0x1931,0x1931,0x1931,0x1931,0x1952,0x2193,0x1952,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1952,0x2152,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110, + 0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x210F,0x2910,0x290F,0x292F,0x2910,0x2930,0x2110,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2130,0x210F,0x212F,0x2930,0x2930,0x2930,0x210F,0x290F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x210F,0x290F,0x2910,0x2910,0x2930,0x210F,0x2930,0x290F,0x292F,0x212F,0x2130,0x210F,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x2930,0x212F,0x210F,0x210F,0x2110,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x2930,0x212F,0x2130,0x2130,0x2131,0x2131,0x1911,0x1132,0x1954,0x1175,0x11B7,0x11D8,0x09F9,0x09F9,0x09D9,0x09D9,0x01B9,0x01B8,0x09B8,0x09D8,0x11F8,0x19F9,0x11D8,0x11D8,0x11D8,0x11D7,0x11D7,0x19D7,0x11B7,0x11D7,0x11B7,0x11B7,0x11B7,0x11B7,0x11B7,0x19D7,0x11B7,0x11B7,0x11B7,0x11B7,0x11B7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11B7,0x11B7,0x11B7,0x11B7,0x11B7,0x11B7,0x11D7,0x19D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x19D7,0x11D7,0x19D7,0x19D7,0x11D7,0x11B6,0x19D7,0x11D7,0x11D7,0x11B7,0x19B7,0x19B7,0x11B7,0x19B7,0x19D8,0x11B7,0x19D7,0x19D7,0x19F7,0x11D7,0x19F8,0x11F7,0x11D7,0x19D7,0x11D7,0x19D7,0x19D8,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x11D7,0x11D7,0x19D7,0x19B7,0x19D7,0x19D7,0x19B7,0x19B7,0x19D7,0x19D7,0x19B7,0x19D7,0x19D7,0x11B7,0x19D7,0x19D7,0x19B7,0x11B7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x11B7,0x19D7,0x19D7,0x19D7,0x19D7,0x11D7,0x11B7,0x11D7,0x19D7,0x11D7,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x19F7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x19F7,0x11D7,0x19F7,0x11D7,0x19F7,0x11D7,0x19F8,0x19D8,0x19D8,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x19D8,0x19D7,0x19D7,0x11D7,0x11D7,0x11D7,0x19D7,0x11D7,0x11D7,0x11D7,0x11D7,0x19D8,0x19D8,0x19D8,0x19D8,0x19D8,0x19D8,0x19D8,0x11D7,0x11D7,0x19D8,0x19F8,0x19F8,0x19F7,0x19D8,0x19D8,0x19F8,0x19F7,0x19D8,0x19F8,0x19F8,0x19F8,0x19F8,0x19D8,0x19D8,0x19D8,0x19D8,0x19D8,0x19F8,0x19F7,0x19D8,0x11D7,0x11D7,0x19D7,0x11D7,0x11D7,0x11D7,0x19D7,0x19D7,0x19D7,0x11D7,0x19D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x19D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x19D7,0x11D7,0x19D7,0x11D7,0x11D7,0x11D7,0x11D7,0x19D7,0x19D8,0x19D8,0x19D8,0x19F8,0x19D8,0x19F8,0x19F8,0x19F8,0x19D7,0x19D7,0x19D7,0x19D7,0x19D7,0x11D7,0x19D7,0x19D7,0x11D7,0x11D7,0x19D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x19D8,0x19D8,0x19D7,0x19D7,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F7,0x21F7,0x21D6,0x1994,0x1953,0x1932,0x2131,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x290F,0x28EE,0x288C,0x8B56,0xCCFC,0xDCDC,0xDCDB,0xDCDB,0xDCBB,0xD4BB,0xD4FC,0xABD8,0x494F,0x30CD,0x30EE,0x310F,0x3130,0x3150,0x3151,0x3151,0x3171,0x3171,0x3991,0x3971,0x3991,0x3991,0x3992,0x3992,0x3972,0x3992,0x4192,0x3992,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x41B2,0x41B2,0x41B2,0x41B2,0x41B2,0x41B3,0x41B2,0x41B2,0x41B2,0x41B2,0x4192,0x4192,0x4192,0x4192,0x41B2,0x49B2,0x49B2,0x49B2,0x49B2,0x49B3,0x49B2,0x49B2,0x49B2,0x49B2,0x49B2,0x49B2,0x49B2,0x49B2,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4972,0x4972,0x4972,0x4971,0x4951,0x5151,0x5130,0x5130,0x510F,0x592F,0x6970,0x71B1,0x8213,0x9AB5,0xAB37,0xC3D9,0xD41A,0xD3F9,0xCBD9,0xCBB8,0xCBB8,0xCB98,0xCBB8,0xCBD9,0xCBD9,0xD3F9,0xCBD9,0xC3B9,0xB337,0xA2B5,0x8A33,0x7191,0x7191,0x6150,0x5950,0x5971,0x5992,0x5992,0x5992,0x5992,0x59B3,0x59B3,0x59B2,0x61B2,0x6171,0xA336,0xDC7A,0xDC79,0xE499,0xE478,0xE458,0xE458,0xE458,0xE457,0xDC37,0xD437,0xC437,0xB438,0x9C78,0x84D9,0x6D5B,0x5DBC,0x55FD,0x4DFD,0x4DFD,0x55BC,0x657C,0x74FB,0x8377,0x9AD6,0xAA75,0xBA35,0xC234,0xCA35,0xCA14,0xC9F4,0xC1D3,0xC1D4,0xB1D4,0xA9F5,0x9A36,0x8AD7,0x8C5B,0x851D,0x855E,0x857E,0x8D9F,0x959F,0x9D7F,0x9CFD,0x9CBC,0xACFD,0xC55E,0xCD5E,0xCD3D,0xCD1D,0xCD1C,0xCCFC,0xCCDC,0xCCDB,0xCCDC,0xCCDB,0xD4DB,0xD4DB,0xD4BB,0xD4BB,0xD4BB,0xD4BB,0xD4BB,0xD4BA,0xD4BA,0xD4BA,0xD49A,0xD49A,0xD49A,0xD49A,0xD49A,0xD49A,0xD499,0xD499,0xDC99,0xDC99,0xDC99,0xDC99,0xDC99,0xDC99,0xDC79,0xDC78,0xDC78,0xE479,0xDC78,0xDC78,0xDC58,0xDC38,0xDC38,0xDC37,0xDC37,0xDC37,0xDC38,0xDC37,0xDC37,0xDC17,0xDC17,0xD417,0xD417,0xD417,0xD417,0xD417,0xD417,0xD417,0xD417,0xD417,0xD3F7,0xCBF7,0xCBF7,0xCBF7,0xCBF7,0xD3F7,0xD3D7,0xD3D7,0xD3D7,0xD3D7,0xD3D7,0xD3B7,0xD396,0xDB96,0xDB96,0xDB96,0xDB96,0xDBB7,0xDB97,0xDBB8,0xD3B9,0xCBFC,0x933C,0x4158,0x297A,0x197C,0x117D,0x097D,0x099D,0x117D,0x197D,0x215C,0x313A,0x4939,0x8A7C,0x927A,0x81F8,0x7A18,0x7299,0x62FA,0x4AFA,0x335B,0x2C3D,0x149D,0x0D1E,0x059E,0x065F,0x06BF,0x071F,0x075F,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07BF,0x07BF,0x0F9F,0x0F9F,0x179F,0x273E,0x3EFE,0x7EFF,0x73F7,0x69D1,0x9A13,0xB1F3,0xB9D3,0xC9D3,0xC193,0xC993,0xC9B4,0xC9B4,0xC993,0xC993,0xC1B3,0xC1D3,0xB1D4,0xB235,0x9215,0x6111,0x5111,0x5172,0x4972,0x4992,0x4172,0x3971,0x3951,0x3971,0x3951,0x3951,0x3151,0x3151,0x3152,0x3172,0x2932,0x2132,0x2153,0x2175,0x19D7,0x19F9,0x11D9,0x09DA,0x09DA,0x01DA,0x01BA,0x01BA,0x01B9,0x09B9,0x09D9,0x11F9,0x11F8,0x11B7,0x0995,0x0954,0x0953,0x1153,0x1132,0x1132,0x1132,0x1132,0x1932,0x1912,0x1932,0x1912,0x1932,0x1912,0x1912,0x1912,0x1912,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1932,0x1132,0x1132,0x1932,0x1131,0x1932,0x1932,0x1932,0x1932,0x1912,0x1912,0x1932,0x1932,0x1932,0x1912,0x1932,0x1912,0x1932,0x1912,0x1932,0x1933,0x1933,0x1113,0x1113,0x1133,0x1134,0x1995,0x21F6,0x21F6,0x21F6,0x21B5,0x1153,0x1112,0x1911,0x2111,0x2131,0x2131,0x2110,0x2910,0x2110,0x2930,0x2110,0x2910,0x2110,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x1931,0x1932,0x1954,0x1996,0x11B7,0x11B7,0x11B7,0x1196,0x0976,0x0955,0x0954,0x0955,0x0954,0x0975,0x0975,0x1196,0x19D7,0x19D6,0x1195,0x1133,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1932,0x1932,0x2173,0x1974,0x1973,0x1973,0x1932,0x1932,0x1932,0x1111,0x1111,0x2193,0x2193,0x1112,0x1952,0x1932,0x1132,0x1932,0x1932,0x1952,0x2193,0x2172,0x2172,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x2173,0x1953,0x1112,0x1932,0x1932,0x1132,0x1952,0x29B4,0x29D4,0x2152,0x1931,0x1931,0x1911,0x1932,0x1973,0x1974,0x1953,0x1973,0x1973,0x1953,0x1973,0x1973,0x1974,0x1994,0x1973,0x1932,0x1931,0x1910,0x1911,0x1931,0x2173,0x1973,0x1973,0x1972,0x1931,0x1910,0x1911,0x1952,0x2173,0x1974,0x1974,0x1133,0x1133,0x1953,0x2194,0x1974,0x1953,0x1973,0x2173,0x1932,0x1931,0x1931,0x2131,0x1930,0x1930,0x1930,0x1910,0x1931,0x2193,0x1973,0x1132,0x1932,0x1952,0x1931,0x1951,0x1931,0x1931,0x18F0,0x2151,0x2992,0x2131,0x2131,0x2131,0x1931,0x1931,0x1132,0x1973,0x2194,0x1973,0x1973,0x1973,0x1133,0x1133,0x1934,0x2195,0x1953,0x1912,0x1911,0x1931,0x1952,0x1932,0x1972,0x2173,0x1952,0x1932,0x1932,0x1932,0x1932,0x1132,0x1132,0x1932,0x1931,0x1931,0x2131,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130, + 0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x2930,0x2930,0x210F,0x292F,0x2930,0x210F,0x2930,0x2110,0x2910,0x2910,0x2930,0x212F,0x212F,0x2930,0x2110,0x2910,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2130,0x212F,0x2130,0x2110,0x2130,0x210F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x2930,0x2930,0x210F,0x290F,0x290F,0x212F,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x210F,0x2130,0x2930,0x2930,0x212F,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2930,0x2910,0x2910,0x210F,0x212F,0x292F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x2930,0x2930,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2910,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x2131,0x1911,0x1112,0x1133,0x1175,0x1197,0x11B8,0x09D8,0x09F9,0x09F9,0x09D9,0x09D9,0x09D8,0x09B8,0x09B8,0x11D8,0x11B7,0x1175,0x0934,0x0913,0x00F2,0x1134,0x1113,0x0912,0x1112,0x10F2,0x10F2,0x1112,0x0912,0x1133,0x1112,0x1112,0x1112,0x1112,0x10F2,0x1112,0x1112,0x1133,0x1112,0x1132,0x1112,0x1112,0x1112,0x1133,0x1113,0x1133,0x1133,0x1133,0x1133,0x1113,0x1113,0x1113,0x1113,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x0912,0x1112,0x0912,0x0912,0x1113,0x1113,0x1133,0x1133,0x08F2,0x08F2,0x10F3,0x10F2,0x1133,0x1133,0x0912,0x0912,0x08F2,0x08F2,0x1113,0x1112,0x1113,0x1112,0x10F2,0x1112,0x1112,0x10F2,0x1112,0x1112,0x10F2,0x10F2,0x10F2,0x1112,0x10F2,0x10F2,0x10F2,0x10F2,0x10F2,0x10F2,0x10F2,0x1112,0x1113,0x10F2,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1133,0x1112,0x1112,0x1112,0x1112,0x1113,0x1112,0x1113,0x1113,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1133,0x1133,0x1153,0x1153,0x1153,0x1133,0x1133,0x1133,0x1133,0x1132,0x1132,0x0932,0x0912,0x0912,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x0913,0x0933,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1153,0x1153,0x1153,0x1153,0x1154,0x1154,0x1154,0x1153,0x1153,0x1153,0x1153,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1154,0x1154,0x1154,0x1174,0x1154,0x1154,0x1154,0x1154,0x1154,0x1154,0x1154,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1133,0x1133,0x1153,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x0933,0x1133,0x0933,0x0933,0x1133,0x1133,0x1132,0x1132,0x1132,0x1932,0x1932,0x2131,0x2131,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x290F,0x290E,0x28ED,0x5190,0xCCDC,0xD4DB,0xD4DB,0xDCDB,0xD4BB,0xD4BB,0xC4BB,0x8AF5,0x286B,0x30EE,0x310F,0x310F,0x3130,0x3150,0x3151,0x3171,0x3171,0x3171,0x3971,0x3971,0x3971,0x3971,0x3991,0x3991,0x3992,0x3992,0x3992,0x3992,0x3992,0x3992,0x4192,0x4192,0x4192,0x3992,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4992,0x4192,0x4192,0x4992,0x4992,0x4992,0x4992,0x4992,0x4993,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4972,0x4972,0x4972,0x4951,0x5151,0x5150,0x5150,0x5150,0x5130,0x510F,0x490F,0x48EE,0x48EE,0x592F,0x7A12,0x8A74,0x9AD6,0xA2F6,0x9AF6,0x92B5,0x8233,0x6991,0x6150,0x5910,0x510F,0x5110,0x5950,0x5971,0x5971,0x5971,0x5992,0x5192,0x59B2,0x59B3,0x59D3,0x59D3,0x59B3,0x5992,0x5992,0x5991,0x6191,0xBBF9,0xDC7A,0xE499,0xE499,0xE478,0xE438,0xE437,0xE437,0xDC37,0xD417,0xCC17,0xBBF7,0xAC17,0x9478,0x7D1A,0x657C,0x55DD,0x4DFD,0x4DFD,0x4DDD,0x55BC,0x657C,0x749A,0x8316,0x9A95,0xAA55,0xBA35,0xC214,0xCA14,0xC9F4,0xC9F4,0xC1D4,0xC1D4,0xB9F4,0xAA15,0x9A56,0x8AB7,0x8BBA,0x83FB,0x5AF7,0x5295,0x4213,0x41F3,0x49F3,0x49F3,0x51D3,0x51D2,0x5191,0x61F2,0x7295,0x82F6,0x9B98,0xABF9,0xABFA,0xAC1A,0xABFA,0xB3FA,0xABD9,0xB3F9,0xB3F9,0xB3F9,0xBC19,0xBC3A,0xC45A,0xC45A,0xC45A,0xC45A,0xCC7A,0xCC7B,0xCC7A,0xD49B,0xD49B,0xD4BB,0xD4BB,0xDCDB,0xDCBB,0xDCBA,0xDC9A,0xDCBA,0xDC99,0xDC99,0xDC99,0xDC79,0xDC79,0xDC79,0xDC78,0xDC78,0xDC78,0xDC58,0xDC58,0xDC58,0xDC58,0xDC58,0xDC38,0xDC38,0xDC37,0xDC37,0xDC17,0xDC37,0xDC17,0xD417,0xD417,0xD417,0xD3F7,0xD3F7,0xD3F7,0xD3F7,0xD3F7,0xD3F7,0xD3F7,0xD3F7,0xD3D7,0xD3D7,0xD3D6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD396,0xDB96,0xD396,0xDB96,0xDB96,0xDB96,0xDB97,0xD397,0xD398,0xD3B9,0xCBDB,0xAB9D,0x59D9,0x295A,0x197C,0x117C,0x097D,0x097D,0x119D,0x199D,0x217C,0x313B,0x3919,0x7A3B,0x8A7B,0x7A18,0x7238,0x7299,0x62FA,0x4AFA,0x3B7B,0x2C1C,0x1C9D,0x0D1E,0x059E,0x063F,0x06BF,0x071F,0x075F,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x0F9F,0x179F,0x275F,0x3EDE,0x76BF,0x84DA,0x6211,0x9A74,0xB213,0xB9D3,0xC1B3,0xC9B4,0xC993,0xC994,0xC993,0xC993,0xC9B4,0xC1B3,0xC1B3,0xB1B4,0xAA15,0x9A35,0x6131,0x5131,0x5172,0x5192,0x4172,0x4172,0x3972,0x3972,0x3951,0x3951,0x3951,0x3151,0x3172,0x3172,0x3152,0x2952,0x2932,0x2133,0x2175,0x1976,0x11B7,0x11F9,0x09D9,0x09FA,0x09FA,0x09DA,0x01D9,0x09F9,0x1219,0x11D8,0x11B7,0x0996,0x0975,0x1154,0x1174,0x1153,0x1132,0x1932,0x1932,0x1952,0x1931,0x2131,0x2131,0x1911,0x1911,0x2132,0x1911,0x2132,0x1932,0x1912,0x1912,0x1912,0x1911,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x2152,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x2152,0x2131,0x2131,0x2132,0x2132,0x1932,0x1952,0x1932,0x1132,0x1112,0x1113,0x1133,0x1974,0x19D6,0x21F7,0x21D6,0x21D6,0x1153,0x1112,0x1912,0x2131,0x2131,0x2131,0x2110,0x20F0,0x2110,0x2110,0x2110,0x2110,0x212F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2131,0x1912,0x1133,0x19D6,0x19F8,0x11B7,0x11B7,0x0135,0x0955,0x0975,0x0974,0x1195,0x0974,0x0975,0x0975,0x1196,0x11B6,0x11B6,0x1174,0x1133,0x1932,0x1911,0x1910,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1912,0x1932,0x21B4,0x21D5,0x2194,0x1993,0x1952,0x1931,0x1111,0x1111,0x1111,0x21D4,0x21B4,0x1932,0x1952,0x1932,0x1932,0x1112,0x1112,0x1932,0x2173,0x2172,0x2151,0x2151,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x2173,0x29D4,0x1973,0x1973,0x21B4,0x21B4,0x29D4,0x29B4,0x2152,0x1932,0x2152,0x1911,0x1911,0x1911,0x21B4,0x1974,0x1974,0x1974,0x2194,0x2173,0x2193,0x21B4,0x1974,0x1973,0x1953,0x1932,0x1931,0x1911,0x1910,0x2152,0x2173,0x1973,0x1973,0x1972,0x1931,0x10F0,0x1931,0x2172,0x2173,0x1973,0x1953,0x1132,0x1953,0x1953,0x1994,0x1994,0x1973,0x1973,0x1953,0x1932,0x1931,0x1931,0x1910,0x1910,0x2130,0x2130,0x1910,0x1931,0x29B4,0x2194,0x1132,0x1932,0x1131,0x1931,0x1951,0x1931,0x1931,0x1910,0x2972,0x31D3,0x2151,0x1930,0x1910,0x1911,0x1932,0x1952,0x1973,0x21B4,0x1974,0x1933,0x1953,0x1133,0x1934,0x1975,0x1954,0x1933,0x1932,0x1931,0x1951,0x1951,0x1952,0x2193,0x2193,0x1953,0x1932,0x1952,0x1932,0x1952,0x1973,0x1993,0x2193,0x1973,0x2172,0x2151,0x2131,0x2130,0x2130,0x1910,0x2130,0x2110, + 0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x2110,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2930,0x210F,0x2930,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x212F,0x2110,0x2110,0x2130,0x212F,0x212F,0x210F,0x210F,0x2130,0x210F,0x290F,0x290F,0x290F,0x210F,0x2110,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x2130,0x212F,0x2930,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x212F,0x2130,0x210F,0x212F,0x2930,0x2130,0x2130,0x210F,0x2930,0x2110,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2910,0x2930,0x212F,0x212F,0x210F,0x290F,0x290F,0x2910,0x2110,0x2910,0x2910,0x210F,0x290F,0x2930,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2130,0x210F,0x212F,0x212F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2110,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2111,0x1911,0x1112,0x1133,0x1175,0x1196,0x11B8,0x09D8,0x09D9,0x09D9,0x09D9,0x09D9,0x09D8,0x09D8,0x11D8,0x11B7,0x0975,0x0913,0x08F2,0x08F2,0x1112,0x1112,0x1912,0x1912,0x1911,0x18F1,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x18F1,0x1911,0x18F1,0x1911,0x1911,0x18F1,0x18F1,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x18F1,0x1912,0x1912,0x18F1,0x18F2,0x18F1,0x18F1,0x1911,0x1911,0x1912,0x1911,0x1911,0x1911,0x18F1,0x1911,0x1911,0x1911,0x1911,0x18F1,0x18F1,0x1911,0x2131,0x1911,0x1911,0x18F1,0x18F1,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x18F1,0x18F1,0x1912,0x1911,0x18F1,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1912,0x1911,0x1911,0x2131,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1131,0x1131,0x1131,0x1132,0x1132,0x1932,0x1932,0x1132,0x1132,0x1932,0x1932,0x1132,0x1132,0x1932,0x1132,0x1932,0x1932,0x1932,0x1132,0x1931,0x1931,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1952,0x1952,0x1932,0x1952,0x1952,0x1952,0x1952,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1931,0x1932,0x1932,0x1932,0x1131,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1132,0x1952,0x1932,0x1932,0x1131,0x1132,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1131,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x290F,0x28EE,0x30ED,0xA3F9,0xCCDC,0xD4DC,0xD4DC,0xD4DB,0xD4DB,0xD51D,0x6A52,0x30AD,0x30EE,0x30EF,0x310F,0x3130,0x3130,0x3151,0x3151,0x3171,0x3151,0x3171,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3992,0x3971,0x3992,0x3992,0x3992,0x3992,0x3992,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x49B2,0x4192,0x4992,0x4992,0x4192,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4972,0x4972,0x4992,0x4972,0x4971,0x4971,0x4971,0x4951,0x4951,0x4971,0x4951,0x4951,0x4950,0x4930,0x5130,0x5130,0x510F,0x510F,0x5130,0x5150,0x5151,0x5151,0x5171,0x5171,0x5171,0x5192,0x5192,0x5192,0x5192,0x51B2,0x51B2,0x51B3,0x51B3,0x59D3,0x59F4,0x59D4,0x59B3,0x59B2,0x5991,0x71D1,0xD47A,0xDC7A,0xE479,0xE478,0xDC38,0xDC37,0xDC17,0xDBF7,0xDBF7,0xD3F7,0xCBF7,0xB3F7,0xA418,0x8C79,0x7D1B,0x659C,0x55DD,0x4DFD,0x4DFD,0x4DDD,0x5DBD,0x655B,0x7C79,0x82F6,0xA275,0xB255,0xBA35,0xC214,0xC1F4,0xC1F4,0xC1D3,0xC1D3,0xC1F4,0xBA15,0xAA35,0x9A56,0x8A77,0x7AB7,0x6255,0x5A15,0x5A15,0x59F5,0x59F4,0x59F4,0x59F4,0x59F4,0x59D4,0x59D4,0x59D3,0x59B3,0x59B2,0x5992,0x5991,0x5991,0x5991,0x5991,0x5971,0x5971,0x5971,0x5970,0x5970,0x6191,0x6191,0x69B1,0x69D1,0x69D1,0x69D1,0x69F2,0x71F2,0x7212,0x7212,0x7A12,0x7A32,0x8253,0x8AB4,0xA336,0xB3B8,0xCC5A,0xDCDC,0xDCDB,0xDCBB,0xDC9A,0xDC9A,0xDC9A,0xDC79,0xDC79,0xDC79,0xDC79,0xDC78,0xDC58,0xDC58,0xDC58,0xDC58,0xDC38,0xDC37,0xDC37,0xDC37,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xD3F7,0xDBF7,0xDBF7,0xD3F7,0xD3D7,0xD3D7,0xD3D7,0xD3D7,0xD3D7,0xD3D7,0xD3D6,0xD3D6,0xD3B6,0xD3B6,0xDBB6,0xD396,0xD396,0xD396,0xDB96,0xDB96,0xDB96,0xDB96,0xD376,0xD377,0xD397,0xD399,0xCBBA,0xBBDD,0x725A,0x3159,0x195B,0x117C,0x097D,0x119D,0x119D,0x119D,0x197C,0x295B,0x3919,0x61BA,0x825B,0x7A19,0x7A59,0x72BA,0x62DA,0x4AFA,0x3B5B,0x2C1C,0x1C9D,0x0D1E,0x059E,0x065F,0x069F,0x071F,0x075F,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x0F9F,0x179F,0x275F,0x3EFE,0x66BF,0x95BD,0x5A31,0x9A94,0xA9F3,0xB9F3,0xB9B3,0xC1B3,0xC9B4,0xC973,0xC993,0xC9B4,0xC993,0xC193,0xC1D4,0xB9D4,0xB215,0x9215,0x6932,0x5932,0x4932,0x4992,0x4172,0x4192,0x4172,0x3972,0x3971,0x3951,0x3951,0x3972,0x3172,0x3131,0x3152,0x2952,0x2932,0x2132,0x2154,0x1975,0x1196,0x11D8,0x1219,0x09F9,0x09F9,0x09F9,0x09F9,0x11F9,0x11F8,0x11B7,0x1196,0x1175,0x1154,0x1153,0x1153,0x1132,0x1931,0x1931,0x1931,0x2131,0x2130,0x2131,0x2110,0x2131,0x2111,0x2111,0x2131,0x2111,0x2111,0x2111,0x2111,0x1911,0x2131,0x1931,0x1911,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2131,0x1910,0x1930,0x2131,0x2111,0x1910,0x2131,0x1910,0x1911,0x2111,0x2131,0x2110,0x2131,0x2111,0x2111,0x2131,0x2131,0x1932,0x1932,0x1932,0x1112,0x1112,0x1153,0x1974,0x19B5,0x21F6,0x21F6,0x19B5,0x1954,0x1112,0x1932,0x1931,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x290F,0x210F,0x210F,0x2110,0x2110,0x2131,0x1911,0x1133,0x1995,0x19F8,0x19D8,0x11B7,0x0976,0x0135,0x0954,0x0954,0x0974,0x0974,0x0975,0x0975,0x1196,0x11B6,0x19D6,0x1995,0x1953,0x1932,0x1911,0x1910,0x2110,0x2130,0x210F,0x210F,0x2110,0x2130,0x2131,0x2131,0x1911,0x1912,0x1932,0x1932,0x1973,0x21B4,0x2193,0x1952,0x1932,0x1932,0x1932,0x1932,0x21B3,0x21B4,0x1112,0x1932,0x1952,0x1932,0x1112,0x1932,0x1952,0x2173,0x2172,0x2172,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x2173,0x29D4,0x21B4,0x1973,0x2173,0x1952,0x1952,0x1952,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1973,0x1973,0x1973,0x1953,0x1952,0x1952,0x1973,0x2193,0x1973,0x1953,0x1932,0x1932,0x1931,0x1931,0x1910,0x2151,0x2173,0x2173,0x1973,0x1972,0x1911,0x10F0,0x1931,0x2172,0x2193,0x2193,0x1933,0x1112,0x1132,0x1953,0x1973,0x2194,0x21B4,0x2194,0x1953,0x1932,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x1911,0x29B4,0x2173,0x1932,0x1932,0x1951,0x1131,0x1951,0x1931,0x1931,0x18F0,0x2992,0x31B2,0x2151,0x1910,0x1910,0x1911,0x1911,0x1952,0x2194,0x21B4,0x1932,0x1112,0x1933,0x1933,0x1954,0x2175,0x2155,0x1953,0x1932,0x1910,0x1931,0x1931,0x1932,0x2193,0x21B4,0x1973,0x1932,0x1932,0x1932,0x1953,0x1993,0x21B4,0x29D4,0x21B4,0x21B3,0x2152,0x2131,0x2131,0x1930,0x2130,0x2130,0x2130, + 0x212F,0x210F,0x2930,0x210F,0x210F,0x212F,0x2930,0x2930,0x212F,0x210F,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x2930,0x212F,0x2930,0x290F,0x2910,0x2910,0x290F,0x2930,0x2930,0x210F,0x290F,0x2930,0x212F,0x2930,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x2110,0x210F,0x210F,0x290F,0x290F,0x212F,0x2930,0x2110,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x2930,0x2130,0x212F,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2930,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2910,0x2930,0x210F,0x290F,0x290F,0x292F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x2930,0x2910,0x2930,0x2930,0x2110,0x2130,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2111,0x1911,0x1932,0x1154,0x1175,0x11B7,0x09B8,0x11D9,0x09D9,0x09B9,0x09B8,0x09B8,0x09D8,0x09D8,0x19F8,0x11B6,0x1154,0x0913,0x1112,0x1953,0x1932,0x1932,0x1911,0x1911,0x2131,0x2131,0x2110,0x2110,0x1910,0x2110,0x2131,0x2131,0x2131,0x2110,0x1910,0x2110,0x2110,0x1910,0x1910,0x2130,0x2130,0x2131,0x1930,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1911,0x1910,0x2131,0x2131,0x2111,0x1910,0x18F0,0x1910,0x1910,0x2110,0x2130,0x2131,0x2131,0x1910,0x2131,0x2111,0x1911,0x2111,0x2111,0x2131,0x2111,0x1911,0x2111,0x2111,0x2131,0x2131,0x2111,0x2110,0x2131,0x2110,0x2131,0x2111,0x2111,0x2111,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2110,0x2111,0x2111,0x2131,0x2111,0x2131,0x2110,0x2110,0x2110,0x2111,0x2111,0x2111,0x2111,0x2111,0x2110,0x2111,0x2111,0x2111,0x2110,0x2111,0x2110,0x2110,0x2131,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x1930,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1952,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x1931,0x2131,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x1931,0x1931,0x1931,0x2151,0x1931,0x1931,0x1931,0x1931,0x1931,0x1951,0x1931,0x1931,0x1931,0x1931,0x1951,0x1931,0x1931,0x2131,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x1931,0x2131,0x1931,0x2151,0x1931,0x1931,0x1951,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2130,0x2130,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x290F,0x290E,0x28ED,0x4990,0xBCBB,0xCCDC,0xD4FC,0xD4DC,0xCCDC,0xC49B,0x61F1,0x30AD,0x30EE,0x310F,0x312F,0x3130,0x3150,0x3150,0x3150,0x3151,0x3171,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3992,0x3991,0x3992,0x3971,0x3992,0x3992,0x4192,0x4192,0x4192,0x3992,0x3992,0x3992,0x4192,0x4192,0x4192,0x4192,0x3972,0x4192,0x4192,0x4192,0x4172,0x4172,0x4192,0x4192,0x4192,0x4172,0x4172,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4172,0x4192,0x4192,0x4192,0x4172,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4971,0x4971,0x4971,0x4171,0x4171,0x4171,0x4971,0x4971,0x4971,0x4971,0x4951,0x4951,0x4971,0x4971,0x4971,0x4972,0x4972,0x4972,0x4972,0x4972,0x4992,0x5192,0x51B2,0x5192,0x51B2,0x51B3,0x51B3,0x51B3,0x51B3,0x59D3,0x59D3,0x59B3,0x59B2,0x5971,0x9AD5,0xDCBB,0xDC79,0xE458,0xE458,0xDC17,0xDC17,0xDBF7,0xDBD6,0xDBD7,0xD3F7,0xC3F7,0xABD7,0x9C18,0x8479,0x753B,0x5DBD,0x55FD,0x4DFD,0x4DFD,0x4DDD,0x5D9D,0x6D1B,0x7BF8,0x8AB5,0xA255,0xB235,0xBA35,0xC214,0xC1F4,0xC1F4,0xC1D3,0xC1D3,0xC1F4,0xBA15,0xAA36,0x9236,0x8235,0x6A15,0x6215,0x5A15,0x6215,0x6215,0x59F4,0x59F4,0x59F4,0x59F4,0x59D4,0x59D4,0x59D4,0x59D3,0x59D3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B2,0x61B2,0x59B2,0x59B2,0x59B2,0x59B2,0x59B2,0x5992,0x5992,0x5992,0x59B2,0x5992,0x5992,0x5992,0x5991,0x5991,0x5991,0x5991,0x5971,0x5950,0x5950,0x512F,0x594F,0x8294,0xA356,0xBC19,0xC43A,0xD47B,0xDCBB,0xDCBB,0xDCBA,0xDC9A,0xDC99,0xDC79,0xDC79,0xDC59,0xDC58,0xDC58,0xDC38,0xDC38,0xDC38,0xDC37,0xDC37,0xDC37,0xDC17,0xD3F7,0xDC17,0xDBF7,0xD3F7,0xD3F7,0xD3D7,0xD3D7,0xD3D6,0xDBD7,0xDBD7,0xDBD7,0xD3B6,0xD3B6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDB96,0xDB96,0xDB96,0xD376,0xD376,0xD376,0xD377,0xD397,0xD398,0xD3BA,0xC3DC,0x931C,0x3138,0x213A,0x117C,0x117D,0x099D,0x119D,0x119D,0x197C,0x295B,0x393A,0x5179,0x721A,0x7A19,0x7A59,0x72BA,0x62DA,0x4AFA,0x3B7B,0x2C1C,0x1C7D,0x0D1D,0x059E,0x063F,0x069F,0x071F,0x0F7F,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07BF,0x0FDF,0x0FBF,0x179F,0x1F5E,0x36FE,0x66BF,0x9E3F,0x62B2,0x92B4,0xA213,0xBA33,0xC1F3,0xC1B3,0xC193,0xC993,0xC9B3,0xC173,0xC193,0xC1B3,0xC1B3,0xB9F5,0xB235,0x9A35,0x6131,0x5111,0x5152,0x4972,0x4192,0x4172,0x4172,0x3971,0x3972,0x3971,0x3951,0x3972,0x3952,0x3152,0x3152,0x3172,0x2932,0x2932,0x2153,0x2174,0x1995,0x19F7,0x1A18,0x1A39,0x1A39,0x1A39,0x11F8,0x11B7,0x1196,0x1196,0x1175,0x1974,0x1953,0x1932,0x1932,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2130,0x2110,0x2111,0x2111,0x2111,0x2131,0x2111,0x2111,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2131,0x2110,0x2110,0x2131,0x2131,0x2131,0x1932,0x1912,0x1112,0x1933,0x1953,0x1995,0x19B5,0x19B6,0x21F6,0x21D6,0x1153,0x1112,0x1111,0x1932,0x2131,0x2131,0x2130,0x2110,0x2110,0x210F,0x2930,0x292F,0x290F,0x212F,0x2130,0x2131,0x2111,0x18F1,0x10F2,0x1975,0x21F8,0x19F8,0x19F8,0x0996,0x0955,0x0134,0x0133,0x0934,0x0134,0x0975,0x0996,0x11D7,0x19D7,0x19D6,0x1995,0x1953,0x1932,0x1931,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x2930,0x2131,0x2131,0x2132,0x1912,0x1912,0x1912,0x2173,0x2194,0x1973,0x1952,0x1952,0x1932,0x1931,0x1952,0x2193,0x21B3,0x1111,0x1111,0x1932,0x1912,0x1112,0x2173,0x2173,0x2152,0x2172,0x2151,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x2193,0x1973,0x1952,0x1932,0x1911,0x1931,0x1931,0x1931,0x1911,0x1910,0x2131,0x2130,0x1910,0x1911,0x2152,0x2173,0x1953,0x1932,0x1932,0x1932,0x1932,0x1952,0x1952,0x1953,0x1952,0x1931,0x1931,0x1931,0x1910,0x2131,0x2172,0x2173,0x2173,0x2152,0x1911,0x10F0,0x1931,0x2192,0x2193,0x2193,0x1932,0x1112,0x1932,0x1953,0x1973,0x2194,0x21B4,0x21B4,0x2193,0x1932,0x1952,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2131,0x2993,0x2194,0x1932,0x1952,0x1951,0x1931,0x1971,0x1951,0x1931,0x1910,0x2992,0x31B3,0x2151,0x2130,0x1910,0x1911,0x1911,0x2173,0x21B4,0x2194,0x1132,0x1112,0x1933,0x1933,0x1955,0x2196,0x29B6,0x2174,0x2152,0x1931,0x1910,0x1110,0x1931,0x1972,0x29D4,0x1953,0x1112,0x1112,0x1912,0x1912,0x1932,0x1953,0x1953,0x1952,0x1952,0x1931,0x1910,0x1910,0x1910,0x1910,0x2130,0x2110, + 0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2910,0x2910,0x210F,0x210F,0x2910,0x2910,0x2930,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2130,0x210F,0x2930,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x210F,0x2910,0x2110,0x2930,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x210F,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x2930,0x210F,0x2930,0x212F,0x2130,0x210F,0x2130,0x2110,0x2110,0x2930,0x290F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1911,0x1932,0x1153,0x1175,0x1196,0x09D8,0x09D8,0x09D9,0x09B9,0x09B9,0x09B9,0x09B8,0x11D8,0x11F8,0x19D7,0x1154,0x1113,0x1112,0x1911,0x1932,0x2132,0x2131,0x2131,0x2131,0x2110,0x2130,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2150,0x2151,0x2150,0x2130,0x2130,0x2130,0x2130,0x2110,0x1910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2111,0x2111,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2150,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x290F,0x28EE,0x28AC,0x8315,0xC4DC,0xCCFC,0xCCFC,0xCCDC,0xC4DC,0x59D1,0x30CD,0x30EE,0x310F,0x310F,0x312F,0x3130,0x3950,0x3950,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3972,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3992,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x4192,0x3972,0x3972,0x4172,0x4172,0x4172,0x4172,0x4172,0x4172,0x4172,0x4172,0x4172,0x4192,0x4172,0x4172,0x4172,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4992,0x4992,0x4992,0x4992,0x4972,0x4992,0x4992,0x4992,0x4992,0x4171,0x4172,0x4172,0x4171,0x4192,0x4171,0x4171,0x4971,0x4972,0x4972,0x4972,0x4992,0x4972,0x4972,0x4992,0x4972,0x4992,0x4992,0x4992,0x4992,0x49B2,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x5192,0x59B2,0x5950,0xC419,0xE4BA,0xE479,0xDC38,0xDC17,0xDC17,0xDBF7,0xDBF7,0xDBD6,0xDBD7,0xD3D7,0xC3D7,0xABF7,0x9418,0x7C79,0x6D3B,0x5DBD,0x4DFD,0x4DFD,0x4DFD,0x55DD,0x659D,0x74BB,0x7B77,0x9296,0xAA35,0xB235,0xBA14,0xC1F4,0xC1F3,0xC1D3,0xC1D3,0xC1D4,0xB9F4,0xB1F5,0xA215,0x89F5,0x79D5,0x69D4,0x61F5,0x59F5,0x59F5,0x5A15,0x59F4,0x59F5,0x59F4,0x59F4,0x59F4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59B3,0x59D4,0x59D3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x51B2,0x51B2,0x5993,0x5993,0x59B2,0x59B2,0x5992,0x5992,0x5992,0x5992,0x5992,0x5991,0x5971,0x5970,0x5950,0x69B1,0x71F2,0x79F1,0x92D5,0xB3B8,0xD49B,0xE4FC,0xDCBB,0xDC9A,0xDC7A,0xDC7A,0xDC79,0xDC59,0xDC59,0xDC38,0xDC18,0xDC18,0xDC18,0xDC17,0xDC17,0xDBF7,0xDBF7,0xDBF7,0xD3D7,0xD3D6,0xD3D6,0xD3D6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xD376,0xD376,0xD376,0xD377,0xD397,0xD398,0xD399,0xCBBB,0xAB9D,0x4158,0x213A,0x195B,0x119C,0x099D,0x11BD,0x119D,0x199C,0x217C,0x315A,0x4139,0x61DA,0x723A,0x7A7A,0x729A,0x62DA,0x4AFA,0x3B7B,0x2C1C,0x1C7C,0x151D,0x057E,0x063F,0x069F,0x071F,0x0F7F,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x0F9F,0x179F,0x275F,0x3F1F,0x5EBF,0x9E9F,0x62F3,0x8293,0xA233,0xB213,0xB9D3,0xB992,0xC193,0xC9B3,0xC9B3,0xC173,0xC993,0xC1B3,0xC1D4,0xB9D4,0xB215,0x9A15,0x6952,0x5111,0x5172,0x4992,0x4192,0x4172,0x4172,0x4172,0x3971,0x3951,0x3951,0x3952,0x3951,0x3151,0x3151,0x3151,0x2951,0x2952,0x2952,0x2153,0x1974,0x1974,0x1995,0x19B6,0x11B6,0x11B6,0x1195,0x1175,0x1975,0x1154,0x1974,0x1953,0x1112,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x2131,0x1931,0x1931,0x1932,0x1912,0x1933,0x1953,0x1994,0x19B5,0x21D6,0x21F6,0x21D6,0x1153,0x1112,0x1112,0x2132,0x2151,0x2130,0x2130,0x2110,0x2130,0x212F,0x2930,0x2930,0x2130,0x2130,0x2110,0x2111,0x18F1,0x10F2,0x1134,0x19D7,0x1A18,0x1A19,0x19F8,0x0996,0x0154,0x0134,0x0134,0x0134,0x0975,0x11D7,0x1A18,0x19F7,0x19D6,0x1974,0x1953,0x1952,0x2131,0x2131,0x2130,0x2930,0x210F,0x210F,0x210F,0x2110,0x2110,0x2131,0x2132,0x1912,0x1912,0x1112,0x1112,0x1132,0x1952,0x1952,0x1932,0x1932,0x1911,0x1931,0x2173,0x29B3,0x1111,0x1111,0x10F1,0x1112,0x1953,0x2173,0x2173,0x2172,0x2152,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x1931,0x2172,0x1952,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1930,0x1910,0x2130,0x2130,0x2110,0x2131,0x2172,0x2173,0x1952,0x1932,0x1911,0x1911,0x1911,0x1932,0x1972,0x1972,0x2173,0x1932,0x2151,0x1931,0x1910,0x2131,0x2172,0x2173,0x2173,0x2152,0x1911,0x10F0,0x2151,0x2192,0x2193,0x2193,0x1932,0x1912,0x1912,0x1932,0x1932,0x2173,0x2194,0x2194,0x2173,0x2152,0x2152,0x2131,0x2130,0x2110,0x2130,0x212F,0x2130,0x2130,0x2193,0x2993,0x1932,0x1932,0x1951,0x1930,0x1951,0x1951,0x1930,0x1910,0x2972,0x31B3,0x2131,0x2131,0x1931,0x1911,0x1931,0x1952,0x2194,0x2193,0x1112,0x1912,0x1932,0x1933,0x1954,0x29B6,0x29B6,0x2174,0x2152,0x1930,0x1930,0x1910,0x1951,0x1952,0x2193,0x2193,0x1132,0x1112,0x1932,0x1912,0x1132,0x1932,0x1952,0x1932,0x1931,0x1931,0x1931,0x1910,0x1910,0x1930,0x2130,0x2110, + 0x290F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x2910,0x210F,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2950,0x210F,0x2130,0x2930,0x2130,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2930,0x292F,0x210F,0x210F,0x212F,0x2930,0x210F,0x2930,0x2930,0x212F,0x212F,0x2930,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x2130,0x212F,0x210F,0x2930,0x2910,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2110,0x2930,0x210F,0x2110,0x2910,0x2910,0x290F,0x210F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x212F,0x212F,0x2930,0x212F,0x2930,0x2110,0x210F,0x210F,0x2110,0x2110,0x2130,0x2131,0x2131,0x1931,0x1111,0x1132,0x1133,0x1175,0x11D7,0x11F8,0x09D8,0x09D9,0x09D9,0x09D9,0x09B9,0x09D8,0x09B8,0x11D7,0x19D7,0x1175,0x1133,0x1112,0x10F1,0x1911,0x1911,0x2131,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x18EF,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2151,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x210F,0x2110,0x2110,0x210F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2150,0x2150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x290F,0x290E,0x28EE,0x392E,0xCD3D,0xCCFD,0xCCFC,0xC4BC,0xA3F9,0x496F,0x30AD,0x30EE,0x30EF,0x310F,0x312F,0x312F,0x3130,0x3950,0x3950,0x3950,0x3950,0x3971,0x3971,0x3951,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3972,0x3971,0x3971,0x3972,0x4192,0x4172,0x3972,0x3972,0x3971,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x4172,0x4172,0x4172,0x3972,0x3972,0x4172,0x4172,0x4172,0x4172,0x4172,0x4172,0x3972,0x4192,0x4172,0x4192,0x4172,0x4172,0x4192,0x4172,0x4172,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4192,0x4172,0x4192,0x4192,0x4192,0x4192,0x4192,0x4992,0x4192,0x4192,0x4992,0x4992,0x4192,0x4172,0x4171,0x4992,0x4172,0x4192,0x4192,0x4192,0x4192,0x4992,0x4972,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x49B2,0x49B3,0x49B3,0x51B3,0x51B3,0x4992,0x4992,0x5192,0x5992,0x69B1,0xDCDC,0xE49A,0xE459,0xDC38,0xE438,0xDC17,0xE3F7,0xE3F7,0xDBD6,0xD3B6,0xCBB6,0xBBB7,0xA3D7,0x8C18,0x7479,0x6D3C,0x5DBD,0x55FD,0x4DDD,0x4DDD,0x559C,0x6D5C,0x7C5A,0x8316,0x9A55,0xAA15,0xBA15,0xB9F4,0xC1F3,0xC1D3,0xC1F3,0xC1F4,0xC1F4,0xB9F5,0xAA15,0x99F5,0x81D4,0x71D4,0x69D4,0x61D5,0x59D4,0x59F4,0x59F4,0x59F4,0x59F4,0x59F4,0x59F4,0x59F4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59D3,0x59B3,0x59B3,0x59B3,0x59B3,0x59D3,0x59D3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B2,0x59B2,0x5992,0x59B2,0x5992,0x5991,0x5991,0x6191,0x5991,0x5970,0x5950,0x594F,0x8A94,0xAB77,0xC41A,0xCC3A,0xD47A,0xDC7A,0xDC59,0xDC39,0xDC38,0xDC38,0xDC18,0xDC18,0xDC18,0xDC18,0xDBF7,0xDBF7,0xD3F7,0xDBF7,0xDBD7,0xD3D7,0xDBD7,0xDBB6,0xD3B6,0xD396,0xDB96,0xDB96,0xDB96,0xDB96,0xDBB6,0xDB96,0xDB96,0xDB96,0xDB96,0xD376,0xD376,0xD376,0xDB97,0xDB97,0xD398,0xD399,0xCBBA,0xBBDD,0x51B9,0x2939,0x195B,0x117C,0x119D,0x119D,0x119D,0x119D,0x217C,0x295B,0x3919,0x59BA,0x725B,0x7A7A,0x72BA,0x62DA,0x4AB9,0x3B1A,0x2BDB,0x1C9D,0x0CFD,0x055E,0x061F,0x069F,0x0F1F,0x0F7F,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x0F9F,0x179F,0x1F5F,0x371F,0x5EBE,0x9EFF,0x6395,0x7252,0x9A12,0xAA13,0xB9D3,0xC193,0xC9B3,0xC9B3,0xC993,0xC173,0xC993,0xC193,0xC1B4,0xB9D4,0xB215,0x9A15,0x6932,0x5932,0x5152,0x4992,0x4992,0x4172,0x4172,0x4172,0x3972,0x3951,0x3951,0x3951,0x3951,0x3151,0x3131,0x3151,0x3131,0x2931,0x2931,0x2132,0x2132,0x1932,0x1953,0x1133,0x1933,0x1133,0x1953,0x1953,0x1933,0x1932,0x1932,0x1931,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x2131,0x2131,0x1931,0x1911,0x1932,0x1933,0x1153,0x1974,0x19D5,0x21F6,0x21F7,0x19B5,0x1153,0x1112,0x1112,0x1931,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2111,0x18F1,0x1912,0x1133,0x1996,0x19F8,0x1A18,0x1A39,0x1A18,0x0976,0x0155,0x0975,0x0996,0x11D7,0x11F8,0x1A18,0x19F7,0x1195,0x1154,0x1953,0x1932,0x2131,0x2131,0x2130,0x2130,0x2130,0x210F,0x2930,0x2110,0x2972,0x2172,0x2152,0x2152,0x2173,0x29D4,0x29B5,0x2194,0x2193,0x1932,0x1931,0x1911,0x1911,0x1911,0x2193,0x29D4,0x1932,0x2173,0x29D4,0x21B4,0x2173,0x2172,0x2193,0x2152,0x1931,0x2131,0x2131,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x2151,0x2172,0x1952,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1930,0x1910,0x2130,0x2130,0x2131,0x1931,0x2172,0x2193,0x1952,0x1932,0x1931,0x1911,0x1931,0x1931,0x1952,0x1952,0x2173,0x2152,0x2172,0x1930,0x1910,0x1931,0x2172,0x2173,0x2152,0x1952,0x1910,0x18F0,0x1931,0x2172,0x2193,0x2173,0x1912,0x1912,0x1911,0x1932,0x1932,0x2173,0x21B3,0x2193,0x2173,0x1952,0x2152,0x2131,0x2130,0x2130,0x210F,0x210F,0x2130,0x2131,0x2193,0x2173,0x1932,0x1931,0x1930,0x1930,0x1950,0x2151,0x1930,0x1910,0x2951,0x2972,0x2131,0x2110,0x2131,0x1911,0x1931,0x1932,0x2193,0x1972,0x1911,0x1911,0x1912,0x1933,0x2154,0x2175,0x29B6,0x2174,0x2172,0x1930,0x1910,0x1910,0x2151,0x1952,0x2193,0x2193,0x21B4,0x2193,0x2193,0x2173,0x2193,0x2193,0x21B4,0x2193,0x2173,0x2151,0x2151,0x2131,0x2131,0x2130,0x2130,0x2130, + 0x290F,0x210F,0x290F,0x210F,0x2930,0x212F,0x2930,0x2910,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2930,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x212F,0x212F,0x212F,0x2930,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x290F,0x290F,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x290F,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x292F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x2130,0x210F,0x2110,0x2130,0x2130,0x2131,0x2131,0x1911,0x1912,0x1133,0x1133,0x1175,0x11B6,0x11D7,0x09D8,0x09D8,0x09D8,0x01B9,0x09D9,0x09D8,0x09D8,0x11F8,0x19D7,0x1155,0x1133,0x10F2,0x10F1,0x1911,0x2131,0x2130,0x2131,0x2130,0x1910,0x2110,0x2110,0x2110,0x2130,0x2130,0x2930,0x2130,0x2130,0x2930,0x210F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2130,0x2110,0x2110,0x210F,0x210F,0x190F,0x2110,0x2130,0x2150,0x2150,0x2951,0x2951,0x2131,0x2951,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x212F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2950,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x2930,0x292F,0x292F,0x290F,0x290F,0x290E,0x310E,0x7B16,0xD57F,0xCD3D,0xC4FD,0x9BB8,0x410E,0x30CD,0x30EE,0x310F,0x310F,0x312F,0x312F,0x3130,0x3930,0x3950,0x3950,0x3950,0x3950,0x3950,0x3951,0x3951,0x3951,0x3151,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x3951,0x3972,0x3972,0x3972,0x3972,0x3972,0x4172,0x4172,0x3971,0x3972,0x3952,0x3972,0x3972,0x3972,0x3972,0x3972,0x3972,0x4172,0x4172,0x4172,0x4172,0x4172,0x4172,0x4172,0x4172,0x3972,0x4172,0x4172,0x3972,0x4172,0x4172,0x4172,0x4172,0x4192,0x4172,0x4172,0x4172,0x4172,0x4172,0x4172,0x4171,0x4172,0x4192,0x4192,0x4172,0x4172,0x4171,0x4172,0x4171,0x4192,0x4172,0x4172,0x4192,0x4192,0x4172,0x4172,0x4172,0x4192,0x4192,0x4172,0x4992,0x4972,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x49B2,0x49B3,0x49B3,0x49B2,0x4992,0x4992,0x5191,0x5971,0x8A94,0xE4DB,0xE479,0xDC38,0xDC17,0xE418,0xE3F7,0xE3F7,0xDBD7,0xDBB6,0xD3B6,0xC396,0xB3B7,0x9BB7,0x8C18,0x749A,0x653C,0x5DBD,0x55FD,0x4DDD,0x4DBD,0x5D7C,0x6D1C,0x7BD9,0x8A96,0xA235,0xB1F5,0xB9F4,0xC1F4,0xB9D3,0xC1D3,0xC1F3,0xC214,0xBA14,0xB215,0xA1F5,0x89B4,0x79B4,0x69B4,0x69D4,0x61D4,0x61F4,0x59F4,0x59F4,0x59F4,0x59F4,0x59D4,0x59F4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59B3,0x59B3,0x59D4,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59D3,0x51B3,0x51B3,0x51B3,0x51D3,0x51B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x5992,0x59B2,0x59B2,0x5992,0x5992,0x5992,0x59B2,0x5992,0x5992,0x6191,0x6170,0x6170,0x69B1,0x79F1,0x8232,0xB377,0xD45A,0xD45A,0xD459,0xD439,0xD418,0xD418,0xD418,0xDBF8,0xDC18,0xDBF7,0xDBF7,0xDBF7,0xDBD7,0xDBD7,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xD396,0xD396,0xD396,0xD376,0xD376,0xD376,0xD377,0xD377,0xD399,0xCBBA,0xBBDD,0x6A19,0x3138,0x217B,0x119C,0x119D,0x119D,0x119D,0x119D,0x197C,0x215B,0x311A,0x499A,0x727B,0x7A9B,0x72BB,0x62BA,0x4A79,0x3AFA,0x2BFC,0x1C9D,0x14DD,0x055E,0x0E3F,0x06BF,0x0F1F,0x0F5F,0x0F9F,0x0FBF,0x07DF,0x07DF,0x07BF,0x07BF,0x07BF,0x0FBF,0x179F,0x277F,0x371F,0x56DF,0x8EBF,0x7437,0x6A31,0x9A53,0xA1F2,0xB9F3,0xC1B3,0xC9B3,0xC9B3,0xC993,0xC993,0xC993,0xC1B3,0xC1D4,0xB9D4,0xB235,0x9A15,0x6952,0x5111,0x5152,0x4972,0x4992,0x4152,0x4172,0x3971,0x3971,0x3951,0x3951,0x3131,0x3951,0x3131,0x3131,0x3151,0x3130,0x2931,0x2931,0x2931,0x2131,0x2131,0x2131,0x2132,0x1932,0x1912,0x1932,0x1932,0x1932,0x1931,0x1911,0x1910,0x2130,0x2130,0x2130,0x2130,0x212F,0x292F,0x212F,0x212F,0x292F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x290F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x1931,0x1911,0x1911,0x1932,0x1953,0x1153,0x1994,0x19B5,0x21F6,0x21F7,0x19B5,0x1153,0x1132,0x1111,0x1931,0x2151,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2111,0x1911,0x1912,0x1113,0x1174,0x19B6,0x1A18,0x1A18,0x1A18,0x11D7,0x11D7,0x11B6,0x11B7,0x11F8,0x11F8,0x19F7,0x11B6,0x1995,0x1153,0x1932,0x1931,0x1911,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x2151,0x2152,0x2152,0x1932,0x2173,0x29B4,0x2194,0x2173,0x2172,0x1931,0x1911,0x1911,0x1911,0x1911,0x2172,0x29B4,0x2172,0x2173,0x29B4,0x2193,0x1952,0x1952,0x2172,0x1931,0x2131,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2150,0x2130,0x2172,0x2172,0x1931,0x1931,0x1931,0x1931,0x2151,0x2131,0x2130,0x2130,0x2150,0x2150,0x2110,0x1910,0x2152,0x2993,0x2152,0x1931,0x2152,0x1931,0x1931,0x1931,0x1952,0x2152,0x2173,0x2152,0x2151,0x1910,0x2130,0x2130,0x2172,0x2172,0x2152,0x2152,0x1910,0x18F0,0x2131,0x2172,0x2172,0x2172,0x1932,0x1911,0x1931,0x1932,0x1932,0x1952,0x2173,0x21B3,0x2172,0x1931,0x2131,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x2130,0x2172,0x2173,0x1931,0x1931,0x1950,0x1930,0x1950,0x2150,0x1910,0x190F,0x2951,0x2972,0x2130,0x2110,0x2130,0x2131,0x1931,0x1952,0x2152,0x1952,0x1931,0x1931,0x1931,0x1912,0x1933,0x2154,0x2174,0x2173,0x2172,0x1930,0x1930,0x1930,0x1931,0x1931,0x1932,0x1932,0x29B3,0x29D4,0x2193,0x2172,0x2193,0x2193,0x2193,0x2172,0x2172,0x2152,0x2131,0x2131,0x2151,0x2130,0x2130,0x2130, + 0x290F,0x210F,0x210F,0x2910,0x212F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x292F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2930,0x210F,0x2930,0x2130,0x210F,0x2110,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x210F,0x2130,0x210F,0x2110,0x2130,0x2130,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x292F,0x212F,0x292F,0x292F,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x2930,0x212F,0x210F,0x212F,0x2930,0x2930,0x212F,0x212F,0x2930,0x290F,0x290F,0x290F,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x2930,0x2910,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x212F,0x292F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2930,0x2110,0x2930,0x2110,0x2130,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1912,0x1132,0x1154,0x1175,0x0996,0x09D7,0x09D8,0x09F8,0x01D8,0x01D8,0x01D9,0x09D9,0x11F9,0x11F8,0x19D7,0x1175,0x1113,0x1112,0x1911,0x1911,0x2152,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2930,0x2110,0x210F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x190F,0x18EF,0x1910,0x1910,0x2130,0x2130,0x2151,0x2930,0x2130,0x2130,0x210F,0x2930,0x212F,0x2130,0x2930,0x2130,0x2130,0x212F,0x210F,0x2930,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2110,0x2130,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x210F,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x2110,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2950,0x292F,0x292F,0x2950,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x290F,0x210F,0x292F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x310E,0x392F,0xAC7B,0xCD7F,0xCD3E,0x9398,0x414F,0x30ED,0x30EE,0x30EE,0x310F,0x310F,0x310F,0x3130,0x3130,0x3930,0x3930,0x3130,0x3150,0x3150,0x3150,0x3150,0x3951,0x3151,0x3951,0x3951,0x3150,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3971,0x3951,0x3951,0x3971,0x3951,0x3951,0x3951,0x3951,0x3951,0x3971,0x3951,0x3951,0x3951,0x3971,0x3951,0x3951,0x3971,0x3951,0x3951,0x3972,0x3972,0x3952,0x3952,0x3952,0x3951,0x3952,0x3972,0x3972,0x3952,0x3972,0x3952,0x3971,0x3971,0x3971,0x3972,0x3972,0x3972,0x3951,0x3971,0x3972,0x3972,0x3971,0x3971,0x3971,0x3971,0x3971,0x4172,0x3971,0x3971,0x3971,0x3971,0x3971,0x3971,0x4171,0x4171,0x4171,0x4171,0x4171,0x4171,0x4171,0x4171,0x4171,0x4171,0x4171,0x4171,0x4172,0x4172,0x4172,0x4172,0x4172,0x4172,0x4192,0x4172,0x4992,0x4972,0x4972,0x4172,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x49B2,0x49B2,0x4992,0x5191,0x5950,0xA336,0xE4BB,0xE479,0xDC18,0xDBF7,0xDBF7,0xDBD7,0xDBB6,0xDB96,0xDB96,0xD396,0xC376,0xB396,0x9BB7,0x83F8,0x749A,0x653C,0x5DBD,0x55FD,0x55DD,0x559D,0x655C,0x74BB,0x7B17,0x9255,0xAA15,0xB1F4,0xB9F4,0xC1F4,0xC1D3,0xC1D3,0xC1F4,0xC214,0xBA15,0xAA15,0x91D4,0x7994,0x7194,0x69B4,0x61B4,0x61D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59F4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x51D4,0x51D4,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x5992,0x5992,0x6192,0x6192,0x6192,0x6191,0x6191,0x6150,0x6150,0x7A12,0xA336,0xBBB8,0xC3F9,0xCBF9,0xCBF8,0xD3F8,0xD3F8,0xD3F7,0xD3F7,0xD3D7,0xDBD7,0xDBD7,0xDBD6,0xDBB6,0xDBB6,0xDB96,0xDB96,0xDB96,0xDB96,0xDB76,0xDB76,0xD376,0xDB96,0xDB96,0xDB96,0xD376,0xD376,0xD356,0xD356,0xD377,0xD398,0xD399,0xC3DC,0x82BB,0x4178,0x297A,0x199C,0x119C,0x11BD,0x11BD,0x119D,0x199D,0x217C,0x293A,0x3119,0x727C,0x7ABB,0x72BA,0x629A,0x4A79,0x3AFA,0x2BFC,0x249D,0x14FD,0x0D5E,0x0E3F,0x0EBF,0x0F1F,0x073F,0x0F9F,0x0FBF,0x0FDF,0x07DF,0x07BF,0x07BF,0x07BF,0x079F,0x179F,0x277F,0x2F1F,0x4EBE,0x7EBF,0x7498,0x6231,0x9253,0xA1D2,0xB9F3,0xC1B3,0xC1B3,0xC193,0xC993,0xC994,0xC994,0xC193,0xC1D4,0xB9D4,0xB235,0x9A15,0x6931,0x5111,0x5152,0x4972,0x4172,0x4152,0x3972,0x3972,0x3972,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3151,0x3151,0x3130,0x3131,0x2931,0x2931,0x2931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x2130,0x2110,0x2130,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x2131,0x1931,0x1911,0x1932,0x1953,0x1153,0x1974,0x21B6,0x2A17,0x2217,0x19B5,0x1153,0x1132,0x1132,0x1931,0x2131,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2131,0x1931,0x1931,0x1132,0x1133,0x1174,0x19B6,0x19F7,0x19F8,0x19F7,0x11D7,0x11B7,0x11D7,0x19F7,0x19F7,0x11B6,0x1195,0x1974,0x1933,0x1932,0x1931,0x2131,0x2110,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2131,0x2111,0x2131,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1911,0x1911,0x2131,0x2172,0x2152,0x1911,0x1911,0x1911,0x1931,0x2152,0x2172,0x2151,0x1910,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2171,0x1930,0x1931,0x1931,0x1930,0x2151,0x2151,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2131,0x2152,0x2152,0x1931,0x2131,0x1911,0x2131,0x2131,0x2131,0x2152,0x2152,0x2131,0x2151,0x2110,0x2110,0x2110,0x1910,0x2131,0x2152,0x2151,0x2131,0x2110,0x2110,0x2131,0x2151,0x2152,0x2131,0x1911,0x1931,0x1931,0x1931,0x1931,0x2172,0x2172,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x2152,0x2152,0x1911,0x1931,0x1930,0x1930,0x2150,0x2130,0x190F,0x190F,0x2130,0x2951,0x2110,0x2110,0x2110,0x1910,0x2131,0x2131,0x2152,0x1951,0x2152,0x1931,0x1911,0x1911,0x1912,0x1932,0x2153,0x2152,0x2151,0x2130,0x1930,0x2130,0x1930,0x2151,0x1931,0x1931,0x2152,0x2152,0x1931,0x1931,0x1931,0x1952,0x1952,0x1932,0x1931,0x1931,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F, + 0x290F,0x290F,0x2910,0x2110,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2910,0x2930,0x210F,0x290F,0x2930,0x210F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x212F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x210F,0x292F,0x290F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2930,0x2930,0x212F,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x290F,0x290F,0x2910,0x2110,0x2910,0x2110,0x210F,0x2930,0x2930,0x2930,0x290F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1912,0x1933,0x1154,0x0975,0x0996,0x09D7,0x09D8,0x09D8,0x01D8,0x01B8,0x01D8,0x09D9,0x09F9,0x11F8,0x11D7,0x1175,0x1113,0x10F2,0x1911,0x1911,0x2132,0x2131,0x2131,0x1931,0x2131,0x2131,0x1931,0x2131,0x1911,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1910,0x1931,0x1910,0x1910,0x18F0,0x18F0,0x1910,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x2930,0x210F,0x2930,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2130,0x212F,0x210F,0x210F,0x2930,0x210F,0x2930,0x2930,0x210F,0x2110,0x2110,0x210F,0x2930,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2930,0x2930,0x212F,0x2930,0x292F,0x292F,0x292F,0x2930,0x292F,0x292F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x2930,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x212F,0x210F,0x292F,0x212F,0x212F,0x292F,0x212F,0x212F,0x290F,0x290F,0x292F,0x2930,0x2930,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x310E,0x4170,0x9C3A,0x9BF9,0x7294,0x390E,0x30CD,0x30EE,0x30EE,0x30EE,0x310F,0x310F,0x310F,0x310F,0x3130,0x3930,0x3130,0x3130,0x3130,0x3130,0x3130,0x3130,0x3130,0x3130,0x3150,0x3951,0x3150,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3951,0x3151,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3952,0x3952,0x3952,0x3951,0x3951,0x3951,0x3951,0x3951,0x3971,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x4171,0x4171,0x4151,0x4171,0x4171,0x4171,0x4171,0x4171,0x4171,0x4171,0x4171,0x4151,0x4171,0x4171,0x4171,0x4172,0x4171,0x4171,0x4172,0x4172,0x4972,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x5192,0x5191,0x596F,0xBBF9,0xE49A,0xE459,0xDBF7,0xDBD7,0xDBB7,0xDBB6,0xDB96,0xDB76,0xD375,0xCB76,0xC376,0xB396,0x9B97,0x83F8,0x749A,0x653B,0x5DDD,0x5DDD,0x5DDD,0x5D7C,0x6D1C,0x7C3A,0x82B6,0x9A15,0xA9F4,0xB1D4,0xB9F4,0xB9F3,0xC1F3,0xB9F3,0xB9F4,0xBA15,0xB215,0xA1F4,0x8193,0x7193,0x6994,0x61B4,0x61B4,0x61D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x51D4,0x51B3,0x51D3,0x51D4,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x5193,0x51B3,0x51B3,0x51B3,0x5192,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x5993,0x5993,0x59B3,0x59B3,0x59B3,0x5993,0x5993,0x5992,0x5992,0x5992,0x5992,0x5992,0x61B2,0x61B2,0x6192,0x6192,0x6191,0x69B1,0x8212,0x9AB4,0xBBB8,0xCBF9,0xCBF8,0xCBD8,0xD3D7,0xD3D7,0xD3B6,0xD3B6,0xD3B6,0xDBB6,0xDBB7,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xD376,0xD376,0xDB96,0xD375,0xD376,0xD376,0xD376,0xD356,0xD356,0xD377,0xD378,0xD399,0xC3DB,0x931B,0x4998,0x297A,0x199B,0x19BD,0x11BD,0x11BD,0x099D,0x119D,0x219C,0x215B,0x2939,0x6A7C,0x7ADC,0x6A9B,0x629A,0x4A79,0x3ADA,0x33DC,0x249D,0x14FD,0x055D,0x0E3F,0x0E9F,0x0F1F,0x073F,0x0F9F,0x0FBF,0x0FDF,0x07DF,0x07DF,0x07BF,0x07BF,0x0FBF,0x0F9F,0x1F7F,0x2F3F,0x46BE,0x7EDF,0x7D3B,0x6272,0x8232,0xA1F2,0xB1D3,0xB9B3,0xC9B3,0xC9B3,0xC993,0xC9B4,0xC9B4,0xC193,0xC1B3,0xB9D4,0xB215,0x9A15,0x6952,0x5131,0x4952,0x4972,0x4172,0x4172,0x3972,0x3972,0x3972,0x3951,0x3951,0x3951,0x3131,0x3951,0x3951,0x3150,0x3130,0x3150,0x3150,0x3150,0x2930,0x2951,0x2931,0x2930,0x2930,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x210F,0x210F,0x212F,0x2130,0x2110,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2151,0x2131,0x1931,0x1911,0x1932,0x1932,0x1932,0x1953,0x1974,0x19B6,0x2217,0x2217,0x19B5,0x1153,0x1132,0x1112,0x1932,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1911,0x1931,0x1132,0x1133,0x1154,0x1175,0x19B6,0x19B6,0x1196,0x1196,0x11B6,0x1196,0x1195,0x1174,0x1154,0x1933,0x1932,0x1911,0x1931,0x2130,0x2110,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2111,0x2111,0x2111,0x2111,0x1911,0x2131,0x2131,0x1911,0x1931,0x1931,0x1931,0x1931,0x2131,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2150,0x1930,0x1930,0x1930,0x1930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x2131,0x2111,0x2111,0x2131,0x2111,0x2131,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2131,0x2151,0x2131,0x2110,0x2110,0x2130,0x2131,0x2131,0x2131,0x1931,0x2151,0x1931,0x1931,0x1931,0x1931,0x2151,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x2151,0x2131,0x1910,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2951,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x1931,0x2151,0x1930,0x1931,0x1931,0x1911,0x1912,0x1932,0x2132,0x2131,0x2130,0x2130,0x2130,0x1930,0x1930,0x2131,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x2152,0x1931,0x1931,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F, + 0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2930,0x212F,0x212F,0x292F,0x290F,0x292F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x292F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x2110,0x2930,0x2110,0x2910,0x290F,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x2110,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2131,0x2131,0x1911,0x1912,0x1933,0x1134,0x1175,0x11B6,0x11F8,0x09B7,0x09D8,0x01B8,0x01D8,0x09D9,0x09D9,0x09D8,0x11F8,0x11D7,0x1175,0x0913,0x10F2,0x1912,0x1912,0x2152,0x2132,0x2131,0x2132,0x1932,0x1932,0x1932,0x1931,0x1931,0x1911,0x1931,0x1931,0x1910,0x1911,0x1910,0x2110,0x2130,0x2130,0x292F,0x292F,0x210F,0x292F,0x292F,0x212F,0x2110,0x2130,0x2130,0x1931,0x2152,0x2152,0x1952,0x1932,0x1111,0x1111,0x10F1,0x1911,0x1910,0x2130,0x2130,0x2930,0x2110,0x2110,0x210F,0x2130,0x2930,0x2130,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2930,0x2110,0x2110,0x2130,0x2130,0x2930,0x2930,0x210F,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x2130,0x210F,0x210F,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x210F,0x2130,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x20EF,0x290F,0x290F,0x290F,0x290F,0x28EF,0x290F,0x290F,0x290F,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x210F,0x290F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x28EF,0x28EE,0x3950,0x394F,0x30CD,0x30EE,0x30EE,0x30EE,0x30EE,0x30EE,0x30EE,0x30EF,0x30EF,0x30EF,0x30EF,0x3110,0x3110,0x3110,0x3110,0x3130,0x3110,0x3130,0x3130,0x3130,0x3110,0x3130,0x3130,0x3130,0x3130,0x3130,0x3130,0x3130,0x3130,0x3130,0x3131,0x3131,0x3131,0x3131,0x3131,0x3131,0x3130,0x3131,0x3151,0x3131,0x3130,0x3131,0x3131,0x3131,0x3931,0x3131,0x3131,0x3931,0x3931,0x3931,0x3131,0x3931,0x3931,0x3931,0x3931,0x3931,0x3131,0x3931,0x3931,0x3931,0x3931,0x3131,0x3931,0x3131,0x3931,0x3931,0x3931,0x3931,0x3931,0x3931,0x3931,0x3931,0x3931,0x3931,0x3931,0x3931,0x3931,0x3931,0x3931,0x3931,0x3931,0x3931,0x3931,0x3951,0x3951,0x3951,0x3951,0x3951,0x3931,0x3931,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x4151,0x4151,0x3951,0x4151,0x4151,0x4151,0x4151,0x4151,0x4151,0x4151,0x4151,0x4171,0x4171,0x4151,0x4171,0x4171,0x4972,0x4992,0x4171,0x4971,0x4971,0x4951,0x5150,0x594F,0xC3F8,0xE479,0xE438,0xDBD7,0xDBB7,0xDBB6,0xDB96,0xDB76,0xD355,0xD355,0xCB56,0xC355,0xB376,0x9B97,0x8C18,0x74BA,0x6D5C,0x65DD,0x65DD,0x659D,0x651C,0x747B,0x8399,0x9276,0xA215,0xB215,0xBA14,0xB9F4,0xB9F3,0xB9D3,0xB9D3,0xB9F4,0xB1F4,0xA9F5,0x9193,0x7973,0x6973,0x6173,0x6194,0x61B4,0x61D4,0x59B4,0x59B3,0x59B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x5193,0x51B3,0x5193,0x5193,0x5193,0x5193,0x5193,0x5193,0x5193,0x5193,0x5193,0x5193,0x5193,0x5193,0x5193,0x5193,0x5192,0x5192,0x5193,0x5193,0x5193,0x5193,0x5193,0x5193,0x5192,0x5192,0x5193,0x5193,0x5193,0x51B3,0x5193,0x5192,0x5193,0x5993,0x5993,0x59B3,0x5993,0x5993,0x5993,0x5993,0x5993,0x5992,0x5992,0x5992,0x5992,0x5992,0x61B2,0x6192,0x6192,0x6192,0x6191,0x6171,0x6150,0x612F,0x8A53,0xAB36,0xBBB7,0xCBF8,0xD3D7,0xD3B7,0xD3D7,0xDBB7,0xDBB6,0xDB96,0xDB96,0xDB76,0xDB96,0xDB96,0xDB96,0xD376,0xD375,0xD375,0xD375,0xD376,0xD376,0xD356,0xD356,0xD356,0xD377,0xD378,0xD399,0xC3BB,0xAB7C,0x6219,0x3179,0x219B,0x19BD,0x19DE,0x09BD,0x09BE,0x11BD,0x19BD,0x29BC,0x295A,0x521B,0x72BC,0x6A7B,0x627A,0x4A59,0x3ABA,0x33BC,0x2C9D,0x14FE,0x0D7E,0x0E1F,0x0E9F,0x0F1F,0x0F5F,0x0F9F,0x0FBF,0x0FBF,0x0FDF,0x07DF,0x07BF,0x07BF,0x0FBF,0x179F,0x1F7F,0x2F3F,0x46FF,0x6EDF,0x861D,0x5AB2,0x7A32,0xA233,0xB1F3,0xC1D3,0xC9B4,0xC173,0xC973,0xC993,0xC993,0xC193,0xC1B3,0xB9D4,0xB215,0x9A15,0x6932,0x5111,0x5152,0x4972,0x4172,0x4172,0x3972,0x3972,0x3972,0x3972,0x3951,0x3151,0x3131,0x3131,0x3151,0x3130,0x3130,0x3130,0x3130,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x290F,0x210F,0x2910,0x210F,0x2130,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x212F,0x2930,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x210F,0x2930,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2151,0x2131,0x2131,0x1931,0x1932,0x1932,0x1933,0x1153,0x1995,0x19B6,0x21F7,0x21F7,0x19B6,0x1154,0x08F2,0x1112,0x1911,0x2131,0x2151,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x1930,0x1910,0x1911,0x1931,0x1932,0x1953,0x1974,0x1174,0x1174,0x1174,0x1174,0x1153,0x1153,0x1953,0x1932,0x1932,0x1931,0x1911,0x2110,0x2110,0x2110,0x2130,0x2930,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x2152,0x2131,0x2131,0x2110,0x2110,0x2111,0x2110,0x2131,0x2151,0x2131,0x1911,0x1931,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x2130,0x2130,0x2110,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x20F0,0x2110,0x2130,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2131,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x2131,0x1931,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x210F,0x2130,0x2930,0x2930,0x210F,0x210F,0x2130,0x2951,0x2131,0x2110,0x2110,0x2130,0x2130,0x2150,0x2130,0x212F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x1930,0x2131,0x1911,0x1911,0x2131,0x2131,0x2110,0x190F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1910,0x1910,0x1910,0x1910,0x1911,0x1931,0x1931,0x2131,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2130, + 0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x290F,0x212F,0x210F,0x292F,0x210F,0x212F,0x210F,0x2930,0x292F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2110,0x2110,0x2930,0x290F,0x210F,0x2930,0x290F,0x210F,0x2910,0x2910,0x2930,0x2110,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x290F,0x292F,0x290F,0x210F,0x210F,0x290F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x1912,0x1133,0x1134,0x1175,0x11B7,0x09B7,0x09B8,0x09D8,0x09D8,0x01D8,0x01D8,0x09D8,0x09D8,0x11F8,0x11D7,0x1175,0x0913,0x1112,0x10F1,0x1912,0x2152,0x2132,0x1932,0x1932,0x1932,0x1953,0x1132,0x0912,0x0912,0x1112,0x0912,0x1132,0x1112,0x1111,0x1931,0x1931,0x2131,0x2110,0x2130,0x2930,0x292F,0x290F,0x290F,0x290F,0x292F,0x2130,0x2130,0x1931,0x1952,0x1132,0x1132,0x1153,0x1974,0x1994,0x1974,0x1953,0x1112,0x10F1,0x1911,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x1930,0x1931,0x1932,0x1132,0x1132,0x1132,0x1132,0x0911,0x1111,0x1911,0x1911,0x2111,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x210F,0x212F,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2110,0x2930,0x2110,0x2110,0x212F,0x2930,0x210F,0x2130,0x210F,0x212F,0x290F,0x290F,0x212F,0x2130,0x212F,0x210F,0x2930,0x2930,0x210F,0x2930,0x210F,0x212F,0x210F,0x292F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x28EF,0x20EE,0x20EE,0x20EE,0x20EE,0x28EF,0x20EE,0x20EF,0x20EE,0x20EE,0x20EE,0x20EE,0x28EE,0x28EF,0x20EE,0x20EE,0x28EF,0x28EF,0x28EF,0x28EF,0x28EF,0x28EF,0x20EE,0x20EE,0x28EF,0x20CE,0x20EE,0x20CE,0x20CE,0x20CE,0x20EE,0x20CE,0x20CE,0x20CE,0x20CE,0x20EE,0x20CE,0x20EE,0x20EE,0x20EE,0x20EE,0x20CE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EF,0x20EF,0x20EF,0x20EE,0x20EF,0x20EE,0x20EE,0x20EE,0x20EE,0x20EF,0x20EE,0x20EE,0x20EF,0x20EF,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EF,0x20CF,0x20EF,0x20EF,0x28EF,0x20EF,0x20EE,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EE,0x20EF,0x20EE,0x20EE,0x20EE,0x20EF,0x20EF,0x20EF,0x20EF,0x20EE,0x20EF,0x20EF,0x28EF,0x28EF,0x28EF,0x28EE,0x28EE,0x28EE,0x28CE,0x28CE,0x28CE,0x28CD,0x28AD,0x28CD,0x28CD,0x28CE,0x28CE,0x30CE,0x30CE,0x30EE,0x30CE,0x30EE,0x30EF,0x30EF,0x30EF,0x30EF,0x30EF,0x28EF,0x30EF,0x310F,0x290F,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3111,0x3111,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3130,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3110,0x3130,0x3130,0x3930,0x3910,0x3910,0x3910,0x3931,0x3910,0x3931,0x3931,0x3931,0x3930,0x3931,0x3931,0x3930,0x3930,0x3931,0x3930,0x3930,0x3931,0x3931,0x4131,0x4131,0x4131,0x4131,0x4131,0x4131,0x4151,0x4151,0x4151,0x4151,0x4151,0x4151,0x4151,0x4151,0x4130,0x4930,0x512F,0x614E,0xCC19,0xDC39,0xE3F8,0xDBB7,0xDB96,0xDB96,0xDB76,0xDB76,0xD355,0xD335,0xCB35,0xBB15,0xB356,0x9B77,0x8BF8,0x7CBA,0x755B,0x6DBD,0x6DBD,0x6D5C,0x74BB,0x83FA,0x8AF7,0x9A56,0xA9F5,0xB215,0xBA14,0xB9F4,0xC1F4,0xB9F3,0xB9F4,0xB1D4,0xA9D4,0x9193,0x8152,0x7152,0x6953,0x6173,0x6193,0x6193,0x5993,0x5993,0x5193,0x5193,0x5193,0x5193,0x5193,0x5193,0x5193,0x5193,0x5173,0x5172,0x5172,0x5173,0x5172,0x4972,0x4972,0x4972,0x4972,0x4972,0x4972,0x4972,0x4972,0x4972,0x4972,0x4972,0x4972,0x4972,0x4972,0x4972,0x4972,0x4972,0x4972,0x5172,0x5172,0x4972,0x5172,0x5172,0x5172,0x5172,0x5172,0x5172,0x5172,0x5172,0x5192,0x5172,0x5172,0x5172,0x5172,0x5172,0x5992,0x5972,0x5992,0x5992,0x5972,0x5992,0x5992,0x5992,0x5972,0x5992,0x5991,0x6171,0x6171,0x6171,0x6150,0x6150,0x612F,0x718F,0x8A32,0xC3B7,0xD418,0xD3D7,0xD3B7,0xDBB7,0xDB96,0xD396,0xDB76,0xD376,0xD376,0xDB76,0xD376,0xD375,0xD375,0xD375,0xD376,0xD376,0xD355,0xD355,0xD356,0xD377,0xD377,0xD398,0xC3BA,0xAB9C,0x6A39,0x3179,0x219B,0x19DD,0x19DE,0x09BE,0x09DE,0x11DE,0x19DE,0x29DD,0x299B,0x41BA,0x6ABD,0x6A7B,0x5A5A,0x4A3A,0x3A9A,0x337C,0x245D,0x1CFE,0x0D5E,0x0DFF,0x067F,0x0F1F,0x0F5F,0x0F9F,0x0FBF,0x0FBF,0x0FDF,0x07DF,0x07DF,0x07BF,0x079F,0x0F9F,0x1F7F,0x2F5F,0x3EFE,0x66DF,0x8E5E,0x52F3,0x7232,0x9A33,0xB1D2,0xC1B3,0xC9B3,0xC993,0xC993,0xC993,0xC993,0xC9B3,0xC1B3,0xB9D4,0xB215,0x9A15,0x6952,0x5111,0x5173,0x4972,0x4172,0x4172,0x4172,0x3972,0x3972,0x3952,0x3951,0x3151,0x3951,0x3131,0x3151,0x3130,0x3130,0x3130,0x312F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x1931,0x1932,0x1933,0x1153,0x1174,0x19D6,0x2218,0x21F7,0x19B5,0x1154,0x1112,0x1111,0x1931,0x2131,0x2110,0x2130,0x2110,0x2130,0x2151,0x2130,0x2130,0x2130,0x1930,0x1911,0x1911,0x1932,0x1932,0x1933,0x1133,0x1132,0x1953,0x1932,0x1932,0x1932,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2131,0x1910,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2930,0x2931,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x2130,0x2130,0x2131,0x2130,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x2950,0x292F,0x210F,0x210F,0x2910,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2110,0x1910,0x2131,0x2131,0x2110,0x2130,0x2130,0x212F,0x2130,0x2150,0x2130,0x2130,0x1910,0x1910,0x1910,0x1910,0x2111,0x1910,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130, + 0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2930,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x292F,0x212F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x290F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2910,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2930,0x2930,0x2110,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x1911,0x1911,0x1133,0x1154,0x1175,0x11B7,0x09D7,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09F8,0x11F8,0x11B6,0x1155,0x1133,0x1112,0x1112,0x1912,0x1911,0x1931,0x1932,0x1912,0x1933,0x1954,0x0933,0x1174,0x19F6,0x19F7,0x2217,0x19F6,0x2217,0x21F6,0x19B5,0x1953,0x1932,0x1931,0x2131,0x2130,0x2130,0x2930,0x210F,0x20EF,0x292F,0x2130,0x2130,0x1931,0x1111,0x1132,0x1153,0x19D5,0x19F7,0x1A17,0x2217,0x19F6,0x19B6,0x1174,0x1953,0x1931,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x2130,0x2130,0x1910,0x1931,0x1931,0x1972,0x1153,0x1194,0x2237,0x2237,0x2237,0x2217,0x19F6,0x1994,0x1932,0x1931,0x2111,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2930,0x2130,0x2130,0x212F,0x2930,0x2930,0x212F,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x212F,0x2130,0x2130,0x2130,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x28EE,0x290F,0x28EE,0x20EE,0x20EE,0x20CE,0x20CE,0x20CE,0x20CE,0x20AD,0x20AD,0x20AD,0x20AD,0x20AD,0x20AD,0x20AE,0x20AE,0x20AE,0x20AD,0x20AD,0x20AD,0x20AD,0x20AE,0x20AD,0x20AD,0x20AD,0x20AD,0x20AE,0x20AE,0x20AD,0x20AE,0x20AE,0x20AE,0x20AE,0x20AD,0x20AE,0x20AE,0x20AD,0x20AD,0x20AD,0x20AD,0x20AD,0x20AD,0x20AD,0x20AD,0x20AD,0x20AD,0x20AE,0x20AE,0x20AD,0x20AD,0x20AE,0x20AD,0x20AD,0x20AD,0x20AD,0x20CE,0x20CE,0x20AD,0x20AE,0x20AE,0x20AD,0x20AD,0x20AD,0x20AD,0x20CD,0x20AD,0x20AE,0x20AE,0x20AD,0x20CE,0x20AD,0x20CE,0x20AD,0x20AD,0x20AE,0x20AE,0x20CE,0x20CE,0x20AD,0x20AE,0x20AD,0x20AD,0x20AE,0x20AE,0x20AE,0x20AD,0x20AE,0x20AE,0x20CE,0x20CE,0x20AE,0x20AE,0x20AD,0x20AD,0x20AE,0x20AE,0x20AD,0x20AD,0x20CE,0x20CE,0x20AD,0x20CE,0x20CD,0x20CE,0x20CE,0x20AE,0x20AE,0x20AE,0x20AE,0x20AD,0x20AD,0x20AD,0x20AD,0x28AD,0x28AD,0x288D,0x28AD,0x28AD,0x28AD,0x28AD,0x28AD,0x28AD,0x28CD,0x28CE,0x30CE,0x28CE,0x28CE,0x30CE,0x28CE,0x28CE,0x28EE,0x28CE,0x28CE,0x28CE,0x28CF,0x28CF,0x28EF,0x28CF,0x28CF,0x28CF,0x28CF,0x28CF,0x28CF,0x28CF,0x28CF,0x28CF,0x30EF,0x28CF,0x30EF,0x28CF,0x30EF,0x28CF,0x28EF,0x30EF,0x28CF,0x28CF,0x28CF,0x30EF,0x28CF,0x30EF,0x28CF,0x28CF,0x30EF,0x30CF,0x30EF,0x30CF,0x30CF,0x30CF,0x30CF,0x30CF,0x30CF,0x30CF,0x30CF,0x30CF,0x30CF,0x30F0,0x30CF,0x30CF,0x30CF,0x30CF,0x30EF,0x30EF,0x30F0,0x30CF,0x30EF,0x30EF,0x30EF,0x30EF,0x30EF,0x30EF,0x30EF,0x30EF,0x30CF,0x30EF,0x30EF,0x30EF,0x30EF,0x30EF,0x30EF,0x30EF,0x30EF,0x30EF,0x30EF,0x30EF,0x30EF,0x30EF,0x30F0,0x30F0,0x30EF,0x30EF,0x30F0,0x30F0,0x30EF,0x38F0,0x30EF,0x30EF,0x38EF,0x38F0,0x38F0,0x38F0,0x38F0,0x38EF,0x38F0,0x38F0,0x3910,0x3910,0x3910,0x3910,0x3910,0x4130,0x4110,0x4110,0x410F,0x410F,0x490F,0x510E,0x612E,0xCC18,0xDC18,0xDBD7,0xDB96,0xDB96,0xDB76,0xDB56,0xDB56,0xD335,0xD315,0xCB15,0xC315,0xB336,0xA376,0x9BF8,0x8CBA,0x853B,0x7D9D,0x7D7D,0x7CDB,0x843A,0x8B58,0x9276,0xA215,0xA9F4,0xB1F4,0xB9F4,0xB9D4,0xB9D3,0xB9D3,0xB9D4,0xA9B3,0x9973,0x8132,0x7131,0x6932,0x6152,0x6152,0x5952,0x5972,0x5152,0x5152,0x5152,0x5172,0x5172,0x4952,0x5152,0x4952,0x4952,0x4952,0x4952,0x4951,0x4951,0x4951,0x4931,0x4931,0x4931,0x4931,0x4931,0x4131,0x4931,0x4131,0x4131,0x4931,0x4931,0x4931,0x4931,0x4931,0x4931,0x4931,0x4931,0x4951,0x4951,0x4951,0x4951,0x4951,0x4951,0x4951,0x4951,0x4951,0x4951,0x4951,0x4951,0x5151,0x5151,0x5151,0x5151,0x5151,0x5151,0x5151,0x5151,0x5151,0x5151,0x5151,0x5151,0x5951,0x5951,0x5951,0x5951,0x5951,0x5951,0x5951,0x5951,0x5951,0x6150,0x6150,0x612F,0x612F,0x610E,0x60CD,0x81B0,0xB2F4,0xC355,0xD396,0xDB96,0xDB96,0xDB96,0xDB96,0xD376,0xD375,0xD375,0xD375,0xD375,0xD375,0xD355,0xD375,0xD355,0xCB55,0xD356,0xD376,0xD377,0xCB78,0xC399,0xB3BB,0x7ABA,0x2958,0x219B,0x19DC,0x19FE,0x09DE,0x09DE,0x11FE,0x19FE,0x21FD,0x219B,0x319A,0x5A7D,0x629C,0x5A5B,0x4A19,0x3A5A,0x2B1B,0x23FD,0x1CDE,0x0D5E,0x05DE,0x065E,0x0F1F,0x0F7F,0x0F9F,0x0FBF,0x0FBF,0x07DF,0x07DF,0x07BF,0x07BF,0x079F,0x0F9F,0x177F,0x2F5F,0x3EFE,0x5EDE,0x8EBF,0x52F3,0x6A11,0x9A33,0xB213,0xC1D3,0xC9B3,0xC9B3,0xC993,0xC173,0xC993,0xC1B3,0xC193,0xB9D4,0xB215,0x9A15,0x6952,0x5911,0x5152,0x5193,0x4992,0x4172,0x4172,0x3952,0x3972,0x3972,0x3972,0x3972,0x3951,0x3151,0x3151,0x3150,0x3130,0x3130,0x3130,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x290F,0x2910,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x292F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x210F,0x2130,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2111,0x2151,0x1932,0x1932,0x1132,0x1153,0x1995,0x21D7,0x2217,0x19F6,0x19B5,0x0933,0x1132,0x1111,0x1931,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1911,0x1911,0x2132,0x1932,0x1932,0x1931,0x1911,0x1911,0x2131,0x2131,0x2151,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2930,0x2930,0x2130,0x2930,0x2950,0x2950,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x2910,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x2950,0x2930,0x210F,0x210F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x210F,0x210F,0x212F,0x2930,0x212F,0x2130,0x210F,0x2130,0x2950,0x2130,0x2130,0x2130,0x210F,0x190F,0x212F,0x212F,0x2130,0x2131,0x2131,0x2131,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2151,0x2130,0x2150,0x190F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130, + 0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x290F,0x2930,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x292F,0x292F,0x290F,0x212F,0x210F,0x292F,0x2930,0x292F,0x290F,0x2930,0x290F,0x210F,0x2930,0x290F,0x2930,0x290F,0x290F,0x210F,0x2930,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x290F,0x2910,0x210F,0x290F,0x210F,0x290F,0x290F,0x2910,0x290F,0x210F,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x212F,0x2130,0x2130,0x210F,0x212F,0x2130,0x2130,0x2110,0x210F,0x290F,0x210F,0x2910,0x290F,0x210F,0x292F,0x290F,0x2910,0x2110,0x2910,0x2910,0x2110,0x2131,0x2131,0x1911,0x1911,0x1933,0x1154,0x0975,0x11D7,0x09D8,0x09D8,0x09D9,0x09D9,0x01D8,0x09D8,0x09D8,0x09D8,0x11F8,0x11B7,0x1175,0x1133,0x1112,0x1111,0x1911,0x1911,0x1932,0x1932,0x1932,0x1133,0x1154,0x1175,0x19F7,0x11F7,0x1A18,0x11F7,0x11F7,0x11D7,0x11D7,0x11D6,0x19D6,0x1974,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x1931,0x1111,0x1153,0x1194,0x19D6,0x11F7,0x1218,0x1218,0x1218,0x11F7,0x11D7,0x19B6,0x1995,0x1953,0x1931,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x1931,0x1931,0x1932,0x1953,0x1174,0x19F6,0x1A37,0x1A38,0x09F7,0x11F8,0x09F7,0x1A17,0x1A16,0x1974,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2930,0x2930,0x212F,0x212F,0x2930,0x212F,0x2930,0x2930,0x2110,0x2110,0x2130,0x212F,0x210F,0x212F,0x210F,0x212F,0x2930,0x210F,0x2110,0x210F,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x210F,0x212F,0x210F,0x290F,0x292F,0x292F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x292F,0x2930,0x292F,0x292F,0x292F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290E,0x28EE,0x28EE,0x28CD,0x28CD,0x28AD,0x208C,0x206B,0x184B,0x182A,0x180A,0x1009,0x1809,0x1009,0x1009,0x1009,0x1809,0x1009,0x1809,0x1809,0x1009,0x1009,0x1809,0x1809,0x1809,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1809,0x1809,0x1809,0x1009,0x1809,0x1809,0x1809,0x1009,0x1809,0x1809,0x1809,0x1009,0x1809,0x1009,0x1809,0x1809,0x1809,0x1009,0x1809,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1809,0x1009,0x1009,0x1009,0x1809,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1809,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x2009,0x2009,0x2009,0x2009,0x2009,0x2029,0x202A,0x202A,0x202A,0x202A,0x202A,0x202A,0x204A,0x202A,0x202A,0x202A,0x202A,0x202A,0x202A,0x182A,0x202A,0x202A,0x202A,0x200A,0x202B,0x202A,0x202B,0x202A,0x202A,0x202A,0x200B,0x200B,0x202B,0x202A,0x202B,0x202A,0x202A,0x202A,0x202A,0x202A,0x202A,0x200A,0x202A,0x202A,0x202A,0x202A,0x202A,0x200A,0x202A,0x202A,0x200A,0x200A,0x200A,0x200A,0x202A,0x202A,0x200A,0x200A,0x200A,0x200A,0x200B,0x200A,0x202B,0x200A,0x200A,0x202B,0x200B,0x202B,0x202B,0x200B,0x202B,0x202B,0x202B,0x202A,0x202B,0x202A,0x202B,0x200A,0x202B,0x202B,0x202B,0x202B,0x202B,0x202B,0x202B,0x202A,0x202B,0x202B,0x202B,0x202B,0x202B,0x202B,0x202B,0x202B,0x282B,0x202B,0x202B,0x202B,0x202B,0x282B,0x202B,0x202B,0x282B,0x282B,0x282B,0x282B,0x282B,0x284B,0x284B,0x284B,0x284B,0x306B,0x306B,0x306C,0x306C,0x306B,0x306C,0x386B,0x408C,0x48AC,0x79AF,0xD418,0xDBF8,0xDBD7,0xDB97,0xDB76,0xDB56,0xDB56,0xDB36,0xDB35,0xD315,0xCAF5,0xC2F5,0xBB15,0xAB36,0xA3B7,0x9C7A,0x9CFB,0x9D3C,0x94FC,0x943A,0x9358,0x9296,0xA235,0xAA14,0xB1F4,0xB9F4,0xB9D3,0xB9D3,0xB9D3,0xB1D3,0xA9B2,0x9150,0x80EF,0x68AE,0x60AE,0x58AE,0x50AE,0x50CE,0x48CE,0x48EE,0x48EE,0x48CE,0x40CE,0x40CE,0x40CE,0x40CE,0x40AD,0x40AD,0x388D,0x38AD,0x388D,0x38AD,0x388D,0x388D,0x388D,0x388D,0x388D,0x388D,0x388D,0x388D,0x388D,0x388D,0x386D,0x388D,0x386D,0x386D,0x386C,0x388D,0x388D,0x388D,0x408D,0x408D,0x408D,0x408D,0x40AD,0x408D,0x40AD,0x40AD,0x40AD,0x40AD,0x40AD,0x40AD,0x40AD,0x40AD,0x48AD,0x48AD,0x48AD,0x48AD,0x48AD,0x48AD,0x48AD,0x48CE,0x48AD,0x48AD,0x48CD,0x48CD,0x50CE,0x50EE,0x50EE,0x50EE,0x50EE,0x50EE,0x58EE,0x58EE,0x58EE,0x58EE,0x58ED,0x58CD,0x58CD,0x692E,0x796E,0x9210,0x9A31,0xB292,0xB2B2,0xC2F3,0xC314,0xCB34,0xCB55,0xCB55,0xCB55,0xD355,0xD355,0xD355,0xCB55,0xCB55,0xCB55,0xCB55,0xCB55,0xCB56,0xD377,0xCB97,0xC3B9,0xB3BB,0x82FB,0x3157,0x219A,0x21DC,0x19FE,0x09FE,0x09FE,0x09FE,0x11FE,0x221E,0x21DD,0x297A,0x4A3D,0x629D,0x629C,0x4A1A,0x3A3A,0x2ABB,0x239C,0x1CBE,0x0D3E,0x0DDF,0x065E,0x0F1F,0x0F7F,0x0F9F,0x0FBF,0x0FBF,0x0FDF,0x07BF,0x07BF,0x07BF,0x079F,0x0F9F,0x177F,0x275F,0x36FF,0x56DE,0x8EFF,0x5354,0x6231,0x9A53,0xB233,0xB9D3,0xC1B3,0xC9B4,0xC993,0xC173,0xC173,0xC193,0xC1B3,0xB9F4,0xB215,0x9A35,0x6932,0x5911,0x5152,0x4972,0x4972,0x4172,0x3972,0x3972,0x3972,0x3952,0x3951,0x3972,0x3951,0x3151,0x3151,0x3150,0x3130,0x3150,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2130,0x2110,0x2130,0x2130,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x212F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x212F,0x210F,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1932,0x1132,0x1153,0x1995,0x19F6,0x21F7,0x2217,0x19B5,0x1153,0x1112,0x1111,0x1931,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1911,0x2111,0x1910,0x1910,0x2110,0x2110,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2910,0x290F,0x2910,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2950,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x2130,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2950,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x2930,0x2930,0x290F,0x2910,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2150,0x212F,0x212F,0x210F,0x2930,0x210F,0x210F,0x290F,0x2930,0x2910,0x2110,0x2910,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2930,0x2930,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x1910,0x2130,0x2150,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2110, + 0x212F,0x210F,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2110,0x212F,0x212F,0x292F,0x212F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2110,0x2110,0x212F,0x2930,0x212F,0x212F,0x2910,0x2110,0x2130,0x2130,0x2930,0x290F,0x210F,0x2930,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x2950,0x212F,0x2130,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x2930,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x2930,0x2930,0x292F,0x292F,0x290F,0x2910,0x290F,0x290F,0x290F,0x2910,0x2930,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x210F,0x2110,0x2910,0x2930,0x210F,0x210F,0x290F,0x2930,0x2930,0x2910,0x2910,0x2110,0x2131,0x1911,0x1911,0x1933,0x1133,0x1175,0x11B7,0x09B7,0x09D8,0x09D9,0x09F9,0x09D9,0x01D8,0x09D8,0x09D8,0x09B7,0x11B6,0x1175,0x0912,0x10F1,0x1111,0x1911,0x2152,0x2152,0x1932,0x1132,0x1133,0x1154,0x1196,0x11F8,0x09D7,0x09D7,0x09B7,0x09D8,0x09B7,0x01B7,0x09D7,0x09B7,0x0996,0x1195,0x1133,0x1932,0x2131,0x2131,0x2951,0x2930,0x2930,0x2130,0x2111,0x1911,0x1132,0x1174,0x11B6,0x11D7,0x09D7,0x11F8,0x09F8,0x09D8,0x09F8,0x09D8,0x09D7,0x11B7,0x19D6,0x1974,0x10F1,0x1910,0x2131,0x2131,0x2151,0x2151,0x2131,0x1931,0x1931,0x1931,0x1132,0x1973,0x1174,0x19D6,0x11F7,0x09F8,0x01D7,0x09D8,0x01D8,0x01B7,0x0A18,0x11F7,0x11B5,0x1153,0x1932,0x2131,0x2151,0x2131,0x2130,0x2110,0x2110,0x2110,0x2930,0x2130,0x212F,0x212F,0x2130,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x210F,0x210F,0x2930,0x2130,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2110,0x210F,0x2930,0x2930,0x210F,0x290F,0x292F,0x212F,0x212F,0x292F,0x290F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2110,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x20EE,0x20CE,0x20CD,0x20AC,0x208C,0x288B,0x390D,0x496E,0x6A51,0x8B34,0xAC18,0xC4DB,0xD55D,0xDD9D,0xE5BE,0xE5BE,0xE5BD,0xE5BE,0xE5BD,0xE5BD,0xDDBD,0xDDBD,0xDDBD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5DD,0xE5DD,0xDDBD,0xE5DD,0xDDBD,0xE5DD,0xDDBD,0xDDBD,0xDDBD,0xDDBD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xDDBD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xDDBD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5DD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5DD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5DD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xDDBD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xDDBD,0xDD9D,0xDD9D,0xDD9D,0xDD9D,0xDD9D,0xDD9D,0xDD9D,0xDD9D,0xDD9D,0xDD9D,0xDD9D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xDD9D,0xDDBD,0xDDBD,0xDDBD,0xDDBD,0xDDBD,0xE59D,0xE5BD,0xDDBD,0xE5BD,0xE5BD,0xE5BD,0xDDBD,0xDD9D,0xE59D,0xE5BD,0xE59D,0xE5BD,0xE59D,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE59D,0xE5BD,0xE59D,0xE5BD,0xE5BD,0xE59D,0xE59D,0xE59D,0xE5BD,0xE5BD,0xE59D,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE5BD,0xE59D,0xE5BD,0xE59D,0xE59D,0xE5BD,0xE59D,0xE5BD,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE5BD,0xE59D,0xE5BD,0xE5BE,0xE59D,0xE5BD,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE59D,0xE57D,0xE57D,0xDD7D,0xE55D,0xE55D,0xE55D,0xE53C,0xE51C,0xE4DB,0xE49A,0xDC18,0xDBD7,0xDB97,0xDB76,0xDB56,0xDB36,0xDB36,0xDB15,0xD2F5,0xD2F5,0xD2D5,0xCAD5,0xC2D5,0xB2D5,0xAAF6,0xAB77,0xA398,0xA3B8,0x9B37,0x92B6,0x9A55,0xA235,0xA9F4,0xB214,0xB9F4,0xB9D3,0xB9D3,0xB1B3,0xB1B2,0xA9D2,0xBAB4,0xE419,0xECDB,0xECFC,0xED1C,0xE51C,0xE53C,0xE53C,0xE55D,0xE55C,0xE57D,0xE55D,0xE57D,0xE57D,0xE57D,0xE55D,0xE57D,0xE57D,0xE57D,0xE57D,0xE57D,0xE57D,0xE57D,0xE57D,0xE57D,0xE57D,0xE57D,0xE57D,0xE57D,0xE57D,0xE57D,0xE55D,0xE55D,0xE55D,0xE55D,0xE53C,0xE53C,0xE53C,0xE53C,0xED3D,0xE51C,0xED3C,0xE53C,0xED3C,0xED3C,0xED3C,0xE53C,0xED3C,0xED3C,0xED3C,0xE51C,0xED3C,0xED3C,0xED3C,0xED3C,0xED3C,0xED3C,0xED3C,0xED3C,0xED3C,0xED1C,0xED3C,0xED3C,0xED3C,0xED3C,0xED3C,0xE51C,0xE51C,0xE51C,0xE51C,0xE51C,0xE4FC,0xE4FC,0xECFC,0xED1C,0xECFB,0xECFB,0xECDB,0xECFB,0xECDA,0xECBA,0xE499,0xEC99,0xEC99,0xEC78,0xEC78,0xEC78,0xEC78,0xEC78,0xEC58,0xE458,0xE437,0xE438,0xE438,0xE437,0xE458,0xE438,0xEC58,0xEC58,0xEC59,0xEC59,0xE459,0xDC5A,0xC41B,0x8B3B,0x3157,0x219A,0x21FC,0x1A1D,0x09FE,0x09FE,0x0A1E,0x0A1E,0x1A1E,0x21FD,0x219B,0x39FC,0x62BD,0x62BC,0x4A3B,0x3A3A,0x2A5A,0x1B1B,0x1C7E,0x153E,0x0DFF,0x067F,0x0EFF,0x0F5F,0x0F9F,0x0FBF,0x0FBF,0x0FDF,0x07BF,0x07BF,0x079F,0x079F,0x0FBF,0x179F,0x275F,0x36FF,0x4EBE,0x7E9F,0x5BB5,0x5A11,0x9253,0xA9F3,0xC1F4,0xC193,0xC9B4,0xC993,0xC993,0xC993,0xC193,0xC1B3,0xB9D4,0xB215,0x9A15,0x6932,0x5911,0x5152,0x4972,0x4972,0x4172,0x4172,0x3972,0x3972,0x3952,0x3951,0x3972,0x3151,0x3151,0x3131,0x3150,0x3130,0x3130,0x3150,0x2950,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x290F,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x2110,0x2130,0x210F,0x2130,0x212F,0x210F,0x2930,0x212F,0x212F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1132,0x1153,0x1995,0x21F6,0x2237,0x2237,0x19B5,0x1153,0x1112,0x1931,0x1931,0x2131,0x2130,0x2110,0x20EF,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x18EF,0x20EF,0x210F,0x2130,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2930,0x2930,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x20EF,0x290F,0x2910,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x2910,0x2910,0x2930,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x290F,0x2930,0x210F,0x290F,0x2910,0x2910,0x290F,0x2910,0x2910,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930, + 0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2110,0x2130,0x2110,0x2110,0x2930,0x2930,0x2930,0x212F,0x212F,0x292F,0x292F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x290F,0x292F,0x290F,0x290F,0x2930,0x2930,0x2930,0x290F,0x292F,0x290F,0x2910,0x290F,0x290F,0x210F,0x290F,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x210F,0x2930,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x210F,0x290F,0x2930,0x210F,0x2930,0x2110,0x2110,0x2111,0x2111,0x1911,0x1912,0x1933,0x1154,0x1175,0x11B7,0x09B8,0x09D8,0x09D9,0x09F9,0x09D9,0x09D9,0x09D8,0x09D8,0x09B7,0x11B6,0x1175,0x1112,0x1111,0x1111,0x1911,0x1931,0x2152,0x1932,0x1132,0x0912,0x1174,0x11B6,0x09D7,0x09D8,0x09D8,0x09D8,0x01D8,0x01D8,0x01D8,0x01D8,0x09D8,0x09D8,0x11D7,0x11B6,0x1153,0x1932,0x1911,0x2951,0x2131,0x2130,0x2131,0x2111,0x1911,0x1133,0x1175,0x11B6,0x11F7,0x09F8,0x09F8,0x01D8,0x01D8,0x01F8,0x01D8,0x01B8,0x09D8,0x09D7,0x11D7,0x19B5,0x1112,0x1911,0x1910,0x2131,0x2131,0x2151,0x1931,0x1931,0x1111,0x1112,0x1153,0x1195,0x19F7,0x11F8,0x09D8,0x01D8,0x01D8,0x01D9,0x01F9,0x01D8,0x09F8,0x11F8,0x19D6,0x1174,0x1132,0x1931,0x2131,0x2131,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x212F,0x2930,0x212F,0x210F,0x2930,0x2930,0x2110,0x2110,0x290F,0x290F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x210F,0x210F,0x290F,0x292F,0x210F,0x2930,0x290F,0x210F,0x212F,0x292F,0x2930,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x292F,0x2950,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x20EF,0x28EF,0x20EE,0x20CE,0x20AD,0x208C,0x206B,0x28AC,0x59D0,0x9BD7,0xBC9A,0xCCFB,0xD53C,0xD53B,0xDD3B,0xD51A,0xD51A,0xD4FA,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD519,0xD4F9,0xD4F9,0xD519,0xD519,0xD519,0xD519,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xDCF9,0xDCF9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD519,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD519,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F8,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4F9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4B9,0xD4B9,0xDC99,0xDC99,0xDC78,0xDC38,0xDBF7,0xDBB7,0xD376,0xD356,0xDB36,0xDB16,0xDB16,0xDAF5,0xDAD5,0xD2B5,0xD295,0xCA95,0xCA95,0xBA95,0xB275,0xA254,0xA274,0xA275,0xA255,0xA234,0xAA14,0xB1F4,0xB1F4,0xB1F4,0xB9F3,0xB9D3,0xB1D3,0xB1D2,0xB1F2,0xCB16,0xE439,0xE479,0xDC99,0xDC98,0xDCB9,0xDCB9,0xDCB9,0xD4B9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4F9,0xD4D9,0xD4D9,0xD4D9,0xDCF9,0xD4D9,0xD4D9,0xDCD9,0xDCD9,0xDCD9,0xDCD9,0xDCD9,0xDCD9,0xDCB9,0xE4B9,0xE4B9,0xE4B9,0xE4B9,0xE4B9,0xE499,0xE4B9,0xE4B9,0xE4B9,0xE4B9,0xE4B9,0xE4B9,0xE4B9,0xE4B8,0xE4B9,0xE4B9,0xE4B9,0xE4B9,0xE4B9,0xE4B9,0xE4B9,0xE4B9,0xE4B9,0xE4B9,0xE4B9,0xE499,0xE4B9,0xE4B9,0xE4B9,0xE499,0xE4B9,0xE499,0xE499,0xE499,0xE499,0xE499,0xE499,0xE498,0xE499,0xE499,0xE498,0xE498,0xE478,0xE478,0xE478,0xE478,0xE477,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE437,0xE437,0xE437,0xE437,0xE457,0xE457,0xE458,0xE458,0xEC58,0xEC58,0xEC79,0xEC79,0xE47A,0xCC3B,0x9B7B,0x3977,0x219A,0x21FC,0x1A1D,0x0A1E,0x021E,0x021F,0x0A3E,0x123E,0x1A1D,0x19BC,0x21BB,0x5ADE,0x5ADD,0x4A7C,0x3A3B,0x223A,0x12BB,0x13FD,0x14FE,0x0DDF,0x0E5F,0x0EFF,0x0F3F,0x0F9F,0x0FBF,0x0FDF,0x0FDF,0x07DF,0x07DF,0x07BF,0x07BF,0x0F9F,0x179F,0x277F,0x36FE,0x4EDF,0x769F,0x6C58,0x51F0,0x9273,0xA9F2,0xB9B3,0xC9B3,0xC993,0xC993,0xC993,0xC9B4,0xC193,0xC1B4,0xB9D4,0xB215,0x99F5,0x6952,0x5932,0x5152,0x5172,0x4972,0x4172,0x4172,0x3972,0x3952,0x3952,0x3972,0x3151,0x3131,0x3151,0x3151,0x3151,0x3150,0x3150,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x210F,0x2910,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x290F,0x292F,0x212F,0x2130,0x2110,0x2130,0x2130,0x2131,0x1931,0x1911,0x1932,0x1153,0x19B5,0x19D6,0x2217,0x21F6,0x1994,0x1153,0x1112,0x1931,0x1931,0x1910,0x2110,0x212F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x28EF,0x290F,0x290F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2910,0x2110,0x2910,0x2110,0x210F,0x2910,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x210F,0x2110,0x2910,0x2110,0x2110,0x2130,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x20EF,0x290F,0x290F,0x2910,0x2930,0x2110,0x210F,0x210F,0x210F,0x2910,0x2930,0x2910,0x2910,0x212F,0x2930,0x2930,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x290F,0x2930,0x210F,0x210F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2910, + 0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2930,0x2110,0x2130,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x212F,0x210F,0x210F,0x210F,0x2130,0x212F,0x2950,0x212F,0x2130,0x2130,0x212F,0x212F,0x2930,0x2930,0x212F,0x292F,0x290F,0x2930,0x2930,0x210F,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x212F,0x210F,0x210F,0x2910,0x2110,0x2110,0x2930,0x2111,0x2111,0x2132,0x1912,0x1112,0x1154,0x1196,0x11D7,0x09D8,0x09D8,0x09D9,0x09D9,0x09D9,0x09D9,0x09D8,0x09B8,0x0996,0x19B7,0x1995,0x1133,0x10F1,0x1111,0x1931,0x1931,0x2152,0x1932,0x1112,0x1133,0x1174,0x11B6,0x09B7,0x09F9,0x09D8,0x01D9,0x01D9,0x01F9,0x01D9,0x01B8,0x01B8,0x09F9,0x09F8,0x11D8,0x11D7,0x1154,0x1932,0x1911,0x2131,0x2131,0x2131,0x1911,0x10F1,0x1133,0x1195,0x11B6,0x09D7,0x09F9,0x09F9,0x01D9,0x01D9,0x01D9,0x01D8,0x01D8,0x01D8,0x09D8,0x09D8,0x11F7,0x19D6,0x1132,0x1911,0x2151,0x2151,0x2131,0x1931,0x1931,0x1132,0x1132,0x1174,0x11B6,0x19F8,0x11F8,0x09D8,0x01D8,0x01D9,0x01F9,0x01D9,0x01D9,0x01F9,0x0A19,0x1219,0x11F7,0x1174,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2130,0x210F,0x2110,0x2930,0x2110,0x210F,0x2930,0x210F,0x2110,0x2930,0x210F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2930,0x2930,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x2910,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x212F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x290F,0x20EE,0x20CD,0x20CD,0x288C,0x38EC,0x7A92,0xBC79,0xDD5C,0xD4FA,0xD4FA,0xD4FA,0xD4FA,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4D9,0xD4D8,0xD4B8,0xD4B8,0xD4B8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xD4D8,0xCCD8,0xCCD8,0xCCD8,0xCCD8,0xCCD8,0xCCD8,0xCCB8,0xCCB8,0xCCD8,0xCCD8,0xCCD8,0xCCD8,0xCCD8,0xCCD8,0xCCD8,0xCCD8,0xCCB8,0xCCD8,0xCCD8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCD8,0xCCD8,0xD4D8,0xCCB8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4D8,0xD4B8,0xCCB8,0xCCB8,0xD4B8,0xD4B8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xD4D8,0xCCB8,0xCCD8,0xCCD8,0xCCD8,0xCCD8,0xCCD8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4D8,0xD4D8,0xD4B8,0xD4D8,0xCCB8,0xD4D8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4D8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xD4B8,0xCCB8,0xCCB8,0xCCB8,0xD4B8,0xCCB8,0xD4B8,0xD4B8,0xD4B8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xD4B8,0xD4B8,0xCCB8,0xD4B8,0xD4B8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xCCB8,0xD4B8,0xD4B8,0xCCB8,0xCCB8,0xD4B8,0xD4B8,0xD498,0xD498,0xD478,0xDC78,0xDC58,0xDC17,0xDBD7,0xD396,0xD376,0xDB56,0xDB36,0xDAF6,0xD2D5,0xDAB5,0xDA95,0xD274,0xD274,0xD274,0xD275,0xC254,0xBA34,0xB214,0xB214,0xB214,0xB214,0xB214,0xB1F4,0xB1F4,0xB9F4,0xB1D3,0xB1D3,0xB1D3,0xB1D2,0xB212,0xCB15,0xDBD8,0xDC18,0xDC78,0xDC78,0xD478,0xD478,0xD498,0xD498,0xD498,0xD498,0xD498,0xCCB8,0xD498,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xD4B8,0xCC98,0xD4B8,0xD4B8,0xD4B8,0xD498,0xD4B8,0xD498,0xD4B8,0xD498,0xD498,0xD4B8,0xD498,0xD498,0xDC98,0xDC98,0xDC98,0xDC98,0xDC98,0xDC98,0xE4B8,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE498,0xE478,0xE478,0xE478,0xE478,0xE478,0xE477,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE437,0xE457,0xDC37,0xE437,0xE437,0xE437,0xE457,0xE457,0xE458,0xEC58,0xEC59,0xEC79,0xE47A,0xCC3B,0x9B7B,0x41B7,0x29BA,0x221C,0x1A3D,0x0A3E,0x0A3F,0x023F,0x0A3E,0x125E,0x123D,0x11FC,0x19DB,0x427D,0x5AFE,0x429D,0x323C,0x19FA,0x0A5A,0x0B7C,0x0C9E,0x0D9F,0x0E3F,0x0EDF,0x0F3F,0x0F7F,0x0FBF,0x0FDF,0x0FFF,0x07DF,0x07DF,0x07BF,0x079F,0x0F9F,0x177F,0x277F,0x373F,0x46DE,0x76BF,0x74B9,0x5A71,0x9A94,0xB233,0xB9D3,0xC9B3,0xC173,0xC973,0xC993,0xC994,0xC193,0xC1B4,0xB9D4,0xB215,0x99F5,0x6932,0x5911,0x5152,0x5193,0x4972,0x4172,0x4172,0x3951,0x3951,0x3931,0x3951,0x3972,0x3151,0x3151,0x3151,0x3150,0x2930,0x3151,0x3151,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x2931,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x292F,0x290F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x210F,0x2130,0x212F,0x212F,0x2930,0x2930,0x212F,0x212F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2930,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1911,0x1132,0x1153,0x1994,0x19D6,0x2217,0x21F6,0x1995,0x1173,0x1112,0x1911,0x1931,0x1910,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x20F0,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2130,0x212F,0x210F,0x210F,0x2130,0x212F,0x292F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2930,0x2130,0x2130,0x2110,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2130,0x210F,0x2930,0x2930,0x2110,0x2110,0x210F,0x2910,0x210F,0x2110,0x2910,0x2930,0x210F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2910,0x2910,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x2910,0x2930,0x2930,0x2910,0x2910,0x290F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x290F,0x2930,0x2930,0x20EF,0x20EF,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x292F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x210F,0x210F,0x210E,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2910, + 0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x212F,0x2930,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2930,0x212F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x210F,0x210F,0x2930,0x2930,0x2930,0x290F,0x292F,0x290F,0x20EF,0x2910,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x2930,0x2910,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2131,0x2111,0x2132,0x1912,0x1113,0x1154,0x1195,0x11B7,0x09D8,0x09D8,0x09F9,0x01D9,0x09D9,0x09D9,0x09D8,0x09B8,0x0997,0x1196,0x1995,0x1113,0x10F1,0x1111,0x1931,0x1931,0x2132,0x1932,0x1132,0x1132,0x1174,0x11D6,0x11D8,0x09D8,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B8,0x09F9,0x09D8,0x11D8,0x11B7,0x1995,0x1953,0x1912,0x2131,0x2131,0x1911,0x10F1,0x1133,0x1195,0x11B6,0x09D8,0x09D8,0x09F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D8,0x11F8,0x11D7,0x19F6,0x1153,0x1931,0x2131,0x2152,0x1931,0x1931,0x1132,0x1132,0x1154,0x19D6,0x1A18,0x09D8,0x09F9,0x01B8,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x0A19,0x1219,0x11F7,0x1174,0x1952,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2930,0x2930,0x2910,0x2930,0x2110,0x2110,0x2110,0x210F,0x2910,0x2910,0x2930,0x2110,0x2930,0x2930,0x210F,0x290F,0x2930,0x2110,0x2110,0x2130,0x210F,0x2110,0x2910,0x210F,0x2110,0x210F,0x210F,0x2930,0x290F,0x212F,0x210F,0x210F,0x2930,0x212F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x210F,0x20EE,0x20EE,0x20CD,0x20AC,0x206B,0x51AF,0xB459,0xCCDA,0xD4DA,0xD4FA,0xD4D9,0xD4D9,0xD4D9,0xD4B9,0xD4B8,0xD4B8,0xD4B8,0xCCB8,0xCCB8,0xCC98,0xCC98,0xCCB8,0xCC98,0xCC98,0xCC98,0xCC98,0xCC98,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xC497,0xCC97,0xCC97,0xC497,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC77,0xCC77,0xCC77,0xCC77,0xCC77,0xCC77,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC77,0xCC77,0xCC97,0xCC77,0xCC77,0xCC97,0xCC97,0xCC77,0xCC77,0xCC77,0xCC77,0xCC77,0xCC77,0xCC77,0xCC77,0xCC98,0xCC97,0xCC97,0xCC97,0xCC77,0xCC77,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC77,0xCC97,0xCC97,0xCC97,0xCC98,0xCC97,0xCC98,0xCC77,0xCC77,0xCC98,0xCC98,0xCC77,0xCC98,0xCC98,0xCC97,0xCC98,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC98,0xCC98,0xCC97,0xCC97,0xCC77,0xCC97,0xCC97,0xCC97,0xCC77,0xCC97,0xCC98,0xCC98,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC77,0xCC77,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC77,0xCC97,0xCC97,0xCC97,0xCC97,0xCC77,0xCC77,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC77,0xCC77,0xCC97,0xCC97,0xCC77,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC77,0xCC77,0xCC97,0xCC97,0xCC77,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC77,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC97,0xCC98,0xCC98,0xCC98,0xCC78,0xCC77,0xCC78,0xCC78,0xCC78,0xCC78,0xCC78,0xCC98,0xCC78,0xD478,0xD458,0xD478,0xD438,0xD417,0xD3D7,0xD3B7,0xD376,0xD356,0xD336,0xDB16,0xDAF6,0xD2B5,0xDA95,0xDA75,0xD254,0xD254,0xD234,0xD254,0xCA34,0xC214,0xB9F3,0xB9F3,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9D3,0xB9D3,0xB9D3,0xB1B2,0xA9D2,0xB212,0xCB36,0xDBF8,0xDC38,0xD437,0xD458,0xD457,0xD478,0xD457,0xCC57,0xD478,0xCC78,0xCC77,0xCC98,0xCC78,0xCC77,0xCC78,0xCC78,0xCC78,0xCC98,0xCC78,0xCC78,0xCC78,0xCC77,0xCC77,0xCC77,0xCC78,0xCC78,0xCC78,0xCC78,0xCC78,0xCC78,0xD478,0xD478,0xD478,0xD478,0xD478,0xDC78,0xDC77,0xDC77,0xDC77,0xDC77,0xDC77,0xE478,0xE477,0xDC77,0xDC77,0xE477,0xDC77,0xE477,0xE477,0xDC77,0xE477,0xE477,0xE477,0xDC77,0xE498,0xE477,0xE477,0xE478,0xE478,0xE478,0xE478,0xE478,0xE478,0xE478,0xDC57,0xE478,0xDC78,0xDC77,0xDC77,0xDC78,0xDC77,0xDC78,0xDC57,0xDC77,0xDC77,0xE477,0xE477,0xE457,0xE477,0xE477,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC37,0xE457,0xDC37,0xE457,0xE457,0xE437,0xE437,0xE457,0xE437,0xE457,0xEC58,0xEC58,0xEC59,0xDC5A,0xCC3B,0x9B9B,0x49F8,0x31DA,0x221C,0x1A5D,0x0A3E,0x0A5F,0x025F,0x025E,0x0A5E,0x125E,0x1A5E,0x1A3D,0x2A3C,0x4AFF,0x3A9D,0x2A5C,0x19FB,0x0A3A,0x0AFC,0x0BFD,0x0D3F,0x0DFF,0x0EBF,0x0F3F,0x0F9F,0x0FBF,0x0FFF,0x0FFF,0x07DF,0x07DF,0x07BF,0x07BF,0x0F9F,0x179F,0x277F,0x2F3F,0x46DF,0x6E9F,0x74FA,0x5A51,0x9293,0xAA13,0xB9D3,0xC1B3,0xC173,0xC993,0xC993,0xC9B4,0xC193,0xC1B4,0xB9F4,0xB215,0x9A15,0x6932,0x5912,0x5152,0x5172,0x4992,0x4172,0x4172,0x3952,0x4172,0x3951,0x3951,0x3971,0x3171,0x3151,0x3151,0x3150,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x290F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2110,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x292F,0x210F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2130,0x2110,0x2130,0x2131,0x1931,0x1911,0x1112,0x1953,0x1974,0x19D6,0x2217,0x21F6,0x19B5,0x1173,0x1112,0x1931,0x1931,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2110,0x20F0,0x210F,0x210F,0x2910,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x2930,0x2110,0x2110,0x2130,0x2930,0x210F,0x210F,0x210F,0x2130,0x212F,0x210F,0x212F,0x292F,0x292F,0x290F,0x290F,0x2930,0x2930,0x2930,0x290F,0x2910,0x2110,0x2130,0x2110,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2110,0x2910,0x2910,0x20EF,0x2910,0x2110,0x2910,0x2930,0x290F,0x290F,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2930,0x2910,0x210F,0x210F,0x2930,0x292F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x2910,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2910,0x210F,0x292F,0x2930,0x210F,0x290F,0x2930,0x290F,0x210F,0x290F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2950,0x212F,0x292F,0x210F,0x2930,0x210F,0x210F,0x2910,0x2110, + 0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2930,0x212F,0x292F,0x212F,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x292F,0x292F,0x212F,0x212F,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2110,0x2930,0x2130,0x2131,0x1911,0x1912,0x10F2,0x1113,0x1154,0x1196,0x0996,0x0997,0x09D8,0x09D9,0x09F9,0x09D9,0x09D9,0x09B8,0x09B8,0x11D8,0x1196,0x1995,0x1112,0x10F1,0x1911,0x2152,0x1931,0x1931,0x1932,0x1132,0x1132,0x1174,0x11B6,0x09D7,0x09D8,0x01D9,0x01F9,0x01FA,0x01DA,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01B8,0x09B7,0x1196,0x1995,0x1953,0x1912,0x1911,0x18F1,0x10F1,0x1153,0x1195,0x11D7,0x09D8,0x09F9,0x09F9,0x01D9,0x01D9,0x01D9,0x01FA,0x01F9,0x01F9,0x01D9,0x01D9,0x09D8,0x09B7,0x11D7,0x21F7,0x1112,0x1111,0x2152,0x2152,0x1932,0x1932,0x0912,0x1174,0x11B6,0x11F8,0x09D8,0x09D9,0x01D9,0x01D9,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01FA,0x0A19,0x09F8,0x11D7,0x1174,0x1953,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x2930,0x2110,0x2930,0x210F,0x210F,0x2910,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2930,0x290F,0x210F,0x2930,0x212F,0x210F,0x2930,0x210F,0x2930,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x210F,0x210F,0x20EE,0x20EE,0x20CD,0x208C,0x410D,0x9355,0xD51C,0xD4FA,0xD4D9,0xD4D9,0xD4B9,0xD498,0xD498,0xD498,0xCC98,0xCC98,0xCC78,0xCC98,0xCC98,0xCC78,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC457,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC477,0xC457,0xC477,0xC477,0xC477,0xC457,0xC477,0xC457,0xC477,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC456,0xC456,0xC456,0xC457,0xC457,0xC477,0xC456,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC456,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC477,0xC457,0xC477,0xC457,0xC477,0xC477,0xC477,0xC457,0xC477,0xC456,0xC477,0xC456,0xC477,0xC457,0xC477,0xC457,0xC457,0xC457,0xC457,0xC456,0xC457,0xC456,0xC456,0xC456,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC477,0xC457,0xC457,0xC457,0xC457,0xC457,0xC477,0xC477,0xC457,0xC457,0xC477,0xC477,0xC477,0xC457,0xC477,0xC456,0xC477,0xC457,0xC477,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC456,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC477,0xC457,0xC456,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC456,0xC457,0xC456,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC456,0xC456,0xC457,0xC457,0xC457,0xC456,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC456,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xCC78,0xC457,0xCC57,0xCC58,0xCC57,0xCC37,0xCC37,0xD417,0xD3F7,0xD3B7,0xD376,0xD336,0xD316,0xD2F5,0xD2D5,0xD2B5,0xDAB5,0xDA95,0xDA75,0xDA55,0xD234,0xD214,0xCA14,0xCA14,0xC9F4,0xC1F3,0xC1D3,0xC1F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9F3,0xB1B2,0xB1D2,0xA9F2,0xBAB4,0xDC18,0xD438,0xD417,0xCC17,0xCC37,0xCC37,0xCC37,0xCC37,0xCC37,0xCC57,0xCC57,0xCC57,0xC457,0xC457,0xC437,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC457,0xC437,0xC457,0xC457,0xCC57,0xC457,0xC457,0xCC57,0xCC57,0xCC57,0xCC57,0xCC57,0xD458,0xD457,0xD457,0xD457,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC77,0xDC77,0xDC77,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC77,0xDC77,0xE477,0xDC77,0xDC77,0xDC77,0xDC57,0xDC57,0xDC57,0xDC57,0xE477,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xDC57,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE437,0xE437,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xE437,0xDC37,0xE437,0xE437,0xEC58,0xEC58,0xEC59,0xE45A,0xCC1A,0x9B9A,0x5218,0x31FA,0x2A3C,0x1A5D,0x0A5E,0x0A7F,0x0A7F,0x027F,0x0A7E,0x0A7E,0x127E,0x1A5D,0x225D,0x32BE,0x329E,0x225D,0x121B,0x0A5B,0x02BB,0x037C,0x047D,0x0D9F,0x16BF,0x0F3F,0x0F9F,0x0FBF,0x07BF,0x07DF,0x07DF,0x07DF,0x07BF,0x07BF,0x079F,0x179F,0x1F7F,0x2F3F,0x46DE,0x6EBF,0x7D3B,0x5251,0x9273,0xAA13,0xB9F3,0xC1B3,0xC9B3,0xC9B4,0xC993,0xC193,0xC1B3,0xB9B3,0xB9F4,0xB215,0x9A36,0x6952,0x5932,0x5132,0x5173,0x4152,0x4172,0x4172,0x3952,0x3952,0x3951,0x3951,0x3951,0x3171,0x3151,0x3151,0x3150,0x3150,0x2950,0x2950,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2110,0x2910,0x2930,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x2930,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2151,0x2151,0x1911,0x1911,0x1932,0x1953,0x1174,0x19D6,0x2217,0x19D6,0x21D5,0x1153,0x1132,0x1931,0x1930,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2110,0x290F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2910,0x2930,0x2910,0x2110,0x2910,0x2910,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x212F,0x212F,0x2930,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x292F,0x2930,0x210F,0x290F,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x212F,0x212F,0x290F,0x210F,0x210F,0x290F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x2930,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x292F,0x292F,0x210F,0x290F,0x290F,0x210F,0x292F,0x210F,0x290F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x2930,0x212F,0x2110,0x2110,0x210F, + 0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x2110,0x2130,0x2130,0x2110,0x2131,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x292F,0x2930,0x2930,0x212F,0x292F,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x292F,0x2930,0x210F,0x212F,0x210F,0x2910,0x2910,0x2910,0x210F,0x290F,0x2930,0x210F,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2910,0x210F,0x290F,0x2930,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x2930,0x2130,0x2130,0x2131,0x2131,0x1912,0x1112,0x1133,0x1154,0x1196,0x11B7,0x09B8,0x09D8,0x09D9,0x09D9,0x01D9,0x09D9,0x09D9,0x09D8,0x11D8,0x19D7,0x1995,0x1133,0x10F1,0x1911,0x1931,0x1951,0x1931,0x1931,0x1132,0x1153,0x1194,0x11D6,0x09B7,0x01B8,0x09D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01F9,0x01D9,0x09D8,0x09B7,0x11B7,0x11B6,0x1974,0x1953,0x1912,0x1911,0x10D1,0x1133,0x1195,0x11B7,0x09B7,0x01B8,0x09F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01FA,0x021A,0x01F9,0x01D9,0x01D9,0x01B8,0x09B8,0x19F7,0x19D6,0x1112,0x1911,0x1932,0x1932,0x1111,0x1132,0x1174,0x11B6,0x11D7,0x09F8,0x09D9,0x01B9,0x01D9,0x01D9,0x01DA,0x01FA,0x01DA,0x01DA,0x01FA,0x09FA,0x09F9,0x09F8,0x11B6,0x1974,0x1952,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x210F,0x212F,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x212F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x292F,0x292F,0x290F,0x210F,0x210F,0x20EF,0x20EE,0x28CD,0x206B,0x518F,0xB438,0xD4DB,0xD4FA,0xDCD9,0xD4B9,0xD498,0xD498,0xCC78,0xCC78,0xCC78,0xC477,0xC477,0xC477,0xC477,0xBC76,0xBC56,0xB435,0xAC35,0xAC15,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xABF4,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xABF4,0xABF4,0xABF4,0xABF4,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xAC14,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xAC14,0xABF4,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xABF4,0xAC14,0xABF4,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xABF4,0xAC14,0xAC14,0xABF4,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xABF4,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xAC14,0xABF4,0xABF4,0xABF4,0xAC14,0xAC14,0xAC14,0xABF4,0xABF4,0xABF4,0xABF4,0xAC14,0xABF4,0xAC14,0xABF4,0xABF4,0xAC14,0xAC14,0xAC14,0xAC14,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xAC14,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xAC14,0xAC14,0xAC14,0xABF4,0xABF4,0xABF4,0xAC14,0xABF4,0xABF4,0xABF4,0xABF4,0xAC14,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xA3F4,0xABF4,0xA3F4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xA3F4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xAC15,0xAC15,0xAC15,0xAC15,0xABF5,0xABF5,0xB415,0xB415,0xB415,0xB415,0xB3F5,0xBBD5,0xC3D5,0xCB96,0xD356,0xD315,0xD2F5,0xD2D5,0xD2B4,0xD295,0xDA95,0xDA75,0xD255,0xD234,0xC9F4,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xB9D3,0xB9B3,0xB9B3,0xB1B2,0xA9D2,0xA1F1,0xB2D3,0xDCB9,0xDCD9,0xCCB8,0xCC97,0xC476,0xBC35,0xB415,0xB415,0xB415,0xB415,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABD4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF4,0xABF5,0xABF4,0xABF4,0xAC15,0xABF4,0xB415,0xB415,0xBC15,0xC436,0xCC37,0xD437,0xD437,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC77,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC37,0xDC36,0xDC37,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC37,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xE437,0xDC37,0xE437,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xE437,0xE437,0xE437,0xEC58,0xEC58,0xE459,0xDC5A,0xCC1A,0x9B7A,0x5A58,0x3A3A,0x2A5C,0x1A7D,0x127E,0x0A7F,0x0A9F,0x0A9F,0x029E,0x0A7E,0x0A7E,0x129E,0x1A7D,0x229E,0x229E,0x1A7D,0x125C,0x0A7C,0x029C,0x031C,0x03FC,0x051E,0x169F,0x173F,0x179F,0x0FBF,0x0FBF,0x0FDF,0x07DF,0x07DF,0x07BF,0x07BF,0x0FBF,0x179F,0x1F7F,0x2F3F,0x46FF,0x6EBF,0x859D,0x5271,0x9293,0xAA33,0xB9B3,0xC1B3,0xC9B3,0xC993,0xC173,0xC193,0xC1B3,0xC1D4,0xB9F4,0xB215,0x9A15,0x6932,0x5932,0x5132,0x4952,0x4152,0x4172,0x4172,0x3972,0x3951,0x3951,0x3951,0x3951,0x3171,0x3151,0x3150,0x3150,0x2950,0x2950,0x2950,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x2930,0x2910,0x2910,0x2110,0x2930,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x210F,0x212F,0x212F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x290F,0x292F,0x210F,0x212F,0x212F,0x292F,0x292F,0x210F,0x292F,0x212F,0x212F,0x212F,0x292F,0x2930,0x210F,0x2130,0x2130,0x2150,0x2151,0x2131,0x1910,0x1911,0x1911,0x1932,0x1153,0x1174,0x21F6,0x2217,0x21D6,0x19B5,0x1153,0x1132,0x1111,0x1910,0x2130,0x1930,0x2130,0x1910,0x2130,0x2130,0x2110,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2950,0x210F,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x210F,0x2930,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2930,0x210F,0x2910,0x2910,0x2910,0x210F,0x2910,0x2930,0x290F,0x290F,0x2930,0x290F,0x2930,0x2110,0x2910,0x2910,0x2110,0x2110,0x2130,0x210F,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x210F,0x210F,0x212F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x290F,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x212F,0x212F,0x290F,0x210F,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2110,0x2930, + 0x1911,0x2111,0x2111,0x2111,0x2131,0x2131,0x2131,0x2131,0x1910,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x2131,0x2131,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x292F,0x212F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x210F,0x2930,0x210F,0x292F,0x212F,0x210F,0x2930,0x290F,0x290F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2130,0x2130,0x1911,0x10F1,0x1132,0x1153,0x1175,0x1176,0x11B7,0x09D8,0x09F9,0x09D9,0x01B8,0x01D9,0x01D9,0x09D9,0x09D9,0x11F8,0x11B7,0x1175,0x1133,0x1112,0x10F1,0x1931,0x1931,0x1931,0x1131,0x1132,0x0932,0x0974,0x11D6,0x09D7,0x09F8,0x01D8,0x01B9,0x01D9,0x01D9,0x01DA,0x01FA,0x01FA,0x01FA,0x01D9,0x01B9,0x01D9,0x09D9,0x11D8,0x11B7,0x1996,0x1953,0x1112,0x10F1,0x10D1,0x1133,0x1995,0x1196,0x09B7,0x09F9,0x01D9,0x01D9,0x01D9,0x01FA,0x01FA,0x01FA,0x01FA,0x01D9,0x01D9,0x01D9,0x01D9,0x09D8,0x11D8,0x19D7,0x1154,0x1133,0x1952,0x1111,0x10F1,0x1133,0x1154,0x19D7,0x09B7,0x09F9,0x01D9,0x09F9,0x01D9,0x01DA,0x01DA,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x09F9,0x1218,0x1196,0x1953,0x1911,0x1910,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2930,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2110,0x2110,0x2930,0x210F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x290F,0x2930,0x210F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x20EE,0x20EE,0x20AD,0x206B,0x7252,0xCCDB,0xD4FB,0xD4DA,0xD4B9,0xD4B9,0xD498,0xCC78,0xCC78,0xCC78,0xC457,0xC457,0xBC56,0xBC97,0xC4D7,0xC517,0xD5BA,0xE67C,0xF71F,0xFF9F,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFF9F,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFF9F,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFF9F,0xFFBF,0xFF9F,0xFF9F,0xFFBF,0xFF9F,0xFF9F,0xFF7F,0xFF1F,0xE499,0xC314,0xD2F5,0xD2D5,0xD2B5,0xD2B5,0xD295,0xD275,0xD254,0xD214,0xCA14,0xD214,0xC9F3,0xC9D3,0xC9D3,0xC9D3,0xC1D3,0xC1D3,0xC1D3,0xB9B3,0xB9B3,0xB9B3,0xB192,0xA9B1,0xA1F1,0xBB95,0xFE5E,0xFF3F,0xFF7F,0xFF9F,0xFF9F,0xFF9F,0xFF9F,0xFF9F,0xFF9F,0xFF9F,0xFF9F,0xFF9F,0xFF9F,0xFF9F,0xFF9F,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFFBF,0xFF9F,0xFFBF,0xFFBF,0xFF9F,0xFF5F,0xCD39,0xC456,0xCC36,0xD437,0xD437,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC36,0xDC36,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xDC37,0xDC37,0xE457,0xDC37,0xDC37,0xE437,0xE437,0xE457,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xE457,0xDC37,0xDC37,0xE437,0xE437,0xE457,0xEC58,0xEC58,0xEC59,0xDC5A,0xC3FA,0xA37A,0x5A58,0x425A,0x2A5C,0x1A7D,0x127E,0x0A9F,0x029F,0x0ABF,0x02BE,0x029E,0x0A9E,0x0ABE,0x12BE,0x12BE,0x1ABE,0x127E,0x0A9D,0x0A9D,0x02BC,0x02FC,0x039C,0x049D,0x161F,0x16FF,0x177F,0x17BF,0x0FBF,0x0FDF,0x07DF,0x07DF,0x07BF,0x07BF,0x0FBF,0x17BF,0x1F7F,0x2F5F,0x3EDE,0x669F,0x7D9C,0x5272,0x8A73,0xAA33,0xB1B3,0xC193,0xC9B4,0xC193,0xC993,0xC993,0xC193,0xC1B3,0xB9F4,0xB215,0x9A35,0x6932,0x5912,0x5152,0x4952,0x4972,0x4972,0x4172,0x3972,0x3951,0x3971,0x3951,0x3951,0x3171,0x3151,0x3151,0x3150,0x3150,0x2950,0x2950,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x2130,0x2130,0x2930,0x2130,0x2950,0x2110,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2130,0x212F,0x210F,0x2930,0x290F,0x2930,0x210F,0x2930,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2110,0x210F,0x2930,0x290F,0x290F,0x2930,0x2930,0x290F,0x2930,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x210F,0x2130,0x212F,0x210F,0x212F,0x2150,0x2150,0x2110,0x2131,0x1911,0x1932,0x1953,0x1974,0x19B5,0x19D6,0x19B6,0x19B6,0x19B5,0x1153,0x1132,0x1931,0x1931,0x1930,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x2910,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2930,0x2910,0x210F,0x2930,0x2930,0x212F,0x210F,0x2130,0x2110,0x2910,0x2910,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x210F,0x2110,0x210F,0x2130,0x2110,0x2910,0x2110,0x2930,0x2130,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x212F,0x290F,0x292F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x212F,0x2930,0x2110,0x2110,0x2930,0x2910,0x290F,0x212F,0x2930,0x212F,0x212F,0x212F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2930,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x210F,0x2130,0x2130,0x210F,0x210F,0x290F,0x292F,0x292F,0x290F,0x210F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x290F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2110, + 0x1912,0x1932,0x1932,0x1932,0x1932,0x2132,0x2132,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1931,0x1931,0x1952,0x1952,0x1932,0x1952,0x1932,0x1932,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1952,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x212F,0x212F,0x212F,0x212F,0x2930,0x292F,0x2930,0x212F,0x2930,0x290F,0x2930,0x2930,0x2930,0x2910,0x290F,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x210F,0x2930,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x212F,0x2930,0x292F,0x2930,0x210F,0x210F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x290F,0x2930,0x292F,0x2930,0x2930,0x2130,0x2131,0x1911,0x1911,0x1932,0x1153,0x1154,0x1196,0x11B7,0x09D8,0x09D8,0x09D9,0x01B8,0x01D9,0x01B9,0x09D9,0x09D8,0x11F8,0x19F8,0x1175,0x1133,0x1112,0x10F1,0x2132,0x2152,0x1931,0x1932,0x1132,0x1133,0x1194,0x11B6,0x09D7,0x01D8,0x01D8,0x01D8,0x01D9,0x01D9,0x01DA,0x01FA,0x01DA,0x01FA,0x01DA,0x01D9,0x01D9,0x09D9,0x09B8,0x19F8,0x19B6,0x1995,0x1132,0x1112,0x10D1,0x1133,0x1195,0x1196,0x11D8,0x09D9,0x01D9,0x01D9,0x01D9,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01D9,0x01DA,0x01B9,0x09D9,0x09D8,0x11D8,0x19B6,0x1154,0x1133,0x1132,0x0911,0x1132,0x1174,0x11B6,0x11D8,0x09D9,0x09D9,0x01D9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x09FA,0x09F9,0x11F8,0x11D7,0x1174,0x1132,0x1931,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x212F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x2110,0x2930,0x2110,0x2930,0x210F,0x212F,0x2930,0x212F,0x2130,0x2130,0x210F,0x212F,0x2130,0x2130,0x2110,0x2930,0x2110,0x2130,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x20EF,0x20EE,0x28CD,0x206B,0x7AD3,0xCCFB,0xD4DA,0xD4B9,0xD4B9,0xD499,0xD498,0xCC78,0xC457,0xC477,0xBC77,0xB436,0xD559,0xEE7D,0xFEFF,0xFF5F,0xFF7F,0xFF9F,0xFFBF,0xF7BF,0xF7BF,0xF7BF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7BF,0xF7DF,0xF7BF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7BF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7BF,0xF7BF,0xF7DF,0xF7DF,0xF7BF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7BF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7BF,0xF7BF,0xF7BF,0xF7BF,0xF7BF,0xF7BF,0xF7BF,0xF7BF,0xFF9F,0xFF7F,0xD457,0xC2D4,0xCAB4,0xCA94,0xD294,0xD295,0xD275,0xD254,0xCA34,0xCA13,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC9D3,0xC9D3,0xC1D3,0xC1D3,0xC1D3,0xB9B3,0xB9B3,0xB1B2,0xB1D2,0xA1F1,0xC3D6,0xFEBF,0xFF7F,0xFFBF,0xFFDF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7BF,0xF7DF,0xF7DF,0xF7DF,0xF7BF,0xF7BF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xFFBF,0xFF5F,0xD579,0xC436,0xCC56,0xD457,0xD457,0xD437,0xDC57,0xDC77,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC56,0xDC36,0xDC36,0xDC36,0xDC36,0xE457,0xDC37,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC37,0xE437,0xE437,0xE437,0xE437,0xE457,0xE437,0xDC37,0xE437,0xE437,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE437,0xE437,0xE457,0xEC58,0xEC78,0xE459,0xDC59,0xC3F9,0x9B7A,0x5A78,0x427A,0x2A7B,0x1A7D,0x129E,0x0A9E,0x0ABF,0x0ADF,0x0ADF,0x02BE,0x02BE,0x029E,0x0ABE,0x12DF,0x12BF,0x0A9E,0x0A9E,0x02BD,0x02BD,0x02FC,0x035C,0x041C,0x0D9E,0x16BF,0x175F,0x179F,0x17BF,0x0FDF,0x07BF,0x07DF,0x07BF,0x07BF,0x07BF,0x17BF,0x1F7F,0x2F3F,0x3EFF,0x66BF,0x7DDD,0x5292,0x8A93,0xAA13,0xB1B3,0xC1B3,0xC9B3,0xC9B3,0xC993,0xC9B3,0xC1B3,0xC1B4,0xB9D4,0xB215,0x91F5,0x6952,0x5932,0x5152,0x5172,0x4972,0x4172,0x4172,0x3951,0x3972,0x3971,0x3971,0x3971,0x3151,0x3151,0x3151,0x3150,0x3150,0x3150,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x2930,0x212F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2930,0x2130,0x212F,0x2930,0x210F,0x290F,0x210F,0x210F,0x2930,0x290F,0x2910,0x290F,0x2930,0x2930,0x210F,0x210F,0x2930,0x210F,0x2930,0x290F,0x290F,0x210F,0x212F,0x290F,0x290F,0x212F,0x212F,0x2930,0x290F,0x210F,0x212F,0x210F,0x212F,0x292F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2151,0x2132,0x1932,0x1953,0x1174,0x19B6,0x1196,0x19B6,0x2217,0x19B5,0x1132,0x1932,0x1931,0x1911,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2930,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2930,0x210F,0x2930,0x2930,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2930,0x2110,0x2930,0x2930,0x2110,0x2910,0x2910,0x210F,0x210F,0x2130,0x2110,0x210F,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2930,0x2910,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x210F,0x2930,0x2130,0x2130,0x2930,0x2930,0x210F,0x2910,0x2910,0x2910,0x2930,0x2110,0x210F,0x2130,0x2930,0x210F,0x2110,0x2930,0x2930,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x2930,0x210F,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2930,0x2110,0x290F,0x210F,0x2930,0x2130,0x210F,0x290F,0x210F,0x292F,0x2930,0x290F,0x292F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2910,0x2910,0x2930,0x290F,0x2110,0x210F,0x2130,0x2130,0x212F,0x212F,0x292F,0x210F,0x210F,0x292F,0x212F,0x212F,0x292F,0x290F,0x290F,0x210F,0x2930, + 0x08F2,0x08F2,0x10F2,0x10F2,0x10F2,0x10F2,0x1112,0x1112,0x1112,0x1111,0x08F1,0x08F1,0x1112,0x08F1,0x08F1,0x08F1,0x08F1,0x08F1,0x08F1,0x08F1,0x08F1,0x08F1,0x08F1,0x08F1,0x08F1,0x08F1,0x08F1,0x08F1,0x08F1,0x08F1,0x08D1,0x08F1,0x1111,0x10F1,0x08F1,0x1111,0x08F1,0x08F1,0x1112,0x0912,0x0912,0x1112,0x1112,0x1132,0x1132,0x1932,0x1932,0x1931,0x1931,0x1931,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2930,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x2930,0x212F,0x290F,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x2910,0x2910,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x2930,0x290F,0x210F,0x290F,0x2930,0x290F,0x210F,0x2930,0x212F,0x210F,0x210F,0x2130,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2931,0x2131,0x2111,0x1911,0x1112,0x1133,0x1174,0x1196,0x11D8,0x11D8,0x09D8,0x01B8,0x09D9,0x01D9,0x01D9,0x09D9,0x09D8,0x11D8,0x11B7,0x1175,0x1933,0x1912,0x10F1,0x1931,0x2131,0x1931,0x1932,0x1112,0x1153,0x1174,0x11B6,0x09D7,0x01D8,0x01F9,0x01F9,0x01F9,0x01FA,0x01DA,0x01DA,0x01FA,0x01B9,0x01DA,0x01D9,0x01D9,0x01B8,0x09B8,0x09B7,0x11D7,0x1995,0x1133,0x08F1,0x08D1,0x1133,0x1195,0x11D7,0x11F8,0x09D8,0x01D9,0x01D9,0x01FA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FA,0x01D9,0x01B9,0x01D9,0x01D9,0x09D9,0x11F8,0x11B7,0x0934,0x1113,0x1132,0x08F1,0x0913,0x1174,0x19D7,0x11D8,0x1219,0x09F9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x09FA,0x01D9,0x09D8,0x11B7,0x1175,0x1953,0x1932,0x1910,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x2110,0x212F,0x2930,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2930,0x2130,0x212F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x20EE,0x20EE,0x20CD,0x288B,0x8B14,0xD51B,0xD4DA,0xD4B9,0xD4B9,0xD499,0xD478,0xCC78,0xC457,0xBC56,0xBCB7,0xDDFB,0xFF7F,0xFF9F,0xFF9F,0xF79F,0xF7BF,0xF7BF,0xF7BF,0xF7BF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFFF,0xEFFF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFBF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFBF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFFF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFFF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFFF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFFF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xF7DF,0xF7DF,0xEFBF,0xF7BF,0xF7BF,0xF7BF,0xF7BF,0xF7BF,0xFF7F,0xCC17,0xBA93,0xC273,0xCA54,0xCA74,0xD274,0xD254,0xD234,0xCA13,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC9D3,0xC9D3,0xC1D3,0xC1D3,0xC1B3,0xC1B3,0xB9B3,0xB192,0xA9B1,0x99D0,0xB374,0xFF3F,0xFF9F,0xFFBF,0xF7BF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xEFDF,0xF7DF,0xEFDF,0xEFDF,0xF7DF,0xF7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFFF,0xEFFF,0xEFFF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xF7DF,0xF7DF,0xF7BF,0xFFBF,0xFF9F,0xDD9A,0xC456,0xCC36,0xD436,0xD437,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xE457,0xE457,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC57,0xDC36,0xDC57,0xE457,0xE457,0xDC37,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC37,0xDC37,0xE437,0xE437,0xDC37,0xE437,0xE437,0xE437,0xDC37,0xE437,0xE437,0xE457,0xDC37,0xDC37,0xDC37,0xE437,0xE437,0xE457,0xEC58,0xEC58,0xE459,0xDC59,0xC3F9,0x9B79,0x6298,0x429A,0x2A7B,0x1A9D,0x12BE,0x0ABF,0x0ADF,0x0AFF,0x0AFF,0x02DF,0x0AFF,0x02BE,0x02BE,0x0ADE,0x0ADF,0x02BE,0x02BE,0x02BE,0x02DD,0x02FD,0x033C,0x03BC,0x04FD,0x163F,0x1F3F,0x179F,0x17BF,0x0FBF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x0F9F,0x1F7F,0x275F,0x3EFF,0x5EBF,0x7DFD,0x5B34,0x8A93,0xAA33,0xB9D3,0xC1B3,0xC193,0xC993,0xC9B3,0xC193,0xC193,0xC1D4,0xB9F4,0xAA15,0x91F5,0x6932,0x5952,0x5153,0x4972,0x4972,0x4172,0x4172,0x3951,0x3971,0x3951,0x3971,0x3971,0x3171,0x3171,0x3151,0x3150,0x3150,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x210F,0x210F,0x290F,0x210F,0x2930,0x290F,0x2930,0x290F,0x2110,0x2110,0x2910,0x2110,0x2930,0x2110,0x2910,0x2910,0x292F,0x292F,0x292F,0x292F,0x2910,0x290F,0x290F,0x2910,0x210F,0x292F,0x2930,0x2910,0x2110,0x2930,0x290F,0x210F,0x212F,0x2930,0x2930,0x2930,0x212F,0x212F,0x290F,0x290F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2150,0x2150,0x2130,0x2130,0x2131,0x1911,0x1932,0x1153,0x1974,0x1175,0x1196,0x2217,0x21F7,0x1153,0x1132,0x1932,0x1931,0x1910,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x210F,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2110,0x2930,0x2930,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x290F,0x2910,0x290F,0x2930,0x2930,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x210F,0x2910,0x210F,0x2110,0x2910,0x2110,0x210F,0x2110,0x2910,0x2930,0x290F,0x210F,0x2930,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2930,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x2130,0x210F,0x210F,0x2130,0x2930,0x210F,0x212F,0x2130,0x212F,0x2930,0x2110,0x2110,0x2910,0x2110,0x2930,0x2910,0x2110,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x290F,0x210F,0x2930,0x2130,0x212F,0x2930,0x290F,0x290F,0x2910,0x2910,0x290F,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2930,0x210F,0x2910,0x2930,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2910, + 0x0913,0x0934,0x0913,0x0913,0x0913,0x0913,0x0933,0x0933,0x0913,0x0933,0x0933,0x0913,0x0913,0x0933,0x0913,0x0913,0x0933,0x0933,0x0933,0x0933,0x0933,0x0933,0x0933,0x0913,0x0913,0x0933,0x0933,0x0933,0x0933,0x0933,0x1133,0x1133,0x1153,0x1153,0x1153,0x1153,0x1153,0x1153,0x0953,0x1154,0x1154,0x0953,0x0953,0x0933,0x1133,0x1112,0x1112,0x1132,0x1932,0x1931,0x1911,0x2131,0x2131,0x2110,0x2910,0x2110,0x2930,0x2130,0x2110,0x2910,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x2930,0x2930,0x212F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2910,0x2930,0x210F,0x210F,0x2910,0x210F,0x210F,0x290F,0x210F,0x2910,0x2930,0x290F,0x290F,0x2930,0x210F,0x290F,0x2930,0x212F,0x212F,0x2130,0x2130,0x2110,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2930,0x2111,0x2111,0x1911,0x1932,0x1153,0x1154,0x1196,0x11B7,0x09D8,0x09B8,0x09D9,0x09D9,0x01B8,0x09D9,0x09D9,0x09D8,0x11D8,0x1196,0x1175,0x1113,0x1112,0x1911,0x1911,0x2131,0x2131,0x1911,0x1112,0x1153,0x1175,0x11D7,0x09D7,0x01B8,0x01D9,0x01D9,0x01D9,0x01FA,0x01FA,0x01DA,0x01FA,0x01D9,0x01DA,0x01DA,0x01B9,0x01D9,0x09D8,0x09B7,0x11D7,0x19B6,0x1133,0x1112,0x08D2,0x1113,0x1996,0x19D7,0x09D8,0x01D8,0x01D9,0x01B9,0x01D9,0x01DA,0x01FA,0x01FA,0x01FA,0x01FA,0x01FA,0x01D9,0x01D9,0x01D9,0x09D9,0x1219,0x11D7,0x1175,0x1134,0x1133,0x08F2,0x0913,0x1175,0x11D7,0x11F8,0x09D9,0x09F9,0x01B9,0x01DA,0x01BA,0x01DA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01D9,0x09D9,0x11F9,0x11D8,0x1195,0x1153,0x1932,0x1931,0x1930,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2110,0x2930,0x2110,0x210F,0x2910,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x210F,0x210F,0x210F,0x2110,0x210F,0x2930,0x2110,0x210F,0x210F,0x2130,0x2110,0x2110,0x2910,0x2110,0x2110,0x2130,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x210F,0x212F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x20EE,0x20EE,0x20CD,0x288C,0x7AD4,0xD51B,0xD4DA,0xDCB9,0xDC99,0xD498,0xD478,0xCC78,0xC477,0xB456,0xD59A,0xFF1F,0xFF9F,0xF7BF,0xF7DF,0xF7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xEFDF,0xEFFF,0xEFFF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xEFDF,0xE7DF,0xEFDF,0xEFDF,0xE7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFFF,0xE7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFFF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xEFFF,0xE7DF,0xEFFF,0xE7DF,0xEFFF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xE7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFFF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFFF,0xEFFF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xEFFF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xF7DF,0xEFBF,0xEFBF,0xF7BF,0xF7BF,0xFF7F,0xCBF6,0xBA72,0xC253,0xCA53,0xCA54,0xCA54,0xD254,0xCA14,0xCA14,0xC9F3,0xC9F3,0xC9F3,0xC9D3,0xC9D3,0xC1D3,0xC1D3,0xC1B3,0xC193,0xB9B3,0xB992,0xB192,0xA1B1,0xA2B2,0xFEBF,0xFF9F,0xFFDF,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFFF,0xE7DF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFFF,0xEFDF,0xEFDF,0xEFDF,0xF7DF,0xFFBF,0xFF7F,0xD599,0xBC35,0xCC36,0xD436,0xD437,0xD437,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xE457,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC37,0xE457,0xE457,0xDC37,0xDC37,0xDC37,0xE437,0xE437,0xDC37,0xE437,0xE437,0xE437,0xE437,0xE437,0xDC37,0xDC37,0xDC37,0xDC37,0xE437,0xE457,0xE457,0xEC58,0xEC58,0xE458,0xDC39,0xBBD9,0x9B7A,0x6298,0x429A,0x2A9C,0x1ABD,0x12DE,0x0ADF,0x0ADF,0x02DF,0x02DF,0x02FF,0x02FF,0x02FF,0x02FF,0x02DF,0x02DF,0x02DF,0x02DF,0x02DE,0x02DE,0x02FD,0x031C,0x037C,0x045C,0x0DDE,0x1F3F,0x1F7F,0x179F,0x0FBF,0x07BF,0x07BF,0x07BF,0x07BF,0x07BF,0x0F9F,0x1F9F,0x275F,0x3F1F,0x56BF,0x7E1E,0x5B54,0x8A93,0xA212,0xB1D3,0xC1B3,0xC193,0xC993,0xC993,0xC9B4,0xC1B3,0xB9B3,0xBA15,0xB235,0x91D4,0x6932,0x5952,0x5152,0x4972,0x4972,0x4172,0x4172,0x4171,0x3951,0x3971,0x3972,0x3171,0x3151,0x3151,0x3151,0x3151,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x290F,0x290F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2110,0x2930,0x2910,0x2910,0x210F,0x2910,0x2910,0x210F,0x2930,0x212F,0x210F,0x290F,0x290F,0x2910,0x290F,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x2910,0x290F,0x210F,0x2930,0x2930,0x2930,0x210F,0x212F,0x212F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x190F,0x212F,0x2150,0x2130,0x210F,0x2130,0x2110,0x1910,0x1911,0x1932,0x1954,0x1175,0x1196,0x21F8,0x2217,0x1195,0x1153,0x1952,0x1931,0x2111,0x2110,0x2110,0x2910,0x210F,0x2930,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2910,0x2910,0x290F,0x2910,0x2110,0x2910,0x2110,0x2930,0x2110,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x2910,0x2930,0x2110,0x2930,0x2930,0x2110,0x210F,0x2110,0x2910,0x2910,0x2110,0x212F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930,0x2910,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x2930,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2910,0x210F,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2930,0x2930,0x2930,0x290F,0x290F,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2910,0x2910, + 0x2259,0x1A18,0x1A18,0x1A18,0x1A18,0x1A17,0x1A18,0x1A18,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x21F8,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x19F7,0x21F7,0x2218,0x21F7,0x21F8,0x21F8,0x2218,0x21F8,0x21F7,0x21F7,0x19F7,0x19F7,0x19F7,0x19D7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x21F7,0x19B5,0x1174,0x1133,0x1132,0x1932,0x1911,0x1911,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x212F,0x2930,0x2930,0x2930,0x292F,0x290F,0x292F,0x292F,0x212F,0x290F,0x290F,0x2930,0x212F,0x2930,0x2930,0x210F,0x210F,0x210F,0x2910,0x290F,0x2930,0x2910,0x210F,0x2930,0x210F,0x290F,0x2930,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x212F,0x2130,0x212F,0x2130,0x210F,0x2110,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2910,0x2930,0x2930,0x2110,0x2111,0x1911,0x1912,0x1953,0x1174,0x1196,0x11B7,0x11D8,0x09D8,0x09D8,0x01B8,0x01B8,0x01D9,0x09D9,0x09F9,0x11F8,0x19D7,0x1175,0x0912,0x10F1,0x10F1,0x1911,0x2151,0x2152,0x1911,0x1112,0x1133,0x1175,0x0996,0x09B8,0x09F9,0x01D9,0x01D9,0x01F9,0x01D9,0x01D9,0x01D9,0x01FA,0x01FA,0x01DA,0x01B9,0x01B9,0x01D9,0x09D8,0x11D8,0x11D7,0x1195,0x1134,0x08F2,0x08D2,0x0913,0x1995,0x19D7,0x11D8,0x1219,0x01D9,0x01DA,0x01D9,0x01D9,0x01FA,0x01FA,0x021A,0x01DA,0x01DA,0x01B9,0x01B9,0x01D9,0x09F9,0x11F9,0x11D7,0x1196,0x0934,0x08F3,0x08F2,0x0933,0x1195,0x11D7,0x11D8,0x09F9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01D9,0x09F9,0x1219,0x11B7,0x1175,0x1153,0x1132,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2930,0x2910,0x210F,0x212F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x20EE,0x20CE,0x208C,0x7252,0xCCFB,0xD4DA,0xD4B9,0xD498,0xD478,0xD478,0xCC58,0xC457,0xBC76,0xE65C,0xFF9F,0xF7BF,0xF7BF,0xEFDF,0xEFDF,0xEFFF,0xEFDF,0xEFFF,0xE7FF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7FF,0xE7DF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xEFFF,0xE7DF,0xEFDF,0xEFDF,0xEFBF,0xEFBF,0xEFBF,0xF7BF,0xF7BF,0xFF5F,0xC3D6,0xBA52,0xC253,0xCA54,0xCA54,0xD254,0xCA34,0xCA13,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC9D3,0xC1D3,0xC1D3,0xC1B3,0xC1B3,0xC193,0xB992,0xB192,0xA1B1,0x91D0,0xFEDF,0xFF9F,0xFFBF,0xF7DF,0xF7DF,0xF7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xEFFF,0xEFFF,0xE7DF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xEFFF,0xE7DF,0xEFDF,0xEFFF,0xEFDF,0xEFBF,0xF7BF,0xFF9F,0xD559,0xC456,0xCC56,0xD437,0xD436,0xD437,0xD437,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC37,0xDC37,0xE457,0xE457,0xDC57,0xDC57,0xDC57,0xDC37,0xE457,0xE457,0xE457,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE437,0xDC37,0xE457,0xE437,0xE437,0xDC37,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xE458,0xEC58,0xE459,0xDC39,0xBBF9,0x9B9A,0x62B9,0x429A,0x2ABC,0x1ABD,0x12DE,0x0ADF,0x02DF,0x02DF,0x02DF,0x031F,0x031F,0x02FF,0x02FF,0x02FF,0x02FF,0x02FF,0x02FF,0x02FE,0x02FE,0x031E,0x02FD,0x035C,0x03FC,0x053D,0x271F,0x1F7F,0x1FBF,0x17BF,0x0FBF,0x07DF,0x07DF,0x07DF,0x07BF,0x0F9F,0x177F,0x275F,0x373F,0x56DF,0x7E3E,0x6396,0x8293,0xA213,0xBA14,0xC1B3,0xC173,0xC193,0xC173,0xC9B4,0xC1B3,0xB9B4,0xB9D4,0xB235,0x91F5,0x6952,0x6152,0x5152,0x4972,0x4972,0x4192,0x4172,0x3971,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x3150,0x3150,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x290F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2910,0x2930,0x2110,0x2930,0x2910,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2930,0x2930,0x2930,0x290F,0x212F,0x212F,0x290F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2130,0x1910,0x1911,0x1932,0x1953,0x1154,0x1155,0x19D7,0x2218,0x19B6,0x1153,0x1132,0x1931,0x1910,0x2110,0x2910,0x2910,0x2930,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x290F,0x290F,0x210F,0x20EF,0x210F,0x2910,0x2930,0x2110,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2910,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x212F,0x210F,0x2930,0x212F,0x2130,0x2130,0x2930,0x2930,0x2910,0x2910,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2930,0x212F,0x212F,0x2130,0x212F,0x212F,0x2130,0x2930,0x2110,0x2110,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2930,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x210F,0x210F,0x292F,0x2930,0x210F,0x290F,0x210F,0x2910,0x2930,0x2930,0x2910,0x2930,0x2930,0x2910,0x2910,0x210F,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x210F, + 0x09D8,0x09D8,0x09D8,0x09B8,0x11D8,0x11D7,0x11D8,0x11D7,0x11D7,0x11D7,0x11D8,0x11B7,0x11D8,0x11D7,0x11D8,0x11B7,0x11D8,0x11D8,0x11D8,0x11D8,0x11F8,0x11D7,0x11D8,0x11D7,0x11D7,0x11D8,0x11D8,0x11D8,0x19F8,0x11D7,0x19D8,0x11D8,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11F7,0x11D7,0x11F7,0x11F7,0x11F7,0x11D7,0x11D7,0x19D7,0x2218,0x2218,0x19B6,0x1974,0x1133,0x1932,0x1932,0x1911,0x1931,0x2111,0x2131,0x2130,0x2130,0x2930,0x2110,0x212F,0x212F,0x2930,0x292F,0x292F,0x292F,0x292F,0x210F,0x212F,0x210F,0x2930,0x210F,0x212F,0x2930,0x2930,0x290F,0x2930,0x2910,0x2910,0x210F,0x290F,0x2930,0x2910,0x2930,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x2930,0x212F,0x2130,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x2930,0x212F,0x212F,0x212F,0x2110,0x2130,0x2130,0x2110,0x1911,0x1912,0x1933,0x1974,0x1175,0x11B7,0x11D8,0x09D8,0x09D8,0x09D9,0x01B8,0x09D9,0x09D9,0x09D8,0x11D8,0x19D7,0x1154,0x1112,0x1112,0x18F1,0x1911,0x2131,0x1931,0x1911,0x1932,0x1133,0x1154,0x11B6,0x11D8,0x09D9,0x01B9,0x01D9,0x01F9,0x01D9,0x01FA,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01B9,0x01B9,0x09B8,0x11F9,0x11B7,0x1196,0x1134,0x08F2,0x08D2,0x0913,0x1175,0x19D7,0x11D9,0x09D9,0x09F9,0x01D9,0x01D9,0x01D9,0x01DA,0x01D9,0x01FA,0x01DA,0x01DA,0x01DA,0x01B9,0x01D9,0x09F9,0x1219,0x11D8,0x1196,0x0934,0x0913,0x08F3,0x0934,0x1195,0x11B7,0x11D8,0x09D8,0x09F9,0x01B9,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01BA,0x01B9,0x09D9,0x11F9,0x11F8,0x1175,0x1153,0x1132,0x1931,0x1911,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x2130,0x210F,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2930,0x2910,0x210F,0x2930,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x2110,0x210F,0x2910,0x2110,0x210F,0x2910,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x2930,0x2930,0x2910,0x2910,0x210F,0x2930,0x210F,0x2910,0x2930,0x2910,0x2110,0x2930,0x210F,0x212F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x292F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x20EE,0x20CE,0x288C,0x412E,0xD51C,0xD4DA,0xD4B9,0xD498,0xD498,0xD478,0xCC57,0xC477,0xBC76,0xF6DE,0xFFBF,0xF7DF,0xEFDF,0xEFDF,0xE7FF,0xE7FF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xDFDF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xDFDF,0xDFDF,0xE7DF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xE7FF,0xE7FF,0xDFDF,0xE7FF,0xDFDF,0xE7DF,0xE7DF,0xDFDF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xDFDF,0xDFDF,0xE7FF,0xDFFF,0xDFFF,0xE7FF,0xDFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xE7FF,0xE7DF,0xDFDF,0xDFDF,0xE7DF,0xE7DF,0xE7FF,0xDFDF,0xDFFF,0xDFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xDFDF,0xDFDF,0xDFDF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xF7DF,0xF7BF,0xFF5F,0xC375,0xBA52,0xC253,0xCA34,0xCA34,0xCA34,0xCA13,0xC9F3,0xCA13,0xC9F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1B3,0xC1B3,0xB992,0xB192,0xA991,0x99D0,0xE53B,0xFF7F,0xFFBF,0xF7BF,0xF7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFFF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xEFFF,0xEFFF,0xEFDF,0xF7DF,0xF7BF,0xFF7F,0xD579,0xBC56,0xCC56,0xD437,0xD457,0xD437,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xE457,0xE457,0xDC57,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC36,0xDC37,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC37,0xE457,0xDC37,0xE457,0xDC37,0xE457,0xE437,0xE457,0xEC58,0xE458,0xE459,0xDC59,0xBBF9,0x9B9A,0x62B9,0x429A,0x2ABC,0x22DE,0x12DE,0x0AFF,0x02DF,0x02DF,0x02FF,0x031F,0x031F,0x031F,0x031F,0x031F,0x031F,0x02FF,0x02FF,0x02FF,0x031F,0x031E,0x02FD,0x031C,0x039B,0x04BC,0x26DF,0x1F5F,0x1F9F,0x17BF,0x079F,0x07BF,0x07BF,0x07BF,0x07BF,0x0FBF,0x179F,0x277F,0x373F,0x4EDF,0x763E,0x63B6,0x7A73,0xAA33,0xB1D3,0xB9B3,0xC193,0xC994,0xC994,0xC194,0xC1B4,0xB9B4,0xB9D4,0xB215,0x89B4,0x6952,0x5952,0x5173,0x4972,0x4972,0x4172,0x4172,0x3971,0x3971,0x3951,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x210F,0x2910,0x2930,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x212F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x2930,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2150,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2131,0x1911,0x1933,0x1133,0x1155,0x19B7,0x2218,0x21F7,0x1154,0x1153,0x1932,0x2131,0x2130,0x2930,0x2930,0x290F,0x292F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x290F,0x210F,0x2910,0x2910,0x292F,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x212F,0x2130,0x2130,0x2930,0x2110,0x210F,0x210F,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x210F,0x2130,0x212F,0x212F,0x210F,0x212F,0x2930,0x2110,0x2110,0x2930,0x2110,0x2910,0x2110,0x2910,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x210F,0x212F,0x292F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2930,0x2930,0x210F,0x2930,0x210F,0x2910,0x2110,0x210F,0x2930,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x210F,0x2930,0x210F,0x2130,0x212F, + 0x09D8,0x09D8,0x09D8,0x09D8,0x09B8,0x09B8,0x09D8,0x09B8,0x11D8,0x11D8,0x09B8,0x09B8,0x09B8,0x09B8,0x11B8,0x09B8,0x11D8,0x11D8,0x11D8,0x11D8,0x09D8,0x09D8,0x09B8,0x09B8,0x09D8,0x09B8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x09D8,0x09D7,0x11F8,0x11F8,0x11D8,0x09D8,0x09D8,0x09D8,0x09F8,0x09D8,0x09D8,0x09B7,0x09B7,0x11D7,0x1A18,0x19F7,0x19B6,0x1154,0x1133,0x1132,0x1932,0x1931,0x2131,0x2131,0x2130,0x2930,0x2930,0x2930,0x210F,0x2930,0x292F,0x212F,0x292F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x290F,0x2930,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x2930,0x210F,0x210F,0x2930,0x2110,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x210F,0x210F,0x2910,0x2110,0x2930,0x2130,0x2130,0x2130,0x2131,0x1911,0x1912,0x1953,0x1154,0x1175,0x11B7,0x11D8,0x09D8,0x09B8,0x01B8,0x09D9,0x09D9,0x09D8,0x09D8,0x19F9,0x11B6,0x1154,0x1133,0x1112,0x1111,0x1911,0x1911,0x1931,0x1952,0x1111,0x1112,0x1174,0x11B6,0x11D8,0x01B8,0x01D9,0x01B9,0x01FA,0x01FA,0x01FA,0x01FA,0x021A,0x01D9,0x01B9,0x01B9,0x01DA,0x09D9,0x09D9,0x09D8,0x11D8,0x1196,0x1134,0x08F2,0x08F2,0x0913,0x1175,0x19D7,0x11F9,0x11F9,0x09D9,0x01B9,0x01D9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01B9,0x01B9,0x01B9,0x09D9,0x09F9,0x11D8,0x0976,0x0934,0x00F3,0x08F3,0x1154,0x1196,0x0996,0x11D8,0x09D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01FA,0x01FA,0x01FB,0x01DA,0x01B9,0x01D9,0x09D9,0x11F9,0x11D7,0x1195,0x1174,0x1132,0x1911,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2930,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2910,0x2910,0x2930,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x2930,0x210F,0x2930,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x2930,0x2930,0x2930,0x210F,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2110,0x212F,0x212F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x20EF,0x20EE,0x28CD,0x38ED,0xB439,0xD4DA,0xD4B9,0xD498,0xD498,0xD478,0xCC77,0xC457,0xBC96,0xFF5F,0xFFBF,0xF7DF,0xEFDF,0xEFFF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xE7FF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xDFDF,0xE7FF,0xE7FF,0xE7FF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xE7FF,0xE7FF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xE7FF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xE7DF,0xE7DF,0xE7DF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xE7FF,0xE7FF,0xE7FF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xEFDF,0xF7BF,0xF79F,0xFF5F,0xB313,0xBA33,0xC213,0xC214,0xCA34,0xC213,0xC213,0xC1F3,0xC9F3,0xC1F3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1B3,0xB993,0xB992,0xB172,0x9990,0xB354,0xFF1F,0xFF9F,0xF7BF,0xF7DF,0xF7FF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xEFFF,0xEFDF,0xEFDF,0xF7BF,0xFF9F,0xD5BA,0xBC76,0xCC56,0xD437,0xD437,0xD437,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xE457,0xE437,0xE437,0xDC37,0xDC37,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC37,0xE457,0xE457,0xDC37,0xE457,0xE457,0xDC57,0xE457,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC37,0xE437,0xE457,0xE457,0xE458,0xE458,0xE459,0xDC59,0xBC1A,0x9BBA,0x5AB9,0x3A9A,0x2ADC,0x22FD,0x12FE,0x0B1F,0x031F,0x031F,0x031F,0x033F,0x033F,0x033F,0x033F,0x033F,0x031F,0x031F,0x031F,0x031F,0x033F,0x031E,0x02FD,0x033C,0x037C,0x045C,0x269F,0x1F3F,0x1F7F,0x179F,0x0FBF,0x07BF,0x07BF,0x07BE,0x07DF,0x0FBE,0x17BF,0x277F,0x2F3F,0x4EDF,0x767F,0x5BB6,0x7252,0xA213,0xB9F3,0xC1B3,0xC1B3,0xC994,0xC9B4,0xC194,0xC1B4,0xB9B4,0xB9F5,0xB215,0x8994,0x6112,0x5952,0x5173,0x4972,0x4972,0x4192,0x4192,0x3971,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x2951,0x2951,0x2930,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x290F,0x290F,0x292F,0x2930,0x292F,0x2930,0x2910,0x2910,0x290F,0x2930,0x2930,0x2110,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2930,0x290F,0x290F,0x2930,0x212F,0x2930,0x2930,0x210F,0x210F,0x2910,0x2910,0x2930,0x210F,0x210F,0x2910,0x290F,0x290F,0x210F,0x210F,0x212F,0x2930,0x2930,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2150,0x2130,0x2130,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x1911,0x1932,0x1133,0x1154,0x1196,0x2218,0x21F7,0x1154,0x1133,0x1932,0x1931,0x2110,0x2930,0x2930,0x292F,0x210F,0x292F,0x212F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x2110,0x2910,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x210F,0x290F,0x290F,0x2930,0x212F,0x212F,0x210F,0x2930,0x2910,0x2110,0x2910,0x2930,0x2130,0x2110,0x2130,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x2930,0x212F,0x2130,0x2130, + 0x09D8,0x09D8,0x09B8,0x09D8,0x09B8,0x09D8,0x09B8,0x09D8,0x09D8,0x09B8,0x09B8,0x09B8,0x09D8,0x09D8,0x11D8,0x11D8,0x09D8,0x11D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x11D8,0x11D8,0x09D8,0x09D8,0x09D8,0x11D9,0x09D8,0x09D8,0x09D8,0x11D8,0x09D8,0x09F8,0x09D8,0x09D8,0x09F9,0x09F9,0x09D8,0x09D8,0x09D9,0x09D8,0x09B8,0x09B8,0x09D8,0x1A18,0x11D7,0x11D7,0x1175,0x1154,0x1112,0x1932,0x1952,0x2131,0x2131,0x2130,0x2130,0x2930,0x2110,0x2930,0x292F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x290F,0x2930,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x2910,0x290F,0x2930,0x210F,0x2930,0x2930,0x210F,0x210F,0x2930,0x2110,0x2130,0x212F,0x212F,0x2930,0x212F,0x212F,0x290F,0x292F,0x290F,0x2930,0x2910,0x2910,0x290F,0x2910,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x1911,0x1932,0x1133,0x1134,0x1196,0x11B7,0x11B7,0x09D8,0x09D8,0x09D9,0x01B8,0x09B8,0x09F9,0x11F8,0x11D8,0x11B7,0x1154,0x1112,0x10F1,0x10F1,0x1931,0x1931,0x2152,0x1952,0x1111,0x1112,0x1174,0x11B6,0x11D7,0x01D8,0x01D9,0x01D9,0x01D9,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01B9,0x01DA,0x01B9,0x09D9,0x09D9,0x09B8,0x11F8,0x11B6,0x1134,0x08F3,0x08F2,0x08F2,0x1175,0x19D7,0x11F8,0x09D9,0x09D9,0x01B9,0x01B9,0x01FA,0x01DA,0x01FA,0x01FA,0x01DA,0x01DA,0x01D9,0x01B9,0x01B9,0x09D9,0x11F9,0x11D8,0x1176,0x0914,0x00D3,0x08F3,0x0954,0x1195,0x11B6,0x11D8,0x09B8,0x09F9,0x01D9,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01FB,0x01DA,0x01DA,0x01DA,0x09B9,0x11F9,0x19F8,0x1196,0x1153,0x1112,0x1911,0x1931,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x2930,0x2930,0x212F,0x2930,0x292F,0x212F,0x2930,0x2930,0x290F,0x210F,0x2930,0x290F,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x290F,0x2930,0x212F,0x212F,0x2930,0x290F,0x2930,0x212F,0x2930,0x290F,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x20EE,0x20CD,0x204B,0x8B14,0xD4DB,0xD4B9,0xD498,0xD498,0xD478,0xCC77,0xC477,0xBC96,0xF71F,0xF7BF,0xEFDF,0xEFDF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xE7FF,0xE7DF,0xDFDF,0xE7DF,0xE7FF,0xE7DF,0xE7FF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xE7FF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFDF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xE7FF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xEFBF,0xF7BF,0xFF9F,0xFF1F,0xAAB3,0xB213,0xC213,0xC214,0xC213,0xC1F3,0xC1F3,0xC1F3,0xC1F3,0xC1F3,0xC1F4,0xC1D3,0xC1D3,0xC1D3,0xB9B3,0xB992,0xB992,0xB192,0xA9B1,0x91F0,0xFE9F,0xFF7F,0xF7BF,0xF7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xDFDF,0xE7FF,0xE7FF,0xDFDF,0xE7FF,0xDFFF,0xDFFF,0xDFDF,0xE7FF,0xE7FF,0xE7FF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xEFDF,0xEFDF,0xF7BF,0xFF9F,0xE63C,0xBC55,0xC456,0xCC37,0xD437,0xD437,0xDC57,0xDC37,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xE437,0xDC37,0xDC37,0xE457,0xE457,0xE457,0xE457,0xDC57,0xE457,0xE457,0xE457,0xDC37,0xE457,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xE457,0xDC37,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC57,0xE457,0xE457,0xE457,0xDC37,0xDC37,0xE437,0xE437,0xE457,0xE458,0xE458,0xE459,0xDC5A,0xC43B,0x93BB,0x5298,0x327A,0x2ADC,0x1AFD,0x0AFE,0x0B1F,0x0B3F,0x0B3F,0x033F,0x033F,0x033F,0x033F,0x033F,0x033F,0x033F,0x033F,0x033F,0x031E,0x033F,0x033E,0x031D,0x033D,0x035C,0x041B,0x15FF,0x1F1F,0x1F7F,0x179F,0x0F9F,0x07BE,0x07BF,0x07DF,0x07DE,0x0FBE,0x0F9E,0x1F7F,0x2F3F,0x46DE,0x769F,0x5BF7,0x7252,0xA233,0xB1B3,0xC1D4,0xC1B3,0xC193,0xC994,0xC9B4,0xC193,0xB9B4,0xB1D4,0xB236,0x8193,0x6952,0x5952,0x5172,0x4972,0x4172,0x4192,0x4192,0x3971,0x3972,0x3972,0x3151,0x3151,0x3151,0x3151,0x3131,0x3151,0x3151,0x2930,0x2951,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x2910,0x2930,0x212F,0x210F,0x2930,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2150,0x212F,0x212F,0x212F,0x210F,0x210F,0x2950,0x2930,0x2110,0x1911,0x1932,0x1133,0x1134,0x19B6,0x21F8,0x2217,0x1174,0x1133,0x1132,0x1911,0x1910,0x2110,0x292F,0x292F,0x210F,0x292F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x292F,0x2930,0x292F,0x290F,0x2930,0x2930,0x2930,0x212F,0x212F,0x292F,0x2930,0x212F,0x292F,0x210F,0x212F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2130,0x2130,0x2130,0x2930,0x2930,0x212F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x2110,0x210F,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x210F,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2110,0x2910,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x212F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x212F,0x2130,0x2130, + 0x09B8,0x09D8,0x09B8,0x09D8,0x09D8,0x09B8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x11D8,0x09B8,0x09B8,0x09D8,0x09B8,0x09D8,0x09B8,0x09B8,0x09B8,0x09D8,0x09B8,0x09B8,0x09B8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09F8,0x09D8,0x09D8,0x09F9,0x09D9,0x09D9,0x09D9,0x01B8,0x09F9,0x09F9,0x1219,0x09F8,0x11F9,0x11F8,0x11B7,0x0975,0x1154,0x1113,0x1132,0x1932,0x2131,0x2131,0x2930,0x2930,0x2110,0x2130,0x212F,0x292F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x290F,0x290F,0x212F,0x2930,0x2930,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x290F,0x2910,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2130,0x212F,0x210F,0x212F,0x212F,0x2930,0x292F,0x290F,0x292F,0x290F,0x2910,0x2910,0x2910,0x2930,0x2930,0x2130,0x2131,0x2131,0x1911,0x1112,0x1133,0x1154,0x1196,0x0996,0x11B7,0x09B8,0x09B8,0x09B8,0x09D9,0x09F9,0x09F9,0x09F8,0x11D8,0x1196,0x1154,0x10F2,0x10F1,0x1911,0x1911,0x1931,0x1931,0x1931,0x1111,0x1112,0x1174,0x1196,0x09B7,0x09F9,0x01D9,0x01D9,0x01DA,0x01D9,0x01DA,0x01D9,0x01DA,0x01FA,0x01DA,0x01D9,0x01D9,0x01B9,0x01B8,0x11F8,0x11D8,0x1176,0x0934,0x08F3,0x08F3,0x0913,0x1195,0x19F7,0x11F8,0x11F9,0x01B9,0x01BA,0x01BA,0x01B9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01B9,0x01D9,0x09D9,0x11D9,0x11B8,0x0955,0x0914,0x08F3,0x08F3,0x0934,0x1195,0x11B6,0x11D8,0x09B8,0x09D8,0x01B9,0x01DA,0x01FA,0x01DA,0x021B,0x01FA,0x01BA,0x01DA,0x01DA,0x01DA,0x01D9,0x11F9,0x1A19,0x19B6,0x1133,0x1112,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x210F,0x2130,0x2130,0x210F,0x212F,0x212F,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x2930,0x2910,0x210F,0x2930,0x290F,0x210F,0x2930,0x2930,0x2930,0x290F,0x212F,0x210F,0x290F,0x2930,0x212F,0x212F,0x210F,0x2930,0x290F,0x2930,0x210F,0x212F,0x2130,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x292F,0x292F,0x210F,0x210F,0x20EE,0x20CE,0x28AC,0x496E,0xDD5D,0xD4B9,0xD498,0xD498,0xD478,0xCC77,0xC477,0xB476,0xFF3F,0xF7BF,0xEFDF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xE7FF,0xDFDF,0xE7FF,0xE7FF,0xDFDF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFDF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xDFFF,0xDFFF,0xE7FF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xD7FF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFDF,0xE7DF,0xE7DF,0xEFDF,0xEFBF,0xF7BF,0xFF9F,0xFEFF,0xFDFE,0xBAF5,0xBA13,0xBA13,0xC1F4,0xC1F3,0xC1F3,0xC1F3,0xC1F3,0xC1F3,0xC1D3,0xC1F3,0xC1D3,0xB9D3,0xB9B3,0xB9B3,0xB9B2,0xB192,0xA9B1,0x99F0,0xDCD9,0xFF7F,0xFF9F,0xF7BF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7DF,0xE7FF,0xE7DF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xDFDF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFDF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xEFDF,0xF7BF,0xFF9F,0xEEBD,0xBCB6,0xC456,0xCC37,0xD436,0xD437,0xDC37,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC37,0xDC37,0xE457,0xE457,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xE457,0xDC37,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC37,0xE457,0xE457,0xDC57,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC37,0xE437,0xE437,0xE457,0xE458,0xE458,0xE459,0xD45A,0xC45C,0x8B9A,0x4A78,0x329A,0x2AFD,0x1B1E,0x0AFE,0x031F,0x033F,0x035F,0x033F,0x033F,0x033F,0x031F,0x033F,0x033F,0x033F,0x035F,0x035F,0x033F,0x033F,0x033F,0x031E,0x033D,0x035C,0x03FC,0x0D9E,0x1EDF,0x1F5F,0x179F,0x0F9E,0x07BE,0x07BE,0x07BE,0x07DE,0x0FBE,0x0F9E,0x1F7F,0x2F3E,0x46DE,0x6E9F,0x6417,0x7232,0xA233,0xB1D3,0xB9B3,0xC193,0xC994,0xC194,0xC194,0xC1B4,0xB9B4,0xB1D4,0xAA15,0x8173,0x6952,0x5952,0x5173,0x4972,0x4172,0x4192,0x4192,0x3972,0x3972,0x3151,0x3972,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3151,0x2951,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910,0x2110,0x2930,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x212F,0x290F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2910,0x2930,0x2910,0x2930,0x290F,0x290F,0x2910,0x2910,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2110,0x1931,0x1912,0x1133,0x1134,0x19B6,0x2238,0x2217,0x1195,0x1133,0x1132,0x1911,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x2130,0x2130,0x2930,0x210F,0x2930,0x290F,0x210F,0x212F,0x292F,0x292F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x212F,0x212F,0x292F,0x292F,0x2930,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2930,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x290F,0x2910,0x210F,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2110,0x210F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x210F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x2110,0x2910,0x2910,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x292F,0x2930,0x2930,0x2130,0x2130,0x2130, + 0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x11D8,0x09B8,0x09B8,0x09D8,0x09D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x09B8,0x11D8,0x11D8,0x09B8,0x11D8,0x09D8,0x09D8,0x11D8,0x11D8,0x09B8,0x09B8,0x11B8,0x11D8,0x09D8,0x09D8,0x11B8,0x11B8,0x09D8,0x09D8,0x11D8,0x09B8,0x09D8,0x11D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D9,0x09D8,0x09D9,0x09D9,0x09F9,0x09D9,0x09F9,0x09F9,0x09D9,0x09F8,0x11D7,0x1196,0x0934,0x1133,0x1112,0x1911,0x2131,0x2931,0x2930,0x2130,0x2130,0x212F,0x292F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x210F,0x290F,0x2930,0x290F,0x2930,0x290F,0x210F,0x290F,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x292F,0x290F,0x2930,0x2910,0x2930,0x2110,0x2130,0x2131,0x2111,0x1911,0x1112,0x1153,0x1154,0x1195,0x11B7,0x09B7,0x09B8,0x09B8,0x09D9,0x09D8,0x09F9,0x09F9,0x11F8,0x11F8,0x11B6,0x0934,0x10F2,0x1111,0x1911,0x2131,0x1931,0x1931,0x1911,0x1932,0x1112,0x1174,0x11B6,0x11D8,0x09F8,0x01D8,0x01D9,0x01D9,0x01B9,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01FA,0x01D9,0x01B9,0x09D8,0x11D8,0x11B7,0x1196,0x0934,0x08F3,0x08F3,0x08F3,0x1175,0x19D7,0x11F8,0x09D8,0x09D9,0x01B9,0x01B9,0x01BA,0x01DA,0x01B9,0x01DA,0x01DA,0x01B9,0x01D9,0x01B9,0x01D9,0x09F9,0x11F8,0x11B7,0x1176,0x0914,0x08F3,0x0913,0x0913,0x1196,0x11B7,0x11F8,0x09D8,0x09D8,0x01B8,0x01D9,0x01FA,0x01FA,0x01FA,0x01FA,0x01DA,0x01DA,0x01DA,0x01D9,0x09D9,0x09F9,0x11F8,0x19B6,0x1133,0x1112,0x1911,0x1911,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x2930,0x210F,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2110,0x290F,0x290F,0x2910,0x2110,0x210F,0x212F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x212F,0x292F,0x210F,0x2930,0x212F,0x212F,0x290F,0x2930,0x290F,0x2930,0x212F,0x212F,0x2110,0x2110,0x290F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x210F,0x20EE,0x28CD,0x30AC,0xB439,0xD4DA,0xD4B9,0xD498,0xD478,0xCC77,0xC477,0xBC97,0xEEDE,0xF7BF,0xEFDF,0xE7DF,0xE7FF,0xE7FF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xE7FF,0xE7FF,0xE7DF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xDFFF,0xE7FF,0xDFDF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xD7FF,0xDFFF,0xDFFF,0xDFFF,0xD7FF,0xD7FF,0xDFFF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xDFFF,0xD7FF,0xD7FF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xD7FF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xDFFF,0xD7DF,0xD7DF,0xD7DF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xD7FF,0xD7FF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xD7FF,0xD7FF,0xD7FF,0xD7DF,0xD7FF,0xD7FF,0xDFFF,0xD7FF,0xD7FF,0xDFFF,0xD7FF,0xDFFF,0xDFFF,0xD7FF,0xD7FF,0xDFFF,0xD7DF,0xD7FF,0xD7FF,0xD7FF,0xD7DF,0xD7FF,0xD7FF,0xDFFF,0xD7DF,0xDFFF,0xD7FF,0xDFFF,0xDFFF,0xD7FF,0xD7FF,0xDFFF,0xDFDF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7DF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xE7DF,0xE7DF,0xEFBF,0xF79F,0xFF9F,0xFF3F,0xC457,0xA292,0xBA94,0xB1F3,0xB9F3,0xB9F3,0xB9D3,0xB9F3,0xC1F3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xB9B3,0xB9B3,0xB9B3,0xB192,0xA991,0x99B0,0xA313,0xFEFF,0xFF9F,0xF7BF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFDF,0xDFFF,0xDFDF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xEFBF,0xF79F,0xF71F,0xC4B7,0xC456,0xCC56,0xD437,0xD437,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xE457,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE437,0xE457,0xE457,0xDC37,0xE437,0xDC36,0xE437,0xDC37,0xE437,0xDC37,0xDC37,0xE437,0xE457,0xE457,0xDC57,0xE457,0xDC57,0xDC57,0xE457,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xE457,0xE458,0xE459,0xE479,0xD47B,0xBC3C,0x837B,0x4A99,0x32BB,0x2B1D,0x1B3E,0x0B1E,0x031F,0x033F,0x035F,0x035F,0x035F,0x033F,0x035F,0x035F,0x035F,0x033F,0x035F,0x035F,0x035F,0x035F,0x033E,0x035E,0x035D,0x037D,0x03DC,0x051C,0x26BF,0x275F,0x177F,0x0F9E,0x07BE,0x07BE,0x07BE,0x07BE,0x0FDE,0x0FBE,0x1F7E,0x2F7F,0x3EDE,0x667F,0x6458,0x7252,0x9A13,0xB1D3,0xB993,0xC193,0xC994,0xC194,0xC194,0xC1B4,0xB9B4,0xB1D4,0xAA36,0x8193,0x6132,0x5952,0x5172,0x4972,0x4192,0x4192,0x4192,0x3971,0x3971,0x3972,0x3972,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x3151,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x2110,0x2110,0x2930,0x2930,0x2110,0x2910,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2910,0x2110,0x210F,0x212F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x290F,0x292F,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2131,0x1932,0x1133,0x1133,0x19B6,0x2218,0x2217,0x1195,0x0933,0x1132,0x1931,0x2130,0x2130,0x212F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2930,0x2930,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2110,0x2130,0x2930,0x2930,0x210F,0x2130,0x212F,0x2130,0x212F,0x212F,0x2930,0x292F,0x210F,0x2930,0x2930,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2930,0x212F,0x2910,0x2910,0x212F,0x212F,0x2130,0x2110,0x2110,0x2930,0x210F,0x210F,0x290F,0x2930,0x210F,0x2930,0x2930,0x2110,0x2910,0x2910,0x2910,0x2110,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2910,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x212F,0x292F,0x210F,0x212F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x290F,0x290F,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2910,0x2110,0x2110,0x2130,0x2110,0x2130,0x2930,0x210F,0x290F,0x2930,0x292F,0x212F,0x212F,0x2930,0x212F,0x2930,0x2930,0x2930, + 0x11F8,0x11F8,0x19F8,0x11F8,0x11D7,0x19F8,0x19F8,0x19F8,0x1A18,0x11F7,0x1A18,0x19F8,0x19F8,0x19F8,0x11D7,0x19F8,0x19F8,0x11D7,0x19F8,0x19F8,0x19F8,0x19F8,0x19F7,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x19F8,0x11F8,0x19F8,0x11F8,0x11F7,0x1A18,0x11F8,0x19F8,0x1A18,0x11F7,0x19F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F9,0x09F9,0x09D9,0x0A1A,0x01D9,0x01B8,0x01B9,0x09FA,0x09FA,0x09F9,0x09D8,0x09B7,0x1196,0x0934,0x1133,0x1912,0x1911,0x2131,0x2931,0x2930,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x2930,0x2930,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2111,0x1911,0x1932,0x1153,0x1154,0x0975,0x09B7,0x09B7,0x09F8,0x09D8,0x09D8,0x09D9,0x09D8,0x09D8,0x11F8,0x11D7,0x11B6,0x1154,0x08F2,0x1111,0x18F0,0x1910,0x2131,0x2131,0x1931,0x1111,0x1132,0x0954,0x09B6,0x09D8,0x0A19,0x01D8,0x01D9,0x01D9,0x01FA,0x01DA,0x01FA,0x01FA,0x0199,0x01BA,0x01D9,0x01D9,0x09F9,0x09F9,0x09B7,0x11B7,0x1175,0x1134,0x0913,0x0913,0x08F3,0x1175,0x11B7,0x11F8,0x11F9,0x09F9,0x01B9,0x01B9,0x01B9,0x01DA,0x0A1B,0x01FA,0x01B9,0x01B9,0x01B9,0x01D9,0x01D9,0x09D8,0x11F9,0x11D7,0x1175,0x0913,0x08F3,0x0913,0x0933,0x1196,0x19F8,0x11D8,0x09D8,0x01B8,0x09F9,0x01F9,0x01D9,0x01DA,0x01D9,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x11F9,0x1A19,0x19B6,0x0913,0x1112,0x1911,0x1931,0x1930,0x2130,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x290F,0x290F,0x212F,0x210F,0x2930,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x212F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x292F,0x292F,0x292F,0x210F,0x210F,0x20CE,0x28AC,0x6A11,0xD4FB,0xD4B9,0xD498,0xD498,0xD478,0xCC78,0xBC56,0xDE1B,0xF79F,0xEFBF,0xE7DF,0xE7FF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xD7FF,0xDFDF,0xDFFF,0xDFFF,0xD7FF,0xDFFF,0xD7FF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xDFDF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xE7FF,0xDFFF,0xDFDF,0xDFFF,0xDFFF,0xDFFF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xDFFF,0xDFFF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7FF,0xD7DF,0xD7FF,0xD7FF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xD7FF,0xD7FF,0xDFDF,0xDFFF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xDFFF,0xD7FF,0xD7FF,0xD7DF,0xD7DF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xDFFF,0xD7DF,0xD7DF,0xD7FF,0xD7FF,0xDFDF,0xD7FF,0xDFFF,0xDFFF,0xDFFF,0xE7DF,0xEFBF,0xE6FF,0x726F,0x698D,0x714D,0x89B0,0x99D1,0xA9D2,0xA9D2,0xB1D3,0xB9D3,0xB9F3,0xB9F3,0xB9D3,0xB9F3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xB9B3,0xB9B3,0xB192,0xA992,0xA1B1,0x89CF,0xFEDF,0xFF7F,0xF7BF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xEFFF,0xEFFF,0xE7DF,0xEFFF,0xEFDF,0xEFFF,0xEFFF,0xEFDF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xE7FF,0xDFFF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7DF,0xD7FF,0xDFFF,0xDFDF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFDF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xF79F,0xFF5F,0xC518,0xC476,0xCC56,0xD437,0xD437,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xE457,0xE457,0xE457,0xE457,0xE457,0xE437,0xE437,0xE457,0xE457,0xE437,0xE437,0xDC37,0xE437,0xE437,0xE437,0xE437,0xE437,0xDC37,0xE437,0xE457,0xDC36,0xDC36,0xDC16,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xDC37,0xE457,0xE457,0xE437,0xDC37,0xDC37,0xDC37,0xE437,0xE458,0xE458,0xE479,0xE47A,0xD47B,0xB43C,0x733A,0x429A,0x32DC,0x335E,0x235F,0x0B3E,0x035F,0x035F,0x037F,0x037F,0x035F,0x035F,0x033F,0x035F,0x035F,0x035F,0x035F,0x035F,0x035F,0x035F,0x035E,0x035E,0x037D,0x037D,0x03DC,0x04BC,0x1E7F,0x273F,0x1F7F,0x0F9E,0x07BE,0x07BE,0x07BE,0x07DE,0x07BE,0x17BE,0x1F9E,0x2F7F,0x471F,0x669F,0x6CB9,0x6A72,0x9A33,0xB214,0xB9D3,0xC1B3,0xC9B4,0xC173,0xC173,0xC194,0xB9B4,0xB9F5,0xB236,0x7973,0x6132,0x5972,0x4972,0x4172,0x4172,0x4192,0x4192,0x3971,0x3971,0x3972,0x3151,0x3151,0x3151,0x3151,0x3151,0x3131,0x2930,0x3130,0x3150,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x290F,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x1911,0x1932,0x1132,0x1133,0x19B6,0x2238,0x2217,0x1195,0x1133,0x1112,0x1931,0x1910,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x212F,0x210F,0x2110,0x2930,0x2110,0x2930,0x2930,0x2930,0x2130,0x2110,0x2130,0x212F,0x210F,0x2130,0x2130,0x2930,0x2930,0x2930,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x212F,0x290F,0x210F,0x212F,0x212F,0x2130,0x210F,0x2930,0x2930,0x210F,0x290F,0x2910,0x290F,0x2910,0x210F,0x2110,0x210F,0x2930,0x2110,0x2110,0x2930,0x2930,0x212F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x2910,0x2910,0x210F,0x2910,0x2930,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x2910,0x2910,0x210F,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x290F, + 0x1196,0x1195,0x1196,0x1196,0x1195,0x1175,0x1195,0x1195,0x1195,0x1195,0x11B6,0x1196,0x11B6,0x11B6,0x1196,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x19B6,0x11B6,0x19D6,0x19B6,0x19D6,0x19B6,0x19D6,0x19B6,0x19D6,0x11B6,0x19D6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x19D6,0x11B6,0x11D7,0x11D7,0x19D8,0x11D8,0x11D8,0x11F9,0x123A,0x121A,0x09D9,0x01D9,0x01B9,0x09FA,0x09D9,0x09F9,0x11F9,0x09B7,0x1196,0x1154,0x1113,0x1912,0x1911,0x2131,0x2131,0x2930,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x212F,0x212F,0x2930,0x2110,0x2110,0x210F,0x290F,0x210F,0x2910,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2930,0x2930,0x2910,0x2930,0x2910,0x2910,0x2111,0x1911,0x1911,0x1932,0x1133,0x0954,0x0995,0x11D7,0x09D7,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09F8,0x11D8,0x11D7,0x11B6,0x1154,0x1112,0x10F1,0x18F0,0x2130,0x2130,0x2130,0x2131,0x1911,0x1112,0x1174,0x11B6,0x09D7,0x01D8,0x01D9,0x01B9,0x01D9,0x01FA,0x01DA,0x01FA,0x01FA,0x01BA,0x01BA,0x01DA,0x01B9,0x01D9,0x09F9,0x09D8,0x11B7,0x1195,0x1134,0x0913,0x08F2,0x00F3,0x1175,0x11D7,0x11D8,0x09D8,0x09D9,0x01B8,0x01B9,0x01B9,0x01DA,0x01FA,0x01DA,0x01DA,0x01B9,0x01D9,0x01D9,0x01D9,0x09D8,0x11F8,0x11D7,0x1175,0x0933,0x08F2,0x0913,0x0913,0x1195,0x19F7,0x09B7,0x09D8,0x01B8,0x01D9,0x01D9,0x01D9,0x01FA,0x01D9,0x01FA,0x01FA,0x01DA,0x01B9,0x01DA,0x01D9,0x09F9,0x19F9,0x1196,0x1133,0x1112,0x1911,0x1910,0x1930,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x290F,0x2930,0x2930,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x290F,0x2930,0x2930,0x290F,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x20EE,0x28CE,0x202A,0xC4BA,0xD4DA,0xDCB9,0xDC99,0xD498,0xCC78,0xC477,0xCD39,0xFF9F,0xEFBF,0xE7DF,0xE7FF,0xDFFF,0xDFFF,0xDFDF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xDFFF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xE7FF,0xE7FF,0xE7FF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xEFDF,0xEFBF,0xEFBF,0xEFBF,0xF7BF,0xF7BF,0xF7BF,0xF7BF,0xF7BF,0xF7BF,0xEFBF,0xEFBF,0xEFBF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFDF,0xDFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xEFBF,0xEFBF,0xEFBF,0xF7BF,0xF7BF,0xEFBF,0xF7BF,0xEF9F,0xEFBF,0xEFBF,0xEFBF,0xEFBF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7FF,0xE7FF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xD7DF,0xD7FF,0xD7DF,0xD7FF,0xD7FF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7FF,0xD7DF,0xD7FF,0xD7FF,0xD7DF,0xD7DF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xDFFF,0xDFFF,0xE7DF,0xEF9F,0xEEDF,0x8AF2,0x81D0,0x91B1,0x99B1,0xA1B2,0xA9D2,0xB1D2,0xB1D3,0xB1D3,0xB9D3,0xB9D3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9B3,0xB9B3,0xB1B2,0xB192,0xA1B1,0x91B0,0xDCFA,0xFF7F,0xF7BF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xF7DF,0xEFBF,0xEFBF,0xEFBF,0xEFDF,0xEFDF,0xEFDF,0xE7DF,0xE7FF,0xE7DF,0xE7FF,0xE7FF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xDFFF,0xDFDF,0xDFDF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFFF,0xDFDF,0xE7DF,0xE7DF,0xE7DF,0xEFBF,0xF7BF,0xFF7F,0xBCB6,0xC456,0xCC57,0xD437,0xD437,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC37,0xDC37,0xE437,0xE437,0xE457,0xE437,0xE437,0xE457,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE436,0xDC36,0xE436,0xE437,0xDC36,0xDC36,0xDC16,0xE437,0xDC37,0xE437,0xDC37,0xDC37,0xDC37,0xE437,0xE437,0xE437,0xDC37,0xDC37,0xE437,0xE458,0xE458,0xE459,0xDC5A,0xD49C,0x8319,0x4A58,0x3239,0x227B,0x2B3E,0x237F,0x137F,0x0B7F,0x037F,0x037F,0x037F,0x037F,0x037F,0x0B7F,0x037F,0x037F,0x037F,0x035F,0x037F,0x037F,0x037F,0x035E,0x037E,0x037D,0x039D,0x03BC,0x047B,0x1E3F,0x2F3F,0x1F7F,0x179E,0x0FBE,0x07BE,0x07BE,0x07BE,0x07BD,0x0F9E,0x1F9E,0x275F,0x3F1F,0x669F,0x6CDA,0x7292,0x9A33,0xB1F3,0xB9B3,0xC1B3,0xC194,0xC194,0xC1B4,0xC1B4,0xC1D4,0xB1D4,0xA9F5,0x7952,0x6152,0x5972,0x4972,0x4972,0x4172,0x4172,0x4192,0x3992,0x3971,0x3992,0x3151,0x3951,0x3151,0x3151,0x3151,0x3130,0x3151,0x3130,0x3130,0x2930,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x2910,0x210F,0x2110,0x210F,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2930,0x2930,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2930,0x212F,0x212F,0x292F,0x212F,0x292F,0x212F,0x210F,0x290F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2130,0x2110,0x2131,0x1932,0x1132,0x0933,0x19B6,0x2A38,0x2217,0x19B5,0x1133,0x1132,0x1931,0x1930,0x2130,0x2150,0x212F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x2910,0x210F,0x2910,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x2930,0x290F,0x212F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x210F,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2930,0x210F,0x2930,0x2930,0x2110,0x212F,0x212F,0x212F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2910,0x2910,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x290F,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x210F,0x2910,0x2930,0x2130,0x210F,0x2130,0x212F,0x212F,0x2930,0x290F, + 0x1133,0x1133,0x1113,0x1113,0x1113,0x1112,0x1113,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1113,0x1113,0x1133,0x1133,0x1113,0x1113,0x1133,0x1133,0x1133,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1154,0x1133,0x0933,0x0933,0x0913,0x0914,0x0935,0x0935,0x0156,0x09B8,0x11FA,0x09FA,0x09DA,0x0199,0x01D9,0x01D9,0x09F9,0x11F9,0x11D8,0x1196,0x1154,0x1113,0x1912,0x1911,0x2111,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2930,0x2130,0x2131,0x2131,0x2132,0x1912,0x1133,0x1174,0x0996,0x09B7,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09F9,0x09F9,0x09B8,0x11B7,0x1195,0x1154,0x08F1,0x10F1,0x1911,0x2151,0x2151,0x2130,0x2110,0x1911,0x1132,0x1174,0x11B6,0x11F8,0x09F9,0x01D8,0x01D9,0x01D9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x01BA,0x01B9,0x01D9,0x09D9,0x09D8,0x11D7,0x1195,0x1133,0x08F2,0x08D2,0x0913,0x1175,0x11D7,0x11D8,0x1219,0x01B8,0x01B9,0x01D9,0x01FA,0x01FA,0x01DA,0x01FA,0x01BA,0x01DA,0x01D9,0x01D9,0x01B8,0x09F9,0x09D8,0x11D7,0x1174,0x0933,0x0912,0x0912,0x0913,0x1195,0x19F7,0x09D7,0x09F9,0x01B9,0x01B9,0x01B9,0x01D9,0x01DA,0x01FA,0x01DA,0x01D9,0x01DA,0x01DA,0x01D9,0x01D9,0x09F9,0x11D8,0x1196,0x1154,0x1112,0x1111,0x1931,0x2131,0x2130,0x2110,0x210F,0x210F,0x210F,0x2130,0x2930,0x2130,0x2130,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2930,0x210F,0x2130,0x2110,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x290F,0x290F,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2110,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x20EE,0x28AC,0x6211,0xDD3C,0xD4B9,0xD498,0xD478,0xCC57,0xC457,0xBC97,0xF6DF,0xF79F,0xE7BF,0xE7DF,0xDFDF,0xDFDF,0xDFDF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7FF,0xD7DF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xDFFF,0xDFFF,0xDFFF,0xDFFF,0xE7FF,0xE7FF,0xE7FF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFDF,0xEFBF,0xF7BF,0xF79F,0xF79F,0xFF7F,0xFF5F,0xFF5F,0xFF5F,0xFF5F,0xFF5F,0xFF5F,0xFF7F,0xFF9F,0xFF9F,0xF79F,0xF7BF,0xF7BF,0xEFBF,0xEFBF,0xEFDF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xEFBF,0xEFBF,0xEFBF,0xF79F,0xF79F,0xFF7F,0xFF7F,0xFF5F,0xFF5F,0xFF3F,0xFF3F,0xFF5F,0xFF7F,0xFF7F,0xFF7F,0xFF9F,0xF79F,0xF7BF,0xF7BF,0xEFBF,0xEFBF,0xEFBF,0xEFDF,0xE7DF,0xE7DF,0xE7DF,0xDFDF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7FF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xDFFF,0xDFDF,0xDFDF,0xEFBF,0xEEDF,0x9333,0x89B0,0x99B1,0xA1B1,0xA9D2,0xA9D2,0xB1D2,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9B3,0xB1B3,0xB1B2,0xA992,0x99D1,0x9291,0xFEBF,0xF77F,0xEFBF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xEFDF,0xEFDF,0xEFBF,0xF7BF,0xF7BF,0xFFBF,0xFFBF,0xFF9F,0xFF9F,0xFF9F,0xF79F,0xF7BF,0xF7BF,0xEFBF,0xEFDF,0xE7DF,0xE7DF,0xDFDF,0xDFDF,0xDFFF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xE7DF,0xE7BF,0xEF9F,0xFF5F,0xBCD7,0xC456,0xCC36,0xD417,0xD417,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE437,0xE436,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE436,0xDC16,0xDC36,0xE437,0xE437,0xE437,0xE437,0xE437,0xDC37,0xE437,0xDC37,0xE437,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE438,0xE458,0xE459,0xDC7A,0xD4DE,0x4154,0x2135,0x1998,0x11F9,0x1AFD,0x1B7F,0x139F,0x0BBF,0x039F,0x039F,0x039F,0x039F,0x037F,0x0B9F,0x037F,0x037F,0x037F,0x037F,0x037F,0x037F,0x037F,0x035E,0x037E,0x039E,0x03BD,0x03DC,0x045B,0x1DDE,0x2F3F,0x1F7F,0x17BF,0x0FBE,0x07BE,0x07BE,0x07DE,0x0FDE,0x0FBE,0x179E,0x2F7F,0x3F1F,0x66BF,0x6CDA,0x6A93,0x9A53,0xA9D3,0xB9B3,0xC1B4,0xC1B4,0xC1B4,0xC194,0xB994,0xB9D4,0xB9F5,0xAA15,0x7152,0x6152,0x5172,0x4972,0x4993,0x4172,0x4192,0x4192,0x3992,0x3971,0x3972,0x3951,0x3951,0x3951,0x3951,0x3151,0x3150,0x3150,0x3151,0x3131,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2910,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x290F,0x292F,0x212F,0x210F,0x2930,0x212F,0x212F,0x210F,0x292F,0x210F,0x290F,0x292F,0x212F,0x292F,0x210F,0x210E,0x210F,0x210F,0x292F,0x292F,0x292F,0x212F,0x2130,0x2130,0x2151,0x1952,0x1132,0x1133,0x19B5,0x2238,0x2217,0x1995,0x1133,0x1132,0x2131,0x2131,0x2130,0x210F,0x210F,0x210F,0x2950,0x2930,0x2930,0x210F,0x2910,0x2910,0x2910,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x2930,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x2130,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x2930,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x290F,0x2930,0x2130,0x2130,0x2130,0x2930,0x210F,0x212F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2910,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2910,0x210F,0x2110,0x2110,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x290F,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2930,0x2910,0x290F,0x290F,0x290F,0x210F,0x212F,0x2130,0x212F,0x2130,0x2930,0x290F,0x290F, + 0x1932,0x1932,0x1912,0x1912,0x1912,0x1912,0x1932,0x1932,0x1932,0x1932,0x1932,0x1912,0x1932,0x1912,0x1912,0x1932,0x1912,0x1912,0x1912,0x1912,0x1912,0x1932,0x1912,0x1912,0x1912,0x1932,0x1932,0x1912,0x1932,0x1912,0x1932,0x1912,0x1912,0x1912,0x1932,0x1933,0x1932,0x1132,0x1132,0x1132,0x1132,0x1112,0x1133,0x1133,0x1134,0x1114,0x0935,0x0956,0x09B8,0x121A,0x09D9,0x09DA,0x01B9,0x01B9,0x09D9,0x09FA,0x11F9,0x11D8,0x11B7,0x1154,0x1113,0x1912,0x1931,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2111,0x1932,0x1932,0x1133,0x1174,0x0995,0x09D7,0x09D8,0x09D8,0x09F9,0x09F9,0x01D8,0x0A19,0x09F9,0x11F8,0x11B7,0x1196,0x1134,0x1112,0x10F1,0x1911,0x2151,0x2151,0x2130,0x2110,0x1910,0x1911,0x1153,0x11B6,0x11D8,0x09D8,0x09F9,0x01D9,0x01D9,0x01D9,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x01D9,0x09F9,0x09D8,0x11B7,0x1195,0x1153,0x1112,0x10F2,0x08F2,0x1175,0x11B7,0x11D8,0x09D8,0x09D9,0x01B9,0x01D9,0x01B9,0x01DA,0x01B9,0x01FA,0x01DA,0x01BA,0x01DA,0x01B9,0x01B9,0x09D9,0x11F8,0x11D7,0x1174,0x1133,0x1132,0x1112,0x08F2,0x0953,0x11D6,0x11F8,0x09B8,0x01B8,0x01B9,0x01DA,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01DA,0x01DA,0x01D9,0x09D9,0x11F9,0x11F8,0x1196,0x1134,0x1112,0x1111,0x1911,0x1930,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2130,0x210F,0x2910,0x2930,0x2910,0x2110,0x2110,0x2130,0x2130,0x2930,0x2130,0x2130,0x2110,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x290F,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2910,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x212F,0x210F,0x210F,0x28CD,0x28AC,0xA3F8,0xD4DB,0xD499,0xD478,0xCC58,0xCC57,0xC477,0xBCF7,0xF77F,0xEFBF,0xE7DF,0xDFDF,0xDFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7FF,0xD7DF,0xD7FF,0xD7FF,0xDFFF,0xD7DF,0xD7FF,0xD7DF,0xDFDF,0xDFFF,0xDFDF,0xDFFF,0xE7FF,0xE7DF,0xE7DF,0xEFBF,0xF7BF,0xF79F,0xFF9F,0xFF9F,0xFF7F,0xFF1F,0xE65E,0xD5BB,0xC4F9,0xB477,0xABF5,0xA394,0x9312,0x9312,0xA394,0xABB5,0xB416,0xBC77,0xCD19,0xDDDC,0xF6DF,0xFF7F,0xFF9F,0xFF9F,0xF77F,0xF79F,0xEFBF,0xEFBF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xEFBF,0xEFBF,0xF7BF,0xF79F,0xFF9F,0xFF7F,0xFF5F,0xE63D,0xCD5A,0xBC97,0xA3D5,0x9332,0x9312,0x92F2,0x9312,0x9B73,0xABD5,0xBC57,0xC4B8,0xCD19,0xDD9B,0xEE5D,0xFF1F,0xFF7F,0xFF7F,0xFF7F,0xF77F,0xF79F,0xEFBF,0xE7BF,0xE7DF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xCFDF,0xCFDF,0xD7DF,0xD7DF,0xD7DF,0xCFBF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7BF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7BF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xCFDF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xDFDF,0xDFDF,0xDFDF,0xE79F,0xE6DF,0x9353,0x89B0,0x99B1,0xA1D2,0xA9D2,0xA9D2,0xB1D3,0xB1D3,0xB1F3,0xB1F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9D3,0xB1D3,0xB1B3,0xB1B3,0xA9B2,0x99B1,0x796E,0xBC57,0xFF7F,0xEF9F,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xEFBF,0xEF9F,0xF79F,0xFF9F,0xFF7F,0xE63D,0xCD7A,0xC4F9,0xBC97,0xBC77,0xC4D8,0xD57A,0xE61D,0xFF1F,0xFF7F,0xFF9F,0xF79F,0xEFDF,0xE7DF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xE7DF,0xE7BF,0xF79F,0xF71F,0xBC96,0xC456,0xCC36,0xD417,0xD417,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE436,0xE436,0xDC36,0xE437,0xE437,0xDC37,0xDC37,0xE437,0xE417,0xE437,0xE437,0xE416,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE416,0xE437,0xDC37,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC38,0xE459,0xE459,0xDC5A,0xD4DF,0x28D3,0x1957,0x1198,0x09FA,0x12BC,0x1B5E,0x139F,0x0BBF,0x0B9F,0x039F,0x0BBF,0x0B9F,0x0B9F,0x0B9F,0x0B9F,0x037F,0x0B7F,0x0B7F,0x0B9F,0x0B7F,0x037F,0x037E,0x037E,0x039E,0x03BD,0x03DC,0x043B,0x15BE,0x2F1F,0x1F5F,0x179E,0x0FBE,0x07BD,0x07BD,0x07DD,0x07DE,0x0F9E,0x179E,0x277F,0x3F1F,0x66BF,0x6D1A,0x7293,0x9A33,0xA9D3,0xB9D3,0xC1B3,0xC1B4,0xC194,0xC1B4,0xC1B4,0xB9D4,0xB1F5,0xAA36,0x7152,0x5952,0x5172,0x4972,0x4172,0x4192,0x4172,0x4192,0x3972,0x3972,0x3971,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3150,0x3131,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2110,0x2930,0x2110,0x2930,0x2110,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x212F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x290F,0x290F,0x292F,0x2130,0x2150,0x2130,0x1931,0x1952,0x1132,0x1133,0x1195,0x2A38,0x21F7,0x19B6,0x1133,0x1932,0x2152,0x2131,0x2130,0x2110,0x210F,0x210F,0x2930,0x2930,0x2930,0x210F,0x290F,0x2910,0x2910,0x2910,0x2930,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x2950,0x2930,0x2930,0x2130,0x2130,0x2110,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2110,0x2130,0x210F,0x212F,0x210F,0x292F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2930,0x2110,0x2110,0x210F,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x290F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2130,0x2110,0x2130,0x2130,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2110,0x2930,0x2110,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2930,0x2130,0x212F,0x210F,0x210F, + 0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1932,0x1931,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1912,0x1933,0x1133,0x1134,0x0934,0x0956,0x11B7,0x11F9,0x09D9,0x09DA,0x01B9,0x0199,0x01B9,0x09D9,0x11F9,0x11F8,0x11B6,0x1175,0x1112,0x10F1,0x1911,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2130,0x2131,0x2131,0x1932,0x1111,0x1112,0x1154,0x0995,0x09B7,0x09D8,0x09D8,0x09D9,0x01B8,0x01B8,0x09F9,0x09D8,0x11D8,0x11B7,0x1196,0x1154,0x1112,0x1911,0x1931,0x2130,0x2130,0x2130,0x2110,0x2110,0x1910,0x1932,0x1174,0x11B7,0x09B8,0x01B9,0x01B9,0x01D9,0x01DA,0x01DA,0x01DA,0x01DA,0x01B9,0x01DA,0x01FA,0x01D9,0x01D9,0x09F9,0x11F8,0x11D7,0x0954,0x1133,0x1132,0x1132,0x10F2,0x1133,0x19D7,0x11F8,0x0197,0x01B8,0x01B9,0x01D9,0x01D9,0x01DA,0x01D9,0x01DA,0x01B9,0x01B9,0x01B9,0x01DA,0x01D9,0x09D9,0x11F8,0x19D7,0x1195,0x1133,0x1932,0x1111,0x1111,0x0912,0x19D6,0x1A17,0x09B7,0x0198,0x01B9,0x01D9,0x01DA,0x01BA,0x01DA,0x01DA,0x01DA,0x01DA,0x01DA,0x09DA,0x01B9,0x09D9,0x11D8,0x1196,0x0933,0x1112,0x1111,0x1931,0x1930,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x2130,0x210F,0x210F,0x2910,0x2110,0x2110,0x2930,0x2910,0x2110,0x2130,0x210F,0x2130,0x2130,0x2930,0x212F,0x2130,0x210F,0x212F,0x210F,0x290F,0x292F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x212F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x210F,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x212F,0x210F,0x210F,0x290E,0x28CD,0x38ED,0xBC79,0xCC99,0xD478,0xCC58,0xCC58,0xCC57,0xB415,0xF71F,0xEF9F,0xE7BF,0xDFDF,0xDFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xCFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7FF,0xD7DF,0xD7DF,0xDFDF,0xDFDF,0xDFFF,0xDFFF,0xDFDF,0xE7DF,0xE7DF,0xEFDF,0xEFBF,0xFF9F,0xFF3F,0xEE5E,0xCCFA,0xA333,0x79CF,0x716E,0x796E,0x796E,0x818F,0x818F,0x898F,0x898F,0x8990,0x8990,0x8990,0x8990,0x896F,0x816F,0x816F,0x816E,0x794E,0x794D,0x8A30,0xBBF6,0xEDDD,0xFEDF,0xFF5F,0xF79F,0xEF9F,0xE7BF,0xE7BF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7DF,0xE7BF,0xEFBF,0xF79F,0xF73F,0xEE9E,0xDD9C,0xABD6,0x8A30,0x716E,0x796E,0x816F,0x818F,0x89B0,0x89B0,0x89B0,0x89B0,0x89B0,0x8990,0x898F,0x898F,0x816F,0x816F,0x814E,0x794E,0x794D,0x798E,0x9AF3,0xDD5B,0xF65E,0xFEFF,0xFF7F,0xF79F,0xEFBF,0xE7DF,0xE7DF,0xDFDF,0xDFDF,0xDFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xCFDF,0xCFDF,0xD7DF,0xCFDF,0xCFBF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7BF,0xD7BF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7BF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xCFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xDFDF,0xDFDF,0xE79F,0xEEDF,0x9353,0x89D0,0x99D2,0xA1D2,0xA9D2,0xA9D3,0xB1D3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xA9B2,0x99B1,0xC3D7,0xFE9F,0xFF5F,0xF79F,0xEFBF,0xE7BF,0xE7DF,0xE7DF,0xE7DF,0xE7BF,0xE7BF,0xEFBF,0xF77F,0xF6DF,0xA3B5,0x71AE,0x716E,0x796E,0x796F,0x816F,0x816F,0x816F,0x794E,0x796E,0x714D,0x79CE,0xB436,0xF6BF,0xF79F,0xE7BF,0xE7DF,0xDFDF,0xDFFF,0xDFFF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7BF,0xD7DF,0xD7BF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7BF,0xD7BF,0xD7DF,0xD7BF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xE7DF,0xE7BF,0xEF9F,0xF73F,0xBCD7,0xC436,0xCC16,0xD416,0xD417,0xD417,0xDC17,0xDC17,0xDC37,0xDC17,0xDC37,0xDC37,0xDC17,0xDC37,0xDC36,0xDC16,0xDC16,0xDC16,0xDC17,0xDC16,0xDC17,0xDC17,0xE417,0xE417,0xE417,0xE417,0xE416,0xE416,0xE417,0xE417,0xE417,0xE417,0xE437,0xE417,0xE417,0xE437,0xE417,0xE417,0xDC16,0xE437,0xE417,0xE417,0xE417,0xE437,0xDC16,0xDC16,0xDC17,0xDC17,0xE417,0xE437,0xE437,0xE438,0xE438,0xDC38,0xDC59,0xDC7A,0xD4FF,0x20B2,0x1957,0x1199,0x09DA,0x129C,0x1B3E,0x139F,0x13BF,0x0BBF,0x0BBF,0x0BBF,0x0BBF,0x0B9F,0x0B9F,0x0B9F,0x0B9F,0x0B7F,0x0B9F,0x0B7F,0x0B7F,0x0B7F,0x037E,0x037E,0x039E,0x03BD,0x03FC,0x043B,0x0D5D,0x2F1F,0x1F5F,0x177E,0x0F9E,0x07BD,0x07BD,0x07DD,0x07BD,0x0FBE,0x179E,0x277E,0x3F1F,0x5EBF,0x757C,0x6A93,0x9213,0xB214,0xB9D4,0xB993,0xC194,0xC1B4,0xC1B4,0xB993,0xB9B4,0xB1D4,0xA1F5,0x7993,0x6152,0x5152,0x4152,0x4172,0x4193,0x49B3,0x4192,0x3971,0x3951,0x3951,0x3971,0x3151,0x3151,0x3151,0x3151,0x3130,0x3130,0x3130,0x3150,0x3150,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x210F,0x290F,0x2910,0x2910,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x2930,0x290F,0x2910,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x290F,0x210F,0x292F,0x292F,0x212F,0x210F,0x210F,0x212F,0x292F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x1931,0x1932,0x1132,0x1133,0x19B6,0x2A38,0x21F7,0x1995,0x1133,0x1112,0x1931,0x2131,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2930,0x2930,0x292F,0x292F,0x292F,0x290F,0x292F,0x2930,0x212F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x2130,0x2110,0x2111,0x1911,0x1911,0x2132,0x2132,0x2131,0x1911,0x1911,0x1911,0x2131,0x2131,0x2131,0x2111,0x2131,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x292F,0x292F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x290F,0x290F,0x292F,0x292F,0x290F,0x210F,0x2930,0x2910,0x2110,0x2110,0x2110,0x2130,0x210F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x212F,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x2910,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x2130, + 0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x1910,0x2111,0x2110,0x1911,0x1911,0x2131,0x2131,0x1911,0x2111,0x2131,0x1910,0x1911,0x2111,0x1911,0x1910,0x2131,0x2131,0x1931,0x1931,0x1911,0x1931,0x1911,0x1910,0x1910,0x1931,0x1910,0x1931,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1113,0x1133,0x1134,0x0955,0x1197,0x11F9,0x11F9,0x09FA,0x09B9,0x0199,0x09B9,0x09D9,0x11F9,0x11F8,0x11B7,0x1175,0x1112,0x1932,0x1932,0x2132,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1911,0x1112,0x1133,0x1154,0x0975,0x09B7,0x09D8,0x01B8,0x01D8,0x01D8,0x01D8,0x09D9,0x09F9,0x11D8,0x11B7,0x1196,0x1154,0x1133,0x1911,0x1911,0x2151,0x2110,0x2110,0x2110,0x2110,0x1910,0x1931,0x1133,0x1175,0x0997,0x09B8,0x01B9,0x01B9,0x01DA,0x01DA,0x01FA,0x01DA,0x01DA,0x01D9,0x01DA,0x01D9,0x01D9,0x09F9,0x11F9,0x09B7,0x1175,0x1133,0x1132,0x1111,0x1111,0x1132,0x1154,0x11D7,0x09B8,0x09B8,0x01D9,0x01B9,0x01B9,0x01B9,0x01DA,0x01DA,0x01DA,0x01BA,0x01DA,0x01B9,0x09DA,0x09D9,0x11D8,0x19D7,0x1195,0x1132,0x1132,0x1931,0x1111,0x1111,0x1133,0x19D6,0x09B7,0x09B8,0x09D9,0x01B9,0x01D9,0x01BA,0x01BA,0x01BA,0x01DA,0x01DA,0x01B9,0x01D9,0x09D9,0x11F9,0x11F8,0x0975,0x1154,0x1112,0x1911,0x1910,0x1930,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x2130,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x2930,0x210F,0x2930,0x210F,0x292F,0x210F,0x290F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2110,0x2930,0x210F,0x2110,0x210F,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x2910,0x2930,0x2930,0x290F,0x2930,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x212F,0x210F,0x210F,0x20EE,0x28AD,0x59AF,0xCCBA,0xCC79,0xD478,0xCC58,0xCC58,0xC457,0xBCD8,0xF79F,0xE79F,0xDFBF,0xDFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xCFDF,0xCFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xDFFF,0xDFFF,0xDFDF,0xDFDF,0xE7DF,0xE7DF,0xEFBF,0xF79F,0xFF7F,0xC519,0x9B74,0x8230,0x89D0,0x91B0,0x9191,0x9991,0x9991,0x9991,0x9991,0x9991,0x9991,0x9991,0x9971,0xA191,0x9991,0x9971,0xA192,0xA172,0x9971,0xA171,0x9971,0x9991,0x9190,0x89B0,0x81AF,0x8A91,0xB416,0xF6DF,0xFF9F,0xF79F,0xEF9F,0xE7BF,0xE7BF,0xE7BF,0xE7BF,0xE7DF,0xE7BF,0xEFBF,0xEF9F,0xF77F,0xFF7F,0xF6DF,0xBC77,0x8271,0x81F0,0x89B0,0x91B1,0x9991,0x9991,0x9991,0x9991,0x9992,0x9992,0x9991,0x9991,0x9991,0x9991,0x9991,0x9991,0x9971,0x9971,0x9971,0x9971,0x9971,0x9991,0x9190,0x818F,0x8A30,0x92D2,0xBC57,0xFEFF,0xFF7F,0xF77F,0xEFBF,0xE7BF,0xDFDF,0xDFDF,0xDFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xCFDF,0xCFDF,0xCFDF,0xCFDF,0xCFBF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7DF,0xD7DF,0xCFBF,0xD7DF,0xD7DF,0xCFDF,0xCFDF,0xCFDF,0xCFDF,0xD7DF,0xD7DF,0xCFBF,0xD7DF,0xCFDF,0xCFBF,0xCFDF,0xD7DF,0xD7DF,0xD7DF,0xCFBF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xCFDF,0xCFDF,0xCFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xCFDF,0xCFDF,0xCFDF,0xCFDF,0xD7DF,0xD7DF,0xCFDF,0xCFDF,0xCFDF,0xCFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xCFDF,0xCFDF,0xCFDF,0xCFDF,0xCFDF,0xD7DF,0xD7DF,0xD7DF,0xD7BF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xCFBF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xCFDF,0xCFDF,0xCFDF,0xCFDF,0xCFDF,0xCFDF,0xD7DF,0xD7DF,0xD7FF,0xDFFF,0xDFDF,0xE79F,0xEEFF,0x9353,0x89D0,0x99D2,0xA1D2,0xA9F2,0xA9F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xA9B2,0x91B0,0xD4B9,0xFF3F,0xF77F,0xE79F,0xE7BF,0xE7BF,0xE7BF,0xE7BF,0xE7DF,0xE7BF,0xE7BF,0xEF7F,0xEEBF,0x8AF2,0x79D0,0x8990,0x9191,0x9191,0x9991,0x9991,0x9971,0x9971,0x9991,0x9991,0x9991,0x91B1,0x81AF,0x8A91,0xEE9E,0xF79F,0xE7BF,0xDFDF,0xDFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xDFDF,0xDFDF,0xDFBF,0xDFBF,0xE7BF,0xEF9F,0xF71F,0xBCB7,0xBC36,0xCC16,0xD416,0xD416,0xD416,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC16,0xDC16,0xDC16,0xDC17,0xDC16,0xDC16,0xDC17,0xDC17,0xDC16,0xE416,0xE417,0xE417,0xE417,0xE416,0xE417,0xE417,0xE417,0xE417,0xE417,0xE417,0xE417,0xE417,0xE417,0xE417,0xE416,0xE417,0xDBF6,0xE417,0xE3F7,0xE417,0xE417,0xDC16,0xE417,0xDC17,0xDC17,0xDC17,0xE417,0xE417,0xE438,0xDC38,0xE439,0xDC59,0xD45B,0xCCBF,0x18B3,0x1158,0x1199,0x09FA,0x125C,0x12FE,0x1B9F,0x13BF,0x13BF,0x13BF,0x13BF,0x13BF,0x13BF,0x139E,0x137E,0x137F,0x137F,0x139F,0x137F,0x137E,0x0B7F,0x0B7E,0x037E,0x039E,0x03BD,0x03DC,0x043C,0x0D3D,0x2EFF,0x1F3F,0x177E,0x0F9E,0x0FBE,0x07BD,0x07DD,0x07DD,0x0FBE,0x179E,0x277E,0x3F1F,0x5EDF,0x755B,0x6A93,0x9213,0xA9D3,0xB9D3,0xB9B3,0xB993,0xC1B4,0xC1B4,0xC1D4,0xB9D4,0xB1D4,0xA235,0x79B3,0x5952,0x5152,0x4152,0x4172,0x4193,0x41B3,0x4192,0x3971,0x3951,0x3951,0x3971,0x3151,0x3151,0x3951,0x3151,0x3130,0x3151,0x2950,0x2950,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x290F,0x290F,0x290F,0x292F,0x212F,0x292F,0x212F,0x292F,0x212F,0x292F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2130,0x2130,0x1931,0x1932,0x1132,0x1133,0x19B5,0x2217,0x21F7,0x1995,0x1113,0x1112,0x1931,0x2131,0x2130,0x2110,0x2130,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x292F,0x2930,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2111,0x2131,0x2131,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x2132,0x1911,0x2131,0x2111,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2910,0x2910,0x2930,0x210F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x212F,0x210F,0x2930,0x2130,0x2110,0x2130,0x2130,0x2110,0x2930,0x2930,0x290F,0x2930,0x292F,0x292F,0x292F,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130, + 0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x1910,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x1910,0x2110,0x1930,0x2130,0x2131,0x2131,0x2111,0x1911,0x1932,0x1932,0x1113,0x1134,0x1176,0x11B8,0x11F9,0x09D9,0x09D9,0x09B9,0x0199,0x01B9,0x09B9,0x11F9,0x11F8,0x11B6,0x1155,0x1133,0x1953,0x1932,0x1932,0x1932,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2111,0x2111,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x1931,0x1931,0x2151,0x2131,0x2131,0x1931,0x1911,0x1910,0x1931,0x1911,0x1931,0x2131,0x1931,0x2151,0x2131,0x1931,0x1931,0x1932,0x1953,0x1153,0x0954,0x0975,0x09D7,0x09D8,0x09D8,0x01D9,0x01D9,0x09F9,0x09D9,0x09D8,0x11D8,0x11D7,0x1175,0x1133,0x1112,0x1911,0x2131,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2131,0x1911,0x1153,0x1196,0x09B8,0x09D9,0x01D9,0x01B9,0x01D9,0x01B9,0x01DA,0x01B9,0x01B9,0x01D9,0x01D9,0x09F9,0x0A19,0x09B8,0x0996,0x1175,0x1133,0x1112,0x1111,0x1931,0x1932,0x1112,0x1154,0x19D7,0x09B8,0x09D9,0x01B9,0x01D9,0x01DA,0x01B9,0x01DA,0x01DA,0x01BA,0x01DA,0x01DA,0x01D9,0x09B9,0x11F9,0x19D8,0x1154,0x1133,0x1132,0x1931,0x1910,0x1910,0x1111,0x1153,0x19F7,0x09D7,0x09D8,0x09D9,0x01D9,0x01DA,0x01BA,0x01BA,0x01BA,0x01B9,0x01DA,0x01FA,0x09F9,0x09F9,0x11D7,0x1196,0x0954,0x1132,0x1112,0x1911,0x1910,0x2130,0x2950,0x2930,0x212F,0x212F,0x210F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2910,0x2910,0x2110,0x210F,0x210F,0x2930,0x210F,0x2910,0x2910,0x2930,0x2930,0x2110,0x2910,0x2930,0x290F,0x2930,0x212F,0x212F,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x212F,0x210F,0x20EF,0x20EE,0x206C,0x8B14,0xCC9A,0xCC58,0xCC58,0xCC57,0xC457,0xBC56,0xE65D,0xEF7F,0xDF9F,0xDFBF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xCFBF,0xD7BF,0xD7BF,0xD7DF,0xCFDF,0xCFDF,0xCFDF,0xCFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xDFDF,0xE7BF,0xEF9F,0xF73F,0xDDBC,0x92D2,0x81AF,0x89D0,0x91B1,0x99B1,0x99B2,0xA1B2,0xA1B2,0xA1B2,0xA1B2,0xA1B2,0xA1B2,0xA9B2,0xA9B2,0xA9B2,0xA9B2,0xA9B2,0xA9B2,0xA9B2,0xA992,0xA992,0xA992,0xA192,0xA192,0xA192,0xA191,0x99B1,0x91D1,0x89D0,0x81CF,0xC478,0xF6BF,0xF75F,0xEF9F,0xEF9F,0xE7BF,0xE7BF,0xE7BF,0xEF9F,0xEF7F,0xF75F,0xF6DF,0xC499,0x8210,0x81B0,0x91D1,0x91B1,0x99B2,0xA192,0xA1B2,0xA1B2,0xA1B2,0xA1B2,0xA1B2,0xA192,0xA9B2,0xA1B2,0xA1B2,0xA9B2,0xA9B2,0xA9B2,0xA992,0xA9B2,0xA9B2,0xA9B2,0xA192,0xA192,0xA192,0x99B1,0x99D1,0x91D1,0x89D0,0x79AF,0xB3F6,0xF69F,0xF75F,0xEF9F,0xE7BF,0xDFBF,0xDFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xCFDF,0xCFDF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xD7BF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBE,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBE,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xD7DF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFDF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xD7BF,0xD7DF,0xD7DF,0xDFDF,0xE79F,0xEEDF,0x9354,0x89D0,0x99D2,0xA1F2,0xA9F3,0xA9F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xA9D3,0xA9B2,0x91B0,0xCCB9,0xFF3F,0xEF7F,0xE79F,0xE7BF,0xDFBF,0xDFBF,0xDFBF,0xDFBF,0xE7BF,0xEFBF,0xF77F,0x9B94,0x81F0,0x89B1,0x91B2,0x9992,0x99B2,0xA1B2,0xA1B2,0xA1B2,0xA1B2,0xA1B2,0xA1B2,0xA192,0x9992,0x91B1,0x89D0,0x8AD2,0xF6FF,0xEF9F,0xDFDF,0xDFFF,0xD7DF,0xD7DF,0xD7BF,0xD7BF,0xD7DF,0xD7DF,0xCFBF,0xCFBF,0xD7BF,0xCFBF,0xCFBF,0xCFBF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xDFBF,0xDFDF,0xDFBF,0xE7BF,0xEF7F,0xF75F,0xC538,0xBC36,0xCC16,0xD416,0xD3F6,0xD417,0xD416,0xDBF6,0xDBF6,0xDC16,0xDC16,0xDC17,0xDBF6,0xDC16,0xDBF6,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDC17,0xDBF6,0xDBF6,0xE3F6,0xE3F6,0xE3F6,0xE417,0xDBF6,0xE417,0xDBF6,0xE3F6,0xE417,0xE3F6,0xE3F6,0xE416,0xE3F6,0xDBF6,0xDBF6,0xE3F6,0xDBF6,0xE3F7,0xE3F6,0xE416,0xE416,0xDBF6,0xDBF6,0xDBF7,0xDBF7,0xDC17,0xDC17,0xDC17,0xDC18,0xDC39,0xDC5A,0xD47B,0xC4BF,0x20B3,0x1958,0x1179,0x11DA,0x0A3B,0x129D,0x1B5F,0x1BBF,0x1BBF,0x1B9F,0x1B9E,0x1B7E,0x1B9E,0x1B7E,0x237E,0x235E,0x235E,0x237E,0x237E,0x1B7E,0x137E,0x137E,0x0B9E,0x0B9E,0x03BD,0x03DC,0x041C,0x04DC,0x26BF,0x1F3F,0x177E,0x0FBE,0x07BD,0x07DD,0x07DD,0x07DE,0x0FBE,0x179E,0x277F,0x3F1F,0x5EBF,0x755C,0x6AB3,0x9213,0xB1F4,0xB9B3,0xB9B3,0xC1D4,0xC193,0xC1B4,0xB9B3,0xB9D4,0xB215,0xAA36,0x6932,0x50F1,0x5173,0x4972,0x4993,0x4193,0x4192,0x3972,0x3972,0x3971,0x3951,0x3951,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x210F,0x290F,0x290F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1911,0x1932,0x1132,0x0913,0x19B5,0x2A38,0x21F7,0x19B5,0x1133,0x1132,0x1951,0x2131,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x292F,0x212F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x2150,0x2130,0x2151,0x2131,0x1911,0x1911,0x1931,0x1932,0x1932,0x1932,0x1952,0x1953,0x1153,0x1953,0x1153,0x1953,0x1133,0x1133,0x1132,0x1132,0x1932,0x1912,0x1912,0x2132,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x210F,0x210F,0x292F,0x292F,0x292F,0x2930,0x292F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2910,0x210F,0x292F,0x212F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x212F,0x2130,0x2930,0x212F,0x212F,0x290F,0x292F,0x212F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x210F,0x2110,0x2130,0x210F,0x2130,0x2110, + 0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x210F,0x210F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2131,0x2111,0x1911,0x1912,0x1113,0x1114,0x1176,0x11B7,0x11D9,0x11F9,0x09D9,0x09B9,0x09B9,0x09B9,0x09B8,0x11F9,0x11F8,0x11B7,0x1175,0x1174,0x1153,0x1133,0x1932,0x1932,0x1932,0x1912,0x1912,0x1932,0x1912,0x1932,0x1932,0x1931,0x1932,0x1911,0x1932,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1931,0x1932,0x1932,0x1932,0x1932,0x1131,0x1131,0x1111,0x1932,0x1952,0x1931,0x1952,0x1932,0x1931,0x1932,0x1932,0x1153,0x0953,0x0954,0x0976,0x09B7,0x09D8,0x09F9,0x01D8,0x09D9,0x09F9,0x09F9,0x11F9,0x11F8,0x11D7,0x1195,0x1133,0x1112,0x1911,0x1911,0x2110,0x2110,0x2130,0x210F,0x210F,0x2130,0x2110,0x1910,0x1911,0x1974,0x0976,0x11D8,0x09F9,0x01D9,0x01D9,0x01D9,0x01D9,0x01B9,0x01B9,0x01B9,0x01D9,0x09F9,0x09F9,0x11F8,0x0996,0x1175,0x0933,0x1132,0x1912,0x1911,0x1931,0x1931,0x1112,0x1154,0x11B7,0x11F9,0x01B9,0x0198,0x01D9,0x01B9,0x01B9,0x01DA,0x01B9,0x01D9,0x09DA,0x01B9,0x09D9,0x11F9,0x11D7,0x1155,0x1113,0x1132,0x1911,0x1910,0x1910,0x1910,0x1911,0x1974,0x19F7,0x1219,0x09D8,0x01B9,0x01D9,0x01D9,0x01DA,0x01DA,0x01BA,0x01B9,0x01D9,0x09FA,0x11F9,0x11D8,0x1196,0x0954,0x1133,0x1112,0x1911,0x1910,0x2130,0x2130,0x2130,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2110,0x2130,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x212F,0x212F,0x2930,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x2930,0x2930,0x2130,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x2930,0x2110,0x2930,0x210F,0x2910,0x2910,0x2910,0x2930,0x292F,0x212F,0x292F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x292F,0x212F,0x210F,0x20EF,0x20CE,0x204B,0xB418,0xCC79,0xCC58,0xCC58,0xCC37,0xC457,0xB477,0xEEDF,0xEF9F,0xDF9F,0xDFBF,0xD7BF,0xD7BF,0xD7BF,0xCFBF,0xCFBF,0xCFBF,0xD7BF,0xCFBF,0xCFBF,0xCFBF,0xCFDF,0xCFBF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xDFDF,0xDFDF,0xDFDF,0xE7DF,0xEFBF,0xF79F,0xEEDF,0xA3B4,0x8210,0x91D1,0x99B1,0x99B2,0xA192,0xA1B2,0xA9B2,0xA9B2,0xA9B3,0xA9B2,0xA9B3,0xA9D3,0xA9B3,0xA9D3,0xA9B3,0xA9B3,0xA9D3,0xA9B3,0xA9B3,0xA9B3,0xA9B3,0xA9B3,0xA9B3,0xA9B3,0xA9B3,0xA9B2,0xA992,0xA992,0xA1B2,0xA191,0x99B1,0x89B0,0x92B2,0xE5FD,0xFF5F,0xF77F,0xEF7F,0xEF9F,0xEF9F,0xF77F,0xFF5F,0xE5DC,0x92F3,0x89D0,0x91B1,0x99B1,0xA1B2,0xA1B2,0xA1B2,0xA9B2,0xA9B2,0xA9B3,0xA9B3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9B3,0xA9D3,0xA9D3,0xA9D3,0xA9B3,0xA9B3,0xA9B3,0xA9B3,0xA9B3,0xB1B3,0xA9B3,0xA9B2,0xA9B2,0xA9B2,0xA1B2,0xA1B2,0x99D1,0x91F1,0x8A71,0xC4F9,0xFF7F,0xEF7F,0xE7BF,0xDFBF,0xDFDF,0xD7DF,0xD7DF,0xD7BF,0xCFDF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBE,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBE,0xCFBF,0xCFBF,0xCFBE,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBE,0xCFBE,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xD7BF,0xD7DF,0xD7DF,0xD7BF,0xE79F,0xE6FF,0x9374,0x81D0,0x99F2,0xA1F2,0xA9F3,0xA9F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB9F3,0xB9F3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xA9D2,0xA1B2,0x89B0,0xC498,0xFF5F,0xEF7F,0xE79F,0xDFBF,0xDFBF,0xDF9F,0xDFBF,0xDFBF,0xE7BF,0xEF9F,0xD61C,0x8230,0x89B1,0x91B2,0x99B2,0xA1D2,0xA1D3,0xA1D3,0xA9D3,0xA9D3,0xA9D3,0xA9B3,0xA9B3,0xA9B3,0xA192,0x9992,0x91B1,0x8A10,0xCD3A,0xEF9F,0xDFDF,0xD7DF,0xD7DF,0xD7DF,0xD7BF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xD7BF,0xCFBF,0xCFBF,0xCFBF,0xD7BF,0xCF9F,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xDFBF,0xDFBF,0xDFBF,0xE79F,0xF75F,0xCD59,0xBC15,0xC3F6,0xCBF6,0xD3F6,0xD3F6,0xD3F6,0xD3F6,0xDC16,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xE3F6,0xDBF6,0xDBD6,0xE3F6,0xDBF6,0xDBF6,0xDBF6,0xE3F6,0xE3F6,0xE3F6,0xE3F6,0xE3F6,0xE3F6,0xDBF6,0xDBF6,0xE3F6,0xE3F6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDC18,0xDC18,0xDC39,0xDC3A,0xD45B,0xC49E,0x20D4,0x1978,0x1199,0x11BA,0x121B,0x125C,0x1AFE,0x237F,0x2BBF,0x2B9F,0x237E,0x2B7D,0x2B7D,0x335D,0x335D,0x333D,0x333D,0x335E,0x337E,0x2B7E,0x239E,0x1B7E,0x139E,0x0B9E,0x039D,0x03DC,0x041C,0x04BC,0x1E5F,0x1EFF,0x177E,0x0FBE,0x07BD,0x07DD,0x07DD,0x07BD,0x0FBD,0x179E,0x277E,0x371E,0x5EBF,0x757C,0x6AB3,0x9233,0xA9D3,0xB9B3,0xB9B3,0xC1B4,0xC1B4,0xC1B4,0xC1D4,0xB9D4,0xB1F4,0xAA56,0x60F1,0x50F1,0x5173,0x4972,0x4172,0x4193,0x3972,0x3972,0x3972,0x3971,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x3151,0x2950,0x2951,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x210F,0x2910,0x2910,0x2110,0x2110,0x2910,0x2110,0x2910,0x2930,0x2110,0x2110,0x2130,0x2130,0x2930,0x290F,0x290F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1112,0x1995,0x2A17,0x21F6,0x19B5,0x1112,0x1112,0x1931,0x1910,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2151,0x2131,0x1931,0x1931,0x1932,0x1132,0x1152,0x1153,0x1153,0x1994,0x1995,0x19B5,0x1175,0x19B5,0x1995,0x1995,0x1995,0x1995,0x1174,0x1154,0x1133,0x1112,0x1112,0x1912,0x1912,0x2132,0x2131,0x2131,0x2131,0x2110,0x2130,0x2930,0x2910,0x2930,0x2930,0x2930,0x290F,0x290F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2930,0x2910,0x210F,0x212F,0x292F,0x212F,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2930,0x212F,0x212F,0x2130,0x2930,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2130,0x210F,0x2110,0x210F,0x210F,0x2130,0x2130, + 0x2110,0x2130,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2111,0x1911,0x1912,0x1113,0x1113,0x1175,0x11B7,0x11D8,0x11F9,0x09D9,0x09B9,0x09B9,0x09B9,0x09D9,0x11F9,0x11D8,0x11B7,0x00F3,0x00D2,0x08F2,0x08F2,0x08F2,0x08F2,0x08F2,0x08D2,0x08F2,0x08F2,0x08F2,0x08F2,0x0912,0x08F1,0x08F2,0x08F1,0x08F1,0x0912,0x0912,0x0912,0x08F1,0x08F1,0x08F1,0x08F1,0x08F2,0x08F1,0x08F2,0x08F2,0x08F1,0x08F1,0x08F1,0x08F1,0x0912,0x0912,0x08F1,0x08F1,0x08F1,0x10F1,0x10F1,0x10F1,0x0911,0x0912,0x0913,0x0113,0x0955,0x0976,0x0997,0x09B8,0x01B8,0x01D8,0x09F9,0x09F9,0x09F9,0x1219,0x11F8,0x1196,0x1175,0x1133,0x1112,0x1911,0x18F0,0x1910,0x2110,0x2930,0x212F,0x210F,0x2110,0x2130,0x2110,0x1910,0x1911,0x1133,0x1196,0x11D8,0x09F9,0x09FA,0x01D9,0x01B9,0x01B9,0x01D9,0x01D9,0x01D9,0x09F9,0x09D8,0x11F8,0x11B6,0x1154,0x1133,0x1112,0x1931,0x1911,0x1911,0x2131,0x1911,0x1911,0x1113,0x1A17,0x1219,0x01B8,0x01D9,0x01B9,0x01D9,0x01B9,0x0199,0x01B9,0x01D9,0x09F9,0x09D9,0x11B8,0x0996,0x0934,0x1133,0x1132,0x1931,0x1931,0x1931,0x2131,0x1931,0x1911,0x1953,0x19F8,0x11F8,0x09D9,0x09D9,0x01B9,0x01B9,0x01B9,0x01B9,0x01B9,0x09F9,0x09F9,0x09F8,0x11F8,0x11B6,0x0954,0x1133,0x1132,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2930,0x292F,0x292F,0x290F,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2110,0x2130,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2930,0x2910,0x210F,0x290F,0x2930,0x2910,0x210F,0x2930,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2930,0x2130,0x2110,0x2110,0x2930,0x2110,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x212F,0x210F,0x20EF,0x20CE,0x206B,0xC49A,0xCC59,0xCC38,0xCC37,0xC437,0xBC36,0xB4B7,0xEF1F,0xE79F,0xDF9F,0xD7BF,0xD7BF,0xD7BF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFDF,0xD7DF,0xD7DF,0xD7DF,0xD7DF,0xDFDF,0xDFDF,0xDFBF,0xEF9F,0xF73F,0xD55B,0x8250,0x89D0,0x91D1,0x99D2,0xA1B2,0xA1B2,0xA9B2,0xA9B3,0xA9D3,0xA9B3,0xA9D3,0xA9D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1B3,0xA9B3,0xA9B3,0xA9B2,0xA992,0xA192,0x99B1,0x91B1,0x89D0,0xCC99,0xFEDF,0xFF5F,0xF75F,0xFF5F,0xFEDF,0xCCB9,0x81D0,0x91B0,0x99D2,0xA1B2,0xA1B2,0xA9B2,0xA9B3,0xA9D3,0xA9D3,0xA9B3,0xB1D3,0xB1D3,0xA9D3,0xA9D3,0xB1D3,0xB1D3,0xB1D3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1B3,0xB1B3,0xA9B3,0xA9B2,0xA9B2,0xA1B2,0x99B1,0x99D1,0x81AF,0xA395,0xF6BF,0xEF7F,0xE79F,0xDFBF,0xD7DF,0xD7DF,0xD7DF,0xD7BF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCFBF,0xCF9E,0xCF9E,0xCF9E,0xCF9E,0xCF9E,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBE,0xCFBE,0xCFBE,0xCFBE,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCFBF,0xCF9E,0xCFBF,0xCF9F,0xCFBF,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xCF9E,0xCF9E,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFDF,0xD7DF,0xDFDF,0xE79F,0xE6BF,0x9B94,0x81F0,0x99F1,0xA1F2,0xA9F2,0xA9F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xA9D3,0xA9D3,0xA1B2,0x89B0,0xC4D9,0xF73F,0xE77F,0xDF9F,0xDF9F,0xDFBF,0xDF9F,0xDF9F,0xDFBF,0xE79F,0xEF5F,0xB4B7,0x79F0,0x91D2,0x99F2,0xA1D3,0xA1F3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9D3,0xA9D3,0xA9B3,0xA9B3,0xA1B2,0x99B2,0x91D1,0x92D2,0xF77F,0xDFBF,0xD7DF,0xD7DF,0xD7BF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCF9F,0xCF9F,0xD7BF,0xD7BF,0xCF9F,0xD79F,0xD79F,0xD79F,0xD7BF,0xD7BF,0xDFBF,0xDF9F,0xE77F,0xF75F,0xCD9A,0xB415,0xC3F6,0xCBD6,0xD3D6,0xD3D6,0xD3F6,0xD3D6,0xD3F6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBD6,0xDBF6,0xDBD6,0xDBD6,0xDBF6,0xE3D6,0xE3D6,0xDBD6,0xE3D6,0xE3F6,0xE3D6,0xE3F6,0xE3D6,0xDBD6,0xE3F6,0xE3D6,0xDBF6,0xDBF6,0xDBD6,0xDBF6,0xDBF6,0xE3F6,0xE3F6,0xDBF6,0xDBD6,0xDBF6,0xDBF7,0xDBF7,0xE3F7,0xDBF8,0xE418,0xE419,0xDC3A,0xD45B,0xC47E,0x20D4,0x2199,0x199A,0x11BA,0x11DB,0x121B,0x1ABD,0x2B3E,0x3B9F,0x43BF,0x439E,0x437D,0x4B7D,0x4B5D,0x535D,0x533D,0x535D,0x537D,0x4B7D,0x437E,0x337D,0x239E,0x1B9D,0x13BD,0x039C,0x03DC,0x03FC,0x04BC,0x1E3F,0x1EDF,0x175E,0x0F9D,0x07BD,0x07DD,0x07DD,0x0FDD,0x0FBD,0x179E,0x277E,0x371E,0x5EBF,0x757C,0x6A93,0x9212,0xB1F4,0xB9B3,0xB9D4,0xC1B3,0xC1B4,0xC1B4,0xB9B3,0xB9D4,0xB215,0xAA56,0x68F1,0x5911,0x5973,0x4972,0x4972,0x4192,0x3952,0x3972,0x3971,0x3992,0x3992,0x3971,0x3151,0x3151,0x3151,0x3131,0x2951,0x2951,0x2951,0x2950,0x2950,0x2950,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x290F,0x210F,0x2930,0x2910,0x290F,0x290F,0x210F,0x290F,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x292F,0x290F,0x210F,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x292F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2150,0x2130,0x2131,0x1931,0x1132,0x1133,0x19B5,0x2A17,0x2217,0x1995,0x1112,0x1932,0x1931,0x2130,0x2130,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1132,0x1153,0x1153,0x1174,0x1195,0x11B5,0x11B5,0x19D6,0x19F7,0x19F7,0x19F7,0x19D7,0x11D7,0x19D7,0x19F7,0x19F7,0x19F7,0x19D6,0x19B5,0x1154,0x1133,0x1133,0x1912,0x1912,0x1932,0x1911,0x2131,0x2131,0x2130,0x2130,0x2110,0x2930,0x2910,0x2910,0x2910,0x210F,0x210F,0x212F,0x212F,0x212F,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x2910,0x2910,0x212F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x210F,0x2110,0x2930,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x212F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2130,0x2930, + 0x2130,0x210F,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x2130,0x2130,0x2110,0x2111,0x2131,0x1912,0x1112,0x0913,0x1175,0x19D7,0x11F8,0x11F9,0x11F9,0x09B9,0x09D9,0x01B9,0x09D9,0x11F9,0x11F9,0x0996,0x0135,0x0134,0x0954,0x0934,0x0914,0x0934,0x0914,0x0933,0x0934,0x0934,0x0933,0x0933,0x0933,0x0933,0x0913,0x0933,0x0933,0x0933,0x0933,0x0933,0x0933,0x0953,0x0933,0x0933,0x1154,0x0954,0x0954,0x0954,0x0953,0x0954,0x0954,0x1174,0x1174,0x1174,0x1153,0x1133,0x1133,0x1153,0x0933,0x0933,0x0954,0x1175,0x1196,0x09B7,0x09B8,0x09D9,0x01B9,0x09D9,0x01D9,0x09F9,0x121A,0x1219,0x11D8,0x11B6,0x1175,0x1133,0x1112,0x1911,0x1910,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x2110,0x2110,0x2110,0x1910,0x1911,0x1933,0x1175,0x11D7,0x09D8,0x09F9,0x09D9,0x01D9,0x01B9,0x01B8,0x01D8,0x01B8,0x11F8,0x11B7,0x0975,0x1174,0x1153,0x1132,0x1931,0x1911,0x1911,0x2130,0x2110,0x2111,0x18F1,0x1112,0x19D6,0x1218,0x09B8,0x09D9,0x01D9,0x01D9,0x01B9,0x01B8,0x09D9,0x09F9,0x11D8,0x11D7,0x1196,0x1155,0x1133,0x1132,0x1911,0x1911,0x1931,0x2131,0x1930,0x1911,0x18F1,0x1933,0x19B6,0x11F8,0x11D9,0x09D9,0x09B9,0x09D9,0x01B9,0x01B9,0x09F9,0x09F9,0x11F8,0x11D7,0x1195,0x1154,0x1133,0x1132,0x1132,0x1911,0x2131,0x2130,0x2130,0x2110,0x2130,0x212F,0x210F,0x2930,0x290F,0x290F,0x292F,0x2930,0x212F,0x212F,0x2130,0x2930,0x2130,0x212F,0x212F,0x210F,0x2110,0x2110,0x2130,0x210F,0x2130,0x2930,0x290F,0x290F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2930,0x210F,0x2930,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2930,0x290F,0x2930,0x290F,0x210F,0x212F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x210F,0x210F,0x20EF,0x20CE,0x28AC,0xCCBB,0xCC58,0xCC38,0xCC37,0xC417,0xBC36,0xBCD8,0xEF5F,0xE79F,0xD79F,0xD79F,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xCFBF,0xD7BF,0xD7BF,0xD7DF,0xD7DF,0xD7BF,0xD7BF,0xDFBF,0xE77F,0xF75F,0xAC36,0x8230,0x91D1,0x99B1,0xA1B2,0xA9B2,0xA9D3,0xA9D3,0xA9D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xB1B3,0xB1D3,0xB1B3,0xB1B3,0xA9B3,0xA992,0xA992,0xA192,0x99B1,0x91D0,0xA314,0xEDBD,0xFF1F,0xFE7F,0xAB54,0x91F1,0x99B1,0xA1B2,0xA1B2,0xA9B3,0xA9B3,0xA9B3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1F4,0xB1F4,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xA9B2,0xA9B2,0xA9B2,0xA192,0x99B1,0x89D0,0x92D2,0xEE9F,0xF77F,0xE79F,0xDFBF,0xD7BF,0xD7BF,0xD7BF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xCF9E,0xCF9E,0xCFBF,0xCFBE,0xC79E,0xC7BE,0xCFBE,0xCF9E,0xCF9E,0xCF9E,0xCF9E,0xCF9E,0xCFBF,0xC79E,0xCF9E,0xCF9E,0xCF9E,0xCF9E,0xCF9F,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xCF9F,0xCF9F,0xCFBF,0xCF9E,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBE,0xCFBE,0xCFBE,0xCFBF,0xCF9F,0xCF9F,0xCFBF,0xCFBE,0xCF9E,0xCF9E,0xCFBE,0xC79E,0xCF9E,0xCF9E,0xCFBE,0xCFBE,0xCFBE,0xCFBE,0xCFBE,0xCFBE,0xCF9E,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9E,0xCF9E,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCFBF,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFDF,0xD7DF,0xD7BF,0xDF9F,0xDEBF,0x9BB5,0x81F0,0x99F1,0xA1F2,0xA9F2,0xA9F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xA9D3,0xA9D2,0xA1B2,0x8990,0xC4D9,0xF73F,0xE77F,0xDF9F,0xDF9F,0xD79F,0xD79F,0xD79F,0xDFBF,0xE79F,0xEF3F,0x9394,0x81F0,0x99F2,0x99F2,0xA1F3,0xA1F3,0xAA13,0xAA13,0xB213,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9D3,0xA9B3,0xA9B2,0xA1B2,0x99B1,0x79CF,0xF75F,0xE79F,0xD7BF,0xD7DF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCFBF,0xCF9F,0xCF9F,0xCFBF,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xD79F,0xD79F,0xD79F,0xD79F,0xD79F,0xD79F,0xDF9F,0xE77F,0xEF5F,0xD59A,0xB3F5,0xC3D5,0xCBD6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xD3D6,0xDBD6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xE3D6,0xE3D6,0xDBD6,0xDBD6,0xE3D6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD7,0xDBD7,0xE3F7,0xDBF8,0xE3F8,0xDC19,0xDC3A,0xD43B,0xC45E,0x28F4,0x2978,0x2179,0x199A,0x19BA,0x1A1B,0x2A9D,0x32DD,0x433D,0x535D,0x5B7D,0x637D,0x6B5C,0x6B1B,0x6B1B,0x6B1B,0x62FB,0x631C,0x5B3C,0x535C,0x3B5C,0x339D,0x23BD,0x1BDD,0x0BBC,0x03DC,0x041C,0x049C,0x15FF,0x16BF,0x175F,0x0F9E,0x07BD,0x07DD,0x07DD,0x07DD,0x0FBD,0x179D,0x277E,0x371E,0x5EDF,0x757C,0x6A93,0x9212,0xA9D3,0xB9D4,0xB993,0xC1B3,0xC193,0xC1B4,0xB9B3,0xB9D4,0xB1D4,0xAA15,0x7932,0x58F1,0x5952,0x5172,0x4972,0x4152,0x4152,0x3971,0x3992,0x3991,0x3171,0x3151,0x3171,0x3151,0x3151,0x3151,0x2951,0x2951,0x2951,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x2910,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2110,0x2910,0x2110,0x2110,0x212F,0x212F,0x212F,0x210F,0x290F,0x2910,0x2110,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x292F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1932,0x1132,0x1133,0x1995,0x2A38,0x21F7,0x19B5,0x1133,0x1112,0x1951,0x2131,0x2150,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x212F,0x2130,0x2150,0x2130,0x1931,0x1931,0x1932,0x1152,0x1153,0x1173,0x1195,0x19D6,0x19F6,0x19F7,0x1A17,0x19F7,0x19F7,0x1A18,0x19F7,0x1A18,0x19F7,0x1A18,0x1A18,0x1A38,0x1A18,0x1A17,0x1A17,0x19F7,0x19B6,0x1154,0x1133,0x1133,0x1112,0x1932,0x1932,0x2151,0x2131,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x210F,0x2910,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2910,0x2930,0x2110,0x210F,0x210F,0x290F,0x210F,0x2910,0x2930,0x2910,0x2910,0x2910,0x2110,0x2930,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110, + 0x212F,0x210F,0x2130,0x2110,0x210F,0x2110,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x210F,0x2130,0x2110,0x2130,0x2130,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x2130,0x212F,0x2110,0x2110,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2131,0x2131,0x1911,0x10F1,0x10F2,0x0913,0x1155,0x19D7,0x1A19,0x11F9,0x11F9,0x09B9,0x01B9,0x01B9,0x09B9,0x09D9,0x1219,0x1A39,0x1A39,0x1A19,0x1A18,0x1A18,0x2219,0x2219,0x2239,0x2218,0x2238,0x2238,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2238,0x2238,0x2238,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2238,0x1A18,0x2238,0x1A18,0x1A17,0x1A18,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F8,0x11F9,0x11F9,0x09F9,0x0A1A,0x09FA,0x01D9,0x01D9,0x09D9,0x1219,0x11F9,0x11B7,0x0934,0x1133,0x1111,0x1911,0x1911,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x1911,0x1933,0x1154,0x1197,0x11D8,0x09D9,0x09B8,0x09B8,0x09D8,0x09D8,0x09F8,0x1218,0x11B6,0x1195,0x1154,0x1153,0x1932,0x1931,0x1931,0x2131,0x2130,0x2110,0x2110,0x2110,0x18F1,0x1112,0x1195,0x19F7,0x09B8,0x09B8,0x09D8,0x09D8,0x09B8,0x09D8,0x09B8,0x11B7,0x19D7,0x1196,0x1174,0x1133,0x1112,0x1911,0x1931,0x1931,0x2131,0x2110,0x2110,0x2110,0x1911,0x1912,0x1995,0x11D7,0x11B8,0x09B8,0x09D8,0x09B8,0x09D8,0x09D8,0x11F8,0x1A18,0x11B6,0x1175,0x0933,0x1133,0x1953,0x1132,0x1931,0x1931,0x2151,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2950,0x212F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2910,0x210F,0x290F,0x210F,0x2930,0x2110,0x2130,0x2110,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x212F,0x212F,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x212F,0x2930,0x2930,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x20EE,0x20CD,0x390D,0xCCDB,0xCC38,0xCC38,0xCC17,0xC3F7,0xB416,0xC57A,0xEF5F,0xDF9F,0xD79F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCFBF,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCFBF,0xCF9F,0xCFBF,0xD7BF,0xD7BF,0xD7BF,0xD7BF,0xDFBF,0xE79F,0xF73F,0xABF6,0x81F0,0x91D1,0x99B2,0xA1B2,0xA1B2,0xA9D3,0xA9D3,0xB1D3,0xB1D3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB1F3,0xB1F3,0xB1F3,0xB1F4,0xB1F4,0xB1F4,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1B3,0xB1B3,0xB193,0xA992,0xA992,0xA1B2,0x99B1,0x91D0,0xCB97,0x91D0,0x99B1,0xA1B1,0xA1B2,0xA9B2,0xA9B3,0xB1B3,0xB1B3,0xB1B3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1F4,0xB1D3,0xB1D3,0xB1F4,0xB1F4,0xB1F4,0xB1F4,0xB1D3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1B3,0xA9B3,0xA9B2,0xA9B2,0xA1B1,0x91D1,0x8A30,0xEE1E,0xF75F,0xE79F,0xDFBF,0xD7BF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCF9F,0xC79F,0xCF9F,0xCF9F,0xCF9F,0xC79F,0xC79F,0xC79F,0xC79F,0xC79F,0xC79F,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79F,0xCF9F,0xCF9F,0xC79F,0xC79E,0xC79F,0xCF9E,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9E,0xCF9F,0xCF9F,0xCF9F,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xCF9F,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79F,0xC79F,0xC79E,0xC79E,0xC79E,0xC79F,0xCF9F,0xCF9F,0xCF9F,0xCFBF,0xCF9F,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCF9F,0xCF9E,0xCF9E,0xCF9E,0xC79E,0xC79E,0xCF9F,0xCFBF,0xCFBF,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xD7BF,0xD7BF,0xE79F,0xDE9E,0x9BB5,0x81F0,0x99F2,0xA1F2,0xA9F3,0xA9F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xB1F3,0xB1F3,0xB1D3,0xA9D3,0xA9D2,0xA1B1,0x8990,0xC4D9,0xF73F,0xE75F,0xDF7F,0xD79F,0xD79F,0xD79F,0xD77F,0xDF9F,0xE77F,0xEEFF,0x8B33,0x8A11,0x99F2,0xA1F3,0xA1F3,0xAA13,0xAA13,0xAA13,0xB213,0xB214,0xB214,0xB1F3,0xB1F4,0xA9D3,0xA9D3,0xA9B3,0xA1B2,0xA1D2,0x81D0,0xDE3D,0xE79F,0xD7BF,0xCFBF,0xCFBF,0xCFBF,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xC79F,0xC79F,0xCF9F,0xCF9F,0xC79F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xD79F,0xD79F,0xDF9F,0xE77F,0xF75F,0xD5BA,0xB3F5,0xC3D5,0xCBB6,0xD3B6,0xD3D6,0xD3B6,0xD3D6,0xD3D6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xE3D6,0xDBD6,0xDBD6,0xDBB6,0xDBD6,0xDBB6,0xDBD6,0xDBD7,0xDBD7,0xDBD7,0xDBF8,0xDBF8,0xDC1A,0xD43B,0xBC3D,0x28D4,0x2958,0x2179,0x2199,0x21BA,0x29FB,0x323B,0x3A7B,0x427A,0x5ABB,0x6ADA,0x7B1B,0x831B,0x82DA,0x7A78,0x7278,0x7299,0x72B9,0x6ADA,0x62FB,0x4B3B,0x3B7C,0x33BD,0x23FD,0x13DD,0x0BFC,0x041C,0x049C,0x15BE,0x167E,0x175F,0x0F9E,0x0FBD,0x07BD,0x07BD,0x07BD,0x0FBD,0x179D,0x277E,0x371E,0x56BE,0x759C,0x6AB3,0x9233,0xA9F3,0xB9D3,0xB9B3,0xC1D4,0xC1B3,0xC1D4,0xB9B3,0xB9D4,0xB1B3,0xA9D4,0x8973,0x6911,0x6152,0x5952,0x4972,0x4131,0x4151,0x3972,0x3992,0x3991,0x3971,0x3171,0x3151,0x3151,0x3151,0x3151,0x3151,0x2951,0x2950,0x2951,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2910,0x290F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x290F,0x210F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2131,0x1931,0x1932,0x1113,0x1995,0x2A17,0x21F7,0x19B5,0x1112,0x1132,0x1931,0x1930,0x2130,0x2150,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2151,0x1951,0x1932,0x1152,0x1153,0x1174,0x11B5,0x19F6,0x19F7,0x19F7,0x1A17,0x19F7,0x19D7,0x19D6,0x19D7,0x19D6,0x11B6,0x1196,0x1195,0x11B6,0x19F7,0x1A17,0x1A38,0x1A38,0x1A18,0x1A17,0x19F7,0x11B5,0x0953,0x1133,0x1133,0x1932,0x1932,0x2131,0x2131,0x2110,0x2110,0x2110,0x2910,0x2110,0x210F,0x210F,0x2130,0x2130,0x212F,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2110,0x2910,0x290F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2930,0x2110,0x2110,0x2910,0x2910,0x2930,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910, + 0x212F,0x210F,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x210F,0x210F,0x2130,0x2110,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x210F,0x2130,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2131,0x1911,0x1911,0x1112,0x1113,0x1175,0x11B7,0x1219,0x09D9,0x09D9,0x09D9,0x01B9,0x01B9,0x01B8,0x09B8,0x09D9,0x09D9,0x09D8,0x09D8,0x09D8,0x11D8,0x09D8,0x11D8,0x09B7,0x11D8,0x11D7,0x11D8,0x11D7,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11F8,0x11D7,0x11F8,0x11D8,0x11D8,0x11D8,0x11D8,0x11D8,0x11F8,0x11D7,0x11F8,0x11D8,0x11D7,0x11D7,0x11D7,0x11D7,0x11D7,0x11B7,0x11D7,0x11D7,0x11D7,0x11D8,0x09D8,0x09B8,0x09D9,0x09D9,0x01D9,0x01D9,0x01D9,0x09D9,0x11F9,0x11F9,0x1197,0x1175,0x1113,0x1112,0x1911,0x1910,0x2110,0x2130,0x2130,0x2110,0x210F,0x210F,0x292F,0x2930,0x210F,0x210F,0x2110,0x2110,0x1911,0x1912,0x1934,0x1996,0x11B7,0x11D8,0x11D8,0x09D8,0x11F8,0x11F7,0x11F7,0x11D6,0x1194,0x1153,0x1132,0x1932,0x1931,0x1931,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2111,0x1912,0x1174,0x19D6,0x11B7,0x11D8,0x11D8,0x11F8,0x11D8,0x09B7,0x11B7,0x19B6,0x1175,0x1154,0x1153,0x1132,0x1911,0x1911,0x1930,0x1910,0x2130,0x2130,0x2110,0x2110,0x2111,0x1912,0x1975,0x19D7,0x11B7,0x19F8,0x11D7,0x11D7,0x11F8,0x11F7,0x19F7,0x19B6,0x1174,0x1133,0x1112,0x1932,0x1932,0x1931,0x1931,0x2131,0x2131,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x210F,0x2930,0x2930,0x210F,0x2910,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2110,0x2110,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x2930,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x292F,0x210F,0x210F,0x20EE,0x20AD,0x390D,0xCCBA,0xCC38,0xC3F7,0xC3F7,0xC3F7,0xABF5,0xD5FC,0xEF7F,0xDF9F,0xCF9F,0xCF7F,0xCF7F,0xCF9F,0xCF9F,0xCFBF,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xCFBF,0xCFBF,0xD7BF,0xDF9F,0xE77F,0xF73F,0xA3F5,0x81F0,0x91B1,0xA1B2,0xA9B2,0xA9B3,0xA9D3,0xA9D3,0xA9D3,0xB1D3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB9F3,0xB1F3,0xB9F3,0xB1F3,0xB1F3,0xB9F4,0xB1F3,0xB1F4,0xB1D3,0xB1D3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xB1B3,0xB1B3,0xB193,0xB192,0xB192,0xA992,0xA9B2,0xA192,0xA1B2,0xA9B2,0xA992,0xA9B2,0xB1B3,0xB1B3,0xB1D3,0xB1B3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1F4,0xB9F4,0xB9F4,0xB1D3,0xB1F4,0xB1F4,0xB1F3,0xB9F4,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB9F3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1B3,0xB1B3,0xA992,0xA992,0xA1B1,0x91B1,0x8A31,0xE61D,0xF75F,0xE79F,0xD7BF,0xD7BF,0xCFBF,0xCFBF,0xCF9F,0xC79F,0xC79F,0xC79F,0xC79F,0xC77E,0xC79F,0xC79E,0xC79F,0xC79F,0xC79F,0xC79F,0xC79E,0xC79E,0xC79F,0xC79E,0xC79E,0xC79F,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79F,0xC79E,0xC79E,0xC79E,0xC79F,0xCF9F,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xCF9F,0xCF9F,0xC79E,0xC79F,0xCF9F,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79F,0xC79F,0xC79F,0xC79F,0xC79F,0xC79E,0xC79F,0xC79F,0xC79F,0xC79F,0xC79E,0xC79F,0xC79F,0xC79E,0xCF9F,0xC79E,0xC79E,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xC79E,0xC79F,0xC79E,0xC79E,0xCFBF,0xC79E,0xC79E,0xC79F,0xC79F,0xC79F,0xC79F,0xC79F,0xC79F,0xC79F,0xC79F,0xCF9F,0xCF9F,0xCFBF,0xCFBF,0xD7BF,0xDF9F,0xD69E,0x9BB5,0x81F0,0x99F2,0xA1F2,0xA9F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xB9F3,0xB1F3,0xB1F4,0xB1D3,0xA9D3,0xA9D3,0xA191,0x89B0,0xC4D9,0xF73F,0xE75F,0xD77F,0xD77F,0xD77F,0xD79F,0xD79F,0xDF9F,0xE77F,0xE6DF,0x8B33,0x8A11,0x9A12,0xA1F3,0xA1F3,0xAA13,0xAA34,0xAA13,0xB213,0xB214,0xB213,0xB214,0xB1F3,0xA9D3,0xA9D3,0xA9B3,0xA9D2,0xA1D2,0x89F0,0xC55A,0xE77F,0xD79F,0xCFBF,0xCFBF,0xCFBF,0xC79F,0xCF9F,0xC79F,0xCF9F,0xC79E,0xCF9F,0xC79E,0xC79F,0xC79F,0xC79F,0xC79F,0xC79F,0xC79F,0xC79F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xC77F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xCF9F,0xD79F,0xDF9F,0xE77F,0xEF5F,0xDDFC,0xABD5,0xC3D5,0xCBB5,0xCBB6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xE3B6,0xE3B6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xE3D6,0xDBB6,0xDBB7,0xDBB7,0xDBD7,0xDBD8,0xDBF8,0xDBF9,0xD41A,0xBC1D,0x30D3,0x2937,0x2978,0x3199,0x31B9,0x31B9,0x41F9,0x49F8,0x627A,0x7ADA,0x8AFA,0x92D9,0x92B9,0x9A98,0x9278,0x8A77,0x8A78,0x8AB9,0x7AB9,0x6ADA,0x531B,0x4B9C,0x3BDD,0x2C1E,0x13FD,0x0C1D,0x043C,0x047C,0x0D9E,0x165E,0x175F,0x0F9E,0x0FBD,0x07BD,0x07BD,0x07BD,0x0FBD,0x179D,0x277E,0x371E,0x56BE,0x757C,0x6AB3,0x9233,0xA9F3,0xB1B3,0xB9B3,0xC1B3,0xC1D4,0xC1D4,0xC1D4,0xB9B3,0xB1B4,0xA9B4,0xAA15,0x9A15,0x7172,0x6132,0x5131,0x4131,0x4172,0x4171,0x3971,0x3971,0x3951,0x3971,0x3151,0x3171,0x3151,0x3151,0x3151,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x2910,0x290F,0x2930,0x2910,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x2910,0x2110,0x210F,0x212F,0x210F,0x2930,0x210F,0x210F,0x2930,0x2130,0x2110,0x2110,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x292F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2111,0x1931,0x1912,0x1113,0x1995,0x29F7,0x21F7,0x21D6,0x1133,0x1132,0x1951,0x2130,0x2130,0x2150,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2131,0x1931,0x1932,0x1132,0x1153,0x1194,0x19D6,0x19F6,0x19F7,0x1A17,0x1A17,0x19F7,0x11B6,0x1195,0x1195,0x1174,0x1154,0x1154,0x1154,0x1154,0x0954,0x0954,0x0974,0x11B6,0x19F7,0x1A17,0x1A38,0x1A17,0x1A17,0x11B6,0x1174,0x1153,0x1133,0x1932,0x1932,0x2131,0x2110,0x2130,0x2930,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x212F,0x2930,0x2930,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2110,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x290F,0x212F,0x2930,0x212F,0x210F,0x212F,0x212F,0x2130,0x2930,0x212F,0x212F,0x212F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2930,0x2110,0x2930,0x2910,0x2910,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2910, + 0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2110,0x210F,0x210F,0x2910,0x2910,0x290F,0x210F,0x292F,0x290F,0x290F,0x212F,0x210F,0x2110,0x2130,0x2151,0x1931,0x1111,0x10F2,0x0913,0x1175,0x11B7,0x11F8,0x11D9,0x09D9,0x09B9,0x01B9,0x01B9,0x01B8,0x01B8,0x09D8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09D8,0x09B8,0x09B8,0x09B8,0x09D8,0x11B8,0x09B8,0x09D8,0x09D7,0x11D8,0x09D8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D7,0x09D8,0x09D8,0x09D8,0x09D8,0x11D8,0x11D8,0x11F8,0x11F8,0x1218,0x11F8,0x09D8,0x09D8,0x09B8,0x09B9,0x09B9,0x01B9,0x01B9,0x01B9,0x09D9,0x121A,0x11D8,0x0976,0x0955,0x1113,0x1132,0x1911,0x2131,0x2130,0x2951,0x2130,0x2130,0x210F,0x210F,0x210F,0x20EF,0x2110,0x2930,0x2110,0x2130,0x2130,0x2111,0x1911,0x1912,0x1134,0x1975,0x19B6,0x19D7,0x11B6,0x11B6,0x19B6,0x1194,0x1173,0x1953,0x1932,0x1111,0x1931,0x1931,0x1930,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2111,0x1911,0x1933,0x1974,0x1175,0x19D7,0x19F7,0x11D7,0x19F7,0x19D6,0x1995,0x1974,0x1132,0x1112,0x1931,0x1931,0x1931,0x1910,0x1910,0x2130,0x2110,0x2110,0x2110,0x2110,0x18F0,0x18F1,0x1953,0x21B5,0x19B6,0x11B6,0x19B6,0x19D7,0x21F7,0x19B6,0x1995,0x1133,0x1933,0x1912,0x1111,0x1911,0x1911,0x1931,0x2131,0x2131,0x2110,0x2110,0x2110,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2930,0x2910,0x2110,0x212F,0x212F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x212F,0x2130,0x2930,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x212F,0x212F,0x210F,0x20EE,0x20AD,0x412E,0xCC9A,0xCC18,0xC3F7,0xC3D6,0xBBD6,0xB416,0xD63C,0xE77F,0xDF9F,0xCF9F,0xCF5E,0xCF7F,0xCF9F,0xC77F,0xCF9F,0xCF9F,0xC77F,0xC77F,0xCF9F,0xCF9F,0xCF9F,0xCFBF,0xCF9F,0xCF9F,0xD7BF,0xD79F,0xE77F,0xEF1F,0xAC16,0x81F0,0x91D1,0xA1B2,0xA1D2,0xA9D3,0xA9B3,0xB1D3,0xB1D3,0xB1F3,0xB1D3,0xB1F3,0xB9F3,0xB1D3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB1F3,0xB9F4,0xB9F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB9F3,0xB9F4,0xB9F4,0xB1D3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9F4,0xB9D4,0xB9D4,0xB9F4,0xB9F4,0xB1F4,0xB1F4,0xB1F4,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB1F3,0xB9F3,0xB9F3,0xB1F3,0xB1F3,0xB1F3,0xB9F3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xB1B3,0xB1B3,0xB192,0xA992,0xA1B2,0x99D1,0x8A31,0xE5FD,0xEF5F,0xDF9F,0xD79F,0xCF9F,0xCF9F,0xCF9F,0xC79F,0xC79F,0xC79F,0xC77E,0xC77F,0xC77E,0xC79F,0xC79E,0xC79F,0xC79F,0xC79E,0xC79E,0xC79E,0xC79E,0xC79F,0xC79E,0xC79F,0xC79F,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC77E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79F,0xC79F,0xC79F,0xC79F,0xC79E,0xC79E,0xC79E,0xC79E,0xC79F,0xC79E,0xC79E,0xC79E,0xC79F,0xC79F,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC77E,0xC79E,0xC79E,0xC79E,0xC79E,0xC77E,0xC79E,0xC79F,0xCF9F,0xCFBF,0xCFBF,0xCF9F,0xDF7F,0xD67E,0x9BB5,0x81F0,0x99F2,0xA1F2,0xA9F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB9D3,0xB9F3,0xB9D3,0xB1D3,0xB1F4,0xB1F3,0xA9D3,0xA9D2,0xA191,0x89B0,0xC4D9,0xEF3F,0xDF5F,0xD77F,0xD77F,0xD79F,0xD77F,0xD77F,0xD79F,0xDF7F,0xE6DF,0x8B33,0x8A31,0x9A13,0xA213,0xA1F3,0xAA13,0xA9F3,0xAA13,0xB213,0xB213,0xB213,0xB1F3,0xA9F3,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xA1D2,0x89F0,0xC53A,0xE77F,0xD79F,0xCF9F,0xCFBF,0xC79F,0xC79F,0xC79F,0xC79E,0xC79E,0xC79F,0xC79E,0xC79E,0xC79F,0xC79E,0xC79F,0xC79E,0xC79E,0xC79F,0xC79F,0xC79E,0xC79F,0xC79F,0xC79F,0xC79F,0xC77F,0xC77F,0xC77F,0xC77F,0xCF9F,0xCF9F,0xCF7F,0xCF7F,0xCF7F,0xCF7F,0xCF7F,0xCF7F,0xD77F,0xDF7F,0xE75F,0xEF3F,0xDDFC,0xB3F5,0xC3B5,0xCBB5,0xCBB6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDB96,0xDBB6,0xDB96,0xDB96,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDBB6,0xDBB6,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDBB6,0xDBB7,0xDBB7,0xDBD7,0xDBD8,0xDBF9,0xD3FA,0xC41D,0x38B3,0x3957,0x3978,0x4178,0x4177,0x4136,0x61D7,0x9B3C,0xA31B,0x9AD9,0x9A98,0xA277,0xA277,0xAA77,0xAA97,0xAA97,0xA297,0x9AB8,0x8AD9,0x72D9,0x631A,0x539C,0x43FD,0x341D,0x1C1D,0x0C1C,0x043C,0x049C,0x0D5E,0x0E3E,0x1F5F,0x0F9D,0x0FBD,0x07BD,0x07BD,0x0FBD,0x0FBD,0x179D,0x277E,0x371E,0x56BE,0x757C,0x6AB3,0x9212,0xAA13,0xB9D3,0xB9D3,0xC1B4,0xC1B4,0xC1B4,0xC1D4,0xC1D4,0xB1B3,0xB1B4,0xA9D4,0xAA15,0x9215,0x6111,0x5931,0x4931,0x4951,0x4151,0x4171,0x3971,0x3951,0x3151,0x3151,0x3151,0x3151,0x3151,0x2951,0x2951,0x2951,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2930,0x212F,0x210F,0x2930,0x210F,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x2910,0x2930,0x2130,0x2111,0x1911,0x1912,0x1112,0x21B5,0x2A38,0x21F7,0x1995,0x0912,0x1112,0x1931,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1910,0x1911,0x1932,0x1132,0x1153,0x1174,0x19B6,0x19D6,0x19F7,0x1A17,0x19D6,0x1195,0x1174,0x1174,0x1153,0x1133,0x1133,0x1153,0x1133,0x1133,0x1153,0x1153,0x1173,0x0953,0x0933,0x0974,0x1195,0x19F7,0x1A38,0x1A38,0x1A17,0x19D6,0x1195,0x1153,0x1112,0x1911,0x1911,0x2131,0x2131,0x2130,0x2110,0x2110,0x2130,0x2130,0x2930,0x212F,0x2930,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x210F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2910,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2930,0x2110,0x2110, + 0x292F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2910,0x290F,0x210F,0x2910,0x2930,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2150,0x2151,0x1931,0x1111,0x1112,0x0933,0x1175,0x11D7,0x11F8,0x09D9,0x09F9,0x09B9,0x09D9,0x01B9,0x01B9,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09B8,0x09B8,0x09B8,0x09D8,0x09D8,0x09B8,0x09B8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x11D8,0x11D8,0x11D8,0x11D8,0x09B8,0x09B8,0x09B8,0x09B8,0x09B9,0x09B9,0x01B9,0x01D9,0x09FA,0x123A,0x11F9,0x1197,0x1155,0x1133,0x1133,0x1911,0x1911,0x2151,0x2130,0x2130,0x2110,0x210F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2111,0x1912,0x1933,0x1954,0x1974,0x1995,0x1174,0x1974,0x1153,0x1952,0x1132,0x1931,0x1911,0x1911,0x1911,0x2131,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2131,0x1932,0x1932,0x1153,0x1995,0x19B5,0x19D5,0x1994,0x1153,0x1952,0x1932,0x1911,0x1911,0x1910,0x1930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x20F0,0x2111,0x1932,0x1973,0x1994,0x1974,0x1974,0x1995,0x1974,0x1933,0x1933,0x1932,0x1911,0x1911,0x1911,0x1911,0x2131,0x2131,0x2131,0x2130,0x2110,0x2110,0x210F,0x2930,0x2930,0x2930,0x210F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2930,0x2110,0x212F,0x210F,0x2930,0x210F,0x2930,0x210F,0x2910,0x290F,0x2930,0x212F,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x2930,0x210F,0x2930,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x292F,0x210F,0x210F,0x20EE,0x20AD,0x412E,0xCC9A,0xC417,0xC3D6,0xBBB6,0xBBB6,0xB416,0xDE9E,0xDF7F,0xD79F,0xCF9F,0xCF7F,0xC77F,0xC77F,0xC77F,0xC77F,0xC77F,0xC77F,0xC79F,0xC79F,0xCF9F,0xC79F,0xCF9F,0xCF9F,0xCF9F,0xD7BF,0xDF7F,0xEF3F,0xAC37,0x8210,0x91B1,0xA1B2,0xA9B2,0xA9D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB9F3,0xB9F3,0xB9F3,0xB9D3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB1F3,0xB1F3,0xB1D3,0xB1F3,0xB1F3,0xB1F4,0xB1F4,0xB1F3,0xB1F3,0xB1F3,0xB9F3,0xB9F3,0xB9F4,0xB9D3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB9B3,0xB9B3,0xB1B3,0xB1B3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9F4,0xB9F4,0xB9D4,0xB9D4,0xB9D4,0xB1D3,0xB1D3,0xB1D3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB9F3,0xB1F3,0xB1F3,0xB1F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xB1B3,0xB193,0xB192,0xA992,0xA192,0x99D1,0x8A31,0xE65E,0xEF5F,0xDF7F,0xD79F,0xCF9F,0xCF9F,0xC79F,0xC79F,0xC77E,0xC77E,0xC77E,0xC79F,0xC77E,0xC77E,0xC77E,0xBF7E,0xC77E,0xC77E,0xC77E,0xC79E,0xC79E,0xC79E,0xC79F,0xC79F,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC77E,0xC79E,0xC79E,0xC79E,0xC77E,0xC77E,0xC77E,0xC79E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC77E,0xC79E,0xC79E,0xC79E,0xC79E,0xC77E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79F,0xC79F,0xC79F,0xC79F,0xC79E,0xC79F,0xC79F,0xC79F,0xC77E,0xC77E,0xC77E,0xC77E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC77E,0xC77E,0xC79F,0xC77E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC79F,0xC79F,0xCF9F,0xCF9F,0xCF9F,0xDF7F,0xD67E,0x9BB5,0x81F0,0x99F2,0xA1F2,0xA9F3,0xB213,0xB1F3,0xB1F3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xB9F3,0xB1F4,0xB1F3,0xA9D3,0xA9D2,0x9991,0x89B0,0xC4B9,0xEF3F,0xDF5F,0xD77F,0xD77F,0xCF7F,0xCF7F,0xD79F,0xD79F,0xDF7F,0xE6DF,0x8B33,0x8A31,0x9A13,0xA213,0xA213,0xA9F3,0xAA13,0xAA13,0xAA13,0xA9F3,0xB213,0xB1F3,0xB1F3,0xA9F3,0xA9D3,0xA9D3,0xA1D2,0xA1D2,0x89F0,0xC53A,0xE75F,0xD79F,0xCF9F,0xC79F,0xC79F,0xC79F,0xC79E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC79E,0xC79E,0xC79F,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77F,0xC77F,0xC77F,0xC77F,0xC77F,0xC77F,0xC77E,0xC77F,0xC77E,0xC77E,0xCF7F,0xCF7F,0xCF7F,0xCF7F,0xCF7F,0xCF7F,0xCF7F,0xD77F,0xDF5F,0xEF5F,0xE61C,0xB3F5,0xBBD5,0xC3B5,0xCBB6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD396,0xD396,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB97,0xDB97,0xDBB7,0xDBB8,0xDBD9,0xD3DA,0xC3FC,0x40B3,0x4956,0x4957,0x5177,0x48D4,0x8259,0xA2FA,0xAAD9,0xAAB8,0xAA77,0xAA56,0xB256,0xB256,0xBA76,0xBA76,0xB276,0xB296,0xA297,0x9297,0x7AB8,0x631A,0x5B9C,0x43FD,0x343E,0x1C1D,0x0C1D,0x045C,0x049C,0x0D5E,0x0DFE,0x1F7F,0x0F9D,0x0FBD,0x0FDD,0x07BD,0x07BC,0x0FBD,0x179D,0x277E,0x371D,0x5EBE,0x757B,0x6293,0x9212,0xA9F3,0xB9D3,0xB993,0xC1B4,0xB9B4,0xC1D4,0xC1D4,0xB9D4,0xB9B4,0xB1B4,0xB1B4,0xB215,0xAA36,0x8173,0x6131,0x5131,0x4931,0x4151,0x4171,0x3951,0x3971,0x3971,0x3151,0x3151,0x3151,0x3151,0x2951,0x2951,0x2931,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x292F,0x292F,0x210F,0x210F,0x290F,0x292F,0x212F,0x212F,0x290F,0x290F,0x210F,0x292F,0x2930,0x290F,0x212F,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2111,0x1911,0x1912,0x1112,0x21B5,0x2A17,0x21F7,0x19B6,0x1113,0x1112,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x1911,0x1911,0x1112,0x1153,0x1174,0x19D6,0x19D7,0x19F7,0x19D7,0x19B6,0x1195,0x1154,0x0933,0x1133,0x1132,0x1112,0x1932,0x1112,0x1932,0x1952,0x1132,0x1952,0x1152,0x1132,0x1152,0x1153,0x0953,0x1195,0x11D6,0x2238,0x1A37,0x1A17,0x19D6,0x1195,0x1133,0x1132,0x1911,0x2131,0x2111,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x2110,0x2930,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x210F,0x2130,0x2130,0x2130,0x2110,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x210F,0x290F,0x2930,0x2930,0x290F,0x2930,0x210F,0x2910,0x2110,0x2910,0x2110,0x210F,0x2110,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2930,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130, + 0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2150,0x2151,0x1931,0x1111,0x1112,0x1113,0x1155,0x19D7,0x11F8,0x11F8,0x09B8,0x09B8,0x0198,0x09B8,0x09B8,0x09D9,0x09D8,0x09B8,0x09D9,0x09D8,0x09D8,0x09D8,0x09B8,0x09B8,0x09D8,0x09B8,0x09B8,0x09D8,0x09B8,0x09B8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x09D8,0x11D9,0x09B8,0x09B8,0x09B8,0x0998,0x09B8,0x09B8,0x09B8,0x09B8,0x09D9,0x09D9,0x09F9,0x11F9,0x11D8,0x11B7,0x1155,0x1134,0x1112,0x1912,0x1931,0x2131,0x2131,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x1911,0x18F1,0x2153,0x1933,0x1953,0x1953,0x1973,0x1952,0x1911,0x1911,0x1911,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x1931,0x1931,0x1932,0x1932,0x1952,0x1952,0x1952,0x1932,0x1911,0x1911,0x1910,0x1910,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2131,0x2132,0x1932,0x1932,0x1912,0x1912,0x1932,0x1932,0x1931,0x1911,0x1911,0x2111,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2930,0x212F,0x292F,0x210F,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2930,0x2110,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x212F,0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2130,0x212F,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x292F,0x212F,0x2930,0x2930,0x290F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x292F,0x212F,0x210F,0x20EE,0x20AD,0x412E,0xC47A,0xC3F7,0xBBB6,0xBB96,0xBBB6,0xB436,0xE6FF,0xDF7F,0xD79F,0xCF9F,0xC77E,0xC77E,0xC77F,0xC77F,0xC77E,0xC77E,0xC77F,0xC77F,0xC77F,0xC79F,0xC79F,0xC79F,0xC79F,0xD7BF,0xDF9F,0xEF7F,0xC4F9,0x8230,0x91D1,0xA1B2,0xA9B2,0xA9B3,0xB1B3,0xB1D3,0xB1D3,0xB9D3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9D3,0xB9F3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1F4,0xB1D3,0xB1F4,0xB1F4,0xB1F3,0xB9F4,0xB9F4,0xB9F4,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9B3,0xB9B3,0xB9D3,0xB9B3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D4,0xB9F4,0xB9D3,0xB9D4,0xB1D4,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1F3,0xB1F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F4,0xB9F4,0xB9F3,0xB9D3,0xB1D3,0xB1B3,0xB1B3,0xB1B3,0xB192,0xA992,0xA1B2,0x99F1,0x9AD3,0xEE9F,0xE77F,0xD79F,0xCF9F,0xCF9F,0xC79F,0xC79F,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC79E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC79E,0xC77E,0xC77E,0xC77E,0xC77E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC77E,0xC77E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xBF9E,0xBF9E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xBF9E,0xBF9E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79E,0xC79F,0xC79F,0xC79F,0xC77E,0xC77E,0xC79E,0xC79E,0xC79F,0xC79F,0xC79F,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC79E,0xC79E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC79E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77F,0xC77F,0xC77E,0xC77E,0xC77F,0xC79F,0xCF9F,0xCF9F,0xCF9F,0xDF9F,0xD67E,0x9BB5,0x81D0,0x99F2,0xA1F2,0xA9F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB9D3,0xB1D3,0xB9D3,0xB9F3,0xB9F4,0xB1D3,0xB1D3,0xA9D3,0xA191,0x89B0,0xBCB9,0xEF3F,0xDF5F,0xD77F,0xCF7F,0xCF7F,0xCF7F,0xCF7F,0xD77F,0xDF7F,0xE6DF,0x8B33,0x8A31,0x9A33,0xA213,0xA213,0xA213,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xB1F3,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA1D2,0x89F1,0xBCF9,0xE75F,0xD77F,0xCF9F,0xC79F,0xC79F,0xC79F,0xC77E,0xC77F,0xC77F,0xC77E,0xC77F,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77F,0xC79F,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC75E,0xC77E,0xC77E,0xC77E,0xC75E,0xCF7F,0xCF7F,0xCF7F,0xCF7F,0xCF7F,0xD77F,0xD77F,0xDF5F,0xEF3F,0xE65D,0xB3F5,0xBBB5,0xC395,0xCB96,0xCB96,0xD396,0xD396,0xD396,0xD396,0xD396,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB76,0xDB76,0xDB76,0xDB96,0xDB96,0xDB76,0xDB75,0xDB96,0xDB96,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB96,0xDB96,0xDB76,0xDB77,0xDB97,0xDBB8,0xDB98,0xD3BA,0xCBDC,0x4871,0x5115,0x5915,0x60D4,0xAAFB,0xB2DA,0xB298,0xB277,0xBA77,0xBA76,0xBA56,0xC276,0xC256,0xC256,0xBA56,0xBA56,0xB256,0xAA76,0x9A97,0x7A97,0x6B19,0x5B9C,0x4BFD,0x345E,0x1C1D,0x0C3D,0x045C,0x049C,0x051D,0x05BD,0x1F5F,0x179D,0x0FBD,0x0FBD,0x07BC,0x07BC,0x0FBD,0x179D,0x1F5D,0x371E,0x56BE,0x759C,0x6A92,0x9232,0xA9F3,0xB1B3,0xB9D4,0xB9B3,0xB9B3,0xC1B4,0xB9B3,0xB993,0xB9B4,0xB194,0xB1B4,0xB1D4,0xB256,0xA236,0x6931,0x50F0,0x4910,0x4131,0x4151,0x3951,0x3951,0x3951,0x3951,0x3151,0x3151,0x3151,0x3151,0x3151,0x2931,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x290F,0x2930,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x2910,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x212F,0x290F,0x2930,0x2930,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x290F,0x292F,0x292F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2130,0x2110,0x2130,0x1911,0x1912,0x1133,0x21D6,0x2A37,0x21F7,0x19B5,0x1133,0x1132,0x1951,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2151,0x2131,0x18F1,0x10F2,0x1133,0x1995,0x19B6,0x19D7,0x19D7,0x19D6,0x19D6,0x1175,0x0933,0x0912,0x1132,0x1132,0x1932,0x1952,0x1932,0x1932,0x1932,0x1932,0x1952,0x1952,0x1952,0x1152,0x1132,0x0932,0x0932,0x0933,0x0974,0x11B5,0x1A17,0x2237,0x19F7,0x19B6,0x1174,0x1153,0x1932,0x1911,0x2131,0x2110,0x2131,0x2130,0x2130,0x2130,0x210F,0x210F,0x2930,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x210F,0x2130,0x2130,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x210F,0x210F,0x2930,0x2930,0x210F,0x2910,0x2110,0x2910,0x2110,0x2930,0x210F,0x2910,0x210F,0x290F,0x2910,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2930,0x2130,0x2110,0x2110,0x2130,0x210F,0x210F,0x2110,0x2130,0x2110,0x210F,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130, + 0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x290F,0x2930,0x2110,0x210F,0x210F,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2150,0x2150,0x2151,0x1931,0x1111,0x1112,0x1133,0x1175,0x11B6,0x11F8,0x11D8,0x09B8,0x09B8,0x09D8,0x09B8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x09F8,0x09D8,0x11D8,0x09D8,0x09D8,0x11D8,0x11D8,0x09B8,0x09D8,0x09B8,0x09B8,0x11D8,0x09D8,0x09D8,0x09D8,0x09B8,0x09D8,0x09D8,0x09D8,0x11D8,0x09D8,0x11D8,0x11D8,0x11D8,0x09D8,0x11F8,0x09D8,0x09B8,0x09B8,0x11B8,0x09B8,0x11B8,0x09B8,0x11D8,0x11D8,0x11F9,0x1219,0x11D8,0x1A19,0x11D7,0x1196,0x0955,0x1133,0x1113,0x1912,0x1911,0x2131,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x2910,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2111,0x2111,0x1911,0x1911,0x1931,0x1911,0x1911,0x1931,0x2130,0x1910,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2110,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1910,0x1910,0x2110,0x1910,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x2910,0x2910,0x20F0,0x2110,0x2110,0x2111,0x2111,0x1911,0x1911,0x1911,0x2111,0x1911,0x1911,0x2110,0x1910,0x2110,0x2110,0x2130,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x210F,0x212F,0x212F,0x2930,0x2130,0x212F,0x212F,0x210F,0x2130,0x210F,0x210F,0x2130,0x2110,0x2910,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2130,0x2110,0x210F,0x2110,0x2930,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x2930,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x292F,0x210F,0x210F,0x20EE,0x20AD,0x414E,0xC47A,0xC3F7,0xBB96,0xBB96,0xB396,0xB436,0xEF3F,0xDF7F,0xD79F,0xCF7F,0xC77E,0xC75E,0xC77F,0xC77E,0xC77E,0xC77F,0xC77E,0xC77F,0xC77E,0xC79F,0xC77F,0xC79F,0xCFBF,0xD79F,0xE77F,0xDE5D,0x8251,0x91D1,0xA1B2,0xA9B2,0xA9B3,0xB1B3,0xB1B3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xB9F3,0xB9F3,0xB9F3,0xB9D3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D4,0xB1F4,0xB1D3,0xB1F3,0xB9F4,0xB9F4,0xB9F3,0xB9D3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1F3,0xB9F3,0xB1D3,0xB9F3,0xB9F3,0xB9F4,0xB9F4,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xB1B3,0xB1B3,0xB193,0xB192,0xB192,0xA1B2,0x91D1,0xA375,0xF71F,0xDF7F,0xD79F,0xCF9F,0xC79F,0xC77F,0xC77E,0xC77E,0xBF7E,0xBF7E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xBF7E,0xBF7E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xBF7E,0xBF9E,0xBF7E,0xC79E,0xC79E,0xC79E,0xBF7E,0xBF7E,0xC79E,0xBF7E,0xBF7E,0xBF7E,0xC79E,0xC79E,0xC79E,0xBF9E,0xBF9E,0xBF9E,0xBF9E,0xBF9E,0xBF9E,0xBF9E,0xBF9E,0xBF9E,0xBF9E,0xBF9E,0xBF9E,0xBF7E,0xBF7E,0xC79E,0xBF7E,0xBF7E,0xC79E,0xBF7E,0xBF7E,0xBF7E,0xBF9F,0xC79F,0xC77F,0xC77E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xC77E,0xBF7E,0xBF7E,0xC77E,0xBF7E,0xBF7E,0xC77E,0xBF7E,0xBF7E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77F,0xC79F,0xC79F,0xCF9F,0xCF9F,0xDF9F,0xD69E,0x93B5,0x81F0,0x99F2,0xA1F2,0xA9F3,0xB1F3,0xB1F3,0xB9F3,0xB9D3,0xB1D3,0xB9D3,0xB9D3,0xB9F4,0xB9F4,0xB1D3,0xB1D3,0xA9D3,0xA191,0x89B0,0xBCB9,0xEF3F,0xDF7F,0xD77F,0xCF7F,0xCF7F,0xCF7F,0xCF7F,0xCF7F,0xDF5F,0xE6DF,0x8B33,0x8A32,0x9A12,0x9A13,0xA213,0xA1F3,0xA1F3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9D3,0xA9D3,0xA9D2,0xA9B2,0xA1B2,0xA1D2,0x89F0,0xBCF9,0xE75F,0xD77F,0xC79F,0xC79F,0xC79F,0xC77F,0xBF7E,0xC77E,0xC77F,0xC77E,0xC77E,0xC77E,0xC77E,0xBF7E,0xBF7E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC75E,0xC77F,0xC77E,0xC75F,0xCF5F,0xCF5F,0xCF7F,0xCF5F,0xCF5F,0xD77F,0xDF5F,0xEF3F,0xE65D,0xABD5,0xBBB5,0xC395,0xCB96,0xD396,0xD396,0xD396,0xD376,0xD396,0xD396,0xDB96,0xDB96,0xDB96,0xDB96,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB77,0xDB77,0xDB98,0xDB98,0xD399,0xCBBB,0x480F,0x6934,0x8A18,0xAA99,0xBAB9,0xB257,0xB236,0xBA36,0xC256,0xC256,0xCA56,0xCA56,0xC235,0xC235,0xC235,0xC235,0xBA55,0xB276,0x9A76,0x8297,0x6B19,0x5B9B,0x4C3D,0x345E,0x1C3D,0x0C3D,0x045C,0x049C,0x04FD,0x059D,0x1F5F,0x0F9D,0x0FBD,0x0FBC,0x07BC,0x07BC,0x0FBD,0x179D,0x277D,0x371D,0x56BE,0x757B,0x6A92,0x9212,0xA1D2,0xB9D3,0xB9B3,0xB9B3,0xC1B3,0xB993,0xC1B4,0xB9B4,0xB9B4,0xB9B4,0xB9B4,0xB1B4,0xB1F5,0xB276,0x9215,0x58D0,0x5110,0x4930,0x4151,0x4151,0x3951,0x3951,0x3131,0x3151,0x3151,0x3151,0x3151,0x2951,0x2931,0x2930,0x2930,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2910,0x210F,0x2910,0x2930,0x290F,0x2910,0x2910,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2930,0x212F,0x2930,0x292F,0x292F,0x292F,0x210F,0x292F,0x212F,0x212F,0x2130,0x2110,0x2131,0x1932,0x1112,0x21B6,0x2A17,0x2217,0x19B5,0x0932,0x1132,0x1951,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1912,0x10F2,0x1154,0x19B6,0x19D7,0x19D7,0x19D7,0x19B6,0x1174,0x1133,0x1132,0x1112,0x1111,0x1932,0x1952,0x1952,0x1932,0x1932,0x1952,0x1952,0x1952,0x1931,0x1972,0x1951,0x1952,0x1152,0x1132,0x1133,0x0933,0x0954,0x1195,0x19F6,0x1A17,0x19D6,0x19D6,0x1994,0x1132,0x1932,0x1911,0x2111,0x2131,0x2130,0x2930,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2910,0x2930,0x2930,0x2110,0x2110,0x2110,0x210F,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2910,0x210F,0x2910,0x2910,0x290F,0x290F,0x2930,0x2930,0x212F,0x210F,0x210F,0x212F,0x2930,0x212F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130, + 0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x210F,0x210F,0x290F,0x212F,0x210F,0x210F,0x210F,0x2130,0x212F,0x2110,0x2910,0x210F,0x292F,0x290F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x2130,0x212F,0x210F,0x210F,0x212F,0x2130,0x2151,0x2151,0x1910,0x1911,0x1112,0x1133,0x1995,0x19D6,0x19D7,0x19F7,0x1A18,0x1A18,0x11F8,0x11F8,0x1218,0x11F8,0x11F8,0x11F8,0x11F8,0x1A18,0x19F8,0x11D8,0x11F8,0x11F8,0x19F8,0x19F8,0x19F8,0x11F8,0x11F8,0x19F8,0x19F8,0x1A18,0x19F8,0x19F8,0x1A18,0x11F8,0x1A18,0x1218,0x1A18,0x1218,0x1A18,0x11F8,0x11F8,0x1A18,0x19F8,0x19F9,0x19F8,0x19D8,0x19F8,0x19F8,0x1A19,0x1A18,0x1A18,0x1A18,0x1A18,0x19F7,0x19F7,0x1195,0x0933,0x0912,0x1112,0x1932,0x1931,0x2131,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2130,0x2130,0x2110,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x18F0,0x1910,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x1910,0x1910,0x1910,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x20F0,0x2110,0x2110,0x2110,0x2110,0x2131,0x2111,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2110,0x290F,0x210F,0x212F,0x2130,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x210F,0x2910,0x2910,0x2930,0x2910,0x2910,0x210F,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x210F,0x210F,0x290F,0x210F,0x2930,0x2110,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x210F,0x210F,0x20EE,0x20AD,0x494F,0xC47A,0xC3F7,0xBB96,0xBB75,0xB3B5,0xAC15,0xEF7F,0xD79F,0xCF9F,0xCF7F,0xC75E,0xC75E,0xC77E,0xC77F,0xC77F,0xBF5E,0xC75E,0xC75E,0xC77E,0xC77E,0xC77F,0xC79F,0xCF9F,0xDF7F,0xE6FF,0x9B94,0x89D0,0x99B1,0xA1B2,0xA9B3,0xB1B3,0xB1B3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xB9F3,0xB9D3,0xB9F3,0xB9D3,0xB1D3,0xB1D3,0xB1B3,0xB1D3,0xB1D3,0xB1D3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xB1D3,0xB1B3,0xB1B3,0xB1D3,0xB1D3,0xB1D3,0xB1F3,0xB1F3,0xB9F3,0xB9F3,0xB9F3,0xB9D3,0xB9F4,0xB9D4,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9F4,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB1D3,0xB1B3,0xB1D3,0xB1D3,0xB1D3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1F3,0xB1D3,0xB1F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9B3,0xB9B3,0xB193,0xB192,0xA992,0xA1B1,0x89D0,0xCD3A,0xEF3F,0xD77F,0xCF9F,0xC77F,0xC77F,0xC77E,0xBF7E,0xBF5E,0xBF7E,0xBF7E,0xBF5E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xC77E,0xBF7E,0xBF7E,0xC77E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xC77E,0xBF7E,0xBF7E,0xC77E,0xC77E,0xBF7E,0xC77E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xC77E,0xBF5E,0xC77E,0xC77E,0xC77E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF5E,0xC77E,0xC77E,0xBF5E,0xC77E,0xC77E,0xC77E,0xC77E,0xBF5E,0xC77F,0xC77F,0xC77F,0xC79F,0xC79F,0xC79F,0xCF9F,0xDF9F,0xD67E,0x9BB5,0x81F0,0x99F2,0xA1F2,0xA9F3,0xB213,0xB1F3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9D4,0xB9F4,0xB9F4,0xB1D3,0xB1D3,0xA9D3,0xA191,0x89B0,0xBCB9,0xEF3F,0xDF5F,0xCF7F,0xCF7F,0xCF7F,0xC75F,0xCF5F,0xCF7F,0xDF5F,0xDEBF,0x8B33,0x8231,0x91F2,0x99F2,0x99F3,0xA1F3,0xA1F3,0xA1F3,0xA9F3,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xA9D2,0xA9D2,0xA9D2,0xA1B2,0x99B2,0x89F0,0xB4F9,0xDF3F,0xCF7F,0xC77F,0xC77F,0xBF7F,0xBF7E,0xBF7F,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77E,0xC77F,0xC75E,0xC77E,0xC77E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75F,0xCF5F,0xCF5F,0xCF5F,0xCF5F,0xCF5F,0xD75F,0xDF3F,0xE73F,0xEEBF,0xB3F5,0xBB95,0xC375,0xCB75,0xCB75,0xD375,0xD376,0xD376,0xD376,0xD376,0xD376,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB56,0xDB56,0xDB56,0xDB56,0xDB56,0xDB56,0xDB76,0xDB76,0xDB76,0xDB76,0xDB56,0xDB56,0xDB56,0xDB56,0xDB56,0xDB76,0xDB76,0xDB76,0xDB56,0xDB77,0xDB78,0xDB78,0xDB99,0xC339,0x89B4,0xB2FA,0xB2B9,0xBA99,0xBA77,0xC277,0xC277,0xC256,0xC256,0xCA56,0xCA35,0xC215,0xC215,0xC215,0xC215,0xC235,0xBA35,0xB256,0x9A56,0x8297,0x7319,0x63DC,0x4C5E,0x3C9E,0x247E,0x147D,0x047D,0x049D,0x04FD,0x057C,0x1F5F,0x0F9D,0x0FBD,0x0FBC,0x07BC,0x07BC,0x0F9C,0x179D,0x277D,0x3F1E,0x5EBE,0x757B,0x6AB2,0x9233,0xA9F3,0xB9D3,0xB9B3,0xB9B3,0xC1D4,0xC1B3,0xB993,0xB993,0xB993,0xB994,0xB993,0xB1B4,0xB1D4,0xB256,0xAA97,0x58CF,0x5110,0x4930,0x4151,0x4151,0x3971,0x3951,0x3951,0x3151,0x3151,0x3151,0x2931,0x2931,0x2931,0x3131,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x290F,0x2910,0x290F,0x292F,0x292F,0x2910,0x210F,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x292F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x2130,0x2130,0x2131,0x1932,0x1133,0x19D5,0x2A37,0x2217,0x19B5,0x1133,0x1112,0x1931,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2110,0x2130,0x2130,0x1931,0x1931,0x1133,0x1134,0x19B6,0x21F7,0x19F7,0x11B6,0x1196,0x1154,0x1153,0x0932,0x0911,0x1111,0x1952,0x1972,0x1952,0x1932,0x1952,0x1952,0x1932,0x1111,0x1111,0x1931,0x1131,0x1971,0x1972,0x1952,0x1952,0x1132,0x1132,0x0933,0x0953,0x1195,0x19D6,0x19F7,0x2217,0x19B5,0x1994,0x1112,0x1911,0x1911,0x2111,0x2131,0x2130,0x2130,0x2110,0x210F,0x210F,0x212F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x2110,0x2130,0x2130,0x2130,0x2110,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x210F,0x2110,0x210F,0x2910,0x2910,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2910,0x210F,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x2930,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F, + 0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x2930,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x212F,0x212F,0x2930,0x210F,0x2130,0x2930,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2151,0x2131,0x2131,0x1911,0x1112,0x1112,0x1153,0x1154,0x1175,0x1195,0x1196,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x1196,0x11B6,0x11B6,0x19B6,0x1196,0x1196,0x11B6,0x1196,0x1196,0x11B6,0x1196,0x11B6,0x11B6,0x11B6,0x1196,0x11B6,0x1196,0x19B6,0x1196,0x11B6,0x11B6,0x11D6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B6,0x11B7,0x1196,0x11B6,0x1196,0x11B6,0x11B6,0x11B6,0x1195,0x1195,0x1175,0x0954,0x1154,0x0933,0x1132,0x1112,0x1112,0x1911,0x1931,0x2130,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x2110,0x212F,0x2950,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2150,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2930,0x212F,0x212F,0x212F,0x210F,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2930,0x290F,0x2910,0x2930,0x2910,0x2910,0x210F,0x290F,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x210F,0x2930,0x210F,0x210F,0x2930,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x212F,0x210F,0x212F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x210F,0x210F,0x20EE,0x20AD,0x494F,0xC45A,0xC3D7,0xBB96,0xBB75,0xB395,0xAC15,0xEF7F,0xD77F,0xCF7F,0xC77E,0xC75E,0xBF5E,0xBF5E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xC77F,0xC79F,0xC79F,0xCF9F,0xDF5F,0xC55B,0x8251,0x91D1,0xA1B2,0xA9D3,0xB1D3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9F3,0xB9D3,0xB9F3,0xB9D3,0xB9D3,0xB1D3,0xB1B3,0xB1B3,0xB1B3,0xA9B3,0xA9D3,0xA1D2,0xA1F2,0x99F2,0x99F2,0xA1F2,0xA1F3,0xA9D3,0xA9D3,0xA9B3,0xB1B3,0xB1D3,0xB1D3,0xB1D3,0xB9D3,0xB9F3,0xB9F4,0xB9F4,0xB9D4,0xB9D4,0xB9D4,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB1B3,0xB1B3,0xB1D3,0xA9D3,0xA1D3,0xA1F3,0x99F2,0x99F2,0x99F2,0x99F2,0xA1F2,0xA1D2,0xA9D3,0xA9D3,0xB1B3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9D3,0xB9B3,0xB9B3,0xB9B3,0xB193,0xB192,0xA992,0xA1D1,0x9292,0xEE7F,0xDF5F,0xCF9F,0xC77F,0xC77F,0xBF7E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF5E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF7E,0xBF5E,0xBF5E,0xC77E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xC77F,0xBF5F,0xC77F,0xC77F,0xC77F,0xC79F,0xCF9F,0xD77F,0xD67E,0x9395,0x81F1,0x99F2,0xA1F2,0xA9F3,0xB1F3,0xB1F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D4,0xB9F4,0xB1F3,0xB1D3,0xA9D3,0xA191,0x89B0,0xBCB9,0xE71F,0xD75F,0xCF7F,0xCF5F,0xC75F,0xC75F,0xC75F,0xCF7F,0xD75F,0xDEDF,0x8333,0x8231,0x9212,0x91F2,0x99F2,0x99D2,0x99D2,0xA1F2,0xA1F3,0xA1D2,0xA1D2,0xA1D2,0xA1D2,0xA1B2,0xA1B2,0xA1B2,0x99B2,0x99B1,0x81F0,0xB4F9,0xDF3F,0xCF7F,0xC77F,0xC77F,0xBF7F,0xBF7E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF7E,0xBF7E,0xBF5E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xC77E,0xC77E,0xC77E,0xC75E,0xC77F,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75F,0xCF5F,0xCF5F,0xCF5F,0xCF5F,0xCF5F,0xD75F,0xDF5F,0xEF1F,0xEE5E,0xABD5,0xBB95,0xC375,0xCB75,0xCB75,0xD355,0xD375,0xD375,0xD376,0xD376,0xD375,0xD376,0xD355,0xD355,0xDB55,0xDB55,0xDB55,0xDB55,0xDB56,0xDB56,0xDB56,0xDB56,0xDB56,0xDB56,0xDB56,0xDB56,0xDB55,0xDB55,0xDB55,0xDB55,0xDB55,0xDB55,0xDB55,0xDB56,0xDB56,0xDB56,0xDB56,0xDB36,0xDB57,0xDB57,0xDB78,0xDB79,0xCB19,0x8993,0xB2B8,0xBA98,0xBA98,0xBA77,0xC256,0xC256,0xCA56,0xCA36,0xCA36,0xCA15,0xCA15,0xCA35,0xCA15,0xCA15,0xC215,0xBA35,0xB235,0x9A56,0x8276,0x7319,0x63DC,0x4C7E,0x3C9E,0x249E,0x147D,0x047D,0x04BD,0x04DD,0x055C,0x1F5F,0x0F9D,0x0FBC,0x0FBC,0x07BC,0x07BC,0x0F9C,0x179D,0x275D,0x3F1D,0x5EBE,0x757B,0x6A92,0x9212,0xA1D2,0xB1D3,0xB9B3,0xC1D3,0xC1B3,0xB993,0xC1B3,0xB993,0xB993,0xB993,0xB993,0xB9B4,0xB1B4,0xB215,0xAA96,0x81B2,0x50CF,0x5130,0x4130,0x4151,0x3951,0x3951,0x3951,0x3151,0x3131,0x3151,0x3131,0x3131,0x2931,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x292F,0x212F,0x2130,0x2110,0x1931,0x1932,0x1132,0x19B5,0x2237,0x21F7,0x19B6,0x1133,0x1132,0x1952,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1112,0x1133,0x1995,0x19F7,0x21F8,0x19D7,0x11B6,0x1155,0x0933,0x0932,0x1112,0x1131,0x1131,0x1952,0x1932,0x1932,0x1132,0x1132,0x1112,0x1112,0x1111,0x1111,0x1111,0x08F0,0x1151,0x1131,0x1952,0x1952,0x1952,0x1132,0x0912,0x0933,0x0954,0x11B6,0x19F7,0x19F7,0x2217,0x1995,0x1133,0x1912,0x1911,0x2111,0x2131,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x2930,0x2910,0x2110,0x2110,0x2910,0x2110,0x2930,0x2910,0x2910,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x290F,0x2910,0x210F,0x212F,0x210F,0x210F,0x2110,0x210F,0x2930,0x2930,0x2110,0x2930,0x2110,0x2110,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x292F,0x2930,0x292F,0x2930,0x2130,0x212F,0x212F,0x2130,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x2930,0x212F,0x212F,0x2930,0x212F,0x210F,0x212F,0x2930,0x212F,0x292F,0x292F,0x212F,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2930, + 0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2110,0x2930,0x2110,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2131,0x2111,0x1911,0x1911,0x1112,0x1953,0x1933,0x1112,0x0913,0x0913,0x0913,0x08F2,0x0913,0x1113,0x0913,0x1133,0x1133,0x1113,0x0913,0x0912,0x1133,0x0913,0x0913,0x1133,0x1113,0x1113,0x1133,0x0933,0x0933,0x1113,0x0913,0x0913,0x0913,0x0913,0x1113,0x1113,0x0913,0x1113,0x1113,0x0913,0x0913,0x1134,0x0913,0x1134,0x1133,0x1113,0x1113,0x0912,0x0912,0x1133,0x1133,0x1132,0x1132,0x1132,0x1931,0x1931,0x1931,0x1931,0x2110,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2110,0x210F,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2930,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2110,0x2930,0x2110,0x2910,0x2910,0x2930,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x212F,0x2930,0x210F,0x2910,0x2930,0x290F,0x290F,0x2930,0x210F,0x212F,0x212F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x20EE,0x28AD,0x494F,0xC439,0xC3B7,0xBB76,0xB375,0xB375,0xA3D5,0xEF7F,0xD77F,0xCF7E,0xC77E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF7E,0xC79F,0xC79F,0xD77F,0xE71F,0x8AF3,0x89D1,0x99D2,0xA9D3,0xB1D3,0xB1D3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xB9F3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB1D3,0xB1B3,0xB1B3,0xB1B2,0xA9B2,0xA1D2,0x99F2,0x89F1,0x9273,0x9AD4,0x9AD4,0x92B3,0x9232,0x91F2,0xA1D3,0xA1B2,0xA9B3,0xB1B3,0xB1D3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xC1D3,0xC1D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9B3,0xB1B3,0xB1B2,0xA9D2,0xA1D2,0x91D2,0x9232,0x9AD4,0x9B34,0xA355,0x9B14,0x9272,0x91F1,0xA1D2,0xA1B2,0xA9B3,0xB1B3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB9D3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9B3,0xB9B3,0xB193,0xB192,0xA9B2,0x91D1,0xBC38,0xEF3F,0xD77F,0xCF7F,0xC77F,0xBF7F,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF7E,0xBF5E,0xBF7E,0xB77E,0xB77E,0xB77E,0xB77E,0xB77E,0xBF7E,0xBF7E,0xBF5E,0xBF7E,0xBF7E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF5E,0xBF7E,0xBF5E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF3E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5F,0xC77F,0xC77F,0xC77F,0xD77F,0xCE5E,0x9395,0x81F1,0x99F2,0xA1F3,0xA9F3,0xB1F3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9F4,0xB9F4,0xB9F4,0xB9D3,0xB1D3,0xA9F3,0xA192,0x89B0,0xBC99,0xE71F,0xD75F,0xCF7F,0xC75F,0xC75F,0xC75F,0xC75F,0xC75F,0xD73F,0xDEBF,0x7AF2,0x7A10,0x8A11,0x89F1,0x91D1,0x91D2,0x91D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99B1,0x99B1,0x99B1,0x9991,0x9991,0x91B1,0x91B1,0x79D0,0xB519,0xDF5F,0xCF5F,0xC77F,0xC77F,0xBF7E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF5E,0xBF7E,0xBF7E,0xBF7E,0xBF5E,0xBF5E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC77F,0xC75E,0xC75E,0xC75F,0xC75F,0xC75F,0xC75F,0xCF5F,0xCF5F,0xCF5F,0xD75F,0xD75F,0xDF3F,0xEF1F,0xEE7F,0xABB5,0xBB75,0xC355,0xCB55,0xCB55,0xCB55,0xD355,0xD355,0xD355,0xD355,0xD355,0xD355,0xDB56,0xDB35,0xDB35,0xDB55,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB55,0xDB55,0xDB35,0xDB35,0xDB35,0xDB56,0xDB36,0xDB36,0xDB36,0xDB57,0xDB58,0xDB58,0xDB79,0xCB39,0x99F5,0xB2B9,0xB298,0xBA98,0xBA77,0xC257,0xC236,0xCA36,0xCA15,0xCA15,0xD235,0xCA15,0xCA15,0xCA15,0xCA15,0xC215,0xBA15,0xB235,0x9A35,0x8256,0x6AF8,0x5BDB,0x4C5D,0x349E,0x1C7E,0x147D,0x047D,0x04BD,0x04DD,0x055C,0x277F,0x179D,0x0F9C,0x079C,0x07BC,0x07BC,0x0F9C,0x179D,0x275D,0x3F1D,0x5EBE,0x757B,0x6AB3,0x9212,0xAA13,0xB1D3,0xB9B3,0xB9B3,0xB9B3,0xC1B3,0xC1B3,0xC1B3,0xB993,0xB993,0xB9B3,0xB9B3,0xB1B3,0xB1F4,0xB276,0xA275,0x482D,0x48EF,0x4951,0x4151,0x3930,0x3951,0x3951,0x3151,0x3131,0x3131,0x3131,0x2951,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x210F,0x2110,0x2910,0x290F,0x290F,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x292F,0x292F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x2110,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x292F,0x292F,0x212F,0x2130,0x2130,0x1931,0x1911,0x1112,0x21B5,0x2A17,0x21F7,0x1995,0x0933,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2131,0x2131,0x1932,0x1112,0x1154,0x1996,0x2218,0x19F8,0x19B7,0x1175,0x0913,0x0912,0x1152,0x1952,0x1131,0x1131,0x1931,0x1111,0x1111,0x0912,0x1133,0x1154,0x1174,0x1174,0x1153,0x1153,0x1152,0x0911,0x1111,0x1131,0x1131,0x1952,0x1932,0x1132,0x1133,0x1153,0x1175,0x11B6,0x1A17,0x2217,0x1195,0x1153,0x1112,0x1911,0x1911,0x2111,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x2930,0x2110,0x2110,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2910,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x290F,0x210F,0x212F,0x2930,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x2930,0x2130,0x2930,0x210F,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2930,0x292F,0x212F,0x2930,0x2130,0x2130,0x212F,0x292F,0x212F,0x292F,0x2930,0x2930,0x2930,0x292F,0x2930,0x292F,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x212F,0x2930,0x2930,0x292F,0x212F,0x212F,0x210F,0x210F,0x290F, + 0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2930,0x210F,0x2130,0x2110,0x2130,0x2110,0x2110,0x2910,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2110,0x2110,0x2130,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2131,0x2131,0x1910,0x1931,0x1931,0x1932,0x1932,0x1932,0x1912,0x1912,0x1912,0x1112,0x1932,0x1912,0x1112,0x1912,0x1932,0x1912,0x1932,0x1112,0x1932,0x1112,0x1932,0x1932,0x1932,0x1112,0x1132,0x1132,0x1112,0x1932,0x1112,0x1912,0x1912,0x1912,0x1912,0x1112,0x1112,0x1112,0x1112,0x1112,0x1913,0x1913,0x1112,0x1112,0x1912,0x1912,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x2131,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x292F,0x292F,0x290F,0x212F,0x2130,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x2130,0x2110,0x2130,0x210F,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2910,0x2110,0x2910,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x210F,0x2130,0x2130,0x210F,0x2110,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2910,0x2930,0x2930,0x2930,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2910,0x2910,0x2910,0x290F,0x2910,0x210F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x2110,0x2130,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x290F,0x2910,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x20EE,0x28AD,0x494F,0xC439,0xC3B7,0xBB76,0xB355,0xB355,0xA3B4,0xEF7F,0xCF7F,0xCF5E,0xC75E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF7E,0xC79F,0xCF7F,0xDF3F,0xBD5A,0x81F0,0x99B1,0xA1D2,0xA9D3,0xB1D3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB1B3,0xB1B3,0xB1B2,0xA9B2,0xA1D2,0x99D1,0x9212,0xAB96,0xD53C,0xE61F,0xEE7F,0xEE7F,0xE63F,0xE5BE,0xBC18,0x81D0,0x91F2,0xA1D2,0xA9B3,0xA9B3,0xB1D3,0xB1D3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9B3,0xB1B3,0xA9B2,0xA1D2,0x91D1,0x9272,0xC479,0xDDBE,0xEE7F,0xEEBF,0xEEBF,0xEE9F,0xE5FE,0xCCBA,0x8A31,0x91F1,0xA1D2,0xA9B2,0xB1B3,0xB1B3,0xB1D3,0xB1D3,0xB9D3,0xB9D3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9B3,0xB9B3,0xB9B3,0xB193,0xB1B2,0xA1D2,0x8A10,0xEEDF,0xD75F,0xCF7F,0xC77F,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF3E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xB73E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xBF7E,0xBF7E,0xBF5E,0xBF5E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xB75E,0xB75E,0xBF5E,0xB75E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xC75E,0xBF5E,0xBF5E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xBF3E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF3E,0xBF3E,0xBF3E,0xBF5E,0xBF5E,0xBF5E,0xBF7F,0xC77F,0xC77F,0xD75F,0xCE5E,0x9395,0x89F1,0x99F2,0xA9F3,0xA9F3,0xB1F3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9F4,0xB9F4,0xB9D3,0xB1D3,0xA9D3,0xA192,0x89B0,0xBC99,0xE71F,0xD75F,0xCF7F,0xC75F,0xC73F,0xC73F,0xC75F,0xC75F,0xCF5F,0xD6DF,0x62D0,0x61EE,0x69AE,0x69AE,0x71AE,0x71AF,0x79CF,0x79AF,0x798F,0x798F,0x798E,0x798E,0x798E,0x796E,0x796E,0x796E,0x716E,0x718E,0x598D,0xAD59,0xD75F,0xC75F,0xC77F,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC77F,0xC75F,0xC75F,0xC75F,0xC75F,0xCF5F,0xCF5F,0xCF5F,0xCF5F,0xCF5F,0xD75F,0xD73F,0xD71F,0xE73F,0xEEFF,0xEE3E,0xB3B5,0xBB75,0xC355,0xCB55,0xCB35,0xCB55,0xCB35,0xD355,0xD335,0xD335,0xD335,0xD335,0xD335,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB35,0xDB36,0xDB36,0xDB36,0xDB37,0xDB37,0xDB58,0xDB79,0xCB5A,0x9A17,0xB31B,0xB2FB,0xBAFA,0xBA79,0xBA57,0xC257,0xCA36,0xCA15,0xC9F5,0xC9F5,0xCA15,0xD215,0xD215,0xCA15,0xC215,0xBA15,0xB235,0x9A35,0x8256,0x6B19,0x5BDB,0x4C7D,0x349E,0x1C7E,0x147D,0x047D,0x04BD,0x04DD,0x055C,0x1F3F,0x177D,0x0F9C,0x07BC,0x07BC,0x07BC,0x0FBC,0x177C,0x277D,0x36FD,0x5EBE,0x6D5B,0x6AB3,0x9212,0xA1D3,0xB1D3,0xB9B3,0xB9B3,0xC1B3,0xC1B3,0xC1D4,0xC1B3,0xB973,0xB993,0xB9B3,0xB9B3,0xB1B3,0xB1D3,0xB234,0xB2B6,0x68F0,0x50CF,0x5131,0x4131,0x3931,0x3951,0x3951,0x3151,0x3151,0x3131,0x3131,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2930,0x290F,0x290F,0x2910,0x2910,0x210F,0x290F,0x2910,0x2910,0x2930,0x2930,0x2110,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x212F,0x292F,0x292F,0x212F,0x292F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1932,0x1112,0x19B5,0x2217,0x2217,0x1995,0x0933,0x1112,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x1930,0x1931,0x1932,0x1133,0x1154,0x21F8,0x2218,0x19F8,0x1196,0x1155,0x0913,0x1112,0x1952,0x1931,0x1131,0x1931,0x1131,0x1112,0x0933,0x1174,0x19B5,0x19B6,0x19F7,0x19F7,0x19D6,0x19B5,0x1174,0x1173,0x1132,0x1111,0x1111,0x1911,0x1952,0x1952,0x1112,0x1153,0x0954,0x1196,0x19F7,0x2218,0x19D6,0x1174,0x1132,0x1911,0x2131,0x2111,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2910,0x2930,0x2110,0x2930,0x2910,0x2110,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x212F,0x212F,0x290F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x2130,0x2930,0x2110,0x2930,0x292F,0x2930,0x2930,0x292F,0x212F,0x212F,0x2930,0x212F,0x2930,0x2110,0x2930,0x2130,0x2130,0x2930,0x212F,0x212F,0x212F,0x2130,0x2930,0x292F,0x292F,0x292F,0x290F,0x292F,0x2930,0x2930,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x2130,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x292F, + 0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x290F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1911,0x1931,0x1932,0x1932,0x1911,0x1911,0x1932,0x1931,0x1911,0x1932,0x1932,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1952,0x1931,0x1931,0x1931,0x1931,0x1932,0x1911,0x1911,0x1911,0x1911,0x1932,0x1932,0x1932,0x1932,0x1932,0x1911,0x1912,0x1932,0x1932,0x1932,0x1911,0x1911,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2910,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x2110,0x2930,0x2110,0x2110,0x2910,0x2110,0x2110,0x210F,0x2130,0x2110,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2930,0x2910,0x2910,0x2910,0x2110,0x2910,0x2110,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x212F,0x292F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2910,0x210F,0x20EF,0x2930,0x2930,0x2910,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x2110,0x2930,0x2930,0x2110,0x2910,0x290F,0x2110,0x2110,0x212F,0x210F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2910,0x2910,0x2910,0x212F,0x212F,0x292F,0x212F,0x292F,0x292F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x212F,0x210F,0x2930,0x2930,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x20EE,0x20AD,0x492F,0xBC19,0xBBB7,0xBB76,0xBB75,0xAB54,0xA3D5,0xEF7F,0xD77F,0xCF7F,0xC75E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xB75E,0xB75E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xC77F,0xCF5F,0xDEDF,0x8B54,0x81D0,0x99D2,0xA1D3,0xA9F3,0xB1D3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9B3,0xB1B3,0xB1B2,0xA9B2,0xA1F2,0x91F1,0xA375,0xEE9F,0xEF1F,0xE71F,0xDF1F,0xD6FF,0xD6FF,0xDEFF,0xDEFF,0xE6FF,0xEE7F,0x9B75,0x8A11,0x99D2,0xA9B2,0xB1B3,0xB1D3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xB9B3,0xB9D3,0xB1B2,0xA9B2,0xA1D2,0x9211,0xB438,0xEEBF,0xE6FF,0xDEFF,0xD6FF,0xD6FF,0xD6FF,0xD71F,0xDEFF,0xE6FF,0xEE9F,0xA395,0x91F1,0xA1D2,0xA9B2,0xB1B3,0xB1B3,0xB1B3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9F3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9B3,0xB9B3,0xB993,0xB192,0xA9B2,0x91D0,0xCD5B,0xE73F,0xCF7F,0xC77E,0xBF7E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xC75E,0xC75F,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF3E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xB75E,0xB75E,0xB75E,0xBF5E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xBF5E,0xB75E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF7F,0xBF7F,0xBF7F,0xBF7F,0xBF5E,0xBF7E,0xC77E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75F,0xC75E,0xC75E,0xC75E,0xC75E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF3E,0xBF3E,0xBF3E,0xBF3E,0xBF3E,0xBF3E,0xBF3E,0xBF5E,0xBF5F,0xC77F,0xD75F,0xCE3E,0x9375,0x81F1,0x99F2,0xA9F2,0xB1F3,0xB1F3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D4,0xB9F4,0xB9D3,0xB1D3,0xB1D3,0xA192,0x89D0,0xB478,0xE71F,0xD75F,0xC75F,0xC75F,0xC73E,0xC73F,0xC73F,0xC73F,0xC73F,0xCF3F,0xDF7F,0xEF7F,0xF75F,0xF75F,0xFF5F,0xFF5F,0xFF3F,0xFF3F,0xFF3F,0xFF1F,0xFF1F,0xFF3F,0xFF3F,0xFF1F,0xFF3F,0xFF3F,0xFF5F,0xF73F,0xEF5F,0xD75F,0xC73F,0xC75F,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xC75F,0xC75E,0xC75E,0xC75E,0xC75E,0xC75F,0xC77F,0xC75F,0xC75F,0xC75F,0xCF5F,0xCF5F,0xCF5F,0xCF5F,0xCF5F,0xCF3F,0xD73F,0xD73F,0xD71F,0xDF1F,0xE71F,0xEEFF,0xFEBF,0xB3B5,0xBB54,0xC335,0xCB35,0xCB35,0xCB35,0xD335,0xD335,0xD335,0xD335,0xD335,0xD335,0xDB35,0xDB35,0xDB35,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB35,0xDB36,0xDB16,0xDB16,0xDB37,0xDB37,0xDB38,0xD359,0xCB7B,0x6935,0x58F5,0x4052,0x4811,0x89B7,0xB279,0xC237,0xCA37,0xC9F6,0xC9F5,0xC9F5,0xCA15,0xCA15,0xCA15,0xC9F5,0xC215,0xC215,0xB235,0xA236,0x8A77,0x6B19,0x63FC,0x4C7E,0x3CBF,0x249E,0x149D,0x049D,0x04BD,0x04DD,0x053C,0x1F3E,0x0F7C,0x0F9C,0x07BC,0x07BC,0x07BC,0x0FBC,0x179C,0x279E,0x3F3E,0x5EBE,0x6D7B,0x6AB3,0x9213,0xAA13,0xB9D3,0xB193,0xB9B3,0xB9B3,0xB993,0xC1B3,0xB993,0xC1B4,0xB993,0xB9B3,0xB9B3,0xB9B3,0xB1D4,0xB1F4,0xAA35,0x9A34,0x58AF,0x4910,0x4130,0x4151,0x3951,0x3971,0x3151,0x3151,0x3171,0x3150,0x2930,0x2930,0x2930,0x3150,0x2930,0x2930,0x2930,0x2930,0x292F,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x210F,0x2930,0x2910,0x2910,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2110,0x2130,0x2130,0x212F,0x210F,0x210F,0x292F,0x212F,0x292F,0x292F,0x292F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x2130,0x2130,0x2110,0x2130,0x2151,0x1931,0x1930,0x1910,0x1910,0x2131,0x2131,0x1931,0x1930,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x1910,0x1931,0x1932,0x1133,0x19B5,0x21F7,0x2217,0x19D6,0x1133,0x1132,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1133,0x19B6,0x2238,0x19F8,0x11B7,0x1196,0x1154,0x0912,0x1112,0x1952,0x1951,0x1131,0x1131,0x1152,0x1174,0x19D6,0x19F7,0x19D7,0x19F7,0x1A18,0x1A18,0x1A18,0x11D7,0x11D6,0x1195,0x1153,0x1132,0x10F1,0x1111,0x1952,0x1953,0x1112,0x1132,0x0933,0x1195,0x19D7,0x1A18,0x19D7,0x1195,0x1133,0x1112,0x1911,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x212F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x2910,0x2110,0x2130,0x210F,0x210F,0x210F,0x292F,0x292F,0x212F,0x2130,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x2930,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x292F,0x292F, + 0x210F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2930,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x2930,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1911,0x2131,0x2131,0x2131,0x2111,0x2131,0x1931,0x1911,0x1911,0x1911,0x1911,0x2131,0x2111,0x1911,0x1911,0x1931,0x1911,0x1931,0x2131,0x1931,0x1910,0x1911,0x1911,0x2131,0x2131,0x2111,0x2131,0x2111,0x1911,0x1931,0x2131,0x1911,0x2131,0x1931,0x1911,0x2111,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2910,0x290F,0x290F,0x290F,0x292F,0x210F,0x212F,0x212F,0x210F,0x2130,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2110,0x210F,0x2130,0x2930,0x212F,0x210F,0x292F,0x210F,0x292F,0x210F,0x2110,0x2930,0x2910,0x2910,0x2110,0x2910,0x2910,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x210F,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x210F,0x2910,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2110,0x2110,0x2930,0x212F,0x2930,0x2110,0x290F,0x290F,0x2110,0x2110,0x2130,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x212F,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x212F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x210F,0x20EE,0x20AD,0x494F,0xBC19,0xBBB6,0xBB55,0xB355,0xAB34,0xABF5,0xEF5F,0xCF5E,0xC73E,0xC75E,0xBF5E,0xBF3E,0xB73E,0xB73E,0xB75E,0xB73E,0xB73E,0xBF5E,0xBF5E,0xBF7F,0xC77F,0xD75F,0xCDDD,0x8271,0x91F1,0xA1D2,0xA9F3,0xB1F3,0xB1F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xC1D4,0xC1D3,0xC1D3,0xC1F3,0xC1D3,0xB9D3,0xB9D3,0xB9B3,0xB1B3,0xA9B2,0xA1F2,0x81D0,0xCCBA,0xEEBF,0xDF1F,0xD73F,0xCF3F,0xC73F,0xC71F,0xC71F,0xC71F,0xCF3F,0xCF3F,0xDF1F,0xE6BF,0xBC79,0x89F1,0x99F2,0xA9B2,0xB1D3,0xB1B3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xC1D3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9B3,0xB9D3,0xB1B2,0xA9B2,0xA1F2,0x89F1,0xDD7C,0xE6DF,0xD6FF,0xCF3F,0xC71F,0xC71F,0xC73F,0xC73F,0xC73F,0xCF3F,0xCF3F,0xDF1F,0xE6BF,0xC4BA,0x89F1,0xA1D2,0xA9B2,0xB1D3,0xB1B3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9B3,0xB9B3,0xB9B3,0xB192,0x99D1,0x9B54,0xE6DF,0xD75F,0xC75F,0xBF7F,0xBF5E,0xBF5E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xBF3E,0xBF5E,0xB73E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xC75F,0xC75F,0xC75F,0xC75F,0xC75F,0xC75F,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xC73E,0xBF3E,0xBF3E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB73E,0xB73E,0xB75E,0xB75E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5F,0xC75F,0xC77F,0xC77F,0xC77F,0xC77F,0xC77F,0xC75E,0xC75E,0xC75E,0xC75E,0xC75E,0xCF5F,0xC75E,0xC75F,0xC73E,0xC73E,0xC73E,0xC73E,0xC73E,0xC75F,0xC75E,0xC73E,0xC75F,0xBF3E,0xBF5E,0xBF3E,0xBF3E,0xBF3E,0xBF3E,0xBF3E,0xBF3E,0xBF3E,0xBF5E,0xBF5E,0xC77F,0xD75F,0xCE3E,0x9354,0x89F1,0x99F2,0xA1D2,0xB1F3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D4,0xC1F4,0xB9F4,0xB9D3,0xB1D3,0xB1D3,0xA192,0x89B0,0xB478,0xE71F,0xD73F,0xC75F,0xC75F,0xBF3E,0xBF3E,0xBF3E,0xC73F,0xC73F,0xC75F,0xCF5F,0xD73F,0xD73E,0xDF3E,0xDF3E,0xE73E,0xE71E,0xE71F,0xEF1F,0xEF1F,0xE6FE,0xEF1F,0xE71E,0xE71E,0xE71E,0xDF1E,0xDF1E,0xD73E,0xD73E,0xCF3F,0xC75F,0xBF5E,0xBF5E,0xBF5E,0xB75E,0xB73E,0xB73E,0xBF5E,0xBF5E,0xB73E,0xB73E,0xB73E,0xB73E,0xB75E,0xB75E,0xB75E,0xB75E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xC75F,0xC75F,0xC75F,0xC75F,0xC75F,0xC75F,0xCF7F,0xCF7F,0xCF5F,0xCF5F,0xCF5E,0xCF5F,0xCF3E,0xCF3F,0xCF3F,0xD73F,0xD73F,0xD71F,0xD71F,0xD71F,0xDEFF,0xDF1F,0xE6FF,0xF6DF,0xFE7F,0xC417,0xBB34,0xC334,0xCB35,0xCB35,0xCB35,0xD335,0xD335,0xD335,0xD335,0xD335,0xD315,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDAF5,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB15,0xDB16,0xDB16,0xDB17,0xDB37,0xDB38,0xD359,0xC33B,0x4873,0x40B5,0x40B6,0x48B5,0x5074,0x9A19,0xBA59,0xC237,0xC1F6,0xCA16,0xC9F5,0xC9F5,0xC9F5,0xC9F4,0xC9F5,0xC1F5,0xC215,0xB235,0xA236,0x8276,0x7319,0x63FC,0x4C7E,0x3CBF,0x24BE,0x149E,0x049D,0x04BD,0x04DD,0x053C,0x1F1E,0x177C,0x0F9C,0x07BC,0x07BC,0x0FBC,0x0FBC,0x179C,0x277D,0x371E,0x56BE,0x6D5B,0x6293,0x9233,0xA1D3,0xB1B3,0xB9B3,0xB993,0xC1B4,0xC1B3,0xC1B3,0xB993,0xC1B3,0xB9B3,0xB993,0xB9B3,0xB9D4,0xB1D3,0xB1D4,0xAA14,0xAA96,0x6931,0x48EF,0x4931,0x3931,0x3951,0x3951,0x3151,0x3151,0x3151,0x2930,0x3150,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x292F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x290F,0x292F,0x290F,0x210F,0x2930,0x290F,0x290F,0x2930,0x210F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x212F,0x292F,0x290F,0x210F,0x212F,0x292F,0x292F,0x212F,0x2130,0x2130,0x2130,0x1930,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1951,0x1931,0x1931,0x1951,0x1951,0x1931,0x2130,0x2131,0x2130,0x2130,0x2130,0x1910,0x1931,0x1132,0x1133,0x19B5,0x2217,0x2218,0x19D6,0x1133,0x1112,0x1931,0x2130,0x2130,0x2130,0x212F,0x2130,0x2930,0x2130,0x2110,0x2130,0x1931,0x1932,0x1132,0x0953,0x19F7,0x2238,0x19D7,0x11B6,0x1195,0x1133,0x1112,0x1131,0x1951,0x1931,0x1131,0x1131,0x1994,0x19D5,0x19F6,0x11D7,0x11D7,0x19F8,0x11F8,0x11F8,0x11F8,0x11F8,0x11F7,0x11B6,0x1195,0x1174,0x1132,0x1112,0x1932,0x1932,0x1912,0x1112,0x1133,0x1175,0x1196,0x19F8,0x1A18,0x1196,0x1154,0x1132,0x1911,0x2111,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2930,0x2110,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2110,0x2110,0x2930,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x290F,0x2930,0x290F,0x2930,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x2930,0x2130,0x210F,0x210F,0x212F,0x212F,0x2930,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F, + 0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x2110,0x2930,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x2930,0x210F,0x210F,0x292F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x2930,0x2930,0x2910,0x2910,0x2910,0x290F,0x290F,0x2910,0x290F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x1910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2131,0x2131,0x2131,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x2130,0x212F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2150,0x2130,0x212F,0x210F,0x212F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x2110,0x2910,0x2910,0x2910,0x2110,0x2910,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x290F,0x210F,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x290F,0x210F,0x210F,0x2110,0x290F,0x2910,0x210F,0x2910,0x2930,0x2930,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x2930,0x2930,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x290F,0x292F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x210F,0x20EE,0x20AD,0x492F,0xBBF8,0xBB96,0xB355,0xB335,0xA334,0xAC16,0xE75F,0xCF5F,0xC71E,0xBF3E,0xBF3E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB75E,0xBF7E,0xC79F,0xDF7F,0xA416,0x81F0,0x99F2,0xA1D2,0xA9D3,0xB1F3,0xB9F3,0xB9D3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xB9D3,0xB9B3,0xB9B3,0xB1B2,0xA1D2,0x9231,0xE61F,0xE6FF,0xD71F,0xCF3F,0xC73F,0xC73F,0xBF1E,0xBF3F,0xBF3F,0xC73F,0xC73F,0xC73E,0xC73F,0xD71F,0xE6DF,0xB478,0x8A11,0x99D2,0xA9D3,0xB1B3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9B3,0xB9B3,0xB1B2,0xA1F2,0x9231,0xEE3F,0xE71F,0xD71F,0xCF3F,0xC75F,0xBF3F,0xBF1E,0xBF3E,0xBF3E,0xC75F,0xC75F,0xC73F,0xC71E,0xD71F,0xE6DF,0xB478,0x89F1,0xA1D2,0xA9B3,0xB1B3,0xB1D3,0xB1D3,0xB9D3,0xB9D3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xC1D3,0xB9D3,0xB9D3,0xB9B3,0xB9B3,0xB9B2,0xB192,0xA1D2,0x9292,0xE65F,0xD73F,0xC75F,0xBF5E,0xBF5E,0xBF5E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xC75F,0xC75F,0xC75F,0xCF5F,0xCF7F,0xCF5F,0xCF5F,0xCF5F,0xD75E,0xD75E,0xD75E,0xD75E,0xD75E,0xD75E,0xCF5E,0xCF5E,0xCF3E,0xCF3F,0xCF3E,0xCF3E,0xCF3E,0xCF3F,0xC73F,0xC73E,0xC75F,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF3E,0xBF5E,0xBF5E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73D,0xB75E,0xB75E,0xB73D,0xB73E,0xB73E,0xB73E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xB73D,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xC75F,0xC75F,0xC75F,0xC75F,0xCF5F,0xCF5F,0xCF5F,0xCF5F,0xCF7F,0xCF5E,0xCF5E,0xD75E,0xD75E,0xD75E,0xD75E,0xD75F,0xCF3F,0xCF3F,0xCF3F,0xCF3F,0xCF3F,0xCF3F,0xCF3F,0xC73F,0xC73F,0xC73E,0xC75E,0xBF3E,0xBF3E,0xBF3E,0xBF3E,0xBF3E,0xBF1E,0xBF1E,0xBF3E,0xBF3E,0xBF3E,0xC73F,0xCF3F,0xD65E,0x8B34,0x81F0,0xA1F2,0xA9D2,0xB1F3,0xB1F3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xC1D4,0xB9D4,0xC1F4,0xB9F4,0xB9D3,0xB9D3,0xB1D3,0xA9B2,0x91D0,0xB437,0xE6FF,0xD73F,0xC73F,0xBF3E,0xBF3E,0xBF3E,0xBF1E,0xBF3E,0xBF3E,0xC73E,0xC71F,0xCF1F,0xD71F,0xD71F,0xDF1F,0xDF1F,0xE71F,0xE71F,0xE71F,0xE6FF,0xE6FF,0xE71F,0xE71F,0xE71F,0xDF1F,0xDF1F,0xDF3F,0xD71E,0xCF1F,0xC73F,0xC73F,0xBF5E,0xBF5E,0xBF5E,0xB73E,0xBF5E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB75E,0xB75E,0xB75E,0xB75E,0xB75E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xC75F,0xC75F,0xC75F,0xCF5F,0xCF5F,0xCF5F,0xCF5F,0xD75E,0xD75E,0xD75F,0xD75F,0xD75F,0xD75F,0xD75E,0xD73E,0xD73F,0xD71F,0xDF1F,0xDF1F,0xDEFF,0xDEFF,0xDEFF,0xE6FF,0xE6FF,0xEEDF,0xF6DF,0xFEBF,0xCC57,0xBB14,0xC314,0xCB15,0xCB15,0xD315,0xD315,0xD315,0xD315,0xD315,0xD315,0xD2F5,0xD315,0xDB15,0xDB15,0xDB15,0xDAF5,0xDAF5,0xDB15,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF6,0xDAF6,0xDB17,0xDB17,0xD338,0xD359,0xBB1B,0x4094,0x40D6,0x40F7,0x40F7,0x48B6,0x4853,0xB27A,0xBA38,0xC217,0xC1F6,0xC9F5,0xCA15,0xC9F5,0xC9F5,0xC9F5,0xC9F5,0xC215,0xB215,0xA235,0x8A76,0x7319,0x63FC,0x547E,0x3CBF,0x24BE,0x14BE,0x0CBD,0x04BD,0x04FD,0x053B,0x16FD,0x177C,0x0F9C,0x079B,0x07BB,0x07BC,0x0F9C,0x179C,0x277D,0x371E,0x56BE,0x6D5B,0x6293,0x9213,0xAA14,0xB1D3,0xB9B3,0xB9B4,0xB993,0xC1D4,0xB993,0xB993,0xB993,0xB993,0xB993,0xB9B3,0xB9D3,0xB9D3,0xB1D3,0xB214,0xB296,0x81B3,0x50D0,0x4110,0x3931,0x3931,0x3951,0x3151,0x3151,0x3151,0x3130,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x2930,0x2130,0x2130,0x2110,0x1910,0x1910,0x1131,0x1152,0x1152,0x1132,0x1132,0x1132,0x1952,0x1952,0x1131,0x1131,0x1952,0x1952,0x1931,0x1910,0x2151,0x2151,0x2131,0x2131,0x1931,0x1932,0x1953,0x1133,0x1995,0x2217,0x2218,0x19B6,0x1133,0x1111,0x1931,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2131,0x1931,0x1132,0x0953,0x19D6,0x1A18,0x11B6,0x1196,0x1175,0x1133,0x1112,0x1931,0x1931,0x1951,0x1131,0x1973,0x1174,0x19D6,0x11D7,0x11D7,0x11B7,0x11B7,0x09B7,0x09B7,0x11B7,0x11D8,0x11D7,0x11F7,0x19D7,0x1195,0x1974,0x1112,0x1912,0x1932,0x1932,0x1112,0x1133,0x1154,0x1196,0x11D7,0x19F8,0x11D7,0x1175,0x1133,0x1912,0x1911,0x2110,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2130,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x290F,0x290F,0x2930,0x290F,0x2930,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2930,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2150,0x2150,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x212F,0x292F,0x2930,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x210F,0x210F,0x212F,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130, + 0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x2930,0x210F,0x2930,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x2110,0x210F,0x2110,0x2110,0x2110,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x2930,0x212F,0x292F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2110,0x2110,0x210F,0x210F,0x2110,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x210F,0x210F,0x212F,0x292F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x212F,0x292F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2930,0x2930,0x210F,0x2910,0x2930,0x2930,0x290F,0x292F,0x210F,0x212F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2110,0x2110,0x210F,0x290F,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2930,0x2910,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x210F,0x20EE,0x28AD,0x492F,0xBC19,0xBB96,0xB335,0xAB14,0xA314,0xAC16,0xE75F,0xCF5F,0xC73E,0xBF3E,0xBF3E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB75E,0xBF5E,0xBF7E,0xC77F,0xDF5F,0x82B2,0x89D1,0x99D2,0xA1D2,0xA9F3,0xB9F3,0xB9D3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xB9D3,0xB9D3,0xB1B2,0xA9D2,0x9211,0xDD7C,0xE6FF,0xCF1F,0xC73F,0xC73F,0xBF3E,0xBF3E,0xBF3F,0xBF3E,0xBF3E,0xBF1E,0xBF3E,0xBF3E,0xBF5F,0xC73F,0xD73F,0xE6DF,0xA3D6,0x8A11,0xA1D2,0xA9B2,0xB1B3,0xB1D3,0xB9D3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9B3,0xB9B2,0xA9D2,0x9211,0xDD5C,0xE71F,0xCF3F,0xC73F,0xBF5F,0xBF5E,0xBF3E,0xB71E,0xBF1E,0xBF1E,0xBF3E,0xBF3E,0xBF5F,0xBF5F,0xC73F,0xCF1F,0xE6DF,0xABD7,0x91F1,0xA1D2,0xB1B3,0xB1B3,0xB9D3,0xB9D3,0xB9D3,0xB9F3,0xB9F3,0xB9D3,0xC1D3,0xC1D3,0xB9D3,0xB9D3,0xB9B3,0xB9B3,0xB9B3,0xB192,0xA9B2,0x91F1,0xDDBD,0xDF1F,0xC75F,0xBF5E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xBF5E,0xBF5E,0xBF5E,0xBF7F,0xC75F,0xCF5F,0xCF3F,0xD73F,0xDF3F,0xDF1F,0xE71F,0xEF3F,0xEF3F,0xF73F,0xF73F,0xF73F,0xF73F,0xF73F,0xF73F,0xF73F,0xF73F,0xEF1F,0xEF1F,0xE6FF,0xE6FF,0xE71F,0xDF1F,0xDF1F,0xD71F,0xD73F,0xCF3F,0xC75F,0xC75E,0xBF3E,0xBF3E,0xBF5E,0xBF3E,0xBF3E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73D,0xB73E,0xB73E,0xB73E,0xB73D,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73D,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xBF5E,0xBF5E,0xBF5E,0xBF3E,0xC75F,0xCF5F,0xD73F,0xD73F,0xDF3F,0xE73F,0xEF3F,0xEF5F,0xF75F,0xF75F,0xF73F,0xF73F,0xF75F,0xF73F,0xF75F,0xF73F,0xEF3F,0xEF1F,0xEF1F,0xE71F,0xE71F,0xE6FF,0xDF1F,0xDF1F,0xD71F,0xD71F,0xCF3F,0xC73E,0xC73E,0xC73E,0xBF3E,0xBF3E,0xBF1E,0xBF1E,0xBF1E,0xBF1E,0xBF3E,0xBF3E,0xC73F,0xCF1F,0xD65E,0x8B13,0x89F1,0xA1F2,0xA9F2,0xB1F3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xC1D3,0xC1D4,0xC1D4,0xC1F4,0xC1F4,0xB9D3,0xB1D3,0xB1D3,0xA1B1,0x91D0,0xB437,0xE6FF,0xD73F,0xC73F,0xBF1E,0xBF1E,0xBF1E,0xBF1E,0xBF3E,0xC73F,0xC73F,0xCF1F,0xCEFF,0xD6FF,0xDF1F,0xDF1F,0xE6FF,0xE6FF,0xE6FF,0xEEFF,0xEEFF,0xEEFF,0xEEDF,0xEEFF,0xEEFF,0xE6FF,0xE6FF,0xDEFF,0xD6FF,0xD71F,0xCF3F,0xC73F,0xBF3E,0xBF3E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xBF5E,0xB73E,0xB73E,0xB73E,0xB75E,0xB75E,0xB75E,0xB75E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xBF5E,0xC75F,0xCF5F,0xCF3F,0xD73F,0xDF3F,0xE71F,0xEF3F,0xF75F,0xF73F,0xF75F,0xFF3F,0xFF3F,0xFF3F,0xFF3F,0xFF3F,0xFF3F,0xFF3F,0xF6FF,0xF6FF,0xEEDF,0xEEDF,0xEEDF,0xEEDF,0xEEDF,0xF6DF,0xF6DF,0xF6DF,0xFEBF,0xFE7F,0xDC99,0xB2F4,0xC314,0xCB15,0xCB15,0xD315,0xD2F5,0xD2F5,0xD2F5,0xD315,0xD2F5,0xD2F5,0xD315,0xDAF5,0xD2F5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF5,0xDAF6,0xDAF6,0xD2F6,0xDB17,0xD338,0xCB5A,0xB2FB,0x4094,0x38F7,0x4118,0x4139,0x38F7,0x48D6,0x7957,0xB279,0xC238,0xC1D5,0xC1D5,0xC1F5,0xC9F5,0xC9F5,0xC9F5,0xC9F5,0xC1F5,0xB215,0xA215,0x8A76,0x7319,0x6C1C,0x549E,0x3CBE,0x2CDE,0x1CDE,0x0CBD,0x04DD,0x04FD,0x055B,0x16DD,0x0F5C,0x0F7C,0x0FBC,0x07BC,0x07BB,0x0F9C,0x179C,0x1F7D,0x373E,0x5EDF,0x6D5B,0x6293,0x8A13,0xA1D3,0xB9F4,0xB193,0xB9B4,0xC1B3,0xB993,0xC1D4,0xB993,0xB993,0xB993,0xB9B3,0xB9B3,0xB9B3,0xB9D4,0xB1D3,0xBA35,0xB276,0xA296,0x5911,0x40F0,0x3910,0x3931,0x3151,0x3151,0x3151,0x3151,0x3151,0x3150,0x3150,0x2930,0x2950,0x2930,0x2930,0x292F,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2930,0x290F,0x2930,0x290F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1131,0x1153,0x1194,0x19B5,0x1995,0x19B5,0x1995,0x19B5,0x1994,0x1173,0x1173,0x1153,0x1952,0x1931,0x1931,0x2131,0x2151,0x2131,0x2131,0x2151,0x1932,0x1153,0x1133,0x1195,0x19F7,0x19F7,0x19D6,0x0912,0x1112,0x1931,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x2930,0x2130,0x2130,0x2131,0x1931,0x1153,0x0953,0x19D6,0x2218,0x11B6,0x1195,0x1154,0x1133,0x1111,0x1951,0x1951,0x1931,0x1152,0x1173,0x11B5,0x19D6,0x11D6,0x11B7,0x0996,0x0996,0x0976,0x0976,0x0976,0x0996,0x11D7,0x11D7,0x11D7,0x19D6,0x1994,0x1133,0x1932,0x1912,0x1932,0x1112,0x1112,0x1154,0x1196,0x11D7,0x1A18,0x19D7,0x1195,0x1133,0x1912,0x1911,0x2110,0x2130,0x2110,0x2130,0x210F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2910,0x290F,0x290F,0x212F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x2930,0x2110,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2930,0x2930,0x212F,0x210F,0x210F,0x210F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130, + 0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2130,0x2930,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x210F,0x290F,0x210F,0x2910,0x2910,0x290F,0x210F,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x290F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x212F,0x2130,0x2110,0x2130,0x210F,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2130,0x2110,0x2130,0x2110,0x210F,0x212F,0x2130,0x2130,0x2110,0x210F,0x2130,0x2110,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x2930,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2910,0x2910,0x210F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x212F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2930,0x210F,0x2930,0x2930,0x292F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x290F,0x2930,0x2110,0x2930,0x2930,0x210F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x292F,0x210F,0x212F,0x292F,0x210F,0x2110,0x210F,0x2110,0x2130,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x292F,0x212F,0x210F,0x28EE,0x28AD,0x492F,0xBC19,0xBB96,0xB335,0xAAF4,0xA314,0xAC16,0xE73F,0xCF5F,0xBF1E,0xBF3E,0xB73E,0xB71E,0xB71E,0xB71E,0xB73E,0xB73D,0xB73E,0xB73E,0xB75E,0xBF7F,0xC75F,0xDF1F,0x7A51,0x91F1,0x99D2,0xA9D2,0xB1F3,0xB9F3,0xB9F3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9B3,0xB9B3,0xB9B3,0xB1D2,0x99F1,0xB3F7,0xE6BF,0xD71F,0xC73F,0xBF1E,0xBF3E,0xBF1E,0xBF3F,0xBF3E,0xB73E,0xB71E,0xB71E,0xB71E,0xB73E,0xB73E,0xBF3E,0xC75F,0xD71F,0xDE7E,0x9313,0x91F2,0xA1B2,0xA9B2,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1B3,0xC1D3,0xB9B3,0xB1B2,0xA1F2,0xA375,0xEEBF,0xD71F,0xC73F,0xBF3F,0xB73E,0xB71E,0xB71E,0xB71E,0xB71E,0xB71E,0xB71E,0xB73E,0xB73E,0xB73E,0xBF3E,0xC73F,0xD71F,0xDE5E,0x92F3,0x99F2,0xA9D3,0xB1B3,0xB1B3,0xB9D3,0xB9D3,0xB9F3,0xB9F3,0xC1F3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9B3,0xB9B3,0xB9B2,0xA9B2,0x99F1,0xB3F7,0xE71F,0xC73F,0xBF3E,0xBF3E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xBF5E,0xBF5E,0xBF5E,0xC75F,0xCF3F,0xD6FF,0xE6FF,0xE69F,0xDDFD,0xD55C,0xC458,0xA335,0x9A92,0x89F0,0x818F,0x816E,0x816E,0x814E,0x816E,0x89AF,0x9A52,0xAAF4,0xB396,0xBBF7,0xCC99,0xD4FB,0xDD7C,0xDDDD,0xE65E,0xE6DF,0xDF1F,0xD73F,0xCF3E,0xC75F,0xC75E,0xBF3E,0xBF3E,0xBF3E,0xBF3E,0xB73E,0xB73E,0xB73E,0xB71D,0xB73E,0xAF1D,0xB71D,0xB71D,0xAF1D,0xAF3D,0xAF3D,0xAF3E,0xAF3E,0xAF3E,0xB73E,0xAF3D,0xB73D,0xAF3D,0xAF1D,0xAF1D,0xB73E,0xB73E,0xB73D,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xBF3E,0xBF5E,0xC75F,0xC73F,0xCF1F,0xDF1F,0xE6BF,0xDE3E,0xD59C,0xCCFB,0xAB75,0x9292,0x89F0,0x818F,0x796E,0x794E,0x794E,0x818E,0x89CF,0x9251,0xA2D3,0xB376,0xC418,0xD4BA,0xD4FB,0xDD5C,0xDD9C,0xE63E,0xEE9F,0xE6FF,0xDF1F,0xCF1F,0xCF3F,0xC73F,0xC73E,0xBF3E,0xBF1E,0xBF1E,0xBF1E,0xBF1E,0xBF1E,0xBF3E,0xC73F,0xCF1F,0xD65E,0x8B33,0x89F1,0x99D2,0xA9D2,0xB1F3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xC1D3,0xC1D4,0xC1D3,0xC1D4,0xC1F4,0xB9D3,0xB9D3,0xB1F3,0xA1B1,0x91D0,0xAC37,0xE6FF,0xD73F,0xC73F,0xBF1E,0xBF1E,0xBF1E,0xBF1E,0xBF1E,0xC71F,0xCF1F,0xD71F,0xDEFF,0xE6FF,0xE6FF,0xEEDF,0xF6FF,0xF6DF,0xF6DF,0xFEDF,0xFEDF,0xFEBF,0xFEDF,0xFEDF,0xFEDF,0xF6DF,0xF6DF,0xEEDF,0xE6DF,0xDEFF,0xCF1F,0xC71F,0xBF3E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73D,0xB73D,0xB73E,0xB75E,0xB73E,0xBF5E,0xBF5E,0xBF5E,0xBF5E,0xBF7E,0xC75F,0xC75F,0xCF3F,0xD71F,0xE6DF,0xDE3E,0xD59C,0xC4B9,0xA355,0x9292,0x89F0,0x818F,0x814E,0x814E,0x814E,0x814E,0x898F,0x89AF,0x9A31,0xAB14,0xC3B7,0xCC59,0xE51C,0xED7D,0xED9D,0xF5DE,0xFE3F,0xFEBF,0xFEBF,0xFEBF,0xFE9F,0xFE9F,0xDC99,0xBB14,0xC315,0xCAF4,0xCAF5,0xD2F5,0xD2F5,0xD2D5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xDAF5,0xDAF5,0xDAF5,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xDAF5,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xDAF5,0xDAD5,0xDAF6,0xD2F6,0xD317,0xD338,0xCB5A,0xAB1B,0x3894,0x38F7,0x3939,0x3959,0x3118,0x38F7,0x50F6,0x9A5A,0xBA58,0xC217,0xC1F5,0xC1F5,0xC9F5,0xC9F5,0xC9F5,0xC1F5,0xC1F5,0xBA15,0xA1F5,0x8A36,0x7318,0x6C1C,0x549E,0x3CDE,0x2CDE,0x1CFE,0x0CBD,0x04DD,0x04FC,0x053B,0x16DD,0x177C,0x0F7B,0x079B,0x07BB,0x0FBC,0x0FBC,0x179C,0x1F7D,0x373E,0x56DE,0x655B,0x6293,0x9233,0xA9F3,0xB1B3,0xB9B4,0xB9B4,0xC1B4,0xC1D4,0xB993,0xB993,0xB9B3,0xB993,0xB9B4,0xB9B3,0xB9B3,0xB9B3,0xB193,0xA9B3,0xB255,0xB2F8,0x6952,0x40AF,0x38F0,0x3931,0x3951,0x3151,0x3151,0x3131,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x2930,0x2910,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x210F,0x210F,0x290F,0x210F,0x292F,0x290F,0x2910,0x290F,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x1931,0x1132,0x1153,0x11B5,0x11D6,0x19F7,0x19F7,0x19D7,0x19D7,0x19D7,0x19D6,0x19D6,0x19B5,0x1994,0x1153,0x1932,0x1911,0x1911,0x1911,0x1931,0x1931,0x1931,0x1932,0x1132,0x0933,0x19B6,0x2218,0x2217,0x11B5,0x0912,0x1111,0x1931,0x1930,0x2130,0x212F,0x212F,0x212F,0x292F,0x212F,0x2130,0x2130,0x1931,0x1932,0x1153,0x1174,0x19F7,0x2238,0x1196,0x1175,0x0934,0x1133,0x1932,0x1951,0x1951,0x1951,0x1152,0x1173,0x19F6,0x19D6,0x11B6,0x1196,0x1196,0x0975,0x0955,0x0955,0x0955,0x0975,0x09B7,0x11D7,0x11F8,0x19D7,0x1995,0x1974,0x1912,0x1932,0x1932,0x1912,0x10F2,0x1133,0x1175,0x11D7,0x11F8,0x19F7,0x1196,0x1153,0x1112,0x1911,0x1910,0x2110,0x2130,0x2110,0x2130,0x210F,0x2130,0x2130,0x2110,0x210F,0x2930,0x2110,0x2930,0x2910,0x290F,0x290F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2930,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2110,0x212F,0x212F,0x2110,0x210F,0x210F,0x290F,0x2930,0x290F,0x2930,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2130,0x2930,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2111,0x2111,0x2131,0x2131,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2151,0x2130,0x2131,0x2151,0x2131,0x2131,0x2131,0x2150,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130, + 0x210F,0x212F,0x210F,0x2930,0x2930,0x292F,0x210F,0x212F,0x2930,0x2930,0x2930,0x210F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x292F,0x290F,0x2110,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x2910,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x290F,0x212F,0x212F,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x210F,0x210F,0x2130,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x212F,0x212F,0x210F,0x212F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x210F,0x2930,0x290F,0x210F,0x2930,0x212F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x292F,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x210F,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2910,0x2930,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x212F,0x210F,0x210F,0x2130,0x210F,0x2130,0x210F,0x2110,0x2110,0x2110,0x2910,0x2930,0x210F,0x2930,0x212F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x290F,0x290F,0x2110,0x2930,0x212F,0x2930,0x290F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x2910,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x2950,0x2130,0x2930,0x2130,0x292F,0x292F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x212F,0x290F,0x28EE,0x28AD,0x492F,0xBBF9,0xBB76,0xB315,0xAAF4,0xA314,0xAC16,0xE73F,0xCF3F,0xBF1E,0xBF3E,0xB71E,0xB71E,0xB71D,0xAF1D,0xB71D,0xB71D,0xB73E,0xB73E,0xB75E,0xBF5F,0xCF5F,0xC63D,0x8251,0x91D1,0x99D2,0xA9D2,0xB1F3,0xB9F3,0xB9F3,0xB9D3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xB1B2,0xA9D2,0x89F1,0xEE5F,0xD6FF,0xCF1F,0xBF1E,0xBF1E,0xB71E,0xB73E,0xB71E,0xB73E,0xB71E,0xB71E,0xB71E,0xB71E,0xB71E,0xB73E,0xB73E,0xBF5E,0xC73F,0xD71F,0xCD9C,0x8A31,0x99D2,0xA9D2,0xB1B2,0xB9D3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D4,0xC1D3,0xC1D3,0xC1B3,0xC1D3,0xB9D3,0xB1D2,0x91F1,0xD59C,0xDEFF,0xCF3F,0xBF3F,0xB71E,0xB71E,0xB71E,0xB71E,0xB71E,0xB71E,0xB71E,0xB71E,0xB71E,0xB71E,0xB73E,0xB73E,0xBF5F,0xC73F,0xD6FF,0xC57B,0x8A31,0xA1D2,0xA9D3,0xB1B3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xC1D3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC1D4,0xC1B3,0xB9B3,0xB9B2,0xB1B2,0xA1D1,0xA334,0xE71F,0xC73F,0xBF3E,0xBF3E,0xB73E,0xB71E,0xB73E,0xB73E,0xB71E,0xB73E,0xB73E,0xB73E,0xBF3E,0xBF3E,0xC73F,0xCF1F,0xDF1F,0xEEFF,0xCD7B,0x9B95,0x92D2,0x8A31,0x89F0,0x91B0,0x99B1,0x9971,0xA191,0xA971,0xA971,0xA971,0xA971,0xA971,0xA971,0xA991,0xA191,0xA191,0x99B1,0x99B1,0x91D0,0x91F0,0x8A11,0x92B2,0x9B75,0xCD5B,0xF71F,0xE71F,0xD71F,0xCF1F,0xC73F,0xC73E,0xBF3E,0xBF3E,0xB73E,0xB73E,0xB71E,0xB71E,0xB71D,0xB71E,0xAF1D,0xB71D,0xAF1D,0xAF1D,0xAF3D,0xAF3D,0xAF3E,0xAF3D,0xAF3D,0xAF3D,0xAF3D,0xAF1D,0xAF1D,0xAF1E,0xAF1D,0xB71E,0xB73E,0xB73E,0xB73E,0xB71E,0xB73E,0xB73E,0xB73E,0xBF3E,0xBF3E,0xC73F,0xCF1F,0xDEFF,0xE6DF,0xAC77,0x9334,0x8A71,0x89F0,0x89B0,0x99B1,0x9991,0xA191,0xA171,0xA971,0xA151,0xA971,0xA971,0xA991,0xA191,0xA191,0xA1B1,0x99B1,0x99B1,0x91D0,0x91D0,0x9211,0x9272,0x92F3,0xA3D6,0xDE1E,0xEF1F,0xDEFF,0xD71F,0xC71E,0xC71E,0xBF1E,0xBF1E,0xBF1E,0xBF1E,0xBF1E,0xC71E,0xC71E,0xCEFF,0xD65E,0x8B13,0x89F1,0x99D2,0xA9D2,0xB1F3,0xB9F3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1F4,0xB9D3,0xB9D3,0xB1D3,0xA191,0x91D0,0xB457,0xDEFF,0xCF1F,0xC73F,0xBEFE,0xB71E,0xB71E,0xB71E,0xBF1E,0xC71F,0xC6DE,0x94B7,0xA477,0xAC78,0xAC57,0xAC17,0xB3F7,0xABB6,0xAB95,0xAB54,0xA334,0xA334,0xA334,0xA334,0xA334,0xA354,0xA375,0xA395,0x9BB5,0x8B93,0xAD9A,0xCF1F,0xBF3E,0xB73E,0xB73E,0xB71E,0xB73E,0xAF1E,0xB73E,0xB71E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xBF5E,0xBF5E,0xC75E,0xCF5F,0xD73F,0xDF1F,0xE6FF,0xB4F9,0x9354,0x8251,0x89F1,0x89B0,0x9190,0x9971,0xA171,0xA971,0xA951,0xA951,0xA951,0xA951,0xA971,0xA971,0xA971,0xA191,0xA1B1,0x99B1,0x99B0,0x99D1,0x99F1,0x9A52,0xA2B3,0xB354,0xED7C,0xFE9F,0xFE7F,0xFE5F,0xFE1F,0xE49A,0xBAD4,0xC2F4,0xCAF5,0xCAF5,0xD2D5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xD2B4,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xD2D6,0xD2F6,0xD2F7,0xD318,0xCB3A,0xAB1B,0x3894,0x3118,0x3139,0x315A,0x3139,0x3119,0x40F7,0x71B9,0xB27A,0xC237,0xB9D5,0xC1F5,0xC9F5,0xC9F5,0xC9D5,0xC1D4,0xC1D5,0xB9F5,0xA1F5,0x8A15,0x7B18,0x6C1C,0x5CBE,0x3CFE,0x2CFF,0x1CFE,0x0CFD,0x04FD,0x04FD,0x055B,0x0EBC,0x0F5C,0x0F7B,0x0FBB,0x07BB,0x07BB,0x0F9C,0x179C,0x1F7D,0x373D,0x56DE,0x655B,0x6293,0x9233,0xA1F3,0xB193,0xB9B3,0xB9B4,0xC1D4,0xC1B4,0xB9B4,0xB993,0xB173,0xB9B4,0xB9B3,0xB9D4,0xB9D3,0xB9D4,0xB1B3,0xA9D4,0xAA15,0xB2D8,0x79F4,0x40D0,0x3910,0x3931,0x3130,0x3151,0x3151,0x3151,0x3151,0x2950,0x2930,0x2930,0x2950,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x210F,0x290F,0x292F,0x290F,0x290F,0x2910,0x2910,0x290F,0x2910,0x2110,0x2110,0x2110,0x2110,0x2111,0x1932,0x1133,0x1195,0x11D7,0x11F8,0x11F8,0x11F8,0x11F8,0x11D7,0x11D7,0x11D7,0x19F7,0x19D6,0x19B5,0x1994,0x1953,0x1932,0x1931,0x1911,0x1931,0x1931,0x1911,0x1932,0x1133,0x1133,0x19B6,0x2217,0x2217,0x19B6,0x0912,0x1111,0x1931,0x2130,0x2150,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x2130,0x1931,0x1932,0x1153,0x1174,0x19F7,0x2218,0x1196,0x1175,0x1134,0x1133,0x1932,0x1952,0x1951,0x1951,0x1132,0x1994,0x19F6,0x11B6,0x1196,0x0976,0x0975,0x0955,0x0954,0x0934,0x0954,0x0955,0x0976,0x11F7,0x11D7,0x11D7,0x19B5,0x1954,0x1953,0x1912,0x1932,0x1912,0x1112,0x1113,0x1195,0x11D7,0x11D7,0x1A18,0x1196,0x1154,0x1132,0x1931,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x290F,0x2930,0x290F,0x2930,0x210F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2910,0x2910,0x2930,0x2930,0x2930,0x210F,0x2110,0x2930,0x210F,0x2930,0x290F,0x210F,0x2110,0x2930,0x2130,0x2130,0x2930,0x2930,0x2110,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2131,0x2131,0x2131,0x2152,0x1931,0x1931,0x1931,0x2132,0x2132,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2151,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x1931,0x2131,0x2131,0x1910,0x2131,0x2131,0x2131,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131, + 0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x2930,0x212F,0x292F,0x2930,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x212F,0x292F,0x210F,0x2930,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x290F,0x292F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x212F,0x2930,0x212F,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x212F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x210F,0x210F,0x2930,0x210F,0x210F,0x2130,0x2110,0x2910,0x290F,0x2910,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x210F,0x2110,0x2110,0x2910,0x2110,0x2930,0x2930,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2910,0x2910,0x210F,0x2930,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x212F,0x2130,0x292F,0x292F,0x210F,0x2910,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x210F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x210F,0x28EE,0x28AD,0x492F,0xBBF9,0xBB76,0xB2F4,0xAAF4,0xA2F3,0xAC16,0xDF1F,0xCF3F,0xBF1E,0xBF1E,0xB71E,0xAEFD,0xAEFD,0xAF1D,0xAF1D,0xAF1D,0xAF1E,0xB73E,0xB73E,0xBF5F,0xCF3F,0xBDBB,0x71CF,0x99F2,0xA1D2,0xA9D3,0xB213,0xB9F3,0xB9D3,0xB9D3,0xC1D3,0xC1F3,0xC1D3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9B3,0xB1D2,0xA1F1,0xB3B6,0xEEFF,0xCF1F,0xC71F,0xBF3F,0xB71E,0xB71E,0xB71E,0xB71E,0xB71E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xB73E,0xB75F,0xBF5F,0xC73F,0xE73F,0xA3B6,0x9211,0xA1D2,0xB1B2,0xB9D3,0xB9D3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1B3,0xC1B3,0xB9D3,0xA9D2,0x9251,0xF71F,0xCF1F,0xC73F,0xBF3F,0xB71E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xB73E,0xB73E,0xB73E,0xBF3E,0xCF1F,0xE71F,0x9B55,0x9A12,0xA9D2,0xB1B3,0xB1D3,0xB9D3,0xB9D3,0xC1D3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9B3,0xB9B3,0xB1D2,0xA9B1,0x89F0,0xEEFF,0xC71F,0xBF1E,0xBF1E,0xB71E,0xB71E,0xB71E,0xB71E,0xB71E,0xB71E,0xB73E,0xBF3E,0xC73F,0xCF1F,0xDEFF,0xD63E,0xB458,0x8210,0x89D0,0x91D1,0x99D1,0xA1B1,0xA1B2,0xA9B2,0xA992,0xB192,0xB192,0xB192,0xB992,0xB992,0xB992,0xB972,0xB992,0xB192,0xB192,0xB192,0xB1B2,0xB1B2,0xA9B2,0xA9B2,0xA1D1,0xA1D1,0x99D1,0x89D0,0x81CF,0xBC17,0xDDFD,0xE6FF,0xD71F,0xCF3F,0xC73E,0xBF3E,0xB71E,0xB71E,0xB71E,0xB71E,0xB71E,0xAF1E,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF3D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xB71E,0xB71E,0xB73E,0xAF1E,0xB73E,0xB73E,0xB73E,0xB73E,0xBF3E,0xBF3F,0xCF3F,0xD6FF,0xD61E,0xB458,0x79F0,0x89B0,0x91D1,0x99B1,0xA1B1,0xA1B2,0xA992,0xA992,0xB192,0xB192,0xB192,0xB192,0xB992,0xB1B2,0xB192,0xB192,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xA9B2,0xA9B2,0xA1B1,0xA1D1,0x99D1,0x91F1,0x81B0,0x9B14,0xDD9C,0xE6BF,0xD6FF,0xCEFE,0xC71E,0xC71E,0xBF1E,0xBF1E,0xBF1E,0xBF1E,0xC71E,0xCEFF,0xD63E,0x82F3,0x89F1,0x99D2,0xA9D3,0xB1F3,0xB9F3,0xB9F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1F4,0xC1F4,0xB9F3,0xB9D3,0xB1D3,0xA9B2,0x91D1,0xAC37,0xE6FF,0xCF1F,0xC73E,0xBF1E,0xB71E,0xB71E,0xB71E,0xBF1E,0xC6FF,0xCE9E,0x6AD1,0x69CF,0x79AF,0x81B0,0x8190,0x89B0,0x89B0,0x91B0,0x91B0,0x99B0,0x99B0,0x99B0,0x91B0,0x91B0,0x91B0,0x91B0,0x91D0,0x8A10,0x7A30,0xA4B8,0xCEFF,0xBF1E,0xB71E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAF1D,0xAF1D,0xAF1E,0xAF1D,0xB73D,0xB73E,0xB73E,0xB73E,0xB73E,0xB73E,0xBF3E,0xC73E,0xCF3F,0xD71F,0xD63E,0xB458,0x8210,0x81B0,0x89B0,0x99B1,0x99B1,0xA191,0xA992,0xB192,0xB172,0xB172,0xB972,0xB972,0xB972,0xB972,0xB972,0xB972,0xB972,0xB192,0xB192,0xB1B2,0xB192,0xB1B2,0xA9B2,0xA9B2,0xA9B1,0xA1B1,0x9990,0x99F1,0xECDB,0xFDFF,0xFE1F,0xFE1F,0xEC9A,0xC315,0xC2F4,0xCAD5,0xCAD5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xDAD5,0xDAD5,0xDAB5,0xDAB5,0xDAB5,0xDAB5,0xDAB5,0xDAB5,0xDAB5,0xDAB5,0xDAB5,0xDAD5,0xDAD5,0xDAD5,0xDAD5,0xD2D6,0xD2D6,0xD2F7,0xD318,0xC31A,0xB33C,0x3095,0x3118,0x3139,0x315A,0x295A,0x313A,0x3939,0x48F6,0xAA9B,0xBA58,0xB9F6,0xC1F6,0xC1F5,0xC9F5,0xC1D5,0xC1D5,0xC1F5,0xB9F5,0xA1D5,0x8A15,0x7AF8,0x743C,0x5CDE,0x451F,0x2D1F,0x1CFE,0x0CFD,0x04FD,0x051C,0x055B,0x0EBC,0x0F3B,0x0F9B,0x0FBB,0x0FDB,0x07BB,0x0F9B,0x177C,0x1F7D,0x373D,0x5EDE,0x653A,0x6293,0x8A33,0xAA14,0xB1D4,0xB9B4,0xB9B4,0xB9B4,0xB993,0xC1D4,0xB173,0xB993,0xB9B4,0xB993,0xB193,0xB9D4,0xB1D3,0xA9B3,0x9972,0xAA55,0xAAF8,0x92B7,0x5131,0x4131,0x3931,0x3151,0x3151,0x3151,0x3150,0x2930,0x2930,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x2930,0x2910,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2131,0x2131,0x1932,0x1153,0x19B6,0x19F7,0x11F8,0x11D8,0x11F8,0x11D7,0x0997,0x0996,0x1196,0x11D7,0x19F7,0x19D6,0x19B5,0x1974,0x1953,0x1932,0x1931,0x1931,0x1931,0x1931,0x1932,0x1133,0x0933,0x1995,0x19F7,0x19F7,0x19D6,0x0933,0x1111,0x1931,0x2130,0x2130,0x292F,0x210F,0x212F,0x210F,0x210F,0x2930,0x2130,0x2131,0x1952,0x1953,0x1174,0x19F7,0x2218,0x1176,0x1155,0x1134,0x1133,0x1952,0x1952,0x1131,0x1131,0x1152,0x1174,0x19F6,0x19D6,0x1195,0x0975,0x0955,0x0955,0x0934,0x0934,0x0113,0x0134,0x0155,0x0996,0x11D7,0x19D7,0x1195,0x1153,0x1932,0x1932,0x1932,0x1911,0x1112,0x1133,0x1195,0x11D7,0x11D8,0x19F8,0x1195,0x1153,0x1132,0x1931,0x1910,0x2110,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2910,0x2110,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2910,0x2930,0x212F,0x2930,0x210F,0x210F,0x290F,0x212F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x2111,0x1911,0x1932,0x1932,0x1911,0x1111,0x1912,0x1912,0x1912,0x1932,0x1912,0x1912,0x1912,0x1932,0x1932,0x1912,0x1932,0x1911,0x1911,0x1911,0x1911,0x10F1,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1111,0x1911,0x1911,0x1911,0x1111,0x1111,0x1111,0x1111,0x1911,0x1911,0x10F1,0x1911,0x1111,0x1111,0x1911,0x10F1,0x1111,0x1111,0x1911,0x1911,0x1911,0x10F1,0x1111,0x1111, + 0x210F,0x210F,0x2110,0x2110,0x2130,0x212F,0x2930,0x212F,0x212F,0x2130,0x212F,0x212F,0x2130,0x212F,0x290F,0x2930,0x210F,0x210F,0x290F,0x290F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2910,0x2930,0x2110,0x2110,0x2910,0x2910,0x210F,0x2910,0x2910,0x2110,0x2910,0x210F,0x290F,0x290F,0x212F,0x210F,0x212F,0x210F,0x212F,0x292F,0x212F,0x212F,0x292F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x292F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x292F,0x2130,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x2130,0x2930,0x210F,0x2130,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2910,0x2910,0x2930,0x2910,0x2110,0x2910,0x2110,0x2910,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x292F,0x290F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2910,0x2910,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930,0x212F,0x2930,0x292F,0x290F,0x2910,0x2910,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x2930,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x290F,0x290F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x28EE,0x28AD,0x492F,0xBBD8,0xBB56,0xB2F4,0xAAD4,0x9AD3,0xAC16,0xDF1F,0xC73F,0xBF3E,0xBF1E,0xB6FD,0xAEFD,0xAF1D,0xAF1D,0xAF1D,0xAEFD,0xAF1D,0xAF1E,0xB73E,0xBF5F,0xCF3F,0xACF9,0x79F0,0x99D2,0xA1D2,0xA9F3,0xB213,0xBA14,0xB9F3,0xB9D3,0xC1D3,0xC1D3,0xC1F3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xB9B2,0xB1D2,0x9A31,0xDD7C,0xDEDF,0xC71F,0xBF1E,0xB71E,0xB71E,0xB71E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAF3E,0xB75E,0xB75E,0xBF5F,0xD73F,0xCD7C,0x8A52,0x99F2,0xA9D2,0xB1D3,0xB9D3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1B3,0xB9B3,0xB1D2,0xA1F1,0xBC18,0xE6FF,0xC71F,0xBF1E,0xB71E,0xAF1E,0xAF1E,0xAF1E,0xAF1D,0xAEFD,0xAF1D,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xB71E,0xB71E,0xB73E,0xBF3E,0xBF1E,0xD6FF,0xCD5C,0x9252,0xA1F2,0xB1D3,0xB1D3,0xB9D3,0xB9D3,0xC1F3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1B3,0xB9B3,0xB9D3,0xA9B2,0x89F0,0xDE7E,0xCEFE,0xBEFE,0xBF1E,0xB71E,0xB71E,0xB71E,0xB6FE,0xB71E,0xBF1E,0xBF1E,0xC71F,0xCF1F,0xE6FF,0xB4B9,0x8271,0x89F1,0x99B1,0xA1B1,0xA9B2,0xB1B2,0xB192,0xB9B2,0xB992,0xB992,0xB992,0xB9B3,0xB993,0xC193,0xC193,0xC193,0xC193,0xC193,0xC193,0xC1B3,0xC193,0xB993,0xB993,0xB992,0xB992,0xB192,0xB1B2,0xB1B2,0xA9B2,0xA1D1,0x99F1,0x9251,0xA395,0xDE5E,0xE71F,0xCEFF,0xC71F,0xBF1E,0xBF1E,0xB71E,0xB71E,0xB71E,0xB71E,0xAF1D,0xAEFD,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xB71E,0xAF1E,0xAF1E,0xB73E,0xB73E,0xB73E,0xBF3E,0xC71F,0xCEFF,0xE6FF,0xB4F9,0x8AD3,0x89D0,0x99D1,0xA1B1,0xA9B2,0xA9B2,0xB1B2,0xB1B2,0xB9B3,0xB9B3,0xB9B3,0xB9B3,0xB9B3,0xC1B3,0xC1B3,0xB9B3,0xB9B3,0xB9B3,0xB9B3,0xB9B3,0xB9B3,0xB9B2,0xB9B3,0xB192,0xB192,0xB1B2,0xB1B2,0xA9B2,0xA9B2,0x99D1,0x8A11,0x9B34,0xE65E,0xDEDF,0xD6DE,0xCEFE,0xC71E,0xC71E,0xC71E,0xC71E,0xC71E,0xCEFF,0xD65E,0x82F3,0x89F1,0x99D2,0xA9D3,0xB1F3,0xB9F3,0xB9F3,0xC1F3,0xC1D3,0xC1F4,0xC1D3,0xC1D3,0xC1D3,0xC1F4,0xB9D3,0xB9D3,0xB1D3,0xA9B2,0x91D1,0xB437,0xDEDF,0xCF1F,0xBF1E,0xB71E,0xB71E,0xB71E,0xB71E,0xBF1E,0xC6FF,0xD69F,0x7B12,0x79D0,0x91B1,0x91B1,0x9991,0xA1B1,0xA1B1,0xA1B1,0xA1B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA191,0xA9B1,0xA191,0xA1B1,0x99D1,0x8210,0xA498,0xCEFF,0xBEFE,0xB71E,0xB71E,0xAF1E,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xB73E,0xB73D,0xB73E,0xB73D,0xB73E,0xBF3E,0xC73F,0xCF1F,0xE6FF,0xB4D9,0x8AD3,0x89F1,0x99B1,0xA1B2,0xA9B2,0xA9B2,0xB1B2,0xB1B2,0xB992,0xB993,0xB993,0xB993,0xC193,0xC193,0xC193,0xC193,0xC193,0xC193,0xC193,0xC193,0xC193,0xC192,0xB992,0xB992,0xB992,0xB992,0xB992,0xB992,0xB192,0xA9B2,0xA1D1,0xAA73,0xFD5E,0xFDFF,0xFDBF,0xFD1C,0xBAD4,0xC2D4,0xCAD5,0xCAD5,0xCAD5,0xD2D5,0xD2D5,0xD2D5,0xD2B4,0xD2B4,0xD2B5,0xD2B5,0xDAB5,0xDAB5,0xDAB5,0xDAB5,0xDAB4,0xDAB4,0xDAB4,0xDAB5,0xDAB5,0xDAB5,0xDAB5,0xDAB5,0xDAB5,0xDAB5,0xD2B6,0xD2D6,0xD2D7,0xCAF8,0xC31A,0xAB3C,0x3095,0x2919,0x293A,0x295A,0x297B,0x295A,0x315A,0x4118,0x7998,0xAA59,0xBA17,0xB9F6,0xC1F5,0xC1F5,0xC9F5,0xC1F5,0xC1F5,0xB9F5,0xA1B4,0x89F5,0x7AD8,0x741C,0x5CFF,0x453F,0x2D1F,0x1D1E,0x0D1E,0x051D,0x051D,0x057B,0x0E9C,0x0F5C,0x0F7B,0x0FBB,0x07BB,0x0FDB,0x0F9B,0x179C,0x1F7C,0x373D,0x5EFE,0x651A,0x6293,0x8A33,0xA1F3,0xB1D4,0xB1B3,0xB9B4,0xB9B4,0xC1D4,0xB9D4,0xB173,0xB993,0xB193,0xB193,0xB1B3,0xB1D4,0xB1D4,0xAA15,0x99B3,0x89B3,0x8A35,0x8276,0x5172,0x4131,0x3931,0x3151,0x3151,0x3150,0x3150,0x3150,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x210F,0x2930,0x290F,0x2930,0x290F,0x210F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2110,0x2910,0x2110,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2131,0x2131,0x1932,0x1133,0x19B6,0x19F8,0x11F8,0x09B7,0x11B7,0x0997,0x0976,0x0976,0x0976,0x0996,0x11D7,0x19D7,0x11B6,0x1995,0x1973,0x1953,0x1932,0x1931,0x1931,0x1931,0x1932,0x1133,0x0933,0x1995,0x2217,0x19F7,0x19B6,0x0912,0x1111,0x1931,0x2130,0x2130,0x210F,0x210E,0x212F,0x210F,0x212F,0x212F,0x2130,0x2131,0x1931,0x1153,0x1174,0x19D6,0x2218,0x1176,0x1175,0x1134,0x1133,0x1953,0x1952,0x1131,0x1132,0x1152,0x1174,0x19D6,0x19F7,0x1196,0x1175,0x0955,0x0934,0x0933,0x0913,0x0933,0x0134,0x0955,0x0996,0x11D7,0x19D7,0x1995,0x1174,0x1953,0x1932,0x1932,0x1931,0x1932,0x1133,0x1175,0x11D7,0x11F8,0x19D8,0x1195,0x1153,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x2110,0x2110,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2110,0x212F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2910,0x210F,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x210F,0x212F,0x212F,0x2930,0x2930,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x1911,0x1932,0x1932,0x1932,0x1113,0x1113,0x1113,0x1113,0x1113,0x1133,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x08F2,0x1112,0x1112,0x0912,0x1112,0x1112,0x1112,0x0912,0x0912,0x0912,0x1112,0x0912,0x0912,0x1112,0x1112,0x1113,0x1113,0x0912,0x1112,0x1133,0x1112,0x1112,0x1133,0x1132,0x1112,0x1133,0x1132,0x1112,0x1133,0x1133, + 0x2110,0x2110,0x210F,0x2110,0x2930,0x2930,0x210F,0x2910,0x2110,0x2110,0x2110,0x2130,0x2930,0x2130,0x210F,0x2910,0x210F,0x2930,0x210F,0x2910,0x210F,0x212F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x290F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x210F,0x2110,0x2110,0x2930,0x2910,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x292F,0x292F,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x1930,0x1910,0x1930,0x1930,0x1930,0x2130,0x2130,0x2130,0x2130,0x2110,0x212F,0x210F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2110,0x2110,0x2110,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x2910,0x2930,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2110,0x2130,0x2110,0x2130,0x2930,0x2110,0x2910,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x212F,0x2930,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x210F,0x290F,0x290F,0x212F,0x212F,0x292F,0x290F,0x292F,0x292F,0x210F,0x2110,0x2110,0x2110,0x2131,0x2131,0x2131,0x1931,0x2131,0x1931,0x1930,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2930,0x2930,0x292F,0x292F,0x290F,0x28EF,0x288D,0x512F,0xBBB8,0xBB56,0xB2F4,0xAAD4,0x9AD3,0xABF6,0xDF1F,0xC73F,0xBF3E,0xB71E,0xB6FD,0xAEFD,0xAF1D,0xAF1D,0xAF1D,0xAEFD,0xAEFD,0xAF1E,0xB73E,0xBF5F,0xCF1F,0xA497,0x79F0,0x99D2,0xA1D2,0xB1F3,0xB213,0xB9F3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1F3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xB9B2,0xA9F2,0xA293,0xDD9C,0xD6DF,0xC6FE,0xB6DD,0xB6FE,0xB71E,0xB71E,0xAEFE,0xAEFD,0xAEFD,0xAF1D,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xAEFD,0xAF1D,0xAF1D,0xB73E,0xBF5E,0xCF3F,0xD65E,0x92F3,0x91F2,0xA9D2,0xB1D3,0xB9F3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC9D3,0xC9F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xB1F2,0x9A12,0xDD3C,0xD6DF,0xC71F,0xB6FE,0xB71E,0xAF1E,0xAF1E,0xAF1E,0xAEFE,0xAF1E,0xAEFD,0xAEFD,0xAEFE,0xAEFD,0xAF1E,0xAF1E,0xAF1E,0xAF1E,0xB73E,0xBF1E,0xCF1F,0xDE3E,0x92D3,0x99F2,0xA9D3,0xB1D3,0xB9D3,0xB9F3,0xB9F3,0xC1F3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9B3,0xB9D3,0xA9B2,0x91D0,0xCDBC,0xCEDE,0xBEFE,0xBF1E,0xB6FE,0xB6FE,0xB71E,0xB71E,0xB71E,0xBEFE,0xC6FF,0xD6DF,0xD5FD,0x9333,0x81D0,0x99D1,0xA1B2,0xA9B2,0xB1B2,0xB1B2,0xB9B2,0xB9B3,0xB9B3,0xB9B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC193,0xC193,0xC1B3,0xC193,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC193,0xC193,0xB9B3,0xB9B3,0xB9B3,0xB9B2,0xB1B2,0xA9D2,0xA1F2,0x9A11,0x89F0,0xC499,0xDE5E,0xD6FF,0xC6FF,0xBF1E,0xB71E,0xB71E,0xB6FD,0xB71E,0xAEFD,0xAEFD,0xAF1D,0xAF1D,0xAEFD,0xAF1D,0xAF1D,0xA6FD,0xA6FD,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF3E,0xAF3E,0xAF1E,0xAF1E,0xAF1E,0xB73E,0xB73E,0xBF3E,0xC71F,0xD6DF,0xD61E,0xA3B5,0x81F0,0x91D1,0x99B1,0xA9B2,0xB1D3,0xB1B2,0xB1B3,0xB9B3,0xB9B3,0xB9B3,0xC1B3,0xC1B3,0xC1B3,0xC1D3,0xC1D3,0xC1B3,0xC1B3,0xC1D3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1D3,0xB9B3,0xB9B3,0xB9B3,0xB9B3,0xB992,0xB992,0xB192,0xA9B2,0xA1D2,0x99F1,0x8A10,0xCCFA,0xE69F,0xD6DF,0xCEFE,0xC6FE,0xC6FE,0xC6FE,0xC6FE,0xCEDF,0xD63E,0x8AF3,0x89F1,0x99D2,0xA9D2,0xB1F3,0xB9F3,0xC1F3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D4,0xC1F4,0xC1D3,0xB9F3,0xB1D3,0xA9B1,0x91D0,0xAC17,0xDEDF,0xCEFF,0xBF1E,0xBF1E,0xB6FE,0xB6FE,0xB71E,0xBF1E,0xC6FF,0xD69F,0x8333,0x81F1,0x91D1,0xA1D2,0xA1D2,0xA9D2,0xA9D2,0xA9B2,0xA9D2,0xB1D2,0xB1D2,0xB1D2,0xB1D2,0xB1B2,0xB1B2,0xA9B2,0xA9B2,0xA1D1,0x8A11,0xA477,0xCEDF,0xBEFE,0xB71E,0xAF1E,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xB73E,0xB73D,0xB73E,0xBF5F,0xC73F,0xD71F,0xD63E,0xA395,0x8A11,0x91D1,0x99B1,0xA1B2,0xA9D3,0xB1D3,0xB1B3,0xB9B3,0xB9B3,0xB9B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC193,0xC193,0xC1B3,0xC193,0xC193,0xC1B3,0xC193,0xC192,0xB992,0xB992,0xB9B2,0xB1B2,0xB1D2,0xA1B1,0xE3F9,0xFD7E,0xFD9E,0xFD3D,0xCB36,0xC2D4,0xCAD5,0xCAB5,0xCAB5,0xD2B5,0xD2B5,0xD2B5,0xD2B4,0xD2B4,0xD2B5,0xD2B4,0xDAB4,0xDAB5,0xDA94,0xDA94,0xDA94,0xDA94,0xDA94,0xD294,0xDA95,0xDA95,0xDAB5,0xDAB5,0xDAB5,0xD2B5,0xD2B6,0xD2D7,0xCAF8,0xC31A,0xB33C,0x30B5,0x2919,0x213A,0x215B,0x297B,0x297B,0x295A,0x3939,0x5916,0x9A5A,0xB238,0xB1D5,0xB9F5,0xC216,0xC9F5,0xC9F5,0xC1D5,0xB9D5,0xA9B4,0x91F5,0x7A97,0x73FC,0x651F,0x455F,0x2D3F,0x1D1E,0x0D1E,0x0D3D,0x053D,0x057B,0x065B,0x0F3B,0x0F7B,0x0F9B,0x0FBB,0x07BB,0x0F9B,0x177B,0x277C,0x3F3D,0x5EFE,0x653A,0x62B3,0x9253,0xA1F3,0xB1B3,0xB193,0xB9B3,0xB9B3,0xB993,0xB1B3,0xA111,0xC1F4,0xB9D4,0xB9D4,0xB1B3,0xB1D4,0xB235,0x99D4,0x502D,0x482D,0x384E,0x4110,0x4131,0x3110,0x3151,0x3151,0x3151,0x3150,0x2930,0x2930,0x2950,0x2950,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x2930,0x290F,0x2930,0x2930,0x210F,0x210F,0x2910,0x2910,0x290F,0x2930,0x290F,0x210F,0x2930,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2130,0x2130,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2110,0x2110,0x2130,0x2110,0x2131,0x1911,0x1112,0x1153,0x19B6,0x19F7,0x11B7,0x0996,0x0976,0x0976,0x0955,0x0955,0x0955,0x0976,0x0996,0x11D7,0x19D6,0x19B5,0x1974,0x2173,0x1932,0x1932,0x1931,0x1932,0x1932,0x1153,0x1133,0x1195,0x2218,0x21F7,0x19B5,0x0912,0x1111,0x1931,0x2150,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x1930,0x1931,0x1953,0x1174,0x19D6,0x19F8,0x1196,0x0955,0x1154,0x1133,0x1953,0x1952,0x1131,0x1132,0x1152,0x1174,0x19D6,0x19F7,0x11B6,0x1196,0x0975,0x0955,0x0934,0x0113,0x0934,0x0954,0x0996,0x11D7,0x11D7,0x11D6,0x1195,0x1153,0x1953,0x1932,0x1931,0x1932,0x1932,0x1133,0x1195,0x11D7,0x11D8,0x19D7,0x1175,0x1153,0x1952,0x1931,0x2130,0x2130,0x2110,0x210F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2930,0x2110,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2930,0x2930,0x2910,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2930,0x2910,0x2910,0x2110,0x2930,0x2910,0x210F,0x2930,0x290F,0x210F,0x2930,0x2110,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x2930,0x2110,0x2930,0x2930,0x2110,0x2110,0x2130,0x2110,0x2130,0x2131,0x2131,0x2131,0x1932,0x1932,0x1933,0x1133,0x1975,0x1975,0x1175,0x1175,0x1175,0x1196,0x1196,0x1176,0x1196,0x1195,0x1195,0x1195,0x1195,0x0975,0x0975,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1196,0x1175,0x1196,0x1175,0x1195,0x1195,0x1195,0x1175,0x1196,0x1196,0x1196,0x1196,0x1195,0x1195,0x1196,0x11B6,0x19D6,0x19B6,0x11B6,0x19B6,0x19D6,0x19B6,0x19B6,0x11B6, + 0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x292F,0x290F,0x210F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x210F,0x212F,0x292F,0x212F,0x292F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x210E,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2910,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1911,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2910,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x2930,0x2130,0x2130,0x210F,0x2110,0x2910,0x2910,0x210F,0x210F,0x290F,0x2910,0x210F,0x290F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x210F,0x2930,0x2110,0x2110,0x2930,0x2110,0x2930,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1951,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x28EF,0x288D,0x492F,0xB398,0xB335,0xAAD4,0xAAB3,0x9AB3,0xA3F6,0xDF1F,0xC71E,0xBF1E,0xB71E,0xB6FD,0xAEFD,0xAF1D,0xAF1D,0xAF1D,0xAEFD,0xAEFD,0xAF1D,0xB73E,0xBF3F,0xCF1F,0x9C77,0x81F0,0x99D2,0xA1F3,0xB1F3,0xBA13,0xB9F3,0xB9D3,0xC1D3,0xC1D3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xB9D2,0xA9F2,0xA2F4,0xDDFE,0xD6DF,0xBEFE,0xB6DD,0xB6FD,0xAF1E,0xAF1E,0xAEFD,0xAEFD,0xAEFD,0xAEFD,0xAEFD,0xAEFD,0xAEFD,0xAEFD,0xAEFD,0xAF1D,0xAEFD,0xAF1E,0xB73E,0xC73F,0xD69F,0x8B13,0x9212,0xA9F2,0xB1F3,0xB9D3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC9D3,0xC1D3,0xC9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xA9F2,0x9A72,0xDDBD,0xD6BF,0xBEDE,0xB6FE,0xAEFE,0xAF1E,0xAEFE,0xAF1E,0xAF1E,0xAF1E,0xA6FD,0xA6FD,0xA6FD,0xAEFD,0xAEFD,0xAF1E,0xAEFD,0xAF1E,0xB71E,0xB73E,0xC71F,0xDE7F,0x9313,0x9A12,0xA9D3,0xB1D3,0xB1D3,0xB9F3,0xB9D3,0xC1F3,0xC1F3,0xC1F3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xB9F3,0xA9B1,0x91F1,0xBD1A,0xCEBE,0xC6FE,0xBEFE,0xBEFE,0xBF1E,0xB6FE,0xB6FE,0xBEFE,0xC6DE,0xDEDF,0xB4F9,0x8A91,0x89F0,0x99D1,0xA9B2,0xB1B2,0xB1B2,0xB9B3,0xB9B3,0xB9B3,0xC1B3,0xC1D3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC9B3,0xC1B3,0xC1B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC1B3,0xC9B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xB9B3,0xB9B3,0xB1B2,0xB1D2,0xA9F2,0x9211,0x9B13,0xDDFD,0xDEFF,0xC6FE,0xBEFE,0xB71E,0xB71E,0xB71D,0xAEFD,0xAEFD,0xAEFD,0xAF1D,0xAEFD,0xA6FD,0xAF1D,0xA6FD,0xA6FD,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1E,0xAF1E,0xB73E,0xBF1E,0xC71F,0xD6FF,0xC57B,0x82B2,0x89F0,0x99D1,0xA1D2,0xA9D2,0xB1B3,0xB9B3,0xB9B3,0xB9B3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC9D3,0xC9D3,0xC1D3,0xC1D3,0xC9D3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xB9B3,0xB992,0xB992,0xB1B2,0xB1B2,0xA1D2,0x9211,0xA375,0xEE9F,0xDEBF,0xCEDE,0xCEFE,0xC6FE,0xC6FE,0xCEDF,0xD61E,0x8AF3,0x89F1,0x99D2,0xA9D2,0xB1F3,0xB9F3,0xC1F4,0xC1F3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC1D4,0xC1F4,0xC1F3,0xB9F3,0xB9F3,0xA9B1,0x91D1,0xAC17,0xE6DF,0xCEFF,0xBF1E,0xB6FE,0xB6FD,0xB6FE,0xB71E,0xBF1E,0xC71F,0xD69F,0x8B33,0x8A11,0x99F2,0xA1F2,0xA9F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB9F3,0xB9D3,0xB9F3,0xB9D3,0xB1D3,0xB1D3,0xA9D2,0xA1D2,0x9231,0xAC78,0xCEDF,0xBEFE,0xB71E,0xAF1E,0xAF1D,0xAF1D,0xAF1D,0xAEFD,0xAEFD,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xB73E,0xBF3E,0xC71F,0xD6FF,0xCDDD,0x8AF3,0x89F1,0x99D2,0xA1D2,0xA9D3,0xB1D3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xC1D3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC1B3,0xC1B3,0xC1B3,0xC192,0xC193,0xC1B3,0xB9B2,0xB9B2,0xB9D2,0xA9B2,0xC2D5,0xFD5E,0xFD7E,0xFD3D,0xCB76,0xC2B4,0xCAB4,0xCAB4,0xCAB5,0xCAB4,0xD2B5,0xD2B4,0xD2B4,0xD294,0xD294,0xD294,0xD294,0xDA94,0xDA94,0xDA94,0xD294,0xDA94,0xDA95,0xDA94,0xDA95,0xDA95,0xDA95,0xD295,0xD2B6,0xD2B6,0xCAB7,0xCAF8,0xC319,0xAB3C,0x30B5,0x2939,0x215A,0x215B,0x217B,0x299C,0x297B,0x313A,0x40F7,0x8A3A,0xAA59,0xB9F6,0xB1D5,0xC1D5,0xC1D5,0xC9F5,0xC1F5,0xB9D5,0xA9B4,0x91D4,0x7A76,0x6BBB,0x653F,0x457F,0x2D3F,0x1D3E,0x153E,0x0D3D,0x053D,0x057B,0x065B,0x0F3B,0x0F7B,0x0F9B,0x0FBB,0x07BB,0x0F9B,0x177C,0x277D,0x3F3D,0x66FE,0x6519,0x6AB3,0x9233,0xA1F3,0xB1B3,0xB9B4,0xB9B4,0xB9D4,0xB9B3,0xB1B3,0xA111,0xB9D4,0xB1B3,0xB1B3,0xB1B3,0xB1D4,0xB256,0x8192,0x486E,0x48AF,0x40F0,0x4110,0x3951,0x3951,0x3151,0x3150,0x2950,0x3150,0x2950,0x3150,0x2950,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x210F,0x2930,0x290F,0x2910,0x2930,0x290F,0x2930,0x2930,0x290F,0x210F,0x290F,0x2930,0x292F,0x292F,0x292F,0x290F,0x2110,0x2110,0x2110,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x212F,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x1931,0x1111,0x1133,0x19B5,0x19F7,0x11B7,0x0976,0x0956,0x0935,0x0955,0x0955,0x0955,0x0975,0x0995,0x11D6,0x19D6,0x19B6,0x1174,0x1953,0x1932,0x1931,0x1932,0x1932,0x1932,0x1153,0x1133,0x19B6,0x19F7,0x21F7,0x19B6,0x0912,0x1111,0x1931,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2131,0x1931,0x1953,0x1174,0x19B6,0x21F8,0x19D7,0x0955,0x1154,0x1133,0x1953,0x1952,0x1132,0x1132,0x1153,0x1174,0x19D6,0x19F7,0x19F7,0x11B6,0x1175,0x0975,0x0954,0x0954,0x0954,0x0975,0x11B6,0x11D7,0x19F7,0x19D6,0x1995,0x1153,0x1952,0x1931,0x1931,0x1931,0x1932,0x1153,0x1196,0x11D7,0x11F8,0x19F7,0x1195,0x1153,0x1932,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2930,0x2110,0x290F,0x290F,0x290F,0x290F,0x210F,0x2930,0x210F,0x2110,0x290F,0x290F,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x2930,0x210F,0x212F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2930,0x290F,0x292F,0x2110,0x2110,0x2930,0x2930,0x2110,0x2110,0x2130,0x2151,0x2131,0x2151,0x1931,0x1932,0x1933,0x1953,0x1975,0x21B6,0x21D7,0x21F8,0x2219,0x2218,0x21F8,0x2218,0x2239,0x2239,0x2238,0x2238,0x2259,0x1A38,0x2259,0x2239,0x1A19,0x2239,0x2239,0x2239,0x2219,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2259,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2239,0x2238,0x2239,0x2239,0x1A18,0x2239,0x1A18,0x1A18,0x19F8,0x1A18,0x1A18,0x19F8,0x19F8, + 0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x210F,0x2110,0x2130,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2930,0x210F,0x210F,0x290F,0x212F,0x210F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2110,0x2930,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x290F,0x2930,0x2130,0x2130,0x2131,0x1911,0x1931,0x1952,0x1952,0x1952,0x1132,0x1932,0x1133,0x1132,0x1932,0x1131,0x1931,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x2130,0x210F,0x2930,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x290F,0x290F,0x210F,0x2910,0x210F,0x2910,0x212F,0x210F,0x212F,0x212F,0x2130,0x2110,0x2110,0x2930,0x2130,0x210F,0x2130,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2930,0x210F,0x290F,0x210F,0x290F,0x2930,0x290F,0x2930,0x2930,0x212F,0x292F,0x210F,0x212F,0x2930,0x212F,0x2930,0x210F,0x210F,0x2910,0x2910,0x2110,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x2151,0x1931,0x2151,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x290F,0x28EF,0x28AD,0x512F,0xB377,0xB315,0xAAD4,0xAAB4,0x9AB3,0xA3B5,0xDF1F,0xC6FE,0xBEFE,0xB71E,0xAEDD,0xAEDD,0xAEFD,0xAF1D,0xAF1D,0xA6FD,0xA6FD,0xAF1D,0xB73E,0xBF3F,0xCF3F,0x9C97,0x8210,0x99F2,0xA1F2,0xB1F3,0xBA13,0xB9F3,0xB9D3,0xC1D3,0xC1F3,0xC1D3,0xC9F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9D2,0xA9F2,0xA2F4,0xD59C,0xD6DF,0xBEFE,0xB6DD,0xAEFD,0xAEFD,0xAEFD,0xA6FD,0xA6DD,0xA6DD,0xA6FD,0xA6FD,0xAEFD,0xAEFD,0xAEFD,0xA6FD,0xAF1D,0xAF1D,0xAF1D,0xB73E,0xC71F,0xD69F,0x8B13,0x8A11,0xA1F2,0xA9F3,0xB9F3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC1D3,0xC1D3,0xC1D3,0xB9D2,0xA9F2,0x9AB3,0xDDDD,0xD6BF,0xBEFE,0xB6FE,0xAF1E,0xAEFD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xAEFD,0xAF1E,0xAF1E,0xAF1E,0xB71E,0xC71F,0xD67E,0x9334,0x91F2,0xA9D3,0xB1D3,0xB1F3,0xB9F3,0xB9F3,0xC1F3,0xC1F3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xB9F3,0xA9B2,0x91F1,0xBCD9,0xCE9E,0xC6DE,0xBEFE,0xB6DE,0xBEFE,0xBEFE,0xBEDE,0xC6DE,0xD67E,0xB478,0x8210,0x91D1,0xA1B1,0xA9B2,0xB1D3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9B3,0xC9D3,0xC9D3,0xC9D3,0xC9D4,0xC9D4,0xC9D4,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC1B3,0xC1B3,0xC1D3,0xC1B3,0xC1B3,0xB9B3,0xB9D3,0xB1B2,0xA9F2,0xA1F1,0x8A31,0xC4FA,0xDE9F,0xC6DE,0xBEFE,0xB71E,0xB6FD,0xAEFD,0xAEFD,0xAEFD,0xAEFD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAF1D,0xAEFD,0xAF1D,0xB73E,0xB73E,0xBF1F,0xD6DF,0xBD3A,0x71CF,0x89F1,0x99D1,0xA9D2,0xB1D3,0xB1B3,0xB9D3,0xB9B3,0xC1D3,0xC1D3,0xC1D4,0xC1D4,0xC9D3,0xC9D3,0xC9D4,0xC9D4,0xC9D4,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D4,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC1D3,0xC1D3,0xC1D3,0xC1B3,0xC1B3,0xC1B3,0xB993,0xB9B2,0xB1B2,0xA9D2,0x99F1,0x8A51,0xE5FE,0xDE9F,0xD6DE,0xCEDE,0xCEDE,0xD6BF,0xD61E,0x8AD3,0x89F1,0x99D1,0xA9D2,0xB1F3,0xB9F3,0xC1F4,0xC1F4,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1F4,0xC1F3,0xB9F3,0xB9F3,0xA9B1,0x99D1,0xAC17,0xDE9F,0xC6BE,0xBEFE,0xB6FD,0xB6FD,0xB6FD,0xB6FE,0xB71E,0xC6FF,0xD69F,0x82F2,0x8A11,0xA212,0xA9F3,0xAA13,0xB1F3,0xBA14,0xBA13,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9F3,0xB9D3,0xB9D3,0xB1B3,0xB1D3,0xA9D2,0x9231,0xAC57,0xCEDF,0xBEDE,0xB71E,0xAEFD,0xAEFD,0xAEFD,0xAEFD,0xAEFD,0xAEFD,0xAF1D,0xAF1D,0xAF1D,0xAF1E,0xB73E,0xC71E,0xD6DF,0xCDDD,0x7A31,0x89D1,0x99D2,0xA9B2,0xB1D3,0xB1D3,0xB1D3,0xB9D3,0xB9D4,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC9B3,0xC9D3,0xC9D3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9B3,0xC9B3,0xC9B3,0xC9D3,0xC9B3,0xC9B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xC1B3,0xB9B3,0xB9D3,0xB1D2,0xB233,0xFD3E,0xFD7E,0xFD7E,0xD3B7,0xBA94,0xC2B4,0xCA94,0xCA94,0xCAB4,0xCA94,0xD294,0xD294,0xD294,0xD294,0xD294,0xD294,0xD294,0xDA94,0xDA74,0xDA74,0xDA74,0xDA74,0xDA74,0xD274,0xDA95,0xD295,0xD275,0xD296,0xD2B7,0xCAD8,0xC2F9,0xB35C,0x30B5,0x2939,0x215A,0x195B,0x217C,0x219C,0x217B,0x295A,0x3919,0x6137,0xB27A,0xBA17,0xB1B5,0xB9D5,0xC1B5,0xC9F5,0xC1F5,0xC1F5,0xB1D4,0x99F4,0x7A36,0x6B59,0x655F,0x459F,0x2D7F,0x1D5E,0x155E,0x0D3D,0x055D,0x059C,0x065B,0x0F1B,0x0F5B,0x0F9A,0x07BB,0x0FBB,0x0F9B,0x175B,0x277D,0x473E,0x66DE,0x64D9,0x6AB3,0x9233,0xA9F3,0xB1D4,0xB1B4,0xB9B4,0xB193,0xB9B4,0xB1D4,0xA152,0xB9F4,0xB1D4,0xB1B3,0xB1D4,0xA9D4,0xAA55,0x7151,0x50CF,0x4910,0x4130,0x4131,0x3951,0x3951,0x3151,0x3151,0x3171,0x3150,0x3151,0x2950,0x3150,0x3131,0x3131,0x3130,0x3130,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x2910,0x210F,0x2110,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2131,0x1911,0x1111,0x1153,0x21F7,0x19F7,0x11D7,0x1196,0x0955,0x0955,0x0955,0x0934,0x0955,0x0955,0x0995,0x11D6,0x19D6,0x19B5,0x1974,0x1932,0x1932,0x1911,0x1931,0x1931,0x1932,0x1153,0x1133,0x21F7,0x21F7,0x2217,0x19B5,0x0912,0x1112,0x1931,0x2130,0x2130,0x292F,0x210F,0x210E,0x210F,0x210F,0x2130,0x2130,0x2131,0x1932,0x1953,0x1994,0x1196,0x19F7,0x19F7,0x1175,0x1154,0x1154,0x1153,0x1132,0x1132,0x1132,0x1133,0x1174,0x19B5,0x19F7,0x1A17,0x19F7,0x11B6,0x1196,0x0975,0x0975,0x1196,0x11D6,0x19F7,0x11D7,0x19F7,0x19D6,0x1174,0x1152,0x1952,0x1931,0x1931,0x1911,0x1112,0x1133,0x1196,0x11F7,0x11F8,0x11D7,0x19B5,0x1153,0x1932,0x1931,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2110,0x2930,0x290F,0x210F,0x290F,0x290F,0x2930,0x210F,0x2110,0x2930,0x290F,0x290F,0x290F,0x210F,0x2930,0x2930,0x2910,0x2910,0x2910,0x2910,0x2930,0x2910,0x2930,0x2910,0x2930,0x2910,0x210F,0x210F,0x2910,0x2910,0x210F,0x212F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x2930,0x2910,0x2910,0x2930,0x2130,0x2130,0x2131,0x2151,0x2151,0x1931,0x1932,0x1953,0x1974,0x19B6,0x21D6,0x21F7,0x19B7,0x21F8,0x21F8,0x21F8,0x2218,0x2218,0x2238,0x2238,0x2218,0x2238,0x2238,0x2238,0x2239,0x2239,0x2238,0x1A18,0x1A18,0x1A19,0x1A18,0x1A18,0x2219,0x2218,0x1A18,0x1A18,0x1A18,0x1A18,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x19F8,0x2218,0x2218,0x19F8,0x19F7,0x2218,0x2218,0x2218,0x1A18,0x1A18,0x19F8,0x1A18,0x1A18,0x19F8,0x19F8,0x19F8, + 0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2910,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2910,0x2910,0x2110,0x2110,0x2930,0x210F,0x212F,0x212F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x290F,0x2910,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x290F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2930,0x212F,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2950,0x2930,0x292F,0x292F,0x2930,0x2130,0x2130,0x2131,0x1931,0x1932,0x1953,0x1973,0x1974,0x1974,0x1995,0x1995,0x19B5,0x19B5,0x19B5,0x1974,0x1132,0x1111,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2110,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x290F,0x210F,0x210F,0x2130,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x210F,0x2930,0x210F,0x212F,0x212F,0x2110,0x2930,0x210F,0x2110,0x2130,0x2130,0x2110,0x210F,0x292F,0x212F,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x210F,0x212F,0x290F,0x290F,0x292F,0x292F,0x2930,0x212F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x212F,0x212F,0x210F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2131,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1952,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x28EE,0x28AD,0x512F,0xB378,0xB315,0xAAD4,0xAAB4,0x9A93,0xA395,0xDEFF,0xBEDE,0xBEFE,0xB6FD,0xAEDD,0xAEDD,0xAF1D,0xAF1D,0xA6FD,0xA6FD,0xA6FD,0xAEFD,0xB73E,0xBF3E,0xCF1F,0x9456,0x8210,0x99F2,0xA1F2,0xB213,0xBA13,0xB9F3,0xC1D3,0xC1F3,0xC9F4,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1F3,0xC1D3,0xB9B2,0xA9F2,0x9AD3,0xCD9C,0xCEDF,0xBEFE,0xB6FE,0xAEDD,0xAEFD,0xAEFD,0xA6DD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xAEFD,0xA6FD,0xA6DD,0xA6FD,0xA6FD,0xAEFD,0xAF1D,0xB73E,0xBF1F,0xD69F,0x8313,0x8A31,0xA1F2,0xA9F3,0xB9F3,0xB9D3,0xC1D3,0xC1D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC1D3,0xC1D3,0xC1F3,0xB9D2,0xA9F2,0xA2F4,0xE61E,0xCEBF,0xBEDE,0xB6DE,0xAEFE,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6DD,0xA6DD,0xA6FD,0xAEFD,0xAF1D,0xAF1D,0xB71E,0xC6FE,0xD67E,0x9354,0x9212,0xA9D3,0xA9F3,0xB1F3,0xB9F3,0xB9F3,0xC1F3,0xC1F3,0xC1F3,0xC1D3,0xC9F3,0xC9F3,0xC1D3,0xC1D3,0xB9F3,0xBA13,0xB1D2,0x99F1,0xBCB9,0xD67E,0xC6BE,0xBEDE,0xBEDE,0xBEDE,0xBEDE,0xC6BE,0xDE9F,0x9BB5,0x8211,0x99D1,0xA1D2,0xA9D2,0xB1D3,0xB9D3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9B3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9B3,0xC9B3,0xC9D3,0xC9D3,0xC9D3,0xC1D3,0xC1D3,0xC1D3,0xC1D3,0xC1B3,0xB9B2,0xB9B2,0xB1D2,0xA1F2,0x9251,0xC51A,0xDEDF,0xC6DE,0xBEFE,0xB6FD,0xB6FD,0xAEFD,0xAEFD,0xAEFD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xAEFD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xAF1E,0xAF1E,0xB71E,0xBF1F,0xD6FF,0xB4FA,0x7A30,0x91F1,0x99B1,0xA9D2,0xB1D2,0xB9D3,0xB9F3,0xB9D3,0xC1D3,0xC1D3,0xC1D3,0xC9D4,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D4,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC1D3,0xC1D3,0xC1B3,0xC1B3,0xC193,0xB993,0xB9B2,0xB1B2,0xA1F2,0x9272,0xDDBD,0xDE9F,0xD6BE,0xCEBE,0xD69F,0xDDFE,0x8AD3,0x89F1,0x99D2,0xA9F2,0xB1F3,0xB9F3,0xC1F4,0xC1F4,0xC1F4,0xC9F3,0xC1D3,0xC1D3,0xC1D3,0xC1F4,0xC1F3,0xB9F3,0xB9F3,0xA9B1,0x99D1,0xAC17,0xDE9F,0xC6DE,0xBEDE,0xB6DD,0xB6DD,0xB6DD,0xB6FD,0xB6FE,0xC6FE,0xD67E,0x82F3,0x9232,0xA1F2,0xAA13,0xB213,0xB213,0xBA13,0xBA14,0xB9F3,0xB9F3,0xB9F3,0xC1F3,0xC1F4,0xC1F3,0xB9D3,0xB9D3,0xB1F3,0xA9F2,0x9A32,0xAC78,0xCEBF,0xBEFE,0xB6FE,0xAEFD,0xAEFD,0xAEFD,0xAEFD,0xAEFD,0xAEFD,0xAF1D,0xAF1D,0xAF3E,0xB73E,0xBF1E,0xCEFF,0xBD5B,0x8271,0x89D1,0xA1B2,0xA9B2,0xA9B2,0xB1D3,0xB9D3,0xB9D4,0xB9D4,0xC1D4,0xC1D4,0xC1D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9B3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9B3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC1B3,0xC1B3,0xC1D3,0xB9D3,0xB1F2,0xBA94,0xFD3E,0xFD7E,0xFD7E,0xDBD8,0xBA93,0xC294,0xCA94,0xCA74,0xCA74,0xCA74,0xD274,0xD274,0xD274,0xD274,0xD294,0xD274,0xD274,0xD274,0xD274,0xD274,0xD274,0xD274,0xD274,0xD274,0xD275,0xD275,0xD296,0xD2B7,0xCAD8,0xC2F9,0xAB1C,0x30B6,0x293A,0x215B,0x195B,0x197C,0x217C,0x219C,0x297B,0x313A,0x40B6,0xB2BB,0xBA38,0xB1B5,0xB9D6,0xC1D5,0xC1D5,0xC1D5,0xC1F5,0xB1D4,0x99F4,0x7A15,0x62F8,0x653E,0x459F,0x2D7F,0x1D7E,0x155E,0x0D5D,0x055D,0x059C,0x063B,0x06FB,0x0F5B,0x0F9A,0x0FBB,0x0FBB,0x0F9B,0x177B,0x275C,0x3F1D,0x66DE,0x64B8,0x6A92,0x9A53,0xA1F3,0xB1D3,0xB193,0xB1B4,0xB9B4,0xB9F4,0xA993,0xA152,0xBA15,0xB1D3,0xB1B4,0xA9B3,0xA9F4,0xA255,0x58AF,0x50F0,0x4930,0x4130,0x3951,0x3951,0x3971,0x3151,0x3150,0x3171,0x3151,0x3151,0x2930,0x2930,0x2930,0x2930,0x2930,0x3130,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2910,0x2910,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x292F,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x1931,0x1911,0x1953,0x21D6,0x19F7,0x11D7,0x1196,0x0955,0x0955,0x0954,0x0934,0x0954,0x0955,0x0996,0x11D6,0x19F7,0x19B5,0x1173,0x1953,0x1932,0x1931,0x1911,0x1931,0x1952,0x1133,0x1133,0x19D6,0x2218,0x2217,0x19B5,0x0912,0x1111,0x1931,0x2130,0x2130,0x212F,0x210F,0x210F,0x290F,0x290F,0x2130,0x2110,0x2131,0x1932,0x1953,0x1994,0x1195,0x19D7,0x2218,0x1196,0x1155,0x1134,0x1133,0x1132,0x1132,0x1132,0x1132,0x1174,0x1194,0x19B6,0x19D7,0x19F7,0x19D7,0x11B6,0x11B6,0x11B6,0x11D6,0x11D6,0x19F7,0x19F7,0x19D7,0x19B5,0x1973,0x1132,0x1931,0x1931,0x1931,0x1931,0x1132,0x1133,0x11B6,0x1A18,0x19F8,0x19F7,0x19D6,0x1153,0x1931,0x1931,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2930,0x2110,0x290F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x290F,0x2930,0x290F,0x2110,0x2110,0x290F,0x290F,0x2910,0x2910,0x2910,0x210F,0x2910,0x2930,0x2910,0x2910,0x2930,0x2930,0x2910,0x2910,0x210F,0x210F,0x290F,0x2930,0x292F,0x290F,0x2930,0x210F,0x210F,0x290F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2951,0x2151,0x2151,0x1931,0x1932,0x1953,0x1994,0x19B6,0x21F7,0x21F7,0x21F7,0x21F7,0x21F7,0x21D7,0x21D7,0x21D7,0x19B6,0x19B6,0x1995,0x1995,0x1995,0x1195,0x1195,0x1195,0x1195,0x1195,0x19B6,0x1195,0x1196,0x19B6,0x1196,0x1195,0x1195,0x1195,0x1195,0x1195,0x1996,0x1195,0x1995,0x1195,0x1195,0x1195,0x1195,0x1195,0x1995,0x1195,0x1995,0x1175,0x1995,0x1995,0x1995,0x1995,0x1195,0x1195,0x1195,0x19B6,0x1196,0x1195,0x1196,0x1196,0x1196, + 0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2110,0x2110,0x2110,0x2910,0x2930,0x2930,0x290F,0x2930,0x290F,0x2910,0x2910,0x2930,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2930,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2930,0x2930,0x2930,0x2130,0x2131,0x1931,0x1932,0x1953,0x1153,0x1995,0x19B6,0x19B6,0x19D7,0x19D7,0x19F7,0x19F7,0x19F7,0x19D6,0x1995,0x1153,0x1932,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2930,0x212F,0x212F,0x2930,0x290F,0x290F,0x290F,0x2910,0x2930,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x2910,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x210F,0x290F,0x290F,0x2910,0x2110,0x212F,0x212F,0x212F,0x2930,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x290F,0x290F,0x2930,0x292F,0x292F,0x292F,0x2930,0x2910,0x2910,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x2130,0x2930,0x2930,0x212F,0x2930,0x2130,0x2130,0x2150,0x2130,0x2130,0x1931,0x1931,0x1931,0x1931,0x1932,0x1952,0x1952,0x1932,0x1932,0x1132,0x1932,0x1932,0x1931,0x1931,0x1911,0x2131,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x28EE,0x28AD,0x512F,0xB377,0xB2F5,0xAAB4,0xAAB4,0x9A93,0x9B54,0xDEFF,0xC6DE,0xB6DD,0xB6FD,0xAEDD,0xAEDD,0xAF1D,0xA6FD,0xA6FD,0xA6DC,0xA6DC,0xA6FD,0xAF1E,0xBF1E,0xCF1F,0x9416,0x8210,0x99F1,0xA1F2,0xB1F3,0xB9F3,0xC1F3,0xC1F3,0xC1F3,0xC9F3,0xC9F4,0xC9D3,0xC9D3,0xC9D3,0xC1D3,0xC1D3,0xC1F3,0xB1B2,0xA1D1,0xA2F4,0xD5BC,0xCEDF,0xBEFE,0xB6FD,0xAEFD,0xAEFD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6DC,0xA6FD,0xA6DD,0xA6DD,0xA6FD,0xAEFD,0xAF1D,0xAF1E,0xBF1F,0xCE7E,0x8313,0x8A11,0xA212,0xA9F3,0xB1F3,0xB9F3,0xC1F3,0xC1F3,0xC9F3,0xC9D3,0xC9F3,0xC9D3,0xC9F3,0xC9D3,0xC1D3,0xC1F3,0xC1F3,0xB9D2,0xA9F2,0x9AB3,0xD5BD,0xCEBF,0xBEDE,0xAEBD,0xAEDD,0xA6DD,0xA6DD,0xA6DC,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6DD,0xA6DD,0xA6FD,0xA6FD,0xA6FD,0xAEFD,0xB6FD,0xC6FE,0xCE7E,0x8B13,0x9212,0xA1D2,0xA9F3,0xB1F3,0xB9F3,0xC1F3,0xC1F3,0xC1F3,0xC1F3,0xC1F3,0xC9F3,0xC9F3,0xC9F3,0xC1D3,0xC1F3,0xBA13,0xB1D2,0x99F1,0xBCB9,0xCE7E,0xC6BE,0xBEDE,0xBEDE,0xC6DE,0xCEBF,0xD67F,0xA3D6,0x8211,0x99F1,0xA1D2,0xA9F2,0xB1F3,0xB9F3,0xB9F3,0xC1F3,0xC1D3,0xC1D3,0xC1D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D4,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xD1F4,0xC9D3,0xC9F4,0xC9D3,0xC9D3,0xC9F3,0xC9F3,0xC9F3,0xC9D3,0xC1D3,0xC1D3,0xB9D3,0xB9D3,0xB1D2,0xA1F2,0x8A10,0xC53A,0xD69E,0xC6DE,0xBEFE,0xB6FD,0xAEFD,0xAEFD,0xAEFD,0xA6DD,0xA6DD,0xA6DD,0xA6DD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xAEFD,0xAF1E,0xB73E,0xBF1E,0xCEFF,0xC5DC,0x69CF,0x89F1,0x99D1,0xA9D2,0xB1D2,0xB1D2,0xB9F3,0xC1F4,0xC1F3,0xC9F4,0xC9D4,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9B3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC1D3,0xC1D3,0xC1B3,0xB9B3,0xB9B3,0xB1D2,0xA212,0x8A10,0xEE3F,0xDE9F,0xD69E,0xDE7F,0xD5BD,0x92D3,0x89F1,0xA1F2,0xA9F2,0xB1F3,0xB9F3,0xC1F4,0xC1F4,0xC1F3,0xC9F3,0xC9D3,0xC9F3,0xC9D3,0xC9F4,0xC1F3,0xB9F3,0xBA13,0xA9B2,0x99F1,0xAC17,0xDE9F,0xC6BE,0xBEDE,0xB6BD,0xB6DD,0xB6DD,0xB6DD,0xB6DE,0xC6DE,0xCE5E,0x8313,0x9232,0xA213,0xAA13,0xB213,0xBA13,0xBA13,0xB9F3,0xC1F3,0xC1F3,0xC1F3,0xC1F4,0xC1F3,0xC1F4,0xC1F3,0xB9D3,0xB9D3,0xB1F2,0x9A32,0xAC77,0xCEDF,0xBEDE,0xB6FD,0xAEFD,0xAEFD,0xA6DC,0xAEFD,0xAEFD,0xAF1D,0xAF1D,0xAF1D,0xB73E,0xBF1E,0xCEDF,0xC59C,0x71F0,0x89D1,0x99D1,0xA9D2,0xB1F3,0xB1F3,0xB9F3,0xB9F4,0xC1F4,0xC1F4,0xC1F4,0xC9F4,0xC9F4,0xC9F4,0xC9F3,0xC9D3,0xC9D3,0xC9D4,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC9D3,0xC9D3,0xC9D3,0xC1D3,0xC1D3,0xC1D3,0xB9F3,0xB9F2,0xAA12,0xFD5E,0xFD9E,0xFD9E,0xC356,0xBA93,0xC294,0xC274,0xCA74,0xCA74,0xCA74,0xD254,0xD274,0xD274,0xD274,0xD274,0xD274,0xD274,0xD274,0xD274,0xD254,0xD254,0xD274,0xDA75,0xD275,0xD275,0xD276,0xD297,0xCAB8,0xC2D9,0xB33D,0x30B6,0x293A,0x215B,0x195B,0x197C,0x197C,0x199C,0x219C,0x315B,0x40F7,0x921A,0xBA59,0xB1D6,0xB9D6,0xB9D5,0xC1D5,0xC1D5,0xC1F5,0xB1F4,0xA215,0x81F5,0x6297,0x64DD,0x459F,0x359F,0x1D9F,0x157E,0x0D5D,0x055D,0x059C,0x063A,0x0EFB,0x0F5B,0x0F9A,0x0FDB,0x0FBB,0x0F9B,0x177B,0x2F5C,0x473D,0x6EBE,0x6498,0x7292,0x9A53,0xA9F3,0xB1B3,0xB9D4,0xB9F4,0xB1B3,0xB1D4,0xA172,0x9952,0xBA15,0xB1F4,0xB1F4,0xB215,0xA9D4,0x9A15,0x484D,0x4910,0x4951,0x4151,0x3951,0x3931,0x3951,0x3151,0x3150,0x3150,0x3151,0x2951,0x2930,0x2930,0x2930,0x3130,0x3130,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x2910,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2930,0x290F,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2910,0x2930,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x210F,0x290F,0x212F,0x2130,0x2130,0x2110,0x2930,0x210F,0x210F,0x2930,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1153,0x19D6,0x19F7,0x11F7,0x0996,0x0955,0x0975,0x0954,0x0934,0x0954,0x0955,0x1196,0x11D7,0x11D6,0x19B5,0x1174,0x1953,0x1932,0x2152,0x1931,0x1932,0x1932,0x1112,0x0912,0x19B5,0x2217,0x2217,0x19B6,0x1133,0x1111,0x1931,0x2130,0x2130,0x292F,0x292F,0x290F,0x210F,0x210F,0x2130,0x2130,0x1911,0x1931,0x1953,0x1994,0x1995,0x19F7,0x2218,0x11B6,0x0955,0x0954,0x1132,0x1132,0x1131,0x1932,0x1132,0x1133,0x1153,0x1195,0x19B6,0x19D7,0x11B7,0x11B7,0x19D7,0x11D7,0x11B6,0x19D7,0x19D7,0x19D7,0x1995,0x1154,0x1132,0x1911,0x1931,0x1931,0x1931,0x1911,0x1132,0x1174,0x11B6,0x1A18,0x19F8,0x19D7,0x1195,0x1133,0x1931,0x1930,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x290F,0x210F,0x212F,0x2110,0x2110,0x2110,0x2110,0x290F,0x210F,0x290F,0x2930,0x210F,0x2930,0x210F,0x210F,0x290F,0x2930,0x290F,0x2910,0x210F,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x2930,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x2930,0x2930,0x210F,0x2930,0x290F,0x2930,0x2110,0x2110,0x2131,0x2131,0x2131,0x1932,0x1112,0x1132,0x1153,0x1995,0x19D6,0x2217,0x21F7,0x19D6,0x1995,0x1154,0x1133,0x1112,0x1112,0x10F2,0x10F2,0x10F1,0x10F1,0x10F1,0x10F1,0x1111,0x1111,0x1112,0x1112,0x0912,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1932,0x1112,0x1112,0x1932,0x1132,0x1132,0x1953,0x1132,0x1132,0x1132,0x1112,0x1112,0x1112, + 0x2110,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2110,0x2930,0x2910,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x2910,0x2910,0x2910,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2930,0x290F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x210F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2151,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x1154,0x1175,0x1196,0x11B6,0x19D7,0x19F8,0x11F8,0x1A18,0x11F8,0x11F8,0x11D7,0x19D6,0x19B5,0x1953,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x2930,0x210F,0x2130,0x212F,0x212F,0x2930,0x210F,0x210F,0x2910,0x210F,0x2930,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x2930,0x2910,0x2910,0x210F,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2930,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x292F,0x212F,0x212F,0x292F,0x292F,0x210F,0x212F,0x210F,0x292F,0x292F,0x212F,0x2930,0x210F,0x292F,0x292F,0x292F,0x212F,0x2930,0x2930,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1931,0x1932,0x1952,0x1973,0x1973,0x1973,0x1973,0x1973,0x1973,0x1953,0x1132,0x1132,0x1911,0x1931,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x28EE,0x288D,0x512F,0xB357,0xB2F5,0xAAB4,0xAA94,0xA293,0x9B34,0xE6FF,0xBEDD,0xB6DD,0xB6FD,0xAEDD,0xAEDC,0xA6FD,0xA6FD,0xA6DC,0xA6DC,0xA6DC,0xA6DD,0xAEFD,0xBEFE,0xCEFF,0x9415,0x8210,0x99D1,0xA1F2,0xB1F3,0xB9F3,0xC1F3,0xC1F3,0xC1F3,0xCA14,0xCA14,0xC9F3,0xC9F3,0xC9D3,0xC9F3,0xC1F3,0xC1F3,0xB1D2,0xA212,0x9AF3,0xCDBC,0xCEBE,0xB6FE,0xB6FD,0xAEFD,0xA6DD,0xA6DD,0xA6DC,0xA6FD,0xA6FD,0xA6FD,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DD,0xAEFD,0xAEFD,0xAEFD,0xAEFD,0xBEFE,0xCE7E,0x82F3,0x8A11,0xA1F2,0xA9F3,0xB9F3,0xC1F3,0xC1F3,0xC1F3,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC9D3,0xC9F3,0xC9F3,0xC1F3,0xC1F3,0xB9D2,0xA9F2,0x9AD3,0xD59C,0xCEBE,0xBEDE,0xAEBD,0xAEDD,0xA6DD,0xA6DC,0xA6DC,0xA6DC,0xA6FD,0xA6FD,0xA6FD,0xA6FD,0xA6DD,0xA6DD,0xA6FD,0xA6FD,0xA6FD,0xAEFD,0xAEFD,0xBEFE,0xCE5E,0x8B13,0x9212,0xA1F2,0xA9F3,0xB1F3,0xB9F3,0xC1F3,0xC1F3,0xC1F3,0xC1F3,0xC1F3,0xC9F3,0xC9F3,0xC9F3,0xC1F3,0xC1F3,0xBA13,0xB1D2,0x9A11,0xC4D9,0xD67E,0xC6BE,0xC6BE,0xC6DE,0xCE9E,0xDE7F,0xA3F6,0x8211,0x99F1,0xA1D2,0xA9D2,0xB1F3,0xB9F3,0xB9F3,0xC1F3,0xC1F3,0xC1F3,0xC9F3,0xC9D3,0xC1D3,0xC9D3,0xC9F3,0xC9F3,0xC9D3,0xC9D4,0xC9D4,0xC9D4,0xC9D3,0xC9D4,0xC9D3,0xC9D3,0xC9D4,0xC9D4,0xC9F4,0xC9D3,0xC9D3,0xD1F4,0xC9F3,0xC9D3,0xC9D3,0xC9D3,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC1F3,0xC1F3,0xC1F3,0xB9D3,0xB1D2,0xA1F1,0x9271,0xCD5B,0xD6BF,0xC6DE,0xB6DD,0xAEDD,0xAEFD,0xAEDD,0xAEDD,0xA6DD,0xA6DD,0xA6DD,0xA6DD,0xA6DD,0xA6DD,0xA6DD,0xA6FD,0xA6FD,0xAF1D,0xAF1E,0xB71E,0xC6FF,0xC5FD,0x7A91,0x8A11,0x99D1,0xA9F2,0xB1D2,0xB9F3,0xB9F3,0xC214,0xC1F4,0xC9F4,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9F4,0xC9D4,0xC9D3,0xC9D3,0xC9D3,0xC9B3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9F3,0xC9F3,0xC9F4,0xC9F3,0xC9D3,0xC9D3,0xC1D3,0xC1D3,0xC1D3,0xB9D3,0xB1D2,0xA212,0xA335,0xEE1F,0xDE5F,0xDE5F,0xDDBD,0x92D4,0x91F1,0xA1D2,0xA9F2,0xB213,0xBA13,0xC214,0xC1F4,0xC1F3,0xC9F3,0xC9D3,0xC9F3,0xC9F4,0xC9F3,0xC1F3,0xC213,0xBA13,0xA9D2,0x99F1,0xB437,0xDE9F,0xC6BE,0xBEDD,0xB6BD,0xB6BD,0xB6DD,0xB6DD,0xB6DD,0xC6DE,0xCE5E,0x8313,0x9232,0xA212,0xAA13,0xB213,0xBA13,0xBA13,0xB9F3,0xC1F3,0xC1F3,0xC1F3,0xC1F3,0xC1F3,0xC1F3,0xC1F3,0xB9F3,0xB9F3,0xB1F2,0x9A31,0xAC78,0xCEBE,0xBEDD,0xB6FD,0xAEFD,0xAEDC,0xAEDC,0xAEFD,0xAEFD,0xAEFD,0xAF1D,0xAF1D,0xB71E,0xC6FF,0xBDBB,0x82B2,0x89F1,0x99B1,0xA9D2,0xB1F3,0xB9F3,0xB9F3,0xC1F3,0xC1F3,0xC1F4,0xC1F4,0xC9F3,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D4,0xC9D4,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9D3,0xC9F3,0xC9D3,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC9F4,0xC9F4,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC1F3,0xC1F3,0xC1F3,0xB212,0xBAD4,0xFD7E,0xFDBE,0xFD9E,0xBAD4,0xBA73,0xC274,0xC274,0xCA74,0xCA74,0xCA54,0xD254,0xD274,0xD274,0xD254,0xD254,0xD254,0xD254,0xD274,0xD254,0xD254,0xD254,0xD255,0xD255,0xD255,0xD276,0xD297,0xCAB8,0xC2D9,0xAAFC,0x38B6,0x2919,0x215B,0x217C,0x197C,0x197C,0x199C,0x197C,0x297B,0x3918,0x7178,0xB25A,0xB218,0xB9F6,0xB9D5,0xC1D5,0xC1F5,0xC1D4,0xB1F4,0xA215,0x89F5,0x6276,0x5C7C,0x4D9F,0x359F,0x1D9F,0x157E,0x0D7D,0x057D,0x059C,0x063A,0x06DA,0x0F5B,0x0F9A,0x0F9A,0x0FBB,0x0F7B,0x1F7B,0x2F5C,0x4F3D,0x6EBE,0x6457,0x7292,0x9A33,0xA9F3,0xB1D4,0xB1D4,0xB9D4,0xB1B4,0xB1D4,0xA172,0x9952,0xB1F4,0xB1F4,0xB1F4,0xB1F4,0xA9F4,0x91F4,0x50AF,0x4910,0x4151,0x3951,0x3931,0x3971,0x3151,0x3151,0x3171,0x2971,0x2950,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x210F,0x290F,0x290F,0x2930,0x210F,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x290F,0x210F,0x212F,0x2130,0x2110,0x2130,0x2130,0x210F,0x2930,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1911,0x1153,0x19D6,0x19F7,0x11F7,0x1196,0x0976,0x0975,0x0975,0x0954,0x0134,0x0955,0x11B6,0x19D7,0x19D6,0x1195,0x1173,0x1952,0x1932,0x2152,0x1951,0x1932,0x1932,0x1132,0x1113,0x1995,0x21F7,0x21F7,0x19B6,0x1112,0x1111,0x2151,0x2150,0x2130,0x212F,0x210F,0x290F,0x290F,0x2930,0x2130,0x2110,0x2111,0x1931,0x1932,0x1974,0x1175,0x19B6,0x2218,0x19F7,0x0975,0x0954,0x1133,0x1132,0x1952,0x1931,0x1132,0x1132,0x1953,0x1153,0x1175,0x19B6,0x11B6,0x19B6,0x11B6,0x11B6,0x19B6,0x19B6,0x1196,0x1195,0x1174,0x1953,0x1932,0x1931,0x1931,0x1931,0x1931,0x1112,0x1133,0x1175,0x19D7,0x1A18,0x19D7,0x11B6,0x1153,0x1132,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2110,0x2130,0x2110,0x210F,0x2930,0x2110,0x210F,0x2110,0x2110,0x210F,0x290F,0x290F,0x2930,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2910,0x2110,0x2930,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x210F,0x2930,0x210F,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2131,0x2131,0x1911,0x1112,0x1133,0x1154,0x19B5,0x21F7,0x21F7,0x19D6,0x19B5,0x1154,0x1133,0x1112,0x1111,0x10F1,0x1911,0x1911,0x18F1,0x18F0,0x1910,0x1910,0x1910,0x18F0,0x1910,0x1910,0x1911,0x1931,0x1911,0x1911,0x1931,0x1911,0x1911,0x18F1,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1931, + 0x2110,0x2110,0x2110,0x2110,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2110,0x2110,0x2110,0x2930,0x2910,0x2910,0x2910,0x2110,0x2110,0x2910,0x2910,0x210F,0x210F,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x2930,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x290F,0x2910,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x292F,0x212F,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2151,0x2151,0x2151,0x2151,0x2151,0x2131,0x2151,0x2131,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x1951,0x2151,0x1931,0x1931,0x2151,0x1931,0x2152,0x2131,0x2131,0x2151,0x2131,0x1931,0x1931,0x1931,0x1932,0x1133,0x1154,0x1175,0x1196,0x11B7,0x19F8,0x11F8,0x11B7,0x09B7,0x11D7,0x11F8,0x11F8,0x11F8,0x19F7,0x19B6,0x19B5,0x1953,0x1931,0x2131,0x2110,0x2110,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2110,0x2110,0x210F,0x2110,0x210F,0x212F,0x210F,0x2930,0x210F,0x2110,0x2930,0x2130,0x2930,0x210F,0x290F,0x290F,0x292F,0x292F,0x290F,0x2930,0x2930,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2930,0x210F,0x290F,0x210F,0x212F,0x292F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x292F,0x212F,0x212F,0x210F,0x2130,0x210F,0x2130,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1931,0x1931,0x1952,0x1952,0x1953,0x1974,0x1994,0x21D5,0x21F6,0x2A37,0x2216,0x21D5,0x1994,0x1973,0x1152,0x1952,0x1931,0x1931,0x2131,0x2130,0x2110,0x2130,0x212F,0x212F,0x292F,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x28EE,0x288D,0x512F,0xB337,0xB2D5,0xAA94,0xAA73,0xA273,0x9B13,0xE6FF,0xC6FE,0xBEDD,0xB6FD,0xAEBD,0xAEDC,0xA6DD,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DD,0xAEDD,0xBEFE,0xCEDF,0x93F5,0x8210,0x99F2,0xA1F2,0xB1F3,0xBA13,0xC214,0xC214,0xCA14,0xCA14,0xCA14,0xC9F4,0xC9F4,0xCA14,0xC9F3,0xC1F3,0xC213,0xB9F3,0xAA32,0xAB95,0xCDBC,0xC69E,0xB6DD,0xAEDD,0xAEDD,0xA6DD,0xA6DC,0xA6DC,0xA6DC,0xA6FC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xAEDD,0xAEDD,0xBEBE,0xCE5E,0x82F2,0x8A31,0x99F2,0xAA12,0xBA13,0xC213,0xC214,0xC9F4,0xC9F3,0xC9F4,0xC9F3,0xC9F4,0xC9F3,0xC9F3,0xC1F4,0xC214,0xC213,0xB9D2,0xAA12,0xA314,0xCD7C,0xCEBF,0xBEDE,0xB6DD,0xAEDD,0xA6DD,0xA6DD,0xA6DC,0x9EDC,0xA6DC,0x9EDC,0xA6DC,0xA6DC,0xA6DD,0xA6DD,0xA6FD,0xA6FD,0xA6FD,0xA6DD,0xAEFD,0xBEDE,0xCE5E,0x8B54,0x8A11,0xA212,0xA9F3,0xB1F3,0xBA14,0xC214,0xC214,0xC213,0xC9F3,0xCA13,0xC9F3,0xC9F3,0xC9F3,0xC1F3,0xC1F3,0xBA33,0xB1F2,0x91F1,0xDDBD,0xD67E,0xCE9E,0xC6BE,0xCE9E,0xDE7F,0xAC37,0x81F0,0x91F1,0xA1F2,0xA9F2,0xB1F3,0xBA13,0xC214,0xC214,0xC1F3,0xC1F3,0xCA14,0xC9F4,0xC9F4,0xCA14,0xC9F4,0xC9F4,0xC9F4,0xC9F3,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F3,0xC9F3,0xC9F3,0xC9F4,0xD1F4,0xC9F4,0xC9F4,0xC9F3,0xC9F3,0xCA14,0xCA13,0xC1F3,0xC1F3,0xB9F3,0xB1F2,0xA1F1,0x81F0,0xD5BC,0xCE9E,0xBEBE,0xB6DD,0xAEDD,0xAEDD,0xAEDC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DD,0xA6DD,0xA6FD,0xAEFD,0xAF1D,0xB71E,0xBEFE,0xD69F,0x82D2,0x81F0,0x99F1,0xA9F2,0xB1F3,0xB1F3,0xBA13,0xC214,0xC214,0xCA14,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xD1F4,0xC9F4,0xC9F4,0xD1F4,0xC9D3,0xC9D4,0xD1F4,0xC9D4,0xC9F4,0xC9F4,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC9F4,0xC9F4,0xCA14,0xC9F4,0xC9F4,0xC9F4,0xC9F3,0xC1F4,0xC1D3,0xC1F3,0xB9D3,0xB1F3,0xA232,0xCC39,0xEE3F,0xE61E,0xE5BE,0x9AF4,0x91F1,0xA1D2,0xA9F2,0xB213,0xC214,0xC214,0xC1F3,0xC9F3,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xCA14,0xC214,0xC214,0xBA13,0xB1F2,0x99F1,0xB437,0xDE9F,0xC6BE,0xBEDE,0xB6BD,0xB6BD,0xB6DD,0xB6DD,0xB6DD,0xC6DE,0xCE5E,0x82F3,0x8A31,0xA212,0xAA13,0xB233,0xBA13,0xBA13,0xC214,0xC214,0xC213,0xC1F3,0xCA13,0xC1F3,0xCA14,0xC1F3,0xC1F3,0xB9F3,0xB212,0xA272,0xB4B8,0xCE9E,0xBEDD,0xB6FD,0xAEDC,0xAEDC,0xAEDC,0xAEDC,0xAEDC,0xAEFD,0xAEFD,0xB71E,0xC6FE,0xCE7E,0x8B33,0x8A11,0x99F2,0xA9D2,0xB1F3,0xB9F3,0xBA13,0xC213,0xC1F4,0xC1F4,0xCA14,0xC9F4,0xCA14,0xC9F4,0xC9F4,0xC9F3,0xC9F4,0xC9F4,0xC9D4,0xD1D4,0xC9D3,0xC9D3,0xC9D4,0xC9D4,0xC9F4,0xC9D3,0xC9D3,0xC9D3,0xC9F3,0xC9F3,0xC9F4,0xC9F4,0xC9F3,0xC9F3,0xC9F4,0xC9F3,0xC9F4,0xCA14,0xCA14,0xCA14,0xC9F3,0xC9F3,0xC9F3,0xC1F3,0xC1F3,0xBA13,0xB212,0xD397,0xFDDF,0xFDDE,0xFDBE,0xBB14,0xBA93,0xC273,0xC254,0xCA54,0xCA54,0xCA54,0xD254,0xD254,0xD254,0xD254,0xD254,0xD254,0xD254,0xD254,0xD254,0xD254,0xDA55,0xDA55,0xD255,0xD256,0xD277,0xCA98,0xC2B9,0xAAFC,0x38B6,0x291A,0x215B,0x217C,0x197D,0x117D,0x199D,0x197C,0x297C,0x3939,0x5917,0x9A3A,0xB218,0xB9F7,0xC1D6,0xC1D5,0xC1F5,0xC1F5,0xB9F5,0xA9F5,0x91F5,0x6A76,0x53FA,0x4D5E,0x359F,0x1DBF,0x157E,0x0D7D,0x0D9D,0x05BC,0x063A,0x06DA,0x0F7B,0x0F9A,0x0F9A,0x0F9A,0x0F7A,0x1F5B,0x2F3C,0x4F1D,0x76BE,0x6457,0x7272,0x9A33,0xA1B2,0xB1D3,0xB1D4,0xB1B4,0xB1D4,0xB1F4,0x9952,0xA193,0xA9D4,0xA9D4,0xB1F4,0xA9D4,0xAA15,0x89B3,0x50F0,0x4931,0x4130,0x3951,0x3951,0x3951,0x3151,0x3171,0x2951,0x2951,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x2910,0x210F,0x290F,0x290F,0x2930,0x210F,0x2930,0x290F,0x290F,0x210F,0x210F,0x2910,0x210F,0x2910,0x290F,0x290F,0x2930,0x2910,0x210F,0x2930,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x18F0,0x10F1,0x1132,0x1995,0x19F6,0x19F7,0x11D7,0x11B7,0x11D7,0x09B6,0x0996,0x0976,0x09B6,0x11F7,0x1A17,0x19D6,0x1194,0x1152,0x1131,0x1931,0x1931,0x1931,0x1931,0x1932,0x1112,0x1113,0x21D6,0x2A38,0x2217,0x1995,0x1112,0x1111,0x1931,0x2130,0x2130,0x210F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2110,0x2131,0x2131,0x1932,0x1133,0x1154,0x1996,0x2218,0x1A18,0x0975,0x0934,0x0933,0x1132,0x1952,0x1952,0x1131,0x1932,0x1932,0x1933,0x1154,0x1174,0x1175,0x1175,0x11B5,0x11B5,0x1195,0x1975,0x1974,0x1154,0x1953,0x1932,0x1931,0x1911,0x1931,0x1951,0x1931,0x1132,0x1153,0x19B6,0x1A18,0x1A18,0x19F7,0x1195,0x0912,0x1111,0x1931,0x2130,0x2951,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x290F,0x2910,0x2910,0x2910,0x210F,0x2930,0x2930,0x290F,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2131,0x1911,0x1911,0x1112,0x1133,0x1174,0x19D6,0x21F7,0x21F7,0x19D6,0x1995,0x1153,0x1132,0x1112,0x1111,0x1931,0x1931,0x2131,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x1910,0x1930,0x2131,0x2131,0x1930,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2131,0x2110,0x2130,0x1910,0x2131,0x2131,0x2131,0x1910,0x2130,0x1930,0x1930,0x1910,0x2130,0x2110,0x2131,0x1910,0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2131,0x2130,0x2151,0x2151, + 0x2110,0x210F,0x2910,0x2910,0x2930,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x210F,0x2130,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x2930,0x2910,0x2110,0x2110,0x2910,0x2110,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x2910,0x290F,0x2910,0x2930,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x1911,0x2111,0x1911,0x2111,0x2131,0x2131,0x1931,0x1931,0x2131,0x2131,0x2131,0x1931,0x1931,0x2131,0x1931,0x2131,0x1931,0x1931,0x1931,0x2131,0x2131,0x2131,0x1931,0x1931,0x1931,0x1951,0x1931,0x2152,0x1931,0x2151,0x2151,0x2131,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1931,0x1931,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1911,0x1911,0x1111,0x1112,0x1133,0x1154,0x1175,0x11B6,0x11B7,0x11D7,0x11F8,0x09B7,0x0996,0x0996,0x0976,0x0996,0x09B7,0x11B7,0x19F8,0x11B6,0x19B5,0x1973,0x1932,0x2131,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x210F,0x2110,0x2910,0x2110,0x2110,0x2110,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2910,0x2930,0x2930,0x2930,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x1932,0x1932,0x1953,0x1153,0x1995,0x21D6,0x21F6,0x2217,0x19D6,0x2217,0x2217,0x2217,0x21F6,0x19D5,0x1994,0x1953,0x1952,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x2930,0x292F,0x2930,0x2930,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x28EE,0x288D,0x512F,0xB337,0xB2D5,0xAA94,0xAA73,0xA273,0x92F3,0xE6FF,0xC6FE,0xBEFD,0xB6FD,0xAEBC,0xAEBC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xAEFD,0xB6FD,0xBEDE,0xCEDF,0x93F5,0x8210,0x9A12,0xAA13,0xB213,0xBA34,0xC234,0xCA34,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xC214,0xC213,0xB9F3,0xA232,0xAB95,0xC5BB,0xC69D,0xB6BD,0xAEDD,0xAEDD,0xA6DD,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xAEDC,0xAEDD,0xBEFE,0xCE7E,0x8313,0x8A31,0x9A12,0xAA13,0xBA13,0xC214,0xC214,0xCA14,0xCA14,0xC9F4,0xCA14,0xC9F4,0xC9F4,0xCA14,0xCA14,0xC234,0xC214,0xB9F3,0xAA32,0xAB55,0xCD9C,0xCE9E,0xB6DE,0xB6DD,0xAEDD,0xA6DD,0xA6DD,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DD,0xA6FD,0xA6FD,0xA6FC,0xAEFD,0xAEFD,0xBEFE,0xCE3D,0x8313,0x8A32,0xA213,0xAA33,0xB213,0xBA14,0xC214,0xC214,0xCA14,0xCA14,0xCA14,0xC9F3,0xCA14,0xCA14,0xC213,0xC1F3,0xC233,0xB1F2,0x9211,0xDDBC,0xD65E,0xCE9E,0xCE9E,0xD67E,0xAC78,0x8210,0x91D1,0xA1F2,0xA9F3,0xB1F3,0xBA13,0xC213,0xC234,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F3,0xC9F3,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xD214,0xC9F4,0xCA14,0xCA14,0xCA14,0xCA14,0xCA13,0xCA13,0xC213,0xC213,0xB1D2,0xA211,0x92B2,0xD5DD,0xCE9E,0xBEDD,0xB6DD,0xAEDD,0xAEDD,0xAEFD,0xA6BC,0xA6BC,0xA6BC,0xAEDC,0xAEDC,0xAEFD,0xAEFD,0xAF1D,0xB73E,0xBEFE,0xCEBE,0x8BB4,0x7A10,0x91D1,0xA1F2,0xB213,0xB213,0xBA13,0xC234,0xC214,0xCA14,0xCA14,0xCA14,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xD214,0xC9F4,0xC9F4,0xD1F4,0xD1F4,0xD1F4,0xD1F4,0xD1F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xD1F4,0xC9F3,0xC9F3,0xCA14,0xC9F4,0xCA14,0xC9F4,0xD214,0xCA14,0xCA14,0xCA14,0xC9F4,0xCA14,0xCA14,0xC9F4,0xC9F4,0xC1F4,0xC1D3,0xB9F3,0xB213,0x9A32,0xED7D,0xEDFF,0xE59E,0xA2F4,0x91D1,0xA1D1,0xB213,0xBA13,0xC234,0xC214,0xC213,0xCA14,0xC9F3,0xCA14,0xCA14,0xCA14,0xCA34,0xC234,0xC214,0xC234,0xB1F2,0x99F1,0xB437,0xDE7E,0xC6BE,0xBEBD,0xB6BD,0xB6BC,0xB6BD,0xB6DD,0xB6DD,0xC6DE,0xCE5E,0x82F2,0x8A31,0x9A12,0xAA13,0xB233,0xBA34,0xC234,0xC234,0xC214,0xC214,0xCA13,0xCA13,0xCA13,0xC213,0xC1F3,0xC1F3,0xBA13,0xB212,0x9A52,0xBCD8,0xCE9E,0xBEDD,0xB6DD,0xAEDC,0xAEBC,0xAEDC,0xAEDC,0xAEDC,0xAEDC,0xB71D,0xBF1E,0xCEBE,0x93F6,0x8A51,0x91F2,0xA1F2,0xB1F3,0xBA14,0xC234,0xC214,0xC214,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA13,0xC9F3,0xC9F3,0xC9F4,0xC9F3,0xC9F3,0xC9F3,0xD1F4,0xC9D4,0xC9D4,0xC9D3,0xC9D3,0xC9F3,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F3,0xC9F4,0xC9F4,0xCA14,0xCA13,0xCA14,0xCA14,0xCA14,0xCA14,0xCA13,0xCA14,0xCA14,0xCA13,0xCA13,0xC213,0xC213,0xC213,0xAA11,0xF4FC,0xFDFF,0xFE1F,0xFDDE,0xB2B3,0xBA73,0xC253,0xC253,0xCA54,0xCA54,0xCA54,0xD254,0xD254,0xD254,0xD254,0xD234,0xD234,0xD234,0xD234,0xD254,0xD234,0xDA55,0xD235,0xD255,0xD277,0xCA98,0xC2B9,0xAAFC,0x38B6,0x291A,0x215B,0x217C,0x197C,0x117D,0x199D,0x199D,0x299C,0x313A,0x4918,0x81DA,0xAA39,0xB9F7,0xB9D6,0xC1D5,0xC1F5,0xC1F5,0xB9F5,0xA9D5,0x91F5,0x7256,0x5399,0x4D1E,0x359F,0x25BF,0x159E,0x0D9E,0x0D9D,0x05DC,0x063A,0x06BA,0x0F5B,0x0F9A,0x0F9A,0x0F9A,0x179B,0x1F5B,0x2F3C,0x4F1D,0x767D,0x6437,0x7272,0x9A33,0xA1D3,0xB1D4,0xB1D4,0xB9F5,0xB1B3,0xB215,0x88F0,0x9973,0xA9F4,0xA9D4,0xA9D4,0xA9F4,0xA215,0x8172,0x50F0,0x4930,0x4131,0x3930,0x3151,0x3971,0x3171,0x3171,0x2951,0x2951,0x2951,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2910,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x292F,0x2910,0x2910,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2910,0x210F,0x2910,0x290F,0x290F,0x2910,0x2910,0x210F,0x290F,0x210F,0x2910,0x210F,0x290F,0x210F,0x290F,0x292F,0x212F,0x292F,0x210F,0x212F,0x212F,0x210F,0x2110,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x1910,0x18F0,0x1911,0x1932,0x1973,0x11B5,0x1A17,0x11D7,0x11D7,0x1218,0x11D7,0x09B7,0x09B6,0x11D7,0x11F7,0x19D6,0x1194,0x1173,0x1132,0x1932,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1113,0x19B6,0x2217,0x2217,0x19B5,0x1112,0x1112,0x2131,0x2130,0x2130,0x2130,0x292F,0x290F,0x2930,0x2930,0x2110,0x2130,0x2131,0x2131,0x1932,0x1112,0x1954,0x1995,0x19F7,0x2218,0x1196,0x0954,0x0953,0x1153,0x1152,0x1952,0x1111,0x1931,0x1932,0x1932,0x1953,0x1153,0x1154,0x1174,0x1174,0x1174,0x1174,0x1974,0x1153,0x1953,0x1953,0x1932,0x1111,0x1931,0x1931,0x1932,0x1132,0x1132,0x1175,0x19F7,0x2218,0x19F8,0x19D7,0x1175,0x1112,0x1111,0x1931,0x2130,0x2150,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2910,0x2110,0x2110,0x2910,0x2910,0x2930,0x290F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x290F,0x210F,0x2930,0x210F,0x290F,0x2930,0x210F,0x210F,0x292F,0x210F,0x290F,0x290F,0x2930,0x2930,0x2110,0x2110,0x2130,0x2131,0x2131,0x1911,0x1112,0x1153,0x1174,0x21D6,0x21F7,0x21F7,0x19D6,0x1995,0x1153,0x1132,0x1132,0x1931,0x1931,0x1931,0x2131,0x2130,0x2110,0x2130,0x2110,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130, + 0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2930,0x2910,0x2910,0x210F,0x210F,0x290F,0x210F,0x2930,0x2930,0x2910,0x2930,0x2110,0x2930,0x210F,0x2910,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2150,0x2130,0x2130,0x2130,0x1931,0x1931,0x2131,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1912,0x1932,0x1932,0x1912,0x1932,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1912,0x1112,0x1112,0x1132,0x1132,0x1132,0x1111,0x1111,0x1111,0x1111,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1112,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1133,0x1154,0x1175,0x11B6,0x11D7,0x11B7,0x09B7,0x0997,0x0996,0x0976,0x0975,0x0155,0x0155,0x0976,0x11B6,0x11D7,0x19D7,0x19B5,0x1153,0x1932,0x1931,0x2131,0x2130,0x2110,0x210F,0x210F,0x212F,0x2930,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2930,0x2930,0x212F,0x210F,0x210F,0x210F,0x2110,0x2910,0x2110,0x2930,0x210F,0x2930,0x212F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x290F,0x210F,0x212F,0x2930,0x210F,0x212F,0x2930,0x2930,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x290F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2930,0x2910,0x2910,0x2110,0x2110,0x2110,0x2130,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2110,0x2131,0x2110,0x2131,0x2131,0x2130,0x2110,0x2131,0x2151,0x1931,0x1931,0x1931,0x1932,0x1153,0x1974,0x21D6,0x21F7,0x19D7,0x19D7,0x1196,0x1195,0x1196,0x11B6,0x11D6,0x19F7,0x2217,0x19B5,0x1974,0x1132,0x1931,0x2131,0x2131,0x2130,0x2130,0x212F,0x2930,0x292F,0x2930,0x2930,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x290F,0x28EE,0x288D,0x594F,0xB337,0xB2D5,0xAA94,0xAA73,0xA253,0x92D2,0xE6FF,0xC6FE,0xBEDD,0xB6FD,0xAEBC,0xAEBC,0xA6DC,0xA6BC,0xA6DC,0xA6DC,0xA6DC,0xAEFD,0xB6FD,0xBEFE,0xD6FF,0x9415,0x8210,0x9A12,0xAA13,0xB233,0xBA34,0xC234,0xC234,0xCA34,0xCA34,0xCA14,0xCA14,0xCA14,0xCA14,0xCA34,0xC214,0xC213,0xBA13,0xA252,0xA395,0xC59B,0xC6BE,0xB6DD,0xAEDC,0xAEFD,0xAEDD,0xA6DD,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xAEFC,0xB71D,0xC71E,0xCE7E,0x82F2,0x8A31,0x9A12,0xAA33,0xBA34,0xC234,0xCA34,0xCA34,0xCA14,0xCA34,0xD234,0xCA13,0xCA13,0xCA14,0xCA34,0xC234,0xC233,0xBA13,0xAA32,0xAB96,0xCD9C,0xC67E,0xB6BD,0xAEBC,0xAEDC,0xAEDC,0xAEFD,0xA6FD,0xA6FC,0xA6FC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6FC,0xAEFC,0xAF1D,0xAEFD,0xBEFE,0xCE7E,0x8313,0x8A31,0xA212,0xAA33,0xBA33,0xC234,0xCA34,0xCA34,0xCA34,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xC213,0xC233,0xB212,0xAA93,0xDDBD,0xD65E,0xCE7E,0xD65E,0xD59C,0x8251,0x89F1,0x99D1,0xAA13,0xB233,0xBA34,0xC234,0xC234,0xCA34,0xCA14,0xCA14,0xCA14,0xCA14,0xCA34,0xCA34,0xCA14,0xD214,0xCA14,0xCA14,0xD214,0xCA14,0xC9F4,0xC9F4,0xCA14,0xC9F4,0xCA14,0xCA14,0xCA14,0xC9F4,0xC9F4,0xCA14,0xCA14,0xCA14,0xC9F4,0xCA14,0xCA14,0xCA14,0xD214,0xCA14,0xD214,0xD214,0xCA14,0xCA14,0xCA34,0xCA14,0xCA34,0xCA13,0xC213,0xC233,0xC213,0xB212,0xA232,0x9B34,0xDE9F,0xC6BD,0xBEBD,0xB6DD,0xB6DD,0xAEDD,0xAEDC,0xAEBC,0xAEBC,0xAEDC,0xAEDC,0xAEFD,0xAEFD,0xAEFD,0xB71D,0xC6FE,0xB53A,0x7A50,0x89F1,0x99D1,0xA9F2,0xB233,0xBA33,0xC254,0xC234,0xCA34,0xCA34,0xCA14,0xD234,0xD214,0xCA14,0xCA14,0xCA14,0xD214,0xD1F4,0xD1F4,0xD214,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xCA14,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xCA14,0xCA14,0xCA14,0xCA14,0xD234,0xD234,0xCA14,0xCA14,0xD214,0xD234,0xCA14,0xCA14,0xCA14,0xCA14,0xC214,0xC214,0xBA13,0xB253,0xAAF5,0xF59E,0xED7E,0xA2F4,0x91D1,0xA1D1,0xB213,0xBA33,0xC234,0xC234,0xC213,0xCA13,0xCA14,0xCA34,0xCA14,0xCA34,0xCA34,0xC234,0xC234,0xC234,0xB1F2,0x9A11,0xB437,0xDE7E,0xC6BD,0xBEDD,0xB6BD,0xB6BC,0xB6BC,0xB6BC,0xB6DD,0xC6BE,0xD65E,0x8312,0x8A31,0x9A12,0xAA33,0xB233,0xC254,0xC254,0xC234,0xCA34,0xCA34,0xCA34,0xCA34,0xCA14,0xCA14,0xC213,0xC213,0xC233,0xBA33,0xA272,0xBCB8,0xCE9E,0xBEBD,0xB6DD,0xAEDC,0xAEBC,0xAEDC,0xAEDC,0xAEFC,0xB6FD,0xB73E,0xC6FF,0xC5BC,0x82B2,0x8A11,0x99D2,0xA9F2,0xB233,0xC254,0xC254,0xC234,0xCA34,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xD1F4,0xC9F4,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC9F4,0xC9F4,0xC9F4,0xC9F3,0xC9F4,0xC9F4,0xCA14,0xCA14,0xCA14,0xCA34,0xD234,0xCA34,0xCA34,0xCA34,0xCA34,0xCA14,0xCA34,0xCA34,0xCA34,0xCA33,0xC233,0xBA53,0xBAD4,0xFDDE,0xFE3E,0xFE3E,0xFDFE,0xBB14,0xB273,0xBA33,0xC213,0xCA14,0xCA34,0xCA34,0xCA34,0xD234,0xD234,0xD234,0xD234,0xD234,0xD234,0xD234,0xD234,0xD235,0xD214,0xCA35,0xCA57,0xCA78,0xC299,0xAADC,0x38B6,0x311A,0x215B,0x197C,0x197D,0x117D,0x199D,0x199D,0x217C,0x315B,0x4119,0x5917,0xA23A,0xB1F7,0xB9D6,0xC1D5,0xC1F5,0xC1F5,0xB9D5,0xA9D5,0x91D5,0x7236,0x5339,0x4CBD,0x3D9F,0x25DF,0x159E,0x0D9D,0x0DBD,0x0DFC,0x063A,0x06B9,0x0F5A,0x0F7A,0x077A,0x0F7A,0x179B,0x1F7B,0x375C,0x4F1D,0x6E7D,0x5BD6,0x7273,0x9A33,0xAA14,0xB1F4,0xB1B4,0xB1B4,0xB1F4,0xB1F4,0x80AF,0x9993,0xA9F4,0xA9F4,0xAA15,0xAA15,0x99F4,0x68F0,0x5110,0x4931,0x4151,0x3951,0x3131,0x3951,0x3151,0x3151,0x3171,0x2971,0x2971,0x2950,0x2950,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x2930,0x2930,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x2930,0x290F,0x2930,0x290F,0x2930,0x210F,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x212F,0x212F,0x290F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2110,0x1910,0x1930,0x1931,0x1952,0x1953,0x1974,0x1195,0x1195,0x0996,0x11F8,0x11D7,0x11B7,0x11B7,0x11D7,0x11D6,0x1174,0x1153,0x1153,0x1952,0x1952,0x1951,0x1951,0x1931,0x1931,0x1932,0x1953,0x1133,0x19B6,0x21F7,0x21F7,0x19B5,0x1112,0x1932,0x2131,0x2130,0x2130,0x210F,0x2930,0x2930,0x210F,0x210F,0x2110,0x2130,0x2131,0x2131,0x1911,0x1932,0x1954,0x1995,0x19D6,0x19F7,0x11B6,0x1195,0x1194,0x0953,0x1152,0x1132,0x1932,0x1932,0x1932,0x1932,0x1932,0x1953,0x1153,0x1153,0x1152,0x1153,0x1973,0x1953,0x1952,0x1952,0x1932,0x1911,0x1111,0x1931,0x1931,0x1132,0x1153,0x1174,0x19D6,0x2218,0x19F8,0x19B7,0x1175,0x1134,0x1932,0x1952,0x1931,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x290F,0x290F,0x2930,0x2910,0x210F,0x2910,0x2910,0x2910,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2130,0x2110,0x1911,0x1911,0x1932,0x1953,0x1175,0x21D6,0x21F7,0x21F7,0x19B6,0x1174,0x1133,0x1132,0x1932,0x1931,0x1931,0x1910,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x212F,0x2130,0x2130,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F, + 0x2930,0x290F,0x2910,0x2930,0x2130,0x2130,0x2130,0x2110,0x2930,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x2930,0x2910,0x2110,0x2910,0x2930,0x2110,0x2110,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2110,0x2110,0x210F,0x292F,0x292F,0x210F,0x212F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1910,0x1931,0x1931,0x1932,0x1932,0x1932,0x1952,0x1932,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x10F2,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x0912,0x0912,0x1112,0x1112,0x1112,0x0912,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1133,0x1153,0x1153,0x1154,0x1175,0x1175,0x1196,0x11B7,0x11B7,0x11B7,0x0997,0x0976,0x0996,0x0996,0x0975,0x0154,0x0134,0x0155,0x0996,0x19D7,0x19D7,0x19B6,0x1974,0x1932,0x1931,0x2131,0x2130,0x2110,0x2130,0x2130,0x2930,0x210F,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x2930,0x2930,0x210F,0x2930,0x2910,0x2110,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x212F,0x212F,0x2930,0x2930,0x290F,0x210F,0x292F,0x212F,0x212F,0x2130,0x2930,0x210F,0x2930,0x2930,0x2930,0x292F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2931,0x2111,0x2131,0x2110,0x2110,0x2110,0x2111,0x2111,0x2131,0x2130,0x1910,0x2111,0x2111,0x2111,0x2111,0x2111,0x2131,0x1911,0x2131,0x2111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1910,0x1931,0x1911,0x1931,0x1131,0x1111,0x1133,0x1174,0x19D6,0x19D7,0x19D7,0x11B6,0x0996,0x0976,0x0976,0x0996,0x0975,0x0975,0x11D6,0x1A17,0x19F6,0x1995,0x1133,0x1932,0x2131,0x2131,0x2130,0x2130,0x212F,0x2930,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x2930,0x292F,0x290F,0x28EE,0x288D,0x512F,0xAB16,0xB2B5,0xAA74,0xAA53,0xA253,0x8A92,0xE6FF,0xC6DD,0xBEFD,0xB6FD,0xAEBC,0xAEBC,0xAEDC,0xA6DC,0xA6DC,0xAEDC,0xAEFD,0xAEFD,0xB71D,0xBF1E,0xD6FF,0x9415,0x8230,0x9A12,0xA233,0xB233,0xBA34,0xC234,0xCA34,0xCA34,0xCA34,0xCA34,0xCA34,0xD234,0xD234,0xCA34,0xCA34,0xC234,0xBA13,0xAA73,0xA375,0xC59B,0xCEBE,0xB6DD,0xAEDC,0xAEDC,0xAEDC,0xAEDC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xAEDC,0xAEDC,0xAEFC,0xB71D,0xC6FE,0xCE7E,0x8312,0x8A31,0x9A12,0xAA33,0xBA34,0xC234,0xCA34,0xCA34,0xCA34,0xD234,0xD234,0xD234,0xCA34,0xCA34,0xCA34,0xC234,0xC233,0xB213,0xA252,0xB3F7,0xCDDC,0xC69D,0xB69D,0xB6BC,0xAEDC,0xAEDC,0xAEDC,0xA6FC,0xA6FC,0xA6FC,0xA6FC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xA6FC,0xAEFC,0xAEFD,0xAEFD,0xBEFE,0xCE5D,0x8312,0x8A51,0xA232,0xAA53,0xBA33,0xC254,0xCA54,0xCA34,0xCA34,0xCA34,0xCA34,0xCA14,0xCA34,0xCA34,0xCA14,0xC233,0xC233,0xBA33,0xAA93,0xE5DD,0xD63D,0xD65E,0xE67F,0x9B54,0x89F0,0x99F1,0xAA12,0xB233,0xBA34,0xC254,0xCA54,0xCA34,0xCA33,0xCA34,0xCA13,0xCA13,0xD234,0xD234,0xD234,0xD234,0xCA34,0xD234,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA13,0xCA14,0xC213,0xC213,0xC213,0xC213,0xC213,0xCA14,0xCA14,0xCA14,0xCA14,0xCA34,0xCA34,0xCA34,0xCA14,0xD234,0xD234,0xD234,0xD234,0xCA14,0xCA14,0xCA33,0xCA33,0xCA34,0xCA33,0xCA34,0xC234,0xBA33,0xB232,0x9A72,0xB498,0xD69E,0xC6DD,0xB6DD,0xB6FD,0xB6DD,0xAEDC,0xAEBC,0xAEDC,0xAEDC,0xAEDC,0xAEFD,0xAF1D,0xB71D,0xBF1E,0xD6DE,0x82F2,0x8210,0x9A11,0xAA12,0xB233,0xBA53,0xC254,0xC254,0xCA34,0xCA34,0xCA34,0xCA34,0xD234,0xD214,0xD234,0xD234,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xC213,0xC213,0xC213,0xCA14,0xCA14,0xCA14,0xCA14,0xCA34,0xCA34,0xCA14,0xCA14,0xCA34,0xD234,0xCA34,0xD234,0xD234,0xCA34,0xCA34,0xCA34,0xCA34,0xCA34,0xCA34,0xC234,0xC234,0xBA54,0xAA73,0xECBC,0xED1D,0xAAF5,0x99F1,0xA1D1,0xB213,0xBA34,0xC234,0xCA34,0xCA34,0xCA34,0xCA34,0xCA34,0xCA34,0xCA34,0xCA34,0xCA34,0xC234,0xC254,0xB212,0x9A11,0xB437,0xDE9E,0xCEBD,0xBEBD,0xBEBD,0xB6BC,0xB6BC,0xB6DC,0xBEDD,0xC6DE,0xD65E,0x8312,0x8A31,0x9A32,0xAA33,0xB233,0xBA54,0xC254,0xCA54,0xCA54,0xCA34,0xCA34,0xCA34,0xCA34,0xCA34,0xCA14,0xC213,0xBA13,0xB212,0xA272,0xBCD8,0xCE9D,0xBEDD,0xB6DD,0xB6DC,0xAEDC,0xAEDC,0xAEDC,0xB71D,0xB71D,0xBF1E,0xD6DF,0x9394,0x8231,0x99F1,0xA1D2,0xB233,0xBA54,0xC274,0xCA74,0xCA54,0xCA34,0xCA34,0xCA34,0xCA34,0xCA34,0xD234,0xD234,0xCA34,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA13,0xCA14,0xCA13,0xC213,0xC213,0xC213,0xC1F3,0xC9F3,0xC9F4,0xC9F4,0xC9F4,0xCA14,0xCA14,0xCA14,0xCA34,0xCA34,0xD234,0xCA34,0xD234,0xCA34,0xCA34,0xCA34,0xCA34,0xCA34,0xCA34,0xCA33,0xC233,0xBA53,0xB272,0xF4FB,0xFE5F,0xFE7E,0xFE7F,0xFDFE,0xBB34,0xB232,0xBA12,0xC213,0xCA13,0xCA14,0xCA14,0xCA34,0xD234,0xD234,0xD234,0xD234,0xD234,0xD234,0xD234,0xD234,0xD215,0xD235,0xCA36,0xCA58,0xC299,0xAADC,0x40B7,0x311A,0x215B,0x197C,0x117D,0x119D,0x117D,0x199D,0x219D,0x295C,0x393A,0x48D7,0x91D9,0xB218,0xB1D6,0xC1F6,0xC1D5,0xC1F5,0xB9D5,0xB1F5,0x99F6,0x7A36,0x5AF8,0x545C,0x3D9F,0x25DF,0x1D9E,0x15BE,0x0DBD,0x0DFC,0x065A,0x06B9,0x0F5A,0x0F7A,0x077A,0x0F9A,0x179A,0x1F7B,0x2F3C,0x4EDC,0x767D,0x5BB5,0x7273,0x9A33,0xA1D3,0xB1D4,0xA9B4,0xA9B4,0xA9D4,0xB215,0x80D0,0x9993,0xA1D4,0xAA15,0xAA14,0xAA35,0x9A15,0x60D0,0x50F0,0x4951,0x4151,0x3971,0x3951,0x3951,0x3151,0x3171,0x3171,0x3171,0x2951,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x2930,0x2930,0x290F,0x2930,0x290F,0x210F,0x2930,0x210F,0x290F,0x2930,0x290F,0x210F,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x210F,0x2130,0x2150,0x210F,0x2110,0x1930,0x1931,0x1931,0x1932,0x1973,0x1974,0x1175,0x1196,0x11D7,0x11D7,0x11B7,0x0996,0x11D6,0x1195,0x1153,0x1153,0x1132,0x1952,0x1972,0x1951,0x1931,0x1931,0x1931,0x1932,0x1133,0x1133,0x19B6,0x2218,0x21F7,0x19B6,0x1112,0x1932,0x2151,0x2130,0x2110,0x2130,0x210F,0x2930,0x210F,0x2930,0x2930,0x2130,0x2130,0x2111,0x1911,0x1932,0x1933,0x1974,0x1195,0x11D7,0x19F7,0x19F6,0x11B5,0x1174,0x0932,0x1132,0x1132,0x1932,0x1932,0x1932,0x1952,0x1932,0x1932,0x1132,0x1132,0x1132,0x1132,0x1932,0x1132,0x1132,0x1111,0x1111,0x1131,0x1131,0x1132,0x1133,0x1154,0x19B6,0x2218,0x21F8,0x19D7,0x19B6,0x1154,0x1133,0x1932,0x1931,0x2131,0x2130,0x210F,0x210F,0x212F,0x292F,0x210F,0x292F,0x212F,0x212F,0x210F,0x2130,0x210F,0x210F,0x2930,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x290F,0x2930,0x2930,0x290F,0x2910,0x2930,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2110,0x2110,0x2111,0x1911,0x1112,0x1133,0x1995,0x21D7,0x21F7,0x21F7,0x21D7,0x1995,0x1133,0x1132,0x1932,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F, + 0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2910,0x290F,0x292F,0x290F,0x2910,0x290F,0x2910,0x2910,0x2910,0x2110,0x2110,0x2110,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x210F,0x2930,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x2930,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1931,0x1931,0x1932,0x1132,0x1153,0x1973,0x1974,0x1153,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1995,0x1994,0x1994,0x1994,0x1994,0x1994,0x1995,0x1994,0x1994,0x1995,0x1995,0x1995,0x19B5,0x1995,0x19B5,0x1995,0x1995,0x1995,0x1995,0x1995,0x21B5,0x21B5,0x21B5,0x21B5,0x21B5,0x21D5,0x21D6,0x21B5,0x21B5,0x21B5,0x21D6,0x21D6,0x19D5,0x19B5,0x19B5,0x19B6,0x1995,0x19B5,0x1195,0x1196,0x11B6,0x11B7,0x11B7,0x11D7,0x11D8,0x0997,0x0976,0x0976,0x0996,0x0975,0x0134,0x0134,0x0955,0x11B7,0x19F8,0x19D7,0x21D7,0x1995,0x1932,0x1911,0x1910,0x2110,0x2130,0x2130,0x2130,0x2930,0x2910,0x2910,0x2110,0x2130,0x2110,0x2110,0x210F,0x290F,0x290F,0x210F,0x212F,0x292F,0x292F,0x292F,0x2930,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x212F,0x210F,0x292F,0x210F,0x292F,0x212F,0x212F,0x212F,0x2930,0x2930,0x292F,0x212F,0x212F,0x212F,0x2130,0x2110,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2131,0x2131,0x2111,0x2111,0x2111,0x1911,0x1931,0x1911,0x18F1,0x18F1,0x1911,0x1911,0x1111,0x10F1,0x1911,0x1911,0x10F1,0x1911,0x1911,0x1111,0x10F1,0x10F1,0x10F1,0x10F1,0x10F1,0x10F1,0x10F1,0x10F0,0x08F0,0x08F0,0x08F0,0x08F1,0x0932,0x1174,0x11B5,0x11B6,0x11B7,0x11B7,0x11B7,0x0996,0x0155,0x0155,0x0975,0x0975,0x0996,0x0996,0x19F7,0x19F7,0x19B5,0x1153,0x1932,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x28EE,0x308D,0x512F,0xAB16,0xB294,0xAA53,0xAA33,0xA232,0x8A71,0xEF1F,0xCEFD,0xBEDD,0xBEFD,0xB6BC,0xAEDC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xB6FD,0xB71D,0xC71E,0xD71F,0x9C36,0x7A10,0x9212,0xA212,0xB233,0xBA54,0xC254,0xCA54,0xCA54,0xCA54,0xD254,0xD254,0xD254,0xD234,0xCA34,0xCA34,0xC254,0xBA53,0xAA73,0xABB5,0xCDBB,0xCEBE,0xBEDD,0xB6DC,0xAEDC,0xAEDC,0xAEDC,0xA6DC,0xAEDC,0xAEDC,0xA6DC,0xA6DC,0xA6DC,0xA6DC,0xAEDC,0xAEDC,0xAEDC,0xAEFC,0xB6FC,0xB71D,0xC71E,0xD69E,0x8312,0x8A51,0x9A12,0xAA53,0xBA54,0xC254,0xCA54,0xCA54,0xD254,0xD254,0xD254,0xD234,0xD234,0xCA34,0xCA34,0xC234,0xC254,0xBA33,0xAA93,0xBC78,0xD63D,0xC69D,0xBEDD,0xB6DC,0xAEDC,0xAEDC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xA6FC,0xAEFC,0xA6DC,0xA6DC,0xA6FC,0xA6DC,0xAEFC,0xAEFC,0xAEFC,0xB6FD,0xBEDD,0xCE5D,0x8312,0x8A51,0xA232,0xAA53,0xBA54,0xC254,0xCA54,0xCA54,0xCA54,0xCA34,0xCA34,0xCA34,0xCA34,0xCA54,0xCA34,0xC233,0xC233,0xBA33,0xAAB3,0xEDFE,0xDE1E,0xE63E,0xCD3B,0x79CF,0x91F1,0xA212,0xB253,0xBA54,0xC254,0xC254,0xCA74,0xCA54,0xCA54,0xCA34,0xCA34,0xD254,0xD254,0xD254,0xD234,0xD234,0xD234,0xD234,0xCA34,0xCA34,0xCA14,0xCA14,0xC213,0xC233,0xBA33,0xBA32,0xB232,0xB232,0xB212,0xBA13,0xBA13,0xC213,0xC234,0xCA34,0xCA34,0xCA34,0xCA34,0xCA34,0xD254,0xD255,0xD254,0xD234,0xD234,0xD234,0xCA34,0xCA34,0xCA34,0xCA54,0xCA54,0xCA54,0xC254,0xBA33,0xAA52,0x9AF3,0xDDDD,0xCEBE,0xBEFD,0xBEDD,0xB6FD,0xB6DC,0xAEDC,0xAEDC,0xAEDC,0xAEDC,0xB6FC,0xB71D,0xBF1D,0xCF1E,0xBD9B,0x71CE,0x91F1,0xA232,0xB253,0xBA53,0xBA54,0xC274,0xCA74,0xCA54,0xCA34,0xCA34,0xD254,0xD234,0xD234,0xD234,0xD234,0xD234,0xD234,0xD234,0xD234,0xCA34,0xCA34,0xCA34,0xC233,0xC233,0xBA33,0xBA33,0xBA13,0xBA13,0xC213,0xCA34,0xCA34,0xCA34,0xCA34,0xCA34,0xCA14,0xD234,0xD255,0xD234,0xD254,0xD234,0xD234,0xCA54,0xCA54,0xCA54,0xCA54,0xCA54,0xCA54,0xC254,0xC254,0xBA74,0xC316,0xF51D,0xB315,0x99F1,0xA1F2,0xB213,0xC254,0xC254,0xC234,0xCA54,0xCA34,0xCA54,0xCA54,0xD254,0xCA34,0xCA55,0xCA54,0xC254,0xC254,0xBA13,0xA232,0xB457,0xDE9E,0xCEBD,0xC6FD,0xBEBC,0xB6BC,0xB6DC,0xB6DC,0xBEDD,0xC6DD,0xD67E,0x8312,0x8A51,0x9A32,0xAA33,0xB253,0xC254,0xC254,0xCA54,0xCA54,0xCA54,0xCA54,0xCA54,0xCA54,0xCA54,0xCA34,0xC233,0xC233,0xBA33,0xAAD3,0xBCF9,0xD6BD,0xC6DD,0xB6DC,0xB6DC,0xB6DC,0xB6DC,0xB6DC,0xB71D,0xBF1D,0xC6FE,0xC5FC,0x7A30,0x91F1,0x99F2,0xA9F2,0xBA33,0xC274,0xC274,0xCA74,0xCA54,0xCA54,0xCA54,0xD254,0xD254,0xD254,0xCA34,0xD254,0xCA34,0xCA34,0xCA34,0xCA34,0xCA13,0xCA34,0xCA33,0xC233,0xBA33,0xBA32,0xB232,0xB212,0xBA12,0xC213,0xC213,0xCA13,0xCA14,0xCA14,0xCA34,0xCA34,0xCA34,0xCA34,0xD254,0xD254,0xD254,0xD254,0xD254,0xCA54,0xD254,0xCA54,0xCA54,0xCA54,0xC233,0xC253,0xBA73,0xB2F3,0xFE7F,0xFE7E,0xFE9E,0xFE9E,0xFE3E,0xBB74,0xAA11,0xBA12,0xC1F3,0xC9F3,0xCA13,0xCA14,0xD214,0xD234,0xD234,0xD234,0xD234,0xD234,0xD234,0xD234,0xCA14,0xCA15,0xCA36,0xC258,0xBA79,0xAADC,0x40B7,0x291A,0x215B,0x197C,0x117D,0x117D,0x117D,0x117D,0x219D,0x299D,0x313A,0x40F8,0x7178,0xA219,0xA9B6,0xB9F6,0xC1D5,0xC1D5,0xB9D5,0xB1F6,0xA1F6,0x8237,0x62D8,0x4BDB,0x457F,0x2DDF,0x1DBE,0x15BE,0x0DDD,0x0DFC,0x065A,0x06DA,0x073A,0x0759,0x0F7A,0x0F9A,0x177A,0x1F5B,0x375C,0x4EFD,0x767D,0x5BD6,0x7A73,0x9A13,0xAA14,0xA9D4,0xA9B3,0xA9B4,0xA9B3,0xA193,0x80AF,0xA1F4,0xA1D4,0xA1D4,0xA1F4,0x99F4,0x9A35,0x6110,0x5110,0x4130,0x4171,0x3971,0x3971,0x3951,0x3971,0x3151,0x3151,0x2951,0x2951,0x2950,0x2930,0x2930,0x292F,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x210F,0x290F,0x290F,0x2930,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x210F,0x2110,0x2130,0x1930,0x1931,0x1932,0x1952,0x1973,0x1154,0x1175,0x11D7,0x11D8,0x09B7,0x11B7,0x1195,0x0954,0x1153,0x1152,0x1952,0x1951,0x1971,0x1951,0x1910,0x1931,0x1931,0x1932,0x1953,0x1133,0x19B6,0x21F7,0x21F7,0x1995,0x1112,0x1111,0x2131,0x2130,0x2130,0x2130,0x2130,0x2930,0x212F,0x292F,0x212F,0x2130,0x2130,0x2130,0x2151,0x1931,0x1932,0x1133,0x1174,0x11B6,0x11D6,0x19F7,0x19F6,0x11B5,0x0933,0x1133,0x1132,0x1132,0x1932,0x1952,0x1953,0x1952,0x1932,0x1132,0x1131,0x1131,0x1131,0x1932,0x1932,0x1132,0x1132,0x1132,0x1152,0x1153,0x1133,0x1174,0x1195,0x19F7,0x21F7,0x19D7,0x19B6,0x1975,0x1133,0x1132,0x1932,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x2110,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x210F,0x210F,0x290F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2910,0x210F,0x2910,0x2930,0x210F,0x2930,0x2930,0x210F,0x210F,0x212F,0x212F,0x2930,0x2930,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2111,0x1931,0x1112,0x1133,0x1174,0x19B6,0x21F7,0x21D7,0x21D7,0x1995,0x1974,0x1132,0x1911,0x1931,0x1910,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210E,0x210F,0x210F,0x292F,0x292F, + 0x210F,0x210F,0x2110,0x2110,0x2130,0x210F,0x2110,0x2930,0x2110,0x2930,0x2110,0x2110,0x2110,0x2910,0x290F,0x2910,0x290F,0x292F,0x2910,0x2910,0x2910,0x210F,0x2910,0x2110,0x2110,0x2110,0x210F,0x290F,0x292F,0x292F,0x210F,0x290F,0x212F,0x292F,0x290F,0x290F,0x210F,0x2910,0x2110,0x2910,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1911,0x1912,0x1132,0x1953,0x19B5,0x21F6,0x2A37,0x2A37,0x3257,0x2A57,0x3258,0x3258,0x3278,0x3278,0x3A78,0x3258,0x3258,0x3258,0x3278,0x3278,0x3278,0x3258,0x3258,0x3258,0x3258,0x3258,0x3258,0x3258,0x3258,0x3258,0x3278,0x3258,0x3258,0x2A37,0x3258,0x2A58,0x2A58,0x3258,0x3258,0x2A37,0x3258,0x2A38,0x3238,0x2A37,0x3238,0x2A38,0x2A37,0x2A37,0x2A17,0x2A17,0x2A17,0x2217,0x2217,0x21F7,0x21F6,0x19D6,0x19D6,0x19D7,0x11B6,0x11D7,0x11D7,0x11B7,0x11D7,0x0996,0x0976,0x0955,0x0155,0x0955,0x0134,0x0954,0x0955,0x19B7,0x19D8,0x21F8,0x21F7,0x1974,0x1112,0x1911,0x1910,0x2110,0x2130,0x2130,0x2130,0x212F,0x2110,0x210F,0x210F,0x2130,0x210F,0x2110,0x2930,0x210F,0x290F,0x210F,0x212F,0x292F,0x292F,0x290F,0x2910,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x290F,0x290F,0x292F,0x210F,0x212F,0x292F,0x292F,0x292F,0x212F,0x210F,0x212F,0x212F,0x2930,0x292F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2930,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2151,0x2151,0x2151,0x2131,0x1911,0x1111,0x1112,0x1112,0x1132,0x1132,0x1112,0x10F2,0x08F2,0x0912,0x0912,0x0912,0x08F2,0x1112,0x1112,0x1112,0x0912,0x0912,0x0912,0x08F2,0x08F2,0x08F2,0x0912,0x0912,0x0912,0x0912,0x0912,0x0932,0x0953,0x0973,0x1194,0x11B5,0x11B6,0x11B6,0x1196,0x1197,0x0996,0x0976,0x0155,0x0155,0x0155,0x0155,0x0975,0x0975,0x11F7,0x19F7,0x19D6,0x1154,0x1132,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x28EE,0x288D,0x510F,0xAAF6,0xB294,0xAA53,0xAA33,0xA232,0x8A71,0xEF1F,0xCEFD,0xC6FD,0xC6FD,0xB6DC,0xB6DC,0xB6FC,0xB71C,0xAEFC,0xAEFC,0xAEFC,0xB71D,0xBF1D,0xC71E,0xDF3F,0x9415,0x7A10,0x9211,0xA232,0xB253,0xC274,0xCA74,0xCA74,0xCA54,0xCA54,0xD254,0xD275,0xD254,0xCA54,0xCA54,0xCA54,0xC274,0xBA74,0xAA93,0xABD5,0xCDDB,0xCEDE,0xC71D,0xB6FC,0xB6FC,0xB6FC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xAEDC,0xAEDC,0xAEFC,0xAEDC,0xAEFC,0xAEFC,0xB71C,0xBF1D,0xC71D,0xD69E,0x8312,0x8A51,0x9A32,0xAA53,0xBA54,0xC254,0xCA74,0xCA54,0xCA54,0xD254,0xD254,0xD254,0xD254,0xCA54,0xCA34,0xC254,0xC254,0xBA53,0xAAB3,0xC4B9,0xD67D,0xCEDD,0xBEFD,0xB6FC,0xB6DC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xAEDC,0xAEDC,0xAEFC,0xAEFC,0xAEFC,0xB71C,0xB71C,0xBF1D,0xC6DD,0xD67E,0x8312,0x8A51,0x9A32,0xAA53,0xBA54,0xC274,0xCA74,0xCA54,0xCA54,0xCA54,0xD255,0xD255,0xD254,0xD274,0xCA54,0xC254,0xC253,0xBA53,0xB2D4,0xEDFE,0xE5FE,0xE5DE,0x9AF3,0x9211,0x99F1,0xB253,0xBA74,0xC274,0xC254,0xCA74,0xCA74,0xCA54,0xCA54,0xD254,0xD254,0xD254,0xD254,0xD254,0xD254,0xCA34,0xCA34,0xCA34,0xCA34,0xCA54,0xC253,0xC253,0xB252,0xAA72,0xB2D2,0xC3B5,0xD458,0xE4B9,0xD437,0xB2D3,0xA231,0xB232,0xBA33,0xBA33,0xC254,0xC254,0xCA54,0xCA54,0xCA54,0xD254,0xD254,0xD254,0xD254,0xD254,0xD254,0xD254,0xCA54,0xCA54,0xCA54,0xCA54,0xCA54,0xC274,0xB253,0xA272,0xA395,0xE6FF,0xCEDD,0xBEDD,0xBEFC,0xB6DC,0xB6DC,0xB6DC,0xB6DC,0xB6FC,0xB71D,0xBF1D,0xC71E,0xD6FF,0x8B93,0x8210,0x99F1,0xAA33,0xB253,0xBA74,0xC274,0xCA74,0xCA74,0xD274,0xD254,0xD274,0xD254,0xD254,0xD254,0xD254,0xD234,0xD254,0xD234,0xD254,0xCA54,0xCA54,0xC274,0xBA73,0xB292,0xAA92,0xBB54,0xCBD6,0xCBB6,0xAA51,0xB252,0xBA33,0xBA33,0xC234,0xCA34,0xCA54,0xCA54,0xD255,0xD255,0xD255,0xD254,0xD255,0xD255,0xD275,0xCA54,0xD254,0xCA54,0xCA54,0xCA74,0xCA74,0xC274,0xC274,0xB274,0xEC5B,0xBB16,0x99D1,0xA1F2,0xB233,0xC254,0xC254,0xCA54,0xCA54,0xCA54,0xD254,0xD254,0xD274,0xD274,0xCA75,0xCA74,0xCA74,0xC254,0xBA33,0xA252,0xB457,0xDEBE,0xCEDE,0xC6FD,0xBEDC,0xBEDC,0xBEFD,0xBEFC,0xBEFD,0xCEDD,0xD67E,0x8312,0x8A51,0x9A32,0xAA33,0xB253,0xC274,0xCA74,0xCA74,0xCA74,0xCA54,0xD254,0xCA54,0xCA54,0xCA54,0xCA54,0xCA34,0xC233,0xBA53,0xA2B3,0xBCF9,0xCE9D,0xC6DD,0xBEFD,0xBEFC,0xB6FC,0xB6DC,0xB6FC,0xBF1D,0xC71D,0xCEDE,0x8BD4,0x8231,0x91D1,0xA1F2,0xB253,0xC274,0xCA94,0xCA74,0xCA74,0xCA74,0xD274,0xCA74,0xD254,0xD254,0xD254,0xD254,0xD254,0xCA54,0xCA54,0xCA34,0xCA34,0xCA53,0xC253,0xBA72,0xB292,0xBB13,0xCBD6,0xDC78,0xDC37,0xAAB2,0xAA31,0xB212,0xBA13,0xC213,0xCA34,0xCA34,0xCA54,0xCA54,0xCA54,0xCA54,0xD254,0xCA54,0xCA54,0xD274,0xD274,0xD274,0xCA54,0xCA74,0xCA74,0xCA74,0xC274,0xC273,0xAA72,0xED7C,0xFE9E,0xF6BE,0xF6BE,0xFE9E,0xFE5E,0xC395,0xAA11,0xB9F2,0xC1F3,0xC9F3,0xC9F3,0xCA14,0xCA14,0xD214,0xD214,0xCA13,0xD214,0xD214,0xD214,0xD214,0xC9F5,0xCA36,0xC237,0xBA79,0xAABC,0x40B7,0x291A,0x215B,0x197D,0x199D,0x119D,0x117D,0x117D,0x197D,0x299D,0x295B,0x3919,0x60F7,0x9198,0xA9D7,0xB9F7,0xC1F6,0xC1F5,0xB9D5,0xB1F6,0xA1F6,0x8A37,0x6AB8,0x539A,0x4D5F,0x35DF,0x25DE,0x15BE,0x15DD,0x0E1C,0x065A,0x06B9,0x0F3A,0x0F7A,0x0F79,0x0F7A,0x177A,0x277B,0x373C,0x4EFD,0x765D,0x5395,0x7A93,0x9A33,0xA1F4,0xA9D4,0xA9D4,0xA9D4,0xA9D4,0xA193,0x78AF,0x99D4,0xA215,0xA1F4,0xA1F4,0xA215,0x91F5,0x6111,0x5131,0x4110,0x3931,0x4192,0x3971,0x3971,0x3131,0x3151,0x3151,0x3151,0x2930,0x2950,0x2950,0x2950,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2910,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2930,0x210F,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x1931,0x1931,0x1952,0x1953,0x1153,0x0955,0x11B7,0x11D8,0x09B7,0x11B6,0x1195,0x1153,0x1153,0x1131,0x1931,0x1931,0x1951,0x1931,0x1931,0x1931,0x1931,0x1932,0x1132,0x1133,0x19B6,0x21F7,0x21F7,0x21B6,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1911,0x1112,0x1153,0x1195,0x11B6,0x19F7,0x19F7,0x19D6,0x1195,0x1154,0x1133,0x1133,0x1132,0x1953,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1153,0x1153,0x1153,0x1153,0x0954,0x11B5,0x19F7,0x19F7,0x19D7,0x19B6,0x1975,0x1153,0x1112,0x1112,0x1931,0x2151,0x2151,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x210F,0x212F,0x2930,0x210F,0x2910,0x2910,0x2910,0x2910,0x2910,0x2910,0x290F,0x2910,0x290F,0x2930,0x210F,0x2930,0x2930,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x2910,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2930,0x2930,0x2130,0x2130,0x2110,0x2110,0x2110,0x1911,0x1932,0x1132,0x1154,0x19D6,0x21F7,0x21D7,0x21D7,0x1975,0x1974,0x1132,0x1911,0x1931,0x1910,0x2130,0x2130,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x292F,0x292F, + 0x2130,0x212F,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2910,0x2910,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x2930,0x2110,0x2110,0x2110,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x20EF,0x2910,0x210F,0x2910,0x20EF,0x2910,0x2110,0x2130,0x2130,0x2930,0x210F,0x212F,0x210F,0x2930,0x2930,0x212F,0x210F,0x210F,0x210F,0x2130,0x2950,0x2130,0x2131,0x1911,0x1911,0x1912,0x1933,0x1994,0x21D6,0x21F6,0x21F6,0x21F7,0x2A17,0x2A17,0x2217,0x2217,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D5,0x21D6,0x21D5,0x21D5,0x21D6,0x21D6,0x21D6,0x21F6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21F6,0x21D6,0x21F6,0x21F6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x21D6,0x19B6,0x19B6,0x21D6,0x21D6,0x19D6,0x19D6,0x21D6,0x21D6,0x21F6,0x21F7,0x21F6,0x19F6,0x19D6,0x19F7,0x19F7,0x19F8,0x11F8,0x11D7,0x0996,0x0976,0x0955,0x0955,0x0954,0x0934,0x0134,0x0955,0x1196,0x19D7,0x19D7,0x21D6,0x1154,0x1112,0x1911,0x1910,0x2110,0x2130,0x2130,0x212F,0x212F,0x2130,0x2930,0x212F,0x212F,0x210F,0x2930,0x2930,0x210F,0x2930,0x290F,0x290F,0x210F,0x292F,0x290F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2930,0x2930,0x290F,0x2930,0x2930,0x210F,0x212F,0x212F,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2151,0x2131,0x1931,0x1931,0x1111,0x1132,0x1133,0x1154,0x1174,0x11B5,0x11B5,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x1195,0x19B5,0x19B5,0x19B6,0x11B6,0x19B6,0x19D6,0x19F7,0x19D6,0x19F7,0x1A17,0x11D6,0x11D6,0x11F6,0x09D6,0x11F7,0x11D7,0x11D7,0x11B7,0x0997,0x0976,0x0976,0x0976,0x0155,0x0155,0x0135,0x0155,0x0155,0x0975,0x11F7,0x1A18,0x19F7,0x1174,0x1112,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x28EE,0x308D,0x510F,0xAAF6,0xB294,0xAA33,0xAA33,0xA232,0x8A51,0xF73F,0xD73E,0xCF1D,0xC71D,0xB6DC,0xB6DC,0xB6FC,0xB71C,0xB71C,0xB6FC,0xB6FC,0xB71C,0xBF3D,0xCF3E,0xDF3F,0x93F5,0x7A10,0x91F1,0xA232,0xB273,0xC294,0xCA94,0xCA74,0xD274,0xD274,0xD275,0xD295,0xD275,0xD254,0xCA54,0xCA75,0xCA95,0xBA74,0xAA93,0xB3F5,0xCDFB,0xCEFD,0xC71D,0xBEFC,0xBEFC,0xB6FC,0xB6FC,0xB6FC,0xB6FC,0xB6FC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xB6FC,0xB6FC,0xB6FC,0xB6FC,0xBF1C,0xCF1D,0xD69E,0x8312,0x8A31,0x9A12,0xAA53,0xBA74,0xC274,0xCA74,0xCA74,0xD274,0xD274,0xD274,0xD254,0xD254,0xD274,0xCA74,0xCA74,0xC274,0xBA73,0xAAB3,0xC4D9,0xD69D,0xCEFD,0xC71D,0xBEFC,0xB6FC,0xB6FC,0xB6FC,0xB6FC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xAEFC,0xB6FC,0xB6FC,0xB6FC,0xB71C,0xBF1C,0xBF1D,0xCEFE,0xD67E,0x8312,0x8A51,0x9A32,0xAA53,0xBA74,0xC274,0xCA75,0xCA75,0xD275,0xD275,0xD255,0xD275,0xD275,0xD274,0xCA74,0xCA54,0xC253,0xBA73,0xBB14,0xF5FE,0xE5DD,0xD4DB,0x8A31,0x91F1,0xA212,0xB274,0xC274,0xC294,0xCA74,0xCA74,0xD274,0xCA54,0xD274,0xD274,0xD274,0xD274,0xD274,0xD274,0xD274,0xCA54,0xCA54,0xCA54,0xCA54,0xC273,0xBA73,0xB2F3,0xCC57,0xE5BA,0xFEBD,0xF6DD,0xF6DD,0xF6BD,0xF6BD,0xEE3C,0xDD5A,0xB354,0xA231,0xB212,0xBA13,0xC254,0xC254,0xCA54,0xCA75,0xCA74,0xD254,0xD274,0xD274,0xD274,0xD294,0xD274,0xD274,0xD274,0xCA74,0xCA74,0xCA74,0xCA74,0xC294,0xB273,0x9AB2,0xD5BB,0xD6DE,0xCEFD,0xC71C,0xBEFC,0xB6FC,0xB6DC,0xB6DC,0xB6FC,0xBF1D,0xC73D,0xCF1E,0xD67D,0x7AB0,0x8A10,0xA212,0xB253,0xBA74,0xC274,0xCA94,0xCA95,0xD294,0xCA74,0xD274,0xD274,0xD294,0xD274,0xD274,0xD275,0xD255,0xD254,0xD254,0xCA54,0xC254,0xC293,0xBAD3,0xC3F5,0xF5FB,0xFEFF,0xFEFE,0xF6DD,0xFEBE,0xFE7E,0xCC57,0xAA92,0xAA32,0xBA33,0xC234,0xCA74,0xCA75,0xD275,0xD275,0xD275,0xD275,0xD275,0xD275,0xD275,0xD275,0xD275,0xD275,0xCA74,0xD295,0xCA75,0xCA75,0xC295,0xC294,0xC316,0xBAF5,0x99D1,0xA1F1,0xB233,0xC274,0xCA74,0xCA95,0xD295,0xD295,0xD275,0xD275,0xD274,0xD275,0xD295,0xCA95,0xCA74,0xC274,0xBA53,0xA272,0xB457,0xE6DF,0xD6FE,0xC6FD,0xBEDC,0xBEDC,0xBEFD,0xBEFD,0xC6FD,0xCEFD,0xDE9E,0x8B32,0x8A51,0x9A32,0xAA33,0xB253,0xC274,0xCA95,0xCA94,0xCA74,0xD274,0xD274,0xD274,0xD274,0xD274,0xCA54,0xCA54,0xC253,0xBA73,0xAAD3,0xC519,0xCE9D,0xC6FD,0xBF1D,0xBEFC,0xBEFC,0xB6FC,0xBEFC,0xBF1D,0xCEFE,0xCE1C,0x7AB1,0x89F0,0x99F1,0xAA33,0xBA74,0xCAB5,0xCA95,0xCA94,0xCA94,0xD294,0xD274,0xD274,0xD274,0xD274,0xD274,0xD254,0xD254,0xD254,0xCA74,0xCA54,0xCA73,0xBA93,0xB2D2,0xCC16,0xF5FB,0xFEDE,0xF6DD,0xF6DD,0xFEDD,0xFEBE,0xD4F8,0xA2B1,0xAA31,0xB212,0xC213,0xC234,0xC254,0xCA54,0xCA74,0xCA74,0xCA74,0xD274,0xD274,0xD274,0xD274,0xD274,0xD274,0xD274,0xD274,0xCA74,0xCA94,0xC294,0xBAB3,0xBB95,0xFE7E,0xF6BE,0xF6DE,0xF6DD,0xFEBE,0xFE9E,0xCBF6,0xAA11,0xB9F2,0xC1F2,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xC9F3,0xCA13,0xCA14,0xC9F4,0xD214,0xCA14,0xCA15,0xCA16,0xC237,0xBA59,0xAABC,0x40D7,0x291A,0x215C,0x219D,0x199D,0x119E,0x119D,0x117D,0x117D,0x197D,0x215C,0x3119,0x6179,0x91D9,0x9996,0xB9F7,0xC1F6,0xC1F6,0xB9F5,0xB1D5,0xA1D5,0x9216,0x7A98,0x5B7B,0x4D3E,0x35BF,0x25BE,0x1DDD,0x15DD,0x0E1C,0x067A,0x06B9,0x0719,0x0759,0x0F7A,0x0F7A,0x177A,0x275B,0x373C,0x4EDD,0x765E,0x5BD6,0x7A93,0x9A53,0xAA34,0xA9D4,0xA9D4,0xA9D4,0xA9D4,0x9152,0x78D0,0x99B3,0xA214,0xAA35,0xAA15,0xA235,0x89B4,0x588F,0x5951,0x4110,0x3910,0x3931,0x4172,0x3971,0x3951,0x3151,0x3131,0x3151,0x3151,0x3150,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2130,0x2930,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x2930,0x212F,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x2130,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1132,0x1133,0x0954,0x11B6,0x11D7,0x11B7,0x11B6,0x1175,0x1133,0x1152,0x1931,0x1931,0x1930,0x1951,0x1951,0x1930,0x1910,0x1911,0x1932,0x1132,0x1133,0x19B6,0x21F7,0x21D6,0x1995,0x1112,0x1932,0x1931,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x2130,0x2110,0x2130,0x2151,0x2131,0x1911,0x1911,0x1132,0x1153,0x1195,0x19B6,0x19F6,0x19D6,0x11B5,0x11B5,0x1194,0x1154,0x1153,0x0933,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1153,0x1132,0x0933,0x0933,0x0933,0x0974,0x1195,0x11B6,0x19F7,0x19F7,0x19D7,0x19D6,0x1995,0x1153,0x1132,0x1111,0x1911,0x1931,0x2131,0x2150,0x2130,0x212F,0x210F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x290F,0x290F,0x290F,0x2910,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2930,0x212F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2110,0x2110,0x1911,0x1911,0x1112,0x1133,0x1174,0x19D6,0x21F7,0x19D6,0x21D7,0x1995,0x1953,0x1112,0x1931,0x1931,0x1910,0x2130,0x2110,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F, + 0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2910,0x2930,0x290F,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2910,0x2910,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2930,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2951,0x2131,0x1911,0x1911,0x1912,0x1933,0x1995,0x21F7,0x21F7,0x21F7,0x21F6,0x19B6,0x19B5,0x1995,0x1174,0x1174,0x1194,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1153,0x1173,0x1174,0x1174,0x1153,0x1174,0x1174,0x1174,0x1154,0x1174,0x1154,0x1974,0x1954,0x1154,0x1954,0x1954,0x1174,0x1174,0x1174,0x1174,0x1174,0x1174,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1994,0x1974,0x1994,0x1994,0x1995,0x1995,0x1995,0x1995,0x19B5,0x19B5,0x19B6,0x19D6,0x11D7,0x19D7,0x19F7,0x11D7,0x1196,0x0976,0x0135,0x0134,0x0134,0x0934,0x0955,0x1196,0x19B7,0x19B7,0x1995,0x1153,0x1952,0x1931,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x290F,0x210F,0x290F,0x290F,0x292F,0x212F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x212F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2130,0x2130,0x2131,0x2151,0x1931,0x1931,0x1132,0x1132,0x1153,0x19D5,0x2217,0x2218,0x2238,0x2238,0x2259,0x2259,0x2259,0x2258,0x2259,0x2238,0x2238,0x2258,0x2A58,0x2238,0x2258,0x2238,0x2238,0x2238,0x2238,0x1A17,0x1A38,0x1A38,0x1A38,0x1218,0x1A38,0x11F7,0x1217,0x1217,0x11F7,0x11F7,0x11F7,0x11D7,0x11B7,0x0996,0x0976,0x0155,0x0135,0x0135,0x0135,0x0135,0x0155,0x0155,0x11D7,0x1A38,0x19F7,0x1174,0x1132,0x1931,0x1930,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x30EF,0x308D,0x510F,0xB2F6,0xB294,0xAA53,0xAA32,0xA212,0x8A51,0xF73F,0xDF3D,0xD75D,0xC71C,0xBEFC,0xBEFC,0xB6FC,0xB6FC,0xB71C,0xB71C,0xB71C,0xBF1C,0xC75D,0xCF5E,0xE75F,0x93F4,0x7A10,0x9211,0xA232,0xB273,0xC294,0xCAB5,0xCA94,0xD294,0xD295,0xD295,0xD295,0xD295,0xD275,0xD275,0xCA95,0xCAB5,0xC294,0xAAB3,0xB3F5,0xD61B,0xD6FD,0xC71C,0xBF1C,0xBF1C,0xBF1C,0xBEFC,0xB71C,0xB71C,0xB71C,0xB71C,0xB71C,0xB71C,0xB71C,0xB71C,0xB71C,0xB6FB,0xBF1C,0xBF1C,0xC73C,0xCF3D,0xDEBD,0x8312,0x8251,0x9A11,0xAA53,0xBA74,0xC274,0xCA94,0xCA74,0xD274,0xD274,0xD294,0xD274,0xD274,0xD294,0xCA94,0xCA94,0xC294,0xBA94,0xAAD3,0xCD19,0xDEBD,0xCEFD,0xC6FC,0xBEFC,0xBEFC,0xB71C,0xB71C,0xB6FC,0xB71C,0xB71C,0xB71C,0xB6FC,0xB6FC,0xB71C,0xB71C,0xB71B,0xB71B,0xBF3C,0xBF3C,0xC73D,0xD71E,0xDE9D,0x8B12,0x8A51,0x9A32,0xAA73,0xBA74,0xC295,0xCA95,0xCA95,0xD295,0xD275,0xD275,0xD275,0xD295,0xD295,0xCA74,0xCA74,0xCA94,0xC2B4,0xC335,0xF5BE,0xF5DE,0xA2D3,0x91F1,0x99F1,0xAA33,0xBA94,0xC294,0xCA94,0xCA94,0xD295,0xCA74,0xD274,0xD274,0xD294,0xD274,0xD274,0xD274,0xD274,0xD274,0xCA74,0xCA74,0xCA74,0xC293,0xBAB3,0xBB33,0xDD39,0xF69D,0xEEDC,0xE6FC,0xDEFB,0xDEFB,0xDF1B,0xDEFB,0xE6DC,0xEEBC,0xF65D,0xD4B8,0x9A51,0xA211,0xB233,0xBA74,0xC274,0xCA74,0xCA74,0xCA74,0xCA74,0xD274,0xD294,0xD294,0xD294,0xD294,0xD294,0xD294,0xD294,0xCA74,0xCA94,0xCAB4,0xBA73,0xAAB3,0xA394,0xDE9E,0xD6FD,0xC71C,0xC71C,0xBEFC,0xBEFC,0xBEFC,0xBF1C,0xC73D,0xC73D,0xD71E,0xCDDB,0x7A2F,0x9211,0xA212,0xB273,0xBA74,0xCA94,0xCA95,0xD295,0xD2B5,0xD294,0xD294,0xD294,0xD294,0xD274,0xD274,0xD274,0xD274,0xCA74,0xCA74,0xC274,0xBA93,0xBB13,0xDCD8,0xF67C,0xEEFC,0xE6FC,0xDEDB,0xDEFB,0xE6DB,0xEEFD,0xF6DD,0xE57A,0xA291,0xAA32,0xB233,0xC274,0xCA74,0xCA75,0xCA74,0xD275,0xD275,0xD275,0xD295,0xD295,0xD295,0xD295,0xD295,0xCA95,0xD295,0xD295,0xCA95,0xCA95,0xC295,0xC2B5,0xBAD5,0x99D1,0xA1F1,0xB253,0xC294,0xCAB5,0xCA95,0xD2B5,0xD295,0xD295,0xD295,0xD295,0xD295,0xD295,0xCA95,0xCA94,0xC294,0xBA73,0xAA92,0xBC57,0xE6DE,0xD6FE,0xCF1D,0xC6FC,0xC6FC,0xC71D,0xC71D,0xC71D,0xD6FD,0xDE9E,0x8B32,0x8A51,0x9A32,0xAA53,0xB273,0xC294,0xCA94,0xCA94,0xD294,0xD294,0xD294,0xD294,0xD274,0xD274,0xD274,0xCA74,0xC274,0xBA73,0xAAF3,0xC539,0xD6DD,0xCEFD,0xBEFC,0xBEFC,0xBEFC,0xBF1C,0xBF1D,0xC71D,0xD6FE,0xACB8,0x7A30,0x89F1,0x99F1,0xB273,0xC294,0xCAB5,0xCAB5,0xCA95,0xD294,0xD294,0xD294,0xD294,0xD294,0xD294,0xD274,0xD294,0xD274,0xD274,0xCA94,0xCA94,0xBAB3,0xB2F2,0xE539,0xF69D,0xEEDC,0xE6FC,0xE71C,0xDF1C,0xE6FC,0xE6FC,0xF6DD,0xF5FC,0xAB12,0xA231,0xB212,0xBA33,0xC254,0xC274,0xCA94,0xCA94,0xCA94,0xD295,0xD295,0xD295,0xD295,0xD274,0xD294,0xD295,0xD294,0xCA94,0xCA94,0xC2B4,0xBAB3,0xB313,0xF5FD,0xFEBE,0xF6FD,0xF6FD,0xF6DD,0xFEDE,0xFE9E,0xD417,0xA210,0xB1F1,0xB9D2,0xC1D2,0xC1D3,0xC9F3,0xC9F3,0xC9F3,0xC9F4,0xC9F3,0xCA14,0xCA14,0xCA15,0xCA16,0xC237,0xBA59,0xAABC,0x40D7,0x291A,0x215B,0x197D,0x199D,0x11BE,0x119E,0x119D,0x119D,0x115C,0x195C,0x313A,0x595A,0x89DA,0xA1D8,0xB1F7,0xB9F6,0xC216,0xB9F5,0xB1D5,0xA1D5,0x9216,0x7A58,0x6319,0x4CBC,0x3DBE,0x2DDE,0x1DBD,0x1DDD,0x161C,0x0E9A,0x06B9,0x0739,0x0759,0x0779,0x0F7A,0x177A,0x275B,0x373C,0x56DD,0x765D,0x5BB5,0x7A93,0x9A54,0xA213,0xA9F4,0xA9D4,0xA9D4,0xA9F5,0x8111,0x78D0,0x99D4,0xAA35,0xA1F4,0xA214,0xA215,0x89B4,0x506E,0x5131,0x4951,0x3910,0x3931,0x3951,0x3972,0x3972,0x3151,0x3151,0x3151,0x3150,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2950,0x2130,0x2130,0x2930,0x2130,0x2130,0x2930,0x292F,0x2930,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1132,0x1154,0x11B6,0x11D7,0x11B7,0x11B6,0x1174,0x1132,0x1132,0x1931,0x1931,0x1930,0x2151,0x1950,0x1930,0x1930,0x1931,0x1932,0x1133,0x1133,0x19B6,0x21F7,0x21F7,0x1995,0x1112,0x1932,0x2151,0x2130,0x2110,0x2130,0x2130,0x2130,0x212F,0x210F,0x212F,0x2930,0x2110,0x2110,0x2130,0x2110,0x2110,0x2131,0x1931,0x1952,0x1153,0x1195,0x19B6,0x19D6,0x19F6,0x19F6,0x11B5,0x11B5,0x1175,0x1154,0x1153,0x0933,0x1133,0x1153,0x1133,0x1133,0x1133,0x0933,0x0933,0x0933,0x0954,0x1175,0x11B5,0x19F7,0x1A17,0x19F7,0x19F7,0x19B6,0x1995,0x1153,0x1132,0x1111,0x1111,0x1911,0x1930,0x2130,0x2130,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x210F,0x290F,0x290F,0x2910,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x1910,0x2131,0x1911,0x1111,0x1133,0x1174,0x19D6,0x21F7,0x21F7,0x21D6,0x1995,0x1133,0x1932,0x1911,0x1910,0x1910,0x1910,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x210F,0x210F,0x290F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F, + 0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2110,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2130,0x210F,0x2130,0x2130,0x212F,0x2130,0x2130,0x2110,0x2130,0x2131,0x1910,0x18F1,0x1912,0x1933,0x1995,0x21F7,0x21D7,0x21D7,0x19B6,0x1975,0x1154,0x1133,0x1133,0x0933,0x0912,0x0932,0x0912,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1152,0x1132,0x1132,0x1132,0x1132,0x1112,0x1933,0x1133,0x1112,0x1132,0x1933,0x1112,0x1112,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1133,0x1112,0x1112,0x1112,0x1113,0x1133,0x1133,0x1133,0x1133,0x1133,0x1134,0x1155,0x1175,0x1196,0x11B6,0x11B7,0x11D7,0x0975,0x0975,0x0975,0x1196,0x19B7,0x19F7,0x19B7,0x19B6,0x1174,0x1133,0x1932,0x2151,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x290F,0x290F,0x212F,0x212F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1952,0x1952,0x1153,0x1174,0x19F6,0x1A17,0x1A17,0x1A17,0x19F7,0x19F7,0x2238,0x1A18,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x19D7,0x19F7,0x19F7,0x19F7,0x19F7,0x19F7,0x11F7,0x11D7,0x11F7,0x1217,0x11F7,0x1217,0x11F7,0x09D7,0x09B7,0x11D7,0x11D7,0x11D7,0x09B7,0x0996,0x0976,0x0135,0x0135,0x0955,0x0155,0x0155,0x0976,0x11D7,0x19F7,0x19D7,0x1174,0x1112,0x1931,0x1930,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x212F,0x210F,0x292F,0x290F,0x28EF,0x308D,0x510F,0xB2F6,0xB274,0xAA33,0xAA12,0xA212,0x8A30,0xFF5F,0xDF5D,0xD75D,0xCF3C,0xBEFC,0xBEFC,0xBF1C,0xBF1B,0xBF1B,0xB71B,0xBF1B,0xC73C,0xC75D,0xD77E,0xE75F,0x93D4,0x7A30,0x9211,0xA252,0xB294,0xC2B4,0xCAB5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD295,0xD2B5,0xD2B5,0xCAD5,0xC2B4,0xB2D3,0xB415,0xD61B,0xD71D,0xCF3C,0xC71C,0xC71C,0xBF1C,0xBF1C,0xBF1C,0xBF1C,0xBF1B,0xBF1B,0xBF1B,0xBF1C,0xBF1B,0xBF1B,0xBF3C,0xBF1B,0xBF1B,0xC73C,0xC75C,0xD73D,0xDEBD,0x8331,0x8250,0x9231,0xAA73,0xBA94,0xC294,0xCA94,0xD2B5,0xD295,0xD2B5,0xD294,0xD295,0xD294,0xD294,0xCAB4,0xCAB5,0xCAB4,0xC2B4,0xB2F3,0xCD39,0xDEBD,0xD71D,0xCF1C,0xC71C,0xBF1C,0xBF1B,0xBF1C,0xBF1C,0xBF1C,0xBF1C,0xBF1C,0xBF1C,0xBF1B,0xBF1B,0xBF1B,0xBF1B,0xBF1B,0xBF3B,0xC73C,0xC73C,0xD73E,0xDE9D,0x8B12,0x8A51,0x9A11,0xAA53,0xBA94,0xC294,0xCAB5,0xCA95,0xD295,0xD295,0xD295,0xD295,0xD295,0xD295,0xCA94,0xCA94,0xCAB4,0xC2D4,0xC315,0xFD7D,0xCC38,0x89D0,0x99F1,0xA212,0xBA74,0xC294,0xCAB5,0xCAB5,0xD2D5,0xD295,0xD295,0xD2B5,0xD2B5,0xD295,0xD294,0xD295,0xD294,0xD295,0xD294,0xCA94,0xCA94,0xC294,0xB292,0xBBB4,0xEDDB,0xF6DD,0xE6FC,0xDF1C,0xDF1B,0xD71B,0xD71B,0xD71A,0xDF3B,0xDF1B,0xDEDB,0xE6BB,0xF6BD,0xDD59,0x9AB1,0xA231,0xB233,0xBA74,0xC294,0xC294,0xCA94,0xD294,0xD294,0xD2B5,0xD2B5,0xD2B5,0xD294,0xD2B5,0xD2B5,0xD294,0xCA94,0xCAB4,0xCAD5,0xC294,0xB293,0xA313,0xD59B,0xDEFE,0xCF1D,0xCF1C,0xC71C,0xC6FC,0xC6FC,0xC73D,0xC73D,0xCF5D,0xE73F,0xAC36,0x820F,0x9211,0xA232,0xBA74,0xC294,0xCAB5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD294,0xD294,0xD294,0xD294,0xD295,0xD294,0xCA94,0xC294,0xBAB3,0xC374,0xEDBA,0xEE7C,0xEEFC,0xDEFB,0xD6DA,0xD6FB,0xD71B,0xDF1B,0xDF1B,0xE6FC,0xEEDD,0xDD7A,0x9A70,0xA211,0xAA12,0xBA53,0xC274,0xCA95,0xD295,0xD295,0xD295,0xD295,0xD295,0xD295,0xD295,0xD295,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xCAB5,0xC294,0xC294,0xBA94,0xA1F1,0xA1F1,0xB253,0xC294,0xCAB5,0xCAB5,0xD2B5,0xD2B5,0xD2B5,0xD295,0xD295,0xD2B5,0xD2B5,0xCAB5,0xCAB5,0xCAB4,0xBA93,0xAA92,0xBC77,0xEEDE,0xDF1D,0xCF1D,0xC6FC,0xC6FC,0xC71C,0xC71C,0xCF1C,0xD71D,0xDE9E,0x8B32,0x8A51,0x9A31,0xAA52,0xB273,0xC2B4,0xCAB5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD294,0xD294,0xD294,0xD294,0xCA94,0xCA94,0xC2B3,0xAAF3,0xCD59,0xDEDD,0xD71D,0xCF1D,0xC6FC,0xC6FC,0xC73C,0xC73D,0xCF3D,0xDF1F,0x9373,0x81F0,0x91F1,0xA212,0xBA94,0xC2B5,0xCAD5,0xCAD5,0xCAB5,0xD2B5,0xD2B4,0xD2B4,0xD2B5,0xD2B5,0xD295,0xD294,0xD295,0xD294,0xCA74,0xCA94,0xC2B3,0xB312,0xFE1C,0xFEDD,0xEEFC,0xE71C,0xDF1B,0xDF1B,0xDF1B,0xDF1B,0xDF1B,0xE6FC,0xEEFD,0xFF1F,0xAB32,0x9A10,0xAA12,0xB233,0xC294,0xC294,0xCA94,0xCAB5,0xD295,0xD295,0xD2B5,0xD295,0xD295,0xD294,0xD2B5,0xD2B5,0xD2B5,0xCAB4,0xCAB4,0xC2D4,0xAAD3,0xE55A,0xFEBE,0xF6FD,0xEEFD,0xEEFD,0xF6FD,0xFEDD,0xFEBE,0xCC16,0xA210,0xB1D1,0xB9D2,0xC1B3,0xC1D3,0xC9D3,0xC9D3,0xC9F3,0xC9F3,0xC9F4,0xCA14,0xCA15,0xC216,0xBA17,0xBA59,0xAADC,0x40D7,0x291A,0x215B,0x195C,0x117D,0x11BE,0x099E,0x099E,0x119D,0x115C,0x195C,0x293B,0x493A,0x7199,0xA219,0xB218,0xB9F7,0xBA16,0xBA16,0xB216,0xA9F6,0x9A16,0x8217,0x6297,0x543B,0x4D9E,0x35FE,0x25FE,0x1DDD,0x15FB,0x067A,0x06D9,0x0719,0x0F79,0x0F79,0x0F79,0x177A,0x277B,0x371C,0x4EBC,0x765D,0x5BB5,0x7A93,0x9A53,0xAA34,0xA9F4,0xA9F4,0xA9F4,0xA1F4,0x78D0,0x7911,0x8972,0xB276,0xAA15,0xAA35,0xA235,0x91F4,0x588F,0x48EF,0x5171,0x4130,0x3910,0x3110,0x3951,0x3951,0x3951,0x3151,0x3150,0x2930,0x3150,0x2950,0x2930,0x2930,0x292F,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x212F,0x2930,0x292F,0x292F,0x290F,0x290F,0x292F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x292F,0x210F,0x290F,0x210F,0x290F,0x210F,0x2930,0x2930,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x1911,0x1111,0x1112,0x1133,0x11B6,0x11F7,0x11D7,0x11B6,0x1154,0x1132,0x1131,0x1931,0x1930,0x1930,0x1951,0x1930,0x1930,0x1930,0x1951,0x1952,0x1132,0x1133,0x19B6,0x2217,0x21F7,0x19B5,0x1112,0x1932,0x2131,0x2130,0x2130,0x210F,0x212F,0x2930,0x210F,0x290F,0x210F,0x210F,0x290F,0x2930,0x2110,0x2110,0x2130,0x2130,0x2131,0x1931,0x1932,0x1133,0x1154,0x19B5,0x19D6,0x19D6,0x19F7,0x19D6,0x1195,0x1195,0x1195,0x1195,0x1174,0x1174,0x1154,0x1154,0x1154,0x1175,0x1175,0x1196,0x1196,0x19B7,0x19D7,0x19D7,0x21F7,0x19D6,0x19B5,0x1994,0x1153,0x1132,0x1132,0x1111,0x1931,0x1931,0x2130,0x2130,0x2130,0x212F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x2130,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2110,0x2110,0x2930,0x2130,0x2130,0x1910,0x1911,0x1911,0x1132,0x1153,0x1174,0x19B6,0x2217,0x2217,0x21D7,0x1975,0x1132,0x1111,0x1911,0x18F0,0x2110,0x2130,0x2150,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x210F,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x2930,0x212F,0x2930,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2150, + 0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1911,0x1911,0x1111,0x1933,0x1975,0x21D6,0x21F7,0x21F7,0x19B6,0x1154,0x1133,0x1133,0x1133,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1131,0x1131,0x1131,0x1131,0x1951,0x1931,0x1931,0x1131,0x1131,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1912,0x1932,0x1932,0x1932,0x1931,0x1932,0x1932,0x1912,0x1911,0x1911,0x1911,0x1912,0x1912,0x1912,0x1912,0x1912,0x1112,0x1932,0x1111,0x1112,0x1112,0x1112,0x1112,0x1132,0x1112,0x1133,0x1133,0x1134,0x1134,0x1975,0x19B6,0x19D7,0x19D7,0x19F7,0x19F7,0x19D7,0x19F7,0x21F8,0x19D7,0x19D7,0x1995,0x1974,0x1952,0x1931,0x2151,0x2150,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x2110,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1910,0x2131,0x1931,0x1932,0x1132,0x1153,0x1194,0x2217,0x1A17,0x1A17,0x19D6,0x19D6,0x11B6,0x19B6,0x11B6,0x1195,0x1195,0x1195,0x1175,0x1195,0x1175,0x1195,0x1174,0x1174,0x1195,0x1995,0x1175,0x1175,0x1175,0x1174,0x1195,0x1195,0x1195,0x1195,0x0995,0x11B5,0x11B5,0x11B6,0x11B6,0x11B6,0x11B6,0x19F8,0x11B7,0x11F8,0x11B7,0x0976,0x0155,0x0955,0x0955,0x0955,0x0976,0x1196,0x19F7,0x19F7,0x19D6,0x1154,0x1932,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x292F,0x292F,0x290F,0x28EE,0x308D,0x50EF,0xAAD5,0xB274,0xAA33,0xA212,0xA212,0x8A0F,0xFF7F,0xDF5D,0xDF5D,0xCF3C,0xC71B,0xC71B,0xBF1B,0xBF1B,0xBF1B,0xBF3B,0xC73B,0xC73C,0xCF7C,0xD77E,0xE71E,0x8BB3,0x7A2F,0x9211,0xA252,0xB294,0xC2D4,0xCAD5,0xD2D5,0xD2D5,0xD2D5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xCAB5,0xCAD5,0xC2B4,0xB2F3,0xB415,0xDE3B,0xDF1D,0xCF3C,0xCF3C,0xC73C,0xC71B,0xC71C,0xC71B,0xBF1B,0xBF1B,0xBF3B,0xBF1B,0xBF3B,0xBF1B,0xBF1B,0xBF3B,0xBF3B,0xC73B,0xC73C,0xCF5C,0xD75D,0xDEDE,0x8331,0x8250,0x9231,0xAA73,0xBA94,0xC2B5,0xCAD5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B4,0xCAB4,0xCAB4,0xC2B4,0xC2B4,0xAAF3,0xD559,0xDEBD,0xD6FC,0xCF1C,0xCF1C,0xC71B,0xC73B,0xBF3B,0xBF3B,0xBF3B,0xC71B,0xC71B,0xBF1B,0xBF1B,0xBF1B,0xBF1B,0xC73B,0xC73B,0xC73B,0xCF5C,0xCF5C,0xDF5D,0xDE9D,0x8B12,0x8A51,0x9A32,0xAA53,0xBA94,0xCAB5,0xCAD5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B4,0xCAD4,0xCAD5,0xCAF5,0xC315,0xE47A,0xAAB3,0x9A11,0x99F2,0xAA33,0xBAB4,0xC2B5,0xCAB5,0xCAB5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B4,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xCAB4,0xC2B4,0xBAB3,0xBB53,0xEDFB,0xF6DC,0xE71C,0xDF3B,0xD73B,0xD73B,0xD73B,0xD73A,0xD73A,0xD73A,0xD73A,0xDF3B,0xDF1B,0xE6FC,0xEEBC,0xDD9A,0x9AB1,0x9A31,0xAA53,0xBA94,0xC2D5,0xCAD5,0xCAB5,0xD2B4,0xD2B5,0xD2B5,0xD2B5,0xD2D5,0xD2D5,0xD2B5,0xD2B5,0xD2B5,0xD2D5,0xCAD5,0xC2B4,0xBA93,0xAAD3,0xBC36,0xE6DD,0xD71C,0xD71C,0xCF1C,0xCF1C,0xC71C,0xCF5D,0xCF5D,0xCF5D,0xEF5F,0x8B12,0x89F0,0x9A11,0xAA52,0xBA94,0xC2B4,0xCAD5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2B5,0xD2B4,0xD2B5,0xD2B4,0xD2B4,0xD2B4,0xCAB4,0xCA94,0xBAB3,0xBB33,0xE559,0xF6BC,0xE6FB,0xDF1B,0xDF3B,0xD71B,0xD71A,0xD71A,0xD71A,0xD73B,0xDF3B,0xE71C,0xF6DD,0xD4F8,0x9230,0xA1F1,0xB212,0xC274,0xCA94,0xCAB5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xDAD5,0xD2B5,0xD2B5,0xD2B5,0xD295,0xD2B5,0xD2D5,0xD2D5,0xCAB5,0xC2B5,0xBA94,0xA1F1,0xA1F1,0xB253,0xC2B4,0xCAD5,0xD2D5,0xD2D5,0xD2B5,0xD2B5,0xD2B5,0xD295,0xD2B5,0xD2B5,0xD2D5,0xCAB5,0xCAB4,0xC2B3,0xAAB2,0xBC77,0xEEFE,0xDF1D,0xD71D,0xCF1C,0xCEFC,0xCF1C,0xCF3C,0xCF3C,0xDF3D,0xE6BE,0x8B32,0x8A50,0x9A31,0xAA52,0xBA94,0xC2B4,0xCAD5,0xD2D5,0xD2D5,0xD2B5,0xD2D5,0xD2B5,0xD2B5,0xD2B5,0xD294,0xCAB4,0xCAB4,0xC2B4,0xB313,0xCD79,0xDEDD,0xD71D,0xCF3C,0xC6FC,0xC71C,0xCF5D,0xD75D,0xD75D,0xDEBD,0x8290,0x81D0,0x91F1,0xA232,0xBA94,0xC2D5,0xCAD5,0xCAD5,0xD2D5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD294,0xCA94,0xCA94,0xC2B3,0xB2F2,0xED9A,0xF6DD,0xE6FC,0xE71B,0xDF3B,0xDF3B,0xD71B,0xD73B,0xD73B,0xD73B,0xDF3B,0xE73C,0xEF1D,0xEDFB,0x9AB1,0xA231,0xAA12,0xBA73,0xC2B4,0xCAB4,0xCAB5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD2D5,0xD2D5,0xCAD4,0xCAD4,0xC2D4,0xB2D3,0xCC36,0xFEDE,0xEEFD,0xEEFC,0xEF1C,0xEF1C,0xF71D,0xFEFD,0xFEBE,0xE4D9,0x99EF,0xB1D1,0xB9B2,0xC1B2,0xC1D2,0xC9D3,0xC9D3,0xC9F3,0xC9F4,0xCA14,0xCA15,0xC1F5,0xBA17,0xB258,0xA2BC,0x40D7,0x291A,0x215C,0x197D,0x119D,0x119E,0x099E,0x099E,0x119E,0x119D,0x197D,0x213B,0x415A,0x617A,0x921A,0xAA39,0xB217,0xB1F6,0xBA16,0xBA56,0xAA36,0x9A16,0x89F7,0x6A77,0x53BA,0x555E,0x3DDE,0x2DFE,0x1DDD,0x161B,0x0E9A,0x06D8,0x0719,0x0739,0x0F79,0x0F79,0x177A,0x2F7B,0x3F1C,0x4E9C,0x763D,0x5B75,0x7A93,0x9A53,0xA1F3,0xA9F4,0xA9F4,0xA215,0x91B3,0x70D0,0x7911,0x8152,0xA235,0xA235,0xA214,0xA215,0xA235,0x6910,0x48AE,0x5171,0x4951,0x3910,0x3910,0x3951,0x3951,0x3971,0x3150,0x3150,0x3150,0x3150,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x212F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x2110,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1911,0x1132,0x1133,0x1195,0x19F7,0x19F7,0x11B6,0x1153,0x1132,0x1131,0x1931,0x1930,0x1930,0x1950,0x1930,0x1930,0x1930,0x1930,0x1931,0x1132,0x1133,0x19B5,0x21F7,0x21F7,0x1995,0x1112,0x1912,0x1931,0x2130,0x2130,0x210F,0x212F,0x2930,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2930,0x2930,0x2110,0x2130,0x2130,0x1910,0x1911,0x1112,0x1133,0x1974,0x1195,0x19D6,0x19F7,0x19D7,0x19B6,0x19B6,0x11B6,0x19D6,0x19D6,0x19B6,0x1196,0x1196,0x1196,0x19B6,0x19D7,0x19F7,0x19F7,0x19D7,0x19D7,0x19D7,0x19B6,0x19B5,0x1994,0x1973,0x1952,0x1932,0x1931,0x1911,0x1931,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x292F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1911,0x1132,0x1133,0x1174,0x19B5,0x2217,0x2217,0x21D7,0x1995,0x1133,0x1112,0x1110,0x18F0,0x1910,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x212F,0x210F,0x2930,0x2930,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x292F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130, + 0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2110,0x2910,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x2130,0x2130,0x2150,0x2130,0x2131,0x2131,0x1910,0x1911,0x1112,0x1133,0x1974,0x19B6,0x2217,0x2217,0x21B6,0x1974,0x1154,0x1133,0x1112,0x1132,0x1132,0x1152,0x1952,0x1952,0x1132,0x1131,0x1931,0x1931,0x1951,0x1951,0x1931,0x1930,0x1930,0x1930,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x2132,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x2131,0x1931,0x2151,0x1931,0x2152,0x1931,0x1951,0x1931,0x2152,0x1951,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1912,0x1912,0x1112,0x1133,0x1974,0x2195,0x21D7,0x21F7,0x21D7,0x19D7,0x2218,0x2218,0x2A18,0x21F7,0x1995,0x1974,0x1953,0x1952,0x1931,0x2130,0x2150,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x212F,0x210F,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2132,0x1912,0x1132,0x1133,0x1995,0x21F6,0x2217,0x2217,0x19D6,0x1194,0x1174,0x1133,0x1132,0x1153,0x1153,0x1153,0x1132,0x1112,0x1132,0x1112,0x1112,0x1132,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x0912,0x0912,0x1132,0x0932,0x0932,0x0933,0x0933,0x0934,0x0955,0x11B6,0x19F8,0x11D8,0x11F8,0x11D7,0x0976,0x0956,0x0976,0x1196,0x11B7,0x19F8,0x11D7,0x19D7,0x1996,0x1133,0x1932,0x1931,0x2151,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x292F,0x290F,0x28EE,0x308D,0x50EE,0xAAD5,0xB273,0xAA12,0xA212,0xA211,0x8A0F,0xFF5F,0xE75D,0xDF5C,0xD73C,0xC71B,0xC71B,0xC71B,0xC71B,0xC71B,0xC73B,0xC73B,0xC73B,0xCF7C,0xDF7D,0xE6FE,0x8B72,0x7A2F,0x9211,0xA272,0xB2B4,0xC2F5,0xCAF5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2F5,0xCAF5,0xC2D4,0xB313,0xBC35,0xDE3B,0xDF1C,0xD73C,0xCF3B,0xCF3B,0xCF3B,0xC71B,0xC71B,0xC73B,0xC73B,0xC73B,0xC73B,0xC73B,0xC71B,0xC71B,0xC73B,0xC73B,0xC73B,0xCF5B,0xCF7C,0xDF5D,0xE6DD,0x8331,0x8250,0x9231,0xAA73,0xBAB4,0xCAF5,0xCAF5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xCAF5,0xCAD4,0xC2D4,0xB2F3,0xDD9A,0xE6FD,0xDF1C,0xD71B,0xCF3B,0xCF1B,0xC73B,0xC73B,0xC73B,0xC73B,0xC71B,0xC73B,0xC73B,0xC73B,0xC73B,0xC73B,0xC73B,0xC73B,0xCF5B,0xCF5B,0xD75C,0xDF5D,0xE6BD,0x8B11,0x8A30,0x9A11,0xAA53,0xBAB4,0xCAD5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2B5,0xD2D5,0xD2F5,0xD2F5,0xCB15,0xCB36,0xD3B7,0xA232,0x9A12,0xA212,0xB273,0xC2D5,0xCAD5,0xCAD5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2B4,0xD2D5,0xD2D5,0xD2B5,0xD2B4,0xCAB4,0xC2D3,0xBB73,0xEDDA,0xF71D,0xEF3B,0xDF3B,0xDF3B,0xD73B,0xD73A,0xD73A,0xD73A,0xD73A,0xD73A,0xD73A,0xD75A,0xDF5B,0xDF3B,0xDEFB,0xF6FD,0xCCF7,0x8A4F,0x9A11,0xAA52,0xBAB4,0xCAD5,0xCAD5,0xCAB5,0xCAB5,0xD2B5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xCAD5,0xCAD5,0xC2D4,0xB2D3,0xAB53,0xEEBD,0xDF1D,0xDF3C,0xD73C,0xCF1B,0xCF3C,0xCF5C,0xCF5C,0xD75D,0xF77F,0x722E,0x89F0,0x9A11,0xAA53,0xC2D4,0xCAD5,0xCAD5,0xD2F5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2B5,0xD2B5,0xD2B4,0xD2B5,0xD2B5,0xCAB4,0xCAB4,0xBAF3,0xDCF8,0xF6BC,0xEF1C,0xE73B,0xDF5B,0xDF3B,0xD73A,0xD71A,0xD73A,0xD73A,0xD75A,0xDF5B,0xDF5B,0xE71C,0xF69C,0x9B32,0x91EF,0xA1F1,0xB253,0xC2B4,0xCAD5,0xD2F5,0xD2D5,0xD2B5,0xD2D5,0xD2D5,0xDAD5,0xD2D5,0xD2D5,0xD2B5,0xD2B5,0xD2D5,0xD2D5,0xD2D5,0xCAD5,0xC294,0xA1F1,0xA1F1,0xB273,0xC2B4,0xCAD5,0xD2D5,0xD2F5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2F5,0xCAD5,0xCAD4,0xC2B3,0xAAD2,0xC496,0xEEFD,0xDF1D,0xD73C,0xCF1C,0xCF1C,0xCF3C,0xCF3C,0xD73D,0xDF3E,0xE6DE,0x8B31,0x8A50,0x9A31,0xAA52,0xBA94,0xCAD5,0xD2F5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2B5,0xCAB4,0xCAD4,0xC2D4,0xB313,0xD579,0xE6FD,0xDF3D,0xD73C,0xCF1B,0xCF1B,0xD77D,0xD77D,0xDF5D,0xD67C,0x7A0F,0x89F0,0x91F1,0xAA32,0xBAB4,0xCAD5,0xCAD5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2B5,0xD2B5,0xCA94,0xCAB4,0xBAD3,0xD4B7,0xFEBC,0xEEFC,0xE73B,0xDF3B,0xDF3B,0xD71A,0xD73A,0xD73B,0xD73B,0xD73B,0xD73B,0xDF5B,0xE71C,0xE69B,0xB435,0x9A50,0xA231,0xAA32,0xBA94,0xC2B4,0xCAB4,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2F5,0xCAF5,0xCAF5,0xC2D4,0xBAD3,0xB353,0xFEFE,0xEEFC,0xEF1C,0xEF1C,0xEF1C,0xEF1C,0xF71C,0xFF1D,0xFF1E,0xED5A,0x9A0F,0xA9D0,0xB9B1,0xC1B2,0xC1D3,0xC9D3,0xC9F3,0xC9F3,0xCA14,0xC215,0xC1F5,0xBA16,0xB238,0x9A9B,0x40D7,0x291A,0x215C,0x197D,0x119D,0x099D,0x099E,0x099E,0x11BE,0x119E,0x117D,0x195C,0x315B,0x413A,0x6958,0xA23A,0xAA18,0xB216,0xB236,0xB236,0xAA16,0xA216,0x8A17,0x7277,0x5379,0x54DC,0x45DE,0x361E,0x25DD,0x1E1C,0x0E9A,0x06D9,0x0719,0x0738,0x0759,0x0F79,0x1F7A,0x275B,0x3F1C,0x56BD,0x761D,0x5B54,0x7A93,0x9A54,0xA1F3,0xAA14,0xA1D4,0xA1F4,0x89B3,0x70F0,0x7152,0x7111,0x9A15,0xA235,0xA1F4,0xA215,0xA235,0x81B3,0x488E,0x4910,0x5191,0x4150,0x3930,0x3931,0x3951,0x3151,0x3150,0x3150,0x3150,0x3150,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1132,0x1153,0x11B6,0x19F7,0x1A18,0x11B6,0x1153,0x1132,0x1951,0x1951,0x1930,0x1930,0x1950,0x2150,0x1930,0x1930,0x1931,0x1931,0x1132,0x1133,0x21B6,0x21F7,0x21F7,0x1995,0x1112,0x1932,0x2131,0x1910,0x2110,0x2110,0x2130,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x2910,0x2110,0x210F,0x2110,0x2130,0x2131,0x2111,0x1911,0x1932,0x1132,0x1954,0x1975,0x19B6,0x19D6,0x19D7,0x19D7,0x19F7,0x19F7,0x11D7,0x11B7,0x11B7,0x11B7,0x19B7,0x19D7,0x19F7,0x19D7,0x21F7,0x21D7,0x19B6,0x1995,0x1974,0x1153,0x1953,0x1932,0x1931,0x1931,0x1951,0x1930,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x212F,0x212F,0x292F,0x292F,0x290F,0x210F,0x210F,0x210F,0x212F,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x1112,0x1132,0x1174,0x19B5,0x2217,0x2238,0x19D6,0x1175,0x1133,0x1112,0x1111,0x1910,0x1910,0x2130,0x2950,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130, + 0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x292F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2151,0x1931,0x1931,0x1911,0x1132,0x1133,0x1174,0x21D6,0x21F7,0x21F7,0x19D6,0x1974,0x1153,0x1112,0x1112,0x1132,0x1932,0x1932,0x1952,0x1931,0x1931,0x1931,0x1931,0x1930,0x1930,0x1930,0x1930,0x1930,0x1930,0x1930,0x2130,0x1930,0x1930,0x2130,0x1910,0x1910,0x1910,0x2111,0x2131,0x1911,0x1911,0x2111,0x1910,0x2131,0x1930,0x1930,0x1910,0x1930,0x2130,0x2130,0x1930,0x2130,0x1930,0x2131,0x2131,0x2131,0x1910,0x2131,0x1930,0x2151,0x2130,0x2131,0x1910,0x2131,0x1931,0x1931,0x1931,0x1911,0x1932,0x1912,0x1912,0x1932,0x1933,0x1974,0x1975,0x1995,0x1975,0x19B6,0x21D6,0x21B6,0x1975,0x1974,0x1953,0x1932,0x1931,0x1931,0x2130,0x2150,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1932,0x1112,0x1133,0x1995,0x19D6,0x2237,0x2217,0x19B5,0x1153,0x1132,0x1132,0x1132,0x1111,0x1111,0x1111,0x1111,0x1111,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x10F1,0x1911,0x1111,0x1111,0x1111,0x1111,0x1112,0x1112,0x1113,0x0934,0x1175,0x19D7,0x19F7,0x19F8,0x19F8,0x11D7,0x11B7,0x1196,0x1196,0x19D7,0x19F7,0x19F7,0x1196,0x1154,0x1133,0x1932,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x28EF,0x308D,0x50EE,0xAAD5,0xB253,0xAA12,0xA1F2,0xA1F1,0x8A0F,0xFF7F,0xE75D,0xDF5C,0xD73B,0xCF1B,0xCF3B,0xC73B,0xC73A,0xC73A,0xCF3B,0xCF5B,0xCF5B,0xD77C,0xDF5D,0xE6DD,0x8B51,0x822F,0x9231,0xAA93,0xBAD4,0xC2F5,0xD315,0xD315,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xCB15,0xC2F4,0xBB34,0xBC35,0xDE5B,0xDF1C,0xD73B,0xD73B,0xCF3B,0xCF3B,0xCF3B,0xCF3B,0xCF3B,0xC73B,0xC73A,0xC73A,0xC73A,0xC73A,0xC73B,0xC73B,0xCF3B,0xCF5B,0xCF5B,0xD77B,0xDF5D,0xE6FD,0x8331,0x8250,0x9231,0xAA92,0xBAD4,0xCAF5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xDAF5,0xD2F5,0xD2F5,0xD2F5,0xCAF5,0xCAF4,0xC2D4,0xB2F2,0xDDBA,0xE6FC,0xDF1B,0xD71B,0xD73B,0xCF3B,0xCF3B,0xCF3A,0xCF3B,0xCF3B,0xCF3B,0xCF3B,0xCF3B,0xCF3A,0xCF3A,0xCF3A,0xCF3A,0xCF3A,0xCF5B,0xD75B,0xD75C,0xE75D,0xE6BD,0x8B11,0x8A30,0x9A11,0xAA72,0xBAB4,0xCAD5,0xCAD5,0xD2F5,0xD2F5,0xD2D5,0xD2D5,0xD2D5,0xD2F5,0xD2D5,0xD2F5,0xD2F5,0xD315,0xCB15,0xCB36,0xBAF5,0x9A11,0xA212,0xA232,0xBAB4,0xCAF5,0xCAF5,0xCAD5,0xD2D5,0xD2F5,0xD2F5,0xD2D5,0xDAF5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2B5,0xCAD4,0xC2F3,0xBB32,0xDD58,0xFEFD,0xEF3B,0xE73B,0xDF5A,0xDF5A,0xD73A,0xD73A,0xD73A,0xD73A,0xD73A,0xD73A,0xD73A,0xD73A,0xDF5A,0xDF7B,0xDF5B,0xE6FB,0xEEBC,0xB414,0x8A0F,0x9A10,0xAA73,0xC2D5,0xCAD5,0xCAD5,0xCAD5,0xD2D5,0xD2D5,0xD2F5,0xD2F5,0xD2F5,0xD2D5,0xD2F5,0xD2F5,0xD2F5,0xCAF5,0xCB15,0xBAF4,0xAB33,0xD599,0xEF1D,0xDF3C,0xD73C,0xD73B,0xD73B,0xD73C,0xD75C,0xDF7D,0xEF3F,0x71ED,0x9210,0x9A11,0xB273,0xC2D4,0xCAF5,0xD315,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xCAD4,0xC2F3,0xC394,0xF65B,0xEF1C,0xE73B,0xDF3B,0xDF3A,0xD73A,0xD73A,0xD73A,0xD73A,0xD73A,0xD75A,0xD75A,0xDF5B,0xE75C,0xF75D,0xCD38,0x81CE,0x99F0,0xAA32,0xC294,0xCAF5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2F5,0xD2F5,0xC2D4,0xA1F1,0x99F1,0xB273,0xC2D5,0xCAF5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2D5,0xD2F5,0xD2F5,0xD2F5,0xCAF5,0xCAF4,0xC2D3,0xB2D2,0xC4B6,0xF6FD,0xE73D,0xDF3C,0xD71C,0xD73C,0xD73C,0xD73C,0xD73C,0xE75D,0xEEDE,0x8B31,0x8A50,0x9A31,0xAA72,0xBAB4,0xCAF5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2D5,0xD2D5,0xD2D4,0xCAD4,0xC2D4,0xB333,0xD599,0xE6FD,0xDF3C,0xD73C,0xD71B,0xD71B,0xD75C,0xDF7D,0xE75D,0xC599,0x71EE,0x89F0,0x9A11,0xAA73,0xC2D5,0xCAF5,0xCAF5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xCAD4,0xC2D3,0xC374,0xF61B,0xF6FC,0xE6FB,0xDF1A,0xDF3B,0xDF3B,0xDF3A,0xD73A,0xD73A,0xD73A,0xDF5A,0xDF5B,0xDF5B,0xE75B,0xEF3C,0xDDFA,0x92B1,0xA251,0xA211,0xBA93,0xC2D4,0xCAB4,0xCAD5,0xD2F5,0xD2F5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2D5,0xD2F5,0xD315,0xCAF5,0xC2F4,0xBAD3,0xAB12,0xFEFE,0xEF1C,0xEF1C,0xEF1C,0xEF1C,0xEF3C,0xEF3C,0xF73C,0xFF3D,0xFF1E,0xF59B,0xA250,0xA9D0,0xB1B1,0xC1B2,0xC1B2,0xC1D3,0xC9F3,0xC1F4,0xC1F4,0xB9F5,0xBA16,0xAA38,0x9A9B,0x40D7,0x291A,0x215C,0x197D,0x119D,0x099D,0x099E,0x099E,0x099E,0x099E,0x119E,0x115D,0x215C,0x313A,0x4918,0x81FA,0xA239,0xB238,0xAA16,0xAA16,0xAA16,0xA236,0x9216,0x7A57,0x5B17,0x547B,0x4DDE,0x361E,0x2DFD,0x1E1B,0x0E79,0x06D9,0x0718,0x0F59,0x0F79,0x179A,0x1F7A,0x2F7B,0x3F3C,0x56BC,0x75DC,0x5334,0x7A93,0x9233,0x99F4,0xA1F4,0xA1F4,0x99F4,0x7952,0x7111,0x7172,0x6931,0x7972,0xA256,0xA235,0xA215,0x99F4,0x9A15,0x50AE,0x40AE,0x5171,0x4171,0x3930,0x3930,0x3931,0x3151,0x3150,0x3150,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x20EF,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x212F,0x212F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2150,0x2130,0x1931,0x1111,0x1133,0x1195,0x19D7,0x19F7,0x11B5,0x0932,0x1131,0x1931,0x1930,0x1930,0x1930,0x1930,0x2130,0x192F,0x1930,0x1930,0x1951,0x1132,0x1113,0x19B6,0x21F7,0x21F7,0x1995,0x1112,0x1932,0x1931,0x2110,0x2110,0x2930,0x210F,0x2930,0x290F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x2111,0x1911,0x1912,0x1932,0x1133,0x1154,0x1995,0x19B6,0x19D7,0x19D7,0x11D7,0x19D7,0x11D7,0x11B7,0x19B7,0x19B7,0x19D7,0x19D7,0x19B6,0x21B6,0x1995,0x1974,0x1133,0x1133,0x1932,0x1932,0x1931,0x1931,0x1930,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x292F,0x210F,0x292F,0x210F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x2930,0x290F,0x292F,0x292F,0x212F,0x212F,0x2930,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2150,0x2111,0x1931,0x1931,0x1932,0x1133,0x1154,0x19D6,0x19F7,0x2217,0x19D7,0x1175,0x1133,0x1112,0x10F1,0x1910,0x190F,0x2130,0x2950,0x212F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x292F,0x212F,0x212F,0x212F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x212F,0x210F,0x212F,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130, + 0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2910,0x2910,0x2930,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1911,0x1132,0x1133,0x1174,0x21D6,0x21F7,0x21F7,0x21D6,0x1975,0x1133,0x1112,0x1932,0x1932,0x1932,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1910,0x1930,0x1930,0x1930,0x1930,0x1930,0x1930,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x1910,0x2110,0x2110,0x2110,0x1910,0x2110,0x2110,0x1910,0x1910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x1911,0x1911,0x1912,0x1932,0x1933,0x1933,0x1933,0x1933,0x1974,0x1975,0x1954,0x1933,0x1933,0x1932,0x1911,0x1931,0x1930,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1930,0x1910,0x1911,0x1932,0x1132,0x1133,0x1995,0x21D6,0x21F7,0x19D6,0x1195,0x1133,0x1132,0x1111,0x1111,0x1911,0x1910,0x1911,0x1910,0x1910,0x1930,0x1910,0x1910,0x1911,0x1910,0x2131,0x2131,0x2131,0x1931,0x1911,0x1910,0x2111,0x2111,0x2131,0x2110,0x2131,0x2131,0x2131,0x1931,0x1931,0x1911,0x1111,0x10F2,0x1153,0x1174,0x1995,0x19B6,0x19D7,0x19D7,0x19D7,0x19D7,0x19B7,0x19B6,0x21F7,0x21F7,0x19B6,0x1154,0x1133,0x1132,0x1931,0x1931,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x30EF,0x308D,0x50CE,0xAAD5,0xB253,0xAA12,0xA1F1,0xA1F1,0x89EE,0xFF7F,0xEF5D,0xE77C,0xDF3B,0xD73B,0xD73A,0xCF3A,0xCF3A,0xCF3A,0xCF3A,0xD75A,0xD77B,0xDF7B,0xE77D,0xE6BD,0x8B51,0x822F,0x9231,0xAA93,0xBAF4,0xCB15,0xD315,0xD315,0xD315,0xD2F5,0xDB15,0xD315,0xD315,0xD315,0xD2F5,0xCAF5,0xCB15,0xC2F4,0xBB34,0xBC55,0xE65B,0xE73C,0xDF5B,0xD73B,0xD73B,0xD73B,0xD73B,0xCF3B,0xCF3A,0xCF3A,0xCF3A,0xCF3A,0xCF3A,0xCF3A,0xCF3A,0xCF3A,0xCF3A,0xCF5A,0xD75B,0xD77B,0xE77D,0xEEFD,0x8330,0x824F,0x9231,0xAA92,0xBAD4,0xCB15,0xD316,0xD316,0xD316,0xD315,0xD315,0xDAF5,0xDAF5,0xD2F5,0xD2F5,0xD315,0xCB15,0xC2F4,0xB312,0xE5DA,0xEF1C,0xDF1B,0xDF3B,0xD75B,0xD73B,0xD73A,0xD73A,0xCF3A,0xCF5B,0xCF3A,0xCF3A,0xCF5A,0xCF5A,0xCF3A,0xCF3A,0xD73A,0xD73A,0xD75A,0xD75B,0xDF7C,0xE75D,0xEEBD,0x8B11,0x8A30,0x9A11,0xAA73,0xBAB4,0xCAF5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD315,0xD315,0xD315,0xD335,0xD336,0xBAB4,0xA212,0xA212,0xAA53,0xC2D5,0xCB15,0xD315,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xDB15,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2D5,0xD2D5,0xD2D5,0xCAF4,0xC353,0xDD17,0xFF3D,0xF73B,0xE75B,0xE75A,0xDF5A,0xDF5A,0xD73A,0xD73A,0xD73A,0xD73A,0xD73A,0xD73A,0xD73A,0xD73A,0xDF3A,0xDF5A,0xE77B,0xE73A,0xE6FB,0xFF1D,0x92D0,0x89EF,0x9A10,0xBAB4,0xC2F5,0xCAF5,0xCAD5,0xCAF5,0xD2F5,0xD315,0xD2F5,0xD2F5,0xD316,0xD315,0xD2F5,0xD2F5,0xD315,0xCB15,0xC2F4,0xB333,0xC4B6,0xF71D,0xE73C,0xDF5C,0xD71B,0xD71B,0xD73B,0xDF5C,0xE75D,0xDE5C,0x71ED,0x9210,0x9A31,0xB293,0xC2F5,0xCB15,0xD315,0xD315,0xD2F5,0xD315,0xD315,0xD2F5,0xDAF5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xCAF4,0xC334,0xCC76,0xFEFC,0xEF3B,0xE73B,0xDF5A,0xD73A,0xD73A,0xD73A,0xD73A,0xD75A,0xD75A,0xD75A,0xD75A,0xDF7B,0xDF5B,0xEF5C,0xFF1D,0x79CD,0x91CF,0xA211,0xB273,0xCAF5,0xCB15,0xD315,0xD315,0xD2F5,0xD2F5,0xD2D5,0xD2D5,0xDAF5,0xDAF6,0xDAF5,0xDAF5,0xDB16,0xDB16,0xD315,0xCAF5,0x99F1,0x99D0,0xB273,0xC2D5,0xCAF5,0xD316,0xD316,0xD316,0xD315,0xD315,0xD2F5,0xD315,0xD315,0xD315,0xD315,0xCB15,0xC2F4,0xB312,0xC4B6,0xF71D,0xE75C,0xDF5C,0xD73B,0xD73B,0xD73B,0xD75C,0xDF5C,0xE73D,0xEEDD,0x8B31,0x8A50,0x9A31,0xAA72,0xBAD4,0xCB15,0xCAF5,0xD315,0xD315,0xD315,0xD315,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xCAF4,0xC2F4,0xBB53,0xDD99,0xEEFC,0xE73C,0xDF5C,0xD71B,0xD73B,0xDF7C,0xE77D,0xEF7E,0xBD37,0x71CD,0x89F0,0x9A11,0xB293,0xC2F5,0xCB15,0xCAF5,0xD315,0xD315,0xD316,0xD315,0xD2F5,0xD2F6,0xD2F6,0xD2F5,0xD2F5,0xD2F5,0xCB14,0xC334,0xCC56,0xFEDC,0xEF1B,0xE73B,0xE73B,0xDF3A,0xDF3A,0xDF3A,0xDF3A,0xDF3A,0xDF3A,0xDF5A,0xDF5A,0xDF7B,0xE75B,0xEF5B,0xFF7E,0xA352,0x9230,0x91F0,0xAA52,0xC2D4,0xCAD4,0xCAD5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD315,0xD315,0xCB15,0xCB15,0xC2F4,0xA2D1,0xFF3E,0xEF1C,0xEF1C,0xEF3C,0xEF3C,0xEF3C,0xEF3C,0xEF3C,0xF75C,0xFF3D,0xFF1E,0xFE1C,0xA250,0xA9D0,0xB9B1,0xC1B2,0xC1D3,0xC1D3,0xC1F4,0xC1F4,0xB9F5,0xBA16,0xB258,0xA2BB,0x40D7,0x291A,0x215C,0x197D,0x119D,0x119E,0x099E,0x099E,0x099E,0x099E,0x119E,0x119E,0x197D,0x213C,0x391A,0x48D8,0x9A3B,0xAA39,0xAA37,0xAA16,0xAA37,0xA257,0x9216,0x7A36,0x6B18,0x541A,0x4DBD,0x361D,0x2E1D,0x265C,0x0E79,0x06D8,0x06D7,0x0718,0x0F58,0x0F58,0x1F7A,0x2F5A,0x3F1C,0x5EBD,0x759B,0x52F3,0x82B4,0x9A34,0xA235,0xAA35,0x99F4,0x99F4,0x7131,0x6931,0x6952,0x6952,0x6911,0x9215,0xA236,0xAA56,0xA215,0xA276,0x7151,0x384D,0x4910,0x4971,0x4151,0x3950,0x3951,0x3150,0x3150,0x3150,0x3150,0x2950,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x212F,0x292F,0x210F,0x292F,0x292F,0x210E,0x210F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2130,0x2150,0x1931,0x1932,0x1132,0x19B5,0x1A17,0x19F7,0x1195,0x0912,0x1131,0x1951,0x2151,0x1930,0x1930,0x1930,0x192F,0x192F,0x1930,0x1930,0x1931,0x1132,0x1113,0x21B6,0x2A17,0x21F7,0x1995,0x1112,0x1112,0x1931,0x2130,0x2110,0x2110,0x2130,0x2930,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x2130,0x2930,0x2131,0x2131,0x1911,0x1912,0x1912,0x1953,0x1954,0x1974,0x1175,0x1175,0x1195,0x1196,0x1196,0x19B7,0x19B7,0x19B6,0x1996,0x1975,0x1954,0x1133,0x1112,0x1112,0x1912,0x1911,0x1911,0x1931,0x1931,0x1910,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2110,0x1911,0x1911,0x1932,0x1153,0x1174,0x21F6,0x19D6,0x19D7,0x21D7,0x1175,0x0913,0x1112,0x1111,0x1911,0x1930,0x212F,0x2950,0x2950,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2110,0x2930,0x2930,0x212F,0x212F,0x212F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F, + 0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x2130,0x212F,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x20EF,0x2910,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1911,0x1112,0x1953,0x1974,0x19B6,0x21F7,0x2217,0x21F6,0x1974,0x1133,0x1112,0x1932,0x1911,0x1931,0x1931,0x1931,0x1931,0x1910,0x1910,0x2130,0x1910,0x2110,0x1930,0x1930,0x2130,0x190F,0x190F,0x2130,0x2130,0x2110,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1911,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1932,0x1913,0x1933,0x1933,0x1932,0x1932,0x1911,0x1911,0x1930,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x212F,0x210F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1930,0x1930,0x1931,0x1932,0x1132,0x1133,0x1995,0x21F7,0x21F7,0x21F7,0x1995,0x1153,0x1132,0x1111,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2951,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1932,0x1112,0x1132,0x1133,0x1133,0x1174,0x19B5,0x1995,0x19B6,0x19B5,0x1995,0x19B5,0x19B6,0x1995,0x1153,0x1132,0x1932,0x1911,0x1930,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x292F,0x290F,0x290F,0x30EF,0x308D,0x48CE,0xAAD5,0xB253,0xAA12,0xA1F1,0xA1F1,0x89EE,0xFF7F,0xEF5C,0xE77C,0xDF5B,0xD73A,0xD73A,0xD73A,0xD75A,0xD75A,0xD75A,0xD77A,0xDF7B,0xDF7B,0xEF7D,0xE6BC,0x8B31,0x822F,0x9230,0xAAB3,0xBAF4,0xCB35,0xD335,0xD335,0xD315,0xD315,0xD315,0xD315,0xD335,0xDB36,0xD315,0xD315,0xCB15,0xC314,0xBB33,0xC455,0xE65B,0xE73C,0xDF5B,0xDF5B,0xDF3B,0xDF3B,0xD73A,0xD73A,0xD75A,0xD73A,0xD73A,0xCF3A,0xD75A,0xD75A,0xD75A,0xD75A,0xD75A,0xD75A,0xDF7B,0xDF7B,0xE77C,0xEF1D,0x8B30,0x824F,0x9231,0xAA93,0xBAD4,0xCB15,0xD316,0xD316,0xD316,0xD315,0xDB15,0xDB15,0xDB15,0xDB35,0xD315,0xD315,0xCB14,0xC314,0xB312,0xE5DA,0xEF1C,0xE73B,0xDF3A,0xDF3A,0xD73A,0xD75A,0xD75A,0xD75A,0xD75A,0xD75A,0xD73A,0xD75A,0xD75A,0xD73A,0xD73A,0xD75A,0xD73A,0xD75A,0xDF5B,0xDF7C,0xEF7D,0xEEDD,0x8B31,0x8A50,0x9A31,0xAA72,0xC2D4,0xCAF5,0xD315,0xD316,0xD316,0xDB16,0xDB15,0xDB15,0xD315,0xD315,0xD315,0xD315,0xD315,0xD335,0xD336,0xBAB4,0xA212,0xA212,0xB294,0xC2F5,0xCB15,0xD336,0xD315,0xD315,0xD315,0xD315,0xDB15,0xDB15,0xD315,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xD2F4,0xC313,0xCC35,0xFE9B,0xF73C,0xEF5A,0xE73A,0xDF5A,0xDF5A,0xDF5A,0xDF5A,0xDF5A,0xD73A,0xD739,0xD739,0xDF59,0xD739,0xDF5A,0xDF5A,0xDF39,0xDF5A,0xE79B,0xE75A,0xEF1B,0xD558,0x822E,0x91EF,0xA231,0xC2D4,0xCAF5,0xCAF5,0xCAF5,0xD315,0xD315,0xD315,0xD315,0xD315,0xD315,0xD315,0xD315,0xD315,0xCB15,0xC314,0xBB53,0xB3F3,0xF6FD,0xEF3C,0xE75B,0xDF3B,0xDF3B,0xDF5B,0xE75C,0xEF7D,0xC598,0x7A0E,0x9210,0xA231,0xB2B3,0xCB15,0xD336,0xD316,0xD315,0xD315,0xD315,0xDB15,0xDB15,0xDB15,0xDB15,0xD315,0xD315,0xD2F4,0xCB34,0xC373,0xDD38,0xFF1C,0xEF5B,0xE77A,0xDF7A,0xDF5A,0xD73A,0xD739,0xD739,0xD739,0xD75A,0xDF7A,0xDF7A,0xDF9A,0xE79B,0xEF9B,0xFF7E,0x9B31,0x89EF,0x9A11,0xB273,0xC2F4,0xCB15,0xD315,0xD315,0xD315,0xD2F5,0xD2F5,0xD2F5,0xD2F5,0xDAF5,0xDB16,0xDB15,0xDB16,0xDB36,0xD336,0xCB15,0x99F0,0x99F1,0xB273,0xC2F5,0xCB16,0xD316,0xD316,0xD316,0xD316,0xD315,0xD315,0xD315,0xD315,0xD315,0xD335,0xCB34,0xC314,0xBB33,0xCCB6,0xFF1D,0xEF5C,0xDF5B,0xDF5B,0xDF5B,0xDF5B,0xDF5C,0xDF5C,0xEF5D,0xEEFD,0x8B31,0x8A50,0x9A31,0xAA92,0xBAD4,0xCB15,0xD335,0xD315,0xD315,0xD315,0xD315,0xDB15,0xD315,0xD315,0xD315,0xD2F5,0xCAF4,0xC2F4,0xBB53,0xDDB9,0xEEFB,0xE73B,0xE75B,0xDF3B,0xDF3B,0xE77C,0xE77C,0xF77E,0xAC95,0x79EE,0x89F0,0x9A31,0xB2B3,0xCB15,0xD336,0xD316,0xD316,0xD336,0xD336,0xD315,0xD315,0xD2F5,0xD316,0xD316,0xD315,0xD315,0xCB34,0xC373,0xDD38,0xFF1C,0xEF3B,0xE73B,0xE75B,0xDF3A,0xDF3A,0xDF3A,0xDF3A,0xDF3A,0xDF3A,0xDF5A,0xDF5A,0xE77A,0xE77B,0xEF9B,0xFF9E,0xABD3,0x9250,0x91EF,0xA231,0xC2F4,0xCAF5,0xCAF5,0xD2F5,0xD2F5,0xD315,0xDB16,0xD315,0xD315,0xD315,0xD315,0xD315,0xCB15,0xCB14,0xC2F4,0xA2F1,0xFF1E,0xF73C,0xEF3C,0xEF3B,0xEF3C,0xEF3B,0xEF5C,0xEF5C,0xEF5B,0xF77C,0xFF5D,0xFF3E,0xFDFC,0xA270,0xA9D0,0xB9B1,0xC1B2,0xC1D3,0xC1D4,0xB9F4,0xC1F5,0xBA16,0xB258,0x9A9B,0x40F7,0x291A,0x215B,0x197D,0x119D,0x119E,0x099E,0x099E,0x099E,0x097E,0x099E,0x119E,0x115D,0x195D,0x293C,0x391A,0x6118,0x9A5A,0xA238,0xAA37,0xAA57,0xA236,0x9A36,0x8236,0x6AB7,0x5B98,0x555C,0x461D,0x361D,0x265B,0x0E79,0x06D8,0x0718,0x06F7,0x0737,0x1778,0x1F79,0x2F5A,0x471C,0x66BD,0x6D3A,0x5AD3,0x8294,0x9234,0xA214,0xA215,0x99F5,0x91D4,0x7131,0x6952,0x6952,0x6952,0x6111,0x7952,0xA256,0xAA56,0xA1F4,0xA235,0x8A14,0x488E,0x40CF,0x4950,0x4171,0x3930,0x3150,0x3151,0x3150,0x3150,0x2950,0x2950,0x2930,0x2950,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x210E,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1911,0x1132,0x1195,0x19F7,0x19D6,0x1995,0x1112,0x1131,0x1951,0x2151,0x2150,0x192F,0x212F,0x2150,0x192F,0x1930,0x1930,0x1931,0x1132,0x0912,0x19B5,0x21F7,0x21F7,0x1995,0x1112,0x1112,0x1931,0x2130,0x2130,0x210F,0x210F,0x2930,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x212F,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x1931,0x1911,0x1932,0x1133,0x1153,0x1153,0x1153,0x1154,0x1154,0x1154,0x1174,0x1154,0x1153,0x1933,0x1932,0x1932,0x1912,0x1911,0x1911,0x1911,0x1911,0x1931,0x2130,0x2110,0x2130,0x212F,0x2130,0x2130,0x210F,0x2930,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x2930,0x2930,0x210F,0x212F,0x210F,0x212F,0x210F,0x2930,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1910,0x1911,0x1932,0x1153,0x1994,0x19B6,0x19F7,0x21F7,0x21D7,0x1155,0x1134,0x1113,0x1112,0x1911,0x1910,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x290F,0x2930,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F, + 0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2930,0x2130,0x2930,0x210F,0x212F,0x210F,0x292F,0x210F,0x292F,0x292F,0x212F,0x210F,0x292F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2910,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2110,0x1910,0x1931,0x1911,0x1932,0x1953,0x1974,0x19B6,0x2217,0x21F7,0x21F6,0x1974,0x1133,0x1112,0x1911,0x1931,0x1931,0x1931,0x1931,0x1930,0x1910,0x1910,0x1910,0x1910,0x2110,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x2130,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x210F,0x2110,0x2110,0x2130,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x1910,0x1910,0x1910,0x2131,0x1931,0x2131,0x2132,0x1911,0x1911,0x1912,0x1912,0x1912,0x1912,0x1931,0x1931,0x2131,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2130,0x1931,0x1931,0x1933,0x1133,0x1175,0x21F7,0x21F7,0x2217,0x19B5,0x1153,0x1132,0x1131,0x1931,0x2151,0x2131,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2131,0x2131,0x1911,0x1911,0x10F1,0x1111,0x1112,0x1132,0x1973,0x1974,0x1953,0x1953,0x1953,0x1953,0x1132,0x1132,0x1111,0x1931,0x1910,0x2110,0x2130,0x212F,0x212F,0x214F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x28EF,0x308D,0x48AE,0xAAD5,0xB253,0xAA12,0xA9F1,0xA1F1,0x89EE,0xFF7F,0xEF7C,0xEF7C,0xE75B,0xDF3A,0xDF5A,0xDF3A,0xDF5A,0xDF5A,0xDF59,0xDF7A,0xDF7A,0xE79B,0xEF9D,0xE6BC,0x8B51,0x822F,0x9230,0xAAD3,0xBB14,0xCB35,0xD356,0xD336,0xD336,0xD335,0xD315,0xD335,0xDB36,0xDB56,0xD335,0xD315,0xCB35,0xCB34,0xBB74,0xC475,0xE65A,0xEF3C,0xE75B,0xDF5A,0xDF5A,0xDF5A,0xDF5A,0xD75A,0xD75A,0xD73A,0xD75A,0xD75A,0xD75A,0xD75A,0xD75A,0xD75A,0xD75A,0xDF5A,0xDF7A,0xE79B,0xEF7C,0xF71D,0x8B30,0x824F,0x9230,0xAA92,0xBAF4,0xCB36,0xD336,0xD336,0xD336,0xDB36,0xDB36,0xDB36,0xDB35,0xD335,0xD335,0xD335,0xD335,0xCB34,0xB352,0xE5F9,0xF71C,0xEF3B,0xE75A,0xDF5A,0xDF5A,0xDF5A,0xDF5A,0xD75A,0xD75A,0xD75A,0xD75A,0xD75A,0xD75A,0xD75A,0xD75A,0xD759,0xDF5A,0xDF7A,0xE77B,0xE77B,0xEF7D,0xF6FD,0x9331,0x8A50,0x9A31,0xAA92,0xC2D4,0xCB35,0xD336,0xD336,0xD336,0xDB36,0xDB36,0xD315,0xD335,0xD335,0xDB35,0xD335,0xD335,0xD336,0xD356,0xBA94,0xA212,0xA212,0xBAD5,0xCB15,0xD336,0xD336,0xDB56,0xD336,0xD335,0xDB36,0xDB36,0xDB36,0xDB16,0xDB16,0xD315,0xD315,0xD315,0xCB14,0xC353,0xEDD9,0xFEFB,0xF75B,0xEF5A,0xE75A,0xE75A,0xDF59,0xDF59,0xDF59,0xDF59,0xDF5A,0xDF7A,0xDF5A,0xDF59,0xDF59,0xDF59,0xDF59,0xDF59,0xE779,0xE77A,0xE77A,0xEF3B,0xE65A,0x92EF,0x89EE,0x91CF,0xB2B3,0xC2F5,0xCB15,0xD335,0xD336,0xD315,0xD335,0xD335,0xD335,0xD335,0xD335,0xD336,0xD315,0xCB35,0xCB35,0xC354,0xB3D3,0xF69C,0xF73C,0xEF5B,0xE73B,0xE75B,0xE75B,0xE75C,0xF77D,0xBD16,0x7A0E,0x9210,0x9A51,0xB2B3,0xCB36,0xD336,0xD336,0xD315,0xD336,0xD335,0xDB15,0xDB15,0xDB35,0xDB35,0xD315,0xD335,0xD335,0xCB34,0xC3B4,0xEDD9,0xFF5C,0xEF7B,0xE77B,0xE77A,0xDF5A,0xDF5A,0xDF59,0xD759,0xDF7A,0xDF7A,0xDF7A,0xDF7A,0xE79A,0xE79A,0xEFBB,0xFF9D,0xBC75,0x8A2F,0x9230,0xAA72,0xBAF4,0xC315,0xCB35,0xD335,0xD315,0xD315,0xD315,0xD315,0xD2F5,0xDAF5,0xDB15,0xDB15,0xDB35,0xD335,0xD356,0xCB35,0x99D0,0x99D0,0xB293,0xC2F5,0xD336,0xD336,0xD336,0xD336,0xD336,0xD335,0xD335,0xD335,0xD335,0xD335,0xD335,0xCB35,0xCB34,0xBB33,0xCCD6,0xFF3D,0xEF5C,0xE77B,0xE75B,0xDF5B,0xDF5B,0xE77C,0xE77C,0xEF7D,0xF6FD,0x8B31,0x8A4F,0x9231,0xAA92,0xBAF4,0xCB35,0xD336,0xD335,0xD336,0xDB36,0xD335,0xDB35,0xDB35,0xD335,0xD315,0xD315,0xCB14,0xCB34,0xBB73,0xE5D9,0xEF1B,0xEF5B,0xE75B,0xDF3A,0xDF3B,0xE77B,0xEF7C,0xFF7E,0x9BF2,0x820E,0x91F0,0x9A31,0xB2D4,0xCB36,0xD356,0xD336,0xD336,0xD336,0xD336,0xD336,0xD336,0xDB36,0xD336,0xD336,0xD335,0xD335,0xCB54,0xC3D4,0xEDD9,0xFF3C,0xEF7B,0xEF5A,0xE75A,0xDF3A,0xDF39,0xDF5A,0xDF5A,0xDF5A,0xDF5A,0xE75A,0xE75A,0xE75A,0xE77B,0xEF9B,0xFF9D,0xB454,0x8A4F,0x89EF,0x9A10,0xC315,0xD335,0xD335,0xD315,0xD315,0xD336,0xD336,0xD335,0xD335,0xD335,0xD335,0xD335,0xCB15,0xCB35,0xC314,0xAAF1,0xFF3E,0xF75C,0xF75C,0xEF5B,0xEF3B,0xEF3B,0xEF3B,0xEF5B,0xEF5B,0xEF5B,0xF77C,0xFF7D,0xFF5E,0xFE7D,0x99EE,0xA9D0,0xB9B2,0xC1D3,0xC1D3,0xC1D4,0xB9F5,0xB216,0xAA38,0x9A7A,0x40D7,0x311A,0x215B,0x197C,0x117D,0x119E,0x099E,0x099E,0x099E,0x099E,0x099E,0x099E,0x117E,0x115D,0x195D,0x291B,0x38D9,0x71DA,0xA27A,0xA237,0xA216,0xA236,0x9A36,0x8A57,0x7A96,0x5B37,0x5D1B,0x4DFC,0x3E3C,0x2E5B,0x0E78,0x06D8,0x0F38,0x0737,0x0757,0x0F58,0x1F79,0x2F5A,0x471B,0x66BC,0x64D8,0x52B2,0x8294,0x9234,0xA235,0xA215,0x9A15,0x89D4,0x6932,0x6972,0x6172,0x6152,0x6152,0x6931,0x9215,0xA256,0x99F4,0x9A14,0x9A76,0x6930,0x406D,0x40EF,0x4151,0x3950,0x3130,0x3150,0x2930,0x2950,0x2950,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x292F,0x292F,0x2930,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210E,0x210E,0x210F,0x292F,0x210E,0x210F,0x210F,0x2130,0x2130,0x1931,0x1111,0x1112,0x19B5,0x19F7,0x19D6,0x1174,0x1112,0x1931,0x1931,0x2130,0x2130,0x212F,0x214F,0x212F,0x212F,0x1930,0x1930,0x1931,0x1932,0x1133,0x21D6,0x2A17,0x21F7,0x1995,0x1132,0x1132,0x1931,0x2110,0x2110,0x210F,0x292F,0x2930,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x20EF,0x210F,0x2130,0x2110,0x2130,0x2130,0x2131,0x2131,0x2131,0x1911,0x10F1,0x1111,0x1952,0x1952,0x1952,0x1132,0x1112,0x1112,0x1112,0x1111,0x1931,0x1931,0x2152,0x1911,0x1931,0x1931,0x1931,0x1910,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1910,0x1911,0x1111,0x1133,0x1174,0x1995,0x2217,0x19F7,0x21F7,0x1975,0x1113,0x1112,0x1952,0x1952,0x1930,0x1910,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x292F,0x292F,0x210F,0x212F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F, + 0x2131,0x2131,0x2131,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2930,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x212F,0x210F,0x210F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1111,0x1133,0x1974,0x19B6,0x21F7,0x21F7,0x21D6,0x1974,0x1133,0x1132,0x1911,0x1910,0x1930,0x2130,0x2130,0x2130,0x1910,0x2110,0x2110,0x190F,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x212F,0x212F,0x210F,0x210F,0x2130,0x210F,0x2130,0x2110,0x210F,0x2110,0x2130,0x210F,0x210F,0x2110,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2111,0x2111,0x2111,0x2111,0x2111,0x2111,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1910,0x1931,0x1932,0x1133,0x1174,0x21D7,0x2217,0x21F7,0x19B6,0x1174,0x1132,0x1132,0x1931,0x1951,0x2151,0x2151,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x210F,0x210F,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1931,0x1931,0x1931,0x1931,0x1932,0x1932,0x1932,0x1911,0x1911,0x1111,0x1931,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x294F,0x2950,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x28EF,0x308D,0x48AD,0xB2D5,0xB253,0xA9F2,0xA9F1,0xA1F1,0x89EE,0xFF7F,0xEF7C,0xEF9B,0xE77A,0xDF5A,0xDF59,0xDF59,0xDF59,0xDF59,0xDF79,0xDF79,0xE79A,0xE7BB,0xF7BD,0xEEDC,0x9350,0x822F,0x9230,0xAAD3,0xBB14,0xCB35,0xD356,0xDB56,0xDB56,0xD335,0xD335,0xD335,0xDB56,0xDB56,0xD335,0xD335,0xD355,0xCB54,0xBB74,0xC495,0xEE7A,0xEF5B,0xE77B,0xE75A,0xE77A,0xDF5A,0xDF5A,0xDF5A,0xDF5A,0xDF59,0xDF7A,0xDF59,0xDF79,0xDF79,0xDF79,0xDF59,0xDF7A,0xDF7A,0xE77A,0xE79B,0xEF9C,0xF71D,0x8B30,0x824F,0x9230,0xAA92,0xBAF4,0xCB36,0xD356,0xD356,0xD356,0xDB56,0xDB56,0xDB36,0xDB35,0xD335,0xD335,0xD335,0xD355,0xCB34,0xBB73,0xE5D9,0xF73C,0xEF5B,0xE75A,0xE75A,0xE75A,0xDF59,0xDF59,0xDF59,0xDF59,0xDF59,0xDF59,0xDF79,0xDF79,0xDF79,0xDF79,0xDF79,0xDF79,0xDF7A,0xE79A,0xE79B,0xF79D,0xF6FD,0x9330,0x8A50,0x9A51,0xAA92,0xC314,0xCB35,0xD356,0xD356,0xDB56,0xDB56,0xDB56,0xDB36,0xDB36,0xD335,0xDB56,0xD355,0xD356,0xD356,0xDB77,0xB273,0xA212,0xA212,0xBAD5,0xCB36,0xD356,0xD356,0xDB56,0xD356,0xD356,0xDB56,0xDB36,0xDB36,0xDB56,0xDB36,0xD315,0xD315,0xD335,0xCB34,0xCC15,0xFEBB,0xF73B,0xEF5A,0xEF59,0xE759,0xE759,0xE759,0xE759,0xE759,0xE759,0xDF59,0xDF59,0xDF59,0xDF59,0xDF59,0xE779,0xE779,0xE779,0xE77A,0xE77A,0xEF9A,0xF79B,0xFF5D,0xC516,0x79CD,0x91CF,0xA252,0xC2F5,0xCB35,0xD356,0xD356,0xD336,0xD336,0xD356,0xDB56,0xDB56,0xD336,0xD336,0xD336,0xD335,0xCB55,0xC374,0xBBD3,0xF67B,0xF73C,0xEF7B,0xEF5B,0xEF7B,0xEF7B,0xEF7C,0xFF9D,0xBD16,0x822E,0x9230,0xA251,0xB2D3,0xCB56,0xD356,0xD356,0xD336,0xD336,0xDB36,0xDB36,0xDB36,0xDB35,0xDB35,0xDB35,0xD335,0xD335,0xC354,0xC3F4,0xF63A,0xF75C,0xEF7B,0xE77A,0xE79A,0xE77A,0xDF7A,0xDF79,0xDF79,0xDF79,0xDF59,0xDF79,0xDF79,0xE79A,0xE79A,0xEFBB,0xFF9D,0xCD37,0x822E,0x9230,0xA292,0xBB14,0xC334,0xCB35,0xCB35,0xD335,0xD335,0xD335,0xD335,0xD315,0xD2F5,0xD315,0xD315,0xD335,0xD355,0xD376,0xCB55,0x99F0,0x91D0,0xB293,0xC2F5,0xD336,0xD356,0xD336,0xD336,0xD356,0xD336,0xDB56,0xD355,0xD355,0xD355,0xD355,0xCB55,0xCB34,0xBB53,0xCCD6,0xFF3D,0xEF5C,0xE77B,0xE75B,0xE75B,0xE77B,0xE77B,0xEF9C,0xF77D,0xF6FD,0x8B30,0x8A4F,0x9230,0xAAB3,0xBAF4,0xCB55,0xD356,0xD336,0xD356,0xDB56,0xDB56,0xDB56,0xDB56,0xDB36,0xD335,0xD335,0xCB34,0xCB34,0xBB93,0xE5F9,0xF73B,0xEF7B,0xEF7A,0xE75A,0xE75A,0xEF9B,0xF79C,0xFF7D,0xA3F2,0x820E,0x9210,0x9A31,0xB2D4,0xCB56,0xD356,0xD356,0xD356,0xD336,0xDB56,0xD336,0xDB56,0xDB56,0xD336,0xD336,0xD335,0xCB35,0xC374,0xC3F4,0xF63A,0xFF7C,0xF77B,0xEF7A,0xE77A,0xE759,0xDF39,0xDF59,0xDF39,0xDF39,0xE759,0xE75A,0xE77A,0xEF7A,0xEF9A,0xEF9B,0xFFBD,0xBC95,0x8A6F,0x8A0F,0x9A10,0xC315,0xCB35,0xD356,0xDB56,0xD336,0xD336,0xD356,0xD356,0xD356,0xD355,0xD355,0xD355,0xD335,0xCB35,0xC314,0xAB11,0xFF3E,0xF73B,0xF75B,0xF75B,0xEF5B,0xEF5B,0xEF5B,0xEF5A,0xEF5B,0xEF5B,0xF77B,0xF79C,0xFF7D,0xFF5E,0xF59B,0x9A0F,0xB1D1,0xB9D3,0xC1D3,0xB9D4,0xB9F5,0xBA16,0xB238,0x9A5A,0x40D7,0x311A,0x215B,0x197D,0x119D,0x099E,0x099E,0x019E,0x099E,0x099F,0x099E,0x099E,0x097E,0x117E,0x195D,0x213C,0x28FB,0x40D8,0x925B,0xA27A,0xA258,0x9A16,0x9236,0x8A57,0x7A56,0x62D6,0x5C99,0x5DDC,0x4E1C,0x365B,0x1678,0x0ED7,0x0F37,0x0737,0x0757,0x0F37,0x1F79,0x375A,0x4EFB,0x6EBD,0x5C57,0x5A92,0x8294,0x9A54,0x99F4,0xA215,0x9A15,0x8193,0x6952,0x6152,0x6152,0x5952,0x6172,0x6131,0x7152,0x9215,0x9A35,0xA235,0xA296,0x9234,0x508E,0x408E,0x4130,0x3950,0x3950,0x3150,0x3150,0x3150,0x3150,0x2950,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210E,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x2130,0x2130,0x1910,0x1911,0x1112,0x1995,0x19D6,0x19D6,0x1174,0x1111,0x1931,0x2151,0x2150,0x2130,0x212F,0x212F,0x212F,0x212F,0x2150,0x1930,0x1931,0x1132,0x1113,0x19B6,0x2217,0x21F7,0x1995,0x1132,0x1111,0x1931,0x1910,0x2130,0x210F,0x290F,0x290F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1910,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1930,0x1930,0x2131,0x2130,0x2130,0x1930,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x290F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2131,0x1910,0x1111,0x1132,0x1153,0x19B6,0x21F7,0x21F7,0x21F7,0x1995,0x1133,0x1112,0x1112,0x1931,0x1931,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x292F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x212F,0x292F, + 0x1931,0x2132,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x2930,0x210F,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1932,0x1132,0x1974,0x19B6,0x21F7,0x21F7,0x21D6,0x1975,0x1112,0x1111,0x1911,0x1931,0x2151,0x2150,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x210F,0x210F,0x2110,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x290F,0x290F,0x290F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x212F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x210F,0x292F,0x292F,0x2930,0x2130,0x2130,0x1910,0x1910,0x1931,0x1953,0x1153,0x1174,0x21F7,0x2A38,0x21D7,0x1175,0x1133,0x1132,0x1132,0x1931,0x1931,0x1930,0x1930,0x2130,0x2130,0x2130,0x210F,0x210F,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2131,0x2131,0x2131,0x2151,0x2151,0x1911,0x1911,0x1911,0x1931,0x29B2,0x2151,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x28EF,0x308D,0x48AD,0xB2F5,0xB252,0xAA12,0xA9F1,0xA1F1,0x89CD,0xFF7E,0xF77C,0xEF9B,0xEF7A,0xE75A,0xE779,0xE759,0xE759,0xE779,0xE779,0xE779,0xEF9A,0xEFBB,0xFFBD,0xEEDC,0x9350,0x822F,0x8A30,0xAAD3,0xBB35,0xCB56,0xD376,0xDB56,0xDB56,0xDB56,0xDB56,0xD355,0xDB56,0xDB76,0xDB76,0xD355,0xD355,0xCB55,0xC394,0xCCB5,0xEE9A,0xF75B,0xEF9B,0xE77A,0xE77A,0xE77A,0xE779,0xE779,0xE779,0xE779,0xE779,0xDF79,0xDF79,0xE779,0xDF79,0xE779,0xE779,0xE77A,0xE79A,0xE7BB,0xF7BC,0xF71D,0x8B30,0x824F,0x9230,0xA292,0xC314,0xCB56,0xD376,0xD356,0xDB56,0xDB56,0xDB56,0xDB56,0xDB56,0xDB56,0xD355,0xD355,0xD355,0xCB75,0xBB93,0xE5D8,0xFF3C,0xF77B,0xEF9A,0xE77A,0xE779,0xE779,0xE779,0xE779,0xE779,0xE779,0xDF79,0xDF79,0xE799,0xDF79,0xDF79,0xDF79,0xE799,0xE79A,0xE79A,0xEFBB,0xF7BD,0xF6FD,0x9330,0x8A6F,0x9A50,0xAAB2,0xC314,0xD376,0xD356,0xDB76,0xDB56,0xDB56,0xDB56,0xDB56,0xD356,0xDB56,0xDB56,0xDB56,0xDB76,0xDB76,0xDB77,0xB273,0xA212,0xAA32,0xC2F5,0xD356,0xD376,0xD376,0xDB76,0xD356,0xDB56,0xD356,0xDB56,0xDB56,0xDB76,0xD356,0xD355,0xD335,0xD355,0xCB74,0xDCB6,0xFF1C,0xF77B,0xF77A,0xEF79,0xEF79,0xE779,0xE779,0xE759,0xE759,0xE759,0xE759,0xE759,0xE759,0xE779,0xE779,0xE799,0xE779,0xE779,0xE779,0xEF99,0xEFBA,0xEF9B,0xFFBC,0xFF7F,0x718C,0x89CF,0x9A10,0xBAF4,0xCB55,0xD376,0xD356,0xD356,0xD356,0xDB56,0xDB56,0xD356,0xD356,0xD356,0xD356,0xD355,0xCB55,0xC374,0xBBB3,0xF65B,0xFF5C,0xF77B,0xEF7B,0xEF9B,0xEF9B,0xF79C,0xFF9D,0xBD16,0x822E,0x9230,0x9A51,0xB2D3,0xCB56,0xD376,0xD356,0xD356,0xDB56,0xDB56,0xDB56,0xDB56,0xDB56,0xDB56,0xDB55,0xDB55,0xD355,0xCB74,0xC434,0xFE7B,0xFF5B,0xEF7A,0xEF7A,0xE79A,0xE779,0xE779,0xE779,0xE779,0xE779,0xE779,0xE779,0xE779,0xE799,0xEFB9,0xEF9A,0xFF9C,0xD597,0x7A2D,0x8A0E,0x9250,0xB333,0xC354,0xC355,0xCB55,0xCB55,0xD335,0xD355,0xD355,0xD335,0xD335,0xD335,0xD335,0xD375,0xD375,0xD375,0xCB55,0x99F0,0x91D0,0xB293,0xC315,0xD356,0xD377,0xD356,0xD356,0xD356,0xDB76,0xDB76,0xDB56,0xD356,0xD355,0xD355,0xD375,0xCB54,0xBB73,0xCCF6,0xFF3C,0xF77C,0xEF7B,0xE77B,0xE77B,0xE77B,0xEF7B,0xEF9B,0xF79D,0xF6FD,0x9330,0x8A4F,0x9230,0xAAB2,0xBB14,0xCB56,0xD376,0xD376,0xDB76,0xDB76,0xDB76,0xDB76,0xDB56,0xDB56,0xD355,0xD355,0xD355,0xCB74,0xC3D3,0xE618,0xF75B,0xF79B,0xEF9A,0xEF7A,0xEF7A,0xEF9B,0xF79C,0xFF7D,0xA412,0x820E,0x9210,0xA251,0xB2D4,0xCB56,0xD377,0xD376,0xD356,0xD356,0xDB56,0xDB56,0xDB76,0xD356,0xD356,0xD355,0xD355,0xD355,0xC374,0xC3F3,0xF65A,0xFF7C,0xF79A,0xEF7A,0xEF79,0xE779,0xE779,0xE759,0xE759,0xE759,0xE759,0xE759,0xEF79,0xEF9A,0xEF7A,0xF7BB,0xFFBD,0xC4D5,0x92AF,0x8A2F,0x9210,0xBAF4,0xCB35,0xD356,0xD356,0xD356,0xD356,0xD356,0xDB76,0xD376,0xD376,0xD376,0xD376,0xD355,0xCB55,0xCB55,0xB332,0xFF1D,0xF75B,0xF77B,0xF77B,0xF77B,0xF75A,0xEF5A,0xEF5A,0xF77B,0xEF5A,0xEF7B,0xF77B,0xF77C,0xFF7D,0xFF5E,0xE539,0xA1D0,0xB9D2,0xB9D3,0xB9D4,0xB9F5,0xBA16,0xB238,0xA27B,0x48D7,0x311A,0x215C,0x197D,0x119D,0x099E,0x099E,0x099E,0x099F,0x099F,0x099F,0x017E,0x097E,0x097E,0x117E,0x195D,0x293C,0x30FA,0x48D7,0x8A7B,0x9A79,0x9A57,0x9216,0x8A36,0x8256,0x6AB6,0x53B7,0x657B,0x55FC,0x3E5B,0x1657,0x0EB7,0x06D6,0x0716,0x0F57,0x0F57,0x2779,0x375A,0x4F1B,0x76BD,0x53F5,0x5A72,0x7A53,0x9214,0x99F4,0x99F5,0x9A15,0x7973,0x7173,0x6172,0x5952,0x5972,0x5972,0x5951,0x5910,0x7172,0x9A35,0xA276,0xAA96,0xA296,0x6931,0x404D,0x38CE,0x4150,0x3970,0x3130,0x3150,0x3150,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x20EF,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x290F,0x292F,0x210F,0x212F,0x2130,0x2151,0x1931,0x1911,0x1132,0x19B5,0x2217,0x21F7,0x1974,0x1111,0x1911,0x2151,0x2150,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2151,0x1951,0x1132,0x0912,0x21D6,0x2A17,0x21F7,0x19B5,0x1133,0x1132,0x1951,0x2130,0x2130,0x212F,0x292F,0x292F,0x290F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2130,0x2950,0x2130,0x2150,0x2130,0x2130,0x2130,0x2131,0x2131,0x2130,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x2930,0x292F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x2930,0x2130,0x2150,0x2130,0x1910,0x1911,0x1131,0x1152,0x1174,0x19D6,0x2217,0x2217,0x19D6,0x1175,0x1133,0x1112,0x1912,0x1911,0x1911,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x210F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x2930,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2110,0x2110,0x2130,0x1931,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x292F,0x292F, + 0x1133,0x1953,0x1932,0x1931,0x2131,0x2130,0x2110,0x2110,0x2110,0x2930,0x212F,0x2930,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x290F,0x290F,0x210F,0x2930,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1911,0x1132,0x1954,0x19B6,0x21F7,0x21F7,0x21D6,0x1975,0x1113,0x1112,0x1931,0x1931,0x2130,0x2150,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x292F,0x292F,0x210F,0x212F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1911,0x1931,0x1132,0x1133,0x1995,0x21F7,0x2A38,0x2218,0x1996,0x1154,0x1132,0x1112,0x1931,0x1910,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x20EF,0x2110,0x2130,0x2110,0x2130,0x210F,0x210F,0x2930,0x210F,0x210F,0x2930,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x1910,0x1910,0x1910,0x2130,0x2130,0x212F,0x210F,0x210E,0x210E,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x292F,0x292F,0x290F,0x28EF,0x30AE,0x488D,0xB2D5,0xB253,0xA9F1,0xA9F1,0xA1F1,0x89ED,0xFF7E,0xF79C,0xEF9B,0xEF9A,0xEF79,0xE759,0xE759,0xE779,0xE779,0xE779,0xEF99,0xEF99,0xF7BB,0xFFBC,0xF6DB,0x9370,0x822E,0x8A10,0xAAD3,0xBB35,0xCB76,0xD376,0xDB76,0xDB76,0xDB56,0xDB56,0xD355,0xDB76,0xDB76,0xDB76,0xD376,0xD375,0xCB75,0xC393,0xCCB5,0xF69A,0xF77B,0xEF9A,0xEF9A,0xEF9A,0xEF99,0xEF79,0xE799,0xE779,0xE779,0xE799,0xE779,0xE779,0xE779,0xE799,0xE779,0xE799,0xEF99,0xEFBA,0xEFDB,0xF7BC,0xFF1D,0x9330,0x8A4F,0x9230,0xAA92,0xBB14,0xD376,0xD376,0xDB76,0xDB76,0xDB76,0xDB76,0xDB56,0xDB56,0xD376,0xD355,0xD375,0xD375,0xCB75,0xC393,0xE5B8,0xFF3B,0xF79B,0xEF9A,0xEF79,0xEF79,0xE779,0xE779,0xE779,0xE779,0xE779,0xE779,0xE799,0xE799,0xE799,0xE779,0xE799,0xE799,0xEFBA,0xEFBA,0xEFBB,0xF7BC,0xF6FC,0x9350,0x8A6F,0x9250,0xAAB2,0xBB14,0xD376,0xD376,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB96,0xDB76,0xDBB7,0xAA52,0xA212,0xA212,0xC315,0xD377,0xD376,0xD376,0xD376,0xD376,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xD376,0xD355,0xCB75,0xC3B4,0xE578,0xFF5C,0xF77A,0xEF9A,0xEF99,0xEF99,0xEF79,0xEF79,0xEF79,0xEF79,0xE779,0xE779,0xE779,0xE779,0xE779,0xE779,0xE778,0xE779,0xEF99,0xEF99,0xEF99,0xF7BA,0xF7DB,0xF7BC,0xFF9E,0x71CC,0x89CF,0x91EF,0xBAF4,0xCB56,0xD376,0xD376,0xD376,0xD376,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xD376,0xD376,0xD375,0xC374,0xBB92,0xFE5B,0xFF5C,0xF77B,0xF79B,0xF79B,0xF79B,0xF79B,0xFF9D,0xC536,0x822E,0x9230,0x9A51,0xB2F3,0xCB76,0xD396,0xD376,0xDB96,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB75,0xD375,0xD355,0xC374,0xCC54,0xFEBB,0xFF7B,0xEF9A,0xEF9A,0xEF79,0xE779,0xE779,0xE778,0xE779,0xE779,0xE778,0xE798,0xE799,0xEFB9,0xEF99,0xEF99,0xFF9B,0xD5B7,0x724C,0x7A0D,0x8A2E,0xAB32,0xBB73,0xC394,0xC374,0xCB74,0xCB74,0xCB74,0xD374,0xD374,0xD374,0xD374,0xD395,0xD3B5,0xD3B5,0xD3B5,0xC354,0x91EF,0x91D0,0xB293,0xC315,0xD356,0xDB97,0xDB76,0xDB76,0xD376,0xDB76,0xDB76,0xDB76,0xD376,0xD376,0xD375,0xD375,0xCB74,0xBB73,0xD4F6,0xFF5C,0xF77B,0xF79B,0xEF7A,0xEF7A,0xEF7A,0xEF9A,0xEF9B,0xF79C,0xFF1D,0x9350,0x8A4F,0x9230,0xAAB2,0xBB14,0xCB76,0xD396,0xD376,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xD375,0xD375,0xCB74,0xC3D3,0xE618,0xFF5B,0xF7BA,0xEF9A,0xEF99,0xEF9A,0xF7BB,0xF79C,0xFF7D,0xB473,0x820E,0x9230,0x9A51,0xB2D3,0xCB56,0xD377,0xD376,0xD376,0xDB56,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xD376,0xD375,0xD375,0xC394,0xC413,0xFE9A,0xFF7B,0xF79A,0xEF99,0xEF79,0xEF79,0xEF79,0xEF79,0xEF79,0xEF79,0xEF59,0xEF79,0xEF79,0xEF99,0xF7BA,0xF7BB,0xFFBD,0xC4F6,0x92AF,0x8A2F,0x9210,0xBB14,0xCB35,0xD356,0xDB76,0xD356,0xD356,0xD376,0xDB96,0xDB96,0xD376,0xD376,0xD376,0xD355,0xCB55,0xCB54,0xB331,0xFF1D,0xFF7B,0xF77B,0xF77A,0xF77A,0xF75A,0xEF5A,0xF77A,0xF77A,0xF77A,0xF77B,0xF79B,0xF79C,0xFF9C,0xFF9D,0xFF3F,0xA230,0xB1D2,0xB9D3,0xB9D4,0xB9F5,0xBA16,0xB238,0x9A7B,0x48D7,0x311A,0x215C,0x197D,0x119D,0x099E,0x099E,0x099F,0x099F,0x099F,0x019F,0x019E,0x099E,0x097E,0x117E,0x117E,0x195D,0x291B,0x30F9,0x48D7,0x9ADC,0x9A59,0x9237,0x8A16,0x8257,0x7296,0x5B56,0x6D1B,0x65DC,0x4E3A,0x2677,0x0EB6,0x06D6,0x0716,0x0F56,0x1758,0x2779,0x3F5A,0x4EDB,0x769D,0x53B4,0x6272,0x8253,0x9214,0x99F4,0x99F5,0x91F5,0x7173,0x6973,0x6193,0x5972,0x5172,0x5992,0x5151,0x5951,0x5910,0x81F4,0x9A76,0xA255,0xA296,0x8A14,0x50AE,0x38AE,0x390F,0x3950,0x3150,0x3150,0x3150,0x3150,0x2950,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x290F,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x210F,0x2930,0x2950,0x2150,0x1931,0x1932,0x1132,0x19B5,0x2217,0x21F7,0x1174,0x1111,0x1911,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x192F,0x2130,0x1930,0x1951,0x1132,0x1133,0x19B6,0x2A37,0x19D6,0x19B5,0x1133,0x1132,0x1951,0x2130,0x2130,0x212F,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2130,0x2110,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x2130,0x212F,0x292F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x2910,0x210F,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x292F,0x292F,0x210F,0x212F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x2930,0x2130,0x2130,0x2151,0x1930,0x1911,0x1111,0x1132,0x1173,0x19D5,0x2217,0x2217,0x19D6,0x1174,0x1113,0x1112,0x1911,0x1911,0x1911,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x292F,0x292F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2110,0x2130,0x1931,0x1931,0x1931,0x1132,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1132,0x1932,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F, + 0x1195,0x1174,0x1973,0x1932,0x1931,0x2131,0x2110,0x2110,0x2110,0x2910,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1111,0x1132,0x1154,0x19B6,0x2217,0x2217,0x21D6,0x1174,0x1113,0x1132,0x1931,0x1931,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x290F,0x290F,0x20EF,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x210F,0x210E,0x210F,0x210F,0x292F,0x210F,0x212F,0x2930,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x1931,0x1111,0x1112,0x1133,0x19B6,0x19D7,0x21F8,0x21F8,0x19B6,0x1974,0x1133,0x1112,0x1111,0x1931,0x1930,0x1930,0x2130,0x2130,0x190F,0x210F,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x292F,0x290F,0x290F,0x28EF,0x30AE,0x408D,0xB2B5,0xB253,0xA9F1,0xA9F1,0xA1F0,0x81AD,0xFF7E,0xF79B,0xF79B,0xEF9A,0xEF79,0xEF79,0xEF78,0xEF78,0xEF78,0xEF78,0xEF78,0xEF99,0xF7DA,0xFFDC,0xF6DB,0x9B71,0x822E,0x8A0F,0xAAD3,0xC335,0xCB76,0xD396,0xDB96,0xDB96,0xDB76,0xDB76,0xDB76,0xDB76,0xDB96,0xDB96,0xDB76,0xD375,0xCB74,0xC393,0xCCB5,0xF69A,0xFF9B,0xF79A,0xEF99,0xEF99,0xEF99,0xEF99,0xEF99,0xEF78,0xEF78,0xEF78,0xEF99,0xEF98,0xEF98,0xEF98,0xEF99,0xEF99,0xEF99,0xEFBA,0xF7BA,0xFFBC,0xFF1C,0x9350,0x8A4E,0x9250,0xA292,0xC335,0xD396,0xDB97,0xDB97,0xDB97,0xDB97,0xDB96,0xDB76,0xDB76,0xDB96,0xDB96,0xD395,0xD395,0xD395,0xC3B3,0xE5D8,0xFF5B,0xFF9A,0xF7BA,0xF799,0xEF99,0xEF98,0xEF99,0xEF98,0xEF98,0xEF98,0xEF98,0xEF98,0xEF98,0xEF98,0xE798,0xEF99,0xEF99,0xEFB9,0xEFBA,0xF7BB,0xFFBC,0xF6FC,0x9330,0x8A4E,0x922F,0xAAB2,0xC334,0xD376,0xD396,0xDB96,0xDB76,0xDB76,0xDB76,0xDB76,0xDB76,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDBB7,0xAA52,0xA212,0xA232,0xC335,0xD397,0xD396,0xD396,0xD376,0xD396,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xD375,0xD395,0xC3B3,0xEDB9,0xFF7C,0xF79A,0xF799,0xEF99,0xEF99,0xEF99,0xEF99,0xEF79,0xEF79,0xEF79,0xEF79,0xEF79,0xEF78,0xEF78,0xEF78,0xEF98,0xEF99,0xEF99,0xEF99,0xEF99,0xEFBA,0xF7BA,0xF7BB,0xFF9E,0x71CC,0x89CE,0x89CF,0xB2D3,0xCB75,0xD396,0xD396,0xD396,0xD396,0xD376,0xDB96,0xDB76,0xDB76,0xD375,0xDB76,0xDB96,0xD375,0xCB74,0xBBD3,0xFE5A,0xFF5C,0xF79B,0xF77A,0xF79A,0xF79B,0xFF9B,0xFF9D,0xCD36,0x822E,0x9230,0x9A51,0xB2F3,0xCB96,0xD397,0xDB97,0xDB96,0xDB96,0xDB96,0xDB76,0xDB96,0xDB76,0xDB96,0xDB76,0xD375,0xD375,0xCB73,0xC433,0xFEBB,0xFF7B,0xF79A,0xEF99,0xEF99,0xEF98,0xEF98,0xEF98,0xEF98,0xEF98,0xEF78,0xEF98,0xEF98,0xEFB9,0xEFB9,0xF799,0xFF9B,0xD617,0x7ACC,0x82CD,0x92EE,0xA350,0xAB71,0xB391,0xBB91,0xBB92,0xBB92,0xC392,0xC392,0xC393,0xC3B3,0xC3B3,0xCBB3,0xCBD4,0xCBF4,0xCBF5,0xC374,0x91EF,0x91D0,0xB2B3,0xC315,0xD376,0xDB97,0xDB97,0xDB97,0xDB96,0xDB96,0xDB96,0xDB96,0xDB76,0xDB96,0xDB96,0xD395,0xD394,0xC3B3,0xD516,0xFF5C,0xFF7B,0xF79A,0xEF7A,0xEF7A,0xEF9A,0xEF9A,0xF7BB,0xFF9C,0xFF1C,0x9350,0x824E,0x922F,0xA2B2,0xBB34,0xCB96,0xD396,0xDB96,0xDB96,0xDB96,0xDB96,0xDB76,0xDB76,0xDB76,0xDB76,0xD375,0xD375,0xCB94,0xC3F3,0xEE38,0xFF5A,0xF79A,0xF7BA,0xEF99,0xEF99,0xF7BA,0xFFBB,0xFF9D,0xB473,0x7A0D,0x9210,0x9A51,0xB2D3,0xCB76,0xDB97,0xDB97,0xDB97,0xDB96,0xDB76,0xDB96,0xDB96,0xDB96,0xDB76,0xDB96,0xDB96,0xD395,0xCBB4,0xCC54,0xFEBA,0xFF9B,0xF79A,0xF799,0xEF98,0xEF78,0xEF78,0xEF98,0xEF98,0xEF78,0xEF79,0xEF79,0xEF99,0xEF99,0xF7DA,0xF7DA,0xFFBC,0xC4F5,0x92AF,0x8A2E,0x920F,0xC334,0xCB56,0xD376,0xDB96,0xD376,0xDB76,0xDB76,0xDB96,0xDB96,0xD396,0xD396,0xD396,0xD375,0xCB55,0xCB54,0xB351,0xFF3D,0xFF7B,0xF79B,0xF77A,0xF77A,0xF77A,0xF77A,0xF77A,0xF77A,0xF77A,0xF79B,0xF79B,0xFFBC,0xFF9C,0xFF7C,0xFF3E,0xC374,0xA9D1,0xB1D2,0xB1B3,0xB9D5,0xB1F6,0xB258,0x9A5A,0x48F8,0x311A,0x213B,0x197D,0x119D,0x119E,0x099E,0x099F,0x099F,0x099F,0x019F,0x019F,0x019E,0x099E,0x097E,0x117E,0x195D,0x215D,0x293B,0x38F9,0x69B9,0x927A,0x9258,0x8A57,0x8257,0x7297,0x62F6,0x7479,0x7DDC,0x5E3A,0x3698,0x0E75,0x0ED6,0x0F16,0x0F37,0x1737,0x2F79,0x3F3A,0x56FC,0x7E9D,0x4B53,0x6272,0x7A33,0x9234,0x9A15,0xA236,0x81B4,0x6932,0x6993,0x6193,0x5172,0x5172,0x5192,0x5172,0x5151,0x5110,0x6131,0x81D4,0x9235,0x9A76,0xAAF8,0x8214,0x40AE,0x38CE,0x3930,0x3130,0x3150,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x292F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x1910,0x1931,0x1932,0x1133,0x1995,0x19D6,0x19F7,0x1174,0x1111,0x1911,0x2130,0x2130,0x212F,0x190F,0x212F,0x212F,0x212F,0x1930,0x1930,0x1931,0x1112,0x1113,0x19D6,0x2217,0x19D6,0x1195,0x1133,0x1112,0x1931,0x1910,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2930,0x2110,0x210F,0x210F,0x2130,0x210F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x290F,0x20EF,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x292F,0x292F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1931,0x1111,0x1112,0x1154,0x19D6,0x2237,0x2217,0x21F6,0x1174,0x1112,0x1112,0x1911,0x1911,0x2131,0x2111,0x2110,0x2130,0x210F,0x210F,0x212F,0x210F,0x2130,0x210F,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210E,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x1930,0x1931,0x1931,0x1132,0x1153,0x1994,0x19B6,0x19F7,0x19D7,0x19F7,0x19B6,0x1175,0x1133,0x1133,0x1932,0x1932,0x1931,0x1910,0x2130,0x1930,0x2130,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F, + 0x19F7,0x1195,0x1174,0x1133,0x1932,0x1931,0x2110,0x2130,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x2930,0x2930,0x2110,0x2130,0x212F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2930,0x292F,0x210F,0x20EF,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2130,0x2130,0x2130,0x1931,0x1931,0x1112,0x1153,0x19B6,0x21F7,0x2218,0x21F7,0x1975,0x1133,0x1112,0x1931,0x1931,0x1930,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x212F,0x212F,0x210F,0x292F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x212F,0x212F,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1931,0x1112,0x1133,0x1995,0x21F7,0x21F8,0x21F7,0x1996,0x1154,0x1133,0x1112,0x1931,0x1911,0x1930,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210E,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x292F,0x290F,0x290F,0x28EF,0x30AE,0x408D,0xAAB4,0xB252,0xA9F1,0xA9F1,0xA9F0,0x89CD,0xFF7E,0xF79B,0xF79A,0xEF9A,0xEF99,0xEF78,0xEF78,0xEF98,0xEF98,0xEF98,0xEF98,0xF799,0xF7DA,0xFFBC,0xF6DB,0x9B91,0x822E,0x8A0F,0xAAD3,0xC355,0xD396,0xDB97,0xDBB7,0xDB96,0xDB76,0xDB96,0xDB96,0xDB96,0xDBB6,0xDB96,0xDB96,0xD395,0xCB94,0xC3B3,0xCCB4,0xF6BA,0xFF9B,0xF7B9,0xF7B9,0xF7B9,0xF7B9,0xF799,0xF798,0xEF98,0xEF98,0xEF98,0xEF98,0xEF98,0xEF98,0xEF98,0xEF98,0xEFB9,0xF7B9,0xF7B9,0xF7BA,0xFFBB,0xFF1C,0x934F,0x824E,0x922F,0xA2B2,0xBB34,0xD396,0xDBB7,0xDBB7,0xDBB7,0xDB97,0xDB97,0xDBB6,0xDB96,0xDB96,0xDB95,0xDB95,0xD3B5,0xD395,0xC3B3,0xE5D7,0xFF3A,0xFF9A,0xF799,0xF799,0xF798,0xF7B8,0xF798,0xF798,0xEF98,0xEF98,0xEF98,0xEFB8,0xEF98,0xEF98,0xEF98,0xEFB8,0xEFB9,0xEFB9,0xF7BA,0xF7DB,0xFFBC,0xFEFC,0x9350,0x8A4E,0x924F,0xAAB2,0xC354,0xD396,0xDBB6,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDBB6,0xDBB6,0xDB96,0xDBD7,0xAA73,0xA232,0xA232,0xC335,0xD397,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDBB6,0xDB96,0xD396,0xD396,0xDB96,0xDB96,0xDB96,0xD395,0xC3B3,0xFE5A,0xFF7B,0xF79A,0xF7B9,0xF7B9,0xEF99,0xF7B9,0xF799,0xEF99,0xEF98,0xEF98,0xEF98,0xEF98,0xEF98,0xEF98,0xEF98,0xEF98,0xEFB8,0xEFB8,0xF7B9,0xF7B9,0xF7B9,0xF7BA,0xF7BB,0xFF9E,0x71EC,0x81CE,0x89CF,0xB2D3,0xCB96,0xD3B7,0xDBB7,0xD396,0xD396,0xD396,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xD395,0xD375,0xCB94,0xC3D3,0xF639,0xFF5B,0xF77A,0xF79A,0xF79A,0xF79A,0xFF9B,0xFF9D,0xCD77,0x822D,0x922F,0x9A51,0xB2F4,0xD397,0xD3B7,0xDBB7,0xDB96,0xDB96,0xDBB6,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB95,0xD375,0xCB94,0xC433,0xFEBA,0xFF7B,0xF7BA,0xF799,0xEF98,0xEF98,0xEFB8,0xEF98,0xEF98,0xEF98,0xEF98,0xEF98,0xF7B8,0xF7B8,0xF7B9,0xF7B9,0xFFBA,0xFF5A,0xF6D9,0xFEDA,0xFEBA,0xFE9A,0xFE5A,0xFE5A,0xFE5A,0xFE39,0xFE19,0xFDF9,0xF5D9,0xF5B8,0xF5B9,0xF5B8,0xF5B9,0xEDB9,0xED99,0xE4F8,0xC3B4,0x920F,0x91CF,0xB2B3,0xC335,0xD376,0xDBB7,0xDBB7,0xDB97,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xD395,0xCB94,0xC3B3,0xD515,0xFF5C,0xFF7B,0xF79A,0xF79A,0xF79A,0xF7BA,0xF79A,0xF7BB,0xFF9C,0xFF1C,0x9350,0x8A4F,0x922F,0xAAD2,0xBB34,0xD396,0xD3B6,0xDBB6,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xD375,0xD395,0xCB94,0xC3F3,0xEE38,0xFF7A,0xFFBA,0xF7B9,0xF7B9,0xF7B9,0xF7BA,0xFFBB,0xFF9D,0xB494,0x7A0D,0x8A0F,0x9A50,0xB2D3,0xD396,0xDBB7,0xDBB7,0xDBB7,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xDBB6,0xDBB5,0xD395,0xCBB4,0xC453,0xFEBA,0xFF7A,0xF799,0xF798,0xF7B8,0xF798,0xF798,0xEF98,0xEF98,0xEF78,0xF798,0xF7B9,0xF7B9,0xF7B9,0xF7DA,0xF7DA,0xFFBC,0xC4F5,0x92AF,0x8A0E,0x9A2F,0xC355,0xD396,0xDBB7,0xDBB7,0xDB96,0xDB96,0xDB96,0xDB96,0xDB96,0xD396,0xD3B6,0xD396,0xD395,0xD375,0xCB74,0xB351,0xFF3C,0xFF7B,0xF79A,0xF79A,0xFF9A,0xF77A,0xF77A,0xF77A,0xF77A,0xF77A,0xF79A,0xFF9B,0xFFBC,0xFFBC,0xFF7C,0xFF1C,0xE4B8,0xAA10,0xA9D2,0xB1D4,0xB9F5,0xB216,0xB258,0x9A5A,0x48F8,0x291A,0x215B,0x197D,0x119D,0x099E,0x099E,0x099F,0x019F,0x019F,0x099F,0x099F,0x099F,0x099E,0x099E,0x097E,0x117E,0x195D,0x213D,0x291B,0x40F8,0x7A3B,0x8A7A,0x8A58,0x7A37,0x7277,0x6AB6,0x6B97,0x859C,0x663A,0x46B9,0x1EB6,0x0EB5,0x0F16,0x1737,0x1737,0x2739,0x473B,0x5EFC,0x7E5C,0x5333,0x6A72,0x8233,0x9214,0x9A15,0x9A15,0x81B4,0x6952,0x6193,0x5993,0x5172,0x5172,0x4972,0x4971,0x4951,0x5131,0x50F0,0x6131,0x9235,0x9A76,0xA2B6,0xA2F8,0x6171,0x38AE,0x390F,0x3130,0x3150,0x2930,0x2930,0x2950,0x3150,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x1911,0x1912,0x1113,0x1195,0x19D6,0x11B6,0x19B5,0x1112,0x1931,0x2131,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x192F,0x1930,0x1931,0x1132,0x1133,0x19B6,0x2217,0x19D6,0x1995,0x1133,0x1111,0x1931,0x1930,0x2130,0x212F,0x210F,0x292F,0x292F,0x292F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2930,0x2910,0x2930,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2131,0x1931,0x1111,0x1112,0x1153,0x21D6,0x21F7,0x2A38,0x21F7,0x1974,0x1132,0x1912,0x1911,0x1911,0x1931,0x2111,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x2130,0x210F,0x2130,0x2130,0x1931,0x1111,0x1132,0x1174,0x19B5,0x19F7,0x11D7,0x11F8,0x11D8,0x11F8,0x11F8,0x19F8,0x11B6,0x0954,0x1154,0x1973,0x1952,0x1931,0x1931,0x1930,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130, + 0x1A18,0x11D7,0x1195,0x1154,0x1132,0x1932,0x1931,0x2130,0x2131,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x20EF,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x2930,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2110,0x1910,0x1910,0x1911,0x1112,0x1954,0x21F6,0x21F7,0x21F7,0x19B6,0x1175,0x1153,0x1132,0x1932,0x1931,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x290F,0x210F,0x210F,0x210F,0x210E,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2131,0x2131,0x10F1,0x1112,0x1133,0x1995,0x19D7,0x2218,0x21D7,0x1996,0x1133,0x1113,0x1112,0x1911,0x1910,0x1910,0x2130,0x2130,0x2130,0x2150,0x212F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x28EE,0x30AE,0x406C,0xAAB4,0xB252,0xAA11,0xA9F1,0xA9F0,0x89CD,0xFF7E,0xF79B,0xF7BA,0xF7BA,0xF799,0xF798,0xF798,0xF798,0xF798,0xF7B8,0xF7B9,0xF7D9,0xFFDA,0xFFBB,0xF6DB,0xA3B1,0x822E,0x8A0F,0xAAD3,0xC355,0xD3B6,0xDBB7,0xDBB7,0xDBB6,0xDBB6,0xDBB6,0xDB96,0xDBB6,0xE3D6,0xDBB6,0xDBB6,0xD3B5,0xD394,0xCBD4,0xD4F5,0xFEFA,0xFF9A,0xF7B9,0xF7B9,0xF7D9,0xF7D8,0xF7B8,0xF7D8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7D8,0xF7B8,0xF7B8,0xF7D9,0xF7D9,0xFFDA,0xFFBB,0xFF1C,0x934F,0x824E,0x8A0F,0xA2B1,0xBB54,0xD3B6,0xDBD7,0xDBD7,0xDBD7,0xDBD7,0xDBD7,0xDBB6,0xDBB6,0xDBB6,0xDBB5,0xDBB5,0xDBB5,0xD3B5,0xC3D3,0xF659,0xFF7A,0xFF99,0xF798,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7D8,0xF7B9,0xF7D9,0xF7DA,0xF7DA,0xFFBC,0xFEFC,0x9B70,0x8A6E,0x922F,0xAAD2,0xC354,0xD3B6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBD7,0xDBF8,0xAA73,0xA212,0xA232,0xCB56,0xD3B7,0xDBB6,0xDBD6,0xDBB6,0xDBB6,0xDBB6,0xDBD6,0xDBB6,0xDBB6,0xD3B6,0xDBB6,0xDBB6,0xD396,0xD3B5,0xCC14,0xFE7A,0xFF7B,0xFFBA,0xF7B9,0xF7B9,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B9,0xF7B8,0xF798,0xF798,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B9,0xF7B9,0xF7BA,0xFFBB,0xFF9E,0x71CB,0x81CE,0x89CE,0xB2F3,0xD3B6,0xDBD7,0xDBD7,0xDBB7,0xD3B6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xD395,0xD395,0xD3B4,0xC3F3,0xFE7A,0xFF5B,0xFF9A,0xFF9A,0xFFBA,0xFFBA,0xFFBB,0xFF9C,0xD597,0x820D,0x922F,0x9A50,0xBB14,0xD3B7,0xDBB7,0xDBB7,0xDBB7,0xDBD7,0xDBD7,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDB95,0xD395,0xCBB4,0xCC74,0xFEFB,0xFF7A,0xFFB9,0xFFD9,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7D8,0xFFD9,0xFFB9,0xFFBA,0xFF9A,0xFF7A,0xFF5A,0xFF5A,0xFF3A,0xFF3A,0xFF3A,0xFF3A,0xFF3A,0xFF1A,0xFF1B,0xFF3B,0xFF3B,0xFF3B,0xFF5C,0xFF3C,0xFF3C,0xFE5B,0xBBF4,0x89EE,0x89CF,0xAAB3,0xC335,0xD397,0xDBB7,0xDBD7,0xDBB7,0xDBB7,0xDBB6,0xDBD7,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xD3B5,0xD3B5,0xC3D3,0xDD36,0xFF5C,0xFF7A,0xFF9A,0xF79A,0xF7BA,0xF7DA,0xF7DA,0xFFDB,0xFFBC,0xFF1C,0x9B70,0x8A4F,0x922F,0xAAD2,0xC354,0xD3B6,0xDBD7,0xDBB7,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xD395,0xD395,0xD394,0xC3D2,0xFE99,0xFF9A,0xFF99,0xFFB9,0xF7B9,0xFFD9,0xFFBA,0xFFBB,0xFF9C,0xBCB4,0x7A0D,0x8A0F,0x9250,0xB314,0xD3B7,0xDBB7,0xDBB7,0xDBB7,0xDBD7,0xDBB7,0xDBB6,0xDB96,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xD3B5,0xCBD3,0xCC94,0xFEFA,0xFF7A,0xFFB9,0xF7B8,0xF7B8,0xF798,0xF7B8,0xF7B8,0xF7B8,0xF798,0xF7B8,0xF7B8,0xF7B8,0xF7D9,0xF7B9,0xFFDA,0xFFBC,0xC4F5,0x92AF,0x8A0E,0x9A2F,0xC355,0xD396,0xDBB7,0xDBB7,0xDBB7,0xDBB7,0xDBB6,0xDBB6,0xDBB6,0xD3B6,0xD3B6,0xD3B6,0xD3B6,0xD395,0xCB94,0xB372,0xFF5C,0xFF9B,0xFF9A,0xFF9A,0xFF9A,0xF779,0xFF99,0xFF99,0xFF9A,0xFF9A,0xFF9A,0xF79A,0xFFBB,0xFFBC,0xFF7B,0xFF1C,0xED38,0xAA51,0xA9D1,0xA9B3,0xB1F5,0xB216,0xAA38,0x923A,0x48F8,0x291A,0x215C,0x197D,0x119D,0x099E,0x099E,0x099E,0x099F,0x099F,0x099F,0x019F,0x099F,0x099F,0x099F,0x097E,0x097E,0x115E,0x195D,0x213C,0x311B,0x38D8,0x829C,0x8259,0x7A38,0x7257,0x6A76,0x6B16,0x8D3B,0x75FA,0x56DA,0x2696,0x0E74,0x16F6,0x1716,0x1F37,0x2F39,0x3EFA,0x5EDC,0x7E5C,0x52F2,0x72B3,0x8254,0x9214,0x9A15,0x9A36,0x7994,0x6973,0x5972,0x5993,0x5192,0x51B2,0x4992,0x51B2,0x4972,0x4951,0x5151,0x5910,0x7192,0x8A55,0x9255,0x9AB7,0x8255,0x5130,0x38CF,0x3910,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x2930,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2110,0x2130,0x1931,0x1912,0x1112,0x1195,0x19D7,0x19B6,0x1195,0x1112,0x1931,0x2131,0x2130,0x2130,0x212F,0x210F,0x2130,0x212F,0x1930,0x1930,0x1951,0x1932,0x1133,0x19D6,0x2217,0x19F6,0x1995,0x1133,0x1112,0x1931,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x210E,0x210F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x292F,0x210F,0x290F,0x290F,0x210F,0x290F,0x2910,0x2910,0x2910,0x290F,0x210F,0x290F,0x210F,0x292F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2110,0x1910,0x1931,0x1111,0x1112,0x1174,0x21F7,0x21F7,0x21F7,0x19B6,0x1154,0x1132,0x1932,0x1931,0x1911,0x2131,0x2131,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1152,0x1194,0x1195,0x11B6,0x11D7,0x11F8,0x09D8,0x09D8,0x09D9,0x09D8,0x09D8,0x09D8,0x11D7,0x1196,0x0933,0x1132,0x1152,0x1931,0x1951,0x1931,0x1930,0x2130,0x1930,0x190F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130, + 0x11D7,0x11D7,0x11B6,0x1195,0x1153,0x1132,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x2910,0x2110,0x2110,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x2930,0x292F,0x2930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x1910,0x1931,0x1111,0x1132,0x1133,0x21D6,0x21F7,0x21F7,0x21D7,0x1175,0x1133,0x1132,0x1931,0x1931,0x1930,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x2110,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x20EF,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x210F,0x210F,0x2110,0x2110,0x2130,0x2130,0x2151,0x1931,0x1911,0x1112,0x1133,0x1995,0x21F7,0x2218,0x21F7,0x19B6,0x1154,0x1133,0x1112,0x1111,0x1910,0x1910,0x1910,0x2130,0x2930,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EE,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x210F,0x2910,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x28EF,0x30AE,0x406C,0xAA94,0xB252,0xB211,0xA9F1,0xA9F0,0x89CD,0xFF7E,0xF79B,0xF7BA,0xF7B9,0xF798,0xF798,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xF7D8,0xFFD9,0xFFB9,0xFF7A,0xFEDB,0xABB1,0x8A2E,0x8A0F,0xAAF3,0xC355,0xD3B7,0xDBD7,0xDBD7,0xDBD7,0xDBB7,0xDBB6,0xDBB6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xD3B5,0xD3B5,0xCBF4,0xDD15,0xFED9,0xFF99,0xFFB9,0xFFB8,0xF7B8,0xFFB8,0xFFB8,0xFFB8,0xFFB8,0xFFB8,0xFFB8,0xFFB8,0xFFD8,0xFFB8,0xF7B8,0xFFD8,0xFFD8,0xFFD9,0xFFD9,0xFFDA,0xFF9B,0xFF1B,0x9B4F,0x8A4E,0x8A2F,0xAAB2,0xC354,0xD3D7,0xDBF7,0xDBD7,0xDBD7,0xDBD7,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBB5,0xD3B5,0xD3D5,0xCBF3,0xFE59,0xFF7A,0xFF78,0xFF98,0xFFB8,0xF7B7,0xFFB8,0xF7B7,0xFFB8,0xFFB8,0xFFB8,0xF7B7,0xFFB8,0xFFB8,0xFFB8,0xFFD8,0xFFD8,0xFFD9,0xFFD9,0xFFDA,0xFFBA,0xFF9B,0xFEFB,0x9B70,0x8A4E,0x922F,0xAAD2,0xC354,0xD3D6,0xDBD7,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD7,0xDBD7,0xE3F8,0xAA72,0xA232,0xA232,0xCB76,0xD3B7,0xDBD7,0xDBD7,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBD6,0xDBD6,0xDBD6,0xD3B6,0xD3D5,0xCC13,0xFE7A,0xFF5A,0xFF99,0xFFB9,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xFFB8,0xF7B8,0xF7B8,0xFFB8,0xF7B8,0xFFB8,0xF7B8,0xF7B8,0xF7B8,0xF7B8,0xFFB8,0xFFB8,0xF7B8,0xFFB9,0xFFBA,0xFFBB,0xFF9E,0x71CB,0x81CE,0x89CE,0xAAD3,0xD3D6,0xDBF7,0xDBF7,0xDBD7,0xDBB7,0xDBB6,0xDBB6,0xDBB6,0xDBB6,0xDBD6,0xDBB6,0xDBB6,0xD3B5,0xD3D4,0xCC13,0xFE7A,0xFF5B,0xFF9A,0xFF9A,0xFFBA,0xFFBA,0xFF9B,0xFF9C,0xDDB8,0x820D,0x922F,0x9A50,0xB313,0xD3B7,0xDBF7,0xDBD7,0xDBD7,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBD6,0xDBD6,0xDBD6,0xDBB5,0xCBD4,0xCC94,0xFEFA,0xFF7A,0xFF99,0xFFB8,0xFFB8,0xFFB8,0xF7B7,0xF7B7,0xF7B7,0xF7B7,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB8,0xFFB8,0xFFB8,0xFFB9,0xFFB9,0xFF99,0xFF99,0xFF79,0xFF79,0xFF79,0xFF79,0xFF59,0xFF79,0xFF79,0xFF59,0xFF5A,0xFF5A,0xFF7A,0xFF7A,0xFF7B,0xFF5C,0xFE7B,0xBBF3,0x8A0E,0x89CF,0xAAB3,0xC355,0xD3B7,0xDBD7,0xDBD7,0xDBB7,0xDBD7,0xDBB6,0xDBD7,0xDBB6,0xDBD6,0xDBD6,0xDBB6,0xDBD5,0xD3D5,0xCBF4,0xDD56,0xFF3B,0xFF7A,0xFF99,0xFFB9,0xFFB9,0xFFBA,0xFFBA,0xFFBA,0xFF9B,0xFF1C,0x9B70,0x8A4E,0x922F,0xAAD2,0xC354,0xD3D6,0xDBD7,0xDBD7,0xDBB6,0xDBD7,0xDBD6,0xDBD6,0xDBD6,0xDBD6,0xDBB6,0xDBB6,0xD3B5,0xD3B4,0xC3D2,0xFEB9,0xFF79,0xFF99,0xFFB8,0xFFB8,0xFFB9,0xFFB9,0xFF9A,0xFF9C,0xBCB4,0x7A0D,0x8A0F,0x9250,0xB2F3,0xD3B6,0xDBD7,0xDBB7,0xDBD7,0xDBD7,0xDBD7,0xDBB6,0xDBB6,0xDBD6,0xDBD6,0xDBD6,0xDBD5,0xD3B5,0xCBD3,0xD4B4,0xFEF9,0xFF59,0xF778,0xF797,0xFFB8,0xF797,0xF7B7,0xFFB7,0xF7B7,0xFFB8,0xFFB7,0xFFB8,0xFFB8,0xFFD8,0xFFD9,0xFFDA,0xFFBC,0xCCF5,0x92AE,0x8A0D,0x9A2F,0xC355,0xD396,0xDBD7,0xDBD7,0xDBD7,0xDBD7,0xDBB6,0xDBD6,0xDBB6,0xDBD6,0xDBD6,0xDBB6,0xD3B6,0xD3B5,0xCB94,0xB391,0xFF5C,0xFF9A,0xFF9A,0xFF99,0xFF99,0xFF99,0xFF79,0xFF99,0xFF99,0xFF79,0xFF9A,0xFFBA,0xFFBB,0xFFBB,0xFF7B,0xFF1B,0xF599,0xAAB1,0xA1D1,0xA9D3,0xB1F5,0xB216,0xAA38,0x925A,0x4118,0x291A,0x215B,0x199D,0x119D,0x099E,0x099E,0x099E,0x099F,0x019F,0x099F,0x019F,0x099F,0x019F,0x099F,0x099E,0x097E,0x097E,0x117E,0x113D,0x213D,0x311B,0x519A,0x7A9B,0x7A59,0x7237,0x6A57,0x6275,0x7C18,0x7D7A,0x5E9A,0x36B7,0x1654,0x16D6,0x1716,0x1F17,0x373A,0x46FA,0x6EDC,0x7DDB,0x52D2,0x7293,0x8A54,0x9214,0x9A15,0x9216,0x7194,0x6152,0x5973,0x59B3,0x51B3,0x51B3,0x4992,0x4972,0x4971,0x4151,0x4931,0x5151,0x5930,0x71B3,0x8A55,0x8A55,0x92B6,0x7214,0x38CF,0x3910,0x3110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2110,0x2110,0x1911,0x1111,0x1113,0x1195,0x11B6,0x19D6,0x1995,0x1112,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x1951,0x1132,0x0913,0x19B5,0x2217,0x19D6,0x19B5,0x1133,0x1132,0x1931,0x2130,0x2150,0x2150,0x210F,0x210F,0x212F,0x292F,0x210E,0x210F,0x292F,0x290F,0x292F,0x210F,0x290F,0x292F,0x210F,0x210F,0x292F,0x290F,0x292F,0x290F,0x2910,0x210F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x2930,0x2110,0x2930,0x2930,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x292F,0x2950,0x2950,0x292F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1911,0x1911,0x1111,0x1112,0x1133,0x21D6,0x2218,0x21F7,0x21D6,0x1154,0x10F2,0x1911,0x2131,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1132,0x1153,0x11B5,0x11D7,0x11D8,0x09D8,0x09D8,0x01B8,0x01D9,0x01D9,0x01B9,0x01D9,0x09F9,0x09D8,0x11D8,0x1196,0x0933,0x0932,0x1132,0x1132,0x1931,0x1931,0x1931,0x1910,0x1930,0x1910,0x1910,0x1910,0x1910,0x1930,0x1910, + 0x0996,0x1196,0x1196,0x19B6,0x1174,0x1153,0x1153,0x1132,0x1931,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x2110,0x2110,0x2110,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x212F,0x2930,0x2930,0x2930,0x212F,0x210F,0x190F,0x190F,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1932,0x1953,0x1153,0x19B6,0x21F7,0x21D7,0x21D7,0x1975,0x1113,0x1112,0x1111,0x1931,0x1931,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x2930,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1911,0x1952,0x1932,0x1133,0x1975,0x21F7,0x2217,0x21F7,0x1995,0x1974,0x1133,0x1112,0x1111,0x1911,0x2131,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2110,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x30AE,0x406C,0xAAB4,0xB252,0xB211,0xB211,0xA9F0,0x89CD,0xFF5D,0xFF9A,0xFF99,0xFF98,0xF798,0xF797,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB8,0xFFB8,0xFF99,0xFF59,0xFEBA,0xABD1,0x822E,0x8A0F,0xB2F3,0xC375,0xD3D7,0xDBF7,0xDBF7,0xDBD7,0xDBD7,0xE3F7,0xDBD7,0xDBD6,0xE3F7,0xDBF6,0xDBD6,0xD3D5,0xD3D5,0xCBF3,0xDCF4,0xFEB8,0xFF79,0xFF98,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFF96,0xFF96,0xFF96,0xFF96,0xFF97,0xFF97,0xFFB7,0xFFB7,0xFFB7,0xFFB8,0xFFB8,0xFFB9,0xFF9A,0xFF1B,0x9B70,0x8A6E,0x922F,0xAAD2,0xC375,0xD3F7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBD6,0xDBF6,0xDBD6,0xDBD6,0xDBD6,0xDBD5,0xDBD5,0xCBF3,0xF638,0xFF59,0xFF78,0xFF97,0xFF97,0xFF97,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFF97,0xFF97,0xFFB7,0xFFB7,0xFF97,0xFF97,0xFFB7,0xFFB8,0xFFB8,0xFFB9,0xFF99,0xFF7B,0xFEDB,0xA391,0x8A6E,0x924F,0xAAD2,0xC374,0xD3D6,0xDBF7,0xDBF7,0xDBF7,0xDBD6,0xDBD7,0xDBD6,0xDBD6,0xDBF7,0xDBD6,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xAA93,0xA232,0xA231,0xCB76,0xDBD7,0xDBF7,0xDBF7,0xDBF7,0xDBD6,0xDBD6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xDBD6,0xD3F5,0xCC33,0xFE39,0xFF3A,0xFF79,0xFFB8,0xFFB8,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB8,0xFFB8,0xFFB9,0xFFBB,0xFF9D,0x71CB,0x89EE,0x89CE,0xAAD3,0xD3F7,0xDBF8,0xDBF7,0xDBD7,0xDBD7,0xDBD7,0xDBD6,0xDBD6,0xDBD6,0xDBF6,0xDBD6,0xDBD6,0xDBD5,0xD3F4,0xCC13,0xFE59,0xFF5A,0xFF79,0xFF99,0xFF99,0xFF99,0xFF7A,0xFF7C,0xDDB7,0x820D,0x922F,0x9A50,0xB313,0xD3B6,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBD6,0xDBD6,0xDBF6,0xDBD6,0xDBF6,0xDBF6,0xDBD5,0xD3F4,0xD4B4,0xFED9,0xFF38,0xFF77,0xFF97,0xFFB7,0xFFB7,0xFF96,0xFF96,0xFF96,0xFF96,0xFF96,0xFF96,0xFF96,0xFFB6,0xFFB7,0xFF97,0xFF97,0xFF98,0xFF98,0xFF98,0xFF78,0xFF78,0xFF78,0xFF78,0xFF78,0xFF58,0xFF78,0xFF78,0xFF79,0xFF79,0xFF79,0xFF79,0xFF7A,0xFF7A,0xFF5B,0xFE9A,0xBC13,0x8A0E,0x89EF,0xB2D3,0xCB76,0xD3D7,0xDBF8,0xDBF7,0xDBD7,0xDBD7,0xDBF7,0xDBF7,0xDBF7,0xDBD6,0xDBD6,0xDBF6,0xDBF5,0xD3D5,0xCC14,0xDD15,0xFF1A,0xFF39,0xFF58,0xFF78,0xFF98,0xFF99,0xFF99,0xFFBA,0xFF9B,0xFF1B,0xA390,0x8A4E,0x924F,0xAAD2,0xC354,0xD3D6,0xDBF7,0xDBF7,0xDBD7,0xDBD6,0xDBF7,0xDBD7,0xDBD7,0xDBD7,0xDBD6,0xDBB6,0xDBD5,0xD3D5,0xCC13,0xFE57,0xFF58,0xFF78,0xFF98,0xFF98,0xFF98,0xFF99,0xFF9A,0xFF7C,0xC4D4,0x7A0D,0x8A0F,0x9A50,0xB314,0xD3B7,0xDBD7,0xDBD7,0xDBD7,0xDBF7,0xE3F7,0xDBD6,0xDBD6,0xE3F6,0xE3F6,0xDBD6,0xDBD5,0xD3D5,0xCBF3,0xD493,0xFED9,0xFF58,0xFF97,0xFF97,0xFFB7,0xFFB7,0xFFB6,0xFF96,0xFFB6,0xFFB7,0xFFB7,0xFFB7,0xFFB7,0xFFB8,0xFFB8,0xFFD9,0xFF9B,0xCCF4,0x9ACE,0x8A0D,0x920F,0xC354,0xD3B6,0xDBD7,0xDBF7,0xDBF7,0xDBF7,0xDBD7,0xDBD7,0xDBF7,0xDBF7,0xDBF6,0xDBD6,0xDBD6,0xD3D5,0xD3D5,0xBBB2,0xFF1B,0xFF7A,0xFF79,0xFF99,0xFF78,0xFF78,0xFF98,0xFF98,0xFF99,0xFF99,0xFF79,0xFF9A,0xFFBB,0xFFBB,0xFF9B,0xFF3C,0xFDFA,0xBB32,0xA1F1,0xA9D3,0xB1F5,0xB216,0xAA58,0x925A,0x4118,0x293A,0x215B,0x197C,0x119D,0x099E,0x099E,0x019E,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x099F,0x099E,0x097E,0x097E,0x097E,0x115E,0x195D,0x213C,0x291A,0x49BA,0x729B,0x7278,0x6A57,0x6256,0x6B17,0x74D9,0x6659,0x4EF8,0x2ED6,0x1ED6,0x1F17,0x26F7,0x3719,0x4EFB,0x6EDC,0x7D9A,0x52B2,0x7A94,0x8234,0x9235,0x9A36,0x9216,0x7194,0x6173,0x5972,0x5192,0x51B3,0x51B3,0x4992,0x4992,0x4992,0x4992,0x4151,0x4110,0x48F0,0x5110,0x71B2,0x8275,0x8275,0x8295,0x59B2,0x390F,0x3110,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x2930,0x2930,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2930,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2131,0x1911,0x1112,0x1133,0x11B5,0x19D6,0x19D7,0x1995,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x1930,0x1931,0x1952,0x1152,0x1133,0x19B6,0x2217,0x19D6,0x1195,0x1133,0x1112,0x1931,0x1930,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x210E,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x292F,0x2930,0x2930,0x290F,0x2910,0x2930,0x2930,0x210F,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210E,0x210E,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2151,0x2131,0x1911,0x1911,0x1112,0x1133,0x1154,0x19B6,0x2218,0x2218,0x21F7,0x1974,0x10F2,0x1111,0x1911,0x2130,0x2951,0x2930,0x2130,0x210F,0x210F,0x2130,0x2950,0x212F,0x210F,0x212F,0x2130,0x2130,0x2110,0x2110,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x2131,0x1931,0x1111,0x1154,0x19D6,0x11F7,0x11F8,0x09D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x01D9,0x09D9,0x09F9,0x09D7,0x11D6,0x0975,0x0933,0x0912,0x0912,0x1111,0x1132,0x1132,0x1111,0x1131,0x1931,0x1931,0x1911,0x1111,0x1111, + 0x0955,0x1176,0x19D6,0x19D7,0x19B6,0x19B5,0x1174,0x1152,0x1132,0x1131,0x1951,0x2151,0x2151,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x18EF,0x190F,0x1910,0x1910,0x2151,0x2151,0x2151,0x1931,0x1111,0x1132,0x1153,0x1174,0x19B5,0x2217,0x21F8,0x21D7,0x1175,0x1133,0x1132,0x1111,0x1931,0x1930,0x1930,0x1930,0x212F,0x210F,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1153,0x1994,0x21F7,0x2217,0x21F7,0x19B6,0x1154,0x1113,0x1112,0x1111,0x1911,0x1930,0x2130,0x2130,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x292F,0x210F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x30AE,0x386C,0xAAB4,0xB252,0xB211,0xB1F1,0xA9F0,0x91CD,0xFF3C,0xFF7A,0xFF99,0xFF78,0xFF77,0xFF76,0xFF97,0xFF76,0xFF76,0xFF76,0xFF77,0xFF77,0xFF58,0xFF19,0xFE79,0xB3D1,0x8A0D,0x89EF,0xAAF3,0xC375,0xD3D7,0xDC17,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF6,0xDBF7,0xE3F7,0xDBF6,0xDBF6,0xDBF5,0xD414,0xDCF4,0xFE78,0xFF38,0xFF77,0xFF77,0xFF96,0xFF96,0xFF76,0xFF76,0xFF76,0xFF75,0xFF75,0xFF55,0xFF55,0xFF55,0xFF55,0xFF76,0xFF76,0xFF56,0xFF57,0xFF78,0xFF59,0xFEDA,0xA36F,0x8A6E,0x924F,0xAAF2,0xC375,0xD3F7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDC17,0xDBF7,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF5,0xDBF5,0xCC13,0xF5F7,0xFF18,0xFF57,0xFF57,0xFF76,0xFF76,0xFF96,0xFF76,0xFF76,0xFF76,0xFF76,0xFF76,0xFF76,0xFF56,0xFF56,0xFF56,0xFF56,0xFF56,0xFF77,0xFF58,0xFF58,0xFF3A,0xFE9A,0xABB1,0x8A4E,0x922F,0xAAF2,0xC374,0xD3F6,0xDC17,0xDC17,0xDC17,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF6,0xDBF7,0xDBF7,0xDC17,0xDBF7,0xE418,0xB2B3,0xA231,0xA231,0xCB56,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBD6,0xD3F5,0xCC14,0xF5D8,0xFED9,0xFF18,0xFF57,0xFF77,0xFF76,0xFF76,0xFF76,0xFF76,0xFF76,0xFF76,0xFF76,0xFF76,0xFF76,0xFF76,0xFF76,0xFF56,0xFF76,0xFF56,0xFF56,0xFF76,0xFF77,0xFF98,0xFF9A,0xFF7D,0x71CB,0x89EE,0x89CE,0xAAD2,0xD3F7,0xDC18,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF6,0xDBF6,0xDBF6,0xE3F6,0xDBF6,0xDBF6,0xD3F5,0xCC33,0xFE39,0xFF1A,0xFF39,0xFF38,0xFF58,0xFF58,0xFF39,0xFF3B,0xE5B7,0x820C,0x922F,0x9A50,0xB313,0xD3B6,0xDBF7,0xDBF7,0xE417,0xE417,0xDC17,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF6,0xDBF5,0xD3F4,0xD4B4,0xFEB9,0xFF18,0xFF57,0xFF57,0xFF76,0xFF76,0xFF76,0xFF76,0xFF76,0xFF75,0xFF76,0xFF76,0xFF76,0xFF76,0xFF76,0xFF76,0xFF76,0xFF57,0xFF57,0xFF57,0xFF57,0xFF57,0xFF57,0xFF57,0xFF57,0xFF57,0xFF57,0xFF57,0xFF57,0xFF58,0xFF58,0xFF38,0xFF59,0xFF59,0xFF3A,0xFE59,0xBBF2,0x8A0E,0x89EF,0xB2F3,0xCB76,0xDBD7,0xDC18,0xDC18,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF6,0xDC16,0xDBF6,0xDBF5,0xD414,0xD4D4,0xFEB9,0xFF18,0xFF37,0xFF57,0xFF57,0xFF57,0xFF58,0xFF79,0xFF5A,0xFEDB,0xAB90,0x924E,0x922F,0xAAD2,0xC374,0xD3D6,0xDBF7,0xDC17,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF6,0xDBD6,0xDBD5,0xDBF5,0xD413,0xF637,0xFF17,0xFF37,0xFF57,0xFF57,0xFF57,0xFF58,0xFF59,0xFF5B,0xC4D4,0x79ED,0x8A0F,0x9A50,0xB314,0xD3D7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDBD6,0xDBF6,0xE3F6,0xE416,0xE3F6,0xDBF5,0xDBF5,0xD413,0xD4B3,0xFEB8,0xFF38,0xFF77,0xFF76,0xFF76,0xFF96,0xFF76,0xFF76,0xFF55,0xFF75,0xFF76,0xFF76,0xFF76,0xFF77,0xFF98,0xFF99,0xFF7A,0xCCD4,0x9AAE,0x8A0D,0x920F,0xC354,0xD3B7,0xDBD7,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDC17,0xE417,0xDBF7,0xDC17,0xDBF6,0xDBD6,0xD3D5,0xD3D4,0xC3B2,0xFEFA,0xFF59,0xFF58,0xFF78,0xFF78,0xFF57,0xFF57,0xFF57,0xFF58,0xFF58,0xFF58,0xFF38,0xFF59,0xFF7A,0xFF7A,0xFF1B,0xFE1A,0xC393,0xA1F1,0xA9D3,0xB1F5,0xB216,0xAA58,0x925A,0x4118,0x293A,0x215B,0x199D,0x119D,0x099E,0x099E,0x099F,0x019F,0x099F,0x019F,0x019F,0x019F,0x019F,0x019F,0x099F,0x099F,0x099E,0x097E,0x097E,0x117E,0x197D,0x215C,0x20D8,0x521A,0x72BB,0x6278,0x5A36,0x5276,0x5376,0x5D97,0x4EB7,0x4758,0x2717,0x2717,0x26F8,0x36F9,0x4EDA,0x76BC,0x7519,0x5AB2,0x7A94,0x8A34,0x9215,0x9215,0x81D4,0x6973,0x6173,0x5993,0x5172,0x51B3,0x51B3,0x49B2,0x49B2,0x4992,0x4992,0x4131,0x4130,0x4110,0x48F0,0x5951,0x7214,0x7A54,0x7A95,0x6A54,0x4151,0x3110,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x292F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1931,0x1132,0x0912,0x1195,0x19D6,0x19D7,0x1995,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x1930,0x1930,0x1931,0x1132,0x1133,0x19B6,0x2217,0x19D6,0x1995,0x1133,0x1112,0x1931,0x1930,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2910,0x2930,0x2930,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2131,0x2130,0x2130,0x2130,0x2110,0x210F,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x292F,0x210F,0x212F,0x210F,0x2130,0x2130,0x2951,0x2110,0x1931,0x1111,0x1112,0x1153,0x1154,0x19B6,0x21F8,0x2218,0x21D7,0x1174,0x1112,0x1111,0x1910,0x1910,0x2130,0x2130,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2131,0x1911,0x08F1,0x1174,0x19D7,0x11D7,0x09D8,0x01B8,0x01B9,0x01B9,0x01D9,0x01DA,0x01D9,0x01DA,0x01D9,0x09D9,0x09D9,0x09D8,0x11F8,0x11B7,0x1196,0x0934,0x0933,0x0912,0x0912,0x1133,0x1973,0x1153,0x1152,0x1132,0x1132,0x1132,0x1132, + 0x0955,0x0955,0x11B6,0x19F7,0x2217,0x11B5,0x1195,0x1173,0x1153,0x1132,0x1152,0x1952,0x1972,0x1951,0x1931,0x1930,0x2151,0x2131,0x2131,0x2131,0x2131,0x2130,0x2131,0x2131,0x2131,0x2130,0x2131,0x2110,0x2130,0x2131,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x1910,0x1931,0x1931,0x1951,0x1952,0x1952,0x1931,0x1111,0x1132,0x1153,0x1174,0x1195,0x2217,0x2217,0x19B6,0x1154,0x1113,0x1112,0x1932,0x1931,0x2151,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x2130,0x2930,0x212F,0x2930,0x2930,0x210F,0x290F,0x290F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1931,0x1132,0x1132,0x1994,0x21F6,0x21F7,0x2217,0x19B6,0x1133,0x1112,0x10F2,0x1911,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x212F,0x210F,0x210F,0x292F,0x292F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x2110,0x2110,0x2110,0x212F,0x212F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x2930,0x212F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x28EF,0x30AE,0x384C,0xB2B4,0xBA52,0xB211,0xB1F1,0xA9F0,0x91AC,0xFEDB,0xFF19,0xFF38,0xFF37,0xFF16,0xFF15,0xFF15,0xFF14,0xFEF4,0xFEF4,0xFEF5,0xFEF6,0xFEF7,0xFEB8,0xF618,0xBBD1,0x8A0D,0x920E,0xB2F3,0xCB95,0xDBF7,0xDC18,0xDC18,0xDC17,0xDC17,0xE417,0xDBF7,0xDBF7,0xE417,0xE417,0xDC16,0xDC16,0xDBF5,0xDC14,0xDCB4,0xFE17,0xFED7,0xFF16,0xFF16,0xFF15,0xFF15,0xFF14,0xFEF4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED3,0xFED4,0xFEB3,0xFEB4,0xFEB4,0xFEB5,0xFED5,0xFED6,0xFEB7,0xFE58,0xA34F,0x8A4D,0x924F,0xAAF2,0xC395,0xD3F7,0xDC18,0xDC17,0xDC17,0xE417,0xE417,0xDC17,0xE417,0xE417,0xE416,0xDBF6,0xDBF5,0xDC15,0xD433,0xF5D6,0xFEB7,0xFED6,0xFEF6,0xFF16,0xFF15,0xFF15,0xFF14,0xFEF4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED5,0xFED5,0xFED6,0xFED7,0xFEB8,0xF618,0xB391,0x922E,0x922F,0xAAF2,0xC395,0xD3F7,0xDC37,0xE437,0xE417,0xE417,0xE417,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xE438,0xB2B3,0xA231,0xA231,0xBAF4,0xE438,0xE418,0xDC17,0xDC17,0xDC17,0xDC17,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDBF6,0xD3F5,0xD414,0xED57,0xFE57,0xFE96,0xFED6,0xFED5,0xFEF5,0xFED4,0xFED4,0xFED4,0xFEF4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFEF5,0xFEF6,0xFEF8,0xFF1B,0x79CB,0x89EE,0x89EE,0xAAF3,0xD417,0xDC38,0xDC18,0xDC18,0xDC17,0xDC17,0xDBF7,0xDBF7,0xDBF6,0xE417,0xE416,0xE3F6,0xDC16,0xDC15,0xD433,0xFE18,0xFEB9,0xFED8,0xFEF7,0xFEF7,0xFEF7,0xFEB7,0xFEB9,0xDD15,0x820C,0x920F,0x9A50,0xBB13,0xD3D6,0xDC17,0xE417,0xE417,0xE417,0xE417,0xDBF6,0xDC16,0xDC16,0xDC16,0xDC16,0xDC16,0xDBF5,0xD414,0xDCB4,0xFE78,0xFEB7,0xFED6,0xFEF6,0xFEF5,0xFF15,0xFF15,0xFF15,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFF14,0xFF15,0xFF15,0xFF15,0xFF16,0xFF16,0xFF16,0xFF16,0xFF16,0xFF16,0xFF16,0xFF16,0xFF16,0xFF16,0xFEF6,0xFEF6,0xFEF6,0xFEF6,0xFEF7,0xFEF7,0xFED8,0xEDD7,0xB391,0x89ED,0x89CE,0xB2F3,0xCB96,0xD3F7,0xDC18,0xE438,0xDC17,0xDBF7,0xDBF7,0xDBF7,0xDBF7,0xDC17,0xE416,0xDC16,0xDC16,0xDC15,0xDC34,0xDC93,0xFE58,0xFEB7,0xFED6,0xFEF6,0xFEF6,0xFEF6,0xFEF6,0xFEF7,0xFED8,0xF618,0xAB4F,0x924E,0x9A4F,0xB2D2,0xC375,0xD3D6,0xDC17,0xE437,0xDC17,0xDBF7,0xE417,0xDC17,0xE417,0xE417,0xDBF6,0xDBF6,0xDBF5,0xDC15,0xD413,0xFDF6,0xFE96,0xFEB5,0xFED5,0xFEF5,0xFEF6,0xFEF6,0xFEF8,0xFEFA,0xCCB4,0x81EC,0x8A0F,0x9A50,0xBB34,0xD3D7,0xDC18,0xDC18,0xDBF7,0xDC17,0xE417,0xDBF7,0xDBF6,0xE416,0xE416,0xDC16,0xDC15,0xDC15,0xD414,0xDCB3,0xFE57,0xFED7,0xFEF6,0xFF15,0xFEF5,0xFEF5,0xFEF4,0xFEF4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED5,0xFEF5,0xFEF6,0xFF17,0xFEF9,0xCC93,0x9A8E,0x89ED,0x922F,0xC355,0xD3D7,0xDBF7,0xDC18,0xE418,0xDC17,0xDC17,0xDC17,0xE417,0xE417,0xDC17,0xDC16,0xDC16,0xDBF5,0xD3F4,0xC3D2,0xFEB9,0xFF19,0xFF18,0xFF17,0xFEF6,0xFEF6,0xFEF6,0xFEF6,0xFEF6,0xFED6,0xFED6,0xFED6,0xFED7,0xFEF8,0xFEF9,0xFED9,0xFDF9,0xD3F4,0xA1F0,0xA9D3,0xA9F4,0xAA16,0xAA58,0x925A,0x4118,0x293A,0x215B,0x197D,0x119D,0x099E,0x099E,0x099F,0x019F,0x019F,0x019F,0x019F,0x01BF,0x019F,0x019F,0x019E,0x019F,0x019E,0x099E,0x097E,0x119E,0x117D,0x197D,0x215B,0x2118,0x525B,0x5A99,0x5257,0x4A36,0x42D5,0x3C94,0x4E77,0x3ED7,0x26F6,0x2F37,0x2F18,0x36F9,0x4EBA,0x7EBC,0x74F8,0x62D3,0x8294,0x8A54,0x9235,0x9215,0x81D4,0x6973,0x6173,0x5973,0x5193,0x51B3,0x4992,0x4992,0x4192,0x4192,0x4192,0x4992,0x4151,0x4151,0x4110,0x4110,0x4910,0x61B2,0x6A14,0x61F3,0x4151,0x30F0,0x3110,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x2930,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2110,0x1910,0x1931,0x1932,0x1133,0x19B5,0x19D6,0x19F7,0x1995,0x1112,0x1911,0x2151,0x2130,0x2130,0x2150,0x212F,0x212F,0x190F,0x2130,0x1910,0x1931,0x1132,0x1113,0x19D6,0x2217,0x19D6,0x1995,0x1133,0x1111,0x1931,0x2150,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210E,0x210F,0x292F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x2930,0x2930,0x2110,0x2930,0x2130,0x2110,0x2130,0x2131,0x2131,0x2111,0x1911,0x1911,0x2131,0x2111,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2930,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x292F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x212F,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2131,0x1911,0x1911,0x1132,0x1974,0x1174,0x19B6,0x2218,0x2A38,0x19B6,0x1954,0x1112,0x1111,0x1910,0x2110,0x210F,0x2130,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2930,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2151,0x1931,0x1112,0x1995,0x19D7,0x11F8,0x09F8,0x01B8,0x01B9,0x01D9,0x01D9,0x01FA,0x01FA,0x01FA,0x01D9,0x01B9,0x01B8,0x09B8,0x09D8,0x11B7,0x11B6,0x1196,0x1196,0x1995,0x1195,0x1995,0x1995,0x1994,0x1994,0x1994,0x1973,0x1973,0x1973, + 0x1154,0x1154,0x0954,0x11B6,0x19D6,0x19F6,0x19D6,0x19B5,0x1194,0x0953,0x1153,0x1132,0x1131,0x1111,0x1111,0x1111,0x1911,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1910,0x1911,0x1910,0x1910,0x1911,0x1911,0x2131,0x1932,0x1931,0x1932,0x1911,0x1111,0x08F1,0x1111,0x1132,0x0933,0x0954,0x11B5,0x2217,0x2217,0x19D6,0x1154,0x1113,0x1132,0x1111,0x1931,0x1931,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x212F,0x212F,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x210F,0x2130,0x212F,0x210F,0x2130,0x2930,0x212F,0x2930,0x210F,0x290F,0x2930,0x290F,0x290F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x2110,0x2110,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x1931,0x1931,0x1131,0x1132,0x19B5,0x21F6,0x21F7,0x21F6,0x19B6,0x1154,0x1133,0x1912,0x1911,0x1911,0x2131,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2930,0x2930,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x28EF,0x30AE,0x384C,0xAAB4,0xBA52,0xB211,0xB1F1,0xB1F0,0x99CD,0xFDD8,0xF615,0xEE14,0xEE33,0xEDD2,0xEDD1,0xEDF1,0xEE11,0xF631,0xF631,0xF632,0xF633,0xFE35,0xFE16,0xE535,0xB391,0x8A0D,0x920E,0xB2F2,0xCB95,0xDC17,0xE438,0xE438,0xDC17,0xDC17,0xE437,0xDC17,0xDC17,0xE417,0xE417,0xE416,0xE436,0xDC15,0xDC34,0xDC93,0xED74,0xF5F4,0xF613,0xEDF2,0xEDF1,0xEDF1,0xEDD0,0xEDD0,0xEDD0,0xF5D0,0xF5D0,0xF5F0,0xF5F1,0xFE11,0xF611,0xF612,0xF632,0xFE33,0xFE33,0xFE54,0xFE36,0xED95,0xA32E,0x8A2D,0x924F,0xAAF2,0xC395,0xDC17,0xDC18,0xDC18,0xDC18,0xDC17,0xE417,0xE417,0xE417,0xE437,0xE437,0xDC16,0xDC15,0xDC15,0xDC33,0xED14,0xF5B4,0xF5D3,0xEDF2,0xEDD2,0xEDF1,0xEDF1,0xEDF0,0xF5F1,0xF5F1,0xF5F1,0xF5F1,0xF5F1,0xF5F1,0xF5F1,0xF5F1,0xFE12,0xFE12,0xFE33,0xF634,0xFE34,0xFE16,0xE535,0xB350,0x922E,0x922F,0xB312,0xC395,0xDC17,0xE458,0xE438,0xE437,0xDC17,0xE417,0xDC17,0xDC17,0xDC17,0xDC16,0xDC37,0xDC37,0xDC37,0xE458,0xB2D3,0xA211,0xA231,0xAA92,0xE459,0xE438,0xE438,0xDC37,0xDC37,0xDC17,0xDC16,0xDC17,0xDC37,0xDC37,0xE417,0xDC16,0xDC16,0xDBF5,0xD414,0xECF6,0xF5D6,0xF615,0xF634,0xF634,0xFE33,0xFE32,0xF632,0xF611,0xF631,0xF611,0xF631,0xF611,0xF611,0xF611,0xF631,0xF611,0xF631,0xFE32,0xFE32,0xFE32,0xFE54,0xF654,0xF655,0xFE99,0x79CB,0x89EE,0x89EE,0xB2F3,0xDC38,0xDC58,0xDC38,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xE417,0xE416,0xE416,0xE416,0xDC16,0xDC15,0xD433,0xF576,0xF5F6,0xF636,0xF655,0xF655,0xFE56,0xF616,0xF5F6,0xCC73,0x8A0C,0x922F,0x9A50,0xBB33,0xD3F7,0xDC37,0xE437,0xE417,0xE437,0xE417,0xE417,0xE437,0xDC16,0xDC16,0xDC16,0xDC15,0xDC15,0xDC14,0xDC73,0xED54,0xEDB4,0xEDF3,0xEDD2,0xEDD1,0xEDD1,0xEDD1,0xEDB0,0xEDB0,0xEDB0,0xED8F,0xEDB0,0xE590,0xE5AF,0xE58F,0xE5AF,0xE58F,0xE5B0,0xE5B0,0xE5B0,0xE5B0,0xE5B0,0xE5B0,0xE5B0,0xEDB1,0xEDD1,0xEDF1,0xEDF1,0xF612,0xF632,0xF633,0xFE53,0xFE54,0xFE55,0xFE36,0xE535,0xAB50,0x81CD,0x89CE,0xB2F3,0xCBB6,0xDBF7,0xDC38,0xE438,0xDC17,0xDBF7,0xDC17,0xDBF7,0xE437,0xE437,0xE437,0xE436,0xDC16,0xDC15,0xDC14,0xD452,0xF5B6,0xFE35,0xFE54,0xFE54,0xFE54,0xFE54,0xFE54,0xFE55,0xFE36,0xE535,0xA30F,0x922E,0x9A4F,0xB2F2,0xCB75,0xDBF7,0xE437,0xE437,0xDC17,0xDC17,0xDC17,0xDC17,0xE417,0xDC16,0xDC16,0xDBF6,0xDC15,0xDC15,0xD433,0xF595,0xF5F4,0xFE34,0xFE54,0xFE74,0xFE54,0xFE55,0xFE56,0xFE38,0xC452,0x81ED,0x8A0F,0x9A50,0xBB34,0xD3F7,0xDC18,0xDC18,0xDC17,0xDC17,0xE417,0xE417,0xE417,0xE416,0xE416,0xE436,0xDC15,0xDC15,0xDC34,0xDC73,0xED74,0xF5F4,0xEE13,0xEDF2,0xEDF1,0xF5F1,0xF5F1,0xF5F1,0xF5F1,0xF611,0xF611,0xF612,0xFE33,0xFE53,0xF654,0xF654,0xFE56,0xC432,0x9A6D,0x89ED,0x920F,0xC375,0xDBF7,0xDC18,0xE438,0xE418,0xDC17,0xDC17,0xDC17,0xDC17,0xDC17,0xE437,0xDC36,0xDC16,0xDC15,0xDBF4,0xCC12,0xF5B6,0xEDD4,0xEDD3,0xEDD3,0xEDF3,0xF5F3,0xF613,0xF633,0xFE34,0xFE34,0xF634,0xFE34,0xFE55,0xFE56,0xFE77,0xFE58,0xFDB7,0xDC14,0xA1F0,0xA9F3,0xA9F4,0xAA16,0xAA58,0x8A5A,0x4118,0x291A,0x215B,0x197D,0x119D,0x099E,0x099E,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019E,0x099E,0x099E,0x099E,0x097E,0x117D,0x115C,0x193A,0x1938,0x5B3C,0x52F9,0x3A56,0x2293,0x02CD,0x2532,0x2E54,0x2F16,0x2F37,0x2F17,0x3EF9,0x56BA,0x869D,0x6C56,0x62B3,0x8294,0x8234,0x8A35,0x8A15,0x79B4,0x6973,0x5973,0x5993,0x5193,0x4993,0x4992,0x4992,0x49B2,0x4192,0x4192,0x4172,0x4171,0x4151,0x4130,0x4110,0x410F,0x4110,0x4971,0x4951,0x3910,0x3110,0x3130,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2110,0x1910,0x1931,0x1132,0x1133,0x11B5,0x11D6,0x19D6,0x19B5,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x1910,0x1930,0x1931,0x1132,0x1112,0x19B5,0x2217,0x21D6,0x1995,0x1132,0x1131,0x1951,0x2130,0x2130,0x212F,0x210F,0x212F,0x210F,0x292F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x210F,0x292F,0x210F,0x210F,0x2930,0x2110,0x2110,0x2130,0x2131,0x2131,0x2131,0x1932,0x1932,0x1932,0x1932,0x1912,0x1911,0x2131,0x2131,0x2131,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x210F,0x210F,0x292F,0x2950,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2131,0x1911,0x1911,0x1932,0x1153,0x1974,0x19B6,0x2218,0x2A18,0x21D6,0x1974,0x1112,0x1111,0x1911,0x2110,0x2110,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2151,0x1931,0x1132,0x1995,0x11B7,0x11D8,0x09D8,0x01B8,0x01D9,0x01B9,0x01FA,0x01FA,0x01DA,0x01DA,0x01B9,0x09D9,0x09D9,0x09B8,0x09B7,0x09B7,0x11B6,0x19D7,0x21F7,0x2217,0x21F7,0x2217,0x21F6,0x21F6,0x21D5,0x21D5,0x21B5,0x21B5,0x21D5, + 0x1133,0x1133,0x1133,0x1154,0x1175,0x11B6,0x11B6,0x11D6,0x11B5,0x1195,0x0954,0x0933,0x0912,0x08F1,0x08F1,0x08F1,0x1111,0x1112,0x1112,0x1112,0x1111,0x1131,0x1132,0x1132,0x1131,0x1131,0x1111,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1931,0x10F1,0x1912,0x1112,0x1112,0x1112,0x10F2,0x08F2,0x08F2,0x0913,0x0933,0x0954,0x11B5,0x2237,0x2217,0x21D6,0x1154,0x1113,0x10F2,0x1911,0x1931,0x2151,0x2150,0x1930,0x190F,0x190F,0x212F,0x2130,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x2110,0x210F,0x210F,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x2930,0x290F,0x210F,0x290F,0x292F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2110,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2150,0x2130,0x2130,0x2130,0x2110,0x2110,0x2131,0x1931,0x1111,0x1112,0x1153,0x19D5,0x19D6,0x21F6,0x21D6,0x1995,0x1954,0x1133,0x1112,0x1911,0x1911,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x2930,0x2930,0x2930,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2110,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x28EF,0x30CE,0x384C,0xAAB4,0xBA52,0xB212,0xB1F1,0xB1D0,0xA1CD,0xF535,0xF574,0xEDB3,0xED92,0xE530,0xED2F,0xED4F,0xED4E,0xED4F,0xED6F,0xED70,0xED71,0xED92,0xED53,0xDC93,0xB350,0x89ED,0x920E,0xB2F3,0xCB95,0xDC17,0xE458,0xE438,0xDC37,0xE437,0xE437,0xDC17,0xDC17,0xDC17,0xE437,0xE436,0xE436,0xDC15,0xDC34,0xDC53,0xED13,0xED52,0xED71,0xED50,0xED4F,0xED2F,0xED2E,0xED2E,0xED2E,0xED2E,0xED2F,0xED2E,0xED4F,0xED4F,0xED4F,0xED6F,0xED70,0xF570,0xF591,0xF5B2,0xF593,0xE514,0xA30E,0x8A2D,0x922E,0xB2F2,0xCBB5,0xDC17,0xDC38,0xE438,0xDC18,0xE438,0xE437,0xE417,0xE417,0xE437,0xE437,0xE436,0xE436,0xDC15,0xDC34,0xE4D3,0xED33,0xED52,0xED51,0xED30,0xED2F,0xED2F,0xED2E,0xED2E,0xED2E,0xED2E,0xED0E,0xED2F,0xED2E,0xED2E,0xED2F,0xED2F,0xED2F,0xED50,0xED51,0xED72,0xED53,0xE4D3,0xB32F,0x922E,0x9A4F,0xB312,0xCBB5,0xDC17,0xE458,0xE458,0xE437,0xDC37,0xDC37,0xDC17,0xDC37,0xDC37,0xE437,0xDC37,0xE457,0xE457,0xE458,0xB2D3,0x9A11,0x9A31,0xA272,0xE458,0xE438,0xE458,0xE458,0xDC37,0xDC17,0xDC17,0xDC37,0xDC37,0xE437,0xE437,0xE417,0xE416,0xDBF5,0xDC15,0xE474,0xED14,0xED53,0xED73,0xED72,0xED71,0xED70,0xED4F,0xED4E,0xED4E,0xED2E,0xED2E,0xED2E,0xED2E,0xED4E,0xED2F,0xED2F,0xED2F,0xED4F,0xED4F,0xED50,0xED71,0xED92,0xED73,0xF5D7,0x81CB,0x89EE,0x89EE,0xB2F3,0xDC58,0xE458,0xDC38,0xDC17,0xDC17,0xDC37,0xE437,0xDC17,0xE417,0xE417,0xE437,0xE416,0xE416,0xDC35,0xDC34,0xE4B4,0xED34,0xE533,0xE553,0xED73,0xED73,0xED74,0xED55,0xCC32,0x8A0D,0x9A2F,0x9A70,0xBB34,0xDC17,0xE438,0xE438,0xE437,0xE437,0xE437,0xDC37,0xDC36,0xE436,0xE436,0xDC16,0xDC36,0xDC35,0xDC34,0xDC53,0xECF3,0xED53,0xED72,0xED51,0xED30,0xED30,0xED2F,0xED2F,0xED2F,0xED2E,0xE4EE,0xED0E,0xED0E,0xE50E,0xE50E,0xE50E,0xE50E,0xE50E,0xE50E,0xE50E,0xE50E,0xE50E,0xE50E,0xE50E,0xE50E,0xE50E,0xE50E,0xE50E,0xE52E,0xE52E,0xED4F,0xED70,0xED91,0xED92,0xED73,0xDCB3,0xAB0E,0x81AC,0x89CE,0xB313,0xCBB6,0xDC18,0xE438,0xE438,0xDC18,0xDC17,0xDC17,0xE437,0xDC17,0xE437,0xE437,0xDC36,0xE436,0xDC15,0xDC14,0xDC53,0xE4F3,0xED53,0xED72,0xED71,0xED71,0xED71,0xED72,0xE572,0xED74,0xE4F4,0xAAEF,0x922E,0x9A4F,0xB2F2,0xCB95,0xDC17,0xE438,0xE458,0xE437,0xDC17,0xDC37,0xE437,0xE437,0xE436,0xDC16,0xDC16,0xDC15,0xDC35,0xDC33,0xED14,0xED53,0xED72,0xED72,0xED92,0xED72,0xED93,0xED74,0xED34,0xB390,0x89ED,0x920F,0x9A50,0xBB54,0xDC17,0xDC38,0xE438,0xDC17,0xDC17,0xE437,0xE437,0xE437,0xE437,0xE436,0xE436,0xDC35,0xDC35,0xDC34,0xDC73,0xED13,0xED53,0xED71,0xE550,0xED2F,0xED2F,0xED2F,0xED2F,0xED2F,0xED4F,0xED4F,0xED4F,0xED70,0xED91,0xED91,0xED92,0xED94,0xC3F1,0x9A4D,0x89CD,0x9A2F,0xC375,0xDBF7,0xDC18,0xE438,0xE438,0xE438,0xE437,0xDC17,0xDC17,0xDC17,0xE437,0xE437,0xDC36,0xDC15,0xDC14,0xD3F2,0xED34,0xED53,0xED52,0xED31,0xE531,0xED30,0xED30,0xED50,0xED51,0xED71,0xED71,0xED92,0xF5B3,0xF5B4,0xFDD5,0xFDB5,0xFD76,0xE454,0xA1EF,0xA9D2,0xA9F4,0xAA16,0xA258,0x8A5A,0x4118,0x291A,0x215B,0x197D,0x119D,0x099E,0x099E,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019E,0x099E,0x099E,0x099E,0x097E,0x117D,0x117C,0x1179,0x2A79,0x5C3D,0x64DD,0x657B,0x0BAF,0x040C,0x0D4F,0x2ED5,0x2F57,0x3738,0x3ED8,0x569A,0x865C,0x6C16,0x6AD4,0x8294,0x8234,0x8A15,0x81F5,0x7194,0x6994,0x5993,0x5193,0x5193,0x4992,0x4992,0x4992,0x4992,0x4192,0x3971,0x4192,0x4171,0x4192,0x4171,0x3930,0x38EF,0x390F,0x3910,0x38F0,0x3110,0x3130,0x3130,0x3131,0x2930,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x2130,0x2930,0x2130,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2131,0x1931,0x1132,0x1133,0x19B5,0x19D7,0x19D7,0x1995,0x1112,0x1911,0x2131,0x2130,0x2130,0x212F,0x2130,0x210F,0x212F,0x2130,0x1910,0x1911,0x1112,0x1133,0x19B5,0x21F7,0x19D6,0x1994,0x1132,0x1111,0x1930,0x1930,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x2110,0x2130,0x1910,0x1931,0x1932,0x1932,0x1932,0x1953,0x1953,0x1153,0x1133,0x1112,0x1912,0x1911,0x1911,0x1910,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x210F,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2930,0x2951,0x1911,0x1911,0x1112,0x1133,0x1174,0x19D6,0x21F7,0x21F7,0x21F7,0x1974,0x1112,0x10F1,0x18F1,0x1910,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2930,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2930,0x2930,0x212F,0x2130,0x2130,0x2131,0x1931,0x1112,0x1995,0x11B7,0x11D8,0x09B8,0x01B8,0x01B9,0x01B9,0x01DA,0x01FA,0x01DA,0x01DA,0x01D9,0x01B9,0x0198,0x09B8,0x09B7,0x11B7,0x11B6,0x11B6,0x19D6,0x19F6,0x21F6,0x21F6,0x21F6,0x21B5,0x21B5,0x21D5,0x21B5,0x21D5,0x21B5, + 0x1952,0x1132,0x1133,0x1133,0x1154,0x1175,0x11B6,0x19F7,0x11D6,0x11D6,0x1195,0x0974,0x0954,0x0933,0x0913,0x1133,0x1133,0x1133,0x1132,0x1112,0x1132,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1132,0x1132,0x1112,0x1112,0x1112,0x1132,0x1132,0x1112,0x10F2,0x10F2,0x1112,0x08F2,0x08F2,0x0912,0x0913,0x1154,0x1175,0x19F7,0x2A58,0x2217,0x21F6,0x1154,0x1133,0x1112,0x1911,0x1931,0x2131,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x2950,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x210F,0x292F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x1911,0x1911,0x1111,0x1112,0x1133,0x19B5,0x21F6,0x21F6,0x21F6,0x1995,0x1153,0x1112,0x1112,0x1911,0x1910,0x2130,0x2130,0x2110,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2950,0x212F,0x2930,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x28EF,0x28CE,0x384C,0xAAB4,0xBA53,0xB212,0xB1F1,0xB1D0,0xA1AD,0xFD36,0xFD74,0xF593,0xF572,0xF530,0xED2F,0xED0E,0xED2E,0xF52E,0xF52F,0xF54F,0xF530,0xF551,0xED33,0xDC92,0xBB4F,0x920D,0x920E,0xB2F2,0xCBB5,0xDC37,0xE458,0xE458,0xE437,0xE437,0xE437,0xE437,0xDC37,0xDC37,0xDC37,0xE436,0xE436,0xE435,0xDC34,0xE453,0xF514,0xF532,0xED51,0xED30,0xED2F,0xED0F,0xF52F,0xF50E,0xF52F,0xF52F,0xF52F,0xF50E,0xF50E,0xED0E,0xED0E,0xED2F,0xED2F,0xF52F,0xED50,0xF551,0xF553,0xE4D3,0xAB0E,0x922D,0x922F,0xB312,0xCBB5,0xDC17,0xE438,0xE458,0xE438,0xE438,0xE437,0xE417,0xE437,0xE437,0xE437,0xE457,0xE436,0xE435,0xDC33,0xECB3,0xF513,0xED32,0xED31,0xED10,0xED0F,0xED0F,0xF50E,0xED0E,0xED0E,0xF50E,0xF50E,0xF50E,0xF50E,0xF50E,0xF50E,0xF50F,0xF52F,0xF530,0xF530,0xF531,0xF533,0xE4B3,0xBB4F,0x922E,0x9A2F,0xB313,0xCB95,0xDC17,0xDC58,0xE458,0xDC37,0xDC37,0xE437,0xE437,0xE437,0xE437,0xDC37,0xE457,0xDC37,0xDC57,0xE478,0xBAF3,0x9A10,0x9A31,0xA251,0xD3F7,0xE458,0xE438,0xE437,0xDC37,0xDC37,0xDC37,0xDC37,0xE437,0xDC37,0xE437,0xDC36,0xE437,0xDC16,0xDC15,0xDC34,0xECB4,0xECF4,0xF533,0xF532,0xF531,0xF530,0xF50F,0xF52F,0xF52F,0xF52F,0xF50E,0xF50E,0xED0E,0xED0E,0xF50F,0xED0F,0xED0F,0xF52F,0xF52F,0xF530,0xF530,0xF551,0xED52,0xFDD7,0x81CB,0x89EE,0x91EF,0xB2F3,0xDC58,0xDC58,0xDC38,0xDC37,0xDC37,0xE437,0xE437,0xE437,0xE417,0xE437,0xE437,0xE437,0xE436,0xE435,0xDC34,0xECD5,0xED14,0xED33,0xED33,0xED53,0xED53,0xED54,0xED35,0xCC32,0x920D,0x9A4F,0xA291,0xBB54,0xDC17,0xE458,0xE458,0xDC17,0xE417,0xE437,0xDC37,0xE437,0xE456,0xE456,0xE436,0xE436,0xDC35,0xDC34,0xE453,0xF514,0xF553,0xED52,0xED31,0xF530,0xF530,0xF52F,0xF50F,0xF50F,0xF50F,0xF50E,0xF50E,0xF50E,0xF50E,0xF50E,0xF50E,0xF50E,0xF52E,0xF52E,0xF52E,0xF52E,0xF52E,0xF50E,0xF50E,0xED0E,0xF52E,0xED2E,0xED2E,0xED2E,0xED2E,0xED2E,0xED2F,0xED30,0xED51,0xED32,0xE4B2,0xAB0E,0x89CC,0x91EE,0xB313,0xCBD6,0xDC17,0xE458,0xE438,0xDC38,0xDC38,0xE458,0xE437,0xE437,0xDC37,0xDC36,0xE436,0xE436,0xE435,0xDC34,0xDC33,0xECF4,0xED33,0xED52,0xED31,0xED51,0xED51,0xED52,0xED52,0xED53,0xE4D4,0xAAEF,0x9A2E,0xA24F,0xB313,0xCB95,0xDC17,0xE458,0xE457,0xE437,0xDC37,0xDC37,0xE437,0xE457,0xE457,0xE436,0xE436,0xE435,0xE435,0xDC33,0xECF4,0xED13,0xED32,0xED52,0xED52,0xED52,0xED52,0xED53,0xED15,0xB350,0x89ED,0x920F,0x9A50,0xBB54,0xDC17,0xE438,0xDC38,0xDC37,0xDC37,0xE437,0xE437,0xE437,0xE437,0xDC36,0xE436,0xE436,0xE435,0xDC34,0xDC73,0xED13,0xED33,0xED51,0xED30,0xF530,0xF50F,0xF50F,0xF50F,0xF52F,0xF52F,0xED0F,0xED0F,0xED2F,0xED50,0xED51,0xED52,0xF574,0xCBF1,0x9A6D,0x89ED,0x9A2F,0xCB95,0xDC17,0xE438,0xE438,0xE438,0xDC37,0xDC17,0xDC17,0xDC17,0xDC37,0xE437,0xE457,0xE436,0xDC35,0xDC35,0xD412,0xF534,0xF573,0xF552,0xF552,0xF531,0xF531,0xF531,0xF551,0xF551,0xF551,0xED51,0xED51,0xF552,0xF572,0xF593,0xFD74,0xFD55,0xEC75,0xA1EF,0xA1D2,0xAA14,0xAA36,0xA258,0x8A5A,0x4118,0x291A,0x215C,0x199D,0x119D,0x099E,0x019E,0x019E,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019E,0x019E,0x099E,0x099E,0x097E,0x097D,0x097C,0x099A,0x09F8,0x43FC,0x761F,0x6E9D,0x4E58,0x1530,0x054F,0x26B4,0x2F36,0x3738,0x3ED8,0x5E9A,0x8E3C,0x5B74,0x72D4,0x8295,0x8235,0x8A15,0x81F5,0x6973,0x6194,0x5994,0x5193,0x5193,0x49B3,0x4993,0x4992,0x4192,0x4172,0x3971,0x4172,0x3951,0x4191,0x3971,0x3950,0x3930,0x3930,0x3930,0x3930,0x3930,0x3130,0x3130,0x2930,0x2910,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x292F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x210F,0x290F,0x210F,0x212F,0x212F,0x210F,0x292F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x1910,0x1931,0x1932,0x1133,0x19B5,0x19D6,0x19D7,0x1995,0x1112,0x1911,0x2131,0x2130,0x2130,0x212F,0x212F,0x2130,0x212F,0x2130,0x1930,0x1931,0x1112,0x1112,0x19B5,0x21F6,0x21D6,0x19B5,0x1132,0x1111,0x1951,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x210F,0x290F,0x290F,0x2110,0x2110,0x2110,0x1911,0x1911,0x1932,0x1132,0x1133,0x1153,0x1174,0x19B5,0x19B5,0x1995,0x1954,0x1133,0x1112,0x1911,0x1911,0x2111,0x2131,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x2110,0x2130,0x2131,0x2111,0x18F1,0x1112,0x1133,0x1154,0x19B6,0x21F7,0x21F7,0x21D6,0x1154,0x1133,0x1112,0x18F1,0x2110,0x2110,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x2950,0x2950,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x212F,0x212F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2131,0x1911,0x1132,0x1995,0x19D7,0x11D8,0x09D8,0x01B8,0x01B9,0x01B9,0x01DA,0x01DA,0x01DA,0x01FA,0x01D9,0x01B8,0x09B8,0x09B7,0x11D7,0x11D7,0x19D6,0x19B6,0x19B5,0x1194,0x1174,0x1974,0x1153,0x1953,0x1973,0x1953,0x1953,0x1953,0x1953, + 0x1952,0x1932,0x1932,0x1132,0x1132,0x1153,0x19B5,0x19D6,0x2217,0x19F7,0x19D7,0x19D7,0x19D6,0x19B5,0x19B5,0x1995,0x1994,0x1974,0x1974,0x1974,0x1974,0x1174,0x1974,0x1974,0x1974,0x1974,0x1974,0x1153,0x1974,0x1953,0x1954,0x1954,0x1953,0x1153,0x1133,0x1133,0x1154,0x1974,0x1174,0x1995,0x19B5,0x19D6,0x2237,0x2A58,0x2237,0x21F7,0x1995,0x1154,0x1132,0x1112,0x1911,0x2131,0x2130,0x2110,0x2130,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x292F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1911,0x1912,0x1132,0x1133,0x19B5,0x2217,0x2217,0x21F6,0x1995,0x1974,0x1132,0x10F1,0x1911,0x1911,0x2110,0x2130,0x2130,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x28EF,0x28AE,0x384C,0xAAB5,0xBA53,0xB211,0xB1F1,0xB1F0,0xA1CD,0xFD36,0xFD74,0xFDB3,0xF571,0xF550,0xF52F,0xF52F,0xF52F,0xF54F,0xF54F,0xF54F,0xF550,0xF531,0xF532,0xE492,0xBB4F,0x91ED,0x9A2F,0xB313,0xCBB6,0xDC37,0xE478,0xE478,0xE437,0xE457,0xE457,0xDC37,0xE437,0xDC37,0xE437,0xE436,0xE456,0xE435,0xE434,0xE473,0xF513,0xF553,0xF551,0xF530,0xF530,0xF52F,0xF52F,0xFD4F,0xF52F,0xFD4F,0xF52F,0xF52F,0xF50E,0xF52F,0xF50F,0xF50F,0xF52F,0xF530,0xF530,0xF530,0xF552,0xE4B2,0xB30E,0x922D,0x9A4F,0xB313,0xCBB5,0xDC38,0xE458,0xE458,0xE438,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE456,0xE456,0xE435,0xE434,0xECB3,0xF513,0xED11,0xF531,0xF510,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52E,0xF52F,0xFD2F,0xF52F,0xF530,0xF530,0xF531,0xF533,0xE4B2,0xBB4F,0x9A4D,0x9A2F,0xBB13,0xCBB5,0xDC37,0xDC58,0xE457,0xDC37,0xE437,0xE437,0xE437,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC57,0xE457,0xC354,0x9A10,0x9A30,0x9A31,0xD3D6,0xE458,0xE458,0xE458,0xE437,0xDC37,0xDC37,0xDC37,0xE437,0xE437,0xDC37,0xDC36,0xE437,0xE436,0xE416,0xDC15,0xE434,0xEC94,0xF4D3,0xF512,0xFD32,0xFD31,0xFD31,0xFD30,0xFD30,0xFD30,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF530,0xF550,0xF530,0xF550,0xF551,0xF572,0xF573,0xFDD7,0x81CB,0x89EE,0x91EE,0xB2F3,0xDC58,0xDC58,0xDC38,0xDC37,0xDC37,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE457,0xE436,0xE435,0xE454,0xF515,0xF534,0xF554,0xF553,0xF553,0xF553,0xF554,0xF535,0xCC12,0x920D,0x9A2F,0xA291,0xC374,0xDC38,0xE478,0xE458,0xDC37,0xE437,0xE437,0xE437,0xE437,0xE457,0xE436,0xE436,0xE436,0xE435,0xDC34,0xE473,0xF514,0xF553,0xF552,0xF531,0xF530,0xF530,0xF530,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF54F,0xF54F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52F,0xF52E,0xF52E,0xF52F,0xF52F,0xF54F,0xF52F,0xED10,0xF531,0xE4D2,0xB34F,0x89CC,0x91EE,0xBB13,0xD3D6,0xDC17,0xDC58,0xE458,0xDC37,0xE458,0xE458,0xE457,0xDC37,0xDC37,0xDC36,0xE456,0xE456,0xE436,0xE435,0xE453,0xECD4,0xF534,0xF553,0xF572,0xF572,0xF572,0xF572,0xF553,0xF554,0xE4D4,0xB30F,0x9A4E,0xA250,0xBB13,0xCB95,0xDC17,0xE458,0xE457,0xE437,0xDC16,0xDC37,0xE437,0xE457,0xE457,0xE436,0xE436,0xDC35,0xE435,0xE454,0xECF4,0xF513,0xF533,0xF552,0xF552,0xF552,0xF553,0xF554,0xF535,0xBB50,0x89ED,0x920F,0xA271,0xC375,0xDC37,0xE438,0xE458,0xE437,0xDC37,0xE437,0xE457,0xE457,0xE437,0xE457,0xE436,0xE436,0xE455,0xE454,0xE473,0xECF3,0xF553,0xF551,0xF551,0xF530,0xF530,0xF530,0xF52F,0xF52F,0xF54F,0xF52F,0xF52F,0xF54F,0xF550,0xED51,0xED51,0xF574,0xCBF1,0x9A6D,0x89ED,0x9A2F,0xC395,0xDBF7,0xE458,0xE438,0xDC38,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xE456,0xE435,0xDC34,0xDC12,0xFD55,0xFD73,0xFD73,0xFD72,0xFD72,0xF552,0xF551,0xF551,0xF551,0xF551,0xF551,0xF571,0xF572,0xF572,0xF573,0xFD74,0xFD55,0xF4D6,0xA1EF,0xA9D2,0xAA14,0xAA36,0xA278,0x8A5A,0x4118,0x291A,0x215C,0x197D,0x119D,0x099E,0x099E,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019E,0x019E,0x099E,0x099D,0x019D,0x01BB,0x0219,0x2BBB,0x665F,0x5EBD,0x4ED9,0x2E74,0x26B3,0x1EB3,0x2F56,0x3737,0x46D8,0x5E7A,0x8E1C,0x5B33,0x72D4,0x8295,0x8235,0x8215,0x79D4,0x6993,0x6194,0x5993,0x5193,0x5193,0x51B3,0x49B3,0x4992,0x4192,0x4172,0x3972,0x3951,0x3951,0x4171,0x4171,0x3971,0x3971,0x3971,0x3950,0x3951,0x3930,0x3130,0x3130,0x2930,0x2950,0x2950,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x2930,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x2130,0x1910,0x1911,0x1932,0x1133,0x19B5,0x19D6,0x19D7,0x1995,0x08F1,0x1911,0x2131,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x1931,0x1932,0x1112,0x21D6,0x2A17,0x21D6,0x1994,0x1132,0x1111,0x1931,0x2130,0x2130,0x2130,0x212F,0x292F,0x292F,0x292F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x292F,0x290F,0x210F,0x2110,0x2110,0x2111,0x1932,0x1932,0x1974,0x1174,0x1195,0x19B6,0x19D6,0x19D6,0x19F6,0x21F6,0x21F6,0x19B5,0x2194,0x1933,0x1932,0x1911,0x2131,0x2131,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x212F,0x210F,0x290F,0x292F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2131,0x2131,0x18F1,0x1112,0x1133,0x1154,0x19B6,0x21F7,0x21F7,0x19B6,0x1974,0x1933,0x1112,0x1911,0x1911,0x2130,0x2110,0x2930,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2151,0x1911,0x10F1,0x1174,0x19D6,0x11D7,0x09D8,0x01B8,0x01D9,0x0198,0x01B9,0x01BA,0x01BA,0x01DA,0x09D9,0x09D9,0x11D8,0x11F8,0x19F7,0x11B5,0x1154,0x1133,0x0912,0x1112,0x1112,0x1132,0x1132,0x1952,0x1952,0x1952,0x1932,0x1112,0x1932, + 0x1931,0x1931,0x1931,0x1911,0x1932,0x1953,0x1133,0x1194,0x19D5,0x19D6,0x19F7,0x19F7,0x21F7,0x2217,0x2A37,0x2A17,0x2A17,0x2A17,0x2A17,0x2A17,0x2A37,0x2A16,0x2A16,0x2A17,0x2A17,0x2A16,0x2A16,0x2A16,0x3237,0x2A16,0x2A37,0x2A17,0x29F6,0x21F6,0x29F7,0x2A37,0x3257,0x2A37,0x3258,0x3237,0x2A57,0x2A37,0x2A37,0x21F6,0x21D6,0x1994,0x1133,0x1112,0x1111,0x1911,0x1911,0x2110,0x2130,0x210F,0x2110,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x292F,0x212F,0x210F,0x2930,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x292F,0x210F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1931,0x1911,0x1932,0x1932,0x1133,0x1995,0x2217,0x2217,0x21F7,0x1995,0x1954,0x1953,0x1111,0x1911,0x18F0,0x1910,0x2130,0x2930,0x2930,0x292F,0x292F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x210F,0x210F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x28EF,0x30CE,0x384C,0xAAB4,0xB252,0xB212,0xB1F1,0xB1F0,0xA1AD,0xFD36,0xFD74,0xFD92,0xF571,0xF550,0xF52F,0xF52F,0xFD4F,0xFD4F,0xFD6F,0xFD70,0xFD50,0xFD51,0xF532,0xE4B2,0xC370,0x920D,0x920E,0xB2F2,0xCB95,0xDC17,0xE458,0xE478,0xE457,0xDC37,0xE457,0xDC37,0xDC37,0xDC37,0xDC36,0xE436,0xE456,0xE435,0xE434,0xE473,0xF514,0xFD73,0xF551,0xF530,0xFD50,0xF550,0xFD50,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD2F,0xFD4F,0xFD2F,0xFD4F,0xF52F,0xFD50,0xF550,0xFD50,0xFD51,0xFD53,0xECD3,0xB32F,0x922D,0x9A4F,0xB333,0xCBB6,0xDC37,0xE458,0xE458,0xE438,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE436,0xE456,0xE435,0xE454,0xECD3,0xF533,0xF532,0xF531,0xF530,0xFD30,0xFD2F,0xFD2F,0xF52F,0xFD2F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD50,0xFD50,0xFD51,0xFD53,0xE4B2,0xBB6F,0x9A4D,0x9A4F,0xBB13,0xCBB5,0xDC37,0xDC58,0xE457,0xE457,0xE457,0xE457,0xDC37,0xE457,0xE457,0xDC36,0xE457,0xE457,0xE477,0xE477,0xD3F6,0x9A30,0x9A30,0x9A30,0xC375,0xE458,0xE458,0xE458,0xE458,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE436,0xE437,0xE437,0xE436,0xDC15,0xE414,0xE454,0xF4B4,0xF4D3,0xFD13,0xFD32,0xFD31,0xFD31,0xFD51,0xFD51,0xFD50,0xFD30,0xFD30,0xFD50,0xFD30,0xFD50,0xFD50,0xFD50,0xFD50,0xF551,0xF551,0xF552,0xF593,0xFDB6,0x81CB,0x89EE,0x91EE,0xB2F3,0xDC58,0xDC58,0xE458,0xDC38,0xE438,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE436,0xE436,0xE435,0xE454,0xF516,0xFD55,0xF554,0xF554,0xF553,0xF574,0xF554,0xF555,0xD412,0x920D,0x920F,0x9A70,0xBB34,0xDC37,0xE458,0xE458,0xE457,0xE457,0xE437,0xE437,0xE437,0xE456,0xE436,0xE436,0xE436,0xE435,0xE454,0xE473,0xF534,0xF553,0xF552,0xF531,0xF530,0xF530,0xFD50,0xFD30,0xFD50,0xFD2F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xF54F,0xFD4F,0xFD4F,0xF54F,0xF52E,0xF54F,0xFD4F,0xF54F,0xF54F,0xF54F,0xF550,0xF550,0xF552,0xED13,0xBB6F,0x89EC,0x920E,0xAAD2,0xCBB6,0xD417,0xE458,0xE458,0xDC38,0xDC37,0xE457,0xDC57,0xDC37,0xDC37,0xDC36,0xE456,0xE456,0xE456,0xE435,0xE454,0xECD4,0xF534,0xF553,0xFD73,0xFD93,0xF573,0xF573,0xF573,0xF575,0xECF5,0xB30F,0x9A4E,0xA250,0xBB13,0xCB95,0xDC17,0xE458,0xE457,0xE437,0xE437,0xE437,0xE437,0xE457,0xE436,0xE436,0xDC36,0xDC35,0xE455,0xE454,0xF4F4,0xF514,0xF533,0xFD53,0xFD73,0xFD73,0xFD74,0xFD75,0xF536,0xB330,0x89ED,0x920F,0xA271,0xCB95,0xDC38,0xE458,0xE458,0xE457,0xE437,0xE437,0xE457,0xE437,0xE457,0xE457,0xE456,0xE456,0xE455,0xE454,0xE493,0xF4F4,0xF553,0xF551,0xF551,0xFD50,0xFD50,0xFD50,0xFD50,0xFD50,0xFD50,0xFD50,0xFD50,0xF550,0xF550,0xF551,0xF552,0xFD74,0xCBF1,0x9A6E,0x920D,0x9A2F,0xCB95,0xDC17,0xE458,0xDC38,0xDC38,0xDC37,0xE437,0xE437,0xE437,0xDC37,0xE457,0xE457,0xE436,0xE435,0xDC34,0xDC32,0xFD54,0xFD73,0xFD73,0xFD72,0xFD72,0xFD72,0xFD72,0xF571,0xF571,0xF571,0xF572,0xFD72,0xFD72,0xFD72,0xFD73,0xFD73,0xFD75,0xFD37,0xA1EF,0xA1D2,0xAA14,0xAA36,0xA278,0x8A5A,0x4118,0x291A,0x215C,0x199D,0x117D,0x099E,0x019E,0x019E,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019E,0x019E,0x019E,0x019D,0x019D,0x01BB,0x023A,0x23DC,0x5E7F,0x4EBD,0x2E77,0x1E94,0x1ED3,0x16D3,0x2735,0x2F37,0x46D8,0x667A,0x859A,0x5B13,0x7AF5,0x8275,0x8235,0x8215,0x71B4,0x6173,0x5973,0x5993,0x5173,0x5193,0x51B3,0x49B3,0x4972,0x4192,0x4172,0x4192,0x4172,0x3971,0x3971,0x3951,0x3971,0x3950,0x3950,0x3950,0x3950,0x3150,0x3151,0x3130,0x2930,0x2930,0x2930,0x2930,0x2950,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2130,0x1931,0x1932,0x1132,0x19B5,0x19D6,0x19D7,0x1995,0x1112,0x1911,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x1930,0x1931,0x1132,0x1112,0x21B5,0x21F7,0x21D6,0x1995,0x1132,0x1931,0x1931,0x1930,0x2130,0x2130,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x2110,0x2110,0x2131,0x1952,0x1953,0x1174,0x19B6,0x19F7,0x19F7,0x19D7,0x11B6,0x19D6,0x19F7,0x19F7,0x21F7,0x21D6,0x21B5,0x1953,0x1932,0x1931,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x212F,0x2130,0x212F,0x212F,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x2131,0x18F1,0x1112,0x1133,0x1153,0x19B6,0x21F7,0x21F7,0x19D6,0x1954,0x1112,0x1912,0x1911,0x1911,0x2110,0x2130,0x2110,0x2110,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1911,0x1111,0x1153,0x19B6,0x11B6,0x11D8,0x09D9,0x01D9,0x01B9,0x01B9,0x01B9,0x01B9,0x01D9,0x09F9,0x11F9,0x11D8,0x11D7,0x1195,0x1154,0x1132,0x1132,0x1132,0x1932,0x1112,0x1931,0x1932,0x1932,0x1931,0x1931,0x1911,0x1911,0x1931, + 0x2130,0x2130,0x2110,0x1911,0x1931,0x1911,0x1932,0x1133,0x1953,0x1994,0x21B6,0x21D6,0x21F6,0x21F6,0x21F6,0x29F6,0x29F6,0x29F6,0x29F6,0x29F6,0x21F6,0x2A16,0x21D6,0x21F6,0x29F6,0x21F6,0x21F6,0x21F6,0x21F6,0x21F6,0x2A17,0x2A17,0x21F6,0x2A17,0x3238,0x2A17,0x2A37,0x3257,0x2A16,0x29F6,0x21D5,0x1994,0x21B5,0x21B4,0x1994,0x1132,0x10F1,0x1911,0x1911,0x2131,0x2130,0x2130,0x2110,0x210F,0x210F,0x290F,0x292F,0x2930,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x2910,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210E,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2131,0x1931,0x1932,0x1932,0x1133,0x1994,0x21F6,0x21F7,0x21F7,0x19B5,0x1133,0x1112,0x1932,0x1952,0x1911,0x1910,0x2110,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x28CE,0x384C,0xAAB4,0xB252,0xB1F1,0xB1F1,0xB1D0,0xA9CD,0xFD35,0xFD73,0xFDB2,0xFD91,0xF530,0xFD4F,0xFD4F,0xFD4F,0xFD6F,0xFD8F,0xFD70,0xFD70,0xFD51,0xFD52,0xECF3,0xC3B0,0x920D,0x920E,0xB2F2,0xC395,0xD417,0xE478,0xE478,0xE457,0xDC57,0xE457,0xE457,0xE457,0xDC37,0xE437,0xE456,0xE456,0xE435,0xDC14,0xE473,0xFD34,0xFD73,0xFD71,0xF550,0xFD50,0xFD70,0xFD70,0xFD70,0xFD70,0xFD70,0xFD70,0xFD4F,0xFD4F,0xFD70,0xFD70,0xFD70,0xFD70,0xFD70,0xFD71,0xFD71,0xFD93,0xECF3,0xB32F,0x924D,0x9A6F,0xB333,0xCBB5,0xDC37,0xE478,0xE458,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE437,0xE436,0xE456,0xE435,0xE454,0xECD3,0xFD53,0xFD72,0xFD51,0xFD50,0xFD70,0xFD50,0xFD50,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD6F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD50,0xFD70,0xFD71,0xFD73,0xECD3,0xC370,0x9A4D,0x9A4F,0xBB13,0xCBB5,0xDC37,0xE458,0xE458,0xE457,0xE457,0xDC57,0xDC37,0xDC37,0xDC57,0xDC57,0xE457,0xE457,0xE477,0xE497,0xE478,0xA290,0x920F,0x920F,0xB2D2,0xDC17,0xE458,0xE478,0xE458,0xE457,0xDC37,0xDC37,0xDC37,0xDC37,0xE437,0xE457,0xE457,0xE457,0xE436,0xDC16,0xE415,0xE435,0xEC74,0xEC93,0xF4D3,0xF4F2,0xFD32,0xFD32,0xFD52,0xFD51,0xFD51,0xFD51,0xFD51,0xFD51,0xFD51,0xFD51,0xFD51,0xFD51,0xFD51,0xFD51,0xFD51,0xFD72,0xFD93,0xFDD7,0x89CB,0x920F,0x91EF,0xB2F3,0xE458,0xE458,0xE458,0xDC38,0xE438,0xE438,0xE437,0xE437,0xE457,0xE437,0xE437,0xE436,0xE436,0xE455,0xE454,0xF516,0xFD55,0xFD54,0xF553,0xFD53,0xFD54,0xFD54,0xFD55,0xD433,0x920D,0x920E,0x9A50,0xBB33,0xDC17,0xE457,0xE458,0xE457,0xE457,0xE437,0xE437,0xDC36,0xE436,0xE436,0xE436,0xE456,0xE435,0xE454,0xE493,0xFD34,0xFD73,0xF552,0xF551,0xFD51,0xFD70,0xFD50,0xFD50,0xFD50,0xFD50,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD6F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD4F,0xFD6F,0xFD70,0xFD70,0xFD71,0xFD72,0xF553,0xC38F,0x89CB,0x89EE,0xA2B1,0xC375,0xD3F7,0xE458,0xE478,0xDC37,0xDC57,0xDC37,0xE457,0xE457,0xDC37,0xDC36,0xE457,0xE457,0xE456,0xE435,0xE454,0xEC94,0xF534,0xF553,0xFD73,0xFD93,0xF573,0xF573,0xFD74,0xFD75,0xECF5,0xB310,0x9A4F,0xA250,0xB2F2,0xCB95,0xDC17,0xE458,0xE457,0xE437,0xE437,0xE437,0xE457,0xE457,0xE436,0xE436,0xE436,0xE436,0xE455,0xE454,0xF4F5,0xFD34,0xFD74,0xFD74,0xFD74,0xFD74,0xFD74,0xFD55,0xF4F5,0xAACF,0x920D,0x920F,0xA291,0xCBB6,0xDC58,0xE458,0xE458,0xE457,0xE437,0xE437,0xE457,0xE437,0xE457,0xE457,0xE456,0xE456,0xE455,0xE454,0xE473,0xF4F3,0xFD53,0xFD52,0xFD51,0xFD51,0xFD71,0xFD70,0xFD70,0xFD70,0xFD70,0xFD70,0xFD70,0xF570,0xFD71,0xFD71,0xFD72,0xFD94,0xD412,0xA28E,0x920D,0x9A4F,0xCB95,0xDC17,0xE458,0xDC38,0xDC37,0xE437,0xE437,0xE437,0xE437,0xE457,0xE457,0xE457,0xDC36,0xDC35,0xDC34,0xDC32,0xFD54,0xFD73,0xFD73,0xFD72,0xFD52,0xFD72,0xFD72,0xFD72,0xFD92,0xFD92,0xFD92,0xFD92,0xFD93,0xFD93,0xFD93,0xFD94,0xFD95,0xFD57,0xA1EF,0xA1F2,0xAA14,0xA216,0xA278,0x8A5A,0x4118,0x293A,0x217C,0x199D,0x119D,0x099E,0x099E,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x019F,0x019F,0x01BF,0x019E,0x019E,0x019D,0x01BD,0x01FC,0x025A,0x1BFC,0x569F,0x46DD,0x2696,0x16B3,0x1713,0x1713,0x2755,0x2EF6,0x46D8,0x6E9B,0x7D39,0x62D3,0x7AD5,0x8295,0x8255,0x79F5,0x71B4,0x6173,0x5973,0x5994,0x5173,0x5193,0x49B3,0x4972,0x4992,0x4192,0x4171,0x4192,0x4192,0x3971,0x3971,0x3951,0x3951,0x3150,0x3950,0x3150,0x3130,0x3130,0x3130,0x3150,0x3151,0x2930,0x2950,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x2151,0x1931,0x1932,0x1133,0x19B5,0x19D6,0x19D6,0x1995,0x1111,0x1911,0x2130,0x2110,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x1930,0x1931,0x1132,0x1132,0x21D6,0x21F7,0x19B6,0x1994,0x1132,0x1111,0x1930,0x2110,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x292F,0x292F,0x290F,0x2130,0x2130,0x1931,0x2194,0x19B5,0x1195,0x11D7,0x19F7,0x19F7,0x11B6,0x1196,0x11B6,0x11D6,0x19F7,0x19F7,0x19D6,0x1195,0x1133,0x1112,0x1111,0x1911,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2930,0x2110,0x2930,0x2930,0x2930,0x2130,0x2930,0x2930,0x2910,0x2110,0x2130,0x2131,0x2111,0x1911,0x1932,0x1133,0x1154,0x19B5,0x19F6,0x19D6,0x21F6,0x1974,0x1112,0x1111,0x1911,0x2131,0x2151,0x2130,0x2110,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1910,0x1911,0x1153,0x19B5,0x11B6,0x11B7,0x09D8,0x09D9,0x01B9,0x01B9,0x01D9,0x09D9,0x09D9,0x09D8,0x19F8,0x11D7,0x0934,0x0933,0x1152,0x1952,0x1931,0x1931,0x1951,0x1931,0x1951,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931, + 0x2130,0x2110,0x2110,0x2130,0x2130,0x1911,0x1931,0x1911,0x1932,0x1132,0x1133,0x1153,0x1133,0x1954,0x1954,0x1954,0x1974,0x1974,0x1974,0x1974,0x1974,0x1994,0x1974,0x1974,0x1974,0x1994,0x1974,0x1974,0x1174,0x1974,0x1174,0x1974,0x1974,0x1174,0x1975,0x1995,0x1974,0x1153,0x1153,0x1133,0x1132,0x1953,0x1132,0x1932,0x1931,0x1911,0x1910,0x1910,0x2130,0x2130,0x2110,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210E,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1932,0x1933,0x1974,0x21F6,0x21F7,0x21F7,0x1995,0x1153,0x1112,0x1911,0x1931,0x1931,0x1930,0x2110,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x2910,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x30CE,0x384C,0xA294,0xB252,0xB211,0xB1F1,0xB1D0,0xA1CC,0xFD35,0xFD93,0xFDB2,0xFD91,0xFD50,0xFD50,0xFD4F,0xFD4F,0xFD8F,0xFD8F,0xFD90,0xFD91,0xFD92,0xFD73,0xF513,0xCBD1,0x91EC,0x920E,0xAAD2,0xC374,0xD3F6,0xE458,0xE478,0xDC37,0xDC37,0xDC57,0xDC36,0xE457,0xDC36,0xDC36,0xDC36,0xE456,0xE435,0xE434,0xE473,0xFD34,0xFD73,0xFD91,0xFD70,0xFD70,0xFD70,0xFD4F,0xFD70,0xFD70,0xFD70,0xFD70,0xFD70,0xFD70,0xFD70,0xFD6F,0xFD70,0xFD70,0xFD70,0xFD91,0xFD92,0xFD93,0xECF3,0xBB4F,0x924D,0x9A6F,0xB313,0xC3B5,0xDC37,0xE458,0xE458,0xE437,0xE437,0xDC37,0xDC37,0xE437,0xE437,0xE437,0xE436,0xE456,0xE435,0xE454,0xECD3,0xFD53,0xFD72,0xFD71,0xFD71,0xFD70,0xFD70,0xFD70,0xFD6F,0xFD6F,0xFD4F,0xFD6F,0xFD6F,0xFD6F,0xFD4F,0xFD6F,0xFD6F,0xFD6F,0xFD70,0xFD70,0xFD91,0xFD93,0xECD3,0xC36F,0x9A4E,0x9A4F,0xBB33,0xCBB5,0xDC37,0xE458,0xE458,0xDC57,0xE457,0xDC57,0xDC37,0xDC36,0xDC36,0xDC56,0xDC56,0xDC56,0xE476,0xE497,0xECD8,0xBB32,0x920F,0x920F,0xA271,0xCBB6,0xE458,0xE458,0xE478,0xE457,0xDC37,0xDC57,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xE457,0xE457,0xE436,0xE436,0xE435,0xE455,0xEC95,0xF4D5,0xF4F4,0xFD13,0xFD33,0xFD53,0xFD52,0xFD52,0xFD52,0xFD51,0xFD51,0xFD51,0xFD51,0xFD71,0xFD72,0xFD72,0xFD72,0xFD72,0xFD73,0xFD94,0xFDB7,0x89EC,0x920E,0x91EF,0xB2F3,0xE479,0xE458,0xE458,0xDC38,0xE438,0xE438,0xE458,0xE437,0xE457,0xE437,0xE457,0xE436,0xE436,0xE435,0xE454,0xF516,0xFD55,0xFD54,0xFD54,0xFD54,0xFD54,0xFD75,0xFD76,0xDC53,0x920D,0x920F,0x9A50,0xBB33,0xD416,0xDC37,0xE457,0xE457,0xE457,0xE457,0xDC37,0xE437,0xDC36,0xDC36,0xE436,0xE456,0xE435,0xE454,0xE493,0xF534,0xFD73,0xF572,0xFD51,0xFD71,0xFD70,0xFD70,0xFD70,0xFD70,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD4F,0xFD6F,0xFD4F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD90,0xFD90,0xFD91,0xFD92,0xFD73,0xC3D0,0x81CB,0x89CD,0x9A70,0xBB34,0xD3F7,0xE458,0xE478,0xDC38,0xDC57,0xDC37,0xDC37,0xE457,0xE457,0xDC37,0xDC57,0xE456,0xDC36,0xDC35,0xE455,0xEC94,0xF514,0xFD54,0xFD74,0xFD73,0xFD73,0xFD73,0xFD74,0xFD76,0xF516,0xB310,0x9A4F,0x9A50,0xB2F2,0xCB95,0xDC37,0xE458,0xE457,0xE457,0xE457,0xE437,0xE457,0xE436,0xE457,0xE436,0xE436,0xE456,0xE456,0xE475,0xF4F5,0xFD35,0xFD74,0xFD74,0xFD94,0xFD94,0xFD95,0xFD75,0xF4F6,0xAAAE,0x920E,0x920F,0xA2B1,0xCBB6,0xDC37,0xE458,0xE457,0xDC37,0xE457,0xE437,0xE437,0xE457,0xE457,0xDC37,0xDC56,0xE456,0xE435,0xE454,0xE473,0xF514,0xFD73,0xFD72,0xFD71,0xFD71,0xFD71,0xFD70,0xFD70,0xFD50,0xFD50,0xFD70,0xFD70,0xFD90,0xFD91,0xFD91,0xFDB2,0xFDB4,0xD412,0xA28E,0x920D,0x9A4F,0xCB95,0xDC17,0xE458,0xDC38,0xDC37,0xDC37,0xE437,0xE457,0xE457,0xE457,0xE457,0xE456,0xDC36,0xDC35,0xE434,0xDC33,0xF534,0xFD53,0xF552,0xFD72,0xFD72,0xFD72,0xFD72,0xFD92,0xFD92,0xFD92,0xFD92,0xFD92,0xFD93,0xFDB3,0xFDB3,0xFDB4,0xFDB5,0xFD77,0xA210,0xA1D2,0xAA14,0xAA36,0xA278,0x8A5A,0x4138,0x291A,0x215C,0x197D,0x117D,0x099E,0x019E,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x019E,0x019E,0x019D,0x01BD,0x01FB,0x027A,0x1C3C,0x569F,0x46FD,0x1EB6,0x16F4,0x0F13,0x1733,0x1F55,0x2F17,0x46D8,0x76BB,0x74B8,0x62B3,0x7AB5,0x8275,0x8235,0x79F5,0x6994,0x6994,0x6194,0x59B4,0x5193,0x51B3,0x4993,0x4172,0x4172,0x4192,0x4192,0x4192,0x4192,0x4192,0x3951,0x3951,0x3130,0x3150,0x3151,0x3130,0x3130,0x3130,0x3150,0x3150,0x3150,0x2930,0x2930,0x2950,0x292F,0x2930,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x1931,0x1932,0x1132,0x19B5,0x19D6,0x19D6,0x1194,0x1111,0x1931,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1932,0x0912,0x19B5,0x2A17,0x21D6,0x1994,0x1132,0x1111,0x1930,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x292F,0x292F,0x292F,0x290F,0x2130,0x2130,0x1952,0x1173,0x1195,0x11B6,0x19F7,0x11D7,0x11B6,0x0976,0x0975,0x0975,0x0975,0x11B6,0x19F7,0x19F7,0x11B6,0x1195,0x1133,0x1112,0x1111,0x1911,0x1931,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x2130,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x18F1,0x10F1,0x1112,0x1133,0x1154,0x1195,0x21F6,0x2217,0x21F6,0x1174,0x1133,0x1111,0x1911,0x1931,0x2130,0x2130,0x210F,0x210F,0x2130,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1911,0x1132,0x1974,0x1995,0x19D7,0x11D7,0x09F8,0x09D8,0x09F9,0x09D9,0x09B8,0x11D8,0x11D7,0x1196,0x1154,0x1133,0x1152,0x1931,0x1931,0x1931,0x1910,0x1931,0x1930,0x1930,0x1930,0x1910,0x2130,0x1910,0x1910,0x2131,0x2131, + 0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2131,0x1931,0x1931,0x1911,0x1912,0x1912,0x1112,0x1112,0x1112,0x1112,0x1112,0x1932,0x1111,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1133,0x1133,0x1132,0x1132,0x1133,0x1153,0x1133,0x1132,0x1133,0x1132,0x1112,0x1111,0x1111,0x1111,0x1952,0x1931,0x1931,0x1911,0x1911,0x1930,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x28EF,0x28EF,0x290F,0x290F,0x210F,0x292F,0x292F,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x2930,0x290F,0x210F,0x290F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210E,0x210E,0x292F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x292F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2110,0x1911,0x1931,0x1952,0x1133,0x1154,0x21F6,0x2217,0x21F7,0x1995,0x1133,0x1112,0x1932,0x1931,0x1931,0x1930,0x2130,0x2130,0x2150,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x20EF,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x2910,0x2910,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x30CE,0x384C,0xA294,0xB252,0xB212,0xBA11,0xB1F0,0xA1CD,0xFD55,0xFDB4,0xFDD3,0xFDB1,0xFD70,0xFD70,0xFD6F,0xFD6F,0xFD8F,0xFDB0,0xFDB0,0xFDB1,0xFDB2,0xFDB4,0xFD54,0xD411,0x89EC,0x920E,0xAAB1,0xBB54,0xCBF6,0xDC58,0xE478,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC36,0xDC36,0xE456,0xE436,0xE435,0xE434,0xE473,0xFD54,0xFD93,0xFD91,0xFD71,0xFD70,0xFD70,0xFD6F,0xFD6F,0xFD70,0xFD6F,0xFD70,0xFD70,0xFD70,0xFD70,0xFD6F,0xFD70,0xFD70,0xFD90,0xFD91,0xFD91,0xFD93,0xECF3,0xB34E,0x924D,0x9A4F,0xAAF2,0xC395,0xD437,0xE458,0xE458,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xE437,0xE436,0xE436,0xE436,0xE435,0xE453,0xF4F3,0xFD73,0xFD72,0xFD71,0xFD71,0xFD70,0xFD70,0xFD70,0xFD70,0xFD6F,0xFD6F,0xFD8F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD8F,0xFD70,0xFD90,0xFD91,0xFD93,0xECD3,0xBB70,0x9A4D,0x9A4F,0xBB33,0xCBB5,0xDC37,0xE478,0xE458,0xE457,0xE457,0xDC37,0xDC36,0xDC36,0xDC56,0xDC56,0xDC56,0xDC56,0xE476,0xECB7,0xF539,0xE497,0x924F,0x922F,0x9A2F,0xBB33,0xDC17,0xE458,0xE458,0xE457,0xE457,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC36,0xDC36,0xE435,0xE435,0xE454,0xEC94,0xFD15,0xFD14,0xFD33,0xFD33,0xFD53,0xFD52,0xFD52,0xFD52,0xFD52,0xFD72,0xFD72,0xFD72,0xFD72,0xFD72,0xFD73,0xFD94,0xFD94,0xFDB7,0x89EC,0x91EF,0x91EF,0xB313,0xE479,0xE478,0xE458,0xDC37,0xDC57,0xDC37,0xDC37,0xE457,0xE457,0xE437,0xE437,0xE436,0xDC36,0xDC35,0xE454,0xFD16,0xFD55,0xFD75,0xFD74,0xFD74,0xFD74,0xFD75,0xFD76,0xDC54,0x920D,0x9A2F,0xA250,0xC354,0xDC17,0xDC37,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC36,0xDC36,0xDC36,0xE436,0xE456,0xE435,0xE434,0xE493,0xFD34,0xFD73,0xFD72,0xFD71,0xFD71,0xFD90,0xFD70,0xFD90,0xFD90,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD8F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD6F,0xFD8F,0xFD8F,0xFD90,0xFDB0,0xFD91,0xFD92,0xFD73,0xCC10,0x81AB,0x89CD,0x9A30,0xB313,0xD3F7,0xE478,0xE479,0xE458,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC37,0xDC36,0xDC36,0xE436,0xE455,0xEC75,0xF4D4,0xF514,0xFD54,0xFD74,0xFD74,0xFD94,0xFD75,0xFD76,0xECF6,0xB310,0x9A4F,0x9A30,0xB2D2,0xCBB5,0xDC37,0xE458,0xE457,0xE457,0xE457,0xDC37,0xDC37,0xDC36,0xDC36,0xE436,0xE436,0xE456,0xE456,0xE475,0xF4F5,0xFD35,0xFD75,0xFD74,0xFD74,0xFD74,0xFD75,0xFD76,0xF4F6,0xAAAF,0x920E,0x920F,0xAAB1,0xD3F6,0xDC37,0xE457,0xE457,0xE457,0xE437,0xE437,0xE437,0xE457,0xDC37,0xDC57,0xE456,0xE456,0xE435,0xE454,0xE473,0xF533,0xFD73,0xFD72,0xFD71,0xFD71,0xFD71,0xFD70,0xFD70,0xFD70,0xFD70,0xFD90,0xFD90,0xFD91,0xFD91,0xFD91,0xFDB2,0xFDB5,0xD431,0x9A6D,0x920D,0x9A2F,0xC395,0xDC17,0xE458,0xDC38,0xDC37,0xDC57,0xDC37,0xE457,0xE457,0xDC36,0xE457,0xE436,0xDC35,0xDC35,0xDC34,0xDC32,0xFD54,0xFD93,0xFD93,0xFD92,0xFD92,0xFD92,0xFD92,0xFD92,0xFD92,0xFD92,0xFD92,0xFD92,0xFDB3,0xFDB3,0xFDB3,0xFDB4,0xFDB5,0xFD78,0xA210,0xA1F2,0xA1F4,0xA216,0xA258,0x8A5A,0x4118,0x291A,0x215C,0x197D,0x117D,0x099E,0x019E,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BE,0x019E,0x019E,0x019D,0x01BC,0x021B,0x029A,0x1C7D,0x4E9F,0x3F1D,0x1EF7,0x1714,0x0F13,0x0F13,0x1F55,0x2F17,0x4EF9,0x7EDC,0x7477,0x6AB4,0x82B5,0x8255,0x79F5,0x79D5,0x6973,0x6173,0x5973,0x5993,0x51B4,0x5193,0x4993,0x4993,0x4992,0x4992,0x3971,0x3971,0x3972,0x4192,0x3951,0x3951,0x3951,0x3971,0x3151,0x3151,0x3150,0x3130,0x3150,0x3150,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x292F,0x292F,0x2950,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x212F,0x210F,0x292F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x2130,0x2110,0x1911,0x1931,0x1132,0x19B5,0x19D6,0x19F7,0x1194,0x1111,0x1910,0x1910,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x1931,0x1932,0x1112,0x19B5,0x2A17,0x21D6,0x1995,0x1132,0x1111,0x1910,0x1910,0x2110,0x210F,0x212F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x292F,0x292F,0x290F,0x292F,0x210F,0x210F,0x1910,0x1931,0x1173,0x1195,0x11D6,0x11D7,0x11B7,0x0976,0x0975,0x0955,0x0134,0x0954,0x0975,0x11B6,0x11F7,0x11D7,0x11D7,0x1195,0x1154,0x0912,0x08F1,0x1111,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x18F1,0x1911,0x1911,0x10F1,0x1912,0x10F2,0x08F2,0x0933,0x1195,0x2217,0x2237,0x19D6,0x1974,0x1132,0x1932,0x1931,0x1931,0x2130,0x2110,0x2110,0x2930,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2150,0x2130,0x2110,0x1910,0x1910,0x1112,0x1153,0x1995,0x19D6,0x1217,0x1A39,0x1A19,0x1A18,0x1A18,0x19B7,0x1175,0x1133,0x1133,0x1932,0x1931,0x1910,0x1930,0x2130,0x1910,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110, + 0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1912,0x1912,0x1912,0x1932,0x1132,0x1132,0x1132,0x1932,0x1932,0x1932,0x1911,0x1931,0x1931,0x1931,0x1951,0x1931,0x1931,0x2151,0x1910,0x1930,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210E,0x210F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2930,0x2130,0x2130,0x2130,0x2110,0x2131,0x1911,0x1931,0x1952,0x1952,0x1974,0x21D6,0x2A17,0x21F7,0x1995,0x1954,0x1132,0x1912,0x1911,0x1910,0x1930,0x2130,0x2130,0x2130,0x212F,0x212F,0x210E,0x210E,0x212F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210E,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2930,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x28EE,0x30CE,0x384C,0xA294,0xB252,0xB211,0xB1F1,0xB1D0,0xA1CD,0xFD56,0xFDD4,0xFDD3,0xFDB1,0xFD90,0xFD6F,0xFD6F,0xFD8F,0xFDAF,0xFDAF,0xFDB0,0xFDB0,0xFDD2,0xFDD4,0xFD95,0xD412,0x89EC,0x91EE,0xA2B1,0xBB53,0xCBF6,0xDC57,0xE478,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xDC36,0xDC36,0xDC36,0xE456,0xE435,0xDC34,0xE473,0xFD74,0xFD93,0xFD91,0xFD70,0xFD70,0xFD90,0xFD90,0xFD90,0xFD90,0xFD90,0xFD70,0xFD70,0xFD90,0xFD70,0xFD90,0xFD70,0xFD70,0xFD70,0xFD90,0xFD91,0xFD93,0xECF3,0xBB4F,0x924D,0x924F,0xB312,0xC395,0xD437,0xE478,0xE458,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xE457,0xE436,0xE436,0xE455,0xE453,0xECD3,0xFD73,0xFD72,0xFD71,0xFD70,0xFD70,0xFD70,0xFD6F,0xFD70,0xFD6F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD90,0xFD90,0xFD91,0xFDB1,0xFD93,0xECD3,0xC390,0x9A4E,0x9A4F,0xBB13,0xCBB5,0xDC37,0xE458,0xE458,0xE457,0xE457,0xDC37,0xDC37,0xDC36,0xDC56,0xDC56,0xDC56,0xDC56,0xDC76,0xE4B7,0xF558,0xFD79,0xBB72,0x924F,0x922F,0xA2B1,0xCBD6,0xDC37,0xDC57,0xE457,0xE457,0xDC37,0xDC57,0xE457,0xDC37,0xE457,0xE457,0xE457,0xE457,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC35,0xE454,0xE494,0xF4D4,0xFD35,0xFD34,0xFD54,0xFD54,0xFD53,0xFD53,0xFD53,0xFD53,0xFD53,0xFD73,0xFD73,0xFD73,0xFD73,0xFD74,0xFD95,0xFDB8,0x89EC,0x91EF,0x91EF,0xB313,0xE478,0xE458,0xE458,0xE457,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xE437,0xE437,0xE457,0xDC36,0xDC35,0xDC55,0xF516,0xFD56,0xFD75,0xFD75,0xFD75,0xFD75,0xFD55,0xFD56,0xDC54,0x9A0D,0x9A4F,0xA270,0xC374,0xDC37,0xE457,0xDC37,0xE457,0xE457,0xE457,0xDC36,0xDC36,0xDC36,0xE436,0xE436,0xE456,0xE435,0xE433,0xE472,0xFD54,0xFD93,0xFD92,0xFD91,0xFD70,0xFD70,0xFD6F,0xFD90,0xFD8F,0xFD8F,0xFD6F,0xFD6F,0xFD8F,0xFD8F,0xFD8F,0xFD6F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD6F,0xFD8F,0xFD8F,0xFD90,0xFD90,0xFD90,0xFD91,0xFD73,0xE492,0x89CB,0x89EE,0x9A50,0xB2F3,0xD3F7,0xE478,0xE478,0xE458,0xE458,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC37,0xDC36,0xDC36,0xE436,0xE435,0xE455,0xF4D5,0xF4F5,0xFD35,0xFD75,0xFD74,0xFD95,0xFD95,0xFD96,0xF4F6,0xB310,0x9A4F,0x9A30,0xB2D2,0xCB95,0xDC37,0xE478,0xE457,0xE457,0xE457,0xE457,0xDC37,0xDC36,0xDC36,0xE457,0xE436,0xE436,0xE456,0xE435,0xF4D5,0xFD36,0xFD55,0xFD55,0xFD75,0xFD75,0xFD75,0xFD76,0xF4F6,0xA28E,0x920E,0x920F,0xAAB1,0xD416,0xDC37,0xDC57,0xDC37,0xE457,0xE457,0xE457,0xE457,0xDC37,0xDC37,0xDC56,0xDC56,0xE456,0xDC55,0xE454,0xE493,0xFD33,0xFD93,0xFD92,0xFD91,0xFD91,0xFD71,0xFD70,0xFD70,0xFD90,0xFD90,0xFD90,0xFD90,0xFD90,0xFD91,0xFD91,0xFDB2,0xFDD5,0xCC11,0x9A6D,0x920D,0x9A2F,0xC394,0xD417,0xDC38,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC37,0xE437,0xE457,0xE436,0xDC35,0xDC35,0xDC34,0xDC33,0xF554,0xFDB3,0xFDB3,0xFDB3,0xFDB3,0xFD92,0xFDB2,0xFDB2,0xFDB2,0xFD92,0xFDB2,0xFDB2,0xFDB3,0xFDB3,0xFDB3,0xFDB4,0xFDB5,0xFD78,0xA210,0xA1F2,0xA1F4,0xA216,0xA278,0x8A5A,0x4138,0x291A,0x215C,0x197D,0x119E,0x099E,0x099E,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01BE,0x019E,0x019E,0x019D,0x01BC,0x023B,0x02BA,0x1C9D,0x46BF,0x371D,0x16F6,0x0F34,0x0F33,0x0F33,0x2776,0x2F17,0x4ED9,0x7EBC,0x6BF5,0x7294,0x8275,0x8A55,0x8215,0x79D4,0x6173,0x6194,0x5973,0x5993,0x51B3,0x5193,0x49B3,0x4993,0x4993,0x4192,0x3951,0x3971,0x3971,0x4172,0x3951,0x3971,0x3951,0x3951,0x3971,0x3150,0x3130,0x3130,0x3150,0x3150,0x2930,0x2930,0x2930,0x2930,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x2110,0x2131,0x1931,0x1132,0x1995,0x19B6,0x19D6,0x1995,0x1111,0x1911,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1932,0x1112,0x19B5,0x21F6,0x21D6,0x19B5,0x1132,0x1111,0x1931,0x1910,0x2130,0x212F,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x290F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x2110,0x1931,0x1932,0x1153,0x1195,0x11D7,0x11D7,0x0976,0x0975,0x0955,0x0134,0x0934,0x0134,0x0955,0x0155,0x0996,0x11D7,0x11D7,0x19F7,0x19B6,0x1154,0x0913,0x1133,0x1133,0x1132,0x1133,0x1112,0x1132,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x10F1,0x1112,0x1112,0x1112,0x1132,0x1112,0x0912,0x0913,0x0933,0x1195,0x2217,0x2217,0x21F6,0x1994,0x1153,0x1132,0x1931,0x1931,0x2130,0x2130,0x2930,0x210F,0x290F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1910,0x1931,0x1932,0x1953,0x1194,0x11B5,0x19D6,0x11B5,0x19B5,0x1175,0x1154,0x1133,0x1132,0x1931,0x1931,0x1910,0x1910,0x2110,0x2130,0x212F,0x210F,0x212F,0x212F,0x210F,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130, + 0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2130,0x1910,0x2131,0x2131,0x1931,0x2131,0x2131,0x2131,0x2131,0x2131,0x1910,0x1931,0x1931,0x2131,0x1911,0x1931,0x2131,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x2131,0x2131,0x1930,0x1930,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x292F,0x292F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x2930,0x210F,0x290F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x210F,0x292F,0x2930,0x210F,0x2110,0x2130,0x2110,0x2110,0x1911,0x1932,0x1932,0x1132,0x1974,0x21F6,0x2A17,0x21D6,0x1995,0x1953,0x1932,0x1911,0x1911,0x1931,0x2131,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x290F,0x292F,0x210F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x28EF,0x30CE,0x384C,0xA273,0xB252,0xB211,0xB211,0xB1F0,0xAA0D,0xFD76,0xFDD4,0xFDF3,0xFDD1,0xFD90,0xFD90,0xFD8F,0xFDAF,0xFDB0,0xFDAF,0xFDB0,0xFDB0,0xFDD2,0xFDD4,0xFDB5,0xD431,0x89EC,0x920E,0xA291,0xBB33,0xCBF6,0xDC57,0xE478,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC36,0xE436,0xDC36,0xE456,0xE435,0xDC54,0xE472,0xFD74,0xFDD3,0xFDB2,0xFD91,0xFD90,0xFDB0,0xFDB0,0xFDB0,0xFDB0,0xFD90,0xFD90,0xFDB0,0xFD90,0xFD90,0xFD90,0xFD90,0xFD90,0xFDB0,0xFDB1,0xFD91,0xFDB3,0xECF3,0xB34E,0x924D,0x924F,0xB312,0xC3B5,0xDC37,0xE478,0xE478,0xDC37,0xDC37,0xDC37,0xE437,0xE437,0xE457,0xE457,0xE456,0xE456,0xE455,0xE474,0xECF3,0xFD93,0xFD92,0xFD91,0xFD91,0xFD90,0xFD90,0xFD90,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDB0,0xFDB0,0xFDB1,0xFDB1,0xFDB3,0xECF3,0xBB70,0x9A4E,0x9A4F,0xB313,0xCBB5,0xDC37,0xE458,0xE458,0xE457,0xE457,0xDC57,0xDC37,0xDC36,0xDC57,0xDC56,0xDC56,0xDC56,0xDC76,0xE4B6,0xFD78,0xFDB9,0xDCB6,0xA2AF,0x922E,0x9A4F,0xBB74,0xD417,0xDC57,0xE478,0xE478,0xE457,0xE457,0xE457,0xE457,0xDC37,0xDC37,0xDC36,0xDC57,0xDC57,0xDC36,0xDC56,0xDC56,0xDC36,0xDC36,0xDC35,0xE455,0xDC34,0xE454,0xEC94,0xF4D5,0xF4D4,0xFCF4,0xFCF4,0xFD14,0xFD13,0xF513,0xF513,0xF533,0xF533,0xF553,0xFD74,0xFD75,0xFDB8,0x89CD,0x91EF,0x91EF,0xB313,0xE479,0xE458,0xE458,0xE457,0xDC37,0xE457,0xDC57,0xDC57,0xE457,0xDC37,0xE437,0xE436,0xE456,0xE456,0xE455,0xF4F7,0xFD57,0xFD76,0xFD75,0xFD75,0xFD75,0xFD55,0xFD36,0xE454,0x9A0D,0x9A4F,0xA270,0xCB95,0xDC57,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC36,0xDC36,0xE456,0xE456,0xE456,0xE456,0xE435,0xDC33,0xE492,0xFD54,0xFDB3,0xFDB2,0xFD91,0xFD90,0xFD90,0xFD90,0xFD90,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFDAF,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFDAF,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFD8F,0xFDAF,0xFDAF,0xFDB0,0xFDD1,0xFDB1,0xFDB3,0xFD74,0x922B,0x8A0D,0x9A4F,0xAAD2,0xD3D6,0xDC38,0xE458,0xDC57,0xE458,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC36,0xDC56,0xDC36,0xE436,0xE435,0xE475,0xEC95,0xF4D5,0xFD35,0xFD75,0xFD95,0xFD96,0xFD97,0xF517,0xB311,0x9A4F,0x9A30,0xB2D2,0xCBB5,0xDC37,0xE478,0xE457,0xDC37,0xDC37,0xE457,0xDC37,0xDC36,0xDC36,0xE456,0xDC36,0xDC36,0xE436,0xE435,0xF4B6,0xF4F6,0xF4F5,0xF4F5,0xF515,0xF515,0xFD35,0xFD37,0xECB6,0xA24E,0x920E,0x920F,0xAAB1,0xDC16,0xDC37,0xDC37,0xDC37,0xE437,0xE457,0xE457,0xDC57,0xDC37,0xDC57,0xDC56,0xDC56,0xE456,0xDC55,0xDC54,0xE493,0xFD54,0xFDB3,0xFDB2,0xFD91,0xFD91,0xFD91,0xFD90,0xFD90,0xFD90,0xFDB0,0xFDB0,0xFDB0,0xFDB0,0xFD90,0xFDB1,0xFDD2,0xFDD5,0xD431,0x9A6D,0x920D,0x9A2F,0xC374,0xD416,0xDC58,0xE458,0xDC57,0xDC37,0xDC37,0xE457,0xDC37,0xE457,0xE436,0xE456,0xE436,0xE435,0xDC34,0xDC53,0xF574,0xFDD4,0xFDD3,0xFDB3,0xFDB3,0xFDB3,0xFDB2,0xFDB2,0xFDB2,0xFDB2,0xFDD3,0xFDD3,0xFDD3,0xFDD3,0xFDB3,0xFDD4,0xFDD5,0xFD98,0x9A10,0xA1F2,0xA1F4,0xA236,0xA278,0x8A5A,0x4118,0x291A,0x215C,0x197D,0x119E,0x099E,0x099E,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x019E,0x01BE,0x01BE,0x019E,0x01BD,0x01DC,0x023B,0x029A,0x1C7D,0x46DF,0x371D,0x16F6,0x0F13,0x0F33,0x0F53,0x1F76,0x3758,0x56FA,0x7E9C,0x6374,0x7274,0x8255,0x81F4,0x8215,0x71B4,0x6994,0x6193,0x5973,0x5193,0x51B3,0x4993,0x4993,0x4993,0x4992,0x4993,0x4192,0x3972,0x3951,0x3972,0x3971,0x3971,0x3150,0x3151,0x3150,0x3150,0x3150,0x3130,0x2930,0x3150,0x2930,0x2930,0x290F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x212F,0x292F,0x290F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x2930,0x212F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2130,0x1911,0x1112,0x19B5,0x19D6,0x19D6,0x1975,0x1111,0x1911,0x2131,0x2130,0x210F,0x2130,0x212F,0x210F,0x212F,0x2130,0x1910,0x1931,0x1932,0x1112,0x19B5,0x2217,0x21D6,0x1974,0x1132,0x1112,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x210F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290E,0x290F,0x290F,0x210F,0x2130,0x1931,0x1952,0x1174,0x11B6,0x19F7,0x11B7,0x0155,0x0955,0x0955,0x0955,0x0954,0x0954,0x0955,0x0975,0x0996,0x09B7,0x09D7,0x11D8,0x11F7,0x11D7,0x11B6,0x1196,0x11B6,0x1196,0x1195,0x1175,0x1175,0x1175,0x1175,0x1155,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1155,0x1175,0x1155,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1175,0x1195,0x1195,0x1174,0x1195,0x1195,0x19D6,0x19F6,0x2217,0x2237,0x2238,0x2217,0x19D6,0x1174,0x1953,0x1132,0x1931,0x1911,0x2130,0x2130,0x2130,0x2930,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2131,0x1931,0x1931,0x1131,0x1111,0x1132,0x1112,0x1112,0x1932,0x1931,0x1931,0x1910,0x1930,0x2130,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2130, + 0x2150,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2130,0x2131,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2131,0x2131,0x2130,0x1910,0x2131,0x1910,0x2110,0x2130,0x2130,0x2130,0x2130,0x1930,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x20EF,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2110,0x2110,0x2110,0x2131,0x1932,0x1932,0x1133,0x1174,0x21F6,0x21F6,0x21F6,0x2195,0x1953,0x1912,0x1911,0x1911,0x1910,0x2110,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x290F,0x292F,0x290F,0x292F,0x210F,0x290F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x290F,0x290F,0x28EF,0x30CE,0x386C,0xA294,0xB252,0xB232,0xB211,0xB1F0,0xA9ED,0xFD76,0xFDD4,0xFDF3,0xFDD1,0xFDD1,0xFDB0,0xFDB0,0xFDCF,0xFDCF,0xFDAF,0xFDD0,0xFDD0,0xFDF2,0xFDF4,0xFDB5,0xCC11,0x89EC,0x920E,0xA290,0xBB33,0xD3F6,0xDC57,0xE478,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xE456,0xE456,0xE436,0xE435,0xE454,0xE492,0xFD94,0xFDD3,0xFDD2,0xFDB1,0xFDB0,0xFDB0,0xFDD0,0xFDD0,0xFDB0,0xFDB0,0xFDB0,0xFDB0,0xFDB0,0xFDB0,0xFDB0,0xFDB0,0xFDD0,0xFDD0,0xFDD1,0xFDD1,0xFDD3,0xED13,0xB34E,0x924D,0x9A4F,0xB312,0xC3B5,0xDC37,0xE458,0xE458,0xE457,0xE437,0xE437,0xDC37,0xE437,0xE437,0xE457,0xE456,0xE456,0xE455,0xE474,0xED13,0xFDB3,0xFDB2,0xFDB1,0xFDB1,0xFDB0,0xFDB0,0xFDB0,0xFDB0,0xFDAF,0xFDAF,0xFDAF,0xFDCF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDD0,0xFDD0,0xFDD1,0xFDD1,0xFDD3,0xED13,0xC390,0x9A4D,0x9A4F,0xB312,0xCBB5,0xDC37,0xE458,0xDC57,0xE457,0xE457,0xE457,0xDC57,0xE457,0xDC57,0xDC56,0xDC56,0xDC56,0xDC76,0xE496,0xF578,0xFDB8,0xF578,0xB371,0x924E,0x924F,0xAAD1,0xCBB5,0xDC57,0xE478,0xE457,0xE477,0xE477,0xE457,0xE457,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC56,0xDC56,0xDC36,0xE456,0xDC35,0xDC55,0xE455,0xE454,0xE474,0xEC74,0xEC94,0xEC94,0xECB3,0xECB3,0xECB3,0xECD3,0xECF3,0xED14,0xED14,0xF576,0xFDB9,0x89CD,0x91EF,0x91EF,0xB313,0xE478,0xE458,0xE457,0xE457,0xDC37,0xE457,0xDC57,0xE457,0xE457,0xE437,0xE457,0xE457,0xE456,0xE456,0xE456,0xE475,0xE495,0xECD5,0xFD57,0xFD76,0xFD56,0xFD56,0xFD36,0xE454,0xC373,0xC373,0xC394,0xD3F6,0xE457,0xE457,0xDC57,0xDC37,0xE457,0xE437,0xDC36,0xDC56,0xDC56,0xE456,0xE456,0xE456,0xDC35,0xDC33,0xE492,0xFD74,0xFDB3,0xFDD2,0xFDB1,0xFDB1,0xFDB0,0xFDB0,0xFDB0,0xFD8F,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDCF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDAF,0xFDD0,0xFDD0,0xFDD1,0xFDD2,0xFDD4,0xB34F,0x8A0C,0x922E,0xA291,0xCB95,0xDC37,0xE458,0xDC57,0xE457,0xDC57,0xDC57,0xDC37,0xDC57,0xE457,0xE457,0xE457,0xDC57,0xDC56,0xDC36,0xDC35,0xE435,0xE455,0xE474,0xE494,0xF515,0xFD56,0xFD97,0xFD98,0xF518,0xB311,0x9A50,0x9A30,0xB2D3,0xCBB6,0xDC37,0xE478,0xE457,0xDC57,0xDC37,0xDC57,0xDC37,0xDC36,0xE436,0xE456,0xDC36,0xDC36,0xDC36,0xE435,0xE475,0xE455,0xE454,0xE454,0xE474,0xE474,0xE474,0xECB5,0xC372,0x91ED,0x89CD,0x89CE,0xAAB1,0xDC36,0xDC37,0xDC57,0xDC37,0xE457,0xDC37,0xDC37,0xDC57,0xDC57,0xDC56,0xE457,0xE456,0xE456,0xDC55,0xDC54,0xE4B3,0xFD54,0xFDB3,0xFDB2,0xFDB1,0xFDB1,0xFDB1,0xFDB1,0xFDB0,0xFDB0,0xFDB0,0xFDD0,0xFDD0,0xFDD1,0xFDD1,0xFDD1,0xFDD2,0xFDF5,0xD452,0x9A6D,0x920D,0x922E,0xC374,0xD416,0xDC37,0xDC57,0xE457,0xDC57,0xDC37,0xDC57,0xDC37,0xE436,0xE457,0xE456,0xE436,0xE435,0xDC34,0xDC53,0xF574,0xFDD4,0xFDD3,0xFDD3,0xFDB3,0xFDB3,0xFDD3,0xFDD2,0xFDD2,0xFDD2,0xFDD2,0xFDD3,0xFDF3,0xFDF4,0xFDF4,0xFDD4,0xFDF6,0xFDB8,0x9A10,0xA1F2,0xA214,0xA236,0xA278,0x825A,0x4118,0x291A,0x195C,0x197D,0x117E,0x099E,0x019E,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BE,0x01BE,0x019E,0x01BD,0x01DC,0x023B,0x02BA,0x1C9D,0x46DF,0x373D,0x16F6,0x0F54,0x0F53,0x0F53,0x1F56,0x3737,0x56FA,0x7E5C,0x5B13,0x7254,0x8214,0x8215,0x81F5,0x71B4,0x6193,0x6193,0x5993,0x59B3,0x5193,0x4992,0x4992,0x4993,0x4192,0x4172,0x4172,0x4172,0x3972,0x3951,0x3971,0x3951,0x3151,0x3971,0x3150,0x3150,0x3150,0x3130,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x290F,0x292F,0x210F,0x290F,0x212F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x1911,0x1112,0x19B5,0x19D6,0x19D6,0x1975,0x1111,0x1931,0x2131,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2110,0x2130,0x1911,0x1932,0x1132,0x21D5,0x2216,0x21D6,0x1995,0x1133,0x1112,0x2131,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x290E,0x290E,0x290F,0x292F,0x210F,0x2130,0x1931,0x1952,0x1174,0x19D6,0x1A18,0x11B7,0x0975,0x0955,0x0934,0x0934,0x0934,0x0954,0x0955,0x0975,0x0976,0x09B7,0x09B7,0x09D7,0x11D7,0x11F8,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x1A18,0x2218,0x1A18,0x2238,0x2218,0x2218,0x2218,0x2238,0x2218,0x2218,0x2238,0x2238,0x2218,0x2218,0x2239,0x2239,0x2238,0x2239,0x2238,0x2238,0x2239,0x2259,0x2238,0x2259,0x2259,0x2279,0x2258,0x2259,0x2258,0x2258,0x2258,0x2A59,0x2258,0x2258,0x2237,0x21F7,0x19B5,0x1974,0x1953,0x1132,0x1911,0x1931,0x1910,0x2110,0x2130,0x210F,0x210F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x212F,0x292F,0x210F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x210F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x1910,0x1910,0x1910,0x2130,0x1930,0x1930,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x292F,0x212F,0x212F,0x210F,0x212F,0x212F, + 0x1930,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x210F,0x2130,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x292F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x212F,0x292F,0x212F,0x292F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x292F,0x212F,0x292F,0x212F,0x210F,0x210F,0x2130,0x2130,0x2131,0x2131,0x1911,0x1932,0x1133,0x1974,0x21D6,0x21F6,0x21F6,0x1995,0x1953,0x1912,0x1911,0x1911,0x1911,0x1910,0x2110,0x2130,0x2130,0x212F,0x212F,0x210F,0x212F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x290F,0x292F,0x210F,0x292F,0x210F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x28EF,0x30CE,0x384C,0xA2B4,0xB252,0xB232,0xB231,0xB1F0,0xA1CD,0xFD96,0xFDF4,0xFE13,0xFDF1,0xFDF1,0xFDF0,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDF0,0xFDF1,0xFDF2,0xFDF4,0xFDD5,0xCC11,0x89EC,0x920E,0xA290,0xB312,0xD3F6,0xDC57,0xE478,0xDC57,0xDC57,0xDC57,0xE457,0xDC36,0xDC56,0xE456,0xE436,0xE436,0xE435,0xDC54,0xE492,0xFD94,0xFDF3,0xFDF2,0xFDD1,0xFDD0,0xFDD0,0xFDD0,0xFDF0,0xFDD0,0xFDD0,0xFDCF,0xFDCF,0xFDD0,0xFDD0,0xFDD0,0xFDF0,0xFDD0,0xFDF0,0xFDF1,0xFDF1,0xFDF3,0xED33,0xBB6F,0x926D,0x9A6F,0xB312,0xC395,0xDC37,0xE478,0xE458,0xE457,0xE437,0xE437,0xE437,0xE457,0xE457,0xE457,0xE436,0xE455,0xE455,0xE473,0xF513,0xFDB3,0xFDD2,0xFDD1,0xFDD1,0xFDD0,0xFDD0,0xFDD0,0xFDD0,0xFDCF,0xFDD0,0xFDD0,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDF0,0xFDF0,0xFE11,0xFDF1,0xFDF1,0xFDD3,0xED13,0xBB8F,0x9A4D,0x9A2E,0xB2F2,0xCBB5,0xDC37,0xE478,0xE457,0xDC37,0xDC57,0xDC57,0xE457,0xE457,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xE495,0xFD97,0xFDD7,0xFDF8,0xE515,0x926D,0x922E,0x924F,0xB312,0xD416,0xDC57,0xE478,0xE478,0xE477,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xE456,0xE455,0xE455,0xE455,0xE454,0xE474,0xE474,0xE474,0xDC74,0xE494,0xE494,0xE4B4,0xECD4,0xF536,0xFD99,0x91ED,0x91EF,0x91EF,0xB313,0xE478,0xE458,0xE458,0xE457,0xE457,0xDC57,0xE457,0xE457,0xE437,0xE437,0xE457,0xE457,0xE456,0xE456,0xE456,0xDC56,0xDC55,0xDC55,0xDC34,0xD414,0xD413,0xDC34,0xE455,0xE455,0xE477,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC37,0xE457,0xE457,0xDC56,0xE456,0xE456,0xE456,0xE456,0xE456,0xDC35,0xDC53,0xE492,0xFD94,0xFDD3,0xFDD2,0xFDD1,0xFDD1,0xFDD0,0xFDD0,0xFDD0,0xFDD0,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDCF,0xFDF0,0xFDF0,0xFDF1,0xFDF2,0xFDF4,0xDCB2,0x924C,0x922E,0x9A4F,0xBB53,0xDC17,0xE478,0xE478,0xE478,0xE457,0xDC37,0xDC37,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC36,0xDC36,0xE456,0xDC35,0xE455,0xE455,0xE455,0xE474,0xE495,0xECB6,0xECB7,0xB312,0x9A50,0x9A30,0xB2D3,0xCBD6,0xDC37,0xE478,0xE457,0xDC57,0xDC37,0xDC37,0xE457,0xE436,0xE436,0xE436,0xDC36,0xDC36,0xE456,0xDC36,0xDC55,0xDC55,0xDC55,0xDC55,0xDC55,0xDC55,0xE455,0xE475,0xECB7,0xECB8,0xECB8,0xEC98,0xE477,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xDC57,0xDC57,0xDC37,0xE457,0xDC57,0xE457,0xE456,0xE456,0xE455,0xE474,0xE4B3,0xFD74,0xFDB3,0xFDD2,0xFDD1,0xFDD1,0xFDD1,0xFDD1,0xFDD0,0xFDD0,0xFDD0,0xFDD0,0xFDD0,0xFDF1,0xFDF1,0xFDF1,0xFDF2,0xFDF5,0xD472,0x9A6D,0x920D,0x9A2F,0xC374,0xDC17,0xDC37,0xDC57,0xE458,0xDC57,0xDC37,0xDC37,0xDC37,0xE457,0xE456,0xDC36,0xDC35,0xE455,0xDC34,0xDC73,0xED33,0xFDF4,0xFDD3,0xFDD3,0xFDD3,0xFDD3,0xFDF3,0xFDF3,0xFDD2,0xFDF3,0xFDF3,0xFDF3,0xFE13,0xFE13,0xFE14,0xFDF5,0xFDF6,0xFD98,0x9A10,0xA1F3,0xA1F4,0xA236,0x9A58,0x825A,0x4118,0x291A,0x215C,0x197D,0x119E,0x099E,0x019E,0x019E,0x019F,0x019F,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BE,0x019E,0x01BD,0x01DC,0x025B,0x02DA,0x147C,0x3EDF,0x2F3D,0x0EF6,0x0F53,0x0F53,0x0F53,0x1F56,0x3717,0x5EFA,0x7E3C,0x52B2,0x7233,0x79F4,0x8215,0x79D4,0x6993,0x6193,0x5993,0x5993,0x51B3,0x51B3,0x4993,0x4993,0x4993,0x4992,0x4192,0x4172,0x4172,0x3972,0x3951,0x3951,0x3951,0x3951,0x3951,0x3150,0x3130,0x3130,0x3150,0x3150,0x3150,0x2930,0x3130,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1132,0x19B5,0x19D7,0x19D7,0x1995,0x1112,0x1911,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x1931,0x1932,0x1132,0x21D5,0x2217,0x19D6,0x1174,0x1112,0x1112,0x1931,0x2130,0x2110,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x2110,0x1911,0x1932,0x1154,0x19D6,0x1A18,0x11F7,0x0996,0x0155,0x0935,0x0934,0x0934,0x0934,0x0954,0x1196,0x0997,0x11D8,0x11D8,0x11D8,0x11F8,0x19F8,0x19F8,0x2218,0x2218,0x1A18,0x1A18,0x2218,0x1A18,0x19F8,0x2218,0x2218,0x1A18,0x2238,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x21F8,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2218,0x2238,0x2238,0x2238,0x2238,0x2218,0x19F7,0x19D6,0x19B6,0x19B6,0x1195,0x1174,0x1994,0x1974,0x1973,0x1932,0x1911,0x1911,0x2130,0x2110,0x2130,0x212F,0x210F,0x210F,0x292F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x212F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F, + 0x1111,0x1931,0x1931,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x210F,0x2130,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2130,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x2130,0x210F,0x210F,0x2130,0x210F,0x212F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x292F,0x212F,0x212F,0x292F,0x212F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x212F,0x210F,0x210F,0x290F,0x210F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x210F,0x292F,0x210F,0x210F,0x212F,0x292F,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x212F,0x212F,0x210F,0x2130,0x2130,0x2151,0x2131,0x1932,0x1932,0x1133,0x1974,0x21D6,0x21F6,0x21F6,0x19B5,0x1974,0x1932,0x1911,0x1911,0x1910,0x1910,0x2110,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x28EF,0x30CE,0x386C,0xA294,0xB253,0xB232,0xB211,0xA9F0,0xA1CD,0xFD76,0xFDF4,0xFE13,0xFDF1,0xFE11,0xFDF0,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDF0,0xFE11,0xFE12,0xFE14,0xFDF5,0xCC11,0x89EC,0x920E,0xA290,0xB312,0xD3F6,0xDC57,0xE478,0xDC57,0xDC57,0xE457,0xE457,0xDC57,0xE457,0xE456,0xE456,0xE456,0xE455,0xE454,0xE492,0xFDB4,0xFDF3,0xFDF2,0xFDD1,0xFDF1,0xFDF0,0xFDF0,0xFDF0,0xFDF0,0xFDEF,0xFDEF,0xFDEF,0xFDCF,0xFDEF,0xFDEF,0xFDEF,0xFDF0,0xFDF0,0xFDF0,0xFE12,0xFE13,0xF573,0xBB8F,0x926D,0x9A6F,0xAAF2,0xC395,0xDC37,0xE478,0xE458,0xE437,0xE457,0xE458,0xE437,0xE437,0xE457,0xE436,0xDC36,0xE455,0xE455,0xE473,0xF513,0xFDD3,0xFDF2,0xFDF1,0xFDF1,0xFDF0,0xFDF0,0xFDF0,0xFDF0,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDF0,0xFE10,0xFE11,0xFE11,0xFDF3,0xED33,0xBB8F,0x9A4D,0x9A2E,0xB312,0xCBB5,0xDC37,0xE478,0xE477,0xDC37,0xDC57,0xDC57,0xDC56,0xE457,0xDC56,0xDC36,0xDC36,0xDC56,0xDC55,0xDC75,0xFDB7,0xFDD7,0xFDF7,0xFDF7,0xBBD1,0x8A2C,0x8A2D,0x924E,0xC394,0xD416,0xDC57,0xE477,0xE477,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xE456,0xDC56,0xDC56,0xDC55,0xE455,0xDC55,0xDC55,0xDC55,0xDC75,0xDC74,0xE494,0xE4B5,0xED16,0xFD99,0x89CD,0x91EF,0x91EF,0xB313,0xE478,0xE458,0xE458,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC36,0xDC56,0xDC36,0xDC36,0xDC56,0xDC36,0xDC56,0xDC36,0xDC56,0xDC55,0xE456,0xE456,0xE456,0xE457,0xE457,0xE457,0xDC37,0xDC37,0xE457,0xE457,0xDC57,0xDC57,0xE457,0xE457,0xE456,0xE456,0xE456,0xE456,0xDC55,0xDC54,0xE4B3,0xFDB4,0xFDD3,0xFDF2,0xFDF1,0xFDD0,0xFDD0,0xFDF0,0xFDCF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDCF,0xFDEF,0xFDCF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDCF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFE10,0xFE10,0xFE11,0xFE12,0xFE13,0xFDB5,0xA2CC,0x920C,0x922E,0xB2F1,0xCBD5,0xDC57,0xE498,0xE478,0xE457,0xE457,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xDC56,0xDC56,0xDC56,0xE456,0xE456,0xE456,0xE456,0xE456,0xE456,0xE456,0xE476,0xE496,0xE497,0xB312,0x9A50,0x9A30,0xAAD3,0xCBD6,0xDC37,0xE478,0xE457,0xE457,0xDC57,0xDC36,0xDC36,0xE457,0xE457,0xE436,0xE456,0xE456,0xE456,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xE456,0xE456,0xE476,0xE476,0xE476,0xE477,0xE457,0xE457,0xE457,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xDC37,0xDC37,0xE457,0xE457,0xE457,0xE457,0xE456,0xE456,0xDC55,0xDC54,0xE4B3,0xFD74,0xFDD3,0xFDD2,0xFDD1,0xFDD1,0xFDD1,0xFDD1,0xFDF1,0xFDF0,0xFDD0,0xFDF0,0xFDF0,0xFDF1,0xFE11,0xFE12,0xFE13,0xFE15,0xD472,0x9A6D,0x920D,0x922F,0xC374,0xD417,0xDC37,0xDC57,0xE458,0xE457,0xDC57,0xDC57,0xDC36,0xE456,0xE456,0xDC36,0xDC35,0xE455,0xE455,0xDC53,0xF554,0xFDF4,0xFE14,0xFDF3,0xFDF3,0xFDF2,0xFDF2,0xFDF2,0xFDF2,0xFDF3,0xFE13,0xFE13,0xFE13,0xFE13,0xFE14,0xFDF4,0xFDF6,0xFD98,0x9A30,0xA1F3,0x99F4,0x9A16,0x9A58,0x8A7A,0x4138,0x291A,0x215C,0x199D,0x119D,0x099E,0x019E,0x019E,0x019F,0x019F,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x019E,0x019E,0x01BD,0x01DC,0x025B,0x031A,0x14BC,0x3EDF,0x2F3C,0x0EF5,0x0F33,0x0F53,0x0F53,0x2756,0x3718,0x5F1B,0x75FB,0x5272,0x7234,0x81F4,0x81F5,0x7194,0x6993,0x6173,0x61B4,0x5993,0x59B3,0x51B3,0x4993,0x4972,0x4993,0x4992,0x4192,0x4192,0x4172,0x3972,0x3972,0x3971,0x3971,0x3951,0x3951,0x3150,0x3150,0x3150,0x3130,0x2930,0x2930,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210E,0x292F,0x212F,0x210F,0x210F,0x2130,0x2151,0x1931,0x1132,0x19B5,0x19D7,0x19B7,0x1995,0x1111,0x1911,0x2130,0x2130,0x2130,0x2150,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1932,0x1112,0x19B5,0x21F6,0x21D6,0x1995,0x1133,0x1112,0x1931,0x2131,0x2130,0x210F,0x212F,0x212F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x210F,0x212F,0x210F,0x292F,0x292F,0x290F,0x292F,0x290F,0x210F,0x2110,0x1910,0x1932,0x1974,0x19B6,0x11D7,0x1A18,0x11D7,0x0975,0x0955,0x0934,0x0114,0x0934,0x0975,0x11D7,0x11F8,0x11D8,0x11D8,0x11B7,0x11B6,0x1196,0x1196,0x19B6,0x1996,0x1196,0x1996,0x1195,0x1196,0x19B6,0x1195,0x1195,0x1195,0x1195,0x1195,0x1995,0x1195,0x1195,0x1195,0x1995,0x1195,0x1195,0x1175,0x1995,0x1175,0x1195,0x1195,0x1195,0x1175,0x1195,0x1175,0x1174,0x1174,0x1174,0x1174,0x1154,0x1174,0x1154,0x1134,0x1154,0x1153,0x1953,0x1953,0x1952,0x1932,0x1911,0x1911,0x2110,0x2110,0x2130,0x212F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x290F,0x290F,0x292F,0x210F,0x210F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x292F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F, + 0x19B4,0x1132,0x1932,0x1911,0x1910,0x2130,0x2110,0x2130,0x2130,0x212F,0x210F,0x210F,0x212F,0x2130,0x210F,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x2130,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x212F,0x210F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x212F,0x210F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x212F,0x212F,0x212F,0x2150,0x2130,0x1931,0x1931,0x1132,0x1153,0x1994,0x21F6,0x21F7,0x21F6,0x19B5,0x1974,0x1932,0x1911,0x1911,0x1910,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x212F,0x292F,0x292F,0x212F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x292F,0x210F,0x210F,0x290F,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x30CE,0x386C,0xA294,0xB253,0xB212,0xB211,0xA9F0,0xA1ED,0xF515,0xFDD4,0xFE13,0xFE11,0xFE11,0xFDF0,0xFE0F,0xFE0F,0xFE30,0xFE10,0xFE10,0xFE10,0xFE32,0xFE33,0xFE16,0xC3F0,0x89EC,0x920E,0xA290,0xB332,0xD3F6,0xDC78,0xE498,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xE457,0xE456,0xE456,0xE456,0xDC35,0xDC54,0xE492,0xFD94,0xFE13,0xFDF1,0xFE11,0xFDF0,0xFE10,0xFE10,0xFE10,0xFE10,0xFDF0,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDF0,0xFE10,0xFE11,0xFE33,0xF573,0xBB8F,0x926D,0x924E,0xAAF2,0xC395,0xDC37,0xE478,0xE478,0xE437,0xE457,0xE437,0xE437,0xDC37,0xE457,0xE436,0xDC36,0xE456,0xE455,0xE473,0xF533,0xFDF3,0xFE12,0xFE11,0xFE11,0xFE10,0xFDF0,0xFDEF,0xFDF0,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFE0F,0xFE0F,0xFE10,0xFE10,0xFE11,0xFDF1,0xFDF3,0xED53,0xBB8F,0x9A6D,0x9A4F,0xB312,0xCBB5,0xDC37,0xE478,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC57,0xDC56,0xDC56,0xDC36,0xDC55,0xDC74,0xF596,0xFDD6,0xFE16,0xFE16,0xF5B6,0xAB4E,0x8A0B,0x8A0D,0xA2D0,0xC3B4,0xDC37,0xE477,0xE477,0xE477,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC57,0xE457,0xDC57,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC55,0xDC55,0xDC75,0xDC75,0xDC75,0xDC75,0xE495,0xED17,0xFD9A,0x89CE,0x91EF,0x91EF,0xB313,0xE478,0xE458,0xDC57,0xDC57,0xE457,0xDC57,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC36,0xDC36,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xE456,0xE456,0xE457,0xE457,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE476,0xE476,0xE456,0xE455,0xDC35,0xDC54,0xE4B3,0xFD94,0xFDF3,0xFE12,0xFDF1,0xFDF0,0xFDF0,0xFDF0,0xFDEF,0xFDEF,0xFDEF,0xFE0F,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFDEF,0xFE0F,0xFE0F,0xFE10,0xFE10,0xFE31,0xFE31,0xFE32,0xFE34,0xD4B1,0x89EB,0x920D,0x9A6F,0xBB53,0xDC37,0xE478,0xE477,0xE457,0xE457,0xE457,0xDC57,0xDC36,0xDC37,0xDC57,0xE457,0xE457,0xE457,0xE456,0xE456,0xDC56,0xE456,0xE456,0xE456,0xE476,0xE476,0xE497,0xE477,0xB333,0x9A50,0x9A30,0xAAD2,0xCBD6,0xDC37,0xE478,0xE478,0xDC57,0xDC57,0xDC36,0xE457,0xDC57,0xE457,0xE457,0xE457,0xE456,0xE456,0xDC56,0xDC56,0xDC56,0xDC56,0xE456,0xE456,0xE456,0xE456,0xE456,0xE456,0xE456,0xE457,0xE457,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xDC57,0xE457,0xE456,0xE456,0xDC35,0xDC54,0xE492,0xFD74,0xFDD3,0xFDD2,0xFDF2,0xFDF1,0xFDF1,0xFDF1,0xFDF0,0xFE10,0xFDF0,0xFE10,0xFE10,0xFE11,0xFE11,0xFE12,0xFE12,0xFE15,0xD472,0x9A6D,0x920D,0x922F,0xC374,0xD3F6,0xDC37,0xDC57,0xE457,0xE457,0xDC57,0xDC57,0xDC57,0xE457,0xE456,0xE456,0xDC36,0xE455,0xE455,0xDC53,0xF554,0xFE14,0xFE13,0xFE13,0xFE13,0xFE13,0xFE13,0xFE12,0xFE13,0xFE12,0xFE13,0xFE33,0xFE33,0xFE33,0xFDF4,0xFDD4,0xFDD6,0xFD78,0x9A10,0x99F3,0x99F4,0x9A16,0x9A58,0x8A7A,0x3918,0x293A,0x215C,0x197D,0x117D,0x099E,0x099E,0x019E,0x019F,0x019F,0x019F,0x019F,0x01BF,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BE,0x01BE,0x01BD,0x01DC,0x025B,0x035A,0x14DC,0x3EFF,0x2F5C,0x0F15,0x0F33,0x0F53,0x0F33,0x1F56,0x3738,0x673C,0x75FB,0x5292,0x7254,0x8215,0x81F5,0x7194,0x6993,0x6193,0x6193,0x59D4,0x51B3,0x5193,0x4993,0x4993,0x4992,0x49B3,0x4192,0x4172,0x4192,0x3972,0x3971,0x3951,0x3971,0x3951,0x3951,0x3150,0x3150,0x3130,0x3130,0x3150,0x2930,0x2930,0x3130,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x210F,0x292F,0x292F,0x290F,0x292F,0x210F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2930,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x290F,0x210F,0x292F,0x292F,0x210E,0x210F,0x212F,0x212F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1132,0x19B5,0x19D7,0x19D7,0x1975,0x10F1,0x1910,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2132,0x1932,0x1112,0x19B5,0x21F6,0x19D6,0x1994,0x1133,0x1932,0x1931,0x2130,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x290F,0x210F,0x212F,0x212F,0x210F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x2110,0x2110,0x1911,0x1953,0x1195,0x19D7,0x11F8,0x11F8,0x11F7,0x0996,0x0976,0x0975,0x0975,0x19D7,0x19F8,0x1A18,0x19F8,0x11B7,0x1175,0x0934,0x1113,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1132,0x1112,0x1132,0x1132,0x1112,0x1112,0x1111,0x1111,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1111,0x1112,0x1112,0x1112,0x1112,0x1132,0x1132,0x1132,0x1952,0x1932,0x1932,0x1932,0x10F1,0x10F1,0x18F1,0x1911,0x1931,0x2110,0x2130,0x2110,0x2130,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x212F,0x212F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x212F,0x292F,0x292F, + 0x2A57,0x1174,0x1133,0x1112,0x1931,0x2131,0x2130,0x2130,0x210F,0x2130,0x210F,0x2130,0x2130,0x212F,0x212F,0x210F,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x210F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x290F,0x292F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x292F,0x210F,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210F,0x210F,0x292F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x2130,0x2130,0x2151,0x1931,0x1131,0x1132,0x1133,0x1174,0x2217,0x21F6,0x21F6,0x21D6,0x1974,0x1932,0x1911,0x1911,0x1910,0x1910,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290F,0x292F,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x290F,0x290F,0x290F,0x28EE,0x30CE,0x386C,0xA294,0xAA53,0xB232,0xB211,0xA9F0,0xA1ED,0xECB4,0xFDD5,0xFE13,0xFE12,0xFE11,0xFE10,0xFE0F,0xFE30,0xFE30,0xFE30,0xFE30,0xFE10,0xFE32,0xFE54,0xFE36,0xC3F0,0x89EC,0x920E,0xA290,0xB332,0xD416,0xE478,0xE498,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC56,0xE456,0xE456,0xDC55,0xDC53,0xDC92,0xFD93,0xFE13,0xFE32,0xFE11,0xFE31,0xFE30,0xFE30,0xFE10,0xFE10,0xFE10,0xFE10,0xFE0F,0xFE30,0xFE30,0xFE0F,0xFE0F,0xFE10,0xFE30,0xFE31,0xFE31,0xFE33,0xED53,0xBB8F,0x924D,0x924E,0xAAF2,0xC395,0xDC37,0xE478,0xE458,0xE457,0xE457,0xDC37,0xDC37,0xE457,0xE457,0xE456,0xE456,0xE456,0xE455,0xDC73,0xF533,0xFDF3,0xFE12,0xFE11,0xFE11,0xFE10,0xFE10,0xFE10,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE10,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE10,0xFE30,0xFE31,0xFE31,0xFE33,0xF573,0xBB8F,0x9A6D,0x9A2F,0xB2F2,0xC395,0xDC37,0xDC57,0xDC57,0xE477,0xE477,0xDC57,0xDC56,0xDC56,0xDC57,0xDC56,0xDC56,0xDC56,0xDC55,0xDC74,0xF596,0xFDF5,0xFE15,0xFE35,0xFE36,0xF5B5,0x9ACC,0x8A2C,0x926E,0xB332,0xCBF5,0xDC36,0xDC77,0xE477,0xDC77,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xDC57,0xE457,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xE476,0xE456,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC76,0xDC75,0xDC96,0xED17,0xFD7A,0x89CE,0x91EF,0x91EF,0xB313,0xE478,0xE478,0xDC58,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xDC36,0xE457,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xE457,0xE457,0xE477,0xE457,0xE457,0xE456,0xE456,0xE456,0xE455,0xDC55,0xDC54,0xE4B3,0xFDB4,0xFE13,0xFE12,0xFE11,0xFE11,0xFE10,0xFE10,0xFE0F,0xFE10,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE0F,0xFE2F,0xFE30,0xFE50,0xFE51,0xFE52,0xFE53,0xFE15,0x9A8B,0x922C,0x9A4E,0xAAF1,0xD416,0xDC57,0xE457,0xE457,0xE477,0xE477,0xDC57,0xDC57,0xDC36,0xDC57,0xDC56,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xE456,0xE476,0xE476,0xE497,0xE477,0xBB33,0x9A51,0x9A31,0xAAD3,0xD3F6,0xDC37,0xE478,0xE477,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xE457,0xDC56,0xE456,0xE456,0xDC56,0xE456,0xE456,0xE456,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xE457,0xE457,0xDC57,0xE457,0xE456,0xE456,0xDC35,0xDC34,0xE492,0xFD94,0xFDF3,0xFDF2,0xFE11,0xFE11,0xFE11,0xFE11,0xFE11,0xFE31,0xFE31,0xFE11,0xFE10,0xFE11,0xFE31,0xFE32,0xFE33,0xFE35,0xD492,0x9A6D,0x920D,0x9A2F,0xC394,0xD417,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE477,0xE456,0xE456,0xE456,0xE455,0xDC55,0xDC53,0xF574,0xFE14,0xFE34,0xFE33,0xFE33,0xFE33,0xFE33,0xFE33,0xFE33,0xFE33,0xFE33,0xFE33,0xFE33,0xFE33,0xFE14,0xFE15,0xFDF6,0xFD57,0x9A10,0x99F3,0x99D4,0x9A16,0x9A58,0x8A7B,0x3918,0x293A,0x215C,0x197D,0x117D,0x097E,0x099E,0x019E,0x019F,0x019F,0x019F,0x019F,0x01BF,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BE,0x01BE,0x01BD,0x01DC,0x027B,0x039A,0x151C,0x36FF,0x2F5C,0x0F15,0x0F53,0x0F53,0x0F33,0x2756,0x3718,0x673C,0x6579,0x4A92,0x7254,0x8235,0x79D4,0x6994,0x6173,0x6193,0x5993,0x59B3,0x51B3,0x4993,0x4993,0x4992,0x4993,0x4992,0x4172,0x4172,0x4172,0x3951,0x3971,0x3971,0x3971,0x3951,0x3151,0x3150,0x3150,0x3130,0x3130,0x3130,0x2930,0x292F,0x3130,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210F,0x2110,0x210F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x290F,0x20EF,0x292F,0x292F,0x210E,0x210F,0x210F,0x212F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1112,0x1995,0x19D7,0x19B6,0x1975,0x10F1,0x1911,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x1910,0x1931,0x1932,0x1112,0x19B5,0x2217,0x21F6,0x1174,0x1132,0x1932,0x1931,0x1910,0x2110,0x2130,0x212F,0x292F,0x210F,0x292F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x290F,0x292F,0x290F,0x210F,0x210F,0x2110,0x2110,0x1911,0x1933,0x1174,0x11B6,0x19F7,0x11F8,0x11F8,0x11B7,0x11B7,0x11B7,0x11B7,0x19F7,0x19F7,0x19D7,0x11B6,0x1995,0x1134,0x1112,0x1112,0x1111,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1910,0x1910,0x1911,0x1931,0x1910,0x1910,0x1930,0x1910,0x1910,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1910,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x1911,0x1911,0x1931,0x1911,0x1911,0x1911,0x2111,0x1910,0x2110,0x2110,0x2130,0x2930,0x2930,0x2930,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x292F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F, + 0x1A17,0x19F6,0x1174,0x1133,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x2110,0x210F,0x210F,0x212F,0x2130,0x212F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x212F,0x212F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x292F,0x210F,0x292F,0x290F,0x292F,0x292F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1132,0x1174,0x21F6,0x2217,0x2217,0x19D5,0x1153,0x1112,0x10F1,0x1911,0x1911,0x2130,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x292F,0x292F,0x212F,0x292F,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x2930,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x290F,0x292F,0x212F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x212F,0x212F,0x210F,0x292F,0x290F,0x290E,0x28EE,0x30EE,0x386C,0x9A94,0xB273,0xB232,0xB211,0xA9F0,0xA1EE,0xE493,0xFDD5,0xFE34,0xFE32,0xFE31,0xFE30,0xFE30,0xFE50,0xFE50,0xFE50,0xFE50,0xFE30,0xFE72,0xFE74,0xFE36,0xBBF0,0x89EC,0x920E,0xA290,0xB312,0xD3F6,0xE477,0xE498,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE456,0xE456,0xE456,0xDC55,0xDC53,0xE4B2,0xFDB4,0xFE33,0xFE31,0xFE31,0xFE30,0xFE30,0xFE30,0xFE2F,0xFE2F,0xFE30,0xFE30,0xFE30,0xFE30,0xFE30,0xFE30,0xFE30,0xFE50,0xFE50,0xFE51,0xFE51,0xFE53,0xED73,0xB38F,0x926D,0x9A6F,0xB312,0xC395,0xDC37,0xE478,0xE478,0xE457,0xE437,0xE457,0xE457,0xE457,0xE457,0xE456,0xE456,0xE456,0xE475,0xDC52,0xF552,0xFE13,0xFE32,0xFE31,0xFE30,0xFE30,0xFE30,0xFE30,0xFE2F,0xFE2F,0xFE30,0xFE30,0xFE2F,0xFE2F,0xFE30,0xFE2F,0xFE10,0xFE30,0xFE30,0xFE51,0xFE52,0xFE54,0xF593,0xBB8F,0x924D,0x924F,0xAAF2,0xC395,0xDC57,0xE478,0xDC57,0xDC57,0xE477,0xDC57,0xDC36,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC75,0xDC94,0xF5B5,0xFE35,0xFE34,0xFE34,0xFE54,0xFE55,0xE553,0x92AB,0x8A4C,0x926E,0xBB93,0xCC15,0xDC56,0xDC77,0xDC77,0xDC77,0xDC57,0xDC57,0xDC57,0xDC56,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC56,0xDC57,0xDC56,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xE456,0xDC56,0xDC56,0xDC56,0xDC56,0xDC76,0xDC76,0xDC96,0xED18,0xFD9B,0x89CE,0x9210,0x91EF,0xB313,0xE478,0xDC58,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xE457,0xDC37,0xE457,0xDC57,0xDC36,0xE457,0xE457,0xDC56,0xDC56,0xDC56,0xDC56,0xE457,0xDC36,0xDC57,0xDC36,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC56,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xE456,0xDC56,0xDC55,0xDC55,0xDC53,0xE4B2,0xFDB4,0xFE13,0xFE32,0xFE11,0xFE30,0xFE30,0xFE30,0xFE30,0xFE30,0xFE30,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE2F,0xFE50,0xFE50,0xFE51,0xFE51,0xFE52,0xFE54,0xDCB1,0x926B,0x924D,0x9A6E,0xC393,0xDC56,0xE477,0xE477,0xE477,0xE477,0xE457,0xDC57,0xDC56,0xDC56,0xDC56,0xDC36,0xDC56,0xE457,0xE457,0xDC56,0xE456,0xE456,0xDC56,0xE476,0xE476,0xE497,0xE477,0xBB33,0x9A50,0x9A30,0xB2F3,0xD3F7,0xDC57,0xE478,0xE477,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC36,0xDC56,0xDC57,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xE457,0xDC56,0xDC56,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC36,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC37,0xE457,0xE457,0xE457,0xE456,0xE456,0xDC55,0xDC54,0xE4B3,0xFDB4,0xFE13,0xFE12,0xFE11,0xFE11,0xFE31,0xFE31,0xFE31,0xFE31,0xFE31,0xFE31,0xFE30,0xFE31,0xFE31,0xFE52,0xFE32,0xFE55,0xDCB2,0x9A6D,0x920D,0x9A4F,0xC395,0xD416,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC57,0xE477,0xE476,0xDC56,0xDC36,0xE455,0xDC35,0xDC53,0xF574,0xFE35,0xFE34,0xFE53,0xFE53,0xFE33,0xFE32,0xFE53,0xFE33,0xFE53,0xFE53,0xFE33,0xFE53,0xFE54,0xFE55,0xFE36,0xFE17,0xECF6,0x9A10,0x99D3,0xA1F5,0x9A16,0x9A58,0x825A,0x3918,0x293A,0x215C,0x197D,0x117D,0x099E,0x099E,0x099E,0x019E,0x019F,0x019F,0x019E,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BE,0x01BE,0x01DD,0x01DB,0x027A,0x03FB,0x1D7C,0x36FF,0x2F7C,0x0F15,0x0F33,0x0F53,0x0F33,0x2777,0x3F39,0x5F3C,0x5D38,0x4AB3,0x7274,0x8255,0x71B4,0x6994,0x6194,0x5973,0x61B4,0x59B3,0x5193,0x5193,0x4973,0x4972,0x4993,0x4992,0x4992,0x4172,0x3971,0x3951,0x3951,0x3951,0x3971,0x3951,0x3151,0x3130,0x3130,0x3130,0x3150,0x3130,0x3130,0x3150,0x3130,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x212F,0x212F,0x290F,0x290F,0x210F,0x210F,0x2930,0x2930,0x210F,0x212F,0x210F,0x212F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x210F,0x212F,0x210E,0x210F,0x210F,0x210F,0x210E,0x210F,0x2130,0x2130,0x1931,0x1132,0x1995,0x19D7,0x19D7,0x1195,0x1111,0x1910,0x2130,0x210F,0x2130,0x212F,0x212F,0x212F,0x2130,0x2130,0x2131,0x1931,0x1932,0x1112,0x19B5,0x21F6,0x21F6,0x1995,0x1132,0x1932,0x1931,0x2130,0x2130,0x2110,0x212F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x212F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x210F,0x2110,0x1910,0x1932,0x1133,0x1154,0x1196,0x19D7,0x19F8,0x19D7,0x11B7,0x11B6,0x11B6,0x1196,0x19B5,0x1995,0x1174,0x1954,0x1132,0x1111,0x1911,0x1910,0x1910,0x2151,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2150,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2131,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x1910,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2130,0x210F,0x2930,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F, + 0x11B6,0x19F7,0x19D6,0x1174,0x1153,0x1932,0x1932,0x2131,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x210F,0x212F,0x212F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x210F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1132,0x1152,0x1174,0x21F6,0x2217,0x21F6,0x19B5,0x1974,0x1953,0x1111,0x10F1,0x1911,0x1910,0x2130,0x2130,0x210F,0x2130,0x212F,0x210F,0x212F,0x210E,0x212E,0x210E,0x210E,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x212F,0x292F,0x290F,0x290E,0x28EE,0x30EE,0x386C,0x9A94,0xB273,0xB232,0xAA11,0xA9F1,0xA1EE,0xE493,0xFDF5,0xFE34,0xFE52,0xFE51,0xFE51,0xFE50,0xFE50,0xFE4F,0xFE50,0xFE50,0xFE71,0xFE92,0xFE74,0xFE56,0xBBF0,0x8A0C,0x922E,0xA290,0xB312,0xD3F6,0xE477,0xE477,0xE457,0xE457,0xE457,0xDC57,0xDC57,0xE457,0xE456,0xDC36,0xE455,0xE455,0xDC53,0xDCB2,0xFDD4,0xFE33,0xFE52,0xFE51,0xFE50,0xFE50,0xFE2F,0xFE2F,0xFE2F,0xFE4F,0xFE50,0xFE4F,0xFE4F,0xFE50,0xFE2F,0xFE2F,0xFE50,0xFE71,0xFE71,0xFE72,0xFE53,0xED93,0xB38E,0x926D,0x924E,0xAB12,0xC394,0xDC37,0xE458,0xE458,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xE456,0xE456,0xE455,0xDC54,0xDC52,0xF593,0xFE32,0xFE32,0xFE31,0xFE30,0xFE30,0xFE30,0xFE30,0xFE30,0xFE50,0xFE50,0xFE30,0xFE30,0xFE30,0xFE30,0xFE2F,0xFE30,0xFE30,0xFE50,0xFE71,0xFE72,0xFE54,0xED93,0xB36E,0x924D,0x922E,0xAAF2,0xC3B5,0xDC57,0xE478,0xE457,0xDC57,0xDC57,0xDC36,0xDC56,0xE457,0xDC56,0xDC56,0xDC56,0xDC55,0xDC55,0xDC94,0xF5D5,0xFE55,0xFE54,0xFE54,0xFE73,0xFE54,0xFE55,0xE553,0x928B,0x8A6C,0x9AAF,0xC3D4,0xD415,0xDC56,0xDC77,0xDC77,0xDC77,0xDC77,0xDC56,0xDC77,0xDC77,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xE477,0xDC56,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC76,0xDC76,0xE496,0xECF8,0xFD9B,0x89CE,0x9A10,0x91EF,0xB313,0xE478,0xDC78,0xDC78,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC36,0xDC36,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC55,0xDC55,0xDC53,0xDC92,0xFDB4,0xFE13,0xFE32,0xFE51,0xFE51,0xFE50,0xFE50,0xFE50,0xFE50,0xFE50,0xFE50,0xFE50,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE2F,0xFE4F,0xFE2F,0xFE2F,0xFE4F,0xFE2F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE2F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE70,0xFE70,0xFE71,0xFE71,0xFE53,0xFE14,0xB38D,0x924B,0x924D,0xA2CF,0xD435,0xDC77,0xE477,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xDC57,0xDC36,0xDC56,0xDC36,0xDC57,0xDC56,0xDC56,0xE457,0xDC57,0xE477,0xDC76,0xE477,0xE497,0xE477,0xBB53,0x9A50,0x9A30,0xB2F3,0xCBD6,0xDC57,0xE478,0xE477,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC36,0xDC36,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC36,0xDC36,0xDC57,0xDC36,0xDC57,0xDC57,0xDC56,0xDC56,0xDC56,0xDC57,0xDC57,0xDC37,0xDC57,0xE457,0xDC37,0xDC37,0xDC37,0xDC36,0xDC56,0xDC36,0xDC55,0xDC55,0xDC54,0xE4B3,0xFDB4,0xFE13,0xFE32,0xFE31,0xFE31,0xFE31,0xFE31,0xFE31,0xFE30,0xFE30,0xFE50,0xFE51,0xFE51,0xFE51,0xFE52,0xFE73,0xFE55,0xDCD3,0x9A6C,0x920D,0x922F,0xC374,0xD416,0xDC57,0xE477,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE477,0xE476,0xDC36,0xDC35,0xDC35,0xDC35,0xDC53,0xF594,0xFE35,0xFE54,0xFE53,0xFE53,0xFE52,0xFE52,0xFE53,0xFE53,0xFE53,0xFE53,0xFE74,0xFE54,0xFE54,0xFE75,0xFE56,0xFE18,0xDC75,0x99F1,0xA1F3,0xA1F5,0xA237,0x9A58,0x823A,0x38F8,0x291A,0x215B,0x197D,0x117D,0x097E,0x099E,0x099E,0x019E,0x019F,0x019F,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BE,0x01BE,0x01DD,0x01FB,0x029A,0x0C5B,0x1DBD,0x2EFE,0x2F5B,0x0F15,0x0F33,0x0F33,0x0F33,0x2777,0x3739,0x5F1C,0x4CF7,0x4AD3,0x7295,0x7A15,0x6994,0x6994,0x6193,0x61B4,0x59B4,0x5193,0x5193,0x4993,0x4993,0x4993,0x4972,0x4172,0x4172,0x4172,0x3971,0x3971,0x3951,0x3951,0x3951,0x3951,0x3130,0x3150,0x3150,0x3130,0x3130,0x3130,0x3130,0x2930,0x2930,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x292F,0x210F,0x210F,0x290F,0x292F,0x290F,0x210F,0x210F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1112,0x1995,0x19D7,0x19D7,0x1995,0x1111,0x1910,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x1930,0x1931,0x1932,0x1112,0x1995,0x21F7,0x21F6,0x1995,0x1112,0x1932,0x2151,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x2110,0x2110,0x1911,0x1932,0x1133,0x1154,0x1175,0x19D6,0x11B6,0x1196,0x1195,0x1995,0x1174,0x1154,0x1153,0x1132,0x1932,0x1932,0x1931,0x1931,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x2110,0x2130,0x2130,0x210F,0x2110,0x2110,0x210F,0x20EF,0x2110,0x2110,0x2130,0x210F,0x2930,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x212F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x292F,0x292F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F, + 0x1195,0x11D6,0x11B6,0x19D6,0x1195,0x1133,0x1132,0x1932,0x1931,0x2131,0x2130,0x2930,0x2130,0x2130,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x210F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x210F,0x290F,0x210F,0x290F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x212F,0x292F,0x292F,0x210F,0x212F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1911,0x1132,0x1153,0x1194,0x21F6,0x2217,0x21F6,0x19B5,0x1953,0x1132,0x1111,0x1911,0x1911,0x1910,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x210E,0x210E,0x210E,0x292F,0x290E,0x290E,0x290E,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290E,0x30EE,0x388C,0x9253,0xAA93,0xB252,0xAA12,0xA9F1,0xA1EE,0xD412,0xFDF6,0xFE54,0xFE73,0xFE72,0xFE71,0xFE70,0xFE70,0xFE4F,0xFE6F,0xFE70,0xFE91,0xFE92,0xFE94,0xFE76,0xBBEF,0x8A2C,0x922E,0xA290,0xB332,0xD416,0xE477,0xE477,0xE457,0xE457,0xE457,0xE457,0xDC57,0xE457,0xE456,0xE456,0xE455,0xDC35,0xDC53,0xDCB1,0xFDF4,0xFE53,0xFE71,0xFE71,0xFE70,0xFE50,0xFE50,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE50,0xFE70,0xFE71,0xFE72,0xFE73,0xF5B4,0xB36E,0x8A4C,0x8A0D,0xAAD1,0xC3B5,0xDC57,0xE458,0xE458,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xE457,0xE456,0xE456,0xDC55,0xDC54,0xDC52,0xF593,0xFE32,0xFE51,0xFE51,0xFE50,0xFE50,0xFE50,0xFE50,0xFE50,0xFE50,0xFE50,0xFE50,0xFE50,0xFE50,0xFE50,0xFE4F,0xFE50,0xFE50,0xFE70,0xFE71,0xFE72,0xFE74,0xED93,0xB38E,0x924D,0x924F,0xB312,0xCBB5,0xE458,0xE478,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xDC36,0xDC55,0xDC55,0xD473,0xF5D4,0xFE54,0xFE74,0xFE73,0xFE73,0xFE73,0xFE74,0xFE75,0xDD12,0x92AB,0x926C,0x9A8E,0xC3B3,0xD435,0xDC56,0xDC56,0xDC76,0xDC77,0xDC77,0xDC77,0xDC57,0xDC56,0xDC56,0xDC56,0xDC57,0xDC56,0xDC56,0xDC56,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xE476,0xE476,0xDC76,0xDC76,0xE496,0xF539,0xFD9B,0x89CE,0x9210,0x91EF,0xB2F3,0xE478,0xDC78,0xDC77,0xDC57,0xDC57,0xDC37,0xDC37,0xDC57,0xDC37,0xE457,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xE457,0xE456,0xDC56,0xDC36,0xDC57,0xDC36,0xDC57,0xDC57,0xDC57,0xDC37,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC57,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC55,0xDC53,0xE4B2,0xFDD4,0xFE33,0xFE32,0xFE51,0xFE71,0xFE71,0xFE50,0xFE50,0xFE70,0xFE50,0xFE4F,0xFE50,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE6F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE4F,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE70,0xFE70,0xFE90,0xFE91,0xFE92,0xFE73,0xF5F4,0x928A,0x8A4B,0x924D,0xA2D0,0xD456,0xDC56,0xDC76,0xDC76,0xDC76,0xE477,0xE477,0xDC56,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC57,0xDC77,0xE477,0xE497,0xDC77,0xBB53,0x9A50,0x9A10,0xAAD2,0xCBB6,0xDC57,0xE478,0xE478,0xDC57,0xDC57,0xDC57,0xDC57,0xDC37,0xDC36,0xDC36,0xDC57,0xDC36,0xDC57,0xDC56,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC57,0xDC56,0xDC56,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xDC36,0xDC57,0xE457,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xDC56,0xDC35,0xDC35,0xDC54,0xE4B2,0xFDD4,0xFE33,0xFE32,0xFE52,0xFE51,0xFE51,0xFE51,0xFE51,0xFE30,0xFE51,0xFE51,0xFE71,0xFE71,0xFE71,0xFE72,0xFE93,0xFE75,0xDCD3,0x926C,0x8A0D,0x920E,0xBB74,0xD416,0xDC57,0xE477,0xE477,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xE456,0xDC35,0xDC56,0xDC55,0xDC55,0xD453,0xF594,0xFE55,0xFE74,0xFE73,0xFE53,0xFE52,0xFE53,0xFE53,0xFE53,0xFE73,0xFE73,0xFE74,0xFE74,0xFE75,0xFE75,0xFE57,0xFDF8,0xCBD4,0x99D1,0xA1F4,0xA215,0xA237,0x9A58,0x8239,0x4118,0x291A,0x215B,0x195C,0x197D,0x117E,0x097E,0x099E,0x019E,0x019F,0x019F,0x019F,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BE,0x01BE,0x01BE,0x01DD,0x01FB,0x029A,0x147C,0x1DFD,0x2EFE,0x275B,0x0F15,0x0F33,0x0F53,0x0F34,0x2797,0x3F7A,0x56FC,0x44D8,0x4AD4,0x6A96,0x61D4,0x6173,0x6194,0x61B4,0x61B4,0x59D4,0x51B3,0x5193,0x4993,0x4993,0x4992,0x4172,0x4192,0x4192,0x4172,0x3951,0x3971,0x3951,0x3951,0x3951,0x3951,0x3151,0x3130,0x3130,0x3150,0x3150,0x3130,0x3130,0x2930,0x3130,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x212F,0x292F,0x210F,0x210F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x210F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x1931,0x1112,0x1995,0x19D7,0x19D6,0x1174,0x1111,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2130,0x1930,0x1931,0x1932,0x1112,0x19B5,0x2A17,0x21F7,0x1974,0x1112,0x1932,0x1951,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x290F,0x292F,0x290F,0x292F,0x292F,0x210F,0x2110,0x2110,0x1911,0x1911,0x1932,0x1153,0x1974,0x1994,0x1974,0x1994,0x1973,0x1132,0x1932,0x1911,0x1911,0x1931,0x1931,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2930,0x210F,0x210F,0x212F,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x2910,0x2910,0x210F,0x2930,0x210F,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210E,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210E,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x292F,0x210E,0x292F,0x210F,0x292F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F, + 0x0975,0x1195,0x19D6,0x19F7,0x19F6,0x1195,0x1153,0x1112,0x1931,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x212F,0x210F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x210F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x292F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x292F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x210F,0x212F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x2130,0x2110,0x2130,0x1931,0x1931,0x1111,0x1132,0x19B4,0x21F6,0x2217,0x2216,0x19B5,0x1153,0x1112,0x1111,0x1911,0x1911,0x2131,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210E,0x292F,0x292F,0x290E,0x290E,0x290E,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x290F,0x292F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290E,0x30EE,0x388C,0x8A12,0xAA94,0xAA53,0xAA32,0xA9F1,0xA1EF,0xBB2F,0xFDD7,0xFE34,0xFE73,0xFE72,0xFE71,0xFE91,0xFE90,0xFE6F,0xF66F,0xFE90,0xFEB1,0xFEB2,0xFE94,0xFE96,0xBBEF,0x8A2B,0x922E,0x9A8F,0xB312,0xD416,0xE477,0xE477,0xE477,0xE457,0xE457,0xE457,0xE457,0xDC56,0xDC56,0xE456,0xDC35,0xDC34,0xDC33,0xDCB1,0xFDF4,0xFE52,0xFE71,0xFE71,0xFE70,0xFE70,0xFE70,0xFE6F,0xFE6F,0xFE70,0xFE70,0xFE6F,0xFE6F,0xFE6F,0xFE4F,0xFE6F,0xFE70,0xFE70,0xFE91,0xFE92,0xFE94,0xEDB3,0xB36E,0x924C,0x922E,0xAAF1,0xC3B5,0xDC57,0xE458,0xE458,0xE457,0xDC37,0xE457,0xDC57,0xE457,0xE456,0xE456,0xDC56,0xDC55,0xDC34,0xDC52,0xF5B3,0xFE53,0xFE51,0xFE71,0xFE50,0xFE50,0xFE50,0xFE50,0xFE70,0xFE70,0xFE50,0xFE50,0xFE70,0xFE50,0xFE4F,0xFE4F,0xFE50,0xFE70,0xFE70,0xFE91,0xFE92,0xFE94,0xF5B4,0xB36E,0x924D,0x9A4F,0xB312,0xCBD5,0xE458,0xE458,0xDC57,0xDC57,0xDC57,0xE457,0xDC57,0xDC56,0xDC56,0xDC56,0xDC36,0xDC35,0xDC75,0xD473,0xFDF4,0xFE54,0xFE73,0xFE73,0xFE93,0xFE93,0xFE93,0xFE94,0xFE75,0xE552,0x92AB,0x926C,0x9A8E,0xBB92,0xD456,0xDC76,0xDC76,0xDC76,0xDC76,0xDC76,0xDC77,0xDC77,0xDC76,0xDC77,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xE456,0xE476,0xE476,0xE476,0xE4B7,0xF539,0xFD9B,0x89CE,0x920F,0x91EF,0xB2F2,0xE498,0xDC77,0xDC77,0xDC57,0xDC57,0xDC57,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC37,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC57,0xDC56,0xDC36,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC77,0xE477,0xDC56,0xDC56,0xDC55,0xDC55,0xDC53,0xDCD2,0xFDF4,0xFE53,0xFE52,0xFE71,0xFE71,0xFE70,0xFE70,0xFE70,0xFE70,0xFE70,0xFE70,0xFE6F,0xFE70,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE4F,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE6F,0xFE90,0xFEB0,0xFE90,0xFEB1,0xFE91,0xFE92,0xFE94,0xDD32,0x8A8A,0x926C,0x924D,0xB351,0xD456,0xDC76,0xDC56,0xDC76,0xDC56,0xDC56,0xDC77,0xDC57,0xE477,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC77,0xE497,0xDC57,0xBB54,0x9A50,0x9A30,0xAAD2,0xCBD6,0xDC57,0xE477,0xDC77,0xDC77,0xDC57,0xDC37,0xDC36,0xDC36,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xE457,0xDC56,0xDC36,0xDC56,0xDC56,0xDC35,0xDC55,0xDC53,0xE4B2,0xFDD4,0xFE53,0xFE52,0xFE72,0xFE71,0xFE71,0xFE71,0xFE71,0xFE70,0xFE70,0xFE71,0xFE71,0xFE91,0xFE92,0xFE92,0xFE93,0xFE95,0xDCF3,0x926C,0x8A0D,0x920E,0xBB74,0xD416,0xDC57,0xDC57,0xDC57,0xE477,0xE457,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC35,0xDC55,0xDC55,0xD453,0xFDD5,0xFE74,0xFE74,0xFE73,0xFE73,0xFE73,0xFE73,0xFE73,0xFE73,0xFE73,0xFE73,0xFE94,0xFE94,0xFE75,0xFE96,0xFE77,0xFDD9,0xBB12,0x99F1,0xA1F4,0xA215,0xA237,0x9A58,0x8219,0x4118,0x311A,0x293B,0x215C,0x195D,0x117E,0x119E,0x097E,0x099E,0x019F,0x019F,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01DF,0x01DF,0x01DE,0x01BD,0x01DD,0x01FB,0x029A,0x149C,0x261D,0x26DD,0x275B,0x0F15,0x0F53,0x0F73,0x0F34,0x2797,0x377A,0x46BB,0x44F8,0x42F4,0x6296,0x59D4,0x6194,0x6194,0x61B4,0x59D4,0x59B4,0x51B3,0x51B3,0x51B3,0x4993,0x4972,0x4972,0x4172,0x4172,0x4171,0x3971,0x3971,0x3951,0x3951,0x3951,0x3951,0x3130,0x3150,0x3150,0x3150,0x2930,0x3130,0x3130,0x3130,0x2930,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210E,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x2130,0x1911,0x1112,0x1995,0x19D6,0x19B6,0x1995,0x1111,0x1930,0x2130,0x2110,0x2130,0x2130,0x212F,0x212F,0x2150,0x2130,0x1930,0x1931,0x1111,0x1132,0x21B5,0x21D6,0x21F6,0x1995,0x1112,0x1932,0x2151,0x2151,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x290F,0x292F,0x290F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x2110,0x2110,0x1910,0x1911,0x1931,0x1132,0x1952,0x1952,0x1952,0x1952,0x1932,0x1931,0x1931,0x1930,0x1910,0x2130,0x2130,0x2130,0x2950,0x2130,0x212F,0x210F,0x210F,0x210F,0x20EE,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x20EF,0x210F,0x292F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x2930,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210E,0x290F,0x292F,0x210E,0x292F,0x290F,0x210F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x292F,0x292F, + 0x0934,0x0954,0x11B6,0x19D6,0x19F7,0x19D6,0x1175,0x1133,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x292F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x212F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x290F,0x292F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x290F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x2930,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x2110,0x2130,0x1931,0x1931,0x1132,0x1132,0x19B5,0x21F6,0x21F6,0x21F6,0x19B5,0x1973,0x1132,0x1111,0x1910,0x1910,0x2130,0x2951,0x2110,0x2110,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210E,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x292F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x28EE,0x30EE,0x388D,0x79D1,0xAA94,0xAA53,0xAA32,0xA9F1,0xA1EF,0xAA6E,0xFD56,0xFE35,0xFE73,0xFE92,0xFE91,0xFEB1,0xFEB0,0xFE90,0xFE90,0xFE90,0xFEB1,0xFEB2,0xFEB4,0xFE96,0xBC0F,0x8A2B,0x8A2D,0x9A6F,0xAB11,0xD436,0xDC77,0xE477,0xE477,0xDC57,0xDC57,0xDC56,0xDC56,0xE456,0xDC56,0xE456,0xE455,0xDC34,0xDC53,0xDCB1,0xFE14,0xFE73,0xFE91,0xFE91,0xFE90,0xFE70,0xFE70,0xFE90,0xFE90,0xFE6F,0xFE90,0xFE6F,0xFE6F,0xFE90,0xFE6F,0xFE70,0xFE90,0xFE90,0xFE91,0xFEB2,0xFE94,0xF5D4,0xB38E,0x926D,0x926E,0xB312,0xCBD5,0xDC57,0xE457,0xE477,0xE457,0xE457,0xDC57,0xE457,0xE457,0xDC56,0xE477,0xE456,0xDC55,0xDC54,0xD452,0xF5B3,0xFE52,0xFE71,0xFE71,0xFE70,0xFE70,0xFE70,0xFE70,0xFE70,0xFE70,0xFE70,0xFE70,0xFE70,0xFE6F,0xFE70,0xFE70,0xFE70,0xFE70,0xFE90,0xFE91,0xFEB2,0xFE93,0xF5D4,0xB36E,0x924D,0x922E,0xAAF2,0xCBD5,0xE457,0xE457,0xE457,0xE457,0xE457,0xE457,0xDC56,0xDC56,0xDC56,0xDC56,0xDC36,0xDC55,0xDC54,0xDC73,0xF5D4,0xFE53,0xFE73,0xFE72,0xFE92,0xFE92,0xFE92,0xFE92,0xFE93,0xFE95,0xF5D4,0xA32C,0x926B,0x924C,0xAB30,0xC3D3,0xD455,0xD455,0xDC76,0xDC76,0xDC76,0xDC76,0xDC76,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC36,0xDC36,0xDC56,0xDC56,0xDC56,0xDC56,0xE456,0xE476,0xDC76,0xE496,0xF538,0xFD9B,0x89CD,0x920F,0x91EF,0xAAD2,0xE498,0xDC77,0xDC77,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xDC56,0xDC36,0xDC37,0xDC37,0xDC37,0xDC37,0xDC57,0xDC56,0xDC56,0xDC56,0xDC76,0xDC56,0xDC56,0xDC76,0xDC76,0xDC56,0xDC55,0xDC55,0xDC53,0xE4F2,0xFE14,0xFE73,0xFE72,0xFE71,0xFE71,0xFE70,0xFE70,0xFE70,0xFE90,0xFE70,0xFE70,0xFE70,0xFE6F,0xFE6F,0xFE90,0xFE6F,0xFE6F,0xFE8F,0xFE6F,0xFE8F,0xFE8F,0xFE6F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE90,0xFEB0,0xFEB0,0xFEB0,0xFEB1,0xFEB1,0xFEB2,0xFEB4,0xD510,0x8A8A,0x926C,0x928D,0xBB72,0xDC56,0xDC56,0xDC56,0xDC76,0xDC76,0xDC76,0xDC56,0xDC56,0xDC56,0xDC56,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xDC77,0xE497,0xDC57,0xBB54,0x9A30,0x9A30,0xAAD2,0xCBF6,0xE478,0xDC77,0xDC77,0xDC77,0xDC57,0xDC36,0xDC36,0xDC56,0xDC56,0xDC56,0xDC56,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xDC57,0xDC57,0xDC57,0xDC56,0xDC57,0xDC57,0xDC56,0xDC56,0xDC56,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC55,0xDC55,0xDC73,0xDCD2,0xFDF4,0xFE53,0xFE72,0xFE72,0xFE71,0xFE71,0xFE71,0xFE71,0xFE70,0xFE70,0xFE70,0xFE91,0xFE91,0xFEB2,0xFEB2,0xFEB3,0xFE95,0xDCF3,0x8A4B,0x8A0D,0x920E,0xC374,0xD416,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC55,0xDC55,0xDC54,0xD452,0xFDF5,0xFE74,0xFE93,0xFE93,0xFE93,0xFE93,0xFE93,0xFE93,0xFE93,0xFE93,0xFE94,0xFE94,0xFE95,0xFE95,0xFE96,0xFE58,0xFD59,0xAA51,0xA1F2,0xA1F4,0xA1F5,0xA216,0x9A38,0x79D8,0x48F7,0x3919,0x313B,0x295C,0x215C,0x197D,0x117E,0x099E,0x099E,0x019F,0x019F,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01DF,0x01DF,0x01DE,0x01DE,0x01DD,0x01DC,0x01FB,0x02BA,0x149B,0x1DFC,0x26FD,0x275A,0x0F15,0x0733,0x0F74,0x0F55,0x27B8,0x2F5A,0x3E9B,0x457A,0x4BB7,0x5AF6,0x51F4,0x59D4,0x5993,0x59D4,0x59D4,0x51B4,0x5193,0x4993,0x4993,0x4993,0x4993,0x4172,0x4172,0x4192,0x3971,0x3971,0x3971,0x3971,0x3971,0x3951,0x3151,0x3150,0x3130,0x3130,0x3150,0x3130,0x3130,0x3130,0x3130,0x2930,0x3130,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2130,0x1911,0x1112,0x19B5,0x19D7,0x19D6,0x1975,0x1111,0x1910,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x2150,0x1931,0x1932,0x1112,0x21B5,0x29F6,0x21D6,0x1974,0x1112,0x1912,0x2151,0x1910,0x2110,0x210F,0x210F,0x212F,0x212F,0x292F,0x212F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x2110,0x2130,0x2110,0x1910,0x1911,0x1931,0x1931,0x1951,0x2151,0x2131,0x2130,0x2110,0x2110,0x2110,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x290F,0x290F,0x210F,0x292F,0x212F,0x212F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x210F,0x210F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290E,0x210E,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x210E,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F, + 0x1154,0x1154,0x1154,0x1995,0x19D6,0x19D6,0x19D6,0x1195,0x1133,0x1132,0x1931,0x2131,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x290F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x292F,0x210F,0x210F,0x212F,0x2130,0x2110,0x1931,0x1111,0x1132,0x1133,0x1994,0x21F6,0x21F6,0x21F6,0x19B5,0x1973,0x1132,0x1111,0x1911,0x2110,0x2130,0x2130,0x2930,0x2110,0x212F,0x210F,0x210F,0x210F,0x210E,0x210E,0x292F,0x210E,0x292F,0x292F,0x292F,0x210E,0x290E,0x290F,0x290E,0x292F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x290F,0x290F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290E,0x30EE,0x38AD,0x612F,0xA2B4,0xAA53,0xAA32,0xAA11,0xA1CF,0xA20E,0xE474,0xFE36,0xFE74,0xFE92,0xFE92,0xFEB1,0xFEB1,0xFEB0,0xFEB0,0xFEB0,0xFEB1,0xFEB2,0xFEB3,0xFE95,0xB3EE,0x822B,0x8A2D,0x9A6E,0xB311,0xD415,0xDC76,0xDC77,0xDC56,0xDC56,0xDC56,0xE456,0xDC36,0xE456,0xDC36,0xE455,0xDC35,0xDC34,0xDC52,0xDCB1,0xFE14,0xFE72,0xFE91,0xFE91,0xFE90,0xFE90,0xFE90,0xFE90,0xFE90,0xFE90,0xFE90,0xFE90,0xFE8F,0xFE8F,0xFE90,0xFE90,0xFE90,0xFEB0,0xFEB1,0xFEB2,0xFEB3,0xF5F4,0xAB6D,0x9A8D,0x926E,0xAAF1,0xCBD5,0xDC57,0xDC57,0xDC57,0xDC57,0xE457,0xE457,0xE457,0xE477,0xE477,0xE476,0xE456,0xDC55,0xDC54,0xD451,0xF5D3,0xFE52,0xFE71,0xFE70,0xFE70,0xFE70,0xFE70,0xFE70,0xFE70,0xFE6F,0xFE6F,0xFE90,0xFE90,0xFE70,0xFE90,0xFE8F,0xFE90,0xFE90,0xFEB0,0xFEB1,0xFEB2,0xFE93,0xF5F4,0xAB4D,0x924C,0x922E,0xAAF1,0xCBD5,0xDC57,0xE477,0xE477,0xDC56,0xE457,0xE457,0xE456,0xDC56,0xDC56,0xDC56,0xDC56,0xDC55,0xDC54,0xD472,0xF5D3,0xFE53,0xFE72,0xFE92,0xFE92,0xFE92,0xFEB2,0xFE92,0xFEB2,0xFE93,0xFE94,0xFE34,0xC450,0x8A6A,0x9A8C,0xA2CE,0xBB71,0xD455,0xDC76,0xDC76,0xDC76,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xE456,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC76,0xE496,0xF558,0xFD9A,0x89CD,0x9A0F,0x91EF,0xA291,0xE4B8,0xDC77,0xDC57,0xDC57,0xDC57,0xDC36,0xDC37,0xDC37,0xDC37,0xDC36,0xDC37,0xDC36,0xDC57,0xDC36,0xDC36,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xDC57,0xDC56,0xDC36,0xDC36,0xDC36,0xDC36,0xDC57,0xDC37,0xDC36,0xDC36,0xDC56,0xDC56,0xDC76,0xDC56,0xDC76,0xDC56,0xDC56,0xDC56,0xDC56,0xDC55,0xDC54,0xDC73,0xE4F2,0xFE34,0xFE73,0xFE92,0xFE91,0xFE91,0xFE90,0xFE90,0xFE90,0xFE90,0xFE90,0xFEB0,0xFE90,0xFE90,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFE8F,0xFEAF,0xFEAF,0xFE8F,0xFE8F,0xFEAF,0xFEAF,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED1,0xFED1,0xFEB1,0xFEB2,0xFE94,0xDD52,0x8AAA,0x92AC,0x9A8D,0xB351,0xDC76,0xDC76,0xDC76,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC57,0xDC57,0xDC56,0xDC56,0xDC77,0xE497,0xDC36,0xBB74,0x9A30,0x9A30,0xAAD2,0xCBD5,0xDC77,0xE477,0xDC77,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC57,0xDC56,0xDC56,0xDC56,0xDC36,0xDC36,0xDC56,0xDC56,0xDC56,0xDC36,0xDC36,0xDC36,0xDC36,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC55,0xDC55,0xDC54,0xDC73,0xDCD2,0xFE14,0xFE73,0xFE92,0xFE91,0xFE91,0xFE91,0xFE91,0xFE91,0xFE91,0xFE91,0xFE91,0xFE91,0xFE91,0xFEB2,0xFEB2,0xFEB3,0xFE95,0xDD13,0x8A4B,0x8A0D,0x920E,0xBB74,0xD416,0xDC57,0xDC57,0xDC57,0xDC57,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC55,0xDC35,0xDC34,0xD432,0xFE35,0xFE94,0xFEB3,0xFEB3,0xFEB3,0xFEB3,0xFE93,0xFE93,0xFEB4,0xFEB4,0xFE94,0xFE94,0xFE95,0xFE96,0xFE77,0xFE5A,0xBB32,0xA211,0xA1F3,0xA1F4,0xA1F5,0xA216,0x9A18,0x79D8,0x50F7,0x4119,0x413A,0x313B,0x293B,0x213C,0x197D,0x117E,0x099E,0x099F,0x019F,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01DF,0x01DF,0x01DF,0x01DF,0x01DE,0x01DD,0x01DC,0x01FB,0x02BA,0x14BB,0x1E1C,0x26DC,0x275A,0x0F14,0x0753,0x0F74,0x0F55,0x1F98,0x2F7A,0x369B,0x3D9A,0x64BA,0x5316,0x5235,0x59D4,0x59F4,0x59D4,0x51B4,0x51B3,0x51B3,0x4993,0x4993,0x4993,0x4992,0x4172,0x4192,0x4172,0x4171,0x3971,0x3971,0x3951,0x3951,0x3951,0x3151,0x3150,0x3130,0x3150,0x3130,0x3130,0x3130,0x3130,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x290F,0x292F,0x290F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x290F,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x212F,0x292F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1112,0x19B5,0x19D6,0x19B6,0x1174,0x1111,0x1931,0x2130,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x1931,0x1132,0x1112,0x21B5,0x21F6,0x21D6,0x1995,0x10F2,0x1911,0x2131,0x2130,0x210F,0x212F,0x212F,0x212F,0x294F,0x210F,0x210F,0x292F,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x2930,0x2110,0x2110,0x2110,0x2110,0x2110,0x1910,0x2130,0x2130,0x2110,0x2930,0x290F,0x210F,0x210F,0x210F,0x210E,0x210E,0x210E,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x212F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x20EE,0x20EE,0x210F,0x210F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x210F,0x212F,0x210F,0x210F,0x292F,0x292F,0x210F,0x292F,0x210F,0x212F,0x292F,0x212F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F, + 0x1953,0x1933,0x1133,0x1154,0x1195,0x19D6,0x19F6,0x19F6,0x1995,0x1153,0x1132,0x1931,0x2131,0x2130,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x2930,0x210F,0x212F,0x212F,0x212F,0x212F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x292F,0x210E,0x292F,0x292F,0x292F,0x292F,0x210F,0x212F,0x2130,0x1910,0x1932,0x1953,0x1133,0x1154,0x19D6,0x21F6,0x21F6,0x19B5,0x1133,0x1111,0x1111,0x1910,0x2130,0x2130,0x2930,0x2930,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210E,0x292E,0x292F,0x292E,0x292E,0x290E,0x292F,0x290F,0x210E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210E,0x210F,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290E,0x310E,0x38CD,0x50ED,0x9A94,0xA253,0xAA52,0xAA12,0xA1F0,0x99AE,0xBB10,0xFE57,0xFE94,0xFEB3,0xFEB2,0xFEB1,0xFEB1,0xFEB0,0xFEB0,0xFEB0,0xFEB1,0xFED2,0xFEB3,0xFEB5,0xBC0E,0x822B,0x8A2D,0x9A6E,0xAAF1,0xD415,0xDC76,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC36,0xE435,0xE435,0xDC35,0xDC34,0xDC34,0xDC52,0xDCB1,0xFE34,0xFE93,0xFE91,0xFEB1,0xFE90,0xFE90,0xFE90,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB1,0xFED2,0xFEB3,0xF5F4,0xA32C,0x8A4B,0x8A2D,0xA28F,0xC3B4,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC55,0xDC55,0xDC54,0xDC53,0xD451,0xF5D2,0xFE72,0xFE91,0xFE91,0xFE90,0xFE90,0xFE90,0xFE90,0xFE90,0xFE90,0xFE90,0xFE90,0xFE90,0xFE90,0xFE90,0xFE90,0xFEB0,0xFEB0,0xFEB0,0xFED1,0xFEB1,0xFE93,0xF5D3,0xA30C,0x922C,0x922D,0xAAD0,0xCBF5,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC36,0xDC56,0xDC56,0xDC35,0xDC35,0xDC34,0xDC54,0xD471,0xF5F3,0xFE73,0xFE92,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB3,0xFE95,0xEDB3,0xB38D,0xA2EC,0xAB0F,0xB350,0xC3D3,0xCC14,0xD455,0xD455,0xDC55,0xDC76,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC75,0xE4B6,0xF557,0xFDBA,0x89CD,0x920F,0x920F,0x9A50,0xE4B8,0xDC76,0xDC56,0xDC56,0xDC56,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC57,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC56,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC55,0xDC55,0xDC55,0xDC54,0xDC54,0xD452,0xDCB1,0xFE34,0xFE93,0xFEB2,0xFE91,0xFEB1,0xFE90,0xFE90,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED2,0xFEB2,0xFEB4,0xF614,0xA32C,0x92AC,0x9AAD,0xA2AF,0xCBF4,0xD435,0xDC76,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC76,0xDC77,0xD416,0xBB53,0x9A50,0x9A30,0xAAB1,0xCBB5,0xDC57,0xDC77,0xDC77,0xDC77,0xD436,0xDC36,0xDC36,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC36,0xDC36,0xDC56,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC56,0xDC36,0xDC36,0xDC36,0xDC36,0xDC56,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC34,0xDC34,0xD452,0xDCD1,0xFE34,0xFE93,0xFE92,0xFE91,0xFE91,0xFE91,0xFE91,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB2,0xFEB2,0xFEB2,0xFED3,0xFEB5,0xDD33,0x8A2B,0x8A0D,0x89EE,0xBB73,0xD416,0xDC56,0xDC57,0xDC57,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC55,0xDC35,0xDC34,0xDC54,0xCC31,0xFE75,0xFEB4,0xFEB3,0xFEB3,0xFEB3,0xFEB3,0xFEB3,0xFEB4,0xFEB4,0xFEB4,0xFEB4,0xFEB5,0xFEB5,0xFE97,0xFE78,0xF537,0x99EF,0xA1F2,0xA1F3,0xA1F4,0xA1F5,0xA216,0x9A17,0x7977,0x58F7,0x5939,0x4919,0x38D9,0x517B,0x51FD,0x213C,0x197E,0x097E,0x099E,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01BF,0x01DF,0x01DE,0x01DF,0x01DE,0x01DD,0x01FD,0x021B,0x02B9,0x14BB,0x1E1C,0x26FC,0x275A,0x0F14,0x0F73,0x0F73,0x0F54,0x1F98,0x275A,0x2EBB,0x4E3C,0x6D5C,0x5356,0x5AB6,0x51F4,0x5A15,0x51D4,0x51B4,0x51B3,0x51B3,0x4993,0x4993,0x4992,0x4992,0x4192,0x4192,0x4192,0x4171,0x4171,0x3951,0x3971,0x3971,0x3150,0x3150,0x3150,0x3150,0x3130,0x3130,0x3150,0x3150,0x2930,0x2930,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x290F,0x210F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x210F,0x2130,0x1931,0x1132,0x19B5,0x19D7,0x19D7,0x1174,0x1111,0x1910,0x2130,0x210F,0x2130,0x212F,0x210F,0x212F,0x210F,0x212F,0x1930,0x1931,0x1932,0x1132,0x19B5,0x2A17,0x21D6,0x1974,0x10F2,0x1911,0x2131,0x2130,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x292F,0x210F,0x210E,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x2930,0x210F,0x212F,0x2130,0x2130,0x210F,0x2110,0x20EF,0x290F,0x290F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210E,0x210E,0x210E,0x290F,0x210E,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210E,0x210E,0x210E,0x290F,0x210F,0x210E,0x210E,0x290F,0x290F,0x210E,0x290E,0x290E,0x20EE,0x290F,0x290F,0x290F,0x290F,0x290E,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210E,0x20EE,0x20EE,0x210F,0x292F,0x292F,0x292F,0x212F,0x210F,0x290F,0x292F,0x292F,0x210F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x210E,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210F,0x210F,0x212F,0x210F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x210E,0x210F,0x210F,0x292F, + 0x2152,0x1932,0x1912,0x1133,0x1154,0x19B5,0x19D6,0x19F6,0x21F6,0x1174,0x1153,0x1932,0x1931,0x2130,0x2130,0x2130,0x212F,0x210F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210E,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290E,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290E,0x292F,0x292F,0x290F,0x210F,0x212F,0x212F,0x2130,0x1910,0x1931,0x1152,0x1153,0x1154,0x21F6,0x21F6,0x21F6,0x1995,0x1953,0x1932,0x1911,0x1910,0x2110,0x2930,0x2930,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290E,0x290E,0x310E,0x30CE,0x48CD,0x8A73,0xA273,0xAA52,0xAA32,0xA1F1,0x99CF,0x91CC,0xFDD6,0xFE75,0xFEB3,0xFED2,0xFEB1,0xFEB1,0xFED1,0xFED0,0xFED0,0xFED1,0xFED1,0xFEB3,0xFEB5,0xBC2E,0x822A,0x8A2D,0x926E,0xA2D0,0xD414,0xDC55,0xDC56,0xDC55,0xDC55,0xDC55,0xDC35,0xDC35,0xDC35,0xDC34,0xDC34,0xDC34,0xDC33,0xDC52,0xDCD1,0xFE33,0xFE92,0xFEB1,0xFEB1,0xFEB1,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFED1,0xFED1,0xFED2,0xFEB3,0xF5F3,0x9AEA,0x8A2A,0x8A0C,0x9A6E,0xC3D3,0xDC56,0xDC55,0xDC55,0xDC35,0xDC55,0xDC56,0xDC55,0xDC55,0xDC55,0xDC55,0xDC34,0xDC33,0xDC53,0xD450,0xF5D2,0xFE92,0xFEB1,0xFEB1,0xFEB0,0xFEB0,0xFE90,0xFE90,0xFEB0,0xFE90,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFED1,0xFED1,0xFE93,0xF5F3,0x9AEB,0x8A2B,0x922D,0xA2CF,0xCBF4,0xDC56,0xDC55,0xDC55,0xDC55,0xDC55,0xDC35,0xDC35,0xDC35,0xDC55,0xDC35,0xDC34,0xDC34,0xDC53,0xD451,0xFE13,0xFE92,0xFE92,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFED2,0xFED2,0xFED2,0xFED2,0xFED3,0xFEB4,0xFE54,0xDD11,0xAB4D,0xA32D,0xB36F,0xBBB0,0xC3F2,0xC412,0xD454,0xD454,0xD455,0xDC75,0xD455,0xD455,0xD455,0xDC55,0xDC55,0xDC35,0xDC35,0xDC55,0xDC55,0xDC55,0xDC55,0xDC55,0xDC55,0xDC55,0xDC75,0xDC95,0xED56,0xFDB9,0x89CC,0x920F,0x920F,0x9A2F,0xE4B7,0xDC76,0xDC56,0xDC56,0xDC56,0xDC56,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC35,0xDC35,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC56,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC36,0xDC35,0xDC35,0xDC55,0xDC55,0xDC55,0xDC55,0xDC55,0xDC55,0xD454,0xD454,0xD453,0xD452,0xDCB0,0xFE33,0xFE92,0xFEB1,0xFEB1,0xFED1,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFECF,0xFED0,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFECF,0xFECF,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED2,0xFED2,0xFEB4,0xFE55,0xCC90,0x92CB,0x9AAC,0xA30E,0xB34F,0xBB91,0xCBF3,0xDC75,0xDC75,0xDC55,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC76,0xDC76,0xCC15,0xB332,0x9A50,0x9A2F,0xA290,0xC3B4,0xDC56,0xDC76,0xDC56,0xD456,0xDC56,0xDC35,0xDC55,0xDC56,0xDC55,0xDC35,0xDC55,0xDC55,0xDC56,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC55,0xDC35,0xDC34,0xDC34,0xDC34,0xD433,0xD452,0xD4D1,0xFE54,0xFE93,0xFEB2,0xFEB2,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB2,0xFED2,0xFED2,0xFED3,0xFEB5,0xDD33,0x8A2A,0x8A0C,0x89ED,0xB352,0xD415,0xDC56,0xDC76,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC56,0xDC55,0xDC35,0xDC34,0xDC34,0xD453,0xD471,0xFE75,0xFEB4,0xFED4,0xFEB3,0xFEB3,0xFEB3,0xFEB3,0xFEB3,0xFED4,0xFED4,0xFEB5,0xFEB5,0xFE96,0xFE58,0xFDF9,0xAA8F,0xA1F1,0xA1D3,0xA1F4,0xA1F4,0xA1F5,0xA216,0x91F7,0x7135,0x60F6,0x6958,0x50D7,0x5939,0x829E,0x7A9F,0x313B,0x213C,0x117D,0x097E,0x099F,0x019F,0x019F,0x01BF,0x01BF,0x01BF,0x01DF,0x01BE,0x01DE,0x01DE,0x01DE,0x01DE,0x01DD,0x01FC,0x021B,0x02D9,0x14DB,0x1E1C,0x26DC,0x1F5A,0x0F34,0x0753,0x0F73,0x0F75,0x1FB9,0x1F5A,0x36FC,0x4E7D,0x6DBD,0x4336,0x4A95,0x4A14,0x51F4,0x51D4,0x51B4,0x51B3,0x51B3,0x49B3,0x4993,0x4992,0x4992,0x4192,0x4172,0x4172,0x4192,0x3971,0x3971,0x3971,0x3951,0x3950,0x3150,0x3150,0x3150,0x3150,0x3150,0x3150,0x3150,0x3130,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x292F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x290F,0x210F,0x292F,0x292F,0x210F,0x212F,0x212F,0x2130,0x1911,0x1132,0x1995,0x19F7,0x19D7,0x1995,0x1111,0x1910,0x2130,0x2130,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x1910,0x1931,0x1932,0x1132,0x19B5,0x21F6,0x21D6,0x1975,0x1112,0x1911,0x2131,0x2130,0x2130,0x212F,0x210F,0x212F,0x212F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x212F,0x210F,0x20EF,0x20EF,0x28EF,0x28EF,0x28EF,0x290F,0x290F,0x210F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210E,0x290F,0x292F,0x210E,0x290F,0x210E,0x210F,0x210E,0x210E,0x210E,0x210E,0x290E,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210E,0x210E,0x210E,0x210F,0x292F,0x210F,0x210F,0x212F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210E,0x290F,0x290F,0x290F,0x210E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290E,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x290F,0x210F,0x292F,0x210F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210E,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210E,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F, + 0x2110,0x2131,0x1911,0x1932,0x1132,0x1174,0x19B5,0x21F6,0x19F6,0x19D6,0x1994,0x1953,0x1131,0x1931,0x2130,0x2130,0x2930,0x292F,0x292F,0x292F,0x2930,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210E,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290E,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210E,0x290F,0x290E,0x210E,0x292F,0x292F,0x292F,0x292F,0x212F,0x210F,0x190F,0x1910,0x1931,0x1952,0x1133,0x0933,0x21F6,0x2237,0x21D6,0x1974,0x1973,0x1932,0x1911,0x1910,0x2110,0x210F,0x210F,0x292F,0x290F,0x290F,0x20EF,0x20EF,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290E,0x290E,0x210E,0x292F,0x210E,0x290E,0x290F,0x290E,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x20EE,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210E,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290E,0x290E,0x30EE,0x38AD,0x71D1,0xA273,0xAA53,0xAA32,0xA211,0x99D0,0x91AD,0xCBF1,0xFE36,0xFE94,0xFED2,0xFEB2,0xFEB1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFEB4,0xC46E,0x7A09,0x8A2C,0x926D,0x9AAE,0xCC14,0xD455,0xD455,0xD455,0xDC55,0xDC55,0xDC54,0xDC54,0xDC54,0xDC54,0xDC33,0xDC33,0xDC52,0xD471,0xDCB0,0xFE53,0xFEB2,0xFEB1,0xFEB1,0xFEB0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEF1,0xFEF1,0xFEB2,0xF612,0x92A8,0x8229,0x820A,0x926C,0xBB71,0xDC54,0xDC54,0xDC54,0xDC54,0xDC55,0xDC55,0xDC55,0xDC54,0xDC54,0xD433,0xD433,0xD432,0xD452,0xD470,0xF5D1,0xFEB2,0xFEB1,0xFED1,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFEB2,0xF5F3,0x92C9,0x8A2A,0x8A2C,0x9AAE,0xBB91,0xCC34,0xD434,0xD454,0xDC55,0xDC55,0xDC55,0xDC54,0xDC54,0xDC54,0xDC34,0xDC33,0xD433,0xD452,0xCC50,0xF612,0xFE92,0xFEB1,0xFEB1,0xFEB1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFEF1,0xFEF2,0xFED2,0xFED3,0xFED5,0xFED6,0xD531,0xBC0E,0xB3CE,0xB3AE,0xB3AF,0xBBAF,0xBBD0,0xC3D1,0xC3F2,0xCC13,0xD433,0xD434,0xD434,0xD434,0xD434,0xD434,0xDC34,0xDC54,0xDC55,0xDC54,0xDC54,0xDC54,0xDC74,0xDC74,0xDCB4,0xED35,0xF597,0x81CB,0x920E,0x920E,0x920E,0xDC96,0xDC75,0xDC75,0xDC55,0xDC55,0xDC55,0xDC55,0xDC55,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC34,0xDC35,0xDC35,0xDC34,0xDC55,0xDC35,0xDC35,0xDC35,0xDC35,0xDC35,0xDC55,0xDC35,0xDC35,0xDC34,0xDC34,0xDC34,0xDC54,0xDC34,0xDC54,0xD434,0xD454,0xD453,0xD453,0xD452,0xD451,0xD4CF,0xFE53,0xFEB2,0xFEB1,0xFED1,0xFED0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFECF,0xFECF,0xFED0,0xFED0,0xFECF,0xFECF,0xFECF,0xFECF,0xFED0,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFED0,0xFED0,0xFECF,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED1,0xFED2,0xFED3,0xFED4,0xFEB5,0xFE95,0xD4F0,0xB3AD,0xAB6D,0xAB2D,0xB34F,0xB350,0xC3B2,0xCC13,0xCC14,0xD434,0xD434,0xD435,0xD435,0xD455,0xDC55,0xDC75,0xDC75,0xCBF4,0xB351,0x9A6F,0x924E,0xA2B0,0xBB72,0xD435,0xD455,0xD455,0xD455,0xD455,0xDC55,0xDC55,0xDC55,0xDC55,0xDC55,0xDC55,0xDC55,0xD435,0xDC55,0xDC34,0xD454,0xD454,0xD454,0xD454,0xD434,0xD434,0xD434,0xD434,0xD434,0xD434,0xD434,0xDC34,0xDC34,0xD434,0xD434,0xDC34,0xDC34,0xDC34,0xDC34,0xD434,0xD434,0xD434,0xD434,0xD434,0xD433,0xD452,0xD451,0xD4D0,0xFE74,0xFEB3,0xFED2,0xFED2,0xFEB2,0xFEB1,0xFEB1,0xFED1,0xFEB1,0xFEB1,0xFEB1,0xFED1,0xFED2,0xFED2,0xFED2,0xFEF3,0xFEB4,0xE553,0x8229,0x820B,0x81EC,0xAB31,0xCC14,0xD455,0xDC55,0xDC55,0xDC55,0xDC55,0xDC55,0xDC55,0xDC55,0xDC54,0xDC34,0xD433,0xD452,0xD451,0xDCF1,0xFEB5,0xFED4,0xFED4,0xFED3,0xFED3,0xFEB3,0xFED4,0xFED4,0xFED4,0xFED5,0xFED5,0xFEB6,0xFE57,0xFDD8,0xAA8F,0x99AF,0xA1D2,0xA9D3,0xA9D3,0xA9F4,0xAA15,0xAA36,0x91D6,0x8175,0x7956,0x89D8,0x9A9B,0x9A9B,0x927B,0x8A9D,0x72BF,0x317C,0x195D,0x097E,0x099E,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01DF,0x01DF,0x01DF,0x01DE,0x01DE,0x01FE,0x01FD,0x01FC,0x021B,0x02D9,0x14FC,0x1E3C,0x26FC,0x1F59,0x0734,0x0753,0x0773,0x0754,0x1FD9,0x279B,0x373C,0x4EBE,0x6DFE,0x3B36,0x4275,0x41F3,0x49F4,0x49B3,0x49B3,0x51B3,0x51D4,0x4993,0x4972,0x4972,0x4172,0x4172,0x4192,0x4172,0x4171,0x3951,0x3951,0x3951,0x3150,0x3951,0x3971,0x3150,0x3150,0x3150,0x3130,0x312F,0x3130,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x2130,0x2130,0x1910,0x1111,0x1995,0x19D6,0x19D6,0x1195,0x1111,0x1911,0x2130,0x2130,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x2130,0x1931,0x1932,0x1132,0x21B5,0x29F7,0x21D6,0x1974,0x1112,0x1911,0x2151,0x2130,0x2130,0x212F,0x212F,0x212F,0x292F,0x292F,0x212F,0x292F,0x210F,0x210F,0x292F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290F,0x290E,0x290E,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x28EF,0x28EE,0x290F,0x290F,0x292F,0x210E,0x210F,0x210E,0x210E,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x212F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290E,0x210E,0x290E,0x290F,0x290E,0x290F,0x290E,0x292F,0x290F,0x290E,0x210E,0x210F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x292F,0x210F,0x212F,0x212F,0x212F,0x292F,0x292F,0x290F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x210F,0x292F,0x292F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x292F,0x210E,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210E,0x210E,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F, + 0x20EF,0x2110,0x2110,0x2131,0x1932,0x1953,0x1173,0x19B5,0x19F6,0x21F6,0x21F6,0x1994,0x1152,0x1931,0x2131,0x2130,0x2130,0x210F,0x292F,0x292F,0x292F,0x212F,0x212F,0x292F,0x210F,0x292F,0x210F,0x290F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x210E,0x210E,0x290F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290E,0x290F,0x292F,0x292F,0x290F,0x292F,0x292F,0x210E,0x210F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x292F,0x290E,0x292F,0x292F,0x292F,0x212F,0x2130,0x1930,0x1931,0x1132,0x1152,0x1153,0x21D6,0x2A17,0x21D6,0x1995,0x1974,0x1932,0x1931,0x1930,0x2110,0x212F,0x210F,0x210F,0x290F,0x290F,0x290F,0x20EE,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290E,0x290E,0x290E,0x290F,0x292F,0x290F,0x292F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x210E,0x292F,0x292F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290E,0x290E,0x30EE,0x30CD,0x48EE,0x9A94,0xA253,0xA232,0xA232,0xA1F1,0x99CE,0x9A4D,0xF596,0xFE95,0xFEB3,0xFEB2,0xFEB1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFED3,0xFE74,0x8AC9,0x7A08,0x7A08,0x8249,0xAB6E,0xBBCF,0xC3F0,0xCC31,0xCC31,0xCC31,0xCC31,0xD451,0xD431,0xCC30,0xCC30,0xCC30,0xCC2F,0xCC6E,0xD4CE,0xFE72,0xFEB1,0xFED1,0xFEB0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEF0,0xFEF1,0xFEF1,0xFED2,0xFE93,0xC48D,0xABAC,0x9AEA,0x8A69,0x9ACB,0xBBF0,0xCC31,0xD452,0xD452,0xD452,0xD472,0xD452,0xD452,0xCC51,0xCC51,0xCC50,0xCC50,0xD470,0xCC6E,0xEDF0,0xFEB2,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFEF1,0xFEF1,0xFED2,0xFE73,0xA38A,0x8A88,0x8228,0x8A69,0x92CB,0xB38E,0xC410,0xCC31,0xD451,0xCC31,0xD451,0xD452,0xD451,0xD451,0xD451,0xCC31,0xCC30,0xCC4F,0xC44E,0xF611,0xFEB2,0xFEB1,0xFED1,0xFEB1,0xFED0,0xFED1,0xFED1,0xFED1,0xFEF1,0xFED1,0xFEF1,0xFEF1,0xFEF1,0xFEF2,0xFEF3,0xFEF3,0xFED4,0xFEB5,0xFE55,0xF5F4,0xF5F4,0xF5D4,0xE553,0xD4B1,0xC450,0xC40F,0xBBEF,0xBBEF,0xC410,0xC3F0,0xC410,0xC410,0xCC31,0xCC31,0xCC31,0xCC31,0xCC51,0xCC31,0xCC51,0xCC70,0xCC70,0xD4F1,0xE533,0x6946,0x79C9,0x79E9,0x81E9,0xAB6E,0xBBCF,0xC411,0xCC31,0xCC31,0xD452,0xD452,0xD452,0xD452,0xD452,0xD432,0xD453,0xD432,0xD452,0xCC32,0xD452,0xCC52,0xCC32,0xD432,0xD432,0xD432,0xD432,0xD452,0xD432,0xCC32,0xD452,0xD452,0xCC32,0xD432,0xCC32,0xD432,0xD432,0xD432,0xD451,0xD451,0xCC31,0xCC31,0xCC31,0xCC51,0xCC50,0xCC4F,0xCC4E,0xD4EE,0xFE93,0xFEB2,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFECF,0xFECF,0xFED0,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED1,0xFED2,0xFED2,0xFED3,0xFED3,0xFEB4,0xFE75,0xF5F4,0xF5B4,0xE533,0xCC71,0xBBCF,0xBBCF,0xBBD0,0xBBF0,0xC3F0,0xC3F0,0xC411,0xCC31,0xCC51,0xCC72,0xCC72,0xB38F,0x9AED,0x822A,0x822A,0x928B,0x9AED,0xBBB0,0xC411,0xCC32,0xCC52,0xCC52,0xCC52,0xD452,0xD452,0xD452,0xD452,0xD452,0xCC52,0xCC52,0xCC52,0xCC32,0xCC31,0xCC51,0xCC31,0xCC31,0xCC31,0xCC31,0xCC32,0xCC32,0xCC32,0xCC31,0xCC31,0xCC31,0xCC31,0xCC32,0xCC32,0xCC32,0xCC32,0xCC32,0xCC31,0xCC31,0xCC31,0xCC31,0xCC51,0xCC51,0xCC51,0xCC50,0xCC6F,0xD4CF,0xFE93,0xFED3,0xFED2,0xFED2,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFED2,0xFEF3,0xFED4,0xE592,0x7A47,0x71C7,0x71C8,0x824A,0xA34E,0xC411,0xCC52,0xCC33,0xCC53,0xD453,0xD473,0xD453,0xD452,0xD432,0xD451,0xCC30,0xD491,0xE573,0xFE75,0xFEB4,0xFED4,0xFED3,0xFED4,0xFED4,0xFED4,0xFED4,0xFEF4,0xFEF5,0xFED5,0xFED6,0xFE97,0xFDD7,0xAACF,0x99AE,0xA1B1,0xA9D2,0xA9D3,0xA9D3,0xA9F4,0xAA15,0xAA56,0x91B5,0x91B6,0x91D6,0x9A38,0xA258,0xA259,0x9A7A,0x927C,0x61DB,0x311A,0x215C,0x117E,0x099E,0x019E,0x019E,0x01BF,0x01BF,0x01DF,0x01DF,0x01DF,0x01DF,0x01FF,0x01FF,0x01FE,0x01FD,0x021C,0x023B,0x02D9,0x14FC,0x1E3C,0x26DB,0x1F59,0x0F34,0x0753,0x0773,0x0774,0x1FD9,0x277A,0x2F1C,0x4EBE,0x65BD,0x3B15,0x3A54,0x41F4,0x41B3,0x49B3,0x51D4,0x51F4,0x51B3,0x49B3,0x4992,0x4992,0x4992,0x4192,0x4192,0x4171,0x4171,0x3971,0x3971,0x3971,0x3951,0x3950,0x3150,0x3150,0x3150,0x3130,0x3130,0x312F,0x292F,0x3150,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210E,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x212F,0x2130,0x1931,0x1111,0x1995,0x19D6,0x19D6,0x1195,0x1112,0x1931,0x2150,0x2130,0x212F,0x212F,0x210F,0x212F,0x212F,0x214F,0x1930,0x1931,0x1931,0x1132,0x19B5,0x21F7,0x21F7,0x1995,0x1112,0x1911,0x2131,0x2130,0x212F,0x212F,0x212F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x210E,0x210F,0x290F,0x292F,0x210F,0x290F,0x290F,0x28EE,0x290F,0x28EE,0x290E,0x290E,0x210E,0x210E,0x210E,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x210F,0x290F,0x292F,0x210F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290E,0x292F,0x292F,0x290F,0x290E,0x292F,0x290F,0x290F,0x290F,0x20EE,0x290F,0x290F,0x290F,0x290E,0x290E,0x290F,0x210E,0x290E,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x210F,0x290F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210E,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290E,0x290E,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F, + 0x210F,0x210F,0x210F,0x2110,0x1911,0x1911,0x1973,0x1974,0x19B5,0x21F6,0x21F6,0x19D5,0x1994,0x1132,0x1932,0x2111,0x2130,0x2130,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x290F,0x292F,0x290F,0x292F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x210F,0x292F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210E,0x212F,0x212F,0x212F,0x292F,0x292F,0x292F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290E,0x292F,0x210E,0x210E,0x212F,0x212F,0x2130,0x2131,0x1931,0x1132,0x1133,0x1153,0x21F6,0x2A38,0x21D6,0x1974,0x1153,0x1132,0x1911,0x1910,0x2130,0x2130,0x212F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x210F,0x290F,0x292F,0x292F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210E,0x210F,0x290F,0x210F,0x290F,0x290F,0x210F,0x210F,0x290F,0x20EE,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290E,0x290F,0x290E,0x30EE,0x306C,0x8233,0xA273,0xA252,0xAA32,0xA211,0x99F0,0x91CD,0xB30F,0xFE77,0xFEB4,0xFEB3,0xFED2,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFED2,0xFED3,0xFEF5,0xFF16,0xFEF6,0xFEF6,0xFED6,0xFEB6,0xFE95,0xFE54,0xFE54,0xFE34,0xFE34,0xFE13,0xFE54,0xFE74,0xFE94,0xFEB4,0xFEB4,0xFEB3,0xFE91,0xFEB1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEF1,0xFEF1,0xFEF1,0xFED2,0xFEF3,0xFEF4,0xFEF5,0xFEF6,0xFED6,0xFE95,0xF5F3,0xEDB3,0xEDB3,0xF5D3,0xEDB3,0xF5D3,0xF5F3,0xFE13,0xFE13,0xFE33,0xFE73,0xFE93,0xFE72,0xFED2,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEF0,0xFEF1,0xFEF1,0xFEF2,0xFF14,0xFEF5,0xFEF6,0xFEF6,0xFEF6,0xFED5,0xFE74,0xFE54,0xFE34,0xFE34,0xF613,0xF613,0xF613,0xFE34,0xF613,0xFE33,0xFE53,0xFE94,0xFE72,0xFEB1,0xFED1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED1,0xFEF1,0xFEF1,0xFEF1,0xFEF1,0xFEF2,0xFEF2,0xFEF2,0xFEF3,0xFED4,0xFED4,0xFED4,0xFED4,0xFED5,0xFED5,0xFEF5,0xFEF5,0xFEF5,0xFED5,0xFEF6,0xFED5,0xFEB5,0xFE95,0xFE95,0xFE94,0xFE94,0xFE95,0xFE94,0xFE94,0xFE94,0xFEB5,0xFEB5,0xFED4,0xFED5,0xFEF7,0xFEF7,0xFEF7,0xFEF7,0xFEB6,0xF614,0xEDB3,0xE572,0xE572,0xE572,0xED93,0xE572,0xED93,0xED92,0xEDB3,0xEDB3,0xEDB3,0xEDB3,0xF5D3,0xF5D3,0xF5F3,0xF5D3,0xF5D3,0xF5F3,0xF5F3,0xF5D3,0xF5F3,0xF5D3,0xF5F4,0xF5F3,0xF5F4,0xF5D3,0xF5D3,0xF5D3,0xF5F3,0xF5D3,0xF5F3,0xF5D3,0xF5F3,0xF5F3,0xFE34,0xFE33,0xFE33,0xFE53,0xFE73,0xFE93,0xFEB2,0xFED2,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFED0,0xFED0,0xFED0,0xFECF,0xFED0,0xFED0,0xFECF,0xFECF,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFED2,0xFED3,0xFEB3,0xFEB4,0xFEB4,0xFEB5,0xFED5,0xFED6,0xFED6,0xFEF6,0xFED6,0xFEB5,0xFE95,0xFE75,0xF634,0xF5F3,0xEDF3,0xF614,0xFEB6,0xFED7,0xFEF7,0xFEF7,0xFEF7,0xFED7,0xFEB6,0xFE34,0xF5F4,0xEDB3,0xE593,0xE593,0xE593,0xE572,0xED93,0xED93,0xEDB3,0xEDD3,0xF5F4,0xF5F4,0xF614,0xF634,0xFE35,0xFE34,0xFE35,0xFE35,0xFE35,0xFE35,0xFE35,0xFE35,0xFE35,0xFE35,0xFE35,0xFE34,0xF634,0xF614,0xFE15,0xF615,0xF614,0xF614,0xFE34,0xF614,0xFE34,0xFE34,0xFE34,0xFE54,0xFE74,0xFE73,0xF631,0xFED3,0xFED2,0xFED2,0xFED2,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFED2,0xFEF2,0xFED2,0xFED2,0xFEF3,0xFEF4,0xFF16,0xFF17,0xFF17,0xFEF7,0xFED7,0xF635,0xE573,0xE573,0xDD53,0xDD33,0xDD32,0xE553,0xE573,0xEDB3,0xF614,0xFE95,0xFED6,0xFED5,0xFED4,0xFED4,0xFED3,0xFEF4,0xFED4,0xFED4,0xFEF4,0xFEF4,0xFEF4,0xFEF5,0xFED6,0xFE97,0xFE38,0xAACF,0x99AE,0xA1B0,0xA1B2,0xA9F3,0xB1F4,0xA9F3,0xAA14,0xAA15,0x99D4,0x9194,0x91D6,0x99F6,0xA237,0xAA38,0xA258,0xA279,0x929C,0x599A,0x311A,0x215C,0x117D,0x099E,0x099E,0x01BE,0x01BF,0x01BF,0x01DF,0x01BF,0x01DE,0x01DE,0x01FF,0x01FE,0x01FE,0x01FD,0x021C,0x023B,0x02D9,0x14FC,0x1E3C,0x26FC,0x1F59,0x0714,0x0752,0x0773,0x0F95,0x1FB9,0x1F5A,0x373C,0x4E9E,0x44BA,0x32D5,0x4275,0x4214,0x49D4,0x49D4,0x51F4,0x51D4,0x4993,0x4993,0x4993,0x4992,0x4172,0x4172,0x4192,0x4172,0x4171,0x3971,0x3971,0x3951,0x3150,0x3951,0x3150,0x3150,0x3150,0x3130,0x3130,0x312F,0x312F,0x3150,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210E,0x292F,0x290F,0x290F,0x290F,0x210E,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x210F,0x210E,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x292F,0x210F,0x210E,0x290F,0x292F,0x212F,0x212F,0x212F,0x2130,0x1931,0x1132,0x1995,0x19D7,0x21F7,0x1195,0x1111,0x1910,0x2130,0x2130,0x214F,0x294F,0x212F,0x212F,0x214F,0x212F,0x2150,0x1931,0x1932,0x1133,0x19B5,0x21F7,0x21F6,0x1974,0x1112,0x1932,0x2131,0x2130,0x210F,0x210F,0x212F,0x2930,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292E,0x292F,0x290E,0x210E,0x210E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290E,0x290E,0x292E,0x210E,0x290E,0x290E,0x292F,0x290F,0x290F,0x210F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210E,0x290F,0x292F,0x292E,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290E,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x210E,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290E,0x210E,0x292F,0x292F,0x290E,0x292F,0x292E,0x292F,0x290F,0x290F,0x290E,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210E,0x210E,0x290E,0x290F,0x290F,0x290E,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x292F, + 0x290F,0x210F,0x210F,0x2130,0x1910,0x1931,0x1931,0x1953,0x1974,0x19B5,0x21F6,0x2217,0x19D6,0x1974,0x1112,0x1911,0x2111,0x2110,0x2110,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x210F,0x290F,0x292F,0x292F,0x210F,0x210E,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210E,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x210F,0x292F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x292F,0x210F,0x292F,0x210F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x292F,0x210F,0x292F,0x290F,0x210F,0x292F,0x292F,0x292F,0x210F,0x212F,0x292F,0x292F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290E,0x290E,0x290F,0x292F,0x210F,0x2130,0x2130,0x1930,0x1931,0x1111,0x1132,0x1174,0x19D6,0x2A37,0x21F6,0x1995,0x1953,0x1932,0x1911,0x1910,0x1910,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x290F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x292F,0x210E,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290E,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x292F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290E,0x210E,0x290F,0x292F,0x210E,0x290F,0x290F,0x210E,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x210F,0x210E,0x210F,0x210F,0x290F,0x290F,0x210F,0x210E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290E,0x28EE,0x30CD,0x510E,0x9AB4,0xA253,0xA232,0xA212,0xA1F1,0x99CF,0x91ED,0xE4F4,0xFE76,0xFEB4,0xFED2,0xFED2,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFED2,0xFED2,0xFEF3,0xFEF3,0xFEF3,0xFED3,0xFED3,0xFEF3,0xFED3,0xFED3,0xFEB3,0xFED3,0xFED3,0xFED3,0xFED2,0xFED2,0xFED2,0xFED1,0xFED1,0xFEF1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEF1,0xFEF1,0xFEF1,0xFEF1,0xFEF2,0xFED2,0xFEF2,0xFED3,0xFED3,0xFED3,0xFEB3,0xFEB4,0xFEB4,0xFEB4,0xFEB4,0xFEB3,0xFEB3,0xFEB3,0xFED2,0xFED2,0xFED2,0xFED1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFECF,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFEF1,0xFEF2,0xFEF2,0xFEF2,0xFEF3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFEB3,0xFEB3,0xFEB3,0xFEB3,0xFED2,0xFED2,0xFED2,0xFED1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEF1,0xFEF1,0xFEF1,0xFEF1,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF3,0xFEF2,0xFEF2,0xFEF3,0xFEF3,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFED3,0xFED3,0xFED4,0xFEB4,0xFED4,0xFEB4,0xFEB4,0xFEB4,0xFEB4,0xFED4,0xFEB4,0xFEB4,0xFEB4,0xFEB3,0xFEB4,0xFED4,0xFEB4,0xFEB3,0xFEB3,0xFEB3,0xFEB3,0xFEB3,0xFEB3,0xFEB3,0xFED4,0xFED4,0xFEB4,0xFEB4,0xFEB4,0xFEB4,0xFEB4,0xFEB4,0xFEB4,0xFEB3,0xFEB3,0xFEB3,0xFEB3,0xFEB2,0xFEB2,0xFED2,0xFED2,0xFED2,0xFED1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFED0,0xFECF,0xFECF,0xFED0,0xFECF,0xFECF,0xFECF,0xFECF,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFED2,0xFED2,0xFED3,0xFED3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFED3,0xFED3,0xFED4,0xFED3,0xFED3,0xFEF4,0xFEF3,0xFEF4,0xFEF4,0xFEF4,0xFEF3,0xFED3,0xFED4,0xFED4,0xFEB4,0xFEB4,0xFEB4,0xFEB4,0xFEB4,0xFEB5,0xFEB4,0xFEB4,0xFED4,0xFED4,0xFEB4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED5,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED3,0xFED3,0xFED3,0xFED3,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFEB1,0xFED1,0xFED1,0xFED2,0xFED2,0xFED2,0xFED2,0xFEF2,0xFEF3,0xFF14,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFED5,0xFED5,0xFED6,0xFEB6,0xFEB6,0xFEB6,0xFEB6,0xFED5,0xFED5,0xFED4,0xFED4,0xFED4,0xFED4,0xFEF4,0xFED3,0xFEF3,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF5,0xFED6,0xFEB7,0xFE18,0xAB0F,0x99AE,0xA1B0,0xA1B1,0xA9D2,0xA9F3,0xA9F3,0xAA14,0xAA14,0xA215,0x9193,0x91D4,0x99F6,0xA216,0xA217,0xAA37,0xAA58,0xA259,0x9A9C,0x515A,0x28FA,0x213C,0x197D,0x099E,0x09BE,0x01BE,0x01BF,0x01BF,0x01BF,0x01DF,0x01DF,0x01DF,0x01FE,0x01FE,0x01FE,0x01FD,0x021C,0x023B,0x02D9,0x151C,0x1E3C,0x26FC,0x1F59,0x0714,0x0753,0x0793,0x0F95,0x1F98,0x275A,0x3F3D,0x56BE,0x3C38,0x32B5,0x3A34,0x4A14,0x49D4,0x51D4,0x51F4,0x51B4,0x4993,0x4993,0x49B3,0x4993,0x4192,0x4172,0x4192,0x4171,0x3971,0x3971,0x3971,0x3971,0x3150,0x3950,0x3150,0x3150,0x3130,0x3130,0x3130,0x3130,0x3150,0x312F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x210F,0x290F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x210E,0x292F,0x290F,0x210F,0x292F,0x210F,0x212F,0x2130,0x1931,0x1132,0x1995,0x19D6,0x19F7,0x1995,0x1111,0x1931,0x2130,0x2150,0x214F,0x212F,0x212E,0x212F,0x212F,0x212F,0x2130,0x1931,0x1932,0x1133,0x1994,0x2217,0x21D6,0x19B5,0x1112,0x1912,0x2131,0x2130,0x2130,0x2930,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x210E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x210E,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290E,0x290F,0x290F,0x290E,0x290F,0x290E,0x290E,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290E,0x292F,0x292F,0x292F,0x290F,0x290F,0x290E,0x210E,0x210E,0x290E,0x292E,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x210F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292E,0x290E,0x292E,0x292F,0x292F,0x290E,0x290E,0x292F,0x290F,0x292F,0x292F,0x292F,0x290E,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290E,0x292F,0x290E,0x292F,0x290F,0x292F,0x290E,0x292F,0x292F,0x210E,0x292F,0x292F,0x290E,0x292E,0x292E,0x292E,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x290E,0x290E,0x292F,0x290E,0x290E,0x290F,0x290E,0x290E,0x290F,0x290F,0x290E,0x290E,0x290E,0x292F,0x290E,0x290F,0x292F,0x292F, + 0x210E,0x210E,0x292F,0x2930,0x2130,0x1910,0x18F0,0x1911,0x1153,0x1974,0x19D6,0x21F6,0x2216,0x21F6,0x1974,0x1932,0x1911,0x2131,0x2130,0x2910,0x2910,0x2930,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x292F,0x290F,0x292F,0x290F,0x210F,0x212F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210F,0x290F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210E,0x210E,0x210E,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x212F,0x210F,0x290E,0x290F,0x292F,0x210F,0x210F,0x290F,0x290F,0x292F,0x210F,0x292F,0x212F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x292F,0x292F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x212F,0x2950,0x2130,0x2131,0x1911,0x1131,0x1132,0x1994,0x19D5,0x2217,0x21F6,0x19B5,0x1974,0x1932,0x1110,0x1910,0x1910,0x210F,0x210F,0x292F,0x210E,0x210E,0x210F,0x210F,0x292F,0x290F,0x210E,0x290F,0x290F,0x290F,0x290F,0x290F,0x210E,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x210E,0x290E,0x290E,0x292F,0x292F,0x210E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x210E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x210F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x210E,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290E,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x28EE,0x30CD,0x40AD,0x8253,0x9A73,0xA252,0xA232,0xA232,0xA1F1,0x99EF,0x9A2C,0xF596,0xFE95,0xFED4,0xFED3,0xFED2,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFEF2,0xFED2,0xFEF2,0xFEF2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEB2,0xFEB1,0xFED2,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEF0,0xFED0,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFED2,0xFED1,0xFED1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFECF,0xFED0,0xFED0,0xFECF,0xFECF,0xFECF,0xFECF,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED1,0xFEF1,0xFEF1,0xFED1,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEB2,0xFED1,0xFED1,0xFED1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFEF1,0xFEF2,0xFEF1,0xFEF1,0xFEF1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEB2,0xFEB2,0xFEB2,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFEEF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFED0,0xFED0,0xFECF,0xFECF,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEB2,0xFEB3,0xFEB3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFEB3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFEF3,0xFED3,0xFED2,0xFEF2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED1,0xFED2,0xFED2,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED3,0xFED3,0xFEF3,0xFEF3,0xFEF3,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFED4,0xFEB4,0xFED4,0xFED4,0xFED3,0xFED3,0xFED3,0xFED4,0xFED4,0xFED3,0xFED3,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF5,0xFED5,0xFE96,0xFDF7,0xA28E,0x91AD,0xA1B0,0xA1B1,0xA9D2,0xA9F3,0xA9F3,0xA9F3,0xB214,0xAA35,0xA215,0x91B4,0x91D4,0x99F5,0xA216,0xA216,0xAA37,0xAA38,0xA259,0x9A9C,0x48F9,0x28FA,0x215C,0x117D,0x099E,0x09BE,0x01BE,0x01BF,0x01DF,0x01DE,0x01DF,0x01DF,0x01FF,0x01FF,0x01FF,0x01FE,0x01FD,0x021C,0x023B,0x02F9,0x151C,0x1E3C,0x26FC,0x1F59,0x0714,0x0732,0x0773,0x0F95,0x1F98,0x2719,0x475D,0x6F5F,0x33F6,0x32B4,0x3A13,0x49F4,0x49B3,0x51D4,0x51B4,0x4993,0x4993,0x4972,0x4993,0x4992,0x4972,0x4172,0x4192,0x4171,0x4171,0x3971,0x3971,0x3951,0x3951,0x3150,0x3150,0x3150,0x3150,0x3150,0x292F,0x3130,0x312F,0x312F,0x292F,0x290F,0x312F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210E,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210E,0x210E,0x290F,0x210E,0x210E,0x290F,0x290F,0x20EE,0x210E,0x210F,0x290F,0x290F,0x290F,0x290F,0x210E,0x290F,0x210F,0x290F,0x210E,0x210E,0x210E,0x210E,0x290E,0x290F,0x290E,0x290E,0x292F,0x210E,0x210E,0x290E,0x290E,0x290F,0x292F,0x210F,0x210F,0x210F,0x2130,0x1910,0x1112,0x19B5,0x19D6,0x19D7,0x1174,0x1111,0x1931,0x1930,0x2150,0x212F,0x212F,0x210E,0x212E,0x212F,0x214F,0x210F,0x1930,0x1931,0x1132,0x1994,0x2A17,0x21D6,0x1995,0x1112,0x1932,0x1931,0x2131,0x2930,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290E,0x292E,0x292F,0x290E,0x290E,0x292F,0x290F,0x210F,0x292F,0x210F,0x290F,0x290F,0x292F,0x210E,0x290F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x290F,0x290F,0x28EE,0x290F,0x290F,0x290E,0x210E,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x20EE,0x290F,0x290E,0x290E,0x290F,0x290E,0x290F,0x290E,0x290F,0x292F,0x292F,0x290F,0x292F,0x290F,0x210F,0x210E,0x210E,0x210E,0x210E,0x292F,0x210E,0x292F,0x210E,0x290E,0x290E,0x290E,0x292F,0x292E,0x290E,0x292E,0x292F,0x290E,0x290E,0x290E,0x290F,0x290F,0x210F,0x290F,0x290F,0x290F,0x210E,0x290E,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x210E,0x290F,0x210E,0x210E,0x290E,0x290E,0x210E,0x290F,0x290F,0x290E,0x210E,0x290F,0x290F,0x290F,0x290E,0x292F,0x292F,0x290E,0x290E,0x292F,0x210E,0x292F,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290E,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x210E,0x210E,0x290E,0x290E,0x292F,0x290E,0x292F,0x290F, + 0x292F,0x212E,0x292F,0x2950,0x212F,0x190F,0x1910,0x1931,0x1111,0x1973,0x1174,0x19D6,0x19F6,0x19F6,0x21D6,0x1974,0x1932,0x1911,0x2111,0x2110,0x2910,0x2910,0x2910,0x2910,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x292F,0x210F,0x212F,0x210F,0x210F,0x290F,0x292F,0x210F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x212F,0x212F,0x210F,0x292F,0x210F,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x290F,0x290F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x210E,0x290F,0x292F,0x210F,0x210F,0x290F,0x210F,0x292F,0x212F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x290F,0x290F,0x210F,0x2130,0x2130,0x2131,0x1911,0x1132,0x1132,0x1174,0x19D6,0x2217,0x2217,0x1995,0x1974,0x1952,0x1931,0x1930,0x190F,0x210F,0x210F,0x292F,0x292F,0x210E,0x290F,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x290F,0x210E,0x290F,0x290F,0x292F,0x290F,0x210E,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x292F,0x210E,0x290E,0x290E,0x290E,0x292F,0x210E,0x290E,0x290E,0x210E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x210E,0x290F,0x290F,0x210E,0x290F,0x290F,0x290F,0x290F,0x290E,0x210E,0x210E,0x290F,0x290F,0x290F,0x290E,0x290E,0x210E,0x210E,0x210E,0x290F,0x290F,0x210E,0x290F,0x210F,0x210E,0x210E,0x290F,0x210E,0x290F,0x290E,0x290F,0x290F,0x210E,0x210E,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290E,0x290E,0x290E,0x28CD,0x30AD,0x48EE,0x9A94,0xA273,0xA253,0xA232,0xA212,0x99F0,0x99EE,0x9A6D,0xFE37,0xFE95,0xFED4,0xFED2,0xFED2,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFEB1,0xFED1,0xFED1,0xFED1,0xFEB1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFEB0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED0,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED1,0xFED1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFECF,0xFECF,0xFEAF,0xFEAF,0xFECF,0xFECF,0xFECF,0xFED0,0xFED0,0xFED0,0xFEAF,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFEF1,0xFED0,0xFED0,0xFED1,0xFED1,0xFED1,0xFED0,0xFED1,0xFED1,0xFED0,0xFED1,0xFED1,0xFED1,0xFED1,0xFEB1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFECF,0xFED0,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFED0,0xFED0,0xFED0,0xFEAF,0xFED0,0xFED0,0xFEB0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFEF1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED3,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED3,0xFED3,0xFED3,0xFED3,0xFEF3,0xFEF3,0xFED3,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEF2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED1,0xFED2,0xFED2,0xFED2,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED3,0xFED2,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFEF3,0xFEF4,0xFEF4,0xFEF4,0xFEF5,0xFEF6,0xFE97,0xF5B6,0xAAAE,0x99CE,0xA1B0,0xA1B1,0xA9D2,0xA9F3,0xA9F3,0xAA13,0xAA14,0xAA14,0xAA35,0x99F4,0x91B4,0x91B4,0x99D5,0xA216,0xAA16,0xAA37,0xAA38,0xA259,0x927B,0x40F8,0x291B,0x215C,0x117D,0x09BE,0x01BE,0x01BE,0x01BF,0x01DF,0x01DF,0x01DF,0x01DF,0x01FF,0x01FF,0x01FF,0x01FE,0x01FD,0x021C,0x023B,0x02D9,0x151C,0x265C,0x26FC,0x1F59,0x0714,0x0732,0x0F94,0x1775,0x1F78,0x2F19,0x4F5D,0x66DF,0x33B6,0x3273,0x4214,0x49D3,0x49B3,0x51B4,0x51B4,0x4973,0x4993,0x4993,0x4992,0x4972,0x4972,0x4172,0x4192,0x4171,0x4171,0x3971,0x3951,0x3971,0x3950,0x3950,0x3150,0x3150,0x3150,0x312F,0x3130,0x312F,0x312F,0x312F,0x292F,0x312F,0x292F,0x290F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290E,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x210E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210E,0x210F,0x210F,0x210E,0x290E,0x290E,0x290E,0x210E,0x210E,0x210F,0x290F,0x290F,0x290F,0x290F,0x290E,0x210F,0x290F,0x290F,0x210E,0x210E,0x292F,0x292F,0x290F,0x290F,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x292F,0x210F,0x212F,0x2130,0x1910,0x1132,0x1995,0x19D6,0x19B6,0x1995,0x1111,0x1910,0x1930,0x212F,0x212F,0x212F,0x212E,0x212F,0x294F,0x212F,0x210F,0x1930,0x1931,0x1952,0x1154,0x21F7,0x2217,0x1195,0x1133,0x1132,0x1932,0x2131,0x2930,0x2930,0x210F,0x210F,0x210E,0x292F,0x292F,0x292F,0x210E,0x210E,0x210E,0x292E,0x292E,0x292E,0x292F,0x292F,0x290F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210E,0x210E,0x290E,0x290E,0x290E,0x292F,0x292F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x292F,0x210E,0x290E,0x290F,0x290E,0x290F,0x290F,0x28EF,0x290F,0x290F,0x290F,0x290F,0x28EF,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x28EE,0x290E,0x290E,0x210E,0x290F,0x290F,0x290E,0x210E,0x290E,0x290F,0x290F,0x290F,0x290F,0x210F,0x20EE,0x210E,0x210E,0x290E,0x292F,0x210E,0x210E,0x20EE,0x290E,0x290E,0x290F,0x290F,0x292F,0x290E,0x292F,0x290E,0x290E,0x290E,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290E,0x290E,0x292F,0x292E,0x210E,0x290F,0x290F,0x290F,0x290F,0x290E,0x290F,0x290E,0x292F,0x292F,0x290E,0x290E,0x292F,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290E,0x290F,0x290E,0x290E,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x292F,0x292F, + 0x212E,0x212E,0x212F,0x292F,0x212F,0x210F,0x18EF,0x1910,0x1910,0x1911,0x1973,0x1974,0x19B5,0x21F6,0x21D6,0x19B5,0x1974,0x1932,0x1932,0x1911,0x18F0,0x20F0,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2930,0x210F,0x290F,0x292F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x292F,0x212F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x292F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x290F,0x292F,0x292F,0x292F,0x210F,0x212F,0x212F,0x210F,0x292F,0x210F,0x292F,0x290F,0x292F,0x212F,0x212F,0x210F,0x210F,0x210F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x290F,0x292F,0x292F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x292F,0x292F,0x290F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2130,0x1931,0x1931,0x1132,0x1133,0x1174,0x19D5,0x21F6,0x21D6,0x1994,0x1133,0x1932,0x1931,0x1930,0x190F,0x210F,0x210F,0x212F,0x292F,0x212F,0x292E,0x212E,0x212E,0x212E,0x212E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x210E,0x292F,0x290F,0x210F,0x210F,0x290F,0x210F,0x290F,0x210E,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210E,0x290F,0x292F,0x210E,0x210E,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x210E,0x210E,0x210E,0x290E,0x210E,0x210E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290F,0x290F,0x210E,0x290E,0x210E,0x290E,0x290F,0x290F,0x290E,0x210E,0x210E,0x290E,0x290E,0x290F,0x210E,0x290F,0x290F,0x210E,0x210E,0x210E,0x210E,0x210E,0x290E,0x290E,0x292F,0x210E,0x290E,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x292F,0x292F,0x290E,0x290E,0x28EE,0x30CE,0x38CD,0x6990,0x9212,0xA233,0xAA53,0xA232,0xA211,0x99F0,0x99EE,0xA2CE,0xFDD6,0xFE95,0xFED4,0xFEF3,0xFEF2,0xFED2,0xFED2,0xFED1,0xFED1,0xFED1,0xFEB1,0xFED1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFED0,0xFEB0,0xFEB0,0xFED0,0xFED0,0xFEAF,0xFECF,0xFECF,0xFECF,0xFEAF,0xFECF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED1,0xFEB0,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEAF,0xFED0,0xFECF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED0,0xFED0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB1,0xFED1,0xFED1,0xFED1,0xFEB1,0xFEB0,0xFEB0,0xFED1,0xFED1,0xFEB0,0xFEB0,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED0,0xFEB0,0xFEB0,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFED1,0xFED1,0xFED1,0xFEB1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFECF,0xFECF,0xFECF,0xFECF,0xFEAF,0xFECF,0xFECF,0xFECF,0xFECF,0xFECF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFECF,0xFECF,0xFECF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFECF,0xFECF,0xFEAF,0xFEAF,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFED0,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFEB1,0xFEB1,0xFEB1,0xFED1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB2,0xFEB1,0xFEB1,0xFEB2,0xFEB2,0xFED2,0xFEB2,0xFED2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFED2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEB1,0xFEB1,0xFEB1,0xFEB2,0xFEB2,0xFEB2,0xFED2,0xFED2,0xFEB2,0xFED2,0xFEB2,0xFEB2,0xFEB2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF5,0xFEF6,0xFE97,0xF596,0xAA8E,0x99AD,0xA1B0,0xA9D1,0xA9F2,0xA9F3,0xA9F3,0xAA13,0xAA14,0xAA14,0xAA34,0x91D4,0x89B3,0x89D4,0x91D5,0x99F5,0xA216,0xAA16,0xAA37,0xA238,0xA259,0x821A,0x38D8,0x291B,0x215C,0x119D,0x099E,0x01BE,0x01BF,0x01BF,0x01DF,0x01DF,0x01DF,0x01FF,0x021F,0x01FF,0x01FE,0x021E,0x021D,0x023D,0x025B,0x02F9,0x1D3C,0x267C,0x26FC,0x1F39,0x06F4,0x0712,0x1794,0x1F75,0x2778,0x371A,0x5F7F,0x55FC,0x3375,0x3A74,0x4A55,0x51F4,0x51D4,0x51B4,0x51B4,0x5193,0x5193,0x51B3,0x49B3,0x4972,0x4992,0x4172,0x4191,0x4171,0x4171,0x3971,0x3971,0x3971,0x3150,0x3130,0x3150,0x3150,0x3150,0x312F,0x3150,0x312F,0x312F,0x3150,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210E,0x290F,0x290F,0x290F,0x210E,0x292F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x210E,0x290F,0x290F,0x290F,0x290E,0x290E,0x290F,0x210E,0x210F,0x210F,0x290F,0x290E,0x210E,0x210E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x210E,0x210E,0x290E,0x290E,0x292F,0x292F,0x212F,0x210F,0x2110,0x1910,0x1132,0x1194,0x19B6,0x19B6,0x1195,0x1111,0x1931,0x2130,0x212F,0x212F,0x212F,0x210E,0x212F,0x294F,0x214F,0x212F,0x1930,0x1910,0x1132,0x1153,0x21F6,0x2237,0x19F6,0x0953,0x0912,0x1932,0x1931,0x2951,0x2130,0x210F,0x210F,0x210E,0x290F,0x292F,0x292F,0x210F,0x292F,0x292E,0x292E,0x290E,0x210E,0x292F,0x292F,0x210E,0x210F,0x210F,0x292F,0x210F,0x210F,0x210E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x210E,0x210E,0x290F,0x290F,0x292F,0x290E,0x290E,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x20EE,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x20EE,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292F,0x292F,0x290F,0x292F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x210F,0x210E,0x210E,0x290E,0x290E,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x210E,0x290E,0x290E,0x290E,0x290E,0x210E,0x210F,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290F,0x290E,0x290E,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x210E,0x210E,0x210E,0x290F,0x210E,0x290E,0x290F,0x290F,0x290F,0x290F,0x210E,0x290F,0x290E,0x290E,0x290F,0x290F,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290F,0x290F, + 0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x1910,0x1910,0x1931,0x1153,0x1994,0x19B5,0x19D6,0x21F6,0x21D5,0x1974,0x1953,0x1111,0x18F1,0x18F0,0x18F0,0x2131,0x2131,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x2130,0x2130,0x210F,0x210F,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x212F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x210F,0x290F,0x210F,0x2930,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x2930,0x290F,0x212F,0x210F,0x210F,0x210F,0x210F,0x2110,0x2110,0x2131,0x1911,0x1111,0x1112,0x1132,0x1174,0x19D5,0x21F6,0x21F6,0x1995,0x1133,0x1932,0x1911,0x1910,0x190F,0x190F,0x210F,0x212F,0x294F,0x212F,0x212E,0x210E,0x210E,0x212E,0x212E,0x292F,0x292E,0x210E,0x290E,0x292F,0x290E,0x210E,0x290F,0x210E,0x290F,0x290F,0x210E,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290E,0x290E,0x210E,0x292F,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x292F,0x290E,0x210E,0x290E,0x290E,0x210E,0x210E,0x210E,0x210E,0x290E,0x290F,0x290E,0x290E,0x210E,0x290E,0x210E,0x290F,0x290F,0x290E,0x290E,0x290E,0x210E,0x290F,0x290E,0x292F,0x210E,0x290F,0x290F,0x290E,0x210E,0x290E,0x210E,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292E,0x292E,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292E,0x292E,0x290E,0x290E,0x28EE,0x30CD,0x48EE,0x79D1,0x9A33,0xA253,0xAA53,0xA232,0x99F1,0x99F0,0x91ED,0x9A8D,0xFDF6,0xFE96,0xFED4,0xFED3,0xFED2,0xFED2,0xFED2,0xFED1,0xFED1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEB0,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEAF,0xFEB0,0xFEB0,0xFEAF,0xFEAF,0xFED0,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFED0,0xFED0,0xFEB0,0xFEB0,0xFED0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEAF,0xFED0,0xFECF,0xFED0,0xFED0,0xFED0,0xFEAF,0xFECF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFED0,0xFEB0,0xFED1,0xFED0,0xFED1,0xFEB0,0xFED1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB2,0xFEB1,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB1,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFED2,0xFED2,0xFEB2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEB2,0xFED2,0xFED2,0xFED2,0xFEB2,0xFEB2,0xFEB1,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFED2,0xFED2,0xFEB2,0xFED2,0xFEB2,0xFED2,0xFED2,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFEB3,0xFED3,0xFED3,0xFED3,0xFED4,0xFED4,0xFEF4,0xFEF4,0xFEF4,0xFEF5,0xFED6,0xFEB7,0xF596,0xB2EF,0x99CE,0xA1B0,0xA9D1,0xA9D2,0xA9F3,0xA9F3,0xAA14,0xAA14,0xAA14,0xAA34,0x9A14,0x89B3,0x89B4,0x89D4,0x89B4,0x99F5,0xA216,0xAA37,0xAA37,0xA238,0x9A39,0x79D9,0x38D9,0x291B,0x195C,0x117D,0x019E,0x01BE,0x01BF,0x01DF,0x01DF,0x01FF,0x01FF,0x01FF,0x021F,0x021F,0x021F,0x021E,0x021E,0x023C,0x025B,0x02F9,0x151C,0x267C,0x26FC,0x1F39,0x0714,0x0712,0x1774,0x1F55,0x3778,0x36B9,0x6F5F,0x4519,0x3314,0x4254,0x4A14,0x51D4,0x59D4,0x51B4,0x59D4,0x59B4,0x51B3,0x4992,0x4992,0x4992,0x4992,0x4192,0x4171,0x4171,0x3971,0x3971,0x3970,0x3970,0x3950,0x3950,0x3150,0x3150,0x3150,0x312F,0x312F,0x312F,0x312F,0x312F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290E,0x290E,0x292F,0x292F,0x210E,0x290F,0x290F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290E,0x290E,0x290F,0x290F,0x290E,0x290E,0x290F,0x290E,0x292F,0x290E,0x290E,0x290F,0x290E,0x292F,0x290E,0x292F,0x290E,0x290E,0x292F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290F,0x290F,0x290E,0x210E,0x290E,0x290E,0x290F,0x290F,0x290F,0x290E,0x290E,0x210E,0x212E,0x212E,0x292F,0x290E,0x292F,0x212F,0x210F,0x2130,0x1930,0x1132,0x1174,0x19D6,0x19D6,0x1995,0x1131,0x1931,0x2130,0x210F,0x212F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x1930,0x1930,0x1931,0x1132,0x19B5,0x2237,0x2217,0x1195,0x0912,0x1112,0x1911,0x2131,0x2130,0x2930,0x212F,0x292F,0x210E,0x290F,0x292F,0x292F,0x210E,0x292E,0x290E,0x292E,0x290E,0x292E,0x290E,0x292F,0x292F,0x212F,0x210F,0x292F,0x210F,0x292F,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290E,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x292F,0x210E,0x210E,0x290E,0x290E,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290F,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x210E,0x210E,0x210E,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x290F,0x292F,0x290F,0x290F,0x210F,0x210E,0x210E,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x210E,0x290E,0x292F,0x290E,0x292F,0x210E,0x290F,0x210F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290E,0x290E,0x292F,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290E,0x290F,0x292F,0x290F,0x290E,0x290E,0x292F,0x290F,0x292F,0x210E,0x210E,0x290F,0x290F,0x290F,0x210E,0x290F,0x290E,0x290E,0x290F,0x290F,0x290E,0x290F,0x290E,0x290E,0x290E,0x290F,0x290E,0x290E,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x292F, + 0x212F,0x212F,0x210E,0x210E,0x210E,0x212F,0x2950,0x2150,0x2150,0x1910,0x1910,0x1931,0x1132,0x1174,0x19D5,0x19D6,0x2216,0x19D5,0x1994,0x1153,0x1111,0x1931,0x1932,0x1931,0x2151,0x2172,0x2151,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x212F,0x212F,0x2110,0x2110,0x212F,0x210F,0x2110,0x2110,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x210F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x210F,0x2110,0x2130,0x2130,0x2131,0x1911,0x1932,0x1932,0x1132,0x1133,0x1174,0x19D6,0x2217,0x2216,0x1994,0x1152,0x1131,0x1911,0x1910,0x1910,0x2130,0x212F,0x210F,0x212F,0x212E,0x292F,0x292E,0x210E,0x210E,0x212E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292F,0x292F,0x292F,0x290E,0x292F,0x290F,0x290F,0x290F,0x210F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290E,0x292F,0x292E,0x292E,0x210E,0x290E,0x210E,0x290E,0x292E,0x290E,0x290E,0x292F,0x292E,0x290E,0x290E,0x290E,0x290F,0x290F,0x292F,0x290E,0x292F,0x292F,0x292F,0x210F,0x290E,0x292F,0x292F,0x290E,0x292F,0x290E,0x292F,0x290E,0x290E,0x290E,0x292F,0x292F,0x292F,0x290E,0x290E,0x290E,0x290F,0x290E,0x292F,0x290E,0x292F,0x290E,0x292F,0x290E,0x292F,0x292F,0x292F,0x292F,0x290F,0x290E,0x292F,0x290E,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292E,0x292F,0x292E,0x290E,0x292F,0x292F,0x292F,0x290E,0x292E,0x292F,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x28EE,0x30EE,0x38CE,0x510E,0x8A13,0x9A53,0xAA73,0xAA53,0xA212,0x99F1,0x99F0,0x91EE,0x9A4C,0xED55,0xFE96,0xFED5,0xFED3,0xFED3,0xFED2,0xFED2,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEAF,0xFEB0,0xFEB0,0xFEB0,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEAF,0xFEB0,0xFEAF,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFE90,0xFEB0,0xFE90,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFE90,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEAF,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEAF,0xFEAF,0xFED0,0xFEAF,0xFEB0,0xFEAF,0xFEB0,0xFEB0,0xFEAF,0xFEB0,0xFEB0,0xFEB0,0xFEAF,0xFEAF,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEAF,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB1,0xFEB1,0xFEB0,0xFEB1,0xFEB0,0xFEB1,0xFED1,0xFEB1,0xFEB1,0xFED1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFED1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFED2,0xFED2,0xFED2,0xFEB2,0xFED2,0xFED2,0xFED2,0xFEB2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEB2,0xFEB2,0xFED2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFEB2,0xFED2,0xFEB2,0xFED2,0xFEB2,0xFED2,0xFED2,0xFED3,0xFED2,0xFED3,0xFED3,0xFEB3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED4,0xFEF4,0xFEF4,0xFEF4,0xFEF5,0xFED6,0xFEB7,0xFE18,0xA28E,0x99AE,0xA1B0,0xA1B1,0xA9F2,0xA9F3,0xA9F3,0xA1F3,0xA214,0xAA14,0xAA35,0xA235,0x91F4,0x89F4,0x89D4,0x81B4,0x81B4,0x91F5,0xA216,0xAA37,0xAA37,0xA238,0x923A,0x6178,0x38F9,0x293B,0x197D,0x119D,0x019E,0x01BE,0x01BF,0x01DF,0x01DF,0x01FF,0x01FF,0x01FF,0x021F,0x021F,0x021F,0x021E,0x021D,0x023D,0x027B,0x02F9,0x14FB,0x267D,0x26FC,0x1F39,0x0EF4,0x0F12,0x1F74,0x2735,0x3F38,0x4EBA,0x5E3B,0x2B94,0x3293,0x4213,0x49F4,0x59D4,0x51B4,0x5193,0x5994,0x59B4,0x5193,0x4972,0x4992,0x4972,0x4992,0x4171,0x4191,0x4171,0x4171,0x3970,0x3971,0x3970,0x3950,0x3950,0x312F,0x3150,0x3150,0x312F,0x314F,0x312F,0x314F,0x312F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292E,0x292E,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290E,0x290F,0x290F,0x290F,0x292F,0x290F,0x290E,0x290F,0x292F,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292F,0x292F,0x290E,0x292F,0x292F,0x290E,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290F,0x290F,0x290F,0x292F,0x292E,0x292E,0x292E,0x212E,0x292E,0x292E,0x292F,0x292F,0x210F,0x210F,0x1910,0x1932,0x1994,0x19D6,0x19D6,0x1995,0x1131,0x1930,0x2130,0x212F,0x212F,0x294F,0x212F,0x212F,0x292F,0x212F,0x212F,0x2130,0x1930,0x1931,0x1952,0x1994,0x2216,0x2237,0x19D6,0x1154,0x1112,0x10F1,0x1911,0x2131,0x2950,0x292F,0x292F,0x290F,0x210E,0x210F,0x292F,0x292F,0x292F,0x290E,0x292E,0x292E,0x292E,0x290E,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x292F,0x292E,0x292E,0x292E,0x290E,0x290E,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290E,0x292F,0x292E,0x292E,0x290F,0x292F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290E,0x290F,0x290F,0x290F,0x290F,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x210E,0x210E,0x212F,0x210E,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x292F,0x290F,0x290F,0x290E,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290E,0x290E,0x292F,0x292F,0x290E,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290F,0x290F,0x292F,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290F,0x290E,0x292F,0x292F,0x292F,0x292F,0x290F,0x290E,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290E,0x290F,0x290F,0x290E,0x290E,0x292F,0x292F,0x292F,0x290E,0x292F,0x292F,0x290E,0x290E,0x290F,0x290E,0x292F,0x292F,0x290F,0x290F,0x290E,0x290E,0x290F,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x290F,0x290E,0x290F,0x290E,0x290E,0x292F,0x292F, + 0x212F,0x212E,0x210E,0x210E,0x212E,0x212F,0x212F,0x2970,0x2150,0x190F,0x1910,0x1911,0x1111,0x1152,0x1173,0x19B5,0x21D6,0x21F6,0x19D5,0x19B4,0x1153,0x1152,0x1112,0x1132,0x1131,0x1131,0x1931,0x1931,0x1931,0x2131,0x2130,0x2130,0x2130,0x1930,0x2131,0x2130,0x2130,0x2130,0x2130,0x1930,0x2130,0x1930,0x2130,0x2130,0x1930,0x2130,0x2130,0x2130,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2131,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2131,0x2130,0x2130,0x2130,0x2130,0x1910,0x2130,0x2130,0x2130,0x1930,0x2130,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1910,0x2130,0x2130,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x1910,0x1931,0x1931,0x1911,0x1912,0x1112,0x1133,0x1994,0x21F6,0x2216,0x21F6,0x1994,0x1973,0x1131,0x1911,0x1910,0x1910,0x2130,0x212F,0x210F,0x210F,0x292F,0x292F,0x292E,0x210E,0x212E,0x210E,0x210E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292F,0x292F,0x292F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290E,0x292F,0x292F,0x292F,0x290E,0x290E,0x292E,0x290E,0x292F,0x290E,0x290E,0x292E,0x292E,0x292E,0x292F,0x292E,0x292E,0x290E,0x292F,0x290F,0x290E,0x292F,0x292F,0x290E,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292E,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292F,0x290E,0x292F,0x290E,0x290E,0x290E,0x292F,0x290E,0x290F,0x292F,0x292F,0x292E,0x292E,0x292E,0x292E,0x292E,0x292F,0x290F,0x290F,0x292F,0x292E,0x292E,0x292F,0x292E,0x292E,0x292E,0x290E,0x292F,0x292E,0x292E,0x292E,0x292E,0x292F,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x28EE,0x30EE,0x38AD,0x6170,0x9253,0xA294,0xAA73,0xA233,0xA212,0x99F1,0x99D0,0x91EE,0x922C,0xD492,0xFE77,0xFEB6,0xFEB4,0xFEB3,0xFEB2,0xFEB2,0xFED2,0xFEB2,0xFEB2,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFEB0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFED1,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB1,0xFEB1,0xFEB1,0xFEB0,0xFEB0,0xFEB1,0xFEB1,0xFED1,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB1,0xFEB1,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFEB0,0xFEB0,0xFEB0,0xFED0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFEB0,0xFED0,0xFEB0,0xFED0,0xFEB0,0xFEB0,0xFED0,0xFED0,0xFED1,0xFED0,0xFED0,0xFED0,0xFEB1,0xFED1,0xFED1,0xFED1,0xFED1,0xFEB1,0xFED1,0xFED1,0xFED1,0xFEB1,0xFEB1,0xFEB1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFED2,0xFED2,0xFED2,0xFED2,0xFEB2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEB2,0xFEB2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED3,0xFED2,0xFED2,0xFED2,0xFED3,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEB2,0xFED2,0xFED3,0xFED2,0xFED3,0xFED3,0xFED2,0xFED2,0xFED2,0xFED3,0xFEB2,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED4,0xFED4,0xFEF4,0xFEF5,0xFEF5,0xFED6,0xFEB7,0xFDD7,0xAACE,0x99EF,0xA1B0,0xA1D1,0xA9D2,0xA9F3,0xAA13,0xA9F3,0xAA13,0xA214,0xA214,0xA235,0x91D4,0x89D4,0x89F5,0x81D4,0x81B4,0x81B4,0x91F6,0xA216,0xAA37,0xA217,0xA239,0x8A1A,0x5938,0x391A,0x293C,0x197D,0x099D,0x01BE,0x01DF,0x01DF,0x01DF,0x01FF,0x01FF,0x01FF,0x01FF,0x021F,0x023F,0x023F,0x023E,0x023E,0x025D,0x027B,0x02F9,0x0CBB,0x265D,0x26DC,0x273A,0x0ED4,0x0EF2,0x2754,0x2F14,0x4718,0x569A,0x5559,0x2AF3,0x3A52,0x4A13,0x51F4,0x59B4,0x5193,0x5193,0x59B4,0x5193,0x5193,0x4992,0x4992,0x4992,0x4992,0x4192,0x4192,0x4171,0x4171,0x3971,0x3971,0x3970,0x3950,0x3950,0x3150,0x3150,0x3150,0x312F,0x312F,0x312F,0x312F,0x312F,0x310F,0x310F,0x290F,0x290F,0x290F,0x290E,0x292F,0x290F,0x290F,0x290E,0x292F,0x290E,0x292E,0x292E,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290E,0x290E,0x292F,0x292F,0x290E,0x290E,0x290F,0x292F,0x292E,0x292E,0x292F,0x292E,0x292E,0x292E,0x292E,0x210E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292F,0x290F,0x290E,0x292F,0x292F,0x292E,0x292E,0x290E,0x290E,0x290E,0x292F,0x292F,0x210F,0x212F,0x1910,0x1932,0x1994,0x19B6,0x19D6,0x1995,0x1111,0x1930,0x2130,0x212F,0x212F,0x294F,0x212F,0x210E,0x212F,0x210F,0x212F,0x2130,0x1930,0x1931,0x1932,0x1953,0x19D5,0x2237,0x21F6,0x19B5,0x1154,0x1112,0x1911,0x1911,0x2951,0x2930,0x292F,0x290F,0x210F,0x210E,0x210F,0x292F,0x210E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290F,0x292F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292E,0x290E,0x292F,0x292E,0x290E,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x292F,0x292E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290E,0x290F,0x290F,0x290E,0x292E,0x292E,0x292E,0x210E,0x292E,0x210E,0x212E,0x210E,0x210E,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292F,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x292F,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292F,0x290E,0x290E,0x292F,0x292F,0x290E,0x292F,0x292F,0x290E,0x290E,0x292F,0x290F,0x292F,0x292F,0x290E,0x290F,0x290F,0x292F,0x292E,0x292E,0x290E,0x292F,0x292F,0x292F,0x292F,0x292E,0x292E,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290E,0x290E,0x290E,0x290F,0x290E,0x292F,0x292F,0x292F,0x292F,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290F, + 0x212E,0x212E,0x212E,0x210E,0x210E,0x210E,0x292F,0x210F,0x292F,0x212F,0x2130,0x2110,0x1931,0x1911,0x1932,0x1153,0x1994,0x19B5,0x19B5,0x19B5,0x19B5,0x1174,0x0932,0x0912,0x0911,0x1111,0x1131,0x1111,0x1111,0x1931,0x1110,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1910,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1930,0x1930,0x1930,0x1931,0x1931,0x1930,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1951,0x1931,0x1931,0x1931,0x1930,0x1930,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1930,0x1931,0x1931,0x1930,0x1931,0x1931,0x1931,0x1930,0x1930,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1112,0x1112,0x1133,0x1174,0x21D5,0x21F6,0x19D5,0x1173,0x1132,0x1131,0x1931,0x1910,0x2110,0x210F,0x212F,0x212F,0x292F,0x290E,0x292E,0x290E,0x210E,0x210E,0x210E,0x212E,0x210E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290F,0x292F,0x210E,0x290F,0x292F,0x290E,0x290E,0x292F,0x292F,0x292F,0x292F,0x292F,0x292E,0x290E,0x290E,0x290E,0x290F,0x292F,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290E,0x290E,0x292E,0x290E,0x290E,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290F,0x290E,0x290E,0x290F,0x290F,0x290F,0x292E,0x290E,0x290F,0x290E,0x292F,0x290E,0x290F,0x290F,0x292F,0x290E,0x290F,0x290E,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x292F,0x290E,0x290E,0x290F,0x292F,0x292F,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292F,0x292F,0x292E,0x292E,0x292F,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292F,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x30CE,0x40CE,0x6170,0x9253,0xA253,0xA253,0xAA53,0xA232,0xA211,0x99F0,0x91EF,0x920D,0xAB0F,0xE514,0xFE36,0xFE95,0xFEB4,0xFEB3,0xFEB3,0xFEB3,0xFEB2,0xFEB2,0xFEB2,0xFEB1,0xFEB1,0xFEB1,0xFEB1,0xFED1,0xFEB1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFEF1,0xFED1,0xFED1,0xFED0,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED0,0xFED0,0xFED0,0xFED0,0xFED0,0xFED1,0xFED0,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED0,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED1,0xFED2,0xFED2,0xFED2,0xFEF2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEF2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED3,0xFED3,0xFED2,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFED3,0xFEF3,0xFED3,0xFED3,0xFEF3,0xFED3,0xFED3,0xFED3,0xFED3,0xFEF4,0xFED4,0xFED4,0xFED4,0xFED4,0xFEF4,0xFED5,0xFEF5,0xFED7,0xFE98,0xFDB8,0xA24E,0x99CE,0xA1D1,0xA9D2,0xA9F3,0xA9F3,0xA9F3,0xAA14,0xAA14,0xAA14,0xA214,0xA235,0x9214,0x81D4,0x81D4,0x81D4,0x81D5,0x81B4,0x89B4,0x9A16,0xA216,0xA217,0xA238,0x9A59,0x81FA,0x4918,0x391A,0x295C,0x197D,0x099E,0x01BE,0x01BF,0x01DF,0x01FF,0x01FF,0x01FF,0x021F,0x021F,0x021F,0x023F,0x023F,0x025E,0x025E,0x025D,0x027C,0x02FA,0x045A,0x261C,0x26DC,0x273A,0x0EB4,0x0EB1,0x2F33,0x36F4,0x4EF7,0x7F3C,0x3C14,0x32B2,0x4232,0x5213,0x59F4,0x61D4,0x59B4,0x5993,0x59B4,0x59B3,0x51B3,0x4992,0x5192,0x4992,0x4992,0x4171,0x4191,0x4171,0x4171,0x3971,0x3950,0x3970,0x3950,0x3150,0x3150,0x3130,0x3130,0x312F,0x314F,0x312F,0x312F,0x312F,0x312F,0x312F,0x312F,0x290F,0x292F,0x292F,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290E,0x290E,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290E,0x290F,0x290E,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x210E,0x292E,0x290E,0x292E,0x290E,0x292E,0x290E,0x210E,0x290E,0x290E,0x292F,0x290F,0x290F,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x210E,0x290E,0x292E,0x292F,0x292F,0x210F,0x210F,0x210F,0x1910,0x1931,0x1994,0x19D6,0x21F7,0x1995,0x1111,0x1910,0x2130,0x2930,0x212F,0x212F,0x210E,0x212F,0x210E,0x292F,0x212F,0x212F,0x212F,0x1910,0x1931,0x1952,0x1994,0x19D5,0x19F6,0x21F6,0x19B5,0x1153,0x1112,0x18F1,0x2131,0x2930,0x2950,0x290F,0x292F,0x292F,0x210F,0x210F,0x292F,0x292F,0x210E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290E,0x290E,0x292E,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290F,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x292F,0x290E,0x290F,0x292F,0x290E,0x292F,0x290F,0x292E,0x292E,0x290E,0x290E,0x212E,0x210E,0x290E,0x290E,0x210E,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x210F,0x210F,0x2930,0x2130,0x2930,0x212F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290E,0x292E,0x290E,0x292F,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290F,0x290F,0x290E,0x290E,0x290F,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292F,0x290E,0x292F,0x292F,0x292E,0x290E,0x290E,0x290E,0x292F,0x292E,0x290E,0x290E,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292E,0x290E,0x290E,0x290E,0x292F, + 0x212E,0x212E,0x212E,0x212E,0x292E,0x290E,0x292E,0x210E,0x292F,0x212F,0x212F,0x2930,0x2130,0x1911,0x1911,0x1932,0x1953,0x1994,0x19D5,0x19D6,0x11B5,0x19D5,0x1194,0x1153,0x0932,0x0911,0x1111,0x1132,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1111,0x1131,0x1131,0x1131,0x1131,0x1932,0x1131,0x1952,0x1952,0x1932,0x1932,0x1952,0x1932,0x1932,0x1131,0x1932,0x1932,0x1932,0x1132,0x1132,0x1931,0x1932,0x1131,0x1131,0x1932,0x1931,0x1931,0x1931,0x1131,0x1931,0x1931,0x1131,0x1131,0x1131,0x1131,0x1131,0x1931,0x1952,0x1931,0x1952,0x1952,0x1932,0x1952,0x1952,0x1932,0x1932,0x1952,0x1952,0x1932,0x1932,0x1952,0x1931,0x1952,0x1931,0x1951,0x1951,0x1931,0x1952,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1931,0x1931,0x1932,0x1932,0x1952,0x1931,0x1931,0x1931,0x1951,0x1931,0x1931,0x1931,0x1951,0x1951,0x1931,0x1931,0x1951,0x1951,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1931,0x1951,0x1931,0x1952,0x1951,0x1951,0x1952,0x1952,0x1931,0x1932,0x1932,0x1932,0x1952,0x1952,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1931,0x1932,0x1931,0x1931,0x1932,0x1132,0x1132,0x1132,0x1112,0x1112,0x1954,0x21D6,0x21D5,0x21D5,0x1973,0x1132,0x1931,0x1910,0x1910,0x190F,0x212F,0x210F,0x212F,0x210F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210E,0x292E,0x292E,0x210E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x292E,0x292F,0x292F,0x292F,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290E,0x290E,0x290E,0x290F,0x290E,0x290E,0x290E,0x292F,0x292E,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x292E,0x292F,0x292F,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292F,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292F,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x30EE,0x30CE,0x40CD,0x6150,0x8A53,0xA273,0xA273,0xA253,0xA232,0x9A11,0x99F1,0x99F0,0x91EE,0x9A4D,0xAB2E,0xE533,0xFE76,0xFE76,0xFE95,0xFE94,0xFE94,0xFEB3,0xFE93,0xFEB2,0xFEB2,0xFEB2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF1,0xFEF1,0xFEF2,0xFEF2,0xFEF1,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFED2,0xFED2,0xFEF2,0xFEF2,0xFEF2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF1,0xFEF1,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEF2,0xFED2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFED2,0xFED2,0xFEF2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEF2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEF2,0xFED2,0xFED2,0xFED2,0xFEF2,0xFEF2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEF2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFED2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF3,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF2,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF4,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFED5,0xFED5,0xFED5,0xFEB5,0xFED6,0xFEB6,0xFE97,0xFE78,0xE4F5,0x9A4E,0x99CF,0xA1B1,0xA1B2,0xA9F3,0xA9F3,0xAA13,0xA9F3,0xA9F3,0xAA14,0xAA34,0xA235,0x91F4,0x81B3,0x79D4,0x79D4,0x79D4,0x79D4,0x81B4,0x89D5,0x9A16,0xA216,0xA217,0xA238,0x9A5A,0x71DA,0x40F9,0x313B,0x215C,0x117D,0x099E,0x01BE,0x01DF,0x01DF,0x01FF,0x01FF,0x021F,0x023F,0x023F,0x023F,0x025F,0x025F,0x025E,0x027E,0x027D,0x027C,0x02FA,0x03F9,0x25DD,0x2EDD,0x273A,0x0EB4,0x16D2,0x2F33,0x36B4,0x5ED7,0x7EDB,0x3B72,0x3A72,0x4212,0x5A14,0x61F4,0x61D4,0x61D4,0x59B3,0x59B3,0x5193,0x51B3,0x51B3,0x51B2,0x4992,0x4171,0x4192,0x4171,0x4171,0x4171,0x3950,0x3950,0x3950,0x3950,0x3150,0x3130,0x3150,0x312F,0x312F,0x312F,0x312F,0x312F,0x312F,0x312F,0x312F,0x290E,0x292F,0x292F,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290F,0x292F,0x290F,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290F,0x290E,0x290F,0x290E,0x290E,0x210E,0x210E,0x290E,0x290E,0x290E,0x210E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x290E,0x292E,0x290E,0x292E,0x290F,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290F,0x210E,0x292F,0x210F,0x1910,0x1131,0x1994,0x19B6,0x19D6,0x19B5,0x1111,0x1910,0x2130,0x2930,0x212F,0x212F,0x212F,0x212F,0x292F,0x212F,0x294F,0x210F,0x212F,0x2130,0x1930,0x1931,0x1152,0x1173,0x19D5,0x19D6,0x21D6,0x1994,0x1953,0x1112,0x1911,0x2110,0x2130,0x2930,0x292F,0x210F,0x210F,0x210F,0x292F,0x292F,0x210E,0x290F,0x290E,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290F,0x292F,0x290E,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290F,0x290E,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x210E,0x210E,0x292E,0x212E,0x292E,0x290E,0x290E,0x292F,0x212F,0x210F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x292F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292F, + 0x212E,0x212E,0x292E,0x290E,0x290E,0x292E,0x20EE,0x290E,0x290E,0x292F,0x292F,0x212F,0x2950,0x2130,0x1910,0x1931,0x1952,0x1973,0x19B4,0x19D5,0x19F5,0x19D5,0x19B5,0x19B4,0x1194,0x1994,0x1993,0x1173,0x1973,0x1972,0x1952,0x1952,0x1152,0x1152,0x1152,0x1152,0x1972,0x1152,0x1953,0x1152,0x1972,0x1152,0x1152,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1152,0x1953,0x1952,0x1952,0x1952,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1952,0x1952,0x1972,0x1952,0x1152,0x1972,0x1972,0x1952,0x1952,0x1972,0x1952,0x1952,0x1152,0x1972,0x1152,0x1952,0x1952,0x1952,0x1952,0x1973,0x1952,0x1952,0x1972,0x1953,0x1953,0x1952,0x1972,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1972,0x1973,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1972,0x1152,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1952,0x1973,0x1952,0x1972,0x1952,0x1952,0x1952,0x1973,0x1972,0x1973,0x1952,0x1973,0x1973,0x1973,0x1952,0x1952,0x1952,0x1953,0x1953,0x1953,0x1953,0x1952,0x1953,0x1953,0x1953,0x1953,0x1973,0x1952,0x1952,0x1973,0x1953,0x1973,0x1973,0x1994,0x1994,0x21F6,0x21D5,0x21D5,0x1973,0x1952,0x1111,0x1931,0x1910,0x2130,0x212F,0x212F,0x212F,0x210E,0x210E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x210E,0x210E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x292F,0x292F,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x292F,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x292F,0x290F,0x292F,0x290E,0x290E,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x210E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292F,0x292F,0x292F,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x28EE,0x28EE,0x30CD,0x38AD,0x6170,0x9294,0x9A53,0xA253,0xA232,0xA232,0xA212,0x9A11,0x9A10,0x9A0F,0x920E,0x920C,0x9A8D,0xD493,0xED55,0xFE16,0xFE36,0xFE55,0xFE75,0xFE94,0xFEB4,0xFEB3,0xFED3,0xFED3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFF13,0xFF13,0xFF13,0xFF13,0xFF13,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFF14,0xFEF3,0xFEF3,0xFEF4,0xFEF4,0xFEF3,0xFEF3,0xFEF4,0xFEF4,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFF13,0xFEF3,0xFF14,0xFF14,0xFF14,0xFF14,0xFEF4,0xFEF4,0xFF14,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF13,0xFF13,0xFF13,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFF13,0xFEF3,0xFEF3,0xFF13,0xFF14,0xFF14,0xFEF4,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFF13,0xFF13,0xFEF3,0xFF14,0xFF14,0xFEF4,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF13,0xFEF3,0xFEF3,0xFF13,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFF14,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFF14,0xFEF3,0xFEF3,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFF14,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF4,0xFEF4,0xFEF3,0xFEF3,0xFEF4,0xFEF4,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFF14,0xFEF3,0xFEF4,0xFF14,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF4,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFEF3,0xFF14,0xFF13,0xFF14,0xFF13,0xFF13,0xFF13,0xFF13,0xFF13,0xFEF3,0xFEF3,0xFEF3,0xFF13,0xFF14,0xFF13,0xFF14,0xFF13,0xFF13,0xFF13,0xFF13,0xFEF3,0xFEF3,0xFEF3,0xFF13,0xFF13,0xFF13,0xFF13,0xFF13,0xFF13,0xFF13,0xFEF3,0xFF14,0xFEF4,0xFEF4,0xFF14,0xFF14,0xFF14,0xFF14,0xFEF4,0xFEF4,0xFF14,0xFF14,0xFF14,0xFF14,0xFEF4,0xFEF4,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF14,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF35,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFF15,0xFEF5,0xFF15,0xFF15,0xFF15,0xFF16,0xFF16,0xFF16,0xFF16,0xFF16,0xFF16,0xFF16,0xFEF6,0xFEF6,0xFEF6,0xFED6,0xFEB6,0xFEB6,0xFE97,0xFE98,0xFE58,0xF577,0xBB71,0x91CD,0x99D0,0xA1D1,0xA9D2,0xA9F3,0xA9D3,0xA9F3,0xA9F3,0xA9F3,0xAA14,0xA214,0xA235,0x9A35,0x81D4,0x79D4,0x79D4,0x79D4,0x79D4,0x79D4,0x81B4,0x91F6,0x9A16,0xA216,0xA217,0xA258,0x9A9B,0x617A,0x391A,0x315C,0x217D,0x117D,0x099E,0x01DF,0x01DF,0x01FF,0x01FF,0x021F,0x023F,0x025F,0x025F,0x025F,0x027F,0x027F,0x027F,0x029E,0x029D,0x029C,0x02DA,0x0399,0x155B,0x36FE,0x2F5B,0x0EB4,0x1ED2,0x2EF3,0x3EB4,0x6ED8,0x6DD8,0x4332,0x4AB3,0x5233,0x5A14,0x59D3,0x61B3,0x61D4,0x59B3,0x5993,0x5192,0x5192,0x5192,0x51B2,0x4992,0x4992,0x4171,0x4171,0x4171,0x4171,0x3950,0x3950,0x3971,0x3950,0x3150,0x3970,0x3150,0x312F,0x312F,0x312F,0x312F,0x312F,0x312F,0x310F,0x290F,0x292F,0x292E,0x292F,0x292F,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290F,0x290F,0x292F,0x290E,0x290F,0x290F,0x290E,0x290E,0x290E,0x292F,0x292F,0x290E,0x290E,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210E,0x290E,0x210E,0x290E,0x292E,0x292F,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x292F,0x212F,0x2130,0x1930,0x1932,0x1994,0x19B6,0x19D6,0x19B5,0x1111,0x1910,0x210F,0x212F,0x212F,0x294F,0x212F,0x210E,0x210E,0x210E,0x292F,0x212F,0x212F,0x212F,0x2130,0x1930,0x1111,0x1152,0x1994,0x21D5,0x21D6,0x21D5,0x21B5,0x1133,0x1932,0x1911,0x1910,0x2130,0x2130,0x212F,0x210F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290E,0x290E,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290E,0x290F,0x290F,0x292F,0x292F,0x290E,0x290E,0x292E,0x210E,0x292E,0x290E,0x290E,0x292F,0x292F,0x292F,0x292F,0x292F,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x210E,0x210E,0x212E,0x292E,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2130,0x1910,0x1931,0x2131,0x1931,0x1910,0x1930,0x1930,0x2110,0x2130,0x212F,0x212F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292F,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292F,0x292F,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292F,0x292F,0x290E,0x292E,0x292E,0x292E,0x290E,0x292F,0x290E,0x290E, + 0x210E,0x210E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x292F,0x212F,0x210F,0x2110,0x2131,0x1931,0x1952,0x1152,0x1994,0x19D4,0x19F5,0x21F5,0x21F5,0x21F5,0x21F5,0x21F5,0x29F5,0x2A16,0x2A15,0x29F5,0x29F5,0x29F5,0x21F5,0x29F5,0x21D5,0x21F5,0x21D5,0x29F5,0x21D5,0x21F5,0x21D5,0x29F5,0x21D5,0x21D5,0x21D5,0x29F5,0x29D5,0x29D5,0x21D5,0x21D5,0x21D5,0x21D5,0x21D5,0x21D4,0x21D5,0x21D5,0x21D5,0x29D5,0x21D5,0x21D5,0x21D5,0x21D5,0x21B4,0x21D5,0x21D4,0x21D5,0x21B4,0x21D4,0x21D4,0x21B4,0x21B4,0x21D4,0x21B4,0x21D4,0x21D4,0x21D4,0x21B4,0x21B4,0x21B4,0x21D4,0x21B4,0x21D4,0x21B4,0x21B4,0x21B4,0x21B4,0x21B4,0x21B4,0x21B4,0x21B4,0x21B4,0x21D4,0x21B4,0x21B4,0x21B4,0x21B4,0x21B4,0x21B4,0x21B4,0x21D4,0x21B4,0x21B4,0x21B4,0x21D4,0x21D4,0x21B4,0x21B4,0x21B4,0x21B4,0x21D4,0x21B4,0x21D4,0x21B4,0x21D4,0x21B4,0x21D4,0x21B4,0x21D4,0x21B4,0x21D4,0x21D4,0x21D4,0x21B4,0x21D4,0x21B4,0x21B4,0x21B4,0x21D4,0x21B4,0x21D4,0x21B4,0x21B4,0x21B4,0x21D4,0x21B4,0x21D4,0x21B4,0x21B4,0x21B4,0x21D5,0x21B4,0x21B4,0x21B4,0x21D4,0x21B4,0x21D4,0x21B4,0x21D4,0x21B4,0x21D5,0x21B4,0x21D5,0x21D5,0x21D5,0x21D5,0x2A15,0x29F5,0x29F5,0x29F5,0x29F6,0x29F5,0x2A16,0x2A16,0x29F5,0x21D5,0x1973,0x1952,0x1931,0x1910,0x2110,0x210F,0x210F,0x210F,0x210F,0x212E,0x210E,0x210E,0x210E,0x290E,0x290E,0x210E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290E,0x290E,0x292F,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290E,0x290E,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x28EE,0x28EE,0x30CD,0x38AD,0x616F,0x9294,0x9A73,0x9A53,0xA232,0xA232,0xA232,0x9A11,0x9A11,0x9A11,0x9A10,0x920E,0x920D,0x924C,0x9A8C,0xA2ED,0xC3F0,0xD4B2,0xE553,0xF5F5,0xFE56,0xFEB7,0xFEF8,0xFEF8,0xFEF8,0xFF18,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFF18,0xFEF8,0xFF18,0xFF18,0xFEF8,0xFEF8,0xFF18,0xFEF8,0xFEF8,0xFF18,0xFEF8,0xFEF8,0xFF18,0xFF18,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFEF8,0xFF18,0xFEF8,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFF18,0xFF18,0xFEF8,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFEF8,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFEF8,0xFF18,0xFF18,0xFF18,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFF18,0xFEF8,0xFEF8,0xFEF8,0xFF18,0xFF18,0xFF18,0xFF18,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFF18,0xFEF8,0xFEF8,0xFEF8,0xFF18,0xFEF8,0xFF18,0xFF18,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFF18,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFEF8,0xFF18,0xFF18,0xFEF8,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFEF8,0xFF18,0xFF18,0xFF18,0xFEF8,0xFF18,0xFF18,0xFEF8,0xFEF8,0xFEF8,0xFF18,0xFF18,0xFEF8,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFEF8,0xFF18,0xFF18,0xFEF8,0xFEF8,0xFEF8,0xFF18,0xFF18,0xFF18,0xFF18,0xFF18,0xFF19,0xFF19,0xFF19,0xFF18,0xFF18,0xFF18,0xFEF8,0xFEF8,0xFF18,0xFF18,0xFF19,0xFF19,0xFF18,0xFF18,0xFF19,0xFF19,0xFF19,0xFEF9,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFEF9,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFEF9,0xFF1A,0xFF19,0xFF1A,0xFF19,0xFF1A,0xFF19,0xFF19,0xFF19,0xFF19,0xFEF9,0xFF19,0xFF19,0xFF19,0xFF19,0xFF19,0xFEF9,0xFEF9,0xFEF9,0xFEF9,0xFEF9,0xFF19,0xFEF9,0xFEF9,0xFEF9,0xFF1A,0xFF1A,0xFEFA,0xFF1A,0xFF1A,0xFEFA,0xFEFA,0xFF1A,0xFF1A,0xFED9,0xFEB9,0xFE78,0xFE58,0xFDD6,0xED35,0xD473,0xBB70,0xA2AE,0x99ED,0x99CE,0xA1D0,0xA1B1,0xA9D2,0xA9D2,0xA9F3,0xA9F3,0xA9F3,0xA1F3,0xA1F4,0xA214,0xA235,0x91F4,0x81B3,0x79B4,0x79D4,0x79D4,0x79D4,0x79D4,0x79D4,0x81B4,0x91F6,0x9A16,0xA217,0xA237,0xA259,0x9A9B,0x5159,0x311A,0x295C,0x197D,0x097D,0x01BE,0x01DF,0x01FF,0x01FF,0x021F,0x021F,0x023F,0x027F,0x027F,0x027F,0x027F,0x029F,0x029F,0x02BE,0x02BD,0x029C,0x02DB,0x0359,0x14FB,0x3F1F,0x2F5B,0x16B4,0x1692,0x36F3,0x4673,0x6E97,0x6515,0x4B32,0x5292,0x6274,0x59F3,0x61D3,0x61B3,0x61D4,0x59B3,0x5193,0x5192,0x5192,0x51B2,0x4992,0x4992,0x4992,0x4171,0x4171,0x4171,0x4171,0x3971,0x3950,0x3970,0x3950,0x3950,0x3150,0x312F,0x314F,0x312F,0x312F,0x312F,0x312F,0x312F,0x310F,0x290F,0x292F,0x292E,0x292F,0x292E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290E,0x290F,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x210E,0x292E,0x210E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292F,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x292F,0x292F,0x210F,0x2130,0x1910,0x1931,0x1994,0x19B6,0x19D6,0x21B5,0x1111,0x1910,0x2130,0x212F,0x212F,0x294F,0x210E,0x210E,0x212E,0x212E,0x292F,0x292F,0x212F,0x210F,0x212F,0x1910,0x1910,0x1931,0x1152,0x1994,0x21D5,0x21D6,0x21D6,0x1994,0x1132,0x1111,0x1911,0x2130,0x2130,0x2130,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x210F,0x210F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x292F,0x290E,0x292F,0x290E,0x290E,0x290E,0x292F,0x292E,0x290E,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290E,0x290E,0x290E,0x290E,0x210E,0x290E,0x290E,0x292E,0x212E,0x292E,0x212E,0x292F,0x292F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1910,0x1931,0x1931,0x1932,0x1132,0x1152,0x1132,0x1952,0x1131,0x1111,0x1910,0x1910,0x2130,0x2130,0x2930,0x292F,0x292F,0x292F,0x290F,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290F,0x292F,0x290F,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x292F,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292F,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E, + 0x210E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210E,0x292F,0x292F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1931,0x1152,0x1973,0x21B4,0x21D4,0x2A15,0x21F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x21D5,0x29F5,0x29F5,0x21F5,0x21F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x2A16,0x29F5,0x29F5,0x29F5,0x29D5,0x29F5,0x29F5,0x29D5,0x29F5,0x29F5,0x29F5,0x29D5,0x29D5,0x29D5,0x29D5,0x29D5,0x21D5,0x21D5,0x29F5,0x21D5,0x29D5,0x21D4,0x29D5,0x21D5,0x29F5,0x21D4,0x21D4,0x21F5,0x21D5,0x29F5,0x29F5,0x29D4,0x29F5,0x29D5,0x29F5,0x29D5,0x29D5,0x29D4,0x29F4,0x21D4,0x29D4,0x29D4,0x29D5,0x29F5,0x29D5,0x29D4,0x29F5,0x29D4,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x21F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x21F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x21F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x29F5,0x2A16,0x2A16,0x29F5,0x29F5,0x29F5,0x29F5,0x3216,0x3216,0x29F5,0x29F5,0x29F5,0x29D5,0x1994,0x29F5,0x2A15,0x29F5,0x1952,0x1911,0x1910,0x1910,0x2110,0x210F,0x210F,0x210E,0x20EE,0x210E,0x210E,0x210E,0x210E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292F,0x292E,0x290E,0x290E,0x290E,0x292F,0x290E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x20EE,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290F,0x290E,0x290E,0x290F,0x290F,0x290E,0x290E,0x290E,0x290F,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x28ED,0x30CD,0x30AC,0x512E,0x9294,0x9A73,0x9A53,0xA252,0xA232,0x9A32,0x9A32,0x9A11,0x9A11,0x9A10,0x9A10,0x920F,0x91EE,0x91ED,0x89CC,0x818B,0x798B,0x796A,0x7149,0x7149,0x6929,0x6949,0x6929,0x6929,0x6928,0x6949,0x6928,0x6949,0x6928,0x6928,0x6929,0x6949,0x6929,0x6949,0x6929,0x6949,0x6928,0x6949,0x6928,0x6928,0x6928,0x6948,0x6928,0x6949,0x6929,0x6949,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6928,0x6929,0x6929,0x6929,0x6929,0x6929,0x6928,0x6928,0x6929,0x6928,0x6928,0x6928,0x6928,0x6928,0x6929,0x6929,0x6928,0x6929,0x6929,0x6929,0x6929,0x6928,0x6928,0x6928,0x6928,0x6928,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6928,0x6949,0x6929,0x6929,0x6928,0x6929,0x6928,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6928,0x6929,0x6928,0x6928,0x6929,0x6928,0x6929,0x6929,0x6929,0x6928,0x6928,0x6928,0x6929,0x6929,0x6929,0x6928,0x6928,0x6928,0x6929,0x6928,0x6929,0x6928,0x6949,0x6929,0x6949,0x6929,0x6929,0x6928,0x6928,0x6929,0x6928,0x6948,0x6928,0x6928,0x6928,0x6928,0x6928,0x6928,0x6929,0x6929,0x6929,0x6929,0x6929,0x6928,0x6929,0x6929,0x6929,0x6929,0x6949,0x6928,0x6949,0x6928,0x6948,0x6949,0x6949,0x6949,0x6949,0x6929,0x6929,0x6929,0x6929,0x6928,0x6949,0x6949,0x6929,0x6929,0x6929,0x6928,0x6928,0x6929,0x6949,0x6928,0x6949,0x6929,0x6949,0x6929,0x6949,0x6929,0x6949,0x6929,0x6929,0x6929,0x6929,0x6928,0x6928,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6949,0x6949,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6928,0x6929,0x6929,0x6929,0x6928,0x6929,0x6929,0x6929,0x6128,0x6949,0x6929,0x6929,0x6928,0x6929,0x6929,0x6929,0x6929,0x6928,0x6928,0x6929,0x6928,0x6929,0x6929,0x6929,0x6928,0x6928,0x6928,0x6929,0x6928,0x6929,0x6929,0x6949,0x6928,0x6949,0x6929,0x6929,0x6929,0x6929,0x6929,0x6949,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6909,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6949,0x6929,0x6929,0x6929,0x6929,0x6929,0x6929,0x6909,0x6909,0x6929,0x7129,0x7129,0x7129,0x7129,0x7129,0x7129,0x7129,0x7109,0x7129,0x7109,0x7109,0x7109,0x7109,0x7109,0x7109,0x7109,0x7109,0x7109,0x7109,0x70E9,0x7909,0x7109,0x70E9,0x70E9,0x7109,0x7909,0x7909,0x7109,0x7109,0x7109,0x7909,0x7909,0x70E9,0x70E9,0x7909,0x7109,0x7909,0x70E9,0x7909,0x7109,0x7109,0x7109,0x7109,0x70E9,0x7109,0x7109,0x7109,0x7109,0x7109,0x7109,0x7109,0x7109,0x7109,0x7109,0x7109,0x70E9,0x70E9,0x790A,0x790A,0x78E9,0x790A,0x790A,0x790A,0x790A,0x812A,0x812B,0x894B,0x894C,0x916D,0x918E,0x99AF,0xA1B0,0xA1D1,0xA9D2,0xA9D2,0xA9D3,0xA9D3,0xA9F3,0xAA14,0xAA14,0xAA14,0xA214,0xA214,0x9214,0x81B3,0x79B4,0x79B4,0x79D4,0x79D4,0x79F4,0x81F5,0x81B4,0x89D5,0x91D5,0x99F6,0xA217,0xA238,0xA259,0x929B,0x4119,0x293B,0x217D,0x197D,0x099E,0x01BE,0x01FF,0x021F,0x021F,0x021F,0x023F,0x025F,0x029F,0x029F,0x029F,0x029F,0x029F,0x02BF,0x02BE,0x02BE,0x02BD,0x02DB,0x033A,0x0C7A,0x473F,0x373B,0x1694,0x26B2,0x36D3,0x4E94,0x7657,0x5C73,0x5B53,0x62B3,0x6A94,0x6214,0x61B3,0x61B3,0x61B3,0x59B3,0x5192,0x5193,0x5192,0x51B3,0x51B2,0x4992,0x4992,0x4191,0x4171,0x4171,0x4171,0x4171,0x3970,0x3950,0x3950,0x3970,0x3150,0x3150,0x314F,0x312F,0x314F,0x312F,0x312F,0x314F,0x310F,0x290F,0x312F,0x290E,0x312F,0x292F,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x292F,0x292E,0x290E,0x292F,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292F,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292F,0x292F,0x212F,0x210F,0x1910,0x1111,0x1974,0x21D6,0x19D6,0x19B5,0x1132,0x1930,0x2130,0x212F,0x212F,0x292F,0x212E,0x292E,0x292E,0x292E,0x292E,0x292F,0x212F,0x212F,0x212F,0x2130,0x1910,0x1910,0x1931,0x1132,0x1974,0x21D6,0x21D6,0x21F6,0x1974,0x1132,0x1111,0x1911,0x2130,0x2130,0x2930,0x290F,0x210F,0x292F,0x210F,0x210F,0x292F,0x292F,0x290F,0x2930,0x212F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x210F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x292F,0x292E,0x292F,0x292F,0x212F,0x212F,0x212F,0x292F,0x2950,0x2130,0x2130,0x2130,0x2130,0x1930,0x1931,0x1932,0x1152,0x1994,0x19D5,0x19F5,0x1A16,0x2236,0x21F5,0x19B4,0x1952,0x1952,0x1910,0x1910,0x2110,0x210F,0x212F,0x210F,0x290F,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292F,0x290E,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x292E,0x292F,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292F,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292F,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x210E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E, + 0x210E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292F,0x292F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1931,0x1931,0x1931,0x1952,0x1952,0x1972,0x1972,0x1973,0x1952,0x1952,0x1952,0x1973,0x2173,0x2173,0x1973,0x1973,0x1993,0x1993,0x1973,0x1973,0x1973,0x1993,0x1973,0x1973,0x1973,0x1973,0x1973,0x1973,0x1973,0x1973,0x1973,0x2173,0x1973,0x2173,0x2173,0x2173,0x2173,0x2193,0x2173,0x1973,0x1973,0x2173,0x1973,0x2173,0x1973,0x1973,0x1973,0x1973,0x2173,0x1973,0x1973,0x2173,0x2173,0x1973,0x1973,0x1973,0x1973,0x1973,0x1973,0x1973,0x1973,0x1973,0x1972,0x2173,0x1972,0x2173,0x1973,0x2173,0x2173,0x1972,0x1972,0x1973,0x2173,0x2173,0x1972,0x2173,0x1972,0x1972,0x1972,0x1973,0x1972,0x1972,0x1973,0x1973,0x1973,0x2193,0x1973,0x1993,0x1993,0x1993,0x1993,0x1993,0x1993,0x1973,0x1973,0x1993,0x1993,0x1993,0x1993,0x1993,0x2193,0x1993,0x1973,0x1993,0x1993,0x1993,0x1993,0x2193,0x1973,0x2193,0x2173,0x2193,0x2193,0x2193,0x1973,0x2193,0x2193,0x2193,0x2193,0x2193,0x1973,0x1993,0x1993,0x2193,0x2173,0x2193,0x1973,0x2173,0x2173,0x1993,0x1973,0x1973,0x1973,0x1973,0x1973,0x1953,0x1953,0x1973,0x1973,0x1953,0x1952,0x1952,0x1952,0x1932,0x1932,0x1110,0x1910,0x1910,0x2110,0x210F,0x210F,0x210F,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290F,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x28ED,0x30ED,0x30AC,0x48ED,0x8A53,0x9A94,0x9A73,0x9A53,0x9A52,0xA252,0xA232,0x9A32,0x9A31,0x9A11,0x9A11,0x9A11,0x9A10,0x91F0,0x91F0,0x91F0,0x91CF,0x91CF,0x91CF,0x89AF,0x89AF,0x89AF,0x89AF,0x89AF,0x89AF,0x89AF,0x89AF,0x89AE,0x898E,0x818E,0x818F,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x81AF,0x81AE,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x898E,0x898E,0x898E,0x898E,0x898E,0x89AE,0x89AE,0x89AE,0x898E,0x898E,0x898E,0x898F,0x898E,0x89AE,0x89AE,0x89AF,0x898F,0x898E,0x898E,0x898E,0x898E,0x898E,0x818E,0x818E,0x818E,0x818E,0x818E,0x898E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x89AE,0x89AE,0x898E,0x898E,0x89AE,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818F,0x818F,0x818F,0x818F,0x818E,0x818E,0x818E,0x818E,0x818E,0x898E,0x898E,0x898E,0x898E,0x818E,0x818E,0x89AE,0x89AE,0x89AE,0x89AE,0x898E,0x898E,0x89AE,0x898E,0x898E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818E,0x898E,0x898E,0x818E,0x898E,0x818E,0x818E,0x898E,0x898E,0x818E,0x898E,0x818E,0x818E,0x818E,0x818E,0x818E,0x818F,0x818E,0x898E,0x898E,0x898F,0x898F,0x898F,0x89AF,0x898F,0x898F,0x898F,0x818F,0x818F,0x898F,0x898E,0x898F,0x898F,0x898F,0x898F,0x898F,0x898F,0x898F,0x898F,0x898F,0x898F,0x898F,0x818F,0x818F,0x818F,0x816E,0x816E,0x816E,0x816E,0x816F,0x896F,0x896F,0x896E,0x896E,0x896F,0x896F,0x896F,0x896F,0x896F,0x896F,0x916F,0x918F,0x916F,0x916F,0x916F,0x916F,0x998F,0x998F,0x996F,0x998F,0x998F,0x996F,0x996F,0x998F,0x996F,0x9990,0x996F,0x996F,0x996F,0x996F,0x996F,0xA18F,0x996F,0x996F,0x996F,0x996F,0x996F,0x996F,0x996F,0xA16F,0x996F,0x996F,0x996F,0x996F,0x996F,0x994F,0x994F,0x996F,0x994F,0x994F,0x994F,0x994F,0x914F,0x996F,0x994F,0x994F,0x914F,0x996F,0x914F,0x996F,0x994F,0x996F,0x994F,0x9970,0x994F,0x996F,0x996F,0x9970,0x9970,0xA170,0x9970,0xA170,0xA190,0xA191,0xA191,0xA191,0xA1B1,0xA9B1,0xA9D2,0xA9D2,0xB1F3,0xA9F3,0xB1F3,0xB1F3,0xAA13,0xAA14,0xAA14,0xA214,0xA235,0x89B3,0x81B3,0x79B3,0x79B4,0x79B4,0x79D4,0x79D4,0x81F4,0x81D4,0x89D4,0x91F5,0x91B4,0x99F6,0xA237,0xA258,0x9A79,0x825B,0x4119,0x293B,0x217D,0x117D,0x099E,0x01DE,0x021F,0x023F,0x023F,0x023F,0x025F,0x027F,0x029F,0x029F,0x029F,0x029F,0x02BF,0x02BF,0x02DF,0x02DE,0x02DD,0x02DC,0x02FA,0x03D9,0x4F3F,0x373C,0x1674,0x26B3,0x3ED3,0x5694,0x7616,0x53D2,0x6333,0x6AB3,0x7294,0x69F3,0x61D3,0x61B3,0x59B3,0x59B3,0x59B3,0x51B3,0x51B2,0x49B2,0x4992,0x4992,0x4991,0x4171,0x4171,0x4191,0x4171,0x4171,0x3950,0x3970,0x3950,0x3950,0x3150,0x3150,0x314F,0x314F,0x312F,0x312F,0x312F,0x314F,0x310F,0x312F,0x290E,0x312F,0x312F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290F,0x290E,0x292F,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x292E,0x290F,0x210F,0x212F,0x1910,0x1111,0x1974,0x19B6,0x19D6,0x19D5,0x1132,0x1931,0x2130,0x212F,0x212F,0x212F,0x292E,0x212E,0x292E,0x290E,0x292E,0x292E,0x212E,0x212F,0x212F,0x212F,0x212F,0x1910,0x1911,0x1111,0x1953,0x1974,0x21D6,0x21D6,0x21D6,0x1974,0x1132,0x1111,0x1110,0x1930,0x2110,0x2110,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x210F,0x212F,0x212F,0x210F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x290F,0x290F,0x292F,0x210F,0x292F,0x210F,0x292F,0x292F,0x292F,0x290F,0x290F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x212F,0x292F,0x212F,0x212F,0x214F,0x212F,0x2130,0x2110,0x2130,0x1930,0x1931,0x1931,0x1952,0x1953,0x19B4,0x19F6,0x1A16,0x1A17,0x1A17,0x1A37,0x2216,0x21F6,0x21D5,0x1994,0x1132,0x10F1,0x1910,0x2110,0x212F,0x292F,0x292F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292F,0x292F,0x292F,0x290E,0x292F,0x292F,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292F,0x292E,0x292E,0x292E,0x292E,0x292F,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E, + 0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292F,0x210F,0x212F,0x210F,0x212F,0x2130,0x2130,0x2130,0x1930,0x1910,0x1931,0x1931,0x1910,0x1911,0x1911,0x1911,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1931,0x1931,0x1911,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1911,0x1911,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1910,0x1931,0x1911,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1932,0x1931,0x1931,0x1932,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1911,0x1911,0x1911,0x1931,0x1931,0x1932,0x1931,0x1931,0x1931,0x10F0,0x18F0,0x18EF,0x190F,0x2110,0x210F,0x212F,0x210F,0x210E,0x210F,0x290E,0x292E,0x290E,0x290E,0x290E,0x210E,0x210E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292F,0x290F,0x290E,0x290F,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292F,0x290E,0x292F,0x290E,0x292F,0x290E,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290D,0x28ED,0x28CD,0x30CD,0x304B,0x616F,0x8A53,0x9A94,0x9A73,0x9A52,0xA252,0xA252,0xA252,0xA252,0xA252,0x9A32,0x9A31,0x9A31,0x9A31,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x9210,0x9A11,0x9211,0x9211,0x9211,0x9211,0x9211,0x9211,0x9211,0x9211,0x9211,0x91F0,0x9211,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x9211,0x91F1,0x9211,0x91F1,0x9211,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x9211,0x9211,0x91F1,0x91F0,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91D0,0x91F0,0x91D0,0x91F0,0x91F0,0x91F0,0x91D0,0x91F0,0x91F0,0x91F0,0x91F0,0x9211,0x91F1,0x9A11,0x91F1,0x9211,0x91F0,0x9A11,0x99F1,0x99F1,0x99F1,0x99F1,0x99F1,0x99F1,0x99F1,0x99F1,0x99F1,0x91F1,0x9A11,0x9A11,0x91F1,0x9211,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F0,0x91F1,0x91F1,0x9211,0x91F1,0x91F1,0x91F1,0x99F1,0x91F1,0x91F1,0x9211,0x9A11,0x9210,0x9211,0x9A11,0x9210,0x9A11,0x9A11,0x9211,0x9211,0x9211,0x91F1,0x91F1,0x9211,0x9211,0x91F1,0x91F1,0x9A11,0x91F1,0x99F1,0x99F1,0x9A11,0x9211,0x9211,0x9211,0x9211,0x91F1,0x91F1,0x99F1,0x91F1,0x91F1,0x91F1,0x91F0,0x91F0,0x91D0,0x91F0,0x91F0,0x91F0,0x91F0,0x91F0,0x91F1,0x91F0,0x91F0,0x91F1,0x91F1,0x9211,0x9211,0x9211,0x9A11,0x9A11,0x91F1,0x9211,0x9211,0x9211,0x9211,0x91F1,0x91F1,0x91F1,0x9211,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91D0,0x91F1,0x91F0,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x9211,0x9211,0x9211,0x9211,0x9211,0x9211,0x9A11,0x91F1,0x9211,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x91F1,0x9211,0x9211,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x91F1,0x9A11,0x9A11,0x91F1,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x99F1,0x99F1,0x9A11,0x9A11,0x9A11,0x9A12,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x9A11,0x91F1,0x99F1,0x99F1,0x99F1,0x91F1,0x99F1,0x99F1,0x99F1,0x99D1,0x99F1,0x99D1,0x99D1,0x99D1,0x99D1,0x99D1,0x99D1,0x99D1,0xA1D1,0xA1D1,0xA1B1,0xA1B1,0xA1B1,0xA1D1,0xA1B1,0xA1D1,0xA1D1,0xA1B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA991,0xA9B1,0xA991,0xA991,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B2,0xA9B2,0xA9B1,0xA9B1,0xA9B1,0xA9B1,0xA9B2,0xA9B1,0xA9B1,0xA9B2,0xA9B1,0xA9B2,0xA9B2,0xA9B1,0xA9B2,0xA9B2,0xA9B1,0xA9B1,0xA9B2,0xA9B2,0xA9B2,0xA9B2,0xA9B2,0xA9B2,0xA9B2,0xA9B2,0xA9B2,0xA9B2,0xA9D2,0xA9D2,0xA9D2,0xA9D2,0xA9D2,0xB1D3,0xB1F3,0xB214,0xAA14,0xA9F4,0xA1F4,0x99F4,0x89B3,0x81B3,0x81B3,0x79D4,0x79D4,0x79D4,0x79D4,0x79D4,0x79D4,0x81D4,0x89F5,0x91F5,0x91D5,0x99F6,0xA237,0xA258,0x9A7A,0x7A3A,0x3939,0x297C,0x199D,0x11BE,0x09DE,0x021F,0x023F,0x025F,0x025F,0x027F,0x029F,0x029F,0x02BF,0x02BF,0x02BF,0x02BF,0x02DF,0x02DF,0x02FF,0x02FE,0x02DE,0x02FC,0x02FB,0x0399,0x3EBF,0x371C,0x1E54,0x1E52,0x3E92,0x5674,0x75B5,0x5B91,0x5AB2,0x6A53,0x7254,0x6A14,0x69D4,0x61B3,0x5992,0x5993,0x59D3,0x59B3,0x51B2,0x4992,0x4971,0x4992,0x4171,0x4191,0x4171,0x4171,0x4171,0x4171,0x3950,0x3950,0x3950,0x3950,0x3950,0x314F,0x312F,0x312F,0x312F,0x312F,0x314F,0x314F,0x312F,0x310E,0x290E,0x290E,0x312F,0x290E,0x290E,0x290E,0x292E,0x290E,0x292F,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292F,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292F,0x210F,0x210F,0x1910,0x1111,0x1973,0x21F6,0x19D6,0x19B5,0x1153,0x1131,0x1910,0x2130,0x212F,0x292F,0x292E,0x292E,0x290E,0x292E,0x290E,0x210E,0x290E,0x210E,0x292F,0x292F,0x212F,0x2130,0x2130,0x1911,0x1111,0x1132,0x1974,0x21B5,0x21F6,0x21D5,0x1994,0x1153,0x1132,0x1931,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2130,0x210F,0x292F,0x210F,0x292F,0x292F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x292F,0x292F,0x210F,0x212F,0x212F,0x212F,0x212F,0x212F,0x2130,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x2930,0x2130,0x2930,0x2130,0x212F,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x1930,0x1930,0x1930,0x1931,0x1931,0x1952,0x1994,0x19B5,0x19D5,0x11D5,0x11D5,0x11B5,0x11B5,0x11D5,0x19F6,0x2216,0x19F6,0x19B5,0x1994,0x1132,0x1911,0x2130,0x2110,0x292F,0x292F,0x290F,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x212E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x210E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292F,0x290E,0x290E,0x290F,0x290F,0x292F,0x290E,0x292E,0x292E,0x292E,0x292E,0x292F,0x210E,0x212E,0x212E,0x212E,0x290E,0x210E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x212E,0x292E,0x292E,0x292E,0x292F,0x292E,0x292E,0x292F,0x290E,0x210E,0x210E,0x292E,0x292E,0x292E,0x292E,0x212E,0x212E,0x210E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E, + 0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x210E,0x292F,0x210E,0x212F,0x212F,0x212F,0x2130,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x1910,0x1910,0x2130,0x1910,0x1910,0x2110,0x1910,0x1910,0x1910,0x1910,0x1930,0x1930,0x1910,0x1910,0x1930,0x1930,0x1910,0x2131,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1930,0x1910,0x1910,0x1910,0x1930,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1931,0x1910,0x1910,0x1910,0x1930,0x1910,0x1910,0x1910,0x1930,0x1930,0x1910,0x1910,0x1910,0x1930,0x2130,0x2130,0x1910,0x1910,0x1910,0x1910,0x1930,0x1930,0x1910,0x2130,0x1910,0x1910,0x2110,0x1910,0x2110,0x2110,0x1910,0x2130,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1930,0x1910,0x1910,0x1930,0x1910,0x1910,0x1930,0x1930,0x1910,0x1910,0x1930,0x1910,0x1910,0x1930,0x1910,0x1930,0x1910,0x1910,0x1930,0x1910,0x1911,0x2131,0x1910,0x1911,0x1911,0x1910,0x1910,0x1930,0x1910,0x1910,0x1910,0x1910,0x1910,0x1931,0x1911,0x1910,0x2131,0x1911,0x1911,0x1910,0x1911,0x1911,0x1911,0x1910,0x1910,0x1910,0x1910,0x1910,0x2111,0x2111,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x2130,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210E,0x210E,0x210E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x28ED,0x28ED,0x30CD,0x30AC,0x40AC,0x614F,0x9293,0xA2D4,0x9A93,0x9A93,0x9A73,0x9A73,0xA273,0xA253,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA232,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA273,0xA273,0xA273,0xA273,0xA273,0xA253,0xA273,0xA273,0xA273,0xA273,0xA252,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA273,0xA253,0xA253,0xA253,0xA253,0xA253,0xA273,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA273,0xA252,0xA252,0xA252,0xA252,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA273,0xA253,0xA273,0xA273,0xA273,0xA252,0xA252,0xA252,0xA252,0xA252,0xA273,0xA252,0xA273,0xA273,0xA253,0xA253,0xA253,0xA253,0xA253,0xA252,0xA252,0xA253,0xA253,0xA273,0xA252,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0x9A52,0xA253,0xA273,0xA253,0xA253,0xA253,0xA253,0xA252,0xA252,0xA252,0xA253,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA253,0xA253,0xA252,0xA253,0xA253,0xA253,0xA252,0xA252,0xA252,0xA253,0xA253,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA252,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA273,0xA252,0xA273,0xA253,0xA252,0xA252,0xA252,0xA252,0xA252,0xA253,0xA273,0xA253,0xA273,0xA273,0xA273,0xA273,0xA273,0xA273,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA273,0xA253,0xA273,0xA273,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA273,0xA273,0xA253,0xA252,0xA252,0xA252,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA252,0xA252,0xA252,0xA252,0xA252,0xA253,0xA253,0xA273,0xA253,0xA253,0xA232,0xA252,0xA252,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA233,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA253,0xA233,0xA253,0xA232,0xA232,0xA232,0xA232,0xA232,0xA233,0xA233,0xA232,0xA212,0xA212,0xA213,0xA212,0xA212,0xA1F2,0xA9F2,0xA9F3,0xA9F2,0xA9D2,0xA9F2,0xA9D2,0xA9D2,0xA9D2,0xA9D2,0xA9D2,0xA9D2,0xA9D2,0xA9D2,0xB1B2,0xB1D2,0xB1D2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1D2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1B3,0xB1B3,0xB1B3,0xB1B2,0xB1B2,0xA9B2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1B2,0xB1D3,0xB1B3,0xB1B2,0xB1B2,0xB1D3,0xB1D3,0xB1B2,0xB1B2,0xB1B2,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1D3,0xB1D3,0xB1F3,0xB214,0xA9D3,0x9152,0x9172,0x8993,0x8173,0x8193,0x81B4,0x81D4,0x81D4,0x81D4,0x81D4,0x81D4,0x81D4,0x89D4,0x91F4,0x99F5,0x99D5,0xA216,0xA237,0xA258,0x9279,0x721A,0x395A,0x299C,0x19BD,0x11DE,0x121F,0x0A5F,0x025F,0x027F,0x027F,0x029F,0x02BF,0x02BF,0x02BF,0x02DF,0x02DF,0x02DF,0x02DF,0x02DF,0x02FF,0x031F,0x02FE,0x02FD,0x02FB,0x035A,0x2DFF,0x36DD,0x1E75,0x1E52,0x3E72,0x5E54,0x7575,0x5330,0x6291,0x7273,0x7234,0x7214,0x69D4,0x69B3,0x61B3,0x5993,0x59D3,0x59B3,0x5192,0x4992,0x4992,0x4992,0x4191,0x4191,0x4191,0x4171,0x4171,0x4171,0x4150,0x4150,0x3950,0x3950,0x3950,0x314F,0x314F,0x312F,0x312F,0x312F,0x312F,0x312F,0x310F,0x312F,0x290E,0x290E,0x292F,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x210F,0x210F,0x1910,0x1111,0x1152,0x21F6,0x21F6,0x19D5,0x1153,0x1131,0x1910,0x1910,0x212F,0x212F,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292F,0x292F,0x292F,0x212F,0x2130,0x2110,0x1911,0x1932,0x1132,0x1974,0x21B5,0x21F6,0x19B5,0x1994,0x1153,0x1132,0x1111,0x1910,0x1910,0x1930,0x1930,0x1930,0x1930,0x1910,0x2130,0x1910,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x210F,0x2130,0x2130,0x2130,0x2130,0x210F,0x210F,0x2130,0x2130,0x212F,0x212F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x1930,0x1930,0x1930,0x1930,0x1931,0x1931,0x1931,0x1132,0x1153,0x19B5,0x19B5,0x19F6,0x0995,0x1195,0x0974,0x1194,0x0974,0x0974,0x11B5,0x19D6,0x19F6,0x19B5,0x1994,0x1932,0x1910,0x2130,0x210F,0x292F,0x290F,0x210E,0x292E,0x292F,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x212E,0x212E,0x212E,0x292F,0x212E,0x212E,0x212E,0x292E,0x212E,0x292E,0x210E,0x210E,0x212E,0x292F,0x290E,0x290E,0x292F,0x292F,0x290F,0x292F,0x290F,0x292F,0x292E,0x292E,0x294E,0x212E,0x212E,0x212E,0x212E,0x212E,0x212E,0x292E,0x212E,0x292E,0x292E,0x292E,0x292E,0x292E,0x212E,0x212E,0x212E,0x212E,0x212E,0x212E,0x212E,0x212E,0x212F,0x212E,0x212E,0x210E,0x210E,0x212E,0x212E,0x210E,0x212E,0x210E,0x212E,0x212E,0x210E,0x210E,0x210E,0x212E,0x210E,0x210E,0x210E,0x210E,0x292E,0x290E, + 0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x212E,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x2130,0x2130,0x212F,0x210F,0x210F,0x210F,0x2130,0x2110,0x2130,0x2130,0x190F,0x210F,0x210F,0x210F,0x2130,0x210F,0x2130,0x2110,0x2110,0x2130,0x210F,0x210F,0x2130,0x2130,0x2130,0x210F,0x210F,0x210F,0x212F,0x210F,0x2130,0x210F,0x2130,0x2110,0x2130,0x210F,0x210F,0x210F,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2110,0x2110,0x2130,0x190F,0x2130,0x2110,0x2130,0x210F,0x2110,0x190F,0x212F,0x210F,0x210F,0x190F,0x210F,0x210F,0x2130,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x2110,0x210F,0x2130,0x2130,0x2110,0x190F,0x2130,0x2130,0x2110,0x210F,0x2130,0x2130,0x2110,0x2110,0x2130,0x2130,0x2110,0x210F,0x2110,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x190F,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2130,0x2110,0x2130,0x2110,0x2130,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210E,0x210E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x28EE,0x28ED,0x30CD,0x30CD,0x30AC,0x306B,0x48CD,0x71D1,0x8A73,0x9AB4,0x9AB4,0xA2B4,0xA294,0xA294,0xAA94,0xAA93,0xAA93,0xAA93,0xA273,0xAA73,0xAA93,0xAA93,0xAA93,0xAA93,0xAA73,0xAA93,0xA293,0xAA93,0xA293,0xA293,0xA293,0xA294,0xA293,0xA294,0xA294,0xA294,0xA293,0xAA94,0xA294,0xAA94,0xA294,0xA293,0xAA94,0xAA94,0xAA94,0xA294,0xA294,0xA294,0xA294,0xAA94,0xAA94,0xAA94,0xA294,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAAB4,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xA293,0xA294,0xA293,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAAB4,0xA293,0xAAB4,0xA293,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xA293,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA93,0xAA94,0xAA94,0xA293,0xAA94,0xA294,0xA294,0xA273,0xA294,0xA294,0xA294,0xA293,0xA293,0xA294,0xA294,0xA293,0xA293,0xAA93,0xAA94,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xA293,0xA293,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xA293,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xAA93,0xA293,0xAA93,0xAA93,0xAA93,0xAA93,0xAA94,0xAA93,0xAA93,0xAA94,0xAAB4,0xAA94,0xAAB4,0xAA94,0xAAB4,0xAA94,0xAA94,0xAA94,0xAA93,0xAA94,0xAA93,0xAA93,0xA293,0xAA93,0xAA93,0xA293,0xAA93,0xA293,0xAA94,0xA293,0xA293,0xA293,0xA293,0xA294,0xAA94,0xA293,0xA294,0xA294,0xA294,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAAB4,0xAAB4,0xAAB4,0xA294,0xA294,0xA294,0xA294,0xA294,0xA294,0xA294,0xA294,0xAA94,0xAA94,0xA294,0xAA94,0xA293,0xA293,0xA293,0xA294,0xAA94,0xAA94,0xA294,0xA294,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xAA94,0xA293,0xA294,0xA293,0xA293,0xA293,0xA293,0xA293,0xA293,0xA293,0xA293,0xA273,0xA273,0xA273,0xA273,0xA273,0xA273,0xAA73,0xAA73,0xA273,0xA273,0xA273,0xA273,0xA273,0xA273,0xA274,0xA274,0xA274,0xAA74,0xA273,0xA274,0xA273,0xA253,0xA253,0xA253,0xA253,0xA253,0xA233,0xA233,0xA233,0xAA53,0xA233,0xAA33,0xAA33,0xAA33,0xAA33,0xAA13,0xAA13,0xAA13,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1B3,0xB1D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB1B3,0xB9B3,0xB9D3,0xB9B3,0xB9B3,0xB9B3,0xB1B3,0xB1B3,0xB1B3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1B3,0xB1B3,0xB9D3,0xB1D3,0xB1D3,0xB1D3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB9D3,0xB9B3,0xB9D3,0xB9B3,0xB1B3,0xB1D3,0xB1B3,0xB1B3,0xB1D3,0xB1B3,0xB1B3,0xB1B3,0xB1B3,0xB1D3,0xB1D3,0xB1F4,0xB1D4,0xA172,0x9111,0x8931,0x8952,0x8152,0x7972,0x7973,0x81B3,0x81B4,0x7993,0x79B3,0x81B4,0x81B4,0x81B3,0x89B3,0x91D4,0xA1F4,0xA1F5,0xAA16,0xA237,0xA258,0x9279,0x69F9,0x397A,0x29BC,0x19DD,0x121E,0x125F,0x0A7F,0x027F,0x029F,0x029F,0x02BF,0x02DF,0x02DF,0x02DF,0x02FF,0x02FF,0x02FF,0x02FF,0x02FF,0x031F,0x031F,0x031E,0x02FD,0x02FC,0x033A,0x257E,0x36BD,0x2676,0x2E73,0x3E52,0x5E33,0x7D75,0x6351,0x6A91,0x7253,0x7A34,0x7A14,0x71D3,0x69B3,0x61B3,0x59B3,0x59B3,0x59B3,0x51B3,0x51B2,0x4972,0x4992,0x4991,0x4191,0x4171,0x4171,0x4171,0x4171,0x3950,0x4170,0x3950,0x3950,0x3950,0x312F,0x312F,0x312F,0x314F,0x312F,0x312F,0x312F,0x312F,0x312F,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x212E,0x212F,0x1910,0x1911,0x1152,0x1994,0x2216,0x21F6,0x1173,0x1132,0x1931,0x1930,0x210F,0x210E,0x210E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x210E,0x210E,0x210E,0x212E,0x292F,0x292F,0x2130,0x2110,0x1910,0x1911,0x1932,0x1973,0x21B5,0x21B5,0x19B5,0x1974,0x1153,0x1112,0x1111,0x10F0,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1930,0x1930,0x1930,0x1930,0x1930,0x1930,0x1910,0x1930,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1930,0x1910,0x1910,0x1930,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x18EF,0x18F0,0x1930,0x1910,0x1110,0x1111,0x1111,0x0911,0x1173,0x19B5,0x1A17,0x11D5,0x1194,0x0974,0x0953,0x0953,0x0953,0x0952,0x0953,0x1194,0x19F6,0x19B5,0x21D5,0x1973,0x10F0,0x2110,0x212F,0x210F,0x210E,0x210E,0x210E,0x292E,0x312F,0x290E,0x290E,0x290E,0x292E,0x292E,0x210E,0x210E,0x294E,0x294E,0x214E,0x212E,0x214F,0x212E,0x212F,0x212E,0x210E,0x212E,0x212E,0x212E,0x212E,0x210E,0x210E,0x290E,0x292F,0x290F,0x290F,0x290E,0x290E,0x292E,0x212E,0x212E,0x212E,0x212E,0x212E,0x212E,0x212E,0x212E,0x212E,0x212E,0x212E,0x212E,0x292E,0x292E,0x212E,0x212E,0x212E,0x212E,0x212E,0x212E,0x190E,0x212E,0x212F,0x212E,0x212F,0x212E,0x212E,0x212F,0x210E,0x210E,0x212E,0x212E,0x212F,0x212F,0x210E,0x210E,0x212E,0x212E,0x190E,0x212E,0x212E,0x210E,0x212F,0x212E,0x212E,0x210E, + 0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x212E,0x210E,0x210E,0x210E,0x210E,0x292F,0x212F,0x292F,0x212F,0x212F,0x212F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210E,0x212F,0x210E,0x210E,0x210E,0x210E,0x290E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x312E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x28ED,0x28ED,0x30ED,0x30CD,0x30AC,0x388C,0x40AC,0x50CD,0x592E,0x71B1,0x8A53,0x9AB4,0xA2D5,0xA2D5,0xA2F5,0xA2D5,0xA2F5,0xA2D5,0xAAF5,0xA2F5,0xA2F5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D4,0xA2F5,0x9AD4,0x9AD4,0x9AD4,0xA2D5,0x9AB4,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0x9AB5,0xA2D5,0x9AB5,0xA2D5,0x9AB5,0xA2D5,0xA2D5,0xA2D5,0x9AB4,0xA2D5,0x9AB4,0xA2D5,0xA2B4,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2B4,0xA2D5,0x9AD4,0xA2D5,0xA2D5,0xA2D5,0x9AB4,0xA2D5,0x9AB5,0x9AB5,0x9A94,0x9AB5,0x9A94,0x9A94,0x9A94,0x9A94,0x9A94,0x9A94,0x9A94,0x9A94,0x9A94,0x9A94,0x9A94,0x9A94,0x9A93,0x9AB4,0x9A93,0x9A94,0x9A94,0x9A94,0x9A94,0x9A94,0x9A94,0x9A94,0x9A94,0x9AB4,0x9AB4,0x9AB4,0x9A94,0x9AB4,0x9AB4,0x9AD4,0x9AB4,0xA2D5,0x9AB4,0xA2D5,0x9AB4,0x9AD5,0x9AB4,0x9AD4,0x9AB4,0x9AD4,0x9AB4,0xA2D5,0x9AB4,0xA2D5,0xA2D4,0xA2D5,0xA2D4,0xA2D5,0xA2D4,0xA2D5,0xA2D4,0xA2D5,0xA2D4,0xA2D5,0xA2D4,0xA2F5,0xA2D4,0xA2D5,0xA2D5,0xA2D5,0xA2D4,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D4,0xA2F5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D4,0xA2D5,0xA2D4,0xA2D5,0xA2B4,0xA2D4,0x9AB4,0x9AB4,0x9AB4,0x9AB4,0x9A94,0x9A94,0x9A94,0x9AB4,0x9A94,0x9AB4,0x9AB4,0x9AB4,0x9AB4,0xA2D4,0x9AB4,0xA2D5,0xA2D4,0xA2D5,0xA2D4,0xA2D5,0xA2D4,0xA2D5,0x9AD4,0xA2D5,0x9AD4,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0x9AB4,0xA2D5,0x9AB4,0x9AD4,0x9AB4,0x9AD4,0x9AB4,0x9AB4,0x9AB4,0x9AB4,0x9AB4,0x9AB4,0x9AB4,0x9AD4,0x9AB4,0x9AB5,0x9AB4,0xA2D5,0x9AB4,0xA2D5,0x9AB4,0xA2D5,0x9AB4,0xA2D5,0x9AB4,0xA2D5,0x9AB4,0x9AB4,0x9AB4,0xA2D5,0x9AB4,0xA2D5,0xA2B4,0xA2D5,0x9AB4,0xA2D5,0x9AB4,0xA2D5,0x9AB4,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2F5,0xA2F5,0xA2F5,0xA2D5,0xA2F5,0xA2D5,0xA2D5,0xA2D5,0xA2D5,0xA2B5,0xA2D5,0xA2B5,0xA2D5,0xA2B4,0xA2B5,0xA2B5,0xA2B5,0xA295,0xA2B5,0xA295,0xA2B5,0xA295,0xA274,0xA254,0xA274,0xA254,0xA274,0xAA74,0xAA74,0xAA74,0xAA74,0xAA54,0xAA54,0xAA54,0xB254,0xB234,0xB234,0xB234,0xAA13,0xB213,0xB213,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9F3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D3,0xB9D4,0xB9D4,0xB9D3,0xB9D3,0xB9D3,0xB9D4,0xB9D4,0xB9D4,0xB9D3,0xB9D3,0xB9D4,0xB9D3,0xB9D4,0xB9D4,0xB9D4,0xB9D3,0xB9D3,0xB9D4,0xB9D4,0xB9D3,0xB9D3,0xB9D4,0xB9D4,0xB9B3,0xB9D3,0xB9D3,0xB9B3,0xB9B3,0xB9B3,0xB9B3,0xB9B3,0xB9B3,0xB9B3,0xB9D3,0xB9D3,0xB9D4,0xB9B3,0xB9B3,0xB1B3,0xB1B3,0xA993,0xA972,0xA193,0xA1B3,0x99B3,0x99B3,0x91B3,0x8152,0x8152,0x8152,0x7952,0x8152,0x8172,0x8172,0x91B4,0x99F4,0xA1F4,0xA1F4,0xA9F4,0xAA15,0xAA16,0xA237,0x9A58,0x8A79,0x61F9,0x39BA,0x29FD,0x19FD,0x123E,0x127F,0x0A9F,0x029F,0x02BF,0x02BF,0x02DF,0x02FF,0x02FF,0x02FF,0x02FF,0x02FF,0x031F,0x031F,0x031F,0x033F,0x033F,0x033E,0x031D,0x02FC,0x033A,0x0C9C,0x365D,0x2E97,0x2E73,0x3E53,0x5E13,0x7D75,0x6310,0x6A91,0x7A32,0x8234,0x79F4,0x71B3,0x69B3,0x61B3,0x61B3,0x5993,0x5192,0x51B2,0x51B2,0x4992,0x4992,0x4991,0x4991,0x4191,0x4171,0x4171,0x4150,0x4150,0x3950,0x3950,0x3950,0x3930,0x3950,0x312F,0x312F,0x312F,0x312F,0x312F,0x312F,0x312F,0x312F,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x210E,0x212F,0x190F,0x1910,0x1132,0x1153,0x21D5,0x2216,0x19B5,0x1132,0x1932,0x1931,0x190F,0x210F,0x292F,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x210E,0x210E,0x292F,0x210F,0x210F,0x210F,0x2110,0x1910,0x1911,0x1932,0x1953,0x1994,0x21D6,0x21D6,0x1995,0x1153,0x1152,0x1111,0x1131,0x1111,0x1931,0x1111,0x1931,0x1111,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1911,0x1931,0x1931,0x1911,0x1911,0x1931,0x1911,0x1931,0x1931,0x1931,0x1930,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1111,0x1111,0x1931,0x1110,0x1931,0x1911,0x1911,0x1910,0x1911,0x1910,0x1910,0x1911,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1910,0x1110,0x10F0,0x1911,0x1931,0x1131,0x1131,0x1112,0x0912,0x0953,0x19F6,0x19F6,0x0994,0x0953,0x0932,0x0953,0x0932,0x0932,0x0932,0x0932,0x0953,0x19D5,0x19F6,0x19B5,0x1973,0x1911,0x190F,0x210F,0x210F,0x210E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x212E,0x210E,0x192E,0x214E,0x214E,0x214E,0x192E,0x194E,0x192E,0x192E,0x192E,0x190E,0x190E,0x192E,0x192E,0x192E,0x190E,0x212E,0x212F,0x210F,0x290F,0x290E,0x290E,0x210E,0x212E,0x212E,0x192E,0x192E,0x192E,0x192E,0x192E,0x192E,0x192E,0x192E,0x212E,0x212E,0x212E,0x214F,0x212E,0x214E,0x212E,0x212E,0x194E,0x192E,0x192E,0x192E,0x190E,0x192E,0x192E,0x192F,0x192F,0x214F,0x214F,0x190E,0x190E,0x192E,0x192E,0x192E,0x192E,0x192E,0x190E,0x192F,0x192F,0x192E,0x192E,0x192E,0x192E,0x192E,0x190E,0x192E,0x192F, + 0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x292F,0x210F,0x210F,0x292F,0x210E,0x292F,0x210F,0x212F,0x292F,0x212F,0x212F,0x212E,0x210E,0x210F,0x210F,0x210F,0x210E,0x292F,0x210E,0x292F,0x212E,0x210F,0x210F,0x210F,0x212F,0x212F,0x210E,0x212E,0x210E,0x210F,0x210E,0x212F,0x210E,0x212F,0x210F,0x212E,0x210E,0x292F,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210E,0x210F,0x210E,0x212F,0x210E,0x290F,0x290E,0x212E,0x210E,0x210F,0x210F,0x212E,0x210E,0x210E,0x210E,0x212F,0x210E,0x212F,0x210E,0x292F,0x210E,0x212E,0x210E,0x212E,0x210E,0x212F,0x210E,0x212F,0x210E,0x210E,0x210F,0x212E,0x210E,0x210F,0x210F,0x210F,0x210E,0x210F,0x210F,0x210E,0x210E,0x210E,0x210E,0x210F,0x210E,0x290F,0x210F,0x210F,0x210E,0x290F,0x210E,0x210E,0x210E,0x292F,0x210F,0x210F,0x210E,0x290F,0x292F,0x210E,0x210E,0x290F,0x290F,0x290F,0x210E,0x210F,0x210F,0x210F,0x210E,0x292F,0x292F,0x292F,0x210E,0x290F,0x292F,0x210E,0x210E,0x290F,0x290F,0x290F,0x210E,0x292F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210E,0x210E,0x292F,0x210F,0x212E,0x292F,0x210E,0x210E,0x290E,0x210E,0x290E,0x210E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292F,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x312E,0x290E,0x310E,0x290E,0x290E,0x290E,0x290E,0x290E,0x28ED,0x28ED,0x30ED,0x30ED,0x30CD,0x30AD,0x30AC,0x308C,0x306C,0x306B,0x304B,0x302B,0x302B,0x302B,0x302A,0x300A,0x300A,0x300A,0x300A,0x300A,0x300A,0x300A,0x300A,0x300A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302B,0x302A,0x302A,0x302A,0x302A,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302B,0x302B,0x302B,0x302B,0x302B,0x304B,0x304B,0x304B,0x304B,0x304B,0x304B,0x304B,0x304B,0x304B,0x304A,0x304A,0x302A,0x302A,0x304B,0x304A,0x304A,0x304A,0x304B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x304B,0x304B,0x302B,0x302A,0x302A,0x302A,0x302B,0x302B,0x302A,0x302A,0x302B,0x302B,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x300A,0x300A,0x300A,0x302A,0x302A,0x302B,0x302B,0x282A,0x302A,0x302A,0x302A,0x302A,0x282A,0x302B,0x302A,0x302A,0x302A,0x302A,0x302B,0x302B,0x302B,0x302B,0x300A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302A,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302A,0x302B,0x302A,0x302B,0x302A,0x302A,0x302A,0x302A,0x302B,0x302B,0x302A,0x302B,0x302B,0x302B,0x302B,0x302B,0x302B,0x302A,0x302B,0x302B,0x302B,0x302B,0x302B,0x304B,0x304B,0x304B,0x302B,0x302B,0x302B,0x302B,0x302B,0x384B,0x384B,0x384B,0x384B,0x384B,0x384C,0x384C,0x384C,0x384C,0x386C,0x386C,0x404C,0x406C,0x406C,0x406C,0x406C,0x406C,0x406C,0x486D,0x486C,0x484C,0x506D,0x504D,0x504D,0x584D,0x586E,0x584D,0x582D,0x580C,0x580C,0x600C,0x600B,0x600B,0x680C,0x700C,0x784D,0x786E,0x808E,0x88AF,0x90F0,0x9110,0x9931,0xA151,0xA152,0xA152,0xA972,0xA992,0xB1B3,0xB1B3,0xB9D3,0xB9D3,0xB9F3,0xB9F4,0xC1F4,0xC1F4,0xC1F4,0xC214,0xC214,0xC1F4,0xC1F4,0xC1F4,0xC1F4,0xC1F4,0xC9F4,0xC1F4,0xC1F4,0xC1F4,0xC1F4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xB9D4,0xB9D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xC1D4,0xB9D4,0xB9D4,0xB9D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xB9D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1B4,0xB9D4,0xB9D3,0xB9B3,0xB9B3,0xB9D3,0xB9D4,0xC1F4,0xB9D4,0xB9D4,0xB9F4,0xB9D4,0xB9D4,0xB9D4,0xB9F4,0xB9F4,0xB9F4,0xBA15,0xBA35,0xBA35,0xB255,0xB276,0xB256,0xB256,0xB276,0xB256,0xB256,0xB256,0xB235,0xB215,0xB215,0xB214,0xB1F4,0xA9F5,0xAA15,0xAA37,0x9A58,0x8259,0x51D9,0x3A1B,0x2A3D,0x1A5E,0x127E,0x0A9F,0x0ABF,0x02DF,0x02DF,0x02FF,0x02FF,0x031F,0x031F,0x031F,0x031F,0x031F,0x031F,0x031F,0x031F,0x033F,0x033F,0x033E,0x031E,0x02FD,0x033B,0x041B,0x2DDD,0x36B8,0x2E53,0x3E33,0x5DF3,0x8555,0x6310,0x7AB2,0x8253,0x8A54,0x8214,0x71B3,0x69B3,0x6193,0x5993,0x5993,0x59B3,0x5192,0x51B2,0x4992,0x4992,0x4971,0x4171,0x4991,0x4171,0x4171,0x4150,0x4150,0x3950,0x3930,0x3930,0x3930,0x312F,0x394F,0x312F,0x312F,0x312F,0x312F,0x312F,0x312F,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292F,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x210E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x290D,0x290D,0x290D,0x292E,0x292E,0x212E,0x210F,0x210F,0x1910,0x1951,0x1973,0x19B4,0x21F6,0x21F6,0x1994,0x1132,0x1111,0x1910,0x210F,0x292F,0x292F,0x292E,0x290E,0x210E,0x290E,0x290E,0x290E,0x210E,0x210E,0x292E,0x292E,0x290E,0x292F,0x292F,0x292F,0x2130,0x1910,0x1931,0x1952,0x1994,0x21B5,0x21D6,0x21F6,0x21F6,0x19D5,0x1993,0x1973,0x1993,0x1973,0x1993,0x1973,0x2193,0x1972,0x1972,0x1972,0x2172,0x2172,0x2172,0x1972,0x2172,0x2172,0x2173,0x1972,0x2173,0x2172,0x2172,0x2172,0x2172,0x2172,0x2172,0x2172,0x2172,0x1972,0x1972,0x1972,0x1972,0x1972,0x1972,0x1972,0x1973,0x1973,0x1972,0x1972,0x2173,0x1972,0x2172,0x1972,0x2173,0x2172,0x2173,0x1972,0x2172,0x1972,0x1972,0x1972,0x1972,0x2193,0x1972,0x1972,0x2193,0x21B3,0x21B4,0x21B4,0x1994,0x1174,0x1195,0x11D6,0x11B5,0x0954,0x0932,0x0932,0x1173,0x0952,0x0952,0x0952,0x0953,0x1153,0x1194,0x1195,0x19D5,0x1973,0x1931,0x1930,0x210F,0x210E,0x292E,0x292E,0x210E,0x290E,0x290E,0x292E,0x292F,0x290E,0x212E,0x190E,0x192E,0x112E,0x110D,0x08ED,0x08ED,0x08CC,0x090D,0x08ED,0x08ED,0x08ED,0x08ED,0x08ED,0x112E,0x110E,0x08CD,0x10ED,0x110E,0x190E,0x210E,0x210F,0x210F,0x210E,0x212E,0x190E,0x192E,0x110E,0x114E,0x112E,0x090D,0x090D,0x092D,0x090E,0x112E,0x112E,0x110E,0x190E,0x190E,0x192E,0x112E,0x112E,0x112E,0x112E,0x112E,0x090E,0x112E,0x08ED,0x090E,0x090E,0x08EE,0x08CE,0x10EE,0x190E,0x192E,0x110E,0x10ED,0x08ED,0x110E,0x110E,0x090E,0x08ED,0x112F,0x112E,0x112E,0x090E,0x090D,0x090D,0x090D,0x08ED,0x090E,0x090E, + 0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x28ED,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x210E,0x212E,0x210E,0x212E,0x292E,0x290E,0x210E,0x290E,0x210E,0x290E,0x210E,0x292E,0x210E,0x292E,0x290E,0x290E,0x210E,0x212E,0x210E,0x212E,0x210E,0x210E,0x210E,0x210E,0x212E,0x292E,0x210E,0x292E,0x290E,0x290E,0x290E,0x210E,0x290E,0x210E,0x210E,0x290E,0x210E,0x210E,0x210E,0x290E,0x210E,0x290E,0x290E,0x292E,0x210E,0x210E,0x210E,0x292E,0x210E,0x210E,0x292F,0x210E,0x210E,0x292E,0x210E,0x292E,0x210E,0x210E,0x210E,0x292E,0x210E,0x292E,0x210E,0x212E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x292E,0x290E,0x290E,0x210E,0x290E,0x210E,0x210E,0x210E,0x290E,0x290E,0x210E,0x210E,0x290E,0x290E,0x292E,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210E,0x290E,0x290E,0x210E,0x290E,0x210E,0x290E,0x210E,0x210E,0x290E,0x292E,0x210E,0x290E,0x210E,0x210E,0x210E,0x292E,0x210E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290D,0x290D,0x28ED,0x30ED,0x30ED,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AC,0x30AC,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AC,0x30AD,0x30AD,0x30AC,0x30AC,0x30AC,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30CD,0x30CD,0x30AD,0x30AD,0x30AC,0x30AD,0x30AD,0x30AD,0x30CD,0x30CD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30CD,0x30CD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AC,0x30AD,0x30AD,0x30AC,0x30AC,0x30AD,0x30AD,0x30AC,0x30AC,0x30AD,0x30AD,0x30AC,0x30AC,0x30AD,0x30AC,0x30AC,0x30AC,0x30AD,0x30AD,0x30AC,0x30AC,0x30AD,0x30AD,0x30CD,0x30CD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AC,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AC,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AC,0x30AC,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AC,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AC,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30CD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30AD,0x30CD,0x30AD,0x30AD,0x30CD,0x30CD,0x30AD,0x30CD,0x30CD,0x30CD,0x30CD,0x30AD,0x38AD,0x38CE,0x38CD,0x38CE,0x38CD,0x38CE,0x38CE,0x38CE,0x38CE,0x38CE,0x38CE,0x38CE,0x40CE,0x40CE,0x40CE,0x40CE,0x40CE,0x40CE,0x40CE,0x40CE,0x48CE,0x48AE,0x48CE,0x50AE,0x508E,0x586E,0x584D,0x580D,0x580C,0x580C,0x600C,0x80F0,0x9992,0xA1D3,0xB214,0xB214,0xB1F4,0xB1F4,0xB1D4,0xB1D3,0xB1D4,0xB1D3,0xB1D3,0xB1D3,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xC1F4,0xB9F4,0xC1F4,0xC214,0xC214,0xC1F4,0xC214,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA15,0xCA15,0xCA15,0xCA14,0xC9F4,0xC9F5,0xC9F4,0xC9F5,0xC9F5,0xC1F4,0xC1F4,0xC1F4,0xC1D4,0xC1F4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1B4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1B3,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1F4,0xC1F4,0xC1F4,0xB9F5,0xBA15,0xBA15,0xBA14,0xBA14,0xBA14,0xBA35,0xB234,0xBA35,0xB214,0xBA35,0xB214,0xBA14,0xBA14,0xB214,0xB1F4,0xB1F4,0xB1F4,0xB1F4,0xAA15,0xA236,0x9A78,0x7A59,0x51D9,0x3A5C,0x2A7D,0x1A9E,0x12BE,0x0ADF,0x0AFF,0x02FF,0x02FF,0x031F,0x031F,0x031F,0x033F,0x033F,0x033F,0x033F,0x033F,0x033F,0x033F,0x035F,0x035F,0x033E,0x033E,0x031D,0x033C,0x03BB,0x255C,0x46FB,0x3695,0x3DF3,0x5DD4,0x7CD4,0x6AEF,0x7A91,0x8252,0x8A54,0x8214,0x71B3,0x6993,0x6193,0x61B3,0x59B3,0x59B3,0x51B3,0x51B2,0x4992,0x4992,0x4991,0x4171,0x4171,0x4171,0x4171,0x4170,0x3950,0x3950,0x3950,0x3950,0x3950,0x312F,0x314F,0x312F,0x312F,0x312F,0x312F,0x312F,0x290E,0x312E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290D,0x292D,0x290D,0x290D,0x292E,0x292E,0x212F,0x210F,0x2130,0x1931,0x1952,0x1973,0x19D5,0x2216,0x19D5,0x1974,0x1132,0x1931,0x18EF,0x210F,0x292F,0x290E,0x210E,0x290E,0x290E,0x210E,0x210E,0x292F,0x210E,0x210E,0x290E,0x290E,0x292F,0x292F,0x210F,0x210F,0x2130,0x2130,0x1931,0x1952,0x2194,0x19B4,0x21F5,0x2A16,0x2A16,0x2A36,0x2A36,0x2A16,0x29F5,0x3215,0x3215,0x3215,0x2A15,0x3215,0x2A15,0x3215,0x29F5,0x29F4,0x29F5,0x31F5,0x29F5,0x3215,0x2A15,0x31F5,0x31F5,0x3215,0x3215,0x31F5,0x3215,0x3215,0x3215,0x3215,0x3215,0x3215,0x3215,0x3215,0x3215,0x3215,0x3215,0x3215,0x3215,0x3215,0x2A15,0x3215,0x3215,0x3215,0x3215,0x31F5,0x29F5,0x2A15,0x29F5,0x2A15,0x29F5,0x29F5,0x29D4,0x29F5,0x29D4,0x21D4,0x21B3,0x21B3,0x21B4,0x21B4,0x19B4,0x21D5,0x19B5,0x11B5,0x11D6,0x11B5,0x0954,0x0933,0x0932,0x0952,0x1152,0x1153,0x1153,0x0953,0x1153,0x1195,0x19D5,0x19B5,0x1973,0x1951,0x1910,0x212F,0x210E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x210E,0x192F,0x112E,0x00ED,0x00ED,0x00EC,0x00ED,0x00ED,0x010D,0x012D,0x012D,0x012E,0x012E,0x014E,0x012E,0x012E,0x010E,0x00ED,0x00CD,0x00ED,0x092E,0x110E,0x190E,0x210F,0x212F,0x212E,0x190E,0x00AC,0x00ED,0x012E,0x012D,0x012D,0x012D,0x014E,0x014E,0x012E,0x010D,0x00CD,0x090E,0x196F,0x1990,0x1990,0x1190,0x00ED,0x010D,0x010E,0x010E,0x012E,0x010E,0x014F,0x012E,0x010E,0x00CD,0x00CD,0x112E,0x1990,0x092E,0x00CC,0x00ED,0x010D,0x012E,0x010E,0x010E,0x010E,0x010E,0x014E,0x012E,0x014E,0x012D,0x012D,0x014E,0x014E,0x014F, + 0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x210E,0x292E,0x290E,0x290E,0x210E,0x292E,0x292E,0x292E,0x292E,0x292E,0x210E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x212E,0x212E,0x210E,0x292E,0x290E,0x290E,0x210E,0x292E,0x210E,0x210E,0x210E,0x292E,0x290E,0x290E,0x210E,0x210E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x210E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x210E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x210E,0x292E,0x290E,0x292E,0x210E,0x290E,0x210E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x292E,0x290E,0x210E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x210E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292F,0x210E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x210E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x210E,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292D,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x312E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x310E,0x310E,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30ED,0x30CD,0x30ED,0x30CD,0x30ED,0x30CD,0x30CD,0x30CD,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30ED,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30ED,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30ED,0x30ED,0x30ED,0x30ED,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30ED,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30ED,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30ED,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30ED,0x30ED,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30ED,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30CD,0x30ED,0x30CD,0x30CD,0x30CD,0x30CD,0x30ED,0x30CD,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x38EE,0x38EE,0x38EE,0x38EE,0x38EE,0x38EE,0x38EE,0x38EE,0x38EE,0x38EE,0x38EE,0x38EE,0x38EE,0x40EF,0x40EF,0x410F,0x40EF,0x40EE,0x40EE,0x48EF,0x48EF,0x48CE,0x48CE,0x50CE,0x50AE,0x588E,0x606D,0x70AE,0x9192,0xBA95,0xDB59,0xD338,0xD317,0xD2F7,0xD2D6,0xD2D6,0xD2B6,0xD2B6,0xD2B6,0xD2B6,0xD296,0xCA96,0xCA96,0xD296,0xCA76,0xCA75,0xD275,0xD255,0xD255,0xD255,0xD235,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xCA14,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F5,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1B4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xB9B3,0xC1B4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D3,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1B3,0xB9B3,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xC1D4,0xB9D4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xBA14,0xBA14,0xB214,0xBA14,0xB214,0xB214,0xB9F4,0xB9F4,0xB1F4,0xB9F4,0xB9F4,0xB1F4,0xB1F4,0xAA15,0xA257,0x9279,0x7239,0x4A1A,0x3A7C,0x2ABE,0x1ABE,0x12DF,0x0AFF,0x0B1F,0x031F,0x031F,0x033F,0x033F,0x033F,0x033F,0x035F,0x035F,0x035F,0x035F,0x035F,0x035F,0x037F,0x035F,0x035F,0x033E,0x033D,0x033C,0x037B,0x14BB,0x4F3C,0x3ED6,0x3DD3,0x65B4,0x7CB4,0x6AAF,0x8291,0x8A52,0x9254,0x9255,0x79B3,0x6993,0x6172,0x5993,0x59B3,0x59B3,0x59B3,0x51B2,0x4992,0x4992,0x4971,0x4991,0x4991,0x4171,0x4171,0x4170,0x4170,0x3950,0x3970,0x3950,0x394F,0x392F,0x312F,0x312F,0x312F,0x312F,0x312F,0x312F,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290E,0x292E,0x212E,0x212F,0x2130,0x1930,0x1951,0x1952,0x1994,0x19D5,0x21F6,0x21D5,0x1973,0x1911,0x1910,0x18EF,0x210F,0x292F,0x292F,0x292F,0x290E,0x210E,0x292E,0x290E,0x210E,0x292E,0x210E,0x292E,0x292E,0x292E,0x292E,0x210E,0x210F,0x210F,0x1910,0x1911,0x1931,0x1952,0x1973,0x1993,0x2194,0x21D4,0x29D5,0x29D5,0x29D5,0x29D5,0x29D4,0x29D4,0x29F4,0x29F4,0x29F4,0x29F4,0x29D4,0x29F4,0x29F4,0x29F4,0x29D4,0x29F4,0x29F5,0x29F5,0x29F4,0x29F4,0x29F4,0x29F5,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F5,0x29D5,0x29F4,0x29D4,0x29F5,0x29F5,0x29F5,0x29D4,0x29F4,0x29D4,0x29D4,0x29F4,0x29F5,0x21B4,0x29D4,0x29D4,0x21B4,0x29D4,0x21D4,0x21D4,0x29F5,0x29D4,0x29D4,0x21B4,0x29D4,0x29F4,0x21F5,0x21D5,0x21D5,0x11B5,0x11D6,0x11F6,0x11F6,0x1195,0x0953,0x0912,0x0932,0x0952,0x0932,0x0932,0x1153,0x1194,0x11B5,0x19D5,0x1994,0x1152,0x1951,0x2130,0x212F,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x210E,0x210E,0x190E,0x112F,0x092E,0x4BB8,0x547A,0x4C7A,0x447A,0x449B,0x44BB,0x4CFC,0x44DB,0x4D1C,0x4D1C,0x4D1C,0x4CFC,0x4CDC,0x449B,0x449B,0x447B,0x4C7B,0x43D8,0x010E,0x110E,0x214F,0x214F,0x216F,0x218F,0x2A52,0x5418,0x4C59,0x447A,0x3C59,0x3459,0x3C9A,0x345A,0x3419,0x2BB7,0x22F5,0x016F,0x094F,0x092F,0x096F,0x014E,0x22F5,0x33F8,0x3C39,0x3C39,0x3C5A,0x3C5A,0x447A,0x445A,0x4419,0x64DC,0x5C3A,0x012E,0x092E,0x010D,0x4C19,0x4C9A,0x447A,0x3C7A,0x3C5A,0x3C5A,0x3C5A,0x3C3A,0x449B,0x449B,0x449B,0x3C7A,0x3C7A,0x3459,0x3439,0x2C19, + 0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290D,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210D,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210D,0x290D,0x290D,0x290E,0x290E,0x290E,0x292E,0x210D,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292D,0x292D,0x292D,0x292E,0x292E,0x292E,0x292E,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x310E,0x310E,0x310E,0x310E,0x310D,0x310D,0x310D,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x28ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x28ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x28ED,0x28ED,0x28ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30EE,0x30ED,0x30ED,0x30EE,0x30EE,0x30EE,0x30ED,0x30EE,0x310E,0x30ED,0x310E,0x30EE,0x38EE,0x30EE,0x390E,0x390E,0x390E,0x390F,0x390F,0x390F,0x390F,0x390F,0x390F,0x390F,0x410F,0x410F,0x410F,0x410F,0x410F,0x490F,0x490F,0x48EF,0x48EF,0x50EF,0x58CF,0x58AE,0x710F,0xB2B6,0xCB17,0xCB17,0xD2F7,0xD2F6,0xD2D6,0xD2D6,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD295,0xD295,0xD295,0xD295,0xD275,0xD275,0xD275,0xD275,0xD255,0xD255,0xD255,0xD255,0xD235,0xD235,0xD255,0xD235,0xD235,0xD214,0xD214,0xD214,0xD214,0xCA14,0xCA14,0xC9F4,0xC9F4,0xCA14,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F5,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D5,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xB9D4,0xC1D4,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB1F4,0xB1F4,0xB9F4,0xB1F4,0xB1F4,0xB9F4,0xB1D4,0xB9D4,0xB9F4,0xB1F4,0xA9F4,0xAA15,0xA257,0x9299,0x6A39,0x4A1A,0x3ABD,0x2AFE,0x1AFE,0x131F,0x0B3F,0x0B3F,0x035F,0x033F,0x035F,0x035F,0x035F,0x035F,0x035F,0x037F,0x035F,0x037F,0x037F,0x037F,0x037F,0x037F,0x035F,0x035E,0x033D,0x033C,0x035C,0x0C3A,0x4F1D,0x46D7,0x3DB3,0x6595,0x7453,0x6A8F,0x7A51,0x8A53,0x9254,0x9234,0x79B3,0x7193,0x6193,0x61B3,0x61B3,0x59B3,0x51B2,0x5192,0x4992,0x4992,0x4971,0x4971,0x4171,0x4170,0x4170,0x4170,0x3950,0x3950,0x3950,0x3950,0x394F,0x3950,0x312F,0x314F,0x312F,0x312F,0x312F,0x312E,0x312E,0x312E,0x312E,0x290E,0x312E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290D,0x292D,0x290D,0x290E,0x292E,0x212E,0x212F,0x212F,0x1930,0x1931,0x1952,0x1973,0x1994,0x21F6,0x21F6,0x21B5,0x1973,0x1911,0x18F0,0x20EF,0x2930,0x292F,0x292F,0x210E,0x210E,0x210E,0x210E,0x292E,0x290E,0x290E,0x290E,0x292E,0x210E,0x210E,0x210E,0x212E,0x210F,0x210F,0x2110,0x1910,0x1910,0x1910,0x1931,0x1931,0x1932,0x1952,0x1952,0x1952,0x2152,0x2173,0x2172,0x2173,0x2173,0x2173,0x2173,0x2193,0x2173,0x2173,0x2193,0x2193,0x2193,0x1972,0x2173,0x2193,0x1972,0x1972,0x2193,0x2172,0x2172,0x2172,0x2172,0x2172,0x2172,0x2172,0x2173,0x2173,0x2172,0x2172,0x2173,0x2173,0x2172,0x2172,0x2172,0x2172,0x2172,0x2172,0x2173,0x2173,0x1952,0x2173,0x1973,0x1973,0x1972,0x1972,0x1973,0x2193,0x2193,0x1972,0x2193,0x1993,0x1993,0x1973,0x1974,0x1174,0x11B5,0x19F6,0x11D6,0x11D6,0x1194,0x0953,0x0932,0x0932,0x0932,0x0932,0x0953,0x11B5,0x19D5,0x19D5,0x1994,0x1152,0x1931,0x2130,0x212F,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x210E,0x210E,0x192E,0x092F,0x014F,0x4C3A,0x447A,0x2C18,0x2418,0x1C18,0x13F8,0x1418,0x1418,0x1438,0x1418,0x1C19,0x13F8,0x13F8,0x1C19,0x2439,0x2C5A,0x345A,0x3C19,0x012E,0x110E,0x110E,0x110E,0x110E,0x112E,0x4B96,0x5C9A,0x3C38,0x2C18,0x2439,0x1C39,0x1C59,0x1C39,0x2439,0x2C39,0x33F9,0x01F1,0x012E,0x012E,0x012E,0x0211,0x3C5A,0x2C39,0x2419,0x1BF8,0x2419,0x2419,0x2419,0x23F8,0x3439,0x54BB,0x3335,0x010D,0x00ED,0x014E,0x54FC,0x347A,0x2439,0x2439,0x1C19,0x1C19,0x1BF8,0x1BF8,0x1C19,0x1C39,0x1C39,0x1C39,0x1C59,0x1418,0x1C38,0x1C38, + 0x290E,0x290D,0x290E,0x290D,0x292E,0x290E,0x290E,0x290E,0x290D,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x210D,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x210D,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290E,0x290D,0x292E,0x290E,0x290E,0x290D,0x292E,0x290D,0x292E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292D,0x292D,0x292D,0x290D,0x292E,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312E,0x290E,0x290E,0x292E,0x312E,0x310E,0x310E,0x310E,0x312E,0x310D,0x310E,0x310E,0x310D,0x310E,0x310D,0x310D,0x310D,0x310D,0x30ED,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x310D,0x310D,0x290D,0x310D,0x310D,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x310D,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x290D,0x290D,0x30ED,0x30ED,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30ED,0x30ED,0x310D,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30ED,0x30ED,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30ED,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310E,0x310D,0x310D,0x310E,0x30ED,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30ED,0x30ED,0x30ED,0x30ED,0x310D,0x310D,0x30ED,0x30ED,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30ED,0x310D,0x30ED,0x310E,0x310E,0x310E,0x30ED,0x310E,0x310E,0x30EE,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x390E,0x390E,0x390E,0x390E,0x390E,0x390F,0x390F,0x390F,0x390F,0x392F,0x392F,0x392F,0x392F,0x412F,0x410F,0x410F,0x412F,0x412F,0x490F,0x490F,0x490F,0x50EF,0x58EE,0x60CE,0x89B1,0xC337,0xCAF6,0xCAF6,0xD2F6,0xCAB5,0xD2B5,0xD2B5,0xD295,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD295,0xD295,0xD295,0xD295,0xD275,0xD275,0xD255,0xD255,0xCA35,0xD255,0xD235,0xD235,0xD235,0xD235,0xD235,0xD235,0xD235,0xD234,0xD214,0xD214,0xD214,0xD214,0xD214,0xD214,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F4,0xC9F5,0xC9F4,0xC9F4,0xC9F5,0xC9F5,0xC9F5,0xC9F5,0xC9D5,0xC9D5,0xC9F5,0xC9F5,0xC1F5,0xC1F5,0xC1D4,0xC1D5,0xC1D5,0xC1D5,0xC1F5,0xC1F5,0xC1D5,0xC1D5,0xC1D5,0xC1D5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1F4,0xC1D4,0xC1D4,0xC1D4,0xB9D4,0xB9D4,0xB9D4,0xB9D3,0xB9D3,0xB9D3,0xB9D4,0xB9D4,0xB9D4,0xB9F4,0xB9F4,0xB1D4,0xB1D4,0xB1D4,0xB9D4,0xB1D4,0xB9F4,0xB9F4,0xB9F4,0xB1F4,0xA9F4,0xA235,0x9A77,0x8A99,0x6219,0x4A5B,0x3AFD,0x231E,0x1B3F,0x0B3F,0x0B5F,0x035F,0x035F,0x035F,0x035F,0x035F,0x035F,0x037F,0x037F,0x037F,0x037F,0x037F,0x039F,0x037F,0x037F,0x037F,0x037F,0x037E,0x035D,0x035D,0x035C,0x0C3B,0x46BD,0x4EFA,0x3DB5,0x6575,0x7413,0x6A6F,0x8271,0x8A32,0x9A54,0x9A55,0x81D3,0x7173,0x6193,0x6193,0x61B3,0x59D3,0x51B2,0x51B2,0x4992,0x4991,0x4971,0x4991,0x4991,0x4171,0x4170,0x4170,0x4170,0x3950,0x394F,0x394F,0x394F,0x394F,0x312F,0x312F,0x312F,0x312F,0x312E,0x312F,0x312E,0x312E,0x312E,0x292E,0x290E,0x312E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290D,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x290E,0x292E,0x292F,0x212F,0x212F,0x1930,0x1951,0x1951,0x1152,0x1994,0x21F5,0x2216,0x21D5,0x1973,0x1911,0x18F0,0x2110,0x2130,0x2930,0x290F,0x210E,0x210E,0x210E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x210E,0x210E,0x292E,0x212E,0x210E,0x212F,0x212F,0x210F,0x1910,0x1910,0x1910,0x18F0,0x1910,0x1911,0x1911,0x18F0,0x1911,0x1911,0x1911,0x1910,0x1910,0x1911,0x1931,0x1931,0x1911,0x1911,0x1911,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1930,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1911,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1110,0x1110,0x1911,0x10F0,0x10F0,0x1110,0x1111,0x1110,0x1110,0x1111,0x1111,0x1111,0x1111,0x10F1,0x0912,0x1174,0x11B5,0x19D6,0x19F6,0x11D5,0x1194,0x0953,0x0953,0x0953,0x0953,0x1194,0x21F6,0x19D5,0x19B5,0x1173,0x1131,0x1951,0x2150,0x212F,0x210E,0x210E,0x210E,0x292E,0x292E,0x292E,0x210E,0x212E,0x192E,0x092E,0x016F,0x445A,0x3459,0x2439,0x1C39,0x1419,0x0C19,0x0C39,0x0C39,0x0C19,0x0C19,0x0C19,0x0C19,0x1419,0x1419,0x1419,0x1C19,0x2C5A,0x3C19,0x016F,0x092E,0x112E,0x110E,0x110D,0x00EC,0x11AF,0x4C38,0x3438,0x2439,0x1418,0x1419,0x1419,0x1419,0x1439,0x1C39,0x2439,0x0AD4,0x01D0,0x016F,0x01F1,0x23D8,0x2418,0x13F8,0x13F8,0x13F8,0x1C19,0x1BF9,0x1BF8,0x23F8,0x3419,0x33D8,0x09D0,0x014E,0x010D,0x018F,0x3C59,0x2439,0x2459,0x1419,0x1419,0x1419,0x1C39,0x1418,0x1439,0x1459,0x0C39,0x0C38,0x0C38,0x0C58,0x0C38,0x0C38, + 0x290D,0x290D,0x292E,0x292D,0x292E,0x292E,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290D,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x290E,0x290D,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x292E,0x292E,0x290D,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x210D,0x290D,0x290E,0x292E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290E,0x292E,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290D,0x290D,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x292E,0x290D,0x292E,0x290E,0x290E,0x290E,0x292E,0x290D,0x292E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290D,0x290E,0x292E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290D,0x290D,0x292E,0x290E,0x292E,0x290E,0x290D,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290D,0x292E,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x292E,0x290D,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290D,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x292E,0x312E,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312E,0x312E,0x290D,0x312E,0x290D,0x312E,0x290D,0x290D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x310D,0x28ED,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310E,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310E,0x310E,0x310D,0x310D,0x310E,0x310E,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310E,0x310D,0x310D,0x310E,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x310D,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x312E,0x312E,0x392F,0x392F,0x390E,0x392E,0x392F,0x392F,0x392F,0x392F,0x392F,0x414F,0x412F,0x412F,0x410F,0x410F,0x490F,0x48EF,0x50EE,0x58EE,0x60CE,0xA295,0xCB37,0xCAF6,0xCAF6,0xD2D5,0xD2D5,0xD2D5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD295,0xD295,0xD295,0xD295,0xD275,0xD275,0xD275,0xD275,0xD255,0xD255,0xD255,0xD255,0xD255,0xD235,0xD255,0xD235,0xD235,0xD235,0xD235,0xD235,0xD235,0xD214,0xD215,0xD214,0xD215,0xD214,0xC9F4,0xD215,0xCA14,0xC9F4,0xC9F5,0xC9F5,0xC9F5,0xC9F5,0xC9F5,0xC9F5,0xC9F5,0xC9F5,0xC9F5,0xC9F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F6,0xC1F6,0xC1F6,0xC1F6,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1D4,0xC1F4,0xC1F4,0xC1F4,0xC1F4,0xC1F4,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9D4,0xB9F4,0xB1D4,0xB9F4,0xB9F4,0xB214,0xA9F4,0xA235,0x9A77,0x8299,0x5A19,0x427B,0x3B1D,0x233E,0x133E,0x0B5F,0x0B7F,0x037F,0x037F,0x037F,0x037F,0x037F,0x039F,0x037F,0x037F,0x037F,0x037F,0x037F,0x039F,0x039F,0x039F,0x039F,0x039F,0x037E,0x037E,0x035D,0x037C,0x041B,0x363C,0x573C,0x3D95,0x6D76,0x7C13,0x6A4F,0x8251,0x9232,0x9A33,0x9A55,0x81D4,0x7172,0x69B3,0x6193,0x61B3,0x59D3,0x51B2,0x5192,0x4992,0x4992,0x4971,0x4971,0x4991,0x4170,0x4170,0x4170,0x4170,0x3950,0x3950,0x3950,0x394F,0x392F,0x394F,0x312F,0x312F,0x314F,0x312F,0x312E,0x312E,0x312E,0x292E,0x312E,0x292E,0x312E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290D,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x292E,0x292E,0x292E,0x212E,0x212F,0x212F,0x1930,0x1930,0x1131,0x1132,0x19B4,0x2215,0x21F5,0x21B5,0x2173,0x10F1,0x1911,0x2110,0x2110,0x210F,0x210F,0x210E,0x210E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290D,0x292E,0x292E,0x292E,0x210E,0x210E,0x212F,0x212F,0x210F,0x210F,0x2110,0x1910,0x2110,0x2110,0x2110,0x1910,0x1910,0x2110,0x1910,0x2110,0x2110,0x2110,0x2110,0x1910,0x1910,0x2110,0x2110,0x190F,0x2110,0x190F,0x1910,0x2110,0x190F,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x2110,0x210F,0x2110,0x2130,0x2110,0x2110,0x2110,0x2110,0x2110,0x1910,0x1910,0x2110,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1930,0x1110,0x1911,0x10F1,0x1132,0x1174,0x11B4,0x19D6,0x19D5,0x19D5,0x1194,0x1174,0x1173,0x1173,0x19D5,0x21F6,0x19D5,0x1994,0x1152,0x1931,0x1910,0x212F,0x212F,0x210E,0x290E,0x292E,0x290E,0x292E,0x290E,0x212E,0x214E,0x112E,0x092E,0x016F,0x445A,0x2C39,0x1418,0x1439,0x0C39,0x0C39,0x0438,0x0439,0x0C39,0x0C39,0x0C39,0x0C39,0x0C19,0x1439,0x1439,0x1C39,0x245A,0x3419,0x016F,0x094E,0x112E,0x112E,0x112E,0x092D,0x00EC,0x2B14,0x3C59,0x2418,0x1419,0x0C18,0x0C19,0x0C19,0x0C39,0x1439,0x1C39,0x1BD8,0x0211,0x0231,0x0B55,0x1BF8,0x13F8,0x0BF8,0x0BF8,0x1419,0x13F9,0x13F9,0x1C19,0x23F8,0x3419,0x0A32,0x018F,0x014E,0x012D,0x01AF,0x3459,0x1C18,0x1418,0x1439,0x0C19,0x0C18,0x0C19,0x0C39,0x0C18,0x0C39,0x0C39,0x0438,0x0438,0x0438,0x0458,0x0438, + 0x292D,0x292D,0x292D,0x292D,0x292E,0x292E,0x290D,0x290D,0x290D,0x292E,0x290D,0x292E,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290D,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290D,0x292E,0x290E,0x292E,0x290D,0x290D,0x290D,0x290E,0x290D,0x290E,0x290E,0x290E,0x290D,0x292E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x292E,0x290E,0x290D,0x290D,0x292E,0x290D,0x290E,0x290E,0x290D,0x292E,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x292E,0x290E,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x292E,0x292E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290D,0x290D,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x292E,0x292E,0x290D,0x290D,0x292E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290D,0x290E,0x290D,0x292E,0x290D,0x290E,0x290E,0x292E,0x290D,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x292E,0x290D,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x292E,0x290D,0x290E,0x290D,0x292E,0x290D,0x290D,0x290D,0x292E,0x290D,0x290E,0x290E,0x292E,0x290D,0x292E,0x290E,0x292E,0x290D,0x290E,0x290D,0x292E,0x290D,0x290E,0x290E,0x292E,0x290D,0x290E,0x290E,0x292E,0x290D,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290E,0x292E,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310E,0x310E,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x312E,0x310D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310E,0x310E,0x310E,0x310E,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310E,0x310E,0x290D,0x290D,0x290D,0x290D,0x312D,0x312D,0x290D,0x290D,0x290D,0x312D,0x290D,0x290D,0x312D,0x310D,0x310D,0x310D,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x392F,0x392F,0x392F,0x392F,0x392F,0x392F,0x392F,0x392F,0x392F,0x392F,0x412F,0x410F,0x410F,0x40EE,0x48CE,0x50CE,0x712F,0xC337,0xCB17,0xCAF6,0xD2F6,0xD2D6,0xD2F6,0xD2D6,0xD2D6,0xD2D6,0xD2B5,0xD2B5,0xD295,0xD295,0xD275,0xD275,0xD255,0xD275,0xD255,0xD255,0xD275,0xD275,0xD255,0xD255,0xD255,0xD255,0xD255,0xD235,0xD235,0xD235,0xD215,0xD235,0xD215,0xD215,0xD235,0xD215,0xD215,0xCA15,0xCA15,0xCA15,0xCA15,0xCA15,0xCA15,0xCA15,0xC9F5,0xC9F5,0xCA15,0xC9F5,0xC9F6,0xCA16,0xC216,0xC1F6,0xC216,0xC216,0xC216,0xC216,0xC216,0xC216,0xC216,0xC216,0xC216,0xC217,0xC216,0xC216,0xC216,0xBA16,0xBA16,0xBA16,0xB9F6,0xBA17,0xBA17,0xB9F6,0xB9F6,0xBA16,0xBA16,0xC1F6,0xB9F6,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1F5,0xC1D5,0xC1F5,0xB9D5,0xC1F5,0xB9D5,0xB9D5,0xB9D5,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xB9D4,0xB9F4,0xB9D4,0xB9D4,0xB9F4,0xB9D4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xBA14,0xB214,0xAA14,0x9A35,0x9277,0x7A98,0x5259,0x42DC,0x333E,0x1B5E,0x137F,0x0B7F,0x0B7F,0x039F,0x039F,0x039F,0x039F,0x039F,0x039F,0x039F,0x039F,0x039F,0x039F,0x039F,0x03BF,0x03BF,0x03BF,0x039F,0x039F,0x039F,0x037E,0x037D,0x037D,0x041B,0x259B,0x571D,0x45B7,0x6D77,0x7C14,0x726F,0x8A51,0x9232,0x9A13,0x9A34,0x89F4,0x7993,0x6993,0x61B3,0x5992,0x59B3,0x5192,0x5192,0x4991,0x4991,0x4991,0x4991,0x4171,0x4171,0x4150,0x4170,0x4150,0x3950,0x3950,0x3950,0x394F,0x394F,0x312F,0x312F,0x314F,0x312E,0x314F,0x312E,0x312F,0x312E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292D,0x290D,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290D,0x290E,0x290E,0x292E,0x290E,0x292E,0x290D,0x290E,0x290E,0x290E,0x290E,0x292E,0x290D,0x290D,0x290E,0x290E,0x290D,0x290D,0x290E,0x290D,0x290D,0x290E,0x290D,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x312E,0x290E,0x290D,0x290D,0x290D,0x292E,0x290E,0x292E,0x292E,0x292E,0x212E,0x212F,0x214F,0x1930,0x10EF,0x1110,0x1152,0x19D4,0x21F6,0x21F6,0x21D5,0x1973,0x1111,0x18F0,0x18F0,0x2930,0x292F,0x292F,0x210E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292E,0x292E,0x290E,0x210E,0x292F,0x292F,0x292F,0x212F,0x212F,0x2130,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x2130,0x212F,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x1910,0x1910,0x1931,0x1152,0x1173,0x1994,0x19B4,0x19D5,0x19D5,0x19D5,0x1194,0x1194,0x19B4,0x19D5,0x19B4,0x1972,0x1131,0x1930,0x212F,0x212F,0x210E,0x290E,0x292D,0x290D,0x290D,0x290D,0x290D,0x212E,0x214E,0x114E,0x012E,0x016F,0x449B,0x2418,0x1418,0x0C18,0x0C18,0x0C39,0x0439,0x0439,0x0419,0x0439,0x0C5A,0x0C39,0x0C39,0x0C3A,0x0C39,0x1419,0x1C39,0x345A,0x016F,0x092E,0x114E,0x194E,0x194E,0x114E,0x092D,0x012D,0x2B96,0x347A,0x1C39,0x1439,0x0BF8,0x0C19,0x0C19,0x0C19,0x0C18,0x1C7A,0x0376,0x0B96,0x1418,0x0C18,0x0C18,0x0C18,0x0C19,0x0C19,0x0BF8,0x13F9,0x1BF8,0x2BF9,0x2B77,0x016F,0x016E,0x012E,0x010D,0x018E,0x3439,0x1C18,0x1418,0x1418,0x0C19,0x0C18,0x0C39,0x0C39,0x0418,0x0418,0x0418,0x0438,0x0459,0x0438,0x0439,0x0438, + 0x292E,0x292D,0x292D,0x292D,0x292D,0x290D,0x292E,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290D,0x290E,0x292E,0x290D,0x290E,0x290E,0x290D,0x290D,0x292E,0x292E,0x290D,0x290D,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290D,0x290D,0x290D,0x290E,0x290D,0x290E,0x290D,0x290D,0x290D,0x290E,0x290E,0x290D,0x290D,0x290D,0x292E,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x292E,0x290D,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290D,0x290E,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x292E,0x292D,0x292E,0x290D,0x292E,0x290D,0x290D,0x290D,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290E,0x290E,0x292E,0x292D,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292D,0x292D,0x292D,0x292D,0x292D,0x292E,0x292D,0x292E,0x292E,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x312D,0x312D,0x290D,0x292D,0x292D,0x290D,0x290D,0x310D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310E,0x310E,0x310E,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310E,0x310E,0x290D,0x290D,0x312D,0x290D,0x290D,0x312E,0x290D,0x290D,0x292D,0x312D,0x312D,0x312D,0x312D,0x312E,0x310E,0x310E,0x312E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312F,0x312F,0x392F,0x392F,0x392F,0x392F,0x392F,0x394F,0x392F,0x392F,0x392F,0x412F,0x410E,0x40EE,0x48CE,0x486C,0x89F2,0xC337,0xCB17,0xD2F6,0xD2F6,0xD2D6,0xD2D6,0xD2D5,0xD2B5,0xD2B5,0xD2B5,0xD295,0xD295,0xD295,0xD275,0xD295,0xD275,0xD255,0xD275,0xD275,0xD255,0xD276,0xD255,0xD256,0xD256,0xD256,0xD256,0xCA56,0xCA56,0xCA36,0xCA35,0xCA36,0xCA15,0xCA15,0xCA15,0xCA16,0xCA16,0xCA16,0xCA36,0xCA36,0xCA36,0xCA36,0xC216,0xC216,0xC216,0xC216,0xBA16,0xBA16,0xBA17,0xBA17,0xBA17,0xB217,0xB217,0xB1F7,0xB218,0xA9F7,0xB217,0xAA17,0xB217,0xAA17,0xB217,0xAA17,0xB218,0xAA17,0xAA18,0xAA17,0xAA17,0xA9F7,0xAA17,0xA1F7,0xA9F8,0xA1D7,0xA9F8,0xA9F7,0xA9F7,0xA9F7,0xB1F7,0xB1F7,0xB1F7,0xB1F6,0xBA16,0xBA16,0xBA16,0xBA16,0xBA16,0xBA16,0xBA16,0xB9F5,0xB9F5,0xB9F5,0xB9F5,0xB9F5,0xB9F5,0xB9D4,0xB9F4,0xB9F4,0xB9F5,0xB9F5,0xB9F5,0xB9F5,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xBA14,0xB215,0xA215,0x9A35,0x8276,0x72B8,0x52B9,0x433C,0x2B7E,0x1B7E,0x139F,0x0B9F,0x039F,0x03BF,0x039F,0x03BF,0x03BF,0x039F,0x03BF,0x03BF,0x03BF,0x03BF,0x03BF,0x03BF,0x03DF,0x03BF,0x03BF,0x03BF,0x03BF,0x03BF,0x039E,0x039D,0x039D,0x041C,0x151A,0x56DE,0x55FA,0x6D58,0x8435,0x7250,0x8A52,0x9212,0x9A13,0x9A34,0x91F4,0x7993,0x6992,0x6193,0x61B3,0x59B2,0x5192,0x5192,0x5192,0x4991,0x4991,0x4991,0x4971,0x4991,0x4170,0x4170,0x4150,0x4150,0x394F,0x3950,0x394F,0x392F,0x312F,0x394F,0x312E,0x312E,0x314E,0x312E,0x310E,0x312E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290D,0x290E,0x290E,0x292E,0x292E,0x290D,0x290D,0x290D,0x290E,0x292E,0x290E,0x290E,0x290E,0x292E,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290E,0x290D,0x290E,0x290E,0x290D,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290D,0x290E,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290E,0x292E,0x292E,0x290E,0x212E,0x212E,0x212F,0x192F,0x190F,0x1110,0x1130,0x1172,0x19B4,0x21F6,0x21F5,0x21D5,0x1973,0x1111,0x1910,0x2110,0x212F,0x292F,0x210E,0x210E,0x292E,0x210D,0x290E,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x292D,0x290E,0x290E,0x290E,0x290E,0x290F,0x292F,0x292F,0x210F,0x292F,0x210F,0x210E,0x210F,0x292F,0x210F,0x210E,0x210E,0x210E,0x212E,0x210E,0x210E,0x210E,0x212E,0x212E,0x212E,0x210E,0x212E,0x292F,0x210E,0x210E,0x290E,0x210E,0x290E,0x210E,0x292E,0x210E,0x290E,0x290E,0x292F,0x210E,0x210E,0x210E,0x290F,0x210F,0x292F,0x210E,0x210E,0x210E,0x210E,0x210E,0x292F,0x290E,0x210E,0x212F,0x212F,0x210E,0x212F,0x210F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x2130,0x1930,0x1930,0x1951,0x1152,0x1173,0x19B4,0x19B4,0x19B4,0x1994,0x19B4,0x1993,0x1973,0x1152,0x1131,0x1930,0x1930,0x212F,0x212E,0x210E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x210E,0x192E,0x114E,0x010E,0x016F,0x4CBB,0x1BF8,0x1439,0x0C39,0x0418,0x0439,0x0439,0x0439,0x0419,0x0439,0x0C39,0x0419,0x145A,0x0C19,0x0C39,0x1439,0x2459,0x3439,0x016E,0x094E,0x112D,0x194E,0x194D,0x194D,0x112D,0x010C,0x01AF,0x3439,0x245A,0x1439,0x0C19,0x0C39,0x0C39,0x0C19,0x0C18,0x0C38,0x0C18,0x0C18,0x0418,0x0418,0x0C18,0x0418,0x0C18,0x0C19,0x1419,0x13F8,0x1BF8,0x3C39,0x01D0,0x012E,0x094E,0x092E,0x010D,0x016E,0x3459,0x1C18,0x1C38,0x1439,0x0C18,0x0C39,0x0C39,0x0C39,0x0418,0x0418,0x0439,0x0439,0x0438,0x0438,0x0459,0x0438, + 0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292E,0x292E,0x290D,0x292E,0x292E,0x290D,0x290E,0x290E,0x292E,0x292E,0x290D,0x292E,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292E,0x290D,0x290D,0x292E,0x290D,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290E,0x290E,0x290E,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x292D,0x290D,0x290D,0x292E,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290D,0x290D,0x292E,0x292D,0x292D,0x290D,0x290D,0x292E,0x290D,0x290D,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x292E,0x290D,0x290D,0x292E,0x290E,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x290D,0x290D,0x290D,0x290D,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292D,0x292D,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x292E,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x312D,0x312D,0x312D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x312D,0x312D,0x312D,0x312D,0x312E,0x310E,0x312E,0x312E,0x310D,0x310D,0x310E,0x310E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x392F,0x392E,0x392F,0x392F,0x392F,0x394F,0x392F,0x392F,0x392F,0x392E,0x410E,0x410E,0x48CD,0x58CE,0xAAB5,0xCB58,0xCAF6,0xD2F6,0xD2F6,0xD2F6,0xD2D6,0xD2B5,0xD2B5,0xD295,0xD295,0xD295,0xD295,0xD275,0xD275,0xD275,0xD275,0xD275,0xD275,0xD275,0xD275,0xD276,0xD276,0xD276,0xD276,0xCA76,0xCA76,0xCA56,0xCA56,0xCA56,0xCA56,0xCA56,0xCA56,0xC256,0xC257,0xC257,0xC257,0xC257,0xC237,0xC257,0xBA57,0xBA57,0xBA37,0xB237,0xB237,0xAA17,0xAA17,0xAA18,0xA1F7,0xA1F8,0xA1D7,0x99F8,0x91D7,0x89B7,0x8997,0x8197,0x8197,0x8197,0x8197,0x8197,0x81B8,0x8198,0x8198,0x8197,0x8198,0x8198,0x8198,0x8198,0x8198,0x8198,0x8198,0x7998,0x7998,0x8198,0x8197,0x81B8,0x89B7,0x89B7,0x91B7,0x99F7,0x99F7,0xA218,0xAA17,0xAA38,0xB237,0xB237,0xB237,0xB237,0xB237,0xB216,0xB216,0xB216,0xB216,0xB215,0xB1F5,0xB1F5,0xB1F5,0xB1F5,0xB1F5,0xB1F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB215,0xAA15,0xA215,0x9256,0x8297,0x62B8,0x4B3A,0x439D,0x239D,0x139E,0x0BBF,0x0BBF,0x03BF,0x03DF,0x03DF,0x03BF,0x03BF,0x03DF,0x03DF,0x03BF,0x03DF,0x03DF,0x03DF,0x03DF,0x03DF,0x03BF,0x03BF,0x03BF,0x03BF,0x03BF,0x03BE,0x03BE,0x03BD,0x041C,0x0CBA,0x3E3D,0x5E7C,0x75BA,0x8C76,0x7A70,0x9272,0x9A33,0x9A13,0x9A34,0x9214,0x7993,0x6972,0x69B3,0x61B3,0x59B3,0x5992,0x5192,0x5192,0x5192,0x4991,0x4991,0x4971,0x4971,0x4170,0x4170,0x4150,0x3950,0x394F,0x394F,0x394F,0x392F,0x312F,0x312F,0x312E,0x312E,0x314E,0x312E,0x312E,0x312E,0x312E,0x292E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x310E,0x290E,0x292E,0x290E,0x292D,0x290D,0x292D,0x290D,0x290D,0x292E,0x292E,0x292E,0x290D,0x290D,0x290D,0x292E,0x290D,0x292E,0x292E,0x292E,0x290D,0x292E,0x290D,0x292D,0x292D,0x292E,0x290D,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290D,0x292E,0x292D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290E,0x290D,0x290E,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290E,0x290D,0x292E,0x290D,0x290D,0x290D,0x290E,0x292E,0x290E,0x292E,0x210D,0x210E,0x212E,0x212F,0x212F,0x192F,0x110F,0x1130,0x1972,0x19B4,0x21F5,0x21F5,0x21B4,0x1953,0x1911,0x1910,0x2130,0x212F,0x210E,0x210E,0x210E,0x292E,0x290E,0x292E,0x290D,0x292E,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x290E,0x292E,0x290E,0x292E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x292E,0x210E,0x292E,0x210E,0x290E,0x290E,0x290E,0x210E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x292E,0x212E,0x292F,0x212E,0x212E,0x212E,0x210E,0x210F,0x212F,0x210F,0x212F,0x210F,0x212F,0x190F,0x190F,0x1910,0x1131,0x1972,0x1993,0x1993,0x1993,0x1972,0x1972,0x1952,0x1931,0x1930,0x192F,0x192F,0x214F,0x212E,0x210D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x292E,0x192E,0x110E,0x010E,0x016F,0x44BB,0x2418,0x1459,0x0C39,0x0438,0x0439,0x0418,0x0438,0x0419,0x0439,0x0419,0x0C39,0x0C19,0x1439,0x1459,0x1C59,0x2459,0x3C59,0x016E,0x114E,0x194D,0x192D,0x194E,0x194E,0x194D,0x090C,0x010D,0x0A72,0x349A,0x1C59,0x0C19,0x0C19,0x0C19,0x0C19,0x0418,0x0418,0x03F8,0x0418,0x0438,0x0418,0x0418,0x0418,0x03F8,0x03F8,0x1419,0x1BF8,0x2BF9,0x1272,0x010D,0x092D,0x114E,0x114E,0x092D,0x01AF,0x447A,0x3479,0x2459,0x2439,0x1C59,0x1C7A,0x1439,0x0C18,0x0C39,0x0439,0x0418,0x0438,0x0418,0x0439,0x0418,0x0438, + 0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290D,0x290D,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292E,0x292E,0x292E,0x292E,0x292D,0x292D,0x290E,0x292E,0x292D,0x292D,0x292E,0x292E,0x292D,0x292D,0x292E,0x292E,0x292D,0x292D,0x292D,0x292D,0x292E,0x292E,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x312D,0x312D,0x312D,0x312E,0x290D,0x312D,0x310D,0x312E,0x310D,0x310E,0x312E,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x312E,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x392F,0x392E,0x392E,0x392E,0x392E,0x392E,0x412E,0x410E,0x40EE,0x48CD,0x692F,0xB316,0xCB17,0xCAF6,0xD2F6,0xD2D5,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xD295,0xD295,0xCA95,0xD275,0xD295,0xD295,0xD275,0xCA75,0xD276,0xD276,0xD276,0xD296,0xD276,0xCA76,0xCA77,0xCA77,0xCA77,0xCA77,0xC277,0xC277,0xC277,0xC278,0xC278,0xBA98,0xBA99,0xBA99,0xBAB9,0xB2BA,0xB2BA,0xB29A,0xB2BA,0xAA9A,0xA27A,0xA27A,0x9A59,0x9A59,0x9219,0x89F9,0x81D8,0x81D9,0x81D8,0x81B8,0x7998,0x7198,0x6978,0x6978,0x6158,0x6158,0x6158,0x6158,0x6158,0x6178,0x6178,0x6158,0x6159,0x5958,0x5959,0x5959,0x5959,0x5959,0x5959,0x5979,0x5979,0x5979,0x5979,0x5979,0x6178,0x6178,0x6978,0x6998,0x6998,0x71B8,0x79B8,0x81F8,0x81F8,0x8A19,0x9239,0x9A7A,0x9A79,0x9A79,0x9A38,0x9A38,0x9A17,0xA237,0xAA37,0xAA37,0xAA36,0xB236,0xB216,0xB215,0xB1F5,0xB1F5,0xB1F5,0xB1F5,0xB1F5,0xB1F5,0xB1F5,0xB1F4,0xB9F4,0xB9F4,0xB9F4,0xB9F4,0xB1F4,0xB1F4,0xB1F5,0xAA15,0xAA15,0x9A35,0x8A56,0x7297,0x5AF9,0x4B9B,0x33DD,0x23BD,0x13DE,0x0BDF,0x0BDF,0x03DF,0x03DF,0x03FF,0x03FF,0x03FF,0x03FF,0x03DF,0x03FF,0x03DF,0x03DF,0x03DF,0x03DF,0x03DF,0x03DF,0x03DF,0x03BF,0x03BF,0x03DF,0x03DE,0x03BE,0x03BE,0x041D,0x0CBB,0x2DBC,0x6EBE,0x75BB,0x8C97,0x7A71,0x9272,0x9A12,0x9A13,0x9A14,0x9A35,0x81D3,0x6972,0x69B3,0x6192,0x5992,0x5992,0x5192,0x5192,0x5192,0x4991,0x4971,0x4991,0x4170,0x4170,0x4150,0x4170,0x4150,0x394F,0x394F,0x394F,0x394F,0x392F,0x392F,0x312F,0x312E,0x312E,0x312E,0x312E,0x312E,0x310E,0x312E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x310E,0x290D,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290D,0x292E,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x292E,0x290D,0x290D,0x292D,0x290D,0x292E,0x212E,0x212E,0x212F,0x192F,0x110F,0x1131,0x1972,0x19B4,0x21D5,0x21D5,0x21B4,0x1973,0x1911,0x1910,0x210F,0x210F,0x210F,0x212E,0x292E,0x290E,0x292E,0x290D,0x292E,0x290D,0x210D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x292E,0x290D,0x292E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290E,0x290E,0x292E,0x290D,0x290E,0x292E,0x210E,0x212E,0x292E,0x292E,0x210E,0x210E,0x210E,0x210E,0x212E,0x212E,0x212E,0x212E,0x210F,0x210F,0x190F,0x1910,0x1930,0x1931,0x1131,0x1931,0x1931,0x1910,0x1910,0x1910,0x190F,0x210F,0x214F,0x212E,0x210D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x292E,0x192E,0x110E,0x010E,0x016F,0x449B,0x2438,0x1438,0x0C38,0x0C38,0x0438,0x0438,0x0438,0x0C39,0x0C39,0x1439,0x1C39,0x2459,0x2439,0x2C59,0x2C38,0x3459,0x3BF8,0x016E,0x114D,0x110D,0x192D,0x194D,0x192D,0x196E,0x114D,0x010D,0x014D,0x1B56,0x349B,0x1419,0x0C39,0x0C19,0x0419,0x0419,0x0418,0x0418,0x0418,0x0418,0x0418,0x0C39,0x0418,0x0C18,0x0C18,0x1419,0x2419,0x2B97,0x014E,0x010D,0x112D,0x112E,0x112D,0x114E,0x096F,0x3B96,0x3BF8,0x3C18,0x3418,0x3418,0x2C39,0x2C39,0x1C39,0x1439,0x0439,0x0439,0x0439,0x0439,0x0438,0x0438,0x0438, + 0x292D,0x292D,0x292D,0x290D,0x292D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292E,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292E,0x290D,0x292E,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x292E,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292E,0x292E,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x312D,0x312D,0x312D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x292D,0x292D,0x292D,0x292E,0x292D,0x312D,0x312D,0x310D,0x310E,0x310D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x394F,0x392E,0x392E,0x392E,0x390E,0x390E,0x390E,0x410E,0x40CD,0x48AD,0x7990,0xC337,0xC2F6,0xCAF6,0xD2D6,0xD2D6,0xD2B5,0xD2B5,0xD2B5,0xD2B5,0xCA95,0xD2B5,0xCA95,0xD295,0xD296,0xD296,0xD296,0xD296,0xD296,0xD296,0xCA97,0xCA97,0xCA97,0xCA97,0xCA97,0xC297,0xC298,0xC298,0xBA98,0xBA78,0xB299,0xB279,0xAA79,0xA259,0x9239,0x81F8,0x79D8,0x6997,0x6157,0x5116,0x48F6,0x40D6,0x40D6,0x40D6,0x38D6,0x38D6,0x40F7,0x40F7,0x40F7,0x4117,0x4118,0x4118,0x4118,0x4118,0x4118,0x4139,0x4139,0x4139,0x4139,0x3939,0x3939,0x3939,0x3939,0x3939,0x3939,0x3939,0x3939,0x3939,0x3919,0x393A,0x3939,0x393A,0x393A,0x393A,0x393A,0x3939,0x3939,0x3939,0x3939,0x3939,0x4139,0x4138,0x4158,0x4138,0x4938,0x4958,0x4958,0x4958,0x4117,0x4117,0x5157,0x5977,0x6197,0x69B7,0x8218,0x8A18,0x9A58,0x9A58,0xA277,0xA257,0xAA56,0xAA36,0xAA36,0xAA36,0xAA15,0xA9F5,0xA9F5,0xA9F5,0xB1F5,0xB1F5,0xB1F5,0xB1F5,0xB1F5,0xB1F5,0xB1F5,0xA9F5,0xA1F5,0x9A15,0x9236,0x8277,0x6AB8,0x5339,0x43FC,0x341D,0x1BDE,0x13FF,0x0BFF,0x0C1F,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03DF,0x03DF,0x03DF,0x03DF,0x03DE,0x03DE,0x03DE,0x043D,0x0CBC,0x257C,0x667F,0x7DFC,0x94B8,0x7A91,0x9273,0x9A33,0xA213,0xA234,0x9A35,0x89D4,0x7172,0x6992,0x61B3,0x5992,0x5992,0x5192,0x5192,0x5192,0x4991,0x4971,0x4991,0x4991,0x4170,0x4170,0x4150,0x4150,0x414F,0x394F,0x394F,0x392F,0x394F,0x392F,0x312E,0x312E,0x312E,0x312E,0x310E,0x310E,0x310E,0x310E,0x292E,0x292E,0x290E,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290E,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292E,0x294F,0x214F,0x190F,0x110F,0x1130,0x1152,0x19B4,0x21D5,0x21D5,0x21D4,0x1972,0x1931,0x1910,0x2130,0x212F,0x212F,0x292E,0x290E,0x292E,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290E,0x290E,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x210D,0x210E,0x292E,0x292E,0x292E,0x290D,0x292E,0x210D,0x212E,0x212E,0x292E,0x292E,0x212E,0x212E,0x210E,0x212F,0x210F,0x190F,0x190F,0x210F,0x210F,0x18EF,0x210F,0x212F,0x210E,0x212E,0x212E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292E,0x192E,0x112E,0x00ED,0x0190,0x44BB,0x1BF8,0x1438,0x0C38,0x0C18,0x0418,0x0438,0x0C38,0x0C18,0x0376,0x0251,0x01F0,0x0210,0x01EF,0x01CF,0x01AE,0x01AE,0x018E,0x116E,0x112D,0x192D,0x192D,0x192D,0x194D,0x214E,0x196E,0x090D,0x010D,0x018F,0x3439,0x2459,0x1419,0x0C39,0x0C39,0x0419,0x0419,0x0439,0x0418,0x03F8,0x0438,0x0418,0x0418,0x0C18,0x1439,0x13F8,0x343A,0x01D0,0x012D,0x112D,0x192E,0x194E,0x192D,0x192D,0x10ED,0x008B,0x00AB,0x00CB,0x00CC,0x00EC,0x00EC,0x012D,0x01F0,0x1C18,0x0C39,0x0C59,0x0418,0x0439,0x0438,0x0438,0x0438, + 0x292D,0x290D,0x292D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292E,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x292E,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x312D,0x290D,0x312D,0x310E,0x310E,0x310E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392E,0x390E,0x390E,0x390E,0x40EE,0x40CD,0x488C,0x9233,0xC337,0xCB16,0xCAF6,0xD2D6,0xD2D6,0xD2D6,0xD2B5,0xD2B5,0xD2B5,0xCAB5,0xCAB5,0xD2B6,0xD2B6,0xD2B6,0xCA96,0xCA96,0xCA97,0xCA97,0xCA97,0xCAB8,0xC2B8,0xC2B8,0xC2B8,0xBAB9,0xBAD9,0xB2DA,0xB2DA,0xAA9A,0xA27A,0x9239,0x8A39,0x81F8,0x71B7,0x6177,0x5956,0x5136,0x4117,0x3917,0x3918,0x3118,0x3118,0x2918,0x2939,0x2939,0x2939,0x2939,0x2939,0x2919,0x2919,0x2919,0x2919,0x2919,0x293A,0x293A,0x293A,0x293A,0x293A,0x293A,0x293A,0x293A,0x213A,0x213A,0x213A,0x213B,0x213B,0x213B,0x213B,0x213B,0x213B,0x213B,0x213B,0x213B,0x213B,0x213B,0x213B,0x213B,0x213B,0x213B,0x295B,0x295B,0x295A,0x295A,0x295A,0x295A,0x295A,0x295A,0x295A,0x297A,0x295A,0x2959,0x3179,0x3979,0x4178,0x4978,0x51B8,0x59B7,0x69F7,0x71F7,0x8258,0x8A78,0x9298,0x9A98,0x9A98,0x9A77,0x9A36,0x91F6,0x9A16,0xA216,0xA216,0xA1F5,0xAA15,0xA9F5,0xA9F5,0xA9F5,0xA9F5,0xA1F5,0x9A15,0x9236,0x8256,0x7297,0x5AD8,0x4B5A,0x441D,0x2C1D,0x1C1E,0x141E,0x0C1F,0x041F,0x041F,0x041F,0x043F,0x041F,0x041F,0x041F,0x03FF,0x041F,0x041F,0x041F,0x041F,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x03FE,0x043E,0x14FD,0x1D1B,0x561E,0x7DFD,0x94D9,0x7A92,0x8A52,0x9A33,0xA213,0xA214,0x9A14,0x9214,0x7192,0x6992,0x69B3,0x5992,0x59B2,0x5192,0x5192,0x5191,0x4991,0x4991,0x4971,0x4991,0x4170,0x4170,0x4150,0x4150,0x394F,0x394F,0x394F,0x394F,0x392F,0x392F,0x392E,0x312E,0x312E,0x312E,0x310E,0x312E,0x310E,0x310E,0x312E,0x290D,0x312E,0x290D,0x312E,0x290D,0x310E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292E,0x294E,0x212F,0x190F,0x110F,0x1130,0x1952,0x1994,0x21D5,0x21D5,0x21B4,0x2172,0x1110,0x1910,0x212F,0x210E,0x210E,0x290E,0x210D,0x292D,0x290D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x20ED,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x210D,0x292D,0x290D,0x290D,0x290D,0x210D,0x292D,0x292E,0x292E,0x210E,0x292E,0x292E,0x210E,0x20EE,0x210E,0x210F,0x210F,0x210E,0x210F,0x210E,0x210E,0x210D,0x210D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x294E,0x192E,0x112E,0x010E,0x018F,0x449B,0x1BF8,0x1418,0x1459,0x0C38,0x0418,0x0C38,0x0C18,0x1439,0x0335,0x01CF,0x016E,0x014D,0x012D,0x012D,0x010C,0x00EB,0x010C,0x092D,0x192D,0x192D,0x190D,0x214D,0x212D,0x214D,0x214E,0x112D,0x090D,0x012D,0x12B3,0x347A,0x1419,0x0C19,0x0C39,0x0439,0x0418,0x0439,0x0438,0x03F8,0x0439,0x0418,0x0C39,0x0C39,0x13F8,0x23F8,0x1AF5,0x010D,0x092D,0x192D,0x192D,0x212D,0x212D,0x212D,0x212D,0x190D,0x10EC,0x10EC,0x08CC,0x00CC,0x00AB,0x00CC,0x016E,0x2C19,0x1439,0x0C39,0x0C59,0x0418,0x0418,0x0438,0x0438, + 0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x292D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x390E,0x38ED,0x40ED,0x40CD,0x58CD,0xAAF6,0xCB37,0xCB16,0xD2F6,0xD2F6,0xD2D6,0xD2D6,0xD2B5,0xD2B5,0xD2B5,0xD2B6,0xD2B6,0xD2B6,0xD2B6,0xCAB6,0xD2D7,0xCAB7,0xCAB7,0xCAB8,0xC2B8,0xBAB8,0xBAB9,0xB2B9,0xAABA,0xA299,0x8A38,0x79F8,0x6156,0x50F5,0x48D4,0x40D4,0x40D5,0x40F5,0x38F6,0x3916,0x3917,0x3917,0x3118,0x3138,0x2938,0x2939,0x2939,0x2139,0x2139,0x213A,0x213A,0x213A,0x213A,0x215A,0x213A,0x193A,0x213B,0x215B,0x193B,0x215B,0x215B,0x195B,0x195B,0x195B,0x195B,0x193B,0x193B,0x193B,0x195C,0x195C,0x195C,0x195C,0x195C,0x195C,0x195C,0x195C,0x195C,0x195C,0x195C,0x195C,0x113C,0x195C,0x195C,0x195C,0x197C,0x197C,0x197C,0x197C,0x197C,0x197C,0x197C,0x199C,0x197C,0x199C,0x19BC,0x19BB,0x19BB,0x21BB,0x21BB,0x29DB,0x31FA,0x39FA,0x39F9,0x39F9,0x41F8,0x41D7,0x41D7,0x51F7,0x59F7,0x59F7,0x61F7,0x7237,0x7A17,0x8237,0x8A37,0x9237,0x9237,0x9A37,0x9A16,0xA216,0xA216,0x9A16,0x9216,0x8A16,0x8236,0x7277,0x62D8,0x4B39,0x43DB,0x343D,0x243E,0x143E,0x0C3F,0x0C3F,0x045F,0x043F,0x045F,0x045F,0x043F,0x043F,0x043F,0x043F,0x041F,0x043F,0x043F,0x043F,0x041F,0x041F,0x041F,0x03FF,0x03FF,0x041F,0x041F,0x041F,0x041F,0x041F,0x045E,0x0CBD,0x253D,0x459D,0x75BD,0x94DA,0x7272,0x8212,0x9A13,0xA214,0xA234,0xA214,0x9A14,0x7172,0x6951,0x69B2,0x6192,0x59B2,0x5992,0x5192,0x5191,0x4971,0x4971,0x4991,0x4170,0x4990,0x4170,0x4170,0x4170,0x416F,0x394F,0x394F,0x394F,0x394F,0x392E,0x312E,0x312E,0x312E,0x312E,0x310E,0x312E,0x290D,0x290D,0x312E,0x312E,0x312D,0x312D,0x312E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x292D,0x292E,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x292E,0x292E,0x212F,0x190F,0x190F,0x1110,0x1152,0x1994,0x21D4,0x21D5,0x21D4,0x1972,0x10F0,0x1910,0x212F,0x212F,0x292E,0x290E,0x290E,0x292E,0x292D,0x210D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290D,0x290D,0x290D,0x292D,0x292D,0x210D,0x20ED,0x210D,0x20ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x210D,0x210D,0x290D,0x290E,0x290E,0x290E,0x290E,0x210E,0x290E,0x290E,0x28EE,0x290E,0x290D,0x292D,0x290D,0x290D,0x210D,0x210C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x292D,0x212D,0x192E,0x090D,0x00ED,0x018F,0x449B,0x1C18,0x1418,0x0C38,0x0C18,0x0C38,0x0418,0x0C18,0x0C18,0x245A,0x347A,0x3C7A,0x44BB,0x4C9B,0x4C9A,0x549A,0x4C59,0x4396,0x094D,0x192D,0x190D,0x212D,0x212D,0x214D,0x214D,0x212D,0x194D,0x114E,0x012D,0x016E,0x2BD8,0x245A,0x1439,0x0C18,0x03F8,0x0418,0x0418,0x0418,0x0418,0x0418,0x0418,0x0C18,0x1418,0x2419,0x2BB7,0x018F,0x010D,0x112E,0x192E,0x212D,0x212D,0x212D,0x212D,0x212D,0x210D,0x190D,0x214E,0x194E,0x112D,0x08EC,0x00EC,0x014E,0x345A,0x1C19,0x0C19,0x0C19,0x03F8,0x0418,0x0418,0x0418, + 0x292D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392E,0x390E,0x390E,0x38ED,0x40ED,0x40AD,0x590E,0xB317,0xCB57,0xCAF6,0xD316,0xD2F6,0xD2D6,0xD2D6,0xD2D6,0xD2D6,0xD2D6,0xD2B6,0xD2B6,0xD2B6,0xCAB6,0xCAD7,0xCAD7,0xCAD8,0xC2D8,0xC2D9,0xBAFA,0xB2FA,0xAADA,0x8A17,0x71B6,0x6155,0x5935,0x4915,0x40D5,0x38F6,0x3916,0x3116,0x3117,0x3137,0x3117,0x3137,0x2937,0x2938,0x2938,0x2938,0x2139,0x2139,0x2139,0x2159,0x213A,0x193A,0x195A,0x195A,0x195A,0x195A,0x195A,0x195B,0x195B,0x195B,0x195B,0x195B,0x115B,0x115C,0x115C,0x115C,0x115C,0x115C,0x115C,0x115C,0x115C,0x115C,0x115C,0x115D,0x095D,0x095D,0x115D,0x115D,0x095D,0x097D,0x097D,0x097D,0x097D,0x095D,0x097D,0x097D,0x097D,0x099D,0x119D,0x099D,0x119D,0x119D,0x119D,0x11BD,0x11BD,0x11DD,0x11DD,0x11DD,0x11FD,0x11FD,0x11FC,0x1A1D,0x1A1C,0x223C,0x2A5C,0x2A5B,0x2A5B,0x2A5A,0x2A3A,0x325A,0x3A5A,0x3A59,0x4259,0x4A59,0x5A79,0x6278,0x7279,0x7278,0x7A78,0x8258,0x8A58,0x8A58,0x9257,0x9237,0x8A37,0x8236,0x7A37,0x7257,0x6298,0x5AF9,0x4BBA,0x3C3C,0x2C5D,0x1C5E,0x145F,0x0C5F,0x0C7F,0x045F,0x045F,0x045F,0x045F,0x045F,0x045F,0x045F,0x045F,0x043F,0x043F,0x043F,0x043F,0x043F,0x043F,0x041F,0x043F,0x041F,0x041F,0x041F,0x041F,0x041F,0x043F,0x047E,0x0CDE,0x1D1D,0x3D5D,0x75BE,0x94FC,0x6A93,0x8232,0x9A33,0xA213,0xA214,0xA214,0x9A14,0x81D3,0x6951,0x69B3,0x61B2,0x5992,0x5992,0x5992,0x5191,0x4971,0x4991,0x4971,0x4971,0x4170,0x4170,0x4170,0x414F,0x414F,0x394F,0x394F,0x394F,0x394F,0x394F,0x392F,0x312E,0x310E,0x312E,0x312E,0x312E,0x312E,0x310E,0x310E,0x312D,0x312D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x292E,0x212E,0x212E,0x190F,0x10EF,0x1110,0x1952,0x1993,0x21B4,0x21D4,0x21B4,0x1972,0x1110,0x1930,0x212F,0x210E,0x210E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x210D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x28ED,0x28ED,0x290D,0x210D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x292D,0x210D,0x212E,0x112E,0x00ED,0x018F,0x449B,0x2418,0x1C18,0x0C18,0x0C18,0x0C18,0x0C38,0x0BF8,0x0BF8,0x0BD7,0x13D8,0x1BD7,0x1BD8,0x23F8,0x3439,0x3419,0x4459,0x5439,0x092D,0x190D,0x190D,0x210D,0x212D,0x212D,0x214D,0x212D,0x212D,0x192D,0x112E,0x014E,0x0211,0x347A,0x1C19,0x1418,0x0418,0x0418,0x0418,0x0C39,0x0439,0x0439,0x0C39,0x0C18,0x1418,0x3C9B,0x12B3,0x010D,0x090D,0x192E,0x190D,0x210D,0x212D,0x212D,0x210D,0x210D,0x210D,0x210D,0x214D,0x214D,0x194D,0x112D,0x00EC,0x014D,0x3C7A,0x13F8,0x1419,0x03F8,0x03F8,0x0418,0x0418,0x0418, + 0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392E,0x390E,0x390E,0x38ED,0x40ED,0x40AC,0x694F,0xC398,0xC337,0xCB17,0xCAF6,0xD2F6,0xD2D6,0xD2D6,0xD2D6,0xD2D6,0xD2D6,0xD2D6,0xD2D6,0xCAB6,0xCAD7,0xCAD7,0xCAD8,0xC2D8,0xBAF9,0xB2FA,0xA2BA,0x8218,0x5935,0x40D3,0x40F4,0x4115,0x4115,0x4116,0x3936,0x3936,0x3137,0x3137,0x3137,0x3137,0x2937,0x2938,0x2938,0x2938,0x2938,0x2938,0x2139,0x2139,0x2139,0x2159,0x195A,0x195A,0x195A,0x195A,0x195A,0x195A,0x195B,0x115B,0x115B,0x115B,0x115C,0x115C,0x115C,0x115C,0x115C,0x115C,0x115C,0x115C,0x115C,0x115C,0x117D,0x117D,0x117D,0x097D,0x097D,0x097D,0x097D,0x097D,0x097E,0x099E,0x097E,0x097E,0x097E,0x097E,0x099E,0x099E,0x099E,0x099E,0x099E,0x09BE,0x09BE,0x09BE,0x09BE,0x09DE,0x09DE,0x09FE,0x09FE,0x0A1E,0x0A1E,0x0A1E,0x0A1E,0x0A3E,0x123E,0x125D,0x127D,0x1A9D,0x1A9D,0x1A9C,0x229C,0x22BC,0x2ABB,0x2ADB,0x32DB,0x3ADB,0x3ADA,0x42DA,0x4ADA,0x52FA,0x5ADA,0x62BA,0x6ABA,0x7299,0x7299,0x7A99,0x7A98,0x7A78,0x7257,0x6A57,0x5A77,0x52B8,0x4B5A,0x443C,0x347D,0x247D,0x147E,0x147F,0x0C7F,0x0C7F,0x047F,0x047F,0x047F,0x047F,0x047F,0x047F,0x047F,0x047F,0x045F,0x045F,0x045F,0x045F,0x045F,0x043F,0x043F,0x043F,0x043F,0x043F,0x043F,0x043F,0x043F,0x045F,0x049F,0x0CFE,0x1D3E,0x353D,0x659E,0x8D1D,0x72F5,0x8253,0x9A54,0x9A13,0xA214,0xA214,0x9A15,0x9214,0x7171,0x71D3,0x6192,0x5992,0x5991,0x5192,0x5191,0x5191,0x4971,0x4970,0x4971,0x4170,0x4170,0x4170,0x4170,0x414F,0x394F,0x394F,0x394F,0x392F,0x312E,0x312E,0x312E,0x314E,0x314E,0x312E,0x312E,0x312E,0x310E,0x312E,0x312E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x292E,0x292E,0x210E,0x190F,0x1910,0x1931,0x1972,0x1993,0x1993,0x21D4,0x21B4,0x1952,0x10EF,0x190F,0x212F,0x212F,0x292E,0x290E,0x290D,0x210D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x20EC,0x290D,0x290D,0x290D,0x290D,0x210D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292E,0x214E,0x112E,0x00ED,0x018F,0x4C9B,0x23D8,0x1C18,0x1439,0x1418,0x1439,0x03D8,0x0BF8,0x0BF8,0x13F8,0x13D8,0x13D8,0x1BD8,0x1BD8,0x23F8,0x2BF8,0x3C19,0x545A,0x00EC,0x192D,0x212D,0x292D,0x210D,0x212D,0x212D,0x292D,0x210D,0x190D,0x112D,0x094E,0x016F,0x3419,0x2439,0x13F8,0x0C18,0x0C18,0x0418,0x0419,0x0419,0x0C19,0x0C19,0x1419,0x2419,0x2BD8,0x014E,0x00ED,0x112E,0x214E,0x212E,0x212D,0x20ED,0x210D,0x290D,0x292D,0x292D,0x212D,0x212D,0x212D,0x212D,0x112D,0x090D,0x016E,0x447A,0x1BF8,0x1419,0x1419,0x0C18,0x0BF8,0x0C19,0x03F8, + 0x290D,0x290D,0x290C,0x290D,0x292D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x312D,0x310D,0x310D,0x312E,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x390E,0x390D,0x38ED,0x40CD,0x408C,0x71B0,0xBB57,0xC337,0xCB17,0xD2F6,0xD2F6,0xD2F6,0xD2D6,0xD2D6,0xCAD6,0xCAD6,0xCAD6,0xCAD6,0xCAD6,0xCAD7,0xC2D8,0xC2F9,0xBB19,0xB31A,0x8A17,0x6134,0x5114,0x40F4,0x3915,0x3935,0x3136,0x3136,0x3136,0x3136,0x3136,0x3137,0x3137,0x2937,0x2937,0x2937,0x2937,0x2938,0x2938,0x2938,0x2938,0x2138,0x2159,0x2139,0x2159,0x2159,0x2159,0x215A,0x195A,0x195A,0x195A,0x195A,0x195B,0x195B,0x115B,0x115B,0x115B,0x117C,0x117C,0x117C,0x117C,0x117C,0x117C,0x117C,0x117C,0x117D,0x117D,0x117D,0x117D,0x097D,0x097D,0x097D,0x097D,0x097E,0x099E,0x019E,0x019E,0x019E,0x019E,0x019E,0x019E,0x019E,0x019E,0x01BE,0x01BF,0x01BE,0x01BF,0x01BE,0x01DF,0x01DF,0x01FF,0x021F,0x023F,0x023F,0x023F,0x025F,0x025F,0x027E,0x0A7E,0x0A9E,0x0A9E,0x12BE,0x12DD,0x12DD,0x12FD,0x1AFD,0x1AFD,0x231D,0x231C,0x2B3C,0x2B3C,0x335C,0x3B5B,0x3B5B,0x433B,0x4B3B,0x52FA,0x5B1A,0x5AFA,0x6B1A,0x6AFA,0x62D9,0x62D9,0x5AD9,0x4AD8,0x4319,0x3B9B,0x347D,0x249D,0x1C9E,0x149F,0x0C9F,0x0C9F,0x049F,0x049F,0x049F,0x049F,0x047F,0x047F,0x049F,0x049F,0x049F,0x047F,0x045F,0x045F,0x045F,0x045F,0x045F,0x045F,0x045F,0x043F,0x043F,0x043F,0x045F,0x047F,0x049F,0x04BF,0x0CFE,0x1D3E,0x355D,0x5D7E,0x851D,0x7315,0x8253,0x9A53,0xA234,0xA214,0xA1F4,0xA235,0x9235,0x7172,0x6992,0x6192,0x5971,0x5992,0x5992,0x5192,0x5191,0x4991,0x4991,0x4970,0x4170,0x4170,0x4170,0x4170,0x414F,0x394F,0x394F,0x394F,0x312E,0x394F,0x312E,0x312E,0x314E,0x314E,0x312E,0x312E,0x310E,0x312E,0x312E,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290D,0x290C,0x292D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290E,0x290E,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x292D,0x290D,0x210E,0x210E,0x212F,0x190F,0x1910,0x1931,0x1952,0x1993,0x19B4,0x21D4,0x21B4,0x1952,0x1110,0x190F,0x212F,0x210E,0x210E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x210D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x212D,0x190E,0x110E,0x00ED,0x0190,0x4C5A,0x2BF8,0x2419,0x1C19,0x13F8,0x13D8,0x13F8,0x13F8,0x13D8,0x13F9,0x13F8,0x13D8,0x1BD8,0x1BD8,0x23D8,0x2BF9,0x33F9,0x545A,0x00ED,0x190D,0x210D,0x210D,0x210D,0x212D,0x292D,0x292D,0x210D,0x210D,0x192D,0x112E,0x014E,0x2B77,0x3439,0x1BF9,0x13F8,0x1439,0x0BF8,0x0BF9,0x0BF9,0x0C19,0x1419,0x1BD8,0x2BF9,0x0A52,0x00ED,0x090D,0x110D,0x190D,0x210E,0x210D,0x210D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x210D,0x210D,0x192D,0x090C,0x016E,0x4439,0x23F8,0x1BF9,0x13F9,0x13F8,0x0BF8,0x0BF9,0x0BD8, + 0x290D,0x290D,0x292D,0x290D,0x292D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x312D,0x290D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x312D,0x312D,0x312D,0x312E,0x310D,0x310E,0x312E,0x312E,0x392E,0x392E,0x392E,0x390D,0x390D,0x38ED,0x40CD,0x48AC,0x81F2,0xC399,0xC337,0xCB17,0xCB16,0xD2F6,0xD2F6,0xD2F6,0xD2F6,0xCAD6,0xCAD6,0xCAD6,0xCAD6,0xCAD7,0xC2D7,0xC319,0xB2F9,0x9A98,0x6974,0x48D2,0x40F3,0x4114,0x4135,0x3935,0x3935,0x3135,0x3136,0x3136,0x2936,0x2936,0x2936,0x2936,0x2937,0x2937,0x2937,0x2937,0x2937,0x2937,0x2937,0x2937,0x2937,0x2938,0x2958,0x2138,0x2158,0x2158,0x2159,0x2159,0x2159,0x2159,0x215A,0x195A,0x195A,0x195A,0x195A,0x195B,0x195B,0x115B,0x195B,0x195C,0x195C,0x115C,0x117C,0x117C,0x117C,0x117C,0x117C,0x117D,0x117D,0x119D,0x099D,0x099D,0x099E,0x097E,0x099E,0x099E,0x019E,0x019E,0x019E,0x019E,0x019F,0x01BF,0x01BF,0x01BF,0x01BF,0x01DF,0x01FF,0x01DF,0x01FF,0x021F,0x021F,0x023F,0x025F,0x025F,0x027F,0x029F,0x029F,0x02BF,0x02BF,0x02DE,0x02DE,0x0AFE,0x0B1E,0x0B3E,0x133E,0x133E,0x133D,0x1B5D,0x1B5D,0x1B9D,0x1B9D,0x23BD,0x23BD,0x2BBC,0x339C,0x3BBC,0x3B9C,0x4BBC,0x53DC,0x5BDB,0x5BDB,0x5BDB,0x53BB,0x4BDB,0x43FB,0x3BDB,0x2C1C,0x249D,0x1CBE,0x14BE,0x0CBF,0x0CBF,0x0C9F,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x047F,0x047F,0x047F,0x047F,0x045F,0x047F,0x047F,0x045F,0x045F,0x045F,0x047F,0x049F,0x04BF,0x04BF,0x04DE,0x1D1E,0x353E,0x5D9F,0x855E,0x62F5,0x8274,0x9A74,0xA254,0xA214,0xA1F4,0xA215,0x9A34,0x7992,0x6972,0x69B2,0x6192,0x59B2,0x5191,0x5191,0x5191,0x4991,0x4991,0x4970,0x4170,0x4150,0x4170,0x4170,0x416F,0x414F,0x394F,0x394F,0x392F,0x392F,0x394E,0x312E,0x312E,0x312E,0x310E,0x312E,0x312E,0x312D,0x310D,0x312D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x292C,0x290C,0x290C,0x292C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x28EC,0x28ED,0x290D,0x290E,0x210E,0x210E,0x212F,0x210F,0x2130,0x1930,0x1972,0x1993,0x21B4,0x21D4,0x21D4,0x1972,0x1110,0x1910,0x212F,0x212F,0x292E,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x292D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292E,0x212E,0x10ED,0x00ED,0x0990,0x4C1A,0x33D9,0x2BD9,0x23D8,0x1BB8,0x1BD9,0x1BD9,0x1BB8,0x1BD9,0x1BD9,0x1BD9,0x1BD9,0x23D9,0x23D9,0x23D8,0x2BB8,0x33B8,0x545A,0x010D,0x190D,0x210D,0x210D,0x292D,0x292D,0x292D,0x210D,0x212D,0x210D,0x190D,0x112E,0x010E,0x43F9,0x3C3A,0x23D9,0x1BB8,0x1BD9,0x1BF9,0x13D9,0x13F9,0x1BD9,0x1BD9,0x2C1A,0x3C1A,0x22D5,0x008C,0x10EE,0x190E,0x190D,0x210D,0x210D,0x210D,0x292D,0x290D,0x210D,0x290D,0x210D,0x210D,0x210D,0x210C,0x190C,0x08EC,0x094E,0x4419,0x2BD8,0x23B8,0x1BB9,0x1BB9,0x1BD9,0x13B9,0x13B9, + 0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x290D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x312E,0x312D,0x312D,0x312D,0x310D,0x312E,0x312E,0x312E,0x392E,0x392E,0x390E,0x390D,0x38ED,0x40CD,0x406B,0x8212,0xBB78,0xC337,0xCB37,0xD317,0xD317,0xD317,0xD2F6,0xCAF6,0xCAF6,0xCAF6,0xCAF7,0xC2F7,0xC2F7,0xC338,0xC359,0x7993,0x58D1,0x48D2,0x40D2,0x3913,0x3914,0x3934,0x3935,0x3955,0x3135,0x3135,0x2935,0x2935,0x2935,0x2935,0x2935,0x2935,0x2936,0x2936,0x2936,0x2936,0x2936,0x2936,0x2956,0x2956,0x2956,0x3157,0x3157,0x3157,0x2957,0x3157,0x2957,0x2958,0x2958,0x2978,0x2958,0x2958,0x2138,0x2138,0x2138,0x1938,0x1918,0x1938,0x1939,0x1919,0x1939,0x195A,0x195A,0x195B,0x195B,0x195B,0x115B,0x115C,0x117C,0x117C,0x119D,0x097D,0x097D,0x099D,0x099E,0x099E,0x099E,0x019E,0x01BE,0x01BE,0x01BF,0x01BE,0x01BF,0x01BF,0x01DF,0x01FF,0x01FF,0x021F,0x021F,0x023F,0x023F,0x025F,0x027F,0x029F,0x029F,0x02BF,0x02DF,0x02DF,0x02FF,0x031F,0x031F,0x033F,0x035F,0x0B5F,0x0B7F,0x0B7E,0x139F,0x139E,0x13BE,0x13DE,0x13DE,0x13FE,0x13FE,0x1C1E,0x1BFD,0x2C1D,0x2C1D,0x3C3D,0x3C3C,0x445D,0x445C,0x445C,0x447C,0x3C7D,0x347D,0x2C7D,0x249D,0x1CBE,0x14DE,0x0CDF,0x0CDF,0x0CDF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x049F,0x049F,0x049F,0x047F,0x047F,0x047F,0x047F,0x047F,0x045F,0x047F,0x049F,0x04BF,0x04BF,0x04DF,0x0D1E,0x1D5F,0x2D5E,0x557F,0x857F,0x6336,0x7A74,0x9A74,0xA254,0xA214,0x99D3,0x99F4,0xA255,0x89D3,0x7172,0x69B2,0x6192,0x5992,0x5991,0x5191,0x51B1,0x4991,0x4990,0x4970,0x4970,0x4170,0x4170,0x4170,0x416F,0x414F,0x394F,0x394F,0x394F,0x392E,0x394E,0x312E,0x312E,0x312E,0x312E,0x312E,0x310D,0x312E,0x312E,0x310D,0x312D,0x312D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x210D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x28ED,0x290D,0x290D,0x210E,0x292E,0x210E,0x212F,0x210F,0x212F,0x1930,0x1972,0x1993,0x21B4,0x21D4,0x21D4,0x1951,0x1110,0x190F,0x210F,0x210F,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x210D,0x292D,0x210D,0x210C,0x292D,0x292D,0x290C,0x290D,0x210C,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x212D,0x212E,0x190E,0x00CD,0x1170,0x53FA,0x3BB9,0x3BD9,0x33D9,0x2BB9,0x2BB9,0x23B9,0x2BD9,0x2BDA,0x23DA,0x23B9,0x23B9,0x23B9,0x2BD9,0x2BB8,0x33D9,0x3BD9,0x5C3A,0x092E,0x18ED,0x20ED,0x210D,0x210D,0x292D,0x210D,0x290D,0x292D,0x210D,0x210E,0x110E,0x094F,0x5C3B,0x3BD9,0x2B99,0x2378,0x2399,0x23B9,0x23B9,0x23B9,0x2399,0x2B99,0x33BA,0x4BFB,0x643B,0x00AD,0x10AD,0x18EE,0x210E,0x210E,0x290D,0x20ED,0x290D,0x290D,0x210D,0x290D,0x290D,0x292D,0x20EC,0x290D,0x18EC,0x10CC,0x090D,0x541A,0x3398,0x2BB9,0x2BB9,0x23B9,0x23B9,0x2399,0x2399, + 0x290D,0x290D,0x292D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312E,0x312E,0x312E,0x312D,0x312D,0x312E,0x312D,0x312D,0x390D,0x390D,0x390E,0x390D,0x38ED,0x38CC,0x488C,0x8A53,0xC398,0xC337,0xCB37,0xD317,0xD317,0xCB17,0xCAF6,0xCAF6,0xCAF6,0xCAF7,0xC317,0xC338,0xBB38,0xA2B7,0x79D3,0x406F,0x40B1,0x40D1,0x38F2,0x3913,0x3113,0x3113,0x3134,0x3134,0x3134,0x3135,0x3175,0x3975,0x3996,0x3996,0x39B6,0x39B6,0x39B6,0x41B6,0x39B6,0x41B6,0x41B6,0x41B6,0x41D7,0x41D7,0x41D6,0x41D7,0x41D6,0x49D7,0x49F7,0x49F7,0x49F7,0x49D7,0x49F7,0x49D7,0x49D7,0x49F7,0x49F7,0x49F8,0x49F8,0x4A18,0x4A18,0x4A19,0x4A39,0x4A19,0x4A1A,0x49FA,0x41DA,0x3179,0x2938,0x2139,0x2139,0x213A,0x193A,0x193B,0x115B,0x115C,0x117C,0x117D,0x097D,0x099D,0x099E,0x099E,0x019E,0x09BE,0x09BE,0x01BE,0x01BE,0x01DF,0x01DF,0x01DF,0x01FF,0x021F,0x021F,0x023F,0x025F,0x027F,0x027F,0x029F,0x02BF,0x02DF,0x02DF,0x02FF,0x031F,0x031F,0x033F,0x035F,0x037F,0x037F,0x039F,0x0BBF,0x0BBF,0x0BDF,0x0BDF,0x0BFF,0x0C1F,0x143F,0x0C3F,0x0C3E,0x145E,0x147E,0x1C7E,0x249D,0x249D,0x247D,0x349D,0x349D,0x34BD,0x34DD,0x2CDD,0x2CFE,0x24DE,0x1CDE,0x14DE,0x14FE,0x0CDF,0x0CDF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x049F,0x049F,0x049F,0x049F,0x049F,0x047F,0x047F,0x047F,0x047F,0x04BF,0x04DF,0x04DF,0x04FF,0x0D1E,0x153E,0x2D5E,0x4D7F,0x7D7F,0x6336,0x7A94,0x9274,0x9A54,0xA214,0x99D3,0xA1F4,0xA214,0x9234,0x7151,0x6992,0x6192,0x5991,0x5171,0x5192,0x51B1,0x5191,0x4991,0x4990,0x4970,0x4970,0x4170,0x4170,0x414F,0x394F,0x394F,0x392F,0x392F,0x392E,0x394E,0x392E,0x312E,0x312E,0x310E,0x310D,0x310D,0x312E,0x312E,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290C,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x310D,0x28EC,0x28EC,0x28ED,0x290D,0x292E,0x290E,0x292E,0x210E,0x210E,0x210E,0x190F,0x1930,0x1952,0x1993,0x21D4,0x21F4,0x21B3,0x1951,0x1910,0x190F,0x212F,0x210E,0x292E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x292D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x292D,0x290D,0x290D,0x210D,0x290D,0x290D,0x212D,0x212D,0x292D,0x292D,0x292D,0x292D,0x290D,0x292D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x210D,0x210E,0x18EE,0x08CE,0x1971,0x63FB,0x4B9A,0x4BBA,0x43BA,0x3B9A,0x3B9A,0x3B9A,0x3B9A,0x339A,0x3BBA,0x3C1B,0x3BFA,0x3BFA,0x3C1A,0x3BD9,0x43D9,0x4C1A,0x749C,0x194F,0x18ED,0x210D,0x290D,0x20EC,0x210D,0x290D,0x20EC,0x210D,0x210D,0x20EE,0x10CD,0x5B78,0x53BA,0x4379,0x3B79,0x3B9A,0x3B9A,0x3B9A,0x3BBA,0x3BBA,0x43BB,0x3B5A,0x4339,0x4B59,0x5B9A,0x6359,0x10AE,0x18CE,0x20EE,0x290E,0x290E,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x20ED,0x10CD,0x192E,0x641A,0x4BB9,0x43BA,0x3B99,0x3B79,0x3B9A,0x3BBB,0x3B9A, + 0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x312E,0x312D,0x312D,0x312E,0x312D,0x312D,0x312D,0x390D,0x390D,0x390D,0x38ED,0x38CC,0x386B,0x81F2,0xBB57,0xC337,0xCB37,0xD337,0xD337,0xCB17,0xCB17,0xCB17,0xCB17,0xC317,0xC337,0xC358,0x9255,0x6110,0x48AF,0x40D0,0x40F1,0x38F1,0x3912,0x3912,0x3933,0x3133,0x3133,0x3154,0x3154,0x3154,0x3954,0x3974,0x3995,0x3995,0x3994,0x4195,0x3994,0x4194,0x4195,0x41B5,0x41B4,0x41B4,0x41B4,0x41B4,0x41B4,0x41B4,0x41B4,0x41B4,0x49B4,0x49B4,0x49B4,0x49B4,0x49B4,0x49B5,0x49B4,0x49B4,0x51D5,0x51D5,0x51D5,0x51D5,0x51D5,0x51D5,0x51D5,0x51F6,0x51D6,0x49D6,0x51D7,0x51F8,0x51F8,0x41D9,0x3978,0x3158,0x2958,0x2938,0x2139,0x2159,0x1939,0x195A,0x115B,0x117C,0x117C,0x119D,0x099D,0x099D,0x09BE,0x09BE,0x09BE,0x09DE,0x09DE,0x01DE,0x01FF,0x01FF,0x021F,0x023F,0x025F,0x027F,0x029F,0x029F,0x02DF,0x02DF,0x02FF,0x02FF,0x031F,0x033F,0x035F,0x037F,0x039F,0x03BF,0x03BF,0x03DF,0x03DF,0x0BFF,0x0C1F,0x0C1F,0x0C3F,0x0C5F,0x0C5F,0x0C7F,0x0C7F,0x0CBF,0x0CBE,0x14DF,0x14DE,0x1CFE,0x1CDE,0x24FE,0x24FE,0x251E,0x251E,0x1D1E,0x1D3E,0x1D3E,0x151E,0x0D1E,0x0CFF,0x0D1F,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04BF,0x04BF,0x04BF,0x04BF,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x049F,0x04BF,0x04FF,0x04FF,0x051F,0x0D5F,0x153E,0x2D7F,0x4D9F,0x75BF,0x6397,0x6A74,0x9274,0x9A54,0xA234,0x99D3,0xA1F4,0xA234,0xA255,0x7992,0x6972,0x6192,0x5992,0x5992,0x5191,0x5191,0x5191,0x4991,0x4990,0x4970,0x4170,0x4170,0x4170,0x414F,0x414F,0x414F,0x394F,0x394F,0x392E,0x312E,0x392E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x310D,0x312D,0x290D,0x310D,0x290D,0x290D,0x310D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x312D,0x290C,0x292D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x292D,0x292D,0x210D,0x20ED,0x210E,0x210E,0x190F,0x1930,0x1972,0x1993,0x21B4,0x21F4,0x2193,0x1951,0x1910,0x190F,0x210F,0x210E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290C,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x292D,0x212D,0x212D,0x210D,0x212D,0x212D,0x212D,0x212D,0x212E,0x212E,0x212D,0x212D,0x212D,0x292D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x20ED,0x20EE,0x108D,0x2130,0x73FC,0x5B9A,0x5B7B,0x535A,0x4B3A,0x4B3A,0x4B5A,0x4B7A,0x4B5A,0x4B7A,0x5C1C,0x4BDA,0x4BDA,0x4BBA,0x4BBA,0x53B9,0x5BDA,0x743B,0x31B1,0x20EE,0x20ED,0x28ED,0x290D,0x290D,0x290D,0x290D,0x28ED,0x28EE,0x188D,0x4A34,0x6B9A,0x5B39,0x5339,0x537B,0x537A,0x537B,0x4B7A,0x4B5A,0x4B5A,0x535B,0x5B7B,0x5B3A,0x5B19,0x6319,0x6B39,0x41F3,0x104C,0x28EE,0x28ED,0x28ED,0x28ED,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x292D,0x20ED,0x20ED,0x18AC,0x10CD,0x6BDA,0x5B9A,0x5B9A,0x537A,0x535A,0x4B5A,0x4B7B,0x4B5A, + 0x28EC,0x28EC,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x292C,0x292C,0x290C,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x292D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x310D,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x390D,0x390D,0x38ED,0x38CC,0x408C,0x79F2,0xC398,0xC337,0xCB37,0xCB17,0xCB17,0xCB17,0xCB17,0xCB17,0xC317,0xC337,0xB2F7,0x9275,0x50CE,0x408E,0x40CF,0x40F0,0x3910,0x3911,0x3932,0x3952,0x3952,0x4173,0x4194,0x4194,0x4194,0x4194,0x4173,0x3973,0x4173,0x4193,0x4194,0x4193,0x4193,0x4193,0x4193,0x4193,0x4193,0x4193,0x4193,0x4193,0x4193,0x49B3,0x4992,0x4992,0x49B3,0x49B2,0x49B2,0x49B2,0x4992,0x4993,0x49B3,0x49B3,0x49B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51D4,0x51B4,0x51D4,0x51B4,0x51D5,0x51D5,0x51D5,0x51D6,0x51F7,0x51F7,0x5218,0x5218,0x51F8,0x49D8,0x41B8,0x3198,0x2978,0x2179,0x195A,0x195A,0x117B,0x117B,0x119C,0x099D,0x09BD,0x09BD,0x09DD,0x09DE,0x09FE,0x09FE,0x021E,0x023E,0x025F,0x027F,0x027F,0x029F,0x02DF,0x02DF,0x031F,0x031F,0x033F,0x035F,0x037F,0x039F,0x03BF,0x03DF,0x03DF,0x03DF,0x03FF,0x03FF,0x041F,0x043F,0x045F,0x045F,0x0C7F,0x049F,0x04BF,0x04DF,0x0CFF,0x0D1F,0x0D3F,0x0D1E,0x153E,0x153E,0x153E,0x153E,0x153E,0x155E,0x155F,0x155F,0x155F,0x0D3F,0x0D3F,0x051F,0x053F,0x051F,0x051F,0x051F,0x04FF,0x04FF,0x051F,0x04FF,0x04FF,0x04FF,0x04FF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04BF,0x04BF,0x049F,0x049F,0x04BF,0x04BF,0x049F,0x04BF,0x04DF,0x051F,0x051F,0x053F,0x0D7F,0x157F,0x2D9F,0x4DDF,0x75FF,0x5BD8,0x6274,0x8A74,0x9A95,0xA234,0xA1F3,0xA1F4,0xA214,0xA255,0x89D3,0x7171,0x69B2,0x5991,0x5991,0x5191,0x5191,0x5191,0x4991,0x4991,0x4970,0x4170,0x4150,0x4150,0x416F,0x414F,0x414F,0x394F,0x392E,0x392E,0x392E,0x392E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312D,0x290D,0x310D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x210E,0x210E,0x190F,0x1930,0x1951,0x1993,0x21B4,0x21D4,0x21B3,0x1952,0x1910,0x190F,0x210E,0x210E,0x290E,0x290E,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290D,0x212D,0x210D,0x212E,0x212E,0x210E,0x210E,0x190E,0x212E,0x212E,0x212E,0x212E,0x210D,0x210D,0x210D,0x210D,0x290D,0x290D,0x290C,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x20CD,0x188D,0x2931,0x841D,0x737B,0x737B,0x6B5B,0x6B3B,0x633B,0x6B7C,0x6B5B,0x6B9C,0x29B4,0x002E,0x000D,0x000D,0x000D,0x002D,0x002C,0x000C,0x000B,0x20AE,0x28AD,0x28AD,0x28CD,0x290D,0x290D,0x28ED,0x28ED,0x28CD,0x20AD,0x3930,0x7B5A,0x7339,0x733A,0x6B3B,0x6B3B,0x633B,0x633B,0x635B,0x633B,0x633B,0x631B,0x6B3B,0x733B,0x733B,0x7B1B,0x7B1A,0x833A,0x28CF,0x208D,0x28CE,0x28CD,0x28ED,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x20CD,0x20AD,0x20EE,0x7BDB,0x6B7A,0x6B7B,0x633A,0x6B5B,0x6B5B,0x633B,0x5B3B, + 0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x312D,0x312D,0x312D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x390D,0x38ED,0x38CC,0x386B,0x71B0,0xBB77,0xC357,0xCB37,0xCB37,0xCB37,0xCB37,0xCB37,0xC337,0xC357,0xBB78,0x7991,0x58CE,0x408D,0x40CE,0x38EF,0x4110,0x4130,0x3931,0x3951,0x4152,0x3952,0x4172,0x4172,0x4173,0x4173,0x4172,0x4172,0x4172,0x4172,0x4172,0x4192,0x4192,0x4192,0x4192,0x4192,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4992,0x4991,0x4991,0x4991,0x4991,0x4991,0x49B2,0x4992,0x4992,0x51B2,0x51B2,0x5192,0x5192,0x5192,0x51B2,0x51B2,0x51B2,0x51B3,0x51B3,0x51B3,0x51B3,0x51B3,0x51B4,0x51D5,0x59F5,0x59F5,0x59F6,0x51F6,0x51F7,0x51F7,0x49F8,0x41D8,0x39B8,0x31B9,0x2979,0x2159,0x1979,0x197A,0x117B,0x119C,0x11BC,0x11DC,0x11DD,0x11FD,0x0A1E,0x0A1E,0x0A3E,0x0A7E,0x027E,0x029F,0x02BF,0x02DF,0x02FF,0x031F,0x035F,0x037F,0x039F,0x03BF,0x03DF,0x03DF,0x03DF,0x03FF,0x03FF,0x041F,0x041F,0x045F,0x045F,0x047F,0x049F,0x04BF,0x04DF,0x04FF,0x051F,0x0D3F,0x0D5F,0x0D5F,0x0D7F,0x0D7F,0x0D7F,0x0D7F,0x0D7F,0x0D7F,0x0D7F,0x0D9F,0x0D9F,0x0D7F,0x0D7F,0x055F,0x055F,0x055F,0x053F,0x053F,0x053F,0x053F,0x051F,0x051F,0x051F,0x051F,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04DF,0x04DF,0x04DF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04BF,0x04DF,0x04FF,0x053F,0x055F,0x055F,0x0D7F,0x159F,0x259E,0x45DF,0x6E1F,0x5C39,0x5A74,0x8274,0x9254,0xA234,0xA1F3,0xA1D3,0xA1F4,0xAA35,0x9214,0x7151,0x71B2,0x6192,0x5971,0x5191,0x5191,0x5191,0x4991,0x4990,0x4970,0x4170,0x4150,0x4170,0x416F,0x394F,0x394F,0x394F,0x392E,0x392E,0x392E,0x392E,0x312E,0x312E,0x312E,0x310D,0x312E,0x312D,0x312E,0x312D,0x310D,0x310D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x292D,0x210E,0x210E,0x190F,0x1930,0x1951,0x1973,0x21D4,0x21F4,0x21B3,0x1951,0x1910,0x190F,0x210F,0x210E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290C,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x292D,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x210D,0x212D,0x212E,0x212E,0x190E,0x190E,0x192F,0x192F,0x192F,0x192F,0x192E,0x212F,0x210E,0x210E,0x210E,0x210E,0x210D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x28ED,0x20CD,0x188D,0x3111,0x93DD,0x835B,0x833B,0x7B1B,0x7AFB,0x7AFB,0x7AFB,0x7B1B,0x8B9D,0x5A17,0x2070,0x202F,0x180E,0x180E,0x180E,0x180E,0x180D,0x180D,0x180C,0x288D,0x288D,0x30CD,0x28CD,0x30ED,0x28ED,0x28AD,0x28AE,0x202D,0x7AB8,0x82FA,0x7AFA,0x831B,0x831B,0x7B1B,0x7B1B,0x731B,0x731B,0x731B,0x72FB,0x7AFB,0x7AFC,0x82FB,0x82FB,0x82DB,0x82DA,0x82FA,0x7277,0x202D,0x28AE,0x28CD,0x28ED,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x20CD,0x20AD,0x20AE,0x839B,0x835B,0x835B,0x7B1B,0x7AFB,0x7AFB,0x72FB,0x72FB, + 0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x292D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x28EC,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x292D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x390D,0x38ED,0x38CC,0x40AC,0x71D1,0xC3D9,0xC378,0xCB57,0xCB37,0xCB37,0xCB37,0xC337,0xC358,0xB337,0x9274,0x486C,0x40AD,0x40CE,0x40EE,0x390F,0x392F,0x390F,0x3930,0x3951,0x3951,0x3951,0x3951,0x3971,0x3971,0x3971,0x3951,0x3951,0x4171,0x4171,0x4171,0x4171,0x4991,0x4991,0x4991,0x4991,0x4991,0x4991,0x4991,0x4991,0x4991,0x4991,0x4991,0x4991,0x4991,0x4991,0x4991,0x4991,0x4991,0x5191,0x51B1,0x49B1,0x51B1,0x51B1,0x5191,0x51B1,0x51B1,0x51B1,0x5191,0x5191,0x5191,0x5191,0x51B2,0x5192,0x51B2,0x51B2,0x51B2,0x51B2,0x51B3,0x51B3,0x51D3,0x51D4,0x51D4,0x51D5,0x51F5,0x51F6,0x51F6,0x51F6,0x5217,0x5218,0x4A18,0x4219,0x39F9,0x31D9,0x29BA,0x219A,0x19BB,0x19DC,0x19FC,0x1A1D,0x1A3D,0x123D,0x125E,0x127E,0x0A9E,0x0ABE,0x0ADE,0x02FF,0x02FF,0x033F,0x035F,0x037F,0x039F,0x03BF,0x03BF,0x03DF,0x03DF,0x03FF,0x041F,0x043F,0x045F,0x047F,0x049F,0x04BF,0x04BF,0x04FF,0x04FF,0x051F,0x053F,0x055F,0x0D9F,0x0D9F,0x0D9F,0x0DBF,0x0DBF,0x0DBF,0x0D9F,0x0D9F,0x059F,0x0DBF,0x0D9F,0x059F,0x057F,0x057F,0x057F,0x057F,0x055F,0x055F,0x053F,0x055F,0x053F,0x053F,0x051F,0x051F,0x051F,0x051F,0x051F,0x04FF,0x051F,0x04FF,0x04FF,0x04FF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04DF,0x04FF,0x053F,0x055F,0x057F,0x057F,0x0D9F,0x15BF,0x25BF,0x3DFF,0x663F,0x6CFC,0x5273,0x7253,0x9254,0x9A33,0xA1F3,0xA9F4,0xA9F3,0xAA14,0x9A14,0x7992,0x7192,0x6192,0x5971,0x5191,0x5171,0x51B1,0x5191,0x4991,0x4970,0x4170,0x4170,0x4170,0x416F,0x414F,0x414F,0x394F,0x394E,0x392E,0x392E,0x392E,0x394E,0x392E,0x312E,0x310D,0x312D,0x312E,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290C,0x292D,0x290C,0x290C,0x290C,0x292D,0x292D,0x290D,0x292D,0x292E,0x210E,0x210E,0x190F,0x1910,0x1952,0x1993,0x21D4,0x21D4,0x21B3,0x1951,0x1910,0x18EF,0x210F,0x212E,0x292E,0x290E,0x292E,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x292D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x292D,0x290D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x210D,0x210D,0x212E,0x212E,0x192F,0x192F,0x194F,0x1130,0x1950,0x1950,0x1950,0x1950,0x1930,0x1930,0x212F,0x212F,0x210E,0x290E,0x210D,0x290D,0x290D,0x292D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x28CD,0x20AD,0x206D,0x38F0,0x9BBD,0x933C,0x8ADB,0x92DB,0x8ABB,0x92DC,0x8A9B,0x8A9B,0x827A,0x9AFD,0xABBF,0xB3DF,0xABBF,0xB3FF,0xA3BE,0xA39D,0x9B7C,0xABFD,0xB43D,0x7235,0x280C,0x30AE,0x30AD,0x30CD,0x28AD,0x288D,0x284D,0x69F5,0x92FA,0x92BA,0x92DB,0x8ABB,0x92DC,0x92DC,0x8AFC,0x8B1C,0x8AFC,0x8AFC,0x8ADC,0x8ADC,0x8ADC,0x92FC,0x8A9B,0x929B,0x929A,0x92BA,0x8AB9,0x4911,0x200C,0x288D,0x30CD,0x28ED,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x20CC,0x20CD,0x208D,0x288E,0x937B,0x933B,0x92DB,0x92DC,0x8A9B,0x8ABB,0x8ABB,0x8ABB, + 0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x292D,0x290C,0x292D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x292D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x312D,0x312D,0x312D,0x312D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30ED,0x38EC,0x38EC,0x38AB,0x69B0,0xBB98,0xC378,0xCB78,0xCB58,0xCB57,0xC357,0xC357,0xC398,0x81F2,0x58EE,0x488C,0x40CD,0x40EE,0x390E,0x390E,0x392F,0x392F,0x392F,0x4150,0x3950,0x3950,0x4170,0x4170,0x3970,0x4171,0x4170,0x4170,0x4170,0x4170,0x4170,0x4170,0x4170,0x4970,0x4970,0x4970,0x4970,0x4970,0x4990,0x4990,0x4990,0x4990,0x4991,0x4991,0x4990,0x51B1,0x4990,0x5191,0x4990,0x4991,0x51B1,0x51B1,0x4990,0x4990,0x5191,0x5191,0x4990,0x5191,0x5191,0x5191,0x5191,0x5191,0x5191,0x5191,0x5191,0x51B1,0x51B1,0x51B1,0x51B2,0x51B2,0x51B2,0x51B2,0x51B3,0x51B3,0x51B3,0x51D4,0x51D4,0x51D4,0x51D5,0x51F5,0x51F6,0x51F6,0x5217,0x4A18,0x4A18,0x4219,0x39F9,0x29D9,0x29DA,0x29FB,0x221B,0x223C,0x225C,0x1A7D,0x1A9D,0x1ABE,0x12DE,0x0AFE,0x0AFE,0x0B1E,0x035E,0x037F,0x039F,0x03BF,0x03DF,0x03DF,0x03FF,0x041F,0x043F,0x045F,0x047F,0x049F,0x04BF,0x04DF,0x04FF,0x04FF,0x051F,0x053F,0x055F,0x057F,0x059F,0x05BF,0x0DBF,0x0DDF,0x05DF,0x05DF,0x05DF,0x05BF,0x05DF,0x05DF,0x05DF,0x05BF,0x05BF,0x059F,0x059F,0x059F,0x057F,0x059F,0x057F,0x057F,0x055F,0x055F,0x055F,0x053F,0x053F,0x053F,0x053F,0x051F,0x051F,0x051F,0x051F,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x051F,0x055F,0x057F,0x059F,0x059F,0x059F,0x15DF,0x25FF,0x35FF,0x5E5F,0x6D5D,0x4AB4,0x7274,0x9274,0x9A33,0xAA14,0xA9F3,0xA9F4,0xA1F4,0xA235,0x89B2,0x7192,0x6992,0x5992,0x5992,0x5191,0x5191,0x5191,0x4970,0x4990,0x4990,0x4170,0x4170,0x414F,0x414F,0x394F,0x394F,0x394F,0x394F,0x392E,0x392E,0x312E,0x312E,0x312E,0x310D,0x312D,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x294D,0x292D,0x292D,0x292D,0x290D,0x290E,0x210E,0x210E,0x212F,0x1930,0x1951,0x1993,0x21D4,0x21D4,0x21B3,0x1951,0x110F,0x190F,0x190E,0x212E,0x210E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x292D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290C,0x290D,0x290D,0x210D,0x212D,0x212E,0x192E,0x194F,0x1950,0x1951,0x1171,0x1171,0x1992,0x1972,0x1992,0x1972,0x1951,0x1951,0x1930,0x1930,0x210F,0x210E,0x210D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x310D,0x28ED,0x28AD,0x284D,0x38B0,0xAB9D,0xA31C,0x9ADC,0xA2BC,0xA29C,0xA27C,0x9A7C,0x9A7B,0x9A7C,0x9A5B,0x9A5B,0xA29C,0x9A9C,0x927B,0x9A9B,0x9ABB,0xA31C,0xAB3C,0xAB5B,0x8A98,0x300D,0x388E,0x308D,0x30AE,0x308E,0x304E,0x4090,0x9AFA,0x9ABA,0xA29B,0x9A7B,0xA2BC,0xA2BC,0x9ABC,0x9ADC,0x9B1D,0x9AFC,0x9B1D,0x92DC,0x9ABC,0x9ADC,0x9ABC,0xA2BC,0xA29C,0xA29B,0x9A9B,0x9ABA,0x9299,0x382E,0x282D,0x288D,0x30EE,0x28ED,0x28ED,0x290D,0x290D,0x290D,0x290D,0x28ED,0x20AC,0x206C,0x284E,0x9B3B,0xA31C,0xA2BC,0xA29C,0x9A7C,0x9A7C,0x9A7C,0x9A9C, + 0x290D,0x28EC,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30EC,0x38EC,0x40CC,0x6990,0xC3D9,0xBB78,0xC357,0xC357,0xC357,0xC358,0xB337,0x9274,0x488C,0x408C,0x40CD,0x40ED,0x38ED,0x390E,0x392E,0x392E,0x392F,0x394F,0x394F,0x414F,0x4150,0x4150,0x4170,0x4170,0x4170,0x4170,0x4170,0x4170,0x4170,0x4170,0x4170,0x4170,0x4170,0x4970,0x4970,0x4970,0x4970,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x5190,0x5190,0x5190,0x4990,0x4990,0x5190,0x5190,0x5190,0x5190,0x5190,0x5191,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51B2,0x51B2,0x51B2,0x51B2,0x51B2,0x51B2,0x51B3,0x51B3,0x51D3,0x59D4,0x59D4,0x59F5,0x51F5,0x51F6,0x49F6,0x49F7,0x4A18,0x4219,0x4219,0x3A1A,0x321A,0x323B,0x2A5B,0x2A7C,0x229D,0x22DD,0x1AFE,0x1B1E,0x133E,0x135E,0x0B7F,0x0B9F,0x0BBF,0x03DF,0x03FF,0x041F,0x043F,0x045F,0x0C7F,0x0C9F,0x0CBF,0x04DF,0x04DF,0x04FF,0x0D1F,0x051F,0x0D5F,0x0D5F,0x0D7F,0x059F,0x05BF,0x0DDF,0x0DFF,0x0DFF,0x0DFF,0x05FF,0x0DFF,0x05DF,0x05FF,0x05DF,0x05DF,0x05DF,0x05BF,0x05BF,0x059F,0x059F,0x059F,0x059F,0x059F,0x057F,0x057F,0x055F,0x055F,0x055F,0x053F,0x053F,0x053F,0x053F,0x053F,0x053F,0x051F,0x051F,0x04FF,0x04FF,0x04FF,0x04FF,0x04FF,0x051F,0x053F,0x053F,0x057F,0x059F,0x05BF,0x05BF,0x05DF,0x0DDF,0x1E1F,0x361F,0x565F,0x75FF,0x42D4,0x6A73,0x8A73,0x9A33,0xAA34,0xA9F4,0xA9F4,0xA9F4,0xA1F4,0x91D3,0x7172,0x6992,0x5971,0x5991,0x5191,0x5191,0x5191,0x4991,0x4970,0x4990,0x4170,0x4170,0x414F,0x416F,0x414F,0x414F,0x394F,0x394F,0x392E,0x392E,0x392E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312D,0x310D,0x310D,0x310D,0x290D,0x310D,0x310D,0x310D,0x290D,0x310D,0x290D,0x310D,0x310D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x292D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292D,0x292D,0x292E,0x292E,0x290E,0x210E,0x190F,0x1930,0x1951,0x2193,0x21D4,0x21F4,0x21B3,0x1951,0x190F,0x190F,0x190E,0x212E,0x210E,0x292E,0x292D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x292C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x290D,0x290D,0x292D,0x292D,0x212D,0x210E,0x212E,0x194F,0x1950,0x1151,0x1172,0x19B3,0x11B3,0x11B4,0x11B4,0x19B4,0x19B3,0x1993,0x1993,0x1972,0x1951,0x2130,0x212F,0x210E,0x210D,0x290D,0x290D,0x290C,0x290C,0x28EC,0x290C,0x312C,0x310C,0x28CC,0x288C,0x284D,0x408F,0xBBBE,0xAB1C,0xAADC,0xAA9C,0xAA7C,0xAA7C,0xB2BD,0xB29D,0xAA5C,0xAA5C,0xB25C,0xB27C,0xAA7C,0xAA9C,0xAA9C,0xAA9B,0xAA9B,0xAADB,0xAADB,0x9298,0x380E,0x386E,0x386E,0x388E,0x384E,0x404F,0x9299,0xAADB,0xB2DC,0xB29C,0xB29C,0xAA9C,0xA25B,0xA27B,0xA29B,0xAB3E,0x6935,0x7197,0xA2FC,0xA2BB,0xA29C,0xA29C,0xA27C,0xAA7C,0xB29C,0xB2BC,0xAABC,0xAAFB,0x8217,0x300D,0x306D,0x30CD,0x28CD,0x28ED,0x290D,0x290D,0x312D,0x290D,0x28ED,0x28AD,0x286D,0x386E,0xB37D,0xAAFC,0xB2BD,0xAA7C,0xAA7C,0xAA5C,0xAA5C,0xB27C, + 0x290D,0x28EC,0x28EC,0x290D,0x28EC,0x310D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x292D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30EC,0x38EC,0x38AC,0x596F,0xB398,0xBB78,0xBB57,0xBB57,0xBB57,0xBB98,0x9273,0x610E,0x488C,0x40CC,0x38ED,0x38ED,0x38ED,0x390D,0x392E,0x392E,0x392F,0x392F,0x394F,0x394F,0x414F,0x414F,0x416F,0x416F,0x416F,0x416F,0x416F,0x4170,0x416F,0x416F,0x416F,0x416F,0x4190,0x416F,0x416F,0x496F,0x496F,0x496F,0x4970,0x4970,0x4970,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x5190,0x5190,0x5190,0x51B1,0x5191,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51B2,0x51B2,0x51B2,0x51B2,0x51B2,0x51B2,0x51B2,0x51B2,0x59D3,0x59D4,0x59D4,0x59F4,0x51F5,0x51F6,0x51F6,0x4A17,0x4A17,0x4A18,0x4219,0x3A39,0x3A5A,0x327B,0x329B,0x2ADC,0x22FD,0x231D,0x1B3E,0x1B5E,0x139E,0x13BE,0x13FF,0x0BFF,0x0C3F,0x0C3F,0x0C5F,0x0C7F,0x0C9F,0x0CBF,0x0CDF,0x0CDF,0x0CFF,0x0D1F,0x0D3F,0x155F,0x0D7F,0x159F,0x0DBF,0x0DDF,0x0DFF,0x0DFF,0x0DFF,0x0E1F,0x0E1F,0x0E1F,0x0E1F,0x0E1F,0x0E1F,0x05FF,0x05FF,0x05DF,0x05DF,0x05DF,0x05BF,0x05BF,0x059F,0x059F,0x059F,0x059F,0x059F,0x057F,0x057F,0x055F,0x055F,0x055F,0x055F,0x055F,0x053F,0x053F,0x051F,0x051F,0x04FF,0x051F,0x051F,0x051F,0x053F,0x053F,0x055F,0x055F,0x059F,0x05BF,0x05DF,0x05DF,0x05DF,0x0DFF,0x1E1F,0x2E1E,0x4E5F,0x767F,0x4B55,0x5A52,0x8A94,0x9213,0xAA14,0xA9F4,0xA9D3,0xA9D4,0xA9F4,0x9A14,0x81B3,0x6992,0x6192,0x5991,0x5191,0x5191,0x5191,0x4991,0x4990,0x4970,0x4170,0x4170,0x414F,0x416F,0x414F,0x392F,0x414F,0x394E,0x392E,0x392E,0x392E,0x394E,0x312E,0x312E,0x312E,0x312E,0x312D,0x312E,0x312D,0x312D,0x310D,0x312D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x312D,0x292D,0x290C,0x292D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x292E,0x210D,0x210E,0x210E,0x190F,0x1930,0x1951,0x1992,0x21D3,0x21F4,0x1992,0x1951,0x110F,0x190F,0x190E,0x214F,0x292E,0x292E,0x292E,0x290D,0x290D,0x292D,0x290D,0x292D,0x292D,0x290D,0x292D,0x292D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x292D,0x292D,0x290D,0x292D,0x212E,0x212E,0x192F,0x1930,0x1150,0x1171,0x1193,0x11D4,0x11D4,0x11D5,0x11B4,0x11B4,0x1194,0x11B4,0x1193,0x1973,0x1952,0x1931,0x2130,0x210F,0x292E,0x290D,0x290D,0x290D,0x290C,0x28EC,0x290C,0x290C,0x310C,0x28CC,0x288C,0x282D,0x404F,0xC3BE,0xB2FC,0xB29C,0xB27C,0xB25C,0xBA7D,0xBA7D,0xBA5D,0xBA3D,0xBA5D,0xBA5D,0xBA5D,0xBA5C,0xB25C,0xBA9C,0xBA9C,0xB29C,0xB2BC,0xAADB,0xAB1B,0x400E,0x406F,0x384E,0x384E,0x380E,0x79B5,0xB2FC,0xB2DC,0xBABC,0xBA9D,0xBA9D,0xB27C,0xB27C,0xAA7C,0xAABC,0xA2BB,0x4010,0x4010,0x9A7A,0xA2BB,0xAA9C,0xB29C,0xB29D,0xBADD,0xBABD,0xBABD,0xBABC,0xB2BC,0xA2BA,0x5090,0x300C,0x308D,0x30CD,0x30ED,0x28ED,0x312D,0x290D,0x290C,0x28EC,0x28AC,0x284C,0x384E,0xBB7D,0xBAFD,0xB29D,0xB25D,0xB23C,0xBA5D,0xBA5D,0xBA5D, + 0x28EC,0x28EC,0x310D,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290D,0x310D,0x310D,0x290C,0x310D,0x310D,0x310D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292D,0x292C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x292D,0x292C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x292D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x292D,0x290D,0x310D,0x310D,0x312D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30EC,0x38ED,0x38CC,0x510D,0xBBF9,0xBB98,0xBB77,0xBB77,0xBB78,0xA336,0x696F,0x408C,0x40CC,0x40CD,0x38ED,0x390D,0x390D,0x390E,0x392E,0x392E,0x392E,0x394E,0x394E,0x414F,0x394F,0x394F,0x414F,0x414F,0x394F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x414F,0x416F,0x496F,0x416F,0x416F,0x416F,0x416F,0x4970,0x4970,0x4990,0x496F,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x51B0,0x5190,0x4990,0x51B1,0x51B1,0x51B1,0x5191,0x5191,0x51B1,0x51B2,0x51B2,0x51B2,0x51B1,0x5191,0x5191,0x5191,0x51B2,0x59B2,0x59D3,0x59D3,0x59D4,0x51F4,0x51F5,0x51F5,0x51F6,0x5217,0x4A17,0x4218,0x4238,0x3A59,0x3A7A,0x329A,0x2ADB,0x2B1C,0x2B3D,0x237D,0x239D,0x1BDE,0x13FE,0x141E,0x143E,0x0C3E,0x0C5E,0x0C7E,0x149F,0x14BF,0x14DF,0x14FF,0x151F,0x153F,0x155F,0x1D7F,0x1DBF,0x1DDF,0x1DFF,0x1DFF,0x161F,0x161F,0x163F,0x163F,0x163F,0x0E3F,0x0E1F,0x0E1F,0x0E1F,0x061F,0x05FF,0x05FF,0x05FF,0x05FF,0x05DF,0x05DF,0x05BF,0x05BF,0x05BF,0x059F,0x059F,0x059F,0x057F,0x057F,0x057F,0x055F,0x057F,0x055F,0x055F,0x055F,0x053F,0x051F,0x051F,0x051F,0x051F,0x053F,0x053F,0x055F,0x055F,0x057F,0x05BF,0x05DF,0x05FF,0x05FF,0x061F,0x0E1F,0x163F,0x2E5F,0x467F,0x76BF,0x5C38,0x5273,0x8AB4,0x9A33,0xA1F3,0xA9D3,0xA9D3,0xA9F4,0xA1D4,0x99F4,0x89D3,0x7172,0x6992,0x5991,0x5991,0x5191,0x5191,0x5191,0x4991,0x4990,0x4970,0x4170,0x416F,0x416F,0x414F,0x414F,0x414F,0x392E,0x392E,0x392E,0x392E,0x394E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x290D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290D,0x290D,0x310D,0x290C,0x310D,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x20EC,0x20EC,0x20EC,0x290D,0x290D,0x290D,0x290D,0x290E,0x210E,0x210E,0x192F,0x1930,0x1951,0x1992,0x19B3,0x21D3,0x1992,0x1150,0x110F,0x190F,0x214F,0x212F,0x292E,0x210E,0x292E,0x292E,0x292E,0x290D,0x292D,0x292E,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x210D,0x292D,0x290D,0x290D,0x210D,0x292D,0x292D,0x292E,0x292D,0x292E,0x292E,0x212E,0x212E,0x212F,0x1950,0x1971,0x1172,0x1193,0x11B4,0x09D5,0x09D5,0x09B5,0x09B5,0x09B5,0x11B5,0x1194,0x1194,0x1194,0x1973,0x1931,0x1930,0x210F,0x210E,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x310D,0x28CC,0x286C,0x302C,0x4890,0xCBFF,0xBAFC,0xBABC,0xBA7C,0xBA7D,0xC27D,0xC27D,0xC29E,0xC27D,0xC25D,0xC23D,0xCA7D,0xC25D,0xC27C,0xC29C,0xC2BD,0xBA9C,0xB29B,0xB2DB,0xC3BE,0x400E,0x380E,0x382E,0x404E,0x484F,0xBB5D,0xBAFC,0xBADC,0xBA9C,0xC29D,0xBA7C,0xC29D,0xBA9C,0xB29C,0xB2FC,0x81B6,0x400F,0x400F,0x60D3,0xAAFC,0xAABC,0xBABD,0xBA9D,0xBA9D,0xC29D,0xC29D,0xC2BD,0xC2DD,0xBAFC,0xA2BA,0x380E,0x386E,0x30AD,0x30ED,0x28ED,0x310D,0x28EC,0x28EC,0x28CC,0x28AC,0x284C,0x406F,0xC37E,0xBADD,0xC2BD,0xBA7D,0xBA5D,0xBA5D,0xC25D,0xCA7D, + 0x30EC,0x30CC,0x30ED,0x30EC,0x30EC,0x28EC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x310C,0x310D,0x310D,0x310D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292C,0x292C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30ED,0x30ED,0x38CC,0x48CD,0xAB97,0xBBB8,0xBB98,0xBB98,0xBBB8,0x8A73,0x50CD,0x40AC,0x38CC,0x38ED,0x38ED,0x390D,0x390D,0x392E,0x392E,0x392E,0x392E,0x394E,0x394E,0x394E,0x394E,0x394F,0x394E,0x394F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x496F,0x496F,0x496F,0x4970,0x4970,0x4970,0x4970,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4991,0x4991,0x4991,0x5191,0x5191,0x5191,0x51B1,0x51B1,0x51B1,0x5191,0x51B1,0x5191,0x51B1,0x51B2,0x59B2,0x59B2,0x51D2,0x51D3,0x51D3,0x51D4,0x51D4,0x51F5,0x51F5,0x4A16,0x4A16,0x4237,0x4258,0x3A78,0x32B9,0x32FA,0x333B,0x335C,0x2BBD,0x2BFE,0x23FE,0x1C3E,0x1C5E,0x1C7E,0x1C9E,0x149E,0x14BE,0x14BE,0x1CFF,0x1D1F,0x1D3F,0x1D5F,0x257F,0x259F,0x25BF,0x25DF,0x25FF,0x261F,0x263F,0x1E3F,0x1E3F,0x163F,0x163F,0x163F,0x0E3F,0x0E3F,0x0E3F,0x0E1F,0x0E1F,0x0E1F,0x0E1F,0x05FF,0x05FF,0x05DF,0x05BF,0x05DF,0x05DF,0x05BF,0x05BF,0x059F,0x059F,0x059F,0x057F,0x057F,0x057F,0x057F,0x055F,0x055F,0x053F,0x053F,0x053F,0x053F,0x053F,0x053F,0x055F,0x055F,0x057F,0x059F,0x05BF,0x05FF,0x05FF,0x061F,0x061F,0x0E5F,0x167F,0x267F,0x367E,0x6EFF,0x64FB,0x4A92,0x8AD5,0x9212,0xA1F3,0xA9F3,0xB1F4,0xA9F4,0xA9F4,0xA214,0x9214,0x7172,0x6992,0x5971,0x5991,0x5191,0x5191,0x5191,0x4970,0x4970,0x4970,0x4170,0x416F,0x414F,0x414F,0x414F,0x394F,0x392E,0x394E,0x392E,0x392E,0x392E,0x312E,0x312E,0x312D,0x312E,0x312E,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x310D,0x290D,0x290C,0x310C,0x290C,0x290C,0x290C,0x290C,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x210E,0x212E,0x192F,0x1930,0x1951,0x1992,0x19B3,0x21D3,0x19B2,0x1150,0x112F,0x192F,0x212F,0x212E,0x210E,0x210E,0x210E,0x212E,0x212E,0x210E,0x210E,0x212E,0x212E,0x210E,0x210E,0x212E,0x212E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x292E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210E,0x210E,0x210E,0x212E,0x210E,0x210E,0x210E,0x210E,0x292E,0x210D,0x210E,0x210E,0x210E,0x212E,0x212E,0x212E,0x210E,0x210E,0x210E,0x210E,0x210E,0x212E,0x212E,0x212E,0x212E,0x212E,0x212F,0x1930,0x1950,0x1171,0x1193,0x0994,0x09B4,0x09B5,0x01B5,0x01B5,0x01B6,0x01B5,0x09B5,0x09B5,0x11B5,0x1194,0x1173,0x1952,0x1951,0x212F,0x210E,0x290D,0x290D,0x290C,0x312D,0x290C,0x310C,0x310C,0x310C,0x30CC,0x286C,0x302C,0x488F,0xD41F,0xBB1C,0xBADC,0xC2DD,0xC29D,0xC27D,0xC29D,0xC27D,0xCA9D,0xCA7D,0xCA7D,0xC25C,0xC27C,0xC27C,0xC29C,0xBA9C,0xBA9B,0xB2BB,0xB2FB,0xCBFE,0x400E,0x400E,0x380D,0x380D,0x81D6,0xC37D,0xBAFC,0xC2FD,0xC2BC,0xC2BD,0xCABD,0xC2DD,0xC2DD,0xBABC,0xC37E,0x58B2,0x400E,0x380E,0x400E,0x9259,0xC35E,0xBADD,0xC2DD,0xC2DD,0xC2BD,0xC2BD,0xC2BD,0xC2DD,0xCB1D,0xCB9E,0x71B5,0x300D,0x30AD,0x30ED,0x30EC,0x28EC,0x290C,0x290C,0x28CC,0x28AC,0x284C,0x404E,0xC39E,0xC2FD,0xC2BD,0xC29D,0xC27D,0xC27D,0xCA9D,0xD2DE, + 0x308C,0x308C,0x30AC,0x30CC,0x30CC,0x30CC,0x30CC,0x30EC,0x30EC,0x30EC,0x30ED,0x30EC,0x30EC,0x30EC,0x30EC,0x310D,0x28EC,0x290C,0x28EC,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x292D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x292D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292C,0x292C,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x312D,0x292D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30EC,0x38CC,0x40CC,0xAB98,0xBBB8,0xBB98,0xBBB8,0xA336,0x594F,0x388B,0x40CC,0x38CC,0x38ED,0x390D,0x390D,0x390D,0x390D,0x392E,0x392E,0x392E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x414F,0x416F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x4170,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4990,0x4990,0x4990,0x4970,0x4990,0x4990,0x4990,0x4990,0x4991,0x5191,0x4991,0x4991,0x4991,0x4991,0x5191,0x51B1,0x51B1,0x51D1,0x59D2,0x51B2,0x51B2,0x51B2,0x51B2,0x51B2,0x51B2,0x51B2,0x59D3,0x51D4,0x51D4,0x51F4,0x5215,0x4A15,0x4236,0x4236,0x3A77,0x3A98,0x3AD9,0x3B19,0x335A,0x3BFD,0x3C7F,0x2C7E,0x249E,0x24BE,0x24BE,0x24FF,0x24FF,0x251F,0x253F,0x2D5F,0x2D7F,0x2D9F,0x2D9E,0x2DBE,0x2DBE,0x2DDE,0x2DFE,0x2E1E,0x2E1E,0x263F,0x263F,0x1E3F,0x1E3F,0x165F,0x163F,0x163F,0x0E3F,0x0E3F,0x0E3F,0x0E1F,0x0E1F,0x0E1F,0x0DFF,0x05FF,0x0DFF,0x05FF,0x05DF,0x05DF,0x05BF,0x05BF,0x05BF,0x059F,0x059F,0x059F,0x057F,0x057F,0x057F,0x057F,0x055F,0x055F,0x055F,0x053F,0x055F,0x055F,0x057F,0x057F,0x059F,0x05BF,0x05FF,0x05FF,0x061F,0x063F,0x063F,0x0E5F,0x169F,0x269F,0x369E,0x5EBF,0x659D,0x3A92,0x82F4,0x9A53,0x99D2,0xA9D3,0xB1F4,0xB1F4,0xA9D3,0xA1F4,0x91F3,0x7971,0x6971,0x6171,0x5171,0x5171,0x5191,0x5191,0x4991,0x4990,0x4970,0x4170,0x414F,0x414F,0x416F,0x414F,0x414F,0x394E,0x394E,0x392E,0x392E,0x392E,0x312E,0x312D,0x312D,0x312D,0x312E,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x312D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x292D,0x290C,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x212E,0x212F,0x192F,0x1930,0x1951,0x1992,0x21D3,0x21F4,0x19B3,0x1151,0x10EF,0x10EE,0x10EE,0x10EE,0x190E,0x18EE,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x190E,0x210E,0x210E,0x190E,0x210E,0x190E,0x190E,0x190E,0x210E,0x190E,0x190E,0x190E,0x210E,0x210E,0x210E,0x210E,0x190E,0x190E,0x190E,0x190E,0x18EE,0x18EE,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x110F,0x1110,0x1131,0x1172,0x0973,0x09B4,0x01B5,0x01B5,0x01B6,0x0196,0x0196,0x01B6,0x01B6,0x09B6,0x09B5,0x11B5,0x11B4,0x1173,0x1951,0x2130,0x212E,0x290E,0x290D,0x290C,0x290C,0x290C,0x290C,0x312D,0x310D,0x28CC,0x288C,0x304D,0x488F,0xF53F,0xDC3F,0xD39E,0xCB3E,0xD31E,0xD31E,0xD31E,0xDB3F,0xDB1E,0xDB1F,0xE35F,0xDB3F,0xD31E,0xDB5F,0xD35E,0xD37F,0xCB7E,0xCBBE,0xD41F,0xDCBF,0x400D,0x380D,0x380D,0x6112,0xD47F,0xCBBE,0xCB5D,0xCB3D,0xCB1D,0xD31E,0xD33E,0xD35E,0xCB5E,0xD3BF,0xC39D,0x400E,0x380E,0x380D,0x380E,0x6933,0xD41F,0xCB7E,0xCB3E,0xCB3E,0xCB1E,0xD31E,0xD33E,0xD33E,0xD37E,0xD3FF,0xCC3E,0x5131,0x308D,0x30ED,0x310D,0x290C,0x310C,0x28EC,0x30CC,0x30AC,0x306C,0x408E,0xDC7F,0xDBDF,0xD35F,0xCAFE,0xCADE,0xD2FE,0xDB3E,0xE39F, + 0x408C,0x408C,0x386B,0x306B,0x306B,0x308B,0x388B,0x38AC,0x38AC,0x30AC,0x38CC,0x30CC,0x30EC,0x30CC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x30ED,0x30EC,0x30EC,0x28EC,0x310C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x28EC,0x310D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x312D,0x310D,0x310D,0x310D,0x30EC,0x38EC,0x40EC,0x9336,0xB3D8,0xB3B8,0xBBD8,0x92B4,0x48CD,0x38AC,0x38CC,0x38EC,0x38ED,0x390D,0x390D,0x392D,0x392D,0x392D,0x392E,0x392E,0x392E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x414E,0x394E,0x414E,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x4170,0x416F,0x4170,0x4170,0x4970,0x4170,0x4170,0x4170,0x4170,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4990,0x4990,0x4970,0x4970,0x4990,0x4990,0x4990,0x4990,0x4990,0x4970,0x4990,0x4990,0x4991,0x4990,0x4991,0x5191,0x5191,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x5191,0x51B1,0x51B2,0x51B2,0x51B2,0x51D3,0x51D3,0x51D3,0x51F4,0x4A14,0x4A15,0x4235,0x4256,0x4276,0x3A97,0x32B7,0x2AF8,0x443D,0x4CDF,0x3CBE,0x34DF,0x34FE,0x351E,0x351E,0x353F,0x355F,0x3D7F,0x3D9F,0x3D9F,0x3D9E,0x3D9E,0x359D,0x35BD,0x35DD,0x361E,0x361E,0x361E,0x2E3E,0x2E3E,0x263F,0x1E3F,0x1E3F,0x163F,0x163F,0x163F,0x163F,0x163F,0x0E1F,0x0E1F,0x0E1F,0x0DFF,0x0DFF,0x05FF,0x05FF,0x05FF,0x05DF,0x05DF,0x05DF,0x05BF,0x05BF,0x05BF,0x059F,0x057F,0x057F,0x057F,0x057F,0x055F,0x055F,0x055F,0x055F,0x057F,0x057F,0x059F,0x059F,0x05DF,0x05FF,0x061F,0x063F,0x063F,0x065F,0x0E9F,0x0E9F,0x1EBF,0x2EBF,0x4EBF,0x765F,0x3AF3,0x7AD4,0x9253,0x99F2,0xA9D3,0xB1F4,0xB1F4,0xA9F4,0xA1F4,0xA234,0x81B2,0x6971,0x6192,0x5991,0x5191,0x5191,0x5191,0x4990,0x4990,0x4990,0x4970,0x4150,0x4170,0x414F,0x416F,0x414F,0x394F,0x392E,0x392E,0x392E,0x392E,0x392E,0x312E,0x392D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x28EC,0x28EC,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x212E,0x212E,0x192F,0x192F,0x1930,0x1151,0x1992,0x21D4,0x21F4,0x21F3,0x1151,0x090F,0x08EF,0x090F,0x10EF,0x110F,0x110F,0x110F,0x1110,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x1110,0x110F,0x112F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x112F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x110F,0x10EF,0x110F,0x110F,0x1910,0x190F,0x190F,0x110F,0x1130,0x110F,0x1130,0x1130,0x0931,0x0952,0x0973,0x09B4,0x09B5,0x01B5,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x09B6,0x09B6,0x09B5,0x11B4,0x1173,0x1992,0x1930,0x212F,0x292E,0x290D,0x290C,0x290C,0x290C,0x290C,0x310D,0x310D,0x30ED,0x28AD,0x306D,0x48CF,0xCC7E,0xCC1D,0xBB3B,0xBB3C,0xC33C,0xC33D,0xCB5D,0xCB5D,0xC31C,0xCB3D,0xD39E,0xD37E,0xCB7D,0xC35C,0xC33C,0xBB3C,0xB33B,0xB35B,0xB37B,0x9AD8,0x380D,0x382D,0x406E,0x8AB7,0xCC5E,0xB37B,0xB33B,0xBB3B,0xBB1B,0xBB1C,0xBB1C,0xBAFB,0xAADA,0xA2B9,0x6973,0x406E,0x386E,0x386E,0x384E,0x404F,0xAB3B,0xB35C,0xB33C,0xBB3C,0xBB1C,0xC33D,0xC33C,0xBB3C,0xB31B,0xAB3A,0x9B18,0x69F3,0x288C,0x28CD,0x310D,0x312D,0x310C,0x30EC,0x30EC,0x30AC,0x308C,0x40CE,0xCC5E,0xD43F,0xC37D,0xBB3D,0xBB1C,0xC33C,0xCB5D,0xC33C, + 0x9294,0x8A73,0x8A53,0x79D1,0x6990,0x590E,0x48CD,0x408B,0x386B,0x306B,0x386B,0x308B,0x30AC,0x38AC,0x38AC,0x30AC,0x30CC,0x30EC,0x30CC,0x30CC,0x30CC,0x30EC,0x310C,0x28EC,0x310C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x292D,0x292D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x292D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30ED,0x30EC,0x38CC,0x7A52,0xABD8,0xB3B8,0xB3B8,0x7211,0x40AB,0x38CC,0x38EC,0x38ED,0x390D,0x390D,0x390D,0x392D,0x392D,0x392D,0x392D,0x392E,0x392E,0x392E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x414E,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x4170,0x416F,0x4970,0x4170,0x4170,0x4970,0x4970,0x4970,0x4970,0x4970,0x4990,0x4970,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x5191,0x4990,0x4991,0x4991,0x5191,0x4991,0x4990,0x5191,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x59B2,0x59B2,0x59D2,0x51D2,0x51D2,0x51D3,0x51F3,0x51F3,0x49F4,0x4A14,0x4A34,0x4235,0x4255,0x3A55,0x3A76,0x2A56,0x3319,0x4C7E,0x4CFF,0x453F,0x453F,0x455F,0x455F,0x4D5F,0x4D5F,0x557F,0x559F,0x5DFF,0x5E3F,0x5E5F,0x5E7F,0x565E,0x4E5E,0x4E5E,0x465E,0x3E3E,0x3E5E,0x2E1E,0x2E3E,0x263E,0x263E,0x263F,0x1E3F,0x1E3F,0x1E3F,0x161F,0x161F,0x0E1F,0x0DFF,0x0DFF,0x0DFF,0x05FF,0x05FF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05BF,0x059F,0x059F,0x059F,0x059F,0x057F,0x057F,0x057F,0x057F,0x057F,0x057F,0x059F,0x059F,0x05BF,0x05FF,0x061F,0x061F,0x063F,0x065F,0x067F,0x069F,0x0EDF,0x1EDF,0x26DF,0x3EBF,0x6EBF,0x3B74,0x72D4,0x8A33,0xA213,0xA9F3,0xA9F4,0xA9D4,0xA9F4,0xA9F4,0xA214,0x91F3,0x7151,0x6171,0x6191,0x5991,0x5191,0x5191,0x4970,0x4970,0x4970,0x4970,0x4970,0x4170,0x414F,0x412F,0x414F,0x394F,0x394E,0x394E,0x394E,0x392E,0x392E,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x292E,0x212E,0x212F,0x192F,0x192F,0x1930,0x1951,0x1972,0x19B2,0x21D3,0x2A14,0x19D3,0x1192,0x1192,0x19B3,0x1993,0x1993,0x1192,0x1993,0x1193,0x1193,0x1172,0x1992,0x1172,0x1172,0x1172,0x1192,0x1172,0x1172,0x1172,0x1172,0x1172,0x1172,0x1172,0x1972,0x1172,0x1172,0x1172,0x1172,0x1172,0x1172,0x1172,0x1172,0x1172,0x1192,0x1172,0x1172,0x1172,0x1192,0x1192,0x1172,0x1172,0x1992,0x1172,0x1192,0x1172,0x1992,0x1992,0x1993,0x1993,0x19B3,0x19B3,0x1993,0x1993,0x1992,0x1992,0x19B3,0x1192,0x11B3,0x11B3,0x11B3,0x0994,0x0994,0x01B4,0x01B5,0x01D6,0x01D6,0x01B6,0x01B6,0x01B6,0x0196,0x0196,0x09B6,0x0995,0x09B5,0x11B5,0x1193,0x1972,0x1950,0x212F,0x290E,0x292D,0x28EC,0x28EC,0x290C,0x310D,0x28EC,0x310D,0x30ED,0x28CD,0x30CD,0x288D,0x200B,0x280B,0x300B,0x300C,0x300C,0x300C,0x380C,0x300C,0x300C,0x300C,0x300C,0x300C,0x300C,0x300C,0x300B,0x300B,0x300C,0x300B,0x280B,0x280C,0x388E,0x38AE,0x38AE,0x282C,0x280B,0x280B,0x280C,0x300C,0x300C,0x300C,0x300C,0x300C,0x300C,0x300C,0x306D,0x388D,0x308D,0x38AE,0x308D,0x306D,0x280C,0x280C,0x300C,0x300C,0x300C,0x300C,0x300C,0x300B,0x280B,0x280B,0x200B,0x286B,0x30ED,0x28CC,0x28EC,0x28EC,0x310C,0x28EC,0x28EC,0x28EC,0x30CC,0x308C,0x200A,0x280B,0x300C,0x300C,0x300C,0x300C,0x300C,0x300C, + 0x9233,0x9233,0x9A53,0x9253,0x9253,0x9253,0x9273,0x8233,0x79F1,0x614F,0x510E,0x48AC,0x386B,0x304A,0x302A,0x306B,0x308B,0x308C,0x308B,0x30AC,0x30AB,0x30CC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x28EC,0x28EC,0x28EC,0x28EC,0x310C,0x28EC,0x290C,0x290C,0x310D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x292D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x292D,0x292D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x292C,0x290C,0x292C,0x292C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290D,0x292C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x310D,0x310D,0x310D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30ED,0x30CC,0x6A31,0xABD8,0xABB8,0xA397,0x596F,0x38AC,0x38CC,0x38ED,0x30EC,0x390D,0x390D,0x390D,0x392D,0x392D,0x392D,0x392D,0x392E,0x392E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x414E,0x394E,0x414E,0x394E,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x4170,0x4970,0x4970,0x4970,0x4990,0x4970,0x4990,0x4970,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x5191,0x5191,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51B2,0x51D2,0x51D2,0x51D2,0x51F3,0x51F3,0x51F3,0x4A13,0x4A14,0x4A14,0x4214,0x4214,0x3A35,0x3235,0x2A96,0x3BBA,0x5D1F,0x5D5F,0x551E,0x54FE,0x4C7C,0x4C3B,0x4C3A,0x4C5A,0x64FC,0x75BF,0x865F,0x7E5F,0x7E7F,0x765F,0x765F,0x6E5F,0x665F,0x5E5F,0x4E3E,0x3E1E,0x361E,0x2E1E,0x2E1E,0x261E,0x263F,0x1E1F,0x1E3F,0x1E1F,0x161F,0x161F,0x15FF,0x0DFF,0x0E1F,0x0DFF,0x0DFF,0x05FF,0x05FF,0x05DF,0x05DF,0x05BF,0x05BF,0x059F,0x059F,0x059F,0x059F,0x057F,0x059F,0x059F,0x059F,0x059F,0x05BF,0x05BF,0x05DF,0x05FF,0x061F,0x063F,0x065F,0x067F,0x069F,0x06BF,0x0EDF,0x16FF,0x271F,0x3EDF,0x66FF,0x4C57,0x5A93,0x8A73,0x9A13,0xAA13,0xA9F3,0xA9F3,0xA9F4,0xAA14,0xA1F3,0x9A34,0x7992,0x6971,0x6191,0x5991,0x5191,0x5191,0x4970,0x5191,0x4970,0x4970,0x4950,0x4150,0x414F,0x414F,0x394F,0x394F,0x394E,0x392E,0x394E,0x392E,0x392E,0x392E,0x312D,0x312D,0x312E,0x312D,0x312D,0x312D,0x290D,0x310D,0x310D,0x312D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x292D,0x212E,0x212E,0x212F,0x190F,0x192F,0x1950,0x1951,0x1971,0x1992,0x19D4,0x2A35,0x2235,0x2236,0x2215,0x2215,0x2236,0x2215,0x2216,0x2215,0x2236,0x2215,0x2215,0x21F5,0x2215,0x19F4,0x21F5,0x21F5,0x21F5,0x21F5,0x21F5,0x21F5,0x2215,0x21F5,0x21F5,0x21F5,0x2215,0x21F5,0x2215,0x21F5,0x2215,0x21F4,0x2215,0x2215,0x2215,0x2215,0x2215,0x21F5,0x1A15,0x1A14,0x2215,0x21F4,0x21F4,0x21F5,0x2215,0x21F5,0x2215,0x21F4,0x21F5,0x21F4,0x2215,0x21F5,0x21F5,0x19B4,0x21D4,0x19D3,0x19D4,0x19D3,0x19D4,0x11D4,0x11B4,0x09B4,0x09B4,0x09B5,0x01B5,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x0195,0x09B5,0x11B4,0x1193,0x1972,0x1930,0x212F,0x290E,0x290D,0x290D,0x290D,0x290C,0x28EC,0x290D,0x310D,0x290D,0x28ED,0x28CD,0x30ED,0x28AC,0x284B,0x284B,0x284B,0x282B,0x282B,0x282B,0x202A,0x282B,0x282B,0x200A,0x202B,0x282B,0x284B,0x284B,0x284B,0x286C,0x286C,0x286C,0x308C,0x308D,0x30AD,0x30AD,0x288C,0x288C,0x288C,0x288C,0x286C,0x286C,0x286C,0x286C,0x286B,0x286C,0x286C,0x288C,0x30AD,0x28AD,0x30CD,0x30AD,0x30CD,0x30AD,0x286C,0x286C,0x286C,0x284C,0x284B,0x286B,0x286B,0x288C,0x288C,0x28AC,0x28CC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28CC,0x28CC,0x28AC,0x288C,0x286C,0x286C,0x284B,0x282B,0x202B,0x200A, + 0x9A12,0x91F2,0x91F2,0x9A12,0x91F2,0x91F2,0x89F2,0x9232,0x9253,0x9253,0x9253,0x8A53,0x8212,0x71D1,0x71B1,0x594F,0x48AC,0x388C,0x386B,0x306B,0x304B,0x304B,0x306B,0x308C,0x30AC,0x30CC,0x30CC,0x30EC,0x30EC,0x30EC,0x310C,0x310C,0x310C,0x310C,0x310C,0x310D,0x28EC,0x28EC,0x28EC,0x310C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x292D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x292D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x292C,0x290C,0x292C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30EC,0x414E,0x9397,0xA3B8,0x9336,0x40EC,0x38CC,0x38EC,0x38ED,0x38ED,0x310D,0x390D,0x390D,0x390D,0x392D,0x392D,0x392D,0x392E,0x392E,0x392E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x392E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x414F,0x394F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x414F,0x414F,0x414F,0x414F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x5191,0x5191,0x5191,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51D2,0x51D2,0x51D2,0x51D2,0x51D2,0x51F2,0x51F3,0x49F3,0x4A13,0x4A13,0x4A14,0x4A14,0x4214,0x3A35,0x3214,0x3275,0x5C1C,0x6CBE,0x439A,0x42F7,0x4AF7,0x52D6,0x52B5,0x4A74,0x4A54,0x4A53,0x5AD5,0x6377,0x6BF9,0x7CBB,0x7D1C,0x7D7E,0x7DDF,0x6E3F,0x5E5F,0x567F,0x4E5E,0x465E,0x3E3E,0x2DFD,0x25FE,0x25FE,0x261F,0x1E1F,0x1E1F,0x161F,0x161F,0x0E1F,0x0DFF,0x0DFF,0x0DFF,0x05DF,0x05FF,0x05DF,0x05DF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x059F,0x059F,0x059F,0x05BF,0x05BF,0x05BF,0x05DF,0x05DF,0x05FF,0x063F,0x063F,0x067F,0x069F,0x06BF,0x06DF,0x06FF,0x0EFF,0x1F1F,0x36FF,0x5EFF,0x659C,0x4211,0x8253,0x9213,0xA1F3,0xA9F3,0xB214,0xA9D3,0xA9F3,0xAA14,0x9A14,0x89D3,0x6971,0x6191,0x5991,0x5191,0x5171,0x5171,0x4970,0x4970,0x4970,0x4970,0x414F,0x4150,0x414F,0x414F,0x394F,0x394F,0x394E,0x394E,0x392E,0x392E,0x310D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292C,0x290C,0x292D,0x292D,0x292D,0x210D,0x212E,0x212E,0x190E,0x192F,0x1930,0x1950,0x1951,0x1972,0x1172,0x1192,0x19B3,0x19D4,0x19B4,0x19D4,0x19D4,0x19D4,0x19D4,0x19D5,0x19D4,0x19D4,0x19D4,0x19D4,0x19D4,0x19D4,0x19D4,0x19D4,0x19F4,0x21F4,0x19D4,0x19D5,0x21D4,0x21D4,0x21D4,0x21F4,0x21D4,0x19D4,0x19D4,0x21F4,0x21F4,0x21D4,0x21D4,0x21F4,0x19D4,0x19D4,0x19D4,0x19D4,0x19D4,0x19D4,0x19D4,0x19D4,0x19D4,0x19F4,0x19D4,0x19B4,0x19D4,0x21D4,0x19D4,0x19B4,0x19B4,0x19B4,0x19B4,0x19B3,0x19D3,0x19B3,0x19B3,0x11B3,0x1193,0x0993,0x0973,0x0994,0x09B4,0x0195,0x01B5,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x09B6,0x09B6,0x09B5,0x11B4,0x1193,0x1951,0x1930,0x212E,0x290E,0x290D,0x290D,0x290C,0x290C,0x310D,0x290D,0x310D,0x290D,0x290D,0x290D,0x28ED,0x28ED,0x30CD,0x30CC,0x30AC,0x30CC,0x30AC,0x30CC,0x30AC,0x30CC,0x28AC,0x30AC,0x28AC,0x30CC,0x28AC,0x30CC,0x30CC,0x30CD,0x28CC,0x30CC,0x28CC,0x30CD,0x30CD,0x30ED,0x30ED,0x30CD,0x28CC,0x30CC,0x28CC,0x28AC,0x30CC,0x28AC,0x28AC,0x28AC,0x30CC,0x30CD,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30ED,0x30CD,0x30ED,0x28CC,0x28AC,0x28AC,0x28AC,0x28CC,0x28CC,0x28EC,0x28EC,0x310C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x310C,0x28EC,0x28EC,0x28EC,0x310D,0x28EC,0x28EC,0x28CC,0x28CC,0x28CC,0x28AC,0x28AC,0x288C, + 0x99D2,0x91D1,0x99F2,0x91D1,0x91F2,0x91D1,0x91F2,0x91F2,0x91F1,0x9212,0x9212,0x8A12,0x8A12,0x8A33,0x9253,0x8A53,0x8232,0x7A12,0x79F2,0x69B1,0x616F,0x50ED,0x408C,0x304B,0x304A,0x304A,0x306B,0x38AC,0x30AC,0x30CC,0x38EC,0x30EC,0x30EC,0x310C,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x28EC,0x310C,0x30EC,0x310C,0x310C,0x310D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x292D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x292D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x292D,0x290C,0x290D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x310D,0x310D,0x30EC,0x498F,0x59D0,0x516F,0x38CC,0x38EC,0x30EC,0x30EC,0x30ED,0x310D,0x390D,0x390D,0x390D,0x390D,0x392D,0x392D,0x392D,0x392E,0x392D,0x392D,0x392E,0x392E,0x392E,0x394E,0x394E,0x394E,0x394E,0x394E,0x392E,0x394E,0x394E,0x394E,0x394E,0x394E,0x392E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x414F,0x414F,0x394E,0x414F,0x394E,0x394F,0x394F,0x394F,0x394F,0x414E,0x414E,0x414E,0x414E,0x414F,0x394F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x414F,0x414F,0x416F,0x414F,0x416F,0x416F,0x416F,0x416F,0x4170,0x416F,0x416F,0x496F,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4990,0x4990,0x4990,0x4990,0x5191,0x5191,0x5191,0x5191,0x5191,0x5191,0x5191,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51B2,0x51D2,0x51D2,0x51D2,0x51D2,0x51F3,0x51F3,0x51F3,0x49F3,0x49F3,0x49F3,0x41F4,0x39F4,0x3A15,0x4AD7,0x6BBA,0x5AD7,0x62B7,0x6296,0x6A95,0x6A55,0x7254,0x7255,0x7234,0x6A54,0x6254,0x5A54,0x5273,0x52B4,0x4AD4,0x5BF8,0x85DF,0x863F,0x763F,0x663F,0x5E3F,0x4E3F,0x461E,0x361E,0x2DFE,0x25FE,0x261F,0x1E1F,0x1DFF,0x15FF,0x15FF,0x0DFF,0x0DFF,0x0DFF,0x0DFF,0x0DFF,0x05DF,0x05DF,0x05DF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05BF,0x05DF,0x05DF,0x05FF,0x05FF,0x061F,0x063F,0x067F,0x069F,0x06BF,0x06DF,0x06FF,0x06FF,0x0F1F,0x1F3F,0x2EFF,0x4EFF,0x769F,0x3A51,0x7253,0x8A33,0xA213,0xAA13,0xA9F3,0xA1D3,0xA9D3,0xAA14,0xA214,0x9214,0x7171,0x6191,0x5991,0x5991,0x5191,0x5191,0x5171,0x4970,0x4970,0x4970,0x414F,0x4150,0x414F,0x414F,0x394F,0x394F,0x394E,0x312E,0x394E,0x392E,0x312D,0x312E,0x312D,0x312D,0x312D,0x312D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x292D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x292D,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x292D,0x292D,0x290D,0x210D,0x212E,0x212E,0x192F,0x192F,0x1930,0x1950,0x1951,0x1151,0x1151,0x1151,0x1151,0x1152,0x1151,0x1152,0x1972,0x1972,0x1972,0x1992,0x1972,0x1972,0x1992,0x1992,0x1992,0x1993,0x1972,0x1992,0x1993,0x1993,0x1992,0x1992,0x1993,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1972,0x1972,0x1972,0x1972,0x1972,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1172,0x1972,0x1992,0x1972,0x1972,0x1993,0x1972,0x1972,0x1972,0x1972,0x1972,0x1972,0x1972,0x1972,0x1172,0x1172,0x1193,0x1173,0x1193,0x0994,0x09B4,0x09B5,0x0195,0x09B6,0x01B6,0x09D6,0x01B6,0x01B6,0x01B6,0x09D6,0x09B5,0x09B5,0x11B4,0x1172,0x1951,0x192F,0x210E,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x312D,0x290C,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x30EC,0x28EC,0x30EC,0x30CC,0x30EC,0x30EC,0x30EC,0x28CC,0x28EC,0x28CC,0x28EC,0x28EC,0x28ED,0x28CC,0x30ED,0x28EC,0x28ED,0x28EC,0x28ED,0x28CC,0x310D,0x28ED,0x310D,0x310D,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x310D,0x28EC,0x310D,0x28ED,0x310D,0x30ED,0x30ED,0x30ED,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28CC,0x28EC,0x28CB,0x28EC,0x28EC, + 0x99D2,0x99F2,0x91D1,0x91D1,0x91D1,0x91B1,0x91D1,0x91D2,0x91F2,0x9212,0x9A12,0x9A33,0x91F2,0x9212,0x91F2,0x89F2,0x9233,0x9233,0x9253,0x8A33,0x9253,0x8A53,0x8233,0x7A12,0x71B0,0x592E,0x48AC,0x384B,0x304B,0x304A,0x304A,0x308B,0x30AB,0x30CC,0x30CC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x310C,0x30EC,0x310C,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x28EC,0x290C,0x290C,0x290D,0x290D,0x290D,0x312D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x292D,0x292D,0x290D,0x290C,0x290D,0x290D,0x292D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x28EC,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30EC,0x30EC,0x38ED,0x38ED,0x30ED,0x30ED,0x310D,0x310D,0x310D,0x390D,0x390D,0x390D,0x392D,0x392D,0x392D,0x392D,0x392D,0x392E,0x394E,0x392E,0x392E,0x392E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x392E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394F,0x394F,0x394F,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394F,0x394E,0x394E,0x414E,0x394E,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x416F,0x416F,0x416F,0x414F,0x416F,0x416F,0x416F,0x416F,0x416F,0x496F,0x4970,0x4970,0x4970,0x4970,0x4990,0x4970,0x4970,0x5190,0x4990,0x4991,0x4991,0x4991,0x4991,0x5191,0x5191,0x51B1,0x51B1,0x51B1,0x51B1,0x51D1,0x51B1,0x51D2,0x51D2,0x51D2,0x51D2,0x51F2,0x51F3,0x51F3,0x51D3,0x51F3,0x49F3,0x49D3,0x49D3,0x49D3,0x5234,0x6AD7,0x6AD7,0x72D7,0x72B6,0x7A95,0x8275,0x8255,0x8255,0x8255,0x8255,0x8275,0x7A55,0x7234,0x6A13,0x59F3,0x49D2,0x49F2,0x741A,0x855E,0x85FF,0x6E3F,0x665F,0x565F,0x4E7F,0x3E3F,0x361E,0x25DE,0x25FF,0x1DFF,0x1DFF,0x15FF,0x15FF,0x0DFF,0x0DFF,0x0DFF,0x0DDF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05FF,0x05FF,0x05FF,0x05FF,0x061F,0x061F,0x065F,0x067F,0x069F,0x06BF,0x06FF,0x06FF,0x0F1F,0x0F1F,0x171F,0x2F1F,0x471F,0x873F,0x4B54,0x5A12,0x8A74,0x9A33,0xAA34,0xAA14,0xA1D3,0xAA14,0xA1F3,0xA234,0x9214,0x7971,0x6151,0x5971,0x5171,0x5171,0x5171,0x5191,0x4970,0x4970,0x4970,0x4970,0x414F,0x414F,0x414F,0x394F,0x394F,0x392E,0x394E,0x392E,0x392E,0x392E,0x392E,0x312E,0x310D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x292C,0x292D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290D,0x290D,0x210D,0x210E,0x210E,0x212F,0x192F,0x192F,0x192F,0x1930,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x192F,0x190F,0x190F,0x192F,0x190F,0x190F,0x192F,0x190F,0x1930,0x192F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x1930,0x192F,0x1930,0x192F,0x192F,0x192F,0x110F,0x192F,0x1930,0x110F,0x192F,0x1930,0x1930,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1910,0x1930,0x1930,0x1951,0x1951,0x1951,0x1151,0x1131,0x1152,0x1152,0x1173,0x1194,0x0995,0x0995,0x09B6,0x09B6,0x09B6,0x09D6,0x09B6,0x09D6,0x11D5,0x11D5,0x11B4,0x1172,0x1930,0x192F,0x210E,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290C,0x28EC,0x30EC,0x310D,0x28EC,0x28EC,0x28EC,0x310D,0x290C,0x28EC,0x28EC,0x28ED,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x28EC,0x290D,0x28EC,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x28ED,0x290D,0x290D,0x310D,0x310D,0x28EC,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC, + 0x99D1,0x91B1,0x99F2,0x91D1,0x99D1,0x99D2,0x91D1,0x91D1,0x91F2,0x91D2,0x99F2,0x91D2,0x99F2,0x91F2,0x91D2,0x91D2,0x91F2,0x91F2,0x91F2,0x91F2,0x9233,0x9213,0x9233,0x9233,0x8A33,0x8A53,0x8A73,0x8233,0x71F1,0x592E,0x48AC,0x384B,0x302A,0x284A,0x304A,0x308B,0x308B,0x30AC,0x30AB,0x30CC,0x30EC,0x30EC,0x38EC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x28EC,0x310D,0x310D,0x310D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290D,0x290C,0x290C,0x290D,0x292D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x28EC,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x292D,0x290D,0x292D,0x290C,0x290D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290C,0x292D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x30ED,0x30ED,0x310D,0x310D,0x310D,0x310D,0x390D,0x310D,0x390D,0x392D,0x392D,0x392D,0x392D,0x392D,0x392D,0x392D,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394E,0x394E,0x392E,0x392E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x392E,0x392E,0x394E,0x392E,0x394E,0x394F,0x394F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x414F,0x416F,0x416F,0x416F,0x414F,0x416F,0x496F,0x496F,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4990,0x4990,0x4990,0x4990,0x4990,0x4990,0x5191,0x5191,0x5191,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51B2,0x51D2,0x51D2,0x51D2,0x51D2,0x51D2,0x51D2,0x51D2,0x51D3,0x51D2,0x51D2,0x51D2,0x51D2,0x5A13,0x6A95,0x7AD6,0x82D6,0x8295,0x8A75,0x8A55,0x9255,0x9255,0x9255,0x9255,0x9255,0x8A34,0x9235,0x8A14,0x79D3,0x71F3,0x61F3,0x5A74,0x5316,0x5BF8,0x85DF,0x865F,0x6E3F,0x663F,0x565F,0x461F,0x2DBD,0x259D,0x25DF,0x25FF,0x1DDF,0x15FF,0x15FF,0x0DDF,0x0DFF,0x0DFF,0x05DF,0x05DF,0x05DF,0x05DF,0x05DF,0x05FF,0x05FF,0x05FF,0x061F,0x061F,0x061F,0x063F,0x063F,0x065F,0x069F,0x06BF,0x06DF,0x06FF,0x071F,0x0F3F,0x0F5F,0x175F,0x273F,0x3EDE,0x6F1F,0x751B,0x41F0,0x8AB4,0x9213,0xA233,0xAA13,0xA9F3,0xA1F3,0xAA34,0xA234,0x9A14,0x81D3,0x6151,0x6191,0x5971,0x5191,0x5170,0x5171,0x4970,0x4970,0x4970,0x4170,0x414F,0x414F,0x414F,0x394F,0x392F,0x394F,0x392E,0x394E,0x392E,0x392E,0x392E,0x392E,0x312D,0x312E,0x312D,0x312E,0x312D,0x312D,0x310D,0x312D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x292D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x212D,0x212E,0x210E,0x212E,0x210E,0x210E,0x212F,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x210E,0x210E,0x210E,0x210E,0x20EE,0x210E,0x210D,0x210E,0x210E,0x20EE,0x210E,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x210E,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x210E,0x210E,0x210E,0x210E,0x190E,0x190E,0x210E,0x190E,0x190E,0x190E,0x212E,0x190E,0x190E,0x190E,0x210F,0x210F,0x18EE,0x20EF,0x210F,0x210F,0x190F,0x210F,0x190F,0x190F,0x192F,0x190F,0x1930,0x1930,0x1131,0x1151,0x1973,0x1193,0x1194,0x11B5,0x11B5,0x09B5,0x09B6,0x09B6,0x09B5,0x11D5,0x11B5,0x11B4,0x1193,0x1971,0x1950,0x192F,0x212E,0x292D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x310D,0x310D,0x310D,0x290C,0x28EC,0x310D,0x310D,0x290D,0x28EC,0x290D,0x290D,0x28EC,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x310D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x292D,0x290C,0x28EC,0x290D,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C, + 0x91B1,0x99D1,0x99D1,0x99D1,0x99D1,0x99D1,0x91B1,0x99D1,0x91B1,0x91D1,0x91B1,0x99D2,0x99F2,0x91D2,0x99F2,0x99D2,0x91B2,0x91D2,0x91D2,0x99F2,0x91F2,0x91D2,0x91F2,0x9A13,0x9212,0x9212,0x9212,0x9232,0x8A33,0x9273,0x9294,0x8A93,0x8232,0x69B0,0x594E,0x48CC,0x386B,0x304A,0x306B,0x306A,0x308B,0x30AB,0x38AC,0x38CC,0x38CC,0x38CC,0x30CC,0x30CC,0x30CC,0x30EC,0x30EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x292D,0x290C,0x290D,0x290C,0x290C,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292C,0x292C,0x292D,0x290C,0x290C,0x292C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290D,0x290C,0x290D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x392D,0x392D,0x392D,0x312D,0x392D,0x392D,0x312D,0x312E,0x312E,0x312D,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394E,0x394E,0x392E,0x392E,0x392E,0x394E,0x392E,0x392E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x394E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394F,0x394E,0x394E,0x394E,0x414F,0x414F,0x414F,0x414F,0x414F,0x394F,0x394F,0x394F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x416F,0x416F,0x414F,0x416F,0x496F,0x414F,0x4970,0x4970,0x4970,0x4970,0x4990,0x4990,0x4990,0x4990,0x4990,0x5191,0x5191,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51D1,0x51D2,0x51D2,0x51F2,0x51F2,0x51F2,0x51D2,0x51D2,0x51D2,0x51D2,0x59D2,0x59D2,0x59D2,0x59D2,0x6A13,0x7A75,0x8A95,0x9275,0x9255,0x9234,0x9A14,0x9A14,0x9A14,0x9A34,0x9A34,0x9A34,0x9A54,0x9A75,0x8A14,0x81F4,0x7A14,0x7214,0x6234,0x5213,0x4233,0x6C3A,0x7D7E,0x7E3F,0x665F,0x5E7F,0x4E3F,0x2D9D,0x257D,0x25BF,0x1DDF,0x1DDF,0x15DF,0x15FF,0x0DDF,0x0DDF,0x0DFF,0x05FF,0x05FF,0x05FF,0x05FF,0x05FF,0x061F,0x061F,0x063F,0x063F,0x063F,0x065F,0x069F,0x069F,0x06DF,0x06FF,0x071F,0x073F,0x071F,0x0F3F,0x173F,0x1F1F,0x36FE,0x5EDF,0x8E7F,0x3A30,0x82F5,0x9273,0x9A33,0xA213,0xA9F3,0xA9F3,0xA9F3,0xAA14,0xA214,0x9214,0x6951,0x6171,0x5991,0x5171,0x5170,0x5171,0x4970,0x4970,0x4970,0x4170,0x414F,0x4170,0x414F,0x414F,0x394F,0x394F,0x392E,0x394E,0x394E,0x392E,0x392E,0x312D,0x392E,0x312E,0x314E,0x312D,0x312D,0x312D,0x310D,0x310D,0x312D,0x310D,0x310D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x292C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x292C,0x290C,0x292D,0x290C,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x292D,0x290D,0x210E,0x210E,0x210E,0x292E,0x292E,0x210D,0x290E,0x210D,0x210D,0x20ED,0x290D,0x290D,0x20ED,0x210D,0x290D,0x210D,0x210D,0x210D,0x290D,0x210D,0x210D,0x20ED,0x290D,0x20ED,0x290D,0x210D,0x290D,0x20ED,0x20ED,0x210D,0x290D,0x20ED,0x210D,0x20ED,0x210D,0x20ED,0x290E,0x290E,0x210D,0x210D,0x210D,0x210D,0x210D,0x20ED,0x210D,0x210D,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210F,0x190E,0x190F,0x190F,0x190F,0x1930,0x1951,0x1952,0x1152,0x1173,0x1194,0x11B4,0x11B4,0x11B4,0x1194,0x1194,0x1193,0x1193,0x1171,0x1951,0x1950,0x212E,0x210D,0x292D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x290D,0x28EC,0x290C,0x292D,0x290C,0x290C,0x290D,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x20EC,0x20EC,0x290C,0x290C, + 0x99D1,0x99D1,0x99D1,0x99F2,0x99F2,0x99D1,0x99D1,0x99D1,0x91B1,0x91B1,0x91B1,0x99B1,0x91B1,0x99D2,0x99D2,0x99B2,0x99B2,0x99D2,0x99D2,0x99D2,0x99D2,0x91B1,0x99F2,0x91D2,0x91F2,0x91D1,0x9212,0x91F2,0x9212,0x9212,0x9212,0x9232,0x8A32,0x9273,0x9294,0x9294,0x8A53,0x79F1,0x6990,0x510D,0x48AC,0x386B,0x384B,0x304B,0x306B,0x388B,0x388B,0x38AC,0x30AC,0x30CC,0x30CC,0x30CC,0x30EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x312D,0x290D,0x292D,0x292D,0x290D,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x392D,0x392D,0x392D,0x312D,0x392D,0x312D,0x392D,0x312D,0x312D,0x312E,0x394E,0x392E,0x392E,0x392E,0x312D,0x392E,0x392E,0x312E,0x312E,0x312E,0x392E,0x392E,0x394E,0x392E,0x392E,0x394E,0x392E,0x394E,0x392E,0x392E,0x392E,0x394E,0x392E,0x392E,0x394E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394E,0x394E,0x394E,0x394F,0x394F,0x394F,0x394F,0x394F,0x394F,0x394F,0x414F,0x414F,0x414F,0x414E,0x414E,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x416F,0x416F,0x416F,0x496F,0x416F,0x496F,0x4970,0x4990,0x4970,0x4970,0x4990,0x4990,0x4990,0x4990,0x5191,0x5191,0x5191,0x51B1,0x5191,0x51B1,0x51B1,0x51D1,0x51D2,0x51D2,0x51D2,0x51D2,0x51D2,0x59D2,0x59D2,0x59D2,0x59D2,0x59D2,0x59D2,0x59D2,0x61B2,0x69B2,0x8234,0x9275,0x9A55,0x9A34,0xA214,0xA214,0xA214,0xA214,0xA214,0xA234,0xA234,0x9A34,0x9A14,0x9A35,0x9215,0x9215,0x8A15,0x7A14,0x7214,0x6254,0x5AD5,0x4B56,0x7D9E,0x867F,0x6E5F,0x665F,0x4E1F,0x253C,0x257D,0x25BE,0x25DF,0x1DDF,0x15DF,0x15FF,0x0DFF,0x0DFF,0x05FF,0x061F,0x061F,0x061F,0x063F,0x063F,0x063F,0x065F,0x065F,0x065F,0x069F,0x06DF,0x06DF,0x071F,0x073F,0x073F,0x073F,0x0F3F,0x0F5F,0x1F5F,0x371F,0x4EDF,0x8EFF,0x4333,0x72F4,0x8253,0x9233,0xA213,0xAA13,0xA9F3,0xA9F4,0xAA14,0xA1F4,0x9214,0x79B2,0x6171,0x5991,0x5171,0x5171,0x5171,0x4970,0x4970,0x4970,0x4170,0x4170,0x414F,0x414F,0x414F,0x414F,0x394F,0x394E,0x392E,0x392E,0x392E,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x312D,0x292D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x292C,0x292C,0x292C,0x290C,0x292C,0x290C,0x292C,0x290C,0x292C,0x292C,0x292C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x310C,0x290C,0x310C,0x290C,0x28EC,0x310C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x210D,0x290D,0x290D,0x210D,0x292D,0x210D,0x210D,0x290D,0x290D,0x28ED,0x28ED,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x292E,0x210E,0x210E,0x210E,0x210F,0x212F,0x1930,0x1930,0x1931,0x1951,0x1972,0x1993,0x1993,0x1193,0x1193,0x1193,0x1172,0x1172,0x1151,0x1950,0x192F,0x214F,0x212E,0x212D,0x292D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x210D,0x290D,0x290C,0x290D,0x290C,0x290C,0x28EC,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C, + 0x91B1,0x99B1,0x99B1,0x99D1,0x99D1,0x99D1,0x99D1,0x99D1,0x99D1,0x99D1,0x99D1,0x99B1,0x99D2,0x99D2,0x99B2,0x99B2,0x99B1,0x99B1,0x99D2,0x99B2,0x99D2,0x99D2,0x99B1,0x91B1,0x91D1,0x91B1,0x91D1,0x91D1,0x91F2,0x9A12,0x9A12,0x91F2,0x91F2,0x89D1,0x89F2,0x8A12,0x9232,0x9253,0x9273,0x9253,0x9273,0x8232,0x71B1,0x614F,0x50ED,0x488C,0x408B,0x388B,0x386B,0x308B,0x38AC,0x30AC,0x30CC,0x30EC,0x30CC,0x30EC,0x30EC,0x30EC,0x310C,0x310C,0x310C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x310D,0x290D,0x290D,0x290C,0x290D,0x290C,0x292C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x292D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290C,0x290C,0x290D,0x292D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290C,0x292C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x312D,0x290D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x392D,0x392D,0x312D,0x312D,0x312D,0x312D,0x392D,0x312D,0x312D,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x312E,0x394E,0x394E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394E,0x394F,0x394F,0x394F,0x394E,0x394E,0x414E,0x414E,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x414F,0x496F,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4990,0x4990,0x5191,0x4991,0x5191,0x5191,0x51B1,0x51B1,0x51B1,0x51B1,0x51D2,0x59D2,0x51D2,0x51D2,0x59D2,0x59D2,0x59D2,0x59D2,0x61F2,0x61D2,0x61D2,0x69B2,0x69B2,0x79D3,0x9A34,0x9A14,0xA214,0xAA14,0xAA14,0xAA14,0xAA14,0xAA14,0xAA14,0xA214,0xA214,0xA214,0xA214,0x9A35,0x9A35,0x9255,0x8A55,0x8255,0x7275,0x6AB6,0x5294,0x5B77,0x859F,0x863F,0x767F,0x6EBF,0x4E3F,0x35BD,0x2D9D,0x25BE,0x1DBE,0x1DDE,0x15FE,0x0DFF,0x0E1F,0x061F,0x0E3F,0x063F,0x063F,0x063F,0x065F,0x065F,0x067F,0x069F,0x06BF,0x06DF,0x06FF,0x071F,0x075F,0x075F,0x075F,0x0F5F,0x0F7F,0x1F5F,0x271F,0x46DE,0x7F3F,0x5CB8,0x4A51,0x7A73,0x8A33,0xA234,0xAA14,0xA9F4,0xA9D3,0xAA14,0xA1F4,0x99F3,0x89F3,0x6971,0x6191,0x5971,0x5171,0x5171,0x4970,0x4990,0x4990,0x4990,0x4170,0x416F,0x414F,0x414F,0x414F,0x394F,0x394E,0x394E,0x392E,0x392E,0x392E,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x292C,0x292C,0x290C,0x292C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x310C,0x310C,0x290C,0x290C,0x290C,0x310C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x292E,0x292E,0x292E,0x210E,0x210E,0x210E,0x212F,0x212F,0x2150,0x1950,0x1951,0x1971,0x1972,0x1971,0x1971,0x1971,0x1130,0x1950,0x1950,0x194F,0x192E,0x212E,0x210D,0x210C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x28EC,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x20EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C, + 0x91B1,0x91B1,0x99B1,0x99B1,0x99D1,0x91B1,0x99D1,0x99D1,0x99D1,0x99D1,0x99D2,0x99D1,0x99D1,0x99D2,0x99B1,0x99B1,0x99B2,0x99D2,0x99B2,0x99B2,0x99D2,0x99B1,0x99B1,0x99B1,0x99B1,0x99D1,0x91B1,0x99D1,0x99D2,0x99D2,0x99F2,0x91D2,0x99F2,0x91D2,0x91F2,0x91D2,0x91F2,0x89D1,0x91F2,0x91F2,0x9233,0x9212,0x9253,0x9253,0x8A53,0x8A53,0x8253,0x71F1,0x614F,0x50ED,0x48CD,0x388C,0x306B,0x308B,0x308B,0x30AC,0x30CC,0x30CC,0x30CC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x28EC,0x290C,0x290D,0x28EC,0x290D,0x290D,0x28EC,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x292C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x292C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x312D,0x310D,0x312D,0x312D,0x312D,0x312D,0x312D,0x392E,0x392E,0x312D,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394F,0x394F,0x394F,0x394F,0x394F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x414F,0x414F,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4990,0x4990,0x4990,0x4990,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x51D2,0x59D2,0x59D2,0x59D2,0x59D2,0x61D2,0x61D2,0x61D2,0x61B1,0x6991,0x7191,0x81B2,0x9A14,0xA214,0xAA14,0xAA14,0xB214,0xAA14,0xA9F4,0xAA14,0xAA14,0xAA14,0xAA14,0xAA14,0xA214,0xA234,0x9A34,0x9A35,0x9255,0x8A35,0x8255,0x7A75,0x6A95,0x52D5,0x5397,0x5C79,0x7E5F,0x767F,0x5E5F,0x4DFF,0x463F,0x3E5F,0x2E3F,0x15DD,0x15FE,0x161E,0x0E1F,0x0E3F,0x0E3F,0x065F,0x065F,0x065F,0x067F,0x069F,0x069F,0x06DF,0x06DF,0x071F,0x073F,0x073F,0x075F,0x077F,0x0F7F,0x0F5F,0x175F,0x2F5F,0x36DE,0x66FF,0x7E3D,0x31EF,0x7AD4,0x8A53,0x9A33,0xA1F3,0xA9F4,0xA9F4,0xA9F4,0xA1F4,0xA214,0x9214,0x6951,0x6171,0x5971,0x5171,0x5171,0x4970,0x4990,0x4970,0x4170,0x4170,0x4190,0x394F,0x414F,0x394F,0x414F,0x392E,0x392E,0x392E,0x392E,0x392E,0x310D,0x392E,0x392E,0x312D,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290C,0x292C,0x290C,0x290C,0x292C,0x292C,0x290C,0x292C,0x290C,0x292C,0x292C,0x290C,0x290C,0x292D,0x292C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x292C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x292D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x310D,0x290C,0x28EC,0x310D,0x310C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x292E,0x290E,0x292E,0x210E,0x212F,0x212F,0x212F,0x212F,0x192F,0x1930,0x1930,0x1950,0x1950,0x192F,0x192F,0x192E,0x192E,0x212E,0x210D,0x212D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C, + 0x99D1,0x99D1,0x99D1,0x99D1,0x99D1,0x99D1,0x91B1,0x99B1,0x99D1,0x99D1,0x91D1,0x99D2,0x99D2,0x99D2,0x99B2,0x99D2,0x99D2,0x99B1,0x99B2,0x99B2,0x99B2,0x99D2,0x99B1,0x99B1,0x9191,0x99B1,0x99B1,0x99D2,0x99D1,0x99D2,0x99D2,0x99B1,0x99F2,0x99D2,0x91D2,0x91D2,0x91D1,0x91D2,0x91D2,0x91D2,0x91F2,0x91F2,0x91F2,0x91F2,0x89F2,0x8A12,0x8A32,0x8A33,0x8A53,0x8A53,0x8A73,0x8253,0x79F1,0x618F,0x512E,0x40CC,0x388B,0x306A,0x306B,0x308B,0x30AB,0x30AC,0x30AC,0x30AC,0x30CC,0x30EC,0x30CC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x310C,0x28EC,0x310D,0x310C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x292D,0x290C,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290C,0x290D,0x290C,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x292C,0x292D,0x292D,0x292D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x392D,0x310D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312E,0x312D,0x312E,0x312E,0x312E,0x392E,0x392E,0x312E,0x392E,0x392E,0x392E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394F,0x414F,0x414F,0x394F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x4170,0x4170,0x4970,0x4970,0x4970,0x4950,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4990,0x4990,0x5191,0x5191,0x51B1,0x51B1,0x51B1,0x51D2,0x51D1,0x59D2,0x59D2,0x59D2,0x59B2,0x61D2,0x61B2,0x61D2,0x69B2,0x6991,0x7992,0x8172,0x99F4,0xAA34,0xAA14,0xB214,0xB214,0xB214,0xB214,0xAA14,0xAA14,0xAA14,0xAA14,0xAA14,0xA214,0xA214,0x9A34,0x9A35,0x9235,0x9255,0x8255,0x7A55,0x6A95,0x5AB5,0x4AD5,0x3293,0x3315,0x54BB,0x5D9E,0x55FF,0x567F,0x4EBF,0x46BF,0x265E,0x161E,0x0E3E,0x0E5F,0x0E5F,0x065F,0x067F,0x069F,0x069F,0x069F,0x06BF,0x06DF,0x06FF,0x071F,0x073F,0x075F,0x075F,0x077F,0x077F,0x0F7F,0x175F,0x1F3F,0x371F,0x4EDE,0x871F,0x2A50,0x6293,0x8273,0x9A53,0xA213,0xA9F4,0xA9D3,0xA9D3,0xA1F4,0xA214,0x9A35,0x7171,0x6151,0x6191,0x5150,0x5170,0x4970,0x4990,0x4970,0x4970,0x4170,0x414F,0x414F,0x414F,0x414F,0x394F,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x310D,0x310D,0x312E,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x28EC,0x28EC,0x310C,0x310C,0x290C,0x310D,0x290C,0x290D,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290D,0x290D,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x290D,0x290D,0x292E,0x290D,0x292E,0x212E,0x212E,0x212E,0x210E,0x212E,0x212F,0x212F,0x192E,0x192E,0x190E,0x210E,0x212E,0x210D,0x212D,0x210D,0x290C,0x290C,0x290C,0x290C,0x312C,0x290C,0x310C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x290D,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC, + 0x99D2,0x99D1,0x99D1,0x99D1,0x99D1,0x99D1,0x91B1,0x99F2,0x91B1,0x91D1,0x99D1,0x91D1,0x91B1,0x91B1,0x99D2,0x91B1,0x99D2,0x99B2,0x99B2,0x99B2,0x99D2,0x99B2,0x99D2,0x99B1,0x99B1,0x99B2,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x91D2,0x91D2,0x91D2,0x91F2,0x91D2,0x91F2,0x91F2,0x91F2,0x91F2,0x9212,0x8A12,0x8A12,0x8A12,0x8A53,0x8A73,0x8A73,0x8A73,0x8252,0x71F1,0x69B0,0x590E,0x408C,0x302A,0x302A,0x304A,0x386B,0x308B,0x308B,0x30AC,0x30AC,0x30CC,0x30CC,0x30CC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x292D,0x290C,0x292D,0x290C,0x292D,0x292D,0x290C,0x292C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x314E,0x394E,0x392E,0x392D,0x312D,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394F,0x394F,0x394F,0x394F,0x394F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x4170,0x4170,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4990,0x4990,0x5191,0x5191,0x51B1,0x51B1,0x51B1,0x51B1,0x51B1,0x59B1,0x59B1,0x59B2,0x59B2,0x59B2,0x61D2,0x61D2,0x69B2,0x69B2,0x71B2,0x7171,0x7951,0x91B3,0xAA34,0xAA14,0xAA14,0xB214,0xB214,0xB1F4,0xB1F4,0xB1F4,0xB1F4,0xA9F4,0xA9F4,0xAA14,0xA214,0xA214,0x9A14,0x9A35,0x9234,0x8A55,0x8255,0x7275,0x6A74,0x5A94,0x5294,0x3A93,0x2AD4,0x2334,0x2BB6,0x3499,0x665F,0x569F,0x469F,0x367F,0x265F,0x1E5F,0x165F,0x0E7F,0x0E9F,0x0EBF,0x06BF,0x06BF,0x06DF,0x071F,0x073F,0x075F,0x075F,0x075F,0x077F,0x077F,0x0F9F,0x177F,0x1F5F,0x2F1F,0x3E9D,0x877F,0x4395,0x5252,0x82B4,0x8A13,0x9A13,0xA9F3,0xA9F4,0xA9F4,0xA9F4,0xA1F4,0x9A34,0x89D3,0x6951,0x6171,0x5171,0x5170,0x5191,0x4970,0x4970,0x4970,0x4170,0x414F,0x414F,0x414F,0x414F,0x414F,0x392E,0x392E,0x392E,0x392E,0x392E,0x390D,0x392E,0x310D,0x312E,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x292C,0x290C,0x292C,0x292C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290C,0x290C,0x290D,0x290D,0x290D,0x310D,0x310D,0x310C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x210D,0x210D,0x210E,0x210E,0x212E,0x210D,0x212E,0x210E,0x210D,0x210D,0x292D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x28EC,0x290D,0x28EC,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC, + 0x9991,0x99B1,0x99D1,0x99D2,0x99D1,0x99D2,0x99D2,0x91B1,0x91D1,0x91B1,0x99D2,0x91D1,0x91B1,0x99D2,0x91B1,0x99D2,0x91B1,0x99B2,0x99B1,0x99D2,0x99B2,0x99B2,0x99B1,0x99B1,0x99B1,0x99B2,0x99B2,0x99B2,0x99D2,0x99B2,0x99D2,0x99B1,0x99D2,0x99D2,0x99D2,0x99D2,0x99B2,0x99B2,0x99D2,0x99D2,0x99F2,0x91D2,0x99D2,0x91D2,0x91D2,0x91F2,0x91D1,0x91D2,0x9212,0x9A33,0x9212,0x9212,0x89F2,0x8A12,0x8A12,0x8A12,0x8A32,0x8A32,0x8A33,0x8A33,0x8A33,0x81F2,0x79D1,0x7190,0x50AD,0x406B,0x408C,0x386B,0x304B,0x304A,0x306B,0x306B,0x308B,0x30AC,0x30CC,0x30EC,0x30EC,0x310C,0x310C,0x310C,0x310C,0x290C,0x310D,0x28EC,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x310D,0x310D,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x292D,0x290C,0x292D,0x292D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x292D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290C,0x310D,0x312D,0x290C,0x290C,0x310D,0x312D,0x310D,0x310D,0x310D,0x312D,0x310C,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x312D,0x312D,0x312D,0x312E,0x312D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312D,0x310D,0x312E,0x312E,0x312E,0x312D,0x310D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x310D,0x312E,0x312E,0x392E,0x392E,0x312E,0x312E,0x392E,0x392E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394E,0x394E,0x394F,0x394F,0x394F,0x414F,0x392F,0x414F,0x414F,0x414F,0x414F,0x414F,0x4170,0x414F,0x4170,0x416F,0x4990,0x416F,0x416F,0x416F,0x4170,0x4970,0x4970,0x4970,0x4991,0x4991,0x5191,0x5171,0x5171,0x5191,0x51B2,0x51B2,0x5191,0x5191,0x59B1,0x59B1,0x61B2,0x61B2,0x69B2,0x6151,0x6951,0x7992,0x8172,0x99F4,0xA214,0xA9D3,0xA9F4,0xB1F4,0xA9B3,0xA9D3,0xA9D3,0xB1F4,0xA9B3,0xA9D3,0xA1B3,0xA1D3,0xA1D3,0xAA14,0xAA34,0x9A14,0x9A34,0x9234,0x8213,0x8254,0x8295,0x82F6,0x72F6,0x62D5,0x4232,0x31F1,0x42D4,0x649A,0x7E3F,0x6E9F,0x56BF,0x3E9F,0x265E,0x165E,0x167E,0x0E9F,0x0E9F,0x06DF,0x0EFF,0x071F,0x073F,0x075F,0x077F,0x077F,0x079F,0x079F,0x0F9F,0x179F,0x1F7F,0x2F3F,0x3EDE,0x6EFF,0x6D1B,0x4231,0x82D4,0x9274,0x9A13,0xAA14,0xA1D3,0xA9F4,0xA9F4,0xA214,0xA214,0x9213,0x6951,0x6171,0x5971,0x5170,0x5170,0x4970,0x4970,0x4970,0x4170,0x4170,0x414F,0x414F,0x414F,0x394F,0x394F,0x394F,0x392E,0x392E,0x392E,0x390D,0x390E,0x312E,0x312E,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290C,0x290D,0x310D,0x292D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x210C,0x290D,0x290D,0x210C,0x210C,0x210C,0x210C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290D,0x290D,0x290D,0x290D,0x20ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x212D,0x212D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x28EC,0x28EC,0x290C,0x290D,0x290D,0x28EC,0x28EC,0x28EC,0x290D,0x28EC,0x290D,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x20EC,0x28EC,0x28EC, + 0x9971,0x9971,0x9991,0x99D1,0x99B1,0x99D1,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99F2,0x91D1,0x99D2,0x99D2,0x91B1,0x91D2,0x91B1,0x99B2,0x99B2,0x99B1,0x99B1,0x99B2,0x99B2,0x99B1,0x99B2,0x99B1,0x99D2,0x99B2,0x99B2,0x99D2,0x99D2,0x99B2,0x9191,0x99D2,0x99B2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x91D2,0x91D2,0x91F2,0x91D2,0x91D2,0x91D2,0x91D2,0x91F2,0x91F2,0x91F2,0x91F2,0x9212,0x91F2,0x9212,0x91F2,0x91F2,0x9213,0x9213,0x9212,0x8A12,0x8212,0x81F2,0x71D1,0x616F,0x50ED,0x48AC,0x384B,0x302A,0x304A,0x306A,0x308B,0x30AB,0x30CC,0x30CC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x310C,0x310C,0x310C,0x30EC,0x28EC,0x310C,0x28EC,0x310D,0x310C,0x290C,0x28EC,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290D,0x290C,0x292D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290D,0x290C,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x292D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x292D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x292D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x292D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x292D,0x290C,0x290C,0x290C,0x312D,0x312D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x312D,0x310D,0x310D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x312D,0x310D,0x310D,0x312D,0x312D,0x310D,0x312D,0x312E,0x312E,0x310D,0x312E,0x312E,0x312D,0x310D,0x312D,0x312E,0x310D,0x310D,0x310D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x394E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394E,0x394E,0x392F,0x394F,0x392F,0x392F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x416F,0x416F,0x416F,0x416F,0x416F,0x4170,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4971,0x5171,0x5191,0x5191,0x59B2,0x5191,0x5191,0x5191,0x5991,0x5991,0x61B2,0x6192,0x6171,0x6972,0x6951,0x7972,0x89D3,0x99F4,0xAA14,0xA9F4,0xA9D4,0xA9D3,0xB1F4,0xA9D3,0xA9D3,0xB1F4,0xA9B3,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xA9F3,0xA9F3,0xAA13,0x99D3,0x99F3,0x9A13,0x9214,0x9A75,0x9254,0x8A54,0x8AB5,0x7A74,0x6213,0x39B0,0x3A52,0x5C79,0x7E7F,0x6EDF,0x4EBF,0x367F,0x1E5E,0x167E,0x0E9E,0x0EDF,0x0EFF,0x0F1F,0x073F,0x073F,0x077F,0x077F,0x077F,0x077F,0x077F,0x0F9F,0x175F,0x275F,0x3EFF,0x56BE,0x865F,0x3250,0x7AF4,0x8A33,0x9A13,0xA1D3,0xA9F4,0xA9F4,0xAA14,0xA1F4,0xA214,0x9A34,0x7991,0x6171,0x6191,0x5170,0x5191,0x4970,0x4970,0x4970,0x4970,0x4970,0x414F,0x414F,0x414F,0x394F,0x394F,0x392E,0x394E,0x392E,0x392E,0x392E,0x392E,0x310D,0x312E,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290C,0x292D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x28EC,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x210D,0x290D,0x290D,0x290D,0x290D,0x210C,0x290C,0x290C,0x210C,0x290C,0x290C,0x292C,0x292C,0x312C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x210D,0x290D,0x290D,0x290D,0x290C,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x28EC,0x290D,0x290D,0x290D,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290D,0x28EC,0x28EC,0x290D,0x28EC,0x290D,0x28EC,0x28EC,0x28EC,0x290D,0x28EC,0x28EC,0x290D,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x20EC,0x28EC,0x28EC,0x20EC,0x28CC,0x28EC,0x28EC,0x28EC, + 0x99B1,0x9991,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99D2,0x99D2,0x91B1,0x91B1,0x99D2,0x91B2,0x99D2,0x99D2,0x91D1,0x91B1,0x99D2,0x99B2,0x99D2,0x99B1,0x99D2,0x99D2,0x99B1,0x99B1,0x99D2,0x99B1,0x9191,0x99B1,0x99B1,0x99B2,0x99D2,0x99B2,0x99B2,0x99B1,0x99D2,0x91B1,0x99D2,0x99D2,0x99D2,0x91B2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x91D2,0x91D2,0x99D2,0x91D2,0x99D2,0x91D2,0x99D2,0x91D2,0x91F2,0x99F2,0x99F2,0x99F2,0x99F2,0x99F3,0x99F2,0x91F2,0x9212,0x8A12,0x8A12,0x8A33,0x8A32,0x8A53,0x8A53,0x8232,0x79F1,0x698F,0x50ED,0x408B,0x386B,0x304A,0x306A,0x306B,0x308B,0x30CC,0x30CC,0x30CC,0x30CC,0x30EC,0x30CC,0x30EC,0x30EC,0x28EC,0x310D,0x30EC,0x310C,0x30EC,0x310D,0x310D,0x28EC,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x292D,0x28EC,0x290C,0x290C,0x290C,0x290D,0x312D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x312D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x292D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x28EC,0x290C,0x310D,0x310D,0x290C,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x290D,0x290D,0x310D,0x310D,0x290D,0x312D,0x312D,0x310D,0x310D,0x310D,0x312D,0x312D,0x312E,0x312D,0x312E,0x310D,0x310D,0x310D,0x310D,0x312E,0x312D,0x312E,0x312E,0x312E,0x310D,0x312E,0x312E,0x312E,0x312E,0x310E,0x312E,0x312E,0x312E,0x312D,0x312D,0x312E,0x312D,0x312E,0x312D,0x312E,0x312D,0x312E,0x312E,0x312E,0x312E,0x312E,0x394E,0x312E,0x312E,0x312D,0x312D,0x312E,0x392E,0x312E,0x392E,0x310E,0x392E,0x310E,0x310E,0x312E,0x392E,0x392E,0x392E,0x394E,0x394E,0x392F,0x392E,0x392E,0x394F,0x394F,0x394F,0x394E,0x394E,0x394F,0x414F,0x414F,0x416F,0x414F,0x414F,0x416F,0x416F,0x416F,0x416F,0x4990,0x4970,0x4970,0x4970,0x4970,0x4971,0x5191,0x5191,0x5171,0x5171,0x5171,0x5191,0x5191,0x5991,0x5991,0x5991,0x5991,0x6192,0x6992,0x6972,0x6971,0x7151,0x89F3,0x9A14,0xB276,0xA1F4,0xA9F4,0xA9D3,0xA9D3,0xB1F4,0xA9D3,0xB1F4,0xB1D3,0xA9D3,0xB1D3,0xB1D3,0xA9B2,0xA9D3,0xB1F4,0xA9F3,0xA9F3,0xA1F3,0x99D3,0x99F3,0xA254,0x9A34,0x9A54,0x9254,0x8254,0x7A94,0x6A74,0x39B0,0x3AF4,0x757D,0x6E5F,0x5EBF,0x3E9F,0x2E9E,0x1E9E,0x16BE,0x0EFF,0x0F1F,0x0F5F,0x075F,0x077F,0x077F,0x079F,0x079F,0x079F,0x0F9F,0x177F,0x1F5F,0x373F,0x4EBE,0x86DF,0x3AB2,0x72B3,0x8A53,0xA254,0xAA14,0xAA14,0xA9F3,0xA9F3,0xAA14,0xA234,0x9A34,0x81B2,0x6130,0x6191,0x5970,0x5991,0x5170,0x4970,0x4970,0x4970,0x416F,0x416F,0x414F,0x414F,0x394F,0x394E,0x394E,0x394E,0x392E,0x392E,0x392E,0x392E,0x392E,0x312E,0x312E,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292C,0x292D,0x290C,0x292D,0x292D,0x290C,0x292D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x210C,0x292D,0x290D,0x290D,0x292D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x28ED,0x28EC,0x290C,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x28EC,0x28EC,0x28EC,0x290D,0x290D,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290D,0x28EC,0x290D,0x290D,0x28EC,0x28EC,0x28EC,0x290D,0x290D,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290D,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28CC,0x28EC,0x28EC, + 0xA1B1,0xA1B1,0xA1B1,0xA1B1,0x99B1,0x9991,0x99B1,0x9991,0x9191,0x99B1,0x91B1,0x99D2,0x99D2,0x99D2,0x99D2,0x99B2,0x99D2,0x99D2,0x99B1,0x99D2,0x99D2,0x99B2,0x99B1,0x99B2,0x99B1,0x99B1,0x99D2,0x99B2,0x99B1,0x99B1,0x9191,0x99B2,0x91B1,0x99B2,0x99B2,0x99B2,0x99D2,0x99D2,0x91B2,0x91B1,0x99B2,0x91B1,0x91B1,0x99D2,0x99D2,0x91B1,0x99D2,0x99D2,0x91B2,0x99D2,0x99B2,0x99D2,0x99D2,0x91B2,0x99D2,0x99D2,0x99D2,0x99D2,0x99F2,0x99D2,0x99F2,0x99D2,0x99D2,0x99F2,0x9A12,0x9212,0x9212,0x91F2,0x9212,0x89F2,0x9212,0x8A12,0x9253,0x8A32,0x9273,0x8A53,0x7A12,0x69B0,0x594E,0x48CC,0x386B,0x304A,0x304A,0x308B,0x308B,0x308B,0x30AB,0x30AB,0x30AB,0x30CC,0x30CC,0x30CC,0x30EC,0x30EC,0x310D,0x30EC,0x30EC,0x310D,0x28EC,0x310D,0x28EC,0x290C,0x290C,0x290C,0x290C,0x312D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x28EC,0x310C,0x310D,0x310D,0x28EC,0x310C,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x290D,0x290D,0x290D,0x312D,0x310D,0x310D,0x290D,0x310D,0x310D,0x312D,0x310D,0x310D,0x312D,0x312D,0x312D,0x310D,0x310D,0x312D,0x312E,0x312E,0x312E,0x310E,0x312E,0x312E,0x310E,0x310E,0x312E,0x310D,0x312E,0x312E,0x312E,0x312E,0x312D,0x312D,0x312E,0x312D,0x312D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312D,0x312D,0x312D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x310E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392F,0x392E,0x392E,0x392E,0x392E,0x394E,0x394E,0x394E,0x394E,0x414E,0x414E,0x414F,0x414F,0x414F,0x414F,0x414F,0x416F,0x416F,0x496F,0x496F,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x5171,0x5171,0x5191,0x5191,0x5191,0x5191,0x5171,0x5991,0x61B2,0x6192,0x6192,0x6992,0x6971,0x7171,0x8192,0x99F4,0xA214,0xAA35,0xAA14,0xA1B3,0xA9F4,0xA9D3,0xA9D4,0xB1F4,0xB1F4,0xB1F3,0xB1D3,0xB1D3,0xA9D3,0xB1D3,0xB1F4,0xB1F3,0xA9D3,0xA9D3,0xA9D3,0xA1F3,0xA1F3,0xA214,0xA234,0x9A34,0x8A33,0x8A74,0x7AB5,0x5232,0x29D0,0x5479,0x765F,0x5E7F,0x4EFF,0x36DF,0x26DE,0x16FE,0x171F,0x0F3F,0x0F5F,0x0F7F,0x079F,0x077F,0x079F,0x0FBF,0x0F9F,0x179F,0x1F7F,0x2F5F,0x46FF,0x76FF,0x4394,0x6A93,0x8A53,0x9A13,0xAA14,0xA1D3,0xA9F3,0xA9F4,0xAA14,0xA214,0xA234,0x9214,0x6930,0x6991,0x5970,0x5170,0x5190,0x4970,0x4970,0x4970,0x4170,0x416F,0x414F,0x414F,0x414F,0x394F,0x394E,0x394E,0x392E,0x392E,0x392E,0x392E,0x392E,0x312E,0x312D,0x310D,0x312D,0x312D,0x312D,0x310D,0x310D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x292C,0x292C,0x292C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x292D,0x290D,0x290C,0x292D,0x290C,0x290C,0x292D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290C,0x28EC,0x290D,0x28EC,0x28EC,0x290D,0x28EC,0x290D,0x28EC,0x290C,0x28EC,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290D,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28ED,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC, + 0x9971,0x9991,0xA1B1,0xA1B2,0x9991,0x99B2,0x99B1,0x99B1,0x99B2,0x99B1,0x99B1,0x9191,0x99B1,0x9191,0x9191,0x99B2,0x99B2,0x99D2,0x99B2,0x91B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99D2,0x99B1,0x91B1,0x91B1,0x9191,0x91B1,0x91B1,0x91B1,0x99D2,0x99B1,0x99B2,0x99B2,0x99D2,0x99D2,0x99D2,0x99D2,0x99B2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D1,0x99D2,0x99B1,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x91B2,0x99D2,0x91B2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x91D2,0x99F2,0x99F2,0x91F2,0x91F2,0x91F2,0x91F2,0x91F2,0x9213,0x9232,0x9212,0x9212,0x9233,0x9232,0x8A32,0x9274,0x9273,0x8232,0x79F1,0x71D1,0x616F,0x510D,0x40AC,0x386B,0x306B,0x306A,0x306A,0x308B,0x308B,0x30CC,0x30EC,0x30CC,0x30CC,0x30EC,0x30EC,0x30EC,0x30EC,0x310C,0x28EC,0x310C,0x310C,0x310C,0x28EC,0x310C,0x310D,0x290D,0x290D,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290D,0x310D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x292D,0x292D,0x292D,0x290C,0x292D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x28EC,0x290C,0x28EC,0x310D,0x310D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x292D,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x292D,0x290C,0x290C,0x290C,0x292D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x292D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x292D,0x290D,0x292D,0x292D,0x292D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x292C,0x292D,0x290C,0x290C,0x292C,0x292C,0x292D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x292D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x312D,0x290D,0x310D,0x310D,0x310D,0x310C,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x290D,0x312D,0x310D,0x290D,0x310D,0x312D,0x310D,0x312D,0x310D,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x312D,0x312D,0x310D,0x312E,0x312E,0x310E,0x310E,0x310D,0x310D,0x312E,0x312D,0x312E,0x312E,0x310D,0x310D,0x310D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x312E,0x310D,0x310D,0x310D,0x310D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394E,0x394E,0x392E,0x392E,0x414E,0x414E,0x414E,0x414E,0x414F,0x414F,0x416F,0x414F,0x496F,0x496F,0x414F,0x4970,0x4970,0x4970,0x4970,0x4990,0x4970,0x4970,0x4971,0x5191,0x5191,0x5191,0x5191,0x5191,0x5191,0x5171,0x5991,0x5991,0x61B2,0x69B2,0x6972,0x6972,0x7151,0x89D3,0x99F4,0xA214,0xAA35,0xA9D3,0xA9F4,0xA9B3,0xA9D3,0xB1D4,0xB1B3,0xB1D3,0xB1B3,0xB1B3,0xB1D3,0xB1F4,0xA9D3,0xB1D3,0xA9D3,0xA9D3,0xA9F4,0xA9F3,0xA9F3,0xAA14,0xAA34,0x9A34,0x9233,0x8A33,0x7A74,0x6273,0x318F,0x53D7,0x8E9F,0x669F,0x4E9E,0x36DF,0x26FE,0x171F,0x173F,0x0F5F,0x0F7F,0x077F,0x079F,0x079F,0x079F,0x0F9F,0x179F,0x1F7F,0x273F,0x3F1F,0x6EFF,0x5457,0x5A52,0x8A53,0x9A34,0xA213,0xA1D3,0xA9D3,0xA1D3,0xAA14,0xA1F4,0xA214,0xA255,0x7971,0x6150,0x5950,0x5170,0x5170,0x4970,0x4970,0x496F,0x416F,0x416F,0x416F,0x414F,0x394F,0x394F,0x394F,0x394E,0x394E,0x392E,0x392E,0x392E,0x310D,0x312E,0x312D,0x312D,0x312D,0x310D,0x290D,0x310D,0x312D,0x310D,0x290D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x292C,0x292C,0x292C,0x292C,0x290C,0x292D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x292D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x28EC,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x290C,0x28EC,0x290D,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x20EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC, + 0x9971,0x9971,0x9991,0x9991,0x9991,0x9971,0x9991,0x99B1,0x99B1,0x9991,0x99B1,0x9991,0x99B1,0x9991,0x9991,0x9991,0x9991,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99D2,0x91B1,0x91B1,0x99D2,0x91B1,0x91B1,0x99B1,0x99B1,0x99D2,0x99D2,0x99D2,0x91B1,0x99D2,0x99B2,0x99D2,0x99B2,0x99B1,0x99B1,0x99D1,0x99B1,0x99D2,0x99D2,0x99D2,0x99D2,0x99B2,0x99B2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99B2,0x99B2,0x99B2,0x99D2,0x99F2,0x99D2,0x91D2,0x99F2,0x91D2,0x91D2,0x91F2,0x91F2,0x91D2,0x91F2,0x91F2,0x9A12,0x99F2,0x91F2,0x91F2,0x9212,0x9212,0x9233,0x9233,0x8A33,0x8A33,0x8A53,0x8232,0x71F1,0x6990,0x594E,0x40CC,0x408C,0x386B,0x306B,0x308B,0x286A,0x308B,0x30AB,0x30AC,0x30CC,0x30CC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x310D,0x310C,0x30EC,0x310C,0x310C,0x28EC,0x30EC,0x28EC,0x290C,0x290C,0x290C,0x310D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292D,0x28EC,0x290C,0x290C,0x290C,0x292D,0x292D,0x292D,0x290C,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290C,0x28EC,0x28EC,0x290D,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290D,0x290D,0x292D,0x290C,0x292D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x292C,0x292D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x292D,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290D,0x290D,0x290C,0x292C,0x292D,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x292C,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x290C,0x292D,0x290C,0x290C,0x292C,0x290C,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292D,0x292D,0x290C,0x290C,0x292C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x292D,0x290C,0x290C,0x292C,0x290D,0x292D,0x292C,0x292C,0x292C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292C,0x290C,0x292D,0x290C,0x290C,0x292C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x312D,0x312D,0x310D,0x312D,0x290D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312E,0x310E,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x312D,0x310D,0x310D,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x312D,0x312E,0x312D,0x312D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x310E,0x312E,0x392E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x394E,0x392E,0x392E,0x392E,0x392E,0x394E,0x414F,0x412E,0x414F,0x414F,0x416F,0x414F,0x414F,0x414F,0x416F,0x4970,0x4970,0x4970,0x4970,0x4950,0x4970,0x4970,0x4970,0x5191,0x4970,0x5191,0x5191,0x5191,0x5191,0x5191,0x5991,0x5991,0x5991,0x61B2,0x6192,0x6992,0x7192,0x7151,0x8192,0x91D3,0xA234,0xAA14,0xAA14,0xA9F4,0xA9B3,0xA9D3,0xB1D4,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xA9D3,0xA9B3,0xB1F4,0xA9D3,0xAA13,0xA1F3,0xA214,0x9A13,0x8A33,0x8253,0x6A53,0x39B0,0x4313,0x8E7F,0x6E9F,0x4E9F,0x36FE,0x273F,0x1F3F,0x175F,0x0F7F,0x0F7F,0x079F,0x079F,0x07BF,0x0F9F,0x0F9F,0x179F,0x277F,0x36FF,0x5EDF,0x6D7B,0x5272,0x8253,0x9233,0xA214,0xA1F4,0xA1D3,0xAA14,0xA9F3,0xAA14,0xA214,0x9A34,0x89D2,0x6150,0x6170,0x5970,0x5170,0x5190,0x4970,0x496F,0x414F,0x416F,0x416F,0x414F,0x414F,0x394F,0x394F,0x394E,0x392E,0x392E,0x392E,0x392E,0x392E,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x290D,0x312D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x292D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x310D,0x310C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x20EC,0x20EC,0x28EC,0x290C,0x20EC,0x290C,0x28EC,0x290C,0x20EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C, + 0xA1B2,0xA1B2,0xA1B1,0xA1B1,0xA1B1,0xA1B1,0x9991,0x9991,0x9991,0x9991,0x9991,0x9971,0x9991,0x99B1,0x9991,0x9991,0x99B1,0x99B1,0x99B1,0x9991,0x9191,0x99B1,0x99B1,0x9191,0x99B1,0x99D2,0x99B1,0x91B1,0x91D1,0x91B1,0x99D2,0x99D1,0x91B1,0x99D1,0x91D1,0x99D1,0x91B1,0x99D1,0x99D2,0x99B1,0x99B2,0x99D2,0x99B1,0x99D1,0x99D2,0x99B1,0x99B1,0x99D2,0x99B2,0x99B2,0x99B1,0x99D2,0x99B2,0x99D2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99D2,0x99B2,0x99B2,0x99B2,0x99D2,0x99D2,0x99D2,0x91D2,0x91D2,0x91D2,0x99D2,0x99D2,0x99F2,0x91D2,0x99D2,0x99D2,0x99D2,0x91D2,0x91F2,0x91F2,0x9212,0x9A33,0x9233,0x9212,0x8A12,0x8A12,0x8212,0x8A53,0x8A53,0x8A53,0x8253,0x7A12,0x6190,0x512E,0x48ED,0x40AC,0x386B,0x304A,0x306B,0x306B,0x308B,0x30AC,0x38CC,0x30CC,0x30EC,0x30CC,0x30CC,0x30EC,0x30EC,0x30EC,0x310D,0x310C,0x310C,0x30EC,0x310C,0x310C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290D,0x290C,0x292D,0x292D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x310D,0x30EC,0x28EC,0x310D,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x292C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x292C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290C,0x292C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x292C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x292C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x310D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x310D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x312E,0x312E,0x312D,0x392E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392F,0x412F,0x414F,0x414F,0x414F,0x414F,0x416F,0x416F,0x414F,0x414F,0x414F,0x414F,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x4970,0x5191,0x5170,0x5170,0x5170,0x5191,0x5191,0x5991,0x5991,0x5991,0x5991,0x6171,0x6992,0x6992,0x7172,0x7971,0x89D3,0xA214,0xA1F3,0xAA14,0xB214,0xA9D3,0xB1D4,0xB1D3,0xA9B3,0xB1D3,0xA9B3,0xB1B3,0xB1B3,0xB1D3,0xB1B3,0xB1D3,0xA9D3,0xB1D3,0xA9B3,0xA9B3,0xA9D3,0xA9F3,0xA9F3,0xA213,0x9A33,0x9253,0x8A53,0x7A74,0x49F1,0x2A10,0x85FF,0x7EDF,0x56DF,0x36FE,0x271F,0x1F5F,0x177F,0x0F7F,0x0F9F,0x079F,0x07BF,0x0FBF,0x0FBF,0x179F,0x279F,0x375F,0x56FF,0x7E7F,0x4231,0x7232,0x9233,0xA234,0xA1F4,0xA9F4,0xA9F4,0xA9F4,0xA1D3,0xA214,0x9A14,0x9213,0x6930,0x6150,0x5970,0x5170,0x5190,0x5190,0x496F,0x496F,0x4170,0x416F,0x394F,0x414F,0x394F,0x394F,0x394E,0x392E,0x392E,0x392E,0x392E,0x390D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x312D,0x310D,0x290D,0x312D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x292D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x292D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x292C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x292D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x292D,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x20EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x20EC,0x28EC,0x28EC, + 0xA9D2,0xA1B2,0xA1B1,0xA1D2,0xA1B1,0xA1D2,0xA1B1,0xA1B1,0xA1B2,0x9991,0x99B1,0x9991,0x9991,0x9991,0x9971,0x9991,0x9991,0x9991,0x9991,0x99B1,0x99B1,0x9991,0x99B1,0x99B1,0x99D1,0x99B1,0x99B1,0x99D2,0x99D1,0x91D1,0x91D1,0x99D2,0x99D1,0x91B1,0x99D1,0x99D1,0x99B1,0x99B1,0x99D1,0x99B1,0x91B1,0x99B1,0x99B1,0x99B1,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B1,0x99D2,0x99B2,0x99D2,0x99B2,0x99B2,0x99D2,0x99B2,0x99D2,0x91B2,0x99D2,0x91D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x91D2,0x91F2,0x91F2,0x91F2,0x91F2,0x9212,0x9212,0x9212,0x9212,0x9232,0x8A12,0x8A32,0x8A12,0x8A53,0x8A53,0x8A53,0x8232,0x71D1,0x616F,0x592E,0x40AC,0x388B,0x386B,0x386B,0x388C,0x388C,0x30AC,0x30AC,0x30AB,0x30AC,0x30CC,0x38EC,0x38EC,0x30EC,0x310C,0x30EC,0x30EC,0x28EC,0x30EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x310D,0x28EC,0x290C,0x290C,0x28EC,0x290D,0x310D,0x290D,0x290D,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290D,0x292D,0x292D,0x292D,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x292D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292C,0x292D,0x290C,0x290C,0x292D,0x292D,0x290C,0x290C,0x290C,0x292C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292D,0x292C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x292C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x292D,0x290D,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x292D,0x292D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x292D,0x290C,0x292C,0x292D,0x292C,0x290C,0x290C,0x292C,0x292C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x312D,0x312D,0x310D,0x312D,0x312D,0x312D,0x312D,0x312E,0x312D,0x312D,0x310D,0x312E,0x310D,0x312D,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x414F,0x4150,0x4150,0x4970,0x4950,0x4970,0x4970,0x4970,0x5191,0x4970,0x4991,0x51B1,0x5191,0x5170,0x5191,0x5191,0x5991,0x6191,0x6191,0x6191,0x6992,0x7192,0x7992,0x8192,0x99F3,0xA214,0xB235,0xAA14,0xA9B3,0xA9B3,0xB1D4,0xB1F4,0xB1D3,0xB1D3,0xB1B3,0xB1D3,0xB1D3,0xB1D3,0xB1F4,0xB1D3,0xB1B3,0xB1D3,0xB1D3,0xA9B2,0xB1F3,0xAA13,0xA1F3,0xA213,0x9A33,0x8A33,0x8294,0x5A12,0x29AF,0x7D9D,0x7EFF,0x56DF,0x36DE,0x2F3F,0x1F7F,0x177F,0x0F9F,0x079F,0x07BF,0x0FBF,0x0F9F,0x17BF,0x1F9F,0x2F5F,0x471F,0x7EDF,0x4AD3,0x6A32,0x9253,0x9A13,0xA1F3,0xAA14,0xA9D3,0xA9D3,0xA9F4,0xA1F3,0xA214,0x9A34,0x81D2,0x6150,0x6170,0x5150,0x5170,0x5190,0x4990,0x4990,0x416F,0x414F,0x414F,0x4170,0x394F,0x394E,0x392E,0x392E,0x392E,0x392E,0x390E,0x392E,0x312D,0x312D,0x312D,0x312D,0x312D,0x312D,0x310D,0x290D,0x312D,0x310D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x290D,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x292D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x210C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC, + 0xA9D2,0xA1B2,0xA9F2,0xA1B1,0xA1D2,0xA1D2,0xA1D2,0xA1D1,0xA1D2,0xA1B1,0xA1B1,0xA1B1,0xA1B1,0x9991,0xA1B1,0xA191,0x9991,0x9991,0x9991,0x9991,0x9991,0x9991,0x99B1,0x99B1,0x99B1,0x91B1,0x99B1,0x91B1,0x91B1,0x91B1,0x99D1,0x99D2,0x91B1,0x99B1,0x91B1,0x99B1,0x99D2,0x91B1,0x99B1,0x99B1,0x91B1,0x91B1,0x91B1,0x99B1,0x91B1,0x99B2,0x99B2,0x99B2,0x99B2,0x99B1,0x99B1,0x99B2,0x99B2,0x99B2,0x99D2,0x99B2,0x99B2,0x99B2,0x99B1,0x99D2,0x99B2,0x99D2,0x99B2,0x99D2,0x91B1,0x99D2,0x91D2,0x91D1,0x99D2,0x91B1,0x99B1,0x99D2,0x91B1,0x91B1,0x99B1,0x99B2,0x99B2,0x99B2,0x99D2,0x99D2,0x91D2,0x91D2,0x99D2,0x91D2,0x9A12,0x91F2,0x9212,0x9212,0x9212,0x9A33,0x9A53,0x9A33,0x9212,0x8A12,0x8A12,0x8A12,0x9253,0x9253,0x8A32,0x8212,0x71D1,0x6990,0x612F,0x50EE,0x48AD,0x408C,0x386B,0x386B,0x306B,0x306B,0x306B,0x308B,0x30CC,0x30CC,0x30EC,0x30EC,0x310C,0x30EC,0x30EC,0x30EC,0x310C,0x28EC,0x310D,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x292D,0x292D,0x290C,0x292D,0x292D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x292C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290C,0x292D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x292D,0x312D,0x290D,0x290D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x312D,0x290D,0x290D,0x290D,0x290D,0x310D,0x312D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x312D,0x312D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x312D,0x312D,0x312D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x312D,0x312D,0x312D,0x310D,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392F,0x392E,0x392E,0x394F,0x414F,0x394F,0x414F,0x412F,0x392F,0x392F,0x414F,0x414F,0x4150,0x4150,0x4150,0x4970,0x4150,0x4970,0x4970,0x4990,0x4990,0x4970,0x4990,0x5191,0x5191,0x51B1,0x5191,0x5991,0x5991,0x5991,0x5991,0x6171,0x6191,0x7192,0x79B2,0x9214,0x91F3,0xA234,0xAA34,0xA9F4,0xA9D3,0xA9D3,0xB1D4,0xB1B3,0xB1F4,0xB1D3,0xA9B3,0xB1B3,0xB1D3,0xA9B3,0xB1F4,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xA9B2,0xA9D2,0xA9F3,0xA1F3,0xA213,0x9A33,0x9254,0x8294,0x5A32,0x216E,0x7D5C,0x86FF,0x56FF,0x36FE,0x271E,0x1F7F,0x179F,0x0F9F,0x0FBF,0x0F9F,0x0F9F,0x0F7F,0x177F,0x275F,0x471E,0x7F3F,0x5BD6,0x5A10,0x92B4,0x9A54,0xA213,0xA1F3,0xA1D3,0xA9D3,0xA9F3,0xAA14,0xA214,0x9A34,0x9234,0x610F,0x6150,0x5150,0x5170,0x5170,0x4970,0x4970,0x416F,0x414F,0x414F,0x414F,0x392F,0x392F,0x392E,0x392E,0x392E,0x392E,0x392E,0x312D,0x312D,0x312E,0x310D,0x310D,0x310D,0x312D,0x312D,0x290D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x28EC,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x210C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x20EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x20EC,0x290C,0x290C,0x290C,0x20EC,0x28EC,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EB,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC, + 0xA1D2,0xA1B1,0xA1D2,0xA1D1,0xA1D1,0xA1D1,0xA1D2,0xA1D2,0xA1D2,0xA1B2,0xA1B2,0xA1B2,0xA1B1,0xA1D1,0xA1B1,0xA1B1,0xA1B1,0x9991,0x9991,0x9991,0x9991,0x9991,0x99B1,0x9990,0x99B1,0x99B1,0x91B1,0x91B1,0x91B1,0x91B1,0x91B1,0x91B1,0x91B1,0x91B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x91B1,0x99B1,0x91B1,0x99B1,0x91B1,0x99B1,0x99B2,0x91B1,0x99B2,0x99B2,0x99B1,0x99B2,0x99B2,0x99D2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B1,0x99B2,0x99B2,0x99B2,0x99B2,0x99D2,0x91B2,0x91B2,0x91D1,0x99D2,0x99D2,0x91B1,0x99D2,0x99B1,0x99B1,0x99B1,0x99B1,0x91B1,0x99B1,0x99B2,0x99D2,0x99B2,0x99D2,0x99D2,0x99D2,0x99F2,0x91D2,0x91D2,0x99F2,0x91F2,0x99F2,0x91F2,0x91F2,0x91F2,0x9A33,0x91F2,0x91F2,0x91F2,0x9213,0x9212,0x9213,0x9233,0x8A13,0x8A12,0x8A13,0x81F2,0x8212,0x79D1,0x69B0,0x594F,0x510E,0x408B,0x304B,0x304A,0x306B,0x308B,0x308B,0x30AB,0x30CB,0x30CC,0x30EC,0x30EC,0x30ED,0x30EC,0x30EC,0x28EC,0x28EC,0x28EC,0x28EC,0x30EC,0x28EC,0x290C,0x28EC,0x28EC,0x290C,0x292D,0x290C,0x28EC,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x292D,0x292D,0x292D,0x292D,0x312D,0x292D,0x292D,0x290D,0x290D,0x28EC,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x292D,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x28EC,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x310D,0x312D,0x290D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x310D,0x290D,0x312D,0x290D,0x290D,0x290D,0x310D,0x290D,0x310D,0x312D,0x310D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x312D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x312D,0x310D,0x312D,0x310D,0x310D,0x312D,0x312D,0x310D,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x392F,0x392E,0x394F,0x392E,0x392E,0x392E,0x394F,0x394F,0x414F,0x414F,0x412F,0x412F,0x412F,0x414F,0x4170,0x414F,0x414F,0x4170,0x4170,0x4170,0x4970,0x4970,0x4970,0x4990,0x4991,0x4970,0x5191,0x5191,0x5191,0x5191,0x5991,0x5991,0x5991,0x6191,0x6171,0x6991,0x7191,0x81B2,0x91F3,0x99F3,0xB255,0xB234,0xA1B3,0xA9B3,0xA9D3,0xB1F4,0xB1D4,0xB1D3,0xB1D3,0xB1D3,0xB1B3,0xB1D3,0xB1D3,0xB1F3,0xB1D3,0xB1F3,0xB1D3,0xA9D2,0xB1F3,0xA9F3,0xA9F3,0xA1F3,0x9A13,0x9233,0x8274,0x59F1,0x216E,0x6CFA,0x871F,0x56DF,0x36FE,0x275F,0x1F7F,0x179F,0x0FBF,0x0F9F,0x0FBF,0x0F9F,0x1F9F,0x2F7F,0x3F1E,0x6F1F,0x74FA,0x49EF,0x8AB4,0x9233,0xA213,0xA213,0xAA14,0xA9D3,0xAA14,0xA9F3,0xA213,0xA214,0x9A34,0x6930,0x6150,0x5970,0x5170,0x5170,0x4970,0x4970,0x416F,0x416F,0x414F,0x394F,0x394F,0x394F,0x394F,0x392E,0x392E,0x392E,0x392E,0x310D,0x312E,0x312E,0x310D,0x312D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x292D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x210C,0x290D,0x290C,0x210C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC, + 0xA1B1,0xA1B1,0xA191,0xA1B1,0xA1D1,0xA1D1,0xA1D1,0xA1D1,0xA1D1,0xA1D2,0xA1D1,0xA1D1,0xA1D2,0xA1D1,0xA1D2,0xA1B1,0xA1B1,0xA1B1,0xA1B1,0x99B1,0x99B1,0x99B1,0x9991,0x99B1,0x9991,0x9991,0x99B1,0x91B1,0x91B1,0x9190,0x91B1,0x99B1,0x99B1,0x99B1,0x9191,0x9191,0x99B1,0x99B1,0x9191,0x99B1,0x9191,0x99B1,0x99B1,0x99B1,0x99B2,0x99B2,0x99B2,0x99B2,0x99B1,0x99B1,0x99D2,0x99B1,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99D2,0x99B2,0x99B1,0x99B2,0x99B2,0x99B2,0x99B2,0x91B1,0x99D2,0x99D1,0x99D2,0x99D2,0x99B1,0x99D1,0x91B1,0x99D2,0x91B1,0x99B1,0x99B2,0x99B2,0x99B2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x91B1,0x91B2,0x91D2,0x91B1,0x91B1,0x99F2,0x91D2,0x99F2,0x91F2,0x99F2,0x99F2,0x91D2,0x91F2,0x91F2,0x91F3,0x9A33,0x9A54,0x9233,0x9233,0x9233,0x9253,0x9253,0x8A53,0x8A53,0x8A53,0x7A12,0x71D1,0x510E,0x48CC,0x40AC,0x386B,0x306B,0x286B,0x308B,0x308B,0x30AB,0x30CC,0x30CC,0x30EC,0x30EC,0x30EC,0x310D,0x30EC,0x30EC,0x28EC,0x30EC,0x30EC,0x28EC,0x310C,0x310D,0x290C,0x290D,0x28EC,0x28EC,0x290D,0x290D,0x290C,0x290D,0x290D,0x292D,0x292D,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x312D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x292D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x28EC,0x290C,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x292D,0x290D,0x292D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x292D,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x30ED,0x310D,0x310D,0x310D,0x310D,0x290D,0x290C,0x312D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x312D,0x310D,0x310D,0x312D,0x312D,0x312D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x310D,0x310D,0x312D,0x312D,0x312D,0x312D,0x310D,0x310D,0x312D,0x312E,0x312E,0x312E,0x312E,0x392E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x394F,0x394F,0x394F,0x392F,0x392F,0x394F,0x412F,0x414F,0x414F,0x414F,0x414F,0x414F,0x4170,0x416F,0x4170,0x4970,0x4170,0x4990,0x4970,0x4970,0x4970,0x51B1,0x4970,0x4971,0x5171,0x5171,0x5191,0x5191,0x59B1,0x5991,0x6191,0x6191,0x6971,0x7171,0x79B2,0x89D3,0x99F4,0xAA35,0xAA35,0xA9F4,0xA9B3,0xA9B3,0xA9B3,0xB1F4,0xB1D4,0xB1D3,0xB1F4,0xA9B3,0xB1B3,0xB1B3,0xA9B3,0xB1F3,0xB1F3,0xB1D3,0xA9D3,0xA9D3,0xB1F3,0xA9F3,0xA213,0x9A33,0x9254,0x8274,0x5A11,0x214D,0x751B,0x86FF,0x56DF,0x371E,0x273F,0x177F,0x0F7F,0x0F9F,0x0F9F,0x179F,0x179F,0x277F,0x371E,0x5EDE,0x7DDC,0x3A2F,0x7AB3,0x9273,0x9A33,0xA213,0xA1F3,0xA9F3,0xAA14,0xA9F3,0xA1F3,0xA214,0x9A34,0x89F3,0x590F,0x5950,0x5970,0x5170,0x4950,0x4150,0x414F,0x416F,0x414F,0x414F,0x394F,0x392F,0x394F,0x392E,0x392E,0x312E,0x312E,0x392E,0x312E,0x310D,0x310E,0x310E,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x292D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x292D,0x210D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290C,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x292C,0x292C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x210C,0x20EC,0x210C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x20EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EB,0x28EC,0x28EC, + 0xA1B1,0xA1B1,0xA1B1,0xA1B1,0xA1B1,0xA1B1,0xA1D1,0xA1D2,0xA1B1,0xA1D1,0xA1D1,0xA1B1,0xA1D1,0xA1D1,0xA1D2,0xA1B1,0xA1D2,0xA1D2,0x99B1,0xA1D1,0x99B1,0x99B1,0x99B1,0x99B1,0x9991,0x99B1,0x9991,0x9991,0x99B1,0x91B1,0x91B1,0x91B1,0x9191,0x99B1,0x99B1,0x99B1,0x9991,0x99B1,0x9991,0x9991,0x9991,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99B2,0x99B2,0x99B2,0x99B1,0x99B1,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99D2,0x99B1,0x99B1,0x99D2,0x99D2,0x99D2,0x99D2,0x99D1,0x99D1,0x99D1,0x99D1,0x99B1,0x99D2,0x9191,0x99D2,0x99B1,0x99D2,0x99B2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99B2,0x99B2,0x99D2,0x91B2,0x91B1,0x91B2,0x9191,0x91B2,0x91D2,0x91B2,0x99D2,0x99F3,0x91D2,0x91B2,0x91D2,0x99F3,0x91F2,0x91D2,0x9213,0x91F2,0x9212,0x9212,0x9212,0x89F2,0x9233,0x9233,0x8A53,0x8A33,0x8233,0x8253,0x8253,0x7212,0x69D0,0x512E,0x40CC,0x306B,0x304A,0x306B,0x306B,0x308B,0x30AC,0x38CC,0x38CC,0x30CC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x30EC,0x310D,0x310D,0x30EC,0x28EC,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x292D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290C,0x290D,0x292D,0x290C,0x290D,0x28EC,0x290D,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x28EC,0x290D,0x290C,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x310D,0x310D,0x30ED,0x30ED,0x30ED,0x28ED,0x310D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x290D,0x310D,0x312D,0x312D,0x290D,0x310D,0x310D,0x310D,0x290D,0x310D,0x310D,0x312D,0x290D,0x290D,0x312D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312D,0x312D,0x312E,0x312D,0x312E,0x312E,0x310D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x392E,0x312E,0x392E,0x392E,0x392E,0x392E,0x310E,0x392E,0x394F,0x392F,0x394F,0x392F,0x392F,0x414F,0x414F,0x414F,0x414F,0x416F,0x414F,0x416F,0x416F,0x416F,0x416F,0x416F,0x4970,0x4970,0x4970,0x4970,0x4970,0x4971,0x5191,0x4970,0x5191,0x5191,0x5991,0x5971,0x5991,0x6191,0x6992,0x6991,0x7992,0x81B2,0x91F3,0xA234,0xAA35,0xAA35,0xA1D4,0xA1B3,0xA9D3,0xA9F4,0xA9D4,0xB1F4,0xA9D3,0xB1D3,0xB1D3,0xA9B3,0xA9B3,0xB1D3,0xB1F3,0xA9B3,0xB1D3,0xA9D3,0xB214,0xA9F3,0xA213,0x9A13,0x9233,0x8A74,0x5A11,0x298E,0x7D7C,0x7EFF,0x4EDE,0x2F1E,0x275F,0x179F,0x0F9F,0x17BF,0x179F,0x177E,0x277E,0x3F3E,0x56DE,0x86BF,0x42B1,0x7292,0x9273,0x9A33,0xA213,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xAA13,0xAA14,0xA213,0x9A34,0x6930,0x6150,0x5950,0x5170,0x4950,0x4970,0x4990,0x4170,0x414F,0x414F,0x394F,0x394F,0x394F,0x394F,0x394E,0x314E,0x312E,0x312E,0x312E,0x310E,0x310E,0x310E,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290D,0x290C,0x292D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x310D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x292D,0x290C,0x292C,0x292D,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x292D,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EB,0x28EB,0x28EC,0x28EC, + 0xA1B1,0xA1B1,0xA1B1,0xA1B1,0xA1B1,0xA1B1,0xA1D1,0xA1B1,0xA1F2,0xA1F2,0xA1B1,0xA1D1,0x99B1,0x99B1,0xA1B1,0xA1D1,0xA1D2,0xA1D1,0xA1D2,0xA1D2,0xA1D2,0x99B1,0x99B1,0x99B1,0xA1D2,0x99B1,0x99B2,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x99B1,0x9991,0x99B1,0x99B1,0x99B2,0x9991,0x99B1,0x9991,0x9991,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x9991,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x91B1,0x99D2,0x99D2,0x99B1,0x99D2,0x99B1,0x99D2,0x99B1,0x99D2,0x91B1,0x99B1,0x99D2,0x99B1,0x99B2,0x99B2,0x99B2,0x91B1,0x91B1,0x91B1,0x99D2,0x9191,0x99D2,0x99D2,0x91B1,0x99D2,0x99D2,0x91B2,0x91B2,0x91B2,0x9191,0x91D2,0x99D2,0x91B2,0x91B2,0x91D2,0x91B2,0x91D2,0x91F2,0x91D2,0x91F2,0x91D2,0x9213,0x91F2,0x9212,0x9213,0x9233,0x8A12,0x8A12,0x8A33,0x8A53,0x8A74,0x8A94,0x8A53,0x8253,0x79F2,0x6190,0x50ED,0x408C,0x386B,0x304B,0x306B,0x388B,0x308B,0x30AC,0x30AC,0x30CC,0x30CC,0x30CC,0x30CC,0x30CC,0x30EC,0x30EC,0x30EC,0x30EC,0x310C,0x290C,0x28EC,0x28EC,0x290D,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x28EC,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x292D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x292D,0x290C,0x290C,0x290D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x310D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x312D,0x312D,0x312E,0x310D,0x312D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x314E,0x312E,0x312E,0x312E,0x312E,0x310E,0x312E,0x312E,0x312E,0x392E,0x392E,0x394E,0x312E,0x392E,0x392E,0x392E,0x392F,0x392F,0x414F,0x414F,0x394F,0x414F,0x394F,0x394F,0x416F,0x416F,0x416F,0x416F,0x4170,0x416F,0x4970,0x4970,0x4970,0x4970,0x4991,0x4971,0x5191,0x5191,0x5191,0x5191,0x5191,0x5971,0x5971,0x5971,0x6192,0x6991,0x79D2,0x79B2,0x89F3,0x91F3,0x9A14,0xA235,0xA214,0xA1D3,0xA9D4,0xA9F4,0xA9F4,0xB1F4,0xA9D3,0xA9D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xA9B3,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xA9F3,0xA213,0x9A33,0x9233,0x8274,0x59F1,0x298E,0x861E,0x771F,0x46BE,0x2F3F,0x1F5F,0x177F,0x179F,0x179F,0x1F9F,0x277F,0x2F1D,0x4EBD,0x7EDF,0x4332,0x5A51,0x8A73,0x9A74,0xA213,0xAA14,0xA9F4,0xA9D3,0xA9D3,0xA1D3,0xAA14,0xA234,0xA254,0x7991,0x590F,0x5950,0x492F,0x4950,0x4970,0x4170,0x4170,0x4170,0x414F,0x394F,0x394F,0x394F,0x394F,0x394F,0x314E,0x314E,0x312E,0x312E,0x312E,0x310E,0x310E,0x310D,0x310E,0x292D,0x292D,0x312D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290C,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x210C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x28EC,0x20EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x20EC,0x28EC,0x290C,0x28EC,0x28EC,0x20EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x290C,0x28EC, + 0xA1B1,0xA1B1,0xA1B1,0xA1B1,0xA1D1,0xA1B1,0xA1B1,0xA1B1,0xA1D1,0xA1D1,0xA1D1,0x99B1,0x99D1,0x99B1,0x99B1,0xA1D2,0x99B1,0xA1D2,0xA1D2,0xA1D2,0xA1D2,0xA1D2,0x99B2,0xA1B2,0x99B1,0x99B1,0xA1D2,0x99B2,0x99B1,0x99B1,0x99B1,0x99B1,0x9991,0x9991,0x9991,0x9991,0x99B1,0x99B1,0x9991,0x9991,0x9991,0x99B1,0x99B2,0x9991,0x9991,0x9191,0x99B2,0x99B2,0x9992,0x99B2,0x99B2,0x99B2,0x9191,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x99B2,0x91B2,0x99D2,0x99D2,0x99B2,0x99B2,0x99B2,0x99D2,0x91B1,0x99D2,0x99B2,0x99D2,0x91B1,0x99B1,0x99B2,0x99B2,0x99B2,0x99B2,0x91B2,0x99B2,0x91B2,0x99D2,0x91B1,0x99D2,0x99D2,0x99D2,0x91B2,0x99D2,0x99D2,0x91B2,0x9191,0x91B2,0x99D2,0x99D2,0x91B2,0x91B2,0x91B2,0x91D2,0x91B2,0x91D2,0x91D2,0x91D2,0x91D2,0x91D2,0x91D2,0x91F2,0x91D2,0x91F2,0x9213,0x89F2,0x9212,0x89F2,0x8A12,0x89F2,0x8A33,0x8A13,0x8A53,0x9274,0x9294,0x8A94,0x8253,0x71D1,0x616F,0x48CD,0x388B,0x304A,0x304A,0x306B,0x388B,0x308B,0x30AB,0x30AC,0x30AC,0x30AC,0x30CC,0x30CC,0x30EC,0x28EC,0x28EC,0x28EC,0x310D,0x28ED,0x30EC,0x310C,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x28EC,0x290D,0x290D,0x28EC,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x310D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x310D,0x310D,0x310D,0x310D,0x310D,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x314E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392E,0x392F,0x392F,0x392F,0x394F,0x394F,0x394F,0x394F,0x394F,0x416F,0x414F,0x416F,0x4170,0x4970,0x4170,0x4970,0x4970,0x4970,0x4971,0x4971,0x4991,0x5191,0x5171,0x5191,0x5171,0x5171,0x5992,0x5971,0x6171,0x6192,0x69B2,0x71B2,0x7171,0x81B3,0x91D3,0xA235,0xA215,0xAA15,0xA1D4,0xA1B3,0xA9D4,0xB1F4,0xA9D4,0xB1F4,0xA9D3,0xB1F4,0xA9D3,0xB1D3,0xA9D3,0xB1D3,0xA9D3,0xB1F3,0xA9D3,0xA9F3,0xA1F3,0x9A13,0x8A13,0x8233,0x51D0,0x3230,0x96DF,0x66DF,0x46FE,0x2F3F,0x1F7F,0x177E,0x179E,0x1F9E,0x277E,0x375E,0x46DD,0x6EDE,0x5C76,0x4A30,0x8293,0x9253,0x9A13,0xA1F3,0xA9F4,0xB1F4,0xA9D3,0xA9F4,0xA9F4,0xA214,0xA234,0x9213,0x6110,0x5950,0x5130,0x4950,0x4970,0x4150,0x4170,0x414F,0x414F,0x394F,0x394F,0x394F,0x394F,0x314F,0x314F,0x312E,0x312E,0x312E,0x312E,0x310E,0x310E,0x310E,0x312E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x292D,0x290C,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x290C,0x290C,0x210C,0x292D,0x210C,0x290C,0x290D,0x290C,0x290D,0x28EC,0x290C,0x290C,0x28EC,0x28EC,0x290C,0x290D,0x28EC,0x290C,0x290C,0x290C,0x290C,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x20EC,0x290C,0x20EC,0x28EC,0x20EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x20EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x20EC,0x290C,0x28EC,0x290C,0x290C,0x290C,0x28EC,0x28EC,0x28EC,0x20EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x20EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x20EC,0x20EC,0x290C,0x28EC, + 0xA1B1,0xA1B1,0xA1B1,0x9991,0x99B1,0x9991,0x9991,0xA1D2,0x99B1,0x99B1,0x99B1,0x99B1,0x99D1,0x99B1,0x99B1,0x99B1,0x99B1,0x99D2,0x9991,0x9991,0x99B1,0x99B1,0x99B2,0x99B2,0x9991,0x99B1,0x9991,0x99B1,0x99B1,0x99B1,0x99B2,0x99B2,0x9191,0x9191,0x9191,0x9991,0x9191,0x9191,0x9191,0x9991,0x9191,0x99B1,0x9171,0x9991,0x9191,0x99B2,0x99B1,0x99B2,0x9191,0x9191,0x9191,0x9191,0x99B2,0x99B2,0x9192,0x9192,0x9191,0x99B2,0x9992,0x99B2,0x99B2,0x99B2,0x91B2,0x99B2,0x9191,0x99D2,0x91B2,0x99B2,0x91B1,0x91B1,0x99B2,0x99B2,0x91B1,0x99D2,0x91B2,0x99D2,0x91B2,0x99D2,0x91B2,0x99D2,0x9191,0x91B2,0x99B2,0x91B2,0x91B2,0x91B1,0x91B2,0x91B2,0x91B1,0x91B2,0x91B2,0x99D2,0x99D2,0x91D2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x91B2,0x91B2,0x99F2,0x91B2,0x99D2,0x91B1,0x91B1,0x91B2,0x91D2,0x91D2,0x91D2,0x99F3,0x91D2,0x9A13,0x91D2,0x89D2,0x91F2,0x89F2,0x9213,0x89F2,0x89F2,0x89F2,0x8A12,0x8A13,0x8A13,0x8A33,0x9253,0x9294,0x9294,0x9294,0x8253,0x71D1,0x594F,0x48CC,0x408B,0x386B,0x386B,0x306B,0x308B,0x38AC,0x30AC,0x30AC,0x30CC,0x30CC,0x30CC,0x30EC,0x30EC,0x30EC,0x30EC,0x28EC,0x310C,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x28ED,0x28ED,0x28ED,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x310E,0x290D,0x310E,0x290D,0x310E,0x310E,0x310E,0x312E,0x290E,0x312E,0x292E,0x312E,0x310E,0x310E,0x310E,0x310E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x312E,0x392E,0x392E,0x392E,0x392E,0x392F,0x392F,0x392E,0x392E,0x392F,0x394F,0x394F,0x394F,0x394F,0x394F,0x394F,0x414F,0x414F,0x4150,0x4150,0x4170,0x4971,0x4971,0x4971,0x4991,0x4971,0x5191,0x5191,0x5191,0x5192,0x5172,0x5992,0x5992,0x5972,0x5971,0x6192,0x6992,0x6972,0x7172,0x8192,0x91D4,0xA235,0xA235,0xA214,0xA1D4,0xA9D4,0xA9D4,0xA9F4,0xB1F4,0xA9B3,0xB1D3,0xB1F4,0xB1F4,0xA9D3,0xA9B3,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xA213,0xA234,0x9233,0x7A53,0x418F,0x3AB2,0x973F,0x66FF,0x3F1E,0x2F5E,0x1F7E,0x1F7E,0x1F7E,0x1F5D,0x375E,0x473E,0x66FE,0x75DB,0x4250,0x7272,0x9273,0x9A33,0xA1F3,0xA9F3,0xA9D3,0xA9F4,0xA9D3,0xA9F4,0xA1F3,0xA214,0x9A34,0x7150,0x510F,0x5130,0x4950,0x4970,0x4170,0x4170,0x4170,0x4150,0x394F,0x394F,0x392F,0x394F,0x394F,0x314F,0x312E,0x314F,0x312E,0x310E,0x310E,0x310E,0x310E,0x310E,0x290E,0x290E,0x312E,0x290D,0x290D,0x290D,0x290D,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x210D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x290C,0x290C,0x290C,0x290C,0x290D,0x290D,0x210C,0x210C,0x20EC,0x290D,0x210C,0x28EC,0x290D,0x290D,0x290C,0x290D,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x290D,0x290D,0x290D,0x210C,0x20EC,0x28EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x20EC,0x290C,0x20EC,0x20EC,0x20EC,0x20EC,0x20EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x290C,0x28EC,0x28EC,0x28ED,0x20EC,0x20EC,0x28EC,0x28EC,0x20EC,0x20EC,0x20EC,0x20EC,0x20EC,0x20EC,0x20EC,0x20EC,0x290C,0x290C,0x28EC,0x28EC,0x20EC,0x20EC,0x20EC,0x28EC,0x28EC,0x28EC,0x28EC,0x20EC,0x290C,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x20EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x28EC,0x20EC,0x20EC,0x20EC,0x28EC, + 0x9991,0x9991,0x9991,0x9991,0x9991,0x99B1,0x9991,0x9991,0x99B1,0x9991,0x99B1,0x99D2,0x99B1,0x9191,0x99B1,0x9191,0x99B1,0x9191,0x91B1,0x99B2,0x9191,0x99B1,0x9992,0x9191,0x99B2,0x99B2,0x99B1,0x99B1,0x9191,0x91B1,0x99B2,0x91B2,0x9191,0x91B1,0x9192,0x9192,0x9191,0x9191,0x91B1,0x9191,0x91B1,0x9191,0x91B2,0x91B2,0x9191,0x91B1,0x91B2,0x9191,0x99B2,0x99B2,0x9191,0x9191,0x99B2,0x91B2,0x99B2,0x91B2,0x91B2,0x91B2,0x99B2,0x99B2,0x99B2,0x91B2,0x99B2,0x99D2,0x91B2,0x91B2,0x91B2,0x91B2,0x91B2,0x99D2,0x91B2,0x91B2,0x91D2,0x91B2,0x91B2,0x99D2,0x91D2,0x91D2,0x99D2,0x91B2,0x91B2,0x91B2,0x91B2,0x91B2,0x91B2,0x9191,0x99D2,0x91B2,0x99D2,0x99D2,0x99D2,0x99D2,0x99D2,0x91D2,0x99F2,0x99D2,0x99D2,0x91D2,0x99D2,0x99F3,0x91D2,0x91D2,0x91D2,0x91B2,0x91D2,0x99D2,0x91B2,0x91D2,0x99D2,0x91D2,0x99D2,0x99F2,0x99F2,0x91F2,0x91F2,0x91F2,0x91F2,0x91D2,0x91F2,0x91F2,0x91F2,0x89F2,0x9213,0x89F2,0x89F2,0x89D2,0x8A12,0x8A12,0x8A53,0x8A53,0x9294,0x92B4,0x8A94,0x8273,0x71F1,0x6190,0x592E,0x40AC,0x408C,0x386B,0x388B,0x308B,0x308B,0x308C,0x30AC,0x30CC,0x30CC,0x30CC,0x30EC,0x30EC,0x30ED,0x30ED,0x310D,0x28EC,0x28ED,0x310D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x28ED,0x290D,0x28ED,0x28ED,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x28ED,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290E,0x290E,0x290D,0x290D,0x290D,0x290E,0x290E,0x290D,0x290E,0x290E,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x310E,0x290E,0x290E,0x310E,0x310E,0x290E,0x290E,0x310E,0x310E,0x292E,0x290E,0x312E,0x310E,0x310E,0x310E,0x310E,0x312E,0x310E,0x310E,0x312E,0x312E,0x312E,0x310E,0x312E,0x392F,0x312E,0x312F,0x392F,0x312F,0x312F,0x392F,0x392F,0x392F,0x394F,0x392F,0x394F,0x394F,0x392F,0x414F,0x4150,0x4150,0x4150,0x4170,0x4170,0x4971,0x4971,0x4991,0x4971,0x4991,0x5191,0x5192,0x5192,0x5192,0x5192,0x5192,0x5972,0x5972,0x5992,0x6172,0x6992,0x6992,0x7172,0x7152,0x89B3,0x91D3,0xA255,0x9A14,0xA215,0xA9F5,0xA1B3,0xA9D4,0xB1D4,0xB1F4,0xB1F4,0xB1F4,0xA9D3,0xB1F3,0xA9D3,0xA9D3,0xA9D3,0xAA13,0xA9F3,0xA213,0x9A13,0x8A33,0x7233,0x314E,0x5C16,0x977F,0x4EBE,0x371E,0x2F5E,0x277E,0x277E,0x277E,0x375E,0x473D,0x4EBC,0x765C,0x42D1,0x6272,0x8A94,0x9A33,0xA1F3,0xA9D3,0xA9F4,0xA9F4,0xA9F4,0xA9F4,0xAA14,0xA214,0x9A14,0x81D2,0x590F,0x5150,0x4950,0x4950,0x4150,0x4150,0x4170,0x394F,0x394F,0x394F,0x392F,0x394F,0x394F,0x312F,0x314F,0x312E,0x312E,0x310E,0x312E,0x312E,0x312E,0x312E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x28ED,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290E,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290C,0x290C,0x210C,0x20EC,0x290D,0x210D,0x210D,0x290D,0x210D,0x210D,0x290D,0x210D,0x290D,0x290D,0x290D,0x20ED,0x20ED,0x290D,0x290D,0x28EC,0x28ED,0x28ED,0x28ED,0x290D,0x290D,0x290D,0x20ED,0x210D,0x210D,0x20ED,0x28ED,0x28EC,0x290D,0x20EC,0x20EC,0x290D,0x20EC,0x20EC,0x210C,0x20EC,0x20ED,0x20EC,0x20EC,0x20EC,0x20EC,0x20ED,0x20ED,0x20ED,0x20ED,0x20ED,0x20ED,0x20EC,0x20ED,0x20ED,0x20ED,0x20EC,0x20EC,0x20ED,0x20ED,0x20EC,0x20EC,0x20EC,0x20EC,0x20EC,0x20EC,0x28EC,0x20EC,0x210C,0x210C,0x20EC,0x28EC,0x28EC,0x20EC,0x28EC,0x20EC,0x20EC,0x20EC,0x28EC,0x28EC,0x28EC,0x20EC,0x28ED,0x28ED,0x20EC,0x28EC,0x20CC,0x20EC,0x28EC,0x20EC,0x28EC,0x28EC,0x20EC,0x28EC,0x20EC,0x290C,0x20EC,0x20EC,0x20EC,0x20EC, + 0x9170,0x9170,0x9170,0x9150,0x9150,0x9170,0x9191,0x9171,0x9191,0x9191,0x9170,0x9171,0x9191,0x9191,0x9191,0x9191,0x8970,0x8970,0x8971,0x8971,0x9191,0x9191,0x9192,0x9191,0x9191,0x9191,0x9191,0x9191,0x9191,0x9191,0x9192,0x9192,0x9191,0x9191,0x91B2,0x9191,0x91B2,0x91B1,0x9191,0x9191,0x9191,0x9191,0x9192,0x9191,0x91B2,0x91B2,0x91B2,0x91B2,0x91B2,0x9191,0x91B2,0x91B2,0x91B2,0x91B2,0x91B2,0x9192,0x99D2,0x91B2,0x91B2,0x99B2,0x99B2,0x91B2,0x91B2,0x91B2,0x91B2,0x91B2,0x91B2,0x91B2,0x91D2,0x91B2,0x91B2,0x99D2,0x91B2,0x91B2,0x91D2,0x91B2,0x91B2,0x91B2,0x91B2,0x91B2,0x91B2,0x91B2,0x99D2,0x91B2,0x99F3,0x99D2,0x91D2,0x99D3,0x9191,0x91B2,0x8991,0x9191,0x91B2,0x91B2,0x91D2,0x91B2,0x8971,0x8991,0x91D2,0x91B2,0x91D2,0x99F3,0x91B2,0x99D2,0x91B2,0x91B2,0x99F3,0x91D2,0x99F2,0x99F3,0x9191,0x91B2,0x91D2,0x91F2,0x91D2,0x91D2,0x91F3,0x91D2,0x9A13,0x91F2,0x91F3,0x9213,0x89F2,0x89D2,0x91F2,0x9212,0x89F2,0x89D2,0x89F2,0x8A12,0x8A13,0x89F2,0x8A13,0x8A33,0x9274,0x9274,0x9294,0x8A74,0x8213,0x71F2,0x614F,0x510E,0x48CD,0x40AD,0x306B,0x306B,0x308C,0x308C,0x30AC,0x30AC,0x30AC,0x30CC,0x30CC,0x30EC,0x30ED,0x30ED,0x310D,0x310D,0x28EC,0x28ED,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x292D,0x292D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x28ED,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290E,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x28ED,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x28ED,0x28ED,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x292D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x28ED,0x290D,0x28ED,0x28ED,0x290D,0x290E,0x290E,0x290E,0x28ED,0x28ED,0x290D,0x28ED,0x28ED,0x28ED,0x28EE,0x28EE,0x290E,0x28ED,0x28ED,0x28ED,0x28EE,0x290E,0x290E,0x290E,0x28ED,0x28ED,0x28EE,0x28EE,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x28EE,0x28EE,0x28EE,0x28EE,0x290E,0x290E,0x28ED,0x290E,0x28EE,0x28EE,0x28ED,0x290E,0x290E,0x290E,0x290E,0x290E,0x28EE,0x28EE,0x28ED,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x292E,0x290E,0x290E,0x290E,0x312E,0x28ED,0x290D,0x290D,0x290E,0x290E,0x290E,0x310E,0x28EE,0x290E,0x290E,0x310E,0x290E,0x28EE,0x290E,0x290E,0x290E,0x290E,0x292E,0x312E,0x312E,0x312E,0x310E,0x310E,0x310E,0x310E,0x310E,0x310F,0x312F,0x312F,0x312F,0x310F,0x310F,0x312F,0x312F,0x314F,0x312F,0x312F,0x312F,0x312F,0x392F,0x392F,0x3950,0x3930,0x3930,0x4150,0x3930,0x4150,0x4150,0x4150,0x4150,0x3930,0x4150,0x4171,0x4171,0x4991,0x4992,0x4972,0x4971,0x4972,0x4971,0x5172,0x5172,0x5172,0x5192,0x5992,0x5992,0x6192,0x6192,0x6992,0x6992,0x6952,0x7172,0x81B3,0x9215,0x9A15,0xA1F4,0xAA15,0xA1D4,0xA9D4,0xA9D4,0xA9D4,0xA9D4,0xA9D3,0xB1F4,0xB1F4,0xA9F3,0xA9D3,0xA9D2,0xA9F3,0xAA13,0xA213,0x9A34,0x8A54,0x6212,0x296E,0x6D1B,0x7F5F,0x4F1F,0x3F3E,0x2F5E,0x273D,0x273D,0x375D,0x3F3D,0x4EDC,0x6E9D,0x4BB4,0x5271,0x7A73,0x9253,0xA234,0xA9D3,0xA9F4,0xA9D3,0xA9D4,0xA9D4,0xA1D3,0xAA14,0x9A14,0x9214,0x590F,0x5130,0x5150,0x4950,0x4150,0x4150,0x4150,0x3950,0x3950,0x3950,0x394F,0x3950,0x312F,0x312F,0x312F,0x312F,0x312F,0x312F,0x312F,0x310E,0x312E,0x312E,0x292E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x292E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x28ED,0x290D,0x290E,0x290D,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x28ED,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290D,0x290E,0x290E,0x290E,0x28ED,0x290E,0x290E,0x290E,0x290E,0x290E,0x210D,0x290E,0x210D,0x210D,0x210D,0x210D,0x210D,0x210D,0x210D,0x210D,0x210D,0x290E,0x290D,0x290D,0x290D,0x20ED,0x28ED,0x290D,0x290D,0x290E,0x290E,0x290D,0x210D,0x210D,0x290E,0x210D,0x290D,0x290E,0x290E,0x210D,0x210D,0x210D,0x290E,0x290D,0x210D,0x28ED,0x290E,0x290E,0x210D,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210D,0x210D,0x290E,0x290E,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290D,0x290D,0x290D,0x210D,0x210D,0x210D,0x20ED,0x290E,0x290E,0x210E,0x210E,0x20ED,0x210D,0x210D,0x210D,0x20ED,0x210D,0x210D,0x20ED,0x210D,0x210D,0x210D,0x210D,0x210D,0x210D,0x210D,0x210D,0x210D,0x20ED,0x20ED,0x290D,0x20ED,0x290D,0x290D,0x28ED,0x28ED,0x28ED,0x28ED,0x28ED,0x20ED,0x20ED,0x290D,0x210D,0x210D,0x210D,0x20ED,0x20ED,0x210D,0x20ED,0x210D,0x210D,0x20ED,0x210D,0x20ED,0x20ED,0x210D,0x210D,0x290D,0x210D,0x210D,0x290D,0x20ED,0x20ED,0x20ED,0x20ED,0x20ED,0x20ED,0x210D,0x20ED,0x20ED,0x210D,0x210D,0x20ED,0x20ED,0x20ED,0x20ED,0x20ED,0x20ED,0x210D,0x20EC,0x20EC,0x20EC,0x20ED,0x20EC,0x20EC,0x20EC,0x20EC,0x20EC,0x20EC,0x210D,0x210D,0x20ED,0x20ED,0x20EC,0x20ED,0x28ED,0x28ED,0x28ED,0x290D,0x20ED,0x20ED,0x20CC,0x28ED,0x290D,0x290D,0x290D,0x290D,0x20EC,0x28EC,0x20EC,0x20EC,0x20EC,0x210C,0x20EC,0x210C, + 0x8971,0x8970,0x8971,0x8951,0x8950,0x8971,0x8950,0x8971,0x8991,0x8971,0x8991,0x8991,0x8971,0x8971,0x8971,0x8971,0x8971,0x8991,0x8971,0x8992,0x8971,0x8991,0x8992,0x9192,0x8992,0x89B2,0x8992,0x8992,0x8992,0x91B2,0x8992,0x8992,0x8992,0x91B2,0x8992,0x91B2,0x91B2,0x8991,0x89B2,0x91B2,0x8992,0x91B2,0x9192,0x91B2,0x8992,0x89B2,0x91B2,0x91B2,0x89B2,0x91B2,0x91B2,0x91B2,0x91B2,0x91B2,0x91B2,0x91D3,0x91B2,0x91B2,0x91B2,0x91B2,0x91B2,0x91D2,0x91B2,0x91D2,0x91B2,0x91B2,0x91D2,0x91D2,0x91B2,0x91D2,0x91D2,0x91B2,0x91D2,0x91D3,0x91B2,0x91D3,0x91D2,0x91D2,0x91B2,0x91D3,0x91B2,0x91D3,0x91B2,0x91D3,0x91D3,0x91D3,0x91D3,0x91D3,0x91D2,0x91D2,0x89B2,0x91B2,0x8992,0x91D2,0x91B2,0x89B2,0x89B2,0x91D2,0x89B2,0x91F3,0x89B2,0x91D2,0x91F3,0x91D2,0x91D2,0x99F3,0x91D3,0x91D3,0x91F3,0x91D2,0x91B2,0x91D3,0x91D2,0x91F3,0x91D2,0x91D2,0x91D3,0x91F3,0x91F3,0x91F3,0x91F3,0x89F3,0x9213,0x9213,0x89F3,0x89F3,0x89F3,0x89F3,0x89F3,0x89F3,0x89F3,0x89F3,0x89F3,0x8A13,0x8A13,0x81F3,0x8A33,0x8A33,0x8A54,0x8A54,0x8A54,0x8A95,0x8A95,0x8274,0x69D1,0x5990,0x514F,0x490E,0x40ED,0x308C,0x30AC,0x30AC,0x30AC,0x30CC,0x28CC,0x28CD,0x28ED,0x28ED,0x28ED,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x290D,0x210D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x28ED,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x210D,0x290E,0x290E,0x290E,0x290E,0x290E,0x210D,0x290E,0x290E,0x210D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290D,0x28ED,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290D,0x290E,0x290D,0x290D,0x290E,0x290E,0x290E,0x290D,0x290D,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x28ED,0x290E,0x28ED,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290D,0x290E,0x28ED,0x290D,0x290D,0x290E,0x290D,0x290D,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290E,0x290E,0x290E,0x290D,0x28ED,0x28ED,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x28ED,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x28ED,0x290D,0x28ED,0x290D,0x290D,0x290D,0x290D,0x28EE,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290D,0x290E,0x290E,0x290D,0x290D,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x28EE,0x28EE,0x28EE,0x290E,0x290E,0x28EE,0x290E,0x290E,0x290E,0x28EE,0x28EE,0x28EE,0x28EE,0x290E,0x290E,0x28EE,0x28EE,0x290E,0x28EE,0x290E,0x28EE,0x28EE,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x28EE,0x290E,0x28EE,0x290E,0x290E,0x28EE,0x290E,0x28EE,0x28EE,0x28EE,0x290E,0x28EE,0x28EE,0x290E,0x290E,0x28EE,0x290E,0x28EE,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x28EE,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x312F,0x290E,0x292E,0x312E,0x290E,0x312E,0x312E,0x310E,0x310F,0x310F,0x310F,0x310F,0x312F,0x312F,0x310F,0x312F,0x312F,0x312F,0x3130,0x312F,0x3150,0x312F,0x3130,0x3930,0x3950,0x3930,0x3930,0x3950,0x3930,0x3950,0x3950,0x3950,0x4151,0x3951,0x4151,0x4151,0x4151,0x4150,0x4171,0x4171,0x4972,0x4972,0x4972,0x4992,0x4972,0x4972,0x5192,0x5192,0x51B3,0x5192,0x5172,0x5992,0x5993,0x5992,0x6172,0x6993,0x6993,0x7172,0x7972,0x89D4,0x99F4,0xA235,0xA1F4,0xA9F5,0xA9F4,0xA1B4,0xA9D4,0xB1F4,0xB1F4,0xA9D3,0xA9F3,0xA9D3,0xA9D3,0xA9F3,0xA9F3,0xAA14,0x9A13,0x9233,0x8233,0x51D1,0x21AF,0x865F,0x771F,0x4F1E,0x373E,0x2F3D,0x2F3D,0x2F1D,0x3F3D,0x4F1D,0x6EDD,0x64D8,0x4270,0x7AB3,0x8A33,0x9A13,0xAA14,0xA1B3,0xA9D3,0xB1F4,0xB1F4,0xA9F4,0xA1F4,0x99F4,0x9234,0x71B2,0x5951,0x5171,0x4971,0x4170,0x4170,0x4170,0x4170,0x3970,0x3970,0x3950,0x3950,0x3150,0x3950,0x312F,0x312F,0x314F,0x312F,0x312F,0x310F,0x312F,0x312F,0x292E,0x292E,0x292E,0x292F,0x292F,0x290E,0x290F,0x290F,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210E,0x290E,0x290E,0x210E,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210E,0x290E,0x290E,0x290E,0x210E,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210E,0x290E,0x210E,0x290E,0x290E,0x290E,0x290E,0x290E,0x292E,0x290E,0x290E,0x290E,0x290E,0x290E,0x290E,0x210E,0x290E,0x290E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x290E,0x210E,0x290E,0x290E,0x210E,0x290E,0x210E,0x210E,0x290E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x290E,0x290E,0x210E,0x210E,0x210E,0x210E,0x290E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x212E,0x210E,0x210E,0x210E,0x210E,0x210E,0x290E,0x210E,0x290E,0x210E,0x290E,0x290E,0x290E,0x210E,0x210E,0x210E,0x210D,0x210E,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210D,0x210D,0x210D,0x210D,0x210D,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x20ED,0x210E,0x28EE,0x210E,0x20EE,0x28EE,0x20EE,0x210E,0x210E,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210D,0x210D,0x210D,0x210E,0x210E,0x210E,0x210E,0x210D,0x210E,0x210E,0x210D,0x20ED,0x20ED,0x210D,0x210D,0x20ED,0x210D,0x20ED,0x20ED,0x210D,0x20ED,0x20ED,0x210D,0x20ED,0x20ED,0x20ED,0x20ED,0x20ED,0x210D,0x20ED,0x20ED,0x20ED,0x20ED,0x210D,0x210D,0x20ED,0x210D,0x20ED,0x20ED,0x20ED,0x210D,0x20ED,0x20ED,0x20ED,0x20ED,0x20ED,0x20ED,0x20ED,0x20ED,0x20ED,0x20ED,0x210D,0x20ED,0x20ED,0x210D,0x20ED,0x210D,0x210D,0x20ED,0x210D,0x20ED,0x20ED,0x210D,0x20ED, + 0x8171,0x8171,0x8171,0x8171,0x8171,0x8171,0x8151,0x8972,0x8992,0x8992,0x8191,0x8171,0x8171,0x8191,0x8992,0x8192,0x8192,0x8192,0x8192,0x8992,0x8192,0x8192,0x89B2,0x89B2,0x89B2,0x89B2,0x89B2,0x89B2,0x89B2,0x89B2,0x89B2,0x89B2,0x89B2,0x89B2,0x8992,0x89B2,0x89B2,0x89B2,0x89B2,0x89B2,0x89D3,0x89B2,0x89B3,0x89B2,0x89B2,0x89D3,0x89D3,0x89B3,0x89B3,0x89B3,0x89B3,0x89B3,0x89D3,0x89B3,0x89B3,0x89B3,0x89D3,0x91D3,0x89B3,0x89B3,0x91D3,0x91D3,0x89D3,0x89D3,0x89D3,0x91D3,0x91D3,0x89D3,0x89D3,0x91F3,0x91D3,0x89D3,0x89D2,0x89D3,0x89D3,0x89D3,0x89D3,0x89D3,0x89F3,0x89D3,0x89D3,0x89D3,0x89D3,0x91F3,0x89D3,0x89D3,0x91F3,0x91D3,0x91D3,0x89D3,0x91D3,0x89D3,0x89B2,0x89D3,0x91F3,0x91F3,0x89F3,0x89D2,0x89B2,0x89D3,0x89F3,0x89F3,0x89F3,0x89D3,0x89D3,0x89D3,0x89D3,0x89D3,0x91F3,0x89D3,0x91F3,0x89D3,0x89D3,0x9213,0x91F3,0x91F3,0x91F3,0x91F3,0x89D3,0x9213,0x89F3,0x89F3,0x89F3,0x9214,0x89F3,0x8A14,0x8A14,0x8A14,0x8A13,0x89F3,0x8A14,0x8A14,0x81F3,0x81F3,0x81F3,0x8213,0x8213,0x8213,0x8214,0x8214,0x8214,0x8234,0x7A13,0x7A34,0x8275,0x7A54,0x7234,0x7213,0x69F2,0x59B1,0x494F,0x410E,0x30CD,0x28AC,0x28AC,0x28AC,0x28AC,0x28AD,0x28CD,0x20CD,0x28ED,0x28ED,0x20ED,0x210E,0x20ED,0x20ED,0x210E,0x20ED,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x210E,0x210E,0x20EE,0x210E,0x20EE,0x20EE,0x20EE,0x290E,0x20EE,0x20EE,0x20EE,0x210E,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x210E,0x210E,0x210E,0x210E,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x290E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x290E,0x20EE,0x20EE,0x20EE,0x210E,0x20EE,0x20EE,0x20EE,0x20EE,0x290E,0x290E,0x20EE,0x20EE,0x20EE,0x210E,0x20EE,0x210E,0x20EE,0x20EE,0x20EE,0x210E,0x20EE,0x20EE,0x20EE,0x210E,0x290E,0x210E,0x210E,0x210E,0x210E,0x290E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x20EE,0x20EE,0x210E,0x20EE,0x20EE,0x20EE,0x210E,0x20EE,0x210E,0x20EE,0x210E,0x210E,0x210E,0x290E,0x210E,0x210E,0x20EE,0x290E,0x290E,0x290E,0x290E,0x210E,0x210E,0x20EE,0x210E,0x20EE,0x20EE,0x20EE,0x290E,0x290E,0x290E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x20EE,0x210E,0x20EE,0x20EE,0x290E,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x210E,0x210E,0x290E,0x290E,0x290E,0x290E,0x210E,0x210E,0x210E,0x290E,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x290E,0x290E,0x290E,0x20EE,0x290E,0x290E,0x20EE,0x20EE,0x290E,0x290E,0x210E,0x210E,0x210E,0x210E,0x210E,0x20EE,0x210E,0x210E,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x290E,0x20EE,0x20EE,0x20EE,0x290E,0x20EE,0x20EE,0x20EE,0x290E,0x20EE,0x20EE,0x20EE,0x290E,0x20EE,0x20EE,0x20EE,0x290E,0x20EE,0x290E,0x20EE,0x20EE,0x20EE,0x20EE,0x290E,0x290E,0x20EE,0x290E,0x28EE,0x290E,0x20EE,0x290E,0x210E,0x290E,0x290E,0x20EE,0x20EE,0x290E,0x290E,0x290E,0x20EE,0x290E,0x290E,0x290E,0x20EE,0x20EE,0x210E,0x20EE,0x20EE,0x290E,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x28EE,0x28EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x290E,0x20EE,0x20EE,0x20EE,0x210E,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x290E,0x290E,0x20EE,0x20EE,0x290E,0x290E,0x28EE,0x28EE,0x210E,0x20EE,0x28EE,0x28EE,0x28EE,0x20EE,0x290E,0x20EE,0x290E,0x290E,0x290E,0x290E,0x20EE,0x290E,0x290F,0x290E,0x290E,0x290E,0x290F,0x290F,0x28EE,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290E,0x28EE,0x28EE,0x290F,0x290E,0x290F,0x290F,0x290F,0x28EF,0x290F,0x290F,0x290E,0x290E,0x290F,0x28EF,0x290F,0x290F,0x290F,0x28EF,0x28EF,0x28EF,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x28EF,0x290F,0x290F,0x290F,0x290F,0x290F,0x20EE,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x290F,0x290F,0x292F,0x292F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x292F,0x292F,0x292F,0x292F,0x292F,0x312F,0x290F,0x292F,0x312F,0x312F,0x312F,0x312F,0x3130,0x3130,0x3130,0x3130,0x3130,0x3130,0x3130,0x3150,0x3130,0x3130,0x3130,0x3130,0x3130,0x3131,0x3130,0x3931,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3951,0x3971,0x3951,0x3951,0x4171,0x4172,0x4172,0x4192,0x4992,0x4992,0x4992,0x4992,0x51B3,0x4993,0x5193,0x51B3,0x51B3,0x51B3,0x59B3,0x59B3,0x5993,0x6193,0x6193,0x69B3,0x79D4,0x81D4,0x81D4,0x91F5,0x9A15,0x99D4,0xA1F5,0xA9F4,0xA9D4,0xA193,0xA9F4,0xA9D3,0xA9F4,0xA9D3,0xA9D3,0xA9B2,0xA9D3,0xA9F3,0xA214,0xA254,0x9274,0x8254,0x49D1,0x2A71,0x86BF,0x5EFE,0x46FD,0x371D,0x2F1D,0x2EFC,0x36FC,0x3EBC,0x5E9C,0x6D9A,0x42B1,0x7AF4,0x9294,0x99F3,0xA1D3,0xA9D3,0xA9F4,0xA193,0xA9D4,0xA9F4,0xAA35,0x99D4,0x91F4,0x8214,0x5930,0x5150,0x4951,0x4151,0x4171,0x4191,0x4191,0x3991,0x3971,0x3150,0x3150,0x3150,0x3150,0x3150,0x3150,0x3150,0x3130,0x3130,0x3150,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x292F,0x290F,0x290F,0x290F,0x290F,0x290F,0x292F,0x290F,0x290F,0x290F,0x290F,0x210F,0x210F,0x210F,0x210F,0x290F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210E,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210E,0x210F,0x210F,0x210F,0x292F,0x292F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x212F,0x210F,0x210F,0x210F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x212F,0x212F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210E,0x210E,0x210E,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210E,0x212F,0x210E,0x210E,0x212F,0x210E,0x210E,0x210E,0x210E,0x210E,0x210F,0x210F,0x210E,0x210F,0x210F,0x210E,0x20EE,0x210E,0x210E,0x210E,0x210E,0x20EE,0x20EE,0x210F,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x190F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x190E,0x210E,0x210E,0x190E,0x190E,0x210E,0x210E,0x210E,0x210E,0x210E,0x210E,0x190E,0x190E,0x210E,0x190E,0x190E,0x210E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x190E,0x210E,0x190E,0x210E,0x190E,0x210E,0x190E,0x190E,0x210E,0x210E,0x18ED,0x190D,0x190D,0x18ED,0x18ED,0x18EE,0x18EE,0x210E,0x20EE,0x210E,0x210E,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x210E,0x210E,0x20ED,0x210D,0x210D,0x210D,0x210D,0x210D,0x190D,0x190D,0x210D, + 0x81B2,0x81B3,0x81B2,0x81B3,0x7992,0x7992,0x7992,0x8193,0x81B2,0x7992,0x7992,0x7992,0x7992,0x81B3,0x79B2,0x79B3,0x79B2,0x79B2,0x7992,0x79B3,0x79B3,0x79B3,0x79B3,0x79B3,0x79B3,0x79B3,0x81B3,0x81B3,0x79B3,0x81D3,0x79D3,0x79B3,0x81D3,0x79B3,0x79B3,0x81D3,0x79B3,0x81F3,0x81D3,0x81D3,0x81D3,0x81D3,0x81D3,0x81D3,0x81D3,0x81D3,0x81D3,0x81D4,0x81B3,0x81D3,0x81D3,0x81D4,0x81D3,0x81D4,0x81D4,0x81D4,0x81D3,0x81D4,0x89D4,0x81D4,0x81D4,0x81D4,0x81D4,0x81D4,0x81D3,0x89F4,0x81D3,0x89F4,0x81F3,0x81F3,0x81F3,0x81F3,0x81D3,0x81F4,0x81D3,0x81D3,0x81F4,0x81F4,0x81F4,0x81F4,0x81F4,0x81D3,0x81F4,0x81D3,0x81D3,0x81D4,0x81D3,0x81D4,0x81D4,0x89F4,0x81D4,0x81F4,0x81D3,0x8A14,0x89F4,0x81F3,0x8A14,0x81F4,0x81D3,0x8A14,0x81F3,0x81F3,0x81F3,0x81F3,0x81D3,0x81F4,0x81D3,0x81F4,0x81F4,0x81F4,0x89F4,0x8A14,0x81F3,0x89F4,0x89F4,0x89F4,0x89F4,0x8A14,0x81F4,0x81F4,0x81F4,0x81F4,0x81F4,0x8A14,0x8214,0x8214,0x8A35,0x8214,0x8234,0x8A35,0x8214,0x8214,0x8214,0x8214,0x8214,0x8235,0x8234,0x8234,0x8235,0x8235,0x8255,0x7A14,0x7A14,0x7214,0x7214,0x7A55,0x7A55,0x7234,0x7A75,0x7255,0x7A96,0x7295,0x72B5,0x6254,0x5A13,0x4991,0x394F,0x28EE,0x28AD,0x20CE,0x20AD,0x20CD,0x20CE,0x20EE,0x20EE,0x20EE,0x210E,0x210E,0x210E,0x210F,0x210F,0x210F,0x210F,0x210F,0x20EF,0x210F,0x20EF,0x20EF,0x18EF,0x18EF,0x18EF,0x18EF,0x18EF,0x210F,0x18EF,0x18EF,0x190F,0x18EF,0x18EF,0x190F,0x190F,0x190F,0x190F,0x210F,0x210F,0x210F,0x18EF,0x18EF,0x190F,0x18EF,0x18EF,0x18EF,0x18EF,0x18EF,0x210F,0x18EF,0x18EF,0x18EF,0x190F,0x190F,0x18EF,0x210F,0x210F,0x210F,0x190F,0x190F,0x190F,0x18EF,0x18EF,0x18EF,0x18EF,0x18EF,0x190F,0x210F,0x18EF,0x18EF,0x18EF,0x18EF,0x18EF,0x18EF,0x18EF,0x18EF,0x20EF,0x18EF,0x20EF,0x18EF,0x18EF,0x18EF,0x18EF,0x18EF,0x18EF,0x18EF,0x18EF,0x190F,0x18EF,0x18EF,0x18EF,0x18EF,0x18EF,0x18EF,0x20EF,0x18EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x210F,0x210F,0x20EF,0x190F,0x190F,0x18EF,0x18EF,0x18EF,0x18EF,0x20EF,0x20EF,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x210F,0x18EE,0x190F,0x190F,0x210F,0x210F,0x18EF,0x210F,0x20EF,0x20EF,0x18EF,0x210F,0x20EF,0x20EF,0x18EF,0x210F,0x210F,0x18EF,0x18EF,0x210F,0x20EF,0x20EF,0x18EF,0x18EF,0x18EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x18EE,0x20EE,0x210F,0x20EF,0x20EF,0x210F,0x20EF,0x210F,0x210F,0x20EF,0x210F,0x210F,0x20EF,0x20EF,0x20EF,0x20EF,0x18EF,0x210F,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EE,0x20EE,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EE,0x20EF,0x20EF,0x20EE,0x20EF,0x210F,0x20EE,0x20EF,0x20EF,0x20EF,0x20EF,0x210F,0x20EF,0x210F,0x210F,0x20EE,0x210F,0x20EE,0x20EE,0x20EF,0x20EF,0x20EF,0x20EE,0x20EF,0x210F,0x20EF,0x18EE,0x20EE,0x20EE,0x20EF,0x20EE,0x20EF,0x20EF,0x20EE,0x210F,0x20EF,0x20EF,0x20EF,0x20EE,0x20EE,0x20EF,0x20EF,0x18EF,0x18CF,0x20EF,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x18EE,0x20EE,0x20EE,0x20EE,0x20EE,0x18EE,0x20EE,0x20EE,0x18EE,0x18CE,0x18EE,0x18EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20CE,0x20EF,0x20EE,0x20CE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x18EE,0x20EE,0x210E,0x20EE,0x18EE,0x20EE,0x20EF,0x20EF,0x20EF,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x18EE,0x20EE,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EE,0x20EF,0x20EE,0x210F,0x18CE,0x18EE,0x20EE,0x18EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EE,0x20EF,0x20EE,0x20EE,0x20EF,0x20EE,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EF,0x20EE,0x20EF,0x20EF,0x20EF,0x20EF,0x210F,0x210F,0x20EF,0x20EF,0x210F,0x2930,0x290F,0x2930,0x2930,0x2910,0x2910,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2951,0x2930,0x2930,0x2930,0x2930,0x2930,0x2951,0x2951,0x2951,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2910,0x2930,0x2950,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2950,0x2930,0x2930,0x2951,0x2930,0x2930,0x2950,0x2930,0x2951,0x2951,0x2930,0x2930,0x2930,0x2951,0x2930,0x2930,0x2950,0x2130,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2931,0x2931,0x2930,0x2931,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x2950,0x2930,0x2930,0x2930,0x3130,0x2930,0x3131,0x3131,0x3151,0x3151,0x2931,0x2951,0x2951,0x2931,0x2931,0x3151,0x3131,0x3151,0x3152,0x3152,0x3152,0x3952,0x3152,0x3952,0x3972,0x3972,0x3972,0x3992,0x3992,0x3992,0x4192,0x4192,0x4192,0x4193,0x4192,0x4193,0x49B3,0x49B3,0x4993,0x49B4,0x49B3,0x49B3,0x49B4,0x49B3,0x51F4,0x51D4,0x51B3,0x59D4,0x59B4,0x59B4,0x61D4,0x61B3,0x6993,0x71D4,0x79D5,0x81F5,0x89D4,0x99F5,0x99F5,0xAA15,0xAA15,0xA1D4,0xA9D4,0xA9D3,0xB1F4,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xAA14,0xA1F3,0x9A34,0x9254,0x7253,0x31AF,0x53F6,0x871F,0x56DD,0x46FD,0x3F3D,0x3F3D,0x3F1D,0x3EDC,0x569C,0x763C,0x3B11,0x72F3,0x8A73,0x91F3,0xA1D3,0xA9F3,0xA9F4,0xA9D4,0xA9D4,0xA9F4,0xA1F4,0xA215,0x91F4,0x8A35,0x6151,0x5151,0x4971,0x4171,0x41B2,0x4192,0x39B2,0x39B2,0x3171,0x3191,0x3171,0x3171,0x3171,0x3171,0x2951,0x2951,0x2951,0x3151,0x2930,0x2950,0x2930,0x2930,0x2950,0x2950,0x2950,0x2950,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2930,0x2130,0x2110,0x2130,0x2130,0x2110,0x2110,0x2110,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x212F,0x210F,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2130,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x2130,0x1930,0x2130,0x2130,0x2130,0x1930,0x1910,0x2130,0x1930,0x2130,0x2130,0x2130,0x2130,0x2130,0x2110,0x2130,0x2110,0x2130,0x2110,0x2110,0x2130,0x190F,0x190F,0x190F,0x190F,0x1930,0x190F,0x190F,0x1910,0x1910,0x1930,0x1910,0x1910,0x1910,0x1910,0x190F,0x192F,0x192F,0x190F,0x190F,0x190F,0x190F,0x190F,0x1930,0x1910,0x190F,0x1930,0x192F,0x190F,0x1930,0x190F,0x190F,0x190F,0x190F,0x190F,0x210F,0x190F,0x2110,0x210F,0x210F,0x2110,0x190F,0x1910,0x1910,0x190F,0x18EF,0x1910,0x190F,0x190F,0x190F,0x190F,0x190F,0x192F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x192F,0x190F,0x190F,0x192F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x190F,0x192F,0x190F,0x190F,0x190F,0x190F,0x190E,0x190E,0x190E,0x190E,0x190E,0x18EE,0x18EE,0x18EE,0x18EE,0x18EF,0x18EE,0x190F,0x190F,0x18EF,0x18EF,0x18EE,0x18EE,0x18CE,0x18EF,0x18EE,0x18EE,0x190E,0x18EE,0x18EE,0x190E,0x190E,0x18EE,0x18EE,0x190E,0x190E,0x190E, + 0x8A97,0x8A76,0x8A76,0x8A76,0x8256,0x8A76,0x8A77,0x8A77,0x8A76,0x8A97,0x8A76,0x8A97,0x8A97,0x8A96,0x8A97,0x8AB7,0x8AB7,0x8AB7,0x8AB7,0x8AB7,0x8AB7,0x8AB7,0x8AB7,0x8A97,0x8296,0x8296,0x8276,0x8256,0x8276,0x8276,0x8276,0x8296,0x8256,0x8276,0x8277,0x8277,0x8276,0x8276,0x8276,0x8276,0x8276,0x8276,0x8277,0x8277,0x8A77,0x8A77,0x8257,0x8257,0x8277,0x8277,0x8277,0x8277,0x8256,0x8277,0x8257,0x8A77,0x8277,0x8A77,0x8257,0x8A57,0x8A77,0x8A77,0x8A56,0x8A77,0x8A77,0x8A76,0x8A76,0x8A76,0x8276,0x8276,0x8A76,0x8A97,0x8A97,0x8A97,0x8277,0x8A97,0x8277,0x8A97,0x8A97,0x8A97,0x8A97,0x8A97,0x8A97,0x8AB7,0x8AB7,0x8AB7,0x92B8,0x92B8,0x92B8,0x8A97,0x92B7,0x92B8,0x92D8,0x92B7,0x8A97,0x8A97,0x8A97,0x92B7,0x92D8,0x92D7,0x8AB7,0x8AB7,0x8AB7,0x8A97,0x8A97,0x8AB7,0x8A97,0x8A77,0x8A97,0x8A96,0x8A97,0x8A97,0x8A97,0x9297,0x8A97,0x8A97,0x9297,0x92B7,0x92B7,0x8AB7,0x8A97,0x8A97,0x8A97,0x8AB7,0x8AB7,0x8AB7,0x8AB8,0x8AB7,0x92D8,0x8AB7,0x8A97,0x8AB7,0x8A97,0x8AB7,0x92B7,0x8AB7,0x8AB7,0x8AB7,0x8AB7,0x8AB7,0x8AD8,0x8AD8,0x92F8,0x8AD8,0x8AF8,0x8B18,0x9339,0x9339,0x9359,0x9359,0x9379,0x8B7A,0x93BA,0x93BA,0x9BFB,0x93FB,0x8BDA,0x839A,0x7338,0x6AF7,0x62D6,0x5275,0x4A55,0x4213,0x39F3,0x31B2,0x2991,0x2971,0x2171,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2131,0x2151,0x2171,0x2151,0x2151,0x2131,0x2151,0x2131,0x2151,0x2151,0x2151,0x1951,0x1951,0x1951,0x1951,0x1951,0x1931,0x2151,0x1951,0x1930,0x1910,0x1931,0x1930,0x1931,0x1931,0x1931,0x1931,0x1951,0x1951,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x1931,0x1931,0x2151,0x1931,0x2151,0x2151,0x1951,0x1951,0x1951,0x1951,0x1951,0x1931,0x1951,0x2151,0x1931,0x2151,0x1931,0x2151,0x1931,0x1931,0x1931,0x2151,0x2131,0x1931,0x2151,0x1931,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x1951,0x1931,0x1951,0x1931,0x2131,0x2151,0x2151,0x2131,0x2131,0x2151,0x2151,0x2151,0x2151,0x2172,0x2171,0x2131,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2171,0x2171,0x2151,0x2151,0x2151,0x1931,0x2131,0x2131,0x2131,0x1931,0x2151,0x1931,0x1931,0x1931,0x1931,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2131,0x2151,0x2151,0x2151,0x2152,0x2152,0x2151,0x2152,0x2151,0x2151,0x2151,0x2152,0x2151,0x2152,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2971,0x2151,0x2131,0x2131,0x2151,0x2151,0x2171,0x2171,0x2151,0x2171,0x2171,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2171,0x2171,0x2972,0x2972,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2151,0x2971,0x2971,0x2972,0x2951,0x2972,0x2971,0x2971,0x2972,0x2971,0x2972,0x2972,0x2972,0x2972,0x2972,0x2972,0x2971,0x2972,0x2971,0x2971,0x2971,0x2971,0x2151,0x2971,0x2151,0x2151,0x2971,0x2171,0x2971,0x2171,0x2151,0x2151,0x2971,0x2971,0x2151,0x2151,0x2992,0x2992,0x2171,0x2151,0x2971,0x2971,0x2971,0x2971,0x2971,0x2972,0x2972,0x2992,0x2972,0x2972,0x2971,0x2971,0x2971,0x2971,0x2971,0x2971,0x2971,0x2971,0x2971,0x2951,0x2972,0x2971,0x2971,0x2972,0x2971,0x2971,0x2151,0x2972,0x2971,0x2971,0x2971,0x2972,0x2972,0x2971,0x2971,0x2971,0x2971,0x2972,0x2971,0x2971,0x2972,0x2971,0x2972,0x2972,0x2972,0x2972,0x2972,0x2972,0x2972,0x2972,0x2972,0x2972,0x2972,0x2972,0x3192,0x3192,0x2971,0x2971,0x2971,0x2971,0x2971,0x2951,0x2951,0x2951,0x2992,0x2992,0x2991,0x2991,0x2991,0x2992,0x2972,0x2992,0x2972,0x2972,0x2951,0x2951,0x3172,0x2972,0x2992,0x2992,0x2992,0x2992,0x2971,0x2971,0x2972,0x2972,0x2972,0x2972,0x2972,0x2972,0x2972,0x2972,0x2972,0x2971,0x2971,0x2971,0x2972,0x2971,0x2992,0x2972,0x2971,0x2972,0x2971,0x2971,0x2971,0x2971,0x2971,0x2972,0x2971,0x2972,0x2972,0x2972,0x2972,0x2972,0x2992,0x2992,0x2992,0x3192,0x2972,0x2972,0x3192,0x3192,0x31B2,0x31B2,0x3192,0x31B2,0x31B2,0x31B3,0x31B3,0x31B3,0x3192,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31D3,0x31D3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x3193,0x31B3,0x31B3,0x31B3,0x3193,0x3193,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x3193,0x3192,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31D3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x31B3,0x2992,0x3193,0x31B3,0x31B3,0x31B3,0x3193,0x3193,0x2992,0x31B3,0x3193,0x2993,0x3193,0x3193,0x2992,0x2992,0x3193,0x2992,0x2992,0x2993,0x2993,0x2992,0x2992,0x2992,0x2993,0x2992,0x2993,0x2973,0x2973,0x2972,0x3193,0x3193,0x3193,0x3193,0x3193,0x3193,0x31B3,0x3193,0x2993,0x2972,0x2973,0x2993,0x3193,0x3193,0x3193,0x3193,0x31B3,0x3193,0x3192,0x3192,0x2992,0x31B3,0x31B3,0x3192,0x2972,0x3193,0x3172,0x31B3,0x31B3,0x3193,0x2973,0x3193,0x3193,0x3173,0x3173,0x3173,0x3173,0x3193,0x3993,0x39B4,0x3994,0x3994,0x3994,0x39B3,0x39B4,0x39B4,0x39B3,0x41D4,0x39D4,0x39B4,0x41D4,0x41B3,0x39B3,0x41D4,0x41B4,0x41B4,0x41B4,0x41B4,0x49B4,0x49F5,0x49F5,0x49F5,0x49D4,0x49D4,0x49D4,0x51F5,0x51F5,0x51F5,0x51D4,0x59F5,0x59D4,0x61F5,0x61D4,0x61B4,0x69B4,0x71D5,0x79D5,0x9257,0x91F5,0x99F4,0xA1F4,0xAA15,0xA1D3,0xA9D3,0xA1B3,0xA9F3,0xA9D3,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xAA14,0xA213,0x9A54,0x8A74,0x6A73,0x216D,0x7D9B,0x871F,0x4E9C,0x46FC,0x3F1C,0x3EFC,0x3EBB,0x569B,0x765C,0x3B52,0x6AD2,0x8232,0x9A33,0xA1F3,0xA1D3,0xA9D3,0xA1B3,0xA9F4,0xA9D4,0xA1F4,0xA1F4,0x9A14,0x9255,0x69B3,0x5992,0x4992,0x4192,0x41B2,0x41D3,0x41D3,0x39D3,0x31B3,0x39D3,0x31B3,0x31B2,0x2993,0x2993,0x2993,0x2993,0x2993,0x3172,0x2972,0x2972,0x2972,0x2972,0x2971,0x2972,0x2972,0x2972,0x2952,0x2952,0x2952,0x2952,0x2152,0x2952,0x2972,0x2972,0x2172,0x2172,0x2172,0x2172,0x2172,0x2172,0x2151,0x2172,0x2172,0x2172,0x2172,0x2172,0x2172,0x2172,0x2172,0x2172,0x2172,0x2171,0x2151,0x2151,0x2151,0x2172,0x2151,0x2172,0x2172,0x2172,0x2151,0x2152,0x2172,0x2151,0x2151,0x2152,0x2151,0x2151,0x2151,0x2172,0x2172,0x2172,0x2172,0x2152,0x2152,0x1951,0x1951,0x2172,0x2152,0x2172,0x2172,0x2152,0x2152,0x2152,0x2152,0x2172,0x2151,0x2172,0x2172,0x2152,0x2152,0x2152,0x2152,0x2152,0x2151,0x2151,0x1931,0x2172,0x2152,0x2172,0x2172,0x2152,0x2152,0x2172,0x2151,0x2172,0x2172,0x2172,0x2172,0x2172,0x2152,0x2172,0x2172,0x2172,0x2172,0x2172,0x2172,0x2152,0x1952,0x2172,0x1951,0x2152,0x1951,0x1951,0x1951,0x2152,0x1951,0x2172,0x1972,0x2172,0x1951,0x1952,0x1952,0x1931,0x1931,0x1952,0x1951,0x1931,0x1931,0x1951,0x1951,0x1951,0x1931,0x1951,0x1951,0x1951,0x1931,0x1951,0x1951,0x1951,0x1951,0x1951,0x1951,0x1931,0x1931,0x1931,0x1931,0x1951,0x1951,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1931,0x1951,0x1951,0x1930,0x1951,0x1931,0x1951,0x1931,0x1951,0x1931,0x1951,0x1931,0x1931,0x1931,0x1930,0x1931,0x1931,0x1930,0x1931,0x1930,0x1930,0x1930,0x1930,0x1910,0x1930,0x1910,0x1930,0x1930,0x1931,0x1110,0x1930,0x1910,0x1910,0x1910,0x1910,0x1910,0x1911,0x1911,0x1911,0x1911,0x1910,0x1910,0x1911,0x10F0,0x1931,0x1910,0x1110,0x1110,0x1110,0x1110,0x1930,0x1110,0x1110,0x1110,0x1110,0x1110,0x1130,0x1130,0x1110,0x1110,0x1110,0x10EF,0x110F,0x110F,0x1130,0x1110,0x1110,0x1110,0x1110,0x10F0,0x10F0,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x110F,0x110F,0x110F,0x1110,0x1110,0x110F,0x110F,0x10EF,0x10EF,0x10EF,0x110F,0x110F,0x10EF,0x10EF,0x10EF,0x10EF,0x10EF,0x10EF,0x10EF,0x10EF,0x10EF,0x110F,0x10EF,0x10EF,0x10EF,0x10EF,0x10EF,0x10EF,0x10EF,0x10EF,0x10EF,0x10EE,0x10EE,0x110E,0x10EE,0x110E,0x110E, + 0x59B3,0x5193,0x5172,0x5172,0x5172,0x5192,0x5993,0x5993,0x5993,0x5993,0x5993,0x5993,0x5192,0x5172,0x5172,0x5172,0x4972,0x4972,0x5172,0x5172,0x5172,0x5172,0x5192,0x5172,0x5192,0x5172,0x5172,0x5193,0x5993,0x51B3,0x59D3,0x59D3,0x59D3,0x59D4,0x59F4,0x59F4,0x59F4,0x59F4,0x59D4,0x59D4,0x59F4,0x59D4,0x61F4,0x61F4,0x61F4,0x59D4,0x59D4,0x59D4,0x61F4,0x59F4,0x61F4,0x61F4,0x6215,0x61F5,0x61F5,0x61F5,0x61F4,0x59D4,0x61F5,0x61D5,0x61F5,0x61F4,0x61F5,0x61F4,0x61F4,0x61F4,0x61F4,0x61F4,0x61F4,0x61F4,0x6214,0x6214,0x6214,0x6214,0x6215,0x59F4,0x6214,0x59F4,0x59F4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59D4,0x59B3,0x59D4,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59B3,0x59D4,0x59D4,0x59D4,0x61F4,0x59F4,0x6214,0x59F4,0x6235,0x6214,0x6215,0x6215,0x6A35,0x61F4,0x6A35,0x6214,0x6A15,0x6214,0x6A15,0x6A14,0x6A15,0x61F4,0x6A14,0x6214,0x6A35,0x6214,0x6214,0x6215,0x6235,0x6215,0x6215,0x6215,0x6215,0x59F4,0x6215,0x6214,0x6215,0x61F4,0x6215,0x6215,0x6215,0x6215,0x6235,0x6215,0x6235,0x6215,0x6215,0x6215,0x6215,0x6215,0x6215,0x5A14,0x6215,0x59F4,0x59F4,0x51D4,0x51F4,0x51F4,0x49D3,0x49F4,0x5214,0x5214,0x5235,0x5255,0x5255,0x5255,0x5295,0x4254,0x4235,0x39F4,0x31F3,0x29B2,0x2192,0x2192,0x1972,0x1972,0x1972,0x1972,0x1952,0x1972,0x1973,0x1973,0x2193,0x2193,0x1993,0x1973,0x1973,0x1993,0x1973,0x1973,0x1972,0x1992,0x1992,0x1992,0x1992,0x1972,0x1972,0x1972,0x1972,0x1972,0x1972,0x1972,0x1972,0x1992,0x1993,0x19B3,0x19B3,0x19B3,0x19B3,0x1993,0x1993,0x1993,0x1993,0x1993,0x1992,0x1972,0x1972,0x1972,0x1972,0x1993,0x1993,0x19B3,0x1993,0x1972,0x1972,0x1993,0x1992,0x1993,0x1993,0x1993,0x2193,0x21B3,0x1993,0x1993,0x21B3,0x1993,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x1993,0x21B3,0x1993,0x2193,0x21B3,0x2193,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x2193,0x21B3,0x21B3,0x2193,0x21B3,0x2193,0x21B3,0x21D3,0x21B3,0x21B3,0x21B3,0x21B3,0x19B2,0x19B3,0x21B3,0x1992,0x19B3,0x21B3,0x21B3,0x21D3,0x21D3,0x21D3,0x19B3,0x21B3,0x21D4,0x21D4,0x21D4,0x21B3,0x21B3,0x21D4,0x21D4,0x21D4,0x21B3,0x21D4,0x21D4,0x21D3,0x21D3,0x21D4,0x21D4,0x21D4,0x21D4,0x29D4,0x21D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x21B3,0x29D3,0x29D4,0x29D4,0x29F4,0x29D3,0x29F4,0x29D4,0x29D4,0x29D4,0x29D4,0x21B3,0x29D3,0x29F4,0x21B3,0x21B3,0x21D3,0x21D3,0x21D3,0x21D3,0x21D3,0x21D3,0x29D4,0x29F4,0x29D4,0x29D4,0x29D4,0x29D3,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29D4,0x29D4,0x29F4,0x29F4,0x29D4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x3214,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x2A14,0x29F4,0x2A14,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29D4,0x3214,0x29F4,0x2A14,0x29D4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x2A14,0x29F4,0x2A14,0x29F4,0x29F4,0x2A14,0x29F4,0x3214,0x3214,0x3214,0x31F4,0x3214,0x3214,0x3214,0x3214,0x3214,0x3214,0x31F4,0x3214,0x3214,0x3214,0x3214,0x3214,0x3235,0x3214,0x3214,0x3214,0x3214,0x3214,0x3214,0x3214,0x3235,0x3214,0x3214,0x3214,0x3215,0x3214,0x3214,0x3214,0x31F4,0x31F4,0x3214,0x31F4,0x3214,0x31F4,0x3214,0x31F4,0x31F4,0x31F4,0x31F4,0x31F4,0x3214,0x31F4,0x31F4,0x29F3,0x3214,0x3214,0x3214,0x29F4,0x3214,0x3234,0x3235,0x3235,0x3A35,0x3A15,0x3A15,0x31F4,0x3A15,0x3214,0x3234,0x3235,0x3235,0x3235,0x3235,0x3235,0x3A35,0x3A35,0x3A35,0x3215,0x3A55,0x3A35,0x3A35,0x3A35,0x3A55,0x3A35,0x3A55,0x3A35,0x3A35,0x3235,0x3A55,0x3A55,0x3A55,0x3235,0x3A35,0x3A35,0x3A35,0x3234,0x3A35,0x3235,0x3A35,0x3A35,0x3214,0x3214,0x3215,0x3215,0x3235,0x3235,0x3215,0x31F4,0x3214,0x3215,0x31F4,0x31D4,0x31F4,0x31D3,0x31F4,0x31F4,0x29D3,0x29F4,0x3214,0x3214,0x31F4,0x31F4,0x31F4,0x31F4,0x31F4,0x31F4,0x31F4,0x31F4,0x31D4,0x31F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29F4,0x31F4,0x31F4,0x31F4,0x31F4,0x31F4,0x31D4,0x31F4,0x29D4,0x29D4,0x31D4,0x31D4,0x31F4,0x31F4,0x31D4,0x31D4,0x31F4,0x31F4,0x29D4,0x29D4,0x29D4,0x31D4,0x31F4,0x31F4,0x31F4,0x31F4,0x31F4,0x29D4,0x31F4,0x29F4,0x29F4,0x29F4,0x29F4,0x29D3,0x29D4,0x31F4,0x31D4,0x31D4,0x31F4,0x29D3,0x29F4,0x31F4,0x29F4,0x29F4,0x29D3,0x29D3,0x29F4,0x29F4,0x31F4,0x29B3,0x29D4,0x29D4,0x31F4,0x29D4,0x29D3,0x29B3,0x29D4,0x29D4,0x29F4,0x29D4,0x29D3,0x29D4,0x29D4,0x29F4,0x29D4,0x29D4,0x29F4,0x29F4,0x29D4,0x29D4,0x29F4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29B4,0x29D4,0x29D4,0x29D4,0x29D4,0x29F4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x29B4,0x21B3,0x29D4,0x29F4,0x29F4,0x29D4,0x29B3,0x29B3,0x29D4,0x31F4,0x29D4,0x29D4,0x29D4,0x29D4,0x29D4,0x31D4,0x29B4,0x29B4,0x31D4,0x31D4,0x31B4,0x31D5,0x31D5,0x31D4,0x31D4,0x31D4,0x31D4,0x31B4,0x31D4,0x31F4,0x31F4,0x39F4,0x31D4,0x39D4,0x39D4,0x39D4,0x39F4,0x39D4,0x39D4,0x41F5,0x41F5,0x41F5,0x41F5,0x4A16,0x4215,0x4215,0x4215,0x4A36,0x4A15,0x5235,0x5215,0x5215,0x5215,0x5A15,0x5A15,0x6236,0x6216,0x61F5,0x71F6,0x79F5,0x81F5,0x9235,0x99F4,0xA214,0xA214,0xA9F4,0xA1D3,0xA9D3,0xA9D3,0xA9F3,0xA9F3,0xA9D3,0xA9B3,0xA9F3,0xA1F3,0x9A13,0x9233,0x8273,0x5A52,0x322F,0x9EDF,0x66BD,0x4EBC,0x46DC,0x471C,0x46BB,0x4E7B,0x769D,0x43D3,0x62D2,0x8273,0x9213,0xA1F3,0xA1D3,0xA1B3,0xA9F4,0xA9D4,0xA9F4,0xAA15,0xA215,0x9A14,0x89F4,0x7A14,0x5172,0x4992,0x41B3,0x39D3,0x39D4,0x31D4,0x31F4,0x29D3,0x31F4,0x29F4,0x29D3,0x29D3,0x21B4,0x21B4,0x21B4,0x21B4,0x2193,0x2193,0x21B3,0x21B3,0x21B3,0x2193,0x2193,0x2193,0x2193,0x2193,0x2172,0x2173,0x2173,0x2193,0x2173,0x2193,0x21B3,0x2193,0x2193,0x1993,0x2193,0x1973,0x1993,0x1993,0x1993,0x1993,0x1993,0x1993,0x1993,0x1993,0x1992,0x1992,0x1993,0x1992,0x1992,0x1972,0x1972,0x1992,0x1972,0x1992,0x1993,0x1972,0x1993,0x1972,0x1992,0x1972,0x1972,0x1972,0x1972,0x1972,0x1972,0x1972,0x1972,0x1972,0x1993,0x1973,0x1973,0x1972,0x1972,0x1992,0x1972,0x1972,0x1993,0x1972,0x1993,0x1993,0x1972,0x1972,0x1972,0x1972,0x1972,0x1972,0x1952,0x1973,0x1952,0x1952,0x1973,0x1972,0x1972,0x1972,0x1972,0x1972,0x1992,0x1992,0x1972,0x1972,0x1972,0x1972,0x1972,0x1172,0x1172,0x1172,0x1972,0x1152,0x1152,0x1152,0x1172,0x1172,0x1172,0x1172,0x1152,0x1152,0x1152,0x1152,0x1152,0x1152,0x1152,0x1152,0x1152,0x1152,0x1152,0x1172,0x1172,0x1172,0x1152,0x1152,0x1152,0x1152,0x1152,0x1132,0x1152,0x1132,0x1152,0x1151,0x1152,0x1152,0x1151,0x1131,0x1131,0x1131,0x1131,0x1131,0x1152,0x1152,0x1152,0x1131,0x1132,0x1131,0x1131,0x1131,0x1131,0x1152,0x1152,0x1131,0x1132,0x1132,0x1131,0x1131,0x1152,0x1151,0x1152,0x1151,0x1151,0x1151,0x1151,0x1131,0x1132,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x0931,0x0911,0x1131,0x0911,0x0911,0x0911,0x1131,0x1111,0x0911,0x1131,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x0911,0x0911,0x1111,0x0911,0x0910,0x0910,0x0910,0x0910,0x0910,0x08F0,0x0910,0x0910,0x0910,0x0910,0x0910,0x0910,0x0910,0x08F0,0x0910,0x0910,0x0910,0x0910,0x0910,0x0910,0x0910,0x0910,0x08F0,0x0910,0x08F0,0x0910,0x0910,0x0910,0x0910,0x08F0,0x08F0,0x08F0,0x08F0,0x0910,0x0910,0x0910,0x08EF,0x0910,0x08EF,0x08EF,0x08EF,0x08EF,0x08EF,0x08EF,0x08EF,0x08EF,0x08F0,0x08EF,0x08EF,0x08F0,0x08F0,0x08F0,0x08F0,0x08EF,0x08EF,0x08EF,0x08CF,0x08EF,0x08EF,0x08EF,0x08EF,0x08EF,0x08EE,0x08EF,0x08EF,0x090F, + 0x000C,0x000C,0x000C,0x080C,0x080B,0x080B,0x080B,0x080B,0x080B,0x080B,0x080B,0x080B,0x080B,0x080B,0x080B,0x080B,0x080B,0x080B,0x000B,0x080B,0x080B,0x080B,0x080B,0x080B,0x080B,0x000B,0x080B,0x080B,0x080B,0x080B,0x080B,0x080C,0x000B,0x000B,0x080B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x080C,0x000B,0x000B,0x000B,0x080C,0x000B,0x080B,0x080B,0x080B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000C,0x000C,0x080C,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000C,0x000C,0x000C,0x000C,0x080C,0x080C,0x080C,0x000B,0x080C,0x080C,0x080C,0x080C,0x080C,0x080C,0x080C,0x080C,0x080C,0x080C,0x000C,0x000C,0x000C,0x000C,0x000B,0x000C,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x080B,0x000B,0x080B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000B,0x000C,0x000C,0x000C,0x000C,0x000B,0x000B,0x000C,0x000C,0x000C,0x080C,0x080C,0x080C,0x080C,0x000C,0x000C,0x000C,0x000C,0x000C,0x080C,0x080D,0x082D,0x104D,0x082D,0x082D,0x082D,0x082D,0x106E,0x106E,0x086D,0x088D,0x086D,0x004D,0x086D,0x006D,0x08AE,0x08CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F1,0x00F0,0x00F1,0x00F1,0x00F0,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0111,0x0111,0x0131,0x0111,0x0131,0x0131,0x0110,0x0110,0x0111,0x0111,0x0131,0x0131,0x0111,0x0111,0x0111,0x0111,0x0131,0x0131,0x0151,0x0131,0x0131,0x0110,0x0110,0x0110,0x0131,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x0110,0x00F0,0x00F0,0x00F0,0x0111,0x0110,0x0111,0x0110,0x0131,0x0111,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x0110,0x00F0,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0131,0x0110,0x0131,0x0110,0x00F0,0x00F0,0x0131,0x0111,0x0131,0x0131,0x0110,0x0110,0x0131,0x0110,0x0110,0x0130,0x0130,0x0131,0x0131,0x0131,0x0130,0x0130,0x0131,0x0130,0x0110,0x0110,0x0110,0x0110,0x0131,0x0131,0x0131,0x0131,0x00F0,0x0110,0x0131,0x0110,0x0110,0x0110,0x0130,0x0110,0x0110,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x00F0,0x00F0,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x0131,0x0131,0x0110,0x0131,0x0110,0x0110,0x0130,0x0110,0x0110,0x0110,0x0130,0x0110,0x0131,0x0130,0x0110,0x0110,0x0131,0x0130,0x0110,0x0110,0x00EF,0x00F0,0x0130,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x0131,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x00F0,0x00F0,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x00F0,0x0110,0x00F0,0x00F0,0x0110,0x0110,0x00F0,0x0110,0x00F0,0x0110,0x0130,0x0110,0x00F0,0x0110,0x0130,0x0130,0x0110,0x00F0,0x00EF,0x00EF,0x0110,0x0110,0x0110,0x0110,0x010F,0x0110,0x00EF,0x00EF,0x0110,0x0110,0x00F0,0x00EF,0x00EF,0x00EF,0x00EF,0x00EF,0x00EF,0x00EF,0x00EF,0x0110,0x00F0,0x00F0,0x0110,0x00F0,0x00F0,0x00F0,0x00EF,0x00EF,0x00F0,0x00F0,0x00EF,0x00F0,0x00F0,0x0110,0x0110,0x0110,0x0110,0x00F0,0x0110,0x0110,0x00F0,0x00F0,0x0110,0x0110,0x0110,0x0110,0x00EF,0x00EF,0x00F0,0x00F0,0x00F0,0x0110,0x0930,0x0930,0x0110,0x0110,0x00EF,0x00EF,0x0110,0x0110,0x00EF,0x00EF,0x00EF,0x00EF,0x0110,0x00F0,0x00EF,0x00EF,0x00EF,0x00EF,0x00EF,0x00EF,0x00CF,0x00EF,0x0110,0x00EF,0x00EF,0x00EF,0x00EF,0x00EF,0x00F0,0x00F0,0x00F0,0x00F0,0x00EF,0x00EF,0x0110,0x0110,0x00EF,0x00F0,0x00F0,0x00EF,0x00EF,0x00EF,0x00F0,0x00F0,0x00EF,0x00EF,0x00EF,0x00EF,0x0130,0x010F,0x0110,0x0130,0x0130,0x0130,0x0130,0x0131,0x0110,0x0131,0x0971,0x0931,0x0910,0x0931,0x0910,0x0110,0x0930,0x0951,0x0110,0x0110,0x0131,0x0931,0x0131,0x0931,0x0951,0x0931,0x0931,0x0931,0x0931,0x0931,0x0931,0x0931,0x0931,0x0931,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0931,0x0931,0x0131,0x0931,0x0931,0x0931,0x0931,0x0951,0x0931,0x0951,0x0931,0x0931,0x0931,0x0951,0x0931,0x0931,0x0931,0x0931,0x0951,0x0951,0x0951,0x0951,0x0951,0x0951,0x0951,0x0131,0x0951,0x0951,0x0951,0x0951,0x0951,0x0951,0x0951,0x0951,0x0951,0x0951,0x0931,0x0951,0x0151,0x0130,0x0131,0x0110,0x0131,0x0951,0x0951,0x0130,0x0931,0x0951,0x0951,0x0110,0x0931,0x0931,0x0931,0x0951,0x0151,0x0131,0x0131,0x0951,0x0951,0x0951,0x0951,0x0952,0x0131,0x0951,0x0951,0x0951,0x0131,0x0931,0x0931,0x0951,0x0951,0x0131,0x0931,0x0931,0x0931,0x0931,0x0931,0x0951,0x0951,0x0931,0x0931,0x0131,0x0131,0x0131,0x0131,0x0951,0x0951,0x0931,0x0931,0x0952,0x0952,0x0932,0x0931,0x0931,0x0931,0x0952,0x0952,0x0972,0x0972,0x0131,0x0151,0x0951,0x0131,0x0951,0x0951,0x0110,0x0111,0x1172,0x0952,0x0952,0x0952,0x1172,0x1172,0x1172,0x1172,0x1172,0x1172,0x1152,0x1152,0x1152,0x1152,0x1172,0x1152,0x1172,0x1172,0x1152,0x1172,0x1172,0x1172,0x1992,0x1992,0x19B3,0x1993,0x2193,0x2193,0x21B3,0x21B3,0x2193,0x21B3,0x21B3,0x29B4,0x29D4,0x29D4,0x29D4,0x31D4,0x31F4,0x31D4,0x39F4,0x39F4,0x4215,0x41F5,0x49F5,0x49F5,0x51F5,0x59F5,0x6215,0x71F5,0x79F4,0x89F4,0x9214,0x99F4,0xA1D3,0xA9F3,0xA9D3,0xA9F3,0xA9D3,0xA9F3,0xA9B3,0xA9D3,0xA9F3,0xA9F3,0xAA34,0x9A34,0x8A33,0x7A73,0x49F0,0x5394,0x9F7F,0x66DD,0x4EDC,0x46DB,0x46BB,0x569B,0x6E9C,0x5CB7,0x5AB2,0x8293,0x8A12,0x99F3,0xAA14,0xAA14,0xA1B3,0xA9D4,0xA9D4,0xAA14,0xA215,0x9A35,0x8A14,0x8234,0x5172,0x4172,0x3993,0x3193,0x21B3,0x21B3,0x19B3,0x19B3,0x19B3,0x11B3,0x11B3,0x11B3,0x1193,0x1173,0x1173,0x1173,0x1173,0x0972,0x0972,0x0952,0x0951,0x0951,0x0951,0x0952,0x0952,0x0952,0x0952,0x0952,0x0932,0x0931,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0151,0x0131,0x0131,0x0131,0x0131,0x0111,0x0111,0x0111,0x0131,0x0130,0x0110,0x0130,0x0130,0x0130,0x0131,0x0131,0x0131,0x0111,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0111,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0151,0x0131,0x0111,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0111,0x0131,0x0111,0x0131,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x0131,0x0131,0x0111,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0131,0x0111,0x0111,0x0111,0x0131,0x0131,0x0131,0x0111,0x0131,0x0111,0x0111,0x0131,0x0131,0x0131,0x0131,0x0131,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0110,0x00F0,0x0110,0x0110,0x0111,0x0111,0x0111,0x0111,0x0111,0x0110,0x0111,0x0111,0x0110,0x0110,0x00F0,0x0110,0x00F0,0x0110,0x0110,0x0110,0x0110,0x0110,0x0110,0x0111,0x0110,0x0110,0x0110,0x00F0,0x0110,0x0111,0x00F0,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x0111,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x0110,0x0110,0x0110,0x0110,0x0111,0x0111,0x0110,0x00F0,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00EF,0x00EF,0x00EF,0x00EF,0x00EF,0x00F0,0x00EF,0x00F0,0x00EF,0x00CF,0x00EF,0x00F0,0x00CF,0x00D0,0x00CF,0x00F0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00EF,0x00EF,0x010F,0x010F,0x00EF,0x00EF,0x00EF,0x00EF, + 0x00CE,0x00CE,0x00CE,0x00AE,0x00AD,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x00AD,0x008D,0x008D,0x008D,0x006D,0x008C,0x008D,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00CD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00CE,0x00CE,0x00CD,0x00CE,0x00CE,0x00CE,0x00CD,0x00CD,0x00CD,0x00EE,0x00EE,0x00EE,0x00EE,0x00CE,0x00EE,0x00CE,0x00CE,0x00CE,0x00CE,0x00CE,0x00CE,0x00CE,0x00CE,0x00AE,0x00AE,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00CE,0x00CE,0x00CE,0x00CE,0x00CE,0x00CE,0x00EE,0x00EE,0x00EE,0x00EE,0x00EE,0x00EE,0x00EE,0x00CD,0x00ED,0x00CD,0x00CD,0x00CD,0x00CD,0x00CD,0x00CD,0x00CE,0x00CD,0x00CD,0x00EE,0x00CD,0x00CD,0x00CD,0x00EE,0x00CE,0x00EE,0x00EE,0x00EE,0x00EE,0x00CE,0x00CE,0x00CE,0x00EE,0x00CE,0x00CE,0x00CE,0x00CD,0x00AD,0x00CD,0x00CE,0x00CE,0x00CE,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00CE,0x00CE,0x00CD,0x00CE,0x00CE,0x00EE,0x010E,0x010F,0x012F,0x012F,0x014F,0x0170,0x0170,0x0170,0x0170,0x0171,0x0191,0x01B1,0x01B1,0x01B2,0x01D2,0x01B2,0x01B2,0x01B2,0x01D2,0x01D2,0x01D2,0x01B3,0x01B2,0x01B2,0x01B3,0x01B2,0x01B2,0x01D2,0x01D2,0x01D2,0x01D2,0x01F2,0x01F2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D3,0x01D3,0x01D3,0x01D3,0x01D3,0x01D2,0x01D2,0x01D2,0x01D2,0x01D3,0x01D2,0x01D2,0x01D3,0x01D3,0x01D2,0x01F3,0x01D3,0x01F3,0x01F3,0x01F2,0x01F2,0x01D2,0x01D2,0x01D2,0x01F2,0x01F3,0x01F3,0x01F2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01F2,0x01D2,0x01F2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01F2,0x01F3,0x01F3,0x01F2,0x01D2,0x01F3,0x01F2,0x01F3,0x01F2,0x01F3,0x01F3,0x01F2,0x01F2,0x0213,0x0213,0x01F2,0x01F2,0x01D2,0x01F3,0x0233,0x0213,0x01F3,0x01F3,0x01F2,0x01F2,0x01F2,0x01F3,0x01D2,0x01F2,0x01F2,0x01F2,0x0213,0x0213,0x01F2,0x01D2,0x01D2,0x01D2,0x01D2,0x01F2,0x0212,0x0213,0x0213,0x0213,0x01F3,0x01F3,0x01D2,0x01D2,0x01F3,0x01F2,0x01F2,0x01F2,0x01F2,0x01F2,0x01D2,0x01F2,0x01F2,0x01F2,0x01F2,0x01F2,0x01F3,0x01F3,0x01F2,0x01F2,0x01F2,0x01F3,0x01F2,0x01F2,0x01F2,0x01F2,0x01F2,0x0213,0x01F2,0x01F3,0x0213,0x01F3,0x01F2,0x0212,0x01F2,0x0212,0x0212,0x0213,0x01F2,0x0233,0x0A54,0x0233,0x01D2,0x01F3,0x01F2,0x0212,0x0212,0x0213,0x01F2,0x01F2,0x0213,0x0A33,0x0213,0x0A33,0x01F2,0x0212,0x0212,0x0212,0x01F2,0x0212,0x0212,0x0213,0x0A33,0x0A33,0x01F2,0x0212,0x01F2,0x0A12,0x0A13,0x0A13,0x01F2,0x0212,0x0212,0x0212,0x01F2,0x0212,0x01F2,0x0212,0x0212,0x0A13,0x01F2,0x0212,0x0212,0x0A13,0x01F2,0x0A13,0x0212,0x0212,0x0212,0x0212,0x01F2,0x0A12,0x0A12,0x0A12,0x0212,0x0A12,0x0A12,0x0A32,0x0A12,0x0A13,0x0A13,0x0A13,0x0A12,0x0A13,0x0A13,0x0A13,0x0A13,0x0A33,0x0A13,0x0A13,0x01F2,0x0A13,0x0A13,0x0A33,0x0A33,0x0A33,0x0A12,0x0A12,0x0A33,0x0A33,0x0212,0x0A53,0x0A33,0x0A53,0x0A53,0x0A33,0x0A33,0x0A33,0x0A33,0x0A33,0x0A33,0x0A33,0x0A33,0x0A53,0x0A32,0x0A33,0x0A32,0x0A32,0x0A32,0x0A33,0x0A12,0x0A33,0x0A32,0x0A33,0x0A33,0x0A33,0x0A33,0x1233,0x0A33,0x1253,0x0A32,0x0A33,0x0A12,0x1233,0x1233,0x1233,0x1233,0x1253,0x1233,0x1253,0x1233,0x1253,0x1233,0x1253,0x1233,0x1253,0x0A33,0x1233,0x1233,0x0A12,0x0A12,0x1232,0x1233,0x1233,0x1233,0x1253,0x1253,0x1253,0x0A33,0x0A33,0x0A33,0x1253,0x0A53,0x1253,0x0A33,0x1253,0x1233,0x1253,0x1233,0x1253,0x1212,0x1233,0x1233,0x1253,0x0A12,0x1253,0x1233,0x1253,0x1253,0x1253,0x0A33,0x1253,0x1233,0x1253,0x1253,0x1253,0x1253,0x1273,0x1253,0x1253,0x1253,0x1253,0x1253,0x1253,0x1253,0x1273,0x1253,0x1253,0x1253,0x1273,0x1253,0x1273,0x1253,0x1273,0x1253,0x1273,0x0A53,0x1273,0x0A53,0x0A53,0x0A33,0x0A33,0x0A12,0x0A33,0x1253,0x1233,0x01B1,0x0A12,0x1233,0x1253,0x1274,0x0A33,0x0212,0x1253,0x1274,0x0A33,0x01D1,0x0A12,0x0A12,0x1213,0x0A12,0x0A13,0x0A12,0x0A33,0x0A12,0x0A33,0x0A33,0x0A33,0x0A32,0x0A53,0x0A33,0x0A53,0x0A33,0x1253,0x0A33,0x0A33,0x0A33,0x0A33,0x0A33,0x0A33,0x0A13,0x0A13,0x0A12,0x0A33,0x0A33,0x0A33,0x0A12,0x0A33,0x0A33,0x0A33,0x0A13,0x0A33,0x0A33,0x0A33,0x0A12,0x0A33,0x0A33,0x0A33,0x0A33,0x0A33,0x0A33,0x1233,0x0A12,0x0A33,0x0A33,0x1233,0x09F2,0x0A12,0x0A12,0x0A12,0x0A32,0x0A33,0x0A12,0x0A33,0x0A12,0x0A12,0x0A13,0x1254,0x1254,0x0A33,0x0A12,0x1253,0x1233,0x0A33,0x09F2,0x0A13,0x0A33,0x0A53,0x0A33,0x0A33,0x0A12,0x0A13,0x0A33,0x0A33,0x0A13,0x0A13,0x0A13,0x0A33,0x0212,0x0A13,0x0A12,0x0A12,0x0A12,0x0A13,0x01F2,0x0212,0x01F2,0x01F2,0x01F2,0x01F2,0x01F2,0x0A13,0x0A13,0x0A13,0x01F2,0x0A12,0x0212,0x0A13,0x0A13,0x0A33,0x0A13,0x0A33,0x0A13,0x0A33,0x0A13,0x0A33,0x0A13,0x0A13,0x09F3,0x0A13,0x0A54,0x0A54,0x0A33,0x0A33,0x0212,0x0A33,0x0A33,0x0A33,0x01F2,0x01F2,0x01D2,0x0A13,0x1254,0x0A33,0x01D2,0x0A13,0x1234,0x0A34,0x09F3,0x0A13,0x0A13,0x0A13,0x09F2,0x09F3,0x09F3,0x0A13,0x1213,0x1233,0x1213,0x1213,0x0A12,0x1213,0x1213,0x1233,0x1213,0x1233,0x1213,0x1A33,0x11F2,0x1A13,0x1A13,0x1A13,0x19F3,0x1A13,0x1A13,0x2234,0x2234,0x2234,0x1A13,0x2233,0x2213,0x2213,0x21F2,0x2A13,0x29F3,0x29F3,0x29B2,0x29B2,0x2971,0x3992,0x4171,0x5191,0x6171,0x8234,0x9214,0x9A14,0xA1F4,0xA9F3,0xA9D3,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xB214,0xA9F3,0xA213,0x9213,0x8232,0x6A53,0x298E,0x7D9B,0x871F,0x567B,0x4EBB,0x4EDC,0x4E9B,0x667C,0x6539,0x52F2,0x7272,0x8A12,0x9A13,0xA1F3,0xA9F4,0xA1B3,0xA9B3,0xA9F4,0xAA14,0xA1F4,0xA235,0x8A14,0x79F3,0x4130,0x20CE,0x10EF,0x1150,0x0971,0x09B1,0x0191,0x01B1,0x0191,0x01B1,0x01B1,0x01D2,0x01B2,0x01B2,0x01B2,0x01B2,0x01B2,0x01B2,0x01B2,0x01B1,0x01B1,0x01B2,0x01B2,0x01D2,0x01D2,0x01D2,0x01D2,0x01B2,0x01B2,0x01B2,0x01B2,0x0192,0x01B2,0x01D2,0x01F2,0x01F3,0x01D2,0x01D2,0x01D2,0x01F3,0x01D3,0x01D2,0x01D2,0x01D2,0x01B2,0x01D2,0x01D2,0x01F2,0x01F2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01F3,0x01F3,0x01F2,0x01F2,0x01F2,0x01F2,0x01D2,0x01D2,0x01D2,0x01F2,0x01D2,0x01D3,0x01D2,0x01D3,0x01D3,0x01D3,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01B2,0x01B2,0x01D2,0x01D3,0x01F3,0x01D3,0x01B2,0x01B2,0x01B2,0x01B2,0x01D3,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D3,0x01D2,0x01D2,0x01D2,0x01D2,0x01D2,0x01D3,0x01D3,0x01B3,0x01B2,0x01B3,0x01D3,0x01D3,0x01D2,0x01D2,0x01D3,0x01D3,0x01B2,0x01B2,0x01B2,0x01D2,0x01B2,0x01B2,0x01D2,0x01D2,0x01B2,0x01B2,0x01B2,0x01B2,0x01B2,0x01D3,0x01D3,0x01D3,0x01B2,0x01D3,0x01B2,0x01D2,0x01B2,0x01B2,0x01B2,0x01B2,0x0192,0x0192,0x0192,0x0192,0x0192,0x01B2,0x01B2,0x01B2,0x0192,0x0192,0x0192,0x0191,0x0191,0x0192,0x0172,0x0192,0x0192,0x01B2,0x01B2,0x01B2,0x01B2,0x01B2,0x0192,0x0191,0x0191,0x0192,0x0192,0x01B2,0x01B2,0x01B2,0x01B2,0x01B2,0x01B2,0x0192,0x01B2,0x01B2,0x0192,0x0171,0x0171,0x0191,0x0171,0x0191,0x0191,0x0192,0x0192,0x0192,0x0192,0x0191,0x0191,0x0191,0x0171,0x0171,0x0171,0x0192,0x0171,0x0172,0x0171,0x0171,0x0171,0x0171,0x0171,0x0171,0x0171,0x0171,0x0171,0x0171,0x0171,0x0171,0x0171,0x0151,0x0171,0x0171,0x0151,0x0171,0x0151,0x0151,0x0151,0x0171,0x0171,0x0171,0x0191,0x0191,0x0171,0x0171,0x0171,0x0191,0x0171,0x0171,0x0171,0x0191,0x0171,0x0171,0x0171,0x0171,0x0151,0x0171,0x0171,0x0171,0x0151,0x0191,0x0171,0x0191,0x0171,0x0191,0x0171,0x0171,0x0171,0x0171,0x0171,0x0151,0x0150,0x0150,0x0151,0x0151,0x0151,0x0171,0x0151,0x0171,0x0151,0x0151,0x0170,0x0170,0x0170,0x0171,0x0171,0x0191,0x0170,0x0190,0x0170,0x0170,0x0150,0x0170, + 0x4CDD,0x551E,0x4CDD,0x4CDE,0x54FE,0x551E,0x54FE,0x551E,0x551E,0x54FE,0x551E,0x5D1E,0x5D1E,0x5D3E,0x5D1E,0x551E,0x54FD,0x54DD,0x54DD,0x4CDC,0x4CBC,0x4CBC,0x4CDC,0x4CBC,0x4CDC,0x4CBC,0x54FD,0x54DD,0x54DD,0x54FD,0x54DD,0x54DD,0x54DC,0x4CBC,0x4C9C,0x4CBC,0x4CBC,0x4CDD,0x54FD,0x54DD,0x4CFD,0x54FD,0x54DD,0x4CDD,0x4CDD,0x54FD,0x54FD,0x54DD,0x54FD,0x5CFD,0x54FD,0x54FD,0x54DD,0x54FD,0x54DD,0x54DD,0x54FD,0x54FD,0x54FD,0x54FD,0x551D,0x551D,0x54FD,0x5D3E,0x551E,0x5D1E,0x551D,0x54FD,0x54FD,0x5D1E,0x551E,0x5D1E,0x551E,0x551E,0x551E,0x5D3E,0x551E,0x551E,0x551E,0x54FD,0x551E,0x551E,0x54FD,0x54FD,0x54FD,0x54DD,0x54FD,0x54FD,0x5D1D,0x5D1D,0x5D3E,0x5D3E,0x5D3E,0x551E,0x5D3E,0x5D3E,0x551D,0x551D,0x551D,0x551D,0x553E,0x5D3E,0x5D5F,0x5D3E,0x5D5E,0x5D5E,0x5D5E,0x657E,0x5D5E,0x5D5E,0x5D5E,0x5D5E,0x5D5E,0x5D5E,0x5D5E,0x655E,0x5D5E,0x655E,0x655E,0x657E,0x655E,0x655E,0x655E,0x655E,0x655E,0x655E,0x655E,0x5D5E,0x5D5E,0x655E,0x5D5E,0x5D3E,0x5D1E,0x5D3E,0x5D1E,0x655E,0x5D3E,0x655E,0x657E,0x657F,0x657E,0x657F,0x5D5E,0x5D5E,0x5D3E,0x5D3E,0x655E,0x5D5E,0x657E,0x5D7E,0x5D3D,0x551D,0x553D,0x5D5E,0x5D5E,0x5D5E,0x5D3D,0x551D,0x54FD,0x4CFD,0x553D,0x555E,0x557E,0x559F,0x559F,0x5DBF,0x5DBF,0x55BF,0x55BF,0x55BF,0x559F,0x55BF,0x559F,0x55BF,0x559F,0x559F,0x559F,0x55BF,0x559F,0x559F,0x559F,0x55BF,0x559F,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x55DF,0x55DF,0x55DF,0x55BF,0x55BF,0x559F,0x55BF,0x559F,0x559F,0x559F,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x4D9F,0x55BF,0x55BF,0x55DF,0x55DF,0x55DF,0x55DF,0x55DF,0x55DF,0x55DF,0x55DF,0x55BF,0x55BF,0x55DF,0x5DFF,0x5DFF,0x55BF,0x5DDF,0x55DF,0x5DDF,0x5DDF,0x5DDF,0x5DDF,0x5DFF,0x5DDF,0x5DFF,0x5DDF,0x5DDF,0x5DDF,0x5DDF,0x5DDF,0x5DDF,0x5DDF,0x5DDF,0x5DDF,0x5DDF,0x5DDF,0x5DDF,0x5DDF,0x5DFF,0x5DDF,0x5DFF,0x5DFF,0x5DFF,0x5DFF,0x5DFF,0x5DFF,0x5DFF,0x5DFF,0x5DFF,0x55DF,0x5DFF,0x55DF,0x5DDF,0x5DFF,0x5DFF,0x5DDF,0x65FF,0x5DDF,0x5DDF,0x5DDF,0x5DDF,0x5DFF,0x661F,0x5DBF,0x55BF,0x5DFF,0x661F,0x663F,0x663F,0x5DFF,0x5DFF,0x5DDF,0x5DDF,0x5DFF,0x5DFF,0x5DFF,0x5DFF,0x5DFF,0x661F,0x661F,0x661F,0x65FF,0x661F,0x661F,0x663F,0x661F,0x661F,0x661F,0x663F,0x661F,0x661F,0x661F,0x661F,0x661F,0x663F,0x661F,0x661F,0x661F,0x661F,0x661F,0x663F,0x661F,0x663F,0x661F,0x663F,0x661F,0x663F,0x661F,0x663F,0x663F,0x6E3F,0x663F,0x663F,0x5DFF,0x65FF,0x65FF,0x661F,0x663F,0x663F,0x661F,0x661F,0x661F,0x65FF,0x661F,0x661F,0x663F,0x663F,0x6E3F,0x6E5F,0x6E5F,0x6E5F,0x665F,0x661F,0x661F,0x661F,0x6E3F,0x6E5F,0x6E3F,0x6E3F,0x6E1F,0x6E1F,0x6E1F,0x6E3F,0x6E3F,0x6E3F,0x6E3F,0x6E5F,0x6E3F,0x6E3F,0x6E3F,0x6E5F,0x6E3F,0x6E3F,0x6E5F,0x6E5F,0x6E3F,0x6E5F,0x6E5F,0x6E5F,0x6E3F,0x6E5F,0x6E5F,0x765F,0x765F,0x765F,0x765F,0x765F,0x765F,0x765F,0x6E5F,0x765F,0x765F,0x765F,0x6E3F,0x765F,0x763F,0x763F,0x6E3F,0x6E3F,0x6E3F,0x6E5F,0x6E3F,0x6E3F,0x6E3F,0x6E3F,0x765F,0x765F,0x6E3F,0x6E3F,0x6E3F,0x6E3F,0x6E5F,0x765F,0x765F,0x765F,0x765F,0x765F,0x765F,0x765F,0x763F,0x763F,0x765F,0x765F,0x765F,0x765F,0x765F,0x765F,0x765F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x7E9F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x765F,0x767F,0x767F,0x767F,0x765F,0x767F,0x765F,0x767F,0x765F,0x765F,0x765F,0x7E7F,0x765F,0x767F,0x765F,0x765F,0x6E3F,0x6E3F,0x763F,0x765F,0x6E3F,0x765F,0x6E5F,0x765F,0x767F,0x6E7F,0x767F,0x765F,0x767F,0x767F,0x7E9F,0x7E7F,0x7E7F,0x7E7F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x767F,0x767F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x767F,0x7E9F,0x7E9F,0x7EBF,0x767F,0x767F,0x7E7F,0x7E7F,0x765F,0x7E5F,0x7E7F,0x7E7F,0x765F,0x765F,0x661F,0x6E3F,0x767F,0x767F,0x765F,0x765F,0x765F,0x7E5F,0x765F,0x7E7F,0x7E7F,0x767F,0x767F,0x7E9F,0x7E9F,0x7E9F,0x767F,0x7E9F,0x7E9F,0x7E9F,0x7E9F,0x769F,0x7E9F,0x7E9F,0x7E9F,0x769F,0x767F,0x7E9F,0x767F,0x769F,0x767F,0x767F,0x767F,0x769F,0x767F,0x769F,0x767F,0x769F,0x767F,0x7E9F,0x767F,0x7E9F,0x7E7F,0x7E7F,0x767F,0x769F,0x767F,0x769F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x765F,0x765F,0x765F,0x767F,0x765F,0x767F,0x767F,0x767F,0x767F,0x6E7F,0x663F,0x663F,0x6E5F,0x6E5F,0x6E3F,0x6E5F,0x6E3F,0x765F,0x6E3F,0x6E3F,0x6E3F,0x6E3F,0x6E5F,0x765F,0x765F,0x765F,0x6E5F,0x765F,0x765F,0x765F,0x6E5F,0x765F,0x765F,0x767F,0x765F,0x765F,0x6E5F,0x765F,0x6E5F,0x765F,0x765F,0x765F,0x6E5F,0x6E5F,0x6E5F,0x765F,0x765F,0x765F,0x765F,0x765F,0x6E3F,0x765F,0x765F,0x767F,0x765F,0x765F,0x765F,0x767F,0x765F,0x765F,0x765F,0x765F,0x6E3F,0x6E3F,0x6E3F,0x6E5F,0x6E3F,0x6E5F,0x6E5F,0x6E5F,0x6E5F,0x6E5F,0x6E3F,0x6E3F,0x6E3F,0x6E3F,0x6E3F,0x763F,0x6E1F,0x6DFF,0x6E1F,0x6E3F,0x6E1F,0x763F,0x6E1F,0x763F,0x6E3F,0x763F,0x6E3F,0x763F,0x763F,0x763F,0x763F,0x763F,0x763F,0x7E5F,0x763F,0x7E5F,0x7E3F,0x7E5F,0x7E3F,0x7E5F,0x7E3F,0x7E5F,0x865F,0x865F,0x863F,0x865F,0x865F,0x865F,0x865F,0x865F,0x865F,0x8E7F,0x8E5F,0x8E7F,0x8E7F,0x967F,0x965F,0x967F,0x9E5F,0x9E5F,0x9E3F,0xA63F,0xAE3F,0xB63F,0xB5FF,0xA4BC,0x59B1,0x71F3,0x9234,0x9A14,0xA214,0xA1F3,0xA9F3,0xA9F3,0xB1F4,0xA9D3,0xA9B3,0xA9D3,0xA9F3,0xA1F3,0xA233,0x9253,0x8253,0x5A31,0x21EE,0x969F,0x6E9D,0x569C,0x4E9B,0x56BB,0x667B,0x7E1C,0x52F2,0x6A72,0x8212,0x9A13,0xA1F3,0xA1D3,0xA9F4,0xA9F4,0xA9B3,0xA9F4,0xA1F4,0x99F4,0x9234,0x69B1,0xBD3E,0xBE1F,0x95DF,0x85DF,0x7DFF,0x6DDF,0x6DFF,0x6DFF,0x6E1F,0x6E1F,0x661F,0x6E1F,0x6E1F,0x6DFF,0x65FF,0x65FF,0x65DF,0x65FF,0x65FF,0x661F,0x661F,0x661F,0x5DDF,0x55DF,0x55BF,0x55BF,0x55BF,0x5DDF,0x5DDF,0x5DDF,0x5DBF,0x5DDF,0x5DDF,0x5DDF,0x5DFF,0x5DFF,0x55BF,0x55BF,0x5DDF,0x5DFF,0x5DDF,0x5DFF,0x5DDF,0x5DFF,0x5DDF,0x5DDF,0x5DDF,0x5DFF,0x55DF,0x55DF,0x55BF,0x55DF,0x5DDF,0x5DDF,0x55DF,0x5DDF,0x55BF,0x5DDF,0x55DF,0x5DDF,0x55BF,0x5DDF,0x55DF,0x55DF,0x55DF,0x5DDF,0x55DF,0x5DDF,0x55BF,0x55DF,0x5DFF,0x5DFF,0x55DF,0x55DF,0x55BF,0x55DF,0x55BF,0x55BF,0x4DBF,0x55BF,0x55BF,0x55BF,0x4DBF,0x4DBF,0x4D9F,0x4D9F,0x4D9F,0x4DBF,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x55BF,0x4DBF,0x4DBF,0x4D9F,0x4D9F,0x4D9F,0x55BF,0x4DBF,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x4D9F,0x4D9F,0x4D9F,0x559F,0x4D9F,0x559F,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x4D7F,0x4D7F,0x4D7F,0x557F,0x4D7F,0x4D7F,0x4D7F,0x4D7F,0x4D7F,0x4D7F,0x4D5F,0x4D7F,0x455E,0x455E,0x457F,0x457F,0x4D9F,0x4D9F,0x457F,0x4D9F,0x457F,0x4D7F,0x4D7F,0x4D9F,0x4D7F,0x4D7F,0x4D5F,0x4D5F,0x4D5E,0x453E,0x455E,0x453E,0x453E,0x453E,0x453E,0x453E,0x453E,0x453E,0x453E,0x453E,0x455E,0x455F,0x455F,0x455F,0x455F,0x4D7F,0x453E,0x4D5F,0x455E,0x4D7F,0x4D7F,0x4D7F,0x4D7F,0x457F,0x455F,0x457F,0x455F,0x455E,0x455E,0x455E,0x455E,0x4D7F,0x4D5E,0x4D5E,0x455E,0x453E,0x455E,0x455E,0x453E,0x455E,0x453E,0x453E,0x453E,0x453E,0x453E,0x453E,0x453E,0x453E,0x3D1D,0x3D1D,0x3CFD,0x3CFD,0x3D1D,0x3D1D,0x3D1D,0x3D3E,0x453E,0x453E,0x3D3E,0x3D3E,0x453E,0x451E,0x451D,0x451D,0x451E,0x451D,0x3CFD,0x3CFD,0x3CDD,0x3CDD,0x3CFD,0x3CFD,0x3D1E,0x3D1E,0x3D3E,0x3D3E,0x3D1D,0x3D3E,0x453E,0x455E,0x453E,0x455E,0x453E,0x455E,0x453F,0x453E,0x451E,0x453E,0x453E,0x451E,0x451E,0x451E,0x451E,0x453E,0x453E,0x453E,0x453E,0x453E,0x451E,0x453E,0x451E,0x453E,0x451E,0x453E,0x453E,0x453E,0x453E,0x453E,0x3D1E,0x453E,0x3CFD,0x3D1E,0x3CFD,0x3D1E,0x453E,0x453E,0x453E,0x455E,0x455E,0x457F,0x455E,0x455E,0x455E,0x453E,0x3D1D,0x3D1D, + 0x3D5F,0x3D3F,0x3D3F,0x3D3F,0x3D3F,0x3D3F,0x3D3F,0x3D5F,0x457F,0x455F,0x457F,0x455F,0x4D9F,0x457F,0x457F,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x4DBF,0x4DDF,0x4DDF,0x55DF,0x55FF,0x55FF,0x4DBF,0x4D9F,0x457F,0x457F,0x457F,0x4DBF,0x4DBF,0x55DF,0x4DBF,0x4D9F,0x4D9F,0x4D9F,0x457F,0x457F,0x3D5E,0x3D5E,0x3D5E,0x3D5F,0x457F,0x459F,0x4D9F,0x4DBF,0x4DBF,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x55BF,0x4DBF,0x4DBF,0x4DBF,0x4DBF,0x4DBF,0x4D9F,0x4D9F,0x4DBF,0x4DBF,0x4D9F,0x459F,0x459F,0x457F,0x457F,0x4D9F,0x4DBF,0x4D9F,0x4DBF,0x459F,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x4D9F,0x4DBF,0x4DBF,0x55DF,0x55FF,0x561F,0x55FF,0x4DDF,0x4DDF,0x4DDF,0x4DBF,0x4DDF,0x55FF,0x55FF,0x4DDF,0x4DBF,0x459F,0x459F,0x457F,0x457F,0x459F,0x459F,0x4DBF,0x4DDF,0x4DDF,0x55DF,0x55FF,0x55DF,0x55DF,0x55DF,0x55FF,0x55FF,0x55FF,0x55DF,0x55FF,0x55FF,0x55DF,0x55DF,0x55FF,0x55FF,0x55DF,0x55DF,0x55DF,0x55DF,0x55DF,0x55FF,0x55FF,0x55FF,0x55DF,0x55DF,0x55DF,0x55DF,0x5DFF,0x5E1F,0x5E1F,0x5E1F,0x55FF,0x55FF,0x561F,0x561F,0x55FF,0x561F,0x5E3F,0x5E3F,0x5E3F,0x5E3F,0x5E3F,0x5E3F,0x5E3F,0x561F,0x561F,0x561F,0x55FF,0x561F,0x561F,0x55FF,0x55FF,0x4DFF,0x4DFF,0x4DFF,0x4E1F,0x4DFF,0x4E1F,0x4E1F,0x4E1F,0x461F,0x461F,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E3F,0x4E3F,0x4E1F,0x4E1F,0x4E3F,0x461F,0x461F,0x45FF,0x45DF,0x45DF,0x45DF,0x45FF,0x45FF,0x461F,0x4E1F,0x461F,0x45FF,0x45FF,0x45FF,0x45FF,0x461F,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x461F,0x461F,0x461F,0x4E3F,0x463F,0x461F,0x461F,0x461F,0x461F,0x461F,0x461F,0x461F,0x4E3F,0x4E3F,0x4E1F,0x461F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x561F,0x563F,0x563F,0x563F,0x563F,0x563F,0x4E1F,0x563F,0x563F,0x563F,0x563F,0x563F,0x563F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E3F,0x4E3F,0x4E3F,0x461F,0x45FF,0x45FF,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x561F,0x4E1F,0x563F,0x4E1F,0x4DFF,0x4E1F,0x4E3F,0x563F,0x4E3F,0x563F,0x565F,0x565F,0x565F,0x4E3F,0x461F,0x461F,0x45FF,0x4E1F,0x4E3F,0x4E3F,0x4DFF,0x4E1F,0x4E1F,0x563F,0x563F,0x563F,0x563F,0x565F,0x565F,0x565F,0x563F,0x565F,0x565F,0x563F,0x565F,0x565F,0x565F,0x565F,0x565F,0x565F,0x565F,0x565F,0x565F,0x565F,0x565F,0x565F,0x565F,0x565F,0x565F,0x565F,0x567F,0x565F,0x563F,0x565F,0x565F,0x565F,0x563F,0x4E1F,0x4DFF,0x561F,0x561F,0x563F,0x563F,0x563F,0x565F,0x565F,0x565F,0x563F,0x563F,0x563F,0x565F,0x565F,0x563F,0x565F,0x565F,0x567F,0x565F,0x565F,0x4E3F,0x563F,0x563F,0x5E5F,0x5E7F,0x5E5F,0x5E5F,0x5E5F,0x5E5F,0x5E5F,0x5E5F,0x5E5F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E5F,0x5E5F,0x5E5F,0x5E5F,0x5E7F,0x5E7F,0x5E5F,0x5E5F,0x5E7F,0x5E7F,0x5E5F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E5F,0x5E5F,0x5E5F,0x5E5F,0x667F,0x5E5F,0x5E5F,0x5E5F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E5F,0x5E5F,0x5E5F,0x5E5F,0x5E5F,0x5E5F,0x5E5F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E5F,0x665F,0x665F,0x665F,0x5E5F,0x665F,0x5E5F,0x5E5F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E5F,0x5E7F,0x667F,0x5E5F,0x5E7F,0x667F,0x5E5F,0x5E5F,0x5E7F,0x667F,0x5E5F,0x5E5F,0x5E5F,0x667F,0x5E5F,0x665F,0x665F,0x665F,0x665F,0x667F,0x665F,0x665F,0x5E5F,0x5E5F,0x667F,0x667F,0x667F,0x669F,0x667F,0x669F,0x669F,0x669F,0x669F,0x5E7F,0x5E5F,0x5E5F,0x5E7F,0x667F,0x669F,0x5E9F,0x5E9F,0x5E9F,0x669F,0x669F,0x669F,0x669F,0x6E9F,0x6E9F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x667F,0x667F,0x667F,0x667F,0x667F,0x669F,0x667F,0x667F,0x667F,0x669F,0x667F,0x667F,0x667F,0x667F,0x667F,0x669F,0x667F,0x669F,0x669F,0x669F,0x667F,0x669F,0x667F,0x667F,0x667F,0x669F,0x667F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x66BF,0x6EBF,0x669F,0x6E9F,0x6EBF,0x6E9F,0x6E9F,0x6E9F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x6E9F,0x6EBF,0x6EBF,0x6EBF,0x6E9F,0x6E9F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x667F,0x667F,0x667F,0x667F,0x667F,0x667F,0x667F,0x667F,0x667F,0x667F,0x667F,0x669F,0x667F,0x669F,0x667F,0x669F,0x667F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x669F,0x667F,0x669F,0x667F,0x667F,0x667F,0x669F,0x667F,0x669F,0x669F,0x667F,0x667F,0x669F,0x66BF,0x66BF,0x5E9F,0x5E9F,0x5E7F,0x5E7F,0x5E7F,0x669F,0x669F,0x667F,0x669F,0x667F,0x5E5F,0x667F,0x5E7F,0x669F,0x5E7F,0x5E7F,0x5E7F,0x667F,0x667F,0x667F,0x667F,0x669F,0x667F,0x669F,0x669F,0x669F,0x669F,0x667F,0x5E7F,0x667F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x5E7F,0x667F,0x667F,0x667F,0x5E7F,0x5E7F,0x667F,0x5E5F,0x5E5F,0x5E5F,0x5E5F,0x5E5F,0x563F,0x5E5F,0x5E7F,0x5E9F,0x5E9F,0x567F,0x567F,0x5E7F,0x5E7F,0x669F,0x667F,0x667F,0x667F,0x667F,0x665F,0x665F,0x665F,0x667F,0x667F,0x665F,0x667F,0x667F,0x667F,0x667F,0x667F,0x6E7F,0x6E7F,0x6E7F,0x6E7F,0x6E7F,0x6E7F,0x6E7F,0x6E7F,0x6E7F,0x6E7F,0x6E7F,0x6E7F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x767F,0x769F,0x767F,0x7E9F,0x7E9F,0x869F,0x869F,0x867F,0x867F,0x8E7F,0x8E7F,0x965F,0x9E7F,0xA67F,0xAE7F,0xBE7F,0xBDBF,0x6213,0x7A13,0x9A35,0x99F3,0xA214,0xA1F3,0xA9D3,0xB1F4,0xA9D3,0xA9D3,0xA9B3,0xA9D3,0xA9F3,0xA213,0x9A33,0x9274,0x7A93,0x39CF,0x53B5,0x96FF,0x667C,0x567B,0x5E9B,0x5E5B,0x7E3C,0x5B74,0x6A92,0x8252,0x9212,0x99D2,0xA9F3,0xA9F4,0xA9D4,0xA9D3,0xA9D3,0xAA14,0x99F3,0x9A55,0x71F2,0xB51D,0xC6DF,0xA69F,0x8E9F,0x7E7F,0x6E7F,0x665F,0x667F,0x667F,0x667F,0x669F,0x669F,0x669F,0x667F,0x667F,0x667F,0x665F,0x667F,0x5E7F,0x5E7F,0x5E7F,0x567F,0x567F,0x567F,0x4E5F,0x4E5F,0x4E5F,0x4E3F,0x563F,0x563F,0x4E3F,0x565F,0x565F,0x565F,0x565F,0x563F,0x563F,0x4E3F,0x4E3F,0x4E3F,0x563F,0x563F,0x563F,0x4E3F,0x563F,0x563F,0x4E3F,0x4E3F,0x4E3F,0x4E1F,0x4E1F,0x4E1F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E5F,0x4E5F,0x4E3F,0x4E3F,0x4E3F,0x4E5F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x463F,0x463F,0x461F,0x461F,0x461F,0x463F,0x463F,0x463F,0x461F,0x461F,0x461F,0x461F,0x461F,0x461F,0x461F,0x461F,0x461F,0x3DFF,0x461F,0x461F,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x461F,0x461F,0x461F,0x4E3F,0x461F,0x461F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x461F,0x461F,0x4E1F,0x461F,0x4E1F,0x4E1F,0x4DFF,0x4DFF,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x461F,0x45FF,0x45FF,0x45FF,0x3DFF,0x3DFF,0x3DFF,0x3DFF,0x3DFF,0x3DDF,0x3DFF,0x3DDF,0x3DDF,0x3DDF,0x45DF,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x3DFF,0x45FF,0x461F,0x45FF,0x45FF,0x45FF,0x45FF,0x3DFF,0x3DFF,0x3DFF,0x3DFF,0x3DFF,0x45FF,0x3DFF,0x3DDF,0x3DDF,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x3DFF,0x3DFF,0x3DDF,0x3DDF,0x3DFF,0x3DFF,0x3DFF,0x3DFF,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x3DFF,0x3DFF,0x3DFF,0x3DFF,0x45FF,0x45FF,0x461F,0x461F,0x45FF,0x461F,0x45FF,0x45FF,0x45FF,0x45FF,0x3DFF,0x3DFF,0x3DFF,0x3DDF,0x3DDF,0x35DF,0x3DFF,0x3DFF,0x3E1F,0x3DFF,0x45FF,0x45FF,0x461F,0x461F,0x4E1F,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x3DFF,0x3DDF,0x3DDF,0x3DDF,0x3DFF,0x3DDF,0x3DFF,0x3DDF,0x3DFF,0x3DDF,0x3DFF,0x3DDF,0x3DFF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x3DBF,0x3DDF,0x3DBF,0x3DDF,0x3DDF,0x45DF,0x45DF,0x45DF,0x45DF,0x45DF,0x45DF,0x45DF,0x45DF,0x45FF,0x45DF,0x45FF,0x45FF,0x45FF,0x3DFF,0x3DFF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x3DBF,0x35BF,0x35BF,0x359F,0x359F,0x35BF, + 0x24FD,0x1CDD,0x1CBD,0x24DD,0x24DD,0x1CBD,0x24BD,0x24DD,0x24FD,0x24FE,0x2CFE,0x2CFE,0x2CFD,0x2D1D,0x2D1E,0x24FD,0x24FD,0x24FD,0x2D1E,0x2D1D,0x2D1D,0x251D,0x24FD,0x24FD,0x24DD,0x1CDC,0x1CDC,0x1CBC,0x1CDC,0x1CDC,0x1CBC,0x147B,0x1C9C,0x149B,0x149C,0x1CBC,0x251D,0x253E,0x2D5E,0x357F,0x2D7F,0x357F,0x2D3E,0x251E,0x251D,0x251D,0x251D,0x24FD,0x2D1E,0x2D1E,0x2CFD,0x2CFD,0x2D1D,0x2D1D,0x2CFD,0x2CFD,0x2D1D,0x2D1D,0x2D1D,0x251D,0x251D,0x251D,0x251D,0x24FD,0x2D1D,0x2D1D,0x2D1D,0x251D,0x2D1D,0x24FD,0x2D1E,0x2D1D,0x24FD,0x251D,0x24FD,0x24FD,0x2D1D,0x24FD,0x2D1E,0x2D3E,0x24FD,0x2D1D,0x2D3E,0x2D3E,0x2D3E,0x2D3E,0x251D,0x251D,0x24FC,0x24FC,0x251D,0x1CFC,0x251D,0x251D,0x1D1D,0x1CDC,0x1CDC,0x1CDC,0x251D,0x2D3E,0x357E,0x357F,0x357F,0x359F,0x2D5E,0x253E,0x251D,0x24FD,0x2D3D,0x2D3D,0x2D5E,0x2D5E,0x2D5E,0x2D5E,0x2D5E,0x2D5E,0x357E,0x357E,0x355E,0x355E,0x357E,0x355E,0x355E,0x355E,0x355E,0x355E,0x355E,0x355E,0x355E,0x357E,0x357E,0x2D5E,0x357E,0x355E,0x355E,0x355E,0x2D3D,0x355D,0x355E,0x355E,0x355E,0x2D5E,0x355E,0x357E,0x357E,0x359E,0x357E,0x357E,0x2D7E,0x2D7D,0x357E,0x2D7E,0x359E,0x359F,0x2D7E,0x2D5E,0x357E,0x2D5D,0x359E,0x359E,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x2D9E,0x2D9E,0x2D9E,0x2D9E,0x2D9F,0x35BF,0x35BF,0x359F,0x35BF,0x35BF,0x359F,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x2D9E,0x35BF,0x35DF,0x35DF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x359F,0x35BF,0x35BF,0x35DF,0x35FF,0x35BF,0x35BF,0x35BF,0x35BF,0x2DBE,0x2DBE,0x2D9E,0x2D9E,0x257E,0x257D,0x257D,0x257E,0x2DBF,0x35DF,0x3E1F,0x3DFF,0x35DF,0x35BF,0x35DF,0x35DF,0x35DF,0x35DF,0x35BF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x45DF,0x3DDF,0x3DDF,0x3DDF,0x45DF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x3DFF,0x3DDF,0x3DDF,0x3DDF,0x35DF,0x3DFF,0x3DFF,0x3DDF,0x35BF,0x3DFF,0x3DDF,0x3DDF,0x45FF,0x3DDF,0x3DBF,0x3DBF,0x3DBF,0x3DDF,0x3DFF,0x45FF,0x3DFF,0x3DDF,0x35BE,0x3DDF,0x35BE,0x35DE,0x35DF,0x35BE,0x2D7D,0x255D,0x2D9E,0x3DFF,0x461F,0x461F,0x3E1F,0x3DFF,0x3DFF,0x3DDF,0x3DFF,0x3DFF,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x461F,0x461F,0x45FF,0x45FF,0x461F,0x461F,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x461F,0x461F,0x461F,0x461F,0x461F,0x461F,0x45FF,0x461F,0x461F,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x461F,0x45FF,0x45FF,0x45FF,0x45FF,0x461F,0x461F,0x461F,0x45FF,0x3DFF,0x3DFF,0x3DFF,0x35DE,0x35DF,0x35BE,0x3DFF,0x461F,0x463F,0x463F,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x45FF,0x4E1F,0x461F,0x461F,0x461F,0x461F,0x461F,0x4E1F,0x4E3F,0x461F,0x461F,0x4E1F,0x4E1F,0x4E1F,0x461F,0x4E1F,0x461F,0x4E3F,0x461F,0x4E3F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E1F,0x4E1F,0x4E1F,0x4E3F,0x4E1F,0x4E3F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x461F,0x461F,0x4E1F,0x4E1F,0x4DFF,0x45FF,0x4DFF,0x4DFF,0x45FF,0x45FF,0x45FF,0x3DDF,0x45FF,0x45FF,0x4E1F,0x45FF,0x4E1F,0x4E1F,0x561F,0x561F,0x561F,0x561F,0x4E1F,0x4E1F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E1F,0x4E3F,0x4E3F,0x4E1F,0x4E1F,0x4E3F,0x4E3F,0x563F,0x563F,0x4E3F,0x4E1F,0x563F,0x4E1F,0x4E3F,0x4E3F,0x563F,0x4E3F,0x4E3F,0x563F,0x563F,0x563F,0x563F,0x563F,0x4E3F,0x4E1F,0x4DFF,0x45DF,0x4E1F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E3F,0x4E5F,0x4E3F,0x4E3F,0x4E1F,0x4DFF,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E3F,0x563F,0x4E1F,0x563F,0x563F,0x563F,0x563F,0x563F,0x4E3F,0x565F,0x563F,0x565F,0x565F,0x565F,0x565F,0x565F,0x4E3F,0x563F,0x563F,0x563F,0x563F,0x565F,0x565F,0x565F,0x4E3F,0x565F,0x565F,0x565F,0x563F,0x565F,0x565F,0x565F,0x565F,0x565F,0x565F,0x563F,0x4E3F,0x565F,0x565F,0x563F,0x563F,0x563F,0x563F,0x563F,0x563F,0x4E3F,0x4E1F,0x4E5F,0x4E5F,0x4E5F,0x4E3F,0x4E1F,0x4E1F,0x4E3F,0x563F,0x563F,0x4E1F,0x563F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x565F,0x565F,0x565F,0x565F,0x565F,0x565F,0x565F,0x563F,0x4E3F,0x4E3F,0x563F,0x563F,0x565F,0x4E3F,0x565F,0x565F,0x565F,0x4E3F,0x563F,0x563F,0x563F,0x563F,0x563F,0x563F,0x563F,0x563F,0x563F,0x563F,0x565F,0x563F,0x565F,0x563F,0x563F,0x563F,0x565F,0x565F,0x563F,0x563F,0x563F,0x563F,0x563F,0x4E1F,0x4E3F,0x565F,0x4E5F,0x4E3F,0x4E3F,0x461F,0x461F,0x461F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x4E3F,0x4E1F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E1F,0x4E3F,0x4E3F,0x4E3F,0x4E1F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E3F,0x4E5F,0x4E3F,0x4E1F,0x4E3F,0x4E1F,0x4E3F,0x4E1F,0x4E3F,0x4E3F,0x4E3F,0x4E1F,0x4E3F,0x4E1F,0x4E3F,0x4E1F,0x4E1F,0x4DFF,0x4E1F,0x4E1F,0x4E3F,0x461F,0x461F,0x463F,0x3E1F,0x3DFE,0x35DE,0x3DDE,0x3DFF,0x3DDE,0x3DBE,0x3DBE,0x45DF,0x45DF,0x45FF,0x4E1F,0x4E1F,0x4DFF,0x4DFF,0x4DFF,0x4E1F,0x4E1F,0x4E1F,0x4E1F,0x561F,0x561F,0x561F,0x561F,0x561F,0x561F,0x561F,0x561F,0x561F,0x561F,0x5E1F,0x5E1F,0x5E1F,0x5E1F,0x5E1F,0x5E1F,0x5E1F,0x5E1F,0x5E1F,0x5E1F,0x663F,0x663F,0x663F,0x663F,0x663F,0x663F,0x6E3F,0x6E3F,0x6E3F,0x6E3F,0x761F,0x761F,0x761F,0x7E1F,0x7E1F,0x85FF,0x8DDF,0x9DDF,0xB61F,0xCDFF,0x61B2,0x8214,0x9A34,0xA1F4,0x99D3,0xA9F3,0xA9D3,0xA9D3,0xA9B3,0xB1F3,0xA9D3,0xA9D3,0xA1D3,0xA233,0x9A54,0x8A94,0x7293,0x216D,0x7D9B,0x7E9D,0x5E3B,0x5E7B,0x663B,0x7E3C,0x6BF6,0x6271,0x8273,0x9232,0xA213,0xA9F3,0xA9F4,0xA9D4,0xA9D4,0xA9F4,0xA9F4,0xA214,0x9213,0x8233,0x72F5,0xA57F,0x857F,0x6DBF,0x65DF,0x5DDF,0x55DF,0x4DDF,0x4DFF,0x4DFF,0x4DFF,0x4DFF,0x4DFF,0x4DFF,0x4DFF,0x45DF,0x4DFF,0x4DFF,0x4DFF,0x45FF,0x45FF,0x461F,0x463F,0x463F,0x35BE,0x255D,0x2D9E,0x2DBE,0x35DF,0x35DF,0x35BF,0x35BF,0x359F,0x359E,0x35DF,0x35DF,0x3DDF,0x3DDF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x35BF,0x3DBF,0x35BF,0x35BF,0x3DBF,0x3DBF,0x3DDF,0x3DBF,0x3DDF,0x3DDF,0x3DDF,0x3DBF,0x3DDF,0x3DBF,0x3DDF,0x3DBF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x3DDF,0x35BF,0x3DDF,0x35DF,0x3DDF,0x35DF,0x35BF,0x35BF,0x35DF,0x35DF,0x3DDF,0x35DF,0x35DF,0x35DF,0x35FF,0x3E1F,0x3DFF,0x3DFF,0x3E1F,0x35FF,0x35FF,0x35DF,0x257D,0x1D5D,0x1D7D,0x1D7D,0x259E,0x259E,0x2D9E,0x259E,0x2DBF,0x2DBF,0x2DBF,0x2DBF,0x2DBE,0x2D9E,0x2DBF,0x2DBF,0x2D9F,0x2D9F,0x2D9F,0x2D9F,0x2D9F,0x2D9F,0x2D9E,0x2D9E,0x35BF,0x2D9F,0x35BF,0x35BF,0x2D9E,0x2D7E,0x359F,0x2D9F,0x35BF,0x2D9F,0x359F,0x359F,0x359F,0x359F,0x359F,0x359F,0x359F,0x2D9F,0x359F,0x35BF,0x359F,0x2D9F,0x2D9F,0x2D9F,0x35BF,0x35BF,0x2D9F,0x2D9F,0x2DBF,0x2D9F,0x2DBF,0x2DBF,0x2DDF,0x2DBF,0x2D9F,0x2D9F,0x253E,0x1CFD,0x1D1D,0x1D1D,0x255D,0x255E,0x255E,0x255E,0x255E,0x257E,0x257E,0x257E,0x259E,0x257E,0x2D9F,0x257E,0x257E,0x257E,0x257E,0x2D7F,0x255E,0x255E,0x255E,0x255E,0x257E,0x255E,0x257E,0x255E,0x257E,0x255E,0x255E,0x255E,0x255E,0x255E,0x255E,0x255E,0x2D7E,0x2D7E,0x2D7E,0x2D7E,0x2D9F,0x2D7F,0x2D9F,0x2D9F,0x257E,0x257E,0x257E,0x2D9F,0x2D7E,0x2D7E,0x2D7F,0x2D7E,0x2D7E,0x2D9E,0x2D9F,0x2D9F,0x2DBF,0x2DBF,0x2DBF,0x2DBF,0x259E,0x1D5E,0x151D,0x0CDC,0x0CDC,0x0CDC,0x14FC,0x1CFC,0x1D1D,0x1CFD,0x1D1D,0x1CFD,0x1D1D,0x253D,0x257E,0x255E,0x257E,0x257E,0x255E,0x1D3E,0x1D3E,0x1D3D,0x255E,0x255E,0x1D3D,0x1D3D,0x1D3D,0x1D1D,0x1D1D,0x1D1D,0x1D1D,0x1D1D,0x251E,0x253E,0x253E,0x253E,0x253E,0x253E,0x251E,0x251E,0x251E,0x251E,0x251E,0x1CFE,0x251E,0x251E,0x253E,0x253E,0x253E,0x253E,0x253E,0x253E,0x253E,0x253E,0x1D1E,0x1D1E,0x253E,0x255F,0x2D9F,0x2D9F,0x2D9F,0x2D7F,0x257E,0x255E,0x1D1D,0x14FD,0x14DD,0x0C9C,0x047B,0x047B,0x047B,0x047B, + 0x145C,0x145C,0x0C3B,0x0C3B,0x145C,0x145C,0x145C,0x145C,0x145C,0x145C,0x145C,0x145B,0x145B,0x145B,0x0C3B,0x0C3B,0x0C3B,0x0C3B,0x0C1A,0x0C1A,0x041A,0x0C3A,0x041A,0x0C3B,0x043A,0x043B,0x043A,0x043A,0x043A,0x043A,0x045B,0x043B,0x0C7B,0x149C,0x14BD,0x1CDD,0x1CDE,0x251E,0x251E,0x1CFE,0x1CFD,0x1CBD,0x149D,0x149C,0x147C,0x147C,0x147C,0x147C,0x145C,0x145B,0x145B,0x143B,0x0C3B,0x143B,0x0C3B,0x0C3B,0x0C3A,0x0C3A,0x0C5B,0x0C5B,0x0C5A,0x0C5B,0x0C5B,0x0C5B,0x0C5B,0x0C5B,0x0C5B,0x0C5B,0x0C5B,0x145B,0x0C5B,0x0C5B,0x0C5B,0x0C5B,0x0C5B,0x0C5B,0x0C3B,0x0C5B,0x0C5B,0x0C5B,0x0C5B,0x145B,0x0C5B,0x145B,0x0C5B,0x0C5A,0x0C5A,0x045A,0x043A,0x043A,0x043A,0x045A,0x047A,0x047B,0x049B,0x047B,0x0C7B,0x14BC,0x14DD,0x1CFD,0x251E,0x251E,0x251E,0x1CFD,0x1CDD,0x1CDD,0x14BD,0x149C,0x147C,0x149C,0x147B,0x147B,0x149B,0x149B,0x147B,0x147B,0x149B,0x0C7B,0x147B,0x147B,0x147B,0x147B,0x147B,0x145B,0x147B,0x147B,0x147B,0x147B,0x147B,0x149B,0x147B,0x147B,0x147B,0x147B,0x145B,0x145B,0x145B,0x147B,0x0C5B,0x0C5B,0x147B,0x0C7B,0x147B,0x149B,0x147B,0x147B,0x0C7B,0x0C7B,0x0C7A,0x0C7A,0x0C7B,0x0C9B,0x0C7A,0x047A,0x043A,0x043A,0x045A,0x14BB,0x1CFD,0x253E,0x253E,0x1D1E,0x1CFD,0x1D1D,0x14DD,0x14DC,0x14BC,0x14BC,0x149C,0x149C,0x149C,0x149C,0x149B,0x14BC,0x149B,0x14BC,0x14BC,0x149B,0x0C9B,0x149B,0x149B,0x149B,0x149B,0x149B,0x149B,0x149B,0x149B,0x149B,0x149B,0x149B,0x149B,0x149B,0x149B,0x14BC,0x14BC,0x14BC,0x1CBC,0x14BC,0x14BC,0x14BC,0x14BC,0x14BC,0x14DC,0x14BC,0x14BC,0x14DC,0x1CDC,0x14DC,0x14DC,0x14DC,0x14DC,0x14DC,0x14FC,0x1D1C,0x14FC,0x0CDC,0x0CBB,0x0CBB,0x1D1D,0x259F,0x2D9F,0x2D9F,0x2D7E,0x255E,0x255E,0x253E,0x1CFD,0x1CFD,0x14DC,0x14DC,0x14BC,0x1CBC,0x1CBC,0x1CBC,0x1CBC,0x1CBC,0x1CBC,0x1CDC,0x1C9C,0x1CBC,0x1CBC,0x1CBC,0x1CBC,0x1CBC,0x1C9C,0x1CBC,0x1CBC,0x1CDC,0x1CDC,0x1CDC,0x14BC,0x1CDC,0x1CDC,0x1CDC,0x1CDC,0x1CDC,0x1CDC,0x1CDC,0x1CDC,0x1CDC,0x1CDC,0x1CDC,0x1CDC,0x1CDC,0x1CDC,0x1CDC,0x1C9B,0x1CDC,0x1CDC,0x1CDC,0x1CDC,0x1CDC,0x1CBB,0x1CDB,0x14DB,0x1CFC,0x1D1C,0x14FC,0x0CBB,0x14BB,0x255E,0x35DF,0x3DFF,0x3DDF,0x359F,0x357E,0x2D5E,0x2D3E,0x24FD,0x24FD,0x24FD,0x24FD,0x1CDC,0x24FC,0x24DC,0x24FD,0x24FC,0x24FC,0x24FC,0x24FD,0x24FC,0x24FD,0x24FD,0x24FD,0x24FD,0x24FD,0x24DD,0x24DD,0x24FC,0x24FC,0x24DC,0x24FD,0x24FC,0x24FC,0x24FD,0x24FC,0x24FD,0x24FD,0x24FD,0x251D,0x24FD,0x24FD,0x24FD,0x24FD,0x24FD,0x2D1D,0x24FD,0x251D,0x24FC,0x24FC,0x24DC,0x24FC,0x24FC,0x24FC,0x251C,0x251C,0x251C,0x251C,0x1D1C,0x1CFC,0x1CFC,0x2D7E,0x35DF,0x3DFF,0x3DDF,0x35BF,0x357E,0x2D5E,0x2D3D,0x2D3D,0x2D1D,0x2D1D,0x24FC,0x251D,0x2D1D,0x2D1D,0x251D,0x251D,0x24FC,0x2D1D,0x2D1D,0x2D1D,0x2D1D,0x2D3D,0x2D1D,0x2D1D,0x2D1D,0x2D3D,0x2D1D,0x2D1D,0x2D1D,0x2D1D,0x2D1D,0x2D1C,0x2D1D,0x2D1D,0x2D1D,0x2D1D,0x2D1C,0x2D1D,0x2D1C,0x2D1C,0x2D1D,0x2D1D,0x2D1D,0x2D3D,0x2D1D,0x2D3D,0x2D1D,0x2D1D,0x2D1D,0x2D1D,0x251C,0x2D3D,0x2D1D,0x2D3D,0x2D1C,0x2D1C,0x2D1C,0x2D3D,0x2D3D,0x2D7D,0x359E,0x3DBF,0x35BF,0x35BF,0x359E,0x3D9F,0x3D7E,0x3D7E,0x3D7E,0x3D5E,0x3D5E,0x355E,0x353D,0x353D,0x353D,0x355D,0x353D,0x355D,0x353D,0x355D,0x2D3D,0x2D3D,0x355D,0x353D,0x353D,0x353D,0x2D3D,0x353D,0x353D,0x353D,0x353D,0x355D,0x353D,0x353D,0x353D,0x353D,0x2D1D,0x2D1D,0x2D1D,0x353D,0x2D1D,0x2D3D,0x353D,0x2D1D,0x353D,0x353D,0x2D1C,0x353D,0x2D1D,0x2D1D,0x2CFD,0x2D3D,0x2D3D,0x355D,0x2D3D,0x2D3D,0x2D3D,0x355D,0x2D1C,0x24FB,0x359E,0x3DFF,0x3DDF,0x3DBF,0x357E,0x357E,0x353E,0x353E,0x3D5E,0x355E,0x355E,0x355E,0x355D,0x355D,0x355D,0x355D,0x355D,0x355D,0x353D,0x355D,0x353D,0x353D,0x353D,0x355D,0x355D,0x355D,0x353D,0x353D,0x355D,0x355D,0x353D,0x353D,0x353D,0x353D,0x353D,0x353D,0x353D,0x353D,0x353D,0x353D,0x355D,0x355D,0x353D,0x353C,0x353C,0x353D,0x2D3C,0x353D,0x353D,0x2D3D,0x2D3D,0x2D3D,0x2D1C,0x2D1C,0x2D1D,0x2D1C,0x353C,0x353D,0x2D1C,0x353C,0x2D1C,0x24FB,0x463F,0x3DDE,0x2D5D,0x355D,0x2D3D,0x353D,0x2D3D,0x353D,0x353D,0x355D,0x353D,0x353D,0x353D,0x355D,0x353D,0x353D,0x353D,0x355D,0x353D,0x353D,0x2D3D,0x353D,0x355D,0x353D,0x355D,0x355D,0x355D,0x355D,0x353D,0x355D,0x353D,0x355D,0x353D,0x353D,0x353D,0x355D,0x353D,0x353D,0x353D,0x353D,0x353D,0x353D,0x353C,0x353D,0x353C,0x353D,0x353D,0x353D,0x353C,0x353D,0x355D,0x355D,0x355D,0x355D,0x355D,0x355D,0x355D,0x353D,0x353D,0x3D5D,0x353D,0x353D,0x355D,0x359E,0x461F,0x35BE,0x2D5D,0x2D5D,0x2D3D,0x2D5D,0x355D,0x357E,0x357E,0x357E,0x355E,0x357E,0x357E,0x355E,0x355E,0x355E,0x353D,0x355D,0x353D,0x353D,0x2D3D,0x2D3D,0x2D3D,0x2D3D,0x2D3D,0x2D3D,0x2D3D,0x2D3D,0x2D1C,0x2D3D,0x2D3D,0x2D3D,0x2D3C,0x2D3D,0x2D3D,0x2D3D,0x2D3D,0x2D3D,0x2D3D,0x2D3D,0x2D1C,0x2D1C,0x2D1D,0x2D1C,0x2D1C,0x2D3D,0x2D1C,0x2D1C,0x2D1C,0x2D3C,0x353D,0x353D,0x353D,0x355E,0x355E,0x355E,0x355E,0x357E,0x359E,0x3DDF,0x35BE,0x35BE,0x257D,0x253C,0x255D,0x253D,0x251C,0x2D3D,0x2D3D,0x355E,0x353D,0x2D3D,0x353D,0x353D,0x353D,0x355E,0x353D,0x355D,0x353D,0x353D,0x353D,0x351D,0x351D,0x351D,0x351D,0x351D,0x351D,0x351D,0x34FC,0x34FC,0x34FC,0x3CFC,0x3CFC,0x3CFC,0x3CFD,0x3D1D,0x3D1D,0x3D1D,0x3CFC,0x3D1D,0x3CFC,0x3D1C,0x3D1C,0x3D1D,0x451C,0x451D,0x451C,0x451C,0x44FC,0x44FC,0x4CFC,0x4CFC,0x4CFC,0x4CDC,0x54BC,0x54BC,0x5CBC,0x6CDC,0x8D5E,0xB5DF,0x93BA,0x71D3,0x89F4,0x9A34,0xA214,0xA1F3,0xA9D3,0xA9F3,0xA9F3,0xA9D3,0xB214,0xA9D3,0xA9F3,0xAA34,0x9A13,0x9253,0x8293,0x5A51,0x324F,0x9EBF,0x661B,0x665B,0x6E5B,0x863C,0x7C98,0x6292,0x8293,0x9253,0x99F2,0xA9F3,0xA9D3,0xA9D3,0xB1F4,0xA9D3,0xA9F4,0xA1F3,0x91F3,0x8A34,0x6213,0x6B58,0x53D9,0x4C7C,0x44BC,0x3CDD,0x34DD,0x34FD,0x34FD,0x34FD,0x2CDD,0x2CDD,0x2CDC,0x2CDD,0x24BC,0x24BC,0x24BC,0x24DC,0x2CFD,0x2D1D,0x251D,0x2D3D,0x35BF,0x461F,0x2D9F,0x255E,0x14DC,0x14FC,0x14FC,0x0CDB,0x14DC,0x14DC,0x14BC,0x14DC,0x1CDC,0x1CFC,0x1CDC,0x1CDC,0x14DC,0x1CDC,0x1CDC,0x1CDC,0x1CFD,0x1CFD,0x1CDD,0x1CDD,0x1CDD,0x1CDC,0x1CDD,0x1CDD,0x1CBC,0x1CDD,0x1CBC,0x1CBC,0x1CBC,0x1CBC,0x1CBC,0x1CBC,0x1CBC,0x14BC,0x14BC,0x14BC,0x149C,0x149C,0x14BC,0x149C,0x149B,0x149B,0x149B,0x149B,0x149B,0x149B,0x0C9B,0x149B,0x149B,0x14BC,0x149B,0x14BC,0x14BC,0x14DC,0x1D1D,0x253D,0x255E,0x257E,0x2D9F,0x2DBF,0x1D7E,0x1D5D,0x0D1C,0x0D1C,0x0CDB,0x04BB,0x0CBB,0x0CDC,0x0CDC,0x14FC,0x14FC,0x14DC,0x14DC,0x14DC,0x14DC,0x14DD,0x14DD,0x14BC,0x14BC,0x14BC,0x14BC,0x0CBC,0x149C,0x14BC,0x14BC,0x14BC,0x14BC,0x149B,0x149B,0x149B,0x0C9B,0x0C9B,0x0C7B,0x0C7B,0x0C7B,0x0C7B,0x0C7B,0x0C7B,0x147B,0x0C7B,0x0C7B,0x0C7B,0x0C7B,0x0C7B,0x147B,0x149B,0x0C7B,0x0C9C,0x0C7B,0x0C9B,0x0C9B,0x0C9B,0x0C9B,0x14BC,0x14DC,0x1CFD,0x1D3E,0x253E,0x253E,0x253E,0x1D3E,0x1CFD,0x14DD,0x0CDC,0x049B,0x049B,0x049B,0x047A,0x045A,0x047A,0x047B,0x0C9B,0x0C9B,0x0C9B,0x0C9B,0x0C9C,0x0C9B,0x0C9B,0x0C9B,0x0C9B,0x0C9C,0x0C9C,0x0C7B,0x0C9C,0x0C9C,0x149C,0x0C9C,0x0C9C,0x0C7B,0x0C7C,0x0C9C,0x0C7C,0x0C7B,0x0C7C,0x0C5B,0x0C7C,0x0C7B,0x0C7B,0x0C7B,0x0C7B,0x0C7B,0x0C7B,0x0C7B,0x0C7B,0x0C7B,0x0C7B,0x0C7B,0x0C5B,0x0C5B,0x0C5B,0x0C5B,0x0C5B,0x0C5B,0x0C7B,0x0C7B,0x0C9C,0x14BC,0x14FD,0x1CFD,0x1D1D,0x1D1D,0x151D,0x14FD,0x0CDC,0x049B,0x04BB,0x047B,0x047A,0x045A,0x043A,0x043A,0x043A,0x043A,0x045A,0x045A,0x045A,0x045A,0x045A,0x043A,0x043A,0x043A,0x045B,0x043B,0x045B,0x045B,0x045B,0x043B,0x043B,0x043A,0x043B,0x043B,0x0C3B,0x0C3B,0x0C5B,0x0C5B,0x0C5B,0x0C3B,0x043B,0x0C3B,0x043B,0x041B,0x043B,0x041B,0x041B,0x041B,0x041B,0x041B,0x041B,0x041B,0x043B,0x041B,0x041B,0x041B,0x041A,0x041B,0x043B,0x0C3B,0x0C5B,0x0C7C,0x149C,0x14BD,0x1CDD,0x14DD,0x14DD,0x14BD,0x14BC,0x0C9C,0x0C9C,0x047C,0x0CBC,0x047B,0x047B, + 0x0338,0x0339,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0318,0x0317,0x02F7,0x0317,0x0318,0x0338,0x0338,0x0338,0x0358,0x0379,0x0379,0x0379,0x0379,0x0399,0x0399,0x03D9,0x03FA,0x041A,0x045B,0x0C9C,0x14FD,0x1D1E,0x1D1E,0x0C5C,0x0C1B,0x0C1C,0x03DB,0x03BA,0x037A,0x039A,0x0379,0x0379,0x0379,0x0359,0x0359,0x0359,0x0359,0x0359,0x0339,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0358,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0358,0x0358,0x0379,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0379,0x0379,0x0379,0x0359,0x0359,0x0359,0x0359,0x0378,0x0379,0x0379,0x0378,0x0399,0x03B9,0x03D9,0x041A,0x043B,0x0C7C,0x0CBC,0x0CBC,0x14DD,0x0CDD,0x14DD,0x0C7C,0x0C3B,0x0C3B,0x03DA,0x0399,0x0379,0x0379,0x0379,0x0379,0x0379,0x0399,0x0379,0x0359,0x0358,0x0358,0x0358,0x0358,0x0358,0x0379,0x0379,0x0379,0x0379,0x0379,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x0358,0x0399,0x0379,0x0378,0x0379,0x0378,0x0378,0x0379,0x0379,0x0399,0x0399,0x0399,0x0399,0x0378,0x0358,0x0378,0x0378,0x0398,0x03B8,0x03B8,0x03D9,0x03F9,0x041A,0x045B,0x0C7B,0x14BC,0x251E,0x251E,0x147C,0x041A,0x03FA,0x03DA,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0379,0x0399,0x0379,0x0399,0x0379,0x0399,0x0399,0x0399,0x0399,0x0398,0x0398,0x0398,0x0398,0x0398,0x0398,0x0378,0x0378,0x0399,0x0399,0x0378,0x0399,0x0399,0x0398,0x0399,0x0399,0x0398,0x0398,0x0399,0x0399,0x0399,0x0399,0x0378,0x0378,0x0399,0x03B9,0x03B9,0x03B9,0x0398,0x0398,0x0398,0x0398,0x03D9,0x03D9,0x03B8,0x03B8,0x03F9,0x0419,0x0C5B,0x0C9B,0x1D1D,0x255E,0x1CFD,0x0C3B,0x03FA,0x03FA,0x03FA,0x03DA,0x03DA,0x03D9,0x03B9,0x03B9,0x03B9,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0379,0x0379,0x0379,0x0378,0x0379,0x0379,0x0399,0x0399,0x0399,0x0399,0x03B9,0x03B9,0x0399,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x0399,0x03B9,0x03B9,0x03B9,0x03B9,0x03D9,0x03B9,0x0BFA,0x0BFA,0x0BF9,0x0C19,0x03D9,0x03D9,0x03D9,0x03F9,0x0C3A,0x0C5A,0x0C7A,0x14DC,0x251D,0x2D7F,0x24FD,0x143A,0x03D9,0x03D9,0x03B9,0x03B9,0x0BB9,0x0BD9,0x0399,0x03B9,0x0399,0x03B9,0x03B9,0x03B9,0x0399,0x0398,0x0398,0x03B9,0x0399,0x0399,0x0399,0x0399,0x03B9,0x0399,0x0399,0x0399,0x0399,0x03B9,0x0399,0x0398,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03D9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03BA,0x03B9,0x03B9,0x0BBA,0x0BDA,0x03B9,0x0BBA,0x0BD9,0x0BDA,0x141B,0x143B,0x0C3A,0x0C3A,0x0BF9,0x0BF9,0x0C19,0x0419,0x149B,0x24FC,0x2D3E,0x2D1E,0x1C9C,0x0C1B,0x0BD9,0x0BD9,0x0BD9,0x03B9,0x03B9,0x03B9,0x0BB9,0x0BD9,0x03B9,0x03B9,0x03B9,0x0399,0x03B9,0x03B9,0x0399,0x0399,0x0BB9,0x0BB9,0x0399,0x0399,0x0BB9,0x0BB9,0x03B9,0x0BB9,0x0BB9,0x0BB9,0x03B9,0x03B9,0x0BB9,0x03B9,0x0BB9,0x0BB9,0x0BB9,0x0BB9,0x0BB8,0x0BB9,0x0BB9,0x0BB9,0x0BB8,0x0BB9,0x0BB9,0x0BB9,0x0BD9,0x0BD9,0x0BB9,0x0BD9,0x0BD9,0x0BF9,0x0BF9,0x0BF9,0x141A,0x143A,0x13F9,0x0BD9,0x0BF9,0x0C19,0x355E,0x357E,0x2D3E,0x24BC,0x147B,0x145B,0x0BF9,0x0BD9,0x0BD9,0x0BB9,0x13D9,0x13D9,0x13D9,0x13B9,0x0BB9,0x0BB9,0x0398,0x0398,0x0BD9,0x0BB9,0x0BB9,0x0BB9,0x0BB9,0x0BD9,0x0BB8,0x0B98,0x0BB9,0x0BB9,0x0BB8,0x0BB8,0x0B99,0x0399,0x0B98,0x0BB9,0x0B98,0x0B98,0x0BB9,0x0B98,0x0BB9,0x13B9,0x0BB9,0x0BB9,0x0BB9,0x0BD9,0x0BD9,0x13D9,0x13B9,0x13D9,0x0B98,0x0BB9,0x13D9,0x13D9,0x13FA,0x13F9,0x13FA,0x141A,0x13F9,0x13F9,0x1419,0x141A,0x143A,0x1439,0x3D7F,0x355E,0x1C9C,0x143A,0x141A,0x141A,0x13FA,0x13DA,0x13FA,0x13FA,0x13F9,0x13F9,0x13D9,0x13D9,0x0BD9,0x13D9,0x0BD9,0x0BB9,0x0B98,0x0B98,0x0BD9,0x0BB9,0x0BB9,0x0BB8,0x0BB8,0x0BB8,0x0B98,0x0B98,0x0B98,0x0B98,0x0B98,0x0B98,0x0B98,0x0B98,0x0B98,0x0B98,0x0B98,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BD9,0x0BB8,0x0BD9,0x0BB8,0x0BD9,0x0BD9,0x13F9,0x0BD9,0x13D9,0x1419,0x1C1A,0x13D8,0x0BB8,0x1419,0x1439,0x45FF,0x2D3D,0x145A,0x0BF9,0x0BD9,0x13FA,0x13D9,0x0BD9,0x13F9,0x13F9,0x13D9,0x13D9,0x13D9,0x0BD8,0x0BB8,0x0BD9,0x0BD8,0x0BB8,0x0BD8,0x0BB8,0x0398,0x0398,0x0BB9,0x0BB8,0x0BB8,0x0BB8,0x0B98,0x0BB8,0x0BB8,0x0BB8,0x0B98,0x0B98,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0B98,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BD9,0x0BB8,0x0BB8,0x0BD9,0x13F9,0x0BD9,0x0BD9,0x0BD9,0x13D9,0x13D9,0x1BF9,0x13F9,0x13F9,0x1419,0x145A,0x357E,0x1CDB,0x0C3A,0x03D9,0x03D8,0x0BD9,0x0BD9,0x0BF9,0x13F9,0x13F9,0x13F9,0x13F9,0x0BF9,0x0BD9,0x0BD9,0x0BB9,0x0BB8,0x0BB8,0x0BB9,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB9,0x0BB8,0x0BB8,0x0BD8,0x0BB8,0x0BB8,0x0BB8,0x0BB8,0x0BB9,0x0BB9,0x0BB8,0x0BB8,0x0BD9,0x0BB9,0x0BB8,0x0BB9,0x0BB9,0x0BB9,0x0BB8,0x0BB8,0x0BB8,0x0BD9,0x0398,0x0BB8,0x0BD9,0x0BD9,0x13F9,0x13FA,0x0BD9,0x0BD9,0x13F9,0x13F9,0x13F9,0x141A,0x24FC,0x359F,0x35BF,0x251D,0x147A,0x145A,0x143A,0x143A,0x141A,0x141A,0x141A,0x13FA,0x0BD9,0x13F9,0x0BD9,0x0BD9,0x13D9,0x13D9,0x13D9,0x13D9,0x13D9,0x13D9,0x13D9,0x13B9,0x13B9,0x13D9,0x13B9,0x13B9,0x13D9,0x13B9,0x13B9,0x13B9,0x1BB9,0x1BB9,0x1B99,0x1BB9,0x1BB9,0x1BB9,0x1BB9,0x1BB9,0x1BB9,0x1BD9,0x1BB9,0x1BB9,0x1BB9,0x23B9,0x23B9,0x23D9,0x23D9,0x2BD9,0x2BD9,0x2BD9,0x33F9,0x33DA,0x3BFA,0x43FA,0x4BFB,0x4BDA,0x5BDA,0x6BDA,0x8C1C,0x82F8,0x71B3,0x9214,0x9A14,0xA1F3,0xAA14,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9F4,0xA9F3,0xA213,0x9A33,0x9253,0x7A93,0x41EF,0x6436,0x865D,0x6E3B,0x6E1B,0x85FC,0x8D3A,0x5A91,0x7A73,0x8A32,0x9A13,0xA1D2,0xA9F3,0xA9D3,0xB1F4,0xA9D3,0xAA14,0xAA14,0x99F3,0x8A34,0x7234,0x7338,0x5399,0x2B17,0x1B17,0x1B78,0x1399,0x1379,0x0B79,0x0B79,0x0B79,0x0B79,0x0B59,0x0B79,0x0B79,0x0B79,0x0B79,0x0B78,0x0B99,0x0BB9,0x03B9,0x03B9,0x0378,0x0398,0x143B,0x251E,0x2D5E,0x1D1D,0x14DC,0x045A,0x03F9,0x03D9,0x03D9,0x03B9,0x03D9,0x03D9,0x03B9,0x03D9,0x03FA,0x03D9,0x03B9,0x03B9,0x03B9,0x0399,0x0398,0x0378,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0378,0x0379,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0398,0x0398,0x0399,0x03B9,0x03B9,0x03B9,0x03B9,0x03D9,0x0C5A,0x14DC,0x1D3D,0x151D,0x0CFC,0x049B,0x03F9,0x03F9,0x03D9,0x03B9,0x03D9,0x03B9,0x03B9,0x0399,0x0399,0x03B9,0x03DA,0x03DA,0x03BA,0x03B9,0x03B9,0x03B9,0x0399,0x0399,0x0399,0x0399,0x0399,0x03B9,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0379,0x0399,0x0399,0x0399,0x0379,0x0399,0x0399,0x0399,0x0399,0x0399,0x0379,0x0379,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0379,0x0399,0x0399,0x03DA,0x0C3B,0x0C5C,0x14BD,0x14DD,0x14FD,0x049B,0x043A,0x041A,0x03F9,0x03D9,0x03B9,0x03B8,0x0398,0x0378,0x0378,0x0378,0x0398,0x0398,0x0399,0x0399,0x0399,0x0399,0x0399,0x0399,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0399,0x0399,0x0379,0x0379,0x0379,0x0359,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x0379,0x0379,0x0378,0x0378,0x0378,0x0378,0x0379,0x0379,0x0399,0x03B9,0x03B9,0x03D9,0x03FA,0x041B,0x0C7C,0x0CBC,0x151D,0x0CBC,0x043A,0x041A,0x03FA,0x03D9,0x03B9,0x0398,0x0398,0x0399,0x0398,0x0378,0x0378,0x0378,0x0378,0x0378,0x0379,0x0379,0x0399,0x0399,0x0399,0x0399,0x0379,0x0379,0x0379,0x0359,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0359,0x0359,0x0379,0x0379,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0338,0x0339,0x0359,0x0338,0x0359,0x0359,0x0358,0x0359,0x0379,0x039A,0x0C1B,0x0C3C,0x14BD,0x14FE,0x1D3E,0x1D3F, + 0x02F8,0x0319,0x02F8,0x02F8,0x02F8,0x02F8,0x02F8,0x02F8,0x02F7,0x02D7,0x02F8,0x02D7,0x02F7,0x02F8,0x0318,0x0318,0x0339,0x0359,0x0359,0x0358,0x0338,0x0338,0x0338,0x0338,0x0378,0x03BA,0x043B,0x0C9D,0x1CFE,0x1D1E,0x14BE,0x0C3C,0x0379,0x0359,0x0359,0x0339,0x0339,0x0319,0x0319,0x0319,0x0319,0x0319,0x0319,0x02F8,0x0318,0x0318,0x0319,0x0319,0x0319,0x0319,0x0339,0x0339,0x0339,0x0339,0x0339,0x0319,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0318,0x0318,0x0339,0x0339,0x0339,0x0339,0x0319,0x0339,0x0319,0x0359,0x0359,0x0359,0x0359,0x0359,0x0339,0x0339,0x0339,0x0339,0x0339,0x0359,0x0359,0x0359,0x0379,0x0379,0x0399,0x03B9,0x03FA,0x043B,0x0C7C,0x14DD,0x14DE,0x14DE,0x0C5C,0x03BA,0x0399,0x0359,0x0359,0x0339,0x0318,0x0319,0x0318,0x0319,0x0339,0x0339,0x0339,0x0359,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0319,0x0339,0x0339,0x0339,0x0339,0x0339,0x0338,0x0359,0x0339,0x0339,0x0339,0x0339,0x0338,0x0359,0x0359,0x0359,0x0359,0x0359,0x0338,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0379,0x0338,0x0338,0x0338,0x0338,0x0358,0x0379,0x0379,0x0378,0x0398,0x0398,0x03D9,0x0C5B,0x251E,0x253F,0x1CDE,0x0C3B,0x03B9,0x0378,0x0379,0x0379,0x0359,0x0359,0x0339,0x0339,0x0339,0x0339,0x0339,0x0359,0x0359,0x0359,0x0339,0x0379,0x0359,0x0359,0x0358,0x0379,0x0379,0x0358,0x0358,0x0358,0x0358,0x0358,0x0359,0x0359,0x0359,0x0379,0x0359,0x0379,0x0359,0x0359,0x0338,0x0359,0x0379,0x0359,0x0359,0x0379,0x0358,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0358,0x0358,0x0358,0x0379,0x0399,0x0378,0x0358,0x0378,0x03FA,0x24FD,0x357F,0x253E,0x0C5B,0x0398,0x0378,0x0358,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0359,0x0379,0x0359,0x0379,0x0379,0x0379,0x0379,0x0379,0x037A,0x0379,0x0359,0x0B7A,0x0B7A,0x0379,0x0359,0x0B9A,0x0379,0x0B7A,0x037A,0x0379,0x0359,0x0B9A,0x039A,0x0399,0x0399,0x0399,0x0379,0x0399,0x0399,0x039A,0x0B9A,0x0BBA,0x0399,0x0BBA,0x0B99,0x0BBA,0x0BBA,0x0B99,0x0379,0x0399,0x0378,0x0398,0x0378,0x0357,0x0378,0x0378,0x03F9,0x2D3E,0x3DDF,0x3D9F,0x145B,0x0358,0x0337,0x0338,0x0358,0x0B99,0x0B79,0x0B99,0x0B79,0x0BBA,0x0BBA,0x0B79,0x0379,0x0B9A,0x0379,0x0B99,0x0B79,0x0B9A,0x0B9A,0x0BBA,0x0B9A,0x0BBA,0x0B99,0x0BBA,0x0B9A,0x0BBA,0x0B9A,0x0B9A,0x0B9A,0x0BBA,0x0BBA,0x0B9A,0x0399,0x0BBA,0x0BDA,0x0BBA,0x0B9A,0x0BBA,0x0BBA,0x0BBA,0x0B9A,0x0BBA,0x0BBA,0x0BBB,0x0BBB,0x13BB,0x0B9A,0x13DB,0x0B9A,0x0B9A,0x0BBA,0x0BBA,0x0399,0x03B9,0x0399,0x0399,0x0399,0x0398,0x03D9,0x355E,0x45DF,0x353F,0x0BFA,0x0358,0x0379,0x0379,0x0379,0x0B9A,0x0B99,0x0B99,0x0379,0x0B99,0x0BBA,0x0BBA,0x0B99,0x13DA,0x13DA,0x0B9A,0x0B79,0x13BA,0x13BA,0x13BA,0x0B9A,0x13BA,0x0B9A,0x0BBA,0x0B9A,0x0BBA,0x0BBA,0x0BBA,0x0B99,0x13BA,0x0BBA,0x0BBA,0x13BA,0x13BA,0x139A,0x13BA,0x0BB9,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13DA,0x13BA,0x13BA,0x13BA,0x13DA,0x13BA,0x13DA,0x0BBA,0x13DA,0x0BB9,0x13DA,0x0B99,0x0398,0x0378,0x0337,0x1C3B,0x45BF,0x2D1E,0x1C7C,0x0BDA,0x0399,0x0399,0x0BB9,0x0B99,0x0B99,0x13BA,0x13BA,0x139A,0x13BA,0x13BA,0x1BDA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x139A,0x13BA,0x13BA,0x13DA,0x13DA,0x13BA,0x13BA,0x13DA,0x13BA,0x13BA,0x13DA,0x13BA,0x13BA,0x1BDB,0x13BA,0x13DA,0x1BDA,0x13BA,0x13BA,0x1BDA,0x1BDA,0x13DA,0x13BA,0x1BDA,0x1BDA,0x1BDA,0x13BA,0x13DA,0x13DA,0x1BDA,0x1BFB,0x1BFB,0x1BFB,0x1BFB,0x0B99,0x1BFB,0x13DA,0x13DA,0x0BB9,0x0BB8,0x0BB8,0x3D9F,0x24BC,0x13FA,0x13FB,0x13DA,0x13DA,0x1BDB,0x13BA,0x1BDA,0x13BA,0x13BA,0x1399,0x13BA,0x13BA,0x13BA,0x13B9,0x13BA,0x13BA,0x1BDA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13DA,0x13DA,0x13BA,0x13B9,0x13DA,0x13BA,0x13DA,0x13BA,0x13DA,0x13B9,0x13BA,0x13DA,0x13BA,0x13B9,0x13DA,0x13BA,0x13DA,0x13DA,0x13BA,0x13BA,0x13DA,0x1BFA,0x1BFA,0x13B9,0x1BFA,0x13D9,0x13B9,0x0BB8,0x3D9F,0x24DC,0x1C5B,0x13FA,0x13DA,0x13DA,0x1BFB,0x1BDA,0x1BDA,0x13BA,0x1BDA,0x13BA,0x13DA,0x13BA,0x13DA,0x13BA,0x1BDA,0x13DA,0x13BA,0x1399,0x13DA,0x13BA,0x13B9,0x13BA,0x13B9,0x1399,0x13BA,0x13BA,0x13B9,0x1399,0x13BA,0x13DA,0x13B9,0x13BA,0x13DA,0x13BA,0x13BA,0x13BA,0x1BDA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x1BDA,0x13BA,0x13B9,0x13B9,0x13BA,0x13B9,0x13DA,0x13BA,0x13BA,0x1BBA,0x13B9,0x13B9,0x0BB9,0x0BB8,0x2D1E,0x24DC,0x145B,0x0BFA,0x0BD9,0x0BDA,0x13DA,0x13DA,0x1C1B,0x13DA,0x13DA,0x0B99,0x13BA,0x0BB9,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13B9,0x1399,0x13DA,0x13BA,0x13BA,0x13B9,0x13B9,0x13BA,0x13BA,0x13DA,0x13DA,0x13B9,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13DA,0x13BA,0x13BA,0x13BA,0x13BA,0x13BA,0x13B9,0x13BA,0x13B9,0x0B79,0x0B79,0x0B79,0x0B99,0x0B79,0x0358,0x0337,0x0378,0x2D1E,0x3DDF,0x357F,0x03F9,0x0398,0x0398,0x0BB9,0x0BB9,0x0BB9,0x13DA,0x13B9,0x13DA,0x0B99,0x13BA,0x0B99,0x13BA,0x1399,0x13BA,0x13BA,0x1BDA,0x13DA,0x1BDB,0x1BDB,0x1BBA,0x1BBA,0x1BDA,0x1BBA,0x1BBA,0x1BBA,0x23DA,0x23DB,0x23DA,0x23DB,0x23DB,0x23BB,0x2BDB,0x2BFB,0x2BFB,0x2BFB,0x2BFB,0x2BFB,0x2BFB,0x2C1B,0x2C1B,0x341B,0x341B,0x33FB,0x341B,0x33FB,0x3C1B,0x3C1B,0x3BFB,0x33DA,0x33DA,0x3BDA,0x43FB,0x4BDB,0x539A,0x5359,0x6319,0x7B59,0x82B7,0x79D4,0x9235,0xA234,0xA1F3,0xA1D3,0xA9F3,0xB1F3,0xA9D3,0xA9D3,0xB214,0xA9F3,0xA1F3,0x9A13,0x9233,0x8232,0x6A52,0x39EE,0x8DFC,0x7DFB,0x7E1C,0x85DB,0x957C,0x5A91,0x7A93,0x8A33,0x9A13,0xA1F3,0xA9D3,0xA9D3,0xA9D4,0xB1F4,0xA9F4,0xAA14,0xA1F4,0x9214,0x7A14,0x72B7,0x6C1C,0x3B59,0x2B7A,0x2BBB,0x23BA,0x23BB,0x1BBA,0x1B7A,0x1BBB,0x1B9A,0x1BBB,0x1B9A,0x139A,0x137A,0x137A,0x137A,0x0B59,0x0B79,0x0B79,0x0359,0x0358,0x0338,0x0358,0x03DA,0x2D1E,0x35BF,0x359F,0x253F,0x147C,0x03DA,0x0399,0x0379,0x0378,0x0358,0x0399,0x0399,0x03BA,0x0BBA,0x0399,0x0359,0x0379,0x0358,0x0358,0x0358,0x0359,0x0359,0x0379,0x037A,0x037A,0x0359,0x037A,0x0379,0x0379,0x0379,0x0379,0x0359,0x0379,0x0359,0x0379,0x0379,0x0379,0x0359,0x0359,0x0359,0x0379,0x0359,0x0379,0x0379,0x0379,0x0379,0x039A,0x0379,0x0379,0x0359,0x0359,0x0359,0x0358,0x0358,0x0359,0x0359,0x0359,0x0358,0x0358,0x0358,0x0399,0x041A,0x045B,0x14DD,0x255F,0x2D7F,0x1CDD,0x0C1A,0x03B9,0x0399,0x0399,0x0379,0x0379,0x0358,0x0359,0x0359,0x0399,0x039A,0x039A,0x0379,0x0379,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0379,0x0359,0x0379,0x0359,0x0379,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0339,0x0359,0x0359,0x0359,0x0359,0x0359,0x0338,0x0338,0x0338,0x0338,0x0359,0x0379,0x039A,0x03BA,0x041B,0x14DE,0x253F,0x253F,0x24FE,0x147C,0x041A,0x03DA,0x03B9,0x0399,0x0399,0x0379,0x0359,0x0358,0x0358,0x0379,0x0379,0x0359,0x0359,0x0359,0x0339,0x0339,0x0339,0x0339,0x0339,0x0319,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0338,0x0339,0x0339,0x0339,0x0339,0x0339,0x0338,0x0359,0x0359,0x0359,0x0379,0x0379,0x0399,0x03B9,0x041B,0x14FE,0x1D3F,0x1CFE,0x149D,0x0C3B,0x03FA,0x03B9,0x0399,0x0399,0x0399,0x0379,0x0379,0x0379,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0359,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0319,0x0319,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x0319,0x0339,0x0339,0x0319,0x0319,0x0319,0x0319,0x0319,0x0319,0x0339,0x0339,0x0319,0x0319,0x0319,0x0319,0x0319,0x02F8,0x0318,0x02F8,0x0318,0x0318,0x0319,0x0319,0x0339,0x039A,0x03DB,0x0C5C,0x0C9D,0x0C9D, + 0x0339,0x0339,0x0339,0x0B5A,0x035A,0x0B7A,0x0B7A,0x0B9A,0x0B9A,0x0BBB,0x0BBB,0x0BBB,0x0BBB,0x0BBB,0x0B9B,0x035A,0x0339,0x0339,0x0338,0x0338,0x0338,0x0359,0x0399,0x0BFB,0x1C7D,0x24DF,0x251F,0x2D3F,0x0C5C,0x03BA,0x0359,0x0339,0x0339,0x0339,0x0319,0x033A,0x033A,0x033A,0x035A,0x035B,0x037B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B7A,0x0B7B,0x0B9B,0x035A,0x035A,0x035A,0x0B7B,0x033A,0x037B,0x035A,0x0B7B,0x037A,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B9B,0x0B9B,0x0B9B,0x0BBB,0x0B7A,0x0B9B,0x0B9B,0x0B9B,0x0BBB,0x0BBB,0x039B,0x0BBB,0x039A,0x039B,0x039B,0x039A,0x039A,0x0BBB,0x037A,0x037A,0x037A,0x037A,0x0379,0x039A,0x03BA,0x03FB,0x145C,0x1CBD,0x24FF,0x2D5F,0x14BD,0x041B,0x0379,0x0359,0x0379,0x037A,0x037A,0x039B,0x0B9B,0x0BBB,0x0BBB,0x13DC,0x0B9B,0x13BC,0x13BC,0x13DC,0x13BC,0x0BBC,0x13BC,0x13DC,0x13BC,0x13BC,0x13BC,0x13DC,0x13DC,0x13DC,0x0BBB,0x13DC,0x13DC,0x13DC,0x13DC,0x13DC,0x0BBC,0x13DC,0x13DC,0x13BB,0x0BBB,0x13BB,0x0BBB,0x0BBB,0x0BBB,0x13DB,0x13DB,0x13DB,0x0BDB,0x0BDB,0x0BBB,0x0BFB,0x0BDB,0x0BFB,0x0BDB,0x0BFB,0x0BDA,0x03BA,0x0399,0x0399,0x03BA,0x03FA,0x147C,0x1CDE,0x1CBE,0x1CBE,0x0C3C,0x03DA,0x03DA,0x03BA,0x03BA,0x03BA,0x039A,0x0BBB,0x13DC,0x13DC,0x13DC,0x13FC,0x1BFC,0x1BFC,0x1BFC,0x1BFC,0x1BFC,0x13FC,0x13DC,0x1BFC,0x13FC,0x13DB,0x13FC,0x141C,0x13FC,0x1C1C,0x13FC,0x13FC,0x13FC,0x1C1C,0x13FC,0x13FC,0x13FC,0x13FC,0x13DC,0x1BFC,0x1BFC,0x1BFC,0x13FB,0x141C,0x13FB,0x13FC,0x13FB,0x13FB,0x13FC,0x1C1C,0x141C,0x1C3C,0x1C1C,0x1C1C,0x1C1C,0x1C3C,0x1C3C,0x1C3C,0x141C,0x0BDA,0x03BA,0x0C1B,0x24BE,0x2D1F,0x2D1F,0x24DE,0x145C,0x0C1B,0x0BFB,0x0BDA,0x0BDA,0x0BDB,0x0BDB,0x13FB,0x13DB,0x13FC,0x1BFC,0x1C1C,0x1C1C,0x1C1D,0x1C1D,0x1C1C,0x1C1D,0x1C3D,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1BFC,0x1C1D,0x1C1C,0x1C1C,0x1BFC,0x241D,0x1C1C,0x1BFC,0x1BFC,0x241D,0x1C1C,0x1C1C,0x1BFC,0x1BFC,0x13FC,0x1C3C,0x141C,0x13FC,0x1C3C,0x1C1C,0x1C3C,0x243D,0x1BFC,0x1BFC,0x1C1C,0x1C1C,0x1C3C,0x245D,0x1C3C,0x1C3C,0x141B,0x141B,0x141B,0x1C3C,0x141B,0x03D9,0x145C,0x353F,0x3D9F,0x2D3F,0x1C7C,0x141B,0x13FB,0x1C1B,0x1C3C,0x243C,0x1BFB,0x1BFB,0x1BFC,0x23FC,0x241C,0x243D,0x243D,0x2C5D,0x245D,0x2C5D,0x243D,0x243D,0x243D,0x245D,0x245D,0x243D,0x245D,0x2C7D,0x243D,0x243D,0x245D,0x2C5D,0x243D,0x243D,0x243D,0x245D,0x243D,0x245D,0x243D,0x245D,0x243D,0x245D,0x245D,0x245D,0x245D,0x245D,0x245D,0x243D,0x243D,0x2C5D,0x243D,0x245D,0x1C1D,0x241D,0x245D,0x245D,0x243C,0x245D,0x141B,0x143B,0x143C,0x1C5C,0x24BE,0x355F,0x3D7F,0x2CFE,0x2CBE,0x1C3C,0x13FB,0x1BFC,0x1C1C,0x243C,0x243C,0x243D,0x245D,0x245D,0x2C7E,0x34BE,0x2C5D,0x245D,0x243D,0x2C5D,0x2C5D,0x2C7D,0x2C5D,0x2C5D,0x2C5D,0x2C7E,0x2C5D,0x2C5D,0x2C7D,0x2C7D,0x2C5D,0x2C5D,0x2C5D,0x2C7D,0x2C5D,0x2C5D,0x2C5D,0x2C7E,0x2C5D,0x2C3D,0x2C5D,0x2C7D,0x2C5D,0x2C5D,0x2C7D,0x2C7D,0x2C7D,0x347E,0x2C5D,0x2C5D,0x2C5D,0x2C7D,0x245D,0x243C,0x245C,0x2C7D,0x243C,0x245C,0x1C3B,0x243C,0x1C3B,0x1C3B,0x1C5C,0x3D7F,0x3D5F,0x2CDD,0x24BD,0x247D,0x1C5C,0x245D,0x245D,0x2C7D,0x2C7D,0x2C9E,0x2C7D,0x2C7E,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x2C7D,0x2C5D,0x2C7D,0x347E,0x2C7D,0x347E,0x349E,0x2C7D,0x2C7D,0x349E,0x349E,0x349E,0x349E,0x2C7D,0x2C7E,0x349E,0x347E,0x349E,0x2C7D,0x2C5D,0x2C7D,0x347E,0x347E,0x347E,0x347D,0x2C7D,0x2C7D,0x349E,0x2C5D,0x2C5D,0x2C7D,0x2C5D,0x2C5D,0x347D,0x2C3C,0x2C5D,0x243C,0x2C5D,0x243C,0x2C5C,0x241C,0x241C,0x241B,0x243C,0x1C1B,0x247C,0x4DBF,0x24BC,0x247C,0x243C,0x243C,0x243C,0x241C,0x241C,0x2C3D,0x2C5D,0x2C7D,0x2C7D,0x2C7D,0x2C7D,0x2C7D,0x347D,0x2C7D,0x2C5D,0x2C5D,0x345D,0x347E,0x347E,0x347E,0x349E,0x349E,0x347E,0x347E,0x347D,0x347E,0x347E,0x2C7D,0x349E,0x347E,0x347E,0x347E,0x347E,0x349E,0x349E,0x347D,0x349E,0x347D,0x347D,0x2C7D,0x347D,0x347D,0x347D,0x2C7D,0x349D,0x347D,0x347D,0x2C7D,0x349D,0x347D,0x2C7D,0x2C3C,0x2C5C,0x241C,0x2C3C,0x241B,0x241B,0x241B,0x1C3B,0x3D7F,0x2CFE,0x1C5C,0x1C1B,0x1C1B,0x243C,0x241C,0x243C,0x2C3C,0x2C5D,0x2C5D,0x2C7D,0x347D,0x2C5D,0x2C5D,0x2C5D,0x2C3C,0x2C5D,0x2C5D,0x2C5D,0x2C3D,0x2C5D,0x2C5D,0x2C5D,0x347E,0x347D,0x2C7D,0x347D,0x2C7D,0x2C7D,0x2C5D,0x2C5D,0x2C7D,0x347E,0x347E,0x347E,0x347D,0x347E,0x2C5D,0x2C7D,0x2C7D,0x347E,0x2C5D,0x2C5D,0x2C5D,0x347D,0x347D,0x2C5D,0x347D,0x2C7D,0x2C5D,0x2C7D,0x245D,0x2C5D,0x2C5D,0x2C5D,0x241C,0x2C3C,0x2C1C,0x2C3C,0x2C3C,0x243C,0x2C7D,0x245C,0x353F,0x3D7F,0x1C7C,0x1C3B,0x1C3B,0x1C3C,0x243C,0x243C,0x2C5D,0x2C7D,0x2C5D,0x347D,0x2C7D,0x2C7D,0x347D,0x347E,0x2C5D,0x347D,0x2C5D,0x2C5D,0x2C7D,0x347E,0x347E,0x2C7D,0x2C5D,0x2C7D,0x2C7D,0x349E,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x2C7E,0x2C5D,0x2C7E,0x2C5D,0x2C7D,0x2C5D,0x2C7E,0x349E,0x2C7D,0x349E,0x34BE,0x2C7D,0x349E,0x2C7E,0x2C7D,0x2C7D,0x2C9D,0x243C,0x13FB,0x1C3B,0x2CDE,0x3D7F,0x353F,0x249C,0x143B,0x141B,0x141B,0x13FB,0x1C1B,0x241C,0x241C,0x243C,0x2C3C,0x2C3D,0x2C5D,0x2C1C,0x2C3D,0x2C1C,0x2C3D,0x2C3D,0x2C3C,0x2C3D,0x345D,0x2C3D,0x345D,0x343D,0x343D,0x345D,0x345D,0x345D,0x345D,0x3C5D,0x3C5E,0x3C5E,0x3C5E,0x3C5D,0x3C5D,0x3C5D,0x3C5D,0x3C7D,0x3C7E,0x3C5D,0x3C5D,0x3C7D,0x447E,0x447E,0x447E,0x447E,0x4C9E,0x4C9E,0x4C9E,0x549E,0x54BE,0x54BE,0x5CBE,0x547D,0x5C7D,0x645D,0x6C5D,0x7C5D,0x9CDF,0xACDF,0x7A76,0x81D3,0x9A14,0xA214,0xAA14,0xA1B2,0xA9D3,0xA9F3,0xA9F3,0xA9D3,0xA1D3,0xA9D3,0xAA14,0xA233,0x9253,0x8293,0x5A30,0x4B12,0x9E5E,0x85DB,0x8DBC,0x9D9C,0x62D3,0x7252,0x8A53,0xA274,0xA213,0xA9F3,0xA9D3,0xA9B3,0xA9B3,0xA9F4,0xA9F4,0xA1F4,0x9214,0x8214,0x7276,0x741C,0x645D,0x547D,0x445D,0x3C5D,0x3C7E,0x3C7E,0x3C9E,0x3C7E,0x347E,0x345E,0x3C7E,0x347E,0x347E,0x345E,0x347E,0x2C7E,0x2C9E,0x2C5D,0x245D,0x245C,0x245D,0x1C3C,0x0BFB,0x0C1B,0x24FE,0x355F,0x2D5F,0x24FE,0x149D,0x0C1B,0x0C1B,0x0BFB,0x0BFB,0x0BDA,0x0B9A,0x0BBA,0x13FB,0x13DB,0x13FB,0x1BFC,0x1C1C,0x13DB,0x1BFC,0x1BFC,0x1BFC,0x1BFD,0x1C1D,0x1C1C,0x1C1D,0x1BFC,0x1BFC,0x1BFC,0x1C1D,0x1BFC,0x1C1D,0x1C1C,0x1C1C,0x1C1D,0x241D,0x1BFC,0x1C1D,0x1C1C,0x1C1D,0x1C1D,0x1C1C,0x1BFC,0x1C1D,0x1C1C,0x1C1C,0x1C1D,0x1C1C,0x1C3D,0x245D,0x1C1D,0x1C1C,0x1C1C,0x1C3D,0x1C3D,0x1C5D,0x1C3D,0x1C3D,0x1C5D,0x143C,0x145D,0x149D,0x14DD,0x1CFE,0x1CFE,0x1CFE,0x1CFE,0x1CBD,0x145C,0x0C3C,0x0BDB,0x141C,0x141C,0x13FC,0x13FC,0x0BDB,0x039A,0x039A,0x0BDB,0x0BDB,0x0BDB,0x13FC,0x13DB,0x13DC,0x13BB,0x13DB,0x13DC,0x13FC,0x13FC,0x13FC,0x13FC,0x13FC,0x13FC,0x13DB,0x13DC,0x13FC,0x13DB,0x13FC,0x13DB,0x13FC,0x13FC,0x13FC,0x13DC,0x13FC,0x13DB,0x13DC,0x13DC,0x13DC,0x13BC,0x13DC,0x13BB,0x13BB,0x13DC,0x13DC,0x13DC,0x13FC,0x13DB,0x13FC,0x0BDB,0x0BDC,0x0BDB,0x0C1C,0x0C3C,0x0C3C,0x041C,0x0C7D,0x24FF,0x2D1F,0x251F,0x24DE,0x0C3C,0x0C1C,0x0BDB,0x0BFB,0x0BDB,0x0BDB,0x0BDB,0x03BB,0x039A,0x037A,0x037A,0x037A,0x039A,0x039A,0x0B9B,0x0BBB,0x0B9B,0x0B9B,0x0B9B,0x0B9B,0x0B9B,0x13BC,0x13BC,0x13BC,0x13BB,0x13BC,0x0BBB,0x13DC,0x0BBB,0x13DC,0x13BC,0x13DC,0x13BC,0x13DC,0x13BB,0x13BC,0x13BB,0x13BC,0x0BBB,0x13DC,0x13DC,0x0BBC,0x0BBB,0x0BDB,0x0BBB,0x0BDB,0x0BBB,0x0BDB,0x0BBB,0x0BDB,0x03BA,0x03BB,0x03BB,0x03DB,0x041B,0x0C3C,0x043C,0x0C7D,0x1CDE,0x1CFF,0x14BD,0x147D,0x041B,0x03FB,0x03BA,0x03BA,0x03BA,0x03BA,0x0BBB,0x03BB,0x03BB,0x039A,0x037A,0x035A,0x0359,0x0359,0x035A,0x035A,0x035A,0x037A,0x035A,0x037A,0x035A,0x0B7B,0x035A,0x0B7B,0x0B9B,0x0B7B,0x0B7B,0x0B9B,0x037B,0x0B9B,0x037B,0x0B9B,0x037B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B9B,0x0B7A,0x0B7A,0x0B5A,0x0B9B,0x0B7A,0x0B9B,0x0B7A,0x0B7A,0x0B7A,0x0B9B,0x0BBB,0x0BBB,0x03DB,0x03BB,0x03DB,0x03DB, + 0x13BB,0x139B,0x0B5A,0x0B7A,0x0B7B,0x0B9B,0x0BBB,0x0BBB,0x0BBB,0x0BBB,0x039B,0x039A,0x039A,0x0359,0x0359,0x0359,0x039A,0x13FC,0x245D,0x2C9E,0x34FF,0x3D1F,0x351F,0x34FF,0x2CDF,0x1C9E,0x143D,0x0C1C,0x0BFC,0x0BDC,0x13DC,0x13DC,0x13DC,0x13DC,0x1BFD,0x13BC,0x13DC,0x13DC,0x13BC,0x13BC,0x13BC,0x13BC,0x13BC,0x139C,0x13BC,0x13BC,0x139C,0x0B9C,0x13BC,0x13BC,0x13BC,0x13BC,0x13BC,0x13BC,0x13DD,0x13DC,0x13DD,0x1BDD,0x13BC,0x139C,0x1BDD,0x13BC,0x13DC,0x13DC,0x13DC,0x13DC,0x13DC,0x13BC,0x13BB,0x13DC,0x0BBB,0x0BBB,0x0BDC,0x0BBB,0x0BBB,0x039B,0x039B,0x039B,0x03BB,0x03BB,0x0BDB,0x0BFC,0x0BFC,0x141D,0x1C5D,0x249E,0x2CDF,0x2CFF,0x2D1F,0x24DF,0x1C9E,0x145D,0x143C,0x141C,0x1C3D,0x1C1D,0x1C1D,0x141D,0x1C1D,0x141D,0x1C1D,0x13FD,0x13FD,0x13DC,0x13DC,0x13DC,0x13BC,0x13DC,0x13DC,0x13DC,0x13BC,0x13DD,0x1BDD,0x13DD,0x13DD,0x13DD,0x1BFD,0x13FD,0x13DD,0x13DC,0x1BFD,0x13FD,0x1BFD,0x1BFD,0x13DD,0x13DC,0x13DC,0x1BFD,0x13DC,0x1BFC,0x1BFC,0x13DC,0x1BFC,0x1BFC,0x1BFC,0x13FC,0x141C,0x13FC,0x13FC,0x0BFC,0x0BDB,0x0BDB,0x0BFB,0x0C1C,0x0BFB,0x145C,0x145D,0x24BE,0x2D1F,0x353F,0x353F,0x2CFF,0x24BF,0x1C9E,0x249E,0x24BF,0x249E,0x247E,0x245E,0x245E,0x245E,0x1C1D,0x1C1D,0x1C1D,0x1BFD,0x1C1D,0x241D,0x1C1D,0x1C1D,0x1C1D,0x1BFD,0x1BFD,0x1C1D,0x1BFC,0x1BFC,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1C3D,0x1C3D,0x1C1D,0x1C1D,0x1C1D,0x243D,0x243D,0x243E,0x243E,0x1C1D,0x243D,0x243D,0x243D,0x243D,0x243D,0x1C1C,0x243D,0x243D,0x243D,0x1C3D,0x1C3D,0x1C3D,0x1C3D,0x141C,0x13FB,0x13FB,0x141C,0x143C,0x0C1C,0x1C7D,0x24BE,0x2CFF,0x2D1F,0x2CFF,0x249E,0x249E,0x24BE,0x2CBE,0x2C9E,0x247D,0x245D,0x247D,0x245D,0x245E,0x243D,0x243D,0x243D,0x243E,0x243D,0x241D,0x243E,0x243D,0x243D,0x243D,0x243E,0x243E,0x243D,0x243D,0x243D,0x243D,0x243D,0x243E,0x243E,0x241D,0x2C3E,0x2C3E,0x243D,0x241D,0x243D,0x243D,0x2C3E,0x243E,0x245D,0x245E,0x245E,0x245E,0x245D,0x245D,0x245D,0x243D,0x243D,0x1C1C,0x243D,0x245D,0x243C,0x1C3C,0x243D,0x1C1C,0x141C,0x143C,0x1C3C,0x1C7D,0x1C7D,0x351F,0x355F,0x351F,0x24BE,0x24BE,0x249E,0x249E,0x247D,0x2C7D,0x245D,0x2C5D,0x2C3D,0x241D,0x241D,0x2C3D,0x241D,0x2C3D,0x2C3D,0x243D,0x2C3D,0x243D,0x243D,0x241D,0x243D,0x243D,0x243D,0x243D,0x243D,0x243D,0x2C5D,0x243D,0x2C5E,0x243D,0x243D,0x243D,0x243D,0x243D,0x243D,0x2C5E,0x245D,0x245D,0x245D,0x245D,0x245D,0x245D,0x243D,0x2C5E,0x2C3D,0x243D,0x2C3E,0x2C5E,0x243D,0x241D,0x243D,0x245D,0x243D,0x243D,0x243D,0x1C3C,0x143C,0x143C,0x1C7D,0x2CFF,0x351F,0x2CDE,0x2CBE,0x2CBE,0x2CBE,0x2C7E,0x2C7E,0x2C5E,0x243D,0x2C5E,0x2C7E,0x2C5D,0x2C5D,0x2C7E,0x2C5D,0x2C5D,0x2C7E,0x2C7E,0x241D,0x2C3D,0x2C3D,0x2C3D,0x2C3D,0x2C3D,0x2C3D,0x2C3D,0x2C5D,0x2C3D,0x2C3D,0x2C5D,0x2C3D,0x2C5D,0x2C5E,0x2C5D,0x2C5E,0x2C5E,0x2C5D,0x2C3D,0x2C5D,0x2C5E,0x2C5D,0x2C5D,0x2C7D,0x2C7E,0x2C5D,0x2C7E,0x2C5D,0x2C3D,0x2C5D,0x2C7D,0x2C5D,0x2C5D,0x2C5D,0x2C7E,0x2C5D,0x2C5D,0x2C5D,0x2C7D,0x2C7D,0x245D,0x247D,0x249D,0x34FF,0x34FF,0x2CDE,0x2CDE,0x2CBE,0x2C9E,0x2C7D,0x2C9E,0x2C7E,0x2C7E,0x2C7D,0x2C9E,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x345E,0x2C5D,0x2C5D,0x345E,0x345E,0x2C5D,0x2C5D,0x2C5D,0x347E,0x2C5D,0x2C5D,0x2C5E,0x2C5D,0x2C7E,0x2C7E,0x2C5E,0x2C5E,0x2C7E,0x2C5D,0x2C5D,0x347E,0x2C5E,0x2C5D,0x2C5D,0x347E,0x2C5D,0x347E,0x2C5E,0x2C5D,0x345E,0x347E,0x2C5D,0x347E,0x2C5D,0x2C5D,0x345D,0x347E,0x2C5D,0x2C7D,0x347E,0x347D,0x2C7D,0x2C7D,0x2C5D,0x243C,0x245C,0x3D3F,0x457F,0x2CDE,0x34DE,0x3CDF,0x347E,0x347E,0x347E,0x347E,0x347E,0x349E,0x349E,0x347E,0x347E,0x347E,0x347E,0x347E,0x345D,0x347E,0x347E,0x345E,0x345E,0x345E,0x347E,0x2C5E,0x345E,0x345E,0x347E,0x347E,0x2C5D,0x2C5D,0x347E,0x2C5E,0x2C5D,0x345E,0x2C5E,0x2C5E,0x347E,0x2C5D,0x2C5D,0x2C5D,0x345E,0x2C5D,0x2C5D,0x347D,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x2C5D,0x347D,0x2C5D,0x347D,0x349E,0x347D,0x347D,0x349E,0x349E,0x2C7D,0x347D,0x349E,0x2C9D,0x3D5F,0x353F,0x34DE,0x34DF,0x34BE,0x349E,0x347E,0x347E,0x347E,0x349E,0x347E,0x347E,0x347E,0x347E,0x345D,0x347E,0x347D,0x347D,0x347E,0x347E,0x347E,0x347E,0x347E,0x347E,0x347E,0x347E,0x347E,0x345E,0x347E,0x2C5E,0x345E,0x347E,0x2C5E,0x2C5E,0x347E,0x345E,0x345E,0x2C5E,0x345E,0x345E,0x2C5D,0x2C5E,0x345E,0x345E,0x2C5D,0x2C5D,0x347E,0x345E,0x347E,0x347E,0x347E,0x2C5E,0x2C7E,0x2C7E,0x2C7E,0x347E,0x349E,0x347E,0x3C9E,0x347E,0x347D,0x2C7D,0x2C7D,0x2C9D,0x34FE,0x459F,0x3D3F,0x2CDE,0x2CBE,0x2C9E,0x2C7D,0x2C7D,0x2C7D,0x347E,0x347E,0x2C5D,0x347D,0x2C7D,0x347E,0x347E,0x2C5D,0x2C5D,0x2C5E,0x347E,0x2C5E,0x2C5E,0x347E,0x2C5E,0x2C5E,0x347E,0x2C5E,0x2C5D,0x2C5E,0x347E,0x2C5E,0x2C5D,0x2C5E,0x2C5E,0x2C3D,0x2C5E,0x347E,0x347E,0x2C5E,0x2C5E,0x347E,0x347E,0x2C5E,0x2C5E,0x2C7E,0x2C5E,0x2C5E,0x2C5E,0x2C5D,0x347E,0x347E,0x2C5E,0x2C5D,0x2C5D,0x2C5D,0x349E,0x2C7D,0x2C5D,0x2C7D,0x2C5D,0x245C,0x2CBE,0x34FE,0x3D3F,0x353F,0x351F,0x2CDE,0x2CBE,0x2C9D,0x2C7D,0x2C7D,0x347E,0x347D,0x347E,0x345D,0x345D,0x345E,0x343D,0x343D,0x343D,0x345D,0x345E,0x345D,0x345E,0x345E,0x345E,0x345E,0x345E,0x345E,0x345E,0x3C5E,0x3C7E,0x3C7E,0x3C5E,0x3C7E,0x445E,0x3C5E,0x3C5E,0x3C5E,0x3C5E,0x3C5E,0x447E,0x3C5E,0x3C5E,0x3C5E,0x447E,0x445E,0x445E,0x445D,0x445D,0x4C5E,0x4C7E,0x4C7D,0x4C7D,0x4C5D,0x4C5D,0x545D,0x543D,0x5C3D,0x643D,0x6C5D,0x7C5D,0x8C5D,0x9C1C,0x71D3,0x8A14,0x9A14,0xA214,0xA9F3,0xA9F3,0xA9F3,0xA9F4,0xA9D3,0xA9D3,0xA9F4,0xAA14,0xA213,0x9A33,0x8A53,0x7AB3,0x39AE,0x9D7B,0x9DFD,0x957B,0xA57C,0x7314,0x7232,0x8A53,0x9A33,0xA213,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9F4,0xA9F4,0xA214,0x9A14,0x8A35,0x6A35,0x6B9A,0x5C1C,0x4C1C,0x443D,0x3C1C,0x343D,0x341C,0x341C,0x2C1D,0x2C1D,0x343D,0x2C1D,0x2C3D,0x2C3D,0x2C3D,0x2C3D,0x243D,0x243D,0x243D,0x245D,0x245D,0x245D,0x243D,0x1C3C,0x1C3C,0x1C5D,0x1C9D,0x24DE,0x2D3F,0x2D3F,0x24FF,0x24BE,0x1C5D,0x1C5D,0x1C3C,0x1C3D,0x1C3C,0x245D,0x245D,0x245D,0x245D,0x243D,0x241D,0x241D,0x241D,0x241D,0x241D,0x241D,0x241D,0x1BFD,0x243D,0x243D,0x1C1D,0x241D,0x241D,0x241D,0x243D,0x241D,0x241D,0x23FD,0x243E,0x243E,0x241D,0x241D,0x241D,0x241D,0x1C1D,0x1C1D,0x1C1D,0x243D,0x243D,0x243D,0x1C1D,0x1C1D,0x1C3D,0x1C3D,0x1C3D,0x1C3D,0x1C1D,0x1C1D,0x1C1C,0x141C,0x141C,0x141C,0x0BFC,0x0C1C,0x0C3C,0x145C,0x145C,0x147D,0x1CBE,0x24DE,0x24DE,0x24BE,0x1C7D,0x143C,0x0BFC,0x0BFC,0x141C,0x141C,0x13FC,0x141C,0x141C,0x1C3D,0x1C3D,0x1C3D,0x1C3D,0x1C1D,0x1C1D,0x1BFC,0x1C1D,0x1BFD,0x1C1D,0x1C1D,0x1C1D,0x1BFD,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x141D,0x1C1D,0x1BFD,0x13FC,0x1C1D,0x1BFD,0x1BFD,0x1C1D,0x1BFD,0x1BDC,0x1BFD,0x1BDD,0x1BDC,0x1BFD,0x1BFC,0x1BFD,0x1C1D,0x13FC,0x13FC,0x13FC,0x0BDB,0x0BFC,0x0BDC,0x0BDC,0x0BFC,0x03DB,0x03DB,0x0C1C,0x1C9D,0x24BE,0x24DF,0x24BE,0x1C5D,0x0BFC,0x03DB,0x0BFB,0x0BFC,0x0BDB,0x0BDB,0x0BDC,0x0BDC,0x13DC,0x13DC,0x1C1D,0x1C1D,0x1BFD,0x1BFD,0x13DC,0x1BFD,0x13DC,0x13BC,0x1BDD,0x13BC,0x139C,0x13BC,0x13DC,0x13BC,0x13BC,0x13DC,0x13DC,0x13DC,0x13DC,0x13DC,0x139C,0x13BC,0x13BC,0x13BC,0x13BC,0x13BC,0x0B9B,0x13BC,0x13BC,0x13BC,0x13DC,0x0BBB,0x0B9B,0x0BBB,0x0BBB,0x0BBB,0x0BBB,0x0BBB,0x0BBB,0x03BB,0x0BDB,0x03BB,0x03DB,0x03BB,0x03DB,0x0C3C,0x147D,0x1C9E,0x1C9E,0x24DF,0x24DF,0x1C7E,0x141C,0x0BDB,0x03BA,0x03BB,0x0BDB,0x0BDB,0x03BB,0x039B,0x0B9B,0x0BBB,0x0B9B,0x0B9B,0x13DC,0x13DC,0x13FD,0x13DC,0x13BC,0x13BC,0x0B9C,0x139C,0x139C,0x0B9B,0x0B9B,0x0B9B,0x0B9C,0x0B9C,0x0B9B,0x0BBC,0x0B9C,0x0B9C,0x0B9C,0x139C,0x0B7B,0x139C,0x137B,0x139C,0x139C,0x0B9C,0x13BC,0x0B7B,0x0B7B,0x0B9B,0x139C,0x0B7B,0x0B9B,0x0B9B,0x0B7A,0x0B7A,0x0B7A,0x0B7A,0x0B7A,0x037A,0x039A,0x039B,0x03BB,0x0BDC,0x0BFC, + 0x1BDC,0x1BDC,0x241D,0x23FD,0x1C1D,0x1C1D,0x13DC,0x0BBB,0x0BBB,0x039A,0x037A,0x037A,0x039A,0x0BFB,0x1C9E,0x2CFF,0x355F,0x3D7F,0x351F,0x34FF,0x2C9F,0x245E,0x243D,0x1BFD,0x1BFC,0x13DD,0x1BFD,0x1C1D,0x1C1D,0x1C1D,0x1BFD,0x1BFD,0x1BFD,0x1C1D,0x1BFD,0x1BFD,0x241D,0x1C1D,0x1BFD,0x1BFD,0x1BFD,0x23FD,0x1BFD,0x1BDD,0x1BDD,0x1BDD,0x1BFD,0x241E,0x1BFE,0x1BFD,0x1BDD,0x1BFE,0x1BFD,0x1BFD,0x1BFD,0x1BFD,0x1BFD,0x23FE,0x23FE,0x241E,0x241E,0x23FD,0x23FE,0x241E,0x23FD,0x241E,0x241D,0x1BFD,0x243E,0x1C3D,0x1C3D,0x245E,0x1C1D,0x141D,0x13FD,0x0BBC,0x0BFC,0x143D,0x143D,0x143D,0x1CBE,0x24DF,0x2CFF,0x2CFF,0x2CFF,0x2CFF,0x2CDF,0x249E,0x1C3D,0x13FC,0x13DC,0x1C1D,0x141C,0x1C1D,0x1C1D,0x1BFC,0x1BFC,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x241E,0x243E,0x243E,0x243E,0x241E,0x241E,0x1C1E,0x241E,0x241E,0x241E,0x241E,0x243E,0x241E,0x241E,0x1BFE,0x241E,0x241E,0x1C1E,0x1C1E,0x241E,0x1BFE,0x241E,0x241E,0x241E,0x241E,0x241D,0x243E,0x2C5F,0x2C5E,0x2C3E,0x2C5E,0x2C5E,0x2C7E,0x2C9E,0x245E,0x1C5D,0x141C,0x0BFC,0x143D,0x147D,0x145D,0x147D,0x24DF,0x2D1F,0x2D1F,0x351F,0x2CFF,0x2CDF,0x249E,0x1C5E,0x1C3D,0x1C1D,0x1C1D,0x1C3D,0x1C1D,0x245E,0x245E,0x2C5E,0x2C5E,0x2C5E,0x2C5F,0x2C7F,0x2C7F,0x2C7F,0x2C7F,0x2C5F,0x2C5E,0x2C7F,0x2C7F,0x2C5E,0x2C5E,0x2C7F,0x2C7F,0x245E,0x245E,0x2C7E,0x245E,0x243E,0x243E,0x243E,0x245E,0x2C5F,0x245E,0x245E,0x2C5E,0x2C5E,0x2C5F,0x2C5F,0x2C5E,0x2C5E,0x2C7E,0x349F,0x349F,0x349F,0x349E,0x349E,0x349F,0x2CBF,0x247E,0x245E,0x1C5D,0x1C3D,0x1C5D,0x249E,0x1C5D,0x1C7D,0x2CFF,0x353F,0x2CFF,0x24BF,0x249E,0x249E,0x249E,0x249E,0x247E,0x245E,0x245E,0x2C9F,0x2C9E,0x2C9E,0x2C7E,0x347F,0x347F,0x347F,0x347F,0x347F,0x349F,0x2C7F,0x2C7F,0x2C7F,0x349F,0x2C9F,0x2C7F,0x2C7F,0x2C7F,0x2C7F,0x2C7F,0x2C5E,0x2C5E,0x347F,0x347F,0x347F,0x2C5E,0x345F,0x347F,0x347F,0x347F,0x347F,0x347F,0x347F,0x2C7E,0x2C7E,0x2C7E,0x2C7F,0x2C5E,0x2C5E,0x347E,0x34BF,0x3CDF,0x34BF,0x349F,0x34BF,0x2C9E,0x2CBF,0x2C9E,0x249E,0x24BE,0x2CFF,0x24DE,0x2CFF,0x353F,0x3D5F,0x2CDF,0x247D,0x247D,0x247E,0x2C9E,0x2C9E,0x2C7E,0x2C7E,0x2C7E,0x2C7E,0x349F,0x349F,0x349F,0x349F,0x347E,0x349F,0x349F,0x349F,0x349F,0x349F,0x347F,0x349F,0x2C7E,0x347F,0x2C7E,0x347F,0x2C7F,0x2C7F,0x2C5E,0x2C7E,0x347F,0x349F,0x349F,0x2C7E,0x2C7E,0x2C7E,0x349F,0x2C7E,0x2C7E,0x2C9E,0x2C7E,0x2C7E,0x2C9E,0x2C7E,0x2C7E,0x347F,0x2C5E,0x2C5E,0x347E,0x347F,0x349F,0x3CBF,0x3CBF,0x34BF,0x34BF,0x34BF,0x2CBF,0x2C9E,0x24BE,0x2CFF,0x351F,0x353F,0x2CDE,0x2CFF,0x2CDF,0x2CBE,0x2C9E,0x2C9E,0x2C5E,0x347E,0x347E,0x349F,0x3CBF,0x3CDF,0x3CDF,0x3CDF,0x2C7E,0x349F,0x34BF,0x34BF,0x349F,0x3CBF,0x349F,0x349F,0x349F,0x349F,0x349F,0x349F,0x349F,0x349F,0x349F,0x349F,0x349F,0x349F,0x349F,0x349F,0x347E,0x349F,0x34BF,0x349F,0x349F,0x347E,0x349E,0x349E,0x349E,0x349E,0x349E,0x349F,0x34BF,0x34BF,0x34BF,0x34BE,0x34BF,0x34BF,0x34DF,0x34BF,0x34BF,0x34DF,0x34BE,0x34BE,0x34BE,0x34BE,0x34DE,0x3D5F,0x351F,0x2CDE,0x2CDE,0x2CDE,0x2CBE,0x2C9E,0x2C9E,0x349E,0x34BF,0x34BF,0x34DF,0x3CDF,0x34BF,0x349F,0x349F,0x349F,0x3CBF,0x3CDF,0x3CBF,0x349E,0x349E,0x3CBF,0x3CBF,0x3CBF,0x349E,0x3C9F,0x349F,0x3CDF,0x3CBF,0x3CBF,0x349F,0x34BF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3C9F,0x3C9F,0x349F,0x3CBF,0x3CBF,0x349F,0x349E,0x349F,0x3C9F,0x3C9F,0x3C9F,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x44DF,0x44FF,0x3CDF,0x44FF,0x44FF,0x3CFF,0x3CDF,0x34BE,0x34BE,0x34DF,0x34DF,0x2CBD,0x4D9F,0x34DE,0x34DF,0x34DF,0x34DF,0x3CDF,0x3CDF,0x3CBF,0x3CDF,0x3CBF,0x3CDF,0x3CBF,0x3CDF,0x3CBF,0x3CBF,0x3CBF,0x3C9F,0x3C9F,0x349E,0x3CBF,0x3CBF,0x3CBF,0x3C9F,0x349F,0x3CBF,0x3CBF,0x3C9F,0x349F,0x349F,0x3CBF,0x3CBF,0x3C9F,0x349F,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CDF,0x3CBF,0x3CBF,0x349F,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CDF,0x3CDF,0x3CBF,0x44FF,0x44FF,0x44FF,0x44FF,0x3CDF,0x3CDF,0x3CDF,0x3CDF,0x3CDF,0x3CDF,0x3CFF,0x2C9E,0x3D3F,0x351F,0x34DF,0x3CFF,0x3CDF,0x3CBF,0x34BF,0x3CDF,0x3CDF,0x3CDF,0x3CDF,0x3CDF,0x3CDF,0x3CBF,0x3CBF,0x3CBF,0x3CDF,0x3CDF,0x3CDF,0x3CDF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CDF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x349F,0x349F,0x3CBF,0x3CBF,0x3CBF,0x3C9F,0x3CBF,0x3CBF,0x3C9F,0x349F,0x3CBF,0x3CBF,0x3CBF,0x3CDF,0x3CDF,0x3CDF,0x3CDF,0x44FF,0x44FF,0x44FF,0x44DF,0x44DF,0x44FF,0x44FF,0x44FF,0x3CFF,0x3CDF,0x34DE,0x353F,0x353F,0x351F,0x351F,0x34DF,0x2CBE,0x2C9E,0x2C7E,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3CBF,0x3C9F,0x3C9F,0x349F,0x3CBF,0x3CBF,0x3C9F,0x3CBF,0x349F,0x3C9F,0x349F,0x34BF,0x3CBF,0x3C9F,0x349F,0x3C9F,0x3C9F,0x3C9F,0x349F,0x349F,0x349F,0x349F,0x3C9F,0x3C9F,0x3C9F,0x349F,0x349F,0x34BF,0x3CBF,0x3CBF,0x349F,0x349F,0x34BF,0x3CBF,0x3CBF,0x3CBF,0x3CDF,0x3CDF,0x3CDF,0x3CBF,0x3CBF,0x3CBF,0x34BF,0x34BF,0x3CBF,0x34BF,0x34BE,0x34BE,0x34DF,0x34FF,0x353F,0x353F,0x2CDE,0x2CDF,0x34DF,0x2C9E,0x2C7E,0x2C7E,0x2C5D,0x347E,0x3C9F,0x3C9F,0x3C9F,0x3C9F,0x3C7F,0x3C7F,0x347E,0x3C7F,0x3C9F,0x3C9F,0x3C7F,0x347E,0x3C7F,0x3C7F,0x3C9F,0x3C7F,0x3C7F,0x3C7F,0x449F,0x449F,0x449F,0x447F,0x447F,0x447F,0x449F,0x449F,0x4CBF,0x4C9F,0x4CBF,0x4C9F,0x4CBF,0x4CBF,0x4CBF,0x54BF,0x4C9F,0x4C9F,0x549F,0x549F,0x549E,0x549E,0x549E,0x5C9E,0x5CBF,0x649E,0x647E,0x645D,0x6C5D,0x743D,0x845D,0x943D,0x8B38,0x79F4,0x9214,0xA214,0xAA14,0xA1F3,0xA9D3,0xA9D3,0xA9F4,0xA9F4,0xA1B2,0xA1D3,0xA1F3,0xA213,0x9233,0x8A53,0x6251,0x5AB2,0xBE3F,0xA57C,0xAD7C,0x8396,0x69F1,0x8A53,0x9213,0x99F3,0xA9F3,0xA9D3,0xB1F4,0xA9F4,0xA9D3,0xA9F4,0xAA14,0x9A14,0x8A14,0x7214,0x7BBA,0x745D,0x5C3D,0x441D,0x443D,0x3C5D,0x3C5E,0x449F,0x3C5E,0x3C9F,0x347E,0x3C9F,0x3C9F,0x3C9F,0x3C9F,0x3C9F,0x349E,0x349E,0x2C7E,0x2C7E,0x349E,0x34BF,0x34BF,0x2C9E,0x2C9E,0x247E,0x247D,0x1C7D,0x24BE,0x2CFF,0x2D1F,0x2CFF,0x24DF,0x249E,0x249E,0x249E,0x247E,0x247E,0x245D,0x243D,0x243D,0x2C7E,0x347E,0x347F,0x347F,0x347F,0x347F,0x347F,0x349F,0x349F,0x349F,0x349F,0x2C5E,0x2C5F,0x2C5F,0x2C5E,0x2C5F,0x2C7F,0x2C5F,0x2C7F,0x2C5F,0x2C5F,0x2C5F,0x2C5F,0x2C5E,0x245E,0x2C5E,0x2C7E,0x2C5E,0x243E,0x243E,0x245E,0x2C7E,0x2C7F,0x2C7E,0x2C7E,0x247E,0x2C7E,0x2C9E,0x2C7E,0x2C7E,0x2C7E,0x2C9E,0x2C9E,0x247E,0x245D,0x249E,0x2CBF,0x249E,0x247D,0x1C3D,0x249E,0x24BE,0x2CFF,0x2D1F,0x2CDF,0x249E,0x1C5D,0x1C7E,0x249E,0x247E,0x245E,0x243E,0x243E,0x243E,0x245E,0x245E,0x2C5E,0x245E,0x243E,0x243E,0x245E,0x243E,0x245E,0x245E,0x243E,0x243E,0x243E,0x2C3E,0x243E,0x243E,0x243E,0x243E,0x243E,0x1C3D,0x243E,0x243E,0x245E,0x241E,0x241E,0x241E,0x2C3E,0x2C3E,0x2C3E,0x2C1E,0x23FE,0x2C3E,0x2C3E,0x2C3E,0x2C5E,0x243E,0x245E,0x1C3D,0x1C3E,0x1C3D,0x1C5E,0x247E,0x1C5E,0x1C5E,0x1C3D,0x1C3D,0x1C3D,0x141C,0x141C,0x1C3D,0x249F,0x2CDF,0x2CFF,0x24DF,0x1C7E,0x143D,0x143D,0x141D,0x141D,0x141D,0x13FD,0x13FD,0x13FD,0x13FD,0x1C1D,0x1C1D,0x243E,0x1C1E,0x1BFD,0x1BFD,0x23FD,0x23FD,0x23FD,0x241E,0x241E,0x1BFD,0x1C1D,0x1BFD,0x1BFD,0x1BFD,0x1BFD,0x1BFD,0x1C1D,0x1BFD,0x1BFD,0x1BFD,0x23FD,0x241E,0x241E,0x243E,0x241D,0x241D,0x23FD,0x23FD,0x241D,0x241D,0x241D,0x243E,0x243E,0x245E,0x245E,0x245E,0x1C3D,0x1C3D,0x1C3D,0x141D,0x0BBB,0x13FC,0x141C,0x13FC,0x13FC,0x141C,0x247E,0x2CBF,0x34FF,0x2D1F,0x2CDF,0x249E,0x143D,0x0BFC,0x0BDB,0x0BDB,0x13DC,0x0BDC,0x13DC,0x0BBC,0x13BC,0x13BC,0x13DC,0x1BDD,0x1BFD,0x1BFD,0x241D,0x1BFD,0x23FE,0x23FD,0x23FD,0x23FE,0x241E,0x1BDD,0x1BDD,0x13DD,0x1BDD,0x1BDD,0x1BDD,0x1BDD,0x1BDD,0x1BDD,0x1BBD,0x1BBD,0x1BDD,0x1BBD,0x1BDD,0x1BDD,0x1BFD,0x1BFD,0x1BDC,0x1BDD,0x1BFD,0x1BFD,0x1BFC,0x1BDC,0x1BDC,0x13DC,0x13DC,0x13DC,0x13FD,0x13FC,0x13FC,0x0BDC,0x0BDC, + 0x0B3A,0x0B3A,0x0B3A,0x0B3A,0x0B5A,0x0339,0x0319,0x0339,0x0339,0x037A,0x039A,0x143D,0x24DF,0x2D1F,0x2D1F,0x2CFF,0x2CBE,0x1C5D,0x0BBB,0x0359,0x02F9,0x02D9,0x02D8,0x02D8,0x02D9,0x02D9,0x02D9,0x02F9,0x02F9,0x02F9,0x031A,0x0319,0x033A,0x031A,0x0B3A,0x0B3A,0x0B5A,0x0B3A,0x0B3A,0x0B1A,0x0B3A,0x0B3A,0x0B1A,0x0B3B,0x0B3A,0x135B,0x135B,0x0B3B,0x135B,0x135B,0x0B5B,0x135B,0x135B,0x0B5B,0x135B,0x135B,0x137B,0x0B5B,0x135B,0x135B,0x135B,0x135B,0x135B,0x133B,0x135B,0x135B,0x0B3A,0x0B5A,0x0B5A,0x033A,0x033A,0x0339,0x0339,0x0339,0x035A,0x037A,0x039B,0x03BB,0x0BFC,0x1CBF,0x2CFF,0x2CFF,0x249E,0x143D,0x0BDB,0x0B9A,0x035A,0x0319,0x0319,0x0319,0x031A,0x031A,0x0339,0x0B3A,0x0B3A,0x0339,0x033A,0x033A,0x0B3A,0x0B5A,0x0B5A,0x0B5A,0x0B5B,0x0B5B,0x137B,0x0B5B,0x137B,0x137C,0x137C,0x137B,0x139C,0x139C,0x137C,0x137C,0x139C,0x137C,0x137C,0x139C,0x139C,0x139C,0x139C,0x139C,0x139C,0x137B,0x1B9C,0x139B,0x137B,0x137B,0x137B,0x137B,0x137B,0x137B,0x135A,0x137A,0x0B5A,0x0B5A,0x035A,0x0359,0x037A,0x03BA,0x03DB,0x041C,0x147D,0x251F,0x2D3F,0x2CFF,0x1C7D,0x13FC,0x039A,0x037A,0x033A,0x033A,0x033A,0x0339,0x033A,0x033A,0x033A,0x0B3A,0x0B5A,0x135B,0x135B,0x137B,0x135B,0x137B,0x137B,0x137B,0x139C,0x139C,0x139C,0x139C,0x139C,0x139C,0x1BBC,0x1BBC,0x1BBC,0x1BBC,0x139C,0x139C,0x1BBC,0x13BC,0x13BC,0x13BC,0x1BBC,0x1BBC,0x13BC,0x1BBC,0x1BBC,0x139C,0x139C,0x139B,0x137B,0x137B,0x137B,0x137B,0x137A,0x137B,0x137A,0x139A,0x0B7A,0x0B7A,0x035A,0x035A,0x037A,0x03BB,0x0BFC,0x145D,0x1C9E,0x2D1F,0x351F,0x249E,0x141C,0x0BDB,0x0BBB,0x0BBB,0x0B9B,0x0B9B,0x0B9A,0x0B9B,0x0B7B,0x139B,0x139B,0x139B,0x139B,0x139B,0x1BBC,0x139B,0x1B9B,0x1B9C,0x1BBC,0x1BBC,0x1BBC,0x1BBC,0x1BDC,0x1BBC,0x1BDC,0x1BDC,0x1BDC,0x1BDC,0x1BDC,0x1BDC,0x1BBC,0x1BBC,0x1BDC,0x1BBC,0x1BBC,0x1BBC,0x23DC,0x1BBC,0x1BBC,0x1BDC,0x1BDC,0x1BBC,0x1BBC,0x1BDC,0x1BBC,0x139B,0x1BBC,0x1BBC,0x1BBB,0x1BBB,0x1BBB,0x139B,0x139B,0x139B,0x0B7A,0x0B9A,0x0B9B,0x0BDB,0x141C,0x145D,0x24DF,0x351F,0x2CFF,0x1C5C,0x0BDB,0x13DB,0x0BBB,0x13BB,0x13BB,0x13BB,0x13BB,0x1BDC,0x1BBC,0x1BBC,0x1BDC,0x1BDC,0x1BDC,0x1BBC,0x1BDC,0x1BDC,0x1BDC,0x1BDC,0x1BDC,0x1BBC,0x23FD,0x1BDC,0x1BDC,0x1BDC,0x23FD,0x1BDC,0x23FD,0x1BDC,0x23DC,0x23DC,0x23FC,0x23DC,0x23FD,0x23FC,0x23FD,0x1BFC,0x1BFC,0x23FC,0x1BFC,0x1BDC,0x1BFC,0x1BFC,0x1BFC,0x1BDC,0x1BFC,0x1BDC,0x23DC,0x1BDC,0x23DC,0x23DC,0x23FC,0x1BBB,0x1BDC,0x1BDB,0x1BDB,0x13DB,0x0B9A,0x0BBB,0x141C,0x2D1F,0x353F,0x2CFF,0x249E,0x247D,0x1C3C,0x1C1C,0x1BFC,0x1BFC,0x1BDC,0x1BDC,0x1BDC,0x1BDC,0x23FD,0x23FD,0x241D,0x1BFC,0x1BBC,0x1BDC,0x1BDC,0x23FC,0x23FD,0x23DC,0x23FC,0x23FC,0x23FC,0x23DC,0x23FD,0x23FC,0x23FC,0x23FC,0x23FD,0x23FC,0x23FD,0x23FC,0x23FD,0x23FC,0x23FD,0x23FC,0x23FC,0x23FC,0x23FC,0x23FD,0x23FC,0x23FC,0x23FC,0x23FC,0x241D,0x241D,0x241D,0x241D,0x241D,0x241C,0x241D,0x241C,0x241C,0x241C,0x241C,0x23FC,0x23FC,0x23FC,0x1BFC,0x1BFB,0x247C,0x3D5F,0x2CDE,0x249D,0x249D,0x247D,0x1C3C,0x1C1C,0x241C,0x241C,0x241D,0x241D,0x241D,0x241C,0x241D,0x23FD,0x23FC,0x23FC,0x2C1D,0x2C1D,0x241D,0x241C,0x23FC,0x2C1D,0x2C1C,0x23FC,0x2C1D,0x23FD,0x2C1D,0x2C1D,0x2C1D,0x23FC,0x241D,0x241D,0x2C1D,0x241D,0x2C1D,0x2C1D,0x2C1D,0x241D,0x241D,0x241D,0x23FD,0x23FD,0x241D,0x23FC,0x2C1D,0x23FC,0x23FC,0x23FC,0x23FC,0x23FC,0x23FC,0x2C1C,0x2C1C,0x23FC,0x241C,0x241C,0x241C,0x23FC,0x23FC,0x1BFC,0x1BFB,0x13DB,0x245C,0x459F,0x1C3C,0x245D,0x243D,0x241C,0x241C,0x241C,0x241C,0x241D,0x241D,0x241D,0x241D,0x241D,0x2C1D,0x2BFD,0x23FC,0x2C1D,0x23FD,0x23FD,0x23FD,0x2C1D,0x2C1D,0x23FD,0x2C1D,0x2C1D,0x2C1D,0x23FD,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x2C3D,0x241D,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x241C,0x23FC,0x241D,0x2C1D,0x23FC,0x2C1D,0x2C1D,0x2C1C,0x241C,0x2C3D,0x241C,0x23FC,0x241C,0x241C,0x2C3D,0x241D,0x1BFB,0x351F,0x2CDE,0x13DB,0x241D,0x1BDC,0x241C,0x241D,0x241D,0x241D,0x241D,0x2C1D,0x2C1D,0x2C3D,0x2C1D,0x2C1D,0x2C3D,0x2C3D,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x2C1D,0x241D,0x23FD,0x2C1D,0x2C1D,0x2C1D,0x23FD,0x2C1D,0x2C1D,0x2C1E,0x23FD,0x2C1D,0x2C1D,0x2C1D,0x241D,0x23FD,0x2C1D,0x241D,0x23FD,0x23FD,0x23FD,0x23FD,0x23FD,0x23FD,0x23FD,0x23FD,0x23FC,0x23FD,0x23FD,0x23FD,0x241D,0x241D,0x23FC,0x23FC,0x23DC,0x23DC,0x1BBB,0x1BBB,0x1BDB,0x1BBB,0x1BDB,0x13DB,0x1C5D,0x351F,0x24BE,0x1C5D,0x245D,0x1C1C,0x1C1C,0x241C,0x243D,0x241D,0x241D,0x2C1D,0x241D,0x2C1D,0x2C1D,0x2C1D,0x23FD,0x23FD,0x23FD,0x241D,0x23FD,0x23FD,0x23FD,0x23FD,0x23FD,0x23FD,0x23FD,0x23FD,0x23FD,0x23FD,0x23DC,0x23DC,0x23FD,0x23FD,0x23DD,0x23FD,0x23FD,0x23FD,0x23DD,0x23FD,0x23FD,0x23FD,0x23DD,0x23FD,0x23FD,0x23FD,0x23DD,0x23FD,0x23DC,0x23FD,0x23DC,0x241D,0x23FD,0x23FD,0x23FD,0x1BDC,0x1BDC,0x1BBB,0x13BB,0x13BB,0x0B7A,0x139A,0x13FB,0x249D,0x351F,0x2D1F,0x1C5D,0x141C,0x1C1C,0x1BFC,0x1BFC,0x23FC,0x23FD,0x2BFD,0x2BFD,0x2BFD,0x2BFD,0x2BFD,0x23DD,0x23FD,0x23FD,0x23FD,0x23DC,0x2BFD,0x23DD,0x23DC,0x2BDD,0x2BFD,0x2BDD,0x2BFD,0x2BDC,0x33FD,0x2BFD,0x2BFD,0x2BDD,0x33FD,0x33FD,0x33FD,0x341D,0x3C1D,0x3C1D,0x3C3E,0x3C3D,0x3C1D,0x3C1D,0x3C1D,0x441D,0x443E,0x445E,0x443D,0x443E,0x4C5E,0x4C3D,0x545E,0x4C3D,0x545E,0x5C5E,0x5C5E,0x5C1D,0x5C1D,0x63FD,0x6BFC,0x83FC,0x9BFC,0x8296,0x81D3,0x9A35,0xA214,0xAA14,0xA1D3,0xA9D3,0xA9F4,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xA1F3,0x9A13,0x8A12,0x8272,0x59CF,0x9C99,0xBDBE,0xACFB,0x9BF8,0x7211,0x9274,0x9A33,0xA1F3,0xA1D2,0xA9F3,0xA9D3,0xB1F4,0xA9B3,0xA9F3,0xA1F3,0x9A14,0x9234,0x7214,0x7B7A,0x849F,0x643D,0x543D,0x441D,0x3C3D,0x3C3D,0x341D,0x343D,0x2BFD,0x2C1D,0x23FC,0x23FC,0x23FC,0x23FC,0x23DC,0x23FC,0x23DC,0x1BDC,0x1BDC,0x1BDC,0x1BDC,0x13BB,0x13BB,0x13BB,0x0B9A,0x0B9B,0x0B9A,0x0B9B,0x13FC,0x1C5D,0x24BF,0x2CDF,0x24BE,0x1C5D,0x0BDB,0x0BBA,0x0B9A,0x0B7A,0x0B9B,0x139B,0x1BBB,0x1BBC,0x1BBC,0x1BBC,0x1B9C,0x1BBC,0x1B9C,0x1BDC,0x1BDC,0x1BDC,0x1BDC,0x1BDC,0x1BDD,0x1BBC,0x1BBC,0x1BBC,0x1BBC,0x1BDD,0x1BDC,0x1BBC,0x1BBC,0x1BDD,0x1BBC,0x1BDC,0x1BDC,0x1BDC,0x1BBC,0x1BDC,0x1BBC,0x13BC,0x1BBC,0x13BC,0x13BC,0x13BC,0x13BC,0x13BC,0x13BB,0x13BC,0x13BB,0x13BB,0x13BB,0x0B7A,0x139B,0x0B5A,0x0B5A,0x033A,0x0B5A,0x0B7A,0x0339,0x0B7A,0x035A,0x037A,0x0BBB,0x1C3D,0x2CBF,0x2CFF,0x249E,0x03BB,0x039A,0x0B9B,0x0B9B,0x0B7A,0x0B7A,0x0B7B,0x139B,0x139B,0x139B,0x13BC,0x139B,0x139C,0x139C,0x139B,0x137B,0x139C,0x137C,0x137C,0x1B9C,0x1B9C,0x1B9C,0x139C,0x139C,0x139C,0x139C,0x139C,0x139C,0x139C,0x139B,0x139C,0x1B9C,0x137B,0x135B,0x137B,0x137B,0x137C,0x1B7C,0x1B9C,0x137B,0x137B,0x137B,0x139B,0x139C,0x137B,0x139B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B7A,0x0B7B,0x035A,0x0B7A,0x033A,0x035A,0x033A,0x0B9B,0x141D,0x24BF,0x2CFF,0x2CFF,0x1C7E,0x03BB,0x037A,0x037B,0x037A,0x035A,0x035A,0x035A,0x0B7B,0x0B5B,0x0B7B,0x0B7B,0x0B5B,0x137B,0x135B,0x0B5B,0x137B,0x137B,0x137B,0x137B,0x137B,0x0B7B,0x137C,0x137B,0x0B7B,0x139C,0x137C,0x137B,0x137B,0x137B,0x135B,0x137C,0x135B,0x135B,0x135B,0x135B,0x135B,0x135B,0x135B,0x0B5B,0x0B5A,0x135B,0x0B5A,0x137B,0x0B5B,0x0B5B,0x0B3A,0x033A,0x0339,0x0319,0x0319,0x0319,0x0319,0x0319,0x02F9,0x0319,0x0319,0x0339,0x037A,0x13FC,0x1C7D,0x2CFF,0x351F,0x2CFF,0x143D,0x037A,0x037A,0x037A,0x035A,0x033A,0x0319,0x0339,0x0319,0x031A,0x0B3A,0x0B3A,0x0B3A,0x0B3A,0x0B3A,0x0B3A,0x135A,0x133B,0x0B3A,0x0B3B,0x0B5B,0x0B3A,0x0B3B,0x0B5B,0x0B3B,0x135B,0x133B,0x135C,0x133B,0x135B,0x135B,0x0B3B,0x133B,0x135B,0x135B,0x137B,0x137B,0x137B,0x137B,0x137B,0x137B,0x137A,0x137B,0x137B,0x137A,0x137B,0x0B5A,0x0B5A,0x0B7A,0x0B5A,0x0B7B, + 0x0277,0x0297,0x0297,0x0277,0x0277,0x0276,0x0297,0x02D7,0x0339,0x03DB,0x147E,0x24DF,0x1CBF,0x1C7E,0x0BDB,0x035A,0x02F8,0x02D8,0x02B7,0x0297,0x0277,0x0277,0x0277,0x0277,0x0277,0x0277,0x0257,0x0237,0x0257,0x0256,0x0257,0x0257,0x0257,0x0277,0x0277,0x0277,0x0277,0x0277,0x0277,0x0277,0x0277,0x0277,0x0278,0x0278,0x0257,0x0257,0x0257,0x0257,0x0278,0x0278,0x0278,0x0278,0x0278,0x0278,0x0278,0x0278,0x0278,0x0278,0x0258,0x0258,0x0258,0x0257,0x0257,0x0257,0x0257,0x0257,0x0278,0x0297,0x0298,0x02B8,0x0297,0x0297,0x02B7,0x02F8,0x0339,0x037A,0x03BB,0x145D,0x24FF,0x2CDF,0x0BDB,0x035A,0x0339,0x0318,0x02D7,0x02B7,0x02B7,0x02B7,0x0297,0x0297,0x0297,0x0277,0x0277,0x0277,0x0277,0x0297,0x0297,0x0297,0x0297,0x0297,0x0297,0x0297,0x0298,0x0278,0x0298,0x0278,0x0298,0x0298,0x0298,0x0298,0x0278,0x0278,0x0278,0x0298,0x0278,0x0278,0x0278,0x0298,0x0278,0x0278,0x0278,0x0298,0x0298,0x0298,0x0298,0x0278,0x0298,0x0298,0x0277,0x0277,0x0297,0x0297,0x0297,0x0297,0x0297,0x02B7,0x02D8,0x0318,0x0339,0x037A,0x03DB,0x147D,0x24DF,0x24DF,0x0BDB,0x0359,0x0319,0x02F8,0x02B7,0x02B7,0x02B8,0x02B8,0x02D8,0x02D8,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0278,0x0278,0x0278,0x0278,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0278,0x0278,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0297,0x0277,0x0297,0x0297,0x0297,0x0297,0x02B7,0x02B8,0x02D8,0x02D8,0x02F8,0x0339,0x039A,0x03DB,0x0C3C,0x1CBE,0x1C7E,0x037A,0x0319,0x0318,0x02D8,0x02B7,0x02B7,0x02D8,0x02B8,0x02B7,0x02B7,0x0297,0x0297,0x0298,0x02B8,0x02B8,0x0298,0x0298,0x0298,0x0297,0x0298,0x02B8,0x0298,0x0298,0x0298,0x0277,0x0298,0x0277,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x02B8,0x0298,0x0298,0x0298,0x0298,0x02B8,0x0298,0x0298,0x0298,0x0298,0x0298,0x0297,0x0297,0x0298,0x0298,0x02B8,0x02B8,0x0297,0x0297,0x02B8,0x02B8,0x02B7,0x02D8,0x02D7,0x02D7,0x0318,0x0359,0x0BDB,0x24DF,0x24BF,0x13FC,0x0339,0x0318,0x0318,0x02D8,0x02D7,0x02B7,0x0297,0x0297,0x0297,0x02B8,0x02B8,0x02B8,0x0297,0x0297,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02D8,0x02D8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B7,0x02B7,0x0297,0x0297,0x02D7,0x02D8,0x02B7,0x02D7,0x02F7,0x0338,0x1C7D,0x2D1F,0x1C9D,0x039A,0x0338,0x0318,0x02F7,0x02D7,0x02B7,0x02B7,0x02D8,0x02D8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B7,0x0297,0x02B8,0x02B7,0x02B7,0x02B8,0x02B8,0x02B8,0x0297,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B7,0x0297,0x0297,0x02B7,0x0297,0x02B7,0x02B7,0x02B7,0x02B7,0x02B7,0x02D7,0x02D7,0x02D7,0x02D7,0x02D7,0x2CDE,0x2CFF,0x141C,0x0338,0x02F7,0x02F7,0x02F8,0x02F8,0x02D8,0x02D7,0x02B7,0x02B7,0x02B7,0x02B7,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B7,0x02B8,0x02B7,0x0297,0x0297,0x0297,0x02B7,0x02B7,0x02B7,0x02B8,0x02B8,0x0297,0x0297,0x0297,0x0297,0x0297,0x02B7,0x0297,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B7,0x02B7,0x02B7,0x0297,0x02B7,0x0297,0x0297,0x0297,0x0297,0x02B7,0x02D7,0x02D8,0x02D7,0x02D7,0x02D7,0x02F8,0x249D,0x34FF,0x0359,0x02D8,0x0297,0x02B8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0297,0x0297,0x0297,0x0297,0x0297,0x0297,0x0297,0x0297,0x0297,0x0297,0x0298,0x0297,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x0297,0x0297,0x0297,0x0297,0x0297,0x02B7,0x0297,0x02B7,0x02B7,0x02B7,0x02B7,0x02B7,0x02B7,0x0297,0x0297,0x0297,0x0297,0x0297,0x02B8,0x0297,0x0297,0x02B8,0x02B7,0x02B7,0x0297,0x02B7,0x02F8,0x351F,0x24BE,0x02F8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02B8,0x0298,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x0298,0x0298,0x02B8,0x0298,0x0298,0x02B8,0x0298,0x0298,0x0298,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x02D8,0x02D8,0x02D8,0x02F7,0x0338,0x2CFF,0x1C5D,0x0318,0x02F8,0x02F8,0x02F8,0x02D8,0x02F8,0x02B8,0x02B8,0x02B8,0x02D8,0x02B8,0x02B8,0x0298,0x0298,0x02B8,0x02B8,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x02B8,0x0298,0x0298,0x0298,0x02B8,0x0298,0x0298,0x02B8,0x0298,0x0298,0x02B8,0x02B8,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x02B8,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0277,0x0277,0x0298,0x0298,0x0298,0x0298,0x02B8,0x02D8,0x02B8,0x02B8,0x02B7,0x02D7,0x0339,0x143C,0x2D1F,0x1C7D,0x0338,0x0318,0x02F8,0x02F8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x0298,0x02B8,0x02B8,0x0298,0x02B8,0x0298,0x0298,0x0298,0x02B8,0x0AB8,0x0A98,0x0A98,0x0AB8,0x0AB8,0x0AB8,0x0A97,0x0A98,0x0AB8,0x12B8,0x12B8,0x12D8,0x12B8,0x12B8,0x12D8,0x1AD8,0x1AF9,0x1AD8,0x1298,0x1A98,0x1A98,0x1A98,0x2AB9,0x2AB9,0x2AB9,0x32B9,0x42D9,0x4AB8,0x62D8,0x7AD8,0x7A15,0x8A15,0xA255,0x99F3,0xA1D3,0xAA14,0xA9D3,0xA9D3,0xA9B3,0xA9D3,0xA9F3,0xA9F3,0xAA33,0x9A33,0x8A32,0x7A31,0x7252,0xC51D,0xC53D,0x9376,0x7A12,0x9213,0x9A33,0xA213,0xAA13,0xA9F3,0xA9F3,0xA9D3,0xA9F3,0xA9F3,0xA1F3,0xA214,0x9214,0x8255,0x6256,0x4215,0x3257,0x1A57,0x1297,0x12B8,0x0AB8,0x0AD9,0x02D8,0x02D8,0x02B8,0x0298,0x0277,0x0297,0x0298,0x0297,0x0297,0x02B8,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x02B8,0x02D8,0x02B8,0x02D8,0x02D8,0x02F8,0x0319,0x0339,0x0BBB,0x1C5D,0x2D1F,0x145D,0x0359,0x0339,0x0319,0x02F8,0x0297,0x0277,0x0297,0x0297,0x02B8,0x02B8,0x0298,0x02B8,0x0277,0x0298,0x0297,0x0298,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x0298,0x0297,0x0298,0x0298,0x0298,0x02B8,0x02B8,0x0298,0x0298,0x0297,0x0298,0x0297,0x0298,0x0298,0x0298,0x0298,0x0297,0x02B8,0x0297,0x0298,0x0298,0x0298,0x0277,0x0277,0x0298,0x02B8,0x02D8,0x02B8,0x02D8,0x02D8,0x02D8,0x0319,0x0339,0x13FC,0x247E,0x2CDF,0x039A,0x0339,0x02F8,0x02F9,0x02D8,0x0297,0x0277,0x0277,0x0298,0x0298,0x0298,0x0298,0x02B8,0x0298,0x0298,0x0298,0x02B8,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0278,0x0298,0x0298,0x0278,0x0298,0x0278,0x0278,0x0278,0x0257,0x0277,0x0278,0x0278,0x0278,0x0298,0x0298,0x0298,0x0278,0x0277,0x0277,0x0277,0x0277,0x0297,0x0297,0x02B8,0x02D8,0x02D9,0x0319,0x0339,0x033A,0x039B,0x13FC,0x1C5E,0x24BF,0x0BBB,0x0339,0x0319,0x0319,0x02D9,0x02B8,0x0298,0x0298,0x0298,0x0298,0x0298,0x0278,0x0278,0x0298,0x0298,0x0298,0x0298,0x0278,0x0277,0x0277,0x0278,0x0278,0x0298,0x0298,0x0278,0x0278,0x0278,0x0277,0x0257,0x0257,0x0257,0x0257,0x0257,0x0278,0x0277,0x0257,0x0257,0x0257,0x0277,0x0278,0x0257,0x0277,0x0277,0x0257,0x0277,0x0277,0x0297,0x0297,0x0297,0x0277,0x0277,0x0297,0x0297,0x0297,0x02B7,0x02B8,0x02D8,0x02F8,0x02F8,0x0339,0x0B9B,0x141D,0x247E,0x1C7E,0x03BB,0x0339,0x0319,0x02F9,0x02D8,0x02B8,0x0297,0x0297,0x0297,0x0277,0x0257,0x0257,0x0257,0x0256,0x0257,0x0277,0x0277,0x0277,0x0277,0x0278,0x0278,0x0258,0x0258,0x0278,0x0258,0x0257,0x0257,0x0237,0x0237,0x0257,0x0257,0x0237,0x0257,0x0257,0x0257,0x0237,0x0237,0x0236,0x0236,0x0256,0x0236,0x0256,0x0256,0x0256,0x0256,0x0256,0x0277,0x0277,0x0277, + 0x0236,0x0257,0x0236,0x0256,0x0256,0x0297,0x0B59,0x13FC,0x249E,0x24BF,0x145D,0x03FC,0x039A,0x035A,0x0339,0x0319,0x02F8,0x02D8,0x02B8,0x02B8,0x0298,0x0297,0x0298,0x0298,0x0298,0x0298,0x0277,0x0277,0x0297,0x0297,0x0297,0x0277,0x0277,0x0277,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0278,0x0278,0x0257,0x0278,0x0278,0x0298,0x0298,0x0298,0x0298,0x0298,0x0278,0x0298,0x0298,0x0298,0x0278,0x0278,0x0278,0x0278,0x0278,0x0278,0x0278,0x0278,0x0298,0x0298,0x02B8,0x02D8,0x02B7,0x02B7,0x02B7,0x02F8,0x037A,0x141C,0x1C7E,0x1C9E,0x1CBE,0x0BFC,0x037A,0x0339,0x0319,0x0319,0x02F8,0x02D8,0x02D8,0x02D8,0x02B8,0x02D8,0x02B7,0x02B8,0x02B8,0x02B8,0x02B7,0x02B8,0x02B8,0x02B8,0x02B8,0x02D8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x0298,0x0299,0x0299,0x0298,0x0298,0x0278,0x0298,0x0298,0x0299,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x02B8,0x02B7,0x02B7,0x02B8,0x02B7,0x02B8,0x02D8,0x02F8,0x0379,0x141C,0x1C7D,0x1CBE,0x24DF,0x143C,0x039A,0x0339,0x0319,0x02F8,0x02D8,0x02F8,0x02D8,0x02D8,0x02F9,0x02F9,0x02D8,0x02D9,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x0298,0x0298,0x02B9,0x02B8,0x02B8,0x0298,0x02B9,0x02B8,0x0298,0x0298,0x02B8,0x0298,0x0298,0x0298,0x0298,0x02B8,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x02B8,0x0298,0x02B8,0x0298,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x02B7,0x02B8,0x02B8,0x02D8,0x02D8,0x02F8,0x02F8,0x02F8,0x0359,0x0BFC,0x147D,0x1C9E,0x24BF,0x0C1C,0x037A,0x0339,0x0339,0x0319,0x02F8,0x02F8,0x02F8,0x02F8,0x02F9,0x02F8,0x02D8,0x02D9,0x02D9,0x02D9,0x02B8,0x02B8,0x02B8,0x02D8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x0298,0x02B8,0x0298,0x0298,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02D8,0x02B8,0x02D8,0x02D8,0x02B8,0x02B8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02B8,0x02D8,0x02D8,0x02F8,0x02F8,0x02F8,0x0318,0x039A,0x1C7E,0x24DF,0x24BF,0x03BB,0x0359,0x0319,0x0319,0x02F8,0x0318,0x02F8,0x02D8,0x02D8,0x02D8,0x02D8,0x02F9,0x02F9,0x02D8,0x02D8,0x02D8,0x02D8,0x02B8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D9,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02B8,0x02D8,0x02D8,0x02D8,0x02B7,0x02D8,0x02D7,0x02D8,0x02F8,0x0318,0x0338,0x0338,0x141C,0x2CFF,0x145D,0x0399,0x0318,0x02F8,0x02F8,0x02F8,0x02D8,0x02F8,0x02F8,0x02F8,0x02F8,0x02F8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D9,0x02D9,0x02D9,0x02D9,0x02B8,0x02D8,0x02D8,0x02D8,0x02B8,0x02D8,0x02B8,0x02B8,0x02B8,0x02D8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02D8,0x02B8,0x02D8,0x02B8,0x02B8,0x02B8,0x02D8,0x02B8,0x02B8,0x02B8,0x02D8,0x02B7,0x02D8,0x02D8,0x02D8,0x02D7,0x02D8,0x02B7,0x02D7,0x0318,0x02F8,0x0B9A,0x351F,0x143C,0x0BBB,0x0339,0x0338,0x0318,0x0318,0x02F8,0x02F8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0297,0x0297,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02D8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02B7,0x02D8,0x02D8,0x02F8,0x02F8,0x02F8,0x02F8,0x0318,0x0318,0x2CFF,0x1C5D,0x0339,0x0319,0x02F8,0x02F8,0x02F9,0x02F8,0x02F8,0x02F8,0x02F8,0x02D8,0x02F8,0x02D8,0x02D8,0x02D8,0x02D8,0x02B8,0x02D8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0297,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x0297,0x02B8,0x02B8,0x02B8,0x0297,0x02B7,0x02B7,0x02B7,0x02B7,0x02B8,0x02B8,0x02B8,0x02B8,0x02D8,0x02B8,0x02D8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02D8,0x02B7,0x02B7,0x02F8,0x351F,0x24BE,0x0339,0x0319,0x0319,0x0319,0x02F9,0x02F9,0x02F9,0x02D8,0x02D9,0x02D9,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02D9,0x02B9,0x02D9,0x02D9,0x02D9,0x02B8,0x02D9,0x02D8,0x02D8,0x02F8,0x02F8,0x02F8,0x0318,0x0318,0x1C7D,0x2D1F,0x0359,0x0359,0x0339,0x0318,0x02F8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D9,0x02D9,0x0298,0x02B9,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x0298,0x02B8,0x0298,0x02B8,0x0298,0x0298,0x0298,0x02B9,0x02B8,0x02D8,0x02D8,0x02D8,0x02D8,0x02F8,0x02D8,0x02D8,0x02D8,0x0319,0x039A,0x147D,0x2CFF,0x13FC,0x0359,0x0339,0x0319,0x0319,0x02F9,0x02D9,0x02D9,0x02D9,0x02B8,0x02D9,0x02D9,0x02D9,0x02B8,0x02D9,0x02B8,0x02B8,0x02D8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0297,0x0277,0x0A98,0x0297,0x0297,0x0A97,0x0A98,0x0277,0x0AB8,0x0AB8,0x0A97,0x12B8,0x12B8,0x0A97,0x1AB8,0x1298,0x1A98,0x1A98,0x22B8,0x2298,0x2AD9,0x2AB8,0x3298,0x3A77,0x4A56,0x5A35,0x7A76,0x8215,0x9A55,0x9A14,0xA214,0xA9F4,0xA9F3,0xA9D3,0xB1F3,0xB1F3,0xA9D3,0xA9F3,0xA1F3,0xA213,0x9A12,0x8A12,0x8212,0x8AB4,0xCCDC,0xAB98,0x81F2,0x9A33,0x9A13,0xA213,0xA9F3,0xA9F3,0xA9D3,0xA9D3,0xB214,0xA9F3,0xAA14,0xA234,0x9235,0x8A96,0x6A56,0x41F5,0x21D5,0x2257,0x1256,0x0A97,0x0AB8,0x0298,0x0298,0x0298,0x0298,0x0277,0x0297,0x0297,0x0298,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B9,0x02B9,0x02B9,0x02B8,0x02D8,0x02D8,0x02D8,0x02D8,0x02D8,0x02F8,0x02F9,0x0319,0x0339,0x039A,0x145C,0x24FF,0x145D,0x03BA,0x0359,0x0339,0x02F8,0x02D8,0x02D8,0x02F9,0x02D8,0x02F9,0x02F9,0x02D8,0x02D8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x0298,0x02B8,0x0297,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x0298,0x0298,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02D8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B9,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02D8,0x02F9,0x0319,0x0339,0x039A,0x1C5D,0x351F,0x1C5D,0x0BBB,0x0359,0x0319,0x02F8,0x02D8,0x02D8,0x02D8,0x02D8,0x02B8,0x02D9,0x02B9,0x02B8,0x02B8,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B9,0x0298,0x0298,0x0278,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02D9,0x0319,0x033A,0x033A,0x033A,0x037B,0x143D,0x24BF,0x1C3D,0x0BBB,0x035A,0x031A,0x02F9,0x02D8,0x02B8,0x02B8,0x02D8,0x02D8,0x02B9,0x02B8,0x02B8,0x02B8,0x02B8,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0278,0x0298,0x0298,0x0298,0x0278,0x0298,0x0278,0x0298,0x0278,0x0278,0x0278,0x0298,0x0298,0x0298,0x0278,0x0278,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x0298,0x02B8,0x02B8,0x02B8,0x0298,0x0297,0x0297,0x02B7,0x02B7,0x02B7,0x02B7,0x02B8,0x02D8,0x02F8,0x0319,0x0319,0x0339,0x037A,0x143D,0x2CDF,0x1C7E,0x13DB,0x035A,0x0319,0x02F8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x0297,0x0297,0x0297,0x0297,0x0298,0x0298,0x0298,0x0298,0x0278,0x0278,0x0257,0x0278,0x0277,0x0278,0x0257,0x0257,0x0257,0x0257,0x0257,0x0257,0x0257,0x0257,0x0257,0x0257,0x0257,0x0257,0x0256,0x0277,0x0257,0x0277,0x0257,0x0256,0x0277,0x0276,0x0277,0x0297,0x0298, + 0x0298,0x02D9,0x02F9,0x035A,0x1BFC,0x247E,0x2CBF,0x24BE,0x1C7D,0x0C1C,0x039B,0x037A,0x033A,0x0339,0x0319,0x0319,0x02F8,0x0319,0x02F9,0x02F9,0x0319,0x0319,0x033A,0x033A,0x033A,0x033A,0x033A,0x033A,0x033A,0x033A,0x033A,0x033A,0x0B3A,0x0B5A,0x0B3A,0x0B3A,0x031A,0x031A,0x033A,0x033A,0x033A,0x0B5A,0x031A,0x033A,0x033A,0x031A,0x031A,0x033A,0x033A,0x033A,0x033A,0x033A,0x033A,0x033A,0x0B5B,0x0B5B,0x0B5B,0x0B7B,0x033A,0x033A,0x033A,0x033A,0x0B5B,0x0B7B,0x035A,0x0B7A,0x033A,0x0319,0x0339,0x0359,0x037A,0x0BDB,0x1C5D,0x24BE,0x1C7E,0x1C7E,0x0C1C,0x037A,0x0339,0x0339,0x0339,0x0319,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x035A,0x035A,0x033A,0x0339,0x0339,0x0339,0x033A,0x033A,0x035A,0x037B,0x033A,0x033A,0x033A,0x035A,0x0B5B,0x0B5B,0x035B,0x0B9C,0x035B,0x035B,0x033B,0x033B,0x033B,0x0B5B,0x0B5B,0x033A,0x033B,0x0B5B,0x0B3B,0x033A,0x033A,0x033A,0x0B5A,0x035A,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B5A,0x035A,0x0B9A,0x0B9B,0x0B9A,0x0B9B,0x0339,0x0339,0x0339,0x037A,0x143C,0x1CBE,0x1CBE,0x24DF,0x145D,0x039A,0x0359,0x0339,0x0319,0x0319,0x0319,0x0339,0x0339,0x0339,0x0339,0x035A,0x037A,0x037A,0x037A,0x035A,0x035A,0x035A,0x033A,0x033A,0x033A,0x033A,0x033A,0x0B5B,0x0B5B,0x0B5B,0x0B7B,0x0B7B,0x035B,0x035B,0x035B,0x035B,0x0B5B,0x035B,0x0B7B,0x0B7B,0x0B7B,0x0B9C,0x0B5B,0x0B5B,0x035B,0x0B5B,0x033A,0x0B5B,0x0B5B,0x0B5B,0x0B7B,0x0B9B,0x0B7B,0x0B9B,0x0B7B,0x0B7B,0x0B9B,0x0B9A,0x0BBB,0x13BB,0x0B9B,0x037A,0x0339,0x0359,0x0BFC,0x1C7D,0x1CBE,0x24DF,0x145D,0x03BB,0x037A,0x035A,0x0359,0x035A,0x035A,0x037B,0x035A,0x035A,0x035A,0x037B,0x037A,0x037A,0x035B,0x035B,0x037B,0x0B7B,0x0B9B,0x0B9B,0x0B9B,0x0B9B,0x0B9B,0x0B7B,0x0B7B,0x0B9B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B9B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B9B,0x0B9B,0x037B,0x0B9B,0x0B9B,0x037B,0x0B9B,0x0BBC,0x037B,0x0B9B,0x037A,0x0B7B,0x0B9B,0x0B9B,0x0B9B,0x0B9B,0x0B7A,0x0B9A,0x0B9B,0x0BBB,0x0BDB,0x0BFC,0x0BDB,0x037A,0x03BA,0x143C,0x24DF,0x24DF,0x147D,0x03BA,0x037A,0x037A,0x0359,0x0359,0x035A,0x037A,0x039B,0x039B,0x037B,0x0B7B,0x0B7B,0x0BBB,0x0B9B,0x0B9B,0x0B9B,0x0B9B,0x0B9B,0x0B9B,0x0B9B,0x0B9B,0x0B9C,0x0BBC,0x0BBC,0x0B9B,0x0B9C,0x0BBC,0x0B9B,0x13BC,0x0B9C,0x0B9B,0x0B9C,0x13BC,0x0B9C,0x13BC,0x139C,0x0B9C,0x0B9C,0x13BC,0x0B9B,0x0B9B,0x0BBB,0x0B9B,0x13BC,0x1BFD,0x0B7A,0x0B7A,0x0B7B,0x0B7B,0x0B9B,0x13BB,0x0B9B,0x0BBB,0x13DB,0x13DB,0x0BBB,0x0BDB,0x0BDB,0x0BDB,0x03BA,0x03DA,0x1C9E,0x24FF,0x1CBE,0x0C3C,0x0399,0x0379,0x0379,0x039A,0x0B9A,0x0B9A,0x0B9A,0x0BBB,0x0B9B,0x0B9B,0x0BBC,0x0BBB,0x13DC,0x0BBC,0x13DC,0x13BC,0x13BC,0x13BC,0x13DC,0x0BBC,0x13BC,0x13DC,0x13BC,0x13BC,0x13DC,0x13BC,0x13DC,0x13FC,0x13DC,0x13BC,0x13DC,0x13FC,0x13DC,0x13BC,0x13DC,0x13DC,0x13BC,0x13BC,0x13BC,0x13DC,0x13BC,0x0B9B,0x0BBC,0x13DC,0x13DC,0x13BC,0x0BBB,0x13DC,0x13BC,0x13BC,0x13BB,0x0B9B,0x0B9B,0x13BB,0x13BB,0x13BB,0x0B9B,0x0B9B,0x0BBB,0x0BFB,0x0BFB,0x353F,0x145D,0x03FB,0x03DB,0x039A,0x0359,0x0379,0x039A,0x0B9A,0x0BBB,0x13DB,0x13BB,0x13BB,0x13DC,0x13DC,0x13DC,0x13DC,0x13BC,0x13BC,0x13BC,0x139C,0x13BC,0x13DC,0x13BC,0x13DC,0x13BC,0x13BC,0x13BC,0x13BC,0x13BC,0x13BC,0x13DC,0x13DC,0x13DC,0x13BC,0x13BC,0x13DC,0x13BC,0x13BC,0x13BC,0x13BC,0x13BB,0x13DC,0x13BC,0x13DC,0x13BC,0x13DC,0x13DC,0x13DC,0x13FC,0x13DC,0x13DC,0x1BFC,0x13BB,0x13BB,0x13BB,0x13BB,0x13BB,0x13DB,0x0B9A,0x0BBA,0x0BBB,0x0BDB,0x0BBB,0x141C,0x2D1F,0x0C3C,0x03BB,0x03BB,0x039B,0x0B9B,0x0B9B,0x0BBC,0x0BBB,0x13DC,0x13FC,0x13FC,0x13FC,0x13DC,0x13DC,0x1BFD,0x1BFC,0x1BFC,0x13FC,0x1BFD,0x13DC,0x13DC,0x13DC,0x13DC,0x13FC,0x1BFD,0x1BFC,0x1BFC,0x1BFC,0x1BFC,0x1BFC,0x1BFC,0x13DC,0x1BFC,0x13DC,0x13DC,0x13DC,0x1BFC,0x1BFC,0x1BFC,0x13DC,0x1C1C,0x13DC,0x13FC,0x13FC,0x13DC,0x13DC,0x1BFC,0x13FC,0x13FC,0x13DC,0x13DC,0x13DC,0x13FC,0x0BBB,0x13BC,0x13BC,0x13BC,0x0BBB,0x13DC,0x0B9A,0x037A,0x037A,0x0BBB,0x1C9E,0x147D,0x039A,0x0BBB,0x0BBB,0x0BBB,0x0B9B,0x0BDC,0x0BBC,0x13DC,0x13DC,0x13DC,0x13DC,0x1BDD,0x13BC,0x13BC,0x13BC,0x1BDC,0x13DC,0x1BFD,0x13DC,0x13DC,0x13DC,0x1BFD,0x13DC,0x13DC,0x13DC,0x13DC,0x13DC,0x13DC,0x13DC,0x13DC,0x13DC,0x13FD,0x13FD,0x13DC,0x13DC,0x13DC,0x13DC,0x13DC,0x13BC,0x13DC,0x13BC,0x13BC,0x13DC,0x13DC,0x13DC,0x13DC,0x13BC,0x0BBC,0x13BC,0x13DC,0x0B9C,0x13BC,0x0B9C,0x0B9C,0x13BC,0x13BC,0x0B7B,0x0B9C,0x0B9B,0x0B9B,0x0B9B,0x0BBB,0x03BB,0x03BA,0x0C1C,0x2D1F,0x03BA,0x03DB,0x03BB,0x0BBB,0x037A,0x037A,0x0BBC,0x0BBC,0x0B9B,0x0B9C,0x0B9C,0x13BC,0x0B7B,0x0B9C,0x0B9C,0x13BC,0x0B9C,0x13BC,0x0B9B,0x13DC,0x0BBC,0x13DC,0x13BC,0x13BC,0x13DC,0x13DC,0x13DC,0x13DC,0x13DC,0x13BC,0x139C,0x13BC,0x13BC,0x13DC,0x13BC,0x13DC,0x13BC,0x0BBC,0x139C,0x13BC,0x13BC,0x13BC,0x13BC,0x13BC,0x13BC,0x13BC,0x13BC,0x139C,0x0B9C,0x13DC,0x0B9C,0x0B7B,0x0B9B,0x0B9B,0x0B9B,0x13DC,0x0B9B,0x0B9B,0x0B9B,0x039B,0x03BB,0x0BFB,0x0C1C,0x1C9E,0x1C9E,0x0C3C,0x0C1C,0x0BFC,0x039B,0x037B,0x0B7B,0x0B9B,0x0B7B,0x0B9B,0x139C,0x13BC,0x0B7B,0x13BC,0x0B7B,0x0B7B,0x139B,0x139B,0x139B,0x13BC,0x139B,0x139B,0x139B,0x139B,0x1B9B,0x1BBC,0x1BBC,0x1B9B,0x1BBC,0x23BC,0x1B9C,0x23BC,0x23BC,0x23BC,0x239B,0x239B,0x239B,0x2BDC,0x2BBC,0x2BDC,0x2BDC,0x2BBC,0x2BDC,0x33FC,0x33DC,0x33FD,0x33DC,0x3BFD,0x3BDD,0x3BFD,0x3BBC,0x43DD,0x43BC,0x4BBC,0x4BBC,0x5BBC,0x5B7B,0x6B5A,0x7B19,0x7A76,0x8A35,0x9A14,0xA214,0xA1D3,0xA9F4,0xA9F3,0xA9B3,0xA9D3,0xA9B3,0xA9D3,0xA9F3,0xAA13,0x99F2,0x99F2,0x91F2,0x9233,0x9A95,0xAB16,0x9A33,0x99F2,0xA213,0xA1F3,0xA9F3,0xA9D3,0xB214,0xA9F4,0xA9F3,0xA9F3,0xAA14,0xA214,0x9A35,0x8A76,0x6A56,0x41D5,0x533A,0x2AD8,0x22F9,0x1B3A,0x135A,0x135B,0x0B7A,0x139B,0x137B,0x139B,0x139B,0x0B7B,0x0B7B,0x139B,0x0B7B,0x0B5B,0x0B7B,0x139C,0x0B7B,0x035B,0x035B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B9B,0x037A,0x037A,0x035A,0x035A,0x039A,0x03DB,0x041C,0x0C5C,0x149E,0x1C9E,0x0C3C,0x0BFB,0x03BA,0x0BBB,0x0B9B,0x037A,0x035A,0x035A,0x035A,0x037A,0x0B7B,0x0B9B,0x0B7B,0x0B7B,0x035A,0x033A,0x035A,0x0B7B,0x033A,0x0B5B,0x035B,0x0B5B,0x0B7B,0x0B7B,0x0B5B,0x0B7B,0x0B5B,0x035A,0x0B5A,0x0B5B,0x0B5A,0x0B7B,0x0B5B,0x0B5B,0x035A,0x033A,0x035A,0x0B7B,0x0B5B,0x035A,0x035A,0x0B7B,0x033A,0x0B7A,0x035A,0x035A,0x035A,0x0B7B,0x035B,0x035A,0x035A,0x037B,0x035A,0x035A,0x033A,0x033A,0x0339,0x0339,0x039A,0x0BFC,0x0BDB,0x143D,0x24DF,0x24FF,0x1C7E,0x143D,0x0BBB,0x0BBB,0x0BBB,0x0B9B,0x0B9B,0x0B7B,0x035A,0x033A,0x0B5A,0x033A,0x0B5A,0x0B7B,0x033A,0x0B3A,0x0B5B,0x0B5B,0x0B7B,0x035B,0x035B,0x0B7B,0x035B,0x033A,0x035A,0x037B,0x035A,0x035B,0x035B,0x035B,0x037B,0x0B7B,0x035B,0x037B,0x035B,0x035B,0x033B,0x033B,0x033A,0x033B,0x031A,0x033A,0x033A,0x033B,0x0B5B,0x0B5B,0x033A,0x0B5A,0x033A,0x035A,0x035A,0x033A,0x035A,0x037A,0x035A,0x033A,0x033A,0x033A,0x035A,0x037A,0x039B,0x0BFC,0x24BF,0x24DF,0x1C5E,0x13FD,0x039B,0x039B,0x037B,0x0B7B,0x0B9B,0x0B9B,0x0B9B,0x035A,0x035A,0x035A,0x035A,0x033A,0x033A,0x033A,0x031A,0x0B5A,0x033A,0x031A,0x031A,0x035A,0x033A,0x033A,0x033A,0x035A,0x035A,0x033A,0x033B,0x0B5B,0x031A,0x031A,0x033A,0x033A,0x033B,0x033B,0x031A,0x033A,0x031A,0x031A,0x031A,0x031A,0x031A,0x031A,0x031A,0x033A,0x0319,0x0319,0x0319,0x0319,0x0319,0x0319,0x0339,0x0339,0x0339,0x0339,0x0339,0x0339,0x035A,0x037A,0x037A,0x03BB,0x1C7E,0x2CDF,0x24BE,0x1C7D,0x0BDB,0x039A,0x0359,0x035A,0x0359,0x035A,0x0B7A,0x0B7A,0x0B7A,0x035A,0x033A,0x0319,0x033A,0x033A,0x033A,0x033A,0x033A,0x0B3B,0x02FA,0x031A,0x02FA,0x02FA,0x02F9,0x031A,0x031A,0x031A,0x031A,0x0B3A,0x031A,0x031A,0x031A,0x031A,0x0B3A,0x0B5A,0x0B3A,0x0B5B,0x0319,0x033A,0x033A,0x0B3A,0x0B5A,0x0B5A,0x033A,0x031A, + 0x241E,0x243E,0x2C7E,0x2C9F,0x2CDF,0x249E,0x1C5D,0x141C,0x0BFC,0x0BDB,0x0BDC,0x13FC,0x13DC,0x0B9B,0x0B9B,0x0B7B,0x13BB,0x0B9B,0x139B,0x139B,0x13BC,0x0B9B,0x13BC,0x13BC,0x13BC,0x0B9B,0x0BBB,0x0B9B,0x0BBB,0x0B9B,0x0BBB,0x13BC,0x13BC,0x13BC,0x13BC,0x139C,0x13BC,0x13BC,0x13BC,0x13BC,0x13BC,0x0B7B,0x13BC,0x0B9C,0x13BC,0x13BC,0x13DD,0x0BBC,0x13DC,0x0B9C,0x13BC,0x0B9B,0x0BBC,0x0BBC,0x13BC,0x0BBC,0x13BC,0x0B9B,0x0B9B,0x0B9B,0x037B,0x037B,0x039B,0x037B,0x039B,0x039A,0x039A,0x0BBB,0x141C,0x1C5D,0x24BE,0x24DF,0x24DF,0x249E,0x143D,0x0BFC,0x0BDC,0x0BBB,0x0BBB,0x0BBB,0x0B9B,0x0B9B,0x13BB,0x0BBB,0x13DB,0x13DC,0x13DB,0x13DC,0x13DC,0x0BBB,0x13BC,0x0B9B,0x13BC,0x13DC,0x0BBC,0x13DC,0x0BDC,0x0BBC,0x13DC,0x0BBC,0x0BBC,0x0BBC,0x13BC,0x13DC,0x13DD,0x0BBC,0x13DD,0x13DD,0x13BD,0x13BD,0x13BD,0x13BD,0x13DD,0x13DD,0x13DD,0x139C,0x13DD,0x13BC,0x13DD,0x13BC,0x13DC,0x13FD,0x13FC,0x13DC,0x0BBC,0x0BBB,0x0BBB,0x0BBB,0x039A,0x039A,0x039A,0x039A,0x0BBB,0x143D,0x249E,0x2CDF,0x2D1F,0x24FF,0x1C7E,0x143D,0x143D,0x13FC,0x13DC,0x13DC,0x13BC,0x13BC,0x13DC,0x13BC,0x13FC,0x13DC,0x13DC,0x0BDC,0x0BDC,0x0BDC,0x0BDC,0x0BDC,0x13DC,0x13DC,0x0BBC,0x13BC,0x13DC,0x13BC,0x13BC,0x13BC,0x13FD,0x0BDC,0x13DC,0x0BBC,0x13DD,0x0BDC,0x0BBC,0x13BC,0x13DD,0x13DD,0x13DD,0x13FD,0x13FD,0x13DD,0x1BFD,0x1BFD,0x13FD,0x13DD,0x1BDD,0x13BC,0x13DD,0x13BC,0x13DC,0x0BDC,0x13DC,0x0BBC,0x13DC,0x13FC,0x0BBB,0x0BDB,0x0BDB,0x039A,0x039A,0x03DB,0x1C5D,0x24DF,0x2D1F,0x24FF,0x1C9E,0x145D,0x143D,0x141D,0x13FC,0x13FD,0x13FC,0x0BDC,0x13FD,0x0BFC,0x13FD,0x0BDC,0x0BDC,0x0BDC,0x0BDC,0x0BDC,0x0BDD,0x0BDD,0x0BDC,0x0BDC,0x13FD,0x13FD,0x13FD,0x13FD,0x13FD,0x13FD,0x13FD,0x13FD,0x13FD,0x13DD,0x13FD,0x13FD,0x13DD,0x13DD,0x13FD,0x0BDC,0x13DD,0x13FD,0x13FD,0x13FD,0x13FD,0x0BDC,0x13FD,0x141D,0x0BFC,0x0BDC,0x13FD,0x0BDC,0x0BDC,0x0BDC,0x13DC,0x13DC,0x13FC,0x0BDC,0x0BDC,0x0BDC,0x0BDC,0x0BFC,0x03DB,0x03BA,0x03DB,0x145D,0x24DF,0x24DF,0x1C9E,0x143D,0x143D,0x145D,0x143D,0x141C,0x13FC,0x0BDC,0x13FC,0x13FC,0x141D,0x0BFC,0x13FD,0x141D,0x13FD,0x0BDC,0x13DC,0x0BDC,0x13FC,0x13FD,0x13FD,0x13DD,0x13FD,0x13FD,0x13FD,0x13FD,0x13FD,0x141D,0x13FD,0x13FD,0x141D,0x13FD,0x141D,0x1C1E,0x1C1D,0x13FD,0x1C1D,0x13FD,0x1C1E,0x13FD,0x13FD,0x13FD,0x1C1D,0x1C1D,0x1C1D,0x141D,0x1C1D,0x141D,0x1C1D,0x1C1D,0x13DC,0x13FC,0x13FC,0x0B9B,0x13FC,0x0BDB,0x0BFC,0x0BFC,0x0BFC,0x0C1C,0x03FB,0x03DB,0x0C3C,0x1CFF,0x1CDF,0x147D,0x149D,0x1C9E,0x1C5D,0x143D,0x141C,0x141C,0x141C,0x141D,0x13FD,0x13FD,0x13FD,0x13FD,0x141D,0x13FD,0x141D,0x13FD,0x141D,0x13FD,0x13FD,0x13DD,0x13FD,0x141D,0x13FD,0x13FD,0x141D,0x13FD,0x141D,0x141D,0x141D,0x13FD,0x1C1E,0x1C1E,0x141D,0x141D,0x141D,0x1C1D,0x1C3E,0x1C1D,0x1C1D,0x1C1E,0x1C1D,0x141D,0x1C1D,0x1C3E,0x141D,0x141D,0x1C3E,0x1C3D,0x1C3D,0x141D,0x1C3D,0x1C1D,0x1C3D,0x13FC,0x1C1D,0x13FC,0x13FC,0x13FC,0x13FC,0x0BDC,0x0BFC,0x03DB,0x1CBE,0x24DF,0x145D,0x1C9E,0x1C7E,0x1C5D,0x1C3D,0x141C,0x141C,0x141C,0x1C1C,0x141C,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1C1E,0x1BFD,0x1C1D,0x1C1D,0x1C1D,0x1C3E,0x1C1D,0x141D,0x1C1E,0x1C1E,0x1C3E,0x1C3E,0x1C3E,0x1C1D,0x1C1D,0x1C3E,0x1C3E,0x1C1D,0x1C3E,0x1C3E,0x1C1E,0x1C1D,0x1C3D,0x1C3E,0x1C3E,0x1C3E,0x1C3E,0x1C3D,0x1C3E,0x1C3E,0x1C3E,0x1C3D,0x1C5E,0x1C3E,0x1C5E,0x1C3D,0x1C1D,0x1C1D,0x1C3D,0x1C5D,0x1C3D,0x1C3D,0x1C1D,0x13FC,0x1C3D,0x1C5D,0x141C,0x0BFC,0x0C1C,0x24BF,0x24DF,0x145D,0x145E,0x143D,0x141D,0x141D,0x141D,0x141D,0x1C1D,0x141D,0x141D,0x13FC,0x1C3D,0x1C1D,0x1C1D,0x13FD,0x1C3D,0x1C1D,0x1C1D,0x1C1D,0x1C3E,0x1C1D,0x1C1D,0x1C1D,0x1C3E,0x141D,0x1C3D,0x1C1D,0x1C3D,0x1C3D,0x1C3D,0x1C1D,0x1C1D,0x1C1D,0x1C3D,0x1C3D,0x1C3D,0x1C1D,0x1C3D,0x1C3D,0x1C3D,0x1C1D,0x1C3D,0x1C3D,0x1C5D,0x1C3D,0x1C3D,0x141D,0x1C5E,0x1C3D,0x1C3E,0x1C5E,0x1C3E,0x1C3D,0x247F,0x247F,0x1C5E,0x247E,0x245E,0x1C1D,0x1C3D,0x1C3D,0x1C3D,0x141D,0x1CBE,0x147E,0x0C1D,0x1C3E,0x143D,0x141D,0x143D,0x141D,0x1C3E,0x1C3E,0x1C3E,0x1C1E,0x1C3E,0x1C1D,0x1C3E,0x243E,0x1C3E,0x1C3E,0x1C3E,0x1C3E,0x1C5E,0x1C5E,0x1C3D,0x1C1D,0x1C3E,0x1C3E,0x1C3D,0x1C1D,0x1C3E,0x1C1D,0x1C3E,0x1C3E,0x1C3E,0x1C1D,0x1C3E,0x1C1D,0x1C3D,0x1C1D,0x1C3D,0x1C1D,0x1C3D,0x1C1D,0x1C3E,0x1C3E,0x1C3E,0x1C3D,0x1C3E,0x1C1D,0x1C3E,0x1C5E,0x1C3E,0x141D,0x1C3E,0x1C1E,0x1C1D,0x1C3E,0x1C3E,0x1C1D,0x1C3E,0x1C3E,0x1C3E,0x1C1D,0x1C3D,0x141D,0x143D,0x145D,0x0C1C,0x24DF,0x1CDE,0x147D,0x143D,0x143D,0x141D,0x143D,0x143D,0x1C3E,0x1C3E,0x1BFD,0x1C1E,0x1C1E,0x1C1E,0x1C3E,0x1C1E,0x1C1E,0x1C3E,0x1C1E,0x1C3E,0x1C3E,0x1C3E,0x1C1D,0x1C3E,0x1C3E,0x1C3E,0x1C3E,0x1C3E,0x141D,0x1C3E,0x1C3E,0x1C1E,0x141D,0x1C3E,0x1C3E,0x1C3E,0x1C1E,0x1C3E,0x1C3E,0x1C1E,0x141D,0x1C1E,0x1C1D,0x1C1E,0x1C1D,0x1C3E,0x1C1D,0x1C1E,0x1C3E,0x141D,0x13FD,0x1C1E,0x1C3E,0x13FD,0x13FD,0x1C1D,0x13FD,0x1C3E,0x141D,0x141D,0x141D,0x143D,0x0C3C,0x145D,0x145D,0x1CBE,0x149E,0x0C3C,0x0C1C,0x0BDC,0x13FD,0x13FD,0x13FD,0x13FD,0x1BFD,0x1BFD,0x1BFD,0x1C1E,0x1BFD,0x1C1E,0x1C1D,0x1C1D,0x243E,0x243E,0x1BFD,0x243E,0x243D,0x241D,0x2C3E,0x2C3E,0x23FD,0x2C3E,0x2C3E,0x2C3E,0x2C3E,0x2C3E,0x2C1D,0x343E,0x343E,0x343E,0x345E,0x345E,0x343E,0x3C5E,0x345E,0x3C5E,0x3C5E,0x3C5E,0x343D,0x3C5E,0x3C5E,0x445E,0x4C7F,0x445F,0x445E,0x4C7F,0x4C3E,0x4C1D,0x4C1E,0x541D,0x53FD,0x63FD,0x73DC,0x737A,0x7AB8,0x8235,0x9235,0x99F4,0xA214,0xA1D3,0xA9D3,0xA9D3,0xA9B3,0xB1F4,0xA9D3,0xA9F3,0xA9F3,0xA1F3,0xA1F3,0xA1F3,0x99F3,0x9A13,0xA274,0xA234,0x99D2,0xA1F3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9D3,0xA9F3,0xA9F3,0xA214,0xA234,0x9A35,0x8A55,0x82D8,0x5A97,0x743D,0x5C1D,0x441D,0x33FD,0x23FD,0x241D,0x1BFD,0x1BFD,0x241D,0x1BFD,0x1C1D,0x243E,0x1C1D,0x1BFD,0x1C1D,0x1C1D,0x13DD,0x13DD,0x13FD,0x13FD,0x141D,0x13FD,0x141D,0x141D,0x13FD,0x13DC,0x13FD,0x13FD,0x13FC,0x13FC,0x0BFC,0x0C1C,0x143D,0x0C5D,0x147D,0x1C9E,0x1CDF,0x1C9E,0x0C3C,0x0C1C,0x03DB,0x03DB,0x03BB,0x0BBB,0x0BBB,0x0BBC,0x0BDC,0x13DC,0x13FC,0x13DC,0x13FD,0x1C1D,0x13FD,0x13FD,0x1BFD,0x13DD,0x1BFD,0x1BFD,0x13FD,0x13FD,0x1BFD,0x13DD,0x1BFD,0x1BFD,0x13FD,0x13FD,0x13DD,0x13DC,0x13FD,0x13DD,0x13DD,0x13FD,0x13DC,0x13BC,0x13FD,0x13FD,0x13DD,0x13DC,0x13FD,0x13DC,0x13DC,0x13FD,0x13DC,0x0BBC,0x13FD,0x13FD,0x13FD,0x0BDC,0x0BDC,0x0BDC,0x13DC,0x0BDC,0x0BDC,0x0BDC,0x0BBB,0x0BDC,0x0BFC,0x0BFC,0x0C1C,0x147D,0x1CBE,0x24BF,0x1C9E,0x143D,0x0BDB,0x03BB,0x039B,0x037B,0x037B,0x0B7B,0x0B9B,0x13BC,0x13BC,0x13BC,0x13DC,0x13DC,0x13DD,0x13BC,0x13DD,0x13DD,0x13FD,0x13DC,0x13FD,0x13FD,0x0BDC,0x0BBC,0x0BDC,0x0BDC,0x13FD,0x13FD,0x0BDD,0x0BDC,0x13FD,0x0BDD,0x13FD,0x13FD,0x13FD,0x13DD,0x13DD,0x0BBC,0x13BC,0x13DD,0x13BC,0x13BC,0x13DD,0x13BD,0x13FD,0x13DC,0x13DC,0x0BDC,0x13DC,0x0BDC,0x0BDC,0x0BBC,0x13DC,0x0BDC,0x0BBC,0x0BBC,0x0B9B,0x039B,0x0BBC,0x03BB,0x0BDC,0x143D,0x1C7E,0x249F,0x1C7E,0x143D,0x0BFC,0x03BB,0x039A,0x037A,0x039B,0x039B,0x039B,0x039B,0x0B9B,0x13BC,0x13DC,0x13DC,0x13DC,0x13DC,0x13FD,0x13DC,0x13BC,0x0B9C,0x13DC,0x13DC,0x13BC,0x0BBC,0x13BC,0x13BC,0x13DD,0x13BC,0x13BC,0x13BC,0x13BC,0x0BBC,0x13BD,0x13BD,0x13BD,0x0B9C,0x13BC,0x13DD,0x13DD,0x13DD,0x13DD,0x13BC,0x13BC,0x13DD,0x13DD,0x13DC,0x13DC,0x13BC,0x13BC,0x13BC,0x0BBC,0x0B9B,0x0BBB,0x0BBB,0x0BBB,0x0BBB,0x0B9B,0x0B9B,0x0BBB,0x0BBB,0x03BB,0x0BFB,0x143D,0x1C7D,0x24BF,0x24BF,0x1C7E,0x141C,0x0BBB,0x037A,0x037A,0x039A,0x0B9B,0x0B9B,0x0B9B,0x0B9B,0x0B9B,0x0B7B,0x0B9B,0x0B9B,0x0B9C,0x0B9C,0x139C,0x139C,0x139C,0x139C,0x13BC,0x139C,0x13BC,0x13BC,0x139C,0x0B7C,0x13BC,0x13BC,0x13BC,0x13BC,0x13DD,0x13BC,0x13BC,0x0B7B,0x0B9C,0x13BC,0x0B9B,0x0B9B,0x0B9B,0x0B9B,0x0B7B,0x0B7C, + 0x2C7F,0x243E,0x1BFD,0x1BFD,0x13BC,0x0B7B,0x139B,0x13BC,0x13DC,0x13DC,0x13BC,0x139B,0x139B,0x13DC,0x13BC,0x13DC,0x13DC,0x13DC,0x1BDC,0x1BDC,0x13BC,0x1BDC,0x1BBC,0x13BC,0x13BC,0x1BDC,0x13BC,0x13BC,0x13BC,0x13BC,0x139C,0x139C,0x137C,0x139C,0x139C,0x139C,0x13BC,0x13BC,0x139C,0x13BC,0x1BDD,0x1BDD,0x13BD,0x13BC,0x139C,0x13BC,0x13BC,0x1BFD,0x1BDD,0x1BFD,0x1BFD,0x13FD,0x13FD,0x13FD,0x13BC,0x13BC,0x0B9C,0x0B9B,0x0B9C,0x0B9B,0x0BBC,0x13FD,0x141D,0x13DC,0x143D,0x1C7E,0x247E,0x2CBF,0x249E,0x249E,0x245E,0x1BFC,0x13DC,0x0B9B,0x0B9B,0x0B9B,0x0B9B,0x13BC,0x13DC,0x13DC,0x13DC,0x1BFD,0x13FC,0x1BFD,0x13DC,0x1BFD,0x13DC,0x13DC,0x1BFD,0x1C1D,0x1BFD,0x1C1D,0x1BFD,0x13DC,0x13DD,0x1BFD,0x13DC,0x1BFD,0x13DD,0x13BC,0x13DD,0x13DD,0x13BD,0x13DD,0x13BC,0x13DD,0x13DD,0x13BC,0x13DD,0x1BDD,0x13BD,0x1BBD,0x13BD,0x1BDD,0x1BDD,0x241E,0x1BFE,0x1C1D,0x243E,0x1C1E,0x1C1D,0x1BFD,0x13BC,0x13BC,0x13DC,0x0BBB,0x0BDB,0x0BBB,0x0BBB,0x143C,0x1C5D,0x24DF,0x24DF,0x2CDF,0x249F,0x247E,0x1C1D,0x13DC,0x13FC,0x13FC,0x13FC,0x13DC,0x13BC,0x13BC,0x1BFD,0x243E,0x1BFD,0x1BFD,0x1BFD,0x1C1D,0x1BFD,0x1BFD,0x1C1D,0x141D,0x141D,0x13FD,0x13FD,0x1C1D,0x13FD,0x13DD,0x13FD,0x13FD,0x1BFD,0x1C1D,0x13FD,0x13FD,0x13FD,0x1C1D,0x13DD,0x13FD,0x13FD,0x13DD,0x13FD,0x13DD,0x13DD,0x1BFD,0x13DD,0x1BDD,0x1BDD,0x13DD,0x1BFD,0x1BFD,0x1BFD,0x243E,0x243E,0x1C1E,0x1C3E,0x1C3D,0x13FD,0x141D,0x13DC,0x0B9B,0x0B9B,0x039A,0x037A,0x0BFC,0x24BE,0x2D3F,0x2CFF,0x2CDF,0x247E,0x141D,0x13FC,0x13FC,0x13FC,0x13DC,0x13FD,0x13FD,0x13FD,0x1C1D,0x141D,0x141D,0x1C1E,0x1C3E,0x1C1E,0x1C1E,0x141D,0x141E,0x13FD,0x13FD,0x141E,0x13FD,0x13FD,0x13FD,0x13FD,0x141D,0x13FD,0x13DD,0x13FD,0x1C1D,0x1C1D,0x13FD,0x1BFD,0x1C1D,0x1C1D,0x1C1E,0x1C1E,0x1BFD,0x1C1D,0x13FD,0x13FD,0x141D,0x141D,0x13FD,0x141D,0x141D,0x13FC,0x1C3D,0x1C3D,0x141D,0x1C3E,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x13FD,0x13FC,0x141C,0x0C1C,0x03DB,0x145D,0x1CBE,0x24FF,0x24BE,0x1C7E,0x143D,0x141D,0x13FC,0x0BDC,0x13FC,0x13FD,0x13FD,0x1C3E,0x1C1D,0x1C1D,0x1C1E,0x1C3E,0x1C1E,0x1C3E,0x1C1D,0x1C1E,0x1C1E,0x1C1E,0x1C1D,0x1C1D,0x141D,0x1C1E,0x13FD,0x141D,0x13FD,0x1C1E,0x13FD,0x13FD,0x13FD,0x1BFE,0x1BFD,0x13FD,0x13FD,0x13FD,0x13FD,0x1C1E,0x1C1E,0x13FD,0x1BFD,0x1C1E,0x1BFD,0x13DD,0x1BFD,0x1BFD,0x13DC,0x13DD,0x13DD,0x1BFD,0x1BFD,0x13DD,0x1C1E,0x1C3E,0x1C3E,0x245E,0x1C3D,0x1C3D,0x141C,0x141D,0x141C,0x143D,0x03FB,0x1C9E,0x24FF,0x24FF,0x147E,0x143D,0x1C5D,0x143D,0x1C3D,0x141D,0x13FC,0x1C3D,0x1C3D,0x1C3E,0x1C3E,0x1C5E,0x1C3E,0x1C3E,0x1C3E,0x1C3E,0x1C1E,0x141E,0x141E,0x13FE,0x1BFE,0x1C1E,0x1C1E,0x13FD,0x1BFE,0x1C1E,0x1C1E,0x13FD,0x13FD,0x1C1E,0x1C1D,0x1C1D,0x1C1E,0x13FD,0x141D,0x1C1E,0x13FD,0x13FD,0x13FD,0x1C1D,0x1BFD,0x1C1E,0x141D,0x141D,0x1C1D,0x13FD,0x141D,0x1C1E,0x141D,0x1C1D,0x1C1D,0x1C1E,0x1C1D,0x1BFD,0x1C1E,0x245E,0x243E,0x241E,0x1BFD,0x1C1D,0x1C3E,0x1C5E,0x0BFC,0x1C9E,0x2D1F,0x1C9E,0x249E,0x143D,0x13FC,0x141D,0x1C1D,0x1C3E,0x1C3D,0x245E,0x245E,0x245E,0x245E,0x243E,0x1C1E,0x243E,0x243E,0x1C1E,0x1C1E,0x1C1E,0x1BFD,0x1C1D,0x13FD,0x1C3E,0x1C1E,0x1BFD,0x1C1D,0x1C1E,0x1C1E,0x1C1D,0x1C1D,0x1C1D,0x1C1E,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1C1E,0x1C3E,0x1C1D,0x1C1E,0x1C3E,0x1C1D,0x1C1E,0x1C1E,0x1C1E,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x13FD,0x1C3E,0x1C3E,0x243E,0x1C3E,0x1C1D,0x1C1D,0x1C3E,0x1C3D,0x1C5E,0x1C1D,0x1C3D,0x143D,0x143D,0x143C,0x2D1F,0x143D,0x143D,0x143D,0x143D,0x1C3E,0x1C3E,0x1C3E,0x1C3E,0x1C3E,0x1C3E,0x1C3E,0x1C3E,0x1C1E,0x1C3E,0x1C1E,0x1C1E,0x1C1E,0x1C3E,0x1BFD,0x1C1E,0x1C1D,0x1BFD,0x1BFD,0x1C1E,0x1C1D,0x1C1D,0x1C1D,0x13FD,0x13FD,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x141D,0x1C3D,0x1C1D,0x1C1D,0x141D,0x1C3D,0x1C1D,0x13FD,0x13FD,0x1C1D,0x141D,0x1C3D,0x1C1D,0x141D,0x141D,0x1C1D,0x13FD,0x1C3E,0x1C3E,0x13FD,0x13FD,0x1C3E,0x1C1D,0x1C3E,0x1C3E,0x1C1D,0x13FD,0x13FC,0x2D1F,0x24BF,0x0BFC,0x1C3E,0x141E,0x143E,0x141E,0x141E,0x1C1E,0x1C1E,0x1C3E,0x1C3E,0x1C3E,0x1C1E,0x1C1E,0x1BFD,0x1BFD,0x1C3E,0x1C3E,0x1C1D,0x1C1D,0x1C1D,0x1C1E,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1C1E,0x1C1D,0x1C1D,0x1C1E,0x1C1E,0x1C1D,0x1C1E,0x1C1D,0x1BFD,0x1C1D,0x1C3E,0x1C1D,0x1C1D,0x13FD,0x1C1D,0x1BFD,0x1BFD,0x1BFD,0x1C1D,0x1C3E,0x1C1E,0x1C1D,0x1C1D,0x1C1D,0x1C3E,0x1C3E,0x1C3E,0x1C1D,0x1C1D,0x1C3E,0x243E,0x1C1E,0x1C1E,0x1C1D,0x1C3E,0x13FD,0x141D,0x1C3D,0x143D,0x1C5D,0x1CBE,0x2D3F,0x145D,0x145D,0x145E,0x145E,0x143D,0x13FD,0x1C3E,0x1C1E,0x1C1E,0x243F,0x243F,0x245F,0x1C3E,0x1C1E,0x1C3E,0x1C1D,0x1C1D,0x1C1D,0x1C1E,0x13FD,0x1BFD,0x1BFD,0x1BFD,0x13FD,0x1C1D,0x1C1D,0x1C1D,0x1C1D,0x1BFD,0x1BFD,0x1C1D,0x1C1E,0x1C1D,0x1C1E,0x1C3E,0x1C1D,0x1BFD,0x1C1D,0x1C1D,0x1C1D,0x1C1E,0x1BFD,0x1C1E,0x1C3E,0x13FD,0x1BFD,0x1C1E,0x1C1D,0x243E,0x1C3E,0x13FD,0x1C1D,0x245E,0x1C3E,0x1C1E,0x1C1E,0x1C3E,0x141D,0x1C3E,0x1C3E,0x1C5E,0x1C7E,0x147E,0x147E,0x1CBE,0x1C9E,0x0BFC,0x13FC,0x13FD,0x13DD,0x1BFD,0x1BFD,0x1C1D,0x1BFD,0x1C1E,0x1BFD,0x1BFE,0x241E,0x243E,0x1BDD,0x1BFD,0x1BFD,0x241D,0x1BFD,0x1BDD,0x1BFD,0x241D,0x23FD,0x23FD,0x23FD,0x23FD,0x23FD,0x2C1E,0x23FD,0x23FD,0x2C1E,0x2C1D,0x2C1E,0x343E,0x2C1E,0x343E,0x343E,0x341D,0x341E,0x3C3E,0x343E,0x3C3E,0x3C5E,0x3C1E,0x3C1E,0x443E,0x3BFE,0x443F,0x4C5F,0x4C3F,0x4C5F,0x545F,0x545F,0x647F,0x643E,0x743E,0x7BDD,0x72F9,0x8297,0x9256,0x9A14,0xA1F4,0xA1D3,0xB214,0xA9D3,0xA9D3,0xA9B3,0xA9B3,0xB214,0xA9F3,0xA9F3,0xA1F3,0xA1D3,0xA1F3,0xA214,0xAA34,0xA1F3,0xA1F3,0xAA13,0xA9F3,0xA9D3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA1F3,0xA1D3,0xA214,0x9A35,0x8A35,0x8AD8,0x7B19,0x8C7F,0x74BF,0x547F,0x3C3E,0x2C1E,0x2C3E,0x2C3E,0x2C5E,0x243E,0x243E,0x1C1E,0x1C1E,0x1BFE,0x241E,0x1BFD,0x1C1E,0x1C1E,0x243E,0x1C3E,0x1C1E,0x1C1D,0x1C1E,0x1BFD,0x1C1D,0x1C1D,0x1C3E,0x1C1E,0x13FD,0x13FD,0x141D,0x141D,0x1C3D,0x1C3D,0x143D,0x141C,0x145D,0x145D,0x24BF,0x24FF,0x147E,0x0C3C,0x0BFC,0x0BFC,0x13FC,0x13DC,0x0BBC,0x13DC,0x13DC,0x13DC,0x1BFD,0x1BFD,0x13FD,0x1BFD,0x1C1D,0x1BFD,0x1BFD,0x1BFD,0x13DD,0x1BFD,0x1BFD,0x1C1E,0x1BFD,0x1BFD,0x1BFD,0x1BDD,0x1BFD,0x1BFD,0x1BFD,0x1BFD,0x1BFD,0x1BDD,0x1BFD,0x1BFD,0x1BFD,0x1BFD,0x13FD,0x1BFD,0x1C1E,0x1C1D,0x1BFD,0x1BFD,0x1C1D,0x1BFD,0x1C1E,0x13FD,0x13FD,0x13FD,0x1C3E,0x1C1E,0x13FD,0x13FD,0x13FD,0x13DD,0x13FD,0x13FC,0x13FC,0x141D,0x13FC,0x0BDC,0x0BDC,0x03BB,0x143D,0x1C7E,0x1C9E,0x1C9E,0x145D,0x0BFC,0x0BBB,0x0BBC,0x0B9B,0x0B9C,0x0B9B,0x13BC,0x13DC,0x13BC,0x13BC,0x13DC,0x13DD,0x13FD,0x13DD,0x13DD,0x13DD,0x13DC,0x13DD,0x13FD,0x13FD,0x141D,0x1C1E,0x13DD,0x13DC,0x13FD,0x141D,0x13FD,0x13DD,0x13DD,0x13FD,0x13DD,0x1BFE,0x13FD,0x1BFD,0x1BDD,0x13BD,0x13DD,0x1BDD,0x1BDD,0x1BFD,0x1BFD,0x1C1D,0x1BFD,0x1BFD,0x13DC,0x13FD,0x13DD,0x1BFD,0x13DC,0x13DC,0x13FD,0x13FD,0x1C1D,0x1C1D,0x1C1D,0x13FD,0x13DC,0x0BDC,0x0BBC,0x141D,0x1C5E,0x249F,0x249F,0x1C7E,0x145D,0x0C1C,0x0BDB,0x03BB,0x0BBB,0x0B9B,0x0B7B,0x0B5B,0x139B,0x139B,0x139C,0x13BC,0x13BC,0x13DC,0x13DC,0x13DD,0x13DC,0x13DC,0x13DC,0x1BFD,0x13BC,0x13BC,0x13DC,0x13DC,0x1BFD,0x1BDD,0x13DD,0x13DD,0x13BC,0x13DD,0x13DD,0x13DD,0x13DD,0x1BDD,0x13BD,0x1BDD,0x1BDD,0x13BC,0x1BDD,0x1BDD,0x1BDD,0x1BDD,0x1BDD,0x1BFD,0x13DC,0x1BFD,0x1BFD,0x1C1D,0x13FC,0x1BFD,0x13BC,0x13BC,0x13DC,0x13DC,0x13DC,0x13FC,0x0BBB,0x0BBB,0x0BBB,0x0BBB,0x0BBB,0x141D,0x245E,0x2CBF,0x2CBF,0x249E,0x1C5D,0x0BFB,0x039A,0x037A,0x035A,0x035A,0x0B7A,0x0B7A,0x035B,0x0B7B,0x0B7B,0x139C,0x139C,0x139C,0x13BC,0x1BBC,0x139C,0x139C,0x139C,0x139C,0x139C,0x13BC,0x13BC,0x13BC,0x137C,0x139C,0x139C,0x13BC,0x13BC,0x1BDD,0x13BC,0x0B9C,0x0B9C,0x13BC,0x13BC,0x13BC,0x0B9C,0x0B7C, + 0x0B3A,0x02F9,0x02B8,0x0298,0x0278,0x0298,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02B8,0x02D9,0x02D9,0x02D9,0x02D9,0x02F9,0x02D9,0x02B9,0x02D9,0x02D9,0x02D9,0x0AFA,0x02D9,0x02F9,0x02FA,0x02FA,0x02F9,0x0B1A,0x02FA,0x02D9,0x02D9,0x0ADA,0x0ADA,0x0AFB,0x0AFB,0x0AFA,0x0B1B,0x0B3B,0x0B3B,0x0B1A,0x0B3B,0x0B1B,0x0B1A,0x0B1A,0x0B1A,0x0B1A,0x0B1A,0x0B3A,0x0B1A,0x0B3A,0x0B3A,0x031A,0x02F9,0x02D9,0x02F9,0x02F9,0x0319,0x033A,0x033A,0x033A,0x031A,0x13DC,0x34BF,0x34DF,0x243E,0x1BDC,0x0B3A,0x02F9,0x02B8,0x0298,0x0298,0x02B9,0x02B9,0x02B9,0x02D9,0x02D9,0x02B9,0x02D9,0x02D9,0x02D9,0x02F9,0x02FA,0x02FA,0x02D9,0x0AFA,0x0B1A,0x02FA,0x02FA,0x0B1A,0x0B1A,0x0B1A,0x0B3B,0x0B1A,0x0B1B,0x0B1A,0x0B1B,0x0B1B,0x0B3B,0x0B3B,0x0B1B,0x0B3B,0x0B3B,0x0B3B,0x0B1B,0x0B3B,0x0B3B,0x0B3B,0x0B1B,0x0B3B,0x0B3B,0x0B1B,0x0B1B,0x133B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B1A,0x0B3A,0x02F9,0x02F9,0x0319,0x02F9,0x0339,0x0339,0x039B,0x1C3D,0x249E,0x34DF,0x2CDF,0x247E,0x13DC,0x0319,0x02D9,0x02B8,0x02B8,0x02D8,0x02D8,0x02D8,0x02D9,0x02B9,0x02D9,0x02B9,0x02D9,0x02FA,0x02FA,0x02F9,0x02FA,0x031A,0x0B3B,0x033A,0x033A,0x033B,0x033B,0x0B5B,0x0B3B,0x0B3B,0x135B,0x0B5B,0x0B7B,0x135B,0x0B3B,0x0B5B,0x0B7B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B3B,0x0B5B,0x0B5B,0x0B3B,0x0B5B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x135B,0x135B,0x0B3B,0x135B,0x0B3B,0x0B5B,0x0B5B,0x137B,0x0B5A,0x0B5A,0x035A,0x0319,0x0339,0x0339,0x037A,0x249F,0x351F,0x353F,0x249E,0x13DC,0x035A,0x0319,0x02D9,0x02F9,0x02D9,0x02F9,0x02F9,0x02F9,0x031A,0x02FA,0x031A,0x033A,0x033B,0x031A,0x033B,0x033B,0x033B,0x033B,0x0B3B,0x033B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x135B,0x135B,0x0B5B,0x0B5B,0x137C,0x0B5B,0x137C,0x0B5C,0x137C,0x0B7C,0x0B7C,0x0B5B,0x0B5B,0x0B7C,0x139C,0x139C,0x0B7C,0x139C,0x0B7B,0x0B9C,0x139C,0x0B7B,0x0B5B,0x0B5B,0x0B3A,0x033A,0x033A,0x035A,0x035A,0x037A,0x1C7E,0x2CFF,0x2CFF,0x1C3D,0x037A,0x0319,0x02F9,0x02F9,0x02F9,0x02F9,0x02F9,0x031A,0x031A,0x031A,0x031A,0x0B3B,0x033B,0x0B3B,0x0B5B,0x0B3B,0x0B5B,0x0B7C,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5C,0x0B7C,0x0B7C,0x0B5B,0x0B7C,0x137C,0x0B7C,0x0B5B,0x0B5C,0x0B5B,0x0B5B,0x0B5B,0x0B5C,0x0B3B,0x0B5B,0x0B5B,0x0B3B,0x0B5B,0x0B5B,0x0B3B,0x0B3B,0x0B5B,0x0B3B,0x0B5B,0x0B3B,0x0B3B,0x02FA,0x0B3B,0x0B5B,0x0B5B,0x0B7B,0x0B3B,0x0B5B,0x0B5B,0x0B5A,0x0B5A,0x035A,0x0339,0x035A,0x037A,0x1C7E,0x2CFF,0x24BF,0x0BBB,0x0339,0x0339,0x0319,0x033A,0x0319,0x031A,0x031A,0x033A,0x031A,0x0B5B,0x0B5B,0x033B,0x0B5B,0x0B5B,0x035B,0x0B5B,0x0B5C,0x0B5B,0x0B5C,0x0B5C,0x0B5C,0x0B5C,0x0B7C,0x0B5C,0x0B5C,0x0B5C,0x0B7C,0x0B5C,0x0B5C,0x0B5C,0x0B7C,0x0B5C,0x0B7C,0x0B5B,0x0B5C,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B7C,0x0B5B,0x0B5C,0x0B5C,0x0B5C,0x0B5C,0x0B7C,0x0B5B,0x0B7C,0x0B7C,0x0B7B,0x137C,0x0B5B,0x0B5B,0x0B5B,0x0B3B,0x0B3B,0x0B1A,0x031A,0x031A,0x033A,0x035A,0x0BFC,0x34FF,0x1C3D,0x037B,0x033A,0x031A,0x02F9,0x02F9,0x02FA,0x031A,0x031A,0x031A,0x033A,0x0B5B,0x0B3B,0x0B3B,0x0B5B,0x0B5B,0x0B5B,0x0B5C,0x0B5B,0x0B5B,0x0B5B,0x0B7B,0x0B5B,0x0B7B,0x137C,0x0B5B,0x0B7C,0x0B7C,0x137C,0x0B5B,0x0B7C,0x0B7B,0x0B7C,0x0B5B,0x0B7B,0x0B5B,0x0B7C,0x0B7C,0x0B7C,0x0B7B,0x0B7C,0x0B7C,0x0B7C,0x0B7C,0x0B7C,0x0B7C,0x0B7B,0x0B5B,0x0B7C,0x0B7B,0x0B7B,0x0B7B,0x137C,0x0B5B,0x137C,0x139C,0x139C,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x0B7B,0x037B,0x035A,0x141C,0x2CFF,0x035A,0x035A,0x033B,0x033B,0x033B,0x035B,0x035B,0x0B5B,0x0B5B,0x0B5B,0x0B7C,0x0B5C,0x0B5B,0x0B7C,0x0B7C,0x0B5C,0x0B5C,0x0B5B,0x0B5C,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B7B,0x0B5B,0x0B7C,0x0B7C,0x0B7C,0x0B7C,0x0B7C,0x0B5B,0x137C,0x0B7B,0x137C,0x0B5B,0x0B7B,0x0B7B,0x137B,0x0B7B,0x0B7B,0x0B5B,0x0B7B,0x0B5B,0x0B5B,0x0B5B,0x0B7B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B3B,0x033B,0x0B3B,0x033B,0x0B3B,0x0B5B,0x033A,0x0B5B,0x031A,0x02F9,0x2CBF,0x24BF,0x0319,0x035B,0x033B,0x035B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B3B,0x0B5B,0x0B5B,0x0B3B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B7B,0x0B5B,0x137C,0x0B5B,0x0B5B,0x0B5B,0x0B7B,0x0B7B,0x0B5B,0x0B5B,0x0B5C,0x0B5C,0x0B7B,0x0B5B,0x0B7B,0x0B7B,0x0B7C,0x0B5B,0x0B7C,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B7B,0x0B7C,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x033B,0x0B3B,0x0B5B,0x0B3B,0x033A,0x033A,0x033A,0x033A,0x031A,0x033A,0x037A,0x0BDB,0x2CFF,0x0C1C,0x037A,0x037B,0x035A,0x0B9B,0x0B5B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B5B,0x0B5B,0x0B5B,0x0B5C,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B3B,0x0B5B,0x0B5B,0x0B3B,0x0B5B,0x0B5B,0x0B5B,0x0B3B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B7B,0x137B,0x0B7B,0x0B7B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B5B,0x0B7C,0x0B5B,0x0B3B,0x0B5B,0x0B3B,0x0B5B,0x0B5B,0x033B,0x031A,0x0B3B,0x033A,0x033A,0x033A,0x035B,0x0B9B,0x0BBC,0x1C5E,0x2CDF,0x141D,0x035A,0x033A,0x031A,0x033A,0x0B5B,0x0B3B,0x0B5B,0x0B3B,0x0B3B,0x135B,0x0B5B,0x0B5B,0x0B5B,0x135B,0x0B3B,0x137B,0x0B5B,0x0B3B,0x0B3B,0x0B3B,0x133B,0x133B,0x133B,0x133B,0x135B,0x133B,0x133B,0x135B,0x135B,0x1B5B,0x1B5B,0x1B5B,0x1B7B,0x1B5B,0x1B7B,0x237C,0x237C,0x237C,0x2B9C,0x237C,0x237C,0x2B9C,0x2B7C,0x2B5C,0x2B5C,0x2B7C,0x2B5B,0x337C,0x337C,0x337B,0x3B9C,0x3B7C,0x4B9C,0x537C,0x635B,0x6B1A,0x7A97,0x9297,0x9235,0x99F4,0xAA14,0xA9F3,0xB1F4,0xA9B3,0xB1F3,0xB1F3,0xA9F3,0xB1F3,0xA9F3,0xA1D3,0xA9F3,0xA9F3,0xA9F3,0xA1F3,0xA1F3,0xA9F3,0xA1D3,0xA9F3,0xA9D3,0xA9D3,0xA9F3,0xA9D3,0xAA14,0xA1D3,0xA214,0xA214,0x9A35,0x9235,0x8A97,0x7AD8,0x3973,0x42B8,0x2AB8,0x1AFA,0x131A,0x135B,0x135B,0x135B,0x135B,0x0B5B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B5B,0x0B3B,0x0B5B,0x031B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x033A,0x0B5B,0x031A,0x031A,0x0319,0x02F9,0x02F9,0x031A,0x033A,0x033A,0x0B9B,0x1C5E,0x2CFF,0x2CDF,0x141C,0x037A,0x035A,0x033A,0x031A,0x0319,0x0319,0x031A,0x031A,0x0B3A,0x0B3B,0x0B3B,0x0B3A,0x0B5B,0x0B3B,0x0B1A,0x0B3B,0x0B3B,0x0B3B,0x135C,0x0B3B,0x135B,0x135B,0x0B3B,0x0B5B,0x0B5B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x135B,0x0B3B,0x0B3B,0x0B5B,0x0B5B,0x0B5B,0x0B3B,0x137B,0x0B5B,0x0B3A,0x0B3A,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B3A,0x0B3B,0x0B3B,0x0B3B,0x033A,0x033A,0x02FA,0x02F9,0x02F9,0x02F9,0x031A,0x031A,0x033A,0x033A,0x033A,0x035A,0x0BBB,0x1C3D,0x2CBF,0x2CBF,0x1C1D,0x0B9B,0x033A,0x0319,0x02F9,0x02F9,0x02F9,0x031A,0x031A,0x031A,0x0B3A,0x0B3B,0x0B3A,0x0B3B,0x0B3B,0x031A,0x0B3B,0x0B5B,0x0B5B,0x0B5B,0x0B3B,0x0B3B,0x0B5B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B3B,0x0B1A,0x0B1B,0x0B1B,0x0AFA,0x0AFA,0x0AFA,0x0AFA,0x0B1A,0x0B1A,0x031A,0x02FA,0x031A,0x031A,0x02FA,0x02FA,0x031A,0x02FA,0x02F9,0x02F9,0x02F9,0x02D9,0x02D9,0x02F9,0x02D9,0x02F9,0x02FA,0x02FA,0x031A,0x033A,0x13BC,0x243E,0x2CDF,0x2CDF,0x249E,0x13FC,0x0B9B,0x0319,0x02F9,0x02D9,0x02D8,0x02D8,0x02D9,0x02F9,0x02F9,0x0319,0x0B1A,0x0B1A,0x0B3A,0x0B3A,0x0B3A,0x0B3B,0x0B3A,0x0B1A,0x0B1A,0x0B1A,0x135B,0x133B,0x0B1A,0x0B1A,0x02FA,0x0B3B,0x0B1A,0x0B1B,0x0B1A,0x02FA,0x02FA,0x0B1A,0x02DA,0x02FA,0x0AFA,0x02D9,0x02D9,0x0AFA,0x02D9,0x02FA,0x02FA,0x031A,0x02FA,0x0B1A,0x031A,0x02F9,0x02D9,0x02D9,0x02D8,0x02D8,0x02D9,0x02D9,0x02D9,0x02D9,0x02D9,0x02D9,0x02F9,0x02D9,0x02D9,0x02F9,0x0B9B,0x1C1D,0x34BF,0x3D1F,0x34DF,0x13FC,0x0339,0x0319,0x02F9,0x02F9,0x02F9,0x02D9,0x02D9,0x02F9,0x02FA,0x02F9,0x0B1A,0x0AFA,0x0B1A,0x0AFA,0x0AFA,0x0B1A,0x0AFA,0x0AFA,0x0B1A,0x0AFA,0x02DA,0x0AFA,0x02D9,0x0B1A,0x0B1A,0x02DA,0x0B1A,0x0B1A,0x02FA,0x0AFA,0x02FA,0x02FA,0x02FA,0x02DA, + 0x0217,0x0217,0x01F6,0x01F6,0x01F6,0x01F6,0x01D6,0x01F6,0x01F6,0x01F6,0x01F6,0x0217,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0217,0x0217,0x01F7,0x0217,0x0238,0x0218,0x0218,0x0218,0x01F7,0x01F7,0x0217,0x01F7,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0217,0x0216,0x0237,0x0237,0x0237,0x0257,0x0277,0x0298,0x02B8,0x0319,0x1BDC,0x2C5E,0x3CBF,0x135B,0x0298,0x0258,0x0237,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0237,0x0238,0x0238,0x0217,0x0217,0x01F7,0x01F7,0x0217,0x0217,0x0218,0x0218,0x0217,0x0217,0x01F7,0x01F7,0x0218,0x0218,0x0217,0x0217,0x0217,0x0217,0x0218,0x0238,0x0238,0x0218,0x01F7,0x0218,0x0218,0x0218,0x0238,0x0238,0x0238,0x0218,0x01F8,0x01F7,0x01F7,0x01F7,0x0218,0x0218,0x0238,0x0238,0x01F7,0x01F7,0x01F6,0x01F6,0x0216,0x0216,0x0237,0x0257,0x0257,0x0277,0x0297,0x02D8,0x033A,0x1BFC,0x2C7E,0x349F,0x1BBC,0x02B9,0x0257,0x0216,0x0217,0x0216,0x0237,0x0236,0x0217,0x0217,0x0237,0x0237,0x0237,0x0237,0x0217,0x0217,0x0218,0x0217,0x0218,0x0218,0x0218,0x0218,0x0238,0x0238,0x0238,0x0238,0x0218,0x0218,0x0218,0x0217,0x0238,0x0238,0x0238,0x0237,0x0217,0x0217,0x0217,0x0238,0x0238,0x0218,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0218,0x0217,0x01F7,0x01F7,0x0217,0x0217,0x0237,0x0237,0x0236,0x0257,0x0277,0x0297,0x02B8,0x02D8,0x037B,0x245E,0x247F,0x1BFD,0x033A,0x02D9,0x0277,0x0257,0x0237,0x0217,0x0237,0x0237,0x0257,0x0237,0x0237,0x0237,0x0258,0x0258,0x0238,0x0238,0x0238,0x0258,0x0238,0x0258,0x0258,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0258,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0218,0x0218,0x0238,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0238,0x0218,0x0258,0x0258,0x0238,0x0238,0x0238,0x0218,0x0258,0x0258,0x0238,0x0258,0x0238,0x0237,0x0257,0x0278,0x0298,0x02B8,0x0319,0x1C1D,0x2CBF,0x2C7F,0x033A,0x0298,0x0257,0x0237,0x0257,0x0257,0x0257,0x0258,0x0278,0x0278,0x0258,0x0258,0x0278,0x0258,0x0258,0x0279,0x0258,0x0258,0x0258,0x0238,0x0238,0x0258,0x0238,0x0238,0x0238,0x0238,0x0258,0x0258,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0258,0x0259,0x0258,0x0279,0x0259,0x0238,0x0238,0x0258,0x0278,0x0278,0x0278,0x0278,0x0278,0x0298,0x02B8,0x02F9,0x13FD,0x2CBF,0x247F,0x0319,0x0277,0x0257,0x0237,0x0257,0x0257,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0278,0x0258,0x0258,0x0258,0x0259,0x0238,0x0238,0x0238,0x0238,0x0238,0x0239,0x0259,0x0259,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0258,0x0258,0x0258,0x0258,0x0238,0x0238,0x0238,0x0238,0x0259,0x0279,0x0238,0x0258,0x0258,0x0258,0x0259,0x0259,0x0258,0x0258,0x0258,0x0238,0x0238,0x0238,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0278,0x0298,0x02B9,0x02F9,0x3CFF,0x1BFD,0x02D9,0x0278,0x0298,0x0278,0x0278,0x0278,0x0258,0x0258,0x0258,0x0258,0x0278,0x0278,0x0258,0x0259,0x0238,0x0258,0x0258,0x0258,0x0258,0x0258,0x0238,0x0238,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0238,0x0258,0x0258,0x0238,0x0238,0x0238,0x0218,0x0217,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0298,0x02B8,0x2C9F,0x13FD,0x02D9,0x0299,0x0279,0x0279,0x0278,0x0278,0x0279,0x0279,0x0258,0x0259,0x0258,0x0258,0x0259,0x0259,0x0258,0x0258,0x0258,0x0258,0x0238,0x0238,0x0258,0x0258,0x0238,0x0238,0x0258,0x0258,0x0238,0x0238,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0238,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0279,0x0238,0x0258,0x0258,0x0258,0x0278,0x0278,0x0258,0x0257,0x1BFD,0x1C1D,0x0298,0x0299,0x0258,0x0258,0x0278,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0238,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0238,0x0258,0x0258,0x0238,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0279,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0278,0x0278,0x0258,0x0258,0x0258,0x0257,0x0278,0x02B8,0x13FC,0x249F,0x0298,0x0298,0x0278,0x0278,0x0258,0x0258,0x0258,0x0258,0x0218,0x0238,0x0238,0x0238,0x0238,0x0238,0x0258,0x0279,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0238,0x0238,0x0238,0x0258,0x0238,0x0238,0x0258,0x0258,0x0238,0x0238,0x0258,0x0258,0x0238,0x0238,0x0258,0x0258,0x0238,0x0238,0x0258,0x0258,0x0238,0x0238,0x0238,0x0238,0x0258,0x0279,0x0238,0x0258,0x0258,0x0258,0x0258,0x0278,0x0258,0x0258,0x0258,0x0258,0x0238,0x0258,0x0278,0x0298,0x139C,0x349F,0x031A,0x02D9,0x02B9,0x0258,0x0237,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0258,0x0279,0x0258,0x0258,0x0258,0x0258,0x0279,0x0258,0x0259,0x0258,0x0258,0x0238,0x0258,0x0258,0x0258,0x0258,0x0279,0x0238,0x0258,0x0238,0x0238,0x0258,0x0258,0x0238,0x0258,0x0238,0x0A58,0x0A58,0x0A38,0x0238,0x0A58,0x0A58,0x1259,0x1278,0x0A38,0x1258,0x1258,0x0A38,0x1258,0x1238,0x1A38,0x1A38,0x2237,0x3237,0x4A57,0x6236,0x8277,0x9A76,0x9A14,0xA214,0xA1F3,0xA9F4,0xA9D3,0xA9F4,0xA9D3,0xA9B3,0xB1F4,0xA9F3,0xA9F3,0xA1B2,0xA9F3,0xA9F3,0xA9F3,0xA1D3,0xA9D3,0xA9D3,0xB1F4,0xA9D3,0xA9D3,0xA9D3,0xA9F4,0xA9F3,0xA1D3,0xAA34,0xA214,0x99F4,0x9235,0x8A36,0x7236,0x2050,0x31B5,0x2238,0x01B6,0x01F7,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0238,0x0238,0x0218,0x0238,0x0238,0x0218,0x0218,0x0217,0x0217,0x0217,0x0258,0x0238,0x0258,0x0258,0x0237,0x0237,0x0258,0x0258,0x0237,0x0258,0x0258,0x0257,0x0298,0x0319,0x243E,0x247F,0x0B9C,0x02F9,0x02B8,0x0298,0x0278,0x0278,0x0278,0x0237,0x0237,0x0237,0x0237,0x0257,0x0237,0x0237,0x0237,0x0237,0x0237,0x0217,0x01F7,0x0217,0x0217,0x0217,0x0258,0x0258,0x0238,0x0217,0x0217,0x0218,0x0217,0x0217,0x0218,0x0217,0x0217,0x0217,0x0218,0x0218,0x0217,0x0217,0x0218,0x0237,0x0238,0x0237,0x0237,0x0238,0x0217,0x0217,0x0217,0x0217,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0237,0x0237,0x0258,0x0278,0x0278,0x0278,0x0298,0x02F9,0x1BFD,0x245E,0x1BFD,0x033A,0x02B8,0x0298,0x0277,0x0278,0x0277,0x0257,0x0257,0x0258,0x0237,0x0237,0x0217,0x0217,0x0237,0x0238,0x0217,0x0217,0x0217,0x0217,0x0238,0x0238,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x01F7,0x0217,0x0217,0x01F7,0x0217,0x0217,0x0217,0x0217,0x0237,0x0237,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x0237,0x0237,0x0237,0x0237,0x0237,0x0257,0x02D9,0x139B,0x2C3E,0x2C5E,0x13DC,0x0B5A,0x02B8,0x0298,0x0277,0x0277,0x0257,0x0237,0x0216,0x0216,0x0216,0x0216,0x0216,0x0216,0x01F6,0x0217,0x0217,0x0217,0x0217,0x01F7,0x01D6,0x01D6,0x01F7,0x01F7,0x0217,0x0217,0x01F7,0x0217,0x01F7,0x0217,0x0217,0x0217,0x0218,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x0217,0x0217,0x01F7,0x0217,0x01F7,0x0217,0x0217,0x0217,0x0237,0x0217,0x0217,0x0217,0x0237,0x0237,0x0237,0x0237,0x0237,0x0257,0x0257,0x0257,0x0298,0x02F9,0x1BDD,0x2C5E,0x245E,0x0B9B,0x02B8,0x02B8,0x0298,0x0278,0x0257,0x0237,0x0237,0x0237,0x0217,0x0217,0x0216,0x0217,0x0216,0x0216,0x01F6,0x01F7,0x01F6,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x01F7,0x01F7,0x01D6,0x01D6,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x0217, + 0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01D6,0x01B6,0x01D6,0x01B6,0x01D7,0x01D6,0x01D6,0x01D7,0x01D7,0x01B7,0x01D7,0x01B7,0x01D7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F8,0x01D7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B7,0x01B7,0x01B7,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01F6,0x01F6,0x0216,0x0257,0x0AF9,0x23BC,0x345F,0x2C3E,0x23DC,0x133A,0x0298,0x0237,0x0217,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F8,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D8,0x01F8,0x01D7,0x01D8,0x01D7,0x01F7,0x01D7,0x01F7,0x01D7,0x01F8,0x01F8,0x01F8,0x01D7,0x01D7,0x01D7,0x01F8,0x01F8,0x01F8,0x01D7,0x01D8,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D6,0x01D6,0x01D6,0x01F6,0x01F6,0x0216,0x0236,0x0257,0x0298,0x137B,0x2C1D,0x2C3E,0x1BFD,0x0319,0x02B8,0x0257,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F8,0x01F8,0x01F8,0x01F7,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F8,0x0218,0x01F7,0x01F8,0x01F7,0x01F8,0x01F8,0x01F8,0x01F7,0x01F8,0x01D7,0x01F7,0x01F7,0x01F6,0x01F6,0x0216,0x0216,0x0216,0x0216,0x0236,0x0277,0x02F9,0x241D,0x2C7F,0x13BC,0x02F9,0x02D9,0x0298,0x0257,0x0237,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x0218,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F7,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x0218,0x0218,0x0217,0x0217,0x0217,0x0217,0x0238,0x0257,0x0278,0x135B,0x243E,0x243E,0x0B5A,0x02D9,0x0278,0x0237,0x0237,0x0217,0x0237,0x0237,0x0237,0x0238,0x0238,0x0217,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0238,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0238,0x0238,0x0238,0x0218,0x0238,0x0218,0x0238,0x0238,0x0238,0x0258,0x0237,0x0237,0x0278,0x0298,0x139B,0x34BF,0x1BDD,0x02D9,0x0278,0x0237,0x0237,0x0217,0x0237,0x0237,0x0238,0x0218,0x0218,0x0238,0x0238,0x0238,0x0238,0x0218,0x0218,0x0238,0x0218,0x0218,0x0219,0x0218,0x0219,0x0218,0x0218,0x0219,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0239,0x0239,0x0239,0x0218,0x0238,0x0218,0x0239,0x0218,0x0238,0x0239,0x0238,0x0218,0x0238,0x0218,0x0238,0x0238,0x0237,0x0278,0x0299,0x2C3F,0x23FD,0x02D9,0x0298,0x0278,0x0258,0x0258,0x0258,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0218,0x0238,0x0238,0x0218,0x0218,0x0238,0x0238,0x0218,0x0218,0x0238,0x0218,0x0238,0x0218,0x0238,0x0218,0x0238,0x0218,0x0238,0x0218,0x0238,0x0238,0x0238,0x0218,0x0218,0x0218,0x0238,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0238,0x0238,0x0218,0x0218,0x0238,0x0238,0x0278,0x02FA,0x34BF,0x033A,0x0299,0x0279,0x0238,0x0238,0x0258,0x0258,0x0238,0x0239,0x0238,0x0238,0x0239,0x0239,0x0239,0x0218,0x0239,0x0218,0x0239,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0238,0x0238,0x0238,0x0238,0x0218,0x0218,0x0238,0x0238,0x0238,0x0218,0x0238,0x0259,0x0238,0x0238,0x0238,0x0218,0x0238,0x0238,0x0238,0x0237,0x0238,0x0237,0x1BFD,0x1BFD,0x0258,0x0258,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0238,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0218,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0238,0x0238,0x0238,0x0218,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0238,0x0238,0x0238,0x0218,0x0238,0x0238,0x0238,0x0238,0x0238,0x0237,0x0237,0x0237,0x0258,0x0298,0x0339,0x3CFF,0x0B3A,0x0278,0x0258,0x0238,0x0238,0x0238,0x0238,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0238,0x0238,0x0218,0x0238,0x0238,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0238,0x0218,0x0258,0x0258,0x0298,0x1BDD,0x349F,0x02B9,0x02B9,0x0258,0x0237,0x0217,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0218,0x0238,0x0238,0x0238,0x0218,0x0238,0x0218,0x0218,0x0238,0x0238,0x0218,0x0238,0x0238,0x0218,0x0238,0x0A38,0x0A18,0x0A18,0x0A38,0x0A18,0x0A18,0x0A38,0x1258,0x1238,0x0A38,0x1258,0x0A38,0x1259,0x1238,0x1A38,0x2238,0x2A37,0x3A17,0x5A37,0x7A77,0x9277,0x9A35,0x99F4,0xAA14,0xA9F4,0xA9F4,0xA9D3,0xA9D3,0xB1F4,0xA9D3,0xA9D3,0xA9F3,0xA9F3,0xA9D3,0xA9F4,0xA1D3,0xA9F4,0xA9F3,0xA9D3,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xA9F4,0xA9F3,0xA1F3,0xA214,0xA214,0x9215,0x8A36,0x8298,0x4974,0x5259,0x3279,0x09D6,0x0A18,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x01F8,0x01F8,0x01F8,0x0218,0x0218,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F7,0x01F8,0x0218,0x01F7,0x0217,0x0218,0x0217,0x0238,0x0217,0x0238,0x01F7,0x0217,0x0217,0x0217,0x0237,0x0258,0x0278,0x02B8,0x1BBC,0x349F,0x2C3E,0x0B1A,0x0277,0x0257,0x0237,0x0217,0x0217,0x0217,0x01F7,0x0217,0x0217,0x0217,0x0217,0x0217,0x01F7,0x0217,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F8,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x0218,0x0218,0x0218,0x0217,0x0218,0x01F7,0x0217,0x0217,0x0217,0x0217,0x0217,0x0237,0x0258,0x0278,0x02B9,0x0B3A,0x241E,0x2C7F,0x23FD,0x0AF9,0x0277,0x0257,0x0257,0x0237,0x0217,0x0216,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D6,0x01D7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x0217,0x0237,0x0257,0x0298,0x0B1A,0x1BDD,0x2C3E,0x2C1E,0x1B5B,0x0277,0x0257,0x0237,0x0237,0x0216,0x01F6,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D7,0x01D6,0x01B6,0x01D7,0x01B7,0x01D7,0x01D7,0x01D7,0x01F8,0x01F7,0x01D7,0x01D7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0237,0x0237,0x0278,0x02B8,0x0B3A,0x23FD,0x2C1E,0x2BDD,0x131A,0x0298,0x0257,0x0237,0x0217,0x01F6,0x01F6,0x01D6,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01B6,0x01B6,0x01D6,0x01D7,0x01D7,0x01D6,0x01D7,0x01F7, + 0x01D6,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01B6,0x01B6,0x01B6,0x01B6,0x01D7,0x01D7,0x01D7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B7,0x01B7,0x01B7,0x01B6,0x01D7,0x01D7,0x01D6,0x01D6,0x01D6,0x01F6,0x01F6,0x0237,0x02B8,0x1B7C,0x343E,0x3C7F,0x343E,0x239C,0x02B8,0x0257,0x0257,0x0217,0x01F6,0x01D6,0x01D7,0x01D7,0x01D7,0x01D6,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01D7,0x01B7,0x01D7,0x01D7,0x01D8,0x01D7,0x01D7,0x01D7,0x01F8,0x01F8,0x01F8,0x01D7,0x01F8,0x01D7,0x01F8,0x01F8,0x01D7,0x01D7,0x01D7,0x01D7,0x01F8,0x01F8,0x01B7,0x01D7,0x01D7,0x01D7,0x01F8,0x01F7,0x01F8,0x01F8,0x01F7,0x01D7,0x01F7,0x01D6,0x01F7,0x01F7,0x01F6,0x01F6,0x0216,0x0216,0x0277,0x02D9,0x1B9C,0x345E,0x347F,0x2C1D,0x0B19,0x0277,0x0257,0x0237,0x0237,0x0217,0x0217,0x01F6,0x0217,0x01F7,0x01F7,0x01F6,0x01F7,0x01D6,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F8,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0218,0x01F8,0x01F8,0x01D8,0x01F8,0x01F8,0x01F7,0x01F7,0x0218,0x0218,0x0218,0x0218,0x01F8,0x01F7,0x01F7,0x01F8,0x01D7,0x01D7,0x01F8,0x01F7,0x01F8,0x01F8,0x01F8,0x01F8,0x01D7,0x01F7,0x01F7,0x0217,0x0238,0x0217,0x0216,0x0216,0x0236,0x0236,0x02B8,0x1B9B,0x347F,0x2C5E,0x0B1A,0x0298,0x02D9,0x0278,0x0237,0x0216,0x0217,0x0217,0x0237,0x0217,0x0238,0x0238,0x0217,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0218,0x01F7,0x0218,0x0218,0x0218,0x01F8,0x0238,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x01F7,0x0218,0x01F8,0x0218,0x01F8,0x0218,0x01F8,0x0218,0x01F7,0x01F8,0x01F8,0x01F8,0x01F7,0x01F8,0x01F7,0x01F8,0x0218,0x01D7,0x01F7,0x01F8,0x01F7,0x0218,0x0218,0x0218,0x0217,0x0217,0x0217,0x0237,0x0258,0x0258,0x02D9,0x1BBD,0x347F,0x1BDD,0x02F9,0x02B8,0x0278,0x0258,0x0237,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0237,0x0217,0x0217,0x0217,0x0238,0x0238,0x0238,0x0218,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0238,0x0218,0x0238,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0238,0x0217,0x0217,0x0237,0x0258,0x0298,0x139C,0x3CBF,0x23FD,0x0298,0x0257,0x0257,0x0237,0x0258,0x0258,0x0238,0x0217,0x0238,0x0218,0x0238,0x0218,0x0238,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x0239,0x0218,0x0219,0x0218,0x0219,0x0218,0x0238,0x0218,0x0219,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0239,0x0238,0x0218,0x0218,0x0238,0x0239,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0238,0x0218,0x0217,0x0217,0x0217,0x0238,0x0258,0x0299,0x1B9C,0x2C1E,0x02B9,0x0278,0x0278,0x0258,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0238,0x0238,0x0238,0x0218,0x0238,0x0218,0x0238,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0238,0x0218,0x0238,0x0218,0x0238,0x0238,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0238,0x0218,0x0238,0x0238,0x0238,0x0218,0x0238,0x0238,0x0238,0x0239,0x0219,0x0218,0x0238,0x0238,0x0239,0x0218,0x0218,0x0238,0x0239,0x0218,0x0239,0x0238,0x0238,0x0218,0x0218,0x0218,0x0238,0x0258,0x0298,0x2C3E,0x2C3F,0x02B9,0x0278,0x0238,0x0238,0x0238,0x0238,0x0218,0x0218,0x0238,0x0238,0x0218,0x0239,0x0218,0x0218,0x0218,0x0239,0x0218,0x0239,0x0218,0x0239,0x0218,0x0218,0x0218,0x0239,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0238,0x0238,0x0218,0x0238,0x0238,0x0239,0x0218,0x0218,0x0238,0x0238,0x0218,0x0238,0x0238,0x0218,0x0218,0x0238,0x0238,0x0238,0x0218,0x0239,0x0218,0x0218,0x0218,0x0238,0x0238,0x0258,0x0238,0x0238,0x0238,0x0238,0x0237,0x0217,0x0237,0x2C3E,0x1BFD,0x0258,0x0258,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0238,0x0218,0x0238,0x0238,0x0238,0x0218,0x0238,0x0218,0x0238,0x0218,0x0238,0x0218,0x0238,0x0218,0x0238,0x0218,0x0238,0x0218,0x0238,0x0238,0x0218,0x01F8,0x0238,0x0238,0x0238,0x0238,0x0218,0x0218,0x0238,0x0238,0x0238,0x0218,0x0238,0x0218,0x0238,0x0218,0x0238,0x0238,0x0238,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0238,0x0237,0x0258,0x0237,0x0237,0x0237,0x0257,0x0298,0x02B8,0x2C5F,0x2C1E,0x0298,0x0258,0x0238,0x0217,0x0217,0x01F7,0x0218,0x0218,0x0218,0x0238,0x0238,0x0259,0x0259,0x0238,0x0238,0x0238,0x0238,0x0238,0x0218,0x0238,0x0238,0x0238,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0238,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0238,0x0238,0x0218,0x0218,0x0218,0x0238,0x0238,0x0238,0x0218,0x0218,0x0218,0x0238,0x0218,0x0238,0x0218,0x0238,0x0217,0x0218,0x0218,0x0238,0x0258,0x0298,0x0298,0x2C5F,0x241E,0x0278,0x0258,0x0238,0x0238,0x0217,0x0238,0x0218,0x01F8,0x0218,0x0238,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0238,0x01F7,0x0218,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0A59,0x0A39,0x0A59,0x0A59,0x0A38,0x0A38,0x0A39,0x0218,0x0A59,0x0A59,0x0A59,0x0A38,0x1259,0x1279,0x1279,0x1279,0x1A99,0x1279,0x1A9A,0x22BA,0x2279,0x2A79,0x3258,0x3A38,0x5217,0x6A16,0x9297,0x9A36,0x91D4,0xA1F4,0xA1D4,0xA9D3,0xA9D4,0xB1F4,0xA9B3,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xA9D3,0xA9D3,0xA9F4,0xA9D3,0xA9D3,0xA9B3,0xA9D3,0xB1F4,0xA9D3,0xB1F4,0xA9F3,0xA9F3,0xA9F3,0xA9F4,0xA1F3,0x99F4,0x9A35,0x9256,0x92D9,0x59B5,0x41D6,0x3A99,0x1218,0x0A38,0x0238,0x0238,0x0238,0x0238,0x0239,0x01F8,0x01F8,0x0219,0x0219,0x0218,0x01F8,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0238,0x0218,0x01F7,0x01D7,0x01F7,0x01F7,0x0217,0x01F7,0x0217,0x0217,0x0238,0x0217,0x0238,0x0217,0x0217,0x01F7,0x0217,0x0237,0x0258,0x0258,0x0B1A,0x2C3F,0x347F,0x1B9C,0x0298,0x0257,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0218,0x01F7,0x01F7,0x0217,0x01F7,0x0218,0x0218,0x01F7,0x0217,0x01D7,0x01D7,0x01F7,0x01F7,0x0218,0x01F7,0x01F7,0x01D7,0x01F8,0x01F8,0x0218,0x01F7,0x01F7,0x0218,0x0218,0x01F7,0x0218,0x01F7,0x0218,0x0217,0x0218,0x0218,0x0218,0x01F7,0x01F7,0x01F8,0x0218,0x01F7,0x0238,0x0217,0x0218,0x0218,0x0218,0x01F7,0x0218,0x0217,0x01F6,0x01F7,0x01F7,0x01F7,0x0237,0x0237,0x0278,0x0298,0x02B8,0x135B,0x23FD,0x347F,0x23FD,0x02F9,0x0277,0x0237,0x0217,0x0217,0x0217,0x01F7,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01D6,0x01F7,0x01F7,0x01D7,0x01D7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0218,0x01F7,0x01F8,0x01F8,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x0217,0x0217,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F6,0x01F7,0x01F7,0x0217,0x0237,0x0217,0x0237,0x0257,0x0AD9,0x239C,0x3C5F,0x345E,0x1B7B,0x02B8,0x0257,0x0236,0x0216,0x01F6,0x01F6,0x01F6,0x01F6,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x0217,0x01F7,0x01F7,0x01D7,0x01D6,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F8,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01F7,0x01D7,0x0217,0x01F7,0x01F7,0x01D7,0x01D7,0x01F7,0x01F6,0x01D6,0x01D6,0x01D6,0x01F6,0x01F6,0x0217,0x0237,0x0257,0x0257,0x0257,0x0257,0x12FA,0x2BDD,0x3C7F,0x345F,0x23BD,0x0AF9,0x0257,0x0217,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x01F7,0x01D6,0x01D6,0x01F6,0x01F7,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01D6,0x01D6,0x01B6,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B6, + 0x01D7,0x01D6,0x01D6,0x01D7,0x01D6,0x01D7,0x01D7,0x01B7,0x01B7,0x01B6,0x01B7,0x01B7,0x01B6,0x01B7,0x01B7,0x01B6,0x01D7,0x01B7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B6,0x01D7,0x01D7,0x01B6,0x01D7,0x01D7,0x01F7,0x01F6,0x0216,0x0217,0x0257,0x12FA,0x2BDD,0x343E,0x2BFD,0x1B5B,0x02B8,0x0256,0x0215,0x0216,0x0216,0x01F6,0x01D6,0x01D6,0x01D6,0x01B6,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01D7,0x01D7,0x01F7,0x01D7,0x01F7,0x01F7,0x01D7,0x01D7,0x01F7,0x01D7,0x01F7,0x01D7,0x01D7,0x01F7,0x01D7,0x01F7,0x01F7,0x01D6,0x01F6,0x0217,0x0217,0x0237,0x0237,0x0278,0x0AD9,0x23DD,0x343E,0x2C3E,0x1B7B,0x02B8,0x0277,0x0236,0x0236,0x0216,0x0237,0x0217,0x01F6,0x01F6,0x01F7,0x01F6,0x01F6,0x01D6,0x01D6,0x01D6,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D8,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F8,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0216,0x0236,0x0298,0x1B5B,0x2C1E,0x2C3E,0x1B9B,0x02B8,0x0257,0x0278,0x0237,0x0217,0x0216,0x01F6,0x01F6,0x0217,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F8,0x0218,0x01F8,0x0218,0x0218,0x01F7,0x0218,0x01F8,0x01F8,0x0218,0x0218,0x01F8,0x01F7,0x01F7,0x0218,0x0218,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F8,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01F7,0x01F7,0x0218,0x0217,0x01F7,0x0217,0x0217,0x01F7,0x0237,0x0237,0x0278,0x133B,0x23FE,0x2C1E,0x0B1A,0x0298,0x0278,0x0278,0x0257,0x0237,0x0217,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x0217,0x0218,0x01F7,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x01F8,0x0218,0x01F8,0x01F8,0x01F8,0x0218,0x01F8,0x01F8,0x0218,0x01F8,0x01F8,0x0218,0x01F8,0x01F7,0x01F8,0x0218,0x01F8,0x01F8,0x01F8,0x01F8,0x0218,0x0218,0x01F8,0x01F7,0x0217,0x0217,0x0217,0x0218,0x0217,0x0237,0x0217,0x0237,0x0258,0x0298,0x23FD,0x2C3E,0x1BBC,0x0298,0x0257,0x0237,0x0237,0x0237,0x0237,0x0217,0x0217,0x0217,0x01F7,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x01F7,0x0217,0x0217,0x0217,0x0258,0x0278,0x0AFA,0x347F,0x02B9,0x0278,0x0258,0x0258,0x0238,0x0238,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x0218,0x0218,0x0238,0x0238,0x0238,0x0218,0x0218,0x0218,0x0238,0x0238,0x0258,0x02B9,0x347F,0x1B9C,0x0278,0x0238,0x0218,0x0218,0x0218,0x0218,0x0217,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0237,0x0237,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x2C5E,0x1BDD,0x0237,0x0237,0x0238,0x0237,0x0217,0x0238,0x0218,0x0238,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0217,0x0218,0x0217,0x0217,0x0237,0x0217,0x0217,0x0217,0x0237,0x0237,0x0278,0x0B3A,0x347F,0x02B9,0x0237,0x0237,0x0217,0x0217,0x01F7,0x0218,0x0218,0x0218,0x0218,0x0238,0x0238,0x0218,0x0238,0x0238,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0238,0x0218,0x0218,0x01F7,0x0218,0x0218,0x0218,0x0218,0x0217,0x0217,0x0217,0x0217,0x0217,0x0237,0x0258,0x0278,0x02D9,0x3CDF,0x1B9C,0x0278,0x0237,0x0238,0x0217,0x01F7,0x0217,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0217,0x0218,0x0218,0x0218,0x0218,0x0238,0x01F8,0x0218,0x0218,0x0218,0x0A39,0x0218,0x0238,0x0238,0x0238,0x0A39,0x0A38,0x0A38,0x0A59,0x0A58,0x0A58,0x0A58,0x0A58,0x0A58,0x1259,0x1279,0x1A99,0x1A79,0x1A79,0x2258,0x2238,0x3217,0x41F7,0x5A17,0x7A57,0x9257,0x9A15,0xA1F4,0xA9F4,0xA9F4,0xA9D4,0xA9D3,0xB1F4,0xA9D3,0xA9D3,0xA9F3,0xA9D3,0xA9D3,0xA9F3,0xA9F3,0xA9D3,0xA9F3,0xA9B3,0xA9D3,0xA9D3,0xB1F4,0xA9D3,0xA9D3,0xA9F3,0xA9D3,0xA1D3,0xA1F4,0xA235,0x9A15,0x9215,0x9298,0x61D6,0x3134,0x21F6,0x11F7,0x0A17,0x0218,0x0218,0x0218,0x0218,0x01F8,0x01F8,0x0218,0x01F8,0x0218,0x0218,0x0218,0x01F8,0x01F8,0x01F8,0x0218,0x0218,0x0218,0x0218,0x01F7,0x01F8,0x01F8,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x01F7,0x0217,0x0217,0x0217,0x0237,0x0258,0x02B9,0x137B,0x345F,0x2C1E,0x0AD9,0x0237,0x0237,0x0217,0x0237,0x0217,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x0218,0x01F7,0x01D7,0x01F7,0x01F8,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x0218,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0237,0x0257,0x0257,0x0298,0x0B19,0x23FD,0x343E,0x135B,0x0298,0x0237,0x0217,0x0217,0x0217,0x01F7,0x01F6,0x01D6,0x01D6,0x01D6,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01D7,0x01F7,0x01D6,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D6,0x01F6,0x0217,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x0216,0x0216,0x0236,0x0277,0x131A,0x2BDD,0x2BFD,0x1B7B,0x0298,0x0257,0x0216,0x0216,0x0216,0x01F6,0x01F6,0x01D6,0x01F6,0x01B6,0x01B6,0x01D6,0x01F7,0x01F7,0x01F7,0x01D6,0x01D6,0x01F7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D6,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01F6,0x01F7,0x01F7,0x01F6,0x0217,0x0216,0x0216,0x0236,0x0277,0x0AD9,0x23BC,0x343E,0x23BD,0x12FA,0x0237,0x0236,0x0216,0x0237,0x0217,0x0217,0x01F6,0x01F6,0x01D6,0x01D6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6, + 0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x0196,0x0196,0x01B6,0x01B6,0x01B6,0x0196,0x0196,0x0196,0x0196,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x01B6,0x01D6,0x01D6,0x01D6,0x01B6,0x0196,0x0196,0x01B6,0x01B6,0x01D6,0x01D6,0x01D7,0x01F7,0x01F7,0x0217,0x0257,0x02B8,0x135B,0x341E,0x2BFD,0x239C,0x0AB8,0x0216,0x01D4,0x01B4,0x01D5,0x01D5,0x01D5,0x01B5,0x01D5,0x01D5,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01D7,0x01D7,0x01D7,0x01B7,0x01B7,0x01B7,0x01D7,0x01D7,0x01D7,0x01B7,0x01D7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D6,0x01B6,0x01B6,0x01D6,0x01D6,0x01D6,0x01B6,0x01B6,0x0196,0x01D6,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01F6,0x0216,0x0257,0x0298,0x0B1A,0x1BBC,0x2C3E,0x23BC,0x0AF9,0x0257,0x0216,0x0215,0x01F5,0x01F5,0x01F5,0x01F6,0x0216,0x01F6,0x01F6,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01F7,0x01F6,0x01D6,0x01D6,0x01D6,0x01D7,0x01D7,0x01F7,0x01D6,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B7,0x01B7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01D7,0x01F7,0x01D7,0x01F7,0x01D7,0x01D7,0x01B6,0x01D7,0x01D7,0x01D6,0x01D6,0x01D6,0x01F6,0x0217,0x0237,0x0298,0x135A,0x2C3E,0x345F,0x1B9C,0x0278,0x0216,0x0216,0x0216,0x01F6,0x01F6,0x0216,0x0216,0x01F6,0x01F7,0x01F6,0x01F6,0x01D6,0x01D6,0x01B6,0x01D6,0x01D6,0x01F7,0x01D7,0x01F7,0x01F7,0x01D7,0x01D7,0x01F7,0x01D7,0x01F7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01D7,0x01D7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01D7,0x01D6,0x01D6,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0237,0x0298,0x23BC,0x2C1E,0x23DD,0x02DA,0x0278,0x0258,0x0237,0x0217,0x0217,0x0217,0x0217,0x0217,0x01F6,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F8,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x0217,0x0237,0x0298,0x2C1E,0x343F,0x133B,0x0257,0x0237,0x0237,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0218,0x0218,0x0218,0x01F7,0x01F8,0x01F7,0x01F7,0x01F7,0x01F8,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0218,0x01F7,0x01F7,0x01F8,0x01F8,0x01F7,0x01F8,0x01F7,0x0218,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0218,0x0218,0x0217,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0237,0x02B9,0x349F,0x0B3B,0x0299,0x0278,0x0258,0x0237,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0218,0x0217,0x0217,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F8,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F8,0x01F8,0x01F7,0x0217,0x0218,0x01F7,0x01F7,0x01F7,0x0218,0x01F7,0x0218,0x0218,0x0218,0x0218,0x0217,0x0217,0x0258,0x0237,0x0B1A,0x2C1E,0x02B9,0x0238,0x0217,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x01F7,0x0218,0x01F7,0x01F7,0x01F8,0x01F8,0x01F8,0x01F7,0x0218,0x0218,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F7,0x01F8,0x01F8,0x01F7,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F8,0x01F7,0x0218,0x01F8,0x01F8,0x01F7,0x01F8,0x01F8,0x01F8,0x01F7,0x01F7,0x01F7,0x0218,0x0218,0x0218,0x01F7,0x0218,0x0217,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x01F6,0x0217,0x01F6,0x23DD,0x1B9C,0x0257,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x0218,0x01F7,0x01F7,0x01F7,0x0218,0x01F7,0x01F7,0x0218,0x01F7,0x01F7,0x0217,0x0217,0x0218,0x01F7,0x01F7,0x01F7,0x01F8,0x01F8,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0218,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x01F6,0x0217,0x0217,0x0257,0x0278,0x345F,0x0B1A,0x0216,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x0217,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0218,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F8,0x01F8,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x0217,0x0217,0x0217,0x0217,0x0237,0x0257,0x0277,0x1B7B,0x3C9F,0x02D9,0x0237,0x0217,0x01F6,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0218,0x01F7,0x01F8,0x01F8,0x01F7,0x01F7,0x01F7,0x0218,0x0217,0x01F7,0x0217,0x01F7,0x01F7,0x0217,0x0217,0x0218,0x0218,0x0217,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x0218,0x01F8,0x0218,0x0218,0x0217,0x0238,0x0A38,0x0217,0x01F7,0x0A18,0x09F7,0x0A18,0x1238,0x1238,0x1A18,0x1A18,0x21F7,0x3A17,0x5237,0x6A37,0x8A57,0x9A36,0x99F5,0xA1D4,0xA9D4,0xA9D4,0xA9D3,0xA9D3,0xA9D3,0xA9B3,0xA9F3,0xA9D3,0xA9F3,0xA9F3,0xA9D3,0xA9D3,0xB1F3,0xB1F3,0xA9D3,0xA9F3,0xA9F3,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xA1D3,0xA1F4,0xAA35,0x9A35,0x9215,0x8A57,0x7237,0x3112,0x3238,0x09B6,0x01D6,0x01F7,0x01F7,0x01F7,0x01F7,0x01F8,0x01F8,0x01F7,0x01F8,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01D6,0x01D6,0x01F7,0x01F7,0x01F7,0x01F6,0x0217,0x0217,0x0217,0x0237,0x0278,0x0298,0x23BD,0x2BFD,0x133B,0x0278,0x0237,0x0217,0x0217,0x01F7,0x01F6,0x01F6,0x01F7,0x01F6,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01D6,0x01D6,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F6,0x01D6,0x01F6,0x01F6,0x0216,0x0216,0x01F6,0x01F6,0x0216,0x0236,0x0277,0x131A,0x2C1E,0x23DD,0x131A,0x0278,0x0237,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01B6,0x01D6,0x01B6,0x01D6,0x01D6,0x01D7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D6,0x01B6,0x01D7,0x01D7,0x01D7,0x01D6,0x01D7,0x01D6,0x01D7,0x01D7,0x01D7,0x01B6,0x01D6,0x01B6,0x01D7,0x01D7,0x01D6,0x01D6,0x01D6,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01D6,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D5,0x01F6,0x01F6,0x01F6,0x0216,0x0AB9,0x237B,0x2BFD,0x1B7B,0x0AD9,0x0257,0x0216,0x01F6,0x01D6,0x01D6,0x01B5,0x01D6,0x01B6,0x01B6,0x0195,0x0195,0x01B6,0x01B6,0x01D6,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01B6,0x01B6,0x01D7,0x01D7,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01D6,0x01D6,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D5,0x01D5,0x01F5,0x01F5,0x01F6,0x0216,0x0257,0x1B5B,0x23BC,0x23DC,0x137B,0x02D8,0x0277,0x0237,0x0216,0x01F6,0x01D5,0x01B5,0x01B5,0x01B5,0x01B5,0x01B5,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01B6, + 0x01B6,0x01D6,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0196,0x0195,0x0195,0x0196,0x0196,0x0196,0x0196,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x0196,0x0196,0x01B6,0x0196,0x0196,0x01B6,0x01B6,0x0195,0x0195,0x01B5,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01D6,0x0217,0x0217,0x0217,0x0237,0x0278,0x2BDD,0x3C9F,0x23BC,0x0B3A,0x02B8,0x0257,0x0216,0x01F5,0x01D5,0x01D4,0x01D4,0x01D5,0x01D5,0x01D5,0x01B5,0x01D5,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D7,0x01B6,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x0195,0x01D6,0x01D6,0x01D6,0x01F6,0x0216,0x0237,0x0277,0x135A,0x2C1D,0x23FC,0x139B,0x02F9,0x0298,0x0236,0x0216,0x0216,0x01F5,0x01D5,0x01D5,0x01F5,0x01F5,0x01F6,0x0216,0x01F6,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D5,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01B6,0x01D6,0x01D6,0x01D6,0x01D7,0x01F7,0x01F7,0x01F6,0x01D6,0x01F6,0x01D6,0x01D7,0x01D6,0x01D6,0x01D6,0x01F6,0x01F6,0x01F6,0x01F6,0x0216,0x131A,0x3C7F,0x347F,0x1B9C,0x02D9,0x0257,0x0237,0x0216,0x01F6,0x01F6,0x01D6,0x01D6,0x01D6,0x0216,0x01F6,0x01F7,0x01F6,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01F6,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D7,0x01D6,0x01D6,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01F7,0x01F6,0x01F7,0x01F6,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D6,0x01F6,0x01F7,0x01F7,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x0217,0x0237,0x0A99,0x23BC,0x2BFE,0x135B,0x0299,0x0258,0x0258,0x0237,0x0217,0x0216,0x0216,0x01F6,0x01F6,0x01F6,0x01F6,0x01F7,0x01F7,0x01F7,0x01F7,0x01D6,0x01D7,0x01F7,0x01D6,0x01D7,0x01F7,0x01F7,0x01F6,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01F6,0x01D6,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F6,0x01F7,0x0217,0x0217,0x0217,0x0217,0x01F6,0x01F6,0x01F6,0x0237,0x0278,0x1B9C,0x1B9C,0x02D9,0x0257,0x0237,0x0237,0x0217,0x0217,0x01F6,0x01F6,0x01F7,0x01F7,0x01D6,0x01F6,0x01D6,0x01D6,0x01F7,0x01D7,0x01D7,0x01D6,0x01D7,0x01D7,0x01D6,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D6,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0237,0x0257,0x1BBC,0x137B,0x02D9,0x02B9,0x0278,0x0258,0x0217,0x01F7,0x01F7,0x01F7,0x01D6,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D6,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D6,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0217,0x0237,0x0257,0x135B,0x135B,0x0258,0x0237,0x01F6,0x0217,0x0217,0x01F7,0x01F6,0x0217,0x01F7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x133A,0x135B,0x0257,0x0237,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F6,0x01F6,0x01D6,0x01F6,0x01D6,0x01D6,0x01F6,0x01F6,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F6,0x01F6,0x01D6,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x0216,0x0237,0x0236,0x0B3A,0x1BBC,0x01D5,0x01F6,0x01F7,0x0217,0x0217,0x0217,0x01F7,0x01F6,0x01F7,0x01F7,0x01D6,0x01D6,0x01F7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D6,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D6,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0237,0x0217,0x0237,0x0277,0x1BBC,0x2BFD,0x0257,0x0216,0x01F6,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x0A17,0x09F7,0x11F7,0x19D6,0x29B6,0x3195,0x5195,0x7A36,0x9256,0x99F5,0xA1D4,0xA9D4,0xA9F4,0xA9D4,0xA9F4,0xA9D3,0xB1F4,0xA9D3,0xA9F3,0xA9D3,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xB1F3,0xA9D3,0xB1F4,0xA9D3,0xA9B3,0xA9D3,0xA9F3,0xA9D3,0xA1F3,0xA1F4,0xA1F4,0xA235,0x9215,0x8A36,0x7A57,0x3112,0x29D6,0x0174,0x01D6,0x01D6,0x01D6,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D6,0x01D6,0x01D7,0x01D7,0x01D7,0x01D6,0x01D7,0x01D7,0x01D7,0x01D7,0x01D6,0x01D7,0x01F7,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01D6,0x01F6,0x01F6,0x0216,0x0217,0x0237,0x0237,0x0257,0x0B1A,0x23DD,0x1B7B,0x0AD9,0x0278,0x0237,0x0216,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01D6,0x01D6,0x01F7,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01D6,0x01D6,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D7,0x01F7,0x01F7,0x01F7,0x01F6,0x01D6,0x01D7,0x01D6,0x01D6,0x01B6,0x01D6,0x01D6,0x01B6,0x01D6,0x01F7,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x01F6,0x01D5,0x01F6,0x01D6,0x01F6,0x0236,0x02B8,0x139B,0x1BBC,0x1B7C,0x12FA,0x0257,0x0216,0x01F6,0x01F6,0x01F6,0x01D6,0x01B5,0x01B6,0x01B6,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01D6,0x01B6,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01D6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B5,0x01B5,0x01D6,0x01D6,0x01D5,0x01D5,0x01D6,0x01B5,0x01D5,0x01D5,0x01D6,0x01D6,0x01D5,0x01B5,0x01D5,0x01D5,0x01F5,0x01F5,0x0236,0x0277,0x0B19,0x1B9B,0x23FD,0x239C,0x133A,0x0277,0x0216,0x01F6,0x01D6,0x01D6,0x01D6,0x01B5,0x01B5,0x0195,0x01B5,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01B6,0x01B5,0x0195,0x0195,0x0196,0x01B6,0x0196,0x01B6,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x01B5,0x01B5,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D5,0x01B5,0x01D5,0x01D5,0x01D5,0x01B5,0x01B5,0x01D5,0x01F5,0x0215,0x0236,0x0297,0x137A,0x1BDC,0x2C1D,0x23FC,0x133A,0x0278,0x0236,0x0216,0x01F5,0x01D5,0x01D5,0x01D5,0x01B5,0x01B5,0x01B5,0x01B5,0x01D5,0x01B5,0x01B5,0x01B5,0x01B5,0x01B5,0x01B6,0x01D6, + 0x231B,0x1AFB,0x1AFA,0x1AFA,0x1ABA,0x1ADA,0x12BA,0x1ADA,0x1ADA,0x1ADA,0x1ADA,0x1ADA,0x1AB9,0x1ADA,0x1ADA,0x1ADA,0x12DA,0x1AFA,0x12B9,0x1ADA,0x12B9,0x1AFA,0x1ADA,0x12BA,0x1ADA,0x1AFA,0x1ADA,0x1AFA,0x1ADA,0x1AFA,0x1AFA,0x231B,0x1B1A,0x1AFA,0x1AF9,0x1AFA,0x12D9,0x12D9,0x12B9,0x12D9,0x12B9,0x1AFA,0x12DA,0x12D9,0x12FA,0x235B,0x33DD,0x341E,0x2BFD,0x239C,0x1B7B,0x135B,0x133A,0x135A,0x1B3A,0x1B3A,0x1B5A,0x1B3A,0x235B,0x235B,0x235B,0x233B,0x2B5B,0x2B5B,0x231A,0x231A,0x1B1A,0x231B,0x1B1A,0x233B,0x233B,0x235C,0x233B,0x235B,0x1B1A,0x1B1B,0x1B1A,0x1B1B,0x1B1B,0x233B,0x1AFA,0x1AFA,0x1AFA,0x1AFA,0x1ADA,0x22FB,0x1AFA,0x1AFA,0x1AFA,0x22FB,0x1ADA,0x1AFA,0x1AFA,0x1AFA,0x1ADA,0x1AFA,0x1AFA,0x1B1A,0x1AFA,0x1AFA,0x1AFA,0x1B1A,0x1AFA,0x231B,0x1AFA,0x1ADA,0x1AFA,0x233B,0x1B1A,0x1B3A,0x12D9,0x12D9,0x133A,0x1B7B,0x2BFD,0x23FD,0x23DC,0x23DC,0x23DC,0x1BBC,0x135B,0x133A,0x133A,0x131A,0x1B1A,0x1B3A,0x1B5B,0x235B,0x2B9C,0x2B9C,0x1B1A,0x1AFA,0x12FA,0x1B1A,0x233B,0x233B,0x1B1A,0x1B1A,0x1AFA,0x1B1A,0x1B1A,0x1B3B,0x1B1A,0x1B1A,0x1B1A,0x231B,0x1AFA,0x1B1A,0x1B1A,0x1B1A,0x1B1A,0x1B1A,0x1AFA,0x1B1B,0x1AFA,0x1AFA,0x1AFA,0x22FB,0x22FA,0x1ADA,0x22FB,0x231B,0x22FB,0x1AFB,0x1B1B,0x233B,0x233B,0x233B,0x235C,0x237C,0x235B,0x235B,0x1B3B,0x1B3B,0x1AFA,0x1B1B,0x1B1A,0x1B1A,0x12FA,0x131A,0x12FA,0x1B7B,0x341E,0x2BFD,0x23BC,0x1BBC,0x1BBC,0x1B9C,0x135B,0x131A,0x12FA,0x12FA,0x1B3B,0x1B3B,0x1B1B,0x233B,0x1B1B,0x1B3B,0x1B1B,0x1B3B,0x1B3B,0x235C,0x235B,0x235C,0x233B,0x1B3B,0x233B,0x233B,0x233B,0x233B,0x233B,0x235C,0x233B,0x235C,0x233B,0x235C,0x235C,0x235C,0x233B,0x233C,0x231B,0x231B,0x231B,0x233B,0x1AFB,0x1AFB,0x1B1B,0x233B,0x1B1B,0x233B,0x233B,0x235B,0x1B5B,0x237C,0x1B3B,0x235C,0x1B3B,0x235B,0x235B,0x237C,0x235C,0x235B,0x1B3B,0x235B,0x1B3B,0x1B1B,0x1B3B,0x237C,0x12F9,0x0AD9,0x1B5B,0x23BD,0x2C1E,0x23DD,0x23BD,0x0B1A,0x0299,0x0AD9,0x1B3B,0x1B3B,0x12FA,0x12FA,0x12DA,0x12DA,0x1B3B,0x1B3B,0x12FA,0x1B1B,0x12BA,0x12DA,0x1B1B,0x233B,0x1AFA,0x1AFB,0x1B1B,0x231B,0x1B1B,0x233C,0x1B1B,0x1B3B,0x1B3B,0x233B,0x1B3B,0x233B,0x1B1B,0x235C,0x233B,0x233B,0x1B1B,0x1B3B,0x1B1B,0x233B,0x231B,0x235C,0x233B,0x235C,0x1B3B,0x233B,0x233B,0x235C,0x1B1B,0x233B,0x1B1B,0x1B1B,0x1B3B,0x237C,0x235B,0x1B3B,0x1B3B,0x235B,0x1B3B,0x1B3A,0x1B5B,0x239C,0x1B3B,0x1B5B,0x12FA,0x1B5B,0x1B5B,0x23BC,0x2C3E,0x23FD,0x2BFD,0x1B7B,0x131A,0x0AF9,0x0AD9,0x12FA,0x235C,0x235C,0x12BA,0x1AFB,0x235C,0x235C,0x1B1B,0x1B1B,0x1B1B,0x233B,0x1B3B,0x233B,0x233B,0x233B,0x233B,0x235C,0x233B,0x235B,0x235C,0x237C,0x233B,0x235C,0x235C,0x235C,0x233B,0x233B,0x235B,0x235C,0x233B,0x233B,0x233B,0x235B,0x235B,0x235B,0x235C,0x235C,0x1B3B,0x235B,0x233B,0x235C,0x233B,0x233B,0x233B,0x235C,0x1B3B,0x235C,0x1B1B,0x1B3B,0x1B3B,0x1B3B,0x1B3B,0x235C,0x235B,0x235C,0x1B3B,0x1B5B,0x135B,0x1B7B,0x0AF9,0x23BC,0x3CDF,0x1BBC,0x137B,0x1B7B,0x133B,0x1B3B,0x12FA,0x12DA,0x1B3B,0x1B3B,0x235C,0x235C,0x1B1B,0x1B1B,0x1B3B,0x235C,0x1B3B,0x235C,0x235C,0x237C,0x235C,0x237C,0x237C,0x237C,0x235C,0x237C,0x235C,0x235C,0x237C,0x235C,0x237C,0x237C,0x237C,0x2B7C,0x2B7C,0x237C,0x237C,0x237C,0x237C,0x237C,0x237C,0x237C,0x237C,0x2B7C,0x235B,0x235C,0x237C,0x237C,0x235C,0x235C,0x235C,0x2B7C,0x237C,0x237C,0x235C,0x237C,0x1B3B,0x235C,0x1B3B,0x235C,0x237C,0x237C,0x239D,0x1B7C,0x133B,0x133B,0x02D9,0x135B,0x3CBF,0x137B,0x133B,0x23BD,0x2BDD,0x239C,0x1B5C,0x235C,0x237C,0x2B9C,0x237C,0x2B7C,0x233C,0x235C,0x235C,0x235C,0x233C,0x235C,0x235C,0x237D,0x235C,0x237C,0x235C,0x235C,0x235C,0x235C,0x235C,0x235C,0x235C,0x237C,0x235C,0x237D,0x235C,0x235C,0x235C,0x237C,0x235C,0x235C,0x235C,0x237C,0x235C,0x237C,0x237C,0x237C,0x237C,0x237C,0x237C,0x237C,0x237C,0x239D,0x237C,0x237C,0x237C,0x2B9C,0x237C,0x237C,0x237C,0x237C,0x235C,0x237C,0x1B5B,0x237C,0x235B,0x1B1A,0x12F9,0x12FA,0x12D9,0x0AD9,0x2C1D,0x2C1D,0x0AD9,0x131B,0x1B5C,0x235C,0x1B3B,0x235C,0x235C,0x237C,0x237C,0x2B7C,0x235C,0x235C,0x237C,0x237C,0x235C,0x237C,0x237C,0x2B7C,0x237C,0x237C,0x237D,0x2B7D,0x237C,0x237C,0x237C,0x237D,0x237C,0x237C,0x2B7C,0x2B7C,0x237C,0x237C,0x237C,0x2B7D,0x237C,0x237C,0x237C,0x237C,0x237C,0x237C,0x237C,0x2B7C,0x235C,0x237C,0x235C,0x237C,0x2B7C,0x237C,0x237C,0x237C,0x2B7C,0x2B7C,0x2B9D,0x2B7C,0x237C,0x2B9C,0x235B,0x237C,0x2B7C,0x237C,0x235B,0x237C,0x1B5B,0x235B,0x235C,0x239C,0x239C,0x1B9C,0x137B,0x349F,0x133A,0x131A,0x1B5B,0x133B,0x1B5B,0x237C,0x1B3B,0x237C,0x1B3B,0x235C,0x1B3C,0x233C,0x235C,0x235C,0x235C,0x237C,0x235C,0x237C,0x237C,0x237C,0x235C,0x235C,0x235C,0x237C,0x235C,0x235C,0x235C,0x237C,0x235C,0x235C,0x235C,0x235C,0x235C,0x235C,0x233B,0x235C,0x233B,0x235C,0x235C,0x235C,0x235C,0x235C,0x235C,0x237C,0x237C,0x237C,0x235C,0x237C,0x235C,0x237C,0x237C,0x235C,0x235C,0x2B9D,0x1B3B,0x235C,0x237C,0x235B,0x235C,0x235C,0x1B1B,0x12FA,0x12FA,0x1B5B,0x239B,0x2BFD,0x137B,0x343E,0x1B9B,0x133A,0x1B7C,0x1B7C,0x1B5B,0x1B7C,0x1B5C,0x237C,0x235C,0x237C,0x235C,0x235C,0x233C,0x233C,0x233C,0x235C,0x1B3B,0x1B3B,0x1B3B,0x1B3B,0x1B5C,0x237C,0x1B5B,0x235C,0x1B1B,0x1B3B,0x1B3B,0x1B3C,0x1B3B,0x1B3B,0x1B3B,0x235C,0x1B1B,0x1B3B,0x1B3B,0x235C,0x235C,0x235C,0x235C,0x235C,0x235B,0x235C,0x233B,0x235C,0x2B5C,0x2B5C,0x335C,0x337C,0x335B,0x3B5C,0x3B3B,0x431B,0x4AFA,0x5AFA,0x6AFA,0x7A98,0x9297,0x9215,0xA1F4,0xA1F4,0xA9D4,0xA9D3,0xB1F4,0xA9D3,0xA9D3,0xB1F4,0xA9D3,0xB1F4,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xB1D3,0xA9D3,0xA9B3,0xB214,0xA9F3,0xA1D3,0xA1D4,0xA214,0xA235,0x9215,0x8A15,0x8297,0x5A36,0x847F,0x3B1A,0x22B9,0x22FA,0x231B,0x233B,0x233B,0x233C,0x1B1B,0x233C,0x235C,0x235C,0x233B,0x235B,0x235C,0x233B,0x231B,0x235C,0x231B,0x233C,0x1B1B,0x233B,0x233B,0x233B,0x233B,0x235B,0x1B1B,0x233C,0x1B1B,0x1B1B,0x1AFA,0x1AFB,0x233B,0x233B,0x12BA,0x12B9,0x1B1B,0x233B,0x233B,0x1B3B,0x12D9,0x0AD9,0x12FA,0x133A,0x133A,0x1B7B,0x2C3E,0x345E,0x23BC,0x1B7B,0x131A,0x1B3B,0x1B5B,0x1B3B,0x1B5B,0x1B3B,0x1B3B,0x235B,0x237C,0x237C,0x235B,0x235B,0x235B,0x233B,0x1B1A,0x1B1A,0x1AFA,0x231B,0x1AFA,0x231B,0x1AFA,0x233B,0x1B1B,0x233B,0x1B1B,0x233B,0x1B1A,0x1B1B,0x1B1B,0x231B,0x1B1B,0x1B1B,0x231B,0x233B,0x1AFA,0x1B1B,0x1AFA,0x1AFA,0x1AFA,0x1AFA,0x1AFA,0x231B,0x231B,0x231B,0x231B,0x2B3C,0x1AFA,0x1AFA,0x1AFA,0x1AFA,0x1B1A,0x1B1B,0x1B1B,0x233B,0x1AFA,0x12DA,0x1AFA,0x1AFA,0x1B3B,0x1B3B,0x131A,0x0AF9,0x1B7B,0x23DC,0x2C1D,0x2C3E,0x2C1D,0x2BFD,0x133A,0x131A,0x12F9,0x131A,0x1AFA,0x1ADA,0x12DA,0x1ADA,0x231B,0x233B,0x1B1B,0x233B,0x233B,0x233B,0x233B,0x235B,0x1B1B,0x1B3B,0x1AFA,0x1B1B,0x1AFA,0x1B1B,0x1AFA,0x1B1B,0x1AFA,0x1AFA,0x1B1B,0x235B,0x1AFA,0x1B1B,0x1AFA,0x1B1B,0x1B1B,0x231B,0x1AFA,0x231B,0x231B,0x233B,0x1B1B,0x231B,0x1B1A,0x231B,0x233B,0x233B,0x1B1B,0x231B,0x1AFA,0x1AFA,0x1ADA,0x1AFA,0x1ADA,0x1AFA,0x1AFA,0x1B1A,0x233B,0x235B,0x233B,0x235B,0x1B5A,0x1B7B,0x239C,0x23BC,0x23DC,0x23DC,0x23FD,0x2C1D,0x341D,0x341D,0x237B,0x1B3A,0x0A98,0x12D9,0x12D9,0x12DA,0x1ADA,0x1ADA,0x1B1B,0x1B1B,0x233B,0x233B,0x1B1B,0x231B,0x1AFA,0x1B1B,0x231B,0x231B,0x231B,0x231B,0x1ADA,0x1AFA,0x1ADA,0x1AFA,0x1B1B,0x1B3B,0x1AFA,0x1B1B,0x1B1B,0x1B1B,0x231B,0x231B,0x1ADA,0x231B,0x1AB9,0x1ADA,0x1AB9,0x1ADA,0x1AFA,0x231A,0x1AB9,0x1AB9,0x1299,0x12B9,0x1299,0x12B9,0x12B9,0x12D9,0x1ADA,0x1ADA,0x1AD9,0x12B9,0x12B9,0x12D9,0x12B9,0x12D9,0x1AF9,0x1B1A,0x1B1A,0x133A,0x1B7B,0x1B9B,0x139B,0x139A,0x1BBB,0x23DC,0x23BC,0x2BBC,0x1B5A,0x1B19,0x0A77,0x0A77,0x0A77,0x0A77,0x0A77,0x0A77,0x0A78,0x0A77,0x0A98,0x0A98,0x12B8,0x12B8,0x12B8,0x1298,0x12B9,0x12B9, + 0x231B,0x1ADA,0x1AFB,0x231B,0x2B5C,0x233B,0x2B7C,0x2B7C,0x339D,0x2B7C,0x339D,0x337C,0x339D,0x339D,0x339D,0x339D,0x2B7C,0x2B7C,0x2B7D,0x2B7C,0x2B7C,0x2B9C,0x33BD,0x339D,0x33BD,0x33BD,0x33BD,0x337C,0x2B7C,0x2B5C,0x2B5B,0x2B7C,0x237B,0x235B,0x1B5A,0x235B,0x237B,0x2B9C,0x239C,0x2B9C,0x237B,0x235B,0x2B7C,0x33BD,0x33FD,0x33BD,0x2B9C,0x1B3B,0x12F9,0x12F9,0x131A,0x12FA,0x1B3A,0x1B3A,0x131A,0x1B3A,0x1B3A,0x1B1A,0x1B1A,0x1B1A,0x233B,0x233B,0x233B,0x231A,0x231B,0x233B,0x233B,0x233B,0x233B,0x1B1A,0x235B,0x233B,0x235B,0x233B,0x235C,0x235B,0x235B,0x235B,0x2B9C,0x2B7C,0x2B9D,0x2B7C,0x337C,0x2B7C,0x2B7C,0x2B5C,0x2B7C,0x2B5C,0x337C,0x2B5C,0x337D,0x2B7C,0x2B7C,0x2B9C,0x33BD,0x2B7C,0x2B7C,0x235B,0x2B7C,0x2B7C,0x237C,0x2B7C,0x235C,0x2B7C,0x235B,0x2B7C,0x2B7C,0x2B9C,0x237C,0x1B3A,0x131A,0x2BBC,0x341D,0x2BFD,0x23BC,0x1B9B,0x133A,0x133A,0x1B5B,0x133A,0x1B5B,0x1B5B,0x1B3B,0x1B3B,0x1B3B,0x1B3B,0x235C,0x237C,0x235C,0x1B1B,0x237C,0x237C,0x235B,0x2B9C,0x2B9C,0x2B7C,0x2B9C,0x235C,0x2B7C,0x2B7C,0x2B7C,0x235B,0x2B7C,0x2B5C,0x2B7C,0x2B5C,0x2B7C,0x2B5C,0x2B9D,0x2B9C,0x2B9C,0x2B9D,0x339D,0x2B7C,0x33BD,0x2B7D,0x339D,0x339D,0x339D,0x337D,0x339D,0x337D,0x339D,0x337D,0x2B7D,0x2B7C,0x339D,0x2B7C,0x237C,0x237C,0x237C,0x237C,0x237B,0x237C,0x237C,0x237C,0x1B5B,0x1B3B,0x239C,0x2BFE,0x3C5F,0x341E,0x1B7C,0x131A,0x131A,0x1B5B,0x1B5B,0x1B5B,0x1B5B,0x1B5B,0x237C,0x237C,0x235C,0x235C,0x33BD,0x2B7D,0x2B7D,0x2B7C,0x2B7D,0x2B7D,0x2B9D,0x2B9C,0x33BE,0x2B9D,0x2B9D,0x2B7C,0x2B7C,0x2B7D,0x2B9D,0x2B7C,0x2B9D,0x2B7D,0x2B9D,0x2B7C,0x2B9D,0x2B7C,0x2B9D,0x2B7C,0x339D,0x2B7D,0x339D,0x2B7D,0x339D,0x2B7D,0x339D,0x2B9D,0x2B9D,0x2B9D,0x33DD,0x2B9C,0x2BBD,0x2BBD,0x2BBD,0x239C,0x2B9D,0x2B9C,0x2B9C,0x237C,0x237C,0x1B3B,0x1B3B,0x1B5B,0x1B1B,0x1B1B,0x1B3B,0x239C,0x23BC,0x237C,0x1B5B,0x341E,0x341E,0x2BDD,0x239C,0x239C,0x1B5B,0x1B3B,0x237C,0x2BBD,0x237C,0x237C,0x2BBD,0x237C,0x2B9D,0x2B9D,0x33DE,0x2BBD,0x33DE,0x33BE,0x33BE,0x33BE,0x339D,0x339D,0x3BDE,0x339D,0x33BE,0x33BD,0x33BE,0x2B9D,0x33BE,0x2B9D,0x2BBD,0x2B9D,0x33BD,0x2B9D,0x33BD,0x2B9D,0x33BD,0x2B9D,0x33BD,0x2B9D,0x33BD,0x2B9D,0x33BD,0x2B9D,0x33BE,0x2BBD,0x33BD,0x2B9D,0x33BD,0x2B9D,0x33DD,0x2B9D,0x33BD,0x33BD,0x2BBD,0x2B9D,0x2BBD,0x2B9C,0x239C,0x237C,0x239C,0x2BBC,0x239C,0x237C,0x1B5B,0x1B7B,0x239C,0x2C1E,0x2C1E,0x2BFD,0x1B9C,0x1B7B,0x239C,0x1B5B,0x1B7B,0x1B3B,0x1B3B,0x2B9D,0x2BBD,0x2B7D,0x2B7D,0x2B9D,0x2B9D,0x2B7D,0x33BD,0x2B9D,0x2BBD,0x2B9D,0x33BD,0x2BBD,0x33DE,0x33BD,0x33BD,0x2B9D,0x33BD,0x2B9D,0x33BD,0x33BD,0x33DE,0x33BD,0x33BD,0x33BD,0x33DE,0x33DE,0x33BD,0x33BD,0x33DE,0x33BD,0x33BD,0x33BD,0x33DE,0x2BBD,0x33BD,0x33BD,0x33BD,0x2BBD,0x33DE,0x2BBD,0x33DE,0x33BD,0x33BD,0x33BD,0x33DE,0x33BE,0x33DE,0x33DE,0x33DE,0x2BBD,0x2BBD,0x237C,0x2B9C,0x237C,0x239C,0x23BD,0x23BC,0x1B9C,0x1B9B,0x3C7F,0x23DC,0x1B7B,0x1B7B,0x133B,0x131A,0x131B,0x1B3B,0x237C,0x33DE,0x33DE,0x2B9D,0x237C,0x2BBD,0x2B9D,0x2B9D,0x2B9D,0x2BBD,0x2B9D,0x2BBD,0x2BBD,0x2BBD,0x2B9D,0x2BBD,0x2B9D,0x2BBD,0x2B9D,0x33BD,0x339D,0x33BD,0x33BD,0x33DE,0x33BD,0x33BD,0x33BD,0x33BD,0x33BD,0x33DE,0x33BD,0x33BE,0x33DE,0x33DE,0x2BBD,0x33DE,0x33BD,0x33DE,0x33DD,0x33DE,0x33DD,0x33DE,0x2BBD,0x2BBD,0x33BD,0x33DD,0x2BBD,0x33BD,0x33BD,0x33DE,0x2BBD,0x33BD,0x2B9D,0x2BBD,0x2BBD,0x2BDD,0x2BDD,0x23BD,0x23BD,0x1B9C,0x44DF,0x3CBF,0x135B,0x1B7C,0x1B7C,0x1B7C,0x1B5B,0x237C,0x237C,0x2B9C,0x2B9D,0x2B9D,0x2B7C,0x33BE,0x339E,0x33BE,0x339D,0x33BE,0x33BE,0x33DE,0x33BE,0x33DE,0x33BE,0x33DE,0x33BE,0x33DE,0x33BE,0x33DE,0x33DE,0x33DE,0x33BE,0x33BE,0x33DE,0x33DE,0x2BBD,0x33DE,0x33BE,0x33BE,0x2BBD,0x33DE,0x33BE,0x2BBD,0x2B9D,0x2BBD,0x2BBD,0x33DE,0x2BBD,0x33DE,0x2BBD,0x2BBD,0x2B9D,0x2BBD,0x2B9D,0x2BBD,0x2B9D,0x2BBD,0x237C,0x2B9D,0x2B9D,0x33DE,0x33DE,0x2BBD,0x2BBD,0x33FE,0x33FE,0x33FD,0x33DD,0x2BBD,0x1B3B,0x341E,0x345E,0x1B3B,0x239D,0x2B9D,0x239D,0x2B9D,0x2B7D,0x2BBD,0x2B9D,0x2BBD,0x2B9D,0x33BD,0x2B9D,0x2BBD,0x2BBD,0x2BBD,0x2B9D,0x2BBD,0x2BBD,0x33DE,0x33BE,0x2BBE,0x2BBE,0x33BE,0x2BBD,0x2BBE,0x2BBD,0x33BE,0x2B9D,0x33BD,0x33BD,0x33BE,0x2B9D,0x33DE,0x33BE,0x33DE,0x2B9D,0x2BBD,0x2BBD,0x2BBD,0x2B9D,0x2BBD,0x33BD,0x33BD,0x2BBD,0x33BD,0x33BD,0x33DE,0x2B9D,0x33BE,0x2BBD,0x2BBD,0x2B9D,0x33BD,0x2B9D,0x2BBD,0x2B9C,0x33BD,0x2B9D,0x2B9D,0x2B9D,0x2BBD,0x2B9D,0x2BBD,0x239D,0x237C,0x237C,0x237C,0x1B7B,0x135B,0x23FD,0x345F,0x23DD,0x1B9C,0x239C,0x237C,0x237C,0x2B9D,0x2B9D,0x2BBD,0x2B9D,0x2B9D,0x2B9D,0x2BBE,0x2B7D,0x2BBD,0x2BBD,0x33BD,0x2BBD,0x2BBD,0x2B9D,0x33BE,0x2B9D,0x33BE,0x33BD,0x33DE,0x2BBD,0x2BBD,0x2BBD,0x33DE,0x33BE,0x33BE,0x33DE,0x33BD,0x2BBD,0x33BD,0x33BD,0x33BD,0x2BBD,0x33BD,0x33BD,0x33BD,0x2BBD,0x33BD,0x33BD,0x2BBD,0x2B9D,0x33BD,0x2B9D,0x33BD,0x2BBD,0x33DE,0x2BBD,0x2BBD,0x2B7D,0x2B9D,0x235C,0x235C,0x233C,0x237D,0x235C,0x237C,0x235C,0x235C,0x239C,0x1B5B,0x1B5B,0x133A,0x133A,0x2BDD,0x23BC,0x23BC,0x133A,0x0B1A,0x131A,0x1B3B,0x1B5B,0x235C,0x235C,0x2B7C,0x2B7D,0x2B9D,0x2B7D,0x2B9D,0x2B7D,0x2BBD,0x2B9D,0x2B9D,0x2B9D,0x2BBD,0x2BBD,0x2B9D,0x237C,0x2B9D,0x2B7D,0x2BBD,0x2B9D,0x2BBD,0x2B9D,0x2BBD,0x2B9D,0x2BBD,0x2BBD,0x2BBD,0x2B9D,0x2BBD,0x2B9D,0x2B9D,0x2B9D,0x33BD,0x33BD,0x3BDE,0x3BDE,0x33BD,0x339D,0x3B9D,0x3B9D,0x3BBD,0x43BD,0x439C,0x4B7C,0x537C,0x5B5C,0x6B3B,0x72B8,0x8A98,0x9256,0x9A15,0xA215,0xA9F4,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xB1F3,0xB1F3,0xA9D3,0xB1F3,0xA9D3,0xB1F3,0xA9D3,0xB1F3,0xA9D3,0xB1F4,0xB1F3,0xA9D3,0xB1F4,0xA9F4,0xA9F3,0xA1D3,0xA1F4,0xA1F4,0xA235,0x9A35,0x8A35,0x8AD8,0x6256,0x52D9,0x3AD9,0x2AFA,0x2B1B,0x231B,0x1B1B,0x233C,0x1B1B,0x233C,0x233C,0x2B7C,0x235C,0x2B7C,0x235C,0x2B7D,0x2B9D,0x339D,0x2B7C,0x33BD,0x2B7D,0x33BD,0x2B9D,0x2B9D,0x2B9D,0x33DD,0x2B9D,0x33BD,0x2B9D,0x339D,0x33BD,0x33DE,0x33BD,0x33BD,0x2B7D,0x33BD,0x33BD,0x33BD,0x2B9D,0x2B7D,0x233B,0x237C,0x235C,0x1B3B,0x1B3B,0x1B5B,0x1B5B,0x1B7B,0x1B7B,0x23BC,0x341E,0x341E,0x2BDD,0x1B5B,0x1B3B,0x131A,0x12DA,0x131A,0x1B3B,0x237B,0x235B,0x2BBD,0x237C,0x235B,0x235B,0x2B9C,0x2B7C,0x2B9D,0x2B5C,0x339D,0x2B7C,0x2B9D,0x2B7C,0x2B9D,0x2B7C,0x2B9D,0x2B7C,0x2B7C,0x235C,0x2B9D,0x2B7C,0x2B9D,0x2B9D,0x2B9D,0x2B7C,0x2B9D,0x2B7C,0x2B7D,0x339D,0x33BD,0x339D,0x33BD,0x337D,0x33BD,0x337C,0x33BD,0x2B5C,0x339D,0x2B5C,0x2B5C,0x2B7C,0x2B7C,0x235B,0x2B7C,0x235B,0x2B9D,0x2B9C,0x2B9D,0x2B7C,0x233B,0x1B3B,0x235B,0x1B3B,0x1B3A,0x1B5A,0x1B7B,0x135A,0x239B,0x2BDC,0x345E,0x449F,0x2BDD,0x237C,0x1B3B,0x1B3B,0x1B3B,0x1B3B,0x233B,0x233B,0x233B,0x1AFA,0x1B1B,0x233B,0x235C,0x233B,0x2B9C,0x235C,0x2B9C,0x2B7C,0x2B7D,0x2B5C,0x2B7C,0x235C,0x2B7C,0x233B,0x233B,0x233B,0x2B7C,0x235C,0x2B9D,0x2B9D,0x2B9D,0x2B7C,0x2B9C,0x2B5C,0x2B5C,0x233B,0x2B5C,0x2B7C,0x339D,0x2B7C,0x2B7C,0x233B,0x2B5C,0x2B5C,0x2B7C,0x2B7C,0x2B7C,0x2B7C,0x339D,0x2B7C,0x2B9C,0x2B5C,0x235C,0x233B,0x233B,0x1B3B,0x1B5A,0x1B3A,0x131A,0x0AF9,0x0AF9,0x1319,0x133A,0x131A,0x237B,0x239B,0x2BBC,0x3C1E,0x445F,0x33FE,0x237B,0x237C,0x237C,0x1B3B,0x1B3B,0x1AFA,0x1AFA,0x1AFA,0x1B1A,0x1B1A,0x1B1B,0x235B,0x2B7C,0x233B,0x2B5C,0x233B,0x2B7C,0x2B5C,0x2B7C,0x235C,0x2B7C,0x235B,0x2B7C,0x235B,0x235C,0x235B,0x2B7C,0x2B5C,0x339C,0x2B7C,0x339C,0x337C,0x339D,0x339C,0x339C,0x2B7C,0x33BD,0x337C,0x339C,0x339C,0x337C,0x2B7C,0x339C,0x2B7C,0x339C,0x2B7C,0x339C,0x2B7C,0x339C,0x2B7C,0x2B5B,0x233B,0x1B1A,0x1B1A,0x1B1A,0x131A,0x1319,0x133A,0x1319,0x1339,0x133A,0x1319,0x1B5A,0x2BBC,0x2BDC,0x33FD,0x3C1D,0x4C9F,0x54DF,0x4C9F,0x445E,0x33DC,0x33BC,0x237B,0x237B,0x2B9B,0x33BC,0x2B7B,0x2B9C,0x2B7B,0x2B5B,0x2B3B, + 0x01D7,0x01F7,0x01F7,0x01D7,0x01D6,0x01D6,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01D6,0x01F6,0x01D6,0x01D6,0x01D6,0x01F7,0x01B6,0x01B6,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01B6,0x01D6,0x01B5,0x01B5,0x01D5,0x01D5,0x0216,0x0216,0x0216,0x0236,0x0236,0x0236,0x0AB8,0x12F9,0x235B,0x33DD,0x339C,0x1ADA,0x0A37,0x01F6,0x01D6,0x01D6,0x01F6,0x01F6,0x01F6,0x01F6,0x01D6,0x01F6,0x01D6,0x01D6,0x01F6,0x01F6,0x01F7,0x01F7,0x01D6,0x01F6,0x01D6,0x01F7,0x0217,0x01F7,0x01D6,0x01D7,0x01D6,0x01F7,0x01F6,0x01F7,0x01F6,0x01F7,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F7,0x01D6,0x01D6,0x01F6,0x01F7,0x01D6,0x01F7,0x01B6,0x01D6,0x01F6,0x01F6,0x01B6,0x01D6,0x01D6,0x01D6,0x01F6,0x0217,0x01F6,0x01F6,0x0217,0x0216,0x01F6,0x01F6,0x01D6,0x01F6,0x01F6,0x0216,0x0217,0x0257,0x0AB8,0x1B5B,0x2BBD,0x2B9C,0x0A98,0x0216,0x0237,0x0217,0x01F6,0x01F6,0x01F6,0x0217,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D7,0x0217,0x01F7,0x01B6,0x01D6,0x01F7,0x01D6,0x01F7,0x01F7,0x01D6,0x01D6,0x01D6,0x01D6,0x0217,0x0217,0x0217,0x0217,0x01F7,0x01D7,0x01D6,0x01F7,0x01F7,0x01F7,0x01F7,0x01F6,0x01F6,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D6,0x01F7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F6,0x01F7,0x01F6,0x01F6,0x0237,0x0237,0x0237,0x0237,0x0257,0x12FA,0x1B5B,0x1B1A,0x12FA,0x0A98,0x0237,0x01F7,0x0237,0x0217,0x01F7,0x01F7,0x01D6,0x01D6,0x01F7,0x01F7,0x01D6,0x01F7,0x01F7,0x0A18,0x0217,0x0218,0x01D6,0x01D7,0x01D6,0x01D6,0x01D7,0x01F7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01F7,0x01D6,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x0217,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0217,0x0217,0x01F6,0x0217,0x0217,0x0237,0x0278,0x0278,0x12DA,0x237C,0x131A,0x0AB9,0x0A98,0x0278,0x0217,0x01D6,0x01D6,0x0217,0x0217,0x01B6,0x01D6,0x01F7,0x01F7,0x0218,0x01F7,0x01D7,0x01D6,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x01D7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0237,0x0237,0x0216,0x0217,0x0257,0x0298,0x237C,0x239C,0x1B3B,0x0AB9,0x0237,0x0217,0x01F7,0x0217,0x0217,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x0218,0x01D7,0x01D7,0x01D7,0x01F8,0x01F7,0x01F7,0x01F7,0x0218,0x01F7,0x0217,0x0217,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x0217,0x0257,0x0298,0x343E,0x02B8,0x0278,0x0237,0x0217,0x01F7,0x0217,0x0217,0x0218,0x01F7,0x01F7,0x0217,0x01D7,0x01F7,0x0218,0x01F7,0x01F7,0x0218,0x01F7,0x0218,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x0237,0x0298,0x2BFE,0x133B,0x0237,0x0238,0x0217,0x0237,0x0238,0x0218,0x01F7,0x01F7,0x0218,0x0217,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01F8,0x01F8,0x01F8,0x01F7,0x01F8,0x01F8,0x01F8,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0218,0x0218,0x01D7,0x01D7,0x01D7,0x01F7,0x0217,0x0217,0x01F7,0x01D6,0x12FA,0x1B3B,0x0278,0x0217,0x0217,0x0217,0x0218,0x01F7,0x01F7,0x0218,0x0218,0x0218,0x0218,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F8,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0217,0x0257,0x0298,0x2BFE,0x02B9,0x0299,0x0217,0x01F7,0x01F7,0x0217,0x0218,0x0238,0x0218,0x01F7,0x0218,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F8,0x01F7,0x0218,0x01F8,0x01F8,0x01F7,0x01F7,0x01F7,0x0218,0x01F7,0x01F7,0x0237,0x0217,0x01F6,0x01F6,0x0237,0x0257,0x0298,0x3C5F,0x1B7C,0x0278,0x0278,0x0258,0x0217,0x0217,0x0217,0x0218,0x0217,0x0217,0x01F7,0x0218,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x0217,0x0217,0x0217,0x01F7,0x01F7,0x0218,0x0218,0x0A18,0x0218,0x0A38,0x0A18,0x0A18,0x0A17,0x09F7,0x0A18,0x1238,0x1237,0x1A58,0x2258,0x2238,0x2A17,0x31B6,0x4194,0x7257,0x9297,0x9A35,0x99F4,0xA1D4,0xA9F4,0xA1B3,0xB1F4,0xB1F4,0xA9D3,0xA9B3,0xA9D3,0xA9D3,0xB1D3,0xB1D3,0xB1D3,0xB1F3,0xB1D3,0xB1D3,0xA9B2,0xB1F3,0xA9B3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xAA14,0xA235,0x9A14,0x8A15,0x92B8,0x5194,0x3195,0x1995,0x11D6,0x09F7,0x0A17,0x0238,0x0A38,0x0238,0x01F7,0x0218,0x01F7,0x0218,0x01F7,0x01F7,0x01F7,0x01D7,0x01F7,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01D6,0x01D7,0x01D7,0x01F7,0x01D6,0x01D6,0x01D6,0x01D7,0x01F7,0x01F7,0x01D6,0x01D6,0x01F7,0x01D7,0x01D6,0x01D6,0x01D6,0x01F7,0x01F7,0x0217,0x01F6,0x01F6,0x0216,0x0216,0x01F6,0x01F6,0x01F6,0x0237,0x1B3A,0x2BBC,0x237B,0x12D9,0x0AB9,0x0237,0x01F6,0x01F6,0x01F6,0x01F6,0x0237,0x0237,0x01D6,0x01D6,0x0217,0x0217,0x01F7,0x01F7,0x01F7,0x01F7,0x01D6,0x01F7,0x01D6,0x01F7,0x01D7,0x01D7,0x01D6,0x01F7,0x01D6,0x01D6,0x01D6,0x01D7,0x01D7,0x01D7,0x01D6,0x01D7,0x01D6,0x01B6,0x01F7,0x01F6,0x01D6,0x01D6,0x01B6,0x01D6,0x01B6,0x01B6,0x01D6,0x01D6,0x01F7,0x01F7,0x01B6,0x01D6,0x01D6,0x01F7,0x0217,0x01F7,0x01F6,0x01D6,0x01D6,0x01D6,0x01F6,0x01F6,0x01F6,0x0216,0x0216,0x0216,0x01F5,0x01F5,0x0236,0x12F9,0x341E,0x239C,0x12FA,0x0278,0x0257,0x0217,0x01F6,0x0217,0x01F7,0x01F6,0x01F6,0x01F6,0x01F7,0x0217,0x01F6,0x01F7,0x01F6,0x01F7,0x01D6,0x01D6,0x01B6,0x01D6,0x01D6,0x01D6,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x0195,0x01B6,0x01B6,0x01B6,0x01D6,0x01F7,0x01B5,0x0195,0x0196,0x01B6,0x01B6,0x01B6,0x01D6,0x01B6,0x01D6,0x01F6,0x01B6,0x01D6,0x01B6,0x01D6,0x01D6,0x01F6,0x01F6,0x01F6,0x01F5,0x01F5,0x01D5,0x01D5,0x01F6,0x0217,0x01F6,0x01D6,0x01D6,0x01F6,0x0A98,0x233B,0x33FD,0x235B,0x0257,0x0217,0x0217,0x01F6,0x01D6,0x01F6,0x01F7,0x01D6,0x0217,0x01F7,0x01F7,0x01F6,0x01B6,0x01D6,0x01D6,0x01F6,0x01D6,0x01D6,0x01D6,0x01F6,0x01D6,0x01B6,0x01B5,0x01B6,0x01B6,0x01B5,0x01B5,0x01B6,0x01B5,0x01B5,0x01B6,0x01B6,0x01B5,0x01D5,0x01D6,0x01B5,0x01D6,0x01D6,0x01D6,0x01D6,0x01B5,0x01D6,0x01B5,0x01D5,0x01D5,0x01B5,0x01D6,0x01D6,0x01D6,0x01D5,0x01D5,0x01F5,0x01F5,0x01F5,0x01F5,0x0216,0x01F5,0x01F5,0x01F5,0x01F5,0x01D5,0x01D5,0x01F6,0x0A57,0x0A57,0x1298,0x2B7B,0x2B7B,0x235A,0x12D8,0x0236,0x0216,0x0216,0x01F5,0x01F5,0x01D5,0x01D5,0x01D5,0x01B5,0x01B5, + 0x01B6,0x0195,0x0195,0x01B6,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0175,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x01B5,0x01B5,0x01D5,0x01F5,0x0216,0x0236,0x0257,0x12D9,0x237B,0x3BFD,0x2B9C,0x1AD9,0x0A57,0x01D5,0x01B5,0x01B5,0x0195,0x0195,0x0195,0x0195,0x0195,0x01B6,0x01B5,0x01B5,0x01B5,0x01B6,0x0196,0x0195,0x0196,0x0195,0x0195,0x01B6,0x01B6,0x0196,0x01B6,0x01B6,0x0196,0x0196,0x0196,0x0196,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x0195,0x01B6,0x01B6,0x0195,0x0195,0x0196,0x0196,0x01B6,0x01B6,0x0195,0x0195,0x01B6,0x0195,0x01B5,0x01B6,0x01B6,0x01B5,0x01D5,0x01D5,0x01B5,0x01D5,0x01D5,0x01D5,0x01D5,0x01F6,0x01F6,0x0A78,0x235B,0x33DD,0x33BD,0x233A,0x0A78,0x01F6,0x01D6,0x01D6,0x01D5,0x01B5,0x01B5,0x0195,0x01B6,0x0196,0x0196,0x01B6,0x01B6,0x0196,0x0196,0x0196,0x01B6,0x0196,0x0196,0x0196,0x01B6,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0196,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B5,0x01D6,0x01F6,0x01F6,0x0216,0x0216,0x0A98,0x3C1E,0x33DD,0x1B1A,0x0A98,0x0216,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01B6,0x01B6,0x0196,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x01B6,0x01B6,0x01B6,0x0196,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x0196,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D7,0x01D7,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01D6,0x01D7,0x01B6,0x01D7,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01F7,0x0217,0x0237,0x12DA,0x33DE,0x2BBD,0x0A99,0x0237,0x0216,0x01F6,0x01D6,0x01B6,0x01B5,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x01B6,0x01B6,0x0196,0x01B6,0x01B6,0x0196,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B7,0x01B7,0x01B7,0x01B7,0x01B6,0x01B6,0x01D7,0x01B6,0x01D7,0x01D6,0x01B6,0x01D6,0x01F7,0x01D6,0x01D6,0x01F6,0x01D6,0x01F6,0x01F6,0x01F6,0x01F6,0x0257,0x3C1E,0x2BBD,0x0A98,0x0237,0x0217,0x01F6,0x01D6,0x01D6,0x01B6,0x01D6,0x01D6,0x01D6,0x01B6,0x01B6,0x01D7,0x01D7,0x01B7,0x01B7,0x01B7,0x01B7,0x01D7,0x01B7,0x01B7,0x01D7,0x01D7,0x01D7,0x01B6,0x01D7,0x01D7,0x01B7,0x01D7,0x01B7,0x01D7,0x01B7,0x01B6,0x01B6,0x01B6,0x01D6,0x01D6,0x01B6,0x01D7,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01D6,0x01B6,0x01D7,0x01D6,0x01D6,0x01B6,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B6,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D6,0x01D7,0x01F7,0x01F7,0x0217,0x0257,0x3C3E,0x1B3B,0x0237,0x0217,0x01D6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B7,0x01B6,0x01D7,0x01B7,0x01B7,0x01B7,0x01D7,0x01B6,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B6,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B6,0x01B7,0x01B7,0x01B6,0x01B6,0x01D7,0x01B7,0x01B7,0x01B7,0x01D7,0x01B7,0x01B7,0x01B6,0x01B7,0x01B6,0x01B7,0x01B6,0x01D6,0x01D7,0x01D7,0x01B6,0x01D7,0x01D7,0x01D7,0x01D6,0x01F7,0x0217,0x12FA,0x2BBD,0x0238,0x01F7,0x01D7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B7,0x01D7,0x01B7,0x01B7,0x01B7,0x01B7,0x01D7,0x01B7,0x01B7,0x01D7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01D7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01D7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B6,0x01B7,0x01B6,0x01B7,0x01B7,0x01D7,0x01D7,0x01D7,0x01B6,0x01B7,0x01D7,0x01B7,0x01B7,0x01D7,0x01D7,0x01B7,0x01B7,0x01D7,0x01B7,0x01D7,0x01B6,0x01D6,0x01D6,0x01D6,0x1B1A,0x1B3B,0x01F6,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B7,0x01D7,0x01D7,0x01B7,0x01B7,0x01D7,0x01B7,0x01D7,0x01D7,0x01B7,0x01B7,0x01D7,0x01D7,0x01B7,0x01B7,0x01D7,0x01D7,0x01B7,0x01B7,0x01B7,0x01D7,0x01B7,0x01D7,0x01D7,0x01B7,0x01B7,0x01D7,0x01D7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01B7,0x01D7,0x01D7,0x01B7,0x01B7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01F6,0x01F6,0x0217,0x0257,0x239D,0x131B,0x0258,0x01F7,0x01D7,0x01D7,0x01D7,0x01F7,0x01B6,0x01B7,0x01D7,0x01D7,0x01D7,0x01B7,0x01D7,0x01D7,0x01B7,0x01B7,0x01B7,0x01D7,0x01D7,0x01B7,0x01B7,0x01D7,0x01B7,0x01B7,0x01B7,0x01B7,0x01D7,0x01D7,0x01B7,0x01B7,0x01D7,0x01D7,0x01B7,0x01B7,0x01D7,0x01B7,0x01B7,0x01B7,0x01B7,0x01D7,0x01B6,0x01B6,0x01B7,0x01B7,0x01D7,0x01B7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D6,0x01D6,0x01D6,0x01F6,0x0216,0x0237,0x12D9,0x4CDF,0x0278,0x0258,0x0217,0x01F7,0x01D7,0x01D7,0x01D7,0x01D6,0x01D6,0x01D7,0x01B7,0x01D7,0x01D7,0x01B6,0x01D6,0x01D7,0x01D7,0x01D7,0x01D6,0x01D7,0x01D7,0x01D7,0x01D7,0x01B6,0x01B6,0x01D7,0x01D7,0x01B7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01F7,0x01D7,0x01F7,0x01D7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x09F7,0x09F7,0x09F7,0x09F7,0x1217,0x11F7,0x19F7,0x21D6,0x31F7,0x3995,0x4994,0x8AD8,0x9256,0x9A15,0xA214,0xA1F3,0xA9F4,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xB1D3,0xA9D3,0xB1D3,0xB1D3,0xB1D3,0xB1F3,0xB1F3,0xA9B3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xA9F3,0xA9F4,0xAA14,0xA214,0x9A15,0x9235,0x8A77,0x59B4,0x3174,0x21B6,0x09B6,0x09B6,0x01D6,0x01F7,0x01F7,0x01D7,0x01D7,0x01D7,0x01D7,0x01D7,0x01B7,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F6,0x01D6,0x01D6,0x01F6,0x01F6,0x01D6,0x01F6,0x0A98,0x237B,0x33DD,0x237C,0x0237,0x01F6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01D6,0x01F7,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x01B6,0x01B6,0x0195,0x01B6,0x01B6,0x01B6,0x01B6,0x0195,0x01B5,0x01D6,0x0195,0x01B6,0x01D6,0x01B6,0x01B5,0x01B5,0x01B5,0x01D5,0x01D5,0x01D5,0x01D5,0x01F5,0x01F5,0x0236,0x1B1A,0x33FE,0x33DD,0x12FA,0x0237,0x0216,0x01F6,0x01D6,0x01B6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D6,0x01B6,0x0196,0x01B5,0x01B6,0x01B6,0x0195,0x0196,0x01B6,0x0196,0x01B6,0x0196,0x01B6,0x0196,0x0195,0x01B6,0x0195,0x0196,0x0196,0x0195,0x01B6,0x0196,0x0195,0x0195,0x0195,0x0175,0x0196,0x0195,0x0195,0x0196,0x0196,0x0195,0x0195,0x0195,0x0195,0x0195,0x01B5,0x01B5,0x01B5,0x01B5,0x01B5,0x01B5,0x0195,0x01B5,0x01B5,0x01B5,0x01B5,0x01B5,0x01B5,0x01B6,0x01D6,0x01D5,0x01F6,0x1298,0x235B,0x3BDD,0x2B7C,0x12B9,0x01F6,0x01D6,0x01D6,0x01D6,0x01B6,0x01B5,0x01B6,0x01D6,0x01B6,0x01B5,0x01B6,0x01B5,0x01B5,0x01B5,0x01B5,0x01B5,0x0195,0x0195,0x0195,0x0195,0x01B5,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0194,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0194,0x01B4,0x01B4,0x01B5,0x01B5,0x01B5,0x0194,0x0194,0x0194,0x0194,0x0194,0x0174,0x0194,0x01B4,0x01B4,0x01F5,0x0A57,0x1AF9,0x2B7B,0x2B7B,0x1AF9,0x0A77,0x0216,0x0216,0x01F5,0x01D5,0x01B5,0x0194,0x01B5, + 0x0154,0x0154,0x0154,0x0154,0x0174,0x0195,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0174,0x0154,0x0174,0x0174,0x0174,0x0174,0x0194,0x0194,0x01B4,0x01B5,0x01D5,0x0215,0x0A77,0x1AF9,0x235A,0x2B7B,0x2B7B,0x0A57,0x01B5,0x0174,0x0174,0x0174,0x0174,0x0194,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0175,0x0175,0x0155,0x0155,0x0154,0x0155,0x0155,0x0155,0x0175,0x0175,0x0196,0x0175,0x0175,0x0175,0x0175,0x0174,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0154,0x0174,0x0174,0x0175,0x0174,0x0174,0x0175,0x0174,0x0175,0x0195,0x0175,0x0175,0x0174,0x0174,0x0174,0x0195,0x0194,0x0194,0x01B4,0x0194,0x0194,0x01B5,0x01B5,0x01F5,0x0A77,0x233A,0x2B9C,0x2B9C,0x231A,0x0216,0x01B5,0x0195,0x0195,0x01B5,0x0195,0x0195,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0155,0x0175,0x0195,0x0195,0x0196,0x0175,0x0196,0x0196,0x0155,0x0155,0x0175,0x0155,0x0176,0x0195,0x0175,0x0175,0x0175,0x0175,0x01B6,0x0196,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0195,0x0175,0x0175,0x0195,0x0195,0x0195,0x0195,0x0175,0x0175,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x01B5,0x0195,0x01B5,0x01D5,0x01F5,0x0236,0x233A,0x3C1E,0x2B9C,0x12B9,0x01F6,0x01B5,0x01B5,0x01B5,0x01B5,0x0195,0x0195,0x0195,0x0195,0x0195,0x0196,0x0196,0x0195,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0195,0x0195,0x0196,0x0196,0x0196,0x0175,0x0196,0x0195,0x0175,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x01B6,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0196,0x0195,0x0195,0x0196,0x0196,0x0195,0x0175,0x0175,0x0195,0x0195,0x0196,0x0195,0x01B5,0x01B5,0x01B5,0x01B5,0x01D6,0x01D6,0x01F6,0x0217,0x1B3A,0x33DD,0x233B,0x0A37,0x01B5,0x01B5,0x01B5,0x0195,0x0195,0x0195,0x0195,0x0195,0x01B6,0x0196,0x0195,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0175,0x0196,0x0196,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0196,0x0175,0x0196,0x0196,0x0196,0x0175,0x0175,0x0175,0x0195,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0196,0x0196,0x0175,0x0196,0x0196,0x0196,0x0196,0x0196,0x0195,0x0195,0x0195,0x01B6,0x0195,0x01B6,0x01B6,0x01B6,0x01B5,0x01B5,0x01B5,0x01B5,0x01B5,0x01D6,0x01F6,0x3C1F,0x3BFE,0x0257,0x01F6,0x01F6,0x01B6,0x01D6,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x01B6,0x01B6,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x01B6,0x0195,0x0196,0x0196,0x0195,0x0195,0x0195,0x0195,0x0196,0x0195,0x0196,0x0196,0x0195,0x0195,0x0196,0x0195,0x01B6,0x01B6,0x0195,0x0196,0x0196,0x0196,0x01B6,0x01B6,0x01B6,0x01B6,0x01B5,0x01B6,0x01D6,0x01D6,0x01D6,0x01D6,0x2B9C,0x2BBD,0x0237,0x01F6,0x01D6,0x01B6,0x01B6,0x0196,0x0196,0x0195,0x0196,0x0196,0x0196,0x0196,0x0196,0x0176,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0176,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0196,0x0195,0x0195,0x0195,0x0196,0x0196,0x0196,0x01B6,0x01B6,0x01D6,0x01B6,0x01D6,0x01B6,0x01B6,0x01D6,0x01D6,0x01F6,0x2B9C,0x12FA,0x0217,0x01D6,0x01D6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x01B6,0x0196,0x01B6,0x0196,0x0196,0x0196,0x01B6,0x0196,0x0196,0x0196,0x01B6,0x0196,0x0196,0x0196,0x0196,0x01B6,0x01B6,0x0196,0x0196,0x01B6,0x0195,0x0195,0x01B6,0x01B6,0x235B,0x1B3B,0x01B6,0x01B6,0x01B6,0x0196,0x0196,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x01B6,0x0196,0x01B6,0x0196,0x0196,0x01B6,0x01B6,0x0196,0x0196,0x0196,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x01B6,0x0196,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x01B6,0x0196,0x01B6,0x01B6,0x0196,0x0196,0x01B6,0x01B6,0x01B6,0x01B6,0x0196,0x0195,0x01B5,0x01B5,0x01F6,0x0237,0x12FA,0x2BBD,0x01F6,0x01D7,0x01D7,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x01B6,0x0196,0x01B6,0x0196,0x0196,0x0176,0x0196,0x0196,0x0196,0x0196,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x01B6,0x01B6,0x0196,0x0196,0x0196,0x0196,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0196,0x01D7,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B5,0x01B5,0x01D6,0x01F6,0x0237,0x239C,0x2BBD,0x01F6,0x0217,0x01F6,0x01B6,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0195,0x0196,0x0196,0x0195,0x0195,0x01B6,0x0195,0x01B6,0x0196,0x0196,0x0196,0x0196,0x01B6,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01B6,0x01D7,0x01B6,0x01B6,0x01B6,0x01D6,0x09F6,0x09D6,0x09D6,0x11D6,0x11B5,0x29D6,0x31B5,0x3974,0x6A36,0x8A76,0x9A35,0xA235,0xA1F4,0xA1B3,0xA9D3,0xA9D3,0xA9D3,0xA9B3,0xA9D3,0xA9B3,0xB1F3,0xA9B3,0xA9B2,0xB1F3,0xA9B2,0xA9D3,0xA9B3,0xB1F3,0xB1F3,0xB1F3,0xB1F3,0xA9D3,0xA9D3,0xA9F4,0xA214,0xA235,0x9A56,0x8A77,0x5173,0x3174,0x1974,0x11B5,0x0195,0x0195,0x01B5,0x01B6,0x01B6,0x01B6,0x0196,0x01B6,0x0196,0x0196,0x0175,0x0196,0x0196,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x01B5,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x01B5,0x01B5,0x0195,0x0195,0x01B5,0x0195,0x01D6,0x01D5,0x01D5,0x01B5,0x01D5,0x01D5,0x01D5,0x01D5,0x0216,0x1B1A,0x33BC,0x235B,0x0A57,0x01F6,0x01B6,0x01B5,0x0195,0x01B5,0x01B6,0x01B5,0x01B6,0x01B5,0x01B5,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0175,0x0175,0x0175,0x0196,0x0195,0x01B6,0x0195,0x0196,0x0175,0x0196,0x0196,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0154,0x0174,0x0154,0x0175,0x0175,0x0174,0x0174,0x0195,0x0174,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0195,0x0195,0x0195,0x0195,0x0194,0x0194,0x0194,0x0194,0x01B5,0x01B5,0x01D5,0x01D5,0x01B5,0x01D5,0x0216,0x235B,0x33BC,0x1B1A,0x0237,0x01F6,0x01B5,0x01B5,0x0195,0x0195,0x0195,0x0174,0x0175,0x0174,0x0195,0x0195,0x0174,0x0175,0x0195,0x0174,0x0195,0x0195,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0174,0x0175,0x0174,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0195,0x0175,0x0175,0x0175,0x0154,0x0154,0x0155,0x0175,0x0174,0x0174,0x0175,0x0174,0x0175,0x0174,0x0174,0x0194,0x0174,0x0194,0x01B5,0x0174,0x0194,0x0194,0x0195,0x0174,0x0174,0x0174,0x0194,0x0174,0x01B5,0x01B5,0x01B5,0x01B5,0x1298,0x2B7B,0x2B5B,0x231A,0x0A57,0x01F6,0x01B5,0x0195,0x0194,0x0194,0x0175,0x0175,0x0195,0x0194,0x0194,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0195,0x0195,0x0174,0x0174,0x0154,0x0174,0x0174,0x0174,0x0195,0x0174,0x0174,0x0174,0x0174,0x0174,0x0154,0x0154,0x0174,0x0174,0x0154,0x0154,0x0174,0x0174,0x0154,0x0154,0x0174,0x0174,0x0194,0x0174,0x0194,0x0194,0x0174,0x0174,0x0174,0x0174,0x0174,0x0154,0x0154,0x0174,0x0153,0x0154,0x0174,0x0174,0x0194,0x0194,0x0194,0x01F5,0x1AD8,0x339B,0x2BBB,0x1B19,0x0277,0x0236,0x01D4,0x01B4,0x0194,0x0194, + 0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0133,0x0154,0x0154,0x0153,0x0153,0x0153,0x0153,0x0133,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0173,0x0174,0x0173,0x01B4,0x01B4,0x01D5,0x0A56,0x2B5A,0x2B7A,0x1AF9,0x0A77,0x01F5,0x01B4,0x0194,0x0174,0x0153,0x0153,0x0154,0x0154,0x0174,0x0153,0x0174,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0175,0x0154,0x0154,0x0174,0x0154,0x0154,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0154,0x0174,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0174,0x0174,0x0154,0x0174,0x0154,0x0154,0x0174,0x0174,0x0194,0x0194,0x0194,0x0194,0x01B4,0x01D4,0x0A57,0x339B,0x3BDD,0x235A,0x1277,0x01F5,0x01B5,0x0194,0x0194,0x0174,0x0174,0x0174,0x0174,0x0174,0x0154,0x0154,0x0154,0x0154,0x0175,0x0175,0x0155,0x0155,0x0155,0x0155,0x0155,0x0155,0x0175,0x0175,0x0175,0x0175,0x0155,0x0154,0x0155,0x0155,0x0175,0x0175,0x0155,0x0175,0x0154,0x0154,0x0175,0x0175,0x0175,0x0175,0x0154,0x0175,0x0175,0x0175,0x0154,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0174,0x0174,0x0174,0x0174,0x0174,0x0194,0x0174,0x0174,0x0194,0x0174,0x0194,0x0194,0x0194,0x01B5,0x01D5,0x1AD9,0x3BFD,0x33BC,0x1298,0x01D5,0x01B5,0x01B5,0x0194,0x0194,0x0194,0x0195,0x0174,0x0174,0x0174,0x0175,0x0175,0x0196,0x0175,0x0155,0x0175,0x0175,0x0175,0x0175,0x0154,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0195,0x0175,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0175,0x0195,0x0175,0x0175,0x0195,0x0175,0x0175,0x0195,0x0175,0x0195,0x0195,0x0195,0x01B5,0x01B5,0x01B5,0x01D5,0x1278,0x339C,0x2B5B,0x0A57,0x01F6,0x01B5,0x01B5,0x0195,0x0195,0x0174,0x0174,0x0175,0x0195,0x0195,0x0175,0x0175,0x0195,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0155,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0194,0x01B5,0x01B5,0x01F6,0x3BDD,0x33DD,0x0237,0x01D6,0x01B5,0x0195,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0195,0x0175,0x0196,0x0196,0x0195,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0195,0x0175,0x0196,0x0195,0x0195,0x0196,0x0175,0x0175,0x0195,0x0196,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0175,0x0175,0x0195,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0175,0x0175,0x0195,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x01B5,0x01D5,0x0A57,0x4C7F,0x0257,0x01F6,0x01B6,0x0195,0x0195,0x0195,0x0175,0x0195,0x0175,0x0175,0x0196,0x0196,0x0196,0x0176,0x0196,0x0175,0x0196,0x0196,0x0196,0x0195,0x0195,0x0195,0x0195,0x0195,0x0175,0x0195,0x0176,0x0175,0x0175,0x0195,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0175,0x0175,0x0175,0x0195,0x0175,0x0195,0x0195,0x0175,0x0195,0x0196,0x0195,0x0175,0x0195,0x0175,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x01B5,0x01B5,0x01D5,0x0216,0x3BFE,0x0257,0x01F6,0x01B6,0x01B5,0x0195,0x0195,0x01B5,0x0195,0x0195,0x0195,0x0196,0x0195,0x0195,0x0175,0x0196,0x0196,0x0175,0x0196,0x0196,0x0196,0x0196,0x0196,0x0195,0x0195,0x0196,0x0195,0x0196,0x0196,0x0196,0x0195,0x0196,0x0196,0x0175,0x0175,0x0196,0x0195,0x0175,0x0196,0x0196,0x0196,0x0195,0x0196,0x0196,0x0196,0x0195,0x0195,0x0196,0x0195,0x0195,0x0196,0x0196,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0196,0x0195,0x0196,0x0196,0x0196,0x0175,0x0195,0x0175,0x0175,0x0195,0x0195,0x0195,0x235B,0x1AD9,0x01B6,0x01B6,0x01B6,0x0196,0x0195,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0195,0x0195,0x0196,0x0196,0x0195,0x0175,0x0196,0x0195,0x0195,0x0195,0x0195,0x0196,0x0195,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0195,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0196,0x0195,0x0196,0x0196,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x01B6,0x0195,0x0195,0x0195,0x0195,0x0195,0x01B5,0x01B5,0x01F6,0x0257,0x3BFE,0x0A37,0x01B6,0x01B6,0x0196,0x0196,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0196,0x0175,0x0195,0x0195,0x0175,0x0175,0x0175,0x0195,0x0196,0x0196,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0196,0x0195,0x0175,0x0195,0x0175,0x0195,0x0175,0x0195,0x0195,0x0175,0x0175,0x0195,0x0175,0x0175,0x0195,0x0195,0x0175,0x0195,0x0175,0x0176,0x0175,0x0196,0x0196,0x0196,0x0196,0x0195,0x0196,0x0196,0x0195,0x0196,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x01B5,0x01B5,0x0216,0x0236,0x3C1E,0x12B9,0x01F6,0x01D6,0x01B5,0x0195,0x0175,0x0195,0x0175,0x0175,0x0195,0x0195,0x0175,0x0175,0x0175,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0175,0x0195,0x0175,0x0175,0x0196,0x0196,0x0195,0x0195,0x01B6,0x0196,0x0195,0x01B6,0x0196,0x01B6,0x0195,0x0195,0x01B6,0x01B6,0x0195,0x01B6,0x01B6,0x01B5,0x01B5,0x09D6,0x09B5,0x09B5,0x19D6,0x1975,0x2995,0x3154,0x4133,0x92D8,0x9255,0x9A35,0xAA34,0xA1D3,0xA9D3,0xA9D3,0xA9D3,0xB1D3,0xB1D3,0xB1D3,0xA9B3,0xB1D3,0xA9D3,0xB1D3,0xB1D3,0xA9D3,0xA9D3,0xB1F3,0xA9D3,0xB1F3,0xA9D3,0xA9D3,0xA9D3,0xA9F4,0xAA14,0xA214,0x9A55,0x92B7,0x5152,0x2912,0x1154,0x0974,0x0195,0x0195,0x01B5,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0175,0x0175,0x0195,0x0175,0x0195,0x0175,0x0174,0x0175,0x0175,0x0174,0x0195,0x0175,0x0174,0x0174,0x0175,0x0174,0x0174,0x0175,0x0174,0x0174,0x0175,0x0175,0x0174,0x0174,0x0175,0x0195,0x0175,0x0175,0x0175,0x0174,0x0194,0x0195,0x0194,0x0195,0x01B5,0x01B5,0x0194,0x01B5,0x0195,0x01B5,0x01B5,0x01F5,0x0A36,0x233A,0x2B7B,0x1298,0x01D5,0x01B5,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0175,0x0175,0x0174,0x0174,0x0174,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0155,0x0175,0x0154,0x0154,0x0174,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0174,0x0154,0x0174,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0194,0x01B5,0x0194,0x0194,0x01B4,0x0194,0x0194,0x01B5,0x0216,0x1AD9,0x33BC,0x1AD9,0x01B5,0x01B4,0x0195,0x0194,0x0174,0x0154,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0174,0x0174,0x0154,0x0154,0x0154,0x0154,0x0174,0x0174,0x0154,0x0154,0x0134,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0174,0x0154,0x0154,0x0174,0x0154,0x0154,0x0174,0x0174,0x0174,0x0174,0x0154,0x0174,0x0154,0x0154,0x0174,0x0154,0x0174,0x0174,0x0174,0x0194,0x0194,0x0194,0x01B4,0x01F5,0x12B8,0x2B7B,0x2B7B,0x1277,0x01D5,0x0194,0x0194,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0154,0x0154,0x0174,0x0174,0x0153,0x0154,0x0154,0x0153,0x0174,0x0153,0x0153,0x0174,0x0153,0x0154,0x0154,0x0154,0x0154,0x0153,0x0153,0x0153,0x0154,0x0154,0x0153,0x0174,0x0154,0x0153,0x0154,0x0153,0x0153,0x0153,0x0133,0x0154,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0173,0x0153,0x0174,0x0173,0x0193,0x01B4,0x0236,0x1297,0x2B7A,0x2B5A,0x0A56,0x01F5,0x0173,0x0173, + 0x0154,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0154,0x0174,0x0153,0x0174,0x0173,0x0153,0x0153,0x0133,0x0133,0x0153,0x0153,0x0173,0x0153,0x0173,0x0153,0x0173,0x0193,0x0193,0x01B4,0x0215,0x1AB7,0x2B5A,0x335A,0x1256,0x01B4,0x0194,0x0173,0x0173,0x0173,0x0153,0x0153,0x0153,0x0133,0x0133,0x0133,0x0153,0x0153,0x0174,0x0153,0x0174,0x0153,0x0133,0x0154,0x0133,0x0133,0x0134,0x0154,0x0174,0x0133,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0174,0x0154,0x0174,0x0154,0x0174,0x0154,0x0134,0x0134,0x0154,0x0154,0x0174,0x0174,0x0154,0x0153,0x0154,0x0154,0x0174,0x0153,0x0154,0x0153,0x0153,0x0153,0x0153,0x0153,0x0174,0x0173,0x0174,0x0194,0x0194,0x01B4,0x01F4,0x0A76,0x233A,0x33BC,0x2319,0x0A56,0x0194,0x0173,0x0174,0x0174,0x0174,0x0154,0x0154,0x0153,0x0154,0x0154,0x0174,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0175,0x0134,0x0154,0x0154,0x0155,0x0175,0x0154,0x0154,0x0154,0x0175,0x0154,0x0154,0x0154,0x0154,0x0174,0x0175,0x0195,0x0154,0x0154,0x0154,0x0174,0x0154,0x0174,0x0174,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0195,0x0175,0x0174,0x0154,0x0154,0x0154,0x0174,0x0174,0x0153,0x0174,0x0174,0x0174,0x0174,0x0174,0x0194,0x0194,0x0194,0x01B4,0x1257,0x335B,0x3B9C,0x1AB8,0x01B4,0x0194,0x0194,0x0174,0x0174,0x0174,0x0194,0x0174,0x0174,0x0174,0x0174,0x0154,0x0174,0x0175,0x0175,0x0175,0x0175,0x0154,0x0174,0x0174,0x0195,0x0175,0x0174,0x0154,0x0175,0x0175,0x0175,0x0175,0x0154,0x0174,0x0154,0x0174,0x0175,0x0175,0x0195,0x0175,0x0195,0x0174,0x0195,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0195,0x0174,0x0195,0x0175,0x0195,0x0154,0x0154,0x0154,0x0154,0x0174,0x0195,0x0174,0x0174,0x0174,0x0174,0x0194,0x0194,0x01B4,0x01B4,0x01B4,0x01D5,0x1AF9,0x337C,0x1298,0x01F5,0x01D5,0x01B5,0x0195,0x0174,0x0174,0x0174,0x0195,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0195,0x0175,0x0195,0x0175,0x0175,0x0175,0x0195,0x0175,0x0195,0x0174,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0174,0x0175,0x0195,0x0175,0x0175,0x0195,0x0175,0x0195,0x0175,0x0175,0x0175,0x0195,0x0175,0x0195,0x0175,0x0175,0x0174,0x0195,0x0195,0x0174,0x0174,0x0195,0x0174,0x01B5,0x0195,0x0174,0x0174,0x0194,0x01B5,0x01B5,0x0216,0x2B5B,0x231A,0x0216,0x01D6,0x0195,0x0174,0x0174,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x01B6,0x0195,0x0195,0x0195,0x0195,0x0175,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0175,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0175,0x0175,0x0195,0x0175,0x0174,0x0195,0x0195,0x01B5,0x0195,0x0195,0x0194,0x0174,0x0174,0x01B5,0x01D5,0x01F6,0x441E,0x12B9,0x01F6,0x01D6,0x0195,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x01B6,0x0195,0x01B6,0x0196,0x0175,0x0175,0x0175,0x0175,0x01B6,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0175,0x0175,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x01B6,0x0195,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0175,0x0175,0x0175,0x0195,0x0195,0x0175,0x0195,0x0175,0x0195,0x0195,0x01B5,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x01B5,0x01D5,0x1AD9,0x33BC,0x0216,0x01D5,0x01B5,0x01B5,0x01B5,0x0195,0x0195,0x0195,0x01B5,0x0195,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0175,0x0196,0x0175,0x0195,0x0175,0x0195,0x0175,0x0195,0x0175,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0175,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0195,0x01B6,0x0195,0x0195,0x0175,0x0175,0x0195,0x0175,0x0155,0x0175,0x0174,0x0175,0x0195,0x1AFA,0x12B8,0x01B5,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0175,0x0196,0x0196,0x0196,0x0195,0x0195,0x0195,0x0175,0x0175,0x0196,0x01B6,0x0196,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0175,0x0195,0x0196,0x0195,0x0195,0x0195,0x0196,0x0196,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0174,0x01B5,0x0195,0x0195,0x01B5,0x01D6,0x2B5B,0x2B5C,0x01B5,0x0195,0x0195,0x0175,0x0195,0x0195,0x0195,0x0195,0x0175,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0195,0x0175,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0154,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0174,0x0175,0x0195,0x0195,0x0194,0x0194,0x0194,0x0195,0x01B5,0x01D5,0x0A37,0x3BFD,0x0A37,0x01B5,0x0195,0x0175,0x0174,0x0154,0x0154,0x0154,0x0175,0x0195,0x0175,0x0195,0x0174,0x0154,0x0174,0x0195,0x0175,0x0195,0x0175,0x0175,0x0195,0x0175,0x0155,0x0175,0x0175,0x0175,0x0175,0x0195,0x0195,0x0195,0x0195,0x0195,0x0195,0x0196,0x0195,0x01B6,0x01B5,0x0195,0x0195,0x01B6,0x0195,0x01B6,0x01B5,0x09D6,0x09D6,0x09D6,0x09B5,0x09B5,0x1195,0x1995,0x2175,0x2954,0x3112,0x7256,0x9AB7,0x9A15,0xA1F4,0xAA14,0xA9F4,0xA9D3,0xB1D3,0xB1D3,0xB1D3,0xB1D3,0xB1F3,0xB1D3,0xA9D3,0xA9B3,0xA9D3,0xB1F3,0xA9D3,0xA9D3,0xB1F4,0xB1F4,0xB1F3,0xA9D3,0xB1F4,0xA9D3,0xA9F4,0xA214,0x9A35,0x9297,0x61D4,0x1890,0x1133,0x0133,0x0174,0x0174,0x0174,0x0195,0x0175,0x0195,0x0175,0x0155,0x0155,0x0154,0x0154,0x0195,0x0174,0x0195,0x0174,0x0174,0x0175,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0175,0x0174,0x0174,0x0154,0x0174,0x0174,0x0195,0x0174,0x0195,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0194,0x0194,0x0194,0x0174,0x0174,0x0194,0x0174,0x0174,0x0174,0x0194,0x0194,0x0194,0x01B4,0x1277,0x2B5B,0x1AD9,0x01F5,0x01B4,0x0194,0x0194,0x0195,0x0174,0x0174,0x0174,0x0154,0x0174,0x0174,0x0195,0x0154,0x0174,0x0174,0x0195,0x0174,0x0174,0x0154,0x0174,0x0174,0x0154,0x0154,0x0175,0x0175,0x0175,0x0154,0x0154,0x0154,0x0174,0x0154,0x0174,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0153,0x0174,0x0174,0x0154,0x0154,0x0154,0x0134,0x0154,0x0154,0x0174,0x0174,0x0154,0x0154,0x0153,0x0153,0x0174,0x0174,0x0154,0x0154,0x0174,0x0173,0x0194,0x0174,0x0174,0x0173,0x0174,0x0194,0x0194,0x0194,0x01D5,0x22F9,0x2B3A,0x1256,0x01B4,0x0194,0x0174,0x0174,0x0174,0x0174,0x0174,0x0153,0x0153,0x0153,0x0173,0x0173,0x0174,0x0174,0x0174,0x0153,0x0154,0x0174,0x0174,0x0154,0x0154,0x0133,0x0154,0x0153,0x0154,0x0154,0x0174,0x0154,0x0133,0x0133,0x0133,0x0154,0x0133,0x0134,0x0133,0x0133,0x0154,0x0133,0x0154,0x0133,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0153,0x0153,0x0173,0x0173,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0173,0x0173,0x0173,0x0173,0x01B4,0x1A97,0x2319,0x2319,0x0A56,0x01D4,0x0194,0x0173,0x0173,0x0174,0x0153,0x0153,0x0133,0x0133,0x0153,0x0133,0x0153,0x0153,0x0153,0x0153,0x0133,0x0153,0x0153,0x0133,0x0153,0x0153,0x0133,0x0133,0x0153,0x0153,0x0153,0x0153,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0133,0x0153,0x0133,0x0133,0x0153,0x0153,0x0153,0x0153,0x0133,0x0153,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0153,0x0153,0x0133,0x0153,0x0153,0x0173,0x0173,0x0173,0x0173,0x0193,0x01F5,0x1AB7,0x335A,0x2B3A,0x1256, + 0x0133,0x0133,0x0153,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0132,0x0153,0x0153,0x0132,0x0153,0x0133,0x0153,0x0153,0x0153,0x0173,0x0173,0x0173,0x01B4,0x22B8,0x335A,0x2B39,0x1297,0x0A15,0x01B4,0x0193,0x0173,0x0153,0x0133,0x0153,0x0133,0x0153,0x0132,0x0133,0x0112,0x0133,0x0153,0x0133,0x0153,0x0133,0x0133,0x0153,0x0133,0x0133,0x0133,0x0133,0x0153,0x0133,0x0153,0x0133,0x0133,0x0153,0x0133,0x0133,0x0153,0x0133,0x0153,0x0153,0x0154,0x0154,0x0133,0x0154,0x0174,0x0154,0x0154,0x0174,0x0133,0x0133,0x0154,0x0133,0x0154,0x0154,0x0154,0x0133,0x0133,0x0133,0x0153,0x0153,0x0133,0x0133,0x0153,0x0133,0x0153,0x0133,0x0153,0x0153,0x0173,0x0193,0x0194,0x01D4,0x1A97,0x337A,0x2B39,0x1297,0x0215,0x0194,0x0173,0x0153,0x0153,0x0153,0x0133,0x0153,0x0153,0x0133,0x0153,0x0153,0x0154,0x0153,0x0174,0x0154,0x0154,0x0154,0x0154,0x0134,0x0154,0x0154,0x0154,0x0134,0x0134,0x0134,0x0134,0x0134,0x0134,0x0134,0x0174,0x0154,0x0134,0x0134,0x0154,0x0134,0x0154,0x0174,0x0154,0x0154,0x0154,0x0134,0x0154,0x0174,0x0133,0x0133,0x0154,0x0133,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0153,0x0154,0x0153,0x0153,0x0153,0x0173,0x0153,0x0173,0x0173,0x0173,0x0193,0x01B4,0x1256,0x333A,0x3B7B,0x1A98,0x01B4,0x0173,0x0153,0x0153,0x0153,0x0153,0x0154,0x0154,0x0154,0x0154,0x0154,0x0153,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0174,0x0154,0x0174,0x0174,0x0154,0x0154,0x0174,0x0174,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0174,0x0174,0x0174,0x0194,0x0174,0x0154,0x0174,0x0174,0x0174,0x0154,0x0174,0x0174,0x0174,0x0194,0x0174,0x0174,0x0154,0x0134,0x0154,0x0154,0x0174,0x0154,0x0153,0x0174,0x0174,0x0174,0x0194,0x0194,0x01B4,0x0194,0x1257,0x339B,0x1AD8,0x01D5,0x01B5,0x01B4,0x0194,0x0174,0x0154,0x0174,0x0174,0x0154,0x0174,0x0175,0x0154,0x0154,0x0175,0x0154,0x0175,0x0174,0x0154,0x0174,0x0175,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0195,0x0174,0x0154,0x0174,0x0175,0x0154,0x0174,0x0154,0x0174,0x0174,0x0175,0x0174,0x0154,0x0174,0x0175,0x0154,0x0174,0x0154,0x0175,0x0195,0x0174,0x0154,0x0174,0x0174,0x0175,0x0174,0x0154,0x0154,0x0174,0x0174,0x0154,0x0154,0x0174,0x0154,0x0174,0x0174,0x0174,0x0153,0x0194,0x0194,0x01B4,0x0A36,0x337B,0x1AD9,0x01D5,0x0195,0x0174,0x0154,0x0154,0x0154,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0154,0x0175,0x0154,0x0174,0x0174,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0154,0x0174,0x0175,0x0175,0x0175,0x0174,0x0174,0x0174,0x0174,0x0174,0x0195,0x0174,0x0195,0x0195,0x0195,0x0174,0x0174,0x0195,0x0175,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0154,0x0174,0x0174,0x0194,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0194,0x01B4,0x3BBC,0x22F9,0x01F6,0x01B5,0x0174,0x0154,0x0174,0x0154,0x0174,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0155,0x0155,0x0175,0x0155,0x0195,0x0175,0x0155,0x0175,0x0195,0x0175,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0174,0x0175,0x0175,0x0195,0x0175,0x0174,0x0195,0x0195,0x0174,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0174,0x0195,0x0175,0x0174,0x0195,0x0195,0x0195,0x0195,0x0175,0x0175,0x0175,0x0174,0x0174,0x0194,0x0174,0x0174,0x01D5,0x339B,0x1AD9,0x01F5,0x01B5,0x01B5,0x0194,0x0174,0x0174,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0174,0x0175,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0195,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0175,0x0195,0x0175,0x0195,0x0175,0x0195,0x0195,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0174,0x0154,0x0174,0x0154,0x1AD9,0x12B8,0x0195,0x0195,0x0195,0x0174,0x0174,0x0195,0x0175,0x0175,0x0195,0x0175,0x0195,0x0195,0x0175,0x0175,0x0175,0x0195,0x0175,0x0175,0x0195,0x0195,0x0175,0x0195,0x0175,0x0175,0x0175,0x0195,0x0175,0x0195,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0195,0x0175,0x0174,0x0175,0x0195,0x0175,0x0175,0x0195,0x0195,0x0175,0x0175,0x0195,0x0195,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0175,0x0174,0x0175,0x0195,0x0195,0x0195,0x0195,0x0174,0x0174,0x0174,0x0174,0x0194,0x0195,0x0194,0x0194,0x0194,0x0195,0x1278,0x339C,0x01D5,0x0194,0x0174,0x0175,0x0195,0x0195,0x0174,0x0174,0x0195,0x0195,0x0175,0x0175,0x0175,0x0175,0x0174,0x0175,0x0154,0x0175,0x0175,0x0154,0x0175,0x0175,0x0175,0x0154,0x0175,0x0155,0x0175,0x0175,0x0175,0x0174,0x0175,0x0175,0x0175,0x0174,0x0175,0x0175,0x0175,0x0174,0x0175,0x0174,0x0174,0x0174,0x0175,0x0174,0x0175,0x0174,0x0174,0x0175,0x0154,0x0175,0x0175,0x0154,0x0175,0x0154,0x0175,0x0175,0x0154,0x0154,0x0154,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0174,0x0194,0x0194,0x1298,0x337B,0x01B5,0x0194,0x0174,0x0174,0x0174,0x0154,0x0154,0x0154,0x0154,0x0174,0x0174,0x0174,0x0154,0x0174,0x0154,0x0175,0x0175,0x0154,0x0154,0x0174,0x0154,0x0175,0x0154,0x0154,0x0155,0x0175,0x0174,0x0174,0x0175,0x0175,0x0174,0x0195,0x0175,0x0195,0x01B5,0x0195,0x0175,0x0195,0x0175,0x0195,0x0995,0x0195,0x0195,0x01B5,0x09B5,0x09B5,0x0995,0x0975,0x1154,0x1954,0x2954,0x3113,0x4953,0x92D8,0x9A56,0xA215,0xA1F4,0xA9F4,0xA9D3,0xA9D3,0xB1D3,0xB1F4,0xA9D3,0xA9D3,0xB1D3,0xB1F3,0xA9B2,0xB1D3,0xA9D3,0xA9D3,0xA9B3,0xA9D3,0xB1F3,0xA9D3,0xB1F3,0xA9D3,0xA9D3,0xA9D3,0xAA14,0xA235,0x9AB7,0x61B4,0x20B1,0x1933,0x0933,0x0154,0x0154,0x0174,0x0174,0x0174,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0174,0x0174,0x0174,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0174,0x0174,0x0174,0x0174,0x0174,0x0154,0x0174,0x0154,0x0153,0x0174,0x0153,0x0153,0x0174,0x0174,0x0154,0x0154,0x0154,0x0154,0x0153,0x0153,0x0174,0x0174,0x0194,0x01D5,0x1AD9,0x2B3A,0x1277,0x0194,0x0194,0x0174,0x0153,0x0153,0x0153,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0134,0x0154,0x0154,0x0133,0x0133,0x0154,0x0133,0x0154,0x0154,0x0134,0x0154,0x0154,0x0133,0x0133,0x0133,0x0153,0x0153,0x0133,0x0133,0x0133,0x0154,0x0154,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0133,0x0174,0x0153,0x0153,0x0153,0x0153,0x0153,0x0173,0x0153,0x0153,0x0153,0x0173,0x0153,0x0153,0x0174,0x0173,0x0174,0x0173,0x09F5,0x22D8,0x333A,0x1216,0x0194,0x0174,0x0173,0x0153,0x0173,0x0153,0x0153,0x0153,0x0153,0x0173,0x0153,0x0153,0x0153,0x0153,0x0133,0x0153,0x0133,0x0133,0x0153,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0133,0x0153,0x0133,0x0154,0x0153,0x0133,0x0153,0x0153,0x0133,0x0153,0x0153,0x0133,0x0133,0x0153,0x0133,0x0133,0x0133,0x0133,0x0153,0x0153,0x0133,0x0133,0x0153,0x0152,0x0153,0x0153,0x0173,0x0173,0x01B4,0x0A15,0x22F8,0x2B19,0x1A97,0x01B4,0x0193,0x0173,0x0173,0x0152,0x0152,0x0132,0x0133,0x0133,0x0132,0x0133,0x0133,0x0133,0x0133,0x0153,0x0133,0x0153,0x0153,0x0133,0x0153,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0132,0x0133,0x0132,0x0132,0x0112,0x0133,0x0153,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0133,0x0133,0x0133,0x0132,0x0133,0x0133,0x0133,0x0132,0x0132,0x0132,0x0133,0x0132,0x0133,0x0132,0x0132,0x0132,0x0152,0x0152,0x0153,0x0153,0x0173,0x0193,0x09F5,0x01F5, + 0x00F2,0x0112,0x0112,0x0133,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0132,0x0132,0x0152,0x0152,0x0172,0x01B3,0x1235,0x2AF8,0x335A,0x2AF9,0x1236,0x0172,0x0152,0x0173,0x0153,0x0153,0x0112,0x00F2,0x0112,0x0112,0x00F2,0x0132,0x0132,0x0133,0x0133,0x0133,0x0113,0x0112,0x0112,0x0113,0x0133,0x0133,0x0133,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0112,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0133,0x0133,0x0112,0x0113,0x0133,0x0133,0x0153,0x0133,0x0133,0x0133,0x0112,0x0113,0x0113,0x0133,0x0112,0x0132,0x0132,0x0133,0x0133,0x0132,0x0132,0x0132,0x0132,0x0133,0x0153,0x0173,0x01D4,0x1277,0x2B19,0x2B19,0x1A77,0x01B4,0x0173,0x0153,0x0153,0x0132,0x0132,0x0112,0x0112,0x0133,0x0113,0x0133,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0134,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0134,0x0133,0x0133,0x0134,0x0134,0x0133,0x0113,0x0113,0x0113,0x0133,0x0133,0x0133,0x0113,0x0113,0x0113,0x0154,0x0154,0x0154,0x0133,0x0133,0x0133,0x0133,0x0153,0x0113,0x0133,0x0133,0x0153,0x0133,0x0133,0x0133,0x0153,0x0133,0x0153,0x0153,0x0153,0x0153,0x0173,0x0173,0x01B4,0x0A15,0x22B8,0x333A,0x22B8,0x09D5,0x0133,0x0132,0x0132,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0154,0x0133,0x0133,0x0133,0x0154,0x0133,0x0133,0x0133,0x0133,0x0153,0x0153,0x0133,0x0133,0x0153,0x0153,0x0133,0x0154,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0153,0x0154,0x0153,0x0174,0x0174,0x0154,0x0133,0x0133,0x0153,0x0153,0x0154,0x0153,0x0133,0x0154,0x0154,0x0133,0x0133,0x0133,0x0153,0x0173,0x0173,0x0153,0x0173,0x0193,0x01D4,0x2B19,0x337B,0x0A15,0x01B4,0x01D5,0x0173,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0154,0x0154,0x0154,0x0154,0x0134,0x0154,0x0134,0x0154,0x0134,0x0154,0x0133,0x0154,0x0134,0x0134,0x0134,0x0154,0x0154,0x0134,0x0154,0x0154,0x0133,0x0134,0x0154,0x0154,0x0154,0x0154,0x0133,0x0134,0x0134,0x0154,0x0134,0x0154,0x0134,0x0154,0x0134,0x0134,0x0154,0x0154,0x0174,0x0154,0x0134,0x0134,0x0134,0x0154,0x0134,0x0154,0x0154,0x0154,0x0133,0x0133,0x0133,0x0153,0x0153,0x0174,0x0133,0x0133,0x0153,0x0174,0x01B4,0x0A16,0x335B,0x22D9,0x0194,0x0173,0x0174,0x0154,0x0153,0x0153,0x0154,0x0154,0x0154,0x0153,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0134,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0134,0x0154,0x0154,0x0134,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0174,0x0154,0x0174,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0134,0x0134,0x0154,0x0154,0x0175,0x0174,0x0153,0x0154,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0194,0x2B19,0x2B3A,0x01D5,0x01B5,0x0154,0x0133,0x0133,0x0154,0x0154,0x0154,0x0175,0x0134,0x0134,0x0134,0x0154,0x0154,0x0154,0x0154,0x0134,0x0134,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0175,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0174,0x0174,0x0174,0x0174,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0174,0x0174,0x0174,0x0154,0x0154,0x0154,0x0174,0x0154,0x0153,0x0174,0x0194,0x01F5,0x3BFD,0x0A16,0x0194,0x0194,0x0174,0x0154,0x0174,0x0153,0x0133,0x0134,0x0175,0x0154,0x0154,0x0154,0x0174,0x0154,0x0174,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0174,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0174,0x0154,0x0174,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0175,0x0154,0x0174,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0195,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0133,0x0154,0x0153,0x22D9,0x1277,0x0174,0x0174,0x0174,0x0174,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0175,0x0175,0x0175,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0155,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0174,0x0174,0x0154,0x0154,0x0174,0x0154,0x0174,0x0174,0x0154,0x0154,0x0174,0x0174,0x0154,0x0154,0x0174,0x0174,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0174,0x0174,0x0174,0x0154,0x0154,0x0174,0x0174,0x0174,0x0154,0x0154,0x0154,0x0174,0x0174,0x0174,0x0194,0x2B1A,0x0A36,0x0153,0x0154,0x0154,0x0154,0x0174,0x0174,0x0153,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0134,0x0134,0x0134,0x0154,0x0134,0x0154,0x0154,0x0134,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0134,0x0134,0x0134,0x0154,0x0154,0x0174,0x0154,0x0153,0x0153,0x0153,0x0174,0x0174,0x0174,0x0174,0x0173,0x0194,0x0194,0x2AF9,0x22D9,0x0194,0x0174,0x0153,0x0174,0x0174,0x0154,0x0154,0x0133,0x0134,0x0134,0x0154,0x0154,0x0134,0x0133,0x0134,0x0154,0x0154,0x0134,0x0134,0x0134,0x0134,0x0154,0x0154,0x0154,0x0154,0x0154,0x0174,0x0154,0x0154,0x0154,0x0154,0x0134,0x0154,0x0174,0x0174,0x0154,0x0154,0x0154,0x0154,0x0175,0x0175,0x0174,0x0174,0x0174,0x0995,0x0975,0x0974,0x1154,0x1154,0x2174,0x3154,0x38F1,0x7A56,0xA2D8,0x9A15,0xA1D4,0xA9F4,0xA9D3,0xB1D3,0xA9B3,0xB1F3,0xA9D3,0xA9D3,0xA9B3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xA9D3,0xB1D3,0xB1D3,0xB1F4,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xAA14,0xA256,0x9AB7,0x7215,0x20B0,0x1933,0x1154,0x0954,0x0133,0x0154,0x0134,0x0134,0x0133,0x0154,0x0154,0x0154,0x0174,0x0154,0x0133,0x0133,0x0153,0x0154,0x0154,0x0154,0x0153,0x0153,0x0154,0x0174,0x0153,0x0153,0x0133,0x0133,0x0133,0x0133,0x0133,0x0154,0x0153,0x0153,0x0133,0x0133,0x0133,0x0153,0x0133,0x0133,0x0153,0x0153,0x0133,0x0153,0x0133,0x0153,0x0133,0x0153,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0153,0x0173,0x0173,0x0173,0x1237,0x333A,0x22D9,0x01D5,0x0174,0x0173,0x0153,0x0153,0x0153,0x0133,0x0133,0x0133,0x0153,0x0133,0x0133,0x0133,0x0133,0x0153,0x0154,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0113,0x0133,0x0133,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0133,0x0133,0x0133,0x0153,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0132,0x0153,0x0132,0x0133,0x0133,0x0132,0x0133,0x0133,0x0153,0x0133,0x0173,0x0153,0x0153,0x0153,0x1215,0x333A,0x3319,0x1216,0x0194,0x0153,0x0153,0x0153,0x0153,0x0133,0x0153,0x0153,0x0132,0x0133,0x0133,0x0153,0x0112,0x0112,0x0112,0x0112,0x0113,0x0133,0x0113,0x0133,0x0112,0x0113,0x0133,0x0132,0x0112,0x0112,0x0133,0x0133,0x0113,0x0113,0x0113,0x0113,0x0113,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0153,0x0133,0x0133,0x0132,0x0132,0x0133,0x0133,0x0133,0x0133,0x0132,0x0132,0x0112,0x0133,0x0112,0x0132,0x0132,0x0112,0x0132,0x0132,0x0132,0x0132,0x0153,0x0152,0x0152,0x0152,0x0173,0x1215,0x22D8,0x2B19,0x1A77,0x01D4,0x0193,0x0152,0x0152,0x0132,0x0132,0x0132,0x0112,0x0112,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0133,0x0132,0x0112,0x0132,0x0132,0x0132,0x0133,0x0133,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0113,0x0113,0x0113,0x0112,0x0132,0x0133,0x0133,0x0112,0x0133,0x0112,0x0112,0x0132,0x0132,0x0133,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0132,0x0152,0x0152,0x0173,0x0152, + 0x00F2,0x0112,0x0112,0x0133,0x0133,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0132,0x0132,0x0193,0x1A76,0x3339,0x2B19,0x1A56,0x01B3,0x0152,0x0132,0x0132,0x0152,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F1,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0133,0x0112,0x0112,0x0132,0x0112,0x0133,0x0133,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0133,0x0112,0x0112,0x0133,0x0132,0x0132,0x0133,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0133,0x0133,0x0132,0x0133,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0152,0x09D4,0x2AD8,0x333A,0x22B7,0x0A15,0x0193,0x0152,0x0132,0x0132,0x0132,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0113,0x0133,0x0133,0x0112,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0133,0x0113,0x0113,0x0133,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0112,0x0112,0x0133,0x0132,0x0132,0x0133,0x0133,0x0132,0x0133,0x0133,0x0153,0x0152,0x0152,0x0153,0x0173,0x0A15,0x22D8,0x333A,0x2297,0x09B4,0x0153,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0113,0x0153,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0132,0x0153,0x0153,0x0153,0x0173,0x0153,0x1236,0x43BC,0x22B8,0x01B4,0x0193,0x0193,0x0153,0x0153,0x0133,0x0132,0x0132,0x0133,0x0133,0x0133,0x0133,0x0154,0x0133,0x0134,0x0134,0x0134,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0154,0x0133,0x0134,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0134,0x0134,0x0134,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0133,0x0153,0x0133,0x0133,0x0133,0x0133,0x0173,0x0194,0x0A15,0x337B,0x1A77,0x0194,0x0153,0x0153,0x0133,0x0133,0x0133,0x0133,0x0153,0x0154,0x0133,0x0133,0x0154,0x0133,0x0133,0x0153,0x0133,0x0154,0x0133,0x0133,0x0133,0x0154,0x0133,0x0133,0x0133,0x0134,0x0133,0x0134,0x0134,0x0113,0x0133,0x0134,0x0133,0x0134,0x0133,0x0133,0x0134,0x0134,0x0133,0x0133,0x0133,0x0154,0x0133,0x0153,0x0153,0x0153,0x0153,0x0154,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0154,0x0133,0x0133,0x0133,0x0133,0x0153,0x0153,0x0133,0x0173,0x0153,0x0A16,0x3B7B,0x01B4,0x0174,0x0153,0x0133,0x0133,0x0133,0x0133,0x0154,0x0154,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0154,0x0134,0x0134,0x0154,0x0154,0x0134,0x0134,0x0134,0x0134,0x0154,0x0133,0x0134,0x0134,0x0134,0x0134,0x0134,0x0133,0x0154,0x0153,0x0153,0x0133,0x0154,0x0153,0x0153,0x0133,0x0154,0x0153,0x0153,0x0133,0x0133,0x0154,0x0153,0x0153,0x0154,0x0153,0x0153,0x0133,0x0154,0x0154,0x0133,0x0154,0x0154,0x0154,0x0154,0x0154,0x0153,0x0133,0x0153,0x0153,0x0154,0x0153,0x0153,0x0173,0x0173,0x1277,0x339B,0x0173,0x0174,0x0153,0x0153,0x0133,0x0133,0x0133,0x0133,0x0134,0x0134,0x0134,0x0134,0x0134,0x0154,0x0154,0x0154,0x0154,0x0154,0x0134,0x0134,0x0134,0x0154,0x0154,0x0134,0x0134,0x0134,0x0154,0x0154,0x0154,0x0134,0x0154,0x0154,0x0154,0x0134,0x0134,0x0154,0x0154,0x0134,0x0154,0x0154,0x0134,0x0134,0x0154,0x0134,0x0134,0x0134,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0154,0x0134,0x0154,0x0154,0x0154,0x0154,0x0133,0x0133,0x0154,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x22D8,0x1256,0x0153,0x0153,0x0153,0x0153,0x0133,0x0153,0x0153,0x0153,0x0154,0x0134,0x0133,0x0154,0x0134,0x0154,0x0134,0x0154,0x0154,0x0134,0x0154,0x0154,0x0133,0x0154,0x0134,0x0134,0x0134,0x0134,0x0153,0x0154,0x0154,0x0133,0x0133,0x0154,0x0133,0x0133,0x0134,0x0134,0x0133,0x0154,0x0153,0x0153,0x0134,0x0154,0x0134,0x0134,0x0134,0x0154,0x0154,0x0133,0x0133,0x0154,0x0153,0x0154,0x0133,0x0154,0x0153,0x0154,0x0154,0x0133,0x0153,0x0154,0x0154,0x0154,0x0153,0x0153,0x0154,0x0133,0x0133,0x0133,0x0153,0x0174,0x0153,0x0173,0x0A16,0x22D9,0x0153,0x0153,0x0133,0x0154,0x0153,0x0154,0x0133,0x0153,0x0133,0x0154,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0134,0x0134,0x0133,0x0134,0x0154,0x0134,0x0134,0x0134,0x0154,0x0134,0x0134,0x0134,0x0133,0x0134,0x0134,0x0133,0x0134,0x0133,0x0133,0x0133,0x0133,0x0133,0x0154,0x0133,0x0133,0x0133,0x0133,0x0133,0x0154,0x0154,0x0133,0x0133,0x0134,0x0133,0x0154,0x0154,0x0133,0x0153,0x0153,0x0153,0x0174,0x0153,0x0153,0x0153,0x0153,0x0153,0x0153,0x0173,0x0194,0x2AF9,0x1236,0x0173,0x0174,0x0153,0x0153,0x0153,0x0133,0x0133,0x0133,0x0133,0x0154,0x0134,0x0113,0x0113,0x0133,0x0133,0x0134,0x0133,0x0133,0x0133,0x0134,0x0133,0x0133,0x0154,0x0134,0x0133,0x0134,0x0133,0x0133,0x0153,0x0133,0x0133,0x0154,0x0153,0x0154,0x0154,0x0154,0x0154,0x0154,0x0134,0x0134,0x0174,0x0174,0x0154,0x0174,0x0154,0x0954,0x1174,0x1154,0x1933,0x2953,0x28D1,0x5973,0xA2F8,0x9A15,0xA1F4,0xA9F4,0xA9F3,0xB1F3,0xA9D3,0xA9B2,0xB1D3,0xB1F3,0xA9D3,0xA9D3,0xA9F3,0xA9D3,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xB1D3,0xB1D3,0xA9D3,0xB1F4,0xA9F4,0xAA14,0xA255,0x9A76,0x7215,0x184F,0x1912,0x0912,0x0113,0x0133,0x0133,0x0133,0x0133,0x0113,0x0154,0x0133,0x0133,0x0133,0x0133,0x0113,0x0154,0x0133,0x0153,0x0133,0x0133,0x0133,0x0153,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0112,0x0112,0x0133,0x0133,0x0133,0x0133,0x0153,0x0153,0x0194,0x1A77,0x335B,0x1216,0x0173,0x0173,0x0153,0x0153,0x0133,0x0132,0x0133,0x0153,0x0133,0x0113,0x0113,0x0113,0x0133,0x0133,0x0113,0x0113,0x0113,0x0133,0x0113,0x0133,0x0113,0x0113,0x0133,0x0113,0x0133,0x0113,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0132,0x0112,0x0133,0x0133,0x0133,0x0113,0x0113,0x0132,0x0132,0x0132,0x0133,0x0133,0x0133,0x0133,0x0132,0x0132,0x0132,0x0132,0x0112,0x0132,0x0132,0x0132,0x0132,0x0132,0x0112,0x0112,0x0132,0x0132,0x0133,0x0132,0x0133,0x0153,0x0133,0x0152,0x0153,0x09D4,0x2AD9,0x333A,0x09B4,0x0173,0x0152,0x0132,0x0153,0x0152,0x0132,0x0132,0x0132,0x0133,0x0133,0x0112,0x0113,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0113,0x0112,0x0112,0x0113,0x0112,0x0113,0x0133,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0132,0x0132,0x0132,0x0132,0x0152,0x01B3,0x1256,0x2AF8,0x2B19,0x09F4,0x0172,0x0152,0x0152,0x0132,0x0132,0x0132,0x0112,0x0112,0x0132,0x0112,0x0132,0x0112,0x0112,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0112,0x0132,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0112,0x0112,0x00F2,0x0112,0x00F2,0x0112,0x00F2,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0152, + 0x0132,0x0112,0x00F2,0x00F2,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0152,0x0152,0x0152,0x0172,0x0193,0x11F4,0x2297,0x3319,0x32F8,0x09B4,0x0132,0x0111,0x0111,0x0112,0x0112,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0112,0x0112,0x0132,0x0112,0x0112,0x0132,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0132,0x0133,0x0132,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0152,0x0193,0x1215,0x2AD8,0x3339,0x2AB8,0x09B4,0x0152,0x0132,0x0112,0x0111,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0113,0x0132,0x0112,0x0113,0x0112,0x0113,0x0133,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x00F2,0x00F2,0x00F2,0x00F2,0x0113,0x0112,0x0133,0x0113,0x0113,0x0113,0x0113,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0132,0x0133,0x0112,0x0112,0x0132,0x0132,0x0132,0x0132,0x0152,0x0193,0x09F4,0x2297,0x3339,0x22D8,0x11F5,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0133,0x0112,0x0112,0x0112,0x0133,0x0133,0x0113,0x0133,0x0113,0x0133,0x0113,0x0133,0x0153,0x0133,0x0113,0x0112,0x0112,0x0112,0x0133,0x0113,0x0112,0x0112,0x0112,0x0113,0x0113,0x0112,0x0133,0x0133,0x0113,0x0113,0x0113,0x0133,0x0133,0x0113,0x00F2,0x00F2,0x00F2,0x0112,0x0133,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0132,0x0133,0x0132,0x0132,0x0132,0x0153,0x0194,0x2AD8,0x3B5A,0x09F5,0x0172,0x0152,0x0173,0x0132,0x0112,0x0132,0x0112,0x0112,0x0132,0x0133,0x0133,0x0133,0x0112,0x00F2,0x0113,0x0113,0x0133,0x0133,0x0113,0x0113,0x0113,0x0113,0x0133,0x0113,0x0133,0x0133,0x0113,0x0133,0x0113,0x0133,0x0113,0x0113,0x0133,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0133,0x0133,0x0154,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0133,0x0112,0x0112,0x0133,0x0173,0x0173,0x09F5,0x3B7B,0x1A77,0x0153,0x0133,0x0133,0x0112,0x0112,0x0113,0x0112,0x0133,0x0113,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0113,0x0113,0x0133,0x0113,0x0113,0x0113,0x0133,0x0113,0x0113,0x0113,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0132,0x0112,0x0133,0x0153,0x0153,0x01B4,0x437B,0x09D5,0x0174,0x0153,0x0133,0x0133,0x0113,0x0112,0x0133,0x0153,0x0154,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0134,0x0133,0x0113,0x0113,0x0113,0x0133,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0134,0x0113,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0153,0x337B,0x1277,0x0174,0x0153,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0154,0x0133,0x0133,0x0113,0x0133,0x0113,0x0133,0x0134,0x0134,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0134,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0133,0x0133,0x00F2,0x0112,0x0112,0x0112,0x22D8,0x1236,0x0132,0x0133,0x0133,0x0133,0x0112,0x0112,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0133,0x0133,0x0133,0x0153,0x0133,0x0133,0x0113,0x0133,0x0113,0x0113,0x0133,0x0133,0x0133,0x0153,0x01B4,0x3B7B,0x0173,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0113,0x0133,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0113,0x0113,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0132,0x0133,0x0153,0x0153,0x0133,0x0153,0x0132,0x0132,0x0152,0x0173,0x09D4,0x439C,0x09D5,0x0173,0x0153,0x0153,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0134,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0113,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0154,0x0154,0x0153,0x0153,0x0133,0x0154,0x0154,0x0133,0x0933,0x1133,0x1133,0x2113,0x28F2,0x38B0,0x8A76,0xA276,0xA1F4,0xA9F4,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xA9D3,0xA9F3,0xA9D3,0xA9F3,0xA9B3,0xA9B3,0xB1F4,0xB1F3,0xB1D3,0xB1D3,0xB1D4,0xA9F4,0xAA14,0xA255,0xA2B7,0x8256,0x100E,0x10B1,0x08D2,0x00F2,0x0112,0x0113,0x0133,0x0133,0x0113,0x0113,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0113,0x0133,0x0113,0x0133,0x0112,0x0132,0x0133,0x0133,0x0133,0x0133,0x0112,0x0133,0x0132,0x0133,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0133,0x0132,0x0133,0x0133,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0133,0x0133,0x0132,0x0152,0x09D5,0x3B7B,0x22B8,0x0194,0x0153,0x0153,0x0132,0x0132,0x0132,0x0133,0x0133,0x0133,0x0153,0x0133,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0113,0x0113,0x0113,0x0113,0x0112,0x0133,0x0112,0x0133,0x0113,0x0113,0x0112,0x0132,0x0132,0x0133,0x0133,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0113,0x0113,0x0132,0x0132,0x0112,0x0112,0x0132,0x0132,0x0132,0x0132,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x11F5,0x3319,0x1A76,0x09B4,0x0152,0x0152,0x0152,0x0132,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0133,0x0132,0x0133,0x0112,0x0112,0x0112,0x0133,0x0132,0x0133,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0133,0x00F2,0x00F2,0x00F2,0x00F2,0x0112,0x0113,0x0133,0x0112,0x0133,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0111,0x0132,0x0152,0x0193,0x1A76,0x3B7A,0x3359,0x1276,0x0192,0x0152,0x0152,0x0152,0x0152,0x0132,0x0132,0x0132,0x0112,0x0112,0x00F2,0x00F2,0x00F2,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0133,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0111,0x0112,0x0111,0x0111,0x0131,0x0131,0x0131, + 0x0112,0x00F2,0x00F2,0x00D1,0x00F1,0x0111,0x0111,0x0132,0x0132,0x0132,0x0132,0x0132,0x0152,0x0152,0x0152,0x09B3,0x22B7,0x3319,0x2AF8,0x1A36,0x0193,0x0132,0x0132,0x0112,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0132,0x0193,0x2297,0x3B5A,0x3319,0x1A36,0x0193,0x0132,0x0132,0x0112,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0113,0x00F2,0x0113,0x0112,0x00F2,0x00F2,0x00F2,0x0112,0x0113,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0153,0x11F5,0x22B7,0x2B19,0x2297,0x09D4,0x0172,0x0132,0x0111,0x00F1,0x0112,0x0112,0x0111,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0133,0x0112,0x0113,0x0133,0x0113,0x0113,0x0113,0x0113,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0113,0x0113,0x0113,0x0113,0x0133,0x0113,0x0133,0x0113,0x0113,0x00F2,0x00F2,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0132,0x0112,0x0112,0x0132,0x0132,0x0132,0x0132,0x0132,0x2256,0x3B5A,0x2277,0x0193,0x0152,0x0152,0x0132,0x0132,0x0111,0x0112,0x0112,0x0112,0x0132,0x0132,0x0133,0x0132,0x0112,0x0112,0x0113,0x00F2,0x0113,0x0133,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0112,0x0113,0x0133,0x0113,0x0112,0x0113,0x0113,0x0133,0x0133,0x0133,0x0113,0x0113,0x0133,0x0133,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x00F2,0x0112,0x0112,0x0133,0x0133,0x0133,0x0113,0x0113,0x0112,0x0133,0x0112,0x0133,0x0132,0x0132,0x0112,0x0132,0x0152,0x0173,0x1215,0x439B,0x1236,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0133,0x0133,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0133,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0133,0x0113,0x0112,0x0133,0x0112,0x0112,0x0112,0x0113,0x0113,0x0113,0x0113,0x0133,0x0133,0x0112,0x0133,0x0113,0x0113,0x0113,0x0113,0x0133,0x0133,0x0133,0x0113,0x0113,0x0132,0x0133,0x0132,0x0132,0x0132,0x0153,0x0193,0x3B7B,0x2277,0x0153,0x0133,0x0113,0x0132,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0113,0x0113,0x0113,0x0133,0x0113,0x0113,0x0112,0x0133,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0112,0x0133,0x0113,0x0113,0x0112,0x0113,0x0113,0x0133,0x0133,0x0112,0x0113,0x0133,0x0132,0x0133,0x0133,0x0132,0x0132,0x0133,0x0132,0x0132,0x0132,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0133,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0153,0x01B4,0x43DC,0x01B4,0x0153,0x0132,0x0112,0x0112,0x0133,0x0112,0x0133,0x0133,0x0113,0x0113,0x0113,0x0133,0x0113,0x0113,0x0133,0x0133,0x0113,0x0133,0x0113,0x0113,0x0133,0x0113,0x0113,0x0133,0x0133,0x0113,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0133,0x0133,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x1A97,0x0A15,0x0132,0x0133,0x0132,0x0132,0x0112,0x0112,0x0112,0x0132,0x0133,0x0113,0x0133,0x0113,0x0113,0x0133,0x0113,0x0113,0x0133,0x0133,0x0133,0x0113,0x0113,0x0133,0x0112,0x0133,0x0112,0x0112,0x0132,0x0132,0x0112,0x0113,0x0132,0x0132,0x0113,0x0113,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0113,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0133,0x0113,0x0113,0x0113,0x0133,0x0133,0x0133,0x0133,0x0113,0x0113,0x0133,0x0132,0x0133,0x0133,0x0113,0x0113,0x0113,0x0112,0x0112,0x0132,0x0132,0x0153,0x2AD9,0x2298,0x0153,0x0132,0x0112,0x0132,0x0132,0x0133,0x0133,0x0112,0x0113,0x0113,0x0133,0x0113,0x0113,0x0113,0x0113,0x0133,0x0112,0x0133,0x0133,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0133,0x0113,0x0113,0x0113,0x0133,0x0113,0x0113,0x0113,0x0113,0x0113,0x0133,0x0132,0x0132,0x0113,0x0113,0x0112,0x0132,0x0132,0x0132,0x0133,0x0133,0x0113,0x0133,0x0113,0x0133,0x0133,0x0133,0x0133,0x0132,0x0133,0x0133,0x0132,0x0133,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0152,0x1A36,0x3B5A,0x0194,0x0173,0x0133,0x0132,0x0133,0x0133,0x0133,0x0112,0x0112,0x0113,0x0113,0x0133,0x0133,0x0113,0x0113,0x0113,0x0113,0x0133,0x0113,0x0133,0x0133,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0112,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0153,0x0153,0x0133,0x0133,0x0133,0x0133,0x0933,0x0933,0x1113,0x1913,0x2912,0x30B0,0x6173,0xA2D8,0xA235,0xA1D4,0xA9F4,0xA9F3,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xA9F3,0xA9D3,0xB1F3,0xA9D3,0xA9D3,0xA9D3,0xB1F3,0xA9B3,0xA9D3,0xA9D3,0xB1D3,0xB1F4,0xA9F4,0xA255,0xA297,0x8256,0x182E,0x10B1,0x08B1,0x08F2,0x00F2,0x0133,0x0133,0x0133,0x00F2,0x00F2,0x00F2,0x0112,0x0112,0x0133,0x0133,0x0113,0x0133,0x0133,0x0133,0x0112,0x0112,0x0133,0x0113,0x0113,0x0133,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0132,0x0132,0x0132,0x0132,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0132,0x0112,0x0112,0x0133,0x0112,0x00F2,0x00F2,0x0112,0x0132,0x0112,0x0112,0x0132,0x0132,0x0132,0x0173,0x2277,0x3B5A,0x1215,0x0152,0x0153,0x0152,0x0132,0x0132,0x0132,0x0132,0x0133,0x0112,0x0112,0x0112,0x0133,0x0133,0x00F2,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0132,0x0133,0x0133,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0112,0x0132,0x0132,0x0132,0x0112,0x0132,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0111,0x0112,0x0132,0x0132,0x0132,0x0152,0x1215,0x3319,0x2AD8,0x0193,0x0152,0x0152,0x0132,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0132,0x0132,0x0132,0x00F2,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0111,0x0111,0x0111,0x0131,0x0131,0x0152,0x0172,0x0A14,0x22D7,0x3339,0x22B7,0x09D4,0x0172,0x0152,0x0152,0x0132,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x00F2,0x0112,0x00F2,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0973,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0112,0x00F2,0x0112,0x00F2,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111, + 0x0112,0x0112,0x0112,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0132,0x0132,0x0132,0x0152,0x09B3,0x1A56,0x3339,0x3B5A,0x1A76,0x0993,0x0172,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0132,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F1,0x00F1,0x00F2,0x00F2,0x00F2,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0132,0x0172,0x09D4,0x2297,0x2AF8,0x22B7,0x11F4,0x0152,0x0132,0x0132,0x0112,0x0111,0x00F1,0x0111,0x00F1,0x0112,0x0112,0x00F1,0x00F2,0x00F1,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0133,0x0112,0x0112,0x0112,0x0113,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x00F2,0x00F2,0x00F2,0x00F2,0x0113,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x00F2,0x00F2,0x0112,0x0132,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0132,0x09B4,0x2297,0x32F9,0x2297,0x1215,0x0152,0x0132,0x0111,0x0111,0x00F1,0x0112,0x0111,0x0112,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0113,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x00F2,0x00F2,0x0112,0x0133,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0173,0x2AB7,0x3319,0x11F5,0x0153,0x0152,0x0132,0x0132,0x0111,0x0111,0x0112,0x0132,0x0112,0x0132,0x0112,0x0132,0x0132,0x0132,0x0112,0x00F2,0x00F2,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0113,0x0112,0x0132,0x0132,0x0133,0x0133,0x0133,0x0112,0x0112,0x0132,0x0112,0x0132,0x0113,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0152,0x1A36,0x3B3A,0x11F5,0x0132,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0153,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0133,0x0113,0x0113,0x0113,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0133,0x0133,0x0112,0x0112,0x0133,0x0112,0x0133,0x0112,0x0133,0x0133,0x0112,0x0112,0x0113,0x0113,0x0132,0x0112,0x0132,0x0132,0x0152,0x0132,0x2AD8,0x2AF8,0x0152,0x0132,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0113,0x0113,0x0113,0x0113,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0133,0x0113,0x0133,0x0112,0x0133,0x0112,0x0132,0x0132,0x0132,0x0132,0x0132,0x0112,0x0112,0x0132,0x0132,0x0132,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0133,0x0112,0x0133,0x0132,0x0132,0x0132,0x0132,0x0112,0x0132,0x0152,0x0152,0x22B7,0x2AF9,0x0153,0x0153,0x0132,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0113,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0133,0x0113,0x0133,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0113,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0133,0x0133,0x0113,0x0133,0x0133,0x0113,0x0133,0x0132,0x0133,0x0133,0x0112,0x0113,0x0133,0x0112,0x0112,0x0133,0x0133,0x0113,0x0112,0x0112,0x0133,0x0133,0x0132,0x0112,0x0132,0x0133,0x0132,0x0112,0x0112,0x0112,0x0133,0x0132,0x0133,0x0112,0x0112,0x00F1,0x0112,0x0111,0x22B7,0x0A14,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0133,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0133,0x0132,0x0133,0x0133,0x0133,0x0132,0x0132,0x0132,0x0133,0x0132,0x0132,0x0132,0x0133,0x0133,0x0133,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0132,0x0132,0x0153,0x09D4,0x3B3A,0x0152,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0113,0x0113,0x0133,0x0132,0x0133,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0113,0x0113,0x0113,0x0112,0x0113,0x0113,0x0113,0x0112,0x0112,0x0113,0x0113,0x0113,0x0112,0x0133,0x0112,0x0132,0x0132,0x0112,0x0112,0x0132,0x0132,0x0133,0x0132,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0132,0x0132,0x0112,0x0132,0x0132,0x0132,0x0112,0x0132,0x0132,0x0132,0x0132,0x0111,0x0132,0x2297,0x2AF9,0x0173,0x0153,0x0132,0x0132,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0113,0x0113,0x0133,0x0133,0x0112,0x0113,0x0113,0x0112,0x0133,0x0112,0x0112,0x0112,0x0113,0x0113,0x0113,0x0133,0x0133,0x0132,0x0133,0x0132,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0953,0x0933,0x1133,0x1933,0x20F2,0x28D1,0x4090,0x9297,0xA256,0xA1F4,0xAA14,0xA9F3,0xA9D3,0xA9D3,0xB1F4,0xA9D3,0xA9F3,0xB1F3,0xA9D3,0xA9F3,0xA9D3,0xA9D3,0xA9F3,0xA9D3,0xB1F4,0xA9D3,0xB1F3,0xB1F4,0xA9B3,0xA9F4,0xA9F4,0xA235,0x9A76,0x8A77,0x204F,0x18D1,0x08D1,0x08F2,0x00F2,0x0112,0x0112,0x0133,0x00F2,0x00F2,0x0112,0x0112,0x0133,0x0112,0x0133,0x0132,0x0133,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0113,0x0133,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0112,0x0132,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0132,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0112,0x0132,0x0152,0x09D4,0x2AD8,0x2AB8,0x0193,0x0152,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0112,0x0113,0x00F2,0x00F2,0x00F2,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0112,0x00F1,0x0112,0x0112,0x0111,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0132,0x0173,0x2297,0x3B3A,0x1A36,0x0193,0x0152,0x0152,0x0132,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x00F2,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0111,0x0112,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0131,0x0131,0x0131,0x0131,0x0151,0x09B3,0x2AD8,0x3B5A,0x22B7,0x09F4,0x0172,0x0132,0x0132,0x0112,0x0132,0x0112,0x0112,0x0132,0x0112,0x0953,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x00F2,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x00F2,0x00F1,0x00F2,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111, + 0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0192,0x1A55,0x2AD8,0x32F8,0x2297,0x11F4,0x0172,0x0131,0x0131,0x0111,0x0112,0x0111,0x00F1,0x0112,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0112,0x00F1,0x00F2,0x00F2,0x00F1,0x00F2,0x0112,0x0112,0x00F1,0x00F1,0x0112,0x00F1,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x00F2,0x00F1,0x00F1,0x00F1,0x00F1,0x00F2,0x00F1,0x00F1,0x00F1,0x0112,0x00F1,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0132,0x0172,0x1A35,0x2AF8,0x2AD8,0x1A56,0x09D4,0x0172,0x0132,0x0132,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x00F1,0x00F2,0x0111,0x0112,0x00F1,0x0112,0x00F1,0x0112,0x00F2,0x00F2,0x00F1,0x00F1,0x0111,0x0112,0x0993,0x2A97,0x3319,0x2277,0x09B3,0x0152,0x0131,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0112,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x00F2,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x00F2,0x00F2,0x00F2,0x00F2,0x0112,0x0133,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0111,0x0132,0x1A36,0x3B19,0x1A56,0x09B3,0x0152,0x0132,0x0112,0x0112,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0132,0x0112,0x0132,0x0132,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0132,0x0111,0x0132,0x0152,0x1A56,0x3B7A,0x09B4,0x0132,0x0111,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0133,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x09D4,0x439B,0x0173,0x0152,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0172,0x3B5A,0x09B4,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0113,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0133,0x0133,0x0112,0x0112,0x0132,0x0132,0x0112,0x0132,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0132,0x0112,0x0111,0x00F1,0x00F1,0x00F1,0x2276,0x09F4,0x0132,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0112,0x0132,0x0132,0x0112,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0113,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0152,0x2AF9,0x01B3,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0113,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0132,0x0111,0x0132,0x0132,0x0152,0x3319,0x2297,0x0152,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0133,0x0112,0x0132,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0133,0x0112,0x0132,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0133,0x0112,0x0933,0x0932,0x1112,0x1912,0x28F1,0x306F,0x79F5,0xA2B7,0x9A14,0xA214,0xA9F4,0xA9D3,0xA9F4,0xA9F3,0xB214,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xA9D3,0xA9F3,0xB1F3,0xA9F3,0xB1F4,0xA9D3,0xB1F3,0xA9D3,0xA9D3,0xA9D3,0xAA14,0xA235,0x9A76,0x92B8,0x204F,0x18D1,0x08D1,0x08F1,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0111,0x0111,0x0111,0x0112,0x0132,0x0132,0x0173,0x1236,0x3B7A,0x1235,0x0173,0x0152,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x00F2,0x0112,0x00F2,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0112,0x0112,0x0112,0x0112,0x0132,0x0173,0x2276,0x32F9,0x1A36,0x0173,0x0152,0x0173,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x00F1,0x0112,0x0111,0x0111,0x0112,0x0112,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0112,0x0131,0x0111,0x0132,0x0111,0x0131,0x0131,0x0131,0x0152,0x0193,0x1235,0x3339,0x3319,0x1A56,0x0152,0x0132,0x0132,0x0111,0x0112,0x0132,0x0112,0x0132,0x0111,0x0132,0x0112,0x0111,0x0111,0x0112,0x0112,0x0132,0x0112,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x0112,0x00F1,0x00F2,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111, + 0x0111,0x0111,0x0111,0x0131,0x0111,0x0151,0x0192,0x1235,0x2AB7,0x3319,0x2AD7,0x2256,0x0172,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x00D1,0x00D1,0x00F2,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0111,0x0112,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0112,0x00F1,0x0111,0x0111,0x0112,0x00F1,0x00F1,0x0111,0x0111,0x0112,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0131,0x0131,0x0152,0x01B3,0x1235,0x2296,0x22B7,0x1215,0x09B3,0x0152,0x0131,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0111,0x0112,0x0112,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0132,0x0112,0x0112,0x00F1,0x00F1,0x00F1,0x0112,0x0132,0x0111,0x0132,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0131,0x0193,0x2297,0x3319,0x2AB7,0x09B3,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0112,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x00F2,0x00F2,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0132,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0131,0x0193,0x2AD8,0x2AD8,0x11F5,0x0993,0x0132,0x0132,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x0132,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0111,0x0132,0x0112,0x0153,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0111,0x0132,0x0132,0x0132,0x0152,0x0172,0x2AB7,0x437A,0x0993,0x0111,0x00F1,0x0111,0x0111,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0173,0x3B5A,0x11F5,0x0132,0x0111,0x00F1,0x0112,0x0112,0x00F1,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0112,0x0111,0x0132,0x0132,0x09F4,0x2AF8,0x0132,0x0112,0x0132,0x0112,0x0152,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0132,0x0132,0x0112,0x0132,0x0132,0x0112,0x0112,0x00F2,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0112,0x0132,0x0112,0x0132,0x0112,0x0112,0x0112,0x0111,0x0132,0x0112,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x00F1,0x0111,0x2AD7,0x1235,0x0132,0x0132,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0152,0x1A76,0x2297,0x0111,0x0112,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0132,0x0132,0x0132,0x0132,0x0132,0x0112,0x0132,0x0112,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0111,0x0111,0x0132,0x0132,0x0132,0x0111,0x0111,0x0111,0x0193,0x437B,0x1215,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0132,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0132,0x0132,0x0132,0x0133,0x0132,0x0132,0x0133,0x0112,0x0112,0x0112,0x0133,0x0132,0x0112,0x0912,0x0912,0x1912,0x20F1,0x2890,0x40B0,0x9AB7,0xA255,0xA214,0xAA14,0xA1D3,0xA9D3,0xA9D3,0xA9F4,0xA9F3,0xA9D3,0xA9D3,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xB214,0xA9D3,0xB1F4,0xA9D3,0xA9F4,0xA9F4,0xA214,0xA296,0x8A97,0x180D,0x1090,0x10D1,0x08F1,0x0112,0x0112,0x0133,0x0112,0x0112,0x00F2,0x0112,0x0132,0x0132,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x00F1,0x00F1,0x0111,0x0112,0x0111,0x0112,0x00F1,0x0111,0x0112,0x0112,0x0111,0x0111,0x0111,0x0131,0x0132,0x0132,0x0193,0x3B5A,0x2AF8,0x01B4,0x0152,0x0132,0x0112,0x0112,0x0132,0x0112,0x00F1,0x00F1,0x00F1,0x0132,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0132,0x0111,0x0132,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x00F2,0x00F2,0x00F2,0x0111,0x0132,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0112,0x0111,0x00F1,0x0111,0x00F1,0x0112,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0112,0x0111,0x0112,0x0111,0x0111,0x0111,0x0111,0x09B3,0x2AD8,0x3319,0x1235,0x0193,0x0152,0x0132,0x0132,0x0112,0x0112,0x0132,0x0111,0x0111,0x00F2,0x00F2,0x00F1,0x00F1,0x0112,0x0112,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x00F2,0x00F1,0x0112,0x0112,0x0112,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0132,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x0131,0x0131,0x0131,0x0152,0x1A15,0x32F8,0x3339,0x1A96,0x01B3,0x0152,0x0111,0x0111,0x0111,0x0111,0x0132,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x00F1,0x0112,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1, + 0x0131,0x0131,0x0131,0x0151,0x09D3,0x2A96,0x3B59,0x32F8,0x1A55,0x09B3,0x0131,0x0111,0x0111,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0112,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0131,0x0172,0x09F4,0x1A76,0x2AF8,0x1A76,0x09F4,0x0192,0x0172,0x0131,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0112,0x00F1,0x0112,0x00F1,0x00F1,0x0112,0x00F1,0x0112,0x0112,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F2,0x00F2,0x00F2,0x00F2,0x0112,0x00F1,0x00F1,0x00F1,0x0111,0x0112,0x0112,0x00F1,0x00F1,0x00F1,0x0112,0x0112,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x09B3,0x2AD8,0x3B5A,0x22B7,0x09D4,0x0132,0x0132,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0112,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0112,0x00F1,0x00F2,0x00F2,0x0112,0x00F2,0x00F2,0x0112,0x00F2,0x00F2,0x00F2,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x00F1,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x0112,0x00F1,0x0112,0x0111,0x0112,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0131,0x0152,0x1A55,0x3318,0x2296,0x09B3,0x0152,0x0132,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0112,0x0111,0x0112,0x0132,0x0132,0x0132,0x00F1,0x0111,0x0112,0x00F1,0x0112,0x0112,0x00F1,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x0111,0x0111,0x0112,0x0112,0x0112,0x00F1,0x0111,0x0111,0x0131,0x0132,0x0152,0x0152,0x0193,0x3319,0x3B59,0x0152,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0112,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x0111,0x00F1,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0132,0x0131,0x2AF8,0x1A76,0x0152,0x0111,0x0111,0x00F1,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0111,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0132,0x0131,0x2AD8,0x1235,0x0111,0x0132,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0111,0x0112,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x00F2,0x0132,0x0132,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0112,0x0132,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F0,0x2296,0x1214,0x0131,0x0132,0x0132,0x0111,0x0111,0x0111,0x0111,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0132,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0111,0x0112,0x0131,0x0193,0x3339,0x0131,0x0132,0x0112,0x0112,0x0132,0x0112,0x0132,0x0131,0x0132,0x0111,0x0132,0x0112,0x0112,0x0111,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0132,0x0132,0x0112,0x0132,0x0132,0x0132,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x0131,0x09D4,0x3B7A,0x0993,0x0132,0x0132,0x0132,0x0111,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0112,0x0132,0x0111,0x0111,0x0132,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0932,0x0912,0x10F1,0x18F1,0x28B0,0x304E,0x79F5,0x9A76,0xA235,0xA1F4,0xA9F4,0xA9D4,0xA9F4,0xA9F3,0xA9D3,0xA9F3,0xB1F3,0xA9F3,0xB1F3,0xA9D3,0xA9D3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9D3,0xA9F3,0xB214,0xA9F4,0xA214,0x9A76,0x8A97,0x180D,0x106F,0x08B0,0x00D1,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x0112,0x0132,0x00F1,0x00F1,0x0112,0x00F1,0x00F2,0x00F2,0x00F2,0x00F1,0x00F1,0x00F1,0x0111,0x0112,0x0111,0x00F1,0x00F1,0x0111,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0132,0x0132,0x0152,0x0152,0x1215,0x3319,0x1A76,0x0152,0x0132,0x0132,0x0132,0x0111,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0132,0x0111,0x0111,0x0112,0x0112,0x00F1,0x00F1,0x00F1,0x00F2,0x0112,0x00F2,0x00F2,0x0112,0x00F1,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x00F1,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0112,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0132,0x09D4,0x2AD8,0x2B18,0x1A56,0x0193,0x0152,0x0152,0x0132,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0112,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x0111,0x00F1,0x0112,0x0112,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0152,0x01B3,0x1A76,0x3B5A,0x3B39,0x09B3,0x0131,0x0131,0x0111,0x0131,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00D1,0x0112,0x00F1,0x00F1,0x00F1,0x0111,0x0112,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1, + 0x0151,0x11F3,0x2276,0x2AD7,0x3B18,0x2AB7,0x11B3,0x0131,0x0110,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F0,0x00F1,0x00F1,0x0111,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0172,0x09F3,0x22B6,0x2AF8,0x1A76,0x01B3,0x0192,0x0992,0x0151,0x0111,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0112,0x00F1,0x00F1,0x0112,0x00F1,0x00F1,0x00F1,0x0112,0x0112,0x00F1,0x00F1,0x0112,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x0131,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0131,0x0172,0x2276,0x3319,0x2AD7,0x11F4,0x0132,0x0131,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F2,0x00F1,0x0112,0x00F1,0x00F1,0x0112,0x00F2,0x00F1,0x0112,0x00F1,0x0112,0x0112,0x00F1,0x0112,0x00F2,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x0132,0x0111,0x0111,0x0132,0x0112,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0132,0x0132,0x0112,0x0111,0x0111,0x0132,0x0132,0x0111,0x0111,0x00F1,0x00D1,0x0111,0x0111,0x0131,0x09B3,0x2AB7,0x2297,0x1A35,0x0993,0x0132,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0132,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0112,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0112,0x00F1,0x00F1,0x00F1,0x0112,0x00F1,0x00F1,0x0111,0x0112,0x00F1,0x0111,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0111,0x00F1,0x00F1,0x0112,0x00F1,0x0112,0x00F1,0x0112,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0131,0x0131,0x0131,0x01B3,0x3339,0x2AB7,0x0131,0x0131,0x0111,0x0112,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0112,0x0112,0x0111,0x0132,0x0111,0x0112,0x0132,0x0111,0x0111,0x00F1,0x0112,0x00F1,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0111,0x0111,0x0132,0x0132,0x00F1,0x0112,0x0111,0x0112,0x0111,0x0112,0x0132,0x0111,0x0132,0x0111,0x0111,0x0111,0x0132,0x0152,0x0152,0x2AB7,0x2297,0x0172,0x0132,0x0111,0x0111,0x00F1,0x0112,0x0111,0x0111,0x0111,0x0112,0x0111,0x0132,0x0111,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0153,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0111,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0132,0x0112,0x00F1,0x00F1,0x0112,0x0111,0x0112,0x0111,0x0111,0x0132,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0172,0x3339,0x0192,0x0131,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0152,0x0132,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0132,0x0111,0x00D0,0x00F0,0x00F1,0x00F0,0x2296,0x11F4,0x0131,0x0131,0x0111,0x0111,0x0111,0x0132,0x0111,0x0111,0x0111,0x0132,0x0111,0x0111,0x0111,0x0111,0x0111,0x0112,0x0112,0x0132,0x0112,0x0112,0x00F1,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x00F1,0x0112,0x0111,0x0111,0x0132,0x0112,0x0111,0x0132,0x0111,0x0111,0x0111,0x0112,0x0112,0x0112,0x0111,0x0111,0x0112,0x0111,0x0112,0x0111,0x0952,0x0132,0x0111,0x0111,0x0111,0x0132,0x0172,0x3319,0x2276,0x0152,0x0131,0x0132,0x00F1,0x0111,0x0111,0x0131,0x0111,0x0111,0x0132,0x0112,0x0111,0x0112,0x0111,0x0111,0x00F1,0x0112,0x0132,0x0112,0x0132,0x0132,0x0132,0x0112,0x0111,0x0132,0x0112,0x0112,0x0112,0x0111,0x0111,0x0132,0x0111,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0112,0x0132,0x0111,0x0132,0x0111,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x0131,0x2276,0x439A,0x0172,0x0131,0x0111,0x0132,0x0111,0x00F1,0x0112,0x00F1,0x0111,0x0112,0x0111,0x0111,0x0112,0x0111,0x0111,0x0111,0x0112,0x0111,0x00F1,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x00F1,0x00F2,0x00F1,0x0111,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0911,0x0911,0x08F1,0x10F1,0x20D0,0x288F,0x48D0,0x9A97,0xA256,0xA1F4,0xAA14,0xA9F4,0xA9D3,0xA9D3,0xA9F3,0xA9D3,0xA9B3,0xA9D3,0xA9F3,0xA9F3,0xA9D3,0xAA14,0xA9D3,0xA9F3,0xB213,0xA9F3,0xA9D3,0xA9F3,0xA1F3,0xA235,0xA276,0x9AD8,0x180D,0x18B0,0x1111,0x00F1,0x00D1,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0132,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0112,0x0111,0x0111,0x0111,0x0111,0x0112,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x00F1,0x0111,0x0112,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0132,0x0132,0x0131,0x0172,0x2AB7,0x3339,0x09F4,0x0152,0x0131,0x0132,0x0132,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0132,0x0132,0x0112,0x00F1,0x00F1,0x0112,0x0111,0x0952,0x0112,0x00F1,0x00F1,0x00F1,0x0112,0x0111,0x0111,0x0111,0x0111,0x0112,0x0111,0x0112,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00D1,0x0112,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0131,0x1215,0x2AD8,0x2AF8,0x1A76,0x0193,0x0152,0x0131,0x0111,0x0111,0x0111,0x0111,0x0112,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F2,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x0111,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0131,0x0131,0x0152,0x0172,0x1A55,0x3B39,0x3318,0x1235,0x0172,0x0131,0x0131,0x0131,0x0111,0x0111,0x00F1,0x00F1,0x0132,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0112,0x00F1,0x0112,0x00F1,0x00F1,0x0112,0x0111,0x0111,0x0111,0x0112,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1, + 0x2AD7,0x2AB7,0x1A34,0x11D3,0x0151,0x0130,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00F1,0x00F1,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x0111,0x09B3,0x2276,0x2296,0x22B6,0x1A55,0x09D3,0x0172,0x0151,0x0131,0x0131,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0172,0x2276,0x3B39,0x2AB7,0x11F4,0x0172,0x0131,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F2,0x00F2,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0112,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0112,0x00F1,0x00F1,0x00F1,0x0111,0x0132,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0131,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0172,0x1A55,0x2AD7,0x1A76,0x09D3,0x0151,0x0131,0x0111,0x00F1,0x00F1,0x00F0,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0112,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0131,0x0131,0x09F4,0x3359,0x1235,0x0131,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0112,0x0112,0x0111,0x0111,0x0111,0x0111,0x0112,0x0112,0x0111,0x0111,0x0111,0x0111,0x0112,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0111,0x0112,0x0132,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F2,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0132,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0132,0x0131,0x1215,0x3319,0x09B3,0x0132,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0112,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x22B7,0x2AD8,0x0152,0x0131,0x0111,0x00F1,0x0111,0x0132,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x0132,0x0111,0x00F1,0x0111,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0132,0x0112,0x0112,0x0112,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0111,0x0111,0x0112,0x0112,0x0132,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F0,0x00F0,0x00F1,0x00D0,0x2296,0x09F3,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0132,0x0111,0x0111,0x0111,0x0111,0x0112,0x0112,0x00F1,0x0112,0x0111,0x0111,0x0112,0x0111,0x0112,0x0112,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0111,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x00F1,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0131,0x1215,0x439B,0x0152,0x0131,0x0111,0x0111,0x0112,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0132,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0112,0x00F1,0x0112,0x0111,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x00F1,0x0111,0x0131,0x32F8,0x3B59,0x0131,0x0131,0x0111,0x0111,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0112,0x0112,0x0111,0x0111,0x0112,0x0112,0x0112,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0911,0x08F1,0x10F1,0x18F1,0x20B0,0x304E,0x8A97,0x9A35,0xA215,0xA1F4,0xA9F4,0xA9D3,0xA9B3,0xA9F4,0xB1F4,0xA9D3,0xB1F4,0xA9D3,0xA9D3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9F4,0xA234,0x9A55,0x9AF8,0x38F0,0x2931,0x1111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0112,0x00F1,0x0112,0x00F1,0x0112,0x00F1,0x0112,0x00F1,0x0112,0x0111,0x0112,0x0112,0x0112,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0112,0x00F1,0x00F1,0x0112,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0131,0x0131,0x0111,0x00F1,0x0111,0x0111,0x0131,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x0131,0x0131,0x0151,0x1214,0x3B7A,0x1A76,0x0152,0x0131,0x0132,0x0131,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0132,0x0111,0x0112,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0152,0x09D4,0x22B7,0x2B18,0x2296,0x0172,0x0131,0x0131,0x0111,0x0131,0x0131,0x0111,0x0111,0x00F1,0x0111,0x0131,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x0111,0x00D0,0x00D1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00D0,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0131,0x0111,0x0131,0x0172,0x1214,0x22B7,0x3338,0x2296,0x0993,0x0131,0x0131,0x0131,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111, + 0x11B3,0x0151,0x0110,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x0111,0x00F0,0x0110,0x0111,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00D1,0x00D1,0x00D1,0x00D1,0x00D0,0x00D1,0x00D1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0111,0x0111,0x00F0,0x0110,0x0151,0x09D3,0x2296,0x2AB7,0x2296,0x1A55,0x09B3,0x0111,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x0111,0x00F1,0x00F1,0x00F0,0x00D0,0x00F1,0x0111,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x00F1,0x00F1,0x00F0,0x00F1,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x0131,0x0111,0x0131,0x0172,0x1214,0x2AF7,0x2AD7,0x1A35,0x0172,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F0,0x00F1,0x00D0,0x00D0,0x00F0,0x00F0,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x0112,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00D1,0x00F1,0x00D0,0x00F1,0x0111,0x0111,0x0111,0x0131,0x09F4,0x2296,0x2AD7,0x1A35,0x0172,0x0131,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0132,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00D1,0x00F1,0x00F1,0x0111,0x0131,0x0151,0x1A55,0x3B7A,0x09D3,0x0151,0x0152,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0112,0x0111,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0112,0x0111,0x0112,0x0112,0x00F1,0x0111,0x0111,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0131,0x09B3,0x3B7A,0x11F4,0x0131,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0111,0x00F1,0x00F1,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0112,0x00F1,0x0112,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x0112,0x0112,0x0111,0x0132,0x0111,0x0112,0x0111,0x0132,0x0111,0x0111,0x0132,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0151,0x439A,0x09D3,0x0131,0x0131,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F2,0x0112,0x0112,0x0132,0x00F1,0x0112,0x0111,0x0112,0x00F1,0x0111,0x0112,0x0111,0x0111,0x0111,0x0111,0x0112,0x0111,0x0111,0x0112,0x0112,0x0112,0x0111,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0132,0x0112,0x0112,0x0111,0x0111,0x0131,0x0132,0x0111,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F1,0x00F0,0x2AD7,0x09F4,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0112,0x0111,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x0131,0x0131,0x439A,0x0192,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0132,0x0111,0x0132,0x0111,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x0131,0x0131,0x0111,0x0111,0x0111,0x0132,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0112,0x00F1,0x0111,0x0112,0x00F1,0x0111,0x00F1,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x0112,0x00F1,0x00F1,0x00F1,0x0112,0x0112,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0131,0x0111,0x00F0,0x0111,0x0192,0x439A,0x2296,0x0151,0x0131,0x0111,0x0132,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0112,0x0112,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0132,0x0112,0x0132,0x0112,0x0112,0x0111,0x0111,0x0111,0x0131,0x0111,0x00F1,0x08F1,0x10F1,0x20D0,0x286F,0x69D4,0x9256,0x99F4,0xA214,0xA9F4,0xA1D3,0xA9D3,0xA9D3,0xA9F3,0xA9D3,0xA9D3,0xB1F3,0xA9F3,0xA9D3,0xA9F3,0xA9D3,0xA9D3,0xB1F3,0xA9D3,0xB1F3,0xA9F3,0xAA14,0xA214,0x9A55,0x92D7,0x4131,0x4215,0x1952,0x0911,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x0132,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0112,0x0111,0x0111,0x00F1,0x00D1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0131,0x0131,0x0172,0x32F8,0x2AD7,0x09D3,0x0151,0x0151,0x0151,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0132,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0131,0x11F4,0x2AB7,0x2AF8,0x1214,0x0192,0x0151,0x0151,0x0131,0x0131,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0131,0x0131,0x0131,0x09B3,0x2AB7,0x3339,0x2296,0x09D3,0x0151,0x0131,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1, + 0x00F0,0x0111,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00D1,0x00D1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00D1,0x00D1,0x00D1,0x00D1,0x00D1,0x00D0,0x00D1,0x00D1,0x00D1,0x00D1,0x00D1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x0131,0x0151,0x11F4,0x32F7,0x32F8,0x22B6,0x1214,0x0172,0x0131,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x00F0,0x00F1,0x0111,0x00F0,0x00F0,0x0111,0x00D0,0x00F1,0x0111,0x00D1,0x00D1,0x00D1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x0110,0x0131,0x0171,0x11F4,0x2AD7,0x2AD7,0x11F4,0x0192,0x0131,0x0111,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D0,0x00F0,0x00F1,0x0111,0x0172,0x1A55,0x2AF7,0x2296,0x0192,0x0131,0x0111,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x0111,0x0111,0x0131,0x0111,0x0111,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0112,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0151,0x2AD7,0x3B59,0x01B2,0x0151,0x0131,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0112,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0112,0x00F1,0x0112,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0172,0x3B59,0x1A55,0x0152,0x0131,0x0111,0x00F1,0x00F0,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0112,0x00F1,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0111,0x00F1,0x00F1,0x0112,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0112,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0192,0x439A,0x0111,0x0131,0x0111,0x00F1,0x00F0,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0112,0x0112,0x0111,0x0111,0x0132,0x0111,0x0111,0x0112,0x0112,0x0112,0x0112,0x0111,0x0111,0x0111,0x0111,0x0111,0x0132,0x0111,0x00F1,0x00F1,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x2AB7,0x09F4,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0131,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0131,0x1A75,0x2296,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0112,0x0112,0x00F1,0x00F1,0x0112,0x00F2,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x0112,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0131,0x09F3,0x3B79,0x1235,0x0131,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0112,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0112,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0112,0x0112,0x0112,0x0112,0x0111,0x0111,0x0111,0x0111,0x0911,0x08F1,0x10F0,0x18D0,0x208F,0x3890,0x9AB7,0x9A15,0xA215,0xAA35,0xA1D3,0xA9F4,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xA9D3,0xA9F3,0xA9D3,0xA9F3,0xB1F3,0xA9D3,0xA9F3,0xA9D3,0xAA14,0xA9F4,0xA214,0x9A76,0x92F8,0x4152,0x5AF8,0x4297,0x1192,0x0952,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00D1,0x00F1,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F0,0x0111,0x00F1,0x00F1,0x00F0,0x00F1,0x0111,0x00F0,0x0111,0x0111,0x0110,0x0131,0x0131,0x11F4,0x3339,0x2276,0x0192,0x0172,0x0152,0x0131,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0152,0x09D3,0x22D7,0x2AD7,0x1234,0x0172,0x0151,0x0131,0x0131,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0131,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x0111,0x0131,0x0131,0x0131,0x0171,0x11F4,0x3318,0x3318,0x1A14,0x0131,0x0111,0x0131,0x0110,0x00F0,0x0110,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x0111, + 0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x0111,0x00F0,0x00D0,0x00F0,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00D1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0131,0x0172,0x1234,0x2AF7,0x3318,0x2275,0x11D3,0x0131,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00D1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00D0,0x00F0,0x0111,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0151,0x11F3,0x2AB6,0x2AD7,0x1A34,0x0172,0x0131,0x0110,0x0111,0x0111,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F0,0x0111,0x0111,0x11F4,0x2AF7,0x2AF7,0x11F4,0x0151,0x0131,0x0110,0x0110,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F0,0x00F0,0x0111,0x0152,0x3318,0x2AD7,0x0171,0x0151,0x0111,0x00F0,0x00F0,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x0111,0x00F1,0x00D1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0151,0x3318,0x2AD7,0x0152,0x0131,0x00F1,0x0111,0x0111,0x00F1,0x00F0,0x00F0,0x00F0,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0112,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F0,0x2296,0x2296,0x0131,0x0111,0x00F1,0x00D0,0x0111,0x0131,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0131,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0132,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D1,0x00F1,0x00D0,0x2AB7,0x09B3,0x0131,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F0,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0131,0x0111,0x0111,0x0111,0x0111,0x0151,0x09D3,0x53FC,0x00F0,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F0,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0112,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F0,0x0110,0x0110,0x0130,0x1234,0x3B59,0x09D4,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0112,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0112,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x08F1,0x08F1,0x10F1,0x1890,0x200E,0x8235,0xA276,0x99F4,0xA1F4,0xA1F4,0xA9F3,0xA9F3,0xB1F3,0xA9B3,0xA9D3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9D3,0xA9D3,0xB1F3,0xA9F4,0xA9F3,0xA1F3,0x99F4,0x9A55,0x92F8,0x38F0,0x2952,0x4296,0x3296,0x11B3,0x0151,0x0131,0x0111,0x00F0,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0131,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F0,0x00F1,0x0111,0x0111,0x00F0,0x0110,0x0110,0x00F0,0x0111,0x0131,0x0992,0x3338,0x3338,0x09F4,0x0171,0x0131,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00D1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0110,0x0110,0x0151,0x1A34,0x3318,0x2AD7,0x09F3,0x0172,0x0131,0x0111,0x00F0,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x0111,0x00F0,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F1,0x00D1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F0,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00F1,0x00D0,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F0,0x00F1,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x0111,0x0131,0x0110,0x0110,0x0131,0x1A14,0x3B39,0x3318,0x1A35,0x0172,0x0131,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1, + 0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00D0,0x00D0,0x00F0,0x00F0,0x00F1,0x00F0,0x0110,0x00F0,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0172,0x1A55,0x2AF7,0x2AD7,0x1234,0x0192,0x0131,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00D0,0x00F1,0x00D0,0x00D0,0x00D1,0x00F1,0x00F1,0x00D1,0x00D1,0x00D1,0x00F1,0x00D1,0x00F1,0x00F1,0x00D1,0x00F1,0x00D1,0x00D1,0x00D0,0x00F1,0x00D1,0x00F1,0x0111,0x00F1,0x00D1,0x00F1,0x00D1,0x00D0,0x00D0,0x00D0,0x00F0,0x00F1,0x00D0,0x00F0,0x00F1,0x00F1,0x00D0,0x00D0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x0110,0x0131,0x11F3,0x2AD7,0x32F7,0x1A55,0x0992,0x0131,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F1,0x0111,0x0111,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F0,0x00F0,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0152,0x2276,0x3B39,0x2296,0x0192,0x0131,0x0111,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F0,0x00F0,0x0110,0x0152,0x3B39,0x1A75,0x0172,0x0131,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00D0,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0131,0x2296,0x3B39,0x0192,0x0131,0x0111,0x00F0,0x00F0,0x0111,0x0111,0x00F1,0x00F0,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x0111,0x0111,0x0111,0x0111,0x00F0,0x439A,0x09B3,0x0131,0x0111,0x00D0,0x00D0,0x0111,0x0111,0x00F0,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00D1,0x00F1,0x0111,0x00F1,0x00D1,0x00D1,0x00F1,0x00D0,0x2A97,0x0993,0x0111,0x0112,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F0,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0111,0x0151,0x437A,0x11D4,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x00F0,0x00F0,0x0110,0x0110,0x0110,0x0151,0x1A76,0x3B59,0x0172,0x0111,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x08F0,0x18D0,0x182E,0x5932,0x9AB7,0x9A15,0xA215,0xA1D4,0xA9F4,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xB1F3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9F3,0xA9D3,0xA9D3,0xA9F3,0xA1D3,0xAA14,0xA214,0x9A55,0x92F8,0x180D,0x108F,0x1111,0x2214,0x32B7,0x11F4,0x0151,0x0131,0x00F0,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x0131,0x0151,0x1214,0x3B38,0x2296,0x09B3,0x0151,0x0110,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00D1,0x00F1,0x00D1,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00D1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x0172,0x1214,0x3318,0x2AD7,0x11F4,0x0151,0x0130,0x0131,0x0110,0x00F0,0x0110,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F0,0x00F0,0x00F1,0x00D0,0x00F1,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F1,0x00D0,0x00D1,0x00F1,0x00D0,0x00D0,0x00F0,0x00D0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x0110,0x0110,0x0151,0x09B2,0x2296,0x3318,0x2AB7,0x0992,0x0110,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00D0,0x00F0,0x00D0,0x00D0,0x00F1,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D1,0x00D1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1, + 0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00D1,0x00D1,0x00D1,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F0,0x00D0,0x00F0,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x0130,0x09B3,0x2275,0x3318,0x2AD7,0x09D3,0x0151,0x0110,0x00F0,0x0110,0x00F0,0x0110,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F1,0x00F1,0x00F1,0x0111,0x00F0,0x00F1,0x00F1,0x00F1,0x0111,0x00D1,0x00F1,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00F0,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00D0,0x00D0,0x00F1,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F0,0x0111,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x0110,0x0151,0x11F4,0x2276,0x2296,0x2296,0x09B2,0x0110,0x0110,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F0,0x00F1,0x00F1,0x00D0,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00F0,0x0111,0x00F1,0x00F1,0x00D0,0x00D0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x0111,0x09B3,0x2AB7,0x32F7,0x1214,0x0151,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F1,0x00D0,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F0,0x0110,0x00F0,0x00F1,0x00F0,0x00F1,0x00F0,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F0,0x00D0,0x00D0,0x00F0,0x0110,0x0110,0x09B3,0x3B39,0x1214,0x0172,0x0131,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x0111,0x0111,0x0111,0x00F0,0x00D0,0x00F0,0x0111,0x0111,0x11F4,0x3B19,0x0993,0x0131,0x0111,0x00F1,0x0111,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00D1,0x00D1,0x00F1,0x00F1,0x0132,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x0110,0x11D3,0x3B18,0x0151,0x0131,0x0111,0x00D0,0x00D0,0x00F1,0x0111,0x00F0,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x0111,0x00F1,0x00D1,0x00F1,0x00D1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x2AD7,0x11F4,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F0,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F0,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x0111,0x00F1,0x00F0,0x00F1,0x0111,0x00F0,0x0111,0x0111,0x11D3,0x3B19,0x0131,0x0111,0x0111,0x0111,0x0111,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x00F0,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F0,0x0110,0x00F0,0x0110,0x0110,0x0131,0x0151,0x1A76,0x2AF7,0x0151,0x0111,0x00F0,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00D1,0x0111,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F0,0x00F1,0x0111,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x0111,0x0131,0x0111,0x0111,0x00F0,0x00F0,0x08D0,0x1911,0x28D0,0x386E,0x9AB7,0x9A55,0xA235,0x99D3,0xA1D3,0xB214,0xA9D3,0xB214,0xA9D3,0xA9D3,0xB1F3,0xA9D3,0xA9D3,0xA9F3,0xA9D3,0xA9F3,0xA9F3,0xB1F4,0xA9F4,0xAA14,0xAA55,0x9A55,0x92F7,0x180C,0x086E,0x08F0,0x0110,0x11B2,0x32F7,0x1A14,0x0131,0x0111,0x0111,0x00F0,0x00F1,0x00D0,0x00D0,0x00F0,0x00F1,0x0131,0x0111,0x00F1,0x00F1,0x00D1,0x00F1,0x00D1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x0111,0x0110,0x0151,0x32F7,0x3318,0x1A55,0x0192,0x0111,0x00F0,0x00F0,0x00D0,0x00D0,0x00F1,0x00F1,0x00F0,0x00D0,0x00F1,0x00F0,0x00D0,0x00D0,0x00F0,0x00F1,0x00F1,0x00D0,0x00F1,0x00D0,0x00D0,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x0151,0x2255,0x3318,0x2AF7,0x1214,0x0171,0x0131,0x0111,0x0110,0x00F0,0x0110,0x00F0,0x0110,0x00F0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x0111,0x00F1,0x00D0,0x00D0,0x00D0,0x00F0,0x00F1,0x00D1,0x00F1,0x00F0,0x00F0,0x00F1,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x00F0,0x00F0,0x00F0,0x0110,0x0131,0x09B2,0x22B6,0x3338,0x2296,0x09F3,0x0171,0x0130,0x0110,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x00D0,0x00D0,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x00F1,0x0111,0x00F1,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0, + 0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00D0,0x00D1,0x00D1,0x00F1,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x0111,0x00F0,0x00D0,0x00F1,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0131,0x11F4,0x32F7,0x3318,0x1A55,0x09B2,0x0151,0x0131,0x0110,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F0,0x00F0,0x00D0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x00D0,0x00F1,0x00D0,0x00F1,0x00D0,0x00F1,0x00D0,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x00D0,0x00F1,0x00F0,0x00D0,0x00F1,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F1,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x0110,0x1A14,0x2AD7,0x2AB7,0x1A55,0x09D3,0x0131,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00D0,0x00F1,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0151,0x2255,0x32F8,0x2276,0x0151,0x0130,0x0110,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00D0,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00D0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x1A35,0x3B18,0x11F4,0x0172,0x0131,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x0111,0x0111,0x0111,0x00F1,0x00F0,0x0111,0x00F0,0x0111,0x00F1,0x00F0,0x00F1,0x0111,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x0111,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x0152,0x3B19,0x11F4,0x0131,0x0111,0x00F0,0x00D0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x0111,0x00F0,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F0,0x0111,0x00F1,0x0111,0x00F0,0x00D0,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F0,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x0110,0x4359,0x1A14,0x0151,0x0111,0x00F0,0x00D0,0x00F0,0x0111,0x0111,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x0111,0x0111,0x00F0,0x00F0,0x00F1,0x0111,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x0111,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00D0,0x00F1,0x00D1,0x00F1,0x00F1,0x00D0,0x00F1,0x00B0,0x2A96,0x11D3,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F0,0x0110,0x00F0,0x00F0,0x0111,0x00F0,0x0111,0x0111,0x00F0,0x00F1,0x0111,0x00F0,0x0111,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x0111,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x0110,0x0131,0x3318,0x0192,0x0131,0x0111,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D0,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F0,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F0,0x00F1,0x0111,0x00F1,0x0111,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0111,0x0131,0x0192,0x22D7,0x2AD7,0x0131,0x0111,0x00F0,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F0,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x0111,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F0,0x00F0,0x08D0,0x10D0,0x20D0,0x282E,0x7A35,0xA2B7,0x99F4,0xA1F4,0xA1D4,0xA9F4,0xB1F4,0xA9D3,0xA9D3,0xB1F3,0xA9D3,0xA9B2,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xB1F3,0xB1F3,0xB1F4,0xAA14,0xAA35,0x9A55,0x92B7,0x180C,0x086E,0x08AF,0x00F0,0x0131,0x0992,0x3B18,0x2255,0x0131,0x0111,0x0111,0x00F1,0x00F0,0x00D0,0x00F0,0x00F1,0x0111,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F1,0x00F0,0x00D0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x0110,0x0131,0x09D3,0x2AB7,0x3318,0x11D3,0x0131,0x00F0,0x00F0,0x00F0,0x00F1,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x0111,0x00D0,0x00F1,0x00F1,0x00D0,0x00F0,0x00F0,0x00F0,0x00F1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00D0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F0,0x00F0,0x00F1,0x00D0,0x00F0,0x0111,0x00F1,0x00F0,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F0,0x00F1,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x0110,0x0110,0x0172,0x1214,0x3317,0x32F7,0x11F3,0x0151,0x0131,0x0110,0x0110,0x00F0,0x0110,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x0151,0x0192,0x1214,0x22B6,0x3B58,0x1A54,0x0151,0x0130,0x0131,0x0110,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F1,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0, + 0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F1,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00CF,0x00F0,0x00F0,0x0110,0x0151,0x1A34,0x3318,0x2AD7,0x1A14,0x0131,0x0130,0x0151,0x0131,0x00F0,0x00D0,0x00CF,0x00CF,0x00CF,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F1,0x00F0,0x00F0,0x00F0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F0,0x00F0,0x00F0,0x00D0,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x0111,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x0110,0x11B3,0x2A96,0x2276,0x1A55,0x11D3,0x0151,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00D0,0x00F0,0x00D0,0x00D0,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1,0x0111,0x00F1,0x00F1,0x00D0,0x00F0,0x00F1,0x00F1,0x00F0,0x00D0,0x00F0,0x00F1,0x0111,0x0111,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x0110,0x0131,0x11F3,0x2AD7,0x22B6,0x1214,0x0131,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F0,0x00F1,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x00D0,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00D0,0x00D0,0x00D1,0x00F1,0x00D0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0131,0x2275,0x32F8,0x11D3,0x0172,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F1,0x0111,0x00F0,0x00F1,0x00F0,0x00D0,0x00F1,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x0111,0x0111,0x00F0,0x0111,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x0111,0x0131,0x3318,0x2235,0x0132,0x0111,0x00F1,0x0111,0x00F0,0x00F1,0x00F1,0x00D0,0x00D0,0x00F0,0x00F0,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x0111,0x00F0,0x0111,0x00F0,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x0111,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1,0x00F0,0x00F1,0x00F0,0x00D0,0x00F1,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x0111,0x00F0,0x0110,0x00F0,0x0110,0x00F0,0x0111,0x0110,0x0172,0x4379,0x0172,0x0131,0x0111,0x00F0,0x00F0,0x00D0,0x00F1,0x00F0,0x0111,0x00F0,0x00F1,0x0111,0x00D0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x0111,0x00F0,0x00F1,0x00F0,0x00F1,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F1,0x00F0,0x00F0,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x0132,0x0111,0x00F1,0x00D1,0x00D0,0x00D0,0x00D0,0x00D0,0x2AB7,0x09D3,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00D1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F0,0x0111,0x0111,0x00F0,0x00F1,0x00F0,0x00F0,0x0110,0x00F0,0x00F0,0x00F0,0x0110,0x00F0,0x00F0,0x0111,0x0111,0x00F1,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F0,0x0111,0x00F1,0x00F0,0x0111,0x00F0,0x00F1,0x00F1,0x00F0,0x0111,0x00F1,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x0111,0x00F0,0x00F0,0x0131,0x0111,0x0111,0x00F0,0x00F0,0x0110,0x2275,0x2276,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x0111,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x0111,0x00F1,0x00F0,0x00F0,0x00F0,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0151,0x09D3,0x3339,0x1A35,0x00D0,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00F1,0x00D1,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x0111,0x0111,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F0,0x00D0,0x08D0,0x108F,0x204E,0x5111,0xA2D8,0x9A35,0xA235,0xA9F4,0xA9F4,0xA9D3,0xB1F3,0xB1D3,0xA9D3,0xB1D3,0xA9D3,0xA9D3,0xB1F4,0xA9D3,0xA9F3,0xA9F3,0xB1F4,0xB1F4,0xA9F4,0xA214,0x9A55,0x92B7,0x180C,0x106E,0x08AF,0x00D0,0x00F0,0x0111,0x0151,0x3B18,0x2AB7,0x0131,0x0110,0x0111,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F1,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00D0,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x00D1,0x0111,0x00F1,0x00F1,0x00D0,0x00D0,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x0111,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1,0x00F0,0x0111,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0131,0x0151,0x1A55,0x3318,0x2296,0x0992,0x0110,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x0111,0x00F1,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x0111,0x00F1,0x00F1,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x0110,0x0110,0x0151,0x1A14,0x32F8,0x2AB7,0x09D3,0x0151,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00B0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F1,0x0111,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x0110,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x0110,0x0130,0x0151,0x0171,0x09B2,0x2296,0x3B38,0x2296,0x0192,0x0130,0x0110,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0, + 0x00D1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00EF,0x00EF,0x0971,0x2AB6,0x3B38,0x2AD7,0x11F3,0x0151,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x00D0,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00B0,0x00D0,0x00D0,0x00D0,0x00D0,0x00B0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00CF,0x00F0,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x0992,0x2AB7,0x2A97,0x1A35,0x09B3,0x0131,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F1,0x00D0,0x00D1,0x00D0,0x00D1,0x00D0,0x00D1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x0110,0x0171,0x2296,0x3318,0x1A55,0x0192,0x0130,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F1,0x00F1,0x00D0,0x00F1,0x00D1,0x00F1,0x00D1,0x00D1,0x00D1,0x00F1,0x00D1,0x00D1,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0131,0x2A96,0x32F8,0x09B3,0x0172,0x0110,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F1,0x00D0,0x00F1,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00F1,0x00F0,0x00F0,0x0110,0x0110,0x2AB7,0x32F8,0x0152,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F1,0x00F0,0x00F1,0x00F0,0x00D0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x0110,0x0110,0x00F0,0x2275,0x2AB6,0x0110,0x0131,0x00F0,0x00D0,0x00F0,0x00F1,0x00F1,0x00D0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F1,0x00D0,0x00F1,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0131,0x00F0,0x00F1,0x00F1,0x00D0,0x00D0,0x00F0,0x00D0,0x2276,0x11D3,0x0111,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F1,0x00F0,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00D0,0x00F0,0x0111,0x00F0,0x00F1,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0172,0x32F8,0x0111,0x00F1,0x00D0,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x0111,0x00F1,0x00F1,0x00F1,0x00D0,0x00F1,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F1,0x00F1,0x00F0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00D0,0x00F1,0x00F1,0x00D0,0x00D0,0x0111,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x0111,0x0151,0x09F4,0x3B39,0x0993,0x00F0,0x00D0,0x00F1,0x00D1,0x00D0,0x00D1,0x00D0,0x00F1,0x00F1,0x00D1,0x00D1,0x00D1,0x00D0,0x00F1,0x0111,0x00D0,0x00F1,0x00D1,0x00D1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D1,0x00F1,0x00D0,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00D0,0x08B0,0x108F,0x206F,0x304E,0x9296,0x9A55,0xA235,0xA1F4,0xA9D4,0xA9D3,0xB1F3,0xB1D3,0xB1D3,0xB1D3,0xA9D3,0xB1D3,0xB1F4,0xA9D3,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xA9F4,0xA234,0x9A75,0x8A96,0x180D,0x106E,0x08AF,0x00AF,0x00F0,0x00F0,0x0110,0x0151,0x2276,0x2AB7,0x0131,0x0111,0x0111,0x00F0,0x00F0,0x00D0,0x00F1,0x00D0,0x00F0,0x00F1,0x00F1,0x00F1,0x00F1,0x00D1,0x00D0,0x00F1,0x00D1,0x00F1,0x00F1,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F1,0x00D0,0x00F0,0x00F1,0x00F1,0x00D0,0x00F1,0x00D0,0x00D0,0x00F1,0x00D0,0x00D1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x0110,0x00F0,0x0110,0x0131,0x0992,0x2295,0x32F7,0x1A34,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D1,0x00F1,0x00D0,0x00F1,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F1,0x00D0,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00F0,0x00F0,0x0110,0x0110,0x0151,0x11F3,0x3318,0x2AD7,0x11B3,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x0110,0x0110,0x0191,0x1A34,0x32F7,0x32F7,0x11F3,0x0131,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0, + 0x00B0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00B0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00B0,0x00D0,0x00AF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F1,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00B0,0x00B0,0x00F0,0x00F0,0x00D0,0x00F0,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00F0,0x00F0,0x00F0,0x0130,0x11D3,0x2A96,0x3B18,0x2A96,0x09B2,0x0130,0x0110,0x0110,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00AF,0x00B0,0x00B0,0x00D0,0x00B0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x0110,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x0992,0x2AB6,0x32F8,0x2A96,0x11D3,0x0111,0x00F0,0x00F0,0x00F0,0x0110,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00F1,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x0111,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x0110,0x0151,0x09F3,0x2AD6,0x2296,0x11F3,0x0130,0x0110,0x0110,0x0110,0x0110,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D1,0x00D1,0x00D1,0x00D0,0x00D1,0x00D0,0x00D1,0x00D1,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F0,0x0111,0x0111,0x0110,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x0131,0x2AB7,0x2296,0x0992,0x0972,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x00F0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00F0,0x00F0,0x00F1,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x0111,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00B0,0x00B0,0x00F1,0x00F1,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x0110,0x0110,0x2255,0x3B59,0x0192,0x0131,0x00F1,0x00F0,0x00D0,0x00D0,0x0111,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x0111,0x00F0,0x00F1,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F1,0x00F0,0x00F1,0x00F0,0x00F0,0x00D0,0x00F1,0x00F0,0x0111,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x0110,0x0951,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x0110,0x3B39,0x0992,0x0131,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F1,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F1,0x00F1,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00D0,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x00F1,0x00F0,0x00F0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00AF,0x2255,0x09B2,0x0111,0x0111,0x00F0,0x00D0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F1,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F1,0x00D0,0x00D0,0x0111,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x0130,0x4359,0x11D3,0x00F0,0x00F0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00B0,0x00D0,0x0111,0x0111,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F1,0x00D0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F1,0x00D0,0x00F1,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F1,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x0110,0x0110,0x0151,0x1A55,0x3B18,0x0131,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00F1,0x00D0,0x00D1,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x0111,0x00F1,0x00F1,0x00D0,0x00F0,0x00D0,0x0111,0x0911,0x08F0,0x10F0,0x10B0,0x188F,0x202D,0x71B3,0xA2B7,0x9A35,0xA214,0xA1D3,0xA9D4,0xA9B3,0xB1D3,0xA9B3,0xB1D3,0xA9D3,0xA9D3,0xA9D3,0xB1F4,0xA9B3,0xB1F3,0xB1F4,0xA9F3,0xA9F4,0xAA55,0x9A55,0x92B7,0x180C,0x106E,0x08D0,0x08D0,0x00AF,0x00CF,0x00D0,0x0110,0x0130,0x2A76,0x3B39,0x0992,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F1,0x00D1,0x00D1,0x00F1,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F1,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x0110,0x0171,0x1A14,0x2AB6,0x2AB6,0x0172,0x0110,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D1,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F1,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x0110,0x00F0,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00F0,0x00F0,0x0110,0x0130,0x2255,0x3B38,0x2AB6,0x09B2,0x0131,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00CF,0x00D0,0x00CF,0x00D0,0x00CF,0x00F0,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00F0,0x00EF,0x00EF,0x0151,0x2234,0x3B18,0x32F7,0x1A34,0x0171,0x0110,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0, + 0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00B0,0x00B0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00B0,0x00B0,0x00D0,0x00B0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00EF,0x00F0,0x0951,0x1A14,0x3AF7,0x3B18,0x2A75,0x09B2,0x0131,0x00F0,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00D0,0x00D0,0x0110,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x0971,0x2A96,0x3B38,0x2AB6,0x11F3,0x0151,0x00F0,0x00F0,0x00F0,0x00CF,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x0110,0x0110,0x0171,0x2296,0x2AD7,0x1A75,0x0171,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F1,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D1,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x0131,0x32D7,0x2296,0x0992,0x0151,0x00F0,0x00F0,0x00CF,0x00CF,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x0110,0x0110,0x0992,0x4379,0x11F3,0x0151,0x0111,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F1,0x00D0,0x00F0,0x00D0,0x00F1,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00D0,0x00F0,0x00F1,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x0111,0x0111,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x19F4,0x3B39,0x0131,0x0111,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F1,0x00F0,0x00D0,0x00F1,0x00F1,0x00D0,0x00F1,0x00F1,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00B0,0x00D0,0x00D0,0x00AF,0x1A34,0x09B2,0x0110,0x0111,0x0111,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F1,0x00F1,0x00F0,0x00F0,0x00D0,0x00F0,0x00F1,0x00D0,0x00F1,0x00F1,0x00F0,0x0111,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x0111,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x0110,0x2255,0x3B39,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F1,0x00D0,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F1,0x00D0,0x00F1,0x00D0,0x00F1,0x00F1,0x00F0,0x00D0,0x00D0,0x00F1,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x0111,0x0151,0x2A96,0x2AB7,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D1,0x00D0,0x00F1,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F1,0x00F1,0x00D0,0x00F1,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F1,0x00F0,0x00F0,0x00F1,0x00D0,0x00F1,0x00F0,0x00D0,0x00F0,0x00F0,0x08F1,0x08D0,0x10D0,0x188F,0x204E,0x40AF,0x9AD7,0x9A55,0xA215,0xA9F4,0xA9D3,0xB1F4,0xB1D3,0xB1D3,0xB1D3,0xA9D3,0xB1D3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xA9D3,0xB214,0xAA14,0xA234,0x9A55,0x8A96,0x180C,0x106E,0x08AF,0x00D0,0x00CF,0x00AF,0x00CF,0x00D0,0x0110,0x0130,0x1A14,0x4359,0x11D3,0x0110,0x0111,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00F1,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x0110,0x0130,0x0192,0x1A55,0x32F8,0x1A14,0x0131,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x00F0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00F0,0x00F0,0x00F0,0x0110,0x0171,0x1A14,0x4379,0x32D7,0x0972,0x0110,0x00F0,0x0110,0x0110,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00CF,0x00CF,0x00D0,0x00CF,0x00D0,0x00CF,0x00EF,0x0110,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x0110,0x0150,0x09B2,0x2AB6,0x3B38,0x32D7,0x0992,0x0110,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0, + 0x00D1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00B0,0x00B0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00AF,0x00B0,0x00B0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00EF,0x0130,0x0971,0x1A14,0x2A75,0x2A75,0x2234,0x0992,0x0110,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00F0,0x00D0,0x00CF,0x00F0,0x00D0,0x00D0,0x00B0,0x00D0,0x00AF,0x00AF,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x0110,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00B0,0x00B0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00F0,0x00F0,0x0151,0x2255,0x3B18,0x2A96,0x11B2,0x0151,0x0110,0x0110,0x00F0,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00D0,0x00D0,0x0110,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00CF,0x00D0,0x00D0,0x00CF,0x00F0,0x0110,0x0130,0x09B2,0x2AD7,0x2275,0x1234,0x0151,0x0110,0x00F0,0x00EF,0x00CF,0x00F0,0x00F0,0x00D0,0x00CF,0x00CF,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F1,0x00F0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F1,0x00F0,0x00D0,0x0111,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D1,0x00F1,0x00F1,0x00D1,0x00D0,0x00F1,0x0111,0x00F0,0x00D0,0x00D0,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x0952,0x2AB7,0x2AB7,0x0992,0x0952,0x00D0,0x00CF,0x00CF,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x0111,0x00F0,0x00D0,0x00D0,0x00D0,0x00F1,0x0111,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x0110,0x0131,0x3B39,0x1A34,0x0131,0x0110,0x00F0,0x00D0,0x0111,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F1,0x00F1,0x00F0,0x00D0,0x00F1,0x00F1,0x00D0,0x00D0,0x00F1,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00CF,0x00D0,0x0110,0x3B18,0x19F4,0x0111,0x00F0,0x00F0,0x00F0,0x00D0,0x0131,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x0111,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x0111,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00F1,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x0110,0x00D0,0x00D0,0x00F0,0x00D0,0x0111,0x00F0,0x00D0,0x00D0,0x00D0,0x00CF,0x1A34,0x11F3,0x0110,0x0111,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00F0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00D0,0x00D0,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x0131,0x437A,0x0172,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F0,0x0911,0x00F0,0x00D0,0x00D0,0x00F0,0x00F1,0x00F0,0x00D0,0x00F0,0x00F0,0x00F1,0x00F1,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F1,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F1,0x00F0,0x00D0,0x00F1,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F1,0x00F0,0x00D0,0x00F0,0x00F0,0x0110,0x0992,0x32F8,0x2255,0x00F0,0x00D0,0x00B0,0x00F1,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00D1,0x00F1,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00B0,0x00B0,0x00D0,0x00D0,0x08D0,0x08B0,0x108F,0x206F,0x280D,0x8235,0x9A55,0x9A14,0xAA15,0xA9F4,0xB1F4,0xB1D3,0xB1D3,0xB1D4,0xA9B3,0xA9B3,0xA9D3,0xB1F4,0xA9D3,0xA9D3,0xA9D3,0xA9F3,0xAA14,0xAA55,0xA275,0x92B6,0x180C,0x106E,0x088F,0x00AF,0x00D0,0x00D0,0x00AF,0x00D0,0x00CF,0x00F0,0x0110,0x11D3,0x3B18,0x1A14,0x0111,0x0111,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F1,0x00F1,0x00D0,0x00D0,0x00F1,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x0110,0x00F0,0x0110,0x0151,0x11F3,0x32F7,0x2296,0x0172,0x0110,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F0,0x00D0,0x00B0,0x00D0,0x00D0,0x0111,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00B0,0x00B0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00D0,0x00CF,0x00F0,0x00D0,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00F0,0x00F0,0x0110,0x0110,0x0151,0x2296,0x439A,0x2AB6,0x09B2,0x0130,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00CF,0x00D0,0x00CF,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00AF,0x00D0,0x00D0,0x00D0,0x0110,0x00D0,0x00F0,0x00CF,0x00CF,0x00CF,0x00F0,0x00F0,0x00F0,0x00D0,0x00CF,0x00AF,0x00CF,0x00CF,0x00F0,0x00F0,0x0110,0x0130,0x0130,0x0992,0x2A96,0x3B58,0x3318,0x11F3,0x0151,0x0110,0x00CF,0x00F0,0x00F0,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00B0,0x00AF,0x00AF, + 0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00D0,0x00AF,0x00AF,0x00AF,0x00D0,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00AF,0x00D0,0x00AF,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00EF,0x0971,0x11D3,0x1A14,0x2A96,0x2275,0x1A14,0x0971,0x00F0,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00F0,0x00D0,0x00CF,0x00CF,0x00AF,0x00D0,0x00CF,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00AF,0x00D0,0x00CF,0x00CF,0x00F0,0x00EF,0x00CF,0x00CF,0x00EF,0x0151,0x1A14,0x3B18,0x32D7,0x11D3,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00F0,0x0992,0x1A55,0x32F7,0x1A34,0x0191,0x0110,0x00EF,0x00CF,0x00CF,0x00CF,0x00AF,0x00EF,0x00EF,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00CF,0x00D0,0x00F0,0x00F0,0x0992,0x32F7,0x2255,0x0151,0x0131,0x00F0,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x0130,0x2AB7,0x2A96,0x0151,0x0110,0x0111,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x0110,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F1,0x00D0,0x00D0,0x00F0,0x0111,0x00F0,0x00F0,0x00F0,0x00F1,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x0151,0x3B18,0x0131,0x0111,0x00F0,0x00F0,0x00CF,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00F1,0x00F1,0x00F1,0x00F1,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x0111,0x00F0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00CF,0x2254,0x11F3,0x0110,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F1,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F1,0x00D0,0x00F1,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x0110,0x00F0,0x2296,0x1A34,0x0110,0x00F0,0x00F0,0x0111,0x00F1,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x0110,0x11B3,0x32F8,0x11D3,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00B0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x08D0,0x08B0,0x18D0,0x186E,0x200D,0x6193,0x9A96,0xA255,0xA1F4,0xAA14,0xA9D3,0xB1D3,0xB1D3,0xA9B3,0xA9B3,0xB1F4,0xA9D3,0xA9D4,0xA9D3,0xB1F3,0xA9D3,0xA9F4,0xAA14,0xA235,0x9A55,0x8276,0x180C,0x106E,0x088F,0x00AF,0x08F0,0x00D0,0x00CF,0x00AF,0x00CF,0x00CF,0x0110,0x0110,0x0192,0x2AD7,0x2255,0x0131,0x0111,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x0110,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00F0,0x00F0,0x00CF,0x0110,0x0130,0x0130,0x0171,0x1234,0x2AB6,0x1A34,0x0130,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00F0,0x00F0,0x0110,0x0110,0x0171,0x1A14,0x3B59,0x2AD7,0x0151,0x00F0,0x00F0,0x00F0,0x00F0,0x00AF,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00CF,0x00D0,0x00CF,0x00CF,0x00AF,0x00F0,0x0110,0x00CF,0x00CF,0x00D0,0x00CF,0x00F0,0x00CF,0x00F0,0x0110,0x00D0,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00F0,0x00F0,0x0110,0x0110,0x0110,0x0150,0x11F3,0x2AD6,0x4379,0x1A34,0x0130,0x0110,0x0110,0x00F0,0x00CF,0x00CF,0x00D0,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00AF,0x00D0,0x00D0,0x00AF,0x00AF,0x00D0, + 0x00D0,0x00D0,0x00D0,0x00F0,0x00AF,0x00B0,0x00AF,0x00AF,0x00AF,0x00D0,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00CF,0x00AF,0x00D0,0x00AF,0x00CF,0x00D0,0x00D0,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00D0,0x00D0,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00F0,0x0151,0x11D3,0x1A14,0x2275,0x2275,0x2254,0x0991,0x0110,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00AF,0x00CF,0x00D0,0x00F0,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00D0,0x00CF,0x00D0,0x00D0,0x00CF,0x00CF,0x00AF,0x00CF,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00AF,0x00B0,0x00AF,0x00AF,0x00CF,0x00CF,0x00EF,0x00EF,0x00CF,0x00F0,0x00EF,0x0130,0x09B2,0x2255,0x32F7,0x1A14,0x00EF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00EF,0x00F0,0x00F0,0x00CF,0x00F0,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00CF,0x00D0,0x00CF,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00F0,0x00D0,0x00D0,0x00CF,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00F0,0x00D0,0x00CF,0x00CF,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00CF,0x00D0,0x00CF,0x00D0,0x00D0,0x00F0,0x00F0,0x0110,0x00EF,0x0130,0x09D3,0x2275,0x2AB6,0x11D3,0x0130,0x00EF,0x00F0,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00AF,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x11B3,0x32D7,0x11F3,0x0130,0x00F0,0x00EF,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00CF,0x00CF,0x00AF,0x00B0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00F0,0x0110,0x11F3,0x2AB6,0x0171,0x0110,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x0111,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x0111,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x1A35,0x2255,0x0111,0x0110,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00AF,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00F1,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x0110,0x00F0,0x00CF,0x00CF,0x00D0,0x00F0,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x1A34,0x1A34,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00CF,0x00F0,0x00CF,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00AF,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00AF,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00CF,0x00CF,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x0110,0x09B2,0x3318,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D1,0x00D0,0x00B0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x0110,0x11F4,0x32F8,0x0172,0x00F0,0x00D0,0x00D0,0x00B0,0x00D0,0x00B0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00B0,0x08D0,0x10D0,0x108F,0x182D,0x40B0,0x9297,0x9A55,0x99F4,0xA1D3,0xA9F3,0xA9F3,0xA9B3,0xA9B3,0xB1D3,0xA9D3,0xA9D4,0xB1F4,0xA9D3,0xA9D3,0xB1F4,0xB1F4,0xAA14,0xA235,0x9A76,0x8235,0x180C,0x106E,0x08AF,0x00CF,0x00CF,0x00F0,0x00F0,0x00F0,0x00F0,0x00EF,0x00F0,0x00F0,0x0110,0x0151,0x2AD7,0x2296,0x0172,0x0131,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x0110,0x00F0,0x00AF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00AF,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00CF,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00D0,0x00CF,0x00F0,0x00F0,0x0110,0x0110,0x0130,0x0130,0x09B2,0x2AD6,0x22B6,0x0171,0x0110,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00CF,0x00AF,0x00CF,0x00D0,0x00CF,0x00D0,0x00CF,0x00AF,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00CF,0x00CF,0x00CF,0x00AF,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00EF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00F0,0x0110,0x0110,0x0110,0x0130,0x1A34,0x3B38,0x1A55,0x0151,0x0110,0x00F0,0x00F0,0x00CF,0x00CF,0x00F0,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00CF,0x00CF,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00F0,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00CF,0x00F0,0x00CF,0x00EF,0x00CF,0x00EF,0x00EF,0x00CF,0x00F0,0x00EF,0x0110,0x0992,0x32D7,0x3318,0x1A34,0x0171,0x0130,0x00F0,0x00F0,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00D0,0x00CF,0x00D0,0x00CF, + 0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00AF,0x00AF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x0110,0x11B2,0x2A75,0x2A96,0x2275,0x1A34,0x09B2,0x0171,0x010F,0x00EF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00F0,0x00F0,0x0110,0x19F3,0x2275,0x2AB6,0x1A34,0x0171,0x0110,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00CF,0x00D0,0x00AF,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00F0,0x00CF,0x00EF,0x00F0,0x00F0,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00F0,0x00CF,0x00D0,0x00D0,0x00F0,0x0110,0x0130,0x0171,0x2255,0x2AD6,0x1A34,0x0171,0x0110,0x00EF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00AF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x0110,0x0110,0x19F4,0x2AB6,0x09B2,0x0150,0x0110,0x00EF,0x00EF,0x00CF,0x00EF,0x00CF,0x00CF,0x00F0,0x00D0,0x00CF,0x00D0,0x00AF,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00CF,0x00D0,0x00F0,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x0110,0x0992,0x32D7,0x09B2,0x0130,0x0110,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00F0,0x00D0,0x00F0,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x32D7,0x11F3,0x0110,0x0110,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00D0,0x00AF,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00CF,0x00D0,0x00D0,0x00F0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x1A34,0x1A34,0x00CF,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00F0,0x00F0,0x00F0,0x00CF,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00F0,0x00F0,0x00CF,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x0110,0x0131,0x3B18,0x0972,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00AF,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x0110,0x0110,0x0131,0x2A96,0x2AD7,0x0131,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00AF,0x00CF,0x00D0,0x00B0,0x08D0,0x18F0,0x102D,0x282D,0x8255,0x9235,0xA214,0xA214,0xA9F4,0xB1F4,0xA9D3,0xB1D3,0xB1F3,0xA9D3,0xB1F4,0xB1F4,0xA9D3,0xA9D3,0xA9D3,0xA9F4,0xAA14,0xA235,0x9A76,0x7A14,0x100C,0x106E,0x088E,0x00AF,0x00AF,0x00CF,0x00F0,0x0110,0x00EF,0x00CF,0x00F0,0x00EF,0x0110,0x0130,0x0171,0x2AD7,0x2AF7,0x0172,0x0131,0x00F0,0x00D0,0x00F0,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00CF,0x00D0,0x00CF,0x00D0,0x00D0,0x00CF,0x00F0,0x00F0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x0130,0x0130,0x0191,0x1234,0x3B38,0x1A14,0x0110,0x0110,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00D0,0x00CF,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00CF,0x00F0,0x00D0,0x00CF,0x00D0,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x0110,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00F0,0x00EF,0x0110,0x0110,0x0171,0x2255,0x3B38,0x1A34,0x0130,0x0110,0x0110,0x0110,0x00F0,0x00F0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00F0,0x00EF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00F0,0x00EF,0x00EF,0x00EF,0x00EF,0x00EF,0x00EF,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x0110,0x0130,0x0191,0x1A55,0x3B59,0x2AB6,0x0992,0x0130,0x00EF,0x0110,0x0110,0x00F0,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00AF, + 0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00EF,0x0130,0x11D3,0x32D6,0x3B18,0x2A95,0x1A34,0x0150,0x010F,0x0130,0x00EF,0x00CE,0x00CE,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00D0,0x00CF,0x00F0,0x00CF,0x00F0,0x00CF,0x0110,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00AF,0x00F0,0x00CF,0x00F0,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x0110,0x0130,0x09B2,0x2A96,0x32D7,0x2A95,0x09B2,0x010F,0x010F,0x00EF,0x00EF,0x00CF,0x00F0,0x00F0,0x00F0,0x00EF,0x00CF,0x00AF,0x00CF,0x00CF,0x00EF,0x00F0,0x0110,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00D0,0x00F0,0x00F0,0x00CF,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00F0,0x00CF,0x00EF,0x00CF,0x00F0,0x00CF,0x00F0,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00F0,0x00AF,0x00D0,0x00D0,0x00CF,0x00CF,0x00AF,0x00CF,0x00D0,0x00CF,0x00CF,0x00F0,0x00F0,0x00CF,0x00AF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x0110,0x11D2,0x3317,0x2AB6,0x0992,0x0110,0x010F,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00D0,0x00D0,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00F0,0x00CF,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00AF,0x00D0,0x00AF,0x00D0,0x00D0,0x00F0,0x00CF,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00AF,0x00D0,0x00B0,0x00F0,0x00D0,0x00D0,0x00AF,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00EF,0x00CF,0x0110,0x0130,0x2255,0x32D7,0x0171,0x0130,0x0130,0x00F0,0x00EF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00F0,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00CF,0x00D0,0x00F0,0x00F0,0x00CF,0x00D0,0x00CF,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00AF,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00CF,0x00CF,0x00F0,0x0110,0x0171,0x32F7,0x09B2,0x0151,0x0110,0x00F0,0x00F0,0x00D0,0x00CF,0x00AF,0x00CF,0x00CF,0x00D0,0x00CF,0x00F0,0x00CF,0x00D0,0x00CF,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00B0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x19F4,0x2A96,0x0151,0x0110,0x00F0,0x00D0,0x00D0,0x00F0,0x00CF,0x00F0,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00D0,0x00CF,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00CF,0x00F0,0x00F0,0x00D0,0x00CF,0x00F0,0x00F0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00CF,0x00D0,0x00F0,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00EF,0x1A54,0x2255,0x00CF,0x00D0,0x00D0,0x00CF,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00CF,0x00F0,0x00CF,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F1,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00CF,0x00D0,0x00AF,0x00D0,0x00F0,0x00F0,0x00D0,0x00CF,0x00CF,0x00F0,0x0110,0x0110,0x1A34,0x2AD7,0x0131,0x0131,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00AF,0x00B0,0x00D0,0x00D0,0x00CF,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00B0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x0110,0x0110,0x0131,0x2AD7,0x1A55,0x0131,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x0110,0x00F0,0x00CF,0x00CF,0x00CF,0x00F0,0x00F0,0x00F0,0x00CF,0x00CF,0x00F0,0x00D0,0x00AF,0x00D0,0x00D0,0x00F0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00F0,0x00F0,0x00CF,0x00AF,0x00D0,0x00B0,0x08B0,0x10D0,0x104E,0x180C,0x69B3,0x9255,0x9A35,0xA214,0xA1F3,0xA9D3,0xA9F3,0xA9D3,0xA9D3,0xA9D3,0xB1F4,0xB214,0xA9D3,0xA9D3,0xA9D3,0xAA14,0xA1F3,0xA234,0x9A55,0x71D3,0x180C,0x108E,0x08AE,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x0110,0x0110,0x0130,0x0130,0x2296,0x2AD7,0x0171,0x0130,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00AF,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00F0,0x00CF,0x00D0,0x00D0,0x00F0,0x00CF,0x00D0,0x00D0,0x00F0,0x00CF,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00F0,0x00CF,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00AF,0x00D0,0x00CF,0x00D0,0x00CF,0x00F0,0x00CF,0x00D0,0x00CF,0x0110,0x00F0,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00F0,0x00EF,0x00F0,0x0110,0x0130,0x0151,0x11F3,0x3B38,0x2AD6,0x0151,0x0110,0x00F0,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00F0,0x00F0,0x00F0,0x00CF,0x0110,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00F0,0x00CF,0x00F0,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00F0,0x00F0,0x00CF,0x00CF,0x00F0,0x00D0,0x00CF,0x00CF,0x00F0,0x00D0,0x00D0,0x00CF,0x00F0,0x00F0,0x00D0,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00D0,0x00CF,0x00CF,0x00EF,0x00F0,0x00CF,0x00F0,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x0110,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x0110,0x0130,0x0130,0x09B2,0x32F7,0x32F7,0x1213,0x0151,0x0110,0x00EF,0x00CF,0x00EF,0x00CF,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00EF,0x0110,0x00EF,0x00EF,0x00F0,0x00EF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00EF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00EF,0x00F0,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x0110,0x0130,0x0110,0x010F,0x0150,0x2275,0x3B38,0x3338,0x1A54,0x0191,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AF, + 0x00F0,0x00D0,0x00D0,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x0110,0x0130,0x11D3,0x2275,0x2255,0x11F3,0x0991,0x0130,0x010F,0x010F,0x010F,0x00EF,0x00CE,0x00CE,0x00CE,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00F0,0x00EF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00CF,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00AF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00F0,0x00EF,0x010F,0x010F,0x0130,0x0992,0x2275,0x2AB6,0x1213,0x0151,0x0130,0x010F,0x00EF,0x00EF,0x00CF,0x00EF,0x00EF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00EF,0x00CF,0x00F0,0x00EF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00F0,0x00F0,0x0110,0x2255,0x32D7,0x0991,0x0130,0x010F,0x00EF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00F0,0x00F0,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00CF,0x00D0,0x00CF,0x00D0,0x00F0,0x00CF,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x0110,0x0130,0x2AB6,0x2AB6,0x0130,0x0130,0x0130,0x00EF,0x00CF,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00F0,0x00D0,0x00CF,0x00CF,0x00D0,0x00CF,0x00D0,0x00CF,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00CF,0x00F0,0x00CF,0x00D0,0x00F0,0x00F0,0x00CF,0x00F0,0x00F0,0x00CF,0x00F0,0x00F0,0x00CF,0x00D0,0x00D0,0x00D0,0x00CF,0x00F0,0x00CF,0x00D0,0x00CF,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00CF,0x00D0,0x00CF,0x00D0,0x00D0,0x00CF,0x00F0,0x00EF,0x00F0,0x00F0,0x0110,0x2295,0x1A34,0x0130,0x0110,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00F0,0x00D0,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00CF,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00F0,0x00CF,0x00D0,0x00D0,0x00F0,0x0110,0x0110,0x2A96,0x19F4,0x0110,0x00D0,0x00F0,0x00F0,0x00CF,0x00F0,0x00F0,0x00EF,0x00EF,0x00EF,0x00CF,0x00CF,0x00F0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00CF,0x00F0,0x00F0,0x00F0,0x00CF,0x00F0,0x00CF,0x00F0,0x00CF,0x00F0,0x00D0,0x00F0,0x00CF,0x00D0,0x00CF,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00CF,0x00AF,0x00CF,0x00F0,0x1A34,0x2296,0x00CF,0x00D0,0x00CF,0x00F0,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00CF,0x00CF,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00F0,0x0110,0x0110,0x0130,0x32F7,0x09D3,0x0130,0x00F0,0x00CF,0x00F0,0x00CF,0x00D0,0x00F0,0x00CF,0x00D0,0x00F0,0x00CF,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00CF,0x00D0,0x00F0,0x00CF,0x00D0,0x00F0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00F0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00D0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00D0,0x00F0,0x00F0,0x00D0,0x00D0,0x00CF,0x00CF,0x00F0,0x00F0,0x00F0,0x0110,0x00EF,0x0192,0x32F7,0x11D3,0x0110,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00CF,0x00CF,0x00F0,0x00CF,0x00F0,0x00EF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00D0,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00AF,0x08D0,0x00B0,0x08AF,0x108F,0x100C,0x48F0,0x9276,0x9A35,0xA214,0xA1F3,0xA9F3,0xA9F3,0xA9F3,0xA9D3,0xA9D3,0xB1F4,0xB1F4,0xA9D3,0xA9D3,0xA9F4,0xA9F4,0xAA34,0xA214,0x9A96,0x6192,0x100C,0x108E,0x00AE,0x00AE,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00F0,0x00EF,0x0130,0x1A34,0x2AB6,0x0192,0x0130,0x0110,0x00F0,0x00F0,0x00F0,0x00CF,0x00F0,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00F0,0x00D0,0x00D0,0x00CF,0x00EF,0x00EF,0x00CF,0x00F0,0x00F0,0x00CF,0x00D0,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00D0,0x00F0,0x00CF,0x00AF,0x00AF,0x00D0,0x00CF,0x00CF,0x00F0,0x00EF,0x00F0,0x00EF,0x0110,0x0110,0x0130,0x0171,0x11F3,0x32D7,0x11D3,0x0110,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00F0,0x00F0,0x00CF,0x00EF,0x00EF,0x00CF,0x00CF,0x00EF,0x00EF,0x00CF,0x00CF,0x00F0,0x00CF,0x00EF,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00F0,0x00F0,0x00EF,0x00F0,0x00D0,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00F0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00EF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00F0,0x00F0,0x010F,0x0130,0x0191,0x2275,0x3B38,0x11F3,0x0110,0x00F0,0x00EF,0x00EF,0x00F0,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00F0,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00CF,0x00CF,0x00F0,0x00EF,0x00CF,0x00EF,0x00EF,0x00CF,0x00F0,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00F0,0x00EF,0x00CF,0x00CF,0x00EF,0x00EF,0x00EF,0x00EF,0x00EF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00CF,0x00F0,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00EF,0x00EF,0x00CF,0x00CF,0x00AF,0x00AE,0x00CF,0x00CF,0x00EF,0x00F0,0x00EF,0x00EF,0x010F,0x010F,0x010F,0x0150,0x01B2,0x1A74,0x3317,0x2254,0x0151,0x00F0,0x0110,0x00F0,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF, + 0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00F0,0x00F0,0x0110,0x0110,0x0151,0x09D3,0x1A34,0x1A14,0x0171,0x0110,0x010F,0x00EF,0x00EF,0x00EF,0x00EF,0x00CE,0x00CE,0x00CE,0x00CF,0x00CE,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x0110,0x0110,0x010F,0x0130,0x0191,0x1234,0x2275,0x1213,0x0130,0x010F,0x010F,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AE,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AE,0x00AE,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00F0,0x00F0,0x0110,0x0130,0x09B2,0x2AB6,0x1A34,0x0130,0x00EF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00AF,0x00CF,0x00AF,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00F0,0x0110,0x00F0,0x0110,0x00F0,0x0131,0x2275,0x2255,0x0110,0x010F,0x010F,0x00EF,0x00EF,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00EF,0x00EF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x0110,0x0110,0x00F0,0x0110,0x0110,0x11D2,0x2AF7,0x0171,0x0110,0x00EF,0x00CF,0x00EF,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00D0,0x00D0,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00D0,0x00D0,0x00D0,0x00F0,0x00D0,0x00CF,0x00D0,0x00D0,0x00F0,0x00F0,0x0172,0x2A96,0x0972,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00F0,0x00CF,0x00F0,0x00D0,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00AF,0x00AF,0x00D0,0x00D0,0x00D0,0x00CF,0x00D0,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x0992,0x1A14,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00AF,0x00AF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00F0,0x00F0,0x00EF,0x00EF,0x00F0,0x00D0,0x00AF,0x00AF,0x00D0,0x00AF,0x00D0,0x00F0,0x00F0,0x00CF,0x00CF,0x00CF,0x00F0,0x00F0,0x0110,0x00EF,0x1A34,0x1A55,0x00F0,0x00EF,0x00CF,0x00CF,0x00CF,0x00F0,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00D0,0x00CF,0x00CF,0x00F0,0x00D0,0x00CF,0x00CF,0x00D0,0x00CF,0x00F0,0x00F0,0x00CF,0x00D0,0x00CF,0x00CF,0x00D0,0x00D0,0x00CF,0x00EF,0x00F0,0x00EF,0x0130,0x1A34,0x1A55,0x0151,0x0110,0x00EF,0x00EF,0x00CF,0x00EF,0x00EF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00D0,0x08D0,0x00D0,0x08AF,0x088F,0x104D,0x304E,0x8A76,0x9255,0x9A14,0xA214,0xAA13,0xA1B2,0xA9D3,0xA9F3,0xB1F4,0xA9F4,0xB1F4,0xA9D3,0xA9B3,0xA9F4,0xA9F4,0xA1F4,0x9A14,0x9A96,0x5951,0x100C,0x086D,0x08AE,0x00CF,0x00CF,0x00CF,0x00AF,0x00AE,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00EF,0x00EF,0x00EF,0x00EF,0x010F,0x1A34,0x2AD7,0x09B2,0x0130,0x00EF,0x00EF,0x00EF,0x00F0,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00EF,0x010F,0x0110,0x0110,0x0151,0x2AD6,0x2275,0x0171,0x0110,0x00EF,0x00EF,0x00CF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00AF,0x00AF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00F0,0x00F0,0x00CF,0x00AF,0x00EF,0x00EF,0x00EF,0x010F,0x0991,0x2AB6,0x2AB6,0x0192,0x0130,0x0110,0x00F0,0x00EF,0x00F0,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AE,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00CF,0x00CF,0x00EF,0x010F,0x0110,0x010F,0x0130,0x11D3,0x1A34,0x1213,0x09B2,0x0150,0x0110,0x00EF,0x00EF,0x00EF,0x00CF, + 0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00CF,0x00AE,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00CE,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x0130,0x09B2,0x1A54,0x2295,0x1213,0x01D2,0x0171,0x0130,0x010F,0x00EF,0x00EF,0x00CE,0x00CE,0x00AE,0x00CE,0x00AE,0x00CE,0x00CE,0x00CE,0x00CE,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CF,0x00CF,0x00CF,0x00AF,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00CF,0x00CE,0x00CE,0x00CE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00CE,0x00CE,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00EF,0x00EF,0x00EF,0x0130,0x0191,0x1A54,0x1A74,0x09F2,0x0191,0x0150,0x0130,0x00EF,0x00CE,0x00CE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CF,0x00CE,0x00CE,0x00AE,0x00CF,0x00CF,0x00CF,0x00CF,0x00CE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x00AF,0x00AF,0x00CF,0x00AF,0x00AE,0x00CE,0x00CE,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00CF,0x00EF,0x00EF,0x00EF,0x0110,0x0171,0x2296,0x1A75,0x09B2,0x0130,0x00EF,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00CE,0x00CE,0x00CF,0x00AE,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00CF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x0110,0x0130,0x2296,0x09B2,0x0150,0x010F,0x00EF,0x00CE,0x00CE,0x00CF,0x00CF,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AE,0x00CF,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00AE,0x00AF,0x00CF,0x00AF,0x00CF,0x00CF,0x00EF,0x00EF,0x010F,0x0110,0x0130,0x1A75,0x09D2,0x0130,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AE,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x008E,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x00AF,0x00CF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AF,0x00AF,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00F0,0x00EF,0x0191,0x09D2,0x0130,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AE,0x00AF,0x00CF,0x00CE,0x00CE,0x00CF,0x00CE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CF,0x00AF,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AF,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x0110,0x09D3,0x00F0,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x008E,0x008F,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AF,0x008E,0x008F,0x008F,0x008E,0x008E,0x00AF,0x00AE,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x0150,0x2275,0x00EF,0x00EF,0x00CF,0x00EF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00CF,0x00CF,0x00CE,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AE,0x00AE,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x0110,0x0150,0x09D2,0x0171,0x0151,0x010F,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x006E,0x082D,0x200D,0x69B3,0x9296,0x9A34,0xA214,0xA1F3,0xA9F3,0xA9F3,0xA9D3,0xA9F3,0xB1F4,0xB1F4,0xA9D3,0xB1F4,0xA9F4,0xAA14,0xA1F4,0x9A14,0x9A96,0x48CF,0x080B,0x006D,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00CF,0x010F,0x09F3,0x1234,0x0191,0x0130,0x0130,0x00EF,0x00EF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x008E,0x008E,0x00AF,0x00AF,0x008E,0x00AF,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CF,0x00CF,0x00CF,0x00AF,0x00AE,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00EF,0x00EF,0x00EF,0x0110,0x0130,0x1A75,0x22D6,0x09D2,0x0130,0x0130,0x0110,0x00EF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CF,0x00CF,0x00CE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00CF,0x00CF,0x00EF,0x00EF,0x00CF,0x00AE,0x00AE,0x00AE,0x00CE,0x00EF,0x00EF,0x010F,0x0130,0x09D2,0x1A75,0x1A54,0x09B2,0x0151,0x0130,0x0110,0x0110,0x00EF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00CE,0x00CF,0x00CF,0x00CE,0x00CE,0x00CE,0x00CE,0x00EF,0x00EF,0x00EF,0x00CF,0x00CF,0x00CE,0x00CF,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00CF,0x00CF,0x00CF,0x00CF,0x00CF,0x00AE,0x00CE,0x00CE,0x00CE,0x00CF,0x00CF,0x00CF,0x00CF,0x00AE,0x00AF,0x00AE,0x00CF,0x00CF,0x00EF,0x00CF,0x00CF,0x00EF,0x010F,0x010F,0x010F,0x0130,0x0150,0x1234,0x1A95,0x22B5,0x1213,0x0171,0x0130,0x0110,0x0130, + 0x2A96,0x32D7,0x3AD6,0x3AD6,0x3B17,0x3B17,0x3B17,0x3B17,0x3B17,0x3B37,0x4337,0x4337,0x4337,0x3B17,0x3B17,0x3B17,0x3B17,0x32D6,0x3B17,0x32F6,0x2AD6,0x2AB6,0x2275,0x2254,0x1213,0x1A33,0x11F3,0x1213,0x1213,0x1213,0x2295,0x2AD6,0x3317,0x3337,0x3337,0x3378,0x3B78,0x4399,0x4399,0x4399,0x4399,0x4379,0x4B99,0x4B99,0x4B78,0x4338,0x4358,0x4358,0x4337,0x4337,0x4317,0x4337,0x4337,0x4338,0x4337,0x4337,0x4337,0x4317,0x4338,0x4317,0x4317,0x4317,0x3AF7,0x3AD6,0x3AF7,0x4317,0x3AF6,0x3AF6,0x3AF6,0x32B6,0x3AF7,0x4317,0x3B17,0x3AF7,0x3B17,0x4317,0x3B17,0x3B17,0x4337,0x4358,0x4338,0x3B17,0x4338,0x4317,0x3B17,0x4337,0x4317,0x4317,0x3B17,0x3AF7,0x3AF7,0x42F7,0x4317,0x4317,0x4317,0x3B17,0x3B17,0x3AF7,0x3B17,0x3AF7,0x3AF7,0x32D6,0x3AD7,0x32B6,0x2A95,0x2A95,0x1A34,0x1A13,0x11F2,0x1A33,0x1213,0x1A54,0x1A74,0x22B5,0x2B17,0x2B17,0x2B37,0x3B78,0x3B78,0x3B78,0x4378,0x3B38,0x4379,0x4358,0x4358,0x4338,0x3AF7,0x3AD7,0x4317,0x4338,0x3AF7,0x3B17,0x4337,0x4337,0x4358,0x4B78,0x4B78,0x4B58,0x4B79,0x4B79,0x4B79,0x4358,0x4358,0x4B58,0x4B58,0x4358,0x4B79,0x4B79,0x4B99,0x5399,0x4B79,0x4358,0x4B79,0x4B79,0x4B79,0x4358,0x4378,0x4B79,0x4358,0x4358,0x4378,0x4358,0x4B59,0x4358,0x4338,0x4338,0x4337,0x3B17,0x4338,0x4317,0x4338,0x4338,0x4338,0x4318,0x4338,0x3AF7,0x4317,0x3B17,0x3AF7,0x3AF7,0x3AD7,0x32D6,0x3AF7,0x3AD6,0x3AF7,0x32F6,0x3AF7,0x32D7,0x2A96,0x2275,0x1A34,0x1A54,0x1A54,0x2295,0x1A54,0x2295,0x3338,0x3317,0x32F7,0x3B58,0x4BB9,0x4399,0x4379,0x4358,0x4338,0x3B17,0x4B59,0x4B58,0x4317,0x4338,0x4317,0x4338,0x4338,0x4338,0x3AF7,0x4318,0x3AF7,0x42F7,0x4B58,0x4318,0x4318,0x4358,0x3AD7,0x3AF7,0x4B79,0x4B99,0x4358,0x4358,0x4358,0x4B99,0x4B99,0x5399,0x4B99,0x53BA,0x4B99,0x53B9,0x5399,0x5399,0x5399,0x53BA,0x53B9,0x53BA,0x53BA,0x53BA,0x53BA,0x53BA,0x53BA,0x53BA,0x5399,0x53BA,0x53DA,0x53BA,0x5399,0x5399,0x5399,0x4B79,0x53BA,0x53BA,0x4B79,0x4B59,0x4B59,0x4358,0x4338,0x3AF7,0x3B17,0x3B17,0x3AF7,0x32D7,0x32D7,0x32B6,0x2A96,0x2A95,0x2234,0x1A54,0x1A34,0x1A34,0x11F3,0x1A34,0x4359,0x3B38,0x3B38,0x4358,0x4358,0x3B58,0x3B58,0x3317,0x32F7,0x32B6,0x3AF7,0x4358,0x3AD7,0x3AD7,0x3B18,0x3B18,0x4338,0x4B58,0x3B17,0x3B17,0x4358,0x4338,0x4B79,0x4B79,0x4338,0x4B59,0x4B79,0x4358,0x4B79,0x4B99,0x4B99,0x4B99,0x4B79,0x4B99,0x53B9,0x5399,0x4B79,0x4B99,0x4B79,0x5399,0x5399,0x4B79,0x5399,0x5399,0x5399,0x5399,0x4B99,0x4B99,0x4B99,0x4BB9,0x4B99,0x5399,0x5399,0x4B99,0x5399,0x5399,0x53BA,0x53B9,0x4B99,0x4B79,0x4B99,0x4B99,0x4B99,0x4B79,0x4B78,0x4B58,0x4358,0x4358,0x4B58,0x4358,0x3B17,0x3B17,0x4338,0x4317,0x4338,0x3B17,0x32B6,0x2A96,0x2AB5,0x2AB6,0x2275,0x1A75,0x3317,0x3338,0x3B79,0x3B79,0x3317,0x32D6,0x32D7,0x32F7,0x32B6,0x32D7,0x3AF7,0x3B17,0x3AF7,0x3B17,0x3AF7,0x3AF7,0x4338,0x3B17,0x4318,0x4B58,0x32D6,0x3AD7,0x4B58,0x4B79,0x4338,0x4338,0x4358,0x4B99,0x4B79,0x4B58,0x4B78,0x4B99,0x4B78,0x4B78,0x4B79,0x4B79,0x4B78,0x4B99,0x4B79,0x4B79,0x4B78,0x4B78,0x4B78,0x5399,0x4B99,0x5399,0x5399,0x5399,0x4B99,0x5399,0x4B99,0x53B9,0x4B99,0x4B99,0x4B79,0x5399,0x4B99,0x4B79,0x4B99,0x4B99,0x4B58,0x4B99,0x4B78,0x4B79,0x4B99,0x4B78,0x4B79,0x4B79,0x4B78,0x4B79,0x4B79,0x4338,0x4338,0x4358,0x3B18,0x3AF7,0x3B38,0x32F7,0x32D6,0x32D6,0x2A95,0x2275,0x3B38,0x3337,0x3B38,0x3B38,0x3317,0x3317,0x3B17,0x3B38,0x32F7,0x3B17,0x32F7,0x32F6,0x3B17,0x4337,0x3AF7,0x3AF7,0x4338,0x3B17,0x4338,0x4B59,0x4317,0x4317,0x4358,0x4358,0x4338,0x4B58,0x4B79,0x4B79,0x4B79,0x4B79,0x4B99,0x4B99,0x4B99,0x4B99,0x4B99,0x4BB9,0x4B99,0x5399,0x4B99,0x4BB9,0x4B99,0x4B99,0x4B99,0x53B9,0x4B99,0x4B79,0x4B99,0x4B99,0x4B78,0x4B79,0x4BB9,0x4B99,0x4B79,0x4B99,0x4379,0x4B79,0x4B79,0x4B79,0x4B79,0x4B99,0x4B79,0x4B99,0x4B99,0x4BB9,0x4B99,0x53BA,0x53BA,0x53BA,0x539A,0x53BA,0x53BA,0x53BA,0x53BA,0x53BA,0x4B59,0x4B59,0x539A,0x4B59,0x4338,0x4338,0x3AF7,0x32D7,0x1A55,0x3338,0x3B38,0x4359,0x3318,0x32F7,0x3AF7,0x4338,0x4338,0x4359,0x4359,0x4B79,0x4358,0x4B79,0x4359,0x4B59,0x4359,0x4359,0x4358,0x4358,0x4358,0x4358,0x4358,0x4B79,0x4358,0x4358,0x4338,0x4B58,0x4358,0x4358,0x4B58,0x4B58,0x4358,0x4358,0x4B58,0x4B79,0x4358,0x4B78,0x4B79,0x4B79,0x4B79,0x4B99,0x4B99,0x4B79,0x4B58,0x4B78,0x4B79,0x4B79,0x4B78,0x4B79,0x4B79,0x4B79,0x4B59,0x4B59,0x4338,0x4B59,0x4B59,0x4358,0x4B79,0x4B79,0x4B59,0x4B79,0x4359,0x4358,0x4B99,0x4B99,0x4B79,0x4359,0x4338,0x4B79,0x4338,0x3AF7,0x4B79,0x539A,0x42F7,0x3AF7,0x4B79,0x4B99,0x4B79,0x4338,0x32D6,0x32F7,0x32F7,0x3317,0x2295,0x3358,0x1A75,0x2295,0x32F7,0x32F7,0x3B18,0x3B38,0x3B18,0x4359,0x4359,0x4B79,0x4379,0x4359,0x4B79,0x4B79,0x4338,0x4B59,0x4B79,0x4358,0x4358,0x4358,0x4338,0x4358,0x4B59,0x4358,0x4B79,0x4B79,0x4378,0x4B79,0x4379,0x4B79,0x4359,0x4B79,0x4B99,0x4B99,0x4B99,0x4BB9,0x5399,0x53B9,0x4B99,0x4B99,0x4B99,0x4B99,0x4B78,0x4B99,0x4B99,0x4B79,0x4B78,0x4B78,0x4B78,0x4B78,0x4B78,0x4B78,0x4B79,0x4B79,0x4B78,0x4B79,0x4B99,0x4B79,0x4358,0x4B58,0x4B79,0x4338,0x4358,0x4B79,0x4318,0x4318,0x4B79,0x539A,0x4B79,0x4B59,0x5379,0x4B59,0x4B59,0x4B59,0x3B17,0x3B17,0x4338,0x4358,0x3B58,0x2AD6,0x1A95,0x2AF7,0x1A75,0x1254,0x2295,0x2275,0x2275,0x2275,0x32D7,0x3B17,0x32D7,0x32D6,0x3AF7,0x3AF7,0x4317,0x4337,0x4338,0x4358,0x4B79,0x4B99,0x4B59,0x4B58,0x4358,0x4B79,0x4B99,0x5399,0x4B58,0x4B59,0x539A,0x4B79,0x53DA,0x5BFB,0x4B58,0x4338,0x53DA,0x5BDA,0x4317,0x4317,0x3AD6,0x3AB6,0x4AD7,0x6318,0x7AF8,0x61D3,0x92B6,0x9234,0x9A34,0xA214,0xA1F3,0xA9F3,0xA9D3,0xA9F3,0xA9F4,0xA9D3,0xA993,0xA9B3,0xB215,0xAA14,0xA214,0x9A14,0x9AB6,0x5171,0x62D6,0x52D6,0x4B17,0x5399,0x5BBA,0x63FB,0x53BA,0x53BA,0x53BA,0x5399,0x5399,0x4B79,0x4318,0x3B18,0x4358,0x4359,0x4358,0x3317,0x3338,0x2B17,0x22D6,0x2B17,0x2295,0x1213,0x1A75,0x22B6,0x2AB6,0x32B6,0x32D7,0x32F7,0x32D7,0x32D7,0x3B18,0x3AF7,0x3AF7,0x3AF7,0x3AF7,0x3AF7,0x4318,0x4318,0x4358,0x4B58,0x4358,0x4317,0x4358,0x4B78,0x4338,0x4338,0x4358,0x4B79,0x4B58,0x4B58,0x4B79,0x53BA,0x5399,0x5399,0x53B9,0x53B9,0x5399,0x53BA,0x5399,0x4B79,0x5399,0x5399,0x4B79,0x4B79,0x4358,0x4B78,0x4B99,0x4B99,0x4B78,0x4B79,0x4B79,0x4B99,0x4B99,0x5399,0x4B79,0x4B79,0x4B79,0x5379,0x4B58,0x4B59,0x4B38,0x4338,0x4B58,0x4338,0x4358,0x4358,0x4318,0x4338,0x4338,0x4B59,0x4358,0x3B38,0x3B17,0x3B38,0x3B38,0x3B38,0x3B38,0x3317,0x22D6,0x1A95,0x2AF7,0x3378,0x22D6,0x1254,0x1234,0x22B6,0x32D7,0x32D7,0x32D7,0x32D7,0x32D7,0x32D7,0x3AF7,0x32D7,0x3AF7,0x3B17,0x3AF7,0x3AF7,0x3B17,0x4358,0x4358,0x4317,0x4338,0x4338,0x4338,0x4338,0x4338,0x4317,0x4338,0x4338,0x4338,0x3B17,0x4317,0x4338,0x4338,0x4338,0x4B58,0x4B79,0x4B79,0x4B99,0x5399,0x5399,0x4B99,0x4B99,0x539A,0x4B99,0x4B79,0x4B79,0x4B58,0x4B79,0x4B79,0x4338,0x4358,0x4338,0x4338,0x4358,0x4337,0x4317,0x4337,0x4317,0x4338,0x3B17,0x3AF7,0x3B17,0x3B17,0x3B17,0x4317,0x3B17,0x3B17,0x4318,0x4338,0x4338,0x4358,0x4358,0x3B38,0x4378,0x4399,0x4399,0x43B9,0x3B78,0x3B58,0x3358,0x3B79,0x3B58,0x22B6,0x1A54,0x11F3,0x1214,0x1A34,0x2255,0x2275,0x2255,0x2A76,0x2A76,0x2A96,0x32B6,0x32B6,0x32B6,0x32D6,0x32D6,0x3AF7,0x3AF7,0x3B17,0x3B17,0x3B17,0x3AF7,0x4338,0x4338,0x4337,0x3B17,0x4317,0x4337,0x4317,0x4317,0x3B17,0x3AF6,0x4317,0x3B17,0x3B17,0x3B17,0x3B17,0x3B17,0x3B37,0x3317,0x3AF7,0x3B17,0x3B17,0x3B17,0x4337,0x4338,0x4338,0x4338,0x4358,0x4338,0x4B79,0x4B58,0x4B58,0x4B58,0x4338,0x4358,0x4B58,0x4338,0x4358,0x4338,0x4338,0x4317,0x4337,0x4338,0x4358,0x3B37,0x4338,0x4338,0x3B38,0x4358,0x4B79,0x4379,0x3B38,0x4378,0x4B99,0x4378,0x4BBA,0x4BBA,0x3B78,0x3337,0x3337,0x3B78,0x3317,0x2AD6,0x1A74,0x09F3, + 0x11B2,0x11B2,0x0971,0x0971,0x11B2,0x11B1,0x19F2,0x19F2,0x19F2,0x11D2,0x19F2,0x11D2,0x19F3,0x19D2,0x19F2,0x19F2,0x1A13,0x1A13,0x1A33,0x1A33,0x1A54,0x2254,0x2274,0x2A95,0x2AD6,0x3317,0x2AD6,0x22B6,0x22B5,0x2AF6,0x3317,0x22B5,0x1A33,0x11F2,0x09B2,0x09B1,0x09D2,0x0991,0x0991,0x0990,0x0971,0x0970,0x0991,0x0971,0x1191,0x1191,0x11B2,0x1191,0x11B2,0x1191,0x19D2,0x11B2,0x11B1,0x1191,0x11B1,0x11B1,0x11B2,0x1191,0x11B2,0x0971,0x1191,0x1191,0x19B2,0x1192,0x19D2,0x11B1,0x19D2,0x11B1,0x11B2,0x1191,0x11B2,0x1191,0x11B2,0x1191,0x11B2,0x1191,0x11B2,0x0991,0x1191,0x0991,0x11B2,0x11B1,0x11D2,0x1191,0x11B1,0x1191,0x1191,0x1191,0x19B2,0x11B1,0x19B2,0x1191,0x19D2,0x19B2,0x19D2,0x19B2,0x19D2,0x19D2,0x19F3,0x19D2,0x19F3,0x19F3,0x2213,0x2213,0x1A34,0x2254,0x2275,0x2A95,0x2AB5,0x3337,0x2AD5,0x22B5,0x22D6,0x2295,0x2295,0x1233,0x11F2,0x09D2,0x09B1,0x0991,0x0971,0x0971,0x0991,0x0971,0x1191,0x0971,0x11B2,0x11B2,0x19D2,0x19D2,0x19D2,0x1191,0x11D2,0x1191,0x11B1,0x0971,0x1191,0x0971,0x1191,0x0971,0x11B2,0x0971,0x1191,0x0971,0x1191,0x1191,0x1191,0x1191,0x11B1,0x0971,0x11B2,0x1191,0x1192,0x0991,0x11B2,0x1191,0x11B2,0x09B1,0x11B2,0x0991,0x11B2,0x1191,0x11B2,0x1191,0x11B2,0x1191,0x11B2,0x11B2,0x19D2,0x11B2,0x19B2,0x11B2,0x19B2,0x1191,0x19B2,0x1192,0x19D2,0x19D2,0x2213,0x19F3,0x2213,0x19F3,0x19F3,0x19F3,0x19F3,0x19F2,0x19F3,0x1A13,0x1A34,0x2255,0x2275,0x2AB6,0x1A54,0x1213,0x3317,0x32F7,0x1213,0x09B2,0x09B2,0x0992,0x0991,0x0971,0x0971,0x0971,0x0951,0x0971,0x19D2,0x11B2,0x11D2,0x1192,0x11B2,0x11B2,0x19D2,0x1192,0x19B2,0x1192,0x11B2,0x1192,0x19B2,0x19B2,0x19F3,0x19D3,0x11B2,0x11B2,0x11D2,0x19F3,0x19D2,0x1191,0x11B2,0x1192,0x11B2,0x0991,0x11B1,0x1191,0x1191,0x1191,0x11B1,0x1191,0x11B2,0x1171,0x1191,0x1191,0x1191,0x1171,0x1191,0x1191,0x1191,0x0971,0x1191,0x0971,0x1191,0x0971,0x1191,0x1191,0x1191,0x0971,0x1191,0x0971,0x1192,0x0971,0x1191,0x11B2,0x19D3,0x19B2,0x19D3,0x19D3,0x19F3,0x19D3,0x19F3,0x19F3,0x1A13,0x2234,0x2254,0x2A95,0x2274,0x2295,0x2AB6,0x3B58,0x2275,0x0991,0x0991,0x0971,0x0991,0x0991,0x09B1,0x09B2,0x11D2,0x11B2,0x11B2,0x1192,0x11B2,0x1191,0x1192,0x0991,0x11B2,0x1191,0x11B2,0x1191,0x11B2,0x1191,0x11B2,0x1191,0x1192,0x1191,0x11B2,0x0971,0x1191,0x0991,0x1191,0x0971,0x1191,0x0971,0x1191,0x0971,0x1191,0x1191,0x1191,0x0971,0x1191,0x0971,0x1191,0x1171,0x1191,0x0971,0x11B1,0x0991,0x11B1,0x0991,0x1191,0x0970,0x1191,0x0971,0x1191,0x0970,0x0971,0x0971,0x1191,0x0991,0x11B1,0x1191,0x11B1,0x1191,0x11B2,0x1191,0x11B1,0x1191,0x1191,0x0971,0x11B1,0x11B1,0x11B2,0x11B2,0x11D2,0x11B2,0x19D3,0x19F3,0x11D2,0x11F3,0x11F3,0x2AD6,0x1A34,0x09F3,0x09B2,0x0991,0x0991,0x0991,0x11B2,0x0992,0x11B2,0x0991,0x11B2,0x1192,0x11B2,0x1191,0x1192,0x1191,0x11B2,0x1192,0x11B2,0x11B2,0x1191,0x1191,0x11B2,0x11B2,0x11B2,0x0971,0x1191,0x0971,0x1191,0x0970,0x1191,0x0971,0x1191,0x0970,0x1191,0x0971,0x1191,0x0971,0x1191,0x0971,0x1191,0x0971,0x1191,0x1171,0x1191,0x0971,0x1191,0x0971,0x1191,0x0971,0x1191,0x0971,0x1191,0x0971,0x1191,0x0971,0x1191,0x1191,0x11B2,0x0991,0x1191,0x0971,0x1191,0x0991,0x11B1,0x0991,0x1191,0x0971,0x1191,0x0991,0x11B1,0x0971,0x1191,0x1192,0x1192,0x11B2,0x19F3,0x19F3,0x11D3,0x11D3,0x11D2,0x2AB6,0x2AD6,0x09D2,0x09D2,0x09B2,0x0191,0x0992,0x09B2,0x09B2,0x11B2,0x11B2,0x11D2,0x11B1,0x11B2,0x11B2,0x11D2,0x11B2,0x19D2,0x11B2,0x19B2,0x11B2,0x19B2,0x1191,0x11B2,0x11B2,0x11B2,0x1191,0x11B1,0x0991,0x11B2,0x0991,0x1191,0x0991,0x1191,0x0991,0x1191,0x0971,0x1191,0x0971,0x0991,0x0971,0x1191,0x0991,0x0991,0x0991,0x1191,0x0971,0x0991,0x0991,0x1191,0x0971,0x11B2,0x0991,0x11B2,0x11B2,0x11B2,0x0991,0x11B2,0x11B2,0x11B2,0x0991,0x11B2,0x1191,0x11B2,0x0991,0x1191,0x0991,0x0991,0x0971,0x0991,0x0971,0x0991,0x0971,0x0991,0x0971,0x0971,0x1192,0x19B2,0x19D3,0x11B2,0x1192,0x0971,0x0971,0x1A54,0x2AF7,0x11D3,0x19F3,0x11D3,0x11D3,0x11D3,0x11D3,0x11D2,0x11B2,0x11D2,0x11B2,0x11B2,0x11B2,0x11B2,0x11B2,0x11B2,0x11B2,0x11D2,0x11B2,0x11D2,0x11B1,0x11B2,0x11B1,0x11B2,0x1191,0x11B2,0x0991,0x1191,0x0991,0x1191,0x0991,0x11B1,0x0991,0x1191,0x1191,0x1191,0x0991,0x1191,0x0991,0x1191,0x0971,0x1191,0x0971,0x1191,0x0991,0x11B1,0x0991,0x1191,0x0991,0x1191,0x0991,0x1191,0x1191,0x1192,0x1192,0x11B2,0x0991,0x11B2,0x1191,0x11B2,0x0991,0x11B2,0x0991,0x11B2,0x0991,0x11B2,0x0991,0x0992,0x0991,0x1192,0x0971,0x1171,0x1171,0x1171,0x0971,0x0971,0x11B2,0x19D2,0x11B2,0x11B2,0x0992,0x09B2,0x11F3,0x11D3,0x1213,0x2AD6,0x1234,0x11F3,0x11F3,0x11D3,0x09B2,0x11B2,0x0992,0x0992,0x0991,0x0991,0x0971,0x11B2,0x11B2,0x1192,0x0971,0x11B2,0x1192,0x11B2,0x1192,0x11B2,0x1192,0x11B2,0x1192,0x11B2,0x1192,0x11B2,0x0991,0x11B2,0x0991,0x11B2,0x0991,0x1192,0x0971,0x0991,0x0991,0x0991,0x0971,0x1191,0x0991,0x1191,0x0991,0x1191,0x0991,0x11B1,0x0991,0x1191,0x1191,0x11B1,0x0991,0x11B1,0x0991,0x11B1,0x1191,0x1191,0x0991,0x1191,0x0971,0x0991,0x0971,0x1191,0x0971,0x11B2,0x1191,0x1191,0x0971,0x1171,0x1171,0x1171,0x0951,0x1192,0x1171,0x0951,0x0950,0x1171,0x1191,0x11B2,0x09B1,0x11D2,0x11F2,0x11F2,0x1A74,0x2AF6,0x22B6,0x1A54,0x1213,0x11F3,0x11D3,0x19F3,0x11D3,0x11B2,0x1191,0x11B2,0x11B2,0x11D2,0x0991,0x11B1,0x1191,0x1191,0x0971,0x1192,0x0971,0x0991,0x0971,0x1191,0x1191,0x1191,0x0971,0x1191,0x0971,0x0971,0x0971,0x0950,0x0971,0x1191,0x11B2,0x11B1,0x1191,0x1171,0x1971,0x1951,0x3172,0x4172,0x38AF,0x92D7,0x9234,0x9A34,0xA214,0xA1F3,0xA1D3,0xA9F4,0xA9D3,0xB1F4,0xA9D3,0xA9D3,0xA9D3,0xA9F4,0xAA14,0xA235,0x9234,0x9296,0x40CF,0x3992,0x2171,0x1110,0x010F,0x010F,0x0930,0x0930,0x0950,0x0971,0x0950,0x0971,0x0971,0x0991,0x0971,0x1192,0x11B2,0x11B2,0x11D2,0x1A33,0x1A33,0x1A33,0x1A54,0x2AD6,0x3338,0x1254,0x1213,0x09B2,0x11D3,0x11D3,0x11D3,0x11D3,0x11B2,0x11B2,0x11B2,0x11B2,0x1191,0x11B2,0x1191,0x11B2,0x1191,0x1191,0x1191,0x11B2,0x1191,0x11B1,0x1191,0x11B2,0x1191,0x11B1,0x0971,0x1191,0x0971,0x1191,0x0971,0x0971,0x0971,0x0991,0x0991,0x1191,0x0971,0x1192,0x1191,0x11B2,0x1191,0x11D2,0x0991,0x11D2,0x11B1,0x11B1,0x11B1,0x11B2,0x1191,0x11B2,0x0991,0x1192,0x0971,0x1191,0x1191,0x11B2,0x1192,0x1192,0x1191,0x11B2,0x1191,0x11B2,0x1191,0x11B2,0x1191,0x11B2,0x1192,0x1192,0x1192,0x11D2,0x1192,0x11B2,0x0992,0x11B2,0x11D2,0x1A13,0x1A13,0x1213,0x09B2,0x09D2,0x1233,0x2AF6,0x3B78,0x1254,0x1214,0x09D3,0x09D3,0x09D2,0x09B2,0x11D3,0x11B2,0x11D2,0x11B2,0x11B2,0x0991,0x11B2,0x0991,0x11B1,0x0991,0x11B2,0x0991,0x11B2,0x11B2,0x11B2,0x1192,0x19D2,0x11B2,0x11B2,0x11B2,0x19D2,0x11B2,0x11B2,0x11B2,0x11B2,0x1191,0x11B2,0x1191,0x1191,0x0971,0x1171,0x0951,0x1191,0x0971,0x1191,0x0971,0x0991,0x0971,0x0971,0x0971,0x0991,0x0991,0x11B2,0x1191,0x11B2,0x1191,0x1191,0x0971,0x1191,0x1191,0x19D2,0x11B2,0x11D2,0x11B1,0x11B2,0x11B2,0x19D2,0x11B2,0x11B2,0x1191,0x11B2,0x11B2,0x11F2,0x11B2,0x11B2,0x0991,0x09B1,0x09B1,0x09B2,0x0991,0x09D2,0x09B1,0x09D2,0x1213,0x1A54,0x32F7,0x3317,0x2AD6,0x2275,0x1A55,0x1A14,0x11D3,0x11D3,0x11D3,0x19D3,0x11D2,0x19F3,0x11B2,0x19D2,0x11B2,0x19D2,0x1191,0x11B2,0x1191,0x11B2,0x1191,0x1191,0x1191,0x11B1,0x1191,0x11B1,0x1171,0x1191,0x1191,0x11D2,0x1191,0x11D2,0x1191,0x11B2,0x11B2,0x11D2,0x11B2,0x11D2,0x11B2,0x11B2,0x0991,0x0991,0x1191,0x11B2,0x0991,0x11B1,0x0971,0x1191,0x0971,0x1191,0x0971,0x1191,0x1171,0x1191,0x1191,0x11B2,0x11B2,0x19F2,0x1191,0x11B2,0x11B1,0x11B2,0x11B2,0x19D2,0x11B2,0x19D2,0x1192,0x11B2,0x1191,0x11D2,0x11D2,0x09B2,0x0171,0x11B2,0x09B1,0x11D2,0x0991,0x0991,0x0991,0x09B1,0x11F2,0x1213,0x1A74,0x22B6,0x2B17, + 0x008D,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AD,0x008D,0x00AE,0x00CE,0x00CE,0x00EF,0x0171,0x1A34,0x2275,0x1A13,0x010F,0x00AE,0x008D,0x008D,0x00AE,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x008D,0x006D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008E,0x008D,0x008E,0x006D,0x006D,0x006D,0x006E,0x006D,0x008E,0x008D,0x008E,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x008D,0x006D,0x00AE,0x00AE,0x00CF,0x00EF,0x00EF,0x012F,0x1213,0x2295,0x012F,0x00EF,0x00EF,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x006D,0x006D,0x004D,0x004D,0x006E,0x004D,0x004D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008E,0x008E,0x006D,0x008D,0x006D,0x006D,0x006D,0x006E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006D,0x006D,0x008D,0x008E,0x006E,0x008E,0x008E,0x008E,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00CF,0x00CF,0x00CF,0x0170,0x2AD6,0x11F3,0x00EF,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x006E,0x008E,0x008E,0x006E,0x006E,0x006E,0x006E,0x006E,0x006E,0x008E,0x006E,0x006E,0x006E,0x006E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006E,0x006E,0x006E,0x006E,0x008E,0x006D,0x006D,0x006D,0x006E,0x006E,0x006D,0x006D,0x006E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x006E,0x008E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008D,0x008D,0x006D,0x008D,0x008E,0x008E,0x010F,0x11F3,0x32F6,0x11D2,0x00EF,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x006E,0x006E,0x008E,0x006E,0x006E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x006D,0x006D,0x008E,0x008E,0x006D,0x008E,0x006E,0x006D,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x008D,0x008E,0x008E,0x008E,0x006E,0x006E,0x008E,0x008E,0x008E,0x008E,0x006D,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006D,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x2234,0x11F3,0x0110,0x00CF,0x00AF,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x006E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00CF,0x11D3,0x19F3,0x010F,0x00CF,0x00AF,0x00AF,0x00AF,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x1A34,0x2255,0x00AE,0x00AF,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CF,0x00EF,0x2A96,0x0151,0x00CF,0x00AF,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006D,0x006D,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00CE,0x09B2,0x2AB6,0x0130,0x00EF,0x00CF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x006D,0x006D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x004D,0x006E,0x084D,0x102D,0x200C,0x8296,0x9275,0x9A34,0x9A13,0xB255,0xA9F3,0xA9F3,0xA9D3,0xB1D4,0xB1F4,0xA9B3,0xA9B3,0xA9D4,0xA9F4,0xA235,0x9A75,0x8255,0x280C,0x104D,0x086E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008D,0x008D,0x008E,0x00CF,0x1A14,0x1A14,0x0151,0x0110,0x00EF,0x00CF,0x00AE,0x00AF,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008D,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008D,0x006D,0x006D,0x006D,0x006E,0x006D,0x006E,0x006E,0x008E,0x008E,0x008E,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00EF,0x09D2,0x2296,0x1A34,0x0171,0x0110,0x00EF,0x00CF,0x00AF,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006D,0x008E,0x008E,0x008E,0x006D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006D,0x008E,0x008E,0x006D,0x008E,0x008E,0x006D,0x008E,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x006D,0x008D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008E,0x006D,0x006D,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00CF,0x0130,0x2254,0x2AD6,0x09B2,0x0110,0x00EF,0x00CF,0x00AF,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008D,0x008D,0x00AE,0x00AE,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008D,0x008D,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x006D,0x006D,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x00AD,0x00AD,0x00AE,0x00CE,0x010F,0x0130,0x0150, + 0x008D,0x006D,0x008E,0x008E,0x008E,0x008E,0x008E,0x006D,0x006D,0x008E,0x008E,0x008E,0x008E,0x006D,0x008D,0x008D,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x0930,0x21F3,0x3AD7,0x2AB6,0x11D2,0x012F,0x00EF,0x00CE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x006D,0x008E,0x006D,0x008E,0x006E,0x008E,0x006E,0x008E,0x006E,0x008E,0x006E,0x008E,0x006E,0x006E,0x008E,0x008E,0x006E,0x008E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x006E,0x006E,0x006E,0x008E,0x006D,0x008E,0x008E,0x008E,0x006D,0x008E,0x006D,0x008E,0x008E,0x008E,0x006D,0x006E,0x006D,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00CE,0x00EF,0x19D2,0x3AD6,0x3AF7,0x11D2,0x0130,0x00EE,0x00CF,0x00CE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x006E,0x006E,0x006D,0x006E,0x006E,0x006E,0x006D,0x006D,0x008E,0x006E,0x008E,0x008E,0x008E,0x006D,0x006D,0x008E,0x008E,0x006E,0x006E,0x008E,0x008E,0x006D,0x008E,0x006E,0x006E,0x006E,0x006E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006E,0x006E,0x006E,0x008E,0x006D,0x008E,0x006E,0x006E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00CF,0x00EF,0x0930,0x3296,0x3B38,0x09B2,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x006E,0x008E,0x006E,0x006E,0x006E,0x008E,0x006E,0x006E,0x006E,0x008E,0x006E,0x008E,0x006E,0x006E,0x006E,0x006E,0x006E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006E,0x008E,0x006E,0x006E,0x006E,0x008E,0x006E,0x006E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008D,0x006D,0x008E,0x008E,0x00AE,0x00EF,0x3296,0x32B6,0x0971,0x00EF,0x00CF,0x00CE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x006E,0x008E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006E,0x008E,0x006E,0x008E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AF,0x00CF,0x1192,0x3AF7,0x0130,0x0110,0x00EF,0x00AF,0x00AF,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x006E,0x006E,0x006E,0x006E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x0131,0x2A76,0x0971,0x00EF,0x00AF,0x00AF,0x008F,0x008F,0x008F,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008F,0x008E,0x008E,0x008E,0x008F,0x008E,0x008F,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AF,0x008F,0x008E,0x008E,0x008F,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008F,0x006E,0x008E,0x008E,0x008E,0x008E,0x11F3,0x1A14,0x008E,0x00AF,0x008E,0x008E,0x008F,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008F,0x008E,0x008F,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00CF,0x00CF,0x11F3,0x19F4,0x00CF,0x00AF,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008F,0x008E,0x008F,0x006F,0x006F,0x006E,0x006E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x006D,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00CE,0x00EF,0x2A95,0x32B6,0x00EF,0x00EF,0x00CF,0x00AF,0x008F,0x00AF,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x006E,0x006E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008F,0x00AF,0x008E,0x008E,0x008E,0x088E,0x086E,0x186E,0x180C,0x69F4,0x9296,0x9A55,0xA234,0xAA14,0xAA14,0xA9D3,0xA9F4,0xB1F4,0xB1D4,0xA9B3,0xA9B3,0xA9D4,0xA9F4,0xA235,0xA2B7,0x69B3,0x282D,0x184D,0x086E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00CF,0x2234,0x32D7,0x0971,0x0110,0x00CF,0x00AE,0x00AF,0x008F,0x00AF,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006E,0x008E,0x006E,0x006E,0x006E,0x008E,0x006E,0x008D,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00EF,0x0130,0x1A34,0x3B18,0x19F3,0x0110,0x00EF,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x006E,0x008E,0x006E,0x008E,0x006D,0x008E,0x006D,0x008E,0x006D,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x0130,0x1A13,0x3B17,0x1A34,0x0130,0x00EF,0x00CF,0x00CF,0x008E,0x00AF,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008D,0x00AE,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x006D,0x006E,0x006E,0x006D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008D,0x008D,0x008E,0x008E,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00CF,0x00EF, + 0x00AE,0x00AE,0x008E,0x006E,0x006E,0x006E,0x008E,0x008D,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008D,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00CE,0x010F,0x1191,0x2213,0x2A95,0x2A55,0x1192,0x00EF,0x00CE,0x00EF,0x00CE,0x00EF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x0110,0x11B2,0x2A75,0x32B6,0x19F3,0x010F,0x00EF,0x00EF,0x00EF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x00AF,0x008E,0x00AE,0x00AE,0x00AF,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AF,0x008E,0x00AE,0x008E,0x00AF,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00CE,0x00EF,0x010F,0x19D3,0x32D7,0x2A55,0x0110,0x00EF,0x00CF,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AF,0x00AF,0x008F,0x008E,0x008E,0x008E,0x008F,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008F,0x008E,0x008F,0x008F,0x008F,0x008F,0x008F,0x008E,0x008E,0x008E,0x008E,0x008E,0x008F,0x008F,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008F,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00CF,0x0110,0x2A55,0x2255,0x0130,0x00EF,0x00EF,0x00CF,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008F,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008F,0x008E,0x008E,0x008E,0x008F,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008F,0x008E,0x008F,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00CF,0x00CF,0x0130,0x3AF7,0x19F3,0x00EF,0x00EF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AF,0x008E,0x008E,0x008E,0x00AF,0x00AF,0x008F,0x008F,0x00AF,0x008E,0x008E,0x00AF,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AF,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008F,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008F,0x008F,0x008F,0x008F,0x008F,0x008E,0x008E,0x008E,0x008F,0x008F,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AF,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x19D3,0x2255,0x0131,0x00EF,0x00AF,0x00AF,0x008E,0x008F,0x00AF,0x008E,0x008E,0x008E,0x00AF,0x008F,0x008E,0x008F,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x00AF,0x008E,0x008E,0x00AF,0x008F,0x008E,0x008F,0x008F,0x008F,0x008F,0x008F,0x008F,0x008F,0x008F,0x00AF,0x008F,0x008F,0x008F,0x008F,0x008F,0x008F,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x008E,0x008E,0x008E,0x008F,0x008F,0x00AF,0x008F,0x00AF,0x00AF,0x00AF,0x008F,0x00AF,0x008F,0x008F,0x008F,0x008F,0x008F,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AF,0x00AF,0x008E,0x008E,0x008E,0x00AF,0x00AF,0x00AF,0x008F,0x008E,0x008E,0x008E,0x008E,0x19F3,0x1A14,0x00AE,0x00AF,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x00AF,0x00AE,0x008E,0x008F,0x008F,0x008E,0x008E,0x00AF,0x00AE,0x008E,0x008E,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x00AE,0x008E,0x00AF,0x008F,0x00AF,0x00AF,0x008E,0x008E,0x008E,0x00AF,0x00AF,0x008F,0x00AF,0x008E,0x008E,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AF,0x00CF,0x00EF,0x0972,0x32B7,0x00F0,0x00AF,0x008E,0x008E,0x00AF,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x00AF,0x00AF,0x008E,0x008F,0x008F,0x008F,0x008F,0x006F,0x008F,0x008E,0x008E,0x008E,0x00AF,0x008F,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x00AF,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008F,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00EF,0x32B6,0x11D3,0x00EF,0x00EF,0x00EF,0x00AF,0x00AF,0x008F,0x008F,0x00AF,0x00AE,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008F,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x088E,0x108E,0x106E,0x204D,0x5151,0x9296,0x9234,0xA214,0xA1F3,0xA1D3,0xB214,0xA9D4,0xB1D4,0xB1F4,0xA9D4,0xA9B3,0xB214,0xAA35,0x9A14,0x9AB6,0x48CF,0x200C,0x186E,0x086E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00CF,0x010F,0x2254,0x3B17,0x0991,0x00EF,0x00CF,0x00AF,0x00AF,0x00AE,0x008E,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008F,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008F,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00EF,0x00EF,0x0151,0x32B6,0x2255,0x0151,0x00EF,0x00CF,0x00AE,0x00AE,0x00AF,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AF,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x006E,0x006E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00EF,0x00EF,0x0130,0x2A75,0x32D6,0x11B2,0x0130,0x0110,0x00EF,0x00CF,0x00AF,0x00AF,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006E,0x008E,0x008E,0x008F,0x008F,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00EF, + 0x00AE,0x008E,0x008E,0x008E,0x006D,0x008E,0x008E,0x00AE,0x00CE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x0930,0x2213,0x3AD6,0x32D6,0x2234,0x0971,0x00EF,0x00CF,0x00CE,0x00CE,0x00CE,0x00CE,0x00CF,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x006E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00EF,0x19B2,0x32B6,0x32B6,0x19D2,0x010F,0x00CF,0x00CF,0x00CF,0x00CE,0x00CE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AF,0x00AF,0x00AF,0x008E,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AF,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AF,0x00AE,0x00AF,0x008E,0x00AF,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x010F,0x0971,0x3296,0x32D6,0x11B2,0x00EF,0x00CF,0x00AF,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x008F,0x008F,0x008F,0x008E,0x008F,0x008E,0x00AF,0x008E,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AF,0x00AF,0x008F,0x008F,0x00AF,0x008F,0x008F,0x008E,0x00AF,0x008E,0x00AF,0x008E,0x008F,0x008F,0x008F,0x008E,0x00AF,0x008F,0x008E,0x00AF,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00EF,0x0950,0x2A75,0x2214,0x0110,0x00CF,0x00CF,0x00CF,0x00AE,0x00AE,0x00CF,0x00CF,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x00AF,0x008E,0x00AF,0x00AE,0x00AF,0x008E,0x008F,0x008F,0x00AF,0x00AF,0x008E,0x008E,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x008E,0x00AF,0x00AE,0x00AF,0x008E,0x00AF,0x00AF,0x008E,0x008E,0x00AF,0x00AF,0x00AF,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AF,0x008F,0x008E,0x00AF,0x00AF,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AF,0x008E,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00EF,0x2234,0x2A75,0x00EF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AF,0x00AE,0x00AF,0x008E,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AF,0x00AE,0x00AE,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x008E,0x008E,0x008E,0x008E,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AF,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00F0,0x2234,0x19F3,0x00F0,0x00CF,0x00AF,0x00AE,0x008E,0x008E,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x00AF,0x008F,0x008F,0x00AF,0x008F,0x00AF,0x00AF,0x008F,0x008F,0x00AF,0x008F,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x008F,0x00AF,0x00AE,0x00AF,0x008F,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x008E,0x008E,0x00AE,0x008E,0x19D3,0x1A13,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00CF,0x00AF,0x00AE,0x00AE,0x00AF,0x00AF,0x008F,0x008F,0x00AF,0x00AF,0x00CF,0x00AE,0x00AF,0x008E,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x00AF,0x008E,0x00AF,0x00AF,0x008F,0x00AF,0x00AE,0x008E,0x008E,0x00AF,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AF,0x00CF,0x00EF,0x0110,0x3296,0x2214,0x00CF,0x00AE,0x00AF,0x00AF,0x00AF,0x008E,0x008E,0x00CF,0x00AF,0x008E,0x008E,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x008F,0x008F,0x008F,0x008F,0x008F,0x00AF,0x008E,0x008E,0x00AE,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x00AE,0x00AF,0x008E,0x00AF,0x00AF,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x00AF,0x00AF,0x008E,0x008E,0x00AF,0x00AE,0x008E,0x008E,0x008E,0x00AF,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00CE,0x0150,0x4338,0x0991,0x00F0,0x00EF,0x00CF,0x00AF,0x00AF,0x00AF,0x008F,0x00AE,0x008E,0x00AF,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AF,0x008E,0x00AF,0x00AE,0x00AE,0x008E,0x00CE,0x008E,0x008E,0x086E,0x106E,0x184D,0x306E,0x8A96,0x9A55,0xA214,0xA1F3,0xA9F4,0xA9F4,0xA9F4,0xA9B3,0xB1D4,0xB1D4,0xB1F4,0xA9F4,0xA214,0x9A34,0x9275,0x280C,0x182C,0x104D,0x006D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00EF,0x11B2,0x3B17,0x19F3,0x00EF,0x00CF,0x00AF,0x00AE,0x00AF,0x00CF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AF,0x00CF,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AF,0x008E,0x00AF,0x00AF,0x008F,0x008F,0x00AF,0x008E,0x00AE,0x00CF,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008F,0x008E,0x008E,0x008E,0x00AF,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AF,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00CF,0x00EF,0x0130,0x19F3,0x32D6,0x1A13,0x00EF,0x00CE,0x00CF,0x00CF,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AF,0x008E,0x00AF,0x00AE,0x00AF,0x008E,0x00AE,0x00AE,0x00AF,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AF,0x008E,0x00AF,0x00AF,0x00AE,0x008E,0x00AE,0x00AF,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AF,0x008E,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CF,0x00AE,0x00EF,0x1191,0x2A75,0x3AD7,0x1A13,0x0951,0x0110,0x00F0,0x00CF,0x00AE,0x008E,0x008E,0x00CF,0x00AE,0x008E,0x008E,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AF,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF, + 0x008E,0x008E,0x006D,0x006D,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00CE,0x00CE,0x00EF,0x0991,0x1A13,0x2A95,0x32B6,0x2213,0x0971,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00CF,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00CF,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00CE,0x00CE,0x00CF,0x00CF,0x00EF,0x11B1,0x2A54,0x32B6,0x2213,0x0130,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x00AE,0x00AF,0x00CF,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CF,0x00CF,0x00CF,0x0110,0x19D2,0x32B6,0x3295,0x0951,0x00CF,0x00AF,0x00AE,0x008E,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00CF,0x00AE,0x008E,0x00AE,0x00AE,0x00AF,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x00AF,0x00AF,0x00CF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x008E,0x00AE,0x00AE,0x00AF,0x00AE,0x00AF,0x008E,0x00AE,0x00AF,0x00AF,0x008E,0x008E,0x008E,0x00AF,0x00AE,0x00AF,0x008E,0x00AE,0x00AE,0x00CF,0x00AF,0x00AE,0x00AE,0x00AF,0x008E,0x00CF,0x00CF,0x08EF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x00CE,0x00EF,0x0971,0x2A75,0x2A54,0x0951,0x0110,0x00AF,0x008E,0x008E,0x00AE,0x00AE,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AF,0x008E,0x008E,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x008E,0x00AF,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AF,0x008E,0x00AE,0x00AE,0x00AF,0x00AF,0x008E,0x008E,0x00AF,0x00AE,0x00CF,0x00AF,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AF,0x00CF,0x00EF,0x19F3,0x32B6,0x0950,0x00EF,0x00AF,0x00CE,0x00CF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x008E,0x008E,0x00AE,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x00AE,0x00AF,0x00AE,0x00AE,0x008E,0x008E,0x00AF,0x00AF,0x00AE,0x008E,0x00AF,0x00AE,0x00AF,0x00AE,0x00AE,0x00AF,0x008E,0x008E,0x008E,0x008E,0x00AF,0x00AF,0x00AE,0x00AF,0x00AF,0x008F,0x00AF,0x008E,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00CF,0x00CF,0x008E,0x008E,0x008E,0x008E,0x00AF,0x19B2,0x2A75,0x0992,0x00EF,0x00AF,0x00CF,0x00AF,0x00AE,0x00AE,0x00AF,0x00AF,0x00CF,0x00AF,0x00AE,0x00AE,0x00AF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00CF,0x00AF,0x00CF,0x00AF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AF,0x00CF,0x00AF,0x00CF,0x00CF,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AE,0x00CF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AF,0x00CF,0x00CF,0x00CF,0x00AE,0x00CF,0x00CF,0x00AF,0x00AE,0x00AF,0x00AE,0x00CF,0x00CF,0x00CF,0x00AE,0x00AF,0x00CF,0x00AF,0x00AF,0x00AF,0x008E,0x008E,0x00AE,0x19F3,0x1A13,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x008E,0x00AF,0x00AE,0x00AF,0x00AE,0x00AF,0x00CF,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00CF,0x00AF,0x00AF,0x00AE,0x00CF,0x00CF,0x00AF,0x00AE,0x00AE,0x00AF,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AF,0x00AF,0x00AE,0x00AE,0x00AF,0x008E,0x008E,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00AE,0x00AE,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AE,0x00CF,0x00CF,0x00AE,0x00AE,0x00CF,0x00CE,0x00AE,0x00AE,0x00CF,0x00CF,0x00F0,0x1A14,0x3AD7,0x00EF,0x00AE,0x00AF,0x00CF,0x00CF,0x008E,0x008E,0x00CF,0x00CF,0x00AE,0x00AE,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x008F,0x008E,0x00AF,0x00AF,0x00AE,0x00AF,0x00AE,0x00AE,0x00AF,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AF,0x00AF,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00CF,0x00AE,0x00AF,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CF,0x2213,0x4338,0x0130,0x00CF,0x00CF,0x00CF,0x00AF,0x00AF,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x08AE,0x088E,0x086D,0x184D,0x282C,0x7A34,0x9A75,0xA234,0xAA14,0xA9F4,0xA9F4,0xA9F4,0xA9D4,0xB1F4,0xA9B3,0xA9D3,0xAA14,0xA235,0x9234,0x8255,0x200B,0x182D,0x106D,0x088E,0x08AE,0x00AE,0x008E,0x008E,0x00AE,0x00AF,0x008E,0x008E,0x00AF,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CF,0x0130,0x3B17,0x2275,0x0110,0x00EF,0x00CF,0x00AF,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00EF,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AF,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00CE,0x00CE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AF,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00CE,0x00EF,0x00EF,0x0130,0x2A75,0x32B6,0x0971,0x00EF,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00CF,0x008E,0x008E,0x00AF,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x1191,0x32D6,0x32B5,0x19F3,0x0130,0x00EF,0x00CF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00CE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00CE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E, + 0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00EF,0x0930,0x11B1,0x2A74,0x3B17,0x2A95,0x11B1,0x0130,0x00EF,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00CF,0x00CF,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00EF,0x1191,0x32B6,0x3B17,0x2234,0x0950,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CF,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00CE,0x00CF,0x00CF,0x0971,0x3296,0x32B6,0x11D2,0x00EF,0x00CE,0x00CF,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CF,0x00CE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00CF,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00CF,0x008E,0x00AE,0x00AF,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00CE,0x00EF,0x11B2,0x2A95,0x2A75,0x0130,0x00EF,0x00AF,0x00AF,0x008E,0x008E,0x00AE,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CF,0x00AE,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00CF,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AF,0x00AE,0x00CF,0x00AF,0x008E,0x00AE,0x00CE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00CF,0x1191,0x2A55,0x19F3,0x00EF,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AF,0x00AE,0x00CF,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x008E,0x00AE,0x00AF,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00CF,0x2213,0x2A75,0x0110,0x00AF,0x00AF,0x00CF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AE,0x00AE,0x00AF,0x00CF,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00CF,0x00CF,0x00AE,0x00AE,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00CF,0x00CE,0x00AE,0x00CF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x008E,0x00AE,0x008E,0x19F3,0x2234,0x00AE,0x00CF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00CE,0x00AE,0x00CE,0x00AE,0x00AF,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00CF,0x00AF,0x00CF,0x00CF,0x00CF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AE,0x00CE,0x00AE,0x00CF,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00CF,0x0971,0x3AF7,0x0951,0x00CF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00CF,0x00AE,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x008E,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AF,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AF,0x008E,0x008E,0x00AF,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CF,0x2A75,0x3296,0x00EF,0x00EF,0x00CF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x008E,0x088E,0x086D,0x184D,0x200C,0x69B2,0x9A95,0xA234,0xAA14,0xA9F4,0xA9F4,0xA9D4,0xB1D4,0xA9D4,0xA9D4,0xA9F4,0xAA15,0xA255,0x9A75,0x6191,0x200C,0x184D,0x086E,0x088E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AF,0x008E,0x008E,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x0130,0x32B6,0x3AF7,0x0110,0x00EF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00CE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AF,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00CE,0x00CF,0x00CF,0x00CF,0x00AE,0x00AE,0x00CE,0x00AE,0x00CE,0x00CF,0x00CE,0x010F,0x11D2,0x4338,0x2254,0x010F,0x00CF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x010F,0x0991,0x2A75,0x32B6,0x2214,0x0930,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E, + 0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00CE,0x00EF,0x0950,0x19D2,0x3295,0x3AF6,0x2A54,0x012F,0x00CE,0x00CE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x010F,0x11B1,0x2234,0x2A75,0x2A54,0x1191,0x00EF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00CF,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x008D,0x008D,0x00CE,0x00EF,0x0130,0x2A54,0x3AD7,0x2A75,0x0110,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AF,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AF,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CF,0x008E,0x00AE,0x00AE,0x00AE,0x00CF,0x0130,0x11D2,0x2A95,0x1A13,0x0110,0x00CE,0x00AE,0x00AF,0x00AF,0x00AF,0x00AE,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CF,0x00CF,0x00AE,0x00AE,0x008E,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00CF,0x00CF,0x1171,0x2A54,0x2234,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x010F,0x3275,0x19D2,0x00CF,0x00AE,0x00AE,0x00CF,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x008E,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x008E,0x008E,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AF,0x00AF,0x00AE,0x00AF,0x00AE,0x00CF,0x00CF,0x00CF,0x00CF,0x00AE,0x00CF,0x00AF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00CF,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x19F3,0x2214,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00CF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AF,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00EF,0x2A75,0x2254,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00CF,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AF,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AF,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x008E,0x008E,0x00AF,0x008E,0x00AF,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00AE,0x00AE,0x00EF,0x4B58,0x2A75,0x0110,0x00CF,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x088E,0x086D,0x104D,0x180C,0x48CF,0x9A96,0x9A14,0xAA34,0xAA14,0xA9D4,0xA9D4,0xB1F4,0xB1F4,0xA9F4,0xA9D4,0xA1F4,0x9A14,0x9AB7,0x5110,0x204D,0x186E,0x088E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AF,0x008F,0x00AF,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00CF,0x00EF,0x2A75,0x3B17,0x0130,0x00CF,0x00AF,0x00CF,0x00AF,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AF,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x0950,0x3AF7,0x4317,0x1192,0x00EF,0x00CF,0x00AE,0x00AF,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00CE,0x1191,0x32B5,0x32B6,0x1A13,0x0130,0x00CF,0x00CF,0x00AE,0x00AE,0x008E,0x00AE,0x00AF,0x00AF,0x008E,0x008E,0x00AE,0x00AE,0x00CE,0x00CE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE, + 0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x00AE,0x00AE,0x1171,0x3295,0x3295,0x2A74,0x1A13,0x0950,0x00EF,0x00CE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008D,0x006D,0x008E,0x008E,0x008E,0x00CF,0x00AF,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x0971,0x2A95,0x32D6,0x2254,0x1171,0x010F,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00EE,0x11B1,0x3AF7,0x4338,0x11B2,0x00CF,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00EF,0x010F,0x2234,0x32B6,0x19D2,0x00EF,0x00CF,0x00AE,0x00AE,0x008E,0x00AE,0x00AF,0x00AF,0x00CF,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00EF,0x00CE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00CF,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x008E,0x00AE,0x00AE,0x00AE,0x00CF,0x008E,0x00CE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00CF,0x0130,0x3275,0x2A75,0x010F,0x00CE,0x00AE,0x008E,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00CE,0x00CF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x008E,0x00AE,0x00AF,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x00AF,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x1191,0x3295,0x0950,0x00AE,0x00AE,0x00AE,0x00AF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x00AF,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00CF,0x00CF,0x00CE,0x00AE,0x00CF,0x00AE,0x00AE,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x19F3,0x19F3,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00CF,0x09B1,0x4338,0x00EF,0x00AF,0x00AE,0x00AF,0x00AF,0x00AF,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x008E,0x00AF,0x00AF,0x008E,0x00AF,0x00AE,0x00AE,0x00AF,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00CE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x0950,0x4B79,0x19F3,0x00CF,0x00CF,0x00AF,0x00CF,0x00CF,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x088E,0x088E,0x106D,0x182C,0x304D,0x9A96,0xA234,0xAA14,0xB214,0xA9D4,0xA9D4,0xB1F4,0xB1F4,0xA9D3,0xA9F4,0xAA35,0x9A35,0xA2D7,0x384D,0x204D,0x106D,0x086E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AF,0x008F,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00CE,0x00EF,0x19F3,0x4B58,0x0971,0x00CF,0x00CF,0x00CE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00EF,0x19D2,0x4338,0x3296,0x010F,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00EF,0x1191,0x2A95,0x3AF7,0x2213,0x010F,0x00CF,0x00CF,0x00AE,0x00AE,0x00AF,0x008E,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE, + 0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00EE,0x1191,0x2A75,0x3AD6,0x2A54,0x19D2,0x010F,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x006E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x0970,0x2233,0x2A75,0x2254,0x11B1,0x010F,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00CE,0x00CE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008D,0x008D,0x008E,0x008E,0x00AE,0x00CE,0x00CE,0x0950,0x2233,0x32B5,0x2234,0x010F,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x00CE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CF,0x010F,0x2254,0x32B6,0x19D2,0x00EF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00AE,0x00AE,0x008E,0x00AE,0x00CE,0x010F,0x19F2,0x3295,0x1191,0x00CE,0x00AE,0x00AE,0x00CE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x1A13,0x2213,0x00EF,0x00AE,0x00CF,0x00AE,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AF,0x008E,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x1A13,0x1A13,0x00CE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00CE,0x00EF,0x010F,0x4338,0x19F3,0x00CE,0x008E,0x008E,0x008E,0x00AF,0x008E,0x00AE,0x00AE,0x00CE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x008E,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x11B2,0x53BA,0x0992,0x00CF,0x00CF,0x00AE,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008D,0x088D,0x106D,0x182D,0x200C,0x79F3,0xA255,0xA214,0xA9F4,0xA1B3,0xA9D4,0xA9F4,0xB1F4,0xA9F4,0xA1F4,0xA214,0xA276,0x8A76,0x280C,0x186D,0x086D,0x006D,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00EF,0x19D2,0x4B78,0x1191,0x00CF,0x00AE,0x00CE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00CE,0x0110,0x2A75,0x3AF7,0x0991,0x010F,0x00CF,0x00CF,0x00CE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00EF,0x11B2,0x2A95,0x3295,0x11D2,0x010F,0x00CE,0x00CE,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008D,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008D,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E, + 0x00CE,0x00AE,0x00CE,0x00CE,0x00CE,0x1191,0x3AF7,0x3AF6,0x2234,0x0971,0x010F,0x00CE,0x00AE,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x006D,0x006D,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AD,0x00AD,0x00EF,0x0950,0x2234,0x2A95,0x2A54,0x11B1,0x010F,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00CE,0x010F,0x19D2,0x32B5,0x32B5,0x19B2,0x00CE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CF,0x010F,0x2A95,0x2AB5,0x0971,0x00EF,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x0930,0x0971,0x32B5,0x19D2,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00CE,0x010F,0x2A75,0x11B2,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x008E,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008D,0x19F3,0x1A13,0x00CE,0x00CE,0x00CE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00EF,0x2A54,0x3AF7,0x00EF,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AF,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00CE,0x00CE,0x00AE,0x00AE,0x00CE,0x00CE,0x008E,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x00AE,0x00EF,0x2214,0x32D7,0x0130,0x00CF,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x088D,0x106D,0x184D,0x180B,0x6130,0x9A55,0xA234,0xA1F4,0xA1D4,0xA9D4,0xB215,0xB215,0xA9F4,0xA214,0xA235,0xA2D7,0x5931,0x200C,0x104D,0x086D,0x006E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00CE,0x010F,0x0991,0x4358,0x19F2,0x00EE,0x00CE,0x00AE,0x00CF,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00CE,0x00CE,0x00CF,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00CE,0x00EF,0x0991,0x32D6,0x2254,0x012F,0x00EF,0x00EF,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x010F,0x11B2,0x32B5,0x32B6,0x11B1,0x010F,0x00CF,0x00EF,0x00AF,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00CF,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AD,0x00CE,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE, + 0x00AE,0x00EE,0x012F,0x11D2,0x3AF6,0x3B17,0x19F2,0x012F,0x00CE,0x00AE,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x006D,0x008E,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008D,0x008D,0x008E,0x00AE,0x00CE,0x1191,0x2213,0x2A95,0x2A54,0x1191,0x010F,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008E,0x00AE,0x00CE,0x00CE,0x010F,0x0970,0x2233,0x2A74,0x2213,0x0930,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x0130,0x3AD6,0x2A75,0x010F,0x00EF,0x00EF,0x00CF,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00CF,0x00CF,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x008E,0x008E,0x008E,0x00CE,0x1170,0x0950,0x2A75,0x2213,0x00EF,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00EF,0x2213,0x2A74,0x0130,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x00AF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00CF,0x008E,0x008E,0x008E,0x008E,0x008D,0x2213,0x1A33,0x00CE,0x00CE,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00CE,0x010F,0x3B17,0x0950,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AF,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x19F3,0x32B6,0x010F,0x00CE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008D,0x088D,0x088D,0x104D,0x180C,0x48AE,0x9A75,0x9A14,0xA214,0xAA14,0xA9F4,0xAA14,0xA9F4,0xAA14,0xAA35,0xA255,0xA2F7,0x382D,0x202D,0x102D,0x084D,0x006E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00CF,0x00AE,0x00AE,0x00AE,0x00CE,0x00EF,0x0971,0x4338,0x2213,0x00EF,0x00CE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008D,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00CE,0x00AE,0x008E,0x008D,0x008E,0x008E,0x008E,0x008D,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00EF,0x3295,0x4338,0x19F3,0x010F,0x00CE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00EE,0x19F2,0x3AF6,0x32D6,0x1A13,0x010F,0x00EF,0x00AF,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x00AD,0x00AE,0x00AE,0x00AE,0x00AD,0x00AD,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008D,0x008E,0x008E, + 0x012F,0x19D2,0x32D6,0x32D6,0x11D2,0x0130,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008D,0x008D,0x008E,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008D,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008D,0x00AD,0x00AD,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008E,0x008D,0x008E,0x008D,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00CE,0x1171,0x2A75,0x32B5,0x2A75,0x19D2,0x00EF,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x00AE,0x00AD,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008D,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00CE,0x010F,0x0130,0x11B1,0x2274,0x2A94,0x1191,0x00EF,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x0971,0x4317,0x2234,0x010F,0x00CF,0x00CF,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x010F,0x0970,0x19F3,0x3295,0x010F,0x00CE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00EF,0x32B5,0x2213,0x00EF,0x00CE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008D,0x19F2,0x1A13,0x00CE,0x00CF,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x2234,0x2234,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x008E,0x00AE,0x00CF,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00EF,0x2A95,0x2A95,0x00EF,0x00CF,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00CE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AD,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x006D,0x086D,0x106D,0x180C,0x384D,0x9255,0x9A35,0xA214,0xA214,0xA9F4,0xA9F4,0xA1F4,0xAA35,0xA255,0xA296,0x8A55,0x280C,0x182D,0x082D,0x084D,0x006E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00CE,0x00EE,0x0150,0x3AF7,0x32B6,0x00EF,0x00EF,0x00CE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008D,0x008D,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00EF,0x0970,0x32D6,0x3AF7,0x0130,0x00CE,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008D,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x008D,0x00AE,0x00CE,0x00CE,0x00CE,0x012F,0x11D2,0x3AF6,0x3AF6,0x19D3,0x00EF,0x00AE,0x00CE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x00AD,0x00AD,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x00AD,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008D,0x008D,0x008E, + 0x2A95,0x3295,0x1191,0x00CE,0x00AE,0x00AD,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008D,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008D,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x008D,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008E,0x008E,0x008D,0x008D,0x00AE,0x008E,0x00AE,0x008D,0x008D,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008D,0x00AE,0x00CE,0x00EE,0x0970,0x2233,0x2A74,0x2254,0x19F2,0x00EF,0x00AE,0x00AD,0x00AD,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00CE,0x00EF,0x0150,0x2233,0x2A74,0x2253,0x0950,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00CE,0x008E,0x008D,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x11D2,0x4338,0x1A13,0x00EF,0x00CF,0x00CF,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AD,0x00AE,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x00AE,0x00CF,0x0930,0x11B2,0x3AF7,0x0950,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00CF,0x0150,0x32F6,0x1191,0x00CF,0x00AE,0x008E,0x008E,0x006D,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AF,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x008D,0x2213,0x1A13,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00CE,0x0970,0x32D6,0x010F,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00CE,0x00CE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x010F,0x3B17,0x1A13,0x00EF,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x00AE,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x088D,0x106D,0x184C,0x280C,0x7A14,0x9A55,0x9A14,0xAA55,0xAA35,0xA1F3,0xA214,0xA234,0x9A34,0x9A96,0x50F0,0x200C,0x182D,0x084D,0x088E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x012F,0x3B17,0x3B17,0x010F,0x00CE,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x008E,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x19F2,0x4358,0x19F2,0x010F,0x00CE,0x00CE,0x00CE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x008D,0x008D,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008D,0x008D,0x00AE,0x00AE,0x006D,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x00AE,0x00CE,0x00CE,0x00CE,0x010F,0x1A13,0x32D6,0x2A75,0x11B2,0x00EF,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008D,0x008D,0x008D,0x00AE,0x00AD,0x008D,0x00AE,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008E,0x008E,0x00AE,0x008D,0x008D,0x00AD,0x00AE,0x008D,0x00AE,0x008E,0x00AE,0x008D,0x00AE,0x008E,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008E,0x008E,0x008E,0x008D,0x008E,0x008E,0x008E,0x008D,0x008D,0x00AE,0x008E, + 0x11B2,0x010F,0x00CE,0x00AE,0x008D,0x00AE,0x008D,0x008E,0x008E,0x008E,0x008E,0x008D,0x008D,0x008D,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008D,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008D,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x008E,0x008D,0x008E,0x008D,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AD,0x00AE,0x008D,0x008D,0x00AE,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x00AE,0x008D,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00CE,0x1171,0x2233,0x2A74,0x2274,0x19F2,0x0130,0x00CE,0x00AE,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x00AD,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00CE,0x010F,0x11B1,0x2A74,0x3295,0x11B1,0x00EE,0x00CE,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008E,0x008D,0x008E,0x008E,0x00AE,0x008D,0x008E,0x00AE,0x00AE,0x008E,0x008D,0x008E,0x00AE,0x00AE,0x008D,0x008E,0x00AE,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008D,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x2213,0x4358,0x11B2,0x00EF,0x00CE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x00AD,0x00AD,0x00AE,0x00AD,0x00AD,0x00AD,0x00AE,0x00AE,0x008E,0x00CF,0x010F,0x1191,0x32B6,0x19D2,0x00EE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00CF,0x00CF,0x1A13,0x32D6,0x00EF,0x00CE,0x00AE,0x008E,0x006D,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008E,0x006D,0x1A12,0x1A12,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x010F,0x2A95,0x21F3,0x00CE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00CE,0x00EE,0x0991,0x4358,0x0991,0x00CE,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008D,0x00AE,0x00AD,0x00AE,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x00CE,0x00AD,0x00AD,0x00AE,0x00AE,0x008D,0x008D,0x006D,0x108D,0x184D,0x200B,0x69B2,0x9A95,0x9A34,0xA214,0xAA34,0xA1F4,0xA1F4,0xA255,0x9A55,0x9AD7,0x384D,0x180C,0x104D,0x084D,0x006D,0x006E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AD,0x00AE,0x00AD,0x008E,0x00AE,0x00AE,0x00AE,0x00AD,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AD,0x00AE,0x00AE,0x00CE,0x010F,0x2A74,0x4337,0x0950,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008E,0x00AE,0x008D,0x00AD,0x00AD,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x00AE,0x00AE,0x00AE,0x00AD,0x00AE,0x00AE,0x00AD,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x006D,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x00AE,0x00AE,0x00EE,0x0970,0x32D6,0x3B17,0x012F,0x00EF,0x00EF,0x00CE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x00AE,0x008D,0x00AD,0x00AE,0x00AE,0x00AD,0x00AE,0x00AD,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x00AE,0x008D,0x006D,0x006D,0x008E,0x00AE,0x008D,0x00AE,0x00AD,0x00AD,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x00AD,0x00AE,0x00AE,0x00CE,0x00CE,0x012F,0x11D2,0x32B5,0x32B5,0x1191,0x00CE,0x00CE,0x00CE,0x00AE,0x008E,0x008E,0x008D,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x00AE,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008E,0x00AE,0x00AD,0x00AD,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D, + 0x00AE,0x00CE,0x00AE,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008E,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008D,0x00AE,0x008E,0x00AE,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008E,0x008D,0x008D,0x00AD,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008E,0x008D,0x008D,0x008E,0x008E,0x00AE,0x008D,0x008E,0x008E,0x008E,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x00CE,0x00AE,0x008D,0x006D,0x008D,0x008D,0x00AE,0x00AE,0x00EE,0x0950,0x19F2,0x1A13,0x2234,0x19F2,0x0970,0x00CE,0x00CE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x008E,0x008D,0x00AD,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x00AD,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008E,0x008E,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00EF,0x0950,0x2233,0x2A74,0x2213,0x010F,0x00AD,0x00AE,0x00AD,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008E,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008D,0x00CE,0x00AE,0x008E,0x008E,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x00CE,0x3275,0x4317,0x1191,0x00EF,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008D,0x008E,0x00AE,0x00AE,0x00AD,0x00AE,0x008D,0x008D,0x00AD,0x00CE,0x00CE,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00EF,0x0950,0x3295,0x2213,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008E,0x00AE,0x008D,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008D,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00EF,0x32D5,0x1A13,0x00EF,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x2213,0x19F2,0x00CE,0x00CE,0x00AE,0x008E,0x00AD,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008D,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00EF,0x2233,0x32B5,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00CE,0x00CE,0x00CE,0x2213,0x4378,0x0130,0x00CE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008D,0x00AD,0x00CE,0x00AD,0x00AE,0x00AD,0x00AD,0x00AD,0x008D,0x088D,0x108E,0x102C,0x180C,0x40AE,0x9A95,0x9A34,0xA214,0xA214,0xAA34,0xA234,0xA255,0xA296,0x79F3,0x280C,0x180C,0x104D,0x108E,0x088E,0x008E,0x008E,0x008E,0x008E,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00EE,0x2254,0x3B17,0x11B1,0x00EF,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008D,0x008D,0x008D,0x00AE,0x00AD,0x00AE,0x00AD,0x00AD,0x00AD,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x008D,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008D,0x008D,0x00AE,0x00AD,0x00AE,0x00AE,0x00AE,0x00AE,0x00EE,0x00EF,0x2254,0x4358,0x1A13,0x00EF,0x00EE,0x00AE,0x00AE,0x008D,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008D,0x00AE,0x008D,0x008D,0x00AE,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008D,0x00AE,0x00AE,0x00AD,0x008D,0x008E,0x00AE,0x00AE,0x00CE,0x00AE,0x00AD,0x00AD,0x00AD,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x00AE,0x00AE,0x00AE,0x00CE,0x012F,0x2233,0x32D6,0x2A74,0x0970,0x00EE,0x00CE,0x00AE,0x00AE,0x008E,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x00AE,0x008D,0x008E,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x00AE,0x00AD,0x008D,0x006D,0x008D,0x008D,0x006D, + 0x00AD,0x00AE,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008D,0x008D,0x008D,0x008E,0x008E,0x008E,0x008D,0x00AE,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x00AD,0x00AE,0x00CE,0x012F,0x19F2,0x2233,0x2233,0x19F2,0x0950,0x00EF,0x00AE,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008E,0x008D,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008D,0x008E,0x00AE,0x00AE,0x008D,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00CE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008E,0x00AE,0x00AD,0x00AE,0x00AE,0x008D,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008D,0x008E,0x00AE,0x00EF,0x19F2,0x2A94,0x2A74,0x0970,0x00CE,0x00AE,0x00AE,0x008E,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008D,0x00AE,0x00CE,0x008D,0x00AE,0x00AE,0x008D,0x00AE,0x00AD,0x008D,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x00AE,0x008E,0x008D,0x008E,0x008E,0x008E,0x008D,0x008E,0x008D,0x008D,0x008E,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x00CE,0x3AB6,0x42F7,0x0950,0x00EF,0x00AE,0x008E,0x008E,0x006D,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008D,0x008E,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008D,0x00AD,0x008D,0x008D,0x008D,0x00AD,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00CE,0x00CE,0x010F,0x2A54,0x2A54,0x010F,0x00CE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008D,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x00AD,0x00AE,0x008D,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008D,0x008E,0x008E,0x00AE,0x00AE,0x00CE,0x0930,0x3B17,0x0970,0x00CE,0x00AE,0x008D,0x008D,0x00AE,0x00AE,0x006D,0x008D,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x006D,0x1A12,0x19F2,0x00CE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x008E,0x008E,0x00AE,0x00AE,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00CE,0x00AE,0x008D,0x008E,0x00AE,0x00CE,0x00CE,0x0950,0x3AF6,0x012F,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00CE,0x00EE,0x2A95,0x3AF7,0x00EF,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008E,0x008E,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x008D,0x008D,0x006D,0x086D,0x104D,0x180C,0x302C,0x9AD6,0x9213,0x9A14,0xA234,0xA214,0xA255,0x9A34,0xA317,0x48AE,0x200C,0x100C,0x084D,0x088E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x00CE,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AD,0x00AE,0x00CE,0x00EE,0x0991,0x4337,0x2233,0x00EE,0x00CE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x008D,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AE,0x00AD,0x008D,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008E,0x006D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x00AE,0x00AD,0x00AE,0x00CE,0x00CE,0x0150,0x2A95,0x3B17,0x012F,0x00EE,0x00EE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x00AD,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x00AD,0x00AE,0x00AE,0x00AD,0x00AE,0x00AE,0x00AE,0x00CE,0x012F,0x1A13,0x32D6,0x2A74,0x0950,0x00CE,0x00CE,0x00CE,0x00AE,0x00AD,0x008D,0x008D,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008E,0x008D,0x008E,0x008D,0x008E,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D, + 0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008E,0x00AE,0x008E,0x008D,0x008D,0x008D,0x00AE,0x00AD,0x00AD,0x00AE,0x00CE,0x010F,0x19D2,0x2254,0x2A74,0x2233,0x1191,0x00EE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008D,0x008D,0x008D,0x008E,0x008D,0x008E,0x008D,0x008D,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008E,0x008D,0x008D,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x0950,0x2254,0x2A74,0x19F2,0x00EE,0x00AD,0x00AE,0x00AE,0x008E,0x00AE,0x008D,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008E,0x008E,0x008D,0x008D,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AD,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x00AD,0x00AE,0x008D,0x008E,0x008D,0x00AD,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008D,0x00AE,0x00AE,0x008E,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x00AE,0x00EF,0x3AD6,0x3275,0x010F,0x010F,0x00CE,0x008E,0x008E,0x008D,0x008D,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008D,0x008E,0x008E,0x00AE,0x008D,0x008D,0x008D,0x008E,0x008D,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x006D,0x008E,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x008E,0x008D,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x00AD,0x008D,0x00AE,0x008D,0x008D,0x00AE,0x00CE,0x00CE,0x00EE,0x2233,0x3AD6,0x010F,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x00AE,0x00AD,0x00CE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x008E,0x00AE,0x00CE,0x00CE,0x2213,0x2A95,0x010F,0x00CE,0x00AE,0x008D,0x008E,0x00AE,0x008E,0x008D,0x006D,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x008E,0x006D,0x008D,0x006D,0x006D,0x2233,0x1A12,0x00CE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x008D,0x008E,0x00AE,0x008D,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x008E,0x008E,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00CE,0x00AE,0x008D,0x00AE,0x00AE,0x00AD,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x2A74,0x2233,0x008D,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x00AD,0x008D,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008D,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008D,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x012F,0x3B17,0x1A13,0x00CE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x00AD,0x00AD,0x00AD,0x00AE,0x008D,0x008D,0x088D,0x086D,0x104D,0x100C,0x282C,0x9295,0x9234,0xA255,0xA234,0x99F4,0xA255,0x9254,0x8A75,0x280B,0x180C,0x102C,0x084D,0x088E,0x006D,0x008E,0x008E,0x008E,0x008E,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x00AE,0x00AD,0x00AD,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x00AD,0x00AD,0x00AD,0x008D,0x008D,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x00AE,0x00CE,0x0950,0x4358,0x2A74,0x00EF,0x00AE,0x008E,0x00AE,0x008D,0x008D,0x008E,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x008E,0x006D,0x006D,0x008D,0x00AE,0x00AE,0x008D,0x00AD,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x00AE,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x00AD,0x00AE,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x00AE,0x00CE,0x00CE,0x11D2,0x4B99,0x2274,0x012F,0x00CE,0x00CE,0x00AE,0x00AE,0x00CE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008D,0x008D,0x00AD,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AE,0x00AE,0x00AE,0x008D,0x00AD,0x00AD,0x00AD,0x00CE,0x0950,0x2A54,0x2AB5,0x2233,0x0150,0x00EF,0x00CE,0x00CE,0x00CE,0x008E,0x008D,0x008E,0x006D,0x006D,0x008E,0x008D,0x008E,0x008E,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D, + 0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x006D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00CE,0x00EE,0x1191,0x2A74,0x3AF6,0x2233,0x0950,0x00EE,0x00AD,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x00AE,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008E,0x008E,0x00AE,0x00AE,0x00EF,0x2213,0x32B5,0x2A54,0x0950,0x00CE,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x00AD,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x006D,0x006D,0x008D,0x008D,0x006D,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x092F,0x4317,0x2233,0x010F,0x00EF,0x00CE,0x00AE,0x008D,0x006D,0x008D,0x008D,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x00AE,0x008D,0x008D,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008D,0x008D,0x00AE,0x008E,0x008D,0x008D,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008D,0x008D,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x008D,0x008E,0x006D,0x008D,0x00AE,0x008D,0x00AE,0x00CE,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x00AE,0x00CE,0x00EE,0x1191,0x4317,0x1191,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x00AE,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x00AD,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AD,0x00AD,0x00AD,0x00AD,0x008D,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x006D,0x008E,0x00AE,0x00CE,0x00EF,0x3AF6,0x11B1,0x00CE,0x00AE,0x008E,0x008E,0x008E,0x00CF,0x008E,0x006D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008E,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AD,0x008D,0x008D,0x00AD,0x00AE,0x008E,0x008E,0x008D,0x006D,0x006D,0x006D,0x2213,0x19F2,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x006D,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008D,0x00AE,0x008E,0x008E,0x008E,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x00AE,0x008D,0x00AE,0x00AE,0x00AD,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00CE,0x0991,0x3AF6,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AD,0x00AD,0x008D,0x00AE,0x00AE,0x00AD,0x00AD,0x008D,0x008E,0x008E,0x008E,0x00AE,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008E,0x008D,0x00AD,0x00AE,0x008E,0x008E,0x008E,0x008D,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008D,0x008E,0x008D,0x008D,0x008E,0x008E,0x008E,0x008D,0x008E,0x008E,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008D,0x008E,0x00AE,0x008D,0x00AD,0x00AE,0x00CE,0x0970,0x3AF7,0x0971,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x00AD,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008E,0x008D,0x088D,0x086D,0x104D,0x184C,0x200B,0x7A14,0x9A75,0x9A34,0x9A14,0x9A14,0x9A34,0x9A96,0x5930,0x200B,0x182C,0x102C,0x084D,0x086D,0x006D,0x008D,0x008E,0x008D,0x00AE,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008D,0x00AD,0x008D,0x008D,0x00AE,0x00AD,0x00AD,0x008D,0x00AD,0x008D,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008E,0x00AE,0x00AD,0x00AE,0x00AE,0x008D,0x00AE,0x00AD,0x00AD,0x00AD,0x00AE,0x00CE,0x012F,0x32B5,0x3AD6,0x010F,0x00CE,0x00AE,0x008D,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008E,0x008E,0x00AE,0x008E,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x00EE,0x0150,0x2A94,0x3B17,0x11B2,0x00CE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008D,0x008D,0x00AE,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00CE,0x00EE,0x0970,0x1A13,0x3B17,0x2254,0x012F,0x00EE,0x00CE,0x00AE,0x008E,0x006D,0x006D,0x006D,0x006D,0x008D,0x008E,0x006D,0x008D,0x006D,0x006D,0x008D,0x006D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D, + 0x006D,0x008D,0x006D,0x008D,0x006D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x00AE,0x008D,0x008E,0x006D,0x006D,0x006D,0x008E,0x00AE,0x00EE,0x1191,0x2A94,0x3AD5,0x2A53,0x092F,0x00CE,0x00AD,0x008D,0x006D,0x008D,0x008D,0x006D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008E,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x00AE,0x0970,0x3AD6,0x4317,0x19F2,0x00CE,0x00AD,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x00AD,0x008D,0x00AD,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008E,0x006E,0x006D,0x008E,0x00AE,0x008E,0x006D,0x008E,0x008D,0x008E,0x00AE,0x00AE,0x008D,0x008D,0x00AD,0x00AD,0x0970,0x4317,0x19F2,0x010F,0x0930,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008D,0x008E,0x008E,0x00AE,0x008D,0x008E,0x008D,0x00AE,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008D,0x008D,0x008E,0x00AE,0x008E,0x008E,0x008D,0x008E,0x008E,0x008E,0x008E,0x008D,0x008E,0x00AE,0x008E,0x008D,0x00AE,0x008D,0x008E,0x006D,0x008D,0x008D,0x008E,0x008D,0x00AE,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x094F,0x3AF6,0x19B2,0x00CE,0x008E,0x008E,0x008E,0x008D,0x008E,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008E,0x008E,0x008E,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008D,0x00AD,0x00CE,0x00AD,0x008D,0x008D,0x00AD,0x00AE,0x00AE,0x00AE,0x008D,0x008E,0x008E,0x008D,0x008E,0x008E,0x008E,0x00AE,0x00CE,0x0971,0x3295,0x00EF,0x00AE,0x00AE,0x008E,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x008E,0x008E,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x008D,0x008D,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x008D,0x008E,0x00AD,0x00AE,0x00AE,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x006D,0x006D,0x006D,0x2233,0x19F2,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008E,0x008D,0x008E,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x00AD,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x008E,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00CE,0x012F,0x32B6,0x1191,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008D,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x00AD,0x008D,0x008E,0x008E,0x008E,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AD,0x00AD,0x00AD,0x00AD,0x00AE,0x008D,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x008E,0x00AE,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x00AD,0x00AE,0x00AD,0x00AE,0x00CE,0x11D2,0x4358,0x0950,0x00CE,0x00AE,0x00AE,0x008E,0x008D,0x008E,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x00AE,0x008D,0x008D,0x006D,0x086D,0x104D,0x184D,0x200B,0x6992,0x9A95,0x9214,0x9A14,0x9A34,0x9A35,0x9296,0x384D,0x202C,0x184D,0x082C,0x084D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x00AE,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x00AE,0x00AE,0x00AD,0x00AE,0x008D,0x00AE,0x00AE,0x00AD,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x32B5,0x3B17,0x00EE,0x00AE,0x008D,0x00AD,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x008D,0x008E,0x00AE,0x00AE,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x00AE,0x00AE,0x00CE,0x00CE,0x19D2,0x4B78,0x3295,0x0130,0x00AE,0x008D,0x008E,0x008E,0x008D,0x006D,0x008E,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008E,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x006D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x00AD,0x008D,0x00AD,0x00AD,0x00CE,0x00EE,0x014F,0x2253,0x3AF6,0x2233,0x012F,0x00CE,0x00AE,0x008E,0x008D,0x006D,0x008E,0x006D,0x008E,0x008E,0x008D,0x008D,0x008E,0x008E,0x006D,0x006D,0x008D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D, + 0x008D,0x006D,0x006D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x00AE,0x0950,0x2A54,0x3AD6,0x2A54,0x0970,0x00EE,0x00AD,0x008D,0x008D,0x006D,0x006D,0x006D,0x006C,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x006D,0x008D,0x008D,0x006D,0x008D,0x008D,0x00CE,0x21F2,0x4B37,0x3295,0x00EE,0x00AE,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008E,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008D,0x008E,0x00AE,0x008E,0x006D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x19B1,0x4317,0x11B1,0x010F,0x00EE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AD,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008E,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x006D,0x008E,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x008D,0x008E,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00AE,0x00AE,0x00CE,0x32B5,0x2A54,0x00CE,0x008E,0x006D,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x00AD,0x008E,0x008E,0x008D,0x008E,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008E,0x008E,0x008D,0x008D,0x008D,0x008E,0x008D,0x008E,0x008E,0x008E,0x008D,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x008D,0x00AE,0x008D,0x00AE,0x00AE,0x008D,0x008E,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008E,0x006D,0x00AE,0x008E,0x008E,0x00AE,0x00CE,0x2234,0x2213,0x00AE,0x00AE,0x008E,0x006D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008D,0x008E,0x008E,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x00AE,0x008E,0x008E,0x008E,0x00AE,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008D,0x008D,0x00AD,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x006D,0x006D,0x008D,0x004C,0x2213,0x19D2,0x00AE,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008E,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008E,0x00AE,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00EF,0x2213,0x3AD6,0x00CE,0x008E,0x008D,0x008E,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008E,0x008E,0x00AE,0x00AE,0x00AD,0x00AD,0x008D,0x008D,0x00AE,0x008D,0x00AE,0x00AE,0x00AD,0x00AD,0x00AD,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x00AE,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008E,0x00AE,0x00AE,0x008D,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x008D,0x00AD,0x00AE,0x00EE,0x2A74,0x3B17,0x010F,0x00CE,0x00AE,0x008E,0x008E,0x00AE,0x00AE,0x00AE,0x008E,0x008D,0x008D,0x006D,0x008E,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x00AD,0x008D,0x008D,0x006D,0x006D,0x086D,0x104D,0x104D,0x200C,0x5930,0x9296,0x9A55,0x9A14,0x9A14,0x9255,0x7A14,0x280B,0x180C,0x104C,0x084C,0x086D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AE,0x00AE,0x00AD,0x00AD,0x00AE,0x00CE,0x00EF,0x2213,0x4337,0x012F,0x00AD,0x00AE,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x010F,0x2A75,0x4B99,0x11B2,0x00AE,0x00AE,0x00AE,0x008D,0x008E,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x006D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x00CE,0x00EE,0x0950,0x2253,0x3AF6,0x2213,0x00EE,0x00AE,0x00AE,0x008D,0x008E,0x006D,0x008E,0x006D,0x008D,0x008D,0x008E,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x006C,0x008C,0x008C,0x008C,0x008D,0x008C,0x008C, + 0x006D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006C,0x006D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x006C,0x006D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x006C,0x006C,0x008C,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008D,0x00AD,0x00AD,0x008D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00CE,0x0930,0x2233,0x3295,0x2A33,0x1191,0x00CE,0x008D,0x00AD,0x008D,0x008D,0x006D,0x008D,0x008D,0x008C,0x008D,0x008C,0x008D,0x008D,0x006C,0x008C,0x006C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x00AE,0x00AE,0x006D,0x008D,0x006D,0x006D,0x008D,0x00AD,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x1170,0x3295,0x3AB5,0x1191,0x00AD,0x00AE,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x006D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008E,0x008E,0x008E,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x21F2,0x3AF6,0x11B1,0x010F,0x00AE,0x008D,0x00AD,0x008D,0x008D,0x006D,0x008D,0x006D,0x008D,0x008D,0x00AE,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008E,0x008E,0x008D,0x008D,0x00AD,0x008D,0x008D,0x00AE,0x008D,0x00AD,0x00AD,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008D,0x006D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008E,0x008D,0x00AE,0x008E,0x008D,0x008D,0x006D,0x008D,0x006D,0x006D,0x006D,0x008D,0x00AE,0x00AE,0x00CE,0x3274,0x32B5,0x00EF,0x00AE,0x008D,0x008D,0x008D,0x00AE,0x008E,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008E,0x00AE,0x092F,0x32D6,0x0930,0x00AE,0x008D,0x006D,0x006D,0x00AE,0x00AE,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00CE,0x008D,0x006D,0x006D,0x006D,0x006D,0x006D,0x2233,0x19F2,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00CE,0x0970,0x4357,0x012F,0x008D,0x008E,0x008E,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008E,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x00AD,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x006D,0x006D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x00AD,0x00AD,0x00AE,0x00CE,0x3AF6,0x2AB5,0x00CE,0x00CE,0x00AE,0x008E,0x00AE,0x008E,0x008E,0x006D,0x008E,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x006D,0x086D,0x084D,0x102C,0x180C,0x48CF,0x92B6,0x9A75,0x9A54,0x9234,0x9A96,0x48CE,0x200B,0x182C,0x082C,0x084D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008E,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00CE,0x00EE,0x19D1,0x53B9,0x11B1,0x00CE,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008E,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x00AE,0x00AE,0x11B1,0x4B78,0x3295,0x010F,0x00AE,0x00CE,0x00CE,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008C,0x008C,0x008C,0x006C,0x008D,0x008D,0x008D,0x008D,0x006C,0x006C,0x006C,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x00AD,0x00AD,0x00AD,0x00CE,0x012F,0x32B5,0x3AF6,0x19F2,0x00EE,0x00AD,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008E,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006C,0x006C,0x006C,0x008C,0x008D,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008D,0x008C,0x008C, + 0x008D,0x006D,0x008D,0x008D,0x008D,0x008C,0x008D,0x008C,0x006C,0x008C,0x006C,0x008D,0x006C,0x006C,0x006C,0x008D,0x006C,0x006C,0x006C,0x006C,0x006D,0x006D,0x008D,0x006C,0x006C,0x006D,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008D,0x008D,0x006D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00CE,0x094F,0x2233,0x3AD5,0x2A74,0x11B1,0x00EE,0x008D,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008C,0x008C,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008D,0x008C,0x008D,0x008D,0x008C,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x00AD,0x008D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x08EE,0x2A33,0x4B37,0x3274,0x010E,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x006D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x3294,0x42F6,0x0970,0x00CD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AD,0x19D2,0x42F6,0x092F,0x00AE,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008E,0x008D,0x00AE,0x2A33,0x3AB5,0x00EE,0x008D,0x008D,0x006D,0x008D,0x008D,0x00AD,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x006C,0x2213,0x19D2,0x00AD,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x006D,0x006D,0x006D,0x008D,0x00AE,0x010F,0x32B5,0x2213,0x008D,0x006D,0x006D,0x008E,0x00AE,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AE,0x0150,0x4358,0x19F2,0x00CE,0x00CE,0x00AE,0x008E,0x006D,0x008D,0x006D,0x008E,0x00AE,0x006D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x086D,0x084D,0x104D,0x180C,0x386E,0x92D7,0x9296,0x9A75,0x9234,0x8A75,0x280B,0x182C,0x102C,0x084C,0x004D,0x006D,0x008D,0x006D,0x006D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x008D,0x00AD,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x00EE,0x1190,0x4B78,0x2213,0x00AD,0x008D,0x008D,0x008D,0x008E,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x00AD,0x00CE,0x012F,0x2A54,0x4337,0x19B1,0x00CE,0x00EE,0x00CE,0x00AD,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x006C,0x006D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008C,0x008C,0x008D,0x008C,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x006D,0x006D,0x006D,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x00AD,0x00AD,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00CE,0x094F,0x2A54,0x4B57,0x2213,0x00CE,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x004C,0x006C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C, + 0x006C,0x008C,0x008D,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x00AD,0x008D,0x008C,0x008D,0x006C,0x006C,0x008D,0x008D,0x006D,0x008D,0x008D,0x00AD,0x012F,0x2212,0x3AF6,0x32B5,0x19D2,0x090E,0x008D,0x006C,0x006D,0x006C,0x006C,0x006C,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x00AD,0x00AD,0x006C,0x006C,0x006C,0x008D,0x008C,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x006C,0x008D,0x008D,0x008D,0x006D,0x006C,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x006C,0x008D,0x006D,0x008D,0x008D,0x006D,0x008D,0x006C,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006C,0x006D,0x00AD,0x008D,0x008D,0x008D,0x006D,0x006C,0x008D,0x006D,0x008D,0x008D,0x00AD,0x1991,0x3AB5,0x3AB5,0x1990,0x00AD,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x006D,0x006D,0x006D,0x006D,0x008D,0x006D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x42D6,0x3AD5,0x090F,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006C,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AD,0x1191,0x4316,0x1170,0x00AD,0x008D,0x006D,0x006D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x006D,0x008D,0x008D,0x008D,0x00AE,0x008E,0x008D,0x008D,0x006D,0x008D,0x00EE,0x4317,0x19B1,0x00AE,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x006D,0x006D,0x006C,0x2213,0x19F2,0x00AD,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00CE,0x00AD,0x008D,0x008D,0x006D,0x008D,0x00AE,0x00EF,0x19F2,0x4337,0x00AE,0x008D,0x006D,0x008E,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x00AD,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00CE,0x11B1,0x3B17,0x0950,0x00AE,0x008E,0x008E,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x084D,0x104D,0x204D,0x282C,0x8296,0x8A55,0x9255,0x9296,0x6150,0x200B,0x184C,0x082C,0x084C,0x004C,0x004C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x006D,0x008D,0x006D,0x006D,0x008D,0x008D,0x006D,0x008D,0x008D,0x00AD,0x00AD,0x00CE,0x012F,0x4B57,0x3274,0x00CE,0x008D,0x008D,0x006D,0x006D,0x006D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008D,0x008C,0x008C,0x006C,0x006C,0x008C,0x008D,0x008D,0x00AD,0x00AD,0x00AD,0x006D,0x006D,0x006C,0x006D,0x006D,0x006D,0x008D,0x006D,0x008D,0x008D,0x00CE,0x00CE,0x1191,0x3295,0x32B5,0x014F,0x00EE,0x00AE,0x00AD,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x006C,0x008D,0x006D,0x008D,0x008D,0x008D,0x008C,0x008D,0x008C,0x008D,0x008D,0x006C,0x006C,0x006C,0x006C,0x008C,0x008D,0x008D,0x008D,0x006C,0x006C,0x008C,0x008D,0x008D,0x008C,0x008D,0x008D,0x006C,0x008D,0x006D,0x006D,0x008D,0x008D,0x006C,0x006C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x008D,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x00AD,0x006C,0x006C,0x006C,0x006C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x1190,0x42F6,0x4B57,0x21F2,0x00EE,0x008D,0x006D,0x006D,0x004D,0x006D,0x006D,0x006C,0x006D,0x006D,0x006C,0x006C,0x006C,0x006C,0x006C,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C, + 0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x004C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008D,0x006C,0x006C,0x006C,0x008C,0x00CD,0x2212,0x3AD5,0x32B4,0x11B1,0x010E,0x008D,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008D,0x008C,0x006C,0x008D,0x006C,0x006C,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x006D,0x006D,0x006C,0x006C,0x008D,0x006C,0x006D,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x006C,0x006C,0x006D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x08EE,0x3253,0x42F6,0x2A33,0x00EE,0x00AD,0x008D,0x008D,0x008C,0x006C,0x006C,0x006C,0x006D,0x006D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006C,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008C,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00CE,0x5358,0x3A95,0x00EE,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x006C,0x008C,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x00AD,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x006C,0x006D,0x00AD,0x008D,0x006D,0x006D,0x006D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x092F,0x4B37,0x2212,0x00CE,0x00AD,0x006C,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x006D,0x006D,0x008D,0x00AE,0x00AE,0x008D,0x008D,0x008D,0x008E,0x008D,0x0970,0x4B58,0x00CE,0x00AE,0x008E,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x006D,0x006D,0x004C,0x2212,0x19D2,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x006D,0x006D,0x008D,0x008D,0x00CE,0x0150,0x3AF6,0x19D2,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x006D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AE,0x00EE,0x19F2,0x32B5,0x00EE,0x00AE,0x008E,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x006D,0x004C,0x084D,0x104D,0x184D,0x200C,0x7A75,0x92B6,0x8A54,0x92D6,0x386D,0x180B,0x104C,0x082C,0x004C,0x004C,0x006C,0x006D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x006C,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x00AD,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x00AD,0x008D,0x00AD,0x00CD,0x010E,0x42F6,0x3AD5,0x00CE,0x00AE,0x008D,0x006D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008D,0x008C,0x008C,0x008C,0x008D,0x008C,0x008C,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x006C,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008D,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008D,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006D,0x006C,0x006C,0x008D,0x008D,0x006D,0x006D,0x006C,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x010E,0x19F2,0x4B78,0x19F2,0x00EE,0x00CE,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x006C,0x008D,0x008C,0x008D,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006D,0x006D,0x008C,0x008C,0x006D,0x006C,0x006C,0x008D,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x00AD,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008D,0x008D,0x00CD,0x1170,0x32B5,0x4B78,0x2A13,0x00AD,0x008C,0x006D,0x008D,0x006D,0x006C,0x006D,0x006D,0x008D,0x006C,0x006D,0x006C,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C, + 0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x00AD,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x00AD,0x21B1,0x3AB5,0x3294,0x19B1,0x00CD,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008D,0x008D,0x008D,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008D,0x008D,0x006D,0x008D,0x008D,0x006C,0x008D,0x008C,0x008D,0x008C,0x006C,0x006C,0x006C,0x006D,0x008D,0x008D,0x006C,0x008C,0x00AD,0x1991,0x3A94,0x3274,0x114F,0x00AD,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008D,0x006D,0x006D,0x004D,0x006D,0x006D,0x006D,0x008D,0x008D,0x006C,0x008D,0x008C,0x008D,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x008C,0x008D,0x008D,0x008C,0x006C,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008C,0x008D,0x008D,0x006C,0x008D,0x008C,0x008D,0x008D,0x008D,0x00AD,0x008C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x090F,0x5378,0x2A33,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008D,0x008C,0x006C,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008C,0x008D,0x008C,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x006C,0x006C,0x006C,0x006D,0x008D,0x006D,0x00AD,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x00EE,0x3AD5,0x3294,0x00CE,0x00AD,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x00AD,0x008D,0x008D,0x006D,0x006C,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x2A54,0x2A54,0x00AD,0x008D,0x00AE,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008C,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x00AD,0x008D,0x00AD,0x008D,0x006C,0x006C,0x006C,0x006C,0x2233,0x19D2,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x00AD,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008C,0x00AD,0x008D,0x008D,0x006D,0x008D,0x008D,0x00AE,0x00AE,0x00CE,0x2233,0x32B5,0x00AE,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006C,0x006C,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00AD,0x00EE,0x3294,0x32B5,0x00CE,0x008D,0x006D,0x008D,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008C,0x008C,0x008D,0x008D,0x008C,0x008D,0x008C,0x008D,0x006C,0x086D,0x086D,0x106D,0x184D,0x200C,0x6A14,0x9B37,0x8AB6,0x7A75,0x200B,0x182B,0x084C,0x086C,0x006C,0x006D,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008C,0x006C,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x00AD,0x006C,0x006C,0x006C,0x006C,0x006C,0x008D,0x00AD,0x008C,0x006C,0x006C,0x006D,0x006D,0x008D,0x008D,0x008D,0x00AD,0x00EE,0x42F6,0x42F6,0x010E,0x00AD,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008D,0x008C,0x006C,0x008D,0x008C,0x008D,0x008D,0x006C,0x006C,0x008D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008D,0x006C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006D,0x006C,0x006D,0x006C,0x008D,0x008C,0x008C,0x008C,0x008D,0x008D,0x00AD,0x00CD,0x094F,0x4316,0x4316,0x1170,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x004C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008D,0x008C,0x00AD,0x1170,0x42F5,0x3AF5,0x19D1,0x00EE,0x008D,0x006C,0x006C,0x008D,0x008D,0x006C,0x006C,0x006C,0x006C,0x008D,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C, + 0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006B,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x21D1,0x42F6,0x3A95,0x19B1,0x00EE,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008D,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008D,0x008D,0x008C,0x114F,0x3253,0x42D5,0x21F2,0x00EE,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006D,0x006D,0x006C,0x008D,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008D,0x008C,0x008D,0x006D,0x008D,0x006C,0x008D,0x008D,0x006C,0x008C,0x008D,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008D,0x008D,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008D,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008D,0x006C,0x008C,0x008C,0x006C,0x008C,0x008D,0x008D,0x006D,0x008C,0x008C,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x114F,0x5378,0x21D2,0x00AD,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008D,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x006C,0x006C,0x006C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008C,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008C,0x006C,0x008D,0x008D,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006D,0x006C,0x006C,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x008D,0x008D,0x00CE,0x2A33,0x3AD5,0x092F,0x00AD,0x008D,0x006D,0x006C,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008D,0x008D,0x008D,0x008C,0x008D,0x008C,0x008C,0x008C,0x008D,0x008C,0x008C,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008D,0x008C,0x006D,0x006D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x00AE,0x00AE,0x4B38,0x0950,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x006C,0x008D,0x008D,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x008D,0x008D,0x00AD,0x008C,0x008C,0x008D,0x008C,0x008D,0x006D,0x006C,0x006C,0x006C,0x004C,0x2212,0x19D1,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008C,0x006C,0x008C,0x008C,0x008C,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x00AE,0x0950,0x3AD6,0x012F,0x008D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x006C,0x006C,0x006D,0x008D,0x008D,0x006D,0x006D,0x008D,0x006C,0x008D,0x008D,0x008D,0x006C,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008D,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x00AD,0x00CE,0x012F,0x32B5,0x2212,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008C,0x008D,0x008C,0x006C,0x008C,0x008C,0x008D,0x008D,0x006C,0x008D,0x004C,0x086C,0x084C,0x104C,0x180C,0x5191,0xA3DA,0x9317,0x5170,0x180B,0x102B,0x084C,0x004C,0x004C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x008D,0x008D,0x006D,0x006D,0x008D,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008D,0x008D,0x00AD,0x00EE,0x2A53,0x4316,0x1150,0x00AD,0x00AD,0x008D,0x008D,0x008D,0x006D,0x006D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x008D,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x008D,0x008D,0x006D,0x006D,0x006C,0x006C,0x008D,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x008C,0x008C,0x00AD,0x00AD,0x00EE,0x19D1,0x4316,0x2212,0x00CE,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x004C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x00AC,0x00CD,0x118F,0x3294,0x4316,0x21F2,0x00AD,0x008C,0x008D,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006B,0x006B,0x008C,0x008C,0x006B,0x006C, + 0x008B,0x008C,0x006B,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006B,0x006C,0x006B,0x004B,0x006C,0x006C,0x004B,0x004B,0x004B,0x006C,0x006C,0x006C,0x006C,0x004C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006B,0x006B,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008D,0x1170,0x3AB5,0x3AD5,0x19B1,0x00CD,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006B,0x006B,0x004B,0x004B,0x006B,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008D,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008D,0x006C,0x006C,0x006C,0x008D,0x008C,0x00EE,0x21D1,0x3253,0x3273,0x1190,0x00CD,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008D,0x00AD,0x006D,0x006D,0x006C,0x006C,0x006C,0x006C,0x006C,0x008D,0x008D,0x008D,0x008D,0x19D1,0x4B57,0x1190,0x008D,0x008D,0x008D,0x008D,0x006D,0x006C,0x006D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x008D,0x008C,0x008C,0x008C,0x008D,0x008D,0x006D,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x008D,0x008C,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008D,0x008D,0x008D,0x006C,0x008D,0x008D,0x008D,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008D,0x008D,0x006C,0x006C,0x004C,0x006D,0x008D,0x00CE,0x1190,0x3AB5,0x092F,0x00AD,0x008D,0x008D,0x008D,0x006D,0x008D,0x006D,0x008D,0x008D,0x006C,0x006C,0x006C,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x006C,0x008C,0x008D,0x008C,0x008D,0x008D,0x008D,0x006C,0x008D,0x008C,0x008C,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008D,0x008D,0x008C,0x008C,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008D,0x008D,0x00AD,0x008D,0x006C,0x006C,0x008D,0x00AD,0x00AE,0x19D2,0x3AD6,0x00CE,0x008D,0x008D,0x008D,0x008D,0x006D,0x008D,0x008D,0x008D,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008D,0x008C,0x006C,0x008C,0x008D,0x008C,0x006C,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008D,0x008D,0x006C,0x006C,0x008D,0x006C,0x006C,0x006C,0x008D,0x008D,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008D,0x008C,0x006C,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006C,0x008C,0x00AD,0x008C,0x008C,0x008C,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x00AD,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x006C,0x004C,0x006C,0x004C,0x2A13,0x19B1,0x00AD,0x008D,0x008D,0x008D,0x006C,0x006C,0x008C,0x008C,0x008D,0x008D,0x008D,0x008D,0x008C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008D,0x008D,0x008C,0x008C,0x006C,0x006C,0x008C,0x008D,0x008D,0x008D,0x008C,0x008D,0x006C,0x006C,0x008D,0x008C,0x008D,0x008C,0x008D,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008D,0x008D,0x008C,0x008C,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008D,0x006C,0x006D,0x006D,0x006C,0x006D,0x008D,0x00AD,0x2233,0x2213,0x006D,0x008D,0x008D,0x008D,0x006C,0x006C,0x008C,0x008D,0x006C,0x008C,0x008C,0x008C,0x008C,0x008D,0x008D,0x008D,0x006D,0x008D,0x006C,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x006D,0x006D,0x006D,0x006D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x006C,0x008D,0x006C,0x008D,0x008D,0x006C,0x006D,0x006D,0x006D,0x006D,0x006D,0x006C,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008D,0x008D,0x008C,0x008D,0x00AD,0x00CE,0x1170,0x4316,0x1991,0x008D,0x006D,0x006D,0x006D,0x006D,0x006D,0x008D,0x006D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x004C,0x084C,0x082C,0x102C,0x390F,0xA3FA,0x8316,0x180A,0x100A,0x084B,0x086C,0x086C,0x004C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008D,0x008D,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008D,0x00AD,0x00CD,0x2A13,0x42F6,0x1191,0x00CE,0x008D,0x006D,0x006D,0x006D,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x00AD,0x00AD,0x010E,0x3294,0x42F6,0x1170,0x00AD,0x008D,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x004C,0x006C,0x006C,0x004C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006B,0x006C,0x006B,0x006C,0x004B,0x006B,0x004B,0x006C,0x008C,0x004B,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x00AC,0x00AC,0x00CD,0x094F,0x3294,0x32B4,0x1190,0x00AD,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x004B,0x006B,0x006C,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B, + 0x006B,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x004B,0x006C,0x006C,0x004B,0x006C,0x006C,0x004B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x116F,0x4AF6,0x42F6,0x2A12,0x08EE,0x008C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006C,0x006B,0x006B,0x006C,0x006B,0x006B,0x008C,0x006C,0x008C,0x006C,0x006B,0x008C,0x006B,0x008C,0x006C,0x006B,0x006B,0x008C,0x006C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x112F,0x2A33,0x3294,0x2A32,0x00ED,0x00AC,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008D,0x006C,0x006C,0x006C,0x006C,0x008C,0x008D,0x008D,0x008D,0x2A33,0x5BD9,0x116F,0x00AD,0x008D,0x008D,0x008D,0x006C,0x006C,0x006C,0x006C,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008D,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006D,0x00AD,0x092F,0x3AD5,0x1190,0x00AD,0x008D,0x008D,0x006C,0x008D,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008D,0x008D,0x006D,0x006D,0x006D,0x006D,0x008C,0x008C,0x006C,0x008C,0x008C,0x008D,0x008C,0x006C,0x008D,0x008D,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008D,0x006C,0x008C,0x006C,0x006C,0x008C,0x008D,0x00AD,0x00CE,0x42F6,0x21F2,0x00AD,0x008D,0x008D,0x006C,0x006C,0x006D,0x008D,0x008D,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008D,0x006C,0x006C,0x006C,0x008D,0x008C,0x008C,0x008D,0x008C,0x008D,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008D,0x006C,0x006C,0x004C,0x004C,0x004C,0x2212,0x19B1,0x008D,0x008D,0x008D,0x008D,0x006D,0x006C,0x006C,0x008C,0x008D,0x006C,0x006D,0x006D,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008D,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006D,0x006D,0x006D,0x008D,0x1190,0x3295,0x00CE,0x008D,0x008D,0x008D,0x008D,0x006C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008D,0x006D,0x006D,0x006D,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006D,0x008D,0x008D,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006D,0x006D,0x008D,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008D,0x00AD,0x00CE,0x19B1,0x42F6,0x0930,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x006D,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x084C,0x084C,0x082B,0x208D,0x9C1B,0x6253,0x080A,0x082A,0x084B,0x006C,0x004C,0x004C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008D,0x008C,0x008D,0x006C,0x006C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x00AC,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008D,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x00AD,0x1191,0x42D6,0x21F2,0x00AD,0x008D,0x006D,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006B,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x00AD,0x00CD,0x19D1,0x42F6,0x2A12,0x00CE,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x008C,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x004B,0x006C,0x006C,0x006C,0x006C,0x006C,0x004B,0x004B,0x006B,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x00AC,0x00ED,0x1190,0x3294,0x3AB5,0x114F,0x008C,0x008D,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B, + 0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006C,0x004B,0x006C,0x006C,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x004B,0x004B,0x004B,0x006C,0x006C,0x006B,0x006C,0x008C,0x008C,0x090E,0x3274,0x42F6,0x3233,0x090E,0x006C,0x008C,0x006C,0x006C,0x006C,0x006B,0x008C,0x006C,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006C,0x008C,0x008C,0x006C,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006C,0x006C,0x006B,0x006C,0x006B,0x008C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x004B,0x006C,0x006C,0x006C,0x006C,0x008C,0x00CD,0x19B1,0x3253,0x2A32,0x1990,0x00AC,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x004C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006B,0x006B,0x006B,0x004B,0x004B,0x008C,0x008C,0x006C,0x006C,0x006C,0x004C,0x004C,0x006C,0x006C,0x008C,0x008C,0x008C,0x00AD,0x3253,0x5377,0x092E,0x008C,0x008C,0x006C,0x006C,0x008C,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006B,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x00AD,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x00AD,0x090E,0x3294,0x2A33,0x00CE,0x00AD,0x008D,0x008C,0x006C,0x006C,0x006C,0x008D,0x008C,0x006C,0x006C,0x006C,0x008D,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x00AD,0x00CE,0x012F,0x4316,0x00EE,0x008D,0x008D,0x008D,0x006C,0x006C,0x006C,0x008D,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008D,0x008D,0x006C,0x004C,0x006C,0x006C,0x004C,0x2A12,0x19D1,0x008D,0x008D,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x008C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008D,0x00CE,0x3294,0x1191,0x00AD,0x008D,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x00AD,0x008C,0x006C,0x006C,0x008C,0x008D,0x008D,0x00AD,0x21F2,0x42F6,0x00EE,0x00AD,0x008D,0x006D,0x006D,0x006D,0x008D,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x004C,0x006C,0x004B,0x082B,0x080A,0x7316,0x28EE,0x080A,0x082B,0x086C,0x006C,0x006C,0x004C,0x006C,0x004C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008D,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006B,0x006B,0x006C,0x006C,0x006B,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x00AD,0x1170,0x3AD5,0x2213,0x00CD,0x008D,0x006C,0x006C,0x004C,0x004C,0x006C,0x006C,0x006C,0x008C,0x006B,0x006B,0x006C,0x006C,0x004B,0x006C,0x006C,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006B,0x006C,0x006C,0x006C,0x006C,0x004B,0x006C,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006B,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006B,0x006C,0x006C,0x008C,0x008B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x00AD,0x092F,0x3AB5,0x3AD5,0x1170,0x00AD,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x008B,0x008B,0x008B,0x006B,0x006B,0x006B,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006C,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x006B,0x006B,0x006B,0x008B,0x008B,0x006B,0x008C,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x004B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006C,0x006B,0x008C,0x006B,0x008C,0x00AC,0x00AC,0x00ED,0x21F1,0x4336,0x3294,0x092E,0x00AD,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B, + 0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006C,0x004B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006C,0x006C,0x008C,0x008C,0x008C,0x08ED,0x3253,0x4AF6,0x3253,0x114F,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006C,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x008B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x008C,0x006C,0x006B,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006C,0x004B,0x006B,0x006C,0x008C,0x114F,0x2A32,0x3A94,0x21F2,0x090E,0x008C,0x008C,0x008C,0x006C,0x006B,0x006B,0x008C,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006B,0x008C,0x006B,0x006B,0x006C,0x006C,0x004B,0x006C,0x004B,0x006C,0x006C,0x006C,0x006C,0x004C,0x006C,0x008C,0x008C,0x008C,0x00AC,0x3294,0x4316,0x010E,0x00AC,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006B,0x006B,0x008B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x00AD,0x00CD,0x2212,0x3AD5,0x00EE,0x00AD,0x008D,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x00AD,0x00CD,0x19F2,0x3274,0x008D,0x00AD,0x006D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x004C,0x004C,0x2212,0x19B1,0x008D,0x008D,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006B,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x00AD,0x21F2,0x3AD5,0x00CD,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008D,0x008D,0x00EE,0x3254,0x3295,0x00CE,0x008D,0x008D,0x008D,0x006D,0x006D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x004B,0x004B,0x004B,0x004B,0x000A,0x108C,0x082B,0x000A,0x084B,0x006B,0x004B,0x004C,0x004C,0x004B,0x006C,0x006C,0x006C,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x008C,0x006C,0x004C,0x004B,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008D,0x00AD,0x094F,0x3295,0x3274,0x00EE,0x008C,0x006C,0x006C,0x004C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006C,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006B,0x008C,0x008C,0x006B,0x006B,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x006B,0x006C,0x006B,0x006C,0x008C,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x008C,0x008C,0x008C,0x00AC,0x00CD,0x19B1,0x3AB5,0x3253,0x08EE,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006C,0x006B,0x006B,0x006B,0x006C,0x008C,0x00AC,0x00CC,0x010D,0x2212,0x4336,0x3273,0x090E,0x008C,0x008C,0x006C,0x006C,0x006C,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B, + 0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x008C,0x008C,0x08ED,0x2A12,0x42F5,0x3273,0x112E,0x006C,0x006B,0x008C,0x006C,0x008C,0x006C,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006C,0x006C,0x006B,0x006C,0x006B,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x008C,0x006B,0x006B,0x004B,0x006B,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006C,0x004B,0x006C,0x006C,0x00CD,0x21D1,0x3253,0x3273,0x19B0,0x00AC,0x006B,0x006B,0x006B,0x008C,0x008C,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x008C,0x006B,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006B,0x006B,0x006C,0x006B,0x006B,0x006C,0x006C,0x004B,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x00CD,0x3AD5,0x3294,0x00CD,0x00CD,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x004B,0x006B,0x006C,0x006C,0x006B,0x006B,0x006C,0x006B,0x006C,0x006C,0x008C,0x006C,0x006C,0x006B,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006B,0x008C,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008B,0x006B,0x008B,0x008C,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x004C,0x004C,0x006C,0x00AD,0x00CD,0x19B0,0x4B36,0x094F,0x00AD,0x008D,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006B,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x00AD,0x00AD,0x4316,0x1190,0x008D,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x004C,0x004C,0x002B,0x2A32,0x19D1,0x008D,0x008D,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006B,0x008C,0x008C,0x008C,0x006C,0x004C,0x006C,0x006C,0x006C,0x008C,0x008C,0x00AD,0x092F,0x4316,0x00EE,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x004B,0x006C,0x006B,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x00AD,0x010E,0x2A54,0x19D2,0x006D,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x004B,0x006C,0x006B,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x00AD,0x094F,0x3AB5,0x3AD5,0x092F,0x00AD,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x004B,0x004B,0x006B,0x006C,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x006B,0x006B,0x006B,0x008B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x090E,0x3294,0x3AD5,0x1990,0x00CD,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x008C,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x008B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x008C,0x008C,0x00AC,0x00AC,0x090E,0x3273,0x4B36,0x3253,0x090E,0x00AC,0x006C,0x006B,0x006C,0x006C,0x006B,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006C,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004B,0x004B, + 0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x008C,0x00AD,0x3253,0x5336,0x3253,0x114F,0x00AC,0x008C,0x006B,0x006B,0x004B,0x006B,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004B,0x004B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x008B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006C,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x008C,0x092E,0x2A32,0x3293,0x21F1,0x00CD,0x008C,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x008C,0x006B,0x006C,0x006B,0x006B,0x006B,0x008C,0x006B,0x006B,0x008C,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x004B,0x004B,0x006C,0x006C,0x006C,0x008C,0x008C,0x00AD,0x42F5,0x2A53,0x00ED,0x00AC,0x008C,0x008C,0x006B,0x006B,0x008C,0x006C,0x006C,0x006C,0x006C,0x006B,0x004B,0x006B,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x008C,0x006C,0x006B,0x008C,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x008C,0x006B,0x006C,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006C,0x006B,0x006B,0x008C,0x008C,0x006B,0x008C,0x008C,0x006B,0x008B,0x006B,0x006B,0x006C,0x006B,0x006B,0x008B,0x008B,0x008B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x004C,0x008C,0x00EE,0x092E,0x42F6,0x19D1,0x00CD,0x008C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x008C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008D,0x00AD,0x092F,0x4316,0x00EE,0x008C,0x006C,0x004C,0x004C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x00AC,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006B,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006B,0x006B,0x008C,0x008C,0x006B,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006B,0x006C,0x006B,0x006B,0x006B,0x008B,0x006B,0x006C,0x006C,0x004C,0x004B,0x004C,0x002B,0x2212,0x19B1,0x008D,0x008D,0x008C,0x008C,0x006C,0x008C,0x006C,0x008C,0x006C,0x008C,0x006C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006B,0x006C,0x008C,0x008C,0x006B,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x006C,0x006C,0x006B,0x006B,0x006C,0x008C,0x006C,0x004B,0x004C,0x006C,0x008C,0x006C,0x006C,0x008C,0x00CD,0x2A94,0x11B0,0x008C,0x006C,0x004C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x008C,0x008C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x004B,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008B,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x004B,0x004B,0x006B,0x006C,0x006C,0x006B,0x006B,0x006C,0x008C,0x00AD,0x0950,0x2A74,0x1170,0x00AD,0x008D,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006C,0x006C,0x006B,0x006B,0x006C,0x006C,0x006B,0x006C,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x00AD,0x090F,0x2A53,0x42F6,0x092F,0x008C,0x008C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x008C,0x00CD,0x19B0,0x3AB4,0x3253,0x092F,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x004B,0x006C,0x004B,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006C,0x008C,0x008C,0x00CC,0x092E,0x2A32,0x42D5,0x2A32,0x00ED,0x008C,0x008C,0x006C,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x006B,0x004B,0x006B,0x004A,0x004A, + 0x006B,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x008C,0x008C,0x00ED,0x2212,0x42F6,0x3253,0x090E,0x008C,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006A,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008C,0x00CD,0x19B0,0x3AD4,0x3253,0x114E,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006C,0x006C,0x004B,0x004C,0x006C,0x008C,0x092E,0x42F5,0x2212,0x00CD,0x00CD,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006C,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006C,0x006C,0x006B,0x004B,0x006B,0x004B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x004B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x008B,0x008B,0x008B,0x008C,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006C,0x004C,0x006C,0x006C,0x00AD,0x00CD,0x3AB4,0x2A32,0x00AC,0x006C,0x008C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x008C,0x006B,0x006B,0x006C,0x008C,0x006B,0x006C,0x006C,0x006C,0x006B,0x006C,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006B,0x006B,0x006C,0x006B,0x006B,0x006C,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x006B,0x006C,0x004C,0x004C,0x006C,0x008D,0x00CD,0x3294,0x19D1,0x00AD,0x006C,0x004B,0x004B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x008C,0x008B,0x006B,0x006B,0x006C,0x006B,0x006C,0x006B,0x006C,0x006B,0x006C,0x006C,0x006B,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006B,0x006B,0x006C,0x008C,0x006C,0x006B,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x004B,0x006B,0x008B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x2A12,0x19B1,0x008D,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x008C,0x006B,0x006B,0x006C,0x006C,0x006C,0x006B,0x008C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006B,0x008C,0x006C,0x006B,0x006C,0x006C,0x006B,0x006C,0x006B,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006C,0x004B,0x006B,0x006C,0x006C,0x004B,0x006C,0x008C,0x00CD,0x19F2,0x32D5,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x008C,0x006B,0x006C,0x006C,0x006C,0x004B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x004B,0x006C,0x006C,0x006B,0x006B,0x006C,0x006C,0x004B,0x004B,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x004B,0x006C,0x006B,0x006C,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x008C,0x008C,0x008C,0x006B,0x008B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x008C,0x00CD,0x1190,0x3AF6,0x010E,0x008D,0x006C,0x006C,0x006C,0x006C,0x004B,0x006C,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x006B,0x006B,0x008B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x004C,0x006C,0x008D,0x00CD,0x21F2,0x3AF5,0x116F,0x00AD,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x008B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006C,0x006C,0x006B,0x008C,0x090E,0x2A33,0x3AB5,0x21D1,0x00CD,0x008C,0x006C,0x006C,0x006C,0x006C,0x006B,0x004B,0x006B,0x006B,0x006C,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x008C,0x00AC,0x114E,0x3273,0x3AB4,0x21F1,0x010D,0x00AC,0x006C,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004A,0x006B,0x004A,0x006B,0x006B, + 0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x004A,0x006B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004B,0x004A,0x004B,0x006B,0x004A,0x004A,0x004A,0x004B,0x004B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006C,0x008C,0x08EE,0x2A12,0x42F6,0x3294,0x114F,0x00AD,0x006C,0x006B,0x006B,0x004B,0x004A,0x004B,0x004A,0x006B,0x004B,0x004A,0x006B,0x004B,0x006B,0x004A,0x004B,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006A,0x008B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x008C,0x008C,0x116F,0x3253,0x3AB4,0x19B0,0x00CC,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004A,0x006A,0x006A,0x006B,0x006A,0x004A,0x006A,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006C,0x004B,0x006C,0x006C,0x006C,0x008C,0x114F,0x4316,0x19B0,0x00AD,0x00AC,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x008B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006C,0x006C,0x00AD,0x2A32,0x3A94,0x00ED,0x008C,0x006C,0x006C,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x006B,0x006B,0x006B,0x006B,0x004C,0x004C,0x006D,0x006C,0x00EE,0x3AF5,0x092F,0x008C,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006C,0x006C,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x2A12,0x19B0,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006B,0x004B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x006B,0x006C,0x006C,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x006C,0x006C,0x00AD,0x012F,0x4316,0x00EE,0x008C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006C,0x006B,0x008C,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006C,0x004B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006C,0x006C,0x004B,0x006C,0x006B,0x006B,0x006C,0x006B,0x006C,0x008C,0x004B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x00AD,0x010E,0x2212,0x32B5,0x008D,0x008C,0x006C,0x006C,0x006C,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x006C,0x004B,0x004B,0x006C,0x008C,0x00CD,0x19B1,0x3AD5,0x19B1,0x008C,0x008C,0x006C,0x006C,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x008C,0x00AD,0x116F,0x2A53,0x3253,0x092F,0x006C,0x006C,0x006C,0x006C,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x00CC,0x094E,0x2A32,0x3293,0x21D1,0x00ED,0x008C,0x008C,0x006C,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x006B, + 0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004A,0x002A,0x002A,0x004A,0x004A,0x002A,0x002A,0x002A,0x004A,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x08ED,0x21F1,0x42D5,0x3A94,0x112F,0x008C,0x008C,0x008C,0x006B,0x004B,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x004A,0x006B,0x006B,0x006A,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004B,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006C,0x090E,0x21F1,0x3294,0x2A12,0x090E,0x008B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x006A,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x008B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006C,0x00AC,0x19B0,0x3AD5,0x1190,0x00AC,0x00AC,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x008B,0x008B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x004B,0x004B,0x004B,0x006C,0x008C,0x19B1,0x3AB5,0x08EE,0x008C,0x008C,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004C,0x004C,0x004C,0x004C,0x1190,0x2212,0x00CD,0x008C,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x006B,0x006B,0x006B,0x008C,0x006B,0x004A,0x004A,0x004B,0x004B,0x2A12,0x19D1,0x008C,0x006C,0x006C,0x006C,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006C,0x008C,0x00CD,0x2A33,0x2A53,0x008C,0x008C,0x006C,0x006C,0x006C,0x006C,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x008C,0x00CD,0x092F,0x2A53,0x2212,0x00CD,0x008D,0x006C,0x006C,0x006C,0x006C,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x008C,0x00AD,0x1990,0x3AD5,0x2212,0x00AD,0x006C,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004A,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006C,0x008C,0x090E,0x19B1,0x3274,0x2A12,0x00CD,0x006C,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006A,0x006A,0x006B,0x006A,0x006B,0x004B,0x004B,0x004A,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006A,0x006B,0x004A,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x008C,0x00CC,0x116F,0x2A52,0x3294,0x2A32,0x090E,0x008C,0x006C,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004A,0x004A, + 0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x002A,0x002A,0x004A,0x002A,0x004A,0x002A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x008C,0x3232,0x42F5,0x3273,0x116F,0x00AD,0x008C,0x006B,0x006B,0x006B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x008C,0x116F,0x3A94,0x3AB4,0x19B0,0x00AC,0x006B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004B,0x006B,0x006B,0x004B,0x006B,0x004A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x004A,0x004A,0x004B,0x004A,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006C,0x008C,0x2A32,0x3AD5,0x116F,0x00AC,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x006C,0x08EE,0x42D5,0x1170,0x008C,0x006C,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004C,0x004C,0x006C,0x006C,0x3294,0x1190,0x008C,0x006C,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004B,0x002A,0x2212,0x19B0,0x008C,0x006C,0x006C,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006C,0x008C,0x112F,0x4316,0x00EE,0x008C,0x006C,0x006C,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x008C,0x00AD,0x00AD,0x092F,0x3AD5,0x1190,0x008C,0x006C,0x006C,0x006C,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004A,0x006B,0x004B,0x004A,0x004B,0x006B,0x008B,0x006A,0x006A,0x004A,0x004A,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006C,0x00AD,0x1170,0x3AD5,0x2A12,0x008C,0x006C,0x006C,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006A,0x004A,0x006A,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004A,0x006B,0x006B,0x006B,0x004A,0x004B,0x004B,0x004B,0x004B,0x004A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x004A,0x006B,0x004A,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006A,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006C,0x00AC,0x114F,0x3273,0x3A94,0x114F,0x008C,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006A,0x006A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006B,0x006B,0x004A,0x006B,0x004A,0x004A,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x008C,0x00CD,0x116F,0x2A32,0x3294,0x2A12,0x090E,0x008C,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004A,0x004B, + 0x006B,0x006B,0x004B,0x004A,0x004A,0x006B,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x006A,0x006B,0x004A,0x004A,0x002A,0x002A,0x002A,0x004A,0x004B,0x004B,0x004B,0x008B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x00AC,0x21B0,0x3AB4,0x3A94,0x198F,0x008B,0x006B,0x006B,0x006B,0x004B,0x004A,0x004B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x004A,0x006B,0x004A,0x004A,0x004A,0x004B,0x006B,0x006B,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x008B,0x00CD,0x21F1,0x3AB4,0x3252,0x090E,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006A,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x00AC,0x2A32,0x3294,0x112E,0x008C,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x008B,0x008B,0x008B,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x004A,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006C,0x00CD,0x42F5,0x21D1,0x008C,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006A,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006C,0x006C,0x090F,0x3AD5,0x00ED,0x00AC,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004B,0x2212,0x1190,0x008C,0x006C,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x004B,0x004B,0x006B,0x004B,0x006C,0x008C,0x3294,0x19B0,0x006C,0x006C,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x008B,0x006B,0x004B,0x004B,0x006B,0x006B,0x008C,0x00CD,0x11B1,0x3AF6,0x010E,0x006C,0x006C,0x006C,0x004B,0x004B,0x006B,0x004B,0x004B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x006B,0x004A,0x006B,0x006B,0x004A,0x004A,0x004B,0x004B,0x004B,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x004B,0x006B,0x008B,0x008C,0x004B,0x004B,0x004B,0x006B,0x008C,0x092F,0x3A94,0x21F2,0x00AD,0x006B,0x006C,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x006A,0x006B,0x006A,0x006A,0x006B,0x006B,0x004A,0x006A,0x004A,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x004A,0x006B,0x004B,0x006B,0x006A,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006A,0x006B,0x004A,0x004A,0x004B,0x004B,0x004B,0x006B,0x006C,0x004B,0x006B,0x006B,0x006B,0x008C,0x00ED,0x21D1,0x3A73,0x21F1,0x00CD,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004A,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004A,0x006A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006B,0x006B,0x006A,0x006B,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006B,0x004A,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x00AC,0x00CC,0x118F,0x2A12,0x3294,0x2211,0x092E,0x00AC,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B, + 0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x006B,0x004A,0x006B,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x008B,0x004B,0x004B,0x004B,0x004A,0x004B,0x006B,0x006B,0x008B,0x00AC,0x21B0,0x3AB4,0x3AB4,0x19B0,0x00AC,0x008B,0x006B,0x006B,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004B,0x004B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006A,0x006A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004A,0x006B,0x004A,0x006A,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004B,0x004B,0x006B,0x004B,0x004B,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004B,0x004A,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004B,0x004B,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x008C,0x114E,0x3273,0x3AD4,0x114E,0x00AC,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006A,0x006B,0x004A,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006A,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006A,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x008C,0x00CD,0x3AD4,0x3A94,0x090E,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x008B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006B,0x006A,0x004A,0x006B,0x006A,0x004A,0x006A,0x004A,0x006A,0x006B,0x006A,0x006A,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x3273,0x3273,0x00AC,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x004B,0x004B,0x004B,0x006C,0x006C,0x006C,0x3254,0x2A33,0x00AD,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x002A,0x2212,0x1190,0x006C,0x008C,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006C,0x006C,0x1190,0x3294,0x006C,0x006C,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004B,0x004A,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006C,0x008C,0x00ED,0x2212,0x3274,0x00CD,0x006C,0x006B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004A,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004A,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x004B,0x004B,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004B,0x004B,0x004A,0x004A,0x004A,0x004B,0x006B,0x006B,0x004A,0x006B,0x006B,0x008B,0x008C,0x004B,0x002A,0x004B,0x004B,0x006B,0x008C,0x090E,0x3274,0x3254,0x00AC,0x008C,0x008C,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x004A,0x004B,0x004B,0x004B,0x004B,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x006B,0x008B,0x006A,0x006A,0x006B,0x004A,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x004B,0x006B,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x008C,0x00AC,0x114F,0x3253,0x3273,0x114E,0x008C,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x004A,0x006B,0x004A,0x006A,0x006A,0x006B,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x008B,0x00AC,0x00ED,0x116F,0x2232,0x3293,0x2211,0x08ED,0x008B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004A, + 0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004B,0x004B,0x006B,0x004A,0x004A,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004A,0x004A,0x006B,0x006B,0x004B,0x004A,0x004A,0x004B,0x006B,0x006B,0x00CD,0x1990,0x3273,0x3A93,0x21B0,0x00AC,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004B,0x006A,0x004A,0x004B,0x004A,0x004B,0x004B,0x004A,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006B,0x008B,0x006B,0x006A,0x006A,0x004A,0x006A,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004A,0x004B,0x004A,0x004B,0x004B,0x006B,0x008C,0x00ED,0x21F1,0x3293,0x2A11,0x00ED,0x008B,0x006B,0x006B,0x004B,0x004A,0x002A,0x004B,0x004B,0x004A,0x004A,0x004B,0x004B,0x004B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006A,0x006B,0x006B,0x006B,0x004A,0x006A,0x006B,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006B,0x004A,0x004B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x008B,0x00ED,0x42F5,0x3253,0x00CD,0x008B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x006B,0x006B,0x004A,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006C,0x008C,0x2A12,0x3A94,0x00ED,0x008C,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006A,0x004A,0x004B,0x006B,0x004B,0x006C,0x006C,0x00CE,0x42F6,0x114F,0x008C,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x006A,0x006B,0x006B,0x006A,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004B,0x004A,0x006A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x2A32,0x19B0,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004A,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x008C,0x00ED,0x42F5,0x08ED,0x008C,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x008B,0x006B,0x006B,0x006B,0x004B,0x004A,0x004A,0x004B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x008C,0x00CD,0x2A53,0x21F2,0x008C,0x006C,0x006C,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x008C,0x08EE,0x3274,0x3274,0x00ED,0x008C,0x008C,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004A,0x004B,0x004B,0x004A,0x004A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x004A,0x006B,0x004A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x006A,0x006A,0x006B,0x006B,0x004A,0x004B,0x004A,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x008C,0x08ED,0x21F1,0x3AB4,0x2A11,0x08ED,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006A,0x006B,0x004A,0x006A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004B,0x004B,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x008B,0x008C,0x00AC,0x010D,0x198F,0x2211,0x3253,0x19B0,0x00ED,0x008B,0x006B,0x006B,0x006B,0x004B,0x004A, + 0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004B,0x004A,0x004B,0x004A,0x002A,0x004B,0x004B,0x008C,0x00AC,0x1970,0x3253,0x3A94,0x29F1,0x08ED,0x008B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006A,0x004A,0x006A,0x006B,0x006B,0x004A,0x006B,0x004A,0x006A,0x006A,0x008B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x004A,0x004A,0x006B,0x006A,0x004A,0x006A,0x004A,0x006B,0x006B,0x004A,0x004B,0x004B,0x004B,0x004A,0x004B,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x008C,0x116F,0x3293,0x3A94,0x19B0,0x00AC,0x008B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006A,0x006A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x004A,0x006A,0x004A,0x006B,0x004A,0x006B,0x006B,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006A,0x004A,0x004A,0x006B,0x004B,0x006B,0x004B,0x004B,0x004A,0x006B,0x004B,0x004B,0x004B,0x004A,0x006B,0x006B,0x090D,0x42F5,0x2A32,0x00CC,0x006B,0x004B,0x004B,0x004A,0x004B,0x004B,0x006B,0x004B,0x004B,0x004A,0x006A,0x006A,0x004A,0x006B,0x008B,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004B,0x006B,0x006B,0x004A,0x004B,0x006B,0x006B,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x114F,0x4B15,0x112E,0x008C,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x004B,0x002B,0x004B,0x006B,0x006C,0x19D1,0x3AD5,0x008C,0x006C,0x004B,0x004B,0x006B,0x004A,0x006B,0x004A,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x002A,0x21F1,0x19B0,0x006C,0x006C,0x006B,0x006B,0x006B,0x006B,0x006A,0x004A,0x004B,0x006B,0x004A,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004A,0x006B,0x004A,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004B,0x004B,0x006A,0x004A,0x004A,0x004B,0x004A,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x006B,0x008C,0x2A32,0x3253,0x008C,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x004A,0x004A,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x008C,0x094F,0x3294,0x19B0,0x00AC,0x006C,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x004A,0x004B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006A,0x006A,0x006A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004A,0x004A,0x006B,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x006A,0x004A,0x004A,0x004A,0x004B,0x004B,0x002A,0x004B,0x004B,0x006B,0x006C,0x00CD,0x2A32,0x3AB4,0x092F,0x008C,0x008C,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x008B,0x008B,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x004A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006C,0x00AC,0x114E,0x3253,0x3273,0x19B0,0x00AC,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006A,0x006B,0x004A,0x006B,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x004A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006B,0x004A,0x006B,0x004A,0x006B,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x00AC,0x00ED,0x118F,0x2211,0x2A52,0x21D0,0x00CC,0x008B,0x006B,0x004B,0x006B, + 0x006B,0x006A,0x006B,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006B,0x004B,0x004B,0x006B,0x004B,0x006B,0x004B,0x004B,0x002A,0x004B,0x004B,0x004B,0x004B,0x002A,0x004A,0x004B,0x006B,0x006B,0x00AC,0x1170,0x3273,0x3253,0x21D1,0x090E,0x008C,0x006B,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x002A,0x002A,0x004B,0x004B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x006A,0x006A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006B,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x008C,0x00CD,0x21D1,0x3273,0x29F1,0x08ED,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x002A,0x002A,0x002A,0x002A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006A,0x004A,0x006A,0x006B,0x006A,0x006A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006B,0x006A,0x006A,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x008B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004B,0x006B,0x008B,0x008B,0x116E,0x42D4,0x21D0,0x008B,0x006B,0x006B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x008B,0x008B,0x006B,0x006A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x004A,0x006A,0x004B,0x006B,0x006A,0x004A,0x006A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x008B,0x006A,0x006A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x006B,0x006B,0x008B,0x006B,0x006B,0x006A,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x08ED,0x42D4,0x196F,0x00AC,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x004A,0x006A,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x008B,0x006B,0x004A,0x004A,0x004B,0x004B,0x006B,0x008C,0x3AD5,0x19D1,0x008C,0x006B,0x006B,0x006B,0x008B,0x006B,0x006A,0x004A,0x006A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006B,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x006A,0x006B,0x006A,0x006B,0x004A,0x004A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x002A,0x002A,0x2A11,0x118F,0x006C,0x006C,0x006B,0x006B,0x004B,0x006B,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006B,0x006B,0x006B,0x006A,0x006A,0x006B,0x006A,0x006A,0x004A,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004A,0x006A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x008C,0x090E,0x42B4,0x00AC,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006A,0x004A,0x006A,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x006B,0x006A,0x004A,0x006B,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006A,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x008C,0x19B0,0x3AF5,0x092F,0x006C,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004A,0x006A,0x006B,0x006B,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x004A,0x006B,0x006A,0x004A,0x004A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006A,0x004A,0x006B,0x006A,0x006A,0x006B,0x006B,0x004A,0x006B,0x004A,0x004A,0x006B,0x006B,0x004A,0x006B,0x006A,0x006B,0x004A,0x006A,0x006A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006C,0x00AC,0x2A12,0x3AD5,0x1190,0x00AC,0x008C,0x008B,0x006B,0x006B,0x004B,0x004B,0x004A,0x004A,0x006B,0x006A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006B,0x006A,0x006A,0x006B,0x006A,0x006A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004A,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x008C,0x00AC,0x21D1,0x3A94,0x2A32,0x092E,0x008B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004A,0x004B,0x006B,0x004A,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x002A,0x004A,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x008C,0x08ED,0x19D0,0x3273,0x2A73,0x116F,0x00CC,0x008C,0x006B, + 0x006A,0x004A,0x006A,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004B,0x004A,0x004B,0x004A,0x004B,0x006B,0x00CD,0x116F,0x2A53,0x3AD5,0x2212,0x090E,0x00AC,0x008C,0x006B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x002A,0x004A,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004B,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x00CD,0x196F,0x2A12,0x3273,0x116F,0x00AC,0x006B,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x008B,0x006B,0x006B,0x006B,0x006A,0x006A,0x004A,0x004A,0x006B,0x006A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x008C,0x21B0,0x4B35,0x21D0,0x008B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x008B,0x006A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x004A,0x006B,0x006B,0x004A,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x00AC,0x42D4,0x29F1,0x00AC,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004A,0x006B,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006A,0x006B,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x008B,0x004A,0x006A,0x006B,0x006A,0x004A,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x006B,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006B,0x004A,0x006A,0x006B,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006B,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004B,0x002B,0x006B,0x112E,0x4B36,0x00ED,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x006A,0x006B,0x006B,0x006A,0x004A,0x006A,0x006A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006A,0x006B,0x004A,0x006A,0x006B,0x006B,0x004A,0x006A,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x002A,0x002A,0x2211,0x118F,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006B,0x004A,0x006A,0x006B,0x006B,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006B,0x006B,0x006B,0x004B,0x004A,0x006B,0x006A,0x006A,0x006A,0x006B,0x006A,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x008C,0x3253,0x114E,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004A,0x006B,0x004B,0x004A,0x006B,0x006B,0x00AC,0x2212,0x3AB4,0x00CD,0x008C,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x006B,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x002B,0x004B,0x006B,0x008C,0x00CC,0x1990,0x3AB4,0x2211,0x00CC,0x008B,0x006B,0x006B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x002A,0x004A,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x008C,0x090E,0x29F1,0x3A93,0x21B0,0x00AC,0x008B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x002A,0x004A,0x004A,0x006A,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x004B,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x00AC,0x092E,0x19D0,0x32B4,0x2A32,0x094E,0x00CC, + 0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004A,0x002A,0x002A,0x004B,0x008C,0x114F,0x2A32,0x3274,0x21F2,0x092E,0x00AC,0x008C,0x006C,0x004B,0x004B,0x004B,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x006B,0x006B,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x092E,0x21D1,0x2A12,0x29F1,0x08ED,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004A,0x004B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006B,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006B,0x004A,0x008B,0x006A,0x004A,0x006B,0x006B,0x004B,0x006B,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x008C,0x21D1,0x4B15,0x116F,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x008B,0x006B,0x006A,0x006B,0x008B,0x006B,0x004A,0x004A,0x004B,0x004B,0x006B,0x008B,0x2A32,0x3252,0x00CD,0x006C,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006B,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006B,0x006A,0x004A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x002A,0x002A,0x004B,0x008C,0x3273,0x2A32,0x00AC,0x006B,0x004B,0x006B,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006A,0x006B,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x004A,0x004A,0x006A,0x006A,0x006A,0x006B,0x004A,0x006B,0x004A,0x006B,0x004A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x0029,0x004A,0x002A,0x004A,0x2A11,0x1990,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006B,0x006A,0x006B,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006B,0x006A,0x006A,0x006B,0x006A,0x006B,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006B,0x006B,0x006A,0x004A,0x004B,0x006B,0x006B,0x004B,0x004B,0x008C,0x196F,0x3A73,0x006B,0x004B,0x004A,0x002A,0x004B,0x004A,0x006B,0x006A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006B,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006A,0x004A,0x006B,0x006A,0x006A,0x006B,0x008B,0x00ED,0x3273,0x2A32,0x00AC,0x006C,0x004B,0x004B,0x004B,0x004B,0x004A,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x008B,0x004A,0x006B,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x008C,0x116F,0x32B4,0x3273,0x00ED,0x008C,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x002A,0x002A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x008C,0x114E,0x3252,0x2A52,0x092E,0x00AC,0x006B,0x006B,0x004B,0x004B,0x004A,0x004B,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x008B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x008C,0x00CC,0x092E,0x2232,0x3294,0x2211, + 0x006B,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x002A,0x004B,0x004B,0x006B,0x006B,0x004A,0x002A,0x006B,0x112E,0x2A12,0x3273,0x2A32,0x114F,0x00CD,0x008C,0x006B,0x006B,0x004B,0x004B,0x004A,0x004B,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x006B,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x00AC,0x1990,0x2A32,0x2A52,0x116F,0x008C,0x006B,0x006B,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x004A,0x006B,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004B,0x004B,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004B,0x004A,0x006B,0x008C,0x2A11,0x42F5,0x090D,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x006A,0x006B,0x004A,0x006A,0x006A,0x006B,0x006A,0x004A,0x006A,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006B,0x006A,0x006B,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004B,0x004B,0x004B,0x004B,0x006B,0x008B,0x116F,0x3AD4,0x090E,0x008C,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006B,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x004A,0x006A,0x004A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x002A,0x004B,0x004B,0x00AC,0x42F5,0x114F,0x008C,0x006B,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006B,0x004A,0x006B,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006B,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006A,0x006B,0x006A,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x002A,0x002A,0x21F1,0x118F,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006B,0x006A,0x006B,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006A,0x004A,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x00CD,0x42B4,0x110E,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x008B,0x090D,0x3293,0x21F1,0x008C,0x006C,0x004B,0x004B,0x004B,0x004A,0x006B,0x006B,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006B,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004B,0x004B,0x004B,0x006B,0x004B,0x004A,0x004A,0x004A,0x006B,0x008C,0x010E,0x3273,0x42F5,0x090E,0x006B,0x006B,0x004B,0x004B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x008B,0x00AC,0x090D,0x19D0,0x3273,0x21D0,0x00CC,0x008B,0x006B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004B,0x004B,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004B,0x006B,0x006B,0x004B,0x004A,0x004A,0x006B,0x004A,0x004B,0x004B,0x006B,0x006B,0x006B,0x008C,0x00CC,0x096F,0x2A32, + 0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x002A,0x004B,0x004B,0x004B,0x004A,0x004B,0x004B,0x004A,0x004A,0x006B,0x006B,0x008B,0x092E,0x2A32,0x3252,0x2A12,0x1990,0x00CC,0x008C,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x008B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x008B,0x006B,0x004A,0x004A,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x008C,0x090E,0x21D0,0x2A12,0x21D1,0x00CD,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x002A,0x004A,0x004A,0x004B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004B,0x006B,0x006B,0x00CC,0x3252,0x3253,0x00ED,0x008B,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006B,0x004A,0x004A,0x002A,0x002A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x008B,0x006A,0x006A,0x006B,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004B,0x002A,0x004B,0x006B,0x008C,0x090D,0x42F5,0x198F,0x008C,0x006B,0x004B,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x006B,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x114F,0x3273,0x00AC,0x006B,0x006B,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006B,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006A,0x006B,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x008B,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x008A,0x004A,0x004A,0x004A,0x004A,0x004A,0x2211,0x19B0,0x008B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x3232,0x3252,0x006B,0x004B,0x004B,0x004A,0x004A,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x004A,0x006B,0x006A,0x006B,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004B,0x006B,0x114F,0x3AB5,0x1990,0x00AC,0x006C,0x004B,0x004B,0x004A,0x006B,0x006B,0x006B,0x006A,0x006A,0x006B,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x008B,0x00AC,0x2A32,0x42D5,0x114F,0x008C,0x006B,0x004B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x008B,0x00AC,0x00AC,0x094E,0x2A12,0x3273,0x092E,0x00AC,0x006B,0x006B,0x004A,0x004B,0x004B,0x004A,0x004B,0x004A,0x004A,0x006A,0x006B,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x008B,0x008C,0x00AC, + 0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x002A,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004B,0x006B,0x006B,0x112E,0x2A11,0x3AB3,0x3252,0x198F,0x00CD,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006B,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x008B,0x006A,0x006A,0x004A,0x006B,0x006A,0x004A,0x004A,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x08CD,0x1990,0x2A11,0x2A32,0x114F,0x008C,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x002A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x004A,0x006B,0x004B,0x006B,0x006B,0x00CC,0x3A93,0x3272,0x00ED,0x008B,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006A,0x006A,0x008B,0x004A,0x006A,0x004A,0x006B,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x00AC,0x3AB4,0x2A52,0x00AC,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x006B,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x006B,0x3252,0x19D0,0x008B,0x006B,0x004B,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x002A,0x002A,0x21F1,0x198F,0x006B,0x006B,0x006B,0x006B,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x114E,0x5336,0x00AC,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004B,0x004A,0x006A,0x004A,0x006A,0x006A,0x006B,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x004A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x004B,0x004B,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x00AC,0x19B0,0x3253,0x092F,0x008C,0x006B,0x004B,0x004B,0x004B,0x004A,0x006A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004B,0x004B,0x004A,0x006B,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004B,0x004B,0x006B,0x00CC,0x19B0,0x42D5,0x1990,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004B,0x004B,0x006B,0x006B,0x006B,0x008C,0x008C,0x00ED,0x19B0,0x3293,0x21F1,0x08ED,0x008B,0x006B,0x004A,0x004B,0x004B,0x004B,0x004A,0x004B,0x006B,0x004A,0x006B,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x002A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x004B,0x004B,0x004B,0x004A,0x004B,0x006B,0x006B,0x006B,0x006B, + 0x004A,0x004A,0x006A,0x004A,0x004A,0x004B,0x004B,0x004A,0x004B,0x004A,0x004B,0x004B,0x004B,0x004B,0x002A,0x004A,0x004A,0x004A,0x006B,0x008B,0x090D,0x2A31,0x3293,0x3252,0x198F,0x08ED,0x008B,0x004B,0x004B,0x004B,0x004B,0x004B,0x002A,0x004B,0x004B,0x004B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x002A,0x004B,0x004B,0x006B,0x006B,0x110E,0x21D1,0x29F1,0x2A11,0x08ED,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006B,0x006B,0x112E,0x42F5,0x2A32,0x00CC,0x00CC,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x004A,0x006A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x008B,0x006A,0x006A,0x004A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006B,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x006B,0x008C,0x3273,0x3273,0x00ED,0x008B,0x004B,0x004B,0x004A,0x006B,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x004A,0x004A,0x006A,0x006B,0x006A,0x004A,0x004A,0x006B,0x006B,0x004B,0x08CD,0x3AB4,0x090D,0x008B,0x004B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006A,0x006A,0x004A,0x004A,0x006A,0x008A,0x004A,0x004A,0x0049,0x004A,0x002A,0x002A,0x21F1,0x19B0,0x006B,0x006B,0x006B,0x004A,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x008B,0x006B,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x004A,0x004A,0x006B,0x008B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006B,0x004A,0x004B,0x006B,0x006B,0x006B,0x004B,0x006B,0x008B,0x4B35,0x198F,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x006A,0x006A,0x004A,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004B,0x004B,0x006B,0x008C,0x19D1,0x2A53,0x090E,0x008C,0x006B,0x004B,0x004B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x008C,0x114F,0x42D5,0x21F1,0x008C,0x006B,0x006B,0x004B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x008B,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004B,0x004B,0x004B,0x006B,0x008B,0x008B,0x00AC,0x094E,0x3272,0x3A93,0x198F,0x00AC,0x006B,0x002A,0x004B,0x004B,0x004B,0x006B,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x006B,0x006B,0x006B,0x004B,0x008B,0x006B,0x004B,0x004B, + 0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x006B,0x00CC,0x21F0,0x3AB3,0x3293,0x19D0,0x090D,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x002A,0x002A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x00AC,0x21B0,0x3232,0x3232,0x196F,0x008C,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x006B,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x1990,0x42F5,0x21F1,0x00AC,0x00AC,0x006B,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006B,0x006B,0x006A,0x004A,0x006B,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x1990,0x3AB4,0x116F,0x008B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004B,0x29F1,0x3253,0x00AC,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x0049,0x004A,0x002A,0x002A,0x21D0,0x19B0,0x006B,0x006B,0x004A,0x006B,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x002A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x19D0,0x42F4,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x004B,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x002A,0x004B,0x004B,0x006C,0x00CD,0x2212,0x3274,0x00CD,0x006C,0x004B,0x004B,0x004B,0x006B,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004B,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006B,0x006A,0x004A,0x004A,0x006A,0x006B,0x002A,0x004A,0x004B,0x006B,0x00AC,0x112E,0x42D5,0x2A12,0x008B,0x006B,0x004B,0x006B,0x006B,0x004B,0x006B,0x004A,0x006B,0x004A,0x006A,0x006B,0x004A,0x004A,0x006B,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004B,0x004B,0x004B,0x006B,0x006B,0x008B,0x00AB,0x00EC,0x118F,0x3272,0x3232,0x08ED,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004B,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B, + 0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x002A,0x002A,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004B,0x006B,0x00CC,0x118F,0x3272,0x2A52,0x19AF,0x090D,0x008B,0x006A,0x006A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004A,0x006A,0x006B,0x004B,0x004B,0x006B,0x090E,0x29F1,0x3252,0x21D0,0x090D,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x002A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004B,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x008A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x198F,0x3A93,0x1990,0x008B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006B,0x006A,0x004A,0x004A,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x114F,0x3A94,0x198F,0x008B,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x002A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004B,0x006B,0x00AC,0x42D5,0x1990,0x006C,0x004B,0x004A,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x19B0,0x19B0,0x006B,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006B,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x008B,0x08ED,0x5BB8,0x008B,0x006B,0x006B,0x006B,0x002B,0x002B,0x004B,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004A,0x004B,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004B,0x006B,0x004B,0x006C,0x090E,0x3AD5,0x2232,0x008C,0x006B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x006B,0x008C,0x090E,0x42D5,0x2A32,0x00AC,0x008C,0x006B,0x006B,0x004A,0x006B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x092E,0x2A11,0x3A73,0x21B0,0x00AC,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x006B,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B, + 0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x002B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x008B,0x008C,0x19B0,0x3AB4,0x3272,0x11AF,0x094E,0x00CC,0x008B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004B,0x004B,0x004A,0x006B,0x006B,0x006B,0x006B,0x008B,0x21B0,0x3273,0x3232,0x114E,0x00AC,0x006B,0x004B,0x004A,0x004A,0x004B,0x004B,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x008A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x004B,0x006B,0x006B,0x006B,0x008C,0x29F1,0x42D5,0x114E,0x006B,0x006B,0x004A,0x004B,0x004A,0x004B,0x006B,0x004A,0x006B,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006B,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006A,0x006A,0x004A,0x004B,0x004B,0x006B,0x004B,0x006B,0x08ED,0x42B4,0x21D0,0x00AC,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006A,0x004B,0x004B,0x004B,0x092E,0x42F5,0x00AD,0x006C,0x004B,0x004A,0x004B,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x002A,0x004A,0x004A,0x198F,0x1990,0x006B,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004A,0x006A,0x004A,0x006B,0x004A,0x004A,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x00AC,0x42D4,0x2A11,0x006B,0x006B,0x006B,0x004B,0x004B,0x002A,0x004A,0x004B,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x002A,0x004A,0x004A,0x004B,0x004B,0x004B,0x006C,0x008C,0x11B0,0x4316,0x116F,0x008B,0x006B,0x004B,0x004B,0x004A,0x004B,0x004A,0x004A,0x006B,0x006B,0x006A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004A,0x002A,0x004A,0x004B,0x006B,0x00AC,0x090E,0x3A94,0x42D5,0x00CD,0x008C,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004A,0x006B,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x008B,0x008B,0x00CC,0x198F,0x3253,0x3252,0x114E,0x006B,0x006B,0x004B,0x006B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B, + 0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x008C,0x094E,0x3AB4,0x3293,0x19D0,0x090D,0x08ED,0x008B,0x006B,0x006A,0x004A,0x002A,0x004A,0x004A,0x008B,0x004B,0x004B,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004A,0x006B,0x004B,0x004A,0x004A,0x004B,0x006B,0x006B,0x006B,0x006B,0x090D,0x3273,0x3252,0x21F1,0x08CC,0x006B,0x006B,0x004B,0x004A,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x00AC,0x3AB4,0x42F5,0x00ED,0x006B,0x006B,0x004B,0x004B,0x004A,0x004B,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006A,0x004A,0x006B,0x004A,0x006B,0x006A,0x004A,0x004B,0x004A,0x006B,0x004A,0x004A,0x006B,0x006A,0x006B,0x004A,0x006B,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x008B,0x006A,0x006A,0x004A,0x008B,0x008B,0x004A,0x004A,0x008B,0x006B,0x004B,0x004B,0x004A,0x004B,0x006B,0x008C,0x2A32,0x2A32,0x08ED,0x006B,0x004B,0x004B,0x004A,0x004B,0x004B,0x004B,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x006B,0x004A,0x004A,0x006B,0x004A,0x006B,0x004A,0x004A,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x004A,0x004B,0x004B,0x004B,0x2A32,0x19D1,0x00AC,0x006B,0x004B,0x004A,0x004B,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004B,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x006B,0x006A,0x006B,0x004A,0x006B,0x006A,0x006A,0x006A,0x006B,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x0029,0x002A,0x004A,0x004A,0x19B0,0x21F1,0x006B,0x006B,0x004B,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x004A,0x004B,0x004B,0x004B,0x006B,0x006B,0x008C,0x112E,0x4B36,0x008B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006A,0x006A,0x006B,0x004A,0x006B,0x006B,0x006A,0x006B,0x006B,0x008B,0x006B,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004B,0x002A,0x004B,0x004B,0x006C,0x00AD,0x2212,0x32B4,0x010E,0x006B,0x006B,0x004B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x004B,0x004A,0x004A,0x006A,0x006B,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x002A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x008C,0x08ED,0x3253,0x42D5,0x00ED,0x008B,0x008B,0x008B,0x006B,0x006B,0x006B,0x004B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008B,0x008B,0x008B,0x110E,0x29F1,0x3A73,0x19B0,0x00AC,0x006B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004B, + 0x006B,0x004B,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x00ED,0x3273,0x3AB4,0x19D0,0x010D,0x00AB,0x00AB,0x008B,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x004A,0x006B,0x004A,0x006A,0x006B,0x006B,0x004A,0x006B,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x008B,0x21D0,0x4B15,0x2211,0x092D,0x008B,0x006B,0x006B,0x004B,0x004B,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004B,0x006B,0x006A,0x006A,0x006A,0x004A,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x006B,0x006B,0x008C,0x00AC,0x4B36,0x3A73,0x00CC,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x004A,0x006B,0x004A,0x004A,0x004A,0x006A,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x004A,0x006B,0x006B,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x008C,0x19B0,0x3A94,0x114E,0x008C,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006B,0x006A,0x006A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x006A,0x006B,0x006A,0x004A,0x006B,0x006B,0x004A,0x006B,0x006B,0x004A,0x004A,0x006B,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x006B,0x008C,0x42F5,0x092E,0x008C,0x006B,0x004B,0x004B,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x006B,0x006A,0x006B,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x004A,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x198F,0x21D0,0x006B,0x006B,0x004B,0x006B,0x004A,0x006B,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006B,0x006A,0x006A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x004A,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x42B4,0x090E,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x008B,0x004A,0x002A,0x002A,0x002A,0x004B,0x006C,0x00CD,0x2A53,0x2A32,0x00AC,0x006B,0x004B,0x004B,0x004B,0x004B,0x004A,0x006B,0x004A,0x006B,0x002A,0x004B,0x004A,0x006B,0x006B,0x006A,0x008B,0x006A,0x004A,0x006A,0x006A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004B,0x006B,0x00AC,0x21F1,0x42D5,0x090D,0x00AC,0x00AC,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x008C,0x00CD,0x116F,0x2A12,0x2A12,0x092E,0x008B,0x008B,0x008B,0x006B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004B,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A, + 0x002A,0x002A,0x004B,0x004B,0x006B,0x006B,0x004B,0x006C,0x008C,0x00ED,0x2A53,0x4316,0x2211,0x08ED,0x006B,0x008B,0x008B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004B,0x006B,0x006B,0x008B,0x006B,0x006B,0x090E,0x3252,0x3273,0x114E,0x008B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x004B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x006B,0x004A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x004A,0x006A,0x006B,0x006A,0x006A,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006A,0x006A,0x008A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004B,0x004B,0x006B,0x006B,0x006B,0x08ED,0x42D4,0x21F1,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006A,0x006B,0x006A,0x008B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x008B,0x006A,0x004A,0x006A,0x004A,0x006A,0x002A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x006C,0x112E,0x3273,0x092E,0x008C,0x004B,0x004B,0x006B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x004A,0x006B,0x006B,0x004A,0x006B,0x004A,0x006B,0x006A,0x006B,0x004A,0x006B,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006B,0x004B,0x006B,0x004B,0x004B,0x006B,0x006B,0x2A11,0x3273,0x00CD,0x006B,0x004B,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004A,0x004A,0x006B,0x004B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006B,0x004A,0x006A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x002A,0x004A,0x198F,0x21D1,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x006B,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004A,0x006B,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004B,0x004B,0x004B,0x004B,0x006B,0x21D1,0x3253,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004A,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x004A,0x006B,0x006A,0x004A,0x004A,0x006B,0x006A,0x004A,0x006B,0x006B,0x006A,0x006A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x008B,0x006A,0x006B,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x008C,0x092E,0x2A53,0x19B0,0x00AC,0x006B,0x004B,0x004B,0x004B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x004A,0x006A,0x006A,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x004A,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x008B,0x004A,0x004A,0x004A,0x004A,0x006B,0x008B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x008C,0x21D1,0x4B36,0x118F,0x00AC,0x008B,0x006B,0x006B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x004A,0x006B,0x004A,0x006B,0x006A,0x006B,0x006B,0x006A,0x006B,0x006A,0x004A,0x006A,0x006B,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006C,0x006C,0x090E,0x19D1,0x3293,0x21F1,0x00EC,0x00AC,0x008B,0x008B,0x006B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004B,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x006B,0x004B,0x004A,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A, + 0x002A,0x004B,0x004B,0x006B,0x006B,0x008C,0x004C,0x08EE,0x3A94,0x42D5,0x21F2,0x090E,0x00CC,0x008B,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006B,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x006B,0x008B,0x008C,0x006B,0x1990,0x5357,0x21F1,0x00CC,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x004B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006A,0x006B,0x008B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006B,0x004B,0x004B,0x006B,0x006B,0x1990,0x4B15,0x198F,0x008B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006A,0x006A,0x004A,0x006A,0x006B,0x004A,0x006B,0x004B,0x004B,0x006B,0x004B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x006B,0x004B,0x004B,0x004B,0x006B,0x08EE,0x3273,0x21F1,0x00AC,0x006B,0x004B,0x004B,0x004B,0x006B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x004A,0x004A,0x006B,0x004B,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x004A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004B,0x004B,0x004B,0x006B,0x008C,0x4B15,0x1170,0x00AC,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x004A,0x004A,0x006B,0x006B,0x004A,0x006B,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x116F,0x21F1,0x006B,0x006B,0x004B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x004A,0x004B,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004A,0x004A,0x004B,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x006B,0x006B,0x08ED,0x42F5,0x008C,0x004B,0x004B,0x004B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004A,0x006B,0x004A,0x006B,0x004A,0x006B,0x004A,0x006B,0x004B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x004A,0x006B,0x004A,0x006B,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004B,0x004B,0x004B,0x00AC,0x116F,0x2A53,0x116F,0x008C,0x006B,0x004B,0x004B,0x006B,0x004A,0x004B,0x004B,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x006B,0x006B,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x008B,0x004A,0x004A,0x006A,0x004A,0x006A,0x006B,0x006B,0x004A,0x004A,0x004A,0x002A,0x004A,0x004A,0x006B,0x008C,0x118F,0x4B36,0x19B0,0x00AC,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x006B,0x004A,0x006B,0x006B,0x004A,0x006A,0x006A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006B,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x008C,0x00ED,0x116F,0x2A52,0x2A52,0x012E,0x00CC,0x00AC,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004B,0x004A,0x004B,0x004B,0x004B,0x004B,0x004A,0x004B,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A, + 0x002A,0x004B,0x002B,0x004B,0x006C,0x08CE,0x3A95,0x4AF6,0x1991,0x00CE,0x008C,0x006B,0x008B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x008B,0x090E,0x42D5,0x3A94,0x00AD,0x008C,0x008C,0x004B,0x004A,0x002A,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x008A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006B,0x006A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006A,0x006B,0x006B,0x006A,0x008A,0x008A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x004A,0x004B,0x006B,0x008C,0x21D1,0x4AF6,0x112F,0x008C,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004B,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006B,0x004A,0x006A,0x004A,0x006B,0x004A,0x006A,0x004A,0x006B,0x004A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004B,0x004B,0x004B,0x008C,0x3233,0x2A32,0x090D,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x002A,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006B,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006A,0x006B,0x006B,0x004A,0x004B,0x004B,0x004B,0x114F,0x42D5,0x00CD,0x008C,0x004B,0x004B,0x004A,0x004A,0x006A,0x006B,0x002A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006A,0x006A,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x116F,0x21F1,0x006B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x006B,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004B,0x004A,0x004B,0x004B,0x006B,0x006B,0x006B,0x008C,0x42B5,0x194F,0x004B,0x004B,0x004B,0x006B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x004B,0x004A,0x006B,0x006B,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x006A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x008C,0x00CD,0x19D1,0x3273,0x090E,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x004A,0x006B,0x006B,0x006A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006A,0x006A,0x004A,0x006A,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004B,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x006B,0x008C,0x094E,0x3AB4,0x19D0,0x00AC,0x006B,0x006B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x004B,0x004B,0x002A,0x004B,0x004B,0x004B,0x006C,0x00AC,0x010D,0x19D0,0x32B4,0x19D0,0x00ED,0x008B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x006B,0x006B,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004B,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A, + 0x004B,0x004B,0x004B,0x006C,0x42B4,0x42D5,0x1170,0x00AE,0x00AE,0x008D,0x006C,0x008C,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x006A,0x004A,0x006B,0x004A,0x004A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006B,0x008B,0x00AC,0x21D0,0x3A94,0x2A32,0x008C,0x00AD,0x008C,0x004B,0x004B,0x002A,0x002A,0x002A,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006B,0x004B,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006B,0x004A,0x006B,0x006B,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x004A,0x004A,0x004A,0x006B,0x006B,0x29F1,0x3A94,0x00ED,0x00AC,0x008C,0x006B,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006B,0x006B,0x006A,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006B,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x006B,0x006B,0x004A,0x006B,0x006B,0x006B,0x004B,0x004B,0x004B,0x006B,0x004A,0x006B,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x006B,0x006B,0x004A,0x004A,0x004B,0x004B,0x112F,0x2A33,0x114F,0x00AC,0x006B,0x004B,0x004B,0x004B,0x004B,0x004A,0x002A,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x004A,0x006B,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006B,0x006B,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004B,0x004B,0x3AD5,0x21F1,0x00AC,0x006C,0x004B,0x004B,0x002A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x002A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x006A,0x006B,0x004A,0x006B,0x006A,0x006B,0x006B,0x006B,0x006B,0x006B,0x006B,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006B,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x002A,0x116F,0x21B1,0x006B,0x006B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004B,0x004A,0x004B,0x006B,0x004A,0x004A,0x006B,0x004B,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x006B,0x006B,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x006B,0x004B,0x004B,0x006B,0x006B,0x008C,0x006B,0x2190,0x3A33,0x006C,0x006C,0x006B,0x004B,0x004B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004B,0x006B,0x00AC,0x010E,0x2232,0x21F1,0x08CD,0x006C,0x004B,0x004B,0x004B,0x004B,0x006B,0x006B,0x006B,0x004A,0x004A,0x006A,0x004A,0x004A,0x006A,0x006A,0x004A,0x006A,0x006B,0x006B,0x004A,0x006B,0x004A,0x006B,0x006B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004B,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006B,0x004A,0x006B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006B,0x006B,0x004B,0x004B,0x006B,0x00AC,0x00ED,0x2211,0x2A32,0x00CC,0x006B,0x006B,0x004B,0x004B,0x004B,0x004A,0x004A,0x006B,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006B,0x006A,0x006B,0x006B,0x006A,0x006B,0x008B,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004A,0x004B,0x006B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004A,0x004A,0x004A,0x006B,0x006B,0x004A,0x004B,0x002A,0x004B,0x004B,0x006B,0x004B,0x008C,0x00AC,0x00ED,0x016E,0x2A73,0x3293,0x090D,0x008C,0x006B,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x006A,0x006A,0x006A,0x004A,0x006B,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004B,0x004B,0x004B,0x004B,0x004B,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x006A,0x004A,0x004A,0x004A,0x006A,0x006A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x004A,0x006A,0x006A,0x006A,0x006A +}; + +// Saves 377799 bytes +const uint8_t marlin_logo_1024x600x16_rle16[851001] = { + 0x02, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x02, 0x20, 0xEE, 0x02, 0x20, 0xEF, 0x80, 0x20, 0xEE, 0x02, 0x21, 0x0E, 0x05, 0x19, 0x0E, 0x01, 0x19, 0x0F, 0x81, 0x21, 0x0F, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x82, 0x19, 0x0F, 0x21, 0x0F, 0x21, 0x0E, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x80, 0x21, 0x0F, 0x08, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x82, 0x20, 0xEF, 0x21, 0x0F, 0x19, 0x0F, 0x2B, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8D, 0x20, 0xEF, 0x29, 0x0F, 0x28, 0xEF, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x31, 0x19, 0x33, 0x09, 0x34, 0x01, 0x55, 0x01, 0x77, 0x01, 0x97, 0x01, 0xB8, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x8A, 0x01, 0xFA, 0x01, 0xF9, 0x01, 0xD8, 0x01, 0x97, 0x01, 0x55, 0x01, 0x35, 0x08, 0xF3, 0x11, 0x13, 0x19, 0x52, 0x21, 0x31, 0x21, 0x11, 0x02, 0x29, 0x10, 0x82, 0x20, 0xEF, 0x29, 0x0F, 0x20, 0xEF, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x0A, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x20, 0xEF, 0x02, 0x21, 0x10, 0x93, 0x21, 0x31, 0x21, 0x32, 0x19, 0x53, 0x19, 0x54, 0x11, 0x74, 0x11, 0xB6, 0x19, 0xF7, 0x11, 0xD6, 0x09, 0x95, 0x09, 0x74, 0x09, 0x54, + 0x09, 0x53, 0x11, 0x33, 0x11, 0x32, 0x19, 0x72, 0x21, 0x72, 0x21, 0x92, 0x29, 0x92, 0x21, 0x71, 0x29, 0x71, 0x03, 0x21, 0x51, 0x80, 0x21, 0x30, 0x01, 0x21, 0x51, 0x87, 0x29, 0x51, 0x21, 0x31, 0x29, 0x51, 0x21, 0x31, 0x29, 0x31, 0x29, 0x30, 0x29, 0x51, 0x21, 0x30, 0x04, 0x21, 0x51, 0x81, 0x21, 0x71, 0x21, 0x92, 0x01, 0x21, 0x51, 0x8D, 0x19, 0x31, 0x19, 0x30, 0x21, 0x51, 0x21, 0x72, 0x19, 0x52, 0x19, 0x72, 0x19, 0x73, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB6, 0x09, 0xB7, 0x09, 0xD7, 0x09, 0xB7, 0x09, 0xD7, 0x02, 0x09, 0xF8, 0x03, 0x09, 0xD8, 0x84, 0x09, 0xD7, 0x09, 0x97, 0x09, 0x75, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x85, 0x19, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x0B, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x0C, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x20, 0xF0, 0x29, 0x10, 0x01, 0x21, 0x10, 0x86, 0x21, 0x31, 0x19, 0x32, 0x19, 0x52, 0x19, 0x53, 0x19, 0x95, 0x19, 0xD6, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x83, 0x11, 0xD7, 0x09, 0x75, 0x01, 0x13, 0x09, 0x33, 0x01, 0x11, 0x32, 0x86, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, + 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x08, 0x21, 0x10, 0x87, 0x21, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x95, 0x11, 0xD6, 0x11, 0xF7, 0x11, 0xD6, 0x11, 0xB6, 0x01, 0x09, 0x74, 0x80, 0x11, 0x74, 0x01, 0x09, 0x73, 0x8A, 0x09, 0x54, 0x09, 0x75, 0x09, 0xB6, 0x09, 0xD7, 0x11, 0xF7, 0x19, 0xD7, 0x19, 0x74, 0x19, 0x33, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x20, 0xF0, 0x06, 0x21, 0x10, 0x01, 0x21, 0x31, 0x89, 0x21, 0x32, 0x19, 0x33, 0x11, 0x54, 0x19, 0x96, 0x19, 0xD7, 0x11, 0xD7, 0x11, 0xB7, 0x09, 0x54, 0x11, 0x32, 0x11, 0x31, 0x01, 0x19, 0x51, 0x87, 0x10, 0xF1, 0x11, 0x12, 0x11, 0x33, 0x19, 0x96, 0x1A, 0x19, 0x11, 0xF9, 0x11, 0xB8, 0x09, 0x56, 0x01, 0x11, 0x34, 0x91, 0x11, 0x33, 0x11, 0x34, 0x11, 0x54, 0x11, 0x75, 0x09, 0x76, 0x09, 0xB7, 0x11, 0xF7, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x52, 0x11, 0x32, 0x11, 0x53, 0x09, 0x73, 0x09, 0x74, 0x11, 0xB6, 0x01, 0x1A, 0x17, 0x84, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x32, 0x19, 0x11, 0x19, 0x10, 0x02, 0x21, 0x10, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x81, 0x21, 0x0F, 0x20, 0xEF, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x09, 0x13, 0x19, 0xD7, 0x1A, 0x19, 0x19, 0xF8, 0x19, 0xB7, 0x10, 0xF3, 0x18, 0xF2, 0x19, 0x11, 0x02, 0x21, 0x30, 0x80, 0x18, 0xEF, 0x01, 0x21, 0x0F, + 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x95, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x09, 0x33, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x19, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x09, 0x13, 0x11, 0xB6, 0x11, 0xF7, 0x1A, 0x18, 0x19, 0xD7, 0x11, 0x33, 0x19, 0x12, 0x01, 0x21, 0x11, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x86, 0x21, 0x4F, 0x19, 0x2F, 0x19, 0x30, 0x19, 0x10, 0x10, 0xF0, 0x21, 0x53, 0x21, 0x74, 0x01, 0x21, 0x95, 0x88, 0x19, 0x96, 0x19, 0xB6, 0x09, 0x75, 0x09, 0x54, 0x09, 0x13, 0x09, 0x12, 0x11, 0x31, 0x19, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x30, 0x85, 0x19, 0x10, 0x19, 0x30, 0x19, 0x31, 0x11, 0x11, 0x08, 0xF2, 0x19, 0xF6, 0x01, 0x11, 0xF7, 0x84, 0x11, 0xB5, 0x09, 0x12, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x03, 0x21, 0x10, 0x89, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x19, 0x94, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0xB7, 0x09, 0x75, 0x11, 0x54, 0x11, 0x53, 0x01, 0x19, 0x31, 0x81, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x29, 0x30, 0x21, + 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x04, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x04, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x31, 0x88, 0x19, 0x12, 0x08, 0xF2, 0x19, 0x94, 0x21, 0xF6, 0x29, 0xF6, 0x19, 0x95, 0x11, 0x13, 0x11, 0x32, 0x19, 0x32, 0x03, 0x11, 0x32, 0x88, 0x09, 0x33, 0x19, 0x95, 0x19, 0xB6, 0x21, 0xF6, 0x19, 0xB5, 0x09, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x05, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x30, 0x29, 0x10, 0x20, 0xF0, 0x18, 0xF1, 0x10, 0xF2, 0x09, 0x34, 0x09, 0x55, 0x01, 0x01, 0x76, 0x88, 0x01, 0x96, 0x01, 0x97, 0x01, 0x76, 0x09, 0x76, 0x09, 0x55, 0x09, 0x34, 0x11, 0x13, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x10, 0x01, 0x21, 0x10, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x0E, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x05, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x03, + 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x20, 0xEF, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x0B, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x03, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x81, 0x20, 0xEF, 0x21, 0x0F, 0x02, 0x20, 0xEF, 0x83, 0x21, 0x0F, 0x20, 0xEF, 0x21, 0x0F, 0x19, 0x0F, 0x03, 0x19, 0x10, 0x86, 0x19, 0x11, 0x10, 0xF1, 0x11, 0x33, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xFA, 0x01, 0xDA, 0x03, 0x01, 0xBA, 0x03, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x83, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x83, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xDA, 0x04, 0x01, 0xD9, 0x89, 0x01, 0xB9, 0x01, 0xB8, 0x11, 0xD9, 0x19, 0xD7, 0x08, 0xB1, 0x18, 0xD0, 0x20, 0xF0, 0x20, 0xEF, 0x20, 0xEE, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x02, 0x21, 0x0F, 0x02, 0x20, 0xEF, 0x01, 0x18, 0xEF, 0x03, 0x20, 0xEF, 0x81, 0x21, 0x0F, 0x18, 0xEE, 0x05, 0x20, 0xEE, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x0E, 0x82, 0x21, 0x2F, 0x19, 0x0E, 0x21, 0x2E, 0x03, 0x19, 0x0E, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x80, 0x19, 0x0F, 0x02, + 0x21, 0x0F, 0x86, 0x20, 0xEE, 0x21, 0x0F, 0x20, 0xEE, 0x21, 0x0F, 0x21, 0x0E, 0x21, 0x0F, 0x20, 0xEE, 0x01, 0x21, 0x0E, 0x81, 0x21, 0x0F, 0x20, 0xEE, 0x01, 0x21, 0x0E, 0x81, 0x21, 0x0F, 0x20, 0xEE, 0x06, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x06, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x1D, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x20, 0xEF, 0x01, 0x28, 0xEF, 0x88, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x19, 0x31, 0x11, 0x32, 0x09, 0x33, 0x09, 0x75, 0x01, 0x77, 0x01, 0xB8, 0x01, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x82, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0x01, 0xD8, 0x87, 0x09, 0x97, 0x09, 0x55, 0x09, 0x13, 0x11, 0x13, 0x19, 0x32, 0x19, 0x11, 0x21, 0x11, 0x20, 0xF0, 0x01, 0x29, 0x10, 0x84, 0x28, 0xEF, 0x20, 0xEF, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x84, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x8B, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x11, 0x21, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x74, 0x11, + 0x95, 0x01, 0x19, 0xF7, 0x83, 0x11, 0xD6, 0x11, 0x95, 0x09, 0x54, 0x09, 0x33, 0x01, 0x09, 0x12, 0x81, 0x10, 0xF1, 0x11, 0x11, 0x01, 0x11, 0x10, 0x83, 0x19, 0x10, 0x19, 0x11, 0x19, 0x10, 0x19, 0x31, 0x02, 0x19, 0x10, 0x80, 0x19, 0x30, 0x03, 0x19, 0x10, 0x01, 0x21, 0x10, 0x05, 0x19, 0x10, 0x01, 0x19, 0x31, 0x01, 0x11, 0x10, 0x85, 0x19, 0x10, 0x11, 0x10, 0x19, 0x10, 0x19, 0x31, 0x19, 0x10, 0x19, 0x11, 0x01, 0x11, 0x11, 0x84, 0x09, 0x12, 0x09, 0x33, 0x01, 0x34, 0x11, 0x96, 0x09, 0xB7, 0x01, 0x09, 0xD7, 0x80, 0x11, 0xF8, 0x01, 0x09, 0xF8, 0x81, 0x09, 0xD8, 0x09, 0xB7, 0x02, 0x09, 0xD8, 0x88, 0x09, 0xD7, 0x09, 0xB7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x87, 0x19, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, + 0x10, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB6, 0x01, 0x19, 0xD7, 0x89, 0x11, 0xB7, 0x19, 0xD7, 0x11, 0x75, 0x09, 0x12, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x20, 0xEE, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x84, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x95, 0x11, 0xD6, 0x01, 0x11, 0xF7, 0x81, 0x11, 0xB6, 0x09, 0x74, 0x03, 0x09, 0x53, 0x8A, 0x09, 0x54, 0x09, 0x75, 0x09, 0xD6, 0x11, 0xF7, 0x11, 0xD7, 0x11, 0xB6, 0x19, 0x74, 0x19, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x11, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x11, 0x54, 0x19, 0x95, 0x01, 0x19, 0xD7, 0x8E, 0x11, 0xB6, 0x09, 0x54, 0x09, 0x32, 0x11, 0x31, 0x19, 0x51, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0x54, 0x19, 0xB6, 0x19, 0xF8, 0x11, 0xF8, 0x09, 0x97, 0x09, 0x56, 0x09, 0x34, 0x01, 0x09, 0x13, 0x89, 0x11, 0x33, 0x09, 0x34, 0x09, 0x55, 0x09, 0x96, 0x11, 0xD7, 0x11, 0xF8, 0x11, 0xF7, 0x11, 0xB5, 0x11, 0x74, 0x11, 0x53, 0x02, 0x11, 0x32, 0x89, 0x11, 0x53, 0x09, 0x53, 0x09, 0x74, 0x11, 0xB6, 0x1A, + 0x17, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x34, 0x11, 0x32, 0x19, 0x11, 0x03, 0x21, 0x10, 0x0A, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x85, 0x20, 0xEF, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x19, 0x31, 0x11, 0x11, 0x09, 0x13, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x86, 0x19, 0x96, 0x11, 0x13, 0x19, 0x12, 0x19, 0x11, 0x19, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x95, 0x19, 0x31, 0x11, 0x32, 0x09, 0x33, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xB5, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x09, 0x12, 0x11, 0xB6, 0x11, 0xF7, 0x1A, 0x18, 0x19, 0xD6, 0x11, 0x13, 0x19, 0x12, 0x21, 0x11, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x90, 0x19, 0x2F, 0x19, 0x0F, 0x19, 0x10, 0x19, 0x11, 0x21, 0x52, 0x21, 0x53, 0x21, 0x74, 0x19, 0x75, 0x21, 0xB6, 0x19, 0xB6, 0x11, 0xB6, 0x11, 0x95, 0x09, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x30, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x8A, 0x21, 0x30, 0x21, 0x0F, 0x21, + 0x2F, 0x19, 0x30, 0x21, 0x30, 0x19, 0x30, 0x21, 0x30, 0x19, 0x31, 0x11, 0x31, 0x09, 0x12, 0x19, 0xD6, 0x01, 0x11, 0xF7, 0x83, 0x11, 0x95, 0x09, 0x12, 0x19, 0x32, 0x21, 0x31, 0x04, 0x21, 0x10, 0x8D, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x19, 0xD7, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x76, 0x11, 0x54, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x30, 0x19, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x05, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x04, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x31, 0x95, 0x19, 0x12, 0x08, 0xF2, 0x19, 0x94, 0x21, 0xD6, 0x29, 0xF6, 0x19, 0x94, 0x11, 0x12, 0x11, 0x32, 0x19, 0x52, 0x11, 0x32, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x09, 0x33, 0x19, 0x95, 0x19, 0xD6, 0x21, 0xF6, 0x19, 0x95, 0x09, 0x12, 0x11, 0x32, 0x19, 0x31, 0x21, 0x11, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x89, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x75, 0x09, 0x96, 0x09, 0x97, 0x09, 0xB7, 0x01, 0x01, 0xB7, 0x83, 0x01, 0x97, 0x09, 0x97, 0x09, + 0x76, 0x09, 0x34, 0x01, 0x11, 0x33, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x09, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x08, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x03, 0x21, 0x10, 0x04, 0x21, 0x30, 0x05, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x20, 0xEF, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x11, 0x21, 0x0F, 0x82, 0x20, 0xEF, 0x21, 0x0F, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x87, 0x20, 0xEF, 0x21, 0x0F, 0x20, 0xEF, 0x21, 0x0F, 0x20, 0xEF, 0x21, 0x0F, 0x20, 0xEF, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x81, 0x18, 0xEF, 0x19, 0x0F, 0x02, 0x19, 0x10, 0x85, 0x19, 0x11, 0x10, 0xF1, 0x09, 0x13, 0x11, 0xD7, 0x09, 0xF9, 0x01, 0xD9, 0x04, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x81, 0x01, 0xB9, 0x01, 0xDA, 0x04, 0x01, 0xB9, 0x01, 0x01, 0xBA, 0x80, 0x01, 0xDA, 0x05, 0x01, 0xBA, 0x80, 0x01, 0xB9, 0x05, 0x01, 0xD9, 0x85, + 0x01, 0xB8, 0x11, 0xF9, 0x11, 0xB7, 0x08, 0xD2, 0x18, 0xD0, 0x20, 0xF0, 0x01, 0x20, 0xEF, 0x02, 0x20, 0xEE, 0x02, 0x21, 0x0F, 0x03, 0x20, 0xEF, 0x81, 0x18, 0xEF, 0x21, 0x0F, 0x02, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x85, 0x20, 0xEE, 0x21, 0x0F, 0x20, 0xEE, 0x21, 0x0E, 0x20, 0xEE, 0x20, 0xEF, 0x01, 0x20, 0xEE, 0x02, 0x21, 0x0E, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x19, 0x0E, 0x21, 0x0E, 0x15, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x12, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0B, 0x21, 0x0F, 0x87, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x29, 0x0F, 0x88, 0x29, 0x10, 0x21, 0x10, 0x19, 0x11, 0x19, 0x53, 0x11, 0x54, 0x09, 0x96, 0x09, 0xB8, 0x01, 0xD8, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0x01, 0xD9, 0x87, 0x01, 0xD8, 0x09, 0xD8, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x21, 0x53, 0x21, 0x11, 0x20, 0xF0, 0x03, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x29, 0x10, 0x89, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x89, 0x21, 0x30, + 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x88, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x19, 0x94, 0x11, 0x95, 0x02, 0x19, 0xD6, 0x83, 0x11, 0x96, 0x09, 0x54, 0x09, 0x33, 0x09, 0x12, 0x01, 0x08, 0xF1, 0x01, 0x08, 0xF0, 0x80, 0x10, 0xF1, 0x06, 0x10, 0xF0, 0x02, 0x11, 0x11, 0x01, 0x10, 0xF1, 0x86, 0x18, 0xF1, 0x10, 0xF1, 0x11, 0x11, 0x10, 0xF1, 0x19, 0x11, 0x11, 0x11, 0x10, 0xF1, 0x01, 0x11, 0x11, 0x82, 0x08, 0xF0, 0x08, 0xF1, 0x11, 0x11, 0x02, 0x10, 0xF1, 0x9A, 0x10, 0xF0, 0x10, 0xF1, 0x08, 0xF1, 0x09, 0x11, 0x09, 0x12, 0x09, 0x33, 0x09, 0x75, 0x09, 0x96, 0x12, 0x18, 0x09, 0xD7, 0x11, 0xD7, 0x09, 0xD7, 0x09, 0x96, 0x09, 0x97, 0x01, 0x96, 0x01, 0x76, 0x09, 0xB7, 0x09, 0xD8, 0x12, 0x19, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x13, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x09, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, + 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x87, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x01, 0x19, 0xD7, 0x89, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0x95, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x1A, 0x17, 0x11, 0xB6, 0x09, 0x95, 0x09, 0x33, 0x09, 0x54, 0x09, 0x53, 0x01, 0x09, 0x54, 0x81, 0x09, 0x75, 0x09, 0x96, 0x01, 0x11, 0xD7, 0x86, 0x11, 0xB6, 0x19, 0x74, 0x19, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x08, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x29, 0x50, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x89, 0x21, 0x32, 0x19, 0x32, 0x19, 0x54, 0x19, 0x95, 0x19, 0xB6, 0x19, 0xD7, 0x11, 0xB6, 0x09, 0x74, 0x09, 0x12, 0x11, 0x31, 0x01, 0x19, + 0x51, 0x88, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0xB6, 0x19, 0xD7, 0x11, 0xD8, 0x09, 0x97, 0x09, 0x76, 0x09, 0x54, 0x02, 0x09, 0x13, 0x83, 0x09, 0x34, 0x09, 0x54, 0x09, 0x96, 0x11, 0xD7, 0x01, 0x19, 0xF7, 0x84, 0x11, 0xB5, 0x11, 0x74, 0x11, 0x52, 0x11, 0x32, 0x11, 0x31, 0x01, 0x11, 0x32, 0x89, 0x11, 0x73, 0x09, 0x74, 0x11, 0xD6, 0x1A, 0x17, 0x19, 0xF7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x09, 0x33, 0x19, 0xF7, 0x01, 0x1A, 0x18, 0x83, 0x11, 0x96, 0x11, 0x13, 0x19, 0x11, 0x19, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x97, 0x19, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x32, 0x11, 0x11, 0x21, 0x31, 0x21, 0x30, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x13, 0x11, 0x95, 0x11, 0xF7, 0x1A, 0x18, 0x19, 0xD6, 0x11, 0x12, 0x19, 0x12, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, + 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8E, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x19, 0x33, 0x19, 0x54, 0x19, 0x95, 0x21, 0xD6, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x74, 0x11, 0x33, 0x19, 0x52, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x19, 0x30, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x01, 0x11, 0xD6, 0x83, 0x11, 0xF7, 0x11, 0x95, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x20, 0xF0, 0x01, 0x21, 0x10, 0x8D, 0x21, 0x30, 0x21, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x19, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x07, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, + 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x32, 0x11, 0x12, 0x19, 0x74, 0x21, 0xF6, 0x2A, 0x17, 0x19, 0x94, 0x01, 0x11, 0x12, 0x02, 0x19, 0x32, 0x01, 0x11, 0x32, 0x84, 0x11, 0x33, 0x19, 0x95, 0x21, 0xD6, 0x21, 0xF6, 0x11, 0x94, 0x01, 0x11, 0x32, 0x81, 0x19, 0x32, 0x21, 0x31, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x32, 0x19, 0x53, 0x19, 0x95, 0x11, 0x96, 0x11, 0xF8, 0x05, 0x09, 0xD8, 0x85, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x03, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x04, 0x21, 0x10, 0x07, 0x21, 0x30, 0x04, 0x29, 0x30, 0x02, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, + 0x02, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x0E, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x06, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x03, 0x21, 0x0F, 0x82, 0x18, 0xEF, 0x21, 0x30, 0x21, 0x10, 0x01, 0x19, 0x10, 0x84, 0x11, 0x11, 0x09, 0x12, 0x11, 0xD7, 0x09, 0xD8, 0x01, 0xD9, 0x03, 0x01, 0xBA, 0x02, 0x01, 0xDA, 0x85, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0xB9, 0x01, 0xDA, 0x02, 0x01, 0xB9, 0x82, 0x01, 0xBA, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x03, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xD9, 0x01, 0xF9, 0x02, 0x01, 0xB9, 0x88, 0x01, 0x98, 0x11, 0xF9, 0x11, 0xB6, 0x08, 0xD1, 0x18, 0xF0, 0x21, 0x10, 0x21, 0x0F, 0x20, 0xEE, 0x21, 0x0E, 0x03, 0x20, 0xEE, 0x02, 0x21, 0x0F, 0x81, 0x20, 0xEE, 0x18, 0xEE, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x82, 0x20, 0xEE, 0x21, 0x0E, 0x21, 0x0F, 0x04, 0x21, 0x0E, 0x81, 0x20, 0xEE, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x0E, 0x21, 0x2F, 0x21, 0x0E, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0E, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, + 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x88, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x19, 0x11, 0x11, 0x33, 0x11, 0xB5, 0x11, 0xF8, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x8E, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xF9, 0x01, 0xD9, 0x0A, 0x1A, 0x01, 0xF9, 0x09, 0xF8, 0x11, 0xF8, 0x19, 0xD7, 0x11, 0x33, 0x19, 0x32, 0x21, 0x11, 0x03, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x92, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x11, 0x19, 0x31, 0x01, 0x19, 0x32, 0x84, 0x19, 0x53, 0x19, 0x74, 0x11, 0x95, 0x19, 0xB6, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x82, 0x19, 0xB6, 0x19, 0xB5, 0x11, 0x54, 0x01, 0x11, 0x53, 0x83, 0x09, 0x32, 0x11, 0x32, 0x09, 0x12, 0x11, 0x33, 0x02, 0x11, 0x32, 0x02, + 0x11, 0x53, 0x82, 0x11, 0x32, 0x11, 0x53, 0x19, 0x53, 0x05, 0x11, 0x33, 0x01, 0x11, 0x53, 0x80, 0x11, 0x33, 0x02, 0x09, 0x33, 0x02, 0x11, 0x33, 0x87, 0x11, 0x32, 0x11, 0x33, 0x11, 0x32, 0x11, 0x33, 0x09, 0x33, 0x09, 0x54, 0x09, 0x75, 0x09, 0x96, 0x01, 0x11, 0xD7, 0x84, 0x09, 0xD7, 0x09, 0xB7, 0x09, 0x96, 0x09, 0x76, 0x01, 0x55, 0x01, 0x01, 0x56, 0x81, 0x01, 0x76, 0x09, 0xB7, 0x01, 0x11, 0xF8, 0x83, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x53, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x05, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x06, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x11, 0x33, 0x11, 0x34, 0x11, 0x54, 0x01, 0x19, 0xB6, 0x80, 0x19, + 0xD7, 0x01, 0x19, 0xD6, 0x83, 0x19, 0x94, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x51, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x31, 0x50, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x87, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x19, 0xB6, 0x19, 0xF7, 0x1A, 0x17, 0x11, 0xD7, 0x11, 0x96, 0x03, 0x09, 0x54, 0x82, 0x09, 0x74, 0x09, 0x75, 0x09, 0xB6, 0x01, 0x11, 0xD7, 0x82, 0x11, 0x96, 0x19, 0x74, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x29, 0x50, 0x29, 0x30, 0x07, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x50, 0x29, 0x50, 0x02, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x74, 0x19, 0x95, 0x01, 0x19, 0xD7, 0x8F, 0x11, 0xB7, 0x11, 0x75, 0x09, 0x32, 0x11, 0x31, 0x19, 0x31, 0x19, 0x51, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0x95, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xF7, 0x11, 0xB7, 0x09, 0x75, 0x09, 0x54, 0x02, 0x09, 0x34, 0x8E, 0x09, 0x55, 0x09, 0x96, 0x11, 0xD7, 0x11, 0xF7, 0x1A, 0x17, 0x11, 0xB5, 0x11, 0x73, 0x19, 0x52, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x11, 0x52, 0x11, 0x53, 0x09, 0x74, 0x11, 0xD6, 0x01, 0x19, 0xF7, 0x85, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, + 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x09, 0x13, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xB6, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x96, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x12, 0x11, 0x12, 0x11, 0xB6, 0x11, 0xF7, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x94, 0x21, 0x50, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x19, 0x33, 0x19, 0x74, 0x21, 0xD6, 0x19, 0xD6, 0x11, 0x95, 0x19, 0xD5, 0x11, 0x73, 0x19, 0x52, 0x19, 0x31, 0x19, 0x30, 0x21, + 0x10, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x8C, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x09, 0x12, 0x19, 0xD6, 0x11, 0xF7, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x04, 0x21, 0x10, 0x91, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x87, 0x21, 0x11, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0x74, 0x21, 0xD6, 0x2A, 0x17, 0x19, 0x95, 0x01, 0x11, 0x32, 0x03, 0x19, 0x32, 0x01, 0x11, 0x33, 0x87, 0x19, 0xB5, 0x21, 0xD6, 0x21, 0xF6, 0x19, 0xB4, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x92, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, + 0x19, 0x53, 0x19, 0x94, 0x11, 0xB6, 0x11, 0xD8, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xF9, 0x09, 0xF9, 0x01, 0xD8, 0x09, 0xD8, 0x09, 0xD7, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x53, 0x01, 0x19, 0x32, 0x81, 0x21, 0x52, 0x21, 0x31, 0x01, 0x21, 0x51, 0x80, 0x21, 0x31, 0x03, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x07, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x0A, 0x21, 0x30, 0x03, 0x29, 0x30, 0x80, 0x29, 0x50, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x50, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x0E, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x89, 0x21, 0x30, 0x19, 0x10, 0x10, 0xF0, + 0x08, 0xF2, 0x11, 0xD7, 0x09, 0xD8, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x82, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x03, 0x01, 0xBA, 0x83, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x82, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x02, 0x01, 0xBA, 0x81, 0x01, 0xDA, 0x01, 0xBA, 0x03, 0x01, 0xD9, 0x87, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0xB6, 0x08, 0xF1, 0x18, 0xF0, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x0E, 0x20, 0xEE, 0x21, 0x0E, 0x21, 0x0F, 0x21, 0x0E, 0x01, 0x20, 0xEF, 0x81, 0x21, 0x0F, 0x20, 0xEE, 0x01, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x81, 0x20, 0xEF, 0x20, 0xEE, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEE, 0x01, 0x21, 0x0E, 0x81, 0x20, 0xEE, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x05, 0x21, 0x0F, 0x03, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x14, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x13, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0A, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x87, 0x21, 0x10, 0x10, 0xF1, 0x11, 0x53, 0x11, 0xD6, 0x11, 0xF8, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x8F, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xD8, 0x19, 0xF7, + 0x11, 0x54, 0x19, 0x12, 0x21, 0x11, 0x21, 0x10, 0x29, 0x10, 0x28, 0xEF, 0x29, 0x0F, 0x28, 0xEF, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x20, 0xEF, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x19, 0xB5, 0x19, 0xB6, 0x11, 0xB6, 0x19, 0xB7, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x83, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0xB6, 0x02, 0x11, 0xB6, 0x83, 0x11, 0x96, 0x11, 0x95, 0x11, 0x96, 0x11, 0xB6, 0x02, 0x11, 0x95, 0x80, 0x11, 0x96, 0x01, 0x11, 0x95, 0x82, 0x11, 0x96, 0x19, 0xB6, 0x11, 0x96, 0x03, 0x11, 0xB6, 0x80, 0x11, 0x96, 0x05, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x82, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0xD7, 0x01, 0x11, 0xD8, 0x83, 0x11, 0xB7, 0x09, 0x96, 0x09, 0x76, 0x09, 0x96, 0x01, 0x01, 0x55, 0x8C, 0x01, 0x35, 0x01, 0x56, 0x09, 0x96, 0x11, 0xD7, 0x11, 0xF8, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x74, 0x19, 0x32, 0x19, 0x11, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x07, 0x21, 0x2F, + 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x06, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x12, 0x11, 0x53, 0x01, 0x19, 0x95, 0x81, 0x21, 0xD6, 0x21, 0xF7, 0x01, 0x19, 0xD6, 0x86, 0x19, 0x74, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x29, 0x50, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x88, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xF7, 0x1A, 0x17, 0x11, 0xD7, 0x11, 0xB7, 0x09, 0x76, 0x09, 0x55, 0x02, 0x09, 0x75, 0x80, 0x11, 0x96, 0x02, 0x11, 0xD7, 0x85, 0x19, 0x96, 0x19, 0x53, 0x19, 0x32, 0x21, 0x31, 0x21, 0x11, + 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x08, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x53, 0x19, 0x95, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0x95, 0x09, 0x33, 0x11, 0x32, 0x02, 0x19, 0x51, 0x01, 0x19, 0x32, 0x81, 0x11, 0x54, 0x11, 0x95, 0x02, 0x11, 0xD7, 0x81, 0x11, 0xB7, 0x09, 0x75, 0x01, 0x09, 0x55, 0x8F, 0x09, 0x75, 0x09, 0x96, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x53, 0x19, 0x52, 0x19, 0x51, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x73, 0x11, 0xB5, 0x1A, 0x17, 0x01, 0x19, 0xF7, 0x85, 0x11, 0x95, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x19, 0x31, 0x19, 0x12, 0x11, 0x13, 0x19, 0xD7, 0x01, 0x19, 0xF8, 0x81, 0x11, 0x96, 0x11, 0x12, 0x01, 0x19, 0x11, 0x83, 0x21, 0x10, 0x21, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8E, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF8, 0x19, 0xB6, 0x08, 0xF2, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, + 0x31, 0x01, 0x19, 0x32, 0x89, 0x11, 0x12, 0x11, 0xB6, 0x19, 0xF7, 0x1A, 0x38, 0x19, 0xD6, 0x11, 0x12, 0x19, 0x12, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x94, 0x21, 0x50, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x19, 0x53, 0x19, 0xB5, 0x19, 0xB6, 0x11, 0x95, 0x19, 0xF6, 0x19, 0xD5, 0x19, 0x73, 0x19, 0x52, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x8B, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0xD6, 0x11, 0xF7, 0x1A, 0x17, 0x11, 0x95, 0x11, 0x11, 0x21, 0x52, 0x21, 0x51, 0x29, 0x51, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x8D, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x19, 0x95, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x52, 0x21, 0x52, 0x21, 0x51, 0x21, 0x30, 0x02, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, + 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, 0x50, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x11, 0x01, 0x19, 0x32, 0x86, 0x11, 0x12, 0x19, 0x74, 0x21, 0xF6, 0x2A, 0x17, 0x19, 0x94, 0x11, 0x12, 0x11, 0x32, 0x02, 0x19, 0x32, 0x8A, 0x11, 0x32, 0x11, 0x52, 0x11, 0x53, 0x19, 0xB5, 0x21, 0xF6, 0x22, 0x16, 0x19, 0x94, 0x09, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x94, 0x19, 0xB6, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0x01, 0xF9, 0x01, 0x01, 0xD9, 0x86, 0x01, 0xF9, 0x01, 0xD8, 0x09, 0xD8, 0x11, 0xD8, 0x19, 0xD7, 0x19, 0x75, 0x19, 0x53, 0x01, 0x19, 0x52, 0x01, 0x19, 0x31, 0x84, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x51, 0x06, 0x21, 0x30, 0x02, 0x29, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x82, 0x21, 0x30, 0x29, 0x31, 0x29, 0x30, 0x03, 0x21, 0x30, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x29, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, + 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x04, 0x21, 0x30, 0x02, 0x21, 0x31, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x31, 0x03, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x09, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x89, 0x21, 0x30, 0x21, 0x10, 0x10, 0xF0, 0x08, 0xF2, 0x19, 0xF7, 0x12, 0x19, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0x99, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xBA, 0x01, 0xB9, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xBA, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x81, 0x01, 0xBA, 0x01, 0xDA, 0x03, 0x01, 0xBA, 0x8C, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0xF9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD9, 0x12, 0x19, 0x11, 0x96, 0x08, 0xD1, 0x18, 0xF0, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x20, 0xEE, 0x83, 0x21, 0x0F, 0x20, 0xEF, 0x20, 0xEE, 0x21, 0x0F, 0x02, 0x21, 0x0E, 0x82, 0x21, 0x0F, 0x19, 0x0F, + 0x21, 0x0F, 0x03, 0x21, 0x0E, 0x80, 0x20, 0xEE, 0x03, 0x21, 0x0E, 0x81, 0x21, 0x0F, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x0E, 0x21, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x89, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x86, 0x10, 0xF1, 0x11, 0x54, 0x11, 0xB6, 0x11, 0xF8, 0x09, 0xF9, 0x01, 0xF9, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x8B, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0xF9, 0x01, 0xD9, 0x09, 0xD8, 0x11, 0xD7, 0x11, 0x75, 0x11, 0x12, 0x21, 0x31, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, + 0x30, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x89, 0x19, 0x32, 0x19, 0x53, 0x19, 0x74, 0x19, 0x95, 0x19, 0x96, 0x19, 0xB6, 0x19, 0xD7, 0x11, 0xD7, 0x19, 0xD7, 0x11, 0xD7, 0x01, 0x1A, 0x18, 0x84, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x38, 0x01, 0x1A, 0x18, 0x82, 0x1A, 0x38, 0x19, 0xF8, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x02, 0x1A, 0x18, 0x02, 0x19, 0xF8, 0x86, 0x1A, 0x19, 0x1A, 0x39, 0x22, 0x39, 0x19, 0xF8, 0x21, 0xF8, 0x19, 0xD7, 0x21, 0xF8, 0x03, 0x19, 0xF7, 0x80, 0x11, 0xF8, 0x01, 0x11, 0xD8, 0x82, 0x09, 0xB8, 0x09, 0x97, 0x09, 0x76, 0x01, 0x09, 0x55, 0x02, 0x01, 0x35, 0x88, 0x09, 0x55, 0x09, 0x76, 0x11, 0xB7, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x94, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, + 0x10, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x84, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x19, 0x74, 0x19, 0xB5, 0x02, 0x19, 0xD6, 0x84, 0x21, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x50, 0x03, 0x21, 0x30, 0x89, 0x19, 0x31, 0x19, 0x11, 0x19, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x1A, 0x17, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0x97, 0x11, 0x96, 0x01, 0x09, 0x96, 0x01, 0x11, 0xB6, 0x01, 0x11, 0xD7, 0x82, 0x19, 0xB7, 0x19, 0x75, 0x19, 0x53, 0x01, 0x19, 0x11, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x08, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x83, 0x19, 0x11, 0x19, 0x53, 0x19, 0x94, 0x19, 0xB6, 0x01, 0x19, 0xD7, 0x83, 0x11, 0x96, 0x11, 0x53, 0x11, 0x32, 0x11, 0x31, 0x02, 0x19, 0x31, 0x88, 0x19, 0x52, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x11, 0xF7, 0x12, 0x18, 0x09, 0xD7, 0x09, 0xB6, 0x09, 0x76, 0x01, 0x09, 0x96, 0x85, 0x09, 0xB6, 0x11, 0xD6, 0x19, 0xF6, 0x19, 0xD6, 0x11, + 0x94, 0x19, 0x73, 0x01, 0x19, 0x52, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x82, 0x11, 0x33, 0x11, 0x53, 0x11, 0x95, 0x01, 0x19, 0xF7, 0x86, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x11, 0x19, 0x12, 0x09, 0x12, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x75, 0x11, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x10, 0x21, 0x30, 0x19, 0x30, 0x11, 0x11, 0x11, 0x53, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF8, 0x19, 0xB6, 0x10, 0xF2, 0x10, 0xF1, 0x01, 0x21, 0x11, 0x8C, 0x21, 0x31, 0x19, 0x32, 0x19, 0x12, 0x11, 0x12, 0x11, 0xB5, 0x11, 0xF7, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, + 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x81, 0x19, 0x0F, 0x21, 0x30, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x81, 0x11, 0x32, 0x11, 0x53, 0x01, 0x11, 0x74, 0x85, 0x22, 0x16, 0x19, 0xF6, 0x11, 0x74, 0x11, 0x52, 0x19, 0x52, 0x19, 0x31, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x11, 0x09, 0x12, 0x19, 0xD6, 0x11, 0xD6, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x19, 0x11, 0x8A, 0x19, 0x32, 0x11, 0x53, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x21, 0x32, 0x01, 0x21, 0x31, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x97, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x8C, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0x74, 0x21, 0xB6, 0x2A, 0x17, 0x19, 0x95, + 0x11, 0x12, 0x11, 0x32, 0x01, 0x19, 0x32, 0x8B, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x94, 0x21, 0xD6, 0x21, 0xF6, 0x19, 0x94, 0x09, 0x12, 0x19, 0x32, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0xB6, 0x09, 0xB8, 0x09, 0xD9, 0x06, 0x01, 0xD9, 0x85, 0x09, 0xD8, 0x09, 0xB8, 0x11, 0xD8, 0x19, 0xB6, 0x11, 0x74, 0x19, 0x53, 0x01, 0x19, 0x32, 0x81, 0x19, 0x31, 0x19, 0x11, 0x02, 0x19, 0x31, 0x11, 0x21, 0x31, 0x80, 0x21, 0x51, 0x0F, 0x21, 0x31, 0x82, 0x21, 0x51, 0x21, 0x31, 0x21, 0x11, 0x07, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x02, 0x21, 0x31, 0x81, 0x19, 0x31, 0x21, 0x31, 0x09, 0x19, 0x31, 0x04, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x31, 0x08, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x09, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x0B, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x30, 0x19, 0x10, 0x08, 0xF1, 0x11, 0xD7, 0x09, 0xF8, 0x01, 0xB9, + 0x04, 0x01, 0xBA, 0x80, 0x01, 0xB9, 0x03, 0x01, 0xDA, 0x81, 0x01, 0xBA, 0x01, 0xB9, 0x01, 0x01, 0xBA, 0x03, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x82, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x02, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xD9, 0x86, 0x01, 0xB8, 0x01, 0xD8, 0x11, 0xD8, 0x11, 0x95, 0x08, 0xD1, 0x18, 0xF0, 0x20, 0xF0, 0x02, 0x21, 0x0F, 0x02, 0x20, 0xEE, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x01, 0x20, 0xEE, 0x02, 0x21, 0x0E, 0x01, 0x19, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x04, 0x21, 0x0E, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x81, 0x21, 0x0E, 0x20, 0xEE, 0x03, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x20, 0xEE, 0x09, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x85, 0x19, 0x11, 0x11, 0x12, 0x19, 0xB6, 0x1A, 0x18, 0x09, 0xD8, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x86, 0x01, 0xD8, 0x09, 0xD7, 0x11, + 0x95, 0x11, 0x12, 0x21, 0x31, 0x29, 0x31, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x84, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x07, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x19, 0x30, 0x19, 0x31, 0x21, 0x52, 0x19, 0x32, 0x01, 0x19, 0x53, 0x01, 0x19, 0x95, 0x86, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x18, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xF7, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x81, 0x22, 0x38, 0x22, 0x18, 0x04, 0x1A, 0x18, 0x05, 0x22, 0x18, 0x02, 0x22, 0x38, 0x82, 0x1A, 0x18, 0x22, 0x39, 0x1A, 0x19, 0x03, 0x19, 0xF8, 0x80, 0x21, 0xF8, 0x01, 0x21, 0xF7, 0x84, 0x19, 0xD7, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0xD7, 0x01, 0x11, 0xB7, 0x93, 0x11, 0xD8, 0x09, 0x97, 0x01, 0x55, 0x01, 0x35, 0x09, 0x35, 0x09, 0x55, 0x01, 0x34, 0x01, 0x35, 0x01, 0x55, 0x09, 0x96, 0x11, 0x96, 0x11, 0xD7, 0x19, 0xD7, 0x19, 0x96, 0x19, 0x74, 0x19, 0x12, 0x18, 0xF1, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, + 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x87, 0x21, 0x51, 0x19, 0x31, 0x19, 0x52, 0x19, 0x53, 0x19, 0x74, 0x19, 0x95, 0x19, 0xB6, 0x19, 0xD7, 0x01, 0x21, 0xF7, 0x85, 0x11, 0x74, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x29, 0x30, 0x93, 0x21, 0x0F, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0xB5, 0x19, 0xD7, 0x02, 0x11, 0xD7, 0x8B, 0x11, 0x97, 0x11, 0xB7, 0x11, 0xB6, 0x11, 0xB7, 0x19, 0xD7, 0x11, 0xD7, 0x11, 0xB6, 0x19, 0xB6, 0x19, 0x74, 0x19, 0x53, 0x21, 0x31, 0x21, 0x11, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, + 0x50, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x0B, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x89, 0x19, 0x31, 0x19, 0x53, 0x19, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0x74, 0x09, 0x32, 0x11, 0x31, 0x02, 0x19, 0x31, 0x87, 0x19, 0x32, 0x19, 0x52, 0x11, 0x73, 0x11, 0xB5, 0x1A, 0x17, 0x12, 0x18, 0x11, 0xF7, 0x09, 0xB7, 0x01, 0x09, 0xB6, 0x01, 0x11, 0xD7, 0x85, 0x11, 0xD6, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x73, 0x19, 0x53, 0x19, 0x32, 0x02, 0x19, 0x31, 0x8B, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x53, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x89, 0x19, 0x12, 0x11, 0x33, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x95, 0x11, 0x32, 0x19, 0x51, 0x19, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x85, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x19, 0x31, 0x86, 0x11, 0x53, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF8, 0x19, 0xB6, 0x08, 0xF2, 0x10, 0xF1, 0x02, 0x21, 0x11, 0x89, 0x19, 0x32, 0x19, 0x12, 0x11, 0x12, 0x11, 0xB5, 0x11, 0xD6, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x12, 0x19, 0x31, 0x21, 0x11, 0x05, 0x21, 0x30, + 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x30, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x19, 0x11, 0x11, 0x32, 0x01, 0x11, 0x53, 0x83, 0x09, 0x54, 0x19, 0xF6, 0x22, 0x16, 0x19, 0xB5, 0x01, 0x11, 0x32, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x83, 0x11, 0x95, 0x11, 0x12, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x19, 0x11, 0x82, 0x19, 0x32, 0x19, 0x74, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x85, 0x19, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x13, 0x11, 0x12, 0x21, 0x32, 0x01, 0x21, 0x31, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, + 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x50, 0x03, 0x21, 0x30, 0x89, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x11, 0x13, 0x19, 0x75, 0x21, 0xD6, 0x2A, 0x17, 0x19, 0x94, 0x09, 0x12, 0x11, 0x32, 0x02, 0x19, 0x32, 0x8B, 0x19, 0x52, 0x11, 0x32, 0x11, 0x53, 0x19, 0x94, 0x21, 0xD6, 0x21, 0xF6, 0x19, 0x94, 0x09, 0x12, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0xB6, 0x11, 0xD8, 0x09, 0xB8, 0x01, 0xD9, 0x01, 0xB9, 0x06, 0x01, 0xD9, 0x85, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0x96, 0x09, 0x55, 0x11, 0x54, 0x11, 0x33, 0x01, 0x08, 0xF2, 0x84, 0x08, 0xF1, 0x10, 0xF2, 0x11, 0x12, 0x11, 0x11, 0x19, 0x12, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x11, 0x11, 0x04, 0x19, 0x11, 0x82, 0x19, 0x12, 0x19, 0x11, 0x19, 0x12, 0x04, 0x19, 0x11, 0x80, 0x11, 0x11, 0x03, 0x19, 0x11, 0x81, 0x11, 0x11, 0x19, 0x12, 0x07, 0x19, 0x11, 0x80, 0x10, 0xF1, 0x02, 0x19, 0x11, 0x01, 0x10, 0xF1, 0x02, 0x19, 0x11, 0x80, 0x11, 0x11, 0x01, 0x19, 0x11, 0x83, 0x11, 0x11, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x05, 0x11, 0x11, 0x80, 0x11, 0x31, 0x07, 0x11, 0x11, 0x80, 0x10, 0xF1, 0x03, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x02, 0x19, 0x31, 0x03, 0x21, 0x31, 0x82, + 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x12, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x12, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x8C, 0x21, 0x10, 0x18, 0xF0, 0x11, 0x12, 0x11, 0xD6, 0x12, 0x19, 0x09, 0xD9, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0x99, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x81, 0x01, 0x99, 0x01, 0xB9, 0x04, 0x01, 0xDA, 0x82, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0x01, 0xB9, 0x81, 0x01, 0x99, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xD9, 0x86, 0x01, 0xB9, 0x01, 0xB8, 0x11, 0xD8, 0x11, 0x75, 0x08, 0xF1, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x82, 0x21, 0x0E, 0x21, 0x0F, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x02, 0x21, 0x0E, 0x83, 0x19, 0x0E, 0x19, 0x0F, 0x21, 0x0E, 0x21, 0x0F, 0x08, 0x21, 0x0E, 0x04, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x81, 0x29, 0x0F, 0x20, 0xEE, 0x04, 0x21, 0x0E, 0x12, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, + 0x10, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x88, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x85, 0x21, 0x11, 0x21, 0x31, 0x11, 0x12, 0x19, 0xD6, 0x11, 0xB7, 0x09, 0xD8, 0x02, 0x01, 0xB9, 0x81, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x8F, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0xD8, 0x09, 0xD8, 0x11, 0xB6, 0x11, 0x12, 0x21, 0x32, 0x21, 0x31, 0x29, 0x31, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x06, 0x21, 0x30, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x04, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x82, 0x19, 0x30, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x32, 0x82, 0x19, 0x53, 0x11, 0x53, 0x11, 0x74, 0x02, 0x11, 0x95, 0x80, 0x19, 0xB6, 0x02, 0x19, 0x95, 0x01, 0x11, 0x95, 0x83, 0x11, 0xB6, 0x19, 0xB6, 0x11, 0xB6, 0x19, 0xD6, 0x02, 0x19, 0xB6, 0x80, 0x19, 0x95, 0x04, 0x19, 0xB6, 0x82, 0x11, 0x95, 0x19, 0xB6, 0x11, 0xB6, 0x01, 0x19, 0xB6, 0x81, 0x11, 0xB6, + 0x19, 0xB6, 0x01, 0x19, 0x96, 0x80, 0x19, 0xB6, 0x02, 0x19, 0x95, 0x82, 0x19, 0xB6, 0x11, 0xB6, 0x19, 0xD6, 0x01, 0x11, 0xB7, 0x86, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0xB7, 0x09, 0x76, 0x09, 0x55, 0x09, 0x35, 0x09, 0x55, 0x01, 0x01, 0x35, 0x8F, 0x09, 0x55, 0x09, 0x96, 0x11, 0xB7, 0x19, 0xD7, 0x19, 0xB7, 0x19, 0x96, 0x19, 0x54, 0x19, 0x12, 0x19, 0x11, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x84, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x8F, 0x21, 0x50, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x19, 0x54, 0x19, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x11, + 0x54, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x50, 0x93, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xB7, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x97, 0x11, 0xB7, 0x19, 0xB7, 0x11, 0xB7, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x53, 0x19, 0x32, 0x21, 0x11, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x19, 0x74, 0x19, 0x95, 0x02, 0x19, 0xD7, 0x82, 0x11, 0xB5, 0x09, 0x33, 0x11, 0x32, 0x03, 0x19, 0x31, 0x86, 0x19, 0x52, 0x11, 0x53, 0x11, 0x74, 0x11, 0xD5, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xD6, 0x01, 0x11, 0xD7, 0x86, 0x11, 0xD6, 0x11, 0xB6, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x94, 0x19, 0x53, 0x19, 0x52, 0x03, 0x19, 0x32, 0x83, 0x19, 0x33, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x01, 0x22, 0x18, 0x83, 0x19, 0xB6, 0x11, 0x74, 0x19, 0x53, 0x19, 0x11, 0x01, 0x21, 0x31, 0x82, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x90, 0x21, 0x10, 0x21, 0x31, 0x19, + 0x12, 0x11, 0x13, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xD8, 0x19, 0x96, 0x11, 0x33, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x50, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x19, 0x31, 0x86, 0x11, 0x33, 0x11, 0x95, 0x19, 0xF7, 0x19, 0xD8, 0x19, 0xB6, 0x11, 0x12, 0x10, 0xF1, 0x01, 0x21, 0x11, 0x8A, 0x21, 0x31, 0x19, 0x32, 0x19, 0x12, 0x11, 0x33, 0x19, 0xB6, 0x19, 0xF7, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x05, 0x21, 0x30, 0x02, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8A, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x31, 0x21, 0x52, 0x19, 0x31, 0x11, 0x11, 0x01, 0x11, 0x32, 0x84, 0x11, 0x53, 0x11, 0x54, 0x19, 0xB5, 0x21, 0xF6, 0x21, 0xD6, 0x01, 0x11, 0x32, 0x81, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB5, 0x09, 0x11, 0x19, 0x31, 0x21, + 0x51, 0x29, 0x51, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x8F, 0x21, 0x11, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x19, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xD7, 0x19, 0x96, 0x11, 0x34, 0x11, 0x33, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x50, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x86, 0x11, 0x12, 0x19, 0x74, 0x29, 0xF6, 0x2A, 0x17, 0x19, 0x94, 0x11, 0x12, 0x11, 0x32, 0x03, 0x19, 0x32, 0x82, 0x11, 0x32, 0x11, 0x33, 0x19, 0x94, 0x01, 0x21, 0xF6, 0x84, 0x11, 0x94, 0x09, 0x12, 0x11, 0x32, 0x19, 0x52, 0x21, 0x31, 0x07, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x74, 0x11, 0x96, 0x11, 0xD8, 0x09, 0xF9, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x03, 0x01, 0xD9, 0x86, 0x01, 0xB9, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x75, 0x01, 0x09, 0x54, 0x80, 0x09, 0x34, 0x03, 0x11, 0x33, 0x81, 0x09, 0x12, 0x11, 0x12, 0x01, 0x09, 0x12, + 0x80, 0x11, 0x12, 0x03, 0x09, 0x12, 0x86, 0x11, 0x13, 0x09, 0x12, 0x09, 0x13, 0x11, 0x13, 0x08, 0xF2, 0x11, 0x12, 0x08, 0xF2, 0x06, 0x09, 0x12, 0x81, 0x11, 0x13, 0x09, 0x13, 0x01, 0x09, 0x12, 0x80, 0x11, 0x12, 0x01, 0x09, 0x12, 0x80, 0x11, 0x12, 0x02, 0x09, 0x12, 0x80, 0x11, 0x12, 0x01, 0x09, 0x12, 0x01, 0x11, 0x12, 0x80, 0x08, 0xF2, 0x0E, 0x09, 0x12, 0x81, 0x09, 0x32, 0x09, 0x12, 0x01, 0x09, 0x32, 0x04, 0x09, 0x12, 0x02, 0x11, 0x12, 0x80, 0x11, 0x32, 0x02, 0x11, 0x12, 0x02, 0x11, 0x32, 0x80, 0x11, 0x12, 0x01, 0x19, 0x12, 0x82, 0x21, 0x32, 0x21, 0x11, 0x21, 0x31, 0x07, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x0C, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x86, 0x21, 0x10, 0x18, 0xF0, 0x11, 0x32, 0x11, 0xB6, 0x1A, 0x39, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0x01, 0xBA, 0x01, 0x01, 0xB9, 0x85, 0x01, 0xBA, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xB9, 0x02, 0x01, 0xBA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x80, 0x01, 0x99, 0x05, 0x01, 0xB9, 0x04, 0x01, 0xD9, 0x89, 0x09, 0xB8, 0x11, 0xD8, 0x11, 0x75, 0x08, 0xF1, 0x18, 0xF0, 0x21, 0x10, 0x20, 0xEF, 0x21, + 0x2F, 0x21, 0x0F, 0x20, 0xEE, 0x01, 0x21, 0x0F, 0x81, 0x20, 0xEE, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x02, 0x21, 0x0E, 0x82, 0x19, 0x0E, 0x21, 0x0E, 0x19, 0x0E, 0x07, 0x21, 0x0E, 0x80, 0x29, 0x2F, 0x06, 0x21, 0x0F, 0x81, 0x20, 0xEF, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x10, 0x88, 0x21, 0x11, 0x19, 0x12, 0x11, 0x33, 0x21, 0xF7, 0x11, 0xF9, 0x01, 0xB8, 0x01, 0xD9, 0x01, 0x99, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x80, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x01, 0x01, 0xF9, 0x83, 0x09, 0xF8, 0x19, 0xF7, 0x11, 0x53, 0x19, 0x32, 0x02, 0x21, 0x31, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, + 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x07, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x02, 0x19, 0x31, 0x01, 0x19, 0x52, 0x04, 0x11, 0x32, 0x01, 0x11, 0x12, 0x02, 0x11, 0x32, 0x03, 0x11, 0x53, 0x01, 0x11, 0x32, 0x80, 0x19, 0x53, 0x01, 0x11, 0x32, 0x02, 0x11, 0x12, 0x82, 0x11, 0x32, 0x11, 0x33, 0x11, 0x32, 0x05, 0x11, 0x33, 0x80, 0x11, 0x53, 0x02, 0x19, 0x53, 0x80, 0x19, 0x73, 0x01, 0x11, 0x53, 0x83, 0x09, 0x34, 0x09, 0x54, 0x09, 0x76, 0x11, 0xB7, 0x01, 0x11, 0xF8, 0x81, 0x11, 0xB7, 0x09, 0x76, 0x03, 0x09, 0x55, 0x8D, 0x09, 0x96, 0x11, 0xD7, 0x19, 0xF8, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x75, 0x19, 0x33, 0x19, 0x12, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x80, + 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x50, 0x01, 0x21, 0x30, 0x85, 0x19, 0x31, 0x19, 0x12, 0x19, 0x33, 0x11, 0x54, 0x19, 0x96, 0x19, 0xF7, 0x01, 0x22, 0x17, 0x81, 0x19, 0xF6, 0x11, 0x74, 0x01, 0x11, 0x12, 0x84, 0x19, 0x11, 0x21, 0x51, 0x21, 0x31, 0x29, 0x50, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x50, 0x21, 0x51, 0x01, 0x21, 0x31, 0x86, 0x19, 0x11, 0x19, 0x32, 0x19, 0x54, 0x19, 0x75, 0x11, 0x76, 0x11, 0x96, 0x19, 0xD7, 0x02, 0x11, 0xB7, 0x89, 0x11, 0x96, 0x19, 0xB6, 0x11, 0x96, 0x11, 0x75, 0x19, 0x74, 0x19, 0x32, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x84, 0x19, 0x31, 0x19, 0x52, 0x19, 0x53, 0x19, 0x75, 0x19, 0xB6, 0x01, 0x19, 0xD7, 0x81, 0x19, 0xB6, 0x11, 0x74, 0x01, 0x11, 0x32, 0x81, 0x19, 0x52, 0x19, 0x31, 0x01, 0x19, 0x52, 0x82, 0x11, 0x52, 0x11, 0x73, 0x11, 0x94, 0x01, 0x11, 0x95, 0x97, 0x11, 0xB5, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x95, 0x11, 0xB5, + 0x19, 0xB5, 0x19, 0x94, 0x11, 0x52, 0x11, 0x32, 0x19, 0x52, 0x19, 0x32, 0x21, 0x52, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0x95, 0x19, 0x94, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x89, 0x19, 0x11, 0x19, 0x12, 0x11, 0x13, 0x21, 0xF7, 0x22, 0x19, 0x19, 0xD8, 0x11, 0x75, 0x11, 0x53, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x19, 0x31, 0x86, 0x11, 0x53, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF8, 0x19, 0xB6, 0x11, 0x12, 0x10, 0xF1, 0x01, 0x21, 0x11, 0x89, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x11, 0x13, 0x19, 0xB6, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xD6, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x90, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, + 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x53, 0x11, 0x95, 0x21, 0xD6, 0x21, 0xF6, 0x09, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x30, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x8B, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0x75, 0x08, 0xF1, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x11, 0x8A, 0x11, 0x32, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x17, 0x22, 0x18, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x34, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x85, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x32, 0x84, 0x11, 0x32, 0x19, 0x74, 0x21, 0xF6, 0x2A, 0x16, 0x19, 0xB4, 0x01, 0x11, 0x32, 0x03, 0x19, 0x32, 0x82, 0x11, 0x32, 0x11, 0x33, 0x19, 0x94, 0x01, 0x21, 0xF6, 0x82, 0x19, 0x95, 0x09, 0x12, + 0x19, 0x32, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x88, 0x21, 0x10, 0x21, 0x11, 0x21, 0x32, 0x19, 0x32, 0x11, 0x53, 0x11, 0x96, 0x11, 0xB8, 0x09, 0xD9, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x02, 0x01, 0xB9, 0x81, 0x09, 0xD9, 0x09, 0xF8, 0x02, 0x11, 0xF8, 0x02, 0x11, 0xD7, 0x80, 0x11, 0xB7, 0x02, 0x11, 0xB6, 0x81, 0x11, 0x95, 0x11, 0xB6, 0x01, 0x11, 0x95, 0x02, 0x11, 0x96, 0x80, 0x11, 0xB6, 0x02, 0x11, 0x96, 0x82, 0x11, 0x97, 0x11, 0x96, 0x11, 0xB6, 0x02, 0x11, 0x96, 0x03, 0x11, 0xB6, 0x80, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x80, 0x11, 0x96, 0x04, 0x11, 0xB6, 0x80, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x02, 0x11, 0x96, 0x81, 0x11, 0xB6, 0x19, 0xB6, 0x0A, 0x11, 0xB6, 0x80, 0x11, 0xD6, 0x04, 0x11, 0xB6, 0x05, 0x11, 0xD6, 0x03, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x82, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x01, 0x19, 0xB6, 0x82, 0x19, 0x75, 0x11, 0x34, 0x11, 0x13, 0x01, 0x19, 0x12, 0x81, 0x19, 0x11, 0x21, 0x31, 0x06, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x04, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x06, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x0A, 0x21, 0x0F, 0x88, 0x21, 0x2F, 0x21, 0x0F, + 0x18, 0xEF, 0x19, 0x11, 0x19, 0x53, 0x11, 0x75, 0x12, 0x18, 0x09, 0xF9, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x81, 0x01, 0x99, 0x01, 0xB9, 0x03, 0x01, 0xD9, 0x81, 0x01, 0xDA, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x81, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x82, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0x99, 0x03, 0x01, 0xB9, 0x83, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x87, 0x01, 0xD9, 0x01, 0xB9, 0x09, 0xB8, 0x11, 0xD8, 0x11, 0x55, 0x08, 0xF1, 0x19, 0x11, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x0E, 0x02, 0x19, 0x0E, 0x06, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEE, 0x06, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x29, 0x0F, 0x81, 0x20, 0xEF, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x0C, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x89, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x88, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, + 0x21, 0x2F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x11, 0x19, 0x12, 0x11, 0x54, 0x19, 0xF8, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x87, 0x01, 0xD9, 0x02, 0x1A, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xF8, 0x09, 0x54, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x03, 0x19, 0x10, 0x03, 0x21, 0x31, 0x80, 0x19, 0x31, 0x04, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x19, 0x31, 0x21, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x04, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x82, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x03, 0x21, 0x31, 0x81, 0x19, 0x10, 0x21, 0x31, 0x06, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x30, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x18, 0xF1, 0x02, 0x19, 0x11, 0x82, 0x11, 0x11, 0x19, 0x11, 0x11, 0x11, 0x13, 0x19, 0x11, 0x81, 0x19, 0x31, 0x11, 0x11, 0x01, 0x11, 0x32, 0x87, 0x11, 0x33, 0x09, 0x33, 0x09, 0x55, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xF8, 0x11, 0xB7, 0x01, 0x09, 0x76, 0x82, 0x09, 0x55, 0x09, 0x76, 0x11, 0xB7, 0x01, 0x19, 0xF8, 0x85, 0x19, 0xD7, 0x19, 0x96, 0x19, 0x54, 0x19, 0x33, 0x21, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, + 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x07, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8C, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0x75, 0x11, 0x95, 0x19, 0xD7, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x54, 0x09, 0x12, 0x10, 0xF1, 0x19, 0x31, 0x01, 0x21, 0x51, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x50, 0x87, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x11, 0x55, 0x11, 0x96, 0x01, 0x11, 0xD7, 0x80, 0x11, 0xB7, 0x02, 0x11, 0x96, 0x84, 0x11, 0x75, 0x11, 0x53, 0x19, 0x52, 0x19, 0x11, 0x19, 0x30, 0x06, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, + 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x50, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x30, 0x19, 0x31, 0x19, 0x52, 0x11, 0x54, 0x19, 0x96, 0x19, 0xB7, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x95, 0x09, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x52, 0x82, 0x19, 0x73, 0x11, 0x73, 0x11, 0x74, 0x01, 0x11, 0x95, 0x80, 0x19, 0xB5, 0x01, 0x11, 0x74, 0x01, 0x19, 0x73, 0x01, 0x19, 0x52, 0x80, 0x19, 0x31, 0x02, 0x19, 0x32, 0x8B, 0x11, 0x13, 0x11, 0x33, 0x11, 0x75, 0x11, 0x96, 0x19, 0xD7, 0x22, 0x18, 0x19, 0xD7, 0x19, 0x75, 0x19, 0x73, 0x19, 0x32, 0x19, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x88, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x21, 0xF7, 0x22, 0x19, 0x19, 0xD8, 0x11, 0x75, 0x19, 0x53, 0x19, 0x31, 0x01, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x95, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x32, 0x19, 0x12, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF7, 0x1A, 0x17, 0x19, 0xD6, 0x09, 0x12, 0x19, 0x31, 0x21, 0x31, 0x06, + 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x82, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x01, 0x11, 0x53, 0x84, 0x11, 0x74, 0x21, 0xF6, 0x2A, 0x17, 0x11, 0x53, 0x11, 0x12, 0x01, 0x19, 0x52, 0x84, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x19, 0x31, 0x11, 0x12, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x84, 0x11, 0x95, 0x09, 0x11, 0x19, 0x10, 0x21, 0x51, 0x29, 0x50, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, + 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x12, 0x19, 0x74, 0x21, 0xF6, 0x22, 0x16, 0x19, 0xB5, 0x11, 0x12, 0x11, 0x32, 0x19, 0x52, 0x11, 0x12, 0x01, 0x19, 0x32, 0x82, 0x11, 0x32, 0x11, 0x33, 0x19, 0x94, 0x01, 0x21, 0xF6, 0x84, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x32, 0x19, 0x52, 0x19, 0x51, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x88, 0x21, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x96, 0x11, 0xD8, 0x09, 0xF9, 0x01, 0xFA, 0x01, 0xBA, 0x02, 0x01, 0xDA, 0x04, 0x01, 0xD9, 0x81, 0x09, 0xD9, 0x09, 0xF9, 0x01, 0x11, 0xF9, 0x02, 0x12, 0x19, 0x80, 0x1A, 0x19, 0x01, 0x1A, 0x39, 0x80, 0x1A, 0x38, 0x01, 0x22, 0x39, 0x03, 0x22, 0x59, 0x01, 0x2A, 0x59, 0x81, 0x2A, 0x7A, 0x22, 0x5A, 0x04, 0x2A, 0x5A, 0x80, 0x22, 0x5A, 0x01, 0x2A, 0x5A, 0x80, 0x2A, 0x7A, 0x01, 0x2A, 0x5A, 0x03, 0x22, 0x7A, 0x80, 0x2A, 0x7A, 0x01, 0x22, 0x59, 0x04, 0x2A, 0x79, 0x80, 0x22, 0x59, 0x06, 0x2A, 0x59, 0x81, 0x22, 0x59, 0x2A, 0x79, 0x04, 0x22, 0x59, 0x02, 0x22, 0x79, 0x80, 0x22, 0x59, 0x03, 0x22, 0x79, 0x04, 0x22, 0x59, 0x81, 0x22, 0x39, 0x22, 0x59, 0x05, 0x22, 0x39, 0x8D, 0x1A, 0x18, 0x22, 0x38, 0x1A, 0x38, 0x1A, 0x18, 0x22, 0x38, 0x22, 0x18, 0x21, 0xF8, 0x21, 0xD7, 0x19, 0x75, 0x11, 0x13, 0x19, + 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x08, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x07, 0x29, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x89, 0x29, 0x2F, 0x21, 0x0F, 0x18, 0xEF, 0x19, 0x11, 0x19, 0x53, 0x09, 0x54, 0x1A, 0x18, 0x09, 0xF9, 0x09, 0xDA, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x07, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x80, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x82, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xDA, 0x02, 0x01, 0xB9, 0x81, 0x09, 0xB9, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x87, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xB9, 0x09, 0xB8, 0x19, 0xD8, 0x09, 0x34, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x20, 0xEE, 0x01, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x0E, 0x21, 0x2E, 0x21, 0x0E, 0x21, 0x2E, 0x21, 0x2F, 0x03, 0x21, 0x0E, 0x03, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x03, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, + 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x8C, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x22, 0x39, 0x09, 0xF9, 0x09, 0xFA, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x04, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x86, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0xD9, 0x09, 0xD8, 0x09, 0xB7, 0x09, 0x54, 0x01, 0x09, 0x12, 0x80, 0x11, 0x12, 0x01, 0x11, 0x11, 0x83, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x19, 0x32, 0x01, 0x19, 0x11, 0x83, 0x19, 0x31, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x11, 0x11, 0x01, 0x19, 0x11, 0x80, 0x11, 0x11, 0x01, 0x19, 0x31, 0x80, 0x11, 0x11, 0x01, 0x19, 0x31, 0x04, 0x19, 0x11, 0x80, 0x19, 0x31, 0x03, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x02, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, + 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x02, 0x19, 0x10, 0x83, 0x21, 0x30, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x20, 0xF0, 0x01, 0x18, 0xF0, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x10, 0x21, 0x11, 0x05, 0x21, 0x10, 0x82, 0x19, 0x10, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x31, 0x82, 0x19, 0x10, 0x19, 0x11, 0x21, 0x31, 0x02, 0x19, 0x31, 0x84, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x01, 0x11, 0x11, 0x83, 0x11, 0x12, 0x11, 0x74, 0x11, 0x95, 0x19, 0xB6, 0x01, 0x19, 0xD7, 0x80, 0x11, 0xD7, 0x01, 0x11, 0x96, 0x8C, 0x11, 0xB6, 0x11, 0xB7, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0x96, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x21, 0x32, 0x29, 0x51, 0x29, 0x31, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, + 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x92, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x19, 0x54, 0x11, 0x55, 0x11, 0x96, 0x19, 0xD7, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x74, 0x09, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x31, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x50, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x10, 0x89, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x34, 0x11, 0x75, 0x19, 0xD7, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0x96, 0x01, 0x11, 0x75, 0x81, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x83, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x01, 0x19, 0xD7, 0x88, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x11, 0x31, 0x19, 0x31, 0x11, 0x31, 0x01, 0x19, 0x52, 0x80, 0x11, 0x52, 0x01, 0x11, 0x53, 0x01, 0x19, 0x74, 0x01, 0x11, 0x53, 0x01, 0x19, 0x52, 0x84, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x01, 0x11, 0x33, 0x82, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD6, 0x01, 0x22, 0x18, 0x84, + 0x19, 0x95, 0x11, 0x54, 0x19, 0x53, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x19, 0x11, 0x87, 0x11, 0x33, 0x21, 0xF7, 0x19, 0xF8, 0x19, 0xB7, 0x11, 0x75, 0x11, 0x53, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x31, 0x11, 0x33, 0x19, 0xB6, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xB6, 0x11, 0x12, 0x01, 0x19, 0x11, 0x8A, 0x21, 0x31, 0x21, 0x11, 0x21, 0x32, 0x11, 0x12, 0x11, 0x33, 0x19, 0xD6, 0x11, 0xF7, 0x1A, 0x17, 0x19, 0xB6, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x50, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x19, 0x30, 0x19, 0x51, 0x19, 0x52, 0x11, 0x53, 0x11, 0x33, 0x11, 0x54, 0x21, 0xF6, 0x2A, 0x17, 0x11, 0x53, 0x11, + 0x32, 0x01, 0x19, 0x52, 0x82, 0x19, 0x51, 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x19, 0xD6, 0x01, 0x19, 0xF8, 0x84, 0x11, 0x96, 0x09, 0x12, 0x19, 0x31, 0x21, 0x51, 0x21, 0x50, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x87, 0x21, 0xF7, 0x19, 0x95, 0x19, 0x74, 0x19, 0x33, 0x19, 0x12, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x19, 0x31, 0x19, 0x32, 0x01, 0x11, 0x32, 0x83, 0x19, 0x94, 0x21, 0xF6, 0x2A, 0x17, 0x19, 0x94, 0x01, 0x11, 0x32, 0x80, 0x19, 0x52, 0x02, 0x19, 0x32, 0x01, 0x11, 0x32, 0x80, 0x19, 0x74, 0x01, 0x21, 0xF6, 0x84, 0x19, 0x95, 0x09, 0x12, 0x19, 0x32, 0x19, 0x72, 0x19, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, + 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x12, 0x11, 0x13, 0x11, 0x75, 0x11, 0xD7, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0x01, 0xBA, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x81, 0x09, 0xD9, 0x09, 0xD8, 0x02, 0x11, 0xD8, 0x01, 0x11, 0xF8, 0x01, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x80, 0x19, 0xF8, 0x02, 0x22, 0x18, 0x80, 0x22, 0x38, 0x01, 0x1A, 0x18, 0x80, 0x22, 0x19, 0x01, 0x19, 0xF8, 0x82, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xD8, 0x03, 0x19, 0xF8, 0x81, 0x1A, 0x18, 0x19, 0xF8, 0x03, 0x1A, 0x18, 0x02, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x80, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x86, 0x19, 0xD7, 0x21, 0xF8, 0x19, 0xF8, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xF8, 0x01, 0x19, 0xD7, 0x80, 0x19, 0xF7, 0x01, 0x19, 0xD7, 0x81, 0x19, 0xF7, 0x19, 0xD7, 0x04, 0x19, 0xF7, 0x80, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x81, 0x19, 0xD7, 0x19, 0xF8, 0x05, 0x19, 0xD8, 0x86, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xF7, 0x22, 0x18, 0x1A, 0x18, 0x19, 0xF7, 0x02, 0x19, 0xF8, 0x84, 0x19, 0xD8, 0x21, 0xD7, 0x19, 0xB6, 0x11, 0x34, 0x11, 0x13, 0x01, 0x19, 0x11, 0x81, 0x21, 0x31, 0x21, 0x10, 0x08, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x2F, 0x82, + 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x8B, 0x29, 0x0F, 0x29, 0x30, 0x20, 0xEF, 0x19, 0x0F, 0x19, 0x31, 0x19, 0x52, 0x09, 0x33, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x81, 0x01, 0xD9, 0x09, 0xF9, 0x01, 0x01, 0xB8, 0x83, 0x01, 0xD9, 0x01, 0xB8, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x03, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x81, 0x09, 0xB9, 0x09, 0x98, 0x02, 0x09, 0xB8, 0x83, 0x09, 0xD8, 0x01, 0xB8, 0x01, 0xB9, 0x09, 0xFA, 0x01, 0x01, 0xD9, 0x86, 0x09, 0xF9, 0x09, 0xB8, 0x09, 0x97, 0x19, 0xF7, 0x11, 0x34, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x30, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x20, 0xEE, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x07, 0x21, 0x0E, 0x09, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0E, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, + 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x86, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x34, 0x1A, 0x18, 0x12, 0x19, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x88, 0x01, 0xFA, 0x01, 0xF9, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xB7, 0x09, 0x96, 0x09, 0x54, 0x09, 0x34, 0x09, 0x33, 0x02, 0x11, 0x33, 0x80, 0x11, 0x53, 0x08, 0x11, 0x33, 0x81, 0x11, 0x53, 0x11, 0x32, 0x1C, 0x11, 0x33, 0x80, 0x11, 0x53, 0x02, 0x11, 0x33, 0x01, 0x11, 0x32, 0x02, 0x11, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x09, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x87, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xB7, 0x02, 0x19, 0xF7, 0x88, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x12, 0x21, 0x32, 0x21, 0x31, 0x29, 0x31, 0x01, 0x29, 0x30, 0x05, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, + 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x07, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8F, 0x21, 0x31, 0x19, 0x11, 0x19, 0x33, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xB6, 0x22, 0x18, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x50, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x50, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x84, 0x19, 0x32, 0x19, 0x33, 0x11, 0x34, 0x11, 0x55, 0x19, 0xD7, 0x01, 0x11, 0xD7, 0x82, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x01, 0x11, 0x32, 0x81, 0x19, 0x31, 0x19, 0x10, 0x04, 0x21, 0x2F, 0x82, 0x29, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, + 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x84, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x96, 0x02, 0x19, 0xD7, 0x83, 0x19, 0x96, 0x11, 0x34, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x32, 0x03, 0x19, 0x52, 0x01, 0x19, 0x32, 0x01, 0x11, 0x32, 0x81, 0x11, 0x52, 0x11, 0x32, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x8D, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xF7, 0x11, 0x74, 0x19, 0x53, 0x19, 0x32, 0x19, 0x11, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x11, 0x19, 0x12, 0x11, 0x13, 0x21, 0xF8, 0x22, 0x19, 0x19, 0xB8, 0x11, 0x75, 0x19, 0x33, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x87, 0x19, 0x10, 0x19, 0x31, 0x11, 0x33, 0x19, 0xB6, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xB6, 0x11, 0x12, 0x01, 0x19, 0x11, 0x8A, 0x21, 0x11, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x09, 0x33, 0x11, 0xB6, 0x11, 0xF7, 0x1A, 0x17, 0x19, 0xB6, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x85, 0x21, 0x2F, 0x21, 0x0F, + 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x0B, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8E, 0x19, 0x30, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x21, 0xD6, 0x21, 0xF6, 0x11, 0x74, 0x11, 0x12, 0x19, 0x52, 0x19, 0x31, 0x19, 0x51, 0x19, 0x30, 0x19, 0x10, 0x04, 0x21, 0x30, 0x83, 0x21, 0x31, 0x21, 0x32, 0x11, 0x12, 0x19, 0xB6, 0x01, 0x19, 0xF8, 0x82, 0x11, 0xB6, 0x09, 0x32, 0x11, 0x31, 0x01, 0x21, 0x51, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x85, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x02, 0x21, 0xF7, 0x81, 0x19, 0x95, 0x19, 0x54, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, + 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x87, 0x11, 0x52, 0x11, 0x32, 0x19, 0x94, 0x21, 0xF6, 0x22, 0x16, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x32, 0x03, 0x19, 0x32, 0x01, 0x11, 0x32, 0x89, 0x19, 0x94, 0x21, 0xD6, 0x21, 0xF6, 0x19, 0xB5, 0x09, 0x12, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x8C, 0x21, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xD9, 0x09, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x85, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xB8, 0x11, 0xB8, 0x09, 0x97, 0x11, 0xB7, 0x01, 0x11, 0x96, 0x0B, 0x11, 0x75, 0x80, 0x11, 0x55, 0x01, 0x11, 0x75, 0x82, 0x11, 0x55, 0x11, 0x75, 0x11, 0x96, 0x13, 0x11, 0x75, 0x81, 0x11, 0x54, 0x11, 0x75, 0x03, 0x11, 0x55, 0x81, 0x11, 0x75, 0x11, 0x55, 0x01, 0x11, 0x54, 0x80, 0x11, 0x75, 0x01, 0x11, 0x54, 0x83, 0x11, 0x75, 0x11, 0x54, 0x11, 0x75, 0x11, 0x54, 0x04, 0x11, 0x75, 0x82, 0x11, 0x54, 0x11, 0x55, 0x11, 0x75, 0x04, 0x11, 0x55, 0x83, 0x11, 0x75, 0x11, 0x55, 0x11, 0x75, 0x11, 0x54, 0x01, 0x11, 0x75, 0x8C, 0x11, 0x74, 0x11, 0x75, 0x11, 0x95, 0x11, 0xB6, 0x19, 0xD7, 0x19, 0xF8, 0x19, 0xD8, 0x21, 0xF8, 0x19, 0xB7, 0x19, 0xB6, 0x19, 0x54, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, + 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x05, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x10, 0x21, 0x31, 0x19, 0x52, 0x11, 0x33, 0x11, 0x75, 0x09, 0xB7, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x85, 0x09, 0xD9, 0x09, 0xD8, 0x01, 0xB8, 0x09, 0xB7, 0x09, 0xD8, 0x09, 0xB7, 0x02, 0x09, 0xB8, 0x87, 0x09, 0xD9, 0x09, 0xB9, 0x01, 0xB8, 0x09, 0xD9, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xB8, 0x09, 0x98, 0x01, 0x11, 0xB8, 0x90, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xB7, 0x09, 0x97, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xF9, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xB8, 0x09, 0x97, 0x11, 0xB6, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x01, 0x20, 0xEE, 0x02, 0x21, 0x0E, 0x81, 0x21, 0x2F, 0x19, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, + 0x81, 0x20, 0xEF, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x0A, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x89, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x8E, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x34, 0x19, 0xF8, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0xFA, 0x01, 0xBA, 0x03, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x81, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0x01, 0xFA, 0x84, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xF8, 0x09, 0xD7, 0x11, 0xD7, 0x05, 0x11, 0xB6, 0x81, 0x11, 0x96, 0x19, 0xB6, 0x01, 0x11, 0x96, 0x02, 0x11, 0xB6, 0x01, 0x11, 0x96, 0x02, 0x11, 0x95, 0x80, 0x11, 0x96, 0x03, 0x11, 0xB6, 0x02, 0x11, 0x96, 0x80, 0x11, 0x95, 0x01, 0x11, 0x96, 0x80, 0x11, 0xB6, 0x02, 0x11, 0x96, 0x82, 0x11, 0xB6, 0x11, 0x96, 0x19, 0xB6, 0x01, 0x11, 0x96, 0x80, 0x11, 0xB6, 0x01, 0x11, 0x96, 0x02, 0x11, 0xB6, 0x80, 0x19, 0xB6, 0x03, 0x11, 0xB6, 0x86, 0x19, 0xB6, 0x11, 0xB6, 0x19, 0xB6, 0x11, + 0x95, 0x11, 0x54, 0x11, 0x53, 0x19, 0x32, 0x01, 0x19, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x84, 0x19, 0x53, 0x11, 0x33, 0x11, 0x54, 0x11, 0x74, 0x19, 0x96, 0x01, 0x19, 0xD7, 0x01, 0x22, 0x17, 0x83, 0x21, 0xD6, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x12, 0x81, 0x21, 0x31, 0x29, 0x31, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x8A, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, + 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8F, 0x21, 0x31, 0x19, 0x32, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xF7, 0x22, 0x38, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x54, 0x09, 0x12, 0x11, 0x32, 0x19, 0x31, 0x21, 0x51, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x29, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x50, 0x29, 0x50, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x52, 0x19, 0x33, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x86, 0x11, 0xB6, 0x11, 0x75, 0x09, 0x33, 0x11, 0x32, 0x11, 0x11, 0x19, 0x30, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x51, 0x19, 0x53, 0x11, 0x54, 0x11, 0x95, 0x02, 0x19, 0xD7, 0x85, 0x11, 0x96, 0x11, 0x54, 0x09, 0x13, 0x11, 0x12, 0x19, 0x33, 0x19, 0x32, 0x03, 0x19, 0x52, 0x03, 0x19, 0x32, 0x02, 0x19, 0x52, 0x80, 0x19, 0x32, 0x01, 0x11, 0x31, 0x80, 0x11, 0x32, 0x01, 0x11, 0x33, 0x8C, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x19, 0xD7, 0x1A, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, + 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x09, 0x21, 0x30, 0x8A, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x22, 0x18, 0x22, 0x19, 0x19, 0xB7, 0x11, 0x55, 0x19, 0x53, 0x21, 0x32, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x8C, 0x21, 0x30, 0x21, 0x11, 0x19, 0x11, 0x11, 0x33, 0x19, 0xB5, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xB6, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x01, 0x19, 0x32, 0x86, 0x11, 0x33, 0x11, 0xD6, 0x11, 0xF7, 0x1A, 0x18, 0x19, 0xB6, 0x11, 0x12, 0x19, 0x12, 0x01, 0x21, 0x11, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x01, 0x2A, 0x17, 0x82, 0x11, 0x74, 0x11, 0x12, 0x11, 0x32, 0x01, 0x19, 0x51, 0x01, 0x19, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x82, 0x21, 0x32, 0x11, 0x12, 0x19, 0x95, 0x01, + 0x19, 0xF8, 0x84, 0x19, 0xD7, 0x11, 0x54, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x51, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x19, 0xB6, 0x22, 0x18, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x33, 0x19, 0x52, 0x19, 0x31, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x87, 0x21, 0x2F, 0x21, 0x0F, 0x19, 0x10, 0x19, 0x30, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x19, 0x94, 0x01, 0x22, 0x16, 0x82, 0x19, 0x94, 0x09, 0x12, 0x11, 0x12, 0x04, 0x19, 0x32, 0x86, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF6, 0x21, 0xF7, 0x11, 0x75, 0x09, 0x12, 0x11, 0x32, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x19, 0x74, 0x19, 0xB6, 0x09, 0xB7, 0x01, 0x09, 0xD9, 0x80, 0x09, 0xDA, 0x01, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x80, 0x09, 0xFA, 0x01, 0x09, 0xF9, 0x86, 0x11, 0xF9, 0x11, + 0xB7, 0x09, 0x76, 0x11, 0x75, 0x11, 0x54, 0x09, 0x33, 0x09, 0x12, 0x01, 0x11, 0x13, 0x02, 0x11, 0x33, 0x80, 0x19, 0x53, 0x09, 0x11, 0x12, 0x02, 0x11, 0x32, 0x80, 0x11, 0x12, 0x06, 0x11, 0x32, 0x01, 0x11, 0x12, 0x80, 0x11, 0x33, 0x01, 0x11, 0x32, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x05, 0x11, 0x12, 0x02, 0x19, 0x33, 0x01, 0x11, 0x32, 0x80, 0x19, 0x32, 0x01, 0x11, 0x12, 0x81, 0x11, 0x32, 0x11, 0x12, 0x05, 0x11, 0x32, 0x01, 0x11, 0x12, 0x03, 0x11, 0x33, 0x81, 0x19, 0x33, 0x11, 0x13, 0x01, 0x19, 0x33, 0x80, 0x11, 0x13, 0x06, 0x11, 0x12, 0x83, 0x08, 0xF2, 0x09, 0x13, 0x11, 0x54, 0x19, 0x96, 0x01, 0x19, 0xD8, 0x86, 0x21, 0xD8, 0x21, 0xD7, 0x19, 0x96, 0x19, 0x54, 0x11, 0x12, 0x19, 0x12, 0x21, 0x32, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x8C, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x11, 0x32, 0x11, 0x34, 0x09, 0x76, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0xD9, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xB7, 0x01, 0x09, 0x96, 0x02, 0x11, 0x96, 0x02, + 0x09, 0x97, 0x85, 0x11, 0xF9, 0x09, 0xD9, 0x12, 0x19, 0x09, 0xD8, 0x09, 0x97, 0x09, 0x56, 0x01, 0x11, 0x76, 0x86, 0x19, 0xB6, 0x19, 0x96, 0x11, 0x55, 0x09, 0x55, 0x09, 0x76, 0x09, 0x97, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x8A, 0x09, 0xD8, 0x09, 0x97, 0x09, 0x55, 0x11, 0x54, 0x09, 0x12, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x20, 0xEE, 0x02, 0x21, 0x0E, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x0E, 0x84, 0x20, 0xEE, 0x21, 0x0E, 0x19, 0x10, 0x19, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x20, 0xEF, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, + 0x01, 0x29, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x87, 0x21, 0x11, 0x19, 0x11, 0x19, 0x33, 0x09, 0x34, 0x1A, 0x19, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x04, 0x01, 0xDA, 0x06, 0x01, 0xFA, 0x81, 0x01, 0xF9, 0x01, 0xD9, 0x02, 0x12, 0x19, 0x01, 0x1A, 0x18, 0x80, 0x1A, 0x39, 0x01, 0x1A, 0x18, 0x81, 0x22, 0x18, 0x1A, 0x18, 0x03, 0x22, 0x18, 0x85, 0x22, 0x39, 0x1A, 0x18, 0x22, 0x39, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x02, 0x22, 0x38, 0x81, 0x1A, 0x18, 0x22, 0x39, 0x03, 0x22, 0x18, 0x84, 0x1A, 0x18, 0x22, 0x19, 0x1A, 0x18, 0x22, 0x18, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x80, 0x22, 0x19, 0x01, 0x22, 0x18, 0x80, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x04, 0x1A, 0x18, 0x81, 0x19, 0xF8, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x84, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x85, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x81, 0x19, 0x33, + 0x11, 0x54, 0x01, 0x11, 0x74, 0x80, 0x19, 0x95, 0x01, 0x19, 0x94, 0x81, 0x19, 0x74, 0x19, 0x53, 0x01, 0x19, 0x32, 0x01, 0x19, 0x11, 0x86, 0x21, 0x31, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x30, 0x05, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x92, 0x21, 0x31, 0x19, 0x31, 0x19, 0x12, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xD6, 0x09, 0x33, 0x11, 0x12, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x21, + 0x10, 0x21, 0x30, 0x21, 0x51, 0x21, 0x32, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x84, 0x11, 0xB6, 0x11, 0x54, 0x09, 0x32, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x50, 0x80, 0x21, 0x4F, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x06, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x84, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x75, 0x19, 0x96, 0x02, 0x19, 0xD7, 0x85, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x13, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x52, 0x01, 0x19, 0x32, 0x86, 0x19, 0x31, 0x11, 0x11, 0x19, 0x32, 0x11, 0x11, 0x11, 0x31, 0x19, 0x52, 0x19, 0x32, 0x01, 0x11, 0x32, 0x8D, 0x11, 0x33, 0x11, 0x53, 0x11, 0x54, 0x09, 0x54, 0x11, 0x95, 0x19, 0xD7, 0x1A, 0x18, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x09, 0x21, 0x30, 0x88, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x22, 0x18, 0x22, 0x19, 0x19, 0xB7, 0x11, 0x55, 0x19, 0x33, 0x19, 0x11, 0x03, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x19, 0xB5, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xB6, 0x11, 0x12, 0x19, 0x11, + 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x8B, 0x09, 0x33, 0x11, 0xD6, 0x11, 0xF7, 0x19, 0xF7, 0x19, 0xD6, 0x08, 0xF2, 0x19, 0x12, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x88, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x75, 0x01, 0x29, 0xF7, 0x85, 0x19, 0x74, 0x08, 0xF2, 0x19, 0x32, 0x19, 0x52, 0x19, 0x51, 0x19, 0x30, 0x01, 0x21, 0x30, 0x90, 0x21, 0x50, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x21, 0x31, 0x19, 0x12, 0x11, 0x74, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xF7, 0x11, 0x54, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x19, 0xB6, 0x19, 0xD7, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x01, 0x11, 0x53, 0x81, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, + 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x04, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x87, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x30, 0x19, 0x51, 0x11, 0x52, 0x11, 0x32, 0x19, 0x94, 0x01, 0x21, 0xF6, 0x82, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x12, 0x03, 0x19, 0x32, 0x87, 0x19, 0x52, 0x11, 0x32, 0x19, 0x95, 0x21, 0xD6, 0x21, 0xF7, 0x19, 0x95, 0x09, 0x12, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x88, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0x95, 0x19, 0xB7, 0x11, 0xD8, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0xB9, 0x02, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x85, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x75, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x01, 0x11, 0x12, 0x81, 0x19, 0x32, 0x19, 0x12, 0x01, 0x19, 0x32, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x07, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x03, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x07, 0x19, 0x11, 0x80, 0x19, 0x31, 0x0A, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x02, 0x19, 0x31, 0x02, 0x19, 0x11, 0x04, 0x19, 0x12, 0x83, + 0x18, 0xF1, 0x19, 0x11, 0x19, 0x12, 0x18, 0xF1, 0x01, 0x19, 0x11, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x01, 0x11, 0x11, 0x8D, 0x11, 0x12, 0x09, 0x13, 0x11, 0x34, 0x11, 0x55, 0x19, 0xB7, 0x21, 0xD7, 0x19, 0xD7, 0x21, 0xD7, 0x19, 0x96, 0x11, 0x34, 0x11, 0x13, 0x19, 0x12, 0x21, 0x32, 0x21, 0x31, 0x13, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8F, 0x19, 0x31, 0x19, 0x32, 0x11, 0x13, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xB8, 0x09, 0xD8, 0x11, 0xD8, 0x09, 0x96, 0x01, 0x34, 0x09, 0x34, 0x11, 0x74, 0x09, 0x54, 0x09, 0x34, 0x11, 0x55, 0x01, 0x09, 0x55, 0x96, 0x09, 0x56, 0x09, 0x97, 0x11, 0xF8, 0x11, 0xD8, 0x09, 0xB7, 0x09, 0x55, 0x00, 0xF4, 0x08, 0xF3, 0x11, 0x13, 0x11, 0x54, 0x11, 0x13, 0x11, 0x33, 0x09, 0x12, 0x09, 0x13, 0x09, 0x55, 0x09, 0xB7, 0x09, 0xB8, 0x09, 0xD8, 0x11, 0xD8, 0x09, 0x76, 0x09, 0x34, 0x09, 0x12, 0x11, 0x11, 0x01, 0x19, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x0E, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x84, 0x21, 0x0F, 0x21, 0x0E, 0x21, 0x0F, 0x21, 0x0E, 0x20, 0xEE, 0x02, 0x21, + 0x0E, 0x80, 0x19, 0x30, 0x01, 0x19, 0x10, 0x01, 0x19, 0x0F, 0x82, 0x21, 0x0F, 0x19, 0x0F, 0x19, 0x0E, 0x01, 0x21, 0x0E, 0x06, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x08, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x0C, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x88, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x11, 0x55, 0x1A, 0x39, 0x09, 0xF9, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0x01, 0xFB, 0x04, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x81, 0x01, 0xD9, 0x01, 0xD8, 0x01, 0x12, 0x19, 0x80, 0x12, 0x18, 0x01, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x82, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xF7, 0x02, 0x19, 0xF8, 0x82, 0x21, 0xF8, 0x19, 0xF8, 0x21, 0xF8, 0x01, 0x19, 0xF8, 0x03, 0x1A, 0x18, 0x06, 0x19, 0xF8, 0x80, 0x1A, 0x18, 0x07, 0x19, 0xF8, 0x01, 0x19, 0xD8, 0x08, 0x19, 0xF8, 0x03, 0x1A, 0x18, 0x81, 0x19, 0xF8, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x83, 0x19, + 0xD6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x51, 0x05, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x87, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x19, 0x52, 0x19, 0x53, 0x03, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, + 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x31, 0x01, 0x19, 0x12, 0x83, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xF7, 0x01, 0x22, 0x17, 0x84, 0x19, 0xD6, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x19, 0x30, 0x01, 0x21, 0x50, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x54, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x89, 0x11, 0xB6, 0x09, 0x53, 0x09, 0x12, 0x11, 0x11, 0x19, 0x30, 0x21, 0x51, 0x29, 0x70, 0x29, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x4F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8C, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x19, 0xB6, 0x19, 0xD7, 0x21, 0xF8, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x55, 0x11, 0x34, 0x11, 0x33, 0x09, 0x12, 0x11, 0x12, 0x01, 0x11, 0x32, 0x01, 0x19, 0x52, 0x01, 0x19, 0x32, 0x81, 0x11, 0x12, 0x11, 0x32, 0x01, 0x19, 0x53, 0x81, 0x11, 0x32, 0x11, 0x53, 0x01, 0x11, 0x54, 0x82, 0x11, 0x75, + 0x11, 0x95, 0x19, 0xD7, 0x01, 0x22, 0x18, 0x85, 0x19, 0xF7, 0x11, 0x33, 0x10, 0xF2, 0x19, 0x12, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x89, 0x11, 0x12, 0x11, 0x54, 0x22, 0x39, 0x21, 0xF8, 0x19, 0xB7, 0x11, 0x54, 0x19, 0x53, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x89, 0x19, 0x10, 0x19, 0x31, 0x19, 0x53, 0x11, 0xB5, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0x95, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x01, 0x21, 0x31, 0x89, 0x19, 0x32, 0x11, 0x32, 0x09, 0x33, 0x11, 0xD7, 0x11, 0xF8, 0x1A, 0x18, 0x11, 0xB6, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x8B, 0x29, 0x30, 0x29, + 0x2F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x31, 0x01, 0x19, 0x32, 0x8A, 0x11, 0x33, 0x19, 0x95, 0x2A, 0x17, 0x21, 0xF7, 0x11, 0x54, 0x08, 0xF2, 0x11, 0x12, 0x19, 0x52, 0x19, 0x51, 0x21, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x11, 0x54, 0x22, 0x17, 0x19, 0xF8, 0x19, 0xF7, 0x09, 0x74, 0x09, 0x13, 0x11, 0x12, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x29, 0x51, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x01, 0x21, 0xF7, 0x85, 0x19, 0x95, 0x09, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x03, 0x21, 0x10, 0x87, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x19, 0x31, 0x01, 0x11, 0x32, + 0x80, 0x19, 0x94, 0x01, 0x21, 0xF6, 0x84, 0x19, 0x94, 0x09, 0x12, 0x11, 0x12, 0x19, 0x32, 0x19, 0x11, 0x02, 0x19, 0x32, 0x88, 0x11, 0x33, 0x19, 0xB5, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x95, 0x09, 0x12, 0x11, 0x32, 0x19, 0x52, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x87, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x19, 0x95, 0x19, 0xD7, 0x1A, 0x19, 0x11, 0xF9, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x86, 0x11, 0xF9, 0x12, 0x19, 0x11, 0xF8, 0x11, 0x96, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x32, 0x81, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x04, 0x21, 0x31, 0x82, 0x19, 0x10, 0x21, 0x31, 0x21, 0x11, 0x08, 0x21, 0x31, 0x81, 0x19, 0x10, 0x19, 0x31, 0x03, 0x21, 0x31, 0x80, 0x19, 0x10, 0x04, 0x21, 0x31, 0x80, 0x21, 0x10, 0x04, 0x21, 0x31, 0x80, 0x21, 0x11, 0x03, 0x21, 0x31, 0x83, 0x19, 0x31, 0x19, 0x11, 0x21, 0x10, 0x21, 0x11, 0x01, 0x21, 0x10, 0x85, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x19, 0x30, 0x21, 0x51, 0x21, 0x30, 0x01, 0x19, 0x10, 0x83, 0x19, 0x30, 0x19, 0x10, 0x19, 0x31, 0x19, 0x11, 0x02, 0x21, 0x31, 0x80, 0x19, 0x11, 0x03, 0x21, 0x11, 0x82, 0x21, 0x31, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x81, 0x21, 0x51, 0x19, 0x11, 0x01, 0x11, 0x12, 0x8B, 0x11, 0x34, 0x11, 0x55, 0x19, 0x96, 0x21, 0xD7, 0x21, 0xF8, 0x21, 0xD7, 0x19, 0xD7, 0x11, 0x34, 0x08, 0xF2, 0x19, 0x12, 0x21, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, + 0x07, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x89, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x34, 0x11, 0x96, 0x11, 0xD7, 0x09, 0xD8, 0x01, 0x09, 0xB7, 0x87, 0x09, 0x35, 0x00, 0xF3, 0x08, 0xF2, 0x11, 0x12, 0x09, 0x12, 0x11, 0x13, 0x11, 0x33, 0x09, 0x13, 0x01, 0x09, 0x34, 0x89, 0x09, 0x96, 0x11, 0xB7, 0x11, 0xF8, 0x11, 0x96, 0x09, 0x34, 0x08, 0xD3, 0x08, 0xF2, 0x10, 0xF2, 0x19, 0x32, 0x11, 0x32, 0x01, 0x08, 0xF1, 0x8D, 0x08, 0xF2, 0x09, 0x54, 0x11, 0xD7, 0x11, 0xF8, 0x11, 0xD8, 0x09, 0xB7, 0x09, 0x75, 0x09, 0x13, 0x11, 0x32, 0x11, 0x11, 0x19, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x20, 0xEF, 0x01, 0x20, 0xEE, 0x01, 0x21, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x0E, 0x20, 0xEE, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x10, 0x03, 0x19, 0x0F, 0x80, 0x21, 0x0E, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, + 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x86, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x11, 0x19, 0x31, 0x11, 0x12, 0x11, 0x55, 0x1A, 0x19, 0x01, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x02, 0x01, 0xDA, 0x82, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x85, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xB8, 0x09, 0xD7, 0x09, 0xB6, 0x01, 0x11, 0xB6, 0x81, 0x11, 0x96, 0x11, 0xB6, 0x01, 0x11, 0x96, 0x01, 0x19, 0xB6, 0x80, 0x11, 0x95, 0x03, 0x19, 0x96, 0x81, 0x19, 0xB6, 0x19, 0x96, 0x03, 0x19, 0xB6, 0x80, 0x11, 0xB5, 0x05, 0x19, 0xB6, 0x01, 0x11, 0xB6, 0x01, 0x19, 0xB6, 0x80, 0x19, 0x96, 0x03, 0x19, 0xB6, 0x01, 0x19, 0x96, 0x82, 0x19, 0xB6, 0x19, 0x96, 0x19, 0xB6, 0x01, 0x19, 0x96, 0x02, 0x19, 0xB6, 0x80, 0x11, 0x96, 0x04, + 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x84, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x33, 0x11, 0x11, 0x01, 0x19, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x31, 0x89, 0x19, 0x31, 0x19, 0x32, 0x19, 0x31, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x86, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x86, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x08, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, + 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x28, 0xF0, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x0A, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x11, 0x01, 0x19, 0x12, 0x89, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x17, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x32, 0x19, 0x12, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x31, 0x19, 0x32, 0x01, 0x11, 0x33, 0x88, 0x19, 0xD6, 0x1A, 0x17, 0x19, 0xF7, 0x11, 0xB6, 0x11, 0x53, 0x09, 0x12, 0x11, 0x11, 0x19, 0x30, 0x21, 0x51, 0x01, 0x29, 0x50, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x05, 0x29, 0x10, 0x86, 0x29, 0x30, 0x29, 0x10, 0x20, 0xEF, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x8D, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB7, 0x19, 0xD7, 0x21, 0xD7, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x09, 0x33, 0x02, 0x09, 0x12, 0x02, 0x11, 0x32, 0x81, 0x11, 0x12, 0x11, 0x32, 0x02, 0x11, 0x33, 0x80, 0x11, 0x53, 0x01, 0x11, 0x54, 0x88, 0x11, 0x75, 0x11, 0xB6, 0x19, 0xD7, 0x1A, 0x18, 0x22, 0x18, 0x22, 0x17, 0x19, 0x95, 0x11, 0x12, 0x10, 0xF1, 0x01, + 0x19, 0x11, 0x02, 0x21, 0x10, 0x82, 0x29, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x12, 0x09, 0x13, 0x21, 0xD7, 0x22, 0x39, 0x21, 0xF8, 0x19, 0xB6, 0x19, 0x54, 0x19, 0x52, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x10, 0x87, 0x21, 0x31, 0x19, 0x31, 0x11, 0x53, 0x11, 0x95, 0x19, 0xF7, 0x22, 0x18, 0x11, 0x95, 0x11, 0x12, 0x01, 0x19, 0x11, 0x8D, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0xD6, 0x11, 0xF8, 0x1A, 0x18, 0x19, 0xB6, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x11, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x8E, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, + 0x19, 0x75, 0x2A, 0x17, 0x29, 0xF7, 0x19, 0x74, 0x08, 0xF2, 0x11, 0x12, 0x19, 0x32, 0x21, 0x51, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x01, 0x19, 0xF8, 0x87, 0x11, 0xB6, 0x09, 0x34, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x51, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x50, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x88, 0x21, 0x10, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0x75, 0x19, 0x96, 0x01, 0x21, 0xF7, 0x85, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x87, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0x94, 0x01, 0x21, 0xF6, 0x82, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x12, 0x04, 0x19, 0x32, 0x81, 0x11, 0x33, 0x19, 0xB5, 0x01, 0x21, 0xD6, 0x84, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x32, 0x19, + 0x52, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x93, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x19, 0x54, 0x19, 0x95, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x02, 0x19, 0x31, 0x80, 0x19, 0x30, 0x02, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0A, 0x21, 0x30, 0x02, 0x21, 0x10, 0x0D, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x11, 0x12, 0x8D, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xD7, 0x21, 0xF8, 0x21, 0xF7, 0x19, 0x96, 0x11, 0x34, 0x08, 0xF2, 0x19, 0x12, 0x21, 0x52, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x07, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, + 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x89, 0x19, 0x11, 0x11, 0x11, 0x11, 0x13, 0x19, 0x96, 0x11, 0xD7, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x09, 0x34, 0x09, 0x12, 0x01, 0x11, 0x12, 0x01, 0x19, 0x12, 0x80, 0x11, 0x12, 0x01, 0x11, 0x33, 0x87, 0x09, 0x33, 0x11, 0x96, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x14, 0x08, 0xF2, 0x11, 0x12, 0x04, 0x11, 0x11, 0x8A, 0x09, 0x12, 0x09, 0x33, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0xD7, 0x09, 0x54, 0x08, 0xF2, 0x10, 0xF1, 0x11, 0x10, 0x19, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x0E, 0x21, 0x0F, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x20, 0xEE, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x02, 0x19, 0x10, 0x80, 0x19, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x87, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, + 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x87, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x09, 0x34, 0x1A, 0x19, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x86, 0x01, 0xDB, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xFB, 0x03, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x89, 0x01, 0xD9, 0x01, 0xB8, 0x09, 0x76, 0x09, 0x34, 0x09, 0x33, 0x11, 0x33, 0x11, 0x53, 0x11, 0x54, 0x11, 0x53, 0x11, 0x33, 0x02, 0x11, 0x53, 0x82, 0x19, 0x74, 0x19, 0x33, 0x11, 0x33, 0x03, 0x19, 0x33, 0x85, 0x19, 0x53, 0x11, 0x53, 0x11, 0x52, 0x11, 0x53, 0x19, 0x53, 0x11, 0x53, 0x03, 0x11, 0x33, 0x02, 0x11, 0x53, 0x80, 0x11, 0x33, 0x05, 0x11, 0x53, 0x80, 0x11, 0x33, 0x01, 0x11, 0x53, 0x80, 0x11, 0x33, 0x01, 0x11, 0x53, 0x01, 0x11, 0x33, 0x81, 0x11, 0x53, 0x11, 0x33, 0x05, 0x11, 0x53, 0x82, 0x11, 0x54, 0x19, 0x95, 0x19, 0xF6, 0x01, 0x22, 0x17, 0x89, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x82, + 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x21, 0x31, 0x82, 0x19, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x05, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x89, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x05, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x0A, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xF7, + 0x21, 0xF6, 0x19, 0x94, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x1A, 0x17, 0x11, 0xD6, 0x11, 0xB5, 0x11, 0x54, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x29, 0x30, 0x05, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0x96, 0x19, 0xB7, 0x02, 0x19, 0xD7, 0x82, 0x19, 0xB6, 0x11, 0x95, 0x09, 0x54, 0x03, 0x09, 0x33, 0x80, 0x11, 0x53, 0x02, 0x11, 0x33, 0x81, 0x09, 0x33, 0x11, 0x54, 0x01, 0x11, 0x75, 0x8B, 0x11, 0xB6, 0x19, 0xD7, 0x1A, 0x17, 0x1A, 0x18, 0x22, 0x18, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x10, 0xF1, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x8D, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB6, 0x2A, 0x58, 0x22, 0x18, 0x19, 0xB7, 0x11, 0x55, + 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x97, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0xB5, 0x1A, 0x18, 0x22, 0x18, 0x11, 0x95, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x21, 0x52, 0x11, 0x32, 0x09, 0x33, 0x11, 0xD6, 0x11, 0xF8, 0x1A, 0x18, 0x19, 0xD6, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x8B, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x52, 0x19, 0x32, 0x11, 0x13, 0x19, 0x75, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0x74, 0x11, 0x12, 0x01, 0x19, 0x32, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x92, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x09, 0x33, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0xB6, 0x09, 0x34, 0x09, 0x13, 0x19, 0x53, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x21, 0x30, 0x21, 0x2F, + 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x86, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x29, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x52, 0x81, 0x11, 0x53, 0x19, 0x95, 0x01, 0x21, 0xF6, 0x81, 0x19, 0xB5, 0x09, 0x12, 0x01, 0x11, 0x12, 0x81, 0x19, 0x11, 0x19, 0x32, 0x01, 0x19, 0x52, 0x8C, 0x11, 0x53, 0x19, 0xB5, 0x21, 0xD6, 0x22, 0x17, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x86, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x19, 0x74, 0x19, 0x95, 0x11, 0x75, 0x02, 0x11, 0x54, 0x81, 0x11, 0x53, 0x19, 0x52, 0x02, 0x19, 0x31, 0x01, 0x19, 0x10, 0x01, 0x19, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, + 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x05, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x50, 0x07, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x50, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8F, 0x19, 0x32, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x21, 0xF7, 0x19, 0xD7, 0x19, 0x96, 0x11, 0x54, 0x08, 0xF2, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x11, 0x19, 0x11, 0x10, 0xF2, 0x11, 0x54, 0x01, 0x11, 0xB7, 0x94, 0x11, 0xD8, 0x11, 0xB7, 0x09, 0x34, 0x11, 0x12, 0x11, 0x11, 0x19, + 0x11, 0x19, 0x32, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x09, 0x33, 0x19, 0xD6, 0x22, 0x38, 0x19, 0xD7, 0x11, 0x95, 0x09, 0x13, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x31, 0x11, 0x11, 0x11, 0x53, 0x11, 0xB6, 0x11, 0xD8, 0x1A, 0x18, 0x11, 0xD7, 0x09, 0x33, 0x08, 0xF1, 0x11, 0x11, 0x19, 0x30, 0x18, 0xEF, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x0E, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x0E, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x19, 0x74, 0x11, 0x53, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x0B, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, + 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x88, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, 0x54, 0x1A, 0x19, 0x09, 0xF9, 0x01, 0xDA, 0x01, 0xBA, 0x07, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x83, 0x09, 0xF9, 0x01, 0x97, 0x09, 0x75, 0x09, 0x33, 0x01, 0x11, 0x32, 0x01, 0x11, 0x12, 0x01, 0x19, 0x12, 0x01, 0x11, 0x12, 0x80, 0x19, 0x32, 0x03, 0x19, 0x12, 0x02, 0x19, 0x11, 0x06, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x19, 0x12, 0x03, 0x19, 0x32, 0x06, 0x19, 0x31, 0x80, 0x19, 0x11, 0x03, 0x19, 0x32, 0x87, 0x19, 0x31, 0x11, 0x11, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x11, 0x11, 0x19, 0x32, 0x11, 0x12, 0x02, 0x11, 0x32, 0x82, 0x11, 0x33, 0x11, 0x74, 0x19, 0xF6, 0x01, 0x21, 0xF7, 0x84, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x80, 0x19, 0x10, 0x04, + 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x09, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x07, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x0A, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x8D, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x94, 0x11, 0xD6, 0x19, 0xD7, 0x1A, 0x17, 0x21, 0xF6, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x19, 0x10, 0x29, 0x51, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x8F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x17, 0x11, 0xD6, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, + 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x85, 0x28, 0xF0, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x85, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x19, 0x55, 0x11, 0x75, 0x19, 0xB6, 0x01, 0x19, 0xD7, 0x84, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x75, 0x04, 0x09, 0x54, 0x84, 0x09, 0x34, 0x11, 0x55, 0x11, 0x75, 0x11, 0x96, 0x19, 0xD7, 0x01, 0x19, 0xF8, 0x87, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x0A, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x95, 0x2A, 0x58, 0x22, 0x18, 0x19, 0xD7, 0x19, 0x96, 0x11, 0x33, 0x19, 0x33, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x87, 0x19, 0x30, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x32, 0x02, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x87, 0x09, 0x33, 0x11, 0xD6, 0x11, 0xF8, 0x19, 0xF8, 0x19, 0xD6, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x11, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, + 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x85, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x8A, 0x11, 0x33, 0x19, 0x75, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x08, 0xF2, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x09, 0x33, 0x11, 0x95, 0x02, 0x19, 0xF8, 0x85, 0x11, 0x96, 0x09, 0x34, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x82, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x53, 0x01, 0x19, 0x32, 0x02, 0x21, 0x31, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, + 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x52, 0x85, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF6, 0x21, 0xF7, 0x19, 0xB5, 0x09, 0x12, 0x01, 0x11, 0x12, 0x01, 0x19, 0x32, 0x8B, 0x19, 0x52, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x21, 0xF6, 0x22, 0x17, 0x19, 0xD6, 0x09, 0x12, 0x11, 0x12, 0x19, 0x32, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x01, 0x11, 0x32, 0x81, 0x19, 0x33, 0x19, 0x53, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x19, 0x10, 0x82, 0x21, 0x30, 0x19, 0x10, 0x21, 0x10, 0x01, 0x19, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x07, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, + 0x10, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x86, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x19, 0x96, 0x01, 0x19, 0xD7, 0x85, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x34, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x8D, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x10, 0xF1, 0x11, 0x33, 0x19, 0xB7, 0x19, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x33, 0x11, 0x12, 0x04, 0x19, 0x11, 0x97, 0x19, 0x12, 0x11, 0x32, 0x09, 0x33, 0x19, 0xB6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0x95, 0x09, 0x13, 0x10, 0xF2, 0x19, 0x11, 0x19, 0x10, 0x19, 0x30, 0x19, 0x10, 0x19, 0x30, 0x19, 0x10, 0x11, 0x11, 0x11, 0x33, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xD8, 0x11, 0xB7, 0x09, 0x33, 0x08, 0xF1, 0x19, 0x11, 0x01, 0x19, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, + 0x07, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x22, 0x17, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x30, 0x19, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x89, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x1A, 0x19, 0x09, 0xD9, 0x04, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x82, 0x09, 0xF9, 0x09, 0xB7, 0x09, 0x75, 0x01, 0x11, 0x53, 0x01, 0x19, 0x32, 0x82, 0x19, 0x12, 0x19, 0x32, 0x19, 0x11, 0x01, 0x19, 0x31, 0x05, 0x19, 0x11, 0x83, 0x19, 0x31, 0x19, 0x30, 0x19, 0x31, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x21, 0x31, 0x0A, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, + 0x19, 0x31, 0x81, 0x21, 0x31, 0x19, 0x11, 0x0B, 0x19, 0x31, 0x02, 0x19, 0x32, 0x8C, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x19, 0xB5, 0x21, 0xF7, 0x19, 0xF6, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x51, 0x02, 0x21, 0x30, 0x02, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x07, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x07, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x06, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, + 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x02, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x8D, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x53, 0x11, 0x74, 0x11, 0x95, 0x11, 0xD6, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x52, 0x01, 0x11, 0x33, 0x87, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x07, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x32, 0x19, 0x12, 0x19, 0x33, 0x11, 0x34, 0x19, 0x55, 0x11, 0x75, 0x01, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x82, 0x11, 0xD7, 0x11, 0xD6, 0x19, 0xD6, 0x03, 0x11, 0xD6, 0x80, 0x11, 0xB6, 0x02, 0x19, 0xD7, 0x81, 0x19, 0xF7, 0x19, 0xF8, 0x01, 0x19, 0xD7, 0x86, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x19, 0x33, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, + 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x90, 0x21, 0x11, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x2A, 0x38, 0x2A, 0x18, 0x19, 0xB7, 0x19, 0x96, 0x19, 0x54, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x96, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x51, 0x19, 0x51, 0x11, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x22, 0x38, 0x19, 0xF7, 0x11, 0x75, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD7, 0x01, 0x1A, 0x18, 0x86, 0x19, 0xB6, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x11, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x08, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0x95, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0x75, 0x11, 0x12, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x01, + 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x8E, 0x21, 0x30, 0x21, 0x31, 0x19, 0x52, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF8, 0x22, 0x18, 0x11, 0x75, 0x09, 0x33, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x21, 0x71, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x91, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x09, 0x12, 0x19, 0x95, 0x21, 0xF6, 0x22, 0x17, 0x19, 0xB6, 0x09, 0x12, 0x11, 0x12, 0x02, 0x19, 0x32, 0x8B, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x19, 0x94, 0x21, 0xF6, 0x19, 0xF6, 0x19, 0xD6, 0x09, 0x13, 0x11, 0x12, 0x19, 0x32, 0x19, 0x51, 0x21, 0x51, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, + 0x50, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x19, 0x30, 0x01, 0x19, 0x31, 0x80, 0x19, 0x52, 0x01, 0x19, 0x32, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x50, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x20, 0xEF, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8D, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x11, 0x96, 0x19, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x34, 0x19, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x4F, 0x02, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x21, + 0x0F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8A, 0x19, 0x11, 0x18, 0xF1, 0x19, 0x53, 0x19, 0xD7, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xB6, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x19, 0x11, 0x87, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x22, 0x17, 0x19, 0xD7, 0x19, 0x95, 0x09, 0x13, 0x10, 0xF2, 0x01, 0x19, 0x31, 0x02, 0x19, 0x10, 0x83, 0x19, 0x30, 0x19, 0x31, 0x11, 0x53, 0x11, 0xB6, 0x01, 0x19, 0xF8, 0x86, 0x19, 0xD7, 0x09, 0x13, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x19, 0x0F, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x22, 0x38, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x10, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, + 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x09, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x87, 0x19, 0x31, 0x19, 0x32, 0x11, 0x34, 0x1A, 0x18, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x06, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x85, 0x01, 0xF9, 0x09, 0xD9, 0x09, 0xB7, 0x09, 0x75, 0x09, 0x33, 0x11, 0x32, 0x01, 0x19, 0x32, 0x05, 0x19, 0x31, 0x81, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x11, 0x07, 0x21, 0x31, 0x80, 0x19, 0x31, 0x13, 0x21, 0x31, 0x82, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x05, 0x19, 0x31, 0x02, 0x19, 0x32, 0x83, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB5, 0x01, 0x21, 0xF7, 0x88, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x29, 0x50, 0x03, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, + 0x2F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x0A, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0D, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x84, 0x19, 0x31, 0x19, 0x32, 0x19, 0x73, 0x11, 0x74, 0x11, 0xB6, 0x01, 0x19, 0xF7, 0x9A, 0x19, 0xB6, 0x11, 0x54, 0x19, 0x32, 0x19, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x06, 0x29, 0x2F, 0x81, 0x29, 0x30, + 0x29, 0x10, 0x01, 0x29, 0x30, 0x04, 0x29, 0x10, 0x88, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x32, 0x81, 0x19, 0x33, 0x11, 0x54, 0x02, 0x11, 0x75, 0x86, 0x11, 0xB6, 0x11, 0xD6, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF7, 0x1A, 0x17, 0x22, 0x18, 0x01, 0x1A, 0x17, 0x80, 0x19, 0xF7, 0x02, 0x19, 0xD7, 0x89, 0x19, 0xB6, 0x19, 0xB7, 0x11, 0x95, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x19, 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x94, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x29, 0x31, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x22, 0x17, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x96, 0x11, 0x34, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x50, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x51, 0x19, 0x31, 0x11, 0x32, 0x09, 0x33, 0x21, 0xF7, 0x22, 0x38, 0x19, 0xD7, 0x11, 0x75, 0x19, 0x33, 0x19, 0x31, 0x01, 0x19, 0x11, 0x8A, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x33, 0x11, 0xB6, 0x19, 0xF8, 0x1A, 0x18, 0x19, 0xD6, 0x08, 0xF2, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x29, 0x0F, 0x21, + 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x33, 0x19, 0x75, 0x2A, 0x18, 0x21, 0xF7, 0x19, 0x95, 0x08, 0xF2, 0x19, 0x33, 0x21, 0x52, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x92, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x52, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xF7, 0x21, 0xF8, 0x19, 0xF7, 0x11, 0x75, 0x09, 0x33, 0x11, 0x33, 0x19, 0x32, 0x21, 0x52, 0x21, 0x51, 0x19, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x31, 0x19, 0x52, 0x19, 0x32, 0x11, 0x53, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x19, 0x53, 0x11, 0x12, 0x19, 0x32, 0x21, 0x52, 0x01, 0x21, 0x31, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, + 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x8A, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x19, 0x95, 0x21, 0xF6, 0x21, 0xF7, 0x21, 0xD6, 0x09, 0x13, 0x11, 0x12, 0x02, 0x19, 0x32, 0x84, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x19, 0x94, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x84, 0x11, 0x34, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x83, 0x29, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x83, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, + 0x10, 0x80, 0x21, 0x10, 0x07, 0x21, 0x30, 0x90, 0x21, 0x50, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xD7, 0x22, 0x18, 0x22, 0x17, 0x19, 0x96, 0x11, 0x54, 0x11, 0x13, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x87, 0x19, 0x10, 0x19, 0x11, 0x11, 0x33, 0x19, 0xD7, 0x11, 0xD7, 0x11, 0xB7, 0x19, 0xB6, 0x11, 0x33, 0x01, 0x19, 0x11, 0x02, 0x21, 0x10, 0x8B, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x22, 0x17, 0x19, 0xD7, 0x11, 0x95, 0x09, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x10, 0x19, 0x30, 0x19, 0x31, 0x11, 0x53, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF8, 0x19, 0xD7, 0x09, 0x33, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x01, + 0x19, 0x0F, 0x0D, 0x21, 0x0F, 0x01, 0x19, 0xF7, 0x83, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x32, 0x82, 0x19, 0x31, 0x19, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x8E, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x54, 0x1A, 0x18, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x03, 0x01, 0xFA, 0x01, 0x01, 0xF9, 0x85, 0x09, 0xD9, 0x09, 0xB7, 0x11, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x21, 0x51, 0x19, 0x31, 0x05, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x19, + 0x31, 0x81, 0x21, 0x31, 0x21, 0x51, 0x0D, 0x21, 0x31, 0x81, 0x19, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x03, 0x21, 0x31, 0x01, 0x19, 0x31, 0x83, 0x21, 0x31, 0x21, 0x51, 0x19, 0x31, 0x19, 0x52, 0x02, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x11, 0x32, 0x01, 0x11, 0x33, 0x89, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x08, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x07, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x04, 0x29, 0x10, + 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x11, 0xD7, 0x1A, 0x17, 0x19, 0xD7, 0x11, 0x54, 0x19, 0x53, 0x19, 0x31, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x8E, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x32, 0x11, 0x12, 0x11, 0x53, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x19, 0x31, 0x02, 0x21, 0x31, 0x83, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x32, 0x87, 0x19, 0x33, 0x19, 0x53, 0x19, 0x54, 0x19, 0x95, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x17, 0x02, 0x1A, 0x17, 0x83, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0xD6, 0x01, 0x19, 0xB6, 0x85, 0x19, 0xB5, 0x19, 0x95, 0x11, 0x54, 0x11, 0x53, 0x11, 0x32, 0x19, 0x12, + 0x01, 0x19, 0x11, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x90, 0x21, 0x30, 0x29, 0x51, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x19, 0xD6, 0x22, 0x38, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x34, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x93, 0x29, 0x4F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x31, 0x21, 0x51, 0x19, 0x51, 0x11, 0x32, 0x09, 0x12, 0x11, 0x95, 0x22, 0x18, 0x1A, 0x18, 0x19, 0xB6, 0x11, 0x54, 0x19, 0x33, 0x19, 0x31, 0x01, 0x21, 0x11, 0x8B, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x11, 0x33, 0x11, 0xD6, 0x11, 0xF7, 0x19, 0xF8, 0x19, 0xD6, 0x08, 0xF2, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, + 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x19, 0x10, 0x01, 0x19, 0x32, 0x88, 0x11, 0x33, 0x19, 0x95, 0x2A, 0x18, 0x22, 0x17, 0x19, 0x95, 0x08, 0xF2, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x10, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x51, 0x8A, 0x19, 0x32, 0x11, 0x12, 0x11, 0x13, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xD7, 0x22, 0x18, 0x19, 0xD6, 0x09, 0x74, 0x09, 0x33, 0x09, 0x12, 0x01, 0x19, 0x52, 0x82, 0x21, 0x51, 0x21, 0x30, 0x19, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x94, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x84, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x84, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x19, 0x11, 0x81, 0x11, 0x32, 0x19, 0x95, 0x01, 0x21, 0xF7, 0x84, 0x19, 0xB6, 0x09, 0x13, 0x11, 0x13, 0x19, 0x32, 0x19, 0x52, 0x02, 0x19, 0x32, 0x89, 0x11, 0x32, 0x19, + 0x74, 0x21, 0xD6, 0x19, 0xD6, 0x19, 0xF6, 0x11, 0x75, 0x09, 0x12, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x50, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x50, 0x8A, 0x19, 0x30, 0x11, 0x10, 0x11, 0x31, 0x11, 0x73, 0x11, 0x74, 0x19, 0xD6, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x54, 0x01, 0x11, 0x12, 0x82, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x85, 0x29, 0x30, + 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x89, 0x19, 0x11, 0x19, 0x12, 0x19, 0x53, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x19, 0x31, 0x19, 0x10, 0x02, 0x21, 0x10, 0x9A, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB6, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x13, 0x11, 0x12, 0x19, 0x11, 0x19, 0x30, 0x19, 0x10, 0x19, 0x0F, 0x21, 0x30, 0x19, 0x30, 0x11, 0x11, 0x11, 0x32, 0x11, 0xD6, 0x11, 0xF8, 0x1A, 0x19, 0x19, 0xD7, 0x09, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x88, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x74, 0x01, 0x11, 0x33, 0x83, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x09, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, + 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x19, 0x31, 0x11, 0x12, 0x11, 0x54, 0x1A, 0x38, 0x09, 0xD8, 0x01, 0xD9, 0x05, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x83, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x84, 0x09, 0xD8, 0x09, 0xB7, 0x09, 0x75, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x32, 0x07, 0x19, 0x31, 0x82, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x02, 0x19, 0x31, 0x80, 0x19, 0x32, 0x09, 0x19, 0x31, 0x80, 0x19, 0x11, 0x0A, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x19, 0x31, 0x01, 0x19, 0x32, 0x81, 0x19, 0x52, 0x19, 0x32, 0x04, 0x19, 0x52, 0x01, 0x19, 0x32, 0x81, 0x11, 0x32, 0x11, 0x33, 0x01, 0x11, 0x54, 0x84, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x95, 0x01, 0x11, 0x33, 0x80, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x19, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x50, 0x29, + 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x80, 0x21, 0x11, 0x04, 0x21, 0x31, 0x80, 0x19, 0x30, 0x08, 0x21, 0x31, 0x80, 0x19, 0x30, 0x03, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x09, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x07, 0x29, 0x10, 0x89, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x05, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x95, 0x11, 0xF7, 0x1A, 0x18, 0x11, 0xD7, 0x11, 0x75, 0x11, 0x32, 0x19, 0x32, 0x21, 0x11, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, + 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x52, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x30, 0x83, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x52, 0x01, 0x19, 0x53, 0x80, 0x19, 0x74, 0x02, 0x19, 0x95, 0x81, 0x19, 0xB5, 0x11, 0x95, 0x02, 0x19, 0x95, 0x02, 0x19, 0x74, 0x81, 0x19, 0x54, 0x11, 0x33, 0x01, 0x11, 0x32, 0x02, 0x19, 0x11, 0x80, 0x19, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8C, 0x18, 0xF1, 0x10, 0xF2, 0x19, 0x53, 0x19, 0x95, 0x21, 0xF6, 0x22, 0x38, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x54, 0x11, 0x13, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x97, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x54, 0x19, 0xD7, 0x22, 0x38, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x74, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, + 0x21, 0x11, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x11, 0x33, 0x11, 0xB6, 0x11, 0xF7, 0x1A, 0x18, 0x19, 0xD7, 0x08, 0xF2, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x82, 0x11, 0x32, 0x11, 0x13, 0x19, 0x75, 0x01, 0x21, 0xF7, 0x87, 0x19, 0x95, 0x08, 0xF2, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x31, 0x90, 0x19, 0x31, 0x19, 0x32, 0x19, 0x12, 0x11, 0x33, 0x19, 0x75, 0x19, 0x96, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x30, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8E, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x32, 0x11, 0x33, 0x19, 0x94, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xF6, 0x19, 0xD6, 0x19, + 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x12, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x31, 0x21, 0x11, 0x19, 0x32, 0x11, 0x12, 0x19, 0x95, 0x21, 0xF7, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x33, 0x11, 0x13, 0x19, 0x33, 0x19, 0x52, 0x03, 0x19, 0x32, 0x8A, 0x19, 0x73, 0x21, 0xD5, 0x19, 0xD6, 0x19, 0xF6, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x03, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, + 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x0A, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x11, 0x31, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x01, 0x19, 0xF7, 0x86, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x87, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x8E, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x11, 0x19, 0x11, 0x19, 0x33, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xB7, 0x19, 0x95, 0x19, 0x53, 0x19, 0x11, 0x19, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x11, 0x01, 0x19, 0x12, + 0x8A, 0x09, 0x13, 0x19, 0xB6, 0x22, 0x17, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x13, 0x11, 0x12, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x19, 0x30, 0x82, 0x11, 0x31, 0x11, 0x33, 0x11, 0xB6, 0x01, 0x1A, 0x18, 0x84, 0x19, 0xD7, 0x09, 0x13, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x8B, 0x11, 0x96, 0x11, 0xB6, 0x19, 0xD6, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x13, 0x19, 0x32, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x01, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x86, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, + 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x11, 0x19, 0x12, 0x11, 0x34, 0x22, 0x39, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x03, 0x01, 0xD9, 0x83, 0x09, 0xD8, 0x09, 0xB7, 0x09, 0x75, 0x09, 0x33, 0x01, 0x11, 0x33, 0x01, 0x11, 0x32, 0x81, 0x11, 0x11, 0x19, 0x11, 0x03, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x19, 0x32, 0x83, 0x19, 0x11, 0x11, 0x11, 0x19, 0x12, 0x11, 0x12, 0x01, 0x11, 0x11, 0x01, 0x11, 0x32, 0x83, 0x11, 0x12, 0x19, 0x32, 0x11, 0x11, 0x19, 0x12, 0x02, 0x11, 0x11, 0x80, 0x19, 0x11, 0x01, 0x11, 0x11, 0x80, 0x19, 0x11, 0x02, 0x11, 0x11, 0x01, 0x19, 0x11, 0x01, 0x11, 0x11, 0x80, 0x19, 0x11, 0x04, 0x11, 0x11, 0x06, 0x11, 0x32, 0x82, 0x11, 0x33, 0x19, 0x53, 0x11, 0x33, 0x01, 0x11, 0x13, 0x89, 0x09, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x53, 0x11, 0x33, 0x11, 0x32, 0x02, 0x19, 0x31, 0x80, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0A, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, + 0x83, 0x21, 0x11, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, 0x05, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x11, 0x0C, 0x19, 0x31, 0x01, 0x19, 0x11, 0x04, 0x19, 0x31, 0x81, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x84, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x04, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x88, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x11, 0xD7, 0x1A, 0x18, 0x11, 0xD7, 0x11, 0x55, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x86, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x89, 0x21, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x86, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x05, + 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x87, 0x21, 0x30, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x11, 0x32, 0x19, 0x33, 0x04, 0x11, 0x33, 0x85, 0x19, 0x53, 0x19, 0x33, 0x11, 0x12, 0x19, 0x12, 0x11, 0x12, 0x19, 0x12, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x8E, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x50, 0x29, 0x51, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x19, 0x53, 0x19, 0x74, 0x21, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x01, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x50, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x91, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x18, 0x21, 0xD7, 0x11, 0x96, 0x11, 0x75, 0x19, 0x54, 0x19, 0x52, 0x19, 0x31, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x31, 0x82, 0x19, 0x12, 0x11, 0x13, 0x11, 0xB6, 0x01, 0x1A, 0x18, 0x83, 0x19, 0xD6, 0x08, 0xF2, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x8B, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, + 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x90, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x13, 0x19, 0x95, 0x2A, 0x18, 0x22, 0x18, 0x19, 0x96, 0x08, 0xF2, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x90, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x17, 0x22, 0x38, 0x19, 0xF6, 0x11, 0x74, 0x09, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x51, 0x19, 0x30, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x51, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x8C, 0x11, 0x12, 0x11, 0x32, 0x19, 0x94, 0x21, 0xD6, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x12, 0x21, 0x31, 0x21, 0x11, 0x04, 0x21, 0x10, 0x87, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, + 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x8D, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x19, 0x33, 0x19, 0x75, 0x21, 0xF7, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x34, 0x11, 0x13, 0x19, 0x33, 0x19, 0x53, 0x01, 0x19, 0x32, 0x8B, 0x19, 0x31, 0x11, 0x11, 0x11, 0x53, 0x19, 0x94, 0x19, 0xB6, 0x19, 0xF6, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x51, 0x84, 0x21, 0x31, 0x21, 0x30, 0x19, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, + 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x84, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x01, 0x21, 0xF7, 0x85, 0x21, 0xD7, 0x19, 0xB6, 0x11, 0x53, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x01, 0x19, 0x11, 0x87, 0x11, 0x33, 0x21, 0xF7, 0x1A, 0x18, 0x19, 0xB7, 0x19, 0x95, 0x19, 0x53, 0x19, 0x31, 0x19, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x33, 0x19, 0xB6, 0x22, 0x17, 0x19, 0xF7, 0x19, 0x95, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x83, 0x19, 0x30, 0x19, 0x32, 0x11, 0x53, 0x11, 0xB6, 0x01, 0x1A, 0x18, 0x83, 0x19, 0xB7, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x01, 0x19, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x09, 0x54, 0x11, 0x75, 0x11, 0xD6, 0x01, 0x19, 0xF7, 0x87, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x13, + 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x84, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x86, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x85, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x1A, 0x18, 0x09, 0xD9, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x84, 0x09, 0xD9, 0x09, 0x97, 0x09, 0x96, 0x09, 0x75, 0x09, 0x54, 0x01, 0x11, 0x54, 0x08, 0x11, 0x33, 0x80, 0x11, 0x12, 0x02, 0x11, 0x33, 0x80, 0x11, 0x13, 0x05, 0x11, 0x33, 0x80, 0x11, 0x13, 0x03, 0x11, 0x33, 0x07, 0x11, 0x32, 0x80, 0x11, 0x12, 0x04, 0x11, 0x32, 0x81, 0x11, 0x33, 0x09, 0x12, 0x04, + 0x11, 0x33, 0x03, 0x09, 0x33, 0x84, 0x11, 0x33, 0x11, 0x54, 0x19, 0x54, 0x11, 0x54, 0x09, 0x13, 0x01, 0x09, 0x33, 0x81, 0x11, 0x75, 0x19, 0xB6, 0x01, 0x19, 0xF7, 0x85, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x21, 0x51, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x0B, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x05, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x0C, 0x21, 0x30, 0x04, 0x21, 0x10, 0x84, 0x21, 0x11, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x04, 0x11, 0x32, 0x83, 0x11, 0x12, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x01, 0x11, 0x12, 0x12, 0x11, 0x32, 0x80, 0x19, 0x32, 0x03, 0x11, 0x32, 0x81, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x11, 0x84, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x10, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x07, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, + 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x34, 0x11, 0xD6, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8E, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x02, 0x19, 0x11, 0x01, 0x19, 0x12, 0x03, 0x19, 0x32, 0x80, 0x19, 0x12, 0x02, 0x19, 0x11, 0x80, 0x18, 0xF1, 0x01, 0x19, 0x11, 0x87, 0x21, 0x11, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x51, 0x85, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, + 0x95, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x81, 0x19, 0xB5, 0x11, 0x54, 0x01, 0x11, 0x12, 0x82, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x22, 0x17, 0x22, 0x18, 0x19, 0x96, 0x11, 0x54, 0x19, 0x54, 0x19, 0x53, 0x21, 0x52, 0x21, 0x31, 0x02, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x32, 0x11, 0x13, 0x11, 0xB6, 0x11, 0xF7, 0x1A, 0x18, 0x19, 0xD6, 0x08, 0xF2, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x13, 0x19, 0x95, 0x29, 0xF7, 0x21, 0xF7, 0x21, 0xB6, 0x08, 0xF2, 0x19, 0x32, 0x19, 0x52, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, + 0x84, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x01, 0x22, 0x37, 0x84, 0x19, 0xD6, 0x11, 0x94, 0x11, 0x53, 0x11, 0x32, 0x19, 0x52, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x90, 0x21, 0x31, 0x21, 0x51, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x32, 0x19, 0x74, 0x19, 0xB5, 0x21, 0xD6, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x19, 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x80, 0x19, 0x54, 0x01, 0x21, 0xF7, 0x84, 0x19, 0xD7, 0x11, 0x55, 0x09, 0x13, 0x11, 0x13, 0x19, 0x53, 0x01, 0x19, 0x32, 0x80, 0x19, 0x52, 0x01, 0x11, 0x32, 0x89, 0x11, 0x53, 0x19, 0x95, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x21, 0xD6, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x21, 0x52, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x03, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x04, 0x21, + 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x09, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x03, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x0F, 0x85, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x31, 0x89, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x73, 0x19, 0x31, 0x19, 0x10, 0x02, 0x21, + 0x10, 0x8B, 0x19, 0x10, 0x19, 0x11, 0x11, 0x32, 0x09, 0x33, 0x19, 0xB6, 0x22, 0x17, 0x19, 0xF7, 0x19, 0x95, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x89, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0xB6, 0x11, 0xF8, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x13, 0x11, 0x11, 0x01, 0x19, 0x10, 0x82, 0x19, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x09, 0x33, 0x86, 0x11, 0x75, 0x19, 0xB6, 0x1A, 0x17, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x34, 0x01, 0x11, 0x12, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x09, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x88, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8A, 0x21, 0x0F, 0x21, 0x10, 0x21, + 0x30, 0x21, 0x10, 0x21, 0x11, 0x19, 0x12, 0x11, 0x54, 0x22, 0x39, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xDA, 0x03, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x88, 0x01, 0xFA, 0x01, 0xF9, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xB8, 0x09, 0x97, 0x09, 0xB7, 0x11, 0x97, 0x11, 0xB7, 0x02, 0x11, 0x96, 0x05, 0x11, 0x95, 0x80, 0x11, 0x96, 0x02, 0x11, 0x95, 0x01, 0x11, 0x96, 0x80, 0x19, 0x96, 0x08, 0x11, 0x96, 0x86, 0x11, 0xB6, 0x11, 0x96, 0x11, 0xB6, 0x11, 0x96, 0x11, 0x95, 0x11, 0xB6, 0x11, 0xB5, 0x02, 0x11, 0x95, 0x01, 0x11, 0xB5, 0x06, 0x11, 0xB6, 0x80, 0x11, 0xD6, 0x03, 0x11, 0xB6, 0x82, 0x11, 0xB7, 0x11, 0x96, 0x09, 0x54, 0x01, 0x11, 0x54, 0x8C, 0x11, 0x34, 0x11, 0x33, 0x09, 0x13, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x11, 0x80, 0x21, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x11, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, + 0x01, 0x11, 0x53, 0x80, 0x11, 0x74, 0x03, 0x11, 0x54, 0x80, 0x09, 0x54, 0x02, 0x11, 0x74, 0x02, 0x11, 0x54, 0x02, 0x11, 0x74, 0x82, 0x11, 0x54, 0x11, 0x74, 0x11, 0x75, 0x02, 0x11, 0x54, 0x0A, 0x11, 0x74, 0x80, 0x11, 0x94, 0x01, 0x11, 0x74, 0x01, 0x11, 0x53, 0x02, 0x19, 0x32, 0x82, 0x19, 0x31, 0x21, 0x31, 0x21, 0x11, 0x04, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x84, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x06, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x85, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x01, 0x21, 0x31, 0x88, 0x19, 0x31, 0x11, 0x12, 0x11, 0x54, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x32, 0x19, 0x32, 0x01, 0x21, 0x31, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x8A, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x73, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, + 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x82, 0x21, 0x31, 0x21, 0x10, 0x21, 0x11, 0x01, 0x19, 0x11, 0x02, 0x19, 0x31, 0x02, 0x19, 0x11, 0x84, 0x18, 0xF0, 0x21, 0x11, 0x21, 0x10, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x86, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x07, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x51, 0x21, 0x31, 0x19, 0x12, 0x11, 0x12, 0x11, 0x53, 0x19, 0x95, 0x02, 0x21, 0xF7, 0x87, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x11, 0x8A, 0x11, 0x32, 0x19, 0x74, 0x19, 0x95, 0x22, 0x17, 0x2A, 0x38, 0x19, 0xD6, 0x11, 0x34, 0x11, 0x33, 0x19, 0x53, 0x19, 0x52, 0x21, 0x52, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x12, 0x11, 0x33, 0x11, 0xD6, 0x11, 0xF7, 0x1A, 0x38, 0x19, 0xF7, 0x09, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, + 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x32, 0x8A, 0x11, 0x13, 0x19, 0x95, 0x29, 0xF7, 0x21, 0xF7, 0x19, 0x95, 0x08, 0xF2, 0x19, 0x12, 0x19, 0x52, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x31, 0x84, 0x19, 0x32, 0x19, 0x12, 0x11, 0x32, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x85, 0x19, 0xF6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x87, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB5, 0x02, 0x21, 0xF7, 0x85, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x32, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, + 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x83, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x74, 0x02, 0x21, 0xF7, 0x83, 0x19, 0x96, 0x09, 0x13, 0x08, 0xF2, 0x11, 0x12, 0x01, 0x19, 0x32, 0x8D, 0x19, 0x73, 0x19, 0x52, 0x11, 0x32, 0x11, 0x52, 0x11, 0x53, 0x11, 0x95, 0x1A, 0x17, 0x22, 0x38, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x85, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x05, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x06, 0x21, 0x30, 0x02, 0x21, 0x31, 0x85, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, + 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x84, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x86, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x04, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x89, 0x19, 0x11, 0x10, 0xF1, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB5, 0x19, 0x53, 0x19, 0x11, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8C, 0x21, 0x31, 0x21, 0x11, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x11, 0x95, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0xD6, 0x1A, 0x18, 0x1A, 0x19, 0x11, 0xB6, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x8A, 0x21, 0x2F, 0x21, 0x30, 0x11, 0x12, 0x11, 0x32, 0x09, 0x33, 0x11, 0x75, 0x11, 0xB6, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xD7, 0x19, 0x95, 0x01, 0x11, 0x33, 0x01, + 0x19, 0x32, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x2F, 0x05, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x85, 0x21, 0x11, 0x19, 0x12, 0x11, 0x33, 0x1A, 0x39, 0x09, 0xD9, 0x01, 0xD9, 0x05, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x84, 0x01, 0xD9, 0x01, 0xFA, 0x09, 0xFA, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0x11, 0xF9, 0x02, 0x19, 0xF9, 0x81, 0x1A, 0x19, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x81, 0x22, 0x18, 0x19, 0xF7, 0x04, 0x22, 0x18, 0x84, 0x1A, 0x18, 0x22, 0x18, 0x21, 0xF8, 0x22, 0x18, 0x21, 0xF8, 0x02, 0x22, 0x18, 0x81, 0x22, 0x39, 0x1A, 0x18, 0x01, 0x22, 0x38, + 0x84, 0x1A, 0x18, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x39, 0x22, 0x38, 0x01, 0x1A, 0x18, 0x82, 0x1A, 0x38, 0x22, 0x38, 0x1A, 0x18, 0x01, 0x22, 0x38, 0x83, 0x1A, 0x18, 0x1A, 0x38, 0x1A, 0x18, 0x1A, 0x38, 0x05, 0x1A, 0x18, 0x02, 0x11, 0xF8, 0x85, 0x1A, 0x39, 0x1A, 0x18, 0x11, 0x96, 0x09, 0x55, 0x09, 0x54, 0x11, 0x54, 0x01, 0x11, 0x33, 0x83, 0x09, 0x33, 0x09, 0x34, 0x11, 0x75, 0x19, 0xB6, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x53, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x0A, 0x21, 0x30, 0x07, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x30, 0x01, 0x19, 0x10, 0x80, 0x21, 0x30, 0x02, 0x19, 0x30, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x01, 0x11, 0x95, 0x80, 0x11, 0xB5, 0x01, 0x11, 0xB6, 0x80, 0x11, 0x96, 0x03, 0x11, 0xB6, 0x05, 0x11, 0xB7, 0x01, 0x11, 0xD7, 0x01, 0x11, 0xB7, 0x81, 0x11, 0xD7, 0x11, 0xB7, 0x03, 0x11, 0xB6, 0x81, 0x11, 0xB7, 0x11, 0xD7, 0x01, 0x11, 0xB7, 0x03, 0x11, 0xB6, 0x80, 0x11, 0xD6, 0x01, 0x11, 0xB6, 0x01, 0x11, 0x95, 0x80, 0x11, 0x74, 0x01, 0x11, 0x53, 0x01, 0x19, 0x32, 0x81, 0x19, 0x31, 0x21, 0x31, + 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x05, 0x29, 0x10, 0x84, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8B, 0x21, 0x50, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x09, 0x33, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xF7, 0x11, 0x95, 0x11, 0x33, 0x19, 0x32, 0x01, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x8D, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, + 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x31, 0x01, 0x19, 0x10, 0x81, 0x21, 0x10, 0x19, 0x10, 0x05, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x01, 0x21, 0xF7, 0x87, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x90, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x2A, 0x17, 0x2A, 0x38, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x34, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x90, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0xB6, 0x11, 0xF7, 0x1A, 0x18, 0x19, 0xF7, 0x08, 0xF2, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, + 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x01, 0x11, 0x12, 0x86, 0x19, 0x95, 0x21, 0xF7, 0x21, 0xD7, 0x21, 0xB6, 0x10, 0xF2, 0x19, 0x12, 0x21, 0x52, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x31, 0x84, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x83, 0x21, 0xF6, 0x11, 0x74, 0x11, 0x53, 0x19, 0x52, 0x02, 0x19, 0x31, 0x81, 0x21, 0x51, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x10, + 0x19, 0x11, 0x19, 0x12, 0x19, 0x53, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x85, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x09, 0x12, 0x19, 0x33, 0x19, 0x32, 0x01, 0x19, 0x52, 0x8F, 0x11, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0xD6, 0x22, 0x38, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x08, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x05, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x32, 0x83, 0x19, 0x31, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x04, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x8C, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x21, 0x52, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x21, 0xF7, + 0x86, 0x21, 0xF6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x87, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB5, 0x19, 0x52, 0x19, 0x31, 0x03, 0x21, 0x10, 0x92, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x09, 0x33, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xF7, 0x19, 0x95, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0xB6, 0x01, 0x1A, 0x18, 0x81, 0x19, 0xB7, 0x11, 0x33, 0x01, 0x19, 0x11, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x11, 0x11, 0x89, 0x09, 0x12, 0x09, 0x33, 0x09, 0x54, 0x19, 0xB6, 0x19, 0xF7, 0x21, 0xF8, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x13, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x87, 0x29, 0x30, + 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x06, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x85, 0x19, 0x11, 0x19, 0x12, 0x11, 0x54, 0x22, 0x39, 0x11, 0xF9, 0x09, 0xDA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x02, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x09, 0xFA, 0x81, 0x09, 0xD9, 0x11, 0xF9, 0x03, 0x1A, 0x19, 0x01, 0x19, 0xF8, 0x83, 0x19, 0xD7, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0xB7, 0x07, 0x19, 0xD7, 0x83, 0x21, 0xD8, 0x19, 0xB7, 0x21, 0xF8, 0x19, 0xD8, 0x03, 0x19, 0xD7, 0x02, 0x19, 0xF7, 0x80, 0x19, 0xD7, 0x03, 0x19, 0xF7, 0x05, 0x19, 0xD7, 0x80, 0x19, 0xF8, 0x04, 0x19, 0xF7, 0x02, 0x11, 0xD7, 0x81, + 0x19, 0xF7, 0x19, 0xF8, 0x01, 0x11, 0xD7, 0x01, 0x19, 0xF8, 0x89, 0x11, 0xB6, 0x11, 0x95, 0x09, 0x54, 0x09, 0x33, 0x11, 0x33, 0x09, 0x13, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x01, 0x19, 0xF7, 0x85, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x11, 0x05, 0x21, 0x31, 0x80, 0x21, 0x51, 0x02, 0x21, 0x31, 0x80, 0x21, 0x51, 0x0B, 0x21, 0x31, 0x81, 0x21, 0x51, 0x19, 0x31, 0x01, 0x21, 0x51, 0x07, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x0B, 0x21, 0x31, 0x02, 0x19, 0x31, 0x02, 0x21, 0x31, 0x80, 0x21, 0x11, 0x02, 0x21, 0x31, 0x03, 0x19, 0x11, 0x85, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x11, 0xB5, 0x11, 0xD6, 0x01, 0x11, 0xD7, 0x01, 0x09, 0xD7, 0x02, 0x09, 0xD8, 0x01, 0x09, 0xF8, 0x13, 0x09, 0xD8, 0x02, 0x11, 0xF8, 0x81, 0x09, 0xF8, 0x12, 0x18, 0x01, 0x11, 0xF8, 0x01, 0x11, 0xD7, 0x81, 0x11, 0xB6, 0x11, 0x95, 0x01, 0x11, 0x74, 0x81, 0x11, 0x53, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x89, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, + 0x0F, 0x03, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x19, 0xF7, 0x01, 0x1A, 0x18, 0x83, 0x11, 0x95, 0x11, 0x33, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x8A, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x21, 0xF6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x10, 0x87, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x50, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x0A, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x88, 0x21, 0x50, 0x21, 0x51, 0x21, 0x31, 0x19, 0x10, 0x11, 0x11, 0x11, 0x12, 0x11, 0x34, 0x19, 0x96, 0x21, 0xD7, 0x01, 0x21, 0xF7, 0x86, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x32, 0x11, 0x11, 0x19, + 0x31, 0x19, 0x30, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x88, 0x21, 0x10, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x74, 0x2A, 0x17, 0x21, 0xF7, 0x01, 0x19, 0xB6, 0x82, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x11, 0x81, 0x21, 0x51, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x33, 0x11, 0xB6, 0x11, 0xF8, 0x1A, 0x19, 0x19, 0xD7, 0x08, 0xF2, 0x19, 0x32, 0x21, 0x31, 0x04, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x87, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x21, 0xB5, 0x29, 0xF7, 0x21, 0xD7, 0x19, 0x95, 0x01, 0x11, 0x12, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x51, 0x8E, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF6, 0x22, 0x17, 0x21, 0xF6, 0x11, 0x74, 0x11, 0x53, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, + 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8D, 0x21, 0x51, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x19, 0x74, 0x21, 0xF6, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x75, 0x08, 0xF2, 0x11, 0x12, 0x11, 0x32, 0x19, 0x73, 0x19, 0x52, 0x11, 0x11, 0x01, 0x11, 0x32, 0x83, 0x11, 0x53, 0x11, 0x94, 0x19, 0xD6, 0x19, 0xF7, 0x01, 0x21, 0xF7, 0x84, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x21, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, + 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x20, 0xEF, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x84, 0x19, 0x30, 0x19, 0x10, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x01, 0x19, 0x53, 0x81, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x21, 0x52, 0x8C, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB5, 0x21, 0xF6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x88, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x19, + 0xD7, 0x21, 0xF7, 0x19, 0xB5, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x10, 0x8C, 0x21, 0x30, 0x21, 0x31, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xF6, 0x19, 0x94, 0x11, 0x32, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x19, 0x31, 0x19, 0x32, 0x11, 0x54, 0x11, 0xD7, 0x01, 0x1A, 0x18, 0x86, 0x19, 0xB7, 0x11, 0x33, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x8F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x19, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x09, 0x12, 0x09, 0x54, 0x11, 0x96, 0x19, 0xD7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x96, 0x11, 0x34, 0x11, 0x33, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x87, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, + 0x29, 0x30, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x19, 0x11, 0x81, 0x11, 0x34, 0x22, 0x19, 0x01, 0x09, 0xD9, 0x03, 0x01, 0xDA, 0x83, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x82, 0x09, 0xFA, 0x09, 0xD9, 0x09, 0x97, 0x01, 0x11, 0x97, 0x81, 0x11, 0xB7, 0x11, 0x97, 0x01, 0x19, 0x96, 0x80, 0x11, 0x96, 0x01, 0x11, 0x95, 0x81, 0x11, 0x75, 0x19, 0xB5, 0x01, 0x11, 0x95, 0x05, 0x19, 0x95, 0x01, 0x19, 0x96, 0x01, 0x19, 0x76, 0x03, 0x19, 0x96, 0x02, 0x11, 0x95, 0x80, 0x19, 0x95, 0x04, 0x11, 0x95, 0x84, 0x19, 0xB5, 0x19, 0x95, 0x19, 0xB6, 0x11, 0x95, 0x19, 0x95, 0x01, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x81, 0x11, 0x96, 0x11, 0x95, 0x01, 0x11, 0xB6, 0x80, 0x11, 0x96, 0x03, 0x11, 0xB6, 0x80, 0x19, 0xF7, 0x01, 0x1A, 0x18, 0x83, 0x11, 0xB6, 0x11, 0x75, 0x09, 0x54, 0x11, 0x54, 0x02, 0x11, 0x33, 0x82, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x01, 0x19, 0xF7, 0x86, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x54, 0x11, 0x53, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x04, 0x19, 0x11, 0x02, 0x19, 0x31, 0x01, 0x19, 0x32, 0x83, 0x19, 0x52, 0x19, 0x31, 0x19, 0x32, 0x19, 0x31, 0x02, 0x19, 0x32, 0x81, 0x21, 0x32, 0x19, 0x32, 0x01, 0x21, 0x32, 0x80, 0x19, 0x32, 0x01, 0x19, 0x52, 0x01, 0x19, 0x31, 0x81, 0x19, 0x32, 0x19, 0x31, 0x07, + 0x19, 0x32, 0x80, 0x19, 0x52, 0x03, 0x19, 0x31, 0x02, 0x21, 0x31, 0x02, 0x19, 0x31, 0x02, 0x19, 0x32, 0x02, 0x19, 0x31, 0x04, 0x19, 0x11, 0x80, 0x18, 0xF1, 0x04, 0x19, 0x11, 0x01, 0x11, 0x12, 0x85, 0x11, 0x33, 0x09, 0x54, 0x09, 0x96, 0x09, 0xB7, 0x09, 0xD8, 0x09, 0xF8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xF8, 0x01, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x80, 0x09, 0xF9, 0x05, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x84, 0x01, 0xD8, 0x09, 0xD9, 0x01, 0xD8, 0x09, 0xD9, 0x01, 0xD8, 0x03, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x91, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xF8, 0x09, 0xF9, 0x09, 0xF8, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x74, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x19, 0xD6, 0x01, 0x1A, 0x18, 0x81, 0x11, 0x95, 0x11, 0x32, 0x01, 0x19, 0x31, 0x02, 0x21, + 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8D, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x50, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x11, 0x34, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x01, 0x19, 0x30, 0x02, 0x21, 0x30, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, + 0x02, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x82, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x01, 0x2A, 0x17, 0x81, 0x21, 0xD7, 0x19, 0x75, 0x01, 0x11, 0x33, 0x83, 0x19, 0x53, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x21, 0x51, 0x19, 0x31, 0x11, 0x33, 0x11, 0xB6, 0x11, 0xF8, 0x1A, 0x18, 0x19, 0xD7, 0x08, 0xF2, 0x19, 0x12, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x82, 0x19, 0x32, 0x11, 0x12, 0x19, 0x95, 0x01, 0x21, 0xF7, 0x80, 0x19, 0x95, 0x01, 0x11, 0x12, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x51, 0x01, 0x19, 0x31, 0x8D, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x37, 0x19, 0xD6, 0x11, 0x74, + 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x11, 0x02, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xF6, 0x19, 0xB5, 0x11, 0x33, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x85, 0x21, 0x10, 0x19, 0x11, 0x19, 0x12, 0x19, 0x53, 0x19, 0x95, 0x21, 0xD7, 0x01, 0x19, 0xD7, 0x84, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x13, 0x11, 0x12, 0x19, 0x32, 0x01, 0x19, 0x52, 0x85, 0x19, 0x32, 0x19, 0x52, 0x11, 0x53, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x88, 0x21, 0xD7, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x21, 0x32, 0x21, 0x31, 0x21, 0x11, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, + 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x8B, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x19, 0x74, 0x19, 0xB5, 0x01, 0x19, 0xD6, 0x84, 0x19, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x05, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x92, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x21, 0xF6, 0x21, 0xF7, 0x22, 0x37, 0x19, 0xD6, 0x11, 0x94, 0x11, 0x54, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x29, 0x31, 0x29, 0x51, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x31, + 0x01, 0x19, 0x31, 0x88, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x19, 0xD6, 0x19, 0xD7, 0x21, 0xF7, 0x19, 0xB5, 0x19, 0x32, 0x19, 0x11, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x94, 0x19, 0x32, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x19, 0x31, 0x19, 0x32, 0x11, 0x54, 0x11, 0xD7, 0x01, 0x1A, 0x18, 0x88, 0x19, 0xD7, 0x11, 0x33, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x0E, 0x04, 0x21, 0x0F, 0x8F, 0x21, 0x31, 0x19, 0x31, 0x19, 0x51, 0x11, 0x31, 0x11, 0x11, 0x11, 0x32, 0x09, 0x54, 0x19, 0xB6, 0x22, 0x17, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x09, 0x13, 0x11, 0x33, 0x19, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x8A, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x29, 0x0F, + 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x11, 0x19, 0x12, 0x11, 0x33, 0x22, 0x19, 0x11, 0xF9, 0x09, 0xD9, 0x04, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x03, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x83, 0x09, 0xD9, 0x09, 0x97, 0x09, 0x76, 0x09, 0x34, 0x01, 0x11, 0x54, 0x01, 0x19, 0x54, 0x80, 0x19, 0x33, 0x01, 0x19, 0x53, 0x82, 0x11, 0x53, 0x19, 0x73, 0x19, 0x53, 0x02, 0x19, 0x73, 0x80, 0x11, 0x53, 0x02, 0x19, 0x53, 0x01, 0x19, 0x33, 0x85, 0x11, 0x33, 0x19, 0x33, 0x19, 0x53, 0x19, 0x33, 0x11, 0x33, 0x19, 0x53, 0x02, 0x11, 0x53, 0x02, 0x19, 0x53, 0x01, 0x11, 0x53, 0x80, 0x11, 0x33, 0x02, 0x11, 0x53, 0x80, 0x11, 0x33, 0x04, 0x11, 0x53, 0x80, 0x19, 0x73, 0x03, 0x11, 0x53, 0x01, 0x19, 0x74, 0x02, 0x11, 0x74, 0x8D, 0x11, 0x95, 0x22, 0x58, 0x1A, 0x38, 0x11, 0xB6, 0x11, 0x96, 0x11, 0x75, 0x11, 0x54, 0x11, 0x74, 0x11, 0x33, 0x09, 0x33, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB5, 0x01, 0x19, 0xF7, 0x85, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x55, 0x11, 0x54, 0x11, 0x33, 0x11, 0x13, 0x01, 0x11, 0x12, 0x02, 0x11, 0x11, 0x80, 0x10, 0xF1, 0x02, 0x11, 0x12, 0x81, 0x11, 0x33, 0x11, 0x32, 0x01, 0x11, 0x12, 0x01, 0x19, 0x32, 0x81, 0x11, 0x12, 0x19, + 0x32, 0x03, 0x19, 0x12, 0x04, 0x11, 0x12, 0x81, 0x19, 0x32, 0x11, 0x32, 0x02, 0x11, 0x12, 0x83, 0x19, 0x32, 0x11, 0x32, 0x19, 0x32, 0x11, 0x32, 0x01, 0x19, 0x32, 0x80, 0x11, 0x11, 0x01, 0x19, 0x32, 0x80, 0x19, 0x12, 0x01, 0x19, 0x32, 0x81, 0x11, 0x12, 0x19, 0x12, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x03, 0x11, 0x12, 0x84, 0x11, 0x11, 0x11, 0x12, 0x19, 0x12, 0x11, 0x12, 0x10, 0xF2, 0x05, 0x11, 0x12, 0x84, 0x11, 0x13, 0x11, 0x33, 0x11, 0x54, 0x09, 0x75, 0x09, 0x96, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x81, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xFA, 0x09, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x06, 0x01, 0xD9, 0x01, 0x01, 0xF9, 0x03, 0x01, 0xD9, 0x81, 0x01, 0xF9, 0x09, 0xF9, 0x01, 0x09, 0xD8, 0x87, 0x09, 0xD7, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x54, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x02, 0x21, 0x30, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x86, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, + 0x30, 0x87, 0x19, 0x11, 0x11, 0x11, 0x11, 0x33, 0x19, 0xB6, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0xB6, 0x11, 0x33, 0x01, 0x19, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x19, 0x31, 0x19, 0x52, 0x01, 0x11, 0x33, 0x87, 0x19, 0xF6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x50, 0x21, 0x31, 0x19, 0x51, 0x19, 0x32, 0x11, 0x12, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD7, 0x21, 0xF8, 0x21, 0xF7, 0x21, 0xD6, 0x11, 0x54, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x01, 0x19, 0x30, 0x80, 0x21, + 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x92, 0x21, 0x10, 0x21, 0x11, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x11, 0x13, 0x11, 0x54, 0x11, 0x75, 0x21, 0xD7, 0x2A, 0x38, 0x21, 0xF7, 0x11, 0x74, 0x11, 0x33, 0x09, 0x12, 0x11, 0x32, 0x21, 0x72, 0x21, 0x31, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x11, 0x32, 0x11, 0xB6, 0x19, 0xF8, 0x1A, 0x18, 0x19, 0xD7, 0x10, 0xF2, 0x19, 0x12, 0x01, 0x21, 0x31, 0x03, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x19, 0x31, 0x82, 0x19, 0x32, 0x11, 0x12, 0x21, 0xB5, 0x01, 0x21, 0xF7, 0x85, 0x19, 0xB6, 0x11, 0x13, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x51, 0x84, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, + 0x19, 0xB6, 0x01, 0x22, 0x17, 0x84, 0x11, 0x95, 0x11, 0x75, 0x11, 0x54, 0x19, 0x33, 0x19, 0x32, 0x01, 0x19, 0x11, 0x81, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x8F, 0x21, 0x51, 0x19, 0x51, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x74, 0x19, 0xD5, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x21, 0x32, 0x21, 0x31, 0x21, 0x11, 0x07, 0x21, 0x10, 0x04, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x54, 0x19, 0x95, 0x19, 0xB6, 0x21, 0xD7, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x33, 0x01, 0x11, 0x12, 0x80, 0x19, 0x32, 0x02, 0x19, 0x52, 0x84, 0x11, 0x52, 0x11, 0x12, 0x09, 0x32, 0x11, 0x74, 0x19, 0xB6, 0x01, 0x22, 0x18, 0x86, 0x19, 0xB6, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x86, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, + 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x85, 0x19, 0x52, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xF7, 0x03, 0x1A, 0x18, 0x87, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x87, 0x21, 0x51, 0x21, 0x52, 0x19, 0x11, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x21, 0xF7, 0x22, 0x17, 0x01, 0x19, 0xD6, 0x84, 0x11, 0x74, 0x11, 0x53, 0x19, 0x53, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x50, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, + 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x85, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x83, 0x19, 0xD6, 0x19, 0x94, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x8B, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x74, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x10, 0x8D, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x34, 0x11, 0xB7, 0x1A, 0x18, 0x1A, 0x19, 0x19, 0xB7, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x51, 0x01, 0x19, 0x31, 0x01, 0x11, 0x11, 0x8A, 0x09, 0x32, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x17, 0x22, 0x18, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x34, 0x11, 0x13, 0x19, 0x32, 0x21, 0x32, 0x01, 0x21, 0x31, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, + 0x0F, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x05, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x85, 0x21, 0x11, 0x18, 0xF2, 0x11, 0x33, 0x22, 0x19, 0x11, 0xD9, 0x09, 0xD9, 0x03, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x89, 0x02, 0x1B, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xF9, 0x09, 0xD8, 0x09, 0x97, 0x09, 0x55, 0x11, 0x33, 0x11, 0x13, 0x03, 0x19, 0x12, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x06, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x19, 0x11, 0x03, 0x19, 0x12, 0x05, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x03, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x05, 0x19, 0x32, 0x05, 0x11, 0x32, 0x85, 0x09, 0x32, 0x09, 0x33, 0x09, 0x95, 0x1A, 0x38, 0x19, 0xF7, 0x11, 0xB6, 0x01, 0x11, 0x95, 0x80, 0x11, 0x54, 0x01, 0x11, 0x33, 0x84, 0x09, 0x13, 0x11, 0x33, 0x11, 0x34, 0x11, 0x75, 0x19, 0xB6, 0x01, 0x19, 0xF7, 0x87, 0x11, 0xB6, 0x11, 0x96, 0x09, 0x55, 0x11, 0x55, 0x11, 0x34, 0x11, 0x33, 0x11, 0x13, 0x11, 0x33, 0x02, 0x11, 0x12, 0x83, 0x11, 0x13, 0x09, 0x13, 0x11, 0x33, 0x09, 0x13, 0x02, 0x11, 0x33, 0x80, 0x11, 0x32, 0x03, 0x11, 0x33, 0x02, 0x11, 0x13, 0x02, 0x11, 0x12, 0x01, 0x11, 0x13, 0x81, + 0x11, 0x33, 0x11, 0x32, 0x03, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x11, 0x33, 0x05, 0x11, 0x32, 0x81, 0x11, 0x12, 0x11, 0x33, 0x01, 0x11, 0x32, 0x03, 0x11, 0x33, 0x80, 0x11, 0x13, 0x05, 0x11, 0x33, 0x80, 0x11, 0x13, 0x02, 0x11, 0x33, 0x02, 0x11, 0x53, 0x01, 0x11, 0x54, 0x01, 0x11, 0x75, 0x83, 0x09, 0x96, 0x09, 0xB7, 0x09, 0xB8, 0x09, 0xD9, 0x09, 0x01, 0xD9, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xB9, 0x03, 0x01, 0xDA, 0x81, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x83, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0x01, 0xF9, 0x8A, 0x01, 0xD9, 0x01, 0xF9, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xD7, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x0A, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x33, 0x11, 0xB6, 0x1A, 0x18, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x33, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8D, 0x19, + 0x31, 0x19, 0x52, 0x11, 0x33, 0x09, 0x33, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x94, 0x21, 0x31, 0x21, 0x51, 0x11, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF8, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x19, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x90, 0x21, 0x10, 0x21, 0x31, 0x21, 0x32, 0x19, 0x12, 0x11, 0x13, 0x11, 0x34, 0x19, 0x96, 0x21, 0xD7, 0x22, 0x18, 0x21, 0xF7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x11, 0x11, + 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x19, 0x31, 0x11, 0x32, 0x11, 0xB6, 0x19, 0xF8, 0x1A, 0x19, 0x19, 0xD7, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x11, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x89, 0x19, 0x32, 0x11, 0x12, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x13, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8A, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x18, 0x19, 0xB6, 0x19, 0x75, 0x19, 0x54, 0x11, 0x12, 0x19, 0x12, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x50, 0x21, 0x0F, 0x21, 0x30, + 0x21, 0x51, 0x19, 0x31, 0x01, 0x11, 0x11, 0x88, 0x11, 0x32, 0x11, 0x94, 0x11, 0xB5, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x19, 0x32, 0x01, 0x21, 0x11, 0x06, 0x21, 0x10, 0x05, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x8F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x19, 0x75, 0x11, 0x75, 0x19, 0xD7, 0x21, 0xD7, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x19, 0x52, 0x01, 0x11, 0x31, 0x8C, 0x11, 0x32, 0x09, 0x33, 0x11, 0x95, 0x11, 0xB6, 0x19, 0xF7, 0x1A, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x12, 0x21, 0x31, 0x21, 0x11, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, + 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x31, 0x19, 0x53, 0x19, 0x94, 0x11, 0x95, 0x01, 0x1A, 0x17, 0x8E, 0x22, 0x38, 0x1A, 0x38, 0x11, 0xF8, 0x1A, 0x39, 0x1A, 0x59, 0x1A, 0x39, 0x1A, 0x18, 0x19, 0xD7, 0x11, 0x55, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8D, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x01, 0x21, 0x11, 0x81, 0x21, 0x10, 0x29, 0x30, 0x05, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x19, 0x11, 0x83, 0x11, 0x53, 0x11, 0x54, 0x19, 0x95, 0x19, 0xD7, 0x01, 0x21, 0xF7, 0x83, 0x19, 0x95, 0x19, 0x74, 0x19, 0x32, 0x19, 0x31, 0x03, 0x21, 0x31, 0x8A, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, + 0x95, 0x19, 0xD6, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x74, 0x19, 0x52, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x33, 0x11, 0x34, 0x19, 0xB7, 0x01, 0x1A, 0x18, 0x83, 0x19, 0xD7, 0x11, 0x33, 0x19, 0x12, 0x21, 0x11, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x8D, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x18, 0x19, 0xF7, 0x19, 0x95, 0x11, 0x34, 0x11, 0x13, 0x01, 0x19, 0x32, 0x81, 0x19, 0x31, 0x21, 0x31, 0x07, 0x21, 0x30, 0x07, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x02, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x85, 0x18, 0xF1, 0x10, 0xF1, 0x11, 0x34, 0x22, 0x19, 0x09, 0xD9, + 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x02, 0x1A, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xF9, 0x84, 0x09, 0xB8, 0x09, 0x76, 0x11, 0x54, 0x11, 0x13, 0x19, 0x12, 0x05, 0x19, 0x11, 0x04, 0x19, 0x10, 0x81, 0x19, 0x30, 0x19, 0x10, 0x02, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x19, 0x11, 0x85, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x09, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x11, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x02, 0x19, 0x32, 0x86, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x12, 0x09, 0x33, 0x09, 0x54, 0x19, 0xF7, 0x01, 0x22, 0x38, 0x82, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x74, 0x01, 0x11, 0x33, 0x8D, 0x09, 0x13, 0x09, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD7, 0x19, 0xF8, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0xD7, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0xB6, 0x19, 0xB5, 0x01, 0x21, 0xD6, 0x01, 0x19, 0xB6, 0x80, 0x19, 0xB5, 0x01, 0x19, 0xB6, 0x04, 0x19, 0xB5, 0x06, 0x21, 0xB5, 0x03, 0x21, 0x95, 0x80, 0x19, 0x95, 0x02, 0x21, 0xB5, 0x80, 0x21, 0x95, 0x01, 0x19, 0xB5, 0x81, 0x21, 0xB5, 0x19, 0xB5, 0x01, 0x21, 0xB5, 0x80, 0x21, 0xB4, 0x02, 0x19, 0x94, 0x02, 0x19, 0xB5, 0x82, 0x19, 0x95, 0x19, 0xB5, 0x19, 0x95, 0x01, 0x19, 0xB5, 0x84, 0x21, 0xB5, 0x19, 0xB5, 0x21, 0xB5, 0x19, 0xB5, 0x19, 0x95, 0x01, 0x21, 0xB5, 0x81, 0x21, 0x95, 0x21, 0xB5, 0x03, 0x19, 0xB5, 0x81, 0x19, + 0xB6, 0x19, 0x96, 0x01, 0x19, 0xB6, 0x83, 0x11, 0xB6, 0x09, 0xB7, 0x09, 0xB8, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x09, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x89, 0x01, 0xF9, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xB7, 0x09, 0x96, 0x09, 0x54, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x31, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x06, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x88, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x87, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0xB6, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x32, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x93, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x10, 0x19, 0x32, 0x11, 0x32, 0x11, 0x13, 0x09, 0x33, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x32, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, + 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x89, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x51, 0x19, 0x10, 0x10, 0xF1, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x01, 0x11, 0x12, 0x81, 0x19, 0x11, 0x19, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x29, 0x51, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x01, 0x11, 0x33, 0x89, 0x11, 0x75, 0x21, 0xD7, 0x2A, 0x38, 0x21, 0xF7, 0x19, 0x75, 0x11, 0x34, 0x11, 0x33, 0x11, 0x32, 0x19, 0x52, 0x21, 0x52, 0x01, 0x19, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x89, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0xB6, 0x1A, 0x18, 0x1A, + 0x19, 0x19, 0xD7, 0x08, 0xF2, 0x19, 0x11, 0x21, 0x31, 0x04, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x07, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x19, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x32, 0x21, 0xB5, 0x01, 0x21, 0xF7, 0x84, 0x19, 0x95, 0x11, 0x13, 0x11, 0x12, 0x21, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x11, 0x54, 0x19, 0xB6, 0x01, 0x22, 0x18, 0x84, 0x19, 0x96, 0x19, 0x75, 0x19, 0x54, 0x19, 0x12, 0x18, 0xF1, 0x01, 0x19, 0x11, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x30, 0x29, 0x50, 0x18, 0xEF, 0x19, 0x0F, 0x21, 0x51, 0x21, 0x71, 0x19, 0x11, 0x19, 0x31, 0x01, 0x11, 0x32, 0x81, 0x11, 0x53, 0x19, 0x95, 0x01, 0x22, 0x17, 0x86, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x21, 0x11, 0x21, 0x30, 0x04, 0x21, 0x10, 0x86, 0x29, 0x10, 0x21, 0x10, + 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x34, 0x19, 0x96, 0x01, 0x21, 0xD7, 0x96, 0x19, 0xB6, 0x19, 0x75, 0x19, 0x74, 0x11, 0x32, 0x10, 0xF1, 0x19, 0x32, 0x19, 0x52, 0x19, 0x51, 0x19, 0x31, 0x11, 0x52, 0x11, 0x32, 0x09, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x1A, 0x17, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x18, 0xF1, 0x21, 0x31, 0x21, 0x11, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x07, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x04, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x92, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0xD6, 0x1A, 0x17, 0x22, 0x38, 0x1A, 0x18, 0x11, 0xD7, 0x09, 0xB7, 0x09, 0x96, 0x09, 0xB7, 0x11, 0xF8, 0x1A, 0x39, 0x1A, 0x18, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x01, 0x19, 0x31, 0x02, + 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x30, 0x93, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x54, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x0E, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x51, 0x8B, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x19, 0xD7, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x33, 0x11, 0x31, 0x19, 0x31, 0x01, 0x21, 0x51, 0x8C, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x13, 0x09, 0x13, 0x09, 0x34, 0x19, 0xD7, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x73, 0x19, 0x52, 0x19, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x8A, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0xB6, 0x19, 0xF8, 0x22, 0x18, 0x19, 0xB6, 0x11, 0x33, 0x19, 0x12, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x05, 0x21, 0x0F, + 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x81, 0x21, 0xF7, 0x19, 0x96, 0x01, 0x11, 0x33, 0x81, 0x19, 0x52, 0x19, 0x32, 0x01, 0x21, 0x31, 0x06, 0x21, 0x30, 0x05, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x04, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x85, 0x18, 0xF1, 0x18, 0xF2, 0x11, 0x33, 0x19, 0xF8, 0x11, 0xF9, 0x01, 0xD9, 0x07, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x80, 0x02, 0x1A, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xF9, 0x85, 0x09, 0xD8, 0x09, 0x96, 0x11, 0x54, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x03, 0x21, 0x11, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x19, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x10, 0x03, 0x21, 0x31, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x19, + 0x31, 0x0B, 0x21, 0x31, 0x80, 0x19, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x10, 0x01, 0x19, 0x31, 0x83, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x03, 0x19, 0x31, 0x01, 0x11, 0x32, 0x88, 0x09, 0x12, 0x09, 0x74, 0x22, 0x38, 0x22, 0x17, 0x19, 0xF7, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x02, 0x09, 0x33, 0x82, 0x11, 0x54, 0x11, 0x96, 0x19, 0xF7, 0x01, 0x1A, 0x18, 0x81, 0x22, 0x38, 0x22, 0x18, 0x01, 0x22, 0x17, 0x81, 0x21, 0xF7, 0x2A, 0x17, 0x04, 0x2A, 0x38, 0x80, 0x22, 0x37, 0x04, 0x2A, 0x37, 0x83, 0x2A, 0x17, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x38, 0x0C, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x01, 0x2A, 0x17, 0x82, 0x2A, 0x16, 0x2A, 0x17, 0x29, 0xF6, 0x02, 0x2A, 0x16, 0x01, 0x2A, 0x17, 0x81, 0x21, 0xF7, 0x2A, 0x37, 0x04, 0x22, 0x17, 0x81, 0x2A, 0x17, 0x22, 0x17, 0x02, 0x2A, 0x17, 0x84, 0x21, 0xF7, 0x29, 0xF7, 0x21, 0xF7, 0x2A, 0x17, 0x21, 0xF6, 0x02, 0x21, 0xF7, 0x81, 0x19, 0xD6, 0x21, 0xF7, 0x01, 0x19, 0xD7, 0x80, 0x11, 0xB7, 0x01, 0x09, 0xD8, 0x81, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x06, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x82, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x01, 0x09, 0xD8, 0x85, 0x09, 0xD7, 0x11, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, + 0x31, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x89, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x87, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x83, 0x19, 0x96, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x90, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x09, 0x33, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xD5, 0x11, 0x74, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, + 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x10, 0x8B, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x17, 0x22, 0x18, 0x19, 0xB6, 0x11, 0x54, 0x01, 0x11, 0x12, 0x82, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x01, 0x11, 0x33, 0x8C, 0x19, 0x95, 0x21, 0xF7, 0x21, 0xF8, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x21, 0x52, 0x21, 0x51, 0x19, 0x30, 0x19, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x13, 0x19, 0xD6, 0x11, 0xF8, 0x1A, 0x18, 0x19, 0xD7, 0x08, 0xF2, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, + 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x19, 0x31, 0x88, 0x19, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0xB6, 0x08, 0xF2, 0x19, 0x12, 0x21, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x01, 0x11, 0x33, 0x86, 0x11, 0x54, 0x19, 0xB6, 0x2A, 0x38, 0x21, 0xF8, 0x19, 0x96, 0x19, 0x95, 0x11, 0x33, 0x01, 0x19, 0x12, 0x02, 0x21, 0x31, 0x88, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x50, 0x20, 0xEF, 0x18, 0xEF, 0x01, 0x21, 0x51, 0x01, 0x19, 0x31, 0x01, 0x11, 0x31, 0x82, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x85, 0x19, 0xB5, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x19, 0x32, 0x82, 0x11, 0x33, 0x19, 0x74, 0x19, 0xB6, 0x01, + 0x21, 0xD6, 0x85, 0x21, 0xB6, 0x19, 0x95, 0x19, 0x54, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x32, 0x02, 0x19, 0x52, 0x81, 0x11, 0x52, 0x09, 0x12, 0x01, 0x11, 0x54, 0x87, 0x11, 0xD6, 0x22, 0x38, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x86, 0x11, 0x32, 0x11, 0x53, 0x11, 0xB6, 0x19, 0xF7, 0x11, 0xF8, 0x11, 0xB7, 0x09, 0x96, 0x01, 0x09, 0x76, 0x80, 0x09, 0x96, 0x01, 0x09, 0x76, 0x88, 0x09, 0x97, 0x11, 0xF8, 0x19, 0xD8, 0x19, 0x96, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x19, 0x10, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x31, 0x29, 0x52, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x02, 0x21, 0xF7, 0x83, + 0x19, 0xD6, 0x11, 0x75, 0x11, 0x54, 0x11, 0x12, 0x01, 0x19, 0x32, 0x02, 0x21, 0x11, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x8A, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x12, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x8B, 0x21, 0x51, 0x19, 0x31, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x53, 0x19, 0x32, 0x02, 0x19, 0x31, 0x82, 0x21, 0x51, 0x19, 0x31, 0x19, 0x12, 0x01, 0x11, 0x33, 0x87, 0x11, 0x54, 0x11, 0x96, 0x21, 0xD7, 0x21, 0xD6, 0x21, 0xB5, 0x19, 0x73, 0x19, 0x52, 0x21, 0x31, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x11, 0x13, 0x11, 0x54, 0x11, 0xB6, 0x01, 0x22, 0x18, 0x86, 0x19, 0xB6, 0x11, 0x33, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x50, 0x21, 0x30, 0x19, 0x30, 0x19, 0x10, 0x01, 0x11, 0x11, 0x8A, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x95, 0x09, 0x33, 0x11, 0x33, 0x19, 0x53, 0x19, 0x32, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, + 0x04, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x86, 0x19, 0x11, 0x19, 0x12, 0x19, 0x74, 0x1A, 0x18, 0x09, 0xB8, 0x09, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x04, 0x01, 0xFA, 0x80, 0x02, 0x1A, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x85, 0x12, 0x19, 0x1A, 0x18, 0x09, 0x34, 0x11, 0x33, 0x19, 0x12, 0x21, 0x32, 0x01, 0x21, 0x11, 0x02, 0x21, 0x31, 0x05, 0x21, 0x30, 0x01, 0x19, 0x30, 0x80, 0x19, 0x31, 0x02, 0x21, 0x31, 0x80, 0x21, 0x51, 0x07, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x30, 0x03, 0x21, 0x31, 0x84, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x21, 0x51, 0x03, 0x21, 0x31, 0x81, 0x19, 0x10, 0x19, 0x31, 0x01, 0x19, 0x11, 0x04, 0x19, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x32, 0x09, 0x12, 0x09, 0x33, 0x09, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0xB6, 0x01, 0x11, 0x54, 0x02, 0x09, 0x33, 0x82, 0x11, 0x54, 0x11, 0x74, 0x19, + 0xB5, 0x02, 0x19, 0xD6, 0x80, 0x21, 0xF7, 0x01, 0x21, 0xF6, 0x80, 0x21, 0xF7, 0x04, 0x21, 0xD6, 0x02, 0x21, 0xF6, 0x80, 0x21, 0xD6, 0x02, 0x21, 0xF6, 0x83, 0x21, 0xD6, 0x21, 0xF6, 0x21, 0xF7, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x01, 0x21, 0xD6, 0x80, 0x21, 0xF7, 0x03, 0x21, 0xD6, 0x80, 0x21, 0xF6, 0x01, 0x21, 0xD6, 0x06, 0x21, 0xF6, 0x03, 0x21, 0xD6, 0x03, 0x21, 0xF6, 0x80, 0x21, 0xF7, 0x01, 0x19, 0xD6, 0x01, 0x21, 0xD6, 0x81, 0x19, 0xD6, 0x21, 0xF7, 0x03, 0x21, 0xD6, 0x84, 0x21, 0xD7, 0x21, 0xD6, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x01, 0x19, 0xD7, 0x01, 0x11, 0xD8, 0x82, 0x09, 0xD9, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x04, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFB, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x82, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xF9, 0x89, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xF8, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x11, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, + 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8D, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0xF6, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x96, 0x11, 0x53, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x29, 0x50, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x19, 0xF6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xD5, 0x11, 0x74, 0x11, 0x11, 0x19, 0x11, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x51, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x20, 0xEF, 0x03, 0x29, 0x10, 0x05, 0x21, 0x10, 0x86, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, + 0x21, 0x30, 0x81, 0x21, 0x51, 0x19, 0x52, 0x01, 0x11, 0x12, 0x81, 0x11, 0x33, 0x19, 0xB5, 0x01, 0x22, 0x17, 0x86, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x54, 0x11, 0x32, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8E, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x2A, 0x38, 0x21, 0xF7, 0x19, 0xB7, 0x19, 0x96, 0x11, 0x54, 0x11, 0x13, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x51, 0x80, 0x21, 0x50, 0x02, 0x21, 0x0F, 0x8E, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x50, 0x21, 0x51, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x18, 0x1A, 0x19, 0x19, 0xB7, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x8E, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x21, 0xB5, + 0x29, 0xF7, 0x21, 0xF7, 0x19, 0xB5, 0x08, 0xF2, 0x10, 0xF2, 0x19, 0x32, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x21, 0x10, 0x20, 0xEF, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x21, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x85, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x50, 0x01, 0x21, 0x51, 0x82, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x01, 0x11, 0x32, 0x85, 0x09, 0x54, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x05, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x51, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x82, 0x19, 0x53, 0x19, 0x95, 0x19, 0xB5, 0x02, 0x21, 0xD6, 0x84, 0x19, 0x95, 0x19, 0x74, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x01, 0x19, 0x52, 0x8C, 0x19, 0x73, 0x11, 0x53, 0x09, 0x12, 0x09, 0x33, 0x09, + 0x54, 0x19, 0xD6, 0x22, 0x38, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x19, 0x53, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8B, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x11, 0x32, 0x19, 0xD6, 0x22, 0x39, 0x19, 0xF8, 0x11, 0xB7, 0x09, 0x76, 0x02, 0x09, 0x75, 0x81, 0x09, 0x55, 0x09, 0x75, 0x02, 0x09, 0x76, 0x8B, 0x11, 0xB7, 0x2A, 0x59, 0x11, 0x75, 0x11, 0x12, 0x19, 0x31, 0x21, 0x11, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x85, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x19, 0x12, 0x82, 0x11, 0x33, 0x11, 0x54, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x88, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x12, 0x19, 0x12, 0x21, 0x32, 0x21, 0x31, 0x21, 0x11, 0x21, + 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x08, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x86, 0x19, 0x30, 0x19, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x18, 0x84, 0x21, 0xF7, 0x11, 0x95, 0x11, 0x53, 0x11, 0x33, 0x19, 0x32, 0x02, 0x19, 0x31, 0x8C, 0x19, 0x51, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x19, 0x75, 0x19, 0xD7, 0x22, 0x18, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x74, 0x19, 0x53, 0x21, 0x52, 0x21, 0x31, 0x01, 0x21, 0x10, 0x8C, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x12, 0x09, 0x13, 0x11, 0x75, 0x21, 0xF8, 0x22, 0x39, 0x21, 0xF8, 0x19, 0x95, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x19, 0x10, 0x8A, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x09, 0x34, 0x11, 0x33, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, + 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x85, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x19, 0xF8, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0x01, 0xDA, 0x03, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x80, 0x02, 0x1A, 0x01, 0x01, 0xFA, 0x89, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xF9, 0x12, 0x19, 0x11, 0xD8, 0x09, 0x54, 0x11, 0x33, 0x19, 0x12, 0x19, 0x32, 0x21, 0x32, 0x06, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x02, 0x19, 0x31, 0x08, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x84, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x02, 0x21, 0x31, 0x80, 0x21, 0x11, 0x02, 0x21, 0x31, 0x08, 0x19, 0x31, 0x8A, 0x19, 0x32, 0x19, 0x52, 0x19, 0x32, 0x19, 0x52, 0x19, 0x53, 0x11, 0x33, 0x09, 0x12, 0x11, 0x33, 0x11, 0x74, 0x11, 0x75, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x86, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x54, 0x09, 0x33, 0x09, 0x13, 0x11, 0x53, 0x11, 0x33, 0x02, 0x11, 0x74, 0x82, 0x19, 0x95, 0x19, 0x74, 0x19, 0x95, 0x01, 0x19, 0x74, 0x80, 0x19, 0x95, + 0x01, 0x19, 0x75, 0x02, 0x19, 0x95, 0x80, 0x19, 0x94, 0x14, 0x19, 0x95, 0x81, 0x19, 0x94, 0x19, 0xB5, 0x08, 0x19, 0x95, 0x80, 0x19, 0xB5, 0x05, 0x19, 0x95, 0x81, 0x11, 0x95, 0x19, 0xB5, 0x06, 0x19, 0x95, 0x80, 0x19, 0x75, 0x04, 0x19, 0x95, 0x01, 0x11, 0x96, 0x82, 0x11, 0x97, 0x09, 0xB8, 0x09, 0xD8, 0x02, 0x01, 0xD9, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x04, 0x01, 0xFA, 0x83, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xFB, 0x0B, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x84, 0x09, 0xF8, 0x11, 0xD7, 0x09, 0x96, 0x11, 0x54, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x8A, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x38, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x53, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x84, 0x29, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, + 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xF6, 0x19, 0xF7, 0x19, 0xF6, 0x19, 0xD5, 0x11, 0x74, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x30, 0x03, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x01, 0x21, 0x30, 0x06, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x20, 0xEF, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8F, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x32, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x2A, 0x38, 0x21, 0xF8, 0x21, 0xD7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x01, 0x19, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, + 0x88, 0x21, 0x51, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xD7, 0x08, 0xF2, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x07, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x06, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x20, 0xEF, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x18, 0xEF, 0x01, 0x19, 0x10, 0x89, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x21, 0xB5, 0x21, 0xF6, 0x22, 0x17, 0x21, 0xB6, 0x08, 0xF2, 0x10, 0xF2, 0x19, 0x32, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x20, 0xEF, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x31, 0x85, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x01, 0x22, 0x17, 0x88, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x21, 0x32, 0x21, 0x11, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x09, 0x33, 0x11, 0x95, 0x22, 0x17, 0x22, 0x37, 0x21, 0xD6, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x04, 0x21, 0x10, 0x84, 0x29, 0x10, + 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x07, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x83, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x12, 0x01, 0x19, 0x33, 0x86, 0x19, 0x95, 0x19, 0xB5, 0x21, 0xD6, 0x19, 0xB6, 0x21, 0xD6, 0x21, 0xB6, 0x19, 0x74, 0x02, 0x11, 0x32, 0x87, 0x19, 0x52, 0x19, 0x73, 0x19, 0x52, 0x11, 0x32, 0x09, 0x12, 0x09, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x87, 0x21, 0xF7, 0x19, 0x75, 0x19, 0x53, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x86, 0x19, 0x10, 0x19, 0x31, 0x11, 0x53, 0x19, 0xF7, 0x1A, 0x18, 0x1A, 0x19, 0x09, 0xB7, 0x01, + 0x09, 0x55, 0x81, 0x09, 0x34, 0x09, 0x75, 0x01, 0x09, 0x55, 0x01, 0x09, 0x75, 0x87, 0x09, 0x76, 0x11, 0xB7, 0x22, 0x59, 0x19, 0x96, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x11, 0x01, 0x19, 0x12, 0x82, 0x11, 0x33, 0x19, 0x54, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x88, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x12, 0x19, 0x12, 0x19, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x29, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x87, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x09, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x84, 0x11, 0x11, 0x11, 0x12, 0x19, 0x54, 0x19, 0x95, 0x21, 0xF7, 0x01, 0x22, 0x18, 0x84, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x11, 0x31, 0x01, 0x19, 0x31, 0x85, 0x19, 0x51, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x19, 0xB6, 0x01, 0x19, 0xF7, 0x89, 0x19, 0xD7, 0x19, 0xB5, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x21, + 0x52, 0x01, 0x11, 0x12, 0x88, 0x11, 0x54, 0x19, 0xD7, 0x22, 0x38, 0x22, 0x18, 0x19, 0xD7, 0x11, 0x54, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8B, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x21, 0xF7, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x80, 0x21, 0x51, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x84, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x87, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x86, 0x21, 0x10, 0x19, 0x11, 0x19, 0x12, 0x11, 0x34, 0x1A, + 0x18, 0x09, 0xF9, 0x09, 0xDA, 0x01, 0x01, 0xDA, 0x83, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x03, 0x01, 0xFA, 0x01, 0x02, 0x1A, 0x01, 0x01, 0xFA, 0x86, 0x01, 0xF9, 0x09, 0xD8, 0x09, 0x76, 0x09, 0x55, 0x09, 0x13, 0x11, 0x13, 0x11, 0x12, 0x01, 0x19, 0x12, 0x06, 0x19, 0x11, 0x81, 0x19, 0x10, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x11, 0x11, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x0A, 0x19, 0x11, 0x80, 0x19, 0x31, 0x11, 0x19, 0x11, 0x01, 0x11, 0x11, 0x88, 0x11, 0x12, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x11, 0x33, 0x09, 0x33, 0x11, 0x74, 0x11, 0x75, 0x11, 0x95, 0x01, 0x11, 0xB6, 0x84, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x74, 0x11, 0x54, 0x11, 0x53, 0x01, 0x11, 0x33, 0x01, 0x11, 0x53, 0x02, 0x11, 0x33, 0x81, 0x19, 0x33, 0x11, 0x12, 0x03, 0x19, 0x33, 0x81, 0x19, 0x53, 0x11, 0x33, 0x03, 0x11, 0x53, 0x01, 0x11, 0x33, 0x84, 0x11, 0x53, 0x11, 0x33, 0x11, 0x53, 0x11, 0x33, 0x19, 0x33, 0x01, 0x11, 0x53, 0x01, 0x19, 0x53, 0x01, 0x11, 0x53, 0x01, 0x19, 0x53, 0x80, 0x11, 0x33, 0x03, 0x11, 0x53, 0x80, 0x19, 0x53, 0x01, 0x19, 0x33, 0x81, 0x19, 0x53, 0x11, 0x53, 0x03, 0x19, 0x53, 0x01, 0x11, 0x33, 0x0C, 0x11, 0x53, 0x82, 0x19, 0x54, 0x11, 0x34, 0x19, 0x54, 0x04, 0x11, 0x33, 0x85, 0x11, 0x54, 0x09, 0x34, 0x09, 0x55, 0x01, 0x76, 0x01, 0xB8, 0x09, 0xF9, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x06, 0x01, + 0xDA, 0x80, 0x01, 0xFA, 0x05, 0x01, 0xDA, 0x03, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x09, 0xF9, 0x86, 0x09, 0xD8, 0x09, 0xB6, 0x09, 0x75, 0x11, 0x53, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x87, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x17, 0x19, 0xF7, 0x11, 0x96, 0x11, 0x33, 0x01, 0x19, 0x11, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x81, 0x11, 0x32, 0x11, 0x54, 0x02, 0x19, 0xD6, 0x83, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x11, 0x19, 0x11, 0x03, 0x19, 0x31, 0x03, 0x21, 0x31, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, + 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x01, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x51, 0x86, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x11, 0x54, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xF7, 0x01, 0x19, 0xB6, 0x84, 0x11, 0x54, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x11, 0x19, 0x12, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xB7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x8F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x51, 0x19, 0x32, 0x09, 0x12, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xB6, 0x08, 0xF2, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x07, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x02, + 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8F, 0x19, 0x32, 0x11, 0x12, 0x21, 0xD5, 0x2A, 0x17, 0x22, 0x17, 0x19, 0xB5, 0x08, 0xF2, 0x19, 0x12, 0x19, 0x32, 0x21, 0x51, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x01, 0x19, 0x33, 0x8A, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x11, 0x75, 0x09, 0x33, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x8C, 0x19, 0x10, 0x19, 0x12, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x08, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x11, 0x01, 0x19, 0x12, 0x83, 0x19, 0x54, 0x19, 0x74, 0x19, 0x95, 0x19, 0x96, 0x02, 0x21, 0xD6, 0x83, 0x19, 0x74, 0x11, 0x12, 0x11, 0x32, 0x11, 0x11, 0x02, 0x19, 0x52, 0x83, 0x11, 0x53, 0x11, 0x33, 0x11, 0x53, 0x11, + 0x74, 0x01, 0x19, 0xB6, 0x84, 0x21, 0xF7, 0x21, 0xD7, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x04, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x83, 0x19, 0x10, 0x19, 0x31, 0x11, 0x53, 0x19, 0xD6, 0x01, 0x1A, 0x18, 0x83, 0x11, 0xD7, 0x09, 0x76, 0x09, 0x55, 0x09, 0x34, 0x01, 0x09, 0x54, 0x01, 0x09, 0x55, 0x88, 0x11, 0xB6, 0x11, 0xB7, 0x19, 0xF8, 0x22, 0x18, 0x11, 0x55, 0x08, 0xF2, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x84, 0x19, 0x11, 0x19, 0x12, 0x19, 0x33, 0x19, 0x54, 0x19, 0x95, 0x01, 0x21, 0xF7, 0x87, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x34, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x02, + 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x0A, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x29, 0x50, 0x29, 0x30, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x31, 0x01, 0x11, 0x32, 0x89, 0x19, 0x74, 0x19, 0x95, 0x19, 0xD6, 0x19, 0xD7, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x54, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x8A, 0x19, 0x51, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x19, 0x96, 0x19, 0xD7, 0x21, 0xF8, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x74, 0x01, 0x19, 0x32, 0x01, 0x19, 0x11, 0x86, 0x21, 0x31, 0x21, 0x52, 0x19, 0x31, 0x19, 0x12, 0x11, 0x12, 0x11, 0x54, 0x19, 0xB6, 0x01, 0x22, 0x18, 0x85, 0x19, 0xD7, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x07, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x31, 0x83, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x01, 0x1A, 0x17, 0x87, 0x19, 0xF7, 0x19, 0xB6, 0x09, 0x34, 0x11, 0x33, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x89, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, + 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x11, 0x10, 0xF2, 0x11, 0x34, 0x1A, 0x18, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x02, 0x1A, 0x89, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xB8, 0x01, 0x77, 0x09, 0x96, 0x09, 0x55, 0x09, 0x34, 0x11, 0x33, 0x01, 0x11, 0x13, 0x03, 0x11, 0x33, 0x81, 0x11, 0x32, 0x11, 0x12, 0x03, 0x11, 0x32, 0x03, 0x11, 0x33, 0x06, 0x11, 0x32, 0x81, 0x11, 0x33, 0x11, 0x12, 0x04, 0x11, 0x32, 0x05, 0x11, 0x33, 0x81, 0x11, 0x32, 0x11, 0x33, 0x02, 0x11, 0x32, 0x03, 0x11, 0x33, 0x84, 0x11, 0x32, 0x11, 0x33, 0x11, 0x12, 0x11, 0x33, 0x11, 0x32, 0x01, 0x09, 0x12, 0x80, 0x11, 0x12, 0x02, 0x11, 0x33, 0x83, 0x09, 0x33, 0x11, 0x74, 0x11, 0x75, 0x11, 0x95, 0x02, 0x11, 0xB6, 0x80, 0x11, 0x95, 0x01, 0x11, 0x54, 0x01, 0x11, 0x53, 0x81, 0x19, 0x53, 0x11, 0x32, 0x03, 0x19, 0x32, 0x82, 0x19, 0x12, + 0x19, 0x32, 0x19, 0x12, 0x01, 0x19, 0x32, 0x80, 0x19, 0x12, 0x02, 0x19, 0x32, 0x80, 0x11, 0x12, 0x01, 0x19, 0x32, 0x82, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x06, 0x19, 0x32, 0x01, 0x11, 0x32, 0x03, 0x19, 0x32, 0x80, 0x11, 0x32, 0x0D, 0x19, 0x32, 0x83, 0x11, 0x32, 0x19, 0x32, 0x11, 0x32, 0x19, 0x32, 0x02, 0x11, 0x32, 0x01, 0x19, 0x52, 0x87, 0x19, 0x32, 0x19, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x33, 0x11, 0x12, 0x19, 0x32, 0x11, 0x32, 0x01, 0x19, 0x32, 0x86, 0x11, 0x32, 0x11, 0x33, 0x11, 0x34, 0x09, 0x54, 0x09, 0x76, 0x09, 0xD8, 0x01, 0xD8, 0x01, 0x01, 0xD9, 0x06, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xFB, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x07, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x85, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xD7, 0x11, 0xB6, 0x11, 0x74, 0x01, 0x19, 0x52, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x07, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x31, 0x11, 0x12, + 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x18, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x8F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x09, 0x53, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x12, 0x19, 0x31, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x30, 0x83, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x03, 0x19, 0x32, 0x83, 0x19, 0x52, 0x19, 0x32, 0x21, 0x32, 0x19, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x89, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x94, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x51, 0x21, 0x51, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x09, 0x33, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, + 0x0F, 0x02, 0x21, 0x30, 0x8D, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x53, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x18, 0x19, 0xD7, 0x19, 0x96, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x8C, 0x19, 0x30, 0x21, 0x51, 0x19, 0x32, 0x11, 0x12, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xB7, 0x08, 0xF2, 0x19, 0x31, 0x21, 0x11, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x85, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x06, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8B, 0x19, 0x32, 0x08, 0xF2, 0x21, 0xB5, 0x2A, 0x17, 0x22, 0x17, 0x21, 0xD6, 0x10, 0xF2, 0x11, 0x12, 0x21, 0x52, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x87, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x32, 0x19, 0x33, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x21, 0xF7, 0x22, + 0x17, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x80, 0x21, 0x11, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x84, 0x19, 0x10, 0x19, 0x11, 0x19, 0x31, 0x11, 0x12, 0x11, 0x54, 0x01, 0x21, 0xF7, 0x85, 0x22, 0x17, 0x11, 0x53, 0x11, 0x12, 0x19, 0x12, 0x21, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x19, 0x11, 0x9C, 0x19, 0x12, 0x19, 0x32, 0x19, 0x33, 0x19, 0x54, 0x19, 0x95, 0x21, 0xD6, 0x19, 0xB6, 0x21, 0xD6, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x11, 0x31, 0x19, 0x73, 0x19, 0x93, 0x11, 0x32, 0x11, 0x33, 0x09, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xD7, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, + 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x8E, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x10, 0x19, 0x11, 0x11, 0x53, 0x11, 0xB6, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0xD8, 0x09, 0x96, 0x09, 0x55, 0x09, 0x54, 0x01, 0x09, 0x34, 0x01, 0x09, 0x55, 0x88, 0x11, 0xB7, 0x11, 0xF8, 0x1A, 0x19, 0x19, 0xF8, 0x09, 0x55, 0x08, 0xF2, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x11, 0x84, 0x19, 0x11, 0x19, 0x12, 0x19, 0x33, 0x19, 0x54, 0x19, 0xB6, 0x02, 0x21, 0xF7, 0x85, 0x19, 0x95, 0x11, 0x54, 0x11, 0x13, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x04, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x81, 0x29, 0x50, 0x29, 0x30, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x31, 0x88, 0x11, 0x12, + 0x11, 0x32, 0x11, 0x74, 0x19, 0x95, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x34, 0x01, 0x11, 0x12, 0x01, 0x11, 0x31, 0x81, 0x19, 0x51, 0x19, 0x52, 0x01, 0x19, 0x32, 0x83, 0x11, 0x33, 0x11, 0x74, 0x19, 0x96, 0x19, 0xD7, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x11, 0x86, 0x21, 0x31, 0x21, 0x52, 0x19, 0x52, 0x19, 0x12, 0x10, 0xF2, 0x19, 0x54, 0x19, 0x95, 0x01, 0x22, 0x18, 0x85, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x32, 0x19, 0x31, 0x21, 0x51, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x08, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x81, 0x19, 0x10, 0x19, 0x11, 0x01, 0x11, 0x32, 0x81, 0x11, 0x74, 0x19, 0xB6, 0x01, 0x22, 0x18, 0x87, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x21, 0x32, 0x21, 0x31, 0x21, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x08, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, + 0x81, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x1A, 0x39, 0x09, 0xF9, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xFA, 0x02, 0x1A, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xFB, 0x80, 0x02, 0x1B, 0x01, 0x01, 0xFA, 0x85, 0x01, 0xFB, 0x01, 0xFA, 0x02, 0x1A, 0x01, 0xFA, 0x01, 0xB9, 0x01, 0x98, 0x01, 0x11, 0xF8, 0x80, 0x09, 0x96, 0x02, 0x11, 0x96, 0x80, 0x11, 0xB6, 0x02, 0x11, 0x96, 0x01, 0x11, 0x95, 0x80, 0x11, 0xB5, 0x01, 0x11, 0x95, 0x80, 0x11, 0xB5, 0x01, 0x11, 0x96, 0x83, 0x11, 0xB6, 0x11, 0x96, 0x11, 0xB6, 0x11, 0x95, 0x02, 0x11, 0x96, 0x81, 0x11, 0x95, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x02, 0x11, 0x95, 0x80, 0x11, 0xB5, 0x04, 0x11, 0xB6, 0x01, 0x11, 0x96, 0x06, 0x11, 0xB6, 0x81, 0x19, 0xD6, 0x11, 0xD6, 0x04, 0x11, 0xB6, 0x82, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x54, 0x01, 0x11, 0x53, 0x02, 0x09, 0x33, 0x87, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x19, 0xD6, 0x19, 0xD7, 0x11, 0xB6, 0x11, 0xB5, 0x11, 0x54, 0x01, 0x11, 0x33, 0x80, 0x11, 0x32, 0x02, 0x19, 0x32, 0x01, 0x19, 0x11, 0x81, 0x21, 0x32, 0x19, 0x32, 0x01, 0x21, 0x32, 0x02, 0x19, 0x32, 0x83, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x19, 0x11, 0x03, 0x19, 0x31, 0x83, 0x19, 0x11, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x0E, 0x19, 0x31, 0x80, 0x19, 0x11, 0x04, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, + 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x02, 0x19, 0x31, 0x01, 0x19, 0x32, 0x02, 0x19, 0x31, 0x88, 0x19, 0x32, 0x19, 0x52, 0x11, 0x32, 0x11, 0x33, 0x09, 0x34, 0x09, 0x55, 0x09, 0xB7, 0x09, 0xF9, 0x01, 0xFA, 0x06, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x06, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x10, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x03, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x86, 0x0A, 0x1A, 0x09, 0xF9, 0x09, 0xD7, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x32, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x85, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x19, 0x31, 0x19, 0x12, 0x09, 0x13, 0x19, 0xD6, 0x1A, 0x18, 0x19, 0xD7, 0x11, 0x96, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x8C, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x19, 0xF6, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x73, 0x11, 0x12, 0x19, 0x31, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x30, 0x21, + 0x10, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x01, 0x11, 0x32, 0x01, 0x11, 0x33, 0x02, 0x19, 0x53, 0x86, 0x19, 0x52, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x8F, 0x21, 0x50, 0x21, 0x31, 0x19, 0x51, 0x11, 0x32, 0x09, 0x12, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xF7, 0x22, 0x17, 0x21, 0xF6, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x11, 0x31, 0x19, 0x11, 0x19, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x19, 0x54, 0x19, 0x95, 0x21, 0xF7, 0x2A, 0x38, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x11, 0x02, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x89, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0xD7, 0x1A, + 0x18, 0x1A, 0x19, 0x19, 0xB7, 0x08, 0xF2, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x21, 0x52, 0x11, 0x11, 0x10, 0xF2, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xF7, 0x21, 0xB6, 0x11, 0x12, 0x19, 0x12, 0x21, 0x32, 0x01, 0x21, 0x31, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x32, 0x01, 0x11, 0x12, 0x81, 0x11, 0x74, 0x19, 0xB5, 0x01, 0x21, 0xF7, 0x82, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x54, 0x01, 0x11, 0x12, 0x83, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x20, 0xEF, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x19, 0x31, 0x88, 0x11, 0x12, 0x11, 0x33, 0x21, 0xD6, 0x21, 0xF7, 0x2A, 0x17, 0x19, 0x74, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, + 0x31, 0x02, 0x21, 0x30, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x86, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x19, 0x11, 0x19, 0x31, 0x02, 0x19, 0x32, 0x84, 0x19, 0x53, 0x19, 0x74, 0x19, 0x95, 0x21, 0xD6, 0x21, 0xF7, 0x01, 0x21, 0xD6, 0x91, 0x19, 0x54, 0x11, 0x12, 0x10, 0xF1, 0x11, 0x11, 0x19, 0x52, 0x21, 0x73, 0x19, 0x52, 0x11, 0x32, 0x09, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x54, 0x11, 0x12, 0x01, 0x19, 0x11, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x05, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x03, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x19, 0x31, 0x11, 0x53, 0x19, 0xB6, 0x19, 0xF7, 0x01, 0x11, 0xD8, 0x81, 0x09, 0x75, 0x09, 0x55, 0x01, + 0x09, 0x54, 0x01, 0x09, 0x34, 0x89, 0x09, 0x55, 0x09, 0x96, 0x11, 0xD8, 0x11, 0xF8, 0x19, 0xF8, 0x09, 0x55, 0x08, 0xF2, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x84, 0x19, 0x11, 0x19, 0x12, 0x19, 0x53, 0x19, 0x54, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x82, 0x21, 0xF6, 0x19, 0xB6, 0x11, 0x54, 0x01, 0x11, 0x12, 0x81, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0x95, 0x19, 0xD6, 0x19, 0xD7, 0x01, 0x19, 0xB6, 0x81, 0x19, 0x74, 0x11, 0x12, 0x01, 0x11, 0x11, 0x83, 0x11, 0x31, 0x19, 0x31, 0x19, 0x51, 0x19, 0x52, 0x01, 0x11, 0x32, 0x88, 0x11, 0x54, 0x19, 0x95, 0x19, 0xB6, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x82, 0x19, 0x31, 0x21, 0x52, 0x19, 0x52, 0x01, 0x11, 0x12, 0x89, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF7, + 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x02, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0xB6, 0x1A, 0x17, 0x22, 0x18, 0x19, 0xF7, 0x11, 0x95, 0x01, 0x11, 0x33, 0x80, 0x19, 0x32, 0x01, 0x21, 0x31, 0x8B, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x08, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x8A, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x09, 0x13, 0x1A, 0x39, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0xDA, + 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xFB, 0x82, 0x01, 0xDB, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0x01, 0xFB, 0x01, 0x01, 0xFA, 0x81, 0x09, 0xDA, 0x01, 0xB9, 0x02, 0x12, 0x19, 0x81, 0x12, 0x18, 0x1A, 0x18, 0x03, 0x1A, 0x39, 0x01, 0x22, 0x39, 0x01, 0x22, 0x38, 0x80, 0x22, 0x58, 0x01, 0x22, 0x38, 0x80, 0x22, 0x59, 0x01, 0x22, 0x39, 0x80, 0x22, 0x38, 0x03, 0x22, 0x39, 0x81, 0x22, 0x59, 0x22, 0x38, 0x01, 0x22, 0x39, 0x01, 0x22, 0x59, 0x01, 0x22, 0x38, 0x03, 0x22, 0x39, 0x01, 0x22, 0x59, 0x84, 0x22, 0x38, 0x22, 0x39, 0x22, 0x59, 0x22, 0x38, 0x22, 0x39, 0x01, 0x22, 0x59, 0x01, 0x22, 0x38, 0x82, 0x1A, 0x18, 0x22, 0x38, 0x1A, 0x38, 0x02, 0x1A, 0x18, 0x01, 0x1A, 0x38, 0x85, 0x1A, 0x17, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x54, 0x11, 0x53, 0x09, 0x32, 0x01, 0x09, 0x33, 0x81, 0x11, 0x54, 0x11, 0x95, 0x01, 0x19, 0xD6, 0x84, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x01, 0x11, 0x32, 0x87, 0x19, 0x11, 0x19, 0x32, 0x19, 0x11, 0x19, 0x32, 0x21, 0x32, 0x19, 0x11, 0x21, 0x32, 0x19, 0x11, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x05, 0x19, 0x31, 0x80, 0x19, 0x11, 0x0C, 0x19, 0x31, 0x80, 0x19, 0x11, 0x06, 0x19, 0x31, 0x83, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x02, 0x19, 0x31, 0x01, 0x21, 0x31, 0x0A, 0x19, 0x31, 0x80, 0x19, 0x11, 0x04, 0x19, 0x31, 0x84, 0x11, 0x32, 0x11, 0x12, 0x09, 0x34, 0x09, 0x55, 0x09, 0xB7, 0x01, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x83, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, + 0x01, 0x01, 0xFA, 0x04, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x09, 0x01, 0xDA, 0x80, 0x01, 0xDB, 0x0F, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x09, 0xF9, 0x85, 0x09, 0xF8, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x53, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x07, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x09, 0x12, 0x19, 0xD6, 0x1A, 0x18, 0x11, 0xD7, 0x19, 0xB6, 0x11, 0x33, 0x19, 0x12, 0x19, 0x31, 0x02, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x4F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x19, 0xF6, 0x19, 0xD6, 0x19, 0xD5, 0x11, 0x73, 0x11, 0x11, 0x19, 0x31, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x33, 0x11, 0x54, 0x11, 0x74, 0x01, 0x11, 0x75, 0x81, 0x11, 0x54, 0x09, 0x34, 0x02, 0x11, 0x33, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, + 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x90, 0x21, 0x2F, 0x29, 0x50, 0x29, 0x51, 0x21, 0x51, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x09, 0x33, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x18, 0x19, 0xF6, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x01, 0x19, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x74, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x11, 0x81, 0x19, 0x10, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x89, 0x21, 0x50, 0x19, 0x31, 0x19, 0x11, 0x11, 0x13, 0x19, 0xD7, 0x1A, 0x18, 0x1A, 0x19, 0x19, 0xB7, 0x08, 0xF2, 0x19, 0x32, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, + 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x51, 0x21, 0x32, 0x19, 0x11, 0x10, 0xF1, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xF7, 0x21, 0xB6, 0x11, 0x13, 0x19, 0x12, 0x21, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x06, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x90, 0x19, 0x32, 0x11, 0x32, 0x11, 0x74, 0x19, 0x95, 0x19, 0xD6, 0x22, 0x18, 0x22, 0x17, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x91, 0x29, 0x50, 0x21, 0x50, 0x19, 0x0F, 0x21, 0x50, 0x21, 0x51, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB6, 0x21, 0xF7, 0x2A, 0x17, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x86, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, + 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x8A, 0x19, 0x32, 0x19, 0x33, 0x11, 0x53, 0x19, 0x74, 0x19, 0x95, 0x19, 0xD6, 0x21, 0xD6, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x53, 0x11, 0x32, 0x01, 0x11, 0x11, 0x01, 0x19, 0x52, 0x81, 0x11, 0x11, 0x11, 0x32, 0x01, 0x11, 0x33, 0x01, 0x19, 0x95, 0x88, 0x19, 0xB6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x0A, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x74, 0x19, 0xD7, 0x01, 0x11, 0xD7, 0x88, 0x11, 0xB6, 0x09, 0x75, 0x01, 0x34, 0x09, 0x55, 0x09, 0x34, 0x01, 0x14, 0x01, 0x35, 0x09, 0x97, 0x11, 0xB8, 0x01, 0x11, 0xD8, 0x83, 0x11, 0x75, 0x08, 0xF2, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x83, 0x21, 0x50, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, + 0x08, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x19, 0x12, 0x19, 0x53, 0x19, 0x54, 0x19, 0xB5, 0x02, 0x21, 0xF7, 0x87, 0x19, 0x95, 0x11, 0x54, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x31, 0x85, 0x19, 0x31, 0x11, 0x12, 0x19, 0x53, 0x19, 0x95, 0x19, 0xD6, 0x21, 0xF7, 0x01, 0x19, 0xD6, 0x84, 0x19, 0x74, 0x11, 0x33, 0x11, 0x12, 0x10, 0xF1, 0x11, 0x11, 0x02, 0x19, 0x31, 0x01, 0x11, 0x32, 0x87, 0x11, 0x53, 0x19, 0x95, 0x19, 0xB6, 0x19, 0xD7, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x75, 0x11, 0x33, 0x01, 0x19, 0x12, 0x81, 0x10, 0xF1, 0x19, 0x31, 0x01, 0x19, 0x52, 0x8C, 0x11, 0x32, 0x11, 0x12, 0x11, 0x54, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x32, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x05, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x84, 0x29, 0x30, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x19, 0x11, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xF7, 0x11, 0x75, + 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x89, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x22, 0x39, 0x0A, 0x19, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x85, 0x01, 0xFB, 0x02, 0x1B, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x84, 0x01, 0xDA, 0x09, 0xDA, 0x09, 0xD9, 0x12, 0x19, 0x11, 0xF8, 0x02, 0x11, 0xD8, 0x01, 0x19, 0xF8, 0x80, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x80, 0x1A, 0x17, 0x01, 0x19, 0xF7, 0x08, 0x19, 0xF8, 0x83, 0x22, 0x18, 0x19, 0xF8, 0x22, 0x18, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x83, 0x19, 0xD7, 0x19, 0xF7, + 0x22, 0x18, 0x19, 0xF7, 0x02, 0x19, 0xF8, 0x81, 0x19, 0xF7, 0x19, 0xD7, 0x02, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x02, 0x19, 0xD7, 0x02, 0x19, 0xF7, 0x02, 0x1A, 0x18, 0x82, 0x1A, 0x17, 0x19, 0xF7, 0x11, 0xD7, 0x01, 0x11, 0xB6, 0x81, 0x11, 0x95, 0x11, 0x74, 0x03, 0x09, 0x33, 0x87, 0x09, 0x54, 0x11, 0x95, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x54, 0x01, 0x11, 0x32, 0x80, 0x11, 0x12, 0x01, 0x19, 0x32, 0x8A, 0x19, 0x11, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x18, 0xF1, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x05, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x19, 0x31, 0x80, 0x21, 0x52, 0x01, 0x19, 0x31, 0x82, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x0A, 0x19, 0x31, 0x02, 0x21, 0x31, 0x83, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x01, 0x21, 0x31, 0x10, 0x19, 0x31, 0x01, 0x11, 0x32, 0x83, 0x09, 0x34, 0x09, 0x55, 0x09, 0xB7, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x81, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x05, 0x01, 0xDA, 0x83, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x8A, 0x01, 0xF9, 0x09, 0xF9, 0x11, 0xF9, 0x11, 0xF8, 0x19, 0xD6, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, + 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x93, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x33, 0x11, 0x11, 0x19, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x8D, 0x21, 0x30, 0x21, 0x50, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x73, 0x11, 0x12, 0x19, 0x31, 0x21, 0x30, 0x05, 0x29, 0x30, 0x01, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x38, 0x01, 0x22, 0x58, 0x86, 0x22, 0x38, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x54, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, + 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x51, 0x84, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB5, 0x01, 0x22, 0x17, 0x86, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x8C, 0x19, 0x10, 0x19, 0x11, 0x19, 0x12, 0x19, 0x33, 0x21, 0xB5, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x52, 0x01, 0x19, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x50, 0x02, 0x21, 0x2F, 0x8C, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x13, 0x19, 0xD7, 0x19, 0xF8, 0x1A, 0x19, 0x19, 0xD7, 0x08, 0xF2, 0x19, 0x12, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x10, 0x92, 0x21, 0x30, 0x21, 0x31, 0x21, 0x52, 0x19, 0x12, + 0x11, 0x12, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xF7, 0x21, 0xB6, 0x11, 0x13, 0x19, 0x12, 0x19, 0x32, 0x21, 0x31, 0x29, 0x31, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x11, 0x54, 0x11, 0xB5, 0x22, 0x37, 0x01, 0x22, 0x38, 0x86, 0x19, 0xB5, 0x09, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x84, 0x21, 0x51, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x19, 0xB5, 0x01, 0x22, 0x17, 0x89, 0x19, 0x94, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x85, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x89, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x01, 0x19, 0x53, 0x81, 0x19, 0x54, 0x19, 0x95, 0x01, 0x21, + 0xD6, 0x86, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x53, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x72, 0x01, 0x19, 0x32, 0x8D, 0x11, 0x12, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x12, 0x18, 0xF1, 0x21, 0x11, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x89, 0x19, 0x10, 0x19, 0x32, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xB7, 0x19, 0xF7, 0x11, 0xF7, 0x19, 0xF7, 0x11, 0xB6, 0x09, 0x96, 0x01, 0x09, 0x76, 0x88, 0x09, 0xB7, 0x11, 0xD8, 0x09, 0x97, 0x11, 0xB8, 0x19, 0xD8, 0x09, 0x75, 0x08, 0xF2, 0x11, 0x11, 0x19, 0x11, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x09, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x31, 0x19, 0x12, 0x19, 0x33, 0x19, 0x74, 0x19, 0xB5, 0x02, + 0x21, 0xF7, 0x86, 0x19, 0x95, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x21, 0x51, 0x21, 0x31, 0x29, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x31, 0x11, 0x32, 0x19, 0x53, 0x11, 0x54, 0x19, 0x95, 0x01, 0x21, 0xF7, 0x87, 0x19, 0xB5, 0x19, 0x74, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x51, 0x19, 0x52, 0x01, 0x11, 0x11, 0x83, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x82, 0x19, 0xB6, 0x19, 0x75, 0x11, 0x33, 0x02, 0x19, 0x12, 0x8F, 0x19, 0x11, 0x19, 0x31, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x09, 0x33, 0x19, 0xB5, 0x22, 0x17, 0x22, 0x18, 0x22, 0x17, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x02, 0x19, 0x32, 0x84, 0x19, 0x31, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xD7, 0x19, 0x96, 0x11, 0x34, 0x11, 0x12, 0x19, 0x12, 0x21, 0x31, 0x02, 0x21, + 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x08, 0x29, 0x0F, 0x05, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x07, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x87, 0x21, 0x31, 0x21, 0x10, 0x19, 0x11, 0x19, 0x12, 0x09, 0x13, 0x1A, 0x38, 0x0A, 0x19, 0x01, 0xB9, 0x03, 0x01, 0xDA, 0x06, 0x01, 0xFB, 0x8E, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xB7, 0x09, 0x96, 0x11, 0x96, 0x11, 0xB6, 0x11, 0x96, 0x11, 0xB6, 0x11, 0x96, 0x11, 0x95, 0x11, 0xB6, 0x04, 0x11, 0x95, 0x81, 0x19, 0x95, 0x11, 0x75, 0x01, 0x11, 0x95, 0x80, 0x11, 0x75, 0x01, 0x11, 0x96, 0x80, 0x11, 0x95, 0x01, 0x19, 0x95, 0x01, 0x11, 0x95, 0x81, 0x19, 0x95, 0x11, 0x75, 0x01, 0x11, 0x95, 0x81, 0x11, 0x75, 0x19, 0x95, 0x03, 0x11, 0x75, 0x82, 0x11, 0x95, 0x11, 0x75, 0x11, 0x95, 0x05, 0x11, 0x75, 0x80, 0x19, 0x75, 0x02, 0x11, 0x75, 0x02, 0x11, 0x95, 0x82, 0x11, 0xB6, 0x11, 0xB5, 0x11, 0xB6, 0x01, 0x11, 0xD6, 0x89, 0x19, + 0xF7, 0x11, 0xB6, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x53, 0x09, 0x33, 0x09, 0x13, 0x09, 0x33, 0x09, 0x54, 0x11, 0x95, 0x01, 0x19, 0xD6, 0x84, 0x19, 0xF7, 0x11, 0xB6, 0x11, 0xB5, 0x11, 0x74, 0x11, 0x53, 0x03, 0x11, 0x32, 0x81, 0x19, 0x32, 0x19, 0x12, 0x04, 0x19, 0x11, 0x01, 0x19, 0x32, 0x80, 0x19, 0x12, 0x09, 0x19, 0x32, 0x80, 0x19, 0x52, 0x04, 0x19, 0x32, 0x80, 0x19, 0x31, 0x03, 0x19, 0x32, 0x80, 0x19, 0x31, 0x03, 0x19, 0x32, 0x80, 0x19, 0x31, 0x02, 0x19, 0x32, 0x14, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x85, 0x11, 0x33, 0x09, 0x34, 0x01, 0x55, 0x09, 0xB7, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x02, 0x01, 0xDA, 0x82, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xDB, 0x03, 0x01, 0xDA, 0x81, 0x01, 0xFB, 0x01, 0xDB, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xDB, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xDB, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x02, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xF9, 0x01, 0x09, 0xF9, 0x85, 0x11, 0xD7, 0x11, 0xB6, 0x19, 0x74, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, + 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x93, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x4F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x8C, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x53, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x05, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x32, 0x11, 0x33, 0x19, 0x95, 0x11, 0xB6, 0x19, 0xF8, 0x12, 0x18, 0x11, 0xD7, 0x11, 0xF8, 0x09, 0xD7, 0x09, 0xD8, 0x11, 0xF8, 0x01, 0x1A, 0x38, 0x86, 0x1A, 0x18, 0x21, 0xF7, 0x11, 0x74, 0x19, 0x33, 0x19, 0x32, 0x21, 0x11, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8F, 0x21, 0x51, 0x21, 0x31, 0x10, 0xF1, 0x11, 0x12, 0x11, 0x33, 0x19, + 0x95, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8F, 0x21, 0x50, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0x53, 0x21, 0xB5, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x02, 0x19, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x50, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x51, 0x19, 0x11, 0x11, 0x13, 0x19, 0xD7, 0x01, 0x19, 0xF9, 0x82, 0x19, 0xD7, 0x08, 0xF2, 0x19, 0x32, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x21, 0x32, 0x19, 0x12, 0x10, 0xF2, 0x21, 0xB6, 0x2A, 0x17, 0x21, 0xF7, 0x21, 0xB6, 0x11, 0x13, 0x19, 0x12, 0x19, 0x32, 0x21, 0x11, 0x01, 0x21, 0x10, 0x84, 0x29, 0x10, 0x21, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, + 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x8F, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x74, 0x11, 0xB5, 0x22, 0x38, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x88, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, 0x32, 0x19, 0xB5, 0x01, 0x22, 0x17, 0x83, 0x19, 0xB5, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x8D, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x01, 0x19, 0x32, 0x01, 0x19, 0x53, 0x80, 0x19, 0x95, 0x02, 0x21, 0xD6, 0x85, 0x21, 0xB5, 0x19, 0x53, 0x11, 0x32, 0x11, 0x31, 0x19, 0x72, 0x19, 0x52, 0x01, 0x19, 0x32, 0x01, 0x11, 0x12, 0x89, 0x19, 0x53, 0x11, 0x74, 0x19, 0xB5, 0x22, 0x38, 0x19, 0xD6, + 0x19, 0xD7, 0x21, 0xD6, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x89, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x84, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x01, 0x19, 0xF7, 0x84, 0x1A, 0x18, 0x1A, 0x17, 0x19, 0xF7, 0x11, 0xB7, 0x11, 0xD8, 0x01, 0x11, 0xF8, 0x87, 0x11, 0xD8, 0x11, 0xB8, 0x11, 0xD8, 0x09, 0x75, 0x08, 0xF2, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x05, 0x21, 0x30, 0x01, 0x21, 0x50, 0x86, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x02, 0x21, 0xF7, 0x83, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x12, 0x19, 0x12, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x03, 0x29, 0x2F, 0x87, 0x29, 0x0F, 0x29, + 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x03, 0x21, 0x31, 0x93, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x19, 0xD6, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x10, 0xF1, 0x19, 0x31, 0x19, 0x52, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x82, 0x21, 0xD7, 0x19, 0x75, 0x19, 0x34, 0x03, 0x19, 0x12, 0x8D, 0x19, 0x32, 0x19, 0x52, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x95, 0x21, 0xF7, 0x22, 0x38, 0x22, 0x17, 0x21, 0xD6, 0x11, 0x54, 0x11, 0x13, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x85, 0x19, 0x94, 0x11, 0x33, 0x19, 0x53, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x31, 0x84, 0x19, 0x11, 0x11, 0x11, 0x11, 0x33, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x84, 0x21, 0xF7, 0x19, 0x96, 0x11, 0x34, 0x11, 0x12, 0x19, 0x12, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, + 0x01, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x80, 0x28, 0xEF, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x1A, 0x18, 0x12, 0x19, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x82, 0x01, 0xFA, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0x01, 0xFB, 0x80, 0x01, 0xDB, 0x01, 0x01, 0xFB, 0x01, 0x01, 0xBA, 0x84, 0x01, 0xDA, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0x76, 0x01, 0x09, 0x54, 0x80, 0x09, 0x33, 0x02, 0x11, 0x53, 0x01, 0x11, 0x33, 0x02, 0x11, 0x32, 0x83, 0x11, 0x52, 0x19, 0x52, 0x11, 0x32, 0x19, 0x32, 0x02, 0x11, 0x33, 0x80, 0x19, 0x53, 0x02, 0x11, 0x33, 0x83, 0x11, 0x12, 0x11, 0x33, 0x19, 0x53, 0x19, 0x33, 0x02, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x19, 0x33, 0x04, 0x11, 0x33, 0x01, 0x11, 0x32, 0x02, 0x11, 0x33, 0x80, 0x19, 0x33, 0x02, 0x11, 0x12, 0x02, 0x11, 0x32, 0x01, 0x11, 0x33, 0x01, 0x11, 0x53, 0x82, 0x09, 0x13, 0x11, 0x74, 0x19, 0xF6, 0x01, 0x19, 0xF7, 0x83, 0x11, 0xD6, 0x11, 0xB5, 0x11, 0x74, 0x09, 0x33, 0x01, 0x09, + 0x13, 0x8D, 0x09, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x74, 0x11, 0x54, 0x11, 0x53, 0x09, 0x33, 0x09, 0x32, 0x11, 0x32, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x80, 0x11, 0x12, 0x01, 0x11, 0x32, 0x81, 0x19, 0x32, 0x11, 0x32, 0x03, 0x11, 0x12, 0x0E, 0x11, 0x32, 0x80, 0x11, 0x12, 0x01, 0x11, 0x32, 0x80, 0x11, 0x12, 0x04, 0x11, 0x32, 0x80, 0x11, 0x12, 0x01, 0x11, 0x32, 0x01, 0x11, 0x12, 0x01, 0x19, 0x32, 0x80, 0x11, 0x12, 0x03, 0x11, 0x32, 0x01, 0x11, 0x12, 0x07, 0x11, 0x32, 0x80, 0x11, 0x12, 0x01, 0x11, 0x32, 0x8C, 0x11, 0x33, 0x09, 0x33, 0x09, 0x54, 0x01, 0x76, 0x01, 0xB8, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xFB, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x81, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xDB, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xDB, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x01, 0x01, 0xDB, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFB, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x06, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x01, 0x09, 0xF9, 0x85, 0x09, 0xD7, 0x19, 0xD6, 0x11, 0x73, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, + 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x09, 0x33, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x33, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x19, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x74, 0x19, 0xF6, 0x19, 0xF7, 0x01, 0x19, 0xB5, 0x83, 0x19, 0x73, 0x11, 0x11, 0x19, 0x10, 0x21, 0x10, 0x02, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x88, 0x21, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF8, 0x11, 0xD8, 0x09, 0xB8, 0x01, 0xB7, 0x01, 0x01, 0xB8, 0x88, 0x01, 0x97, 0x01, 0xB8, 0x09, 0xD8, 0x09, 0xF8, 0x11, 0xF8, 0x11, 0xF7, 0x19, 0xF7, 0x19, 0x74, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x04, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, + 0x88, 0x11, 0x11, 0x11, 0x12, 0x11, 0x32, 0x19, 0x95, 0x22, 0x17, 0x22, 0x38, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x01, 0x11, 0x12, 0x82, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x4F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x02, 0x21, 0xF7, 0x86, 0x19, 0xB6, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x31, 0x19, 0x11, 0x11, 0x13, 0x19, 0xB7, 0x01, 0x1A, 0x19, 0x83, 0x19, 0xB7, 0x10, 0xF3, 0x19, 0x12, 0x21, 0x31, 0x04, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x8C, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x21, 0x32, 0x11, 0x12, 0x11, 0x13, 0x21, 0xD6, 0x21, 0xF7, 0x2A, 0x17, 0x21, 0xB6, 0x11, 0x13, + 0x19, 0x32, 0x19, 0x11, 0x03, 0x21, 0x10, 0x84, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x8E, 0x19, 0x52, 0x11, 0x32, 0x11, 0x12, 0x11, 0x53, 0x11, 0xB5, 0x1A, 0x17, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x54, 0x11, 0x12, 0x19, 0x31, 0x19, 0x10, 0x21, 0x51, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x50, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x19, 0x31, 0x89, 0x11, 0x11, 0x11, 0x12, 0x19, 0xB5, 0x2A, 0x37, 0x21, 0xF6, 0x19, 0x94, 0x11, 0x12, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x81, 0x19, 0x31, 0x19, 0x51, 0x02, 0x19, 0x32, 0x81, 0x19, 0x53, 0x19, 0x95, 0x01, 0x21, 0xD6, 0x8C, 0x21, 0xF6, 0x21, 0x95, 0x19, 0x53, 0x11, 0x12, 0x19, 0x32, 0x19, 0x52, 0x19, 0x72, 0x19, 0x32, 0x19, 0x12, 0x11, 0x12, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x01, 0x19, 0xB6, 0x86, + 0x19, 0xD7, 0x22, 0x18, 0x19, 0xD6, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x04, 0x21, 0x10, 0x03, 0x29, 0x10, 0x8D, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x03, 0x19, 0xF7, 0x80, 0x19, 0xD7, 0x01, 0x11, 0xB7, 0x89, 0x19, 0xF8, 0x12, 0x18, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0x96, 0x09, 0x13, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x31, 0x21, 0x51, 0x02, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x90, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0x74, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, + 0x21, 0x2F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x21, 0x51, 0x94, 0x21, 0x32, 0x19, 0x12, 0x11, 0x32, 0x19, 0x74, 0x19, 0xB6, 0x21, 0xF6, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x10, 0xF1, 0x10, 0xF0, 0x19, 0x11, 0x21, 0x52, 0x19, 0x51, 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x19, 0xF7, 0x02, 0x19, 0xD7, 0x84, 0x19, 0x95, 0x19, 0x34, 0x19, 0x33, 0x19, 0x32, 0x21, 0x32, 0x02, 0x19, 0x32, 0x01, 0x11, 0x32, 0x89, 0x09, 0x33, 0x11, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x13, 0x10, 0xF2, 0x11, 0x11, 0x01, 0x21, 0x51, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x86, 0x21, 0xF6, 0x11, 0x75, 0x11, 0x54, 0x19, 0x53, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x19, 0xB6, 0x21, 0xF7, 0x21, 0xF8, 0x19, 0xD7, 0x19, 0x96, 0x11, 0x34, 0x19, 0x33, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, + 0x29, 0x30, 0x21, 0x10, 0x04, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x91, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x19, 0x11, 0x09, 0x12, 0x19, 0xF7, 0x12, 0x19, 0x09, 0xD9, 0x01, 0xD9, 0x05, 0x01, 0xDA, 0x80, 0x01, 0xDB, 0x03, 0x01, 0xDA, 0x87, 0x01, 0xBA, 0x01, 0xD9, 0x01, 0xB8, 0x09, 0xB8, 0x09, 0xB7, 0x01, 0x34, 0x09, 0x13, 0x09, 0x32, 0x01, 0x11, 0x32, 0x80, 0x19, 0x31, 0x04, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x83, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x01, 0x19, 0x12, 0x83, 0x19, 0x32, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x04, 0x19, 0x11, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x03, 0x19, 0x11, 0x03, 0x19, 0x31, 0x0B, 0x19, 0x11, 0x80, 0x19, 0x32, 0x01, 0x11, 0x12, 0x88, 0x09, 0x33, 0x11, 0x95, 0x1A, 0x17, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0xD6, 0x11, 0xB5, 0x11, 0x74, 0x11, 0x33, 0x01, 0x09, 0x13, 0x01, 0x09, 0x34, 0x81, 0x11, 0x75, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x81, 0x11, 0xD6, 0x11, 0xB6, 0x01, 0x11, + 0x95, 0x80, 0x09, 0x74, 0x02, 0x09, 0x53, 0x80, 0x09, 0x33, 0x04, 0x11, 0x53, 0x0F, 0x11, 0x33, 0x80, 0x11, 0x53, 0x06, 0x11, 0x33, 0x82, 0x09, 0x32, 0x11, 0x33, 0x09, 0x33, 0x07, 0x11, 0x33, 0x02, 0x11, 0x32, 0x82, 0x11, 0x33, 0x11, 0x53, 0x11, 0x32, 0x01, 0x11, 0x33, 0x80, 0x11, 0x53, 0x05, 0x09, 0x33, 0x80, 0x09, 0x53, 0x03, 0x11, 0x53, 0x85, 0x11, 0x74, 0x11, 0x75, 0x09, 0x76, 0x09, 0xB7, 0x09, 0xD8, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x04, 0x01, 0xDA, 0x80, 0x01, 0xDB, 0x04, 0x01, 0xDA, 0x05, 0x01, 0xDB, 0x03, 0x01, 0xDA, 0x02, 0x01, 0xDB, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xDB, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x86, 0x01, 0xD8, 0x11, 0xF8, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x31, 0x19, 0x32, 0x09, 0x33, 0x19, 0xD6, 0x1A, 0x18, 0x11, 0xD7, 0x19, 0xB6, 0x11, 0x33, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, + 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x73, 0x10, 0xF1, 0x19, 0x31, 0x21, 0x30, 0x03, 0x29, 0x30, 0x01, 0x21, 0x10, 0x87, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x11, 0xD7, 0x11, 0xD8, 0x09, 0xB8, 0x02, 0x01, 0xB8, 0x03, 0x01, 0xD9, 0x87, 0x09, 0xD9, 0x09, 0xF8, 0x09, 0xD8, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x32, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x31, 0x01, 0x21, 0x31, 0x83, 0x19, 0x11, 0x10, 0xF1, 0x11, 0x12, 0x11, 0x74, 0x02, 0x22, 0x17, 0x86, 0x19, 0xB6, 0x11, 0x34, 0x11, 0x13, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x19, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x96, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x21, 0xF7, 0x22, 0x18, + 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x13, 0x19, 0xB7, 0x01, 0x19, 0xF9, 0x82, 0x19, 0xB7, 0x08, 0xF2, 0x19, 0x12, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x34, 0x02, 0x21, 0xF7, 0x83, 0x21, 0xB6, 0x11, 0x33, 0x19, 0x12, 0x19, 0x31, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x8F, 0x21, 0x31, 0x21, 0x72, 0x21, 0x52, 0x11, 0x11, 0x09, 0x12, 0x09, 0x33, 0x19, 0xD6, 0x19, 0xF7, + 0x22, 0x17, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x21, 0x51, 0x21, 0x30, 0x02, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x01, 0x11, 0x12, 0x86, 0x19, 0xB5, 0x2A, 0x17, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x19, 0x30, 0x02, 0x19, 0x31, 0x83, 0x19, 0x32, 0x19, 0x33, 0x19, 0x53, 0x19, 0x75, 0x02, 0x21, 0xD6, 0x82, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x52, 0x01, 0x19, 0x32, 0x8E, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x06, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, + 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x8A, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x19, 0xB6, 0x11, 0xB6, 0x01, 0x11, 0x96, 0x01, 0x09, 0x76, 0x80, 0x11, 0xB7, 0x02, 0x11, 0xF8, 0x84, 0x11, 0xD7, 0x09, 0x54, 0x09, 0x12, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x87, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x32, 0x01, 0x19, 0x32, 0x83, 0x11, 0x33, 0x19, 0x54, 0x19, 0xB5, 0x19, 0xF6, 0x01, 0x19, 0xD6, 0x85, 0x19, 0x95, 0x11, 0x54, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x10, 0x02, 0x19, 0x31, 0x84, 0x11, 0x32, 0x11, 0x53, 0x11, 0x94, + 0x19, 0xD6, 0x19, 0xF7, 0x01, 0x19, 0xD7, 0x85, 0x19, 0x96, 0x19, 0x54, 0x19, 0x33, 0x19, 0x12, 0x19, 0x32, 0x21, 0x32, 0x02, 0x19, 0x32, 0x8E, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x29, 0x51, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x87, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x87, 0x19, 0xF7, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x34, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x91, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x21, 0xD7, 0x21, 0xF8, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x34, 0x11, 0x13, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x03, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x29, + 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x8B, 0x21, 0x10, 0x19, 0x10, 0x19, 0x11, 0x19, 0x53, 0x19, 0xD7, 0x12, 0x19, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xFA, 0x05, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x87, 0x01, 0xB8, 0x09, 0xD8, 0x11, 0xF8, 0x11, 0xD7, 0x01, 0x13, 0x09, 0x32, 0x11, 0x32, 0x11, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x10, 0x89, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x11, 0x82, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x01, 0x19, 0x11, 0x82, 0x21, 0x11, 0x21, 0x31, 0x19, 0x11, 0x01, 0x21, 0x31, 0x82, 0x21, 0x10, 0x19, 0x10, 0x21, 0x11, 0x01, 0x21, 0x31, 0x8C, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x02, 0x21, 0x31, 0x02, 0x19, 0x31, 0x86, 0x19, 0x32, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x01, 0x19, 0xD6, 0x80, 0x11, 0x54, 0x01, 0x09, 0x33, 0x84, 0x09, 0x13, 0x09, 0x34, 0x09, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x02, 0x19, 0xF7, 0x80, 0x11, 0xD6, 0x01, 0x11, 0xB6, 0x03, 0x11, 0xB5, 0x83, 0x11, 0x95, 0x11, 0xB5, 0x11, 0xB6, 0x11, 0x95, 0x02, 0x19, 0x95, 0x80, 0x19, 0xB5, 0x02, 0x19, 0x95, 0x87, 0x19, 0xB5, 0x19, 0x95, 0x19, 0xB6, 0x19, 0x95, 0x19, 0xB5, 0x11, 0x95, 0x19, 0x95, 0x19, 0x96, 0x01, + 0x11, 0x95, 0x80, 0x19, 0x96, 0x01, 0x11, 0x95, 0x80, 0x11, 0xB5, 0x01, 0x11, 0x95, 0x81, 0x11, 0xB5, 0x11, 0x95, 0x01, 0x19, 0x95, 0x01, 0x11, 0x95, 0x81, 0x19, 0xB5, 0x19, 0x95, 0x04, 0x19, 0xB5, 0x80, 0x19, 0x95, 0x02, 0x19, 0xB5, 0x80, 0x19, 0x95, 0x02, 0x19, 0xB5, 0x80, 0x11, 0xB5, 0x01, 0x19, 0xB5, 0x04, 0x19, 0xD5, 0x80, 0x19, 0xD6, 0x01, 0x19, 0xD5, 0x8B, 0x19, 0xD6, 0x11, 0xD6, 0x11, 0xD7, 0x09, 0xB7, 0x09, 0xF8, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xFB, 0x02, 0x01, 0xDA, 0x81, 0x01, 0xDB, 0x01, 0xFB, 0x01, 0x01, 0xDB, 0x01, 0x01, 0xDA, 0x8D, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xDB, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xDB, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xDB, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0x01, 0xDB, 0x03, 0x01, 0xDA, 0x02, 0x01, 0xFB, 0x03, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x87, 0x01, 0xF9, 0x09, 0xF9, 0x09, 0xF8, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, + 0x01, 0x21, 0x30, 0x8A, 0x19, 0x31, 0x19, 0x32, 0x09, 0x33, 0x19, 0xF7, 0x1A, 0x18, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xB5, 0x19, 0xB5, 0x19, 0x53, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x11, 0xD7, 0x11, 0xD8, 0x09, 0xB8, 0x01, 0xB8, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0x01, 0xF9, 0x01, 0x09, 0xF9, 0x85, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0x75, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x02, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x87, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x10, 0x04, 0x21, 0x10, 0x01, 0x21, 0x31, 0x8D, 0x11, 0x11, 0x11, 0x12, 0x11, 0x74, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x09, 0x13, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x50, + 0x01, 0x21, 0x30, 0x8C, 0x19, 0x10, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x19, 0x74, 0x19, 0x95, 0x21, 0xF7, 0x21, 0xF8, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8D, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0xB7, 0x1A, 0x19, 0x19, 0xF9, 0x19, 0xB7, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x30, 0x21, 0x50, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x21, 0xD7, 0x01, 0x21, 0xF7, 0x83, 0x19, 0x95, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, + 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x92, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x20, 0xEF, 0x21, 0x10, 0x21, 0x30, 0x29, 0x72, 0x21, 0x72, 0x19, 0x31, 0x10, 0xF1, 0x11, 0x32, 0x11, 0x53, 0x11, 0xB5, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x0F, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x21, 0xD5, 0x2A, 0x37, 0x21, 0xF6, 0x19, 0x94, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x29, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x81, 0x19, 0x53, 0x21, 0xB5, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xB6, 0x19, 0x94, 0x11, 0x12, 0x11, 0x32, 0x01, 0x19, 0x52, 0x81, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x32, 0x89, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF7, 0x19, 0xB7, 0x11, 0x34, 0x19, 0x12, 0x21, 0x11, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, + 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x19, 0x12, 0x81, 0x11, 0x33, 0x11, 0x53, 0x02, 0x11, 0x74, 0x80, 0x11, 0x54, 0x01, 0x09, 0x55, 0x81, 0x09, 0x56, 0x11, 0xB7, 0x01, 0x11, 0xF8, 0x85, 0x19, 0xF8, 0x11, 0xB6, 0x09, 0x54, 0x11, 0x13, 0x10, 0xF1, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x86, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x02, 0x19, 0xF7, 0x85, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x11, 0x11, + 0x19, 0x32, 0x11, 0x33, 0x19, 0x74, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xF6, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x32, 0x02, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xD7, 0x19, 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x8C, 0x19, 0x12, 0x11, 0x33, 0x11, 0x53, 0x11, 0x75, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x51, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x85, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x32, 0x01, 0x19, 0x31, 0x86, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x31, 0x8D, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xD7, 0x21, 0xF8, 0x21, 0xD7, 0x19, 0x96, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, + 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x88, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x19, 0x11, 0x84, 0x19, 0x53, 0x11, 0x75, 0x1A, 0x18, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x07, 0x01, 0xDA, 0x8A, 0x01, 0xD9, 0x01, 0xB9, 0x09, 0xD9, 0x09, 0xF8, 0x1A, 0x18, 0x11, 0xB6, 0x09, 0x33, 0x11, 0x52, 0x11, 0x31, 0x19, 0x51, 0x19, 0x31, 0x0B, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x31, 0x02, 0x21, 0x10, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x88, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x83, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x83, 0x19, 0xD6, 0x19, 0x96, 0x11, 0x55, 0x09, 0x34, 0x01, 0x09, 0x13, 0x83, 0x09, 0x34, 0x09, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x01, 0x19, 0xF7, 0x82, 0x1A, 0x17, 0x19, 0xF7, 0x11, 0xF6, 0x02, 0x19, 0xF6, 0x04, 0x19, 0xF7, 0x01, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x81, 0x21, 0xF6, 0x22, 0x17, 0x04, 0x21, 0xF7, 0x85, 0x22, 0x17, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xF7, + 0x03, 0x21, 0xF7, 0x02, 0x22, 0x17, 0x82, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x04, 0x22, 0x17, 0x80, 0x21, 0xF7, 0x04, 0x22, 0x17, 0x80, 0x21, 0xF6, 0x05, 0x22, 0x17, 0x01, 0x19, 0xF6, 0x80, 0x1A, 0x16, 0x06, 0x19, 0xF6, 0x80, 0x11, 0xD6, 0x01, 0x11, 0xD7, 0x81, 0x09, 0xD7, 0x09, 0xD8, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x80, 0x01, 0xBA, 0x07, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x02, 0x01, 0xDA, 0x8C, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xDB, 0x01, 0xDA, 0x01, 0xFB, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x04, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x88, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xD9, 0x09, 0xF9, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x75, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x88, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD7, 0x1A, 0x18, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, + 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x73, 0x11, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x11, 0x33, 0x11, 0x75, 0x11, 0xB7, 0x09, 0xD8, 0x01, 0x01, 0xB9, 0x80, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x86, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xF9, 0x11, 0xD8, 0x11, 0x95, 0x11, 0x12, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x06, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x11, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x21, 0xD6, 0x21, 0xF7, 0x22, 0x18, 0x19, 0xB6, 0x09, 0x14, 0x08, 0xF3, 0x01, 0x11, 0x12, 0x81, 0x19, 0x52, 0x19, 0x31, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8B, 0x19, 0x32, 0x11, 0x12, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xD7, 0x22, 0x18, 0x21, 0xD7, + 0x19, 0xB6, 0x11, 0x34, 0x11, 0x13, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x11, 0x10, 0xF2, 0x19, 0xB7, 0x19, 0xF8, 0x19, 0xF9, 0x19, 0xB7, 0x10, 0xF2, 0x19, 0x31, 0x19, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x8C, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x11, 0x55, 0x21, 0xF7, 0x21, 0xD7, 0x21, 0xF7, 0x19, 0x95, 0x19, 0x33, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x98, 0x21, 0x0F, 0x21, 0x30, + 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x20, 0xEF, 0x21, 0x10, 0x29, 0x51, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x11, 0x31, 0x09, 0x32, 0x11, 0x94, 0x11, 0xB5, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x19, 0x11, 0x19, 0x52, 0x11, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0xB5, 0x11, 0x12, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0x74, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x52, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x8A, 0x19, 0x52, 0x11, 0x53, 0x09, 0x54, 0x19, 0xB6, 0x11, 0xD7, 0x22, 0x18, 0x19, 0xB7, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, + 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x04, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x05, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x01, 0x19, 0x11, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x81, 0x19, 0x53, 0x11, 0x53, 0x01, 0x11, 0x54, 0x8C, 0x11, 0x55, 0x09, 0x35, 0x09, 0x75, 0x11, 0xB7, 0x19, 0xF8, 0x1A, 0x18, 0x1A, 0x17, 0x11, 0xD6, 0x09, 0x54, 0x09, 0x12, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x86, 0x21, 0x31, 0x21, 0x11, 0x19, 0x31, 0x11, 0x12, 0x11, 0x53, 0x11, 0x54, 0x11, 0x95, 0x01, 0x19, 0xF7, 0x86, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x8B, 0x10, 0xF2, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, + 0x11, 0x12, 0x01, 0x19, 0x32, 0x86, 0x19, 0x31, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x12, 0x02, 0x19, 0x32, 0x88, 0x11, 0x12, 0x11, 0x54, 0x11, 0x95, 0x19, 0xF6, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x55, 0x11, 0x33, 0x01, 0x11, 0x12, 0x80, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x8A, 0x29, 0x30, 0x29, 0x2F, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x19, 0x11, 0x02, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x91, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0x96, 0x21, 0xF7, 0x21, 0xF8, 0x19, 0xD7, 0x19, 0xB6, 0x09, 0x33, 0x11, 0x33, 0x19, 0x52, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x06, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, + 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x19, 0x53, 0x11, 0x34, 0x19, 0xB7, 0x11, 0xD8, 0x02, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x88, 0x09, 0xD9, 0x11, 0xF9, 0x09, 0xD8, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x53, 0x11, 0x52, 0x19, 0x52, 0x19, 0x51, 0x01, 0x21, 0x51, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x08, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0B, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xB7, 0x19, 0xD7, 0x11, 0x96, 0x01, 0x11, 0x54, 0x87, 0x09, 0x13, 0x11, 0x34, 0x09, 0x33, 0x11, 0x54, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB5, 0x11, 0xD6, 0x01, 0x19, 0xF6, 0x01, 0x1A, 0x17, 0x02, 0x19, 0xF6, 0x02, 0x19, 0xD6, 0x80, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x80, 0x19, 0xB6, 0x0F, 0x19, 0xD6, 0x80, 0x19, 0xB6, 0x07, 0x19, 0xD6, 0x81, 0x21, 0xD6, 0x19, 0xD6, 0x01, 0x21, 0xD6, 0x81, 0x19, 0xD6, 0x21, 0xF6, 0x04, 0x19, 0xD6, 0x80, 0x19, + 0xF6, 0x03, 0x19, 0xD6, 0x85, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xD5, 0x11, 0xB5, 0x19, 0xD5, 0x19, 0xD6, 0x02, 0x19, 0xF6, 0x01, 0x11, 0xD6, 0x86, 0x19, 0xF7, 0x11, 0xD7, 0x09, 0xB7, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x80, 0x01, 0xBA, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x84, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xFB, 0x01, 0xDA, 0x03, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x80, 0x02, 0x1B, 0x02, 0x01, 0xFA, 0x81, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x86, 0x19, 0xF8, 0x11, 0x75, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x19, 0x11, 0x11, 0x11, 0x09, 0x33, 0x19, 0xD6, 0x19, 0xF8, 0x19, 0xF7, 0x11, 0x96, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x8B, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, + 0x19, 0xF6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x19, 0x74, 0x11, 0x12, 0x01, 0x21, 0x31, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0xB5, 0x1A, 0x18, 0x09, 0xF9, 0x09, 0xD9, 0x02, 0x01, 0xB9, 0x03, 0x01, 0xDA, 0x89, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xF9, 0x11, 0xF8, 0x19, 0xB6, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x0F, 0x07, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8E, 0x21, 0x11, 0x19, 0x31, 0x19, 0x12, 0x11, 0x12, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xF7, 0x21, 0xD7, 0x11, 0x34, 0x08, 0xF3, 0x10, 0xF2, 0x11, 0x32, 0x19, 0x31, 0x19, 0x51, 0x21, 0x31, 0x02, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x01, 0x19, 0x52, 0x8C, 0x11, 0x13, 0x11, 0x54, 0x19, 0x95, 0x21, 0xD7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x13, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x51, 0x02, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, + 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x11, 0x13, 0x19, 0xD7, 0x01, 0x1A, 0x19, 0x83, 0x19, 0xB7, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x83, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x34, 0x02, 0x21, 0xD7, 0x83, 0x21, 0xD6, 0x19, 0x54, 0x19, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x85, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x10, 0x21, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x20, 0xF0, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x09, 0x54, 0x19, 0xB6, 0x22, 0x38, 0x21, 0xF7, 0x19, 0x94, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x86, 0x11, 0x12, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xF6, + 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x01, 0x19, 0x31, 0x87, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x04, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x20, 0xEF, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x11, 0x12, 0x80, 0x11, 0x54, 0x02, 0x19, 0xB6, 0x84, 0x11, 0x74, 0x11, 0x32, 0x19, 0x52, 0x19, 0x32, 0x19, 0x52, 0x02, 0x19, 0x31, 0x8A, 0x19, 0x32, 0x11, 0x53, 0x09, 0x33, 0x11, 0x96, 0x19, 0xD7, 0x19, 0xF8, 0x19, 0xB7, 0x11, 0x54, 0x11, 0x12, 0x19, 0x31, 0x21, 0x11, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x06, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x05, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, + 0x10, 0x21, 0x11, 0x01, 0x19, 0x11, 0x03, 0x19, 0x32, 0x86, 0x19, 0x53, 0x11, 0x53, 0x19, 0x74, 0x11, 0x54, 0x09, 0x54, 0x09, 0x75, 0x11, 0xD7, 0x01, 0x1A, 0x18, 0x85, 0x1A, 0x17, 0x11, 0xB6, 0x11, 0x33, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x07, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x51, 0x01, 0x19, 0x32, 0x8A, 0x11, 0x32, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xF7, 0x19, 0x95, 0x11, 0x34, 0x08, 0xF2, 0x11, 0x12, 0x19, 0x52, 0x01, 0x21, 0x51, 0x09, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x31, 0x8C, 0x21, 0x32, 0x19, 0x32, 0x11, 0x12, 0x11, 0x13, 0x11, 0x34, 0x11, 0x54, 0x19, 0x96, 0x19, 0xD7, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x74, 0x11, 0x32, 0x01, 0x11, 0x11, 0x01, 0x19, 0x32, 0x82, 0x19, 0x52, 0x19, 0x32, 0x19, 0x53, 0x01, 0x11, 0x74, 0x88, 0x11, 0xB6, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x53, 0x11, 0x32, 0x19, 0x12, 0x02, 0x19, 0x32, 0x84, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x85, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x34, 0x11, 0x13, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, + 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x31, 0x02, 0x21, 0x31, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x31, 0x21, 0x30, 0x01, 0x19, 0x11, 0x83, 0x11, 0x12, 0x11, 0x33, 0x19, 0x75, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x86, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x06, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x09, 0x12, 0x11, 0x75, 0x19, 0xF8, 0x11, 0xD8, 0x09, 0xD8, 0x02, 0x09, 0xD9, 0x8F, 0x09, 0xFA, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xDA, 0x01, 0xD9, 0x09, 0xD9, 0x01, 0xD9, 0x09, 0xD8, 0x09, 0xB7, + 0x11, 0xB7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x32, 0x19, 0x52, 0x19, 0x51, 0x21, 0x51, 0x01, 0x21, 0x50, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x87, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x84, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8F, 0x19, 0x10, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x19, 0x96, 0x19, 0xD7, 0x19, 0xB7, 0x19, 0xD7, 0x19, 0x96, 0x11, 0x55, 0x09, 0x34, 0x09, 0x33, 0x09, 0x13, 0x11, 0x34, 0x01, 0x11, 0x54, 0x83, 0x11, 0x74, 0x11, 0x94, 0x11, 0xB5, 0x11, 0x94, 0x03, 0x11, 0xB5, 0x83, 0x11, 0x95, 0x11, 0x74, 0x19, 0x95, 0x11, 0x94, 0x01, 0x19, 0x95, 0x80, 0x11, 0x94, 0x06, 0x19, 0x95, 0x81, 0x11, 0x75, 0x11, 0x94, 0x01, 0x19, 0x95, 0x82, 0x11, 0x75, 0x11, 0x95, 0x19, 0x95, 0x01, 0x11, 0x95, 0x01, 0x19, 0x95, 0x01, 0x11, 0x94, 0x01, 0x11, 0x74, 0x83, 0x11, 0x94, 0x19, 0x95, 0x11, 0x74, 0x19, 0x74, 0x02, 0x11, 0x74, 0x80, 0x11, 0x94, 0x01, 0x11, 0x74, 0x01, 0x11, 0x95, 0x81, 0x11, 0x74, 0x11, 0x94, 0x01, 0x19, 0x95, 0x02, 0x11, 0x94, 0x02, 0x19, 0x94, 0x81, 0x11, 0x94, 0x19, 0xB4, 0x01, 0x19, 0x95, 0x81, 0x19, 0xB5, 0x11, 0x94, 0x03, 0x11, 0xB5, 0x84, 0x11, 0xB6, 0x09, + 0xB6, 0x09, 0xB7, 0x0A, 0x19, 0x01, 0xF9, 0x02, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x08, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x06, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x03, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x87, 0x01, 0xFA, 0x01, 0xD9, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0x75, 0x11, 0x12, 0x19, 0x32, 0x21, 0x51, 0x02, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x21, 0x10, 0x91, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0xB6, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x33, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x51, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x53, 0x10, 0xF1, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x95, 0x1A, 0x38, 0x09, 0xF8, 0x01, 0xD9, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xB9, + 0x01, 0x01, 0xDA, 0x86, 0x09, 0xD9, 0x11, 0xF9, 0x19, 0xF8, 0x11, 0x75, 0x11, 0x12, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x92, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x19, 0x32, 0x11, 0x11, 0x11, 0x33, 0x21, 0xF6, 0x22, 0x17, 0x2A, 0x18, 0x11, 0x55, 0x08, 0xF3, 0x10, 0xF2, 0x11, 0x12, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x50, 0x29, 0x2F, 0x29, 0x50, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x19, 0x30, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x11, 0x53, 0x11, 0x33, 0x19, 0x95, 0x01, 0x21, 0xF7, 0x87, 0x21, 0xF8, 0x19, 0x96, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x86, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8B, 0x29, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF9, 0x19, 0xB7, 0x09, 0x12, 0x19, 0x31, 0x21, 0x51, 0x01, + 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8D, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x75, 0x19, 0xB7, 0x19, 0xD7, 0x21, 0xD7, 0x19, 0x96, 0x11, 0x33, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x90, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x19, 0x31, 0x01, 0x11, 0x32, 0x83, 0x19, 0xB5, 0x2A, 0x17, 0x21, 0xF6, 0x19, 0x94, 0x01, 0x11, 0x12, 0x82, 0x19, 0x31, 0x21, 0x31, 0x21, + 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x85, 0x29, 0x10, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x8D, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x52, 0x19, 0x52, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x89, 0x19, 0x52, 0x09, 0x13, 0x11, 0x75, 0x19, 0xF7, 0x19, 0xD8, 0x19, 0xD7, 0x11, 0x55, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x03, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x08, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x03, + 0x19, 0x11, 0x82, 0x19, 0x32, 0x19, 0x52, 0x19, 0x53, 0x01, 0x11, 0x33, 0x82, 0x09, 0x33, 0x09, 0x54, 0x19, 0xF7, 0x01, 0x1A, 0x17, 0x8A, 0x22, 0x17, 0x11, 0x95, 0x11, 0x54, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x50, 0x29, 0x30, 0x07, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x85, 0x11, 0x95, 0x11, 0x54, 0x09, 0x12, 0x11, 0x32, 0x19, 0x52, 0x19, 0x51, 0x01, 0x19, 0x30, 0x80, 0x19, 0x51, 0x02, 0x19, 0x30, 0x82, 0x19, 0x10, 0x21, 0x30, 0x19, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x11, 0x02, 0x21, 0x11, 0x02, 0x21, 0x31, 0x83, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x19, 0x12, 0x01, 0x11, 0x12, 0x83, 0x11, 0x33, 0x11, 0x34, 0x11, 0x75, 0x19, 0xB6, 0x01, 0x19, 0xF7, 0x8D, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x74, 0x11, 0xB6, 0x01, 0x19, 0xF7, 0x85, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x03, 0x19, 0x32, 0x01, 0x11, 0x33, 0x81, 0x11, 0x75, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x89, 0x19, 0xD6, 0x11, 0x54, 0x09, 0x33, 0x11, 0x33, 0x11, + 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x09, 0xD8, 0x01, 0x11, 0xF8, 0x8A, 0x11, 0x96, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8C, 0x19, 0x31, 0x19, 0x53, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x1A, 0x17, 0x22, 0x38, 0x11, 0xB6, 0x09, 0x33, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x88, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, + 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x19, 0x11, 0x88, 0x10, 0xF1, 0x09, 0x33, 0x19, 0xF7, 0x11, 0xF7, 0x09, 0xB7, 0x09, 0xD8, 0x09, 0xB8, 0x11, 0xF9, 0x09, 0xB9, 0x01, 0x09, 0xD9, 0x80, 0x09, 0xB9, 0x01, 0x09, 0xB8, 0x80, 0x09, 0xF8, 0x01, 0x11, 0xF8, 0x85, 0x19, 0xD7, 0x09, 0x54, 0x11, 0x33, 0x19, 0x52, 0x19, 0x51, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x84, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0x96, 0x19, 0xB7, 0x01, 0x19, 0xD7, 0x83, 0x11, 0x75, 0x11, 0x55, 0x09, 0x34, 0x09, 0x33, 0x01, 0x11, 0x33, 0x03, 0x11, 0x53, 0x03, 0x09, 0x53, 0x80, 0x11, 0x53, 0x04, 0x11, 0x33, 0x80, 0x11, 0x53, 0x03, 0x11, 0x33, 0x81, 0x11, 0x53, 0x11, 0x33, 0x05, 0x11, 0x53, 0x80, 0x11, 0x33, 0x01, 0x11, 0x53, 0x81, 0x11, 0x33, 0x11, 0x53, 0x01, 0x11, 0x33, 0x03, 0x11, 0x53, 0x81, 0x11, 0x32, 0x11, 0x53, 0x07, 0x11, 0x33, 0x80, 0x11, 0x53, 0x09, 0x11, 0x33, 0x03, 0x11, 0x32, + 0x01, 0x11, 0x33, 0x03, 0x11, 0x53, 0x85, 0x11, 0x54, 0x09, 0x54, 0x09, 0x75, 0x01, 0x76, 0x09, 0xD8, 0x09, 0xD9, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x04, 0x01, 0xDA, 0x03, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x08, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x81, 0x01, 0xDA, 0x01, 0xFB, 0x02, 0x01, 0xDA, 0x03, 0x01, 0xFA, 0x87, 0x01, 0xDA, 0x01, 0xD9, 0x09, 0xF9, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0x75, 0x10, 0xF2, 0x19, 0x12, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x89, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x33, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x84, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xB5, 0x19, 0x95, 0x19, 0x53, 0x11, 0x11, 0x19, 0x11, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x88, 0x21, 0x30, 0x29, 0x31, 0x21, 0x31, 0x19, 0x11, 0x19, 0x33, + 0x11, 0x74, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xD9, 0x02, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x88, 0x09, 0xF9, 0x12, 0x19, 0x19, 0xF8, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x88, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8E, 0x21, 0x10, 0x21, 0x31, 0x21, 0x52, 0x19, 0x11, 0x08, 0xD1, 0x19, 0x54, 0x2A, 0x17, 0x22, 0x17, 0x21, 0xD7, 0x08, 0xF3, 0x08, 0xD2, 0x19, 0x53, 0x21, 0x52, 0x19, 0x11, 0x19, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x19, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x10, 0x19, 0x30, 0x19, 0x51, 0x19, 0x32, 0x01, 0x11, 0x33, 0x85, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x96, 0x11, 0x34, 0x01, 0x11, 0x12, 0x83, 0x19, 0x32, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x89, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x13, 0x19, 0xD7, 0x1A, + 0x18, 0x1A, 0x19, 0x19, 0xB6, 0x11, 0x12, 0x19, 0x31, 0x03, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x8F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x21, 0xF8, 0x21, 0xD7, 0x19, 0x74, 0x11, 0x32, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x91, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF6, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x2A, 0x37, 0x21, 0xF6, 0x19, 0xB5, 0x11, 0x12, 0x19, 0x32, 0x19, + 0x31, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x06, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x88, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x19, 0x75, 0x01, 0x19, 0xB6, 0x8C, 0x22, 0x17, 0x19, 0x74, 0x11, 0x52, 0x19, 0x51, 0x19, 0x11, 0x19, 0x10, 0x19, 0x31, 0x21, 0x51, 0x19, 0x31, 0x11, 0x32, 0x11, 0x13, 0x11, 0x54, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x82, 0x11, 0x75, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x04, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x19, 0x10, 0x19, 0x11, 0x19, 0x31, 0x03, 0x19, 0x32, 0x8C, 0x11, 0x32, 0x09, 0x12, 0x09, 0x33, 0x11, 0xB5, 0x1A, 0x17, 0x22, 0x38, 0x22, 0x17, + 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x29, 0x31, 0x02, 0x21, 0x31, 0x85, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x81, 0x19, 0xB6, 0x11, 0x54, 0x01, 0x09, 0x12, 0x84, 0x11, 0x11, 0x11, 0x31, 0x11, 0x11, 0x11, 0x31, 0x11, 0x11, 0x06, 0x19, 0x31, 0x07, 0x19, 0x11, 0x01, 0x10, 0xF1, 0x95, 0x10, 0xF2, 0x09, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xB6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x19, 0x52, 0x19, 0x12, 0x11, 0x12, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x73, 0x11, 0x53, 0x11, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x52, 0x8D, 0x19, 0x33, 0x11, 0x33, 0x11, 0x53, 0x11, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x22, 0x18, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, + 0x8B, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xF8, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x52, 0x01, 0x19, 0x32, 0x8A, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x22, 0x18, 0x1A, 0x17, 0x22, 0x18, 0x11, 0x95, 0x09, 0x33, 0x11, 0x53, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x08, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x06, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x11, 0x88, 0x09, 0x12, 0x11, 0xB5, 0x19, 0xF6, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0xB8, 0x09, 0xB8, 0x09, 0x98, 0x01, 0x09, 0xB8, 0x01, 0x09, 0xB7, 0x8A, 0x11, 0xD7, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, + 0x0F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x02, 0x19, 0xB7, 0x82, 0x19, 0x96, 0x11, 0x54, 0x11, 0x34, 0x01, 0x11, 0x33, 0x82, 0x11, 0x53, 0x11, 0x32, 0x11, 0x53, 0x1F, 0x11, 0x32, 0x80, 0x11, 0x52, 0x0E, 0x11, 0x32, 0x80, 0x11, 0x12, 0x04, 0x11, 0x32, 0x01, 0x11, 0x12, 0x84, 0x19, 0x32, 0x11, 0x32, 0x11, 0x11, 0x11, 0x12, 0x19, 0x32, 0x04, 0x11, 0x32, 0x01, 0x11, 0x33, 0x86, 0x09, 0x34, 0x01, 0x75, 0x09, 0xF8, 0x01, 0xD8, 0x01, 0xF9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x03, 0x01, 0xFA, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x07, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x0A, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x8A, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xF9, 0x0A, 0x19, 0x11, 0xF8, 0x11, 0x75, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, + 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x11, 0xF7, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x8B, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x73, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x19, 0x11, 0x19, 0x32, 0x11, 0x54, 0x11, 0xB6, 0x11, 0xF8, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x89, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xD9, 0x09, 0xF9, 0x12, 0x19, 0x11, 0xB6, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x85, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x88, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x29, + 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x21, 0x51, 0x19, 0x11, 0x08, 0xD1, 0x19, 0x74, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0xD6, 0x08, 0xD3, 0x08, 0xD2, 0x21, 0x53, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x85, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x21, 0xD7, 0x01, 0x21, 0xF7, 0x83, 0x19, 0x96, 0x19, 0x54, 0x11, 0x13, 0x19, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x12, 0x11, 0x13, 0x19, 0xD7, 0x01, 0x1A, 0x19, 0x83, 0x19, 0xD7, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x88, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x86, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x0F, + 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xD7, 0x19, 0x75, 0x19, 0x53, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x89, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8A, 0x11, 0x12, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x38, 0x19, 0xF6, 0x11, 0x53, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x19, 0x11, 0x01, 0x11, 0x32, 0x8B, 0x19, 0xB5, 0x2A, 0x37, 0x21, 0xF6, 0x19, 0xB5, 0x11, 0x12, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x10, 0x89, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x10, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, + 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x31, 0x82, 0x19, 0x32, 0x11, 0x13, 0x11, 0x54, 0x01, 0x19, 0xB6, 0x82, 0x21, 0xF6, 0x19, 0x94, 0x11, 0x11, 0x03, 0x19, 0x31, 0x85, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x85, 0x11, 0x75, 0x11, 0x12, 0x19, 0x11, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x11, 0x81, 0x19, 0x11, 0x19, 0x32, 0x02, 0x11, 0x12, 0x89, 0x11, 0x33, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x37, 0x22, 0x17, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, + 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xD7, 0x11, 0x54, 0x09, 0x33, 0x04, 0x09, 0x32, 0x01, 0x11, 0x32, 0x01, 0x11, 0x52, 0x03, 0x11, 0x32, 0x81, 0x11, 0x12, 0x11, 0x32, 0x04, 0x11, 0x12, 0x85, 0x11, 0x33, 0x09, 0x33, 0x11, 0x53, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x02, 0x19, 0xF7, 0x88, 0x19, 0xD7, 0x11, 0x95, 0x19, 0x94, 0x11, 0x53, 0x11, 0x12, 0x11, 0x31, 0x19, 0x32, 0x19, 0x52, 0x19, 0x32, 0x01, 0x11, 0x12, 0x83, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xF7, 0x01, 0x1A, 0x17, 0x81, 0x19, 0xB5, 0x11, 0x74, 0x01, 0x11, 0x32, 0x82, 0x19, 0x32, 0x19, 0x11, 0x19, 0x32, 0x01, 0x19, 0x53, 0x84, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD7, 0x22, 0x18, 0x01, 0x21, 0xF7, 0x86, 0x11, 0x74, 0x11, 0x13, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x09, 0xB8, 0x09, 0xB7, 0x01, 0x09, 0xD8, 0x01, 0x11, 0xF8, 0x86, 0x11, 0xD8, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x19, 0x33, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x10, 0x92, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x19, 0x10, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, + 0x21, 0xF7, 0x11, 0x75, 0x09, 0x33, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x51, 0x11, 0x32, 0x11, 0x53, 0x19, 0x94, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x01, 0x11, 0xD7, 0x01, 0x19, 0xF7, 0x89, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x74, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x06, 0x21, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x20, 0xEF, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x86, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, + 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x12, 0x11, 0x13, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB7, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x54, 0x09, 0x33, 0x11, 0x33, 0x09, 0x12, 0x03, 0x11, 0x32, 0x80, 0x11, 0x52, 0x01, 0x19, 0x52, 0x01, 0x19, 0x32, 0x81, 0x19, 0x31, 0x19, 0x11, 0x02, 0x19, 0x32, 0x80, 0x19, 0x12, 0x07, 0x19, 0x32, 0x02, 0x19, 0x31, 0x02, 0x11, 0x31, 0x04, 0x19, 0x31, 0x81, 0x19, 0x52, 0x11, 0x31, 0x03, 0x19, 0x31, 0x80, 0x11, 0x31, 0x01, 0x19, 0x31, 0x85, 0x11, 0x11, 0x11, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x52, 0x06, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x21, 0x52, 0x02, 0x19, 0x32, 0x01, 0x19, 0x31, 0x87, 0x19, 0x52, 0x19, 0x32, 0x19, 0x52, 0x11, 0x32, 0x11, 0x13, 0x09, 0x13, 0x01, 0x55, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x84, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xFA, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x06, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x81, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x86, 0x01, 0xF9, 0x01, 0xD9, 0x09, 0xF8, 0x11, 0xD8, 0x11, 0x75, 0x11, 0x33, 0x21, 0x52, 0x01, 0x21, + 0x31, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x8E, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x95, 0x11, 0x33, 0x19, 0x12, 0x21, 0x32, 0x21, 0x31, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8D, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x88, 0x21, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x54, 0x11, 0x96, 0x11, 0xF8, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0xD9, 0x02, 0x01, 0xB9, 0x88, 0x01, 0xDA, 0x09, 0xFA, 0x0A, 0x1A, 0x12, 0x19, 0x1A, 0x18, 0x11, 0x75, 0x11, 0x32, 0x19, 0x32, 0x21, 0x31, 0x03, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, + 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8C, 0x19, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x08, 0xF1, 0x19, 0x94, 0x21, 0xF6, 0x21, 0xF7, 0x19, 0xB6, 0x08, 0xD2, 0x11, 0x12, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x19, 0x31, 0x87, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x21, 0xD7, 0x21, 0xF7, 0x21, 0xD7, 0x19, 0xB6, 0x11, 0x54, 0x01, 0x11, 0x12, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x8B, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x19, 0x11, 0x11, 0x13, 0x19, 0xD7, 0x1A, 0x18, 0x1A, 0x19, 0x19, 0xD7, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, + 0x29, 0x30, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x8E, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x11, 0x54, 0x11, 0x13, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x86, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x03, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8D, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB6, 0x2A, 0x38, 0x21, 0xF6, 0x11, 0x54, 0x08, 0xF1, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x01, 0x19, 0x31, 0x85, 0x19, 0x32, 0x11, 0x32, 0x19, 0xB5, 0x2A, 0x37, 0x22, 0x17, 0x19, 0x94, 0x01, 0x11, 0x12, 0x81, 0x21, 0x52, 0x21, 0x51, 0x03, 0x21, 0x30, 0x02, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x06, 0x21, 0x10, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x20, 0xEF, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x07, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x21, + 0x0F, 0x01, 0x29, 0x2F, 0x8C, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x19, 0x32, 0x11, 0x13, 0x11, 0x34, 0x19, 0x96, 0x21, 0xD7, 0x21, 0xD6, 0x19, 0x74, 0x10, 0xF1, 0x19, 0x11, 0x01, 0x19, 0x31, 0x8C, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x11, 0x12, 0x11, 0x54, 0x19, 0xF7, 0x1A, 0x18, 0x22, 0x18, 0x11, 0x96, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x10, 0x84, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x90, 0x21, 0x10, 0x21, 0x31, 0x21, 0x51, 0x21, 0x52, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x22, 0x17, 0x2A, 0x38, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x53, 0x08, 0xF2, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x08, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, + 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x31, 0x02, 0x21, 0x31, 0x8E, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xD7, 0x22, 0x17, 0x22, 0x18, 0x19, 0xD6, 0x11, 0xB6, 0x11, 0xB5, 0x11, 0xD6, 0x11, 0xD5, 0x11, 0xD6, 0x01, 0x11, 0xB5, 0x80, 0x11, 0xD6, 0x02, 0x11, 0xB5, 0x01, 0x11, 0xB6, 0x80, 0x11, 0xB5, 0x01, 0x11, 0xB6, 0x83, 0x19, 0xD6, 0x11, 0xB6, 0x19, 0xD6, 0x19, 0xF6, 0x01, 0x19, 0xD6, 0x82, 0x19, 0xF6, 0x19, 0xD6, 0x22, 0x17, 0x01, 0x1A, 0x17, 0x84, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x95, 0x11, 0x54, 0x11, 0x32, 0x01, 0x11, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x52, 0x81, 0x19, 0x32, 0x11, 0x33, 0x01, 0x11, 0x54, 0x86, 0x11, 0x96, 0x19, 0xD7, 0x1A, 0x18, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x01, 0x19, 0x32, 0x86, 0x11, 0x11, 0x19, 0x11, 0x11, 0x12, 0x19, 0x32, 0x19, 0x53, 0x19, 0x74, 0x11, 0x95, 0x02, 0x19, 0xF7, 0x86, 0x21, 0xF7, 0x11, 0x75, 0x09, 0x12, 0x10, 0xF2, 0x19, 0x31, 0x19, 0x51, 0x19, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x29, 0x50, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x09, 0x97, 0x82, 0x09, 0xB7, 0x09, 0xD8, 0x11, 0xD8, 0x01, 0x11, 0xF8, 0x88, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x19, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x11, + 0x02, 0x21, 0x30, 0x80, 0x29, 0x51, 0x01, 0x21, 0x30, 0x01, 0x19, 0x10, 0x88, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x19, 0xD6, 0x22, 0x18, 0x21, 0xF7, 0x11, 0x75, 0x01, 0x11, 0x33, 0x80, 0x19, 0x32, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x30, 0x88, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x01, 0x11, 0x32, 0x84, 0x11, 0x53, 0x11, 0x74, 0x11, 0x75, 0x19, 0xB6, 0x19, 0xF6, 0x01, 0x19, 0xD6, 0x85, 0x19, 0x95, 0x19, 0xB5, 0x19, 0x74, 0x11, 0x53, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x81, 0x19, 0x10, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, + 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x8D, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x13, 0x11, 0x54, 0x19, 0x96, 0x19, 0xD7, 0x22, 0x18, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x54, 0x09, 0x33, 0x09, 0x32, 0x01, 0x11, 0x32, 0x81, 0x11, 0x52, 0x11, 0x32, 0x01, 0x19, 0x32, 0x81, 0x19, 0x31, 0x19, 0x52, 0x02, 0x19, 0x31, 0x04, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x1D, 0x19, 0x31, 0x80, 0x19, 0x52, 0x01, 0x19, 0x32, 0x82, 0x19, 0x52, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x52, 0x80, 0x19, 0x32, 0x02, 0x19, 0x31, 0x80, 0x21, 0x32, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x85, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x09, 0x55, 0x09, 0xB7, 0x09, 0xD8, 0x02, 0x01, 0xD9, 0x81, 0x01, 0xDA, 0x01, 0xD9, 0x07, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x0D, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x0A, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xF9, 0x90, 0x09, 0xF9, 0x11, 0xD8, 0x11, 0x95, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, + 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x21, 0x10, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x11, 0xD6, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x13, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x8A, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x89, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x19, 0x52, 0x11, 0x53, 0x11, 0x75, 0x11, 0xB7, 0x1A, 0x19, 0x11, 0xF9, 0x09, 0xB8, 0x02, 0x01, 0xB9, 0x01, 0x09, 0xD9, 0x01, 0x12, 0x19, 0x84, 0x11, 0xD7, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x87, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x08, 0xF1, 0x19, + 0x94, 0x21, 0xF6, 0x21, 0xF7, 0x19, 0x95, 0x08, 0xF3, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x09, 0x33, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x86, 0x19, 0x96, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x19, 0x32, 0x11, 0x13, 0x11, 0xB7, 0x01, 0x1A, 0x19, 0x83, 0x19, 0xD7, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x86, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x88, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x86, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x21, 0xF7, 0x01, 0x22, 0x17, 0x85, 0x19, 0x75, 0x11, 0x33, 0x11, + 0x32, 0x19, 0x52, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x82, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x85, 0x11, 0x74, 0x09, 0x12, 0x11, 0x32, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x11, 0x32, 0x83, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xF6, 0x19, 0x95, 0x01, 0x11, 0x12, 0x85, 0x21, 0x52, 0x21, 0x51, 0x21, 0x30, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x06, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x96, 0x01, 0x21, 0xD6, 0x84, 0x19, 0x94, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, + 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x88, 0x11, 0x12, 0x09, 0x33, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x04, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x88, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x11, 0x91, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF7, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x21, 0x31, 0x21, 0x11, 0x21, 0x30, 0x21, 0x31, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x03, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x11, 0x19, 0x11, 0x01, 0x19, 0x32, 0x84, 0x19, 0x53, 0x19, 0x74, 0x19, 0x95, 0x19, 0xB6, 0x19, 0xD7, 0x01, 0x22, 0x18, 0x01, 0x1A, 0x38, 0x81, 0x1A, 0x17, 0x1A, 0x38, 0x03, 0x1A, 0x17, 0x01, 0x1A, + 0x38, 0x01, 0x1A, 0x18, 0x82, 0x22, 0x38, 0x1A, 0x18, 0x1A, 0x38, 0x01, 0x1A, 0x18, 0x81, 0x19, 0xF7, 0x1A, 0x18, 0x01, 0x19, 0xF7, 0x80, 0x11, 0xF7, 0x02, 0x19, 0xF7, 0x01, 0x19, 0xF6, 0x83, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x74, 0x11, 0x53, 0x01, 0x11, 0x11, 0x8C, 0x19, 0x31, 0x21, 0x51, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD7, 0x1A, 0x18, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x94, 0x01, 0x11, 0x32, 0x01, 0x19, 0x32, 0x8F, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xD7, 0x11, 0x75, 0x09, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x86, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x09, 0x55, 0x09, 0x75, 0x09, 0x76, 0x09, 0xB7, 0x11, 0xD8, 0x02, 0x11, 0xF8, 0x86, 0x11, 0xB7, 0x11, 0xB6, 0x09, 0x55, 0x11, 0x54, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x51, 0x19, 0x31, 0x01, 0x11, 0x32, 0x8D, 0x19, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x11, 0x95, 0x11, 0x34, 0x11, 0x33, 0x19, 0x32, 0x21, 0x32, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x21, + 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x83, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x01, 0x11, 0x32, 0x01, 0x11, 0x33, 0x82, 0x11, 0x53, 0x11, 0x33, 0x11, 0x13, 0x01, 0x11, 0x12, 0x80, 0x11, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x87, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x06, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x86, 0x29, 0x2F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x53, 0x11, + 0x54, 0x01, 0x19, 0xB6, 0x01, 0x11, 0xB6, 0x88, 0x11, 0x95, 0x11, 0x74, 0x11, 0x53, 0x09, 0x33, 0x11, 0x53, 0x11, 0x52, 0x11, 0x32, 0x19, 0x32, 0x11, 0x31, 0x04, 0x19, 0x31, 0x02, 0x19, 0x32, 0x82, 0x21, 0x32, 0x19, 0x32, 0x19, 0x11, 0x02, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x11, 0x19, 0x31, 0x80, 0x19, 0x52, 0x07, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x32, 0x06, 0x19, 0x11, 0x01, 0x21, 0x32, 0x8E, 0x21, 0x11, 0x19, 0x11, 0x21, 0x31, 0x19, 0x32, 0x21, 0x52, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x09, 0x34, 0x09, 0x55, 0x09, 0xD7, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0x01, 0xFA, 0x08, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x04, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x06, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x04, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x8B, 0x01, 0xFA, 0x01, 0xF9, 0x01, 0xD9, 0x09, 0xD8, 0x11, 0xD7, 0x11, 0x75, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, + 0x29, 0x10, 0x04, 0x21, 0x10, 0x88, 0x21, 0x31, 0x19, 0x12, 0x11, 0x33, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x96, 0x09, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x93, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x01, 0x21, 0x31, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x87, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xB8, 0x09, 0xB8, 0x04, 0x09, 0xD9, 0x85, 0x11, 0xF9, 0x19, 0xF8, 0x11, 0x75, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x0B, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x8E, 0x19, 0x10, 0x21, 0x31, 0x21, 0x51, 0x19, 0x32, 0x08, 0xF1, 0x19, 0xB5, 0x21, 0xF6, 0x21, 0xF7, 0x19, 0xB5, 0x09, 0x13, 0x11, 0x12, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x50, 0x02, 0x21, 0x2F, 0x85, 0x21, 0x10, 0x19, 0x30, 0x19, 0x51, 0x11, 0x52, 0x11, 0x53, 0x19, 0x95, 0x01, 0x21, 0xF7, 0x85, + 0x19, 0x96, 0x11, 0x34, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x11, 0x19, 0x32, 0x11, 0x13, 0x11, 0xB7, 0x19, 0xF8, 0x1A, 0x19, 0x19, 0xD7, 0x11, 0x32, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x07, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x11, 0x01, 0x19, 0x11, 0x89, 0x19, 0x32, 0x11, 0x33, 0x11, 0x53, 0x19, 0x74, 0x21, 0xF7, 0x2A, 0x17, 0x21, 0xF7, 0x11, 0x54, 0x11, 0x13, 0x19, 0x32, 0x01, 0x19, 0x52, 0x81, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x29, + 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x21, 0xD6, 0x2A, 0x38, 0x21, 0xF7, 0x11, 0x94, 0x09, 0x12, 0x11, 0x32, 0x01, 0x19, 0x31, 0x83, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8A, 0x19, 0x32, 0x11, 0x33, 0x21, 0xD6, 0x2A, 0x17, 0x21, 0xF6, 0x19, 0x95, 0x09, 0x12, 0x19, 0x32, 0x21, 0x52, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x91, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x21, 0xD6, 0x19, 0xD5, 0x19, 0x74, 0x10, 0xF1, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x01, 0x19, 0x31, 0x88, 0x11, 0x12, 0x11, 0x74, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x95, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, + 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x05, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x19, 0x10, 0x01, 0x21, 0x31, 0x84, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x19, 0x95, 0x01, 0x21, 0xF7, 0x85, 0x21, 0xD6, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x08, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x31, 0x01, 0x19, 0x31, 0x86, 0x19, 0x53, 0x19, 0x74, 0x19, 0xB5, 0x19, 0xB6, 0x19, 0x96, 0x19, 0xD6, 0x19, 0xD7, 0x03, 0x19, 0xF7, 0x80, 0x1A, 0x17, 0x02, 0x19, 0xF7, 0x04, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x01, 0x11, 0xD7, 0x03, 0x19, 0xF7, 0x81, 0x11, 0xD6, 0x11, 0xB6, 0x01, 0x11, 0xB5, 0x80, 0x19, 0xB5, 0x01, 0x19, 0x94, 0x81, 0x11, 0x52, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF7, 0x19, 0xB6, 0x11, + 0x74, 0x11, 0x33, 0x11, 0x12, 0x11, 0x32, 0x02, 0x19, 0x32, 0x91, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x19, 0xD7, 0x22, 0x18, 0x19, 0xF8, 0x19, 0xB6, 0x11, 0x54, 0x09, 0x12, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x11, 0x33, 0x09, 0x34, 0x11, 0x55, 0x11, 0x96, 0x11, 0xB7, 0x01, 0x11, 0xD8, 0x01, 0x11, 0xF8, 0x86, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x54, 0x19, 0x53, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x50, 0x01, 0x19, 0x30, 0x8D, 0x19, 0x10, 0x11, 0x31, 0x11, 0x32, 0x19, 0x94, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x18, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x54, 0x19, 0x33, 0x19, 0x12, 0x21, 0x32, 0x21, 0x11, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x05, 0x29, 0x10, 0x05, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, + 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x19, 0x10, 0x19, 0x11, 0x01, 0x19, 0x31, 0x03, 0x19, 0x32, 0x80, 0x11, 0x12, 0x02, 0x19, 0x12, 0x02, 0x19, 0x11, 0x82, 0x21, 0x31, 0x19, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x07, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x0C, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x87, 0x19, 0x10, 0x19, 0x11, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x95, 0x11, 0xB6, 0x02, 0x19, 0xD6, 0x82, 0x11, 0x74, 0x11, 0x54, 0x11, 0x53, 0x02, 0x11, 0x32, 0x01, 0x11, 0x31, 0x83, 0x11, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x01, 0x19, 0x12, 0x03, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x81, 0x19, 0x31, 0x19, 0x32, 0x03, 0x19, 0x31, 0x02, 0x19, 0x32, 0x80, 0x19, 0x31, 0x07, 0x19, 0x32, 0x83, 0x19, 0x31, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x03, 0x19, 0x11, 0x01, 0x19, 0x12, 0x01, 0x19, 0x11, 0x04, 0x19, 0x12, 0x8D, 0x19, 0x11, 0x19, 0x12, 0x19, 0x11, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x19, 0x53, 0x11, 0x33, 0x09, 0x34, 0x01, + 0x55, 0x11, 0xD8, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0xB9, 0x02, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x0A, 0x01, 0xDA, 0x82, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xDB, 0x04, 0x01, 0xDA, 0x04, 0x01, 0xFA, 0x01, 0x01, 0xF9, 0x84, 0x09, 0xD8, 0x11, 0xD7, 0x09, 0x54, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x31, 0x11, 0x12, 0x09, 0x12, 0x19, 0xD7, 0x11, 0xF8, 0x11, 0xF7, 0x11, 0x96, 0x11, 0x12, 0x19, 0x12, 0x21, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x30, 0x21, 0x50, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x19, 0xF7, 0x01, 0x19, 0xB6, 0x85, 0x11, 0x53, 0x11, 0x11, 0x21, 0x31, 0x29, 0x31, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x85, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, + 0x11, 0x76, 0x11, 0xB7, 0x01, 0x11, 0xD8, 0x82, 0x09, 0xD8, 0x09, 0xF9, 0x09, 0xD8, 0x01, 0x11, 0xD8, 0x84, 0x11, 0x75, 0x09, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x0E, 0x21, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x10, 0xF1, 0x19, 0x94, 0x01, 0x21, 0xF6, 0x83, 0x19, 0xB5, 0x08, 0xF2, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x02, 0x21, 0xF7, 0x85, 0x11, 0x54, 0x09, 0x13, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x8C, 0x21, 0x31, 0x19, 0x32, 0x11, 0x13, 0x11, 0xB6, 0x19, 0xF8, 0x1A, 0x19, 0x19, 0xD7, 0x11, 0x33, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x0F, + 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x19, 0x10, 0x19, 0x11, 0x01, 0x19, 0x32, 0x86, 0x11, 0x33, 0x11, 0x53, 0x19, 0x75, 0x21, 0xF7, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0x54, 0x01, 0x11, 0x12, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x19, 0x10, 0x19, 0x30, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x21, 0xB6, 0x2A, 0x38, 0x22, 0x17, 0x19, 0x95, 0x09, 0x12, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x32, 0x11, 0x33, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xF6, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x12, 0x19, 0x52, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x10, + 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x19, 0x31, 0x87, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x21, 0xD6, 0x21, 0xD5, 0x19, 0x94, 0x11, 0x11, 0x19, 0x11, 0x02, 0x21, 0x31, 0x8B, 0x19, 0x10, 0x19, 0x30, 0x19, 0x31, 0x11, 0x12, 0x11, 0x53, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x31, 0x89, 0x19, 0x11, + 0x19, 0x32, 0x11, 0x53, 0x19, 0x74, 0x21, 0xF6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x84, 0x21, 0x31, 0x21, 0x11, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x82, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x01, 0x19, 0x32, 0x81, 0x19, 0x53, 0x11, 0x54, 0x01, 0x11, 0x74, 0x80, 0x11, 0x75, 0x08, 0x11, 0x95, 0x83, 0x11, 0x75, 0x19, 0x95, 0x11, 0x75, 0x11, 0x95, 0x01, 0x11, 0x75, 0x04, 0x11, 0x95, 0x01, 0x11, 0x74, 0x80, 0x11, 0x94, 0x01, 0x11, 0x74, 0x01, 0x11, 0x53, 0x81, 0x19, 0x52, 0x11, 0x31, 0x04, 0x19, 0x31, 0x89, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x22, 0x18, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x33, 0x01, 0x11, 0x32, 0x87, 0x19, 0x32, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x19, 0xD7, 0x01, 0x21, 0xF8, 0x84, 0x19, 0xD7, 0x11, 0x75, 0x09, 0x13, 0x11, 0x12, 0x11, 0x11, 0x01, 0x21, 0x51, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, + 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x11, 0x12, 0x01, 0x11, 0x33, 0x82, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x03, 0x11, 0xF8, 0x82, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x75, 0x01, 0x11, 0x33, 0x80, 0x19, 0x52, 0x01, 0x21, 0x31, 0x82, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x50, 0x86, 0x19, 0x30, 0x19, 0x10, 0x19, 0x11, 0x19, 0x52, 0x11, 0x33, 0x19, 0x95, 0x19, 0xB6, 0x01, 0x22, 0x18, 0x85, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x19, 0x12, 0x21, 0x32, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x8C, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x30, 0x01, 0x19, 0x10, 0x01, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x52, 0x01, 0x19, 0x32, 0x82, 0x19, 0x12, 0x19, 0x11, 0x19, 0x31, 0x02, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, + 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x30, 0x01, 0x19, 0x31, 0x86, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x1A, 0x17, 0x11, 0xB6, 0x01, 0x09, 0x54, 0x85, 0x09, 0x53, 0x11, 0x33, 0x09, 0x32, 0x11, 0x32, 0x09, 0x12, 0x11, 0x12, 0x01, 0x11, 0x11, 0x03, 0x11, 0x12, 0x01, 0x10, 0xF2, 0x01, 0x11, 0x12, 0x80, 0x10, 0xF2, 0x04, 0x11, 0x12, 0x01, 0x11, 0x11, 0x03, 0x11, 0x12, 0x83, 0x10, 0xF1, 0x11, 0x11, 0x11, 0x12, 0x11, 0x11, 0x01, 0x11, 0x12, 0x01, 0x11, 0x11, 0x80, 0x11, 0x12, 0x01, 0x11, 0x11, 0x80, 0x11, 0x12, 0x01, 0x10, 0xF1, 0x01, 0x11, 0x11, 0x01, 0x11, 0x12, 0x80, 0x11, 0x32, 0x07, 0x11, 0x12, 0x06, 0x19, 0x12, 0x01, 0x10, 0xF2, 0x02, 0x11, 0x12, 0x86, 0x11, 0x13, 0x09, 0x13, 0x09, 0x14, 0x01, 0x76, 0x09, 0xB8, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x84, 0x02, 0x1A, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xB9, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x05, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x82, 0x01, 0xFA, 0x01, 0xDA, + 0x01, 0xFA, 0x07, 0x01, 0xDA, 0x82, 0x01, 0xFA, 0x01, 0xDA, 0x02, 0x1A, 0x03, 0x01, 0xFA, 0x01, 0x01, 0xF9, 0x85, 0x11, 0xF8, 0x11, 0xF7, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x83, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xF7, 0x01, 0x1A, 0x18, 0x84, 0x11, 0x96, 0x11, 0x13, 0x19, 0x12, 0x21, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x87, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x50, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x01, 0x21, 0xF7, 0x86, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x21, 0x31, 0x29, 0x31, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x85, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xB8, 0x01, 0x11, 0xD8, 0x84, 0x11, 0x97, 0x11, 0x76, 0x09, 0x33, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x0F, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, + 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x11, 0x10, 0xF1, 0x19, 0x94, 0x21, 0xF6, 0x19, 0xD6, 0x19, 0x95, 0x09, 0x12, 0x11, 0x12, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x95, 0x22, 0x17, 0x2A, 0x38, 0x19, 0xB6, 0x09, 0x13, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x4F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x8C, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x13, 0x11, 0xB6, 0x19, 0xF8, 0x1A, 0x19, 0x19, 0xD7, 0x11, 0x13, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x30, 0x83, + 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x33, 0x01, 0x11, 0x33, 0x8B, 0x19, 0x75, 0x21, 0xF7, 0x2A, 0x17, 0x21, 0xF6, 0x19, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x52, 0x19, 0x51, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x33, 0x19, 0xB5, 0x2A, 0x38, 0x21, 0xF7, 0x11, 0x95, 0x09, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x8E, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x12, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xF6, 0x19, 0x94, 0x09, 0x12, 0x11, 0x11, 0x19, 0x52, 0x21, 0x51, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, + 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x31, 0x01, 0x19, 0x32, 0x87, 0x11, 0x32, 0x19, 0xB5, 0x21, 0xF6, 0x21, 0xD5, 0x19, 0x94, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x02, 0x21, 0x31, 0x84, 0x19, 0x10, 0x19, 0x11, 0x11, 0x11, 0x11, 0x53, 0x19, 0xF7, 0x01, 0x1A, 0x18, 0x84, 0x11, 0x95, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x09, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x28, 0xEF, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x19, 0x33, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x75, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x2F, + 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x02, 0x11, 0x32, 0x80, 0x11, 0x52, 0x03, 0x11, 0x53, 0x82, 0x19, 0x53, 0x11, 0x53, 0x11, 0x33, 0x01, 0x19, 0x53, 0x83, 0x19, 0x33, 0x11, 0x33, 0x11, 0x32, 0x19, 0x33, 0x01, 0x11, 0x33, 0x81, 0x11, 0x53, 0x11, 0x33, 0x02, 0x11, 0x53, 0x01, 0x19, 0x73, 0x80, 0x11, 0x53, 0x02, 0x11, 0x32, 0x81, 0x19, 0x31, 0x19, 0x52, 0x02, 0x19, 0x31, 0x81, 0x21, 0x52, 0x19, 0x32, 0x01, 0x11, 0x12, 0x89, 0x11, 0x33, 0x11, 0x95, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x54, 0x11, 0x53, 0x11, 0x32, 0x01, 0x11, 0x31, 0x85, 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x87, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x50, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x19, 0x11, 0x01, 0x19, 0x32, 0x89, 0x11, 0x53, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x01, 0x11, 0x54, 0x87, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, + 0x21, 0x2F, 0x01, 0x21, 0x30, 0x93, 0x19, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x17, 0x22, 0x18, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x21, 0x52, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x31, 0x02, 0x19, 0x11, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x09, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, + 0x81, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x07, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8B, 0x19, 0x32, 0x11, 0x53, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xD6, 0x22, 0x18, 0x11, 0x96, 0x11, 0x75, 0x09, 0x54, 0x11, 0x54, 0x09, 0x53, 0x09, 0x33, 0x02, 0x09, 0x32, 0x81, 0x11, 0x32, 0x09, 0x32, 0x03, 0x11, 0x13, 0x80, 0x10, 0xF3, 0x01, 0x11, 0x13, 0x1B, 0x11, 0x12, 0x83, 0x11, 0x32, 0x11, 0x33, 0x11, 0x32, 0x11, 0x53, 0x06, 0x11, 0x33, 0x81, 0x11, 0x12, 0x11, 0x33, 0x05, 0x11, 0x13, 0x02, 0x11, 0x33, 0x81, 0x11, 0x34, 0x09, 0x34, 0x01, 0x09, 0x55, 0x81, 0x01, 0x76, 0x01, 0xB8, 0x02, 0x01, 0xD9, 0x81, 0x01, 0xB9, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xB9, 0x0B, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x03, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x85, 0x0A, 0x1A, 0x09, 0xF9, 0x11, 0xF8, 0x19, 0xF7, 0x11, 0x75, 0x11, 0x12, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, + 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x09, 0x33, 0x19, 0xD7, 0x01, 0x1A, 0x18, 0x82, 0x11, 0xB6, 0x11, 0x13, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x90, 0x29, 0x50, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x53, 0x11, 0x12, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x84, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x33, 0x11, 0x55, 0x01, 0x11, 0x96, 0x02, 0x11, 0xB7, 0x84, 0x11, 0x96, 0x09, 0x34, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x0E, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x8C, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x10, 0xF1, 0x19, 0x94, 0x21, 0xF6, 0x19, 0xD6, 0x19, 0xB5, 0x08, 0xF2, 0x11, 0x12, 0x19, 0x31, 0x19, 0x30, 0x21, 0x50, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x50, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, + 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x95, 0x22, 0x17, 0x2A, 0x38, 0x11, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x0A, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x86, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x96, 0x01, 0x1A, 0x19, 0x83, 0x19, 0xF8, 0x11, 0x13, 0x19, 0x12, 0x21, 0x31, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x11, 0x33, 0x11, 0x74, 0x21, 0xF7, 0x2A, 0x17, 0x21, 0xF6, 0x19, 0x74, 0x10, 0xF2, 0x19, 0x12, 0x01, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, + 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x89, 0x11, 0x33, 0x19, 0xB5, 0x2A, 0x38, 0x19, 0xD6, 0x19, 0xB5, 0x09, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x19, 0x30, 0x19, 0x31, 0x01, 0x11, 0x32, 0x83, 0x21, 0xD5, 0x22, 0x17, 0x21, 0xD6, 0x19, 0x95, 0x01, 0x11, 0x12, 0x82, 0x21, 0x52, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x87, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x10, 0x85, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x88, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0x94, 0x21, 0xF6, 0x21, 0xD5, 0x19, 0x94, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x02, 0x21, 0x31, 0x8B, 0x19, 0x10, 0x19, 0x31, 0x11, 0x31, 0x11, 0x53, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0xB6, 0x11, 0x32, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x87, 0x29, 0x30, 0x29, 0x0F, + 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x28, 0xF0, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x11, 0x01, 0x18, 0xF1, 0x82, 0x19, 0x32, 0x11, 0x33, 0x19, 0x95, 0x02, 0x21, 0xF7, 0x82, 0x19, 0x95, 0x19, 0x53, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x8A, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x04, 0x19, 0x31, 0x03, 0x19, 0x32, 0x80, 0x19, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x19, 0x32, 0x01, 0x19, 0x11, 0x82, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x01, 0x19, 0x32, 0x80, 0x11, 0x12, 0x01, 0x11, 0x32, 0x80, 0x19, 0x32, 0x05, 0x19, 0x31, 0x91, 0x19, 0x11, 0x19, 0x31, 0x21, 0x32, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x09, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x21, 0xF7, 0x22, 0x17, 0x19, + 0xD6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x33, 0x19, 0x32, 0x11, 0x32, 0x19, 0x32, 0x02, 0x11, 0x32, 0x8B, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xB6, 0x19, 0xF7, 0x21, 0xF8, 0x19, 0xB7, 0x11, 0x75, 0x11, 0x34, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x19, 0x31, 0x8F, 0x19, 0x12, 0x19, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xF8, 0x12, 0x19, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x50, 0x01, 0x19, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x31, 0x10, 0xF1, 0x11, 0x12, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x18, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x13, 0x11, 0x12, 0x01, 0x19, 0x52, 0x80, 0x21, 0x51, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, + 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x0A, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x19, 0x10, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x31, 0x04, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x07, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x19, 0x31, 0x88, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x19, 0x96, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xB6, 0x03, 0x19, 0xB5, 0x80, 0x19, 0xD5, 0x02, 0x19, 0xB5, 0x82, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x96, 0x14, 0x19, 0x95, 0x80, 0x21, 0xB5, 0x0A, 0x19, 0x95, 0x01, 0x19, 0x94, 0x82, 0x19, 0x95, 0x19, 0x94, 0x19, 0xB5, 0x04, 0x19, 0x95, 0x80, 0x21, 0xB5, 0x01, 0x19, 0xB6, 0x80, 0x21, 0xB6, 0x02, 0x21, 0xD6, 0x80, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x02, 0x19, 0xD7, 0x84, 0x11, 0xD8, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0xF9, + 0x01, 0xFA, 0x01, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x04, 0x01, 0xFA, 0x82, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xFB, 0x04, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x09, 0x01, 0xDA, 0x82, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x81, 0x01, 0xD9, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x86, 0x09, 0xF9, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x54, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x21, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0xB6, 0x11, 0x13, 0x19, 0x12, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x12, 0x19, 0x31, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, + 0x19, 0x52, 0x83, 0x11, 0x33, 0x09, 0x33, 0x11, 0x95, 0x11, 0x96, 0x01, 0x11, 0xB7, 0x83, 0x11, 0x96, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x07, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x11, 0x10, 0xF1, 0x21, 0x94, 0x2A, 0x16, 0x21, 0xD6, 0x19, 0x94, 0x09, 0x12, 0x11, 0x12, 0x19, 0x31, 0x19, 0x51, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x50, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x50, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x8C, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x09, 0x12, 0x19, 0xB5, 0x2A, 0x38, 0x19, 0xF7, 0x11, 0x75, 0x11, 0x13, 0x11, 0x32, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x4F, 0x07, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x87, 0x19, 0x32, 0x11, 0x13, 0x11, 0x96, 0x19, 0xF8, 0x1A, 0x19, 0x19, 0xD7, 0x11, 0x13, 0x19, 0x12, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, + 0x05, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x19, 0x53, 0x11, 0x33, 0x11, 0x53, 0x11, 0x74, 0x22, 0x17, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x54, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x21, 0x51, 0x21, 0x50, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x89, 0x11, 0x33, 0x19, 0xB5, 0x2A, 0x38, 0x21, 0xF7, 0x11, 0x95, 0x09, 0x13, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x8A, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x21, 0xF6, 0x2A, 0x37, 0x21, 0xF6, 0x19, 0x94, 0x09, 0x12, 0x11, 0x32, 0x19, 0x52, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, + 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0x94, 0x21, 0xF6, 0x21, 0xD5, 0x19, 0x73, 0x11, 0x12, 0x19, 0x11, 0x02, 0x21, 0x31, 0x8C, 0x19, 0x10, 0x19, 0x30, 0x19, 0x31, 0x11, 0x11, 0x11, 0x53, 0x1A, 0x17, 0x1A, 0x38, 0x1A, 0x17, 0x11, 0x95, 0x11, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x10, 0x05, 0x29, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x97, 0x29, 0x51, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x19, 0x75, 0x21, 0xD7, 0x2A, 0x18, 0x21, 0xD7, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x29, 0x51, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, + 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x30, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x21, 0x32, 0x01, 0x19, 0x11, 0x82, 0x21, 0x31, 0x19, 0x11, 0x19, 0x10, 0x05, 0x19, 0x11, 0x03, 0x19, 0x31, 0x01, 0x19, 0x11, 0x04, 0x19, 0x31, 0x8E, 0x21, 0x31, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x33, 0x01, 0x11, 0x32, 0x01, 0x19, 0x52, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x8A, 0x11, 0x53, 0x11, 0x75, 0x19, 0xB6, 0x21, 0xF7, 0x21, 0xF8, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x13, 0x11, 0x12, 0x11, 0x11, 0x21, 0x32, 0x01, 0x21, 0x51, 0x80, 0x19, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x51, 0x01, 0x19, 0x11, 0x85, 0x19, 0x32, 0x19, 0x33, 0x11, 0x33, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x01, 0x11, 0xF8, 0x87, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xD7, 0x11, + 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x89, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x51, 0x21, 0x30, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x19, 0x74, 0x19, 0xB6, 0x01, 0x22, 0x17, 0x82, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x01, 0x11, 0x32, 0x81, 0x19, 0x32, 0x21, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, + 0x29, 0x30, 0x8B, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x50, 0x80, 0x21, 0x30, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x33, 0x19, 0x54, 0x19, 0x75, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x80, 0x21, 0xF7, 0x03, 0x22, 0x17, 0x01, 0x2A, 0x37, 0x02, 0x2A, 0x38, 0x02, 0x32, 0x38, 0x02, 0x2A, 0x38, 0x80, 0x32, 0x38, 0x01, 0x2A, 0x18, 0x07, 0x2A, 0x38, 0x80, 0x32, 0x38, 0x02, 0x2A, 0x38, 0x81, 0x2A, 0x37, 0x2A, 0x38, 0x01, 0x2A, 0x37, 0x02, 0x2A, 0x38, 0x81, 0x2A, 0x37, 0x2A, 0x17, 0x01, 0x32, 0x38, 0x01, 0x2A, 0x37, 0x04, 0x2A, 0x17, 0x01, 0x2A, 0x37, 0x81, 0x2A, 0x17, 0x29, 0xF7, 0x02, 0x2A, 0x17, 0x81, 0x21, 0xF7, 0x2A, 0x17, 0x02, 0x21, 0xF7, 0x80, 0x22, 0x18, 0x01, 0x22, 0x17, 0x87, 0x19, 0xF7, 0x19, 0xF8, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0xF8, 0x12, 0x19, 0x01, 0xF9, 0x09, 0xFA, 0x02, 0x01, 0xD9, 0x82, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x09, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x82, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x88, 0x09, 0xD8, 0x11, 0xF8, + 0x11, 0xD7, 0x11, 0x54, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x19, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8A, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0xB6, 0x11, 0x13, 0x19, 0x12, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8C, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x33, 0x11, 0x12, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x31, 0x01, 0x19, 0x31, 0x85, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0xB6, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x84, 0x11, 0x54, 0x11, 0x12, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x88, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, + 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x93, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x10, 0xD0, 0x19, 0x94, 0x2A, 0x16, 0x21, 0xF6, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x12, 0x01, 0x19, 0x31, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x50, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x50, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x09, 0x12, 0x19, 0xD6, 0x22, 0x18, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x19, 0x32, 0x19, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x4F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8D, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x09, 0x13, 0x11, 0xB7, 0x19, 0xF8, 0x1A, 0x19, 0x19, 0xD8, 0x11, 0x13, 0x19, 0x32, 0x01, 0x21, 0x11, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, + 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x20, 0xEF, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x30, 0x82, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x01, 0x11, 0x53, 0x86, 0x11, 0x74, 0x21, 0xF7, 0x2A, 0x38, 0x21, 0xD6, 0x19, 0x74, 0x19, 0x32, 0x11, 0x11, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x03, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xF7, 0x11, 0xB5, 0x09, 0x13, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x19, 0x31, 0x01, 0x11, 0x32, 0x86, 0x21, 0xF5, 0x22, 0x16, 0x21, 0xF6, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x32, 0x21, 0x52, 0x01, 0x21, 0x51, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x06, 0x21, 0x10, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x29, + 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x21, 0x31, 0x21, 0x51, 0x19, 0x32, 0x11, 0x12, 0x19, 0x94, 0x21, 0xF6, 0x21, 0xD5, 0x21, 0xB4, 0x11, 0x11, 0x19, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x89, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x19, 0xF6, 0x1A, 0x38, 0x1A, 0x17, 0x11, 0xB5, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x86, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x03, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x19, 0x12, 0x89, 0x11, 0x33, 0x19, 0x95, 0x21, 0xD7, 0x2A, 0x18, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x54, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x83, 0x21, + 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x19, 0x30, 0x03, 0x19, 0x31, 0x80, 0x21, 0x11, 0x02, 0x21, 0x31, 0x82, 0x21, 0x11, 0x21, 0x10, 0x21, 0x31, 0x02, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x04, 0x19, 0x11, 0x02, 0x19, 0x31, 0x82, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x02, 0x19, 0x31, 0x01, 0x19, 0x11, 0x88, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x02, 0x11, 0x32, 0x82, 0x19, 0x32, 0x19, 0x52, 0x11, 0x32, 0x01, 0x11, 0x53, 0x87, 0x11, 0x74, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x13, 0x11, 0x12, 0x01, 0x19, 0x11, 0x82, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x87, 0x19, 0x12, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xF8, 0x11, 0xF9, 0x01, 0x11, 0xF8, 0x86, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x05, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x01, 0x11, + 0x12, 0x8A, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x1A, 0x17, 0x21, 0xF7, 0x11, 0x95, 0x09, 0x53, 0x11, 0x32, 0x11, 0x12, 0x21, 0x52, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x87, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x07, 0x21, 0x10, 0x02, + 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x30, 0x82, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x01, 0x19, 0x33, 0x81, 0x21, 0xB5, 0x21, 0xD6, 0x01, 0x19, 0x95, 0x01, 0x19, 0xB5, 0x80, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x03, 0x21, 0xD6, 0x01, 0x21, 0xB6, 0x02, 0x21, 0xD6, 0x80, 0x21, 0xD7, 0x06, 0x21, 0xD6, 0x80, 0x21, 0xF7, 0x08, 0x21, 0xD6, 0x82, 0x21, 0xF6, 0x21, 0xD6, 0x21, 0xF6, 0x06, 0x21, 0xD6, 0x09, 0x21, 0xF6, 0x02, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x01, 0x21, 0xD6, 0x80, 0x21, 0xD7, 0x02, 0x19, 0xB6, 0x86, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0xB7, 0x09, 0xB7, 0x09, 0xB8, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x81, 0x01, 0xB8, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x0E, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x0A, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x02, 0x09, 0xF9, 0x83, 0x11, 0xF8, 0x19, 0xD7, 0x11, 0x74, 0x11, 0x12, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x08, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x30, 0x8C, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, + 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x96, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x90, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x21, 0x11, 0x21, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x90, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xF7, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x0A, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x88, 0x21, 0x31, 0x19, 0x11, 0x10, 0xF1, 0x19, 0x74, 0x21, 0xF6, 0x21, 0xD5, 0x19, 0x94, 0x08, 0xF2, 0x11, 0x12, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x50, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x50, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x51, 0x19, 0x32, 0x11, 0x32, 0x09, 0x33, 0x22, 0x17, 0x22, 0x38, 0x19, 0xD6, 0x11, 0x74, 0x11, + 0x33, 0x19, 0x53, 0x19, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x12, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x84, 0x21, 0x51, 0x21, 0x52, 0x11, 0x12, 0x09, 0x13, 0x11, 0xD7, 0x01, 0x1A, 0x19, 0x84, 0x19, 0xD7, 0x10, 0xF2, 0x19, 0x12, 0x21, 0x11, 0x21, 0x10, 0x01, 0x29, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x8D, 0x21, 0x10, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x74, 0x21, 0xD6, 0x2A, 0x17, 0x21, 0xD6, 0x21, 0x95, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x19, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, + 0x13, 0x19, 0xB5, 0x22, 0x17, 0x19, 0xF7, 0x11, 0xB5, 0x09, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x11, 0x02, 0x21, 0x30, 0x81, 0x19, 0x30, 0x19, 0x31, 0x01, 0x11, 0x32, 0x83, 0x21, 0xD5, 0x22, 0x16, 0x21, 0xD6, 0x19, 0x94, 0x01, 0x11, 0x12, 0x84, 0x21, 0x52, 0x21, 0x51, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x97, 0x19, 0x32, 0x11, 0x32, 0x19, 0xB4, 0x2A, 0x16, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x30, 0x19, 0x31, 0x11, 0x31, 0x11, 0x53, 0x1A, 0x16, 0x1A, 0x17, 0x19, 0xF7, 0x11, 0xB5, 0x11, 0x32, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x2F, + 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x88, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x04, 0x29, 0x10, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x31, 0x8D, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x19, 0x33, 0x19, 0x75, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xF6, 0x11, 0x95, 0x11, 0x53, 0x11, 0x12, 0x10, 0xF1, 0x10, 0xF0, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x10, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x29, 0x51, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x51, 0x81, 0x19, 0x30, 0x19, 0x31, 0x02, 0x21, 0x31, 0x01, 0x21, 0x11, 0x82, 0x21, 0x31, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x31, 0x85, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x19, 0x11, 0x03, 0x21, 0x11, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x86, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB5, 0x01, 0x21, 0xF7, 0x81, 0x19, 0xB5, 0x11, 0x74, 0x01, 0x11, 0x53, 0x82, 0x11, 0x52, 0x11, 0x32, 0x19, 0x32, 0x01, 0x11, 0x11, 0x8C, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x19, 0xD7, 0x21, 0xF7, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x33, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x82, 0x21, + 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x01, 0x19, 0x11, 0x86, 0x19, 0x12, 0x19, 0x33, 0x11, 0x53, 0x11, 0x54, 0x11, 0x76, 0x11, 0xB7, 0x11, 0xF8, 0x01, 0x11, 0xF9, 0x8C, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x10, 0x91, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x17, 0x1A, 0x17, 0x19, 0xF6, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x21, 0x51, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x06, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, + 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x08, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x28, 0xEF, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x05, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x50, 0x03, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x19, 0x12, 0x82, 0x19, 0x32, 0x19, 0x53, 0x19, 0x33, 0x01, 0x19, 0x53, 0x84, 0x19, 0x73, 0x11, 0x53, 0x19, 0x73, 0x19, 0x74, 0x19, 0x54, 0x03, 0x19, 0x74, 0x01, 0x19, 0x54, 0x01, 0x19, 0x74, 0x80, 0x19, 0x54, 0x0C, 0x19, 0x74, 0x80, 0x11, 0x74, 0x05, 0x19, 0x74, 0x80, 0x19, 0x54, 0x01, 0x19, 0x74, 0x80, 0x19, 0x54, 0x03, 0x19, 0x74, 0x80, 0x11, 0x74, 0x02, 0x19, 0x94, 0x80, 0x19, 0x74, 0x08, 0x19, 0x94, 0x85, 0x21, 0xB5, 0x19, 0x95, 0x19, 0xB5, 0x19, 0xB6, 0x21, 0xD6, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x82, 0x11, 0xD7, 0x11, 0xD8, 0x11, 0xF9, 0x01, 0x09, 0xD9, 0x83, 0x01, 0xB8, 0x09, 0xF9, 0x01, 0xD8, 0x01, 0xD9, 0x02, 0x01, + 0xB9, 0x81, 0x09, 0xD9, 0x01, 0xB9, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x82, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xDA, 0x04, 0x01, 0xB9, 0x85, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x03, 0x01, 0xD9, 0x81, 0x01, 0xF9, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x86, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x21, 0x32, 0x01, 0x21, 0x31, 0x05, 0x21, 0x10, 0x06, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xB6, 0x09, 0x12, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x90, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x33, 0x19, 0x12, 0x21, 0x31, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x19, 0x11, 0x01, 0x19, 0x32, 0x87, 0x11, 0x12, 0x11, 0x54, + 0x19, 0xB5, 0x19, 0xD6, 0x11, 0xD6, 0x11, 0x95, 0x09, 0x13, 0x11, 0x32, 0x01, 0x19, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x8C, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x10, 0xF1, 0x19, 0x74, 0x21, 0xD6, 0x21, 0xD5, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x12, 0x19, 0x52, 0x19, 0x31, 0x21, 0x50, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x50, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x31, 0x19, 0x32, 0x09, 0x32, 0x09, 0x54, 0x1A, 0x17, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x75, 0x11, 0x33, 0x19, 0x53, 0x19, 0x31, 0x21, 0x31, 0x05, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0E, 0x07, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x91, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x19, 0x31, 0x11, 0x12, 0x09, 0x13, 0x19, 0xD7, 0x19, 0xF8, 0x1A, 0x19, 0x19, 0xD7, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, + 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8C, 0x19, 0x32, 0x19, 0x33, 0x11, 0x53, 0x11, 0x74, 0x21, 0xD6, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x74, 0x19, 0x33, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0x95, 0x22, 0x17, 0x19, 0xF7, 0x11, 0xB6, 0x09, 0x33, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x87, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x09, 0x32, 0x19, 0xD5, 0x2A, 0x17, 0x21, 0xF6, 0x19, 0x95, 0x01, 0x11, 0x12, 0x82, 0x21, 0x52, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x87, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, + 0x81, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x89, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x19, 0x31, 0x11, 0x32, 0x19, 0x94, 0x21, 0xF6, 0x19, 0xD5, 0x19, 0xB4, 0x11, 0x12, 0x01, 0x19, 0x31, 0x02, 0x21, 0x31, 0x83, 0x19, 0x10, 0x19, 0x31, 0x11, 0x31, 0x11, 0x53, 0x01, 0x1A, 0x17, 0x84, 0x11, 0xF7, 0x11, 0xB6, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x05, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x02, + 0x21, 0x31, 0x01, 0x21, 0x11, 0x8B, 0x19, 0x11, 0x19, 0x12, 0x19, 0x53, 0x19, 0x75, 0x19, 0xD7, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xB5, 0x09, 0x53, 0x09, 0x12, 0x10, 0xF1, 0x11, 0x11, 0x03, 0x19, 0x10, 0x01, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x11, 0x21, 0x31, 0x86, 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x19, 0x10, 0x21, 0x31, 0x21, 0x11, 0x21, 0x30, 0x02, 0x21, 0x31, 0x03, 0x19, 0x31, 0x80, 0x19, 0x10, 0x0A, 0x19, 0x11, 0x01, 0x19, 0x31, 0x0A, 0x19, 0x11, 0x8E, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xB5, 0x11, 0x94, 0x11, 0x53, 0x11, 0x33, 0x11, 0x52, 0x19, 0x52, 0x19, 0x32, 0x11, 0x11, 0x01, 0x11, 0x32, 0x8D, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x32, 0x19, 0x31, 0x03, 0x19, 0x11, 0x91, 0x19, 0x12, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x19, 0xF8, 0x11, 0xF8, 0x1A, 0x39, 0x11, 0xF8, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x02, + 0x21, 0x30, 0x02, 0x21, 0x10, 0x87, 0x21, 0x30, 0x21, 0x51, 0x21, 0x52, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x86, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x28, 0xF0, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x28, 0xEF, 0x04, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x05, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, + 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x82, 0x21, 0x31, 0x21, 0x11, 0x21, 0x32, 0x03, 0x19, 0x12, 0x82, 0x11, 0x12, 0x11, 0x32, 0x19, 0x32, 0x01, 0x11, 0x12, 0x80, 0x19, 0x12, 0x02, 0x11, 0x12, 0x86, 0x11, 0x32, 0x11, 0x12, 0x11, 0x13, 0x11, 0x33, 0x11, 0x13, 0x11, 0x33, 0x19, 0x33, 0x04, 0x11, 0x13, 0x02, 0x11, 0x12, 0x01, 0x11, 0x13, 0x05, 0x11, 0x12, 0x80, 0x11, 0x32, 0x01, 0x11, 0x12, 0x80, 0x11, 0x33, 0x05, 0x11, 0x12, 0x07, 0x11, 0x32, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x02, 0x11, 0x12, 0x83, 0x11, 0x32, 0x19, 0x33, 0x11, 0x33, 0x19, 0x33, 0x01, 0x11, 0x53, 0x8E, 0x11, 0x54, 0x19, 0x74, 0x19, 0x95, 0x11, 0x75, 0x11, 0x95, 0x11, 0xB7, 0x11, 0xD7, 0x19, 0xF8, 0x12, 0x19, 0x1A, 0x19, 0x11, 0xF8, 0x1A, 0x19, 0x12, 0x19, 0x09, 0xB8, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x01, 0x09, 0xD8, 0x83, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xD9, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x82, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xF9, 0x04, 0x09, 0xD9, 0x81, 0x09, 0xF9, 0x01, 0xD9, 0x04, 0x09, 0xD9, 0x82, 0x01, 0xD9, 0x09, 0xF9, 0x01, 0xD9, 0x03, 0x09, 0xD9, 0x01, 0x09, 0xB9, 0x03, 0x09, 0xD9, 0x88, 0x09, 0xF9, 0x09, 0xF8, 0x11, 0xF8, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x53, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x08, 0x29, 0x0F, 0x08, + 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x50, 0x01, 0x21, 0x30, 0x89, 0x19, 0x11, 0x11, 0x32, 0x11, 0x74, 0x19, 0xF6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x19, 0x12, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x97, 0x21, 0x10, 0x21, 0x11, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x53, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xF7, 0x11, 0xB5, 0x09, 0x12, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x08, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x11, 0x10, 0xF1, 0x21, 0x74, 0x29, 0xF6, 0x21, 0xF6, 0x19, 0x94, 0x01, 0x11, 0x12, 0x01, 0x19, 0x31, + 0x80, 0x21, 0x30, 0x01, 0x21, 0x50, 0x80, 0x19, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x50, 0x21, 0x50, 0x02, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x09, 0x33, 0x09, 0x54, 0x19, 0xF7, 0x01, 0x1A, 0x18, 0x82, 0x11, 0xB6, 0x09, 0x33, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x19, 0xF8, 0x1A, 0x18, 0x1A, 0x39, 0x19, 0xD7, 0x11, 0x12, 0x01, 0x21, 0x11, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x28, 0xEF, 0x20, 0xEF, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x50, 0x03, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x91, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x19, 0x54, 0x11, 0x75, 0x21, 0xD6, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x32, 0x19, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x30, + 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x22, 0x17, 0x19, 0xF7, 0x11, 0xB5, 0x09, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x19, 0x10, 0x19, 0x31, 0x01, 0x11, 0x32, 0x83, 0x19, 0xD5, 0x22, 0x17, 0x21, 0xF6, 0x19, 0x95, 0x01, 0x11, 0x12, 0x80, 0x19, 0x32, 0x01, 0x21, 0x51, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x87, 0x19, 0x31, 0x11, 0x32, 0x19, 0xB4, 0x21, 0xF5, 0x21, 0xD5, 0x19, 0x94, 0x11, 0x12, 0x19, 0x11, 0x03, 0x21, 0x31, 0x01, 0x19, 0x31, 0x88, 0x11, 0x12, 0x11, 0x33, 0x1A, 0x17, 0x1A, 0x38, 0x1A, 0x18, 0x11, 0xB5, 0x11, 0x32, 0x19, 0x11, 0x19, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x03, 0x29, + 0x2F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x31, 0x29, 0x31, 0x01, 0x21, 0x31, 0x85, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x19, 0x53, 0x19, 0xB5, 0x19, 0xD6, 0x01, 0x1A, 0x17, 0x82, 0x11, 0xB5, 0x09, 0x54, 0x09, 0x12, 0x01, 0x08, 0xF1, 0x04, 0x10, 0xF1, 0x01, 0x19, 0x11, 0x80, 0x10, 0xF1, 0x01, 0x19, 0x11, 0x80, 0x19, 0x12, 0x09, 0x19, 0x11, 0x80, 0x19, 0x12, 0x0C, 0x19, 0x11, 0x80, 0x18, 0xF1, 0x01, 0x19, 0x11, 0x03, 0x11, 0x11, 0x06, 0x19, 0x11, 0x01, 0x19, 0x12, 0x03, 0x11, 0x12, 0x01, 0x10, 0xF1, 0x03, 0x19, 0x11, 0x82, 0x19, 0x12, 0x19, 0x11, 0x18, 0xF1, 0x01, 0x10, 0xF1, 0x01, 0x11, 0x12, 0x01, 0x11, 0x33, 0x81, 0x11, 0x54, 0x11, 0x95, 0x01, 0x21, 0xF7, 0x87, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x19, 0x52, 0x19, 0x32, 0x01, 0x11, 0x32, 0x88, 0x11, 0x53, 0x19, 0x94, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xD6, + 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x11, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x19, 0x32, 0x80, 0x19, 0x11, 0x02, 0x19, 0x31, 0x87, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x19, 0xF8, 0x02, 0x12, 0x18, 0x89, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x51, 0x8F, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x09, 0x12, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x17, 0x21, 0xF6, 0x11, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x21, 0x31, 0x21, 0x11, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x82, 0x29, 0x10, + 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x02, 0x21, 0x11, 0x81, 0x19, 0x11, 0x19, 0x12, 0x05, 0x19, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x12, 0x84, 0x19, 0x32, 0x19, 0x12, 0x11, 0x12, 0x19, 0x12, 0x19, 0x32, 0x02, 0x19, 0x12, 0x80, 0x19, 0x32, 0x01, 0x19, 0x12, 0x83, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x01, 0x11, 0x12, 0x01, 0x19, 0x32, 0x03, 0x19, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x12, + 0x80, 0x19, 0x32, 0x02, 0x19, 0x12, 0x81, 0x19, 0x32, 0x19, 0x11, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x82, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x03, 0x19, 0x11, 0x02, 0x19, 0x12, 0x80, 0x19, 0x11, 0x02, 0x19, 0x12, 0x01, 0x11, 0x32, 0x83, 0x11, 0x33, 0x11, 0x34, 0x11, 0x54, 0x11, 0x75, 0x01, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x87, 0x19, 0xD7, 0x11, 0xD7, 0x19, 0xD8, 0x19, 0xF8, 0x11, 0xD8, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0xD8, 0x07, 0x11, 0xF8, 0x83, 0x19, 0xF9, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xF9, 0x01, 0x11, 0xD8, 0x85, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xD8, 0x02, 0x11, 0xF8, 0x81, 0x09, 0xD8, 0x11, 0xF9, 0x02, 0x11, 0xD8, 0x81, 0x11, 0xB8, 0x11, 0xD8, 0x01, 0x11, 0xB8, 0x02, 0x11, 0xD8, 0x85, 0x11, 0xF8, 0x19, 0xD7, 0x19, 0xD6, 0x21, 0xB5, 0x19, 0x32, 0x19, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x07, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x83, 0x19, 0x31, 0x11, 0x12, 0x09, 0x33, 0x19, 0xD6, 0x01, 0x1A, 0x18, 0x83, 0x11, 0xB6, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x82, 0x19, 0x31, 0x11, 0x32, + 0x11, 0x54, 0x01, 0x19, 0xD6, 0x85, 0x19, 0xF7, 0x19, 0xB5, 0x11, 0x33, 0x19, 0x12, 0x21, 0x11, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x8B, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB5, 0x19, 0xF6, 0x19, 0xD6, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x07, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x04, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x11, 0x10, 0xF2, 0x21, 0x74, 0x29, 0xF6, 0x21, 0xF6, 0x19, 0x94, 0x01, 0x11, 0x12, 0x87, 0x19, 0x52, 0x19, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x2F, 0x19, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x50, 0x02, 0x21, 0x30, 0x85, 0x19, 0x10, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x09, 0x54, 0x11, 0xD7, 0x01, 0x1A, 0x18, 0x87, 0x19, 0xF7, 0x09, 0x34, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x10, + 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x11, 0x75, 0x01, 0x19, 0xF8, 0x82, 0x1A, 0x18, 0x19, 0xB6, 0x19, 0x32, 0x01, 0x21, 0x11, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x20, 0xCE, 0x82, 0x28, 0xEF, 0x29, 0x0F, 0x31, 0x50, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x89, 0x19, 0x11, 0x11, 0x32, 0x19, 0x74, 0x11, 0x74, 0x21, 0xD6, 0x2A, 0x17, 0x21, 0xF7, 0x11, 0x54, 0x11, 0x33, 0x11, 0x11, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x07, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x22, 0x17, 0x1A, 0x17, 0x19, 0xB6, 0x09, 0x33, 0x11, 0x32, 0x19, 0x52, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x19, 0x30, 0x19, 0x31, 0x01, 0x11, 0x32, 0x88, 0x19, 0xD5, 0x22, 0x16, 0x19, 0xF6, 0x19, 0xB5, 0x08, 0xF2, 0x19, 0x32, 0x19, 0x52, 0x21, + 0x51, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x06, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x87, 0x19, 0x31, 0x11, 0x32, 0x19, 0x94, 0x21, 0xF5, 0x21, 0xD5, 0x19, 0x94, 0x11, 0x12, 0x19, 0x11, 0x03, 0x21, 0x31, 0x8D, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xF7, 0x1A, 0x38, 0x1A, 0x18, 0x11, 0xB5, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x05, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x08, 0x29, 0x30, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, + 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x80, 0x29, 0x31, 0x01, 0x21, 0x10, 0x8D, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xF7, 0x1A, 0x17, 0x22, 0x37, 0x19, 0xF6, 0x11, 0x95, 0x11, 0x74, 0x09, 0x13, 0x09, 0x12, 0x02, 0x08, 0xF2, 0x85, 0x11, 0x13, 0x08, 0xF2, 0x09, 0x12, 0x11, 0x13, 0x11, 0x12, 0x09, 0x12, 0x04, 0x11, 0x12, 0x80, 0x09, 0x12, 0x08, 0x11, 0x12, 0x80, 0x11, 0x33, 0x02, 0x11, 0x12, 0x01, 0x09, 0x12, 0x01, 0x11, 0x32, 0x09, 0x11, 0x12, 0x01, 0x09, 0x12, 0x02, 0x11, 0x12, 0x85, 0x09, 0x12, 0x11, 0x13, 0x09, 0x12, 0x11, 0x33, 0x09, 0x33, 0x09, 0x13, 0x01, 0x11, 0x13, 0x01, 0x11, 0x12, 0x80, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x11, 0x13, 0x02, 0x11, 0x12, 0x80, 0x11, 0x13, 0x01, 0x11, 0x33, 0x82, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x82, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x53, 0x06, 0x11, 0x32, 0x8E, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x05, 0x29, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x86, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x8E, 0x19, 0x53, 0x11, 0x32, 0x19, 0x52, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, + 0x19, 0x32, 0x11, 0x12, 0x19, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x01, 0x12, 0x18, 0x87, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x51, 0x85, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x01, 0x22, 0x17, 0x84, 0x19, 0xF6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x87, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x0B, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x10, + 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x05, 0x19, 0x31, 0x85, 0x19, 0x11, 0x19, 0x31, 0x21, 0x32, 0x19, 0x31, 0x21, 0x52, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x84, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x11, 0x19, 0x52, 0x04, 0x19, 0x31, 0x01, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x02, 0x19, 0x31, 0x88, 0x21, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x21, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x03, 0x19, 0x31, 0x83, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x21, 0x51, 0x01, 0x21, 0x31, 0x02, 0x19, 0x11, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x21, 0x32, 0x01, 0x19, 0x32, 0x80, 0x19, 0x12, 0x01, 0x11, 0x33, 0x04, 0x11, 0x54, 0x81, 0x19, 0x55, 0x19, 0x75, 0x01, 0x11, 0x55, 0x01, 0x11, 0x75, 0x80, 0x11, 0x55, 0x01, 0x11, 0x75, 0x82, 0x11, 0x76, 0x11, 0x75, 0x19, 0x96, 0x01, 0x11, 0x75, 0x80, 0x11, 0x96, 0x01, 0x11, 0x76, 0x85, 0x11, 0x96, 0x11, 0x75, 0x11, 0x96, 0x19, 0x96, 0x11, 0x96, 0x11, 0x76, 0x04, 0x11, 0x96, 0x81, 0x11, + 0xB6, 0x11, 0x76, 0x01, 0x11, 0x96, 0x80, 0x11, 0x75, 0x01, 0x19, 0x96, 0x83, 0x11, 0x55, 0x11, 0x76, 0x19, 0x96, 0x11, 0x96, 0x03, 0x19, 0xB6, 0x85, 0x19, 0x95, 0x19, 0x74, 0x21, 0x73, 0x19, 0x32, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x8C, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x19, 0xF7, 0x1A, 0x38, 0x1A, 0x18, 0x11, 0xB6, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x29, 0x50, 0x04, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x83, 0x19, 0x31, 0x11, 0x32, 0x11, 0x74, 0x19, 0xF6, 0x01, 0x19, 0xF7, 0x83, 0x19, 0xB5, 0x11, 0x33, 0x19, 0x12, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x31, 0x19, 0x32, 0x19, 0x12, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x95, 0x09, 0x12, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x06, 0x29, + 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x12, 0x10, 0xF2, 0x21, 0x74, 0x29, 0xF6, 0x21, 0xD6, 0x19, 0x95, 0x01, 0x11, 0x12, 0x86, 0x19, 0x52, 0x21, 0x31, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x19, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x50, 0x87, 0x21, 0x10, 0x21, 0x31, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x09, 0x34, 0x11, 0x75, 0x01, 0x11, 0xD7, 0x87, 0x1A, 0x18, 0x19, 0xF8, 0x09, 0x54, 0x09, 0x33, 0x11, 0x32, 0x19, 0x52, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x10, 0x19, 0x11, 0x19, 0x31, 0x19, 0x52, 0x11, 0x53, 0x21, 0xF6, 0x02, 0x19, 0xF8, 0x84, 0x19, 0x95, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0xEF, 0x29, 0x0F, 0x28, 0xCE, 0x01, 0x20, 0xAD, 0x01, 0x20, 0xCE, + 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x8C, 0x21, 0x11, 0x19, 0x11, 0x19, 0x53, 0x19, 0x74, 0x11, 0x74, 0x19, 0xB6, 0x2A, 0x38, 0x2A, 0x17, 0x19, 0x74, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x06, 0x29, 0x30, 0x83, 0x29, 0x10, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x90, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x50, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x09, 0x33, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x19, 0x51, 0x19, 0x31, 0x01, 0x11, 0x32, 0x85, 0x19, 0xD5, 0x22, 0x16, 0x21, 0xF6, 0x19, 0x95, 0x08, 0xF2, 0x11, 0x12, 0x01, 0x21, 0x52, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, + 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x05, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x11, 0x01, 0x19, 0x31, 0x86, 0x11, 0x32, 0x19, 0x94, 0x21, 0xF5, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x12, 0x19, 0x31, 0x02, 0x21, 0x31, 0x8B, 0x21, 0x11, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x19, 0xF7, 0x12, 0x18, 0x1A, 0x18, 0x11, 0x95, 0x11, 0x33, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x30, 0x08, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x85, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x84, 0x28, 0xF0, 0x28, 0xEF, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x04, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x31, 0x88, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x95, 0x19, 0xF7, 0x1A, 0x38, 0x1A, 0x58, 0x1A, 0x38, 0x1A, 0x18, 0x01, 0x19, 0xF7, 0x81, 0x19, 0xD7, 0x19, 0xB7, 0x01, 0x11, 0x96, 0x80, 0x11, 0xB7, 0x02, 0x11, 0x96, 0x86, 0x11, 0xB6, 0x11, 0x96, 0x11, 0xB6, + 0x11, 0x95, 0x11, 0xB6, 0x11, 0x96, 0x19, 0xB6, 0x01, 0x19, 0x96, 0x01, 0x19, 0xB6, 0x02, 0x11, 0xB6, 0x81, 0x19, 0xB6, 0x19, 0xD6, 0x01, 0x11, 0xB6, 0x80, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x81, 0x11, 0x96, 0x11, 0xD6, 0x01, 0x11, 0xB6, 0x85, 0x19, 0xB6, 0x11, 0x96, 0x11, 0xB6, 0x11, 0x96, 0x11, 0x95, 0x11, 0xB5, 0x02, 0x11, 0x95, 0x81, 0x11, 0xB6, 0x11, 0x96, 0x03, 0x11, 0xB6, 0x82, 0x19, 0xB6, 0x11, 0xB6, 0x11, 0xD6, 0x01, 0x11, 0xB6, 0x84, 0x19, 0xB6, 0x11, 0xB6, 0x11, 0xB5, 0x11, 0xB6, 0x11, 0xB5, 0x01, 0x19, 0xD6, 0x81, 0x19, 0xB6, 0x19, 0xD6, 0x01, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x02, 0x1A, 0x17, 0x83, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x54, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x83, 0x11, 0x33, 0x11, 0x74, 0x19, 0x95, 0x19, 0xF6, 0x01, 0x19, 0xD7, 0x8A, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x04, 0x29, 0x30, 0x87, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0xF6, 0x11, 0x74, 0x11, 0x53, 0x01, 0x19, 0x32, 0x80, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x12, 0x83, 0x19, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xD7, 0x01, 0x11, 0xF8, 0x88, 0x12, 0x18, 0x11, 0xF8, 0x11, + 0xD7, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x19, 0x33, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x51, 0x85, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x01, 0x22, 0x17, 0x85, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x05, 0x21, 0x10, 0x02, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, + 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0A, 0x21, 0x31, 0x80, 0x19, 0x31, 0x03, 0x21, 0x31, 0x80, 0x19, 0x31, 0x04, 0x21, 0x31, 0x01, 0x19, 0x31, 0x83, 0x19, 0x30, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x11, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x11, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x19, 0x10, 0x19, 0x11, 0x02, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x11, 0x83, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x02, 0x21, 0x31, 0x83, 0x21, 0x10, 0x21, 0x11, 0x19, 0x10, 0x21, 0x11, 0x04, 0x21, 0x10, 0x83, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x01, 0x19, 0x32, 0x82, 0x19, 0x33, 0x19, 0x32, 0x19, 0x53, 0x01, 0x19, 0x33, 0x88, 0x19, 0x13, 0x19, 0x33, 0x11, 0x13, 0x11, 0x33, 0x11, 0x13, 0x11, 0x33, 0x19, 0x34, 0x11, 0x33, 0x11, 0x13, 0x01, 0x11, 0x33, 0x80, 0x11, 0x34, 0x02, 0x11, 0x33, 0x01, 0x11, 0x34, 0x80, 0x11, 0x33, 0x01, 0x11, 0x34, 0x80, 0x11, 0x13, 0x02, 0x11, 0x34, 0x80, 0x11, 0x33, 0x01, 0x11, 0x34, 0x80, 0x11, 0x33, 0x01, 0x11, 0x34, 0x02, + 0x11, 0x33, 0x80, 0x11, 0x53, 0x01, 0x11, 0x33, 0x04, 0x11, 0x34, 0x85, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x12, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x89, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x19, 0xF7, 0x1A, 0x18, 0x11, 0xF7, 0x19, 0xD6, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x29, 0x50, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8C, 0x19, 0x31, 0x11, 0x32, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x13, 0x19, 0x12, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x87, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x01, 0x19, 0x32, 0x81, 0x11, 0x33, 0x19, 0x95, 0x01, 0x19, 0xD6, 0x84, 0x19, 0xB5, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, + 0x02, 0x29, 0x2F, 0x84, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x06, 0x29, 0x10, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x21, 0x11, 0x21, 0x32, 0x19, 0x12, 0x10, 0xF2, 0x19, 0x74, 0x29, 0xF6, 0x21, 0xD6, 0x21, 0xB5, 0x01, 0x11, 0x12, 0x83, 0x19, 0x52, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x50, 0x21, 0x30, 0x21, 0x51, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x11, 0x85, 0x19, 0x33, 0x11, 0x54, 0x09, 0x54, 0x09, 0x76, 0x11, 0xD7, 0x11, 0xD8, 0x01, 0x11, 0xF8, 0x82, 0x11, 0xB6, 0x09, 0x54, 0x11, 0x53, 0x01, 0x19, 0x52, 0x81, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x89, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8E, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x19, 0x95, 0x21, 0xF7, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x54, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, + 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8A, 0x28, 0xEE, 0x28, 0xCE, 0x28, 0xCD, 0x28, 0xAD, 0x18, 0x4B, 0x49, 0xF2, 0x41, 0x90, 0x20, 0x8D, 0x20, 0xCE, 0x28, 0xEF, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x19, 0x96, 0x2A, 0x18, 0x2A, 0x17, 0x11, 0x74, 0x11, 0x13, 0x19, 0x12, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x88, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x07, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x21, 0xF7, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x30, 0x82, 0x21, 0x50, 0x19, 0x51, 0x19, 0x31, 0x01, 0x11, 0x32, 0x88, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xF6, 0x19, 0x95, 0x08, 0xF2, 0x11, 0x12, 0x21, 0x52, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, + 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x88, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x11, 0x01, 0x19, 0x31, 0x86, 0x11, 0x32, 0x19, 0x94, 0x21, 0xF5, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x8C, 0x21, 0x11, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x11, 0x12, 0x11, 0x53, 0x19, 0xF7, 0x1A, 0x38, 0x11, 0xF8, 0x11, 0xB6, 0x09, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x06, 0x29, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x04, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x04, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8D, 0x21, 0x30, 0x21, 0x10, 0x19, 0x11, 0x19, 0x31, + 0x11, 0x11, 0x11, 0x33, 0x11, 0x95, 0x11, 0xD6, 0x22, 0x38, 0x22, 0x59, 0x22, 0x79, 0x22, 0x59, 0x2A, 0x5A, 0x2A, 0x7A, 0x01, 0x2A, 0x5A, 0x84, 0x2A, 0x7A, 0x2A, 0x5A, 0x22, 0x5A, 0x2A, 0x7A, 0x22, 0x79, 0x01, 0x22, 0x59, 0x80, 0x2A, 0x79, 0x01, 0x22, 0x59, 0x85, 0x2A, 0x59, 0x2A, 0x79, 0x2A, 0x59, 0x2A, 0x39, 0x22, 0x59, 0x2A, 0x59, 0x02, 0x22, 0x59, 0x84, 0x22, 0x7A, 0x22, 0x59, 0x2A, 0x7A, 0x22, 0x59, 0x22, 0x39, 0x02, 0x22, 0x59, 0x01, 0x22, 0x7A, 0x80, 0x2A, 0x7A, 0x02, 0x22, 0x59, 0x82, 0x22, 0x39, 0x22, 0x59, 0x22, 0x39, 0x02, 0x2A, 0x59, 0x02, 0x22, 0x59, 0x01, 0x22, 0x79, 0x05, 0x22, 0x59, 0x80, 0x22, 0x39, 0x01, 0x22, 0x59, 0x01, 0x22, 0x58, 0x83, 0x22, 0x59, 0x22, 0x38, 0x22, 0x59, 0x1A, 0x18, 0x01, 0x22, 0x38, 0x89, 0x1A, 0x18, 0x19, 0xF8, 0x1A, 0x18, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x54, 0x11, 0x53, 0x04, 0x11, 0x32, 0x84, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x19, 0xD7, 0x01, 0x21, 0xF7, 0x85, 0x19, 0x95, 0x11, 0x54, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x4F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x21, 0x31, 0x80, 0x21, 0x51, 0x03, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x86, 0x22, 0x37, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, + 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x86, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x11, 0xB7, 0x11, 0xF8, 0x12, 0x18, 0x01, 0x11, 0xF8, 0x88, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x34, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8F, 0x21, 0x51, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x22, 0x17, 0x1A, 0x17, 0x19, 0xF6, 0x19, 0xB5, 0x09, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x10, 0x06, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x04, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x09, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x87, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, + 0x21, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x03, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x06, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x31, 0x06, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x08, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x11, 0x80, 0x19, 0x11, 0x01, 0x21, 0x32, 0x01, 0x19, 0x12, 0x83, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x01, 0x19, 0x32, 0x80, 0x11, 0x12, 0x02, 0x19, 0x12, 0x01, 0x11, 0x12, 0x81, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x12, 0x80, 0x11, 0x12, 0x02, 0x19, 0x12, 0x02, 0x11, 0x12, 0x80, 0x19, 0x32, 0x01, 0x19, 0x12, 0x83, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x19, 0x52, 0x01, 0x11, 0x12, 0x85, + 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x19, 0xF7, 0x1A, 0x38, 0x11, 0xF8, 0x11, 0xB6, 0x11, 0x33, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x21, 0xD6, 0x01, 0x19, 0xF7, 0x84, 0x19, 0x95, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x8A, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, + 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x21, 0x32, 0x19, 0x12, 0x10, 0xF2, 0x19, 0x74, 0x21, 0xD6, 0x21, 0xB6, 0x19, 0x95, 0x10, 0xF2, 0x11, 0x12, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x19, 0x10, 0x19, 0x11, 0x01, 0x19, 0x32, 0x83, 0x19, 0x54, 0x11, 0x75, 0x11, 0x76, 0x11, 0x96, 0x01, 0x11, 0xF8, 0x02, 0x11, 0xD7, 0x82, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x83, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x51, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x19, 0x74, 0x21, 0xF6, 0x21, 0xF7, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0x75, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x28, 0xCD, 0x01, 0x28, 0xAD, 0x86, 0x20, 0x6C, + 0x39, 0x2E, 0x9C, 0x3A, 0xDE, 0x3F, 0xBD, 0x5E, 0x10, 0x2B, 0x28, 0xCE, 0x01, 0x29, 0x0F, 0x80, 0x28, 0xEF, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x8D, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x19, 0x12, 0x11, 0x54, 0x11, 0x75, 0x21, 0xF8, 0x22, 0x18, 0x19, 0x75, 0x11, 0x13, 0x19, 0x12, 0x19, 0x32, 0x19, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x0A, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x8B, 0x19, 0x10, 0x19, 0x31, 0x11, 0x12, 0x11, 0x13, 0x21, 0xB6, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xF6, 0x19, 0x95, 0x08, 0xF2, 0x11, 0x12, 0x19, 0x52, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, + 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x9C, 0x21, 0x51, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x19, 0x94, 0x21, 0xF5, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x19, 0x10, 0x21, 0x11, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x19, 0xF7, 0x1A, 0x38, 0x12, 0x18, 0x11, 0xB6, 0x11, 0x33, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x30, 0x04, 0x21, 0x10, 0x89, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x04, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x08, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x82, 0x11, 0x32, 0x11, 0x54, 0x11, 0x95, 0x02, 0x19, 0xD7, 0x02, 0x19, 0xD8, 0x01, 0x22, 0x19, 0x85, 0x19, 0xF8, 0x21, 0xF8, 0x1A, 0x18, 0x19, 0xF8, 0x22, 0x18, 0x1A, 0x18, 0x04, 0x19, 0xF8, 0x80, 0x19, 0xF7, 0x07, 0x19, 0xF8, 0x81, 0x1A, 0x18, 0x19, 0xF8, + 0x01, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x01, 0x19, 0xD8, 0x01, 0x19, 0xF8, 0x81, 0x1A, 0x18, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x84, 0x19, 0xD7, 0x19, 0xF8, 0x21, 0xF8, 0x19, 0xF8, 0x22, 0x18, 0x05, 0x19, 0xF8, 0x01, 0x19, 0xD8, 0x80, 0x22, 0x18, 0x01, 0x19, 0xF7, 0x80, 0x1A, 0x17, 0x04, 0x19, 0xF7, 0x80, 0x19, 0xD7, 0x02, 0x19, 0xF7, 0x80, 0x1A, 0x18, 0x01, 0x19, 0xF7, 0x01, 0x19, 0xD6, 0x84, 0x19, 0x95, 0x11, 0x74, 0x11, 0x53, 0x19, 0x53, 0x11, 0x33, 0x03, 0x11, 0x32, 0x83, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x01, 0x19, 0xD7, 0x82, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x01, 0x19, 0x32, 0x81, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x31, 0x81, 0x21, 0x51, 0x19, 0x31, 0x02, 0x21, 0x51, 0x81, 0x21, 0x31, 0x21, 0x51, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x89, 0x12, 0x18, 0x11, 0xF7, 0x11, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x21, 0x11, 0x01, 0x19, 0x11, 0x84, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x01, 0x11, 0xF8, 0x89, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0x96, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x89, 0x21, 0x30, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, + 0x11, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x22, 0x17, 0x01, 0x19, 0xF7, 0x85, 0x19, 0xB5, 0x09, 0x33, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x06, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x06, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x06, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, + 0x10, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x09, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x20, 0xF0, 0x05, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x04, 0x21, 0x11, 0x04, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x19, 0x32, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x21, 0x32, 0x02, 0x19, 0x11, 0x81, 0x19, 0x32, 0x19, 0x31, 0x03, 0x19, 0x11, 0x84, 0x19, 0x31, 0x21, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x02, 0x19, 0x11, 0x01, 0x21, 0x11, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, + 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x19, 0xF7, 0x1A, 0x39, 0x1A, 0x18, 0x19, 0xD6, 0x09, 0x33, 0x19, 0x32, 0x21, 0x51, 0x01, 0x21, 0x30, 0x83, 0x29, 0x50, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x8F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x33, 0x19, 0x12, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x19, 0x95, 0x22, 0x17, 0x19, 0xF6, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x85, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x12, 0x10, 0xF2, 0x19, 0x75, 0x21, 0xD6, 0x21, 0xB6, 0x19, 0xB5, 0x01, + 0x11, 0x12, 0x80, 0x21, 0x51, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x11, 0x87, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xD7, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xB7, 0x01, 0x09, 0x97, 0x84, 0x11, 0xF8, 0x11, 0xD7, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x01, 0x19, 0x52, 0x84, 0x19, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8A, 0x11, 0x12, 0x11, 0x32, 0x19, 0x74, 0x21, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x02, 0x21, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x8C, 0x29, 0x0E, 0x28, 0xCD, 0x30, 0xCD, 0x28, 0x8C, 0x20, 0x2A, 0x6A, 0x32, 0xC5, 0x1D, 0xCD, 0x9F, 0xD5, 0xDF, 0x9C, 0x5A, 0x10, 0x2B, 0x20, 0xCE, 0x28, 0xEE, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x31, 0x19, 0x32, 0x11, 0x54, 0x19, 0xD7, 0x22, 0x18, 0x21, 0xD7, 0x11, 0x14, 0x10, 0xF2, 0x19, 0x32, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, + 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x0A, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x87, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x19, 0x95, 0x01, 0x21, 0xF7, 0x84, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x19, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x50, 0x19, 0x30, 0x19, 0x51, 0x01, 0x11, 0x32, 0x87, 0x21, 0xD6, 0x21, 0xF6, 0x19, 0xD6, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x11, 0x21, 0x52, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x08, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x11, 0x31, 0x85, 0x19, 0xB4, 0x21, 0xF5, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x95, 0x21, 0x11, 0x21, 0x10, 0x21, 0x11, 0x19, 0x31, 0x19, 0x32, 0x09, 0x33, 0x19, 0xF7, 0x1A, + 0x38, 0x12, 0x18, 0x11, 0x96, 0x11, 0x53, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x86, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x08, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x82, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x01, 0x11, 0x33, 0x83, 0x11, 0x34, 0x11, 0x54, 0x11, 0x55, 0x11, 0x34, 0x02, 0x11, 0x55, 0x08, 0x11, 0x75, 0x83, 0x19, 0x95, 0x11, 0x55, 0x11, 0x75, 0x11, 0x55, 0x03, 0x11, 0x75, 0x80, 0x11, 0x55, 0x11, 0x11, 0x75, 0x80, 0x11, 0x55, 0x01, 0x11, 0x75, 0x80, 0x11, 0x55, 0x05, 0x11, 0x75, 0x80, 0x11, 0x55, 0x09, 0x11, 0x75, 0x87, 0x11, 0x95, 0x11, 0x75, 0x11, 0x95, 0x11, 0x75, 0x11, 0x74, 0x11, 0x75, 0x11, 0x74, 0x11, 0x54, 0x02, 0x11, 0x33, 0x8E, 0x11, 0x32, 0x19, 0x32, 0x11, 0x32, 0x11, 0x52, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x19, 0xF7, 0x19, 0xD7, 0x21, 0xF7, + 0x19, 0x96, 0x11, 0x54, 0x19, 0x32, 0x01, 0x19, 0x11, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x19, 0x52, 0x02, 0x19, 0x32, 0x02, 0x19, 0x31, 0x03, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x86, 0x09, 0xF8, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x11, 0x83, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x19, 0x32, 0x01, 0x11, 0x12, 0x8B, 0x11, 0x34, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xD8, 0x11, 0xF9, 0x12, 0x19, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0x96, 0x11, 0x75, 0x11, 0x34, 0x11, 0x12, 0x01, 0x19, 0x11, 0x82, 0x21, 0x30, 0x29, 0x50, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8D, 0x19, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x19, 0x94, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x17, 0x11, 0x95, 0x09, 0x33, 0x11, 0x33, 0x19, 0x53, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x80, 0x29, 0x10, 0x06, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, + 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x86, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0F, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0A, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x10, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x09, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x03, 0x21, 0x10, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x01, 0x19, 0x10, 0x81, 0x21, 0x31, 0x21, 0x11, 0x07, 0x21, 0x31, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x19, 0x31, 0x0E, 0x21, 0x31, 0x80, 0x19, 0x10, 0x01, 0x21, 0x31, 0x80, 0x21, 0x52, 0x02, 0x21, 0x31, 0x01, 0x21, 0x10, 0x03, + 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x09, 0x34, 0x11, 0xD7, 0x1A, 0x18, 0x11, 0xF8, 0x11, 0xD6, 0x09, 0x32, 0x11, 0x11, 0x19, 0x51, 0x21, 0x51, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x19, 0x31, 0x11, 0x32, 0x19, 0x74, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x82, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x19, 0x12, 0x11, 0x33, 0x19, 0x75, 0x21, 0xF6, 0x19, 0xF6, 0x19, 0xD6, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, + 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x10, 0xF2, 0x19, 0x95, 0x01, 0x21, 0xF6, 0x87, 0x19, 0x95, 0x09, 0x12, 0x10, 0xF1, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x50, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x18, 0xF0, 0x10, 0xF1, 0x11, 0x33, 0x11, 0x75, 0x19, 0xF7, 0x1A, 0x18, 0x11, 0xD8, 0x09, 0xB7, 0x03, 0x09, 0x97, 0x89, 0x11, 0xB7, 0x11, 0xF8, 0x1A, 0x39, 0x11, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x19, 0x52, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x90, 0x19, 0x30, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x74, 0x21, 0xD6, 0x2A, 0x38, 0x22, 0x17, 0x19, 0xD7, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8B, 0x28, 0xCD, 0x30, 0xCD, 0x28, 0x4B, 0x38, 0xAC, 0xA3, 0xD8, 0xDD, 0x7E, 0xC4, 0xDC, 0xBC, 0xDC, 0xCD, 0x9F, 0x49, 0x90, 0x18, 0x4C, 0x20, 0xCE, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, + 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0x95, 0x01, 0x22, 0x18, 0x84, 0x19, 0x96, 0x08, 0xF3, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x89, 0x19, 0x12, 0x11, 0x32, 0x21, 0xB5, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x30, 0x8B, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x31, 0x11, 0x11, 0x09, 0x32, 0x21, 0xD6, 0x22, 0x17, 0x21, 0xF6, 0x19, 0x94, 0x09, 0x12, 0x11, 0x31, 0x21, 0x51, 0x03, 0x21, 0x30, 0x06, 0x21, 0x10, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, + 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x87, 0x11, 0x32, 0x19, 0xB4, 0x21, 0xF5, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x89, 0x19, 0x11, 0x19, 0x32, 0x11, 0x54, 0x1A, 0x17, 0x1A, 0x38, 0x12, 0x18, 0x11, 0xB6, 0x11, 0x33, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x03, 0x29, 0x30, 0x80, 0x21, 0x10, 0x04, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x02, 0x19, 0x12, 0x80, 0x11, 0x12, 0x02, 0x19, 0x12, 0x02, 0x11, 0x12, 0x85, 0x19, 0x33, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x04, 0x11, 0x12, 0x01, 0x11, 0x13, 0x03, 0x11, + 0x33, 0x81, 0x11, 0x13, 0x11, 0x12, 0x05, 0x11, 0x33, 0x80, 0x11, 0x12, 0x01, 0x11, 0x13, 0x02, 0x11, 0x33, 0x01, 0x11, 0x13, 0x02, 0x11, 0x12, 0x01, 0x11, 0x33, 0x81, 0x11, 0x13, 0x11, 0x12, 0x01, 0x11, 0x33, 0x05, 0x11, 0x12, 0x03, 0x11, 0x32, 0x03, 0x11, 0x12, 0x01, 0x11, 0x33, 0x01, 0x11, 0x53, 0x81, 0x11, 0x33, 0x11, 0x32, 0x01, 0x11, 0x12, 0x83, 0x11, 0x11, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x01, 0x11, 0x32, 0x01, 0x11, 0x53, 0x81, 0x11, 0x54, 0x11, 0x95, 0x01, 0x19, 0xF7, 0x83, 0x22, 0x17, 0x19, 0xB6, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x4F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x02, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x11, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x09, 0xF9, 0x09, 0xF8, 0x01, 0x11, 0xD8, 0x84, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x03, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x11, 0x12, 0x8F, 0x11, 0x54, 0x11, 0xB6, 0x11, 0xB7, 0x1A, 0x19, 0x11, 0xF9, 0x12, 0x19, 0x11, 0xF9, 0x09, 0xD7, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x88, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, + 0x11, 0x53, 0x11, 0x74, 0x19, 0xD5, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x87, 0x11, 0x95, 0x09, 0x33, 0x11, 0x33, 0x19, 0x52, 0x21, 0x32, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x07, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x0B, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, + 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x11, 0x21, 0x30, 0x02, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x50, 0x21, 0x30, + 0x19, 0x31, 0x11, 0x12, 0x11, 0x13, 0x09, 0x34, 0x19, 0xF8, 0x01, 0x12, 0x18, 0x84, 0x11, 0xD7, 0x09, 0x33, 0x11, 0x11, 0x19, 0x51, 0x21, 0x51, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x8A, 0x21, 0x30, 0x21, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x12, 0x11, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x19, 0x12, 0x11, 0x33, 0x19, 0x74, 0x19, 0xB6, 0x19, 0xD6, 0x21, 0xF6, 0x11, 0x54, 0x19, 0x52, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x08, 0xF2, 0x19, 0x95, 0x01, 0x21, 0xD6, 0x83, 0x19, 0xB5, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x11, 0x10, 0xF1, 0x09, 0x33, 0x19, + 0xD6, 0x19, 0xF7, 0x11, 0xF8, 0x09, 0xB7, 0x03, 0x09, 0x76, 0x01, 0x09, 0x96, 0x89, 0x11, 0xD7, 0x12, 0x18, 0x19, 0xF8, 0x11, 0x95, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x51, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x11, 0x32, 0x11, 0x54, 0x21, 0xD6, 0x01, 0x22, 0x17, 0x83, 0x21, 0xF7, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x83, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x0E, 0x28, 0xCD, 0x28, 0xAC, 0x28, 0x4A, 0x49, 0x0D, 0xC4, 0xBB, 0xD5, 0x1D, 0x01, 0xC4, 0xBB, 0x84, 0xC4, 0xFD, 0xAC, 0x7B, 0x28, 0x8C, 0x20, 0x8D, 0x20, 0xCE, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x8A, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0xB6, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0x96, 0x09, 0x13, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x08, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x89, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, + 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x22, 0x17, 0x01, 0x19, 0xD6, 0x85, 0x11, 0x54, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x8A, 0x21, 0x30, 0x21, 0x31, 0x11, 0x31, 0x11, 0x32, 0x19, 0xD5, 0x22, 0x17, 0x21, 0xF6, 0x19, 0x94, 0x09, 0x12, 0x19, 0x32, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x85, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x87, 0x11, 0x31, 0x19, 0xB4, 0x21, 0xF5, 0x19, 0xD5, 0x19, 0xB4, 0x11, 0x32, 0x19, 0x32, 0x21, 0x52, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x89, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x1A, 0x17, 0x1A, 0x18, 0x11, 0xF8, 0x11, 0xB6, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x51, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, + 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x21, 0x11, 0x01, 0x19, 0x11, 0x01, 0x21, 0x11, 0x09, 0x19, 0x11, 0x80, 0x19, 0x31, 0x04, 0x19, 0x11, 0x80, 0x19, 0x32, 0x01, 0x19, 0x11, 0x84, 0x19, 0x32, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x04, 0x19, 0x11, 0x80, 0x19, 0x32, 0x07, 0x19, 0x11, 0x81, 0x19, 0x12, 0x19, 0x32, 0x15, 0x19, 0x11, 0x81, 0x19, 0x12, 0x11, 0x11, 0x01, 0x19, 0x12, 0x81, 0x19, 0x32, 0x11, 0x11, 0x03, 0x19, 0x11, 0x01, 0x19, 0x32, 0x84, 0x11, 0x32, 0x11, 0x53, 0x09, 0x53, 0x11, 0x74, 0x11, 0xB5, 0x02, 0x19, 0xF7, 0x85, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, + 0x21, 0x30, 0x83, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x01, 0x11, 0x54, 0x02, 0x11, 0x74, 0x80, 0x11, 0x33, 0x01, 0x11, 0x53, 0x82, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x09, 0xF9, 0x01, 0x11, 0xD8, 0x84, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x02, 0x21, 0x31, 0x86, 0x21, 0x32, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x02, 0x11, 0xF9, 0x88, 0x11, 0xD8, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x53, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x8F, 0x21, 0x30, 0x21, 0x51, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x94, 0x19, 0xB5, 0x19, 0xF6, 0x1A, 0x17, 0x22, 0x17, 0x11, 0xB5, 0x09, 0x34, 0x11, 0x33, 0x19, 0x12, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x05, 0x21, 0x10, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x08, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, + 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x05, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x20, 0xF0, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, + 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0B, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x50, 0x0D, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x8C, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x50, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, 0x13, 0x09, 0x54, 0x1A, 0x18, 0x01, 0x12, 0x19, 0x85, 0x1A, 0x18, 0x09, 0x74, 0x09, 0x12, 0x19, 0x31, 0x19, 0x30, 0x21, 0x50, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x8D, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x33, 0x11, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x8B, 0x19, 0x11, 0x19, 0x32, 0x19, 0x33, 0x19, 0x95, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x32, 0x19, 0x51, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, + 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x01, 0x19, 0xD6, 0x86, 0x19, 0xB5, 0x11, 0x33, 0x19, 0x32, 0x19, 0x51, 0x19, 0x10, 0x21, 0x30, 0x29, 0x50, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x51, 0x86, 0x19, 0x31, 0x11, 0x12, 0x11, 0x95, 0x1A, 0x17, 0x11, 0xD7, 0x11, 0xB7, 0x09, 0x97, 0x05, 0x09, 0x76, 0x87, 0x11, 0xB7, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x34, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x50, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x81, 0x21, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x88, 0x31, 0x30, 0x29, 0x0F, 0x28, + 0xCE, 0x28, 0xAD, 0x28, 0x8C, 0x28, 0x4A, 0x51, 0x2D, 0xD5, 0x3D, 0xD4, 0xDB, 0x01, 0xCC, 0xBB, 0x87, 0xC4, 0x7A, 0xD5, 0x3E, 0x6A, 0x73, 0x20, 0x8C, 0x20, 0x8D, 0x20, 0xCE, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x8F, 0x29, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0xB6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x09, 0x12, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x29, 0x30, 0x01, 0x29, 0x10, 0x08, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x21, 0xB5, 0x22, 0x17, 0x19, 0xF6, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x11, 0x31, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xF6, 0x19, 0x95, 0x09, 0x12, 0x11, 0x31, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, + 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x84, 0x11, 0x32, 0x19, 0xB4, 0x21, 0xD5, 0x19, 0xD5, 0x19, 0xB4, 0x01, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x8A, 0x21, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x1A, 0x17, 0x1A, 0x18, 0x11, 0xF8, 0x11, 0x95, 0x11, 0x32, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x51, 0x04, 0x21, 0x31, 0x01, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x51, 0x03, 0x21, 0x31, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x06, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, + 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x21, 0x10, 0x04, 0x21, 0x31, 0x80, 0x21, 0x11, 0x08, 0x21, 0x31, 0x83, 0x21, 0x11, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x11, 0x84, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x19, 0x31, 0x01, 0x21, 0x31, 0x85, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x11, 0x02, 0x21, 0x31, 0x81, 0x19, 0x31, 0x21, 0x31, 0x01, 0x19, 0x31, 0x87, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x19, 0x10, 0x21, 0x11, 0x21, 0x31, 0x19, 0x10, 0x01, 0x21, 0x31, 0x83, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x04, 0x19, 0x31, 0x80, 0x19, 0x52, 0x02, 0x19, 0x32, 0x01, 0x11, 0x33, 0x8A, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x30, 0x19, 0x52, 0x19, 0x53, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD6, 0x19, 0xF7, 0x1A, 0x17, 0x02, 0x21, 0xF7, 0x86, 0x21, 0xF6, 0x21, 0xD6, 0x21, 0xB5, 0x19, 0x94, 0x19, 0x52, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x4F, 0x81, 0x09, 0xD9, 0x09, 0xD8, 0x02, 0x11, 0xD8, 0x84, 0x11, + 0xB7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x53, 0x19, 0x32, 0x01, 0x19, 0x11, 0x89, 0x21, 0x31, 0x21, 0x51, 0x21, 0x52, 0x19, 0x32, 0x11, 0x11, 0x11, 0x12, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xF8, 0x02, 0x12, 0x19, 0x85, 0x11, 0xF8, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x29, 0x50, 0x8E, 0x21, 0x51, 0x21, 0x30, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x94, 0x11, 0xB5, 0x19, 0xF6, 0x22, 0x37, 0x22, 0x17, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x84, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0D, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0F, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, + 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x06, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, + 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x87, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x8B, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x71, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x09, 0x55, 0x12, 0x18, 0x01, 0x12, 0x19, 0x86, 0x1A, 0x39, 0x11, 0x95, 0x09, 0x32, 0x11, 0x31, 0x19, 0x31, 0x21, 0x51, 0x21, 0x50, 0x01, 0x21, 0x30, 0x89, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x74, 0x01, 0x19, 0xD6, 0x81, 0x21, 0xF7, 0x19, 0xD6, 0x01, 0x11, 0x12, 0x81, 0x19, 0x31, 0x21, 0x31, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x20, 0xEF, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x8C, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x33, 0x19, 0x74, 0x21, 0xF7, 0x19, 0xF7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x13, 0x19, 0x52, 0x21, 0x51, 0x21, 0x31, 0x02, 0x21, 0x30, 0x83, 0x29, 0x50, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, + 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x21, 0xF6, 0x19, 0xD6, 0x19, 0xD5, 0x11, 0x32, 0x11, 0x12, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x51, 0x19, 0x32, 0x11, 0x33, 0x11, 0xB5, 0x01, 0x11, 0xD7, 0x83, 0x11, 0xB7, 0x09, 0x76, 0x09, 0x55, 0x09, 0x56, 0x02, 0x09, 0x55, 0x8B, 0x09, 0x76, 0x09, 0x97, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0xB7, 0x09, 0x54, 0x19, 0x53, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x89, 0x19, 0x32, 0x11, 0x32, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x18, 0x22, 0x17, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x28, 0xCE, 0x28, 0xAD, 0x28, 0xAC, 0x20, 0x09, 0x61, 0xF0, 0xCC, 0xDB, 0x01, 0xD4, 0xDB, 0x87, 0xCC, + 0xBA, 0xD4, 0xDB, 0xD4, 0xFC, 0xB4, 0x3A, 0x30, 0xAC, 0x20, 0x8D, 0x20, 0xAD, 0x20, 0xEF, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x89, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0xB6, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x33, 0x01, 0x19, 0x31, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x29, 0x50, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x19, 0x31, 0x88, 0x11, 0x32, 0x19, 0xB5, 0x21, 0xF7, 0x19, 0xF6, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x19, 0x30, 0x11, 0x31, 0x11, 0x33, 0x19, 0xB5, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x31, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, + 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x87, 0x11, 0x32, 0x19, 0xB4, 0x21, 0xF5, 0x19, 0xD5, 0x19, 0xB4, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x03, 0x21, 0x31, 0x89, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xF7, 0x1A, 0x18, 0x11, 0xF7, 0x11, 0xB6, 0x09, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x83, 0x29, 0x71, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x19, 0x32, 0x01, 0x21, 0x73, 0x81, 0x21, 0x52, 0x19, 0x32, 0x01, 0x19, 0x31, 0x02, 0x21, 0x31, 0x03, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, + 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x31, 0x07, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x08, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x19, 0x10, 0x21, 0x31, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x02, 0x19, 0x31, 0x02, 0x19, 0x52, 0x8D, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x32, 0x21, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x8A, 0x19, 0x30, 0x21, 0x30, 0x19, 0x11, 0x11, 0x32, 0x11, 0x74, 0x11, 0x95, 0x19, 0xD7, 0x19, 0xF7, 0x1A, 0x17, 0x1A, 0x18, 0x19, 0xF7, 0x01, 0x22, 0x18, 0x88, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xD6, 0x21, 0xD5, 0x19, 0x73, 0x19, 0x52, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x50, 0x80, 0x21, 0x70, 0x01, 0x09, 0xB7, 0x80, 0x09, 0xB8, 0x01, 0x11, 0xF8, 0x85, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x74, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x11, 0x89, 0x21, 0x31, 0x21, 0x52, 0x21, + 0x51, 0x19, 0x11, 0x11, 0x31, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x09, 0xB7, 0x11, 0xF8, 0x01, 0x12, 0x19, 0x87, 0x12, 0x18, 0x09, 0xD7, 0x11, 0xD7, 0x11, 0x75, 0x11, 0x53, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x8D, 0x19, 0x10, 0x19, 0x31, 0x11, 0x52, 0x11, 0x32, 0x11, 0x74, 0x11, 0xB5, 0x22, 0x17, 0x22, 0x38, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x21, 0x31, 0x02, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x86, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x03, 0x21, 0x10, 0x03, 0x29, 0x10, 0x06, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, + 0x21, 0x0F, 0x08, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x04, 0x21, 0x10, 0x02, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x09, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x07, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x08, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x88, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, + 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x0A, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x91, 0x19, 0x0F, 0x18, 0xF0, 0x11, 0x11, 0x11, 0x33, 0x11, 0x34, 0x09, 0x55, 0x11, 0xF8, 0x11, 0xF9, 0x12, 0x19, 0x11, 0xF8, 0x11, 0xB6, 0x09, 0x33, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x83, 0x19, 0x31, 0x19, 0x32, 0x11, 0x54, 0x21, 0xF6, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xB5, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x8D, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x74, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x21, 0x51, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, + 0x21, 0x30, 0x8D, 0x21, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x12, 0x21, 0xD6, 0x21, 0xF6, 0x19, 0xD6, 0x19, 0xD5, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x88, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x09, 0x12, 0x11, 0xB5, 0x11, 0xF7, 0x11, 0xF8, 0x09, 0x97, 0x02, 0x09, 0x55, 0x80, 0x09, 0x75, 0x01, 0x09, 0x34, 0x8D, 0x09, 0x55, 0x11, 0x97, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x55, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x31, 0x8C, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xD7, 0x19, 0x96, 0x11, 0x54, 0x10, 0xF2, 0x18, 0xF1, 0x19, 0x11, 0x21, 0x11, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x86, 0x29, 0x0F, 0x28, 0xCE, 0x20, 0x8D, 0x28, 0x8C, 0x30, 0x6B, 0x7A, 0x93, 0xE5, 0x7E, 0x01, 0xD4, 0xDB, 0x88, 0xD4, 0x9A, 0xD4, 0xBA, 0xDD, 0x3C, 0xCC, 0xBB, 0x48, 0xED, 0x30, 0xAD, 0x20, 0xAD, 0x28, 0xEE, 0x29, 0x30, 0x01, 0x28, 0xEF, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x90, 0x21, 0x10, 0x29, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0xB6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, + 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x09, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x31, 0x86, 0x19, 0x32, 0x11, 0x32, 0x19, 0xB5, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB6, 0x09, 0x33, 0x01, 0x11, 0x32, 0x80, 0x19, 0x11, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x19, 0x10, 0x11, 0x11, 0x11, 0x33, 0x19, 0xB5, 0x22, 0x17, 0x19, 0xF7, 0x19, 0x95, 0x09, 0x12, 0x11, 0x32, 0x19, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x19, 0x31, 0x86, 0x11, 0x32, 0x19, + 0x94, 0x21, 0xD5, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x8B, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x54, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x95, 0x11, 0x32, 0x11, 0x31, 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x21, 0x71, 0x21, 0x51, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x32, 0x02, 0x19, 0x53, 0x85, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x19, 0x32, 0x19, 0x52, 0x19, 0x32, 0x02, 0x21, 0x31, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x05, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, + 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x11, 0x53, 0x8B, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF6, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x93, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x19, 0x53, 0x19, 0x95, 0x11, 0xB6, 0x11, 0xB7, 0x19, 0xF8, 0x1A, 0x18, 0x11, 0xB6, 0x11, 0x96, 0x11, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x94, 0x11, 0x52, 0x19, 0x31, 0x01, 0x19, 0x30, 0x85, 0x21, 0x50, 0x21, 0x70, 0x21, 0x50, 0x09, 0x76, 0x09, 0x96, 0x11, 0xB7, 0x01, 0x11, 0xD8, 0x88, 0x11, 0xF8, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x02, 0x21, 0x31, 0x85, 0x19, 0x52, 0x11, 0x52, 0x11, 0x73, 0x11, 0x74, 0x11, 0x96, 0x09, 0xB7, 0x02, 0x11, 0xF8, 0x8C, 0x12, 0x18, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x52, 0x11, 0x53, 0x11, 0x74, 0x11, + 0xB5, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x54, 0x11, 0x12, 0x19, 0x12, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x87, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x06, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x03, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x0A, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x09, 0x21, + 0x10, 0x84, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x03, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, + 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x86, 0x19, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x09, 0x55, 0x09, 0x76, 0x09, 0xB8, 0x01, 0x09, 0xF9, 0x85, 0x11, 0xF9, 0x09, 0xB6, 0x09, 0x54, 0x11, 0x73, 0x11, 0x32, 0x19, 0x51, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x86, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x19, 0xF6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x01, 0x11, 0x12, 0x84, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8D, 0x19, 0x10, 0x19, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x22, 0x38, 0x22, 0x18, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x13, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x10, 0xF1, 0x11, 0x12, 0x21, 0xB5, 0x21, 0xD6, 0x01, 0x19, 0xD6, 0x88, 0x09, 0x33, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x0F, + 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x86, 0x19, 0x31, 0x19, 0x11, 0x08, 0xF2, 0x11, 0x95, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB7, 0x03, 0x09, 0x55, 0x01, 0x01, 0x14, 0x88, 0x09, 0x35, 0x11, 0x96, 0x11, 0xF8, 0x1A, 0x19, 0x19, 0xD7, 0x09, 0x54, 0x11, 0x12, 0x19, 0x31, 0x21, 0x11, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8F, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x19, 0x74, 0x21, 0xD6, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x18, 0xF1, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8F, 0x28, 0xEF, 0x28, 0xAD, 0x28, 0xAC, 0x20, 0x09, 0x8A, 0xD4, 0xDD, 0x1C, 0xD4, 0xDB, 0xDC, 0xDB, 0xDC, 0xBA, 0xD4, 0x99, 0xD4, 0xBA, 0xE5, 0x5D, 0xAB, 0xD8, 0x28, 0x2A, 0x28, 0x6C, 0x20, 0xAD, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x21, 0x31, 0x18, 0xF1, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xD7, 0x11, 0xD7, 0x19, 0xD6, 0x09, 0x12, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x07, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, + 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x8B, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x21, 0xF7, 0x01, 0x19, 0xD6, 0x83, 0x11, 0x54, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x19, 0x11, 0x11, 0x32, 0x09, 0x33, 0x19, 0xB6, 0x19, 0xF7, 0x01, 0x19, 0xD6, 0x82, 0x09, 0x12, 0x19, 0x32, 0x21, 0x52, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x84, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0xB5, 0x01, 0x19, 0xD5, 0x83, 0x19, 0x94, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x21, 0x11, 0x19, 0x11, 0x01, 0x19, 0x32, 0x85, 0x11, 0x53, 0x19, 0xF7, 0x1A, 0x38, 0x19, 0xF8, 0x11, 0x95, 0x09, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, + 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x31, 0x87, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x53, 0x19, 0x74, 0x19, 0x94, 0x11, 0x74, 0x02, 0x11, 0x54, 0x01, 0x11, 0x33, 0x82, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x88, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, + 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x19, 0x10, 0x01, 0x19, 0x11, 0x84, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x01, 0x21, 0xF7, 0x84, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x89, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x19, 0x95, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0x96, 0x09, 0x75, 0x01, 0x09, 0x55, 0x80, 0x09, 0x75, 0x01, 0x11, 0xB6, 0x83, 0x19, 0xD6, 0x11, 0xB5, 0x19, 0x94, 0x19, 0x53, 0x01, 0x19, 0x31, 0x02, 0x19, 0x30, 0x85, 0x21, 0x50, 0x11, 0x75, 0x09, 0x75, 0x09, 0x96, 0x11, 0xB7, 0x11, 0xD8, 0x02, 0x11, 0xF8, 0x86, 0x09, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x86, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x09, 0x75, 0x11, 0xB7, 0x09, 0xD8, 0x12, 0x19, 0x01, 0x11, 0xF8, 0x88, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x18, 0xF0, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x19, 0xD7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, + 0x21, 0x31, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x04, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x06, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, + 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x8B, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x87, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x02, 0x29, 0x30, 0x08, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, + 0x01, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x95, 0x11, 0x97, 0x01, 0x09, 0xB8, 0x8B, 0x09, 0xD9, 0x0A, 0x1A, 0x12, 0x19, 0x09, 0xD7, 0x09, 0x75, 0x11, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x51, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8C, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x95, 0x11, 0x13, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8C, 0x19, 0x10, 0x19, 0x11, 0x11, 0x32, 0x19, 0x95, 0x22, 0x18, 0x22, 0x38, 0x19, 0xF7, 0x11, 0x96, 0x11, 0x34, 0x11, 0x12, 0x19, 0x12, 0x21, 0x31, 0x21, 0x11, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x88, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x85, 0x21, 0x31, 0x21, 0x52, 0x10, 0xF1, 0x10, 0xF2, 0x21, 0xB6, 0x21, 0xD6, 0x01, 0x19, 0xD6, 0x82, 0x09, 0x33, 0x09, 0x12, 0x19, 0x72, 0x01, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x50, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x95, 0x19, 0xF7, 0x11, + 0xF7, 0x11, 0xD7, 0x09, 0x55, 0x09, 0x35, 0x09, 0x55, 0x02, 0x09, 0x34, 0x88, 0x01, 0x34, 0x11, 0xB6, 0x19, 0xF8, 0x11, 0xD8, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x12, 0x19, 0x31, 0x21, 0x11, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x91, 0x21, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0x74, 0x19, 0xD6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD7, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x21, 0x11, 0x29, 0x51, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x90, 0x28, 0xAD, 0x28, 0x8C, 0x30, 0x6B, 0x82, 0xB3, 0xE5, 0x7E, 0xD4, 0xBA, 0xDC, 0xDA, 0xD4, 0x99, 0xDC, 0x99, 0xDC, 0xBA, 0xD4, 0xBA, 0xDC, 0xFC, 0x82, 0xB3, 0x28, 0x4A, 0x20, 0x6C, 0x28, 0xEE, 0x28, 0xEF, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x8A, 0x21, 0x31, 0x19, 0x11, 0x18, 0xF2, 0x11, 0x33, 0x21, 0xF7, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0xB6, 0x00, 0xD1, 0x11, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x30, 0x87, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x0F, + 0x02, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x19, 0xB5, 0x22, 0x17, 0x01, 0x19, 0xD6, 0x83, 0x11, 0x54, 0x11, 0x32, 0x11, 0x11, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD7, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x95, 0x09, 0x13, 0x19, 0x53, 0x21, 0x52, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x85, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x06, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x85, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0xB5, 0x21, 0xF6, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x32, 0x02, 0x19, 0x31, 0x01, 0x21, 0x31, 0x84, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x19, 0xD7, 0x01, 0x1A, 0x18, 0x81, 0x11, 0x95, 0x09, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x06, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x11, 0x52, 0x11, 0x73, 0x11, 0x95, 0x01, + 0x19, 0xD6, 0x82, 0x19, 0xF6, 0x21, 0xF6, 0x21, 0xF7, 0x01, 0x21, 0xD6, 0x01, 0x19, 0x95, 0x82, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x8D, 0x21, 0x0F, 0x29, 0x10, 0x20, 0xEF, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x07, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x07, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x0A, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x81, 0x11, 0x54, 0x19, 0xB5, 0x01, 0x21, 0xF7, 0x81, 0x21, 0xF6, 0x19, 0x95, 0x01, 0x11, 0x12, 0x82, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, + 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0x95, 0x21, 0xD7, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xB7, 0x09, 0x75, 0x09, 0x55, 0x01, 0x09, 0x34, 0x88, 0x09, 0x55, 0x09, 0x75, 0x11, 0x96, 0x11, 0xB6, 0x19, 0xD6, 0x19, 0x95, 0x19, 0x74, 0x19, 0x52, 0x19, 0x31, 0x03, 0x19, 0x30, 0x84, 0x11, 0x34, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x01, 0x11, 0xF8, 0x87, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x74, 0x11, 0x53, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x31, 0x87, 0x21, 0x51, 0x19, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x09, 0x75, 0x11, 0xD7, 0x01, 0x11, 0xF8, 0x80, 0x11, 0xF9, 0x01, 0x11, 0xF8, 0x87, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x33, 0x11, 0x12, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x8F, 0x21, 0x50, 0x19, 0x30, 0x19, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x32, 0x11, 0x74, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x96, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x21, 0x31, 0x02, 0x21, 0x10, 0x06, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x05, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, + 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x07, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x07, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x06, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x06, 0x21, 0x10, 0x03, 0x29, 0x10, 0x04, 0x29, 0x30, 0x85, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, + 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x86, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0xB6, 0x19, 0xF8, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x80, 0x09, 0xFA, 0x01, 0x09, 0xF9, 0x85, 0x11, 0xF8, 0x19, 0xF7, 0x11, 0xB5, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x02, 0x21, + 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x83, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x86, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x90, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB6, 0x22, 0x38, 0x1A, 0x18, 0x19, 0xF7, 0x19, 0x96, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x05, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8C, 0x21, 0x52, 0x10, 0xF1, 0x08, 0xF2, 0x21, 0xB6, 0x21, 0xD7, 0x19, 0xD7, 0x19, 0xF7, 0x09, 0x53, 0x08, 0xF2, 0x19, 0x73, 0x21, 0x52, 0x21, 0x31, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x51, 0x88, 0x19, 0x11, 0x11, 0x12, 0x11, 0x95, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xD8, 0x09, 0x96, 0x01, 0x55, 0x01, 0x34, 0x01, 0x09, 0x34, 0x89, 0x01, 0x34, 0x09, 0x55, 0x11, 0xD7, 0x19, 0xF8, 0x1A, 0x18, 0x19, 0xD7, 0x11, 0x74, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, + 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x31, 0x89, 0x19, 0x12, 0x11, 0x32, 0x11, 0x54, 0x21, 0xD6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x11, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x08, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x90, 0x29, 0x2F, 0x28, 0xCD, 0x28, 0x6C, 0x20, 0x09, 0x72, 0x51, 0xDD, 0x1C, 0xDC, 0xDA, 0xDC, 0xB9, 0xD4, 0x98, 0xD4, 0x78, 0xDC, 0x99, 0xD4, 0x99, 0xDC, 0xBA, 0xE5, 0x5D, 0x72, 0x11, 0x28, 0x2A, 0x28, 0x8C, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8D, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x11, 0x34, 0x19, 0xD7, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0xD6, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x8A, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x30, 0x85, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0xB5, 0x22, 0x17, 0x01, 0x19, 0xD6, 0x83, 0x11, + 0x74, 0x09, 0x12, 0x19, 0x32, 0x19, 0x31, 0x03, 0x21, 0x30, 0x8B, 0x21, 0x11, 0x19, 0x32, 0x11, 0x33, 0x09, 0x54, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0xB6, 0x09, 0x33, 0x11, 0x33, 0x19, 0x72, 0x19, 0x51, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x84, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x32, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xD5, 0x19, 0xB4, 0x11, 0x32, 0x19, 0x31, 0x19, 0x51, 0x19, 0x31, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x95, 0x11, 0x32, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x01, 0x19, 0xD6, 0x82, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xF7, 0x01, 0x21, 0xF7, 0x85, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x33, 0x19, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x05, 0x21, 0x10, + 0x80, 0x21, 0x30, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x08, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0A, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0F, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x50, 0x0F, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x11, 0x32, 0x81, 0x09, 0x33, 0x19, 0xB5, 0x02, 0x21, 0xF7, 0x83, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x11, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x21, 0xB5, 0x19, 0xD7, 0x01, 0x11, 0xD7, 0x81, 0x09, 0x75, 0x09, 0x55, 0x01, 0x09, 0x54, 0x01, 0x09, 0x34, 0x82, 0x09, 0x55, 0x11, 0x76, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x82, 0x19, 0x94, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x10, 0x89, 0x19, 0x30, 0x21, 0x30, 0x11, 0x13, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xF8, 0x12, 0x19, 0x01, 0x11, 0xF8, 0x8F, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x74, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x30, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x11, 0x11, 0x11, + 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x96, 0x09, 0xB7, 0x01, 0x11, 0xF8, 0x8D, 0x11, 0xF9, 0x11, 0xD8, 0x19, 0xF9, 0x11, 0xB7, 0x09, 0x55, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x21, 0x52, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x19, 0x32, 0x11, 0x33, 0x19, 0x74, 0x19, 0xB6, 0x01, 0x22, 0x17, 0x84, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x04, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, + 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0C, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, + 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0x95, 0x19, 0xD7, 0x11, 0xF9, 0x12, 0x1A, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xDA, 0x09, 0xDA, 0x09, 0xFA, 0x01, 0x09, 0xF9, 0x85, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x74, 0x11, 0x53, 0x19, 0x32, 0x21, 0x51, 0x01, 0x21, 0x30, 0x91, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x50, 0x21, 0x51, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xF7, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x29, 0x31, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x89, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x19, 0x31, 0x19, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x01, 0x22, 0x18, 0x85, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, + 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x19, 0x11, 0x10, 0xF2, 0x11, 0x34, 0x21, 0xD7, 0x02, 0x19, 0xD7, 0x84, 0x09, 0x54, 0x00, 0xD1, 0x19, 0x53, 0x19, 0x52, 0x19, 0x31, 0x02, 0x21, 0x30, 0x87, 0x21, 0x10, 0x21, 0x30, 0x21, 0x50, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x74, 0x11, 0xB6, 0x03, 0x11, 0xD7, 0x8C, 0x01, 0x55, 0x09, 0x55, 0x09, 0x75, 0x09, 0x76, 0x11, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x54, 0x19, 0x32, 0x19, 0x31, 0x21, 0x11, 0x01, 0x21, 0x10, 0x07, 0x21, 0x30, 0x03, 0x21, 0x31, 0x83, 0x19, 0x12, 0x11, 0x32, 0x19, 0x54, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x87, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x29, 0x51, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x88, 0x29, 0x0F, 0x20, 0xAD, 0x20, 0x6B, 0x20, 0x0A, 0x51, 0x2D, 0xE5, 0x5D, 0xD4, 0xBA, 0xD4, 0x79, 0xD4, 0x78, 0x02, 0xDC, 0x78, 0x86, 0xDC, 0x99, 0xDC, 0xDA, 0xE5, 0x5D, 0x51, 0x0D, 0x28, 0x0A, 0x30, 0xCD, 0x28, 0xEE, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x11, 0x01, 0x19, 0x11, 0x8B, 0x11, 0x13, + 0x19, 0x75, 0x19, 0xD7, 0x11, 0xD8, 0x11, 0xD7, 0x19, 0xB7, 0x09, 0x12, 0x11, 0x12, 0x19, 0x52, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x19, 0x30, 0x8A, 0x19, 0x31, 0x11, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x03, 0x21, 0x30, 0x83, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x02, 0x19, 0xD7, 0x85, 0x19, 0xB6, 0x09, 0x34, 0x11, 0x53, 0x19, 0x72, 0x19, 0x31, 0x21, 0x51, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x07, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x19, + 0xB5, 0x01, 0x19, 0xD5, 0x85, 0x19, 0x94, 0x11, 0x32, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x51, 0x02, 0x19, 0x31, 0x88, 0x19, 0x32, 0x11, 0x54, 0x1A, 0x17, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x95, 0x11, 0x32, 0x19, 0x51, 0x21, 0x51, 0x08, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x11, 0x32, 0x19, 0xB5, 0x01, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x83, 0x11, 0xB6, 0x11, 0x96, 0x19, 0xB6, 0x19, 0xB7, 0x01, 0x19, 0xD7, 0x86, 0x19, 0xB7, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x28, 0x21, 0x30, 0x80, 0x21, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0F, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x03, 0x21, 0x10, 0x03, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x21, 0x31, 0x83, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x03, 0x19, 0xD6, 0x82, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, + 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x87, 0x19, 0x32, 0x11, 0x33, 0x21, 0xB6, 0x21, 0xF7, 0x19, 0xD7, 0x11, 0xB6, 0x09, 0x55, 0x09, 0x54, 0x01, 0x11, 0x95, 0x01, 0x09, 0x34, 0x87, 0x09, 0x55, 0x11, 0x96, 0x11, 0xB6, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0x95, 0x19, 0x32, 0x19, 0x11, 0x02, 0x19, 0x10, 0x87, 0x21, 0x30, 0x11, 0x12, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x09, 0x96, 0x11, 0xD7, 0x02, 0x11, 0xF8, 0x89, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x74, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x10, 0x21, 0x31, 0x19, 0x10, 0x01, 0x19, 0x31, 0x90, 0x11, 0x32, 0x11, 0x73, 0x11, 0x74, 0x11, 0xB6, 0x09, 0xB7, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0xD9, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x19, 0x73, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x30, 0x8E, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x09, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, + 0x01, 0x29, 0x30, 0x88, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x30, 0x85, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x06, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x87, 0x29, 0x10, 0x21, 0x0F, 0x29, + 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB7, 0x11, 0xD8, 0x11, 0xFA, 0x09, 0xFA, 0x02, 0x01, 0xB9, 0x8B, 0x01, 0xBA, 0x09, 0xDA, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0x95, 0x11, + 0x53, 0x19, 0x52, 0x21, 0x52, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x51, 0x83, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0xB5, 0x01, 0x19, 0xF7, 0x85, 0x19, 0xD6, 0x09, 0x54, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x29, 0x31, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x01, 0x22, 0x18, 0x82, 0x21, 0xF7, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x04, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x19, 0x31, 0x19, 0x32, 0x01, 0x10, 0xF2, 0x8C, 0x19, 0x75, 0x19, 0xB7, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0xB6, 0x00, 0xF2, 0x11, 0x53, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x95, 0x11, 0xB6, 0x02, 0x11, 0xF8, 0x80, 0x11, 0xD7, 0x01, 0x11, 0xB7, 0x8C, 0x11, 0xD7, 0x1A, 0x18, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, + 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x83, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x90, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0xAC, 0x20, 0x2A, 0x40, 0xCC, 0xCC, 0x9A, 0xDC, 0xDA, 0xDC, 0xB9, 0xDC, 0x78, 0xDC, 0x57, 0xDC, 0x78, 0xDC, 0x58, 0x01, 0xDC, 0x78, 0x88, 0xDC, 0xBA, 0xED, 0x7D, 0x48, 0xCC, 0x28, 0x2A, 0x30, 0xEE, 0x28, 0xEE, 0x28, 0xEF, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x11, 0x01, 0x19, 0x11, 0x83, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x19, 0xD8, 0x01, 0x11, 0xD8, 0x8C, 0x19, 0xD7, 0x11, 0x54, 0x09, 0x12, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x07, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x22, 0x17, 0x19, 0xD6, + 0x19, 0xB6, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x30, 0x8E, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x09, 0x75, 0x11, 0xB6, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0xB7, 0x09, 0x54, 0x11, 0x33, 0x19, 0x73, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x06, 0x29, 0x10, 0x81, 0x28, 0xF0, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x19, 0x11, 0x01, 0x19, 0x32, 0x88, 0x11, 0x33, 0x19, 0xB5, 0x21, 0xF6, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x32, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x88, 0x11, 0x32, 0x11, 0x54, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x95, 0x11, 0x32, 0x19, 0x31, 0x21, 0x51, 0x05, 0x21, 0x30, 0x80, 0x21, 0x50, 0x04, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x19, 0x53, 0x19, 0xB5, 0x11, 0xB6, 0x01, 0x19, 0xD7, 0x80, 0x11, 0x96, 0x02, 0x09, 0x55, 0x88, 0x11, 0x76, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x03, 0x21, 0x31, 0x02, 0x21, 0x30, 0x07, 0x21, 0x31, 0x80, 0x21, 0x11, + 0x04, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x19, 0x10, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x10, 0x19, 0x11, 0x04, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x82, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x03, 0x19, 0x11, 0x02, 0x19, 0x10, 0x85, 0x19, 0x31, 0x19, 0x10, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x19, 0x11, 0x02, 0x19, 0x10, 0x01, 0x19, 0x11, 0x85, 0x19, 0x31, 0x21, 0x31, 0x19, 0x11, 0x21, 0x11, 0x19, 0x11, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x03, 0x19, 0x11, 0x81, 0x19, 0x10, 0x19, 0x30, 0x01, 0x19, 0x31, 0x01, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x19, 0x30, 0x81, 0x19, 0x10, 0x21, 0x31, 0x04, 0x19, 0x10, 0x04, 0x19, 0x11, 0x01, 0x18, 0xF1, 0x03, 0x19, 0x11, 0x90, 0x19, 0x12, 0x19, 0x32, 0x19, 0x53, 0x19, 0x74, 0x19, 0xD5, 0x21, 0xF7, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x9B, 0x20, 0xEF, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x33, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xF7, 0x11, 0xB6, + 0x09, 0x75, 0x09, 0x54, 0x09, 0x75, 0x09, 0x74, 0x01, 0x33, 0x09, 0x34, 0x09, 0x55, 0x11, 0x96, 0x11, 0xB6, 0x19, 0xD7, 0x21, 0xD6, 0x19, 0x94, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x01, 0x21, 0x10, 0x80, 0x29, 0x51, 0x02, 0x19, 0x32, 0x8D, 0x11, 0x53, 0x11, 0x54, 0x11, 0x95, 0x09, 0x96, 0x09, 0xD7, 0x11, 0xF8, 0x09, 0xF8, 0x12, 0x19, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x88, 0x19, 0x72, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x09, 0xB7, 0x11, 0xD8, 0x09, 0xD8, 0x01, 0x11, 0xD8, 0x88, 0x09, 0xB6, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x29, 0x31, 0x03, 0x21, 0x10, 0x90, 0x21, 0x30, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x11, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x86, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x80, + 0x29, 0x30, 0x02, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x87, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x21, + 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x51, 0x8C, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xF8, 0x09, 0xB8, 0x09, 0xD9, 0x09, 0xDA, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x09, 0xDA, 0x01, 0x09, 0xD9, 0x85, 0x09, 0xB7, 0x11, 0xB6, 0x11, + 0x95, 0x11, 0x53, 0x21, 0x52, 0x21, 0x51, 0x04, 0x21, 0x30, 0x8B, 0x21, 0x51, 0x19, 0x51, 0x19, 0x52, 0x11, 0x32, 0x19, 0xD5, 0x22, 0x37, 0x1A, 0x17, 0x11, 0xD6, 0x11, 0x74, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x11, 0x55, 0x11, 0x33, 0x19, 0x33, 0x01, 0x19, 0x32, 0x82, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x03, 0x29, 0x10, 0x04, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x85, 0x19, 0x32, 0x11, 0x13, 0x11, 0x34, 0x19, 0xB7, 0x19, 0xD8, 0x11, 0xB8, 0x01, 0x11, 0xD8, 0x83, 0x11, 0xD7, 0x09, 0x75, 0x09, 0x12, 0x19, 0x52, 0x01, 0x19, 0x31, 0x01, 0x21, 0x51, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x19, 0x10, 0x19, 0x32, 0x19, 0x33, 0x11, 0x34, 0x11, 0x55, 0x11, 0xB6, 0x19, 0xF8, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0xF7, 0x01, 0x11, 0xD7, 0x88, 0x19, 0xF8, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, + 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x11, 0x54, 0x21, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x11, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8B, 0x21, 0x0E, 0x29, 0x0E, 0x28, 0xAD, 0x20, 0x4B, 0x30, 0x6A, 0xD5, 0x1C, 0xDC, 0xDA, 0xDC, 0xB9, 0xDC, 0x78, 0xDC, 0x98, 0xDC, 0x78, 0xDC, 0x57, 0x02, 0xDC, 0x78, 0x88, 0xDC, 0x99, 0xE5, 0x1C, 0xBC, 0x5A, 0x49, 0x2E, 0x28, 0x6C, 0x28, 0xEE, 0x28, 0xEF, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0x96, 0x01, 0x11, 0xD8, 0x87, 0x11, 0xD9, 0x11, 0xD8, 0x11, 0x75, 0x09, 0x33, 0x19, 0x53, 0x19, 0x52, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x29, 0x50, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x8C, 0x21, 0x30, 0x19, 0x30, 0x19, + 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x8E, 0x19, 0x32, 0x11, 0x53, 0x11, 0x95, 0x11, 0xB6, 0x11, 0xB7, 0x11, 0xD7, 0x11, 0xF8, 0x11, 0xD7, 0x09, 0x75, 0x09, 0x34, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x8B, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x04, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x88, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x32, 0x01, 0x19, 0x31, 0x82, 0x19, 0x51, 0x19, 0x30, 0x19, 0x10, 0x01, 0x19, 0x31, 0x82, 0x11, 0x32, 0x11, 0x54, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x83, 0x11, 0x95, 0x11, 0x32, 0x11, 0x11, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x8A, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x94, 0x19, 0xF6, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0x76, 0x03, 0x09, 0x55, 0x87, 0x09, 0x76, 0x11, 0xB7, 0x11, + 0xF8, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x55, 0x09, 0x13, 0x02, 0x11, 0x12, 0x01, 0x11, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x03, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x31, 0x17, 0x19, 0x11, 0x01, 0x11, 0x11, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x11, 0x11, 0x04, 0x19, 0x11, 0x80, 0x11, 0x11, 0x04, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x83, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x11, 0x11, 0x02, 0x19, 0x11, 0x82, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x05, 0x19, 0x11, 0x82, 0x11, 0x11, 0x19, 0x11, 0x19, 0x12, 0x08, 0x19, 0x11, 0x02, 0x19, 0x12, 0x04, 0x19, 0x11, 0x01, 0x19, 0x32, 0x84, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x11, 0x11, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x11, 0x11, 0x02, 0x19, 0x11, 0x01, 0x11, 0x11, 0x82, 0x19, 0x11, 0x11, 0x11, 0x19, 0x11, 0x01, 0x19, 0x12, 0x80, 0x19, 0x11, 0x02, 0x19, 0x12, 0x03, 0x11, 0x12, 0x8B, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x74, 0x19, 0xF6, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x11, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0E, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x11, 0x86, 0x19, 0x12, 0x11, 0x12, 0x19, 0x95, 0x21, 0xF7, 0x19, 0xF8, + 0x11, 0xD7, 0x09, 0x76, 0x01, 0x09, 0x75, 0x02, 0x09, 0x54, 0x87, 0x09, 0x55, 0x11, 0x96, 0x11, 0xB6, 0x19, 0xD7, 0x19, 0x95, 0x19, 0x74, 0x19, 0x32, 0x19, 0x11, 0x01, 0x19, 0x10, 0x01, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x09, 0x75, 0x09, 0x96, 0x09, 0xB7, 0x02, 0x11, 0xF8, 0x86, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x74, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x51, 0x89, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB6, 0x11, 0xB7, 0x11, 0xD8, 0x12, 0x19, 0x01, 0x11, 0xF8, 0x87, 0x11, 0xB6, 0x09, 0x75, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x29, 0x31, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x11, 0x8A, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x01, 0x21, 0x31, 0x05, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x84, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x8B, 0x29, 0x0F, 0x29, + 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x05, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x84, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x05, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, + 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x87, 0x21, 0x51, 0x21, 0x31, 0x19, 0x12, 0x11, 0x12, 0x11, 0x54, 0x11, 0xD8, 0x11, 0xD9, 0x09, 0xDA, 0x05, 0x01, 0xBA, 0x88, 0x01, 0xD9, 0x01, 0xB9, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x33, 0x19, 0x52, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x51, 0x89, 0x19, 0x52, 0x11, 0x32, 0x19, 0x95, 0x22, 0x17, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x95, 0x09, 0x33, 0x11, 0x12, 0x19, + 0x11, 0x01, 0x21, 0x31, 0x81, 0x29, 0x31, 0x29, 0x30, 0x02, 0x21, 0x10, 0x89, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x31, 0x21, 0x11, 0x01, 0x19, 0x11, 0x89, 0x19, 0x12, 0x11, 0x33, 0x19, 0x75, 0x19, 0xB6, 0x21, 0xF7, 0x2A, 0x38, 0x21, 0xD7, 0x11, 0x55, 0x11, 0x33, 0x19, 0x33, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x88, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x84, 0x19, 0x51, 0x19, 0x32, 0x11, 0x33, 0x09, 0x14, 0x19, 0xB7, 0x01, 0x11, 0xB8, 0x8A, 0x09, 0xD8, 0x11, 0xF9, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xB6, 0x09, 0x53, 0x11, 0x53, 0x19, 0x52, 0x19, 0x11, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x31, 0x86, 0x19, 0x32, 0x11, 0x33, 0x11, 0x34, 0x11, 0x55, 0x11, 0x95, 0x19, 0xF7, 0x19, 0xD7, 0x01, 0x11, 0xB6, 0x80, 0x19, 0xF7, 0x01, 0x19, 0xB6, 0x86, 0x19, 0x95, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x84, 0x19, 0x31, 0x19, + 0x12, 0x11, 0x12, 0x11, 0x54, 0x21, 0xF6, 0x01, 0x22, 0x17, 0x85, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x88, 0x29, 0x0E, 0x28, 0xCD, 0x28, 0xAC, 0x28, 0x29, 0xAB, 0xF7, 0xDD, 0x1B, 0xDC, 0xBA, 0xDC, 0x99, 0xDC, 0x98, 0x03, 0xDC, 0x57, 0x8F, 0xDC, 0x58, 0xD4, 0x58, 0xDC, 0x99, 0xDC, 0xFB, 0xDD, 0x1D, 0x49, 0x2E, 0x28, 0x8D, 0x28, 0xCE, 0x28, 0xEF, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8E, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x19, 0x53, 0x11, 0x74, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xD9, 0x09, 0xD9, 0x11, 0xD9, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x33, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x92, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x21, 0xF7, + 0x19, 0xB6, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x01, 0x09, 0xB7, 0x89, 0x09, 0xB8, 0x11, 0xF8, 0x12, 0x18, 0x09, 0x76, 0x09, 0x54, 0x11, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x04, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x09, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8E, 0x21, 0x10, 0x21, 0x30, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x94, 0x11, 0x32, 0x19, 0x31, 0x19, 0x52, 0x19, 0x31, 0x02, 0x19, 0x30, 0x89, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xD8, 0x11, 0x96, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x19, 0x94, 0x19, 0xB6, 0x11, 0xD7, 0x11, 0xB7, 0x01, 0x09, 0x76, 0x80, 0x09, 0x75, 0x02, 0x09, 0x34, 0x81, 0x09, 0x55, 0x09, 0x96, 0x01, 0x11, 0xD8, 0x83, 0x11, 0xF8, 0x09, 0xD7, 0x09, 0x76, 0x09, 0x35, 0x03, 0x09, 0x13, 0x02, 0x09, 0x12, 0x02, 0x11, 0x12, 0x83, 0x09, 0x12, 0x11, 0x12, 0x09, 0x12, 0x11, 0x12, 0x02, 0x09, + 0x12, 0x80, 0x11, 0x12, 0x04, 0x09, 0x12, 0x01, 0x11, 0x12, 0x02, 0x09, 0x12, 0x05, 0x11, 0x12, 0x82, 0x11, 0x33, 0x11, 0x12, 0x11, 0x32, 0x0B, 0x11, 0x33, 0x80, 0x11, 0x53, 0x0C, 0x11, 0x33, 0x82, 0x11, 0x53, 0x11, 0x33, 0x11, 0x53, 0x20, 0x11, 0x33, 0x82, 0x11, 0x53, 0x11, 0x33, 0x11, 0x32, 0x01, 0x11, 0x53, 0x08, 0x11, 0x32, 0x80, 0x11, 0x33, 0x01, 0x11, 0x32, 0x06, 0x11, 0x33, 0x02, 0x11, 0x13, 0x01, 0x11, 0x33, 0x01, 0x11, 0x54, 0x89, 0x11, 0x75, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x84, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x11, 0x75, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xF8, 0x11, 0xB7, 0x09, 0x76, 0x09, 0x75, 0x09, 0x55, 0x01, 0x09, 0x75, 0x82, 0x09, 0x95, 0x11, 0xB6, 0x19, 0xB7, 0x01, 0x19, 0xB6, 0x9A, 0x19, 0x74, 0x19, 0x32, 0x19, 0x11, 0x21, 0x10, 0x20, 0xF0, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x09, 0x96, 0x09, 0xB7, 0x11, 0xD8, 0x11, 0xF8, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x91, 0x19, 0x11, 0x19, 0x31, 0x19, + 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB7, 0x12, 0x18, 0x11, 0xF8, 0x12, 0x19, 0x12, 0x18, 0x11, 0xD7, 0x09, 0x96, 0x09, 0x54, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x29, 0x31, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x11, 0x11, 0x31, 0x11, 0x32, 0x11, 0x54, 0x19, 0xB5, 0x01, 0x22, 0x17, 0x81, 0x19, 0xD6, 0x19, 0x95, 0x01, 0x11, 0x33, 0x81, 0x19, 0x32, 0x21, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x8B, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x04, 0x29, 0x0F, + 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, + 0x29, 0x30, 0x07, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x51, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x75, 0x1A, 0x18, 0x11, 0xF9, 0x01, 0xD9, 0x01, 0x01, 0xBA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x80, 0x09, 0xD9, 0x01, 0x09, 0xD8, 0x85, 0x11, 0xF7, 0x19, 0xD6, 0x11, 0x33, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x21, 0x51, 0x8D, 0x19, 0x31, 0x11, 0x32, 0x19, 0x74, 0x21, 0xF6, 0x19, 0xF6, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x53, 0x10, 0xF1, 0x19, 0x32, 0x21, 0x31, 0x29, 0x51, 0x21, 0x31, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x85, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x18, 0x22, 0x38, 0x19, 0x96, 0x01, 0x11, 0x54, 0x86, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x88, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, + 0x0F, 0x05, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x19, 0x31, 0x19, 0x52, 0x19, 0x74, 0x09, 0x34, 0x11, 0x96, 0x19, 0xB8, 0x09, 0x98, 0x11, 0xD9, 0x01, 0x09, 0xD9, 0x88, 0x09, 0xF9, 0x09, 0xF8, 0x11, 0xD8, 0x11, 0xB6, 0x09, 0x33, 0x19, 0x53, 0x19, 0x32, 0x21, 0x52, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x21, 0x52, 0x19, 0x32, 0x01, 0x11, 0x12, 0x83, 0x19, 0x53, 0x19, 0x74, 0x11, 0x54, 0x19, 0x74, 0x02, 0x19, 0x94, 0x82, 0x19, 0x53, 0x11, 0x32, 0x19, 0x11, 0x01, 0x19, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x90, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x12, 0x11, 0x74, 0x21, 0xF6, 0x22, 0x17, 0x22, 0x38, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x20, 0xEF, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x86, 0x28, 0xCE, 0x28, 0x8C, 0x20, 0x09, 0x8A, 0xD3, 0xDD, 0x3C, 0xDC, 0xDA, 0xDC, 0x99, 0x01, 0xDC, 0x78, 0x03, 0xDC, 0x57, 0x01, 0xDC, 0x78, 0x88, 0xDC, 0x99, 0xE5, 0x1C, 0xBC, 0x19, 0x30, 0x4B, 0x28, 0xAD, 0x28, 0xCE, 0x28, 0xEF, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x89, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0x95, 0x11, 0xB6, 0x09, 0x97, 0x09, 0xB8, 0x03, 0x09, 0xD9, 0x86, 0x09, + 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x74, 0x19, 0x53, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x85, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x19, 0x30, 0x01, 0x19, 0x31, 0x89, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x19, 0x74, 0x11, 0x32, 0x11, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x87, 0x19, 0x52, 0x19, 0x53, 0x11, 0x54, 0x11, 0x95, 0x09, 0x96, 0x09, 0xB7, 0x01, 0xB8, 0x09, 0xD9, 0x01, 0x12, 0x19, 0x85, 0x09, 0x97, 0x01, 0x76, 0x09, 0x95, 0x09, 0x74, 0x11, 0x53, 0x19, 0x32, 0x02, 0x21, 0x31, 0x81, 0x29, 0x30, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x07, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x10, 0x19, 0x11, 0x19, 0x31, 0x19, 0x73, 0x11, 0x53, 0x11, 0x54, 0x02, 0x19, 0xB5, 0x85, 0x19, 0x74, 0x11, 0x32, + 0x19, 0x32, 0x19, 0x51, 0x21, 0x51, 0x19, 0x10, 0x01, 0x19, 0x30, 0x90, 0x19, 0x31, 0x11, 0x11, 0x11, 0x53, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x12, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8C, 0x11, 0x32, 0x19, 0x95, 0x19, 0xD6, 0x11, 0xD7, 0x09, 0x96, 0x09, 0x56, 0x09, 0x76, 0x11, 0x96, 0x11, 0x75, 0x01, 0x14, 0x09, 0x34, 0x09, 0x55, 0x09, 0x76, 0x01, 0x09, 0xD8, 0x83, 0x11, 0xF9, 0x11, 0xF8, 0x09, 0xB8, 0x09, 0x97, 0x01, 0x11, 0xB7, 0x81, 0x19, 0xD7, 0x11, 0xD7, 0x01, 0x11, 0xB6, 0x04, 0x11, 0x96, 0x80, 0x11, 0x95, 0x03, 0x11, 0x96, 0x01, 0x11, 0x95, 0x01, 0x11, 0x96, 0x80, 0x11, 0xB6, 0x04, 0x11, 0x96, 0x02, 0x11, 0xB6, 0x80, 0x11, 0x96, 0x03, 0x19, 0xB6, 0x81, 0x11, 0xB6, 0x11, 0x96, 0x05, 0x11, 0xB6, 0x81, 0x19, 0xB6, 0x11, 0xB6, 0x03, 0x11, 0x96, 0x80, 0x11, 0xB6, 0x03, 0x11, 0x96, 0x02, 0x11, 0x95, 0x05, 0x11, 0x96, 0x85, 0x11, 0xB6, 0x11, 0x96, 0x11, 0xB6, 0x11, 0x96, 0x11, 0xB6, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x80, 0x11, 0x95, 0x01, 0x11, 0xB6, 0x80, 0x11, 0x95, 0x03, 0x11, 0xB6, 0x80, 0x19, 0xB6, 0x02, 0x11, 0xB6, 0x80, 0x19, 0xB6, 0x04, 0x11, 0xB6, 0x80, 0x19, 0xB6, 0x04, 0x11, 0xB6, 0x80, 0x19, 0xB6, 0x03, 0x11, 0xB6, 0x01, 0x19, 0xB6, 0x01, 0x11, 0xB5, 0x02, 0x11, 0x95, 0x80, 0x11, 0xB6, 0x02, 0x11, 0x95, 0x80, 0x11, 0xB5, 0x06, 0x11, 0x95, + 0x02, 0x11, 0xB6, 0x80, 0x11, 0x96, 0x03, 0x11, 0xB6, 0x01, 0x11, 0x96, 0x01, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x86, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x20, 0xEF, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, 0x13, 0x11, 0x75, 0x19, 0xD7, 0x01, 0x11, 0xD8, 0x8D, 0x09, 0xB7, 0x09, 0x97, 0x09, 0x96, 0x01, 0x76, 0x09, 0x96, 0x09, 0xB6, 0x11, 0xB7, 0x11, 0xD7, 0x11, 0xB7, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x53, 0x19, 0x32, 0x21, 0x11, 0x05, 0x21, 0x10, 0x01, 0x21, 0x31, 0x87, 0x19, 0x11, 0x11, 0x11, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x09, 0x96, 0x11, 0xB7, 0x11, 0xD8, 0x01, 0x11, 0xF8, 0x89, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x8C, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x11, 0xD7, 0x11, 0xF8, 0x09, 0xF8, 0x12, 0x18, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x33, 0x01, 0x19, 0x32, 0x83, 0x21, 0x11, 0x29, 0x31, 0x21, 0x11, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x89, 0x11, 0x11, 0x11, 0x32, 0x11, 0x74, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x34, 0x11, 0x12, 0x01, 0x19, 0x32, 0x81, 0x21, + 0x11, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x0B, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x03, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x0B, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x05, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x15, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x06, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0A, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x0F, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x88, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, + 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x06, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x88, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x33, 0x11, 0x95, 0x11, 0xD8, 0x09, 0xD8, 0x01, 0xD9, 0x01, 0xB9, 0x05, 0x01, 0xDA, 0x89, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xD7, 0x19, 0xD6, 0x09, 0x12, 0x19, 0x32, 0x21, 0x52, 0x21, 0x51, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8C, 0x11, 0x53, 0x21, 0xD6, 0x22, 0x17, 0x19, 0xF7, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x53, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x11, 0x29, 0x31, 0x01, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x11, 0x01, 0x21, 0x31, 0x01, 0x19, 0x12, 0x8D, 0x19, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x18, 0x2A, 0x38, 0x19, 0xB6, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x21, + 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x19, 0x31, 0x19, 0x53, 0x11, 0x74, 0x09, 0x55, 0x11, 0xD8, 0x01, 0x09, 0x98, 0x80, 0x09, 0xB9, 0x03, 0x09, 0xD9, 0x84, 0x09, 0xD8, 0x11, 0xF7, 0x11, 0x75, 0x11, 0x53, 0x19, 0x32, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x04, 0x21, 0x31, 0x81, 0x19, 0x11, 0x21, 0x52, 0x03, 0x19, 0x32, 0x85, 0x11, 0x12, 0x19, 0x32, 0x19, 0x11, 0x10, 0xF1, 0x19, 0x31, 0x19, 0x10, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x02, 0x19, 0x31, 0x01, 0x11, 0x32, 0x81, 0x11, 0x54, 0x21, 0xF6, 0x01, 0x22, 0x17, 0x88, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x19, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x88, 0x28, 0xEE, 0x28, 0xAD, 0x20, 0x2A, 0x61, 0xD0, 0xDD, 0x3C, 0xDC, 0xDA, 0xDC, 0x99, 0xDC, 0x98, 0xDC, 0x78, 0x04, 0xDC, 0x57, 0x01, 0xDC, 0x78, 0x87, 0xDC, 0x99, 0xED, 0x5D, 0x9A, 0xF5, 0x30, 0x2B, 0x28, 0xAD, 0x28, 0xEE, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, + 0x21, 0x30, 0x01, 0x19, 0x11, 0x87, 0x19, 0x32, 0x19, 0x74, 0x11, 0x95, 0x11, 0xB7, 0x09, 0xD8, 0x01, 0xB8, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x09, 0xDA, 0x86, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x19, 0x74, 0x19, 0x32, 0x19, 0x31, 0x09, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x8B, 0x21, 0x30, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x13, 0x19, 0xB6, 0x22, 0x17, 0x19, 0xB6, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x12, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x52, 0x86, 0x19, 0x74, 0x11, 0x95, 0x11, 0xD7, 0x11, 0xD8, 0x09, 0xF9, 0x01, 0xB8, 0x01, 0xB9, 0x01, 0x09, 0xF9, 0x87, 0x01, 0xD8, 0x09, 0xF8, 0x12, 0x18, 0x11, 0xD6, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x04, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x08, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x8C, 0x19, + 0x31, 0x19, 0x52, 0x19, 0x73, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB5, 0x21, 0xD6, 0x19, 0xB5, 0x19, 0x73, 0x11, 0x32, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x02, 0x19, 0x30, 0x89, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x84, 0x11, 0x32, 0x11, 0x95, 0x19, 0xF7, 0x11, 0xB7, 0x09, 0xB7, 0x01, 0x09, 0x76, 0x81, 0x09, 0x75, 0x09, 0x55, 0x01, 0x09, 0x34, 0x86, 0x09, 0x55, 0x09, 0x76, 0x01, 0x97, 0x09, 0xD8, 0x11, 0xF9, 0x09, 0xD8, 0x12, 0x19, 0x01, 0x11, 0xF9, 0x01, 0x22, 0x5A, 0x15, 0x22, 0x39, 0x80, 0x22, 0x19, 0x01, 0x22, 0x39, 0x01, 0x22, 0x18, 0x82, 0x22, 0x19, 0x22, 0x18, 0x22, 0x38, 0x03, 0x22, 0x18, 0x81, 0x1A, 0x18, 0x22, 0x18, 0x02, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x81, 0x22, 0x18, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x81, 0x22, 0x18, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x81, 0x22, 0x38, 0x1A, 0x18, 0x02, 0x22, 0x18, 0x87, 0x1A, 0x18, 0x22, 0x18, 0x19, 0xF8, 0x22, 0x18, 0x1A, 0x18, 0x22, 0x18, 0x1A, 0x18, 0x22, 0x38, 0x04, 0x1A, 0x18, 0x82, 0x22, 0x18, 0x1A, 0x18, 0x22, 0x18, 0x05, 0x1A, 0x18, 0x80, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x86, 0x19, 0xF8, 0x1A, 0x18, 0x22, 0x18, 0x1A, 0x18, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x38, 0x02, 0x1A, 0x18, 0x80, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x80, + 0x22, 0x18, 0x01, 0x1A, 0x18, 0x01, 0x22, 0x38, 0x01, 0x22, 0x18, 0x85, 0x22, 0x38, 0x22, 0x18, 0x22, 0x38, 0x22, 0x18, 0x22, 0x38, 0x22, 0x18, 0x03, 0x22, 0x38, 0x84, 0x22, 0x39, 0x22, 0x38, 0x22, 0x39, 0x1A, 0x18, 0x22, 0x38, 0x04, 0x1A, 0x18, 0x85, 0x22, 0x18, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x03, 0x21, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x50, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x01, 0x11, 0xD7, 0x80, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x01, 0x09, 0xB7, 0x01, 0x11, 0xD7, 0x87, 0x11, 0xF8, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x74, 0x19, 0x52, 0x19, 0x31, 0x21, 0x11, 0x07, 0x21, 0x10, 0x91, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xD7, 0x11, 0xD8, 0x12, 0x19, 0x11, 0xF9, 0x11, 0xF8, 0x09, 0xD8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x19, 0x11, 0x19, 0x31, 0x03, 0x21, 0x31, 0x86, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0x96, 0x09, 0xB7, 0x09, 0xD7, 0x01, 0x09, 0xF8, 0x01, 0x11, 0xF8, 0x82, 0x11, 0x96, 0x19, 0x95, 0x11, 0x33, 0x01, 0x19, 0x32, 0x82, 0x18, 0xF1, 0x21, 0x31, 0x29, 0x31, 0x02, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x31, 0x83, + 0x11, 0x31, 0x11, 0x32, 0x11, 0x74, 0x19, 0xB5, 0x01, 0x19, 0xF7, 0x81, 0x19, 0xD7, 0x19, 0x95, 0x01, 0x11, 0x33, 0x83, 0x19, 0x12, 0x21, 0x32, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x07, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x14, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x09, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x09, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, + 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x07, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x86, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x50, 0x01, 0x19, 0x30, 0x82, 0x21, 0x50, 0x21, 0x30, 0x21, 0x50, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x11, 0x11, 0x12, 0x11, 0x95, 0x19, 0xF8, 0x09, 0xB8, 0x01, 0x01, 0xB9, 0x01, 0x01, 0xBA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x80, 0x01, 0xB9, 0x01, 0x09, 0xD9, 0x85, 0x11, 0xD8, 0x1A, 0x17, 0x11, 0x95, 0x09, 0x12, 0x11, 0x31, 0x19, 0x51, 0x01, 0x21, 0x51, 0x02, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x51, 0x01, 0x19, 0x31, 0x8A, 0x11, 0x32, 0x19, 0x94, 0x22, 0x17, 0x22, 0x38, 0x1A, 0x17, 0x19, 0xD7, 0x11, 0xB5, 0x11, 0x33, 0x10, 0xF2, 0x19, 0x12, + 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x8D, 0x21, 0x11, 0x19, 0x12, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x2A, 0x38, 0x22, 0x18, 0x19, 0xB6, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x32, 0x11, 0x33, 0x09, 0x34, 0x1A, 0x19, 0x11, 0xF9, 0x09, 0x98, 0x09, 0xB9, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x85, 0x01, 0xB8, 0x12, 0x19, 0x1A, 0x18, 0x09, 0x33, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x05, 0x19, 0x11, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x11, 0x32, 0x81, 0x11, 0x74, 0x21, 0xF7, 0x01, 0x22, 0x17, 0x83, 0x21, 0xF6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x29, + 0x10, 0x01, 0x29, 0x0F, 0x88, 0x28, 0xEE, 0x20, 0xAD, 0x28, 0x6B, 0x40, 0xCC, 0xD4, 0xDB, 0xD4, 0xBA, 0xDC, 0x99, 0xDC, 0xB9, 0xDC, 0x78, 0x04, 0xDC, 0x57, 0x88, 0xDC, 0x77, 0xDC, 0x57, 0xDC, 0x78, 0xD4, 0x78, 0xE5, 0x1C, 0x8A, 0x93, 0x30, 0x2A, 0x28, 0x8C, 0x28, 0xEE, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x19, 0x33, 0x19, 0xB6, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x88, 0x09, 0xDA, 0x09, 0xFA, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x07, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x19, 0x30, 0x84, 0x19, 0x31, 0x11, 0x32, 0x11, 0x13, 0x19, 0xB6, 0x21, 0xF7, 0x01, 0x19, 0xB6, 0x81, 0x11, 0x74, 0x11, 0x32, 0x01, 0x11, 0x31, 0x89, 0x19, 0x31, 0x19, 0x52, 0x19, 0x73, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD8, 0x12, 0x19, 0x09, 0xF9, 0x01, 0xB9, 0x01, 0xD9, 0x02, 0x01, 0xF9, 0x85, 0x0A, 0x1A, 0x12, 0x3A, 0x11, 0xF7, 0x09, 0x75, 0x11, 0x33, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, + 0x29, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x04, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x09, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x52, 0x19, 0x74, 0x11, 0x54, 0x11, 0x95, 0x01, 0x19, 0xB6, 0x86, 0x21, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x02, 0x19, 0x30, 0x88, 0x11, 0x31, 0x11, 0x73, 0x1A, 0x17, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x32, 0x19, 0x31, 0x19, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x8D, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x94, 0x19, 0xD7, 0x11, 0xB6, 0x11, 0xD7, 0x09, 0x96, 0x01, 0x09, 0x55, 0x85, 0x09, 0x34, 0x09, 0x55, 0x09, 0x35, 0x01, 0x35, 0x09, 0x76, 0x09, 0xB7, 0x02, 0x09, 0xD8, 0x02, 0x11, 0xF8, 0x04, 0x19, 0xF8, 0x86, 0x19, 0xD8, 0x21, 0xF8, 0x19, 0xF8, 0x19, 0xD7, 0x21, 0xF8, 0x19, 0xD7, 0x19, 0xF8, 0x01, 0x21, 0xF8, 0x03, 0x19, 0xF8, 0x01, 0x22, 0x18, 0x01, 0x19, 0xF8, 0x80, 0x21, 0xF8, 0x04, 0x19, 0xF8, 0x01, 0x21, 0xF8, 0x84, 0x19, 0xF8, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xF8, 0x22, 0x18, 0x01, 0x19, 0xF7, 0x81, 0x19, 0xF8, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x03, 0x19, 0xF7, 0x85, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xD7, + 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x80, 0x19, 0xD7, 0x01, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x80, 0x19, 0xF8, 0x02, 0x19, 0xD7, 0x81, 0x19, 0xF7, 0x19, 0xF8, 0x03, 0x19, 0xF7, 0x82, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x05, 0x19, 0xF7, 0x01, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x01, 0x19, 0xD7, 0x81, 0x19, 0xF7, 0x19, 0xD7, 0x04, 0x19, 0xF7, 0x01, 0x19, 0xD7, 0x05, 0x19, 0xF7, 0x80, 0x1A, 0x17, 0x05, 0x19, 0xF7, 0x80, 0x21, 0xF8, 0x01, 0x19, 0xF7, 0x01, 0x22, 0x18, 0x82, 0x19, 0xF8, 0x1A, 0x18, 0x19, 0xF8, 0x03, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x01, 0x19, 0xD7, 0x84, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x94, 0x19, 0x0F, 0x19, 0x10, 0x21, 0x51, 0x19, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD7, 0x11, 0xD8, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0xD8, 0x11, 0xD8, 0x19, 0xF8, 0x1A, 0x18, 0x1A, 0x38, 0x1A, 0x17, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x20, 0xF0, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xF8, 0x12, 0x18, + 0x01, 0x11, 0xF8, 0x8F, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0x96, 0x11, 0xD7, 0x01, 0x11, 0xF8, 0x85, 0x12, 0x19, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x55, 0x11, 0x33, 0x01, 0x19, 0x12, 0x84, 0x21, 0x11, 0x29, 0x51, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x17, 0x01, 0x21, 0xF7, 0x86, 0x19, 0x95, 0x11, 0x34, 0x19, 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x08, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, + 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x05, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x8A, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, + 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x85, 0x19, 0x50, 0x11, 0x30, 0x09, 0x0F, 0x11, 0x50, 0x11, 0x30, 0x19, 0x30, 0x02, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x74, 0x19, 0xF8, 0x11, 0xD8, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x80, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x01, 0x01, 0xB9, 0x87, 0x09, 0xD8, 0x09, 0xD7, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x32, 0x19, 0x31, 0x19, 0x51, 0x21, 0x51, 0x05, 0x21, 0x30, 0x85, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0xB5, 0x22, 0x17, 0x01, 0x1A, 0x18, 0x85, 0x19, 0xD7, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x21, 0x32, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x11, 0x8E, 0x21, 0x32, 0x19, 0x12, 0x11, 0x33, 0x11, 0x34, 0x19, 0x95, 0x2A, 0x38, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x11, 0x02, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, + 0x30, 0x02, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x09, 0x55, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xBA, 0x03, 0x01, 0xDA, 0x88, 0x01, 0xFA, 0x01, 0xD9, 0x09, 0xD8, 0x11, 0xF8, 0x11, 0x95, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x31, 0x84, 0x19, 0x31, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x09, 0x12, 0x11, 0x74, 0x21, 0xF6, 0x01, 0x22, 0x17, 0x83, 0x19, 0xF6, 0x11, 0x94, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x82, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x88, 0x28, 0xCD, 0x28, 0x6C, 0x20, 0x09, 0xB3, 0xF8, 0xDC, 0xDA, 0xDC, 0xB9, 0xE4, 0xB9, 0xDC, 0x78, 0xDC, 0x77, 0x06, 0xDC, 0x57, 0x88, 0xDC, 0x78, 0xDC, 0x99, 0xE5, 0x1B, 0x9B, 0x15, 0x38, 0x6B, 0x28, 0xAD, 0x28, 0xEE, 0x28, 0xEF, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x87, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x96, 0x11, 0xD7, 0x09, 0xD9, 0x01, 0xB9, 0x05, 0x01, 0xDA, 0x01, 0x09, 0xD9, 0x84, 0x11, 0xB8, 0x19, 0xD7, 0x11, 0x74, 0x19, 0x32, 0x19, 0x31, 0x08, + 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x13, 0x19, 0xB6, 0x21, 0xF7, 0x01, 0x19, 0xB6, 0x80, 0x11, 0x54, 0x01, 0x11, 0x32, 0x01, 0x11, 0x31, 0x86, 0x11, 0x52, 0x11, 0x74, 0x11, 0x95, 0x11, 0x97, 0x11, 0xD9, 0x09, 0xF9, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x84, 0x09, 0xF9, 0x09, 0xF8, 0x11, 0xD7, 0x11, 0x54, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x04, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x11, 0x54, 0x01, 0x19, 0xB6, 0x92, 0x19, 0xB5, 0x21, 0xB5, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x51, 0x21, 0x30, + 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0xB5, 0x11, 0x32, 0x19, 0x31, 0x03, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x88, 0x11, 0x32, 0x11, 0x54, 0x19, 0xB6, 0x11, 0xD7, 0x11, 0xD8, 0x09, 0xB7, 0x09, 0x76, 0x01, 0x55, 0x01, 0x35, 0x01, 0x09, 0x55, 0x85, 0x09, 0x76, 0x09, 0x97, 0x09, 0xB7, 0x09, 0xD7, 0x11, 0xD8, 0x11, 0xD7, 0x01, 0x11, 0xB7, 0x81, 0x11, 0xB6, 0x11, 0x96, 0x0B, 0x11, 0x75, 0x81, 0x19, 0x95, 0x19, 0x96, 0x01, 0x11, 0x95, 0x01, 0x19, 0x96, 0x80, 0x11, 0x95, 0x01, 0x19, 0x95, 0x01, 0x19, 0x96, 0x82, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x96, 0x01, 0x19, 0x95, 0x01, 0x19, 0x96, 0x01, 0x19, 0x95, 0x86, 0x11, 0x95, 0x19, 0x96, 0x11, 0x95, 0x19, 0xB6, 0x11, 0x95, 0x19, 0xB6, 0x11, 0x95, 0x03, 0x19, 0x95, 0x82, 0x19, 0x96, 0x19, 0x95, 0x19, 0x96, 0x01, 0x11, 0x95, 0x82, 0x19, 0x95, 0x19, 0x96, 0x11, 0x95, 0x01, 0x19, 0x96, 0x80, 0x19, 0x95, 0x02, 0x11, 0x95, 0x82, 0x19, 0x95, 0x11, 0x95, 0x19, 0x95, 0x02, 0x11, 0x95, 0x83, 0x19, 0x95, 0x11, 0x95, 0x19, 0x95, 0x11, 0x75, 0x02, 0x11, 0x95, 0x01, 0x19, 0x95, 0x81, 0x11, 0x95, 0x19, 0x95, 0x05, 0x11, 0x95, 0x01, 0x19, 0x95, 0x80, 0x11, 0x75, 0x01, 0x11, 0x95, 0x80, 0x19, 0x95, 0x09, 0x11, 0x95, 0x01, 0x19, 0x95, 0x07, 0x11, 0x95, 0x81, 0x19, 0x95, 0x19, 0xB5, 0x01, 0x19, 0x95, 0x04, 0x11, 0x95, 0x01, 0x11, 0x75, 0x80, 0x11, 0x95, 0x02, 0x11, + 0x75, 0x03, 0x11, 0x95, 0x80, 0x11, 0x55, 0x01, 0x11, 0x54, 0x01, 0x11, 0x33, 0x81, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x87, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0x74, 0x11, 0x54, 0x11, 0xB6, 0x19, 0xD7, 0x03, 0x11, 0xD8, 0x8D, 0x11, 0xB7, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x94, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x88, 0x19, 0x31, 0x19, 0x52, 0x11, 0x52, 0x11, 0x53, 0x09, 0x75, 0x09, 0x96, 0x09, 0xD7, 0x12, 0x18, 0x12, 0x19, 0x01, 0x11, 0xF8, 0x87, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x02, 0x19, 0x31, 0x8C, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x09, 0xB7, 0x09, 0xD7, 0x11, 0xF8, 0x12, 0x19, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x55, 0x11, 0x33, 0x01, 0x19, 0x12, 0x02, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x92, 0x21, 0x31, 0x21, 0x51, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0x75, 0x11, 0x54, 0x19, 0x33, 0x19, 0x32, 0x19, 0x11, + 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x09, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x07, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x88, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, + 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x31, 0x05, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x8C, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x50, 0x21, 0x71, 0x19, 0x50, 0x00, 0xCE, 0x32, 0xD6, 0x43, 0x58, 0x09, 0x30, 0x11, 0x30, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x31, 0x94, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x11, 0xB6, 0x11, 0xD8, 0x11, 0xF9, 0x0A, 0x1A, 0x09, 0xFA, 0x01, 0xDA, 0x01, 0xB9, 0x09, 0xDA, 0x01, 0xB9, 0x09, 0xD9, 0x09, 0xF9, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0x95, 0x11, + 0x53, 0x19, 0x53, 0x19, 0x52, 0x21, 0x51, 0x05, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x01, 0x19, 0x32, 0x82, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD7, 0x01, 0x22, 0x18, 0x8C, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x13, 0x11, 0x12, 0x19, 0x12, 0x21, 0x32, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x11, 0x01, 0x21, 0x52, 0x83, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x02, 0x21, 0xF7, 0x82, 0x19, 0x75, 0x11, 0x33, 0x11, 0x13, 0x01, 0x19, 0x32, 0x81, 0x21, 0x31, 0x21, 0x11, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x52, 0x09, 0x54, 0x11, 0xB7, 0x09, 0xD8, 0x01, 0xB9, 0x09, 0xDA, 0x04, 0x01, 0xDA, 0x87, 0x01, 0xFA, 0x09, 0xFA, 0x09, 0xF9, 0x09, 0xD8, 0x19, 0xF8, 0x11, 0x54, 0x11, 0x12, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x31, 0x80, 0x19, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x21, 0x50, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x31, 0x89, 0x11, 0x32, + 0x11, 0x33, 0x11, 0x74, 0x19, 0xF6, 0x22, 0x37, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x88, 0x29, 0x0F, 0x28, 0xEF, 0x28, 0xCE, 0x20, 0x6C, 0x28, 0x2A, 0x82, 0x93, 0xE5, 0x3C, 0xDC, 0x99, 0xDC, 0xB9, 0x02, 0xDC, 0x78, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x01, 0xDC, 0x78, 0x8B, 0xDC, 0x99, 0xE4, 0xFB, 0x92, 0xD3, 0x30, 0x2A, 0x30, 0xCD, 0x28, 0xCE, 0x28, 0xEF, 0x29, 0x0F, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x89, 0x21, 0x10, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x19, 0x95, 0x19, 0xF8, 0x12, 0x19, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x87, 0x01, 0xFA, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xD8, 0x22, 0x39, 0x19, 0xB6, 0x11, 0x12, 0x19, 0x31, 0x08, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x8A, 0x21, 0x50, 0x19, 0x30, 0x19, 0x31, 0x11, 0x12, 0x11, 0x13, + 0x19, 0xB6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x09, 0x12, 0x01, 0x19, 0x52, 0x86, 0x11, 0x32, 0x11, 0x53, 0x19, 0x94, 0x11, 0xB6, 0x11, 0xD8, 0x09, 0xD9, 0x01, 0xD9, 0x03, 0x01, 0xFA, 0x89, 0x02, 0x1A, 0x01, 0xD9, 0x01, 0xB9, 0x09, 0xF9, 0x11, 0xF9, 0x1A, 0x18, 0x11, 0x75, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x03, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x9C, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x11, 0x32, 0x11, 0x74, 0x19, 0x95, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x94, 0x19, 0x53, 0x19, 0x32, 0x21, 0x51, 0x21, 0x31, 0x19, 0x10, 0x21, 0x30, 0x19, 0x30, 0x19, 0x50, 0x19, 0x31, 0x11, 0x32, 0x11, 0x74, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x52, 0x19, 0x51, 0x21, 0x51, 0x01, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8D, 0x19, 0x31, 0x11, 0x12, 0x11, 0x53, 0x11, 0x95, 0x11, 0xD7, 0x11, 0xF8, 0x1A, 0x19, 0x11, 0xF8, 0x09, 0x96, 0x01, 0x75, 0x09, 0x76, 0x09, 0x96, 0x11, 0xD7, 0x09, 0xD7, 0x01, 0x11, 0xF8, 0x83, 0x11, 0xB6, 0x09, 0x75, + 0x11, 0x54, 0x11, 0x34, 0x01, 0x11, 0x33, 0x81, 0x11, 0x12, 0x11, 0x32, 0x02, 0x11, 0x33, 0x01, 0x11, 0x32, 0x84, 0x19, 0x33, 0x11, 0x33, 0x19, 0x33, 0x11, 0x33, 0x11, 0x12, 0x04, 0x11, 0x33, 0x80, 0x11, 0x12, 0x04, 0x11, 0x33, 0x81, 0x11, 0x12, 0x11, 0x32, 0x01, 0x19, 0x33, 0x81, 0x11, 0x32, 0x11, 0x33, 0x01, 0x11, 0x32, 0x81, 0x11, 0x33, 0x19, 0x33, 0x02, 0x11, 0x33, 0x80, 0x11, 0x32, 0x02, 0x11, 0x33, 0x01, 0x19, 0x33, 0x01, 0x11, 0x33, 0x02, 0x19, 0x33, 0x04, 0x11, 0x33, 0x01, 0x11, 0x32, 0x01, 0x11, 0x33, 0x02, 0x11, 0x32, 0x05, 0x11, 0x33, 0x81, 0x11, 0x32, 0x11, 0x33, 0x01, 0x19, 0x53, 0x02, 0x11, 0x33, 0x80, 0x11, 0x32, 0x01, 0x11, 0x33, 0x81, 0x11, 0x32, 0x11, 0x33, 0x01, 0x19, 0x33, 0x0D, 0x11, 0x33, 0x80, 0x19, 0x33, 0x01, 0x11, 0x32, 0x01, 0x11, 0x33, 0x01, 0x11, 0x32, 0x03, 0x11, 0x33, 0x01, 0x11, 0x53, 0x81, 0x11, 0x33, 0x11, 0x32, 0x02, 0x11, 0x33, 0x82, 0x11, 0x12, 0x11, 0x33, 0x19, 0x33, 0x01, 0x11, 0x33, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x01, 0x11, 0x12, 0x80, 0x11, 0x32, 0x02, 0x11, 0x33, 0x02, 0x11, 0x12, 0x84, 0x19, 0x32, 0x19, 0x51, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x19, 0x0F, 0x01, + 0x19, 0x10, 0x85, 0x19, 0x31, 0x19, 0x52, 0x19, 0x53, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD7, 0x01, 0x19, 0xF8, 0x82, 0x11, 0xD7, 0x09, 0x76, 0x09, 0x55, 0x01, 0x11, 0x75, 0x80, 0x11, 0x54, 0x01, 0x11, 0x53, 0x84, 0x11, 0x32, 0x19, 0x52, 0x19, 0x32, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x86, 0x11, 0x32, 0x09, 0x53, 0x09, 0x95, 0x09, 0xB6, 0x11, 0xF8, 0x12, 0x19, 0x11, 0xF8, 0x01, 0x11, 0xD8, 0x84, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x32, 0x19, 0x11, 0x01, 0x19, 0x31, 0x89, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x09, 0xB6, 0x11, 0xD7, 0x02, 0x11, 0xF8, 0x83, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x33, 0x01, 0x19, 0x12, 0x80, 0x19, 0x11, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x8F, 0x21, 0x51, 0x21, 0x31, 0x21, 0x51, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xD7, 0x21, 0xF8, 0x21, 0xD7, 0x19, 0x75, 0x19, 0x54, 0x19, 0x12, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, + 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x86, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x08, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x09, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x09, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, + 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x21, 0x51, 0x21, 0x52, 0x02, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x90, 0x21, 0x50, 0x21, 0x71, 0x11, 0x50, 0x01, 0x0F, 0x01, 0x70, 0x4C, 0x3B, 0x54, 0x5B, 0x1A, 0x33, 0x01, 0x30, 0x11, 0x10, 0x19, 0x30, 0x21, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xF9, 0x11, 0xFA, 0x09, 0xFA, 0x09, 0xDA, 0x09, 0xB9, 0x01, 0x01, 0xB9, 0x87, 0x09, 0xD9, 0x09, 0xF9, 0x12, 0x19, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x53, 0x19, 0x72, 0x21, 0x52, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x95, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x12, 0x19, 0x53, 0x11, 0x53, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x18, 0x22, 0x17, 0x21, 0xD6, 0x19, 0x75, 0x11, 0x13, 0x11, 0x12, 0x19, 0x12, + 0x21, 0x32, 0x21, 0x31, 0x21, 0x10, 0x29, 0x31, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x50, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x81, 0x19, 0x31, 0x19, 0x12, 0x01, 0x11, 0x33, 0x84, 0x19, 0xB6, 0x22, 0x18, 0x21, 0xF7, 0x21, 0xD7, 0x19, 0x75, 0x01, 0x11, 0x33, 0x01, 0x19, 0x32, 0x01, 0x21, 0x11, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x50, 0x05, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x87, 0x19, 0x31, 0x11, 0x32, 0x11, 0x95, 0x11, 0xF8, 0x09, 0xB8, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xBA, 0x05, 0x01, 0xDA, 0x85, 0x01, 0xD9, 0x09, 0xF9, 0x1A, 0x19, 0x11, 0x75, 0x11, 0x12, 0x19, 0x11, 0x06, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x01, 0x21, 0x30, 0x87, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x20, 0xEF, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x87, 0x21, 0x31, 0x21, 0x51, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x09, 0x32, 0x11, 0x74, 0x21, 0xF6, 0x01, 0x22, 0x17, 0x82, 0x21, 0xF7, 0x19, 0x95, 0x09, 0x12, 0x01, 0x11, 0x11, 0x81, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x89, 0x28, 0xEF, 0x28, 0xEE, 0x28, + 0xAD, 0x20, 0x2B, 0x51, 0x4E, 0xCC, 0xBB, 0xDC, 0xDA, 0xDC, 0xB9, 0xDC, 0x98, 0xDC, 0x77, 0x02, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x86, 0xDC, 0x78, 0xDC, 0x99, 0xDC, 0xDA, 0xB3, 0xB7, 0x30, 0x2A, 0x38, 0xEE, 0x28, 0xCE, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x19, 0x10, 0x21, 0x11, 0x19, 0x11, 0x19, 0x33, 0x11, 0x75, 0x1A, 0x18, 0x11, 0xF9, 0x01, 0xB8, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x86, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xD8, 0x1A, 0x18, 0x19, 0xD6, 0x08, 0xF2, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x87, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x50, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x94, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x11, 0x12, 0x11, 0x13, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x11, 0x52, 0x19, 0x52, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x11, 0x96, 0x09, 0xB8, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xB9, 0x01, 0x09, 0xF9, 0x89, 0x19, 0xF8, 0x11, 0x75, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x29, 0x51, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x30, 0x03, + 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x90, 0x19, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0x74, 0x19, 0x53, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x21, 0x30, 0x19, 0x10, 0x01, 0x21, 0x30, 0x84, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x74, 0x1A, 0x18, 0x01, 0x11, 0xF8, 0x83, 0x11, 0xB6, 0x11, 0x53, 0x19, 0x52, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x19, 0x11, 0x86, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x11, 0xB6, 0x19, 0xF8, 0x11, 0xF8, 0x12, 0x18, 0x01, 0x11, 0xF8, 0x88, 0x11, 0xD7, 0x11, 0xF7, 0x11, 0xF8, 0x11, 0xF7, 0x12, 0x18, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x01, 0x11, 0x12, 0x02, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x19, 0x32, 0x03, 0x19, 0x11, 0x80, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x32, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, 0x04, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, 0x07, 0x19, 0x11, 0x01, 0x19, 0x32, 0x02, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, + 0x19, 0x11, 0x03, 0x19, 0x31, 0x80, 0x19, 0x11, 0x02, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x02, 0x19, 0x11, 0x01, 0x19, 0x32, 0x02, 0x19, 0x11, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x19, 0x32, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x06, 0x19, 0x11, 0x01, 0x19, 0x32, 0x81, 0x19, 0x31, 0x19, 0x11, 0x02, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x32, 0x0D, 0x19, 0x11, 0x81, 0x19, 0x32, 0x19, 0x11, 0x03, 0x19, 0x31, 0x01, 0x19, 0x30, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x91, 0x19, 0x10, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xF8, 0x19, 0xD7, 0x09, 0x75, 0x09, 0x34, 0x11, 0x34, 0x11, 0x54, 0x11, 0x53, 0x19, 0x33, 0x19, 0x32, 0x03, 0x19, 0x31, 0x80, 0x19, 0x30, 0x05, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x8A, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x52, 0x11, 0x74, 0x09, 0x95, 0x11, 0xB6, 0x11, 0xD7, 0x01, 0x11, 0xF8, 0x84, 0x1A, 0x19, 0x11, 0xF8, 0x19, 0xF7, 0x11, 0x75, 0x11, 0x54, 0x01, 0x11, 0x12, 0x82, 0x21, 0x52, 0x19, 0x31, 0x21, 0x31, 0x02, 0x19, 0x31, 0x85, 0x11, + 0x32, 0x11, 0x73, 0x11, 0x94, 0x11, 0x95, 0x11, 0xB6, 0x11, 0xD7, 0x01, 0x11, 0xF8, 0x84, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x33, 0x01, 0x19, 0x32, 0x80, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x51, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x84, 0x19, 0xB6, 0x19, 0x75, 0x19, 0x54, 0x11, 0x12, 0x19, 0x32, 0x02, 0x21, 0x31, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, + 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x08, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x31, 0x80, 0x21, 0x32, 0x01, 0x19, 0x32, 0x83, 0x19, 0x31, 0x21, 0x32, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, + 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8E, 0x29, 0x91, 0x19, 0x30, 0x09, 0x2F, 0x01, 0x0F, 0x33, 0x58, 0x44, 0x1A, 0x44, 0x3A, 0x33, 0x57, 0x01, 0x30, 0x09, 0x30, 0x11, 0x30, 0x19, 0x50, 0x21, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x19, 0x74, 0x11, 0x75, 0x11, 0x97, 0x11, 0xB8, 0x02, 0x11, 0xD9, 0x01, 0x11, 0xF9, 0x01, 0x11, 0xF8, 0x86, 0x19, 0xF8, 0x19, 0xB6, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x19, 0x10, 0x01, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD7, 0x01, 0x22, 0x17, 0x83, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x10, 0xF1, 0x01, 0x19, 0x11, 0x82, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x21, 0x11, 0x21, 0x32, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x11, 0x75, 0x01, 0x11, 0x13, 0x80, 0x11, 0x12, 0x01, 0x21, 0x32, 0x80, 0x21, 0x31, 0x03, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, + 0x30, 0x04, 0x29, 0x2F, 0x88, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0xD6, 0x12, 0x19, 0x09, 0xD9, 0x09, 0xDA, 0x02, 0x01, 0xBA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x88, 0x01, 0xD9, 0x09, 0xF9, 0x1A, 0x19, 0x19, 0xB6, 0x08, 0xF1, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x19, 0x30, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x11, 0x32, 0x11, 0x74, 0x19, 0xF6, 0x01, 0x22, 0x17, 0x83, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x33, 0x11, 0x11, 0x01, 0x19, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x28, 0xEF, 0x88, 0x28, 0xCE, 0x28, 0x6C, 0x28, 0x2A, 0xBC, 0x39, 0xDC, 0xFB, 0xE4, 0xDA, 0xDC, 0x98, 0xDC, 0x78, 0xDC, 0x77, 0x02, 0xDC, 0x37, 0x06, 0xDC, 0x57, 0x8A, 0xDC, 0x78, 0xDC, 0xBA, 0xDD, 0x3C, 0x51, 0x2D, 0x30, 0x8C, 0x28, 0xCE, 0x28, 0xEF, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x87, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x11, 0xB7, 0x09, 0xD8, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x89, 0x01, 0xB9, 0x01, + 0xD9, 0x09, 0xB9, 0x09, 0xB8, 0x19, 0xF8, 0x19, 0xD6, 0x09, 0x12, 0x19, 0x32, 0x21, 0x52, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x30, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x21, 0xD6, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x95, 0x01, 0x11, 0x33, 0x01, 0x11, 0x52, 0x87, 0x11, 0x32, 0x11, 0x74, 0x11, 0x95, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x87, 0x09, 0xF9, 0x12, 0x19, 0x11, 0xF8, 0x11, 0x75, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x86, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x21, 0x31, 0x21, 0x52, 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x19, 0x94, 0x01, 0x19, 0xB6, 0x85, 0x21, 0xF7, 0x19, 0xD6, 0x19, + 0x75, 0x19, 0x33, 0x19, 0x32, 0x19, 0x12, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x88, 0x11, 0x32, 0x09, 0x54, 0x1A, 0x18, 0x1A, 0x19, 0x11, 0xF8, 0x11, 0xB6, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x98, 0x19, 0x10, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF8, 0x1A, 0x18, 0x11, 0xF7, 0x11, 0xD7, 0x11, 0xF7, 0x11, 0xD7, 0x11, 0xD6, 0x11, 0xB6, 0x11, 0x74, 0x09, 0x32, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x19, 0x11, 0x02, 0x19, 0x31, 0x01, 0x19, 0x10, 0x80, 0x21, 0x31, 0x02, 0x19, 0x10, 0x83, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x19, 0x11, 0x02, 0x21, 0x11, 0x85, 0x19, 0x10, 0x21, 0x11, 0x19, 0x11, 0x21, 0x31, 0x19, 0x10, 0x21, 0x11, 0x02, 0x19, 0x10, 0x89, 0x21, 0x10, 0x19, 0x10, 0x21, 0x11, 0x19, 0x10, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x10, 0x02, 0x19, 0x11, 0x84, 0x19, 0x10, 0x21, 0x11, 0x21, 0x10, 0x21, 0x11, 0x21, 0x10, 0x03, 0x21, 0x11, 0x85, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x19, 0x10, 0x19, 0x31, 0x19, 0x11, 0x01, 0x21, 0x11, 0x85, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x02, 0x21, 0x31, 0x81, 0x19, 0x11, 0x21, 0x31, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x03, 0x19, 0x10, 0x80, 0x21, 0x31, 0x01, 0x21, + 0x11, 0x80, 0x19, 0x11, 0x01, 0x21, 0x11, 0x84, 0x21, 0x31, 0x19, 0x10, 0x21, 0x11, 0x21, 0x31, 0x19, 0x31, 0x04, 0x19, 0x10, 0x83, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x19, 0x11, 0x01, 0x21, 0x31, 0x83, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x11, 0x02, 0x19, 0x31, 0x81, 0x19, 0x11, 0x21, 0x11, 0x02, 0x19, 0x11, 0x84, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x02, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x82, 0x19, 0x11, 0x19, 0x10, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x96, 0x09, 0x34, 0x09, 0x13, 0x01, 0x11, 0x13, 0x80, 0x19, 0x53, 0x01, 0x19, 0x32, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x10, 0x87, 0x21, 0x30, 0x21, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x93, 0x19, 0x30, 0x19, 0x31, 0x19, 0x52, 0x11, 0x52, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x1A, 0x18, 0x11, 0xF8, 0x1A, 0x19, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x95, 0x11, + 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x52, 0x21, 0x51, 0x02, 0x19, 0x31, 0x85, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB7, 0x11, 0xD8, 0x02, 0x11, 0xF8, 0x84, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x19, 0x53, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x21, 0x51, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x51, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0x95, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x86, 0x19, 0xB6, 0x19, 0x75, 0x19, 0x54, 0x19, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x87, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, + 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x8E, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, + 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x31, 0x80, 0x21, 0x52, 0x03, 0x19, 0x32, 0x80, 0x11, 0x32, 0x01, 0x19, 0x32, 0x82, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x8A, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x50, 0x21, 0x70, 0x21, 0x71, 0x09, 0x0F, 0x01, 0x0F, 0x01, 0xB1, 0x3C, 0x1A, 0x01, 0x34, 0x1A, 0x86, 0x33, 0xD9, 0x0A, 0x12, 0x01, 0x0F, 0x09, 0x30, 0x11, 0x50, 0x19, 0x50, 0x21, 0x50, 0x01, 0x21, 0x30, 0x83, 0x21, 0x50, 0x29, 0x50, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x19, 0x54, 0x11, 0x75, 0x11, 0x76, 0x11, 0x97, 0x11, 0xB8, 0x11, 0xD8, 0x1A, 0x18, 0x01, 0x11, 0xD7, 0x84, 0x11, 0xD6, 0x11, 0x75, 0x11, 0x53, 0x11, 0x52, 0x19, 0x31, 0x01, 0x19, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x52, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD7, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x10, 0x89, 0x21, 0x31, 0x21, 0x32, 0x19, 0x53, 0x11, 0x33, 0x19, 0x54, 0x19, 0x96, 0x21, 0xD7, 0x22, 0x18, 0x21, 0xD7, 0x11, 0x75, 0x01, 0x11, + 0x13, 0x80, 0x19, 0x33, 0x01, 0x21, 0x32, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x87, 0x29, 0x30, 0x21, 0x10, 0x19, 0x31, 0x11, 0x33, 0x11, 0xB6, 0x11, 0xF8, 0x09, 0xD9, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x03, 0x01, 0xDA, 0x85, 0x09, 0xFA, 0x09, 0xF9, 0x11, 0xF8, 0x19, 0xD7, 0x09, 0x12, 0x19, 0x31, 0x02, 0x21, 0x30, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x05, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8A, 0x19, 0x11, 0x11, 0x32, 0x11, 0x12, 0x11, 0x74, 0x21, 0xF6, 0x22, 0x17, 0x22, 0x37, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x11, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x28, 0xEF, 0x88, 0x28, 0xAD, 0x28, 0x2B, 0x8A, 0xF4, 0xDC, 0xFB, 0xDC, 0xDA, 0xDC, 0xB9, 0xDC, 0x98, 0xDC, 0x78, 0xDC, 0x36, 0x02, 0xDC, 0x57, 0x9D, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x58, 0xDC, 0x78, 0xDC, 0xBA, 0xE5, 0x3C, 0x61, 0xCF, 0x28, 0x4B, + 0x28, 0xCE, 0x20, 0xCE, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x19, 0xD7, 0x11, 0xF9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x86, 0x09, 0xDA, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0xD7, 0x19, 0xD6, 0x11, 0x33, 0x11, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x8B, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x11, 0x12, 0x11, 0x13, 0x19, 0xB6, 0x21, 0xF8, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x34, 0x11, 0x12, 0x11, 0x53, 0x01, 0x11, 0x52, 0x85, 0x11, 0x74, 0x11, 0x95, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x8A, 0x01, 0xBA, 0x01, 0xB9, 0x0A, 0x1A, 0x12, 0x19, 0x11, 0xD8, 0x11, 0x75, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, + 0x05, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x01, 0x19, 0xD6, 0x86, 0x19, 0xB6, 0x21, 0xD6, 0x19, 0x95, 0x19, 0x54, 0x19, 0x33, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x11, 0x74, 0x1A, 0x18, 0x12, 0x19, 0x11, 0xF8, 0x11, 0xB6, 0x11, 0x33, 0x11, 0x31, 0x19, 0x31, 0x01, 0x21, 0x30, 0x81, 0x29, 0x50, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x01, 0x21, 0x10, 0x83, 0x21, 0x31, 0x19, 0x31, 0x19, 0x53, 0x11, 0x54, 0x01, 0x11, 0x75, 0x82, 0x11, 0xB6, 0x11, 0xD6, 0x11, 0xB5, 0x01, 0x11, 0x95, 0x82, 0x09, 0x74, 0x11, 0x74, 0x11, 0x53, 0x01, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x10, 0x81, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x19, 0x10, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x09, 0x21, 0x10, 0x80, 0x19, 0x10, 0x05, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x19, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, + 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8E, 0x21, 0x30, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x21, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x34, 0x09, 0x13, 0x09, 0x12, 0x11, 0x32, 0x01, 0x19, 0x32, 0x84, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x19, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x19, 0x31, 0x19, 0x52, 0x01, 0x11, 0x33, 0x8B, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD7, 0x1A, 0x18, 0x12, 0x18, 0x1A, 0x39, 0x1A, 0x18, 0x11, 0xB7, + 0x11, 0x76, 0x09, 0x54, 0x11, 0x33, 0x19, 0x53, 0x01, 0x19, 0x52, 0x03, 0x19, 0x31, 0x84, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB6, 0x01, 0x11, 0xF8, 0x85, 0x12, 0x18, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x74, 0x11, 0x33, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x84, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8E, 0x19, 0x10, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x19, 0x95, 0x21, 0xD7, 0x21, 0xF7, 0x19, 0xF7, 0x19, 0xB6, 0x19, 0x75, 0x11, 0x53, 0x11, 0x32, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x8A, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x01, + 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x86, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x89, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, + 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x21, 0x32, 0x19, 0x32, 0x01, 0x19, 0x33, 0x81, 0x11, 0x33, 0x11, 0x53, 0x02, 0x11, 0x33, 0x81, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x02, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x50, 0x11, 0x0F, 0x01, 0x01, 0x0F, 0x88, 0x2B, 0x57, 0x2B, 0xF9, 0x2C, 0x3A, 0x24, 0x19, 0x2C, 0x19, 0x2B, 0x98, 0x01, 0x91, 0x01, 0x30, 0x09, 0x0F, 0x01, 0x19, 0x50, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0x54, 0x11, 0x54, 0x01, 0x11, 0x55, 0x88, 0x19, 0x95, 0x19, 0x75, 0x11, 0x54, 0x11, 0x53, 0x11, 0x12, 0x11, 0x11, 0x19, 0x51, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8C, 0x19, 0x32, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD7, 0x22, 0x17, 0x19, 0xF7, 0x21, 0xD6, 0x11, 0x74, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x29, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x8F, 0x21, 0x31, 0x21, 0x32, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x18, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x13, 0x19, + 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x31, 0x11, 0x32, 0x11, 0x95, 0x09, 0xD7, 0x09, 0xB8, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xDB, 0x02, 0x01, 0xDA, 0x01, 0x09, 0xFA, 0x87, 0x09, 0xD9, 0x11, 0xF8, 0x11, 0x95, 0x09, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x51, 0x21, 0x31, 0x21, 0x52, 0x19, 0x11, 0x01, 0x11, 0x11, 0x82, 0x11, 0x32, 0x19, 0x74, 0x21, 0xD6, 0x01, 0x22, 0x17, 0x87, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x12, 0x10, 0xF1, 0x18, 0xF1, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x06, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x85, 0x28, 0xCE, 0x20, 0x4B, 0x40, 0xED, 0xD4, 0xDB, 0xD4, 0xDA, 0xDC, 0xB9, 0x01, 0xDC, 0x78, 0x83, 0xDC, 0x77, 0xDC, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0x03, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x8A, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x78, 0xDC, 0xB9, 0xDD, 0x1B, 0xAB, 0xF8, 0x20, 0x2A, 0x30, 0xEE, 0x28, 0xCE, 0x20, 0xEF, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, + 0x21, 0x31, 0x86, 0x19, 0x11, 0x19, 0x32, 0x11, 0x74, 0x11, 0xB7, 0x09, 0xF8, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x8E, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xB9, 0x09, 0xB9, 0x11, 0xF9, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x85, 0x19, 0x30, 0x19, 0x31, 0x11, 0x12, 0x11, 0x13, 0x19, 0xB6, 0x21, 0xF7, 0x01, 0x19, 0xB6, 0x81, 0x11, 0x54, 0x11, 0x12, 0x02, 0x11, 0x52, 0x85, 0x11, 0x53, 0x11, 0x95, 0x11, 0x96, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xB9, 0x04, 0x01, 0xDA, 0x8D, 0x01, 0xBA, 0x01, 0xB9, 0x09, 0xF9, 0x12, 0x19, 0x11, 0xD8, 0x11, 0x75, 0x11, 0x12, 0x19, 0x32, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, + 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x37, 0x19, 0xB6, 0x01, 0x19, 0x95, 0x85, 0x19, 0x54, 0x19, 0x33, 0x19, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x09, 0x33, 0x09, 0x75, 0x11, 0xF8, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xB7, 0x09, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x19, 0x11, 0x19, 0x32, 0x02, 0x19, 0x53, 0x82, 0x11, 0x53, 0x19, 0x74, 0x11, 0x53, 0x01, 0x11, 0x33, 0x81, 0x19, 0x53, 0x11, 0x32, 0x01, 0x19, 0x32, 0x80, 0x19, 0x11, 0x02, 0x19, 0x10, 0x09, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x0C, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x0A, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x07, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, + 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x09, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x90, 0x21, 0x31, 0x21, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x53, 0x19, 0x95, 0x19, 0xD6, 0x21, 0xD7, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x13, 0x08, 0xF1, 0x11, 0x11, 0x19, 0x31, 0x19, 0x51, 0x01, 0x19, 0x30, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x83, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x01, 0x11, 0x54, 0x88, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF8, 0x12, 0x19, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0x96, 0x09, 0x54, 0x01, 0x11, 0x53, 0x01, 0x19, 0x52, 0x80, 0x21, 0x51, 0x02, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x96, 0x11, 0xB7, 0x01, 0x11, 0xF8, 0x89, 0x1A, 0x19, 0x1A, 0x18, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x30, 0x03, 0x21, 0x30, 0x91, 0x21, 0x2F, 0x21, 0x50, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x19, 0x95, 0x19, 0xD6, 0x22, 0x18, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0x94, 0x11, 0x53, + 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x88, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x05, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x03, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x0A, 0x21, 0x10, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, + 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x88, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x50, 0x02, 0x21, 0x30, 0x80, 0x19, 0x11, 0x01, 0x19, 0x32, 0x82, 0x11, 0x33, 0x11, 0x54, 0x11, 0x74, 0x03, 0x11, 0x95, 0x83, 0x11, 0x75, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x31, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x50, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x19, 0x50, 0x11, 0x2F, 0x01, 0x0F, 0x01, 0xD1, 0x2B, 0xD9, 0x01, 0x24, 0x19, 0x8C, 0x1B, 0xF9, 0x24, 0x19, 0x2C, 0x19, 0x1A, 0xD5, 0x01, 0x50, 0x01, 0x2F, 0x11, 0x0F, 0x19, 0x70, + 0x19, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x80, 0x19, 0x31, 0x02, 0x19, 0x32, 0x81, 0x19, 0x33, 0x11, 0x13, 0x01, 0x11, 0x12, 0x81, 0x11, 0x32, 0x11, 0x12, 0x01, 0x19, 0x31, 0x02, 0x19, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x87, 0x21, 0x10, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x84, 0x21, 0xD6, 0x19, 0x94, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x11, 0x82, 0x21, 0x10, 0x29, 0x31, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x8B, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0x75, 0x19, 0xB6, 0x21, 0xD7, 0x22, 0x18, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x34, 0x11, 0x33, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x31, 0x19, 0x32, 0x11, 0x95, 0x11, 0xF8, 0x09, 0xB8, 0x09, 0xD9, 0x01, 0xDA, 0x09, 0xFA, 0x01, 0x01, 0xDA, 0x89, 0x01, 0xFB, 0x01, 0xFA, 0x01, 0xDA, 0x09, 0xFA, 0x09, 0xD9, 0x11, 0xD8, + 0x19, 0xD7, 0x11, 0x74, 0x11, 0x12, 0x19, 0x31, 0x02, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x31, 0x21, 0x52, 0x19, 0x31, 0x19, 0x11, 0x01, 0x11, 0x12, 0x81, 0x11, 0x54, 0x21, 0xF6, 0x01, 0x22, 0x17, 0x86, 0x21, 0xF6, 0x19, 0x94, 0x11, 0x32, 0x10, 0xF1, 0x18, 0xF1, 0x18, 0xF0, 0x21, 0x11, 0x04, 0x21, 0x10, 0x02, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0x8D, 0x18, 0x09, 0x9B, 0x55, 0xDC, 0xFB, 0x01, 0xDC, 0xB9, 0x81, 0xDC, 0x58, 0xDC, 0x78, 0x02, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x81, 0xDC, 0x16, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x85, 0xDC, 0x57, 0xE4, 0x78, 0xDC, 0xB9, 0xDC, 0xDA, 0xCC, 0xFB, 0x20, 0x09, 0x01, 0x28, 0xCE, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x31, 0x19, 0x32, 0x11, 0x54, 0x19, 0xD7, 0x11, 0xF8, 0x09, 0xF9, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x02, 0x01, 0xB9, 0x86, 0x09, 0xD9, 0x11, 0xF9, 0x1A, 0x17, 0x19, 0xB5, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, + 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x89, 0x19, 0x30, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x01, 0x11, 0x52, 0x84, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xD7, 0x01, 0x09, 0xD9, 0x83, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x89, 0x09, 0xF9, 0x12, 0x19, 0x11, 0xB7, 0x11, 0x54, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x10, 0x87, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x08, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xF6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x34, 0x11, 0x33, 0x19, 0x33, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x09, 0x34, 0x09, 0x75, 0x11, 0xF8, 0x01, 0x11, + 0xF9, 0x82, 0x11, 0xD8, 0x09, 0x54, 0x11, 0x33, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x81, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x32, 0x81, 0x19, 0x11, 0x19, 0x31, 0x02, 0x19, 0x11, 0x81, 0x21, 0x30, 0x19, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x06, 0x21, 0x10, 0x87, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, + 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x01, 0x11, 0x33, 0x85, 0x19, 0x95, 0x21, 0xD6, 0x21, 0xD7, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x01, 0x11, 0x12, 0x80, 0x19, 0x31, 0x01, 0x19, 0x51, 0x02, 0x19, 0x30, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x30, 0x85, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x31, 0x19, 0x12, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xF8, 0x12, 0x19, 0x01, 0x11, 0xF8, 0x85, 0x11, 0xD7, 0x09, 0x95, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x52, 0x01, 0x19, 0x51, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x84, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x76, 0x11, 0xB7, 0x01, 0x11, 0xF8, 0x86, 0x1A, 0x19, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x29, + 0x30, 0x21, 0x31, 0x01, 0x19, 0x11, 0x82, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x02, 0x19, 0xD6, 0x82, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x53, 0x01, 0x11, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x51, 0x09, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x05, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x22, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x07, 0x21, 0x10, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x07, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x20, 0xF0, 0x21, 0x10, 0x29, 0x30, 0x06, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, + 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x8A, 0x21, 0x2F, 0x21, 0x0F, 0x19, 0x10, 0x19, 0x30, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x11, 0x75, 0x19, 0xB6, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x12, 0x18, 0x87, 0x11, 0xF8, 0x11, 0xF7, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x53, 0x19, 0x52, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x86, 0x19, 0x30, 0x19, 0x50, 0x09, 0x2F, 0x01, 0x4F, 0x2B, 0x57, 0x23, 0xF9, 0x1C, 0x19, 0x01, 0x13, 0xF9, 0x86, 0x1C, 0x19, 0x24, 0x3A, 0x2B, 0xB8, 0x01, 0xB1, 0x01, 0x4F, 0x09, 0x2F, 0x19, 0x70, 0x01, 0x21, 0x50, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x52, 0x80, 0x19, 0x11, 0x01, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, + 0x21, 0x10, 0x82, 0x21, 0x31, 0x21, 0x32, 0x19, 0x12, 0x01, 0x11, 0x33, 0x81, 0x11, 0x95, 0x19, 0xF6, 0x01, 0x22, 0x37, 0x90, 0x21, 0xD6, 0x19, 0x94, 0x11, 0x33, 0x10, 0xF1, 0x19, 0x11, 0x18, 0xF0, 0x21, 0x11, 0x21, 0x30, 0x29, 0x30, 0x29, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x86, 0x21, 0x31, 0x21, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x55, 0x19, 0xB7, 0x01, 0x22, 0x18, 0x85, 0x21, 0xF8, 0x11, 0x75, 0x09, 0x13, 0x11, 0x33, 0x19, 0x33, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x8D, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x11, 0x54, 0x19, 0xD7, 0x11, 0xD8, 0x09, 0xD9, 0x09, 0xB9, 0x09, 0xDA, 0x01, 0xBA, 0x01, 0xB9, 0x09, 0xFA, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x85, 0x09, 0xD8, 0x11, 0xD8, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x01, 0x11, 0x12, 0x8B, 0x11, 0x54, 0x21, 0xF6, 0x22, 0x17, 0x22, + 0x37, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x32, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x29, 0x0F, 0x28, 0xEF, 0x20, 0xAD, 0x28, 0x6B, 0x49, 0x0D, 0xDD, 0x3C, 0xDC, 0xDA, 0xDC, 0xB9, 0xDC, 0x78, 0x01, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x83, 0xDC, 0x16, 0xE4, 0x37, 0xDC, 0x37, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x88, 0xDC, 0x57, 0xDC, 0x78, 0xDC, 0x99, 0xDC, 0xFB, 0xAB, 0xB7, 0x28, 0x6B, 0x28, 0xAD, 0x28, 0xCE, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x84, 0x11, 0x33, 0x11, 0x75, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xF9, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x87, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xF8, 0x22, 0x17, 0x19, 0x94, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x8B, 0x19, 0x30, + 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xD6, 0x22, 0x18, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x52, 0x19, 0x52, 0x01, 0x11, 0x32, 0x85, 0x11, 0x73, 0x11, 0xB5, 0x11, 0xB7, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x92, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x21, 0x2F, 0x81, 0x29, 0x50, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x19, 0x31, 0x11, 0x32, 0x11, 0x12, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x13, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x09, 0x34, 0x09, 0x96, 0x11, 0xF9, 0x01, 0x09, 0xF9, 0x85, 0x09, 0xD8, 0x09, 0x75, 0x09, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x11, 0x04, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x04, 0x19, 0x11, 0x01, 0x21, + 0x11, 0x81, 0x21, 0x10, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x80, 0x29, 0x4F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x8A, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, + 0x19, 0x95, 0x21, 0xF6, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x75, 0x11, 0x13, 0x01, 0x11, 0x12, 0x85, 0x19, 0x31, 0x21, 0x52, 0x19, 0x51, 0x21, 0x51, 0x21, 0x30, 0x19, 0x2F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x8C, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x55, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x12, 0x19, 0x86, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x54, 0x11, 0x53, 0x11, 0x32, 0x19, 0x52, 0x01, 0x19, 0x51, 0x02, 0x19, 0x31, 0x85, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x19, 0xF8, 0x02, 0x11, 0xF8, 0x84, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x11, 0x85, 0x18, 0xF1, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x19, 0xD6, 0x19, 0xF6, 0x01, 0x19, 0xD6, 0x81, 0x11, 0x74, 0x11, 0x53, 0x01, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x51, 0x80, 0x21, 0x31, 0x0A, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x0A, 0x21, 0x10, 0x01, 0x21, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x1E, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, + 0x21, 0x30, 0x0D, 0x21, 0x10, 0x80, 0x21, 0x30, 0x20, 0x21, 0x10, 0x80, 0x21, 0x30, 0x1C, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x08, 0x21, 0x10, 0x01, 0x21, 0x30, 0x14, 0x21, 0x10, 0x80, 0x29, 0x10, 0x0D, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x08, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x86, 0x19, 0x10, 0x19, 0x30, 0x19, 0x31, 0x19, 0x52, 0x19, 0x74, 0x19, 0x95, 0x11, 0xD6, 0x01, 0x11, 0xF8, 0x8B, 0x09, 0xF8, 0x09, 0xD8, 0x09, 0xF9, 0x09, 0xF8, 0x12, 0x18, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB5, 0x19, 0x94, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x84, 0x11, 0x2F, 0x09, 0x2F, 0x01, 0xD1, 0x33, 0xF9, 0x23, 0xF9, 0x02, 0x14, 0x19, 0x87, 0x13, 0xF9, 0x24, 0x3A, 0x2C, 0x3A, 0x12, 0xD4, 0x01, 0x50, 0x01, 0x2F, 0x11, 0x2F, 0x21, 0x50, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x31, 0x19, 0x10, 0x19, 0x11, 0x21, 0x31, 0x01, 0x19, 0x11, 0x81, 0x21, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x11, 0x84, + 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x02, 0x22, 0x17, 0x87, 0x21, 0xF6, 0x19, 0x54, 0x19, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x29, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x32, 0x11, 0x32, 0x11, 0x34, 0x11, 0x75, 0x19, 0xB7, 0x01, 0x22, 0x18, 0x81, 0x19, 0xD7, 0x11, 0x75, 0x01, 0x11, 0x33, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x19, 0x11, 0x11, 0x32, 0x19, 0x95, 0x11, 0xD7, 0x11, 0xF9, 0x03, 0x09, 0xB9, 0x01, 0x01, 0xB9, 0x88, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0xF8, 0x19, 0xD7, 0x11, 0x94, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x89, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x19, 0x10, 0x21, 0x31, 0x21, 0x32, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x21, 0xD6, 0x01, 0x22, 0x17, 0x86, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x32, 0x10, 0xF1, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, + 0x21, 0x0F, 0x80, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x8A, 0x21, 0x0F, 0x29, 0x0F, 0x20, 0xCE, 0x28, 0xAD, 0x28, 0x2A, 0xAB, 0xF8, 0xDC, 0xFB, 0xDC, 0xB9, 0xD4, 0x78, 0xD4, 0x57, 0xDC, 0x78, 0x02, 0xDC, 0x37, 0x83, 0xE4, 0x57, 0xDC, 0x16, 0xE4, 0x57, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x8B, 0xDC, 0x16, 0xDC, 0x37, 0xE4, 0x78, 0xDC, 0x37, 0xE4, 0x78, 0xDC, 0x99, 0xDC, 0xBA, 0x8A, 0xD4, 0x30, 0x8C, 0x28, 0xAD, 0x28, 0xEE, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x11, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x54, 0x11, 0xB6, 0x11, 0xD8, 0x03, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x89, 0x09, 0xD9, 0x11, 0xF8, 0x11, 0xD8, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x89, 0x21, 0x30, 0x21, 0x50, 0x19, 0x30, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB6, 0x22, 0x18, 0x19, 0xD7, 0x19, 0xB6, 0x01, 0x11, 0x33, 0x01, 0x19, 0x52, 0x88, 0x11, 0x32, 0x11, 0x52, 0x11, 0x73, 0x11, 0x95, 0x11, 0xB6, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xF9, 0x0A, 0x19, 0x01, + 0x09, 0xF9, 0x81, 0x09, 0xD8, 0x09, 0xF8, 0x01, 0x11, 0xF8, 0x85, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x07, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x84, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0x74, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x88, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x75, 0x09, 0x76, 0x09, 0xB8, 0x02, 0x09, 0xF9, 0x89, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0x95, 0x11, 0x74, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x19, 0x10, 0x08, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, + 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0E, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x19, 0x32, 0x88, 0x11, 0x12, 0x11, 0x54, 0x19, 0x95, 0x21, 0xD6, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x50, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x09, 0x21, 0x2F, 0x84, + 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x93, 0x21, 0x30, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x09, 0x96, 0x11, 0xB7, 0x11, 0xF8, 0x12, 0x19, 0x1A, 0x39, 0x11, 0xF8, 0x09, 0xB6, 0x09, 0x75, 0x09, 0x53, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x51, 0x03, 0x19, 0x31, 0x8B, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xD8, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x54, 0x01, 0x11, 0x32, 0x82, 0x19, 0x51, 0x21, 0x71, 0x21, 0x30, 0x01, 0x21, 0x50, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8E, 0x21, 0x11, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x21, 0xF6, 0x19, 0xD6, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x53, 0x11, 0x12, 0x11, 0x11, 0x19, 0x32, 0x19, 0x31, 0x07, 0x21, 0x31, 0x80, 0x21, 0x51, 0x02, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x02, 0x21, 0x10, 0x80, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x11, 0x21, 0x30, 0x21, + 0x10, 0x01, 0x21, 0x11, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x31, 0x0A, 0x21, 0x10, 0x01, 0x21, 0x11, 0x04, 0x21, 0x10, 0x80, 0x21, 0x11, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x11, 0x05, 0x21, 0x10, 0x80, 0x21, 0x11, 0x03, 0x21, 0x10, 0x01, 0x21, 0x11, 0x81, 0x21, 0x10, 0x21, 0x11, 0x02, 0x21, 0x10, 0x84, 0x21, 0x11, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x21, 0x11, 0x02, 0x21, 0x10, 0x80, 0x21, 0x11, 0x0A, 0x21, 0x10, 0x84, 0x21, 0x11, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x21, 0x11, 0x12, 0x21, 0x10, 0x81, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x11, 0x07, 0x21, 0x10, 0x80, 0x19, 0x10, 0x01, 0x19, 0x31, 0x01, 0x19, 0x52, 0x85, 0x19, 0x74, 0x11, 0x95, 0x11, 0xD6, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x88, 0x09, 0xF9, 0x09, 0xD9, 0x0A, 0x19, 0x12, 0x19, 0x11, 0xF8, 0x11, 0xD7, 0x19, 0xD5, 0x11, 0x73, 0x11, 0x11, 0x01, 0x21, 0x31, 0x02, + 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x03, 0x21, 0x2F, 0x90, 0x19, 0x4F, 0x11, 0x2F, 0x01, 0x2F, 0x12, 0xB4, 0x2C, 0x19, 0x24, 0x39, 0x14, 0x19, 0x0B, 0xF8, 0x14, 0x19, 0x13, 0xF8, 0x1C, 0x19, 0x2C, 0x39, 0x34, 0x3A, 0x01, 0xF2, 0x01, 0x2F, 0x09, 0x0F, 0x19, 0x2F, 0x02, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x31, 0x21, 0x10, 0x21, 0x11, 0x21, 0x51, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x32, 0x19, 0x52, 0x11, 0x32, 0x11, 0x53, 0x11, 0x94, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x8A, 0x21, 0xD6, 0x19, 0x54, 0x19, 0x33, 0x19, 0x12, 0x18, 0xF1, 0x21, 0x11, 0x21, 0x10, 0x29, 0x51, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x8A, 0x21, 0x51, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x19, 0xB7, 0x21, 0xF8, 0x22, 0x18, 0x21, 0xD7, 0x11, 0x75, 0x01, 0x11, 0x33, 0x80, 0x19, 0x52, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x05, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x05, 0x29, 0x30, 0x8C, 0x21, 0x10, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x19, 0x31, 0x19, 0x12, 0x11, 0x33, 0x19, 0x96, 0x19, 0xF8, + 0x1A, 0x19, 0x01, 0x11, 0xF9, 0x89, 0x09, 0xD9, 0x11, 0xF9, 0x12, 0x19, 0x1A, 0x19, 0x1A, 0x38, 0x22, 0x17, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x11, 0x19, 0x11, 0x01, 0x19, 0x12, 0x8C, 0x11, 0x13, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x21, 0x10, 0x29, 0x51, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x20, 0xAD, 0x18, 0x2A, 0x61, 0xD0, 0xDD, 0x3C, 0xD4, 0xB9, 0xDC, 0x99, 0x01, 0xDC, 0x78, 0x01, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xDC, 0x36, 0x03, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x8B, 0xDC, 0x37, 0xDC, 0x57, 0xE4, 0x57, 0xDC, 0x57, 0xDC, 0x78, 0xDC, 0x99, 0xDC, 0xDB, 0x7A, 0x31, 0x20, 0x2A, 0x28, 0xCD, 0x20, 0xCE, 0x20, 0xEF, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x31, 0x87, 0x19, 0x31, 0x19, 0x32, 0x19, 0x94, 0x21, 0xF6, 0x11, 0xF7, 0x11, 0xF8, 0x11, 0xD8, 0x09, 0xD8, 0x01, 0x11, 0xF9, 0x89, 0x11, 0xD8, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x55, 0x11, 0x13, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, + 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x8B, 0x21, 0x30, 0x21, 0x50, 0x19, 0x30, 0x19, 0x11, 0x11, 0x12, 0x11, 0x34, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x95, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x11, 0x31, 0x86, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xF8, 0x1A, 0x19, 0x03, 0x11, 0xF8, 0x86, 0x11, 0xF7, 0x11, 0xB6, 0x11, 0x95, 0x19, 0x54, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x06, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x19, 0x74, 0x19, 0xB5, 0x01, 0x21, 0xF7, 0x87, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x19, 0x53, 0x19, 0x52, 0x19, 0x32, 0x21, 0x52, 0x19, 0x11, 0x02, 0x19, 0x10, 0x01, 0x21, 0x30, 0x86, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0xB6, 0x09, 0xB7, + 0x01, 0x09, 0xD9, 0x80, 0x09, 0xFA, 0x01, 0x09, 0xD9, 0x83, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0xB6, 0x11, 0x54, 0x01, 0x19, 0x32, 0x83, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x86, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x01, 0x21, + 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x29, 0x51, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x10, 0xF1, 0x11, 0x13, 0x11, 0x54, 0x19, 0x95, 0x19, 0xD6, 0x01, 0x21, 0xD6, 0x82, 0x19, 0x95, 0x11, 0x12, 0x10, 0xF2, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x19, 0x30, 0x80, 0x19, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x2E, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x30, 0x21, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x01, 0x11, 0xB7, 0x80, 0x11, 0xF8, 0x01, 0x12, 0x18, 0x86, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x01, 0x19, 0x51, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x76, 0x01, 0x11, 0xB7, 0x01, 0x11, 0xF8, 0x8B, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x51, 0x19, 0x31, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x87, 0x29, 0x51, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x19, 0xB5, 0x01, 0x21, 0xD6, 0x82, 0x19, 0xB5, 0x19, 0x74, + 0x11, 0x53, 0x01, 0x11, 0x12, 0x80, 0x11, 0x11, 0x03, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x04, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x11, 0x82, 0x19, 0x11, 0x21, 0x11, 0x19, 0x11, 0x02, 0x19, 0x31, 0x01, 0x21, 0x11, 0x05, 0x21, 0x31, 0x80, 0x19, 0x10, 0x05, 0x21, 0x11, 0x04, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x19, 0x31, 0x05, 0x21, 0x31, 0x01, 0x21, 0x11, 0x83, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x03, 0x21, 0x31, 0x81, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x01, 0x21, 0x11, 0x81, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x11, 0x83, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x21, 0x11, 0x21, 0x31, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, 0x82, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x21, 0x31, 0x05, 0x19, 0x31, 0x80, 0x19, 0x10, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x06, 0x21, 0x11, 0x80, 0x19, 0x11, 0x03, 0x21, 0x11, 0x80, 0x19, 0x11, 0x02, 0x21, 0x11, 0x80, 0x19, 0x11, 0x02, 0x21, 0x11, 0x80, 0x21, 0x31, 0x05, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x11, 0x83, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x21, 0x11, 0x06, 0x19, 0x11, 0x83, 0x21, 0x11, 0x19, 0x11, 0x21, 0x11, 0x19, 0x11, 0x03, 0x21, 0x11, 0x80, 0x19, 0x11, 0x08, 0x21, 0x11, 0x07, 0x19, 0x11, 0x01, 0x21, 0x11, 0x80, 0x19, 0x11, 0x01, 0x21, + 0x11, 0x80, 0x19, 0x11, 0x09, 0x21, 0x11, 0x03, 0x19, 0x11, 0x04, 0x21, 0x11, 0x80, 0x19, 0x11, 0x06, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x21, 0x11, 0x82, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x11, 0x80, 0x19, 0x11, 0x01, 0x21, 0x11, 0x80, 0x19, 0x11, 0x03, 0x21, 0x11, 0x81, 0x19, 0x11, 0x21, 0x11, 0x02, 0x19, 0x11, 0x80, 0x21, 0x11, 0x05, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x11, 0x32, 0x87, 0x11, 0x53, 0x09, 0x54, 0x09, 0x96, 0x09, 0xB7, 0x09, 0xD8, 0x01, 0xD8, 0x01, 0xD9, 0x01, 0xF9, 0x03, 0x01, 0xD9, 0x89, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0xD6, 0x11, 0x74, 0x19, 0x12, 0x19, 0x11, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x08, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x19, 0x2F, 0x83, 0x11, 0x2F, 0x01, 0x90, 0x2B, 0x98, 0x24, 0x19, 0x01, 0x13, 0xF8, 0x81, 0x0B, 0xF8, 0x0B, 0xF9, 0x01, 0x14, 0x19, 0x85, 0x2C, 0x5A, 0x3C, 0x7A, 0x1A, 0xD5, 0x01, 0x50, 0x09, 0x0F, 0x19, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x50, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x03, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x31, 0x81, 0x19, 0x31, 0x19, 0x32, 0x01, 0x11, 0x53, 0x8E, 0x11, 0x95, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF6, 0x21, 0xB5, 0x21, 0x95, 0x19, 0x53, + 0x19, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x29, 0x51, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x32, 0x8D, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x11, 0x74, 0x11, 0x53, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0E, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x95, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x19, 0x31, 0x19, 0x12, 0x11, 0x33, 0x19, 0x96, 0x11, 0xB7, 0x19, 0xD8, 0x22, 0x19, 0x19, 0xF9, 0x22, 0x39, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x01, 0x19, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x08, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x90, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x12, 0x11, 0x13, 0x19, 0x54, 0x21, 0xF6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x09, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x20, 0xCE, 0x20, 0x6C, 0x20, 0x09, + 0xCC, 0xDB, 0xD4, 0xDA, 0x01, 0xDC, 0x99, 0x80, 0xDC, 0x78, 0x02, 0xDC, 0x57, 0x81, 0xDC, 0x36, 0xE4, 0x57, 0x03, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x8B, 0xE4, 0x78, 0xDC, 0x58, 0xDC, 0x78, 0xDC, 0xDA, 0x7A, 0x51, 0x18, 0x09, 0x28, 0xEE, 0x28, 0xCE, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x31, 0x19, 0x73, 0x21, 0xD5, 0x19, 0xB5, 0x01, 0x19, 0xD7, 0x87, 0x19, 0xD8, 0x11, 0xD8, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x55, 0x11, 0x33, 0x01, 0x19, 0x12, 0x81, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xD7, 0x19, 0x95, 0x01, 0x11, 0x33, 0x80, 0x19, 0x52, 0x02, 0x19, 0x31, 0x85, 0x11, 0x32, 0x19, 0x73, 0x19, 0x94, 0x19, 0x95, 0x11, 0x95, 0x19, 0xB6, 0x01, 0x11, 0xD7, 0x8E, 0x19, 0xF7, 0x11, 0xD7, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x74, 0x19, 0x33, + 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x50, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x8C, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x19, 0x54, 0x21, 0xB5, 0x21, 0xF6, 0x21, 0xF7, 0x21, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x01, 0x11, 0x32, 0x83, 0x19, 0x32, 0x19, 0x51, 0x19, 0x31, 0x21, 0x30, 0x02, 0x19, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x51, 0x84, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xD7, 0x01, 0x09, 0xD9, 0x8C, 0x09, 0xFA, 0x01, 0xDA, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x86, 0x29, 0x30, 0x21, 0x10, + 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x06, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x11, 0x11, 0x12, 0x19, 0x33, 0x19, 0x54, 0x19, 0x95, 0x19, 0xD6, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x01, 0x19, 0x11, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, + 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x2E, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x93, 0x29, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xF8, 0x12, 0x18, 0x1A, 0x18, 0x11, 0xF8, 0x19, 0xF7, 0x09, 0x75, 0x09, 0x33, 0x11, 0x33, 0x11, 0x12, 0x19, 0x52, 0x02, 0x19, 0x31, 0x86, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x97, 0x01, 0x11, 0xD8, 0x80, 0x11, 0xF8, 0x01, 0x11, 0xD7, 0x86, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x10, 0x90, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x51, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x19, 0x74, 0x19, 0x95, 0x19, 0xB6, 0x21, 0xD6, 0x19, 0xB5, 0x19, 0x95, 0x11, 0x74, 0x11, 0x33, 0x03, 0x11, 0x12, 0x01, 0x11, 0x11, 0x02, 0x11, 0x12, 0x81, 0x19, 0x32, 0x11, 0x12, 0x01, 0x19, 0x12, 0x81, 0x19, 0x32, 0x19, 0x12, 0x02, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x03, 0x19, 0x12, 0x05, 0x19, 0x32, 0x02, 0x19, 0x12, 0x80, 0x19, 0x32, 0x01, 0x19, 0x12, 0x82, 0x19, 0x11, 0x19, 0x32, 0x19, 0x11, 0x03, 0x19, 0x12, 0x02, 0x19, 0x32, 0x01, 0x19, 0x12, 0x80, 0x19, 0x11, 0x05, 0x19, 0x32, 0x80, 0x19, 0x12, 0x03, 0x19, 0x32, + 0x80, 0x19, 0x12, 0x07, 0x19, 0x32, 0x02, 0x19, 0x12, 0x0B, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x04, 0x19, 0x31, 0x81, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x32, 0x02, 0x19, 0x31, 0x02, 0x19, 0x32, 0x82, 0x19, 0x12, 0x19, 0x31, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x04, 0x19, 0x32, 0x08, 0x19, 0x11, 0x80, 0x19, 0x32, 0x01, 0x19, 0x12, 0x81, 0x19, 0x11, 0x19, 0x32, 0x02, 0x19, 0x12, 0x80, 0x19, 0x11, 0x03, 0x19, 0x12, 0x02, 0x19, 0x32, 0x01, 0x19, 0x12, 0x02, 0x19, 0x11, 0x80, 0x19, 0x12, 0x03, 0x19, 0x32, 0x80, 0x19, 0x12, 0x02, 0x19, 0x32, 0x01, 0x19, 0x12, 0x80, 0x19, 0x32, 0x05, 0x19, 0x12, 0x80, 0x19, 0x32, 0x06, 0x19, 0x12, 0x01, 0x19, 0x32, 0x05, 0x19, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x12, 0x80, 0x19, 0x32, 0x03, 0x19, 0x12, 0x80, 0x19, 0x11, 0x01, 0x19, 0x12, 0x80, 0x19, 0x32, 0x02, 0x19, 0x12, 0x82, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x06, 0x19, 0x12, 0x82, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x02, 0x19, 0x12, 0x81, 0x19, 0x32, 0x19, 0x11, 0x01, 0x19, 0x12, 0x02, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x11, 0x81, 0x19, 0x32, 0x19, 0x12, 0x07, 0x19, 0x11, 0x01, 0x11, 0x11, 0x82, 0x19, 0x11, 0x11, 0x11, 0x10, 0xF1, 0x04, 0x11, 0x12, 0x89, 0x09, 0x33, 0x09, 0x54, 0x11, 0x96, 0x09, 0xB7, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0x01, 0xFA, 0x87, 0x09, 0xFA, 0x09, 0xD9, 0x09, + 0xB8, 0x09, 0xB7, 0x11, 0xB6, 0x19, 0x95, 0x11, 0x32, 0x21, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x2F, 0x87, 0x19, 0x2F, 0x11, 0x2F, 0x01, 0x0E, 0x12, 0x32, 0x33, 0xF9, 0x23, 0xF8, 0x13, 0xF8, 0x14, 0x19, 0x02, 0x0B, 0xF9, 0x89, 0x13, 0xD8, 0x24, 0x39, 0x3C, 0x7B, 0x33, 0x98, 0x01, 0x70, 0x09, 0x2F, 0x19, 0x30, 0x21, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x19, 0x51, 0x01, 0x11, 0x32, 0x82, 0x11, 0x73, 0x11, 0x94, 0x19, 0xB6, 0x01, 0x22, 0x17, 0x88, 0x21, 0xB6, 0x19, 0x95, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x19, 0x10, 0x21, 0x31, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x04, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x11, 0x74, 0x11, 0x53, 0x11, 0x33, 0x01, 0x19, 0x32, 0x83, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, + 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x53, 0x01, 0x11, 0x34, 0x80, 0x11, 0x35, 0x02, 0x11, 0x34, 0x01, 0x11, 0x33, 0x83, 0x19, 0x73, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x92, 0x11, 0x32, 0x11, 0x33, 0x21, 0xB6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x09, 0x13, 0x08, 0xF1, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x86, 0x20, 0xEE, 0x20, 0x8D, 0x28, 0x4B, 0x8A, 0xF5, 0xDD, 0x3C, 0xDC, 0xBA, 0xDC, 0x99, 0x01, 0xDC, 0x78, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x81, 0xDC, 0x37, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x8B, 0xE4, 0x78, 0xDC, 0x99, 0xE4, 0xDA, 0xA3, 0x76, 0x20, 0x09, 0x28, 0xAD, 0x28, 0xCE, 0x20, 0xEE, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x20, 0xEF, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x88, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x19, 0x54, 0x19, 0x75, 0x09, + 0x34, 0x11, 0x55, 0x19, 0xB6, 0x01, 0x19, 0x95, 0x84, 0x19, 0x74, 0x19, 0x33, 0x19, 0x32, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x30, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x22, 0x18, 0x19, 0xD7, 0x19, 0x95, 0x01, 0x11, 0x33, 0x81, 0x19, 0x52, 0x19, 0x51, 0x01, 0x19, 0x31, 0x81, 0x19, 0x51, 0x19, 0x52, 0x01, 0x19, 0x73, 0x82, 0x11, 0x53, 0x19, 0x74, 0x11, 0x74, 0x01, 0x19, 0x95, 0x86, 0x11, 0x75, 0x19, 0x75, 0x19, 0x74, 0x19, 0x53, 0x19, 0x32, 0x18, 0xF1, 0x19, 0x11, 0x01, 0x21, 0x31, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x85, 0x19, 0x10, 0x19, + 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0x74, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x84, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x31, 0x84, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x18, 0xEF, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x19, 0x30, 0x21, 0x52, 0x19, 0x32, 0x11, 0x33, 0x19, 0x95, 0x11, 0xD7, 0x11, 0xD8, 0x09, 0xF9, 0x09, 0xFA, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x89, 0x01, 0xD9, 0x09, 0xF9, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x21, 0x32, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, + 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x31, 0x10, 0xF1, 0x11, 0x12, 0x19, 0x33, 0x11, 0x53, 0x19, 0x95, 0x21, 0xD6, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x19, 0x54, 0x11, 0x32, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0E, 0x06, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x93, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xF8, 0x1A, 0x18, + 0x1A, 0x19, 0x19, 0xF8, 0x11, 0xD7, 0x11, 0x95, 0x09, 0x54, 0x11, 0x32, 0x11, 0x12, 0x04, 0x19, 0x31, 0x85, 0x19, 0x12, 0x19, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x03, 0x11, 0xF8, 0x86, 0x11, 0xD7, 0x11, 0x95, 0x09, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x04, 0x21, 0x30, 0x82, 0x29, 0x50, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x85, 0x19, 0x11, 0x11, 0x32, 0x19, 0x53, 0x19, 0x74, 0x19, 0xB5, 0x21, 0xD6, 0x01, 0x19, 0xD6, 0x83, 0x19, 0xB5, 0x11, 0x95, 0x11, 0x74, 0x11, 0x54, 0x03, 0x11, 0x33, 0x80, 0x11, 0x13, 0x08, 0x11, 0x33, 0x80, 0x11, 0x32, 0x0B, 0x11, 0x33, 0x80, 0x11, 0x13, 0x01, 0x11, 0x33, 0x01, 0x11, 0x13, 0x01, 0x11, 0x33, 0x80, 0x11, 0x12, 0x04, 0x11, 0x33, 0x80, 0x11, 0x13, 0x1F, 0x11, 0x33, 0x01, 0x11, 0x53, 0x03, 0x11, 0x33, 0x80, 0x11, 0x53, 0x05, 0x11, 0x33, 0x80, 0x11, 0x32, 0x3B, 0x11, 0x33, 0x80, 0x11, 0x53, 0x51, 0x11, 0x33, 0x81, 0x11, 0x12, 0x11, 0x32, 0x01, 0x11, 0x33, 0x80, 0x11, 0x12, 0x02, 0x11, 0x33, 0x01, 0x09, 0x12, 0x81, 0x11, 0x13, 0x09, 0x13, 0x01, 0x09, 0x33, 0x82, 0x09, 0x34, 0x09, 0x54, 0x09, 0x55, 0x01, 0x09, 0x96, 0x01, 0x09, 0xD8, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x84, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0xD7, 0x19, 0xD6, 0x11, 0x12, 0x01, 0x19, 0x11, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, + 0x86, 0x19, 0x4F, 0x11, 0x2F, 0x09, 0x4F, 0x43, 0xD9, 0x3C, 0x3A, 0x24, 0x19, 0x13, 0xF9, 0x02, 0x0B, 0xF9, 0x8C, 0x14, 0x19, 0x13, 0xD8, 0x24, 0x19, 0x34, 0x5A, 0x3B, 0xF9, 0x09, 0xD1, 0x09, 0x4F, 0x11, 0x2F, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8E, 0x19, 0x32, 0x11, 0x52, 0x11, 0x53, 0x11, 0x94, 0x19, 0xD6, 0x21, 0xF7, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x74, 0x19, 0x33, 0x19, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x87, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x82, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x01, 0x11, 0x32, 0x87, 0x11, 0x74, 0x19, 0xB5, 0x21, 0xF7, 0x2A, 0x38, 0x21, 0xD6, 0x11, 0x74, 0x11, 0x54, 0x19, 0x33, 0x01, 0x19, 0x32, 0x82, 0x19, 0x11, 0x21, 0x11, 0x19, 0x10, 0x03, 0x21, 0x30, 0x08, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x02, 0x19, 0x32, 0x81, 0x19, 0x33, 0x19, 0x13, 0x01, 0x11, 0x13, 0x80, 0x11, 0x12, 0x01, 0x19, 0x32, + 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x92, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x11, 0x33, 0x08, 0xD2, 0x11, 0x11, 0x19, 0x32, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x88, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x89, 0x29, 0x2F, 0x29, 0x0F, 0x28, 0xEF, 0x28, 0xCE, 0x20, 0x6B, 0x40, 0xED, 0xCC, 0x9A, 0xDC, 0xDB, 0xDC, 0xB9, 0xDC, 0x78, 0x01, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x81, 0xE4, 0x57, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x8D, 0xE4, 0x77, 0xDC, 0x78, 0xDC, 0x98, 0xDC, 0xDA, 0xC4, 0x38, 0x28, 0x4A, 0x28, 0x6C, 0x20, 0xAD, 0x20, 0xEE, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x20, 0xEF, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x11, 0x82, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x02, 0x19, 0x33, 0x84, 0x11, 0x13, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x11, 0x82, 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, + 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x30, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xD7, 0x19, 0x96, 0x11, 0x34, 0x11, 0x33, 0x19, 0x52, 0x19, 0x51, 0x01, 0x19, 0x30, 0x02, 0x19, 0x31, 0x01, 0x19, 0x32, 0x01, 0x19, 0x33, 0x02, 0x11, 0x33, 0x80, 0x19, 0x33, 0x01, 0x19, 0x12, 0x86, 0x19, 0x11, 0x18, 0xF1, 0x19, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x06, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x11, 0x12, 0x87, 0x19, 0x74, 0x21, 0xD6, 0x21, 0xF6, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x54, 0x19, 0x96, 0x11, 0xD8, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x86, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0x95, 0x19, 0x54, 0x19, + 0x32, 0x21, 0x32, 0x02, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x20, 0xEF, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x88, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, + 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x92, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x53, 0x19, 0x95, 0x21, 0xF6, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x08, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x01, 0x11, 0x32, 0x8A, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xF8, 0x19, 0xF8, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x90, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x95, 0x09, 0x96, 0x11, 0xD7, 0x11, 0xF8, 0x1A, 0x19, 0x1A, 0x18, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x51, 0x86, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x53, 0x19, 0x94, 0x19, 0xB6, 0x21, 0xF7, 0x02, 0x19, 0xD7, 0x01, + 0x11, 0xB6, 0x01, 0x11, 0x96, 0x80, 0x11, 0xB6, 0x02, 0x11, 0x96, 0x80, 0x11, 0xB6, 0x07, 0x11, 0x96, 0x80, 0x11, 0x95, 0x02, 0x11, 0x96, 0x01, 0x11, 0x95, 0x04, 0x11, 0x75, 0x80, 0x11, 0x95, 0x03, 0x11, 0x75, 0x80, 0x09, 0x75, 0x04, 0x11, 0x75, 0x80, 0x09, 0x75, 0x01, 0x11, 0x75, 0x80, 0x09, 0x75, 0x04, 0x11, 0x75, 0x80, 0x09, 0x75, 0x02, 0x11, 0x75, 0x81, 0x11, 0x95, 0x11, 0x75, 0x01, 0x11, 0x95, 0x03, 0x11, 0x75, 0x80, 0x09, 0x75, 0x01, 0x11, 0x95, 0x04, 0x11, 0x75, 0x02, 0x11, 0x95, 0x80, 0x11, 0x75, 0x02, 0x11, 0x95, 0x80, 0x11, 0x75, 0x01, 0x11, 0x95, 0x02, 0x11, 0x75, 0x05, 0x11, 0x95, 0x01, 0x11, 0x75, 0x01, 0x11, 0x95, 0x80, 0x11, 0x75, 0x02, 0x11, 0x95, 0x01, 0x11, 0x75, 0x01, 0x11, 0x95, 0x80, 0x11, 0x75, 0x02, 0x11, 0x95, 0x80, 0x09, 0x75, 0x02, 0x11, 0x95, 0x80, 0x11, 0x75, 0x06, 0x11, 0x95, 0x03, 0x11, 0x75, 0x84, 0x09, 0x75, 0x11, 0x95, 0x11, 0x75, 0x11, 0x95, 0x11, 0x75, 0x01, 0x11, 0x95, 0x80, 0x11, 0x96, 0x05, 0x11, 0x95, 0x81, 0x11, 0x75, 0x11, 0x96, 0x0B, 0x11, 0x95, 0x80, 0x11, 0x75, 0x0A, 0x11, 0x95, 0x01, 0x11, 0x75, 0x07, 0x11, 0x95, 0x80, 0x11, 0x75, 0x10, 0x11, 0x95, 0x82, 0x11, 0x75, 0x11, 0x95, 0x11, 0x75, 0x0B, 0x11, 0x95, 0x80, 0x11, 0x75, 0x17, 0x11, 0x95, 0x80, 0x11, 0x75, 0x05, 0x11, 0x95, 0x01, 0x11, 0x75, 0x84, 0x11, 0x95, 0x11, 0x75, 0x11, 0x95, 0x09, 0x75, 0x11, 0x95, 0x01, 0x11, 0x96, 0x86, 0x09, 0x96, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0x97, 0x11, 0xB7, 0x09, 0xB7, 0x09, 0x97, 0x01, + 0x09, 0xD8, 0x84, 0x09, 0xF9, 0x09, 0xFA, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xBA, 0x03, 0x01, 0xDA, 0x85, 0x01, 0xD9, 0x09, 0xD9, 0x11, 0xD8, 0x19, 0xF8, 0x21, 0xF7, 0x11, 0x12, 0x01, 0x19, 0x11, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x87, 0x19, 0x4F, 0x09, 0x2F, 0x32, 0xD5, 0x64, 0xDD, 0x44, 0xBB, 0x24, 0x39, 0x14, 0x19, 0x0B, 0xF9, 0x01, 0x0C, 0x19, 0x88, 0x14, 0x19, 0x1C, 0x19, 0x2C, 0x5A, 0x3C, 0x5A, 0x54, 0x9B, 0x33, 0x16, 0x09, 0x4F, 0x11, 0x4F, 0x19, 0x50, 0x01, 0x21, 0x50, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x19, 0x2F, 0x21, 0x50, 0x19, 0x30, 0x03, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x8E, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x19, 0x52, 0x11, 0x52, 0x11, 0x53, 0x11, 0x94, 0x19, 0xF6, 0x22, 0x17, 0x19, 0xD6, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x74, 0x19, 0xB5, 0x01, 0x22, 0x17, 0x87, 0x19, 0xB6, 0x11, 0x75, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x12, + 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x08, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x12, 0x02, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x12, 0x19, 0x95, 0x01, 0x2A, 0x17, 0x85, 0x19, 0xB6, 0x08, 0xF3, 0x08, 0xD2, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0x8D, 0x20, 0x0A, 0xA3, 0x97, 0xE5, 0x1C, 0xDC, 0xBA, 0xDC, 0x78, 0x04, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x82, 0xDC, 0x36, 0xDC, 0x37, 0xE4, 0x57, 0x02, 0xDC, 0x57, 0x8A, 0xE4, 0x57, 0xDC, 0x16, 0xDC, 0x36, 0xDC, 0x57, 0xDC, 0x98, 0xD4, 0x98, 0xC4, 0x38, 0x61, 0xCF, 0x20, 0x4A, 0x28, 0xAD, 0x28, 0xEE, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x11, 0x19, 0x11, 0x19, 0x31, 0x01, + 0x19, 0x11, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x02, 0x19, 0x11, 0x02, 0x21, 0x31, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x19, 0x30, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x84, 0x11, 0x95, 0x11, 0x54, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x02, 0x19, 0x30, 0x81, 0x19, 0x50, 0x19, 0x10, 0x02, 0x19, 0x11, 0x03, 0x19, 0x32, 0x82, 0x19, 0x11, 0x18, 0xF1, 0x19, 0x11, 0x01, 0x21, 0x11, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x87, 0x21, 0x10, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x13, 0x19, 0x74, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x84, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, + 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x50, 0x21, 0x51, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0x96, 0x19, 0xF8, 0x11, 0xD8, 0x09, 0xD9, 0x09, 0xDA, 0x09, 0xFA, 0x01, 0x01, 0xBA, 0x01, 0x01, 0xB9, 0x80, 0x01, 0xDA, 0x01, 0x09, 0xD9, 0x82, 0x11, 0xD8, 0x19, 0xD7, 0x11, 0x54, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x08, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, + 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x04, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x85, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x90, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x11, 0x19, 0x53, 0x11, 0x53, 0x19, 0xB5, 0x21, 0xF6, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x4F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x31, 0x87, 0x11, 0x32, 0x11, 0x33, 0x11, 0x53, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x19, 0xF8, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x83, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x03, + 0x19, 0x31, 0x01, 0x19, 0x32, 0x84, 0x11, 0x53, 0x11, 0x74, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xD8, 0x02, 0x11, 0xF8, 0x83, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x53, 0x01, 0x19, 0x32, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x88, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x19, 0xF7, 0x02, 0x1A, 0x18, 0x80, 0x11, 0xF8, 0x02, 0x19, 0xF8, 0x83, 0x1A, 0x18, 0x22, 0x18, 0x19, 0xF8, 0x22, 0x39, 0x01, 0x22, 0x19, 0x80, 0x19, 0xF8, 0x01, 0x22, 0x19, 0x83, 0x1A, 0x18, 0x22, 0x19, 0x22, 0x39, 0x1A, 0x18, 0x01, 0x22, 0x39, 0x80, 0x22, 0x38, 0x06, 0x1A, 0x18, 0x85, 0x22, 0x18, 0x1A, 0x18, 0x22, 0x18, 0x1A, 0x18, 0x22, 0x39, 0x22, 0x38, 0x01, 0x22, 0x18, 0x80, 0x22, 0x38, 0x01, 0x22, 0x18, 0x80, 0x22, 0x38, 0x01, 0x1A, 0x18, 0x80, 0x22, 0x39, 0x01, 0x1A, 0x18, 0x81, 0x22, 0x18, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x81, 0x1A, 0x18, 0x22, 0x18, 0x02, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x07, 0x1A, 0x18, 0x80, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x02, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x02, 0x1A, 0x18, 0x84, 0x22, 0x38, 0x22, 0x18, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x18, 0x02, 0x1A, 0x18, 0x85, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x18, 0x1A, 0x18, 0x22, 0x38, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x01, 0x22, 0x38, 0x01, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x01, 0x22, 0x38, 0x83, 0x22, 0x18, 0x1A, 0x18, 0x22, + 0x38, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x03, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x01, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x01, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x80, 0x1A, 0x38, 0x02, 0x1A, 0x18, 0x82, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x38, 0x0C, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x04, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x04, 0x1A, 0x18, 0x82, 0x22, 0x18, 0x1A, 0x18, 0x22, 0x18, 0x08, 0x1A, 0x18, 0x80, 0x22, 0x18, 0x02, 0x1A, 0x18, 0x80, 0x22, 0x18, 0x04, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x02, 0x1A, 0x18, 0x82, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x18, 0x02, 0x1A, 0x18, 0x80, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x80, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x02, 0x1A, 0x18, 0x84, 0x22, 0x38, 0x1A, 0x38, 0x1A, 0x18, 0x22, 0x18, 0x22, 0x38, 0x04, 0x1A, 0x18, 0x81, 0x22, 0x38, 0x22, 0x18, 0x03, 0x1A, 0x18, 0x80, 0x1A, 0x38, 0x08, 0x1A, 0x18, 0x01, 0x22, 0x38, 0x80, 0x1A, 0x18, 0x01, 0x1A, 0x38, 0x81, 0x1A, 0x18, 0x1A, 0x38, 0x01, 0x22, 0x38, 0x82, 0x1A, 0x18, 0x22, 0x38, 0x1A, 0x18, 0x01, 0x1A, 0x38, 0x81, 0x1A, 0x18, 0x11, 0xF7, 0x02, 0x1A, 0x18, 0x86, 0x11, 0xF8, 0x1A, 0x19, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xF9, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x8E, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x09, 0xDA, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0xD7, 0x19, 0xD6, 0x08, 0xF2, 0x19, 0x11, 0x19, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, + 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x88, 0x19, 0x2F, 0x19, 0x4F, 0x11, 0x4F, 0x22, 0x33, 0x22, 0xB5, 0x23, 0x56, 0x23, 0xD8, 0x1C, 0x19, 0x0B, 0xF9, 0x01, 0x0C, 0x19, 0x88, 0x14, 0x39, 0x1C, 0x39, 0x2B, 0xD8, 0x3B, 0xF9, 0x43, 0xF9, 0x3B, 0x36, 0x11, 0x70, 0x11, 0x4F, 0x19, 0x4F, 0x01, 0x19, 0x50, 0x81, 0x21, 0x50, 0x19, 0x4F, 0x02, 0x19, 0x2F, 0x80, 0x19, 0x30, 0x01, 0x19, 0x50, 0x80, 0x19, 0x30, 0x01, 0x21, 0x50, 0x02, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x19, 0x31, 0x8A, 0x11, 0x52, 0x11, 0x73, 0x11, 0x94, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x13, 0x11, 0x12, 0x19, 0x12, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x84, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x11, 0x74, 0x19, 0xB5, 0x01, 0x22, 0x17, 0x83, 0x19, 0x96, 0x19, 0x95, 0x19, 0x54, 0x11, 0x33, 0x01, 0x19, 0x12, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, + 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x80, 0x21, 0x11, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x08, 0xF3, 0x10, 0xF2, 0x19, 0x52, 0x19, 0x31, 0x19, 0x10, 0x02, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8A, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0xCD, 0x28, 0x6C, 0x51, 0x4E, 0xE5, 0x3D, 0xDC, 0xBA, 0xDC, 0x99, 0xDC, 0x78, 0xDC, 0x58, 0xDC, 0x57, 0x02, 0xDC, 0x37, 0x80, 0xDC, 0x36, 0x03, 0xDC, 0x37, 0x82, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x8C, 0xE4, 0x57, 0xDC, 0x16, 0xE4, 0x57, 0xDC, 0x77, 0xDC, 0x98, 0xDC, 0x99, 0xCC, 0x99, 0xDD, 0x7E, 0x41, 0x2D, 0x20, 0x6B, 0x28, 0xCE, 0x28, 0xEE, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x31, 0x19, 0x10, 0x19, 0x11, 0x19, 0x10, 0x01, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x21, 0x11, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, + 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x06, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x97, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x4F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x50, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD7, 0x19, 0x96, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x19, 0x10, 0x80, 0x21, 0x31, 0x02, 0x19, 0x11, 0x80, 0x18, 0xF1, 0x01, 0x19, 0x11, 0x81, 0x21, 0x11, 0x18, 0xF0, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x84, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x02, 0x21, 0xF7, 0x87, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x21, 0x51, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x88, 0x29, 0x10, 0x21, 0x10, 0x21, 0x50, 0x21, 0x51, 0x19, 0x31, + 0x19, 0x11, 0x11, 0x11, 0x11, 0x13, 0x19, 0x96, 0x01, 0x11, 0xD8, 0x80, 0x09, 0xB9, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x02, 0x01, 0xDA, 0x88, 0x01, 0xD9, 0x09, 0xD9, 0x11, 0xD8, 0x19, 0xB7, 0x11, 0x74, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x8A, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x29, 0x10, 0x08, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x83, 0x29, + 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x86, 0x21, 0x31, 0x18, 0xF1, 0x11, 0x12, 0x11, 0x33, 0x11, 0x53, 0x19, 0xB5, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x86, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x19, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x50, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x50, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x90, 0x21, 0x51, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x19, 0xF8, 0x1A, 0x19, 0x19, 0xF8, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x32, 0x87, 0x19, 0x31, 0x21, 0x51, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x96, 0x01, 0x11, 0xB7, 0x8B, 0x11, 0xF8, 0x12, 0x18, 0x11, 0xF8, 0x19, + 0xD7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x29, 0x50, 0x21, 0x50, 0x01, 0x21, 0x51, 0x82, 0x21, 0x31, 0x19, 0x31, 0x19, 0x12, 0x01, 0x11, 0x32, 0x84, 0x19, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x18, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x02, 0x22, 0x18, 0x02, 0x21, 0xF8, 0x01, 0x21, 0xF9, 0x80, 0x21, 0xF8, 0x01, 0x19, 0xF8, 0x84, 0x22, 0x19, 0x22, 0x39, 0x1A, 0x18, 0x22, 0x59, 0x22, 0x39, 0x02, 0x1A, 0x18, 0x82, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x38, 0x01, 0x22, 0x18, 0x01, 0x22, 0x38, 0x80, 0x22, 0x39, 0x06, 0x22, 0x38, 0x82, 0x22, 0x18, 0x22, 0x38, 0x22, 0x18, 0x04, 0x22, 0x38, 0x80, 0x22, 0x18, 0x01, 0x22, 0x38, 0x82, 0x22, 0x18, 0x22, 0x38, 0x22, 0x18, 0x02, 0x22, 0x38, 0x81, 0x22, 0x39, 0x22, 0x38, 0x01, 0x22, 0x18, 0x03, 0x22, 0x38, 0x80, 0x1A, 0x18, 0x03, 0x22, 0x38, 0x80, 0x1A, 0x18, 0x01, 0x22, 0x38, 0x80, 0x22, 0x18, 0x01, 0x22, 0x38, 0x01, 0x22, 0x18, 0x80, 0x22, 0x38, 0x06, 0x22, 0x18, 0x06, 0x22, 0x38, 0x80, 0x22, 0x18, 0x02, 0x22, 0x38, 0x80, 0x22, 0x18, 0x01, 0x22, 0x38, 0x03, 0x22, 0x18, 0x04, 0x22, 0x38, 0x80, 0x22, 0x18, 0x01, 0x22, 0x38, 0x02, 0x22, 0x18, 0x04, 0x22, 0x38, 0x01, 0x22, 0x18, 0x02, 0x22, 0x38, 0x85, 0x22, 0x18, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x38, 0x1A, 0x18, 0x19, 0xF8, 0x02, 0x22, 0x18, 0x01, 0x22, 0x38, 0x80, 0x1A, 0x18, 0x02, 0x22, 0x18, 0x89, 0x1A, 0x18, 0x22, 0x18, 0x1A, 0x18, 0x22, 0x38, 0x22, + 0x18, 0x1A, 0x18, 0x22, 0x18, 0x22, 0x38, 0x22, 0x39, 0x22, 0x38, 0x03, 0x22, 0x18, 0x84, 0x22, 0x38, 0x22, 0x18, 0x22, 0x38, 0x22, 0x18, 0x22, 0x38, 0x02, 0x22, 0x18, 0x02, 0x22, 0x38, 0x01, 0x1A, 0x18, 0x01, 0x22, 0x38, 0x81, 0x22, 0x18, 0x22, 0x38, 0x01, 0x22, 0x18, 0x03, 0x22, 0x38, 0x80, 0x22, 0x18, 0x02, 0x22, 0x38, 0x80, 0x22, 0x18, 0x0A, 0x22, 0x38, 0x01, 0x22, 0x18, 0x01, 0x22, 0x38, 0x80, 0x22, 0x18, 0x02, 0x22, 0x38, 0x80, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x80, 0x22, 0x18, 0x01, 0x22, 0x38, 0x80, 0x22, 0x18, 0x01, 0x22, 0x38, 0x80, 0x1A, 0x18, 0x01, 0x22, 0x38, 0x80, 0x22, 0x18, 0x01, 0x22, 0x38, 0x81, 0x1A, 0x18, 0x22, 0x38, 0x01, 0x1A, 0x38, 0x07, 0x22, 0x38, 0x81, 0x22, 0x59, 0x22, 0x38, 0x01, 0x22, 0x58, 0x01, 0x22, 0x38, 0x81, 0x1A, 0x38, 0x22, 0x58, 0x01, 0x22, 0x38, 0x8F, 0x22, 0x58, 0x22, 0x38, 0x1A, 0x38, 0x22, 0x38, 0x22, 0x58, 0x22, 0x59, 0x22, 0x38, 0x1A, 0x38, 0x1A, 0x18, 0x1A, 0x39, 0x1A, 0x19, 0x19, 0xF9, 0x11, 0xF9, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x8B, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xBA, 0x09, 0xDA, 0x09, 0xD9, 0x11, 0xD8, 0x19, 0xF8, 0x19, 0xB5, 0x08, 0xF1, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x4F, 0x19, 0x2F, 0x11, 0x2F, 0x01, 0x0E, 0x00, 0xEE, 0x01, 0x4F, 0x02, 0x12, 0x1B, 0xF9, 0x14, 0x19, 0x01, 0x14, + 0x39, 0x82, 0x14, 0x19, 0x24, 0x19, 0x01, 0x90, 0x01, 0x00, 0xCD, 0x83, 0x01, 0x0E, 0x11, 0x4F, 0x11, 0x2F, 0x19, 0x4F, 0x01, 0x11, 0x2F, 0x06, 0x09, 0x0E, 0x80, 0x11, 0x2F, 0x01, 0x11, 0x0F, 0x80, 0x11, 0x2F, 0x01, 0x19, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x09, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x51, 0x01, 0x19, 0x52, 0x88, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x51, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x30, 0x19, 0x10, 0x19, 0x52, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB6, 0x2A, 0x38, 0x22, 0x18, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x81, 0x21, 0x32, 0x21, 0x31, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x30, 0x21, 0x0F, + 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x12, 0x21, 0xD5, 0x2A, 0x17, 0x21, 0xF6, 0x19, 0x95, 0x08, 0xF2, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x01, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x89, 0x28, 0xEE, 0x28, 0xAD, 0x30, 0x4B, 0xB3, 0xD8, 0xDC, 0xBA, 0xDC, 0x99, 0xDC, 0x78, 0xDC, 0x58, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x03, 0xDC, 0x37, 0x80, 0xDC, 0x36, 0x02, 0xE4, 0x57, 0x82, 0xDC, 0x37, 0xDC, 0x36, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x88, 0xDC, 0x98, 0xD4, 0x78, 0xDD, 0x1B, 0xDD, 0x7D, 0x9B, 0xF8, 0x18, 0x0A, 0x28, 0xAD, 0x28, 0xEE, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x88, + 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x90, 0x21, 0x50, 0x21, 0x30, 0x19, 0x30, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB6, 0x21, 0xF7, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x13, 0x11, 0x12, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x19, 0x2F, 0x21, 0x50, 0x03, 0x21, 0x30, 0x80, 0x21, 0x11, 0x02, 0x21, 0x31, 0x84, 0x19, 0x31, 0x21, 0x11, 0x21, 0x10, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x31, 0x8B, 0x11, 0x11, 0x10, 0xF2, 0x11, 0x33, 0x11, 0x74, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x33, 0x10, 0xF2, 0x19, 0x11, 0x01, 0x19, 0x31, 0x82, 0x21, 0x30, 0x19, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x50, 0x21, 0x30, 0x01, 0x19, 0x11, 0x86, 0x10, 0xF2, 0x11, 0x33, 0x19, 0xB6, 0x19, 0xF8, 0x09, 0xB8, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0x01, 0xBA, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x86, 0x09, 0xD9, 0x11, 0xD8, 0x19, 0xD7, 0x19, 0x75, 0x10, 0xF2, 0x19, + 0x11, 0x19, 0x31, 0x05, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x87, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x0A, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, + 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x10, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x73, 0x19, 0xB5, 0x21, 0xF6, 0x21, 0xF7, 0x19, 0xF6, 0x19, 0x95, 0x11, 0x33, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x19, 0x11, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x88, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x50, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x19, 0x31, 0x8D, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x96, 0x19, 0xB7, 0x19, 0xF8, 0x19, 0xF9, 0x19, 0xF8, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x32, 0x02, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x96, 0x01, 0x11, 0xB7, 0x86, 0x11, 0xF8, 0x1A, 0x19, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x80, 0x21, 0x31, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x29, 0x51, 0x01, 0x21, 0x31, 0x88, 0x21, 0x51, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0x75, 0x11, 0x95, 0x02, 0x19, 0x96, 0x81, 0x19, 0xB6, + 0x19, 0x96, 0x01, 0x19, 0xB6, 0x80, 0x19, 0x96, 0x01, 0x19, 0xB7, 0x01, 0x19, 0xB6, 0x81, 0x19, 0xB7, 0x19, 0xB6, 0x03, 0x11, 0xB6, 0x01, 0x19, 0xD6, 0x80, 0x11, 0xB6, 0x02, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x03, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x04, 0x19, 0xB6, 0x01, 0x19, 0xB5, 0x82, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0xD6, 0x03, 0x19, 0xB6, 0x80, 0x19, 0xB5, 0x06, 0x19, 0xB6, 0x80, 0x19, 0xD6, 0x18, 0x19, 0xB6, 0x80, 0x19, 0x96, 0x0F, 0x19, 0xB6, 0x80, 0x19, 0x96, 0x17, 0x19, 0xB6, 0x80, 0x11, 0xB6, 0x04, 0x19, 0xB6, 0x80, 0x19, 0x96, 0x09, 0x19, 0xB6, 0x80, 0x19, 0xD6, 0x02, 0x19, 0xB6, 0x80, 0x19, 0xD6, 0x25, 0x19, 0xB6, 0x80, 0x19, 0xB5, 0x02, 0x19, 0xB6, 0x80, 0x19, 0xB5, 0x02, 0x19, 0xB6, 0x80, 0x19, 0xB5, 0x02, 0x19, 0xB6, 0x81, 0x11, 0xB5, 0x19, 0xB5, 0x10, 0x19, 0xB6, 0x81, 0x19, 0xD6, 0x19, 0xB5, 0x01, 0x19, 0xB6, 0x01, 0x19, 0xB5, 0x03, 0x19, 0xB6, 0x80, 0x19, 0xD6, 0x01, 0x19, 0xB6, 0x81, 0x19, 0xD5, 0x11, 0xB5, 0x01, 0x19, 0xD6, 0x01, 0x19, 0xB5, 0x01, 0x19, 0xB6, 0x80, 0x19, 0xB5, 0x01, 0x19, 0xD6, 0x80, 0x19, 0xB6, 0x02, 0x19, 0xD6, 0x84, 0x11, 0xD6, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xB7, 0x19, 0xD7, 0x01, 0x11, 0xB7, 0x84, 0x11, 0xB8, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xD9, 0x05, 0x01, 0xDA, 0x01, 0x09, 0xD9, 0x84, 0x11, 0xD8, 0x19, 0xF7, 0x11, 0x75, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, + 0x2F, 0x89, 0x21, 0x4F, 0x21, 0x2F, 0x19, 0x2F, 0x19, 0x4F, 0x11, 0x4F, 0x09, 0x2F, 0x01, 0x4F, 0x01, 0xF1, 0x23, 0xF9, 0x1C, 0x19, 0x01, 0x14, 0x19, 0x86, 0x1C, 0x19, 0x23, 0xD9, 0x01, 0x4F, 0x00, 0xCD, 0x00, 0xEE, 0x09, 0x2F, 0x19, 0x70, 0x01, 0x11, 0x4F, 0x82, 0x09, 0x2F, 0x01, 0x0E, 0x00, 0xEE, 0x01, 0x01, 0x0E, 0x01, 0x01, 0x2E, 0x01, 0x01, 0x0E, 0x01, 0x00, 0xED, 0x84, 0x01, 0x0E, 0x00, 0xED, 0x00, 0xAD, 0x00, 0xCE, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x01, 0x21, 0x51, 0x8B, 0x19, 0x52, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x22, 0x17, 0x21, 0xF8, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x74, 0x19, 0x53, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x19, 0x31, 0x89, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x2A, 0x38, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x53, 0x19, 0x33, 0x19, 0x12, 0x02, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, + 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x89, 0x19, 0x32, 0x11, 0x12, 0x21, 0xB5, 0x2A, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x12, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x29, 0x50, 0x29, 0x30, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x80, 0x29, 0x50, 0x01, 0x29, 0x0F, 0x89, 0x28, 0xEF, 0x28, 0xAD, 0x28, 0x6B, 0x51, 0x2E, 0xD4, 0xBB, 0xDC, 0x9A, 0xE4, 0xB9, 0xDC, 0x78, 0xDC, 0x37, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x82, 0xDC, 0x36, 0xDC, 0x57, 0xE4, 0x57, 0x01, 0xDC, 0x36, 0x83, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x36, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x91, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x57, 0xDC, 0x78, 0xDC, 0x98, 0xE5, 0x1B, 0xD5, 0x1B, 0xBC, 0xBA, 0x18, 0x09, 0x20, 0xAD, 0x20, 0xCE, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x20, 0xEF, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x81, 0x19, 0x10, 0x21, 0x30, 0x0A, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x06, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, + 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x04, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x30, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x21, 0xD6, 0x21, 0xF7, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x01, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x19, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x31, 0x89, 0x19, 0x32, 0x11, 0x12, 0x09, 0x12, 0x11, 0x54, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x33, 0x01, 0x10, 0xF1, 0x82, 0x18, 0xF0, 0x21, 0x31, 0x21, 0x30, 0x01, 0x19, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x11, 0x86, 0x11, 0x12, 0x11, 0x33, 0x19, 0xD7, 0x11, 0xD8, 0x11, 0xD9, 0x09, 0xD9, 0x01, 0xBA, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x01, 0x01, 0xB9, 0x84, 0x09, 0xD9, 0x11, 0xF9, 0x19, 0xD7, 0x19, 0x75, 0x11, 0x12, 0x01, 0x19, 0x11, + 0x03, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x10, 0x82, 0x29, 0x50, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x04, 0x29, 0x10, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x30, 0x84, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x0F, + 0x29, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x11, 0x01, 0x19, 0x11, 0x89, 0x11, 0x32, 0x11, 0x54, 0x19, 0x95, 0x21, 0xF6, 0x19, 0xF6, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x31, 0x85, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x93, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x11, 0x52, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB7, 0x19, 0xF8, 0x19, 0xF9, 0x19, 0xF8, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x83, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xB7, 0x01, 0x11, 0xF8, 0x86, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x76, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x05, + 0x21, 0x10, 0x03, 0x21, 0x31, 0x82, 0x19, 0x31, 0x19, 0x32, 0x19, 0x52, 0x01, 0x11, 0x32, 0x03, 0x11, 0x12, 0x01, 0x11, 0x13, 0x03, 0x19, 0x33, 0x04, 0x11, 0x33, 0x02, 0x11, 0x53, 0x80, 0x11, 0x33, 0x01, 0x11, 0x53, 0x80, 0x11, 0x33, 0x01, 0x11, 0x53, 0x80, 0x11, 0x33, 0x05, 0x11, 0x32, 0x86, 0x19, 0x32, 0x11, 0x32, 0x19, 0x32, 0x11, 0x32, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x02, 0x11, 0x32, 0x03, 0x19, 0x33, 0x01, 0x11, 0x32, 0x81, 0x19, 0x53, 0x11, 0x32, 0x02, 0x11, 0x33, 0x01, 0x19, 0x33, 0x80, 0x11, 0x33, 0x02, 0x19, 0x33, 0x82, 0x19, 0x32, 0x11, 0x32, 0x19, 0x33, 0x04, 0x11, 0x33, 0x80, 0x19, 0x33, 0x01, 0x11, 0x33, 0x81, 0x19, 0x33, 0x11, 0x33, 0x04, 0x11, 0x32, 0x85, 0x11, 0x33, 0x11, 0x32, 0x19, 0x33, 0x19, 0x32, 0x11, 0x32, 0x19, 0x33, 0x0D, 0x11, 0x33, 0x80, 0x19, 0x33, 0x03, 0x11, 0x33, 0x03, 0x11, 0x32, 0x80, 0x19, 0x33, 0x01, 0x11, 0x33, 0x01, 0x19, 0x33, 0x05, 0x11, 0x33, 0x80, 0x19, 0x33, 0x0B, 0x11, 0x33, 0x82, 0x19, 0x33, 0x11, 0x33, 0x11, 0x32, 0x04, 0x11, 0x33, 0x80, 0x19, 0x33, 0x01, 0x11, 0x33, 0x80, 0x19, 0x33, 0x05, 0x11, 0x33, 0x02, 0x11, 0x32, 0x80, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x11, 0x33, 0x01, 0x11, 0x32, 0x81, 0x11, 0x33, 0x11, 0x32, 0x02, 0x19, 0x32, 0x80, 0x11, 0x32, 0x01, 0x19, 0x32, 0x03, 0x11, 0x32, 0x80, 0x19, 0x32, 0x03, 0x11, 0x32, 0x01, 0x19, 0x32, 0x0B, 0x11, 0x32, 0x80, 0x11, 0x12, 0x01, 0x11, 0x32, 0x85, 0x11, 0x12, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x19, 0x53, 0x19, + 0x32, 0x03, 0x11, 0x32, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x82, 0x19, 0x32, 0x11, 0x32, 0x19, 0x32, 0x02, 0x11, 0x32, 0x80, 0x19, 0x32, 0x0C, 0x11, 0x32, 0x80, 0x11, 0x12, 0x02, 0x11, 0x32, 0x80, 0x11, 0x12, 0x0C, 0x11, 0x32, 0x02, 0x11, 0x33, 0x02, 0x11, 0x54, 0x88, 0x11, 0x55, 0x11, 0x76, 0x11, 0x97, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x8A, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xF8, 0x19, 0xF8, 0x21, 0xF7, 0x11, 0x54, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x29, 0x51, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x19, 0x2F, 0x01, 0x19, 0x50, 0x85, 0x11, 0x50, 0x09, 0x50, 0x01, 0x4F, 0x01, 0xF1, 0x2C, 0x19, 0x1C, 0x19, 0x01, 0x14, 0x19, 0x86, 0x1C, 0x19, 0x2C, 0x19, 0x01, 0x4F, 0x00, 0xED, 0x09, 0x4F, 0x11, 0x4F, 0x19, 0x90, 0x01, 0x11, 0x4F, 0x82, 0x00, 0xEE, 0x33, 0x36, 0x4C, 0x5B, 0x01, 0x3C, 0x3A, 0x01, 0x3C, 0x7A, 0x02, 0x44, 0xBB, 0x8A, 0x44, 0x7A, 0x44, 0x3A, 0x3B, 0xF9, 0x4C, 0x1A, 0x32, 0xD5, 0x00, 0xCE, 0x19, 0x0F, 0x21, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x19, 0xD6, + 0x01, 0x21, 0xF7, 0x84, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x51, 0x8A, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xD7, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x01, 0x19, 0x11, 0x81, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x07, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x8B, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x12, 0x21, 0xB5, 0x22, 0x17, 0x19, 0xB6, 0x19, 0x74, 0x10, 0xF2, 0x19, 0x12, 0x21, 0x32, 0x21, 0x31, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8B, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x28, 0xEF, 0x28, 0xCE, 0x28, 0x6C, 0x20, 0x09, 0xB4, 0x19, 0xDC, 0xDA, 0xDC, 0x99, 0xDC, 0x78, + 0x01, 0xDC, 0x57, 0x81, 0xE4, 0x57, 0xDC, 0x57, 0x05, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x36, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x83, 0xE4, 0x57, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x78, 0x86, 0xC4, 0x37, 0xDD, 0x5C, 0xAC, 0x59, 0x18, 0x09, 0x20, 0x8C, 0x20, 0xEE, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x09, 0x21, 0x10, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x8B, 0x21, 0x30, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x21, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x30, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, + 0x0F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x06, 0x21, 0x2F, 0x95, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x09, 0x13, 0x11, 0x54, 0x19, 0xD7, 0x22, 0x38, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x53, 0x10, 0xD1, 0x10, 0xD0, 0x19, 0x10, 0x21, 0x31, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x8B, 0x21, 0x30, 0x29, 0x50, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x21, 0xD7, 0x19, 0xD8, 0x09, 0xD8, 0x09, 0xB9, 0x09, 0xDA, 0x03, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x86, 0x01, 0xB9, 0x09, 0xD9, 0x11, 0xF9, 0x19, 0xD7, 0x11, 0x74, 0x11, 0x12, 0x19, 0x11, 0x01, 0x19, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, + 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x8E, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x83, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x31, 0x81, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x07, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, + 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x51, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x11, 0x74, 0x11, 0x96, 0x19, 0xB7, 0x19, 0xF8, 0x19, 0xF9, 0x01, 0x11, 0xF8, 0x84, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x02, 0x19, 0x31, 0x85, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x11, 0xB7, 0x11, 0xD7, 0x01, 0x11, 0xF8, 0x85, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x31, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x08, 0x19, 0x11, 0x02, 0x19, 0x12, 0x87, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x11, 0x11, 0x19, 0x12, 0x19, 0x32, 0x11, 0x11, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x11, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x0B, 0x19, 0x11, 0x80, 0x19, 0x31, 0x04, 0x19, 0x11, 0x01, 0x19, 0x31, 0x0F, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x12, 0x81, 0x19, 0x11, 0x18, 0xF1, 0x0B, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x32, 0x81, 0x19, 0x11, 0x19, 0x32, 0x01, 0x19, 0x12, 0x80, 0x19, 0x32, 0x01, 0x19, 0x12, 0x81, 0x19, 0x11, 0x19, 0x32, 0x06, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x83, 0x19, 0x31, 0x19, 0x11, 0x19, 0x12, 0x19, 0x11, 0x01, 0x19, 0x12, 0x03, 0x19, 0x11, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x0C, 0x19, 0x11, 0x80, 0x19, 0x32, + 0x08, 0x19, 0x11, 0x80, 0x19, 0x31, 0x12, 0x19, 0x11, 0x80, 0x19, 0x31, 0x0D, 0x19, 0x11, 0x80, 0x18, 0xF1, 0x05, 0x19, 0x11, 0x80, 0x18, 0xF1, 0x14, 0x19, 0x11, 0x80, 0x19, 0x31, 0x15, 0x19, 0x11, 0x80, 0x19, 0x31, 0x0A, 0x19, 0x11, 0x02, 0x19, 0x32, 0x86, 0x19, 0x12, 0x19, 0x33, 0x19, 0x54, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xD8, 0x01, 0x09, 0xF9, 0x80, 0x01, 0xD9, 0x02, 0x01, 0xF9, 0x8C, 0x01, 0xD9, 0x09, 0xF8, 0x11, 0xF8, 0x22, 0x18, 0x11, 0x75, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x9B, 0x19, 0x2F, 0x19, 0x50, 0x11, 0x50, 0x09, 0x50, 0x01, 0x4F, 0x01, 0xD1, 0x2B, 0xF9, 0x1B, 0xF9, 0x1C, 0x19, 0x1C, 0x3A, 0x1B, 0xF9, 0x2B, 0xD9, 0x01, 0x4F, 0x00, 0xED, 0x11, 0x4F, 0x11, 0x2F, 0x19, 0x90, 0x11, 0x4F, 0x09, 0x2F, 0x01, 0x2E, 0x33, 0x97, 0x44, 0xBB, 0x2C, 0x5A, 0x24, 0x39, 0x1C, 0x39, 0x1C, 0x18, 0x1C, 0x59, 0x1C, 0x39, 0x01, 0x24, 0x39, 0x86, 0x34, 0x7A, 0x3C, 0x9B, 0x4C, 0x7B, 0x3B, 0x98, 0x00, 0xAE, 0x10, 0xEF, 0x19, 0x30, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x09, 0x21, 0x30, 0x01, 0x19, 0x31, 0x80, 0x19, 0x52, 0x01, 0x11, 0x33, 0x81, 0x11, 0x75, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x85, 0x19, 0xB6, 0x19, 0x74, 0x11, + 0x32, 0x11, 0x12, 0x10, 0xF1, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x8E, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x11, 0x12, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xF7, 0x21, 0xD6, 0x19, 0x95, 0x19, 0x54, 0x19, 0x33, 0x01, 0x19, 0x11, 0x83, 0x21, 0x31, 0x29, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x8A, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x19, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x12, 0x19, 0xB5, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x28, 0xEF, 0x28, 0xAD, 0x20, 0x2B, 0x48, 0xED, 0xDD, 0x1C, 0xDC, 0x99, 0x01, 0xDC, 0x78, 0x01, 0xDC, 0x57, 0x02, + 0xDC, 0x37, 0x82, 0xDC, 0x57, 0xE4, 0x57, 0xDC, 0x57, 0x02, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x8A, 0xDC, 0x58, 0xDC, 0x99, 0xCC, 0x78, 0xD5, 0x1C, 0x72, 0x51, 0x18, 0x09, 0x20, 0x8C, 0x20, 0xCE, 0x28, 0xEF, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x08, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x87, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x8C, 0x21, 0x10, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x21, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x96, 0x11, 0x33, 0x19, 0x12, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8E, 0x21, 0x0F, 0x29, 0x0F, 0x21, + 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x8F, 0x21, 0x11, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x22, 0x38, 0x22, 0x18, 0x21, 0xD7, 0x19, 0x95, 0x19, 0x53, 0x11, 0x11, 0x10, 0xF0, 0x19, 0x10, 0x21, 0x31, 0x21, 0x51, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x86, 0x19, 0x10, 0x21, 0x11, 0x19, 0x12, 0x19, 0x33, 0x19, 0x96, 0x19, 0xD7, 0x11, 0xD8, 0x01, 0x09, 0xD9, 0x05, 0x01, 0xDA, 0x8A, 0x01, 0xB9, 0x09, 0xD9, 0x11, 0xF8, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x12, 0x19, 0x11, 0x19, 0x30, 0x21, 0x30, 0x29, 0x50, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, + 0x29, 0x10, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x50, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x01, 0x11, 0x33, 0x87, 0x19, 0x95, 0x21, 0xF6, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x02, 0x19, 0x31, 0x80, 0x21, 0x31, 0x03, 0x21, 0x30, 0x08, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, + 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x19, 0x10, 0x01, 0x19, 0x31, 0x87, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x74, 0x11, 0x75, 0x19, 0xB7, 0x19, 0xF8, 0x19, 0xF9, 0x01, 0x11, 0xF8, 0x83, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x02, 0x19, 0x32, 0x89, 0x19, 0x31, 0x21, 0x52, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x19, 0xF8, 0x01, 0x11, 0xF8, 0x8A, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x09, 0x33, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x19, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x11, 0x21, 0x31, 0x19, 0x10, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x04, 0x19, 0x11, 0x04, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x19, 0x31, 0x01, 0x19, 0x10, 0x82, 0x21, 0x30, 0x19, 0x10, 0x21, 0x31, 0x02, 0x21, 0x10, 0x80, 0x21, 0x11, 0x01, 0x21, 0x10, 0x87, 0x19, 0x10, 0x21, 0x11, 0x21, 0x10, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x21, 0x11, 0x01, 0x19, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x11, 0x82, 0x18, 0xF0, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x82, 0x21, 0x11, 0x19, 0x10, 0x21, + 0x11, 0x01, 0x21, 0x10, 0x82, 0x19, 0x10, 0x21, 0x11, 0x21, 0x10, 0x08, 0x21, 0x11, 0x86, 0x21, 0x10, 0x21, 0x11, 0x21, 0x10, 0x21, 0x11, 0x21, 0x10, 0x21, 0x11, 0x19, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x11, 0x01, 0x21, 0x10, 0x84, 0x19, 0x10, 0x21, 0x10, 0x21, 0x31, 0x21, 0x11, 0x19, 0x10, 0x05, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x80, 0x21, 0x11, 0x01, 0x19, 0x10, 0x84, 0x21, 0x11, 0x19, 0x10, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x01, 0x21, 0x10, 0x8A, 0x19, 0x10, 0x21, 0x11, 0x19, 0x10, 0x21, 0x11, 0x19, 0x11, 0x21, 0x11, 0x19, 0x11, 0x21, 0x11, 0x19, 0x10, 0x21, 0x11, 0x21, 0x10, 0x01, 0x19, 0x10, 0x83, 0x21, 0x10, 0x21, 0x11, 0x21, 0x10, 0x19, 0x10, 0x02, 0x21, 0x11, 0x81, 0x19, 0x10, 0x21, 0x11, 0x01, 0x21, 0x10, 0x01, 0x19, 0x10, 0x83, 0x21, 0x11, 0x19, 0x11, 0x19, 0x10, 0x21, 0x11, 0x01, 0x19, 0x11, 0x84, 0x19, 0x10, 0x21, 0x11, 0x18, 0xF0, 0x19, 0x31, 0x21, 0x31, 0x01, 0x19, 0x10, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x21, 0x11, 0x81, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x19, 0x10, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x19, 0x10, 0x01, 0x21, 0x11, 0x83, 0x21, 0x10, 0x19, 0x10, 0x21, 0x11, 0x21, 0x10, 0x01, 0x19, 0x10, 0x05, 0x21, 0x10, 0x80, 0x21, 0x31, 0x02, 0x19, 0x10, 0x81, 0x21, 0x10, 0x19, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x11, 0x19, 0x10, 0x01, 0x21, 0x11, 0x81, 0x21, 0x10, 0x19, 0x10, 0x01, 0x21, 0x11, 0x01, 0x19, + 0x10, 0x82, 0x21, 0x11, 0x21, 0x10, 0x21, 0x11, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x19, 0x10, 0x21, 0x10, 0x01, 0x19, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x10, 0x01, 0x21, 0x10, 0x01, 0x19, 0x10, 0x01, 0x21, 0x10, 0x01, 0x19, 0x10, 0x83, 0x21, 0x31, 0x19, 0x10, 0x21, 0x30, 0x19, 0x10, 0x02, 0x21, 0x10, 0x82, 0x19, 0x10, 0x21, 0x10, 0x21, 0x31, 0x01, 0x19, 0x10, 0x84, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x19, 0x10, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x02, 0x19, 0x32, 0x86, 0x19, 0x12, 0x19, 0x33, 0x19, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x09, 0xF8, 0x81, 0x0A, 0x39, 0x0A, 0x19, 0x01, 0x12, 0x18, 0x85, 0x19, 0xD7, 0x19, 0x75, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x01, 0x19, 0x2F, 0x8B, 0x11, 0x2F, 0x09, 0x50, 0x01, 0x4F, 0x01, 0xD1, 0x2B, 0xFA, 0x24, 0x3A, 0x1C, 0x19, 0x1C, 0x3A, 0x1B, 0xF9, 0x23, 0xB8, 0x01, 0x6F, 0x01, 0x0E, 0x01, 0x11, 0x2F, 0x93, 0x19, 0x90, 0x19, 0x6F, 0x09, 0x2E, 0x01, 0x4E, 0x23, 0x77, 0x34, 0x9B, 0x24, 0x5A, 0x14, 0x39, 0x0C, 0x18, 0x0C, 0x38, 0x0C, 0x19, 0x0C, 0x18, 0x0B, 0xF8, 0x13, 0xF8, 0x1C, 0x39, 0x2C, 0x5A, 0x3C, 0x5A, 0x2B, 0x57, 0x00, 0xEE, 0x08, 0xEF, 0x01, 0x19, 0x30, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, + 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x09, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x89, 0x21, 0xD6, 0x19, 0x75, 0x11, 0x33, 0x10, 0xF1, 0x19, 0x11, 0x19, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xD7, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x11, 0x01, 0x29, 0x31, 0x87, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x12, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x74, 0x10, 0xF2, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x0F, + 0x29, 0x10, 0x02, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x8C, 0x21, 0x0F, 0x28, 0xEF, 0x28, 0xCE, 0x28, 0xAD, 0x28, 0x0A, 0xAB, 0xB8, 0xD4, 0x9A, 0xDC, 0x99, 0xE4, 0x99, 0xE4, 0x78, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x84, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x36, 0xDC, 0x37, 0x05, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x88, 0xDC, 0x57, 0xDC, 0x58, 0xDC, 0x98, 0xDC, 0xBA, 0xDD, 0x1C, 0x48, 0xEC, 0x18, 0x09, 0x28, 0xCD, 0x31, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x09, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x04, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x8B, 0x21, 0x50, 0x21, 0x30, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x21, 0xD6, 0x21, 0xF7, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, + 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0x75, 0x11, 0x33, 0x19, 0x32, 0x11, 0x11, 0x18, 0xF0, 0x19, 0x10, 0x01, 0x21, 0x31, 0x81, 0x20, 0xF0, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x50, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x19, 0x54, 0x19, 0xB6, 0x19, 0xD8, 0x11, 0xF8, 0x09, 0xB8, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x01, 0x09, 0xD9, 0x86, 0x11, 0xD8, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x53, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x0A, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, + 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x88, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8E, 0x19, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x32, 0x19, + 0x31, 0x21, 0x52, 0x01, 0x21, 0x51, 0x01, 0x21, 0x31, 0x80, 0x19, 0x10, 0x03, 0x21, 0x10, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x80, 0x21, 0x30, 0x04, 0x21, 0x31, 0x83, 0x19, 0x10, 0x21, 0x31, 0x19, 0x10, 0x19, 0x31, 0x01, 0x21, 0x31, 0x82, 0x19, 0x10, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x92, 0x21, 0x30, 0x21, 0x10, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x19, 0x52, 0x19, 0x53, 0x11, 0x33, 0x11, 0x55, 0x11, 0x96, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xF8, 0x19, 0xF9, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x53, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x88, 0x21, 0x52, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x12, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB6, 0x19, 0xD8, 0x02, 0x11, 0xF8, 0x85, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x54, 0x09, 0x12, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x10, 0x21, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x02, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x04, 0x21, 0x31, 0x01, 0x21, 0x51, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0E, 0x21, 0x10, 0x80, 0x21, + 0x30, 0x0E, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0A, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x01, 0x21, 0x30, 0x07, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x06, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x19, 0x12, 0x85, 0x19, 0x53, 0x11, 0x74, 0x11, 0x95, 0x19, 0xD7, 0x11, 0xD7, 0x11, 0xF7, 0x01, 0x1A, 0x18, 0x86, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, + 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x19, 0x0F, 0x01, 0x19, 0x2F, 0x8B, 0x11, 0x50, 0x09, 0x70, 0x01, 0x4F, 0x01, 0xD1, 0x2B, 0xFA, 0x24, 0x1A, 0x1C, 0x3A, 0x1C, 0x19, 0x1B, 0xF9, 0x23, 0xB8, 0x01, 0x4F, 0x00, 0xED, 0x01, 0x11, 0x4F, 0x87, 0x19, 0x70, 0x11, 0x4F, 0x09, 0x0E, 0x01, 0x4E, 0x23, 0x76, 0x2C, 0x7A, 0x14, 0x19, 0x14, 0x39, 0x01, 0x0C, 0x38, 0x8B, 0x0C, 0x39, 0x04, 0x18, 0x0C, 0x18, 0x0C, 0x19, 0x1C, 0x19, 0x24, 0x3A, 0x34, 0x5A, 0x23, 0x57, 0x00, 0xEE, 0x09, 0x0F, 0x19, 0x30, 0x19, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x84, 0x21, 0xF6, 0x19, 0x74, 0x11, 0x33, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8F, 0x21, 0x31, 0x21, 0x72, 0x19, 0x52, 0x11, 0x32, 0x09, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x03, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x03, + 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x12, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x29, 0x0F, 0x28, 0xEF, 0x28, 0xCE, 0x28, 0x6C, 0x51, 0x2E, 0xD4, 0xBB, 0xD4, 0x99, 0xDC, 0x99, 0xDC, 0x78, 0x03, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x81, 0xDC, 0x57, 0xDC, 0x36, 0x01, 0xDC, 0x57, 0x82, 0xDC, 0x36, 0xDC, 0x37, 0xE4, 0x57, 0x03, 0xDC, 0x57, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x8A, 0xDC, 0x57, 0xDC, 0x78, 0xDC, 0xB9, 0xD4, 0xDB, 0x61, 0xAF, 0x20, 0x09, 0x30, 0xEE, 0x29, 0x0E, 0x28, 0xEF, 0x29, 0x0F, 0x20, 0xEF, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x03, 0x29, 0x10, 0x04, + 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x29, 0xF7, 0x21, 0xD7, 0x21, 0xB6, 0x11, 0x13, 0x19, 0x32, 0x01, 0x19, 0x31, 0x83, 0x21, 0x30, 0x21, 0x50, 0x19, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x74, 0x21, 0xF7, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x33, 0x10, 0xF2, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x11, + 0x19, 0x11, 0x19, 0x12, 0x19, 0x33, 0x19, 0x95, 0x19, 0xD7, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0xB8, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x01, 0x09, 0xD8, 0x83, 0x11, 0xB7, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x32, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x87, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x29, 0x30, 0x02, 0x21, 0x30, 0x85, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, + 0x29, 0x10, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x20, 0xEF, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8F, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x13, 0x11, 0x54, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF6, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x32, 0x19, 0x52, 0x21, 0x52, 0x01, 0x21, 0x51, 0x03, 0x19, 0x31, 0x01, 0x21, 0x31, 0x83, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, 0x03, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x02, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x50, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x01, 0x11, 0x33, 0x83, 0x11, 0x55, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xD8, 0x01, 0x19, 0xF9, 0x86, 0x11, + 0xF8, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x01, 0x19, 0x31, 0x92, 0x21, 0x52, 0x21, 0x32, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xF8, 0x11, 0xD8, 0x19, 0xD7, 0x11, 0x96, 0x11, 0x95, 0x09, 0x33, 0x11, 0x12, 0x19, 0x32, 0x21, 0x52, 0x07, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x19, 0x30, 0x01, 0x21, 0x30, 0x82, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x11, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x04, 0x21, 0x10, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x31, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x02, 0x21, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x1E, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x0E, 0x21, 0x10, 0x05, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, + 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x06, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x87, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x21, 0x10, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x19, 0x33, 0x02, 0x19, 0x74, 0x85, 0x11, 0x74, 0x19, 0x95, 0x19, 0x74, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x01, 0x19, 0x50, 0x8A, 0x11, 0x70, 0x01, 0x2F, 0x01, 0xD1, 0x2B, 0xF9, 0x24, 0x3A, 0x24, 0x5A, 0x1C, 0x3A, 0x1B, 0xF9, 0x23, 0x98, 0x01, 0x4F, 0x01, 0x0E, 0x01, 0x11, 0x2F, 0x01, 0x19, 0x70, 0x85, 0x09, 0x0E, 0x01, 0x4F, 0x23, 0xB7, 0x24, 0x7A, 0x0C, 0x18, 0x0C, 0x39, 0x01, 0x04, 0x18, 0x89, 0x0C, 0x59, 0x0C, 0x39, 0x04, 0x18, 0x0C, 0x18, 0x13, 0xF8, 0x1C, 0x19, 0x2C, 0x39, 0x2B, + 0x77, 0x00, 0xEE, 0x09, 0x0F, 0x01, 0x19, 0x50, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x51, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x19, 0x31, 0x8A, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x03, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x12, 0x21, + 0xB5, 0x2A, 0x17, 0x21, 0xF6, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x89, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x28, 0xEF, 0x28, 0xAD, 0x18, 0x0A, 0xA3, 0x97, 0xDC, 0xDB, 0xDC, 0xDA, 0xE4, 0x99, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x36, 0x04, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x05, 0xDC, 0x57, 0x8C, 0xDC, 0x36, 0xDC, 0x37, 0xE4, 0x77, 0xE4, 0x57, 0xDC, 0x58, 0xDC, 0x99, 0xDC, 0xBA, 0xD4, 0xFB, 0x30, 0x6B, 0x20, 0x6B, 0x20, 0xAD, 0x28, 0xEE, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x50, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x01, 0x11, 0x33, + 0x87, 0x19, 0xB6, 0x21, 0xF7, 0x21, 0xD7, 0x19, 0x96, 0x11, 0x33, 0x11, 0x12, 0x19, 0x52, 0x19, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x11, 0x19, 0x12, 0x11, 0x33, 0x21, 0xD6, 0x22, 0x38, 0x19, 0xF7, 0x19, 0xD6, 0x09, 0x54, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x19, 0x33, 0x19, 0x54, 0x19, 0xB6, 0x19, 0xF7, 0x11, 0xD7, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xF8, 0x01, 0x09, 0xD8, 0x85, 0x11, 0xD7, 0x11, 0xF7, 0x11, 0xB6, 0x19, 0x95, 0x21, 0x94, 0x19, 0x53, 0x01, 0x19, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x50, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x06, + 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x86, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x2F, 0x88, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x11, 0x54, 0x19, 0x96, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x11, 0x31, 0x02, 0x19, 0x31, + 0x84, 0x21, 0x52, 0x21, 0x51, 0x19, 0x51, 0x19, 0x31, 0x19, 0x51, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x03, 0x19, 0x11, 0x01, 0x19, 0x12, 0x01, 0x19, 0x11, 0x05, 0x19, 0x12, 0x81, 0x11, 0x11, 0x19, 0x11, 0x01, 0x19, 0x12, 0x80, 0x11, 0x11, 0x01, 0x19, 0x32, 0x82, 0x19, 0x12, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x8F, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xF8, 0x19, 0xF9, 0x1A, 0x19, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x76, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x19, 0xF8, 0x1A, 0x19, 0x11, 0xF8, 0x01, 0x11, 0xD7, 0x83, 0x11, 0x75, 0x09, 0x33, 0x09, 0x12, 0x11, 0x32, 0x01, 0x19, 0x32, 0x06, 0x19, 0x31, 0x01, 0x19, 0x51, 0x04, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x21, 0x11, 0x0A, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x50, 0x21, 0x30, 0x21, 0x50, 0x04, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, + 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, + 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x05, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x03, 0x19, 0x32, 0x81, 0x11, 0x12, 0x11, 0x11, 0x02, 0x19, 0x11, 0x80, 0x19, 0x31, 0x04, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x95, 0x19, 0x4F, 0x11, 0x4F, 0x09, 0x50, 0x01, 0x2F, 0x01, 0xD1, 0x2B, 0xD9, 0x24, 0x19, 0x1C, 0x39, 0x24, 0x39, 0x1C, 0x19, 0x23, 0x98, 0x01, 0x4F, 0x00, 0xEE, 0x19, 0x4F, 0x11, 0x0E, 0x19, 0x4F, 0x19, 0x70, 0x09, 0x0E, 0x01, 0x2E, 0x2B, 0xD8, 0x1C, 0x39, 0x0C, 0x18, 0x01, 0x04, 0x18, 0x8E, 0x04, 0x39, 0x04, 0x18, 0x03, 0xF8, 0x04, 0x18, 0x0C, 0x19, 0x14, 0x39, 0x1C, 0x19, 0x2C, 0x5A, 0x23, 0x57, 0x01, 0x0F, 0x09, 0x0F, 0x11, 0x50, 0x19, 0x50, 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, + 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x85, 0x21, 0x51, 0x19, 0x52, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x8F, 0x21, 0xF6, 0x19, 0x74, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x29, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x85, 0x21, 0x50, 0x21, 0x10, 0x21, 0x30, 0x19, 0x30, 0x19, 0x11, 0x11, 0x11, 0x01, 0x11, 0x32, 0x81, 0x19, 0x74, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x8F, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x12, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x94, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x10, + 0x82, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x89, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0x8C, 0x38, 0x8C, 0xD4, 0xFC, 0xDC, 0xDA, 0xDC, 0xB9, 0xE4, 0x98, 0x03, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xDC, 0x36, 0x01, 0xDC, 0x57, 0x83, 0xDC, 0x37, 0xDC, 0x36, 0xDC, 0x57, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x83, 0xDC, 0x57, 0xE4, 0x57, 0xDC, 0x36, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x89, 0xDC, 0x58, 0xDC, 0x78, 0xDC, 0xB9, 0xE5, 0x5D, 0x6A, 0x11, 0x20, 0x0A, 0x28, 0xAD, 0x28, 0xEE, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x84, 0x19, 0x30, 0x19, 0x52, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x01, 0x21, 0xD7, 0x84, 0x19, 0xB6, 0x11, 0x13, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, + 0x30, 0x80, 0x19, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8D, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x53, 0x22, 0x17, 0x1A, 0x17, 0x22, 0x18, 0x11, 0x95, 0x09, 0x13, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x89, 0x21, 0x31, 0x21, 0x10, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0x95, 0x11, 0xB6, 0x19, 0xF7, 0x03, 0x11, 0xD7, 0x85, 0x11, 0xD6, 0x19, 0xB5, 0x19, 0x94, 0x19, 0x73, 0x19, 0x52, 0x19, 0x31, 0x01, 0x21, 0x51, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x03, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x08, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x04, + 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x09, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x89, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x50, 0x02, 0x21, 0x30, 0x01, 0x19, 0x11, 0x82, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x02, 0x21, 0xF7, 0x86, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x32, 0x19, 0x31, 0x19, 0x51, 0x04, 0x19, 0x31, 0x01, 0x19, 0x52, 0x80, 0x11, 0x32, 0x02, 0x19, 0x32, 0x03, 0x11, 0x32, 0x01, 0x11, 0x12, + 0x01, 0x11, 0x33, 0x82, 0x11, 0x12, 0x11, 0x33, 0x11, 0x32, 0x03, 0x11, 0x12, 0x06, 0x11, 0x32, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x50, 0x80, 0x21, 0x30, 0x01, 0x19, 0x31, 0x86, 0x19, 0x32, 0x19, 0x33, 0x11, 0x13, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x02, 0x19, 0xF9, 0x87, 0x19, 0xF8, 0x11, 0x97, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x11, 0x11, 0x19, 0x31, 0x19, 0x10, 0x02, 0x21, 0x31, 0x85, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x96, 0x19, 0xB7, 0x01, 0x11, 0xD7, 0x87, 0x19, 0xF8, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0xB6, 0x09, 0x75, 0x09, 0x34, 0x00, 0xF2, 0x08, 0xF2, 0x01, 0x11, 0x12, 0x01, 0x11, 0x11, 0x82, 0x11, 0x12, 0x11, 0x11, 0x11, 0x31, 0x02, 0x11, 0x11, 0x80, 0x11, 0x31, 0x02, 0x11, 0x11, 0x01, 0x10, 0xF1, 0x0A, 0x19, 0x11, 0x03, 0x19, 0x31, 0x01, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, + 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x06, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x09, 0x21, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, + 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x31, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x10, 0x03, 0x21, 0x30, 0x83, 0x29, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x88, 0x21, 0x4F, 0x19, 0x2F, 0x11, 0x4F, 0x11, 0x50, 0x01, 0x2F, 0x01, 0xB1, 0x2B, 0xD9, 0x24, 0x1A, 0x24, 0x5A, 0x01, 0x1C, 0x19, 0x82, 0x23, 0xB8, 0x01, 0x6F, 0x01, 0x0E, 0x03, 0x19, 0x4F, 0x87, 0x09, 0x2F, 0x01, 0x2F, 0x2B, 0xF8, 0x24, 0x7A, 0x14, 0x39, 0x0C, 0x39, 0x04, 0x18, 0x04, 0x38, 0x03, 0x04, 0x18, 0x88, 0x14, 0x39, 0x1C, 0x39, 0x2C, 0x39, 0x2B, 0x97, 0x01, 0x0F, 0x09, 0x30, 0x11, 0x50, 0x19, 0x30, 0x19, 0x2F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x30, 0x21, 0x51, 0x21, 0x72, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xF7, 0x01, 0x22, 0x17, 0x85, 0x21, 0xF6, 0x19, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, + 0x21, 0x10, 0x8E, 0x19, 0x30, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD7, 0x21, 0xF7, 0x11, 0x74, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8A, 0x21, 0x32, 0x19, 0x52, 0x11, 0x12, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xD6, 0x11, 0x74, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x30, 0xEE, 0x28, 0x4B, 0x8A, 0xF4, 0xDD, 0x1B, 0x01, 0xDC, 0xB9, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x36, 0x02, 0xDC, 0x57, 0x82, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x36, 0x04, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x89, 0xDC, 0x57, 0xE4, 0x57, 0xDC, 0x58, 0xDC, 0x78, 0xDC, 0x99, 0xE5, 0x5C, 0xB4, 0x59, 0x28, 0x4A, 0x28, 0xCD, 0x28, 0xEE, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x21, + 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x04, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x91, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x21, 0xF8, 0x21, 0xF7, 0x19, 0xB6, 0x09, 0x13, 0x10, 0xF2, 0x19, 0x32, 0x21, 0x51, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x92, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x19, 0xB5, 0x22, 0x38, 0x22, + 0x18, 0x19, 0xF7, 0x09, 0x13, 0x08, 0xF2, 0x11, 0x12, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x85, 0x21, 0x10, 0x29, 0x30, 0x29, 0x50, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x88, 0x21, 0x31, 0x21, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x53, 0x19, 0x74, 0x11, 0x95, 0x11, 0x75, 0x01, 0x11, 0x95, 0x01, 0x11, 0x54, 0x87, 0x19, 0x53, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x19, 0x10, 0x21, 0x31, 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x50, 0x81, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x0F, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, + 0x03, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x88, 0x21, 0x50, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0x95, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x80, 0x19, 0x95, 0x01, 0x11, 0x12, 0x84, 0x11, 0x11, 0x19, 0x31, 0x21, 0x52, 0x21, 0x72, 0x19, 0x31, 0x02, 0x11, 0x11, 0x83, 0x11, 0x32, 0x11, 0x52, 0x11, 0x53, 0x11, 0x73, 0x03, 0x11, 0x53, 0x84, 0x11, 0x73, 0x11, 0x74, 0x11, 0x54, 0x19, 0x74, 0x19, 0x54, 0x05, 0x19, 0x74, 0x80, 0x19, 0x94, 0x01, 0x19, 0x74, 0x80, 0x19, 0x95, 0x01, 0x19, 0x94, 0x80, 0x19, 0x95, 0x03, 0x19, 0x94, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x82, 0x21, 0x31, 0x21, 0x11, 0x19, 0x31, 0x01, 0x19, 0x32, 0x84, 0x11, 0x33, 0x11, + 0x53, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xB7, 0x01, 0x19, 0xF9, 0x85, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x53, 0x02, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x84, 0x19, 0x53, 0x11, 0x75, 0x19, 0x96, 0x11, 0x96, 0x11, 0xD7, 0x02, 0x11, 0xD8, 0x01, 0x11, 0xD7, 0x82, 0x11, 0xB6, 0x09, 0x75, 0x09, 0x54, 0x01, 0x11, 0x54, 0x80, 0x11, 0x53, 0x01, 0x09, 0x53, 0x82, 0x09, 0x33, 0x09, 0x53, 0x09, 0x33, 0x03, 0x09, 0x32, 0x80, 0x09, 0x12, 0x01, 0x11, 0x33, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x84, 0x09, 0x12, 0x11, 0x32, 0x11, 0x12, 0x09, 0x32, 0x09, 0x12, 0x01, 0x11, 0x12, 0x80, 0x09, 0x11, 0x01, 0x11, 0x12, 0x01, 0x11, 0x11, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x87, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, + 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x07, 0x21, 0x10, 0x81, 0x21, 0x30, 0x19, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x91, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, + 0x21, 0x4F, 0x19, 0x4F, 0x19, 0x50, 0x11, 0x50, 0x01, 0x2F, 0x01, 0xB1, 0x2B, 0xD9, 0x24, 0x19, 0x1C, 0x39, 0x1C, 0x3A, 0x24, 0x19, 0x23, 0xB8, 0x01, 0x4F, 0x00, 0xEE, 0x19, 0x4F, 0x01, 0x19, 0x2F, 0x86, 0x19, 0x50, 0x09, 0x2F, 0x01, 0x2F, 0x2B, 0xD8, 0x24, 0x7A, 0x14, 0x59, 0x0C, 0x39, 0x02, 0x04, 0x18, 0x01, 0x04, 0x39, 0x87, 0x0C, 0x19, 0x0C, 0x18, 0x14, 0x19, 0x2C, 0x3A, 0x23, 0x57, 0x01, 0x0E, 0x09, 0x2F, 0x11, 0x50, 0x01, 0x19, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x86, 0x21, 0x51, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x21, 0xF7, 0x01, 0x22, 0x17, 0x83, 0x21, 0xF6, 0x19, 0x74, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x85, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x81, 0x19, 0xB6, 0x11, 0x33, 0x01, 0x19, 0x32, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, + 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x12, 0x19, 0x95, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x87, 0x29, 0x0F, 0x28, 0xEE, 0x30, 0xEE, 0x30, 0x8B, 0xC4, 0x7A, 0xDC, 0xDA, 0xDC, 0xB9, 0xDC, 0x78, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x82, 0xDC, 0x36, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x57, 0x02, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x8C, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0xE4, 0x58, 0xDC, 0x58, 0xDC, 0x78, 0xDC, 0x99, 0xE5, 0x1C, 0xCC, 0xBB, 0x40, 0xED, 0x28, 0xAC, 0x20, 0xAD, 0x28, 0xEF, 0x01, 0x29, 0x0F, 0x88, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, + 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x88, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x8C, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x34, 0x19, 0x96, 0x21, 0xF8, 0x21, 0xD8, 0x19, 0xB7, 0x09, 0x13, 0x10, 0xF2, 0x19, 0x32, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x89, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x05, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x88, 0x21, 0x11, 0x10, 0xF1, 0x19, 0xB5, 0x22, 0x38, 0x1A, 0x18, 0x19, 0xD6, 0x09, 0x13, 0x10, 0xF1, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, + 0x81, 0x21, 0x30, 0x29, 0x50, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x32, 0x11, 0x32, 0x02, 0x11, 0x33, 0x82, 0x19, 0x33, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x30, 0x19, 0x10, 0x05, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x14, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x06, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, + 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x50, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x19, 0x32, 0x11, 0x53, 0x19, 0x95, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x8D, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x19, 0x52, 0x21, 0x52, 0x19, 0x31, 0x19, 0x11, 0x11, 0x31, 0x11, 0x11, 0x11, 0x32, 0x19, 0x73, 0x21, 0xD5, 0x01, 0x21, 0xF6, 0x80, 0x22, 0x16, 0x01, 0x2A, 0x17, 0x82, 0x2A, 0x37, 0x2A, 0x57, 0x2A, 0x37, 0x01, 0x32, 0x37, 0x82, 0x2A, 0x17, 0x32, 0x37, 0x2A, 0x17, 0x01, 0x32, 0x37, 0x83, 0x2A, 0x37, 0x32, 0x37, 0x2A, 0x37, 0x32, 0x37, 0x01, 0x2A, 0x37, 0x01, 0x2A, 0x17, 0x01, 0x2A, 0x16, 0x80, 0x21, 0xF6, 0x01, 0x29, 0xD6, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x89, 0x21, 0x11, 0x21, 0x31, 0x19, 0x32, 0x19, 0x12, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xB8, 0x11, 0xF9, 0x01, 0x12, 0x19, 0x85, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x74, 0x11, 0x32, 0x11, 0x31, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x32, 0x84, 0x11, 0x33, 0x11, 0x54, 0x11, 0x55, + 0x11, 0x96, 0x11, 0xB7, 0x02, 0x11, 0xF8, 0x83, 0x09, 0xD7, 0x11, 0xD7, 0x11, 0xF7, 0x11, 0xD7, 0x03, 0x19, 0xF7, 0x80, 0x11, 0xF7, 0x05, 0x19, 0xF7, 0x01, 0x1A, 0x17, 0x01, 0x19, 0xF7, 0x02, 0x19, 0xD7, 0x80, 0x19, 0xF7, 0x02, 0x19, 0xD7, 0x81, 0x19, 0xF6, 0x11, 0xD6, 0x02, 0x19, 0xD6, 0x85, 0x11, 0xD6, 0x19, 0xD6, 0x11, 0xB5, 0x11, 0x74, 0x11, 0x53, 0x19, 0x52, 0x02, 0x19, 0x11, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, + 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x07, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x50, 0x21, 0x2F, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x87, 0x19, 0x4F, 0x19, 0x50, 0x11, 0x70, 0x01, 0x2F, 0x01, 0xD2, 0x2B, 0xF9, 0x24, 0x19, 0x1C, 0x39, 0x01, 0x24, 0x3A, 0x8D, 0x23, 0xB8, 0x01, + 0x2F, 0x00, 0xEE, 0x19, 0x50, 0x11, 0x0F, 0x19, 0x4F, 0x19, 0x50, 0x09, 0x2F, 0x01, 0x2E, 0x2B, 0xD8, 0x1C, 0x39, 0x0C, 0x19, 0x04, 0x18, 0x04, 0x38, 0x01, 0x04, 0x18, 0x8A, 0x04, 0x39, 0x04, 0x18, 0x0C, 0x19, 0x0B, 0xF8, 0x14, 0x19, 0x2C, 0x5A, 0x1B, 0x36, 0x01, 0x0F, 0x09, 0x2F, 0x11, 0x30, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x52, 0x8B, 0x11, 0x33, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x20, 0xEF, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x51, 0x8A, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x54, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, + 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x8A, 0x21, 0x32, 0x19, 0x32, 0x11, 0x12, 0x19, 0x95, 0x29, 0xF7, 0x21, 0xD6, 0x19, 0x54, 0x10, 0xF2, 0x19, 0x12, 0x21, 0x52, 0x21, 0x51, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x86, 0x29, 0x0E, 0x28, 0xCE, 0x20, 0x6B, 0x59, 0xAF, 0xDD, 0x1B, 0xDC, 0xDA, 0xDC, 0xB9, 0x04, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x06, 0xDC, 0x57, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x58, 0x8E, 0xDC, 0x78, 0xD4, 0x99, 0xCC, 0x9A, 0x51, 0x2D, 0x41, 0x2E, 0x20, 0xAD, 0x28, 0xEE, 0x20, 0xEF, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x05, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x8B, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, + 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x50, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x50, 0x21, 0x50, 0x01, 0x21, 0x30, 0x88, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x34, 0x19, 0xB7, 0x21, 0xF8, 0x19, 0xF8, 0x19, 0xB7, 0x09, 0x14, 0x01, 0x11, 0x12, 0x83, 0x19, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x87, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x19, 0xB5, 0x01, 0x1A, 0x18, 0x8A, 0x19, 0xB6, 0x08, 0xF2, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x19, 0x10, 0x19, 0x31, 0x01, 0x19, 0x52, 0x01, 0x19, 0x32, 0x84, 0x19, 0x12, 0x19, 0x32, 0x21, 0x52, 0x19, 0x51, 0x19, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, + 0x19, 0x2F, 0x02, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x4F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x19, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x4F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x4F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x86, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x31, 0x80, 0x21, 0x11, 0x02, 0x21, 0x31, 0x07, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x50, 0x21, 0x50, 0x01, 0x21, 0x30, 0x91, 0x19, 0x10, 0x19, 0x11, 0x19, 0x31, 0x19, 0x52, 0x11, 0x53, 0x19, 0x95, 0x21, 0xF6, 0x22, 0x17, 0x21, 0xF6, 0x19, 0x95, 0x11, + 0x53, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x19, 0x51, 0x19, 0x52, 0x19, 0x31, 0x11, 0x11, 0x01, 0x11, 0x12, 0x81, 0x19, 0x74, 0x21, 0xD5, 0x01, 0x21, 0xF6, 0x81, 0x22, 0x17, 0x2A, 0x37, 0x01, 0x21, 0xF7, 0x81, 0x22, 0x17, 0x2A, 0x17, 0x03, 0x2A, 0x37, 0x80, 0x2A, 0x17, 0x02, 0x21, 0xF6, 0x03, 0x29, 0xF6, 0x02, 0x2A, 0x16, 0x83, 0x29, 0xF6, 0x2A, 0x16, 0x29, 0xF6, 0x21, 0xF6, 0x02, 0x21, 0xD6, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x92, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x09, 0x96, 0x11, 0xD8, 0x1A, 0x19, 0x12, 0x19, 0x1A, 0x19, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x03, 0x19, 0x31, 0x87, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x11, 0x96, 0x19, 0xD7, 0x11, 0xD7, 0x01, 0x11, 0xD8, 0x01, 0x11, 0xF8, 0x80, 0x12, 0x18, 0x0C, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x02, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x02, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x02, 0x12, 0x18, 0x81, 0x11, 0xF8, 0x12, 0x18, 0x02, 0x1A, 0x18, 0x87, 0x19, 0xF7, 0x11, 0xB5, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, + 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x89, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, + 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x19, 0x2F, 0x21, 0x50, 0x19, 0x4F, 0x02, 0x19, 0x2F, 0x01, 0x21, 0x50, 0x03, 0x21, 0x2F, 0x8D, 0x19, 0x4F, 0x11, 0x4F, 0x11, 0x70, 0x01, 0x2F, 0x01, 0xD1, 0x2B, 0xD9, 0x24, 0x1A, 0x24, 0x5A, 0x1C, 0x39, 0x1B, 0xF9, 0x23, 0x98, 0x01, 0x4F, 0x00, 0xCD, 0x19, 0x50, 0x01, 0x19, 0x4F, 0x87, 0x11, 0x2F, 0x09, 0x2F, 0x01, 0x0E, 0x2B, 0xD8, 0x1C, 0x19, 0x0C, 0x18, 0x0C, 0x39, 0x04, 0x18, 0x01, 0x04, 0x39, 0x01, 0x04, 0x19, 0x88, 0x0C, 0x19, 0x14, 0x39, 0x1C, 0x39, 0x34, 0x7B, 0x1A, 0xF5, 0x01, 0x0F, 0x09, 0x2F, 0x11, 0x50, 0x19, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x02, + 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x9B, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x51, 0x21, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x19, 0xD6, 0x22, 0x17, 0x22, 0x18, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x09, 0x34, 0x19, 0xB6, 0x19, 0xF8, 0x19, 0xF7, 0x19, 0xB5, 0x11, 0x32, 0x01, 0x19, 0x32, 0x82, 0x21, 0x31, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8C, 0x21, 0x32, 0x19, 0x32, 0x11, 0x12, 0x21, 0xB5, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x95, 0x10, 0xF2, 0x19, 0x12, 0x21, 0x52, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, + 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x86, 0x28, 0xEE, 0x28, 0xCE, 0x20, 0x2A, 0xA3, 0xB6, 0xD4, 0xDA, 0xDC, 0x99, 0xDC, 0x98, 0x03, 0xDC, 0x57, 0x81, 0xDC, 0x36, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x04, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x03, 0xDC, 0x37, 0x04, 0xDC, 0x57, 0x82, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x58, 0x01, 0xDC, 0x99, 0x85, 0xCC, 0x59, 0x48, 0xEC, 0x38, 0xED, 0x28, 0xAD, 0x28, 0xCE, 0x20, 0xEE, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x50, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x92, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x50, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x09, 0x34, 0x19, 0xB7, 0x19, 0xF8, 0x19, 0xD8, 0x19, 0xD7, 0x11, 0x55, 0x09, 0x13, 0x11, 0x32, 0x19, 0x52, 0x21, 0x51, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x29, 0x30, 0x01, 0x21, 0x30, + 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x10, 0x88, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x19, 0xD6, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0xB6, 0x09, 0x12, 0x11, 0x11, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x88, 0x21, 0x30, 0x29, 0x30, 0x29, 0x50, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x19, 0x30, 0x05, 0x19, 0x31, 0x81, 0x21, 0x51, 0x21, 0x50, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x01, 0x19, 0x30, 0x80, 0x19, 0x50, 0x01, 0x21, 0x50, 0x85, 0x19, 0x2F, 0x19, 0x50, 0x21, 0x50, 0x19, 0x2F, 0x21, 0x50, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x50, 0x21, 0x2F, 0x21, 0x50, 0x21, 0x2F, 0x01, 0x21, 0x4F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x50, 0x02, 0x21, 0x30, 0x02, 0x19, 0x30, 0x02, 0x19, 0x2F, 0x81, 0x21, 0x50, 0x21, 0x4F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x50, 0x19, 0x4F, 0x19, 0x50, 0x19, 0x2F, 0x21, 0x50, 0x19, 0x2F, 0x02, 0x19, 0x30, 0x82, 0x19, 0x2F, + 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x30, 0x80, 0x21, 0x30, 0x02, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x0A, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x04, 0x21, 0x31, 0x81, 0x19, 0x11, 0x19, 0x32, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x05, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x50, 0x01, 0x19, 0x10, 0x85, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x94, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x85, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x11, 0x11, 0x11, 0x31, 0x19, 0x31, 0x01, 0x19, 0x52, 0x01, 0x11, 0x11, 0x83, 0x11, 0x32, 0x19, 0x74, 0x21, 0xD6, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x03, 0x21, 0xD6, 0x81, 0x19, 0xB5, 0x21, 0xB5, 0x02, 0x19, 0x95, 0x80, 0x19, 0x74, 0x01, 0x19, 0x94, 0x80, 0x19, 0x74, 0x01, 0x19, 0x94, + 0x01, 0x19, 0x74, 0x81, 0x21, 0x94, 0x19, 0x74, 0x03, 0x19, 0x94, 0x80, 0x21, 0x95, 0x03, 0x19, 0x74, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x87, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x09, 0x96, 0x11, 0xD8, 0x01, 0x12, 0x19, 0x87, 0x1A, 0x19, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x75, 0x11, 0x53, 0x11, 0x33, 0x19, 0x52, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x87, 0x19, 0x12, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xB7, 0x01, 0x09, 0xB7, 0x01, 0x09, 0x96, 0x02, 0x09, 0x97, 0x01, 0x09, 0xB7, 0x82, 0x09, 0x97, 0x09, 0xB7, 0x09, 0x97, 0x08, 0x09, 0xB7, 0x80, 0x09, 0x97, 0x02, 0x09, 0xB7, 0x80, 0x09, 0x97, 0x01, 0x09, 0xB7, 0x80, 0x09, 0x97, 0x03, 0x09, 0xB7, 0x87, 0x11, 0xD8, 0x12, 0x18, 0x1A, 0x18, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, + 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, + 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x50, 0x01, 0x19, 0x4F, 0x81, 0x19, 0x50, 0x19, 0x4F, 0x04, 0x19, 0x2F, 0x9A, 0x21, 0x30, 0x19, 0x2F, 0x21, 0x50, 0x21, 0x70, 0x19, 0x70, 0x11, 0x70, 0x01, 0x2F, 0x01, 0xB1, 0x2B, 0xD9, 0x24, 0x1A, 0x24, 0x3A, 0x1C, 0x3A, 0x24, 0x1A, 0x23, 0x98, 0x01, 0x4F, 0x00, 0xEE, 0x11, 0x2F, 0x11, 0x0F, 0x19, 0x70, 0x19, 0x50, 0x09, 0x2F, 0x01, 0x2E, 0x23, 0x97, 0x24, 0x19, 0x14, 0x19, 0x0C, 0x19, 0x03, 0xF8, 0x01, 0x04, 0x18, 0x80, 0x04, 0x39, 0x01, 0x03, 0xF8, 0x88, 0x14, 0x39, 0x24, 0x5A, 0x3C, 0x7B, 0x12, 0xB4, 0x01, 0x0F, 0x09, 0x0F, 0x11, 0x30, 0x19, 0x30, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x8A, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x21, 0x52, 0x19, 0x52, + 0x11, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0x95, 0x19, 0xD6, 0x01, 0x22, 0x18, 0x83, 0x19, 0xB6, 0x19, 0x75, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x11, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x50, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x89, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xF7, 0x22, 0x18, 0x22, 0x17, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x12, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x74, 0x10, 0xF1, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x01, 0x21, 0x30, 0x03, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x04, 0x29, 0x2F, 0x84, 0x29, 0x0E, 0x28, 0xEE, 0x28, 0x8C, 0x30, 0xAC, 0xCC, 0xDB, 0x01, 0xDC, 0xB9, 0x80, 0xDC, 0x78, 0x05, 0xDC, 0x57, 0x82, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x80, 0xDC, + 0x37, 0x01, 0xDC, 0x36, 0x82, 0xDC, 0x37, 0xDC, 0x57, 0xE4, 0x57, 0x02, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x8A, 0xDC, 0x78, 0xE4, 0xBA, 0xE4, 0xFB, 0x82, 0x51, 0x28, 0x2A, 0x28, 0x8C, 0x20, 0xAD, 0x28, 0xEE, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x07, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x8C, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x80, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8C, 0x11, 0x32, 0x11, 0x53, 0x09, 0x54, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xD8, 0x11, 0xB7, 0x11, 0x55, 0x09, 0x13, 0x11, 0x12, 0x19, 0x32, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, + 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x8B, 0x21, 0x11, 0x19, 0x12, 0x11, 0x12, 0x19, 0xD6, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x95, 0x09, 0x12, 0x19, 0x31, 0x21, 0x51, 0x21, 0x30, 0x18, 0xEF, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x19, 0x10, 0x07, 0x21, 0x30, 0x01, 0x21, 0x50, 0x80, 0x19, 0x30, 0x02, 0x19, 0x50, 0x80, 0x19, 0x4F, 0x06, 0x19, 0x50, 0x81, 0x19, 0x2F, 0x19, 0x4F, 0x02, 0x19, 0x2F, 0x81, 0x21, 0x2F, 0x19, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x4F, 0x03, 0x21, 0x50, 0x82, 0x19, 0x30, 0x19, 0x50, 0x19, 0x30, 0x06, 0x19, 0x50, 0x81, 0x19, 0x4F, 0x19, 0x2F, 0x03, 0x19, 0x50, 0x80, 0x19, 0x2F, 0x01, 0x19, 0x50, 0x02, 0x19, 0x30, 0x01, 0x19, 0x2F, 0x01, 0x19, 0x50, 0x02, 0x19, 0x30, 0x01, 0x21, 0x50, 0x82, 0x19, 0x30, 0x19, 0x50, 0x19, 0x30, 0x01, 0x19, 0x50, 0x80, 0x19, 0x30, 0x01, 0x19, 0x50, 0x03, 0x19, 0x30, 0x81, 0x19, 0x50, 0x19, 0x30, 0x02, 0x19, 0x2F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x50, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, + 0x30, 0x02, 0x21, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x81, 0x11, 0x12, 0x11, 0x32, 0x01, 0x11, 0x12, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x8A, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x10, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xF6, 0x22, 0x17, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x01, 0x11, 0x11, 0x01, 0x19, 0x52, 0x80, 0x19, 0x31, 0x01, 0x11, 0x11, 0x81, 0x11, 0x33, 0x19, 0x74, 0x01, 0x21, 0xD6, 0x84, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x19, 0x54, 0x02, 0x11, 0x33, 0x80, 0x11, 0x13, 0x05, 0x11, 0x12, 0x03, 0x11, 0x32, 0x02, 0x11, 0x12, 0x05, 0x11, 0x32, 0x01, 0x11, 0x12, 0x80, 0x19, 0x12, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8E, 0x19, 0x31, 0x11, + 0x31, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD7, 0x1A, 0x19, 0x12, 0x19, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x53, 0x01, 0x19, 0x32, 0x83, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x32, 0x83, 0x19, 0x33, 0x11, 0x54, 0x19, 0x95, 0x19, 0xD6, 0x02, 0x11, 0xD7, 0x01, 0x11, 0xB7, 0x85, 0x09, 0xB7, 0x11, 0xB7, 0x09, 0xB7, 0x09, 0x97, 0x11, 0xB7, 0x11, 0xD8, 0x01, 0x09, 0xB7, 0x80, 0x11, 0xB8, 0x01, 0x09, 0xB7, 0x81, 0x11, 0xD8, 0x11, 0xB8, 0x05, 0x11, 0xD8, 0x80, 0x09, 0xB7, 0x01, 0x11, 0xD8, 0x01, 0x09, 0xB7, 0x80, 0x11, 0xD8, 0x01, 0x09, 0xD7, 0x02, 0x09, 0xB7, 0x80, 0x09, 0xD7, 0x01, 0x11, 0xD8, 0x85, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x08, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x87, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, + 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x85, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, + 0x02, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x50, 0x19, 0x50, 0x19, 0x4F, 0x02, 0x11, 0x50, 0x83, 0x11, 0x4F, 0x11, 0x50, 0x11, 0x2F, 0x19, 0x50, 0x01, 0x19, 0x30, 0x02, 0x19, 0x50, 0x98, 0x11, 0x4F, 0x11, 0x50, 0x01, 0x2F, 0x01, 0xB2, 0x2B, 0xB9, 0x24, 0x1A, 0x1C, 0x1A, 0x24, 0x3A, 0x24, 0x19, 0x23, 0x98, 0x01, 0x4F, 0x00, 0xCD, 0x11, 0x2F, 0x19, 0x2F, 0x19, 0x50, 0x19, 0x4F, 0x11, 0x4F, 0x01, 0x0E, 0x2B, 0x97, 0x2C, 0x39, 0x1C, 0x19, 0x0C, 0x19, 0x03, 0xF8, 0x04, 0x18, 0x03, 0xF8, 0x01, 0x04, 0x18, 0x89, 0x0C, 0x19, 0x14, 0x19, 0x24, 0x5A, 0x3C, 0x7B, 0x12, 0x94, 0x00, 0xEE, 0x09, 0x0F, 0x11, 0x0F, 0x19, 0x0F, 0x21, 0x30, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x86, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x32, 0x19, 0x54, 0x19, 0x95, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x83, 0x21, 0xD6, 0x19, 0x75, 0x19, 0x53, 0x19, 0x32, 0x01, 0x19, 0x11, 0x81, 0x21, 0x31, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x09, 0x33, 0x19, 0xD7, 0x22, + 0x38, 0x21, 0xF7, 0x11, 0x53, 0x10, 0xF2, 0x19, 0x12, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x8B, 0x11, 0x12, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x74, 0x10, 0xF2, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x02, 0x29, 0x30, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x86, 0x28, 0xEE, 0x28, 0xCD, 0x20, 0x4B, 0x6A, 0x32, 0xD4, 0xDB, 0xDC, 0xDA, 0xDC, 0x78, 0x03, 0xDC, 0x57, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x36, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x04, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x82, 0xDC, 0x36, 0xE4, 0x57, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x8C, 0xDC, 0x37, 0xDC, 0x58, 0xE4, 0x99, 0xE4, 0xFB, 0xCC, 0x9A, 0x28, 0x09, 0x30, 0xAC, 0x28, 0xAD, 0x28, 0xEE, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x21, + 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x90, 0x21, 0x51, 0x19, 0x30, 0x19, 0x51, 0x19, 0x52, 0x11, 0x52, 0x11, 0x33, 0x09, 0x54, 0x19, 0xF7, 0x19, 0xF8, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x09, 0x13, 0x11, 0x12, 0x19, 0x32, 0x21, 0x51, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x04, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x8B, 0x21, 0x31, 0x21, 0x11, 0x19, 0x12, 0x11, 0x13, 0x19, 0xF7, 0x12, 0x17, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x88, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, + 0x20, 0xEF, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x19, 0x50, 0x84, 0x11, 0x2F, 0x19, 0x50, 0x11, 0x4F, 0x19, 0x50, 0x11, 0x4F, 0x02, 0x11, 0x50, 0x81, 0x11, 0x4F, 0x11, 0x50, 0x02, 0x11, 0x2F, 0x02, 0x19, 0x2F, 0x02, 0x19, 0x4F, 0x80, 0x19, 0x2F, 0x05, 0x19, 0x50, 0x80, 0x11, 0x2F, 0x03, 0x11, 0x50, 0x06, 0x19, 0x50, 0x07, 0x11, 0x50, 0x80, 0x11, 0x4F, 0x02, 0x11, 0x50, 0x01, 0x19, 0x30, 0x83, 0x19, 0x50, 0x11, 0x2F, 0x11, 0x30, 0x19, 0x50, 0x09, 0x11, 0x50, 0x02, 0x11, 0x30, 0x01, 0x11, 0x2F, 0x01, 0x19, 0x2F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x86, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x50, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x04, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x02, 0x19, 0x11, 0x83, 0x11, 0x12, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x02, 0x11, 0x95, 0x83, 0x11, 0x54, 0x11, 0x53, 0x11, 0x33, 0x11, 0x32, 0x02, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, + 0x81, 0x29, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x11, 0x11, 0x31, 0x11, 0x52, 0x11, 0x53, 0x11, 0x95, 0x19, 0xF6, 0x01, 0x22, 0x17, 0x84, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x11, 0x11, 0x01, 0x11, 0x32, 0x87, 0x11, 0x74, 0x19, 0xB6, 0x21, 0xD6, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x54, 0x11, 0x33, 0x01, 0x11, 0x13, 0x03, 0x11, 0x12, 0x80, 0x10, 0xF1, 0x02, 0x11, 0x12, 0x80, 0x19, 0x12, 0x02, 0x19, 0x32, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x85, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x11, 0x01, 0x19, 0x12, 0x86, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x08, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x51, 0x21, 0x30, 0x01, 0x19, 0x31, 0x87, 0x11, 0x11, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xF9, 0x01, 0x11, 0xD8, 0x83, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x80, 0x21, 0x52, 0x01, 0x21, 0x32, 0x8A, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x74, 0x19, 0xB5, 0x19, 0xB6, 0x19, 0xD6, 0x1A, 0x17, 0x19, 0xF7, 0x02, 0x1A, 0x18, 0x81, 0x19, 0xF8, 0x1A, + 0x18, 0x01, 0x19, 0xF8, 0x80, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x80, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x80, 0x19, 0xF8, 0x03, 0x1A, 0x18, 0x83, 0x19, 0xF8, 0x1A, 0x18, 0x11, 0xF7, 0x1A, 0x18, 0x04, 0x11, 0xF8, 0x81, 0x09, 0xD8, 0x11, 0xF8, 0x01, 0x11, 0xD8, 0x86, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x74, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x01, 0x21, 0x51, 0x81, 0x21, 0x30, 0x21, 0x50, 0x08, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, + 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, 0x19, 0x50, 0x01, 0x11, 0x4F, 0x80, 0x11, 0x50, 0x01, 0x09, 0x70, 0x01, 0x09, 0x4F, 0x80, 0x09, 0x50, 0x01, 0x11, 0x50, 0x82, 0x11, 0x30, 0x19, 0x30, 0x19, 0x2F, 0x01, 0x11, 0x2F, 0x84, + 0x11, 0x50, 0x01, 0x2F, 0x01, 0xD2, 0x2B, 0xD9, 0x2C, 0x3A, 0x02, 0x1B, 0xF9, 0x99, 0x23, 0xB8, 0x01, 0x6F, 0x00, 0xEE, 0x11, 0x4F, 0x19, 0x0F, 0x21, 0x50, 0x19, 0x50, 0x19, 0x4F, 0x01, 0x2F, 0x33, 0x77, 0x44, 0x9B, 0x2C, 0x5A, 0x1C, 0x5A, 0x14, 0x39, 0x0C, 0x18, 0x0C, 0x39, 0x0C, 0x19, 0x0C, 0x39, 0x14, 0x39, 0x1C, 0x39, 0x2C, 0x5A, 0x44, 0x9B, 0x1A, 0xB5, 0x01, 0x0E, 0x11, 0x2F, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x51, 0x01, 0x19, 0x32, 0x8A, 0x11, 0x33, 0x19, 0x54, 0x19, 0x95, 0x21, 0xF7, 0x2A, 0x38, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x53, 0x19, 0x33, 0x19, 0x11, 0x01, 0x21, 0x31, 0x83, 0x29, 0x51, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x09, 0x13, 0x19, 0xD7, 0x2A, 0x38, 0x22, 0x17, 0x11, 0x53, 0x10, 0xF2, 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x86, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x29, + 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x92, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x11, 0x12, 0x21, 0xD5, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x19, 0x12, 0x21, 0x52, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x29, 0x30, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x8A, 0x29, 0x0F, 0x29, 0x0E, 0x30, 0xCD, 0x30, 0x6B, 0xAB, 0xF8, 0xD4, 0xBA, 0xDC, 0x98, 0xDC, 0x78, 0xDC, 0x77, 0xDC, 0x57, 0xE4, 0x57, 0x03, 0xDC, 0x57, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x02, 0xDC, 0x37, 0x84, 0xDC, 0x36, 0xE4, 0x36, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x8A, 0xE4, 0x57, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x78, 0xE4, 0xDA, 0xED, 0x7D, 0x7A, 0x52, 0x30, 0x6B, 0x30, 0xAD, 0x28, 0xCE, 0x28, 0xEF, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x10, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, + 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x85, 0x19, 0x52, 0x11, 0x73, 0x09, 0x74, 0x09, 0x95, 0x1A, 0x18, 0x11, 0xF8, 0x01, 0x11, 0xB7, 0x85, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x52, 0x21, 0x52, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x87, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x31, 0x87, 0x19, 0x12, 0x11, 0x33, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x75, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, + 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x19, 0x50, 0x11, 0x2F, 0x08, 0x09, 0x2F, 0x01, 0x09, 0x4F, 0x03, 0x09, 0x2F, 0x84, 0x11, 0x2F, 0x11, 0x4F, 0x11, 0x2F, 0x19, 0x2F, 0x19, 0x4F, 0x02, 0x19, 0x50, 0x01, 0x11, 0x2F, 0x07, 0x09, 0x2F, 0x01, 0x11, 0x50, 0x80, 0x09, 0x30, 0x02, 0x11, 0x50, 0x01, 0x09, 0x50, 0x81, 0x11, 0x50, 0x09, 0x50, 0x01, 0x09, 0x2F, 0x80, 0x09, 0x4F, 0x05, 0x09, 0x2F, 0x02, 0x09, 0x0F, 0x80, 0x01, 0x0F, 0x08, 0x01, 0x2F, 0x03, 0x09, 0x2F, 0x80, 0x09, 0x4F, 0x01, 0x09, 0x2F, 0x81, 0x09, 0x0E, 0x09, 0x0F, 0x01, 0x11, 0x0F, 0x83, 0x19, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x0E, 0x21, 0x30, 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x96, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x53, 0x11, 0x75, 0x19, 0xF7, 0x1A, 0x18, 0x22, 0x59, 0x22, 0x79, 0x1A, 0x59, 0x1A, 0x38, 0x1A, 0x18, 0x19, 0xD6, 0x11, 0x94, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x19, 0x11, 0x02, 0x21, 0x31, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x07, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x83, 0x19, 0x52, 0x19, 0x73, 0x11, 0x74, 0x11, 0x95, 0x01, 0x19, 0xD6, 0x83, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x01, 0x11, 0x11, 0x8C, 0x19, 0x31, 0x21, 0x52, 0x19, 0x31, + 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x21, 0xD6, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x33, 0x03, 0x11, 0x12, 0x80, 0x19, 0x12, 0x02, 0x19, 0x32, 0x84, 0x19, 0x11, 0x21, 0x52, 0x19, 0x31, 0x21, 0x52, 0x19, 0x52, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x02, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x11, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x01, 0x11, 0xD8, 0x01, 0x11, 0xF9, 0x84, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x01, 0x21, 0x52, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x19, 0x11, 0x01, 0x19, 0x32, 0x82, 0x11, 0x53, 0x11, 0x73, 0x11, 0x74, 0x01, 0x11, 0xB5, 0x81, 0x19, 0xB5, 0x11, 0x95, 0x04, 0x19, 0xB6, 0x80, 0x11, 0xB6, 0x01, 0x19, 0xB6, 0x80, 0x19, 0xD7, 0x01, 0x19, 0xB6, 0x02, 0x11, 0xB6, 0x83, 0x19, 0xB6, 0x11, 0xB6, 0x19, 0xD6, 0x11, 0xB6, 0x01, 0x19, 0xD6, 0x01, 0x11, 0xD6, 0x01, 0x19, 0xD7, 0x84, 0x19, 0xF7, 0x11, 0xF7, 0x19, 0xF8, 0x1A, 0x19, 0x12, 0x18, 0x01, 0x11, 0xF9, 0x88, 0x11, 0xF8, + 0x11, 0xD7, 0x11, 0xB7, 0x09, 0x54, 0x11, 0x54, 0x11, 0x53, 0x19, 0x32, 0x19, 0x51, 0x21, 0x51, 0x01, 0x21, 0x50, 0x0B, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x06, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, + 0x30, 0x03, 0x21, 0x10, 0x87, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x05, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x50, 0x01, 0x19, 0x50, 0x01, 0x09, 0x4F, 0x82, 0x01, 0x6F, 0x01, 0x4F, 0x01, 0xB0, 0x01, 0x0A, 0x12, 0x80, 0x01, 0x90, 0x01, 0x01, 0x2F, 0x92, 0x11, 0x50, 0x11, 0x30, 0x11, 0x50, 0x11, 0x2F, 0x11, 0x50, 0x09, 0x50, 0x01, 0x30, 0x01, 0xB1, 0x2B, 0xD9, 0x24, 0x19, 0x1C, 0x19, 0x24, 0x3A, 0x23, 0xF9, 0x2B, 0xB8, 0x01, 0x6F, 0x09, 0x0E, 0x19, 0x4F, 0x10, 0xEE, 0x19, 0x4F, 0x01, 0x19, 0x50, 0x86, 0x09, 0x4F, 0x1A, 0x74, 0x33, 0x78, 0x2B, 0xD8, 0x24, 0x19, 0x1C, 0x5A, 0x0B, 0xF8, 0x01, 0x0C, 0x19, 0x88, 0x14, 0x19, 0x1C, 0x5A, 0x2C, 0x3A, 0x34, 0x19, 0x3B, + 0xD9, 0x1A, 0x74, 0x09, 0x4F, 0x11, 0x30, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x86, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x84, 0x29, 0x30, 0x29, 0x10, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x91, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x08, 0xF3, 0x19, 0xD6, 0x2A, 0x38, 0x21, 0xF7, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x8C, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, + 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8C, 0x21, 0x30, 0x21, 0x31, 0x21, 0x32, 0x19, 0x12, 0x11, 0x12, 0x21, 0xB5, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x21, 0x51, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x88, 0x28, 0xEE, 0x28, 0xAC, 0x40, 0xAC, 0xCC, 0x7A, 0xD4, 0x99, 0xDC, 0x99, 0xDC, 0x78, 0xDC, 0x37, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x84, 0xDC, 0x36, 0xDC, 0x57, 0xDC, 0x56, 0xDC, 0x36, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x83, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0x03, 0xDC, 0x36, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x02, 0xE4, 0x57, 0x02, 0xDC, 0x57, 0x87, 0xDC, 0x58, 0xDC, 0x99, 0xE4, 0xFB, 0xCC, 0xBB, 0x61, 0xAF, 0x28, 0x6B, 0x30, 0xCE, 0x28, 0xEE, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x86, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, + 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x88, 0x19, 0x31, 0x19, 0x52, 0x11, 0x53, 0x11, 0x74, 0x11, 0x75, 0x11, 0xB6, 0x1A, 0x18, 0x11, 0xF8, 0x11, 0xD8, 0x01, 0x11, 0xD7, 0x83, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x21, 0x52, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x82, 0x21, 0x11, 0x19, 0x12, 0x11, 0x33, 0x01, 0x19, 0xF7, 0x85, 0x11, 0xD7, 0x11, 0x74, 0x11, 0x11, 0x19, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x84, 0x21, 0x50, 0x19, 0x30, 0x11, 0x0F, 0x00, 0xCE, 0x01, 0x0E, 0x01, 0x01, 0x2F, 0x03, 0x01, 0x0E, 0x82, 0x01, 0x2E, 0x01, 0x4F, 0x01, 0x6F, 0x03, 0x01, 0x2E, 0x84, 0x01, 0x0E, 0x01, 0x2E, 0x09, 0x4F, 0x11, + 0x4F, 0x11, 0x2F, 0x02, 0x19, 0x50, 0x81, 0x19, 0x70, 0x09, 0x2F, 0x01, 0x01, 0x0E, 0x80, 0x01, 0x2F, 0x01, 0x01, 0x4F, 0x82, 0x01, 0x6F, 0x01, 0x2F, 0x01, 0x2E, 0x01, 0x01, 0x0E, 0x80, 0x01, 0x4F, 0x02, 0x09, 0x50, 0x83, 0x01, 0x50, 0x01, 0x4F, 0x01, 0x2F, 0x01, 0x0E, 0x01, 0x01, 0x2F, 0x02, 0x01, 0x4F, 0x01, 0x01, 0x6F, 0x82, 0x01, 0x90, 0x11, 0xB1, 0x09, 0x4F, 0x01, 0x01, 0x0F, 0x82, 0x01, 0x2F, 0x01, 0x4F, 0x01, 0x6F, 0x04, 0x01, 0x90, 0x81, 0x01, 0x70, 0x01, 0x90, 0x03, 0x01, 0x6F, 0x80, 0x01, 0x4F, 0x02, 0x01, 0x6F, 0x01, 0x01, 0x2E, 0x83, 0x01, 0x2F, 0x11, 0x2F, 0x11, 0x0F, 0x19, 0x2F, 0x06, 0x21, 0x30, 0x03, 0x21, 0x50, 0x80, 0x19, 0x30, 0x01, 0x19, 0x2F, 0x03, 0x19, 0x0F, 0x80, 0x19, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x29, 0x30, 0x89, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0x74, 0x19, 0xB6, 0x11, 0xF7, 0x01, 0x12, 0x18, 0x8B, 0x12, 0x19, 0x0A, 0x19, 0x12, 0x19, 0x09, 0xF9, 0x12, 0x18, 0x11, 0xF8, 0x11, 0xF7, 0x19, 0xF6, 0x19, 0x94, 0x19, 0x52, 0x19, 0x32, 0x19, 0x31, 0x05, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x31, 0x0A, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x19, 0x10, 0x80, 0x19, 0x30, 0x03, 0x19, 0x31, 0x84, 0x19, 0x52, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x19, 0xF6, 0x01, 0x19, 0xD6, 0x8D, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x31, + 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x21, 0xF7, 0x01, 0x21, 0xD6, 0x84, 0x19, 0x74, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x12, 0x02, 0x19, 0x32, 0x81, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x83, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x11, 0x80, 0x21, 0x10, 0x01, 0x21, 0x11, 0x03, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x20, 0xEE, 0x82, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x31, 0x88, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xF9, 0x01, 0x11, 0xF8, 0x85, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x13, 0x11, 0x12, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x02, 0x19, 0x52, 0x80, 0x11, 0x52, 0x02, 0x11, 0x32, 0x01, 0x11, 0x13, 0x80, 0x09, 0x13, 0x01, 0x11, 0x13, 0x81, 0x09, 0x13, 0x11, 0x13, 0x01, 0x09, 0x13, 0x81, 0x11, 0x33, 0x11, 0x13, 0x02, 0x09, 0x13, 0x01, 0x11, 0x33, 0x01, 0x09, 0x33, 0x84, 0x09, 0x13, 0x09, 0x33, 0x09, 0x13, 0x09, 0x33, 0x11, 0x34, 0x01, 0x09, 0x33, 0x85, 0x09, 0x54, 0x09, + 0x34, 0x09, 0x55, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xF9, 0x01, 0x12, 0x19, 0x87, 0x11, 0xF8, 0x11, 0xB6, 0x09, 0x54, 0x09, 0x12, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x09, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x30, 0x85, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x03, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, + 0x04, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8E, 0x19, 0x2F, 0x11, 0x2F, 0x09, 0x2F, 0x01, 0x4F, 0x01, 0x6F, 0x0A, 0x52, 0x23, 0x36, 0x3C, 0x3A, 0x3C, 0x5A, 0x44, 0x7B, 0x44, 0x5A, 0x3B, 0xF9, 0x1A, 0x94, 0x09, 0x91, 0x09, 0x70, 0x01, 0x11, 0x50, 0x84, 0x09, 0x2F, 0x09, 0x70, 0x01, 0x30, 0x01, 0xF2, 0x2B, 0xD9, 0x01, 0x24, 0x19, 0x84, 0x1C, 0x19, 0x23, 0xF9, 0x23, 0x77, 0x01, 0x4F, 0x00, 0xEE, 0x01, 0x19, 0x2F, 0x84, 0x21, 0x50, 0x19, 0x50, 0x19, 0x2F, 0x11, 0x2F, 0x09, 0x50, 0x01, 0x01, 0x2F, 0x81, 0x01, 0xD1, 0x23, 0xF9, 0x01, 0x14, 0x19, 0x8C, 0x0B, 0xF8, 0x13, 0xF8, 0x24, 0x19, 0x12, 0xD5, 0x01, 0x4F, 0x01, 0x2E, 0x01, 0x0E, 0x11, 0x50, 0x19, 0x50, 0x21, 0x50, 0x21, + 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x86, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8B, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x98, 0x21, 0x31, 0x21, 0x11, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x33, 0x19, 0x75, 0x21, 0xD6, 0x22, 0x37, 0x19, 0xF6, 0x19, 0xB6, 0x11, 0x74, 0x19, 0x53, 0x11, 0x12, 0x19, 0x11, 0x18, 0xF0, 0x21, 0x10, 0x29, 0x31, 0x29, 0x30, 0x29, 0x50, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x13, 0x21, 0xD6, 0x2A, 0x38, 0x21, 0xD6, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8A, 0x21, 0x10, 0x21, 0x31, + 0x19, 0x32, 0x19, 0x12, 0x11, 0x12, 0x21, 0xD5, 0x22, 0x17, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x28, 0xCD, 0x20, 0x4B, 0x69, 0xF0, 0xDC, 0xFB, 0xDC, 0xB9, 0xDC, 0x98, 0x03, 0xDC, 0x57, 0x81, 0xDC, 0x36, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x82, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x86, 0xDC, 0x56, 0xDC, 0x36, 0xE4, 0x57, 0xE4, 0x37, 0xDC, 0x37, 0xDC, 0x36, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x8B, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x58, 0xDC, 0x78, 0xD4, 0x79, 0xDC, 0xFB, 0xCC, 0xFC, 0x40, 0xCD, 0x30, 0xAD, 0x28, 0xEE, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x88, 0x21, 0x31, + 0x19, 0x31, 0x11, 0x32, 0x11, 0x74, 0x11, 0x95, 0x11, 0x96, 0x11, 0xB7, 0x1A, 0x18, 0x11, 0xF8, 0x01, 0x11, 0xD8, 0x83, 0x19, 0xF8, 0x11, 0xD7, 0x09, 0x54, 0x11, 0x33, 0x01, 0x19, 0x52, 0x81, 0x21, 0x51, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0xF7, 0x01, 0x11, 0xF7, 0x83, 0x11, 0x74, 0x11, 0x32, 0x21, 0x51, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x50, 0x29, 0x50, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x8C, 0x11, 0x0F, 0x00, 0xCD, 0x2A, 0xF5, 0x44, 0x19, 0x33, 0xD9, 0x3B, 0xF9, 0x44, 0x5B, 0x4C, 0x7B, 0x4C, 0x9B, 0x4C, 0x7B, 0x4C, 0xBC, 0x4C, 0xDC, 0x4C, 0xBB, 0x01, 0x4C, 0x9B, 0x01, 0x44, 0x5A, 0x83, 0x4C, 0x5A, 0x43, 0xF9, 0x3B, 0x57, 0x09, 0x70, 0x02, 0x11, 0x50, 0x93, 0x19, 0x50, 0x11, 0x70, 0x09, 0x50, 0x43, 0x78, 0x43, + 0xB8, 0x3B, 0xD8, 0x44, 0x1A, 0x44, 0x3A, 0x44, 0x5B, 0x3C, 0x3A, 0x3B, 0xF9, 0x33, 0xB8, 0x3B, 0xF9, 0x09, 0xF2, 0x01, 0x2F, 0x01, 0x30, 0x01, 0x50, 0x01, 0x91, 0x01, 0x90, 0x1A, 0xD5, 0x01, 0x3C, 0x19, 0x81, 0x33, 0xF9, 0x3C, 0x19, 0x01, 0x44, 0x5A, 0x89, 0x44, 0x3A, 0x4C, 0x7B, 0x5C, 0x9C, 0x33, 0x57, 0x01, 0x0F, 0x00, 0xEE, 0x3B, 0x57, 0x5C, 0xBC, 0x44, 0x3A, 0x44, 0x5A, 0x02, 0x44, 0x7B, 0x81, 0x3C, 0x5A, 0x44, 0x9B, 0x01, 0x44, 0xBB, 0x80, 0x44, 0x9B, 0x01, 0x4C, 0xBC, 0x01, 0x44, 0x9B, 0x87, 0x4C, 0xBB, 0x44, 0x9A, 0x44, 0x7A, 0x44, 0x5A, 0x4C, 0x7B, 0x43, 0xD9, 0x01, 0x2F, 0x11, 0x2F, 0x01, 0x19, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x01, 0x21, 0x50, 0x01, 0x19, 0x50, 0x02, 0x11, 0x2F, 0x01, 0x11, 0x0F, 0x82, 0x10, 0xEF, 0x08, 0xEF, 0x10, 0xEF, 0x01, 0x11, 0x0F, 0x82, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x88, 0x21, 0x31, 0x21, 0x52, 0x19, 0x52, 0x19, 0x53, 0x11, 0x75, 0x11, 0xD7, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xF9, 0x03, 0x01, 0xD9, 0x86, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xF8, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x32, 0x01, 0x19, 0x32, 0x05, 0x21, 0x31, 0x80, 0x21, 0x11, 0x0E, 0x21, 0x31, 0x80, 0x21, 0x11, 0x03, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x82, 0x19, 0x10, 0x21, 0x31, 0x21, 0x51, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x85, 0x19, 0x52, 0x19, 0x73, 0x19, 0x52, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x01, 0x19, 0xD6, 0x85, 0x21, 0xF7, + 0x19, 0x95, 0x09, 0x33, 0x11, 0x12, 0x11, 0x32, 0x19, 0x52, 0x01, 0x19, 0x32, 0x91, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF6, 0x19, 0xD6, 0x21, 0xF6, 0x19, 0x94, 0x11, 0x32, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x32, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x01, 0x21, 0x31, 0x82, 0x21, 0x10, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x09, 0x21, 0x10, 0x80, 0x20, 0xF0, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x29, 0x50, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x31, 0x85, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x11, 0xF9, 0x89, 0x11, 0xD8, 0x19, 0xD7, 0x19, 0x96, 0x11, 0x54, 0x11, 0x13, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x01, 0x21, 0x31, 0x03, 0x19, 0x31, 0x82, 0x11, 0x11, 0x11, 0x31, 0x11, 0x12, 0x03, 0x19, 0x32, 0x81, 0x11, 0x12, 0x19, 0x12, 0x04, 0x11, 0x12, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x01, 0x11, 0x12, 0x80, 0x19, 0x33, 0x01, 0x11, 0x32, 0x81, 0x11, 0x12, 0x11, 0x32, 0x02, 0x11, 0x12, 0x87, 0x11, 0x33, 0x11, 0x12, 0x11, 0x33, 0x09, 0x33, 0x09, 0x34, 0x11, 0x96, 0x11, 0xD8, 0x1A, 0x19, 0x01, 0x12, 0x18, 0x83, 0x11, 0xF7, 0x09, 0x96, 0x09, + 0x54, 0x09, 0x33, 0x01, 0x11, 0x11, 0x83, 0x19, 0x31, 0x21, 0x31, 0x21, 0x50, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x06, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, + 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x93, 0x21, 0x30, 0x21, 0x50, 0x21, 0x2F, 0x19, 0x50, 0x11, 0x2F, 0x09, 0x4F, 0x01, 0x70, 0x33, 0x77, 0x3C, 0x3A, 0x2C, 0x19, 0x2C, 0x3A, 0x24, 0x19, 0x2C, 0x39, 0x2C, 0x19, 0x34, 0x3A, 0x3C, 0x3A, 0x33, 0x77, 0x09, 0xB1, 0x09, 0x50, 0x11, 0x50, 0x01, 0x09, 0x50, 0x83, 0x01, 0x50, 0x01, 0xB1, 0x2B, 0xD9, 0x2C, 0x1A, 0x01, 0x24, 0x19, 0x84, 0x24, 0x1A, 0x23, 0x78, 0x01, 0x2F, 0x00, 0xEE, 0x11, 0x2F, 0x02, 0x19, 0x2F, 0x01, 0x19, 0x50, 0x8A, 0x11, 0x50, 0x09, 0x2F, 0x01, 0x2F, 0x01, 0x90, 0x23, 0xF9, 0x1C, 0x19, 0x14, 0x19, 0x13, 0xF8, 0x1B, 0xF9, 0x34, 0x7B, 0x02, 0x12, 0x01, 0x01, 0x0E, 0x80, 0x09, 0x2F, 0x01, 0x19, 0x50, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, + 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x53, 0x11, 0x95, 0x01, 0x21, 0xF7, 0x01, 0x19, 0xD6, 0x86, 0x11, 0x74, 0x19, 0x53, 0x19, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x29, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x8B, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x2A, 0x17, 0x21, 0xF7, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x12, 0x21, 0xB5, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x19, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x84, 0x29, 0x10, 0x29, + 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x87, 0x28, 0xEE, 0x28, 0xCD, 0x20, 0x0A, 0xA3, 0x96, 0xDC, 0xDA, 0xDC, 0x99, 0xDC, 0x98, 0xDC, 0x78, 0x03, 0xDC, 0x57, 0x02, 0xE4, 0x57, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x04, 0xDC, 0x57, 0x01, 0xDC, 0x36, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x36, 0x83, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x88, 0xDC, 0x58, 0xDC, 0x78, 0xDC, 0x79, 0xDC, 0xBA, 0xFE, 0x1F, 0x6A, 0x11, 0x30, 0x8C, 0x28, 0xCD, 0x28, 0xEE, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x85, 0x21, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x09, 0x74, 0x11, 0xB6, 0x01, 0x11, 0xB7, 0x02, 0x11, 0xF8, 0x8C, 0x11, 0xD8, 0x1A, 0x18, 0x19, 0xF8, 0x09, 0x75, 0x09, 0x34, 0x11, 0x33, 0x19, 0x52, 0x19, 0x31, 0x21, + 0x11, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x94, 0x21, 0x11, 0x19, 0x32, 0x11, 0x13, 0x19, 0xD6, 0x1A, 0x18, 0x11, 0xD6, 0x11, 0xB5, 0x11, 0x32, 0x19, 0x31, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x50, 0x29, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x50, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x30, 0x88, 0x21, 0x2F, 0x19, 0x2F, 0x11, 0x0F, 0x00, 0xCD, 0x54, 0x9B, 0x54, 0xFD, 0x34, 0x5A, 0x2C, 0x3A, 0x2C, 0x19, 0x01, 0x24, 0x19, 0x86, 0x1B, 0xD8, 0x23, 0xF8, 0x1B, 0xF8, 0x23, 0xF8, 0x23, 0xD8, 0x23, 0xF8, 0x2B, 0xF8, 0x01, 0x34, 0x19, 0x83, 0x3C, 0x39, 0x43, 0xD8, 0x01, 0x4F, 0x09, 0x50, 0x01, 0x11, 0x50, 0x01, 0x11, 0x70, 0x85, 0x01, 0x2F, 0x4B, 0xD9, 0x64, 0xFD, 0x4C, 0x7B, 0x34, 0x19, 0x23, 0xF8, 0x01, 0x2C, 0x19, 0x01, 0x3C, 0x9B, 0x88, 0x3C, 0x7A, + 0x23, 0x56, 0x01, 0x70, 0x01, 0x50, 0x01, 0x70, 0x01, 0x91, 0x0A, 0x94, 0x44, 0x9B, 0x34, 0x7A, 0x01, 0x2C, 0x39, 0x91, 0x23, 0xF9, 0x2C, 0x19, 0x2B, 0xF8, 0x34, 0x39, 0x3C, 0x5A, 0x4C, 0x5B, 0x0A, 0x12, 0x01, 0x0F, 0x01, 0x2F, 0x4C, 0x3A, 0x44, 0x3A, 0x33, 0xF9, 0x2C, 0x19, 0x24, 0x19, 0x1B, 0xD8, 0x24, 0x19, 0x1B, 0xF8, 0x24, 0x39, 0x01, 0x24, 0x19, 0x81, 0x1C, 0x18, 0x24, 0x19, 0x01, 0x1C, 0x18, 0x80, 0x1B, 0xF8, 0x01, 0x23, 0xF8, 0x89, 0x2C, 0x39, 0x34, 0x59, 0x3C, 0x5A, 0x44, 0x19, 0x01, 0x2F, 0x11, 0x2F, 0x19, 0x2F, 0x19, 0x30, 0x19, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x50, 0x01, 0x19, 0x50, 0x83, 0x11, 0x50, 0x09, 0x50, 0x01, 0x4F, 0x01, 0x2E, 0x01, 0x01, 0x0E, 0x02, 0x00, 0xEE, 0x01, 0x00, 0xCE, 0x82, 0x00, 0xEF, 0x11, 0x10, 0x19, 0x30, 0x05, 0x21, 0x30, 0x88, 0x21, 0x10, 0x21, 0x31, 0x21, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD7, 0x09, 0xF8, 0x09, 0xD9, 0x05, 0x01, 0xD9, 0x84, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xB7, 0x09, 0x96, 0x11, 0x75, 0x01, 0x11, 0x33, 0x80, 0x11, 0x32, 0x02, 0x19, 0x32, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x11, 0x08, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x32, 0x03, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x32, 0x02, 0x19, 0x11, 0x82, 0x19, 0x31, 0x19, 0x32, 0x19, 0x52, 0x02, 0x19, 0x32, 0x86, 0x11, 0x32, 0x19, 0x52, 0x11, 0x53, 0x11, 0x32, 0x09, 0x33, 0x11, 0x95, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x83, 0x19, 0x95, 0x11, 0x54, 0x11, 0x12, 0x11, 0x32, + 0x01, 0x19, 0x32, 0x8C, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF6, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x02, 0x19, 0x31, 0x03, 0x21, 0x31, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x05, 0x21, 0x10, 0x85, 0x29, 0x10, 0x20, 0xF0, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x92, 0x29, 0x50, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x1A, 0x19, 0x11, 0xF9, 0x19, 0xF9, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x76, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x85, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x19, 0x30, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x02, 0x19, 0x31, 0x81, 0x19, 0x32, 0x19, 0x11, 0x01, 0x19, 0x32, 0x80, 0x19, 0x11, 0x01, 0x19, 0x12, 0x84, 0x19, 0x11, 0x21, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x32, 0x91, 0x11, 0x12, 0x19, 0x32, 0x11, 0x53, + 0x09, 0x33, 0x09, 0x54, 0x11, 0x96, 0x11, 0xD7, 0x1A, 0x18, 0x1A, 0x19, 0x12, 0x18, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x54, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x86, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, + 0x06, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x89, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x87, 0x19, 0x2F, 0x11, 0x2F, 0x09, 0x2F, 0x01, 0x50, 0x3B, 0xB9, 0x33, 0xF9, 0x23, 0xD8, 0x23, 0xF9, 0x04, 0x1B, 0xD8, 0x84, 0x23, 0xD8, 0x33, 0xD9, 0x2B, 0x57, 0x01, 0x70, 0x01, 0x4F, 0x01, 0x09, 0x50, 0x8B, 0x01, 0x50, 0x01, 0xD2, 0x2B, 0xD9, 0x23, 0xF9, 0x1B, 0xD9, 0x1B, 0xF9, 0x2C, 0x1A, 0x2B, 0x98, 0x01, 0x4F, 0x09, 0x0E, 0x19, 0x2F, 0x19, 0x0F, 0x01, 0x21, 0x4F, 0x81, 0x19, 0x2F, 0x19, 0x50, 0x01, 0x11, 0x2F, 0x90, 0x01, 0x0F, 0x01, 0xB0, 0x2B, 0xF9, 0x1C, 0x19, 0x13, 0xF8, 0x13, 0xF9, 0x1B, 0xF9, 0x34, 0x5B, 0x0A, + 0x12, 0x01, 0x2F, 0x09, 0x70, 0x11, 0x70, 0x19, 0x50, 0x19, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x06, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0x95, 0x2A, 0x38, 0x2A, 0x17, 0x11, 0x74, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x05, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x33, 0x21, 0xB5, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x21, + 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x04, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x8B, 0x29, 0x50, 0x29, 0x30, 0x29, 0x0F, 0x28, 0xCE, 0x20, 0x8C, 0x28, 0x2A, 0xCC, 0x9A, 0xDC, 0xDA, 0xDC, 0x99, 0xDC, 0x98, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x82, 0xDC, 0x36, 0xE4, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x81, 0xDC, 0x36, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x04, 0xDC, 0x57, 0x80, 0xDC, 0x78, 0x01, 0xDC, 0x99, 0x86, 0xD4, 0xBA, 0x61, 0x8F, 0x28, 0x6B, 0x30, 0xEE, 0x28, 0xEE, 0x20, 0xEE, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x10, 0x06, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x87, 0x21, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x11, 0xD6, 0x19, 0xF7, 0x11, 0xB7, 0x09, 0xB7, 0x02, 0x11, + 0xD7, 0x88, 0x11, 0xB7, 0x11, 0xF8, 0x1A, 0x19, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x75, 0x11, 0x33, 0x19, 0x32, 0x21, 0x11, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x88, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x11, 0xF7, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x85, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x21, 0x2F, 0x19, 0x2F, 0x11, 0x0F, 0x01, 0x0E, 0x44, 0x5A, 0x34, 0x5A, 0x24, 0x39, 0x1C, 0x19, 0x13, 0xF8, 0x14, 0x19, 0x02, 0x13, 0xF8, 0x01, 0x1C, 0x18, 0x02, 0x1B, 0xF8, 0x85, 0x23, 0xF8, 0x2B, 0xD8, 0x33, 0xF8, 0x3B, 0xD8, 0x01, 0x4F, 0x09, 0x50, 0x03, 0x11, 0x50, 0x85, 0x09, 0x50, 0x01, 0x90, 0x4C, 0x1A, 0x44, 0x5A, 0x2C, 0x3A, 0x23, 0xF9, 0x01, 0x13, 0xB8, 0x8A, 0x1B, 0xF8, + 0x1C, 0x18, 0x24, 0x39, 0x23, 0xF8, 0x13, 0x16, 0x01, 0xF1, 0x01, 0xD1, 0x02, 0x33, 0x23, 0xF9, 0x24, 0x19, 0x1C, 0x19, 0x02, 0x13, 0xF8, 0x80, 0x1B, 0xD8, 0x01, 0x23, 0xF8, 0x8C, 0x3C, 0x3A, 0x33, 0x98, 0x01, 0x90, 0x01, 0x2F, 0x01, 0x50, 0x3B, 0xF9, 0x33, 0xF9, 0x2C, 0x19, 0x23, 0xF8, 0x1B, 0xD8, 0x1B, 0xF9, 0x1C, 0x19, 0x14, 0x18, 0x01, 0x14, 0x19, 0x80, 0x14, 0x39, 0x02, 0x14, 0x18, 0x81, 0x13, 0xF8, 0x14, 0x18, 0x01, 0x1B, 0xF8, 0x85, 0x24, 0x18, 0x2C, 0x18, 0x3C, 0x5A, 0x44, 0x19, 0x01, 0x0E, 0x11, 0x50, 0x02, 0x19, 0x30, 0x01, 0x21, 0x30, 0x90, 0x21, 0x50, 0x19, 0x50, 0x11, 0x50, 0x09, 0x70, 0x01, 0x70, 0x01, 0xD0, 0x0A, 0x93, 0x23, 0x76, 0x34, 0x18, 0x3C, 0x7A, 0x44, 0x7B, 0x4C, 0x9B, 0x4C, 0x7B, 0x54, 0x9C, 0x3B, 0x78, 0x01, 0x30, 0x11, 0x10, 0x01, 0x19, 0x30, 0x03, 0x21, 0x30, 0x88, 0x21, 0x10, 0x19, 0x11, 0x19, 0x32, 0x19, 0x33, 0x19, 0xB5, 0x19, 0xF7, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xD9, 0x02, 0x01, 0xDA, 0x8C, 0x01, 0xFA, 0x01, 0xDA, 0x09, 0xFA, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xB7, 0x09, 0x76, 0x09, 0x55, 0x09, 0x34, 0x09, 0x12, 0x11, 0x12, 0x11, 0x32, 0x01, 0x11, 0x12, 0x80, 0x19, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x12, 0x80, 0x11, 0x11, 0x01, 0x19, 0x12, 0x03, 0x11, 0x12, 0x81, 0x19, 0x12, 0x11, 0x12, 0x03, 0x19, 0x12, 0x01, 0x11, 0x12, 0x01, 0x19, 0x32, 0x80, 0x11, 0x12, 0x01, 0x19, 0x32, 0x06, 0x11, 0x12, 0x8B, 0x09, 0x12, 0x09, 0x53, 0x11, 0xB5, 0x21, 0xF7, 0x19, 0xF7, + 0x19, 0xB6, 0x11, 0x74, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x12, 0x01, 0x19, 0x32, 0x88, 0x19, 0x12, 0x11, 0x33, 0x19, 0x54, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x74, 0x01, 0x11, 0x12, 0x02, 0x19, 0x31, 0x82, 0x19, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x07, 0x21, 0x10, 0x07, 0x21, 0x30, 0x05, 0x21, 0x10, 0x02, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x19, 0x31, 0x84, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xD8, 0x01, 0x19, 0xF9, 0x86, 0x11, 0xD8, 0x19, 0xD8, 0x19, 0xD7, 0x11, 0x96, 0x11, 0x74, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x19, 0x30, 0x21, 0x30, 0x19, 0x30, 0x19, 0x10, 0x01, 0x19, 0x30, 0x03, 0x19, 0x31, 0x81, 0x19, 0x11, 0x21, 0x11, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x82, 0x21, 0x11, 0x19, 0x11, 0x19, 0x10, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x09, 0x19, 0x31, 0x86, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x55, 0x11, 0x96, 0x11, 0xD7, 0x12, 0x18, 0x01, 0x1A, 0x19, 0x86, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x55, 0x11, 0x33, 0x11, 0x12, + 0x11, 0x11, 0x19, 0x31, 0x03, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, + 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x87, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x91, 0x21, 0x50, 0x19, 0x2F, 0x11, 0x2F, 0x01, 0x2F, 0x22, 0xB5, 0x3B, 0xF9, 0x23, 0xB8, 0x1B, 0xB8, 0x1B, 0xD9, 0x13, 0xD9, 0x13, 0xD8, 0x13, 0xB8, 0x13, 0xD8, 0x1B, 0xF9, 0x1B, 0xD8, 0x23, 0xB8, 0x33, 0xD8, 0x1A, 0x74, 0x01, 0x01, 0x4F, 0x84, 0x09, 0x70, 0x01, 0x50, 0x01, 0xD2, 0x33, 0xD9, 0x23, 0xD9, 0x01, 0x23, 0xF9, 0x83, 0x23, 0xD9, 0x2B, 0x98, 0x01, 0x4F, 0x08, 0xEE, 0x01, 0x19, 0x2F, 0x89, 0x21, 0x2F, 0x21, 0x50, 0x21, 0x4F, 0x19, 0x50, 0x11, 0x0F, 0x11, 0x2F, 0x09, 0x2F, 0x01, 0x70, 0x2B, 0xF9, 0x1B, 0xD9, 0x01, 0x1B, 0xF9, 0x86, 0x23, 0xF9, 0x3C, 0x3A, 0x01, 0xB1, 0x01, 0x0F, 0x09, 0x70, 0x11, + 0x50, 0x19, 0x50, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x88, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x83, 0x11, 0x33, 0x11, 0x53, 0x11, 0x95, 0x21, 0xF6, 0x01, 0x22, 0x17, 0x85, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x33, 0x19, 0x12, 0x18, 0xF1, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x31, 0x19, 0x53, 0x11, 0x33, 0x19, 0x75, 0x01, 0x2A, 0x17, 0x84, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, + 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x87, 0x19, 0x32, 0x19, 0x33, 0x11, 0x13, 0x21, 0xB5, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x01, 0x21, 0x52, 0x80, 0x21, 0x51, 0x01, 0x21, 0x30, 0x06, 0x29, 0x30, 0x80, 0x29, 0x10, 0x05, 0x29, 0x30, 0x87, 0x29, 0x0F, 0x28, 0xCE, 0x20, 0x4B, 0x48, 0xED, 0xDC, 0xFC, 0xDC, 0xBA, 0xDC, 0x98, 0xDC, 0x78, 0x03, 0xDC, 0x57, 0x83, 0xDC, 0x37, 0xDC, 0x36, 0xDC, 0x37, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x05, 0xDC, 0x57, 0x86, 0xDC, 0x36, 0xE4, 0x57, 0xDC, 0x36, 0xDC, 0x37, 0xE4, 0x57, 0xE4, 0x77, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x88, 0xDC, 0x58, 0xDC, 0x78, 0xD4, 0x79, 0xCC, 0x79, 0x8A, 0xB3, 0x28, 0x09, 0x30, 0xCD, 0x28, 0xED, 0x20, 0xEE, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x04, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x88, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x85, 0x21, 0x11, 0x19, + 0x11, 0x11, 0x33, 0x11, 0x95, 0x19, 0xF7, 0x11, 0xF8, 0x02, 0x09, 0x96, 0x02, 0x09, 0x76, 0x87, 0x09, 0x96, 0x19, 0xF8, 0x1A, 0x19, 0x11, 0xD8, 0x19, 0x96, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x8B, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0xD6, 0x19, 0xF7, 0x11, 0xD6, 0x11, 0x94, 0x11, 0x31, 0x19, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x85, 0x19, 0x2F, 0x09, 0x0F, 0x01, 0x0E, 0x3C, 0x3A, 0x24, 0x19, 0x13, 0xF8, 0x02, 0x14, 0x19, 0x01, 0x0C, 0x18, 0x80, 0x0B, 0xF8, 0x01, 0x14, 0x18, 0x80, 0x13, 0xF8, 0x01, 0x1B, 0xF8, 0x85, 0x23, 0xF8, 0x2B, 0xF8, 0x33, 0xF8, 0x33, 0xB8, 0x01, 0x70, 0x09, 0x50, 0x02, 0x11, 0x50, 0x01, 0x11, 0x70, 0x84, 0x01, 0x50, 0x12, 0x53, 0x44, 0x5B, 0x23, 0xF9, 0x1B, 0xF8, 0x01, 0x13, 0xD8, 0x89, + 0x0B, 0xD8, 0x14, 0x18, 0x14, 0x19, 0x1C, 0x18, 0x1B, 0xD8, 0x02, 0xB4, 0x02, 0x32, 0x0B, 0x16, 0x13, 0xD8, 0x14, 0x18, 0x02, 0x0B, 0xF8, 0x80, 0x14, 0x19, 0x01, 0x1B, 0xF8, 0x88, 0x2C, 0x19, 0x3C, 0x3A, 0x12, 0x74, 0x01, 0x70, 0x01, 0x4F, 0x01, 0x90, 0x3B, 0xF9, 0x2B, 0xD9, 0x23, 0xD8, 0x01, 0x1B, 0xF8, 0x01, 0x13, 0xF8, 0x80, 0x0C, 0x19, 0x01, 0x0B, 0xF8, 0x86, 0x0C, 0x19, 0x0C, 0x18, 0x0C, 0x19, 0x0B, 0xF8, 0x0C, 0x18, 0x14, 0x18, 0x13, 0xF8, 0x01, 0x1C, 0x19, 0x84, 0x24, 0x39, 0x34, 0x5A, 0x3B, 0xD9, 0x01, 0x2F, 0x11, 0x30, 0x01, 0x19, 0x30, 0x02, 0x21, 0x30, 0x93, 0x21, 0x50, 0x11, 0x50, 0x09, 0x4F, 0x12, 0x12, 0x3B, 0xD8, 0x3C, 0x5A, 0x3C, 0x9A, 0x34, 0x9A, 0x24, 0x79, 0x24, 0x59, 0x24, 0x39, 0x2C, 0x7A, 0x3C, 0x7A, 0x44, 0xBC, 0x44, 0x1A, 0x01, 0x30, 0x09, 0x30, 0x11, 0x30, 0x19, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x88, 0x21, 0x10, 0x21, 0x31, 0x19, 0x12, 0x11, 0x33, 0x19, 0x95, 0x11, 0xB7, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0xD9, 0x05, 0x01, 0xDA, 0x88, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xB7, 0x09, 0x96, 0x11, 0x75, 0x09, 0x34, 0x11, 0x53, 0x05, 0x11, 0x33, 0x80, 0x11, 0x32, 0x01, 0x11, 0x33, 0x09, 0x11, 0x32, 0x81, 0x11, 0x33, 0x11, 0x12, 0x07, 0x11, 0x32, 0x82, 0x11, 0x12, 0x11, 0x32, 0x11, 0x12, 0x01, 0x11, 0x13, 0x8C, 0x09, 0x12, 0x09, 0x13, 0x11, 0x33, 0x11, 0x34, 0x19, 0xB5, 0x2A, 0x38, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x03, 0x19, 0x12, + 0x83, 0x11, 0x12, 0x11, 0x34, 0x19, 0x75, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x86, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x19, 0x30, 0x04, 0x21, 0x30, 0x06, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x05, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x8E, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x19, 0x74, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x01, 0x19, 0xF8, 0x87, 0x19, 0xF9, 0x19, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x07, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x10, 0x02, 0x21, 0x31, 0x87, 0x21, 0x32, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x95, 0x11, 0xB6, 0x11, 0xD7, 0x12, 0x18, 0x01, 0x1A, 0x19, 0x87, 0x11, 0xD8, 0x11, 0x96, 0x09, 0x55, 0x11, 0x34, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x21, 0x51, 0x01, 0x29, 0x51, + 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, + 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x87, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x05, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x8A, 0x21, 0x4F, 0x19, 0x2F, 0x09, 0x0F, 0x09, 0x70, 0x43, 0xD9, 0x2B, 0x98, 0x1B, 0xB9, 0x1B, 0xF9, 0x13, 0xF9, 0x13, 0xD9, 0x13, 0xF9, 0x02, 0x13, 0xD9, 0x8A, 0x1B, 0xD8, 0x1B, 0xB8, 0x23, 0x77, 0x33, 0x57, 0x01, 0x90, 0x01, 0x4F, 0x01, 0x50, 0x01, 0x30, 0x01, 0xB1, 0x33, 0xB9, 0x2B, 0xD9, 0x01, 0x23, 0xF9, 0x84, 0x23, 0xD9, 0x2B, 0x78, 0x01, 0x2F, 0x08, 0xEE, 0x19, 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x19, 0x2F, 0x8E, 0x11, 0x2F, 0x01, 0x0F, 0x01, 0x70, 0x33, 0xF9, 0x1B, 0xF9, 0x24, 0x1A, 0x23, 0xF9, 0x23, 0xD9, 0x33, 0xFA, 0x01, 0x50, 0x01, 0x0F, 0x11, 0x70, 0x19, 0x70, 0x19, 0x50, 0x21, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, + 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x90, 0x19, 0x53, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x50, 0x03, 0x21, 0x30, 0x01, 0x19, 0x31, 0x82, 0x19, 0x53, 0x11, 0x53, 0x19, 0x95, 0x01, 0x2A, 0x17, 0x82, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x02, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x11, 0x19, 0x12, 0x19, 0x32, 0x11, 0x13, 0x21, 0xB5, 0x01, 0x21, 0xF6, 0x82, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x51, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x0B, 0x29, 0x30, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x31, 0x0E, + 0x28, 0x4B, 0x82, 0x93, 0xDC, 0xDB, 0x01, 0xDC, 0x99, 0x86, 0xDC, 0x78, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0xE4, 0x57, 0x02, 0xDC, 0x36, 0x80, 0xE4, 0x57, 0x04, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x81, 0xDC, 0x36, 0xE4, 0x57, 0x01, 0xDC, 0x36, 0x82, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x36, 0x02, 0xDC, 0x37, 0x80, 0xDC, 0x57, 0x01, 0xDC, 0x36, 0x81, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x58, 0x87, 0xD4, 0x78, 0xD4, 0x99, 0xD4, 0xBA, 0x51, 0x0D, 0x20, 0x2A, 0x28, 0xCD, 0x29, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x06, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x08, 0x29, 0x0F, 0x87, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x30, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x31, 0x88, 0x19, 0x32, 0x11, 0x54, 0x19, 0xF7, 0x19, 0xF8, 0x11, 0xD8, 0x09, 0x76, 0x09, 0x75, 0x09, 0x55, 0x01, 0x35, 0x01, 0x01, 0x34, 0x86, 0x09, 0x55, 0x11, 0xB7, 0x11, 0xF8, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x34, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, + 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0xB5, 0x01, 0x19, 0xF7, 0x84, 0x11, 0x94, 0x11, 0x11, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x19, 0x2F, 0x86, 0x09, 0x0E, 0x01, 0x2E, 0x3C, 0x5A, 0x1C, 0x19, 0x14, 0x19, 0x14, 0x39, 0x0C, 0x19, 0x03, 0x0C, 0x18, 0x81, 0x0B, 0xF8, 0x14, 0x18, 0x01, 0x13, 0xF8, 0x86, 0x1B, 0xF8, 0x23, 0xF8, 0x23, 0xD8, 0x33, 0xF8, 0x33, 0x97, 0x01, 0x50, 0x09, 0x50, 0x02, 0x11, 0x50, 0x8A, 0x11, 0x70, 0x11, 0x50, 0x09, 0x50, 0x01, 0x70, 0x33, 0x98, 0x2C, 0x19, 0x1B, 0xF9, 0x13, 0xF8, 0x14, 0x19, 0x0B, 0xD8, 0x0B, 0xF8, 0x01, 0x0C, 0x18, 0x86, 0x14, 0x18, 0x0B, 0xB7, 0x03, 0x15, 0x0B, 0xB7, 0x14, 0x18, 0x0B, 0xF8, 0x0C, 0x19, 0x01, 0x0B, 0xF8, 0x85, 0x13, 0xF8, 0x1B, 0xF9, 0x23, 0xF9, 0x2C, 0x19, 0x23, 0x57, 0x01, 0xF2, 0x01, 0x01, 0x4F, 0x87, 0x01, + 0xB1, 0x3B, 0xF9, 0x23, 0xB8, 0x23, 0xD8, 0x1B, 0xD8, 0x13, 0xD8, 0x13, 0xF8, 0x14, 0x19, 0x02, 0x0C, 0x19, 0x80, 0x04, 0x18, 0x02, 0x0C, 0x19, 0x01, 0x0B, 0xF8, 0x01, 0x14, 0x19, 0x85, 0x1B, 0xF8, 0x23, 0xF8, 0x34, 0x39, 0x44, 0x19, 0x01, 0x2F, 0x11, 0x50, 0x01, 0x19, 0x30, 0x89, 0x21, 0x50, 0x21, 0x30, 0x19, 0x30, 0x19, 0x50, 0x11, 0x50, 0x01, 0x2F, 0x3B, 0xB8, 0x44, 0x7B, 0x24, 0x18, 0x1C, 0x18, 0x01, 0x14, 0x18, 0x88, 0x0B, 0xF8, 0x0B, 0xD8, 0x14, 0x18, 0x24, 0x19, 0x34, 0x5A, 0x33, 0xB9, 0x01, 0x70, 0x09, 0x50, 0x11, 0x30, 0x01, 0x19, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x87, 0x19, 0x32, 0x11, 0x33, 0x21, 0xD7, 0x19, 0xF7, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x02, 0x01, 0xDA, 0x80, 0x09, 0xFA, 0x01, 0x09, 0xD9, 0x84, 0x11, 0xD8, 0x11, 0xB8, 0x11, 0x96, 0x11, 0xB6, 0x11, 0x95, 0x02, 0x19, 0x95, 0x01, 0x19, 0x94, 0x84, 0x19, 0x95, 0x19, 0x94, 0x19, 0x74, 0x19, 0x94, 0x19, 0x74, 0x01, 0x19, 0x94, 0x02, 0x19, 0x74, 0x01, 0x19, 0x94, 0x04, 0x19, 0x74, 0x01, 0x19, 0x94, 0x03, 0x19, 0x74, 0x02, 0x19, 0x94, 0x01, 0x19, 0x95, 0x81, 0x21, 0xB5, 0x21, 0xD5, 0x02, 0x21, 0xD6, 0x85, 0x21, 0xF6, 0x19, 0xF6, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x33, 0x01, 0x19, 0x32, 0x03, 0x19, 0x12, 0x89, 0x11, 0x13, 0x11, 0x34, 0x11, 0x55, 0x19, 0x96, 0x21, 0xF8, 0x19, 0xD7, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x04, 0x21, 0x30, 0x82, + 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x91, 0x19, 0x31, 0x21, 0x52, 0x19, 0x32, 0x19, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x19, 0xF8, 0x11, 0xD9, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x21, 0x51, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x19, 0x10, 0x02, 0x21, 0x30, 0x93, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xF8, 0x1A, 0x39, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x10, 0xF1, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x21, + 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x0A, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, + 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x88, 0x21, 0x4F, 0x19, 0x2F, 0x09, 0x0F, 0x1A, 0x13, 0x44, 0x1A, 0x2B, 0xB9, 0x1B, 0xD9, 0x13, 0xD9, 0x13, 0xB9, 0x01, 0x13, 0xD9, 0x87, 0x13, 0xF9, 0x13, 0xD9, 0x1B, 0xF9, 0x1B, 0xD9, 0x23, 0xD9, 0x2B, 0x98, 0x33, 0x78, 0x09, 0xD1, 0x01, 0x01, 0x2F, 0x8A, 0x01, 0x30, 0x01, 0xB1, 0x33, 0xD9, 0x34, 0x1A, 0x2C, 0x1A, 0x23, 0xFA, 0x2B, 0xF9, 0x2B, 0x78, 0x01, 0x2F, 0x08, 0xEE, 0x19, 0x4F, 0x04, 0x21, 0x2F, 0x85, 0x19, 0x2F, 0x11, 0x2F, 0x01, 0x0F, 0x01, 0x70, 0x33, 0xF9, 0x23, 0xD9, 0x01, 0x23, 0xF9, 0x87, 0x2B, 0xF9, 0x33, 0xD9, 0x01, 0x2F, 0x01, 0x0F, 0x11, 0x70, 0x19, 0x50, 0x19, 0x30, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x82, + 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x11, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x19, 0x54, 0x19, 0x53, 0x19, 0x11, 0x19, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x84, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x01, 0x2A, 0x17, 0x84, 0x19, 0x94, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x87, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x88, 0x19, 0x12, 0x19, 0x32, 0x11, 0x13, 0x21, 0xB5, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x94, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x51, 0x02, 0x21, 0x30, 0x80, 0x29, 0x50, 0x04, 0x29, 0x30, 0x80, 0x29, 0x50, 0x04, 0x29, 0x30, 0x86, 0x29, 0x2F, 0x29, 0x0E, 0x31, 0x0E, 0x30, 0x6B, 0xAB, 0xD8, 0xD4, 0xBA, 0xDC, 0x99, 0x01, 0xDC, 0x78, 0x01, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, + 0x36, 0x85, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x02, 0xDC, 0x36, 0x85, 0xDC, 0x37, 0xE4, 0x37, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x58, 0x80, 0xDC, 0x78, 0x01, 0xD4, 0x79, 0x89, 0x92, 0xF3, 0x20, 0x08, 0x28, 0x8B, 0x30, 0xEE, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x19, 0x32, 0x11, 0x75, 0x01, 0x19, 0xF8, 0x91, 0x11, 0xD8, 0x09, 0x76, 0x09, 0x55, 0x09, 0x35, 0x01, 0x34, 0x09, 0x34, 0x01, 0x34, 0x01, 0x55, 0x09, 0x76, 0x11, 0xF8, 0x1A, 0x19, 0x19, 0xD7, 0x11, 0x55, 0x11, 0x12, 0x21, 0x31, 0x21, 0x11, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, + 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x89, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x11, 0xF6, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x32, 0x19, 0x31, 0x19, 0x10, 0x04, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x8A, 0x19, 0x30, 0x11, 0x2F, 0x09, 0x0E, 0x01, 0x2F, 0x34, 0x5A, 0x1C, 0x19, 0x0C, 0x19, 0x0C, 0x39, 0x0C, 0x19, 0x0C, 0x39, 0x0C, 0x18, 0x03, 0x0B, 0xF8, 0x82, 0x0B, 0xD8, 0x1B, 0xF8, 0x1B, 0xD8, 0x01, 0x23, 0xD8, 0x85, 0x33, 0xF8, 0x2B, 0x77, 0x01, 0x4F, 0x09, 0x50, 0x11, 0x50, 0x19, 0x70, 0x02, 0x11, 0x50, 0x84, 0x09, 0x50, 0x01, 0x50, 0x12, 0x53, 0x34, 0x5A, 0x1B, 0xF9, 0x01, 0x14, 0x19, 0x05, 0x0C, 0x18, 0x8C, 0x03, 0xD7, 0x0B, 0xF8, 0x0C, 0x18, 0x03, 0xF8, 0x0C, 0x39, 0x0C, 0x18, 0x0B, 0xF8, 0x13, 0xF8, 0x1C, 0x19, 0x23, 0xF9, 0x34, 0x19, 0x02, 0x12, 0x01, 0x90, 0x01, 0x01, 0x2F, 0x89, 0x01, 0xB1, 0x44, 0x1A, 0x2B, 0xB8, 0x23, 0xD8, 0x1B, 0xD8, 0x13, 0xF8, 0x14, 0x19, 0x0B, + 0xF8, 0x0C, 0x18, 0x0C, 0x39, 0x01, 0x04, 0x19, 0x81, 0x03, 0xF8, 0x04, 0x19, 0x01, 0x0C, 0x19, 0x88, 0x0B, 0xF8, 0x13, 0xF9, 0x13, 0xF8, 0x1B, 0xF9, 0x23, 0xF9, 0x34, 0x19, 0x43, 0xF9, 0x01, 0x2F, 0x11, 0x30, 0x01, 0x19, 0x30, 0x96, 0x21, 0x30, 0x21, 0x50, 0x19, 0x30, 0x19, 0x50, 0x11, 0x50, 0x01, 0x2F, 0x33, 0xB8, 0x34, 0x39, 0x1C, 0x18, 0x14, 0x18, 0x0B, 0xF8, 0x03, 0xF8, 0x0C, 0x18, 0x0C, 0x19, 0x14, 0x39, 0x1C, 0x19, 0x2C, 0x5A, 0x2B, 0xB8, 0x01, 0x70, 0x09, 0x30, 0x11, 0x50, 0x11, 0x30, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x87, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0xB5, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xD9, 0x06, 0x01, 0xDA, 0x87, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xF9, 0x11, 0xD9, 0x11, 0xB8, 0x11, 0xD7, 0x22, 0x38, 0x22, 0x17, 0x03, 0x2A, 0x17, 0x82, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x37, 0x02, 0x2A, 0x17, 0x80, 0x32, 0x37, 0x01, 0x2A, 0x37, 0x01, 0x2A, 0x17, 0x80, 0x2A, 0x16, 0x03, 0x2A, 0x17, 0x82, 0x2A, 0x37, 0x2A, 0x17, 0x32, 0x37, 0x05, 0x2A, 0x17, 0x83, 0x29, 0xF6, 0x2A, 0x17, 0x29, 0xF6, 0x2A, 0x17, 0x03, 0x21, 0xF6, 0x02, 0x19, 0xB5, 0x83, 0x19, 0x94, 0x19, 0x74, 0x19, 0x33, 0x11, 0x12, 0x03, 0x19, 0x12, 0x01, 0x19, 0x33, 0x82, 0x11, 0x34, 0x11, 0x55, 0x19, 0xB7, 0x01, 0x21, 0xF8, 0x86, 0x21, 0xF7, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x51, 0x19, 0x30, 0x05, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, + 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x21, 0x52, 0x19, 0x32, 0x11, 0x33, 0x11, 0x55, 0x11, 0x96, 0x11, 0xB7, 0x19, 0xD8, 0x01, 0x11, 0xF9, 0x86, 0x19, 0xF9, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x09, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x04, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD8, 0x01, 0x1A, 0x39, 0x87, 0x1A, 0x19, 0x11, 0xD8, 0x11, 0x97, 0x11, 0x55, 0x11, 0x34, 0x11, 0x13, 0x18, 0xF2, 0x19, 0x11, 0x01, 0x21, 0x11, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, + 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x06, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, + 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x86, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x86, 0x21, 0x4F, 0x19, 0x2F, 0x00, 0xEE, 0x2A, 0xB5, 0x4C, 0x5B, 0x2B, 0xD9, 0x23, 0xFA, 0x03, 0x13, 0xD9, 0x80, 0x13, 0xF9, 0x01, 0x13, 0xD9, 0x85, 0x1B, 0xD9, 0x1B, 0xB8, 0x2B, 0xB8, 0x3B, 0x98, 0x09, 0xD1, 0x01, 0x2F, 0x01, 0x01, 0x30, 0x82, 0x01, 0xB2, 0x33, 0xDA, 0x23, 0xB9, 0x01, 0x23, 0xD9, 0x99, 0x2B, 0xD9, 0x33, 0xB9, 0x01, 0x4F, 0x09, 0x0E, 0x19, 0x2F, 0x21, 0x2F, 0x21, 0x4F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x19, 0x50, 0x11, 0x2F, 0x01, 0x0F, 0x01, 0x70, 0x33, 0xD9, 0x2B, 0xF9, 0x23, 0xB9, 0x23, 0xD9, 0x2B, 0xF9, 0x44, 0x3A, 0x01, 0x70, 0x09, 0x50, 0x11, 0x50, 0x19, 0x30, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, + 0x10, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0x74, 0x19, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xB5, 0x19, 0x95, 0x19, 0x94, 0x19, 0x32, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x32, 0x01, 0x11, 0x33, 0x80, 0x19, 0x95, 0x01, 0x2A, 0x17, 0x84, 0x19, 0x74, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x06, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x11, 0x01, 0x19, 0x32, 0x81, 0x11, 0x33, 0x19, 0xB5, 0x01, 0x21, 0xD6, 0x86, 0x19, 0x74, 0x11, 0x32, 0x19, 0x52, 0x21, 0x52, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x0C, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x85, 0x30, 0xEE, 0x40, 0xCD, 0xD4, 0xBB, 0xDC, 0x9A, 0xDC, 0x99, 0xDC, 0x78, 0x01, 0xDC, 0x58, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x36, 0x80, 0xDC, 0x37, 0x04, 0xDC, 0x57, 0x88, 0xDC, 0x36, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x56, 0xE4, 0x56, 0xDC, 0x36, 0xE4, 0x37, 0xDC, 0x16, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x57, + 0x01, 0xDC, 0x37, 0x8D, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x58, 0xDC, 0x99, 0xD4, 0x99, 0xC4, 0x39, 0x59, 0x4E, 0x28, 0x2A, 0x28, 0x8C, 0x30, 0xEE, 0x31, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x30, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x05, 0x29, 0x30, 0x01, 0x29, 0x10, 0x06, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x95, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x75, 0x1A, 0x18, 0x1A, 0x39, 0x11, 0xF8, 0x09, 0x76, 0x01, 0x35, 0x09, 0x54, 0x09, 0x34, 0x01, 0x34, 0x09, 0x54, 0x09, 0x55, 0x09, 0x76, 0x1A, 0x19, 0x22, 0x3A, 0x19, 0xD8, 0x11, 0x34, 0x10, 0xF2, 0x21, 0x31, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, + 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x8C, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xF6, 0x11, 0x94, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x04, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x9B, 0x19, 0x30, 0x11, 0x2F, 0x00, 0xEE, 0x01, 0x4F, 0x3C, 0x9B, 0x1C, 0x39, 0x14, 0x39, 0x0C, 0x39, 0x03, 0xF8, 0x04, 0x18, 0x03, 0xF8, 0x0C, 0x18, 0x0B, 0xF8, 0x14, 0x19, 0x1C, 0x39, 0x24, 0x5A, 0x24, 0x19, 0x2C, 0x39, 0x34, 0x5A, 0x3C, 0x5A, 0x4C, 0x9B, 0x3B, 0xB8, 0x01, 0x2F, 0x11, 0x70, 0x19, 0x50, 0x11, 0x2F, 0x19, 0x30, 0x19, 0x50, 0x01, 0x11, 0x50, 0x88, 0x01, 0x30, 0x01, 0x4F, 0x23, 0x97, 0x24, 0x39, 0x14, 0x19, 0x0C, 0x19, 0x0C, 0x18, 0x0C, 0x19, 0x03, 0xF8, 0x01, 0x04, 0x18, 0x81, 0x0C, 0x39, 0x03, 0xF8, 0x02, 0x04, 0x18, 0x99, 0x0C, 0x39, 0x0C, 0x19, 0x0C, 0x18, 0x14, 0x19, 0x1B, 0xF9, 0x2C, 0x1A, 0x23, 0x37, 0x01, 0x70, 0x01, 0x4F, 0x01, 0x0E, 0x01, 0x0F, 0x09, 0xD1, 0x54, 0x5B, 0x3C, 0x1A, 0x33, 0xF9, 0x2C, 0x39, 0x1C, 0x19, 0x13, 0xF8, 0x0C, 0x19, 0x0C, 0x39, 0x03, 0xF8, 0x04, 0x19, 0x04, 0x18, 0x04, 0x19, 0x03, 0xF8, 0x03, 0xF9, 0x01, 0x0B, 0xF9, 0x86, 0x14, 0x19, 0x1C, 0x39, 0x24, 0x3A, 0x34, + 0x3A, 0x44, 0x5B, 0x54, 0x3A, 0x09, 0x2F, 0x01, 0x19, 0x50, 0x81, 0x19, 0x30, 0x21, 0x30, 0x01, 0x19, 0x30, 0x88, 0x19, 0x50, 0x11, 0x2F, 0x01, 0x0E, 0x3B, 0xD8, 0x34, 0x5A, 0x1C, 0x18, 0x0C, 0x18, 0x0B, 0xF8, 0x0C, 0x39, 0x01, 0x0C, 0x18, 0x88, 0x0B, 0xF9, 0x14, 0x19, 0x24, 0x3A, 0x2B, 0xF9, 0x01, 0x50, 0x09, 0x50, 0x11, 0x50, 0x19, 0x50, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x87, 0x11, 0x33, 0x11, 0xB5, 0x11, 0xD7, 0x09, 0xD7, 0x01, 0xF9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xB9, 0x03, 0x01, 0xBA, 0x81, 0x09, 0xDA, 0x09, 0xFA, 0x01, 0x09, 0xD9, 0x82, 0x11, 0xD8, 0x11, 0xB7, 0x19, 0xB7, 0x03, 0x21, 0xF7, 0x02, 0x29, 0xF7, 0x01, 0x2A, 0x17, 0x01, 0x29, 0xF6, 0x81, 0x2A, 0x17, 0x2A, 0x16, 0x04, 0x29, 0xF6, 0x80, 0x29, 0xD6, 0x01, 0x29, 0xF6, 0x81, 0x21, 0xF6, 0x2A, 0x16, 0x01, 0x29, 0xF6, 0x03, 0x21, 0xF6, 0x07, 0x21, 0xD6, 0x81, 0x21, 0xF6, 0x21, 0xD5, 0x01, 0x21, 0xB5, 0x83, 0x19, 0x74, 0x19, 0x53, 0x19, 0x32, 0x11, 0x11, 0x01, 0x19, 0x11, 0x01, 0x19, 0x12, 0x84, 0x19, 0x32, 0x11, 0x13, 0x11, 0x34, 0x11, 0x55, 0x19, 0xB7, 0x01, 0x21, 0xF8, 0x83, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x02, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, + 0x86, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x87, 0x21, 0x11, 0x19, 0x11, 0x19, 0x33, 0x19, 0x54, 0x11, 0x55, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xD8, 0x01, 0x11, 0xF9, 0x87, 0x11, 0xF8, 0x11, 0xB7, 0x09, 0x76, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x09, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x01, 0x1A, 0x19, 0x87, 0x11, 0xF9, 0x11, 0xB8, 0x11, 0x97, 0x11, 0x55, 0x11, 0x34, 0x19, 0x33, 0x18, 0xF2, 0x19, 0x11, 0x01, 0x21, 0x11, 0x03, 0x21, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, + 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, + 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x84, 0x19, 0x2F, 0x00, 0xCE, 0x2A, 0x95, 0x4C, 0x5B, 0x2B, 0xDA, 0x01, 0x1B, 0xD9, 0x01, 0x13, 0xD9, 0x80, 0x13, 0xFA, 0x01, 0x1B, 0xFA, 0x85, 0x13, 0xD9, 0x1B, 0xD9, 0x23, 0xB8, 0x2B, 0xB8, 0x33, 0x57, 0x11, 0xF2, 0x02, 0x01, 0x2F, 0x89, 0x01, 0xB1, 0x3B, 0xDA, 0x23, 0x99, 0x23, 0xB9, 0x23, 0xD9, 0x2B, 0xFA, 0x33, 0xB9, 0x01, 0x4F, 0x08, 0xEE, 0x19, 0x2F, 0x02, 0x21, 0x2F, 0x8F, 0x19, 0x0F, 0x21, 0x2F, 0x19, 0x50, 0x11, 0x2F, 0x01, 0x0F, 0x09, 0xB1, 0x33, 0xD9, 0x2B, 0xB9, 0x23, 0xD9, 0x2B, 0xD9, 0x33, 0xFA, 0x44, 0x1A, 0x01, 0x70, 0x09, 0x2F, 0x11, 0x50, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8D, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xD6, 0x21, 0xD6, 0x19, 0x94, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x31, 0x19, 0x31, + 0x19, 0x32, 0x01, 0x11, 0x33, 0x86, 0x19, 0x95, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x87, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x94, 0x11, 0x32, 0x19, 0x52, 0x21, 0x52, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x0B, 0x29, 0x30, 0x89, 0x29, 0x0F, 0x31, 0x2F, 0x30, 0xCD, 0x59, 0x6F, 0xDC, 0xFC, 0xDC, 0x99, 0xDC, 0xB9, 0xDC, 0x78, 0xDC, 0x58, 0xDC, 0x57, 0x04, 0xDC, 0x37, 0x83, 0xDC, 0x36, 0xDC, 0x37, 0xDC, 0x36, 0xE4, 0x57, 0x05, 0xDC, 0x57, 0x01, 0xDC, 0x36, 0x01, 0xDC, 0x56, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x36, 0x01, 0xE4, 0x37, 0x81, 0xE4, 0x57, 0xDC, 0x36, 0x02, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x58, 0x01, 0xDC, 0x79, 0x86, 0xD4, 0x79, 0xC4, 0x59, 0x7A, 0x72, 0x20, 0x0A, 0x28, 0xAD, 0x28, 0xEE, 0x31, 0x30, 0x02, 0x29, 0x30, 0x80, + 0x21, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x04, 0x29, 0x30, 0x02, 0x29, 0x10, 0x07, 0x29, 0x30, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x11, 0x19, 0x12, 0x11, 0x12, 0x11, 0x75, 0x01, 0x1A, 0x18, 0x82, 0x11, 0xF8, 0x09, 0x76, 0x09, 0x55, 0x03, 0x09, 0x54, 0x89, 0x01, 0x55, 0x09, 0x76, 0x1A, 0x19, 0x22, 0x3A, 0x19, 0xD8, 0x09, 0x34, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x01, 0x19, 0xF6, 0x81, 0x11, 0x95, 0x11, 0x32, 0x01, 0x19, 0x31, 0x04, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x86, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, + 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x19, 0x30, 0x19, 0x2F, 0x08, 0xEE, 0x01, 0x4F, 0x3C, 0x9B, 0x14, 0x39, 0x01, 0x0C, 0x19, 0x01, 0x04, 0x18, 0x8F, 0x0C, 0x19, 0x14, 0x19, 0x1C, 0x5A, 0x2C, 0x5A, 0x34, 0x5A, 0x34, 0x3A, 0x34, 0x39, 0x33, 0xF8, 0x33, 0xB8, 0x3B, 0xD8, 0x54, 0x5A, 0x33, 0x16, 0x01, 0x2F, 0x11, 0x50, 0x19, 0x4F, 0x19, 0x2F, 0x02, 0x19, 0x50, 0x88, 0x11, 0x50, 0x09, 0x50, 0x01, 0x4F, 0x02, 0x32, 0x2C, 0x5A, 0x1C, 0x19, 0x14, 0x19, 0x0C, 0x18, 0x0C, 0x39, 0x01, 0x04, 0x18, 0x80, 0x04, 0x38, 0x03, 0x04, 0x18, 0x87, 0x04, 0x39, 0x04, 0x18, 0x0C, 0x19, 0x0C, 0x39, 0x13, 0xF8, 0x23, 0xF9, 0x2B, 0xF9, 0x01, 0xB0, 0x02, 0x01, 0x0F, 0x88, 0x09, 0x50, 0x09, 0x91, 0x22, 0x74, 0x2A, 0xF5, 0x33, 0x98, 0x3C, 0x19, 0x2C, 0x19, 0x1B, 0xF8, 0x14, 0x18, 0x01, 0x04, 0x18, 0x80, 0x04, 0x19, 0x01, 0x04, 0x39, 0x01, 0x03, 0xF8, 0x89, 0x0C, 0x19, 0x14, 0x19, 0x2C, 0x3A, 0x34, 0x3A, 0x34, 0x19, 0x3B, 0xF9, 0x3B, 0x98, 0x1A, 0x53, 0x11, 0x50, 0x19, 0x50, 0x01, 0x19, 0x30, 0x81, 0x21, 0x30, 0x19, 0x30, 0x01, 0x19, 0x50, 0x84, 0x11, 0x2F, 0x00, 0xEE, 0x2B, 0x77, 0x34, 0x5A, 0x1C, 0x18, 0x01, 0x0B, 0xF8, 0x8B, 0x03, 0xF8, 0x0C, 0x39, 0x03, 0xF8, 0x14, 0x39, 0x13, 0xF9, 0x24, 0x3A, 0x23, 0xB8, 0x01, 0x50, 0x09, 0x50, 0x09, 0x30, 0x11, 0x50, 0x19, 0x50, 0x03, 0x21, 0x30, 0x01, 0x19, 0x31, + 0x82, 0x11, 0x52, 0x11, 0x94, 0x11, 0xD7, 0x01, 0x09, 0xF8, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x02, 0x01, 0xBA, 0x89, 0x01, 0xB9, 0x09, 0xFA, 0x09, 0xF9, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0xB7, 0x19, 0x96, 0x19, 0x76, 0x19, 0x95, 0x19, 0x75, 0x03, 0x19, 0x74, 0x81, 0x19, 0x95, 0x19, 0x74, 0x02, 0x19, 0x94, 0x80, 0x19, 0x74, 0x01, 0x19, 0x94, 0x01, 0x19, 0x74, 0x01, 0x19, 0x94, 0x82, 0x19, 0x74, 0x19, 0x94, 0x19, 0x74, 0x01, 0x19, 0x94, 0x80, 0x19, 0x74, 0x04, 0x19, 0x94, 0x04, 0x19, 0x74, 0x80, 0x11, 0x53, 0x01, 0x19, 0x74, 0x02, 0x19, 0x53, 0x80, 0x11, 0x33, 0x01, 0x19, 0x32, 0x03, 0x19, 0x11, 0x01, 0x19, 0x32, 0x8A, 0x11, 0x12, 0x11, 0x54, 0x11, 0x55, 0x19, 0x96, 0x22, 0x18, 0x21, 0xF8, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x01, 0x19, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x0A, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, + 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x31, 0x01, 0x19, 0x32, 0x8C, 0x19, 0x54, 0x11, 0x55, 0x11, 0x76, 0x11, 0xB8, 0x11, 0xD8, 0x11, 0xF9, 0x12, 0x19, 0x11, 0xF8, 0x11, 0xD7, 0x09, 0x75, 0x11, 0x54, 0x11, 0x33, 0x11, 0x11, 0x01, 0x19, 0x31, 0x82, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x20, 0xEF, 0x21, 0x0F, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x92, 0x21, 0x31, 0x21, 0x11, 0x19, 0x31, 0x10, 0xF1, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD8, 0x11, 0xF9, 0x1A, 0x19, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0x97, 0x11, 0x55, 0x11, 0x34, 0x11, 0x13, 0x19, 0x12, 0x21, 0x12, 0x02, 0x21, 0x11, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x29, 0x50, 0x29, + 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x89, 0x21, 0x30, 0x19, 0x30, 0x09, 0x0F, 0x11, 0xD2, 0x4C, 0x3B, 0x3C, 0x1A, 0x23, 0xD9, + 0x1B, 0xD9, 0x1B, 0xDA, 0x1B, 0xD9, 0x01, 0x1B, 0xFA, 0x86, 0x1B, 0xDA, 0x1B, 0xD9, 0x23, 0xD9, 0x2B, 0xD9, 0x3B, 0xFA, 0x3B, 0x57, 0x09, 0x70, 0x02, 0x01, 0x0F, 0x82, 0x09, 0xB1, 0x43, 0xFA, 0x34, 0x1A, 0x01, 0x2B, 0xFA, 0x8F, 0x2B, 0xD9, 0x3B, 0xD9, 0x09, 0x70, 0x08, 0xEE, 0x19, 0x0F, 0x18, 0xEF, 0x21, 0x2F, 0x21, 0x4F, 0x19, 0x0F, 0x21, 0x2F, 0x19, 0x2F, 0x09, 0x0E, 0x00, 0xCE, 0x1A, 0x74, 0x3C, 0x1A, 0x33, 0xD9, 0x01, 0x33, 0xFA, 0x89, 0x3B, 0xFA, 0x43, 0xFA, 0x01, 0x30, 0x09, 0x30, 0x11, 0x30, 0x19, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x50, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x33, 0x11, 0x53, 0x11, 0x75, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x31, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x19, 0x11, 0x19, 0x32, 0x19, 0x33, 0x11, 0x53, 0x19, 0x95, 0x01, 0x22, 0x17, 0x85, 0x19, 0x74, 0x10, 0xF2, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, + 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x31, 0x21, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x21, 0xB5, 0x01, 0x21, 0xF6, 0x82, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x07, 0x29, 0x30, 0x80, 0x31, 0x50, 0x01, 0x29, 0x30, 0x88, 0x29, 0x0F, 0x31, 0x0F, 0x28, 0x8C, 0x8A, 0xB3, 0xE5, 0x1C, 0xDC, 0xB9, 0xDC, 0x99, 0xDC, 0x58, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x84, 0xDC, 0x57, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x16, 0xDC, 0x37, 0x02, 0xDC, 0x36, 0x02, 0xDC, 0x57, 0x80, 0xE4, 0x57, 0x05, 0xDC, 0x57, 0x81, 0xDC, 0x36, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x81, 0xDC, 0x37, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x89, 0xDC, 0x38, 0xDC, 0x58, 0xDC, 0x79, 0xDC, 0x9A, 0xDC, 0xDB, 0xD5, 0x1D, 0x82, 0xD4, 0x20, 0x0A, 0x28, 0xAD, 0x31, 0x10, 0x01, 0x29, 0x10, 0x04, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x05, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, + 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x75, 0x19, 0xF8, 0x1A, 0x18, 0x11, 0xD8, 0x09, 0x76, 0x01, 0x35, 0x01, 0x01, 0x34, 0x83, 0x09, 0x54, 0x01, 0x54, 0x01, 0x55, 0x09, 0x96, 0x01, 0x19, 0xF8, 0x84, 0x19, 0xD7, 0x11, 0x54, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x05, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x89, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xF6, 0x11, 0x95, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x03, 0x21, 0x30, 0x85, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x84, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x01, 0x21, 0x2F, + 0x8E, 0x19, 0x50, 0x11, 0x2F, 0x00, 0xEE, 0x01, 0x4F, 0x3C, 0xBB, 0x14, 0x39, 0x0C, 0x19, 0x04, 0x18, 0x04, 0x19, 0x04, 0x18, 0x0C, 0x19, 0x0B, 0xB7, 0x02, 0x73, 0x01, 0xF0, 0x01, 0x8F, 0x01, 0x01, 0x4E, 0x88, 0x01, 0x2E, 0x00, 0xED, 0x00, 0xCD, 0x00, 0xAD, 0x00, 0xEE, 0x11, 0x50, 0x11, 0x2F, 0x19, 0x70, 0x19, 0x2F, 0x01, 0x19, 0x30, 0x01, 0x19, 0x50, 0x89, 0x11, 0x50, 0x01, 0x4F, 0x01, 0x6F, 0x23, 0x77, 0x24, 0x39, 0x14, 0x19, 0x0C, 0x39, 0x04, 0x19, 0x03, 0xF8, 0x04, 0x18, 0x01, 0x04, 0x38, 0x01, 0x04, 0x39, 0x8D, 0x04, 0x18, 0x04, 0x19, 0x04, 0x18, 0x03, 0xF8, 0x14, 0x39, 0x1C, 0x19, 0x2B, 0xD9, 0x02, 0x33, 0x01, 0x2F, 0x01, 0x0E, 0x11, 0x70, 0x19, 0xB1, 0x11, 0x70, 0x09, 0x2F, 0x02, 0x00, 0xEE, 0x88, 0x01, 0x2F, 0x01, 0x4F, 0x02, 0x93, 0x1C, 0x39, 0x0C, 0x18, 0x0C, 0x39, 0x04, 0x19, 0x03, 0xF8, 0x04, 0x39, 0x01, 0x0C, 0x19, 0x83, 0x0B, 0xF9, 0x2C, 0x7B, 0x01, 0xF2, 0x01, 0x70, 0x01, 0x01, 0x2F, 0x82, 0x01, 0x0F, 0x09, 0x2F, 0x11, 0x50, 0x01, 0x19, 0x30, 0x80, 0x19, 0x10, 0x01, 0x21, 0x50, 0x88, 0x19, 0x30, 0x19, 0x50, 0x09, 0x2F, 0x01, 0x0E, 0x22, 0xF5, 0x44, 0x9B, 0x1C, 0x19, 0x14, 0x19, 0x0C, 0x18, 0x02, 0x0C, 0x19, 0x8B, 0x14, 0x39, 0x1C, 0x3A, 0x24, 0x5A, 0x2B, 0xB8, 0x01, 0x50, 0x09, 0x50, 0x09, 0x30, 0x19, 0x50, 0x19, 0x30, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0xD6, 0x12, 0x18, 0x0A, 0x19, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x01, + 0x09, 0xFA, 0x01, 0x0A, 0x1A, 0x86, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x34, 0x11, 0x13, 0x02, 0x11, 0x12, 0x86, 0x11, 0x32, 0x19, 0x33, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x19, 0x32, 0x19, 0x12, 0x01, 0x19, 0x32, 0x80, 0x11, 0x32, 0x01, 0x19, 0x33, 0x01, 0x11, 0x33, 0x84, 0x11, 0x32, 0x19, 0x33, 0x11, 0x33, 0x11, 0x32, 0x19, 0x33, 0x01, 0x19, 0x32, 0x80, 0x19, 0x53, 0x05, 0x11, 0x32, 0x81, 0x19, 0x53, 0x19, 0x52, 0x01, 0x19, 0x53, 0x01, 0x19, 0x32, 0x84, 0x11, 0x12, 0x19, 0x12, 0x19, 0x32, 0x19, 0x31, 0x19, 0x32, 0x03, 0x19, 0x31, 0x84, 0x19, 0x32, 0x19, 0x53, 0x19, 0x74, 0x11, 0x54, 0x19, 0xB6, 0x02, 0x21, 0xF7, 0x81, 0x19, 0x95, 0x11, 0x12, 0x01, 0x11, 0x11, 0x82, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x32, 0x19, 0x33, 0x11, + 0x34, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xF9, 0x01, 0x12, 0x19, 0x86, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x88, 0x21, 0x31, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x01, 0x1A, 0x19, 0x87, 0x19, 0xF8, 0x11, 0xD8, 0x11, 0x96, 0x11, 0x75, 0x11, 0x54, 0x19, 0x33, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0B, 0x21, 0x30, 0x85, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x21, 0x51, 0x21, 0x50, 0x09, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, + 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x86, 0x19, 0x2F, 0x19, 0x30, 0x11, 0x30, 0x09, 0x50, 0x43, 0x99, 0x44, 0x1A, 0x33, 0xFA, 0x03, 0x23, 0xFA, 0x93, 0x1B, 0xDA, 0x1B, 0xD9, 0x23, 0xDA, 0x2B, 0xFA, 0x33, 0xD9, 0x43, 0xDA, 0x3A, 0xF6, 0x09, 0x0F, 0x08, 0xEF, 0x09, 0x0F, 0x01, 0x0F, 0x09, 0xD2, 0x43, 0xFA, 0x33, 0xDA, 0x33, 0xFA, 0x2B, 0xD9, 0x33, 0xB9, 0x43, 0xD9, 0x09, 0x4F, 0x08, 0xEE, 0x02, 0x21, 0x2F, 0x8E, 0x21, 0x50, 0x21, 0x2F, 0x19, 0x2F, 0x11, 0x2F, 0x00, + 0xCE, 0x09, 0x91, 0x4B, 0xDA, 0x3B, 0xDA, 0x33, 0xDA, 0x33, 0xD9, 0x33, 0xDA, 0x3B, 0xFA, 0x43, 0xDA, 0x01, 0x30, 0x11, 0x50, 0x01, 0x19, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x84, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x89, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x75, 0x19, 0xF7, 0x19, 0xF6, 0x21, 0xD6, 0x21, 0xB5, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x19, 0x95, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, + 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x01, 0x21, 0xD6, 0x83, 0x19, 0x94, 0x11, 0x32, 0x19, 0x32, 0x21, 0x51, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x08, 0x29, 0x30, 0x02, 0x31, 0x30, 0x89, 0x29, 0x0F, 0x30, 0xEF, 0x28, 0x4B, 0xAB, 0xD8, 0xE4, 0xFB, 0xDC, 0x99, 0xDC, 0x98, 0xDC, 0x78, 0xDC, 0x57, 0xDC, 0x58, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x84, 0xE4, 0x37, 0xDC, 0x37, 0xDC, 0x36, 0xE4, 0x36, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x82, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x02, 0xDC, 0x36, 0x03, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x08, 0xDC, 0x37, 0x80, 0xDC, 0x58, 0x01, 0xDC, 0x79, 0x86, 0xDC, 0xBA, 0xED, 0x7E, 0xAB, 0xF9, 0x28, 0x4B, 0x28, 0x6C, 0x28, 0xEF, 0x29, 0x10, 0x05, 0x29, 0x30, 0x80, 0x21, 0x10, 0x0D, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD7, 0x01, 0x11, 0xD8, 0x81, 0x09, 0x97, 0x01, 0x55, 0x03, 0x01, 0x34, 0x81, 0x01, 0x55, 0x09, 0xB7, 0x01, 0x1A, 0x18, 0x84, 0x19, 0xD7, 0x11, 0x54, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x02, + 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xD6, 0x11, 0xB5, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x01, 0x19, 0x4F, 0x8A, 0x00, 0xEE, 0x01, 0x2F, 0x3C, 0x9B, 0x1C, 0x39, 0x0B, 0xF8, 0x04, 0x19, 0x0C, 0x39, 0x04, 0x19, 0x0C, 0x19, 0x0B, 0xD8, 0x02, 0xB4, 0x02, 0x02, 0x32, 0x86, 0x0A, 0x52, 0x12, 0x52, 0x09, 0xF1, 0x01, 0x2F, 0x00, 0xEE, 0x00, 0xAD, 0x11, 0x2F, 0x02, 0x19, 0x50, 0x8F, 0x21, 0x30, 0x19, 0x2F, 0x19, 0x30, 0x19, 0x50, 0x11, 0x50, 0x09, 0x50, 0x01, 0x6F, 0x02, 0x11, 0x34, 0x5A, 0x1C, 0x19, 0x0C, 0x19, 0x0C, 0x39, 0x04, 0x18, 0x04, 0x39, 0x04, 0x38, 0x04, 0x18, 0x01, 0x04, 0x39, 0x8B, 0x04, 0x18, 0x04, + 0x19, 0x04, 0x39, 0x0C, 0x39, 0x14, 0x19, 0x24, 0x39, 0x23, 0x57, 0x01, 0x6F, 0x01, 0x0F, 0x09, 0x2F, 0x19, 0x70, 0x19, 0x50, 0x03, 0x11, 0x50, 0x91, 0x09, 0x2F, 0x01, 0x2F, 0x01, 0x0E, 0x01, 0xF1, 0x24, 0x39, 0x0C, 0x18, 0x04, 0x18, 0x0C, 0x39, 0x03, 0xF8, 0x04, 0x19, 0x0C, 0x39, 0x0C, 0x19, 0x13, 0xF9, 0x34, 0x7B, 0x01, 0x90, 0x01, 0x2F, 0x01, 0x50, 0x09, 0x30, 0x01, 0x11, 0x50, 0x03, 0x19, 0x30, 0x97, 0x21, 0x30, 0x21, 0x50, 0x19, 0x2F, 0x19, 0x50, 0x11, 0x2F, 0x01, 0x0E, 0x12, 0x53, 0x44, 0x9B, 0x1B, 0xF9, 0x14, 0x39, 0x0C, 0x19, 0x0C, 0x39, 0x0C, 0x19, 0x0C, 0x39, 0x14, 0x39, 0x1C, 0x39, 0x24, 0x3A, 0x23, 0x98, 0x01, 0x50, 0x09, 0x50, 0x11, 0x50, 0x11, 0x30, 0x19, 0x50, 0x21, 0x50, 0x02, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x95, 0x11, 0xD6, 0x12, 0x18, 0x01, 0x09, 0xF9, 0x8B, 0x09, 0xD9, 0x09, 0xFA, 0x0A, 0x1A, 0x09, 0xF9, 0x12, 0x19, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x74, 0x11, 0x33, 0x11, 0x13, 0x05, 0x19, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x11, 0x04, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x80, 0x19, 0x12, 0x0A, 0x19, 0x32, 0x83, 0x19, 0x52, 0x19, 0x32, 0x11, 0x11, 0x19, 0x32, 0x02, 0x19, 0x11, 0x83, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x21, 0x51, 0x01, 0x19, 0x31, 0x89, 0x19, 0x32, 0x19, 0x52, 0x11, 0x53, 0x19, 0x94, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x53, 0x01, 0x11, 0x11, 0x80, + 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x88, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x19, 0x33, 0x11, 0x33, 0x11, 0x55, 0x11, 0x96, 0x11, 0xB7, 0x1A, 0x19, 0x01, 0x12, 0x19, 0x86, 0x11, 0xF8, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x19, 0x52, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x19, 0x11, 0x85, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0xB6, 0x19, 0xD8, 0x11, 0xF8, 0x01, 0x1A, 0x19, 0x87, 0x19, 0xD8, 0x11, 0xB6, + 0x11, 0x75, 0x19, 0x54, 0x19, 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x11, 0x04, 0x21, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x19, 0x10, 0x02, 0x21, 0x31, 0x0A, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x08, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, + 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x19, 0x30, 0x85, 0x11, 0x30, 0x22, 0x34, 0x43, 0xDA, 0x3B, 0xFA, 0x33, 0xFA, 0x2B, 0xFA, 0x01, 0x2B, 0xDA, 0x87, 0x23, 0xDA, 0x2B, 0xDA, 0x2B, 0xB9, 0x33, 0xDA, 0x43, 0xDA, 0x43, 0x99, 0x2A, 0x33, 0x11, 0x0F, 0x01, 0x08, 0xEF, 0x82, 0x01, 0x0F, 0x09, 0xB2, 0x4C, 0x1A, 0x01, 0x33, 0xD9, 0x84, 0x2B, 0xB9, 0x33, 0xB9, 0x3B, 0x99, 0x09, 0x2F, 0x08, 0xCE, 0x01, 0x21, 0x0F, 0x90, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x2F, 0x19, 0x50, 0x00, 0xEE, 0x22, 0x33, 0x54, 0x1B, 0x43, 0xFA, 0x3B, 0xFA, 0x33, 0xDA, 0x33, 0xB9, 0x3B, 0xDA, 0x44, 0x1A, 0x4B, 0xFA, 0x01, 0x0F, 0x11, 0x30, 0x19, 0x30, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x31, 0x0F, 0x04, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x89, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, + 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x97, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x95, 0x21, 0xF7, 0x19, 0xD6, 0x29, 0xF6, 0x19, 0x53, 0x11, 0x31, 0x19, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x33, 0x19, 0xB6, 0x01, 0x22, 0x17, 0x83, 0x19, 0x95, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x85, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x8B, 0x11, 0x33, 0x21, 0xD6, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x32, 0x19, 0x32, 0x21, 0x51, 0x21, 0x31, 0x29, 0x31, 0x29, 0x30, 0x29, 0x50, 0x02, 0x29, 0x30, 0x02, 0x29, 0x50, 0x82, 0x29, 0x30, 0x29, 0x50, 0x29, 0x30, 0x02, 0x31, 0x30, 0x87, 0x31, 0x0F, 0x30, 0xEE, 0x28, 0x2B, 0xCC, 0xBB, 0xE4, 0xFA, 0xDC, 0x98, 0xDC, 0x78, 0xDC, 0x58, 0x01, 0xDC, 0x57, 0x83, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x82, 0xDC, 0x57, 0xE4, 0x57, + 0xDC, 0x36, 0x02, 0xDC, 0x57, 0x82, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x36, 0x01, 0xDC, 0x57, 0x86, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x80, 0xDC, 0x36, 0x04, 0xDC, 0x37, 0x8A, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x38, 0xDC, 0x58, 0xD4, 0x79, 0xDC, 0xDB, 0x82, 0x93, 0x38, 0xAC, 0x30, 0xCE, 0x28, 0xCE, 0x28, 0xEF, 0x05, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x09, 0x29, 0x30, 0x01, 0x29, 0x10, 0x09, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x88, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x11, 0x54, 0x19, 0x96, 0x11, 0xB7, 0x11, 0xD7, 0x09, 0xD7, 0x01, 0x97, 0x01, 0x01, 0x56, 0x01, 0x01, 0x76, 0x81, 0x09, 0x97, 0x1A, 0x18, 0x01, 0x11, 0xD7, 0x85, 0x19, 0xB6, 0x11, 0x54, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x04, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x88, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, + 0x21, 0x0F, 0x89, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x1A, 0x17, 0x19, 0xF6, 0x11, 0x94, 0x11, 0x12, 0x01, 0x19, 0x11, 0x03, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x8A, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x50, 0x19, 0x2F, 0x00, 0xEE, 0x01, 0x2F, 0x3C, 0x7B, 0x14, 0x19, 0x0C, 0x18, 0x0C, 0x39, 0x03, 0xF8, 0x01, 0x04, 0x19, 0x8E, 0x0C, 0x19, 0x14, 0x19, 0x1C, 0x39, 0x24, 0x5A, 0x2C, 0x3A, 0x2C, 0x5A, 0x34, 0x5A, 0x3C, 0x3A, 0x4C, 0x5B, 0x1A, 0x33, 0x00, 0xCE, 0x11, 0x2F, 0x19, 0x50, 0x19, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8A, 0x19, 0x30, 0x19, 0x2F, 0x11, 0x50, 0x09, 0x4F, 0x01, 0x6F, 0x1B, 0x15, 0x2C, 0x5A, 0x1C, 0x5A, 0x0C, 0x18, 0x04, 0x19, 0x04, 0x18, 0x02, 0x04, 0x38, 0x80, 0x04, 0x39, 0x01, 0x04, 0x18, 0xA0, 0x04, 0x19, 0x0C, 0x19, 0x13, 0xF9, 0x34, 0x3A, 0x02, 0x12, 0x01, 0x2F, 0x09, 0x2F, 0x19, 0x70, 0x19, 0x50, 0x19, 0x2F, 0x19, 0x50, 0x19, 0x2F, 0x19, 0x30, 0x11, 0x30, 0x11, 0x4F, 0x09, 0x4F, 0x00, 0xEE, 0x01, 0x90, 0x24, 0x39, 0x14, 0x19, 0x04, 0x18, 0x03, 0xF8, 0x04, 0x18, 0x0C, 0x19, 0x03, 0xF8, 0x0B, 0xF9, 0x1C, 0x19, 0x44, 0xBC, 0x01, 0x70, 0x01, 0x50, 0x09, 0x50, 0x11, 0x71, 0x11, 0x50, 0x01, 0x19, 0x50, 0x02, + 0x19, 0x30, 0x88, 0x21, 0x30, 0x19, 0x2F, 0x19, 0x30, 0x19, 0x50, 0x11, 0x2F, 0x01, 0x2F, 0x01, 0x70, 0x3C, 0x3A, 0x1B, 0xD8, 0x01, 0x0B, 0xF8, 0x80, 0x0B, 0xF9, 0x01, 0x0C, 0x19, 0x01, 0x14, 0x19, 0x84, 0x24, 0x3A, 0x23, 0xB8, 0x01, 0x50, 0x09, 0x50, 0x11, 0x70, 0x01, 0x19, 0x50, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x88, 0x19, 0x31, 0x19, 0x52, 0x19, 0x74, 0x11, 0x95, 0x11, 0xD6, 0x11, 0xD7, 0x11, 0xD8, 0x11, 0xF9, 0x09, 0xD8, 0x01, 0x11, 0xF9, 0x85, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x74, 0x19, 0x33, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x82, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x03, 0x19, 0x31, 0x83, 0x21, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x19, 0x11, 0x02, 0x19, 0x31, 0x03, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x51, 0x03, 0x19, 0x31, 0x80, 0x19, 0x11, 0x04, 0x21, 0x31, 0x02, 0x19, 0x31, 0x83, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x82, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x01, 0x11, 0x11, 0x81, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, + 0x02, 0x21, 0x2F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x02, 0x21, 0x31, 0x97, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x11, 0x55, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xF8, 0x12, 0x19, 0x12, 0x18, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x74, 0x11, 0x33, 0x19, 0x12, 0x19, 0x32, 0x21, 0x11, 0x21, 0x31, 0x29, 0x31, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x07, 0x21, 0x30, 0x86, 0x19, 0x10, 0x19, 0x11, 0x11, 0x12, 0x11, 0x53, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x02, 0x1A, 0x18, 0x84, 0x19, 0xD7, 0x11, 0x96, 0x11, 0x75, 0x19, 0x54, 0x11, 0x13, 0x02, 0x19, 0x12, 0x81, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x31, 0x06, 0x21, 0x30, 0x80, 0x21, 0x50, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x06, 0x21, 0x2F, 0x88, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x30, 0x01, + 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x04, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x30, 0x21, 0x51, 0x03, 0x21, 0x30, 0x84, 0x21, 0x50, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, + 0x21, 0x2F, 0x88, 0x21, 0x30, 0x19, 0x30, 0x11, 0x30, 0x11, 0x71, 0x3B, 0x38, 0x43, 0xFA, 0x3B, 0xDA, 0x33, 0xDA, 0x2B, 0xD9, 0x01, 0x2B, 0xDA, 0x8C, 0x33, 0xDA, 0x33, 0xBA, 0x43, 0xDA, 0x4B, 0x99, 0x2A, 0x54, 0x11, 0x0F, 0x10, 0xEE, 0x19, 0x0F, 0x08, 0xEF, 0x01, 0x0F, 0x11, 0xB2, 0x4C, 0x1B, 0x3B, 0xDA, 0x01, 0x33, 0xDA, 0x84, 0x3B, 0xDA, 0x43, 0x79, 0x09, 0x0F, 0x08, 0xAE, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x8F, 0x21, 0x30, 0x19, 0x30, 0x11, 0x0F, 0x21, 0xF2, 0x53, 0xDA, 0x4B, 0xDA, 0x43, 0xDA, 0x3B, 0xB9, 0x33, 0xB9, 0x3B, 0xBA, 0x43, 0xDA, 0x4C, 0x1B, 0x43, 0x99, 0x00, 0xEF, 0x11, 0x30, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x03, 0x29, 0x30, 0x07, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x73, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x50, 0x03, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x33, 0x19, 0xB6, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, + 0x06, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x81, 0x11, 0x33, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x85, 0x19, 0x74, 0x11, 0x12, 0x19, 0x52, 0x21, 0x52, 0x21, 0x31, 0x29, 0x31, 0x03, 0x29, 0x30, 0x81, 0x29, 0x50, 0x29, 0x30, 0x02, 0x29, 0x50, 0x81, 0x29, 0x30, 0x31, 0x51, 0x01, 0x31, 0x30, 0x85, 0x31, 0x10, 0x31, 0x0F, 0x30, 0xAE, 0x38, 0xAC, 0xE5, 0x3D, 0xDC, 0xB9, 0x01, 0xDC, 0x78, 0x02, 0xDC, 0x57, 0x83, 0xE4, 0x57, 0xDC, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x04, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x36, 0x0C, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x8B, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x38, 0xDC, 0x58, 0xDC, 0x99, 0xDC, 0xDB, 0x7A, 0x11, 0x30, 0x2A, 0x41, 0x0E, 0x30, 0xEE, 0x28, 0xEE, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x0A, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, + 0x29, 0x10, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x32, 0x19, 0x33, 0x11, 0x75, 0x19, 0xB6, 0x19, 0xF8, 0x12, 0x18, 0x12, 0x19, 0x01, 0x11, 0xF8, 0x01, 0x11, 0xD8, 0x87, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x54, 0x19, 0x53, 0x19, 0x32, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x88, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x09, 0x33, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0xB5, 0x11, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x85, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x10, + 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x01, 0x19, 0x2F, 0x86, 0x00, 0xEE, 0x01, 0x2F, 0x3C, 0x5A, 0x1C, 0x19, 0x14, 0x39, 0x04, 0x18, 0x0C, 0x19, 0x01, 0x04, 0x19, 0x02, 0x0C, 0x19, 0x8B, 0x14, 0x19, 0x13, 0xF9, 0x1C, 0x19, 0x1B, 0xF8, 0x23, 0xF9, 0x3C, 0x3A, 0x12, 0x12, 0x00, 0xCE, 0x11, 0x30, 0x19, 0x30, 0x19, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x2F, 0x19, 0x2F, 0x19, 0x50, 0x11, 0x2F, 0x11, 0x70, 0x01, 0x6F, 0x01, 0xB0, 0x34, 0x3A, 0x24, 0x5A, 0x14, 0x39, 0x03, 0xF8, 0x04, 0x19, 0x04, 0x39, 0x04, 0x59, 0x01, 0x04, 0x39, 0x85, 0x04, 0x18, 0x0C, 0x39, 0x0C, 0x19, 0x14, 0x19, 0x24, 0x19, 0x23, 0x77, 0x01, 0x01, 0x2F, 0x01, 0x11, 0x50, 0x80, 0x19, 0x50, 0x03, 0x19, 0x2F, 0x8F, 0x19, 0x30, 0x11, 0x2F, 0x11, 0x50, 0x01, 0x0E, 0x01, 0x4F, 0x2C, 0x3A, 0x0B, 0xF8, 0x0C, 0x19, 0x0C, 0x39, 0x0C, 0x19, 0x0B, 0xF9, 0x14, 0x39, 0x13, 0xF9, 0x1C, 0x19, 0x34, 0x3A, 0x01, 0x50, 0x01, 0x09, 0x50, 0x81, 0x11, 0x50, 0x11, 0x30, 0x01, 0x19, 0x50, 0x01, 0x19, 0x30, 0x85, 0x19, 0x2F, 0x21, 0x30, 0x19, 0x2F, 0x19, 0x50, 0x19, 0x2F, 0x11, 0x50, 0x01, 0x01, 0x0F, 0x86, 0x2B, 0x77, 0x23, 0xF9, 0x14, 0x19, 0x0B, 0xF8, 0x0C, 0x19, 0x0B, 0xF9, 0x0C, 0x19, 0x01, 0x13, 0xF9, 0x86, 0x2C, 0x5A, 0x23, 0x98, 0x01, 0x50, 0x09, 0x50, 0x11, 0x50, 0x19, 0x50, 0x19, 0x30, 0x04, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB6, 0x02, 0x11, 0xD7, 0x84, 0x11, 0xB7, + 0x11, 0x96, 0x11, 0x95, 0x11, 0x74, 0x11, 0x53, 0x01, 0x19, 0x32, 0x01, 0x19, 0x11, 0x02, 0x21, 0x31, 0x82, 0x21, 0x11, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x21, 0x11, 0x02, 0x21, 0x31, 0x80, 0x19, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x11, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x21, 0x11, 0x19, 0x10, 0x01, 0x21, 0x31, 0x84, 0x21, 0x11, 0x19, 0x10, 0x21, 0x10, 0x19, 0x10, 0x21, 0x31, 0x02, 0x19, 0x30, 0x80, 0x19, 0x31, 0x01, 0x19, 0x30, 0x81, 0x19, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8E, 0x11, 0x32, 0x19, 0x53, 0x19, 0x94, 0x19, 0xB5, 0x22, 0x17, 0x1A, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x89, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x0A, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, + 0x31, 0x91, 0x19, 0x31, 0x19, 0x52, 0x19, 0x53, 0x11, 0x54, 0x11, 0x75, 0x11, 0x76, 0x11, 0xB7, 0x11, 0xF8, 0x12, 0x18, 0x1A, 0x39, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x34, 0x19, 0x33, 0x19, 0x32, 0x21, 0x32, 0x21, 0x11, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x05, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x19, 0x31, 0x01, 0x19, 0x32, 0x83, 0x11, 0x33, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x01, 0x1A, 0x39, 0x83, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x75, 0x01, 0x11, 0x33, 0x80, 0x11, 0x12, 0x03, 0x19, 0x32, 0x03, 0x19, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x87, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x01, 0x11, 0x32, 0x80, 0x19, 0x32, 0x02, 0x19, 0x52, 0x80, 0x19, 0x51, 0x02, 0x19, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, + 0x0E, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x09, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x88, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x86, 0x19, 0x30, 0x19, 0x10, 0x11, 0x10, 0x19, 0xD2, 0x4B, 0xDA, 0x43, 0xDA, 0x3B, 0xDA, 0x01, 0x33, 0xB9, 0x8D, 0x3B, 0xBA, 0x43, 0xDA, 0x43, 0x9A, 0x43, 0x79, 0x32, 0x95, 0x11, 0x30, 0x10, 0xEE, 0x18, 0xEE, 0x21, 0x50, 0x19, 0x2F, 0x00, 0xEE, 0x19, 0xD2, 0x4B, 0xFB, 0x3B, 0xB9, + 0x01, 0x3B, 0xDA, 0x84, 0x3B, 0xBA, 0x43, 0x99, 0x09, 0x0F, 0x10, 0xAE, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x19, 0x50, 0x00, 0xCE, 0x2A, 0x13, 0x5B, 0xFB, 0x01, 0x4B, 0xBA, 0x89, 0x3B, 0x99, 0x3B, 0xB9, 0x43, 0xDA, 0x3B, 0xBA, 0x43, 0xDA, 0x54, 0x1B, 0x32, 0xB6, 0x11, 0x50, 0x19, 0x50, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x07, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x85, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x01, 0x11, 0x32, 0x81, 0x11, 0x53, 0x19, 0xB6, 0x01, 0x21, 0xD6, 0x83, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x51, 0x04, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x19, 0x12, 0x11, 0x34, 0x21, 0xB6, 0x2A, 0x17, 0x22, 0x17, 0x19, 0x95, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, + 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x80, 0x11, 0x53, 0x01, 0x21, 0xD6, 0x84, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x32, 0x19, 0x52, 0x21, 0x52, 0x01, 0x21, 0x31, 0x02, 0x29, 0x30, 0x04, 0x29, 0x50, 0x82, 0x29, 0x30, 0x29, 0x50, 0x31, 0x30, 0x01, 0x31, 0x31, 0x87, 0x31, 0x10, 0x30, 0xEF, 0x30, 0x8D, 0x59, 0x6F, 0xE5, 0x5C, 0xDC, 0xB9, 0xDC, 0x98, 0xDC, 0x78, 0x01, 0xDC, 0x57, 0x05, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x02, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x82, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x16, 0x02, 0xDC, 0x37, 0x81, 0xDC, 0x16, 0xDC, 0x17, 0x01, 0xDC, 0x37, 0x8C, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x17, 0xDC, 0x58, 0xDC, 0x59, 0xDC, 0xBA, 0xAB, 0x56, 0x30, 0x09, 0x41, 0x0E, 0x39, 0x2F, 0x31, 0x0F, 0x31, 0x2F, 0x31, 0x30, 0x09, 0x29, 0x30, 0x80, 0x21, 0x10, 0x06, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x08, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x93, + 0x21, 0x31, 0x19, 0x31, 0x19, 0x12, 0x11, 0x33, 0x19, 0x95, 0x19, 0xF7, 0x1A, 0x38, 0x1A, 0x59, 0x1A, 0x39, 0x1A, 0x19, 0x19, 0xF8, 0x1A, 0x18, 0x22, 0x59, 0x22, 0x38, 0x19, 0xB6, 0x11, 0x54, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x89, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF6, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x89, 0x21, 0x30, 0x19, 0x30, 0x19, 0x2F, 0x00, 0xEE, 0x01, 0x2F, 0x44, 0x9B, 0x1C, 0x39, 0x14, 0x39, 0x0C, 0x39, 0x0C, 0x18, 0x05, 0x0C, 0x19, 0x88, 0x14, 0x39, 0x14, 0x19, 0x13, 0xD8, 0x1B, 0xF8, 0x34, 0x3A, 0x01, 0xB1, 0x00, 0xCE, 0x11, 0x50, 0x19, 0x50, 0x01, 0x21, 0x50, 0x02, + 0x21, 0x2F, 0x8B, 0x21, 0x30, 0x21, 0x50, 0x19, 0x50, 0x11, 0x70, 0x09, 0x70, 0x01, 0x2F, 0x0A, 0x73, 0x34, 0x7B, 0x1C, 0x3A, 0x0C, 0x19, 0x04, 0x19, 0x04, 0x18, 0x01, 0x04, 0x39, 0x87, 0x04, 0x18, 0x04, 0x39, 0x04, 0x19, 0x14, 0x19, 0x24, 0x19, 0x2B, 0xF9, 0x01, 0xD1, 0x01, 0x0E, 0x01, 0x11, 0x4F, 0x84, 0x19, 0x50, 0x19, 0x2F, 0x21, 0x50, 0x21, 0x2F, 0x21, 0x50, 0x02, 0x19, 0x2F, 0x8D, 0x11, 0x4F, 0x01, 0x0E, 0x01, 0x70, 0x34, 0x3A, 0x13, 0xF9, 0x14, 0x19, 0x0C, 0x19, 0x0B, 0xF8, 0x0C, 0x19, 0x0B, 0xD8, 0x1C, 0x19, 0x24, 0x3A, 0x34, 0x1A, 0x01, 0x50, 0x01, 0x09, 0x50, 0x84, 0x11, 0x50, 0x11, 0x30, 0x19, 0x50, 0x19, 0x30, 0x19, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x50, 0x19, 0x2F, 0x01, 0x19, 0x50, 0x85, 0x09, 0x2F, 0x00, 0xEE, 0x12, 0x74, 0x23, 0xB8, 0x13, 0xF8, 0x0B, 0xF8, 0x01, 0x0C, 0x19, 0x86, 0x14, 0x19, 0x13, 0xF9, 0x1C, 0x19, 0x2C, 0x1A, 0x23, 0x98, 0x01, 0x50, 0x09, 0x50, 0x01, 0x11, 0x50, 0x83, 0x19, 0x30, 0x19, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x74, 0x11, 0x75, 0x11, 0x95, 0x01, 0x11, 0x75, 0x83, 0x11, 0x74, 0x11, 0x73, 0x11, 0x32, 0x19, 0x52, 0x01, 0x19, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, + 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x19, 0x30, 0x8C, 0x19, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x31, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x19, 0xD5, 0x19, 0xF6, 0x01, 0x22, 0x17, 0x8A, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x10, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x21, 0x10, 0x20, 0xEF, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x88, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x01, 0x11, 0x53, 0x8D, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x1A, 0x18, 0x12, 0x18, 0x1A, 0x19, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x76, 0x11, 0x34, 0x19, 0x33, 0x19, 0x12, 0x21, 0x31, 0x21, 0x11, 0x03, 0x21, 0x30, 0x80, 0x29, + 0x50, 0x05, 0x29, 0x2F, 0x85, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x8C, 0x19, 0x12, 0x11, 0x33, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xD7, 0x1A, 0x18, 0x1A, 0x39, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x54, 0x11, 0x34, 0x02, 0x11, 0x33, 0x80, 0x11, 0x32, 0x02, 0x19, 0x32, 0x01, 0x19, 0x31, 0x83, 0x21, 0x31, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x06, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x81, 0x11, 0x53, 0x19, 0x74, 0x01, 0x19, 0x94, 0x82, 0x19, 0xB5, 0x19, 0x94, 0x19, 0x74, 0x01, 0x19, 0x73, 0x81, 0x19, 0x53, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x13, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x08, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, + 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x9D, 0x21, 0x0F, 0x19, 0x0F, 0x19, 0x10, 0x11, 0x10, 0x09, 0x10, 0x43, 0x38, 0x4B, 0xBA, 0x43, 0xDA, 0x3B, 0xB9, 0x3B, 0xDA, 0x43, 0xBA, 0x4B, 0xDB, 0x3B, 0x38, 0x19, 0xB2, 0x08, 0xEF, 0x10, 0xCE, 0x18, 0xEE, 0x21, 0x2F, 0x21, 0x50, 0x19, 0x0F, 0x08, 0xCE, 0x19, 0xB2, 0x54, 0x1B, 0x3B, 0x99, 0x43, 0xFB, 0x43, 0xDA, 0x43, 0x99, 0x4B, 0x79, 0x09, 0x10, 0x08, 0xAE, 0x01, 0x21, 0x10, 0x85, 0x19, 0x0F, 0x10, 0xEF, 0x32, 0x54, 0x5B, 0xBA, 0x53, 0x9A, 0x4B, 0x99, 0x01, 0x43, 0x9A, 0x01, 0x43, 0xBA, 0x01, + 0x4B, 0xDA, 0x88, 0x4B, 0x99, 0x11, 0x71, 0x11, 0x50, 0x19, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0x95, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x21, 0x51, 0x02, 0x21, 0x30, 0x8B, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x33, 0x19, 0x96, 0x21, 0xF7, 0x2A, 0x17, 0x19, 0xB5, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x04, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, + 0x02, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x53, 0x21, 0xD6, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x12, 0x19, 0x52, 0x21, 0x52, 0x21, 0x51, 0x01, 0x29, 0x31, 0x84, 0x29, 0x30, 0x29, 0x50, 0x29, 0x30, 0x29, 0x50, 0x31, 0x50, 0x01, 0x29, 0x50, 0x81, 0x31, 0x51, 0x29, 0x30, 0x01, 0x31, 0x30, 0x87, 0x31, 0x31, 0x31, 0x30, 0x30, 0xEF, 0x30, 0x8C, 0x7A, 0x73, 0xE5, 0x5C, 0xDC, 0xB9, 0xDC, 0x78, 0x01, 0xDC, 0x57, 0x06, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x02, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x82, 0xDC, 0x37, 0xE4, 0x37, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x84, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x17, 0x04, 0xDC, 0x37, 0x86, 0xDC, 0x38, 0xDC, 0x58, 0xDC, 0x79, 0xCC, 0x39, 0x40, 0x4A, 0x30, 0x8C, 0x39, 0x0E, 0x01, 0x31, 0x0F, 0x80, 0x31, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x50, 0x0A, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x88, 0x21, 0x31, 0x21, 0x11, 0x19, 0x31, 0x19, + 0x32, 0x11, 0x33, 0x19, 0x95, 0x11, 0xB5, 0x19, 0xF7, 0x19, 0xD7, 0x01, 0x11, 0xB6, 0x01, 0x19, 0xB6, 0x83, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8C, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x05, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x19, 0x30, 0x86, 0x08, 0xEE, 0x01, 0x2F, 0x44, 0x7B, 0x24, 0x3A, 0x1C, 0x39, 0x0C, 0x19, 0x0C, 0x18, 0x01, 0x0C, 0x19, 0x81, 0x0C, 0x39, 0x0C, 0x19, 0x02, 0x0B, 0xF9, 0x01, 0x14, 0x19, 0x85, 0x1C, 0x19, 0x3C, 0x5A, 0x01, 0x90, 0x00, 0xAD, 0x19, 0x50, 0x21, 0x70, 0x01, + 0x21, 0x50, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x87, 0x19, 0x50, 0x11, 0x4F, 0x11, 0x50, 0x09, 0x50, 0x01, 0x50, 0x2B, 0xD9, 0x24, 0x3A, 0x13, 0xF9, 0x01, 0x0C, 0x19, 0x01, 0x04, 0x19, 0x8C, 0x0C, 0x39, 0x0C, 0x19, 0x0C, 0x39, 0x14, 0x19, 0x2C, 0x1A, 0x2B, 0x98, 0x01, 0x0E, 0x01, 0x2F, 0x11, 0x50, 0x11, 0x2F, 0x19, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x19, 0x2F, 0x83, 0x19, 0x4F, 0x01, 0x0E, 0x01, 0x4F, 0x34, 0x1A, 0x01, 0x1C, 0x19, 0x01, 0x0B, 0xF8, 0x86, 0x13, 0xF9, 0x1C, 0x19, 0x1B, 0xF9, 0x2C, 0x1A, 0x2B, 0xD9, 0x01, 0x2F, 0x09, 0x50, 0x01, 0x11, 0x50, 0x81, 0x19, 0x50, 0x19, 0x30, 0x01, 0x19, 0x2F, 0x04, 0x21, 0x2F, 0x01, 0x19, 0x50, 0x91, 0x11, 0x2F, 0x00, 0xEE, 0x09, 0xF2, 0x34, 0x1A, 0x1B, 0xF9, 0x13, 0xF9, 0x14, 0x19, 0x0B, 0xF9, 0x13, 0xF9, 0x1C, 0x19, 0x1B, 0xF9, 0x2C, 0x3A, 0x23, 0x78, 0x01, 0x50, 0x09, 0x50, 0x11, 0x50, 0x19, 0x50, 0x19, 0x30, 0x03, 0x21, 0x30, 0x82, 0x29, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x31, 0x02, 0x19, 0x32, 0x03, 0x11, 0x33, 0x80, 0x19, 0x53, 0x01, 0x11, 0x32, 0x80, 0x11, 0x31, 0x01, 0x19, 0x31, 0x03, 0x21, 0x31, 0x81, 0x21, 0x30, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x84, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x09, 0x21, 0x30, 0x87, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, + 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x85, 0x19, 0xF6, 0x11, 0x95, 0x11, 0x53, 0x11, 0x52, 0x11, 0x11, 0x19, 0x31, 0x02, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x87, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x06, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x92, 0x21, 0x32, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x11, 0xB7, 0x19, 0xF8, 0x1A, 0x19, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0x97, 0x11, 0x76, 0x11, 0x34, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x50, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, + 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x51, 0x01, 0x21, 0x31, 0x85, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD7, 0x01, 0x1A, 0x18, 0x87, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB7, 0x09, 0x96, 0x09, 0x75, 0x09, 0x54, 0x11, 0x54, 0x11, 0x34, 0x02, 0x11, 0x33, 0x80, 0x19, 0x52, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x02, 0x21, 0x31, 0x80, 0x19, 0x10, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x89, 0x21, 0x2F, 0x21, 0x50, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x19, 0xD6, 0x02, 0x19, 0xF7, 0x88, 0x1A, 0x17, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0xB5, 0x11, 0x95, 0x11, 0x53, 0x11, 0x12, 0x19, 0x32, 0x19, 0x51, 0x01, 0x21, 0x51, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x51, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x08, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x87, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x06, 0x21, + 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x06, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x88, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x0F, 0x18, 0xEF, 0x08, 0xEF, 0x21, 0xF3, 0x53, 0xDA, 0x4B, 0xDA, 0x43, 0xB9, 0x01, 0x43, 0xBA, 0x84, 0x43, 0x59, 0x21, 0xF4, 0x00, 0x8E, 0x10, 0xAE, 0x10, 0xCE, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x19, 0x0F, 0x08, 0xCF, 0x19, 0xB2, 0x5C, 0x1C, 0x4B, 0xDB, 0x01, 0x43, 0xBA, 0x8E, 0x43, 0x9A, 0x53, 0xBA, 0x09, 0x10, 0x10, 0xAF, 0x21, 0x10, 0x18, 0xEF, 0x19, 0x30, 0x53, 0x18, 0x63, 0xFB, 0x5B, 0xBA, 0x4B, 0x79, 0x4B, 0x59, 0x4B, 0x7A, 0x4B, 0xBA, 0x4B, 0x9A, 0x01, 0x4B, 0xBA, 0x82, 0x53, 0x9A, 0x11, 0x91, 0x09, 0x10, 0x01, 0x19, 0x30, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, + 0x29, 0x30, 0x06, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x88, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x50, 0x21, 0x30, 0x19, 0x30, 0x01, 0x19, 0x31, 0x89, 0x11, 0x53, 0x11, 0x33, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x51, 0x03, 0x21, 0x30, 0x84, 0x19, 0x10, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x21, 0xB6, 0x01, 0x21, 0xF7, 0x84, 0x19, 0x95, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x04, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x21, 0xD6, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x12, 0x19, 0x52, 0x21, 0x52, 0x21, 0x51, 0x21, 0x31, 0x01, 0x29, 0x31, 0x80, 0x29, 0x51, 0x01, 0x29, 0x30, 0x81, 0x29, 0x50, + 0x31, 0x50, 0x01, 0x29, 0x50, 0x8B, 0x31, 0x51, 0x31, 0x30, 0x31, 0x51, 0x31, 0x31, 0x31, 0x0F, 0x39, 0x0F, 0x30, 0x8C, 0x93, 0x36, 0xE5, 0x1C, 0xDC, 0x99, 0xDC, 0x98, 0xDC, 0x78, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x87, 0xDC, 0x36, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x36, 0x01, 0xDC, 0x57, 0x02, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x05, 0xDC, 0x37, 0x80, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x82, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x37, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x16, 0x03, 0xDC, 0x37, 0x01, 0xDC, 0x38, 0x87, 0xDC, 0x58, 0xDC, 0x59, 0xE4, 0xFB, 0x61, 0x4E, 0x20, 0x09, 0x28, 0xAC, 0x31, 0x0E, 0x31, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x06, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x0A, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x01, 0x19, 0x32, 0x01, 0x19, 0x53, 0x8D, 0x11, 0x33, 0x19, 0x54, 0x11, 0x53, 0x11, 0x33, 0x19, 0x53, 0x19, 0x33, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x85, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, + 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x83, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x82, 0x11, 0x95, 0x11, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x86, 0x19, 0x30, 0x08, 0xEF, 0x01, 0x0F, 0x3C, 0x3B, 0x23, 0xF9, 0x1C, 0x19, 0x14, 0x19, 0x01, 0x0B, 0xD8, 0x01, 0x0B, 0xF9, 0x81, 0x14, 0x1A, 0x0C, 0x19, 0x01, 0x14, 0x19, 0x80, 0x13, 0xF9, 0x01, 0x1B, 0xF9, 0x87, 0x44, 0xBC, 0x09, 0xD1, 0x00, 0xCE, 0x11, 0x30, 0x19, 0x30, 0x21, 0x50, 0x19, 0x2F, 0x21, 0x50, 0x01, 0x21, 0x30, 0x88, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x2F, 0x19, 0x50, 0x19, 0x70, 0x09, 0x2F, 0x01, 0x0F, 0x02, 0x53, 0x24, 0x1A, 0x01, 0x13, 0xF9, 0x80, 0x14, 0x19, 0x01, 0x0C, 0x19, 0x8A, 0x0C, 0x39, 0x0C, 0x19, 0x14, 0x19, 0x1B, 0xF9, 0x34, 0x3A, 0x1A, 0xB5, 0x01, 0x0E, 0x01, 0x0F, 0x11, 0x50, 0x19, 0x50, 0x19, 0x2F, 0x01, 0x21, 0x2F, 0x89, 0x21, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x50, 0x19, 0x50, + 0x08, 0xEE, 0x01, 0x2F, 0x33, 0xD9, 0x23, 0xD9, 0x01, 0x1B, 0xF9, 0x80, 0x13, 0xD8, 0x01, 0x13, 0xD9, 0x85, 0x23, 0xF9, 0x2C, 0x1A, 0x33, 0xD9, 0x01, 0x2F, 0x09, 0x50, 0x11, 0x50, 0x02, 0x19, 0x50, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x19, 0x2F, 0x90, 0x11, 0x2F, 0x00, 0xEF, 0x11, 0xF2, 0x3C, 0x5B, 0x24, 0x19, 0x1C, 0x19, 0x14, 0x19, 0x0B, 0xD8, 0x13, 0xD9, 0x1B, 0xF9, 0x24, 0x1A, 0x34, 0x3A, 0x2B, 0x98, 0x01, 0x50, 0x09, 0x50, 0x11, 0x50, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x05, 0x19, 0x32, 0x80, 0x19, 0x52, 0x01, 0x19, 0x51, 0x81, 0x19, 0x31, 0x19, 0x30, 0x07, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x19, 0xF6, 0x01, 0x21, 0xF7, 0x84, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x11, 0x31, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x06, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x06, 0x29, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, + 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x07, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8D, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xF9, 0x19, 0xF9, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x08, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x31, 0x87, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x11, 0x96, 0x11, 0xF7, 0x1A, 0x19, 0x02, 0x11, 0xF8, 0x80, 0x09, 0xD7, 0x01, 0x09, 0x96, 0x81, 0x09, 0x75, 0x09, 0x54, 0x03, 0x11, 0x54, 0x01, 0x19, 0x53, 0x83, 0x19, 0x52, 0x19, 0x32, 0x21, 0x31, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, + 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x53, 0x11, 0x95, 0x01, 0x19, 0xF7, 0x01, 0x1A, 0x17, 0x80, 0x19, 0xF7, 0x01, 0x1A, 0x18, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xD6, 0x11, 0x95, 0x09, 0x33, 0x11, 0x33, 0x19, 0x52, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x05, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x31, 0x02, 0x21, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x10, 0x21, 0x31, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x05, 0x21, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x11, 0x04, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, + 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x9A, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x18, 0xEF, 0x10, 0xEF, 0x19, 0x71, 0x5B, 0xDA, 0x53, 0xDA, 0x4B, 0xDA, 0x4B, 0xBA, 0x4B, 0x9A, 0x4B, 0x79, 0x19, 0x51, 0x08, 0x8E, 0x10, 0xAE, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x19, 0x0F, 0x18, 0xEF, 0x10, 0xCF, 0x21, 0xB2, 0x5B, 0xDB, 0x01, 0x4B, 0xBA, 0x01, 0x4B, 0x9A, 0x88, 0x53, 0x9A, 0x08, 0xEF, 0x10, 0xAF, 0x10, 0xCF, 0x18, 0xF0, 0x53, 0x18, 0x6B, 0xDB, 0x63, 0xBB, 0x5B, 0x9A, 0x01, 0x4B, 0x7A, 0x80, 0x4B, 0x9A, 0x01, 0x4B, 0xBA, 0x85, 0x4B, 0x9A, 0x53, 0x9A, 0x19, 0xB2, 0x09, 0x0F, 0x11, 0x10, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x05, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x8F, 0x21, 0x0F, 0x29, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x19, 0x10, 0x19, 0x30, 0x19, 0x52, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x21, 0xF7, 0x21, 0xB6, 0x19, 0x74, + 0x11, 0x33, 0x19, 0x52, 0x19, 0x51, 0x04, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x21, 0xB6, 0x01, 0x21, 0xF7, 0x82, 0x19, 0x95, 0x11, 0x12, 0x19, 0x12, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x87, 0x19, 0xB5, 0x11, 0x33, 0x19, 0x53, 0x21, 0x52, 0x21, 0x51, 0x29, 0x51, 0x29, 0x31, 0x29, 0x51, 0x01, 0x29, 0x50, 0x80, 0x29, 0x30, 0x01, 0x29, 0x50, 0x82, 0x31, 0x50, 0x31, 0x51, 0x31, 0x50, 0x01, 0x31, 0x51, 0x86, 0x39, 0x50, 0x31, 0x0F, 0x38, 0xEE, 0x30, 0x8C, 0xAB, 0xD8, 0xDC, 0xFB, 0xDC, 0xB9, 0x01, 0xDC, 0x78, 0x84, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x82, 0xDC, 0x36, 0xE4, 0x57, 0xDC, 0x37, 0x04, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x82, 0xE4, 0x37, 0xDC, 0x37, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x04, 0xDC, 0x37, 0x01, 0xDC, 0x17, 0x80, 0xDC, 0x37, 0x03, 0xDC, 0x17, 0x82, 0xDC, 0x37, 0xDC, 0x17, 0xDC, 0x37, 0x01, 0xDC, 0x38, + 0x88, 0xDC, 0x9A, 0xC3, 0xF8, 0x28, 0x08, 0x30, 0x6B, 0x30, 0xCD, 0x30, 0xEE, 0x31, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x0C, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x06, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x11, 0x03, 0x19, 0x11, 0x81, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x10, 0x04, 0x21, 0x30, 0x85, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x8C, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x88, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0xD6, 0x1A, 0x17, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x29, + 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x9C, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x10, 0x19, 0x30, 0x08, 0xEF, 0x01, 0x0F, 0x44, 0x1B, 0x23, 0xB9, 0x23, 0xFA, 0x1B, 0xFA, 0x13, 0xB8, 0x0B, 0xB8, 0x0B, 0xB9, 0x0B, 0xB8, 0x0B, 0xD9, 0x13, 0xF9, 0x1C, 0x1A, 0x01, 0x13, 0xD9, 0x86, 0x24, 0x19, 0x2C, 0x1A, 0x44, 0x7B, 0x11, 0xF2, 0x00, 0xCE, 0x11, 0x30, 0x19, 0x30, 0x01, 0x21, 0x50, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x50, 0x88, 0x19, 0x30, 0x08, 0xEF, 0x00, 0xAE, 0x2B, 0x37, 0x2B, 0xFA, 0x23, 0xD9, 0x1B, 0xD9, 0x1B, 0xF9, 0x1C, 0x19, 0x01, 0x13, 0xF9, 0x87, 0x13, 0xD9, 0x1B, 0xF9, 0x23, 0xD9, 0x33, 0xFA, 0x1A, 0x74, 0x00, 0xEE, 0x09, 0x0F, 0x11, 0x30, 0x01, 0x19, 0x2F, 0x06, 0x21, 0x2F, 0x84, 0x19, 0x2F, 0x08, 0xEE, 0x00, 0xEE, 0x3B, 0xFA, 0x23, 0x98, 0x01, 0x23, 0xF9, 0x01, 0x1B, 0xD9, 0x84, 0x1B, 0xB9, 0x2B, 0xD9, 0x33, 0xFA, 0x3B, 0xD9, 0x01, 0x0F, 0x01, 0x11, 0x50, 0x82, 0x11, 0x30, 0x19, 0x30, 0x21, 0x50, 0x04, 0x21, 0x2F, 0x94, 0x21, 0x0F, 0x21, 0x2F, 0x19, 0x2F, 0x21, 0x30, 0x19, 0x30, 0x08, 0xEF, 0x09, 0x91, 0x3C, 0x1A, 0x2B, 0xF9, 0x23, 0xF9, 0x13, 0xD9, 0x13, 0xB8, 0x1B, 0xD9, 0x23, 0xD9, 0x2B, 0xFA, 0x33, 0xFA, 0x33, 0x78, 0x01, 0x2F, 0x09, 0x30, 0x11, 0x30, 0x19, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, + 0x29, 0x10, 0x03, 0x21, 0x10, 0x02, 0x21, 0x31, 0x01, 0x19, 0x11, 0x03, 0x19, 0x31, 0x81, 0x19, 0x51, 0x19, 0x30, 0x01, 0x21, 0x50, 0x06, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x19, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x86, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x21, 0x10, + 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x19, 0x31, 0x8C, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xB7, 0x19, 0xD8, 0x19, 0xF9, 0x1A, 0x19, 0x19, 0xF9, 0x11, 0xD7, 0x11, 0x75, 0x19, 0x75, 0x11, 0x33, 0x01, 0x19, 0x32, 0x80, 0x21, 0x52, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x87, 0x21, 0x52, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0xB6, 0x11, 0xF7, 0x11, 0xF8, 0x09, 0xF8, 0x01, 0x0A, 0x19, 0x84, 0x09, 0xD8, 0x09, 0xB7, 0x09, 0x96, 0x09, 0x76, 0x11, 0xB6, 0x02, 0x19, 0xB6, 0x81, 0x19, 0xB5, 0x19, 0x74, 0x01, 0x19, 0x53, 0x81, 0x19, 0x32, 0x21, 0x32, 0x02, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x03, 0x19, 0xF7, 0x02, 0x11, 0xB6, 0x80, 0x11, 0xD7, 0x01, 0x19, 0xF8, 0x85, 0x11, + 0xD8, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x34, 0x08, 0xF2, 0x11, 0x12, 0x01, 0x11, 0x11, 0x01, 0x10, 0xF1, 0x01, 0x19, 0x11, 0x01, 0x11, 0x11, 0x82, 0x19, 0x32, 0x19, 0x11, 0x11, 0x11, 0x06, 0x19, 0x11, 0x81, 0x11, 0x11, 0x10, 0xF1, 0x02, 0x18, 0xF1, 0x02, 0x10, 0xF1, 0x81, 0x11, 0x11, 0x10, 0xF1, 0x01, 0x18, 0xF1, 0x01, 0x10, 0xF1, 0x01, 0x18, 0xF1, 0x81, 0x10, 0xF1, 0x19, 0x11, 0x03, 0x10, 0xF1, 0x81, 0x19, 0x11, 0x18, 0xF1, 0x05, 0x19, 0x11, 0x80, 0x19, 0x31, 0x03, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x89, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x50, 0x21, 0x2F, 0x01, + 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x18, 0xEF, 0x82, 0x19, 0x51, 0x63, 0xFB, 0x5B, 0xDA, 0x02, 0x53, 0xBA, 0x8B, 0x5B, 0x9A, 0x08, 0xCF, 0x08, 0x6E, 0x18, 0xEF, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x20, 0xEF, 0x18, 0xEF, 0x08, 0xAE, 0x21, 0x92, 0x5B, 0xDB, 0x03, 0x53, 0x9A, 0x84, 0x53, 0x5A, 0x08, 0xAF, 0x00, 0x2D, 0x18, 0xCF, 0x5B, 0x19, 0x01, 0x63, 0x7A, 0x82, 0x5B, 0x7A, 0x53, 0x59, 0x53, 0x7A, 0x01, 0x53, 0x9A, 0x86, 0x53, 0xBA, 0x53, 0x9A, 0x5B, 0xBA, 0x21, 0xF3, 0x11, 0x10, 0x19, 0x30, 0x19, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x51, 0x19, 0x32, 0x01, 0x11, 0x12, 0x89, 0x21, 0xB6, 0x29, 0xF7, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x51, 0x19, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x88, 0x19, 0x31, 0x19, 0x32, 0x11, 0x13, 0x21, 0xB5, 0x29, 0xF7, 0x2A, 0x17, 0x21, 0x95, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, + 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8D, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x21, 0xD6, 0x21, 0xF6, 0x19, 0xF6, 0x19, 0xB5, 0x11, 0x33, 0x19, 0x53, 0x21, 0x73, 0x29, 0x52, 0x29, 0x51, 0x29, 0x31, 0x29, 0x51, 0x01, 0x29, 0x50, 0x80, 0x31, 0x71, 0x01, 0x31, 0x50, 0x04, 0x31, 0x51, 0x87, 0x39, 0x30, 0x39, 0x2F, 0x39, 0x0E, 0x38, 0x8C, 0xB3, 0xF8, 0xDC, 0xDB, 0xDC, 0x99, 0xDC, 0x78, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x02, 0xDC, 0x36, 0x02, 0xDC, 0x57, 0x83, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x37, 0x06, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x36, 0x03, 0xDC, 0x37, 0x01, 0xDC, 0x17, 0x80, 0xE4, 0x37, 0x01, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x8A, 0xDB, 0xF6, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x38, 0xDC, 0x58, 0xDC, 0x9A, 0xBC, 0x19, 0x40, 0xAC, 0x30, 0x6B, 0x30, 0xCE, 0x30, 0xEE, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x09, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x07, 0x29, 0x30, 0x80, 0x29, 0x50, 0x06, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x8A, + 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x31, 0x03, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x19, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0xD6, 0x11, 0xF7, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x19, 0x10, 0x86, 0x08, 0xEF, 0x00, 0xEF, 0x54, 0x5C, 0x33, 0xDA, 0x2B, 0xDA, 0x23, 0xB9, + 0x13, 0x78, 0x02, 0x1B, 0xB9, 0x01, 0x23, 0xFA, 0x8A, 0x2C, 0x1B, 0x2C, 0x1A, 0x23, 0xFA, 0x2B, 0xFA, 0x34, 0x3A, 0x54, 0x9C, 0x11, 0xB2, 0x00, 0xCE, 0x19, 0x30, 0x21, 0x50, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x30, 0x11, 0x10, 0x00, 0x8E, 0x32, 0x75, 0x4B, 0xFB, 0x3B, 0xBA, 0x33, 0xDA, 0x2B, 0xDA, 0x01, 0x23, 0xB9, 0x80, 0x23, 0xDA, 0x01, 0x23, 0xB9, 0x86, 0x23, 0x99, 0x33, 0xDA, 0x44, 0x1B, 0x3B, 0x38, 0x00, 0xAE, 0x11, 0x10, 0x19, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x19, 0x0F, 0x86, 0x11, 0x0F, 0x01, 0x2F, 0x54, 0x3B, 0x33, 0xD9, 0x33, 0xB9, 0x2B, 0xB9, 0x23, 0x99, 0x01, 0x2B, 0xB9, 0x89, 0x33, 0xBA, 0x3B, 0xFA, 0x3B, 0x79, 0x00, 0xEF, 0x09, 0x0F, 0x11, 0x30, 0x19, 0x50, 0x19, 0x30, 0x21, 0x30, 0x19, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x91, 0x21, 0x50, 0x19, 0x30, 0x08, 0xCF, 0x09, 0x50, 0x43, 0xB9, 0x33, 0xD9, 0x2B, 0xFA, 0x23, 0xD9, 0x1B, 0xB9, 0x23, 0xD9, 0x2B, 0xDA, 0x33, 0xFA, 0x3B, 0xFA, 0x3B, 0x78, 0x01, 0x0F, 0x11, 0x30, 0x11, 0x0F, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x01, 0x21, 0x31, 0x03, 0x19, 0x31, 0x03, 0x19, 0x30, 0x03, 0x21, 0x30, 0x87, 0x21, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, + 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x86, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x22, 0x17, 0x01, 0x21, 0xF7, 0x83, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x01, 0x19, 0x31, 0x82, 0x19, 0x30, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x90, 0x19, 0x30, 0x19, 0x31, 0x19, 0x51, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x96, 0x19, 0xB7, 0x19, 0xF9, 0x1A, 0x19, 0x1A, 0x39, 0x1A, 0x19, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x32, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, + 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8A, 0x21, 0x32, 0x19, 0x32, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0xD6, 0x11, 0xF8, 0x12, 0x18, 0x09, 0xF8, 0x0A, 0x19, 0x09, 0xF8, 0x01, 0x09, 0xB7, 0x01, 0x11, 0xB7, 0x8A, 0x11, 0xB6, 0x11, 0xB7, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x54, 0x19, 0x53, 0x19, 0x52, 0x19, 0x11, 0x19, 0x10, 0x07, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x19, 0x31, 0x11, 0x12, 0x11, 0x95, 0x01, 0x19, 0xD7, 0x83, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x96, 0x09, 0x76, 0x02, 0x09, 0x75, 0x81, 0x11, 0xB6, 0x11, 0xD7, 0x02, 0x11, 0xD8, 0x82, 0x11, 0x96, 0x09, 0x34, 0x09, 0x33, 0x04, 0x09, 0x12, 0x01, 0x11, 0x12, 0x01, 0x09, 0x12, 0x80, 0x09, 0x13, 0x02, 0x09, 0x12, 0x81, 0x11, 0x12, 0x09, 0x12, 0x01, 0x08, 0xF2, 0x82, 0x09, 0x12, 0x08, 0xF2, 0x09, 0x12, 0x01, 0x08, 0xF2, 0x80, 0x09, 0x12, 0x01, 0x08, 0xF2, 0x80, 0x09, 0x12, 0x09, 0x08, 0xF2, 0x01, 0x08, 0xD2, 0x01, 0x08, 0xF2, 0x80, 0x08, 0xD2, 0x02, 0x08, 0xF2, 0x81, 0x09, + 0x12, 0x08, 0xF2, 0x01, 0x08, 0xF1, 0x81, 0x10, 0xF2, 0x11, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x0B, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x88, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x18, 0xCF, 0x10, 0xEF, 0x63, 0xBA, 0x5B, 0xBA, 0x02, 0x53, 0x9A, 0x84, 0x5B, 0x7A, 0x08, 0x8E, 0x10, 0x8E, 0x20, 0xF0, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x84, 0x18, 0xCF, 0x10, 0xCF, 0x21, 0x71, 0x63, 0xDB, 0x53, 0xBB, 0x01, 0x53, 0x9B, 0x86, 0x53, 0x7B, 0x5B, 0x7B, 0x00, 0x4E, 0x18, 0xF0, 0x63, 0x39, 0x63, 0x5A, 0x5B, 0x39, 0x01, 0x5B, 0x5A, 0x83, 0x53, 0x5A, 0x53, 0x7A, 0x5B, 0x9B, 0x5B, 0xBB, 0x01, + 0x5B, 0x9A, 0x84, 0x21, 0xD3, 0x10, 0xEF, 0x19, 0x30, 0x19, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x51, 0x29, 0x72, 0x19, 0x32, 0x01, 0x11, 0x12, 0x89, 0x19, 0x75, 0x29, 0xF7, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x51, 0x21, 0x51, 0x21, 0x50, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x21, 0xB5, 0x21, 0xF7, 0x29, 0xF7, 0x21, 0xB5, 0x11, 0x12, 0x19, 0x12, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x19, + 0x11, 0x11, 0x32, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xF6, 0x19, 0xB5, 0x11, 0x33, 0x19, 0x33, 0x29, 0x73, 0x01, 0x29, 0x52, 0x83, 0x29, 0x31, 0x29, 0x51, 0x31, 0x51, 0x29, 0x50, 0x01, 0x31, 0x50, 0x01, 0x31, 0x51, 0x80, 0x31, 0x71, 0x01, 0x31, 0x51, 0x88, 0x31, 0x50, 0x39, 0x50, 0x39, 0x2F, 0x39, 0x0E, 0x40, 0xAC, 0xBC, 0x19, 0xDC, 0xDA, 0xE4, 0xB9, 0xDC, 0x78, 0x06, 0xDC, 0x57, 0x83, 0xDC, 0x36, 0xDC, 0x56, 0xDC, 0x36, 0xDC, 0x56, 0x02, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xDC, 0x57, 0x06, 0xDC, 0x37, 0x80, 0xDC, 0x57, 0x04, 0xDC, 0x37, 0x81, 0xDC, 0x17, 0xE4, 0x37, 0x01, 0xDC, 0x17, 0x82, 0xE4, 0x37, 0xE4, 0x17, 0xDB, 0xF6, 0x01, 0xDC, 0x16, 0x8B, 0xDB, 0xF6, 0xDB, 0xF7, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x38, 0xD4, 0x18, 0xD4, 0x38, 0xDC, 0xBB, 0xCC, 0x9B, 0x61, 0x90, 0x30, 0x8C, 0x38, 0xEE, 0x01, 0x31, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x0C, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x0C, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x89, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x04, 0x21, 0x10, 0x82, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x04, 0x21, 0x2F, + 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x20, 0xF0, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x89, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0xD6, 0x11, 0xF7, 0x11, 0xD7, 0x19, 0x95, 0x11, 0x32, 0x19, 0x11, 0x21, 0x11, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x10, 0x08, 0xCF, 0x00, 0xAF, 0x64, 0x7D, 0x4B, 0xFB, 0x43, 0xFB, 0x33, 0x9A, 0x3B, 0xFB, 0x4C, 0x7D, 0x01, 0x44, 0x3C, 0x81, 0x44, 0x1B, 0x3B, 0xBA, 0x01, 0x3B, 0xDB, 0x86, 0x44, 0x1B, 0x43, 0xFB, 0x4C, 0x1B, 0x53, 0xDA, 0x09, 0x10, 0x10, 0xCF, 0x19, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x4F, 0x21, 0x2F, 0x21, 0x50, 0x01, 0x21, 0x30, 0x85, 0x18, 0xF0, 0x10, 0xF0, 0x5B, 0x9A, 0x4B, 0x7A, 0x43, 0x7A, 0x43, 0x9A, 0x01, 0x3B, 0x9A, 0x02, 0x33, 0x9A, 0x95, 0x33, 0xBA, 0x3B, 0xBA, 0x43, 0xBA, 0x4B, 0x9A, 0x64, 0x1C, 0x19, 0x51, 0x10, 0xF0, + 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x19, 0x0F, 0x10, 0xEF, 0x00, 0xEE, 0x5C, 0x1B, 0x43, 0x9A, 0x01, 0x3B, 0x9A, 0x87, 0x33, 0x79, 0x3B, 0xBA, 0x3B, 0x79, 0x3B, 0x7A, 0x4B, 0xFB, 0x43, 0x79, 0x00, 0xCE, 0x11, 0x10, 0x01, 0x19, 0x30, 0x87, 0x19, 0x2F, 0x21, 0x2F, 0x19, 0x2F, 0x19, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x10, 0xCF, 0x09, 0x10, 0x53, 0xDB, 0x43, 0xBA, 0x3B, 0xDA, 0x33, 0xDA, 0x01, 0x33, 0xBA, 0x85, 0x33, 0x9A, 0x3B, 0xDA, 0x4B, 0xFB, 0x43, 0x58, 0x01, 0x0F, 0x11, 0x30, 0x01, 0x19, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x01, 0x21, 0x31, 0x82, 0x19, 0x31, 0x19, 0x30, 0x19, 0x31, 0x04, 0x19, 0x30, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x84, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x86, 0x19, 0xF6, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x11, 0x12, 0x19, 0x31, 0x19, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x2F, + 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x50, 0x21, 0x51, 0x19, 0x51, 0x19, 0x72, 0x19, 0x52, 0x11, 0x53, 0x11, 0x74, 0x11, 0x96, 0x19, 0xB7, 0x19, 0xF8, 0x01, 0x1A, 0x19, 0x85, 0x11, 0xF8, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x51, 0x02, 0x21, 0x31, 0x97, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0xD7, 0x11, + 0xF8, 0x09, 0xF8, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0xB7, 0x11, 0xB7, 0x11, 0xB6, 0x09, 0x75, 0x11, 0x76, 0x11, 0xB7, 0x22, 0x19, 0x22, 0x18, 0x19, 0xD7, 0x19, 0xB7, 0x21, 0xD6, 0x11, 0x53, 0x11, 0x11, 0x19, 0x11, 0x04, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x88, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB7, 0x09, 0x96, 0x11, 0x96, 0x09, 0x75, 0x09, 0x55, 0x09, 0x54, 0x01, 0x09, 0x55, 0x80, 0x09, 0x76, 0x02, 0x11, 0xD8, 0x81, 0x11, 0xF8, 0x11, 0xD7, 0x02, 0x11, 0xB6, 0x82, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0xD7, 0x05, 0x11, 0xB6, 0x82, 0x11, 0x96, 0x11, 0xB6, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x02, 0x19, 0xD7, 0x81, 0x11, 0xB6, 0x19, 0xB7, 0x02, 0x11, 0xB6, 0x01, 0x11, 0xD6, 0x03, 0x11, 0xB6, 0x82, 0x19, 0xD6, 0x11, 0xB6, 0x11, 0xB7, 0x07, 0x19, 0xD7, 0x03, 0x19, 0xF7, 0x01, 0x19, 0xD7, 0x83, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x01, 0x11, 0x12, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x09, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, + 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x04, 0x29, 0x10, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x18, 0xEF, 0x87, 0x6B, 0xBA, 0x63, 0xBB, 0x5B, 0x9A, 0x5B, 0xBA, 0x5B, 0x9A, 0x5B, 0x7A, 0x08, 0x8E, 0x18, 0xAF, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x95, 0x10, 0xCF, 0x29, 0xB2, 0x63, 0xBB, 0x5B, 0x9A, 0x5B, 0x9B, 0x5B, 0x7A, 0x5B, 0x7B, 0x63, 0x9B, 0x3A, 0x15, 0x63, 0x3A, 0x6B, 0x7B, 0x63, 0x5A, 0x63, 0x7B, 0x5B, 0x5A, 0x53, 0x19, 0x5B, 0x5A, 0x5B, 0x9A, 0x5B, 0xBB, 0x5B, 0x9A, 0x5B, 0x79, 0x21, 0xB2, 0x10, 0xEF, 0x01, 0x19, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x85, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, + 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x51, 0x8A, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x21, 0xB5, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x50, 0x8B, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x21, 0xB5, 0x21, 0xF7, 0x2A, 0x17, 0x19, 0xB5, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x51, 0x83, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x19, 0xB5, 0x02, 0x19, 0xF7, 0x85, 0x19, 0xB6, 0x11, 0x54, 0x19, 0x53, 0x21, 0x73, 0x29, 0x52, 0x29, 0x72, 0x01, 0x29, 0x51, 0x83, 0x31, 0x71, 0x29, 0x50, 0x31, 0x50, 0x29, 0x50, 0x01, 0x31, 0x51, 0x02, 0x31, 0x71, + 0x87, 0x31, 0x50, 0x39, 0x30, 0x39, 0x2F, 0x41, 0x2F, 0x48, 0xED, 0xD4, 0xBB, 0xDC, 0xBA, 0xDC, 0x99, 0x01, 0xDC, 0x58, 0x01, 0xDC, 0x37, 0x83, 0xE4, 0x57, 0xDC, 0x36, 0xE4, 0x57, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x81, 0xE4, 0x57, 0xDC, 0x56, 0x05, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x88, 0xDC, 0x16, 0xDC, 0x17, 0xDC, 0x37, 0xE4, 0x17, 0xDC, 0x17, 0xE4, 0x17, 0xDC, 0x16, 0xDC, 0x17, 0xDC, 0x16, 0x05, 0xDC, 0x17, 0x87, 0xDC, 0x18, 0xDC, 0x38, 0xDC, 0x59, 0xD4, 0x7A, 0xDC, 0xFC, 0xA3, 0x97, 0x40, 0xCD, 0x38, 0xEE, 0x01, 0x31, 0x0F, 0x01, 0x31, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x50, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x07, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x05, 0x29, 0x30, 0x01, 0x29, 0x50, 0x03, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, + 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x84, 0x19, 0x10, 0x19, 0x31, 0x11, 0x32, 0x09, 0x33, 0x11, 0xD6, 0x01, 0x19, 0xF7, 0x83, 0x19, 0x95, 0x11, 0x32, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x8E, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x10, 0xCF, 0x00, 0x8E, 0x6C, 0x3D, 0x4B, 0x5A, 0x53, 0x7B, 0x3A, 0xF9, 0x3B, 0x19, 0x32, 0xF8, 0x6C, 0x9E, 0x19, 0xF4, 0x01, 0x00, 0x6E, 0x04, 0x00, 0x4E, 0x86, 0x00, 0x2D, 0x10, 0x8F, 0x18, 0xAF, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x50, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x89, 0x18, 0xF0, 0x10, 0xAF, 0x5A, 0xD8, 0x6B, 0x7B, 0x5B, 0x5A, 0x5B, 0x5B, 0x53, 0x5B, 0x4B, 0x5A, 0x53, 0x7B, 0x4B, 0x7B, 0x01, 0x4B, 0x7A, 0x01, 0x4B, 0x9B, 0x81, 0x53, 0x7A, 0x53, 0x5A, 0x01, 0x63, 0x7A, 0x81, 0x08, 0x6E, 0x20, 0xF0, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x2F, + 0x03, 0x21, 0x2F, 0x83, 0x10, 0xEE, 0x08, 0xCE, 0x63, 0xDB, 0x4B, 0x5A, 0x03, 0x4B, 0x7A, 0x86, 0x43, 0x5A, 0x4B, 0x7A, 0x5B, 0xFC, 0x63, 0xFC, 0x00, 0x8F, 0x11, 0x10, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x10, 0xCF, 0x11, 0x10, 0x6B, 0xFC, 0x53, 0xBB, 0x4B, 0x9B, 0x01, 0x43, 0x7A, 0x86, 0x43, 0x9A, 0x43, 0x7A, 0x4B, 0xBB, 0x5B, 0xDB, 0x53, 0x79, 0x08, 0xEF, 0x11, 0x10, 0x01, 0x19, 0x10, 0x02, 0x21, 0x30, 0x06, 0x21, 0x10, 0x02, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x31, 0x01, 0x19, 0x30, 0x07, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x8A, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x86, 0x19, 0xF6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, + 0x10, 0x01, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x50, 0x21, 0x30, 0x21, 0x51, 0x19, 0x51, 0x01, 0x19, 0x32, 0x84, 0x11, 0x53, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x19, 0xF8, 0x01, 0x1A, 0x19, 0x8B, 0x1A, 0x18, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x88, 0x21, 0x10, 0x21, 0x31, 0x21, 0x11, 0x19, 0x31, 0x19, 0x12, 0x11, 0x12, 0x11, 0x53, 0x11, 0xB6, 0x11, 0xF7, 0x01, 0x09, 0xF8, 0x01, 0x09, 0xD8, 0x81, 0x09, 0xB7, 0x09, 0x96, 0x01, + 0x09, 0x55, 0x01, 0x09, 0x76, 0x88, 0x11, 0xB7, 0x19, 0xF8, 0x11, 0xF8, 0x19, 0xF8, 0x19, 0xB7, 0x11, 0x54, 0x11, 0x11, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0xB6, 0x01, 0x11, 0xD7, 0x80, 0x09, 0x96, 0x01, 0x09, 0x75, 0x80, 0x09, 0x55, 0x02, 0x09, 0x54, 0x86, 0x09, 0x55, 0x09, 0x56, 0x09, 0x97, 0x09, 0xB8, 0x09, 0xD8, 0x11, 0xF9, 0x12, 0x19, 0x02, 0x1A, 0x39, 0x84, 0x22, 0x59, 0x22, 0x39, 0x22, 0x5A, 0x22, 0x59, 0x22, 0x7A, 0x02, 0x22, 0x59, 0x81, 0x22, 0x5A, 0x22, 0x7A, 0x01, 0x22, 0x5A, 0x80, 0x2A, 0x7A, 0x02, 0x22, 0x5A, 0x80, 0x22, 0x7A, 0x04, 0x22, 0x5A, 0x02, 0x22, 0x7A, 0x01, 0x22, 0x59, 0x83, 0x2A, 0x79, 0x2A, 0x7A, 0x22, 0x59, 0x22, 0x7A, 0x01, 0x22, 0x5A, 0x86, 0x22, 0x59, 0x22, 0x5A, 0x22, 0x59, 0x22, 0x5A, 0x22, 0x39, 0x22, 0x59, 0x22, 0x39, 0x02, 0x22, 0x59, 0x8B, 0x22, 0x39, 0x22, 0x59, 0x22, 0x39, 0x22, 0x59, 0x2A, 0x59, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x51, 0x19, 0x31, 0x09, 0x21, 0x30, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, + 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x89, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x20, 0xEF, 0x10, 0xAE, 0x6B, 0x9A, 0x6B, 0xBB, 0x01, 0x63, 0x9A, 0x85, 0x5B, 0x7A, 0x63, 0x5A, 0x10, 0x8F, 0x18, 0xAF, 0x21, 0x10, 0x20, 0xEF, 0x01, 0x29, 0x30, 0x84, 0x20, 0xEF, 0x21, 0x10, 0x10, 0xAE, 0x29, 0x92, 0x63, 0xBB, 0x01, 0x63, 0x9B, 0x80, 0x5B, 0x7B, 0x01, 0x5B, 0x3A, 0x01, 0x63, 0x1A, 0x81, 0x63, 0x3A, 0x6B, 0x5B, 0x01, 0x63, 0x5A, 0x8B, 0x5B, 0x3A, 0x5B, 0x5A, 0x63, 0x9B, 0x63, 0x9A, 0x5B, 0x7A, 0x21, 0x92, 0x10, 0xEF, 0x19, 0x0F, 0x21, 0x30, 0x19, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, + 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x88, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x19, 0xD5, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x30, 0x01, 0x21, 0x50, 0x01, 0x21, 0x0F, 0x89, 0x21, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xF6, 0x21, 0xB5, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x88, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x51, 0x84, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, + 0x19, 0xB6, 0x02, 0x19, 0xF7, 0x85, 0x11, 0xB6, 0x11, 0x74, 0x19, 0x53, 0x21, 0x73, 0x21, 0x53, 0x29, 0x52, 0x02, 0x29, 0x51, 0x02, 0x31, 0x51, 0x81, 0x31, 0x71, 0x31, 0x51, 0x01, 0x31, 0x71, 0x89, 0x31, 0x51, 0x31, 0x50, 0x39, 0x30, 0x39, 0x2F, 0x41, 0x0E, 0x48, 0xED, 0xDC, 0xDC, 0xDC, 0xBA, 0xDC, 0x99, 0xDC, 0x78, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x87, 0xDC, 0x36, 0xDC, 0x57, 0xDC, 0x36, 0xDC, 0x57, 0xDC, 0x56, 0xDC, 0x57, 0xE4, 0x57, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x36, 0x02, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x80, 0xDC, 0x57, 0x04, 0xDC, 0x37, 0x01, 0xDC, 0x16, 0x81, 0xE4, 0x17, 0xDC, 0x17, 0x01, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x80, 0xDB, 0xF6, 0x02, 0xDC, 0x17, 0x83, 0xDB, 0xF7, 0xDC, 0x17, 0xDC, 0x18, 0xDC, 0x38, 0x01, 0xDC, 0x59, 0x84, 0xD4, 0x9A, 0xDD, 0x1D, 0x8A, 0xB4, 0x30, 0x8C, 0x39, 0x0F, 0x01, 0x31, 0x0F, 0x80, 0x31, 0x30, 0x0D, 0x29, 0x30, 0x80, 0x29, 0x10, 0x09, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, + 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x31, 0x11, 0x31, 0x11, 0x53, 0x11, 0xD6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x93, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x18, 0xEF, 0x10, 0xAF, 0x00, 0x4E, 0x73, 0xDC, 0x63, 0x7B, 0x6B, 0x7C, 0x5B, 0x1A, 0x52, 0xFA, 0x63, 0x5A, 0x6B, 0xBC, 0x31, 0xB4, 0x18, 0x90, 0x18, 0x6F, 0x04, 0x10, 0x2F, 0x01, 0x10, 0x2E, 0x01, 0x20, 0xAF, 0x82, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x50, 0x29, 0x30, 0x21, 0x10, 0x20, 0xF0, 0x18, 0x8F, 0x31, 0x53, 0x73, 0x3A, 0x6B, 0x1A, 0x01, 0x6B, 0x1B, 0x01, 0x63, 0x3B, 0x84, 0x63, 0x5B, 0x5B, 0x5B, 0x63, 0x5B, 0x5B, 0x3B, 0x5B, 0x5B, 0x01, 0x63, 0x3B, 0x01, 0x63, 0x1A, 0x83, 0x7B, 0x7B, 0x49, 0xF5, 0x20, + 0xB0, 0x20, 0xF0, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x8F, 0x21, 0x0F, 0x10, 0xEE, 0x08, 0x8E, 0x63, 0x7B, 0x63, 0x5B, 0x63, 0x7B, 0x63, 0x7C, 0x5B, 0x5B, 0x5B, 0x3B, 0x63, 0x5B, 0x63, 0x7B, 0x63, 0x9C, 0x73, 0xDD, 0x08, 0x8F, 0x18, 0xD0, 0x19, 0x10, 0x02, 0x21, 0x30, 0x08, 0x21, 0x2F, 0x83, 0x21, 0x10, 0x18, 0xCF, 0x10, 0xAF, 0x6B, 0xBB, 0x01, 0x63, 0x7B, 0x8A, 0x53, 0x3B, 0x53, 0x5B, 0x53, 0x3B, 0x53, 0x5B, 0x63, 0x9B, 0x63, 0xBB, 0x5B, 0x59, 0x10, 0xCF, 0x18, 0xF0, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x03, 0x19, 0x31, 0x84, 0x19, 0x52, 0x19, 0x51, 0x19, 0x31, 0x19, 0x51, 0x19, 0x31, 0x01, 0x21, 0x51, 0x80, 0x21, 0x31, 0x06, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x84, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x1A, 0x17, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x52, 0x21, 0x31, 0x04, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x87, 0x29, 0x0F, 0x21, + 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x51, 0x01, 0x19, 0x31, 0x87, 0x19, 0x11, 0x11, 0x32, 0x19, 0x74, 0x19, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xF8, 0x12, 0x19, 0x01, 0x11, 0xF8, 0x85, 0x11, 0xB7, 0x09, 0x75, 0x11, 0x34, 0x11, 0x33, 0x19, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x81, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x82, 0x11, 0x32, 0x11, 0x94, 0x19, 0xD7, 0x01, 0x11, 0xF8, 0x82, 0x09, 0xD8, + 0x09, 0xB7, 0x09, 0x96, 0x01, 0x09, 0x55, 0x84, 0x09, 0x35, 0x09, 0x55, 0x09, 0x76, 0x09, 0x96, 0x11, 0xB7, 0x01, 0x11, 0xD8, 0x84, 0x19, 0xD7, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x04, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x11, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB7, 0x09, 0x96, 0x09, 0x75, 0x09, 0x55, 0x09, 0x75, 0x01, 0x09, 0x54, 0x83, 0x09, 0x55, 0x09, 0x76, 0x09, 0x97, 0x11, 0xD8, 0x01, 0x09, 0xD8, 0x81, 0x11, 0xF8, 0x1A, 0x19, 0x08, 0x1A, 0x18, 0x05, 0x19, 0xF8, 0x80, 0x19, 0xD8, 0x04, 0x19, 0xF8, 0x80, 0x19, 0xD8, 0x03, 0x19, 0xF8, 0x82, 0x19, 0xD7, 0x19, 0xF8, 0x19, 0xF7, 0x01, 0x19, 0xD7, 0x82, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xD8, 0x01, 0x19, 0xF8, 0x02, 0x19, 0xD8, 0x01, 0x19, 0xF8, 0x80, 0x19, 0xD7, 0x01, 0x19, 0xF8, 0x80, 0x19, 0xD7, 0x03, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x87, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x32, 0x11, 0x11, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x06, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, + 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x05, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x8F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x20, 0xEF, 0x88, 0x18, 0xCF, 0x6B, 0x9A, 0x6B, 0xBB, 0x63, 0x7A, 0x63, 0x7B, 0x63, 0x7A, 0x63, 0x3A, 0x10, 0xAF, 0x18, 0xAF, 0x01, 0x20, 0xF0, 0x01, 0x29, 0x30, 0x01, 0x20, 0xEF, 0x84, 0x10, 0xAF, 0x21, 0x51, 0x6B, 0xBB, 0x63, 0x7B, 0x63, 0x5B, 0x02, 0x63, 0x3B, 0x01, 0x63, 0x1A, 0x89, 0x63, 0x3B, 0x63, 0x3A, 0x63, 0x5B, 0x6B, 0x7B, 0x63, 0x5A, 0x63, 0x7A, 0x63, 0x9A, 0x63, 0x7A, 0x21, 0x71, 0x19, 0x0F, 0x01, 0x19, 0x30, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, + 0x0F, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x19, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x01, 0x21, 0xD6, 0x8D, 0x19, 0x95, 0x11, 0x33, 0x19, 0x52, 0x19, 0x31, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x01, 0x21, 0xF6, 0x83, 0x19, 0x94, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x05, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x90, 0x21, 0x31, 0x21, 0x52, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x09, 0x75, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x74, 0x19, 0x74, 0x21, 0x73, 0x21, 0x52, 0x29, 0x52, 0x01, 0x29, 0x51, 0x02, 0x31, 0x51, 0x04, 0x31, 0x71, 0x8A, 0x39, 0x51, 0x39, 0x50, 0x41, 0x4F, 0x41, 0x0E, 0x48, 0xCD, 0xDC, 0xDC, 0xDC, 0xBA, 0xDC, 0x99, 0xDC, 0x78, 0xDC, 0x58, 0xDC, 0x57, 0x02, 0xDC, 0x37, 0x01, 0xDC, 0x57, + 0x82, 0xDC, 0x36, 0xE4, 0x57, 0xDC, 0x36, 0x03, 0xDC, 0x57, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x82, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x36, 0x04, 0xDC, 0x57, 0x01, 0xDC, 0x36, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x16, 0x04, 0xDC, 0x17, 0x01, 0xDC, 0x16, 0x06, 0xDC, 0x17, 0x80, 0xDB, 0xF7, 0x01, 0xDC, 0x38, 0x87, 0xD4, 0x39, 0xCC, 0x39, 0xDD, 0x1D, 0x40, 0x8C, 0x40, 0xEE, 0x39, 0x2F, 0x39, 0x30, 0x31, 0x30, 0x01, 0x29, 0x30, 0x01, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x09, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x87, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x20, 0xEF, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x89, 0x19, + 0x31, 0x11, 0x11, 0x11, 0x32, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8C, 0x20, 0xF0, 0x18, 0xAF, 0x10, 0x8F, 0x8B, 0xFD, 0x7B, 0x5B, 0x73, 0x3B, 0x73, 0x1B, 0x7B, 0x3C, 0x7B, 0x5C, 0x72, 0xDA, 0x8B, 0x9D, 0x9B, 0xFF, 0x9B, 0xDE, 0x02, 0x9B, 0xBE, 0x88, 0x9B, 0xDE, 0x93, 0x7C, 0x93, 0xBD, 0x9C, 0x1D, 0x73, 0x19, 0x20, 0x6E, 0x28, 0xF0, 0x20, 0xEF, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x86, 0x20, 0xF0, 0x20, 0xAF, 0x20, 0x90, 0x72, 0xB9, 0x83, 0x1B, 0x82, 0xFB, 0x83, 0x1C, 0x01, 0x7B, 0x1C, 0x82, 0x73, 0x3C, 0x6A, 0xFB, 0x6B, 0x1B, 0x01, 0x73, 0x3B, 0x81, 0x73, 0x3C, 0x73, 0x1C, 0x01, 0x7B, 0x3C, 0x83, 0x7A, 0xFB, 0x72, 0xB9, 0x83, 0x1B, 0x30, 0xD1, 0x01, 0x28, 0xD0, 0x83, 0x28, 0xF0, 0x28, 0xEF, 0x20, 0xEF, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x87, 0x21, 0x0E, 0x18, 0xEE, 0x18, 0xCE, 0x10, 0x6E, 0x73, 0x7B, 0x73, 0x5C, 0x7B, 0x7D, 0x73, 0x3C, 0x01, 0x6A, 0xFB, 0x01, 0x73, 0x3C, 0x86, 0x73, 0x5C, 0x7B, 0xBC, 0x10, 0x6F, 0x18, 0xD0, 0x18, 0xF0, 0x18, 0xEF, 0x21, 0x30, 0x02, + 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x20, 0xD0, 0x83, 0x73, 0x7B, 0x73, 0x5B, 0x73, 0x7C, 0x73, 0x3C, 0x01, 0x62, 0xFB, 0x84, 0x6B, 0x3B, 0x73, 0x9C, 0x7B, 0xBC, 0x6B, 0x3A, 0x18, 0xAF, 0x01, 0x18, 0xCF, 0x80, 0x18, 0xEF, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x02, 0x11, 0x52, 0x81, 0x19, 0x52, 0x19, 0x32, 0x02, 0x19, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8D, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, + 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x19, 0x30, 0x01, 0x19, 0x31, 0x86, 0x19, 0x52, 0x19, 0x53, 0x19, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x12, 0x19, 0x86, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x34, 0x11, 0x13, 0x19, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x07, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x11, 0x18, 0xF1, 0x19, 0x12, 0x11, 0x33, 0x11, 0xB6, 0x11, 0xF7, 0x11, 0xF8, 0x09, 0xF8, 0x09, 0xB7, 0x09, 0x76, 0x01, 0x35, 0x01, 0x34, 0x02, 0x09, 0x55, 0x81, 0x09, 0x76, 0x09, 0xB7, 0x01, 0x11, 0xD8, 0x83, 0x19, 0xB7, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, + 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB7, 0x09, 0x96, 0x09, 0x75, 0x09, 0x55, 0x02, 0x09, 0x54, 0x86, 0x09, 0x75, 0x09, 0x96, 0x09, 0xB7, 0x11, 0xD8, 0x09, 0xB8, 0x11, 0xD8, 0x11, 0xB7, 0x02, 0x11, 0x96, 0x82, 0x11, 0x95, 0x11, 0x96, 0x11, 0x95, 0x03, 0x11, 0x75, 0x83, 0x11, 0x96, 0x11, 0x95, 0x11, 0x96, 0x11, 0x76, 0x01, 0x11, 0x75, 0x80, 0x11, 0x76, 0x01, 0x11, 0x55, 0x81, 0x11, 0x75, 0x11, 0x55, 0x04, 0x11, 0x75, 0x80, 0x11, 0x55, 0x0B, 0x11, 0x75, 0x80, 0x11, 0x55, 0x04, 0x11, 0x75, 0x80, 0x19, 0x96, 0x02, 0x11, 0x96, 0x89, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x32, 0x19, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, + 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x21, 0x10, 0x82, 0x20, 0xEF, 0x10, 0xAE, 0x73, 0xBB, 0x01, 0x6B, 0x7B, 0x01, 0x63, 0x5B, 0x86, 0x63, 0x3A, 0x18, 0xB0, 0x18, 0xAF, 0x20, 0xCF, 0x20, 0xEF, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x20, 0xEF, 0x89, 0x10, 0xAE, 0x29, 0x52, 0x6B, 0x9B, 0x6B, 0x7B, 0x63, 0x5B, 0x63, 0x3B, 0x6B, 0x3B, 0x63, 0x1A, 0x6B, 0x1A, 0x6B, 0x1B, 0x01, 0x6B, 0x3B, 0x8B, 0x63, 0x5A, 0x6B, 0x7B, 0x63, 0x7A, 0x6B, 0x9B, 0x63, 0x59, 0x21, 0x71, 0x18, 0xCF, 0x21, 0x10, 0x21, 0x2F, 0x19, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x88, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x8F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x21, 0xF6, 0x19, + 0xB6, 0x19, 0x95, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8C, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0xB5, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x85, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x88, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x11, 0x54, 0x01, 0x11, 0x75, 0x81, 0x09, 0x96, 0x11, 0xD7, 0x01, 0x11, 0xF8, 0x86, 0x11, 0xD7, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x74, 0x21, 0x53, 0x29, 0x52, 0x01, 0x29, 0x51, 0x80, 0x31, 0x51, 0x05, 0x31, 0x71, 0x01, 0x39, 0x71, 0x8B, 0x39, 0x50, 0x41, 0x50, 0x41, 0x0E, 0x48, 0xED, 0xDC, 0xDC, 0xDC, 0x9A, 0xDC, 0x99, 0xDC, 0x78, 0xDC, 0x58, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x02, 0xDC, 0x36, 0x01, 0xDC, 0x57, 0x82, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x36, 0x09, 0xDC, 0x37, 0x84, 0xDC, 0x16, 0xDC, 0x37, 0xDC, 0x16, 0xDC, 0x37, 0xDC, 0x17, 0x03, 0xDC, 0x16, 0x82, 0xDC, 0x17, 0xDC, 0x16, 0xDB, 0xF6, 0x01, 0xDC, 0x16, 0x01, 0xDB, 0xF6, 0x01, 0xDC, 0x17, 0x01, 0xDB, + 0xF7, 0x88, 0xDC, 0x17, 0xDC, 0x38, 0xDC, 0x59, 0xD4, 0x59, 0xC4, 0x39, 0x40, 0x8B, 0x30, 0x4B, 0x41, 0x0F, 0x31, 0x0F, 0x02, 0x31, 0x30, 0x80, 0x31, 0x50, 0x01, 0x29, 0x50, 0x81, 0x29, 0x30, 0x29, 0x50, 0x10, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x0A, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x20, 0xEF, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x88, 0x09, 0x12, 0x11, 0xB5, 0x19, 0xF7, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x87, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, + 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x8D, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x20, 0xEF, 0x18, 0x8F, 0x10, 0x4E, 0x93, 0xBD, 0x8B, 0x3C, 0x83, 0x1C, 0x8A, 0xFC, 0x82, 0xDB, 0x82, 0xBB, 0x8A, 0xDB, 0x82, 0x9A, 0x01, 0x8A, 0x9B, 0x99, 0x92, 0xBB, 0x8A, 0x9B, 0x92, 0xDB, 0x92, 0xFB, 0x9B, 0x3C, 0x9B, 0x7C, 0x9B, 0xBD, 0x93, 0x9B, 0x20, 0x6E, 0x28, 0xD0, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x28, 0xF0, 0x20, 0x4F, 0x49, 0x54, 0x8A, 0xFB, 0x8A, 0xDB, 0x92, 0xDC, 0x8A, 0xDC, 0x8A, 0xFC, 0x82, 0xDC, 0x82, 0xFC, 0x01, 0x7A, 0xFB, 0x84, 0x7B, 0x1B, 0x83, 0x1C, 0x82, 0xFC, 0x82, 0xDB, 0x8B, 0x1C, 0x01, 0x8A, 0xFC, 0x88, 0x82, 0xBB, 0x82, 0xDB, 0x7A, 0x99, 0x20, 0x2F, 0x30, 0xB0, 0x28, 0xD0, 0x28, 0xF0, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x86, 0x21, 0x2F, 0x20, 0xEE, 0x18, 0xAE, 0x10, 0x2E, 0x7B, 0x3B, 0x83, 0x1C, 0x8B, 0x1D, 0x03, 0x82, 0xDC, 0x88, 0x7A, 0xFB, 0x83, 0x3C, 0x8B, 0x9D, 0x20, 0x90, 0x20, 0xB0, 0x20, 0xD0, 0x20, 0xEF, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x91, 0x21, 0x0F, 0x20, 0xF0, 0x20, 0xD0, 0x20, 0x90, 0x83, 0x3B, 0x83, 0x3C, 0x8B, 0x5D, 0x82, 0xFC, 0x7A, 0xBB, 0x7A, 0xDC, 0x7A, 0xFC, 0x83, 0x3C, 0x8B, 0x7C, 0x73, 0x1A, + 0x20, 0x8F, 0x20, 0xAF, 0x20, 0xCF, 0x20, 0xEF, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x11, 0x01, 0x19, 0x11, 0x8B, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x94, 0x19, 0x94, 0x19, 0xB5, 0x19, 0xB4, 0x11, 0x74, 0x11, 0x53, 0x11, 0x12, 0x19, 0x12, 0x01, 0x19, 0x11, 0x81, 0x21, 0x51, 0x21, 0x31, 0x06, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8E, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x11, 0x74, 0x09, 0x13, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, + 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x32, 0x85, 0x19, 0x53, 0x11, 0x53, 0x11, 0x74, 0x11, 0x96, 0x11, 0xD7, 0x12, 0x18, 0x01, 0x1A, 0x19, 0x87, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x55, 0x11, 0x34, 0x11, 0x33, 0x19, 0x33, 0x19, 0x32, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x89, 0x21, 0x31, 0x18, 0xF0, 0x11, 0x11, 0x11, 0x12, 0x11, 0x74, 0x11, 0xF7, 0x11, 0xF8, 0x12, 0x19, 0x11, 0xF8, 0x09, 0x96, 0x01, 0x01, 0x14, 0x82, 0x09, 0x34, 0x11, 0x75, 0x11, 0x95, 0x01, 0x09, 0x76, 0x87, 0x11, 0xB7, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x12, 0x19, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, + 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x11, 0x19, 0x11, 0x10, 0xF2, 0x19, 0xD6, 0x19, 0xF7, 0x01, 0x11, 0xB7, 0x81, 0x09, 0x76, 0x09, 0x55, 0x01, 0x09, 0x34, 0x01, 0x09, 0x54, 0x82, 0x09, 0x55, 0x09, 0x76, 0x09, 0xB7, 0x01, 0x11, 0xD8, 0x86, 0x11, 0xB7, 0x09, 0x54, 0x09, 0x33, 0x11, 0x33, 0x11, 0x13, 0x11, 0x32, 0x09, 0x12, 0x02, 0x11, 0x33, 0x80, 0x11, 0x32, 0x01, 0x11, 0x33, 0x01, 0x11, 0x32, 0x81, 0x11, 0x13, 0x11, 0x12, 0x02, 0x11, 0x13, 0x81, 0x19, 0x13, 0x11, 0x13, 0x01, 0x11, 0x12, 0x02, 0x11, 0x13, 0x02, 0x11, 0x33, 0x0A, 0x11, 0x12, 0x80, 0x11, 0x32, 0x03, 0x11, 0x12, 0x80, 0x11, 0x32, 0x01, 0x11, 0x33, 0x01, 0x11, 0x74, 0x87, 0x09, 0x34, 0x11, 0x55, 0x11, 0xB6, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xB6, 0x19, 0x74, 0x01, 0x11, 0x12, 0x80, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x07, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, + 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x04, 0x21, 0x10, 0x83, 0x20, 0xF0, 0x18, 0xCF, 0x83, 0xFC, 0x73, 0x9B, 0x01, 0x73, 0x7B, 0x85, 0x6B, 0x5B, 0x73, 0x5B, 0x18, 0x6F, 0x18, 0x8F, 0x20, 0xD0, 0x28, 0xF0, 0x02, 0x20, 0xEF, 0x89, 0x20, 0xF0, 0x10, 0xAF, 0x29, 0x52, 0x73, 0xBC, 0x6B, 0x7B, 0x6B, 0x7C, 0x6B, 0x5C, 0x63, 0x1B, 0x6B, 0x1B, 0x73, 0x3B, 0x01, 0x6B, 0x1B, 0x89, 0x6B, 0x3B, 0x6B, 0x5B, 0x6B, 0x5A, 0x6B, 0x9B, 0x63, 0x5A, 0x29, 0x71, 0x18, 0xEF, 0x19, 0x10, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x89, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x8A, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x8A, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0x94, 0x01, 0x19, 0xD6, 0x85, 0x19, + 0xB5, 0x19, 0x94, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x86, 0x11, 0x53, 0x19, 0xB6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x94, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x10, 0x95, 0x29, 0x30, 0x21, 0x51, 0x19, 0x31, 0x19, 0x11, 0x11, 0x13, 0x11, 0x54, 0x19, 0x96, 0x19, 0xD7, 0x19, 0xF8, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xD8, 0x19, 0xD8, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x95, 0x21, 0x74, 0x29, 0x73, 0x29, 0x52, 0x29, 0x51, 0x03, 0x31, 0x71, 0x80, 0x31, 0x51, 0x01, 0x31, 0x71, 0x01, 0x39, 0x71, 0x86, 0x39, 0x50, 0x41, 0x50, 0x41, 0x0E, 0x51, 0x0E, 0xDC, 0xDC, 0xDC, 0xBA, 0xDC, 0x99, 0x01, 0xDC, 0x58, 0x80, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x82, 0xE4, 0x57, 0xDC, 0x16, 0xDC, 0x36, 0x03, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xE4, 0x57, 0x0A, 0xDC, 0x37, 0x81, 0xDC, 0x16, 0xDC, 0x17, 0x01, 0xDC, 0x37, 0x02, 0xDC, 0x17, 0x80, 0xDB, 0xF6, 0x01, 0xDC, 0x16, 0x80, 0xDC, 0x17, 0x02, 0xDC, 0x16, + 0x80, 0xDB, 0xF6, 0x01, 0xDC, 0x17, 0x01, 0xDB, 0xF7, 0x01, 0xDC, 0x17, 0x88, 0xDC, 0x38, 0xDC, 0x59, 0xD4, 0x59, 0x79, 0xF0, 0x28, 0x09, 0x38, 0xAD, 0x39, 0x0F, 0x31, 0x0F, 0x31, 0x30, 0x02, 0x31, 0x50, 0x04, 0x29, 0x50, 0x81, 0x29, 0x30, 0x29, 0x51, 0x07, 0x29, 0x30, 0x01, 0x29, 0x10, 0x05, 0x29, 0x30, 0x80, 0x29, 0x50, 0x05, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x20, 0xEF, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x89, 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x17, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x06, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, + 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x30, 0x8B, 0x21, 0x10, 0x21, 0x0F, 0x20, 0xCF, 0x18, 0x8F, 0x20, 0x4F, 0x9B, 0x9D, 0x93, 0x1C, 0x9B, 0x1D, 0x9A, 0xFC, 0x9A, 0xDC, 0x9A, 0xBC, 0x9A, 0x9C, 0x01, 0x9A, 0x7C, 0x82, 0xA2, 0x9C, 0x9A, 0x7C, 0x9A, 0x7B, 0x02, 0x9A, 0x9B, 0x93, 0x92, 0xBA, 0x92, 0xFA, 0x93, 0x5B, 0x28, 0x6F, 0x28, 0xD0, 0x28, 0xEF, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x20, 0xEF, 0x28, 0xD0, 0x28, 0x6F, 0x28, 0x2F, 0x92, 0xDB, 0x9A, 0xDC, 0xA2, 0xDD, 0x9A, 0xBC, 0x92, 0x7C, 0x92, 0xBC, 0x92, 0x9C, 0x01, 0x8A, 0xDC, 0x84, 0x7A, 0x7A, 0x82, 0xBB, 0x93, 0x1D, 0x8A, 0xDC, 0x92, 0xDC, 0x01, 0x92, 0xBC, 0x8A, 0x92, 0x9C, 0x92, 0xBC, 0x92, 0xDC, 0x9B, 0x5D, 0x51, 0x54, 0x30, 0x70, 0x30, 0xD0, 0x28, 0xF0, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x91, 0x20, 0xEF, 0x20, 0x8E, 0x20, 0x6F, 0x93, 0x5C, 0x92, 0xFD, 0x92, 0xDD, 0x9A, 0xBD, 0x92, 0x9C, 0x92, 0xBD, 0x8A, 0x7B, 0x8A, 0x9B, 0x93, 0x1C, 0xA3, 0xFF, 0x28, 0x70, 0x20, 0x6F, 0x20, 0xCF, 0x20, 0xEF, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x28, 0xF0, 0x20, 0xAF, 0x28, 0x70, 0x9B, 0x7C, 0x9B, 0x3D, 0x9A, 0xFD, 0x02, 0x92, 0xBC, 0x88, 0x8A, 0xBC, 0x92, 0xFC, 0x93, 0x3C, 0x82, 0xFA, 0x28, 0x70, 0x28, 0xB0, 0x20, 0xD0, 0x29, 0x10, 0x20, 0xF0, 0x04, 0x21, 0x10, 0x81, 0x21, 0x11, 0x19, + 0x11, 0x01, 0x19, 0x32, 0x85, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB5, 0x11, 0xB6, 0x19, 0xF7, 0x1A, 0x17, 0x02, 0x19, 0xF7, 0x85, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x32, 0x05, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x04, 0x21, 0x30, 0x86, 0x21, 0x50, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x52, 0x01, 0x19, 0x11, 0x8D, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x18, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x0B, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, + 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x85, 0x11, 0x33, 0x11, 0x53, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x1A, 0x19, 0x86, 0x19, 0xF9, 0x11, 0x97, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x86, 0x21, 0x10, 0x19, 0x10, 0x19, 0x11, 0x11, 0x11, 0x11, 0x53, 0x11, 0xB6, 0x11, 0xF8, 0x01, 0x12, 0x18, 0x83, 0x09, 0xB6, 0x09, 0x55, 0x01, 0x14, 0x09, 0x34, 0x01, 0x09, 0x75, 0x01, 0x09, 0x76, 0x87, 0x11, 0xD7, 0x1A, 0x18, 0x19, 0xD7, 0x11, 0x74, 0x11, 0x32, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x87, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x11, 0x74, 0x21, 0xF7, 0x19, 0xD7, 0x11, 0xB7, 0x09, 0x96, 0x01, 0x09, 0x55, 0x01, 0x09, 0x34, 0x82, 0x01, 0x34, 0x09, 0x75, 0x11, 0xB7, 0x01, 0x11, 0xD7, 0x81, 0x19, 0xD7, 0x11, 0x55, 0x01, 0x11, 0x33, 0x80, 0x11, 0x12, 0x05, 0x11, 0x11, 0x01, 0x19, 0x31, + 0x82, 0x19, 0x11, 0x19, 0x31, 0x11, 0x11, 0x04, 0x19, 0x11, 0x80, 0x18, 0xF1, 0x09, 0x19, 0x11, 0x80, 0x19, 0x31, 0x0B, 0x19, 0x11, 0x80, 0x10, 0xF1, 0x02, 0x19, 0x11, 0x01, 0x11, 0x11, 0x01, 0x11, 0x12, 0x83, 0x11, 0x33, 0x09, 0x34, 0x11, 0xB6, 0x19, 0xD7, 0x01, 0x21, 0xF7, 0x86, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x33, 0x19, 0x12, 0x19, 0x32, 0x21, 0x32, 0x21, 0x11, 0x04, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x88, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x50, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x20, 0xF0, 0x18, 0xAF, 0x7B, 0xBB, 0x73, 0x7B, 0x02, 0x73, 0x5B, 0x82, 0x7B, 0x7C, 0x52, 0x37, 0x20, 0x90, 0x01, + 0x28, 0xD0, 0x01, 0x20, 0xEF, 0x01, 0x21, 0x10, 0x81, 0x18, 0xAF, 0x29, 0x31, 0x01, 0x73, 0x9C, 0x80, 0x6B, 0x5B, 0x01, 0x6B, 0x1B, 0x02, 0x73, 0x1B, 0x86, 0x6B, 0x1B, 0x6B, 0x3B, 0x6B, 0x5B, 0x73, 0x9B, 0x6B, 0x5A, 0x29, 0x52, 0x18, 0xEF, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x07, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x83, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x01, 0x19, 0xD6, 0x87, 0x19, 0xB5, 0x19, 0x94, 0x11, 0x52, 0x19, 0x32, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x31, 0x21, 0x52, 0x19, 0x33, 0x11, 0x53, 0x19, 0xB5, 0x01, 0x21, 0xF7, 0x82, 0x19, 0x94, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, + 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x13, 0x19, 0x96, 0x19, 0xD7, 0x1A, 0x19, 0x19, 0xF8, 0x11, 0xD8, 0x09, 0xB7, 0x11, 0xB7, 0x01, 0x11, 0xB8, 0x80, 0x19, 0xD8, 0x01, 0x19, 0xD7, 0x85, 0x21, 0xB6, 0x21, 0x95, 0x21, 0x73, 0x29, 0x72, 0x29, 0x51, 0x31, 0x51, 0x03, 0x31, 0x71, 0x8D, 0x39, 0x92, 0x31, 0x51, 0x39, 0x71, 0x39, 0x51, 0x41, 0x51, 0x41, 0x50, 0x40, 0xEE, 0x59, 0x2E, 0xDC, 0xDC, 0xDC, 0x9A, 0xDC, 0x99, 0xDC, 0x78, 0xE4, 0x58, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x06, 0xDC, 0x37, 0x81, 0xDC, 0x17, 0xE4, 0x37, 0x07, 0xDC, 0x37, 0x01, 0xDC, 0x17, 0x81, 0xDC, 0x16, 0xDC, 0x17, 0x01, 0xDC, 0x16, 0x81, 0xDC, 0x17, 0xDB, 0xF6, 0x02, 0xDC, 0x16, 0x02, 0xDB, 0xF6, 0x80, 0xDC, 0x16, 0x01, 0xDB, 0xF6, 0x82, 0xDC, 0x17, 0xDB, 0xF6, 0xDB, 0xF7, 0x01, 0xDC, 0x17, 0x87, 0xDC, 0x18, 0xD4, 0x38, 0xDC, 0x59, 0xD4, 0x7A, 0x69, 0x8F, 0x38, 0x8C, 0x41, 0x0E, 0x39, 0x0F, 0x03, 0x31, 0x30, 0x02, 0x31, 0x51, 0x80, 0x29, 0x50, 0x0A, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x05, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x51, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, + 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x28, 0xEF, 0x29, 0x30, 0x0A, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x8F, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0xD6, 0x11, 0xF7, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x20, 0xCF, 0x20, 0x8F, 0x20, 0x4F, 0x9B, 0x7D, 0xA3, 0x1D, 0x01, 0xA2, 0xBC, 0x84, 0xA2, 0x9C, 0xA2, 0x7C, 0xA2, 0x5C, 0xAA, 0x5C, 0xAA, 0x7D, 0x02, 0xAA, 0x5C, 0x95, 0xAA, 0x7C, 0xA2, 0x7C, 0xAA, 0x9C, 0xA2, 0xBB, 0x9A, 0xDB, 0xA3, 0x7C, 0x28, 0x4F, 0x30, 0xD0, 0x28, + 0xCF, 0x20, 0xEF, 0x29, 0x0F, 0x29, 0x10, 0x28, 0xD0, 0x28, 0xB0, 0x30, 0x4F, 0x69, 0xB6, 0x9A, 0xDC, 0xA2, 0xBC, 0xAA, 0x9C, 0xAA, 0x9D, 0xA2, 0x7C, 0xA2, 0x9C, 0x01, 0x9A, 0xBC, 0x84, 0x9B, 0x1D, 0x7A, 0x19, 0x48, 0x93, 0x92, 0xDC, 0x9A, 0xDC, 0x01, 0x9A, 0xBC, 0x8A, 0xA2, 0xBD, 0xA2, 0x9D, 0xA2, 0xBD, 0x9A, 0x9C, 0x9A, 0xDC, 0x8A, 0xBB, 0x38, 0x91, 0x30, 0xB0, 0x30, 0xD0, 0x28, 0xEF, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x94, 0x21, 0x0F, 0x20, 0xEF, 0x20, 0x8E, 0x28, 0x4F, 0x9B, 0x1D, 0x9A, 0xDD, 0xA2, 0xBD, 0xA2, 0x9D, 0xA2, 0xBD, 0xA2, 0x9D, 0xA2, 0x9C, 0x9A, 0x9C, 0x9A, 0xFC, 0xAB, 0xDF, 0x30, 0x50, 0x28, 0x70, 0x20, 0xAF, 0x28, 0xEF, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x85, 0x20, 0xCF, 0x28, 0x8F, 0x28, 0x4F, 0x9B, 0x1C, 0xA2, 0xFC, 0xA2, 0xBC, 0x01, 0xA2, 0x9C, 0x8A, 0xA2, 0x9D, 0x9A, 0x9C, 0x9A, 0xBC, 0x9B, 0x1D, 0x8A, 0xDB, 0x30, 0x70, 0x30, 0xB0, 0x28, 0xD0, 0x29, 0x10, 0x28, 0xF0, 0x20, 0xF0, 0x01, 0x21, 0x10, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x82, 0x19, 0x54, 0x19, 0x95, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x89, 0x1A, 0x18, 0x11, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0xF7, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x32, 0x80, 0x21, 0x32, 0x05, 0x21, 0x31, 0x84, 0x29, 0x31, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x05, 0x21, 0x31, 0x02, 0x21, 0x30, 0x03, 0x21, 0x31, 0x01, + 0x21, 0x32, 0x8D, 0x19, 0x12, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x22, 0x17, 0x21, 0xF8, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x13, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x31, 0x19, 0x31, 0x21, 0x52, 0x01, 0x19, 0x52, 0x84, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xD8, 0x02, 0x1A, 0x19, 0x85, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x55, 0x11, 0x34, 0x11, 0x33, 0x11, 0x11, 0x01, 0x19, 0x31, 0x82, 0x21, 0x31, 0x19, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, + 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x30, 0x96, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x75, 0x19, 0xF7, 0x1A, 0x19, 0x12, 0x18, 0x11, 0xD7, 0x09, 0x55, 0x01, 0x14, 0x09, 0x34, 0x09, 0x54, 0x09, 0x75, 0x09, 0x55, 0x09, 0x76, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x74, 0x11, 0x32, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x86, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x84, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB5, 0x19, 0xB6, 0x02, 0x11, 0xD7, 0x8A, 0x09, 0x76, 0x09, 0x75, 0x09, 0x96, 0x11, 0x96, 0x19, 0xD7, 0x19, 0xF7, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x55, 0x11, 0x34, 0x19, 0x33, 0x01, 0x19, 0x32, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x31, 0x02, 0x19, 0x10, 0x82, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x04, 0x21, 0x11, 0x82, 0x21, 0x31, 0x19, 0x10, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x19, 0x10, 0x02, 0x21, 0x10, 0x80, 0x19, 0x10, 0x01, 0x21, 0x31, 0x81, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x31, 0x80, 0x19, 0x11, 0x02, 0x19, 0x31, 0x85, 0x19, 0x11, 0x10, + 0xF1, 0x10, 0xF2, 0x11, 0x33, 0x09, 0x33, 0x19, 0xB6, 0x02, 0x21, 0xF7, 0x85, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x09, 0x21, 0x30, 0x02, 0x21, 0x10, 0x06, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x8D, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x86, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x50, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x8B, 0x18, 0xAF, 0x73, 0x9A, 0x7B, 0x9B, 0x73, 0x5B, 0x73, 0x3B, 0x73, 0x1B, 0x7B, 0x1B, 0x83, 0x7C, 0x5A, 0x37, 0x28, 0xB0, 0x28, 0xD0, 0x28, 0xF0, 0x01, 0x20, 0xCF, 0x85, 0x20, 0xF0, 0x18, 0x8F, 0x39, 0x93, 0x73, 0x7B, 0x73, 0x5B, 0x73, 0x3B, 0x01, 0x73, 0x1B, 0x82, 0x6A, 0xFB, 0x73, 0x1B, 0x73, 0x3B, 0x01, 0x73, 0x5B, 0x83, 0x73, 0x9B, 0x6B, 0x3A, 0x18, 0xD0, 0x18, 0xCF, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, + 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x53, 0x19, 0xD5, 0x01, 0x19, 0xF6, 0x8E, 0x19, 0xD5, 0x19, 0x93, 0x11, 0x31, 0x19, 0x31, 0x21, 0x72, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x19, 0x33, 0x11, 0x33, 0x19, 0xB5, 0x01, 0x21, 0xF7, 0x85, 0x19, 0x95, 0x11, 0x32, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x04, 0x29, 0x30, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x11, 0x11, 0x12, 0x11, 0x34, 0x19, 0xD8, 0x19, 0xF8, 0x19, 0xF9, 0x19, 0xF8, 0x11, 0xB7, 0x09, 0x97, 0x11, 0x97, 0x09, 0x97, 0x01, 0x11, 0x97, 0x85, 0x19, 0xD7, 0x22, 0x18, 0x21, 0xD7, 0x21, 0xB6, 0x21, + 0x94, 0x29, 0x73, 0x02, 0x31, 0x72, 0x80, 0x31, 0x51, 0x01, 0x31, 0x71, 0x80, 0x39, 0x72, 0x01, 0x39, 0x71, 0x89, 0x39, 0x51, 0x41, 0x51, 0x41, 0x30, 0x40, 0xEE, 0x61, 0x6F, 0xDC, 0xFC, 0xDC, 0x9A, 0xDC, 0x79, 0xDC, 0x58, 0xE4, 0x58, 0x05, 0xDC, 0x37, 0x80, 0xDC, 0x36, 0x03, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x37, 0x04, 0xDC, 0x37, 0x81, 0xDC, 0x17, 0xDC, 0x37, 0x01, 0xDC, 0x17, 0x81, 0xDC, 0x37, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x80, 0xDC, 0x16, 0x02, 0xDC, 0x17, 0x01, 0xDC, 0x16, 0x83, 0xDB, 0xF6, 0xDC, 0x17, 0xDB, 0xF6, 0xDC, 0x17, 0x02, 0xDB, 0xF6, 0x82, 0xDB, 0xD6, 0xDB, 0xF6, 0xDB, 0xF7, 0x02, 0xDC, 0x17, 0x87, 0xD4, 0x17, 0xDC, 0x58, 0xDC, 0x7A, 0xCC, 0x59, 0x61, 0x4F, 0x38, 0x6C, 0x38, 0xEE, 0x39, 0x0F, 0x01, 0x31, 0x30, 0x02, 0x31, 0x51, 0x83, 0x31, 0x31, 0x29, 0x30, 0x31, 0x51, 0x29, 0x30, 0x01, 0x29, 0x51, 0x03, 0x29, 0x30, 0x80, 0x31, 0x51, 0x12, 0x29, 0x30, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x02, 0x28, 0xEF, 0x81, 0x28, 0xEE, 0x28, 0xEF, 0x05, 0x28, 0xEE, 0x06, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, + 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x05, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xF7, 0x11, 0x95, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x86, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x86, 0x29, 0x50, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x87, 0x20, 0xEF, 0x20, 0xCF, 0x20, 0x8F, 0x30, 0x70, 0xAB, 0x7E, 0xAA, 0xFD, 0xAA, 0xBD, 0xAA, 0x7D, 0x01, 0xB2, 0x7D, 0x96, 0xBA, 0x9E, 0xBA, 0x7E, 0xB2, 0x3C, 0xB2, 0x3D, 0xBA, 0x7D, 0xB2, 0x5D, 0xB2, 0x7D, 0xBA, 0x9D, 0xB2, 0xBD, 0xAA, 0xBC, 0xA2, 0xDB, 0xA3, 0x5C, 0x28, 0x2E, 0x30, 0x8F, 0x28, 0xCF, 0x20, 0xCF, 0x28, 0xEF, 0x28, 0xF0, 0x30, 0xD0, 0x38, 0xD1, 0x40, 0x91, 0x9A, 0xBB, 0xAA, 0xBC, 0x01, 0xB2, 0x9D, 0x01, 0xB2, 0x7D, 0x8A, 0xAA, 0x7C, 0xAA, 0xBC, 0xA2, 0xDC, 0xA3, 0x3D, 0x50, 0xB3, 0x40, 0x31, 0x8A, 0x7A, 0xAA, 0xFD, 0xA2, 0xBC, 0xA2, 0x9D, 0xAA, 0x9D, 0x01, 0xB2, 0xBE, 0x93, 0xAA, 0xBD, 0xAA, 0xDD, 0xAB, 0x1D, 0x69, 0x76, 0x38, 0x50, 0x30, 0xD0, 0x28, 0xAF, 0x20, 0xEF, 0x20, 0xEE, 0x21, 0x0E, 0x21, 0x0F, 0x20, + 0xCE, 0x20, 0x6E, 0x28, 0x2F, 0xAB, 0x5E, 0xAA, 0xDD, 0xB2, 0xBE, 0xAA, 0x7D, 0xB2, 0x9E, 0xB2, 0x7D, 0x01, 0xAA, 0x9D, 0x86, 0xAA, 0xFD, 0xAB, 0x9E, 0x30, 0x30, 0x28, 0x70, 0x28, 0x8F, 0x28, 0xCF, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x21, 0x2F, 0x20, 0xEF, 0x28, 0xCF, 0x28, 0x8F, 0x38, 0x70, 0xA3, 0x1C, 0xAA, 0xDC, 0xB2, 0xDD, 0xB2, 0xBD, 0x01, 0xAA, 0x5C, 0x88, 0xAA, 0x9D, 0xAA, 0xBD, 0xAB, 0x1D, 0x9A, 0xFC, 0x30, 0x30, 0x30, 0x70, 0x28, 0xD0, 0x20, 0xCF, 0x20, 0xEF, 0x02, 0x29, 0x10, 0x86, 0x21, 0x11, 0x21, 0x31, 0x21, 0x32, 0x19, 0x32, 0x19, 0x54, 0x19, 0xB5, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x02, 0x11, 0xD7, 0x01, 0x11, 0xB7, 0x8A, 0x11, 0xD7, 0x19, 0xF8, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x13, 0x11, 0x33, 0x19, 0x32, 0x21, 0x53, 0x19, 0x32, 0x19, 0x11, 0x02, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x03, 0x21, 0x31, 0x02, 0x21, 0x11, 0x84, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x32, 0x19, 0x31, 0x02, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x88, 0x21, 0x11, 0x21, 0x31, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x02, 0x21, 0xF7, 0x83, 0x19, 0x75, 0x11, 0x13, 0x10, 0xF2, 0x19, 0x11, 0x02, 0x21, 0x31, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, + 0x29, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x51, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x32, 0x8F, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD8, 0x11, 0xF9, 0x1A, 0x1A, 0x1A, 0x19, 0x19, 0xF8, 0x11, 0x97, 0x11, 0x55, 0x11, 0x34, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x19, 0x10, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x89, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x11, 0xB6, 0x11, 0xF8, 0x1A, 0x39, 0x1A, 0x18, 0x09, 0x96, 0x01, 0x55, 0x03, 0x09, 0x55, 0x88, 0x11, 0xB6, 0x19, 0xF8, 0x19, 0xF7, 0x19, 0xD6, 0x19, + 0x74, 0x19, 0x11, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x04, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x01, 0x19, 0x11, 0x82, 0x11, 0x12, 0x11, 0x53, 0x19, 0xB6, 0x04, 0x19, 0xF7, 0x81, 0x19, 0xD7, 0x19, 0xF7, 0x02, 0x19, 0xD7, 0x82, 0x19, 0x95, 0x11, 0x34, 0x19, 0x33, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x51, 0x09, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x19, 0x30, 0x05, 0x21, 0x30, 0x8F, 0x19, 0x10, 0x19, 0x31, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x13, 0x11, 0x34, 0x19, 0x95, 0x19, 0xD7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x96, 0x19, 0x74, 0x11, 0x13, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, + 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x20, 0xEF, 0x21, 0x10, 0x20, 0xEF, 0x21, 0x10, 0x10, 0x8E, 0x6B, 0x39, 0x83, 0xBC, 0x7B, 0x5B, 0x03, 0x7B, 0x1B, 0x84, 0x8B, 0x7C, 0x6A, 0x78, 0x28, 0xB0, 0x28, 0xD0, 0x28, 0xF0, 0x01, 0x20, 0xAF, 0x8F, 0x18, 0x6E, 0x39, 0x94, 0x7B, 0x5C, 0x73, 0x3B, 0x73, 0x3C, 0x73, 0x1C, 0x73, 0x1B, 0x7B, 0x1C, 0x73, 0x1B, 0x7B, 0x3B, 0x7B, 0x5B, 0x7B, 0x9C, 0x6B, 0x1A, 0x29, 0x11, 0x18, 0xAF, 0x20, 0xF0, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, + 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x21, 0xF6, 0x21, 0xD5, 0x11, 0x52, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x51, 0x82, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x80, 0x19, 0x95, 0x01, 0x19, 0x32, 0x81, 0x21, 0x31, 0x21, 0x11, 0x04, 0x21, 0x10, 0x88, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x75, 0x21, 0xF8, 0x01, 0x19, 0xD8, 0x83, 0x09, 0x77, 0x09, 0x56, 0x09, 0x76, 0x11, 0x76, 0x01, 0x09, 0x76, 0x88, 0x11, 0x76, 0x19, 0xB7, 0x22, 0x18, 0x19, 0xD7, 0x21, 0xB6, 0x21, 0x95, 0x29, 0x73, 0x29, 0x72, 0x31, 0x52, 0x03, 0x31, 0x72, 0x01, 0x39, 0x72, 0x88, 0x39, 0x71, 0x41, 0x71, 0x41, 0x51, 0x41, 0x50, 0x40, 0xCE, 0x69, 0x90, 0xDC, 0xDC, 0xD4, 0x79, 0xDC, 0x99, 0x01, 0xDC, 0x58, 0x02, 0xDC, 0x37, 0x81, 0xDC, 0x17, 0xE4, 0x57, 0x05, 0xDC, 0x37, 0x80, 0xE4, 0x37, 0x03, 0xDC, 0x37, 0x82, 0xE4, 0x37, 0xDC, 0x37, 0xDC, 0x17, 0x02, + 0xDC, 0x37, 0x01, 0xDC, 0x17, 0x80, 0xDC, 0x16, 0x05, 0xDC, 0x17, 0x01, 0xDB, 0xF6, 0x82, 0xDC, 0x17, 0xDC, 0x16, 0xDC, 0x17, 0x04, 0xDB, 0xF6, 0x01, 0xDB, 0xD6, 0x80, 0xDB, 0xF7, 0x03, 0xDC, 0x17, 0x87, 0xDC, 0x38, 0xD4, 0x59, 0xCC, 0x39, 0xB3, 0xB7, 0x48, 0xAC, 0x40, 0xAD, 0x39, 0x0F, 0x39, 0x30, 0x01, 0x31, 0x50, 0x02, 0x31, 0x51, 0x80, 0x31, 0x31, 0x01, 0x31, 0x51, 0x81, 0x29, 0x50, 0x29, 0x51, 0x0A, 0x29, 0x30, 0x80, 0x29, 0x10, 0x07, 0x29, 0x30, 0x84, 0x21, 0x2F, 0x29, 0x50, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x10, 0x82, 0x20, 0xEF, 0x29, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x01, 0x31, 0x0F, 0x83, 0x30, 0xEF, 0x28, 0xEE, 0x30, 0xEE, 0x30, 0xCE, 0x09, 0x30, 0xEE, 0x82, 0x28, 0xEE, 0x30, 0xEE, 0x28, 0xEE, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x04, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xF7, 0x11, 0x95, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x85, + 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x50, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x8A, 0x20, 0xAF, 0x20, 0x6F, 0x30, 0x4F, 0xB3, 0x9E, 0xB2, 0xDD, 0xB2, 0x7C, 0xBA, 0x7D, 0xB2, 0x5D, 0xC2, 0x7E, 0xC2, 0x9E, 0xC2, 0x5E, 0x01, 0xBA, 0x3D, 0x80, 0xC2, 0x5D, 0x01, 0xC2, 0x7E, 0x97, 0xBA, 0x7D, 0xBA, 0x9D, 0xB2, 0xBD, 0xA2, 0xBB, 0xA3, 0x3C, 0x30, 0x2F, 0x30, 0xB0, 0x28, 0xAF, 0x28, 0xD0, 0x28, 0xF0, 0x30, 0xD0, 0x38, 0xB1, 0x38, 0x91, 0x71, 0x96, 0xAA, 0xFC, 0xB2, 0xBD, 0xBA, 0x9D, 0xBA, 0x7D, 0xBA, 0x9E, 0xBA, 0xBE, 0xB2, 0x9D, 0xB2, 0xBC, 0xB3, 0x1D, 0x92, 0x7A, 0x01, 0x38, 0x10, 0x84, 0x71, 0x76, 0xAA, 0xDD, 0xAA, 0x9C, 0xB2, 0x9D, 0xB2, 0xBE, 0x01, 0xBA, 0xBE, 0x87, 0xBA, 0xDE, 0xB2, 0xDE, 0xB2, 0xDD, 0xB3, 0x3E, 0x40, 0x51, 0x38, 0x91, 0x28, 0xD0, 0x28, 0xEF, 0x02, 0x21, 0x0F, 0x85, 0x20, 0xCE, 0x20, 0x6E, 0x28, 0x0E, 0xAB, 0x5E, 0xB2, 0xDE, 0xB2, 0x9D, 0x01, 0xBA, 0x7E, 0x8B, 0xBA, 0x7D, 0xB2, 0x9D, 0xB2, 0xBD, 0xB2, 0xDD, 0xBB, 0x9F, 0x38, 0x30, 0x30, 0x70, 0x28, 0x8F, 0x28, 0xEF, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x94, 0x21, 0x0F, 0x20, 0xEF, 0x28, 0xCF, 0x28, 0x8F, 0x38, 0x50, 0xAB, 0x1C, 0xBA, 0xFD, + 0xBA, 0x9D, 0xBA, 0x7D, 0xB2, 0x5D, 0xBA, 0x7D, 0xB2, 0x7D, 0xB2, 0xBD, 0xB2, 0xFE, 0xA2, 0xFD, 0x38, 0x30, 0x30, 0x90, 0x28, 0xB0, 0x28, 0xF0, 0x28, 0xEF, 0x29, 0x10, 0x01, 0x29, 0x30, 0x89, 0x21, 0x10, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB7, 0x03, 0x09, 0x76, 0x8C, 0x09, 0x96, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xD7, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x13, 0x11, 0x32, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x19, 0x31, 0x0A, 0x19, 0x11, 0x81, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x12, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x04, 0x19, 0x11, 0x80, 0x11, 0x11, 0x01, 0x11, 0x12, 0x01, 0x11, 0x33, 0x81, 0x11, 0x54, 0x19, 0xB6, 0x02, 0x21, 0xF7, 0x84, 0x11, 0x75, 0x11, 0x34, 0x10, 0xF2, 0x18, 0xF1, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x06, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, + 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x50, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8E, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD8, 0x11, 0xF9, 0x1A, 0x1A, 0x1A, 0x19, 0x19, 0xF8, 0x11, 0x97, 0x11, 0x55, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x82, 0x19, 0x10, 0x21, 0x31, 0x21, 0x51, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0xD7, 0x1A, 0x18, 0x11, 0xF8, 0x11, 0xF7, 0x09, 0x76, 0x09, 0x75, 0x01, 0x09, 0x76, 0x87, 0x09, 0x96, 0x19, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x19, 0xD6, 0x19, 0x74, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x29, 0x30, + 0x87, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x19, 0x95, 0x19, 0xF7, 0x22, 0x17, 0x02, 0x19, 0xF7, 0x80, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x87, 0x19, 0xD6, 0x21, 0xD6, 0x11, 0x74, 0x11, 0x12, 0x19, 0x32, 0x21, 0x52, 0x19, 0x31, 0x21, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x50, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x87, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x92, 0x21, 0x50, 0x21, 0x30, 0x21, 0x51, 0x21, 0x52, 0x19, 0x32, 0x10, 0xF2, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x13, 0x19, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x06, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, + 0x30, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x30, 0x9A, 0x5A, 0x97, 0x83, 0xBC, 0x7B, 0x5B, 0x7B, 0x3B, 0x7B, 0x1B, 0x7A, 0xFB, 0x82, 0xFB, 0x83, 0x1B, 0x83, 0x3B, 0x72, 0xD9, 0x39, 0x32, 0x28, 0xD0, 0x28, 0x8F, 0x20, 0x8F, 0x20, 0x6F, 0x41, 0x73, 0x83, 0x7C, 0x7B, 0x3C, 0x83, 0x3C, 0x7B, 0x1C, 0x72, 0xFB, 0x7B, 0x1C, 0x7B, 0x3C, 0x7B, 0x5C, 0x7B, 0x7C, 0x62, 0xD9, 0x20, 0xF1, 0x01, 0x20, 0xD0, 0x81, 0x20, 0xEF, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x87, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x93, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x50, 0x21, 0x30, 0x19, 0x30, 0x19, 0x11, 0x11, 0x31, 0x11, 0x32, 0x11, 0x54, 0x19, 0xB5, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x94, 0x19, 0x52, 0x19, 0x10, 0x19, 0x30, 0x21, 0x51, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB6, 0x01, + 0x21, 0xF7, 0x86, 0x19, 0x74, 0x19, 0x32, 0x19, 0x12, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x8A, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x21, 0xF7, 0x22, 0x39, 0x19, 0xD8, 0x11, 0x97, 0x09, 0x35, 0x09, 0x56, 0x11, 0x76, 0x02, 0x11, 0x96, 0x87, 0x11, 0x76, 0x19, 0xB7, 0x22, 0x18, 0x21, 0xF8, 0x21, 0xB6, 0x21, 0x95, 0x29, 0x73, 0x31, 0x73, 0x01, 0x31, 0x72, 0x84, 0x31, 0x71, 0x31, 0x51, 0x39, 0x92, 0x39, 0x72, 0x39, 0x92, 0x01, 0x41, 0x72, 0x86, 0x41, 0x71, 0x41, 0x50, 0x40, 0xEE, 0x72, 0x11, 0xDC, 0xFC, 0xD4, 0x99, 0xDC, 0x99, 0x01, 0xDC, 0x58, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xE4, 0x57, 0x04, 0xDC, 0x37, 0x82, 0xDC, 0x17, 0xDC, 0x37, 0xE4, 0x37, 0x01, 0xDC, 0x17, 0x05, 0xDC, 0x37, 0x03, 0xDC, 0x16, 0x05, 0xDC, 0x17, 0x02, 0xDB, 0xF6, 0x80, 0xDC, 0x17, 0x02, 0xDB, 0xF6, 0x80, 0xDC, 0x17, 0x01, 0xDB, 0xF6, 0x83, 0xDB, 0xF7, 0xDB, 0xF6, 0xDB, 0xF7, 0xDB, 0xF6, 0x01, 0xDC, 0x17, 0x01, 0xDC, 0x38, 0x86, 0xD4, 0x38, 0xCC, 0x39, 0xCC, 0x9B, 0x59, 0x4F, 0x40, 0xEE, 0x39, 0x30, 0x39, 0x51, 0x06, 0x31, 0x51, 0x01, 0x29, 0x30, 0x03, 0x29, 0x50, 0x80, 0x29, + 0x30, 0x01, 0x29, 0x50, 0x82, 0x29, 0x30, 0x29, 0x51, 0x31, 0x31, 0x0E, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x31, 0x0F, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x30, 0xEE, 0x03, 0x30, 0xCD, 0x01, 0x30, 0xAD, 0x01, 0x30, 0x8C, 0x03, 0x30, 0x6C, 0x80, 0x30, 0x8D, 0x01, 0x30, 0xAD, 0x01, 0x30, 0xCE, 0x02, 0x30, 0xEE, 0x01, 0x28, 0xEE, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x17, 0x11, 0xD7, 0x11, 0xB5, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x88, 0x20, 0xCF, 0x20, 0x8F, 0x38, 0xB1, 0xBB, 0xBF, 0xBA, 0xFD, 0xBA, 0xBE, + 0xBA, 0x7D, 0xC2, 0x5D, 0xC2, 0x5E, 0x03, 0xCA, 0x5E, 0x92, 0xC2, 0x3D, 0xCA, 0x9E, 0xC2, 0x5D, 0xC2, 0x7D, 0xBA, 0x7C, 0xB2, 0x9C, 0xB2, 0xDC, 0xBB, 0x9E, 0x30, 0x0F, 0x30, 0x90, 0x28, 0xB0, 0x28, 0xAF, 0x28, 0xD0, 0x30, 0xD0, 0x38, 0xB1, 0x48, 0xB2, 0xBB, 0x7E, 0xB2, 0xDD, 0xBA, 0xBD, 0x01, 0xC2, 0xBE, 0x80, 0xCA, 0xBE, 0x01, 0xBA, 0x9D, 0x8C, 0xB2, 0xBC, 0xBB, 0x3E, 0x50, 0xB2, 0x30, 0x0F, 0x38, 0x10, 0x58, 0xB3, 0x9A, 0x7B, 0xB2, 0xDD, 0xBA, 0xDE, 0xBA, 0xBE, 0xBA, 0x7D, 0xBA, 0x9E, 0xC2, 0xBE, 0x01, 0xBA, 0xDE, 0x84, 0xC3, 0x7F, 0x79, 0xB7, 0x40, 0x71, 0x30, 0xB0, 0x28, 0xEF, 0x01, 0x29, 0x0F, 0x88, 0x29, 0x2F, 0x28, 0xEF, 0x28, 0x8F, 0x30, 0x50, 0xB3, 0x7E, 0xBA, 0xDE, 0xBA, 0xBE, 0xC2, 0x9E, 0xBA, 0x7E, 0x01, 0xC2, 0x9E, 0x8A, 0xBA, 0xBD, 0xB2, 0xDD, 0xC3, 0xBF, 0x40, 0x50, 0x30, 0x70, 0x30, 0xB0, 0x28, 0xF0, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x96, 0x21, 0x0F, 0x29, 0x10, 0x28, 0xCF, 0x30, 0x8F, 0x48, 0xD2, 0xAB, 0x1C, 0xBA, 0xDD, 0xC2, 0xBE, 0xC2, 0x9E, 0xC2, 0x7D, 0xC2, 0x9E, 0xBA, 0x7D, 0xBA, 0xBE, 0xBB, 0x1E, 0xB3, 0x3E, 0x38, 0x30, 0x38, 0x90, 0x30, 0xD0, 0x28, 0xEF, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x11, 0x83, 0x19, 0x11, 0x11, 0x12, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x80, 0x09, 0x96, 0x01, 0x09, 0x75, 0x85, 0x09, 0x55, 0x01, 0x35, 0x01, 0x55, 0x09, 0x76, 0x09, 0x96, 0x11, 0xD8, 0x01, 0x19, 0xF8, 0x86, 0x11, 0x96, 0x09, 0x34, 0x11, 0x34, + 0x11, 0x53, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x01, 0x11, 0x32, 0x01, 0x19, 0x11, 0x82, 0x19, 0x31, 0x11, 0x31, 0x11, 0x11, 0x03, 0x19, 0x32, 0x03, 0x11, 0x12, 0x02, 0x11, 0x32, 0x81, 0x11, 0x31, 0x11, 0x32, 0x01, 0x11, 0x11, 0x80, 0x11, 0x12, 0x01, 0x11, 0x32, 0x84, 0x11, 0x33, 0x11, 0x34, 0x11, 0x14, 0x11, 0x75, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x87, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x13, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x52, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x19, 0x31, 0x86, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x97, 0x11, 0xB8, 0x19, 0xF9, 0x01, 0x1A, 0x19, 0x8B, + 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x87, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xF8, 0x1A, 0x18, 0x12, 0x18, 0x01, 0x11, 0xD7, 0x01, 0x11, 0xB7, 0x01, 0x19, 0xF7, 0x8B, 0x19, 0xD7, 0x11, 0x95, 0x19, 0x94, 0x19, 0x53, 0x19, 0x11, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8A, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x83, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x19, 0xB5, 0x01, 0x19, 0xB6, 0x80, 0x11, 0xB6, 0x01, 0x11, 0xB5, 0x01, 0x19, 0x95, 0x82, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x83, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, + 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x50, 0x01, 0x21, 0x30, 0x86, 0x29, 0x51, 0x21, 0x52, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x34, 0x19, 0x95, 0x02, 0x21, 0xF7, 0x83, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x05, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x90, 0x39, 0xB3, 0x8B, 0xDC, 0x7B, 0x5B, 0x7B, 0x3B, + 0x83, 0x1B, 0x83, 0x1C, 0x82, 0xFC, 0x82, 0xFB, 0x8B, 0x1B, 0x8B, 0x3B, 0x7A, 0xD9, 0x49, 0x74, 0x28, 0x90, 0x20, 0x4F, 0x18, 0x0E, 0x41, 0x54, 0x8B, 0x5D, 0x02, 0x83, 0x1C, 0x01, 0x7B, 0x1C, 0x84, 0x7B, 0x3C, 0x83, 0x9D, 0x62, 0x98, 0x20, 0xB0, 0x18, 0xAF, 0x01, 0x20, 0xF0, 0x84, 0x20, 0xEF, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x07, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x50, 0x19, 0x30, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x74, 0x19, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x21, 0xF7, 0x21, 0xB5, 0x19, 0x73, 0x19, 0x31, 0x01, 0x19, 0x30, 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x80, 0x19, 0x75, 0x01, 0x19, 0x32, 0x81, 0x21, 0x31, 0x21, 0x11, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, + 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x22, 0x17, 0x19, 0xF8, 0x19, 0xD8, 0x09, 0x76, 0x01, 0x09, 0x55, 0x81, 0x11, 0x75, 0x11, 0x96, 0x02, 0x11, 0x75, 0x8B, 0x19, 0xB7, 0x19, 0xF8, 0x21, 0xF8, 0x21, 0xD7, 0x21, 0x95, 0x29, 0x74, 0x31, 0x73, 0x31, 0x72, 0x39, 0x72, 0x31, 0x72, 0x39, 0x72, 0x39, 0x92, 0x01, 0x41, 0x92, 0x88, 0x41, 0x72, 0x41, 0x71, 0x41, 0x51, 0x49, 0x71, 0x40, 0xCD, 0x7A, 0x32, 0xDC, 0xFC, 0xD4, 0x79, 0xDC, 0x79, 0x01, 0xDC, 0x58, 0x81, 0xDC, 0x37, 0xDC, 0x57, 0x04, 0xDC, 0x37, 0x80, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x02, 0xE4, 0x37, 0x05, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x01, 0xDC, 0x16, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x16, 0x80, 0xDB, 0xF6, 0x02, 0xDC, 0x17, 0x80, 0xDB, 0xF6, 0x01, 0xDC, 0x16, 0x81, 0xDB, 0xF6, 0xDC, 0x16, 0x03, 0xDB, 0xF6, 0x01, 0xDC, 0x17, 0x80, 0xDB, 0xF7, 0x02, 0xDB, 0xF6, 0x80, 0xDC, 0x17, 0x01, 0xDB, 0xF7, 0x88, 0xDC, 0x17, 0xDC, 0x58, 0xD4, 0x59, 0xD4, 0x7A, 0x9A, 0xF5, 0x38, 0x6C, 0x41, 0x0F, 0x39, 0x10, 0x39, 0x51, 0x03, 0x31, 0x51, 0x80, 0x31, 0x31, 0x01, 0x31, 0x51, 0x05, 0x29, 0x50, 0x03, 0x29, 0x30, 0x80, 0x31, 0x31, 0x06, 0x29, 0x30, 0x80, 0x31, 0x50, 0x05, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, + 0x0F, 0x80, 0x31, 0x0F, 0x01, 0x28, 0xEF, 0x83, 0x30, 0xEF, 0x30, 0xEE, 0x28, 0xCE, 0x30, 0xCD, 0x01, 0x30, 0xAD, 0x01, 0x30, 0x8C, 0x80, 0x30, 0x4B, 0x02, 0x28, 0x0A, 0x03, 0x30, 0x0A, 0x02, 0x38, 0x2B, 0x81, 0x30, 0x2B, 0x30, 0x0B, 0x01, 0x28, 0x0B, 0x85, 0x30, 0x4C, 0x30, 0x8D, 0x30, 0xAD, 0x30, 0xCD, 0x30, 0xCE, 0x30, 0xEE, 0x01, 0x28, 0xEE, 0x01, 0x29, 0x0F, 0x81, 0x20, 0xEF, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x88, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x17, 0x11, 0xD6, 0x11, 0xB5, 0x11, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x84, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, + 0x0F, 0x87, 0x20, 0xCF, 0x20, 0x6E, 0x38, 0x90, 0xC3, 0xDF, 0xBA, 0xFE, 0xC2, 0xDE, 0xC2, 0x9E, 0xC2, 0x7E, 0x02, 0xCA, 0x5E, 0x82, 0xD2, 0x7E, 0xCA, 0x7E, 0xCA, 0x5E, 0x01, 0xCA, 0x7E, 0x88, 0xC2, 0x9D, 0xBA, 0x9C, 0xB2, 0xBC, 0xB2, 0xDC, 0xC3, 0xFF, 0x38, 0x0F, 0x38, 0x90, 0x28, 0x8F, 0x28, 0xB0, 0x01, 0x30, 0xB0, 0x8C, 0x38, 0x70, 0x8A, 0x79, 0xC3, 0x9F, 0xBB, 0x1E, 0xC2, 0xDD, 0xC2, 0xBE, 0xCA, 0xBE, 0xC2, 0xBE, 0xC2, 0xBD, 0xBA, 0xDD, 0xBA, 0xFD, 0xAB, 0x1D, 0x38, 0x0F, 0x01, 0x30, 0x0F, 0xA7, 0x38, 0x10, 0x92, 0x39, 0xBA, 0xFE, 0xC2, 0xFE, 0xC2, 0xBE, 0xBA, 0x9E, 0xC2, 0x9E, 0xBA, 0x9D, 0xBA, 0xBE, 0xBA, 0xFE, 0xBB, 0x3E, 0xB3, 0x3D, 0x50, 0xB2, 0x30, 0x90, 0x30, 0xF0, 0x29, 0x0F, 0x29, 0x2F, 0x20, 0xEF, 0x28, 0xEF, 0x20, 0x6E, 0x30, 0x2F, 0xB3, 0x7E, 0xBA, 0xFE, 0xC2, 0xDE, 0xC2, 0xBF, 0xC2, 0xBE, 0xC2, 0x9E, 0xC2, 0xBE, 0xC2, 0xDD, 0xBA, 0xFD, 0xC3, 0xBF, 0x40, 0x51, 0x30, 0x70, 0x28, 0xAF, 0x28, 0xEF, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x8A, 0x21, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x20, 0xEF, 0x28, 0xEF, 0x28, 0x6F, 0x48, 0xD1, 0xBB, 0x5D, 0xC2, 0xFD, 0xC2, 0xDE, 0xCA, 0xBE, 0x02, 0xC2, 0x9E, 0x85, 0xC2, 0xDE, 0xC3, 0x3F, 0xB3, 0x5E, 0x38, 0x30, 0x38, 0x90, 0x30, 0xD0, 0x01, 0x28, 0xEF, 0x8A, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x11, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xD7, 0x01, 0x09, 0x55, 0x81, 0x09, 0x35, 0x09, 0x34, + 0x01, 0x09, 0x35, 0x82, 0x01, 0x55, 0x09, 0x76, 0x09, 0xB7, 0x01, 0x11, 0xF8, 0x83, 0x11, 0xD7, 0x09, 0x55, 0x11, 0x55, 0x09, 0x34, 0x01, 0x11, 0x54, 0x82, 0x11, 0x53, 0x11, 0x33, 0x11, 0x53, 0x01, 0x11, 0x32, 0x01, 0x11, 0x52, 0x01, 0x11, 0x32, 0x80, 0x11, 0x53, 0x06, 0x11, 0x33, 0x06, 0x11, 0x32, 0x86, 0x11, 0x53, 0x11, 0x33, 0x11, 0x34, 0x11, 0x54, 0x19, 0x75, 0x19, 0xD7, 0x22, 0x18, 0x01, 0x21, 0xD7, 0x83, 0x19, 0x95, 0x11, 0x13, 0x11, 0x12, 0x19, 0x11, 0x02, 0x21, 0x31, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x0C, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x03, 0x21, 0x10, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x21, 0x11, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x95, 0x21, 0x30, 0x21, + 0x2F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x19, 0x51, 0x11, 0x31, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0x97, 0x11, 0xB8, 0x11, 0xF9, 0x19, 0xF9, 0x1A, 0x19, 0x19, 0xD8, 0x19, 0xB7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x86, 0x19, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x01, 0x1A, 0x18, 0x80, 0x11, 0xF8, 0x01, 0x11, 0xD7, 0x87, 0x22, 0x38, 0x1A, 0x17, 0x11, 0x95, 0x11, 0x54, 0x19, 0x74, 0x19, 0x52, 0x18, 0xF0, 0x19, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x19, 0x74, 0x11, 0x54, 0x01, 0x11, 0x74, 0x01, 0x11, 0x53, 0x82, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x02, 0x19, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x0B, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x06, 0x21, + 0x10, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x91, 0x21, 0x30, 0x21, 0x51, 0x21, 0x52, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x11, 0x34, 0x19, 0x95, 0x21, 0xF7, 0x19, 0xF7, 0x19, 0xD7, 0x21, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x85, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x20, 0xEF, 0x18, 0xCF, 0x01, 0x18, 0xAF, 0x82, 0x52, 0x36, 0x83, 0x7C, 0x7B, 0x3B, 0x01, 0x83, 0x1C, 0x80, 0x82, 0xFC, 0x01, 0x8B, 0x1C, 0x83, 0x8B, 0x3C, 0x8B, 0x1B, 0x82, 0xFA, 0x40, 0xF2, 0x01, 0x20, 0x0F, + 0x83, 0x49, 0x34, 0x8B, 0x3C, 0x82, 0xFC, 0x8B, 0x3D, 0x02, 0x83, 0x1C, 0x87, 0x8B, 0x7D, 0x62, 0x58, 0x18, 0x4F, 0x20, 0xAF, 0x18, 0xCF, 0x20, 0xEF, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8D, 0x19, 0x10, 0x11, 0x11, 0x11, 0x32, 0x19, 0x94, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xB5, 0x19, 0x74, 0x19, 0x32, 0x19, 0x31, 0x19, 0x30, 0x21, 0x50, 0x04, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x11, 0x10, 0xF1, 0x11, 0x12, 0x11, 0x54, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x74, 0x19, 0x33, 0x19, 0x32, 0x21, 0x31, 0x03, 0x21, 0x10, 0x03, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x87, 0x21, 0x30, + 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x21, 0xD7, 0x22, 0x18, 0x19, 0xD8, 0x11, 0x97, 0x02, 0x09, 0x55, 0x80, 0x11, 0x75, 0x02, 0x11, 0x55, 0x8B, 0x21, 0xD8, 0x22, 0x19, 0x21, 0xF8, 0x21, 0xB7, 0x21, 0x95, 0x29, 0x74, 0x31, 0x73, 0x31, 0x72, 0x39, 0x72, 0x31, 0x71, 0x39, 0x72, 0x39, 0x92, 0x02, 0x41, 0x92, 0x87, 0x41, 0x71, 0x41, 0x51, 0x49, 0x50, 0x48, 0xEE, 0x8A, 0xB4, 0xDC, 0xFC, 0xD4, 0x99, 0xDC, 0x79, 0x01, 0xDC, 0x58, 0x01, 0xDC, 0x37, 0x85, 0xE4, 0x58, 0xE4, 0x37, 0xDC, 0x37, 0xDC, 0x36, 0xDC, 0x37, 0xDC, 0x36, 0x05, 0xDC, 0x37, 0x80, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x36, 0x05, 0xDC, 0x16, 0x80, 0xDC, 0x17, 0x01, 0xDC, 0x16, 0x02, 0xDC, 0x17, 0x81, 0xDC, 0x16, 0xDC, 0x17, 0x06, 0xDB, 0xF6, 0x91, 0xD3, 0xD6, 0xDB, 0xD6, 0xDB, 0xF6, 0xDB, 0xF7, 0xDC, 0x17, 0xD3, 0xD6, 0xDB, 0xF6, 0xDB, 0xF7, 0xDC, 0x17, 0xDC, 0x18, 0xDC, 0x39, 0xDC, 0x7A, 0xAB, 0x56, 0x48, 0xAD, 0x40, 0xAE, 0x38, 0xEF, 0x39, 0x30, 0x39, 0x51, 0x08, 0x31, 0x51, 0x80, 0x31, 0x50, 0x01, 0x29, 0x30, 0x85, 0x29, 0x51, 0x29, 0x50, 0x31, 0x51, 0x29, 0x30, 0x31, 0x31, 0x31, 0x30, 0x06, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x31, 0x30, 0x31, 0x10, 0x28, 0xEF, 0x30, 0xEF, 0x02, 0x30, 0xCE, 0x83, 0x30, 0x8D, 0x28, 0x6C, 0x28, 0x4C, 0x28, 0x2B, 0x01, 0x30, 0x2A, 0x88, 0x48, 0xAC, 0x59, 0x2E, 0x71, 0xB0, 0x82, 0x32, 0x92, 0x94, 0xAB, 0x57, 0xBB, 0xB8, 0xC3, 0xF9, 0xC4, 0x1A, 0x01, 0xC4, 0x3A, 0x8D, 0xBB, + 0xFA, 0xBB, 0xD9, 0xB3, 0x98, 0xA3, 0x36, 0x9A, 0xF5, 0x82, 0x53, 0x61, 0x6F, 0x48, 0xAC, 0x38, 0x2B, 0x30, 0x2A, 0x28, 0x2B, 0x30, 0x8C, 0x30, 0xCE, 0x30, 0xEE, 0x01, 0x28, 0xEE, 0x01, 0x28, 0xEF, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x92, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x17, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x0D, 0x29, 0x30, 0x87, 0x29, 0x0F, 0x28, 0xEF, 0x28, 0xAF, 0x38, 0x90, 0xCC, 0x3F, 0xCB, 0x9F, 0xCB, 0x5F, 0xCB, 0x1F, 0x01, 0xD2, 0xFF, 0x01, 0xD2, 0xDF, 0x01, 0xD2, 0xFF, 0x80, 0xD2, 0xDF, 0x01, 0xD2, 0xFF, 0x87, 0xD3, 0x1F, 0xCB, 0x3E, 0xC3, 0x3E, 0xCB, 0xDF, 0xDC, 0xBF, 0x30, 0x0F, 0x38, 0x90, 0x30, 0xB0, 0x01, 0x30, 0xD0, 0x85, + 0x38, 0xB0, 0x59, 0x54, 0xBB, 0xFF, 0xC3, 0xBF, 0xC3, 0x5E, 0xC2, 0xFE, 0x01, 0xCB, 0x1F, 0x01, 0xCB, 0x1E, 0x8B, 0xCB, 0x5E, 0xC3, 0x9F, 0x9A, 0x9A, 0x30, 0x0F, 0x30, 0x2F, 0x30, 0x30, 0x38, 0x30, 0x8A, 0x18, 0xC3, 0x5E, 0xC3, 0x3F, 0xCB, 0x1F, 0xC2, 0xFE, 0x01, 0xCB, 0x1F, 0x90, 0xCB, 0x3F, 0xCB, 0x7F, 0xC3, 0x7F, 0xCC, 0x1F, 0x8A, 0x99, 0x30, 0x4F, 0x30, 0xF0, 0x31, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x20, 0xCE, 0x28, 0xAF, 0x38, 0x90, 0xC3, 0xFF, 0xCB, 0x9F, 0xCB, 0x5F, 0xCB, 0x1F, 0x02, 0xCA, 0xFE, 0x86, 0xC3, 0x1E, 0xCB, 0x9F, 0xD4, 0x3F, 0x38, 0x50, 0x30, 0x70, 0x28, 0xB0, 0x28, 0xF0, 0x01, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x96, 0x29, 0x50, 0x29, 0x30, 0x20, 0xEF, 0x28, 0xCF, 0x28, 0x8F, 0x40, 0xB0, 0xCC, 0x1F, 0xD3, 0x9F, 0xD3, 0x5F, 0xCB, 0x1F, 0xCA, 0xDE, 0xC2, 0xDE, 0xC2, 0xFE, 0xC3, 0x1F, 0xCB, 0x9F, 0xC3, 0xDF, 0x38, 0x2F, 0x30, 0x90, 0x28, 0xCF, 0x20, 0xEF, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x88, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xF7, 0x1A, 0x18, 0x11, 0xD7, 0x09, 0x55, 0x09, 0x35, 0x01, 0x09, 0x55, 0x80, 0x09, 0x35, 0x01, 0x09, 0x55, 0x86, 0x09, 0x56, 0x09, 0x97, 0x11, 0xD8, 0x1A, 0x18, 0x11, 0xD7, 0x09, 0x75, 0x11, 0x75, 0x03, 0x11, 0x95, 0x01, 0x11, 0x74, 0x80, 0x19, 0x74, 0x02, 0x19, 0x73, 0x04, 0x19, 0x74, 0x80, 0x19, 0x95, 0x01, 0x11, 0x74, 0x80, 0x19, 0x74, 0x01, 0x11, 0x74, 0x80, 0x19, 0x74, 0x01, 0x11, 0x73, 0x82, 0x19, + 0x94, 0x19, 0x73, 0x19, 0x94, 0x01, 0x19, 0xB5, 0x81, 0x19, 0xB6, 0x21, 0xB6, 0x03, 0x21, 0xD7, 0x82, 0x19, 0x95, 0x11, 0x33, 0x10, 0xF2, 0x01, 0x19, 0x11, 0x81, 0x21, 0x31, 0x29, 0x51, 0x01, 0x21, 0x30, 0x86, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x11, 0x02, 0x21, 0x31, 0x80, 0x21, 0x11, 0x03, 0x21, 0x31, 0x03, 0x21, 0x11, 0x82, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x02, 0x21, 0x10, 0x02, 0x21, 0x31, 0x82, 0x19, 0x10, 0x21, 0x10, 0x21, 0x11, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x87, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x88, 0x19, 0x51, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x11, 0x55, 0x11, 0x96, 0x11, 0xB7, 0x19, 0xF9, 0x01, + 0x1A, 0x19, 0x85, 0x19, 0xF8, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x19, 0x33, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x88, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x52, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB5, 0x19, 0xF7, 0x02, 0x19, 0xD6, 0x8A, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x53, 0x19, 0x52, 0x19, 0x32, 0x18, 0xF0, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x53, 0x80, 0x19, 0x73, 0x02, 0x11, 0x53, 0x82, 0x19, 0x52, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x82, + 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x31, 0x21, 0x51, 0x19, 0x11, 0x01, 0x11, 0x12, 0x89, 0x11, 0x34, 0x19, 0x95, 0x19, 0xD7, 0x22, 0x18, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x30, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x50, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x10, 0x21, 0x0F, 0x20, 0xEF, 0x01, 0x20, 0xCF, 0x82, 0x20, 0xAF, 0x52, 0x16, 0x83, 0x5C, 0x01, 0x83, 0x1B, 0x8B, 0x8A, 0xFB, 0x8B, + 0x1C, 0x8A, 0xFC, 0x93, 0x1C, 0x93, 0x3C, 0x8B, 0x1B, 0x82, 0xBA, 0x51, 0x75, 0x20, 0x0F, 0x40, 0xD3, 0x8A, 0xFC, 0x82, 0xFC, 0x02, 0x8B, 0x1C, 0x83, 0x8B, 0x3C, 0x62, 0x38, 0x18, 0x2F, 0x20, 0x8F, 0x01, 0x20, 0xCF, 0x81, 0x20, 0xEF, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x08, 0x21, 0x30, 0x8E, 0x19, 0x10, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x19, 0xD6, 0x19, 0xD7, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x32, 0x19, 0x11, 0x19, 0x30, 0x21, 0x30, 0x21, 0x50, 0x04, 0x21, 0x30, 0x8E, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x74, 0x19, 0x33, 0x19, 0x32, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x89, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, + 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x19, 0x75, 0x22, 0x18, 0x01, 0x19, 0xD8, 0x80, 0x11, 0x96, 0x01, 0x09, 0x75, 0x8C, 0x09, 0x55, 0x09, 0x34, 0x09, 0x35, 0x11, 0x56, 0x19, 0xD8, 0x21, 0xF9, 0x21, 0xF8, 0x21, 0xD7, 0x29, 0xB6, 0x29, 0x74, 0x31, 0x73, 0x39, 0x72, 0x39, 0x52, 0x02, 0x39, 0x72, 0x02, 0x41, 0x92, 0x87, 0x41, 0x72, 0x49, 0x51, 0x49, 0x71, 0x40, 0xCD, 0x92, 0xD4, 0xDC, 0xDB, 0xD4, 0x79, 0xDC, 0x79, 0x01, 0xDC, 0x58, 0x05, 0xDC, 0x37, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x57, 0x02, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x02, 0xDC, 0x37, 0x81, 0xDC, 0x16, 0xDC, 0x37, 0x01, 0xDC, 0x16, 0x80, 0xDC, 0x36, 0x07, 0xDC, 0x16, 0x01, 0xDB, 0xF6, 0x01, 0xDC, 0x16, 0x01, 0xDB, 0xF6, 0x80, 0xDC, 0x16, 0x03, 0xDB, 0xF6, 0x80, 0xDB, 0xD6, 0x01, 0xDB, 0xF6, 0x01, 0xDB, 0xF7, 0x84, 0xD3, 0xD6, 0xDB, 0xF6, 0xDB, 0xF7, 0xDC, 0x17, 0xDB, 0xF7, 0x01, 0xDC, 0x38, 0x86, 0xCB, 0xF8, 0x69, 0x4F, 0x40, 0xAE, 0x38, 0xCF, 0x39, 0x10, 0x39, 0x31, 0x39, 0x51, 0x01, 0x39, 0x71, 0x84, 0x31, 0x71, 0x31, 0x51, 0x31, 0x50, 0x31, 0x51, 0x31, 0x50, 0x03, 0x31, 0x51, 0x84, 0x31, 0x31, 0x31, 0x51, 0x29, 0x30, 0x31, 0x30, 0x31, 0x31, 0x02, 0x31, 0x30, 0x82, + 0x29, 0x30, 0x31, 0x50, 0x31, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x31, 0x0F, 0x80, 0x30, 0xEF, 0x01, 0x30, 0xCE, 0x82, 0x30, 0xAD, 0x38, 0xAD, 0x30, 0x6C, 0x01, 0x28, 0x0A, 0x85, 0x38, 0x2B, 0x59, 0x2E, 0x7A, 0x32, 0x9B, 0x16, 0xB3, 0xB8, 0xC3, 0xF9, 0x02, 0xCC, 0x19, 0x02, 0xCB, 0xF9, 0x84, 0xCC, 0x19, 0xCB, 0xF9, 0xCC, 0x19, 0xCB, 0xF9, 0xCC, 0x1A, 0x02, 0xC3, 0xD9, 0x01, 0xC3, 0xF9, 0x01, 0xCC, 0x3A, 0x88, 0xB3, 0xD8, 0x9B, 0x36, 0x71, 0xF1, 0x40, 0xAC, 0x28, 0x0A, 0x28, 0x2B, 0x28, 0x8D, 0x28, 0xAD, 0x28, 0xEE, 0x01, 0x28, 0xEF, 0x08, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x19, 0x30, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x17, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, + 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x8E, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x28, 0xEF, 0x28, 0xCF, 0x38, 0xB0, 0xAB, 0x9D, 0xC3, 0xBF, 0xBB, 0x3D, 0xBB, 0x1E, 0xC3, 0x1E, 0xC3, 0x3E, 0x01, 0xC3, 0x1E, 0x03, 0xC3, 0x3E, 0x88, 0xBB, 0x1D, 0xBB, 0x3D, 0xB3, 0x3D, 0xB3, 0x5C, 0xAB, 0x5C, 0x9B, 0x3B, 0x40, 0xD1, 0x38, 0xD0, 0x30, 0xD0, 0x01, 0x30, 0xF0, 0x95, 0x30, 0xD0, 0x82, 0xB8, 0xB3, 0xFE, 0xAB, 0x5D, 0xAB, 0x3D, 0xB3, 0x3D, 0xBB, 0x3D, 0xB3, 0x1D, 0xAA, 0xDC, 0xB3, 0x1C, 0xB3, 0x3C, 0x92, 0xBA, 0x50, 0xF3, 0x30, 0x4F, 0x30, 0x90, 0x30, 0x70, 0x38, 0x70, 0x58, 0xF3, 0x92, 0x7A, 0xB3, 0x1D, 0xBB, 0x3D, 0xBB, 0x3E, 0x02, 0xBB, 0x5E, 0x85, 0xB3, 0x5D, 0xB3, 0x7D, 0xBB, 0xDE, 0xAB, 0xDD, 0x30, 0xB0, 0x30, 0xF0, 0x02, 0x29, 0x0F, 0x85, 0x20, 0xEF, 0x28, 0xCF, 0x30, 0xB0, 0xB3, 0xDE, 0xC3, 0xBF, 0xB3, 0x3D, 0x03, 0xBB, 0x1D, 0x88, 0xB3, 0x3D, 0xBB, 0xBE, 0xAB, 0x9C, 0x30, 0x4F, 0x28, 0x8F, 0x20, 0xAF, 0x28, 0xEF, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x28, 0xEF, 0x30, 0xCF, 0x40, 0xD0, 0xB3, 0xBD, 0xCB, 0xDF, 0xC3, 0x7E, 0xC3, 0x5E, 0x02, 0xBB, 0x1D, 0x86, 0xBB, 0x5E, 0xC3, 0xDF, 0xAB, 0x9D, 0x38, 0x70, 0x30, 0xAF, 0x28, 0xCF, 0x20, 0xEF, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x88, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x95, 0x19, 0xF7, 0x1A, 0x18, 0x11, 0xD7, 0x09, + 0x55, 0x09, 0x35, 0x04, 0x09, 0x55, 0x87, 0x09, 0x56, 0x09, 0x96, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xD7, 0x09, 0x96, 0x19, 0xF7, 0x22, 0x38, 0x01, 0x22, 0x17, 0x80, 0x21, 0xF7, 0x05, 0x21, 0xF6, 0x81, 0x2A, 0x16, 0x21, 0xF6, 0x01, 0x29, 0xF6, 0x01, 0x21, 0xF6, 0x82, 0x21, 0xF7, 0x21, 0xF6, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x80, 0x21, 0xF5, 0x01, 0x21, 0xF6, 0x03, 0x2A, 0x16, 0x80, 0x2A, 0x17, 0x01, 0x21, 0xF7, 0x80, 0x21, 0xD7, 0x01, 0x21, 0xB6, 0x84, 0x19, 0x75, 0x19, 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x11, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x03, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x21, 0x11, 0x0D, 0x19, 0x11, 0x86, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x02, 0x19, 0x31, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x07, 0x29, 0x0F, 0x02, 0x29, 0x2F, + 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x8A, 0x21, 0x50, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB8, 0x19, 0xF9, 0x01, 0x1A, 0x19, 0x87, 0x19, 0xD8, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x19, 0x12, 0x21, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x82, 0x19, 0x32, 0x19, 0x53, 0x19, 0x73, 0x02, 0x19, 0x94, 0x01, 0x11, 0x53, 0x81, 0x19, 0x73, 0x19, 0x53, 0x01, 0x19, 0x32, 0x83, 0x19, 0x52, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x19, 0x10, 0x19, 0x11, 0x19, 0x31, 0x04, 0x19, 0x52, 0x01, 0x19, 0x31, 0x01, 0x19, 0x10, 0x04, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, + 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x29, 0x30, 0x29, 0x51, 0x21, 0x51, 0x19, 0x11, 0x01, 0x11, 0x12, 0x85, 0x11, 0x34, 0x11, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xF7, 0x11, 0x95, 0x01, 0x11, 0x74, 0x82, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x8B, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x20, 0xF0, 0x20, + 0xD0, 0x20, 0x8F, 0x5A, 0x16, 0x83, 0x3B, 0x83, 0x1C, 0x8B, 0x3C, 0x8B, 0x1C, 0x92, 0xFC, 0x02, 0x92, 0xFB, 0x86, 0x92, 0xFC, 0x93, 0x1C, 0x7A, 0x5A, 0x69, 0xF8, 0x82, 0x9B, 0x8A, 0xBC, 0x92, 0xFC, 0x01, 0x8A, 0xFC, 0x85, 0x8B, 0x1C, 0x20, 0x30, 0x20, 0x4F, 0x20, 0xD0, 0x20, 0xF0, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x19, 0x11, 0x88, 0x11, 0x32, 0x19, 0x74, 0x19, 0xB5, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xB6, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x30, 0x01, 0x21, 0x50, 0x89, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x95, 0x01, 0x22, 0x17, 0x84, 0x19, 0xD6, 0x11, 0x74, 0x19, 0x53, 0x19, 0x32, 0x21, 0x11, 0x06, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, + 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x30, 0x85, 0x29, 0x31, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x34, 0x19, 0xB7, 0x01, 0x19, 0xD8, 0x82, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x75, 0x01, 0x09, 0x55, 0x88, 0x09, 0x56, 0x11, 0x76, 0x19, 0xB8, 0x22, 0x19, 0x21, 0xF8, 0x21, 0xD7, 0x21, 0x95, 0x31, 0x94, 0x31, 0x73, 0x01, 0x39, 0x52, 0x01, 0x39, 0x72, 0x80, 0x41, 0x92, 0x01, 0x41, 0x72, 0x87, 0x41, 0x92, 0x41, 0x72, 0x49, 0x71, 0x51, 0x71, 0x48, 0xEE, 0x9B, 0x15, 0xE4, 0xFC, 0xD4, 0x79, 0x01, 0xDC, 0x58, 0x80, 0xE4, 0x58, 0x05, 0xDC, 0x37, 0x03, 0xDC, 0x36, 0x03, 0xDC, 0x37, 0x80, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x16, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x16, 0x80, 0xDC, 0x17, 0x01, 0xDC, 0x16, 0x80, 0xDC, 0x17, 0x04, 0xDC, 0x16, 0x81, 0xDB, 0xF6, 0xDC, 0x16, 0x05, 0xDB, 0xF6, 0x80, 0xDC, 0x17, 0x01, 0xDB, 0xF6, 0x81, 0xDB, 0xD6, 0xDB, 0xF7, 0x02, 0xDB, 0xD6, 0x80, 0xDB, 0xF6, 0x02, 0xDB, 0xF7, 0x8A, 0xDC, 0x18, 0xD4, 0x19, 0x92, 0x73, 0x48, 0x8D, 0x40, 0xEF, 0x38, 0xEF, 0x31, 0x10, 0x39, 0x31, 0x39, 0x51, 0x31, 0x51, 0x31, 0x71, 0x01, 0x31, 0x51, 0x80, 0x31, 0x50, 0x08, 0x31, 0x51, 0x01, 0x31, 0x30, 0x01, 0x31, 0x50, 0x01, 0x31, 0x30, 0x81, 0x29, + 0x30, 0x31, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x31, 0x0F, 0x8D, 0x28, 0xCE, 0x30, 0xAE, 0x30, 0xAD, 0x30, 0x8D, 0x30, 0x4B, 0x38, 0x4B, 0x40, 0x6B, 0x61, 0x0E, 0x8A, 0x53, 0xB3, 0x97, 0xCC, 0x3A, 0xD4, 0x3A, 0xCC, 0x19, 0xC3, 0xB8, 0x01, 0xC3, 0x97, 0x83, 0xC3, 0x77, 0xCB, 0x77, 0xCB, 0x97, 0xCB, 0x77, 0x03, 0xCB, 0x97, 0x83, 0xC3, 0x97, 0xC3, 0x98, 0xC3, 0xB8, 0xC3, 0x98, 0x01, 0xC3, 0xB8, 0x81, 0xBB, 0x97, 0xBB, 0x77, 0x02, 0xB3, 0x77, 0x8A, 0xB3, 0x97, 0xB3, 0xD8, 0xBB, 0xF9, 0x9B, 0x16, 0x69, 0xB0, 0x38, 0x8C, 0x28, 0x2B, 0x28, 0x6C, 0x30, 0xCE, 0x28, 0xEE, 0x28, 0xEF, 0x07, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x8A, 0x19, 0x30, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x17, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x32, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x86, 0x21, 0x10, 0x21, + 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x28, 0xCF, 0x20, 0x0D, 0x28, 0x0D, 0x28, 0x0E, 0x08, 0x30, 0x0E, 0x80, 0x28, 0x0E, 0x01, 0x28, 0x0D, 0x01, 0x20, 0x0D, 0x88, 0x18, 0x0C, 0x30, 0xCF, 0x28, 0xCF, 0x20, 0xAF, 0x20, 0xCF, 0x28, 0xCF, 0x28, 0xD0, 0x20, 0x4E, 0x18, 0x0D, 0x02, 0x20, 0x0D, 0x81, 0x28, 0x0D, 0x28, 0x0E, 0x01, 0x28, 0x0D, 0x01, 0x20, 0x0D, 0x81, 0x28, 0x4E, 0x30, 0xD0, 0x01, 0x28, 0xD0, 0x82, 0x30, 0xB0, 0x28, 0x2E, 0x20, 0x0D, 0x01, 0x28, 0x0E, 0x02, 0x30, 0x0E, 0x80, 0x28, 0x0E, 0x02, 0x28, 0x0D, 0x81, 0x28, 0x4E, 0x28, 0xCF, 0x01, 0x20, 0xEF, 0x80, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x83, 0x28, 0xEF, 0x30, 0xCF, 0x20, 0x0D, 0x28, 0x0D, 0x04, 0x30, 0x0E, 0x80, 0x28, 0x0D, 0x01, 0x20, 0x0D, 0x82, 0x28, 0xAF, 0x28, 0xCF, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x31, 0x10, 0x30, 0xAF, 0x20, 0x0D, 0x28, 0x0D, 0x04, 0x30, 0x0E, 0x85, 0x28, 0x0E, 0x28, 0x0D, 0x28, 0x2E, 0x30, 0xD0, 0x28, 0xCF, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x8A, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x95, 0x21, 0xF7, 0x19, 0xF7, 0x11, 0xB7, 0x09, 0x56, 0x05, 0x09, 0x55, 0x87, 0x09, 0x56, 0x09, 0x96, 0x11, 0xD7, 0x11, 0xF7, 0x11, 0xD7, 0x11, 0xF7, 0x22, 0x38, 0x2A, 0x79, 0x02, 0x2A, 0x38, 0x02, 0x2A, 0x37, 0x83, 0x2A, 0x17, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x37, 0x01, 0x2A, + 0x17, 0x80, 0x32, 0x37, 0x01, 0x32, 0x38, 0x82, 0x32, 0x58, 0x2A, 0x37, 0x2A, 0x17, 0x02, 0x2A, 0x37, 0x81, 0x2A, 0x16, 0x29, 0xF6, 0x02, 0x2A, 0x16, 0x01, 0x2A, 0x17, 0x86, 0x29, 0xF6, 0x2A, 0x17, 0x29, 0xF6, 0x21, 0x75, 0x19, 0x54, 0x19, 0x33, 0x19, 0x12, 0x01, 0x21, 0x11, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x31, 0x05, 0x19, 0x11, 0x80, 0x19, 0x32, 0x01, 0x19, 0x11, 0x82, 0x11, 0x11, 0x19, 0x11, 0x19, 0x12, 0x03, 0x11, 0x11, 0x82, 0x10, 0xF1, 0x11, 0x11, 0x19, 0x11, 0x03, 0x11, 0x11, 0x03, 0x11, 0x12, 0x02, 0x19, 0x12, 0x01, 0x11, 0x11, 0x80, 0x19, 0x12, 0x01, 0x19, 0x11, 0x01, 0x19, 0x32, 0x80, 0x11, 0x31, 0x01, 0x11, 0x11, 0x80, 0x19, 0x12, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x19, 0x54, 0x11, 0x55, 0x11, 0x96, 0x11, 0xB8, 0x19, 0xF9, 0x01, + 0x1A, 0x19, 0x83, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x75, 0x11, 0x53, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x03, 0x19, 0x31, 0x81, 0x19, 0x32, 0x19, 0x52, 0x01, 0x19, 0x32, 0x80, 0x19, 0x52, 0x05, 0x19, 0x31, 0x81, 0x19, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x19, 0x10, 0x06, 0x19, 0x31, 0x01, 0x19, 0x10, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, + 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xF7, 0x1A, 0x17, 0x22, 0x17, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x8C, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x86, 0x20, 0xF0, 0x20, 0xD0, 0x28, 0xD0, 0x20, 0x90, 0x5A, 0x17, 0x8B, 0x3C, 0x8A, 0xFB, 0x01, 0x93, 0x1C, 0x80, 0x92, 0xFB, 0x01, 0x92, 0xFC, 0x84, 0x92, 0xDC, 0x92, 0xFC, 0x92, 0xDC, 0x8A, 0x9C, 0x8A, 0x7B, 0x02, 0x92, 0xDC, 0x87, 0x92, 0xFC, 0x82, 0xFB, 0x20, 0x0E, 0x18, 0x4F, 0x28, 0xF0, 0x29, + 0x10, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x19, 0x74, 0x19, 0x95, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x86, 0x19, 0x96, 0x19, 0x74, 0x19, 0x53, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x05, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x11, 0x54, 0x19, 0x95, 0x01, 0x22, 0x17, 0x87, 0x19, 0xD6, 0x11, 0x74, 0x19, 0x53, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x06, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x02, 0x29, 0x10, + 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x11, 0x83, 0x19, 0x12, 0x11, 0x33, 0x19, 0x75, 0x19, 0xD7, 0x01, 0x19, 0xF8, 0x80, 0x11, 0xD7, 0x02, 0x09, 0x76, 0x86, 0x09, 0x97, 0x11, 0xB8, 0x19, 0xF9, 0x22, 0x19, 0x21, 0xD7, 0x21, 0xB6, 0x29, 0x75, 0x01, 0x31, 0x73, 0x02, 0x39, 0x72, 0x02, 0x41, 0x72, 0x01, 0x41, 0x92, 0x88, 0x49, 0x92, 0x49, 0x71, 0x51, 0x71, 0x48, 0xEE, 0xA3, 0x56, 0xDC, 0xDB, 0xD4, 0x79, 0xDC, 0x78, 0xDC, 0x58, 0x02, 0xDC, 0x37, 0x80, 0xDC, 0x57, 0x05, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x16, 0x01, 0xDC, 0x37, 0x82, 0xDC, 0x16, 0xDC, 0x37, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x02, 0xDC, 0x16, 0x80, 0xDC, 0x36, 0x04, 0xDC, 0x16, 0x84, 0xDB, 0xF6, 0xDC, 0x16, 0xDB, 0xF6, 0xDC, 0x17, 0xDC, 0x16, 0x01, 0xDB, 0xF6, 0x80, 0xDC, 0x16, 0x01, 0xDB, 0xF6, 0x80, 0xDC, 0x16, 0x03, 0xDB, 0xF6, 0x06, 0xDB, 0xD6, 0x80, 0xDB, 0xF7, 0x01, 0xDB, 0xD7, 0x8B, 0xDC, 0x18, 0xD4, 0x18, 0xCB, 0xF9, 0x79, 0xD1, 0x40, 0xAD, 0x41, 0x0F, 0x38, 0xF0, 0x39, 0x10, 0x39, 0x51, 0x39, 0x71, 0x31, 0x71, 0x31, 0x51, 0x01, 0x31, 0x71, 0x81, 0x31, 0x51, 0x31, 0x71, 0x07, 0x31, 0x51, 0x01, 0x31, 0x50, 0x02, 0x31, 0x30, 0x83, 0x31, 0x50, 0x31, 0x0F, 0x31, 0x2F, 0x31, 0x0F, 0x01, 0x30, 0xEE, 0x8B, 0x38, 0xEE, 0x38, 0xCD, 0x38, 0x8C, 0x30, 0x2B, 0x38, 0x4B, 0x69, 0x90, 0xA2, 0xF5, 0xC3, 0xD9, 0xCB, 0xF9, 0xD3, 0xF9, 0xCB, 0xB8, 0xD3, 0xB8, 0x03, 0xCB, 0x97, 0x84, 0xCB, 0x77, 0xCB, 0x56, 0xCB, 0x77, 0xD3, 0x77, 0xCB, 0x77, 0x02, 0xCB, 0x97, + 0x01, 0xC3, 0x77, 0x03, 0xC3, 0x97, 0x81, 0xBB, 0x97, 0xBB, 0xB7, 0x02, 0xBB, 0x97, 0x82, 0xB3, 0x97, 0xB3, 0x77, 0xB3, 0x97, 0x01, 0xAB, 0x97, 0x86, 0xB3, 0xD9, 0xA3, 0x98, 0x7A, 0x94, 0x38, 0xAD, 0x18, 0x0B, 0x20, 0x8C, 0x28, 0xCE, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x09, 0x33, 0x19, 0xD6, 0x11, 0xF7, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x30, 0x85, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x28, 0xAE, 0x20, 0x6E, 0x20, 0x4D, 0x03, 0x20, 0x2D, 0x80, 0x20, 0x0D, 0x01, 0x18, 0x0D, 0x01, 0x20, 0x2D, 0x86, 0x20, 0x4D, 0x20, 0x4E, 0x20, 0x6E, 0x20, 0x4D, 0x18, 0x6D, 0x20, 0x8E, 0x20, 0xAF, 0x02, 0x20, 0xCF, 0x85, 0x20, 0xEF, 0x20, 0xF0, 0x20, 0xCF, 0x20, 0xAF, 0x20, 0x8F, + 0x20, 0x8E, 0x05, 0x20, 0x6E, 0x87, 0x20, 0x8E, 0x28, 0xAF, 0x28, 0xCF, 0x28, 0xF0, 0x28, 0xCF, 0x28, 0xF0, 0x28, 0xCF, 0x28, 0x8F, 0x01, 0x28, 0x6E, 0x83, 0x28, 0x4E, 0x20, 0x4E, 0x28, 0x4E, 0x20, 0x4E, 0x02, 0x20, 0x6E, 0x81, 0x20, 0x8E, 0x20, 0xCF, 0x01, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x82, 0x20, 0xEF, 0x28, 0xEF, 0x28, 0xAF, 0x01, 0x28, 0x6E, 0x02, 0x28, 0x4E, 0x01, 0x28, 0x6E, 0x83, 0x28, 0x8E, 0x28, 0xAF, 0x28, 0xCF, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x28, 0xEF, 0x84, 0x28, 0xAF, 0x28, 0x6E, 0x28, 0x4E, 0x28, 0x6E, 0x28, 0x4E, 0x03, 0x28, 0x6E, 0x82, 0x28, 0x8E, 0x28, 0xCF, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x88, 0x21, 0x0E, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x30, 0x19, 0x11, 0x19, 0x31, 0x11, 0x32, 0x11, 0x74, 0x21, 0xF7, 0x01, 0x19, 0xF7, 0x01, 0x09, 0x76, 0x03, 0x09, 0x55, 0x01, 0x09, 0x76, 0x83, 0x09, 0x96, 0x11, 0xD7, 0x19, 0xF7, 0x11, 0xD6, 0x01, 0x11, 0xB6, 0x02, 0x19, 0xB6, 0x80, 0x19, 0x95, 0x01, 0x19, 0xB5, 0x80, 0x19, 0x95, 0x05, 0x19, 0xB5, 0x80, 0x19, 0x95, 0x01, 0x21, 0x95, 0x03, 0x21, 0xB5, 0x06, 0x19, 0x94, 0x02, 0x19, 0x74, 0x81, 0x19, 0x54, 0x19, 0x53, 0x01, 0x19, 0x12, 0x81, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x08, 0x21, 0x30, 0x80, 0x19, 0x10, 0x02, 0x19, 0x11, 0x80, 0x19, 0x32, 0x05, 0x11, 0x32, 0x81, + 0x11, 0x12, 0x11, 0x32, 0x05, 0x11, 0x12, 0x81, 0x11, 0x32, 0x11, 0x12, 0x01, 0x11, 0x32, 0x04, 0x11, 0x12, 0x80, 0x11, 0x32, 0x01, 0x11, 0x12, 0x08, 0x11, 0x32, 0x80, 0x11, 0x53, 0x01, 0x11, 0x33, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x8A, 0x21, 0x0F, 0x21, 0x31, 0x19, 0x31, 0x21, 0x52, 0x19, 0x33, 0x11, 0x33, 0x11, 0x55, 0x11, 0x97, 0x19, 0xD8, 0x19, 0xF9, 0x1A, 0x19, 0x01, 0x19, 0xF8, 0x84, 0x11, 0x96, 0x11, 0x55, 0x11, 0x53, 0x19, 0x32, 0x21, 0x52, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x10, 0x05, 0x19, 0x31, 0x84, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x21, 0x51, 0x21, 0x31, 0x02, 0x21, + 0x10, 0x80, 0x29, 0x10, 0x01, 0x20, 0xF0, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x19, 0x10, 0x84, 0x19, 0x30, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x30, 0x87, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x09, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x89, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x21, 0x52, 0x19, 0x32, 0x11, 0x12, 0x11, 0x32, 0x11, 0x53, 0x11, 0xB5, 0x19, 0xF7, 0x01, 0x22, 0x17, 0x83, 0x11, 0x95, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, + 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x88, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x86, 0x28, 0xF0, 0x20, 0xD0, 0x28, 0x90, 0x62, 0x37, 0x8B, 0x3C, 0x8B, 0x1C, 0x93, 0x1C, 0x01, 0x92, 0xFC, 0x01, 0x92, 0xDC, 0x83, 0x92, 0xBC, 0x9A, 0xDC, 0x92, 0x9C, 0x9A, 0xBC, 0x01, 0x9A, 0xDD, 0x88, 0x92, 0xDC, 0x92, 0xFC, 0x8A, 0xFB, 0x18, 0x0E, 0x20, 0x8F, 0x28, 0xF0, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x07, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, + 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x85, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x19, 0x53, 0x01, 0x19, 0x95, 0x8D, 0x22, 0x18, 0x22, 0x17, 0x19, 0x96, 0x11, 0x54, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x19, 0x10, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x30, 0x85, 0x21, 0x51, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x09, 0x54, 0x11, 0xB5, 0x01, 0x22, 0x17, 0x85, 0x19, 0xB5, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x04, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x31, 0x21, 0x32, 0x19, 0x33, 0x19, 0x54, 0x21, 0xD7, 0x22, 0x18, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x96, 0x11, 0xB7, 0x1A, 0x18, 0x01, 0x22, 0x39, 0x86, 0x22, 0x19, 0x22, 0x18, 0x21, 0xD7, 0x21, 0x95, 0x29, 0x74, 0x29, 0x52, 0x31, 0x52, 0x01, 0x39, 0x72, 0x80, 0x41, 0x72, 0x03, 0x41, 0x92, 0x01, 0x49, 0x92, 0x85, 0x49, 0x71, 0x51, 0x71, 0x49, 0x0E, 0xA3, 0x57, 0xE4, 0xFC, 0xDC, 0x79, 0x01, 0xDC, 0x58, 0x01, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x80, 0xDC, + 0x16, 0x05, 0xDC, 0x37, 0x81, 0xDC, 0x17, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x80, 0xDB, 0xF6, 0x0B, 0xDC, 0x16, 0x01, 0xDB, 0xF6, 0x80, 0xDC, 0x16, 0x01, 0xDB, 0xF6, 0x80, 0xD3, 0xF6, 0x03, 0xDB, 0xF6, 0x83, 0xDB, 0xF7, 0xDB, 0xF6, 0xDB, 0xD7, 0xDB, 0xF7, 0x02, 0xDB, 0xD6, 0x80, 0xDB, 0xB6, 0x01, 0xDB, 0xD6, 0x88, 0xDB, 0xD7, 0xDB, 0xF8, 0xDC, 0x18, 0xD4, 0x19, 0xD4, 0x5A, 0x58, 0xEE, 0x48, 0xEF, 0x49, 0x30, 0x39, 0x30, 0x01, 0x39, 0x51, 0x81, 0x39, 0x71, 0x39, 0x51, 0x01, 0x31, 0x50, 0x81, 0x31, 0x51, 0x31, 0x71, 0x05, 0x31, 0x51, 0x03, 0x31, 0x30, 0x82, 0x31, 0x50, 0x31, 0x30, 0x31, 0x2F, 0x01, 0x31, 0x0F, 0x01, 0x30, 0xEE, 0x89, 0x38, 0xEE, 0x38, 0xAD, 0x38, 0x6C, 0x40, 0x8C, 0x69, 0x6F, 0x9A, 0xF4, 0xD4, 0x7A, 0xDC, 0x7B, 0xCB, 0xF8, 0xC3, 0x77, 0x01, 0xCB, 0x77, 0x01, 0xD3, 0x97, 0x01, 0xD3, 0x77, 0x01, 0xD3, 0x56, 0x01, 0xD3, 0x77, 0x81, 0xCB, 0x56, 0xD3, 0x77, 0x02, 0xCB, 0x76, 0x83, 0xC3, 0x76, 0xC3, 0x97, 0xC3, 0x77, 0xBB, 0x76, 0x01, 0xBB, 0x97, 0x82, 0xB3, 0x97, 0xB3, 0xB7, 0xB3, 0x97, 0x03, 0xB3, 0xB8, 0x80, 0xAB, 0xD8, 0x01, 0xAB, 0xB8, 0x88, 0x9B, 0x77, 0x93, 0x37, 0x8B, 0x36, 0x93, 0x78, 0x9B, 0xD9, 0x72, 0xB5, 0x39, 0x0E, 0x20, 0x8D, 0x20, 0xAE, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, + 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x89, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x19, 0xF6, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x28, 0xEF, 0x82, 0x28, 0xCF, 0x28, 0xAE, 0x28, 0xAF, 0x04, 0x28, 0xCF, 0x01, 0x20, 0xCF, 0x81, 0x28, 0xCF, 0x28, 0xEF, 0x01, 0x20, 0xCF, 0x02, 0x20, 0xEF, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x20, 0xEF, 0x01, 0x28, 0xF0, 0x80, 0x20, 0xEF, 0x04, 0x28, 0xEF, 0x83, 0x29, 0x10, 0x28, 0xEF, 0x20, 0xEF, 0x28, 0xEF, 0x04, 0x29, 0x10, 0x81, 0x28, 0xCF, 0x28, 0xAF, 0x02, 0x28, 0xCF, 0x82, 0x28, 0xAF, 0x28, 0xEF, 0x28, 0xF0, 0x01, 0x20, 0xCF, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x03, 0x28, 0xEF, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x31, + 0x10, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xAF, 0x03, 0x28, 0xCF, 0x83, 0x28, 0xEF, 0x28, 0xCF, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x97, 0x21, 0x0E, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x21, 0xF7, 0x19, 0xF7, 0x11, 0x96, 0x11, 0x76, 0x09, 0x76, 0x11, 0x96, 0x09, 0x55, 0x09, 0x75, 0x09, 0x96, 0x11, 0xB7, 0x11, 0xF7, 0x1A, 0x18, 0x19, 0xF7, 0x09, 0x95, 0x01, 0x09, 0x13, 0x01, 0x09, 0x33, 0x81, 0x09, 0x13, 0x11, 0x13, 0x01, 0x09, 0x12, 0x81, 0x11, 0x12, 0x11, 0x32, 0x01, 0x11, 0x12, 0x84, 0x11, 0x32, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x11, 0x13, 0x08, 0x11, 0x12, 0x80, 0x11, 0x32, 0x01, 0x11, 0x12, 0x80, 0x19, 0x32, 0x01, 0x11, 0x12, 0x81, 0x10, 0xF2, 0x18, 0xF2, 0x01, 0x19, 0x11, 0x80, 0x21, 0x11, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x31, 0x19, 0x12, 0x19, 0x32, 0x19, 0x33, 0x11, 0x53, 0x19, 0x54, 0x02, 0x19, 0x74, 0x81, 0x19, 0x94, 0x19, 0x74, 0x05, 0x19, 0x94, 0x81, 0x21, 0xB5, 0x21, 0xB4, 0x01, 0x21, 0xB5, 0x81, 0x21, 0xD5, 0x21, 0xB5, 0x06, 0x21, 0xD5, 0x80, 0x21, 0xB5, 0x03, 0x21, 0xD5, 0x80, 0x21, 0xF6, 0x01, 0x29, 0xF5, 0x80, 0x21, 0xF5, 0x03, 0x21, 0xD5, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x8B, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, + 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x06, 0x29, 0x2F, 0x80, 0x29, 0x4F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8F, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x11, 0x55, 0x11, 0x97, 0x11, 0xD8, 0x11, 0xF8, 0x1A, 0x19, 0x19, 0xF8, 0x19, 0xD8, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x19, 0x10, 0x21, 0x30, 0x01, 0x19, 0x10, 0x01, 0x19, 0x31, 0x86, 0x19, 0x10, 0x21, 0x11, 0x19, 0x10, 0x19, 0x30, 0x19, 0x10, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, + 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x86, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x08, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x22, 0x38, 0x21, 0xF7, 0x11, 0x95, 0x11, 0x74, 0x01, 0x11, 0x32, 0x81, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, + 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x05, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x88, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x20, 0xF0, 0x28, 0xF0, 0x28, 0xB0, 0x20, 0x70, 0x59, 0xD6, 0x8B, 0x3C, 0x01, 0x93, 0x1C, 0x84, 0x92, 0xFC, 0x9A, 0xFC, 0x9A, 0xDC, 0x9A, 0xBC, 0x9A, 0xDC, 0x01, 0x9A, 0xBC, 0x87, 0x9A, 0x9C, 0xA2, 0xFD, 0x9A, 0xDD, 0x9A, 0xFC, 0x82, 0xDA, 0x18, 0x0E, 0x20, 0x8F, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x07, 0x29, 0x10, 0x04, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x11, 0x19, 0x12, 0x11, 0x32, 0x19, 0x53, 0x19, 0x95, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x31, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x51, 0x19, 0x31, 0x11, 0x32, 0x01, 0x11, 0x33, 0x85, 0x11, 0x75, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF6, 0x19, + 0x94, 0x11, 0x52, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x30, 0x04, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x88, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x21, 0x32, 0x19, 0x32, 0x19, 0x53, 0x19, 0x75, 0x01, 0x21, 0xF7, 0x01, 0x19, 0xF7, 0x80, 0x1A, 0x18, 0x02, 0x22, 0x39, 0x85, 0x21, 0xF8, 0x21, 0xD7, 0x21, 0xB6, 0x29, 0x95, 0x29, 0x74, 0x31, 0x73, 0x01, 0x39, 0x72, 0x01, 0x41, 0x72, 0x02, 0x41, 0x92, 0x81, 0x49, 0x92, 0x41, 0x92, 0x01, 0x49, 0x92, 0x85, 0x51, 0x91, 0x48, 0xEE, 0xA3, 0x56, 0xE4, 0xFC, 0xDC, 0x79, 0xDC, 0x58, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x05, 0xDC, 0x37, 0x88, 0xDC, 0x57, 0xDC, 0x16, 0xDC, 0x37, 0xDC, 0x17, 0xDC, 0x16, 0xDC, 0x17, 0xDC, 0x16, 0xDC, 0x17, 0xDB, 0xF6, 0x01, 0xDC, 0x16, 0x80, 0xDB, 0xF6, 0x03, 0xDC, 0x16, 0x80, 0xDC, 0x17, 0x01, 0xDC, 0x16, 0x80, 0xDC, 0x17, 0x02, 0xDB, 0xF6, 0x80, 0xDC, 0x16, 0x04, 0xDB, 0xF6, 0x82, 0xDB, 0xF7, 0xDB, 0xF6, 0xDB, 0xD6, 0x01, 0xDB, 0xF6, 0x83, 0xDB, 0xD7, 0xDB, 0xD6, 0xDB, 0xB6, 0xDB, 0xD6, 0x01, 0xDB, 0xB6, 0x81, 0xDB, 0xD6, 0xDB, 0xD7, 0x01, 0xDB, 0xF7, 0x85, + 0xDB, 0xF8, 0xD3, 0xF8, 0xD4, 0x3A, 0xB3, 0x57, 0x59, 0x2F, 0x49, 0x0F, 0x01, 0x41, 0x30, 0x81, 0x39, 0x30, 0x39, 0x51, 0x01, 0x39, 0x71, 0x06, 0x31, 0x51, 0x83, 0x31, 0x71, 0x31, 0x51, 0x31, 0x50, 0x31, 0x30, 0x01, 0x31, 0x50, 0x80, 0x31, 0x30, 0x01, 0x31, 0x2F, 0x80, 0x31, 0x0F, 0x01, 0x38, 0xEE, 0x8A, 0x40, 0xCE, 0x38, 0x6C, 0x48, 0xCD, 0x8A, 0x94, 0xCC, 0x39, 0xD4, 0x39, 0xD4, 0x19, 0xD3, 0xD8, 0xD3, 0xB7, 0xCB, 0x96, 0xCB, 0x76, 0x01, 0xD3, 0x76, 0x80, 0xD3, 0x77, 0x01, 0xD3, 0x56, 0x80, 0xD3, 0x76, 0x01, 0xD3, 0x56, 0x81, 0xCB, 0x56, 0xD3, 0x76, 0x01, 0xCB, 0x76, 0x83, 0xC3, 0x35, 0xCB, 0x96, 0xC3, 0x76, 0xC3, 0x97, 0x01, 0xBB, 0x97, 0x80, 0xB3, 0x97, 0x01, 0xAB, 0x97, 0x80, 0xAB, 0xB7, 0x01, 0xA3, 0xD8, 0x80, 0xA3, 0xF8, 0x01, 0xA4, 0x19, 0x02, 0xA3, 0xF9, 0x01, 0x9B, 0xD9, 0x86, 0x93, 0xB9, 0x93, 0xB8, 0x8B, 0xB8, 0x83, 0x78, 0x8B, 0x98, 0x8B, 0xB9, 0x6A, 0xD5, 0x01, 0x20, 0xAD, 0x80, 0x28, 0xEF, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x89, 0x11, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x1A, 0x17, 0x11, 0xD7, 0x11, + 0xB6, 0x11, 0x33, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x82, 0x28, 0xEF, 0x29, 0x0F, 0x28, 0xEF, 0x02, 0x29, 0x10, 0x80, 0x20, 0xEF, 0x02, 0x29, 0x10, 0x81, 0x28, 0xEF, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x20, 0xEF, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x83, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x28, 0xEF, 0x80, 0x20, 0xEF, 0x02, 0x28, 0xEF, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x20, 0xEF, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x28, 0xEF, 0x82, 0x29, 0x0F, 0x28, 0xEF, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x29, 0x50, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8A, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x20, 0xEF, 0x29, 0x10, 0x28, 0xF0, 0x29, 0x10, 0x02, 0x28, 0xEF, 0x81, 0x29, 0x0F, 0x28, 0xEF, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x8B, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, + 0x21, 0x10, 0x19, 0x30, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x21, 0xF7, 0x01, 0x19, 0xD7, 0x01, 0x11, 0xB6, 0x82, 0x11, 0x96, 0x11, 0xB6, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x82, 0x11, 0xD6, 0x11, 0x94, 0x09, 0x53, 0x01, 0x11, 0x33, 0x80, 0x11, 0x12, 0x04, 0x11, 0x32, 0x81, 0x11, 0x12, 0x11, 0x32, 0x01, 0x11, 0x12, 0x82, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x02, 0x19, 0x32, 0x82, 0x11, 0x12, 0x11, 0x11, 0x19, 0x12, 0x02, 0x19, 0x11, 0x86, 0x19, 0x32, 0x19, 0x31, 0x19, 0x32, 0x19, 0x31, 0x19, 0x32, 0x19, 0x11, 0x21, 0x32, 0x03, 0x19, 0x11, 0x84, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x32, 0x88, 0x19, 0x53, 0x21, 0x95, 0x21, 0xD6, 0x29, 0xF7, 0x2A, 0x38, 0x2A, 0x17, 0x32, 0x38, 0x2A, 0x37, 0x32, 0x37, 0x02, 0x32, 0x58, 0x80, 0x32, 0x78, 0x01, 0x32, 0x58, 0x01, 0x32, 0x78, 0x81, 0x32, 0x57, 0x32, 0x78, 0x03, 0x32, 0x57, 0x84, 0x32, 0x37, 0x32, 0x58, 0x32, 0x57, 0x32, 0x37, 0x2A, 0x37, 0x01, 0x32, 0x37, 0x02, 0x2A, 0x37, 0x83, 0x2A, 0x17, 0x2A, 0x37, 0x2A, 0x16, 0x2A, 0x37, 0x03, 0x2A, 0x16, 0x82, 0x29, 0xF6, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, + 0x05, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x32, 0x19, 0x33, 0x11, 0x34, 0x11, 0x55, 0x09, 0x96, 0x11, 0xD8, 0x01, 0x1A, 0x19, 0x88, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x12, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x07, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, + 0x29, 0x10, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x01, 0x11, 0x32, 0x88, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD6, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x74, 0x09, 0x12, 0x11, 0x12, 0x01, 0x19, 0x31, 0x81, 0x21, 0x51, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x87, 0x21, 0x10, 0x29, 0x10, 0x20, 0xD0, 0x20, 0xB0, 0x20, 0x4F, 0x59, 0xD5, 0x93, 0x3C, 0x93, + 0x1C, 0x01, 0x9A, 0xFC, 0x83, 0x9A, 0xDC, 0x9A, 0xBC, 0xA2, 0xDD, 0xA2, 0xBD, 0x01, 0x9A, 0x9C, 0x86, 0xA2, 0xBD, 0xA2, 0xDD, 0x9B, 0x1D, 0x8A, 0xDA, 0x18, 0x0D, 0x20, 0x8F, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x87, 0x19, 0x95, 0x11, 0x54, 0x19, 0x53, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x51, 0x01, 0x21, 0x31, 0x81, 0x19, 0x31, 0x19, 0x32, 0x01, 0x11, 0x33, 0x89, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x10, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, + 0x0F, 0x05, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x31, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x8D, 0x29, 0x31, 0x21, 0x31, 0x21, 0x52, 0x21, 0x32, 0x19, 0x53, 0x19, 0x74, 0x19, 0x95, 0x21, 0xF6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xF7, 0x21, 0xF7, 0x21, 0xD7, 0x21, 0xB6, 0x01, 0x21, 0x95, 0x80, 0x29, 0x95, 0x01, 0x31, 0x73, 0x80, 0x39, 0x72, 0x01, 0x41, 0x72, 0x03, 0x41, 0x92, 0x88, 0x49, 0xB2, 0x49, 0x92, 0x49, 0xB2, 0x49, 0x92, 0x51, 0x91, 0x51, 0x2F, 0x92, 0xD5, 0xDC, 0xDC, 0xDC, 0x99, 0x01, 0xDC, 0x78, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x81, 0xDC, 0x37, 0xDC, 0x57, 0x04, 0xDC, 0x37, 0x81, 0xDC, 0x16, 0xDC, 0x37, 0x06, 0xDC, 0x17, 0x80, 0xDC, 0x16, 0x02, 0xDC, 0x17, 0x02, 0xDC, 0x16, 0x80, 0xDB, 0xF6, 0x01, 0xDC, 0x16, 0x0C, 0xDB, 0xF6, 0x02, 0xDB, 0xD6, 0x80, 0xDB, 0xD7, 0x05, 0xDB, 0xB6, 0x01, 0xDB, 0xD7, 0x88, 0xDB, 0xF8, 0xD3, 0xF8, 0xE4, 0xBB, 0xA3, 0x16, 0x51, 0x0F, 0x49, 0x30, 0x41, 0x30, 0x39, 0x30, 0x39, 0x51, 0x01, 0x39, 0x71, 0x80, 0x39, 0x91, 0x01, 0x39, 0x71, 0x82, 0x31, 0x71, 0x39, 0x71, 0x39, 0x51, 0x03, 0x31, 0x51, 0x01, 0x31, 0x50, 0x01, 0x31, 0x30, 0x88, 0x31, 0x2F, 0x39, 0x0F, 0x38, 0xEE, 0x40, 0xCD, 0x48, 0xAD, 0x61, 0x2F, 0xA2, 0xF5, 0xDC, 0x5A, 0xD4, 0x19, 0x02, 0xCB, 0x97, 0x85, 0xCB, 0x76, 0xD3, 0x96, 0xD3, 0x76, 0xD3, 0x96, 0xD3, 0x76, 0xCB, 0x56, 0x04, 0xD3, 0x56, 0x85, 0xCB, 0x56, 0xCB, 0x76, 0xC3, 0x55, 0xCB, 0x76, 0xCB, + 0x96, 0xC3, 0x96, 0x01, 0xBB, 0x96, 0x87, 0xB3, 0x76, 0xAB, 0x76, 0xAB, 0xB7, 0xA3, 0xB7, 0x9B, 0xB7, 0x9B, 0xF8, 0x93, 0xF8, 0x94, 0x18, 0x02, 0x94, 0x19, 0x8A, 0x8C, 0x19, 0x94, 0x39, 0x94, 0x5A, 0x94, 0x3A, 0x94, 0x5A, 0x9C, 0x7B, 0x94, 0x7B, 0x94, 0x5B, 0x94, 0x5A, 0x94, 0x5B, 0x94, 0x1A, 0x01, 0x8B, 0xD9, 0x84, 0x7B, 0x78, 0x41, 0xB1, 0x20, 0xCE, 0x20, 0xEE, 0x28, 0xEF, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x8F, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0xD6, 0x11, 0xF7, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x10, 0x87, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, + 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x10, 0x20, 0xEF, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x20, 0xEF, 0x29, 0x0F, 0x28, 0xEF, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x28, 0xEF, 0x05, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x83, 0x19, 0x52, 0x11, 0x32, 0x19, 0x94, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x03, 0x19, 0xF7, 0x84, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x53, 0x01, 0x11, 0x52, 0x01, 0x11, 0x32, 0x01, 0x19, 0x52, 0x02, 0x19, 0x31, 0x81, 0x11, 0x31, 0x11, 0x11, 0x01, 0x19, 0x11, 0x82, 0x19, 0x32, 0x19, 0x31, 0x19, 0x52, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x82, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x04, 0x19, 0x31, 0x03, 0x21, 0x31, 0x85, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x19, 0x53, 0x19, 0x94, 0x29, 0xF6, 0x02, + 0x2A, 0x17, 0x80, 0x29, 0xF7, 0x02, 0x2A, 0x17, 0x80, 0x29, 0xF7, 0x01, 0x29, 0xF6, 0x81, 0x2A, 0x16, 0x29, 0xF6, 0x07, 0x21, 0xF6, 0x05, 0x21, 0xD6, 0x81, 0x21, 0xF6, 0x29, 0xF6, 0x03, 0x21, 0xF6, 0x80, 0x21, 0xD6, 0x01, 0x21, 0xF5, 0x01, 0x21, 0xB5, 0x01, 0x21, 0xD5, 0x01, 0x21, 0xB5, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x05, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x85, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x09, 0x75, 0x11, 0xB7, 0x11, 0xF8, 0x01, 0x1A, 0x19, 0x85, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x04, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, + 0x30, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x07, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x88, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x75, 0x19, 0xD6, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x74, 0x01, 0x11, 0x12, 0x81, 0x19, 0x31, 0x21, 0x51, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, + 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x8C, 0x21, 0x0F, 0x20, 0xEF, 0x20, 0xF0, 0x20, 0xD0, 0x28, 0xB0, 0x28, 0x6F, 0x51, 0x94, 0x93, 0x5C, 0x93, 0x1C, 0x9A, 0xFC, 0x9A, 0xDC, 0xA2, 0xFD, 0x9A, 0xBC, 0x01, 0x9A, 0x9D, 0x8A, 0x9A, 0x7C, 0xA2, 0xBD, 0xA2, 0xDD, 0xA3, 0x1D, 0x82, 0x9A, 0x18, 0x0D, 0x20, 0x8F, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, + 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0x75, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x85, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x51, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x11, 0x19, 0x32, 0x11, 0x13, 0x11, 0x33, 0x11, 0x75, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB5, 0x19, 0x74, 0x11, 0x52, 0x11, 0x31, 0x01, 0x19, 0x30, 0x01, 0x21, 0x30, 0x06, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x06, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x29, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x32, 0x82, 0x19, 0x53, 0x21, 0xB4, 0x21, 0xD5, 0x01, 0x19, 0xB5, 0x80, 0x21, 0xB5, 0x01, 0x21, 0x95, 0x86, 0x21, 0x94, 0x29, 0x94, 0x29, 0x73, 0x31, 0x73, 0x39, 0x73, 0x39, 0x72, 0x41, 0x72, 0x01, 0x49, 0x92, 0x8E, 0x49, 0x93, 0x49, 0x92, 0x41, 0x92, 0x49, 0xB2, 0x49, 0xB3, 0x49, 0x92, 0x51, 0xB2, 0x51, 0xB1, 0x51, 0x50, 0x8A, 0x94, 0xE4, 0xFC, 0xDC, 0x9A, 0xDC, 0x78, 0xDC, 0x58, 0xDC, 0x57, 0x02, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x57, 0x01, 0xD4, 0x17, 0x01, 0xDC, 0x37, 0x08, 0xDC, 0x17, 0x8A, + 0xDC, 0x16, 0xDC, 0x17, 0xDC, 0x16, 0xDB, 0xF6, 0xDC, 0x16, 0xDC, 0x17, 0xDC, 0x16, 0xDB, 0xF6, 0xDC, 0x16, 0xDB, 0xF6, 0xDC, 0x17, 0x05, 0xDB, 0xF6, 0x82, 0xDB, 0xF7, 0xDB, 0xF6, 0xD3, 0xD6, 0x02, 0xDB, 0xF6, 0x81, 0xDB, 0xD6, 0xDB, 0xB6, 0x01, 0xDB, 0xD6, 0x01, 0xDB, 0xB6, 0x80, 0xDB, 0xD6, 0x03, 0xDB, 0xB6, 0x80, 0xDB, 0xD7, 0x01, 0xDB, 0xF8, 0x87, 0xD4, 0x19, 0xE4, 0xDC, 0x71, 0xB1, 0x51, 0x0F, 0x49, 0x30, 0x41, 0x50, 0x41, 0x51, 0x39, 0x51, 0x06, 0x39, 0x71, 0x80, 0x31, 0x31, 0x01, 0x39, 0x51, 0x01, 0x39, 0x50, 0x81, 0x39, 0x30, 0x39, 0x2F, 0x01, 0x39, 0x0F, 0x87, 0x40, 0xEE, 0x38, 0x6C, 0x69, 0x70, 0xB3, 0x77, 0xD4, 0x3A, 0xDB, 0xF9, 0xD3, 0xB8, 0xD3, 0x77, 0x03, 0xD3, 0x76, 0x01, 0xD3, 0x56, 0x01, 0xD3, 0x76, 0x01, 0xD3, 0x56, 0x01, 0xCB, 0x56, 0x02, 0xCB, 0x76, 0x83, 0xC3, 0x76, 0xBB, 0x76, 0xC3, 0xB7, 0xB3, 0x96, 0x01, 0xAB, 0x96, 0x8E, 0x9B, 0x55, 0x9B, 0x76, 0x9B, 0xB7, 0x93, 0xB7, 0x9C, 0x18, 0x9C, 0x59, 0x9C, 0x9A, 0x9C, 0xBB, 0x94, 0xBB, 0x9C, 0xFC, 0x9C, 0xFD, 0x9D, 0x1D, 0x9D, 0x3D, 0x94, 0xFD, 0x94, 0xDC, 0x01, 0x9D, 0x1D, 0x03, 0x9C, 0xFD, 0x87, 0x9C, 0x9C, 0x94, 0x7C, 0x94, 0x7B, 0x8B, 0xFA, 0x8B, 0xF9, 0x8B, 0xFA, 0x52, 0x53, 0x20, 0xCE, 0x01, 0x20, 0xEF, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, + 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0xB6, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x33, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x8A, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x50, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, + 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x20, 0xEF, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x19, 0x31, 0x01, 0x19, 0x51, 0x01, 0x11, 0x32, 0x82, 0x11, 0x53, 0x19, 0x95, 0x19, 0xD6, 0x02, 0x19, 0xB6, 0x86, 0x19, 0xB5, 0x19, 0x95, 0x11, 0x74, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x11, 0x31, 0x03, 0x19, 0x31, 0x02, 0x19, 0x51, 0x09, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x06, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x81, 0x19, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x87, 0x19, 0x32, 0x19, 0x53, 0x19, 0x95, 0x21, 0xF6, 0x2A, 0x17, 0x21, 0xF7, 0x21, 0xD6, 0x21, 0xB6, 0x01, 0x19, 0x95, 0x06, 0x19, 0x74, 0x01, 0x11, 0x74, 0x0C, 0x19, 0x74, 0x04, 0x19, 0x94, 0x80, 0x19, 0x74, 0x01, 0x19, 0x94, 0x83, 0x19, 0x74, 0x19, 0x94, 0x19, 0x74, 0x19, 0x94, 0x01, 0x19, 0x74, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x0A, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, + 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x93, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB7, 0x11, 0xD8, 0x12, 0x19, 0x1A, 0x19, 0x11, 0xF8, 0x19, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x19, 0x33, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x03, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, + 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x87, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x8A, 0x19, 0x31, 0x19, 0x51, 0x19, 0x52, 0x11, 0x53, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x54, 0x01, 0x11, 0x12, 0x83, 0x19, 0x31, 0x21, 0x51, 0x29, 0x51, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, + 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x28, 0xF0, 0x20, 0xCF, 0x28, 0xB0, 0x28, 0x6F, 0x51, 0x74, 0x93, 0x3B, 0x9B, 0x1C, 0xA3, 0x1C, 0xA2, 0xFD, 0x9A, 0xBC, 0xA2, 0x9C, 0x01, 0xA2, 0x9D, 0x01, 0xAA, 0xDD, 0x85, 0xA2, 0xFC, 0x8A, 0xDA, 0x18, 0x0D, 0x20, 0xAF, 0x28, 0xEF, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x89, 0x11, 0x12, 0x11, 0x53, 0x19, 0xB5, 0x2A, 0x37, 0x21, 0xF7, 0x19, 0xD6, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x13, 0x11, 0x12, 0x01, 0x19, 0x31, 0x83, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x8D, 0x21, 0x32, 0x19, 0x12, 0x11, 0x13, 0x11, 0x34, 0x19, 0x76, 0x21, 0xD7, 0x22, 0x18, + 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x94, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x07, 0x29, 0x30, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x51, 0x01, 0x29, 0x31, 0x80, 0x29, 0x52, 0x01, 0x21, 0x52, 0x81, 0x21, 0x73, 0x21, 0x94, 0x01, 0x21, 0xB4, 0x80, 0x21, 0x94, 0x01, 0x21, 0x74, 0x80, 0x29, 0x94, 0x01, 0x29, 0x73, 0x80, 0x31, 0x73, 0x01, 0x39, 0x72, 0x01, 0x41, 0x72, 0x01, 0x49, 0x92, 0x80, 0x49, 0x93, 0x01, 0x49, 0xB3, 0x01, 0x49, 0xB2, 0x87, 0x51, 0xB2, 0x51, 0xB1, 0x49, 0x2F, 0x72, 0x12, 0xDC, 0xFC, 0xD4, 0x99, 0xD4, 0x58, 0xDC, 0x58, 0x01, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xDC, 0x36, 0x05, 0xDC, 0x37, 0x82, 0xDC, 0x17, 0xD4, 0x16, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x85, 0xE4, 0x17, 0xDC, 0x17, 0xDB, 0xF7, 0xDB, 0xF6, 0xDC, 0x17, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x16, 0x86, 0xDC, 0x17, 0xDC, 0x16, 0xDB, 0xF6, 0xDB, 0xF7, 0xDB, 0xF6, 0xDB, 0xF7, 0xDB, 0xF6, 0x03, 0xDB, 0xD6, 0x80, 0xDB, 0xF6, 0x05, 0xDB, 0xD6, 0x09, 0xDB, 0xB6, 0x01, 0xDB, 0xD7, 0x85, 0xD3, 0xD7, 0xD3, 0xD8, 0xCB, 0xD8, 0xB3, 0x57, 0x48, 0x8D, 0x49, 0x30, 0x01, 0x41, 0x50, 0x80, 0x41, 0x71, 0x03, 0x39, 0x71, 0x80, + 0x39, 0x91, 0x02, 0x39, 0x71, 0x01, 0x39, 0x51, 0x8A, 0x39, 0x50, 0x39, 0x30, 0x39, 0x2F, 0x39, 0x0F, 0x40, 0xCE, 0x40, 0xAD, 0x69, 0x90, 0xBB, 0xB8, 0xE4, 0xBC, 0xD3, 0xF9, 0xCB, 0x77, 0x01, 0xD3, 0x77, 0x81, 0xD3, 0x76, 0xD3, 0x77, 0x03, 0xD3, 0x56, 0x80, 0xD3, 0x76, 0x01, 0xD3, 0x56, 0x01, 0xCB, 0x56, 0x01, 0xCB, 0x76, 0x81, 0xC3, 0x96, 0xC3, 0xB6, 0x01, 0xBB, 0xB6, 0x84, 0xAB, 0xB6, 0xA3, 0x96, 0x9B, 0xB7, 0x9B, 0xD7, 0x93, 0xF7, 0x01, 0x94, 0x38, 0x84, 0x94, 0x79, 0x9C, 0xBA, 0x9C, 0xFB, 0xAD, 0x7D, 0xB5, 0xDF, 0x01, 0xB5, 0xFF, 0x80, 0x95, 0x3D, 0x01, 0x95, 0x3E, 0x84, 0x84, 0xDC, 0x8C, 0xFD, 0x8D, 0x3E, 0x84, 0xFD, 0x84, 0xDD, 0x03, 0x8C, 0xBD, 0x01, 0x9C, 0xDD, 0x87, 0x9C, 0x9C, 0x9C, 0x7C, 0x94, 0x3B, 0x94, 0x5B, 0x83, 0xB9, 0x41, 0xD2, 0x29, 0x0F, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0xD6, 0x01, 0x19, 0xF7, 0x81, 0x11, 0xB6, 0x11, 0x33, 0x01, 0x19, 0x11, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x83, 0x21, 0x2F, 0x29, 0x30, + 0x21, 0x2F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x20, 0xEF, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8D, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8E, 0x19, 0x31, 0x19, 0x51, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x19, 0x73, 0x19, 0x94, 0x19, 0x74, 0x11, 0x74, 0x11, + 0x54, 0x11, 0x74, 0x19, 0x94, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x51, 0x02, 0x19, 0x30, 0x81, 0x21, 0x31, 0x21, 0x51, 0x02, 0x21, 0x30, 0x02, 0x19, 0x30, 0x03, 0x21, 0x31, 0x08, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x89, 0x11, 0x31, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x21, 0xF6, 0x21, 0xF7, 0x21, 0xD6, 0x21, 0xB6, 0x19, 0x74, 0x11, 0x54, 0x03, 0x11, 0x33, 0x81, 0x11, 0x32, 0x11, 0x12, 0x02, 0x11, 0x32, 0x80, 0x19, 0x33, 0x01, 0x11, 0x32, 0x85, 0x11, 0x12, 0x11, 0x32, 0x19, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x33, 0x02, 0x11, 0x32, 0x84, 0x11, 0x12, 0x11, 0x32, 0x19, 0x53, 0x11, 0x32, 0x19, 0x33, 0x02, 0x11, 0x32, 0x80, 0x19, 0x53, 0x05, 0x11, 0x32, 0x81, 0x11, 0x33, 0x19, 0x53, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x88, 0x21, 0x10, 0x29, 0x10, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, + 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x92, 0x21, 0x30, 0x21, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xF8, 0x12, 0x18, 0x1A, 0x19, 0x1A, 0x18, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x05, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, + 0x81, 0x29, 0x30, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x29, 0x50, 0x21, 0x50, 0x02, 0x21, 0x30, 0x8A, 0x19, 0x30, 0x19, 0x52, 0x11, 0x52, 0x11, 0x53, 0x11, 0x54, 0x11, 0x55, 0x19, 0xD7, 0x22, 0x18, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x54, 0x01, 0x11, 0x12, 0x81, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, + 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x89, 0x20, 0xEF, 0x28, 0xCF, 0x28, 0xAF, 0x28, 0x6F, 0x51, 0x53, 0x93, 0x3B, 0xA3, 0x3C, 0xA2, 0xFD, 0xA2, 0xDD, 0xA2, 0xBD, 0x01, 0xA2, 0x9D, 0x87, 0xAA, 0xBD, 0xAA, 0xDD, 0xA2, 0xFD, 0x8A, 0xBA, 0x20, 0x0E, 0x20, 0x8F, 0x28, 0xF0, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x08, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x01, 0x22, 0x17, 0x8B, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x91, 0x21, 0x31, 0x19, 0x32, 0x19, 0x12, 0x11, 0x13, 0x11, 0x14, 0x11, 0x76, 0x21, 0xD7, 0x22, 0x18, 0x21, 0xF8, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x53, 0x19, 0x52, 0x19, 0x51, 0x19, 0x30, 0x21, 0x50, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, + 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x86, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x11, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x05, 0x29, 0x30, 0x01, 0x29, 0x31, 0x80, 0x29, 0x51, 0x02, 0x29, 0x31, 0x81, 0x29, 0x52, 0x21, 0x31, 0x01, 0x21, 0x52, 0x81, 0x21, 0x72, 0x21, 0x73, 0x02, 0x29, 0x73, 0x80, 0x31, 0x73, 0x01, 0x31, 0x72, 0x80, 0x39, 0x72, 0x01, 0x41, 0x72, 0x81, 0x49, 0x93, 0x41, 0x72, 0x01, 0x49, 0x93, 0x02, 0x49, 0xB3, 0x80, 0x49, 0xB2, 0x01, 0x51, 0xB2, 0x89, 0x51, 0x50, 0x71, 0xF2, 0xD4, 0xDC, 0xD4, 0x79, 0xDC, 0x78, 0xDC, 0x58, 0xDC, 0x78, 0xDC, 0x57, 0xD4, 0x37, 0xD4, 0x36, 0x06, 0xDC, 0x37, 0x81, 0xDC, 0x17, 0xDC, 0x37, 0x02, 0xDC, 0x16, 0x81, 0xDB, 0xF6, 0xDC, 0x17, 0x01, 0xDB, 0xF7, 0x86, 0xDC, 0x17, 0xDC, 0x16, 0xDC, 0x17, 0xDC, 0x16, 0xDC, 0x17, 0xDB, 0xF6, 0xDC, 0x16, 0x04, 0xDB, 0xF6, 0x81, 0xDB, 0xD6, 0xDB, 0xF6, 0x02, 0xDB, 0xD6, 0x01, 0xDB, 0xF6, 0x01, 0xDB, 0xD6, 0x01, 0xDB, 0xF6, 0x03, 0xDB, 0xD6, 0x07, 0xDB, 0xB6, 0x89, 0xDB, 0xB7, 0xDB, 0xD7, 0xDB, 0xD8, 0xD3, 0xD8, 0xC3, 0xB8, 0x79, 0xD1, 0x40, 0xAD, 0x49, 0x30, 0x41, 0x30, 0x41, 0x71, 0x01, 0x39, 0x51, 0x81, 0x41, 0x71, 0x41, 0x92, 0x01, 0x39, 0x71, 0x01, 0x41, 0x71, 0x8A, 0x41, 0x51, 0x39, 0x30, 0x41, 0x30, 0x41, 0x0F, 0x40, 0xEE, 0x38, 0x6C, 0x61, 0x50, 0xBB, 0xB8, 0xDC, 0x7B, 0xDC, + 0x19, 0xD3, 0xB8, 0x01, 0xD3, 0x77, 0x80, 0xDB, 0x77, 0x01, 0xD3, 0x56, 0x81, 0xDB, 0x77, 0xD3, 0x36, 0x02, 0xD3, 0x56, 0x80, 0xD3, 0x76, 0x01, 0xCB, 0x56, 0x8D, 0xCB, 0x76, 0xC3, 0x96, 0xC3, 0xB7, 0xBB, 0xD7, 0xB3, 0xB7, 0xAB, 0xB6, 0xA3, 0xD7, 0x9B, 0xD6, 0x8B, 0xB6, 0x94, 0x38, 0x8C, 0x38, 0x8C, 0x79, 0x8C, 0x99, 0x84, 0x99, 0x01, 0x95, 0x1B, 0x8B, 0xA5, 0xBE, 0xAD, 0xFF, 0xAD, 0xBF, 0x8C, 0xFC, 0x63, 0xB7, 0x42, 0xD4, 0x21, 0xB0, 0x19, 0x90, 0x11, 0x6F, 0x19, 0x70, 0x19, 0x90, 0x11, 0x4F, 0x01, 0x19, 0x70, 0x92, 0x21, 0x90, 0x19, 0x70, 0x29, 0x91, 0x29, 0xB1, 0x39, 0xF2, 0x42, 0x12, 0x52, 0x74, 0x5A, 0x94, 0x5A, 0x74, 0x5A, 0x54, 0x41, 0xD2, 0x31, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x31, 0x82, 0x19, 0x32, 0x11, 0x33, 0x11, 0xD6, 0x01, 0x11, 0xF7, 0x84, 0x11, 0xB6, 0x11, 0x33, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, + 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x08, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x86, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x03, 0x19, 0x31, 0x02, 0x19, 0x32, 0x84, 0x11, 0x32, 0x11, 0x33, 0x19, 0x53, 0x11, 0x32, 0x19, 0x52, 0x02, 0x19, 0x31, 0x80, 0x19, 0x30, 0x15, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, + 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x22, 0x17, 0x01, 0x21, 0xF7, 0x82, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x33, 0x01, 0x11, 0x32, 0x01, 0x19, 0x32, 0x82, 0x11, 0x12, 0x19, 0x32, 0x19, 0x12, 0x0A, 0x19, 0x32, 0x80, 0x19, 0x12, 0x07, 0x19, 0x32, 0x80, 0x19, 0x12, 0x01, 0x19, 0x32, 0x80, 0x11, 0x12, 0x04, 0x19, 0x32, 0x80, 0x11, 0x11, 0x01, 0x19, 0x32, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x09, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x88, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x91, 0x29, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x09, 0x53, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xF8, 0x1A, 0x19, 0x12, 0x19, 0x1A, 0x19, 0x19, 0xF8, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, + 0x05, 0x21, 0x30, 0x87, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x51, 0x8E, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD7, 0x22, 0x38, 0x22, 0x18, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, + 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x20, 0xEF, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x93, 0x28, 0xF0, 0x28, 0xD0, 0x28, 0x8F, 0x51, 0x53, 0x9B, 0x3C, 0xA3, 0x1D, 0xA2, 0xFD, 0xA2, 0xBD, 0xA2, 0x7C, 0xA2, 0x5C, 0xAA, 0xBD, 0xAA, 0xDD, 0xA2, 0xFD, 0x92, 0xFB, 0x20, 0x0E, 0x20, 0x8F, 0x28, 0xEF, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, + 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x84, 0x11, 0x11, 0x11, 0x12, 0x11, 0x73, 0x19, 0xB5, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x84, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x01, 0x19, 0x10, 0x81, 0x21, 0x51, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8C, 0x21, 0x32, 0x19, 0x12, 0x11, 0x13, 0x11, 0x34, 0x11, 0x76, 0x19, 0xD8, 0x22, 0x19, 0x21, 0xF8, 0x21, 0xD7, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x51, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x10, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x05, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x29, 0x51, 0x29, 0x31, 0x31, 0x31, 0x31, 0x51, 0x03, 0x29, 0x31, 0x01, 0x29, 0x52, 0x80, 0x29, 0x72, 0x01, 0x29, 0x52, 0x01, 0x31, 0x93, 0x82, 0x31, 0x72, 0x39, 0x72, 0x41, 0x92, 0x02, 0x41, 0x72, 0x81, 0x49, 0xB3, 0x49, 0x93, 0x03, 0x49, 0xB3, 0x88, 0x49, 0xB2, 0x51, 0xB2, 0x59, 0xD2, 0x59, 0x91, 0x72, 0x12, 0xD4, 0xDC, 0xCC, 0x59, 0xD4, 0x58, 0xD4, 0x37, 0x02, 0xD4, 0x57, 0x02, 0xDC, 0x57, 0x80, 0xD4, 0x37, 0x02, 0xDC, 0x37, 0x81, 0xD4, 0x37, 0xDC, 0x37, 0x02, 0xDC, 0x17, 0x83, 0xDC, + 0x16, 0xDC, 0x17, 0xDB, 0xF6, 0xDB, 0xF7, 0x01, 0xDC, 0x17, 0x80, 0xDC, 0x16, 0x01, 0xDB, 0xF6, 0x80, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x82, 0xDC, 0x16, 0xDC, 0x17, 0xDB, 0xF7, 0x02, 0xDB, 0xF6, 0x03, 0xDB, 0xD6, 0x03, 0xDB, 0xF6, 0x81, 0xD3, 0xD6, 0xD3, 0xB6, 0x01, 0xDB, 0xD6, 0x05, 0xDB, 0xB6, 0x8E, 0xDB, 0x96, 0xDB, 0xB6, 0xDB, 0x96, 0xDB, 0xD6, 0xDB, 0xB6, 0xDB, 0xB7, 0xDB, 0xD7, 0xDB, 0xF8, 0xD3, 0xD8, 0xCB, 0xF9, 0x61, 0x2F, 0x40, 0xAD, 0x49, 0x30, 0x49, 0x71, 0x41, 0x91, 0x01, 0x41, 0x71, 0x8D, 0x41, 0x51, 0x41, 0x91, 0x41, 0x71, 0x39, 0x51, 0x41, 0x51, 0x41, 0x30, 0x41, 0x0F, 0x40, 0xEE, 0x40, 0xAD, 0x61, 0x2E, 0xB3, 0x57, 0xE4, 0xBC, 0xD3, 0xD9, 0xCB, 0x98, 0x02, 0xD3, 0x77, 0x80, 0xDB, 0x77, 0x01, 0xD3, 0x56, 0x81, 0xDB, 0x76, 0xD3, 0x36, 0x01, 0xD3, 0x56, 0x01, 0xCB, 0x56, 0x98, 0xCB, 0x76, 0xC3, 0x76, 0xC3, 0x97, 0xC3, 0xB7, 0xB3, 0x97, 0xAB, 0xB7, 0x9B, 0xB7, 0x9B, 0xF7, 0x94, 0x38, 0x84, 0x38, 0x84, 0x78, 0x74, 0x58, 0x6C, 0x58, 0x74, 0xD9, 0x7D, 0x1A, 0x85, 0x5B, 0x8D, 0xBD, 0x8D, 0x5C, 0x95, 0xBE, 0x7C, 0xDB, 0x42, 0xB4, 0x11, 0x4E, 0x00, 0x8C, 0x08, 0xAC, 0x08, 0xCD, 0x06, 0x10, 0xEE, 0x82, 0x10, 0xCE, 0x10, 0xEE, 0x19, 0x0F, 0x01, 0x10, 0xAD, 0x81, 0x18, 0xAD, 0x10, 0x8D, 0x01, 0x18, 0xAD, 0x85, 0x18, 0x8D, 0x18, 0x6D, 0x18, 0xAE, 0x20, 0xEE, 0x20, 0xEF, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x8A, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, + 0x10, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xF7, 0x11, 0xB6, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x01, 0x29, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x07, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x0B, 0x21, + 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x80, 0x19, 0x30, 0x07, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x02, 0x21, 0xF7, 0x83, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x11, 0x02, 0x19, 0x31, 0x01, 0x19, 0x52, 0x03, 0x19, 0x31, 0x82, 0x21, 0x31, 0x19, 0x11, 0x21, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x32, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x04, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x02, 0x19, 0x31, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, + 0x2F, 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x01, 0x11, 0x32, 0x81, 0x11, 0x74, 0x09, 0x75, 0x01, 0x11, 0xD7, 0x89, 0x11, 0xF8, 0x1A, 0x19, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, + 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD7, 0x1A, 0x18, 0x22, 0x18, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0A, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x8A, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x9A, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x28, 0xEF, + 0x28, 0xCF, 0x30, 0x8F, 0x51, 0x53, 0xA3, 0x3D, 0xA3, 0x1D, 0xAA, 0xFD, 0xAA, 0x9D, 0xA2, 0x7C, 0xAA, 0x9D, 0xB2, 0xDD, 0xAA, 0xFD, 0x9A, 0xDB, 0x20, 0x0E, 0x20, 0x8F, 0x28, 0xF0, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x09, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x11, 0x19, 0x32, 0x11, 0x12, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xF6, 0x01, 0x22, 0x17, 0x85, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x83, 0x29, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x01, 0x11, 0x13, 0x89, 0x11, 0x55, 0x21, 0xD8, 0x22, 0x19, 0x22, 0x18, 0x21, 0xD7, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x88, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x80, 0x29, + 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x07, 0x29, 0x30, 0x82, 0x29, 0x31, 0x29, 0x51, 0x31, 0x51, 0x01, 0x31, 0x31, 0x02, 0x29, 0x31, 0x01, 0x29, 0x51, 0x02, 0x31, 0x52, 0x03, 0x31, 0x72, 0x80, 0x39, 0x72, 0x01, 0x41, 0x92, 0x80, 0x41, 0x72, 0x02, 0x49, 0x93, 0x01, 0x49, 0xB3, 0x80, 0x49, 0xD3, 0x02, 0x51, 0xD3, 0x86, 0x51, 0xB2, 0x51, 0x91, 0x69, 0xF2, 0xD4, 0xFD, 0xCC, 0x7A, 0xCC, 0x58, 0xD4, 0x38, 0x01, 0xD4, 0x57, 0x83, 0xD4, 0x77, 0xDC, 0x98, 0xDC, 0x57, 0xDC, 0x58, 0x02, 0xD4, 0x37, 0x80, 0xD4, 0x57, 0x01, 0xDC, 0x57, 0x02, 0xDC, 0x37, 0x81, 0xDC, 0x36, 0xDC, 0x16, 0x02, 0xDC, 0x17, 0x80, 0xDC, 0x16, 0x02, 0xDC, 0x17, 0x80, 0xD3, 0xF6, 0x01, 0xDC, 0x37, 0x84, 0xDC, 0x16, 0xDC, 0x17, 0xDB, 0xF6, 0xDB, 0xF7, 0xDB, 0xF6, 0x01, 0xDB, 0xD6, 0x80, 0xDB, 0xF6, 0x01, 0xDB, 0xD6, 0x02, 0xDB, 0xF6, 0x81, 0xDB, 0xF7, 0xD3, 0xB6, 0x02, 0xDB, 0xD6, 0x02, 0xDB, 0xB6, 0x01, 0xDB, 0x96, 0x80, 0xDB, 0xB6, 0x02, 0xDB, 0x96, 0x01, 0xDB, 0xB6, 0x89, 0xDB, 0xD7, 0xDB, 0xB7, 0xDB, 0xD7, 0xD3, 0xD7, 0xCB, 0xD8, 0xC3, 0xB8, 0x59, 0x0E, 0x48, 0xEE, 0x49, 0x50, 0x49, 0x71, 0x04, 0x41, 0x71, 0x88, 0x41, 0x51, 0x41, 0x30, 0x49, 0x0F, 0x40, 0xCD, 0x50, 0xCD, 0xA3, 0x16, 0xD4, 0x5A, 0xDC, 0x3A, 0xD3, 0xB8, 0x01, 0xD3, 0x77, 0x81, 0xD3, 0x76, 0xD3, 0x56, 0x02, 0xDB, 0x56, 0x02, 0xD3, 0x56, 0x99, 0xCB, 0x56, 0xCB, 0x77, 0xCB, 0x56, 0xC3, + 0x77, 0xC3, 0xB7, 0xBB, 0x97, 0xAB, 0x97, 0xA3, 0xB7, 0x9B, 0xB7, 0x93, 0xF8, 0x8C, 0x38, 0x84, 0x58, 0x74, 0x58, 0x7C, 0xDA, 0x75, 0x1A, 0x75, 0x1B, 0x75, 0x5C, 0x7D, 0xBD, 0x7D, 0xDD, 0x85, 0xBD, 0x85, 0x9D, 0x8D, 0xBE, 0x64, 0x59, 0x09, 0x4E, 0x00, 0xED, 0x09, 0x0E, 0x01, 0x10, 0xEE, 0x80, 0x18, 0xEE, 0x01, 0x18, 0xEF, 0x83, 0x19, 0x0F, 0x18, 0xEE, 0x19, 0x0F, 0x18, 0xEE, 0x01, 0x19, 0x0F, 0x02, 0x18, 0xEE, 0x04, 0x20, 0xEE, 0x03, 0x20, 0xEF, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x33, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, + 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x50, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x50, 0x21, 0x2F, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x50, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x4F, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x08, 0x21, 0x2F, 0x80, 0x21, 0x4F, 0x03, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x80, 0x19, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x05, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x30, 0x03, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x0A, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x12, 0x11, 0x33, 0x11, 0x53, 0x11, 0x95, 0x22, 0x17, + 0x01, 0x21, 0xF7, 0x84, 0x19, 0xB6, 0x11, 0x54, 0x19, 0x33, 0x19, 0x12, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x82, 0x21, 0x31, 0x19, 0x31, 0x19, 0x10, 0x03, 0x21, 0x31, 0x80, 0x21, 0x11, 0x02, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x03, 0x21, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x10, 0x02, 0x21, 0x31, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x07, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x8B, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x09, 0x53, 0x09, 0x75, 0x09, 0x96, 0x01, 0x11, 0xF8, 0x87, 0x1A, 0x19, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, + 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x07, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x04, 0x21, 0x30, 0x88, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x19, 0x30, 0x05, 0x21, 0x31, 0x81, 0x21, 0x51, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x52, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD7, 0x01, 0x22, 0x18, 0x84, 0x19, 0xB6, 0x11, 0x54, 0x09, 0x12, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, + 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x03, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x0F, 0x28, 0xCF, 0x28, 0xAF, 0x30, 0x4F, 0x51, 0x13, 0xA2, 0xFD, 0xAA, 0xFD, 0xAA, 0xDE, 0x01, 0xAA, 0x9D, 0x88, 0xB2, 0xBD, 0xAA, 0xDD, 0x9A, 0xDB, 0x28, 0x0E, 0x20, 0x6F, 0x28, 0xCF, 0x28, 0xF0, 0x20, 0xEF, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x05, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, + 0x0F, 0x01, 0x21, 0x2F, 0x91, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x12, 0x11, 0x12, 0x11, 0x53, 0x19, 0x95, 0x21, 0xF6, 0x22, 0x17, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x32, 0x11, 0x31, 0x11, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x71, 0x01, 0x21, 0x30, 0x8F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x52, 0x11, 0x33, 0x11, 0x13, 0x11, 0x55, 0x19, 0xD7, 0x22, 0x18, 0x22, 0x19, 0x21, 0xD7, 0x19, 0x75, 0x11, 0x13, 0x10, 0xF2, 0x01, 0x19, 0x11, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x0B, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x07, 0x29, 0x30, 0x80, 0x29, 0x31, 0x02, 0x29, 0x30, 0x02, 0x29, 0x31, 0x80, 0x31, 0x31, 0x05, 0x31, 0x51, 0x03, 0x31, 0x72, 0x80, 0x39, 0x72, 0x01, 0x39, 0x92, 0x83, 0x39, 0x72, 0x41, 0x72, 0x41, 0x92, 0x41, 0x93, 0x02, 0x49, 0x93, 0x82, 0x49, 0xB3, 0x49, 0xB4, 0x49, 0xD3, 0x02, 0x51, 0xD3, 0x89, 0x51, 0xD2, 0x49, 0x70, 0x61, 0xD2, 0xD5, 0x1D, 0xCC, 0xBB, 0xD4, 0x99, 0xCC, 0x58, 0xD4, 0x58, 0xD4, 0x78, 0xD4, 0x57, 0x01, 0xD4, 0x78, 0x01, 0xD4, 0x57, 0x01, 0xD4, 0x58, 0x01, 0xD4, 0x57, 0x81, 0xD4, 0x37, 0xD4, 0x36, 0x01, 0xD4, 0x37, 0x01, 0xDC, 0x36, 0x02, 0xDC, 0x17, 0x02, 0xDC, 0x37, 0x01, 0xDC, 0x17, 0x80, 0xDB, 0xF6, 0x02, + 0xD3, 0xF6, 0x02, 0xDB, 0xF6, 0x80, 0xDB, 0xF7, 0x02, 0xDB, 0xF6, 0x80, 0xDB, 0xF7, 0x01, 0xDB, 0xD6, 0x82, 0xD3, 0xD6, 0xDB, 0xD6, 0xD3, 0xD6, 0x02, 0xDB, 0xD6, 0x81, 0xDB, 0xB6, 0xDB, 0xD6, 0x01, 0xDB, 0xB6, 0x01, 0xDB, 0x96, 0x04, 0xDB, 0xB6, 0x80, 0xDB, 0x96, 0x01, 0xDB, 0xB7, 0x95, 0xDB, 0xD7, 0xD3, 0xF8, 0xCB, 0xF9, 0xCC, 0x3A, 0x59, 0x0E, 0x49, 0x0F, 0x49, 0x50, 0x49, 0x71, 0x41, 0x71, 0x49, 0x71, 0x41, 0x51, 0x41, 0x50, 0x49, 0x30, 0x49, 0x0F, 0x50, 0xCE, 0x82, 0x12, 0xD4, 0x5A, 0xDC, 0x3A, 0xD3, 0xB8, 0xD3, 0x97, 0xD3, 0x77, 0xD3, 0x76, 0x01, 0xDB, 0x77, 0x01, 0xDB, 0x56, 0x80, 0xD3, 0x36, 0x02, 0xD3, 0x56, 0x01, 0xCB, 0x76, 0x98, 0xCB, 0x97, 0xC3, 0xB7, 0xB3, 0x97, 0xAB, 0x97, 0xA3, 0xD8, 0x93, 0xD7, 0x8C, 0x18, 0x8C, 0x99, 0x7C, 0x58, 0x6C, 0x58, 0x74, 0xFA, 0x7D, 0x7C, 0x75, 0x5B, 0x7D, 0x9C, 0x7D, 0xDD, 0x7D, 0xBD, 0x7D, 0xDD, 0x75, 0x9D, 0x7D, 0x9D, 0x85, 0x7D, 0x53, 0xF7, 0x01, 0x0D, 0x11, 0x2E, 0x11, 0x2F, 0x19, 0x2F, 0x01, 0x19, 0x0F, 0x80, 0x18, 0xEF, 0x03, 0x19, 0x0F, 0x81, 0x21, 0x0F, 0x19, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x06, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, + 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x8D, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x05, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x50, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x29, 0x50, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x07, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x80, 0x29, 0x50, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, + 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x0A, 0x21, 0x30, 0x82, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x01, 0x19, 0x30, 0x02, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x09, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x19, 0x95, 0x01, 0x22, 0x17, 0x85, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x12, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x05, 0x21, 0x30, 0x07, 0x21, 0x10, 0x01, 0x21, 0x30, 0x06, 0x21, 0x10, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x09, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x81, + 0x29, 0x30, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x88, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x52, 0x09, 0x53, 0x09, 0x75, 0x09, 0x96, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x1A, 0x19, 0x88, 0x19, 0xD8, 0x11, 0xB6, 0x11, 0x55, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x08, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x04, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x06, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x19, 0x10, 0x19, 0x30, 0x02, 0x19, 0x31, 0x01, 0x19, 0x32, 0x01, 0x19, 0x52, 0x83, 0x21, 0x52, 0x19, 0x31, 0x21, 0x51, + 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x51, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD7, 0x01, 0x22, 0x18, 0x82, 0x11, 0x96, 0x11, 0x54, 0x11, 0x12, 0x01, 0x19, 0x32, 0x81, 0x19, 0x31, 0x21, 0x10, 0x07, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x21, 0x10, 0x04, 0x29, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x28, 0xEF, 0x28, 0xCF, 0x30, 0x90, 0x30, 0x50, 0x50, 0xB3, 0xA2, 0xDD, 0xB2, 0xFE, 0x01, 0xAA, 0x9D, 0x87, 0xB2, 0xBD, 0xB2, 0xDD, 0xA2, 0xDC, 0x28, 0x0E, 0x28, 0x8F, 0x28, 0xCF, 0x28, 0xEF, 0x29, + 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8F, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x21, 0xF6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x11, 0x31, 0x11, 0x11, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x50, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x21, 0xD7, 0x01, 0x22, 0x18, 0x86, 0x21, 0xF7, 0x19, 0x75, 0x11, 0x13, 0x10, 0xF2, 0x18, 0xF1, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x0D, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x07, 0x29, 0x30, 0x81, 0x29, 0x31, 0x29, 0x30, 0x01, 0x29, 0x31, 0x83, 0x31, + 0x31, 0x31, 0x51, 0x31, 0x31, 0x31, 0x51, 0x02, 0x31, 0x71, 0x05, 0x39, 0x72, 0x04, 0x41, 0x92, 0x80, 0x49, 0x93, 0x02, 0x49, 0xB3, 0x80, 0x49, 0xB4, 0x01, 0x49, 0xD3, 0x01, 0x51, 0xD3, 0x85, 0x51, 0xF3, 0x49, 0x71, 0x59, 0xD1, 0xCC, 0xFD, 0xCC, 0xDB, 0xCC, 0xBA, 0x01, 0xCC, 0x99, 0x04, 0xCC, 0x78, 0x81, 0xCC, 0x58, 0xCC, 0x57, 0x01, 0xD4, 0x78, 0x80, 0xCC, 0x57, 0x01, 0xD4, 0x57, 0x01, 0xD4, 0x36, 0x86, 0xD4, 0x57, 0xD4, 0x36, 0xDC, 0x37, 0xD4, 0x37, 0xD4, 0x16, 0xD4, 0x17, 0xD4, 0x37, 0x01, 0xD4, 0x17, 0x81, 0xDC, 0x37, 0xD4, 0x16, 0x01, 0xD3, 0xF6, 0x81, 0xD4, 0x17, 0xD3, 0xF6, 0x03, 0xDC, 0x17, 0x80, 0xDB, 0xF6, 0x02, 0xDB, 0xF7, 0x80, 0xD3, 0xD6, 0x02, 0xDB, 0xD6, 0x81, 0xD3, 0xD6, 0xDB, 0xD6, 0x03, 0xDB, 0xB6, 0x80, 0xDB, 0x96, 0x02, 0xDB, 0xB6, 0x82, 0xDB, 0x96, 0xDB, 0xB6, 0xDB, 0x96, 0x02, 0xDB, 0xB6, 0x80, 0xDB, 0xB7, 0x01, 0xDB, 0xD7, 0x84, 0xD3, 0xD8, 0xD4, 0x19, 0xBB, 0xF9, 0x59, 0x2F, 0x49, 0x0F, 0x02, 0x49, 0x71, 0x88, 0x49, 0x50, 0x51, 0x50, 0x48, 0xCE, 0x61, 0x2F, 0xC3, 0xF9, 0xD4, 0x3A, 0xD3, 0xD8, 0xD3, 0xB7, 0xD3, 0x97, 0x01, 0xD3, 0x76, 0x81, 0xD3, 0x36, 0xD3, 0x56, 0x01, 0xDB, 0x56, 0x01, 0xD3, 0x56, 0x8F, 0xCB, 0x36, 0xD3, 0x77, 0xCB, 0x97, 0xCB, 0xB7, 0xC3, 0xF8, 0xBB, 0xD8, 0xAB, 0x97, 0x9B, 0xB7, 0x9C, 0x19, 0x94, 0x59, 0x84, 0x59, 0x74, 0x58, 0x6C, 0x78, 0x74, 0xFA, 0x7D, 0x5B, 0x7D, 0x9C, 0x01, 0x75, 0x9C, 0x01, 0x7D, 0xBD, 0x87, 0x75, 0x9C, 0x75, 0x5C, 0x75, 0x1B, 0x7D, 0x3C, 0x74, 0xBB, + 0x09, 0x4E, 0x11, 0x4F, 0x11, 0x2F, 0x01, 0x19, 0x2F, 0x80, 0x19, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8A, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x19, 0xF7, 0x11, 0xD7, 0x19, 0xB6, 0x11, 0x13, 0x19, 0x12, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, + 0x29, 0x2F, 0x86, 0x20, 0xEF, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x83, 0x21, 0x50, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x50, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x50, 0x21, 0x2F, 0x19, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x19, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x02, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x31, 0x07, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8D, 0x19, 0x32, 0x11, 0x33, 0x11, 0x53, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x19, 0x10, 0x07, 0x21, + 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x07, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x09, 0x53, 0x09, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x02, 0x1A, 0x19, 0x84, 0x19, 0xF8, 0x11, 0x76, 0x11, 0x34, 0x11, 0x13, 0x11, 0x12, 0x01, 0x19, 0x11, 0x02, 0x21, 0x10, 0x07, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, + 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x85, 0x21, 0x2F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x19, 0x31, 0x19, 0x11, 0x11, 0x11, 0x01, 0x11, 0x32, 0x01, 0x11, 0x33, 0x01, 0x08, 0xF2, 0x84, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x07, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x30, 0x8E, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0x96, 0x19, 0xD7, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x09, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x08, 0x29, 0x0F, 0x82, 0x21, 0x0F, + 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x88, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x29, 0x0F, 0x28, 0xEF, 0x28, 0xAF, 0x30, 0x70, 0x38, 0x10, 0x69, 0x35, 0xB3, 0x1E, 0xB2, 0xBD, 0xB2, 0x9D, 0x01, 0xB2, 0xBD, 0x82, 0xA2, 0xDC, 0x28, 0x0E, 0x28, 0x6E, 0x01, 0x28, 0xF0, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x05, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x8F, 0x21, 0x30, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB5, 0x22, 0x17, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x09, 0x12, 0x10, 0xF1, 0x19, 0x51, 0x21, 0x51, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x19, 0x31, 0x8B, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x21, 0xF7, 0x2A, 0x38, 0x22, 0x18, 0x19, 0xD7, + 0x19, 0x95, 0x11, 0x34, 0x10, 0xF2, 0x18, 0xF1, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x85, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x88, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x0F, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x01, 0x29, 0x50, 0x80, 0x29, 0x30, 0x02, 0x29, 0x31, 0x01, 0x31, 0x31, 0x02, 0x31, 0x51, 0x83, 0x31, 0x71, 0x31, 0x51, 0x39, 0x72, 0x31, 0x51, 0x01, 0x39, 0x72, 0x03, 0x41, 0x92, 0x80, 0x41, 0x93, 0x02, 0x49, 0x93, 0x01, 0x49, 0xB3, 0x80, 0x51, 0xD4, 0x02, 0x51, 0xD3, 0x87, 0x51, 0xF3, 0x51, 0xD2, 0x51, 0xB1, 0x5A, 0x12, 0xC5, 0x1D, 0xBC, 0xDB, 0xBC, 0x99, 0xC4, 0xB9, 0x01, 0xC4, 0x98, 0x80, 0xC4, 0x78, 0x01, 0xBC, 0x57, 0x81, 0xBC, 0x37, 0xB4, 0x37, 0x01, 0xC4, 0x78, 0x01, 0xC4, 0x57, 0x80, 0xCC, 0x57, 0x01, 0xCC, 0x56, 0x02, 0xCC, 0x57, 0x01, 0xD4, 0x57, 0x03, 0xD4, 0x37, 0x01, 0xD4, 0x17, 0x01, 0xD4, 0x37, 0x03, 0xD4, 0x17, 0x84, 0xD3, 0xF6, 0xD4, 0x17, 0xD4, 0x16, 0xD3, 0xF6, 0xDC, 0x17, 0x02, 0xD3, 0xF7, 0x01, 0xD3, 0xD6, 0x80, 0xDB, 0xF6, 0x02, 0xDB, 0xD6, 0x01, 0xDB, 0xB6, 0x80, 0xDB, 0x96, 0x03, 0xDB, 0xB6, 0x80, 0xDB, 0xD6, 0x02, 0xDB, 0xB6, 0x8A, 0xD3, 0x96, 0xD3, 0x95, 0xD3, 0x96, 0xDB, 0xB7, 0xD3, 0xB7, 0xD3, 0xD7, 0xD3, 0xD8, 0xCC, 0x19, 0xC3, 0xF9, 0x59, 0x0F, 0x59, + 0x50, 0x01, 0x51, 0x51, 0x86, 0x50, 0xEF, 0x58, 0xEE, 0x92, 0x94, 0xDC, 0x9B, 0xCB, 0xD8, 0xCB, 0xB7, 0xD3, 0x97, 0x01, 0xD3, 0x76, 0x80, 0xDB, 0x96, 0x01, 0xDB, 0x76, 0x01, 0xD3, 0x56, 0x82, 0xD3, 0x35, 0xD3, 0x56, 0xD3, 0x76, 0x01, 0xCB, 0x97, 0x8B, 0xC3, 0xD7, 0xB3, 0xB7, 0xAB, 0xB7, 0x9B, 0xD7, 0x94, 0x18, 0x94, 0x9A, 0x7C, 0x79, 0x74, 0x79, 0x6C, 0x99, 0x75, 0x1A, 0x7D, 0x9C, 0x75, 0x9C, 0x01, 0x75, 0x7C, 0x8B, 0x7D, 0x9D, 0x75, 0x5C, 0x6C, 0xFB, 0x74, 0xFB, 0x7D, 0x3B, 0x7C, 0xDB, 0x8D, 0x1C, 0x8C, 0xFC, 0x4A, 0xD4, 0x21, 0x90, 0x21, 0x4F, 0x21, 0x50, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x4F, 0x8C, 0x21, 0x2F, 0x21, 0x50, 0x29, 0x50, 0x29, 0x70, 0x29, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x01, 0x19, 0x31, 0x88, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, + 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x50, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x01, 0x21, 0x50, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x30, 0x81, 0x19, 0x30, 0x21, 0x50, 0x02, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x50, 0x21, 0x2F, 0x21, 0x50, 0x01, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x21, 0x31, 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x50, 0x0C, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, + 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8D, 0x19, 0x12, 0x11, 0x32, 0x11, 0x54, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x08, 0x21, 0x10, 0x81, 0x29, 0x30, 0x20, 0xEF, 0x07, 0x21, 0x10, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x0C, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x19, 0x30, 0x19, 0x31, 0x01, 0x11, 0x32, 0x8F, 0x11, 0x54, 0x09, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF9, 0x1A, 0x19, 0x19, 0xF9, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, + 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x88, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x87, 0x19, 0x31, 0x19, 0x51, 0x19, 0x31, 0x19, 0x53, 0x19, 0x74, 0x19, 0x95, 0x19, 0xD6, 0x21, 0xF7, 0x01, 0x19, 0xD6, 0x86, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x19, 0x10, 0x05, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, + 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x19, 0xF7, 0x01, 0x22, 0x18, 0x83, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x52, 0x01, 0x19, 0x31, 0x08, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x8A, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x85, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x91, 0x29, 0x2F, 0x21, 0x0F, 0x28, 0xEF, 0x30, 0xD0, 0x30, 0x90, 0x38, 0x30, 0x50, 0x72, 0xB2, 0xFD, 0xB2, 0xBD, 0xB2, 0x9D, 0xBA, 0xBD, 0xB2, 0xBD, 0xA2, 0xBC, 0x30, 0x0E, 0x28, 0x6E, 0x28, 0xF0, 0x28, 0xEF, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, + 0x29, 0x2F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x07, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x51, 0x19, 0x11, 0x10, 0xF1, 0x11, 0x33, 0x11, 0x74, 0x02, 0x22, 0x17, 0x85, 0x19, 0xB6, 0x19, 0x74, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x02, 0x21, 0x50, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8A, 0x11, 0x32, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x38, 0x22, 0x18, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x33, 0x10, 0xF2, 0x18, 0xF1, 0x19, 0x11, 0x01, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x0C, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x50, 0x05, 0x29, 0x30, 0x81, 0x29, 0x50, 0x29, 0x30, 0x01, 0x29, 0x50, 0x82, 0x29, 0x30, 0x29, 0x51, 0x31, 0x51, 0x01, 0x31, 0x31, 0x03, 0x31, 0x51, 0x81, 0x31, 0x71, 0x39, 0x72, + 0x01, 0x39, 0x51, 0x01, 0x39, 0x72, 0x01, 0x41, 0x72, 0x81, 0x41, 0x92, 0x41, 0x93, 0x01, 0x49, 0x93, 0x03, 0x49, 0xB3, 0x80, 0x51, 0xB3, 0x02, 0x51, 0xD3, 0x89, 0x51, 0xF3, 0x51, 0xF2, 0x49, 0xD1, 0x5A, 0x32, 0xB4, 0xFC, 0xB4, 0xBA, 0xB4, 0x79, 0xB4, 0x58, 0xB4, 0x78, 0xB4, 0x57, 0x02, 0xBC, 0x78, 0x02, 0xBC, 0x98, 0x81, 0xC4, 0xB8, 0xC4, 0x98, 0x01, 0xC4, 0x77, 0x80, 0xCC, 0x97, 0x01, 0xC4, 0x77, 0x81, 0xCC, 0x77, 0xC4, 0x57, 0x01, 0xCC, 0x57, 0x01, 0xCC, 0x37, 0x80, 0xCC, 0x57, 0x02, 0xCC, 0x37, 0x82, 0xCC, 0x57, 0xCC, 0x37, 0xCC, 0x57, 0x03, 0xCC, 0x37, 0x85, 0xC4, 0x17, 0xCC, 0x37, 0xCB, 0xF6, 0xCB, 0xF7, 0xCC, 0x17, 0xD4, 0x17, 0x03, 0xD3, 0xF7, 0x80, 0xD3, 0xF6, 0x01, 0xD3, 0xD6, 0x82, 0xDB, 0xD6, 0xDB, 0xB6, 0xDB, 0x96, 0x01, 0xDB, 0xB6, 0x80, 0xDB, 0xD6, 0x04, 0xDB, 0xB6, 0x80, 0xDB, 0x96, 0x01, 0xDB, 0xB6, 0x80, 0xDB, 0xB7, 0x01, 0xDB, 0xD7, 0x8D, 0xD3, 0xD7, 0xD3, 0xD8, 0xDC, 0x7B, 0x9A, 0xB5, 0x61, 0x30, 0x61, 0x71, 0x59, 0x2F, 0x58, 0xCD, 0xBB, 0xB8, 0xD4, 0x19, 0xCB, 0xD7, 0xCB, 0x97, 0xD3, 0x96, 0xD3, 0x76, 0x01, 0xD3, 0x55, 0x82, 0xD3, 0x76, 0xD3, 0x56, 0xDB, 0x97, 0x01, 0xD3, 0x56, 0x8E, 0xCB, 0x56, 0xCB, 0x97, 0xCB, 0xB7, 0xCB, 0xF8, 0xBB, 0xB7, 0xA3, 0x96, 0x9B, 0xB7, 0x94, 0x18, 0x8C, 0x79, 0x84, 0x79, 0x6C, 0x58, 0x64, 0x78, 0x75, 0x3B, 0x7D, 0x9D, 0x75, 0xBC, 0x01, 0x75, 0x9C, 0x8C, 0x75, 0x5C, 0x75, 0x3B, 0x75, 0x1B, 0x74, 0xFB, 0x74, 0xBA, 0x7C, 0xBA, 0x84, 0xDB, 0x84, 0x7A, 0x8C, 0x7A, 0x52, + 0x93, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x4F, 0x82, 0x29, 0x50, 0x21, 0x50, 0x29, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xD7, 0x19, 0xB6, 0x11, 0x33, 0x19, 0x12, 0x21, 0x11, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x89, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, + 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x82, 0x21, 0x10, 0x21, 0x30, 0x19, 0x30, 0x02, 0x21, 0x50, 0x83, 0x21, 0x30, 0x19, 0x30, 0x21, 0x30, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x0B, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x28, 0xEF, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x51, 0x19, 0x30, 0x02, 0x19, 0x50, 0x02, 0x21, 0x50, 0x80, 0x21, 0x30, 0x01, 0x21, 0x50, 0x83, 0x19, 0x2F, 0x21, 0x50, 0x19, 0x30, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x07, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x08, 0x21, 0x30, 0x82, 0x19, 0x30, 0x21, 0x30, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x19, 0x30, 0x03, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x87, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x21, 0xD7, 0x01, 0x21, 0xF7, 0x85, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x19, 0x10, 0x03, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, + 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x19, 0xF9, 0x01, 0x1A, 0x19, 0x84, 0x19, 0xF8, 0x11, 0xB6, 0x09, 0x54, 0x11, 0x13, 0x11, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x86, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, + 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x50, 0x29, 0x30, 0x01, 0x21, 0x30, 0x86, 0x21, 0x51, 0x19, 0x51, 0x19, 0x52, 0x11, 0x73, 0x19, 0x94, 0x11, 0x95, 0x11, 0xB6, 0x01, 0x11, 0xD7, 0x8A, 0x11, 0xF8, 0x12, 0x18, 0x11, 0xF8, 0x1A, 0x18, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x94, 0x19, 0x53, 0x19, 0x52, 0x21, 0x31, 0x21, 0x51, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x88, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x52, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x19, 0xF7, 0x01, 0x22, 0x18, 0x86, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x07, 0x21, 0x30, + 0x01, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x86, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x8F, 0x29, 0x0F, 0x28, 0xEF, 0x28, 0xD0, 0x30, 0x90, 0x38, 0x50, 0x58, 0xF4, 0xB2, 0xFD, 0xB2, 0xBD, 0xB2, 0x9D, 0xBA, 0x9D, 0xB2, 0xBD, 0xAA, 0xFC, 0x30, 0x0E, 0x28, 0x6E, 0x30, 0xD0, 0x28, 0xEF, 0x01, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, + 0x01, 0x21, 0x10, 0x8C, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x21, 0xD6, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x8D, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x19, 0x95, 0x22, 0x38, 0x22, 0x18, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x53, 0x08, 0xF2, 0x11, 0x11, 0x01, 0x21, 0x31, 0x84, 0x29, 0x51, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x05, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x05, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x0F, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x05, 0x29, 0x30, 0x85, 0x29, 0x50, 0x29, 0x30, 0x31, 0x51, 0x29, 0x51, 0x31, 0x51, 0x31, 0x52, 0x04, 0x31, 0x51, 0x01, 0x39, 0x51, 0x01, 0x39, 0x52, 0x80, 0x39, 0x72, 0x01, 0x41, 0x72, 0x80, 0x41, 0x92, 0x02, 0x49, 0x93, 0x01, 0x49, 0xB3, 0x82, 0x51, 0xD3, 0x49, 0xB3, 0x51, 0xB4, 0x01, 0x51, 0xD3, 0x01, 0x51, 0xF3, 0x01, 0x51, 0xF2, 0x84, 0x6A, 0xF5, 0xCD, 0xBF, 0xBD, 0x1C, 0xBC, 0xFA, 0xB4, 0x99, 0x02, 0xBC, 0xD9, 0x86, 0xC4, 0xFA, 0xC4, 0xF9, 0xBC, 0xD9, 0xBC, 0xB8, 0xBC, 0x98, 0xBC, 0xB8, 0xC4, 0xB8, 0x02, 0xC4, 0x98, 0x01, 0xBC, 0x97, 0x81, 0xC4, 0x98, 0xBC, 0x97, 0x01, 0xBC, 0x77, 0x80, 0xBC, 0x57, 0x01, 0xC4, 0x77, 0x02, 0xC4, 0x57, 0x80, 0xBC, 0x37, 0x01, 0xBC, 0x57, 0x01, 0xBC, + 0x37, 0x80, 0xBC, 0x57, 0x02, 0xBC, 0x37, 0x01, 0xC4, 0x37, 0x01, 0xC4, 0x17, 0x82, 0xCC, 0x17, 0xCB, 0xF7, 0xD3, 0xF7, 0x02, 0xD3, 0xD6, 0x80, 0xD3, 0xB6, 0x0A, 0xDB, 0xB6, 0x80, 0xDB, 0x96, 0x01, 0xDB, 0xB6, 0x82, 0xD3, 0x96, 0xDB, 0x96, 0xDB, 0xB7, 0x01, 0xD3, 0xB7, 0x8C, 0xD3, 0xD8, 0xCB, 0xF9, 0x60, 0xCD, 0x48, 0x2B, 0x60, 0xCD, 0xCB, 0xD9, 0xD3, 0xF8, 0xCB, 0x97, 0xCB, 0x96, 0xD3, 0xB7, 0xD3, 0x96, 0xD3, 0x76, 0xDB, 0x76, 0x02, 0xD3, 0x56, 0x81, 0xCB, 0x56, 0xD3, 0x76, 0x01, 0xCB, 0x97, 0x9A, 0xC3, 0x97, 0xBB, 0xB7, 0xAB, 0xD7, 0x9B, 0xD7, 0x94, 0x38, 0x94, 0x9A, 0x84, 0x79, 0x6C, 0x78, 0x64, 0x78, 0x6D, 0x1A, 0x7D, 0xBD, 0x75, 0xBD, 0x6D, 0x7C, 0x75, 0xBD, 0x7D, 0xBD, 0x75, 0x3B, 0x74, 0xDA, 0x7C, 0xDA, 0x7C, 0xBA, 0x7C, 0x79, 0x84, 0x59, 0x73, 0xB7, 0x83, 0xD8, 0x94, 0x7A, 0x6B, 0x15, 0x18, 0x6C, 0x29, 0x0E, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x50, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x88, 0x19, + 0x31, 0x11, 0x12, 0x11, 0x33, 0x19, 0xD7, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x13, 0x19, 0x12, 0x01, 0x21, 0x11, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x11, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x21, 0x51, 0x86, 0x19, 0x50, 0x19, 0x30, 0x19, 0x50, 0x19, 0x51, 0x19, 0x30, 0x19, 0x10, 0x19, 0x11, 0x01, 0x19, 0x31, 0x83, 0x21, 0x51, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x31, 0x84, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x31, 0x01, 0x21, 0x11, 0x03, 0x21, 0x31, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x80, 0x21, 0x51, 0x05, 0x19, 0x31, 0x82, 0x19, 0x51, 0x21, 0x51, 0x19, 0x50, 0x01, 0x21, 0x50, 0x01, 0x19, 0x50, 0x80, 0x19, 0x51, + 0x04, 0x19, 0x31, 0x80, 0x21, 0x51, 0x05, 0x21, 0x31, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x04, 0x21, 0x31, 0x80, 0x19, 0x10, 0x02, 0x21, 0x51, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x19, 0x31, 0x19, 0x51, 0x07, 0x19, 0x31, 0x81, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x83, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x84, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x20, 0xF0, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, + 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x89, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x76, 0x11, 0xD8, 0x19, 0xF9, 0x01, 0x1A, 0x19, 0x88, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x55, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, + 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x93, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xD7, 0x19, 0xB6, 0x19, 0x94, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x32, 0x89, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x19, 0xD7, 0x22, 0x17, 0x22, 0x38, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x53, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x11, 0x05, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, + 0x50, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x88, 0x29, 0x0F, 0x28, 0xEF, 0x28, 0xD0, 0x30, 0x90, 0x38, 0x50, 0x50, 0xB3, 0xB2, 0xFD, 0xB2, 0xBD, 0xBA, 0x9D, 0x01, 0xBA, 0xBD, 0x86, 0xB3, 0x1D, 0x30, 0x0E, 0x28, 0x4E, 0x30, 0xCF, 0x28, 0xF0, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x94, 0x21, 0x10, 0x29, 0x30, 0x21, 0x31, 0x21, 0x11, 0x10, 0xF1, 0x11, 0x12, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x11, 0x19, 0x11, 0x11, 0x53, 0x11, 0x74, 0x19, 0xF7, 0x22, 0x38, 0x1A, 0x17, 0x11, 0xB5, 0x09, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, + 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x0D, 0x29, 0x30, 0x80, 0x29, 0x10, 0x05, 0x29, 0x30, 0x02, 0x29, 0x50, 0x01, 0x31, 0x51, 0x80, 0x31, 0x71, 0x02, 0x31, 0x51, 0x82, 0x31, 0x71, 0x31, 0x51, 0x39, 0x51, 0x01, 0x39, 0x52, 0x85, 0x41, 0x72, 0x39, 0x72, 0x41, 0x72, 0x41, 0x92, 0x41, 0x72, 0x41, 0x92, 0x01, 0x49, 0x93, 0x01, 0x49, 0xB3, 0x01, 0x51, 0xB3, 0x01, 0x51, 0xD4, 0x81, 0x51, 0xD3, 0x51, 0xF4, 0x01, 0x51, 0xF3, 0x01, 0x51, 0xF2, 0x86, 0x73, 0x15, 0xCD, 0xBE, 0xBD, 0x3C, 0xBD, 0x1B, 0xBD, 0x1A, 0xBC, 0xFA, 0xBC, 0xF9, 0x02, 0xC4, 0xFA, 0x80, 0xC5, 0x1A, 0x01, 0xC4, 0xF9, 0x84, 0xCC, 0xFA, 0xC4, 0xF9, 0xC4, 0xD9, 0xCC, 0xD9, 0xC4, 0xD9, 0x01, 0xC4, 0xF9, 0x81, 0xC5, 0x19, 0xC4, 0xF9, 0x01, 0xC5, 0x19, 0x01, 0xC4, 0xF9, 0x02, 0xC4, 0xD9, 0x81, 0xBC, 0xB9, 0xBC, 0xB8, 0x02, 0xB4, 0x98, 0x03, 0xA4, 0x57, 0x82, 0xA4, 0x36, 0xB4, 0x78, 0xB4, 0x58, 0x01, 0xBC, 0x78, 0x84, 0xC4, 0x58, 0xC4, 0x38, 0xCC, 0x17, 0xCB, 0xF7, 0xCB, 0xD6, 0x01, 0xD3, 0xD6, 0x80, 0xD3, 0xB6, 0x04, 0xDB, 0xB6, 0x81, 0xDB, 0xD6, 0xD3, 0xB6, 0x01, 0xDB, 0xB6, 0x01, 0xD3, 0x96, 0x80, 0xDB, 0xB6, 0x01, 0xD3, 0x96, 0x01, 0xDB, 0x96, 0x01, 0xDB, 0xB7, 0x8C, 0xDB, 0xD8, 0xD3, 0xB8, 0x91, 0xF1, 0x79, 0x0E, 0xCB, 0xB8, 0xD3, 0xB7, 0xD3, 0x97, 0xCB, 0x76, 0xD3, 0x97, 0xD3, 0x76, 0xD3, 0x96, 0xD3, 0x76, 0xD3, 0x56, 0x02, 0xD3, 0x76, 0x9D, 0xCB, 0x97, 0xCB, 0xB7, + 0xC3, 0xB7, 0xBB, 0xF8, 0xAB, 0xB7, 0x9B, 0xB7, 0x9C, 0x59, 0x94, 0x79, 0x84, 0xBA, 0x6C, 0x58, 0x5C, 0x57, 0x6C, 0xFA, 0x75, 0x9C, 0x7D, 0xDD, 0x75, 0xDD, 0x75, 0x9C, 0x75, 0x5B, 0x75, 0x3B, 0x6C, 0xB9, 0x7C, 0xDA, 0x84, 0xDA, 0x84, 0x99, 0x84, 0x59, 0x83, 0xF7, 0x83, 0xD8, 0x8B, 0xB8, 0x9C, 0x3A, 0x6A, 0xD5, 0x30, 0xEE, 0x31, 0x0E, 0x04, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x50, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x31, 0x19, 0x32, 0x11, 0x13, 0x19, 0xD6, 0x19, 0xF8, 0x11, 0xD7, 0x19, 0xB6, 0x11, 0x13, 0x19, 0x12, 0x21, 0x31, 0x21, 0x11, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, + 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x07, 0x21, 0x2F, 0x8C, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x31, 0x21, 0x11, 0x21, 0x32, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x19, 0x51, 0x19, 0x31, 0x02, 0x19, 0x51, 0x80, 0x19, 0x52, 0x03, 0x19, 0x32, 0x81, 0x19, 0x52, 0x21, 0x52, 0x03, 0x19, 0x31, 0x01, 0x19, 0x32, 0x81, 0x11, 0x32, 0x11, 0x31, 0x01, 0x19, 0x31, 0x81, 0x19, 0x51, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x88, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x21, 0x52, 0x19, 0x32, 0x19, 0x52, 0x02, 0x19, 0x32, 0x81, 0x19, 0x51, 0x21, 0x51, 0x03, 0x19, 0x31, 0x85, 0x19, 0x52, 0x11, 0x32, 0x11, 0x52, 0x11, 0x32, 0x19, 0x32, 0x19, 0x52, 0x06, 0x19, 0x51, 0x80, 0x11, 0x52, 0x01, 0x19, 0x52, 0x82, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x52, 0x04, 0x19, 0x32, 0x81, 0x21, 0x52, 0x19, 0x52, 0x01, 0x19, 0x31, 0x01, 0x19, 0x52, 0x81, 0x21, 0x52, 0x19, 0x32, 0x01, 0x19, 0x52, 0x85, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x19, 0x51, 0x19, 0x52, 0x19, 0x31, 0x04, 0x19, 0x52, 0x01, 0x19, + 0x32, 0x01, 0x19, 0x31, 0x85, 0x21, 0x31, 0x21, 0x30, 0x19, 0x30, 0x21, 0x30, 0x21, 0x50, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x8A, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x10, 0x19, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0A, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x85, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x30, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x87, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x11, 0x34, 0x11, 0x75, 0x11, 0x96, 0x11, + 0xD7, 0x19, 0xF9, 0x01, 0x1A, 0x19, 0x83, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x55, 0x11, 0x74, 0x01, 0x19, 0x32, 0x80, 0x21, 0x31, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x19, 0x31, 0x87, 0x11, 0x32, 0x11, 0x74, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xFA, 0x02, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x87, 0x09, 0xD8, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x07, 0x21, 0x30, 0x85, 0x21, 0x2F, 0x21, 0x30, + 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x84, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x82, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x53, 0x01, 0x19, 0x32, 0x84, 0x21, 0x31, 0x21, 0x11, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x90, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x31, 0x10, 0x28, 0xB0, 0x30, 0x70, 0x38, 0x50, 0x50, 0x72, 0xB3, 0x1E, 0xB2, 0xBD, 0xBA, 0x9D, 0xBA, 0x9E, 0xB2, 0x9D, 0xB3, 0x1D, 0x30, 0x0E, 0x28, 0x2D, 0x30, 0xCF, 0x01, 0x28, 0xEF, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, + 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x92, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x18, 0xF1, 0x08, 0xD1, 0x11, 0x33, 0x19, 0xD6, 0x22, 0x38, 0x22, 0x17, 0x19, 0xB6, 0x09, 0x34, 0x11, 0x13, 0x11, 0x12, 0x19, 0x11, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x20, 0xEF, 0x01, 0x21, 0x10, 0x03, 0x29, 0x10, 0x8C, 0x29, 0x30, 0x21, 0x31, 0x18, 0xF0, 0x11, 0x12, 0x11, 0x54, 0x19, 0xD6, 0x22, 0x38, 0x1A, 0x17, 0x11, 0xB5, 0x09, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x86, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x14, 0x29, 0x30, 0x80, 0x29, 0x10, 0x07, 0x29, 0x30, 0x80, 0x31, 0x30, 0x04, 0x29, 0x30, 0x81, 0x31, 0x50, 0x31, 0x51, 0x03, 0x31, 0x71, 0x01, 0x31, 0x51, 0x81, 0x39, 0x51, 0x39, 0x71, 0x01, 0x39, 0x72, 0x01, 0x41, 0x72, 0x82, + 0x41, 0x92, 0x41, 0x72, 0x41, 0x92, 0x01, 0x49, 0x93, 0x01, 0x49, 0xB3, 0x81, 0x51, 0xB4, 0x51, 0xB3, 0x03, 0x51, 0xD4, 0x01, 0x51, 0xD3, 0x01, 0x59, 0xF3, 0x87, 0x49, 0xB1, 0x72, 0xF5, 0xBD, 0x1C, 0xBD, 0x3C, 0xBD, 0x3B, 0xC5, 0x1B, 0xC5, 0x1A, 0xBC, 0xFA, 0x01, 0xC4, 0xFA, 0x02, 0xC5, 0x1A, 0x81, 0xC4, 0xFA, 0xC4, 0xD9, 0x02, 0xCC, 0xFA, 0x81, 0xC4, 0xD9, 0xC4, 0xFA, 0x01, 0xC5, 0x1A, 0x80, 0xBD, 0x1A, 0x01, 0xBD, 0x19, 0x82, 0xBD, 0x1A, 0xB5, 0x19, 0xBD, 0x3A, 0x03, 0xB5, 0x3A, 0x80, 0xAD, 0x3A, 0x01, 0xAD, 0x39, 0x80, 0xAD, 0x5A, 0x01, 0xA5, 0x39, 0x8B, 0x9C, 0xF8, 0x9C, 0xB8, 0x94, 0x77, 0x9C, 0x57, 0x9C, 0x37, 0xA4, 0x37, 0xAC, 0x17, 0xBC, 0x58, 0xBC, 0x17, 0xC4, 0x17, 0xCC, 0x17, 0xD3, 0xF7, 0x01, 0xD3, 0xD6, 0x80, 0xD3, 0xB6, 0x01, 0xDB, 0xB6, 0x01, 0xD3, 0xB6, 0x80, 0xD3, 0x95, 0x02, 0xD3, 0xB6, 0x01, 0xDB, 0xB6, 0x01, 0xDB, 0x96, 0x81, 0xD3, 0x76, 0xDB, 0x76, 0x01, 0xD3, 0x76, 0x80, 0xDB, 0x97, 0x01, 0xDB, 0xB7, 0x82, 0xD3, 0x97, 0xDB, 0xD8, 0xDB, 0xB7, 0x02, 0xD3, 0x96, 0x81, 0xD3, 0x76, 0xD3, 0x56, 0x02, 0xD3, 0x76, 0x01, 0xCB, 0x76, 0x8A, 0xCB, 0x97, 0xC3, 0x97, 0xBB, 0xB7, 0xB3, 0xD8, 0x9B, 0xB7, 0x93, 0xF8, 0x8C, 0x79, 0x74, 0x38, 0x64, 0x17, 0x5C, 0x37, 0x6C, 0xFA, 0x01, 0x7D, 0xBC, 0x8F, 0x75, 0xBC, 0x75, 0x9C, 0x7D, 0x7C, 0x74, 0xFA, 0x6C, 0x99, 0x7C, 0xB9, 0x8C, 0xB9, 0x84, 0x18, 0x83, 0xD6, 0x7B, 0x75, 0x83, 0x96, 0x8B, 0xB7, 0x9C, 0x39, 0x93, 0xB8, 0x5A, 0x32, 0x28, 0xCD, 0x01, 0x31, 0x0F, 0x80, + 0x31, 0x2F, 0x04, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x08, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x07, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD7, 0x11, 0xF8, 0x11, 0xD7, 0x19, 0xD6, 0x11, 0x33, 0x19, 0x12, 0x21, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x19, 0x33, 0x02, 0x11, 0x33, 0x85, 0x11, 0x53, 0x11, 0x33, 0x19, + 0x53, 0x19, 0x52, 0x11, 0x32, 0x11, 0x31, 0x01, 0x11, 0x73, 0x01, 0x11, 0x53, 0x02, 0x11, 0x33, 0x85, 0x19, 0x53, 0x19, 0x73, 0x19, 0x33, 0x19, 0x32, 0x11, 0x32, 0x19, 0x33, 0x02, 0x11, 0x33, 0x84, 0x11, 0x53, 0x11, 0x33, 0x11, 0x53, 0x19, 0x52, 0x19, 0x72, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x19, 0x52, 0x01, 0x19, 0x53, 0x82, 0x19, 0x74, 0x11, 0x54, 0x19, 0x54, 0x01, 0x19, 0x53, 0x01, 0x19, 0x52, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x80, 0x11, 0x53, 0x01, 0x11, 0x74, 0x80, 0x11, 0x54, 0x02, 0x11, 0x53, 0x86, 0x19, 0x73, 0x19, 0x72, 0x19, 0x31, 0x19, 0x52, 0x11, 0x52, 0x11, 0x53, 0x11, 0x73, 0x01, 0x11, 0x74, 0x82, 0x11, 0x73, 0x11, 0x53, 0x11, 0x32, 0x02, 0x19, 0x52, 0x81, 0x19, 0x31, 0x19, 0x52, 0x01, 0x19, 0x73, 0x80, 0x11, 0x53, 0x03, 0x11, 0x33, 0x82, 0x19, 0x53, 0x19, 0x52, 0x19, 0x32, 0x01, 0x11, 0x32, 0x04, 0x11, 0x53, 0x01, 0x19, 0x53, 0x01, 0x11, 0x52, 0x81, 0x11, 0x32, 0x11, 0x52, 0x01, 0x11, 0x53, 0x01, 0x19, 0x73, 0x01, 0x19, 0x53, 0x01, 0x19, 0x32, 0x82, 0x19, 0x52, 0x19, 0x51, 0x19, 0x31, 0x01, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x31, 0x83, 0x21, 0x52, 0x19, 0x52, 0x19, 0x32, 0x19, 0x52, 0x01, 0x11, 0x32, 0x82, 0x11, 0x53, 0x11, 0x94, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x82, 0x19, 0x95, 0x11, 0x53, + 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x8C, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x0E, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x04, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x86, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x19, 0xF8, 0x01, 0x1A, 0x19, 0x88, 0x11, 0xD8, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x74, 0x11, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, + 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x05, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x09, 0xB7, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x88, 0x01, 0xFA, 0x01, 0xD9, 0x09, 0xF9, 0x11, 0xD8, 0x11, 0x96, 0x11, 0x54, 0x19, 0x32, 0x19, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, + 0x53, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD6, 0x01, 0x22, 0x18, 0x85, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x12, 0x21, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x87, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x92, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x30, 0xF0, 0x30, 0xB0, 0x30, 0x70, 0x38, 0x30, 0x48, 0x11, 0xBA, 0xFE, 0xBA, 0xBE, 0xBA, 0x9D, 0xC2, 0x9E, 0xC2, 0xBE, 0xBB, 0x1D, 0x38, 0x0E, 0x28, 0x0D, 0x30, 0xAF, 0x30, 0xCF, 0x28, 0xEF, 0x05, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, + 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x8D, 0x21, 0x31, 0x18, 0xF1, 0x08, 0xD1, 0x11, 0x75, 0x21, 0xF7, 0x22, 0x18, 0x22, 0x17, 0x11, 0x74, 0x08, 0xF2, 0x10, 0xF2, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x8C, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x74, 0x19, 0xF7, 0x1A, 0x38, 0x1A, 0x17, 0x09, 0x53, 0x09, 0x12, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x01, 0x29, 0x10, 0x07, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x01, 0x31, 0x30, 0x01, 0x29, 0x30, 0x81, 0x31, 0x51, 0x31, 0x50, 0x01, 0x29, 0x30, 0x01, 0x31, 0x50, 0x80, 0x31, 0x51, 0x02, 0x31, 0x71, 0x01, 0x39, 0x71, 0x82, 0x39, 0x51, 0x39, 0x71, 0x39, 0x72, 0x01, 0x41, 0x72, 0x02, 0x41, 0x92, 0x01, 0x49, 0x93, 0x82, 0x49, 0xB3, 0x51, 0xB3, 0x49, 0xB3, 0x01, 0x51, 0xB3, 0x82, 0x51, 0xD4, 0x51, 0xB3, 0x59, 0xD4, 0x02, 0x59, 0xD3, 0x85, 0x59, 0xF2, 0x51, 0xB1, 0x51, + 0xB0, 0xB4, 0xDC, 0xC5, 0x5D, 0xBD, 0x1B, 0x01, 0xC4, 0xFA, 0x81, 0xC4, 0xDA, 0xBC, 0xB9, 0x03, 0xC4, 0xB9, 0x80, 0xC4, 0x98, 0x03, 0xC4, 0x99, 0x88, 0xC4, 0xB9, 0xC4, 0x99, 0xC4, 0xD9, 0xC4, 0xDA, 0xBC, 0xFA, 0xBC, 0xF9, 0xBD, 0x1A, 0xB5, 0x3A, 0xB5, 0x1A, 0x02, 0xB5, 0x3A, 0x01, 0xB5, 0x5A, 0x01, 0xAD, 0x7B, 0x01, 0xAD, 0x9B, 0x04, 0xA5, 0x9B, 0x8C, 0xA5, 0x7B, 0xA5, 0x5A, 0xA5, 0x1A, 0xAC, 0xD9, 0xA4, 0x78, 0xA3, 0xF6, 0xAB, 0xD6, 0xB3, 0xF6, 0xC4, 0x17, 0xC3, 0xF7, 0xCB, 0xF7, 0xD3, 0xD7, 0xD3, 0xD6, 0x07, 0xD3, 0xB6, 0x01, 0xDB, 0xB6, 0x01, 0xD3, 0x96, 0x80, 0xDB, 0x96, 0x01, 0xDB, 0x76, 0x84, 0xDB, 0x96, 0xDB, 0x76, 0xDB, 0x97, 0xDB, 0x96, 0xDB, 0x76, 0x01, 0xDB, 0x96, 0x02, 0xD3, 0x76, 0x80, 0xCB, 0x55, 0x01, 0xD3, 0x76, 0x8D, 0xCB, 0x56, 0xCB, 0x76, 0xCB, 0x97, 0xC3, 0xB7, 0xBB, 0x97, 0xB3, 0xB7, 0xA3, 0xD7, 0x93, 0xF7, 0x8C, 0x38, 0x7C, 0x59, 0x6C, 0x38, 0x64, 0x78, 0x6C, 0xFA, 0x6D, 0x3B, 0x01, 0x7D, 0xDD, 0x89, 0x7D, 0x9C, 0x7D, 0x5B, 0x75, 0x1A, 0x74, 0xB9, 0x74, 0x38, 0x7C, 0x38, 0x94, 0x99, 0x94, 0x17, 0x8B, 0x96, 0x8B, 0x55, 0x01, 0x93, 0x96, 0x84, 0xA4, 0x19, 0xA4, 0x3A, 0x5A, 0x12, 0x30, 0xCD, 0x30, 0xEE, 0x02, 0x31, 0x2F, 0x80, 0x31, 0x50, 0x09, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, + 0x29, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x8D, 0x21, 0x10, 0x21, 0x11, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD7, 0x11, 0xF8, 0x11, 0xD7, 0x19, 0xD7, 0x11, 0x53, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x8D, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x19, 0x33, 0x19, 0x74, 0x19, 0x95, 0x19, 0xB6, 0x21, 0xD7, 0x21, 0xD6, 0x19, 0xB5, 0x19, 0x74, 0x11, 0x53, 0x01, 0x09, 0x32, 0x83, 0x11, 0x73, 0x11, 0x94, 0x19, 0xF6, 0x19, 0xD6, 0x01, 0x19, 0xB6, 0x01, 0x19, 0x95, 0x80, 0x11, 0x54, 0x02, 0x11, 0x33, 0x82, 0x19, 0x54, 0x19, 0x96, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x88, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x74, 0x19, + 0x53, 0x19, 0x32, 0x21, 0x51, 0x21, 0x31, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x19, 0x31, 0x19, 0x53, 0x19, 0x74, 0x19, 0xB5, 0x02, 0x19, 0xB6, 0x82, 0x19, 0x95, 0x11, 0x95, 0x19, 0x74, 0x02, 0x11, 0x53, 0x83, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x19, 0xD7, 0x01, 0x19, 0xD6, 0x87, 0x11, 0x95, 0x19, 0x95, 0x19, 0x74, 0x11, 0x53, 0x19, 0x52, 0x11, 0x53, 0x11, 0x73, 0x11, 0x94, 0x01, 0x19, 0xD6, 0x89, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x74, 0x11, 0x53, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x19, 0x52, 0x19, 0x73, 0x01, 0x19, 0xB5, 0x01, 0x19, 0xB6, 0x88, 0x19, 0xB5, 0x19, 0x95, 0x19, 0x94, 0x11, 0x73, 0x19, 0x53, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x19, 0xB5, 0x02, 0x19, 0xB6, 0x82, 0x19, 0x95, 0x19, 0x74, 0x11, 0x74, 0x03, 0x11, 0x53, 0x83, 0x11, 0x94, 0x19, 0xB5, 0x19, 0x95, 0x21, 0xB6, 0x01, 0x19, 0x95, 0x86, 0x19, 0x74, 0x19, 0x53, 0x19, 0x52, 0x19, 0x51, 0x19, 0x31, 0x19, 0x30, 0x21, 0x51, 0x02, 0x21, 0x30, 0x81, 0x19, 0x31, 0x21, 0x31, 0x01, 0x19, 0x31, 0x80, 0x21, 0x32, 0x03, 0x19, 0x32, 0x87, 0x19, 0x52, 0x19, 0x53, 0x11, 0x53, 0x11, 0x32, 0x11, 0x33, 0x11, 0x53, 0x11, 0x74, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x87, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, + 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x84, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x89, 0x21, 0x51, 0x19, 0x31, 0x11, 0x12, 0x11, 0x13, 0x11, 0x34, 0x11, 0x75, 0x11, 0xB6, 0x19, 0xD7, 0x11, 0xD8, 0x1A, 0x19, 0x01, 0x19, 0xF8, 0x87, 0x09, 0x96, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x30, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, + 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x08, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x87, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xF9, 0x09, 0xFA, 0x04, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x86, 0x09, 0xFA, 0x11, 0xF9, 0x11, 0xB7, 0x11, 0x54, 0x19, 0x33, 0x21, 0x32, 0x21, 0x31, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x19, 0x31, 0x8A, 0x19, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x22, 0x58, 0x22, 0x38, + 0x19, 0xB6, 0x11, 0x74, 0x11, 0x12, 0x19, 0x12, 0x02, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x94, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x28, 0xCF, 0x28, 0xD0, 0x30, 0xB0, 0x38, 0x71, 0x40, 0x31, 0x50, 0x32, 0xC2, 0xFE, 0xC2, 0x7D, 0xC2, 0x7E, 0xC2, 0x7D, 0xCA, 0x9E, 0xBA, 0xBC, 0x38, 0x0E, 0x28, 0x0D, 0x38, 0x8F, 0x30, 0xAF, 0x30, 0xCF, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x83, + 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x8D, 0x19, 0x11, 0x19, 0x12, 0x19, 0x53, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x38, 0x19, 0xB6, 0x09, 0x13, 0x08, 0xF2, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x51, 0x29, 0x51, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x20, 0xEF, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x19, 0x11, 0x11, 0x53, 0x11, 0x95, 0x01, 0x1A, 0x38, 0x89, 0x11, 0xB6, 0x01, 0x12, 0x09, 0x11, 0x19, 0x52, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x50, 0x02, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x04, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x81, 0x31, 0x30, 0x29, 0x30, 0x03, 0x31, 0x30, 0x82, 0x31, 0x50, 0x31, 0x51, 0x31, 0x30, 0x02, 0x31, 0x50, 0x02, 0x31, 0x51, 0x01, 0x31, 0x71, 0x01, 0x39, 0x71, 0x85, 0x39, 0x51, 0x39, 0x71, 0x39, 0x72, 0x41, 0x72, 0x41, 0x92, 0x41, 0x72, 0x01, 0x41, 0x93, 0x02, 0x49, 0x93, 0x80, 0x49, 0xB3, 0x01, 0x51, 0xB3, 0x02, 0x51, 0xD4, 0x90, 0x59, 0xD3, 0x59, 0xB3, 0x59, 0xD3, 0x59, 0xB2, 0x49, 0x2F, 0x61, 0xD1, 0xBC, 0xBB, + 0xD5, 0x5D, 0xD5, 0x5C, 0xAB, 0xF7, 0xA3, 0xD6, 0xBC, 0x38, 0xBC, 0x58, 0xC4, 0x78, 0xC4, 0x58, 0xBC, 0x17, 0xC4, 0x37, 0x01, 0xBC, 0x17, 0x80, 0xC4, 0x37, 0x03, 0xC4, 0x17, 0x89, 0xBB, 0xF7, 0xBC, 0x17, 0xB4, 0x37, 0xB4, 0x58, 0xAC, 0x58, 0xA4, 0x37, 0xA4, 0x58, 0xA4, 0x78, 0xA4, 0x98, 0xA4, 0xB8, 0x02, 0xA4, 0xD9, 0x83, 0xAD, 0x1A, 0xA5, 0x3A, 0xA5, 0x1A, 0xA5, 0x3A, 0x01, 0xA5, 0x7A, 0x80, 0xA5, 0x7B, 0x01, 0xA5, 0x9B, 0x80, 0xAD, 0x9B, 0x01, 0xAD, 0x7B, 0x86, 0xB5, 0x5B, 0xB5, 0x1A, 0xB4, 0xFA, 0xB4, 0xD9, 0xBC, 0x98, 0xB4, 0x57, 0xB3, 0xF6, 0x01, 0xBB, 0xB6, 0x80, 0xCB, 0xF7, 0x03, 0xCB, 0xD6, 0x01, 0xD3, 0xD6, 0x01, 0xD3, 0xB6, 0x03, 0xD3, 0x96, 0x01, 0xDB, 0x96, 0x80, 0xD3, 0x76, 0x02, 0xDB, 0x76, 0x01, 0xDB, 0x96, 0x85, 0xDB, 0x76, 0xD3, 0x56, 0xD3, 0x96, 0xD3, 0x76, 0xCB, 0x55, 0xD3, 0x76, 0x01, 0xCB, 0x75, 0x8C, 0xCB, 0x96, 0xC3, 0xB7, 0xB3, 0x76, 0xB3, 0xB7, 0xA3, 0xD8, 0x93, 0xD7, 0x94, 0x59, 0x7C, 0x38, 0x6C, 0x17, 0x5C, 0x17, 0x75, 0x1A, 0x7D, 0x9C, 0x7D, 0xDD, 0x01, 0x75, 0x9C, 0x91, 0x7D, 0x7B, 0x7D, 0x1A, 0x74, 0x98, 0x7C, 0x37, 0x84, 0x17, 0x94, 0x17, 0x93, 0xF7, 0x8B, 0x55, 0x93, 0x55, 0x93, 0x76, 0x9B, 0x96, 0x9B, 0xB7, 0xAC, 0x39, 0xA4, 0x19, 0x51, 0xD1, 0x28, 0xAD, 0x30, 0xEF, 0x31, 0x0F, 0x02, 0x31, 0x30, 0x80, 0x29, 0x30, 0x01, 0x31, 0x50, 0x03, 0x31, 0x30, 0x01, 0x29, 0x30, 0x80, 0x31, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, + 0x10, 0x05, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x09, 0x34, 0x02, 0x11, 0xD7, 0x83, 0x11, 0xB7, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x8F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x19, 0x31, 0x19, 0x53, 0x19, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x01, 0x22, 0x18, 0x8A, 0x19, 0xF7, 0x19, 0xB6, 0x19, 0x96, 0x11, 0x54, 0x09, 0x33, 0x09, 0x13, 0x09, 0x54, 0x11, 0xB6, 0x1A, 0x17, 0x19, 0xF7, 0x1A, 0x17, 0x01, 0x19, 0xF7, + 0x82, 0x11, 0xB6, 0x11, 0x74, 0x11, 0x34, 0x01, 0x11, 0x33, 0x81, 0x11, 0x75, 0x19, 0xF7, 0x01, 0x1A, 0x18, 0x8B, 0x1A, 0x19, 0x1A, 0x18, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x53, 0x19, 0x53, 0x19, 0x52, 0x21, 0x31, 0x29, 0x31, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x92, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x10, 0x19, 0x32, 0x19, 0x73, 0x11, 0x95, 0x11, 0xD6, 0x11, 0xF7, 0x1A, 0x18, 0x11, 0xF7, 0x11, 0xD7, 0x11, 0xB6, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x53, 0x09, 0x33, 0x09, 0x74, 0x11, 0xB6, 0x1A, 0x38, 0x02, 0x1A, 0x18, 0x82, 0x11, 0xD7, 0x11, 0xB6, 0x19, 0x95, 0x02, 0x11, 0x53, 0x89, 0x11, 0x94, 0x11, 0xB6, 0x11, 0xF7, 0x12, 0x18, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0xD7, 0x11, 0x95, 0x19, 0x74, 0x19, 0x53, 0x01, 0x11, 0x32, 0x83, 0x11, 0x53, 0x11, 0x74, 0x19, 0xF6, 0x1A, 0x17, 0x02, 0x1A, 0x18, 0x87, 0x19, 0xF7, 0x19, 0xB5, 0x11, 0x95, 0x11, 0x54, 0x09, 0x13, 0x09, 0x54, 0x11, 0xB6, 0x22, 0x38, 0x01, 0x19, 0xF8, 0x01, 0x19, 0xD7, 0x86, 0x11, 0xB6, 0x11, 0x74, 0x11, 0x54, 0x11, 0x74, 0x11, 0x54, 0x11, 0x74, 0x11, 0xB5, 0x01, 0x19, 0xD7, 0x80, 0x21, 0xF8, 0x01, 0x19, 0xD7, 0x83, 0x19, 0xB6, 0x19, 0x54, 0x19, 0x53, 0x19, 0x52, 0x02, 0x19, 0x31, 0x83, 0x19, 0x30, 0x19, 0x31, 0x21, 0x52, 0x19, 0x52, 0x01, 0x19, 0x32, 0x83, 0x19, 0x52, 0x19, 0x32, 0x19, 0x33, 0x19, 0x53, 0x01, 0x11, 0x33, 0x8D, 0x11, 0x53, 0x11, 0x54, 0x09, 0x33, 0x09, 0x13, 0x09, 0x34, 0x11, 0x75, 0x19, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, + 0xB5, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x30, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x06, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x20, 0xEF, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x88, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x86, 0x11, 0xF8, 0x09, 0x96, 0x11, 0x74, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x04, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, + 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x05, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x04, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x08, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8C, 0x19, 0x31, 0x19, 0x32, 0x11, 0x54, 0x11, 0x95, 0x09, 0xB7, 0x09, 0xD8, 0x09, 0xFA, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xDB, 0x01, 0xFB, 0x01, 0x01, 0xDA, 0x89, 0x09, 0xDA, 0x09, 0xD9, 0x11, 0xB7, 0x11, 0x75, 0x19, 0x53, 0x21, 0x52, 0x21, 0x11, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x8E, 0x21, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x50, 0x21, 0x50, 0x21, 0x30, 0x01, 0x19, 0x30, 0x8B, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD6, 0x22, 0x38, 0x22, 0x18, 0x11, 0x95, 0x19, 0x74, 0x11, 0x12, 0x19, 0x11, + 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x88, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x89, 0x29, 0x10, 0x31, 0x10, 0x30, 0xF0, 0x30, 0xD0, 0x38, 0x91, 0x40, 0x51, 0x48, 0x10, 0x78, 0xF6, 0xCA, 0xDE, 0xCA, 0x5D, 0x01, 0xCA, 0x5E, 0x82, 0xCA, 0x7E, 0xC2, 0x7C, 0x50, 0x10, 0x01, 0x38, 0x0E, 0x84, 0x38, 0x6F, 0x30, 0x8F, 0x30, 0xCF, 0x28, 0xCF, 0x28, 0xF0, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, + 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x8D, 0x21, 0x31, 0x19, 0x32, 0x19, 0x54, 0x19, 0xD6, 0x22, 0x18, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x50, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x10, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0xB6, 0x01, 0x1A, 0x18, 0x84, 0x11, 0x95, 0x09, 0x12, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x06, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x06, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x07, 0x31, 0x30, 0x01, 0x31, 0x50, 0x03, 0x31, 0x51, 0x01, 0x31, 0x71, 0x02, 0x39, 0x71, 0x80, 0x39, 0x72, 0x02, 0x41, 0x72, 0x01, 0x41, 0x93, 0x83, 0x49, 0x93, 0x49, 0xB3, 0x49, 0x93, 0x49, 0xB3, 0x01, 0x51, 0xB3, 0x80, 0x51, 0xD4, 0x01, 0x51, 0xD3, 0x8A, 0x59, 0xD4, 0x59, 0xD3, 0x59, 0xB2, 0x61, 0xB2, 0x51, 0x2F, 0x69, 0xF1, 0xC4, 0x9B, 0xCC, 0xDB, 0xCC, 0xBA, 0xC4, 0x99, 0xC4, 0x79, 0x01, 0xC4, 0x58, 0x80, 0xCC, 0x79, 0x02, 0xCC, 0x58, 0x05, 0xCC, 0x38, 0x82, 0xCC, 0x18, 0xCC, 0x38, 0xCC, 0x18, 0x01, 0xC4, 0x38, 0x81, 0xBC, 0x38, 0xBC, 0x58, 0x01, 0xB4, 0x58, 0x01, 0xAC, 0x58, 0x81, + 0xAC, 0x57, 0xA4, 0x57, 0x01, 0xA4, 0x78, 0x81, 0xA4, 0x57, 0x9C, 0x57, 0x01, 0x9C, 0x77, 0x80, 0x94, 0x77, 0x01, 0x94, 0x97, 0x84, 0x94, 0x98, 0x94, 0xB8, 0x9C, 0xB8, 0xA4, 0xD9, 0xAC, 0xF9, 0x01, 0xB5, 0x1A, 0x8B, 0xBD, 0x3A, 0xBC, 0xFA, 0xBC, 0xD9, 0xBC, 0xB9, 0xC4, 0xB9, 0xCC, 0xBA, 0xBC, 0x17, 0xB3, 0xD6, 0xBB, 0xB6, 0xC3, 0xF6, 0xC4, 0x17, 0xCC, 0x17, 0x01, 0xCB, 0xF7, 0x81, 0xCB, 0xD6, 0xCB, 0xB6, 0x01, 0xD3, 0x96, 0x81, 0xD3, 0x75, 0xD3, 0x96, 0x01, 0xDB, 0x96, 0x88, 0xDB, 0x76, 0xD3, 0x76, 0xDB, 0x76, 0xDB, 0x56, 0xDB, 0x96, 0xDB, 0x76, 0xDB, 0x56, 0xDB, 0x76, 0xD3, 0x55, 0x01, 0xD3, 0x96, 0xA0, 0xCB, 0x76, 0xCB, 0x96, 0xCB, 0xB6, 0xC3, 0xF7, 0xB3, 0xD7, 0x9B, 0x96, 0x93, 0xD7, 0x94, 0x39, 0x8C, 0x79, 0x74, 0x79, 0x64, 0x58, 0x6C, 0xFA, 0x64, 0xDA, 0x75, 0x5B, 0x85, 0xFE, 0x7D, 0xBC, 0x75, 0x5B, 0x85, 0x5B, 0x74, 0x99, 0x7C, 0x37, 0x83, 0xF6, 0x8B, 0xD6, 0x93, 0xD7, 0xA3, 0xF7, 0x9B, 0x75, 0x9B, 0x76, 0xA3, 0x76, 0x9B, 0x76, 0xA3, 0xB7, 0xAC, 0x5A, 0xB4, 0x9B, 0x6A, 0x74, 0x30, 0xAD, 0x01, 0x31, 0x0F, 0x80, 0x31, 0x10, 0x02, 0x31, 0x30, 0x05, 0x31, 0x50, 0x01, 0x31, 0x30, 0x07, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, + 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x31, 0x85, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x33, 0x09, 0x54, 0x11, 0xB7, 0x01, 0x11, 0xD8, 0x84, 0x11, 0xB7, 0x11, 0x55, 0x08, 0xF2, 0x19, 0x12, 0x21, 0x32, 0x01, 0x21, 0x31, 0x05, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x8B, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x11, 0x19, 0x32, 0x19, 0x53, 0x19, 0x75, 0x11, 0xB7, 0x11, 0xD7, 0x1A, 0x18, 0x19, 0xF8, 0x01, 0x11, 0xD7, 0x81, 0x11, 0x96, 0x09, 0x55, 0x01, 0x09, 0x33, 0x90, 0x09, 0x74, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xF7, 0x11, 0xF8, 0x11, 0xF7, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x75, 0x09, 0x54, 0x11, 0x54, 0x09, 0x34, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xF8, 0x11, 0xF9, 0x12, 0x19, 0x01, 0x11, 0xF8, 0x86, 0x11, 0xB6, 0x11, 0x74, 0x19, 0x53, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x8D, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x95, 0x11, 0xD7, + 0x11, 0xF8, 0x12, 0x18, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0x96, 0x09, 0x74, 0x01, 0x09, 0x54, 0x82, 0x09, 0x75, 0x11, 0xB7, 0x11, 0xF8, 0x02, 0x12, 0x19, 0x82, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x02, 0x11, 0x54, 0x83, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x12, 0x19, 0x89, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x53, 0x11, 0x33, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0xD6, 0x11, 0xF8, 0x01, 0x12, 0x18, 0x88, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x75, 0x09, 0x34, 0x09, 0x13, 0x09, 0x55, 0x11, 0xB6, 0x1A, 0x18, 0x01, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x01, 0x11, 0xD7, 0x8C, 0x11, 0x95, 0x11, 0x74, 0x09, 0x34, 0x09, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x19, 0xD7, 0x11, 0xD8, 0x19, 0xF8, 0x19, 0xD8, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0x75, 0x01, 0x19, 0x53, 0x80, 0x19, 0x32, 0x03, 0x19, 0x31, 0x81, 0x19, 0x32, 0x19, 0x53, 0x02, 0x11, 0x53, 0x02, 0x11, 0x54, 0x02, 0x11, 0x75, 0x8E, 0x09, 0x75, 0x11, 0x96, 0x09, 0x96, 0x11, 0xB6, 0x19, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x19, 0x10, 0x19, 0x30, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, + 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x01, 0x11, 0x33, 0x8B, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x1A, 0x18, 0x1A, 0x39, 0x1A, 0x19, 0x11, 0xF8, 0x09, 0x96, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, + 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x8B, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x54, 0x11, 0xB6, 0x11, 0xF8, 0x09, 0xD9, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x01, 0xDB, 0x01, 0x01, 0xFB, 0x01, 0x01, 0xDA, 0x84, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x33, 0x01, 0x19, 0x11, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x87, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x8D, 0x19, 0x31, 0x19, 0x51, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD6, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x11, + 0x54, 0x10, 0xF2, 0x19, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x08, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x88, 0x29, 0x10, 0x30, 0xF0, 0x30, 0xD0, 0x38, 0x90, 0x40, 0x30, 0x48, 0x11, 0x81, 0x16, 0xCA, 0x9E, 0xD2, 0x7E, 0x02, 0xD2, 0x3E, 0x89, 0xD2, 0x5E, 0xD2, 0x9E, 0xC2, 0xBD, 0xA2, 0x39, 0x68, 0xD3, 0x48, 0x30, 0x38, 0x4F, 0x38, 0x90, 0x30, 0xB0, 0x28, 0xF0, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x8C, 0x21, 0x11, 0x19, 0x12, 0x11, + 0x13, 0x22, 0x17, 0x22, 0x38, 0x19, 0xF8, 0x11, 0x95, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xF7, 0x1A, 0x38, 0x1A, 0x18, 0x11, 0x96, 0x09, 0x13, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x06, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x06, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x03, 0x31, 0x30, 0x80, 0x31, 0x50, 0x02, 0x31, 0x51, 0x01, 0x31, 0x50, 0x87, 0x31, 0x51, 0x31, 0x71, 0x31, 0x51, 0x31, 0x71, 0x39, 0x71, 0x39, 0x72, 0x39, 0x92, 0x41, 0x92, 0x02, 0x39, 0x72, 0x80, 0x41, 0x72, 0x02, 0x41, 0x93, 0x82, 0x49, 0x93, 0x49, 0xB3, 0x49, 0xB4, 0x01, 0x49, 0xB3, 0x81, 0x51, 0xD3, 0x51, 0xD4, 0x01, 0x59, 0xD3, 0x8D, 0x59, 0xB3, 0x59, 0x92, 0x61, 0x91, 0x59, 0x2F, 0x8A, 0xD4, 0xD4, 0xFC, 0xCC, 0xBB, 0xCC, 0x9A, 0xCC, 0x99, 0xCC, 0x79, 0xCC, 0x58, 0xCC, 0x38, 0xCC, 0x58, 0xD4, 0x38, 0x01, 0xD4, 0x37, 0x03, 0xD4, 0x17, 0x81, 0xD4, 0x37, 0xD4, 0x38, 0x01, 0xD4, 0x37, 0x01, 0xD4, 0x38, 0x03, 0xCC, 0x38, 0x83, 0xC4, 0x58, 0xC4, 0x37, 0xC4, 0x58, 0xC4, 0x38, 0x01, 0xC4, 0x58, 0x03, + 0xBC, 0x58, 0x81, 0xB4, 0x58, 0xB4, 0x57, 0x01, 0xAC, 0x57, 0x03, 0xA4, 0x37, 0x94, 0xAC, 0x37, 0xAC, 0x17, 0xAC, 0x57, 0xB4, 0x78, 0xBC, 0x99, 0xB4, 0x99, 0xBC, 0xFA, 0xC5, 0x1A, 0xB4, 0xB9, 0xB4, 0x78, 0xAC, 0x58, 0xB4, 0x78, 0xB4, 0x58, 0xB4, 0x17, 0xAB, 0xD6, 0xB3, 0xB6, 0xBB, 0xF7, 0xC3, 0xF7, 0xCB, 0xF7, 0xCB, 0xD7, 0xD3, 0xD7, 0x01, 0xD3, 0xB6, 0x01, 0xD3, 0x96, 0x84, 0xDB, 0x96, 0xD3, 0x76, 0xDB, 0x76, 0xD3, 0x56, 0xDB, 0x76, 0x01, 0xD3, 0x55, 0x9A, 0xD3, 0x35, 0xD3, 0x55, 0xD3, 0x35, 0xD3, 0x76, 0xD3, 0x96, 0xCB, 0x96, 0xC3, 0xD6, 0xBB, 0xD6, 0xBC, 0x58, 0xA4, 0x58, 0x8C, 0x17, 0x73, 0xD7, 0x6C, 0x18, 0x6C, 0x99, 0x6D, 0x1B, 0x6D, 0x5B, 0x7D, 0xBC, 0x7D, 0xBD, 0x75, 0x3B, 0x7D, 0x5B, 0x8D, 0x7C, 0x84, 0xD9, 0x7C, 0x57, 0x83, 0xD6, 0x83, 0x74, 0x93, 0x75, 0xA3, 0xF7, 0x02, 0xAB, 0xD7, 0x8A, 0xA3, 0x96, 0x9B, 0x76, 0xA3, 0xB7, 0xAC, 0x19, 0xB4, 0x9B, 0x83, 0x77, 0x28, 0xAD, 0x31, 0x0F, 0x39, 0x50, 0x31, 0x50, 0x39, 0x50, 0x02, 0x31, 0x50, 0x80, 0x31, 0x30, 0x01, 0x31, 0x50, 0x80, 0x31, 0x30, 0x01, 0x31, 0x51, 0x01, 0x31, 0x50, 0x02, 0x29, 0x30, 0x80, 0x31, 0x30, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x0C, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, + 0x30, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x89, 0x21, 0x10, 0x19, 0x10, 0x21, 0x31, 0x19, 0x32, 0x19, 0x52, 0x11, 0x33, 0x11, 0x74, 0x11, 0x96, 0x11, 0xD7, 0x09, 0xD8, 0x01, 0x11, 0xD8, 0x84, 0x11, 0xB6, 0x11, 0x74, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x04, 0x29, 0x10, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x54, 0x19, 0x95, 0x19, 0xF7, 0x03, 0x11, 0xF8, 0x87, 0x11, 0xD7, 0x11, 0x96, 0x09, 0x75, 0x09, 0x54, 0x09, 0x34, 0x11, 0x95, 0x11, 0xD6, 0x11, 0xD7, 0x01, 0x11, 0xD8, 0x83, 0x09, 0xD7, 0x11, 0xD7, 0x11, 0xB7, 0x09, 0x76, 0x02, 0x09, 0x54, 0x83, 0x09, 0x76, 0x09, 0x97, 0x11, 0xD8, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x84, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x75, 0x19, 0x53, 0x19, 0x52, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x30, 0x85, 0x21, 0x10, 0x19, 0x31, 0x19, 0x53, 0x11, 0x74, 0x11, + 0xB6, 0x11, 0xD7, 0x02, 0x11, 0xF8, 0x83, 0x09, 0xD8, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x75, 0x01, 0x09, 0x54, 0x82, 0x09, 0x96, 0x11, 0xD7, 0x11, 0xF9, 0x01, 0x12, 0x19, 0x83, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x02, 0x11, 0x74, 0x8E, 0x11, 0x95, 0x11, 0xB6, 0x11, 0xF8, 0x11, 0xF9, 0x12, 0x19, 0x11, 0xF9, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0x95, 0x11, 0x74, 0x11, 0x53, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x11, 0xD7, 0x02, 0x11, 0xF8, 0x88, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x96, 0x09, 0x54, 0x09, 0x14, 0x09, 0x75, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x11, 0xD8, 0x84, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x75, 0x01, 0x09, 0x34, 0x81, 0x11, 0xB6, 0x11, 0xD7, 0x02, 0x11, 0xD8, 0x86, 0x11, 0xB7, 0x11, 0xD8, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x53, 0x19, 0x53, 0x19, 0x32, 0x02, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x95, 0x11, 0xB6, 0x01, 0x11, 0xD7, 0x80, 0x11, 0xD8, 0x01, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x01, 0x11, 0xF8, 0x81, 0x1A, 0x19, 0x11, 0xF8, 0x01, 0x1A, 0x18, 0x86, 0x19, 0xD7, 0x11, 0x95, 0x19, 0x74, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x89, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, + 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x21, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x21, 0x31, 0x01, 0x19, 0x32, 0x8C, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x11, 0xD7, 0x1A, 0x18, 0x1A, 0x39, 0x1A, 0x18, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x74, 0x11, 0x32, 0x11, 0x12, 0x02, 0x19, 0x31, 0x05, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x88, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, + 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x85, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x11, 0x96, 0x09, 0xB8, 0x09, 0xD9, 0x03, 0x01, 0xDA, 0x82, 0x01, 0xDB, 0x01, 0xFB, 0x01, 0xDB, 0x01, 0x01, 0xDA, 0x87, 0x09, 0xB9, 0x11, 0xD9, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8D, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x53, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x21, 0x51, 0x21, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, + 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x05, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x98, 0x30, 0xF0, 0x38, 0xB0, 0x40, 0x50, 0x50, 0x31, 0x99, 0xF9, 0xCA, 0xBE, 0xD2, 0x7E, 0xD2, 0x3E, 0xDA, 0x1E, 0xDA, 0x3E, 0xDA, 0x1E, 0xDA, 0x3E, 0xDA, 0x5E, 0xD2, 0x9D, 0xCA, 0xBD, 0xC2, 0xFD, 0xA2, 0x5A, 0x48, 0x30, 0x38, 0x2F, 0x38, 0x90, 0x30, 0xD0, 0x28, 0xF0, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x04, 0x29, 0x10, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x8A, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x89, 0x21, 0x31, 0x19, 0x12, 0x11, 0x13, 0x22, 0x17, 0x1A, 0x38, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x11, 0x09, 0x33, 0x19, 0xF7, 0x1A, 0x38, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x07, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x83, 0x29, 0x2F, 0x29, + 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x0D, 0x29, 0x30, 0x81, 0x31, 0x30, 0x29, 0x30, 0x03, 0x31, 0x30, 0x08, 0x31, 0x51, 0x82, 0x39, 0x51, 0x39, 0x71, 0x39, 0x72, 0x01, 0x41, 0x92, 0x01, 0x41, 0x72, 0x82, 0x39, 0x72, 0x41, 0x72, 0x41, 0x93, 0x02, 0x49, 0x93, 0x01, 0x49, 0xD4, 0x80, 0x49, 0xB3, 0x01, 0x51, 0xD3, 0x8A, 0x59, 0xD3, 0x59, 0xB3, 0x59, 0xB2, 0x59, 0x92, 0x59, 0x71, 0x59, 0x0F, 0x9B, 0x16, 0xDC, 0xDC, 0xD4, 0xBA, 0xD4, 0x9A, 0xD4, 0x79, 0x02, 0xD4, 0x58, 0x01, 0xD4, 0x37, 0x81, 0xD4, 0x17, 0xD4, 0x37, 0x0D, 0xD4, 0x17, 0x80, 0xD4, 0x37, 0x03, 0xCC, 0x17, 0x80, 0xCC, 0x37, 0x04, 0xCC, 0x17, 0x81, 0xC4, 0x37, 0xC4, 0x17, 0x01, 0xC4, 0x37, 0x01, 0xBC, 0x37, 0x88, 0xC4, 0x37, 0xBC, 0x37, 0xBC, 0x17, 0xBB, 0xF7, 0xBC, 0x17, 0xB3, 0xD6, 0xB3, 0xF6, 0xB4, 0x17, 0xB4, 0x58, 0x01, 0xB4, 0x99, 0x87, 0xB4, 0xBA, 0xAC, 0x78, 0xBC, 0xDA, 0xBC, 0xD9, 0xC4, 0xDA, 0xBC, 0x78, 0xB4, 0x38, 0xB3, 0xF7, 0x01, 0xB3, 0xB6, 0x83, 0xBB, 0xB6, 0xC3, 0xB6, 0xCB, 0xD6, 0xCB, 0xB7, 0x01, 0xD3, 0xB7, 0x81, 0xD3, 0x96, 0xDB, 0x97, 0x01, 0xD3, 0x76, 0x80, 0xDB, 0x56, 0x01, 0xD3, 0x56, 0x01, 0xD3, 0x55, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x76, 0xA0, 0xCB, 0xB7, 0xCB, 0xF7, 0xBC, 0x18, 0xB4, 0x99, 0xA4, 0xDA, 0x8C, 0xDA, 0x74, 0xBA, 0x64, 0xBA, 0x5C, 0xB9, 0x6D, 0x7C, 0x6D, 0xBD, 0x7E, 0x1E, 0x85, 0xFE, 0x6C, 0xDA, 0x64, 0x17, + 0x7C, 0x78, 0x84, 0x17, 0x8B, 0xF6, 0x8B, 0x54, 0x9B, 0x95, 0xA3, 0x95, 0xB3, 0xD7, 0xB3, 0xF7, 0xAB, 0x96, 0xAB, 0xB7, 0xA3, 0x97, 0x9B, 0xB7, 0xA4, 0x3A, 0xAC, 0x9B, 0x9C, 0x5B, 0x39, 0x70, 0x29, 0x0F, 0x31, 0x30, 0x01, 0x31, 0x50, 0x88, 0x39, 0x71, 0x31, 0x51, 0x39, 0x71, 0x31, 0x51, 0x31, 0x50, 0x31, 0x51, 0x31, 0x50, 0x31, 0x51, 0x31, 0x30, 0x01, 0x31, 0x51, 0x01, 0x31, 0x50, 0x04, 0x31, 0x30, 0x81, 0x29, 0x10, 0x31, 0x30, 0x0E, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x89, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x19, 0x52, 0x11, 0x53, 0x11, 0x75, 0x11, 0x96, 0x09, 0xB7, 0x02, 0x09, 0xD8, 0x87, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0xB6, 0x19, 0x95, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x51, 0x06, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x86, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, + 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x84, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x75, 0x11, 0xD7, 0x01, 0x11, 0xD8, 0x02, 0x11, 0xF8, 0x86, 0x09, 0xB7, 0x09, 0x75, 0x09, 0x54, 0x01, 0x34, 0x09, 0x95, 0x09, 0xB6, 0x09, 0xD7, 0x01, 0x11, 0xD8, 0x92, 0x09, 0xD8, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0x96, 0x09, 0x35, 0x09, 0x34, 0x09, 0x54, 0x09, 0x76, 0x09, 0x97, 0x11, 0xD8, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xD7, 0x11, 0x95, 0x11, 0x53, 0x19, 0x32, 0x21, 0x31, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x09, 0xF9, 0x8E, 0x11, 0xF8, 0x09, 0xD7, 0x09, 0x96, 0x09, 0x75, 0x09, 0x54, 0x01, 0x34, 0x09, 0x76, 0x09, 0xD7, 0x11, 0xF9, 0x12, 0x19, 0x09, 0xF9, 0x11, 0xF9, 0x11, 0xD9, 0x11, 0xB7, 0x11, 0x75, 0x02, 0x11, 0x54, 0x83, 0x11, 0x75, 0x09, 0xB6, 0x09, 0xB8, 0x11, 0xF9, 0x01, 0x09, 0xF9, 0x83, 0x11, 0xF9, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x74, 0x01, 0x11, 0x33, 0x82, 0x11, 0x74, 0x09, 0x75, 0x11, 0xB7, 0x02, 0x11, 0xF8, 0x83, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x76, 0x01, 0x09, 0x34, 0x82, 0x09, 0x76, 0x09, 0xB7, 0x11, 0xF9, 0x01, 0x09, 0xD9, 0x80, 0x09, 0xD8, 0x01, 0x11, 0xD8, 0x85, 0x11, 0xB6, 0x09, 0x54, 0x01, 0x13, 0x09, 0x34, 0x09, 0x96, 0x11, 0xB7, 0x01, 0x11, 0xD8, 0x86, 0x09, 0xB8, 0x11, + 0xD8, 0x11, 0xB8, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x54, 0x19, 0x53, 0x03, 0x19, 0x32, 0x86, 0x11, 0x32, 0x11, 0x54, 0x11, 0x95, 0x11, 0xD7, 0x11, 0xF8, 0x12, 0x19, 0x09, 0xF8, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x80, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x8A, 0x09, 0xD8, 0x11, 0xF9, 0x11, 0xD8, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, + 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x19, 0x11, 0x01, 0x19, 0x32, 0x8C, 0x11, 0x33, 0x19, 0x74, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x1A, 0x18, 0x1A, 0x19, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x31, 0x84, 0x21, 0x31, 0x21, 0x30, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x07, 0x29, 0x0F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x86, 0x11, 0x33, 0x11, 0x54, 0x11, 0xB7, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xFA, 0x01, 0xB9, 0x03, 0x01, + 0xDA, 0x01, 0x01, 0xBA, 0x91, 0x01, 0xB9, 0x09, 0xD9, 0x11, 0xF9, 0x19, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x19, 0x31, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x51, 0x01, 0x19, 0x52, 0x8A, 0x19, 0x73, 0x11, 0x74, 0x11, 0x75, 0x19, 0xD6, 0x19, 0xF7, 0x21, 0xF7, 0x21, 0xD6, 0x11, 0x54, 0x11, 0x12, 0x10, 0xF2, 0x19, 0x11, 0x01, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x30, 0x06, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x8C, 0x29, 0x0F, 0x29, 0x10, 0x28, 0xD0, 0x30, 0xB0, 0x38, 0x70, 0x58, 0x92, 0xB2, 0xDC, 0xD3, 0x1F, 0xD2, 0x7E, 0xDA, 0x3E, 0xE2, 0x3F, 0xE2, 0x1E, 0xE1, 0xFE, 0x01, + 0xE2, 0x1F, 0x8B, 0xE2, 0x3E, 0xDA, 0x5E, 0xD2, 0x7D, 0xCA, 0x9D, 0xBA, 0x9C, 0xBB, 0x1D, 0x71, 0x34, 0x38, 0x2F, 0x38, 0x90, 0x30, 0xD0, 0x28, 0xEF, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x88, 0x19, 0x32, 0x11, 0x13, 0x22, 0x18, 0x1A, 0x38, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x30, 0x90, 0x19, 0x10, 0x19, 0x32, 0x11, 0x33, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x96, 0x09, 0x12, 0x19, 0x32, 0x19, 0x11, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x30, 0x05, 0x29, 0x10, 0x06, 0x29, 0x30, 0x01, 0x31, 0x30, 0x80, 0x29, + 0x30, 0x02, 0x31, 0x30, 0x04, 0x31, 0x51, 0x82, 0x39, 0x71, 0x31, 0x51, 0x31, 0x71, 0x03, 0x39, 0x71, 0x80, 0x39, 0x51, 0x01, 0x39, 0x71, 0x81, 0x41, 0x72, 0x41, 0x92, 0x01, 0x41, 0xB3, 0x80, 0x41, 0x93, 0x02, 0x49, 0xB3, 0x81, 0x49, 0xD4, 0x51, 0xD4, 0x02, 0x51, 0xD3, 0x8F, 0x51, 0xB2, 0x59, 0xB2, 0x59, 0x91, 0x59, 0x50, 0x59, 0x0F, 0x9A, 0xF5, 0xDC, 0xDC, 0xD4, 0x7A, 0xD4, 0x79, 0xDC, 0x99, 0xD4, 0x58, 0xD4, 0x37, 0xDC, 0x37, 0xD4, 0x37, 0xD4, 0x17, 0xDC, 0x37, 0x05, 0xDC, 0x17, 0x80, 0xD4, 0x16, 0x01, 0xDC, 0x17, 0x01, 0xD4, 0x17, 0x82, 0xDC, 0x17, 0xD3, 0xF7, 0xDC, 0x17, 0x01, 0xD4, 0x17, 0x80, 0xD4, 0x16, 0x01, 0xD4, 0x17, 0x84, 0xD3, 0xF6, 0xD3, 0xF7, 0xD4, 0x17, 0xD3, 0xF7, 0xD4, 0x17, 0x04, 0xD3, 0xF7, 0x01, 0xCB, 0xF6, 0x07, 0xCB, 0xF7, 0x95, 0xC3, 0xF7, 0xC4, 0x37, 0xB3, 0xF6, 0xA3, 0xB6, 0x9B, 0x96, 0xAC, 0x18, 0xAC, 0x37, 0xB4, 0x78, 0xC4, 0xFA, 0xBC, 0xD9, 0xB4, 0x98, 0xB4, 0x78, 0xBC, 0x98, 0xBC, 0x78, 0xBC, 0x37, 0xBB, 0xD6, 0xBB, 0xB6, 0xBB, 0x95, 0xBB, 0x96, 0xC3, 0x96, 0xCB, 0xB7, 0xCB, 0x96, 0x01, 0xD3, 0x96, 0x81, 0xDB, 0x97, 0xD3, 0x76, 0x02, 0xDB, 0x76, 0xA4, 0xDB, 0x96, 0xD3, 0x75, 0xD3, 0x76, 0xCB, 0x76, 0xC3, 0x55, 0xBB, 0x76, 0xAB, 0xB6, 0xAC, 0x79, 0xA4, 0xFA, 0x8D, 0x1B, 0x85, 0x7C, 0x7D, 0xDE, 0x6D, 0xBD, 0x55, 0x1B, 0x4C, 0xDA, 0x6D, 0xBD, 0x75, 0x5C, 0x5B, 0xD7, 0x6B, 0xD7, 0x83, 0xD7, 0x8B, 0xD6, 0x93, 0x96, 0xAB, 0xD6, 0xB3, 0xF7, 0xB3, 0xD7, 0xAB, 0x96, 0xA3, 0x35, 0xA3, 0x56, 0x9B, + 0x76, 0x9B, 0xD8, 0x9C, 0x5A, 0xA4, 0xBC, 0xA4, 0xDD, 0x5A, 0x95, 0x29, 0x0F, 0x29, 0x30, 0x31, 0x51, 0x04, 0x39, 0x71, 0x80, 0x31, 0x71, 0x01, 0x31, 0x50, 0x05, 0x31, 0x51, 0x02, 0x31, 0x30, 0x80, 0x31, 0x50, 0x03, 0x31, 0x30, 0x12, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8A, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x31, 0x21, 0x30, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x09, 0x75, 0x09, 0xB7, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x86, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x54, 0x19, 0x52, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x50, 0x04, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x85, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x87, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, + 0x19, 0x32, 0x11, 0x33, 0x11, 0x95, 0x11, 0xD8, 0x11, 0xF9, 0x01, 0x09, 0xF9, 0x83, 0x09, 0xF8, 0x09, 0xD8, 0x09, 0xD7, 0x01, 0x75, 0x01, 0x01, 0x54, 0x81, 0x09, 0x96, 0x11, 0xB7, 0x01, 0x09, 0xD8, 0x86, 0x09, 0xF8, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xB7, 0x09, 0x76, 0x09, 0x55, 0x09, 0x34, 0x01, 0x09, 0x55, 0x82, 0x09, 0x97, 0x11, 0xD8, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x8C, 0x09, 0xD8, 0x09, 0xD7, 0x11, 0x75, 0x11, 0x54, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD8, 0x11, 0xF9, 0x01, 0x09, 0xF9, 0x82, 0x11, 0xF9, 0x09, 0xD8, 0x09, 0x96, 0x02, 0x09, 0x55, 0x89, 0x09, 0x76, 0x09, 0xB7, 0x09, 0xF9, 0x0A, 0x1A, 0x09, 0xFA, 0x09, 0xF9, 0x09, 0xD9, 0x11, 0xB8, 0x11, 0x96, 0x11, 0x54, 0x01, 0x09, 0x54, 0x82, 0x09, 0x75, 0x09, 0x97, 0x09, 0xD8, 0x02, 0x09, 0xF9, 0x83, 0x09, 0xD9, 0x09, 0xB7, 0x11, 0x96, 0x11, 0x74, 0x01, 0x09, 0x33, 0x83, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x11, 0xF9, 0x87, 0x11, 0xD9, 0x11, 0xB8, 0x11, 0xB7, 0x11, 0x96, 0x09, 0x14, 0x09, 0x34, 0x09, 0x76, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x80, 0x09, 0xD9, 0x01, 0x09, 0xD8, 0x90, 0x11, 0xD8, 0x11, 0xB6, 0x09, 0x55, 0x09, 0x13, 0x09, 0x14, 0x11, 0x97, 0x11, 0xD8, 0x11, 0xD9, 0x09, 0xD9, 0x09, 0xB8, 0x09, 0xD9, 0x11, 0xD9, 0x11, 0xD8, 0x11, 0x96, 0x11, 0x54, 0x11, 0x12, 0x19, 0x12, 0x01, 0x19, + 0x31, 0x8B, 0x19, 0x32, 0x19, 0x53, 0x11, 0x95, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xB8, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x8A, 0x01, 0xB9, 0x09, 0xD9, 0x11, 0xD9, 0x11, 0xB7, 0x09, 0x55, 0x09, 0x13, 0x10, 0xF1, 0x19, 0x11, 0x19, 0x31, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x06, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, + 0x29, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x85, 0x19, 0x33, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD7, 0x19, 0xF8, 0x01, 0x1A, 0x19, 0x85, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x11, 0x02, 0x21, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x09, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x75, 0x09, 0x96, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0xD9, 0x04, 0x01, 0xDA, 0x81, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0x09, 0xD9, 0x88, 0x19, 0xF8, 0x19, 0xF7, 0x19, 0x95, 0x11, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, + 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x50, 0x21, 0x30, 0x21, 0x51, 0x01, 0x19, 0x52, 0x8C, 0x19, 0x53, 0x11, 0x53, 0x11, 0x54, 0x19, 0xD6, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xD7, 0x11, 0x34, 0x08, 0xF2, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x51, 0x21, 0x31, 0x0B, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x31, 0x01, 0x19, 0x31, 0x02, 0x19, 0x32, 0x03, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x88, 0x29, 0x10, 0x28, 0xF0, 0x30, 0xD0, 0x30, 0x70, 0x48, 0x71, 0xAA, 0x7A, 0xD3, 0x1E, 0xD2, 0xBE, 0xDA, 0x3D, 0x01, 0xE2, 0x1E, 0x8F, 0xE1, 0xFE, 0xE1, 0xFF, 0xE1, 0xFE, 0xEA, 0x1F, 0xE2, 0x1E, 0xE2, 0x3E, 0xDA, 0x5E, 0xDA, 0x9E, 0xCA, 0x9D, 0xC2, 0xBC, 0xC3, 0x1D, 0x60, 0xD3, 0x38, 0x2F, 0x30, 0xB0, 0x28, 0xCF, + 0x28, 0xF0, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x09, 0x13, 0x1A, 0x17, 0x1A, 0x39, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x91, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x09, 0x12, 0x19, 0xD7, 0x22, 0x39, 0x19, 0xF8, 0x11, 0x95, 0x09, 0x12, 0x19, 0x32, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x86, 0x29, 0x2F, 0x29, 0x50, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x01, 0x31, 0x30, 0x82, 0x31, 0x50, 0x31, 0x30, 0x31, 0x50, 0x06, 0x31, 0x51, 0x82, + 0x39, 0x71, 0x31, 0x51, 0x39, 0x51, 0x01, 0x39, 0x71, 0x80, 0x39, 0x72, 0x01, 0x39, 0x71, 0x82, 0x39, 0x72, 0x41, 0x72, 0x41, 0xB3, 0x01, 0x49, 0xB3, 0x84, 0x41, 0x93, 0x49, 0x93, 0x49, 0xB3, 0x51, 0xD4, 0x49, 0xB3, 0x01, 0x51, 0xD3, 0x88, 0x51, 0xB3, 0x51, 0xB2, 0x59, 0xB2, 0x59, 0x91, 0x61, 0x91, 0x61, 0x4F, 0x9A, 0xF5, 0xDC, 0xBB, 0xDC, 0x7A, 0x01, 0xDC, 0x79, 0x82, 0xD4, 0x38, 0xD4, 0x37, 0xDC, 0x37, 0x05, 0xDC, 0x17, 0x80, 0xDB, 0xF6, 0x01, 0xDC, 0x17, 0x02, 0xDC, 0x16, 0x83, 0xDB, 0xF6, 0xDC, 0x17, 0xD3, 0xF6, 0xDB, 0xF7, 0x01, 0xDC, 0x17, 0x81, 0xD3, 0xF6, 0xDC, 0x17, 0x05, 0xD3, 0xF6, 0x01, 0xDB, 0xF7, 0x0C, 0xD3, 0xD6, 0x01, 0xD3, 0xF6, 0x01, 0xCB, 0xF7, 0x89, 0xC3, 0xF7, 0xC4, 0x17, 0xBC, 0x17, 0xB4, 0x18, 0xAB, 0xD7, 0xAB, 0xF7, 0xB4, 0x37, 0xBC, 0x58, 0xBC, 0x78, 0xB4, 0x58, 0x01, 0xC4, 0x99, 0x88, 0xBC, 0x78, 0xC4, 0x78, 0xBC, 0x38, 0xC4, 0x38, 0xBB, 0xD7, 0xB3, 0x96, 0xBB, 0x96, 0xBB, 0x75, 0xC3, 0x96, 0x01, 0xCB, 0x76, 0x81, 0xD3, 0x96, 0xDB, 0xB7, 0x02, 0xDB, 0x96, 0x01, 0xD3, 0x76, 0xA0, 0xD3, 0x96, 0xCB, 0x76, 0xBB, 0x96, 0xB3, 0xB7, 0xA3, 0xF7, 0x9C, 0xDA, 0x95, 0x5C, 0x8D, 0xBD, 0x75, 0x7C, 0x5D, 0x5C, 0x55, 0x1B, 0x44, 0x9A, 0x4C, 0x99, 0x5C, 0x99, 0x74, 0x79, 0x84, 0x38, 0x8B, 0xB6, 0x9B, 0xB6, 0xA3, 0xB6, 0xB3, 0xF7, 0xBC, 0x18, 0xB3, 0xD7, 0xAB, 0x96, 0xA3, 0x96, 0x93, 0x76, 0x9B, 0xD8, 0x94, 0x5A, 0x94, 0x7B, 0x9D, 0x1E, 0x5B, 0x37, 0x19, 0x0F, 0x29, 0x50, 0x31, 0x71, 0x04, 0x39, 0x71, 0x83, + 0x31, 0x51, 0x31, 0x71, 0x31, 0x51, 0x31, 0x71, 0x03, 0x31, 0x51, 0x81, 0x31, 0x71, 0x31, 0x51, 0x02, 0x31, 0x30, 0x80, 0x31, 0x50, 0x02, 0x31, 0x30, 0x82, 0x31, 0x50, 0x29, 0x30, 0x31, 0x50, 0x08, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x98, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x54, 0x11, 0x95, 0x09, 0x96, 0x11, 0xF8, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xB7, 0x11, 0xB7, 0x11, 0x95, 0x19, 0x94, 0x11, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, + 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x33, 0x19, 0x54, 0x11, 0x96, 0x11, 0xD8, 0x11, 0xF9, 0x09, 0xF9, 0x0A, 0x19, 0x01, 0x09, 0xD8, 0x81, 0x09, 0xB7, 0x01, 0x76, 0x01, 0x01, 0x34, 0x81, 0x09, 0x96, 0x11, 0xD7, 0x02, 0x09, 0xD8, 0x83, 0x09, 0xF8, 0x09, 0xD8, 0x09, 0xB7, 0x09, 0x97, 0x02, 0x09, 0x55, 0x82, 0x09, 0x76, 0x09, 0x97, 0x09, 0xD8, 0x02, 0x09, 0xD9, 0x87, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0x76, 0x11, 0x54, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x11, 0x19, 0x32, 0x19, 0x53, 0x19, 0x75, 0x11, 0x96, 0x11, 0xD8, 0x02, 0x09, 0xF9, 0x82, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0x96, 0x01, 0x09, 0x55, 0x89, 0x09, 0x75, 0x09, 0x96, 0x09, 0xB7, 0x09, 0xF9, 0x09, 0xFA, 0x09, 0xF9, 0x09, 0xFA, 0x11, 0xD9, 0x09, 0xB8, 0x11, 0x96, 0x02, 0x09, 0x54, 0x89, 0x09, 0x76, 0x09, 0xB7, 0x09, 0xD9, 0x09, 0xF9, 0x0A, 0x1A, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xB7, 0x11, 0x96, 0x11, 0x74, 0x01, 0x09, 0x33, 0x95, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xF9, 0x12, 0x19, 0x11, 0xF9, 0x09, 0xD8, 0x09, 0xB8, 0x11, 0x97, 0x11, 0x76, 0x09, 0x34, 0x01, 0x14, 0x09, 0x76, 0x09, 0xD8, 0x0A, 0x19, 0x01, 0xF9, 0x01, 0xD9, 0x09, 0xD8, 0x09, 0xB8, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x01, 0x09, 0x14, 0x81, 0x09, 0x97, 0x11, 0xD8, 0x02, 0x09, 0xD9, 0x87, 0x09, 0xB9, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x01, 0x19, 0x32, 0x85, 0x19, + 0x54, 0x11, 0x96, 0x11, 0xD8, 0x09, 0xB8, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x8E, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xDA, 0x09, 0xDA, 0x09, 0xB9, 0x11, 0x97, 0x11, 0x55, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x50, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x06, 0x29, 0x30, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x0A, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x08, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x51, 0x19, + 0x31, 0x01, 0x19, 0x32, 0x84, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0xB6, 0x11, 0xD7, 0x01, 0x11, 0xF8, 0x83, 0x1A, 0x19, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x01, 0x11, 0x32, 0x82, 0x19, 0x11, 0x21, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x13, 0x11, 0x55, 0x11, 0x97, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0xD9, 0x05, 0x01, 0xDA, 0x8A, 0x09, 0xFA, 0x09, 0xD9, 0x11, 0xF8, 0x19, 0xF8, 0x19, 0xB6, 0x19, 0x54, 0x19, 0x12, + 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x07, 0x21, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x19, 0xD7, 0x01, 0x22, 0x18, 0x86, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x13, 0x10, 0xF2, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x0B, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x11, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x11, 0x82, 0x19, 0x11, 0x21, 0x32, 0x19, 0x32, 0x01, 0x19, 0x33, 0x82, 0x11, 0x33, 0x11, 0x53, 0x11, 0x33, 0x02, 0x11, 0x32, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x05, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x89, 0x30, 0xD1, 0x38, 0x50, 0x79, 0x76, 0xCA, 0xFD, 0xD2, 0xBE, 0xDA, 0x5D, 0xE2, 0x5E, 0xE2, 0x1E, 0xE9, 0xFF, 0xEA, 0x1F, 0x02, 0xE9, 0xFF, 0x80, 0xE9, 0xFE, 0x01, 0xE2, 0x3E, 0x8A, 0xDA, 0x5E, 0xDA, 0x7D, 0xD2, 0xBD, 0xC2, 0xBC, 0xB2, 0xDC, 0x50, 0x71, 0x38, 0x6F, 0x30, 0xB0, 0x28, 0xCF, 0x28, 0xEF, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x05, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, + 0x21, 0x10, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x12, 0x11, 0x13, 0x22, 0x18, 0x22, 0x59, 0x19, 0xF8, 0x11, 0x75, 0x11, 0x33, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x11, 0x12, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x75, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x05, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x0A, 0x29, 0x30, 0x80, 0x29, 0x10, 0x08, 0x29, 0x30, 0x01, 0x31, 0x30, 0x80, 0x31, 0x50, 0x07, 0x31, 0x51, 0x81, 0x39, 0x71, 0x31, 0x51, 0x02, 0x39, 0x71, 0x82, 0x39, 0x72, 0x39, 0x71, 0x39, 0x72, 0x02, 0x41, 0x92, 0x01, 0x41, 0x93, 0x02, 0x49, 0xB3, 0x80, 0x49, 0x93, 0x01, 0x49, 0xB3, 0x02, 0x51, 0xB3, 0x01, 0x59, 0xB2, 0x87, 0x61, 0x91, 0x61, 0x4F, 0xAB, 0x36, 0xDC, 0xBB, 0xDC, 0x7A, 0xDC, 0x79, 0xDC, 0x58, 0xDC, 0x38, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x17, 0x01, 0xDC, 0x16, 0x03, 0xDC, 0x17, 0x01, 0xDB, 0xF6, 0x81, 0xDC, 0x16, 0xDB, 0xF6, 0x02, 0xDC, 0x16, 0x04, 0xDB, 0xF6, 0x01, 0xD3, 0xD6, 0x04, 0xDB, 0xF6, 0x82, 0xDB, 0xD6, 0xDB, 0xF7, 0xDB, + 0xD6, 0x01, 0xD3, 0xD6, 0x02, 0xDB, 0xD6, 0x84, 0xD3, 0xD6, 0xDB, 0xD6, 0xD3, 0xD6, 0xDB, 0xF6, 0xD3, 0xD6, 0x01, 0xDB, 0xD6, 0x01, 0xD3, 0xD6, 0x84, 0xD3, 0xB6, 0xCB, 0xD6, 0xCB, 0xF6, 0xCB, 0xF7, 0xCB, 0xD7, 0x02, 0xC3, 0xD7, 0x83, 0xC3, 0xF7, 0xBB, 0xB6, 0xB3, 0x96, 0xB3, 0xD6, 0x01, 0xC4, 0x79, 0x8C, 0xBC, 0x78, 0xBC, 0x58, 0xB4, 0x37, 0xB4, 0x38, 0xBC, 0x58, 0xBC, 0x38, 0xBC, 0x17, 0xBB, 0xB6, 0xBB, 0x96, 0xBB, 0x76, 0xCB, 0x96, 0xCB, 0x76, 0xD3, 0x96, 0x04, 0xD3, 0x76, 0xA0, 0xD3, 0x97, 0xCB, 0x97, 0xC3, 0x97, 0xB3, 0x96, 0xA3, 0xB7, 0x93, 0xD7, 0x94, 0x9A, 0x85, 0x1B, 0x85, 0xBE, 0x6D, 0x7D, 0x5D, 0x3C, 0x5D, 0x1C, 0x5C, 0xFB, 0x6C, 0xFB, 0x74, 0x79, 0x73, 0xF7, 0x93, 0xF7, 0xA4, 0x17, 0xAB, 0xF7, 0xAB, 0xD6, 0xAB, 0xB6, 0xA3, 0x96, 0xA3, 0xB7, 0x9B, 0xF8, 0x8B, 0xF8, 0x8C, 0x39, 0x94, 0xFC, 0x95, 0x3E, 0x6B, 0xD9, 0x19, 0x4F, 0x19, 0x2F, 0x31, 0xB1, 0x39, 0xB2, 0x01, 0x39, 0x91, 0x05, 0x39, 0x71, 0x01, 0x31, 0x51, 0x80, 0x31, 0x71, 0x06, 0x31, 0x51, 0x82, 0x31, 0x30, 0x31, 0x50, 0x31, 0x30, 0x04, 0x29, 0x30, 0x80, 0x29, 0x50, 0x05, 0x29, 0x30, 0x01, 0x29, 0x10, 0x06, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x31, 0x89, 0x19, 0x11, 0x11, + 0x11, 0x19, 0x73, 0x19, 0xB5, 0x11, 0x97, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0xFA, 0x01, 0x01, 0xB9, 0x86, 0x09, 0xF9, 0x09, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x19, 0xB5, 0x11, 0x32, 0x10, 0xF1, 0x01, 0x21, 0x51, 0x82, 0x29, 0x51, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x84, 0x19, 0x11, 0x19, 0x32, 0x19, 0x54, 0x11, 0x96, 0x11, 0xF8, 0x03, 0x09, 0xF9, 0x82, 0x09, 0xD8, 0x09, 0x97, 0x01, 0x76, 0x01, 0x01, 0x35, 0x82, 0x09, 0x76, 0x09, 0xB7, 0x09, 0xF8, 0x02, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x80, 0x09, 0x97, 0x02, 0x09, 0x55, 0x82, 0x09, 0x76, 0x09, 0x97, 0x09, 0xB8, 0x02, 0x09, 0xD9, 0x87, 0x09, 0xF9, 0x09, 0xB8, 0x09, 0x76, 0x11, 0x34, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x89, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD8, 0x11, + 0xF9, 0x01, 0x09, 0xF9, 0x83, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xB7, 0x09, 0x75, 0x01, 0x09, 0x55, 0x82, 0x09, 0x76, 0x09, 0xB7, 0x09, 0xF9, 0x02, 0x09, 0xFA, 0x82, 0x09, 0xF9, 0x09, 0xB8, 0x11, 0x96, 0x01, 0x09, 0x54, 0xA8, 0x09, 0x55, 0x09, 0x75, 0x09, 0x97, 0x09, 0xD8, 0x09, 0xF9, 0x0A, 0x1A, 0x12, 0x1A, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0x96, 0x11, 0x75, 0x09, 0x13, 0x09, 0x33, 0x09, 0x74, 0x09, 0x96, 0x11, 0xD8, 0x09, 0xF9, 0x11, 0xF9, 0x12, 0x19, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0xB7, 0x11, 0x96, 0x09, 0x34, 0x01, 0x14, 0x01, 0x76, 0x09, 0xD8, 0x0A, 0x19, 0x09, 0xF9, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xB8, 0x09, 0xB7, 0x11, 0x96, 0x09, 0x55, 0x09, 0x14, 0x09, 0x34, 0x09, 0xB7, 0x09, 0xB8, 0x09, 0xD9, 0x09, 0xFA, 0x02, 0x09, 0xD9, 0x84, 0x09, 0xB8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x11, 0x85, 0x19, 0x32, 0x19, 0x74, 0x11, 0xB6, 0x11, 0xF8, 0x09, 0xF9, 0x09, 0xFA, 0x02, 0x01, 0xB9, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x01, 0x09, 0xFA, 0x87, 0x09, 0xB9, 0x11, 0x97, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x06, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, + 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x02, 0x19, 0x31, 0x8E, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF8, 0x1A, 0x19, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x74, 0x11, 0x53, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x05, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, + 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x34, 0x11, 0x75, 0x09, 0x97, 0x09, 0xD8, 0x09, 0xB9, 0x09, 0xD9, 0x09, 0xDA, 0x03, 0x01, 0xD9, 0x88, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xF8, 0x19, 0xF8, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x32, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x08, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x19, 0x11, 0x8A, 0x19, 0x53, 0x11, 0x54, 0x19, 0x95, 0x19, 0xD7, 0x21, 0xF8, 0x22, 0x18, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x13, 0x11, 0x12, 0x11, 0x11, 0x01, 0x21, 0x31, 0x80, 0x19, 0x10, 0x08, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x21, 0x11, 0x84, 0x19, 0x11, 0x19, 0x32, 0x19, 0x13, 0x11, 0x33, 0x11, 0x34, 0x01, 0x11, + 0x54, 0x86, 0x11, 0x74, 0x11, 0x75, 0x11, 0x74, 0x11, 0x94, 0x19, 0x94, 0x19, 0x73, 0x19, 0x52, 0x01, 0x19, 0x11, 0x81, 0x21, 0x11, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x87, 0x28, 0xF0, 0x30, 0xB0, 0x40, 0x30, 0xAA, 0x7A, 0xD2, 0xDD, 0xDA, 0x9E, 0xE2, 0x5E, 0xE2, 0x3E, 0x01, 0xEA, 0x1F, 0x02, 0xF1, 0xFF, 0x01, 0xE9, 0xFF, 0x80, 0xEA, 0x1F, 0x01, 0xE2, 0x3E, 0x8A, 0xE2, 0x5E, 0xDA, 0x7E, 0xD2, 0x9D, 0xCB, 0x1D, 0xA2, 0x59, 0x38, 0x0F, 0x30, 0x90, 0x28, 0xAF, 0x28, 0xF0, 0x29, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x88, 0x19, 0x11, 0x19, 0x32, 0x09, 0x13, 0x22, 0x18, 0x1A, 0x39, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x33, 0x19, 0x32, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8A, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x12, 0x19, 0x12, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, + 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x09, 0x29, 0x30, 0x80, 0x29, 0x10, 0x0E, 0x29, 0x30, 0x80, 0x31, 0x50, 0x02, 0x31, 0x30, 0x81, 0x31, 0x51, 0x31, 0x31, 0x04, 0x31, 0x51, 0x80, 0x31, 0x71, 0x01, 0x31, 0x51, 0x01, 0x39, 0x71, 0x01, 0x39, 0x72, 0x81, 0x39, 0x71, 0x39, 0x72, 0x02, 0x41, 0x92, 0x03, 0x41, 0x93, 0x02, 0x49, 0xB3, 0x8B, 0x49, 0x93, 0x49, 0xB3, 0x51, 0xB3, 0x51, 0xB2, 0x59, 0xB2, 0x61, 0xB2, 0x61, 0xB1, 0x61, 0x4F, 0xAB, 0x56, 0xDC, 0xBB, 0xDC, 0x9A, 0xDC, 0x59, 0x01, 0xDC, 0x38, 0x80, 0xDC, 0x37, 0x04, 0xDC, 0x17, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x17, 0x01, 0xDC, 0x16, 0x80, 0xDB, 0xF6, 0x02, 0xDC, 0x16, 0x0B, 0xDB, 0xF6, 0x09, 0xDB, 0xD6, 0x01, 0xDB, 0xB6, 0x01, 0xDB, 0xD6, 0x82, 0xD3, 0xD6, 0xDB, 0xD6, 0xDB, 0xB6, 0x04, 0xD3, 0xB6, 0x81, 0xD3, 0xD6, 0xD3, 0xB6, 0x01, 0xD3, 0xD7, 0x03, 0xCB, 0xB7, 0x84, 0xBB, 0x96, 0xBB, 0xB6, 0xBB, 0xF7, 0xBC, 0x38, 0xC4, 0x79, 0x01, 0xBC, 0x79, 0x8C, 0xBC, 0x58, 0xB4, 0x58, 0xBC, 0x58, 0xBC, 0x38, 0xBB, 0xF7, 0xC3, 0xD7, 0xBB, 0x76, 0xBB, 0x55, 0xC3, 0x76, 0xCB, 0x76, 0xD3, 0x96, 0xCB, 0x56, 0xD3, 0x96, 0x01, 0xD3, 0x76, 0xA2, 0xD3, 0x97, 0xCB, 0x96, 0xC3, 0x97, 0xB3, 0xB7, 0xA3, 0xB7, 0x94, 0x18, 0x8C, 0x9A, 0x7C, 0xBA, 0x6C, 0xDB, 0x5C, 0xBB, 0x64, 0xFC, 0x5C, 0x9A, 0x6C, 0xDA, 0x84, 0xDA, 0x8C, 0x99, 0x94, 0x38, 0x9B, 0xD6, + 0xA3, 0xD6, 0xA3, 0xB6, 0x9B, 0x95, 0xA3, 0xD7, 0x93, 0xF7, 0x8C, 0x18, 0x8C, 0x9A, 0x8C, 0xDC, 0x8D, 0x3E, 0x85, 0x1D, 0x2A, 0x12, 0x11, 0x2F, 0x21, 0x70, 0x39, 0xB2, 0x39, 0x91, 0x39, 0x92, 0x39, 0x91, 0x39, 0x71, 0x01, 0x39, 0x91, 0x02, 0x39, 0x71, 0x82, 0x39, 0x51, 0x31, 0x51, 0x39, 0x71, 0x05, 0x31, 0x51, 0x04, 0x31, 0x30, 0x03, 0x29, 0x30, 0x80, 0x29, 0x50, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x07, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x87, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x84, 0x19, 0x11, 0x11, 0x11, 0x11, 0x53, 0x11, 0xB6, 0x09, 0xB7, 0x01, 0x09, 0xD9, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x8C, 0x01, 0xB9, 0x01, 0xF9, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0xB5, 0x11, 0x73, 0x10, 0xF1, 0x19, 0x31, 0x21, 0x51, 0x29, 0x31, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x88, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, + 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x21, 0x11, 0x19, 0x12, 0x19, 0x32, 0x11, 0x34, 0x11, 0x96, 0x11, 0xD8, 0x02, 0x09, 0xF9, 0x83, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xB8, 0x01, 0x56, 0x01, 0x01, 0x35, 0x83, 0x09, 0x76, 0x09, 0xB7, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x80, 0x09, 0x77, 0x02, 0x09, 0x55, 0x82, 0x11, 0x76, 0x09, 0x77, 0x09, 0xD8, 0x03, 0x09, 0xD9, 0x86, 0x09, 0xD8, 0x09, 0x76, 0x11, 0x54, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x8B, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x19, 0x12, 0x19, 0x33, 0x11, 0x55, 0x11, 0x96, 0x09, 0xB8, 0x01, 0x09, 0xF9, 0x84, 0x09, 0xFA, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0x97, 0x09, 0x75, 0x01, 0x09, 0x55, 0x82, 0x09, 0x96, 0x09, 0xB8, 0x09, 0xF9, 0x02, 0x09, 0xFA, 0x83, 0x09, 0xD9, 0x09, 0xB8, 0x09, 0x96, 0x09, 0x55, 0x01, 0x09, 0x54, 0xA7, 0x09, 0x76, 0x09, 0x97, 0x09, 0xD9, 0x09, 0xFA, 0x09, 0xF9, 0x0A, 0x1A, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0x96, 0x11, 0x75, 0x11, 0x34, 0x09, 0x33, 0x09, 0x74, 0x11, 0x96, 0x09, 0xD8, 0x11, 0xF9, 0x09, 0xF9, 0x12, 0x1A, 0x09, 0xD9, 0x09, 0xB8, 0x09, 0x97, 0x11, 0x96, 0x09, 0x35, 0x01, 0x14, 0x09, 0x76, 0x01, 0xB8, 0x09, 0xF9, 0x0A, 0x1A, 0x09, 0xF9, 0x01, 0xD9, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0x96, 0x11, 0x75, 0x01, 0x13, 0x09, 0x35, 0x11, 0xB7, 0x09, 0xD8, 0x09, 0xD9, 0x09, 0xFA, + 0x02, 0x09, 0xD9, 0x8E, 0x11, 0xF9, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x74, 0x11, 0x96, 0x11, 0xF8, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x01, 0x09, 0xDA, 0x83, 0x11, 0xD9, 0x11, 0xB7, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x11, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, + 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x19, 0x10, 0x02, 0x19, 0x31, 0x80, 0x19, 0x52, 0x01, 0x11, 0x33, 0x8A, 0x11, 0x54, 0x11, 0x76, 0x11, 0xD7, 0x11, 0xF8, 0x1A, 0x19, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x02, 0x21, 0x31, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x52, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x09, 0x97, 0x11, 0xD8, 0x09, 0xF9, 0x01, 0x09, + 0xD9, 0x8C, 0x01, 0xD9, 0x09, 0xD9, 0x01, 0xD9, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xF8, 0x19, 0xD7, 0x19, 0x96, 0x19, 0x74, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x87, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x05, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x11, 0x19, 0x31, 0x19, 0x12, 0x19, 0x33, 0x11, 0x33, 0x11, 0x75, 0x19, 0xD7, 0x01, 0x22, 0x18, 0x83, 0x19, 0xB6, 0x11, 0x55, 0x08, 0xF2, 0x11, 0x12, 0x01, 0x19, 0x32, 0x80, 0x21, 0x51, 0x20, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x19, 0x11, 0x8B, 0x19, 0x12, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x11, 0xB7, 0x19, 0xF7, 0x11, 0xF7, 0x1A, 0x18, 0x11, 0xF7, 0x11, 0xD6, 0x01, 0x11, 0xB5, 0x84, 0x11, 0x73, 0x11, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x91, 0x29, 0x0F, 0x29, 0x10, 0x28, 0xF0, 0x28, 0xD0, 0x30, 0x70, 0x61, 0x14, 0xCB, 0x1D, 0xDA, 0xDE, 0xDA, 0x5D, 0xE2, 0x1E, 0xEA, 0x1E, 0xEA, 0x1F, 0xF2, 0x1F, 0xF1, 0xFF, 0xF1, 0xDF, 0xF1, 0xFF, 0xF1, 0xDF, 0xF1, 0xFF, 0x01, 0xEA, 0x1F, 0x89, 0xEA, 0x1E, 0xE2, 0x3E, 0xDA, 0x3D, 0xDA, 0x7D, 0xDA, 0xFE, 0xCB, 0x5E, 0x48, 0x30, 0x30, + 0x4F, 0x30, 0xD0, 0x28, 0xF0, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x87, 0x19, 0x32, 0x11, 0x33, 0x1A, 0x18, 0x1A, 0x39, 0x19, 0xF8, 0x11, 0x76, 0x11, 0x13, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x75, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x08, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x0B, 0x29, 0x30, 0x80, 0x29, 0x10, 0x09, 0x29, 0x30, 0x82, 0x31, 0x50, 0x29, 0x30, 0x31, 0x30, 0x02, 0x29, 0x30, 0x01, 0x31, 0x30, 0x80, 0x31, 0x50, 0x03, 0x31, 0x51, 0x80, 0x31, 0x31, 0x05, 0x31, 0x51, 0x80, 0x39, 0x71, 0x04, 0x39, 0x72, 0x01, 0x41, 0x92, 0x80, 0x41, 0xB3, 0x03, 0x41, 0x93, 0x85, 0x49, 0x93, 0x49, 0xB3, 0x51, 0xB3, 0x51, 0xD3, 0x51, 0xB3, 0x51, 0xB2, 0x01, 0x59, 0xB2, 0x83, 0x61, 0x91, 0x61, 0x4F, + 0xA3, 0x36, 0xDC, 0x9B, 0x01, 0xDC, 0x59, 0x83, 0xDC, 0x58, 0xDC, 0x38, 0xDC, 0x17, 0xDC, 0x37, 0x04, 0xDC, 0x17, 0x80, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x03, 0xDC, 0x16, 0x80, 0xDB, 0xF6, 0x01, 0xDC, 0x16, 0x01, 0xDB, 0xF6, 0x80, 0xDC, 0x16, 0x07, 0xDB, 0xF6, 0x02, 0xDB, 0xD6, 0x01, 0xDB, 0xB6, 0x01, 0xDB, 0xD6, 0x04, 0xDB, 0xB6, 0x82, 0xDB, 0x95, 0xDB, 0xB6, 0xDB, 0xD6, 0x04, 0xDB, 0xB6, 0x81, 0xD3, 0x95, 0xD3, 0x96, 0x03, 0xD3, 0xB6, 0x80, 0xDB, 0xD7, 0x02, 0xD3, 0xB7, 0x01, 0xCB, 0x96, 0x85, 0xCB, 0xD7, 0xC3, 0xB6, 0xBB, 0xD7, 0xB3, 0xD7, 0xAB, 0x96, 0xBC, 0x38, 0x01, 0xBC, 0x58, 0x01, 0xB4, 0x38, 0x84, 0xBC, 0x38, 0xBC, 0x17, 0xC3, 0xF7, 0xBB, 0xB6, 0xC3, 0x96, 0x01, 0xC3, 0x76, 0x94, 0xCB, 0x76, 0xD3, 0x76, 0xCB, 0x76, 0xCB, 0x56, 0xCB, 0x76, 0xCB, 0x97, 0xCB, 0x96, 0xC3, 0x97, 0xB3, 0x97, 0xA3, 0xB7, 0x94, 0x18, 0x94, 0x9A, 0x84, 0xBB, 0x74, 0x9A, 0x74, 0xFC, 0x7D, 0x3C, 0x7C, 0xDA, 0x74, 0x17, 0x8C, 0x79, 0xA4, 0xDA, 0xA4, 0x79, 0x01, 0x9B, 0xD6, 0x8D, 0x9B, 0xF7, 0x8B, 0xD7, 0x84, 0x38, 0x84, 0x9A, 0x8D, 0x3C, 0x8D, 0x5E, 0x85, 0x3E, 0x42, 0xF5, 0x11, 0x0F, 0x29, 0x91, 0x31, 0xB2, 0x39, 0xD2, 0x39, 0xB2, 0x39, 0x92, 0x01, 0x41, 0x92, 0x80, 0x39, 0x91, 0x03, 0x39, 0x71, 0x01, 0x39, 0x51, 0x81, 0x39, 0x72, 0x39, 0x51, 0x02, 0x31, 0x51, 0x80, 0x31, 0x71, 0x01, 0x31, 0x51, 0x01, 0x31, 0x31, 0x80, 0x31, 0x51, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x0C, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x07, 0x29, 0x30, 0x81, 0x29, 0x10, + 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x87, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD7, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x89, 0x11, 0xD8, 0x11, 0xD6, 0x11, 0x74, 0x08, 0xD1, 0x19, 0x31, 0x29, 0x52, 0x29, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x06, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x31, 0x21, 0x11, 0x21, 0x32, 0x19, 0x32, 0x11, 0x34, 0x11, 0x96, 0x11, 0xB7, 0x02, 0x09, 0xF9, 0x83, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0x97, 0x01, 0x56, 0x01, 0x01, 0x35, 0x81, 0x09, 0x76, 0x09, 0xB7, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x82, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0x76, 0x02, 0x09, 0x55, 0x82, 0x09, 0x76, 0x09, 0x97, 0x09, 0xD8, 0x03, 0x09, 0xD9, 0x86, 0x09, 0xB8, 0x09, 0x75, 0x11, 0x54, 0x19, 0x53, 0x21, 0x31, 0x21, + 0x10, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x11, 0x19, 0x12, 0x19, 0x33, 0x11, 0x54, 0x11, 0x96, 0x09, 0xB8, 0x01, 0x09, 0xD9, 0x84, 0x09, 0xDA, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0x97, 0x09, 0x76, 0x01, 0x09, 0x55, 0x82, 0x01, 0x76, 0x09, 0xB7, 0x09, 0xF9, 0x02, 0x09, 0xFA, 0x82, 0x09, 0xD9, 0x09, 0xB8, 0x09, 0x76, 0x02, 0x09, 0x54, 0x89, 0x09, 0x75, 0x09, 0xB7, 0x09, 0xD9, 0x09, 0xFA, 0x0A, 0x1A, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0x96, 0x11, 0x75, 0x01, 0x09, 0x34, 0x82, 0x09, 0x55, 0x09, 0x96, 0x09, 0xD8, 0x02, 0x09, 0xF9, 0x89, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0x97, 0x11, 0x96, 0x09, 0x14, 0x01, 0x14, 0x09, 0x76, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xF9, 0x01, 0x01, 0xD9, 0x87, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xB6, 0x11, 0x75, 0x01, 0x13, 0x09, 0x34, 0x09, 0x97, 0x09, 0xB8, 0x01, 0x09, 0xFA, 0x88, 0x09, 0xD9, 0x01, 0xB9, 0x09, 0xB9, 0x09, 0xB8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x53, 0x19, 0x32, 0x11, 0x11, 0x01, 0x19, 0x32, 0x83, 0x19, 0x74, 0x11, 0xB6, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x89, 0x09, 0xDA, 0x09, 0xB9, 0x11, 0xD9, 0x11, 0x96, 0x11, 0x54, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, + 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x08, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x0C, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x08, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x30, 0x90, 0x19, 0x31, 0x19, 0x51, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x19, 0xF8, 0x1A, 0x39, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x96, 0x11, 0x74, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x07, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, + 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD8, 0x01, 0x11, 0xF9, 0x02, 0x09, 0xD9, 0x01, 0x09, 0xD8, 0x86, 0x11, 0xF8, 0x11, 0xD7, 0x19, 0xB7, 0x11, 0x75, 0x19, 0x54, 0x19, 0x33, 0x19, 0x12, 0x01, 0x19, 0x11, 0x8B, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x08, 0x21, 0x30, 0x8F, 0x21, 0x31, 0x21, 0x32, 0x19, 0x12, 0x11, 0x12, 0x11, 0x34, 0x11, 0x75, 0x19, 0xD7, 0x22, 0x18, 0x21, 0xF8, 0x19, 0xD7, 0x11, 0x54, 0x09, 0x13, 0x11, 0x12, 0x19, 0x53, 0x19, 0x52, 0x19, 0x32, 0x07, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x21, 0x31, 0x21, 0x32, 0x21, 0x31, 0x01, 0x19, 0x31, 0x02, 0x21, 0x31, 0x81, 0x19, 0x11, 0x21, 0x31, 0x07, 0x19, 0x11, 0x01, 0x19, 0x32, + 0x84, 0x19, 0x53, 0x11, 0x54, 0x11, 0x95, 0x11, 0x96, 0x11, 0xB7, 0x01, 0x11, 0xD8, 0x83, 0x11, 0xF9, 0x11, 0xF8, 0x12, 0x19, 0x11, 0xF8, 0x01, 0x11, 0xF7, 0x84, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x73, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x8D, 0x21, 0x0F, 0x29, 0x10, 0x28, 0xF0, 0x28, 0xD0, 0x28, 0x90, 0x38, 0x50, 0x81, 0xD7, 0xD3, 0x3E, 0xDA, 0x9D, 0xDA, 0x3D, 0xEA, 0x3E, 0xEA, 0x1E, 0xE9, 0xFF, 0xF1, 0xFF, 0x02, 0xF1, 0xDF, 0x80, 0xF9, 0xFF, 0x01, 0xF1, 0xFF, 0x80, 0xE9, 0xFE, 0x01, 0xEA, 0x1E, 0x88, 0xE2, 0x3E, 0xE2, 0x7E, 0xDA, 0xBD, 0xDB, 0x9F, 0x60, 0xF3, 0x38, 0x4F, 0x30, 0xB0, 0x28, 0xF0, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x88, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x8D, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x13, 0x1A, 0x18, 0x1A, 0x39, 0x19, 0xD8, 0x11, 0x96, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x31, 0x19, 0x32, 0x09, 0x12, + 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x55, 0x11, 0x13, 0x19, 0x12, 0x21, 0x11, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x0C, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x07, 0x29, 0x30, 0x80, 0x29, 0x10, 0x0C, 0x29, 0x30, 0x80, 0x31, 0x50, 0x03, 0x31, 0x30, 0x80, 0x31, 0x50, 0x02, 0x31, 0x51, 0x80, 0x31, 0x31, 0x03, 0x31, 0x51, 0x82, 0x39, 0x71, 0x39, 0x51, 0x39, 0x71, 0x01, 0x39, 0x72, 0x80, 0x41, 0x92, 0x01, 0x39, 0x72, 0x01, 0x41, 0x92, 0x03, 0x41, 0x93, 0x82, 0x41, 0x92, 0x49, 0x92, 0x49, 0xB3, 0x01, 0x51, 0xD3, 0x8A, 0x51, 0xB3, 0x51, 0x92, 0x59, 0xB2, 0x59, 0xB1, 0x61, 0xB1, 0x69, 0x6F, 0xAB, 0x77, 0xDC, 0x9B, 0xDC, 0x79, 0xDC, 0x59, 0xDC, 0x38, 0x01, 0xDC, 0x17, 0x80, 0xDC, 0x37, 0x05, 0xDC, 0x17, 0x83, 0xDC, 0x16, 0xDC, 0x17, 0xDC, 0x16, 0xDB, 0xF6, 0x04, 0xDC, 0x16, 0x08, 0xDB, 0xF6, 0x03, 0xDB, 0xD6, 0x80, 0xDB, 0xB6, 0x01, 0xDB, 0xD6, 0x80, 0xDB, 0xB6, 0x02, 0xDB, 0xD6, 0x0B, 0xDB, 0xB6, 0x01, 0xDB, 0x96, 0x01, 0xD3, 0x96, 0x01, 0xDB, 0x96, 0x80, 0xDB, 0xB6, 0x03, 0xDB, 0x96, 0x84, 0xDB, 0xB7, 0xD3, 0x96, 0xCB, 0xB7, 0xCB, 0xD7, 0xC3, 0xD7, 0x01, 0xB3, 0xB7, 0x8D, 0xB3, 0xD7, 0xBC, 0x18, 0xB4, 0x18, 0xB4, 0x17, 0xBC, 0x58, 0xBC, 0x38, 0xBC, 0x18, 0xBC, 0x17, 0xC3, 0xF7, 0xC3, 0xD7, 0xC3, 0x96, 0xC3, 0x76, 0xC3, 0x56, 0xCB, 0x76, 0x01, 0xD3, 0x76, 0x90, 0xD3, 0x96, 0xCB, 0x76, 0xCB, 0x97, 0xBB, 0x76, 0xB3, 0x97, 0xA3, 0x97, 0xA4, 0x39, 0x94, 0x7A, + 0x8C, 0x9A, 0x84, 0xDB, 0x84, 0xBB, 0x84, 0xDB, 0x8C, 0x99, 0x94, 0x79, 0x9C, 0x99, 0xA4, 0x99, 0x9C, 0x38, 0x01, 0x9C, 0x58, 0x8B, 0x8C, 0x58, 0x8C, 0xBA, 0x8D, 0x3C, 0x95, 0x9E, 0x95, 0x9F, 0x6C, 0x5B, 0x11, 0x70, 0x21, 0x91, 0x31, 0xD2, 0x39, 0xD2, 0x41, 0xB2, 0x39, 0xB2, 0x02, 0x41, 0x92, 0x81, 0x41, 0x72, 0x39, 0x71, 0x01, 0x39, 0x72, 0x82, 0x39, 0x71, 0x39, 0x51, 0x39, 0x72, 0x01, 0x39, 0x51, 0x08, 0x31, 0x51, 0x80, 0x31, 0x30, 0x02, 0x31, 0x50, 0x11, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD7, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x09, 0xD9, 0x88, 0x09, 0xD8, 0x19, 0xD7, 0x19, 0x95, 0x10, 0xF2, 0x19, 0x11, 0x29, 0x52, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x05, 0x29, + 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x8A, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x19, 0x12, 0x19, 0x32, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD8, 0x09, 0xD8, 0x03, 0x09, 0xF9, 0x81, 0x09, 0x97, 0x01, 0x56, 0x01, 0x01, 0x35, 0x81, 0x09, 0x96, 0x09, 0xB7, 0x03, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x81, 0x09, 0x97, 0x01, 0x55, 0x01, 0x09, 0x55, 0x82, 0x09, 0x76, 0x11, 0xB7, 0x09, 0xB8, 0x03, 0x09, 0xD9, 0x83, 0x09, 0xD8, 0x09, 0x76, 0x11, 0x54, 0x19, 0x32, 0x01, 0x21, 0x31, 0x87, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x21, 0x11, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x11, 0x96, 0x09, 0xB8, 0x01, 0x09, 0xD9, 0x8A, 0x09, 0xFA, 0x09, 0xF9, 0x09, 0xB8, 0x09, 0x97, 0x09, 0x76, 0x09, 0x55, 0x01, 0x55, 0x09, 0x96, 0x09, 0xB7, 0x09, 0xD9, 0x0A, 0x1A, 0x01, 0x09, 0xFA, 0xAC, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0x96, 0x09, 0x55, 0x09, 0x54, 0x09, 0x55, 0x09, 0x76, 0x09, 0xB7, 0x09, 0xD9, 0x0A, 0x1A, 0x09, 0xFA, 0x0A, 0x1A, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0x96, 0x11, 0x75, 0x11, 0x54, 0x09, 0x34, 0x09, 0x55, 0x09, 0x96, 0x09, 0xD8, 0x11, 0xF9, 0x09, 0xF9, 0x12, 0x1A, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x09, 0x14, 0x09, 0x34, 0x09, 0x76, 0x09, 0xD8, 0x09, 0xF9, 0x09, 0xFA, 0x01, 0xFA, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0x96, 0x11, 0x75, 0x09, 0x14, 0x09, 0x34, 0x09, 0x97, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0x09, 0xDA, 0x01, 0x09, + 0xB9, 0x83, 0x09, 0xB8, 0x09, 0x96, 0x11, 0x95, 0x11, 0x53, 0x03, 0x19, 0x32, 0x94, 0x19, 0x74, 0x11, 0xD7, 0x11, 0xF8, 0x09, 0xD9, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x09, 0xDA, 0x09, 0xBA, 0x09, 0xB9, 0x11, 0xB8, 0x11, 0x75, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x04, 0x21, + 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x87, 0x21, 0x51, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x55, 0x11, 0x96, 0x11, 0xD8, 0x01, 0x1A, 0x19, 0x84, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x12, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xF9, 0x01, 0x09, 0xD9, 0x88, 0x09, 0xB8, 0x11, 0xD8, 0x11, 0xB8, 0x11, 0xB7, 0x11, 0x96, + 0x11, 0x75, 0x19, 0x75, 0x19, 0x53, 0x11, 0x12, 0x01, 0x19, 0x12, 0x80, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x19, 0x32, 0x19, 0x12, 0x01, 0x11, 0x33, 0x81, 0x19, 0x75, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x85, 0x21, 0xD7, 0x19, 0x95, 0x09, 0x13, 0x09, 0x12, 0x10, 0xF2, 0x11, 0x12, 0x05, 0x11, 0x11, 0x82, 0x10, 0xF1, 0x11, 0x11, 0x19, 0x11, 0x04, 0x11, 0x11, 0x01, 0x19, 0x32, 0x01, 0x19, 0x12, 0x81, 0x11, 0x11, 0x11, 0x12, 0x01, 0x10, 0xF1, 0x80, 0x19, 0x12, 0x01, 0x19, 0x11, 0x80, 0x19, 0x12, 0x02, 0x10, 0xF1, 0x03, 0x10, 0xF2, 0x85, 0x11, 0x12, 0x11, 0x13, 0x09, 0x34, 0x09, 0x55, 0x09, 0x76, 0x09, 0x97, 0x01, 0x09, 0xB8, 0x01, 0x09, 0xD9, 0x02, 0x09, 0xF9, 0x8B, 0x12, 0x19, 0x12, 0x18, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x94, 0x11, 0x52, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x8C, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x28, 0xD0, 0x30, 0x8F, 0x38, 0x30, 0x92, 0x19, 0xD2, 0xFE, 0xDA, 0x5D, 0xE2, 0x5E, 0xF2, 0x5F, 0xEA, 0x1F, 0x02, 0xF1, 0xFF, 0x81, 0xF1, 0xDF, 0xF9, 0xDF, 0x01, 0xF9, 0xFF, 0x01, 0xF1, 0xFF, 0x8B, 0xF2, 0x1F, 0xF2, 0x3F, 0xF2, 0x5F, 0xE2, + 0x5E, 0xDA, 0x7D, 0xD3, 0x1E, 0x71, 0x35, 0x38, 0x0F, 0x30, 0x90, 0x28, 0xD0, 0x29, 0x10, 0x20, 0xEF, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x8C, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x12, 0x11, 0x13, 0x19, 0xF7, 0x1A, 0x39, 0x19, 0xD8, 0x11, 0x76, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xF7, 0x01, 0x1A, 0x18, 0x84, 0x11, 0x75, 0x11, 0x13, 0x19, 0x12, 0x21, 0x11, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x16, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x09, 0x29, 0x30, 0x83, 0x31, 0x50, 0x31, 0x30, 0x31, 0x50, 0x31, 0x30, 0x01, 0x31, 0x50, 0x81, 0x31, 0x30, 0x31, 0x50, 0x04, 0x31, 0x51, 0x80, 0x31, 0x52, 0x01, 0x31, 0x51, 0x04, 0x39, 0x72, 0x82, 0x39, 0x52, 0x39, 0x72, 0x39, 0x92, 0x01, 0x41, 0x92, 0x83, 0x41, 0x93, 0x41, 0x92, 0x41, 0x93, 0x41, 0x92, 0x01, 0x49, 0xB3, 0x01, 0x51, 0xD3, 0x80, 0x51, 0xB3, 0x01, 0x51, 0xB2, 0x8B, 0x59, 0x92, 0x59, 0x91, 0x59, 0x6F, 0x69, 0x90, 0xBB, + 0xD8, 0xDC, 0xBB, 0xDC, 0x79, 0xDC, 0x58, 0xD4, 0x17, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x38, 0x01, 0xDC, 0x17, 0x80, 0xDC, 0x37, 0x03, 0xDC, 0x17, 0x81, 0xDC, 0x16, 0xDC, 0x17, 0x04, 0xDC, 0x16, 0x03, 0xDB, 0xF6, 0x80, 0xDC, 0x16, 0x02, 0xDB, 0xF6, 0x08, 0xDB, 0xD6, 0x02, 0xDB, 0xB6, 0x01, 0xDB, 0xD6, 0x03, 0xDB, 0xB6, 0x80, 0xD3, 0x95, 0x01, 0xDB, 0x96, 0x02, 0xDB, 0xB6, 0x80, 0xDB, 0x95, 0x04, 0xDB, 0xB6, 0x82, 0xDB, 0x96, 0xD3, 0x76, 0xDB, 0x96, 0x03, 0xDB, 0x76, 0x02, 0xD3, 0x96, 0x01, 0xCB, 0xB7, 0x83, 0xC3, 0xD7, 0xC3, 0xB7, 0xBB, 0xB6, 0xB3, 0x96, 0x02, 0xBB, 0xF7, 0x83, 0xB3, 0xF7, 0xBC, 0x18, 0xBC, 0x38, 0xBC, 0x18, 0x01, 0xBB, 0xF7, 0x84, 0xBB, 0xB7, 0xC3, 0x96, 0xC3, 0x55, 0xC3, 0x36, 0xD3, 0x76, 0x01, 0xCB, 0x76, 0x01, 0xCB, 0x97, 0x8A, 0xBB, 0x76, 0xB3, 0x76, 0xAB, 0x97, 0xA4, 0x18, 0x9C, 0x5A, 0x94, 0x9A, 0x8C, 0x7A, 0x84, 0x59, 0x84, 0x38, 0x83, 0xD7, 0x94, 0x79, 0x01, 0x9C, 0x99, 0x8D, 0x94, 0x99, 0x94, 0xDA, 0x95, 0x3B, 0x8D, 0x3C, 0x8D, 0x7D, 0x8D, 0x5D, 0x74, 0xBC, 0x19, 0xD1, 0x21, 0xB1, 0x31, 0xD2, 0x41, 0xF3, 0x41, 0xD2, 0x41, 0xB2, 0x41, 0xD3, 0x04, 0x41, 0x92, 0x81, 0x41, 0x72, 0x39, 0x71, 0x01, 0x39, 0x72, 0x80, 0x39, 0x92, 0x01, 0x39, 0x72, 0x80, 0x39, 0x51, 0x08, 0x31, 0x51, 0x02, 0x31, 0x30, 0x0A, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x06, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, + 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x89, 0x19, 0x12, 0x11, 0x12, 0x11, 0x75, 0x19, 0xF8, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0x99, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x89, 0x01, 0xB9, 0x09, 0xDA, 0x09, 0xB9, 0x09, 0xB8, 0x11, 0xD7, 0x21, 0xF6, 0x08, 0xF2, 0x19, 0x11, 0x21, 0x52, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x87, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x31, 0x19, 0x12, 0x19, 0x32, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD8, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x83, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xB8, 0x01, 0x76, 0x01, 0x01, 0x35, 0x83, 0x09, 0x76, 0x09, 0xB7, 0x09, 0xF8, 0x09, 0xD9, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x87, 0x09, 0x97, 0x01, 0x55, 0x09, 0x55, 0x01, 0x35, 0x09, 0x76, 0x09, 0x97, 0x09, 0xB8, 0x09, 0xD9, 0x03, 0x09, 0xD8, 0x85, 0x09, 0x95, 0x09, 0x33, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x87, 0x21, 0x30, 0x21, 0x10, 0x21, + 0x11, 0x19, 0x11, 0x19, 0x33, 0x11, 0x54, 0x11, 0x76, 0x09, 0xB8, 0x02, 0x09, 0xF9, 0x88, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xB7, 0x09, 0x56, 0x09, 0x55, 0x01, 0x55, 0x01, 0x76, 0x09, 0xB7, 0x09, 0xD9, 0x01, 0x09, 0xFA, 0x01, 0x09, 0xD9, 0x87, 0x09, 0xB8, 0x09, 0x76, 0x09, 0x54, 0x09, 0x34, 0x09, 0x55, 0x09, 0x76, 0x09, 0x97, 0x09, 0xB8, 0x02, 0x09, 0xF9, 0x88, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x09, 0x34, 0x09, 0x75, 0x09, 0x96, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x89, 0x12, 0x1A, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0xB7, 0x11, 0x96, 0x09, 0x34, 0x01, 0x14, 0x01, 0x76, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0x09, 0xFA, 0x01, 0x09, 0xD9, 0x9A, 0x09, 0xB8, 0x11, 0xB7, 0x11, 0x75, 0x09, 0x14, 0x09, 0x55, 0x09, 0x97, 0x09, 0xB8, 0x09, 0xD9, 0x09, 0xFA, 0x09, 0xDA, 0x09, 0xD9, 0x09, 0xB9, 0x09, 0xB8, 0x09, 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x32, 0x19, 0x54, 0x11, 0xB6, 0x11, 0xF8, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0x99, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x02, 0x01, 0xBA, 0x88, 0x09, 0xDA, 0x09, 0xD9, 0x11, 0xD9, 0x11, 0x97, 0x11, 0x55, 0x11, 0x12, 0x19, 0x31, 0x19, 0x11, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, + 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x0C, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x19, 0x31, 0x85, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x01, 0x1A, 0x19, 0x89, 0x19, 0xF8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x33, 0x19, 0x32, 0x19, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x88, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, + 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x89, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x87, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xF8, 0x12, 0x19, 0x11, 0xF8, 0x01, 0x11, 0xD8, 0x01, 0x11, 0xB7, 0x84, 0x11, 0x96, 0x11, 0x55, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x19, 0x32, 0x83, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x21, 0xF7, + 0x85, 0x21, 0xD7, 0x21, 0xB6, 0x11, 0x54, 0x09, 0x13, 0x11, 0x13, 0x09, 0x12, 0x06, 0x11, 0x12, 0x01, 0x10, 0xF2, 0x01, 0x08, 0xF2, 0x03, 0x11, 0x12, 0x01, 0x10, 0xF2, 0x01, 0x11, 0x12, 0x82, 0x10, 0xF2, 0x11, 0x12, 0x10, 0xF2, 0x01, 0x11, 0x12, 0x03, 0x10, 0xF2, 0x81, 0x11, 0x12, 0x11, 0x13, 0x01, 0x11, 0x33, 0x85, 0x11, 0x34, 0x11, 0x54, 0x11, 0x75, 0x09, 0x76, 0x09, 0xB7, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x02, 0x01, 0xD9, 0x88, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xF8, 0x11, 0xD8, 0x11, 0xB7, 0x19, 0xB6, 0x19, 0x94, 0x11, 0x12, 0x01, 0x19, 0x31, 0x81, 0x21, 0x30, 0x19, 0x10, 0x02, 0x21, 0x30, 0x8D, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x31, 0x10, 0x28, 0xD0, 0x28, 0x6F, 0x38, 0x0F, 0x92, 0x19, 0xD2, 0xFE, 0xDA, 0x7D, 0xEA, 0x5E, 0xEA, 0x3E, 0x01, 0xF2, 0x1F, 0x80, 0xFA, 0x1F, 0x02, 0xF9, 0xFF, 0x80, 0xF9, 0xDF, 0x01, 0xF9, 0xFF, 0x8B, 0xF1, 0xFF, 0xFA, 0x1F, 0xF2, 0x3F, 0xEA, 0x1E, 0xEA, 0x5E, 0xDA, 0x7D, 0xDB, 0x1F, 0x89, 0xB7, 0x38, 0x0F, 0x30, 0x90, 0x30, 0xD0, 0x29, 0x10, 0x07, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x2F, + 0x21, 0x0F, 0x02, 0x21, 0x30, 0x92, 0x21, 0x31, 0x19, 0x32, 0x11, 0x13, 0x1A, 0x18, 0x1A, 0x19, 0x19, 0xD8, 0x11, 0x76, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x89, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x13, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x75, 0x11, 0x13, 0x19, 0x12, 0x01, 0x21, 0x31, 0x84, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x07, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x13, 0x29, 0x30, 0x85, 0x31, 0x30, 0x29, 0x30, 0x31, 0x50, 0x31, 0x30, 0x31, 0x50, 0x31, 0x30, 0x01, 0x31, 0x50, 0x01, 0x31, 0x51, 0x80, 0x31, 0x71, 0x01, 0x31, 0x51, 0x82, 0x31, 0x71, 0x31, 0x51, 0x39, 0x71, 0x05, 0x39, 0x72, 0x05, 0x41, 0x92, 0x80, 0x49, 0x93, 0x01, 0x49, 0xB3, 0x80, 0x51, 0xD3, 0x01, 0x51, 0xB3, 0x01, 0x51, 0x92, 0x01, 0x59, 0x91, 0x85, 0x59, 0x2F, 0x7A, 0x32, 0xCC, 0x59, 0xDC, 0xBB, 0xDC, 0x79, 0xD4, 0x38, 0x01, 0xDC, 0x38, 0x80, 0xDC, 0x17, 0x01, 0xDC, 0x37, 0x80, 0xDB, 0xF7, 0x03, 0xDC, 0x17, 0x81, 0xDB, 0xF6, 0xDC, 0x17, 0x01, 0xDC, 0x16, 0x01, 0xDB, 0xF6, 0x01, 0xDC, 0x16, 0x03, 0xDB, 0xF6, 0x80, 0xDC, 0x16, 0x03, 0xDB, 0xF6, 0x81, 0xDB, 0xD6, 0xDB, 0xF6, 0x07, 0xDB, 0xD6, 0x02, 0xDB, 0xB6, 0x82, 0xDB, 0xD6, 0xDB, 0xB6, 0xDB, 0xD6, 0x03, 0xDB, 0xB6, 0x80, 0xDB, 0x96, 0x01, 0xDB, 0xB6, 0x01, 0xDB, 0x96, 0x81, 0xDB, + 0xB6, 0xDB, 0x96, 0x02, 0xDB, 0xB6, 0x02, 0xDB, 0x96, 0x02, 0xDB, 0x76, 0x84, 0xDB, 0x96, 0xD3, 0x76, 0xDB, 0x96, 0xD3, 0x76, 0xD3, 0x96, 0x02, 0xCB, 0x96, 0x91, 0xC3, 0xB6, 0xC3, 0xB7, 0xBB, 0x96, 0xBB, 0xB6, 0xBB, 0xD7, 0xBB, 0xF7, 0xBB, 0xF8, 0xB3, 0xF7, 0xBC, 0x38, 0xBC, 0x18, 0xBC, 0x17, 0xBB, 0xF7, 0xC3, 0xF8, 0xC3, 0x96, 0xC3, 0x36, 0xCB, 0x56, 0xCB, 0x76, 0xCB, 0x97, 0x02, 0xCB, 0x76, 0x98, 0xC3, 0x76, 0xB3, 0x76, 0xB3, 0xD8, 0xA3, 0xF8, 0xA4, 0x59, 0x9C, 0x7A, 0x94, 0x59, 0x8C, 0x39, 0x8C, 0x38, 0x84, 0x17, 0x8C, 0x38, 0x8C, 0x79, 0x94, 0xBA, 0x95, 0x1B, 0x95, 0x5D, 0x95, 0x7D, 0x95, 0x9E, 0x8D, 0x3D, 0x32, 0x52, 0x21, 0x90, 0x31, 0xB1, 0x39, 0xD2, 0x49, 0xF3, 0x41, 0xB2, 0x49, 0xD2, 0x01, 0x49, 0xB2, 0x01, 0x41, 0x92, 0x02, 0x41, 0x72, 0x80, 0x41, 0x92, 0x03, 0x39, 0x72, 0x83, 0x39, 0x92, 0x39, 0x72, 0x31, 0x51, 0x39, 0x72, 0x01, 0x31, 0x51, 0x80, 0x31, 0x71, 0x04, 0x31, 0x51, 0x80, 0x31, 0x31, 0x01, 0x31, 0x30, 0x80, 0x31, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x06, 0x29, 0x30, 0x80, 0x29, 0x10, 0x06, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x87, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x11, 0x32, 0x19, 0x95, 0x19, 0xF8, 0x12, 0x19, 0x09, 0xDA, 0x02, 0x01, 0xBA, 0x03, 0x01, + 0xDA, 0x88, 0x09, 0xDA, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0xD7, 0x21, 0xF6, 0x11, 0x12, 0x11, 0x11, 0x21, 0x52, 0x21, 0x31, 0x02, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x8C, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x91, 0x19, 0x12, 0x19, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xF8, 0x09, 0xD8, 0x09, 0xD9, 0x09, 0xF9, 0x01, 0xD9, 0x09, 0xD8, 0x09, 0xB8, 0x01, 0x56, 0x01, 0x55, 0x01, 0x35, 0x09, 0x76, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0x09, 0xD8, 0x89, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0x96, 0x01, 0x55, 0x09, 0x55, 0x09, 0x75, 0x09, 0x76, 0x09, 0x97, 0x09, 0xD8, 0x09, 0xD9, 0x02, 0x09, 0xD8, 0x86, 0x09, 0xD7, 0x09, 0x95, 0x09, 0x53, 0x11, 0x32, 0x19, 0x51, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD8, 0x01, 0x09, 0xD9, 0x83, 0x09, 0xF9, 0x09, 0xD9, 0x11, 0xD8, 0x09, + 0x97, 0x01, 0x09, 0x55, 0x82, 0x09, 0x75, 0x09, 0x76, 0x09, 0xB7, 0x01, 0x09, 0xF9, 0x84, 0x09, 0xFA, 0x11, 0xFA, 0x11, 0xF9, 0x11, 0xB8, 0x09, 0x96, 0x01, 0x09, 0x54, 0x83, 0x09, 0x55, 0x09, 0x76, 0x09, 0x97, 0x09, 0xD9, 0x02, 0x09, 0xF9, 0x83, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0x96, 0x11, 0x75, 0x01, 0x09, 0x54, 0x82, 0x09, 0x75, 0x09, 0x96, 0x11, 0xD8, 0x01, 0x09, 0xF9, 0x88, 0x12, 0x1A, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0x97, 0x11, 0x96, 0x09, 0x34, 0x01, 0x34, 0x09, 0x76, 0x09, 0xD8, 0x03, 0x09, 0xF9, 0x8A, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0x96, 0x11, 0x75, 0x09, 0x14, 0x09, 0x34, 0x09, 0x97, 0x09, 0xB8, 0x09, 0xD9, 0x09, 0xFA, 0x09, 0xDA, 0x01, 0x09, 0xD9, 0x8C, 0x09, 0xB8, 0x11, 0x96, 0x11, 0x54, 0x11, 0x53, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x75, 0x11, 0xD8, 0x09, 0xF9, 0x01, 0xD9, 0x02, 0x01, 0xB9, 0x01, 0x01, 0xBA, 0x01, 0x01, 0xB9, 0x85, 0x09, 0xB9, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0x96, 0x11, 0x54, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, + 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x8C, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x21, 0x51, 0x21, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x34, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xD8, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x87, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, + 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x05, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x33, 0x11, 0x74, 0x11, 0x96, 0x11, 0xD7, 0x01, 0x11, 0xF8, 0x01, 0x12, 0x19, 0x82, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x01, 0x11, 0x54, 0x82, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x03, 0x19, 0x11, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x8D, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x19, 0x12, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x21, 0xD6, 0x21, 0xF7, 0x21, 0xD7, 0x19, 0x96, 0x21, 0xB6, 0x01, 0x21, 0xD6, 0x82, 0x21, 0xD5, 0x21, 0xB5, 0x19, 0xB5, 0x03, 0x19, 0x94, 0x01, 0x19, 0x74, 0x80, 0x19, 0x94, 0x04, 0x19, 0x74, 0x01, + 0x19, 0x94, 0x80, 0x19, 0x74, 0x01, 0x19, 0x94, 0x01, 0x19, 0x95, 0x01, 0x19, 0x94, 0x05, 0x19, 0xB5, 0x01, 0x21, 0xD6, 0x86, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xF8, 0x09, 0xF8, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x81, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x88, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xD8, 0x19, 0xD7, 0x19, 0xB5, 0x19, 0x53, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x8E, 0x29, 0x10, 0x28, 0xF0, 0x28, 0xD0, 0x30, 0x90, 0x38, 0x30, 0x9A, 0x39, 0xDB, 0x1E, 0xDA, 0x7D, 0xE2, 0x3E, 0xEA, 0x1E, 0xF1, 0xFE, 0xF1, 0xFF, 0xF9, 0xFF, 0xF9, 0xDF, 0xF9, 0xFF, 0x01, 0xF9, 0xDF, 0x02, 0xF9, 0xFF, 0x8A, 0xF1, 0xFF, 0xF1, 0xFE, 0xEA, 0x1E, 0xE2, 0x3E, 0xDA, 0x7E, 0xDB, 0x3F, 0x91, 0xF8, 0x38, 0x0F, 0x30, 0x6F, 0x28, 0xD0, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x8B, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x22, 0x18, 0x1A, 0x39, 0x19, 0xF8, 0x11, 0x76, 0x11, 0x13, 0x19, 0x11, 0x21, + 0x11, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x90, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0x75, 0x11, 0x12, 0x19, 0x32, 0x21, 0x11, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x05, 0x29, 0x30, 0x01, 0x31, 0x30, 0x81, 0x31, 0x50, 0x31, 0x30, 0x01, 0x31, 0x50, 0x03, 0x31, 0x51, 0x01, 0x31, 0x71, 0x81, 0x39, 0x72, 0x39, 0x71, 0x07, 0x39, 0x72, 0x82, 0x41, 0x72, 0x41, 0x93, 0x49, 0x93, 0x02, 0x49, 0xB3, 0x01, 0x49, 0x92, 0x01, 0x51, 0x92, 0x01, 0x51, 0x71, 0x87, 0x59, 0x91, 0x59, 0x70, 0x61, 0x6F, 0x9B, 0x15, 0xE5, 0x1D, 0xDC, 0x9A, 0xDC, 0x79, 0xD4, 0x38, 0x01, 0xDC, 0x38, 0x01, 0xDC, 0x37, 0x07, 0xDC, 0x17, 0x02, 0xDB, 0xF6, 0x80, 0xDC, 0x17, 0x09, 0xDB, 0xF6, 0x81, 0xDB, 0xD6, 0xDB, 0xF6, 0x03, 0xDB, 0xD6, 0x80, 0xD3, 0xD6, 0x02, 0xDB, 0xD6, 0x80, 0xD3, 0xD6, 0x01, 0xDB, 0xD6, 0x80, 0xDB, 0xB6, 0x01, 0xD3, 0xB6, 0x01, 0xDB, 0xB6, 0x80, 0xD3, 0xB6, 0x04, 0xDB, 0xB6, 0x82, 0xD3, 0x96, 0xDB, 0xB6, 0xD3, 0x96, 0x01, 0xDB, 0x96, 0x81, 0xDB, 0xB6, 0xD3, 0x96, 0x01, 0xD3, 0x76, 0x81, 0xDB, 0x96, 0xDB, 0x76, 0x01, 0xDB, 0x96, 0x83, 0xDB, + 0x76, 0xDB, 0x96, 0xDB, 0x76, 0xDB, 0x96, 0x02, 0xD3, 0x76, 0x01, 0xD3, 0x96, 0x02, 0xCB, 0x96, 0x80, 0xC3, 0x96, 0x01, 0xBB, 0x96, 0x81, 0xBB, 0xB7, 0xBB, 0xF7, 0x01, 0xB3, 0xD7, 0x84, 0xBC, 0x18, 0xBB, 0xF8, 0xB3, 0xB7, 0xBB, 0xD7, 0xC3, 0xB7, 0x02, 0xC3, 0x56, 0x80, 0xCB, 0x76, 0x01, 0xCB, 0x56, 0x96, 0xC3, 0x76, 0xBB, 0x56, 0xB3, 0x56, 0xB3, 0xD7, 0xAC, 0x39, 0xA4, 0x39, 0x9C, 0x59, 0x94, 0x39, 0x8C, 0x59, 0x94, 0xBA, 0x84, 0x38, 0x5A, 0xF3, 0x7C, 0x39, 0x8C, 0xFB, 0x8C, 0xFC, 0x95, 0x5D, 0x8C, 0xDC, 0x52, 0xF5, 0x31, 0xB0, 0x41, 0xD1, 0x49, 0xF2, 0x51, 0xF3, 0x49, 0xB2, 0x02, 0x49, 0x92, 0x82, 0x49, 0x72, 0x49, 0x92, 0x49, 0xB3, 0x02, 0x41, 0x72, 0x01, 0x39, 0x72, 0x80, 0x41, 0x92, 0x01, 0x39, 0x72, 0x81, 0x39, 0x71, 0x39, 0x72, 0x01, 0x39, 0x71, 0x01, 0x39, 0x51, 0x03, 0x31, 0x51, 0x81, 0x31, 0x31, 0x31, 0x51, 0x01, 0x31, 0x31, 0x01, 0x31, 0x30, 0x09, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x06, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x11, 0x11, 0x32, 0x19, 0x95, 0x19, 0xF8, 0x11, 0xF9, 0x09, 0xDA, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x03, 0x01, 0xDA, 0x01, 0x09, 0xB9, 0x85, 0x11, 0xB8, 0x11, 0xD7, 0x21, 0xD6, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, + 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x87, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xD9, 0x09, 0xF9, 0x01, 0x09, 0xD8, 0x87, 0x01, 0x97, 0x01, 0x56, 0x01, 0x55, 0x01, 0x35, 0x09, 0x76, 0x09, 0xB7, 0x09, 0xD8, 0x01, 0xD8, 0x03, 0x09, 0xD8, 0x86, 0x09, 0x97, 0x01, 0x55, 0x01, 0x35, 0x01, 0x34, 0x09, 0x76, 0x09, 0x97, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xF8, 0x83, 0x09, 0xD7, 0x09, 0x95, 0x11, 0x54, 0x19, 0x52, 0x01, 0x19, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD8, 0x01, 0x09, 0xD9, 0x88, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xB8, 0x09, 0x97, 0x09, 0x55, 0x09, 0x35, 0x09, 0x55, 0x01, 0x56, 0x09, 0x97, 0x01, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x88, 0x09, 0xB8, 0x09, 0x97, 0x11, 0x96, 0x09, 0x55, 0x09, + 0x74, 0x09, 0x55, 0x09, 0x76, 0x09, 0x97, 0x09, 0xD9, 0x02, 0x09, 0xF9, 0x87, 0x09, 0xB8, 0x09, 0x97, 0x11, 0x96, 0x11, 0x75, 0x09, 0x34, 0x09, 0x54, 0x09, 0x75, 0x09, 0x96, 0x01, 0x09, 0xD8, 0x89, 0x12, 0x19, 0x09, 0xF9, 0x11, 0xD9, 0x09, 0xB8, 0x11, 0xB7, 0x11, 0x96, 0x09, 0x34, 0x01, 0x34, 0x09, 0x76, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x85, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xB8, 0x09, 0x97, 0x11, 0x96, 0x11, 0x75, 0x01, 0x09, 0x34, 0x83, 0x09, 0x96, 0x09, 0xB8, 0x09, 0xF9, 0x09, 0xFA, 0x01, 0x09, 0xD9, 0x8D, 0x09, 0xB9, 0x09, 0xB8, 0x11, 0x96, 0x11, 0x75, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x12, 0x19, 0x33, 0x11, 0x55, 0x11, 0xB7, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x03, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x86, 0x11, 0xD8, 0x11, 0xB7, 0x19, 0xB6, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, + 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x06, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x21, 0x10, 0x04, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x87, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x88, 0x21, 0x31, 0x21, 0x51, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x01, 0x1A, 0x19, 0x01, 0x11, 0xF8, 0x86, 0x11, 0xB6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x02, 0x21, 0x30, 0x02, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x8B, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x88, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, + 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB7, 0x11, 0xF8, 0x01, 0x1A, 0x19, 0x83, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0xB6, 0x11, 0x75, 0x01, 0x11, 0x54, 0x01, 0x11, 0x12, 0x80, 0x19, 0x12, 0x02, 0x19, 0x11, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x87, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x19, 0x31, 0x84, 0x11, 0x32, 0x11, 0x33, 0x19, 0x74, 0x21, 0xB6, 0x21, 0xD6, 0x01, 0x21, 0xB6, 0x80, 0x21, 0xD6, 0x02, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x01, 0x32, 0x37, 0x82, 0x32, 0x57, 0x32, + 0x58, 0x32, 0x57, 0x02, 0x32, 0x58, 0x82, 0x32, 0x37, 0x32, 0x57, 0x32, 0x58, 0x03, 0x32, 0x37, 0x01, 0x2A, 0x37, 0x80, 0x32, 0x37, 0x01, 0x2A, 0x37, 0x80, 0x2A, 0x16, 0x02, 0x2A, 0x37, 0x81, 0x2A, 0x17, 0x2A, 0x37, 0x01, 0x22, 0x17, 0x80, 0x21, 0xF7, 0x02, 0x19, 0xF7, 0x83, 0x11, 0xD8, 0x11, 0xF8, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x8C, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0x99, 0x01, 0xDA, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0xD8, 0x11, 0xB7, 0x19, 0xD6, 0x11, 0x33, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x8A, 0x28, 0xF0, 0x28, 0xD0, 0x30, 0x90, 0x38, 0x30, 0x92, 0x39, 0xD3, 0x3E, 0xDA, 0x9D, 0xE2, 0x5E, 0xEA, 0x3F, 0xF2, 0x1F, 0xF1, 0xFF, 0x03, 0xF9, 0xFF, 0x01, 0xF9, 0xDF, 0x02, 0xF9, 0xFF, 0x89, 0xF1, 0xFE, 0xEA, 0x1E, 0xEA, 0x3E, 0xE2, 0x9E, 0xDB, 0x5F, 0x89, 0xF8, 0x38, 0x2F, 0x30, 0x90, 0x28, 0xCF, 0x28, 0xEF, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x06, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x22, 0x18, 0x1A, + 0x39, 0x19, 0xF8, 0x11, 0x76, 0x11, 0x13, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x21, 0x31, 0x88, 0x19, 0x12, 0x11, 0x13, 0x19, 0xD7, 0x22, 0x19, 0x19, 0xD7, 0x11, 0x96, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x07, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x0E, 0x29, 0x30, 0x01, 0x31, 0x30, 0x02, 0x31, 0x50, 0x03, 0x31, 0x51, 0x01, 0x31, 0x71, 0x01, 0x39, 0x72, 0x80, 0x39, 0x71, 0x02, 0x39, 0x72, 0x80, 0x41, 0x92, 0x03, 0x39, 0x72, 0x81, 0x41, 0x93, 0x41, 0x92, 0x01, 0x49, 0xB3, 0x82, 0x49, 0x93, 0x49, 0xB3, 0x49, 0xB2, 0x01, 0x51, 0x92, 0x8D, 0x51, 0x72, 0x51, 0x51, 0x59, 0x71, 0x59, 0x91, 0x59, 0x4F, 0x71, 0xD0, 0xCC, 0x5A, 0xDC, 0xDB, 0xDC, 0x7A, 0xDC, 0x79, 0xDC, 0x58, 0xDC, 0x38, 0xD4, 0x17, 0xDC, 0x17, 0x01, 0xDC, 0x37, 0x06, 0xDC, 0x17, 0x83, 0xDC, 0x16, 0xDB, 0xF6, 0xDC, 0x17, 0xDC, 0x16, 0x03, 0xDB, 0xF6, 0x80, 0xDC, 0x17, 0x0A, 0xDB, 0xF6, 0x83, 0xDB, 0xD6, 0xDB, 0xF6, 0xD3, 0xD6, 0xDB, 0xD6, 0x02, 0xD3, 0xD6, 0x01, 0xDB, 0xD6, 0x80, 0xD3, 0xD6, 0x02, 0xD3, 0xB6, 0x82, 0xD3, 0xD6, 0xD3, 0xB6, 0xDB, 0xD6, 0x02, 0xD3, 0xB6, 0x80, 0xDB, 0xB6, 0x01, 0xD3, 0xB6, 0x85, 0xD3, 0x96, 0xDB, 0xB6, 0xDB, 0x96, 0xD3, 0x96, 0xD3, 0x75, 0xD3, 0x76, 0x01, 0xDB, 0x96, 0x03, 0xDB, 0x76, + 0x80, 0xDB, 0x96, 0x01, 0xDB, 0x76, 0x01, 0xD3, 0x76, 0x84, 0xD3, 0x96, 0xD3, 0x76, 0xD3, 0x96, 0xD3, 0x76, 0xD3, 0x96, 0x01, 0xCB, 0x96, 0x82, 0xC3, 0x97, 0xBB, 0x76, 0xBB, 0xB7, 0x01, 0xBB, 0xD7, 0x01, 0xB3, 0xD7, 0x80, 0xB3, 0xB7, 0x01, 0xBB, 0xB7, 0xA1, 0xC3, 0xB7, 0xBB, 0x76, 0xC3, 0x97, 0xC3, 0x76, 0xC3, 0x56, 0xCB, 0x76, 0xC3, 0x35, 0xCB, 0x76, 0xBB, 0x76, 0xB3, 0x76, 0xB3, 0xD7, 0xB4, 0x59, 0xA4, 0x7A, 0x94, 0x59, 0x8C, 0x7A, 0x94, 0xDB, 0x8C, 0xBA, 0x7C, 0x39, 0x53, 0x14, 0x5B, 0x76, 0x84, 0x7A, 0x84, 0x9A, 0x6B, 0x76, 0x6B, 0x15, 0x62, 0x94, 0x51, 0xB0, 0x49, 0x4F, 0x51, 0x91, 0x51, 0x92, 0x51, 0x91, 0x51, 0x71, 0x51, 0x92, 0x49, 0x92, 0x49, 0x72, 0x01, 0x49, 0x92, 0x80, 0x41, 0x72, 0x01, 0x41, 0x92, 0x01, 0x41, 0x72, 0x80, 0x41, 0x92, 0x02, 0x39, 0x72, 0x84, 0x39, 0x51, 0x39, 0x72, 0x39, 0x52, 0x39, 0x72, 0x39, 0x71, 0x07, 0x31, 0x51, 0x02, 0x31, 0x31, 0x0A, 0x29, 0x30, 0x80, 0x29, 0x10, 0x06, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x11, 0x11, 0x12, 0x19, 0x74, 0x19, 0xD7, 0x11, 0xB8, 0x09, 0xD9, 0x09, 0xDA, 0x01, 0x01, 0xBA, 0x8A, 0x01, 0xDA, 0x01, 0xFB, 0x09, 0xFA, 0x01, 0xDA, 0x09, 0xB9, 0x11, 0xD9, 0x11, 0xB8, 0x19, 0xD7, 0x21, 0xD6, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, + 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x87, 0x21, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x95, 0x11, 0xD7, 0x09, 0xF8, 0x01, 0x09, 0xF9, 0x01, 0x09, 0xD8, 0x81, 0x09, 0xB7, 0x01, 0x76, 0x01, 0x01, 0x35, 0x82, 0x09, 0x76, 0x09, 0x97, 0x09, 0xF8, 0x03, 0x09, 0xD8, 0x82, 0x09, 0xD7, 0x09, 0x96, 0x01, 0x55, 0x01, 0x01, 0x34, 0x82, 0x09, 0x75, 0x09, 0xB7, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xF8, 0x83, 0x11, 0xD7, 0x09, 0x95, 0x11, 0x54, 0x11, 0x53, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x86, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD8, 0x11, 0xD9, 0x01, 0x09, 0xD9, 0x82, 0x11, 0xD9, 0x09, 0xB8, 0x09, 0x96, 0x01, 0x09, 0x55, 0x82, 0x09, 0x35, 0x09, 0x76, 0x09, 0x97, 0x03, 0x09, 0xF9, 0x88, 0x11, 0xD9, 0x11, 0xB8, 0x09, 0x96, 0x09, 0x75, 0x09, 0x54, 0x09, 0x75, 0x09, 0x76, 0x09, 0x97, 0x09, 0xD8, + 0x02, 0x09, 0xF9, 0x88, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x54, 0x09, 0x34, 0x09, 0x75, 0x09, 0x96, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x84, 0x12, 0x19, 0x11, 0xF9, 0x09, 0xB7, 0x09, 0x96, 0x11, 0x96, 0x01, 0x09, 0x34, 0x81, 0x09, 0x76, 0x09, 0xB8, 0x02, 0x09, 0xF9, 0x84, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0x97, 0x11, 0x96, 0x11, 0x75, 0x01, 0x09, 0x34, 0x81, 0x09, 0x76, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x87, 0x09, 0xFA, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0xB8, 0x11, 0x96, 0x11, 0x74, 0x19, 0x53, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x19, 0x32, 0x82, 0x19, 0x75, 0x11, 0xB6, 0x11, 0xD8, 0x01, 0x09, 0xD9, 0x83, 0x09, 0xD8, 0x01, 0xB8, 0x09, 0xD9, 0x01, 0xD8, 0x01, 0x09, 0xF8, 0x84, 0x11, 0xD8, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x19, 0x33, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, + 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x19, 0x11, 0x86, 0x19, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xF8, 0x1A, 0x18, 0x01, 0x11, 0xD7, 0x83, 0x11, 0xB6, 0x09, 0x74, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x50, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x06, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x89, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, + 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x97, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xF9, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x54, 0x19, 0x53, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0x74, 0x19, 0x95, 0x01, 0x21, 0xD7, 0x80, 0x21, 0xF6, 0x02, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x81, 0x29, 0xF6, 0x21, 0xF6, 0x01, 0x2A, 0x16, 0x07, 0x29, 0xF6, 0x82, 0x2A, 0x16, 0x21, 0xD6, 0x21, 0xF6, 0x01, 0x29, 0xF6, 0x01, 0x21, 0xF6, 0x01, 0x29, 0xF6, 0x03, 0x21, 0xF6, 0x83, 0x19, 0xD6, 0x21, 0xF6, 0x21, 0xF7, 0x19, 0xD7, + 0x01, 0x11, 0xB7, 0x80, 0x09, 0xB7, 0x01, 0x09, 0xD8, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x01, 0x01, 0xDB, 0x80, 0x01, 0xBA, 0x01, 0x09, 0xB9, 0x84, 0x11, 0xD8, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x83, 0x19, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x8D, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x28, 0xF0, 0x28, 0xD0, 0x30, 0x90, 0x38, 0x50, 0x89, 0xF8, 0xCB, 0x1E, 0xDA, 0x9D, 0xE2, 0x7E, 0xEA, 0x3F, 0xF2, 0x3F, 0xFA, 0x3F, 0x01, 0xF9, 0xFF, 0x80, 0xF9, 0xDF, 0x02, 0xF9, 0xFF, 0x8C, 0xF9, 0xDF, 0xF1, 0xFF, 0xFA, 0x1F, 0xF2, 0x3F, 0xEA, 0x3E, 0xE2, 0x3E, 0xDA, 0x9E, 0xD3, 0x1E, 0x79, 0x76, 0x38, 0x50, 0x30, 0xB0, 0x28, 0xCF, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x89, 0x19, 0x11, 0x11, 0x32, 0x22, 0x38, 0x22, 0x39, 0x19, 0xF8, 0x11, 0x76, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, + 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x89, 0x21, 0x10, 0x21, 0x11, 0x19, 0x12, 0x11, 0x13, 0x19, 0xD7, 0x22, 0x18, 0x19, 0xF7, 0x11, 0x75, 0x11, 0x12, 0x19, 0x11, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x0B, 0x29, 0x30, 0x80, 0x29, 0x10, 0x0A, 0x29, 0x30, 0x81, 0x31, 0x50, 0x31, 0x30, 0x02, 0x31, 0x50, 0x07, 0x31, 0x51, 0x06, 0x39, 0x72, 0x04, 0x41, 0x92, 0x80, 0x41, 0x93, 0x01, 0x41, 0x92, 0x81, 0x49, 0x93, 0x49, 0xB3, 0x01, 0x51, 0xB2, 0x01, 0x51, 0x71, 0x8B, 0x59, 0x91, 0x61, 0x91, 0x59, 0x50, 0x69, 0x90, 0x9B, 0x15, 0xE5, 0x1C, 0xDC, 0x9A, 0xD4, 0x59, 0xDC, 0x79, 0xDC, 0x58, 0xDC, 0x37, 0xDC, 0x58, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x17, 0x01, 0xDC, 0x16, 0x80, 0xDC, 0x17, 0x06, 0xDC, 0x16, 0x80, 0xDB, 0xF6, 0x01, 0xDC, 0x16, 0x80, 0xD3, 0xF6, 0x01, 0xDC, 0x17, 0x81, 0xD3, 0xF7, 0xDC, 0x17, 0x05, 0xD3, 0xF6, 0x01, 0xD3, 0xD6, 0x02, 0xD3, 0xF6, 0x85, 0xD3, 0xD6, 0xD3, 0xF6, 0xD3, 0xF7, 0xD3, 0xF6, 0xD3, 0xD6, 0xD3, 0xB6, 0x06, 0xD3, 0xD6, 0x01, 0xD3, 0xB6, 0x80, 0xD3, 0xD6, 0x04, 0xD3, 0xB6, 0x05, 0xD3, 0x96, 0x01, 0xDB, 0x96, 0x80, 0xDB, 0x75, 0x02, 0xDB, 0x76, 0x80, 0xD3, 0x35, 0x01, 0xD3, 0x55, 0x03, 0xD3, 0x76, 0x80, 0xD3, 0x96, 0x02, 0xD3, 0x76, 0x84, 0xCB, 0x96, 0xCB, 0x97, 0xC3, 0x76, 0xBB, 0x76, 0xBB, 0x96, 0x01, 0xBB, 0xB7, 0x80, 0xBB, 0xD7, 0x02, 0xBB, 0xB7, 0x8F, 0xBB, 0x97, 0xBB, 0x76, 0xC3, + 0x76, 0xCB, 0x97, 0xCB, 0x96, 0xCB, 0x76, 0xCB, 0x56, 0xC3, 0x76, 0xBB, 0x55, 0xB3, 0x56, 0xA3, 0x97, 0xA4, 0x19, 0xA4, 0xBB, 0x94, 0x9A, 0x84, 0x7A, 0x84, 0xDB, 0x01, 0x8C, 0xFB, 0x8A, 0x6B, 0xD7, 0x5B, 0x14, 0x6B, 0x55, 0x8B, 0xF8, 0xA4, 0x39, 0xAC, 0x3A, 0xAB, 0xD9, 0x92, 0xF5, 0x71, 0xD2, 0x59, 0x50, 0x59, 0x51, 0x01, 0x59, 0x92, 0x01, 0x51, 0x92, 0x02, 0x49, 0x92, 0x82, 0x41, 0x72, 0x41, 0x93, 0x41, 0x72, 0x02, 0x41, 0x92, 0x02, 0x39, 0x72, 0x81, 0x39, 0x71, 0x39, 0x51, 0x01, 0x39, 0x72, 0x80, 0x39, 0x52, 0x01, 0x39, 0x71, 0x02, 0x31, 0x51, 0x01, 0x31, 0x31, 0x80, 0x31, 0x51, 0x01, 0x31, 0x30, 0x01, 0x29, 0x30, 0x80, 0x31, 0x30, 0x05, 0x29, 0x30, 0x80, 0x29, 0x10, 0x07, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x8F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x19, 0x94, 0x19, 0xD7, 0x11, 0xB7, 0x09, 0xB8, 0x09, 0xDA, 0x04, 0x01, 0xDA, 0x01, 0x09, 0xFA, 0x86, 0x11, 0xD9, 0x11, 0xB8, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x87, 0x21, 0x0F, 0x29, 0x0F, + 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x86, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xF8, 0x85, 0x09, 0xB7, 0x01, 0x56, 0x01, 0x35, 0x01, 0x34, 0x09, 0x55, 0x09, 0xB7, 0x04, 0x09, 0xD8, 0x88, 0x09, 0xD7, 0x09, 0xB7, 0x01, 0x55, 0x09, 0x55, 0x09, 0x54, 0x09, 0x75, 0x09, 0x96, 0x09, 0xD7, 0x09, 0xF8, 0x01, 0x09, 0xD8, 0x8A, 0x09, 0xF7, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x52, 0x19, 0x32, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x54, 0x11, 0x76, 0x11, 0xB8, 0x02, 0x11, 0xD9, 0x82, 0x11, 0xD8, 0x11, 0xB8, 0x11, 0x97, 0x02, 0x09, 0x55, 0x82, 0x09, 0x75, 0x09, 0xB7, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x82, 0x11, 0xF9, 0x11, 0xD8, 0x09, 0x97, 0x01, 0x09, 0x75, 0x84, 0x11, 0x54, 0x09, 0x54, 0x09, 0x76, 0x09, 0x97, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x84, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0x97, 0x11, 0x96, 0x11, 0x75, 0x01, 0x09, 0x54, 0x87, 0x09, 0x75, 0x09, 0x96, 0x09, 0xD7, 0x11, 0xF8, 0x09, 0xF8, 0x11, 0xF9, 0x09, 0xD8, 0x09, 0xB7, 0x01, 0x11, 0xB6, 0x01, 0x09, 0x34, 0x82, 0x09, 0x76, 0x09, 0xD7, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x84, + 0x09, 0xD9, 0x09, 0xB8, 0x09, 0x97, 0x11, 0xB6, 0x11, 0x95, 0x01, 0x09, 0x34, 0x8A, 0x09, 0x76, 0x09, 0xB7, 0x09, 0xD8, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0x96, 0x19, 0x74, 0x19, 0x32, 0x01, 0x19, 0x11, 0x85, 0x18, 0xF0, 0x19, 0x11, 0x19, 0x12, 0x19, 0x54, 0x11, 0x95, 0x19, 0xD8, 0x02, 0x11, 0xF8, 0x82, 0x12, 0x19, 0x09, 0xF8, 0x12, 0x19, 0x01, 0x12, 0x18, 0x88, 0x19, 0xF7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, + 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x88, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x05, 0x29, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x92, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xF7, 0x11, 0xF8, 0x12, 0x18, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x05, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x0B, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x31, 0x19, + 0x32, 0x19, 0x33, 0x11, 0x33, 0x11, 0x55, 0x11, 0xB7, 0x01, 0x11, 0xF8, 0x87, 0x11, 0xF9, 0x19, 0xF8, 0x19, 0xD8, 0x19, 0xB6, 0x19, 0x75, 0x11, 0x13, 0x11, 0x33, 0x19, 0x32, 0x02, 0x19, 0x11, 0x84, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x06, 0x21, 0x10, 0x02, 0x29, 0x10, 0x02, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x84, 0x11, 0x32, 0x19, 0x53, 0x11, 0x54, 0x19, 0x54, 0x19, 0x74, 0x01, 0x19, 0x54, 0x80, 0x19, 0x74, 0x01, 0x19, 0x53, 0x01, 0x19, 0x74, 0x80, 0x19, 0x53, 0x02, 0x19, 0x74, 0x01, 0x19, 0x94, 0x02, 0x19, 0x74, 0x82, 0x19, 0x94, 0x19, 0x74, 0x19, 0x94, 0x04, 0x19, 0x74, 0x82, 0x19, 0x94, 0x21, 0x94, 0x19, 0x74, 0x02, 0x19, 0x94, 0x03, 0x19, 0x95, 0x84, 0x19, 0xB6, 0x11, 0x96, 0x11, 0xD7, 0x09, 0xB7, 0x09, 0xD8, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x82, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xDB, 0x01, 0x01, 0xBA, 0x01, 0x09, 0xB9, 0x86, 0x11, 0xB8, 0x19, 0xB7, 0x19, 0xB5, 0x11, 0x12, 0x19, 0x32, 0x19, 0x51, 0x19, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x28, + 0xF0, 0x8C, 0x30, 0xB0, 0x38, 0x70, 0x69, 0x35, 0xCB, 0x3E, 0xD2, 0xBD, 0xE2, 0x9E, 0xEA, 0x7F, 0xEA, 0x3E, 0xF2, 0x1F, 0xF9, 0xFF, 0xF1, 0xDF, 0xF9, 0xFF, 0xF9, 0xDF, 0x02, 0xF9, 0xFF, 0x8A, 0xFA, 0x1F, 0xF2, 0x1F, 0xF2, 0x5F, 0xEA, 0x3E, 0xE2, 0x7E, 0xD2, 0x9D, 0xD3, 0x5F, 0x50, 0x72, 0x38, 0x50, 0x30, 0xB0, 0x28, 0xF0, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x86, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x88, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x88, 0x19, 0x11, 0x11, 0x12, 0x22, 0x18, 0x22, 0x39, 0x19, 0xD8, 0x11, 0x96, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x31, 0x82, 0x19, 0x12, 0x11, 0x13, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x83, 0x11, 0x95, 0x11, 0x12, 0x19, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x0D, 0x29, 0x30, 0x01, 0x31, 0x30, 0x80, 0x31, 0x50, 0x01, 0x31, 0x30, + 0x82, 0x31, 0x50, 0x31, 0x51, 0x31, 0x50, 0x06, 0x31, 0x51, 0x81, 0x39, 0x51, 0x39, 0x71, 0x05, 0x39, 0x72, 0x01, 0x41, 0x92, 0x80, 0x41, 0x72, 0x01, 0x41, 0x92, 0x80, 0x49, 0x93, 0x01, 0x41, 0x92, 0x8C, 0x49, 0x92, 0x49, 0x93, 0x51, 0xB3, 0x51, 0x92, 0x51, 0x91, 0x51, 0x71, 0x59, 0x91, 0x61, 0xB1, 0x61, 0x90, 0x8A, 0x73, 0xCC, 0x7A, 0xE4, 0xFB, 0xDC, 0x99, 0x02, 0xDC, 0x58, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x17, 0x02, 0xDC, 0x37, 0x01, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x05, 0xDC, 0x16, 0x82, 0xDC, 0x17, 0xDC, 0x16, 0xDC, 0x17, 0x01, 0xD4, 0x16, 0x81, 0xD4, 0x17, 0xD4, 0x16, 0x04, 0xD4, 0x17, 0x81, 0xCC, 0x16, 0xCC, 0x17, 0x02, 0xCB, 0xF6, 0x83, 0xCB, 0xF7, 0xCB, 0xF6, 0xCC, 0x17, 0xCB, 0xF6, 0x01, 0xCB, 0xF7, 0x01, 0xCB, 0xF6, 0x01, 0xCB, 0xD6, 0x82, 0xCB, 0xF7, 0xCB, 0xD6, 0xCB, 0xF6, 0x01, 0xCB, 0xD6, 0x81, 0xCB, 0xF7, 0xCB, 0xD7, 0x03, 0xCB, 0xD6, 0x80, 0xCB, 0xB6, 0x01, 0xCB, 0xD6, 0x01, 0xD3, 0xB6, 0x81, 0xCB, 0xB6, 0xD3, 0xB6, 0x01, 0xD3, 0x96, 0x01, 0xDB, 0x96, 0x02, 0xDB, 0x76, 0x01, 0xDB, 0x55, 0x82, 0xD3, 0x55, 0xDB, 0x76, 0xD3, 0x76, 0x01, 0xDB, 0x76, 0x02, 0xD3, 0x76, 0x80, 0xDB, 0x96, 0x01, 0xD3, 0x56, 0x80, 0xD3, 0x76, 0x01, 0xCB, 0x76, 0x81, 0xC3, 0x76, 0xBB, 0x76, 0x02, 0xBB, 0x97, 0x82, 0xB3, 0x97, 0xB3, 0x96, 0xBB, 0x97, 0x01, 0xBB, 0x76, 0x01, 0xC3, 0x76, 0x80, 0xCB, 0x76, 0x02, 0xC3, 0x56, 0x95, 0xBB, 0x56, 0xAB, 0x56, 0xA3, 0x97, 0x9C, 0x19, 0x9C, 0xBB, 0x84, 0x9A, 0x7C, 0x9A, 0x7C, 0xBA, 0x84, 0xFB, + 0x8C, 0xFB, 0x73, 0xF8, 0x6B, 0x35, 0x8B, 0xB7, 0x9B, 0xD7, 0xA3, 0xB7, 0xB3, 0xB7, 0xB3, 0x77, 0xB3, 0x98, 0x9A, 0xD6, 0x69, 0x91, 0x59, 0x30, 0x59, 0x71, 0x01, 0x59, 0x92, 0x85, 0x51, 0x72, 0x51, 0x92, 0x49, 0x92, 0x49, 0x72, 0x49, 0x92, 0x41, 0x72, 0x02, 0x41, 0x92, 0x01, 0x41, 0x72, 0x03, 0x39, 0x72, 0x81, 0x39, 0x51, 0x39, 0x72, 0x01, 0x39, 0x51, 0x06, 0x31, 0x51, 0x02, 0x31, 0x30, 0x06, 0x29, 0x30, 0x80, 0x29, 0x10, 0x07, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x92, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x19, 0x95, 0x11, 0x97, 0x11, 0xB8, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0xD9, 0x09, 0xFA, 0x01, 0xDA, 0x09, 0xDA, 0x09, 0xD9, 0x09, 0xF9, 0x11, 0xD8, 0x19, 0xB7, 0x19, 0x95, 0x11, 0x12, 0x01, 0x19, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x10, 0x19, 0x31, 0x19, + 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x75, 0x01, 0x11, 0xD7, 0x80, 0x11, 0xF8, 0x01, 0x09, 0xF8, 0x88, 0x09, 0xD7, 0x09, 0x97, 0x01, 0x55, 0x01, 0x34, 0x09, 0x34, 0x09, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x09, 0xD8, 0x02, 0x09, 0xD7, 0x92, 0x11, 0xD7, 0x09, 0x96, 0x09, 0x75, 0x09, 0x55, 0x09, 0x34, 0x09, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xF8, 0x09, 0xD7, 0x11, 0xF8, 0x11, 0xF7, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x74, 0x19, 0x53, 0x19, 0x32, 0x19, 0x51, 0x21, 0x51, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x03, 0x11, 0xD8, 0x8D, 0x11, 0xB7, 0x11, 0x96, 0x09, 0x55, 0x09, 0x54, 0x09, 0x55, 0x09, 0x75, 0x09, 0x96, 0x11, 0xD8, 0x11, 0xF9, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xB8, 0x11, 0xB7, 0x11, 0x95, 0x01, 0x11, 0x54, 0x8A, 0x09, 0x54, 0x09, 0x75, 0x09, 0x96, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x74, 0x01, 0x11, 0x54, 0x89, 0x11, 0x74, 0x09, 0x95, 0x11, 0xD7, 0x11, 0xD8, 0x09, 0xD8, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0xB6, 0x11, 0x95, 0x01, 0x09, 0x34, 0x82, 0x09, 0x96, 0x09, 0xB7, 0x11, 0xF8, 0x01, 0x09, 0xF8, 0x89, 0x11, 0xD8, 0x11, 0xB8, 0x11, 0x97, 0x11, 0x96, 0x11, 0x75, 0x09, 0x13, 0x09, 0x14, 0x09, 0x75, 0x11, 0x97, 0x11, 0xD8, 0x02, 0x09, 0xD8, 0x90, 0x09, 0xB7, 0x11, 0xB7, 0x11, 0x95, 0x19, 0x74, 0x19, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x19, + 0x33, 0x11, 0x54, 0x11, 0x96, 0x19, 0xB7, 0x19, 0xF7, 0x11, 0xD7, 0x19, 0xF8, 0x01, 0x11, 0xF7, 0x01, 0x11, 0xD6, 0x85, 0x11, 0x95, 0x11, 0x53, 0x19, 0x33, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x05, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x89, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, + 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xD7, 0x1A, 0x18, 0x01, 0x12, 0x18, 0x81, 0x11, 0xD7, 0x11, 0x95, 0x01, 0x11, 0x74, 0x81, 0x11, 0x53, 0x19, 0x52, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x91, 0x21, 0x31, 0x21, 0x11, 0x19, 0x32, 0x10, 0xF2, 0x11, 0x13, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD8, 0x11, 0xF8, 0x1A, 0x39, 0x1A, 0x19, 0x19, 0xF8, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, + 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x19, 0x31, 0x19, 0x32, 0x01, 0x11, 0x12, 0x81, 0x19, 0x12, 0x11, 0x32, 0x01, 0x11, 0x12, 0x80, 0x19, 0x12, 0x01, 0x11, 0x12, 0x80, 0x10, 0xF2, 0x03, 0x11, 0x12, 0x80, 0x11, 0x32, 0x02, 0x11, 0x12, 0x80, 0x19, 0x32, 0x02, 0x11, 0x12, 0x80, 0x11, 0x32, 0x01, 0x11, 0x12, 0x02, 0x11, 0x32, 0x80, 0x19, 0x32, 0x01, 0x19, 0x12, 0x03, 0x11, 0x12, 0x80, 0x11, 0x32, 0x01, 0x11, 0x33, 0x82, 0x11, 0x54, 0x11, 0x75, 0x09, 0x76, 0x01, 0x09, 0xB7, 0x82, 0x01, 0xD8, 0x01, 0xD9, 0x01, 0xB9, 0x04, 0x01, 0xBA, 0x86, 0x01, 0xDA, 0x09, 0xD9, 0x09, 0xB9, 0x09, 0x97, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x12, 0x01, 0x19, 0x31, 0x81, 0x19, 0x30, 0x21, 0x50, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x88, 0x28, 0xF0, 0x30, 0xD0, 0x38, 0x90, 0x48, 0x50, 0xB2, 0xBC, 0xD2, 0xFE, 0xDA, 0xBE, 0xE2, 0x5E, 0xEA, 0x3E, 0x01, 0xF2, 0x1F, 0x01, 0xF9, 0xFF, 0x80, 0xFA, 0x1F, 0x03, 0xF1, 0xFF, 0x89, 0xF2, 0x3F, 0xEA, 0x3E, 0xE2, 0x3E, 0xDA, 0x9E, 0xDA, 0xFE, 0xC3, 0x1E, 0x40, 0x0F, + 0x38, 0x70, 0x30, 0xB0, 0x28, 0xF0, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x8D, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x11, 0x11, 0x12, 0x22, 0x18, 0x22, 0x39, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8D, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x31, 0x21, 0x31, 0x19, 0x12, 0x11, 0x13, 0x22, 0x18, 0x1A, 0x39, 0x19, 0xF8, 0x11, 0x95, 0x11, 0x12, 0x19, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x06, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x30, 0x80, 0x29, 0x50, 0x08, 0x29, 0x30, 0x81, 0x31, 0x50, 0x31, 0x30, 0x03, 0x31, 0x50, 0x04, 0x31, 0x51, 0x01, 0x31, 0x71, 0x01, 0x31, 0x51, 0x81, 0x39, 0x51, 0x39, 0x71, 0x03, 0x39, 0x72, 0x02, 0x41, 0x72, 0x04, 0x41, 0x92, 0x84, 0x49, 0x92, 0x49, 0xB3, 0x49, 0xB2, 0x49, 0x92, 0x49, 0x71, 0x01, 0x51, 0x71, 0x88, 0x59, 0x70, 0x69, 0x90, 0x79, 0xF1, 0xBB, 0xD8, 0xE5, 0x1C, 0xDC, 0x9A, 0xDC, 0x79, 0xDC, 0x58, 0xE4, 0x79, + 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x58, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x17, 0x04, 0xDC, 0x16, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x16, 0x01, 0xDB, 0xF6, 0x01, 0xDC, 0x16, 0x83, 0xD4, 0x16, 0xD3, 0xF6, 0xD4, 0x17, 0xCC, 0x16, 0x02, 0xCC, 0x37, 0x01, 0xC4, 0x37, 0x80, 0xC4, 0x17, 0x01, 0xC4, 0x37, 0x01, 0xC4, 0x17, 0x80, 0xC4, 0x37, 0x02, 0xBC, 0x17, 0x82, 0xC4, 0x37, 0xBC, 0x17, 0xBC, 0x37, 0x02, 0xBC, 0x17, 0x80, 0xC4, 0x17, 0x03, 0xBC, 0x17, 0x80, 0xBB, 0xF7, 0x01, 0xBB, 0xF6, 0x80, 0xC3, 0xF7, 0x04, 0xC3, 0xF6, 0x02, 0xC3, 0xD6, 0x82, 0xC3, 0xB6, 0xCB, 0xB6, 0xCB, 0xB5, 0x01, 0xCB, 0x95, 0x81, 0xD3, 0x75, 0xD3, 0x76, 0x01, 0xD3, 0x55, 0x01, 0xDB, 0x96, 0x84, 0xDB, 0x76, 0xDB, 0x56, 0xDB, 0x75, 0xDB, 0x76, 0xD3, 0x55, 0x01, 0xD3, 0x75, 0x06, 0xD3, 0x56, 0x84, 0xD3, 0x76, 0xCB, 0x76, 0xCB, 0x56, 0xC3, 0x56, 0xC3, 0x77, 0x01, 0xBB, 0x97, 0x80, 0xBB, 0x77, 0x01, 0xBB, 0x97, 0x83, 0xB3, 0x56, 0xBB, 0x76, 0xBB, 0x56, 0xC3, 0x76, 0x01, 0xCB, 0x76, 0x01, 0xC3, 0x76, 0x98, 0xB3, 0x36, 0xA3, 0x36, 0x93, 0x76, 0x8B, 0xF8, 0x84, 0x19, 0x84, 0xBB, 0x8D, 0x3C, 0x7C, 0xFB, 0x74, 0x9A, 0x8C, 0xDB, 0x8C, 0x9A, 0x83, 0xB7, 0x93, 0x96, 0x9B, 0x76, 0xAB, 0x77, 0xB3, 0x77, 0xB3, 0x57, 0xBB, 0x78, 0xBB, 0x98, 0xA2, 0xD6, 0x71, 0x91, 0x59, 0x10, 0x59, 0x71, 0x61, 0x92, 0x59, 0x92, 0x01, 0x51, 0x92, 0x01, 0x49, 0x92, 0x02, 0x41, 0x92, 0x02, 0x41, 0x72, 0x01, 0x41, 0x92, 0x01, 0x39, 0x71, 0x81, 0x39, 0x92, 0x39, 0x72, 0x01, 0x39, 0x71, 0x05, 0x31, + 0x51, 0x85, 0x31, 0x31, 0x31, 0x51, 0x31, 0x30, 0x31, 0x31, 0x31, 0x30, 0x31, 0x50, 0x01, 0x29, 0x50, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x0B, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x86, 0x19, 0x32, 0x19, 0x74, 0x11, 0x75, 0x11, 0xB7, 0x19, 0xF8, 0x12, 0x19, 0x12, 0x1A, 0x01, 0x09, 0xD9, 0x88, 0x09, 0xB9, 0x11, 0xF9, 0x1A, 0x19, 0x19, 0xF8, 0x21, 0xF7, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x19, 0x95, 0x22, 0x17, 0x01, 0x11, 0xF7, 0x01, 0x11, 0xF8, 0x87, 0x1A, 0x18, 0x11, 0xB7, 0x09, 0x55, 0x09, 0x34, 0x09, 0x14, 0x09, 0x75, 0x11, 0xB6, 0x11, 0xF7, + 0x03, 0x11, 0xD7, 0x81, 0x19, 0xF7, 0x11, 0x96, 0x02, 0x09, 0x54, 0x82, 0x11, 0x75, 0x11, 0xB6, 0x1A, 0x18, 0x01, 0x11, 0xF8, 0x86, 0x11, 0xF7, 0x1A, 0x17, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x53, 0x19, 0x52, 0x19, 0x51, 0x01, 0x21, 0x51, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0xA4, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0x95, 0x19, 0xD7, 0x19, 0xD8, 0x19, 0xF8, 0x11, 0xF8, 0x19, 0xD8, 0x19, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x34, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xF8, 0x11, 0xF9, 0x12, 0x19, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x95, 0x11, 0x54, 0x09, 0x33, 0x11, 0x54, 0x09, 0x74, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xF8, 0x12, 0x18, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x19, 0xB5, 0x11, 0x74, 0x01, 0x11, 0x53, 0x82, 0x11, 0x54, 0x11, 0x75, 0x11, 0xD6, 0x01, 0x11, 0xF7, 0x88, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x19, 0xD6, 0x11, 0xB5, 0x09, 0x33, 0x09, 0x13, 0x09, 0x75, 0x11, 0xB6, 0x03, 0x11, 0xF8, 0x83, 0x11, 0xB7, 0x11, 0x96, 0x19, 0xB6, 0x11, 0x75, 0x01, 0x09, 0x13, 0x83, 0x11, 0x75, 0x11, 0x96, 0x19, 0xD8, 0x11, 0xD8, 0x01, 0x11, 0xF8, 0x8C, 0x11, 0xB7, 0x11, 0xB6, 0x19, 0xB5, 0x19, 0x53, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x13, 0x11, 0x33, 0x02, 0x11, 0x54, 0x87, 0x11, 0x75, 0x11, 0x74, 0x11, 0x33, 0x11, 0x54, 0x19, 0x74, 0x19, 0x53, 0x11, 0x12, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x03, 0x21, + 0x2F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x50, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8D, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xF8, 0x1A, 0x19, 0x11, 0xF8, 0x11, 0xF7, + 0x11, 0xB6, 0x09, 0x74, 0x11, 0x74, 0x11, 0x53, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x15, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x90, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD7, 0x12, 0x18, 0x1A, 0x39, 0x1A, 0x19, 0x19, 0xF8, 0x19, 0xB7, 0x11, 0x55, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x4F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, + 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x12, 0x01, 0x19, 0x32, 0x80, 0x19, 0x12, 0x02, 0x19, 0x11, 0x81, 0x19, 0x32, 0x19, 0x12, 0x01, 0x19, 0x11, 0x80, 0x19, 0x32, 0x01, 0x19, 0x11, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x12, 0x02, 0x19, 0x32, 0x80, 0x19, 0x12, 0x01, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x12, 0x80, 0x19, 0x32, 0x02, 0x19, 0x12, 0x8A, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x53, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x09, 0xD7, 0x09, 0xD8, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xDB, 0x01, 0x01, 0xDA, 0x86, 0x09, 0xDA, 0x09, 0xD9, 0x09, 0xB9, 0x09, 0x97, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x12, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x28, 0xEF, 0x8D, 0x30, 0xF0, 0x38, 0xB0, 0x40, 0x50, 0x79, 0x55, 0xD3, 0x3E, 0xD2, 0xBE, 0xDA, 0x7E, 0xEA, 0x5E, 0xF2, 0x5F, 0xF2, 0x3F, 0xFA, 0x3F, 0xF2, 0x1F, 0xFA, 0x1F, 0xF1, 0xFF, 0x01, 0xF2, 0x1F, 0x8A, 0xF2, 0x3F, 0xEA, 0x3E, 0xE2, 0x5E, 0xE2, 0x7E, 0xDA, 0xBE, 0xDB, 0x5F, 0x89, 0xB7, 0x38, 0x0F, 0x30, 0x90, 0x28, 0xB0, 0x28, 0xF0, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, + 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x8C, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x11, 0x12, 0x22, 0x18, 0x22, 0x39, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x8F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x31, 0x21, 0x31, 0x21, 0x32, 0x19, 0x12, 0x11, 0x13, 0x22, 0x18, 0x1A, 0x19, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x11, 0x29, 0x30, 0x81, 0x31, 0x50, 0x31, 0x30, 0x04, 0x31, 0x50, 0x80, 0x31, 0x51, 0x01, 0x31, 0x50, 0x81, 0x31, 0x51, 0x31, 0x50, 0x01, 0x31, 0x51, 0x02, 0x31, 0x71, 0x80, 0x31, 0x51, 0x01, 0x39, 0x71, 0x03, 0x39, 0x72, 0x02, 0x41, 0x72, 0x03, 0x41, 0x92, 0x80, 0x49, 0xB3, 0x04, 0x49, 0x92, 0x89, 0x51, 0x92, 0x51, 0x91, 0x51, 0x70, 0x59, 0x70, 0x69, 0x90, 0x9A, 0xF4, 0xDC, 0xFC, 0xDC, 0xBB, 0xDC, 0x99, 0xDC, 0x59, 0x01, 0xDC, 0x58, 0x81, 0xDC, 0x37, 0xDC, 0x17, 0x02, 0xDC, 0x37, 0x83, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x16, 0xDC, 0x17, 0x04, 0xDC, 0x16, 0x82, 0xDB, 0xF6, 0xDC, 0x16, 0xDB, 0xF6, 0x01, 0xDC, 0x16, 0x88, 0xD4, 0x16, 0xD4, 0x17, 0xCC, 0x17, 0xCC, 0x37, 0xC4, 0x37, 0xC4, 0x78, 0xBC, 0x57, 0xBC, + 0x78, 0xB4, 0x57, 0x01, 0xB4, 0x77, 0x83, 0xB4, 0x98, 0xB4, 0x78, 0xB4, 0x98, 0xAC, 0x78, 0x01, 0xB4, 0x78, 0x01, 0xAC, 0x78, 0x85, 0xB4, 0x98, 0xAC, 0x78, 0xB4, 0x98, 0xB4, 0x78, 0xB4, 0x98, 0xAC, 0x78, 0x01, 0xB4, 0x78, 0x83, 0xB4, 0x98, 0xB4, 0x78, 0xB4, 0x98, 0xB4, 0x78, 0x03, 0xB4, 0x58, 0x82, 0xB4, 0x57, 0xB4, 0x37, 0xBC, 0x58, 0x01, 0xBC, 0x37, 0x83, 0xB4, 0x17, 0xBC, 0x17, 0xC4, 0x17, 0xC3, 0xF6, 0x01, 0xC3, 0xD6, 0x81, 0xCB, 0xB5, 0xD3, 0xB6, 0x01, 0xCB, 0x75, 0x85, 0xD3, 0x55, 0xD3, 0x96, 0xDB, 0x96, 0xD3, 0x76, 0xDB, 0x76, 0xD3, 0x75, 0x01, 0xD3, 0x76, 0x82, 0xD3, 0x55, 0xD3, 0x75, 0xD3, 0x55, 0x02, 0xD3, 0x56, 0x80, 0xD3, 0x35, 0x03, 0xD3, 0x56, 0x83, 0xCB, 0x56, 0xCB, 0x76, 0xC3, 0x56, 0xC3, 0x77, 0x01, 0xC3, 0x97, 0x02, 0xBB, 0x76, 0x01, 0xBB, 0x56, 0x81, 0xC3, 0x76, 0xC3, 0x56, 0x02, 0xC3, 0x76, 0x86, 0xBB, 0x56, 0xB3, 0x56, 0xA3, 0x77, 0x93, 0x97, 0x8B, 0xD8, 0x84, 0x39, 0x8D, 0x1C, 0x01, 0x7C, 0xFB, 0x89, 0x74, 0x9A, 0x7C, 0x7A, 0x94, 0xBB, 0x8B, 0xD7, 0x93, 0x76, 0xA3, 0x77, 0xAB, 0x56, 0xBB, 0x77, 0xBB, 0x57, 0xBB, 0x78, 0x01, 0xBB, 0x58, 0x87, 0x9A, 0xB6, 0x61, 0x30, 0x59, 0x10, 0x59, 0x72, 0x59, 0x92, 0x51, 0x92, 0x49, 0x72, 0x51, 0xB3, 0x01, 0x49, 0x92, 0x81, 0x41, 0x92, 0x41, 0x72, 0x01, 0x41, 0x92, 0x80, 0x41, 0x72, 0x04, 0x39, 0x72, 0x80, 0x39, 0x51, 0x01, 0x39, 0x71, 0x06, 0x31, 0x51, 0x83, 0x31, 0x30, 0x31, 0x51, 0x31, 0x30, 0x31, 0x50, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x09, 0x29, 0x30, + 0x8A, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8F, 0x19, 0x52, 0x19, 0x54, 0x19, 0x75, 0x11, 0x96, 0x19, 0xD7, 0x19, 0xF8, 0x11, 0xD8, 0x11, 0xB8, 0x11, 0xD8, 0x19, 0xD8, 0x21, 0xF8, 0x21, 0xD6, 0x19, 0x54, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x05, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x87, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x11, 0x19, 0x31, 0x01, 0x19, 0x32, 0x82, 0x19, 0x74, 0x19, 0xD5, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x80, 0x19, 0xD7, 0x01, 0x19, 0xD6, 0x85, 0x11, 0x54, 0x09, 0x34, 0x09, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF6, 0x01, 0x19, 0xD7, 0x85, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x53, 0x01, 0x11, 0x74, 0x81, 0x19, 0xB5, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x87, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xB5, 0x19, 0x74, + 0x19, 0x53, 0x19, 0x52, 0x19, 0x51, 0x21, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x92, 0x19, 0x31, 0x19, 0x52, 0x19, 0x53, 0x19, 0x74, 0x19, 0x95, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x54, 0x11, 0x74, 0x11, 0x95, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xF7, 0x01, 0x19, 0xD7, 0x81, 0x19, 0xB6, 0x19, 0x74, 0x02, 0x11, 0x53, 0x8A, 0x09, 0x53, 0x11, 0x95, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xF7, 0x11, 0xD7, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x73, 0x11, 0x52, 0x01, 0x11, 0x53, 0x86, 0x11, 0x74, 0x11, 0xB5, 0x19, 0xF6, 0x19, 0xF7, 0x11, 0xD6, 0x11, 0xB6, 0x19, 0xB6, 0x01, 0x19, 0xB5, 0x83, 0x09, 0x33, 0x09, 0x13, 0x11, 0x74, 0x11, 0xB6, 0x03, 0x11, 0xD7, 0x83, 0x11, 0xB6, 0x19, 0x96, 0x19, 0x95, 0x19, 0x74, 0x01, 0x11, 0x33, 0x83, 0x11, 0x54, 0x11, 0x96, 0x19, 0xB6, 0x11, 0xB7, 0x01, 0x11, 0xD6, 0x86, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x94, 0x19, 0x53, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x33, 0x01, 0x11, 0x32, 0x01, 0x19, 0x32, 0x80, 0x11, 0x12, 0x01, 0x19, 0x32, 0x84, 0x19, 0x31, 0x19, 0x10, 0x21, 0x31, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x30, 0x0D, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, + 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8D, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x51, 0x21, 0x51, 0x21, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x96, 0x11, 0xD7, 0x02, 0x1A, 0x18, 0x84, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x55, 0x11, 0x33, 0x11, 0x53, 0x01, 0x19, 0x32, 0x02, 0x21, 0x31, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x09, 0x21, 0x30, 0x81, 0x21, 0x10, + 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x84, 0x21, 0x31, 0x29, 0x31, 0x21, 0x10, 0x21, 0x30, 0x29, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x03, 0x21, 0x10, 0x81, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x86, 0x21, 0x52, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x11, 0x54, 0x11, 0x96, 0x19, 0xF8, 0x01, 0x1A, 0x19, 0x89, 0x1A, 0x39, 0x19, 0xF8, 0x19, 0xB7, 0x11, 0x34, 0x11, 0x13, 0x10, 0xF1, 0x18, 0xF1, 0x21, 0x11, 0x21, 0x10, 0x21, 0x51, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0E, 0x01, + 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x50, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x86, 0x19, 0x31, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x11, 0x05, 0x19, 0x31, 0x80, 0x21, 0x31, 0x05, 0x19, 0x31, 0x86, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x19, 0x32, 0x19, 0x31, 0x19, 0x52, 0x01, 0x19, 0x32, 0x01, 0x11, 0x12, 0x86, 0x11, 0x33, 0x09, 0x55, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xF9, 0x0A, 0x1A, 0x09, 0xFA, 0x03, 0x01, 0xDA, 0x88, 0x0A, 0x1B, 0x12, 0x1A, 0x09, 0xD9, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x28, 0xF0, 0x89, 0x30, 0xD0, 0x40, 0x90, 0x48, 0x50, 0xA2, 0x5A, 0xD3, 0x3E, 0xDA, 0x9E, 0xDA, 0x5E, 0xEA, 0x5E, 0xF2, 0x3F, 0xF2, 0x1F, 0x01, 0xF2, 0x1E, 0x01, 0xF2, 0x5F, 0x8D, 0xEA, 0x1E, 0xEA, 0x3E, 0xE2, 0x3E, 0xE2, 0x7E, 0xDA, 0xBE, 0xDB, 0x3F, 0xBA, 0xDC, 0x50, 0x51, 0x38, 0x70, 0x30, 0xB0, 0x28, 0xD0, 0x28, 0xF0, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, + 0x8A, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x12, 0x11, 0x33, 0x01, 0x19, 0xF8, 0x84, 0x1A, 0x19, 0x11, 0xB7, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x19, 0x30, 0x21, 0x51, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x8E, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x33, 0x11, 0x54, 0x19, 0xF8, 0x11, 0xF8, 0x1A, 0x18, 0x19, 0xD6, 0x11, 0x53, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x29, 0x50, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x0D, 0x29, 0x30, 0x80, 0x29, 0x10, 0x06, 0x29, 0x30, 0x80, 0x31, 0x30, 0x02, 0x31, 0x50, 0x02, 0x31, 0x51, 0x80, 0x31, 0x50, 0x03, 0x31, 0x51, 0x01, 0x39, 0x71, 0x01, 0x31, 0x71, 0x82, 0x31, 0x51, 0x39, 0x71, 0x39, 0x92, 0x03, 0x39, 0x72, 0x80, 0x41, 0x72, 0x03, 0x41, 0x92, 0x80, 0x49, 0x93, 0x01, 0x49, 0xB3, 0x80, 0x49, 0xB2, 0x02, 0x49, 0x92, 0x89, 0x51, 0x92, 0x51, 0x71, 0x59, 0x71, 0x61, 0x70, 0x7A, 0x11, 0xC4, 0x39, 0xED, 0x3C, 0xDC, 0x79, 0xD4, 0x58, 0xDC, 0x78, 0x01, 0xDC, 0x58, 0x01, 0xDC, 0x37, 0x81, 0xE4, 0x37, 0xDC, 0x17, 0x02, 0xDC, 0x16, 0x80, 0xDC, 0x37, 0x04, 0xDC, 0x16, 0x81, 0xDB, 0xF6, 0xDC, 0x16, 0x02, 0xDB, 0xF6, 0x8F, 0xDC, 0x16, 0xDC, 0x37, 0xD4, 0x37, 0xD4, 0x57, 0xCC, 0x57, 0xBC, 0x57, 0xB4, 0x57, 0xAC, 0x78, 0xA4, 0x57, 0xA4, 0x98, 0x94, 0x77, 0x94, 0x97, 0x8C, 0x77, 0x94, 0xB8, 0x8C, 0x97, 0x8C, 0x98, 0x02, 0x8C, 0x77, 0x80, 0x8C, + 0x98, 0x01, 0x8C, 0x77, 0x81, 0x84, 0x57, 0x8C, 0x57, 0x01, 0x84, 0x57, 0x82, 0x84, 0x36, 0x8C, 0x57, 0x84, 0x37, 0x01, 0x84, 0x36, 0x84, 0x8C, 0x37, 0x84, 0x16, 0x8C, 0x16, 0x83, 0xF6, 0x8C, 0x16, 0x02, 0x8B, 0xF6, 0x01, 0x94, 0x16, 0x88, 0x9C, 0x37, 0x9C, 0x17, 0xA4, 0x17, 0xA4, 0x16, 0xB4, 0x37, 0xB4, 0x17, 0xBB, 0xF7, 0xC3, 0xF7, 0xC3, 0xF6, 0x01, 0xCB, 0xD6, 0x81, 0xCB, 0x96, 0xD3, 0xB6, 0x01, 0xD3, 0x96, 0x80, 0xD3, 0x76, 0x01, 0xD3, 0x75, 0x81, 0xCB, 0x55, 0xD3, 0x75, 0x01, 0xD3, 0x76, 0x01, 0xD3, 0x56, 0x83, 0xDB, 0x76, 0xDB, 0x56, 0xD3, 0x35, 0xD3, 0x56, 0x01, 0xD3, 0x36, 0x85, 0xD3, 0x56, 0xCB, 0x36, 0xD3, 0x56, 0xCB, 0x56, 0xC3, 0x36, 0xC3, 0x56, 0x01, 0xC3, 0x76, 0x85, 0xC3, 0x56, 0xBB, 0x35, 0xB3, 0x35, 0xBB, 0x36, 0xC3, 0x77, 0xC3, 0x76, 0x01, 0xC3, 0x56, 0x01, 0xC3, 0x77, 0x85, 0xB3, 0x56, 0xA3, 0x56, 0x93, 0x77, 0x83, 0x97, 0x7C, 0x18, 0x85, 0x1C, 0x01, 0x7D, 0x1C, 0x87, 0x6C, 0x9A, 0x6C, 0x59, 0x84, 0x59, 0x8B, 0xD8, 0x8B, 0x56, 0xA3, 0x56, 0xAB, 0x57, 0xBB, 0x37, 0x01, 0xBB, 0x57, 0x86, 0xBB, 0x37, 0xBB, 0x58, 0xBB, 0x78, 0x92, 0x54, 0x61, 0x0F, 0x59, 0x10, 0x59, 0x71, 0x01, 0x51, 0x72, 0x04, 0x49, 0x92, 0x80, 0x41, 0x92, 0x01, 0x41, 0x72, 0x80, 0x41, 0x92, 0x02, 0x39, 0x72, 0x02, 0x39, 0x71, 0x01, 0x31, 0x51, 0x80, 0x39, 0x71, 0x04, 0x31, 0x51, 0x83, 0x31, 0x31, 0x31, 0x30, 0x31, 0x51, 0x31, 0x50, 0x08, 0x29, 0x30, 0x01, 0x29, 0x10, 0x08, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, + 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x21, 0x52, 0x19, 0x33, 0x19, 0x53, 0x11, 0x54, 0x11, 0x75, 0x19, 0x95, 0x01, 0x19, 0x96, 0x83, 0x19, 0x54, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x52, 0x82, 0x11, 0x53, 0x11, 0x54, 0x19, 0x74, 0x03, 0x11, 0x74, 0x88, 0x11, 0x54, 0x19, 0x73, 0x11, 0x53, 0x19, 0x73, 0x19, 0x74, 0x19, 0x94, 0x19, 0x95, 0x11, 0x95, 0x19, 0x94, 0x01, 0x11, 0x74, 0x84, 0x19, 0x73, 0x11, 0x53, 0x19, 0x53, 0x11, 0x53, 0x19, 0x73, 0x01, 0x19, 0x74, 0x02, 0x11, 0x74, 0x01, 0x11, 0x53, 0x80, 0x19, 0x52, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x05, 0x21, 0x30, 0x82, 0x19, 0x31, 0x19, 0x52, 0x19, 0x53, 0x01, 0x19, 0x74, 0x84, 0x19, 0x94, 0x19, 0x95, + 0x11, 0x74, 0x11, 0x53, 0x19, 0x73, 0x01, 0x19, 0x53, 0x82, 0x11, 0x53, 0x11, 0x74, 0x11, 0x94, 0x03, 0x11, 0x95, 0x83, 0x19, 0x95, 0x19, 0x74, 0x19, 0x53, 0x11, 0x32, 0x01, 0x19, 0x52, 0x80, 0x19, 0x73, 0x01, 0x11, 0x94, 0x88, 0x11, 0x95, 0x11, 0xB5, 0x19, 0xB5, 0x19, 0x94, 0x19, 0x74, 0x19, 0x73, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x01, 0x19, 0x73, 0x81, 0x19, 0x94, 0x11, 0x94, 0x01, 0x19, 0xB5, 0x82, 0x11, 0x94, 0x11, 0x74, 0x19, 0x74, 0x01, 0x19, 0x53, 0x81, 0x11, 0x52, 0x19, 0x74, 0x01, 0x11, 0x94, 0x80, 0x11, 0x95, 0x01, 0x19, 0xB5, 0x81, 0x11, 0x74, 0x19, 0x54, 0x03, 0x19, 0x53, 0x01, 0x11, 0x74, 0x82, 0x19, 0x95, 0x19, 0xB5, 0x19, 0x95, 0x01, 0x19, 0x94, 0x80, 0x19, 0x74, 0x01, 0x19, 0x52, 0x81, 0x21, 0x51, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x31, 0x19, 0x10, 0x01, 0x19, 0x31, 0x82, 0x19, 0x32, 0x19, 0x52, 0x19, 0x32, 0x01, 0x19, 0x52, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x19, 0x31, 0x21, 0x51, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, + 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x51, 0x8E, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x1A, 0x19, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0xD7, 0x11, 0x96, 0x09, 0x55, 0x09, 0x34, 0x11, 0x33, 0x19, 0x33, 0x01, 0x19, 0x32, 0x82, 0x21, 0x32, 0x21, 0x31, 0x19, 0x31, 0x0A, 0x21, 0x31, 0x81, 0x19, 0x30, 0x19, 0x31, 0x17, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x52, 0x80, 0x21, 0x51, 0x0D, 0x21, 0x31, 0x80, 0x21, 0x32, 0x09, 0x21, 0x31, + 0x80, 0x29, 0x31, 0x03, 0x21, 0x31, 0x01, 0x21, 0x52, 0x87, 0x21, 0x32, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x53, 0x11, 0x75, 0x11, 0xB6, 0x19, 0xF8, 0x01, 0x1A, 0x19, 0x86, 0x1A, 0x39, 0x19, 0xF8, 0x19, 0xB7, 0x11, 0x75, 0x11, 0x13, 0x10, 0xF1, 0x18, 0xF1, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x08, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0E, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x31, 0x82, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x19, 0x10, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x19, 0x10, 0x21, 0x11, 0x02, 0x21, 0x31, 0x88, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x05, 0x19, 0x31, 0x89, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x09, 0xB7, 0x11, 0xD8, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0xDA, 0x02, 0x09, 0xFA, 0x88, 0x12, 0x19, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, + 0x19, 0x30, 0x05, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x9B, 0x28, 0xF0, 0x30, 0xD0, 0x38, 0xB0, 0x40, 0x70, 0x50, 0x30, 0xBA, 0xBC, 0xDB, 0x5F, 0xDA, 0x9E, 0xE2, 0x7E, 0xE2, 0x3E, 0xEA, 0x5F, 0xEA, 0x3E, 0xEA, 0x5E, 0xEA, 0x5F, 0xEA, 0x5E, 0xE2, 0x3E, 0xE2, 0x5E, 0xDA, 0x5D, 0xD2, 0x9D, 0xD3, 0x1E, 0xD3, 0x9F, 0x60, 0xB3, 0x40, 0x50, 0x38, 0x90, 0x30, 0xD0, 0x28, 0xD0, 0x28, 0xF0, 0x29, 0x10, 0x08, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x34, 0x19, 0xF8, 0x12, 0x19, 0x11, 0xF9, 0x19, 0xF8, 0x09, 0x54, 0x11, 0x53, 0x19, 0x53, 0x19, 0x32, 0x01, 0x19, 0x31, 0x95, 0x21, 0x51, 0x21, 0x30, 0x19, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x31, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x55, 0x19, 0xD8, 0x1A, 0x19, 0x19, 0xF8, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x85, 0x29, 0x51, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x0F, 0x29, 0x30, 0x80, 0x31, 0x30, 0x02, 0x31, 0x50, 0x81, 0x31, + 0x51, 0x31, 0x30, 0x05, 0x31, 0x51, 0x80, 0x39, 0x51, 0x01, 0x31, 0x51, 0x80, 0x39, 0x71, 0x02, 0x31, 0x51, 0x02, 0x39, 0x72, 0x81, 0x39, 0x92, 0x39, 0x72, 0x01, 0x41, 0x72, 0x03, 0x41, 0x92, 0x82, 0x49, 0x93, 0x49, 0xB3, 0x49, 0xB2, 0x01, 0x49, 0x92, 0x01, 0x51, 0x92, 0x01, 0x51, 0x91, 0x87, 0x59, 0x50, 0x59, 0x2E, 0xA3, 0x36, 0xDC, 0xDB, 0xE4, 0xBA, 0xDC, 0x59, 0xDC, 0x79, 0xDC, 0x58, 0x02, 0xDC, 0x37, 0x02, 0xDC, 0x17, 0x81, 0xDC, 0x37, 0xDC, 0x17, 0x02, 0xDC, 0x16, 0x80, 0xDC, 0x37, 0x03, 0xDC, 0x16, 0x82, 0xE4, 0x17, 0xDC, 0x16, 0xDB, 0xF6, 0x01, 0xDC, 0x16, 0x89, 0xDC, 0x37, 0xD4, 0x57, 0xD4, 0x78, 0xC4, 0x57, 0xBC, 0x78, 0xA4, 0x57, 0x94, 0x57, 0x94, 0x97, 0x84, 0x77, 0x84, 0xD8, 0x01, 0x74, 0xB7, 0x80, 0x74, 0xD7, 0x01, 0x6C, 0xB7, 0x80, 0x74, 0xD8, 0x05, 0x6C, 0xB7, 0x03, 0x6C, 0x97, 0x80, 0x6C, 0xB7, 0x03, 0x6C, 0x97, 0x81, 0x74, 0x97, 0x6C, 0x77, 0x01, 0x74, 0x97, 0x80, 0x74, 0x77, 0x01, 0x74, 0x57, 0x81, 0x74, 0x36, 0x6C, 0x16, 0x01, 0x6B, 0xF5, 0x80, 0x6B, 0xB4, 0x01, 0x73, 0xB4, 0x84, 0x83, 0xD5, 0x8B, 0xF5, 0x9B, 0xF6, 0xA3, 0xF6, 0xAB, 0xF6, 0x01, 0xB3, 0xF6, 0x83, 0xB3, 0xD6, 0xBB, 0xD6, 0xBB, 0xB6, 0xC3, 0xD7, 0x01, 0xC3, 0xB6, 0x83, 0xC3, 0x75, 0xCB, 0xB6, 0xCB, 0x96, 0xCB, 0x75, 0x01, 0xCB, 0x76, 0x01, 0xD3, 0x76, 0x84, 0xD3, 0x55, 0xD3, 0x56, 0xD3, 0x35, 0xD3, 0x36, 0xD3, 0x56, 0x01, 0xD3, 0x36, 0x80, 0xD3, 0x56, 0x02, 0xCB, 0x36, 0x81, 0xCB, 0x56, 0xCB, 0x76, 0x01, 0xC3, 0x56, 0x83, 0xBB, 0x15, + 0xBB, 0x35, 0xBB, 0x36, 0xC3, 0x56, 0x01, 0xC3, 0x36, 0x88, 0xCB, 0x56, 0xC3, 0x76, 0xBB, 0x56, 0xB3, 0x56, 0xA3, 0x57, 0x93, 0xB8, 0x7B, 0xB7, 0x7C, 0x5A, 0x7C, 0xFC, 0x01, 0x75, 0x3C, 0x92, 0x6C, 0xDB, 0x74, 0xBA, 0x84, 0x9A, 0x8C, 0x18, 0x8B, 0x56, 0xA3, 0x57, 0xAB, 0x57, 0xBB, 0x78, 0xB2, 0xF6, 0xBB, 0x37, 0xBB, 0x16, 0xBB, 0x57, 0xC3, 0x78, 0xB3, 0x17, 0x79, 0xB2, 0x58, 0xEF, 0x59, 0x51, 0x59, 0x72, 0x51, 0x72, 0x01, 0x51, 0x92, 0x01, 0x49, 0x92, 0x01, 0x41, 0x72, 0x01, 0x41, 0x92, 0x82, 0x41, 0x72, 0x39, 0x72, 0x39, 0x92, 0x02, 0x39, 0x72, 0x02, 0x39, 0x71, 0x82, 0x31, 0x71, 0x31, 0x51, 0x31, 0x71, 0x01, 0x31, 0x51, 0x85, 0x31, 0x30, 0x31, 0x31, 0x31, 0x30, 0x31, 0x51, 0x29, 0x30, 0x29, 0x50, 0x07, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x32, 0x01, 0x19, 0x32, 0x01, 0x19, 0x33, 0x87, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x18, 0xF1, 0x19, 0x11, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, + 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x09, 0x21, 0x10, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x32, 0x01, 0x19, 0x33, 0x80, 0x11, 0x32, 0x01, 0x11, 0x33, 0x81, 0x11, 0x32, 0x19, 0x33, 0x04, 0x11, 0x32, 0x81, 0x11, 0x52, 0x11, 0x53, 0x03, 0x11, 0x32, 0x03, 0x19, 0x32, 0x83, 0x19, 0x52, 0x19, 0x33, 0x11, 0x33, 0x19, 0x53, 0x01, 0x19, 0x33, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x02, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x01, 0x19, 0x52, 0x81, 0x19, 0x53, 0x11, 0x52, 0x01, 0x19, 0x52, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x52, 0x04, 0x11, 0x53, 0x01, 0x19, 0x53, 0x86, 0x19, 0x32, 0x19, 0x31, 0x19, 0x51, 0x19, 0x72, 0x19, 0x52, 0x11, 0x52, 0x11, 0x73, 0x03, 0x11, 0x53, 0x02, 0x19, 0x52, 0x01, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x52, 0x80, 0x11, 0x52, 0x02, 0x11, 0x53, 0x80, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x19, 0x52, 0x82, 0x11, 0x52, 0x11, 0x53, 0x11, 0x73, 0x02, 0x11, 0x53, 0x80, 0x19, 0x53, 0x02, 0x19, 0x32, 0x83, 0x19, 0x52, 0x19, 0x32, 0x19, 0x52, 0x11, 0x52, 0x02, 0x11, 0x53, 0x80, 0x11, 0x52, 0x01, 0x19, 0x52, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, + 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x19, 0x10, 0x03, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x10, 0x03, 0x21, 0x31, 0x80, 0x19, 0x30, 0x04, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x87, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, + 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x19, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x01, 0x1A, 0x19, 0x86, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x09, 0x55, 0x09, 0x34, 0x09, 0x33, 0x11, 0x13, 0x01, 0x10, 0xF2, 0x01, 0x10, 0xF1, 0x80, 0x11, 0x11, 0x01, 0x10, 0xF0, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x11, 0x11, 0x01, 0x19, 0x11, 0x81, 0x11, 0x11, 0x19, 0x31, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x11, 0x10, 0xF1, 0x02, 0x19, 0x11, 0x83, 0x10, 0xF1, 0x11, 0x11, 0x10, 0xF1, 0x11, 0x11, 0x02, 0x10, 0xF1, 0x80, 0x19, 0x11, 0x08, 0x10, 0xF1, 0x04, 0x11, 0x11, 0x02, 0x10, 0xF1, 0x81, 0x19, 0x11, 0x11, 0x11, 0x01, 0x10, 0xF1, 0x81, 0x11, 0x11, 0x10, 0xF1, 0x03, 0x11, 0x11, 0x01, 0x19, 0x12, 0x81, 0x19, 0x11, 0x11, 0x11, 0x02, 0x19, 0x11, 0x85, 0x10, 0xF1, 0x19, 0x11, 0x18, 0xF0, 0x10, 0xF0, 0x18, 0xF0, 0x18, 0xF1, 0x01, 0x10, 0xF1, 0x81, 0x08, 0xF1, 0x10, 0xF1, 0x02, 0x08, 0xD1, 0x83, 0x08, 0xF2, 0x09, 0x13, 0x09, 0x55, 0x11, 0x96, 0x01, 0x11, 0xF8, 0x89, 0x12, 0x19, 0x1A, 0x19, 0x19, 0xD8, 0x11, 0x96, 0x11, 0x55, 0x11, 0x13, 0x19, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x06, + 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x08, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x19, 0x10, 0x02, 0x21, 0x30, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x84, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB7, 0x01, 0x11, 0xD8, 0x03, 0x09, 0xD9, 0x84, 0x09, 0xF9, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x95, 0x19, 0x74, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x8D, 0x29, 0x0F, 0x28, 0xEF, 0x30, 0xF0, 0x38, 0xD0, 0x40, 0xB0, 0x48, 0x50, 0x58, 0x51, 0xB2, 0x9B, 0xDB, 0x5F, 0xD2, 0x9E, 0xDA, 0x7E, 0xDA, 0x5E, 0xE2, 0x5E, 0xDA, 0x5E, 0x01, 0xE2, 0x7E, 0x8A, 0xDA, 0x5D, 0xD2, 0x7D, 0xD2, 0x9D, 0xD3, 0x3F, 0xC3, 0x1D, 0x71, 0x14, 0x40, 0x30, 0x38, 0x90, 0x30, 0xD0, 0x28, 0xD0, 0x28, 0xF0, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x8A, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, + 0x2F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x11, 0x75, 0x11, 0xF8, 0x01, 0x11, 0xF9, 0x88, 0x09, 0xB8, 0x09, 0x75, 0x09, 0x74, 0x11, 0x74, 0x11, 0x53, 0x11, 0x52, 0x11, 0x31, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x21, 0x11, 0x19, 0x12, 0x11, 0x13, 0x11, 0x34, 0x11, 0x76, 0x11, 0xB7, 0x01, 0x11, 0xF8, 0x81, 0x11, 0xD7, 0x11, 0x75, 0x01, 0x11, 0x33, 0x87, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x11, 0x29, 0x30, 0x80, 0x29, 0x50, 0x03, 0x31, 0x50, 0x81, 0x31, 0x30, 0x31, 0x50, 0x06, 0x31, 0x51, 0x80, 0x39, 0x51, 0x02, 0x39, 0x71, 0x02, 0x39, 0x72, 0x80, 0x39, 0x92, 0x01, 0x39, 0x72, 0x81, 0x41, 0x92, 0x41, 0x72, 0x01, 0x41, 0x92, 0x01, 0x41, 0x72, 0x80, 0x49, 0x93, 0x01, 0x49, 0x92, 0x81, 0x49, 0x93, 0x49, 0xB3, 0x01, 0x49, 0x92, 0x01, 0x51, 0x71, 0x86, 0x51, 0x70, 0x59, 0x4F, 0x7A, 0x11, 0xCC, 0x7A, 0xE4, 0xFB, 0xD4, 0x79, 0xDC, 0x79, 0x01, 0xDC, 0x58, 0x01, 0xDC, 0x37, 0x81, 0xE4, 0x37, 0xDC, 0x37, 0x04, 0xDC, 0x17, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x16, 0x01, 0xDC, 0x37, 0x81, 0xDC, 0x17, 0xDC, 0x16, 0x01, 0xDB, 0xF6, 0x81, 0xDC, 0x16, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x8B, 0xD4, 0x37, 0xC4, 0x37, + 0xBC, 0x57, 0xAC, 0x57, 0x9C, 0x98, 0x9D, 0x19, 0x95, 0x5A, 0x85, 0x7A, 0x7D, 0x9B, 0x75, 0xBA, 0x75, 0xDB, 0x76, 0x1C, 0x01, 0x76, 0x1B, 0x82, 0x76, 0x1C, 0x6E, 0x1C, 0x76, 0x1C, 0x01, 0x6E, 0x1C, 0x03, 0x76, 0x3C, 0x01, 0x76, 0x5D, 0x80, 0x76, 0x3D, 0x01, 0x76, 0x3C, 0x01, 0x7E, 0x3C, 0x81, 0x76, 0x1C, 0x7E, 0x3D, 0x02, 0x7E, 0x1C, 0x06, 0x7D, 0xFC, 0x89, 0x7D, 0xDC, 0x7D, 0xBB, 0x7D, 0x7A, 0x7D, 0x39, 0x7C, 0xB8, 0x7C, 0x97, 0x7C, 0x56, 0x84, 0x36, 0x83, 0xF5, 0x83, 0xB5, 0x01, 0x8B, 0xB5, 0x82, 0x9B, 0xB5, 0xA3, 0xD6, 0xAB, 0xD6, 0x01, 0xB3, 0xF6, 0x86, 0xBB, 0xD6, 0xBB, 0x96, 0xBB, 0xB6, 0xC3, 0x96, 0xCB, 0x96, 0xCB, 0x75, 0xCB, 0x55, 0x01, 0xD3, 0x76, 0x01, 0xD3, 0x56, 0x04, 0xD3, 0x36, 0x01, 0xCB, 0x36, 0x81, 0xCB, 0x35, 0xCB, 0x15, 0x01, 0xCB, 0x56, 0x81, 0xC3, 0x36, 0xBB, 0x15, 0x01, 0xBA, 0xF5, 0x96, 0xC3, 0x15, 0xC3, 0x36, 0xCB, 0x77, 0xC3, 0x36, 0xC3, 0x56, 0xBB, 0x56, 0xB3, 0x56, 0xA3, 0x57, 0x93, 0xB8, 0x7B, 0xB8, 0x6B, 0xD8, 0x85, 0x5D, 0x75, 0x5D, 0x75, 0x7D, 0x6C, 0xFB, 0x6C, 0xBA, 0x7C, 0xBB, 0x84, 0x18, 0x8B, 0x76, 0x93, 0x15, 0xAB, 0x57, 0xBB, 0x77, 0xBB, 0x36, 0x02, 0xBB, 0x16, 0x87, 0xBB, 0x37, 0xC3, 0x78, 0xA2, 0xD6, 0x71, 0x71, 0x61, 0x10, 0x59, 0x52, 0x59, 0x92, 0x51, 0x92, 0x04, 0x49, 0x92, 0x03, 0x41, 0x92, 0x85, 0x39, 0x92, 0x39, 0x72, 0x39, 0x71, 0x39, 0x51, 0x31, 0x51, 0x39, 0x71, 0x01, 0x31, 0x71, 0x05, 0x31, 0x51, 0x81, 0x31, 0x30, 0x31, 0x50, 0x06, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, + 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x31, 0x80, 0x21, 0x32, 0x01, 0x19, 0x31, 0x84, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x07, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x02, 0x19, 0x52, 0x02, 0x19, 0x32, 0x81, 0x19, 0x31, 0x11, 0x11, 0x02, 0x19, 0x31, 0x03, 0x19, 0x52, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x02, 0x19, 0x52, 0x81, 0x19, 0x53, 0x19, 0x52, 0x01, 0x19, 0x32, 0x84, 0x21, 0x31, 0x21, 0x11, 0x21, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x04, 0x29, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x19, 0x31, 0x02, 0x19, 0x52, 0x81, 0x19, 0x72, 0x19, + 0x51, 0x02, 0x19, 0x31, 0x82, 0x19, 0x11, 0x19, 0x31, 0x11, 0x31, 0x01, 0x11, 0x52, 0x04, 0x19, 0x52, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x03, 0x19, 0x31, 0x01, 0x19, 0x52, 0x80, 0x19, 0x72, 0x01, 0x19, 0x52, 0x07, 0x19, 0x31, 0x83, 0x19, 0x52, 0x19, 0x72, 0x19, 0x32, 0x19, 0x52, 0x04, 0x19, 0x31, 0x03, 0x19, 0x52, 0x80, 0x19, 0x72, 0x06, 0x19, 0x31, 0x80, 0x11, 0x32, 0x03, 0x19, 0x52, 0x02, 0x19, 0x31, 0x80, 0x19, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x07, 0x21, 0x30, 0x02, 0x21, 0x10, 0x07, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x09, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, + 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x07, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x86, 0x19, 0x11, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD8, 0x01, 0x1A, 0x19, 0x87, 0x19, 0xF9, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0x97, 0x11, 0x76, 0x11, 0x75, 0x09, 0x34, 0x11, 0x34, 0x02, 0x11, 0x33, 0x80, 0x11, 0x32, 0x01, 0x11, 0x12, 0x02, 0x11, 0x32, 0x81, 0x11, 0x33, 0x09, 0x32, 0x04, 0x11, 0x33, 0x82, 0x11, 0x13, 0x11, 0x33, 0x09, 0x33, 0x01, 0x11, 0x13, 0x03, 0x09, 0x12, 0x80, 0x11, 0x33, 0x01, 0x09, 0x12, 0x04, 0x11, 0x13, 0x80, 0x11, 0x33, 0x01, 0x11, 0x32, 0x82, 0x11, 0x33, 0x11, 0x32, 0x09, 0x32, 0x01, 0x11, 0x33, 0x83, 0x09, 0x13, 0x11, 0x33, 0x09, 0x33, 0x09, 0x12, 0x01, 0x09, 0x33, 0x83, 0x09, 0x13, 0x11, 0x33, 0x09, 0x13, 0x11, 0x33, 0x01, 0x11, 0x13, 0x01, 0x11, 0x33, 0x82, 0x09, 0x12, 0x11, 0x13, 0x09, 0x33, 0x02, 0x09, 0x13, 0x07, 0x09, 0x12, 0x84, 0x08, 0xF2, 0x08, 0xF1, 0x08, 0xF2, 0x09, 0x12, 0x09, 0x13, 0x02, 0x09, 0x33, 0x95, 0x11, 0x54, 0x11, 0x74, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x19, 0xF8, 0x11, 0xF8, 0x12, 0x18, 0x1A, 0x19, 0x11, 0xF8, 0x11, 0x96, 0x11, 0x55, 0x11, 0x33, 0x11, 0x12, + 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x05, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x09, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x31, 0x83, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x01, 0x11, 0x96, 0x01, 0x11, 0xB7, 0x86, 0x11, 0xB8, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0xB6, 0x11, 0x95, 0x19, 0x74, 0x19, 0x53, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x06, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x8C, 0x29, 0x0F, 0x28, 0xEF, 0x30, 0xF0, 0x38, 0xB0, 0x40, 0x90, 0x48, 0x70, 0x50, 0x30, 0x99, 0xF9, 0xD3, 0x3F, 0xD2, 0xFE, 0xCA, 0x9D, 0xCA, 0x7D, 0xD2, 0x9E, 0x01, 0xCA, 0x7D, 0x89, 0xCA, 0x9D, 0xCA, 0xBD, 0xD3, 0x7F, + 0xBB, 0x1D, 0x60, 0xD3, 0x40, 0x30, 0x38, 0x90, 0x30, 0xB0, 0x28, 0xD0, 0x28, 0xF0, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x09, 0x33, 0x11, 0x96, 0x11, 0xF8, 0x01, 0x09, 0xF9, 0x8C, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0xB6, 0x11, 0xB5, 0x11, 0x94, 0x11, 0x74, 0x11, 0x52, 0x11, 0x31, 0x19, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x21, 0x11, 0x19, 0x12, 0x19, 0x33, 0x11, 0x34, 0x11, 0x75, 0x11, 0xB7, 0x01, 0x11, 0xD8, 0x87, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x03, 0x29, 0x30, 0x80, 0x31, 0x30, 0x0A, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x04, 0x31, 0x50, 0x08, 0x31, 0x51, 0x01, 0x39, 0x51, 0x07, 0x39, 0x72, 0x80, 0x41, 0x72, 0x03, 0x41, 0x92, 0x05, 0x49, 0x92, 0x8A, 0x51, 0xB2, 0x51, 0x92, 0x51, 0x71, 0x59, 0x91, 0x59, 0x4F, 0x8A, 0xB4, 0xDC, 0xDB, 0xDC, 0xBA, 0xDC, 0x99, + 0xDC, 0x78, 0xDC, 0x58, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x17, 0x01, 0xDC, 0x37, 0x05, 0xDC, 0x17, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x16, 0x97, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x16, 0xDC, 0x37, 0xDB, 0xF6, 0xDC, 0x16, 0xDC, 0x37, 0xDC, 0x57, 0xD4, 0x57, 0xC4, 0x57, 0xAC, 0x57, 0x9C, 0x57, 0x94, 0xD8, 0x8D, 0x5A, 0x8E, 0x1C, 0x7E, 0x3C, 0x76, 0x5D, 0x6E, 0x7D, 0x6E, 0xBE, 0x66, 0xDE, 0x66, 0xFE, 0x66, 0xDE, 0x66, 0xFE, 0x5E, 0xDE, 0x01, 0x66, 0xFE, 0x01, 0x5E, 0xFE, 0x82, 0x66, 0xFE, 0x5E, 0xDE, 0x66, 0xFE, 0x02, 0x5E, 0xDE, 0x80, 0x5E, 0xBE, 0x01, 0x66, 0xBE, 0x80, 0x5E, 0xBE, 0x04, 0x66, 0xBE, 0x81, 0x66, 0x9E, 0x66, 0xBE, 0x01, 0x66, 0x9E, 0x83, 0x6E, 0x9E, 0x6E, 0xBE, 0x6E, 0x9E, 0x6E, 0xBE, 0x01, 0x76, 0xDF, 0x96, 0x7E, 0xBE, 0x86, 0xBE, 0x8E, 0x9F, 0x8E, 0x7E, 0x8E, 0x5E, 0x96, 0x3D, 0x95, 0xFC, 0x8D, 0x9B, 0x85, 0x19, 0x7C, 0xB8, 0x74, 0x56, 0x73, 0xF5, 0x7B, 0xF5, 0x8C, 0x16, 0x94, 0x36, 0x9C, 0x16, 0xAC, 0x37, 0xB4, 0x37, 0xAB, 0xD6, 0xBB, 0xD7, 0xBB, 0x96, 0xC3, 0x96, 0xCB, 0x96, 0x01, 0xCB, 0x76, 0x81, 0xCB, 0x56, 0xD3, 0x76, 0x02, 0xD3, 0x56, 0x02, 0xD3, 0x36, 0x01, 0xCB, 0x15, 0x80, 0xD3, 0x56, 0x01, 0xCB, 0x36, 0x85, 0xC3, 0x35, 0xC3, 0x15, 0xBA, 0xF5, 0xBA, 0xD5, 0xC3, 0x15, 0xCB, 0x56, 0x01, 0xCB, 0x36, 0x91, 0xC3, 0x36, 0xBB, 0x56, 0xB3, 0x57, 0xA3, 0x77, 0x93, 0xB8, 0x73, 0xD8, 0x64, 0x19, 0x75, 0x3C, 0x6D, 0x9D, 0x6D, 0x7D, 0x6D, 0x5D, 0x64, 0xDB, 0x7C, 0xFB, 0x8C, 0x9A, 0x83, 0x76, 0x93, 0x35, 0xA3, 0x56, + 0xBB, 0x77, 0x01, 0xBB, 0x36, 0x80, 0xBA, 0xF6, 0x01, 0xC3, 0x16, 0x85, 0xC3, 0x37, 0xBB, 0x38, 0x89, 0xF3, 0x61, 0x10, 0x61, 0x51, 0x59, 0x72, 0x01, 0x51, 0x72, 0x02, 0x49, 0x92, 0x01, 0x41, 0x92, 0x82, 0x41, 0x72, 0x41, 0x92, 0x41, 0x72, 0x03, 0x39, 0x72, 0x82, 0x39, 0x71, 0x31, 0x51, 0x39, 0x71, 0x05, 0x31, 0x51, 0x80, 0x31, 0x30, 0x01, 0x31, 0x51, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x08, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x8B, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x21, 0x11, 0x0A, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x8B, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x04, 0x19, + 0x31, 0x80, 0x19, 0x10, 0x08, 0x19, 0x31, 0x01, 0x19, 0x11, 0x04, 0x19, 0x31, 0x02, 0x19, 0x32, 0x80, 0x19, 0x31, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x19, 0x30, 0x19, 0x31, 0x02, 0x19, 0x51, 0x01, 0x19, 0x31, 0x01, 0x19, 0x30, 0x03, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x52, 0x01, 0x19, 0x31, 0x80, 0x19, 0x52, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x09, 0x19, 0x31, 0x81, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x13, 0x19, 0x31, 0x80, 0x19, 0x11, 0x05, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x0D, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, + 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x04, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x11, 0x53, 0x11, 0x75, 0x11, 0x96, 0x01, 0x11, 0xD8, 0x82, 0x11, 0xF9, 0x1A, 0x19, 0x11, 0xF9, 0x03, 0x11, 0xD8, 0x01, 0x19, 0xF8, 0x06, 0x19, 0xF7, 0x82, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x02, 0x19, 0xF7, 0x82, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x02, 0x19, 0xF7, 0x80, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x80, 0x19, 0xF8, 0x08, 0x19, 0xF7, 0x80, 0x22, 0x17, 0x0A, 0x19, 0xF7, 0x81, 0x1A, 0x17, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x84, 0x22, 0x18, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF7, 0x22, 0x18, 0x0C, 0x19, 0xF7, 0x89, 0x19, 0xD7, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xF8, 0x1A, 0x38, 0x22, 0x39, 0x22, 0x38, 0x22, 0x59, 0x22, 0x39, 0x1A, 0x39, 0x01, 0x1A, 0x18, 0x8B, 0x1A, 0x39, 0x12, + 0x19, 0x1A, 0x39, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0x96, 0x11, 0x75, 0x11, 0x34, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x09, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x88, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x11, 0x12, 0x19, 0x33, 0x19, 0x74, 0x19, 0x95, 0x19, 0xB6, 0x01, 0x19, 0x95, 0x87, 0x19, 0x75, 0x11, 0x54, 0x11, 0x53, 0x19, 0x53, 0x19, 0x52, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x04, 0x21, 0x30, 0x80, 0x29, 0x50, 0x03, 0x21, 0x30, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x8A, 0x29, 0x0F, 0x28, 0xEF, 0x30, 0xF0, 0x30, 0xB0, 0x38, 0xB0, 0x40, 0x90, 0x40, 0x30, 0x58, + 0x72, 0x92, 0x19, 0xB2, 0xDD, 0xC2, 0xFE, 0x01, 0xC2, 0xFD, 0x88, 0xC3, 0x1E, 0xC3, 0x3E, 0xBB, 0x3D, 0x81, 0xB6, 0x48, 0x50, 0x40, 0x70, 0x38, 0x90, 0x30, 0xB0, 0x28, 0xD0, 0x01, 0x28, 0xF0, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x95, 0x11, 0xF8, 0x03, 0x09, 0xF9, 0x85, 0x09, 0xD8, 0x09, 0xD7, 0x11, 0xF7, 0x11, 0xD6, 0x11, 0xB5, 0x09, 0x74, 0x01, 0x11, 0x32, 0x82, 0x19, 0x51, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x91, 0x21, 0x11, 0x21, 0x32, 0x19, 0x33, 0x19, 0x54, 0x19, 0x96, 0x19, 0xD7, 0x19, 0xF8, 0x11, 0xD8, 0x09, 0xB8, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x0C, 0x29, 0x30, 0x81, 0x31, 0x50, 0x29, 0x30, 0x02, 0x31, 0x50, 0x80, 0x29, 0x30, 0x01, 0x31, 0x50, 0x02, 0x31, 0x51, 0x84, 0x31, 0x50, 0x31, 0x51, 0x31, 0x50, 0x31, 0x51, 0x39, 0x51, 0x01, 0x31, 0x51, 0x81, 0x39, 0x51, 0x39, 0x71, 0x02, 0x39, 0x51, 0x80, 0x39, 0x71, 0x04, 0x39, 0x72, + 0x02, 0x41, 0x92, 0x01, 0x41, 0x72, 0x81, 0x49, 0x92, 0x49, 0xB3, 0x03, 0x49, 0x92, 0x01, 0x51, 0xB2, 0x89, 0x51, 0x91, 0x51, 0x71, 0x59, 0x50, 0x61, 0x6F, 0xAB, 0xB7, 0xDC, 0xDB, 0xDC, 0xBA, 0xDC, 0x99, 0xDC, 0x58, 0xDC, 0x38, 0x01, 0xDC, 0x58, 0x85, 0xDC, 0x38, 0xDC, 0x37, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x17, 0xE4, 0x37, 0x03, 0xDC, 0x16, 0x81, 0xDC, 0x17, 0xDC, 0x37, 0x01, 0xDC, 0x17, 0x01, 0xDB, 0xF6, 0x80, 0xD4, 0x16, 0x02, 0xDC, 0x37, 0x8B, 0xD4, 0x37, 0xCC, 0x58, 0xBC, 0x57, 0xAC, 0x57, 0x94, 0x98, 0x84, 0xF9, 0x7D, 0x9B, 0x6D, 0xFC, 0x66, 0x7D, 0x5E, 0xBD, 0x56, 0xFE, 0x4E, 0xFE, 0x01, 0x46, 0xFE, 0x01, 0x3E, 0xFE, 0x01, 0x3E, 0xDE, 0x02, 0x36, 0xDE, 0x81, 0x36, 0xDD, 0x36, 0xFE, 0x02, 0x36, 0xDE, 0x07, 0x3E, 0xDE, 0x82, 0x3E, 0xBE, 0x3E, 0xDE, 0x3E, 0xBE, 0x02, 0x46, 0xDE, 0x85, 0x46, 0xDF, 0x46, 0xDE, 0x46, 0xDF, 0x46, 0xBE, 0x46, 0xDE, 0x46, 0xBE, 0x01, 0x4E, 0xBE, 0x85, 0x56, 0xBE, 0x56, 0x9E, 0x5E, 0x9E, 0x66, 0x7E, 0x66, 0x9E, 0x6E, 0x9E, 0x01, 0x76, 0x9E, 0x93, 0x7E, 0x9E, 0x76, 0x5D, 0x75, 0xFC, 0x75, 0x9A, 0x6D, 0x19, 0x6C, 0x97, 0x74, 0x77, 0x7C, 0x36, 0x7B, 0xB5, 0x83, 0x95, 0x9B, 0xB6, 0xA3, 0xB6, 0xAB, 0x96, 0xBB, 0x96, 0xC3, 0x96, 0xC3, 0x76, 0xC3, 0x55, 0xCB, 0x56, 0xCB, 0x36, 0xD3, 0x36, 0x01, 0xD3, 0x56, 0x02, 0xD3, 0x36, 0x82, 0xD3, 0x16, 0xCB, 0x16, 0xCB, 0x36, 0x01, 0xD3, 0x56, 0x01, 0xCB, 0x36, 0x98, 0xCB, 0x15, 0xC2, 0xD4, 0xCB, 0x15, 0xCA, 0xF5, 0xCB, 0x16, 0xCB, 0x36, 0xC3, 0x57, 0xBB, + 0x57, 0xAB, 0x36, 0x93, 0x36, 0x8B, 0xD9, 0x73, 0xF9, 0x64, 0x59, 0x6D, 0x5D, 0x65, 0x9D, 0x5D, 0x9D, 0x65, 0x9D, 0x5C, 0xFB, 0x75, 0x1B, 0x84, 0xDA, 0x7B, 0xB6, 0x83, 0x14, 0xA3, 0x56, 0xB3, 0x76, 0xC3, 0x57, 0x02, 0xC3, 0x16, 0x88, 0xC2, 0xF6, 0xC3, 0x17, 0xC3, 0x38, 0xAA, 0xB6, 0x71, 0x71, 0x58, 0xF0, 0x59, 0x51, 0x59, 0x72, 0x51, 0x72, 0x02, 0x49, 0x92, 0x01, 0x41, 0x72, 0x01, 0x41, 0x92, 0x04, 0x39, 0x72, 0x80, 0x39, 0x71, 0x08, 0x31, 0x51, 0x0A, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x0A, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x80, 0x19, 0x31, 0x02, 0x21, 0x31, 0x82, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x01, 0x19, 0x31, 0x81, 0x19, 0x51, 0x19, 0x31, 0x01, 0x19, 0x51, 0x80, 0x21, 0x51, 0x02, 0x19, 0x31, 0x80, 0x19, + 0x11, 0x06, 0x19, 0x31, 0x03, 0x21, 0x31, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x19, 0x51, 0x01, 0x19, 0x31, 0x80, 0x21, 0x30, 0x02, 0x19, 0x30, 0x03, 0x19, 0x51, 0x81, 0x19, 0x31, 0x21, 0x52, 0x01, 0x19, 0x31, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x21, 0x31, 0x06, 0x19, 0x31, 0x81, 0x21, 0x51, 0x21, 0x31, 0x05, 0x21, 0x30, 0x01, 0x19, 0x30, 0x08, 0x19, 0x31, 0x84, 0x19, 0x30, 0x19, 0x31, 0x19, 0x30, 0x19, 0x31, 0x21, 0x31, 0x0B, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x19, 0x30, 0x06, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x0E, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, + 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x06, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x88, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xD7, 0x19, 0xF9, 0x11, 0xD8, 0x01, 0x11, 0xF9, 0x02, 0x11, 0xD9, 0x80, 0x11, 0xF9, 0x07, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x04, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x05, 0x11, 0xF8, 0x82, 0x12, 0x19, 0x11, 0xF8, 0x19, 0xF9, 0x04, 0x11, 0xF8, 0x80, 0x19, 0xF8, 0x02, 0x11, 0xF8, 0x80, 0x19, 0xF8, 0x07, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x09, 0x11, 0xF8, 0x80, 0x12, 0x18, 0x02, 0x11, 0xF8, 0x80, 0x12, 0x18, 0x02, 0x11, 0xF8, 0x80, 0x12, 0x18, 0x02, 0x11, 0xF8, 0x02, 0x12, 0x18, 0x82, 0x11, 0xF8, 0x12, 0x18, 0x1A, 0x39, 0x02, 0x11, 0xF9, 0x81, 0x11, 0xD8, 0x11, 0xF8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xD7, 0x01, 0x09, 0xB7, 0x8B, 0x09, 0xD7, + 0x11, 0xF8, 0x09, 0xD7, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x55, 0x11, 0x34, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x04, 0x21, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x04, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x19, 0x53, 0x01, 0x19, 0x33, 0x01, 0x19, 0x32, 0x02, 0x19, 0x31, 0x81, 0x19, 0x30, 0x19, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x85, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x28, 0xEF, 0x90, 0x30, 0xCF, 0x30, 0xB0, 0x38, 0x90, 0x38, 0x50, 0x38, 0x10, 0x40, + 0x10, 0x50, 0x72, 0x60, 0xF4, 0x69, 0x14, 0x60, 0xD3, 0x48, 0x51, 0x40, 0x10, 0x38, 0x0F, 0x38, 0x70, 0x38, 0xB0, 0x30, 0xAF, 0x28, 0xD0, 0x01, 0x28, 0xF0, 0x03, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x12, 0x18, 0x04, 0x09, 0xF9, 0x01, 0x09, 0xF8, 0x01, 0x11, 0xD7, 0x85, 0x11, 0xB5, 0x11, 0x74, 0x11, 0x53, 0x19, 0x52, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x31, 0x86, 0x21, 0x32, 0x21, 0x53, 0x19, 0x54, 0x19, 0x95, 0x19, 0xF7, 0x19, 0xF8, 0x11, 0xD8, 0x02, 0x09, 0xB7, 0x87, 0x09, 0xB8, 0x19, 0xF9, 0x11, 0xD8, 0x19, 0xB7, 0x19, 0x95, 0x19, 0x54, 0x19, 0x53, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x29, 0x31, 0x0B, 0x29, 0x30, 0x81, 0x31, 0x50, 0x31, 0x30, 0x03, 0x31, 0x50, 0x08, 0x31, 0x51, 0x04, 0x39, 0x51, 0x03, 0x39, 0x71, 0x04, 0x39, 0x72, 0x02, 0x41, 0x92, 0x83, 0x41, 0x72, 0x41, 0x92, 0x49, 0x93, 0x49, 0xB3, 0x02, 0x49, 0x92, 0x01, 0x51, 0xB2, 0x87, 0x51, 0x92, 0x59, 0x91, 0x59, 0x70, 0x61, 0x90, 0xB3, 0xF8, 0xDC, 0xDB, 0xDC, 0xBA, 0xDC, 0x79, 0x01, + 0xDC, 0x58, 0x82, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x58, 0x01, 0xDC, 0x37, 0x83, 0xDC, 0x16, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x17, 0x02, 0xDC, 0x16, 0x02, 0xDC, 0x17, 0x82, 0xDC, 0x37, 0xDC, 0x17, 0xDC, 0x16, 0x01, 0xD4, 0x16, 0x01, 0xDC, 0x57, 0x8B, 0xD4, 0x78, 0xCC, 0x57, 0xB4, 0x57, 0xA4, 0x77, 0x94, 0xB8, 0x7D, 0x19, 0x6D, 0x9A, 0x66, 0x3C, 0x5E, 0xBE, 0x4F, 0x1E, 0x3F, 0x1E, 0x37, 0x3E, 0x01, 0x2F, 0x1E, 0x02, 0x26, 0xFE, 0x81, 0x1E, 0xFE, 0x1E, 0xDE, 0x02, 0x1E, 0xFE, 0x84, 0x1F, 0x1E, 0x1E, 0xFE, 0x1E, 0xDE, 0x27, 0x1E, 0x1E, 0xFE, 0x07, 0x1E, 0xDE, 0x07, 0x26, 0xDE, 0x01, 0x2E, 0xDF, 0x02, 0x2E, 0xDE, 0x80, 0x36, 0xDE, 0x01, 0x36, 0xBE, 0x80, 0x36, 0x9D, 0x02, 0x3E, 0x9E, 0x99, 0x46, 0x9E, 0x4E, 0xBE, 0x4E, 0xDF, 0x56, 0xFF, 0x66, 0xFF, 0x6E, 0xFF, 0x76, 0xDF, 0x7E, 0x9E, 0x7E, 0x3D, 0x7D, 0xBB, 0x74, 0xF9, 0x74, 0x37, 0x73, 0xD6, 0x83, 0xF6, 0x8B, 0xB6, 0x9B, 0x95, 0xA3, 0x96, 0xAB, 0x96, 0xBB, 0xB7, 0xB3, 0x56, 0xC3, 0x76, 0xC3, 0x36, 0xCB, 0x56, 0xCB, 0x36, 0xCB, 0x56, 0xCB, 0x36, 0x02, 0xD3, 0x36, 0x82, 0xD3, 0x16, 0xD3, 0x36, 0xCB, 0x15, 0x01, 0xD3, 0x36, 0x01, 0xCB, 0x15, 0x82, 0xCA, 0xF5, 0xC2, 0xD5, 0xCA, 0xF5, 0x01, 0xCB, 0x16, 0x93, 0xC3, 0x16, 0xBB, 0x36, 0xA3, 0x16, 0x93, 0x37, 0x8B, 0xF9, 0x6C, 0x19, 0x5C, 0x9A, 0x65, 0x7D, 0x5D, 0x9D, 0x5D, 0xDE, 0x5D, 0xDD, 0x65, 0x9C, 0x64, 0xFA, 0x8D, 0x3C, 0x7B, 0xF7, 0x7A, 0xF4, 0x9B, 0x15, 0xBB, 0x77, 0xC3, 0x56, 0xC3, 0x16, 0x01, 0xCA, 0xF6, 0x87, 0xC2, 0xF6, + 0xCB, 0x17, 0xC3, 0x17, 0xBB, 0x18, 0x89, 0xF3, 0x58, 0xCF, 0x61, 0x51, 0x59, 0x72, 0x01, 0x51, 0x92, 0x02, 0x49, 0x92, 0x84, 0x41, 0x72, 0x41, 0x92, 0x41, 0x72, 0x39, 0x72, 0x41, 0x92, 0x03, 0x39, 0x72, 0x03, 0x31, 0x51, 0x80, 0x31, 0x71, 0x02, 0x31, 0x51, 0x82, 0x31, 0x31, 0x31, 0x50, 0x29, 0x50, 0x08, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x83, 0x29, 0x50, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x51, 0x07, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x0A, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x19, 0x10, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x83, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x51, 0x01, 0x19, 0x31, 0x80, 0x19, 0x51, 0x02, 0x19, 0x31, 0x02, 0x21, 0x31, 0x81, 0x19, 0x11, 0x21, + 0x51, 0x05, 0x19, 0x31, 0x05, 0x21, 0x31, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x02, 0x19, 0x51, 0x02, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x81, 0x19, 0x31, 0x21, 0x31, 0x03, 0x19, 0x31, 0x02, 0x21, 0x31, 0x82, 0x21, 0x51, 0x21, 0x30, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x30, 0x81, 0x19, 0x31, 0x21, 0x31, 0x02, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x89, 0x19, 0x30, 0x19, 0x10, 0x19, 0x30, 0x21, 0x51, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x0A, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x21, 0x51, 0x19, 0x30, 0x01, 0x21, 0x31, 0x08, 0x21, 0x30, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x51, 0x02, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x31, 0x05, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, + 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x05, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x51, 0x01, 0x19, 0x32, 0x83, 0x11, 0x13, 0x11, 0x55, 0x11, 0x96, 0x11, 0xB7, 0x02, 0x11, 0xD8, 0x80, 0x11, 0xD9, 0x01, 0x09, 0xB8, 0x02, 0x11, 0xD8, 0x01, 0x09, 0xB8, 0x80, 0x11, 0xB8, 0x01, 0x09, 0xB7, 0x02, 0x11, 0xD8, 0x01, 0x09, 0xB8, 0x80, 0x11, 0xD8, 0x0F, 0x09, 0xB8, 0x80, 0x09, 0xB7, 0x03, 0x09, 0xB8, 0x80, 0x09, 0xB7, 0x01, 0x09, 0xB8, 0x06, 0x09, 0xB7, 0x81, 0x09, 0x97, 0x09, 0xB7, 0x01, 0x09, 0xB8, 0x80, 0x09, 0x97, 0x01, 0x09, 0xB8, 0x01, 0x09, 0x97, 0x01, 0x09, 0xB7, 0x02, 0x09, 0xB8, 0x82, 0x09, 0xB7, + 0x09, 0x97, 0x09, 0xB8, 0x01, 0x09, 0xB7, 0x82, 0x09, 0xB8, 0x09, 0xB7, 0x09, 0x97, 0x01, 0x09, 0xB7, 0x01, 0x09, 0xD8, 0x02, 0x09, 0xB8, 0x80, 0x09, 0x98, 0x02, 0x09, 0x97, 0x01, 0x09, 0xB7, 0x8A, 0x09, 0xD8, 0x09, 0xD7, 0x11, 0xF8, 0x09, 0xB7, 0x19, 0xF7, 0x11, 0xB6, 0x09, 0x34, 0x11, 0x13, 0x19, 0x33, 0x19, 0x12, 0x21, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x20, 0xF0, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x19, 0x10, 0x84, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x30, 0x01, + 0x21, 0x30, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x31, 0x10, 0x30, 0xF0, 0x30, 0xD0, 0x30, 0xB0, 0x30, 0x90, 0x01, 0x38, 0x70, 0x80, 0x38, 0x2F, 0x01, 0x30, 0x0F, 0x84, 0x30, 0x4F, 0x30, 0x70, 0x30, 0x6F, 0x30, 0xAF, 0x30, 0xD0, 0x01, 0x28, 0xF0, 0x82, 0x28, 0xEF, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x86, 0x21, 0x31, 0x21, 0x11, 0x19, 0x12, 0x19, 0x54, 0x11, 0x95, 0x11, 0xD7, 0x12, 0x19, 0x03, 0x01, 0xD9, 0x01, 0x01, 0xF9, 0x87, 0x09, 0xF9, 0x09, 0xF8, 0x09, 0xD7, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x10, 0x88, 0x21, 0x31, 0x19, 0x32, 0x19, 0x54, 0x19, 0x75, 0x21, 0xD7, 0x19, 0xF8, 0x19, 0xD8, 0x11, 0xB7, 0x09, 0xB7, 0x01, 0x09, 0x97, 0x80, 0x09, 0xB7, 0x01, 0x19, 0xF9, 0x8B, 0x19, 0xF8, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x53, 0x19, 0x52, 0x21, 0x32, 0x21, 0x31, 0x29, 0x31, 0x29, 0x51, 0x29, 0x31, 0x29, 0x30, 0x29, 0x31, 0x01, 0x29, 0x30, 0x80, 0x31, 0x30, 0x03, 0x29, 0x30, 0x80, + 0x31, 0x30, 0x06, 0x31, 0x50, 0x04, 0x31, 0x51, 0x80, 0x31, 0x50, 0x01, 0x39, 0x51, 0x80, 0x39, 0x71, 0x04, 0x39, 0x51, 0x82, 0x39, 0x71, 0x39, 0x92, 0x39, 0x72, 0x01, 0x41, 0x72, 0x04, 0x41, 0x92, 0x03, 0x49, 0xB3, 0x81, 0x49, 0x92, 0x51, 0xB3, 0x02, 0x51, 0xB2, 0x89, 0x51, 0x92, 0x59, 0x71, 0x59, 0x50, 0x69, 0xD1, 0xC4, 0x7A, 0xD4, 0xBB, 0xDC, 0x9A, 0xDC, 0x79, 0xDC, 0x78, 0xDC, 0x58, 0x02, 0xDC, 0x37, 0x82, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x17, 0x01, 0xDC, 0x37, 0x85, 0xDC, 0x16, 0xDC, 0x37, 0xDC, 0x16, 0xDC, 0x17, 0xDC, 0x16, 0xDC, 0x37, 0x04, 0xDC, 0x16, 0x01, 0xD4, 0x37, 0x8D, 0xD4, 0x57, 0xCC, 0x57, 0xC4, 0x78, 0xB4, 0x57, 0x9C, 0x77, 0x84, 0x97, 0x75, 0x39, 0x6E, 0x1B, 0x66, 0x9D, 0x57, 0x1E, 0x47, 0x1F, 0x37, 0x3F, 0x27, 0x3E, 0x27, 0x5F, 0x01, 0x1F, 0x5F, 0x81, 0x1F, 0x3F, 0x17, 0x1E, 0x03, 0x17, 0x1F, 0x80, 0x17, 0x3F, 0x02, 0x17, 0x1F, 0x80, 0x17, 0x3F, 0x01, 0x17, 0x1F, 0x82, 0x16, 0xFE, 0x17, 0x1F, 0x16, 0xFE, 0x01, 0x17, 0x1F, 0x80, 0x16, 0xFF, 0x01, 0x17, 0x1F, 0x03, 0x16, 0xFF, 0x03, 0x17, 0x1F, 0x05, 0x1F, 0x1F, 0x80, 0x27, 0x1F, 0x01, 0x26, 0xFF, 0x82, 0x26, 0xFE, 0x26, 0xDE, 0x1E, 0xBE, 0x01, 0x26, 0xBE, 0x96, 0x2E, 0xDE, 0x2E, 0xBE, 0x36, 0xDE, 0x46, 0xDE, 0x4E, 0xBE, 0x5E, 0xBF, 0x66, 0xBF, 0x7E, 0xBF, 0x86, 0x9F, 0x8E, 0x5E, 0x85, 0xBC, 0x7D, 0x1A, 0x7C, 0xB9, 0x84, 0x58, 0x8C, 0x38, 0x8B, 0xD6, 0x93, 0x96, 0x9B, 0x96, 0xAB, 0x97, 0xB3, 0x76, 0xBB, 0x97, 0xC3, 0x76, 0xCB, 0x77, 0x01, 0xCB, 0x36, + 0x81, 0xD3, 0x36, 0xCB, 0x16, 0x02, 0xD3, 0x16, 0xA9, 0xCA, 0xF5, 0xD3, 0x16, 0xD3, 0x15, 0xCA, 0xF5, 0xCA, 0xD5, 0xC2, 0xB4, 0xC2, 0xD5, 0xCB, 0x16, 0xCB, 0x36, 0xCB, 0x16, 0xCB, 0x37, 0xBB, 0x37, 0xA2, 0xF6, 0x8B, 0x57, 0x84, 0x19, 0x6C, 0x59, 0x54, 0x9A, 0x5D, 0xBE, 0x55, 0xBD, 0x55, 0xFE, 0x5E, 0x3E, 0x5D, 0xBD, 0x5C, 0xFA, 0x85, 0x5C, 0x7C, 0x18, 0x7B, 0x14, 0x9A, 0xF4, 0xBB, 0x56, 0xC3, 0x16, 0xCB, 0x16, 0xCB, 0x37, 0xCA, 0xF6, 0xC2, 0xD6, 0xCA, 0xF6, 0xC2, 0xF6, 0xC3, 0x38, 0xA2, 0x96, 0x71, 0x30, 0x61, 0x30, 0x59, 0x72, 0x59, 0x92, 0x51, 0x92, 0x02, 0x49, 0x92, 0x81, 0x41, 0x92, 0x41, 0x72, 0x06, 0x39, 0x72, 0x80, 0x39, 0x71, 0x07, 0x31, 0x51, 0x80, 0x29, 0x50, 0x06, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x08, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x80, 0x21, 0x51, 0x08, 0x21, 0x31, 0x80, 0x21, 0x11, 0x11, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x11, 0x04, 0x21, 0x31, 0x80, 0x21, 0x11, 0x06, 0x21, 0x31, 0x80, 0x19, 0x31, 0x03, 0x21, 0x31, 0x80, 0x21, 0x11, 0x05, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x19, 0x31, 0x80, + 0x21, 0x31, 0x0B, 0x19, 0x31, 0x01, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x02, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x03, 0x21, 0x31, 0x80, 0x21, 0x30, 0x04, 0x21, 0x31, 0x01, 0x19, 0x31, 0x81, 0x21, 0x51, 0x19, 0x50, 0x01, 0x19, 0x30, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x09, 0x19, 0x31, 0x83, 0x19, 0x52, 0x19, 0x31, 0x19, 0x32, 0x19, 0x52, 0x02, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x51, 0x05, 0x19, 0x31, 0x02, 0x21, 0x31, 0x04, 0x19, 0x31, 0x80, 0x19, 0x10, 0x0A, 0x19, 0x31, 0x03, 0x21, 0x31, 0x81, 0x19, 0x31, 0x19, 0x11, 0x06, 0x19, 0x31, 0x01, 0x19, 0x51, 0x05, 0x19, 0x31, 0x81, 0x19, 0x52, 0x19, 0x51, 0x01, 0x19, 0x31, 0x02, 0x21, 0x31, 0x87, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x19, 0x30, 0x21, 0x31, 0x21, 0x30, 0x19, 0x31, 0x21, 0x51, 0x04, 0x19, 0x31, 0x02, 0x21, 0x31, 0x03, 0x21, 0x30, 0x85, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, + 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x19, 0x33, 0x19, 0x55, 0x19, 0x96, 0x19, 0xB7, 0x19, 0xD8, 0x02, 0x11, 0xD8, 0x81, 0x11, 0xF9, 0x11, 0xB8, 0x05, 0x11, 0xD8, 0x80, 0x11, 0xF8, 0x02, 0x11, 0xD8, 0x80, 0x11, 0xF8, 0x06, 0x11, 0xD8, 0x80, 0x11, 0xF8, 0x04, 0x11, 0xD8, 0x82, 0x11, 0xF9, 0x11, 0xD8, 0x09, 0xB8, 0x02, 0x11, 0xD8, 0x80, 0x09, 0xB8, 0x04, 0x11, 0xD8, 0x82, 0x09, 0xB7, 0x11, 0xD8, 0x11, 0xF8, 0x01, + 0x11, 0xD8, 0x81, 0x11, 0xD7, 0x09, 0xB7, 0x05, 0x11, 0xD8, 0x01, 0x09, 0xD8, 0x02, 0x11, 0xD8, 0x80, 0x11, 0xB8, 0x01, 0x11, 0xD8, 0x81, 0x11, 0xB8, 0x09, 0xB7, 0x02, 0x11, 0xD8, 0x80, 0x11, 0xF8, 0x04, 0x11, 0xD8, 0x83, 0x11, 0xF8, 0x09, 0xD8, 0x11, 0xF8, 0x11, 0xD8, 0x01, 0x11, 0xB8, 0x91, 0x09, 0xB8, 0x11, 0xB8, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0xF8, 0x1A, 0x18, 0x11, 0xD7, 0x11, 0xF7, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x12, 0x21, 0x32, 0x21, 0x11, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, + 0x81, 0x29, 0x10, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x05, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x28, 0xEF, 0x30, 0xF0, 0x02, 0x30, 0xB0, 0x87, 0x30, 0x90, 0x38, 0xD1, 0x30, 0xB0, 0x30, 0x90, 0x28, 0x8F, 0x30, 0xD0, 0x28, 0xD0, 0x28, 0xF0, 0x01, 0x28, 0xEF, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x12, 0x11, 0x33, 0x11, 0x96, 0x11, 0xF8, 0x09, 0xD8, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x93, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0xD9, 0x01, 0xD8, 0x09, 0xF8, 0x09, 0xB7, 0x11, 0xB6, 0x11, 0x74, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x19, 0x12, 0x19, 0x33, 0x19, 0x34, 0x19, 0x96, 0x19, 0xF7, 0x19, 0xF8, 0x11, 0xB8, 0x09, 0x97, 0x03, 0x09, 0x96, 0x80, 0x11, 0xB7, 0x01, + 0x19, 0xF8, 0x86, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x74, 0x19, 0x52, 0x21, 0x52, 0x21, 0x51, 0x29, 0x51, 0x03, 0x29, 0x31, 0x03, 0x29, 0x30, 0x02, 0x31, 0x50, 0x83, 0x31, 0x30, 0x31, 0x50, 0x31, 0x30, 0x31, 0x51, 0x02, 0x31, 0x50, 0x05, 0x31, 0x51, 0x03, 0x39, 0x51, 0x01, 0x39, 0x71, 0x81, 0x39, 0x51, 0x39, 0x52, 0x02, 0x39, 0x72, 0x01, 0x41, 0x92, 0x80, 0x41, 0x72, 0x03, 0x41, 0x92, 0x80, 0x49, 0xB2, 0x02, 0x49, 0xB3, 0x82, 0x49, 0xB2, 0x49, 0x92, 0x51, 0x92, 0x01, 0x51, 0xB2, 0x8B, 0x59, 0x92, 0x59, 0x91, 0x51, 0x4F, 0x69, 0xD1, 0xC4, 0x5A, 0xD4, 0x9A, 0xDC, 0x9A, 0xDC, 0x79, 0xDC, 0x58, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x17, 0x04, 0xDC, 0x37, 0x81, 0xDC, 0x16, 0xDC, 0x36, 0x01, 0xDC, 0x16, 0x95, 0xDC, 0x36, 0xDC, 0x37, 0xDC, 0x17, 0xDC, 0x37, 0xD4, 0x16, 0xD4, 0x36, 0xD4, 0x57, 0xD4, 0x37, 0xD4, 0x77, 0xC4, 0x57, 0xBC, 0x78, 0xAC, 0x78, 0x94, 0x57, 0x84, 0xB8, 0x75, 0x7A, 0x6E, 0x3C, 0x5E, 0xBD, 0x4F, 0x1E, 0x3F, 0x3F, 0x2F, 0x3E, 0x1F, 0x5F, 0x1F, 0x7F, 0x02, 0x17, 0x5F, 0x80, 0x0F, 0x5F, 0x07, 0x0F, 0x3F, 0x06, 0x0F, 0x1F, 0x80, 0x06, 0xFF, 0x04, 0x0F, 0x1F, 0x03, 0x0E, 0xFF, 0x01, 0x0F, 0x1F, 0x01, 0x0E, 0xFF, 0x01, 0x0F, 0x1F, 0x02, 0x0E, 0xFF, 0x83, 0x17, 0x1F, 0x16, 0xFF, 0x17, 0x1F, 0x0E, 0xFE, 0x03, 0x16, 0xFF, 0x80, 0x16, 0xDE, 0x01, 0x1E, 0xDE, 0x99, 0x26, 0xBE, 0x2E, 0xBE, 0x36, 0x9E, 0x3E, 0x5D, 0x46, 0x7D, 0x5E, 0x9E, 0x66, 0x9F, 0x76, 0x9F, 0x7E, 0x7F, 0x7E, 0x1D, 0x85, 0xDD, 0x7D, 0x3B, + 0x84, 0xFA, 0x84, 0x99, 0x8C, 0x58, 0x93, 0xF7, 0x9B, 0xB7, 0xA3, 0xB7, 0xAB, 0x97, 0xBB, 0x77, 0xC3, 0x57, 0xCB, 0x77, 0xCB, 0x36, 0xCB, 0x16, 0xD3, 0x36, 0xCB, 0x16, 0x02, 0xD3, 0x16, 0x80, 0xD3, 0x36, 0x01, 0xD3, 0x16, 0x83, 0xCA, 0xD5, 0xCA, 0xB5, 0xCA, 0xD5, 0xD3, 0x16, 0x01, 0xCB, 0x16, 0x93, 0xC3, 0x37, 0xB3, 0x17, 0x9B, 0x16, 0x8B, 0x77, 0x7C, 0x3A, 0x5C, 0x59, 0x55, 0x1C, 0x5D, 0xFE, 0x56, 0x1E, 0x4D, 0xFE, 0x5E, 0x5F, 0x66, 0x1E, 0x5D, 0x1A, 0x74, 0xDA, 0x84, 0x58, 0x83, 0x34, 0x92, 0xD4, 0xBB, 0x36, 0xC3, 0x36, 0xC3, 0x16, 0x01, 0xCA, 0xF6, 0x80, 0xCA, 0xB5, 0x01, 0xCA, 0xF6, 0x8E, 0xC3, 0x17, 0xB2, 0xF7, 0x79, 0xB2, 0x58, 0xF0, 0x59, 0x72, 0x59, 0x92, 0x51, 0x72, 0x49, 0x72, 0x49, 0x92, 0x41, 0x72, 0x41, 0x92, 0x41, 0x72, 0x41, 0x92, 0x39, 0x72, 0x39, 0x92, 0x03, 0x39, 0x72, 0x09, 0x31, 0x51, 0x80, 0x31, 0x50, 0x0B, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x02, 0x19, 0x31, 0x08, 0x19, 0x32, 0x82, 0x19, 0x31, 0x19, 0x32, 0x21, 0x32, 0x16, 0x19, 0x32, 0x82, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x19, 0x11, 0x06, 0x19, 0x32, 0x01, 0x19, 0x31, 0x02, 0x19, 0x32, 0x80, 0x19, 0x11, 0x01, 0x19, + 0x32, 0x07, 0x19, 0x11, 0x80, 0x19, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x12, 0x02, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x02, 0x19, 0x31, 0x82, 0x11, 0x31, 0x19, 0x32, 0x19, 0x11, 0x08, 0x19, 0x32, 0x85, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x02, 0x19, 0x31, 0x05, 0x19, 0x11, 0x09, 0x19, 0x31, 0x80, 0x19, 0x11, 0x06, 0x19, 0x31, 0x01, 0x19, 0x32, 0x02, 0x19, 0x52, 0x04, 0x19, 0x32, 0x02, 0x19, 0x31, 0x83, 0x19, 0x32, 0x19, 0x31, 0x19, 0x52, 0x19, 0x32, 0x01, 0x19, 0x52, 0x02, 0x19, 0x32, 0x80, 0x19, 0x31, 0x02, 0x19, 0x32, 0x03, 0x19, 0x31, 0x82, 0x19, 0x52, 0x19, 0x31, 0x19, 0x52, 0x01, 0x19, 0x31, 0x81, 0x19, 0x52, 0x19, 0x32, 0x07, 0x19, 0x31, 0x06, 0x19, 0x32, 0x83, 0x19, 0x52, 0x19, 0x32, 0x11, 0x31, 0x19, 0x52, 0x04, 0x19, 0x32, 0x81, 0x11, 0x32, 0x19, 0x32, 0x01, 0x11, 0x32, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x03, 0x19, 0x11, 0x83, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x0A, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, + 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x07, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x09, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x21, 0x12, 0x19, 0x12, 0x19, 0x53, 0x21, 0x95, 0x21, 0xB6, 0x19, 0xD7, 0x03, 0x19, 0xF8, 0x81, 0x19, 0xF7, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x83, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0xF8, 0x19, 0xD7, 0x01, 0x19, 0xF8, 0x04, 0x11, 0xF8, 0x81, 0x11, 0xD8, 0x11, 0xF8, 0x02, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x02, 0x19, 0xF8, 0x82, 0x1A, 0x19, 0x19, 0xF8, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x80, 0x1A, 0x18, 0x03, 0x19, 0xF8, 0x80, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x80, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x80, 0x19, 0xF8, 0x02, 0x1A, + 0x18, 0x01, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x02, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x80, 0x19, 0xF8, 0x06, 0x1A, 0x18, 0x83, 0x19, 0xF8, 0x1A, 0x18, 0x22, 0x38, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x80, 0x11, 0xF8, 0x06, 0x1A, 0x18, 0x81, 0x1A, 0x38, 0x1A, 0x17, 0x01, 0x22, 0x37, 0x85, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x88, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x0E, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, + 0x29, 0x2F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x84, 0x28, 0xEF, 0x28, 0xF0, 0x30, 0xF0, 0x28, 0xCF, 0x30, 0xF0, 0x01, 0x30, 0xD0, 0x82, 0x30, 0xF0, 0x31, 0x10, 0x28, 0xF0, 0x01, 0x28, 0xEF, 0x84, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x87, 0x21, 0x11, 0x19, 0x32, 0x11, 0x54, 0x19, 0xB7, 0x11, 0xF8, 0x09, 0xF9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x01, 0x09, 0xD8, 0x85, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x52, 0x11, 0x11, 0x19, 0x51, 0x19, 0x32, 0x01, 0x19, 0x12, 0x85, 0x19, 0x34, 0x21, 0xB7, 0x19, 0xD7, 0x11, 0xD7, 0x09, 0x97, 0x09, 0x76, 0x02, 0x09, 0x75, 0x01, 0x09, 0x96, 0x85, 0x11, 0xB7, 0x19, 0xD8, 0x19, 0xD7, 0x21, 0xD6, 0x19, 0x74, 0x19, 0x32, 0x01, 0x21, 0x52, 0x81, 0x29, 0x52, 0x29, 0x51, 0x01, 0x29, 0x31, 0x80, 0x29, 0x30, 0x01, 0x29, 0x31, 0x82, 0x31, 0x51, 0x31, 0x50, 0x29, 0x30, 0x01, + 0x31, 0x50, 0x80, 0x31, 0x30, 0x03, 0x31, 0x51, 0x80, 0x31, 0x50, 0x04, 0x31, 0x51, 0x80, 0x39, 0x71, 0x02, 0x39, 0x51, 0x05, 0x39, 0x72, 0x04, 0x41, 0x72, 0x80, 0x41, 0x93, 0x02, 0x41, 0x92, 0x81, 0x41, 0x72, 0x49, 0x92, 0x01, 0x49, 0xB3, 0x01, 0x51, 0xB3, 0x02, 0x51, 0xB2, 0x88, 0x51, 0x92, 0x59, 0x71, 0x59, 0x50, 0x72, 0x12, 0xD4, 0xBB, 0xD4, 0x7A, 0xD4, 0x79, 0xDC, 0x79, 0xDC, 0x58, 0x02, 0xDC, 0x37, 0x82, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x17, 0x02, 0xDC, 0x16, 0x81, 0xDC, 0x37, 0xDC, 0x17, 0x01, 0xDC, 0x16, 0x02, 0xDC, 0x36, 0x02, 0xD4, 0x16, 0x91, 0xD4, 0x36, 0xD4, 0x57, 0xCC, 0x57, 0xCC, 0x98, 0xC4, 0xB8, 0xB4, 0xB8, 0x9C, 0x36, 0x84, 0x56, 0x7C, 0xF8, 0x75, 0xBA, 0x6E, 0x9D, 0x5E, 0xBD, 0x4F, 0x3F, 0x37, 0x3E, 0x27, 0x3E, 0x1F, 0x5F, 0x17, 0x7F, 0x0F, 0x5E, 0x03, 0x0F, 0x5F, 0x03, 0x0F, 0x3F, 0x01, 0x0F, 0x1F, 0x07, 0x07, 0x1F, 0x80, 0x06, 0xFF, 0x01, 0x07, 0x1F, 0x80, 0x06, 0xFF, 0x01, 0x07, 0x1F, 0x02, 0x06, 0xFF, 0x80, 0x0E, 0xFF, 0x02, 0x06, 0xFF, 0x80, 0x07, 0x1F, 0x02, 0x06, 0xFF, 0x85, 0x0F, 0x1F, 0x06, 0xFF, 0x0E, 0xFF, 0x06, 0xFF, 0x0E, 0xFF, 0x0F, 0x1F, 0x05, 0x0E, 0xFF, 0x01, 0x16, 0xFF, 0x01, 0x1E, 0xDF, 0x80, 0x26, 0xDF, 0x01, 0x2E, 0xBF, 0x95, 0x36, 0x9E, 0x3E, 0x9E, 0x4E, 0x9F, 0x56, 0xBF, 0x66, 0xBF, 0x66, 0x7F, 0x66, 0x3E, 0x65, 0xBC, 0x65, 0x3A, 0x6C, 0xDA, 0x74, 0xBA, 0x7C, 0x59, 0x8B, 0xF8, 0x93, 0x97, 0x9B, 0x77, 0xAB, 0x77, 0xBB, 0x77, 0xC3, 0x98, 0xCB, 0x57, 0xCB, 0x36, 0xD3, 0x37, 0xCB, + 0x16, 0x01, 0xCA, 0xF6, 0x80, 0xCA, 0xF5, 0x01, 0xD3, 0x16, 0x8E, 0xDB, 0x37, 0xCA, 0xD5, 0xC2, 0x94, 0xC2, 0xB5, 0xCA, 0xD5, 0xCA, 0xF6, 0xC2, 0xF6, 0xC3, 0x57, 0xB3, 0x37, 0x92, 0xF6, 0x83, 0x77, 0x7C, 0x5A, 0x54, 0x79, 0x5D, 0xDE, 0x4D, 0xFE, 0x01, 0x45, 0xFD, 0x95, 0x56, 0x5F, 0x66, 0x5F, 0x6D, 0xBD, 0x74, 0xFA, 0x7C, 0x37, 0x7B, 0x34, 0x92, 0xF4, 0xB3, 0x35, 0xBA, 0xF5, 0xCB, 0x16, 0xCA, 0xF6, 0xCA, 0xD6, 0xC2, 0x95, 0xCA, 0xD6, 0xCA, 0xF6, 0xCB, 0x17, 0xBB, 0x17, 0x92, 0x34, 0x58, 0xEF, 0x59, 0x31, 0x59, 0x92, 0x51, 0x72, 0x01, 0x49, 0x72, 0x82, 0x49, 0x92, 0x41, 0x92, 0x41, 0x93, 0x04, 0x39, 0x72, 0x01, 0x39, 0x71, 0x06, 0x31, 0x51, 0x84, 0x31, 0x30, 0x31, 0x51, 0x31, 0x50, 0x29, 0x30, 0x31, 0x50, 0x0D, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x02, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x83, 0x11, 0x12, 0x19, 0x32, 0x11, 0x12, 0x19, 0x32, 0x04, 0x11, 0x12, 0x87, 0x10, 0xF2, 0x10, 0xF1, 0x11, 0x12, 0x10, 0xF2, 0x11, 0x12, 0x10, 0xF2, 0x11, 0x12, 0x10, 0xF1, 0x03, 0x10, 0xF2, 0x80, 0x11, 0x12, 0x05, 0x10, 0xF2, 0x82, 0x10, 0xF1, 0x10, 0xF2, 0x10, 0xF1, 0x02, 0x10, 0xF2, 0x04, 0x10, 0xF1, 0x03, 0x10, 0xF2, 0x01, 0x10, 0xF1, 0x80, 0x11, + 0x12, 0x04, 0x10, 0xF1, 0x03, 0x10, 0xF2, 0x02, 0x10, 0xF1, 0x80, 0x10, 0xD1, 0x02, 0x10, 0xF1, 0x82, 0x10, 0xF2, 0x10, 0xF1, 0x08, 0xF1, 0x04, 0x10, 0xF2, 0x81, 0x08, 0xF1, 0x10, 0xF2, 0x02, 0x08, 0xF1, 0x80, 0x09, 0x12, 0x01, 0x09, 0x11, 0x02, 0x08, 0xF1, 0x81, 0x08, 0xD1, 0x08, 0xF1, 0x01, 0x09, 0x12, 0x04, 0x08, 0xF2, 0x81, 0x10, 0xF2, 0x11, 0x12, 0x03, 0x10, 0xF2, 0x80, 0x08, 0xF1, 0x03, 0x10, 0xF1, 0x80, 0x10, 0xD1, 0x01, 0x10, 0xD2, 0x83, 0x08, 0xD1, 0x11, 0x12, 0x09, 0x12, 0x08, 0xF1, 0x01, 0x09, 0x11, 0x01, 0x11, 0x11, 0x80, 0x08, 0xF1, 0x02, 0x10, 0xF2, 0x84, 0x08, 0xF1, 0x10, 0xF2, 0x10, 0xF1, 0x11, 0x12, 0x10, 0xF1, 0x02, 0x11, 0x12, 0x82, 0x08, 0xF2, 0x09, 0x12, 0x08, 0xF2, 0x02, 0x11, 0x12, 0x86, 0x10, 0xF2, 0x10, 0xF1, 0x08, 0xF1, 0x11, 0x11, 0x10, 0xF1, 0x11, 0x12, 0x09, 0x11, 0x04, 0x09, 0x12, 0x01, 0x11, 0x12, 0x80, 0x08, 0xF2, 0x04, 0x11, 0x12, 0x06, 0x09, 0x11, 0x01, 0x09, 0x12, 0x80, 0x11, 0x32, 0x01, 0x11, 0x12, 0x81, 0x10, 0xF1, 0x11, 0x11, 0x02, 0x10, 0xF1, 0x02, 0x10, 0xF2, 0x84, 0x08, 0xF2, 0x11, 0x12, 0x08, 0xF2, 0x11, 0x12, 0x08, 0xF2, 0x01, 0x09, 0x11, 0x01, 0x08, 0xF2, 0x82, 0x11, 0x12, 0x08, 0xF2, 0x09, 0x12, 0x02, 0x08, 0xF2, 0x04, 0x09, 0x12, 0x80, 0x10, 0xF2, 0x03, 0x10, 0xF1, 0x80, 0x08, 0xF1, 0x02, 0x10, 0xF1, 0x81, 0x11, 0x12, 0x11, 0x11, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x81, 0x11, 0x12, 0x11, 0x32, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x03, 0x21, 0x31, 0x80, + 0x21, 0x50, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x89, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x0C, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x8C, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x89, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, + 0x04, 0x21, 0x10, 0x02, 0x21, 0x11, 0x83, 0x19, 0x12, 0x19, 0x32, 0x19, 0x53, 0x19, 0x54, 0x01, 0x19, 0x95, 0x08, 0x19, 0xB6, 0x87, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0xD7, 0x11, 0xD6, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0xD6, 0x01, 0x19, 0xB6, 0x80, 0x11, 0xB6, 0x03, 0x19, 0xB6, 0x86, 0x19, 0xD7, 0x19, 0xB7, 0x19, 0xD7, 0x19, 0xB7, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0xB7, 0x0E, 0x19, 0xB6, 0x02, 0x19, 0xD6, 0x03, 0x19, 0xB6, 0x82, 0x11, 0xB6, 0x19, 0xD6, 0x19, 0xB6, 0x01, 0x11, 0xB6, 0x02, 0x19, 0xB6, 0x88, 0x11, 0x96, 0x19, 0xD6, 0x11, 0xB6, 0x19, 0xD6, 0x11, 0xD6, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0xD6, 0x11, 0xB6, 0x01, 0x19, 0xD6, 0x82, 0x11, 0xB6, 0x19, 0xB6, 0x11, 0xB6, 0x01, 0x19, 0xB6, 0x86, 0x11, 0xB6, 0x19, 0xB6, 0x11, 0x95, 0x19, 0xB5, 0x11, 0x94, 0x11, 0x74, 0x11, 0x53, 0x01, 0x11, 0x32, 0x80, 0x19, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x11, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, + 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x08, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x03, 0x28, 0xEF, 0x02, 0x28, 0xF0, 0x87, 0x28, 0xEF, 0x29, 0x10, 0x20, 0xEF, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x07, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x11, 0x19, 0x12, 0x11, 0x54, 0x11, 0xB7, 0x12, 0x19, 0x09, 0xF9, 0x02, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x90, 0x09, 0xD8, 0x11, 0xD7, 0x11, 0xB6, 0x11, + 0x53, 0x11, 0x31, 0x21, 0x73, 0x19, 0x52, 0x19, 0x12, 0x11, 0x12, 0x19, 0x54, 0x19, 0xB7, 0x19, 0xF8, 0x11, 0xB7, 0x09, 0x76, 0x09, 0x55, 0x01, 0x54, 0x09, 0x74, 0x01, 0x09, 0x75, 0x87, 0x09, 0x76, 0x11, 0x96, 0x19, 0xB7, 0x19, 0xD7, 0x21, 0xB6, 0x19, 0x74, 0x19, 0x52, 0x21, 0x52, 0x01, 0x21, 0x31, 0x81, 0x29, 0x31, 0x29, 0x51, 0x01, 0x29, 0x31, 0x01, 0x31, 0x51, 0x80, 0x29, 0x30, 0x04, 0x31, 0x50, 0x04, 0x31, 0x51, 0x80, 0x39, 0x51, 0x01, 0x31, 0x51, 0x03, 0x39, 0x71, 0x80, 0x39, 0x51, 0x02, 0x39, 0x71, 0x02, 0x39, 0x72, 0x01, 0x41, 0x72, 0x01, 0x41, 0x92, 0x01, 0x41, 0x72, 0x01, 0x41, 0x93, 0x81, 0x41, 0x92, 0x49, 0x93, 0x01, 0x49, 0x92, 0x80, 0x49, 0x93, 0x01, 0x51, 0xB3, 0x02, 0x51, 0xB2, 0x88, 0x59, 0xB2, 0x59, 0x91, 0x51, 0x2F, 0x71, 0xF2, 0xC4, 0x5A, 0xD4, 0x79, 0xDC, 0x99, 0xD4, 0x58, 0xD4, 0x37, 0x04, 0xDC, 0x37, 0x80, 0xDC, 0x16, 0x02, 0xDC, 0x37, 0x82, 0xDC, 0x16, 0xDC, 0x37, 0xDC, 0x16, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x36, 0x02, 0xD4, 0x36, 0x92, 0xCC, 0x36, 0xD4, 0x77, 0xCC, 0x77, 0xCC, 0x98, 0xC4, 0x98, 0xBC, 0xB8, 0xA4, 0x77, 0x8C, 0x56, 0x84, 0xB7, 0x7D, 0x39, 0x75, 0xFB, 0x66, 0x7D, 0x5E, 0xFE, 0x47, 0x3E, 0x37, 0x5E, 0x1F, 0x3E, 0x17, 0x5E, 0x0F, 0x5E, 0x0F, 0x5F, 0x04, 0x07, 0x5F, 0x81, 0x0F, 0x5F, 0x07, 0x3F, 0x05, 0x07, 0x1F, 0x04, 0x06, 0xFF, 0x82, 0x07, 0x1F, 0x06, 0xFF, 0x07, 0x1F, 0x10, 0x06, 0xFF, 0x80, 0x06, 0xDF, 0x05, 0x06, 0xFF, 0x01, 0x0E, 0xFF, 0x80, 0x06, 0xDF, 0x03, 0x0E, 0xDF, 0x01, + 0x16, 0xDF, 0x81, 0x1E, 0xDF, 0x1E, 0xBF, 0x01, 0x26, 0x9E, 0x9A, 0x2E, 0x9E, 0x3E, 0xBF, 0x46, 0xDF, 0x4E, 0xDF, 0x56, 0xBF, 0x5E, 0x7F, 0x5E, 0x1E, 0x65, 0x7C, 0x6D, 0x1B, 0x74, 0xBA, 0x8C, 0x9A, 0xA4, 0x9B, 0x93, 0x97, 0x93, 0x36, 0xA3, 0x36, 0xBB, 0x98, 0xCB, 0x98, 0xCB, 0x78, 0xC3, 0x17, 0xCA, 0xF6, 0xCB, 0x16, 0xCA, 0xF6, 0xD3, 0x37, 0xD3, 0x16, 0xD3, 0x36, 0xCA, 0xF5, 0xD2, 0xF6, 0x01, 0xC2, 0x94, 0x99, 0xCA, 0xF6, 0xC2, 0xD5, 0xC2, 0xF6, 0xBB, 0x37, 0xB3, 0x37, 0x93, 0x16, 0x83, 0xB8, 0x74, 0x7A, 0x4C, 0xBA, 0x5E, 0x1F, 0x4E, 0x1E, 0x35, 0xDD, 0x46, 0x3E, 0x4E, 0x5E, 0x5E, 0x3E, 0x6D, 0xFE, 0x75, 0x3B, 0x7C, 0x37, 0x83, 0x35, 0x9B, 0x15, 0xB3, 0x36, 0xC3, 0x16, 0xCA, 0xF6, 0xCA, 0xB5, 0xCA, 0xD6, 0xCA, 0xB5, 0x01, 0xCA, 0xD6, 0x86, 0xCB, 0x17, 0xC3, 0x17, 0xAA, 0xD6, 0x61, 0x10, 0x61, 0x51, 0x59, 0x72, 0x51, 0x72, 0x02, 0x49, 0x92, 0x01, 0x41, 0x92, 0x03, 0x39, 0x72, 0x05, 0x39, 0x71, 0x05, 0x31, 0x51, 0x80, 0x31, 0x50, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x07, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x19, 0x11, 0x80, 0x11, 0x11, 0x01, 0x11, 0x12, 0x80, 0x09, 0x12, 0x01, 0x09, 0x13, 0x80, 0x08, 0xF3, 0x01, 0x09, 0x13, 0x80, 0x08, 0xF3, + 0x0C, 0x09, 0x13, 0x80, 0x08, 0xF3, 0x02, 0x09, 0x13, 0x81, 0x08, 0xF3, 0x09, 0x13, 0x01, 0x08, 0xF3, 0x02, 0x09, 0x13, 0x80, 0x08, 0xF3, 0x05, 0x09, 0x13, 0x82, 0x09, 0x12, 0x08, 0xF2, 0x09, 0x12, 0x01, 0x09, 0x13, 0x80, 0x08, 0xF3, 0x05, 0x09, 0x13, 0x01, 0x09, 0x33, 0x81, 0x11, 0x33, 0x09, 0x13, 0x02, 0x11, 0x34, 0x82, 0x11, 0x33, 0x11, 0x34, 0x11, 0x13, 0x05, 0x11, 0x33, 0x82, 0x11, 0x54, 0x11, 0x34, 0x11, 0x54, 0x01, 0x11, 0x34, 0x02, 0x11, 0x33, 0x82, 0x09, 0x13, 0x09, 0x33, 0x11, 0x33, 0x03, 0x09, 0x33, 0x80, 0x11, 0x53, 0x01, 0x09, 0x33, 0x81, 0x11, 0x34, 0x11, 0x54, 0x01, 0x09, 0x54, 0x82, 0x11, 0x54, 0x09, 0x34, 0x11, 0x54, 0x02, 0x09, 0x34, 0x01, 0x11, 0x34, 0x02, 0x11, 0x54, 0x85, 0x09, 0x34, 0x11, 0x54, 0x09, 0x33, 0x11, 0x33, 0x11, 0x34, 0x11, 0x14, 0x01, 0x11, 0x34, 0x81, 0x09, 0x13, 0x09, 0x33, 0x01, 0x11, 0x54, 0x02, 0x09, 0x33, 0x85, 0x11, 0x33, 0x09, 0x13, 0x09, 0x14, 0x11, 0x34, 0x09, 0x34, 0x09, 0x13, 0x04, 0x11, 0x33, 0x80, 0x09, 0x13, 0x01, 0x09, 0x33, 0x82, 0x09, 0x34, 0x09, 0x33, 0x09, 0x34, 0x03, 0x11, 0x34, 0x84, 0x09, 0x33, 0x09, 0x13, 0x09, 0x33, 0x09, 0x54, 0x09, 0x33, 0x04, 0x09, 0x54, 0x84, 0x11, 0x54, 0x09, 0x54, 0x09, 0x33, 0x11, 0x54, 0x11, 0x34, 0x01, 0x09, 0x33, 0x80, 0x11, 0x54, 0x08, 0x09, 0x53, 0x86, 0x09, 0x54, 0x09, 0x33, 0x11, 0x54, 0x11, 0x33, 0x11, 0x54, 0x11, 0x33, 0x11, 0x54, 0x02, 0x11, 0x33, 0x82, 0x11, 0x34, 0x09, 0x33, 0x09, 0x34, 0x01, 0x11, 0x54, 0x86, 0x09, 0x33, + 0x11, 0x54, 0x09, 0x53, 0x09, 0x54, 0x09, 0x34, 0x11, 0x54, 0x11, 0x34, 0x02, 0x09, 0x34, 0x01, 0x09, 0x54, 0x80, 0x09, 0x34, 0x01, 0x09, 0x54, 0x81, 0x11, 0x54, 0x09, 0x34, 0x01, 0x11, 0x34, 0x04, 0x11, 0x33, 0x01, 0x09, 0x33, 0x80, 0x09, 0x13, 0x04, 0x09, 0x33, 0x02, 0x09, 0x12, 0x02, 0x11, 0x12, 0x02, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x51, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x2F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x08, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x87, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, + 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x19, 0x11, 0x01, 0x19, 0x12, 0x81, 0x19, 0x33, 0x11, 0x33, 0x03, 0x11, 0x12, 0x83, 0x10, 0xF2, 0x11, 0x12, 0x10, 0xF2, 0x11, 0x12, 0x03, 0x11, 0x13, 0x01, 0x11, 0x33, 0x01, 0x11, 0x13, 0x02, 0x09, 0x13, 0x01, 0x11, 0x13, 0x80, 0x09, 0x13, 0x01, 0x11, 0x13, 0x01, 0x09, 0x13, 0x01, 0x08, 0xF3, 0x80, 0x11, 0x13, 0x01, 0x09, 0x13, 0x01, 0x11, 0x13, 0x82, 0x08, 0xF3, 0x11, 0x13, 0x09, 0x13, 0x01, 0x08, 0xF2, 0x84, 0x08, 0xF3, 0x08, 0xF2, 0x09, 0x12, 0x11, 0x13, 0x09, 0x12, 0x01, 0x09, 0x13, 0x83, 0x09, 0x12, 0x09, 0x13, 0x11, 0x13, 0x09, 0x12, 0x03, 0x09, 0x13, 0x80, 0x08, 0xF2, 0x04, 0x09, 0x13, 0x80, 0x08, 0xF2, 0x02, 0x11, 0x13, 0x80, 0x08, 0xF2, 0x01, 0x09, 0x13, 0x03, 0x09, 0x12, 0x81, 0x09, 0x13, 0x08, 0xF3, 0x03, 0x09, 0x13, 0x82, 0x09, 0x12, 0x11, 0x12, 0x08, 0xF2, 0x01, 0x10, 0xF2, 0x80, 0x11, 0x12, 0x01, 0x11, 0x32, 0x80, 0x19, 0x32, 0x02, 0x19, 0x11, 0x81, 0x21, 0x31, 0x21, 0x30, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, + 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x04, 0x29, 0x10, 0x03, 0x21, 0x10, 0x04, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, + 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x11, 0x19, 0x33, 0x19, 0x75, 0x1A, 0x18, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x8B, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD8, 0x11, 0xF8, 0x11, 0xB6, 0x11, 0x53, 0x11, 0x32, 0x21, 0x93, 0x19, 0x53, 0x19, 0x12, 0x19, 0x33, 0x19, 0x75, 0x01, 0x22, 0x18, 0x83, 0x11, 0xD7, 0x09, 0x56, 0x09, 0x35, 0x09, 0x54, 0x01, 0x09, 0x74, 0x87, 0x09, 0x75, 0x09, 0x55, 0x09, 0x76, 0x11, 0xB7, 0x19, 0xD7, 0x21, 0xD6, 0x21, 0x95, 0x19, 0x32, 0x01, 0x21, 0x52, 0x80, 0x29, 0x51, 0x03, 0x29, 0x31, 0x86, 0x31, 0x51, 0x29, 0x31, 0x29, 0x51, 0x31, 0x50, 0x29, 0x30, 0x31, 0x30, 0x31, 0x50, 0x07, 0x31, 0x51, 0x02, 0x39, 0x51, 0x04, 0x39, 0x71, 0x81, 0x41, 0x92, 0x41, 0x72, 0x01, 0x39, 0x72, 0x80, 0x41, 0x72, 0x05, 0x41, 0x92, 0x81, 0x49, 0x93, 0x41, 0x92, 0x01, 0x49, 0xB3, 0x80, 0x51, 0xD3, 0x02, 0x51, 0xB3, 0x01, 0x51, 0xB2, 0x87, 0x51, 0x92, 0x59, 0xB2, 0x59, 0x70, 0x71, 0xF1, 0xCC, 0x9B, 0xCC, 0x5A, 0xDC, 0x9A, 0xD4, 0x58, 0x01, 0xDC, 0x58, 0x01, 0xDC, 0x37, 0x81, 0xD4, 0x16, 0xDC, 0x16, 0x01, 0xDC, 0x37, 0x83, 0xD3, 0xF6, 0xDC, 0x37, 0xDC, 0x17, 0xDC, 0x16, 0x01, 0xDC, 0x37, 0x02, 0xD4, 0x16, 0x83, 0xD4, 0x36, 0xCC, 0x37, 0xCC, 0x57, 0xCC, 0x77, 0x01, 0xC4, 0x98, 0x8E, 0xB4, 0x98, 0xAC, 0x77, 0x94, 0x77, 0x8C, 0xB7, 0x85, 0x39, 0x85, 0xDB, 0x76, + 0x3C, 0x66, 0xBD, 0x4E, 0xDE, 0x3F, 0x3F, 0x2F, 0x3E, 0x1F, 0x5F, 0x17, 0x5E, 0x0F, 0x3E, 0x07, 0x5E, 0x03, 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x02, 0x07, 0x1F, 0x84, 0x06, 0xFF, 0x07, 0x1F, 0x06, 0xFF, 0x06, 0xDF, 0x06, 0xFF, 0x07, 0x06, 0xDF, 0x80, 0x06, 0xFF, 0x0D, 0x06, 0xDF, 0x06, 0x06, 0xFF, 0x03, 0x06, 0xDF, 0x80, 0x06, 0xFF, 0x02, 0x0E, 0xFF, 0x80, 0x06, 0xDF, 0x02, 0x0E, 0xDF, 0x01, 0x16, 0xDF, 0x97, 0x16, 0xBF, 0x1E, 0xBF, 0x1E, 0x9E, 0x1E, 0x7E, 0x26, 0x7F, 0x2E, 0xBF, 0x3E, 0xBF, 0x4E, 0xBF, 0x56, 0x7F, 0x5D, 0xFE, 0x65, 0x5C, 0x64, 0x9A, 0x63, 0xF9, 0x73, 0xD9, 0x9C, 0x7B, 0x9B, 0xF9, 0x9B, 0x57, 0xA3, 0x57, 0xBB, 0x78, 0xCB, 0x98, 0xCB, 0x58, 0xCB, 0x37, 0xCB, 0x17, 0xC2, 0xF6, 0x01, 0xCA, 0xF6, 0x85, 0xCA, 0xD5, 0xCA, 0xF6, 0xCA, 0xD5, 0xCA, 0xB5, 0xC2, 0x94, 0xCA, 0xF6, 0x01, 0xC2, 0xF6, 0x94, 0xC3, 0x37, 0xAB, 0x36, 0x93, 0x77, 0x84, 0x19, 0x5C, 0x38, 0x5D, 0x7D, 0x56, 0x3E, 0x46, 0x1E, 0x35, 0xFD, 0x3E, 0x3E, 0x4E, 0x5E, 0x56, 0x1E, 0x76, 0x7F, 0x7D, 0x7C, 0x7C, 0x38, 0x7B, 0x14, 0x9B, 0x55, 0xB3, 0x36, 0xC3, 0x36, 0xCA, 0xF5, 0xCA, 0xF6, 0x01, 0xCA, 0xB5, 0x88, 0xCA, 0xD6, 0xCA, 0xF6, 0xCB, 0x17, 0xC3, 0x17, 0xBB, 0x38, 0x71, 0x51, 0x61, 0x10, 0x59, 0x93, 0x51, 0x52, 0x01, 0x49, 0x72, 0x80, 0x49, 0x93, 0x02, 0x41, 0x92, 0x01, 0x39, 0x72, 0x01, 0x39, 0x71, 0x01, 0x39, 0x51, 0x01, 0x39, 0x71, 0x06, 0x31, 0x51, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, + 0x29, 0x10, 0x08, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x19, 0x10, 0x87, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xF8, 0x03, 0x22, 0x18, 0x84, 0x22, 0x19, 0x22, 0x18, 0x22, 0x39, 0x22, 0x18, 0x22, 0x38, 0x02, 0x22, 0x18, 0x05, 0x22, 0x38, 0x80, 0x2A, 0x39, 0x03, 0x22, 0x38, 0x8C, 0x22, 0x18, 0x22, 0x38, 0x2A, 0x39, 0x2A, 0x38, 0x22, 0x18, 0x2A, 0x39, 0x22, 0x38, 0x22, 0x39, 0x22, 0x38, 0x22, 0x39, 0x22, 0x18, 0x22, 0x38, 0x22, 0x18, 0x02, 0x22, 0x38, 0x80, 0x22, 0x18, 0x01, 0x22, 0x39, 0x82, 0x2A, 0x39, 0x22, 0x39, 0x2A, 0x39, 0x01, 0x22, 0x38, 0x81, 0x22, 0x18, 0x2A, 0x59, 0x02, 0x22, 0x38, 0x82, 0x2A, 0x18, 0x21, 0xF8, 0x2A, 0x18, 0x08, 0x22, 0x18, 0x85, 0x22, 0x38, 0x22, 0x18, 0x22, 0x39, 0x22, 0x18, 0x2A, 0x39, 0x22, 0x39, 0x01, 0x22, 0x18, 0x83, 0x22, 0x38, 0x22, 0x18, 0x22, 0x38, 0x22, 0x18, 0x02, 0x22, 0x38, 0x81, 0x22, 0x18, 0x22, 0x38, 0x02, 0x22, 0x18, 0x81, 0x22, 0x39, 0x22, 0x38, 0x01, 0x22, 0x19, 0x87, 0x22, 0x18, 0x1A, 0x18, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x39, 0x22, 0x18, 0x22, 0x38, 0x1A, 0x18, 0x01, 0x22, 0x38, 0x04, 0x22, 0x18, 0x83, 0x21, 0xF8, 0x1A, 0x18, 0x22, 0x18, 0x22, 0x38, 0x01, 0x22, 0x18, 0x82, 0x1A, 0x18, 0x22, 0x38, 0x1A, 0x18, 0x03, + 0x21, 0xF8, 0x02, 0x22, 0x18, 0x02, 0x21, 0xF8, 0x81, 0x22, 0x18, 0x19, 0xF8, 0x08, 0x22, 0x18, 0x82, 0x21, 0xF8, 0x22, 0x18, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x03, 0x1A, 0x38, 0x82, 0x22, 0x38, 0x22, 0x18, 0x22, 0x38, 0x01, 0x22, 0x18, 0x80, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x81, 0x22, 0x38, 0x22, 0x18, 0x02, 0x22, 0x38, 0x80, 0x1A, 0x18, 0x02, 0x1A, 0x38, 0x83, 0x1A, 0x18, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x38, 0x02, 0x22, 0x18, 0x01, 0x21, 0xF8, 0x05, 0x22, 0x18, 0x80, 0x22, 0x38, 0x04, 0x22, 0x18, 0x80, 0x22, 0x39, 0x02, 0x22, 0x18, 0x80, 0x22, 0x39, 0x01, 0x1A, 0x18, 0x88, 0x19, 0xF8, 0x22, 0x18, 0x1A, 0x18, 0x22, 0x19, 0x22, 0x18, 0x22, 0x19, 0x22, 0x18, 0x22, 0x19, 0x22, 0x18, 0x02, 0x22, 0x38, 0x01, 0x22, 0x18, 0x85, 0x22, 0x38, 0x1A, 0x18, 0x1A, 0x17, 0x1A, 0x38, 0x1A, 0x17, 0x22, 0x17, 0x01, 0x19, 0xF7, 0x01, 0x19, 0xB6, 0x80, 0x11, 0x75, 0x01, 0x11, 0x13, 0x01, 0x11, 0x12, 0x82, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x8A, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, + 0x21, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x09, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x11, 0x08, 0x19, 0x11, 0x80, 0x18, 0xF1, 0x02, 0x19, 0x12, 0x80, 0x11, 0x12, 0x01, 0x19, 0x12, 0x01, 0x11, 0x12, 0x01, 0x19, 0x12, 0x04, 0x11, 0x12, 0x84, 0x19, 0x12, 0x10, 0xF2, 0x11, 0x12, 0x19, 0x12, 0x10, 0xF1, 0x03, 0x11, 0x12, 0x82, 0x19, 0x12, 0x11, 0x12, 0x19, 0x12, 0x01, 0x11, 0x12, 0x82, 0x10, 0xF2, 0x19, 0x12, 0x11, 0x12, 0x01, 0x19, 0x12, 0x82, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x12, 0x03, 0x11, 0x12, 0x80, 0x10, 0xF2, 0x03, 0x11, 0x12, 0x80, 0x19, 0x32, 0x02, 0x11, 0x12, 0x81, 0x11, 0x32, 0x11, 0x12, 0x02, 0x19, 0x12, 0x80, 0x11, 0x12, 0x02, 0x19, 0x12, 0x81, + 0x11, 0x12, 0x19, 0x12, 0x08, 0x11, 0x12, 0x03, 0x19, 0x12, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, 0x82, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, + 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x11, 0x19, 0x33, 0x11, 0x75, 0x19, 0xF8, 0x11, 0xF9, 0x09, 0xF9, 0x01, 0xFA, 0x01, 0xD9, 0x02, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x86, 0x01, 0xB9, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xD7, 0x19, 0xD6, 0x11, 0x53, 0x11, 0x11, 0x01, 0x21, 0x73, 0x87, 0x19, 0x12, 0x11, 0x13, 0x19, 0x75, 0x21, 0xF7, 0x22, 0x18, 0x11, 0xD7, 0x09, 0x76, 0x09, 0x55, 0x01, 0x09, 0x54, 0x8C, 0x09, 0x74, 0x09, 0x54, 0x09, 0x55, 0x11, 0x76, 0x19, 0xD7, 0x21, 0xF8, 0x21, 0xB6, 0x21, 0x95, 0x19, 0x53, 0x21, 0x52, 0x21, 0x31, 0x29, 0x31, 0x29, 0x51, 0x01, 0x29, 0x31, 0x82, 0x29, 0x51, 0x29, 0x31, 0x31, 0x31, 0x08, 0x31, 0x51, 0x81, 0x39, 0x51, 0x31, 0x51, 0x01, 0x39, 0x51, 0x80, 0x31, + 0x51, 0x02, 0x39, 0x51, 0x80, 0x39, 0x71, 0x02, 0x39, 0x72, 0x80, 0x41, 0x92, 0x01, 0x41, 0x72, 0x01, 0x41, 0x92, 0x80, 0x41, 0x72, 0x01, 0x41, 0x92, 0x83, 0x49, 0x93, 0x49, 0x92, 0x49, 0xB3, 0x49, 0x93, 0x02, 0x49, 0xB3, 0x80, 0x51, 0xD3, 0x03, 0x51, 0xB3, 0x8A, 0x59, 0xB2, 0x59, 0x91, 0x59, 0x70, 0x69, 0xB1, 0xBC, 0x19, 0xCC, 0x5A, 0xDC, 0x7A, 0xDC, 0x79, 0xDC, 0x58, 0xDC, 0x38, 0xDC, 0x17, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x16, 0x01, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x16, 0x02, 0xDC, 0x37, 0x83, 0xD4, 0x37, 0xD4, 0x17, 0xD4, 0x16, 0xD4, 0x37, 0x01, 0xCC, 0x37, 0x90, 0xCC, 0x98, 0xC4, 0x98, 0xBC, 0xB8, 0xB4, 0xB8, 0xA4, 0x77, 0x94, 0x56, 0x8C, 0x97, 0x85, 0x18, 0x85, 0x9A, 0x7E, 0x1C, 0x6E, 0x9D, 0x5E, 0xDE, 0x4E, 0xFE, 0x37, 0x1E, 0x2F, 0x5F, 0x1F, 0x5E, 0x0F, 0x3E, 0x01, 0x07, 0x5E, 0x03, 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x01, 0x07, 0x1F, 0x03, 0x06, 0xFF, 0x07, 0x06, 0xDF, 0x80, 0x06, 0xBF, 0x02, 0x06, 0xDF, 0x01, 0x06, 0xBF, 0x02, 0x06, 0xDF, 0x80, 0x06, 0xBF, 0x01, 0x06, 0xDF, 0x80, 0x06, 0xBF, 0x08, 0x06, 0xDF, 0x80, 0x06, 0xFF, 0x06, 0x06, 0xDF, 0x01, 0x0E, 0xFF, 0x01, 0x06, 0xFF, 0x03, 0x06, 0xDF, 0x01, 0x0E, 0xDF, 0x01, 0x0E, 0xBF, 0x01, 0x0E, 0x9F, 0x95, 0x16, 0x7E, 0x1E, 0x7E, 0x26, 0x7E, 0x36, 0x5F, 0x4E, 0x5F, 0x5E, 0x3F, 0x65, 0xBE, 0x54, 0x7B, 0x54, 0x19, 0x74, 0x7B, 0x8C, 0xBD, 0x8C, 0x1A, 0x8B, 0x99, 0x9B, 0x58, 0xAB, 0x58, 0xBB, 0x99, 0xC3, 0x79, 0xC3, 0x38, 0xC2, 0xF6, 0xCB, 0x17, 0xCA, 0xF6, 0xD3, + 0x16, 0x02, 0xD2, 0xF6, 0x99, 0xC2, 0x74, 0xC2, 0x95, 0xC2, 0xB6, 0xC2, 0xD6, 0xBA, 0xF6, 0xBB, 0x37, 0x9B, 0x36, 0x8B, 0xB8, 0x7C, 0x7A, 0x5C, 0xBA, 0x5D, 0xFE, 0x56, 0x5F, 0x35, 0xFD, 0x36, 0x1D, 0x36, 0x3D, 0x4E, 0xBF, 0x56, 0x3E, 0x76, 0x7F, 0x7D, 0x9D, 0x6B, 0xF7, 0x72, 0xF4, 0x9B, 0x35, 0xB3, 0x56, 0xC3, 0x16, 0xC2, 0xF5, 0xCA, 0xD5, 0x02, 0xCA, 0xB5, 0x87, 0xCA, 0xD6, 0xCB, 0x17, 0xC3, 0x17, 0xBB, 0x17, 0x81, 0xD3, 0x58, 0xF0, 0x59, 0x72, 0x51, 0x52, 0x01, 0x49, 0x72, 0x81, 0x49, 0x92, 0x41, 0x92, 0x01, 0x41, 0x72, 0x01, 0x39, 0x72, 0x80, 0x39, 0x71, 0x01, 0x39, 0x72, 0x01, 0x39, 0x71, 0x03, 0x31, 0x51, 0x80, 0x31, 0x31, 0x01, 0x31, 0x51, 0x82, 0x29, 0x30, 0x29, 0x50, 0x31, 0x50, 0x0A, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x10, 0x91, 0x19, 0x11, 0x11, 0x31, 0x19, 0x53, 0x19, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xD8, 0x09, 0xB7, 0x11, 0xD8, 0x09, 0xD8, 0x11, 0xD8, 0x09, 0xD8, 0x11, 0xD8, 0x09, 0xB8, 0x11, 0xD8, 0x11, 0xB8, 0x02, 0x11, 0xD8, 0x80, 0x11, 0xB8, 0x04, 0x11, 0xD8, 0x80, 0x09, 0xD8, 0x08, 0x11, 0xD8, 0x80, 0x11, 0xB8, 0x02, 0x11, 0xD8, 0x80, 0x11, 0xB8, 0x14, 0x11, 0xD8, 0x82, 0x11, 0xB8, 0x11, 0xD8, 0x11, 0xB8, 0x01, 0x11, 0xD8, 0x01, 0x11, 0xB8, 0x8D, 0x11, 0xD8, 0x09, + 0xD8, 0x11, 0xD8, 0x09, 0xB7, 0x11, 0xD8, 0x11, 0xB8, 0x11, 0xD8, 0x11, 0xB8, 0x11, 0xD8, 0x11, 0xB8, 0x11, 0xD8, 0x11, 0xB8, 0x11, 0xD8, 0x09, 0xB7, 0x04, 0x11, 0xD8, 0x81, 0x11, 0xD7, 0x11, 0xD8, 0x03, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x80, 0x11, 0xD8, 0x04, 0x09, 0xD8, 0x82, 0x11, 0xF8, 0x09, 0xD8, 0x09, 0xF8, 0x04, 0x09, 0xD8, 0x85, 0x11, 0xD8, 0x09, 0xD8, 0x11, 0xD8, 0x09, 0xB7, 0x11, 0xD8, 0x09, 0xB7, 0x01, 0x11, 0xD7, 0x01, 0x11, 0xD8, 0x80, 0x11, 0xF8, 0x01, 0x11, 0xD8, 0x81, 0x11, 0xB8, 0x11, 0xF9, 0x01, 0x11, 0xD8, 0x8A, 0x11, 0xD9, 0x11, 0xD8, 0x11, 0xB8, 0x11, 0xD8, 0x11, 0xB8, 0x11, 0xD8, 0x09, 0xD8, 0x11, 0xD8, 0x09, 0xD8, 0x11, 0xD8, 0x09, 0xB8, 0x01, 0x11, 0xB8, 0x01, 0x11, 0xD8, 0x01, 0x09, 0xB8, 0x80, 0x09, 0xF8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xB7, 0x02, 0x09, 0xD8, 0x83, 0x09, 0xB7, 0x11, 0xD8, 0x09, 0xD8, 0x11, 0xD8, 0x01, 0x09, 0xD8, 0x82, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xB8, 0x02, 0x09, 0xD8, 0x82, 0x09, 0xD7, 0x09, 0xF8, 0x09, 0xD7, 0x03, 0x09, 0xD8, 0x02, 0x11, 0xD8, 0x80, 0x09, 0xB8, 0x02, 0x11, 0xD8, 0x80, 0x09, 0xB8, 0x01, 0x11, 0xD8, 0x81, 0x11, 0xF8, 0x09, 0xD8, 0x01, 0x11, 0xD8, 0x81, 0x11, 0xF8, 0x09, 0xD8, 0x02, 0x11, 0xD8, 0x85, 0x11, 0xB8, 0x11, 0xD8, 0x11, 0xB8, 0x11, 0xD8, 0x09, 0xB8, 0x11, 0xD8, 0x06, 0x09, 0xB8, 0x81, 0x11, 0xD8, 0x09, 0xB8, 0x03, 0x11, 0xD8, 0x81, 0x11, 0xF8, 0x11, 0xD8, 0x06, 0x11, 0xF8, 0x01, 0x1A, 0x18, 0x85, 0x22, 0x18, 0x19, 0xD7, 0x11, 0x75, + 0x09, 0x34, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x05, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x89, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, + 0x0F, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x84, 0x21, 0x10, 0x19, 0x10, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x21, 0x11, 0x03, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, 0x04, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x04, 0x19, 0x31, 0x01, 0x19, 0x11, 0x02, 0x19, 0x31, 0x81, 0x19, 0x32, 0x19, 0x11, 0x02, 0x19, 0x32, 0x80, 0x19, 0x12, 0x02, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x32, 0x04, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x83, 0x21, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x01, 0x19, 0x11, 0x82, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x19, 0x11, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, + 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x05, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, + 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x87, 0x21, 0x11, 0x19, 0x11, 0x19, 0x13, 0x11, 0x75, 0x19, 0xD7, 0x11, 0xD9, 0x09, 0xD9, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x90, 0x09, 0xB9, 0x09, 0xB8, 0x11, 0xB7, 0x19, 0x95, 0x11, 0x32, 0x11, 0x11, 0x19, 0x52, 0x19, 0x32, 0x19, 0x12, 0x11, 0x13, 0x19, 0x75, 0x21, 0xD7, 0x19, 0xF8, 0x11, 0xF8, 0x09, 0x76, 0x09, 0x55, 0x11, 0x75, 0x02, 0x09, 0x54, 0x80, 0x09, 0x76, 0x02, 0x19, 0xD7, 0x84, 0x19, 0xB6, 0x19, 0x75, 0x21, 0x53, 0x21, 0x52, 0x21, 0x32, 0x01, 0x29, 0x51, 0x80, 0x29, 0x31, 0x0C, 0x31, 0x51, 0x80, 0x39, 0x71, 0x02, 0x39, 0x51, 0x02, 0x39, 0x71, 0x04, 0x39, 0x72, 0x01, 0x41, 0x72, 0x02, 0x41, 0x92, 0x01, 0x41, 0x93, 0x80, 0x49, 0x93, 0x06, 0x49, 0xB3, 0x03, 0x51, 0xD3, 0x90, 0x51, 0xB2, 0x59, 0x92, 0x51, 0x30, 0x59, 0x4F, 0xBC, 0x19, 0xCC, 0x7A, 0xD4, 0x7A, 0xD4, 0x59, 0xD4, 0x17, 0xDC, 0x58, 0xDC, 0x38, 0xDC, 0x37, 0xD4, 0x16, 0xDC, 0x16, 0xDC, 0x37, 0xD4, 0x16, 0xD4, 0x36, 0x01, 0xDC, 0x37, 0x80, 0xD4, 0x16, 0x02, 0xD4, 0x37, 0x01, 0xCC, 0x37, 0x93, 0xC4, 0x57, 0xC4, 0x78, 0xC4, 0xB8, 0xBC, 0xD9, 0xB4, 0xB8, 0x9C, 0x97, 0x94, 0x97, 0x84, 0xB7, 0x7D, 0x38, 0x7D, 0xBA, 0x75, 0xFB, 0x6E, 0x5C, 0x5E, 0x9D, 0x4E, 0xDE, 0x3E, 0xFE, 0x37, 0x5F, 0x27, 0x5F, 0x17, 0x3E, 0x0F, 0x3E, 0x07, 0x5E, 0x04, 0x07, 0x5F, 0x02, 0x07, 0x3F, 0x80, 0x07, 0x1F, 0x03, 0x06, 0xFF, 0x02, 0x06, 0xDF, 0x81, 0x06, 0xBF, 0x06, 0xDF, 0x06, 0x06, 0xBF, + 0x01, 0x06, 0x9F, 0x11, 0x06, 0xBF, 0x80, 0x06, 0xDF, 0x05, 0x06, 0xBF, 0x80, 0x06, 0x9F, 0x01, 0x06, 0xBF, 0x07, 0x06, 0xDF, 0x80, 0x06, 0xBF, 0x01, 0x0E, 0xBF, 0x96, 0x0E, 0x9F, 0x0E, 0x5E, 0x16, 0x5E, 0x1E, 0x3E, 0x26, 0x1E, 0x35, 0xFF, 0x45, 0xDF, 0x4D, 0x9F, 0x55, 0x5E, 0x54, 0xBC, 0x33, 0x57, 0x43, 0x38, 0x6B, 0xBB, 0x8C, 0x1C, 0x9B, 0xFB, 0xA3, 0xBA, 0xAB, 0x58, 0xBB, 0x58, 0xC3, 0x37, 0xC3, 0x17, 0xCB, 0x17, 0xD3, 0x37, 0xCA, 0xF6, 0x01, 0xCA, 0xD6, 0x80, 0xCA, 0xB6, 0x01, 0xC2, 0x95, 0x97, 0xC2, 0xB6, 0xC2, 0xF7, 0xBB, 0x17, 0xAB, 0x16, 0x8A, 0xD5, 0x8C, 0x19, 0x6C, 0x79, 0x55, 0x1B, 0x5E, 0x3F, 0x4E, 0x5E, 0x36, 0x1D, 0x2E, 0x1D, 0x36, 0x5E, 0x4E, 0xBF, 0x56, 0x7E, 0x66, 0x3E, 0x7D, 0xDD, 0x63, 0xB6, 0x73, 0x14, 0x93, 0x15, 0xB3, 0x36, 0xC3, 0x36, 0xC2, 0xD5, 0xCA, 0xD5, 0x02, 0xCA, 0x95, 0x8A, 0xCA, 0xB5, 0xCA, 0xD6, 0xC2, 0xF6, 0xC3, 0x58, 0x92, 0x34, 0x61, 0x10, 0x59, 0x52, 0x51, 0x52, 0x49, 0x31, 0x49, 0x72, 0x49, 0x92, 0x01, 0x41, 0x92, 0x01, 0x41, 0x72, 0x04, 0x39, 0x72, 0x80, 0x39, 0x71, 0x05, 0x31, 0x51, 0x01, 0x31, 0x50, 0x0C, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x88, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x19, 0x52, 0x11, 0x74, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x09, 0xB7, 0x01, + 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x81, 0x09, 0xD8, 0x01, 0xB8, 0x01, 0x09, 0xD9, 0x81, 0x01, 0xB8, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x09, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x05, 0x09, 0xD8, 0x81, 0x09, 0xD9, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x02, 0x09, 0xB8, 0x03, 0x09, 0xD8, 0x81, 0x01, 0xB8, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x02, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x02, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x01, 0x11, 0xD8, 0x01, 0x09, 0xD9, 0x01, 0x09, 0xD8, 0x02, 0x09, 0xD9, 0x04, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x80, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x02, 0x09, 0xD8, 0x82, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xB8, 0x02, 0x09, 0xD8, 0x80, 0x01, 0xD8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xD9, 0x1A, 0x09, 0xD8, 0x02, 0x09, 0xD9, 0x80, 0x09, 0xB9, 0x06, 0x09, 0xD9, 0x80, 0x09, 0xB8, 0x02, 0x09, 0xD8, 0x83, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xD9, 0x09, 0xD8, 0x03, 0x09, 0xD9, 0x81, 0x09, 0xB9, 0x01, 0xB8, 0x01, 0x01, 0xD8, 0x80, 0x01, 0xB8, 0x03, 0x09, 0xD8, 0x81, 0x09, 0xD9, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xF9, 0x03, 0x09, 0xD8, 0x82, 0x09, 0xB8, 0x09, 0xD9, 0x09, 0xF9, 0x05, 0x09, 0xD9, 0x80, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x84, 0x09, 0xD8, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xF9, 0x09, 0xD8, 0x01, 0x09, 0xF8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x82, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xB8, 0x03, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x83, 0x09, + 0xD9, 0x09, 0xB8, 0x09, 0xB9, 0x09, 0xD9, 0x02, 0x09, 0xB8, 0x03, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xF8, 0x02, 0x09, 0xD8, 0x89, 0x09, 0xB8, 0x11, 0xD8, 0x1A, 0x19, 0x1A, 0x18, 0x11, 0xD7, 0x09, 0x54, 0x09, 0x13, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x88, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, + 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x85, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x09, 0x21, 0x31, 0x86, 0x21, 0x30, 0x21, 0x11, 0x19, 0x10, 0x21, 0x11, 0x21, 0x10, 0x21, 0x11, 0x19, 0x10, 0x02, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x03, 0x21, 0x31, 0x82, 0x19, 0x10, 0x21, 0x31, 0x19, 0x10, 0x01, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x31, 0x02, 0x21, 0x11, 0x80, 0x21, 0x31, 0x06, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x11, 0x82, 0x19, 0x10, 0x21, 0x11, 0x19, 0x11, 0x01, 0x21, 0x11, 0x85, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x21, 0x31, 0x02, 0x19, 0x11, 0x86, 0x19, 0x10, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x10, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, + 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x87, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x20, 0xEF, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x0A, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, + 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x89, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x11, 0x85, 0x19, 0x13, 0x11, 0x55, 0x11, 0xB7, 0x11, 0xB8, 0x09, 0xD9, 0x09, 0xF9, 0x05, 0x01, 0xD9, 0x86, 0x09, 0xB9, 0x09, 0xB8, 0x09, 0xB7, 0x11, 0xB6, 0x11, 0x74, 0x19, 0x53, 0x19, 0x32, 0x01, 0x19, 0x11, 0x83, 0x19, 0x12, 0x19, 0x33, 0x19, 0x54, 0x21, 0xB7, 0x01, 0x19, 0xF8, 0x81, 0x11, 0xB7, 0x11, 0x76, 0x01, 0x11, 0x75, 0x8A, 0x09, 0x54, 0x09, 0x55, 0x11, 0xB6, 0x19, 0xD7, 0x21, 0xF8, 0x21, 0xD7, 0x21, 0xB6, 0x21, 0x95, 0x21, 0x74, 0x21, 0x52, 0x29, 0x52, 0x02, 0x29, 0x51, 0x01, 0x31, 0x51, 0x82, 0x31, 0x71, 0x31, 0x51, 0x31, 0x31, 0x03, 0x31, 0x51, 0x80, 0x39, 0x51, 0x03, 0x39, 0x71, 0x82, 0x39, 0x51, 0x39, 0x72, 0x39, 0x71, 0x01, 0x39, 0x72, 0x80, 0x39, 0x71, 0x01, 0x39, 0x72, 0x80, 0x41, 0x92, 0x01, 0x41, 0x72, 0x01, 0x41, 0x92, 0x82, 0x41, 0x93, 0x41, 0x92, 0x41, 0x93, 0x02, 0x49, 0xB3, 0x80, 0x49, 0x93, 0x01, 0x49, 0xB3, 0x80, 0x51, 0xD3, 0x01, 0x49, 0xB3, 0x80, 0x51, 0xB3, 0x01, 0x51, 0xD3, 0x01, 0x59, 0xD3, 0x89, 0x59, 0xB2, 0x59, 0x71, 0x59, 0x70, 0xAB, 0x77, 0xCC, 0x7A, 0xD4, 0x9A, 0xD4, 0x59, 0xD4, 0x38, 0xD4, 0x37, 0xD4, 0x17, 0x01, 0xDC, 0x37, 0x81, 0xD4, 0x16, 0xD4, 0x36, 0x01, 0xDC, 0x57, 0x02, 0xD4, 0x57, 0x80, 0xCC, 0x57, 0x01, 0xC4, 0x37, 0x01, 0xC4, 0x78, 0x93, 0xC4, + 0xB8, 0xBC, 0xB9, 0xB4, 0x98, 0xA4, 0x98, 0x9C, 0x97, 0x84, 0x97, 0x84, 0xF8, 0x85, 0x79, 0x7D, 0xDB, 0x76, 0x3C, 0x6E, 0x7C, 0x5E, 0x9C, 0x56, 0xDE, 0x46, 0xFE, 0x3F, 0x3F, 0x2F, 0x5F, 0x1F, 0x5F, 0x17, 0x3F, 0x0F, 0x5E, 0x07, 0x3E, 0x04, 0x07, 0x5F, 0x03, 0x07, 0x3F, 0x82, 0x06, 0xFF, 0x06, 0xDF, 0x06, 0xFF, 0x01, 0x06, 0xDF, 0x04, 0x06, 0xBF, 0x80, 0x06, 0x9F, 0x02, 0x06, 0xBF, 0x0B, 0x06, 0x9F, 0x80, 0x06, 0x7F, 0x04, 0x06, 0x9F, 0x02, 0x06, 0xBF, 0x82, 0x06, 0x9F, 0x06, 0xBF, 0x06, 0x9F, 0x01, 0x06, 0xBF, 0x01, 0x06, 0x9F, 0x03, 0x06, 0x7F, 0x80, 0x06, 0x9F, 0x01, 0x06, 0xBF, 0x01, 0x06, 0xDF, 0x02, 0x06, 0xBF, 0x80, 0x06, 0xDF, 0x02, 0x06, 0xBF, 0x01, 0x0E, 0x9F, 0xB1, 0x0E, 0x7F, 0x16, 0x5F, 0x16, 0x3F, 0x1D, 0xFE, 0x1D, 0xBE, 0x2D, 0x9E, 0x35, 0x7E, 0x3D, 0x3E, 0x3C, 0x7C, 0x33, 0xDB, 0x33, 0x18, 0x42, 0xF7, 0x63, 0x59, 0x94, 0x1C, 0xAC, 0x3C, 0xB3, 0xFB, 0xB3, 0x38, 0xBB, 0x38, 0xC3, 0x38, 0xC2, 0xF7, 0xCB, 0x17, 0xCA, 0xF7, 0xCA, 0xB6, 0xD2, 0xF7, 0xCA, 0xB6, 0xC2, 0x96, 0xCA, 0xB6, 0xBA, 0x95, 0xBA, 0xD6, 0xB3, 0x17, 0xA3, 0x37, 0x83, 0x16, 0x84, 0x5A, 0x64, 0x79, 0x65, 0xBD, 0x56, 0x5E, 0x46, 0x7F, 0x2D, 0xFC, 0x2E, 0x3D, 0x36, 0x7E, 0x46, 0x9E, 0x56, 0x9F, 0x5E, 0x1D, 0x7D, 0xBD, 0x63, 0xF7, 0x73, 0x14, 0x92, 0xF4, 0xB3, 0x56, 0xC3, 0x15, 0xCA, 0xF5, 0x01, 0xCA, 0xB5, 0x82, 0xCA, 0x94, 0xD2, 0xB5, 0xCA, 0xB5, 0x01, 0xCA, 0xD6, 0x84, 0xCB, 0x38, 0xA2, 0x75, 0x60, 0xF0, 0x61, 0x52, 0x51, 0x52, 0x01, 0x49, + 0x72, 0x80, 0x49, 0x92, 0x01, 0x41, 0x92, 0x01, 0x41, 0x72, 0x04, 0x39, 0x72, 0x80, 0x39, 0x71, 0x05, 0x31, 0x51, 0x80, 0x31, 0x30, 0x0B, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8B, 0x19, 0x52, 0x19, 0x53, 0x11, 0x54, 0x09, 0x54, 0x09, 0x96, 0x11, 0xD8, 0x09, 0xD9, 0x09, 0xF9, 0x01, 0xD8, 0x01, 0xB8, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x02, 0x01, 0xD9, 0x80, 0x09, 0xD9, 0x02, 0x01, 0xD9, 0x80, 0x09, 0xD9, 0x03, 0x01, 0xD9, 0x83, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD9, 0x04, 0x01, 0xD9, 0x83, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xB9, 0x09, 0xD9, 0x04, 0x01, 0xD9, 0x80, 0x09, 0xD9, 0x0C, 0x01, 0xD9, 0x01, 0x01, 0xD8, 0x81, 0x09, 0xD8, 0x01, 0xB8, 0x02, 0x09, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x09, 0xD9, 0x81, 0x01, 0xD9, 0x09, 0xD9, 0x08, 0x01, 0xD9, 0x81, 0x01, 0xB9, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x80, 0x09, 0xF9, 0x03, 0x09, 0xD9, 0x81, 0x01, 0xD9, 0x01, 0xD8, 0x04, 0x01, 0xD9, 0x80, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x81, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x81, 0x01, 0xD9, 0x01, 0xD8, 0x0C, 0x01, 0xD9, 0x82, 0x01, 0xD8, 0x09, 0xD8, 0x09, 0xD9, 0x03, 0x01, 0xD9, 0x83, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xDA, 0x05, 0x09, 0xD9, 0x04, 0x01, 0xD9, 0x80, 0x09, 0xD9, 0x01, 0x01, 0xD9, + 0x02, 0x09, 0xD9, 0x80, 0x01, 0xB9, 0x05, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x83, 0x01, 0xD9, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xB9, 0x05, 0x01, 0xD9, 0x80, 0x09, 0xD9, 0x01, 0x01, 0xD8, 0x80, 0x01, 0xF9, 0x09, 0x01, 0xD9, 0x81, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x83, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0xD8, 0x01, 0x01, 0xF9, 0x80, 0x01, 0xD9, 0x03, 0x09, 0xD9, 0x80, 0x09, 0xB8, 0x02, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x0C, 0x01, 0xD9, 0x90, 0x01, 0xD8, 0x01, 0xF9, 0x01, 0xD9, 0x09, 0xD9, 0x01, 0xB8, 0x09, 0xD8, 0x09, 0xF8, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x19, 0x30, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, + 0x30, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x87, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x04, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x07, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x29, 0x51, 0x21, 0x30, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x31, 0x08, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x0A, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x31, 0x21, 0x10, 0x21, 0x11, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x07, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, + 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x8A, 0x21, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x07, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, + 0x0F, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x09, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x03, 0x29, 0x10, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x8B, 0x21, 0x11, 0x19, 0x12, 0x11, 0x54, 0x19, 0xD7, 0x11, 0x97, 0x09, 0xB8, 0x09, 0xF8, 0x09, 0xF9, 0x01, 0x98, 0x01, 0xB9, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0x09, 0xD9, 0x87, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0xB6, 0x11, 0x74, 0x19, 0x73, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x12, 0x85, 0x19, 0x54, 0x19, 0x95, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xD7, 0x02, 0x11, 0x95, 0x87, 0x11, 0xB6, 0x19, 0xF7, 0x19, 0xF8, 0x21, 0xF8, 0x21, 0xD7, 0x21, 0xB6, 0x21, 0x95, 0x21, 0x73, 0x01, 0x29, 0x52, 0x01, 0x29, 0x31, 0x03, 0x31, 0x51, 0x03, 0x31, 0x71, 0x04, 0x39, 0x71, 0x06, 0x39, 0x72, 0x81, 0x39, 0x92, 0x39, 0x72, 0x02, 0x41, 0x92, 0x03, 0x41, 0x93, 0x81, 0x49, 0x93, 0x41, 0x93, 0x03, 0x49, 0xB3, 0x80, 0x49, 0xD3, 0x05, 0x51, 0xD3, 0x8A, 0x59, 0xD3, 0x59, 0xB3, 0x59, 0xB2, 0x59, 0x91, 0x59, 0x50, 0xAB, 0x77, 0xCC, 0x7A, 0xCC, 0x59, 0xD4, 0x59, 0xD4, 0x58, 0xDC, 0x58, 0x01, 0xD4, 0x37, 0x80, 0xD4, 0x16, 0x01, 0xDC, 0x37, 0x01, 0xD4, 0x57, 0x81, 0xD4, 0x77, 0xCC, 0x77, 0x01, 0xC4, 0x77, 0x96, 0xBC, 0x77, 0xBC, 0xB8, 0xBC, 0xD9, + 0xB4, 0xD8, 0xAC, 0xB8, 0x9C, 0x77, 0x94, 0x77, 0x8C, 0xB8, 0x8C, 0xD8, 0x85, 0x59, 0x85, 0xBB, 0x7E, 0x1C, 0x76, 0x3C, 0x66, 0x5C, 0x5E, 0x9C, 0x56, 0xFD, 0x47, 0x1E, 0x3F, 0x5F, 0x2F, 0x5F, 0x27, 0x5F, 0x17, 0x3F, 0x0F, 0x3F, 0x0F, 0x5F, 0x03, 0x07, 0x5F, 0x02, 0x07, 0x3F, 0x81, 0x07, 0x1F, 0x06, 0xFE, 0x02, 0x06, 0xDE, 0x01, 0x06, 0xDF, 0x01, 0x06, 0xBF, 0x08, 0x06, 0x9F, 0x07, 0x06, 0x7F, 0x80, 0x06, 0x5F, 0x04, 0x06, 0x7F, 0x01, 0x06, 0x5F, 0x01, 0x06, 0x7F, 0x80, 0x06, 0x5F, 0x01, 0x06, 0x7F, 0x03, 0x06, 0x9F, 0x02, 0x06, 0x7F, 0x80, 0x06, 0x5F, 0x01, 0x06, 0x7F, 0x01, 0x06, 0x9F, 0x02, 0x06, 0xBF, 0x01, 0x06, 0x9F, 0x81, 0x06, 0xBF, 0x06, 0x9F, 0x04, 0x06, 0xBF, 0x80, 0x06, 0x9F, 0x01, 0x0E, 0x7F, 0x93, 0x16, 0x5F, 0x16, 0x1F, 0x15, 0xDE, 0x15, 0x7E, 0x1D, 0x5E, 0x25, 0x3E, 0x2D, 0x1E, 0x34, 0xDE, 0x3C, 0x7D, 0x3B, 0xDB, 0x2A, 0x76, 0x32, 0x15, 0x62, 0xD8, 0xA4, 0x3D, 0xB4, 0x1C, 0xAB, 0x7A, 0xAB, 0x18, 0xB2, 0xF8, 0xC3, 0x38, 0xCB, 0x18, 0x01, 0xCA, 0xF7, 0x99, 0xCA, 0xD7, 0xCA, 0x96, 0xC2, 0x95, 0xBA, 0x54, 0xBA, 0xB6, 0xBA, 0xF7, 0xB3, 0x37, 0x9B, 0x16, 0x7B, 0x15, 0x74, 0x19, 0x5C, 0xBA, 0x5E, 0x1E, 0x4E, 0x9F, 0x2D, 0xFC, 0x26, 0x3D, 0x2E, 0x5D, 0x36, 0x9E, 0x46, 0xBF, 0x56, 0xBF, 0x6E, 0x9F, 0x7D, 0xDD, 0x6C, 0x17, 0x6A, 0xF3, 0x92, 0xF4, 0xB3, 0x15, 0xC2, 0xF5, 0x01, 0xCA, 0xD5, 0x81, 0xCA, 0xB4, 0xCA, 0x94, 0x01, 0xCA, 0x95, 0x86, 0xCA, 0xB5, 0xCA, 0xB6, 0xCB, 0x38, 0xB2, 0xF7, 0x71, 0x51, 0x59, 0x31, + 0x51, 0x31, 0x01, 0x49, 0x72, 0x80, 0x49, 0x92, 0x03, 0x41, 0x72, 0x03, 0x39, 0x72, 0x83, 0x39, 0x71, 0x39, 0x51, 0x31, 0x51, 0x39, 0x71, 0x03, 0x31, 0x51, 0x02, 0x31, 0x50, 0x01, 0x29, 0x50, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x06, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x09, 0x33, 0x09, 0x55, 0x11, 0xD7, 0x12, 0x19, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x85, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x83, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xDA, 0x03, 0x01, 0xD9, 0x80, 0x01, 0xFA, 0x08, 0x01, 0xD9, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x0A, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x06, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x02, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x81, 0x01, 0xD9, 0x01, 0xB9, 0x09, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x84, 0x09, 0xFA, 0x01, 0xD9, 0x09, 0xFA, 0x09, 0xD9, 0x01, 0xB9, 0x04, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x04, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x02, 0x01, 0xD9, 0x01, 0x01, 0xF9, 0x05, 0x01, 0xD9, 0x01, 0x01, 0xF9, 0x04, 0x01, 0xD9, 0x82, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xD8, 0x03, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x03, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x0A, 0x01, 0xD9, 0x80, 0x01, 0xFA, 0x05, 0x01, 0xD9, + 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x09, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x07, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x0B, 0x01, 0xD9, 0x81, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x80, 0x09, 0xFA, 0x03, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x07, 0x01, 0xD9, 0x80, 0x09, 0xDA, 0x02, 0x01, 0xD9, 0x80, 0x09, 0xF9, 0x03, 0x01, 0xD9, 0x8A, 0x09, 0xF9, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0x95, 0x11, 0x33, 0x11, 0x11, 0x11, 0x10, 0x19, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x8A, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, + 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x8A, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x07, 0x21, 0x10, 0x80, 0x29, 0x30, 0x07, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x08, 0x21, 0x10, 0x87, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x11, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x82, 0x20, 0xF0, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, + 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x07, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x87, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x89, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, + 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x11, 0x19, 0x32, 0x19, 0x54, 0x19, 0xB6, 0x11, 0x97, 0x01, 0x11, 0xD8, 0x80, 0x11, 0xF8, 0x03, 0x09, 0xB8, 0x87, 0x09, 0xD8, 0x11, 0xF9, 0x11, 0xB7, 0x11, 0xB6, 0x19, 0x95, 0x19, 0x74, 0x21, 0x73, 0x19, 0x31, 0x01, 0x21, 0x31, 0x94, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0x75, 0x19, 0xB6, 0x22, 0x18, 0x19, 0xF8, 0x19, 0xF7, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x21, 0xB6, 0x21, 0x95, 0x21, 0x74, 0x21, 0x73, 0x29, 0x52, 0x29, 0x72, 0x05, 0x31, 0x51, 0x80, 0x39, 0x71, 0x01, 0x31, 0x71, 0x80, 0x31, 0x51, 0x01, 0x39, 0x51, 0x01, 0x39, 0x72, 0x85, 0x39, 0x92, 0x39, 0x72, 0x39, 0x71, 0x39, 0x72, 0x41, 0x92, 0x39, 0x72, 0x05, 0x41, 0x92, 0x02, 0x41, 0x93, 0x80, 0x49, 0x93, 0x03, 0x49, 0xB3, 0x01, 0x49, 0xD3, 0x80, 0x49, 0xB3, 0x06, 0x51, 0xD3, 0x86, 0x59, 0xF3, 0x59, 0xD3, 0x59, 0x91, 0x59, 0x50, 0x9B, 0x16, 0xCC, 0x7A, 0xD4, 0x7A, 0x01, 0xD4, 0x79, 0x81, 0xD4, 0x38, 0xD4, 0x37, 0x01, 0xDC, 0x57, 0x81, 0xD4, 0x16, 0xD4, 0x57, 0x01, 0xD4, 0x77, 0x98, 0xCC, 0x77, 0xC4, 0x77, 0xBC, 0xB8, 0xBC, 0xD8, 0xB4, 0xD8, 0xAC, 0xF9, 0xA4, 0xF9, 0x94, + 0xD8, 0x8C, 0xB7, 0x7C, 0x97, 0x7C, 0xD8, 0x7D, 0x59, 0x85, 0xBB, 0x7D, 0xFC, 0x76, 0x5C, 0x6E, 0x7C, 0x66, 0x9D, 0x56, 0xBD, 0x4E, 0xDD, 0x47, 0x1E, 0x3F, 0x3E, 0x37, 0x5E, 0x27, 0x7F, 0x1F, 0x5F, 0x17, 0x5F, 0x02, 0x07, 0x5F, 0x80, 0x07, 0x7F, 0x02, 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x80, 0x07, 0x1F, 0x01, 0x06, 0xFE, 0x01, 0x06, 0xDE, 0x81, 0x06, 0xBE, 0x06, 0xDF, 0x02, 0x06, 0xBF, 0x01, 0x06, 0x9F, 0x07, 0x06, 0x7F, 0x0D, 0x06, 0x5F, 0x80, 0x06, 0x3F, 0x0C, 0x06, 0x5F, 0x81, 0x06, 0x7F, 0x06, 0x5F, 0x05, 0x06, 0x7F, 0x08, 0x06, 0x9F, 0xC3, 0x06, 0x7F, 0x06, 0x5F, 0x0E, 0x3F, 0x0E, 0x1F, 0x0D, 0xFF, 0x0D, 0xBF, 0x0D, 0x7E, 0x15, 0x5E, 0x14, 0xFE, 0x1C, 0xDE, 0x2C, 0xBE, 0x34, 0x9E, 0x3B, 0xFC, 0x32, 0xF9, 0x2A, 0x16, 0x39, 0xF5, 0x6A, 0xD8, 0x9B, 0xDC, 0xAB, 0xDC, 0xB3, 0x7B, 0xB2, 0xF9, 0xBB, 0x19, 0xCB, 0x39, 0xCB, 0x18, 0xCA, 0xF8, 0xCA, 0xD7, 0xBA, 0x55, 0xC2, 0xB6, 0xBA, 0x95, 0xBA, 0xB6, 0xB2, 0xF7, 0xAB, 0x37, 0x8A, 0xF5, 0x73, 0x36, 0x74, 0x7A, 0x54, 0xFA, 0x5E, 0x7F, 0x46, 0x7E, 0x2E, 0x5D, 0x26, 0x5D, 0x26, 0x7E, 0x36, 0x9E, 0x46, 0xDF, 0x4E, 0x7E, 0x6E, 0xBF, 0x75, 0xBC, 0x6B, 0xF6, 0x72, 0xF3, 0x92, 0xD3, 0xB3, 0x35, 0xC2, 0xF5, 0xCA, 0xD5, 0xCA, 0x94, 0xCA, 0x95, 0xCA, 0x74, 0xD2, 0x95, 0xCA, 0x74, 0xCA, 0xB5, 0xCA, 0xB6, 0xCB, 0x17, 0xBB, 0x18, 0x71, 0x72, 0x59, 0x11, 0x59, 0x72, 0x51, 0x72, 0x49, 0x72, 0x49, 0x92, 0x41, 0x92, 0x01, 0x41, 0x72, 0x04, 0x39, 0x72, 0x01, 0x39, 0x71, 0x04, 0x31, 0x51, 0x81, + 0x31, 0x50, 0x29, 0x30, 0x02, 0x29, 0x50, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x09, 0x33, 0x09, 0x55, 0x11, 0xD7, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xFA, 0x04, 0x01, 0xD9, 0x82, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xBA, 0x03, 0x01, 0xDA, 0x85, 0x01, 0xB9, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x81, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xD9, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x07, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x06, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x05, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x80, 0x09, 0xDA, 0x06, 0x01, 0xD9, 0x82, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x11, 0x01, 0xD9, 0x81, 0x01, 0xDA, 0x01, 0xD9, 0x07, 0x01, 0xDA, 0x03, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x07, 0x01, 0xD9, 0x82, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x05, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x02, 0x01, 0xDA, + 0x06, 0x01, 0xD9, 0x81, 0x01, 0xF9, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x03, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x0A, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x03, 0x01, 0xD9, 0x81, 0x01, 0xDA, 0x01, 0xD9, 0x04, 0x01, 0xDA, 0x81, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x04, 0x01, 0xDA, 0x81, 0x01, 0xD9, 0x01, 0xFA, 0x04, 0x01, 0xD9, 0x88, 0x01, 0xF9, 0x01, 0xD9, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x19, 0x10, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x07, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, + 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x07, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, + 0x83, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x29, 0x30, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x07, 0x29, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, + 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x8E, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x12, 0x19, 0x33, 0x11, 0x54, 0x19, 0x76, 0x19, 0xB7, 0x19, 0xF8, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0xD8, 0x19, 0xF8, 0x11, 0xD8, 0x01, 0x19, 0xF8, 0x8D, 0x11, 0xB6, 0x19, 0x95, 0x19, 0x94, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0x74, 0x19, 0x95, 0x19, 0xB6, 0x01, 0x19, 0xF7, 0x83, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x96, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x86, 0x21, 0xB6, 0x21, 0x95, 0x21, 0x74, 0x21, 0x53, 0x29, 0x53, 0x29, 0x52, 0x29, 0x51, 0x06, 0x31, 0x51, 0x81, 0x39, 0x71, 0x31, 0x71, 0x01, 0x39, 0x71, 0x03, 0x39, 0x72, 0x01, 0x41, 0x92, 0x01, 0x39, 0x72, 0x02, 0x41, 0x92, 0x80, 0x41, 0x93, 0x01, 0x41, 0x92, 0x01, 0x41, 0x93, 0x83, 0x49, 0xB3, 0x41, 0x93, 0x49, 0x93, 0x49, 0xB3, 0x01, 0x49, 0xD3, 0x83, 0x49, 0xB3, 0x49, 0xD3, 0x51, 0xD3, 0x51, 0xD4, 0x02, 0x51, 0xD3, 0x82, 0x51, 0xD4, 0x51, 0xF4, 0x51, 0xD3, 0x01, 0x59, 0xD3, 0x83, 0x59, 0xB2, 0x59, 0x70, 0x8A, 0x74, 0xCC, 0x5A, 0x01, 0xD4, 0x7A, 0x82, 0xD4, 0x79, 0xD4, 0x58, 0xD4, 0x38, 0x02, 0xD4, 0x37, 0x9A, 0xD4, 0x57, 0xCC, 0x57, 0xCC, 0x77, 0xCC, 0xB8, 0xC4, 0xB8, 0xB4, 0xD8, 0xAC, 0xD8, 0x9C, 0xD8, 0x8C, 0xB8, 0x7C, 0xD8, 0x7D, 0x18, 0x75, 0x59, 0x75, 0xDB, + 0x76, 0x1B, 0x6E, 0x5C, 0x66, 0x5C, 0x66, 0x9D, 0x5E, 0xBD, 0x56, 0xDD, 0x4E, 0xFD, 0x47, 0x1E, 0x3F, 0x3E, 0x37, 0x5E, 0x2F, 0x5F, 0x27, 0x7F, 0x1F, 0x7E, 0x17, 0x7F, 0x01, 0x0F, 0x7F, 0x01, 0x07, 0x7F, 0x01, 0x07, 0x5F, 0x80, 0x07, 0x7F, 0x01, 0x07, 0x3F, 0x02, 0x07, 0x1E, 0x82, 0x06, 0xFE, 0x06, 0xDF, 0x06, 0xDE, 0x02, 0x06, 0xBE, 0x80, 0x06, 0x9E, 0x02, 0x06, 0x9F, 0x04, 0x06, 0x7F, 0x04, 0x06, 0x5F, 0x0C, 0x06, 0x3F, 0x80, 0x06, 0x5F, 0x02, 0x06, 0x3F, 0x01, 0x06, 0x1F, 0x0B, 0x06, 0x3F, 0x01, 0x06, 0x5F, 0x06, 0x06, 0x7F, 0x80, 0x06, 0x9F, 0x02, 0x06, 0x7F, 0x02, 0x06, 0x5F, 0xB1, 0x06, 0x1F, 0x05, 0xFF, 0x05, 0xDF, 0x0D, 0xBF, 0x0D, 0x5E, 0x0D, 0x1E, 0x14, 0xFE, 0x1C, 0xDF, 0x14, 0x3D, 0x1B, 0xFC, 0x2B, 0xFD, 0x33, 0x5B, 0x2A, 0xB9, 0x21, 0xD6, 0x31, 0xB6, 0x6A, 0xB9, 0xA3, 0xBD, 0xAB, 0xBD, 0xB3, 0x5B, 0xB3, 0x19, 0xBA, 0xF9, 0xCB, 0x19, 0xCA, 0xF8, 0xCA, 0xD8, 0xC2, 0x96, 0xBA, 0x76, 0xBA, 0x96, 0xBA, 0xD7, 0xBB, 0x37, 0xA3, 0x37, 0x7A, 0xD5, 0x73, 0xB8, 0x64, 0xBA, 0x55, 0x7C, 0x5E, 0xDF, 0x36, 0x7E, 0x26, 0x3D, 0x1E, 0x5D, 0x26, 0x9E, 0x2E, 0x9E, 0x46, 0xFF, 0x4E, 0x7E, 0x76, 0xDF, 0x7D, 0xFD, 0x6C, 0x17, 0x6A, 0xD3, 0x92, 0xD3, 0xB3, 0x15, 0xC2, 0xF5, 0xCA, 0xD5, 0x01, 0xCA, 0x94, 0x01, 0xCA, 0x95, 0x88, 0xD2, 0x95, 0xCA, 0x95, 0xCA, 0xB6, 0xC2, 0xD7, 0xC3, 0x38, 0x79, 0x72, 0x58, 0xF0, 0x59, 0x51, 0x51, 0x72, 0x01, 0x49, 0x72, 0x02, 0x41, 0x72, 0x02, 0x39, 0x71, 0x87, 0x39, 0x72, 0x39, 0x51, 0x31, 0x51, + 0x39, 0x51, 0x31, 0x31, 0x31, 0x51, 0x31, 0x71, 0x31, 0x51, 0x01, 0x31, 0x50, 0x81, 0x29, 0x30, 0x31, 0x50, 0x02, 0x29, 0x50, 0x08, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x50, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x09, 0x13, 0x09, 0x55, 0x19, 0xD7, 0x09, 0xB8, 0x09, 0xB9, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x02, 0x01, 0xB9, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x05, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x08, 0x01, 0xD9, 0x81, 0x01, 0xB9, 0x01, 0xDA, 0x03, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x03, 0x01, 0xB9, 0x81, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x81, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x04, 0x01, 0xD9, 0x84, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xDA, 0x0C, 0x01, 0xD9, 0x82, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x81, 0x01, 0xF9, 0x01, 0xB9, 0x02, 0x01, 0xD9, 0x0B, 0x01, 0xDA, 0x07, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, + 0x01, 0xB9, 0x06, 0x01, 0xDA, 0x05, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x03, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x05, 0x01, 0xD9, 0x82, 0x09, 0xDA, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x82, 0x01, 0xF9, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x05, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x81, 0x01, 0xDA, 0x01, 0xB9, 0x05, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x04, 0x01, 0xD9, 0x8B, 0x01, 0xF9, 0x09, 0xF9, 0x09, 0xF8, 0x09, 0xB7, 0x11, 0x75, 0x09, 0x12, 0x11, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x05, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, + 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x31, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x30, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x0C, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, + 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x0F, 0x8A, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, + 0x30, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x04, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x20, 0xEF, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8F, 0x19, 0x32, 0x19, 0x33, 0x19, 0x54, 0x19, 0x96, 0x11, 0x96, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xB6, 0x21, 0xF8, 0x11, 0xB6, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x74, 0x19, 0x53, 0x19, 0x32, 0x05, 0x21, 0x31, 0x84, 0x21, 0x32, 0x21, 0x53, 0x21, 0x94, 0x19, 0x95, 0x19, 0xB5, 0x01, 0x19, 0xD6, 0x82, 0x19, 0xB6, 0x19, 0x95, 0x19, 0xB6, 0x01, 0x21, 0xD6, 0x83, 0x21, 0xB5, 0x21, 0x74, 0x21, 0x53, 0x29, 0x73, 0x01, 0x29, 0x52, 0x84, 0x31, 0x51, 0x31, 0x71, 0x31, 0x51, 0x31, 0x71, 0x31, 0x51, 0x03, 0x39, 0x51, 0x80, 0x39, 0x71, 0x04, 0x39, 0x72, 0x81, 0x41, 0x92, 0x39, 0x92, 0x02, 0x41, 0x92, 0x82, 0x39, 0x72, 0x41, 0x92, 0x41, 0x93, 0x02, 0x41, 0x92, 0x80, 0x41, 0x93, 0x04, 0x49, 0xB3, 0x81, 0x51, 0xD4, 0x51, 0xD3, 0x01, 0x49, 0xB3, 0x01, 0x51, 0xD3, 0x80, 0x51, 0xD4, 0x02, 0x51, 0xD3, 0x86, 0x59, 0xF4, 0x59, 0xD3, 0x61, 0xF3, 0x61, 0xD2, 0x59, 0x50, 0x7A, 0x33, 0xC4, 0x1A, 0x01, 0xD4, 0x7A, 0x01, + 0xD4, 0x79, 0x80, 0xD4, 0x58, 0x01, 0xD4, 0x57, 0x01, 0xCC, 0x77, 0x96, 0xCC, 0xB8, 0xC4, 0xB8, 0xBC, 0xB8, 0xAC, 0x97, 0x9C, 0x97, 0x8C, 0x56, 0x7C, 0x97, 0x74, 0xB7, 0x75, 0x59, 0x75, 0xBB, 0x76, 0x3C, 0x76, 0x9D, 0x6E, 0xBE, 0x5E, 0xBD, 0x56, 0xFE, 0x46, 0xDD, 0x3E, 0xFD, 0x3F, 0x1E, 0x37, 0x3E, 0x2F, 0x5E, 0x2F, 0x7F, 0x27, 0x7E, 0x1F, 0x7F, 0x01, 0x17, 0x7F, 0x81, 0x0F, 0x7E, 0x0F, 0x7F, 0x05, 0x07, 0x7F, 0x01, 0x07, 0x5F, 0x80, 0x07, 0x3F, 0x01, 0x07, 0x1E, 0x01, 0x06, 0xFE, 0x80, 0x06, 0xDE, 0x02, 0x06, 0xBE, 0x01, 0x06, 0x9E, 0x02, 0x06, 0x9F, 0x02, 0x06, 0x7F, 0x01, 0x06, 0x5F, 0x81, 0x06, 0x3F, 0x06, 0x5F, 0x04, 0x06, 0x3F, 0x13, 0x06, 0x1F, 0x02, 0x06, 0x3F, 0x05, 0x06, 0x1F, 0x01, 0x06, 0x3F, 0x0A, 0x06, 0x5F, 0x9A, 0x06, 0x3F, 0x06, 0x5F, 0x06, 0x3F, 0x06, 0x1F, 0x05, 0xFF, 0x05, 0xDF, 0x05, 0xBF, 0x05, 0x7F, 0x05, 0x3F, 0x04, 0xFE, 0x0C, 0xBE, 0x0C, 0x7E, 0x0C, 0x3D, 0x13, 0xDC, 0x1B, 0x9C, 0x2B, 0x7C, 0x2B, 0x1B, 0x32, 0x7A, 0x21, 0x76, 0x39, 0x75, 0x72, 0x99, 0xB3, 0xFF, 0xB3, 0xBD, 0xB3, 0x3B, 0xBA, 0xFA, 0xBA, 0xD9, 0xC2, 0xF9, 0x01, 0xC2, 0xD8, 0x8A, 0xBA, 0x96, 0xBA, 0xB6, 0xB2, 0xD6, 0xB3, 0x17, 0x9B, 0x17, 0x7B, 0x16, 0x6C, 0x19, 0x65, 0x5C, 0x55, 0xFD, 0x4E, 0xBF, 0x2E, 0x5D, 0x01, 0x1E, 0x7D, 0x8B, 0x1E, 0x7E, 0x2E, 0xDF, 0x3E, 0xBF, 0x56, 0xBF, 0x6E, 0x7E, 0x85, 0xFD, 0x6B, 0xD6, 0x72, 0xD3, 0x9A, 0xF4, 0xBB, 0x35, 0xC2, 0xF5, 0xCA, 0xB5, 0x01, 0xCA, 0x94, 0x8A, 0xD2, 0x95, 0xCA, 0x74, 0xCA, + 0x75, 0xCA, 0x95, 0xCA, 0xB6, 0xC2, 0xB6, 0xC3, 0x18, 0x81, 0xB3, 0x58, 0xF0, 0x59, 0x51, 0x51, 0x72, 0x01, 0x49, 0x72, 0x01, 0x41, 0x72, 0x83, 0x41, 0x92, 0x41, 0x71, 0x41, 0x92, 0x39, 0x72, 0x01, 0x39, 0x71, 0x82, 0x39, 0x51, 0x31, 0x51, 0x31, 0x52, 0x03, 0x31, 0x51, 0x83, 0x29, 0x50, 0x29, 0x30, 0x31, 0x50, 0x29, 0x50, 0x06, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x04, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x32, 0x10, 0xF2, 0x09, 0x13, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x80, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x82, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xFA, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x08, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x03, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x04, 0x01, 0xD9, 0x80, 0x09, 0xFA, 0x09, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x84, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x81, 0x01, 0xB9, 0x01, 0xFA, 0x08, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x17, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x05, 0x01, 0xD9, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xD9, 0x81, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x81, + 0x01, 0xD9, 0x01, 0xDA, 0x06, 0x01, 0xD9, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x04, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x04, 0x01, 0xD9, 0x82, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xFA, 0x04, 0x01, 0xD9, 0x89, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x82, 0x01, 0xF9, 0x01, 0xD9, 0x01, 0xF9, 0x02, 0x01, 0xD9, 0x80, 0x09, 0xF9, 0x03, 0x01, 0xD9, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x05, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x82, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x81, 0x01, 0xB9, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x84, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0xFA, 0x02, 0x01, 0xD9, 0x8B, 0x01, 0xFA, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xF8, 0x11, 0xB7, 0x09, 0x74, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x29, 0x30, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, + 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x89, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x05, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x08, 0x21, 0x10, 0x08, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, + 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x05, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x88, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x06, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x85, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, + 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x19, 0x54, 0x01, 0x19, 0x74, 0x02, 0x19, 0x54, 0x82, 0x19, 0x55, 0x19, 0x75, 0x19, 0x74, 0x01, 0x19, 0x53, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x21, 0x52, 0x21, 0x73, 0x21, 0x93, 0x21, 0xB4, 0x21, 0xD5, 0x19, 0xB5, 0x19, 0x94, 0x01, 0x19, 0x74, 0x83, 0x21, 0xB5, 0x21, 0x95, 0x29, 0x74, 0x29, 0x53, 0x02, 0x29, 0x52, 0x01, 0x31, 0x51, 0x01, 0x31, 0x71, 0x81, 0x31, 0x51, 0x39, 0x71, 0x02, 0x39, 0x51, 0x80, 0x39, 0x71, 0x06, 0x39, 0x72, 0x03, 0x41, 0x92, 0x82, 0x41, 0xB3, 0x41, 0x92, 0x41, 0xB3, 0x06, 0x49, 0xB3, 0x81, 0x49, 0x93, 0x49, 0xB3, 0x01, 0x51, 0xD3, 0x80, 0x49, 0xB3, 0x01, 0x51, 0xD3, + 0x02, 0x51, 0xD4, 0x01, 0x59, 0xF4, 0x89, 0x59, 0xD3, 0x61, 0xF3, 0x59, 0xB2, 0x59, 0x50, 0x7A, 0x33, 0xC4, 0x1A, 0xCC, 0x7A, 0xD4, 0x7A, 0xCC, 0x59, 0xD4, 0x59, 0x01, 0xCC, 0x58, 0x97, 0xCC, 0x78, 0xCC, 0x98, 0xC4, 0xB8, 0xC4, 0xD8, 0xB4, 0xB8, 0xA4, 0x97, 0x94, 0x97, 0x8C, 0xB7, 0x85, 0x18, 0x85, 0x9A, 0x7D, 0xDB, 0x76, 0x3C, 0x76, 0x7D, 0x66, 0x7D, 0x5E, 0xBD, 0x56, 0xFE, 0x46, 0xFD, 0x3F, 0x1E, 0x37, 0x3E, 0x2F, 0x5E, 0x2F, 0x7F, 0x27, 0x7F, 0x1F, 0x7F, 0x1F, 0x9F, 0x02, 0x17, 0x9F, 0x01, 0x0F, 0x9F, 0x02, 0x07, 0x9F, 0x03, 0x07, 0x7F, 0x01, 0x07, 0x5F, 0x82, 0x07, 0x3F, 0x07, 0x1E, 0x07, 0x1F, 0x01, 0x06, 0xFE, 0x80, 0x06, 0xDE, 0x01, 0x06, 0xBE, 0x02, 0x06, 0x9E, 0x80, 0x06, 0x9F, 0x01, 0x06, 0x7E, 0x80, 0x06, 0x5E, 0x01, 0x06, 0x7F, 0x01, 0x06, 0x5F, 0x03, 0x06, 0x3F, 0x0A, 0x06, 0x1F, 0x81, 0x05, 0xFF, 0x06, 0x1F, 0x12, 0x05, 0xFF, 0x03, 0x06, 0x1F, 0x80, 0x06, 0x3F, 0x01, 0x06, 0x1F, 0x01, 0x06, 0x3F, 0x80, 0x06, 0x5F, 0x02, 0x06, 0x3F, 0x82, 0x06, 0x5F, 0x06, 0x3F, 0x06, 0x5F, 0x01, 0x06, 0x1F, 0x80, 0x05, 0xFF, 0x01, 0x05, 0xBF, 0xBF, 0x05, 0x9F, 0x05, 0x7F, 0x05, 0x1F, 0x04, 0xDF, 0x04, 0x7E, 0x0C, 0x5E, 0x14, 0x3E, 0x1B, 0xFE, 0x1B, 0x9D, 0x1B, 0x1C, 0x1A, 0xBB, 0x2A, 0x9B, 0x32, 0x19, 0x29, 0x36, 0x41, 0x56, 0x82, 0xDB, 0xAB, 0xBE, 0xBB, 0x7D, 0xBB, 0x1B, 0xC3, 0x1A, 0xC2, 0xF9, 0xC2, 0xD8, 0xBA, 0x97, 0xB2, 0x76, 0xBA, 0xD7, 0xB2, 0xF7, 0xA3, 0x17, 0x8A, 0xF6, 0x6B, 0x36, 0x74, 0xDB, 0x55, 0x1B, 0x56, + 0x7F, 0x3E, 0x9F, 0x26, 0x7E, 0x1E, 0x7E, 0x1E, 0xBE, 0x16, 0x7E, 0x2E, 0xBF, 0x3E, 0xDF, 0x56, 0xBF, 0x6E, 0x7E, 0x85, 0xFD, 0x74, 0x17, 0x72, 0xF3, 0x92, 0xD3, 0xB2, 0xF5, 0xC2, 0xF5, 0xCA, 0xB4, 0xCA, 0x94, 0xD2, 0x95, 0xCA, 0x74, 0xCA, 0x54, 0xCA, 0x74, 0xCA, 0x75, 0xCA, 0x95, 0xC2, 0xB6, 0xBA, 0xF7, 0x89, 0xD3, 0x58, 0xCF, 0x51, 0x31, 0x51, 0x52, 0x49, 0x72, 0x49, 0x92, 0x41, 0x72, 0x02, 0x41, 0x92, 0x80, 0x39, 0x72, 0x01, 0x39, 0x71, 0x80, 0x39, 0x51, 0x01, 0x39, 0x52, 0x03, 0x31, 0x51, 0x02, 0x31, 0x50, 0x04, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD9, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x03, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x05, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x86, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xB9, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x04, 0x09, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x82, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x80, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x81, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xB8, 0x02, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x81, 0x09, 0xD9, 0x01, 0xD9, 0x02, 0x09, 0xD9, 0x81, + 0x01, 0xD9, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x03, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x05, 0x09, 0xD9, 0x80, 0x01, 0xB9, 0x02, 0x09, 0xD9, 0x09, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x03, 0x01, 0xD9, 0x80, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x82, 0x01, 0xD9, 0x09, 0xD9, 0x01, 0xB9, 0x02, 0x01, 0xD9, 0x80, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x82, 0x09, 0xD9, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x02, 0x09, 0xD9, 0x82, 0x01, 0xD9, 0x09, 0xD9, 0x01, 0xD9, 0x02, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x02, 0x09, 0xD9, 0x06, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x03, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x02, 0x09, 0xD9, 0x85, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x83, 0x01, 0xB9, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xB8, 0x01, 0x01, 0xD9, 0x80, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x84, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x02, 0x09, 0xD9, 0x81, 0x01, 0xB8, 0x01, 0xD9, 0x04, 0x09, 0xD9, 0x80, 0x01, 0xB8, 0x02, 0x09, 0xD9, 0x81, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x83, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xFA, 0x01, 0xF9, 0x01, 0x01, 0xD9, 0x81, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x03, 0x01, 0xFA, 0x8B, 0x01, 0xF9, 0x09, 0xF9, 0x09, 0xF8, 0x11, 0xB7, 0x09, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, + 0x21, 0x31, 0x29, 0x31, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x09, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x84, + 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x07, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, + 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x19, 0x32, 0x19, 0x53, 0x01, 0x19, 0x33, 0x80, 0x19, 0x53, 0x03, 0x19, 0x33, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x03, 0x29, 0x30, 0x01, 0x29, 0x31, 0x83, 0x29, 0x52, 0x21, 0x52, 0x21, 0x72, 0x21, 0x73, 0x02, 0x19, 0x73, 0x84, 0x21, 0x73, 0x21, 0x74, 0x21, 0x53, + 0x21, 0x73, 0x21, 0x53, 0x02, 0x29, 0x52, 0x02, 0x31, 0x51, 0x80, 0x31, 0x71, 0x01, 0x31, 0x51, 0x02, 0x39, 0x71, 0x02, 0x39, 0x72, 0x80, 0x39, 0x92, 0x03, 0x39, 0x72, 0x80, 0x41, 0x72, 0x01, 0x41, 0x92, 0x82, 0x41, 0x93, 0x41, 0x92, 0x41, 0xB3, 0x04, 0x49, 0xB3, 0x81, 0x49, 0x93, 0x49, 0xB3, 0x01, 0x49, 0xD3, 0x01, 0x49, 0xB3, 0x80, 0x51, 0xD4, 0x03, 0x51, 0xD3, 0x02, 0x51, 0xF4, 0xA3, 0x59, 0xF4, 0x59, 0xD3, 0x61, 0xF3, 0x61, 0xD2, 0x59, 0x70, 0x71, 0xF2, 0xBB, 0xF9, 0xCC, 0x7B, 0xCC, 0x7A, 0xCC, 0x79, 0xD4, 0x99, 0xC4, 0x58, 0xCC, 0x98, 0xCC, 0xD9, 0xC4, 0xF9, 0xBD, 0x19, 0xA4, 0xB7, 0x94, 0x76, 0x8C, 0xB7, 0x8D, 0x39, 0x85, 0x7A, 0x85, 0xDB, 0x7E, 0x3C, 0x76, 0x5D, 0x6E, 0xBD, 0x5E, 0xBD, 0x56, 0xDE, 0x4E, 0xDD, 0x3E, 0xFD, 0x37, 0x1D, 0x2F, 0x3E, 0x27, 0x5E, 0x27, 0x7F, 0x17, 0x7E, 0x17, 0x9F, 0x0F, 0x9F, 0x02, 0x0F, 0xBF, 0x02, 0x07, 0xBF, 0x03, 0x07, 0x9F, 0x04, 0x07, 0x7F, 0x82, 0x07, 0x5F, 0x07, 0x3F, 0x07, 0x1F, 0x01, 0x06, 0xFE, 0x01, 0x06, 0xDE, 0x80, 0x06, 0xBE, 0x02, 0x06, 0x9E, 0x81, 0x06, 0x9F, 0x06, 0x9E, 0x01, 0x06, 0x7E, 0x02, 0x06, 0x5E, 0x80, 0x06, 0x5F, 0x03, 0x06, 0x3F, 0x03, 0x06, 0x1F, 0x08, 0x05, 0xFF, 0x81, 0x05, 0xDF, 0x05, 0xFF, 0x10, 0x05, 0xDF, 0x07, 0x05, 0xFF, 0x06, 0x06, 0x1F, 0x81, 0x06, 0x3F, 0x06, 0x1F, 0x02, 0x05, 0xFF, 0x98, 0x05, 0xDF, 0x05, 0xBF, 0x05, 0x9F, 0x05, 0x7F, 0x05, 0x1F, 0x04, 0xDF, 0x04, 0xBF, 0x0C, 0x7E, 0x04, 0x1E, 0x0B, 0xFE, 0x13, 0xBE, 0x0B, 0x3C, 0x0A, 0x9B, + 0x12, 0x7B, 0x22, 0x7C, 0x32, 0x3B, 0x31, 0xB8, 0x20, 0xD5, 0x41, 0x36, 0x93, 0x3D, 0xC3, 0xFF, 0xBB, 0x5C, 0xB2, 0xFA, 0xBB, 0x1A, 0xBA, 0xD9, 0x01, 0xBA, 0xD8, 0xA5, 0xB2, 0xD7, 0xB3, 0x38, 0x9B, 0x17, 0x7A, 0xF5, 0x73, 0xF8, 0x6D, 0x1C, 0x55, 0xDD, 0x4E, 0x9F, 0x36, 0xBF, 0x1E, 0x7E, 0x16, 0x7E, 0x1E, 0xBF, 0x1E, 0x9E, 0x26, 0xDF, 0x3E, 0xDF, 0x56, 0xBE, 0x6E, 0x7F, 0x85, 0xBC, 0x74, 0x17, 0x7A, 0xD3, 0x9A, 0xF4, 0xBB, 0x15, 0xC2, 0xD5, 0xCA, 0xB5, 0xCA, 0x54, 0xD2, 0x95, 0xD2, 0x54, 0xD2, 0x75, 0xCA, 0x54, 0xD2, 0x75, 0xCA, 0x95, 0xC2, 0x95, 0xC3, 0x38, 0x92, 0x14, 0x58, 0xF0, 0x59, 0x51, 0x51, 0x51, 0x49, 0x72, 0x01, 0x49, 0x92, 0x80, 0x41, 0x71, 0x01, 0x41, 0x72, 0x01, 0x39, 0x71, 0x01, 0x39, 0x72, 0x82, 0x31, 0x51, 0x31, 0x52, 0x31, 0x51, 0x01, 0x31, 0x71, 0x02, 0x31, 0x50, 0x81, 0x29, 0x30, 0x29, 0x50, 0x0A, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x88, 0x21, 0x51, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x55, 0x11, 0xB7, 0x11, 0xD9, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x04, 0x01, 0xDA, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x82, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x04, 0x09, 0xD8, 0x82, 0x09, 0xD9, 0x09, 0xB8, 0x09, 0xD9, 0x02, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x0C, 0x09, 0xD8, 0x80, 0x11, 0xF9, 0x02, 0x09, 0xD8, 0x80, 0x09, 0xD9, 0x04, 0x09, 0xD8, 0x82, 0x09, 0xF8, 0x09, 0xD8, + 0x09, 0xF9, 0x06, 0x09, 0xD8, 0x82, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xD9, 0x0F, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x83, 0x09, 0xB8, 0x11, 0xF9, 0x09, 0xD8, 0x11, 0xF9, 0x01, 0x09, 0xF8, 0x02, 0x09, 0xD8, 0x80, 0x11, 0xD9, 0x0A, 0x09, 0xD8, 0x80, 0x09, 0xD9, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xF8, 0x02, 0x09, 0xD8, 0x80, 0x09, 0xF9, 0x09, 0x09, 0xD8, 0x82, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xD9, 0x04, 0x09, 0xD8, 0x80, 0x11, 0xF9, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x08, 0x09, 0xD8, 0x80, 0x09, 0xF9, 0x03, 0x09, 0xD8, 0x80, 0x09, 0xF9, 0x0F, 0x09, 0xD8, 0x83, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xF8, 0x09, 0xF9, 0x03, 0x09, 0xD8, 0x81, 0x09, 0xB8, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x82, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0xD8, 0x02, 0x09, 0xB8, 0x81, 0x09, 0xD8, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x06, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x02, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x07, 0x09, 0xD8, 0x82, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xD9, 0x02, 0x09, 0xF9, 0x81, 0x01, 0xD9, 0x09, 0xF9, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x87, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, + 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x31, 0x80, 0x19, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x07, 0x21, 0x10, 0x80, 0x21, 0x30, 0x09, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x0C, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, + 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, + 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x0E, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x21, 0x32, 0x80, 0x21, 0x52, 0x02, 0x19, 0x32, 0x02, 0x21, 0x32, 0x02, 0x21, 0x31, 0x80, 0x21, 0x30, 0x04, 0x29, 0x30, 0x86, 0x29, 0x31, 0x29, 0x11, 0x29, 0x31, 0x29, 0x51, 0x29, 0x52, 0x21, 0x52, 0x29, 0x72, 0x02, 0x21, 0x73, 0x84, 0x21, 0x53, 0x21, 0x52, 0x29, 0x52, 0x29, 0x32, 0x29, 0x52, 0x01, 0x31, 0x52, 0x02, 0x31, 0x51, 0x02, 0x39, 0x71, 0x81, 0x39, 0x92, 0x39, 0x71, 0x04, 0x39, 0x72, 0x02, 0x41, 0x92, 0x84, 0x41, 0xB3, 0x41, 0x92, 0x41, 0xB2, 0x41, 0xB3, 0x41, 0x93, 0x01, 0x41, 0x92, 0x06, 0x49, 0xB3, 0x83, 0x51, 0xD3, 0x49, 0xD3, 0x51, 0xD3, 0x51, 0xF3, 0x01, 0x51, 0xD3, 0x81, 0x51, 0xF3, 0x51, 0xD3, + 0x03, 0x51, 0xF4, 0x85, 0x59, 0xF4, 0x59, 0xF3, 0x61, 0xB2, 0x61, 0x91, 0x7A, 0x53, 0xBC, 0x1A, 0x01, 0xCC, 0x7A, 0x97, 0xCC, 0x79, 0xCC, 0x99, 0xCC, 0xB9, 0xCC, 0xD9, 0xC4, 0xD9, 0xAC, 0xB8, 0x94, 0x96, 0x84, 0x96, 0x7C, 0xD7, 0x7D, 0x79, 0x7D, 0xDB, 0x6D, 0xFB, 0x6E, 0x5D, 0x66, 0x7D, 0x5E, 0xDE, 0x56, 0xFE, 0x4E, 0xFE, 0x47, 0x1E, 0x3F, 0x1E, 0x37, 0x3E, 0x2F, 0x5E, 0x27, 0x7E, 0x27, 0x9F, 0x1F, 0x9F, 0x01, 0x17, 0xBF, 0x02, 0x0F, 0xBF, 0x04, 0x07, 0xBF, 0x07, 0x07, 0x9F, 0x82, 0x07, 0x7F, 0x07, 0x5F, 0x07, 0x3E, 0x01, 0x06, 0xFE, 0x81, 0x06, 0xDE, 0x06, 0xFE, 0x02, 0x06, 0xBE, 0x02, 0x06, 0x9E, 0x81, 0x06, 0x9F, 0x06, 0x7E, 0x02, 0x06, 0x5E, 0x02, 0x06, 0x3E, 0x80, 0x06, 0x3F, 0x01, 0x06, 0x1E, 0x01, 0x06, 0x1F, 0x81, 0x05, 0xFE, 0x05, 0xFF, 0x01, 0x05, 0xDF, 0x80, 0x05, 0xFF, 0x04, 0x05, 0xDF, 0x01, 0x05, 0xBF, 0x02, 0x05, 0xDF, 0x0B, 0x05, 0xBF, 0x80, 0x05, 0xDF, 0x02, 0x05, 0xBF, 0x81, 0x05, 0xDF, 0x05, 0xBF, 0x05, 0x05, 0xDF, 0x09, 0x05, 0xFF, 0x80, 0x05, 0xDF, 0x01, 0x05, 0xBF, 0xB5, 0x05, 0x9F, 0x05, 0x7F, 0x05, 0x1F, 0x04, 0xFF, 0x04, 0xBF, 0x04, 0x9F, 0x0C, 0x5F, 0x0C, 0x1E, 0x0B, 0xBE, 0x0B, 0x5D, 0x0B, 0x1D, 0x0A, 0xBC, 0x0A, 0x3B, 0x1A, 0x3B, 0x22, 0x1B, 0x31, 0xFB, 0x29, 0x58, 0x20, 0x94, 0x59, 0xB8, 0xA3, 0x7E, 0xB3, 0x9E, 0xB3, 0x3C, 0xB2, 0xDA, 0xBA, 0xD9, 0xB2, 0xD9, 0xB2, 0xD8, 0xB3, 0x39, 0xAB, 0x38, 0x93, 0x37, 0x6A, 0xF5, 0x74, 0x7A, 0x5D, 0x3C, 0x56, 0x5E, 0x3E, 0x9F, 0x26, 0x9E, 0x16, 0x7E, + 0x16, 0xBE, 0x16, 0xBF, 0x1E, 0xBE, 0x26, 0xDF, 0x46, 0xFF, 0x4E, 0x9E, 0x6E, 0x5E, 0x7D, 0x7C, 0x7C, 0x17, 0x7A, 0xD3, 0x9A, 0xD4, 0xBA, 0xD5, 0xC2, 0xB5, 0xCA, 0xB5, 0xCA, 0x54, 0xD2, 0x74, 0xD2, 0x75, 0xD2, 0x54, 0x01, 0xD2, 0x75, 0x86, 0xCA, 0x95, 0xC2, 0x95, 0xC2, 0xF7, 0x89, 0xD3, 0x58, 0xF0, 0x59, 0x51, 0x51, 0x51, 0x01, 0x49, 0x72, 0x03, 0x41, 0x72, 0x80, 0x39, 0x72, 0x01, 0x39, 0x52, 0x80, 0x39, 0x72, 0x02, 0x31, 0x51, 0x81, 0x31, 0x71, 0x31, 0x51, 0x01, 0x31, 0x50, 0x81, 0x29, 0x50, 0x29, 0x30, 0x01, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x05, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x87, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x09, 0x54, 0x11, 0xB7, 0x11, 0xF9, 0x09, 0xF9, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x04, 0x01, 0xDA, 0x81, 0x01, 0xF9, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x85, 0x09, 0xD8, 0x12, 0x19, 0x11, 0xF8, 0x12, 0x18, 0x1A, 0x18, 0x11, 0xF8, 0x02, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x80, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x02, 0x19, 0xF8, 0x80, 0x11, 0xF8, 0x02, 0x19, 0xF8, 0x80, 0x11, 0xF8, 0x04, 0x19, 0xF8, 0x87, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xF8, 0x19, 0xF8, 0x03, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x04, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x05, 0x11, 0xF8, 0x80, 0x19, 0xF8, 0x01, 0x11, 0xF8, 0x01, 0x19, 0xF8, 0x03, 0x11, 0xF8, 0x80, 0x19, 0xF8, 0x01, 0x11, + 0xF8, 0x80, 0x19, 0xF8, 0x01, 0x11, 0xD8, 0x02, 0x11, 0xF8, 0x82, 0x11, 0xD8, 0x11, 0xF8, 0x19, 0xF8, 0x01, 0x11, 0xF8, 0x01, 0x19, 0xF8, 0x01, 0x11, 0xF8, 0x80, 0x11, 0xD7, 0x03, 0x11, 0xF8, 0x83, 0x1A, 0x18, 0x11, 0xF8, 0x11, 0xF7, 0x12, 0x18, 0x09, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x01, 0x19, 0xF8, 0x82, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xF8, 0x10, 0x19, 0xF8, 0x80, 0x11, 0xF8, 0x01, 0x19, 0xF8, 0x02, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x06, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x02, 0x11, 0xF8, 0x80, 0x19, 0xF8, 0x0A, 0x11, 0xF8, 0x82, 0x19, 0xF8, 0x11, 0xF8, 0x19, 0xF8, 0x01, 0x11, 0xF8, 0x80, 0x19, 0xF8, 0x01, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x05, 0x11, 0xF8, 0x01, 0x19, 0xF8, 0x81, 0x11, 0xF8, 0x19, 0xF8, 0x05, 0x11, 0xF8, 0x82, 0x11, 0xD8, 0x11, 0xF8, 0x12, 0x18, 0x01, 0x11, 0xF8, 0x04, 0x19, 0xF8, 0x03, 0x1A, 0x18, 0x80, 0x19, 0xF7, 0x01, 0x1A, 0x18, 0x84, 0x12, 0x18, 0x11, 0xF8, 0x12, 0x18, 0x11, 0xF8, 0x12, 0x18, 0x03, 0x11, 0xF8, 0x81, 0x09, 0xF8, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x81, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x8A, 0x01, 0xFA, 0x0A, 0x1A, 0x01, 0xF9, 0x09, 0xF9, 0x09, 0xF8, 0x09, 0xB6, 0x09, 0x54, 0x11, 0x53, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, + 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x11, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x0D, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x83, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0A, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x31, 0x02, 0x21, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, + 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x88, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8D, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, + 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x08, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x06, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x07, 0x29, 0x0F, 0x05, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x06, 0x21, 0x31, 0x01, 0x21, 0x30, 0x04, 0x29, 0x30, 0x01, 0x31, 0x31, 0x81, 0x29, 0x31, 0x29, 0x11, 0x02, 0x29, 0x31, 0x80, 0x29, 0x32, 0x01, 0x29, 0x52, 0x80, 0x29, 0x32, 0x02, 0x29, 0x52, 0x80, 0x29, 0x31, 0x01, 0x31, 0x51, 0x01, 0x31, 0x71, 0x02, 0x39, 0x71, 0x80, 0x39, 0x72, 0x02, 0x39, 0x71, 0x02, 0x39, 0x72, 0x85, 0x41, 0x92, 0x41, 0x72, 0x41, 0x92, 0x41, 0xB3, 0x41, 0x93, 0x41, 0xB3, 0x02, 0x41, 0x92, 0x81, 0x41, 0x93, 0x41, 0x92, 0x03, 0x49, 0xB3, 0x82, 0x49, 0xD3, 0x49, 0xB3, 0x49, 0xD3, 0x01, 0x51, 0xD3, 0x81, 0x51, 0xF3, 0x51, 0xD3, 0x04, 0x51, 0xF3, + 0x01, 0x52, 0x14, 0x86, 0x49, 0xF3, 0x51, 0xD3, 0x59, 0xF3, 0x59, 0xB2, 0x59, 0x91, 0x82, 0x94, 0xBC, 0x3A, 0x02, 0xCC, 0x9A, 0x8F, 0xCC, 0xDA, 0xCC, 0xFA, 0xBC, 0xB8, 0xA4, 0x77, 0x94, 0x56, 0x7C, 0x55, 0x7C, 0xF7, 0x7D, 0x79, 0x76, 0x1B, 0x6E, 0x5C, 0x66, 0xBD, 0x5E, 0xDE, 0x4E, 0xFE, 0x47, 0x1F, 0x3F, 0x3F, 0x37, 0x1E, 0x01, 0x2F, 0x5E, 0x84, 0x27, 0x5F, 0x27, 0x7F, 0x1F, 0x7E, 0x17, 0x9E, 0x17, 0x9F, 0x03, 0x0F, 0xBF, 0x06, 0x07, 0xBF, 0x07, 0x07, 0x9F, 0x83, 0x07, 0x7F, 0x07, 0x5F, 0x07, 0x1E, 0x06, 0xFE, 0x02, 0x06, 0xDE, 0x01, 0x06, 0xBE, 0x01, 0x06, 0x9E, 0x03, 0x06, 0x7E, 0x02, 0x06, 0x5E, 0x02, 0x06, 0x3E, 0x01, 0x06, 0x1E, 0x01, 0x05, 0xFE, 0x83, 0x05, 0xFF, 0x05, 0xFE, 0x05, 0xFF, 0x05, 0xDE, 0x02, 0x05, 0xDF, 0x01, 0x05, 0xBF, 0x80, 0x05, 0xDF, 0x05, 0x05, 0xBF, 0x81, 0x05, 0x9F, 0x05, 0xBF, 0x09, 0x05, 0x9F, 0x81, 0x05, 0xBF, 0x05, 0x9F, 0x09, 0x05, 0xBF, 0x04, 0x05, 0xDF, 0x83, 0x05, 0xBF, 0x05, 0xDF, 0x05, 0xFF, 0x05, 0xDF, 0x02, 0x05, 0xBF, 0xB4, 0x05, 0x9F, 0x05, 0x7F, 0x05, 0x5F, 0x05, 0x1F, 0x04, 0xFF, 0x04, 0xDF, 0x04, 0x9F, 0x04, 0x5F, 0x03, 0xFE, 0x0B, 0xFF, 0x03, 0x7E, 0x03, 0x3D, 0x02, 0xDD, 0x0A, 0x9D, 0x0A, 0x3C, 0x09, 0xFB, 0x19, 0xFB, 0x29, 0xFC, 0x31, 0xBA, 0x28, 0xF7, 0x28, 0x74, 0x72, 0x1A, 0xB3, 0xDF, 0xBB, 0x9E, 0xB3, 0x1B, 0xAA, 0xB9, 0xB2, 0xFA, 0xAA, 0xF9, 0xAB, 0x39, 0xA3, 0x59, 0x83, 0x37, 0x63, 0x57, 0x6C, 0xDB, 0x55, 0x9D, 0x4E, 0x9F, 0x2E, 0x9F, 0x1E, 0xBF, 0x16, 0xBE, 0x16, + 0xBF, 0x0E, 0x9E, 0x16, 0xBE, 0x26, 0xDF, 0x46, 0xFF, 0x56, 0x9F, 0x6E, 0x3E, 0x7D, 0x5C, 0x73, 0xB6, 0x82, 0xF4, 0xA2, 0xD4, 0xBA, 0xF5, 0xC2, 0xB5, 0xCA, 0x74, 0xD2, 0x74, 0x01, 0xD2, 0x75, 0x8C, 0xD2, 0x34, 0xD2, 0x54, 0xD2, 0x75, 0xCA, 0x75, 0xC2, 0xB5, 0xBA, 0xD7, 0x91, 0xF4, 0x58, 0xAF, 0x59, 0x51, 0x51, 0x72, 0x49, 0x92, 0x49, 0x72, 0x41, 0x92, 0x02, 0x41, 0x72, 0x81, 0x39, 0x72, 0x39, 0x52, 0x01, 0x39, 0x72, 0x02, 0x31, 0x51, 0x80, 0x31, 0x71, 0x02, 0x31, 0x50, 0x01, 0x29, 0x50, 0x81, 0x29, 0x30, 0x29, 0x50, 0x02, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0xD7, 0x09, 0xF8, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x04, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x87, 0x09, 0xFA, 0x0A, 0x1A, 0x09, 0xF9, 0x12, 0x19, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0xD7, 0x19, 0xF8, 0x02, 0x19, 0xF7, 0x8B, 0x21, 0xF7, 0x19, 0xD7, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xD6, 0x21, 0xF7, 0x21, 0xD7, 0x01, 0x19, 0xD6, 0x03, 0x19, 0xD7, 0x84, 0x21, 0xD7, 0x19, 0xD7, 0x21, 0xD7, 0x19, 0xD6, 0x21, 0xD7, 0x03, 0x19, 0xD7, 0x80, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x80, 0x19, 0xF7, 0x01, 0x19, 0xD6, 0x80, 0x19, 0xF7, 0x01, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x84, 0x21, 0xF7, 0x19, 0xD7, 0x21, 0xF7, 0x19, + 0xD7, 0x21, 0xF7, 0x02, 0x19, 0xD7, 0x83, 0x21, 0xF7, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x80, 0x21, 0xF7, 0x01, 0x19, 0xD7, 0x83, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xF6, 0x21, 0xF7, 0x01, 0x19, 0xD6, 0x81, 0x19, 0xD7, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x82, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xD6, 0x02, 0x19, 0xD7, 0x80, 0x19, 0xB6, 0x01, 0x19, 0xD7, 0x90, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xF7, 0x01, 0x19, 0xD7, 0x81, 0x19, 0xD6, 0x19, 0xD7, 0x01, 0x19, 0xD6, 0x83, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0xD6, 0x02, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x81, 0x19, 0xD7, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x01, 0x19, 0xB6, 0x83, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xB6, 0x02, 0x19, 0xD6, 0x80, 0x19, 0xB6, 0x02, 0x19, 0xD6, 0x02, 0x19, 0xB6, 0x81, 0x19, 0xD7, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x80, 0x19, 0xD7, 0x01, 0x19, 0xD6, 0x81, 0x19, 0xB6, 0x19, 0xD7, 0x02, 0x19, 0xD6, 0x80, 0x19, 0xD7, 0x02, 0x19, 0xD6, 0x80, 0x19, 0xD7, 0x02, 0x19, 0xD6, 0x84, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0xD7, 0x02, 0x19, 0xD6, 0x85, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xF7, 0x0A, 0x21, 0xF7, 0x80, 0x19, 0xF7, 0x01, 0x21, 0xF7, 0x80, 0x22, 0x17, 0x07, 0x21, 0xF7, 0x81, 0x19, 0xF6, 0x22, 0x17, 0x01, 0x21, 0xF7, 0x84, 0x19, 0xF7, + 0x22, 0x17, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xD7, 0x05, 0x19, 0xF7, 0x01, 0x11, 0xF8, 0x80, 0x09, 0xF8, 0x01, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x88, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xF9, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xD7, 0x09, 0x54, 0x11, 0x33, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8D, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x73, 0x04, 0x19, 0x52, 0x81, 0x19, 0x31, 0x21, 0x52, 0x01, 0x19, 0x31, 0x82, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x06, 0x21, 0x31, 0x80, 0x21, 0x51, 0x03, 0x21, 0x31, 0x80, 0x21, 0x51, 0x01, 0x19, 0x51, 0x80, 0x19, 0x31, 0x05, 0x21, 0x31, 0x80, 0x21, 0x51, 0x02, 0x21, 0x31, 0x80, 0x19, 0x10, 0x07, 0x21, 0x31, 0x80, 0x21, 0x11, 0x07, 0x21, 0x31, 0x80, 0x21, 0x11, 0x07, 0x21, 0x31, 0x80, 0x19, 0x30, 0x13, 0x21, 0x31, 0x83, 0x21, 0x51, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x51, 0x15, 0x21, 0x31, 0x80, 0x21, 0x51, 0x09, 0x21, 0x31, 0x80, 0x21, 0x11, 0x06, 0x21, 0x31, 0x80, 0x21, 0x11, 0x07, 0x21, 0x31, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x03, 0x21, 0x11, 0x03, 0x21, 0x31, 0x80, 0x21, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, + 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x88, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, + 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x06, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x03, 0x29, 0x10, 0x84, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x84, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x89, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x06, 0x21, 0x31, 0x81, 0x21, 0x50, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x81, 0x31, 0x30, 0x31, 0x51, 0x01, 0x31, 0x31, 0x81, 0x29, 0x31, 0x29, 0x51, 0x01, 0x29, 0x31, 0x01, 0x29, 0x52, 0x02, 0x31, 0x52, 0x82, 0x31, 0x51, 0x31, 0x31, 0x31, 0x51, 0x01, 0x39, 0x72, 0x02, 0x39, 0x92, 0x01, 0x39, 0x71, 0x84, 0x39, 0x72, 0x39, 0x71, 0x39, + 0x72, 0x39, 0x92, 0x39, 0x72, 0x01, 0x41, 0x72, 0x01, 0x41, 0x93, 0x04, 0x41, 0x92, 0x03, 0x49, 0xB3, 0x82, 0x49, 0x93, 0x49, 0xB3, 0x51, 0xB3, 0x02, 0x49, 0xD3, 0x81, 0x49, 0xB2, 0x49, 0xD3, 0x02, 0x51, 0xF3, 0x01, 0x49, 0xF3, 0x9E, 0x52, 0x14, 0x52, 0x34, 0x4A, 0x34, 0x4A, 0x13, 0x4A, 0x33, 0x49, 0xF3, 0x49, 0xB1, 0x59, 0xD1, 0x82, 0xF5, 0xAC, 0x19, 0xCC, 0xFB, 0xCC, 0xDB, 0xCD, 0x1B, 0xC4, 0xDA, 0xB4, 0xB9, 0xA4, 0x77, 0x94, 0x56, 0x8C, 0xB7, 0x85, 0x17, 0x7D, 0xBA, 0x86, 0x5C, 0x6E, 0x7C, 0x66, 0xDD, 0x56, 0xFE, 0x46, 0xFE, 0x3F, 0x1E, 0x37, 0x3F, 0x2F, 0x5F, 0x27, 0x5F, 0x27, 0x9F, 0x1F, 0x7F, 0x01, 0x17, 0x7F, 0x80, 0x0F, 0x9F, 0x02, 0x0F, 0xBF, 0x81, 0x0F, 0xDF, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x07, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x01, 0x07, 0xBF, 0x82, 0x07, 0x7F, 0x07, 0x3E, 0x07, 0x1E, 0x01, 0x06, 0xDE, 0x03, 0x06, 0xBE, 0x80, 0x06, 0x9E, 0x03, 0x06, 0x7E, 0x03, 0x06, 0x5E, 0x02, 0x06, 0x3E, 0x03, 0x06, 0x1E, 0x01, 0x05, 0xFE, 0x80, 0x05, 0xFF, 0x01, 0x05, 0xDE, 0x01, 0x05, 0xDF, 0x04, 0x05, 0xBF, 0x03, 0x05, 0x9F, 0x80, 0x05, 0x7F, 0x02, 0x05, 0x9F, 0x80, 0x05, 0x7F, 0x01, 0x05, 0x9F, 0x80, 0x05, 0x7F, 0x01, 0x05, 0x9F, 0x02, 0x05, 0x7F, 0x05, 0x05, 0x9F, 0x01, 0x05, 0x7F, 0x02, 0x05, 0x9F, 0x07, 0x05, 0xBF, 0x81, 0x05, 0x9F, 0x05, 0xBF, 0x01, 0x05, 0x9F, 0x01, 0x05, 0x7F, 0x97, 0x05, 0x5F, 0x05, 0x1F, 0x04, 0xFF, 0x04, 0xDF, 0x04, 0xBF, 0x04, 0x7F, 0x04, 0x3F, 0x03, 0xDE, 0x0B, 0xBF, 0x03, + 0x7E, 0x03, 0x1E, 0x02, 0xDD, 0x02, 0x9D, 0x12, 0x9E, 0x0A, 0x1C, 0x11, 0xBB, 0x21, 0xDC, 0x21, 0x9A, 0x31, 0x79, 0x20, 0x95, 0x38, 0xB5, 0x82, 0x9C, 0xB3, 0xDF, 0xB3, 0x7D, 0x01, 0xA2, 0xDA, 0x89, 0xA2, 0xF9, 0xA3, 0x3A, 0x8B, 0x18, 0x7B, 0x58, 0x63, 0xF9, 0x54, 0xDB, 0x55, 0xFE, 0x3E, 0x9F, 0x26, 0xBF, 0x16, 0x9E, 0x01, 0x0E, 0xBE, 0x8C, 0x16, 0xFF, 0x16, 0xBE, 0x2E, 0xDF, 0x3E, 0xDF, 0x5E, 0xDF, 0x6D, 0xFD, 0x7D, 0x3B, 0x6B, 0x35, 0x82, 0xB4, 0xA2, 0xB4, 0xBA, 0xB5, 0xCA, 0x95, 0xCA, 0x74, 0x04, 0xD2, 0x54, 0x89, 0xCA, 0x54, 0xCA, 0x95, 0xCA, 0xB6, 0xBA, 0xD7, 0x89, 0xF4, 0x50, 0xAF, 0x59, 0x51, 0x49, 0x51, 0x49, 0x72, 0x49, 0x92, 0x02, 0x41, 0x72, 0x81, 0x39, 0x72, 0x39, 0x52, 0x01, 0x39, 0x72, 0x80, 0x39, 0x71, 0x01, 0x31, 0x51, 0x81, 0x31, 0x71, 0x31, 0x51, 0x01, 0x31, 0x50, 0x80, 0x29, 0x30, 0x01, 0x29, 0x50, 0x81, 0x29, 0x30, 0x29, 0x50, 0x06, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x09, 0x54, 0x11, 0xD7, 0x11, 0xF9, 0x01, 0x01, 0xF9, 0x01, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x87, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0xD9, 0x11, 0xD8, 0x11, 0xB7, 0x09, 0x55, 0x09, 0x34, 0x08, 0xF3, 0x01, 0x00, 0xD2, 0x81, 0x08, 0xD2, 0x08, 0xB1, 0x01, 0x08, 0xD2, 0x83, 0x08, 0xB1, 0x08, 0xD1, 0x08, 0xB1, 0x08, 0xD1, 0x06, 0x08, 0xD2, 0x82, 0x08, 0xF2, 0x10, 0xF2, 0x08, 0xD2, 0x03, 0x10, 0xF2, + 0x83, 0x08, 0xF2, 0x08, 0xD2, 0x08, 0xF2, 0x10, 0xF2, 0x0B, 0x08, 0xF2, 0x84, 0x11, 0x12, 0x09, 0x12, 0x10, 0xF2, 0x08, 0xF2, 0x10, 0xF2, 0x02, 0x08, 0xF2, 0x01, 0x11, 0x12, 0x80, 0x10, 0xF2, 0x04, 0x08, 0xF2, 0x80, 0x10, 0xF2, 0x04, 0x08, 0xF2, 0x81, 0x10, 0xF2, 0x11, 0x13, 0x02, 0x10, 0xF2, 0x01, 0x11, 0x13, 0x80, 0x08, 0xF2, 0x01, 0x11, 0x13, 0x01, 0x11, 0x12, 0x82, 0x08, 0xF2, 0x08, 0xF3, 0x11, 0x13, 0x04, 0x08, 0xF2, 0x80, 0x08, 0xF3, 0x04, 0x08, 0xF2, 0x80, 0x11, 0x12, 0x02, 0x08, 0xF2, 0x01, 0x09, 0x12, 0x01, 0x08, 0xF2, 0x83, 0x11, 0x12, 0x10, 0xF2, 0x11, 0x13, 0x10, 0xF3, 0x03, 0x10, 0xF2, 0x80, 0x10, 0xF3, 0x04, 0x10, 0xF2, 0x80, 0x08, 0xF2, 0x01, 0x10, 0xF2, 0x80, 0x08, 0xF2, 0x06, 0x10, 0xF2, 0x82, 0x08, 0xF2, 0x10, 0xF3, 0x10, 0xF2, 0x01, 0x08, 0xF2, 0x8B, 0x10, 0xF3, 0x08, 0xF2, 0x11, 0x13, 0x11, 0x12, 0x08, 0xF2, 0x11, 0x13, 0x11, 0x12, 0x08, 0xF2, 0x11, 0x13, 0x10, 0xF3, 0x11, 0x13, 0x10, 0xF2, 0x01, 0x11, 0x13, 0x01, 0x11, 0x12, 0x01, 0x10, 0xF2, 0x01, 0x11, 0x13, 0x01, 0x08, 0xF3, 0x02, 0x11, 0x13, 0x80, 0x08, 0xF2, 0x01, 0x11, 0x13, 0x01, 0x08, 0xF2, 0x80, 0x11, 0x13, 0x03, 0x08, 0xF2, 0x82, 0x08, 0xD2, 0x08, 0xF2, 0x08, 0xD2, 0x08, 0x08, 0xF2, 0x80, 0x08, 0xD2, 0x01, 0x08, 0xF2, 0x03, 0x08, 0xD2, 0x04, 0x08, 0xF2, 0x80, 0x08, 0xD2, 0x01, 0x08, 0xF2, 0x02, 0x08, 0xD2, 0x80, 0x08, 0xF2, 0x03, 0x08, 0xD2, 0x01, 0x08, 0xF2, 0x81, 0x08, 0xD2, 0x08, 0xF2, 0x01, 0x09, 0x13, 0x83, 0x09, 0x75, 0x11, 0x96, + 0x09, 0xB7, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x01, 0x01, 0xB9, 0x82, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x87, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0xF9, 0x09, 0xF9, 0x11, 0xF8, 0x11, 0xD7, 0x09, 0x54, 0x11, 0x12, 0x01, 0x19, 0x31, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0xF5, 0x21, 0xD5, 0x21, 0x94, 0x19, 0x73, 0x19, 0x53, 0x11, 0x32, 0x09, 0x19, 0x32, 0x80, 0x21, 0x32, 0x03, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x52, 0x85, 0x19, 0x31, 0x19, 0x51, 0x19, 0x52, 0x19, 0x31, 0x19, 0x32, 0x21, 0x32, 0x07, 0x19, 0x31, 0x80, 0x19, 0x32, 0x06, 0x19, 0x31, 0x80, 0x21, 0x32, 0x03, 0x19, 0x31, 0x01, 0x19, 0x32, 0x02, 0x19, 0x31, 0x82, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x0F, 0x19, 0x31, 0x80, 0x19, 0x11, 0x0C, 0x19, 0x31, 0x80, 0x19, 0x51, 0x07, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x19, 0x11, 0x05, 0x19, 0x31, 0x82, 0x19, 0x32, 0x19, 0x31, 0x21, 0x32, 0x03, 0x19, 0x31, 0x82, 0x19, 0x32, 0x21, 0x32, 0x19, 0x32, 0x02, 0x19, 0x31, 0x81, 0x19, 0x32, 0x19, 0x31, 0x02, 0x19, 0x32, 0x01, 0x19, 0x31, 0x02, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x05, 0x19, 0x11, 0x80, 0x21, 0x32, 0x02, + 0x19, 0x11, 0x01, 0x19, 0x12, 0x86, 0x19, 0x11, 0x19, 0x32, 0x21, 0x32, 0x19, 0x11, 0x21, 0x31, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x88, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, + 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x86, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x07, 0x21, 0x30, 0x05, 0x29, 0x30, 0x81, 0x31, 0x50, 0x29, 0x30, 0x03, 0x31, 0x31, 0x03, 0x31, + 0x51, 0x80, 0x29, 0x51, 0x01, 0x31, 0x72, 0x82, 0x31, 0x51, 0x31, 0x52, 0x31, 0x51, 0x02, 0x39, 0x72, 0x83, 0x39, 0x92, 0x39, 0x72, 0x39, 0x92, 0x39, 0x71, 0x01, 0x39, 0x72, 0x80, 0x39, 0x71, 0x02, 0x41, 0x92, 0x82, 0x41, 0x93, 0x41, 0x92, 0x49, 0x93, 0x03, 0x41, 0x92, 0x81, 0x49, 0xB3, 0x49, 0x92, 0x03, 0x49, 0xB3, 0x86, 0x51, 0xB3, 0x51, 0xD3, 0x51, 0xB3, 0x51, 0xD3, 0x49, 0xB3, 0x49, 0xD3, 0x49, 0xB2, 0x01, 0x51, 0xF3, 0x80, 0x52, 0x13, 0x02, 0x49, 0xF3, 0x9E, 0x4A, 0x33, 0x42, 0x34, 0x3A, 0x12, 0x31, 0xD1, 0x3A, 0x12, 0x52, 0x73, 0x62, 0xB4, 0x8B, 0x97, 0xB4, 0x9A, 0xC4, 0xFB, 0xCD, 0x1B, 0xCD, 0x5B, 0xBC, 0xFA, 0xA4, 0x78, 0x84, 0x15, 0x84, 0x76, 0x8D, 0x59, 0x85, 0xBA, 0x76, 0x1B, 0x6E, 0x7C, 0x66, 0xDD, 0x56, 0xFD, 0x46, 0xFD, 0x36, 0xFD, 0x37, 0x5F, 0x2F, 0x7F, 0x27, 0x7F, 0x1F, 0x7F, 0x17, 0x7F, 0x0F, 0x7F, 0x0F, 0x9F, 0x01, 0x0F, 0xBF, 0x01, 0x0F, 0xDF, 0x08, 0x07, 0xDF, 0x0A, 0x07, 0xBF, 0x84, 0x07, 0x9F, 0x07, 0x7F, 0x07, 0x3E, 0x07, 0x1E, 0x06, 0xFE, 0x01, 0x06, 0xBD, 0x02, 0x06, 0xBE, 0x80, 0x06, 0x9E, 0x02, 0x06, 0x7E, 0x81, 0x06, 0x5E, 0x06, 0x7E, 0x02, 0x06, 0x5E, 0x81, 0x06, 0x3D, 0x06, 0x3E, 0x02, 0x06, 0x1E, 0x81, 0x05, 0xFE, 0x06, 0x1E, 0x01, 0x05, 0xFE, 0x80, 0x05, 0xFF, 0x01, 0x05, 0xDE, 0x01, 0x05, 0xBE, 0x01, 0x05, 0xBF, 0x02, 0x05, 0x9F, 0x0A, 0x05, 0x7F, 0x01, 0x05, 0x5F, 0x80, 0x05, 0x7F, 0x02, 0x05, 0x5F, 0x02, 0x05, 0x7F, 0x80, 0x05, 0x5F, 0x07, 0x05, 0x7F, 0x06, 0x05, 0x9F, 0x03, 0x05, + 0x7F, 0x85, 0x05, 0x5F, 0x05, 0x7F, 0x05, 0x5F, 0x05, 0x1F, 0x04, 0xFF, 0x04, 0xDF, 0x01, 0x04, 0x9F, 0xAB, 0x04, 0x3F, 0x04, 0x1F, 0x0B, 0xFF, 0x03, 0x9F, 0x03, 0x5E, 0x02, 0xFE, 0x02, 0xBE, 0x0A, 0x9E, 0x0A, 0x3D, 0x0A, 0x1C, 0x09, 0xBB, 0x19, 0xBC, 0x21, 0xBB, 0x31, 0xBB, 0x31, 0x39, 0x28, 0x95, 0x49, 0x16, 0x9B, 0x5E, 0xB3, 0xBF, 0xA3, 0x1C, 0x9A, 0xFB, 0x9A, 0xFA, 0x93, 0x3A, 0x7A, 0xF8, 0x6B, 0x99, 0x5C, 0x5A, 0x5D, 0x9D, 0x4E, 0x7F, 0x36, 0xBF, 0x26, 0xBF, 0x16, 0xDF, 0x0E, 0xDF, 0x0E, 0xDE, 0x16, 0xDF, 0x1E, 0xFF, 0x2E, 0xDF, 0x3E, 0xBE, 0x5E, 0xBF, 0x6D, 0xDD, 0x7C, 0xFB, 0x73, 0x55, 0x92, 0xF5, 0xAA, 0xB4, 0xC2, 0xB5, 0x01, 0xCA, 0x74, 0x81, 0xD2, 0x54, 0xD2, 0x74, 0x02, 0xD2, 0x54, 0x87, 0xD2, 0x74, 0xCA, 0x95, 0xC2, 0xB6, 0xC3, 0x18, 0x89, 0xD3, 0x59, 0x10, 0x51, 0x51, 0x51, 0x72, 0x01, 0x49, 0x72, 0x02, 0x41, 0x72, 0x01, 0x39, 0x72, 0x80, 0x39, 0x51, 0x01, 0x39, 0x71, 0x03, 0x31, 0x51, 0x03, 0x31, 0x50, 0x01, 0x29, 0x50, 0x06, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x88, 0x19, 0x11, 0x11, 0x32, 0x11, 0x34, 0x11, 0x75, 0x11, 0xB7, 0x09, 0xF8, 0x09, 0xF9, 0x01, 0xF9, 0x01, 0xD9, 0x02, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x88, 0x01, 0xB9, 0x09, 0xB9, 0x09, 0xB8, 0x11, 0xB8, 0x09, 0x76, 0x09, 0x35, 0x09, 0x14, 0x09, 0x13, 0x11, 0x13, 0x02, 0x10, 0xF2, 0x81, 0x18, 0xF2, 0x10, 0xF2, 0x01, 0x10, 0xF1, 0x82, 0x19, 0x12, 0x18, 0xF2, 0x10, 0xF1, 0x01, 0x18, 0xF2, + 0x80, 0x10, 0xF1, 0x01, 0x18, 0xF2, 0x86, 0x10, 0xF1, 0x18, 0xF2, 0x19, 0x12, 0x10, 0xF2, 0x19, 0x12, 0x18, 0xF2, 0x10, 0xF1, 0x03, 0x18, 0xF2, 0x80, 0x10, 0xF2, 0x01, 0x18, 0xF2, 0x02, 0x19, 0x12, 0x82, 0x18, 0xF2, 0x19, 0x12, 0x11, 0x12, 0x02, 0x19, 0x12, 0x80, 0x10, 0xF1, 0x01, 0x19, 0x12, 0x88, 0x19, 0x11, 0x10, 0xF1, 0x19, 0x12, 0x18, 0xF2, 0x10, 0xF1, 0x11, 0x12, 0x18, 0xF2, 0x19, 0x12, 0x10, 0xF1, 0x01, 0x18, 0xF2, 0x80, 0x18, 0xF1, 0x01, 0x10, 0xF1, 0x02, 0x18, 0xF2, 0x83, 0x10, 0xF1, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x12, 0x01, 0x18, 0xF2, 0x05, 0x19, 0x12, 0x80, 0x18, 0xF2, 0x06, 0x19, 0x12, 0x80, 0x11, 0x12, 0x02, 0x19, 0x12, 0x82, 0x11, 0x12, 0x19, 0x12, 0x10, 0xF2, 0x01, 0x19, 0x12, 0x87, 0x18, 0xF2, 0x10, 0xF2, 0x18, 0xF2, 0x11, 0x12, 0x19, 0x12, 0x11, 0x12, 0x19, 0x12, 0x11, 0x12, 0x01, 0x18, 0xF2, 0x02, 0x19, 0x12, 0x80, 0x18, 0xF2, 0x03, 0x19, 0x12, 0x03, 0x18, 0xF2, 0x05, 0x19, 0x12, 0x01, 0x18, 0xF2, 0x0B, 0x19, 0x12, 0x81, 0x18, 0xF2, 0x11, 0x12, 0x12, 0x19, 0x12, 0x80, 0x11, 0x12, 0x0C, 0x19, 0x12, 0x02, 0x18, 0xF2, 0x80, 0x19, 0x12, 0x03, 0x18, 0xF2, 0x80, 0x10, 0xF2, 0x01, 0x19, 0x12, 0x89, 0x10, 0xF1, 0x18, 0xF2, 0x19, 0x12, 0x10, 0xF1, 0x19, 0x12, 0x18, 0xF2, 0x10, 0xF1, 0x19, 0x12, 0x18, 0xF2, 0x10, 0xF1, 0x01, 0x19, 0x12, 0x83, 0x18, 0xF2, 0x10, 0xF1, 0x19, 0x12, 0x10, 0xF1, 0x01, 0x18, 0xF2, 0x88, 0x19, 0x12, 0x10, 0xF1, 0x18, 0xF2, 0x19, 0x12, 0x11, 0x12, 0x10, 0xF2, 0x19, 0x12, 0x11, 0x12, + 0x19, 0x33, 0x01, 0x11, 0x33, 0x83, 0x11, 0x54, 0x09, 0x75, 0x09, 0xB7, 0x11, 0xF8, 0x01, 0x09, 0xD9, 0x80, 0x09, 0xDA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x8B, 0x01, 0xB9, 0x01, 0xDA, 0x02, 0x1A, 0x01, 0xD9, 0x09, 0xD8, 0x11, 0xF8, 0x11, 0xD6, 0x11, 0x74, 0x11, 0x32, 0x19, 0x31, 0x21, 0x51, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x29, 0x50, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x19, 0xD6, 0x84, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x33, 0x11, 0x13, 0x11, 0x12, 0x01, 0x11, 0x33, 0x01, 0x19, 0x33, 0x02, 0x11, 0x32, 0x01, 0x11, 0x12, 0x81, 0x19, 0x32, 0x11, 0x12, 0x01, 0x19, 0x32, 0x82, 0x11, 0x12, 0x11, 0x32, 0x19, 0x32, 0x08, 0x11, 0x32, 0x03, 0x19, 0x32, 0x01, 0x11, 0x12, 0x06, 0x19, 0x32, 0x80, 0x11, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x01, 0x11, 0x32, 0x82, 0x11, 0x12, 0x19, 0x32, 0x19, 0x12, 0x02, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x32, 0x01, 0x11, 0x12, 0x81, 0x11, 0x32, 0x19, 0x32, 0x0B, 0x11, 0x32, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x80, 0x11, 0x12, 0x02, 0x11, 0x32, 0x01, 0x11, 0x12, 0x05, 0x11, 0x32, 0x80, 0x11, 0x31, 0x02, 0x11, 0x32, 0x05, 0x19, 0x32, 0x01, 0x19, 0x12, 0x80, 0x11, 0x11, 0x02, 0x19, 0x32, 0x82, 0x11, 0x12, 0x19, 0x32, 0x11, 0x12, 0x02, 0x19, 0x32, 0x01, 0x11, 0x32, + 0x02, 0x19, 0x32, 0x80, 0x11, 0x12, 0x01, 0x19, 0x32, 0x04, 0x11, 0x12, 0x80, 0x19, 0x32, 0x02, 0x11, 0x12, 0x81, 0x19, 0x32, 0x11, 0x12, 0x02, 0x19, 0x32, 0x01, 0x19, 0x12, 0x02, 0x11, 0x12, 0x02, 0x19, 0x12, 0x03, 0x19, 0x32, 0x80, 0x11, 0x12, 0x02, 0x19, 0x12, 0x02, 0x19, 0x32, 0x80, 0x19, 0x12, 0x03, 0x21, 0x11, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x8A, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x09, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, + 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x05, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x86, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, + 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x07, 0x29, 0x30, 0x81, 0x31, 0x50, 0x31, 0x51, 0x02, 0x31, 0x31, 0x80, 0x29, 0x31, 0x02, 0x31, 0x51, 0x04, 0x31, 0x72, 0x01, 0x31, 0x52, 0x01, 0x39, 0x72, 0x03, 0x39, 0x92, 0x01, 0x39, 0x72, 0x01, 0x41, 0x72, 0x03, 0x41, 0x92, 0x03, 0x41, 0x93, 0x80, 0x41, 0x92, 0x01, 0x49, 0x92, 0x01, 0x49, 0xB3, 0x82, 0x51, 0xB3, 0x51, 0xD3, 0x51, 0xB3, 0x01, 0x51, 0xB2, 0x01, 0x51, 0xD3, 0x02, 0x51, 0xF3, 0x01, 0x51, 0xD3, 0x9C, 0x52, 0x13, 0x52, 0x33, 0x4A, 0x34, 0x42, 0x13, 0x3A, 0x33, 0x3A, 0x73, 0x3A, 0x94, 0x4B, 0x56, 0x6C, 0x39, 0x84, 0xBB, 0xA5, 0x1C, 0xAD, 0x1C, 0xBD, 0x5C, 0xBD, 0x5B, 0xB4, 0xFA, 0x9C, 0x78, 0x7B, 0xF5, 0x7C, 0x76, 0x8D, 0x9A, 0x86, 0x1B, 0x6E, 0x1B, 0x66, 0x7C, 0x5E, 0xDD, 0x4E, 0xDD, 0x46, 0xFD, 0x37, 0x1E, 0x37, 0x5E, 0x2F, 0x7F, 0x1F, 0x5E, 0x01, 0x17, 0x7F, 0x01, 0x0F, 0x9F, 0x01, 0x0F, 0xBF, 0x80, 0x0F, 0xDF, 0x09, 0x07, 0xDF, 0x0C, 0x07, 0xBF, 0x83, 0x07, 0x9F, 0x07, 0x5E, 0x07, 0x3E, 0x06, 0xFD, 0x01, 0x06, 0xDD, 0x02, 0x06, 0xBD, 0x86, 0x06, 0xBE, 0x06, 0x9E, 0x06, 0x7D, 0x06, 0x7E, 0x06, 0x5E, 0x06, 0x5D, 0x06, 0x7D, 0x02, 0x06, 0x5D, 0x01, 0x06, 0x3D, 0x01, 0x06, 0x1D, 0x80, 0x06, 0x1E, 0x02, 0x05, 0xFE, 0x01, 0x05, 0xDE, 0x81, 0x05, 0xBE, 0x05, 0xDE, 0x03, 0x05, 0xBE, + 0x01, 0x05, 0x9E, 0x80, 0x05, 0x9F, 0x02, 0x05, 0x7E, 0x81, 0x05, 0x5F, 0x05, 0x7F, 0x05, 0x05, 0x5F, 0x01, 0x05, 0x3F, 0x01, 0x05, 0x5F, 0x01, 0x05, 0x3F, 0x0B, 0x05, 0x5F, 0x01, 0x05, 0x7F, 0x03, 0x05, 0x5F, 0x01, 0x05, 0x7F, 0x02, 0x05, 0x5F, 0x03, 0x05, 0x3F, 0x80, 0x04, 0xFF, 0x01, 0x04, 0xBF, 0xA0, 0x04, 0x9F, 0x04, 0x5F, 0x04, 0x3F, 0x03, 0xFF, 0x03, 0x9F, 0x03, 0x7F, 0x03, 0x3F, 0x02, 0xDE, 0x02, 0x7D, 0x02, 0x5E, 0x0A, 0x3D, 0x09, 0xFD, 0x09, 0xDC, 0x11, 0xBC, 0x19, 0xBC, 0x29, 0xBC, 0x31, 0x9B, 0x28, 0xF8, 0x20, 0x75, 0x59, 0xDA, 0x93, 0x3E, 0x9B, 0x3E, 0x92, 0xDB, 0x8A, 0xDA, 0x7A, 0xB8, 0x62, 0xF8, 0x5B, 0xB9, 0x54, 0xBB, 0x5E, 0x1F, 0x46, 0x9F, 0x2E, 0x9E, 0x16, 0xBE, 0x16, 0xDF, 0x01, 0x0E, 0xDE, 0x8D, 0x16, 0xFE, 0x27, 0x1F, 0x2E, 0xFF, 0x3E, 0xDF, 0x56, 0x7E, 0x76, 0x3E, 0x6C, 0x79, 0x7B, 0x55, 0x92, 0xD4, 0xAA, 0x94, 0xC2, 0xB4, 0xCA, 0xB5, 0xD2, 0x74, 0xCA, 0x34, 0x03, 0xD2, 0x54, 0x87, 0xCA, 0x54, 0xCA, 0x75, 0xC2, 0xB6, 0xBA, 0xF7, 0x79, 0x72, 0x59, 0x31, 0x51, 0x31, 0x49, 0x52, 0x01, 0x49, 0x72, 0x02, 0x41, 0x72, 0x83, 0x39, 0x72, 0x39, 0x71, 0x39, 0x72, 0x39, 0x71, 0x01, 0x31, 0x51, 0x81, 0x31, 0x71, 0x31, 0x51, 0x03, 0x31, 0x50, 0x82, 0x29, 0x30, 0x29, 0x50, 0x29, 0x2F, 0x07, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD7, 0x12, 0x19, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0xF9, 0x01, 0xFA, + 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x89, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xB9, 0x11, 0xF9, 0x19, 0xD8, 0x19, 0x96, 0x11, 0x54, 0x11, 0x13, 0x11, 0x33, 0x11, 0x12, 0x02, 0x19, 0x32, 0x01, 0x19, 0x11, 0x02, 0x21, 0x32, 0x83, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x32, 0x81, 0x21, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x06, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x32, 0x02, 0x21, 0x32, 0x82, 0x19, 0x31, 0x21, 0x32, 0x19, 0x11, 0x03, 0x21, 0x32, 0x80, 0x21, 0x52, 0x02, 0x21, 0x32, 0x80, 0x19, 0x32, 0x01, 0x21, 0x32, 0x80, 0x21, 0x11, 0x08, 0x21, 0x32, 0x82, 0x19, 0x11, 0x21, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x21, 0x31, 0x19, 0x11, 0x21, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x32, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x03, 0x21, 0x32, 0x80, 0x19, 0x31, 0x01, 0x21, 0x32, 0x80, 0x19, 0x11, 0x02, 0x21, 0x32, 0x81, 0x19, 0x32, 0x21, 0x52, 0x01, 0x21, 0x32, 0x02, 0x19, 0x11, 0x01, 0x21, 0x32, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x19, 0x11, 0x21, 0x32, 0x19, 0x11, 0x01, 0x21, 0x32, 0x01, 0x19, 0x11, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x21, 0x32, 0x87, 0x19, 0x11, 0x21, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x32, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x02, 0x19, 0x11, 0x81, 0x19, 0x31, 0x21, 0x32, 0x02, 0x19, 0x11, 0x80, 0x21, 0x32, 0x02, + 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x01, 0x21, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x81, 0x21, 0x32, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x21, 0x32, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x02, 0x21, 0x32, 0x82, 0x19, 0x11, 0x21, 0x32, 0x21, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x32, 0x19, 0x11, 0x02, 0x21, 0x32, 0x82, 0x19, 0x11, 0x21, 0x32, 0x19, 0x31, 0x04, 0x21, 0x32, 0x88, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x21, 0x32, 0x19, 0x11, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x03, 0x21, 0x32, 0x80, 0x21, 0x52, 0x04, 0x19, 0x32, 0x88, 0x19, 0x53, 0x11, 0x53, 0x11, 0x74, 0x11, 0x75, 0x09, 0x76, 0x11, 0xB8, 0x11, 0xF9, 0x0A, 0x1A, 0x09, 0xDA, 0x02, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x88, 0x0A, 0x1A, 0x01, 0xD9, 0x09, 0xD8, 0x09, 0xD7, 0x11, 0xB6, 0x11, 0x74, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x83, 0x29, 0x50, 0x29, 0x30, 0x21, 0x50, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x86, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x11, 0x96, 0x19, 0xB6, 0x11, 0x95, 0x01, 0x09, 0x54, 0x83, 0x11, 0x34, 0x09, 0x33, 0x11, 0x33, 0x11, 0x13, 0x01, 0x11, 0x33, 0x80, 0x11, 0x34, 0x01, 0x11, 0x33, 0x02, 0x11, 0x13, 0x81, 0x11, 0x33, 0x11, 0x12, 0x01, 0x11, 0x33, 0x80, 0x11, 0x12, 0x02, 0x11, 0x33, + 0x80, 0x09, 0x32, 0x01, 0x11, 0x33, 0x81, 0x09, 0x32, 0x11, 0x32, 0x01, 0x11, 0x33, 0x06, 0x11, 0x32, 0x83, 0x11, 0x33, 0x11, 0x32, 0x11, 0x33, 0x11, 0x12, 0x06, 0x11, 0x32, 0x80, 0x11, 0x12, 0x02, 0x11, 0x32, 0x82, 0x11, 0x33, 0x11, 0x13, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x11, 0x33, 0x01, 0x11, 0x32, 0x01, 0x11, 0x33, 0x80, 0x11, 0x12, 0x09, 0x11, 0x32, 0x04, 0x11, 0x33, 0x80, 0x11, 0x12, 0x02, 0x11, 0x33, 0x01, 0x11, 0x32, 0x81, 0x11, 0x13, 0x11, 0x33, 0x01, 0x11, 0x32, 0x01, 0x11, 0x33, 0x81, 0x11, 0x32, 0x09, 0x32, 0x04, 0x11, 0x32, 0x80, 0x11, 0x33, 0x06, 0x11, 0x32, 0x80, 0x11, 0x33, 0x0D, 0x11, 0x32, 0x80, 0x11, 0x12, 0x02, 0x11, 0x32, 0x82, 0x11, 0x12, 0x11, 0x33, 0x11, 0x12, 0x04, 0x11, 0x33, 0x80, 0x11, 0x13, 0x04, 0x11, 0x33, 0x80, 0x11, 0x13, 0x03, 0x11, 0x33, 0x03, 0x19, 0x53, 0x01, 0x11, 0x53, 0x01, 0x11, 0x33, 0x84, 0x11, 0x32, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x19, 0x32, 0x01, 0x19, 0x12, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x29, 0x31, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x21, + 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x04, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x87, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x87, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x07, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, + 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x88, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x05, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x03, 0x29, 0x30, 0x80, 0x29, 0x50, 0x02, 0x29, 0x30, 0x81, 0x29, 0x50, 0x29, 0x30, 0x02, 0x31, 0x31, 0x81, 0x31, 0x51, 0x31, 0x31, 0x02, 0x31, 0x51, 0x81, 0x31, 0x71, 0x31, 0x51, 0x02, 0x31, 0x72, 0x81, 0x31, 0x51, 0x31, 0x72, 0x04, 0x39, 0x72, 0x80, 0x39, 0x92, 0x01, 0x39, 0x72, 0x01, 0x41, 0x72, 0x83, 0x41, 0x92, 0x41, 0x93, 0x41, 0x72, 0x41, 0x92, 0x01, 0x49, 0x93, 0x80, 0x41, 0x92, 0x02, 0x49, 0xB3, 0x05, 0x51, 0xB3, 0x81, 0x51, 0xD3, 0x51, 0xB2, 0x01, 0x51, 0xD3, 0x81, 0x51, 0xD2, 0x51, 0xF3, 0x02, 0x51, 0xD3, 0x98, 0x52, 0x13, 0x52, 0x53, 0x42, 0x53, 0x32, 0x12, 0x3A, 0x93, 0x5B, 0xD8, 0x74, 0xFC, 0x85, 0x7D, 0x95, 0xBE, 0x95, 0x9D, 0xAD, 0xBD, 0xB5, 0xDD, 0xB5, 0x9C, 0xA5, 0x19, 0x7C, 0x15, 0x6B, + 0xF5, 0x85, 0x39, 0x85, 0xFC, 0x76, 0x5C, 0x66, 0x5C, 0x5E, 0xDD, 0x4E, 0xFD, 0x3F, 0x1E, 0x2E, 0xFD, 0x2F, 0x5F, 0x01, 0x27, 0x7F, 0x82, 0x1F, 0x7E, 0x17, 0x7F, 0x0F, 0x9F, 0x01, 0x0F, 0xBF, 0x80, 0x07, 0xBF, 0x0D, 0x07, 0xDF, 0x0B, 0x07, 0xBF, 0x84, 0x07, 0x9E, 0x07, 0x5E, 0x07, 0x3E, 0x07, 0x1D, 0x06, 0xDD, 0x03, 0x06, 0xBD, 0x01, 0x06, 0x9D, 0x01, 0x06, 0x7D, 0x04, 0x06, 0x5D, 0x02, 0x06, 0x3D, 0x02, 0x06, 0x1D, 0x81, 0x05, 0xFD, 0x05, 0xFE, 0x02, 0x05, 0xDE, 0x04, 0x05, 0xBE, 0x02, 0x05, 0x9E, 0x02, 0x05, 0x7E, 0x01, 0x05, 0x5E, 0x80, 0x05, 0x5F, 0x01, 0x05, 0x3E, 0x04, 0x05, 0x3F, 0x01, 0x05, 0x1F, 0x01, 0x05, 0x3F, 0x80, 0x05, 0x1F, 0x03, 0x05, 0x3F, 0x01, 0x05, 0x1F, 0x04, 0x05, 0x3F, 0x01, 0x05, 0x5F, 0x03, 0x05, 0x3F, 0x02, 0x05, 0x5F, 0x82, 0x05, 0x3F, 0x05, 0x1F, 0x05, 0x3F, 0x03, 0x05, 0x1F, 0x80, 0x04, 0xFF, 0x01, 0x04, 0xBF, 0x84, 0x04, 0x9F, 0x04, 0x7F, 0x04, 0x5F, 0x03, 0xFF, 0x03, 0xBF, 0x01, 0x03, 0x7F, 0x99, 0x02, 0xFE, 0x02, 0xBE, 0x02, 0x7E, 0x02, 0x3D, 0x02, 0x1D, 0x01, 0xFD, 0x01, 0xBC, 0x09, 0x9C, 0x11, 0x9C, 0x21, 0xBC, 0x29, 0xBC, 0x31, 0x7A, 0x18, 0x96, 0x30, 0xB6, 0x7A, 0xBD, 0x8B, 0x1D, 0x7A, 0x9A, 0x7A, 0xDA, 0x72, 0xF9, 0x63, 0x79, 0x5C, 0x3A, 0x4D, 0x1B, 0x5E, 0x7F, 0x3E, 0xBF, 0x26, 0xDE, 0x0E, 0xBE, 0x01, 0x0E, 0xFF, 0x8D, 0x17, 0x1F, 0x16, 0xFE, 0x27, 0x1F, 0x2F, 0x1F, 0x46, 0xFF, 0x56, 0x3E, 0x86, 0x5F, 0x74, 0x78, 0x73, 0x14, 0x9A, 0xF5, 0xB2, 0xD5, 0xC2, 0xB4, 0xCA, 0x74, 0xCA, + 0x54, 0x02, 0xD2, 0x54, 0x8A, 0xD2, 0x34, 0xCA, 0x34, 0xD2, 0x75, 0xCA, 0x95, 0xC2, 0xB6, 0xBA, 0xF7, 0x71, 0x31, 0x61, 0x31, 0x51, 0x52, 0x49, 0x52, 0x49, 0x72, 0x02, 0x41, 0x72, 0x80, 0x39, 0x72, 0x02, 0x39, 0x71, 0x81, 0x39, 0x51, 0x31, 0x51, 0x01, 0x31, 0x71, 0x81, 0x31, 0x50, 0x31, 0x30, 0x02, 0x31, 0x50, 0x82, 0x29, 0x50, 0x29, 0x30, 0x29, 0x50, 0x05, 0x29, 0x30, 0x8A, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD8, 0x01, 0x09, 0xF9, 0x07, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x09, 0xD9, 0x86, 0x11, 0xF9, 0x19, 0xD8, 0x11, 0x75, 0x11, 0x13, 0x11, 0x12, 0x10, 0xF2, 0x19, 0x12, 0x02, 0x19, 0x11, 0x82, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x11, 0x80, 0x19, 0x10, 0x02, 0x21, 0x31, 0x82, 0x19, 0x10, 0x21, 0x31, 0x19, 0x11, 0x02, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x85, 0x21, 0x11, 0x21, 0x31, 0x19, 0x11, 0x19, 0x10, 0x21, 0x31, 0x21, 0x11, 0x02, 0x21, 0x31, 0x01, 0x19, 0x10, 0x80, 0x21, 0x31, 0x01, 0x21, 0x10, 0x84, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x02, 0x21, 0x11, 0x89, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x11, 0x80, 0x21, 0x10, 0x02, 0x21, 0x11, 0x02, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x11, 0x02, 0x21, 0x10, 0x08, 0x21, 0x11, 0x8D, 0x19, 0x10, 0x19, 0x11, 0x19, 0x10, + 0x21, 0x11, 0x21, 0x10, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x19, 0x10, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x01, 0x21, 0x31, 0x83, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x02, 0x21, 0x11, 0x83, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x21, 0x11, 0x04, 0x21, 0x31, 0x82, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x06, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x11, 0x08, 0x21, 0x31, 0x80, 0x21, 0x11, 0x02, 0x21, 0x31, 0x82, 0x21, 0x11, 0x19, 0x31, 0x19, 0x11, 0x01, 0x21, 0x31, 0x85, 0x19, 0x11, 0x19, 0x10, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x11, 0x87, 0x19, 0x10, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x19, 0x10, 0x07, 0x21, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x04, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x11, 0x02, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x31, 0x05, 0x19, 0x31, 0x87, 0x19, 0x52, 0x11, 0x32, 0x11, 0x33, 0x11, 0x34, 0x11, 0x76, 0x09, 0xB7, 0x12, 0x19, 0x09, 0xD9, 0x04, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x8F, 0x01, 0xFA, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xF8, 0x09, 0xD7, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x29, 0x51, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, + 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x11, 0x76, 0x11, 0x96, 0x01, 0x11, 0x95, 0x04, 0x11, 0x75, 0x80, 0x11, 0x74, 0x02, 0x19, 0x75, 0x06, 0x11, 0x54, 0x80, 0x19, 0x74, 0x01, 0x11, 0x54, 0x01, 0x11, 0x74, 0x80, 0x11, 0x54, 0x07, 0x11, 0x74, 0x0A, 0x19, 0x74, 0x80, 0x11, 0x74, 0x02, 0x19, 0x74, 0x81, 0x11, 0x74, 0x19, 0x74, 0x02, 0x11, 0x74, 0x84, 0x19, 0x74, 0x11, 0x54, 0x19, 0x74, 0x11, 0x54, 0x19, 0x74, 0x01, 0x11, 0x74, 0x85, 0x11, 0x54, 0x11, 0x74, 0x11, 0x54, 0x11, 0x74, 0x11, 0x54, 0x11, 0x74, 0x01, 0x11, 0x54, 0x05, 0x11, 0x74, 0x02, 0x11, 0x54, 0x02, 0x11, 0x74, 0x02, 0x11, 0x54, 0x0D, 0x11, 0x74, 0x81, 0x19, 0x74, 0x11, 0x74, 0x01, 0x19, 0x74, 0x80, 0x11, 0x74, 0x01, 0x19, 0x74, 0x80, 0x11, 0x54, 0x01, 0x19, 0x74, 0x01, 0x11, 0x74, 0x02, 0x19, 0x74, 0x80, 0x11, 0x54, 0x07, 0x19, 0x74, 0x80, 0x19, 0x54, 0x02, 0x19, 0x74, 0x01, 0x11, 0x74, 0x82, 0x19, 0x74, 0x11, 0x74, 0x19, 0x75, 0x05, 0x19, 0x74, 0x80, 0x11, 0x74, 0x06, 0x19, 0x74, 0x87, 0x11, 0x74, 0x19, 0x74, 0x19, 0x94, 0x19, 0x74, 0x19, 0x94, 0x19, 0x74, 0x19, 0x94, 0x11, 0x74, 0x01, 0x19, 0x74, 0x01, 0x11, 0x54, 0x88, 0x11, 0x33, 0x19, 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x05, 0x29, 0x30, 0x01, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, + 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x21, 0x10, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, + 0x2F, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x09, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x85, 0x29, 0x50, 0x29, 0x30, 0x21, 0x30, 0x29, 0x50, 0x29, 0x30, 0x29, 0x50, 0x03, 0x29, 0x30, 0x01, 0x31, 0x50, 0x03, 0x29, 0x30, 0x81, 0x29, 0x31, 0x31, 0x31, 0x04, 0x31, 0x51, 0x81, 0x31, 0x71, 0x31, 0x51, 0x03, 0x31, 0x71, 0x81, 0x39, 0x72, 0x31, 0x51, 0x04, 0x39, 0x72, 0x81, 0x39, 0x92, 0x41, 0x92, 0x01, 0x41, 0x93, 0x01, 0x41, 0x92, 0x80, 0x41, 0x93, 0x01, 0x49, 0xB3, 0x81, 0x49, 0x93, 0x51, 0xB3, 0x01, 0x49, 0xB3, 0x01, 0x51, 0xB3, 0x80, 0x51, 0x92, 0x01, 0x51, 0xB2, 0x03, 0x51, 0x92, 0x80, 0x59, 0xB2, 0x02, 0x59, 0xD2, 0x02, 0x51, 0xB2, 0x85, 0x49, 0xD2, 0x41, 0xD2, 0x4A, 0x53, 0x63, 0x97, 0x84, + 0xFB, 0x95, 0x9E, 0x01, 0x8D, 0xDE, 0x91, 0x8D, 0xFE, 0x96, 0x1E, 0x9D, 0xFD, 0xA5, 0xFD, 0x9D, 0x9B, 0x84, 0x97, 0x74, 0x76, 0x7D, 0x39, 0x85, 0xFB, 0x75, 0xFB, 0x66, 0x1B, 0x5E, 0xBD, 0x57, 0x1E, 0x47, 0x1E, 0x37, 0x3E, 0x2F, 0x5E, 0x27, 0x9F, 0x1F, 0x9F, 0x01, 0x17, 0x9F, 0x80, 0x17, 0xBF, 0x01, 0x0F, 0xBF, 0x80, 0x07, 0xBF, 0x12, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x03, 0x07, 0xBF, 0x01, 0x07, 0x9E, 0x85, 0x07, 0x5E, 0x07, 0x1D, 0x06, 0xFD, 0x06, 0xDD, 0x06, 0xBC, 0x06, 0x9C, 0x01, 0x06, 0xBD, 0x02, 0x06, 0x9D, 0x82, 0x06, 0x7D, 0x06, 0x5D, 0x06, 0x5C, 0x01, 0x06, 0x5D, 0x02, 0x06, 0x3D, 0x03, 0x06, 0x1D, 0x01, 0x05, 0xFD, 0x01, 0x05, 0xDD, 0x80, 0x05, 0xDE, 0x04, 0x05, 0xBE, 0x02, 0x05, 0x9E, 0x01, 0x05, 0x7E, 0x03, 0x05, 0x5E, 0x02, 0x05, 0x3E, 0x80, 0x05, 0x3F, 0x15, 0x05, 0x1F, 0x80, 0x05, 0x3F, 0x02, 0x05, 0x1F, 0x02, 0x05, 0x3F, 0x02, 0x05, 0x1F, 0x01, 0x04, 0xFF, 0x82, 0x05, 0x1F, 0x04, 0xFF, 0x04, 0xBF, 0x01, 0x04, 0x9F, 0xB0, 0x04, 0x7F, 0x04, 0x3F, 0x03, 0xFF, 0x03, 0xBF, 0x03, 0x9F, 0x03, 0x7F, 0x0B, 0x5F, 0x0B, 0x1F, 0x02, 0x9E, 0x02, 0x7E, 0x02, 0x3E, 0x01, 0xFD, 0x01, 0xDE, 0x01, 0xBD, 0x09, 0x9D, 0x11, 0x9D, 0x19, 0x9C, 0x21, 0x9C, 0x31, 0xBC, 0x39, 0x7A, 0x20, 0x75, 0x38, 0xD6, 0x7A, 0xDD, 0x8B, 0x5D, 0x72, 0xFA, 0x63, 0x19, 0x63, 0xFA, 0x54, 0x5A, 0x55, 0xBE, 0x46, 0x7F, 0x36, 0xFF, 0x1E, 0xBE, 0x0E, 0xFE, 0x06, 0xDE, 0x06, 0xFE, 0x0E, 0xFF, 0x17, 0x1F, 0x27, 0x3F, 0x37, 0x1F, 0x4E, + 0xDF, 0x66, 0x7E, 0x7D, 0xFD, 0x6B, 0xF6, 0x83, 0x35, 0x9A, 0xB4, 0xBA, 0xD5, 0xC2, 0x94, 0xCA, 0x74, 0xD2, 0x54, 0x01, 0xD2, 0x34, 0x02, 0xD2, 0x54, 0x86, 0xCA, 0x55, 0xCA, 0x96, 0xC2, 0xD7, 0xB2, 0xD7, 0x69, 0x11, 0x59, 0x51, 0x51, 0x52, 0x01, 0x49, 0x72, 0x01, 0x41, 0x52, 0x02, 0x39, 0x72, 0x80, 0x39, 0x51, 0x01, 0x39, 0x71, 0x80, 0x31, 0x71, 0x01, 0x31, 0x51, 0x02, 0x31, 0x50, 0x80, 0x29, 0x30, 0x01, 0x29, 0x50, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB8, 0x11, 0xF9, 0x01, 0xD9, 0x09, 0xFA, 0x07, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x88, 0x11, 0xF9, 0x19, 0xB7, 0x11, 0x55, 0x11, 0x13, 0x11, 0x12, 0x19, 0x11, 0x18, 0xF1, 0x18, 0xF0, 0x21, 0x11, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x04, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x08, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0C, 0x21, 0x10, 0x80, 0x21, 0x30, 0x08, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0A, 0x21, 0x10, 0x80, 0x21, 0x30, 0x12, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x08, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, + 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x07, 0x21, 0x10, 0x85, 0x20, 0xF0, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x02, 0x19, 0x30, 0x01, 0x19, 0x11, 0x88, 0x19, 0x32, 0x11, 0x12, 0x11, 0x13, 0x11, 0x34, 0x11, 0x96, 0x11, 0xD8, 0x09, 0xB8, 0x09, 0xD9, 0x09, 0xDA, 0x03, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x01, 0x01, 0xF9, 0x86, 0x0A, 0x19, 0x11, 0xF8, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x86, 0x11, 0x96, 0x19, 0xB6, 0x19, 0xD6, 0x22, 0x17, 0x22, 0x37, 0x22, 0x17, 0x21, 0xF7, 0x01, 0x22, 0x17, 0x83, 0x2A, 0x17, 0x2A, 0x38, 0x2A, 0x17, 0x2A, 0x38, 0x03, 0x2A, 0x17, 0x82, 0x2A, 0x37, 0x2A, 0x17, 0x29, 0xF7, 0x03, 0x2A, 0x17, 0x82, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x37, 0x04, 0x2A, 0x17, 0x82, 0x2A, 0x37, 0x2A, 0x17, 0x2A, + 0x37, 0x01, 0x2A, 0x17, 0x80, 0x22, 0x16, 0x05, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x10, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x10, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x05, 0x2A, 0x17, 0x80, 0x29, 0xF7, 0x03, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x0A, 0x2A, 0x17, 0x82, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x37, 0x08, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x04, 0x2A, 0x17, 0x85, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x37, 0x2A, 0x17, 0x02, 0x2A, 0x37, 0x04, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x06, 0x2A, 0x17, 0x01, 0x2A, 0x16, 0x82, 0x29, 0xF6, 0x21, 0xF6, 0x2A, 0x16, 0x04, 0x21, 0xF6, 0x89, 0x22, 0x17, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x19, 0x33, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x21, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x87, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x85, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, + 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, + 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x82, 0x29, 0x50, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x04, 0x29, 0x30, 0x81, 0x29, 0x50, 0x29, 0x30, 0x01, 0x29, 0x50, 0x05, 0x29, 0x30, 0x82, 0x31, 0x50, 0x29, 0x30, 0x29, 0x50, 0x02, 0x29, 0x51, 0x80, 0x29, 0x30, 0x06, 0x31, 0x51, 0x02, 0x31, 0x71, 0x02, 0x39, 0x71, 0x03, 0x39, 0x72, 0x82, 0x41, 0x72, 0x41, 0x93, 0x41, 0x92, 0x02, 0x41, 0x93, 0x82, 0x41, 0x92, 0x49, 0xB3, 0x49, 0x93, 0x02, 0x49, 0xB3, 0x01, 0x51, 0xB3, 0x80, 0x49, 0xB2, 0x02, 0x51, 0xB2, 0x80, 0x51, 0x92, 0x01, 0x51, 0x91, 0xA2, 0x51, 0x71, 0x59, 0xB1, 0x59, 0x91, 0x59, 0xB1, 0x51, 0x90, 0x51, 0x70, 0x49, 0x70, 0x59, 0xD1, 0x62, 0x53, 0x7B, 0x37, 0x94, 0x3A, 0x9C, 0xDC, 0x9D, 0x3D, 0x95, 0x7D, 0x95, 0xBD, 0x8D, 0xBD, 0x85, 0xDD, 0x8E, 0x1D, 0x96, 0x3E, 0x96, 0x1D, 0x8D, 0xDC, 0x7D, 0x19, 0x6C, 0x97, 0x6C, 0xB7, 0x7D, 0xBA, 0x7E, 0x3C, 0x66, 0x3B, 0x5E, 0x7C, 0x56, 0xDE, 0x47, 0x1E, 0x37, 0x3E, 0x2F, 0x5E, 0x27, 0x7F, 0x1F, 0x9F, 0x17, 0xBF, 0x01, 0x0F, 0x9F, 0x81, 0x0F, 0xBF, 0x07, 0xBF, 0x17, 0x07, 0xDF, 0x06, 0x07, 0xBF, 0x84, 0x07, 0x7E, 0x07, 0x3D, 0x07, 0x1D, 0x06, 0xFC, 0x06, 0xDC, 0x02, 0x06, 0xBC, 0x83, 0x06, 0x9C, + 0x06, 0xBD, 0x06, 0x9C, 0x06, 0x9D, 0x02, 0x06, 0x7C, 0x80, 0x06, 0x5C, 0x03, 0x06, 0x3C, 0x80, 0x06, 0x3D, 0x02, 0x06, 0x1D, 0x02, 0x05, 0xFD, 0x01, 0x05, 0xDD, 0x02, 0x05, 0xBD, 0x01, 0x05, 0xBE, 0x01, 0x05, 0x9E, 0x02, 0x05, 0x7E, 0x01, 0x05, 0x5E, 0x03, 0x05, 0x3E, 0x80, 0x05, 0x1E, 0x02, 0x05, 0x1F, 0x01, 0x04, 0xFF, 0x80, 0x04, 0xFE, 0x10, 0x04, 0xFF, 0x02, 0x05, 0x1F, 0x06, 0x04, 0xFF, 0x02, 0x04, 0xDF, 0x80, 0x04, 0xFF, 0x02, 0x04, 0x9F, 0x84, 0x04, 0x7F, 0x04, 0x3F, 0x04, 0x1F, 0x03, 0xDF, 0x03, 0x9F, 0x01, 0x03, 0x5F, 0x9C, 0x03, 0x1F, 0x02, 0xDF, 0x02, 0x9F, 0x02, 0x5E, 0x02, 0x1E, 0x02, 0x1F, 0x01, 0xDE, 0x01, 0x9E, 0x09, 0xBE, 0x09, 0x7C, 0x09, 0x5B, 0x19, 0x7C, 0x29, 0x9C, 0x39, 0xDC, 0x31, 0x39, 0x28, 0xB6, 0x6A, 0x9C, 0x83, 0x7D, 0x6A, 0xF9, 0x63, 0x59, 0x64, 0x3B, 0x4C, 0xDB, 0x56, 0x7F, 0x3E, 0xDF, 0x26, 0xDE, 0x16, 0xDE, 0x0E, 0xFE, 0x06, 0xFE, 0x0F, 0x1F, 0x01, 0x17, 0x3F, 0x8D, 0x27, 0x3F, 0x3F, 0x3F, 0x4E, 0xFF, 0x6E, 0xBF, 0x7D, 0xDD, 0x6B, 0xB6, 0x7A, 0xD4, 0xA2, 0xF5, 0xBA, 0xB5, 0xC2, 0x74, 0xCA, 0x54, 0xD2, 0x54, 0xD2, 0x34, 0xD2, 0x54, 0x01, 0xD2, 0x34, 0x87, 0xD2, 0x55, 0xCA, 0x55, 0xC2, 0x76, 0xC2, 0xD7, 0xAA, 0xB7, 0x60, 0xD0, 0x59, 0x52, 0x51, 0x52, 0x01, 0x49, 0x72, 0x86, 0x41, 0x52, 0x41, 0x92, 0x41, 0x72, 0x39, 0x72, 0x39, 0x71, 0x39, 0x72, 0x39, 0x71, 0x02, 0x31, 0x51, 0x86, 0x31, 0x50, 0x31, 0x51, 0x31, 0x50, 0x31, 0x30, 0x31, 0x50, 0x29, 0x30, 0x31, 0x50, 0x06, 0x29, 0x30, 0x80, + 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xD8, 0x09, 0xD9, 0x09, 0xFA, 0x02, 0x01, 0xD9, 0x83, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x88, 0x09, 0xF9, 0x12, 0x1A, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0x55, 0x11, 0x13, 0x19, 0x12, 0x19, 0x11, 0x18, 0xF1, 0x07, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x0C, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x07, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x07, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x82, 0x21, 0x30, + 0x21, 0x10, 0x20, 0xEF, 0x04, 0x21, 0x10, 0x80, 0x20, 0xEF, 0x0E, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x89, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x34, 0x11, 0x76, 0x11, 0xB8, 0x11, 0xD9, 0x09, 0xD9, 0x09, 0xFA, 0x04, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0x01, 0xF9, 0x87, 0x09, 0xF8, 0x11, 0xF8, 0x11, 0xD7, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x08, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x89, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x09, 0x35, 0x11, 0x75, 0x19, 0x96, 0x22, 0x17, 0x2A, 0x37, 0x04, 0x22, 0x17, 0x80, 0x2A, 0x17, 0x02, 0x2A, 0x37, 0x03, 0x2A, 0x17, 0x82, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x37, 0x01, 0x2A, 0x17, 0x01, 0x2A, 0x38, 0x02, 0x2A, 0x37, 0x0A, 0x2A, 0x17, 0x80, 0x22, 0x17, 0x03, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x0A, 0x2A, 0x17, 0x80, 0x22, 0x17, 0x04, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x06, 0x2A, 0x17, 0x80, 0x2A, 0x18, 0x09, 0x2A, 0x17, 0x81, 0x2A, 0x18, 0x2A, 0x17, 0x01, 0x2A, 0x18, 0x02, 0x2A, 0x17, 0x80, 0x2A, 0x18, 0x09, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x01, 0x2A, 0x17, 0x02, 0x2A, 0x37, 0x80, 0x2A, 0x17, 0x07, 0x2A, 0x37, 0x01, 0x2A, 0x17, 0x81, 0x2A, 0x37, 0x2A, 0x17, 0x03, 0x2A, 0x37, 0x80, 0x2A, 0x38, 0x01, 0x2A, 0x37, 0x83, 0x22, + 0x17, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x37, 0x02, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x08, 0x2A, 0x17, 0x84, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x37, 0x2A, 0x16, 0x2A, 0x17, 0x02, 0x2A, 0x37, 0x01, 0x2A, 0x17, 0x02, 0x2A, 0x37, 0x8C, 0x22, 0x17, 0x19, 0xB6, 0x19, 0xB5, 0x21, 0xB5, 0x19, 0x54, 0x19, 0x53, 0x19, 0x33, 0x21, 0x32, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x86, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x84, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, + 0x29, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x07, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x8E, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x17, 0x29, 0x30, 0x82, 0x31, 0x30, 0x29, 0x30, 0x31, 0x50, 0x01, 0x31, 0x51, 0x80, 0x29, 0x51, 0x02, 0x31, 0x51, 0x80, 0x29, 0x50, 0x01, 0x31, 0x71, 0x80, 0x31, 0x51, 0x04, 0x31, 0x71, 0x02, 0x39, 0x71, 0x03, 0x39, 0x72, + 0x80, 0x41, 0x92, 0x01, 0x41, 0x72, 0x01, 0x41, 0x93, 0x81, 0x41, 0x92, 0x49, 0x93, 0x03, 0x49, 0xB3, 0x02, 0x49, 0x92, 0x03, 0x51, 0xB2, 0x80, 0x51, 0x92, 0x01, 0x59, 0x91, 0x01, 0x59, 0x70, 0x8D, 0x59, 0x90, 0x69, 0xD1, 0x72, 0x52, 0x8B, 0x35, 0x9B, 0xD8, 0xB4, 0xDC, 0xBD, 0x1D, 0xC5, 0x9F, 0xB5, 0x1D, 0xA5, 0x1C, 0x8C, 0xBA, 0x7C, 0x79, 0x8D, 0x5B, 0x95, 0xFD, 0x01, 0x96, 0x3E, 0x8F, 0x96, 0x5D, 0x85, 0xDC, 0x75, 0x59, 0x64, 0xB7, 0x4C, 0x35, 0x65, 0x18, 0x7E, 0x1C, 0x66, 0x1B, 0x5E, 0x7C, 0x5E, 0xFE, 0x4F, 0x1E, 0x3F, 0x1E, 0x2F, 0x5E, 0x27, 0x7F, 0x1F, 0x9F, 0x17, 0x9F, 0x02, 0x0F, 0x9F, 0x80, 0x07, 0xBF, 0x05, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x05, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x05, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x04, 0x07, 0xDF, 0x81, 0x07, 0xBF, 0x07, 0x9F, 0x02, 0x07, 0xBF, 0x84, 0x07, 0x9E, 0x07, 0x5D, 0x07, 0x3D, 0x07, 0x1D, 0x06, 0xDC, 0x04, 0x06, 0xBC, 0x03, 0x06, 0x9C, 0x80, 0x06, 0x7C, 0x03, 0x06, 0x5C, 0x02, 0x06, 0x3C, 0x83, 0x06, 0x1C, 0x06, 0x3C, 0x06, 0x1C, 0x05, 0xFC, 0x01, 0x05, 0xFD, 0x01, 0x05, 0xDD, 0x03, 0x05, 0xBD, 0x01, 0x05, 0x9D, 0x01, 0x05, 0x9E, 0x80, 0x05, 0x7E, 0x02, 0x05, 0x5E, 0x03, 0x05, 0x3E, 0x80, 0x05, 0x1E, 0x01, 0x05, 0x1F, 0x80, 0x04, 0xFE, 0x01, 0x04, 0xFF, 0x81, 0x04, 0xFE, 0x04, 0xFF, 0x01, 0x04, 0xDE, 0x81, 0x04, 0xDF, 0x04, 0xDE, 0x17, 0x04, 0xDF, 0x82, 0x04, 0xFF, 0x04, 0xBF, 0x04, 0x9F, 0x01, 0x04, 0x7F, 0x88, 0x04, 0x5F, 0x04, 0x3F, 0x04, 0x1F, 0x03, 0xDF, 0x03, 0xBF, + 0x03, 0x7F, 0x03, 0x5F, 0x02, 0xFF, 0x02, 0xDF, 0x01, 0x02, 0x9F, 0x96, 0x02, 0x5F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDE, 0x01, 0x9E, 0x01, 0x9D, 0x09, 0x9D, 0x09, 0x7C, 0x11, 0x5B, 0x19, 0x7B, 0x31, 0xBC, 0x31, 0x7A, 0x28, 0xD6, 0x6A, 0xBC, 0x7B, 0x7C, 0x63, 0x19, 0x63, 0xDA, 0x5C, 0x9B, 0x55, 0xBD, 0x4E, 0x9F, 0x3F, 0x1F, 0x26, 0xFE, 0x17, 0x3F, 0x02, 0x0F, 0x1E, 0x9E, 0x17, 0x5F, 0x17, 0x3F, 0x27, 0x3F, 0x37, 0x1F, 0x57, 0x1F, 0x6E, 0xBF, 0x7D, 0x9C, 0x6B, 0x75, 0x7A, 0x52, 0xAA, 0xB4, 0xC2, 0xB5, 0xCA, 0x74, 0xCA, 0x33, 0xD2, 0x34, 0xCA, 0x13, 0xD2, 0x14, 0xD2, 0x34, 0xD2, 0x35, 0xCA, 0x34, 0xCA, 0x55, 0xC2, 0x76, 0xC2, 0xF8, 0xA2, 0x56, 0x60, 0xF0, 0x59, 0x51, 0x51, 0x72, 0x49, 0x52, 0x41, 0x72, 0x41, 0x51, 0x39, 0x51, 0x39, 0x71, 0x02, 0x39, 0x72, 0x02, 0x31, 0x51, 0x81, 0x39, 0x51, 0x31, 0x30, 0x02, 0x31, 0x50, 0x08, 0x29, 0x30, 0x01, 0x21, 0x31, 0x89, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x09, 0x75, 0x11, 0xD8, 0x12, 0x1A, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x86, 0x09, 0xD8, 0x11, 0xF8, 0x19, 0xD7, 0x11, 0x55, 0x11, 0x13, 0x11, 0x12, 0x18, 0xF1, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x29, 0x31, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x06, 0x21, 0x0F, 0x80, 0x21, + 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x0B, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, + 0x30, 0x01, 0x21, 0x10, 0x89, 0x21, 0x30, 0x21, 0x31, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x76, 0x11, 0xB7, 0x11, 0xD9, 0x09, 0xF9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x86, 0x01, 0xF9, 0x09, 0xF9, 0x11, 0xF8, 0x11, 0xD7, 0x19, 0xB5, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x11, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x11, 0x14, 0x11, 0x13, 0x11, 0x34, 0x11, 0x54, 0x11, 0x74, 0x01, 0x19, 0x94, 0x01, 0x19, 0x74, 0x01, 0x19, 0x95, 0x81, 0x19, 0x74, 0x19, 0x94, 0x06, 0x19, 0x95, 0x80, 0x19, 0xB5, 0x02, 0x19, 0x95, 0x80, 0x19, 0xB5, 0x03, 0x19, 0x95, 0x80, 0x21, 0x95, 0x07, 0x19, 0x95, 0x83, 0x19, 0x94, 0x19, 0xB5, 0x19, 0x95, 0x19, 0x94, 0x05, 0x19, 0x95, 0x01, 0x19, 0xB5, 0x80, 0x19, 0x94, 0x0F, 0x19, 0x95, 0x80, 0x19, 0x75, 0x01, 0x19, 0x95, 0x01, 0x19, 0x75, 0x01, 0x21, 0x95, 0x80, 0x19, 0x75, 0x01, 0x19, 0x95, 0x03, 0x19, 0x75, 0x80, 0x19, 0x95, 0x01, 0x19, 0x75, 0x01, 0x19, 0x95, 0x80, 0x19, 0x75, 0x07, 0x19, 0x95, 0x82, 0x19, 0xB5, 0x19, 0x95, 0x19, 0xB5, 0x02, 0x19, 0x95, 0x80, 0x19, 0xB5, 0x01, 0x19, 0x95, 0x80, 0x21, 0xB5, 0x05, 0x19, 0x95, 0x80, 0x19, 0xB5, 0x02, 0x19, 0x95, 0x03, 0x19, 0xB5, 0x80, 0x19, 0x95, 0x0E, 0x19, 0xB5, 0x07, 0x19, 0x95, 0x02, 0x19, 0x94, 0x01, + 0x19, 0x95, 0x80, 0x19, 0x94, 0x02, 0x19, 0xB5, 0x81, 0x21, 0xD5, 0x21, 0xD6, 0x02, 0x21, 0xF6, 0x86, 0x22, 0x17, 0x21, 0xD6, 0x21, 0xB5, 0x11, 0x54, 0x19, 0x33, 0x19, 0x32, 0x21, 0x32, 0x01, 0x21, 0x11, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x04, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x0C, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x0A, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x86, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, + 0x10, 0x29, 0x10, 0x09, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x89, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x08, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x06, 0x29, 0x30, 0x82, 0x31, 0x30, 0x31, 0x50, 0x31, 0x51, 0x02, 0x29, 0x51, 0x80, 0x31, 0x51, 0x01, 0x31, 0x71, 0x80, 0x31, 0x51, 0x01, 0x31, 0x71, 0x80, 0x31, 0x51, 0x01, 0x31, 0x71, 0x81, 0x39, 0x71, 0x39, 0x91, 0x01, 0x39, 0x71, 0x82, 0x39, 0x92, 0x39, 0x71, 0x39, 0x72, 0x03, 0x41, 0x92, 0x01, 0x41, 0x93, 0x83, + 0x41, 0x92, 0x41, 0x72, 0x49, 0x92, 0x49, 0xB3, 0x02, 0x49, 0xB2, 0x82, 0x49, 0x92, 0x51, 0xB2, 0x51, 0x92, 0x01, 0x51, 0xB2, 0x80, 0x51, 0x91, 0x01, 0x59, 0x91, 0x85, 0x51, 0x50, 0x59, 0x70, 0x61, 0xD1, 0x8B, 0x16, 0xB4, 0x5A, 0xC4, 0xFC, 0x01, 0xD5, 0x9E, 0x89, 0xC5, 0x7D, 0xBD, 0x5D, 0xAD, 0x1B, 0x9C, 0xBA, 0x84, 0x58, 0x84, 0xB9, 0x8D, 0x5B, 0x9D, 0xFE, 0x96, 0x3E, 0x96, 0x5E, 0x01, 0x86, 0x1C, 0x92, 0x75, 0xBA, 0x65, 0x17, 0x5C, 0xD7, 0x65, 0x38, 0x76, 0x1B, 0x6E, 0x3B, 0x66, 0x7C, 0x5E, 0xBD, 0x4E, 0xFE, 0x3F, 0x3E, 0x37, 0x5F, 0x27, 0x5E, 0x1F, 0x5E, 0x17, 0x7E, 0x17, 0x9F, 0x0F, 0x7E, 0x0F, 0xBF, 0x07, 0xBF, 0x0F, 0xDF, 0x04, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x0D, 0x07, 0xDF, 0x04, 0x07, 0xBF, 0x86, 0x07, 0xBE, 0x07, 0x9E, 0x07, 0x7E, 0x07, 0x5D, 0x07, 0x1C, 0x06, 0xFC, 0x06, 0xDC, 0x03, 0x06, 0xBC, 0x03, 0x06, 0x9B, 0x02, 0x06, 0x7B, 0x83, 0x06, 0x5B, 0x06, 0x7B, 0x06, 0x5B, 0x06, 0x3B, 0x02, 0x06, 0x3C, 0x01, 0x06, 0x1C, 0x02, 0x05, 0xFC, 0x82, 0x05, 0xDC, 0x05, 0xBC, 0x05, 0xDD, 0x02, 0x05, 0xBD, 0x02, 0x05, 0x9D, 0x81, 0x05, 0x7D, 0x05, 0x7E, 0x02, 0x05, 0x5E, 0x01, 0x05, 0x3E, 0x02, 0x05, 0x1E, 0x02, 0x04, 0xFE, 0x80, 0x04, 0xFF, 0x02, 0x04, 0xDE, 0x83, 0x04, 0xFF, 0x04, 0xDF, 0x04, 0xDE, 0x04, 0xBE, 0x10, 0x04, 0xBF, 0x80, 0x04, 0x9F, 0x06, 0x04, 0xBF, 0x01, 0x04, 0x9F, 0x80, 0x04, 0x7F, 0x01, 0x04, 0x5F, 0x01, 0x04, 0x3F, 0x85, 0x03, 0xFF, 0x03, 0xBF, 0x03, 0x7F, 0x03, + 0x5F, 0x03, 0x1F, 0x02, 0xDF, 0x01, 0x02, 0xBF, 0x85, 0x02, 0x7F, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDE, 0x01, 0xBE, 0x01, 0x01, 0x9D, 0x8F, 0x09, 0x9C, 0x09, 0x5B, 0x11, 0x3A, 0x29, 0xBC, 0x31, 0x9A, 0x31, 0x37, 0x73, 0x3D, 0x73, 0x7C, 0x63, 0x59, 0x64, 0x1A, 0x54, 0xFB, 0x5E, 0x5F, 0x46, 0xDF, 0x2F, 0x1F, 0x1F, 0x3F, 0x0F, 0x1E, 0x02, 0x0F, 0x3F, 0x8F, 0x17, 0x3F, 0x1F, 0x5F, 0x2F, 0x5F, 0x37, 0x1F, 0x56, 0xFF, 0x76, 0x7F, 0x74, 0xDA, 0x73, 0x14, 0x8A, 0x73, 0xB2, 0xB4, 0xC2, 0xB4, 0xCA, 0x74, 0xCA, 0x34, 0xD2, 0x34, 0xD2, 0x14, 0xDA, 0x35, 0x01, 0xD2, 0x35, 0x8A, 0xCA, 0x35, 0xCA, 0x55, 0xC2, 0x76, 0xBA, 0xB7, 0x91, 0xF4, 0x58, 0xD0, 0x59, 0x52, 0x49, 0x51, 0x49, 0x72, 0x41, 0x51, 0x39, 0x51, 0x01, 0x39, 0x72, 0x03, 0x39, 0x71, 0x01, 0x39, 0x51, 0x82, 0x31, 0x51, 0x31, 0x30, 0x31, 0x50, 0x01, 0x31, 0x30, 0x82, 0x31, 0x50, 0x29, 0x30, 0x29, 0x50, 0x01, 0x29, 0x30, 0x81, 0x29, 0x50, 0x29, 0x30, 0x01, 0x21, 0x31, 0x87, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x95, 0x11, 0xD7, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0xB9, 0x04, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x85, 0x09, 0xF9, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, + 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x05, 0x29, 0x30, 0x80, 0x21, 0x10, 0x04, 0x29, 0x30, 0x84, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x06, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, + 0x0F, 0x01, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x87, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x85, 0x11, 0x32, 0x11, 0x34, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xD9, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x81, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x83, 0x0A, 0x19, 0x11, 0xF8, 0x11, 0xD7, 0x19, 0xB5, 0x01, 0x11, 0x32, 0x82, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x80, 0x11, 0x33, 0x01, 0x11, 0x12, 0x02, 0x11, 0x32, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x80, 0x11, 0x33, 0x01, 0x11, 0x32, 0x85, 0x11, 0x33, 0x11, 0x12, 0x11, 0x13, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x01, 0x11, 0x33, 0x82, 0x11, 0x32, 0x11, 0x13, 0x19, 0x33, 0x01, 0x11, 0x33, 0x80, 0x19, 0x33, 0x01, 0x11, 0x13, 0x80, 0x19, 0x33, 0x01, 0x11, 0x13, 0x80, 0x19, 0x33, 0x02, 0x11, 0x33, 0x01, 0x11, 0x32, 0x81, 0x11, 0x33, 0x19, 0x33, 0x07, 0x11, 0x33, 0x01, 0x11, 0x32, 0x01, 0x11, 0x33, 0x82, 0x11, 0x32, 0x11, 0x53, 0x11, 0x33, 0x01, 0x11, 0x32, 0x02, 0x11, 0x33, 0x80, 0x19, 0x53, 0x01, 0x11, 0x33, 0x80, 0x19, 0x53, 0x04, 0x11, 0x33, 0x02, 0x19, 0x33, 0x01, + 0x11, 0x13, 0x02, 0x19, 0x33, 0x83, 0x11, 0x33, 0x11, 0x13, 0x19, 0x33, 0x11, 0x33, 0x06, 0x19, 0x33, 0x82, 0x11, 0x13, 0x19, 0x33, 0x11, 0x13, 0x07, 0x11, 0x33, 0x81, 0x11, 0x12, 0x11, 0x32, 0x02, 0x11, 0x33, 0x80, 0x19, 0x33, 0x02, 0x11, 0x33, 0x80, 0x11, 0x32, 0x01, 0x11, 0x33, 0x80, 0x11, 0x32, 0x04, 0x11, 0x33, 0x80, 0x11, 0x53, 0x03, 0x11, 0x33, 0x85, 0x19, 0x33, 0x11, 0x33, 0x11, 0x32, 0x11, 0x33, 0x11, 0x12, 0x11, 0x32, 0x0A, 0x11, 0x33, 0x81, 0x19, 0x33, 0x11, 0x13, 0x02, 0x11, 0x12, 0x01, 0x11, 0x32, 0x01, 0x11, 0x33, 0x03, 0x11, 0x32, 0x80, 0x08, 0xF2, 0x01, 0x09, 0x12, 0x89, 0x11, 0x33, 0x19, 0x95, 0x22, 0x17, 0x2A, 0x37, 0x21, 0xF6, 0x19, 0x95, 0x19, 0x54, 0x19, 0x53, 0x19, 0x32, 0x21, 0x32, 0x01, 0x21, 0x11, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x07, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x06, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x04, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, + 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x03, 0x21, 0x31, 0x84, 0x19, 0x31, 0x19, 0x51, 0x19, 0x31, 0x19, 0x52, 0x19, 0x51, 0x01, 0x21, 0x31, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, + 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x09, 0x29, 0x30, 0x01, 0x31, 0x30, 0x02, 0x31, 0x51, 0x84, 0x29, 0x51, 0x31, 0x71, 0x29, 0x51, 0x31, 0x71, 0x31, 0x51, 0x02, 0x31, 0x71, 0x82, 0x31, 0x51, 0x39, 0x71, 0x31, 0x71, 0x04, 0x39, 0x71, 0x82, 0x41, 0x72, 0x41, 0x92, 0x41, 0x72, 0x02, 0x41, 0x92, 0x80, 0x41, 0x72, 0x01, 0x49, 0x93, 0x80, 0x49, 0xB3, 0x03, 0x49, 0x92, 0x01, 0x51, 0x92, 0x83, 0x51, 0x91, 0x51, 0xB2, 0x51, 0x91, 0x59, 0x91, 0x01, 0x59, 0x90, 0x92, 0x69, 0xF2, 0x8A, 0xF5, 0xB4, 0x3A, 0xCD, 0x1D, 0xD5, 0x7E, 0xCD, 0x5D, 0xC5, 0x7D, 0xAC, 0xFB, 0x9C, 0xB9, 0x8C, 0x78, 0x84, 0x37, 0x95, 0x1A, 0x9D, 0x9C, 0x95, 0xDC, 0x96, 0x1D, 0x8E, 0x3D, 0x8E, 0x5E, 0x7E, 0x1C, 0x6D, 0xDB, 0x01, 0x7E, 0x5C, 0x8F, 0x65, 0x78, 0x5D, 0x99, 0x76, 0x5C, 0x6E, 0x9C, 0x66, 0x7C, 0x56, 0x9D, 0x56, 0xFE, 0x47, 0x3E, 0x37, 0x3E, 0x27, 0x5E, 0x1F, 0x7E, 0x17, 0x7E, 0x0F, 0x7E, 0x0F, 0x9E, 0x0F, 0xBF, 0x0F, 0xDF, 0x05, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x09, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x03, 0x07, 0xDF, 0x03, 0x07, 0xBF, 0x85, 0x07, 0x5D, 0x07, 0x3D, 0x07, 0x1C, 0x06, 0xFC, 0x06, 0xDC, 0x06, 0xBB, 0x01, 0x06, 0xBC, 0x01, 0x06, 0xBB, 0x03, 0x06, 0x9B, 0x01, 0x06, 0x7B, 0x04, 0x06, 0x5B, 0x01, 0x06, 0x3B, 0x82, 0x06, 0x1B, 0x06, 0x3C, 0x06, + 0x1C, 0x01, 0x05, 0xFC, 0x01, 0x05, 0xDC, 0x82, 0x05, 0xDD, 0x05, 0xBC, 0x05, 0x9C, 0x03, 0x05, 0x9D, 0x80, 0x05, 0x7D, 0x01, 0x05, 0x5D, 0x80, 0x05, 0x5E, 0x04, 0x05, 0x3E, 0x02, 0x04, 0xFE, 0x05, 0x04, 0xDE, 0x80, 0x04, 0xBE, 0x03, 0x04, 0xBF, 0x09, 0x04, 0x9F, 0x80, 0x04, 0xBF, 0x02, 0x04, 0x9F, 0x01, 0x04, 0x7F, 0x81, 0x04, 0x9F, 0x04, 0x7F, 0x02, 0x04, 0x9F, 0x04, 0x04, 0x7F, 0x80, 0x04, 0x5F, 0x01, 0x04, 0x3F, 0x8B, 0x04, 0x1F, 0x03, 0xFF, 0x03, 0xDF, 0x03, 0x9F, 0x03, 0x5F, 0x03, 0x3F, 0x03, 0x1F, 0x02, 0xDF, 0x02, 0xBF, 0x02, 0x9F, 0x02, 0x5F, 0x02, 0x1F, 0x01, 0x01, 0xFF, 0x80, 0x01, 0xDE, 0x01, 0x01, 0xBE, 0x91, 0x09, 0xBD, 0x09, 0x9D, 0x11, 0x7C, 0x11, 0x3B, 0x29, 0xBC, 0x31, 0x9A, 0x4A, 0x19, 0x7B, 0x7D, 0x63, 0x19, 0x5B, 0x99, 0x4C, 0x19, 0x55, 0x7D, 0x56, 0x7F, 0x3E, 0xDF, 0x27, 0x1F, 0x17, 0x3E, 0x17, 0x7F, 0x0F, 0x3E, 0x01, 0x0F, 0x5F, 0x8D, 0x17, 0x5F, 0x1F, 0x3F, 0x2F, 0x3F, 0x3E, 0xFE, 0x5E, 0xFF, 0x7E, 0x5E, 0x7C, 0x99, 0x6A, 0x92, 0x92, 0x93, 0xB2, 0x94, 0xC2, 0x74, 0xCA, 0x54, 0xD2, 0x54, 0xD2, 0x34, 0x01, 0xD2, 0x14, 0x88, 0xD1, 0xF4, 0xD2, 0x35, 0xCA, 0x34, 0xCA, 0x55, 0xC2, 0x76, 0xC2, 0xF8, 0x81, 0x92, 0x58, 0xF0, 0x59, 0x52, 0x01, 0x49, 0x72, 0x80, 0x41, 0x72, 0x04, 0x39, 0x72, 0x04, 0x31, 0x51, 0x80, 0x31, 0x50, 0x02, 0x31, 0x30, 0x05, 0x29, 0x30, 0x86, 0x29, 0x51, 0x21, 0x52, 0x19, 0x32, 0x11, 0x53, 0x11, 0x75, 0x19, 0xF8, 0x11, 0xF8, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xBA, 0x02, 0x01, 0xDA, + 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x83, 0x09, 0xF9, 0x11, 0xF9, 0x11, 0x96, 0x11, 0x34, 0x01, 0x11, 0x12, 0x83, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x86, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x05, 0x21, 0x0F, + 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x07, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x91, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x50, 0x19, 0x30, 0x19, 0x51, 0x19, 0x52, 0x19, 0x53, 0x11, 0x34, 0x11, 0x55, 0x11, 0xB7, 0x11, 0xF9, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x88, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0xD8, 0x09, 0xD8, 0x11, 0xF8, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x31, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x03, 0x19, 0x12, 0x01, 0x19, 0x11, 0x05, 0x19, 0x12, 0x01, 0x19, 0x32, 0x83, 0x19, 0x12, 0x11, 0x12, 0x19, 0x12, 0x19, 0x32, 0x10, 0x19, 0x12, 0x02, 0x19, 0x32, 0x01, 0x19, 0x12, 0x03, 0x19, 0x32, 0x01, 0x11, 0x12, 0x83, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x11, 0x32, 0x05, 0x19, 0x32, 0x80, 0x11, 0x32, 0x02, 0x19, 0x32, 0x81, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x32, 0x04, 0x19, 0x12, 0x80, 0x19, 0x32, + 0x02, 0x19, 0x12, 0x82, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x12, 0x82, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x05, 0x19, 0x12, 0x84, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x11, 0x12, 0x19, 0x12, 0x02, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x32, 0x03, 0x19, 0x12, 0x01, 0x19, 0x32, 0x82, 0x11, 0x12, 0x19, 0x32, 0x11, 0x32, 0x01, 0x19, 0x32, 0x81, 0x11, 0x12, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x11, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x12, 0x80, 0x19, 0x32, 0x01, 0x11, 0x12, 0x80, 0x19, 0x12, 0x03, 0x11, 0x12, 0x85, 0x19, 0x32, 0x11, 0x12, 0x19, 0x12, 0x11, 0x12, 0x19, 0x12, 0x19, 0x32, 0x01, 0x11, 0x12, 0x80, 0x19, 0x32, 0x02, 0x19, 0x12, 0x81, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x12, 0x01, 0x11, 0x11, 0x80, 0x19, 0x32, 0x04, 0x11, 0x12, 0x87, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF6, 0x22, 0x17, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x19, 0x53, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x07, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, + 0x21, 0x10, 0x29, 0x10, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x86, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x03, 0x19, 0x31, 0x01, 0x19, 0x32, 0x03, 0x19, 0x52, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x02, 0x29, 0x30, 0x88, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, + 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x03, 0x29, 0x10, 0x05, 0x29, 0x30, 0x80, 0x29, 0x50, 0x05, 0x29, 0x30, 0x01, 0x31, 0x51, 0x80, 0x29, 0x30, 0x02, 0x31, 0x51, 0x01, 0x29, 0x51, 0x01, 0x31, 0x71, 0x01, 0x31, 0x51, 0x01, 0x31, 0x71, 0x81, 0x39, 0x71, 0x31, 0x71, 0x04, 0x39, 0x71, 0x80, 0x41, 0x71, 0x01, 0x41, 0x92, 0x01, 0x41, 0x72, 0x80, 0x41, 0x92, 0x01, 0x49, 0x92, 0x01, 0x49, 0x93, 0x82, 0x49, 0x92, 0x51, 0xB2, 0x49, 0x92, 0x02, 0x51, 0x92, 0x87, 0x59, 0xB2, 0x59, 0x91, 0x59, 0x70, 0x51, 0x50, 0x59, 0x70, 0x7A, 0x53, 0xAB, 0xD9, 0xCC, 0xDC, 0x01, 0xD5, 0x5D, 0x90, 0xCD, 0x7D, 0xB4, 0xFA, 0x9C, 0x98, 0x84, 0x16, 0x74, 0x16, 0x84, 0xD8, 0x8D, 0x7B, 0x8D, 0xDC, 0x8E, 0x1D, 0x86, 0x1C, 0x7E, 0x3C, 0x76, 0x3C, 0x76, 0x5D, 0x66, 0x1C, 0x66, 0x1B, 0x66, 0x5C, 0x66, 0x5B, 0x01, 0x5E, 0x1A, 0x8A, 0x66, 0x7B, 0x5E, 0x9C, 0x56, 0xDD, 0x4E, 0xDD, 0x47, 0x1E, 0x37, 0x1E, 0x2F, 0x3E, 0x27, 0x7E, 0x1F, 0x9F, 0x17, 0x9F, 0x0F, 0x9F, 0x01, 0x0F, 0xBF, 0x05, 0x07, 0xDF, 0x09, 0x07, 0xFF, 0x11, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x8A, 0x0F, 0xBF, 0x07, 0x5D, 0x07, 0x3C, 0x06, 0xFC, 0x06, 0xDC, 0x06, 0xDB, + 0x06, 0xBB, 0x06, 0xDC, 0x06, 0xBB, 0x06, 0x9B, 0x06, 0xBB, 0x01, 0x06, 0x9B, 0x01, 0x06, 0x9A, 0x03, 0x06, 0x7A, 0x02, 0x06, 0x5B, 0x80, 0x06, 0x3B, 0x03, 0x06, 0x1B, 0x01, 0x05, 0xFB, 0x02, 0x05, 0xDC, 0x02, 0x05, 0xBC, 0x80, 0x05, 0x9C, 0x01, 0x05, 0x9D, 0x01, 0x05, 0x7D, 0x02, 0x05, 0x5D, 0x80, 0x05, 0x3E, 0x01, 0x05, 0x1D, 0x80, 0x05, 0x1E, 0x02, 0x04, 0xFE, 0x04, 0x04, 0xDE, 0x01, 0x04, 0xBE, 0x80, 0x04, 0xBF, 0x07, 0x04, 0x9F, 0x01, 0x04, 0x7F, 0x80, 0x04, 0x9F, 0x05, 0x04, 0x7F, 0x01, 0x04, 0x5F, 0x03, 0x04, 0x7F, 0x02, 0x04, 0x5F, 0x80, 0x04, 0x7F, 0x01, 0x04, 0x5F, 0x01, 0x04, 0x3F, 0x80, 0x04, 0x1F, 0x01, 0x03, 0xFF, 0x85, 0x03, 0xDF, 0x03, 0xBF, 0x03, 0x7F, 0x03, 0x5F, 0x03, 0x1F, 0x02, 0xFF, 0x01, 0x02, 0xBF, 0x85, 0x02, 0x5F, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xDE, 0x01, 0x01, 0xBE, 0x8F, 0x09, 0xBE, 0x09, 0x9D, 0x11, 0x7C, 0x11, 0x3A, 0x29, 0xBB, 0x31, 0x78, 0x5A, 0x9B, 0x83, 0xFE, 0x53, 0x19, 0x5C, 0x1B, 0x4C, 0x9B, 0x5E, 0x1F, 0x4E, 0xDF, 0x37, 0x1F, 0x1F, 0x3F, 0x17, 0x3E, 0x01, 0x0F, 0x5F, 0x01, 0x0F, 0x7F, 0x8E, 0x17, 0x5F, 0x1F, 0x5F, 0x2F, 0x1F, 0x46, 0xFF, 0x66, 0xDF, 0x86, 0x1E, 0x73, 0xF6, 0x72, 0x93, 0x9A, 0x94, 0xBA, 0x94, 0xCA, 0x74, 0xCA, 0x54, 0xD2, 0x34, 0xD2, 0x14, 0xD1, 0xF4, 0x02, 0xD2, 0x14, 0x01, 0xCA, 0x35, 0x85, 0xC2, 0x56, 0xC2, 0xF8, 0x71, 0x31, 0x61, 0x11, 0x51, 0x52, 0x49, 0x72, 0x01, 0x41, 0x72, 0x03, 0x39, 0x72, 0x81, 0x39, 0x71, 0x39, 0x72, 0x02, 0x31, + 0x51, 0x01, 0x31, 0x30, 0x80, 0x31, 0x51, 0x01, 0x31, 0x30, 0x80, 0x29, 0x30, 0x02, 0x29, 0x50, 0x87, 0x29, 0x31, 0x21, 0x51, 0x21, 0x52, 0x19, 0x53, 0x11, 0x54, 0x11, 0xB6, 0x12, 0x19, 0x11, 0xF9, 0x01, 0x01, 0xB9, 0x80, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x02, 0x01, 0xD9, 0x85, 0x09, 0xF9, 0x11, 0xF9, 0x11, 0xB7, 0x11, 0x34, 0x11, 0x13, 0x19, 0x32, 0x01, 0x19, 0x11, 0x03, 0x21, 0x30, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x08, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x08, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, + 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x51, 0x87, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xF9, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x83, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x01, 0x09, 0xD8, 0x88, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x32, 0x11, 0x12, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x19, 0x11, 0x19, 0x31, 0x09, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x84, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x18, 0xF1, 0x01, 0x19, 0x11, 0x01, 0x18, 0xF1, 0x04, 0x19, 0x11, 0x80, 0x19, 0x32, 0x03, 0x19, 0x11, 0x83, 0x19, 0x31, 0x19, 0x11, 0x19, + 0x32, 0x19, 0x11, 0x01, 0x19, 0x31, 0x03, 0x19, 0x11, 0x80, 0x19, 0x32, 0x02, 0x19, 0x31, 0x01, 0x19, 0x11, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x08, 0x19, 0x11, 0x82, 0x19, 0x12, 0x19, 0x11, 0x19, 0x32, 0x09, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x03, 0x19, 0x11, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x82, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x05, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x31, 0x03, 0x19, 0x11, 0x80, 0x19, 0x31, 0x03, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x02, 0x19, 0x11, 0x80, 0x19, 0x32, 0x02, 0x19, 0x31, 0x01, 0x19, 0x11, 0x03, 0x19, 0x31, 0x91, 0x19, 0x32, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0x52, 0x19, 0x53, 0x19, 0x94, 0x21, 0xD6, 0x22, 0x17, 0x21, 0xF6, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x21, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, + 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x04, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x06, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x82, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x02, 0x11, 0x53, 0x01, 0x11, 0x33, 0x02, 0x11, 0x32, 0x83, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x29, 0x30, 0x83, + 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x07, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x0B, 0x29, 0x30, 0x02, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x31, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x31, 0x51, 0x80, 0x29, 0x30, 0x01, 0x31, 0x51, 0x01, 0x29, 0x51, 0x82, 0x31, 0x71, 0x31, 0x51, 0x31, 0x71, 0x01, 0x31, 0x72, 0x81, 0x31, 0x51, 0x31, 0x71, 0x02, 0x39, 0x71, 0x80, 0x39, 0x91, 0x01, 0x41, 0x92, 0x80, 0x41, 0x71, 0x03, 0x41, 0x92, 0x01, 0x49, 0xB2, 0x80, 0x49, 0xB3, 0x01, 0x49, 0x93, 0x86, 0x49, 0x92, 0x49, 0x72, 0x49, 0x71, 0x51, 0x92, 0x51, 0x91, 0x59, 0xB2, 0x59, 0x91, 0x01, 0x59, 0x70, 0xA5, 0x69, 0xB1, 0x8A, 0xB4, 0xB3, 0xF9, 0xCC, 0xDC, 0xD4, 0xFD, 0xCC, 0xFC, 0xCD, 0x1C, 0xB4, 0xDA, 0xA4, 0x98, 0x94, 0x98, 0x8C, 0xD8, 0x8D, 0x7A, 0x8E, 0x1C, 0x86, 0x5D, 0x76, 0x5C, 0x66, 0x5C, 0x5E, 0x5C, 0x5E, 0x7C, 0x5E, 0xBD, 0x56, 0xDD, 0x56, 0xBD, 0x56, 0x9D, 0x4E, 0x7C, 0x46, 0x3B, 0x46, 0x1A, 0x46, 0x5B, 0x4E, 0x7B, 0x46, 0xBC, 0x46, 0xFD, 0x47, 0x3E, 0x3F, 0x3E, 0x2F, 0x3E, 0x27, 0x5E, + 0x1F, 0x9F, 0x17, 0x9E, 0x0F, 0x9E, 0x0F, 0x9F, 0x0F, 0xBF, 0x05, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x06, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x07, 0x07, 0xDF, 0x86, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0x9E, 0x07, 0x5D, 0x07, 0x1C, 0x06, 0xFC, 0x02, 0x06, 0xDB, 0x80, 0x06, 0xDC, 0x01, 0x06, 0xBB, 0x80, 0x06, 0xBA, 0x04, 0x06, 0x9A, 0x80, 0x06, 0x7A, 0x03, 0x06, 0x5A, 0x80, 0x06, 0x3A, 0x02, 0x06, 0x3B, 0x01, 0x06, 0x1B, 0x01, 0x05, 0xFB, 0x01, 0x05, 0xDB, 0x01, 0x05, 0xDC, 0x02, 0x05, 0xBC, 0x80, 0x05, 0x9C, 0x01, 0x05, 0x9D, 0x80, 0x05, 0x7D, 0x02, 0x05, 0x5D, 0x01, 0x05, 0x3D, 0x80, 0x05, 0x1D, 0x01, 0x05, 0x1E, 0x02, 0x04, 0xFE, 0x03, 0x04, 0xDE, 0x01, 0x04, 0x9E, 0x80, 0x04, 0x9F, 0x03, 0x04, 0x7E, 0x81, 0x04, 0x7F, 0x04, 0x9F, 0x02, 0x04, 0x7F, 0x0C, 0x04, 0x5F, 0x80, 0x04, 0x3F, 0x04, 0x04, 0x5F, 0x01, 0x04, 0x3F, 0x01, 0x04, 0x1F, 0x01, 0x03, 0xFF, 0x8A, 0x03, 0xBF, 0x03, 0x9F, 0x03, 0x7F, 0x03, 0x5F, 0x03, 0x1F, 0x02, 0xFF, 0x02, 0xDF, 0x02, 0xBF, 0x02, 0x7F, 0x02, 0x5F, 0x02, 0x1F, 0x01, 0x01, 0xFF, 0x03, 0x01, 0xBE, 0x8E, 0x09, 0xBE, 0x09, 0x9D, 0x11, 0x9C, 0x19, 0x7A, 0x29, 0x9A, 0x29, 0x98, 0x73, 0x9E, 0x6B, 0x9C, 0x53, 0x7A, 0x5C, 0x5B, 0x4C, 0xDB, 0x5E, 0x7F, 0x3E, 0xDF, 0x27, 0x1F, 0x17, 0x3F, 0x01, 0x0F, 0x5F, 0x8F, 0x07, 0x7F, 0x0F, 0x9F, 0x17, 0x7F, 0x1F, 0x7F, 0x27, 0x3F, 0x37, 0x1F, 0x4E, 0xDE, 0x76, 0xBF, + 0x7D, 0x9C, 0x73, 0x95, 0x7A, 0x72, 0xA2, 0x94, 0xBA, 0x94, 0xCA, 0x54, 0xCA, 0x34, 0xD2, 0x34, 0x01, 0xD2, 0x14, 0x80, 0xD1, 0xF4, 0x01, 0xD2, 0x14, 0x89, 0xCA, 0x14, 0xC2, 0x35, 0xC2, 0x96, 0xBA, 0xD7, 0x68, 0xF0, 0x59, 0x31, 0x51, 0x51, 0x49, 0x72, 0x41, 0x51, 0x41, 0x72, 0x03, 0x39, 0x72, 0x80, 0x39, 0x71, 0x04, 0x31, 0x51, 0x82, 0x31, 0x31, 0x31, 0x30, 0x31, 0x50, 0x01, 0x29, 0x50, 0x8C, 0x29, 0x30, 0x29, 0x50, 0x29, 0x51, 0x21, 0x31, 0x21, 0x52, 0x19, 0x53, 0x11, 0x95, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x98, 0x09, 0xB9, 0x01, 0xB9, 0x09, 0xFA, 0x01, 0x01, 0xDA, 0x82, 0x01, 0xBA, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x84, 0x12, 0x19, 0x11, 0xB7, 0x11, 0x55, 0x19, 0x54, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x03, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x08, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x04, 0x21, 0x30, 0x03, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, + 0x0F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x89, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x8A, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x07, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x04, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x51, 0x01, 0x19, 0x31, 0x87, 0x11, 0x12, 0x11, 0x34, 0x11, 0x55, 0x11, 0x97, 0x11, 0xD8, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xD9, 0x86, 0x09, 0xF8, 0x09, 0xD8, 0x11, 0xD7, 0x11, 0x95, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, + 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x11, 0x02, 0x21, 0x31, 0x02, 0x21, 0x11, 0x80, 0x19, 0x10, 0x03, 0x21, 0x11, 0x80, 0x21, 0x10, 0x06, 0x21, 0x11, 0x80, 0x19, 0x11, 0x0C, 0x21, 0x11, 0x84, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x21, 0x11, 0x19, 0x11, 0x02, 0x19, 0x10, 0x81, 0x19, 0x11, 0x21, 0x31, 0x01, 0x19, 0x11, 0x82, 0x19, 0x10, 0x21, 0x31, 0x19, 0x10, 0x02, 0x19, 0x31, 0x82, 0x19, 0x10, 0x21, 0x31, 0x21, 0x11, 0x01, 0x19, 0x11, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x02, 0x19, 0x11, 0x80, 0x21, 0x31, 0x03, 0x21, 0x11, 0x81, 0x19, 0x10, 0x21, 0x31, 0x04, 0x21, 0x11, 0x82, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x02, 0x21, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x11, 0x83, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x11, 0x03, 0x21, 0x11, 0x84, 0x19, 0x11, 0x21, 0x11, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x11, 0x8A, 0x19, 0x10, 0x21, 0x11, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x19, 0x11, 0x19, 0x10, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x21, 0x11, 0x84, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x84, 0x19, 0x11, 0x21, 0x11, 0x19, 0x11, 0x21, + 0x31, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x10, 0x07, 0x19, 0x31, 0x8B, 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x21, 0xF6, 0x22, 0x37, 0x22, 0x17, 0x19, 0x95, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x82, 0x11, 0x32, 0x11, 0x73, 0x11, 0x74, 0x01, + 0x19, 0xB5, 0x88, 0x11, 0x94, 0x11, 0x74, 0x09, 0x54, 0x11, 0x54, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x87, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x88, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x09, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x50, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x09, 0x29, 0x30, 0x87, 0x29, 0x50, 0x29, 0x30, 0x29, 0x50, 0x31, 0x50, 0x31, 0x51, 0x29, 0x30, 0x31, 0x30, 0x31, 0x31, 0x02, 0x31, 0x51, 0x02, 0x31, 0x71, 0x83, 0x31, 0x51, 0x31, 0x71, 0x31, + 0x51, 0x39, 0x71, 0x02, 0x39, 0x92, 0x82, 0x41, 0x92, 0x41, 0x91, 0x41, 0x92, 0x01, 0x41, 0x91, 0x89, 0x41, 0x92, 0x41, 0xB2, 0x49, 0xB2, 0x49, 0xD2, 0x49, 0xB2, 0x49, 0x92, 0x49, 0x72, 0x49, 0x92, 0x51, 0x92, 0x51, 0x72, 0x01, 0x51, 0x91, 0x95, 0x51, 0x70, 0x51, 0x50, 0x51, 0x2F, 0x69, 0xB1, 0x92, 0xD5, 0xC4, 0x3A, 0xD4, 0xBC, 0xD4, 0xDC, 0xD4, 0xFC, 0xCC, 0xFC, 0xC4, 0xDB, 0xA4, 0x78, 0x94, 0x77, 0x84, 0x97, 0x85, 0x19, 0x85, 0xBB, 0x86, 0x5C, 0x6E, 0x7C, 0x5E, 0x7C, 0x46, 0x5B, 0x46, 0x9C, 0x3E, 0xBC, 0x01, 0x3F, 0x1D, 0x01, 0x36, 0xDD, 0x80, 0x36, 0xBC, 0x01, 0x3E, 0xBC, 0x8A, 0x46, 0xDD, 0x46, 0xFD, 0x3F, 0x1D, 0x3F, 0x3D, 0x37, 0x5E, 0x2F, 0x5E, 0x27, 0x5E, 0x1F, 0x7E, 0x17, 0x7E, 0x17, 0x9E, 0x0F, 0xBF, 0x01, 0x07, 0xBF, 0x03, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x07, 0x07, 0xFF, 0x81, 0x07, 0xDF, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x0E, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x86, 0x07, 0xDF, 0x0F, 0xDF, 0x0F, 0xBE, 0x0F, 0x9E, 0x07, 0x5C, 0x07, 0x1B, 0x06, 0xFB, 0x01, 0x06, 0xDB, 0x82, 0x06, 0xFB, 0x06, 0xDB, 0x06, 0xBB, 0x03, 0x06, 0xBA, 0x03, 0x06, 0x9A, 0x01, 0x06, 0x7A, 0x02, 0x06, 0x5A, 0x02, 0x06, 0x3A, 0x02, 0x06, 0x1A, 0x02, 0x05, 0xFB, 0x02, 0x05, 0xDB, 0x80, 0x05, 0xBB, 0x01, 0x05, 0xBC, 0x80, 0x05, 0x9C, 0x01, 0x05, 0x7C, 0x80, 0x05, 0x7D, 0x01, 0x05, 0x5D, 0x01, 0x05, 0x3D, 0x01, 0x05, 0x1D, 0x02, 0x04, 0xFD, 0x80, 0x04, 0xFE, 0x01, 0x04, 0xDE, 0x01, 0x04, 0xBE, 0x02, 0x04, 0x9E, + 0x01, 0x04, 0x7E, 0x82, 0x04, 0x9F, 0x04, 0x7E, 0x04, 0x7F, 0x05, 0x04, 0x5F, 0x0A, 0x04, 0x3F, 0x80, 0x04, 0x1F, 0x04, 0x04, 0x3F, 0x85, 0x04, 0x1F, 0x04, 0x3F, 0x04, 0x1F, 0x03, 0xFF, 0x03, 0xDF, 0x03, 0xBF, 0x01, 0x03, 0x9F, 0x01, 0x03, 0x5F, 0x88, 0x03, 0x3F, 0x02, 0xFF, 0x02, 0xDF, 0x02, 0xBF, 0x02, 0x9F, 0x02, 0x5F, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x02, 0x01, 0xBE, 0x91, 0x09, 0xBE, 0x09, 0x9D, 0x11, 0x9C, 0x21, 0xBB, 0x29, 0xBA, 0x42, 0x1A, 0x7B, 0xFF, 0x5B, 0x5B, 0x53, 0xBA, 0x4C, 0x5B, 0x55, 0xBE, 0x4E, 0xDF, 0x37, 0x1F, 0x1F, 0x3F, 0x17, 0x5F, 0x0F, 0x7F, 0x0F, 0x9F, 0x07, 0x7F, 0x01, 0x0F, 0x7F, 0x98, 0x1F, 0x7F, 0x2F, 0x5F, 0x3F, 0x1F, 0x56, 0xBE, 0x7E, 0xBF, 0x85, 0x3B, 0x6A, 0xF3, 0x8A, 0xB3, 0xAA, 0x94, 0xC2, 0x74, 0xCA, 0x54, 0xD2, 0x34, 0xD2, 0x13, 0xD2, 0x14, 0xD1, 0xF4, 0xD2, 0x14, 0xD1, 0xF4, 0xD2, 0x35, 0xCA, 0x14, 0xC2, 0x55, 0xC2, 0xB7, 0xA2, 0x76, 0x60, 0xF0, 0x59, 0x51, 0x49, 0x51, 0x02, 0x41, 0x72, 0x83, 0x39, 0x71, 0x39, 0x72, 0x39, 0x51, 0x39, 0x71, 0x05, 0x31, 0x51, 0x82, 0x31, 0x31, 0x31, 0x30, 0x29, 0x30, 0x02, 0x29, 0x50, 0x85, 0x21, 0x51, 0x21, 0x52, 0x21, 0x53, 0x11, 0x54, 0x11, 0xB6, 0x11, 0xF8, 0x01, 0x09, 0xB8, 0x01, 0x09, 0xD9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x8A, 0x01, 0xDA, 0x01, 0xD9, 0x09, 0xF9, 0x1A, 0x19, 0x11, 0xD7, 0x09, 0x54, 0x11, 0x54, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, + 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x07, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x8F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, + 0x21, 0x30, 0x05, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x19, 0x31, 0x87, 0x19, 0x32, 0x11, 0x33, 0x11, 0x75, 0x11, 0x97, 0x11, 0xD8, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xD9, 0x88, 0x01, 0xD8, 0x09, 0xF8, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x32, 0x10, 0xF1, 0x19, 0x31, 0x21, 0x51, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x1D, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x0C, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x11, 0x07, 0x21, 0x10, 0x80, 0x20, 0xF0, 0x0D, 0x21, 0x10, 0x86, 0x21, 0x11, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x08, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x31, 0x01, + 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x31, 0x02, 0x21, 0x51, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x84, 0x11, 0x12, 0x11, 0x33, 0x19, 0x94, 0x21, 0xF6, 0x22, 0x17, 0x01, 0x19, 0xD6, 0x81, 0x11, 0x74, 0x19, 0x53, 0x01, 0x19, 0x32, 0x84, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x05, 0x29, 0x10, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0xB5, 0x19, 0xD6, 0x11, 0xD6, 0x01, 0x22, 0x17, 0x01, 0x19, 0xF7, 0x85, 0x22, 0x17, 0x19, 0xF6, 0x21, 0xD6, 0x19, 0x74, 0x19, 0x32, 0x19, 0x11, + 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x29, 0x10, 0x80, 0x28, 0xEF, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x30, 0x01, 0x29, 0x50, 0x03, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x31, 0x30, 0x01, 0x31, 0x50, 0x01, 0x31, 0x71, 0x01, 0x31, 0x51, 0x81, 0x31, 0x50, 0x31, 0x51, 0x01, 0x31, 0x71, 0x04, 0x39, 0x72, 0x80, 0x41, 0x92, 0x03, 0x41, 0x91, 0x81, 0x41, 0xB2, 0x49, 0xB2, 0x01, 0x41, 0x91, 0x80, 0x41, 0x71, 0x01, 0x49, 0x91, 0x80, 0x51, 0xB2, 0x01, 0x51, 0x92, 0x87, 0x51, 0x71, + 0x51, 0x50, 0x51, 0x2F, 0x59, 0x4F, 0x72, 0x12, 0xAB, 0x97, 0xCC, 0x9B, 0xD4, 0xDC, 0x01, 0xCC, 0x9B, 0x93, 0xCC, 0xDB, 0xC4, 0x9A, 0xB4, 0x99, 0xA4, 0x78, 0x8C, 0x77, 0x84, 0xD8, 0x85, 0xBA, 0x86, 0x5C, 0x76, 0x9D, 0x66, 0x9C, 0x4E, 0x9C, 0x3E, 0xDC, 0x37, 0x1D, 0x2F, 0x5E, 0x2F, 0x7E, 0x27, 0x7E, 0x1F, 0x5D, 0x27, 0x5D, 0x27, 0x5E, 0x2F, 0x5E, 0x02, 0x37, 0x5E, 0x81, 0x37, 0x7E, 0x2F, 0x7E, 0x01, 0x27, 0x9E, 0x80, 0x1F, 0x9F, 0x01, 0x17, 0x9E, 0x82, 0x0F, 0x9E, 0x0F, 0xBF, 0x07, 0xBF, 0x04, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x05, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x08, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x85, 0x0F, 0xBF, 0x0F, 0xBE, 0x17, 0xDE, 0x0F, 0x9D, 0x07, 0x3C, 0x06, 0xFB, 0x01, 0x06, 0xDA, 0x01, 0x06, 0xBA, 0x85, 0x06, 0xDA, 0x06, 0xBA, 0x06, 0xDA, 0x06, 0xBA, 0x06, 0xDA, 0x06, 0xB9, 0x03, 0x06, 0x99, 0x01, 0x06, 0x79, 0x85, 0x06, 0x7A, 0x06, 0x5A, 0x06, 0x59, 0x06, 0x5A, 0x06, 0x3A, 0x06, 0x19, 0x01, 0x06, 0x1A, 0x02, 0x05, 0xFA, 0x82, 0x05, 0xDA, 0x05, 0xFB, 0x05, 0xDB, 0x03, 0x05, 0xBB, 0x80, 0x05, 0x9B, 0x02, 0x05, 0x7C, 0x01, 0x05, 0x5C, 0x80, 0x05, 0x5D, 0x01, 0x05, 0x3D, 0x01, 0x05, 0x1D, 0x01, 0x04, 0xFD, 0x80, 0x04, 0xFE, 0x02, 0x04, 0xDE, 0x80, 0x04, 0xBE, 0x03, 0x04, 0x9E, 0x80, 0x04, 0x9F, 0x02, 0x04, 0x7E, 0x02, 0x04, 0x5F, 0x04, 0x04, 0x3F, 0x01, 0x04, 0x1F, 0x81, 0x04, 0x3F, 0x04, 0x1F, 0x03, 0x04, 0x3F, 0x01, 0x04, 0x1F, 0x80, 0x04, + 0x3F, 0x04, 0x04, 0x1F, 0x02, 0x03, 0xFF, 0x85, 0x03, 0xDF, 0x03, 0xBF, 0x03, 0x9F, 0x03, 0x7F, 0x03, 0x5F, 0x03, 0x3F, 0x01, 0x03, 0x1F, 0x01, 0x02, 0xDF, 0x82, 0x02, 0xBF, 0x02, 0x5F, 0x02, 0x3F, 0x01, 0x01, 0xFF, 0x02, 0x01, 0xDF, 0x01, 0x01, 0xBE, 0x8E, 0x01, 0x9E, 0x09, 0x9D, 0x09, 0x9C, 0x11, 0x7C, 0x21, 0xBB, 0x29, 0x99, 0x5A, 0xFD, 0x6B, 0x7C, 0x5B, 0x9B, 0x53, 0xFA, 0x4C, 0xDB, 0x4E, 0x5F, 0x3E, 0xDF, 0x2F, 0x3F, 0x17, 0x5F, 0x04, 0x0F, 0x7F, 0x8C, 0x17, 0x7F, 0x1F, 0x7F, 0x2F, 0x3F, 0x47, 0x1F, 0x56, 0x9E, 0x86, 0x7F, 0x6C, 0x57, 0x72, 0xF3, 0x92, 0x93, 0xBA, 0xD5, 0xC2, 0x74, 0xCA, 0x13, 0xD2, 0x14, 0x02, 0xD1, 0xF4, 0x01, 0xD2, 0x14, 0x88, 0xD2, 0x34, 0xCA, 0x35, 0xC2, 0x55, 0xC2, 0xD7, 0x91, 0xF4, 0x58, 0xCF, 0x51, 0x51, 0x49, 0x51, 0x41, 0x51, 0x02, 0x41, 0x72, 0x81, 0x39, 0x71, 0x39, 0x72, 0x01, 0x39, 0x71, 0x04, 0x31, 0x51, 0x80, 0x31, 0x30, 0x02, 0x29, 0x30, 0x01, 0x29, 0x51, 0x85, 0x21, 0x32, 0x21, 0x53, 0x11, 0x53, 0x11, 0x95, 0x1A, 0x39, 0x09, 0xF9, 0x01, 0x09, 0xB9, 0x81, 0x01, 0xB9, 0x01, 0xBA, 0x02, 0x01, 0xDA, 0x88, 0x09, 0xDA, 0x09, 0xD9, 0x11, 0xD8, 0x09, 0x76, 0x11, 0x54, 0x19, 0x54, 0x19, 0x33, 0x19, 0x32, 0x19, 0x11, 0x02, 0x19, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x0B, + 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x87, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, + 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x51, 0x87, 0x19, 0x31, 0x19, 0x53, 0x11, 0x33, 0x11, 0x75, 0x11, 0x97, 0x09, 0xB8, 0x11, 0xF9, 0x09, 0xDA, 0x05, 0x01, 0xDA, 0x82, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0x09, 0xD8, 0x85, 0x09, 0x96, 0x11, 0x75, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x30, 0x09, 0x21, 0x10, 0x80, 0x29, 0x30, 0x31, 0x21, 0x10, 0x80, 0x21, 0x30, 0x1A, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x0B, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x51, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x89, 0x19, 0x12, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x33, 0x01, 0x19, 0x32, 0x82, 0x21, 0x31, 0x19, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, + 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x03, 0x29, 0x10, 0x87, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x82, 0x11, 0x54, 0x11, 0x95, 0x1A, 0x17, 0x03, 0x19, 0xF7, 0x80, 0x22, 0x18, 0x02, 0x1A, 0x17, 0x85, 0x19, 0xF6, 0x21, 0xD6, 0x19, 0x73, 0x19, 0x32, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x07, 0x21, 0x10, 0x87, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, + 0x21, 0x0F, 0x86, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x08, 0x21, 0x10, 0x02, 0x29, 0x30, 0x06, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x09, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x50, 0x04, 0x29, 0x30, 0x80, 0x31, 0x30, 0x01, 0x31, 0x51, 0x01, 0x31, 0x71, 0x03, 0x31, 0x51, 0x88, 0x39, 0x71, 0x31, 0x71, 0x39, 0x71, 0x39, 0x72, 0x39, 0x71, 0x41, 0x72, 0x39, 0x72, 0x41, 0x71, 0x41, 0x91, 0x01, 0x39, 0x71, 0x81, 0x41, 0x71, 0x41, 0x92, 0x01, 0x49, 0xB2, 0x80, 0x41, 0x71, 0x01, 0x49, 0x71, 0x01, 0x51, 0x91, 0x9C, 0x59, 0x91, 0x51, 0x71, 0x51, 0x2F, 0x48, 0xCE, 0x59, 0x4F, 0x8A, 0xB5, 0xB3, 0xB8, 0xCC, 0x7B, 0xD4, 0xBB, 0xD4, 0xDB, 0xD4, 0xBB, 0xD4, 0xDB, 0xCC, 0xDB, 0xBC, 0xBA, 0xAC, 0x98, 0x94, 0x57, 0x84, 0x77, 0x7D, 0x39, 0x7E, 0x1B, 0x76, 0x7C, 0x66, 0x9C, 0x4E, 0x9C, 0x3E, 0xBC, 0x36, 0xDD, 0x2F, 0x5E, 0x27, 0x9E, 0x1F, 0x9E, 0x17, 0x7E, 0x0F, 0x7E, 0x01, 0x17, 0x9E, 0x82, 0x1F, 0x9E, 0x1F, + 0x7E, 0x27, 0x9E, 0x01, 0x27, 0x7E, 0x87, 0x1F, 0x7E, 0x1F, 0x9E, 0x17, 0x9E, 0x0F, 0x9E, 0x0F, 0xBE, 0x0F, 0xBF, 0x07, 0xBE, 0x0F, 0xBF, 0x05, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x09, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x88, 0x0F, 0xBF, 0x0F, 0xBE, 0x17, 0xBE, 0x1F, 0xDE, 0x17, 0x7D, 0x0F, 0x1B, 0x0E, 0xFA, 0x06, 0xDA, 0x06, 0xBA, 0x01, 0x06, 0xB9, 0x81, 0x06, 0xBA, 0x06, 0xDA, 0x02, 0x06, 0xD9, 0x80, 0x06, 0xB9, 0x03, 0x06, 0x99, 0x03, 0x06, 0x79, 0x01, 0x06, 0x59, 0x03, 0x06, 0x39, 0x80, 0x06, 0x19, 0x02, 0x05, 0xF9, 0x80, 0x05, 0xFA, 0x02, 0x05, 0xDA, 0x82, 0x05, 0xBA, 0x05, 0xBB, 0x05, 0x9B, 0x01, 0x05, 0x7B, 0x80, 0x05, 0x7C, 0x02, 0x05, 0x5C, 0x80, 0x05, 0x3C, 0x01, 0x05, 0x1C, 0x80, 0x05, 0x1D, 0x01, 0x04, 0xFD, 0x02, 0x04, 0xDD, 0x02, 0x04, 0xBE, 0x02, 0x04, 0x9E, 0x02, 0x04, 0x7E, 0x80, 0x04, 0x5E, 0x01, 0x04, 0x5F, 0x04, 0x04, 0x3F, 0x0A, 0x04, 0x1F, 0x04, 0x03, 0xFF, 0x02, 0x03, 0xDF, 0x02, 0x03, 0xBF, 0x01, 0x03, 0x7F, 0x80, 0x03, 0x5F, 0x01, 0x03, 0x3F, 0x88, 0x03, 0x1F, 0x02, 0xFF, 0x02, 0xDF, 0x02, 0x9F, 0x02, 0x7F, 0x02, 0x5F, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x02, 0x01, 0xDF, 0x80, 0x01, 0xBF, 0x01, 0x01, 0x9E, 0x01, 0x09, 0x9D, 0x8B, 0x11, 0x7B, 0x21, 0x9A, 0x31, 0xB9, 0x73, 0xBF, 0x6B, 0x9C, 0x5B, 0xDB, 0x4C, 0x5B, 0x45, 0x7D, 0x46, 0xBF, 0x2E, 0xFF, 0x1F, 0x3F, + 0x17, 0x5F, 0x01, 0x0F, 0x7F, 0x8E, 0x07, 0x7F, 0x0F, 0x9F, 0x0F, 0x7F, 0x17, 0x9F, 0x27, 0x9F, 0x37, 0x3F, 0x4E, 0xFE, 0x6E, 0x9E, 0x86, 0x1E, 0x6B, 0x95, 0x7A, 0xD3, 0xA2, 0xD4, 0xBA, 0x94, 0xC2, 0x33, 0xCA, 0x13, 0x01, 0xD2, 0x14, 0x01, 0xD1, 0xF3, 0x8A, 0xD1, 0xF4, 0xD2, 0x14, 0xD2, 0x35, 0xC2, 0x34, 0xBA, 0x55, 0xC2, 0xF8, 0x81, 0x92, 0x58, 0xF0, 0x51, 0x31, 0x49, 0x51, 0x41, 0x52, 0x01, 0x41, 0x72, 0x01, 0x39, 0x72, 0x01, 0x39, 0x71, 0x02, 0x31, 0x51, 0x84, 0x31, 0x31, 0x31, 0x51, 0x31, 0x31, 0x31, 0x30, 0x31, 0x51, 0x02, 0x29, 0x51, 0x85, 0x21, 0x52, 0x21, 0x53, 0x11, 0x53, 0x19, 0xD6, 0x11, 0xF8, 0x09, 0xF9, 0x01, 0x09, 0xB9, 0x8A, 0x01, 0xB9, 0x09, 0xDA, 0x01, 0xDA, 0x09, 0xDA, 0x09, 0xFA, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0x55, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x10, 0x03, 0x21, 0x30, 0x80, 0x29, 0x50, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x07, 0x21, 0x10, 0x8B, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, + 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, + 0x30, 0x01, 0x21, 0x51, 0x87, 0x19, 0x31, 0x19, 0x52, 0x11, 0x33, 0x11, 0x55, 0x11, 0x97, 0x11, 0xD8, 0x11, 0xFA, 0x09, 0xFA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x89, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xF9, 0x09, 0xD9, 0x09, 0xB7, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x81, 0x29, 0x10, 0x20, 0xEF, 0x04, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x20, 0xEF, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x20, 0xEF, 0x04, 0x21, 0x10, 0x80, 0x20, 0xF0, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x20, 0xEF, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x0A, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x09, 0x21, 0x10, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, + 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x51, 0x01, 0x21, 0x31, 0x85, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF7, 0x01, 0x19, 0xF7, 0x83, 0x19, 0x95, 0x11, 0x54, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x10, 0x06, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x0A, 0x21, 0x10, 0x02, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x87, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x22, 0x17, 0x22, 0x38, 0x11, 0xD7, 0x11, 0xB7, 0x03, 0x11, 0xB6, 0x80, + 0x11, 0xD6, 0x01, 0x19, 0xF7, 0x85, 0x19, 0xD6, 0x19, 0x94, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x8D, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x05, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x05, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x21, 0x10, 0x08, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x08, 0x29, 0x30, 0x01, 0x29, 0x50, 0x04, 0x29, 0x30, 0x80, 0x31, 0x71, 0x02, 0x31, 0x51, 0x81, 0x31, 0x30, 0x31, 0x50, 0x01, 0x31, 0x51, 0x01, 0x39, 0x71, 0x03, 0x39, 0x51, 0x81, 0x39, 0x71, 0x39, 0x51, 0x01, 0x41, 0x71, 0x80, 0x39, 0x31, 0x01, 0x41, 0x71, 0x82, 0x41, 0x91, 0x49, 0x92, 0x49, 0xB2, 0x02, 0x49, 0x71, 0x01, 0x51, 0x91, 0x87, 0x51, 0x50, 0x51, 0x2F, 0x50, 0xEE, 0x59, 0x0F, 0x79, 0xF2, + 0xA3, 0x36, 0xC4, 0x1A, 0xCC, 0x9B, 0x01, 0xD4, 0x9B, 0x80, 0xD4, 0x9A, 0x01, 0xD4, 0xDB, 0x8E, 0xCC, 0xFA, 0xBC, 0xB9, 0x9C, 0x57, 0x8C, 0x97, 0x85, 0x39, 0x8E, 0x3C, 0x7E, 0x9D, 0x66, 0xBD, 0x56, 0xBD, 0x46, 0xFD, 0x37, 0x1D, 0x2F, 0x5E, 0x2F, 0x9F, 0x1F, 0x9F, 0x17, 0x9E, 0x01, 0x0F, 0xBE, 0x83, 0x0F, 0xDF, 0x07, 0x9E, 0x0F, 0xBE, 0x0F, 0x9E, 0x02, 0x17, 0x9E, 0x84, 0x17, 0x9F, 0x17, 0xBF, 0x0F, 0xBF, 0x0F, 0xBE, 0x07, 0xBE, 0x01, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x04, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x0B, 0x07, 0xDF, 0x0C, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x81, 0x0F, 0xDF, 0x0F, 0xBE, 0x01, 0x1F, 0x9E, 0x85, 0x2F, 0x9E, 0x1F, 0x1B, 0x16, 0xDA, 0x16, 0xBA, 0x16, 0xDA, 0x0E, 0xB9, 0x02, 0x06, 0xB9, 0x03, 0x06, 0xD9, 0x01, 0x06, 0xB8, 0x05, 0x06, 0x98, 0x80, 0x06, 0x78, 0x02, 0x06, 0x58, 0x82, 0x06, 0x38, 0x06, 0x58, 0x06, 0x38, 0x02, 0x06, 0x18, 0x02, 0x05, 0xF9, 0x81, 0x05, 0xD9, 0x05, 0xDA, 0x01, 0x05, 0xBA, 0x80, 0x05, 0x9A, 0x01, 0x05, 0x9B, 0x01, 0x05, 0x7B, 0x82, 0x05, 0x7C, 0x05, 0x5C, 0x05, 0x3C, 0x02, 0x05, 0x1C, 0x03, 0x04, 0xFD, 0x81, 0x04, 0xDD, 0x04, 0xDE, 0x01, 0x04, 0xBE, 0x02, 0x04, 0x9E, 0x01, 0x04, 0x7E, 0x01, 0x04, 0x5E, 0x80, 0x04, 0x3E, 0x02, 0x04, 0x3F, 0x04, 0x04, 0x1F, 0x05, 0x03, 0xFF, 0x05, 0x03, 0xDF, 0x01, 0x03, 0xBF, 0x82, 0x03, 0xDF, 0x03, 0x9F, 0x03, 0xBF, 0x01, 0x03, 0x9F, 0x01, 0x03, 0x7F, 0x01, 0x03, 0x5F, 0x80, 0x03, 0x3F, 0x01, 0x03, + 0x1F, 0x85, 0x02, 0xFF, 0x02, 0xDF, 0x02, 0xBF, 0x02, 0x9F, 0x02, 0x7F, 0x02, 0x3F, 0x01, 0x02, 0x1F, 0x81, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x02, 0x01, 0x9E, 0x9E, 0x09, 0x9D, 0x11, 0x7C, 0x21, 0xBC, 0x21, 0x59, 0x52, 0xBC, 0x6B, 0x9D, 0x6C, 0x1E, 0x54, 0x1B, 0x3C, 0xBB, 0x4E, 0x5F, 0x36, 0xBF, 0x27, 0x1F, 0x17, 0x1F, 0x0F, 0x7F, 0x0F, 0x9F, 0x07, 0x9F, 0x0F, 0xBF, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x9F, 0x27, 0x7F, 0x37, 0x1E, 0x56, 0xBE, 0x76, 0x9F, 0x7D, 0x5B, 0x63, 0x13, 0x7A, 0x72, 0xAA, 0xB4, 0xBA, 0x74, 0xCA, 0x33, 0xD2, 0x34, 0x04, 0xD1, 0xF3, 0x89, 0xD2, 0x14, 0xCA, 0x34, 0xC2, 0x35, 0xBA, 0x55, 0xBA, 0xD7, 0x69, 0x10, 0x58, 0xF0, 0x51, 0x31, 0x49, 0x31, 0x41, 0x51, 0x01, 0x39, 0x51, 0x02, 0x39, 0x71, 0x04, 0x31, 0x51, 0x01, 0x31, 0x31, 0x80, 0x31, 0x51, 0x02, 0x29, 0x51, 0x8A, 0x21, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0x95, 0x1A, 0x18, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0x99, 0x09, 0xB9, 0x09, 0xDA, 0x09, 0xFA, 0x01, 0x09, 0xD9, 0x84, 0x09, 0xB8, 0x11, 0xD7, 0x11, 0x75, 0x11, 0x13, 0x19, 0x12, 0x01, 0x19, 0x11, 0x81, 0x21, 0x11, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, + 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x86, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, + 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x8A, 0x21, 0x50, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x11, 0x12, 0x19, 0x54, 0x11, 0x75, 0x11, 0x97, 0x11, 0xD8, 0x09, 0xD9, 0x01, 0xDA, 0x02, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x87, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x11, 0x05, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x17, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x0D, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x09, 0x21, 0x10, 0x80, 0x21, 0x30, 0x07, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, + 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x08, 0x21, 0x30, 0x87, 0x21, 0x31, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x19, 0x12, 0x11, 0x32, 0x11, 0x33, 0x11, 0x95, 0x01, 0x19, 0xF7, 0x85, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x02, 0x21, 0x31, 0x05, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x05, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x19, + 0x95, 0x22, 0x18, 0x19, 0xF7, 0x01, 0x11, 0x96, 0x80, 0x11, 0x75, 0x01, 0x09, 0x75, 0x87, 0x09, 0x55, 0x09, 0x95, 0x11, 0xD7, 0x1A, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x74, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x02, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x08, 0x29, 0x30, 0x80, 0x31, 0x51, 0x01, 0x31, 0x50, 0x81, 0x31, 0x51, 0x31, 0x50, 0x01, + 0x31, 0x51, 0x80, 0x31, 0x30, 0x02, 0x31, 0x51, 0x81, 0x39, 0x51, 0x39, 0x71, 0x02, 0x39, 0x50, 0x01, 0x39, 0x51, 0x80, 0x39, 0x31, 0x01, 0x41, 0x51, 0x80, 0x49, 0x71, 0x02, 0x49, 0x91, 0x80, 0x49, 0x71, 0x02, 0x49, 0x50, 0x9C, 0x51, 0x50, 0x49, 0x0F, 0x48, 0xCD, 0x50, 0xEE, 0x69, 0xB1, 0x9A, 0xF5, 0xBB, 0xF9, 0xCC, 0x3A, 0xD4, 0x7A, 0xD4, 0x5A, 0xD4, 0x7A, 0xD4, 0x9A, 0xD4, 0xBA, 0xDC, 0xFB, 0xD4, 0xFB, 0xCD, 0x1A, 0xB4, 0x98, 0x8C, 0x15, 0x84, 0xB7, 0x8D, 0xBA, 0x7E, 0x5C, 0x6E, 0xBD, 0x56, 0xBD, 0x46, 0xDD, 0x3F, 0x1E, 0x2F, 0x3D, 0x27, 0x9F, 0x1F, 0x9F, 0x17, 0xBF, 0x01, 0x0F, 0xBF, 0x80, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x03, 0x0F, 0xBF, 0x81, 0x0F, 0x9F, 0x0F, 0xBF, 0x01, 0x07, 0xBF, 0x09, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x83, 0x07, 0xDF, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xFF, 0x0A, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x07, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x01, 0x0F, 0xDF, 0x89, 0x17, 0xBE, 0x27, 0x7D, 0x27, 0x5D, 0x2F, 0x1C, 0x26, 0xBA, 0x26, 0x9A, 0x26, 0x99, 0x2F, 0x1B, 0x1E, 0xFA, 0x0E, 0xD9, 0x02, 0x06, 0xB9, 0x80, 0x06, 0xD9, 0x03, 0x06, 0xD8, 0x01, 0x06, 0xB8, 0x03, 0x06, 0x98, 0x8A, 0x06, 0x78, 0x06, 0x77, 0x06, 0x78, 0x06, 0x57, 0x06, 0x58, 0x06, 0x57, 0x06, 0x37, 0x06, 0x17, 0x06, 0x38, 0x06, 0x17, 0x06, 0x18, 0x01, 0x05, 0xF8, 0x84, 0x05, 0xF9, 0x05, 0xD8, 0x05, 0xD9, 0x05, 0xB9, 0x05, 0xBA, 0x01, 0x05, 0x9A, 0x81, 0x05, 0x7A, 0x05, 0x7B, 0x01, 0x05, 0x5B, 0x01, 0x05, 0x3B, 0x80, + 0x05, 0x3C, 0x01, 0x05, 0x1C, 0x01, 0x04, 0xFC, 0x80, 0x04, 0xFD, 0x01, 0x04, 0xDD, 0x80, 0x04, 0xBE, 0x01, 0x04, 0x9E, 0x02, 0x04, 0x7E, 0x02, 0x04, 0x5E, 0x03, 0x04, 0x3E, 0x80, 0x04, 0x3F, 0x03, 0x04, 0x1F, 0x02, 0x03, 0xFF, 0x04, 0x03, 0xDF, 0x05, 0x03, 0xBF, 0x03, 0x03, 0x9F, 0x01, 0x03, 0x7F, 0x01, 0x03, 0x5F, 0x80, 0x03, 0x3F, 0x02, 0x03, 0x1F, 0x80, 0x02, 0xFF, 0x01, 0x02, 0xDF, 0x83, 0x02, 0x9F, 0x02, 0x7F, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x92, 0x01, 0xBE, 0x01, 0x9E, 0x09, 0x9E, 0x09, 0x9D, 0x11, 0x5B, 0x21, 0x9B, 0x29, 0x79, 0x6B, 0x7F, 0x63, 0x9D, 0x5C, 0x1D, 0x3C, 0x3B, 0x3D, 0x3D, 0x4E, 0xFF, 0x2E, 0xFF, 0x1F, 0x3F, 0x17, 0x5F, 0x0F, 0x7F, 0x0F, 0x9F, 0x07, 0x9F, 0x01, 0x0F, 0x9F, 0x90, 0x17, 0x9F, 0x1F, 0x7F, 0x2F, 0x5F, 0x3E, 0xFE, 0x5E, 0x9E, 0x86, 0x5E, 0x74, 0x58, 0x72, 0xD3, 0x92, 0x93, 0xBA, 0xB5, 0xC2, 0x33, 0xCA, 0x33, 0xC9, 0xF3, 0xD2, 0x13, 0xD1, 0xF3, 0xD9, 0xF4, 0xD1, 0xF3, 0x01, 0xD2, 0x14, 0x88, 0xCA, 0x14, 0xC2, 0x34, 0xBA, 0x96, 0xB2, 0xD7, 0x58, 0xAF, 0x59, 0x11, 0x51, 0x31, 0x49, 0x52, 0x41, 0x51, 0x02, 0x39, 0x51, 0x85, 0x39, 0x72, 0x31, 0x51, 0x39, 0x71, 0x31, 0x71, 0x31, 0x51, 0x31, 0x71, 0x02, 0x31, 0x51, 0x02, 0x29, 0x31, 0x89, 0x21, 0x31, 0x21, 0x32, 0x19, 0x33, 0x19, 0x74, 0x19, 0xD7, 0x19, 0xF8, 0x19, 0xF9, 0x09, 0xB8, 0x09, 0x98, 0x09, 0xB9, 0x02, 0x09, 0xB8, 0x83, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x53, 0x19, 0x32, 0x01, 0x19, 0x11, + 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x8A, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x04, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x0C, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, + 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x07, 0x21, 0x30, 0x8B, 0x19, 0x10, 0x21, 0x10, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x34, 0x11, 0x75, 0x11, 0x97, 0x11, 0xD9, 0x11, 0xFA, 0x01, 0xDA, 0x01, 0xBA, 0x03, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x01, 0x09, 0xD8, 0x84, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x09, 0x21, 0x10, 0x01, 0x29, 0x10, 0x08, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, + 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x12, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x10, 0x21, 0x30, 0x02, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x11, 0x12, 0x88, 0x09, 0x33, 0x11, 0x95, 0x19, 0xF7, 0x22, 0x18, 0x1A, 0x17, 0x11, 0xB5, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x84, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x83, 0x29, + 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x09, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x88, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x19, 0x33, 0x11, 0x33, 0x21, 0xD6, 0x19, 0xF7, 0x01, 0x11, 0x96, 0x82, 0x09, 0x76, 0x09, 0x55, 0x09, 0x54, 0x01, 0x09, 0x34, 0x81, 0x09, 0x75, 0x11, 0xB6, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x30, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, + 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x06, 0x29, 0x2F, 0x06, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x31, 0x50, 0x81, 0x31, 0x51, 0x31, 0x30, 0x01, 0x31, 0x50, 0x01, 0x39, 0x51, 0x01, 0x39, 0x50, 0x80, 0x39, 0x30, 0x01, 0x39, 0x50, 0x81, 0x41, 0x71, 0x41, 0x50, 0x03, 0x49, 0x71, 0x02, 0x49, 0x50, 0x01, 0x49, 0x0F, 0x86, 0x48, 0xCE, 0x50, 0xEE, 0x59, 0x2E, 0x79, 0xF1, 0xA3, 0x15, 0xC4, 0x19, 0xD4, 0x7B, 0x02, 0xD4, 0x5A, 0x93, 0xDC, 0x7A, 0xDC, 0x9A, 0xD4, 0x9A, 0xD4, 0xBA, 0xD4, 0xDA, 0xCC, 0xBA, 0xBC, 0x98, 0x9C, 0x56, 0x84, 0x56, 0x8D, 0x59, 0x8E, 0x3C, 0x76, 0x5C, 0x66, 0x9D, 0x4E, 0xDD, 0x3F, 0x1E, 0x37, 0x5E, 0x27, 0x7F, 0x1F, 0x9F, 0x17, 0x9F, 0x0F, 0x9E, 0x01, 0x0F, 0xBF, 0x80, 0x07, 0xBF, 0x06, 0x07, 0xDF, 0x04, 0x07, 0xBF, 0x0C, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x0A, 0x07, 0xDF, 0x82, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x8E, 0x07, 0xFF, 0x0F, 0xDF, 0x17, 0xDE, 0x1F, 0x9E, 0x2F, 0x5D, 0x2E, 0xFC, 0x2E, 0x7A, 0x2E, 0x18, 0x2E, 0x38, 0x36, 0x79, 0x3F, 0x1B, 0x2E, 0xD9, 0x1E, 0xF9, 0x0E, 0xD9, 0x06, 0xB8, 0x01, 0x06, 0xD8, 0x01, 0x06, 0xF8, 0x80, + 0x06, 0xD8, 0x02, 0x06, 0xD7, 0x02, 0x06, 0xB7, 0x01, 0x06, 0x97, 0x03, 0x06, 0x77, 0x81, 0x06, 0x56, 0x06, 0x36, 0x02, 0x06, 0x37, 0x02, 0x06, 0x17, 0x81, 0x06, 0x18, 0x05, 0xF8, 0x01, 0x05, 0xD8, 0x83, 0x05, 0xD9, 0x05, 0xB9, 0x05, 0x99, 0x05, 0x9A, 0x01, 0x05, 0x7A, 0x81, 0x05, 0x5A, 0x05, 0x5B, 0x01, 0x05, 0x3B, 0x81, 0x05, 0x3C, 0x05, 0x1C, 0x01, 0x04, 0xFC, 0x81, 0x04, 0xDC, 0x04, 0xDD, 0x01, 0x04, 0xBD, 0x80, 0x04, 0xBE, 0x01, 0x04, 0x9E, 0x01, 0x04, 0x7E, 0x03, 0x04, 0x5E, 0x81, 0x04, 0x3F, 0x04, 0x3E, 0x01, 0x04, 0x3F, 0x82, 0x04, 0x1F, 0x04, 0x1E, 0x04, 0x1F, 0x02, 0x03, 0xFF, 0x02, 0x03, 0xDF, 0x05, 0x03, 0xBF, 0x03, 0x03, 0x9F, 0x04, 0x03, 0x7F, 0x80, 0x03, 0x5F, 0x01, 0x03, 0x3F, 0x01, 0x03, 0x1F, 0x01, 0x02, 0xFF, 0x87, 0x02, 0xDF, 0x02, 0xBF, 0x02, 0x9F, 0x02, 0x7F, 0x02, 0x5F, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x02, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x91, 0x01, 0x9E, 0x01, 0xBE, 0x09, 0xBE, 0x11, 0x9D, 0x19, 0x9C, 0x21, 0x7A, 0x31, 0xFA, 0x5B, 0x5D, 0x5B, 0xDD, 0x44, 0x1B, 0x34, 0x9B, 0x46, 0x3F, 0x36, 0xDF, 0x27, 0x1F, 0x17, 0x5F, 0x0F, 0x7F, 0x0F, 0x9F, 0x0F, 0xBF, 0x02, 0x0F, 0x9F, 0x8C, 0x17, 0x9F, 0x27, 0x7F, 0x37, 0x1E, 0x4E, 0xDE, 0x6E, 0x9E, 0x7D, 0xDD, 0x6B, 0xB6, 0x72, 0x52, 0xA2, 0xB4, 0xBA, 0x74, 0xC1, 0xF3, 0xD2, 0x13, 0xC9, 0xF3, 0x01, 0xD1, 0xF3, 0x8C, 0xDA, 0x14, 0xD2, 0x14, 0xC9, 0xF3, 0xC9, 0xF4, 0xCA, 0x14, 0xC2, 0x55, 0xC2, 0xD7, 0xA2, 0x76, 0x60, 0xD0, 0x59, 0x31, 0x49, 0x31, 0x49, + 0x52, 0x41, 0x72, 0x02, 0x39, 0x51, 0x80, 0x39, 0x71, 0x05, 0x31, 0x51, 0x01, 0x31, 0x31, 0x01, 0x29, 0x51, 0x86, 0x29, 0x31, 0x21, 0x31, 0x19, 0x12, 0x19, 0x33, 0x21, 0xB6, 0x22, 0x18, 0x22, 0x19, 0x01, 0x1A, 0x19, 0x01, 0x12, 0x19, 0x84, 0x12, 0x18, 0x19, 0xD7, 0x11, 0x75, 0x19, 0x74, 0x11, 0x32, 0x01, 0x19, 0x11, 0x80, 0x21, 0x11, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x09, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, + 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x0A, 0x21, 0x30, 0x8C, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD9, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xBA, 0x05, 0x01, 0xDA, 0x8B, 0x01, 0xD9, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xB6, 0x11, 0x74, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x2F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x0C, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, + 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x08, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x29, 0x30, 0x07, 0x21, 0x30, 0x80, 0x29, 0x51, 0x0A, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x09, 0x54, 0x11, 0xB6, 0x19, 0xD7, 0x01, 0x1A, 0x17, 0x84, 0x11, 0xB5, 0x11, 0x94, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x29, 0x50, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x06, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x05, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, + 0x04, 0x29, 0x0F, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x75, 0x19, 0xD7, 0x11, 0xB7, 0x02, 0x09, 0x76, 0x81, 0x09, 0x75, 0x09, 0x34, 0x01, 0x09, 0x54, 0x81, 0x09, 0x75, 0x11, 0xB6, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xD7, 0x11, 0x74, 0x19, 0x33, 0x19, 0x32, 0x19, 0x31, 0x04, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x08, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, + 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x31, 0x30, 0x31, 0x50, 0x31, 0x30, 0x02, 0x31, 0x50, 0x01, 0x31, 0x30, 0x04, 0x39, 0x30, 0x02, 0x41, 0x50, 0x81, 0x49, 0x50, 0x49, 0x30, 0x02, 0x49, 0x2F, 0x8A, 0x49, 0x0E, 0x40, 0xCD, 0x40, 0xAD, 0x48, 0xAD, 0x61, 0x4F, 0x8A, 0xB4, 0xB3, 0x97, 0xCC, 0x3A, 0xD4, 0x5A, 0xD4, 0x7A, 0xDC, 0x5A, 0x01, 0xDC, 0x59, 0x94, 0xDC, 0x79, 0xDC, 0x9A, 0xDC, 0x99, 0xDC, 0x9A, 0xD4, 0xB9, 0xCC, 0xB9, 0xCC, 0xFA, 0xB4, 0x98, 0x8C, 0x15, 0x8C, 0xB7, 0x95, 0xBA, 0x86, 0x3B, 0x6E, 0x5B, 0x56, 0x9C, 0x4E, 0xFD, 0x3F, 0x3E, 0x2F, 0x5E, 0x27, 0x9F, 0x17, 0x9F, 0x0F, 0x9E, 0x0F, 0xBF, 0x02, 0x07, 0xBF, 0x04, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x03, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x07, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x0C, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x05, 0x07, 0xDF, 0x8F, 0x0F, 0xDE, 0x17, 0xBE, 0x27, 0x7D, 0x2F, 0x3C, 0x2E, 0x9A, 0x36, 0x19, 0x35, 0x97, 0x45, 0xF8, 0x46, 0x38, 0x46, 0x58, 0x3E, 0xB9, 0x26, 0xD9, 0x16, 0xD8, 0x0E, 0xD8, 0x06, 0xD8, 0x06, 0xF8, 0x04, 0x06, + 0xF7, 0x01, 0x06, 0xD6, 0x02, 0x06, 0xB6, 0x01, 0x06, 0x96, 0x80, 0x06, 0xB6, 0x01, 0x06, 0x96, 0x01, 0x06, 0x76, 0x01, 0x06, 0x56, 0x03, 0x06, 0x36, 0x81, 0x06, 0x16, 0x06, 0x17, 0x01, 0x05, 0xF7, 0x81, 0x05, 0xD7, 0x05, 0xD8, 0x01, 0x05, 0xB8, 0x82, 0x05, 0x98, 0x05, 0x99, 0x05, 0x79, 0x02, 0x05, 0x5A, 0x80, 0x05, 0x3B, 0x01, 0x05, 0x1B, 0x80, 0x04, 0xFB, 0x01, 0x04, 0xFC, 0x80, 0x04, 0xDC, 0x01, 0x04, 0xBD, 0x80, 0x04, 0x9D, 0x01, 0x04, 0x7E, 0x80, 0x04, 0x5D, 0x03, 0x04, 0x5E, 0x02, 0x04, 0x3E, 0x82, 0x04, 0x3F, 0x04, 0x1E, 0x04, 0x1F, 0x02, 0x03, 0xFF, 0x01, 0x03, 0xDF, 0x01, 0x03, 0xBF, 0x81, 0x03, 0xDF, 0x03, 0xBF, 0x04, 0x03, 0x9F, 0x02, 0x03, 0x7F, 0x03, 0x03, 0x5F, 0x02, 0x03, 0x3F, 0x80, 0x03, 0x1F, 0x02, 0x02, 0xFF, 0x80, 0x02, 0xDF, 0x01, 0x02, 0xBF, 0x82, 0x02, 0x9F, 0x02, 0x7F, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x01, 0x01, 0xFF, 0x02, 0x01, 0xDF, 0xA2, 0x01, 0xBF, 0x01, 0xBE, 0x01, 0x9E, 0x09, 0xBE, 0x09, 0x7D, 0x11, 0x7C, 0x21, 0x9C, 0x19, 0x59, 0x52, 0xFD, 0x53, 0x9D, 0x54, 0x3E, 0x3C, 0x7C, 0x35, 0x1C, 0x46, 0xBF, 0x2E, 0xFF, 0x1F, 0x3F, 0x0F, 0x5F, 0x0F, 0x7F, 0x0F, 0x9F, 0x0F, 0xBF, 0x07, 0x9F, 0x0F, 0x9F, 0x17, 0xBF, 0x1F, 0x9F, 0x2F, 0x5F, 0x3F, 0x1F, 0x4E, 0x9E, 0x76, 0x9F, 0x85, 0x5B, 0x62, 0xF3, 0x8A, 0x93, 0xAA, 0x94, 0xBA, 0x34, 0xCA, 0x13, 0xD2, 0x13, 0x03, 0xD1, 0xF3, 0x89, 0xC9, 0xF3, 0xD2, 0x14, 0xD2, 0x34, 0xC2, 0x14, 0xC2, 0x55, 0xBA, 0x97, 0x89, 0x93, 0x58, 0xAF, 0x59, 0x31, 0x49, 0x31, + 0x01, 0x41, 0x51, 0x80, 0x39, 0x51, 0x01, 0x39, 0x72, 0x81, 0x39, 0x71, 0x31, 0x71, 0x01, 0x31, 0x51, 0x80, 0x31, 0x50, 0x03, 0x31, 0x51, 0x01, 0x29, 0x31, 0x80, 0x21, 0x31, 0x01, 0x21, 0x32, 0x84, 0x19, 0x53, 0x19, 0x95, 0x19, 0xB6, 0x19, 0xB7, 0x22, 0x38, 0x01, 0x1A, 0x18, 0x83, 0x11, 0xB6, 0x11, 0x54, 0x19, 0x54, 0x11, 0x12, 0x01, 0x19, 0x31, 0x80, 0x21, 0x11, 0x03, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x87, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x17, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, + 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x10, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB8, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xBA, 0x02, 0x01, 0xDA, 0x82, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0x09, 0xD9, 0x87, 0x09, 0xB7, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x29, 0x51, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x05, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x08, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x31, 0x21, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x0D, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, + 0x21, 0x10, 0x87, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x31, 0x21, 0x10, 0x21, 0x11, 0x21, 0x10, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x11, 0x21, 0x10, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x07, 0x21, 0x10, 0x80, 0x21, 0x31, 0x08, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x07, 0x21, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x51, 0x21, 0x30, 0x01, 0x21, 0x51, 0x90, 0x21, 0x72, 0x19, 0x31, 0x19, 0x52, 0x11, 0x12, 0x11, 0x33, 0x09, 0x54, 0x11, 0x95, 0x19, 0xF7, 0x1A, 0x17, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x87, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, + 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x03, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x19, 0xB6, 0x22, 0x18, 0x11, 0x96, 0x02, 0x09, 0x76, 0x8D, 0x11, 0x75, 0x09, 0x54, 0x09, 0x34, 0x09, 0x54, 0x09, 0x55, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x8E, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x50, 0x21, 0x30, 0x29, 0x30, + 0x29, 0x50, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x31, 0x30, 0x01, 0x31, 0x50, 0x01, 0x31, 0x30, 0x80, 0x31, 0x50, 0x03, 0x31, 0x2F, 0x81, 0x39, 0x30, 0x41, 0x70, 0x01, 0x39, 0x0F, 0x01, 0x41, 0x2F, 0x82, 0x41, 0x0F, 0x40, 0xEE, 0x40, 0xCD, 0x02, 0x40, 0xAD, 0x87, 0x48, 0xCD, 0x59, 0x4E, 0x82, 0x73, 0xAB, 0x97, 0xCC, 0x7A, 0xDC, 0xDB, 0xD4, 0x9B, 0xD4, 0x7A, 0x01, 0xD4, 0x59, 0x02, 0xDC, 0x59, 0x02, 0xDC, 0x79, 0x90, 0xD4, 0x79, 0xD4, 0x99, 0xD4, 0xD9, 0xC4, 0xD9, 0x9C, 0x36, 0x8C, 0x76, 0x95, 0x7A, 0x8E, 0x1B, 0x76, 0x3B, 0x66, 0x7C, 0x56, 0xFD, 0x4F, 0x3E, 0x37, 0x5E, 0x27, 0x7E, 0x1F, 0x7E, 0x0F, 0x7E, 0x0F, 0x9E, 0x01, 0x0F, 0xBF, 0x09, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x0F, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x0C, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x07, 0x07, 0xDF, 0x8F, 0x07, 0xDE, 0x0F, 0xBE, 0x17, 0x9D, 0x27, 0x5C, 0x36, 0xFB, 0x36, 0x39, 0x45, 0xF8, 0x3D, 0x15, 0x4D, 0x76, 0x5D, 0xD8, 0x4D, 0xD7, 0x46, 0x58, 0x2E, 0x98, 0x1E, 0xD8, 0x0E, + 0xD8, 0x0E, 0xF7, 0x01, 0x07, 0x17, 0x01, 0x06, 0xF7, 0x05, 0x06, 0xF6, 0x01, 0x06, 0xD5, 0x03, 0x06, 0xB5, 0x80, 0x06, 0x95, 0x03, 0x06, 0x75, 0x02, 0x06, 0x55, 0x01, 0x06, 0x35, 0x80, 0x06, 0x15, 0x01, 0x05, 0xF6, 0x81, 0x05, 0xF7, 0x05, 0xD7, 0x01, 0x05, 0xB7, 0x81, 0x05, 0x97, 0x05, 0x98, 0x01, 0x05, 0x78, 0x80, 0x05, 0x59, 0x01, 0x05, 0x39, 0x83, 0x05, 0x3A, 0x05, 0x1A, 0x05, 0x1B, 0x04, 0xFC, 0x01, 0x04, 0xDC, 0x01, 0x04, 0xBD, 0x81, 0x04, 0x9D, 0x04, 0x7D, 0x01, 0x04, 0x7E, 0x82, 0x04, 0x5E, 0x04, 0x3E, 0x04, 0x5E, 0x01, 0x04, 0x3E, 0x02, 0x04, 0x1E, 0x01, 0x04, 0x1F, 0x80, 0x03, 0xFF, 0x02, 0x03, 0xDF, 0x04, 0x03, 0xBF, 0x01, 0x03, 0x9F, 0x03, 0x03, 0x7F, 0x01, 0x03, 0x5F, 0x04, 0x03, 0x3F, 0x01, 0x03, 0x1F, 0x80, 0x02, 0xFF, 0x03, 0x02, 0xDF, 0x83, 0x02, 0xBF, 0x02, 0x9F, 0x02, 0x7F, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x80, 0x02, 0x1F, 0x01, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x92, 0x01, 0xBF, 0x01, 0xBE, 0x01, 0x9E, 0x01, 0x9D, 0x09, 0x7D, 0x09, 0x7C, 0x19, 0x9C, 0x19, 0x7A, 0x29, 0xFB, 0x53, 0x7E, 0x4B, 0xDE, 0x4C, 0x7E, 0x24, 0x5B, 0x3E, 0x1F, 0x36, 0xDF, 0x1F, 0x1F, 0x17, 0x5F, 0x0F, 0x9F, 0x0F, 0xBF, 0x02, 0x07, 0x9F, 0x91, 0x0F, 0x9F, 0x17, 0x7F, 0x27, 0x9F, 0x2F, 0x3E, 0x47, 0x1F, 0x5E, 0xBE, 0x7E, 0x5E, 0x74, 0x58, 0x72, 0xD3, 0x92, 0x73, 0xB2, 0x74, 0xC2, 0x33, 0xD2, 0x34, 0xD2, 0x13, 0xD1, 0xF3, 0xD1, 0xF4, 0xD1, 0xD3, 0xD1, 0xF3, 0x01, 0xD2, 0x14, 0x86, 0xCA, 0x14, 0xC2, 0x35, 0xC2, 0x76, 0xB2, 0x97, 0x71, + 0x31, 0x58, 0xF0, 0x51, 0x31, 0x01, 0x49, 0x51, 0x82, 0x41, 0x51, 0x41, 0x72, 0x39, 0x51, 0x01, 0x39, 0x71, 0x01, 0x31, 0x51, 0x81, 0x29, 0x30, 0x31, 0x30, 0x01, 0x31, 0x51, 0x82, 0x29, 0x31, 0x29, 0x51, 0x29, 0x31, 0x01, 0x29, 0x51, 0x83, 0x21, 0x32, 0x21, 0x73, 0x21, 0x53, 0x19, 0x33, 0x03, 0x11, 0x33, 0x87, 0x11, 0x32, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x0B, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x0C, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x01, 0x29, + 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x86, 0x19, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB8, 0x12, 0x19, 0x09, 0xF9, 0x01, 0xB9, 0x01, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x02, 0x01, 0xDA, 0x8B, 0x01, 0xD9, 0x0A, 0x19, 0x09, 0xD8, 0x09, 0xB6, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x4F, 0x21, 0x2F, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x02, 0x21, 0x31, 0x01, 0x21, 0x11, 0x01, 0x21, 0x31, 0x05, 0x21, 0x11, 0x81, 0x19, 0x10, 0x21, 0x11, 0x01, 0x19, 0x11, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x19, 0x10, 0x81, 0x19, 0x30, 0x21, 0x30, 0x01, 0x19, 0x30, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x21, 0x11, 0x06, 0x19, 0x11, 0x01, 0x21, 0x11, 0x80, + 0x19, 0x10, 0x02, 0x21, 0x11, 0x03, 0x19, 0x11, 0x01, 0x21, 0x10, 0x85, 0x19, 0x10, 0x21, 0x10, 0x21, 0x11, 0x19, 0x10, 0x21, 0x11, 0x19, 0x10, 0x03, 0x19, 0x11, 0x87, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x21, 0x11, 0x19, 0x11, 0x02, 0x21, 0x11, 0x01, 0x19, 0x11, 0x80, 0x21, 0x11, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x03, 0x19, 0x11, 0x01, 0x21, 0x11, 0x03, 0x19, 0x11, 0x80, 0x21, 0x31, 0x02, 0x19, 0x11, 0x01, 0x19, 0x10, 0x0C, 0x19, 0x11, 0x80, 0x19, 0x10, 0x02, 0x19, 0x11, 0x84, 0x19, 0x10, 0x19, 0x11, 0x19, 0x10, 0x19, 0x11, 0x18, 0xF0, 0x02, 0x19, 0x10, 0x80, 0x19, 0x11, 0x0A, 0x19, 0x10, 0x80, 0x21, 0x30, 0x01, 0x19, 0x10, 0x80, 0x21, 0x30, 0x05, 0x19, 0x10, 0x80, 0x21, 0x11, 0x01, 0x19, 0x11, 0x03, 0x19, 0x10, 0x83, 0x21, 0x10, 0x19, 0x10, 0x21, 0x31, 0x21, 0x11, 0x01, 0x21, 0x31, 0x03, 0x21, 0x51, 0x8D, 0x19, 0x32, 0x19, 0x53, 0x11, 0x32, 0x09, 0x33, 0x09, 0x54, 0x09, 0x95, 0x19, 0xF7, 0x22, 0x38, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, + 0x80, 0x29, 0x30, 0x04, 0x29, 0x10, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x84, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x03, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x85, 0x19, 0x10, 0x19, 0x11, 0x11, 0x12, 0x11, 0x53, 0x19, 0xD6, 0x19, 0xF7, 0x01, 0x11, 0x97, 0x01, 0x09, 0x76, 0x81, 0x09, 0x55, 0x09, 0x54, 0x01, 0x09, 0x34, 0x88, 0x01, 0x55, 0x11, 0xB6, 0x11, 0xD7, 0x1A, 0x18, 0x19, 0xD7, 0x19, 0x95, 0x19, 0x33, 0x19, 0x32, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, + 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x28, 0xEE, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x31, 0x2F, 0x83, 0x31, 0x0F, 0x31, 0x2F, 0x31, 0x0F, 0x31, 0x2F, 0x01, 0x31, 0x0F, 0x02, 0x30, 0xEE, 0x86, 0x31, 0x0E, 0x39, 0x0E, 0x41, 0x2F, 0x41, 0x0E, 0x38, 0xCD, 0x38, 0xAC, 0x30, 0x4B, 0x01, 0x30, 0x2A, 0x8A, 0x38, 0x6B, 0x48, 0xED, 0x61, 0x90, 0x8A, 0xB4, 0xAB, 0xB8, 0xCC, 0x7A, 0xD4, 0xDB, 0xDC, 0xFB, 0xDC, 0xBB, 0xDC, 0xBA, 0xDC, 0x99, 0x04, 0xDC, 0x79, 0x92, 0xE4, 0x79, 0xDC, 0x58, 0xDC, 0x79, 0xDC, 0x99, 0xD4, 0x79, 0xCC, 0xB9, 0xCC, 0xD9, 0xB4, 0x97, 0x9C, 0x36, 0x94, 0xF8, 0x95, 0xBA, 0x7D, 0xFB, 0x6E, 0x3B, 0x5E, 0xBC, 0x4F, 0x1D, 0x3F, 0x3E, 0x2F, 0x5E, 0x27, 0x5E, 0x17, 0x7E, 0x01, 0x0F, 0x9E, 0x80, 0x0F, 0xBF, 0x01, 0x07, 0xBF, 0x17, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x06, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x82, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xFF, 0x0D, 0x07, 0xDF, 0x01, 0x07, 0xDE, 0x8F, 0x07, 0xBE, 0x0F, 0x9D, 0x17, 0x7D, 0x27, 0x3C, 0x3E, + 0xFB, 0x46, 0x59, 0x55, 0xF8, 0x4D, 0x15, 0x54, 0xF5, 0x65, 0x56, 0x5D, 0x76, 0x56, 0x18, 0x3E, 0x78, 0x2E, 0xB8, 0x16, 0xB7, 0x0F, 0x17, 0x02, 0x07, 0x17, 0x02, 0x07, 0x16, 0x01, 0x07, 0x15, 0x01, 0x06, 0xF5, 0x01, 0x06, 0xF4, 0x02, 0x06, 0xD4, 0x01, 0x06, 0xB4, 0x03, 0x06, 0x94, 0x03, 0x06, 0x74, 0x80, 0x06, 0x54, 0x01, 0x06, 0x34, 0x81, 0x06, 0x14, 0x06, 0x15, 0x01, 0x05, 0xF5, 0x80, 0x05, 0xD5, 0x01, 0x05, 0xB6, 0x8D, 0x05, 0x96, 0x05, 0x97, 0x05, 0x77, 0x05, 0x57, 0x05, 0x58, 0x05, 0x59, 0x05, 0x39, 0x05, 0x1A, 0x04, 0xFA, 0x04, 0xFB, 0x04, 0xDB, 0x04, 0xBC, 0x04, 0x9C, 0x04, 0x9D, 0x01, 0x04, 0x7D, 0x82, 0x04, 0x5D, 0x04, 0x3D, 0x04, 0x5E, 0x02, 0x04, 0x3E, 0x03, 0x04, 0x1E, 0x01, 0x03, 0xFF, 0x02, 0x03, 0xDF, 0x03, 0x03, 0xBF, 0x80, 0x03, 0x9F, 0x03, 0x03, 0x7F, 0x03, 0x03, 0x5F, 0x02, 0x03, 0x3F, 0x02, 0x03, 0x1F, 0x01, 0x02, 0xFF, 0x02, 0x02, 0xDF, 0x80, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x80, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x80, 0x02, 0x3F, 0x01, 0x02, 0x1F, 0x95, 0x01, 0xDF, 0x01, 0xFF, 0x01, 0xBF, 0x01, 0xDF, 0x01, 0xBE, 0x01, 0x9E, 0x01, 0x7D, 0x01, 0x9D, 0x09, 0x9D, 0x09, 0x7C, 0x19, 0x9C, 0x09, 0x59, 0x3A, 0xDD, 0x53, 0xFF, 0x44, 0x1D, 0x34, 0x7D, 0x24, 0xFC, 0x3E, 0xBF, 0x27, 0x1F, 0x17, 0x3F, 0x0F, 0x7F, 0x0F, 0x9F, 0x01, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x90, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x7F, 0x37, 0x3F, 0x46, 0xDE, 0x6E, 0xBF, 0x85, 0xDD, 0x73, 0x96, 0x82, 0x73, 0xAA, 0x94, 0xBA, 0x34, 0xCA, 0x34, 0xCA, + 0x13, 0xD1, 0xF3, 0xD1, 0xD3, 0xD1, 0xF3, 0xD1, 0xD3, 0x01, 0xD1, 0xF3, 0x01, 0xCA, 0x14, 0x86, 0xC2, 0x55, 0xBA, 0x76, 0xA2, 0x35, 0x60, 0xD0, 0x58, 0xF0, 0x51, 0x31, 0x49, 0x51, 0x01, 0x41, 0x51, 0x80, 0x39, 0x51, 0x01, 0x39, 0x71, 0x80, 0x31, 0x71, 0x05, 0x31, 0x51, 0x80, 0x29, 0x51, 0x03, 0x29, 0x31, 0x01, 0x21, 0x32, 0x81, 0x21, 0x52, 0x21, 0x32, 0x02, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, + 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x0B, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x30, 0x29, 0x50, 0x21, 0x30, 0x01, 0x19, 0x10, 0x89, 0x19, 0x31, 0x19, 0x11, 0x19, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xD7, 0x11, 0xD9, 0x09, 0xD9, 0x09, 0xB9, 0x01, 0xB9, 0x05, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x85, 0x01, 0xD8, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x53, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x50, 0x06, 0x21, 0x2F, 0x81, 0x19, 0x12, 0x11, 0x11, 0x02, 0x19, 0x32, 0x03, 0x19, 0x11, 0x80, 0x19, 0x32, 0x11, 0x19, 0x11, 0x01, 0x11, 0x11, 0x02, 0x19, 0x11, 0x80, 0x11, 0x11, 0x07, 0x19, 0x11, 0x80, 0x11, 0x11, 0x06, 0x19, 0x11, 0x80, 0x11, 0x11, + 0x0A, 0x19, 0x11, 0x81, 0x19, 0x12, 0x19, 0x11, 0x01, 0x11, 0x11, 0x01, 0x19, 0x11, 0x02, 0x19, 0x12, 0x80, 0x19, 0x11, 0x02, 0x19, 0x12, 0x04, 0x19, 0x11, 0x80, 0x19, 0x32, 0x07, 0x19, 0x12, 0x01, 0x19, 0x32, 0x81, 0x11, 0x12, 0x19, 0x32, 0x0D, 0x19, 0x11, 0x01, 0x11, 0x11, 0x02, 0x19, 0x11, 0x01, 0x11, 0x11, 0x82, 0x10, 0xF1, 0x19, 0x11, 0x10, 0xF1, 0x04, 0x19, 0x11, 0x83, 0x10, 0xF1, 0x11, 0x11, 0x19, 0x11, 0x11, 0x11, 0x03, 0x19, 0x11, 0x81, 0x11, 0x11, 0x19, 0x11, 0x01, 0x11, 0x11, 0x81, 0x19, 0x11, 0x11, 0x11, 0x01, 0x19, 0x11, 0x03, 0x11, 0x11, 0x03, 0x19, 0x11, 0x82, 0x10, 0xF1, 0x19, 0x11, 0x10, 0xF1, 0x03, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x10, 0x21, 0x31, 0x01, 0x19, 0x31, 0x81, 0x19, 0x51, 0x19, 0x52, 0x01, 0x11, 0x32, 0x8D, 0x09, 0x33, 0x09, 0x53, 0x11, 0x95, 0x19, 0xF7, 0x1A, 0x17, 0x22, 0x17, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x32, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x03, 0x29, + 0x10, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x87, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB6, 0x19, 0xD7, 0x11, 0xD8, 0x11, 0xB7, 0x09, 0x97, 0x09, 0x76, 0x09, 0x55, 0x09, 0x54, 0x01, 0x09, 0x34, 0x81, 0x09, 0x55, 0x11, 0xB6, 0x01, 0x19, 0xF8, 0x85, 0x19, 0xD7, 0x19, 0x75, 0x19, 0x13, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x80, 0x28, 0xEE, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x20, 0xEF, 0x05, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, + 0x21, 0x0F, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x05, 0x28, 0xEE, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x86, 0x31, 0x2F, 0x29, 0x0F, 0x31, 0x0F, 0x29, 0x0F, 0x28, 0xEE, 0x29, 0x0F, 0x31, 0x0F, 0x01, 0x30, 0xEE, 0x01, 0x31, 0x0E, 0x01, 0x39, 0x0E, 0x83, 0x30, 0xED, 0x30, 0xCD, 0x30, 0xAC, 0x28, 0x8C, 0x01, 0x28, 0x6B, 0x8E, 0x28, 0x4B, 0x30, 0x6B, 0x30, 0x4B, 0x40, 0xAC, 0x51, 0x2E, 0x69, 0xD0, 0x7A, 0x32, 0x9B, 0x15, 0xBC, 0x18, 0xD4, 0xBB, 0xE5, 0x3D, 0xE5, 0x3C, 0xDD, 0x1C, 0xDC, 0xDB, 0xD4, 0xBA, 0x01, 0xD4, 0x99, 0x87, 0xD4, 0x79, 0xD4, 0x78, 0xDC, 0x79, 0xE4, 0x99, 0xDC, 0x79, 0xDC, 0x78, 0xDC, 0x58, 0xDC, 0x37, 0x01, 0xDC, 0x58, 0x8F, 0xD4, 0x78, 0xD4, 0x99, 0xD4, 0xFA, 0xC4, 0xB8, 0xA4, 0x56, 0x94, 0x96, 0x95, 0x38, 0x8D, 0xDA, 0x75, 0xFB, 0x6E, 0x9C, 0x56, 0xDD, 0x47, 0x1E, 0x37, 0x3D, 0x27, 0x5E, 0x1F, 0x5E, 0x17, 0x7E, 0x01, 0x0F, 0xBF, 0x80, 0x07, 0xBF, 0x20, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x82, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xFF, 0x07, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x05, 0x07, 0xDE, 0x92, 0x07, 0x9D, 0x0F, 0x9D, 0x17, 0x7D, 0x27, 0x3C, 0x3E, 0xFB, 0x4E, 0x9A, 0x5E, 0x19, 0x5D, 0x36, 0x5C, 0xB5, 0x64, 0xB5, 0x64, 0xF5, 0x6D, 0xF8, 0x56, 0x99, 0x3E, 0xD8, 0x2F, 0x18, 0x16, 0xF7, 0x0E, + 0xF6, 0x06, 0xF6, 0x07, 0x16, 0x01, 0x07, 0x36, 0x80, 0x07, 0x35, 0x01, 0x07, 0x15, 0x01, 0x07, 0x14, 0x03, 0x06, 0xF4, 0x80, 0x06, 0xF3, 0x04, 0x06, 0xD3, 0x01, 0x06, 0xB2, 0x01, 0x06, 0x92, 0x02, 0x06, 0x72, 0x81, 0x06, 0x52, 0x06, 0x53, 0x01, 0x06, 0x33, 0x80, 0x06, 0x13, 0x01, 0x05, 0xF4, 0x80, 0x05, 0xD4, 0x01, 0x05, 0xB4, 0x01, 0x05, 0x95, 0x8B, 0x05, 0x76, 0x05, 0x56, 0x05, 0x57, 0x05, 0x38, 0x05, 0x19, 0x04, 0xF9, 0x04, 0xDA, 0x04, 0xDB, 0x04, 0xBB, 0x04, 0x9C, 0x04, 0x7C, 0x04, 0x7D, 0x02, 0x04, 0x5D, 0x81, 0x04, 0x3D, 0x04, 0x3E, 0x03, 0x04, 0x1E, 0x82, 0x03, 0xFE, 0x03, 0xDE, 0x03, 0xDF, 0x02, 0x03, 0xBF, 0x80, 0x03, 0xDF, 0x01, 0x03, 0xBF, 0x01, 0x03, 0x9F, 0x03, 0x03, 0x7F, 0x01, 0x03, 0x5F, 0x02, 0x03, 0x3F, 0x81, 0x03, 0x5F, 0x03, 0x3F, 0x01, 0x03, 0x1F, 0x80, 0x02, 0xFF, 0x03, 0x02, 0xDF, 0x80, 0x02, 0xBF, 0x02, 0x02, 0x9F, 0x01, 0x02, 0x7F, 0x84, 0x02, 0x5F, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x02, 0x1F, 0x01, 0x01, 0xDF, 0x01, 0x01, 0xBE, 0x80, 0x01, 0xDF, 0x01, 0x01, 0xBE, 0x8C, 0x01, 0x9D, 0x09, 0xBD, 0x11, 0xBD, 0x11, 0xBB, 0x11, 0x99, 0x43, 0x7F, 0x43, 0xFE, 0x3C, 0x9E, 0x24, 0xBC, 0x2E, 0x3F, 0x2E, 0xFF, 0x17, 0x1F, 0x0F, 0x5F, 0x01, 0x0F, 0x9F, 0x93, 0x0F, 0xBF, 0x07, 0xBF, 0x07, 0x9F, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x9F, 0x27, 0x3E, 0x37, 0x1E, 0x56, 0xDE, 0x76, 0x5E, 0x84, 0xDA, 0x6A, 0x93, 0x8A, 0x53, 0xB2, 0x74, 0xC2, 0x54, 0xCA, 0x34, 0xC9, 0xD2, 0xD1, 0xF3, 0xC9, 0xD3, 0xD1, 0xF4, 0x01, + 0xD1, 0xD3, 0x8B, 0xC9, 0xF3, 0xC9, 0xF4, 0xC1, 0xF4, 0xC2, 0x35, 0xB2, 0x76, 0x89, 0xB3, 0x50, 0x6E, 0x51, 0x10, 0x49, 0x31, 0x41, 0x31, 0x41, 0x51, 0x39, 0x51, 0x01, 0x39, 0x71, 0x07, 0x31, 0x51, 0x05, 0x29, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x52, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x07, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0A, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, + 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x0E, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x33, 0x11, 0x33, 0x11, 0x55, 0x11, 0xB7, 0x11, 0xB8, 0x09, 0xB9, 0x09, 0xD9, 0x06, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x85, 0x09, 0xD9, 0x09, 0xF8, 0x11, 0xB7, 0x11, 0x95, 0x19, 0x54, 0x10, 0xF2, 0x01, 0x19, 0x11, 0x80, 0x18, 0xF0, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x11, 0x33, 0x11, 0x53, 0x06, 0x11, 0x33, 0x80, 0x11, 0x32, 0x05, 0x11, 0x33, 0x01, 0x11, 0x32, 0x03, 0x11, 0x12, 0x81, 0x11, 0x32, 0x11, 0x12, 0x05, 0x11, 0x32, 0x06, 0x11, 0x33, 0x80, 0x11, 0x32, 0x03, 0x11, 0x33, 0x01, 0x11, 0x32, 0x05, 0x11, 0x33, 0x01, 0x11, 0x12, 0x01, 0x11, 0x33, 0x81, 0x11, 0x32, 0x11, 0x12, 0x08, 0x11, 0x33, 0x80, 0x11, 0x32, 0x17, 0x11, 0x33, 0x80, 0x11, 0x53, 0x04, 0x11, 0x33, 0x80, 0x11, 0x53, 0x01, 0x11, 0x32, 0x81, 0x11, 0x33, 0x11, 0x13, 0x01, 0x11, 0x33, 0x01, 0x11, 0x32, 0x02, 0x11, 0x33, 0x81, 0x11, 0x12, 0x11, 0x33, + 0x01, 0x11, 0x32, 0x01, 0x11, 0x33, 0x01, 0x11, 0x13, 0x0A, 0x11, 0x33, 0x80, 0x11, 0x13, 0x02, 0x11, 0x33, 0x80, 0x11, 0x13, 0x01, 0x11, 0x33, 0x81, 0x11, 0x32, 0x11, 0x33, 0x05, 0x11, 0x32, 0x80, 0x11, 0x53, 0x01, 0x11, 0x32, 0x03, 0x11, 0x33, 0x04, 0x11, 0x32, 0x81, 0x11, 0x12, 0x11, 0x32, 0x01, 0x19, 0x32, 0x05, 0x19, 0x31, 0x01, 0x19, 0x52, 0x8E, 0x11, 0x32, 0x09, 0x33, 0x09, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x37, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x08, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x84, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8C, 0x11, 0x32, 0x11, 0x54, 0x11, 0x96, + 0x19, 0xF8, 0x11, 0xF8, 0x11, 0xB8, 0x09, 0x97, 0x09, 0x77, 0x09, 0x76, 0x09, 0x55, 0x09, 0x35, 0x01, 0x35, 0x09, 0x76, 0x02, 0x19, 0xF8, 0x86, 0x19, 0xB6, 0x11, 0x34, 0x19, 0x12, 0x21, 0x32, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x04, 0x28, 0xEE, 0x80, 0x28, 0xCD, 0x05, 0x28, 0xEE, 0x09, 0x29, 0x0E, 0x03, 0x20, 0xEE, 0x83, 0x21, 0x0F, 0x20, 0xEE, 0x20, 0xEF, 0x29, 0x0F, 0x01, 0x20, 0xEF, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x84, 0x31, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x28, 0xEE, 0x29, 0x0E, 0x02, 0x28, 0xEE, 0x01, 0x28, 0xCE, 0x01, 0x28, 0xEE, 0x02, 0x29, 0x0E, 0x81, 0x28, 0xED, 0x28, 0xCD, 0x01, 0x28, 0xAD, 0x80, 0x28, 0xCD, 0x01, 0x28, 0xAD, 0x85, 0x30, 0xCD, 0x30, 0x8C, 0x30, 0xAC, 0x30, 0x6B, 0x28, 0x4A, 0x28, 0x29, 0x01, 0x20, 0x09, 0x88, 0x28, 0x29, 0x38, 0xAB, 0x59, 0x6E, 0x7A, 0x52, 0x9B, 0x56, 0xAB, 0xF8, 0xC4, 0x7A, 0xCC, 0xBB, + 0xD4, 0xDC, 0x01, 0xDC, 0xFC, 0x01, 0xDC, 0xFB, 0x01, 0xDC, 0xDA, 0x80, 0xDC, 0xB9, 0x02, 0xD4, 0x99, 0x84, 0xDC, 0x99, 0xD4, 0x78, 0xDC, 0x78, 0xD4, 0x58, 0xDC, 0x58, 0x02, 0xDC, 0x78, 0x01, 0xDC, 0x57, 0x91, 0xDC, 0x78, 0xD4, 0x98, 0xD4, 0xD9, 0xC4, 0xB8, 0xA4, 0x56, 0x94, 0x56, 0x94, 0xF8, 0x8D, 0x79, 0x7D, 0xDA, 0x6E, 0x3B, 0x5E, 0xBC, 0x4E, 0xDD, 0x3F, 0x1D, 0x2F, 0x3E, 0x1F, 0x5E, 0x17, 0x7E, 0x0F, 0x9E, 0x0F, 0xBF, 0x01, 0x07, 0xBF, 0x20, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x81, 0x07, 0xDF, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x06, 0x07, 0xDF, 0x05, 0x07, 0xDE, 0x01, 0x07, 0xBE, 0x93, 0x07, 0xBD, 0x07, 0x7D, 0x0F, 0x5C, 0x27, 0x3C, 0x3E, 0xFB, 0x4E, 0xBB, 0x66, 0x39, 0x6D, 0x98, 0x64, 0x54, 0x5B, 0xF2, 0x7D, 0x16, 0x75, 0xB7, 0x66, 0x58, 0x4E, 0xD8, 0x36, 0xF8, 0x1E, 0xD7, 0x0E, 0xD6, 0x06, 0xF6, 0x07, 0x16, 0x07, 0x36, 0x02, 0x07, 0x35, 0x80, 0x07, 0x34, 0x03, 0x07, 0x14, 0x82, 0x07, 0x13, 0x06, 0xF3, 0x07, 0x13, 0x04, 0x06, 0xF2, 0x03, 0x06, 0xD1, 0x01, 0x06, 0xB1, 0x01, 0x06, 0x91, 0x01, 0x06, 0x71, 0x01, 0x06, 0x51, 0x82, 0x06, 0x31, 0x06, 0x32, 0x06, 0x12, 0x01, 0x05, 0xF2, 0x81, 0x05, 0xD2, 0x05, 0xB3, 0x01, 0x05, 0x94, 0x88, 0x05, 0x55, 0x05, 0x56, 0x05, 0x16, 0x05, 0x17, 0x04, 0xF8, 0x04, 0xD9, 0x04, 0xB9, 0x04, 0xBA, 0x04, 0x9B, 0x01, 0x04, 0x7C, 0x81, 0x04, 0x5C, 0x04, 0x5D, 0x01, 0x04, 0x3D, 0x01, 0x04, 0x1D, 0x02, 0x03, 0xFE, 0x01, 0x03, 0xDE, 0x80, 0x03, 0xDF, 0x02, 0x03, 0xBF, 0x02, 0x03, + 0x9F, 0x04, 0x03, 0x7F, 0x02, 0x03, 0x5F, 0x03, 0x03, 0x3F, 0x80, 0x03, 0x1F, 0x01, 0x02, 0xFF, 0x02, 0x02, 0xDF, 0x01, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x01, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x80, 0x02, 0x3F, 0x01, 0x02, 0x1F, 0x01, 0x01, 0xFF, 0x80, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x83, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0xBE, 0x01, 0x9E, 0x01, 0x01, 0x7D, 0x8B, 0x09, 0xBC, 0x01, 0x7A, 0x1A, 0x5B, 0x43, 0xFF, 0x34, 0x3E, 0x2C, 0xBD, 0x15, 0x3D, 0x2E, 0xDF, 0x1F, 0x1F, 0x0F, 0x5F, 0x0F, 0x7F, 0x0F, 0x9F, 0x03, 0x07, 0xBF, 0x8D, 0x07, 0x9F, 0x17, 0x9F, 0x27, 0xBF, 0x2F, 0x5F, 0x46, 0xDE, 0x66, 0xBF, 0x85, 0xFE, 0x6B, 0x75, 0x7A, 0x73, 0x9A, 0x54, 0xBA, 0x74, 0xC2, 0x34, 0xCA, 0x13, 0xC9, 0xF3, 0x01, 0xD1, 0xF3, 0x01, 0xD1, 0xD3, 0x01, 0xD1, 0xF4, 0x87, 0xCA, 0x14, 0xC2, 0x35, 0xBA, 0x35, 0xB2, 0x76, 0x79, 0x52, 0x58, 0xF0, 0x51, 0x31, 0x49, 0x31, 0x01, 0x41, 0x51, 0x83, 0x39, 0x71, 0x39, 0x51, 0x39, 0x71, 0x31, 0x71, 0x04, 0x31, 0x51, 0x02, 0x31, 0x31, 0x04, 0x29, 0x31, 0x03, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x07, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x29, + 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x18, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x0A, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x19, 0x31, 0x84, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x19, 0xD8, 0x11, 0xF9, 0x01, 0x09, 0xD9, 0x83, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xFB, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x88, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xB7, 0x19, + 0x96, 0x11, 0x33, 0x19, 0x12, 0x19, 0x32, 0x21, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x11, 0x95, 0x11, 0x96, 0x11, 0xB6, 0x06, 0x11, 0x95, 0x80, 0x11, 0x96, 0x02, 0x11, 0x95, 0x01, 0x11, 0x96, 0x01, 0x11, 0x95, 0x01, 0x11, 0x96, 0x87, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x96, 0x11, 0x95, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x96, 0x11, 0xB6, 0x01, 0x11, 0x96, 0x80, 0x11, 0xB6, 0x02, 0x11, 0x96, 0x80, 0x11, 0xB6, 0x03, 0x11, 0x96, 0x81, 0x11, 0x95, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x80, 0x11, 0x95, 0x02, 0x11, 0xB6, 0x80, 0x11, 0x95, 0x08, 0x11, 0xB6, 0x80, 0x11, 0x95, 0x01, 0x11, 0x96, 0x04, 0x11, 0xB6, 0x80, 0x11, 0xB5, 0x02, 0x11, 0xB6, 0x84, 0x11, 0x95, 0x11, 0xB6, 0x11, 0x95, 0x11, 0xB6, 0x11, 0x95, 0x01, 0x11, 0xB6, 0x81, 0x19, 0xB6, 0x11, 0xB5, 0x01, 0x11, 0xB6, 0x82, 0x11, 0xB5, 0x11, 0x95, 0x11, 0xB6, 0x01, 0x11, 0x95, 0x06, 0x11, 0x96, 0x09, 0x11, 0x95, 0x80, 0x11, 0x96, 0x05, 0x11, 0x95, 0x01, 0x11, 0xB6, 0x81, 0x11, 0x96, 0x11, 0x95, 0x01, 0x11, 0xB6, 0x84, 0x11, 0x96, 0x11, 0xB6, 0x11, 0xB5, 0x11, 0xB6, 0x11, 0x96, 0x02, 0x11, 0xB6, 0x80, 0x11, 0x95, 0x05, 0x11, 0xB6, 0x80, 0x19, 0xB6, 0x04, 0x11, 0xB6, 0x81, 0x19, 0xD6, 0x11, 0xD6, 0x01, 0x19, 0xB6, 0x80, 0x19, 0xD6, 0x01, 0x11, 0xB6, 0x81, 0x19, 0xB6, 0x11, 0xB6, 0x05, 0x19, 0xB6, 0x88, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x95, 0x11, 0x74, 0x11, 0x53, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x03, 0x19, 0x31, + 0x82, 0x21, 0x52, 0x21, 0x72, 0x19, 0x72, 0x01, 0x11, 0x32, 0x90, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x22, 0x37, 0x22, 0x17, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x53, 0x19, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x05, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x05, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x07, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x8E, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x50, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x54, 0x11, 0x96, 0x19, 0xF8, 0x11, 0xF8, 0x11, 0xD8, 0x09, 0x97, 0x09, 0x77, 0x09, 0x76, 0x01, 0x09, 0x56, 0x88, 0x09, 0x96, 0x11, 0xF8, 0x1A, 0x18, 0x19, 0xF8, 0x21, 0xF8, 0x19, 0x95, 0x11, 0x33, 0x19, 0x12, 0x21, 0x11, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, + 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x28, 0xEE, 0x20, 0xCE, 0x20, 0xAD, 0x20, 0x8C, 0x03, 0x20, 0x6C, 0x01, 0x28, 0x8C, 0x80, 0x20, 0x8C, 0x01, 0x28, 0x8C, 0x80, 0x28, 0xAC, 0x01, 0x28, 0xCD, 0x85, 0x28, 0xAD, 0x28, 0xED, 0x28, 0xCD, 0x28, 0xEE, 0x28, 0xED, 0x29, 0x0E, 0x01, 0x28, 0xEE, 0x02, 0x29, 0x0E, 0x01, 0x28, 0xEE, 0x81, 0x29, 0x0F, 0x28, 0xEE, 0x01, 0x20, 0xEE, 0x80, 0x21, 0x0F, 0x02, 0x20, 0xEF, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x86, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x20, 0xEF, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x84, 0x28, 0xEE, 0x29, 0x0E, 0x29, 0x0F, 0x28, 0xEE, 0x29, 0x0F, 0x02, 0x28, 0xEE, 0x80, 0x28, 0xCD, 0x01, 0x28, 0xCE, 0x03, 0x28, 0xCD, 0x01, 0x30, 0xEE, 0x85, 0x30, 0xED, 0x31, 0x0D, 0x28, 0xED, 0x28, 0xAC, 0x20, 0x8B, 0x20, 0x6B, 0x01, 0x20, 0x2A, 0x94, 0x28, 0x2A, 0x28, 0x0A, 0x20, 0x0A, 0x28, 0x2A, 0x30, 0x2A, 0x38, 0x6A, 0x40, 0xAB, 0x51, 0x2D, 0x72, 0x10, 0x92, 0xD3, 0xAB, 0xB6, 0xCC, 0x79, 0xD4, 0xFB, 0xDD, 0x1B, 0xE5, 0x1C, 0xDC, 0xFB, 0xDC, 0xDA, 0xD4, 0xBA, 0xD4, 0x9A, 0xD4, 0x99, 0xD4, 0x79, 0x02, 0xD4, 0x99, 0x80, 0xDC, 0xB9, 0x01, 0xDC, 0x99, 0x83, 0xD4, 0x78, 0xDC, 0x78, 0xD4, 0x78, 0xDC, 0x78, 0x01, 0xD4, 0x58, 0x81, 0xDC, + 0x58, 0xDC, 0x78, 0x01, 0xD4, 0x37, 0x93, 0xD4, 0x57, 0xD4, 0x77, 0xDC, 0x98, 0xDC, 0xB8, 0xD4, 0xD9, 0xC4, 0xB8, 0xAC, 0x76, 0x9C, 0x76, 0x94, 0xD7, 0x8D, 0x79, 0x85, 0xDA, 0x76, 0x5C, 0x66, 0x7C, 0x56, 0xDD, 0x46, 0xFD, 0x37, 0x5E, 0x27, 0x5E, 0x1F, 0x7E, 0x17, 0x9E, 0x0F, 0xBE, 0x01, 0x0F, 0xDF, 0x04, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x04, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x06, 0x07, 0xDF, 0x82, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xBF, 0x0B, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x07, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x07, 0xDF, 0x01, 0x07, 0xDE, 0x06, 0x07, 0xBE, 0x92, 0x07, 0x7D, 0x07, 0x7C, 0x0F, 0x5C, 0x1F, 0x3C, 0x37, 0x1B, 0x4E, 0xDB, 0x66, 0x5A, 0x6D, 0x98, 0x74, 0xB6, 0x63, 0x92, 0x7C, 0x75, 0x85, 0x77, 0x76, 0x18, 0x5E, 0x78, 0x46, 0xB8, 0x26, 0xB6, 0x16, 0xB6, 0x0E, 0xF6, 0x0F, 0x36, 0x01, 0x07, 0x56, 0x80, 0x07, 0x55, 0x03, 0x07, 0x34, 0x03, 0x07, 0x33, 0x03, 0x07, 0x32, 0x01, 0x07, 0x11, 0x03, 0x07, 0x10, 0x83, 0x07, 0x0F, 0x06, 0xEF, 0x06, 0xF0, 0x06, 0xEF, 0x01, 0x06, 0xCF, 0x80, 0x06, 0xAF, 0x01, 0x06, 0x8F, 0x80, 0x06, 0x6F, 0x01, 0x06, 0x50, 0x01, 0x06, 0x30, 0x8C, 0x05, 0xF1, 0x05, 0xD1, 0x05, 0xB1, 0x05, 0x92, 0x05, 0x73, 0x05, 0x54, 0x05, 0x35, 0x05, 0x16, 0x04, 0xF7, 0x04, 0xD8, 0x04, 0xD9, 0x04, 0x99, 0x04, 0x9A, 0x01, 0x04, 0x7B, 0x01, 0x04, 0x5C, 0x80, 0x04, 0x3D, 0x02, 0x04, 0x1D, 0x02, 0x03, 0xFE, 0x81, 0x03, 0xDE, 0x03, 0xDF, 0x03, 0x03, + 0xBF, 0x01, 0x03, 0x9F, 0x02, 0x03, 0x7F, 0x04, 0x03, 0x5F, 0x02, 0x03, 0x3F, 0x01, 0x03, 0x1F, 0x01, 0x02, 0xFF, 0x02, 0x02, 0xDF, 0x80, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x02, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x02, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x80, 0x01, 0xBF, 0x01, 0x01, 0xBE, 0x02, 0x01, 0x9E, 0x8D, 0x01, 0x9D, 0x09, 0xBD, 0x09, 0xBC, 0x01, 0xBA, 0x1A, 0xDD, 0x2B, 0xFE, 0x24, 0x9E, 0x0C, 0xDD, 0x15, 0xDE, 0x1F, 0x1F, 0x0F, 0x1F, 0x0F, 0x5F, 0x0F, 0x9F, 0x0F, 0xBF, 0x02, 0x07, 0xBF, 0x8F, 0x07, 0x9F, 0x0F, 0x9F, 0x17, 0xBF, 0x27, 0x7F, 0x37, 0x1E, 0x4E, 0xDE, 0x76, 0x7E, 0x7D, 0x1B, 0x62, 0xD4, 0x82, 0x53, 0xA2, 0x33, 0xBA, 0x34, 0xCA, 0x34, 0xC9, 0xF3, 0xD2, 0x14, 0xD1, 0xF3, 0x01, 0xD1, 0xD3, 0x81, 0xC9, 0xD3, 0xC9, 0xF3, 0x01, 0xCA, 0x14, 0x88, 0xBA, 0x14, 0xB2, 0x35, 0xAA, 0x56, 0x60, 0xAF, 0x59, 0x11, 0x51, 0x51, 0x41, 0x30, 0x41, 0x51, 0x39, 0x51, 0x01, 0x39, 0x71, 0x02, 0x31, 0x71, 0x01, 0x31, 0x51, 0x02, 0x31, 0x31, 0x01, 0x29, 0x30, 0x03, 0x29, 0x31, 0x80, 0x29, 0x51, 0x02, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x04, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x08, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, + 0x82, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, + 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x89, 0x19, 0x30, 0x19, 0x31, 0x11, 0x12, 0x11, 0x53, 0x11, 0x95, 0x11, 0xD8, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0x99, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x82, 0x01, 0xFA, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0x09, 0xD8, 0x86, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x1A, 0x18, 0x81, 0x19, 0xF8, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x87, 0x22, 0x18, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x39, 0x1A, 0x18, 0x22, 0x38, 0x1A, 0x38, 0x1A, 0x39, 0x07, 0x22, 0x39, 0x80, 0x1A, 0x39, 0x01, 0x22, 0x39, 0x01, 0x22, 0x19, 0x01, 0x22, 0x39, 0x80, 0x1A, 0x18, 0x01, 0x22, 0x39, 0x81, 0x1A, 0x38, 0x22, 0x39, 0x02, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x02, 0x1A, 0x38, 0x80, 0x22, 0x38, 0x01, 0x1A, 0x38, 0x02, 0x1A, 0x18, 0x80, 0x1A, 0x38, 0x02, 0x1A, 0x18, 0x82, 0x1A, 0x38, 0x1A, 0x18, 0x22, 0x38, 0x01, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x01, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x02, 0x1A, 0x18, 0x81, 0x22, 0x38, 0x1A, 0x38, 0x01, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x01, 0x1A, 0x18, 0x84, 0x22, 0x18, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x38, 0x22, 0x18, 0x02, 0x22, 0x38, 0x82, 0x1A, 0x18, 0x22, 0x38, 0x22, 0x18, 0x03, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x02, 0x1A, 0x18, 0x80, 0x22, 0x18, 0x0E, 0x1A, + 0x18, 0x80, 0x22, 0x38, 0x02, 0x1A, 0x18, 0x80, 0x22, 0x38, 0x03, 0x1A, 0x18, 0x83, 0x22, 0x38, 0x1A, 0x38, 0x1A, 0x18, 0x1A, 0x38, 0x02, 0x1A, 0x18, 0x01, 0x22, 0x38, 0x01, 0x1A, 0x18, 0x83, 0x22, 0x39, 0x22, 0x38, 0x22, 0x39, 0x22, 0x38, 0x04, 0x22, 0x39, 0x84, 0x1A, 0x18, 0x22, 0x38, 0x1A, 0x38, 0x22, 0x38, 0x1A, 0x18, 0x02, 0x22, 0x38, 0x03, 0x1A, 0x18, 0x01, 0x22, 0x38, 0x80, 0x22, 0x18, 0x04, 0x22, 0x38, 0x84, 0x22, 0x17, 0x19, 0xF6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x88, 0x21, 0x31, 0x29, 0x72, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x82, 0x19, 0xB5, 0x11, 0x74, 0x19, 0x53, 0x01, 0x19, 0x12, 0x02, 0x21, 0x31, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x09, 0x29, 0x10, 0x02, 0x21, 0x10, 0x08, 0x29, 0x10, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, + 0x29, 0x10, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x09, 0x54, 0x11, 0x96, 0x02, 0x11, 0xD8, 0x80, 0x11, 0xB8, 0x01, 0x09, 0x97, 0x82, 0x11, 0xB7, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x1A, 0x18, 0x89, 0x22, 0x18, 0x19, 0xB6, 0x11, 0x34, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x86, 0x29, 0x0F, 0x28, 0xEF, 0x20, 0xCE, 0x18, 0x8C, 0x20, 0xAC, 0x20, 0x8B, 0x18, 0x4B, 0x01, 0x20, 0x2A, 0x88, 0x20, 0x4B, 0x20, 0x2A, 0x20, 0x4B, 0x28, 0x4B, 0x20, 0x4A, 0x20, 0x2A, 0x20, 0x4A, 0x20, 0x4B, 0x28, 0x8B, 0x01, 0x30, 0xAC, 0x02, 0x28, 0xAC, 0x81, 0x28, 0xCC, 0x28, 0xAC, 0x01, 0x28, 0xCD, 0x80, 0x28, 0xAD, 0x01, 0x28, 0xED, 0x01, 0x28, 0xCD, 0x81, 0x28, 0xEE, 0x28, 0xCD, 0x01, 0x20, 0xCD, 0x84, 0x28, 0xCE, 0x20, 0xCE, 0x20, 0xCD, 0x20, 0xCE, 0x28, 0xEE, 0x02, 0x20, 0xCE, 0x01, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x81, 0x20, 0xAD, 0x20, 0xCD, 0x02, 0x20, 0xCE, 0x80, 0x28, 0xEE, 0x02, 0x20, 0xCE, 0x02, 0x28, 0xCE, 0x80, 0x28, 0xCD, 0x01, 0x20, 0xAD, 0x02, 0x28, 0xCD, 0x80, 0x28, 0xCE, 0x01, 0x28, 0xAD, 0x01, 0x28, 0x8C, 0x81, 0x28, 0xAC, 0x30, 0xAD, 0x01, + 0x30, 0xCD, 0x82, 0x28, 0x8C, 0x30, 0xAC, 0x30, 0x8C, 0x01, 0x28, 0x6B, 0x81, 0x20, 0x2A, 0x18, 0x09, 0x02, 0x18, 0x08, 0x88, 0x20, 0x08, 0x28, 0x29, 0x40, 0xCC, 0x59, 0x8F, 0x7A, 0x72, 0x9B, 0x36, 0xAB, 0xB7, 0xBC, 0x59, 0xCC, 0xBB, 0x01, 0xDC, 0xFC, 0x01, 0xDC, 0xFB, 0x02, 0xDC, 0xDA, 0x01, 0xDC, 0xB9, 0x04, 0xDC, 0x99, 0x01, 0xDC, 0x78, 0x82, 0xDC, 0x79, 0xDC, 0x99, 0xDC, 0x98, 0x02, 0xDC, 0x78, 0x02, 0xD4, 0x57, 0x80, 0xDC, 0x78, 0x01, 0xD4, 0x57, 0x95, 0xD4, 0x58, 0xD4, 0x78, 0xD4, 0x77, 0xD4, 0x97, 0xD4, 0xB8, 0xD4, 0xD8, 0xC4, 0x97, 0xAC, 0x56, 0x9C, 0x35, 0x94, 0xB6, 0x8D, 0x18, 0x85, 0xDA, 0x7E, 0x3B, 0x6E, 0x7C, 0x5E, 0xBD, 0x4E, 0xFD, 0x3F, 0x1E, 0x2F, 0x5E, 0x1F, 0x7E, 0x17, 0x9E, 0x0F, 0x9E, 0x0F, 0xBE, 0x0C, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x06, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x80, 0x0F, 0xDF, 0x01, 0x07, 0xBF, 0x0A, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x07, 0xDF, 0x08, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x01, 0x07, 0xDE, 0x01, 0x07, 0xBE, 0x04, 0x07, 0x9E, 0x01, 0x07, 0x9D, 0x92, 0x07, 0x7D, 0x0F, 0x5C, 0x1F, 0x5C, 0x2F, 0x3C, 0x46, 0xFB, 0x56, 0x3A, 0x6D, 0x78, 0x7C, 0xB6, 0x7B, 0xF4, 0x7B, 0xD3, 0x84, 0xD6, 0x7D, 0x97, 0x6E, 0x38, 0x56, 0x98, 0x36, 0xB7, 0x1E, 0xB6, 0x16, 0xF6, 0x0F, 0x36, 0x0F, 0x56, 0x01, 0x07, 0x55, 0x02, 0x07, 0x54, 0x03, 0x07, 0x53, 0x01, 0x07, 0x32, 0x80, 0x07, 0x52, 0x01, 0x07, 0x51, 0x80, 0x07, 0x31, 0x01, 0x07, 0x30, 0x01, 0x07, 0x2F, 0x03, 0x07, 0x2E, + 0x02, 0x07, 0x0E, 0x01, 0x06, 0xEE, 0x01, 0x06, 0xCE, 0x01, 0x06, 0xAE, 0x8F, 0x06, 0x8E, 0x06, 0x6E, 0x06, 0x4F, 0x06, 0x2F, 0x06, 0x0F, 0x05, 0xD0, 0x05, 0xB0, 0x05, 0x91, 0x05, 0x72, 0x05, 0x53, 0x05, 0x34, 0x04, 0xF5, 0x04, 0xF6, 0x04, 0xD7, 0x04, 0xB8, 0x04, 0x99, 0x01, 0x04, 0x7A, 0x01, 0x04, 0x5B, 0x80, 0x04, 0x3C, 0x01, 0x04, 0x1C, 0x01, 0x03, 0xFD, 0x80, 0x03, 0xDD, 0x01, 0x03, 0xDE, 0x80, 0x03, 0xBE, 0x01, 0x03, 0xBF, 0x01, 0x03, 0x9F, 0x03, 0x03, 0x7F, 0x03, 0x03, 0x5F, 0x02, 0x03, 0x3F, 0x02, 0x03, 0x1F, 0x01, 0x02, 0xFF, 0x01, 0x02, 0xDF, 0x80, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x81, 0x02, 0x7F, 0x02, 0x9F, 0x01, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x02, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x80, 0x01, 0x9E, 0x01, 0x01, 0xBF, 0x8E, 0x01, 0x9E, 0x01, 0xBE, 0x01, 0x7D, 0x01, 0x9D, 0x01, 0x7B, 0x01, 0xFB, 0x1B, 0x3D, 0x1C, 0x1E, 0x14, 0xFF, 0x0D, 0x5E, 0x16, 0x9F, 0x17, 0x3F, 0x0F, 0x5F, 0x0F, 0x7F, 0x0F, 0xBF, 0x03, 0x07, 0xBF, 0x8F, 0x0F, 0xBF, 0x0F, 0x9F, 0x1F, 0x9F, 0x27, 0x3E, 0x3E, 0xFE, 0x5E, 0x9E, 0x7E, 0x1E, 0x7C, 0x59, 0x72, 0x93, 0x9A, 0x94, 0xB2, 0x54, 0xC2, 0x34, 0xCA, 0x14, 0xD1, 0xF3, 0xD1, 0xD3, 0xD1, 0xF4, 0x01, 0xD1, 0xD3, 0x80, 0xD1, 0xF4, 0x01, 0xC9, 0xF4, 0x87, 0xC2, 0x14, 0xBA, 0x14, 0xB2, 0x55, 0x91, 0xF4, 0x58, 0xAF, 0x59, 0x31, 0x49, 0x31, 0x41, 0x51, 0x01, 0x39, 0x51, 0x80, 0x39, 0x71, 0x02, 0x31, 0x71, 0x82, 0x31, 0x51, 0x31, 0x71, 0x31, 0x51, 0x03, 0x31, 0x31, + 0x80, 0x29, 0x31, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x29, 0x30, 0x05, 0x21, 0x30, 0x80, 0x29, 0x30, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, + 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x84, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x09, 0x33, 0x11, 0xB6, 0x01, 0x11, 0xD8, 0x82, 0x09, 0xD9, 0x09, 0xDA, 0x01, 0xB9, 0x03, 0x01, 0xDA, 0x81, 0x01, 0xFA, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x89, 0x01, 0xB8, 0x09, 0xB8, 0x11, 0xB7, 0x19, 0x96, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x1A, 0x18, 0x06, 0x19, 0xF8, 0x80, 0x1A, 0x18, 0x02, 0x22, 0x18, 0x01, 0x22, 0x38, 0x02, 0x1A, 0x18, 0x84, 0x22, 0x18, 0x22, 0x19, 0x19, 0xF8, 0x22, 0x39, 0x1A, 0x18, 0x01, 0x22, 0x19, 0x01, 0x22, 0x18, 0x01, 0x22, 0x19, + 0x84, 0x22, 0x18, 0x19, 0xF8, 0x1A, 0x18, 0x22, 0x18, 0x1A, 0x18, 0x01, 0x22, 0x18, 0x0C, 0x1A, 0x18, 0x81, 0x1A, 0x17, 0x1A, 0x18, 0x01, 0x19, 0xF7, 0x80, 0x19, 0xD7, 0x02, 0x19, 0xF7, 0x03, 0x19, 0xF8, 0x80, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x80, 0x1A, 0x17, 0x0C, 0x19, 0xF7, 0x81, 0x1A, 0x18, 0x22, 0x18, 0x01, 0x19, 0xF7, 0x80, 0x1A, 0x18, 0x01, 0x19, 0xF7, 0x80, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x81, 0x19, 0xF7, 0x1A, 0x18, 0x01, 0x19, 0xF7, 0x81, 0x1A, 0x18, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x80, 0x1A, 0x18, 0x09, 0x19, 0xF8, 0x07, 0x1A, 0x18, 0x81, 0x19, 0xF8, 0x1A, 0x18, 0x03, 0x19, 0xF8, 0x81, 0x1A, 0x18, 0x19, 0xF8, 0x02, 0x1A, 0x18, 0x04, 0x19, 0xF8, 0x82, 0x1A, 0x18, 0x19, 0xF7, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x82, 0x19, 0xF8, 0x19, 0xF7, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x01, 0x1A, 0x17, 0x81, 0x19, 0xF7, 0x22, 0x18, 0x01, 0x19, 0xB6, 0x83, 0x19, 0xD7, 0x19, 0xF7, 0x22, 0x38, 0x1A, 0x17, 0x01, 0x19, 0xF7, 0x83, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x12, 0x11, 0x32, 0x01, 0x19, 0x11, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x82, 0x21, 0x32, 0x19, 0x32, 0x11, 0x32, 0x01, 0x11, 0x53, 0x81, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x82, 0x19, 0x95, 0x11, 0x74, 0x19, 0x54, 0x01, 0x19, 0x32, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, + 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x07, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x95, 0x21, 0x30, 0x19, 0x51, 0x19, 0x52, 0x11, 0x32, 0x11, 0x33, 0x09, 0x54, 0x11, 0xB6, 0x19, 0xF8, 0x11, 0xD8, 0x09, 0xB8, 0x11, 0xD8, 0x09, 0xB7, 0x11, 0xB7, 0x11, 0xD7, 0x19, 0xF8, 0x1A, 0x18, 0x22, 0x39, 0x22, 0x38, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x8A, 0x28, 0xEE, 0x8B, 0xD9, 0xCD, 0xBF, 0xD5, 0xFF, 0xBD, 0x3D, 0xAC, 0x9B, 0xA4, 0x5A, 0x93, 0xB8, 0x9B, 0xB8, 0x8B, 0x36, 0x72, 0x93, 0x01, 0x6A, 0x32, 0x8A, 0x59, 0xB0, 0x59, 0xAF, 0x49, 0x4E, 0x40, 0xEC, 0x38, 0xCC, 0x30, 0x8B, 0x30, 0xAB, 0x28, 0x6A, 0x28, 0x6B, + 0x28, 0x4A, 0x28, 0x6B, 0x01, 0x28, 0x4A, 0x84, 0x28, 0x6A, 0x28, 0x6B, 0x20, 0x2A, 0x20, 0x4B, 0x20, 0x2A, 0x01, 0x18, 0x2A, 0x02, 0x18, 0x0A, 0x83, 0x18, 0x2A, 0x18, 0x2B, 0x20, 0x4B, 0x18, 0x2B, 0x01, 0x20, 0x4B, 0x01, 0x20, 0x2B, 0x01, 0x20, 0x4B, 0x01, 0x18, 0x4B, 0x01, 0x18, 0x2B, 0x01, 0x20, 0x4B, 0x80, 0x20, 0x2B, 0x01, 0x20, 0x4B, 0x01, 0x20, 0x2B, 0x80, 0x20, 0x0A, 0x01, 0x18, 0x0A, 0x04, 0x18, 0x09, 0x02, 0x20, 0x0A, 0x9B, 0x20, 0x09, 0x20, 0x0A, 0x20, 0x09, 0x28, 0x4A, 0x30, 0x6B, 0x30, 0x8B, 0x38, 0xAC, 0x40, 0xCC, 0x41, 0x0D, 0x51, 0x4E, 0x59, 0x8F, 0x69, 0xF0, 0x7A, 0x72, 0x8B, 0x14, 0xA3, 0xB6, 0xB4, 0x59, 0xCC, 0xFB, 0xDD, 0x5C, 0xE5, 0x9D, 0xE5, 0x9E, 0xE5, 0x9D, 0xE5, 0x7D, 0xE5, 0x3C, 0xDD, 0x1C, 0xDC, 0xDB, 0xD4, 0x9A, 0xD4, 0x99, 0xD4, 0x79, 0x01, 0xDC, 0x79, 0x01, 0xDC, 0x78, 0x84, 0xDC, 0x98, 0xDC, 0x78, 0xE4, 0x99, 0xDC, 0x78, 0xE4, 0x98, 0x04, 0xDC, 0x78, 0x01, 0xDC, 0x58, 0x05, 0xDC, 0x57, 0x03, 0xD4, 0x57, 0x93, 0xD4, 0x77, 0xD4, 0x98, 0xD4, 0xB8, 0xCC, 0xD8, 0xC4, 0xB8, 0xAC, 0x77, 0x9C, 0x76, 0x94, 0xB7, 0x95, 0x59, 0x8D, 0xBA, 0x86, 0x5C, 0x76, 0x7C, 0x66, 0xBD, 0x4E, 0xDD, 0x3F, 0x1E, 0x37, 0x3E, 0x27, 0x7E, 0x1F, 0x7E, 0x17, 0x9E, 0x17, 0xBE, 0x01, 0x0F, 0xDF, 0x0D, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x02, 0x0F, 0xBF, 0x80, 0x0F, 0x9F, 0x02, 0x0F, 0xBF, 0x81, 0x07, 0xBF, 0x0F, 0xDF, 0x0A, + 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x03, 0x07, 0xBE, 0x01, 0x07, 0x7D, 0x01, 0x07, 0x9D, 0x80, 0x07, 0xBE, 0x01, 0x07, 0x9D, 0x95, 0x07, 0x7D, 0x0F, 0x7C, 0x17, 0x5C, 0x27, 0x5C, 0x3E, 0xFB, 0x56, 0x5A, 0x65, 0x78, 0x84, 0xF7, 0x94, 0x96, 0x83, 0xB3, 0x73, 0xB2, 0x84, 0xF6, 0x75, 0xD8, 0x5E, 0x38, 0x46, 0xB8, 0x26, 0x96, 0x1E, 0xF6, 0x17, 0x36, 0x0F, 0x56, 0x07, 0x35, 0x07, 0x55, 0x07, 0x75, 0x02, 0x07, 0x74, 0x01, 0x07, 0x53, 0x80, 0x07, 0x73, 0x02, 0x07, 0x72, 0x01, 0x07, 0x71, 0x85, 0x07, 0x70, 0x07, 0x50, 0x07, 0x6F, 0x07, 0x4F, 0x07, 0x6F, 0x07, 0x6E, 0x05, 0x07, 0x4D, 0x80, 0x07, 0x4E, 0x01, 0x07, 0x4D, 0x01, 0x07, 0x2D, 0x02, 0x07, 0x0D, 0x90, 0x06, 0xEE, 0x0E, 0xEE, 0x0E, 0xCF, 0x06, 0x8F, 0x06, 0x4F, 0x06, 0x0F, 0x05, 0xCF, 0x05, 0x90, 0x05, 0x71, 0x05, 0x52, 0x05, 0x33, 0x05, 0x14, 0x04, 0xD5, 0x04, 0xB6, 0x04, 0xB7, 0x04, 0x98, 0x04, 0x79, 0x01, 0x04, 0x5A, 0x01, 0x04, 0x3B, 0x84, 0x04, 0x1C, 0x03, 0xFC, 0x03, 0xFD, 0x03, 0xDD, 0x03, 0xDE, 0x02, 0x03, 0xBE, 0x02, 0x03, 0x9F, 0x01, 0x03, 0x7F, 0x01, 0x03, 0x5F, 0x81, 0x03, 0x3F, 0x03, 0x5F, 0x01, 0x03, 0x3F, 0x81, 0x03, 0x1F, 0x03, 0x3F, 0x01, 0x03, 0x1F, 0x02, 0x02, 0xFF, 0x01, 0x02, 0xDF, 0x80, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x03, 0x02, 0x7F, 0x01, 0x02, 0x3F, 0x80, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x80, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x81, 0x01, 0xBF, 0x01, 0xDF, 0x02, 0x01, 0xBF, 0xA2, 0x01, 0x9E, 0x01, 0xBF, 0x01, + 0x9E, 0x01, 0xDE, 0x01, 0xBE, 0x01, 0x9C, 0x01, 0x9B, 0x02, 0x5B, 0x13, 0xBE, 0x0C, 0x7E, 0x0D, 0x3E, 0x05, 0xDE, 0x16, 0xBF, 0x17, 0x3F, 0x0F, 0x7F, 0x0F, 0x9F, 0x0F, 0xBF, 0x0F, 0xDF, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0x9E, 0x17, 0x9F, 0x27, 0x7F, 0x2F, 0x1E, 0x46, 0xDE, 0x66, 0x5D, 0x85, 0xBD, 0x63, 0x14, 0x8A, 0xB4, 0xAA, 0x74, 0xBA, 0x34, 0xCA, 0x14, 0xC1, 0xB2, 0xC9, 0xD3, 0x01, 0xD1, 0xD3, 0x81, 0xD1, 0xB3, 0xD1, 0xF4, 0x01, 0xC9, 0xD3, 0x89, 0xCA, 0x14, 0xC2, 0x15, 0xBA, 0x35, 0xBA, 0xB7, 0x68, 0xF0, 0x58, 0xCF, 0x59, 0x72, 0x49, 0x51, 0x41, 0x51, 0x39, 0x51, 0x01, 0x39, 0x71, 0x04, 0x31, 0x51, 0x02, 0x31, 0x31, 0x81, 0x31, 0x51, 0x31, 0x31, 0x06, 0x29, 0x30, 0x01, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x07, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, + 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0B, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x08, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x50, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x86, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xF9, 0x09, 0xD9, 0x09, 0xFA, 0x05, 0x01, 0xDA, 0x8B, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0xF9, 0x09, 0xD9, + 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x33, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x11, 0x75, 0x82, 0x19, 0x96, 0x11, 0x95, 0x19, 0xB6, 0x01, 0x19, 0x96, 0x01, 0x11, 0x96, 0x81, 0x19, 0x96, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x02, 0x19, 0xB6, 0x01, 0x19, 0x96, 0x81, 0x19, 0xB6, 0x11, 0xB6, 0x02, 0x19, 0xB6, 0x80, 0x19, 0x96, 0x04, 0x19, 0xB6, 0x02, 0x19, 0x96, 0x0B, 0x19, 0xB6, 0x80, 0x19, 0xB5, 0x01, 0x19, 0xB6, 0x03, 0x19, 0xB5, 0x8A, 0x11, 0x95, 0x19, 0xB6, 0x11, 0x96, 0x19, 0xB6, 0x11, 0xB6, 0x11, 0x95, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0x95, 0x19, 0xB5, 0x19, 0x96, 0x01, 0x19, 0xB6, 0x80, 0x11, 0x95, 0x01, 0x19, 0xB6, 0x82, 0x11, 0x96, 0x19, 0xB6, 0x11, 0x95, 0x02, 0x19, 0xB5, 0x01, 0x19, 0x95, 0x01, 0x19, 0xB5, 0x82, 0x19, 0x95, 0x19, 0xB5, 0x19, 0x95, 0x04, 0x19, 0xB6, 0x80, 0x11, 0x95, 0x04, 0x19, 0xB6, 0x81, 0x11, 0xB6, 0x19, 0xB6, 0x03, 0x11, 0xB6, 0x84, 0x11, 0x96, 0x19, 0xB6, 0x11, 0xB6, 0x11, 0x96, 0x19, 0xB6, 0x01, 0x11, 0x96, 0x83, 0x19, 0xB6, 0x19, 0x96, 0x11, 0x95, 0x11, 0x96, 0x02, 0x19, 0xB6, 0x01, 0x11, 0x96, 0x80, 0x19, 0xB6, 0x01, 0x19, 0x96, 0x80, 0x19, 0xB6, 0x01, 0x11, 0x96, 0x83, 0x11, 0xB6, 0x19, 0xB6, 0x11, 0x95, 0x19, 0xB6, 0x04, 0x11, 0x96, 0x80, 0x11, 0x95, 0x01, 0x19, 0x96, 0x03, 0x11, 0x96, 0x80, 0x11, 0x95, 0x02, 0x19, 0x95, 0x80, 0x11, 0x95, 0x01, 0x11, 0x96, 0x05, 0x11, 0x95, 0x01, 0x11, 0x75, 0x8E, 0x19, 0x75, 0x11, 0x54, 0x11, 0x75, + 0x11, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xF6, 0x11, 0x74, 0x09, 0x12, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x21, 0x11, 0x01, 0x21, 0x31, 0x83, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x33, 0x01, 0x11, 0x74, 0x85, 0x19, 0xD6, 0x22, 0x18, 0x22, 0x17, 0x11, 0x95, 0x11, 0x75, 0x19, 0x54, 0x01, 0x19, 0x12, 0x81, 0x21, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x06, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x88, 0x21, 0x51, 0x19, 0x51, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x09, 0x75, 0x11, 0xD7, 0x11, 0xF8, 0x11, 0xD8, 0x01, 0x11, 0xB7, 0x01, 0x11, 0xD7, 0x86, 0x11, 0xB6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xD6, 0x19, + 0xB5, 0x19, 0x74, 0x11, 0x33, 0x01, 0x19, 0x11, 0x84, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x20, 0xEE, 0x20, 0xCE, 0x83, 0x98, 0xEE, 0x9F, 0x01, 0xE6, 0x5F, 0xA3, 0xE6, 0x1F, 0xD5, 0x9E, 0xCD, 0x5E, 0xC4, 0xFC, 0xC4, 0xBB, 0xC4, 0xDC, 0xC4, 0xDB, 0xCC, 0xFC, 0xC4, 0xBB, 0xCC, 0xDB, 0xC4, 0x9A, 0xBC, 0x9A, 0xB4, 0x59, 0xB4, 0x39, 0xAB, 0xF8, 0xA3, 0xD7, 0xA3, 0xB7, 0x9B, 0x96, 0x93, 0x55, 0x93, 0x56, 0x93, 0x35, 0x93, 0x76, 0x8B, 0x35, 0x93, 0x55, 0x82, 0xD4, 0x7A, 0x93, 0x6A, 0x11, 0x61, 0xD0, 0x51, 0x4E, 0x41, 0x0D, 0x38, 0xAC, 0x38, 0x8B, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x29, 0x28, 0x2A, 0x01, 0x28, 0x29, 0x02, 0x28, 0x09, 0x01, 0x20, 0x09, 0x01, 0x28, 0x09, 0x03, 0x28, 0x2A, 0x02, 0x30, 0x4A, 0x81, 0x30, 0x6A, 0x38, 0x8B, 0x01, 0x40, 0xAB, 0x85, 0x40, 0xEC, 0x59, 0x6E, 0x6A, 0x31, 0x82, 0xD4, 0x8B, 0x15, 0x9B, 0x77, 0x01, 0x9B, 0x97, 0x8B, 0xA3, 0xB7, 0xAB, 0xD8, 0xBC, 0x59, 0xCC, 0xDB, 0xCC, 0xFC, 0xD5, 0x3D, 0xDD, 0x3D, 0xD5, 0x3D, 0xDD, 0x3D, 0xDD, 0x5D, 0xE5, 0x7D, 0xE5, 0x5D, 0x01, 0xDD, 0x3C, 0x01, 0xDD, 0x1B, 0x01, 0xDC, 0xFA, 0x81, 0xD4, 0xDA, 0xD4, 0xB9, 0x01, 0xDC, 0xB9, 0x81, 0xDC, 0x99, 0xD4, 0x78, 0x02, 0xDC, 0x79, + 0x81, 0xDC, 0x78, 0xDC, 0x58, 0x01, 0xDC, 0x78, 0x81, 0xDC, 0x57, 0xDC, 0x78, 0x01, 0xDC, 0x58, 0x81, 0xE4, 0x78, 0xDC, 0x57, 0x02, 0xE4, 0x58, 0x82, 0xE4, 0x57, 0xE4, 0x58, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x97, 0xD4, 0x57, 0xD4, 0x77, 0xD4, 0x98, 0xCC, 0xB8, 0xCC, 0xD9, 0xC4, 0xD8, 0xAC, 0x97, 0x9C, 0x96, 0x94, 0xD7, 0x95, 0x38, 0x8D, 0xBA, 0x86, 0x1B, 0x76, 0x5C, 0x66, 0x9C, 0x56, 0xBC, 0x46, 0xFD, 0x37, 0x1E, 0x2F, 0x5E, 0x1F, 0x7E, 0x1F, 0x9E, 0x17, 0x9E, 0x0F, 0x9E, 0x0F, 0xBE, 0x0F, 0xDF, 0x10, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x01, 0x0F, 0xBF, 0x85, 0x17, 0x9F, 0x0F, 0x7E, 0x17, 0x9F, 0x1F, 0x9F, 0x1F, 0x7E, 0x17, 0x9F, 0x01, 0x17, 0xBF, 0x01, 0x0F, 0xBF, 0x01, 0x07, 0xBF, 0x06, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x05, 0x07, 0xDF, 0x03, 0x07, 0xBE, 0x84, 0x07, 0x9D, 0x07, 0x9E, 0x07, 0x9D, 0x07, 0xBE, 0x07, 0xBD, 0x02, 0x07, 0x9D, 0x92, 0x07, 0x7C, 0x17, 0x5C, 0x1F, 0x5C, 0x37, 0x1C, 0x56, 0x9B, 0x6D, 0xD9, 0x84, 0xD6, 0x94, 0x76, 0x93, 0xF4, 0x7B, 0x92, 0x84, 0x54, 0x85, 0x77, 0x65, 0xB7, 0x5E, 0x98, 0x3E, 0xD8, 0x27, 0x17, 0x17, 0x16, 0x0F, 0x36, 0x07, 0x55, 0x02, 0x07, 0x75, 0x01, 0x07, 0x74, 0x01, 0x07, 0x73, 0x02, 0x07, 0x72, 0x80, 0x07, 0x92, 0x01, 0x07, 0x71, 0x01, 0x07, 0x70, 0x01, 0x07, 0x6F, 0x81, 0x07, 0x8E, 0x07, 0x6E, 0x04, 0x07, 0x6D, 0x82, 0x07, 0x6C, 0x07, 0x6D, 0x07, 0x4C, 0x01, 0x07, 0x6C, 0x03, + 0x07, 0x4C, 0x80, 0x07, 0x2C, 0x01, 0x07, 0x2D, 0x98, 0x0F, 0x0D, 0x0E, 0xEE, 0x0E, 0xCE, 0x0E, 0xAE, 0x06, 0x4E, 0x06, 0x0F, 0x05, 0xCF, 0x05, 0x90, 0x05, 0x71, 0x05, 0x32, 0x05, 0x13, 0x04, 0xF4, 0x04, 0xD5, 0x04, 0x96, 0x04, 0x77, 0x04, 0x78, 0x04, 0x59, 0x04, 0x39, 0x04, 0x1A, 0x04, 0x1B, 0x03, 0xFC, 0x03, 0xDC, 0x03, 0xDD, 0x03, 0xBD, 0x03, 0xBE, 0x02, 0x03, 0x9E, 0x01, 0x03, 0x7F, 0x02, 0x03, 0x5F, 0x04, 0x03, 0x3F, 0x01, 0x03, 0x1F, 0x01, 0x02, 0xFF, 0x82, 0x02, 0xDF, 0x02, 0xFF, 0x02, 0xDF, 0x01, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x03, 0x02, 0x7F, 0x80, 0x02, 0x5F, 0x02, 0x02, 0x3F, 0x80, 0x02, 0x1F, 0x01, 0x01, 0xFF, 0x02, 0x01, 0xDF, 0x05, 0x01, 0xBF, 0x8D, 0x01, 0x9E, 0x01, 0xBE, 0x01, 0xBD, 0x01, 0x9C, 0x01, 0xFB, 0x02, 0xFD, 0x0B, 0xFE, 0x0C, 0xDE, 0x05, 0x7F, 0x06, 0x1F, 0x16, 0xFF, 0x17, 0x5F, 0x0F, 0x7F, 0x0F, 0x9F, 0x03, 0x07, 0xBF, 0x9C, 0x0F, 0xBF, 0x0F, 0x9F, 0x1F, 0x9F, 0x27, 0x5F, 0x3F, 0x1E, 0x56, 0x9E, 0x7E, 0x5E, 0x7C, 0xBA, 0x72, 0x93, 0x9A, 0x74, 0xB2, 0x54, 0xC2, 0x14, 0xC9, 0xF3, 0xC9, 0xD3, 0xD1, 0xD3, 0xD1, 0xB3, 0xD9, 0xF4, 0xD1, 0xB3, 0xD1, 0xD3, 0xC9, 0xD4, 0xCA, 0x14, 0xC2, 0x14, 0xBA, 0x14, 0xBA, 0x55, 0xA2, 0x15, 0x60, 0xAF, 0x59, 0x31, 0x51, 0x51, 0x41, 0x51, 0x01, 0x39, 0x51, 0x81, 0x39, 0x71, 0x31, 0x71, 0x01, 0x31, 0x51, 0x80, 0x31, 0x71, 0x02, 0x31, 0x31, 0x82, 0x31, 0x51, 0x31, 0x31, 0x31, 0x51, 0x05, 0x29, 0x30, 0x80, 0x29, 0x50, 0x04, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x10, + 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x0A, 0x21, 0x30, 0x85, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x8B, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x87, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, + 0x01, 0x21, 0x2F, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x86, 0x11, 0x12, 0x11, 0x33, 0x11, 0x96, 0x11, 0xB7, 0x12, 0x19, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x86, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x11, 0x12, 0x01, 0x11, 0x32, 0x01, 0x11, 0x33, 0x80, 0x11, 0x13, 0x04, 0x11, 0x33, 0x80, 0x19, 0x33, 0x01, 0x11, 0x33, 0x80, 0x11, 0x12, 0x03, 0x11, 0x33, 0x01, 0x11, 0x13, 0x01, 0x11, 0x33, 0x01, 0x19, 0x33, 0x81, 0x11, 0x12, 0x11, 0x33, 0x01, 0x11, 0x13, 0x80, 0x19, 0x33, 0x08, 0x11, 0x33, 0x83, 0x19, 0x53, 0x11, 0x33, 0x11, + 0x32, 0x19, 0x53, 0x03, 0x11, 0x32, 0x01, 0x11, 0x53, 0x80, 0x19, 0x73, 0x01, 0x11, 0x53, 0x80, 0x19, 0x53, 0x02, 0x11, 0x53, 0x80, 0x11, 0x33, 0x01, 0x19, 0x53, 0x02, 0x19, 0x33, 0x80, 0x19, 0x53, 0x06, 0x11, 0x53, 0x80, 0x11, 0x52, 0x01, 0x19, 0x53, 0x82, 0x11, 0x53, 0x11, 0x33, 0x19, 0x53, 0x01, 0x11, 0x33, 0x80, 0x11, 0x53, 0x04, 0x11, 0x33, 0x01, 0x11, 0x53, 0x01, 0x11, 0x33, 0x05, 0x11, 0x53, 0x01, 0x11, 0x33, 0x80, 0x19, 0x53, 0x01, 0x11, 0x33, 0x83, 0x11, 0x53, 0x11, 0x33, 0x19, 0x53, 0x11, 0x53, 0x09, 0x11, 0x33, 0x80, 0x11, 0x12, 0x02, 0x11, 0x33, 0x80, 0x11, 0x32, 0x06, 0x11, 0x33, 0x82, 0x11, 0x53, 0x11, 0x33, 0x11, 0x13, 0x06, 0x11, 0x33, 0x80, 0x19, 0x33, 0x06, 0x11, 0x33, 0x86, 0x11, 0x32, 0x11, 0x33, 0x11, 0x53, 0x11, 0x33, 0x19, 0x53, 0x11, 0x33, 0x11, 0x53, 0x01, 0x11, 0x33, 0x8A, 0x11, 0x54, 0x11, 0x95, 0x19, 0xF7, 0x22, 0x38, 0x1A, 0x17, 0x19, 0xF6, 0x11, 0x94, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x52, 0x8E, 0x21, 0x51, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x09, 0x54, 0x19, 0xB6, 0x22, 0x38, 0x22, 0x18, 0x11, 0x75, 0x19, 0x75, 0x11, 0x13, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x03, 0x29, 0x30, 0x84, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, + 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x04, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x19, 0x31, 0x01, 0x11, 0x53, 0x85, 0x11, 0x75, 0x19, 0xD7, 0x1A, 0x39, 0x1A, 0x18, 0x11, 0xB7, 0x09, 0x76, 0x01, 0x11, 0xB6, 0x01, 0x11, 0x95, 0x89, 0x11, 0x54, 0x11, 0x53, 0x11, 0x33, 0x11, 0x32, 0x19, 0x52, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x87, 0x29, 0x0F, 0x20, 0xEF, 0x20, 0xEE, 0x20, 0x8C, 0x5A, 0x32, 0xAC, 0x7B, 0xDD, 0xFF, 0xDD, 0xDF, 0x01, 0xCD, 0x3D, 0x01, 0xCC, 0xFC, 0x01, 0xC4, 0x9A, 0x01, 0xCC, 0xDB, 0x04, 0xCC, 0xBA, 0x80, 0xCC, 0x9A, 0x01, 0xD4, 0xDA, 0x01, 0xDC, 0xFB, 0x84, 0xDD, 0x1C, 0xD4, 0xFB, 0xDD, 0x3C, 0xE5, 0x3C, 0xDD, 0x3C, 0x01, 0xE5, 0x3C, + 0x80, 0xE5, 0x5D, 0x02, 0xE5, 0x7D, 0x81, 0xED, 0x7D, 0xE5, 0x5D, 0x01, 0xE5, 0x7D, 0x80, 0xE5, 0x5D, 0x06, 0xE5, 0x7D, 0x8A, 0xDD, 0x5D, 0xE5, 0x5D, 0xDD, 0x3C, 0xE5, 0x5D, 0xDD, 0x3C, 0xE5, 0x5D, 0xDD, 0x5C, 0xE5, 0x5D, 0xDD, 0x3C, 0xE5, 0x5D, 0xDD, 0x3C, 0x01, 0xE5, 0x5D, 0x81, 0xE5, 0x7D, 0xE5, 0x5D, 0x01, 0xE5, 0x5C, 0x01, 0xDD, 0x3C, 0x83, 0xDD, 0x1C, 0xDC, 0xFB, 0xDD, 0x1B, 0xD4, 0xDA, 0x01, 0xD4, 0xBA, 0x80, 0xCC, 0x99, 0x01, 0xD4, 0x99, 0x80, 0xCC, 0x79, 0x01, 0xD4, 0x99, 0x83, 0xCC, 0x79, 0xD4, 0x79, 0xD4, 0x78, 0xD4, 0x79, 0x03, 0xD4, 0x99, 0x84, 0xDC, 0x99, 0xD4, 0x98, 0xDC, 0x99, 0xD4, 0x78, 0xDC, 0x99, 0x03, 0xDC, 0x78, 0x81, 0xDC, 0x58, 0xE4, 0x78, 0x03, 0xDC, 0x57, 0x80, 0xE4, 0x77, 0x02, 0xDC, 0x57, 0x80, 0xE4, 0x57, 0x03, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x94, 0xDC, 0x57, 0xD4, 0x57, 0xDC, 0x77, 0xDC, 0x98, 0xDC, 0xB8, 0xD4, 0xB8, 0xC4, 0xB8, 0xAC, 0x97, 0x9C, 0x97, 0x9D, 0x18, 0x9D, 0xBA, 0x8D, 0xDA, 0x86, 0x3B, 0x76, 0x5B, 0x66, 0x7C, 0x5E, 0xBD, 0x4E, 0xDD, 0x3E, 0xFD, 0x37, 0x5E, 0x27, 0x5E, 0x1F, 0x7E, 0x01, 0x17, 0x9E, 0x01, 0x0F, 0xBE, 0x80, 0x0F, 0xDF, 0x11, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x8E, 0x0F, 0xBF, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x7F, 0x27, 0x7F, 0x27, 0x5E, 0x27, 0x3E, 0x37, 0x9F, 0x2F, 0x5E, 0x27, 0x7E, 0x1F, 0x7E, 0x17, 0x9F, 0x0F, 0x9F, 0x0F, 0xBF, 0x07, 0xBF, 0x03, 0x07, 0xDF, 0x82, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xFF, 0x01, 0x07, + 0xDF, 0x04, 0x07, 0xFF, 0x05, 0x07, 0xDF, 0x01, 0x07, 0xDE, 0x02, 0x07, 0xBE, 0x80, 0x07, 0x9E, 0x02, 0x07, 0xBD, 0x02, 0x07, 0x9D, 0x92, 0x07, 0x7C, 0x0F, 0x7C, 0x1F, 0x5C, 0x37, 0x1C, 0x4E, 0xBB, 0x6D, 0xFA, 0x84, 0xD7, 0x8C, 0x15, 0xA4, 0x76, 0x8B, 0xB3, 0x83, 0xB3, 0x8C, 0xF6, 0x75, 0x56, 0x66, 0x38, 0x4E, 0xF9, 0x2F, 0x17, 0x16, 0xF6, 0x0F, 0x36, 0x07, 0x55, 0x02, 0x07, 0x75, 0x01, 0x07, 0x94, 0x02, 0x07, 0x73, 0x81, 0x07, 0x72, 0x07, 0x92, 0x02, 0x07, 0x91, 0x01, 0x07, 0x90, 0x01, 0x07, 0x8F, 0x01, 0x07, 0x8E, 0x03, 0x07, 0x8D, 0x80, 0x07, 0x6C, 0x02, 0x07, 0x8C, 0x81, 0x07, 0x6C, 0x07, 0x8C, 0x03, 0x07, 0x6B, 0x03, 0x07, 0x4B, 0x01, 0x0F, 0x4C, 0x96, 0x0F, 0x2C, 0x0F, 0x2D, 0x0F, 0x0E, 0x0E, 0xEE, 0x0E, 0xAE, 0x06, 0x4E, 0x05, 0xEF, 0x05, 0xB0, 0x05, 0x70, 0x05, 0x11, 0x04, 0xD3, 0x04, 0x94, 0x04, 0x75, 0x04, 0x56, 0x04, 0x37, 0x04, 0x18, 0x04, 0x19, 0x03, 0xFA, 0x03, 0xFB, 0x03, 0xDC, 0x03, 0xBC, 0x03, 0xBD, 0x03, 0x9D, 0x02, 0x03, 0x9E, 0x83, 0x03, 0x7F, 0x03, 0x5F, 0x03, 0x7F, 0x03, 0x5F, 0x03, 0x03, 0x3F, 0x03, 0x03, 0x1F, 0x01, 0x02, 0xFF, 0x80, 0x02, 0xDF, 0x03, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x84, 0x02, 0x7F, 0x02, 0x5F, 0x02, 0x7F, 0x02, 0x5F, 0x02, 0x3F, 0x03, 0x02, 0x1F, 0x05, 0x01, 0xDF, 0x03, 0x01, 0x9F, 0x01, 0x01, 0x9E, 0x8B, 0x01, 0xBE, 0x01, 0x9D, 0x01, 0xFD, 0x02, 0x7C, 0x03, 0x5D, 0x0C, 0x5E, 0x0D, 0x5F, 0x05, 0xDF, 0x06, 0x5F, 0x17, 0x3F, 0x0F, 0x7F, 0x0F, 0xBF, 0x04, 0x07, 0xBF, 0x8D, 0x0F, + 0xBF, 0x17, 0x9F, 0x1F, 0x7F, 0x2F, 0x3E, 0x46, 0xFE, 0x66, 0x7E, 0x85, 0xFE, 0x73, 0x76, 0x7A, 0x53, 0xA2, 0x54, 0xBA, 0x34, 0xCA, 0x14, 0xC9, 0xF3, 0xC9, 0xD3, 0x02, 0xD1, 0xD3, 0x81, 0xD1, 0xD4, 0xD1, 0xD3, 0x01, 0xC9, 0xF4, 0x8E, 0xC2, 0x14, 0xBA, 0x14, 0xBA, 0x96, 0x81, 0x51, 0x50, 0x8F, 0x51, 0x31, 0x49, 0x51, 0x41, 0x51, 0x41, 0x72, 0x39, 0x71, 0x39, 0x51, 0x31, 0x71, 0x31, 0x51, 0x31, 0x71, 0x39, 0x71, 0x02, 0x31, 0x51, 0x81, 0x31, 0x31, 0x31, 0x51, 0x06, 0x29, 0x30, 0x80, 0x21, 0x30, 0x06, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x0D, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x21, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x21, 0x31, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, + 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x88, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x09, 0x33, 0x11, 0x76, 0x09, 0x97, 0x09, 0xB8, 0x09, 0xD9, 0x01, 0xD9, 0x05, 0x01, 0xDA, 0x89, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xB9, 0x09, 0xF9, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0x95, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, + 0x30, 0x80, 0x21, 0x10, 0x05, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x32, 0x06, 0x19, 0x11, 0x81, 0x19, 0x12, 0x19, 0x31, 0x05, 0x19, 0x11, 0x02, 0x19, 0x12, 0x06, 0x19, 0x11, 0x01, 0x19, 0x12, 0x08, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, 0x02, 0x19, 0x11, 0x83, 0x19, 0x32, 0x19, 0x11, 0x11, 0x11, 0x19, 0x12, 0x08, 0x19, 0x11, 0x83, 0x19, 0x32, 0x19, 0x11, 0x11, 0x11, 0x19, 0x11, 0x04, 0x19, 0x31, 0x04, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x12, 0x19, 0x31, 0x05, 0x19, 0x32, 0x80, 0x11, 0x12, 0x05, 0x19, 0x32, 0x83, 0x19, 0x11, 0x11, 0x11, 0x19, 0x11, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x0E, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x12, 0x19, 0x11, 0x01, 0x11, 0x11, 0x81, 0x19, 0x12, 0x19, 0x11, 0x03, 0x19, 0x12, 0x80, 0x10, 0xF1, 0x05, 0x19, 0x11, 0x02, 0x19, 0x12, 0x83, 0x19, 0x32, 0x11, 0x11, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x02, 0x11, 0x11, 0x85, 0x11, 0x12, 0x11, 0x32, 0x11, 0x33, 0x09, 0x33, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x1A, 0x17, 0x86, 0x19, 0xF6, 0x11, 0x94, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x21, 0x32, 0x21, 0x52, 0x02, 0x21, 0x31, 0x01, 0x19, 0x32, 0x88, 0x19, 0x53, 0x11, 0x53, 0x09, 0x54, 0x19, 0xD6, 0x2A, 0x59, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x54, 0x19, 0x33, 0x01, 0x19, 0x32, 0x02, 0x21, 0x31, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, + 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x05, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x87, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x1A, 0x18, 0x1A, 0x38, 0x11, 0xD7, 0x11, 0x96, 0x01, 0x11, 0x75, 0x81, 0x11, 0x74, 0x11, 0x53, 0x01, 0x11, 0x32, 0x80, 0x19, 0x32, 0x03, 0x19, 0x11, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x20, 0xEF, 0x28, 0xEF, 0x28, 0xCE, 0x28, 0x8D, 0x28, 0x6C, 0x49, 0x6F, 0x9B, 0xB8, 0x01, + 0xD5, 0x7E, 0x80, 0xD5, 0x3D, 0x01, 0xD5, 0x1C, 0x81, 0xDD, 0x3C, 0xD4, 0xFB, 0x01, 0xD4, 0xDB, 0x05, 0xD4, 0xDA, 0x80, 0xD4, 0xB9, 0x02, 0xDC, 0xBA, 0x84, 0xD4, 0xBA, 0xDC, 0xBA, 0xD4, 0x99, 0xDC, 0xB9, 0xD4, 0x99, 0x02, 0xDC, 0x99, 0x05, 0xDC, 0xB9, 0x80, 0xDC, 0xDA, 0x01, 0xDC, 0xD9, 0x02, 0xDC, 0xDA, 0x80, 0xDC, 0xB9, 0x01, 0xDC, 0xDA, 0x84, 0xE4, 0xFA, 0xDC, 0xDA, 0xE4, 0xFA, 0xDC, 0xDA, 0xE4, 0xFA, 0x06, 0xDC, 0xDA, 0x03, 0xDC, 0xB9, 0x80, 0xD4, 0x98, 0x01, 0xD4, 0x99, 0x81, 0xDC, 0x99, 0xD4, 0x98, 0x01, 0xD4, 0x78, 0x84, 0xDC, 0x78, 0xD4, 0x78, 0xDC, 0x78, 0xD4, 0x78, 0xDC, 0x99, 0x02, 0xD4, 0x78, 0x81, 0xDC, 0x78, 0xD4, 0x58, 0x04, 0xDC, 0x78, 0x81, 0xDC, 0x58, 0xD4, 0x58, 0x01, 0xDC, 0x78, 0x01, 0xDC, 0x58, 0x80, 0xDC, 0x78, 0x03, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xE4, 0x77, 0x02, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x85, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x36, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x77, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x77, 0x01, 0xDC, 0x98, 0x8F, 0xCC, 0x77, 0xBC, 0x36, 0xAC, 0x57, 0xAC, 0xF9, 0xA5, 0x5A, 0x95, 0xBA, 0x85, 0xFB, 0x76, 0x3B, 0x6E, 0x7C, 0x5E, 0x9C, 0x56, 0xDD, 0x46, 0xFD, 0x3F, 0x1D, 0x2F, 0x3D, 0x2F, 0x7E, 0x1F, 0x7E, 0x01, 0x17, 0x9E, 0x82, 0x17, 0xBE, 0x0F, 0xBE, 0x0F, 0xDF, 0x0D, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x05, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x87, 0x0F, 0x9F, 0x17, 0x9F, 0x17, 0x5E, 0x27, 0x5E, 0x2F, 0x3E, 0x37, 0x1E, 0x3F, 0x1E, 0x46, 0xFE, 0x01, 0x47, + 0x1E, 0x84, 0x3F, 0x5F, 0x2F, 0x3E, 0x27, 0x5E, 0x1F, 0x7E, 0x17, 0x9E, 0x01, 0x0F, 0xBF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x05, 0x07, 0xDF, 0x02, 0x07, 0xDE, 0x04, 0x07, 0xBE, 0x03, 0x07, 0xBD, 0x94, 0x07, 0x9D, 0x07, 0x9C, 0x0F, 0x7C, 0x1F, 0x7C, 0x2F, 0x3C, 0x4E, 0xBB, 0x6E, 0x1A, 0x7C, 0xD6, 0x94, 0x35, 0xAC, 0x97, 0x9B, 0xD4, 0x8B, 0x93, 0x84, 0x14, 0x8D, 0x57, 0x6D, 0xB7, 0x5E, 0xF9, 0x3F, 0x18, 0x1F, 0x17, 0x0F, 0x36, 0x0F, 0x56, 0x07, 0x76, 0x01, 0x07, 0x75, 0x80, 0x07, 0x95, 0x02, 0x07, 0x94, 0x01, 0x07, 0x93, 0x01, 0x07, 0x92, 0x80, 0x07, 0xB2, 0x01, 0x07, 0x91, 0x01, 0x07, 0x90, 0x01, 0x07, 0x8F, 0x01, 0x07, 0x8E, 0x80, 0x07, 0xAE, 0x01, 0x07, 0x8D, 0x03, 0x07, 0x8C, 0x04, 0x07, 0x8B, 0x01, 0x07, 0x8A, 0x05, 0x07, 0x6A, 0x01, 0x07, 0x6B, 0x01, 0x0F, 0x4C, 0x96, 0x0F, 0x0D, 0x0E, 0xEE, 0x0E, 0xAF, 0x0E, 0x4F, 0x05, 0xD0, 0x05, 0x91, 0x05, 0x11, 0x04, 0xD2, 0x04, 0x93, 0x04, 0x74, 0x04, 0x55, 0x04, 0x37, 0x04, 0x18, 0x03, 0xF9, 0x03, 0xDA, 0x03, 0xDB, 0x03, 0xBB, 0x03, 0xBC, 0x03, 0xBD, 0x03, 0x9D, 0x03, 0x9E, 0x03, 0x7E, 0x03, 0x7F, 0x02, 0x03, 0x5F, 0x82, 0x03, 0x3F, 0x03, 0x1F, 0x03, 0x3F, 0x02, 0x03, 0x1F, 0x01, 0x02, 0xFF, 0x83, 0x02, 0xDF, 0x02, 0xBF, 0x02, 0xDF, 0x02, 0xBF, 0x03, 0x02, 0x9F, 0x01, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x80, 0x02, 0x3F, 0x02, 0x02, 0x1F, 0x02, 0x01, 0xFF, 0x02, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x03, 0x01, + 0x9F, 0x8D, 0x01, 0xBF, 0x01, 0x9E, 0x01, 0xBE, 0x01, 0xBD, 0x02, 0x1C, 0x02, 0xDD, 0x03, 0x9D, 0x0C, 0xDF, 0x0D, 0x9F, 0x06, 0x1F, 0x0E, 0xBF, 0x17, 0x7F, 0x0F, 0x9F, 0x0F, 0xBF, 0x01, 0x07, 0xBF, 0x91, 0x07, 0xDF, 0x07, 0xBF, 0x0F, 0xBF, 0x0F, 0x9F, 0x17, 0x7F, 0x27, 0x7F, 0x37, 0x3F, 0x4E, 0x9D, 0x76, 0x5E, 0x8D, 0x3C, 0x6A, 0x73, 0xA2, 0xD5, 0xB2, 0x34, 0xC2, 0x13, 0xC9, 0xF3, 0xC9, 0xD3, 0xD1, 0xB3, 0xD1, 0xD4, 0x02, 0xD1, 0xD3, 0x89, 0xC9, 0xD3, 0xC9, 0xF3, 0xC9, 0xF4, 0xC2, 0x35, 0xBA, 0x35, 0xB2, 0x96, 0x58, 0x6E, 0x58, 0xF0, 0x51, 0x31, 0x49, 0x51, 0x01, 0x41, 0x72, 0x81, 0x39, 0x72, 0x39, 0x71, 0x05, 0x31, 0x51, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x0B, 0x29, 0x30, 0x85, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x07, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x05, 0x29, 0x30, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x18, 0xF0, 0x01, 0x21, 0x31, 0x01, 0x21, 0x32, 0x80, 0x19, 0x31, 0x05, 0x21, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, + 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x87, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, + 0x21, 0x2F, 0x02, 0x21, 0x30, 0x88, 0x21, 0x31, 0x19, 0x31, 0x11, 0x33, 0x09, 0x34, 0x09, 0x55, 0x11, 0xB8, 0x09, 0xD9, 0x0A, 0x1A, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x88, 0x01, 0xD9, 0x01, 0xF9, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x19, 0x10, 0x80, 0x21, 0x10, 0x03, 0x19, 0x10, 0x82, 0x21, 0x11, 0x21, 0x31, 0x19, 0x11, 0x02, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x19, 0x31, 0x02, 0x21, 0x31, 0x81, 0x19, 0x10, 0x21, 0x31, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x21, 0x11, 0x80, 0x19, 0x10, 0x01, 0x21, 0x11, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x19, 0x10, 0x01, 0x21, 0x31, 0x82, 0x21, 0x30, 0x21, 0x31, 0x19, 0x10, 0x02, 0x19, 0x30, 0x80, 0x19, 0x10, 0x04, 0x19, 0x31, 0x80, 0x19, 0x10, 0x01, 0x19, 0x11, 0x01, 0x19, 0x10, 0x81, 0x21, 0x11, 0x19, 0x10, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x02, 0x19, 0x10, 0x81, 0x19, 0x30, 0x19, 0x31, 0x03, 0x19, 0x10, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x81, 0x19, 0x31, 0x21, 0x31, 0x03, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x11, 0x02, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x31, 0x03, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x02, 0x21, 0x31, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x84, 0x21, + 0x11, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x01, 0x19, 0x11, 0x82, 0x19, 0x31, 0x21, 0x11, 0x19, 0x10, 0x02, 0x19, 0x11, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x21, 0x11, 0x19, 0x10, 0x19, 0x11, 0x21, 0x11, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x21, 0x51, 0x04, 0x19, 0x31, 0x80, 0x21, 0x31, 0x03, 0x19, 0x31, 0x8D, 0x11, 0x12, 0x11, 0x53, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x19, 0xF7, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x32, 0x01, 0x21, 0x31, 0x82, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x01, 0x11, 0x53, 0x88, 0x11, 0x75, 0x19, 0xD7, 0x21, 0xF8, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x05, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x08, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x06, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x02, 0x21, 0x2F, + 0x01, 0x29, 0x2F, 0x90, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x32, 0x09, 0x32, 0x11, 0x74, 0x19, 0xD6, 0x1A, 0x17, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x96, 0x09, 0x54, 0x11, 0x54, 0x01, 0x11, 0x33, 0x80, 0x19, 0x32, 0x02, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x29, 0x30, 0x8D, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x28, 0xEF, 0x28, 0xEE, 0x28, 0xCD, 0x28, 0xAD, 0x28, 0x8C, 0x20, 0x2A, 0x40, 0xED, 0x8B, 0x36, 0xD5, 0x5E, 0xE5, 0xBF, 0xE5, 0x7E, 0x01, 0xDD, 0x1C, 0x85, 0xD4, 0xFB, 0xD4, 0xDB, 0xDC, 0xFB, 0xD4, 0xDA, 0xDC, 0xDA, 0xD4, 0x9A, 0x01, 0xD4, 0xBA, 0x80, 0xDC, 0xDA, 0x05, 0xDC, 0xBA, 0x01, 0xDC, 0xB9, 0x05, 0xDC, 0x99, 0x84, 0xE4, 0xB9, 0xDC, 0xB9, 0xE4, 0xB9, 0xDC, 0x99, 0xDC, 0xB9, 0x01, 0xDC, 0x99, 0x82, 0xDC, 0x78, 0xDC, 0x99, 0xDC, 0x98, 0x03, 0xDC, 0x78, 0x80, 0xDC, 0x79, 0x05, 0xDC, 0x78, 0x03, 0xDC, 0x99, 0x81, 0xDC, 0x78, 0xDC, 0x99, 0x02, 0xDC, 0x98, 0x01, 0xDC, 0x78, 0x82, 0xDC, 0x98, 0xDC, 0x78, 0xDC, 0x99, 0x03, 0xDC, 0x78, 0x83, 0xDC, 0x58, 0xDC, 0x78, 0xDC, 0x58, 0xDC, 0x78, 0x03, 0xDC, 0x57, 0x01, 0xDC, 0x58, 0x80, 0xDC, 0x57, 0x01, + 0xDC, 0x58, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x05, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x04, 0xDC, 0x57, 0x01, 0xD4, 0x37, 0x91, 0xCC, 0x57, 0xCC, 0xD8, 0xCD, 0x7A, 0xB5, 0x7A, 0x9D, 0x9A, 0x8D, 0xDB, 0x7E, 0x1B, 0x76, 0x5C, 0x66, 0xBD, 0x56, 0xDD, 0x4F, 0x1D, 0x3F, 0x1D, 0x37, 0x5E, 0x2F, 0x5E, 0x27, 0x7E, 0x1F, 0x7E, 0x17, 0x9E, 0x17, 0xBF, 0x01, 0x0F, 0xBE, 0x80, 0x0F, 0xDF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x0C, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x91, 0x0F, 0x9F, 0x17, 0x7E, 0x1F, 0x7F, 0x2F, 0x5E, 0x37, 0x1E, 0x4F, 0x3F, 0x5F, 0x1E, 0x5E, 0xBD, 0x5E, 0x7C, 0x5E, 0x5C, 0x56, 0x7D, 0x56, 0xDE, 0x4F, 0x1E, 0x47, 0x3E, 0x2F, 0x5E, 0x1F, 0x7E, 0x17, 0x9E, 0x0F, 0xBF, 0x03, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x81, 0x07, 0xDF, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x03, 0x07, 0xDE, 0x03, 0x07, 0xBE, 0x81, 0x07, 0xBD, 0x07, 0xBE, 0x03, 0x07, 0xBD, 0x9D, 0x07, 0x9C, 0x0F, 0x7C, 0x17, 0x7C, 0x2F, 0x5C, 0x4E, 0xDC, 0x66, 0x1A, 0x7D, 0x17, 0x94, 0x56, 0xAC, 0x56, 0xA3, 0xD4, 0x9B, 0xB3, 0x83, 0xB3, 0x8C, 0xF6, 0x7D, 0x97, 0x5E, 0x78, 0x46, 0xF9, 0x2F, 0x38, 0x17, 0x57, 0x0F, 0x76, 0x07, 0x76, 0x07, 0x96, 0x07, 0x95, 0x07, 0xB5, 0x07, 0x95, 0x07, 0x94, 0x07, 0xB4, 0x07, 0x94, 0x07, 0xB3, 0x07, 0x93, 0x07, 0xB3, 0x01, 0x07, 0xB2, 0x01, 0x07, + 0xB1, 0x01, 0x07, 0xB0, 0x02, 0x07, 0xAF, 0x01, 0x07, 0xAE, 0x82, 0x07, 0xAD, 0x07, 0x8D, 0x07, 0xAD, 0x02, 0x07, 0xAC, 0x01, 0x07, 0xAB, 0x81, 0x07, 0x8B, 0x07, 0x8A, 0x02, 0x07, 0xAA, 0x81, 0x07, 0x8A, 0x07, 0xAA, 0x03, 0x07, 0x89, 0x01, 0x07, 0x6A, 0x92, 0x07, 0x6B, 0x0F, 0x6B, 0x0F, 0x2C, 0x0F, 0x2D, 0x0E, 0xEE, 0x16, 0xF0, 0x16, 0xD1, 0x16, 0x92, 0x0E, 0x32, 0x05, 0x92, 0x05, 0x12, 0x04, 0xB2, 0x04, 0x53, 0x04, 0x35, 0x03, 0xF6, 0x03, 0xF7, 0x03, 0xF8, 0x03, 0xDA, 0x03, 0xDB, 0x01, 0x03, 0xBC, 0x84, 0x03, 0x9D, 0x03, 0x9E, 0x03, 0x7E, 0x03, 0x5E, 0x03, 0x3E, 0x02, 0x03, 0x3F, 0x02, 0x03, 0x1F, 0x01, 0x02, 0xFF, 0x01, 0x02, 0xDF, 0x03, 0x02, 0xBF, 0x03, 0x02, 0x9F, 0x80, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x01, 0x02, 0x1F, 0x02, 0x01, 0xFF, 0x02, 0x01, 0xDF, 0x80, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x02, 0x01, 0xBF, 0x80, 0x01, 0x9F, 0x01, 0x01, 0x9E, 0x89, 0x01, 0x9D, 0x01, 0xBC, 0x02, 0x7C, 0x03, 0x1C, 0x0C, 0x3E, 0x15, 0x3F, 0x0D, 0xDF, 0x06, 0x5F, 0x0E, 0xFF, 0x17, 0x9F, 0x01, 0x0F, 0xBF, 0x03, 0x07, 0xBF, 0x92, 0x0F, 0xBF, 0x17, 0x9F, 0x1F, 0x9F, 0x2F, 0x3E, 0x46, 0xFE, 0x5E, 0x7D, 0x8E, 0x3E, 0x6B, 0xB6, 0x82, 0xB4, 0xA2, 0x53, 0xBA, 0x34, 0xC1, 0xF3, 0xC9, 0xF4, 0xD1, 0xD3, 0xD1, 0xD4, 0xD9, 0xD4, 0xD1, 0x93, 0xD1, 0xB3, 0xC9, 0xB3, 0x01, 0xC9, 0xD3, 0x86, 0xC1, 0xF4, 0xC2, 0x34, 0xBA, 0x55, 0x91, 0xB3, 0x58, 0x6E, 0x59, 0x11, 0x49, 0x51, 0x01, 0x41, 0x51, 0x82, 0x39, 0x72, 0x39, 0x71, 0x31, 0x71, + 0x01, 0x31, 0x51, 0x80, 0x31, 0x71, 0x03, 0x31, 0x51, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x51, 0x1D, 0x29, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x51, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x07, 0x19, 0x32, 0x02, 0x19, 0x31, 0x80, 0x21, 0x31, 0x05, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x03, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x05, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x03, + 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x11, 0x86, 0x11, 0x33, 0x11, 0x54, 0x09, 0x75, 0x11, 0xD7, 0x09, 0xF9, 0x09, 0xFA, 0x0A, 0x1A, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x87, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xB8, 0x09, 0xF9, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x33, 0x01, 0x11, 0x11, 0x02, 0x19, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x51, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x02, 0x19, 0x30, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x31, 0x21, 0x10, 0x19, 0x10, 0x21, 0x11, 0x21, 0x10, 0x01, 0x19, 0x10, 0x80, 0x21, 0x10, 0x04, 0x19, 0x10, 0x80, 0x21, 0x30, 0x02, + 0x19, 0x10, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x19, 0x10, 0x01, 0x21, 0x11, 0x02, 0x21, 0x31, 0x80, 0x19, 0x10, 0x01, 0x21, 0x31, 0x85, 0x19, 0x31, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x10, 0x19, 0x31, 0x02, 0x19, 0x10, 0x84, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x19, 0x10, 0x04, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x31, 0x0B, 0x21, 0x30, 0x01, 0x19, 0x31, 0x80, 0x11, 0x12, 0x01, 0x11, 0x33, 0x88, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x52, 0x81, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x31, 0x91, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x75, 0x19, 0xF7, 0x22, 0x38, 0x21, 0xF8, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x11, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x08, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, + 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x04, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x80, 0x29, 0x30, 0x04, 0x29, 0x2F, 0x88, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x09, 0x54, 0x11, 0xB6, 0x01, 0x1A, 0x17, 0x82, 0x19, 0xF7, 0x11, 0x96, 0x11, 0x54, 0x01, 0x11, 0x33, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x90, 0x28, 0xEF, 0x28, 0xEE, 0x28, 0xCE, 0x28, 0xAD, 0x28, 0xAC, 0x28, 0x8C, 0x28, 0x4B, 0x38, 0xAC, 0x61, 0xB0, 0xA3, 0x77, 0xCC, 0xDB, 0xE5, 0x9E, 0xE5, 0x7E, 0xDD, 0x3D, 0xD4, 0xFB, 0xD4, 0xDB, 0xD4, 0xBA, 0x01, 0xD4, 0xDB, 0x81, 0xD4, 0xBA, 0xDC, 0xDA, 0x07, 0xDC, 0xBA, 0x03, 0xDC, 0x99, 0x01, 0xE4, 0x99, 0x80, 0xDC, 0x98, 0x02, 0xE4, 0x99, 0x83, 0xE4, 0x98, 0xDC, 0x78, 0xDC, 0x98, 0xDC, 0x99, 0x02, 0xDC, 0x78, 0x80, 0xDC, 0x58, 0x02, 0xDC, 0x78, 0x80, 0xE4, 0x79, 0x08, 0xDC, 0x58, 0x01, + 0xDC, 0x78, 0x80, 0xDC, 0x58, 0x02, 0xDC, 0x78, 0x01, 0xDC, 0x58, 0x01, 0xDC, 0x78, 0x83, 0xDC, 0x57, 0xE4, 0x78, 0xDC, 0x37, 0xDC, 0x78, 0x02, 0xDC, 0x57, 0x81, 0xDC, 0x58, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x82, 0xDC, 0x58, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x17, 0x03, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x81, 0xDC, 0x36, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x82, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0x04, 0xDC, 0x57, 0x91, 0xDC, 0x37, 0xD4, 0x36, 0xDC, 0x57, 0xD4, 0x57, 0xD4, 0x77, 0xCC, 0xD8, 0xC5, 0x39, 0xB5, 0x5A, 0x9D, 0x7A, 0x8D, 0xDA, 0x86, 0x3C, 0x76, 0x7C, 0x66, 0x9C, 0x56, 0xFD, 0x46, 0xFD, 0x3F, 0x3E, 0x37, 0x3E, 0x2F, 0x5E, 0x01, 0x27, 0x7E, 0x80, 0x1F, 0x9E, 0x01, 0x17, 0x9E, 0x80, 0x0F, 0xBF, 0x01, 0x0F, 0xDF, 0x80, 0x07, 0xBF, 0x0B, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x05, 0x07, 0xDF, 0x95, 0x07, 0xBF, 0x0F, 0xBF, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x7F, 0x37, 0x5F, 0x47, 0x1E, 0x5E, 0xFE, 0x66, 0x9D, 0x6E, 0x3C, 0x75, 0xFB, 0x6D, 0x79, 0x6D, 0x59, 0x65, 0x59, 0x65, 0xBA, 0x66, 0x7D, 0x5E, 0xFE, 0x4F, 0x3E, 0x2F, 0x3E, 0x1F, 0x5E, 0x17, 0x9E, 0x0F, 0xBE, 0x04, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x05, 0x07, 0xDF, 0x02, 0x07, 0xDE, 0x04, 0x07, 0xBE, 0x82, 0x07, 0xDE, 0x07, 0xBD, 0x07, 0xDE, 0x01, 0x07, 0xBD, 0x93, 0x07, 0x9C, 0x0F, 0x9C, 0x17, 0x7C, 0x27, 0x3C, 0x46, 0xFC, 0x5E, + 0x3A, 0x85, 0x79, 0x94, 0x56, 0xAC, 0x56, 0xB4, 0x16, 0x9B, 0x93, 0x8B, 0x72, 0x8C, 0x55, 0x85, 0x57, 0x65, 0xF7, 0x4E, 0xD9, 0x37, 0x59, 0x1F, 0x58, 0x0F, 0x57, 0x0F, 0x97, 0x01, 0x07, 0x96, 0x80, 0x07, 0xB6, 0x02, 0x07, 0xB5, 0x02, 0x07, 0xB4, 0x01, 0x07, 0xB3, 0x02, 0x07, 0xB2, 0x01, 0x07, 0xB1, 0x01, 0x07, 0xB0, 0x01, 0x07, 0xAF, 0x02, 0x07, 0xAE, 0x02, 0x07, 0xAD, 0x02, 0x07, 0xAC, 0x02, 0x07, 0xAB, 0x02, 0x07, 0xAA, 0x03, 0x07, 0xA9, 0x02, 0x07, 0x89, 0x9A, 0x07, 0x8A, 0x07, 0x6A, 0x07, 0x6B, 0x0F, 0x6C, 0x0F, 0x4D, 0x0F, 0x4E, 0x0F, 0x2F, 0x0F, 0x10, 0x16, 0xF1, 0x16, 0xD2, 0x16, 0x53, 0x0D, 0xD2, 0x05, 0x32, 0x04, 0xB2, 0x04, 0x73, 0x04, 0x54, 0x04, 0x36, 0x04, 0x17, 0x03, 0xF9, 0x03, 0xB9, 0x03, 0xBB, 0x03, 0x9C, 0x03, 0x9D, 0x03, 0x7D, 0x03, 0x7E, 0x03, 0x5E, 0x03, 0x3E, 0x01, 0x03, 0x3F, 0x01, 0x03, 0x1F, 0x02, 0x02, 0xFF, 0x80, 0x02, 0xDF, 0x03, 0x02, 0xBF, 0x02, 0x02, 0x9F, 0x02, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x01, 0x02, 0x1F, 0x02, 0x01, 0xFF, 0x02, 0x01, 0xDF, 0x05, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x8B, 0x01, 0x9E, 0x01, 0x9D, 0x01, 0x9C, 0x02, 0x1C, 0x02, 0xBD, 0x03, 0x5C, 0x14, 0xBF, 0x1D, 0xDF, 0x0E, 0x1F, 0x0E, 0x9F, 0x17, 0x3F, 0x17, 0xBF, 0x01, 0x0F, 0xBF, 0x01, 0x07, 0xBF, 0x01, 0x0F, 0xBF, 0x8E, 0x17, 0xBF, 0x17, 0x7E, 0x2F, 0x9F, 0x37, 0x3E, 0x4E, 0xDE, 0x7E, 0xBF, 0x85, 0x5B, 0x72, 0xF4, 0x8A, 0x73, 0xAA, 0x33, 0xC2, 0x14, 0xC9, 0xF3, 0xD1, 0xD3, 0xD1, 0xB3, 0xD1, 0xB4, 0x01, + 0xD1, 0x93, 0x8D, 0xD1, 0xB3, 0xD1, 0xD3, 0xC9, 0xB3, 0xC1, 0xB3, 0xC2, 0x14, 0xBA, 0x35, 0xB2, 0x55, 0x68, 0xCF, 0x58, 0xD0, 0x51, 0x31, 0x49, 0x52, 0x41, 0x52, 0x39, 0x71, 0x39, 0x72, 0x01, 0x31, 0x71, 0x01, 0x31, 0x51, 0x01, 0x31, 0x71, 0x83, 0x31, 0x51, 0x31, 0x50, 0x29, 0x30, 0x31, 0x50, 0x07, 0x29, 0x30, 0x80, 0x21, 0x10, 0x16, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x31, 0x82, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x01, 0x11, 0x33, 0x85, 0x11, 0x53, 0x11, 0x54, 0x11, 0x74, 0x19, 0x94, 0x19, 0x74, 0x19, 0x53, 0x02, 0x19, 0x32, 0x01, 0x19, 0x31, 0x07, 0x21, 0x30, 0x80, 0x21, 0x10, 0x07, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x85, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x07, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, + 0x2F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x09, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x19, 0x11, 0x83, 0x11, 0x32, 0x11, 0x54, 0x11, 0xB6, 0x09, 0x97, 0x01, 0x09, 0xF9, 0x82, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x89, 0x01, 0xD9, 0x01, 0xB9, 0x09, 0xF9, 0x09, 0xB8, 0x11, 0xD8, 0x19, 0xF7, 0x11, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x31, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x07, 0x21, 0x10, 0x0B, 0x21, 0x30, 0x85, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x11, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, + 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x08, 0x21, 0x10, 0x01, 0x21, 0x11, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x19, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x19, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x19, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x0B, 0x21, 0x30, 0x80, 0x29, 0x50, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x11, 0x12, 0x11, 0x33, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x84, 0x21, 0xD6, 0x11, 0x74, 0x11, 0x12, 0x10, 0xF2, 0x10, 0xF1, 0x01, 0x21, 0x52, 0x80, 0x21, 0x51, 0x02, 0x19, 0x31, 0x8B, 0x19, 0x32, 0x11, 0x52, 0x11, 0x53, 0x11, 0x95, 0x21, 0xF7, 0x22, 0x38, 0x22, 0x17, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x31, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x06, 0x21, 0x10, 0x80, 0x29, + 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x06, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x88, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x09, 0x54, 0x19, 0xB6, 0x01, 0x1A, 0x17, 0x83, 0x21, 0xF7, 0x19, 0xB5, 0x09, 0x33, 0x11, 0x12, 0x01, 0x11, 0x32, 0x01, 0x19, 0x31, 0x82, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x28, 0xEE, 0x01, 0x28, 0xCD, 0x89, 0x28, 0xAD, 0x30, 0xAC, 0x28, 0x6B, 0x20, 0x09, 0x28, 0x09, 0x51, 0x4E, 0x7A, 0x73, 0xA3, 0xB8, 0xBC, 0x5A, 0xD4, 0xFC, 0x01, 0xDD, 0x3D, 0x01, 0xDD, 0x1C, 0x01, 0xDC, 0xFC, 0x01, 0xDC, 0xDB, 0x02, 0xDC, 0xBA, 0x80, 0xDC, 0x9A, 0x01, 0xDC, 0x99, 0x80, 0xDC, 0x9A, 0x03, 0xDC, 0x99, 0x83, 0xDC, 0x79, 0xE4, 0x99, 0xDC, 0x58, 0xE4, 0x79, 0x05, 0xDC, 0x78, 0x01, 0xE4, + 0x99, 0x01, 0xDC, 0x58, 0x89, 0xDC, 0x38, 0xDC, 0x58, 0xE4, 0x99, 0xDC, 0x78, 0xDC, 0x58, 0xE4, 0x79, 0xDC, 0x38, 0xDC, 0x58, 0xDC, 0x78, 0xDC, 0x58, 0x01, 0xDC, 0x78, 0x01, 0xDC, 0x58, 0x04, 0xDC, 0x37, 0x04, 0xDC, 0x58, 0x06, 0xDC, 0x37, 0x80, 0xDC, 0x57, 0x01, 0xDC, 0x17, 0x08, 0xDC, 0x37, 0x80, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x83, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x36, 0xDC, 0x16, 0x03, 0xDC, 0x36, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x82, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x36, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x77, 0x02, 0xDC, 0x57, 0x91, 0xD4, 0x77, 0xCC, 0x57, 0xC4, 0x77, 0xBC, 0xF9, 0xB5, 0xBB, 0xA5, 0xFC, 0x8E, 0x1B, 0x7E, 0x1B, 0x6E, 0x5C, 0x5E, 0x9C, 0x4E, 0xBC, 0x46, 0xFD, 0x3F, 0x1D, 0x37, 0x3E, 0x2F, 0x3E, 0x27, 0x7E, 0x1F, 0x7E, 0x1F, 0x9E, 0x01, 0x17, 0x9F, 0x80, 0x0F, 0x9F, 0x02, 0x0F, 0xBF, 0x82, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xBF, 0x0C, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x95, 0x0F, 0xBF, 0x17, 0xBF, 0x27, 0x9F, 0x2F, 0x3E, 0x4F, 0x1E, 0x66, 0x9D, 0x65, 0x9A, 0x85, 0xBB, 0x85, 0x39, 0x8C, 0xB8, 0x7C, 0x35, 0x8C, 0x97, 0x84, 0x97, 0x6C, 0x56, 0x6C, 0xF8, 0x76, 0x1C, 0x6E, 0xDE, 0x3E, 0x9C, 0x37, 0x1E, 0x27, 0x9E, 0x17, 0x9E, 0x0F, 0xBE, 0x03, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x07, 0x07, 0xDE, 0x03, 0x07, 0xBE, 0x01, 0x07, 0xBD, 0x95, 0x07, 0x9D, 0x07, 0x9C, 0x17, 0x9D, 0x27, 0x5D, 0x46, 0xFC, 0x5E, 0x5B, 0x85, 0x9A, 0x8C, 0x76, 0xAC, + 0x77, 0xBC, 0x57, 0xA3, 0x94, 0x93, 0x32, 0x8B, 0xD3, 0x8D, 0x17, 0x75, 0xF8, 0x5E, 0xB9, 0x47, 0x39, 0x27, 0x58, 0x17, 0x57, 0x0F, 0x77, 0x0F, 0x97, 0x07, 0x96, 0x02, 0x07, 0xB6, 0x02, 0x07, 0xB5, 0x01, 0x07, 0xB4, 0x01, 0x07, 0xB3, 0x83, 0x07, 0xD3, 0x07, 0xD2, 0x07, 0xB2, 0x07, 0xB1, 0x01, 0x07, 0xD1, 0x01, 0x07, 0xD0, 0x85, 0x07, 0xCF, 0x07, 0xAF, 0x07, 0xAE, 0x07, 0xCE, 0x07, 0xAE, 0x07, 0xAD, 0x01, 0x07, 0xCD, 0x02, 0x07, 0xAC, 0x02, 0x07, 0xAB, 0x80, 0x07, 0xCB, 0x01, 0x07, 0xCA, 0x80, 0x07, 0xAA, 0x01, 0x07, 0xA9, 0x01, 0x07, 0x89, 0x01, 0x07, 0x8A, 0x01, 0x07, 0x8B, 0x80, 0x07, 0x6C, 0x01, 0x0F, 0x6D, 0x92, 0x0F, 0x4E, 0x0F, 0x2E, 0x0F, 0x0F, 0x0E, 0xF0, 0x16, 0xD1, 0x16, 0xD3, 0x16, 0x73, 0x0D, 0xF3, 0x05, 0x53, 0x04, 0xB3, 0x04, 0x54, 0x04, 0x16, 0x03, 0xD7, 0x03, 0xB8, 0x03, 0x9A, 0x03, 0x9B, 0x03, 0x7C, 0x03, 0x5C, 0x03, 0x5D, 0x01, 0x03, 0x5E, 0x81, 0x03, 0x3E, 0x03, 0x1E, 0x01, 0x03, 0x1F, 0x02, 0x02, 0xFF, 0x81, 0x02, 0xDF, 0x02, 0xBF, 0x04, 0x02, 0x9F, 0x01, 0x02, 0x7F, 0x02, 0x02, 0x5F, 0x02, 0x02, 0x3F, 0x02, 0x02, 0x1F, 0x82, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x01, 0xDF, 0x81, 0x01, 0xBF, 0x01, 0x9F, 0x01, 0x01, 0xBF, 0x8F, 0x01, 0x9F, 0x01, 0xBF, 0x01, 0x9F, 0x01, 0xBE, 0x01, 0x9E, 0x01, 0x9C, 0x01, 0xDC, 0x02, 0x3C, 0x02, 0xFC, 0x03, 0xBC, 0x1D, 0x5F, 0x15, 0xFF, 0x0E, 0x5F, 0x06, 0x9E, 0x17, 0x5F, 0x17, 0xBF, 0x01, 0x0F, 0xBF, 0x81, 0x07, 0xBF, 0x0F, 0xDF, 0x01, 0x0F, 0xBF, 0x8D, 0x0F, + 0x7E, 0x1F, 0x9F, 0x2F, 0x3E, 0x3E, 0xDE, 0x66, 0xBE, 0x86, 0x5E, 0x74, 0x17, 0x6A, 0x31, 0x9A, 0x32, 0xBA, 0x33, 0xCA, 0x14, 0xD1, 0xD3, 0xD1, 0xB3, 0xD1, 0xD4, 0x01, 0xD1, 0x93, 0x8C, 0xD1, 0xB3, 0xD1, 0xD3, 0xC9, 0xB3, 0xC9, 0xD3, 0xC9, 0xF4, 0xC2, 0x35, 0xBA, 0x56, 0x99, 0xD4, 0x50, 0x4E, 0x50, 0xF1, 0x51, 0x52, 0x41, 0x52, 0x39, 0x51, 0x01, 0x39, 0x71, 0x81, 0x31, 0x51, 0x31, 0x31, 0x04, 0x31, 0x51, 0x01, 0x31, 0x31, 0x11, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x06, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x01, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x02, 0x19, 0xF7, 0x84, 0x11, 0x95, 0x11, 0x53, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x0E, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, + 0x10, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x06, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x19, 0x11, 0x84, 0x11, 0x32, 0x11, 0x33, 0x11, 0x95, 0x11, 0xD7, 0x09, 0xD8, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x01, 0x09, 0xF9, 0x86, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x33, 0x08, 0xF2, 0x11, 0x12, 0x11, 0x33, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, + 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x31, 0x05, 0x21, 0x30, 0x0B, 0x21, 0x31, 0x80, 0x21, 0x10, 0x03, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x11, 0x80, 0x21, 0x10, 0x02, 0x21, 0x11, 0x01, 0x21, 0x10, 0x83, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x01, 0x19, 0x30, 0x81, 0x21, 0x30, 0x19, 0x10, 0x01, 0x21, 0x30, 0x83, 0x19, 0x10, 0x21, 0x30, 0x19, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x19, 0x12, 0x11, 0x32, 0x09, 0x33, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x33, 0x11, 0x11, 0x01, 0x19, 0x31, 0x85, 0x21, 0x51, 0x21, 0x71, 0x19, 0x31, 0x19, 0x10, 0x19, 0x31, 0x11, 0x31, 0x01, 0x11, 0x53, 0x80, 0x11, 0x95, 0x01, 0x19, 0xF7, 0x85, 0x22, 0x18, 0x19, 0xB6, + 0x11, 0x74, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x8C, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xB5, 0x11, 0x33, 0x01, 0x11, 0x12, 0x86, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x84, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x10, 0x08, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, + 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x28, 0xEE, 0x01, 0x28, 0xCD, 0x93, 0x28, 0xAC, 0x28, 0xAD, 0x28, 0xAC, 0x28, 0x6C, 0x28, 0x4B, 0x28, 0x2B, 0x28, 0x2A, 0x38, 0x8C, 0x51, 0x2E, 0x72, 0x11, 0x8A, 0xD4, 0xAB, 0xB8, 0xBC, 0x5A, 0xCC, 0xDC, 0xDD, 0x1D, 0xE5, 0x5E, 0xE5, 0x5D, 0xE5, 0x1D, 0xDC, 0xFC, 0xD4, 0xBB, 0x02, 0xD4, 0x9A, 0x80, 0xD4, 0x7A, 0x01, 0xDC, 0x9A, 0x09, 0xDC, 0x79, 0x01, 0xDC, 0x99, 0x89, 0xE4, 0x99, 0xDC, 0x79, 0xDC, 0x58, 0xD4, 0x58, 0xDC, 0x58, 0xDC, 0x79, 0xDC, 0x99, 0xDC, 0x79, 0xDC, 0x58, 0xD4, 0x38, 0x01, 0xDC, 0x58, 0x80, 0xDC, 0x79, 0x02, 0xDC, 0x58, 0x80, 0xDC, 0x38, 0x01, 0xDC, 0x58, 0x84, 0xDC, 0x37, 0xDC, 0x58, 0xDC, 0x38, 0xDC, 0x58, 0xDC, 0x38, 0x02, 0xDC, 0x58, 0x01, 0xDC, 0x37, 0x82, 0xDC, 0x57, 0xDC, 0x58, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x81, 0xDC, 0x58, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x81, 0xE4, 0x57, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x83, 0xDC, 0x37, 0xDC, 0x16, 0xDC, 0x37, 0xDC, 0x16, 0x01, 0xDC, 0x36, 0x02, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x81, 0xDC, 0x77, 0xDC, 0x57, 0x02, 0xDC, 0x77, 0x91, 0xD4, 0x57, 0xC4, 0x57, 0xBC, 0x77, 0xB4, 0xF8, 0xB5, 0x9A, 0xA5, 0xFB, 0x96, 0x3C, 0x7E, 0x5C, 0x76, 0x7C, 0x66, 0x9C, 0x56, 0x9C, 0x4E, 0xBC, 0x46, 0xFD, 0x3E, 0xFD, 0x37, 0x1E, 0x2F, 0x3D, 0x2F, 0x7E, 0x27, 0x7E, + 0x01, 0x1F, 0x7E, 0x82, 0x17, 0x7E, 0x17, 0x9F, 0x17, 0xBF, 0x03, 0x0F, 0xBF, 0x0C, 0x07, 0xDF, 0x98, 0x07, 0xBF, 0x0F, 0xBF, 0x0F, 0x9F, 0x1F, 0x9E, 0x2F, 0x5E, 0x3E, 0xFD, 0x56, 0x7C, 0x6D, 0xBB, 0x74, 0xB7, 0x84, 0x36, 0x8B, 0xF5, 0xAC, 0x97, 0xAC, 0x77, 0xBC, 0xD8, 0xAC, 0x97, 0x9C, 0x77, 0x73, 0xF5, 0x74, 0xD8, 0x75, 0xFB, 0x56, 0x5C, 0x46, 0xFD, 0x37, 0x7E, 0x1F, 0x9E, 0x0F, 0x9E, 0x0F, 0xDF, 0x04, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x07, 0x07, 0xDF, 0x07, 0x07, 0xDE, 0x03, 0x07, 0xBE, 0x01, 0x07, 0xBD, 0x94, 0x07, 0x9D, 0x0F, 0x9D, 0x17, 0x9D, 0x27, 0x7D, 0x47, 0x1D, 0x5E, 0x5B, 0x7D, 0x99, 0x94, 0xB7, 0xA4, 0x36, 0xB4, 0x36, 0xAB, 0x94, 0xA3, 0x53, 0x93, 0x73, 0x8C, 0x75, 0x7D, 0xB8, 0x66, 0x79, 0x4E, 0xF9, 0x37, 0x39, 0x1F, 0x58, 0x17, 0x78, 0x0F, 0x97, 0x01, 0x07, 0xB7, 0x80, 0x07, 0xD7, 0x01, 0x07, 0xB6, 0x03, 0x07, 0xB5, 0x81, 0x07, 0xB4, 0x07, 0xD4, 0x02, 0x07, 0xD3, 0x01, 0x07, 0xD2, 0x02, 0x07, 0xD1, 0x82, 0x07, 0xB0, 0x07, 0xD0, 0x07, 0xCF, 0x01, 0x07, 0xAF, 0x02, 0x07, 0xCE, 0x01, 0x07, 0xCD, 0x80, 0x07, 0xCC, 0x02, 0x07, 0xAC, 0x02, 0x07, 0xCB, 0x80, 0x07, 0xCA, 0x03, 0x07, 0xAA, 0x01, 0x07, 0x8A, 0x02, 0x07, 0x8B, 0x01, 0x07, 0x8C, 0x01, 0x07, 0x6D, 0x91, 0x07, 0x4D, 0x0F, 0x2E, 0x0F, 0x4F, 0x0F, 0x10, 0x16, 0xF1, 0x16, 0xD3, 0x1E, 0x94, 0x16, 0x15, 0x0D, 0x54, 0x04, 0xB4, 0x04, 0x35, 0x03, 0xF6, 0x03, 0xB7, 0x03, 0xB8, 0x03, 0x9A, 0x03, 0x9B, 0x03, 0x5B, 0x03, 0x5C, 0x01, 0x03, 0x3D, 0x80, 0x03, 0x3E, + 0x01, 0x03, 0x1E, 0x02, 0x02, 0xFF, 0x81, 0x02, 0xDF, 0x02, 0xBF, 0x02, 0x02, 0x9F, 0x02, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x80, 0x02, 0x7F, 0x03, 0x02, 0x3F, 0x80, 0x02, 0x1F, 0x02, 0x01, 0xFF, 0x03, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x03, 0x01, 0x9F, 0x8E, 0x01, 0xBF, 0x01, 0xBE, 0x01, 0xDE, 0x01, 0xBD, 0x01, 0x9B, 0x01, 0xDB, 0x02, 0x3B, 0x03, 0x1C, 0x0C, 0x7E, 0x1D, 0x9F, 0x16, 0x1F, 0x0E, 0x7F, 0x0E, 0xDF, 0x17, 0x9F, 0x17, 0xBF, 0x01, 0x0F, 0xBF, 0xA0, 0x07, 0xBF, 0x0F, 0xBF, 0x07, 0x9F, 0x17, 0xBF, 0x17, 0x7F, 0x2F, 0x9F, 0x37, 0x1E, 0x4E, 0xBD, 0x76, 0xDF, 0x8D, 0x9C, 0x62, 0xD3, 0x8A, 0x52, 0xAA, 0x33, 0xC2, 0x13, 0xC9, 0xF3, 0xC9, 0xB3, 0xD1, 0x93, 0xD1, 0xB4, 0xD1, 0x93, 0xD1, 0xB3, 0xD1, 0xD4, 0xD1, 0xB3, 0xC9, 0xD4, 0xC9, 0xD3, 0xC1, 0xF4, 0xBA, 0x35, 0xBA, 0x97, 0x79, 0x31, 0x58, 0xB0, 0x51, 0x31, 0x49, 0x52, 0x41, 0x52, 0x39, 0x51, 0x01, 0x39, 0x72, 0x02, 0x31, 0x51, 0x82, 0x39, 0x71, 0x31, 0x51, 0x31, 0x30, 0x01, 0x31, 0x51, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x14, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x09, 0x34, 0x11, 0xB6, 0x02, 0x1A, 0x18, 0x80, 0x19, 0xF8, 0x03, 0x1A, 0x18, 0x85, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x02, 0x19, 0x31, + 0x05, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x19, 0x30, 0x08, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x8D, + 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xFA, 0x01, 0xD9, 0x04, 0x01, 0xDA, 0x8E, 0x01, 0xD9, 0x09, 0xF9, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x55, 0x08, 0xF3, 0x11, 0x34, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x10, 0x04, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x83, 0x19, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x30, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x02, 0x19, 0x31, 0x84, 0x21, 0x31, 0x19, 0x11, 0x19, 0x10, 0x21, 0x11, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x83, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x03, 0x21, 0x31, 0x81, 0x19, 0x31, 0x19, 0x10, 0x03, 0x21, 0x31, 0x83, 0x21, 0x11, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x01, 0x21, 0x11, 0x05, 0x21, 0x31, 0x81, 0x19, 0x31, 0x19, 0x30, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x19, 0x31, 0x0E, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0A, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x4F, 0x01, + 0x21, 0x2F, 0x01, 0x29, 0x30, 0x87, 0x21, 0x30, 0x21, 0x31, 0x21, 0x32, 0x19, 0x12, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x96, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x72, 0x21, 0x31, 0x19, 0x10, 0x19, 0x31, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x09, 0x33, 0x11, 0x95, 0x19, 0xF7, 0x22, 0x18, 0x22, 0x17, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x53, 0x19, 0x32, 0x19, 0x12, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x50, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x8F, 0x21, 0x51, 0x19, 0x52, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0xD6, 0x1A, 0x17, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, + 0x11, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x20, 0xEE, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x03, 0x28, 0xEE, 0x80, 0x28, 0xCD, 0x01, 0x28, 0xAD, 0x01, 0x30, 0xAD, 0x90, 0x30, 0x8C, 0x28, 0x6C, 0x20, 0x2B, 0x20, 0x0A, 0x18, 0x09, 0x20, 0x09, 0x28, 0x0A, 0x38, 0x6B, 0x51, 0x4E, 0x61, 0xD0, 0x7A, 0x72, 0x92, 0xF5, 0xAB, 0xD8, 0xBC, 0x3A, 0xC4, 0x5A, 0xCC, 0x9B, 0xD4, 0xDC, 0x01, 0xDC, 0xFC, 0x02, 0xE5, 0x1C, 0x81, 0xED, 0x1C, 0xE4, 0xFC, 0x01, 0xE4, 0xFB, 0x01, 0xE4, 0xDB, 0x84, 0xDC, 0xDB, 0xDC, 0xBA, 0xD4, 0x9A, 0xD4, 0x79, 0xD4, 0x9A, 0x02, 0xD4, 0x79, 0x84, 0xCC, 0x58, 0xD4, 0x58, 0xD4, 0x59, 0xDC, 0x79, 0xD4, 0x79, 0x02, 0xDC, 0x79, 0x82, 0xD4, 0x38, 0xD4, 0x58, 0xDC, 0x59, 0x01, 0xDC, 0x79, 0x02, 0xDC, 0x58, 0x80, 0xD4, 0x38, 0x02, 0xDC, 0x38, 0x03, 0xDC, 0x58, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x03, 0xDC, 0x58, 0x04, 0xDC, 0x57, 0x80, 0xE4, 0x58, 0x02, 0xDC, 0x37, 0x80, 0xDC, 0x16, 0x06, 0xDC, 0x37, 0x80, 0xDC, 0x36, 0x02, 0xDC, + 0x37, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x83, 0xDC, 0x57, 0xDC, 0x36, 0xD4, 0x16, 0xDC, 0x56, 0x02, 0xDC, 0x57, 0x81, 0xD4, 0x36, 0xDC, 0x36, 0x02, 0xDC, 0x57, 0x01, 0xDC, 0x77, 0x96, 0xDC, 0x78, 0xD4, 0x78, 0xCC, 0x98, 0xBC, 0x97, 0xA4, 0x36, 0x8C, 0x56, 0x84, 0xB7, 0x7D, 0x18, 0x7D, 0x9A, 0x7E, 0x1C, 0x76, 0x5C, 0x6E, 0x9D, 0x66, 0x9D, 0x5E, 0xDD, 0x56, 0xDD, 0x46, 0xFD, 0x3E, 0xFD, 0x37, 0x1E, 0x37, 0x3E, 0x2F, 0x3E, 0x2F, 0x5E, 0x27, 0x5E, 0x1F, 0x7F, 0x01, 0x17, 0x9F, 0x03, 0x0F, 0xBF, 0x80, 0x0F, 0xDF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x05, 0x07, 0xDF, 0x99, 0x07, 0xBF, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x7E, 0x37, 0x5E, 0x57, 0x1E, 0x6E, 0x7D, 0x95, 0xFB, 0x8C, 0x76, 0x9C, 0x16, 0xB4, 0x36, 0xC4, 0x97, 0xC4, 0x77, 0xCC, 0xB8, 0xC4, 0x77, 0xBC, 0x77, 0x9C, 0x16, 0x84, 0x36, 0x85, 0x7A, 0x6E, 0x3B, 0x5E, 0xFD, 0x47, 0x3D, 0x2F, 0x5E, 0x17, 0x7E, 0x0F, 0xBE, 0x07, 0xBE, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x05, 0x07, 0xDF, 0x08, 0x07, 0xDE, 0x84, 0x07, 0xBE, 0x07, 0xDE, 0x07, 0xBE, 0x07, 0xDE, 0x07, 0xBD, 0x01, 0x07, 0x9D, 0x97, 0x17, 0x9D, 0x2F, 0x7D, 0x47, 0x1D, 0x56, 0x5B, 0x85, 0xBA, 0x8C, 0xB7, 0xA4, 0x36, 0xB4, 0x16, 0xB3, 0xD5, 0xAB, 0xB4, 0x9B, 0x73, 0x83, 0xD3, 0x7D, 0x37, 0x76, 0x59, 0x4E, 0x99, 0x3F, 0x19, 0x27, 0x38, 0x17, 0x78, 0x0F, 0x98, 0x07, 0x98, 0x07, 0xD8, 0x07, 0xD7, 0x07, 0xB7, 0x07, 0xD7, 0x01, 0x07, 0xD6, 0x81, 0x07, 0xB6, 0x07, 0xB5, 0x01, 0x07, 0xD5, + 0x01, 0x07, 0xD4, 0x02, 0x07, 0xD3, 0x02, 0x07, 0xD2, 0x01, 0x07, 0xD1, 0x01, 0x07, 0xD0, 0x02, 0x07, 0xCF, 0x02, 0x07, 0xCE, 0x03, 0x07, 0xCD, 0x82, 0x07, 0xCC, 0x07, 0xAC, 0x07, 0xCC, 0x02, 0x07, 0xAB, 0x80, 0x07, 0xCB, 0x02, 0x07, 0xAB, 0x82, 0x07, 0x8B, 0x07, 0xAB, 0x07, 0x8B, 0x03, 0x07, 0x8C, 0x01, 0x07, 0x8D, 0x92, 0x07, 0x6E, 0x0F, 0x6F, 0x0F, 0x50, 0x0F, 0x31, 0x17, 0x12, 0x16, 0xD3, 0x1E, 0xB5, 0x1E, 0x56, 0x15, 0xD7, 0x04, 0xD5, 0x04, 0x55, 0x03, 0xF6, 0x03, 0xB7, 0x03, 0x78, 0x03, 0x7A, 0x03, 0x7B, 0x03, 0x5C, 0x03, 0x3C, 0x03, 0x3D, 0x01, 0x03, 0x1E, 0x81, 0x02, 0xFE, 0x02, 0xFF, 0x01, 0x02, 0xDF, 0x01, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x82, 0x02, 0x7F, 0x02, 0x9F, 0x02, 0x7F, 0x03, 0x02, 0x5F, 0x81, 0x02, 0x3F, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x80, 0x02, 0x1F, 0x01, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x80, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x02, 0x01, 0x9F, 0x8E, 0x01, 0xBF, 0x01, 0xBE, 0x09, 0xFE, 0x09, 0xDD, 0x01, 0x9C, 0x01, 0x7B, 0x02, 0x1B, 0x02, 0x5A, 0x03, 0x7C, 0x1D, 0x3F, 0x1D, 0xDF, 0x16, 0x3F, 0x06, 0x5E, 0x17, 0x3F, 0x17, 0xBF, 0x01, 0x0F, 0xBF, 0x80, 0x0F, 0xDF, 0x02, 0x0F, 0xBF, 0x8B, 0x17, 0x9F, 0x1F, 0x7F, 0x2F, 0x5F, 0x3E, 0xFE, 0x5E, 0xBE, 0x86, 0x5E, 0x63, 0xB5, 0x69, 0xF0, 0x9A, 0x12, 0xBA, 0x13, 0xC9, 0xF3, 0xC9, 0xB3, 0x01, 0xD1, 0xB3, 0x80, 0xD1, 0x93, 0x01, 0xD1, 0xB3, 0x80, 0xD1, 0xD4, 0x01, 0xC9, 0xB3, 0x88, 0xC9, 0xF4, 0xC2, 0x35, 0xC2, 0x76, 0xAA, 0x35, 0x58, 0x6F, 0x59, + 0x11, 0x51, 0x52, 0x41, 0x52, 0x41, 0x51, 0x02, 0x39, 0x71, 0x07, 0x31, 0x51, 0x03, 0x29, 0x30, 0x80, 0x29, 0x50, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x06, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x83, 0x11, 0x12, 0x09, 0x33, 0x11, 0xB6, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x82, 0x11, 0xD7, 0x09, 0x97, 0x11, 0xB7, 0x01, 0x19, 0xF8, 0x88, 0x11, 0xF8, 0x11, 0xD7, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x04, 0x19, 0x31, 0x80, 0x19, 0x30, 0x03, 0x19, 0x31, 0x81, 0x19, 0x51, 0x19, 0x30, 0x07, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, + 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x08, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x30, 0x19, 0x10, 0x11, 0x11, 0x11, 0x33, 0x09, 0x74, 0x11, 0xD7, 0x11, 0xF9, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x8B, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xB7, 0x09, 0x55, 0x09, 0x35, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x51, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x03, 0x21, 0x11, 0x81, 0x19, 0x11, 0x21, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x32, 0x03, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, + 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x0A, 0x19, 0x11, 0x02, 0x19, 0x31, 0x02, 0x19, 0x11, 0x06, 0x19, 0x31, 0x05, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x24, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x51, 0x01, 0x21, 0x31, 0x01, 0x21, 0x50, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x89, 0x29, 0x30, 0x21, 0x30, 0x29, 0x51, 0x21, 0x31, 0x21, 0x32, 0x19, 0x12, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x82, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x32, 0x01, 0x11, 0x11, 0x01, 0x21, 0x51, 0x01, 0x21, 0x31, 0x81, 0x21, 0x51, 0x19, 0x52, 0x01, 0x11, 0x32, 0x87, 0x09, 0x53, 0x11, 0x95, 0x19, 0xF7, 0x22, 0x38, 0x22, 0x17, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x33, 0x01, 0x19, 0x12, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x29, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, + 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x50, 0x19, 0x51, 0x11, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x1A, 0x17, 0x22, 0x17, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x18, 0xF1, 0x02, 0x19, 0x11, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x06, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x0E, 0x20, 0xEE, 0x01, 0x29, 0x0E, 0x01, 0x28, 0xCD, 0x04, 0x28, 0xCE, 0x01, 0x28, 0xAD, 0x85, 0x28, 0x8C, 0x28, 0x6C, 0x28, 0x4C, 0x28, 0x4B, 0x20, 0x2A, 0x20, 0x0A, 0x02, 0x28, 0x0A, 0x8E, 0x30, 0x2A, 0x38, 0x4B, 0x40, 0x8C, 0x48, 0xCC, 0x51, 0x2E, 0x61, 0x6E, 0x69, 0xD0, 0x71, 0xF1, 0x8A, 0x93, 0x92, 0xF5, 0xAB, 0x97, 0xBC, 0x18, 0xD4, 0xDB, 0xDD, 0x1D, 0xDD, 0x1C, 0x01, 0xE5, 0x5E, 0x88, 0xED, 0x7E, 0xE5, 0x5E, 0xE5, 0x3D, 0xDD, 0x1C, 0xDC, 0xFC, 0xD4, 0xDB, 0xD4, 0xBA, 0xD4, 0xBB, 0xD4, 0x9A, 0x01, 0xDC, 0xBB, 0x84, 0xDC, 0x9A, 0xD4, 0x9A, 0xD4, + 0x7A, 0xDC, 0x9A, 0xDC, 0x7A, 0x03, 0xDC, 0x9A, 0x02, 0xDC, 0x79, 0x01, 0xDC, 0x59, 0x03, 0xDC, 0x58, 0x01, 0xDC, 0x78, 0x81, 0xDC, 0x58, 0xDC, 0x78, 0x07, 0xDC, 0x58, 0x80, 0xDC, 0x57, 0x04, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x04, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x57, 0x01, 0xDC, 0x36, 0x05, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x9C, 0xDC, 0x77, 0xDC, 0x78, 0xD4, 0x57, 0xD4, 0x77, 0xCC, 0xB8, 0xCC, 0xD9, 0xBC, 0xF9, 0xAC, 0xF9, 0x9C, 0xD8, 0x84, 0xB7, 0x7C, 0xB7, 0x74, 0xD7, 0x75, 0x39, 0x75, 0xBA, 0x76, 0x3C, 0x76, 0x7D, 0x76, 0xBD, 0x66, 0x9D, 0x5E, 0xBD, 0x4E, 0xBD, 0x4E, 0xDD, 0x47, 0x1E, 0x3F, 0x3E, 0x37, 0x5E, 0x27, 0x5E, 0x27, 0x7E, 0x1F, 0x7E, 0x17, 0x9F, 0x17, 0xBF, 0x03, 0x0F, 0xBF, 0x05, 0x07, 0xDF, 0x81, 0x07, 0xBF, 0x07, 0xBE, 0x01, 0x0F, 0xBF, 0x97, 0x1F, 0x9E, 0x27, 0x7E, 0x47, 0x5F, 0x5E, 0xBD, 0x7E, 0x1C, 0xA5, 0xBB, 0x93, 0xD4, 0xBC, 0x36, 0xCC, 0x57, 0xD4, 0x57, 0xCC, 0x16, 0xD4, 0x57, 0xCC, 0x16, 0xC4, 0x36, 0xB4, 0x57, 0x94, 0x16, 0x7C, 0x76, 0x7D, 0xDA, 0x6E, 0x9C, 0x4E, 0xBC, 0x37, 0x3D, 0x27, 0x7E, 0x17, 0x9E, 0x0F, 0xBF, 0x04, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x08, 0x07, 0xDE, 0x01, 0x07, 0xBE, 0x98, 0x07, 0xDE, 0x07, 0xBE, 0x07, 0xBD, 0x07, 0x9D, 0x17, 0x9D, 0x27, 0x7D, 0x3F, 0x1D, 0x56, 0x5B, 0x7D, 0xDA, 0x8C, 0xF8, 0x9C, 0x15, 0xB4, 0x16, 0xBC, 0x16, 0xB3, 0xB5, 0xAB, + 0xB5, 0x8B, 0x93, 0x7C, 0x95, 0x86, 0x19, 0x5E, 0x79, 0x46, 0xFA, 0x2F, 0x39, 0x1F, 0x79, 0x0F, 0x78, 0x0F, 0x98, 0x07, 0xB8, 0x01, 0x07, 0xD8, 0x03, 0x07, 0xD7, 0x01, 0x07, 0xD6, 0x02, 0x07, 0xD5, 0x02, 0x07, 0xD4, 0x02, 0x07, 0xD3, 0x01, 0x07, 0xD2, 0x01, 0x07, 0xD1, 0x03, 0x07, 0xD0, 0x02, 0x07, 0xCF, 0x02, 0x07, 0xCE, 0x04, 0x07, 0xCD, 0x02, 0x07, 0xCC, 0x02, 0x07, 0xAC, 0x82, 0x07, 0x8C, 0x07, 0xAC, 0x07, 0x8C, 0x01, 0x07, 0xAC, 0x01, 0x07, 0xAD, 0x01, 0x07, 0x8D, 0x91, 0x07, 0x8E, 0x07, 0x6F, 0x0F, 0x70, 0x0F, 0x51, 0x17, 0x32, 0x1F, 0x34, 0x16, 0xD5, 0x1E, 0xB6, 0x1E, 0x77, 0x1D, 0xF8, 0x0D, 0x17, 0x04, 0x56, 0x03, 0xD6, 0x03, 0xB7, 0x03, 0x79, 0x03, 0x5A, 0x03, 0x5B, 0x03, 0x3C, 0x01, 0x03, 0x1D, 0x01, 0x02, 0xFE, 0x81, 0x02, 0xDE, 0x02, 0xDF, 0x01, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x02, 0x02, 0x7F, 0x02, 0x02, 0x5F, 0x02, 0x02, 0x3F, 0x02, 0x02, 0x1F, 0x82, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xFF, 0x03, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x81, 0x01, 0x9F, 0x01, 0x7F, 0x01, 0x01, 0x9F, 0x90, 0x01, 0xBF, 0x01, 0xBE, 0x09, 0xDE, 0x01, 0x5B, 0x01, 0x5A, 0x11, 0xFB, 0x02, 0x3A, 0x02, 0x9A, 0x1C, 0x5E, 0x2D, 0xDF, 0x1D, 0xFF, 0x16, 0x7F, 0x0E, 0xBF, 0x17, 0x7F, 0x17, 0xBF, 0x0F, 0xDF, 0x07, 0xBF, 0x01, 0x0F, 0xDF, 0x8D, 0x07, 0x9F, 0x0F, 0xBF, 0x17, 0x7E, 0x27, 0x7F, 0x2F, 0x1E, 0x4E, 0xDE, 0x76, 0xBF, 0x7D, 0x5B, 0x5A, 0x51, 0x8A, 0x12, 0xB2, 0x33, 0xCA, 0x14, 0xC9, 0xD3, 0xC9, 0xB3, 0x04, 0xD1, 0xB3, 0x90, 0xD1, 0xD4, 0xC9, + 0xB3, 0xC9, 0xD3, 0xC1, 0xF4, 0xC2, 0x35, 0xBA, 0x76, 0x81, 0x31, 0x50, 0xAF, 0x59, 0x52, 0x49, 0x52, 0x41, 0x52, 0x39, 0x51, 0x39, 0x71, 0x39, 0x72, 0x31, 0x71, 0x31, 0x51, 0x31, 0x31, 0x03, 0x31, 0x51, 0x01, 0x31, 0x50, 0x80, 0x29, 0x50, 0x0B, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x04, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x31, 0x21, 0x11, 0x19, 0x31, 0x11, 0x12, 0x09, 0x54, 0x01, 0x19, 0xF8, 0x81, 0x1A, 0x39, 0x11, 0xD8, 0x02, 0x09, 0x76, 0x81, 0x09, 0x56, 0x09, 0x96, 0x01, 0x11, 0xB7, 0x85, 0x1A, 0x18, 0x22, 0x18, 0x19, 0xB6, 0x11, 0x55, 0x11, 0x54, 0x11, 0x33, 0x01, 0x11, 0x12, 0x81, 0x11, 0x31, 0x11, 0x11, 0x03, 0x19, 0x11, 0x80, 0x11, 0x11, 0x05, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x31, 0x81, 0x21, 0x51, 0x21, 0x31, 0x0A, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x09, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x09, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, + 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x8A, 0x19, 0x10, 0x19, 0x31, 0x11, 0x31, 0x09, 0x33, 0x11, 0x95, 0x09, 0xB7, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x83, 0x09, 0xD8, 0x11, 0xD8, 0x09, 0x97, 0x01, 0x36, 0x03, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x19, 0x0F, 0x19, 0x10, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x01, 0x19, 0x11, 0x80, 0x10, 0xF1, 0x01, 0x19, 0x11, 0x82, 0x18, 0xF1, 0x19, 0x12, + 0x11, 0x12, 0x04, 0x10, 0xF2, 0x80, 0x11, 0x12, 0x0E, 0x11, 0x11, 0x01, 0x19, 0x11, 0x81, 0x19, 0x12, 0x11, 0x11, 0x01, 0x11, 0x12, 0x03, 0x11, 0x11, 0x03, 0x11, 0x12, 0x80, 0x11, 0x31, 0x01, 0x11, 0x11, 0x81, 0x19, 0x11, 0x11, 0x11, 0x02, 0x19, 0x11, 0x80, 0x19, 0x31, 0x05, 0x19, 0x11, 0x20, 0x11, 0x11, 0x83, 0x10, 0xF0, 0x11, 0x10, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x02, 0x19, 0x30, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x74, 0x09, 0x12, 0x11, 0x11, 0x11, 0x10, 0x19, 0x31, 0x01, 0x21, 0x31, 0x90, 0x21, 0x51, 0x21, 0x52, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x09, 0x53, 0x11, 0x74, 0x19, 0xF7, 0x22, 0x38, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x13, 0x19, 0x12, 0x18, 0xF1, 0x21, 0x11, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x29, 0x10, 0x04, 0x21, 0x10, 0x02, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, + 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x84, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x51, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x17, 0x22, 0x38, 0x19, 0xD6, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x08, 0x21, 0x30, 0x80, 0x21, 0x50, 0x07, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x28, 0xEF, 0x02, 0x28, 0xEE, 0x81, 0x28, 0xCE, 0x28, 0xEE, 0x01, 0x28, 0xAD, 0x80, 0x28, 0x8D, 0x02, 0x28, 0xAD, 0x82, 0x30, 0xAD, 0x28, 0xAD, 0x28, 0xAC, 0x01, 0x28, 0x8C, 0x01, 0x28, 0x6C, 0x82, 0x20, 0x4B, 0x20, 0x2B, 0x20, 0x2A, 0x04, 0x18, 0x09, 0x8D, 0x20, 0x09, 0x20, 0x0A, 0x28, 0x2A, 0x30, 0x6B, 0x59, 0x90, 0x6A, 0x32, 0x82, 0xB4, 0x93, 0x36, 0x9B, 0x77, 0xAB, 0xD9, + 0xC4, 0xBB, 0xCC, 0xDC, 0xD4, 0xFD, 0xDD, 0x1E, 0x01, 0xDD, 0x1D, 0x80, 0xE5, 0x5E, 0x01, 0xE5, 0x3E, 0x83, 0xE5, 0x3D, 0xE5, 0x1D, 0xE5, 0x3D, 0xE5, 0x1C, 0x01, 0xE4, 0xFC, 0x80, 0xE4, 0xFB, 0x01, 0xDC, 0xDB, 0x83, 0xDC, 0xBA, 0xDC, 0x9A, 0xDC, 0x99, 0xDC, 0xBA, 0x07, 0xDC, 0x99, 0x01, 0xDC, 0x79, 0x81, 0xDC, 0x78, 0xDC, 0x99, 0x01, 0xDC, 0x58, 0x80, 0xDC, 0x78, 0x04, 0xE4, 0x78, 0x01, 0xDC, 0x58, 0x85, 0xDC, 0x37, 0xDC, 0x57, 0xE4, 0x58, 0xE4, 0x78, 0xE4, 0x58, 0xE4, 0x57, 0x01, 0xE4, 0x58, 0x01, 0xDC, 0x37, 0x81, 0xDC, 0x16, 0xDC, 0x37, 0x06, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x9E, 0xDC, 0x37, 0xDC, 0x57, 0xD4, 0x37, 0xDC, 0x37, 0xDC, 0x78, 0xD4, 0x78, 0xCC, 0x37, 0xC4, 0x57, 0xC4, 0x77, 0xC4, 0xB8, 0xC5, 0x19, 0xBD, 0x1A, 0xB5, 0x1A, 0xAD, 0x19, 0x9C, 0xD8, 0x8C, 0x97, 0x7C, 0x76, 0x7C, 0xD7, 0x8D, 0x7A, 0x8D, 0xFC, 0x8E, 0x3D, 0x7E, 0x5D, 0x7E, 0xBD, 0x6E, 0xBD, 0x56, 0xBD, 0x46, 0x9D, 0x3E, 0xFD, 0x37, 0x1E, 0x2F, 0x5E, 0x27, 0x5E, 0x1F, 0x7E, 0x01, 0x17, 0x9E, 0x80, 0x0F, 0xBE, 0x01, 0x0F, 0xBF, 0x01, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x8C, 0x07, 0xBE, 0x0F, 0x9E, 0x17, 0xBF, 0x27, 0x9E, 0x37, 0x7E, 0x46, 0xFD, 0x66, 0x5C, 0x75, 0x59, 0xA5, 0x39, 0xAC, 0x56, 0xCC, 0x78, 0xD4, 0x57, 0xCB, 0xF6, 0x01, 0xD3, 0xF6, 0x8B, 0xCB, 0xD5, 0xD4, 0x37, 0xCC, 0x78, 0xAC, 0x17, 0x83, 0xD5, 0x7C, 0xF8, 0x7E, 0x3C, 0x56, 0x5B, 0x46, 0xFD, 0x37, 0x7E, 0x1F, 0x9E, 0x0F, 0xBE, 0x03, 0x07, 0xDF, 0x80, + 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x02, 0x07, 0xDE, 0x80, 0x07, 0xDF, 0x05, 0x07, 0xDE, 0x95, 0x07, 0xBE, 0x0F, 0x9D, 0x17, 0x9E, 0x27, 0x7E, 0x36, 0xFD, 0x56, 0x7B, 0x7D, 0xFA, 0x95, 0x59, 0x94, 0x15, 0xAB, 0xF6, 0xC4, 0x37, 0xC3, 0xF6, 0xB3, 0xB5, 0x93, 0x94, 0x7B, 0xF3, 0x8D, 0x98, 0x6E, 0x5A, 0x56, 0xDA, 0x37, 0x3A, 0x27, 0x5A, 0x17, 0x79, 0x0F, 0x99, 0x01, 0x07, 0xB9, 0x80, 0x07, 0xD9, 0x02, 0x07, 0xD8, 0x02, 0x07, 0xD7, 0x02, 0x07, 0xD6, 0x03, 0x07, 0xD5, 0x01, 0x07, 0xD4, 0x01, 0x07, 0xD3, 0x02, 0x07, 0xD2, 0x02, 0x07, 0xD1, 0x03, 0x07, 0xD0, 0x02, 0x07, 0xCF, 0x04, 0x07, 0xCE, 0x81, 0x07, 0xCD, 0x07, 0xAD, 0x04, 0x07, 0xCD, 0x05, 0x07, 0xAD, 0x01, 0x07, 0xAE, 0x95, 0x07, 0x8F, 0x07, 0x6F, 0x0F, 0x70, 0x0F, 0x51, 0x0F, 0x32, 0x17, 0x74, 0x17, 0x15, 0x16, 0xF5, 0x1E, 0xD7, 0x26, 0x98, 0x1E, 0x18, 0x15, 0x78, 0x04, 0x97, 0x03, 0xD7, 0x03, 0x77, 0x03, 0x38, 0x03, 0x3A, 0x03, 0x3C, 0x03, 0x1C, 0x03, 0x1D, 0x02, 0xFE, 0x02, 0xDE, 0x01, 0x02, 0xBE, 0x80, 0x02, 0x9E, 0x02, 0x02, 0x9F, 0x01, 0x02, 0x7F, 0x02, 0x02, 0x5F, 0x03, 0x02, 0x3F, 0x01, 0x02, 0x1F, 0x02, 0x01, 0xDF, 0x81, 0x01, 0xFF, 0x01, 0xDF, 0x03, 0x01, 0xBF, 0x03, 0x01, 0x9F, 0x8E, 0x01, 0x9E, 0x09, 0xBE, 0x11, 0xBE, 0x09, 0x3C, 0x09, 0x1A, 0x21, 0xFC, 0x1A, 0x5B, 0x01, 0xF8, 0x13, 0x5B, 0x3D, 0x9F, 0x25, 0xDF, 0x1E, 0x3F, 0x16, 0x7F, 0x17, 0x3F, 0x17, 0x9F, 0x03, 0x0F, 0xDF, 0x90, 0x0F, + 0xBF, 0x0F, 0x9F, 0x17, 0xBF, 0x1F, 0x7F, 0x27, 0x5F, 0x3E, 0xFE, 0x5E, 0xBE, 0x86, 0x3E, 0x6B, 0xB6, 0x69, 0xD0, 0xA2, 0x33, 0xBA, 0x14, 0xCA, 0x14, 0xC9, 0xD3, 0xD1, 0xB3, 0xD1, 0xB4, 0xD1, 0x73, 0x01, 0xD1, 0x93, 0x8F, 0xD1, 0xB3, 0xC9, 0x93, 0xC9, 0xB3, 0xC1, 0xD3, 0xC2, 0x14, 0xC2, 0x76, 0xB2, 0x76, 0x60, 0x8F, 0x58, 0xF1, 0x51, 0x72, 0x41, 0x31, 0x39, 0x51, 0x39, 0x72, 0x41, 0x92, 0x39, 0x92, 0x31, 0x51, 0x01, 0x31, 0x31, 0x02, 0x31, 0x51, 0x80, 0x31, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x15, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x8B, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x10, 0xF2, 0x19, 0x95, 0x22, 0x38, 0x1A, 0x18, 0x11, 0xF8, 0x11, 0xB7, 0x09, 0x76, 0x09, 0x35, 0x01, 0x34, 0x01, 0x09, 0x35, 0x88, 0x09, 0x76, 0x11, 0xB7, 0x1A, 0x19, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x55, 0x09, 0x34, 0x09, 0x13, 0x09, 0x12, 0x04, 0x11, 0x12, 0x80, 0x11, 0x32, 0x04, 0x11, 0x11, 0x02, 0x11, 0x31, 0x06, 0x19, 0x31, 0x02, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x05, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, + 0x10, 0x0A, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0B, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x17, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x08, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x89, 0x19, 0x10, 0x19, 0x11, 0x11, 0x52, 0x11, 0x53, 0x09, 0x75, 0x11, 0xB7, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x80, 0x09, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x83, 0x09, 0xFA, 0x09, 0xD9, 0x09, 0xB8, 0x01, 0x98, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x19, 0x10, 0x11, 0x10, 0x02, 0x11, 0x11, 0x80, 0x11, 0x32, 0x06, 0x11, 0x12, 0x05, 0x11, 0x13, 0x01, 0x11, 0x33, 0x05, 0x11, 0x32, 0x80, 0x11, 0x12, 0x1C, 0x11, 0x32, 0x81, 0x11, 0x12, 0x11, 0x32, + 0x05, 0x11, 0x12, 0x01, 0x11, 0x32, 0x81, 0x09, 0x12, 0x11, 0x12, 0x01, 0x09, 0x12, 0x81, 0x11, 0x12, 0x11, 0x32, 0x02, 0x09, 0x12, 0x80, 0x11, 0x32, 0x01, 0x09, 0x32, 0x03, 0x09, 0x12, 0x80, 0x11, 0x12, 0x03, 0x09, 0x12, 0x80, 0x11, 0x12, 0x01, 0x09, 0x11, 0x81, 0x11, 0x12, 0x09, 0x12, 0x01, 0x09, 0x11, 0x02, 0x08, 0xF1, 0x84, 0x09, 0x11, 0x11, 0x11, 0x11, 0x32, 0x11, 0x31, 0x11, 0x11, 0x01, 0x19, 0x11, 0x80, 0x11, 0x10, 0x01, 0x19, 0x31, 0x03, 0x21, 0x31, 0x04, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x52, 0x19, 0x12, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x82, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x32, 0x01, 0x11, 0x11, 0x80, 0x19, 0x11, 0x02, 0x21, 0x31, 0x01, 0x19, 0x51, 0x8B, 0x11, 0x31, 0x11, 0x32, 0x09, 0x53, 0x11, 0x74, 0x19, 0xF6, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x74, 0x19, 0x33, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x11, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x86, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, + 0x10, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x81, 0x11, 0x31, 0x11, 0x32, 0x01, 0x11, 0x53, 0x80, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x82, 0x21, 0xD6, 0x19, 0x75, 0x11, 0x33, 0x01, 0x19, 0x12, 0x80, 0x19, 0x11, 0x02, 0x21, 0x31, 0x04, 0x21, 0x30, 0x89, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x31, 0x82, 0x21, 0x51, 0x21, 0x31, 0x21, 0x51, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x28, 0xEF, 0x28, 0xEE, 0x29, 0x0F, 0x02, 0x28, 0xEE, 0x81, 0x29, 0x0E, 0x28, 0xEE, 0x04, 0x28, 0xCE, 0x82, 0x28, 0xCD, 0x28, 0xCE, 0x20, 0xAD, 0x01, 0x28, 0xCE, 0x01, 0x20, 0xAD, 0x80, 0x28, 0xCE, 0x01, 0x28, 0xCD, 0x03, 0x20, 0xAD, 0x87, 0x20, 0xAC, 0x20, 0x8C, 0x20, 0x6C, 0x20, 0x6B, 0x20, 0x4B, 0x20, 0x6C, + 0x28, 0x6C, 0x20, 0x4B, 0x01, 0x20, 0x0A, 0x9B, 0x20, 0x2A, 0x28, 0x4B, 0x30, 0x6B, 0x38, 0x8C, 0x38, 0xAD, 0x48, 0xED, 0x59, 0x4F, 0x69, 0xB1, 0x72, 0x12, 0x8A, 0xB4, 0x9B, 0x36, 0xAB, 0x97, 0xB3, 0xF9, 0xCC, 0xDB, 0xD5, 0x1C, 0xE5, 0x5E, 0xE5, 0x7E, 0xED, 0xBF, 0xED, 0x9E, 0xED, 0x7E, 0xED, 0x5D, 0xE5, 0x3C, 0xDC, 0xFB, 0xE5, 0x1C, 0xDC, 0xDB, 0xE4, 0xFB, 0xDC, 0xDB, 0xE4, 0xDB, 0x02, 0xDC, 0xBA, 0x02, 0xDC, 0x9A, 0x80, 0xDC, 0x99, 0x03, 0xDC, 0x79, 0x01, 0xDC, 0x99, 0x01, 0xE4, 0x99, 0x81, 0xDC, 0x99, 0xDC, 0x79, 0x01, 0xDC, 0x78, 0x81, 0xDC, 0x58, 0xDC, 0x78, 0x04, 0xDC, 0x58, 0x81, 0xE4, 0x58, 0xDC, 0x37, 0x01, 0xDC, 0x58, 0x80, 0xDC, 0x78, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x58, 0x02, 0xDC, 0x78, 0x03, 0xDC, 0x57, 0x83, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x58, 0xD4, 0x37, 0x01, 0xD4, 0x57, 0x80, 0xCC, 0x58, 0x01, 0xCC, 0x78, 0x81, 0xCC, 0x98, 0xCC, 0xB9, 0x01, 0xC4, 0xD9, 0x99, 0xBC, 0xD8, 0xB4, 0xD9, 0xAC, 0xB8, 0x94, 0x56, 0x84, 0x15, 0x7C, 0x35, 0x8D, 0x19, 0xA6, 0x7D, 0x9F, 0x1F, 0x7E, 0xBE, 0x6E, 0x9D, 0x56, 0x9D, 0x56, 0xFD, 0x47, 0x1D, 0x3F, 0x3E, 0x2F, 0x5E, 0x27, 0x5D, 0x1F, 0x5D, 0x1F, 0x7E, 0x17, 0x9E, 0x17, 0xBF, 0x0F, 0xBF, 0x0F, 0xBE, 0x0F, 0xBF, 0x07, 0xBF, 0x0F, 0xDF, 0x01, 0x0F, 0xBF, 0x9A, 0x0F, 0x9E, 0x17, 0x9E, 0x27, 0x7E, 0x37, 0x3E, 0x4E, 0xBD, 0x65, 0xDB, 0x85, 0x39, 0x94, 0x56, 0xBC, 0x98, 0xCC, 0x78, 0xCB, 0xF6, 0xD4, 0x16, 0xDB, 0xF6, 0xD3, 0xD6, 0xDB, 0xF6, 0xDC, 0x57, 0xCC, 0x37, 0xC4, 0x58, + 0x9C, 0x37, 0x74, 0x36, 0x75, 0x7A, 0x66, 0x3C, 0x4E, 0xBC, 0x3F, 0x5E, 0x27, 0x7E, 0x17, 0xBF, 0x0F, 0xBF, 0x03, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x81, 0x07, 0xDF, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x07, 0x07, 0xDF, 0x03, 0x07, 0xDE, 0x95, 0x07, 0xBE, 0x0F, 0x9E, 0x17, 0x9D, 0x27, 0x9E, 0x37, 0x1D, 0x4E, 0x7C, 0x76, 0x1B, 0x95, 0x79, 0x93, 0xF5, 0xAB, 0xF5, 0xBC, 0x16, 0xC3, 0xF6, 0xBB, 0xD5, 0xA3, 0x94, 0x8B, 0xD4, 0x84, 0xD6, 0x86, 0x7B, 0x5E, 0xBA, 0x3F, 0x1A, 0x27, 0x5A, 0x17, 0x7A, 0x0F, 0x9A, 0x01, 0x07, 0xB9, 0x03, 0x07, 0xD9, 0x02, 0x07, 0xD8, 0x02, 0x07, 0xD7, 0x02, 0x07, 0xD6, 0x02, 0x07, 0xD5, 0x01, 0x07, 0xD4, 0x03, 0x07, 0xD3, 0x02, 0x07, 0xD2, 0x03, 0x07, 0xD1, 0x03, 0x07, 0xD0, 0x05, 0x07, 0xCF, 0x07, 0x07, 0xCE, 0x82, 0x07, 0xAE, 0x07, 0xCE, 0x07, 0xAE, 0x01, 0x07, 0xAF, 0x99, 0x07, 0x8F, 0x07, 0x90, 0x07, 0x70, 0x0F, 0x71, 0x0F, 0x52, 0x0F, 0x53, 0x17, 0x54, 0x17, 0x35, 0x1E, 0xF6, 0x1E, 0xB7, 0x26, 0x99, 0x26, 0x5A, 0x1D, 0x9A, 0x04, 0x78, 0x03, 0xB7, 0x03, 0x58, 0x03, 0x39, 0x03, 0x3B, 0x03, 0x1C, 0x02, 0xFD, 0x02, 0xFE, 0x02, 0xBD, 0x02, 0x9E, 0x02, 0xBE, 0x02, 0x9E, 0x02, 0x9F, 0x02, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x02, 0x02, 0x3F, 0x02, 0x02, 0x1F, 0x01, 0x01, 0xFF, 0x02, 0x01, 0xDF, 0x06, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x90, 0x09, 0x9F, 0x09, 0x9E, 0x11, 0x9D, 0x11, 0x3C, 0x19, 0x3B, 0x42, 0xBF, 0x3A, 0xDD, 0x2A, 0xBB, 0x02, 0x58, 0x3C, 0xFF, 0x35, 0xBF, + 0x26, 0x1F, 0x16, 0x5F, 0x0E, 0xBE, 0x17, 0x5F, 0x17, 0xBF, 0x0F, 0xBF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x8F, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x9F, 0x2F, 0x1E, 0x46, 0xBE, 0x76, 0x9F, 0x8D, 0x5B, 0x5A, 0x31, 0x92, 0x53, 0xB2, 0x34, 0xC2, 0x14, 0xC9, 0xD3, 0xD1, 0xB3, 0xD1, 0x93, 0xD1, 0xB3, 0xD1, 0x93, 0x01, 0xD1, 0xB3, 0x8F, 0xC9, 0xB3, 0xC9, 0xD3, 0xC9, 0xD4, 0xC2, 0x14, 0xC2, 0x35, 0xBA, 0x96, 0x89, 0x93, 0x58, 0xB0, 0x59, 0x31, 0x49, 0x51, 0x41, 0x52, 0x39, 0x51, 0x39, 0x71, 0x39, 0x92, 0x31, 0x51, 0x31, 0x31, 0x02, 0x31, 0x51, 0x84, 0x31, 0x31, 0x31, 0x51, 0x31, 0x30, 0x29, 0x30, 0x31, 0x50, 0x15, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x11, 0x81, 0x10, 0xF2, 0x11, 0x96, 0x01, 0x1A, 0x18, 0x88, 0x11, 0xB7, 0x09, 0x76, 0x09, 0x55, 0x09, 0x35, 0x01, 0x14, 0x09, 0x34, 0x01, 0x14, 0x01, 0x35, 0x09, 0x76, 0x01, 0x11, 0xD8, 0x85, 0x09, 0x97, 0x09, 0x56, 0x09, 0x55, 0x09, 0x34, 0x09, 0x33, 0x11, 0x53, 0x02, 0x11, 0x33, 0x01, 0x11, 0x32, 0x01, 0x11, 0x12, 0x83, 0x11, 0x32, 0x11, 0x12, 0x11, 0x11, 0x11, 0x32, 0x01, 0x11, 0x31, 0x01, 0x11, 0x32, 0x80, 0x11, 0x11, 0x02, 0x11, 0x12, 0x02, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, + 0x30, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x09, 0x21, 0x0F, 0x89, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x87, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x09, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x0A, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x91, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x09, 0x33, 0x09, 0x75, 0x11, 0xD7, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xF9, 0x01, + 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x11, 0x31, 0x11, 0x52, 0x19, 0x73, 0x19, 0x74, 0x02, 0x19, 0x94, 0x81, 0x19, 0x95, 0x19, 0x94, 0x03, 0x19, 0x74, 0x02, 0x19, 0x75, 0x01, 0x19, 0x95, 0x01, 0x19, 0x74, 0x81, 0x19, 0x94, 0x19, 0x95, 0x13, 0x19, 0x94, 0x04, 0x19, 0x74, 0x80, 0x19, 0x94, 0x02, 0x19, 0x74, 0x81, 0x19, 0x73, 0x19, 0x74, 0x01, 0x19, 0x73, 0x81, 0x19, 0x74, 0x19, 0x73, 0x02, 0x19, 0x74, 0x80, 0x19, 0x94, 0x02, 0x19, 0x74, 0x80, 0x19, 0x94, 0x01, 0x19, 0x74, 0x0F, 0x19, 0x94, 0x80, 0x19, 0x74, 0x03, 0x19, 0x94, 0x81, 0x19, 0xB4, 0x19, 0x94, 0x04, 0x19, 0xB5, 0x8B, 0x21, 0xD5, 0x19, 0xD5, 0x19, 0xB4, 0x21, 0xD5, 0x21, 0xB5, 0x19, 0xB4, 0x19, 0x94, 0x19, 0x73, 0x19, 0x52, 0x11, 0x32, 0x11, 0x11, 0x19, 0x32, 0x01, 0x19, 0x11, 0x82, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x99, 0x21, 0x10, 0x21, 0x51, 0x21, 0x72, 0x19, 0x32, 0x11, 0x12, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xF7, 0x19, 0xD5, 0x11, 0x74, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x21, 0x51, 0x19, 0x51, 0x19, 0x31, 0x11, 0x31, + 0x11, 0x32, 0x09, 0x33, 0x11, 0x95, 0x02, 0x19, 0xF7, 0x86, 0x19, 0xB6, 0x11, 0x54, 0x19, 0x53, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x19, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x85, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x8C, 0x19, 0x30, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x19, 0x33, 0x11, 0x12, 0x01, 0x18, 0xF1, 0x81, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x50, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x31, 0x21, 0x11, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x83, 0x21, 0x52, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x09, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, + 0x30, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x81, 0x28, 0xEE, 0x28, 0xEF, 0x05, 0x28, 0xEE, 0x01, 0x20, 0xCE, 0x82, 0x20, 0xEE, 0x20, 0xCE, 0x20, 0xEE, 0x03, 0x20, 0xCE, 0x02, 0x20, 0xAD, 0x01, 0x28, 0xCE, 0x84, 0x30, 0xEE, 0x30, 0xCD, 0x30, 0xEE, 0x30, 0xCD, 0x28, 0xAD, 0x01, 0x28, 0x8C, 0x80, 0x28, 0x6C, 0x01, 0x28, 0x4B, 0x81, 0x20, 0x2A, 0x20, 0x0A, 0x04, 0x20, 0x09, 0x90, 0x28, 0x29, 0x38, 0x8B, 0x48, 0xEC, 0x59, 0x6E, 0x69, 0xF0, 0x82, 0x93, 0x93, 0x15, 0xAB, 0xD7, 0xBC, 0x19, 0xC4, 0x5A, 0xCC, 0x7A, 0xCC, 0x9B, 0xD4, 0xDC, 0xD4, 0xDB, 0xD4, 0xFC, 0xDC, 0xFC, 0xDD, 0x1C, 0x01, 0xE5, 0x1D, 0x81, 0xE5, 0x3D, 0xED, 0x5D, 0x01, 0xED, 0x3C, 0x84, 0xE5, 0x1C, 0xE4, 0xFC, 0xE4, 0xDB, 0xDC, 0xDB, 0xE4, 0xDB, 0x02, 0xDC, 0xBA, 0x80, 0xDC, 0x99, 0x01, 0xDC, 0x79, 0x80, 0xDC, 0x99, 0x04, 0xDC, 0x79, 0x82, 0xDC, 0x59, 0xDC, 0x78, 0xE4, 0x79, 0x01, 0xDC, 0x58, 0x01, 0xDC, 0x78, 0x82, 0xDC, 0x58, 0xD4, 0x58, 0xD4, 0x38, 0x01, 0xDC, 0x58, 0x80, 0xDC, 0x78, 0x05, 0xDC, 0x58, 0x80, 0xDC, 0x78, 0x03, 0xD4, 0x58, 0x82, 0xCC, 0x57, 0xD4, 0x58, 0xCC, 0x57, 0x01, 0xCC, 0x78, 0x93, 0xC4, 0x77, 0xC4, 0xB8, 0xC4, 0xD8, 0xC4, 0xF9, 0xB4, 0xD8, 0x94, 0x56, 0x6B, 0x93, 0x5B, 0x93, 0x74, 0xD8, 0x86, 0x1C, 0x86, 0xBE, 0x76, 0xBE, 0x6E, 0xFE, 0x5E, 0xFD, 0x57, 0x3E, 0x47, 0x3D, + 0x3F, 0x3D, 0x2F, 0x3D, 0x27, 0x5D, 0x1F, 0x7E, 0x01, 0x17, 0x9E, 0x81, 0x0F, 0xBE, 0x0F, 0xBF, 0x02, 0x0F, 0x9E, 0x9B, 0x17, 0x9E, 0x1F, 0x9F, 0x2F, 0x5E, 0x47, 0x1E, 0x56, 0x9C, 0x6D, 0xBA, 0x84, 0xD8, 0x9C, 0x36, 0xBC, 0x37, 0xCC, 0x37, 0xD4, 0x16, 0xDC, 0x16, 0xDB, 0xF6, 0xD3, 0xB6, 0xDB, 0xF7, 0xD3, 0xF6, 0xD4, 0x37, 0xCC, 0x78, 0xBC, 0xB9, 0x8C, 0x36, 0x74, 0xB7, 0x76, 0x1C, 0x5E, 0xBD, 0x3E, 0xFD, 0x27, 0x5E, 0x1F, 0x9F, 0x0F, 0xBF, 0x0F, 0xDF, 0x06, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x06, 0x07, 0xDF, 0x82, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xDE, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xDE, 0x8A, 0x07, 0xBE, 0x0F, 0x9E, 0x17, 0x9E, 0x27, 0x7E, 0x36, 0xFD, 0x4E, 0x7C, 0x76, 0x3B, 0x95, 0x7A, 0x8B, 0xF5, 0xAB, 0xD5, 0xBB, 0xF6, 0x01, 0xC3, 0xD6, 0x88, 0xB3, 0xB5, 0x93, 0x94, 0x7C, 0x14, 0x8E, 0x3B, 0x6E, 0xBB, 0x46, 0xFB, 0x2F, 0x3B, 0x17, 0x5A, 0x0F, 0x7A, 0x01, 0x07, 0xBA, 0x82, 0x07, 0xDA, 0x07, 0xFA, 0x07, 0xDA, 0x02, 0x07, 0xD9, 0x80, 0x07, 0xF9, 0x01, 0x07, 0xF8, 0x80, 0x07, 0xD8, 0x02, 0x07, 0xD7, 0x80, 0x07, 0xF7, 0x01, 0x07, 0xD6, 0x82, 0x07, 0xD5, 0x07, 0xF5, 0x07, 0xD5, 0x02, 0x07, 0xD4, 0x01, 0x07, 0xD3, 0x81, 0x07, 0xF3, 0x07, 0xD3, 0x01, 0x07, 0xD2, 0x02, 0x07, 0xF2, 0x02, 0x07, 0xF1, 0x80, 0x07, 0xD1, 0x06, 0x07, 0xD0, 0x06, 0x07, 0xCF, 0x01, 0x07, 0xAF, 0x80, 0x07, 0xD0, 0x01, 0x07, 0xB0, 0x94, 0x07, 0x90, 0x07, 0x91, 0x07, 0x71, 0x0F, 0x72, 0x07, 0x73, 0x0F, 0x54, 0x17, 0x55, 0x17, 0x16, 0x16, 0xD7, 0x1E, 0xB8, + 0x26, 0x9A, 0x26, 0x3B, 0x1D, 0x9B, 0x04, 0x99, 0x03, 0xB8, 0x03, 0x59, 0x03, 0x1A, 0x02, 0xFB, 0x02, 0xBC, 0x02, 0xBD, 0x02, 0xBE, 0x02, 0x02, 0x9E, 0x80, 0x02, 0x7E, 0x02, 0x02, 0x7F, 0x80, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x82, 0x02, 0x1F, 0x01, 0xFF, 0x02, 0x1F, 0x03, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x81, 0x01, 0x9F, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x80, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x90, 0x09, 0x9F, 0x09, 0x9E, 0x11, 0x9D, 0x19, 0x3C, 0x21, 0x5C, 0x5A, 0xFF, 0x52, 0xDD, 0x4B, 0x3D, 0x1A, 0x38, 0x23, 0x7A, 0x3D, 0x5F, 0x2D, 0xFF, 0x1E, 0x1F, 0x16, 0x9F, 0x17, 0x3F, 0x17, 0xBF, 0x0F, 0xBF, 0x02, 0x07, 0xDF, 0x8E, 0x07, 0xBF, 0x07, 0x9F, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x3E, 0x3E, 0xFE, 0x66, 0xBF, 0x8E, 0x3E, 0x63, 0x55, 0x7A, 0x73, 0xA2, 0x33, 0xC2, 0x54, 0xC1, 0xF3, 0xC9, 0xB3, 0xD1, 0xB3, 0x02, 0xD1, 0x93, 0x01, 0xD1, 0xB3, 0x8A, 0xC9, 0x93, 0xC1, 0x93, 0xC1, 0xD4, 0xC2, 0x14, 0xC2, 0x76, 0xAA, 0x56, 0x68, 0xB0, 0x50, 0xD0, 0x51, 0x52, 0x41, 0x51, 0x41, 0x52, 0x01, 0x39, 0x72, 0x80, 0x39, 0x71, 0x04, 0x31, 0x51, 0x01, 0x31, 0x31, 0x81, 0x31, 0x30, 0x31, 0x50, 0x14, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x8A, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x18, 0xF1, 0x10, 0xF2, 0x19, 0xB6, 0x1A, 0x19, 0x11, 0xD8, 0x09, 0x97, 0x03, 0x09, 0x55, 0x01, 0x09, 0x34, 0x83, 0x09, 0x35, + 0x09, 0x56, 0x11, 0xF8, 0x11, 0xD8, 0x01, 0x09, 0x97, 0x80, 0x11, 0x96, 0x01, 0x11, 0x95, 0x03, 0x19, 0x95, 0x04, 0x19, 0x94, 0x04, 0x19, 0xB4, 0x03, 0x19, 0x94, 0x01, 0x19, 0x54, 0x87, 0x11, 0x33, 0x11, 0x13, 0x10, 0xF2, 0x19, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x04, 0x21, 0x30, 0x03, 0x29, 0x30, 0x05, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, + 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x12, 0x09, 0x33, 0x09, 0x75, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x03, 0x01, 0xD9, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x86, 0x19, 0x30, 0x19, 0x31, 0x19, 0x52, 0x19, 0x73, 0x19, 0xB4, 0x19, 0xB5, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x80, 0x21, 0xF7, 0x01, 0x21, 0xF6, 0x81, 0x29, 0xF7, 0x29, 0xF6, 0x01, 0x29, 0xF7, 0x83, 0x29, 0xF6, 0x29, 0xF7, 0x2A, 0x17, 0x29, 0xF7, 0x02, 0x2A, 0x17, 0x84, 0x29, 0xF6, 0x2A, 0x17, 0x2A, 0x37, 0x29, 0xF6, 0x2A, 0x16, 0x02, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x03, 0x2A, 0x17, 0x83, 0x2A, 0x16, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x37, 0x02, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x07, 0x2A, 0x17, 0x0C, 0x2A, 0x16, 0x01, 0x2A, 0x17, 0x04, 0x2A, 0x37, 0x80, 0x2A, 0x17, 0x0C, 0x2A, 0x37, 0x82, 0x32, 0x37, 0x32, 0x57, 0x2A, 0x37, 0x01, 0x32, 0x37, 0x82, 0x32, 0x57, 0x2A, 0x37, 0x32, 0x57, 0x01, 0x2A, 0x37, 0x81, 0x2A, 0x16, 0x2A, 0x17, 0x01, 0x2A, 0x37, + 0x81, 0x2A, 0x57, 0x2A, 0x37, 0x01, 0x2A, 0x17, 0x85, 0x2A, 0x16, 0x29, 0xF6, 0x21, 0xD6, 0x21, 0xB5, 0x19, 0x53, 0x11, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x09, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x51, 0x21, 0x72, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x11, 0x21, 0x52, 0x01, 0x21, 0x51, 0x8D, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x09, 0x53, 0x11, 0x94, 0x19, 0xF7, 0x22, 0x18, 0x22, 0x17, 0x19, 0xB6, 0x11, 0x54, 0x19, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x19, 0x31, 0x89, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x19, 0xD5, 0x22, 0x17, + 0x21, 0xF7, 0x21, 0xD7, 0x19, 0x75, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x18, 0xF0, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x84, 0x29, 0x10, 0x21, 0x10, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x05, 0x19, 0x32, 0x82, 0x19, 0x52, 0x19, 0x32, 0x21, 0x32, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x07, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x20, 0xEF, 0x03, 0x20, 0xEE, 0x01, 0x28, 0xEE, 0x01, 0x28, 0xCE, 0x02, 0x28, 0xEE, 0x01, 0x28, 0xCE, 0x02, 0x28, 0xCD, 0x80, 0x28, 0xAD, 0x01, 0x28, 0xCD, 0x82, 0x28, 0x8C, 0x28, 0xAC, 0x20, 0x8C, 0x01, 0x28, 0x8B, 0x83, 0x20, 0x4B, 0x20, 0x4A, 0x28, 0x4A, 0x20, 0x2A, 0x05, 0x28, 0x2A, 0x81, 0x30, 0x2A, 0x30, 0x4B, 0x01, 0x38, 0x8B, 0x80, 0x38, 0x6B, 0x01, 0x38, 0x8B, 0x8D, 0x48, 0xED, 0x51, 0x2E, 0x59, 0x6F, 0x69, 0xD0, 0x72, 0x11, 0x82, 0x72, 0x92, 0xF4, 0xA3, 0x56, 0xAB, 0xB7, 0xC4, 0x7A, + 0xCC, 0xBB, 0xDC, 0xFC, 0xE5, 0x3D, 0xE5, 0x5D, 0x01, 0xED, 0x7E, 0x85, 0xED, 0x5D, 0xED, 0x3D, 0xE5, 0x1C, 0xDC, 0xDB, 0xDC, 0xBA, 0xD4, 0x9A, 0x01, 0xD4, 0x7A, 0x02, 0xDC, 0x7A, 0x02, 0xDC, 0x79, 0x80, 0xDC, 0x99, 0x03, 0xDC, 0x79, 0x02, 0xDC, 0x58, 0x80, 0xDC, 0x78, 0x03, 0xDC, 0x58, 0x01, 0xDC, 0x78, 0x84, 0xDC, 0x58, 0xD4, 0x58, 0xDC, 0x58, 0xD4, 0x37, 0xD4, 0x58, 0x03, 0xD4, 0x57, 0xB5, 0xD4, 0x77, 0xCC, 0x77, 0xCC, 0x97, 0xC4, 0xB8, 0xBC, 0xB8, 0xBC, 0xF9, 0xAC, 0xF9, 0x94, 0xB7, 0x7C, 0x76, 0x6C, 0x56, 0x6C, 0xD7, 0x75, 0xBA, 0x7E, 0x5C, 0x76, 0xBD, 0x66, 0xDD, 0x5E, 0xFD, 0x57, 0x5E, 0x47, 0x3E, 0x37, 0x5E, 0x2F, 0x5E, 0x27, 0x7E, 0x17, 0x7E, 0x17, 0x9F, 0x17, 0x9E, 0x0F, 0x9E, 0x17, 0x9E, 0x17, 0x7E, 0x1F, 0x5E, 0x2F, 0x3E, 0x47, 0x1E, 0x5E, 0x5C, 0x7D, 0xDB, 0x84, 0x77, 0xA4, 0x36, 0xC4, 0x37, 0xCB, 0xF6, 0xD3, 0xF6, 0xDB, 0xF6, 0xDB, 0xD6, 0xD3, 0xB6, 0xDB, 0xB6, 0xDB, 0xF6, 0xDC, 0x37, 0xCC, 0x37, 0xC4, 0xB9, 0x94, 0x57, 0x74, 0x97, 0x7E, 0x1C, 0x5E, 0x9D, 0x3E, 0xFD, 0x2F, 0x5E, 0x1F, 0x9F, 0x0F, 0x9F, 0x07, 0xBF, 0x05, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x0C, 0x07, 0xDF, 0x8B, 0x07, 0xDE, 0x07, 0xBE, 0x0F, 0x9E, 0x17, 0x9E, 0x27, 0x7E, 0x3F, 0x1E, 0x4E, 0x7C, 0x76, 0x3B, 0x8D, 0x7A, 0x94, 0x15, 0xAB, 0xD5, 0xBB, 0xD5, 0x01, 0xC3, 0xD6, 0x89, 0xBB, 0xD6, 0xA3, 0xB5, 0x7B, 0x93, 0x8D, 0x99, 0x7E, 0xBC, 0x4E, 0xDB, 0x2F, 0x3B, 0x1F, 0x7B, 0x0F, 0x9B, 0x0F, 0xBB, 0x02, 0x07, 0xDB, 0x03, 0x07, 0xDA, 0x83, 0x07, + 0xD9, 0x07, 0xF9, 0x07, 0xD9, 0x07, 0xD8, 0x01, 0x07, 0xF8, 0x80, 0x07, 0xD8, 0x02, 0x07, 0xD7, 0x02, 0x07, 0xD6, 0x02, 0x07, 0xD5, 0x05, 0x07, 0xD4, 0x80, 0x07, 0xD3, 0x03, 0x07, 0xF3, 0x83, 0x07, 0xF2, 0x07, 0xD2, 0x07, 0xF2, 0x07, 0xD2, 0x03, 0x07, 0xD1, 0x80, 0x07, 0xF1, 0x05, 0x07, 0xD1, 0x01, 0x07, 0xB0, 0x80, 0x07, 0xD0, 0x01, 0x07, 0xD1, 0x02, 0x07, 0xB1, 0x95, 0x07, 0xB2, 0x07, 0x92, 0x07, 0x93, 0x07, 0x73, 0x0F, 0x54, 0x0F, 0x35, 0x0F, 0x16, 0x16, 0xF6, 0x16, 0xB8, 0x1E, 0x99, 0x1E, 0x5A, 0x1D, 0xFB, 0x1D, 0x3B, 0x0C, 0x3A, 0x03, 0x79, 0x03, 0x1A, 0x02, 0xFB, 0x02, 0xDC, 0x02, 0xBD, 0x02, 0x9D, 0x02, 0x9E, 0x02, 0x7E, 0x01, 0x02, 0x7F, 0x02, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x01, 0x02, 0x1F, 0x05, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x03, 0x01, 0x9F, 0x92, 0x01, 0xBF, 0x01, 0x9F, 0x09, 0x7E, 0x11, 0x7E, 0x19, 0x9E, 0x19, 0x1C, 0x29, 0x3B, 0x5A, 0xBF, 0x5A, 0xBD, 0x5B, 0x1D, 0x3A, 0x9A, 0x12, 0x16, 0x3C, 0x7E, 0x35, 0x7F, 0x1D, 0xDE, 0x16, 0x5F, 0x16, 0xFF, 0x17, 0x7F, 0x0F, 0xBF, 0x01, 0x07, 0xBF, 0x91, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0x9F, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x9F, 0x37, 0x1E, 0x56, 0xDE, 0x86, 0xBF, 0x85, 0x3B, 0x72, 0xD4, 0x8A, 0x32, 0xAA, 0x33, 0xC2, 0x13, 0xC9, 0xD3, 0xC9, 0xB3, 0xD1, 0xD4, 0xD1, 0xB3, 0x01, 0xD1, 0x93, 0x80, 0xD1, 0xB3, 0x01, 0xC9, 0xB3, 0x88, 0xC1, 0xB3, 0xC1, 0xD4, 0xC2, 0x35, 0xBA, 0x56, 0x89, 0x93, 0x58, 0xAF, 0x59, 0x52, 0x49, 0x52, 0x41, 0x52, 0x01, 0x39, 0x51, + 0x8A, 0x39, 0x92, 0x39, 0x71, 0x31, 0x51, 0x39, 0x71, 0x31, 0x51, 0x31, 0x31, 0x31, 0x51, 0x31, 0x31, 0x31, 0x51, 0x31, 0x30, 0x31, 0x50, 0x16, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x87, 0x19, 0x31, 0x19, 0x11, 0x08, 0xF2, 0x19, 0xD7, 0x19, 0xF8, 0x11, 0xD8, 0x09, 0x97, 0x09, 0x56, 0x02, 0x09, 0x55, 0x85, 0x09, 0x34, 0x01, 0x34, 0x09, 0x55, 0x09, 0x76, 0x11, 0xD8, 0x11, 0xF8, 0x01, 0x11, 0xD8, 0x81, 0x11, 0xF7, 0x1A, 0x18, 0x01, 0x22, 0x38, 0x80, 0x2A, 0x38, 0x05, 0x2A, 0x37, 0x81, 0x32, 0x57, 0x32, 0x78, 0x01, 0x32, 0x77, 0x03, 0x2A, 0x37, 0x02, 0x2A, 0x17, 0x84, 0x29, 0xF7, 0x21, 0xB6, 0x21, 0x95, 0x11, 0x34, 0x11, 0x13, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, + 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x11, 0xD7, 0x09, 0xF8, 0x01, 0xD9, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xB9, 0x05, 0x01, 0xDA, 0x82, 0x01, 0xFA, 0x01, 0xDA, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x84, 0x19, 0x31, 0x19, 0x51, 0x19, 0x32, 0x11, 0x53, 0x19, 0xB4, 0x04, 0x19, 0xD6, 0x04, 0x21, 0xD6, 0x84, 0x29, 0xD6, 0x2A, 0x17, 0x29, 0xF6, 0x29, 0xF7, 0x2A, 0x17, 0x09, 0x29, 0xF6, 0x03, 0x21, 0xF6, 0x82, 0x21, 0xD6, 0x21, 0xF6, 0x22, 0x16, 0x02, 0x21, 0xF6, 0x80, 0x21, 0xD6, 0x04, 0x21, 0xF6, 0x02, 0x21, + 0xD6, 0x80, 0x21, 0xF6, 0x01, 0x21, 0xD6, 0x04, 0x21, 0xF6, 0x80, 0x21, 0xF5, 0x02, 0x21, 0xF6, 0x80, 0x21, 0xD6, 0x05, 0x21, 0xF6, 0x80, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x80, 0x21, 0xD6, 0x06, 0x21, 0xF6, 0x01, 0x21, 0xD6, 0x80, 0x21, 0xF6, 0x02, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x01, 0x21, 0xD6, 0x80, 0x21, 0xF6, 0x04, 0x21, 0xD6, 0x80, 0x21, 0xF6, 0x01, 0x29, 0xF6, 0x80, 0x29, 0xF7, 0x01, 0x21, 0xD6, 0x02, 0x21, 0xF6, 0x82, 0x29, 0xF6, 0x21, 0xF6, 0x2A, 0x17, 0x01, 0x22, 0x17, 0x86, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x08, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x29, 0x71, 0x21, 0x52, 0x19, 0x31, 0x01, 0x11, 0x11, 0x89, 0x11, 0x53, 0x11, 0x95, 0x19, 0xF6, 0x22, 0x17, 0x1A, 0x17, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x12, 0x19, 0x32, 0x01, 0x19, 0x11, 0x8F, 0x19, 0x31, 0x21, 0x51, 0x21, 0x72, 0x19, 0x31, 0x11, 0x31, 0x11, 0x12, 0x09, 0x33, 0x19, 0xB5, 0x19, 0xF7, 0x22, 0x38, 0x22, 0x18, 0x19, 0x96, 0x11, 0x54, 0x19, 0x53, 0x19, 0x32, 0x21, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, + 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x19, 0x31, 0x8A, 0x19, 0x52, 0x19, 0x73, 0x11, 0x74, 0x19, 0xB5, 0x21, 0xF6, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x75, 0x11, 0x13, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x20, 0xF0, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x08, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x02, 0x11, 0x33, 0x02, 0x11, 0x34, 0x82, 0x11, 0x33, 0x19, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x20, 0xEE, 0x02, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x31, 0x0F, 0x03, 0x28, 0xEE, 0x01, 0x29, 0x0E, 0x86, 0x31, 0x0F, 0x28, 0xEE, 0x28, 0xCE, 0x28, 0xCD, 0x28, + 0xEE, 0x28, 0xAD, 0x28, 0xEE, 0x01, 0x28, 0xCD, 0x82, 0x20, 0xAD, 0x28, 0xCD, 0x28, 0xAC, 0x01, 0x28, 0xCD, 0x83, 0x30, 0xCD, 0x28, 0xAC, 0x30, 0xAD, 0x28, 0xAD, 0x04, 0x30, 0xCD, 0x83, 0x30, 0xEE, 0x30, 0xCD, 0x28, 0x8C, 0x28, 0xAC, 0x01, 0x28, 0x8C, 0x83, 0x28, 0x6C, 0x20, 0x4B, 0x20, 0x2A, 0x20, 0x0A, 0x01, 0x18, 0x09, 0x02, 0x20, 0x09, 0x8B, 0x28, 0x2A, 0x30, 0x4B, 0x40, 0xCD, 0x51, 0x2E, 0x72, 0x11, 0x7A, 0x73, 0x93, 0x16, 0xA3, 0x98, 0xB3, 0xF9, 0xC4, 0x7B, 0xCC, 0xBC, 0xDC, 0xFD, 0x01, 0xE5, 0x1E, 0x81, 0xED, 0x3E, 0xED, 0x5E, 0x02, 0xED, 0x1D, 0x83, 0xE4, 0xDC, 0xDC, 0xDB, 0xDC, 0xBB, 0xDC, 0x9A, 0x02, 0xDC, 0x79, 0x81, 0xDC, 0x59, 0xDC, 0x79, 0x02, 0xDC, 0x58, 0x80, 0xE4, 0x78, 0x06, 0xDC, 0x58, 0x9B, 0xD4, 0x58, 0xDC, 0x58, 0xD4, 0x57, 0xDC, 0x78, 0xD4, 0x58, 0xD4, 0x57, 0xD4, 0x77, 0xCC, 0x57, 0xCC, 0x77, 0xC4, 0x98, 0xBC, 0xB8, 0xBC, 0xF9, 0xB4, 0xF9, 0xAD, 0x19, 0x9C, 0xB7, 0x84, 0x35, 0x74, 0x55, 0x7D, 0x18, 0x7D, 0xFB, 0x7E, 0x7D, 0x6E, 0x9D, 0x66, 0xDD, 0x56, 0xFD, 0x46, 0xFD, 0x37, 0x3E, 0x2F, 0x5E, 0x1F, 0x5E, 0x1F, 0x7E, 0x01, 0x17, 0x7E, 0x9B, 0x1F, 0x5E, 0x27, 0x3E, 0x37, 0x1D, 0x4E, 0xFD, 0x5E, 0x7C, 0x86, 0x1C, 0x8C, 0xB7, 0xA4, 0x56, 0xC4, 0x36, 0xD4, 0x57, 0xDB, 0xF6, 0xD3, 0xD6, 0xD3, 0xB6, 0xDB, 0xB6, 0xDB, 0xD6, 0xD3, 0xB6, 0xD3, 0xF7, 0xCC, 0x17, 0xB3, 0xF6, 0x9C, 0x57, 0x7C, 0xB8, 0x7D, 0xFB, 0x66, 0x9D, 0x3E, 0xDD, 0x2F, 0x5E, 0x1F, 0x9F, 0x0F, 0xBF, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x80, + 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x07, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x03, 0x07, 0xDF, 0x98, 0x07, 0xBE, 0x07, 0xBF, 0x0F, 0xBE, 0x17, 0x9E, 0x27, 0x7E, 0x3F, 0x1E, 0x56, 0x9D, 0x76, 0x3C, 0x8D, 0x59, 0x8B, 0xF5, 0xAB, 0xD5, 0xB3, 0xB5, 0xC3, 0xB5, 0xCB, 0xF6, 0xC3, 0xD6, 0xB3, 0xB5, 0x8B, 0x73, 0x84, 0xD7, 0x86, 0x9C, 0x56, 0xBC, 0x37, 0x3C, 0x1F, 0x7C, 0x0F, 0x9C, 0x0F, 0xBC, 0x07, 0xBC, 0x01, 0x07, 0xDB, 0x01, 0x07, 0xFB, 0x80, 0x07, 0xDB, 0x01, 0x07, 0xDA, 0x01, 0x07, 0xFA, 0x03, 0x07, 0xD9, 0x02, 0x07, 0xD8, 0x02, 0x07, 0xD7, 0x02, 0x07, 0xD6, 0x81, 0x07, 0xD5, 0x07, 0xD6, 0x05, 0x07, 0xD5, 0x01, 0x07, 0xD4, 0x80, 0x07, 0xF4, 0x01, 0x07, 0xD4, 0x01, 0x07, 0xD3, 0x80, 0x07, 0xF3, 0x01, 0x07, 0xD3, 0x01, 0x07, 0xF3, 0x05, 0x07, 0xD2, 0x81, 0x07, 0xB2, 0x07, 0xB1, 0x01, 0x07, 0xD1, 0x04, 0x07, 0xD2, 0x01, 0x07, 0xB3, 0x93, 0x07, 0x94, 0x07, 0x74, 0x07, 0x54, 0x0F, 0x35, 0x0F, 0x36, 0x0E, 0xF7, 0x16, 0xD8, 0x16, 0x99, 0x1E, 0x7A, 0x1D, 0xDA, 0x1D, 0x7B, 0x1C, 0xFC, 0x0C, 0x1B, 0x03, 0x5A, 0x02, 0xDA, 0x02, 0xDC, 0x02, 0xBD, 0x02, 0x9D, 0x02, 0x9E, 0x02, 0x5E, 0x01, 0x02, 0x3E, 0x80, 0x02, 0x5F, 0x02, 0x02, 0x3F, 0x02, 0x02, 0x1F, 0x83, 0x01, 0xDF, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x80, 0x02, 0x1F, 0x01, 0x01, 0xDF, 0x80, 0x01, 0xBF, 0x03, 0x01, 0x9F, 0x91, 0x01, 0x7E, 0x09, 0x7E, 0x11, 0x7D, 0x19, 0x7D, 0x21, 0x3C, 0x20, 0xFA, 0x62, 0x9F, 0x62, 0x7C, 0x62, 0xDC, 0x5A, 0xFC, 0x21, + 0xF7, 0x1A, 0xF9, 0x2C, 0xDE, 0x1D, 0x7E, 0x15, 0xFE, 0x1E, 0xDF, 0x0F, 0x1F, 0x0F, 0x9F, 0x01, 0x07, 0xBF, 0x80, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x8E, 0x0F, 0x9F, 0x1F, 0x9F, 0x27, 0x3E, 0x3E, 0xDE, 0x6E, 0xDF, 0x96, 0x9F, 0x7B, 0xF7, 0x72, 0x32, 0xA2, 0x33, 0xBA, 0x13, 0xC1, 0xB2, 0xC9, 0xB3, 0xD1, 0xD4, 0xD1, 0xB4, 0xD1, 0xB3, 0x01, 0xD1, 0x93, 0x8D, 0xD1, 0xD4, 0xC9, 0x93, 0xC9, 0xB3, 0xC1, 0xB3, 0xC1, 0xF4, 0xBA, 0x35, 0xB2, 0x56, 0x60, 0xAF, 0x50, 0xD0, 0x51, 0x52, 0x49, 0x52, 0x39, 0x31, 0x39, 0x51, 0x39, 0x72, 0x01, 0x39, 0x71, 0x80, 0x39, 0x51, 0x05, 0x31, 0x51, 0x80, 0x31, 0x50, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x30, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x19, 0xD7, 0x19, 0xF8, 0x11, 0xD8, 0x11, 0xB8, 0x09, 0x56, 0x09, 0x55, 0x09, 0x35, 0x09, 0x55, 0x01, 0x01, 0x55, 0x81, 0x09, 0x76, 0x11, 0xD7, 0x01, 0x09, 0xD8, 0x80, 0x11, 0xD8, 0x01, 0x11, 0xD7, 0x84, 0x19, 0xF7, 0x1A, 0x17, 0x22, 0x17, 0x21, 0xF7, 0x22, 0x17, 0x01, 0x21, 0xF6, 0x81, 0x29, 0xF6, 0x21, 0xF6, 0x01, 0x2A, 0x16, 0x83, 0x22, 0x16, 0x21, 0xF6, 0x21, 0xD5, 0x21, 0xF5, 0x02, 0x21, 0xF6, 0x80, 0x22, 0x17, 0x02, 0x2A, 0x17, 0x80, 0x21, 0xF7, 0x01, 0x21, 0xB6, 0x87, 0x19, 0x75, 0x11, 0x34, 0x19, 0x53, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x21, 0x30, 0x21, 0x51, 0x01, + 0x21, 0x30, 0x80, 0x29, 0x30, 0x07, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x84, 0x19, 0x10, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0xB6, 0x01, 0x11, 0xF8, + 0x81, 0x09, 0xB8, 0x01, 0xB8, 0x01, 0x01, 0xB9, 0x04, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x06, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x19, 0x53, 0x19, 0x74, 0x11, 0xB5, 0x04, 0x19, 0xD6, 0x02, 0x19, 0xB5, 0x05, 0x19, 0x95, 0x02, 0x19, 0x94, 0x04, 0x19, 0x74, 0x80, 0x21, 0x95, 0x01, 0x19, 0x74, 0x07, 0x19, 0x94, 0x80, 0x19, 0x95, 0x02, 0x19, 0x94, 0x83, 0x19, 0x74, 0x19, 0x95, 0x19, 0x74, 0x19, 0x95, 0x01, 0x19, 0x74, 0x80, 0x19, 0x94, 0x01, 0x19, 0x74, 0x09, 0x19, 0x94, 0x01, 0x19, 0x74, 0x01, 0x19, 0x94, 0x05, 0x19, 0x74, 0x80, 0x19, 0x94, 0x0B, 0x19, 0x74, 0x80, 0x11, 0x54, 0x02, 0x19, 0x74, 0x01, 0x19, 0x54, 0x81, 0x19, 0x74, 0x19, 0x54, 0x04, 0x19, 0x74, 0x80, 0x19, 0x54, 0x03, 0x19, 0x74, 0x02, 0x19, 0x54, 0x86, 0x19, 0x95, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x18, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x01, 0x11, 0x33, 0x01, 0x19, 0x32, 0x81, 0x21, 0x31, 0x21, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x86, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0xB5, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x82, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x01, 0x19, 0x32, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x21, 0x51, 0x01, 0x19, 0x31, 0x8D, 0x11, 0x31, 0x11, 0x52, 0x11, 0x73, + 0x11, 0xB5, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x17, 0x19, 0x95, 0x19, 0x74, 0x19, 0x53, 0x19, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x07, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x83, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0x95, 0x02, 0x21, 0xF7, 0x84, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x86, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x19, 0x73, 0x19, 0x94, 0x11, 0x75, 0x11, 0x95, 0x01, 0x11, 0x96, 0x85, 0x11, 0xB7, 0x19, 0xB7, 0x11, 0x75, 0x11, 0x34, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x05, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, + 0x2F, 0x04, 0x21, 0x0F, 0x86, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x81, 0x28, 0xEE, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x0E, 0x28, 0xEE, 0x28, 0xCE, 0x01, 0x28, 0xEE, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x28, 0xEE, 0x80, 0x28, 0xCE, 0x05, 0x28, 0xEE, 0x82, 0x28, 0xCE, 0x28, 0xEE, 0x20, 0xCD, 0x04, 0x28, 0xCE, 0x80, 0x20, 0xCE, 0x01, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x82, 0x28, 0xCE, 0x28, 0xCD, 0x28, 0xCE, 0x01, 0x28, 0xCD, 0x80, 0x28, 0xAD, 0x02, 0x28, 0x8C, 0x81, 0x28, 0x6C, 0x28, 0x4C, 0x02, 0x28, 0x4B, 0x01, 0x30, 0x4B, 0x01, 0x30, 0x6C, 0x8A, 0x38, 0x8D, 0x40, 0xAD, 0x48, 0xEE, 0x51, 0x2F, 0x69, 0xB1, 0x71, 0xF2, 0x8A, 0x94, 0x9B, 0x16, 0xB3, 0xD9, 0xC4, 0x5A, 0xDC, 0xFD, 0x02, 0xED, 0x5E, 0x83, 0xE5, 0x1C, 0xDC, 0xBB, 0xDC, 0x9A, 0xDC, 0x7A, 0x02, 0xDC, 0x79, 0x82, 0xE4, 0x79, 0xDC, 0x79, 0xDC, 0x58, 0x02, 0xDC, 0x79, 0x03, 0xDC, 0x58, 0x81, 0xDC, 0x78, 0xDC, 0x58, 0x01, 0xDC, 0x57, 0x82, 0xD4, 0x57, 0xD4, 0x58, 0xD4, 0x57, 0x01, 0xCC, 0x77, 0x90, 0xCC, 0x98, 0xC4, 0x98, 0xC4, 0xD8, 0xC4, + 0xF9, 0xBC, 0xF9, 0xAC, 0xB8, 0x94, 0x76, 0x74, 0x15, 0x6C, 0x76, 0x75, 0x39, 0x7E, 0x3C, 0x76, 0x9D, 0x66, 0xFE, 0x57, 0x1E, 0x3E, 0xFD, 0x3F, 0x5E, 0x2F, 0x3E, 0x01, 0x27, 0x5E, 0x8D, 0x27, 0x3E, 0x2F, 0x3E, 0x3E, 0xFD, 0x4E, 0xDD, 0x66, 0x9D, 0x7D, 0xBA, 0x8C, 0xD7, 0xAC, 0x97, 0xC4, 0x57, 0xCC, 0x16, 0xDC, 0x17, 0xDB, 0xF6, 0xD3, 0xB6, 0xDB, 0xD6, 0x01, 0xDB, 0xD7, 0x8B, 0xD3, 0xF7, 0xCC, 0x17, 0xB4, 0x17, 0x9C, 0x78, 0x84, 0xD8, 0x7D, 0xFB, 0x66, 0xBD, 0x46, 0xFD, 0x27, 0x3E, 0x17, 0x7F, 0x0F, 0x9F, 0x07, 0xBF, 0x04, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x09, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x95, 0x0F, 0xBF, 0x17, 0x9F, 0x27, 0x7E, 0x3F, 0x1E, 0x56, 0x9D, 0x76, 0x3C, 0x8D, 0x39, 0x94, 0x15, 0xA3, 0xB5, 0xB3, 0x95, 0xC3, 0xB5, 0xC3, 0xB6, 0xCB, 0xD6, 0xBB, 0xD5, 0x9B, 0x94, 0x73, 0xF4, 0x8E, 0x5C, 0x5E, 0xBC, 0x37, 0x1C, 0x27, 0x5C, 0x17, 0x9C, 0x0F, 0xBC, 0x01, 0x07, 0xDC, 0x82, 0x07, 0xFC, 0x07, 0xDC, 0x07, 0xFC, 0x02, 0x07, 0xDB, 0x01, 0x07, 0xFB, 0x03, 0x07, 0xDA, 0x02, 0x07, 0xD9, 0x02, 0x07, 0xD8, 0x04, 0x07, 0xD7, 0x07, 0x07, 0xD6, 0x04, 0x07, 0xD5, 0x04, 0x07, 0xF4, 0x01, 0x07, 0xD4, 0x01, 0x07, 0xD3, 0x01, 0x07, 0xD4, 0x01, 0x07, 0xB3, 0x07, 0x07, 0xD3, 0x01, 0x07, 0xB4, 0x95, 0x07, 0x94, 0x07, 0x75, 0x07, 0x55, 0x07, 0x36, 0x0F, 0x36, 0x0E, 0xF7, 0x16, 0xD8, 0x16, 0x98, 0x1E, 0x7A, 0x26, 0x1B, 0x1D, 0x5A, 0x24, 0xFB, 0x1C, 0x5C, 0x0B, 0x7A, 0x02, 0xFA, 0x02, 0xBC, 0x02, 0x9C, + 0x02, 0x7D, 0x02, 0x5E, 0x02, 0x3E, 0x02, 0x5E, 0x02, 0x3E, 0x03, 0x02, 0x3F, 0x80, 0x02, 0x1F, 0x04, 0x01, 0xFF, 0x04, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x01, 0x01, 0x7E, 0x91, 0x09, 0x5E, 0x11, 0x9E, 0x19, 0x5D, 0x21, 0x1B, 0x28, 0xFA, 0x5A, 0x3D, 0x6A, 0x7D, 0x62, 0x3A, 0x6A, 0xDC, 0x42, 0x38, 0x11, 0xB5, 0x34, 0x7D, 0x1C, 0xFD, 0x15, 0x9E, 0x16, 0x5F, 0x17, 0x1F, 0x0F, 0x7F, 0x0F, 0xBF, 0x01, 0x07, 0xBF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x8E, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x7F, 0x36, 0xFE, 0x4E, 0x9D, 0x8F, 0x1F, 0x7C, 0xFA, 0x6A, 0xD3, 0x8A, 0x12, 0xB2, 0x33, 0xC1, 0xD3, 0xC9, 0xB3, 0xD1, 0xB3, 0xD1, 0xB4, 0xD1, 0xB3, 0x01, 0xD1, 0x93, 0x80, 0xD1, 0xB3, 0x01, 0xC9, 0x93, 0x89, 0xC9, 0xD4, 0xC1, 0xD4, 0xC2, 0x14, 0xBA, 0x56, 0x89, 0xB4, 0x58, 0xAF, 0x51, 0x31, 0x49, 0x52, 0x41, 0x51, 0x39, 0x51, 0x01, 0x39, 0x71, 0x83, 0x39, 0x51, 0x39, 0x71, 0x31, 0x51, 0x39, 0x71, 0x01, 0x31, 0x51, 0x81, 0x31, 0x31, 0x31, 0x51, 0x01, 0x31, 0x50, 0x14, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x8A, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x12, 0x11, 0x13, 0x11, 0x96, 0x1A, 0x18, 0x19, 0xF9, 0x11, 0xD8, 0x09, 0x96, 0x09, 0x76, 0x02, 0x01, 0x55, 0x83, 0x09, 0x75, 0x09, 0x96, 0x09, 0xB7, 0x09, 0xD8, 0x01, 0x11, 0xF8, 0x82, 0x11, 0xD7, 0x11, 0xD6, 0x11, 0xB6, 0x02, 0x11, 0x95, 0x80, 0x11, 0x74, 0x04, 0x19, 0x74, 0x04, + 0x11, 0x73, 0x81, 0x11, 0x74, 0x11, 0x73, 0x01, 0x11, 0x74, 0x81, 0x19, 0x75, 0x19, 0xB5, 0x03, 0x21, 0xF7, 0x83, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x54, 0x19, 0x53, 0x01, 0x19, 0x32, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x08, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x86, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x03, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x0C, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, + 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x30, 0x19, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x96, 0x11, 0xD7, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x29, 0x10, 0x05, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x8C, 0x19, 0x10, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x74, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x95, 0x11, 0x74, 0x01, 0x11, 0x53, 0x83, 0x11, 0x33, 0x11, 0x32, 0x11, 0x33, 0x11, 0x32, 0x01, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x11, 0x33, 0x01, 0x11, 0x32, 0x86, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x0B, 0x11, 0x32, 0x81, 0x11, 0x33, 0x11, 0x32, 0x01, 0x11, 0x33, 0x80, 0x19, 0x33, 0x02, 0x11, 0x33, 0x83, 0x11, 0x32, 0x11, 0x33, 0x11, 0x32, 0x11, 0x53, 0x08, 0x11, 0x32, 0x80, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x11, 0x12, 0x03, 0x11, 0x32, 0x80, 0x19, 0x33, 0x01, 0x11, 0x32, 0x80, 0x11, 0x12, 0x01, 0x11, 0x32, 0x01, 0x11, 0x12, 0x80, 0x19, 0x33, 0x11, 0x11, 0x12, 0x80, 0x10, 0xF2, 0x02, 0x11, 0x12, 0x87, 0x19, + 0x33, 0x11, 0x33, 0x19, 0x33, 0x11, 0x33, 0x11, 0x13, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x17, 0x01, 0x21, 0xF7, 0x85, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x13, 0x19, 0x12, 0x19, 0x32, 0x19, 0x31, 0x03, 0x21, 0x31, 0x06, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x51, 0x19, 0x51, 0x11, 0x32, 0x01, 0x11, 0x53, 0x81, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x88, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x13, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x31, 0x11, 0x52, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x38, 0x22, 0x17, 0x11, 0x95, 0x19, 0x74, 0x19, 0x53, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x82, 0x29, 0x51, 0x29, 0x30, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x29, 0x50, 0x21, 0x50, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x19, 0x73, + 0x11, 0x74, 0x11, 0x94, 0x01, 0x22, 0x17, 0x82, 0x21, 0xD6, 0x19, 0x75, 0x11, 0x33, 0x01, 0x19, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x29, 0x50, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x31, 0x01, 0x21, 0x31, 0x87, 0x18, 0xF0, 0x19, 0x11, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xF7, 0x11, 0xF7, 0x11, 0xF8, 0x12, 0x18, 0x02, 0x1A, 0x39, 0x84, 0x1A, 0x19, 0x19, 0xD7, 0x11, 0x54, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x06, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEE, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x20, 0xEE, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x20, 0xEE, 0x80, 0x21, 0x0E, 0x03, 0x29, 0x2F, 0x80, 0x28, 0xEE, 0x02, 0x20, 0xEE, 0x01, 0x29, 0x0F, 0x03, 0x20, 0xEE, 0x81, 0x28, 0xEF, + 0x20, 0xCE, 0x02, 0x28, 0xEF, 0x82, 0x28, 0xEE, 0x28, 0xEF, 0x28, 0xCE, 0x01, 0x28, 0xEE, 0x82, 0x30, 0xEF, 0x28, 0xCE, 0x30, 0xEE, 0x06, 0x30, 0xCE, 0x81, 0x38, 0xCE, 0x30, 0xCE, 0x01, 0x38, 0xCE, 0x97, 0x30, 0xCE, 0x30, 0xAE, 0x30, 0x8D, 0x28, 0x4C, 0x30, 0x4C, 0x28, 0x2B, 0x28, 0x0A, 0x30, 0x0A, 0x38, 0x4B, 0x48, 0xAC, 0x61, 0x6F, 0x7A, 0x11, 0xA3, 0x57, 0xBB, 0xF9, 0xD4, 0x9B, 0xE4, 0xDC, 0xE4, 0xFC, 0xED, 0x1C, 0xEC, 0xFC, 0xE4, 0xBB, 0xE4, 0x9A, 0xDC, 0x79, 0xDC, 0x9A, 0xDC, 0x99, 0x03, 0xDC, 0x79, 0x80, 0xD4, 0x58, 0x05, 0xDC, 0x58, 0x01, 0xD4, 0x58, 0x80, 0xD4, 0x57, 0x02, 0xCC, 0x57, 0x8D, 0xCC, 0x78, 0xCC, 0x98, 0xC4, 0xB8, 0xC4, 0xF9, 0xBD, 0x19, 0xA4, 0xB7, 0x7C, 0x15, 0x74, 0x56, 0x7D, 0x59, 0x7E, 0x1C, 0x76, 0x7D, 0x66, 0xDE, 0x4E, 0xBD, 0x46, 0xFD, 0x01, 0x37, 0x1D, 0x8C, 0x2F, 0x1D, 0x3F, 0x1E, 0x46, 0xFD, 0x56, 0xDD, 0x66, 0x7C, 0x7D, 0xFB, 0x84, 0xB7, 0xA4, 0x56, 0xBC, 0x16, 0xCB, 0xF6, 0xDB, 0xF6, 0xD3, 0xB6, 0xDB, 0xD6, 0x01, 0xE3, 0xF7, 0x8B, 0xD3, 0xD7, 0xCB, 0xD7, 0xCC, 0x38, 0xB4, 0x37, 0x94, 0x78, 0x85, 0x19, 0x76, 0x1C, 0x5E, 0xBD, 0x47, 0x3E, 0x27, 0x5E, 0x17, 0x7F, 0x0F, 0xBF, 0x07, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x05, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x89, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x7F, 0x3F, 0x1E, 0x56, 0x9D, 0x7E, 0x3C, 0x8D, 0x39, 0x9C, 0x56, 0xAB, 0xD5, 0xBB, 0xB5, 0x01, 0xC3, 0x95, 0x89, 0xCB, 0xB6, 0xBB, 0xB5, 0xA3, + 0xB5, 0x73, 0x73, 0x85, 0xBB, 0x5E, 0x9C, 0x3F, 0x1C, 0x27, 0x5D, 0x17, 0x9D, 0x0F, 0xBD, 0x02, 0x07, 0xDD, 0x01, 0x07, 0xFC, 0x02, 0x07, 0xDC, 0x80, 0x07, 0xDB, 0x02, 0x07, 0xFB, 0x02, 0x07, 0xDA, 0x01, 0x07, 0xFA, 0x02, 0x07, 0xF9, 0x02, 0x07, 0xD8, 0x01, 0x07, 0xF8, 0x81, 0x07, 0xD8, 0x07, 0xF8, 0x06, 0x07, 0xD7, 0x04, 0x07, 0xD6, 0x03, 0x07, 0xF5, 0x81, 0x07, 0xD5, 0x07, 0xF5, 0x07, 0x07, 0xD5, 0x06, 0x07, 0xD4, 0x01, 0x07, 0xB5, 0x94, 0x07, 0x95, 0x07, 0x76, 0x07, 0x56, 0x07, 0x36, 0x0F, 0x16, 0x0F, 0x17, 0x16, 0xD8, 0x1E, 0x99, 0x26, 0x3A, 0x36, 0x1B, 0x35, 0x7B, 0x2C, 0x9B, 0x2C, 0x5C, 0x1B, 0x9C, 0x0A, 0xFB, 0x02, 0x9C, 0x02, 0x5C, 0x02, 0x3D, 0x02, 0x3E, 0x02, 0x5E, 0x02, 0x3E, 0x03, 0x02, 0x3F, 0x80, 0x02, 0x1F, 0x04, 0x01, 0xFF, 0x04, 0x01, 0xDF, 0x80, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x95, 0x01, 0xBF, 0x01, 0x9F, 0x09, 0x9F, 0x09, 0x7E, 0x11, 0x9E, 0x21, 0xBE, 0x29, 0x3C, 0x28, 0xFA, 0x62, 0x3D, 0x6A, 0x3C, 0x61, 0xD9, 0x72, 0x7B, 0x62, 0x9A, 0x19, 0x74, 0x2B, 0x7A, 0x2C, 0xDE, 0x15, 0x1D, 0x0D, 0xDE, 0x16, 0xBF, 0x17, 0x5F, 0x17, 0xBF, 0x0F, 0xBF, 0x02, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x8E, 0x17, 0x9F, 0x1F, 0x7F, 0x2F, 0x3E, 0x3E, 0xBD, 0x6E, 0xBE, 0x85, 0xDD, 0x63, 0x34, 0x79, 0xF1, 0xAA, 0x33, 0xC2, 0x14, 0xC9, 0xF3, 0xC9, 0x92, 0xC9, 0xB3, 0xD1, 0xB3, 0xD1, 0xB4, 0x01, 0xD1, 0xB3, 0x81, 0xC9, 0x93, 0xC9, 0xB3, 0x01, 0xC9, 0xD4, 0x87, 0xC1, 0xD4, 0xBA, 0x35, 0xAA, 0x56, 0x60, 0x8F, 0x50, 0xB0, 0x51, 0x31, + 0x49, 0x72, 0x41, 0x51, 0x02, 0x39, 0x51, 0x83, 0x31, 0x51, 0x31, 0x71, 0x31, 0x51, 0x31, 0x71, 0x01, 0x31, 0x51, 0x82, 0x31, 0x30, 0x31, 0x51, 0x31, 0x50, 0x09, 0x29, 0x30, 0x80, 0x29, 0x50, 0x07, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x8A, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x10, 0xF2, 0x09, 0x34, 0x19, 0xD7, 0x19, 0xF9, 0x1A, 0x19, 0x11, 0xF8, 0x09, 0xB7, 0x01, 0x09, 0x76, 0x89, 0x09, 0x75, 0x09, 0x96, 0x09, 0xB7, 0x11, 0xF8, 0x12, 0x18, 0x11, 0xF8, 0x11, 0xD7, 0x09, 0x95, 0x09, 0x54, 0x09, 0x53, 0x01, 0x09, 0x33, 0x02, 0x09, 0x12, 0x04, 0x11, 0x12, 0x82, 0x11, 0x11, 0x11, 0x12, 0x11, 0x52, 0x01, 0x11, 0x53, 0x80, 0x11, 0x32, 0x02, 0x09, 0x12, 0x8B, 0x09, 0x13, 0x11, 0x34, 0x19, 0x75, 0x21, 0xD6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x54, 0x19, 0x53, 0x19, 0x32, 0x21, 0x32, 0x02, 0x21, 0x31, 0x07, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, + 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x51, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0xD7, 0x11, 0xF8, 0x09, 0xD8, 0x01, 0xB8, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0x01, 0xFA, 0x82, 0x01, 0xDA, 0x01, 0xFA, 0x29, 0x10, 0x04, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x19, 0x33, 0x11, + 0x53, 0x19, 0x74, 0x01, 0x21, 0xD6, 0x85, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x74, 0x11, 0x53, 0x11, 0x33, 0x11, 0x32, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x82, 0x19, 0x32, 0x11, 0x32, 0x11, 0x12, 0x02, 0x11, 0x32, 0x80, 0x19, 0x32, 0x01, 0x11, 0x12, 0x82, 0x11, 0x32, 0x19, 0x32, 0x19, 0x12, 0x03, 0x19, 0x32, 0x81, 0x11, 0x32, 0x11, 0x31, 0x03, 0x11, 0x32, 0x84, 0x11, 0x31, 0x11, 0x12, 0x11, 0x11, 0x11, 0x31, 0x19, 0x32, 0x02, 0x11, 0x12, 0x02, 0x19, 0x12, 0x80, 0x11, 0x12, 0x02, 0x11, 0x32, 0x80, 0x11, 0x12, 0x01, 0x11, 0x32, 0x81, 0x11, 0x11, 0x11, 0x32, 0x01, 0x11, 0x31, 0x84, 0x19, 0x32, 0x11, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x11, 0x01, 0x11, 0x32, 0x81, 0x11, 0x12, 0x19, 0x12, 0x01, 0x19, 0x32, 0x81, 0x19, 0x12, 0x11, 0x11, 0x01, 0x19, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x12, 0x80, 0x19, 0x32, 0x03, 0x19, 0x12, 0x82, 0x11, 0x11, 0x19, 0x12, 0x19, 0x11, 0x01, 0x19, 0x12, 0x80, 0x19, 0x11, 0x01, 0x19, 0x12, 0x80, 0x19, 0x11, 0x05, 0x19, 0x12, 0x05, 0x11, 0x12, 0x01, 0x11, 0x13, 0x86, 0x11, 0x34, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x34, 0x01, 0x11, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x50, 0x01, 0x21, 0x30, 0x87, 0x21, 0x51, 0x21, 0x72, 0x19, 0x51, 0x19, 0x52, 0x11, 0x32, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x01, 0x19, 0xF7, 0x86, 0x19, + 0xB6, 0x11, 0x55, 0x11, 0x13, 0x19, 0x12, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x01, 0x21, 0x51, 0x8D, 0x19, 0x31, 0x19, 0x52, 0x11, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x38, 0x19, 0xF7, 0x11, 0x95, 0x19, 0x74, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x19, 0x95, 0x01, 0x21, 0xF7, 0x84, 0x21, 0xD6, 0x19, 0x75, 0x11, 0x13, 0x11, 0x12, 0x19, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x51, 0x85, 0x19, 0x11, 0x11, 0x32, 0x11, 0x74, 0x19, 0xF7, 0x1A, 0x38, 0x12, 0x18, 0x01, 0x09, 0xF9, 0x01, 0x0A, 0x19, + 0x87, 0x09, 0xF9, 0x11, 0xF9, 0x11, 0xD8, 0x19, 0xB6, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x0B, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x20, 0xEF, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x20, 0xEF, 0x01, 0x29, 0x0F, 0x80, 0x20, 0xEF, 0x02, 0x29, 0x0F, 0x82, 0x28, 0xEF, 0x29, 0x0F, 0x28, 0xEF, 0x01, 0x29, 0x0F, 0x05, 0x31, 0x0F, 0x03, 0x30, 0xEF, 0x02, 0x31, 0x0F, 0x82, 0x30, 0xEF, 0x39, 0x0F, 0x31, 0x0F, 0x02, 0x39, 0x0F, 0x94, 0x38, 0xEF, 0x41, 0x0F, 0x41, 0x0E, 0x40, 0xEE, 0x40, 0xCE, 0x48, 0xCD, 0x48, 0xAD, 0x48, 0xCD, 0x48, 0xAD, 0x50, 0xCD, 0x58, 0xED, 0x69, 0x8F, 0x82, 0x32, 0xA3, 0x36, 0xC3, 0xF9, 0xDC, 0xDC, 0xED, 0x3D, 0xE4, 0xFC, 0xDC, 0xDB, 0xDC, 0x9A, 0xD4, 0x7A, 0x01, 0xDC, 0x7A, 0x01, 0xDC, 0x79, 0x80, 0xDC, 0x59, 0x03, 0xDC, 0x58, 0xA0, 0xDC, 0x59, 0xDC, 0x58, 0xD4, 0x37, 0xD4, 0x58, + 0xD4, 0x37, 0xD4, 0x58, 0xCC, 0x37, 0xCC, 0x58, 0xCC, 0x78, 0xCC, 0x98, 0xC4, 0x98, 0xC4, 0xB8, 0xBC, 0xD9, 0xA4, 0xB8, 0x84, 0x56, 0x6C, 0x36, 0x74, 0xF8, 0x86, 0x3D, 0x76, 0x7D, 0x6E, 0xDE, 0x5E, 0xDE, 0x4E, 0xDD, 0x4E, 0xFE, 0x46, 0xFD, 0x4E, 0xDD, 0x56, 0x9D, 0x66, 0x5C, 0x7E, 0x1B, 0x85, 0x38, 0xA4, 0x97, 0xBC, 0x57, 0xC3, 0xF6, 0xD3, 0xF6, 0x01, 0xDB, 0xF7, 0x8D, 0xDC, 0x17, 0xDB, 0xF7, 0xCB, 0xB6, 0xCC, 0x17, 0xBC, 0x17, 0xA4, 0x37, 0x84, 0x57, 0x75, 0x39, 0x76, 0x5D, 0x56, 0xDD, 0x3F, 0x3E, 0x1F, 0x7E, 0x17, 0x9F, 0x0F, 0xBF, 0x07, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x81, 0x07, 0xDF, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x95, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x7F, 0x3F, 0x1E, 0x56, 0x9D, 0x7E, 0x1C, 0x8D, 0x39, 0x9C, 0x36, 0xAB, 0xD5, 0xBB, 0xB5, 0xBB, 0x75, 0xCB, 0x95, 0xCB, 0xB6, 0xC3, 0xB6, 0xAB, 0xB5, 0x72, 0xF2, 0x8D, 0x7A, 0x6E, 0xBD, 0x47, 0x1D, 0x27, 0x5D, 0x1F, 0x9D, 0x0F, 0x9D, 0x04, 0x07, 0xDD, 0x80, 0x07, 0xFD, 0x02, 0x07, 0xDC, 0x01, 0x07, 0xFC, 0x01, 0x07, 0xFB, 0x01, 0x07, 0xDB, 0x80, 0x07, 0xFB, 0x02, 0x07, 0xFA, 0x80, 0x07, 0xDA, 0x03, 0x07, 0xD9, 0x80, 0x07, 0xF9, 0x01, 0x07, 0xD8, 0x80, 0x07, 0xF8, 0x05, 0x07, 0xD8, 0x04, 0x07, 0xD7, 0x02, 0x07, 0xD6, 0x82, 0x07, 0xF6, 0x07, 0xD6, 0x07, 0xF7, 0x02, 0x07, 0xD7, 0x07, 0x07, 0xD6, 0x03, 0x07, 0xD5, 0x81, 0x07, 0xB5, 0x07, 0xB6, 0x01, 0x07, 0x96, 0x92, 0x07, 0x76, 0x07, 0x56, 0x07, 0x36, 0x0F, 0x37, 0x16, + 0xF7, 0x1E, 0xB8, 0x2E, 0x99, 0x3E, 0x5B, 0x45, 0xDB, 0x45, 0x5C, 0x3C, 0xBC, 0x2B, 0xFB, 0x23, 0x9C, 0x1B, 0x3C, 0x0A, 0x9C, 0x02, 0x5C, 0x02, 0x5D, 0x02, 0x3D, 0x02, 0x3E, 0x02, 0x02, 0x3F, 0x01, 0x02, 0x1F, 0x04, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x80, 0x01, 0xDF, 0x02, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x93, 0x09, 0x9F, 0x11, 0x9E, 0x11, 0x5D, 0x21, 0x9E, 0x29, 0x5C, 0x20, 0x98, 0x6A, 0x3D, 0x72, 0x3C, 0x69, 0xB8, 0x7A, 0x3A, 0x7A, 0xDB, 0x39, 0xF6, 0x1A, 0x57, 0x34, 0x7D, 0x1C, 0xDD, 0x0D, 0x7D, 0x0E, 0x5F, 0x17, 0x3F, 0x17, 0x9F, 0x0F, 0xBF, 0x04, 0x07, 0xBF, 0x8B, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x5F, 0x36, 0xFE, 0x56, 0xBE, 0x7E, 0x7F, 0x74, 0x58, 0x7A, 0x93, 0x91, 0xF2, 0xB2, 0x13, 0xC9, 0xF3, 0xC1, 0x92, 0x01, 0xC9, 0xB3, 0x83, 0xD1, 0xB3, 0xD1, 0x93, 0xD1, 0xB3, 0xC9, 0x93, 0x01, 0xC9, 0xB3, 0x87, 0xC9, 0xD3, 0xC1, 0xD4, 0xC1, 0xF4, 0xBA, 0x56, 0x89, 0x72, 0x50, 0x6F, 0x59, 0x11, 0x51, 0x52, 0x01, 0x41, 0x51, 0x81, 0x39, 0x51, 0x39, 0x71, 0x01, 0x39, 0x51, 0x80, 0x39, 0x71, 0x04, 0x31, 0x51, 0x80, 0x31, 0x50, 0x0B, 0x29, 0x30, 0x80, 0x29, 0x50, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x11, 0x10, 0xF2, 0x11, 0x13, 0x11, 0x75, 0x11, 0xD7, 0x1A, 0x39, 0x1A, 0x38, 0x1A, 0x18, 0x11, 0xD7, + 0x11, 0xB7, 0x09, 0x96, 0x01, 0x11, 0xD7, 0x01, 0x11, 0xF7, 0x87, 0x09, 0xB6, 0x09, 0x95, 0x09, 0x54, 0x09, 0x33, 0x09, 0x32, 0x11, 0x12, 0x11, 0x11, 0x11, 0x32, 0x01, 0x11, 0x11, 0x80, 0x19, 0x32, 0x01, 0x11, 0x11, 0x81, 0x19, 0x31, 0x11, 0x11, 0x01, 0x19, 0x31, 0x80, 0x11, 0x11, 0x01, 0x11, 0x31, 0x82, 0x11, 0x32, 0x19, 0x52, 0x11, 0x32, 0x01, 0x11, 0x12, 0x8A, 0x11, 0x33, 0x11, 0x34, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x54, 0x19, 0x53, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x07, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x88, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, + 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x0E, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x87, 0x19, 0x31, 0x19, 0x12, 0x11, 0x12, 0x11, 0x54, 0x11, 0x95, 0x11, 0xD7, 0x11, 0xF8, 0x09, 0xD8, 0x03, 0x01, 0xD9, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x81, 0x29, 0x30, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x11, 0x01, 0x19, 0x11, 0x89, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x74, 0x21, 0xD6, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0xB5, 0x19, 0x74, 0x11, 0x53, 0x03, 0x11, 0x32, 0x80, 0x19, 0x52, 0x02, 0x19, 0x32, 0x04, 0x19, 0x52, 0x04, 0x19, 0x32, 0x80, 0x19, 0x11, 0x04, 0x19, 0x31, 0x01, 0x19, 0x52, 0x80, 0x19, 0x51, 0x02, 0x19, 0x31, 0x80, 0x19, 0x51, 0x02, 0x19, 0x31, 0x01, 0x19, 0x11, 0x84, 0x19, 0x32, 0x19, 0x31, 0x19, 0x32, 0x19, 0x12, + 0x19, 0x11, 0x03, 0x19, 0x31, 0x80, 0x11, 0x11, 0x08, 0x19, 0x31, 0x84, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x11, 0x04, 0x19, 0x31, 0x84, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x21, 0x31, 0x82, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x02, 0x19, 0x31, 0x01, 0x21, 0x32, 0x8A, 0x21, 0x31, 0x19, 0x11, 0x21, 0x32, 0x19, 0x31, 0x21, 0x32, 0x19, 0x31, 0x21, 0x32, 0x19, 0x31, 0x21, 0x52, 0x19, 0x32, 0x21, 0x52, 0x01, 0x19, 0x32, 0x80, 0x19, 0x12, 0x01, 0x10, 0xF2, 0x01, 0x11, 0x33, 0x86, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x34, 0x09, 0x12, 0x01, 0x11, 0x32, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x21, 0x51, 0x82, 0x21, 0x31, 0x19, 0x31, 0x19, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x51, 0x01, 0x19, 0x52, 0x83, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x19, 0xB6, 0x01, 0x21, 0xF8, 0x85, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x51, 0x8E, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x19, 0x32, 0x11, 0x53, 0x11, 0x54, 0x09, 0x54, 0x19, 0xD6, 0x22, 0x38, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x74, 0x11, 0x32, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x05, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, + 0x10, 0x85, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x06, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8D, 0x19, 0x52, 0x19, 0x53, 0x11, 0x53, 0x19, 0xB5, 0x21, 0xD6, 0x22, 0x17, 0x21, 0xD7, 0x19, 0x75, 0x11, 0x13, 0x10, 0xF2, 0x18, 0xF2, 0x19, 0x11, 0x21, 0x32, 0x21, 0x31, 0x01, 0x19, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x31, 0x21, 0x30, 0x03, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x50, 0x04, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x21, 0x51, 0x01, 0x21, 0x52, 0x87, 0x19, 0x52, 0x11, 0x32, 0x19, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xF7, 0x12, 0x18, 0x01, 0xD8, 0x02, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x88, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xB7, 0x19, 0xB5, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x88, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, + 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x89, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x31, 0x30, 0x29, 0x30, 0x02, 0x31, 0x30, 0x82, 0x31, 0x0F, 0x31, 0x30, 0x31, 0x10, 0x04, 0x31, 0x30, 0x80, 0x39, 0x30, 0x01, 0x31, 0x30, 0x01, 0x39, 0x30, 0x80, 0x39, 0x50, 0x02, 0x39, 0x30, 0x86, 0x41, 0x30, 0x41, 0x0F, 0x49, 0x30, 0x49, 0x2F, 0x51, 0x50, 0x49, 0x30, 0x51, 0x50, 0x01, 0x51, 0x70, 0x92, 0x51, 0x50, 0x51, 0x4F, 0x49, 0x0E, 0x40, 0xCD, 0x40, 0x8D, 0x59, 0x2F, 0x69, 0xB1, 0x92, 0xB5, 0xB3, 0xB8, 0xD4, 0x9B, 0xDC, 0xDC, 0xE4, 0xFC, 0xDC, 0xDB, 0xDC, 0x9A, 0xDC, 0x7A, 0xDC, 0x59, 0xDC, 0x79, 0xDC, 0x59, 0xDC, 0x79, 0x01, 0xDC, 0x59, 0x80, 0xE4, 0x79, 0x01, 0xDC, 0x58, 0x01, 0xD4, 0x38, 0x80, 0xD4, 0x58, 0x01, 0xD4, 0x38, 0x82, 0xD4, 0x58, 0xCC, 0x58, 0xCC, 0x78, 0x01, 0xC4, 0x98, 0x88, 0xBC, 0xD9, 0xAC, 0xD8, 0x8C, 0x36, 0x74, 0x15, 0x85, 0x19, 0x8E, 0x1C, 0x86, 0x9E, 0x76, 0xDE, 0x5E, 0x7C, 0x01, 0x56, 0x9C, 0x95, 0x5E, + 0x7C, 0x66, 0x3B, 0x7E, 0x1B, 0x9D, 0xFB, 0xA5, 0x19, 0xAC, 0x16, 0xBB, 0xF6, 0xCB, 0xF6, 0xD3, 0xF6, 0xD4, 0x17, 0xDC, 0x17, 0xD4, 0x17, 0xCB, 0xF6, 0xBB, 0xF6, 0xAC, 0x37, 0x9C, 0x77, 0x74, 0x77, 0x75, 0xDB, 0x66, 0xBD, 0x46, 0xFE, 0x2F, 0x5E, 0x1F, 0x7E, 0x01, 0x0F, 0xBF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x97, 0x0F, 0xBF, 0x1F, 0xBF, 0x2F, 0x7F, 0x3F, 0x1F, 0x5E, 0x7D, 0x7D, 0xFB, 0x8C, 0xD8, 0x93, 0xD5, 0xAB, 0xB5, 0xC3, 0xD6, 0xCB, 0xB5, 0xCB, 0x95, 0xCB, 0x96, 0xCB, 0xB6, 0xBB, 0xD6, 0x7A, 0xF2, 0x84, 0xF9, 0x76, 0xDE, 0x47, 0x1D, 0x2F, 0x7E, 0x1F, 0xBE, 0x0F, 0xBD, 0x07, 0xBD, 0x07, 0xDE, 0x04, 0x07, 0xDD, 0x01, 0x07, 0xFD, 0x02, 0x07, 0xDC, 0x81, 0x07, 0xFC, 0x07, 0xDC, 0x01, 0x07, 0xDB, 0x80, 0x07, 0xFB, 0x01, 0x07, 0xDB, 0x03, 0x07, 0xDA, 0x80, 0x07, 0xFA, 0x02, 0x07, 0xF9, 0x06, 0x07, 0xD9, 0x02, 0x07, 0xD8, 0x01, 0x07, 0xF8, 0x81, 0x07, 0xD7, 0x07, 0xF7, 0x03, 0x07, 0xD7, 0x80, 0x07, 0xF8, 0x04, 0x07, 0xD8, 0x08, 0x07, 0xD7, 0x01, 0x07, 0xB7, 0x02, 0x07, 0x97, 0x93, 0x07, 0x77, 0x07, 0x57, 0x0F, 0x37, 0x17, 0x17, 0x1E, 0xD7, 0x36, 0x99, 0x4E, 0x9B, 0x56, 0x3B, 0x5D, 0xDC, 0x5D, 0x7D, 0x54, 0xDD, 0x44, 0x1C, 0x23, 0x3B, 0x23, 0x1C, 0x1A, 0xBD, 0x0A, 0x5C, 0x02, 0x5D, 0x02, 0x3E, 0x02, 0x1E, 0x02, 0x3E, 0x02, 0x02, 0x1F, 0x02, + 0x01, 0xFF, 0x81, 0x01, 0xDF, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x83, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0x01, 0x9F, 0x92, 0x01, 0x7E, 0x09, 0x7E, 0x11, 0x7D, 0x21, 0x7D, 0x29, 0x5C, 0x28, 0xB9, 0x6A, 0x1C, 0x82, 0x7C, 0x79, 0xB8, 0x8A, 0x5A, 0x8A, 0xDA, 0x62, 0x99, 0x11, 0x74, 0x33, 0xDC, 0x24, 0x9D, 0x0D, 0x1D, 0x0D, 0xBD, 0x16, 0xBF, 0x17, 0x5F, 0x01, 0x0F, 0xBF, 0x80, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x8C, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x7F, 0x2F, 0x3F, 0x46, 0xDE, 0x6E, 0x9E, 0x7D, 0x7C, 0x7B, 0x55, 0x79, 0xD1, 0xA1, 0xD2, 0xB9, 0xD3, 0xC1, 0xD3, 0xC9, 0xB3, 0x01, 0xC9, 0x93, 0x01, 0xD1, 0x93, 0x01, 0xC9, 0x93, 0x01, 0xC9, 0xB3, 0x88, 0xC1, 0xB3, 0xC1, 0xF4, 0xBA, 0x35, 0xB2, 0x56, 0x60, 0x8F, 0x58, 0xD0, 0x51, 0x31, 0x41, 0x31, 0x41, 0x51, 0x02, 0x39, 0x71, 0x81, 0x31, 0x51, 0x39, 0x71, 0x06, 0x31, 0x51, 0x80, 0x31, 0x50, 0x11, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x89, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x18, 0xF1, 0x11, 0x13, 0x11, 0x34, 0x11, 0x75, 0x19, 0xD7, 0x19, 0xF7, 0x01, 0x1A, 0x17, 0x80, 0x11, 0xF7, 0x01, 0x11, 0xD7, 0x01, 0x19, 0xF7, 0x85, 0x11, 0x95, 0x09, 0x74, 0x11, 0x73, 0x11, 0x53, 0x11, 0x52, 0x11, 0x32, 0x02, 0x19, 0x31, 0x80, 0x19, 0x11, 0x03, 0x19, 0x31, 0x82, 0x21, 0x51, 0x19, 0x31, 0x21, 0x51, 0x02, 0x19, 0x31, 0x83, 0x19, 0x51, 0x19, + 0x31, 0x19, 0x51, 0x19, 0x31, 0x01, 0x19, 0x32, 0x8D, 0x11, 0x12, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0x95, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x19, 0x12, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x31, 0x07, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x88, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x07, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, + 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x11, 0x89, 0x11, 0x12, 0x11, 0x33, 0x11, 0x95, 0x11, 0xD7, 0x12, 0x19, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x07, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x89, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x74, 0x21, 0xD6, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x74, 0x11, 0x33, 0x03, 0x11, 0x32, 0x05, 0x19, 0x32, 0x01, 0x19, 0x52, 0x80, 0x19, 0x32, 0x04, 0x19, 0x52, 0x06, 0x19, 0x31, 0x82, 0x19, 0x51, 0x19, 0x31, 0x21, 0x51, 0x02, 0x19, 0x31, 0x01, 0x21, 0x51, 0x80, 0x21, 0x31, 0x01, 0x19, 0x10, 0x81, 0x19, 0x31, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x02, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x03, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x04, 0x21, 0x31, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x82, 0x21, 0x30, 0x21, 0x11, 0x21, 0x10, 0x02, 0x21, 0x31, 0x84, 0x19, 0x10, 0x21, + 0x31, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x52, 0x81, 0x19, 0x32, 0x19, 0x12, 0x01, 0x11, 0x12, 0x86, 0x11, 0x53, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xD7, 0x21, 0xD7, 0x19, 0x96, 0x11, 0x54, 0x01, 0x09, 0x33, 0x01, 0x11, 0x32, 0x02, 0x19, 0x32, 0x02, 0x19, 0x52, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x04, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB7, 0x01, 0x21, 0xF8, 0x83, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x52, 0x01, 0x19, 0x10, 0x8D, 0x19, 0x31, 0x19, 0x52, 0x19, 0x32, 0x19, 0x73, 0x11, 0x54, 0x09, 0x54, 0x19, 0xD6, 0x22, 0x38, 0x19, 0xF7, 0x19, 0x95, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x02, 0x21, 0x31, 0x06, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x52, 0x8A, 0x11, 0x53, 0x19, 0x95, 0x21, 0xF6, 0x21, 0xF7, 0x21, + 0xD7, 0x19, 0x95, 0x11, 0x34, 0x10, 0xF2, 0x18, 0xF2, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x02, 0x21, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x04, 0x21, 0x31, 0x02, 0x19, 0x31, 0x80, 0x19, 0x51, 0x02, 0x19, 0x32, 0x85, 0x11, 0x12, 0x11, 0x53, 0x11, 0x75, 0x19, 0xD7, 0x09, 0xD7, 0x09, 0xD8, 0x01, 0x01, 0xB8, 0x80, 0x01, 0xB9, 0x04, 0x01, 0xD9, 0x85, 0x09, 0xD9, 0x11, 0xD8, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x51, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x03, 0x29, 0x10, 0x03, 0x29, 0x30, 0x02, + 0x31, 0x30, 0x80, 0x31, 0x10, 0x01, 0x31, 0x30, 0x80, 0x31, 0x50, 0x03, 0x31, 0x30, 0x81, 0x39, 0x50, 0x31, 0x30, 0x05, 0x39, 0x50, 0x02, 0x41, 0x50, 0x02, 0x49, 0x51, 0x03, 0x49, 0x71, 0x84, 0x51, 0x91, 0x49, 0x71, 0x51, 0x91, 0x59, 0x92, 0x59, 0x91, 0x01, 0x59, 0x70, 0x88, 0x59, 0x0F, 0x59, 0x2F, 0x69, 0xB0, 0x92, 0xB4, 0xB3, 0xB8, 0xCC, 0x7B, 0xE4, 0xFD, 0xDC, 0xBC, 0xDC, 0x9B, 0x01, 0xDC, 0x7A, 0x81, 0xDC, 0x59, 0xDC, 0x79, 0x03, 0xDC, 0x59, 0x81, 0xD4, 0x38, 0xD4, 0x18, 0x01, 0xD4, 0x38, 0x02, 0xD4, 0x58, 0x96, 0xCC, 0x57, 0xCC, 0x77, 0xC4, 0x77, 0xC4, 0x98, 0xBC, 0xB8, 0xAC, 0x98, 0x8B, 0xF5, 0x73, 0xF5, 0x85, 0x39, 0x96, 0x7D, 0x8E, 0xBE, 0x76, 0x7D, 0x66, 0x5C, 0x6E, 0x5C, 0x76, 0x5C, 0x7E, 0x1B, 0x95, 0xDB, 0xA5, 0x5A, 0x9C, 0x56, 0xBC, 0x57, 0xC4, 0x58, 0xC3, 0xF6, 0xCC, 0x37, 0x01, 0xC4, 0x17, 0x8A, 0xC4, 0x78, 0xB4, 0x98, 0x94, 0x36, 0x7C, 0x77, 0x6D, 0x59, 0x6E, 0x9D, 0x56, 0xDD, 0x3F, 0x3E, 0x27, 0x5E, 0x17, 0x9E, 0x0F, 0xBF, 0x03, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x08, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x97, 0x07, 0xBF, 0x0F, 0xBF, 0x17, 0x9F, 0x2F, 0x7F, 0x47, 0x1E, 0x5E, 0x7D, 0x85, 0xFC, 0x8C, 0xB8, 0x93, 0xD5, 0xB3, 0xB5, 0xBB, 0xB5, 0xCB, 0x95, 0xCB, 0x75, 0xCB, 0x95, 0xCB, 0xB6, 0xBB, 0xB6, 0x82, 0xF3, 0x84, 0x98, 0x76, 0x9D, 0x4F, 0x1E, 0x2F, 0x7E, 0x1F, 0x9E, 0x0F, 0xBE, 0x07, 0xBE, 0x03, 0x07, 0xDE, 0x80, 0x07, + 0xFE, 0x02, 0x07, 0xFD, 0x01, 0x07, 0xDD, 0x82, 0x07, 0xDC, 0x07, 0xFC, 0x07, 0xDC, 0x02, 0x07, 0xFC, 0x80, 0x07, 0xDC, 0x04, 0x07, 0xDB, 0x03, 0x07, 0xFA, 0x03, 0x07, 0xDA, 0x06, 0x07, 0xD9, 0x83, 0x07, 0xD8, 0x07, 0xF8, 0x07, 0xD8, 0x07, 0xF8, 0x01, 0x07, 0xD8, 0x04, 0x07, 0xF9, 0x03, 0x07, 0xD9, 0x06, 0x07, 0xD8, 0x02, 0x07, 0xB8, 0x80, 0x07, 0x97, 0x02, 0x07, 0x98, 0x91, 0x0F, 0x58, 0x17, 0x17, 0x1E, 0xD7, 0x26, 0x77, 0x46, 0x99, 0x5E, 0x7B, 0x65, 0xFC, 0x6D, 0xBC, 0x65, 0x5D, 0x5C, 0x9C, 0x4C, 0x1C, 0x2A, 0xDA, 0x22, 0xBB, 0x22, 0xFE, 0x12, 0x9D, 0x0A, 0x3D, 0x02, 0x3D, 0x02, 0x3E, 0x01, 0x02, 0x1E, 0x01, 0x02, 0x1F, 0x02, 0x01, 0xFF, 0x02, 0x01, 0xDF, 0x80, 0x01, 0xBF, 0x02, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x94, 0x01, 0x7E, 0x09, 0x7D, 0x09, 0x5D, 0x19, 0x7D, 0x29, 0x7C, 0x28, 0xD9, 0x69, 0xFC, 0x8A, 0x9C, 0x81, 0xD9, 0x92, 0x19, 0x8A, 0x79, 0x7A, 0xDA, 0x29, 0x74, 0x22, 0xB8, 0x2C, 0x7E, 0x14, 0xBD, 0x0D, 0x7D, 0x0E, 0x5F, 0x17, 0x1F, 0x17, 0x9F, 0x0F, 0xBF, 0x04, 0x07, 0xBF, 0x8D, 0x0F, 0x9F, 0x1F, 0x9F, 0x27, 0x5F, 0x3E, 0xFE, 0x56, 0x9E, 0x7E, 0x3E, 0x84, 0x59, 0x71, 0xF1, 0x91, 0xD2, 0xB1, 0xF3, 0xC1, 0xF4, 0xC9, 0xB3, 0xC9, 0x93, 0xC9, 0x72, 0x02, 0xD1, 0x93, 0x80, 0xC9, 0x93, 0x01, 0xC9, 0xB3, 0x88, 0xC9, 0xD4, 0xC1, 0xD4, 0xB9, 0xD4, 0xC2, 0x97, 0x89, 0x52, 0x58, 0xB0, 0x51, 0x11, 0x49, 0x31, 0x41, 0x51, 0x01, 0x41, 0x71, 0x02, 0x39, 0x51, 0x05, 0x31, 0x51, 0x83, 0x29, 0x50, 0x31, 0x51, + 0x29, 0x30, 0x31, 0x50, 0x12, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x28, 0xEF, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x91, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x34, 0x11, 0x54, 0x11, 0x75, 0x11, 0x95, 0x11, 0xB5, 0x11, 0x95, 0x11, 0xB5, 0x19, 0xD6, 0x11, 0xB5, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x52, 0x02, 0x19, 0x31, 0x03, 0x21, 0x31, 0x01, 0x19, 0x10, 0x83, 0x19, 0x30, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x03, 0x19, 0x30, 0x02, 0x19, 0x31, 0x8D, 0x19, 0x11, 0x11, 0x12, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x19, 0xD6, 0x2A, 0x38, 0x21, 0xF7, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x07, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, + 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x0E, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x86, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x19, 0x10, 0x01, 0x19, 0x11, 0x86, 0x11, 0x32, 0x09, 0x33, 0x09, 0x74, 0x11, 0xD7, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xD9, 0x03, 0x01, 0xD9, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x20, 0xEF, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8D, 0x19, 0x11, 0x11, 0x12, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x21, 0xF6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x53, 0x11, 0x33, 0x19, 0x53, 0x19, 0x32, 0x19, 0x52, 0x05, 0x19, 0x32, 0x80, 0x11, 0x32, 0x03, 0x11, 0x12, 0x01, 0x11, 0x32, 0x81, 0x11, 0x12, 0x11, 0x32, 0x01, 0x19, 0x52, 0x80, 0x19, 0x32, 0x05, 0x19, 0x31, 0x81, 0x19, 0x11, 0x21, 0x31, 0x01, 0x19, 0x10, 0x02, 0x21, 0x30, 0x80, 0x19, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x31, 0x83, 0x20, 0xF0, 0x21, 0x10, 0x21, 0x30, + 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x19, 0x10, 0x06, 0x19, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x31, 0x02, 0x19, 0x10, 0x80, 0x21, 0x31, 0x01, 0x21, 0x51, 0x8D, 0x21, 0x52, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x75, 0x09, 0x34, 0x01, 0x11, 0x33, 0x83, 0x11, 0x53, 0x11, 0x32, 0x19, 0x53, 0x11, 0x52, 0x02, 0x19, 0x52, 0x83, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x21, 0x50, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x32, 0x19, 0x54, 0x11, 0x54, 0x19, 0x76, 0x19, 0xB7, 0x01, 0x22, 0x18, 0x82, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x33, 0x01, 0x11, 0x11, 0x04, 0x19, 0x31, 0x8B, 0x19, 0x32, 0x11, 0x32, 0x19, 0x74, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x32, 0x11, 0x12, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x0C, 0x29, 0x30, 0x80, + 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x51, 0x8A, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xD6, 0x19, 0x75, 0x11, 0x34, 0x11, 0x13, 0x01, 0x19, 0x12, 0x83, 0x19, 0x32, 0x21, 0x31, 0x21, 0x32, 0x21, 0x31, 0x03, 0x19, 0x11, 0x02, 0x19, 0x32, 0x05, 0x19, 0x11, 0x81, 0x11, 0x11, 0x19, 0x11, 0x03, 0x11, 0x11, 0x80, 0x10, 0xF1, 0x02, 0x08, 0xF1, 0x86, 0x08, 0xF2, 0x09, 0x13, 0x09, 0x34, 0x09, 0x55, 0x09, 0x96, 0x09, 0xD8, 0x01, 0xF9, 0x02, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x8A, 0x01, 0xFA, 0x09, 0xFA, 0x09, 0xD9, 0x11, 0xD8, 0x19, 0xD7, 0x19, 0x94, 0x11, 0x12, 0x19, 0x31, 0x21, 0x51, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x02, + 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x08, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x31, 0x50, 0x80, 0x29, 0x30, 0x02, 0x31, 0x30, 0x02, 0x31, 0x51, 0x80, 0x31, 0x30, 0x01, 0x31, 0x51, 0x03, 0x39, 0x51, 0x01, 0x39, 0x71, 0x02, 0x41, 0x71, 0x80, 0x41, 0x51, 0x01, 0x49, 0x72, 0x03, 0x49, 0x92, 0x01, 0x51, 0xB2, 0x01, 0x51, 0x92, 0x01, 0x59, 0xB2, 0x81, 0x61, 0xD3, 0x61, 0xD2, 0x01, 0x69, 0xD2, 0x8D, 0x61, 0x70, 0x51, 0x0F, 0x61, 0x50, 0x71, 0xB1, 0x92, 0xD5, 0xB3, 0xB8, 0xCC, 0x3A, 0xDC, 0x9B, 0xE4, 0xBB, 0xDC, 0x7A, 0xDC, 0x59, 0xDC, 0x39, 0xD4, 0x39, 0xDC, 0x59, 0x01, 0xDC, 0x58, 0x01, 0xD4, 0x38, 0x80, 0xD4, 0x17, 0x02, 0xD4, 0x37, 0x80, 0xD4, 0x57, 0x01, 0xCC, 0x57, 0x88, 0xCC, 0x78, 0xC4, 0x98, 0xBC, 0xB8, 0xAC, 0x98, 0x83, 0xD4, 0x73, 0xF4, 0x8D, 0x5A, 0x8E, 0x3D, 0x86, 0x5D, 0x01, 0x7E, 0x1B, 0x94, 0x86, 0x1B, 0x8D, 0xDB, 0x9D, 0x9A, 0x94, 0x97, 0xA4, 0x77, 0xAC, 0x57, 0xB4, 0x78, 0xB4, 0x77, 0xBC, 0x98, 0xB4, 0x77, 0xA4, 0x57, 0x8C, 0x36, 0x74, 0x36, 0x64, 0xD7, 0x7E, 0xDE, 0x5F, 0x1E, 0x3F, 0x3E, 0x2F, 0x7E, 0x1F, 0xBF, 0x17, 0xBF, 0x0F, 0xBF, 0x03, 0x07, 0xDF, 0x0A, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x07, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x97, 0x07, 0xBF, 0x0F, 0x9E, 0x17, 0x9F, 0x2F, 0x7F, 0x3E, 0xFE, 0x5E, 0x7D, 0x85, 0xDC, 0x8C, 0xB8, 0x9B, 0xD5, 0xB3, 0xB5, 0xC3, 0x95, 0xCB, 0x75, 0xCB, 0x55, 0xD3, 0x76, 0xCB, 0x75, 0xBB, 0x95, 0x8A, 0xF3, 0x84, 0x77, 0x7E, 0x9E, 0x4F, 0x1E, 0x2F, 0x5E, + 0x1F, 0x7E, 0x0F, 0x9E, 0x07, 0xBE, 0x03, 0x07, 0xDE, 0x02, 0x07, 0xFE, 0x03, 0x07, 0xFD, 0x02, 0x07, 0xDD, 0x81, 0x07, 0xFD, 0x07, 0xFC, 0x04, 0x07, 0xDC, 0x02, 0x07, 0xDB, 0x80, 0x07, 0xFB, 0x01, 0x07, 0xDB, 0x08, 0x07, 0xDA, 0x02, 0x07, 0xD9, 0x01, 0x07, 0xF9, 0x08, 0x07, 0xFA, 0x81, 0x07, 0xDA, 0x07, 0xFA, 0x02, 0x07, 0xF9, 0x03, 0x07, 0xD9, 0x04, 0x07, 0xB9, 0x01, 0x07, 0x99, 0x90, 0x07, 0x78, 0x17, 0x79, 0x27, 0x39, 0x2E, 0xD8, 0x2E, 0x17, 0x56, 0x7A, 0x6E, 0x7C, 0x6D, 0xFC, 0x6D, 0x7C, 0x6D, 0x1C, 0x64, 0x7D, 0x5C, 0x1D, 0x22, 0xB9, 0x1A, 0x7A, 0x22, 0xDD, 0x12, 0x7D, 0x0A, 0x7E, 0x01, 0x02, 0x3E, 0x80, 0x02, 0x1E, 0x01, 0x02, 0x1F, 0x01, 0x01, 0xFF, 0x81, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x80, 0x01, 0xDF, 0x02, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x96, 0x01, 0x9E, 0x09, 0x7E, 0x11, 0x9D, 0x19, 0x7D, 0x29, 0x7C, 0x28, 0xF9, 0x6A, 0x1C, 0x92, 0x9D, 0x89, 0xF9, 0x92, 0x19, 0x92, 0x38, 0x8A, 0xBA, 0x4A, 0x17, 0x11, 0xB5, 0x2B, 0xFC, 0x14, 0x7C, 0x0D, 0x1D, 0x16, 0x1F, 0x0E, 0xBF, 0x17, 0x7F, 0x17, 0xBF, 0x07, 0xBF, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x8D, 0x0F, 0xBF, 0x17, 0x9F, 0x1F, 0x5F, 0x2F, 0x3F, 0x4E, 0xBE, 0x76, 0x7E, 0x8D, 0x5C, 0x62, 0x52, 0x89, 0xF2, 0xAA, 0x13, 0xC2, 0x13, 0xC1, 0xD3, 0xC9, 0xD3, 0xD1, 0xD4, 0x03, 0xD1, 0x93, 0x80, 0xC9, 0x93, 0x01, 0xC9, 0xB3, 0x8C, 0xC1, 0xB3, 0xC1, 0xD4, 0xBA, 0x35, 0xAA, 0x36, 0x68, 0xB0, 0x61, 0x31, 0x51, 0x31, 0x49, 0x51, 0x41, 0x51, 0x41, 0x71, + 0x39, 0x51, 0x39, 0x71, 0x39, 0x51, 0x06, 0x31, 0x51, 0x80, 0x31, 0x31, 0x0E, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x19, 0x33, 0x19, 0x53, 0x11, 0x33, 0x01, 0x11, 0x53, 0x02, 0x11, 0x74, 0x88, 0x19, 0x94, 0x19, 0x73, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x51, 0x19, 0x30, 0x19, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x19, 0x11, 0x8D, 0x19, 0x31, 0x19, 0x32, 0x19, 0x52, 0x19, 0x73, 0x19, 0x74, 0x19, 0x95, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xD6, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x05, 0x21, 0x10, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x05, 0x21, 0x0F, + 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x10, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x88, 0x21, 0x51, 0x19, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x52, 0x11, 0x74, 0x11, 0x54, 0x11, 0x76, 0x11, 0x97, 0x01, 0x09, 0xB8, 0x80, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x11, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x53, 0x19, 0xB5, 0x01, 0x21, 0xF7, 0x85, 0x21, 0xF6, 0x19, 0x94, 0x11, 0x53, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x52, 0x04, 0x11, 0x32, 0x01, 0x11, 0x33, 0x81, 0x11, 0x53, 0x09, 0x32, 0x04, 0x09, 0x33, 0x81, 0x11, 0x32, 0x09, 0x12, 0x01, 0x11, 0x32, 0x01, 0x19, 0x52, 0x04, 0x19, + 0x31, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x83, 0x21, 0x31, 0x21, 0x51, 0x19, 0x52, 0x11, 0x31, 0x01, 0x11, 0x32, 0x83, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD7, 0x19, 0xF8, 0x01, 0x11, 0xF7, 0x80, 0x11, 0xD7, 0x01, 0x11, 0xB6, 0x01, 0x11, 0x75, 0x01, 0x11, 0x74, 0x83, 0x09, 0x53, 0x09, 0x33, 0x11, 0x33, 0x11, 0x53, 0x01, 0x19, 0x52, 0x83, 0x19, 0x31, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x11, 0x21, 0x32, 0x21, 0x33, 0x19, 0x33, 0x11, 0x34, 0x11, 0x75, 0x19, 0xD7, 0x01, 0x22, 0x18, 0x85, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x32, 0x11, 0x11, 0x10, 0xF1, 0x19, 0x51, 0x01, 0x21, 0x52, 0x8E, 0x21, 0x51, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x74, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD7, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, + 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x03, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x05, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x80, 0x21, 0x51, 0x01, 0x19, 0x31, 0x83, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x8C, 0x19, 0x95, 0x11, 0x34, 0x11, 0x13, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, 0x12, 0x01, 0x11, 0x12, 0x02, 0x11, 0x32, 0x81, 0x11, 0x12, 0x09, 0x12, 0x09, 0x08, 0xF2, 0x87, 0x09, 0x13, 0x01, 0x13, 0x09, 0x33, 0x09, 0x34, 0x09, 0x55, 0x11, 0x96, 0x11, 0xB7, 0x09, 0xD8, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x8F, 0x09, 0xDA, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0xD7, 0x19, 0xB5, 0x11, 0x32, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, + 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x85, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x08, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x09, 0x29, 0x30, 0x01, 0x31, 0x30, 0x05, 0x31, 0x51, 0x82, 0x39, 0x51, 0x39, 0x71, 0x39, 0x51, 0x02, 0x39, 0x71, 0x80, 0x41, 0x71, 0x03, 0x41, 0x72, 0x01, 0x49, 0x92, 0x86, 0x49, 0xB3, 0x49, 0x92, 0x49, 0xB2, 0x49, 0xB3, 0x51, 0xB3, 0x51, 0x93, 0x51, 0xB3, 0x01, 0x59, 0xB3, 0x02, 0x61, 0xD3, 0x02, 0x69, 0xF3, 0x8D, 0x69, 0xD3, 0x71, 0xD2, 0x69, 0x91, 0x71, 0xB1, 0x79, 0xD1, 0x9A, 0xB4, 0xBB, 0xB8, 0xD4, 0x5A, 0xDC, 0x9B, 0xDC, 0x7A, 0xDC, 0x5A, 0xD4, 0x59, 0xDC, 0x79, 0xD4, 0x58, 0x02, 0xD4, 0x38, 0x03, 0xD4, 0x37, 0x8A, 0xD4, 0x58, 0xD4, 0x37, 0xCC, 0x57, 0xC4, 0x57, 0xC4, 0x78, 0xBC, 0x98, 0xA4, 0x77, 0x7B, 0xB4, 0x74, 0x35, 0x95, 0x9A, 0x9E, 0x5D, 0x01, 0x8D, 0xFB, 0x93, 0x95, 0xDB, 0x9D, 0xBB, 0x9D, 0x5A, 0x94, 0xB8, 0xA4, 0xB8, 0x94, 0x57, 0x94, 0x56, 0xA4, 0xB8, 0x9C, 0xD8, 0x84, 0x76, 0x6C, 0x56, 0x6D, 0x18, 0x6E, 0x7C, + 0x5E, 0xFE, 0x3F, 0x3D, 0x27, 0x3D, 0x1F, 0x7E, 0x17, 0xBF, 0x0F, 0xBF, 0x0F, 0xDF, 0x04, 0x07, 0xDF, 0x09, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x08, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x96, 0x0F, 0x9F, 0x1F, 0x9F, 0x2F, 0x5E, 0x47, 0x1E, 0x66, 0x9D, 0x85, 0xDB, 0x8C, 0x77, 0xA3, 0xD5, 0xB3, 0x75, 0xC3, 0x95, 0xCB, 0x95, 0xD3, 0x96, 0xCB, 0x55, 0xD3, 0x95, 0xC3, 0x95, 0x93, 0x34, 0x7C, 0x36, 0x7E, 0x9E, 0x4E, 0xFE, 0x2F, 0x5E, 0x1F, 0x9E, 0x0F, 0x9E, 0x0F, 0xBE, 0x01, 0x07, 0xDE, 0x81, 0x07, 0xFE, 0x07, 0xDE, 0x04, 0x07, 0xFE, 0x82, 0x07, 0xDE, 0x07, 0xFD, 0x07, 0xDD, 0x05, 0x07, 0xFD, 0x06, 0x07, 0xDC, 0x08, 0x07, 0xDB, 0x80, 0x07, 0xFB, 0x03, 0x07, 0xDA, 0x81, 0x07, 0xFA, 0x07, 0xDA, 0x0A, 0x07, 0xFB, 0x02, 0x07, 0xFA, 0x80, 0x07, 0xFB, 0x01, 0x07, 0xDB, 0x80, 0x07, 0xDA, 0x01, 0x07, 0xBA, 0x80, 0x07, 0xDA, 0x01, 0x07, 0xBA, 0x02, 0x07, 0x99, 0x94, 0x17, 0x79, 0x1F, 0x59, 0x2F, 0x3A, 0x36, 0x98, 0x35, 0xD7, 0x66, 0x7B, 0x76, 0x5C, 0x6D, 0xBB, 0x75, 0x3B, 0x74, 0xDC, 0x6C, 0x7C, 0x5C, 0x1D, 0x2A, 0x99, 0x1A, 0x39, 0x22, 0x9C, 0x12, 0x7D, 0x0A, 0x5D, 0x0A, 0x5E, 0x02, 0x1E, 0x02, 0x1F, 0x02, 0x1E, 0x03, 0x01, 0xFF, 0x82, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0xDF, 0x03, 0x01, 0xBF, 0x80, 0x01, 0x9F, 0x01, 0x01, 0xBF, 0x95, 0x01, 0x9E, 0x01, 0x7E, 0x09, 0x7D, 0x11, 0x7D, 0x21, 0x7C, 0x28, 0xF9, 0x61, 0xBA, 0x9A, 0xBD, 0x9A, 0x3A, 0x91, 0xD8, 0x92, 0x17, 0x92, 0x99, 0x62, 0x58, 0x19, 0x33, 0x2B, 0x7B, 0x1C, 0x5C, 0x14, + 0xDD, 0x0D, 0x9E, 0x16, 0x7F, 0x17, 0x1F, 0x17, 0xBF, 0x0F, 0xBF, 0x01, 0x07, 0xBF, 0x8E, 0x07, 0xDF, 0x07, 0x9F, 0x0F, 0xBF, 0x0F, 0x9F, 0x1F, 0x9F, 0x27, 0x5F, 0x3E, 0xDE, 0x66, 0x9E, 0x8E, 0x1E, 0x73, 0x96, 0x71, 0xF1, 0x99, 0xF2, 0xB1, 0xF3, 0xC1, 0xD3, 0xC9, 0xB3, 0x01, 0xC9, 0x93, 0x01, 0xD1, 0x93, 0x8D, 0xD1, 0xB3, 0xC9, 0x93, 0xD1, 0xB3, 0xC9, 0xB3, 0xC1, 0xB3, 0xC1, 0xD4, 0xB9, 0xF4, 0xBA, 0x56, 0x81, 0x31, 0x61, 0x11, 0x51, 0x11, 0x49, 0x31, 0x41, 0x51, 0x41, 0x71, 0x04, 0x39, 0x71, 0x02, 0x31, 0x51, 0x02, 0x31, 0x31, 0x81, 0x29, 0x30, 0x29, 0x50, 0x10, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x19, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x31, 0x80, 0x21, 0x32, 0x02, 0x19, 0x12, 0x80, 0x19, 0x32, 0x02, 0x11, 0x32, 0x82, 0x19, 0x53, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x02, 0x19, 0x30, 0x02, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x31, 0x02, 0x19, 0x31, 0x84, 0x19, 0x32, 0x19, 0x53, 0x19, 0x74, 0x11, 0x94, 0x21, 0xF7, 0x01, 0x22, 0x17, 0x85, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x05, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x84, 0x29, + 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x0B, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x8E, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x50, 0x21, 0x51, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x76, 0x11, 0x97, 0x09, 0xB7, 0x01, 0x11, 0xF9, 0x80, 0x09, 0xD9, 0x01, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, + 0x11, 0x83, 0x19, 0x32, 0x11, 0x33, 0x11, 0x53, 0x19, 0x95, 0x01, 0x21, 0xF6, 0x83, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x33, 0x01, 0x11, 0x12, 0x80, 0x19, 0x32, 0x01, 0x19, 0x52, 0x87, 0x11, 0x52, 0x11, 0x32, 0x11, 0x53, 0x11, 0x33, 0x11, 0x54, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB5, 0x01, 0x11, 0xD6, 0x83, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xF6, 0x11, 0xD6, 0x01, 0x11, 0xB5, 0x82, 0x11, 0x94, 0x11, 0x73, 0x11, 0x33, 0x01, 0x11, 0x32, 0x03, 0x19, 0x31, 0x81, 0x21, 0x51, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x84, 0x21, 0x10, 0x29, 0x10, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x72, 0x88, 0x11, 0x31, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD7, 0x1A, 0x18, 0x11, 0xF8, 0x11, 0xD8, 0x02, 0x09, 0xB7, 0x01, 0x11, 0xF8, 0x80, 0x1A, 0x18, 0x01, 0x11, 0xD7, 0x85, 0x11, 0x95, 0x09, 0x74, 0x11, + 0x53, 0x19, 0x53, 0x19, 0x52, 0x19, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x11, 0x01, 0x21, 0x32, 0x83, 0x19, 0x13, 0x11, 0x34, 0x11, 0x95, 0x19, 0xD7, 0x01, 0x1A, 0x17, 0x82, 0x19, 0xD6, 0x11, 0x74, 0x09, 0x12, 0x01, 0x11, 0x11, 0x81, 0x19, 0x31, 0x21, 0x52, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x82, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x02, 0x19, 0xF7, 0x84, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x94, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x80, 0x19, 0x95, 0x01, 0x11, 0x33, 0x80, 0x19, 0x12, 0x02, 0x19, 0x11, 0x80, 0x21, 0x11, 0x01, 0x19, 0x11, 0x82, 0x19, 0x12, 0x19, 0x32, 0x19, 0x33, 0x01, 0x11, 0x33, 0x82, 0x11, 0x54, 0x11, 0x74, 0x19, 0xB5, 0x01, 0x11, 0x95, 0x84, 0x11, 0x96, 0x11, 0xB6, 0x11, 0x96, 0x11, 0xB6, 0x11, 0xD6, 0x01, 0x19, + 0xD7, 0x80, 0x19, 0xF7, 0x02, 0x19, 0xF8, 0x02, 0x1A, 0x18, 0x88, 0x1A, 0x19, 0x11, 0xF8, 0x11, 0xD8, 0x09, 0xB8, 0x09, 0xD8, 0x01, 0xF9, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x85, 0x09, 0xDA, 0x09, 0xD9, 0x11, 0xB8, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x33, 0x01, 0x19, 0x32, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x80, 0x29, 0x30, 0x08, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x07, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x31, 0x50, 0x01, 0x31, 0x51, 0x80, 0x31, 0x71, 0x01, 0x31, 0x51, 0x85, 0x31, 0x31, 0x39, 0x51, 0x31, 0x30, 0x31, 0x51, 0x39, 0x71, 0x39, 0x72, 0x01, 0x39, 0x71, 0x80, 0x39, 0x72, 0x03, 0x41, 0x92, 0x80, 0x41, 0x93, 0x01, 0x41, 0x92, 0x01, + 0x49, 0xB3, 0x82, 0x49, 0xD3, 0x49, 0xB3, 0x51, 0xD4, 0x01, 0x51, 0xB4, 0x83, 0x51, 0xB3, 0x59, 0xB3, 0x61, 0xD4, 0x61, 0xF4, 0x01, 0x61, 0xD3, 0x84, 0x61, 0xB3, 0x61, 0xD3, 0x69, 0xD3, 0x71, 0xF3, 0x71, 0xD3, 0x01, 0x7A, 0x13, 0x8A, 0x71, 0xF2, 0x69, 0x70, 0x71, 0xB1, 0x82, 0x32, 0xAB, 0x36, 0xC3, 0xD8, 0xCC, 0x5A, 0xD4, 0x7A, 0xD4, 0x79, 0xD4, 0x59, 0xD4, 0x38, 0x01, 0xD4, 0x58, 0x80, 0xD4, 0x38, 0x01, 0xD4, 0x37, 0x80, 0xCC, 0x16, 0x01, 0xD4, 0x37, 0x89, 0xCC, 0x37, 0xCC, 0x57, 0xC4, 0x57, 0xBC, 0x77, 0xBC, 0xB8, 0x9C, 0x56, 0x83, 0xD4, 0x8C, 0x97, 0x9D, 0xBB, 0x9D, 0xFC, 0x01, 0x95, 0xDB, 0x91, 0x9D, 0xBB, 0x9D, 0x9B, 0x9D, 0x7A, 0x9D, 0x9A, 0x95, 0x59, 0x85, 0x39, 0x75, 0x18, 0x75, 0x59, 0x6D, 0xDA, 0x6E, 0xBD, 0x56, 0xFD, 0x3F, 0x3E, 0x27, 0x5D, 0x1F, 0x9E, 0x17, 0x9E, 0x0F, 0xBF, 0x0F, 0xDF, 0x07, 0xBF, 0x05, 0x07, 0xDF, 0x12, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x97, 0x07, 0xBF, 0x0F, 0xBF, 0x1F, 0x9F, 0x2F, 0x5E, 0x3E, 0xFE, 0x66, 0x7D, 0x85, 0xBB, 0x8C, 0x16, 0xAB, 0xF6, 0xBB, 0x95, 0xCB, 0x96, 0xD3, 0x75, 0xD3, 0x76, 0xD3, 0x55, 0xD3, 0x75, 0xC3, 0xB6, 0x93, 0x13, 0x84, 0x57, 0x7E, 0x7D, 0x57, 0x1E, 0x37, 0x5E, 0x1F, 0x9F, 0x17, 0x9E, 0x0F, 0xBE, 0x01, 0x07, 0xDE, 0x02, 0x07, 0xFF, 0x02, 0x07, 0xFE, 0x80, 0x07, 0xDE, 0x05, 0x07, 0xFE, 0x02, 0x07, 0xFD, 0x03, 0x07, 0xDD, 0x02, 0x07, 0xDC, 0x01, 0x07, 0xFC, 0x01, 0x07, 0xDC, 0x81, 0x07, 0xDB, 0x07, 0xFB, 0x02, 0x07, 0xFC, 0x04, 0x07, 0xFB, 0x80, 0x07, 0xDB, 0x01, + 0x07, 0xDC, 0x80, 0x07, 0xDB, 0x01, 0x07, 0xDC, 0x07, 0x07, 0xFC, 0x82, 0x07, 0xFB, 0x07, 0xFC, 0x07, 0xFB, 0x04, 0x07, 0xDB, 0x80, 0x07, 0xBB, 0x01, 0x07, 0xDB, 0x98, 0x07, 0xBB, 0x07, 0xBA, 0x07, 0x9A, 0x0F, 0x7A, 0x17, 0x7A, 0x1F, 0x3A, 0x37, 0x3B, 0x3E, 0xBA, 0x3D, 0xF8, 0x66, 0x5B, 0x76, 0x3C, 0x75, 0x9B, 0x74, 0xFB, 0x74, 0xBB, 0x74, 0x9D, 0x6C, 0x3D, 0x2A, 0x78, 0x1A, 0x19, 0x12, 0x5B, 0x12, 0x5D, 0x0A, 0x3D, 0x02, 0x3E, 0x02, 0x5F, 0x02, 0x1E, 0x02, 0x1F, 0x04, 0x01, 0xFF, 0x01, 0x01, 0xDF, 0x03, 0x01, 0xBF, 0x99, 0x01, 0xDF, 0x01, 0x9E, 0x01, 0x7E, 0x01, 0x7D, 0x09, 0x7D, 0x11, 0x9D, 0x21, 0x9C, 0x31, 0x3A, 0x61, 0xDB, 0xA2, 0xFE, 0x9A, 0x3A, 0x99, 0xD7, 0x9A, 0x17, 0x9A, 0x99, 0x7A, 0x79, 0x29, 0x53, 0x22, 0x77, 0x2C, 0x3D, 0x14, 0x7C, 0x0D, 0x5D, 0x0E, 0x1E, 0x16, 0xDF, 0x17, 0x9F, 0x0F, 0xBF, 0x0F, 0xDF, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x8B, 0x07, 0x9F, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x5F, 0x37, 0x1F, 0x56, 0xBF, 0x86, 0x7F, 0x84, 0xDA, 0x59, 0xF1, 0x89, 0xD1, 0xA9, 0xF3, 0xC1, 0xD3, 0x01, 0xC9, 0xB3, 0x85, 0xC9, 0x93, 0xD1, 0x93, 0xC9, 0x73, 0xD1, 0x93, 0xC9, 0x93, 0xD1, 0xB3, 0x01, 0xC9, 0xB3, 0x86, 0xC1, 0xD3, 0xB9, 0xF4, 0xC2, 0x76, 0xA2, 0x15, 0x60, 0xD0, 0x59, 0x11, 0x49, 0x10, 0x01, 0x41, 0x51, 0x80, 0x41, 0x71, 0x01, 0x39, 0x71, 0x81, 0x31, 0x51, 0x31, 0x71, 0x02, 0x31, 0x51, 0x02, 0x31, 0x31, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x0C, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x03, 0x29, + 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x88, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x21, 0x11, 0x02, 0x19, 0x11, 0x01, 0x19, 0x32, 0x81, 0x19, 0x31, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x30, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x02, 0x22, 0x17, 0x85, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x04, 0x21, 0x30, 0x8A, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x0F, + 0x81, 0x29, 0x10, 0x21, 0x10, 0x08, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x09, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x09, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x8C, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x19, 0x12, 0x11, 0x33, 0x19, 0x95, 0x19, 0x96, 0x19, 0xD7, 0x11, 0xB8, 0x01, 0x11, 0xF9, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x84, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x32, 0x81, 0x11, 0x32, 0x19, 0x52, 0x01, 0x11, 0x53, 0x93, 0x11, 0x54, 0x11, 0x74, 0x11, 0x75, 0x11, 0x95, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x11, 0xF7, 0x1A, 0x38, 0x1A, 0x18, 0x1A, 0x38, 0x1A, 0x18, 0x1A, 0x38, 0x1A, 0x17, 0x19, 0xF7, 0x19, 0xF6, 0x19, 0xD6, 0x19, 0xD5, 0x19, 0xB4, 0x11, 0x53, + 0x01, 0x11, 0x32, 0x81, 0x11, 0x11, 0x19, 0x31, 0x02, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x51, 0x89, 0x19, 0x31, 0x11, 0x32, 0x11, 0x12, 0x11, 0x33, 0x09, 0x54, 0x11, 0xD6, 0x11, 0xF7, 0x09, 0xD8, 0x09, 0xF8, 0x09, 0xD8, 0x02, 0x09, 0xD9, 0x80, 0x09, 0xF9, 0x02, 0x12, 0x19, 0x86, 0x1A, 0x18, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x53, 0x19, 0x52, 0x21, 0x52, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x11, 0x89, 0x19, 0x11, 0x19, 0x12, 0x19, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xB6, 0x11, 0x74, 0x01, 0x11, 0x32, 0x83, 0x19, 0x32, 0x21, 0x52, 0x21, 0x31, 0x21, 0x52, 0x01, 0x19, 0x11, 0x8C, 0x19, 0x12, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, + 0x11, 0x95, 0x19, 0xF7, 0x22, 0x18, 0x22, 0x17, 0x11, 0x95, 0x11, 0x53, 0x11, 0x32, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x05, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x11, 0x32, 0x11, 0x53, 0x19, 0x94, 0x02, 0x21, 0xF6, 0x89, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x01, 0x19, 0x12, 0x85, 0x11, 0x33, 0x11, 0x34, 0x11, 0x54, 0x19, 0x96, 0x19, 0xD7, 0x22, 0x18, 0x01, 0x2A, 0x79, 0x86, 0x2A, 0x9A, 0x2A, 0x79, 0x22, 0x79, 0x2A, 0x7A, 0x2A, 0x9A, 0x22, 0x7A, 0x2A, 0x7A, 0x01, 0x22, 0x5A, 0x81, 0x22, 0x3A, 0x1A, 0x3A, 0x03, 0x1A, 0x19, 0x02, 0x11, 0xF9, 0x82, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x87, 0x01, 0xDA, 0x09, 0xFA, 0x09, 0xDA, 0x09, 0xB9, 0x11, 0xB8, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x33, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, + 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x03, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x0E, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x07, 0x31, 0x51, 0x02, 0x39, 0x71, 0x03, 0x39, 0x72, 0x01, 0x41, 0x92, 0x81, 0x41, 0x93, 0x41, 0xB3, 0x03, 0x49, 0xB3, 0x01, 0x51, 0xB4, 0x82, 0x51, 0xB3, 0x51, 0xB4, 0x59, 0xB4, 0x01, 0x59, 0xD4, 0x81, 0x59, 0xB3, 0x61, 0xD4, 0x01, 0x69, 0xF4, 0x82, 0x69, 0xD4, 0x69, 0xF4, 0x71, 0xF4, 0x01, 0x72, 0x13, 0x8B, 0x7A, 0x34, 0x72, 0x13, 0x71, 0xD2, 0x71, 0xB1, 0x69, 0x6F, 0x71, 0xB0, 0x8A, 0x72, 0x9B, 0x15, 0xBC, 0x18, 0xCC, 0x9A, 0xD4, 0x9A, 0xCC, 0x59, 0x02, 0xD4, 0x58, 0x02, 0xD4, 0x37, 0x01, 0xD4, 0x17, 0x80, 0xD4, 0x37, 0x01, 0xCC, 0x57, 0x88, 0xC4, 0x57, 0xBC, 0x57, 0xB4, 0x77, 0xA4, 0x57, 0x83, 0xD4, 0x94, 0xD8, 0xAD, 0xFC, 0xA5, + 0xFC, 0x9D, 0xDB, 0x01, 0x95, 0xDB, 0x8C, 0x95, 0xFB, 0x8E, 0x1B, 0x85, 0xFB, 0x76, 0x1B, 0x6E, 0x7C, 0x6E, 0xFE, 0x5F, 0x5F, 0x3F, 0x1D, 0x2F, 0x5E, 0x1F, 0x7E, 0x17, 0x9E, 0x0F, 0xBE, 0x0F, 0xBF, 0x07, 0x07, 0xDF, 0x09, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x07, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x97, 0x07, 0xBF, 0x0F, 0xBF, 0x1F, 0x7E, 0x2F, 0x5E, 0x46, 0xFE, 0x66, 0x7D, 0x85, 0x7A, 0x8B, 0xF5, 0xAB, 0xD5, 0xC3, 0xB6, 0xCB, 0x75, 0xD3, 0x75, 0xD3, 0x55, 0xDB, 0x75, 0xCB, 0x55, 0xC3, 0x96, 0x9B, 0x33, 0x84, 0x16, 0x7E, 0x7D, 0x56, 0xFE, 0x37, 0x5E, 0x1F, 0x7E, 0x0F, 0x9E, 0x0F, 0xBE, 0x02, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x0B, 0x07, 0xFE, 0x81, 0x07, 0xFD, 0x07, 0xDD, 0x01, 0x07, 0xFD, 0x02, 0x07, 0xDD, 0x81, 0x07, 0xFD, 0x07, 0xFC, 0x01, 0x07, 0xDC, 0x08, 0x07, 0xFC, 0x05, 0x07, 0xDC, 0x82, 0x07, 0xDD, 0x07, 0xFD, 0x07, 0xFC, 0x02, 0x07, 0xFD, 0x05, 0x07, 0xFC, 0x06, 0x07, 0xDC, 0x96, 0x07, 0xDB, 0x07, 0xDC, 0x07, 0xBB, 0x07, 0x9B, 0x0F, 0x9B, 0x0F, 0x7B, 0x17, 0x5B, 0x27, 0x3B, 0x37, 0x1B, 0x3E, 0x9A, 0x45, 0xF9, 0x6E, 0x3B, 0x7E, 0x1C, 0x7D, 0x7B, 0x7C, 0xDA, 0x7C, 0xBB, 0x7C, 0x9D, 0x6C, 0x3E, 0x2A, 0x38, 0x1A, 0x19, 0x1A, 0x3B, 0x0A, 0x1C, 0x0A, 0x3D, 0x01, 0x02, 0x1E, 0x82, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x03, 0x01, 0xDF, 0x06, 0x01, 0xBF, 0x96, 0x01, 0xBE, 0x01, 0x9E, 0x09, 0x7D, 0x11, 0x7D, 0x21, 0x9C, 0x31, 0x3A, 0x59, 0x9A, 0x9A, 0xDE, 0x9A, 0x19, 0x99, 0xD7, 0xA1, 0xF7, 0x9A, 0x58, 0x8A, 0xB9, 0x41, 0x94, 0x19, + 0xB5, 0x33, 0xFC, 0x1C, 0x3C, 0x0C, 0xDD, 0x15, 0xDE, 0x16, 0x9F, 0x17, 0x5F, 0x17, 0xBF, 0x0F, 0xBF, 0x02, 0x07, 0xDF, 0x8E, 0x07, 0xBF, 0x0F, 0xBF, 0x0F, 0x9F, 0x1F, 0x7F, 0x2F, 0x3F, 0x46, 0xDF, 0x6E, 0x9F, 0x8D, 0xDE, 0x62, 0xF4, 0x71, 0xF1, 0xA2, 0x13, 0xB9, 0xD3, 0xC1, 0xB3, 0xC9, 0x93, 0xD1, 0xB3, 0x03, 0xD1, 0x93, 0x02, 0xC9, 0xB3, 0x8B, 0xC9, 0xD3, 0xC1, 0xF4, 0xBA, 0x14, 0xC2, 0xD7, 0x68, 0xF0, 0x61, 0x31, 0x49, 0x10, 0x49, 0x51, 0x41, 0x51, 0x41, 0x71, 0x39, 0x71, 0x39, 0x51, 0x01, 0x39, 0x71, 0x04, 0x31, 0x51, 0x81, 0x31, 0x31, 0x31, 0x51, 0x0D, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x85, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x21, 0x31, 0x02, 0x19, 0x31, 0x85, 0x19, 0x11, 0x19, 0x31, 0x19, 0x30, 0x19, 0x10, 0x21, 0x30, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x19, 0x11, 0x84, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x19, 0xD6, 0x21, 0xF7, 0x01, 0x22, 0x17, 0x85, 0x11, 0x95, 0x11, 0x54, 0x11, 0x32, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x05, 0x21, + 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x88, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x08, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x8A, 0x21, 0x11, + 0x19, 0x11, 0x19, 0x32, 0x19, 0x33, 0x19, 0x53, 0x19, 0x75, 0x11, 0x75, 0x11, 0x96, 0x19, 0xB7, 0x11, 0x97, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x33, 0x04, 0x11, 0x32, 0x84, 0x11, 0x53, 0x11, 0x54, 0x11, 0x74, 0x11, 0x75, 0x11, 0x95, 0x01, 0x11, 0xB6, 0x02, 0x11, 0xB7, 0x81, 0x11, 0xD7, 0x19, 0xF8, 0x02, 0x19, 0xF7, 0x03, 0x11, 0xF7, 0x01, 0x11, 0xD6, 0x86, 0x11, 0xB5, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x8B, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x91, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x11, 0x12, 0x11, 0x32, 0x11, 0x54, 0x11, 0xB6, 0x11, 0xD7, 0x09, + 0xD8, 0x09, 0xF9, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xFA, 0x01, 0xD9, 0x09, 0xF9, 0x01, 0x09, 0xFA, 0x86, 0x12, 0x1A, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x53, 0x19, 0x52, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x91, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x11, 0x53, 0x11, 0x95, 0x19, 0xF6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x11, 0x19, 0x32, 0x01, 0x21, 0x32, 0x90, 0x21, 0x11, 0x18, 0xF0, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x09, 0x54, 0x11, 0xB5, 0x19, 0xF7, 0x22, 0x38, 0x22, 0x17, 0x11, 0x95, 0x11, 0x74, 0x11, 0x12, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x02, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x0D, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x02, 0x19, 0x32, 0x88, 0x11, 0x53, 0x19, 0x94, 0x19, 0xF6, 0x22, 0x17, 0x21, 0xF6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x02, 0x19, 0x11, 0x02, 0x21, 0x31, 0x01, 0x19, 0x12, 0x83, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD7, 0x01, 0x22, 0x18, 0x02, 0x19, 0xF8, 0x81, 0x19, 0xF7, 0x11, 0xD7, 0x01, 0x19, 0xD7, 0x03, 0x11, 0xD7, 0x81, 0x11, + 0xD8, 0x19, 0xD8, 0x02, 0x19, 0xF8, 0x80, 0x11, 0xD8, 0x02, 0x11, 0xF8, 0x82, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x83, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x85, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0xB8, 0x19, 0xD7, 0x19, 0x75, 0x11, 0x33, 0x01, 0x19, 0x32, 0x84, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x0A, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x86, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x20, 0xEF, 0x01, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x0B, 0x29, 0x30, 0x85, 0x29, 0x51, 0x29, 0x50, 0x29, 0x30, 0x31, 0x31, 0x31, 0x51, 0x31, 0x31, 0x03, 0x31, 0x51, 0x81, 0x39, 0x72, 0x39, 0x71, 0x02, 0x39, 0x72, 0x02, 0x39, 0x92, 0x02, 0x41, 0x93, 0x01, 0x49, 0xB3, + 0x81, 0x49, 0xD4, 0x51, 0xD4, 0x01, 0x51, 0xB4, 0x82, 0x51, 0xD4, 0x59, 0xD4, 0x59, 0xB4, 0x01, 0x59, 0xD4, 0x02, 0x61, 0xF4, 0x82, 0x6A, 0x14, 0x69, 0xF4, 0x6A, 0x14, 0x01, 0x72, 0x14, 0x88, 0x72, 0x13, 0x7A, 0x34, 0x72, 0x13, 0x69, 0x91, 0x61, 0x90, 0x7A, 0x32, 0x9B, 0x76, 0x93, 0x55, 0x82, 0xF4, 0x01, 0x7A, 0x92, 0x85, 0xA3, 0x96, 0xBC, 0x59, 0xCC, 0x9A, 0xCC, 0x79, 0xCC, 0x38, 0xD4, 0x58, 0x01, 0xD4, 0x38, 0x01, 0xD4, 0x37, 0x81, 0xD4, 0x17, 0xD4, 0x37, 0x01, 0xCC, 0x37, 0x96, 0xCC, 0x57, 0xC4, 0x57, 0xBC, 0x37, 0xB4, 0x78, 0x93, 0xB5, 0x8B, 0xF6, 0xA5, 0x9B, 0xAE, 0x1D, 0x9D, 0xDB, 0x95, 0xFB, 0x85, 0xFB, 0x86, 0x3C, 0x7E, 0x7D, 0x6E, 0x9D, 0x66, 0xDE, 0x4F, 0x1E, 0x36, 0xFD, 0x2F, 0x5E, 0x1F, 0x9E, 0x17, 0x9E, 0x0F, 0x9E, 0x0F, 0xBF, 0x07, 0xBF, 0x07, 0x07, 0xDF, 0x12, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x97, 0x0F, 0xBF, 0x0F, 0x9F, 0x1F, 0x7E, 0x2F, 0x3E, 0x4E, 0xFE, 0x76, 0xBE, 0x85, 0x19, 0x8B, 0xB4, 0xB3, 0xB6, 0xC3, 0x75, 0xCB, 0x55, 0xD3, 0x55, 0xDB, 0x55, 0xD3, 0x35, 0xD3, 0x55, 0xC3, 0x96, 0x92, 0xF3, 0x84, 0x16, 0x86, 0x7D, 0x57, 0x1E, 0x37, 0x5F, 0x1F, 0x7E, 0x17, 0x9E, 0x0F, 0xBE, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xDE, 0x03, 0x07, 0xFF, 0x81, 0x07, 0xFE, 0x07, 0xDE, 0x08, 0x07, 0xFE, 0x01, 0x07, 0xFD, 0x02, 0x07, 0xDD, 0x01, 0x07, 0xFD, 0x01, 0x07, 0xDD, 0x04, 0x07, 0xFD, 0x01, 0x07, 0xDD, 0x80, 0x07, 0xFD, 0x02, 0x07, 0xDD, 0x01, 0x07, 0xFD, 0x01, 0x07, 0xDD, 0x09, 0x07, + 0xFD, 0x03, 0x07, 0xDD, 0x80, 0x07, 0xBD, 0x01, 0x07, 0xDD, 0x01, 0x07, 0xDC, 0x02, 0x07, 0xBC, 0x92, 0x0F, 0x9C, 0x17, 0x9C, 0x1F, 0x7C, 0x2F, 0x5C, 0x3F, 0x3C, 0x46, 0x9B, 0x4D, 0xD9, 0x6E, 0x3B, 0x7D, 0xDB, 0x85, 0x5B, 0x84, 0xDB, 0x7C, 0x9B, 0x8C, 0xBE, 0x74, 0x1D, 0x2A, 0x18, 0x1A, 0x19, 0x1A, 0x3C, 0x0A, 0x3C, 0x02, 0x1D, 0x01, 0x02, 0x1E, 0x82, 0x02, 0x1F, 0x01, 0xFE, 0x01, 0xFF, 0x02, 0x01, 0xDF, 0x02, 0x01, 0xBF, 0x83, 0x01, 0x9F, 0x01, 0xBF, 0x01, 0xDF, 0x01, 0x9E, 0x01, 0x01, 0xBE, 0x95, 0x09, 0x9D, 0x11, 0x7D, 0x21, 0x7C, 0x39, 0x7B, 0x49, 0x39, 0x92, 0xBD, 0x9A, 0x3A, 0x99, 0xD7, 0xA1, 0xD7, 0xA2, 0x78, 0x9A, 0xD9, 0x62, 0x36, 0x19, 0x53, 0x43, 0xDC, 0x1B, 0xFB, 0x14, 0xDD, 0x0D, 0x9E, 0x16, 0x5F, 0x17, 0x3F, 0x17, 0x9F, 0x0F, 0xBF, 0x0F, 0xDF, 0x01, 0x07, 0xDF, 0x8E, 0x0F, 0xDF, 0x0F, 0xBF, 0x0F, 0x9F, 0x1F, 0x9F, 0x27, 0x5F, 0x3F, 0x1F, 0x56, 0x9E, 0x86, 0x7F, 0x74, 0x38, 0x61, 0xF1, 0x92, 0x12, 0xB2, 0x13, 0xB9, 0x92, 0xC9, 0x93, 0xD1, 0xB3, 0x01, 0xD1, 0x93, 0x82, 0xC9, 0x73, 0xD1, 0x93, 0xC9, 0x93, 0x01, 0xC9, 0xB3, 0x87, 0xC1, 0x93, 0xC1, 0xD3, 0xB9, 0xF4, 0xC2, 0xD7, 0x81, 0x92, 0x58, 0xF0, 0x51, 0x31, 0x49, 0x51, 0x01, 0x41, 0x51, 0x04, 0x39, 0x71, 0x80, 0x31, 0x71, 0x03, 0x31, 0x51, 0x03, 0x29, 0x30, 0x80, 0x29, 0x50, 0x0A, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, + 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x11, 0x03, 0x21, 0x31, 0x02, 0x19, 0x31, 0x80, 0x19, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x86, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x11, 0x33, 0x11, 0x53, 0x19, 0xB5, 0x02, 0x22, 0x17, 0x85, 0x11, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x12, 0x19, 0x31, 0x19, 0x30, 0x04, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x86, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x81, + 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x4F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x32, 0x82, 0x19, 0x53, 0x19, 0x74, 0x19, 0x75, 0x01, 0x11, 0x34, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x85, 0x19, 0x10, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x53, 0x11, 0x95, 0x02, 0x19, 0xF7, 0x81, 0x19, 0xB6, 0x11, 0x54, 0x01, 0x11, 0x33, 0x03, 0x11, 0x32, 0x87, 0x11, 0x53, 0x11, 0x54, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x11, 0xD7, 0x01, 0x11, 0xB7, 0x83, 0x11, 0xB6, 0x19, 0xB7, 0x11, 0xB6, 0x11, 0x96, 0x02, 0x11, 0xB6, 0x01, 0x11, 0xF7, 0x01, 0x19, 0xF7, 0x82, 0x11, 0xD7, 0x11, 0xD6, 0x19, 0xF6, 0x01, 0x11, 0x95, 0x86, 0x11, 0x54, 0x11, 0x32, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x19, 0x10, 0x02, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, + 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x09, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x19, 0x10, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x11, 0xD7, 0x01, 0x09, 0xD8, 0x81, 0x09, 0xFA, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x88, 0x01, 0xFA, 0x09, 0xDA, 0x09, 0xD9, 0x09, 0xF9, 0x11, 0xD8, 0x11, 0xB6, 0x11, 0x74, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x8B, 0x11, 0x12, 0x11, 0x53, 0x19, 0x95, 0x19, 0xF6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x32, 0x10, 0xF2, 0x19, 0x12, 0x21, 0x32, 0x01, 0x21, 0x31, 0x91, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x09, 0x53, 0x11, 0xB6, 0x19, 0xF7, 0x22, 0x17, 0x1A, 0x17, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x07, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, + 0x30, 0x04, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x8C, 0x11, 0x33, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xD6, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x11, 0x10, 0x19, 0x10, 0x01, 0x19, 0x31, 0x8A, 0x21, 0x31, 0x19, 0x32, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0x96, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF8, 0x19, 0xF7, 0x19, 0xB6, 0x01, 0x11, 0x75, 0x83, 0x09, 0x54, 0x11, 0x74, 0x11, 0x54, 0x11, 0x74, 0x03, 0x11, 0x75, 0x81, 0x11, 0x95, 0x11, 0x75, 0x02, 0x11, 0x76, 0x02, 0x11, 0x96, 0x02, 0x11, 0xB7, 0x83, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xF9, 0x03, 0x01, 0xDA, 0x87, 0x01, 0xBA, 0x09, 0xD9, 0x09, 0xB9, 0x09, 0xB8, 0x11, 0xB7, 0x19, 0xB6, 0x11, 0x33, 0x19, 0x33, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x21, 0x10, 0x04, 0x21, + 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x29, 0x30, 0x85, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x04, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x01, 0x29, 0x50, 0x06, 0x31, 0x51, 0x81, 0x39, 0x71, 0x31, 0x51, 0x04, 0x39, 0x72, 0x80, 0x41, 0x92, 0x01, 0x39, 0x92, 0x87, 0x39, 0x93, 0x41, 0x93, 0x41, 0xB3, 0x41, 0x93, 0x49, 0xB3, 0x49, 0xB4, 0x49, 0xB3, 0x49, 0xB4, 0x01, 0x51, 0xD4, 0x01, 0x51, 0xB4, 0x02, 0x59, 0xD4, 0x01, 0x61, 0xF4, 0x82, 0x69, 0xF4, 0x6A, 0x34, 0x6A, 0x14, 0x01, 0x72, 0x14, 0x92, 0x72, 0x13, 0x69, 0xD2, 0x61, 0x91, 0x72, 0x33, 0x9B, 0x97, 0xAC, 0x18, 0xA4, 0x18, 0xAC, 0x79, 0x8B, 0xD7, 0x73, 0x14, 0x72, 0xF4, 0x62, 0x72, 0x62, 0x10, 0x8B, 0x14, 0xB4, 0x18, 0xCC, 0x99, 0xC4, 0x38, 0xCC, 0x38, 0xD4, 0x58, 0x01, 0xD4, 0x38, 0x03, 0xD4, 0x37, 0x92, 0xD4, 0x38, 0xCC, 0x17, 0xCC, 0x37, 0xC4, 0x38, 0xB4, 0x17, 0xA3, 0xF7, 0x83, 0x94, 0x94, 0xB8, 0xAD, 0xFD, 0x9E, 0x1C, 0x8E, 0x1C, 0x7E, 0x3C, 0x6E, 0x5C, 0x5E, 0x9D, 0x4E, 0xDD, 0x3E, 0xFD, 0x2F, 0x5E, 0x27, 0x7E, 0x17, 0x9E, 0x02, 0x0F, 0xBF, 0x07, 0x07, 0xDF, 0x12, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x97, 0x0F, 0xBF, 0x17, 0xBF, 0x1F, 0x7E, 0x37, 0x3E, 0x4E, 0xDD, 0x76, 0x7D, 0x84, 0xD8, 0x93, 0xB5, 0xB3, 0xB6, 0xC3, 0x55, 0xCB, 0x55, 0xD3, 0x55, 0xDB, 0x55, 0xD3, 0x35, 0xD3, 0x75, 0xC3, 0x96, 0x9B, + 0x13, 0x84, 0x16, 0x7E, 0x5D, 0x56, 0xFE, 0x37, 0x5F, 0x1F, 0x9F, 0x17, 0x9E, 0x0F, 0xBF, 0x03, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x08, 0x07, 0xFF, 0x07, 0x07, 0xFE, 0x81, 0x07, 0xDD, 0x07, 0xFE, 0x01, 0x07, 0xFD, 0x81, 0x07, 0xDD, 0x07, 0xFD, 0x01, 0x07, 0xDD, 0x02, 0x07, 0xFD, 0x02, 0x07, 0xDD, 0x82, 0x07, 0xFD, 0x07, 0xFE, 0x07, 0xDD, 0x03, 0x07, 0xFE, 0x81, 0x07, 0xFD, 0x07, 0xFE, 0x02, 0x07, 0xFD, 0x80, 0x07, 0xFE, 0x01, 0x07, 0xFD, 0x80, 0x07, 0xFE, 0x01, 0x07, 0xFD, 0x85, 0x07, 0xFE, 0x07, 0xDE, 0x07, 0xDD, 0x07, 0xDE, 0x07, 0xDD, 0x07, 0xBD, 0x03, 0x07, 0xDD, 0x01, 0x07, 0xBD, 0x96, 0x07, 0xBC, 0x0F, 0x9C, 0x17, 0x7C, 0x1F, 0x5C, 0x2F, 0x3C, 0x47, 0x3D, 0x4E, 0x7A, 0x55, 0xF9, 0x76, 0x1B, 0x7D, 0xBB, 0x85, 0x3B, 0x84, 0xBA, 0x8C, 0x9C, 0x8C, 0xBE, 0x73, 0xFD, 0x21, 0xF7, 0x22, 0x1A, 0x12, 0x1B, 0x0A, 0x1C, 0x01, 0xFD, 0x02, 0x1E, 0x01, 0xFE, 0x02, 0x1F, 0x01, 0x01, 0xFF, 0x03, 0x01, 0xDF, 0x03, 0x01, 0xBF, 0x80, 0x01, 0xBE, 0x01, 0x01, 0x9E, 0x95, 0x01, 0x7D, 0x11, 0x9D, 0x19, 0x7C, 0x31, 0x7B, 0x38, 0xD8, 0x92, 0x9D, 0xA2, 0x5A, 0xA1, 0xF8, 0xA1, 0xB6, 0xA2, 0x57, 0x9A, 0xB8, 0x7A, 0x98, 0x29, 0x33, 0x3B, 0x1A, 0x23, 0xBB, 0x14, 0x9C, 0x15, 0x5D, 0x0E, 0x1E, 0x16, 0xFF, 0x17, 0x7F, 0x0F, 0xBF, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x90, 0x0F, 0xDF, 0x07, 0xBF, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x7F, 0x2F, 0x1E, 0x46, 0xBE, 0x76, 0xBF, 0x8D, 0xBD, 0x5A, 0x72, 0x92, 0x53, 0xB2, 0x13, 0xB9, 0xB3, 0xC9, 0xB3, + 0xC9, 0x93, 0xD1, 0x93, 0xC9, 0x73, 0x01, 0xD1, 0x93, 0x01, 0xD1, 0xB3, 0x88, 0xC9, 0x93, 0xC9, 0xB3, 0xC1, 0xD3, 0xB9, 0xD3, 0xBA, 0x55, 0xA2, 0x56, 0x58, 0xAF, 0x61, 0x72, 0x49, 0x31, 0x01, 0x41, 0x51, 0x82, 0x41, 0x72, 0x39, 0x71, 0x39, 0x72, 0x01, 0x39, 0x71, 0x04, 0x31, 0x51, 0x83, 0x31, 0x50, 0x29, 0x50, 0x29, 0x30, 0x29, 0x50, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x03, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x03, 0x21, 0x31, 0x80, 0x19, 0x31, 0x03, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x8F, 0x21, 0x31, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB5, 0x19, 0xF7, 0x22, 0x37, 0x22, 0x17, 0x19, 0x95, 0x11, 0x54, 0x11, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x09, 0x29, 0x0F, 0x80, 0x29, 0x10, + 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x50, 0x02, 0x21, 0x30, 0x81, 0x21, 0x11, 0x19, 0x11, 0x02, 0x19, 0x32, 0x80, 0x11, 0x32, 0x01, 0x11, 0x33, 0x07, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, + 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x88, 0x11, 0x12, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x75, 0x01, 0x11, 0x53, 0x03, 0x11, 0x32, 0x01, 0x11, 0x53, 0x83, 0x11, 0x74, 0x11, 0x95, 0x11, 0x96, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x01, 0x11, 0xB6, 0x80, 0x11, 0x95, 0x04, 0x11, 0x54, 0x80, 0x11, 0x53, 0x02, 0x09, 0x54, 0x8A, 0x11, 0x95, 0x11, 0xD6, 0x19, 0xF7, 0x1A, 0x17, 0x19, 0xF7, 0x1A, 0x17, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x09, 0x12, 0x11, 0x12, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8A, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x10, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x12, 0x11, 0x54, 0x11, 0xD7, 0x09, 0xF8, 0x01, 0x09, 0xF9, 0x01, 0x01, 0xB9, 0x04, 0x01, 0xBA, 0x87, 0x09, 0xDA, 0x09, 0xF9, 0x09, 0xD9, 0x19, 0xF8, 0x11, 0x95, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x02, + 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x90, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x53, 0x11, 0x94, 0x19, 0xD6, 0x2A, 0x38, 0x22, 0x17, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x52, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x32, 0x11, 0x33, 0x09, 0x53, 0x11, 0x95, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xF6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x31, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x11, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x33, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x04, 0x19, 0x31, 0x01, 0x19, 0x11, 0x83, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x02, 0x21, 0xF7, 0x82, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x01, 0x11, 0x12, 0x05, 0x11, 0x32, 0x01, 0x11, 0x53, 0x81, 0x09, 0x12, 0x11, 0x32, 0x01, 0x11, 0x33, 0x01, 0x11, 0x53, 0x02, 0x09, 0x33, 0x8B, 0x09, 0x54, 0x09, 0x55, 0x09, 0x96, 0x09, 0xB7, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xF9, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xD9, 0x09, 0xD9, 0x01, + 0x11, 0xF9, 0x82, 0x19, 0xF8, 0x11, 0x55, 0x11, 0x33, 0x01, 0x19, 0x32, 0x83, 0x19, 0x31, 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x20, 0xEF, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x04, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x87, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x08, 0x29, 0x30, 0x05, 0x29, 0x50, 0x01, 0x31, 0x51, 0x80, 0x31, 0x31, 0x04, 0x31, 0x51, 0x01, 0x39, 0x51, 0x05, 0x39, 0x72, 0x01, 0x41, 0x92, 0x02, 0x41, 0x93, 0x81, 0x49, 0xB3, 0x49, 0xD4, 0x01, 0x49, 0xB4, 0x80, 0x51, 0xB4, 0x01, 0x51, 0xD4, 0x02, 0x59, 0xD4, 0x9B, 0x59, 0xF4, 0x61, 0xF4, 0x59, 0xB3, 0x61, 0xD4, 0x61, 0xD3, 0x61, 0xF3, 0x69, 0xF4, 0x69, 0xF3, 0x69, 0xD2, 0x69, 0xB2, 0x7A, 0x12, 0xA3, 0x77, + 0xBC, 0x7A, 0xB4, 0x79, 0xAC, 0x79, 0xAC, 0xFA, 0xA4, 0xFA, 0x63, 0x54, 0x4A, 0x91, 0x5A, 0xF3, 0x63, 0x14, 0x62, 0xF4, 0x5A, 0x51, 0x51, 0xD0, 0x72, 0x93, 0xAB, 0xF8, 0xCC, 0x9A, 0xCC, 0x38, 0x01, 0xD4, 0x38, 0x01, 0xD4, 0x18, 0x80, 0xD4, 0x17, 0x01, 0xD4, 0x18, 0x91, 0xD3, 0xF7, 0xD4, 0x17, 0xCC, 0x17, 0xCC, 0x18, 0xC4, 0x38, 0xBC, 0x58, 0x8B, 0x74, 0x83, 0xF5, 0x9D, 0x9B, 0x96, 0x1C, 0x86, 0x3C, 0x76, 0x7D, 0x5E, 0xBD, 0x4E, 0xFD, 0x37, 0x1E, 0x2F, 0x5E, 0x1F, 0x7E, 0x17, 0x9E, 0x01, 0x0F, 0xBF, 0x08, 0x07, 0xDF, 0x11, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x8B, 0x07, 0xBF, 0x0F, 0xBF, 0x17, 0x7E, 0x27, 0x5F, 0x3F, 0x3E, 0x56, 0xBD, 0x76, 0x3C, 0x7C, 0x57, 0x9B, 0xB5, 0xBB, 0xB6, 0xCB, 0x76, 0xD3, 0x55, 0x02, 0xDB, 0x35, 0x89, 0xD3, 0x75, 0xC3, 0x75, 0x92, 0xF3, 0x84, 0x37, 0x7E, 0x5D, 0x56, 0xFE, 0x37, 0x5F, 0x1F, 0x7F, 0x0F, 0x9E, 0x07, 0xBF, 0x03, 0x07, 0xDF, 0x0E, 0x07, 0xFF, 0x02, 0x07, 0xDE, 0x01, 0x07, 0xFE, 0x02, 0x07, 0xDE, 0x0A, 0x07, 0xFE, 0x80, 0x07, 0xDE, 0x10, 0x07, 0xFE, 0x08, 0x07, 0xDE, 0x01, 0x07, 0xDD, 0x02, 0x07, 0xBD, 0x91, 0x0F, 0x9D, 0x17, 0x7D, 0x1F, 0x5D, 0x2F, 0x3C, 0x47, 0x1C, 0x4E, 0x9B, 0x5E, 0x3B, 0x75, 0xFB, 0x7D, 0x7B, 0x85, 0x1B, 0x8C, 0xBB, 0x84, 0x7B, 0x94, 0xFF, 0x73, 0xFD, 0x29, 0xF7, 0x22, 0x1A, 0x12, 0x1B, 0x0A, 0x1C, 0x01, 0x02, 0x1E, 0x01, 0x01, 0xFE, 0x80, 0x01, 0xFF, 0x03, 0x01, 0xDF, 0x05, 0x01, 0xBF, 0x96, 0x01, 0x9E, 0x01, 0x7D, 0x09, 0x7D, 0x19, 0x7C, 0x29, 0x5B, 0x30, 0xB8, + 0x82, 0x3C, 0xAA, 0x9C, 0xAA, 0x39, 0xA1, 0xB6, 0xA2, 0x17, 0xA2, 0x98, 0x92, 0xD9, 0x41, 0x54, 0x32, 0x78, 0x23, 0x7A, 0x1C, 0x7C, 0x0D, 0x1D, 0x0D, 0xFE, 0x0E, 0x9E, 0x17, 0x7F, 0x17, 0xDF, 0x0F, 0xDF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x01, 0x0F, 0xBF, 0x88, 0x17, 0x9F, 0x27, 0x5F, 0x36, 0xFE, 0x5E, 0xDF, 0x86, 0x5F, 0x5B, 0x34, 0x8A, 0x73, 0xAA, 0x13, 0xB9, 0xF3, 0x01, 0xC9, 0xD3, 0x83, 0xC9, 0xB3, 0xC9, 0x93, 0xD1, 0x93, 0xC9, 0x73, 0x01, 0xD1, 0xB3, 0x01, 0xC9, 0xB3, 0x87, 0xC1, 0xD3, 0xB9, 0xD3, 0xB2, 0x14, 0xB2, 0x96, 0x69, 0x10, 0x61, 0x51, 0x51, 0x51, 0x49, 0x51, 0x01, 0x41, 0x71, 0x02, 0x39, 0x72, 0x81, 0x31, 0x51, 0x39, 0x51, 0x03, 0x31, 0x51, 0x80, 0x31, 0x50, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x0E, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x06, 0x21, 0x31, 0x83, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x19, 0x30, 0x04, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x92, 0x21, 0x31, 0x21, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB5, 0x22, 0x17, 0x22, 0x37, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, + 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x86, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x29, + 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x50, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x31, 0x02, 0x19, 0x31, 0x01, 0x19, 0x32, 0x81, 0x11, 0x12, 0x21, 0x50, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x19, 0x31, 0x01, 0x11, 0x32, 0x89, 0x11, 0x53, 0x19, 0x95, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x11, 0x53, 0x02, 0x11, 0x32, 0x81, 0x11, 0x53, 0x11, 0x54, 0x01, 0x11, 0x95, 0x8D, 0x11, 0xB6, 0x11, 0xD6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x95, 0x11, 0x75, 0x11, 0x54, 0x11, 0x53, 0x11, 0x33, 0x11, 0x53, 0x11, 0x33, 0x11, 0x53, 0x11, 0x32, 0x02, 0x11, 0x53, 0x01, 0x09, 0x54, 0x81, 0x11, 0x95, 0x11, 0xB6, 0x02, 0x19, 0xF7, 0x85, 0x19, 0xD6, 0x11, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x87, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, + 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x8B, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x21, 0x31, 0x19, 0x32, 0x10, 0xF2, 0x11, 0x33, 0x11, 0xB6, 0x11, 0xF8, 0x01, 0xD8, 0x09, 0xF9, 0x01, 0xB9, 0x05, 0x01, 0xBA, 0x87, 0x01, 0xDA, 0x01, 0xB9, 0x09, 0xF9, 0x11, 0xF8, 0x11, 0x96, 0x11, 0x12, 0x19, 0x31, 0x21, 0x11, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x84, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x02, 0x21, 0x31, 0x8D, 0x19, 0x11, 0x19, 0x31, 0x19, 0x52, 0x11, 0x12, 0x11, 0x32, 0x11, 0x54, 0x11, 0x95, 0x22, 0x17, 0x22, 0x37, 0x21, 0xF6, 0x11, 0x94, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x11, 0x08, 0x21, 0x10, 0x09, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x31, 0x01, 0x21, 0x11, 0x85, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x86, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x11, 0x04, 0x19, 0x31, 0x89, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x95, + 0x11, 0x54, 0x11, 0x12, 0x01, 0x11, 0x11, 0x80, 0x19, 0x11, 0x01, 0x11, 0x11, 0x04, 0x19, 0x31, 0x81, 0x11, 0x11, 0x19, 0x31, 0x01, 0x19, 0x11, 0x82, 0x19, 0x32, 0x11, 0x32, 0x11, 0x11, 0x01, 0x11, 0x32, 0x01, 0x11, 0x53, 0x84, 0x11, 0x74, 0x09, 0x75, 0x11, 0xB6, 0x09, 0xD7, 0x09, 0xF8, 0x01, 0x09, 0xF9, 0x03, 0x09, 0xD9, 0x86, 0x11, 0xF9, 0x22, 0x39, 0x21, 0xF8, 0x11, 0x54, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x05, 0x21, 0x30, 0x05, 0x29, 0x30, 0x05, 0x29, 0x50, 0x80, 0x29, 0x30, 0x04, 0x31, 0x51, 0x81, 0x39, 0x51, 0x31, 0x51, 0x01, 0x39, 0x71, 0x01, 0x39, 0x72, 0x81, 0x41, 0x72, 0x39, 0x72, 0x02, 0x41, 0x92, + 0x01, 0x41, 0x93, 0x80, 0x41, 0xB3, 0x01, 0x49, 0xB3, 0x81, 0x49, 0xB4, 0x49, 0xD4, 0x01, 0x51, 0xB4, 0x81, 0x59, 0xD4, 0x51, 0xD4, 0x03, 0x59, 0xD4, 0x81, 0x61, 0xF4, 0x59, 0xD3, 0x01, 0x61, 0xD3, 0x9A, 0x69, 0xF3, 0x72, 0x13, 0x61, 0x91, 0x71, 0xD2, 0x9B, 0x57, 0xBC, 0x5B, 0xBC, 0x9A, 0xAC, 0x58, 0xAC, 0xB9, 0xB5, 0x5B, 0x9C, 0xD9, 0x6B, 0xF5, 0x5B, 0xB4, 0x53, 0x94, 0x53, 0x74, 0x4B, 0x34, 0x53, 0x13, 0x5B, 0x14, 0x5A, 0xB3, 0x52, 0x11, 0x51, 0x8F, 0x7A, 0x92, 0xB3, 0xF8, 0xD4, 0x9A, 0xCC, 0x39, 0xD4, 0x38, 0xD4, 0x39, 0x02, 0xD4, 0x18, 0x80, 0xD3, 0xF8, 0x01, 0xD4, 0x18, 0x8E, 0xD3, 0xF7, 0xCB, 0xF8, 0xCC, 0x38, 0xC4, 0x79, 0x9B, 0xF6, 0x83, 0xD5, 0xA5, 0xBC, 0x8E, 0x1D, 0x7E, 0x5D, 0x66, 0x9D, 0x4E, 0xBD, 0x3F, 0x1E, 0x2F, 0x3E, 0x1F, 0x7E, 0x17, 0xBF, 0x01, 0x0F, 0xBF, 0x80, 0x07, 0xBF, 0x07, 0x07, 0xDF, 0x10, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x98, 0x07, 0xBF, 0x0F, 0x9F, 0x1F, 0x7F, 0x2F, 0x5F, 0x3F, 0x1E, 0x5E, 0xBE, 0x7D, 0xFC, 0x7C, 0x16, 0xA3, 0xD6, 0xBB, 0x96, 0xCB, 0x55, 0xD3, 0x35, 0xDB, 0x55, 0xDB, 0x35, 0xDB, 0x55, 0xD3, 0x55, 0xCB, 0x96, 0x92, 0xF3, 0x84, 0x16, 0x7E, 0x5D, 0x57, 0x1E, 0x37, 0x5F, 0x1F, 0x7F, 0x0F, 0x9F, 0x0F, 0xBF, 0x03, 0x07, 0xDF, 0x10, 0x07, 0xFF, 0x80, 0x07, 0xDE, 0x03, 0x07, 0xFE, 0x01, 0x07, 0xDE, 0x01, 0x07, 0xFE, 0x80, 0x07, 0xDE, 0x19, 0x07, 0xFE, 0x09, 0x07, 0xDE, 0x80, 0x07, 0xDD, 0x01, 0x07, 0xBD, 0x01, 0x0F, 0x9D, 0x96, 0x17, 0x7D, 0x27, 0x5D, 0x37, 0x3D, 0x47, 0x1D, 0x56, + 0x7B, 0x6E, 0x5C, 0x75, 0xDB, 0x7D, 0x5A, 0x8D, 0x3B, 0x8C, 0xBB, 0x94, 0x9C, 0x9D, 0x1F, 0x6B, 0xBD, 0x29, 0xD7, 0x1A, 0x1A, 0x12, 0x1C, 0x01, 0xFC, 0x01, 0xFD, 0x01, 0xFE, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xFF, 0x01, 0xDF, 0x04, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x97, 0x01, 0xBF, 0x01, 0x9E, 0x09, 0xBE, 0x09, 0x9D, 0x11, 0x5C, 0x29, 0xBD, 0x30, 0xD9, 0x69, 0xBB, 0xAA, 0xBC, 0xB2, 0x59, 0xA1, 0xB6, 0xA9, 0xF6, 0xA2, 0x37, 0xA2, 0xFA, 0x59, 0xB5, 0x29, 0xB5, 0x33, 0x7A, 0x1C, 0x5C, 0x15, 0x1D, 0x0D, 0xDE, 0x0E, 0x9F, 0x17, 0x5F, 0x17, 0xBF, 0x0F, 0xDF, 0x01, 0x07, 0xDF, 0x8F, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xBF, 0x0F, 0xBF, 0x17, 0x9F, 0x1F, 0x7F, 0x2F, 0x3F, 0x4E, 0xDF, 0x76, 0xBF, 0x74, 0x99, 0x7A, 0x73, 0xA2, 0x33, 0xB1, 0xF3, 0xC1, 0xD3, 0xC9, 0xB3, 0xC9, 0x93, 0x02, 0xD1, 0x93, 0x02, 0xD1, 0xB3, 0x01, 0xC9, 0xB3, 0x88, 0xC1, 0xD4, 0xB1, 0xF4, 0xB2, 0x76, 0x89, 0xB2, 0x61, 0x10, 0x59, 0x51, 0x49, 0x51, 0x41, 0x51, 0x41, 0x72, 0x02, 0x39, 0x72, 0x81, 0x39, 0x71, 0x39, 0x51, 0x02, 0x31, 0x51, 0x84, 0x31, 0x30, 0x31, 0x51, 0x31, 0x50, 0x29, 0x30, 0x31, 0x50, 0x06, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x11, 0x02, 0x21, 0x31, 0x80, + 0x19, 0x31, 0x04, 0x19, 0x32, 0x02, 0x19, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x19, 0x32, 0x8B, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x19, 0xF7, 0x22, 0x17, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x11, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, + 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x09, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x19, 0x10, 0x19, 0x30, 0x02, 0x19, 0x31, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x01, 0x11, 0x53, 0x86, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x96, 0x11, 0x75, 0x11, 0x54, 0x01, 0x11, 0x33, 0x03, 0x11, 0x32, 0x80, 0x11, 0x94, 0x01, 0x11, 0xB5, 0x84, 0x11, 0xB6, 0x11, 0xD6, 0x19, 0xD7, 0x11, 0xB6, 0x11, 0x95, 0x02, 0x11, 0x54, 0x80, 0x11, 0x53, 0x01, 0x19, 0x53, 0x01, 0x19, 0x52, 0x85, 0x19, 0x53, 0x19, 0x52, 0x19, 0x53, 0x11, 0x53, 0x11, 0x32, 0x11, 0x33, 0x01, 0x11, 0x54, 0x8A, 0x11, 0x75, 0x11, 0x95, 0x11, 0xD6, 0x19, 0xD7, 0x11, 0xB6, 0x19, 0xD7, 0x21, 0xF7, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, + 0x31, 0x80, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x51, 0x21, 0x32, 0x10, 0xF1, 0x09, 0x12, 0x11, 0xB6, 0x12, 0x18, 0x09, 0xF8, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0xFA, 0x02, 0x1B, 0x01, 0xFB, 0x01, 0xFA, 0x01, 0x01, 0xBA, 0x86, 0x01, 0xB9, 0x09, 0xF9, 0x12, 0x19, 0x19, 0xD7, 0x08, 0xF2, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8A, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x21, 0xD6, 0x21, 0xF7, 0x21, 0xD6, 0x21, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x10, 0xF1, 0x19, 0x11, 0x02, 0x19, 0x31, 0x8A, 0x21, 0x52, 0x19, 0x52, 0x11, 0x31, 0x11, 0x12, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xF6, 0x11, 0x95, 0x01, 0x11, 0x53, 0x02, 0x19, 0x32, 0x0D, 0x21, 0x31, 0x01, + 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x19, 0x10, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x0B, 0x21, 0x31, 0x82, 0x19, 0x11, 0x21, 0x31, 0x21, 0x32, 0x01, 0x19, 0x32, 0x8B, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x21, 0xD6, 0x21, 0xF7, 0x19, 0xD6, 0x21, 0xD7, 0x19, 0x75, 0x11, 0x53, 0x11, 0x32, 0x11, 0x12, 0x19, 0x32, 0x03, 0x19, 0x31, 0x95, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x30, 0x21, 0x31, 0x19, 0x30, 0x19, 0x31, 0x21, 0x31, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x19, 0x31, 0x19, 0x11, 0x02, 0x19, 0x31, 0x86, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x75, 0x09, 0x96, 0x11, 0xD7, 0x11, 0xD8, 0x01, 0x09, 0xD8, 0x88, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xB8, 0x11, 0xD7, 0x22, 0x18, 0x19, 0x96, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, + 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x29, 0x10, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x29, 0x30, 0x01, 0x29, 0x50, 0x80, 0x29, 0x30, 0x02, 0x29, 0x50, 0x80, 0x31, 0x30, 0x01, 0x31, 0x51, 0x80, 0x31, 0x31, 0x01, 0x31, 0x51, 0x01, 0x39, 0x71, 0x01, 0x39, 0x51, 0x01, 0x39, 0x72, 0x84, 0x41, 0x72, 0x39, 0x72, 0x39, 0x92, 0x41, 0x92, 0x39, 0x92, 0x01, 0x41, 0x93, 0x81, 0x41, 0xB3, 0x49, 0xB3, 0x02, 0x49, 0xB4, 0x01, 0x51, 0xB4, 0x82, 0x51, 0xB3, 0x51, 0xB4, 0x59, 0xD4, 0x01, 0x59, 0xB3, 0x02, 0x61, 0xD3, 0x9C, 0x69, 0xF3, 0x72, 0x13, 0x69, 0xB1, 0x8A, 0xD5, 0xC4, 0x9B, 0xC4, 0xBB, 0xB4, 0x39, 0xA4, 0x17, 0xAC, 0xF9, 0xAD, 0x3A, 0x94, 0xF9, 0x6C, 0x15, 0x74, 0xB7, 0x64, 0x77, 0x54, 0x36, 0x4B, 0xD5, 0x4B, 0x74, 0x4B, 0x54, 0x53, 0x34, 0x5B, 0x14, 0x5A, 0xD3, 0x5A, 0x92, 0x51, 0xD0, 0x49, 0x2E, 0x72, 0x32, 0xB3, 0xB8, 0xCC, 0x5A, 0xCC, 0x39, 0xCC, 0x18, 0x01, 0xD4, 0x18, 0x80, 0xD3, 0xF8, 0x01, 0xD3, 0xD7, 0x8E, 0xDC, 0x18, 0xD3, 0xF8, 0xCB, 0xF7, 0xCC, + 0x18, 0xBC, 0x38, 0xA4, 0x17, 0x73, 0x33, 0x95, 0x5B, 0x8E, 0x1D, 0x6E, 0x5D, 0x56, 0xBD, 0x46, 0xFE, 0x2F, 0x3E, 0x27, 0x5E, 0x17, 0x7E, 0x01, 0x0F, 0xBF, 0x07, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x0F, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x8B, 0x07, 0xBF, 0x0F, 0xBF, 0x17, 0x9F, 0x27, 0x7F, 0x2F, 0x3E, 0x46, 0xFE, 0x66, 0x9D, 0x7D, 0xDB, 0x84, 0x16, 0xAB, 0xB6, 0xC3, 0xB6, 0xCB, 0x35, 0x01, 0xDB, 0x56, 0x8B, 0xDB, 0x36, 0xDB, 0x55, 0xD3, 0x35, 0xBB, 0x55, 0x8A, 0xF2, 0x84, 0x77, 0x7E, 0x9D, 0x4E, 0xFD, 0x37, 0x5F, 0x1F, 0x7F, 0x0F, 0x9E, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x11, 0x07, 0xFF, 0x83, 0x07, 0xFE, 0x07, 0xFF, 0x07, 0xFE, 0x07, 0xFF, 0x01, 0x07, 0xDE, 0x82, 0x07, 0xFF, 0x07, 0xFE, 0x07, 0xFF, 0x03, 0x07, 0xFE, 0x01, 0x07, 0xFF, 0x10, 0x07, 0xFE, 0x80, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x81, 0x07, 0xDE, 0x07, 0xDF, 0x02, 0x07, 0xDE, 0x80, 0x07, 0xFE, 0x02, 0x07, 0xDE, 0x95, 0x07, 0xBE, 0x07, 0x9D, 0x0F, 0x9E, 0x17, 0x7E, 0x27, 0x7E, 0x37, 0x5D, 0x3E, 0xBC, 0x56, 0x7C, 0x76, 0x5C, 0x7D, 0xDB, 0x85, 0x5B, 0x8C, 0xFB, 0x8C, 0x9B, 0x94, 0x7C, 0xA5, 0x1F, 0x5A, 0xFA, 0x21, 0xF8, 0x19, 0xFA, 0x09, 0xFB, 0x01, 0xFD, 0x01, 0xBD, 0x01, 0xDE, 0x02, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x83, 0x01, 0xDF, 0x01, 0x9F, 0x01, 0xBF, 0x01, 0x9F, 0x01, 0x01, 0xBF, 0x01, 0x01, 0x9E, 0x86, 0x09, 0x9E, 0x11, 0x7D, 0x21, 0x7C, 0x28, 0xB9, 0x51, 0x39, 0xAA, 0x9C, 0xB2, 0x5A, 0x01, 0xA1, 0xB6, 0x8B, 0xA2, + 0x16, 0xA2, 0xB9, 0x72, 0x37, 0x31, 0x73, 0x2A, 0xF8, 0x2C, 0x7C, 0x14, 0xFD, 0x15, 0xDE, 0x0E, 0x7F, 0x17, 0x5F, 0x17, 0xBF, 0x0F, 0xBF, 0x02, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x8A, 0x0F, 0xBF, 0x1F, 0x9F, 0x27, 0x5F, 0x3E, 0xFE, 0x66, 0xBF, 0x85, 0xDD, 0x6A, 0xB3, 0x92, 0x33, 0xAA, 0x13, 0xB9, 0xD3, 0xC1, 0x92, 0x01, 0xC9, 0xB3, 0x03, 0xD1, 0x93, 0x80, 0xC9, 0x93, 0x01, 0xC9, 0xB3, 0x87, 0xC1, 0xB3, 0xB9, 0xD4, 0xBA, 0x55, 0xA2, 0x55, 0x58, 0xAF, 0x59, 0x11, 0x49, 0x31, 0x41, 0x51, 0x01, 0x41, 0x72, 0x01, 0x39, 0x72, 0x01, 0x39, 0x51, 0x04, 0x31, 0x51, 0x82, 0x31, 0x30, 0x29, 0x30, 0x31, 0x50, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x84, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x01, 0x19, 0x33, 0x01, 0x11, 0x33, 0x80, 0x19, 0x33, 0x01, 0x19, 0x32, 0x83, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8C, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x11, + 0x74, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x11, 0x21, 0x31, 0x05, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, + 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x50, 0x19, 0x30, 0x01, 0x21, 0x51, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x01, 0x11, 0x53, 0x84, 0x19, 0xB5, 0x19, 0xF6, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x01, 0x11, 0x54, 0x81, 0x11, 0x33, 0x19, 0x53, 0x03, 0x11, 0x32, 0x88, 0x11, 0x73, 0x11, 0x95, 0x11, 0xB5, 0x11, 0xD6, 0x19, 0xF7, 0x11, 0xD6, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x54, 0x01, 0x11, 0x53, 0x83, 0x11, 0x33, 0x19, 0x53, 0x19, 0x52, 0x19, 0x32, 0x02, 0x19, 0x52, 0x84, 0x19, 0x32, 0x19, 0x52, 0x19, 0x73, 0x19, 0x52, 0x11, 0x53, 0x01, 0x11, 0x33, 0x83, 0x11, 0x53, 0x11, 0x74, 0x11, 0x75, 0x11, 0xB6, 0x01, 0x19, 0xD7, 0x84, 0x22, 0x18, 0x22, 0x17, 0x11, 0x53, 0x11, 0x32, 0x11, 0x12, 0x02, 0x19, 0x31, 0x82, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x88, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x85, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, + 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x11, 0x11, 0x12, 0x11, 0xB5, 0x11, 0xF8, 0x09, 0xF8, 0x0A, 0x1A, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xFA, 0x0A, 0x1B, 0x02, 0x1B, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x8E, 0x01, 0xB9, 0x09, 0xF9, 0x1A, 0x19, 0x19, 0xB6, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x8F, 0x21, 0x31, 0x19, 0x51, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x75, 0x21, 0xD6, 0x21, 0xF7, 0x21, 0xD7, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x52, 0x21, 0x51, 0x01, 0x19, 0x51, 0x8A, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xF6, 0x11, 0xB5, 0x11, 0x53, 0x01, 0x11, 0x33, 0x02, 0x19, 0x32, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x16, 0x19, 0x31, 0x01, 0x19, 0x32, 0x03, 0x19, 0x31, 0x02, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x12, 0x01, 0x11, 0x33, 0x81, 0x11, 0x54, 0x19, 0xB6, 0x02, 0x21, 0xF7, 0x82, 0x11, 0x75, 0x11, 0x54, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x32, 0x8D, 0x11, 0x32, 0x09, 0x13, 0x11, 0x54, 0x19, 0xD6, 0x22, + 0x17, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x05, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x21, 0x10, 0x83, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x51, 0x93, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x75, 0x11, 0x95, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x04, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x85, 0x21, + 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x04, 0x29, 0x30, 0x04, 0x29, 0x50, 0x81, 0x31, 0x50, 0x31, 0x30, 0x04, 0x31, 0x51, 0x82, 0x39, 0x51, 0x31, 0x51, 0x39, 0x51, 0x04, 0x39, 0x72, 0x01, 0x39, 0x92, 0x02, 0x41, 0x93, 0x81, 0x49, 0xB3, 0x49, 0x93, 0x01, 0x49, 0xB3, 0x01, 0x51, 0xB4, 0x81, 0x51, 0x93, 0x51, 0xB3, 0x02, 0x59, 0xB3, 0x02, 0x61, 0xD3, 0x8C, 0x69, 0xF3, 0x69, 0xB1, 0x82, 0x74, 0xB4, 0x19, 0xC4, 0x9B, 0xBC, 0x79, 0xAC, 0x38, 0xAC, 0x78, 0xAC, 0xFA, 0xA5, 0x5A, 0x84, 0xB7, 0x6C, 0x76, 0x64, 0x76, 0x01, 0x54, 0x76, 0x91, 0x4C, 0x56, 0x4C, 0x35, 0x4B, 0xF5, 0x43, 0x94, 0x4B, 0x53, 0x53, 0x54, 0x53, 0x14, 0x5A, 0xD3, 0x5A, 0x72, 0x5A, 0x32, 0x59, 0xF1, 0x61, 0xB0, 0x7A, 0x32, 0xAB, 0x97, 0xCC, 0x5A, 0xC4, 0x18, 0xCC, 0x19, 0xD4, 0x19, 0x03, 0xD3, 0xF8, 0x8E, 0xD4, 0x18, 0xD4, 0x17, 0xCC, 0x17, 0xBC, 0x38, 0xA3, 0xF7, 0x6B, 0x13, 0x95, 0x5B, 0x86, 0x3D, 0x66, 0x5D, 0x4E, 0xBD, 0x3F, 0x1E, 0x2F, 0x3E, 0x1F, 0x7E, 0x17, 0x9F, 0x0F, 0xBF, 0x04, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x0A, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x98, 0x0F, 0xBF, 0x1F, 0x9F, 0x27, 0x5E, 0x37, 0x3E, 0x4E, 0xDE, 0x76, 0x7D, 0x7D, 0x39, 0x8B, 0xF6, 0xAB, 0xB6, 0xC3, 0x96, 0xD3, 0x55, 0xDB, 0x56, 0xDB, 0x36, 0xDB, 0x35, 0xDB, 0x55, 0xD3, 0x76, 0xC3, 0x75, 0x93, 0x13, 0x84, 0x97, 0x76, 0x7D, 0x4F, 0x1E, + 0x2F, 0x5E, 0x1F, 0x7F, 0x0F, 0x9F, 0x07, 0xBF, 0x04, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x07, 0xDF, 0x0A, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x07, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x0B, 0x07, 0xFF, 0x84, 0x07, 0xDE, 0x07, 0xFF, 0x07, 0xFE, 0x07, 0xFF, 0x07, 0xFE, 0x09, 0x07, 0xFF, 0x07, 0x07, 0xDF, 0x83, 0x07, 0xDE, 0x07, 0xFF, 0x07, 0xDE, 0x07, 0xFE, 0x01, 0x07, 0xDE, 0x01, 0x07, 0xBE, 0x01, 0x0F, 0x9E, 0x93, 0x17, 0x7E, 0x27, 0x7E, 0x37, 0x5E, 0x46, 0xDD, 0x5E, 0x7C, 0x76, 0x3C, 0x7D, 0x9B, 0x85, 0x1A, 0x94, 0xDB, 0x94, 0x7B, 0xA4, 0xBD, 0xA4, 0xFF, 0x42, 0x58, 0x21, 0xD8, 0x19, 0xFB, 0x11, 0xFC, 0x01, 0xDD, 0x01, 0xBD, 0x01, 0xDE, 0x01, 0xDF, 0x04, 0x01, 0xBF, 0x80, 0x01, 0x9F, 0x02, 0x01, 0xBF, 0x96, 0x01, 0xDF, 0x01, 0x7E, 0x09, 0x9E, 0x09, 0x7D, 0x19, 0x7D, 0x28, 0xFA, 0x48, 0xD8, 0xA2, 0x7C, 0xBA, 0x9B, 0xA9, 0xD7, 0xA1, 0xB5, 0xA1, 0xF6, 0xA2, 0x98, 0x8A, 0x98, 0x39, 0x72, 0x2A, 0xB7, 0x2C, 0x5C, 0x1C, 0xFD, 0x0D, 0x7D, 0x0E, 0x5E, 0x17, 0x3F, 0x17, 0xBF, 0x0F, 0xBF, 0x04, 0x07, 0xDF, 0x8D, 0x07, 0xBF, 0x0F, 0xBF, 0x17, 0x9F, 0x27, 0x5F, 0x37, 0x1E, 0x56, 0xDF, 0x86, 0x5F, 0x73, 0x76, 0x7A, 0x12, 0xAA, 0x54, 0xBA, 0x13, 0xB9, 0xB2, 0xC9, 0xD3, 0xD1, 0xD3, 0x01, 0xC9, 0x93, 0x02, 0xD1, 0x93, 0x89, 0xC9, 0x73, 0xC9, 0xB3, 0xC9, 0xD4, 0xC1, 0xD4, 0xB1, 0xF4, 0xBA, 0xB7, 0x68, 0xF0, 0x59, 0x11, 0x49, 0x31, 0x49, 0x51, 0x01, 0x41, 0x72, 0x80, 0x41, 0x92, 0x02, 0x39, 0x71, 0x80, 0x31, 0x71, 0x03, 0x31, 0x51, 0x01, 0x31, 0x30, + 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x08, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x11, 0x01, 0x19, 0x11, 0x80, 0x11, 0x12, 0x01, 0x11, 0x33, 0x82, 0x11, 0x54, 0x11, 0x75, 0x19, 0x95, 0x01, 0x11, 0x75, 0x80, 0x11, 0x54, 0x01, 0x11, 0x33, 0x83, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x11, 0x19, 0x11, 0x01, 0x19, 0x32, 0x86, 0x19, 0x53, 0x11, 0x54, 0x19, 0x95, 0x22, 0x17, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0x95, 0x01, 0x11, 0x33, 0x82, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x30, 0x8A, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x83, 0x21, 0x10, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x06, 0x19, 0x32, 0x80, 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, + 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x0B, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x21, 0x30, 0x83, 0x21, 0x50, 0x21, 0x30, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x19, 0x31, 0x88, 0x19, 0x53, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x19, 0xF6, 0x22, 0x17, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x54, 0x01, 0x11, 0x33, 0x82, 0x19, 0x33, 0x19, 0x32, 0x11, 0x12, 0x01, 0x11, 0x11, 0x89, 0x11, 0x33, 0x11, 0x74, 0x11, 0xB5, 0x11, 0xB6, 0x11, 0xD6, 0x11, 0xB6, 0x19, 0xD7, 0x11, 0x96, 0x19, 0x74, 0x11, + 0x33, 0x01, 0x11, 0x32, 0x81, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x31, 0x81, 0x11, 0x11, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x52, 0x80, 0x19, 0x53, 0x03, 0x11, 0x33, 0x88, 0x11, 0x75, 0x11, 0x95, 0x19, 0xB6, 0x22, 0x18, 0x22, 0x17, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x05, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x95, 0x1A, 0x18, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x87, 0x01, 0xD9, 0x11, 0xF9, 0x1A, 0x18, 0x11, 0x95, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x88, 0x21, 0x30, + 0x21, 0x51, 0x21, 0x72, 0x19, 0x32, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x21, 0xD7, 0x01, 0x21, 0xF7, 0x84, 0x19, 0xB5, 0x11, 0x74, 0x09, 0x12, 0x11, 0x32, 0x19, 0x52, 0x03, 0x19, 0x31, 0x82, 0x19, 0x51, 0x19, 0x32, 0x11, 0x32, 0x01, 0x11, 0x53, 0x8A, 0x19, 0xB5, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x54, 0x09, 0x13, 0x11, 0x33, 0x11, 0x12, 0x11, 0x32, 0x11, 0x12, 0x06, 0x19, 0x32, 0x01, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x11, 0x32, 0x01, 0x19, 0x32, 0x81, 0x11, 0x31, 0x11, 0x32, 0x02, 0x19, 0x32, 0x80, 0x11, 0x32, 0x07, 0x19, 0x32, 0x02, 0x19, 0x12, 0x80, 0x11, 0x12, 0x01, 0x19, 0x32, 0x04, 0x11, 0x12, 0x01, 0x11, 0x33, 0x82, 0x11, 0x13, 0x11, 0x34, 0x11, 0x75, 0x01, 0x19, 0xD7, 0x83, 0x19, 0xD6, 0x19, 0x75, 0x11, 0x13, 0x11, 0x32, 0x02, 0x19, 0x32, 0x80, 0x19, 0x52, 0x01, 0x19, 0x11, 0x81, 0x21, 0x52, 0x19, 0x52, 0x01, 0x11, 0x12, 0x81, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x86, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x06, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8E, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x11, 0x96, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, + 0x0F, 0x85, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x09, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0B, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x21, 0x30, 0x05, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x50, 0x84, 0x29, 0x30, 0x29, 0x50, 0x29, 0x30, 0x29, 0x50, 0x29, 0x30, 0x06, 0x31, 0x51, 0x83, 0x39, 0x71, 0x39, 0x51, 0x39, 0x72, 0x39, 0x51, 0x02, 0x39, 0x72, 0x80, 0x39, 0x92, 0x02, 0x41, 0x93, 0x80, 0x41, 0xB3, 0x01, 0x49, 0xB3, 0x01, 0x49, 0x93, 0x02, 0x51, 0xB3, 0x02, 0x59, 0xB3, 0xA5, 0x61, 0xD3, 0x61, 0xB2, 0x69, 0xB2, 0x69, 0xB1, 0x79, 0xF2, 0xAB, 0x97, 0xD4, 0xDC, 0xC4, 0x7A, 0xB4, 0x38, 0xB4, 0x99, 0xB4, 0xF9, 0xAD, 0x3A, 0x94, 0xD8, 0x7C, 0xB7, 0x6C, 0xD7, 0x6D, 0x18, 0x5C, 0xD7, 0x4C, 0x95, 0x4C, 0x96, 0x4C, 0x76, 0x44, 0x55, 0x44, 0x35, 0x54, 0x36, 0x4B, 0xB4, 0x4B, 0x53, 0x53, 0x34, 0x53, 0x14, 0x5A, 0xD3, 0x62, 0xB3, 0x5A, 0x52, 0x5A, 0x11, 0x62, 0x12, 0x61, 0xB0, 0x82, 0x93, 0xAB, 0xB7, 0xC4, 0x3A, + 0xCC, 0x19, 0xCB, 0xF8, 0x01, 0xD3, 0xD8, 0x80, 0xD3, 0xD7, 0x01, 0xD3, 0xF7, 0x8B, 0xD4, 0x17, 0xCC, 0x18, 0xC4, 0x58, 0xAC, 0x58, 0x73, 0x54, 0x9D, 0x9C, 0x86, 0x1D, 0x66, 0x9D, 0x56, 0xFE, 0x3F, 0x3E, 0x27, 0x7E, 0x17, 0x9F, 0x01, 0x0F, 0xBF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x08, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x8B, 0x07, 0xBF, 0x0F, 0x9F, 0x1F, 0x9F, 0x2F, 0x7F, 0x47, 0x1E, 0x5E, 0xBE, 0x7E, 0x1C, 0x7C, 0x98, 0x93, 0xF6, 0xBB, 0xD6, 0xC3, 0x55, 0xD3, 0x56, 0x02, 0xDB, 0x35, 0x8A, 0xD3, 0x35, 0xD3, 0x76, 0xB3, 0x34, 0x82, 0xF2, 0x84, 0x77, 0x76, 0x9D, 0x4F, 0x3E, 0x2F, 0x3E, 0x17, 0x7F, 0x0F, 0xBF, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x82, 0x07, 0xDF, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x08, 0x07, 0xFF, 0x82, 0x07, 0xDF, 0x07, 0xFF, 0x07, 0xFE, 0x07, 0x07, 0xFF, 0x08, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0x07, 0xDE, 0x94, 0x07, 0xBE, 0x07, 0xBF, 0x0F, 0xBE, 0x0F, 0x9E, 0x17, 0x9E, 0x27, 0x7E, 0x3F, 0x3E, 0x46, 0xBC, 0x5E, 0x7C, 0x7E, 0x3C, 0x85, 0x9B, 0x8C, 0xFA, 0x94, 0xBA, 0x9C, 0x9B, 0xA4, 0xBE, 0x94, 0x7E, 0x39, 0xF7, 0x19, 0xB8, 0x19, 0xDB, 0x11, 0xFC, 0x09, 0xDD, 0x02, 0x01, 0xBE, 0x08, 0x01, 0xBF, 0x95, 0x01, 0x9F, 0x01, 0x7E, 0x09, 0x9E, 0x19, 0x5D, 0x29, 0x3B, + 0x40, 0xB8, 0x89, 0xDA, 0xB2, 0x7B, 0xA9, 0xD7, 0xA9, 0xB5, 0xA9, 0xD5, 0xAA, 0x77, 0x9A, 0xD8, 0x49, 0xD3, 0x22, 0x34, 0x34, 0x5C, 0x1C, 0xFD, 0x15, 0x9E, 0x0E, 0x3E, 0x17, 0x3F, 0x0F, 0x7F, 0x0F, 0xBF, 0x01, 0x07, 0xDF, 0x81, 0x07, 0xBF, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x8D, 0x0F, 0xBF, 0x17, 0xBF, 0x1F, 0x7F, 0x2F, 0x3E, 0x46, 0xBE, 0x76, 0x7F, 0x7C, 0x79, 0x6A, 0x32, 0x9A, 0x53, 0xA9, 0xF3, 0xB1, 0xB2, 0xC1, 0xD3, 0xC9, 0xD3, 0xC9, 0xB3, 0x01, 0xD1, 0xB3, 0x8B, 0xC9, 0x73, 0xD1, 0x93, 0xC9, 0x73, 0xC9, 0x93, 0xC1, 0xB3, 0xC1, 0xD4, 0xB9, 0xD4, 0xBA, 0x55, 0x89, 0x72, 0x58, 0xD0, 0x51, 0x31, 0x49, 0x51, 0x01, 0x41, 0x72, 0x81, 0x39, 0x72, 0x39, 0x92, 0x02, 0x39, 0x71, 0x04, 0x31, 0x51, 0x01, 0x31, 0x31, 0x80, 0x31, 0x50, 0x08, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x8B, 0x29, 0x30, 0x21, 0x30, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB7, 0x11, 0xD7, 0x19, 0xF8, 0x1A, 0x19, 0x1A, 0x39, 0x01, 0x1A, 0x18, 0x84, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x11, 0x10, 0x21, 0x30, 0x81, 0x29, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x85, 0x21, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x53, 0x11, 0x54, 0x19, + 0xB5, 0x01, 0x22, 0x17, 0x86, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x54, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x11, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x19, 0x53, 0x01, 0x11, 0x33, 0x02, 0x11, 0x53, 0x84, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, + 0x30, 0x02, 0x21, 0x30, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8F, 0x21, 0x10, 0x21, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x75, 0x19, 0xF6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x01, 0x19, 0x12, 0x85, 0x19, 0x11, 0x11, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x01, 0x19, 0xD7, 0x85, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x11, 0x12, 0x01, 0x11, 0x11, 0x82, 0x19, 0x11, 0x11, 0x31, 0x11, 0x11, 0x01, 0x19, 0x31, 0x01, 0x11, 0x11, 0x82, 0x19, 0x31, 0x11, 0x31, 0x19, 0x31, 0x02, 0x19, 0x52, 0x01, 0x11, 0x32, 0x01, 0x11, 0x33, 0x82, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x01, 0x21, 0xF7, 0x84, 0x11, 0x94, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, + 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x87, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x74, 0x19, 0xF7, 0x11, 0xF8, 0x01, 0xB8, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x89, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xB9, 0x09, 0xD8, 0x12, 0x19, 0x1A, 0x18, 0x11, 0x74, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x12, 0x8A, 0x19, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x8F, 0x19, 0x51, 0x21, 0x52, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB5, 0x19, 0xF7, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x75, 0x09, 0x54, 0x11, 0x54, 0x09, 0x33, 0x11, 0x53, 0x04, 0x11, 0x33, 0x81, 0x11, 0x53, 0x11, 0x32, 0x04, 0x11, 0x33, 0x81, 0x11, 0x32, 0x11, 0x33, 0x06, 0x11, 0x32, 0x02, 0x11, 0x33, 0x03, 0x11, 0x32, 0x80, 0x11, 0x52, 0x01, 0x11, 0x32, 0x83, 0x11, 0x33, 0x11, 0x32, 0x11, 0x33, 0x11, 0x32, 0x03, 0x11, 0x33, 0x80, 0x11, 0x13, 0x02, 0x11, 0x33, 0x82, 0x11, 0x34, 0x19, 0x95, 0x21, 0xF7, 0x01, 0x19, 0xD6, 0x82, 0x19, 0x75, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x32, 0x02, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x32, 0x83, 0x11, 0x12, 0x11, 0x13, 0x11, + 0x54, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x84, 0x19, 0xF6, 0x11, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x11, 0x32, 0x04, 0x11, 0x53, 0x80, 0x11, 0x32, 0x02, 0x19, 0x31, 0x80, 0x19, 0x30, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x0C, 0x21, 0x10, 0x80, 0x29, 0x30, 0x07, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0B, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x0C, 0x29, 0x30, 0x80, 0x29, 0x10, 0x06, 0x29, 0x30, 0x81, 0x29, 0x50, 0x29, 0x30, 0x01, 0x29, 0x50, 0x01, 0x31, 0x50, 0x05, 0x31, 0x51, 0x01, 0x39, 0x71, 0x80, 0x39, 0x51, 0x04, 0x39, 0x72, 0x03, 0x41, 0x93, 0x83, 0x49, 0xB3, 0x49, 0x93, 0x51, 0x93, 0x51, 0xB3, 0x01, 0x51, 0x93, 0x91, 0x59, 0xB3, 0x59, 0xB2, 0x61, 0xB2, 0x69, 0xD2, 0x61, 0x91, 0x61, 0x2F, 0x9A, 0xD5, 0xCC, 0x7B, 0xCC, 0x9A, 0xC4, 0x59, + 0xBC, 0x79, 0xBC, 0xB9, 0xB4, 0xF9, 0xAD, 0x39, 0x94, 0xF8, 0x7C, 0xB7, 0x6C, 0xF7, 0x5C, 0xF6, 0x01, 0x55, 0x17, 0x80, 0x4C, 0xF7, 0x01, 0x44, 0xB6, 0x92, 0x44, 0x96, 0x4C, 0x76, 0x4C, 0x35, 0x54, 0x15, 0x53, 0xB4, 0x4B, 0x33, 0x52, 0xF3, 0x5A, 0xF4, 0x62, 0xF4, 0x52, 0x72, 0x5A, 0x52, 0x62, 0x52, 0x62, 0x32, 0x61, 0xF1, 0x59, 0x6F, 0x7A, 0x52, 0xB3, 0xB8, 0xCC, 0x19, 0xCB, 0xF8, 0x01, 0xD3, 0xF8, 0x01, 0xD3, 0xD7, 0x8E, 0xD3, 0xF7, 0xD4, 0x18, 0xC4, 0x17, 0xC4, 0x38, 0xA4, 0x17, 0x83, 0xD5, 0x95, 0x9B, 0x7E, 0x3D, 0x66, 0xBD, 0x4E, 0xFD, 0x37, 0x5E, 0x1F, 0x7E, 0x17, 0xBF, 0x0F, 0xBF, 0x0F, 0xDF, 0x0B, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x07, 0xDF, 0x06, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x8B, 0x07, 0xBF, 0x0F, 0xBF, 0x17, 0xBF, 0x1F, 0x7F, 0x37, 0x3F, 0x4E, 0xFE, 0x6E, 0x9D, 0x85, 0xDC, 0x7C, 0x36, 0xA3, 0xD6, 0xBB, 0xB6, 0xCB, 0x55, 0x01, 0xD3, 0x35, 0x8B, 0xDB, 0x15, 0xDB, 0x35, 0xD3, 0x35, 0xD3, 0x96, 0xB3, 0x54, 0x83, 0x12, 0x84, 0xF9, 0x6E, 0x9D, 0x47, 0x1E, 0x2F, 0x5E, 0x17, 0x7F, 0x0F, 0x9F, 0x01, 0x07, 0xBF, 0x09, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x07, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x0C, 0x07, 0xDF, 0x81, 0x07, 0xDE, 0x07, 0xDF, 0x02, 0x07, 0xDE, 0x80, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x95, 0x0F, 0xBF, 0x0F, + 0x9E, 0x17, 0x7E, 0x2F, 0x7F, 0x3F, 0x3E, 0x4E, 0xBC, 0x66, 0x5C, 0x7D, 0xFC, 0x85, 0x5A, 0x8C, 0xDA, 0x94, 0x9A, 0x9C, 0x7B, 0xA4, 0xDE, 0x8C, 0x3E, 0x21, 0x75, 0x21, 0xD9, 0x19, 0xDB, 0x09, 0xDD, 0x01, 0xBD, 0x01, 0xBE, 0x01, 0xDE, 0x01, 0xDF, 0x06, 0x01, 0xBF, 0x96, 0x01, 0x9F, 0x01, 0x7E, 0x01, 0x9E, 0x09, 0x9E, 0x11, 0x5D, 0x29, 0x5C, 0x30, 0x98, 0x81, 0x9A, 0xB2, 0x7B, 0xA9, 0xD8, 0xA9, 0xD6, 0xA9, 0xD5, 0xA2, 0x15, 0xA2, 0xF8, 0x62, 0x55, 0x21, 0xF3, 0x3C, 0x1B, 0x24, 0xDD, 0x1D, 0xBE, 0x16, 0x5F, 0x17, 0x1F, 0x17, 0x9F, 0x0F, 0xBF, 0x05, 0x07, 0xDF, 0x8C, 0x07, 0xBF, 0x0F, 0xBF, 0x1F, 0xBF, 0x27, 0x3F, 0x3E, 0xBE, 0x6E, 0x9F, 0x85, 0x7C, 0x62, 0xB3, 0x92, 0x94, 0x99, 0xD2, 0xB1, 0xD2, 0xC1, 0xD3, 0xC9, 0xB3, 0x01, 0xD1, 0xB3, 0x81, 0xC9, 0x73, 0xD1, 0x93, 0x01, 0xC9, 0x73, 0x90, 0xC9, 0x93, 0xC9, 0xB4, 0xC1, 0xB4, 0xB9, 0xD4, 0xB1, 0xF5, 0xA2, 0x15, 0x68, 0xD0, 0x59, 0x31, 0x49, 0x51, 0x49, 0x72, 0x41, 0x72, 0x39, 0x72, 0x39, 0x92, 0x39, 0x51, 0x39, 0x71, 0x39, 0x51, 0x39, 0x71, 0x04, 0x31, 0x51, 0x80, 0x31, 0x31, 0x05, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x75, 0x19, 0xD7, 0x19, 0xF8, 0x1A, 0x39, 0x01, 0x11, 0xF9, 0x80, 0x09, 0xD9, + 0x01, 0x09, 0xF9, 0x85, 0x12, 0x19, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x53, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x09, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x54, 0x19, 0x53, 0x01, 0x19, 0x32, 0x83, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x19, 0x52, 0x19, 0x73, 0x19, 0x74, 0x11, 0x74, 0x02, 0x11, 0x95, 0x87, 0x11, 0xB5, 0x11, 0x95, 0x11, 0x74, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, + 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x05, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x09, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x04, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x19, 0x53, 0x01, 0x11, 0x54, 0x89, 0x19, 0xF6, 0x22, 0x38, 0x19, 0xD6, 0x11, 0x95, 0x19, 0x94, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x11, 0x89, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x09, 0x54, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x95, 0x11, 0x74, 0x11, 0x53, 0x01, 0x11, 0x32, 0x01, 0x11, 0x11, 0x81, 0x19, 0x32, 0x19, 0x31, 0x02, 0x11, 0x31, 0x01, 0x11, 0x11, 0x81, 0x11, 0x32, 0x11, 0x11, 0x01, 0x11, 0x32, 0x02, 0x19, 0x52, 0x80, 0x19, 0x32, 0x01, 0x11, 0x12, 0x8A, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xB6, 0x22, 0x17, 0x22, 0x38, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, + 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x87, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x12, 0x18, 0x09, 0xF8, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xD9, 0x86, 0x01, 0xB8, 0x11, 0xF8, 0x1A, 0x18, 0x21, 0xF7, 0x11, 0x53, 0x19, 0x12, 0x19, 0x11, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x19, 0x12, 0x82, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x01, 0x19, 0xD6, 0x85, 0x19, 0xF6, 0x21, 0xF6, 0x11, 0x74, 0x09, 0x12, 0x11, 0x12, 0x19, 0x11, 0x01, 0x19, 0x31, 0x83, 0x21, 0x51, 0x21, 0x52, 0x19, 0x52, 0x19, 0x11, 0x01, 0x11, 0x32, 0x85, 0x11, 0x54, 0x11, 0x95, 0x19, 0xF7, 0x1A, 0x17, 0x19, 0xF7, 0x11, 0xB6, 0x01, 0x11, 0x95, 0x81, 0x11, 0x94, 0x19, 0x94, 0x04, 0x19, 0x74, 0x82, 0x19, 0x94, 0x19, 0x74, 0x11, 0x74, 0x04, 0x19, 0x74, 0x80, 0x19, 0x94, 0x08, 0x19, 0x74, 0x81, 0x11, + 0x74, 0x19, 0x94, 0x01, 0x19, 0x74, 0x80, 0x11, 0x74, 0x01, 0x19, 0x74, 0x80, 0x19, 0x54, 0x03, 0x19, 0x74, 0x01, 0x11, 0x74, 0x02, 0x19, 0x75, 0x89, 0x19, 0x95, 0x19, 0xB6, 0x21, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x02, 0x19, 0x31, 0x02, 0x19, 0x11, 0x84, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD7, 0x01, 0x22, 0x17, 0x84, 0x19, 0xD6, 0x11, 0x74, 0x09, 0x33, 0x11, 0x12, 0x11, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x30, 0x19, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x04, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x19, 0x31, 0x03, 0x19, 0x32, 0x81, 0x19, 0x52, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x20, 0xEF, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x0E, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x0B, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x11, 0x29, 0x30, 0x05, 0x29, 0x50, 0x01, 0x31, 0x50, 0x02, 0x31, 0x51, 0x80, 0x31, 0x71, 0x01, + 0x39, 0x71, 0x81, 0x39, 0x72, 0x39, 0x71, 0x03, 0x39, 0x72, 0x81, 0x39, 0x92, 0x41, 0x93, 0x01, 0x41, 0xB3, 0x01, 0x41, 0x93, 0x01, 0x49, 0x93, 0x02, 0x51, 0x93, 0x01, 0x59, 0x92, 0xAA, 0x61, 0x92, 0x61, 0x91, 0x61, 0x70, 0x82, 0x53, 0xC4, 0x3A, 0xE4, 0xFC, 0xCC, 0x7A, 0xCC, 0x99, 0xC4, 0x79, 0xBC, 0xB9, 0xB4, 0xF9, 0xA4, 0xF8, 0x84, 0xB7, 0x7C, 0xF7, 0x6C, 0xF7, 0x65, 0x17, 0x55, 0x16, 0x55, 0x37, 0x4D, 0x16, 0x55, 0x37, 0x4D, 0x17, 0x4C, 0xF6, 0x44, 0x96, 0x44, 0x75, 0x4C, 0x56, 0x4B, 0xF5, 0x53, 0xD5, 0x53, 0x95, 0x5B, 0x54, 0x52, 0xF3, 0x52, 0xB3, 0x5A, 0xD3, 0x62, 0xB3, 0x5A, 0x52, 0x5A, 0x32, 0x62, 0x52, 0x6A, 0x52, 0x61, 0xF1, 0x59, 0x6F, 0x82, 0x53, 0xB3, 0x97, 0xCC, 0x19, 0xCB, 0xF8, 0x02, 0xCB, 0xD7, 0x01, 0xCB, 0xF7, 0x89, 0xCC, 0x37, 0xC4, 0x58, 0x9B, 0xB6, 0x73, 0x95, 0x8D, 0x9B, 0x76, 0x3C, 0x5E, 0xBD, 0x3E, 0xFD, 0x27, 0x5E, 0x17, 0x9E, 0x01, 0x0F, 0xBF, 0x0A, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x8C, 0x0F, 0xDF, 0x0F, 0x9F, 0x17, 0x7F, 0x27, 0x5F, 0x3F, 0x1F, 0x56, 0x9D, 0x76, 0x3C, 0x8D, 0x5A, 0x83, 0xD5, 0xB4, 0x17, 0xBB, 0x96, 0xCB, 0x76, 0xD3, 0x36, 0x02, 0xDB, 0x35, 0x89, 0xD3, 0x55, 0xD3, 0x96, 0xB3, 0x54, 0x7B, 0x12, 0x85, 0x19, 0x6E, 0xDE, 0x47, 0x3E, 0x27, 0x7F, 0x17, 0xBF, 0x0F, 0xBF, 0x02, 0x07, 0xBF, 0x0E, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x81, 0x07, 0xDF, 0x07, 0xBF, 0x0C, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x03, + 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x11, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xDE, 0x80, 0x07, 0xBE, 0x01, 0x07, 0xDF, 0x81, 0x07, 0xBF, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x94, 0x0F, 0xBF, 0x17, 0x9F, 0x1F, 0x7E, 0x2F, 0x5E, 0x3E, 0xFD, 0x56, 0x7C, 0x6E, 0x5C, 0x85, 0xDB, 0x8D, 0x5A, 0x8C, 0xB9, 0x94, 0x7A, 0xA4, 0xBC, 0xB5, 0x1F, 0x8B, 0xFE, 0x29, 0x76, 0x21, 0xBA, 0x11, 0xDC, 0x09, 0x9C, 0x01, 0xBD, 0x01, 0x9D, 0x01, 0xBE, 0x02, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x80, 0x01, 0xBF, 0x02, 0x01, 0x9F, 0x94, 0x01, 0x7E, 0x09, 0x9E, 0x11, 0x9D, 0x29, 0x7C, 0x38, 0xF9, 0x71, 0x99, 0xB2, 0x9C, 0xA9, 0xF8, 0xA9, 0xD6, 0xA9, 0xB5, 0xA1, 0xF4, 0xA2, 0xD8, 0x72, 0x75, 0x29, 0xD3, 0x2B, 0x59, 0x24, 0x9C, 0x15, 0x7E, 0x16, 0x5E, 0x17, 0x3F, 0x17, 0x9F, 0x0F, 0xBF, 0x05, 0x07, 0xDF, 0x8C, 0x07, 0xBF, 0x0F, 0xBF, 0x17, 0x9F, 0x27, 0x7F, 0x36, 0xFE, 0x56, 0x9E, 0x7D, 0xDD, 0x63, 0x34, 0x82, 0xB4, 0x9A, 0x13, 0xA9, 0xD2, 0xC1, 0xF3, 0xC1, 0xB2, 0x01, 0xC9, 0x93, 0x02, 0xD1, 0x93, 0x8C, 0xC9, 0x52, 0xC9, 0x93, 0xD1, 0xD4, 0xC9, 0xD4, 0xC1, 0xD4, 0xB9, 0xF4, 0xBA, 0x76, 0x71, 0x10, 0x59, 0x10, 0x49, 0x31, 0x49, 0x51, 0x41, 0x72, 0x41, 0x92, 0x01, 0x39, 0x71, 0x01, 0x39, 0x51, 0x02, 0x31, 0x71, 0x02, 0x31, 0x51, 0x81, 0x31, 0x50, 0x29, 0x50, 0x09, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, + 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x8B, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD8, 0x11, 0xF9, 0x12, 0x1A, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x87, 0x09, 0xF9, 0x12, 0x19, 0x11, 0xF8, 0x09, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x21, 0x51, 0x02, 0x21, 0x30, 0x09, 0x21, 0x31, 0x04, 0x21, 0x11, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x19, 0xB5, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x81, 0x11, 0xF7, 0x1A, 0x38, 0x01, 0x1A, 0x18, 0x84, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x85, + 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x8A, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x19, 0x11, 0x19, 0x12, 0x11, 0x32, 0x11, 0x33, 0x01, 0x11, 0x54, 0x88, 0x19, 0xB6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x19, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x02, 0x19, 0x31, 0x84, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x01, 0x19, 0xF7, 0x82, 0x11, 0x96, 0x11, 0x74, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x11, 0x11, 0x01, 0x19, 0x32, 0x84, 0x19, 0x52, 0x11, 0x32, 0x11, 0x52, 0x11, 0x32, 0x11, 0x53, 0x02, 0x11, 0x73, 0x01, 0x11, 0x53, 0x02, 0x11, 0x32, 0x8D, 0x19, 0x52, 0x19, 0x32, 0x19, 0x11, 0x19, + 0x12, 0x19, 0x32, 0x11, 0x32, 0x19, 0x74, 0x11, 0x75, 0x19, 0xD6, 0x22, 0x38, 0x1A, 0x17, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x8A, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x94, 0x21, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x94, 0x1A, 0x17, 0x12, 0x18, 0x12, 0x19, 0x09, 0xD9, 0x01, 0xD9, 0x09, 0xF9, 0x01, 0xD9, 0x09, 0xD8, 0x01, 0xB8, 0x11, 0xF8, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x32, 0x19, 0x31, 0x21, 0x11, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x80, 0x21, 0x32, 0x01, 0x19, 0x32, 0x8D, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x19, + 0xB6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x54, 0x09, 0x12, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x31, 0x86, 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x22, 0x17, 0x02, 0x2A, 0x58, 0x84, 0x2A, 0x37, 0x32, 0x58, 0x2A, 0x37, 0x32, 0x37, 0x2A, 0x17, 0x02, 0x2A, 0x37, 0x81, 0x2A, 0x17, 0x2A, 0x38, 0x04, 0x2A, 0x17, 0x82, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x37, 0x06, 0x2A, 0x17, 0x01, 0x2A, 0x16, 0x02, 0x2A, 0x37, 0x04, 0x2A, 0x17, 0x84, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x38, 0x04, 0x2A, 0x17, 0x83, 0x21, 0xF6, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x53, 0x01, 0x19, 0x32, 0x81, 0x19, 0x31, 0x19, 0x11, 0x02, 0x19, 0x31, 0x85, 0x19, 0x32, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x82, 0x19, 0xD6, 0x11, 0x74, 0x09, 0x33, 0x01, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x07, 0x19, 0x31, 0x80, 0x19, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, + 0x30, 0x29, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x08, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x09, 0x29, 0x30, 0x01, 0x29, 0x50, 0x01, 0x29, 0x30, 0x85, 0x29, 0x50, 0x29, 0x30, 0x29, 0x50, 0x31, 0x50, 0x31, 0x51, 0x31, 0x71, 0x02, 0x31, 0x51, 0x82, 0x31, 0x71, 0x39, 0x71, 0x31, 0x51, 0x03, 0x39, 0x72, 0x02, 0x41, 0x92, 0x81, 0x41, 0x93, 0x41, 0xB3, 0x02, 0x49, 0x93, 0x01, 0x51, 0x93, 0x80, 0x51, 0xB3, 0x01, 0x59, 0x92, 0x83, 0x61, 0x91, 0x61, 0x71, 0x61, 0x4F, 0xAB, 0x57, 0x01, 0xDC, 0xBB, 0x8B, 0xD4, 0x7A, 0xCC, 0x79, 0xC4, 0x78, 0xBC, 0xB9, 0xBC, 0xF9, 0xA4, 0xF8, 0x84, 0xB6, 0x74, 0xD6, 0x6C, 0xF6, 0x5C, 0xF6, 0x5D, 0x37, 0x55, 0x37, 0x01, 0x4D, 0x16, 0x01, 0x4D, 0x37, 0x96, 0x4D, 0x17, 0x54, 0xF7, 0x4C, 0xB6, 0x4C, 0x55, 0x54, 0x36, 0x5B, 0xF5, 0x5B, 0xB5, 0x5B, 0x74, 0x5B, 0x34, 0x5A, 0xF3, 0x5A, 0xD3, 0x5A, 0xB3, 0x5A, 0x93, 0x62, 0x93, 0x62, 0x72, 0x62, 0x52, 0x6A, 0x52, 0x6A, 0x11, 0x61, 0xB0, + 0x59, 0x2E, 0x8A, 0x52, 0xBB, 0xD8, 0xD4, 0x39, 0x01, 0xCB, 0xF8, 0x8D, 0xCB, 0xD7, 0xCB, 0xF7, 0xCC, 0x17, 0xC4, 0x38, 0xB4, 0x38, 0x8B, 0x95, 0x7C, 0x37, 0x85, 0xDC, 0x66, 0x5C, 0x4E, 0xFD, 0x37, 0x5E, 0x1F, 0x7E, 0x17, 0xBF, 0x0F, 0xBF, 0x0B, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x81, 0x07, 0xDF, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x8C, 0x0F, 0xBF, 0x0F, 0x9F, 0x1F, 0x7F, 0x2F, 0x3F, 0x46, 0xFE, 0x66, 0x7D, 0x7D, 0xFC, 0x8C, 0x98, 0x93, 0xD6, 0xB3, 0xB6, 0xC3, 0x75, 0xCB, 0x35, 0xD3, 0x35, 0x02, 0xDB, 0x35, 0x89, 0xD3, 0x76, 0xCB, 0x96, 0xA3, 0x54, 0x7B, 0x53, 0x85, 0x9B, 0x66, 0xDE, 0x3F, 0x5E, 0x27, 0x7F, 0x17, 0x9F, 0x0F, 0xBF, 0x02, 0x07, 0xBF, 0x0C, 0x07, 0xDF, 0x07, 0x07, 0xBF, 0x81, 0x07, 0xDF, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x0F, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x0C, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x05, 0x07, 0xDF, 0x80, 0x07, 0xDE, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x93, 0x0F, 0xBF, 0x17, 0x9E, 0x27, 0x7E, 0x37, 0x5E, 0x46, 0xDD, 0x5E, 0x7C, 0x76, 0x3C, 0x85, 0xBB, 0x95, 0x3A, 0x94, 0xB9, 0x9C, 0x9A, 0xAC, 0x9C, 0xB4, 0xFF, 0x73, 0x1B, 0x21, 0x57, 0x19, 0xBA, 0x11, 0xBC, 0x09, 0xBD, 0x01, 0xBE, 0x01, 0x9E, 0x03, 0x01, 0xBF, 0x02, 0x01, 0x9F, 0x96, 0x01, 0x7F, 0x01, 0x9F, 0x01, 0x7E, 0x09, 0x9E, 0x19, 0xBE, 0x21, 0x5C, 0x31, 0x19, 0x61, 0x38, 0xA2, 0x5B, 0xAA, 0x39, 0xA9, 0xD6, 0xB2, 0x16, 0xA1, 0xF4, 0xA2, 0x96, 0x7A, 0x76, 0x42, + 0x14, 0x2A, 0xF7, 0x2C, 0xBC, 0x1D, 0x9E, 0x16, 0x3E, 0x17, 0x3F, 0x17, 0x9F, 0x0F, 0xBF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x8A, 0x0F, 0x9F, 0x27, 0x9F, 0x37, 0x3F, 0x4E, 0x9E, 0x76, 0x3E, 0x74, 0x58, 0x72, 0xB4, 0x8A, 0x12, 0xAA, 0x12, 0xB9, 0xD2, 0xC9, 0xD3, 0x01, 0xC9, 0x92, 0x02, 0xD1, 0x93, 0x80, 0xC9, 0x73, 0x01, 0xC9, 0x93, 0x89, 0xC9, 0xD4, 0xC1, 0xD4, 0xB9, 0xD4, 0xBA, 0x56, 0x81, 0x52, 0x58, 0xD0, 0x51, 0x51, 0x49, 0x51, 0x49, 0x92, 0x41, 0x71, 0x02, 0x39, 0x71, 0x80, 0x39, 0x51, 0x06, 0x31, 0x51, 0x08, 0x29, 0x30, 0x05, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x87, 0x19, 0x31, 0x11, 0x32, 0x09, 0x54, 0x11, 0xB7, 0x09, 0xB8, 0x09, 0xFA, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0x01, 0xBA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x01, 0x09, 0xF9, 0x84, 0x09, 0xF8, 0x09, 0xB7, 0x09, 0x75, 0x09, 0x54, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x19, 0x32, 0x02, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x31, 0x02, 0x21, 0x31, 0x81, 0x19, 0x31, 0x21, 0x32, 0x03, 0x19, 0x32, 0x81, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x90, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x18, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, + 0x21, 0x52, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x11, 0xD6, 0x01, 0x11, 0xF8, 0x81, 0x12, 0x19, 0x09, 0xF8, 0x01, 0x12, 0x19, 0x87, 0x12, 0x18, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x53, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x29, 0x10, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x85, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x04, + 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x31, 0x86, 0x19, 0x31, 0x11, 0x12, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x86, 0x19, 0xB6, 0x19, 0x94, 0x19, 0x53, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x31, 0x89, 0x19, 0x11, 0x11, 0x11, 0x19, 0x53, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD6, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x01, 0x11, 0x32, 0x81, 0x19, 0x52, 0x19, 0x32, 0x02, 0x11, 0x32, 0x82, 0x11, 0x53, 0x11, 0x94, 0x19, 0xB5, 0x01, 0x19, 0xD6, 0x85, 0x19, 0xF6, 0x19, 0xD6, 0x11, 0x96, 0x11, 0x95, 0x11, 0x94, 0x11, 0x53, 0x01, 0x11, 0x32, 0x01, 0x19, 0x32, 0x82, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x01, 0x11, 0x33, 0x85, 0x11, 0x95, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x01, 0x19, 0x11, 0x81, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, + 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x06, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x95, 0x19, 0xF7, 0x1A, 0x18, 0x04, 0x09, 0xD8, 0x85, 0x11, 0xF8, 0x1A, 0x38, 0x19, 0xF7, 0x19, 0x94, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x21, 0x31, 0x21, 0x51, 0x21, 0x32, 0x01, 0x19, 0x32, 0x8A, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x03, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x11, 0x32, 0x01, 0x11, 0x53, 0x84, 0x11, 0x74, 0x19, 0x95, 0x21, 0xF6, 0x2A, 0x17, 0x29, 0xF6, 0x01, 0x2A, 0x17, 0x87, 0x32, 0x37, 0x32, 0x58, 0x2A, 0x17, 0x32, 0x37, 0x32, 0x38, 0x2A, 0x17, 0x32, 0x38, 0x2A, 0x38, 0x01, 0x2A, 0x17, 0x81, 0x2A, 0x37, 0x2A, 0x17, 0x01, 0x2A, 0x37, 0x80, 0x2A, 0x17, 0x04, 0x2A, 0x37, 0x80, 0x22, 0x17, 0x01, 0x2A, 0x37, 0x01, 0x2A, 0x17, 0x85, 0x2A, 0x37, 0x2A, 0x17, 0x32, 0x57, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x37, 0x04, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x01, 0x2A, 0x17, 0x02, 0x29, 0xF7, 0x86, 0x21, + 0xD6, 0x11, 0x53, 0x11, 0x33, 0x11, 0x53, 0x19, 0x52, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x11, 0x02, 0x19, 0x31, 0x8B, 0x11, 0x12, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x22, 0x37, 0x22, 0x17, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x30, 0x19, 0x10, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x51, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x08, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x06, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x09, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, + 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x51, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x50, 0x01, 0x31, 0x50, 0x01, 0x31, 0x51, 0x01, 0x31, 0x71, 0x01, 0x31, 0x51, 0x01, 0x31, 0x71, 0x80, 0x39, 0x71, 0x01, 0x39, 0x72, 0x81, 0x39, 0x51, 0x39, 0x72, 0x02, 0x41, 0x92, 0x81, 0x41, 0x72, 0x41, 0x93, 0x01, 0x49, 0x93, 0x83, 0x51, 0xB3, 0x51, 0xB2, 0x49, 0x72, 0x51, 0x71, 0x01, 0x59, 0x71, 0x9C, 0x59, 0x2F, 0x79, 0xD1, 0xCC, 0x5A, 0xE4, 0xDC, 0xDC, 0x9A, 0xD4, 0x9A, 0xCC, 0x79, 0xCC, 0x99, 0xBC, 0x98, 0xB4, 0xB8, 0xA4, 0xB7, 0x8C, 0x96, 0x7C, 0xD6, 0x64, 0xD6, 0x65, 0x37, 0x5D, 0x37, 0x55, 0x36, 0x4D, 0x16, 0x4D, 0x37, 0x4D, 0x57, 0x4D, 0x16, 0x4C, 0xF6, 0x4C, 0xF7, 0x54, 0xF7, 0x54, 0xD7, 0x5C, 0x96, 0x5C, 0x56, 0x64, 0x16, 0x63, 0xB5, 0x01, 0x63, 0x75, 0x8E, 0x63, 0x13, 0x6B, 0x34, 0x62, 0xD3, 0x5A, 0x92, 0x5A, 0x52, 0x5A, 0x72, 0x62, 0x52, 0x62, 0x72, 0x6A, 0x52, 0x61, 0xF1, 0x69, 0xF0, 0x59, 0x4E, 0x59, 0x2E, 0x8A, 0x72, 0xBB, 0xD8, 0x01, 0xCC, 0x18, 0x8D, 0xCB, 0xF7, 0xC4, 0x17, 0xC4, 0x38, 0xC4, 0x78, 0xAC, 0x37, 0x7B, 0x94, 0x74, 0xB8, 0x75, 0xFC, 0x5E, 0xDD, 0x3F, 0x3E, 0x27, 0x7E, 0x17, 0x9E, 0x0F, 0xBE, 0x07, 0xBE, 0x03, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x08, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x8D, 0x07, 0xBF, 0x0F, 0x9F, 0x17, 0x7F, 0x27, 0x5F, 0x37, 0x3F, 0x56, 0xFE, 0x6E, 0x3C, 0x95, 0xFC, 0x7B, 0xB5, 0xA3, 0xB6, 0xC3, 0xD6, 0xCB, 0x55, 0xD3, 0x55, 0xDB, 0x56, 0x01, 0xD3, + 0x15, 0x8A, 0xD3, 0x35, 0xCB, 0x55, 0xC3, 0xB6, 0x9B, 0x33, 0x7B, 0xB4, 0x85, 0xDB, 0x66, 0xFE, 0x37, 0x3E, 0x27, 0x7F, 0x17, 0x9F, 0x0F, 0x9F, 0x01, 0x07, 0xBF, 0x03, 0x07, 0xDF, 0x82, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x0D, 0x07, 0xBF, 0x05, 0x07, 0x9F, 0x06, 0x07, 0xDF, 0x82, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xFF, 0x07, 0x07, 0xDF, 0x81, 0x07, 0xBF, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x09, 0x07, 0xDF, 0x80, 0x07, 0xDE, 0x01, 0x07, 0xDF, 0x86, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xBF, 0x01, 0x0F, 0xBF, 0x94, 0x17, 0x9E, 0x27, 0x7E, 0x3F, 0x3E, 0x4E, 0xBD, 0x66, 0x7C, 0x7E, 0x1B, 0x95, 0xDB, 0x95, 0x1A, 0x9C, 0xBA, 0xA4, 0x9A, 0xB4, 0xDE, 0xBD, 0x1F, 0x5A, 0x7A, 0x21, 0x37, 0x19, 0x9A, 0x11, 0x9C, 0x09, 0xBD, 0x09, 0xBE, 0x01, 0x7E, 0x01, 0x9E, 0x01, 0x9F, 0x01, 0x01, 0xBF, 0x99, 0x01, 0x9F, 0x01, 0x7F, 0x01, 0x7E, 0x01, 0x9F, 0x01, 0x7E, 0x09, 0xBF, 0x11, 0xBE, 0x19, 0x7C, 0x31, 0x3A, 0x50, 0xF8, 0x9A, 0x5B, 0xAA, 0x5A, 0xA9, 0xF7, 0xB2, 0x16, 0xA9, 0xF5, 0x9A, 0x55, 0x8A, 0xB6, 0x52, 0x75, 0x3B, 0x58, 0x45, 0x3D, 0x2D, 0xBE, 0x16, 0x3E, 0x17, 0x1F, 0x17, 0x7F, 0x0F, 0xBF, 0x0F, 0xDF, 0x01, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x8F, 0x07, 0xDF, 0x07, 0xBF, 0x0F, 0x9F, 0x1F, 0x7F, 0x2F, 0x3F, 0x46, 0xDE, 0x6E, 0x7E, 0x85, 0x7C, 0x62, 0xD3, 0x71, 0xF1, 0xA2, 0x53, 0xBA, 0x33, 0xCA, 0x13, 0xC9, 0xD3, 0xC9, 0x92, 0xC9, 0x72, 0x01, 0xD1, + 0x93, 0x8B, 0xC9, 0x72, 0xC9, 0x93, 0xD1, 0xB4, 0xC9, 0xD4, 0xC1, 0x93, 0xB9, 0xB4, 0xBA, 0x15, 0xA1, 0xF4, 0x58, 0xAF, 0x59, 0x52, 0x51, 0x51, 0x49, 0x72, 0x02, 0x39, 0x51, 0x02, 0x39, 0x71, 0x80, 0x39, 0x51, 0x02, 0x31, 0x51, 0x01, 0x31, 0x31, 0x84, 0x31, 0x51, 0x29, 0x50, 0x31, 0x50, 0x29, 0x30, 0x29, 0x50, 0x02, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x87, 0x21, 0x31, 0x19, 0x11, 0x11, 0x13, 0x19, 0xB6, 0x19, 0xF9, 0x09, 0xB9, 0x01, 0xB9, 0x01, 0xBA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x86, 0x09, 0xB8, 0x09, 0x96, 0x09, 0x75, 0x09, 0x54, 0x09, 0x33, 0x11, 0x33, 0x11, 0x12, 0x01, 0x11, 0x11, 0x01, 0x19, 0x11, 0x01, 0x19, 0x12, 0x80, 0x19, 0x32, 0x01, 0x11, 0x11, 0x02, 0x19, 0x32, 0x02, 0x19, 0x12, 0x01, 0x19, 0x32, 0x81, 0x19, 0x12, 0x21, 0x32, 0x03, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x90, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x17, 0x22, 0x38, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x54, 0x08, 0xF2, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x21, 0x52, 0x01, 0x21, 0x51, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x85, 0x11, 0x33, 0x11, 0x74, 0x11, 0x96, + 0x11, 0xF7, 0x11, 0xF8, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x80, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x88, 0x12, 0x3A, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xD7, 0x19, 0x95, 0x19, 0x53, 0x19, 0x12, 0x21, 0x11, 0x21, 0x31, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x06, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x05, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x20, 0xF0, 0x01, 0x29, 0x10, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, + 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x11, 0x12, 0x89, 0x11, 0x33, 0x09, 0x34, 0x11, 0x95, 0x19, 0xD6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x53, 0x19, 0x32, 0x01, 0x19, 0x11, 0x83, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x11, 0x86, 0x11, 0x33, 0x11, 0x74, 0x11, 0x96, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x74, 0x01, 0x11, 0x32, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x12, 0x11, 0x32, 0x09, 0x53, 0x11, 0x94, 0x01, 0x19, 0xF6, 0x01, 0x1A, 0x17, 0x03, 0x19, 0xF7, 0x83, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x74, 0x11, 0x33, 0x01, 0x19, 0x32, 0x8D, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x19, 0xF7, 0x22, 0x39, 0x11, 0xD7, 0x11, 0x75, 0x11, 0x12, 0x19, 0x12, 0x19, 0x11, 0x18, 0xF0, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x87, 0x21, 0x10, 0x19, 0x31, 0x19, 0x11, 0x11, + 0x33, 0x19, 0x95, 0x19, 0xD6, 0x1A, 0x18, 0x11, 0xF7, 0x02, 0x11, 0xD7, 0x86, 0x19, 0xF7, 0x22, 0x17, 0x19, 0x95, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x32, 0x89, 0x11, 0x32, 0x11, 0x53, 0x19, 0x94, 0x21, 0xD6, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x02, 0x19, 0x31, 0x84, 0x19, 0x51, 0x19, 0x52, 0x19, 0x31, 0x19, 0x32, 0x19, 0x52, 0x01, 0x11, 0x32, 0x80, 0x11, 0x33, 0x01, 0x11, 0x53, 0x82, 0x19, 0x53, 0x19, 0x54, 0x19, 0x53, 0x02, 0x19, 0x74, 0x03, 0x19, 0x95, 0x80, 0x19, 0x75, 0x02, 0x19, 0x95, 0x01, 0x19, 0xB5, 0x80, 0x19, 0x95, 0x06, 0x19, 0xB5, 0x80, 0x19, 0x95, 0x01, 0x19, 0xB5, 0x81, 0x19, 0x94, 0x19, 0x95, 0x01, 0x19, 0xB5, 0x84, 0x19, 0x95, 0x19, 0xB5, 0x19, 0x94, 0x19, 0x74, 0x19, 0x94, 0x01, 0x19, 0x74, 0x02, 0x19, 0x94, 0x01, 0x19, 0x74, 0x83, 0x19, 0x54, 0x11, 0x53, 0x11, 0x13, 0x11, 0x12, 0x01, 0x19, 0x32, 0x02, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x89, 0x19, 0x32, 0x19, 0x12, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x22, 0x17, 0x22, 0x16, 0x19, 0xD5, 0x11, 0x74, 0x01, 0x11, 0x32, 0x02, 0x19, 0x31, 0x81, 0x19, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, + 0x83, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x87, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x0A, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x08, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x80, 0x29, 0x10, 0x05, 0x29, 0x30, 0x81, 0x29, 0x50, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x31, 0x50, 0x31, 0x51, 0x29, 0x50, 0x04, 0x31, 0x51, 0x81, 0x39, 0x71, 0x31, 0x51, 0x02, 0x39, 0x71, 0x80, 0x39, 0x51, 0x01, 0x39, 0x72, 0x02, 0x41, 0x92, 0x83, 0x41, 0x72, 0x41, 0x92, 0x41, 0x72, 0x49, 0xB3, 0x01, 0x51, 0x92, 0x93, 0x51, 0x71, 0x51, 0x50, 0x59, 0x50, 0x59, 0x0E, 0xA3, 0x15, + 0xD4, 0x7B, 0xDC, 0xBB, 0xDC, 0x9A, 0xD4, 0x79, 0xD4, 0x78, 0xCC, 0x58, 0xC4, 0x78, 0xC4, 0xB9, 0xAC, 0xB8, 0x94, 0x76, 0x84, 0x96, 0x74, 0xB6, 0x6D, 0x17, 0x64, 0xF6, 0x5C, 0xF6, 0x01, 0x5D, 0x16, 0x81, 0x55, 0x16, 0x5D, 0x16, 0x01, 0x5C, 0xF6, 0x91, 0x64, 0xD6, 0x64, 0xB6, 0x6C, 0x96, 0x6C, 0x76, 0x6C, 0x36, 0x6B, 0xF5, 0x73, 0xD5, 0x6B, 0x74, 0x6B, 0x54, 0x63, 0x13, 0x5A, 0xD2, 0x52, 0x50, 0x52, 0x51, 0x5A, 0x71, 0x52, 0x30, 0x4A, 0x30, 0x52, 0x71, 0x5A, 0x92, 0x02, 0x5A, 0x72, 0x84, 0x5A, 0x31, 0x51, 0xEF, 0x59, 0xEF, 0x83, 0x34, 0xAC, 0x38, 0x02, 0xB4, 0x58, 0x8A, 0xAC, 0x99, 0xA4, 0x79, 0x8C, 0x37, 0x5B, 0xD5, 0x75, 0x9B, 0x5E, 0xBD, 0x47, 0x1D, 0x2F, 0x5E, 0x1F, 0x9E, 0x17, 0xBE, 0x0F, 0xBE, 0x05, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x06, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x9B, 0x07, 0xBF, 0x0F, 0x9F, 0x17, 0x7F, 0x1F, 0x5E, 0x2F, 0x1E, 0x47, 0x1E, 0x5E, 0x9D, 0x7D, 0xFC, 0x95, 0x19, 0x8B, 0x95, 0xB3, 0xB6, 0xC3, 0x75, 0xCB, 0x35, 0xD3, 0x56, 0xD3, 0x35, 0xD3, 0x15, 0xCB, 0x35, 0xCB, 0x56, 0xC3, 0x96, 0xB3, 0xB6, 0x83, 0x53, 0x74, 0x36, 0x7E, 0x3C, 0x56, 0xFE, 0x37, 0x3E, 0x1F, 0x7F, 0x17, 0x9F, 0x0F, 0x9F, 0x04, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x08, 0x07, 0xBF, 0x09, 0x07, 0x9F, 0x04, 0x07, 0x7F, 0x03, 0x07, 0xBF, 0x08, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x0A, 0x07, 0xBF, 0x81, 0x07, 0xDF, 0x07, 0xBF, 0x03, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x81, 0x07, 0xBF, 0x07, 0xDF, 0x02, + 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x01, 0x0F, 0xBF, 0x8F, 0x1F, 0x9F, 0x27, 0x5E, 0x3F, 0x1D, 0x4E, 0xBC, 0x66, 0x5C, 0x7D, 0xFB, 0x8D, 0x7A, 0x94, 0xFA, 0x9C, 0x9A, 0xAC, 0x9B, 0xB4, 0xBE, 0xA4, 0x9F, 0x41, 0xB7, 0x21, 0x37, 0x19, 0x9B, 0x11, 0x9C, 0x01, 0x09, 0x9D, 0x9C, 0x01, 0x7E, 0x01, 0xBE, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x9F, 0x01, 0x7E, 0x01, 0x9F, 0x01, 0x7E, 0x01, 0x9E, 0x01, 0x7E, 0x11, 0xBE, 0x19, 0x7C, 0x31, 0x7B, 0x38, 0xB7, 0x8A, 0x3B, 0xA2, 0x5A, 0xAA, 0x38, 0xA9, 0xF6, 0xA1, 0xF5, 0x91, 0xF4, 0x92, 0xF8, 0x5A, 0x55, 0x3A, 0xF6, 0x45, 0x1D, 0x25, 0x7C, 0x1E, 0x1D, 0x1E, 0xFF, 0x17, 0x7F, 0x0F, 0x9F, 0x03, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x90, 0x07, 0xDF, 0x07, 0xBF, 0x0F, 0xBF, 0x17, 0x9F, 0x27, 0x7F, 0x3F, 0x1F, 0x5E, 0x7E, 0x86, 0x1E, 0x63, 0x55, 0x72, 0x52, 0x9A, 0x33, 0xBA, 0x33, 0xC1, 0xF3, 0xC9, 0xB3, 0xC9, 0x92, 0xD1, 0x93, 0xC9, 0x72, 0x01, 0xD1, 0x93, 0x01, 0xC9, 0x93, 0x01, 0xC9, 0xB4, 0x89, 0xC1, 0xB4, 0xB9, 0xF4, 0xB2, 0x76, 0x68, 0xF0, 0x59, 0x31, 0x51, 0x72, 0x49, 0x71, 0x41, 0x51, 0x39, 0x51, 0x41, 0x71, 0x02, 0x39, 0x71, 0x02, 0x31, 0x51, 0x82, 0x31, 0x31, 0x31, 0x30, 0x31, 0x31, 0x01, 0x31, 0x51, 0x04, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x10, 0x8C, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, + 0x30, 0x21, 0x31, 0x19, 0x12, 0x11, 0x33, 0x11, 0xB7, 0x09, 0xB8, 0x09, 0xB9, 0x09, 0xDA, 0x04, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x86, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0x96, 0x11, 0x96, 0x09, 0x34, 0x01, 0x09, 0x33, 0x03, 0x11, 0x12, 0x80, 0x11, 0x32, 0x09, 0x11, 0x12, 0x80, 0x10, 0xF2, 0x01, 0x11, 0x12, 0x83, 0x19, 0x12, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x02, 0x21, 0x31, 0x07, 0x21, 0x30, 0x8B, 0x19, 0x11, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x17, 0x22, 0x18, 0x19, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x09, 0x13, 0x01, 0x11, 0x12, 0x01, 0x19, 0x52, 0x80, 0x21, 0x52, 0x02, 0x21, 0x31, 0x82, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x03, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x32, 0x86, 0x11, 0x33, 0x11, 0x54, 0x09, 0x54, 0x11, 0x96, 0x09, 0xB7, 0x09, 0xF8, 0x09, 0xD9, 0x04, 0x01, 0xD9, 0x88, 0x01, 0xF9, 0x09, 0xF9, 0x09, 0xD9, 0x11, 0xD8, 0x19, 0xB6, 0x11, 0x54, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x05, 0x29, 0x10, 0x80, 0x29, 0x30, 0x05, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, + 0x30, 0x03, 0x29, 0x10, 0x02, 0x21, 0x10, 0x07, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x88, 0x29, 0x31, 0x21, 0x31, 0x18, 0xF1, 0x19, 0x11, 0x11, 0x33, 0x11, 0x54, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x10, 0x01, 0x21, 0x31, 0x93, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x11, 0x12, 0x11, 0x74, 0x11, 0x75, 0x11, 0xB7, 0x22, 0x38, 0x19, 0xD6, 0x09, 0x74, 0x11, 0x74, 0x11, 0x52, 0x11, 0x31, 0x19, 0x51, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x11, 0xD6, 0x02, 0x11, 0xF7, 0x82, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0xD7, 0x01, 0x19, 0xD7, 0x85, 0x19, 0xF7, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x02, 0x19, 0x31, 0x89, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x1A, 0x18, 0x1A, 0x39, 0x11, 0xF7, 0x11, 0x95, 0x11, 0x33, 0x19, 0x12, 0x19, + 0x11, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x11, 0x32, 0x11, 0x54, 0x19, 0x95, 0x01, 0x19, 0xB6, 0x82, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x01, 0x11, 0x33, 0x83, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x03, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x51, 0x01, 0x19, 0x31, 0x85, 0x19, 0x12, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x19, 0x95, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x52, 0x04, 0x19, 0x31, 0x02, 0x19, 0x32, 0x80, 0x19, 0x11, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x81, 0x11, 0x32, 0x19, 0x53, 0x01, 0x11, 0x32, 0x01, + 0x11, 0x12, 0x03, 0x11, 0x33, 0x81, 0x11, 0x32, 0x11, 0x12, 0x02, 0x11, 0x33, 0x80, 0x11, 0x53, 0x01, 0x11, 0x33, 0x80, 0x11, 0x32, 0x02, 0x11, 0x33, 0x81, 0x11, 0x32, 0x11, 0x12, 0x02, 0x11, 0x32, 0x81, 0x11, 0x33, 0x11, 0x32, 0x03, 0x11, 0x12, 0x03, 0x11, 0x32, 0x80, 0x19, 0x53, 0x03, 0x11, 0x12, 0x01, 0x19, 0x52, 0x01, 0x19, 0x31, 0x01, 0x19, 0x30, 0x88, 0x21, 0x51, 0x21, 0x52, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x54, 0x19, 0xD6, 0x21, 0xF6, 0x01, 0x21, 0xB4, 0x81, 0x19, 0x73, 0x19, 0x52, 0x01, 0x19, 0x31, 0x81, 0x21, 0x51, 0x21, 0x31, 0x05, 0x21, 0x30, 0x05, 0x29, 0x30, 0x01, 0x21, 0x30, 0x04, 0x29, 0x30, 0x04, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x04, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x08, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x07, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x06, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x09, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x17, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x0C, 0x29, 0x30, 0x81, 0x29, 0x50, 0x31, 0x50, 0x01, 0x31, 0x30, 0x01, 0x31, 0x51, 0x82, 0x31, 0x50, 0x31, 0x51, 0x31, 0x50, 0x02, 0x31, 0x51, 0x81, 0x39, 0x51, 0x39, 0x71, 0x01, 0x39, 0x72, 0x81, 0x41, 0x72, 0x41, 0x92, 0x01, 0x41, 0x72, 0x03, 0x41, 0x92, 0x01, + 0x49, 0x92, 0x81, 0x49, 0x91, 0x51, 0x91, 0x01, 0x51, 0x70, 0x83, 0x61, 0x6F, 0x79, 0xF1, 0xBB, 0x97, 0xD4, 0x59, 0x01, 0xDC, 0x79, 0x89, 0xDC, 0x99, 0xD4, 0x79, 0xD4, 0x78, 0xCC, 0x78, 0xBC, 0x77, 0xB4, 0x97, 0xAC, 0xB7, 0x9C, 0xB7, 0x84, 0x96, 0x7C, 0xB6, 0x01, 0x74, 0xD6, 0x01, 0x74, 0xF6, 0x01, 0x74, 0xD6, 0x88, 0x7C, 0xD7, 0x84, 0xF7, 0x8C, 0xF8, 0x8C, 0xD8, 0x94, 0xF8, 0x8C, 0xB7, 0x8C, 0x77, 0x8C, 0x56, 0x8C, 0x36, 0x02, 0x94, 0x37, 0x93, 0x94, 0x57, 0x94, 0x58, 0x94, 0x78, 0x94, 0xB9, 0x8C, 0x99, 0x8C, 0xB9, 0x84, 0x99, 0x7C, 0x78, 0x74, 0x78, 0x6C, 0x57, 0x6C, 0x78, 0x6C, 0x58, 0x64, 0x58, 0x6C, 0x78, 0x64, 0x57, 0x6C, 0x37, 0x6C, 0x16, 0x74, 0x37, 0x7C, 0x58, 0x84, 0x79, 0x01, 0x7C, 0x78, 0x87, 0x74, 0x58, 0x64, 0x58, 0x44, 0x57, 0x45, 0xDA, 0x4F, 0x3E, 0x37, 0x7E, 0x1F, 0x9E, 0x17, 0xBE, 0x01, 0x0F, 0xDF, 0x06, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x0B, 0x07, 0xFF, 0x8E, 0x07, 0xDF, 0x0F, 0xDF, 0x17, 0xBF, 0x1F, 0xBF, 0x27, 0x9F, 0x37, 0x5F, 0x47, 0x3E, 0x5F, 0x1E, 0x7E, 0xDE, 0x8D, 0x7A, 0x8B, 0xF6, 0xAB, 0x95, 0xBB, 0x56, 0xC3, 0x56, 0xCB, 0x36, 0x01, 0xD3, 0x36, 0x8C, 0xCB, 0x56, 0xC3, 0x76, 0xBB, 0x96, 0xB3, 0xD7, 0xA3, 0xF7, 0x84, 0x16, 0x64, 0xD7, 0x5E, 0x7C, 0x4F, 0x3E, 0x37, 0x7F, 0x1F, 0x9F, 0x17, 0xBF, 0x0F, 0xBF, 0x09, 0x07, 0xBF, 0x81, 0x07, 0x9F, 0x07, 0xBF, 0x02, 0x07, 0x9F, 0x05, 0x07, 0x7F, 0x04, 0x07, 0x5F, 0x80, 0x07, 0x3F, 0x01, 0x07, 0x5F, 0x80, 0x07, 0x3F, 0x02, 0x07, 0x5F, 0x01, 0x07, 0x7F, + 0x80, 0x07, 0x9F, 0x03, 0x07, 0xBF, 0x82, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x81, 0x07, 0xDF, 0x07, 0xBF, 0x03, 0x07, 0xDF, 0x07, 0x07, 0xBF, 0x80, 0x07, 0x9F, 0x0B, 0x07, 0xBF, 0x06, 0x07, 0xDF, 0x92, 0x07, 0xBF, 0x0F, 0x9E, 0x1F, 0x9E, 0x27, 0x5E, 0x3F, 0x3E, 0x57, 0x1E, 0x66, 0x7C, 0x7D, 0xFB, 0x8D, 0x7B, 0x9C, 0xFA, 0xA4, 0xBA, 0xAC, 0x9B, 0xAC, 0x9C, 0xAC, 0xBF, 0x31, 0x75, 0x21, 0x57, 0x19, 0x7A, 0x11, 0x7B, 0x11, 0x9C, 0x01, 0x09, 0x9D, 0x80, 0x09, 0x9E, 0x02, 0x01, 0x9E, 0x01, 0x01, 0x9F, 0x95, 0x09, 0x9F, 0x09, 0x9E, 0x11, 0x7D, 0x19, 0x7C, 0x29, 0x3B, 0x30, 0xD8, 0x61, 0x99, 0x9A, 0x7A, 0xAA, 0x59, 0xAA, 0x38, 0xAA, 0x57, 0x9A, 0x57, 0x8A, 0x77, 0x72, 0xB7, 0x4B, 0x16, 0x4C, 0xBB, 0x46, 0x1F, 0x36, 0x9F, 0x26, 0xFF, 0x1F, 0x7F, 0x0F, 0x9F, 0x0F, 0xDF, 0x03, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x8E, 0x0F, 0xDF, 0x17, 0xBF, 0x2F, 0x7F, 0x46, 0x7D, 0x76, 0x3E, 0x6C, 0x38, 0x6A, 0x52, 0x92, 0x32, 0xB2, 0x33, 0xC1, 0xD2, 0xC9, 0xB2, 0xC9, 0x92, 0xC9, 0x93, 0xD1, 0x93, 0xD1, 0xB3, 0x02, 0xC9, 0x93, 0x88, 0xC9, 0xB3, 0xC9, 0xB4, 0xC1, 0xD4, 0xB9, 0xF4, 0xB2, 0x76, 0x79, 0x72, 0x58, 0xF0, 0x59, 0x72, 0x49, 0x51, 0x02, 0x41, 0x71, 0x02, 0x39, 0x71, 0x80, 0x31, 0x51, 0x01, 0x39, 0x51, 0x03, 0x31, 0x51, 0x80, 0x31, 0x50, 0x05, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, + 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x87, 0x21, 0x30, 0x21, 0x31, 0x19, 0x12, 0x11, 0x33, 0x19, 0xD7, 0x11, 0xD9, 0x09, 0xD9, 0x09, 0xDA, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x80, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x86, 0x09, 0xB8, 0x09, 0xB7, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x95, 0x19, 0x95, 0x19, 0x75, 0x01, 0x19, 0x74, 0x81, 0x19, 0x94, 0x19, 0x74, 0x01, 0x19, 0x95, 0x85, 0x21, 0xB5, 0x19, 0xB5, 0x21, 0xD6, 0x21, 0xF6, 0x21, 0xD5, 0x21, 0xD6, 0x01, 0x21, 0xB5, 0x80, 0x21, 0xD5, 0x01, 0x21, 0xB5, 0x84, 0x19, 0x74, 0x19, 0x53, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x19, 0x31, 0x19, 0x51, 0x01, 0x11, 0x32, 0x81, 0x11, 0x54, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x8A, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x75, 0x09, 0x33, 0x09, 0x12, 0x08, 0xF1, 0x11, 0x11, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x32, 0x01, 0x19, 0x12, 0x80, 0x19, 0x32, 0x02, 0x19, 0x12, 0x80, 0x19, 0x32, 0x01, 0x11, 0x12, 0x01, 0x11, 0x33, 0x84, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0x01, 0xF9, 0x01, 0x01, 0xD9, 0x87, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xF9, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xD7, 0x11, 0x74, 0x01, 0x19, 0x32, 0x02, 0x21, 0x31, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, + 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x05, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x10, 0x04, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x04, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x04, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x86, 0x21, 0x31, 0x21, 0x11, 0x18, 0xF1, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0xB6, 0x02, 0x19, 0xF7, 0x84, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x32, 0x11, 0x12, 0x19, 0x11, 0x01, 0x19, 0x10, 0x03, 0x21, 0x30, 0x8A, 0x19, 0x30, 0x19, 0x11, 0x11, 0x12, 0x11, 0x54, 0x11, 0x75, 0x19, 0xF7, 0x22, 0x38, 0x11, 0x96, 0x11, 0x54, 0x19, 0x74, 0x11, 0x52, 0x03, 0x19, 0x31, 0x83, 0x11, 0x33, 0x11, 0x74, 0x11, + 0xB6, 0x12, 0x17, 0x01, 0x11, 0xF7, 0x81, 0x11, 0xD7, 0x09, 0x96, 0x01, 0x11, 0x96, 0x88, 0x11, 0xB7, 0x19, 0xD7, 0x19, 0xD8, 0x11, 0xD7, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x53, 0x19, 0x52, 0x19, 0x32, 0x01, 0x19, 0x31, 0x89, 0x19, 0x32, 0x11, 0x32, 0x11, 0x74, 0x11, 0xF7, 0x1A, 0x39, 0x11, 0xF8, 0x11, 0x96, 0x11, 0x54, 0x19, 0x32, 0x21, 0x31, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x86, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x53, 0x19, 0x54, 0x11, 0x53, 0x11, 0x33, 0x19, 0x33, 0x19, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, + 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x8A, 0x19, 0x53, 0x11, 0x53, 0x19, 0x95, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x74, 0x11, 0x53, 0x11, 0x12, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x02, 0x19, 0x31, 0x86, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x11, 0x01, 0x19, 0x32, 0x80, 0x19, 0x11, 0x01, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x32, 0x01, 0x11, 0x12, 0x83, 0x19, 0x32, 0x11, 0x12, 0x11, 0x32, 0x19, 0x32, 0x03, 0x11, 0x32, 0x02, 0x19, 0x32, 0x80, 0x11, 0x12, 0x01, 0x19, 0x12, 0x02, 0x19, 0x32, 0x82, 0x11, 0x12, 0x19, 0x32, 0x19, 0x12, 0x08, 0x19, 0x32, 0x80, 0x19, 0x11, 0x03, 0x19, 0x32, 0x84, 0x21, 0x52, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x19, 0x30, 0x01, 0x21, 0x51, 0x8A, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x21, 0xF6, 0x21, 0xF5, 0x21, 0xB3, 0x21, 0x93, 0x19, 0x52, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x05, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x04, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x12, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x09, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x06, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x09, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x19, 0x29, 0x30, 0x08, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x10, 0x29, 0x30, + 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x85, 0x31, 0x51, 0x31, 0x30, 0x29, 0x30, 0x31, 0x50, 0x31, 0x51, 0x31, 0x50, 0x02, 0x31, 0x51, 0x80, 0x39, 0x51, 0x03, 0x39, 0x71, 0x02, 0x41, 0x72, 0x03, 0x41, 0x92, 0x80, 0x49, 0x92, 0x01, 0x49, 0x91, 0x85, 0x49, 0x71, 0x49, 0x50, 0x51, 0x70, 0x59, 0x4E, 0x92, 0xB3, 0xD4, 0x79, 0x01, 0xDC, 0x79, 0x01, 0xDC, 0x78, 0x8A, 0xDC, 0x98, 0xD4, 0x78, 0xD4, 0x58, 0xC4, 0x57, 0xBC, 0x77, 0xB4, 0x77, 0xA4, 0x77, 0x8C, 0x55, 0x84, 0x75, 0x84, 0x96, 0x84, 0xB6, 0x02, 0x7C, 0xB6, 0x80, 0x84, 0xB6, 0x01, 0x84, 0x96, 0x81, 0x84, 0x76, 0x8C, 0x55, 0x01, 0x8C, 0x35, 0x04, 0x94, 0x36, 0x01, 0x94, 0x37, 0x80, 0x94, 0x57, 0x01, 0x8C, 0x58, 0x86, 0x84, 0x78, 0x7C, 0x78, 0x74, 0x78, 0x6C, 0x98, 0x64, 0x98, 0x5C, 0x98, 0x54, 0x97, 0x01, 0x44, 0x97, 0x87, 0x3C, 0x76, 0x34, 0x76, 0x34, 0x56, 0x34, 0x35, 0x34, 0x15, 0x3C, 0x36, 0x44, 0x57, 0x54, 0x98, 0x02, 0x5C, 0x78, 0x86, 0x54, 0x58, 0x44, 0x98, 0x3D, 0x9A, 0x46, 0xDD, 0x2F, 0x1D, 0x1F, 0x7E, 0x17, 0xBE, 0x01, 0x0F, 0xDF, 0x11, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x0F, 0xDF, 0x01, 0x17, 0xBF, 0x8C, 0x1F, 0x9F, 0x2F, 0x7E, 0x3F, 0x3E, 0x4F, 0x1D, 0x6E, 0xDD, 0x86, 0x5C, 0x8C, 0xB8, 0xA3, 0xB6, 0xB3, 0x76, 0xC3, 0x56, 0xCB, 0x36, 0xCB, 0x56, 0xD3, 0x56, 0x01, 0xCB, 0x56, 0x8B, 0xC3, 0x76, 0xB3, 0x96, 0xA3, 0xD6, 0x8B, 0xD6, 0x74, 0x57, 0x5D, 0x79, 0x56, 0xDD, 0x3F, 0x5E, 0x2F, 0x7E, 0x1F, 0x9F, 0x17, 0x9F, 0x0F, 0xBF, 0x08, 0x07, 0xBF, 0x04, 0x07, 0x9F, + 0x04, 0x07, 0x7F, 0x01, 0x07, 0x5F, 0x0A, 0x07, 0x3F, 0x81, 0x07, 0x5F, 0x07, 0x3F, 0x01, 0x07, 0x5F, 0x83, 0x07, 0x7F, 0x07, 0x9F, 0x0F, 0x9F, 0x0F, 0xBF, 0x0F, 0x07, 0xBF, 0x09, 0x07, 0x9F, 0x06, 0x07, 0xBF, 0x81, 0x07, 0xDF, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x92, 0x0F, 0xBF, 0x17, 0xBF, 0x1F, 0x9E, 0x2F, 0x5E, 0x47, 0x3E, 0x56, 0xBD, 0x6E, 0x1C, 0x7D, 0x9B, 0x95, 0x3B, 0xA4, 0xDA, 0xAC, 0xBA, 0xB4, 0xBB, 0xB4, 0xBC, 0x8B, 0xBC, 0x31, 0x55, 0x21, 0x58, 0x19, 0x7A, 0x11, 0x7B, 0x09, 0x9C, 0x01, 0x09, 0x9D, 0x01, 0x09, 0x9E, 0x01, 0x01, 0x9E, 0x02, 0x09, 0x9E, 0x93, 0x11, 0x7D, 0x19, 0x7D, 0x21, 0x5C, 0x28, 0xF9, 0x51, 0x38, 0x92, 0x3A, 0xA2, 0x59, 0xA2, 0x38, 0xA2, 0x37, 0x9A, 0x37, 0x8A, 0x57, 0x72, 0x96, 0x5B, 0x57, 0x4C, 0x7A, 0x45, 0xBD, 0x2E, 0x3E, 0x1E, 0xBE, 0x1F, 0x5F, 0x17, 0x9F, 0x0F, 0xDF, 0x02, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x8E, 0x0F, 0xDF, 0x27, 0x9F, 0x3E, 0xBE, 0x76, 0x9F, 0x85, 0x5C, 0x5A, 0x51, 0x92, 0x52, 0xB2, 0x13, 0xB9, 0xD2, 0xC9, 0xD3, 0xC9, 0xB2, 0xC9, 0xB3, 0xD1, 0xB3, 0xC9, 0x92, 0xD1, 0x93, 0x01, 0xC9, 0x93, 0x88, 0xD1, 0xB4, 0xC9, 0xB3, 0xC1, 0xD4, 0xB9, 0xF4, 0xB2, 0x35, 0x9A, 0x15, 0x58, 0xAF, 0x59, 0x72, 0x49, 0x51, 0x01, 0x41, 0x51, 0x80, 0x41, 0x71, 0x02, 0x39, 0x71, 0x83, 0x31, 0x51, 0x39, 0x51, 0x39, 0x71, 0x31, 0x71, 0x02, 0x31, 0x51, 0x80, 0x31, 0x50, 0x05, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, + 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x31, 0x19, 0x32, 0x19, 0x54, 0x19, 0xB7, 0x11, 0xF9, 0x09, 0xB9, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFB, 0x02, 0x01, 0xDA, 0x80, 0x09, 0xFA, 0x01, 0x01, 0xD9, 0x8A, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0xB8, 0x19, 0xD8, 0x21, 0xF8, 0x2A, 0x18, 0x2A, 0x38, 0x32, 0x38, 0x3A, 0x58, 0x32, 0x38, 0x32, 0x58, 0x02, 0x32, 0x37, 0x86, 0x32, 0x58, 0x32, 0x57, 0x32, 0x58, 0x2A, 0x17, 0x2A, 0x37, 0x21, 0xF6, 0x2A, 0x16, 0x02, 0x29, 0xF6, 0x01, 0x2A, 0x17, 0x84, 0x29, 0xF6, 0x21, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x02, 0x21, 0x31, 0x80, 0x29, 0x51, 0x04, 0x21, 0x30, 0x83, 0x21, 0x50, 0x21, 0x51, 0x19, 0x51, 0x19, 0x31, 0x01, 0x11, 0x32, 0x81, 0x11, 0x54, 0x19, 0x95, 0x01, 0x22, 0x17, 0x88, 0x19, 0xF7, 0x1A, 0x17, 0x11, 0xB6, 0x09, 0x54, 0x09, 0x12, 0x01, 0x12, 0x09, 0x12, 0x09, 0x33, 0x09, 0x32, 0x03, 0x11, 0x33, 0x80, 0x11, 0x53, 0x01, 0x11, 0x33, 0x81, 0x11, 0x53, 0x11, 0x33, 0x01, 0x11, 0x54, 0x86, 0x11, 0x75, 0x09, 0x76, 0x09, 0x97, 0x09, 0xD8, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x82, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x85, 0x0A, 0x1A, 0x09, 0xD8, 0x11, 0xB7, 0x19, 0x95, 0x11, 0x32, 0x19, 0x32, 0x01, 0x21, 0x31, 0x03, 0x21, 0x10, 0x82, 0x29, 0x30, + 0x21, 0x10, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x03, 0x29, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x07, 0x29, 0x10, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x92, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0x96, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x01, 0x19, 0x10, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, + 0x30, 0x01, 0x19, 0x11, 0x87, 0x11, 0x32, 0x11, 0x74, 0x11, 0x96, 0x1A, 0x18, 0x22, 0x18, 0x11, 0x75, 0x11, 0x54, 0x11, 0x53, 0x01, 0x19, 0x32, 0x88, 0x19, 0x52, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x11, 0x95, 0x1A, 0x18, 0x12, 0x18, 0x11, 0xF8, 0x11, 0xB7, 0x01, 0x11, 0x96, 0x95, 0x11, 0x75, 0x09, 0x55, 0x11, 0x96, 0x11, 0xB7, 0x19, 0xF8, 0x19, 0xD8, 0x11, 0xB7, 0x19, 0x96, 0x11, 0x54, 0x19, 0x33, 0x19, 0x12, 0x19, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x11, 0x54, 0x11, 0xD6, 0x1A, 0x18, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x54, 0x19, 0x12, 0x01, 0x21, 0x31, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x07, 0x29, 0x0F, 0x85, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x51, 0x21, 0x10, 0x02, 0x19, 0x11, 0x80, 0x19, 0x32, 0x01, 0x19, 0x52, 0x80, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, + 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x8A, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xF6, 0x11, 0xB6, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x02, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x19, 0x10, 0x80, 0x21, 0x31, 0x05, 0x19, 0x31, 0x01, 0x19, 0x11, 0x0B, 0x19, 0x31, 0x80, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x11, 0x04, 0x19, 0x31, 0x80, 0x19, 0x11, 0x09, 0x19, 0x31, 0x82, 0x21, 0x31, 0x19, 0x31, 0x21, 0x52, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xF6, 0x21, 0xB4, 0x21, 0x93, 0x21, 0x72, 0x19, 0x51, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x05, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x0B, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x08, 0x29, 0x30, 0x02, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x0A, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, + 0x29, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x18, 0x29, 0x30, 0x07, 0x21, 0x30, 0x13, 0x29, 0x30, 0x80, 0x29, 0x50, 0x05, 0x29, 0x30, 0x85, 0x31, 0x51, 0x31, 0x50, 0x31, 0x51, 0x31, 0x71, 0x31, 0x51, 0x31, 0x71, 0x03, 0x39, 0x71, 0x80, 0x39, 0x72, 0x03, 0x41, 0x72, 0x02, 0x41, 0x92, 0x01, 0x41, 0x71, 0x88, 0x49, 0x71, 0x49, 0x70, 0x51, 0x4F, 0x59, 0x4F, 0xA3, 0x55, 0xD4, 0x79, 0xD4, 0x58, 0xDC, 0x58, 0xDC, 0x78, 0x01, 0xDC, 0x58, 0x80, 0xDC, 0x78, 0x01, 0xD4, 0x58, 0x8A, 0xCC, 0x57, 0xBC, 0x57, 0xAC, 0x36, 0xA4, 0x56, 0x94, 0x35, 0x8C, 0x55, 0x94, 0x96, 0x8C, 0x96, 0x8C, 0xB6, 0x8C, 0xD6, 0x8C, 0xB6, 0x02, 0x8C, 0xB7, 0x01, 0x94, 0xB7, 0x02, 0x94, 0x97, 0x80, 0x94, 0x98, 0x02, 0x9C, 0x98, 0x81, 0x94, 0x98, 0x94, 0x58, 0x01, 0x8C, 0x58, 0x89, 0x84, 0x58, 0x7C, 0x78, 0x74, 0x98, 0x6C, 0x98, 0x64, 0xD9, 0x5D, 0x19, 0x5D, 0x9B, 0x5E, 0x1C, 0x5E, 0x9D, 0x5E, 0xDE, 0x03, 0x5E, 0xFE, 0x8F, 0x5E, 0xDE, 0x66, 0xBE, 0x5E, 0x5D, 0x4D, 0x7A, 0x4D, 0x3A, 0x4C, 0xF9, 0x55, 0x1A, 0x4C, 0x78, 0x3C, 0xB8, 0x35, 0x9A, 0x3E, 0xBD, 0x27, 0x1D, 0x1F, 0x9E, 0x17, 0xDF, 0x0F, 0xDF, 0x0F, 0xFF, 0x0D, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x80, 0x0F, 0xBF, 0x01, 0x17, 0xBF, 0x8A, 0x1F, 0x9F, 0x27, 0x7E, 0x2F, 0x5E, 0x3F, 0x1D, 0x56, 0xDD, 0x76, 0xBD, 0x85, 0xBB, 0x8B, 0xF6, 0xAB, 0x96, 0xBB, 0x56, 0xC3, 0x56, 0x02, 0xCB, 0x56, 0x8C, 0xCB, 0x55, 0xC3, 0x75, 0xC3, 0x76, 0xB3, 0x96, 0xA3, 0xB6, 0x83, 0x96, 0x74, 0x78, 0x5D, 0xDB, 0x56, 0xFE, 0x3F, + 0x5E, 0x27, 0x7F, 0x1F, 0x7F, 0x17, 0x7F, 0x01, 0x0F, 0x9F, 0x05, 0x07, 0xBF, 0x02, 0x07, 0x9F, 0x81, 0x07, 0x7F, 0x07, 0x9F, 0x01, 0x07, 0x7F, 0x04, 0x07, 0x5F, 0x03, 0x07, 0x3F, 0x0A, 0x07, 0x1F, 0x81, 0x07, 0x3F, 0x07, 0x1E, 0x01, 0x07, 0x3E, 0x82, 0x07, 0x5F, 0x07, 0x7F, 0x0F, 0x9F, 0x01, 0x07, 0x9F, 0x04, 0x07, 0xBF, 0x05, 0x07, 0x9F, 0x80, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x80, 0x07, 0x7F, 0x07, 0x07, 0x9F, 0x80, 0x07, 0x7F, 0x01, 0x07, 0x9F, 0x01, 0x07, 0xBF, 0x80, 0x07, 0x9F, 0x06, 0x07, 0xBF, 0x93, 0x07, 0x9F, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x9E, 0x2F, 0x7E, 0x3F, 0x3E, 0x56, 0xBD, 0x66, 0x3C, 0x7D, 0xBB, 0x8D, 0x5B, 0x9C, 0xFA, 0xAC, 0xDA, 0xB4, 0xBA, 0xB4, 0xBB, 0xB4, 0xBE, 0x62, 0xB8, 0x21, 0x36, 0x19, 0x5A, 0x11, 0x7B, 0x09, 0x7C, 0x01, 0x09, 0x9D, 0x81, 0x09, 0x9E, 0x01, 0x9E, 0x04, 0x09, 0x9E, 0x92, 0x09, 0x7D, 0x19, 0x7D, 0x21, 0x5C, 0x29, 0x1A, 0x40, 0xF8, 0x8A, 0x19, 0xA2, 0x59, 0xA2, 0x17, 0xA2, 0x37, 0x9A, 0x17, 0x8A, 0x37, 0x72, 0x96, 0x63, 0x58, 0x4C, 0x59, 0x45, 0x7C, 0x36, 0x3E, 0x1E, 0xBE, 0x1F, 0x5F, 0x17, 0xBF, 0x01, 0x0F, 0xDF, 0x80, 0x0F, 0xFF, 0x01, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x88, 0x0F, 0xDF, 0x1F, 0x9F, 0x36, 0xDE, 0x66, 0x9E, 0x85, 0xFD, 0x5A, 0xB2, 0x8A, 0x32, 0xB2, 0x33, 0xB9, 0xD3, 0x01, 0xC9, 0xB2, 0x82, 0xC9, 0x92, 0xD1, 0xB3, 0xC9, 0x92, 0x01, 0xD1, 0x93, 0x80, 0xC9, 0x73, 0x01, 0xC9, 0x93, 0x89, 0xC1, 0xB3, 0xB9, 0xD4, 0xB2, 0x15, 0xAA, 0x76, 0x60, 0xD0, 0x61, 0x52, 0x51, 0x51, + 0x49, 0x31, 0x41, 0x51, 0x41, 0x71, 0x01, 0x39, 0x71, 0x80, 0x39, 0x72, 0x06, 0x31, 0x51, 0x80, 0x31, 0x50, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x0B, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x8C, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x19, 0x11, 0x11, 0x33, 0x19, 0xB6, 0x11, 0xD8, 0x09, 0xB9, 0x09, 0xD9, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x95, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xB9, 0x09, 0xFA, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xD9, 0x11, 0xD8, 0x19, 0xF8, 0x21, 0xF8, 0x21, 0xF7, 0x21, 0xD7, 0x29, 0xF7, 0x32, 0x17, 0x29, 0xF7, 0x2A, 0x17, 0x29, 0xF6, 0x29, 0xD6, 0x21, 0xD6, 0x21, 0xB5, 0x02, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x81, 0x29, 0xF6, 0x21, 0xD5, 0x01, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x01, 0x19, 0xD6, 0x84, 0x21, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x02, 0x21, 0x31, 0x01, 0x29, 0x51, 0x03, 0x21, 0x30, 0x01, 0x21, 0x51, 0x85, 0x19, 0x11, 0x11, 0x31, 0x11, 0x12, 0x11, 0x53, 0x19, 0x95, 0x19, 0xF6, 0x01, 0x1A, 0x17, 0x82, 0x19, 0xF7, 0x11, 0xD6, 0x11, 0xB5, 0x01, 0x09, 0xB5, 0x80, 0x09, 0x95, 0x01, 0x11, 0xB6, 0x01, 0x09, 0x95, 0x82, 0x11, 0x96, 0x11, 0xB6, 0x11, 0x95, 0x04, 0x11, 0x96, 0x81, 0x09, 0x96, 0x09, 0x97, 0x01, 0x09, 0xB8, 0x80, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x85, 0x01, 0xD9, 0x09, 0xD9, 0x11, 0xF9, 0x19, 0xF7, 0x19, 0x95, 0x11, 0x12, 0x01, 0x19, + 0x11, 0x81, 0x19, 0x10, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x86, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x8D, 0x19, 0x10, 0x18, 0xF1, 0x19, 0x12, 0x11, 0x13, 0x11, 0x55, 0x19, 0xB6, 0x19, 0xF7, 0x22, 0x18, 0x22, 0x17, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x10, 0x80, 0x21, 0x10, + 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x19, 0x11, 0x82, 0x11, 0x33, 0x11, 0x74, 0x11, 0x96, 0x01, 0x1A, 0x18, 0x82, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x89, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x34, 0x11, 0xB6, 0x1A, 0x18, 0x12, 0x18, 0x11, 0xB7, 0x09, 0x96, 0x09, 0x76, 0x02, 0x09, 0x55, 0x88, 0x09, 0x35, 0x11, 0x75, 0x19, 0xB7, 0x11, 0xB7, 0x19, 0xD7, 0x19, 0x96, 0x19, 0x74, 0x19, 0x53, 0x19, 0x32, 0x02, 0x19, 0x11, 0x8A, 0x11, 0x32, 0x11, 0x53, 0x11, 0x96, 0x1A, 0x39, 0x1A, 0x18, 0x11, 0xD7, 0x11, 0x54, 0x19, 0x53, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x89, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x21, 0x11, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, + 0x19, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x86, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x01, 0x19, 0xF6, 0x01, 0x19, 0xD6, 0x80, 0x11, 0x74, 0x01, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x10, 0x19, 0x31, 0x01, 0x19, 0x30, 0x81, 0x21, 0x31, 0x19, 0x10, 0x02, 0x21, 0x31, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x19, 0x31, 0x08, 0x21, 0x31, 0x80, 0x19, 0x10, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x10, 0x02, 0x21, 0x31, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x89, 0x21, 0x51, 0x19, 0x51, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xF7, 0x21, 0xF6, 0x01, 0x19, 0x52, 0x02, 0x19, 0x31, 0x80, 0x19, 0x30, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x05, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x0B, 0x29, 0x2F, 0x07, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x06, 0x29, 0x30, 0x02, 0x21, 0x30, 0x06, 0x29, 0x30, + 0x0A, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x09, 0x29, 0x30, 0x84, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x06, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x10, 0x29, 0x30, 0x07, 0x21, 0x30, 0x1A, 0x29, 0x30, 0x81, 0x31, 0x50, 0x31, 0x51, 0x03, 0x31, 0x71, 0x03, 0x39, 0x71, 0x80, 0x39, 0x72, 0x03, 0x41, 0x72, 0x8A, 0x41, 0x92, 0x41, 0x72, 0x41, 0x71, 0x41, 0x91, 0x41, 0x71, 0x49, 0x70, 0x51, 0x6F, 0x61, 0xB0, 0xBC, 0x19, 0xD4, 0x9A, 0xD4, 0x79, 0x03, 0xDC, 0x78, 0x81, 0xDC, 0x58, 0xD4, 0x58, 0x01, 0xD4, 0x57, 0x85, 0xCC, 0x57, 0xC4, 0x57, 0xB4, 0x56, 0xB4, 0x76, 0xA4, 0x76, 0xA4, 0x96, 0x01, 0xA4, 0xD7, 0x80, 0x9C, 0xD7, 0x01, 0x9C, 0xF7, 0x98, 0xA5, 0x18, 0xA5, 0x19, 0xA5, 0x39, 0xAD, 0x5A, 0xA5, 0x5A, 0xAD, 0x7A, 0xAD, 0x5A, 0xA5, 0x5B, 0xA5, 0x3A, 0xA5, 0x1A, 0x9D, 0x1A, 0x94, 0xFA, 0x8C, 0xDA, 0x8C, 0xB9, 0x84, 0xB9, 0x7C, 0x99, 0x74, 0x98, 0x6C, 0xF9, 0x6D, 0x3A, 0x6D, 0x7B, 0x65, 0xDC, 0x5E, 0x1C, 0x5E, 0x9E, 0x56, 0xDE, 0x4E, 0xFE, 0x01, 0x47, 0x1E, 0x92, 0x3F, 0x3E, 0x3F, 0x1E, 0x3F, 0x1D, 0x3E, 0xFD, 0x46, 0xDD, 0x4E, 0xDD, 0x56, 0xBD, 0x56, 0x9E, 0x56, 0x3D, 0x56, 0x1C, 0x34, 0xD8, 0x24, 0xB7, 0x25, 0xBA, 0x2E, 0xDD, 0x27, 0x3D, 0x1F, 0x9E, 0x17, 0xDF, 0x0F, 0xDF, 0x0F, 0xFF, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x02, 0x0F, 0xDF, 0x01, 0x17, 0xBF, 0x8B, 0x1F, 0x9F, 0x27, 0x7E, 0x2F, 0x7E, 0x3F, 0x3E, 0x4F, + 0x1D, 0x66, 0xBD, 0x7E, 0x3C, 0x84, 0xB8, 0x9B, 0xB6, 0xB3, 0x76, 0xC3, 0x56, 0xC3, 0x36, 0x02, 0xCB, 0x56, 0x8C, 0xCB, 0x76, 0xC3, 0x75, 0xC3, 0x96, 0xB3, 0x76, 0x9B, 0x75, 0x7B, 0xB6, 0x74, 0xD9, 0x5E, 0x5C, 0x47, 0x1E, 0x37, 0x5E, 0x1F, 0x5E, 0x17, 0x5F, 0x17, 0x7F, 0x01, 0x0F, 0x9F, 0x01, 0x07, 0xBF, 0x05, 0x07, 0x9F, 0x03, 0x07, 0x7F, 0x01, 0x07, 0x5F, 0x05, 0x07, 0x3F, 0x02, 0x07, 0x1F, 0x80, 0x06, 0xFE, 0x01, 0x06, 0xFF, 0x81, 0x07, 0x1F, 0x06, 0xFE, 0x04, 0x06, 0xFF, 0x03, 0x06, 0xFE, 0x01, 0x07, 0x1E, 0x80, 0x07, 0x3F, 0x01, 0x07, 0x5F, 0x01, 0x07, 0x9F, 0x80, 0x07, 0xBF, 0x0B, 0x07, 0x9F, 0x06, 0x07, 0x7F, 0x07, 0x07, 0x9F, 0x06, 0x07, 0xBF, 0x92, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x9F, 0x27, 0x7E, 0x3F, 0x5E, 0x4E, 0xFD, 0x66, 0x7C, 0x75, 0xFC, 0x8D, 0x7B, 0x9D, 0x1A, 0xA4, 0xDA, 0xAC, 0xBA, 0xB4, 0xBB, 0xBC, 0xBC, 0xB4, 0xFF, 0x41, 0xD7, 0x21, 0x38, 0x11, 0x5B, 0x11, 0x7C, 0x01, 0x09, 0x7D, 0x06, 0x09, 0x9E, 0x93, 0x11, 0x7E, 0x19, 0x7D, 0x21, 0x5C, 0x29, 0x3A, 0x40, 0xF8, 0x81, 0xF9, 0xA2, 0x59, 0xA2, 0x18, 0xA2, 0x17, 0x91, 0xF6, 0x8A, 0x36, 0x7A, 0x96, 0x6B, 0x38, 0x4C, 0x39, 0x45, 0x5C, 0x36, 0x3E, 0x26, 0xDE, 0x1F, 0x5F, 0x17, 0xBF, 0x0F, 0xBF, 0x03, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x8E, 0x0F, 0xDF, 0x17, 0x9F, 0x2F, 0x1E, 0x56, 0xBE, 0x86, 0x7F, 0x63, 0x54, 0x82, 0x32, 0xA9, 0xF2, 0xB9, 0xD3, 0xC9, 0xD3, 0xC1, 0x92, 0xC9, 0xB3, 0xC9, 0x93, 0xD1, 0xB3, 0xD1, 0x93, 0x01, 0xC9, 0x73, 0x01, + 0xC9, 0x93, 0x8E, 0xC9, 0xD4, 0xC1, 0xD4, 0xB1, 0xF5, 0xAA, 0x76, 0x68, 0xF0, 0x61, 0x32, 0x51, 0x52, 0x49, 0x51, 0x41, 0x51, 0x41, 0x71, 0x41, 0x92, 0x39, 0x71, 0x39, 0x72, 0x31, 0x51, 0x31, 0x71, 0x02, 0x31, 0x51, 0x80, 0x31, 0x31, 0x01, 0x31, 0x50, 0x02, 0x29, 0x30, 0x83, 0x31, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x50, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x85, 0x19, 0x11, 0x19, 0x12, 0x19, 0x75, 0x19, 0xB7, 0x11, 0xD8, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x02, 0x01, 0xD9, 0x85, 0x09, 0xFA, 0x11, 0xF9, 0x11, 0xD9, 0x11, 0xB8, 0x11, 0xB7, 0x19, 0x97, 0x02, 0x19, 0x75, 0x80, 0x19, 0x74, 0x01, 0x19, 0x54, 0x86, 0x19, 0x74, 0x19, 0x53, 0x19, 0x54, 0x19, 0x74, 0x19, 0x54, 0x19, 0x74, 0x19, 0x53, 0x05, 0x19, 0x74, 0x81, 0x19, 0x95, 0x21, 0xB5, 0x01, 0x19, 0xD6, 0x86, 0x21, 0xF7, 0x19, 0xD6, 0x21, 0xD6, 0x11, 0x74, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x02, 0x21, 0x31, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x51, 0x21, 0x30, 0x03, 0x19, 0x31, 0x85, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xF7, 0x1A, 0x17, 0x01, 0x1A, 0x18, 0x80, 0x1A, 0x38, 0x02, 0x1A, 0x18, 0x80, 0x11, 0xF7, 0x01, 0x12, 0x18, 0x02, 0x11, 0xF7, 0x81, 0x11, 0xD7, 0x19, 0xF7, 0x02, 0x11, 0xD7, 0x01, 0x11, 0xF8, 0x82, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xFA, 0x01, 0x01, 0xD9, + 0x80, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x8D, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x09, 0xFA, 0x09, 0xF9, 0x11, 0xF8, 0x19, 0xD7, 0x11, 0x74, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x8C, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x05, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x86, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x19, 0x11, + 0x19, 0x31, 0x01, 0x10, 0xF1, 0x89, 0x10, 0xF2, 0x11, 0x13, 0x19, 0x55, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x01, 0x10, 0xF1, 0x80, 0x19, 0x10, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x85, 0x21, 0x10, 0x19, 0x10, 0x19, 0x32, 0x19, 0x53, 0x11, 0x75, 0x11, 0xB6, 0x01, 0x19, 0xF8, 0x82, 0x11, 0x95, 0x11, 0x54, 0x11, 0x32, 0x02, 0x19, 0x32, 0x85, 0x19, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD7, 0x1A, 0x18, 0x11, 0xF8, 0x01, 0x09, 0x76, 0x01, 0x09, 0x55, 0x03, 0x09, 0x34, 0x85, 0x11, 0x96, 0x19, 0xB7, 0x19, 0xD8, 0x19, 0xD7, 0x19, 0x95, 0x19, 0x54, 0x01, 0x19, 0x32, 0x8D, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x74, 0x09, 0x95, 0x11, 0xF8, 0x1A, 0x19, 0x11, 0xB7, 0x11, 0x54, 0x19, 0x33, 0x19, 0x31, 0x21, 0x11, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x03, + 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x11, 0x01, 0x21, 0x10, 0x80, 0x19, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0E, 0x29, 0x0F, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0xB5, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xF6, 0x19, 0xB5, 0x11, 0x73, 0x11, 0x12, 0x11, 0x32, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x51, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x07, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x50, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x88, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x11, 0xD6, 0x01, 0x1A, 0x17, 0x86, 0x19, 0xF6, 0x19, 0x95, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x19, 0x30, 0x06, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x29, 0x30, 0x84, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x07, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x08, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x84, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, + 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x29, 0x29, 0x30, 0x07, 0x21, 0x30, 0x19, 0x29, 0x30, 0x01, 0x31, 0x50, 0x83, 0x31, 0x51, 0x31, 0x71, 0x31, 0x51, 0x39, 0x71, 0x01, 0x31, 0x71, 0x04, 0x39, 0x71, 0x01, 0x41, 0x72, 0x03, 0x41, 0x71, 0x86, 0x41, 0x50, 0x49, 0x50, 0x51, 0x4F, 0x69, 0xF0, 0xD4, 0xBB, 0xDC, 0x9A, 0xDC, 0x79, 0x01, 0xDC, 0x78, 0x80, 0xDC, 0x58, 0x01, 0xDC, 0x78, 0x81, 0xD4, 0x58, 0xD4, 0x37, 0x01, 0xD4, 0x57, 0x85, 0xCC, 0x57, 0xCC, 0x77, 0xC4, 0x77, 0xC4, 0x97, 0xBC, 0x97, 0xB4, 0x96, 0x01, 0xB4, 0xB7, 0x02, 0xAC, 0xD7, 0x99, 0xAC, 0xF8, 0xA4, 0xF8, 0xA4, 0xF9, 0x9C, 0xF9, 0x9C, 0xD9, 0x94, 0xB8, 0x94, 0x98, 0x8C, 0x78, 0x8C, 0x79, 0x84, 0x99, 0x84, 0xB9, 0x84, 0xDA, 0x7C, 0xFA, 0x7D, 0x5B, 0x7D, 0x9C, 0x75, 0xDC, 0x76, 0x1D, 0x6E, 0x1C, 0x66, 0x3D, 0x5E, 0x5D, 0x56, 0x9D, 0x4E, 0xBD, 0x4E, 0xFE, 0x47, 0x1E, 0x3F, 0x3E, 0x37, 0x3E, 0x01, 0x37, 0x5E, 0x01, 0x2F, 0x5E, 0x80, 0x2F, 0x3E, 0x01, 0x37, 0x3D, 0x01, 0x3F, 0x1E, 0x01, 0x47, 0x1E, 0x01, 0x47, 0x3F, 0x84, 0x2E, 0xDD, 0x27, 0x3D, 0x27, 0xBF, 0x17, 0xBF, 0x17, 0xDF, 0x01, 0x0F, 0xFF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x03, 0x0F, 0xDF, 0x8D, 0x17, 0xBF, 0x17, 0xBE, 0x1F, 0xBF, 0x27, 0x9E, 0x2F, 0x9E, 0x37, 0x5E, 0x47, 0x3D, 0x56, 0xDD, 0x76, 0x5C, 0x84, 0xF9, 0x8B, 0xF6, 0xAB, 0x96, 0xBB, 0x56, 0xC3, 0x56, 0x01, 0xCB, 0x56, + 0x01, 0xCB, 0x55, 0x8E, 0xCB, 0x75, 0xC3, 0x95, 0xBB, 0xB6, 0xB3, 0x76, 0x8B, 0x55, 0x73, 0xF6, 0x6D, 0x5A, 0x5E, 0x9D, 0x3F, 0x1E, 0x2F, 0x3E, 0x1F, 0x5F, 0x17, 0x5F, 0x0F, 0x5F, 0x0F, 0x7F, 0x0F, 0x9F, 0x05, 0x07, 0x9F, 0x01, 0x07, 0x7F, 0x02, 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x80, 0x07, 0x5F, 0x02, 0x07, 0x3F, 0x03, 0x07, 0x1F, 0x03, 0x06, 0xFF, 0x80, 0x06, 0xFE, 0x02, 0x06, 0xFF, 0x81, 0x06, 0xDE, 0x06, 0xFF, 0x08, 0x06, 0xDE, 0x83, 0x06, 0xFF, 0x07, 0x1F, 0x07, 0x1E, 0x07, 0x3F, 0x02, 0x07, 0x7F, 0x06, 0x07, 0x9F, 0x81, 0x07, 0x7F, 0x07, 0x9F, 0x0D, 0x07, 0x7F, 0x04, 0x07, 0x9F, 0x01, 0x07, 0xBF, 0x81, 0x07, 0x9F, 0x07, 0xBF, 0x01, 0x0F, 0x9F, 0x93, 0x17, 0x9F, 0x27, 0x9F, 0x37, 0x5E, 0x47, 0x1E, 0x56, 0x9D, 0x6E, 0x1C, 0x85, 0xBB, 0x95, 0x5B, 0xA4, 0xFA, 0xAC, 0xBA, 0xB4, 0x9A, 0xBC, 0xBB, 0xBC, 0xDE, 0x9C, 0x1E, 0x39, 0xB7, 0x19, 0x59, 0x11, 0x5B, 0x09, 0x7C, 0x09, 0x7D, 0x09, 0x9D, 0x01, 0x09, 0x9E, 0x80, 0x01, 0x9E, 0x02, 0x09, 0x9E, 0x94, 0x09, 0x7E, 0x19, 0x7D, 0x21, 0x5C, 0x29, 0x3B, 0x38, 0xF8, 0x71, 0x98, 0x9A, 0x5A, 0xA2, 0x18, 0xA2, 0x17, 0x99, 0xF6, 0x8A, 0x16, 0x7A, 0x76, 0x6B, 0x58, 0x4B, 0xD8, 0x45, 0x1B, 0x36, 0x3D, 0x26, 0xBE, 0x1F, 0x5F, 0x17, 0x9F, 0x0F, 0xBF, 0x0F, 0xDF, 0x08, 0x07, 0xDF, 0x8E, 0x17, 0xBF, 0x2F, 0x3F, 0x4E, 0xDE, 0x7E, 0x9F, 0x63, 0xF6, 0x7A, 0x52, 0xAA, 0x13, 0xC2, 0x34, 0xC9, 0xF3, 0xC1, 0x92, 0xC9, 0x92, 0xC9, 0x72, 0xD1, 0x93, 0xC9, 0x73, 0xD1, 0x93, 0x01, 0xC9, 0x73, 0x8B, + 0xC9, 0x93, 0xC1, 0xB3, 0xC1, 0xD4, 0xB1, 0xF4, 0xBA, 0x97, 0x79, 0x52, 0x60, 0xF1, 0x59, 0x32, 0x49, 0x31, 0x49, 0x51, 0x41, 0x71, 0x41, 0x92, 0x01, 0x39, 0x71, 0x06, 0x31, 0x51, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x31, 0x50, 0x0F, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x8B, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x19, 0x32, 0x19, 0x74, 0x19, 0xB6, 0x11, 0x97, 0x09, 0xB8, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x85, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0x97, 0x11, 0x76, 0x11, 0x55, 0x11, 0x34, 0x01, 0x11, 0x13, 0x01, 0x11, 0x12, 0x80, 0x19, 0x12, 0x03, 0x11, 0x12, 0x82, 0x11, 0x32, 0x19, 0x32, 0x11, 0x32, 0x03, 0x19, 0x32, 0x01, 0x19, 0x53, 0x80, 0x19, 0x33, 0x01, 0x11, 0x33, 0x89, 0x11, 0x54, 0x11, 0x95, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x03, 0x21, 0x31, 0x04, 0x21, 0x30, 0x89, 0x21, 0x51, 0x21, 0x31, 0x21, 0x51, 0x19, 0x51, 0x19, 0x52, 0x11, 0x53, 0x19, 0x74, 0x19, 0xD6, 0x21, 0xF7, 0x22, 0x38, 0x01, 0x1A, 0x38, 0x81, 0x1A, 0x18, 0x1A, 0x38, 0x01, 0x1A, 0x18, 0x01, 0x1A, 0x38, 0x82, 0x12, 0x17, 0x1A, 0x18, 0x11, 0xF7, 0x01, 0x19, 0xF7, 0x84, 0x11, 0xF7, 0x19, 0xF7, 0x19, 0xF8, 0x11, 0xD8, 0x09, 0xB8, 0x01, 0x09, 0xD9, 0x83, 0x09, 0xFA, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x8B, 0x01, 0xB9, 0x09, 0xDA, 0x09, 0xD9, 0x11, 0xD8, 0x19, + 0xD7, 0x11, 0x74, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x04, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x07, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x11, 0x32, 0x01, 0x11, 0x12, 0x83, 0x08, 0xF2, 0x11, 0x13, 0x11, 0x75, 0x19, 0x96, 0x01, 0x21, 0xF7, 0x87, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x10, 0x19, 0x30, 0x07, 0x21, 0x30, 0x95, 0x21, 0x31, 0x19, 0x32, 0x11, + 0x53, 0x11, 0x75, 0x11, 0xB6, 0x19, 0xF7, 0x1A, 0x18, 0x11, 0x96, 0x11, 0x54, 0x11, 0x12, 0x19, 0x12, 0x21, 0x32, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x09, 0x54, 0x19, 0xF7, 0x1A, 0x19, 0x11, 0xF8, 0x09, 0x96, 0x09, 0x55, 0x09, 0x35, 0x01, 0x09, 0x54, 0x02, 0x09, 0x34, 0x80, 0x11, 0x75, 0x02, 0x19, 0xD7, 0x8F, 0x21, 0xB6, 0x19, 0x74, 0x19, 0x33, 0x19, 0x32, 0x19, 0x31, 0x19, 0x12, 0x19, 0x53, 0x11, 0x54, 0x09, 0x95, 0x11, 0xF8, 0x1A, 0x19, 0x19, 0xD7, 0x19, 0x75, 0x19, 0x33, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, + 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x11, 0x11, 0x8A, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xF6, 0x19, 0xD5, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x0D, 0x21, 0x30, 0x80, 0x21, 0x50, 0x0A, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x10, 0x07, 0x21, 0x30, 0x85, 0x21, 0x51, 0x11, 0x31, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x11, 0xD6, 0x01, 0x1A, 0x17, 0x83, 0x19, 0xF6, 0x19, 0xB5, 0x11, 0x53, 0x19, 0x31, 0x01, 0x21, 0x31, 0x06, 0x21, 0x30, 0x08, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x08, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x06, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x08, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x0B, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x18, 0x29, 0x30, 0x0B, 0x21, 0x30, 0x15, 0x29, 0x30, 0x03, 0x29, 0x50, 0x02, 0x31, 0x50, 0x80, 0x31, 0x71, 0x03, 0x31, 0x51, 0x04, 0x39, 0x71, 0x89, 0x41, 0x71, 0x41, 0x72, 0x41, 0x71, 0x39, 0x51, 0x41, 0x51, 0x41, 0x50, 0x41, 0x2F, 0x49, 0x0E, 0x8A, 0xD4, 0xD4, 0xBB, 0x01, 0xDC, 0x99, 0x02, 0xDC, + 0x78, 0x83, 0xDC, 0x58, 0xDC, 0x78, 0xD4, 0x58, 0xD4, 0x37, 0x02, 0xD4, 0x57, 0x81, 0xCC, 0x57, 0xCC, 0x77, 0x01, 0xC4, 0x77, 0x01, 0xBC, 0x77, 0x80, 0xBC, 0x97, 0x01, 0xB4, 0xB7, 0x85, 0xAC, 0xB7, 0xAC, 0xD8, 0xA4, 0xB8, 0x9C, 0x98, 0x94, 0x98, 0x8C, 0x98, 0x01, 0x84, 0x98, 0x93, 0x7C, 0x98, 0x74, 0x98, 0x6C, 0x78, 0x74, 0xD9, 0x74, 0xFA, 0x75, 0x7C, 0x75, 0x9C, 0x6D, 0xFD, 0x6E, 0x3D, 0x66, 0x5D, 0x5E, 0x7D, 0x56, 0x9D, 0x4E, 0xBD, 0x4E, 0xDD, 0x46, 0xFE, 0x3F, 0x1E, 0x3F, 0x3E, 0x37, 0x5E, 0x2F, 0x5E, 0x2F, 0x7E, 0x01, 0x27, 0x7E, 0x03, 0x27, 0x9E, 0x80, 0x27, 0x7E, 0x05, 0x2F, 0x7E, 0x83, 0x27, 0x9E, 0x1F, 0x9E, 0x1F, 0xBF, 0x17, 0xDF, 0x01, 0x0F, 0xDF, 0x81, 0x07, 0xDF, 0x07, 0xFF, 0x09, 0x07, 0xDF, 0x03, 0x0F, 0xDF, 0x80, 0x0F, 0xBF, 0x01, 0x17, 0xBF, 0x8E, 0x17, 0x9E, 0x1F, 0x9E, 0x27, 0x7E, 0x2F, 0x7E, 0x37, 0x7E, 0x3F, 0x5D, 0x56, 0xFD, 0x6E, 0x7C, 0x7D, 0x79, 0x8C, 0x16, 0xA3, 0xB6, 0xB3, 0x76, 0xC3, 0x56, 0xCB, 0x36, 0xCB, 0x56, 0x01, 0xCB, 0x55, 0x8D, 0xCB, 0x75, 0xC3, 0x75, 0xC3, 0x96, 0xBB, 0xD7, 0xA3, 0x56, 0x83, 0x76, 0x74, 0x98, 0x65, 0xDB, 0x4E, 0xBD, 0x37, 0x1E, 0x27, 0x3E, 0x1F, 0x5F, 0x17, 0x5F, 0x0F, 0x5F, 0x01, 0x0F, 0x7F, 0x02, 0x07, 0x9F, 0x03, 0x07, 0x7F, 0x02, 0x07, 0x5F, 0x03, 0x07, 0x3F, 0x03, 0x07, 0x1F, 0x05, 0x06, 0xFF, 0x82, 0x06, 0xDF, 0x06, 0xDE, 0x06, 0xDF, 0x04, 0x06, 0xDE, 0x0A, 0x06, 0xBE, 0x82, 0x06, 0xDE, 0x07, 0x1F, 0x07, 0x3F, 0x01, 0x07, 0x5F, 0x05, 0x0F, 0x7F, 0x0A, 0x07, + 0x7F, 0x80, 0x07, 0x5F, 0x04, 0x07, 0x7F, 0x08, 0x07, 0x9F, 0x93, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x9F, 0x2F, 0x7E, 0x3F, 0x3E, 0x4E, 0xBD, 0x66, 0x5C, 0x75, 0xFB, 0x8D, 0x7B, 0x9D, 0x1A, 0xAC, 0xBA, 0xB4, 0x9A, 0xBC, 0xBB, 0xBC, 0xBC, 0xB4, 0xBE, 0x7B, 0x3B, 0x21, 0x17, 0x11, 0x3A, 0x09, 0x5C, 0x09, 0x7D, 0x01, 0x09, 0x9D, 0x03, 0x09, 0x9E, 0x01, 0x09, 0x7E, 0x94, 0x11, 0x7E, 0x21, 0x7D, 0x29, 0x3B, 0x38, 0xF9, 0x61, 0x38, 0x92, 0x3A, 0xA2, 0x18, 0xA2, 0x17, 0x99, 0xD6, 0x8A, 0x16, 0x82, 0x76, 0x73, 0x37, 0x53, 0xD8, 0x44, 0xFA, 0x3E, 0x3E, 0x26, 0xDE, 0x1F, 0x5F, 0x17, 0x9F, 0x0F, 0xBF, 0x0F, 0xDF, 0x07, 0xBF, 0x07, 0x07, 0xDF, 0x8C, 0x17, 0xBF, 0x2F, 0x7F, 0x46, 0xFE, 0x6E, 0xBF, 0x7C, 0xFA, 0x72, 0x72, 0x99, 0xF2, 0xBA, 0x13, 0xC1, 0xD3, 0xC1, 0x92, 0xC9, 0x92, 0xC9, 0x93, 0xC9, 0x72, 0x02, 0xD1, 0x93, 0x01, 0xC9, 0x93, 0x8A, 0xC9, 0xD4, 0xC1, 0xD4, 0xB1, 0xD4, 0xBA, 0x76, 0x89, 0xB3, 0x58, 0xD0, 0x61, 0x52, 0x49, 0x31, 0x49, 0x51, 0x41, 0x71, 0x41, 0x72, 0x01, 0x39, 0x71, 0x05, 0x31, 0x51, 0x82, 0x31, 0x50, 0x29, 0x30, 0x29, 0x50, 0x08, 0x29, 0x30, 0x80, 0x29, 0x10, 0x07, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x10, 0x19, 0x32, 0x19, 0x54, 0x19, 0x75, 0x11, 0x97, 0x19, 0xF8, 0x11, 0xF9, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x88, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0x97, 0x11, + 0x76, 0x11, 0x55, 0x11, 0x34, 0x11, 0x33, 0x19, 0x13, 0x03, 0x19, 0x12, 0x88, 0x19, 0x11, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x19, 0x11, 0x19, 0x32, 0x19, 0x11, 0x04, 0x19, 0x32, 0x8D, 0x11, 0x12, 0x19, 0x33, 0x19, 0x53, 0x11, 0x54, 0x19, 0xB5, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x32, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x21, 0x31, 0x87, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x74, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xF6, 0x02, 0x19, 0xD6, 0x81, 0x19, 0xF6, 0x11, 0xD6, 0x01, 0x19, 0xD6, 0x01, 0x11, 0xB5, 0x84, 0x19, 0xD6, 0x11, 0xB5, 0x11, 0xB6, 0x19, 0xB6, 0x11, 0xB6, 0x01, 0x11, 0xB7, 0x85, 0x09, 0xB8, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xDA, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x88, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD9, 0x11, 0xD8, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x04, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8A, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, + 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x89, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x11, 0xB6, 0x11, 0x95, 0x01, 0x11, 0x75, 0x87, 0x19, 0xB6, 0x11, 0xB6, 0x21, 0xF7, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x34, 0x11, 0x12, 0x01, 0x11, 0x11, 0x80, 0x19, 0x11, 0x02, 0x21, 0x30, 0x91, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x19, 0x30, 0x19, 0x52, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x12, 0x19, 0x32, 0x01, 0x19, 0x31, 0x86, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD7, 0x1A, 0x39, 0x11, 0xF8, 0x09, 0x97, 0x01, 0x09, 0x55, 0x02, 0x09, 0x54, 0x82, 0x09, 0x33, 0x09, 0x34, 0x11, 0x75, 0x01, 0x19, 0xD7, 0x90, 0x19, 0xB6, + 0x21, 0xB6, 0x19, 0x74, 0x19, 0x53, 0x19, 0x32, 0x19, 0x11, 0x11, 0x11, 0x19, 0x32, 0x11, 0x54, 0x09, 0x75, 0x11, 0xF8, 0x19, 0xF8, 0x19, 0xB7, 0x19, 0x74, 0x19, 0x53, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x86, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x84, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x51, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x31, 0x11, 0x52, 0x11, 0x73, 0x19, 0xB5, 0x19, 0xD5, 0x19, 0xF6, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x74, 0x11, 0x33, 0x11, 0x12, + 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x29, 0x30, 0x05, 0x21, 0x30, 0x80, 0x29, 0x50, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x19, 0xF7, 0x1A, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x04, 0x21, 0x30, 0x08, 0x29, 0x30, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x03, 0x21, 0x30, 0x09, 0x29, 0x30, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x09, 0x21, 0x2F, 0x26, 0x29, 0x30, 0x0B, 0x21, 0x30, 0x15, 0x29, 0x30, 0x80, 0x31, 0x50, 0x01, 0x29, 0x50, 0x03, 0x31, 0x51, 0x80, 0x31, 0x50, 0x02, 0x31, 0x51, 0x80, 0x31, 0x71, 0x04, 0x39, 0x71, 0x01, 0x41, 0x71, 0x87, 0x39, 0x51, 0x41, 0x51, 0x41, 0x50, 0x41, 0x2F, 0x59, 0x90, 0xAB, 0xB7, 0xDC, 0xDB, 0xDC, 0x99, 0x02, 0xDC, 0x78, 0x02, 0xDC, 0x58, 0x01, 0xD4, 0x57, 0x80, 0xD4, + 0x37, 0x02, 0xD4, 0x57, 0x81, 0xCC, 0x57, 0xCC, 0x77, 0x02, 0xC4, 0x77, 0x8E, 0xBC, 0x77, 0xBC, 0x97, 0xB4, 0xB8, 0xB4, 0xD8, 0xAC, 0xB8, 0x9C, 0x77, 0x9C, 0x78, 0x8C, 0x78, 0x84, 0x98, 0x7C, 0xB8, 0x74, 0xD9, 0x75, 0x19, 0x6D, 0x5B, 0x75, 0xBC, 0x76, 0x5E, 0x01, 0x6E, 0x5E, 0x88, 0x66, 0x5D, 0x5E, 0x7E, 0x56, 0x7D, 0x56, 0x9D, 0x4E, 0xBD, 0x46, 0xDD, 0x46, 0xFE, 0x3F, 0x1E, 0x3F, 0x3E, 0x01, 0x37, 0x3E, 0x80, 0x2F, 0x5E, 0x02, 0x27, 0x7E, 0x82, 0x27, 0x9F, 0x1F, 0x9E, 0x1F, 0xBF, 0x03, 0x1F, 0x9E, 0x80, 0x1F, 0x7E, 0x04, 0x27, 0x9E, 0x87, 0x1F, 0x9E, 0x1F, 0xBE, 0x17, 0xBE, 0x17, 0xDF, 0x0F, 0xDE, 0x0F, 0xDF, 0x0F, 0xFF, 0x07, 0xFF, 0x09, 0x07, 0xDF, 0x83, 0x0F, 0xDF, 0x0F, 0xBF, 0x0F, 0xDF, 0x0F, 0xBF, 0x01, 0x17, 0xBF, 0x82, 0x1F, 0x9F, 0x1F, 0x9E, 0x27, 0x9E, 0x01, 0x2F, 0x7E, 0x97, 0x3F, 0x5D, 0x4E, 0xFC, 0x6E, 0x9C, 0x7D, 0x7A, 0x84, 0x37, 0x9B, 0xB6, 0xB3, 0x76, 0xBB, 0x56, 0xC3, 0x36, 0xCB, 0x56, 0xCB, 0x55, 0xD3, 0x55, 0xCB, 0x55, 0xCB, 0x76, 0xC3, 0x76, 0xBB, 0x96, 0xB3, 0xB7, 0x93, 0x35, 0x7B, 0xD7, 0x6D, 0x5A, 0x56, 0x5C, 0x3E, 0xDD, 0x2F, 0x1E, 0x27, 0x3E, 0x01, 0x17, 0x3F, 0x81, 0x0F, 0x5F, 0x0F, 0x7F, 0x04, 0x07, 0x7F, 0x04, 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x04, 0x07, 0x1F, 0x83, 0x06, 0xFE, 0x06, 0xFF, 0x06, 0xFE, 0x06, 0xFF, 0x01, 0x06, 0xFE, 0x80, 0x06, 0xFF, 0x02, 0x06, 0xDE, 0x80, 0x06, 0xDF, 0x04, 0x06, 0xBE, 0x80, 0x06, 0xDF, 0x01, 0x06, 0xBE, 0x03, 0x06, 0x9E, 0x03, 0x06, 0x7E, 0x84, 0x06, 0x9E, + 0x06, 0x7E, 0x06, 0x9E, 0x06, 0xDF, 0x06, 0xFF, 0x03, 0x07, 0x1F, 0x02, 0x07, 0x3F, 0x80, 0x07, 0x5F, 0x03, 0x07, 0x7F, 0x80, 0x07, 0x5F, 0x01, 0x07, 0x7F, 0x80, 0x07, 0x5F, 0x08, 0x07, 0x7F, 0x07, 0x07, 0x9F, 0x94, 0x0F, 0x9F, 0x1F, 0x9F, 0x27, 0x7E, 0x37, 0x3E, 0x46, 0xFD, 0x5E, 0xBC, 0x6E, 0x3C, 0x85, 0x9B, 0x95, 0x1A, 0xA4, 0xB9, 0xB4, 0x9A, 0xBC, 0x9A, 0xC4, 0x9B, 0xBC, 0xBC, 0xB4, 0xBF, 0x52, 0x19, 0x21, 0x59, 0x11, 0x5B, 0x09, 0x7C, 0x09, 0x7D, 0x09, 0x9D, 0x01, 0x09, 0x9E, 0x98, 0x09, 0xBE, 0x09, 0x9E, 0x01, 0x7E, 0x09, 0x7E, 0x11, 0x7E, 0x19, 0x7D, 0x29, 0x5C, 0x31, 0x1A, 0x59, 0x18, 0x91, 0xFA, 0xA2, 0x38, 0xA2, 0x17, 0x99, 0xF6, 0x92, 0x16, 0x82, 0x96, 0x7B, 0x38, 0x53, 0x97, 0x44, 0xBA, 0x3E, 0x3D, 0x2E, 0xDF, 0x1F, 0x3F, 0x17, 0x7F, 0x17, 0xBF, 0x0F, 0xBF, 0x07, 0xBF, 0x05, 0x07, 0xDF, 0x8C, 0x07, 0xBF, 0x07, 0xDF, 0x0F, 0xBF, 0x1F, 0x7F, 0x3F, 0x1F, 0x5E, 0xBE, 0x85, 0xFD, 0x6A, 0x72, 0x91, 0xD1, 0xBA, 0x34, 0xC1, 0xD3, 0xC1, 0xB2, 0xC9, 0x92, 0x01, 0xC9, 0x93, 0x82, 0xD1, 0x93, 0xC9, 0x93, 0xD1, 0x93, 0x01, 0xC9, 0x93, 0x88, 0xC9, 0xD4, 0xB9, 0x93, 0xB9, 0xD4, 0xB2, 0x35, 0xA2, 0x35, 0x60, 0xB0, 0x59, 0x11, 0x51, 0x31, 0x49, 0x51, 0x01, 0x41, 0x71, 0x82, 0x39, 0x71, 0x39, 0x92, 0x31, 0x71, 0x02, 0x31, 0x51, 0x01, 0x31, 0x31, 0x80, 0x31, 0x51, 0x01, 0x31, 0x50, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x05, + 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x8A, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x19, 0x11, 0x19, 0x53, 0x19, 0x74, 0x19, 0x75, 0x19, 0xB7, 0x19, 0xD8, 0x11, 0xF8, 0x02, 0x11, 0xF9, 0x84, 0x11, 0xF8, 0x19, 0xF9, 0x11, 0xD8, 0x11, 0x76, 0x11, 0x75, 0x01, 0x19, 0x74, 0x80, 0x19, 0x33, 0x01, 0x19, 0x32, 0x84, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x83, 0x19, 0x51, 0x19, 0x31, 0x21, 0x51, 0x21, 0x52, 0x01, 0x19, 0x31, 0x8B, 0x19, 0x11, 0x19, 0x31, 0x21, 0x51, 0x19, 0x31, 0x21, 0x52, 0x19, 0x32, 0x19, 0x12, 0x11, 0x12, 0x19, 0x54, 0x11, 0x54, 0x19, 0x95, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x86, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x13, 0x10, 0xF2, 0x18, 0xF1, 0x21, 0x11, 0x21, 0x52, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x11, 0x11, 0x10, 0xF1, 0x03, 0x11, 0x12, 0x81, 0x11, 0x33, 0x11, 0x32, 0x02, 0x11, 0x53, 0x04, 0x11, 0x32, 0x01, 0x11, 0x33, 0x01, 0x09, 0x34, 0x82, 0x09, 0x56, 0x09, 0x97, 0x09, 0x98, 0x01, 0x09, 0xD9, 0x84, 0x09, 0xDA, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x09, 0xFA, 0x87, 0x09, 0xF9, 0x11, 0xD7, 0x19, 0xD6, 0x11, 0x73, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x30, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, + 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x07, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x8A, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x0A, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x11, 0xF7, 0x11, 0xD7, 0x19, 0xF7, 0x01, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xD7, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x19, 0x30, 0x19, 0x31, 0x19, 0x53, 0x11, 0x75, 0x11, 0xB6, 0x1A, 0x18, 0x1A, 0x17, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x01, 0x19, 0x31, 0x89, 0x19, 0x12, 0x19, 0x33, 0x11, + 0x54, 0x11, 0xB6, 0x1A, 0x19, 0x11, 0xF8, 0x09, 0xB7, 0x09, 0x76, 0x09, 0x75, 0x01, 0x54, 0x03, 0x09, 0x54, 0x86, 0x11, 0x95, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x53, 0x19, 0x32, 0x01, 0x19, 0x11, 0x8A, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x96, 0x11, 0xF8, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0x75, 0x19, 0x33, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, + 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x51, 0x01, 0x19, 0x31, 0x8A, 0x11, 0x31, 0x11, 0x52, 0x11, 0x73, 0x11, 0x94, 0x19, 0xF6, 0x21, 0xF6, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x74, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x08, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x80, 0x29, 0x30, 0x06, 0x21, 0x30, 0x85, 0x21, 0x51, 0x19, 0x31, 0x11, 0x32, 0x09, 0x33, 0x09, 0x74, 0x11, 0xB6, 0x02, 0x19, 0xF7, 0x84, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x08, 0x21, 0x30, 0x04, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x30, 0x09, 0x29, 0x30, 0x04, 0x21, 0x30, 0x04, 0x29, 0x30, 0x07, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x26, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x03, 0x21, 0x30, 0x18, 0x29, 0x30, 0x80, 0x31, 0x50, 0x05, 0x31, 0x51, 0x80, 0x31, 0x50, 0x01, 0x31, 0x51, 0x02, 0x39, 0x71, 0x80, 0x39, 0x72, 0x02, 0x39, 0x71, 0x87, 0x39, 0x51, 0x39, 0x50, 0x41, 0x50, 0x41, 0x0E, 0x61, 0xD0, 0xBC, + 0x19, 0xD4, 0xBA, 0xDC, 0x99, 0x01, 0xDC, 0x78, 0x02, 0xDC, 0x58, 0x01, 0xD4, 0x58, 0x80, 0xD4, 0x57, 0x01, 0xD4, 0x37, 0x01, 0xD4, 0x57, 0x80, 0xCC, 0x57, 0x01, 0xCC, 0x77, 0x81, 0xC4, 0x78, 0xC4, 0x98, 0x01, 0xBC, 0x98, 0x8F, 0xBC, 0xD9, 0xAC, 0x98, 0x9C, 0x77, 0x94, 0x97, 0x8C, 0x98, 0x8C, 0xB8, 0x7C, 0xB8, 0x74, 0xF9, 0x7D, 0x9B, 0x7D, 0xFC, 0x76, 0x3D, 0x6E, 0x5D, 0x66, 0x9E, 0x5E, 0xBE, 0x56, 0xBE, 0x56, 0xDE, 0x01, 0x4E, 0xDE, 0x85, 0x46, 0xDE, 0x46, 0xFE, 0x3F, 0x1D, 0x3F, 0x3E, 0x37, 0x3E, 0x37, 0x5E, 0x01, 0x2F, 0x5E, 0x80, 0x2F, 0x7E, 0x01, 0x27, 0x7E, 0x02, 0x1F, 0x9E, 0x02, 0x17, 0x9E, 0x02, 0x1F, 0xBE, 0x80, 0x17, 0x9E, 0x02, 0x1F, 0x9E, 0x02, 0x1F, 0xBE, 0x01, 0x17, 0xBE, 0x80, 0x0F, 0xBE, 0x01, 0x0F, 0xDE, 0x80, 0x07, 0xDE, 0x02, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x04, 0x07, 0xDF, 0x01, 0x0F, 0xDF, 0x80, 0x0F, 0xBF, 0x02, 0x17, 0xBF, 0x81, 0x1F, 0xBF, 0x1F, 0x9E, 0x01, 0x27, 0x9E, 0x9C, 0x2F, 0x7E, 0x37, 0x5D, 0x3F, 0x3D, 0x4E, 0xFD, 0x66, 0x9C, 0x7D, 0xBA, 0x84, 0x77, 0x9B, 0xB6, 0xB3, 0x76, 0xBB, 0x36, 0xC3, 0x36, 0xCB, 0x36, 0xCB, 0x35, 0xCB, 0x55, 0xD3, 0x75, 0xCB, 0x75, 0xC3, 0x76, 0xC3, 0x96, 0xBB, 0x97, 0xA3, 0x56, 0x83, 0x56, 0x74, 0x79, 0x65, 0xFC, 0x4E, 0xBD, 0x36, 0xFD, 0x27, 0x1E, 0x1F, 0x3E, 0x17, 0x3E, 0x0F, 0x3F, 0x01, 0x0F, 0x5F, 0x02, 0x07, 0x7F, 0x81, 0x07, 0x5F, 0x07, 0x7F, 0x03, 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x04, 0x07, 0x1F, 0x01, 0x06, 0xFF, 0x03, 0x06, 0xFE, 0x80, 0x06, 0xDE, 0x02, + 0x06, 0xDF, 0x81, 0x06, 0xBE, 0x06, 0xBF, 0x01, 0x06, 0xBE, 0x07, 0x06, 0x9E, 0x82, 0x06, 0x7E, 0x06, 0x5E, 0x06, 0x7E, 0x05, 0x06, 0x5E, 0x01, 0x06, 0x7E, 0x80, 0x06, 0x9F, 0x01, 0x06, 0xBF, 0x01, 0x06, 0xDF, 0x01, 0x06, 0xFF, 0x81, 0x07, 0x1F, 0x0F, 0x3F, 0x01, 0x0F, 0x5F, 0x01, 0x07, 0x5F, 0x01, 0x07, 0x7F, 0x07, 0x07, 0x5F, 0x03, 0x07, 0x7F, 0x05, 0x07, 0x9F, 0x93, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x7E, 0x2F, 0x5E, 0x3F, 0x1D, 0x4E, 0xDD, 0x66, 0x7C, 0x7D, 0xDB, 0x8D, 0x3A, 0x9C, 0xB9, 0xAC, 0x99, 0xBC, 0x9A, 0xC4, 0x9A, 0xC4, 0x9B, 0xBC, 0xBD, 0x8B, 0x9D, 0x41, 0xD9, 0x19, 0x5A, 0x11, 0x5C, 0x09, 0x7C, 0x01, 0x09, 0x9D, 0x81, 0x09, 0x9E, 0x09, 0xBE, 0x01, 0x09, 0x9E, 0x95, 0x09, 0x7E, 0x11, 0x7E, 0x19, 0x7D, 0x21, 0x5D, 0x31, 0x1B, 0x50, 0xF8, 0x81, 0xDA, 0xA2, 0x39, 0xAA, 0x38, 0x99, 0xF6, 0x91, 0xF6, 0x8A, 0x76, 0x7B, 0x17, 0x5B, 0x97, 0x4C, 0x99, 0x46, 0x3E, 0x2E, 0xDF, 0x1F, 0x3F, 0x17, 0x5F, 0x17, 0xBF, 0x0F, 0xBF, 0x07, 0xBF, 0x07, 0x07, 0xDF, 0x91, 0x0F, 0xBF, 0x1F, 0x9F, 0x37, 0x1E, 0x56, 0xDE, 0x8E, 0x5F, 0x6A, 0xF4, 0x89, 0xF1, 0xB2, 0x33, 0xC1, 0xF3, 0xC1, 0xB3, 0xC9, 0xB2, 0xC9, 0x93, 0xC9, 0x72, 0xC9, 0x93, 0xD1, 0x93, 0xD1, 0xB3, 0xC9, 0x93, 0xC9, 0xB3, 0x01, 0xC1, 0xB3, 0x88, 0xB9, 0xD4, 0xB2, 0x15, 0xB2, 0x76, 0x68, 0xD0, 0x61, 0x11, 0x51, 0x51, 0x49, 0x51, 0x41, 0x71, 0x41, 0x72, 0x01, 0x39, 0x92, 0x84, 0x31, 0x71, 0x31, 0x51, 0x31, 0x71, 0x31, 0x51, 0x31, 0x31, 0x01, 0x31, 0x51, 0x80, 0x29, 0x30, + 0x01, 0x29, 0x50, 0x08, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x06, 0x29, 0x10, 0x80, 0x29, 0x30, 0x04, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x86, 0x19, 0x31, 0x19, 0x53, 0x19, 0x54, 0x19, 0x75, 0x11, 0x96, 0x19, 0xB7, 0x19, 0xD7, 0x02, 0x11, 0xB7, 0x87, 0x11, 0x96, 0x11, 0x95, 0x11, 0x74, 0x19, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x19, 0x31, 0x01, 0x21, 0x31, 0x82, 0x19, 0x31, 0x19, 0x10, 0x19, 0x31, 0x01, 0x19, 0x30, 0x85, 0x19, 0x31, 0x19, 0x10, 0x19, 0x30, 0x19, 0x31, 0x21, 0x31, 0x19, 0x10, 0x01, 0x21, 0x31, 0x81, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x32, 0x01, 0x11, 0x33, 0x88, 0x11, 0x74, 0x19, 0xB6, 0x22, 0x17, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x13, 0x11, 0x12, 0x18, 0xF1, 0x01, 0x21, 0x11, 0x81, 0x29, 0x31, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x31, 0x09, 0x19, 0x11, 0x80, 0x11, 0x11, 0x06, 0x19, 0x11, 0x01, 0x19, 0x12, 0x86, 0x11, 0x12, 0x11, 0x33, 0x11, 0x55, 0x11, 0x76, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xF9, 0x03, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x85, 0x09, 0xD8, 0x11, 0xF8, 0x19, 0xF7, 0x19, 0xB5, 0x19, 0x73, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x07, 0x29, 0x10, 0x81, 0x29, + 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x88, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0x95, 0x19, 0x74, 0x11, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x10, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x19, 0x10, 0x87, 0x19, 0x32, 0x11, 0x74, 0x11, 0xB6, 0x1A, 0x38, 0x1A, 0x18, 0x11, 0x95, 0x09, 0x54, 0x11, 0x33, 0x01, 0x19, 0x32, 0x86, 0x21, 0x52, 0x19, 0x11, 0x11, + 0x12, 0x11, 0x33, 0x11, 0x96, 0x19, 0xF8, 0x11, 0xF8, 0x01, 0x09, 0xB7, 0x8A, 0x09, 0x96, 0x09, 0x75, 0x09, 0x95, 0x01, 0x54, 0x09, 0x74, 0x11, 0x95, 0x11, 0xD6, 0x19, 0xF7, 0x11, 0xB6, 0x19, 0x95, 0x11, 0x53, 0x01, 0x19, 0x32, 0x02, 0x19, 0x11, 0x8A, 0x11, 0x12, 0x11, 0x33, 0x11, 0xD7, 0x22, 0x39, 0x19, 0xF8, 0x19, 0xB7, 0x19, 0x74, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x07, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x51, 0x8C, 0x19, 0x51, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, + 0x11, 0x73, 0x19, 0xB4, 0x19, 0xD5, 0x22, 0x17, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x86, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0xD6, 0x01, 0x19, 0xF7, 0x85, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x19, 0x30, 0x07, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x05, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x04, 0x29, 0x2F, 0x02, 0x21, 0x30, 0x09, 0x29, 0x30, 0x04, 0x21, 0x30, 0x05, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x24, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x14, 0x29, 0x30, 0x83, 0x31, 0x50, 0x29, 0x50, 0x31, 0x51, 0x31, 0x50, 0x01, 0x31, 0x51, 0x80, 0x31, 0x31, 0x01, 0x31, 0x51, 0x81, 0x31, 0x50, 0x31, + 0x71, 0x05, 0x39, 0x71, 0x88, 0x39, 0x51, 0x39, 0x50, 0x39, 0x2F, 0x41, 0x0E, 0x72, 0x52, 0xCC, 0xBA, 0xD4, 0x99, 0xDC, 0x99, 0xDC, 0x78, 0x02, 0xDC, 0x58, 0x02, 0xD4, 0x57, 0x82, 0xD4, 0x58, 0xD4, 0x37, 0xD4, 0x57, 0x01, 0xCC, 0x57, 0x02, 0xCC, 0x78, 0x8D, 0xC4, 0x78, 0xBC, 0x98, 0xBC, 0x99, 0xB4, 0xB9, 0xAC, 0xDA, 0x94, 0x58, 0x8C, 0x78, 0x84, 0xB8, 0x84, 0xF9, 0x7D, 0x39, 0x7D, 0x9A, 0x86, 0x3C, 0x7E, 0x7D, 0x76, 0x7D, 0x01, 0x66, 0x7D, 0x84, 0x5E, 0x9D, 0x56, 0xBD, 0x4E, 0xDD, 0x4E, 0xFD, 0x46, 0xFD, 0x01, 0x47, 0x1E, 0x01, 0x3F, 0x3E, 0x81, 0x37, 0x3E, 0x37, 0x5E, 0x01, 0x2F, 0x5E, 0x80, 0x2F, 0x7E, 0x02, 0x27, 0x7E, 0x02, 0x1F, 0x9E, 0x01, 0x17, 0x9E, 0x06, 0x17, 0xBE, 0x04, 0x1F, 0xBE, 0x02, 0x17, 0xBE, 0x02, 0x0F, 0xBE, 0x01, 0x0F, 0xDF, 0x01, 0x07, 0xDF, 0x83, 0x07, 0xBF, 0x0F, 0xDF, 0x0F, 0xBF, 0x0F, 0xDF, 0x02, 0x0F, 0xBF, 0x01, 0x17, 0xBF, 0x80, 0x1F, 0xBF, 0x01, 0x1F, 0x9E, 0x90, 0x27, 0x9E, 0x2F, 0x7E, 0x2F, 0x7D, 0x37, 0x5D, 0x47, 0x1C, 0x56, 0xFC, 0x6E, 0x9C, 0x7D, 0x79, 0x84, 0x57, 0x93, 0x96, 0xAB, 0x56, 0xBB, 0x36, 0xC3, 0x15, 0xCB, 0x56, 0xD3, 0x76, 0xCB, 0x35, 0xCB, 0x55, 0x01, 0xCB, 0x76, 0x8C, 0xC3, 0x96, 0xC3, 0x97, 0xB3, 0x56, 0x93, 0x35, 0x73, 0xB7, 0x6D, 0x1A, 0x5E, 0x9E, 0x3F, 0x1E, 0x2F, 0x3E, 0x27, 0x5E, 0x1F, 0x3E, 0x17, 0x3E, 0x0F, 0x3F, 0x01, 0x0F, 0x5F, 0x02, 0x07, 0x5F, 0x81, 0x07, 0x3F, 0x07, 0x5F, 0x03, 0x07, 0x3F, 0x02, 0x07, 0x1F, 0x02, 0x06, 0xFF, 0x01, 0x06, 0xFE, 0x80, 0x06, + 0xFF, 0x04, 0x06, 0xDE, 0x03, 0x06, 0xBE, 0x06, 0x06, 0x9E, 0x02, 0x06, 0x7E, 0x03, 0x06, 0x5E, 0x03, 0x06, 0x3E, 0x01, 0x06, 0x1E, 0x02, 0x06, 0x3E, 0x02, 0x06, 0x5F, 0x01, 0x06, 0x7F, 0x81, 0x06, 0x9F, 0x06, 0xBF, 0x01, 0x0E, 0xFF, 0x81, 0x0F, 0x3F, 0x07, 0x3F, 0x0B, 0x07, 0x5F, 0x03, 0x07, 0x7F, 0x05, 0x07, 0x9F, 0x94, 0x0F, 0x9F, 0x17, 0x9E, 0x27, 0x7E, 0x37, 0x3D, 0x47, 0x1D, 0x5E, 0xBC, 0x76, 0x1C, 0x85, 0x7A, 0x9C, 0xD9, 0xAC, 0x99, 0xBC, 0x99, 0xC4, 0x9A, 0xCC, 0x7A, 0xC4, 0x9C, 0xB4, 0x7E, 0x7A, 0xFB, 0x21, 0x38, 0x19, 0x5B, 0x11, 0x5C, 0x09, 0x7D, 0x09, 0x9D, 0x03, 0x09, 0x9E, 0x01, 0x09, 0x7E, 0x91, 0x11, 0x7D, 0x21, 0x5D, 0x31, 0x3B, 0x40, 0xD8, 0x79, 0xB9, 0xA2, 0x59, 0xAA, 0x38, 0xA1, 0xF6, 0x91, 0xF6, 0x8A, 0x56, 0x82, 0xF7, 0x5B, 0x57, 0x4C, 0x99, 0x46, 0x3E, 0x36, 0xDF, 0x27, 0x3F, 0x17, 0x5F, 0x0F, 0x9F, 0x01, 0x0F, 0xBF, 0x07, 0x07, 0xDF, 0x8C, 0x0F, 0xDF, 0x1F, 0x9F, 0x2F, 0x3F, 0x4E, 0xDE, 0x8E, 0xBF, 0x73, 0x76, 0x79, 0xD1, 0xAA, 0x13, 0xB9, 0xD3, 0xC1, 0xD3, 0xC9, 0xB3, 0xC9, 0x92, 0xC9, 0x93, 0x01, 0xC9, 0x72, 0x82, 0xD1, 0xB3, 0xC9, 0x93, 0xC9, 0xB3, 0x01, 0xC1, 0xB3, 0x8C, 0xB9, 0xF4, 0xB2, 0x15, 0xB2, 0x56, 0x70, 0xF1, 0x60, 0xF1, 0x59, 0x51, 0x49, 0x31, 0x49, 0x71, 0x41, 0x71, 0x41, 0x92, 0x39, 0x92, 0x31, 0x71, 0x31, 0x51, 0x01, 0x39, 0x71, 0x01, 0x31, 0x51, 0x02, 0x31, 0x50, 0x02, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x02, 0x29, 0x30, 0x02, 0x29, 0x10, 0x03, 0x29, 0x30, 0x82, + 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x20, 0xEF, 0x21, 0x10, 0x21, 0x11, 0x01, 0x19, 0x12, 0x81, 0x19, 0x33, 0x19, 0x74, 0x04, 0x19, 0x75, 0x8B, 0x19, 0x54, 0x19, 0x53, 0x11, 0x32, 0x19, 0x12, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x21, 0x31, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x31, 0x8D, 0x21, 0x32, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x19, 0x75, 0x21, 0xD6, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x34, 0x11, 0x13, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x11, 0x02, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x31, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x18, 0xF0, 0x03, 0x19, 0x10, 0x86, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x19, 0x10, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x01, 0x19, 0x32, 0x85, 0x19, 0x33, 0x19, 0x54, 0x19, 0x75, 0x19, 0xB7, 0x11, 0xB7, 0x11, 0xD8, 0x01, 0x11, 0xF9, 0x80, 0x09, 0xF8, 0x01, 0x11, 0xF9, 0x87, 0x12, 0x19, 0x1A, 0x18, 0x11, 0xB6, 0x11, 0x96, 0x19, 0x95, 0x19, 0x53, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x0B, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, + 0x02, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x11, 0x95, 0x11, 0x96, 0x02, 0x19, 0xB6, 0x86, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8A, 0x19, 0x10, 0x19, 0x52, 0x11, 0x54, 0x11, 0xB6, 0x19, 0xF7, 0x1A, 0x38, 0x11, 0xB6, 0x09, 0x54, 0x11, 0x53, 0x19, 0x32, 0x19, 0x52, 0x01, 0x19, 0x11, 0x84, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0xD7, 0x1A, 0x18, 0x01, 0x11, 0xD7, 0x8B, 0x09, 0xB7, 0x09, + 0x96, 0x09, 0x95, 0x09, 0x75, 0x09, 0x95, 0x11, 0xD6, 0x19, 0xF6, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0x74, 0x19, 0x33, 0x19, 0x32, 0x02, 0x19, 0x11, 0x8F, 0x19, 0x12, 0x11, 0x33, 0x11, 0x34, 0x19, 0xD7, 0x22, 0x39, 0x19, 0xF8, 0x19, 0xB7, 0x19, 0x74, 0x19, 0x33, 0x19, 0x31, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x86, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x19, 0x30, 0x84, 0x19, 0x31, 0x11, 0x31, 0x11, 0x52, 0x11, 0x73, 0x19, 0xB5, 0x01, 0x19, 0xD6, + 0x85, 0x21, 0xD6, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x53, 0x11, 0x12, 0x19, 0x12, 0x01, 0x19, 0x31, 0x82, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x06, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x85, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB5, 0x02, 0x19, 0xF7, 0x84, 0x11, 0x95, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x07, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x15, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x33, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x12, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x03, 0x31, 0x50, 0x04, 0x31, 0x51, 0x04, 0x39, 0x71, 0x01, 0x39, 0x51, 0x86, 0x39, 0x50, 0x39, 0x2F, 0x41, 0x0E, 0x7A, 0x93, 0xCC, 0xBA, 0xD4, 0xB9, 0xDC, 0x99, 0x01, 0xDC, 0x78, 0x81, 0xD4, 0x57, 0xD4, 0x58, 0x05, 0xD4, 0x57, 0x01, 0xCC, 0x57, 0x81, 0xCC, 0x78, 0xCC, 0x98, 0x01, 0xC4, 0x99, 0x92, 0xBC, 0x99, 0xAC, + 0x78, 0x9C, 0x78, 0x94, 0x78, 0x8C, 0x99, 0x7C, 0x78, 0x85, 0x19, 0x8D, 0x9B, 0x85, 0xFC, 0x86, 0x3C, 0x76, 0x5C, 0x6E, 0x9C, 0x66, 0x7C, 0x5E, 0x9C, 0x5E, 0xBD, 0x56, 0xBD, 0x56, 0xDD, 0x4E, 0xDD, 0x46, 0xFD, 0x01, 0x47, 0x1D, 0x01, 0x3F, 0x3D, 0x80, 0x3F, 0x3E, 0x01, 0x37, 0x5E, 0x02, 0x2F, 0x5E, 0x03, 0x27, 0x7E, 0x03, 0x1F, 0x9E, 0x01, 0x1F, 0xBE, 0x05, 0x17, 0xBE, 0x81, 0x1F, 0xBE, 0x1F, 0x9E, 0x03, 0x1F, 0xBE, 0x02, 0x17, 0xBE, 0x01, 0x17, 0xBF, 0x81, 0x0F, 0xBF, 0x17, 0xDF, 0x03, 0x0F, 0xBF, 0x04, 0x17, 0xBF, 0x81, 0x1F, 0xBF, 0x1F, 0x9F, 0x01, 0x27, 0x9E, 0x01, 0x2F, 0x7E, 0x8D, 0x37, 0x5D, 0x3F, 0x3D, 0x46, 0xFC, 0x5E, 0xDC, 0x76, 0x7C, 0x7D, 0x79, 0x84, 0x37, 0x93, 0x96, 0xAB, 0x56, 0xBB, 0x16, 0xC3, 0x15, 0xCB, 0x36, 0xCB, 0x56, 0xD3, 0x56, 0x01, 0xCB, 0x55, 0x8D, 0xCB, 0x76, 0xCB, 0x96, 0xC3, 0x96, 0xB3, 0x77, 0x9A, 0xF5, 0x83, 0x56, 0x6C, 0x58, 0x65, 0xBC, 0x4E, 0xBD, 0x37, 0x1E, 0x27, 0x3E, 0x1F, 0x3E, 0x17, 0x3E, 0x0F, 0x1E, 0x01, 0x0F, 0x3F, 0x81, 0x07, 0x3F, 0x07, 0x5F, 0x05, 0x07, 0x3F, 0x03, 0x07, 0x1F, 0x81, 0x06, 0xFF, 0x06, 0xFE, 0x01, 0x06, 0xFF, 0x80, 0x06, 0xFE, 0x04, 0x06, 0xDE, 0x80, 0x06, 0xDF, 0x03, 0x06, 0xBE, 0x81, 0x06, 0x9E, 0x06, 0xBE, 0x02, 0x06, 0x9E, 0x02, 0x06, 0x7E, 0x03, 0x06, 0x5E, 0x03, 0x06, 0x3E, 0x02, 0x06, 0x1E, 0x81, 0x05, 0xFE, 0x05, 0xFF, 0x01, 0x05, 0xFE, 0x80, 0x05, 0xFF, 0x03, 0x05, 0xFE, 0x01, 0x05, 0xFF, 0x86, 0x06, 0x1F, 0x0E, 0x5F, 0x06, 0x5F, 0x0E, 0xBF, 0x0E, + 0xDF, 0x0F, 0x1F, 0x07, 0x3F, 0x02, 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x05, 0x07, 0x5F, 0x03, 0x07, 0x7F, 0x04, 0x07, 0x9F, 0x8B, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x7E, 0x2F, 0x5E, 0x3F, 0x3D, 0x56, 0xDD, 0x6E, 0x5C, 0x7D, 0xBB, 0x95, 0x1A, 0xA4, 0xB9, 0xB4, 0x79, 0xC4, 0x7A, 0x01, 0xCC, 0x7A, 0x85, 0xC4, 0x7C, 0xAC, 0x3E, 0x41, 0x98, 0x21, 0x19, 0x19, 0x5B, 0x11, 0x7C, 0x01, 0x09, 0x7D, 0x03, 0x09, 0x9E, 0x92, 0x09, 0x7E, 0x11, 0x7D, 0x19, 0x7D, 0x29, 0x3C, 0x38, 0xD9, 0x69, 0x79, 0x9A, 0x5A, 0xAA, 0x38, 0xA1, 0xD6, 0x99, 0xF6, 0x92, 0x36, 0x82, 0xB6, 0x63, 0x57, 0x54, 0x79, 0x4E, 0x3E, 0x36, 0xDF, 0x27, 0x3F, 0x17, 0x5F, 0x0F, 0x9F, 0x01, 0x0F, 0xBF, 0x01, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x8B, 0x0F, 0xDF, 0x17, 0x9F, 0x2F, 0x5F, 0x46, 0xDE, 0x7E, 0xBF, 0x84, 0x59, 0x69, 0xD1, 0xA2, 0x54, 0xBA, 0x13, 0xC1, 0xD3, 0xC9, 0xB3, 0xC9, 0x93, 0x01, 0xC9, 0x72, 0x02, 0xC9, 0x93, 0x8D, 0xC9, 0xB3, 0xC1, 0xB3, 0xC1, 0xD3, 0xB9, 0xD4, 0xB1, 0xF4, 0xBA, 0x76, 0x89, 0x73, 0x60, 0xD0, 0x59, 0x51, 0x51, 0x51, 0x49, 0x51, 0x41, 0x71, 0x39, 0x71, 0x41, 0xB2, 0x01, 0x39, 0x51, 0x01, 0x39, 0x71, 0x01, 0x31, 0x31, 0x81, 0x31, 0x51, 0x31, 0x50, 0x01, 0x29, 0x50, 0x81, 0x29, 0x30, 0x29, 0x50, 0x05, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x06, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, + 0x21, 0x11, 0x19, 0x11, 0x01, 0x19, 0x32, 0x04, 0x19, 0x33, 0x01, 0x19, 0x12, 0x85, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x31, 0x01, 0x19, 0x11, 0x88, 0x19, 0x32, 0x11, 0x33, 0x19, 0x95, 0x21, 0xD6, 0x21, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x13, 0x01, 0x19, 0x11, 0x80, 0x21, 0x11, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x19, 0x12, 0x11, 0x33, 0x19, 0x75, 0x19, 0x95, 0x11, 0xB6, 0x11, 0x96, 0x02, 0x11, 0xD7, 0x88, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x75, 0x19, 0x74, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x06, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, + 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x87, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x88, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x11, 0x13, 0x80, 0x11, 0x12, 0x01, 0x11, 0x33, 0x81, 0x11, 0x32, 0x10, 0xF1, 0x02, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8B, 0x19, 0x10, 0x19, 0x31, 0x19, 0x73, 0x11, 0x95, 0x19, 0xF7, 0x1A, 0x18, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x11, 0x84, 0x11, 0x32, 0x11, 0x54, 0x11, 0xB6, 0x11, 0xF7, 0x11, 0xF8, 0x02, 0x11, 0xD7, 0x01, 0x09, 0x96, 0x85, 0x11, 0xB6, 0x11, 0xD6, 0x1A, 0x17, 0x19, 0xD6, + 0x19, 0xB5, 0x19, 0x54, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x8A, 0x19, 0x32, 0x11, 0x33, 0x11, 0x75, 0x19, 0xF7, 0x22, 0x39, 0x19, 0xD7, 0x19, 0x96, 0x11, 0x54, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x06, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x83, 0x11, 0x31, 0x11, 0x52, 0x11, 0x53, 0x19, + 0x95, 0x02, 0x19, 0xD6, 0x83, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x13, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x03, 0x21, 0x31, 0x15, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x04, 0x21, 0x31, 0x8D, 0x19, 0x32, 0x19, 0x52, 0x11, 0x53, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0x96, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x06, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x05, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x4D, 0x29, 0x30, 0x02, 0x29, 0x50, 0x02, 0x31, 0x50, 0x83, 0x31, 0x30, 0x31, 0x50, 0x31, 0x51, 0x39, 0x51, 0x03, 0x39, 0x71, 0x01, 0x39, 0x51, 0x01, 0x39, 0x30, 0x85, 0x39, 0x0F, 0x38, 0xEE, 0x82, 0xB3, 0xCC, 0x9A, 0xD4, 0x99, 0xDC, 0x98, 0x01, 0xDC, 0x78, 0x01, 0xD4, 0x58, 0x03, 0xD4, 0x57, 0x01, 0xCC, 0x57, 0x01, 0xCC, 0x77, 0x90, 0xCC, 0x78, 0xC4, 0x98, + 0xBC, 0xBA, 0xB4, 0xBA, 0xAC, 0xBA, 0x9C, 0x79, 0x8C, 0x99, 0x84, 0xB9, 0x85, 0x1A, 0x85, 0x7B, 0x96, 0x3D, 0x86, 0x3C, 0x7E, 0x3C, 0x76, 0x5C, 0x76, 0x7C, 0x6E, 0x7C, 0x66, 0x9C, 0x01, 0x5E, 0xBC, 0x84, 0x56, 0xBD, 0x56, 0xDD, 0x4E, 0xDD, 0x4E, 0xFD, 0x46, 0xFD, 0x01, 0x47, 0x1D, 0x02, 0x3F, 0x3D, 0x80, 0x37, 0x3E, 0x01, 0x37, 0x5E, 0x01, 0x2F, 0x5E, 0x02, 0x2F, 0x7E, 0x02, 0x27, 0x7E, 0x01, 0x27, 0x9F, 0x80, 0x27, 0x9E, 0x02, 0x1F, 0x9E, 0x80, 0x1F, 0xBE, 0x08, 0x1F, 0x9E, 0x80, 0x1F, 0xBE, 0x01, 0x1F, 0x9E, 0x01, 0x1F, 0xBF, 0x80, 0x17, 0x9F, 0x01, 0x17, 0xBF, 0x01, 0x1F, 0xBF, 0x04, 0x1F, 0x9F, 0x90, 0x27, 0x9F, 0x27, 0x9E, 0x27, 0x7E, 0x2F, 0x7E, 0x37, 0x7E, 0x37, 0x5D, 0x3F, 0x3D, 0x47, 0x1C, 0x56, 0xFC, 0x66, 0x9B, 0x7E, 0x3B, 0x74, 0x76, 0x83, 0xB5, 0x9B, 0x76, 0xAB, 0x56, 0xBB, 0x56, 0xC3, 0x56, 0x01, 0xCB, 0x56, 0x80, 0xCB, 0x55, 0x01, 0xCB, 0x35, 0x8E, 0xCB, 0x55, 0xCB, 0x76, 0xC3, 0x76, 0xBB, 0x77, 0xAB, 0x36, 0x8B, 0x36, 0x7C, 0x18, 0x65, 0x5B, 0x56, 0x5D, 0x3E, 0xFE, 0x2F, 0x3E, 0x27, 0x3E, 0x1F, 0x1E, 0x17, 0x1E, 0x0F, 0x1F, 0x01, 0x0F, 0x3F, 0x82, 0x07, 0x1F, 0x07, 0x3F, 0x07, 0x1F, 0x02, 0x07, 0x3F, 0x03, 0x07, 0x1F, 0x04, 0x06, 0xFF, 0x03, 0x06, 0xDE, 0x82, 0x06, 0xBE, 0x06, 0xDF, 0x06, 0xBE, 0x01, 0x06, 0xBF, 0x01, 0x06, 0xBE, 0x02, 0x06, 0x9E, 0x03, 0x06, 0x7E, 0x03, 0x06, 0x5E, 0x01, 0x06, 0x3E, 0x03, 0x06, 0x1E, 0x80, 0x05, 0xFE, 0x01, 0x05, 0xFF, 0x01, 0x05, 0xDE, 0x01, 0x05, 0xBE, 0x01, 0x05, + 0x9E, 0x01, 0x05, 0x7E, 0x01, 0x05, 0x5E, 0x01, 0x05, 0x3E, 0x86, 0x05, 0x5D, 0x05, 0x7E, 0x05, 0x9E, 0x05, 0xDE, 0x0E, 0x7F, 0x0E, 0xDF, 0x0F, 0x3F, 0x07, 0x07, 0x3F, 0x02, 0x07, 0x5F, 0x02, 0x07, 0x7F, 0x05, 0x07, 0x9F, 0x93, 0x0F, 0x9F, 0x17, 0x9E, 0x27, 0x7E, 0x37, 0x5E, 0x4E, 0xFD, 0x66, 0x9C, 0x75, 0xFB, 0x8D, 0x5A, 0xA4, 0xF9, 0xAC, 0x58, 0xC4, 0x59, 0xCC, 0x79, 0xCC, 0x7A, 0xCC, 0x7B, 0xBC, 0x7D, 0x7B, 0x1B, 0x31, 0x58, 0x21, 0x5A, 0x11, 0x7C, 0x09, 0x7C, 0x01, 0x09, 0x7D, 0x02, 0x09, 0x9E, 0x94, 0x09, 0x7E, 0x11, 0x7E, 0x19, 0x7D, 0x29, 0x5C, 0x38, 0xF9, 0x50, 0xF7, 0x9A, 0x5A, 0xAA, 0x38, 0xA1, 0xD6, 0x99, 0xF6, 0x92, 0x15, 0x82, 0x96, 0x6B, 0x37, 0x54, 0x59, 0x4E, 0x1E, 0x3E, 0xDF, 0x27, 0x1F, 0x1F, 0x5F, 0x0F, 0x7F, 0x0F, 0x9F, 0x0F, 0xBF, 0x03, 0x07, 0xBF, 0x03, 0x07, 0xDF, 0x8B, 0x0F, 0xDF, 0x17, 0x9F, 0x2F, 0x5F, 0x3E, 0xDE, 0x6E, 0x7E, 0x8D, 0x5C, 0x61, 0xF0, 0x9A, 0x33, 0xB2, 0x14, 0xB9, 0xF3, 0xC1, 0xB3, 0xC9, 0x92, 0x01, 0xC9, 0x93, 0x90, 0xC9, 0x73, 0xC9, 0x93, 0xC9, 0xB3, 0xC9, 0x93, 0xC1, 0x93, 0xC1, 0xD3, 0xB9, 0xD4, 0xB1, 0xD4, 0xB2, 0x35, 0x91, 0xB4, 0x60, 0xD0, 0x59, 0x31, 0x51, 0x51, 0x41, 0x51, 0x41, 0x71, 0x41, 0x72, 0x41, 0x92, 0x02, 0x39, 0x51, 0x83, 0x39, 0x71, 0x31, 0x51, 0x31, 0x31, 0x31, 0x51, 0x02, 0x31, 0x50, 0x02, 0x29, 0x50, 0x02, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, + 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x86, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x21, 0x52, 0x19, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x11, 0x01, 0x19, 0x11, 0x82, 0x11, 0x32, 0x19, 0x95, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x86, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x29, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x07, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x21, 0x11, 0x87, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x19, 0x33, 0x11, 0x33, 0x11, 0x54, 0x19, 0x75, 0x19, 0x95, 0x01, 0x19, 0x75, 0x01, 0x11, 0x54, 0x01, 0x11, 0x12, 0x01, 0x19, 0x11, 0x8D, 0x19, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, + 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x83, 0x19, 0x11, 0x18, 0xF1, 0x19, 0x11, 0x19, 0x12, 0x04, 0x19, 0x11, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x19, 0x10, 0x19, 0x11, 0x19, 0x53, 0x11, 0x74, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xD7, 0x11, 0x75, 0x01, 0x11, 0x33, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x85, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xD7, 0x01, 0x11, 0xD7, 0x81, 0x09, 0xB7, 0x11, 0xB7, 0x01, 0x11, 0xD7, 0x85, 0x19, 0xD7, 0x19, 0xF6, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x53, 0x19, 0x32, 0x02, 0x19, 0x31, 0x01, + 0x19, 0x32, 0x88, 0x11, 0x53, 0x11, 0x95, 0x1A, 0x18, 0x22, 0x39, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x92, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x0A, 0x21, 0x2F, 0x88, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x30, 0x01, 0x11, 0x11, 0x82, 0x11, 0x32, 0x11, 0x74, 0x19, 0xB5, 0x02, 0x19, 0xD6, 0x85, 0x19, + 0xB6, 0x11, 0x75, 0x11, 0x34, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x82, 0x21, 0x31, 0x19, 0x11, 0x21, 0x11, 0x0A, 0x21, 0x31, 0x82, 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x11, 0x09, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x32, 0x83, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x87, 0x19, 0x96, 0x11, 0x54, 0x11, 0x13, 0x19, 0x12, 0x19, 0x31, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x09, 0x29, 0x30, 0x09, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x4E, 0x29, 0x30, 0x02, 0x29, 0x50, 0x03, 0x31, 0x50, 0x80, 0x31, 0x51, 0x02, 0x39, 0x71, 0x02, 0x39, 0x51, 0x02, 0x31, 0x30, 0x88, 0x39, 0x0F, 0x38, 0xEE, 0x7A, 0x72, 0xCC, 0x9A, 0xD4, 0xB9, 0xD4, 0x98, 0xDC, 0x78, 0xD4, 0x57, 0xD4, 0x78, 0x01, 0xD4, 0x58, 0x01, 0xD4, 0x57, 0x02, 0xCC, 0x57, 0x91, 0xCC, 0x78, 0xC4, 0x78, 0xC4, 0x98, 0xBC, 0xB9, 0xAC, + 0x78, 0x9C, 0x58, 0x94, 0x99, 0x84, 0x78, 0x84, 0xB9, 0x8D, 0x9C, 0x8D, 0xDC, 0x8E, 0x1D, 0x86, 0x1D, 0x7E, 0x3C, 0x76, 0x3C, 0x6E, 0x5C, 0x6E, 0x7C, 0x6E, 0x9C, 0x01, 0x66, 0x9C, 0x01, 0x5E, 0xBC, 0x80, 0x56, 0xBC, 0x01, 0x56, 0xDD, 0x80, 0x4E, 0xDD, 0x01, 0x4E, 0xFD, 0x02, 0x47, 0x1D, 0x01, 0x3F, 0x1D, 0x04, 0x3F, 0x3E, 0x80, 0x37, 0x3E, 0x01, 0x37, 0x5E, 0x02, 0x2F, 0x5E, 0x80, 0x2F, 0x7E, 0x03, 0x2F, 0x9E, 0x05, 0x27, 0x9E, 0x80, 0x27, 0x7E, 0x06, 0x27, 0x9E, 0x01, 0x27, 0x9F, 0x01, 0x27, 0x9E, 0x80, 0x27, 0x9F, 0x04, 0x27, 0x7E, 0x81, 0x2F, 0x7E, 0x2F, 0x5E, 0x01, 0x37, 0x5E, 0x8C, 0x3F, 0x5E, 0x3F, 0x1D, 0x47, 0x1D, 0x56, 0xDC, 0x66, 0xBC, 0x76, 0x7C, 0x85, 0xDA, 0x7C, 0x76, 0x93, 0xB5, 0xAB, 0x76, 0xB3, 0x36, 0xBB, 0x36, 0xC3, 0x56, 0x01, 0xCB, 0x56, 0x80, 0xCB, 0x55, 0x01, 0xCB, 0x35, 0x01, 0xCB, 0x55, 0x8A, 0xCB, 0x76, 0xC3, 0x56, 0xAB, 0x36, 0x9B, 0x36, 0x83, 0xF8, 0x74, 0xFB, 0x5D, 0xFD, 0x4E, 0xDE, 0x37, 0x1E, 0x2F, 0x3F, 0x1F, 0x1E, 0x01, 0x16, 0xFE, 0x80, 0x0F, 0x1E, 0x01, 0x0F, 0x1F, 0x80, 0x07, 0x1E, 0x02, 0x0F, 0x1F, 0x80, 0x06, 0xFF, 0x01, 0x07, 0x1F, 0x80, 0x0E, 0xFF, 0x02, 0x06, 0xFF, 0x04, 0x06, 0xDF, 0x01, 0x06, 0xDE, 0x01, 0x06, 0xBE, 0x81, 0x06, 0xBF, 0x06, 0xBE, 0x01, 0x06, 0xBF, 0x02, 0x06, 0x9E, 0x04, 0x06, 0x7E, 0x02, 0x06, 0x5E, 0x02, 0x06, 0x3E, 0x01, 0x06, 0x1E, 0x02, 0x05, 0xFE, 0x02, 0x05, 0xDF, 0x01, 0x05, 0xBF, 0x86, 0x05, 0x9F, 0x05, 0x9E, 0x05, 0x7E, 0x05, 0x5E, 0x05, 0x3E, 0x05, + 0x1E, 0x04, 0xFE, 0x01, 0x04, 0xDE, 0x01, 0x04, 0xBD, 0x84, 0x04, 0xDD, 0x04, 0xFD, 0x05, 0x3D, 0x05, 0xBE, 0x06, 0x3F, 0x01, 0x0E, 0xFF, 0x82, 0x0F, 0x1F, 0x07, 0x1F, 0x07, 0x3F, 0x01, 0x07, 0x1F, 0x02, 0x07, 0x3F, 0x02, 0x07, 0x5F, 0x03, 0x07, 0x7F, 0x03, 0x07, 0x9F, 0x93, 0x0F, 0x7F, 0x17, 0x7E, 0x1F, 0x7E, 0x2F, 0x5E, 0x47, 0x1E, 0x56, 0xBD, 0x6E, 0x3C, 0x85, 0xBB, 0x9D, 0x1A, 0xAC, 0x79, 0xBC, 0x59, 0xCC, 0x59, 0xCC, 0x79, 0xCC, 0x5A, 0xC4, 0x7C, 0xAC, 0x1E, 0x49, 0xB7, 0x29, 0x59, 0x19, 0x5B, 0x11, 0x5C, 0x01, 0x09, 0x7D, 0x01, 0x09, 0x9E, 0x01, 0x09, 0x7E, 0x93, 0x11, 0x7E, 0x19, 0x7D, 0x21, 0x5C, 0x31, 0x1A, 0x48, 0xD7, 0x92, 0x3A, 0xAA, 0x38, 0xA1, 0xD6, 0xA1, 0xF6, 0x92, 0x15, 0x82, 0x76, 0x6B, 0x17, 0x5C, 0x39, 0x55, 0xDD, 0x3E, 0x9F, 0x2E, 0xFF, 0x17, 0x3F, 0x0F, 0x5F, 0x0F, 0x7F, 0x07, 0x9F, 0x05, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x8A, 0x17, 0x9F, 0x27, 0x5F, 0x3E, 0xFE, 0x66, 0x9E, 0x95, 0xFE, 0x62, 0x72, 0x92, 0x74, 0xA1, 0xF3, 0xB9, 0xD3, 0xC1, 0xD3, 0xC1, 0x93, 0x02, 0xC9, 0x93, 0x80, 0xC9, 0xB3, 0x01, 0xC9, 0x93, 0x8D, 0xC1, 0x93, 0xC1, 0xD3, 0xC1, 0xF4, 0xB9, 0xF4, 0xB2, 0x15, 0xA1, 0xF4, 0x68, 0xD0, 0x61, 0x51, 0x51, 0x51, 0x49, 0x51, 0x41, 0x51, 0x41, 0x72, 0x39, 0x72, 0x39, 0x71, 0x03, 0x39, 0x51, 0x81, 0x31, 0x31, 0x31, 0x51, 0x01, 0x31, 0x50, 0x01, 0x29, 0x50, 0x81, 0x29, 0x4F, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x04, 0x29, 0x10, 0x04, 0x29, 0x30, 0x80, 0x21, 0x10, 0x04, 0x29, 0x30, 0x01, 0x29, 0x10, + 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x19, 0x10, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x19, 0x11, 0x19, 0x12, 0x11, 0x32, 0x19, 0xB5, 0x01, 0x21, 0xD6, 0x85, 0x21, 0xF6, 0x21, 0xD5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x21, 0x11, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x33, 0x03, 0x19, 0x12, 0x02, 0x19, 0x11, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, + 0x01, 0x29, 0x10, 0x86, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x87, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x19, 0x10, 0x19, 0x31, 0x11, 0x52, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x19, 0xF8, 0x97, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x13, 0x19, 0x32, 0x19, 0x31, 0x21, 0x52, 0x19, 0x52, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x19, 0xD7, + 0x11, 0xB7, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xD7, 0x11, 0xB6, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x11, 0x8B, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x1A, 0x17, 0x22, 0x18, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x29, 0x50, 0x02, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x02, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x4F, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x06, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x51, 0x86, 0x19, 0x31, 0x11, 0x10, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x19, 0xB6, 0x01, 0x19, 0xD7, + 0x85, 0x19, 0xB6, 0x11, 0x75, 0x09, 0x33, 0x09, 0x13, 0x11, 0x32, 0x11, 0x12, 0x01, 0x10, 0xF1, 0x81, 0x19, 0x11, 0x10, 0xF1, 0x01, 0x19, 0x11, 0x03, 0x10, 0xF1, 0x02, 0x19, 0x11, 0x80, 0x11, 0x11, 0x0B, 0x19, 0x11, 0x01, 0x18, 0xF1, 0x01, 0x19, 0x11, 0x02, 0x19, 0x12, 0x82, 0x19, 0x32, 0x19, 0x12, 0x19, 0x11, 0x01, 0x19, 0x12, 0x82, 0x10, 0xF1, 0x11, 0x11, 0x19, 0x12, 0x01, 0x11, 0x12, 0x8E, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD7, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0x96, 0x11, 0x54, 0x11, 0x13, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x07, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x30, 0x0E, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x06, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x29, 0x30, 0x02, 0x21, 0x30, 0x08, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x17, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x2D, 0x29, 0x30, 0x02, 0x29, 0x50, 0x03, 0x31, 0x50, 0x01, 0x31, 0x51, 0x02, 0x39, 0x51, 0x81, 0x39, 0x50, 0x39, 0x51, 0x01, 0x39, 0x50, 0x85, 0x39, 0x2F, 0x40, 0xEE, 0x82, 0xB4, 0xCC, 0x9A, 0xD4, 0x99, 0xD4, 0x98, 0x02, 0xD4, 0x78, 0x80, 0xD4, 0x58, 0x02, 0xD4, 0x57, 0x80, 0xD4, 0x77, 0x01, 0xCC, 0x57, 0x8A, 0xC4, 0x77, 0xC4, 0x98, 0xBC, 0xB9, 0xB4, 0xDA, 0x9C, 0x58, 0x8C, 0x58, 0x84, + 0xB9, 0x84, 0xFA, 0x95, 0xFC, 0x96, 0x3D, 0x86, 0x1C, 0x01, 0x7E, 0x3C, 0x01, 0x76, 0x5C, 0x02, 0x6E, 0x7C, 0x03, 0x66, 0x9D, 0x80, 0x66, 0xBD, 0x02, 0x5E, 0xBD, 0x80, 0x5E, 0xDD, 0x02, 0x56, 0xDD, 0x81, 0x4E, 0xDD, 0x4E, 0xFD, 0x03, 0x4E, 0xDD, 0x80, 0x46, 0xBD, 0x01, 0x46, 0xDD, 0x81, 0x46, 0xFD, 0x3E, 0xFD, 0x02, 0x3F, 0x1E, 0x81, 0x37, 0x1E, 0x37, 0x3E, 0x03, 0x37, 0x3D, 0x80, 0x37, 0x5E, 0x03, 0x37, 0x7E, 0x82, 0x2F, 0x7E, 0x37, 0x7E, 0x2F, 0x5E, 0x01, 0x37, 0x7E, 0x0B, 0x2F, 0x5E, 0x02, 0x37, 0x5E, 0x8C, 0x3F, 0x3D, 0x47, 0x1D, 0x46, 0xFD, 0x4E, 0xDC, 0x56, 0x9C, 0x66, 0x9C, 0x76, 0x5C, 0x7D, 0x79, 0x7C, 0x76, 0x8B, 0xD5, 0x9B, 0x96, 0xAB, 0x56, 0xBB, 0x56, 0x01, 0xC3, 0x36, 0x01, 0xCB, 0x56, 0x80, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x80, 0xCB, 0x35, 0x01, 0xCB, 0x55, 0x8E, 0xC3, 0x56, 0xBB, 0x57, 0xA3, 0x36, 0x8B, 0xB7, 0x7C, 0xBA, 0x6D, 0xDC, 0x56, 0x9E, 0x46, 0xFE, 0x37, 0x1E, 0x26, 0xFE, 0x16, 0xBD, 0x16, 0xDE, 0x16, 0xFE, 0x0E, 0xFE, 0x0F, 0x1E, 0x01, 0x0F, 0x1F, 0x06, 0x0E, 0xFF, 0x01, 0x0E, 0xDF, 0x80, 0x06, 0xDE, 0x02, 0x06, 0xDF, 0x01, 0x06, 0xBF, 0x03, 0x06, 0xBE, 0x03, 0x06, 0x9E, 0x81, 0x06, 0x9F, 0x06, 0x9E, 0x01, 0x06, 0x7E, 0x05, 0x06, 0x5E, 0x02, 0x06, 0x3E, 0x02, 0x06, 0x1E, 0x81, 0x05, 0xFF, 0x05, 0xDE, 0x01, 0x05, 0xBE, 0x82, 0x05, 0xBF, 0x05, 0x9F, 0x05, 0x9E, 0x01, 0x05, 0x9F, 0x80, 0x05, 0x7F, 0x01, 0x05, 0x5F, 0x85, 0x05, 0x3F, 0x04, 0xFF, 0x04, 0xDE, 0x04, 0xBE, 0x04, 0x7D, 0x04, 0x5D, 0x02, + 0x04, 0x7D, 0x85, 0x04, 0xBD, 0x04, 0xFD, 0x05, 0x5D, 0x05, 0xFF, 0x0E, 0x9F, 0x0E, 0xDF, 0x01, 0x06, 0xFF, 0x80, 0x06, 0xFE, 0x02, 0x07, 0x1F, 0x02, 0x07, 0x3F, 0x01, 0x07, 0x5F, 0x07, 0x07, 0x7F, 0x8A, 0x0F, 0x7F, 0x1F, 0x7E, 0x2F, 0x7E, 0x3F, 0x3E, 0x4E, 0xDD, 0x66, 0x7C, 0x7D, 0xFB, 0x95, 0x3A, 0xA4, 0x79, 0xB4, 0x58, 0xC4, 0x59, 0x01, 0xCC, 0x59, 0x9F, 0xCC, 0x7B, 0xC4, 0x7D, 0x93, 0x5C, 0x31, 0x38, 0x21, 0x5B, 0x19, 0x5C, 0x11, 0x7D, 0x11, 0x9D, 0x09, 0x9E, 0x09, 0x7E, 0x01, 0x7E, 0x09, 0x9E, 0x11, 0x9E, 0x11, 0x7D, 0x21, 0x3C, 0x31, 0x1B, 0x40, 0xD8, 0x81, 0xD9, 0xA2, 0x59, 0xA1, 0xF7, 0xA1, 0xF6, 0x9A, 0x15, 0x82, 0x55, 0x72, 0xD6, 0x63, 0xF9, 0x55, 0x9D, 0x3E, 0x5E, 0x2E, 0xBF, 0x1F, 0x1F, 0x0F, 0x1F, 0x07, 0x3F, 0x07, 0x7F, 0x01, 0x07, 0x9F, 0x81, 0x07, 0xBF, 0x07, 0x9F, 0x02, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x8A, 0x17, 0xBF, 0x27, 0x7F, 0x36, 0xFE, 0x56, 0x7E, 0x96, 0x5F, 0x73, 0x95, 0x8A, 0x94, 0xA2, 0x34, 0xB2, 0x13, 0xC1, 0xD3, 0xC1, 0x92, 0x02, 0xC9, 0x93, 0x81, 0xD1, 0xD4, 0xC9, 0xB3, 0x01, 0xC1, 0x92, 0x8C, 0xC1, 0xB3, 0xC1, 0xD3, 0xC1, 0xF4, 0xB2, 0x14, 0xAA, 0x15, 0x68, 0xD0, 0x61, 0x51, 0x51, 0x72, 0x49, 0x51, 0x41, 0x52, 0x41, 0x72, 0x41, 0x92, 0x39, 0x72, 0x01, 0x39, 0x51, 0x81, 0x39, 0x72, 0x39, 0x51, 0x01, 0x31, 0x51, 0x02, 0x31, 0x50, 0x82, 0x29, 0x50, 0x29, 0x4F, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x04, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, + 0x29, 0x10, 0x02, 0x29, 0x30, 0x8B, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x31, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x8D, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x32, 0x19, 0x94, 0x21, 0xD6, 0x21, 0xF6, 0x22, 0x16, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x02, 0x19, 0x11, 0x82, 0x19, 0x31, 0x19, 0x12, 0x19, 0x11, 0x01, 0x19, 0x32, 0x82, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x10, 0x81, 0x29, 0x51, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, + 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x06, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x11, 0x86, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x50, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x8E, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x19, 0x53, 0x11, 0x74, 0x11, 0x95, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x52, 0x01, 0x19, 0x31, 0x85, 0x11, 0x12, 0x11, 0x33, 0x11, 0x53, 0x11, 0x95, 0x11, 0x75, 0x19, 0xB6, 0x01, 0x11, 0xB6, 0x85, 0x19, 0xB5, 0x11, 0x95, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x03, 0x19, + 0x31, 0x83, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x01, 0x22, 0x18, 0x84, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x29, 0x50, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x29, 0x30, 0x84, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x87, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x86, 0x19, 0x10, 0x19, 0x31, 0x11, 0x12, 0x11, 0x53, 0x11, 0x54, 0x11, 0x95, 0x19, 0xB6, 0x01, 0x19, 0xD7, 0x83, 0x11, 0xB6, 0x11, 0x75, 0x09, 0x54, 0x09, 0x34, 0x01, 0x09, 0x13, 0x02, 0x11, 0x13, + 0x02, 0x11, 0x12, 0x80, 0x09, 0x12, 0x03, 0x11, 0x12, 0x01, 0x11, 0x32, 0x10, 0x11, 0x12, 0x01, 0x11, 0x33, 0x81, 0x11, 0x12, 0x11, 0x33, 0x02, 0x11, 0x13, 0x02, 0x11, 0x33, 0x83, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB6, 0x01, 0x19, 0xF7, 0x86, 0x21, 0xF7, 0x19, 0x96, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x06, 0x29, 0x30, 0x82, 0x29, 0x50, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x50, 0x02, 0x29, 0x30, 0x02, 0x29, 0x50, 0x82, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x0D, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x06, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x03, 0x21, 0x30, 0x07, 0x29, 0x30, 0x05, 0x21, 0x30, 0x03, 0x29, 0x30, 0x01, 0x21, 0x30, 0x10, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x0A, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x21, 0x29, 0x30, 0x02, 0x29, 0x50, 0x03, 0x31, 0x50, 0x81, 0x31, 0x51, 0x39, 0x50, 0x02, 0x31, 0x50, 0x01, 0x39, 0x50, 0x87, 0x39, 0x30, 0x39, 0x2F, 0x41, 0x0E, 0x72, 0x52, 0xCC, 0x9A, 0xD4, 0xB9, 0xD4, 0x98, 0xDC, 0x98, 0x02, 0xD4, 0x78, 0x90, 0xD4, 0x57, 0xCC, 0x57, 0xCC, 0x78, 0xCC, 0x77, 0xCC, 0x78, 0xC4, 0x77, 0xC4, 0x78, 0xC4, 0xB9, 0xB4, 0x98, 0x94, 0x37, 0x8C, 0x37, 0x84, 0x98, 0x8D, 0x7B, 0x8D, 0xDC, 0x8E, 0x1D, 0x86, 0x1C, 0x7E, 0x3C, + 0x01, 0x76, 0x5C, 0x01, 0x6E, 0x5C, 0x82, 0x6E, 0x7C, 0x6E, 0x7D, 0x6E, 0x9D, 0x07, 0x6E, 0x7D, 0x80, 0x6E, 0x5D, 0x02, 0x6E, 0x7D, 0x81, 0x66, 0x7D, 0x6E, 0x9D, 0x01, 0x66, 0x9D, 0x86, 0x66, 0x7D, 0x66, 0x5C, 0x5E, 0x5C, 0x5E, 0x5D, 0x5E, 0x5C, 0x5E, 0x7D, 0x56, 0x9D, 0x01, 0x56, 0xBD, 0x80, 0x4E, 0xBD, 0x01, 0x4E, 0xDD, 0x83, 0x46, 0xDD, 0x46, 0xFD, 0x3E, 0xFD, 0x46, 0xFD, 0x01, 0x3E, 0xFD, 0x01, 0x3F, 0x1D, 0x02, 0x3F, 0x3D, 0x01, 0x3F, 0x1D, 0x01, 0x3F, 0x3D, 0x80, 0x3F, 0x1D, 0x01, 0x3E, 0xFD, 0x80, 0x3F, 0x1D, 0x01, 0x3F, 0x1E, 0x80, 0x3F, 0x3E, 0x04, 0x3F, 0x1E, 0x90, 0x47, 0x1E, 0x47, 0x1D, 0x4E, 0xFD, 0x56, 0xDD, 0x5E, 0x9C, 0x5E, 0x5B, 0x6E, 0x3B, 0x6D, 0xFA, 0x85, 0xDB, 0x84, 0xF8, 0x83, 0xF5, 0x9B, 0x95, 0xAB, 0x55, 0xBB, 0x56, 0xBB, 0x36, 0xC3, 0x36, 0xCB, 0x36, 0x01, 0xCB, 0x56, 0x92, 0xD3, 0x55, 0xD3, 0x35, 0xD3, 0x15, 0xD3, 0x35, 0xD3, 0x76, 0xCB, 0x56, 0xC3, 0x56, 0xBB, 0x36, 0xAB, 0x56, 0x9B, 0x97, 0x8C, 0x59, 0x75, 0x5B, 0x66, 0x3D, 0x4E, 0xBE, 0x3E, 0xDE, 0x36, 0xFF, 0x1E, 0x9D, 0x1E, 0xBE, 0x1E, 0xDE, 0x02, 0x16, 0xFE, 0x02, 0x16, 0xFF, 0x80, 0x16, 0xDE, 0x03, 0x16, 0xDF, 0x01, 0x0E, 0xDF, 0x01, 0x0E, 0xBF, 0x80, 0x0E, 0xBE, 0x01, 0x0E, 0xBF, 0x01, 0x06, 0xBF, 0x80, 0x0E, 0xBF, 0x05, 0x06, 0x9E, 0x02, 0x06, 0x7E, 0x03, 0x06, 0x5E, 0x03, 0x06, 0x3E, 0x03, 0x06, 0x1E, 0x01, 0x05, 0xFE, 0x82, 0x05, 0xDE, 0x05, 0xBE, 0x05, 0xBF, 0x02, 0x05, 0x9F, 0x02, 0x05, 0x7F, 0x85, 0x05, 0x5F, 0x05, 0x3F, 0x05, + 0x1F, 0x04, 0xDF, 0x04, 0xBE, 0x04, 0x7E, 0x01, 0x04, 0x5E, 0x81, 0x04, 0x3D, 0x04, 0x1D, 0x01, 0x04, 0x3D, 0x88, 0x04, 0x5D, 0x04, 0x7D, 0x04, 0x9D, 0x05, 0x3D, 0x0D, 0xFF, 0x0E, 0x9F, 0x0E, 0xDF, 0x0E, 0xFF, 0x06, 0xFE, 0x01, 0x06, 0xFF, 0x82, 0x06, 0xFE, 0x07, 0x1F, 0x07, 0x1E, 0x01, 0x07, 0x3F, 0x02, 0x07, 0x5F, 0x05, 0x07, 0x7F, 0x8A, 0x0F, 0x7F, 0x17, 0x7F, 0x27, 0x7E, 0x37, 0x3E, 0x4E, 0xFD, 0x5E, 0x7C, 0x76, 0x1C, 0x8D, 0x7B, 0x9C, 0x99, 0xAC, 0x38, 0xC4, 0x58, 0x01, 0xCC, 0x59, 0x85, 0xCC, 0x5A, 0xCC, 0x7B, 0xC4, 0x9F, 0x49, 0x98, 0x29, 0x39, 0x19, 0x5B, 0x01, 0x11, 0x7D, 0x81, 0x09, 0x7D, 0x09, 0x7E, 0x01, 0x09, 0x9E, 0x92, 0x11, 0x9E, 0x11, 0x7D, 0x19, 0x5C, 0x29, 0x3B, 0x38, 0xF8, 0x71, 0x98, 0x9A, 0x39, 0xA1, 0xF7, 0xA1, 0xF6, 0x99, 0xF5, 0x8A, 0x35, 0x72, 0xB6, 0x63, 0xB8, 0x55, 0x5C, 0x3D, 0xFE, 0x2E, 0x9F, 0x1E, 0xDF, 0x0E, 0xDF, 0x06, 0xFF, 0x01, 0x07, 0x7F, 0x03, 0x07, 0x9F, 0x80, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x8B, 0x0F, 0x9F, 0x27, 0x7F, 0x37, 0x1F, 0x56, 0xBE, 0x86, 0x5F, 0x7C, 0x79, 0x72, 0x73, 0x9A, 0x53, 0xB2, 0x13, 0xB9, 0xD3, 0xC1, 0x93, 0xC9, 0xB3, 0x01, 0xC9, 0x93, 0x8F, 0xD1, 0xB3, 0xC9, 0xB3, 0xC1, 0x72, 0xC1, 0x93, 0xC1, 0xB3, 0xC1, 0xD4, 0xB9, 0xD4, 0xB1, 0xF4, 0xAA, 0x35, 0x68, 0xD0, 0x61, 0x31, 0x51, 0x72, 0x49, 0x72, 0x41, 0x51, 0x41, 0x72, 0x41, 0x92, 0x01, 0x39, 0x72, 0x82, 0x39, 0x51, 0x39, 0x72, 0x39, 0x51, 0x01, 0x31, 0x51, 0x01, 0x31, 0x50, 0x01, 0x29, 0x50, 0x80, 0x29, 0x4F, + 0x01, 0x29, 0x50, 0x82, 0x29, 0x30, 0x29, 0x50, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x09, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xD6, 0x01, 0x22, 0x16, 0x86, 0x19, 0xB4, 0x19, 0x73, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x11, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x84, 0x21, 0x31, 0x21, 0x11, 0x21, 0x10, 0x19, 0x10, 0x21, 0x11, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x82, 0x19, 0x10, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x84, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, + 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x04, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x87, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x84, 0x19, 0x11, 0x19, 0x52, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x01, 0x19, 0xF7, 0x85, 0x19, 0xD7, 0x11, 0x74, 0x09, 0x12, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x11, 0x12, 0x84, 0x11, 0x33, 0x19, 0x53, 0x19, 0x54, 0x19, 0x74, + 0x11, 0x54, 0x01, 0x11, 0x33, 0x83, 0x11, 0x52, 0x19, 0x52, 0x19, 0x32, 0x19, 0x52, 0x01, 0x19, 0x31, 0x01, 0x11, 0x11, 0x8E, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x22, 0x17, 0x22, 0x18, 0x22, 0x17, 0x11, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x86, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x82, 0x29, 0x50, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x06, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, + 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0xD7, 0x11, 0xB7, 0x19, 0xD7, 0x03, 0x19, 0xB7, 0x80, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x80, 0x19, 0xB6, 0x02, 0x19, 0xD6, 0x06, 0x19, 0xB6, 0x85, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0xD6, 0x03, 0x19, 0xB6, 0x80, 0x19, 0x96, 0x07, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x81, 0x19, 0xF7, 0x19, 0xD6, 0x03, 0x19, 0xF7, 0x87, 0x1A, 0x17, 0x22, 0x38, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x53, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x4F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x50, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x50, 0x80, 0x29, 0x30, 0x04, 0x29, 0x50, 0x07, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x04, 0x29, 0x30, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x07, 0x29, 0x30, 0x06, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x13, 0x29, 0x30, 0x80, 0x21, 0x10, 0x11, 0x29, 0x30, 0x80, + 0x21, 0x2F, 0x15, 0x29, 0x30, 0x02, 0x29, 0x50, 0x01, 0x31, 0x50, 0x81, 0x31, 0x30, 0x31, 0x50, 0x01, 0x39, 0x51, 0x81, 0x39, 0x50, 0x31, 0x30, 0x02, 0x39, 0x30, 0x83, 0x39, 0x0F, 0x38, 0xEE, 0x82, 0xB3, 0xCC, 0xBA, 0x01, 0xD4, 0x99, 0x80, 0xD4, 0x98, 0x01, 0xD4, 0x78, 0x81, 0xD4, 0x57, 0xD4, 0x77, 0x02, 0xCC, 0x78, 0x8D, 0xC4, 0x78, 0xC4, 0x98, 0xC4, 0xB9, 0xBC, 0xDA, 0xA4, 0x58, 0x8C, 0x17, 0x84, 0x98, 0x95, 0x7B, 0x9E, 0x3E, 0x86, 0x1C, 0x7E, 0x1C, 0x7E, 0x3D, 0x76, 0x5C, 0x6E, 0x5C, 0x03, 0x6E, 0x7D, 0x80, 0x66, 0x7D, 0x01, 0x6E, 0x7D, 0x84, 0x6E, 0x5D, 0x76, 0x3D, 0x75, 0xFC, 0x75, 0xDC, 0x75, 0xBC, 0x02, 0x75, 0x9B, 0x02, 0x75, 0x7B, 0x05, 0x75, 0x5A, 0x01, 0x75, 0x7A, 0x83, 0x75, 0x9B, 0x6D, 0xBB, 0x75, 0xFC, 0x6E, 0x1C, 0x01, 0x6E, 0x3C, 0x84, 0x66, 0x5D, 0x66, 0x5C, 0x5E, 0x7D, 0x5E, 0x9D, 0x56, 0xBD, 0x04, 0x56, 0xDD, 0x81, 0x56, 0xFD, 0x4E, 0xFD, 0x01, 0x57, 0x1D, 0x03, 0x56, 0xFD, 0x80, 0x57, 0x1D, 0x01, 0x56, 0xFD, 0x82, 0x4E, 0xFD, 0x57, 0x1E, 0x4E, 0xFD, 0x02, 0x56, 0xFD, 0x01, 0x56, 0xDD, 0x8F, 0x56, 0xBD, 0x5E, 0xBD, 0x66, 0x9D, 0x66, 0x5C, 0x6D, 0xFB, 0x6D, 0x9A, 0x7D, 0x39, 0x7C, 0xB8, 0x84, 0x77, 0x83, 0xB5, 0x93, 0x95, 0xA3, 0x96, 0xB3, 0x76, 0xBB, 0x56, 0xC3, 0x56, 0xC3, 0x36, 0x01, 0xCB, 0x56, 0x81, 0xD3, 0x56, 0xD3, 0x55, 0x02, 0xD3, 0x35, 0x90, 0xD3, 0x55, 0xD3, 0x76, 0xCB, 0x56, 0xC3, 0x36, 0xB3, 0x15, 0xA3, 0x76, 0x94, 0x18, 0x8C, 0xFA, 0x75, 0xDC, 0x5E, 0x5D, 0x4E, 0x9E, 0x46, 0xBE, 0x2E, + 0x5D, 0x26, 0x7E, 0x1E, 0xBE, 0x1E, 0xDE, 0x1E, 0xFE, 0x01, 0x16, 0xFE, 0x01, 0x16, 0xDE, 0x83, 0x16, 0xDF, 0x16, 0xBE, 0x1E, 0xDF, 0x16, 0xBE, 0x02, 0x1E, 0xBF, 0x80, 0x16, 0xBE, 0x01, 0x16, 0x9E, 0x03, 0x0E, 0x9F, 0x80, 0x0E, 0x9E, 0x02, 0x06, 0x9E, 0x05, 0x06, 0x7E, 0x02, 0x06, 0x5E, 0x02, 0x06, 0x3E, 0x04, 0x06, 0x1E, 0x80, 0x05, 0xFE, 0x01, 0x05, 0xDE, 0x01, 0x05, 0xBE, 0x81, 0x05, 0x9E, 0x05, 0x9F, 0x02, 0x05, 0x7F, 0x86, 0x05, 0x5F, 0x05, 0x3F, 0x05, 0x1F, 0x04, 0xFF, 0x04, 0xDF, 0x04, 0x9E, 0x04, 0x7E, 0x01, 0x04, 0x5E, 0x01, 0x04, 0x3E, 0x05, 0x04, 0x1D, 0x84, 0x04, 0x3D, 0x04, 0x7D, 0x04, 0xDC, 0x0D, 0xDF, 0x16, 0x7F, 0x02, 0x0E, 0xDF, 0x01, 0x06, 0xDE, 0x80, 0x06, 0xFE, 0x01, 0x07, 0x1E, 0x02, 0x07, 0x3F, 0x02, 0x07, 0x5F, 0x02, 0x07, 0x7F, 0x01, 0x0F, 0x7F, 0x94, 0x17, 0x7F, 0x27, 0x7E, 0x37, 0x3E, 0x46, 0xFE, 0x56, 0xBD, 0x6E, 0x3C, 0x85, 0xBB, 0x94, 0xB8, 0xA4, 0x38, 0xBC, 0x58, 0xC4, 0x38, 0xCC, 0x38, 0xCC, 0x39, 0xCC, 0x3A, 0xC4, 0x7D, 0x93, 0x7D, 0x31, 0x37, 0x21, 0x5A, 0x19, 0x5C, 0x11, 0x7D, 0x09, 0x7D, 0x03, 0x09, 0x9E, 0x85, 0x11, 0x7D, 0x19, 0x5C, 0x29, 0x3B, 0x39, 0x19, 0x69, 0x78, 0x9A, 0x5A, 0x01, 0xA1, 0xF7, 0x8B, 0x99, 0xF6, 0x8A, 0x15, 0x7A, 0x96, 0x63, 0x78, 0x54, 0xDB, 0x3D, 0xBE, 0x2E, 0x3F, 0x1E, 0xBF, 0x0E, 0xBF, 0x06, 0xDF, 0x07, 0x3F, 0x07, 0x5F, 0x02, 0x07, 0x7F, 0x80, 0x07, 0x9F, 0x01, 0x07, 0xBF, 0x90, 0x07, 0xDF, 0x07, 0xBF, 0x0F, 0x9F, 0x1F, 0x5F, 0x2F, 0x1F, 0x4E, 0xBE, 0x76, + 0x7E, 0x85, 0x3B, 0x5A, 0x31, 0x8A, 0x12, 0xAA, 0x13, 0xB9, 0xF3, 0xC1, 0xD3, 0xC9, 0xB3, 0xC9, 0x93, 0xC9, 0x73, 0xD1, 0xB3, 0x02, 0xC9, 0x93, 0x88, 0xC1, 0x93, 0xC1, 0xD4, 0xB9, 0xB3, 0xB1, 0xF4, 0xB2, 0x76, 0x79, 0x11, 0x59, 0x11, 0x51, 0x51, 0x49, 0x51, 0x01, 0x41, 0x72, 0x80, 0x41, 0x92, 0x01, 0x39, 0x72, 0x80, 0x31, 0x31, 0x02, 0x39, 0x51, 0x81, 0x31, 0x51, 0x31, 0x50, 0x01, 0x29, 0x30, 0x01, 0x29, 0x50, 0x80, 0x29, 0x71, 0x01, 0x29, 0x51, 0x81, 0x29, 0x30, 0x29, 0x31, 0x01, 0x29, 0x30, 0x83, 0x21, 0x30, 0x29, 0x31, 0x21, 0x30, 0x29, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x85, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x06, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x08, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x51, 0x19, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x53, 0x11, 0x94, 0x19, 0xF6, 0x22, 0x37, 0x1A, 0x16, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, + 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x89, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, + 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x95, 0x02, 0x19, 0xF7, 0x87, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x32, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x52, 0x21, 0x72, 0x01, 0x19, 0x32, 0x85, 0x19, 0x11, 0x11, 0x12, 0x19, 0x32, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x19, 0x52, 0x01, 0x19, 0x32, 0x8A, 0x11, 0x11, 0x11, 0x12, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x22, 0x17, 0x22, 0x38, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x53, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x4F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x85, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x4F, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x83, 0x29, + 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x31, 0x01, 0x19, 0x31, 0x85, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x19, 0xF7, 0x08, 0x19, 0xF8, 0x05, 0x1A, 0x18, 0x80, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x80, 0x19, 0xF8, 0x02, 0x19, 0xF7, 0x87, 0x22, 0x18, 0x19, 0xF7, 0x22, 0x18, 0x1A, 0x18, 0x22, 0x18, 0x19, 0xF8, 0x1A, 0x18, 0x19, 0xF8, 0x03, 0x22, 0x18, 0x80, 0x1A, 0x18, 0x02, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xF8, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF7, 0x19, 0xF8, 0x02, 0x19, 0xF7, 0x88, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x32, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x29, 0x50, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, + 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x10, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x0D, 0x21, 0x30, 0x0E, 0x29, 0x30, 0x80, 0x21, 0x30, 0x08, 0x29, 0x30, 0x01, 0x21, 0x30, 0x12, 0x29, 0x30, 0x03, 0x31, 0x50, 0x80, 0x31, 0x51, 0x02, 0x31, 0x50, 0x01, 0x31, 0x30, 0x86, 0x39, 0x30, 0x39, 0x0F, 0x40, 0xEE, 0x7A, 0x93, 0xCC, 0xBA, 0xD4, 0xB9, 0xD4, 0x99, 0x03, 0xD4, 0x78, 0x80, 0xCC, 0x77, 0x01, 0xCC, 0x78, 0x01, 0xC4, 0x78, 0x8F, 0xBC, 0xB9, 0xB4, 0xB9, 0x9C, 0x37, 0x94, 0x57, 0x7C, 0x17, 0x9D, 0x7B, 0x95, 0xDC, 0x8E, 0x1C, 0x86, 0x1C, 0x7E, 0x3C, 0x76, 0x3C, 0x6E, 0x5C, 0x6E, 0x7D, 0x6E, 0x5D, 0x6E, 0x7D, 0x66, 0x7D, 0x01, 0x66, 0x9D, 0x01, 0x6E, 0x5D, 0x86, 0x76, 0x5E, 0x76, 0x1D, 0x75, 0xBC, 0x75, 0x5B, 0x75, 0x3B, 0x7D, 0x1B, 0x7D, 0x1A, 0x01, 0x85, 0x1A, 0x82, 0x84, 0xFA, 0x84, 0xDA, 0x8C, 0xDA, 0x03, 0x8C, 0xD9, 0x80, 0x8C, 0xB8, 0x01, 0x8C, 0xD8, 0x8B, 0x8C, 0xD9, 0x8C, 0xF9, 0x85, 0x19, 0x85, 0x3A, 0x85, 0x5A, 0x85, 0x7B, 0x7D, 0x7B, 0x7D, 0x9B, 0x75, 0x9B, 0x7D, 0xDB, 0x7E, 0x1C, 0x7E, 0x5D, 0x01, 0x7E, 0x7D, 0x84, 0x76, 0x5D, 0x76, 0x3C, 0x76, 0x5C, 0x76, 0x7D, 0x76, 0x9D, 0x05, 0x76, 0x7D, 0x80, 0x76, 0x9D, 0x05, 0x76, 0x7D, 0x01, 0x76, 0x5D, 0x8F, 0x76, 0x3C, 0x76, 0x3D, 0x75, 0xFC, 0x75, 0xDB, 0x75, 0x7A, 0x75, 0x19, 0x7C, 0xB8, 0x84, 0x77, 0x8C, 0x16, 0x93, 0xD6, 0x9B, 0x95, 0xA3, 0x55, 0xB3, 0x56, 0xBB, 0x56, 0xC3, 0x76, 0xC3, + 0x56, 0x02, 0xCB, 0x56, 0x80, 0xD3, 0x56, 0x03, 0xD3, 0x35, 0x8E, 0xD3, 0x55, 0xD3, 0x56, 0xCB, 0x56, 0xC3, 0x35, 0xBB, 0x15, 0xAB, 0x15, 0xA3, 0xB7, 0x94, 0x79, 0x85, 0x5B, 0x75, 0xFC, 0x66, 0x5D, 0x56, 0x7E, 0x3E, 0x1C, 0x36, 0x3D, 0x36, 0x7E, 0x01, 0x26, 0xBE, 0x82, 0x1E, 0xDE, 0x1E, 0xDF, 0x1E, 0xDE, 0x01, 0x1E, 0xBE, 0x01, 0x1E, 0x9E, 0x80, 0x1E, 0xBE, 0x01, 0x1E, 0x9E, 0x01, 0x26, 0x9E, 0x80, 0x1E, 0x9E, 0x01, 0x1E, 0x7E, 0x01, 0x16, 0x7E, 0x81, 0x16, 0x7F, 0x0E, 0x7F, 0x02, 0x0E, 0x7E, 0x83, 0x0E, 0x9F, 0x06, 0x7E, 0x06, 0x5E, 0x06, 0x7E, 0x02, 0x06, 0x5E, 0x04, 0x06, 0x3E, 0x01, 0x06, 0x1E, 0x03, 0x05, 0xFE, 0x80, 0x05, 0xDE, 0x01, 0x05, 0xBE, 0x01, 0x05, 0x9E, 0x80, 0x05, 0x7F, 0x01, 0x0D, 0x7F, 0x86, 0x0D, 0x5F, 0x05, 0x5F, 0x05, 0x3F, 0x04, 0xFE, 0x04, 0xDE, 0x04, 0x9E, 0x04, 0x7E, 0x01, 0x04, 0x5E, 0x01, 0x04, 0x3E, 0x01, 0x04, 0x1E, 0x80, 0x04, 0x1D, 0x01, 0x03, 0xFD, 0x02, 0x03, 0xDD, 0x87, 0x03, 0xDC, 0x04, 0x1C, 0x04, 0x3C, 0x05, 0x1D, 0x15, 0xFF, 0x16, 0x9F, 0x16, 0xBF, 0x0E, 0xBF, 0x01, 0x0E, 0xBE, 0x80, 0x06, 0xDE, 0x01, 0x06, 0xFE, 0x01, 0x07, 0x1F, 0x02, 0x07, 0x3F, 0x01, 0x07, 0x5F, 0x02, 0x0F, 0x7F, 0x95, 0x17, 0x7F, 0x17, 0x5E, 0x27, 0x5E, 0x2F, 0x3E, 0x3F, 0x1E, 0x4E, 0xBD, 0x66, 0x5C, 0x7D, 0xDB, 0x8C, 0xF9, 0xA4, 0x78, 0xB4, 0x58, 0xC4, 0x38, 0xCC, 0x38, 0xCC, 0x18, 0xCC, 0x39, 0xCC, 0x5B, 0xBC, 0x5E, 0x49, 0x76, 0x29, 0x59, 0x19, 0x5C, 0x11, 0x5C, 0x09, 0x7D, 0x02, 0x09, 0x9E, 0x94, 0x09, + 0x7E, 0x11, 0x7D, 0x11, 0x5C, 0x21, 0x5C, 0x39, 0x3A, 0x61, 0x58, 0x92, 0x3A, 0xA2, 0x18, 0xA1, 0xF7, 0x99, 0xD6, 0x92, 0x16, 0x7A, 0x76, 0x6B, 0x38, 0x54, 0x7B, 0x3D, 0x5D, 0x2D, 0xFE, 0x1E, 0x5F, 0x0E, 0x7F, 0x06, 0x9F, 0x06, 0xFF, 0x07, 0x3F, 0x01, 0x07, 0x7F, 0x02, 0x07, 0x9F, 0x02, 0x07, 0xBF, 0x8A, 0x0F, 0x9F, 0x1F, 0x5F, 0x37, 0x5F, 0x46, 0xDE, 0x66, 0x7E, 0x8D, 0xFE, 0x5A, 0x92, 0x82, 0x53, 0xA2, 0x33, 0xB9, 0xF3, 0xC1, 0xB3, 0x01, 0xC9, 0x93, 0x01, 0xC9, 0x73, 0x01, 0xC9, 0x93, 0x89, 0xC1, 0x92, 0xC1, 0x93, 0xC1, 0xD3, 0xC1, 0xD4, 0xB9, 0xF4, 0xB2, 0x35, 0x79, 0x31, 0x58, 0xF0, 0x59, 0x72, 0x49, 0x51, 0x02, 0x41, 0x72, 0x01, 0x39, 0x72, 0x03, 0x39, 0x51, 0x01, 0x31, 0x51, 0x01, 0x29, 0x30, 0x81, 0x29, 0x50, 0x29, 0x71, 0x02, 0x29, 0x51, 0x80, 0x21, 0x51, 0x09, 0x21, 0x31, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x87, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x07, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x50, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x94, 0x19, 0xF6, 0x01, 0x1A, 0x17, 0x88, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, + 0x19, 0x32, 0x21, 0x31, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x29, 0x31, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x07, 0x21, 0x30, 0x05, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x86, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x85, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x08, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, + 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x02, 0x19, 0xF7, 0x83, 0x11, 0xB5, 0x09, 0x53, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x32, 0x01, 0x21, 0x52, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x05, 0x19, 0x32, 0x01, 0x19, 0x52, 0x8C, 0x19, 0x32, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x22, 0x17, 0x22, 0x38, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x53, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, + 0x21, 0x30, 0x05, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x08, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x03, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x19, 0x74, 0x19, 0x95, 0x19, 0xB6, 0x02, 0x19, 0xD7, 0x80, 0x19, 0xD8, 0x02, 0x19, 0xD7, 0x81, 0x19, 0xF8, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x82, 0x19, 0xD7, 0x11, 0xD7, 0x19, 0xF8, 0x03, 0x19, 0xF7, 0x01, 0x19, 0xD7, 0x80, 0x19, 0xF7, 0x03, 0x19, 0xD7, 0x81, 0x19, 0xF7, 0x19, 0xD7, 0x02, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x81, 0x19, 0xD7, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x02, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x80, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x80, 0x19, 0xB6, 0x01, 0x11, 0x54, 0x81, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x0A, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x25, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x1D, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, + 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x10, 0x29, 0x30, 0x07, 0x31, 0x50, 0x01, 0x31, 0x30, 0x84, 0x31, 0x0F, 0x39, 0x0F, 0x38, 0xCD, 0x7A, 0x93, 0xCC, 0xBA, 0x01, 0xD4, 0x99, 0x03, 0xD4, 0x78, 0x90, 0xCC, 0x78, 0xCC, 0x77, 0xCC, 0x78, 0xC4, 0x98, 0xC4, 0xB9, 0xB4, 0xBA, 0xA4, 0x79, 0x83, 0xF7, 0x8C, 0x78, 0x95, 0x1A, 0xA6, 0x3E, 0x8D, 0xFC, 0x86, 0x1C, 0x7E, 0x3C, 0x76, 0x5C, 0x76, 0x5D, 0x6E, 0x5D, 0x02, 0x6E, 0x7D, 0x01, 0x66, 0x9D, 0x88, 0x66, 0x9E, 0x6E, 0x7E, 0x76, 0x5E, 0x7E, 0x3E, 0x75, 0x7C, 0x74, 0xFA, 0x74, 0xDA, 0x84, 0xFA, 0x84, 0xDA, 0x01, 0x8C, 0xBA, 0x01, 0x94, 0xB9, 0x80, 0x94, 0x99, 0x02, 0x9C, 0x99, 0x82, 0x9C, 0xB9, 0xA4, 0x99, 0xA4, 0x98, 0x01, 0xA4, 0x78, 0x01, 0x9C, 0x57, 0x01, 0x9C, 0x37, 0x01, 0x94, 0x37, 0x80, 0x94, 0x17, 0x02, 0x8C, 0x17, 0x01, 0x84, 0x17, 0x86, 0x7B, 0xF6, 0x7C, 0x17, 0x73, 0xF6, 0x74, 0x16, 0x73, 0xF6, 0x74, 0x16, 0x73, 0xF6, 0x01, 0x74, 0x16, 0x82, 0x74, 0x37, 0x74, 0x16, 0x74, 0x17, 0x01, 0x74, 0x37, 0x07, 0x73, 0xF6, 0x81, 0x73, 0xD6, 0x7B, 0xD6, 0x02, 0x7B, 0xB6, 0x87, 0x83, 0xB6, 0x8B, 0x96, 0x93, 0x96, 0x9B, 0x96, 0xA3, 0x96, 0xAB, 0x76, 0xB3, 0x76, 0xBB, 0x76, 0x01, 0xC3, 0x76, 0x02, 0xCB, 0x56, 0x80, 0xD3, 0x56, 0x01, 0xD3, 0x36, 0x80, 0xD3, 0x35, 0x02, 0xD3, 0x36, 0x01, 0xD3, 0x56, 0x8F, 0xC3, 0x35, 0xBB, 0x15, 0xB3, 0x15, 0xA3, 0x56, 0x9B, 0xD7, 0x8C, 0xB9, 0x85, 0x5B, 0x75, 0xDC, 0x6E, 0x3D, 0x5D, + 0xDC, 0x45, 0xBC, 0x46, 0x1E, 0x3E, 0x7E, 0x2E, 0x9E, 0x2E, 0xBE, 0x26, 0xBE, 0x01, 0x26, 0x9E, 0x02, 0x26, 0x7E, 0x01, 0x2E, 0xBE, 0x01, 0x2E, 0x9E, 0x01, 0x2E, 0x7E, 0x01, 0x2E, 0x5E, 0x82, 0x26, 0x5E, 0x26, 0x7E, 0x1E, 0x7E, 0x01, 0x16, 0x7E, 0x01, 0x0E, 0x7E, 0x80, 0x0E, 0x5E, 0x01, 0x0E, 0x7E, 0x80, 0x0E, 0x5E, 0x02, 0x06, 0x5E, 0x02, 0x06, 0x3E, 0x03, 0x06, 0x1E, 0x83, 0x05, 0xFE, 0x0D, 0xFE, 0x05, 0xDE, 0x0D, 0xDE, 0x02, 0x0D, 0xBE, 0x80, 0x0D, 0x9E, 0x01, 0x0D, 0x7E, 0x80, 0x0D, 0x7F, 0x01, 0x0D, 0x5F, 0x84, 0x0D, 0x3F, 0x0C, 0xFE, 0x0C, 0xDE, 0x04, 0xBE, 0x04, 0x9E, 0x01, 0x04, 0x5E, 0x01, 0x04, 0x3E, 0x01, 0x04, 0x1E, 0x01, 0x03, 0xFE, 0x02, 0x03, 0xFD, 0x80, 0x0B, 0xFD, 0x01, 0x03, 0xDD, 0x8C, 0x03, 0xBC, 0x03, 0xDC, 0x03, 0xFC, 0x04, 0x7D, 0x04, 0xFD, 0x15, 0xDF, 0x16, 0x3F, 0x16, 0x9F, 0x16, 0xBF, 0x0E, 0xBE, 0x0E, 0x9E, 0x0E, 0xBE, 0x0E, 0xDF, 0x01, 0x0E, 0xFF, 0x81, 0x0F, 0x1F, 0x0F, 0x1E, 0x02, 0x0F, 0x3F, 0x02, 0x0F, 0x5F, 0x8B, 0x17, 0x5E, 0x1F, 0x5E, 0x27, 0x5E, 0x2F, 0x3E, 0x3F, 0x1E, 0x4E, 0xBD, 0x5E, 0x5C, 0x75, 0xFC, 0x8D, 0x5A, 0x9C, 0xB8, 0xAC, 0x38, 0xC4, 0x18, 0x02, 0xCC, 0x18, 0x87, 0xCC, 0x3A, 0xCC, 0x7D, 0x93, 0x3C, 0x28, 0xF7, 0x19, 0x3B, 0x11, 0x5C, 0x11, 0x7D, 0x09, 0x7D, 0x01, 0x09, 0x9E, 0x96, 0x09, 0x7D, 0x11, 0x7D, 0x19, 0x7D, 0x21, 0x5C, 0x31, 0x3A, 0x59, 0x58, 0x89, 0xF9, 0xA2, 0x18, 0xAA, 0x17, 0x99, 0xF6, 0x92, 0x16, 0x82, 0x56, 0x6A, 0xF8, 0x53, 0xFA, 0x3C, 0xDC, 0x2D, 0x9E, + 0x1E, 0x1F, 0x0E, 0x1E, 0x06, 0x5F, 0x06, 0xDF, 0x07, 0x1F, 0x07, 0x5F, 0x07, 0x7F, 0x02, 0x07, 0x9F, 0x80, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x8C, 0x0F, 0x9F, 0x1F, 0x7F, 0x2F, 0x5F, 0x3E, 0xFF, 0x5E, 0x7E, 0x86, 0x3E, 0x63, 0x34, 0x72, 0x32, 0xA2, 0x54, 0xB1, 0xF3, 0xC1, 0xD3, 0xC1, 0x93, 0xC1, 0x72, 0x01, 0xC9, 0x93, 0x83, 0xD1, 0x93, 0xC9, 0x92, 0xC9, 0x93, 0xC1, 0x93, 0x01, 0xC1, 0xD4, 0x88, 0xB9, 0xF4, 0xB2, 0x55, 0x81, 0x51, 0x58, 0xD0, 0x59, 0x72, 0x49, 0x51, 0x41, 0x72, 0x41, 0x51, 0x41, 0x72, 0x01, 0x39, 0x72, 0x03, 0x39, 0x51, 0x80, 0x39, 0x71, 0x01, 0x31, 0x51, 0x80, 0x29, 0x50, 0x02, 0x29, 0x51, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x02, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x81, 0x21, 0x52, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x07, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x51, 0x8D, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x94, 0x19, 0xF6, 0x19, 0xF7, 0x19, 0xF6, 0x19, 0xD5, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x21, 0x31, 0x21, 0x11, 0x02, 0x21, 0x31, 0x03, 0x21, 0x10, 0x01, + 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x81, 0x29, 0x30, 0x20, 0xEF, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x08, 0x21, 0x30, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x84, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, + 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x11, 0x75, 0x19, 0xF7, 0x11, 0xF7, 0x1A, 0x17, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x19, 0x52, 0x01, 0x19, 0x32, 0x03, 0x19, 0x31, 0x04, 0x19, 0x32, 0x02, 0x11, 0x32, 0x8E, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x19, 0xF7, 0x22, 0x38, 0x22, 0x17, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x30, 0x21, 0x50, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x89, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, + 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x8F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x52, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x19, 0xB6, 0x11, 0x96, 0x19, 0xB6, 0x11, 0xB6, 0x19, 0xB7, 0x01, 0x11, 0x96, 0x83, 0x19, 0xB6, 0x19, 0xD6, 0x11, 0xB6, 0x19, 0xB6, 0x01, 0x11, 0xB6, 0x01, 0x19, 0xB6, 0x82, 0x11, 0xB6, 0x19, 0xB6, 0x19, 0x96, 0x02, 0x19, 0xB6, 0x82, 0x19, 0x96, 0x19, 0xB6, 0x11, 0x96, 0x04, 0x19, 0xB6, 0x82, 0x19, 0x96, 0x19, 0xB6, 0x19, 0x96, 0x02, 0x19, 0xB6, 0x80, 0x19, 0x96, 0x01, 0x19, 0xB6, 0x80, 0x11, 0x96, 0x01, 0x19, 0x96, 0x81, 0x11, 0x96, 0x11, 0x76, 0x01, 0x11, 0x95, 0x8A, 0x11, 0x75, 0x11, 0x74, 0x09, 0x33, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x19, 0x10, 0x19, 0x11, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x82, 0x29, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x10, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x21, 0x21, 0x30, 0x80, 0x21, 0x50, 0x52, 0x21, 0x30, 0x08, 0x29, 0x30, 0x80, 0x29, 0x50, 0x03, 0x29, 0x30, 0x05, 0x31, 0x50, 0x89, 0x31, 0x30, 0x31, 0x2F, 0x31, 0x0F, 0x39, 0x0F, 0x38, 0xED, 0x72, 0x52, 0xCC, 0xBB, 0xD4, 0xB9, 0xD4, 0x99, 0xDC, 0x78, + 0x02, 0xD4, 0x78, 0x01, 0xCC, 0x78, 0x8D, 0xC4, 0x98, 0xC4, 0x99, 0xC4, 0xDA, 0x93, 0xB5, 0x7B, 0x74, 0x9C, 0xDA, 0x9D, 0x5C, 0x9D, 0xDD, 0x9D, 0xFD, 0x8E, 0x1C, 0x86, 0x3C, 0x7E, 0x3C, 0x76, 0x5C, 0x76, 0x5D, 0x02, 0x6E, 0x5D, 0x01, 0x6E, 0x5E, 0x88, 0x76, 0x5E, 0x76, 0x7F, 0x7E, 0x9F, 0x86, 0x5F, 0x7D, 0xBD, 0x64, 0x99, 0x64, 0x38, 0x74, 0x39, 0x7C, 0x59, 0x01, 0x8C, 0x7A, 0x81, 0x94, 0x7A, 0x9C, 0x9A, 0x02, 0xA4, 0x99, 0x81, 0xA4, 0x79, 0xAC, 0x79, 0x01, 0xAC, 0x78, 0x02, 0xAC, 0x58, 0x80, 0xAC, 0x37, 0x01, 0xB4, 0x37, 0x01, 0xB4, 0x17, 0x80, 0xAC, 0x17, 0x03, 0xAB, 0xF7, 0x02, 0xA3, 0xD7, 0x05, 0x9B, 0xD7, 0x80, 0x9B, 0xB7, 0x06, 0x9B, 0xD7, 0x80, 0x93, 0xB6, 0x01, 0x9B, 0xB6, 0x80, 0x9B, 0x96, 0x01, 0x9B, 0xB6, 0x02, 0x9B, 0x96, 0x01, 0x9B, 0x76, 0x80, 0x9B, 0x56, 0x01, 0xA3, 0x56, 0x82, 0xAB, 0x56, 0xAB, 0x76, 0xB3, 0x76, 0x01, 0xBB, 0x76, 0x01, 0xC3, 0x76, 0x03, 0xCB, 0x56, 0x03, 0xD3, 0x36, 0x02, 0xD3, 0x35, 0x01, 0xD3, 0x56, 0x97, 0xCB, 0x56, 0xBB, 0x15, 0xBB, 0x36, 0xB3, 0x76, 0xA3, 0x96, 0x9C, 0x38, 0x94, 0xF9, 0x85, 0x3A, 0x7D, 0xBB, 0x6D, 0xBB, 0x65, 0x7B, 0x5D, 0xBC, 0x55, 0xFD, 0x4E, 0x3E, 0x3E, 0x7E, 0x36, 0x9E, 0x2E, 0x7D, 0x26, 0x5D, 0x2E, 0x5D, 0x2E, 0x3D, 0x2E, 0x5D, 0x36, 0x9E, 0x3E, 0x7E, 0x46, 0x7E, 0x01, 0x46, 0x5E, 0x80, 0x4E, 0x5E, 0x01, 0x46, 0x3E, 0x84, 0x3E, 0x3D, 0x36, 0x3E, 0x2E, 0x5E, 0x26, 0x5E, 0x1E, 0x5E, 0x01, 0x16, 0x5E, 0x02, 0x0E, 0x5E, 0x04, 0x0E, 0x3E, 0x80, 0x06, 0x3E, 0x01, + 0x06, 0x1E, 0x01, 0x0E, 0x1E, 0x01, 0x0D, 0xFE, 0x01, 0x0D, 0xDE, 0x80, 0x0D, 0xBE, 0x02, 0x0D, 0x9E, 0x01, 0x0D, 0x7E, 0x01, 0x0D, 0x5E, 0x01, 0x0D, 0x3E, 0x88, 0x0D, 0x1F, 0x0C, 0xFE, 0x0C, 0xDE, 0x0C, 0x9E, 0x0C, 0x7E, 0x0C, 0x5E, 0x0C, 0x3E, 0x0C, 0x3D, 0x0C, 0x1D, 0x01, 0x0C, 0x1E, 0x80, 0x0B, 0xFE, 0x01, 0x0B, 0xFD, 0x03, 0x0B, 0xDD, 0x80, 0x0B, 0xBD, 0x03, 0x0B, 0xBC, 0x84, 0x03, 0xFC, 0x04, 0x3C, 0x15, 0x1D, 0x1D, 0xBE, 0x1E, 0x5F, 0x01, 0x1E, 0x7E, 0x83, 0x16, 0x5E, 0x16, 0x7E, 0x16, 0x9F, 0x16, 0xBE, 0x01, 0x16, 0xDF, 0x80, 0x16, 0xFF, 0x01, 0x17, 0x1E, 0x01, 0x17, 0x3F, 0x97, 0x17, 0x5F, 0x17, 0x5E, 0x17, 0x3E, 0x1F, 0x5E, 0x27, 0x3E, 0x2F, 0x3E, 0x3F, 0x1E, 0x46, 0xDD, 0x56, 0x9D, 0x6E, 0x3C, 0x8D, 0x9B, 0x94, 0xB8, 0xAC, 0x38, 0xBC, 0x18, 0xC4, 0x18, 0xCC, 0x18, 0xD4, 0x18, 0xD4, 0x39, 0xCC, 0x3B, 0xC4, 0x7F, 0x39, 0x37, 0x21, 0x19, 0x19, 0x5B, 0x11, 0x7D, 0x01, 0x09, 0x7D, 0x01, 0x09, 0x9E, 0x96, 0x11, 0x9D, 0x11, 0x7D, 0x21, 0x5C, 0x31, 0x3A, 0x51, 0x38, 0x81, 0xFA, 0xA2, 0x39, 0xAA, 0x18, 0xA2, 0x17, 0x92, 0x16, 0x82, 0x36, 0x6A, 0xB7, 0x53, 0x99, 0x3C, 0x5B, 0x2D, 0x5E, 0x1D, 0xBE, 0x0E, 0x1F, 0x06, 0x1E, 0x06, 0x9F, 0x06, 0xDF, 0x07, 0x3F, 0x07, 0x5F, 0x07, 0x7F, 0x02, 0x07, 0x9F, 0x90, 0x07, 0xDF, 0x0F, 0xDF, 0x0F, 0x9F, 0x17, 0x7F, 0x27, 0x5F, 0x36, 0xFF, 0x56, 0x9E, 0x86, 0x7F, 0x6B, 0xF7, 0x62, 0x11, 0x9A, 0x74, 0xB1, 0xF3, 0xC1, 0xD3, 0xC9, 0xB3, 0xC1, 0x93, 0xC9, 0x93, 0xD1, 0x93, 0x02, 0xC9, + 0x93, 0x8F, 0xC1, 0x93, 0xC1, 0xD3, 0xC1, 0xD4, 0xB9, 0xD4, 0xB2, 0x15, 0x89, 0x72, 0x58, 0xD0, 0x51, 0x52, 0x51, 0x72, 0x49, 0x72, 0x41, 0x72, 0x41, 0x92, 0x39, 0x72, 0x41, 0x92, 0x39, 0x51, 0x31, 0x31, 0x01, 0x39, 0x51, 0x01, 0x31, 0x51, 0x81, 0x31, 0x71, 0x31, 0x51, 0x01, 0x29, 0x51, 0x01, 0x21, 0x31, 0x82, 0x19, 0x32, 0x19, 0x52, 0x19, 0x53, 0x01, 0x11, 0x73, 0x83, 0x11, 0x52, 0x11, 0x32, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x0A, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x07, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x50, 0x02, 0x21, 0x30, 0x01, 0x21, 0x51, 0x85, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xF6, 0x01, 0x22, 0x17, 0x82, 0x19, 0xB5, 0x09, 0x33, 0x11, 0x12, 0x01, 0x19, 0x12, 0x04, 0x21, 0x11, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x29, 0x50, 0x07, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x50, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, + 0x0F, 0x01, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x06, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x84, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x0A, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x84, 0x19, 0x11, 0x11, 0x12, 0x11, 0x53, 0x11, 0x95, 0x19, 0xF7, 0x01, 0x1A, 0x18, 0x83, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x54, 0x09, 0x33, 0x01, 0x11, 0x53, 0x80, 0x19, 0x53, 0x03, 0x19, 0x52, 0x81, 0x19, 0x72, 0x21, 0x92, 0x02, 0x19, 0x52, 0x01, 0x11, 0x32, 0x8B, + 0x11, 0x33, 0x11, 0x54, 0x11, 0x74, 0x11, 0x95, 0x11, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x09, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x19, 0x51, 0x19, 0x52, 0x19, 0x53, 0x01, 0x11, 0x53, 0x06, 0x11, 0x54, 0x82, 0x11, 0x33, 0x11, 0x53, 0x11, 0x54, 0x03, 0x11, 0x53, 0x01, 0x11, 0x54, 0x80, 0x19, 0x54, 0x01, 0x11, 0x54, 0x80, 0x11, 0x33, 0x05, 0x11, 0x54, 0x83, + 0x19, 0x74, 0x11, 0x54, 0x19, 0x54, 0x19, 0x74, 0x05, 0x11, 0x54, 0x01, 0x19, 0x74, 0x01, 0x11, 0x54, 0x81, 0x19, 0x54, 0x11, 0x54, 0x01, 0x09, 0x33, 0x02, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x19, 0x51, 0x01, 0x19, 0x31, 0x81, 0x19, 0x30, 0x19, 0x10, 0x23, 0x21, 0x30, 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x85, 0x21, 0x50, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x21, 0x51, 0x21, 0x30, 0x03, 0x21, 0x50, 0x01, 0x21, 0x51, 0x80, 0x21, 0x50, 0x10, 0x21, 0x30, 0x80, 0x21, 0x50, 0x12, 0x21, 0x30, 0x80, 0x21, 0x50, 0x3D, 0x21, 0x30, 0x0B, 0x29, 0x30, 0x06, 0x31, 0x50, 0x80, 0x31, 0x30, 0x02, 0x31, 0x0F, 0x84, 0x38, 0xCD, 0x6A, 0x11, 0xCC, 0xBB, 0xD4, 0x9A, 0xD4, 0x99, 0x03, 0xD4, 0x78, 0x01, 0xCC, 0x78, 0x8E, 0xCC, 0x98, 0xC4, 0x99, 0xB4, 0x98, 0x93, 0xF6, 0x9C, 0xB8, 0xB5, 0xBC, 0xA5, 0x9C, 0x9D, 0xBC, 0x95, 0xFC, 0x8E, 0x1C, 0x86, 0x1C, 0x86, 0x3D, 0x7E, 0x5D, 0x76, 0x3D, 0x76, 0x5D, 0x01, 0x76, 0x5E, 0x90, 0x7E, 0x5F, 0x75, 0xFE, 0x75, 0xBD, 0x6D, 0x3C, 0x54, 0x59, 0x43, 0x55, 0x3A, 0xB3, 0x3A, 0x73, 0x42, 0x73, 0x52, 0xB4, 0x62, 0xF5, 0x73, 0x16, 0x7B, 0x36, 0x83, 0x77, 0x8B, 0xB8, 0x9C, 0x19, 0xAC, 0x59, 0x02, 0xAC, 0x79, 0x01, 0xB4, 0x79, 0x81, 0xB4, 0x59, 0xB4, 0x58, 0x01, 0xB4, 0x38, 0x03, 0xBC, 0x38, 0x04, 0xBC, 0x18, 0x80, 0xB4, 0x18, 0x04, 0xB4, 0x17, 0x04, 0xAB, 0xF7, 0x82, 0xAC, 0x17, 0xAB, 0xF7, 0xAC, 0x17, 0x06, 0xAB, 0xF7, 0x81, 0xAB, 0xD7, 0xAB, 0xB6, 0x01, 0xAB, 0x96, 0x81, 0xAB, 0xB6, 0xAB, 0x96, 0x03, 0xB3, + 0xB7, 0x01, 0xBB, 0xB7, 0x81, 0xBB, 0x97, 0xC3, 0x77, 0x01, 0xC3, 0x76, 0x80, 0xC3, 0x56, 0x02, 0xCB, 0x56, 0x80, 0xCB, 0x36, 0x03, 0xD3, 0x36, 0x01, 0xD3, 0x35, 0x02, 0xD3, 0x36, 0x90, 0xCB, 0x56, 0xBB, 0x15, 0xBB, 0x56, 0xBB, 0x77, 0xB3, 0xD7, 0xB4, 0x59, 0xAD, 0x1A, 0x9D, 0x5B, 0x95, 0x7A, 0x8D, 0x9B, 0x85, 0xBB, 0x85, 0xBC, 0x7D, 0xFD, 0x6D, 0xDD, 0x5D, 0xFD, 0x4E, 0x3D, 0x46, 0x7E, 0x01, 0x3E, 0x9E, 0x80, 0x36, 0x7E, 0x01, 0x3E, 0x5D, 0x84, 0x46, 0x5D, 0x4E, 0x1D, 0x4D, 0xBC, 0x55, 0x7C, 0x55, 0x3B, 0x01, 0x5D, 0x7C, 0x86, 0x5D, 0xBD, 0x55, 0xDD, 0x4E, 0x1D, 0x46, 0x3D, 0x36, 0x5D, 0x2E, 0x5E, 0x1E, 0x1D, 0x01, 0x16, 0x3E, 0x82, 0x16, 0x5E, 0x0E, 0x3E, 0x0E, 0x5E, 0x02, 0x0E, 0x3E, 0x03, 0x0E, 0x1E, 0x01, 0x0D, 0xFE, 0x01, 0x0D, 0xDE, 0x01, 0x0D, 0xBE, 0x83, 0x0D, 0x9E, 0x0D, 0x7E, 0x15, 0x7E, 0x15, 0x5E, 0x01, 0x15, 0x3E, 0x01, 0x15, 0x1E, 0x84, 0x14, 0xFE, 0x14, 0xDE, 0x14, 0xBE, 0x14, 0x9E, 0x14, 0x7D, 0x01, 0x14, 0x5D, 0x01, 0x14, 0x3D, 0x03, 0x14, 0x1D, 0x01, 0x13, 0xFD, 0x01, 0x13, 0xDD, 0x81, 0x13, 0xBC, 0x13, 0xDD, 0x02, 0x13, 0xBC, 0x80, 0x13, 0x9C, 0x02, 0x0B, 0x9C, 0x86, 0x0B, 0xDC, 0x14, 0x7D, 0x1C, 0xFD, 0x25, 0x9E, 0x25, 0xDE, 0x26, 0x1E, 0x26, 0x1D, 0x01, 0x1E, 0x3E, 0x87, 0x1E, 0x5E, 0x16, 0x7E, 0x1E, 0x9E, 0x16, 0xBE, 0x1E, 0xDE, 0x1E, 0xFE, 0x1F, 0x1E, 0x17, 0x1E, 0x02, 0x1F, 0x3E, 0x01, 0x27, 0x3E, 0x94, 0x37, 0x3E, 0x3F, 0x1E, 0x46, 0xDD, 0x56, 0xBD, 0x6E, 0x7D, 0x85, 0xDB, 0x94, 0xD8, 0xA4, + 0x38, 0xBB, 0xF8, 0xC4, 0x18, 0xCC, 0x18, 0xD4, 0x18, 0xD4, 0x19, 0xD4, 0x3A, 0xCC, 0x5D, 0x82, 0xDC, 0x31, 0x38, 0x21, 0x3B, 0x11, 0x5C, 0x09, 0x5D, 0x09, 0x7D, 0x01, 0x09, 0x9E, 0x96, 0x09, 0x7D, 0x11, 0x7D, 0x19, 0x7C, 0x31, 0x5B, 0x51, 0x59, 0x79, 0xDA, 0xA2, 0x39, 0xAA, 0x38, 0xA2, 0x17, 0x92, 0x16, 0x82, 0x36, 0x72, 0xB7, 0x5B, 0x59, 0x44, 0x1A, 0x2C, 0xFD, 0x1D, 0x9E, 0x0D, 0xBE, 0x05, 0xFE, 0x06, 0x5F, 0x06, 0xBF, 0x07, 0x1F, 0x07, 0x3F, 0x07, 0x7F, 0x02, 0x07, 0x9F, 0x01, 0x07, 0xDF, 0x8F, 0x0F, 0x9F, 0x17, 0x7F, 0x27, 0x5F, 0x37, 0x1F, 0x4E, 0xBE, 0x7E, 0xDF, 0x74, 0x99, 0x5A, 0x11, 0x92, 0x53, 0xB2, 0x34, 0xB9, 0xD3, 0xC1, 0xB3, 0xC1, 0x73, 0xC9, 0x73, 0xC9, 0x93, 0xD1, 0xB3, 0x01, 0xC9, 0x93, 0x89, 0xC9, 0xB3, 0xC1, 0xB3, 0xC1, 0xD3, 0xB9, 0xF4, 0xB2, 0x35, 0x91, 0xD3, 0x58, 0xB0, 0x51, 0x31, 0x51, 0x72, 0x49, 0x92, 0x01, 0x41, 0x72, 0x01, 0x41, 0x92, 0x01, 0x39, 0x51, 0x81, 0x31, 0x31, 0x39, 0x71, 0x03, 0x31, 0x51, 0x01, 0x29, 0x51, 0x88, 0x29, 0x52, 0x21, 0x52, 0x19, 0x53, 0x19, 0x94, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xF6, 0x11, 0xD6, 0x11, 0xB5, 0x01, 0x11, 0x95, 0x82, 0x11, 0x53, 0x11, 0x33, 0x19, 0x32, 0x02, 0x19, 0x31, 0x19, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x29, 0x50, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, + 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x51, 0x85, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0xB5, 0x19, 0xF6, 0x01, 0x22, 0x17, 0x80, 0x19, 0x95, 0x01, 0x11, 0x33, 0x81, 0x19, 0x12, 0x21, 0x32, 0x03, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x07, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x50, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x09, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, + 0x10, 0x29, 0x30, 0x0B, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x11, 0x01, 0x19, 0x11, 0x87, 0x11, 0x32, 0x11, 0x74, 0x11, 0xB6, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF7, 0x19, 0xB7, 0x11, 0x96, 0x01, 0x11, 0x54, 0x87, 0x09, 0x33, 0x11, 0x33, 0x11, 0x53, 0x11, 0x52, 0x11, 0x32, 0x19, 0x52, 0x11, 0x51, 0x11, 0x52, 0x03, 0x11, 0x32, 0x84, 0x11, 0x53, 0x11, 0x54, 0x11, 0x75, 0x11, 0x95, 0x19, 0xD6, 0x02, 0x19, 0xF7, 0x85, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x02, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, + 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x29, 0x30, 0x03, 0x21, 0x30, 0x02, 0x21, 0x31, 0x08, 0x21, 0x30, 0x0A, 0x21, 0x31, 0x03, 0x21, 0x51, 0x04, 0x21, 0x31, 0x01, 0x21, 0x51, 0x03, 0x21, 0x31, 0x80, 0x21, 0x11, 0x07, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x11, 0x32, 0x02, 0x11, 0x33, 0x01, 0x11, 0x13, 0x81, 0x11, 0x33, 0x11, 0x13, 0x03, 0x11, 0x12, 0x01, 0x11, 0x32, 0x03, 0x11, 0x12, 0x80, 0x11, 0x13, 0x06, 0x11, 0x12, 0x01, 0x11, 0x13, 0x01, 0x11, 0x12, 0x01, 0x11, 0x13, 0x01, 0x11, 0x33, 0x01, 0x11, 0x13, 0x01, 0x11, 0x12, 0x06, 0x11, 0x13, 0x02, 0x11, 0x12, 0x82, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x51, 0x01, 0x21, 0x51, 0x80, 0x21, 0x31, 0x01, 0x21, 0x51, 0x05, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x19, 0x30, 0x03, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x07, 0x19, 0x31, 0x02, 0x19, 0x30, 0x03, 0x21, 0x30, 0x84, 0x19, 0x30, 0x21, 0x31, 0x19, 0x30, 0x19, 0x31, 0x21, 0x31, 0x1F, 0x19, 0x31, 0x80, 0x19, 0x30, 0x14, 0x19, 0x31, 0x80, 0x19, 0x30, 0x05, 0x19, 0x31, 0x80, 0x19, 0x10, 0x01, 0x19, 0x31, 0x01, 0x19, 0x30, 0x01, 0x19, 0x31, 0x01, 0x19, 0x30, 0x06, 0x19, 0x31, 0x80, 0x19, 0x30, 0x09, 0x19, 0x31, 0x81, 0x19, 0x30, 0x19, 0x31, 0x01, 0x19, 0x30, 0x80, 0x19, 0x31, 0x03, 0x19, 0x30, 0x80, 0x19, 0x31, + 0x07, 0x19, 0x30, 0x81, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x03, 0x21, 0x30, 0x09, 0x29, 0x30, 0x80, 0x31, 0x30, 0x02, 0x31, 0x50, 0x01, 0x31, 0x30, 0x01, 0x31, 0x50, 0x80, 0x31, 0x30, 0x01, 0x31, 0x0F, 0x83, 0x30, 0xCD, 0x51, 0x6F, 0xCC, 0xBB, 0xD4, 0xBA, 0x01, 0xD4, 0x99, 0x03, 0xD4, 0x78, 0xA9, 0xCC, 0x78, 0xCC, 0x98, 0xC4, 0x99, 0xB4, 0x98, 0x8B, 0x94, 0xB5, 0x5B, 0xB5, 0xBC, 0xA5, 0x9B, 0x9D, 0xBC, 0x95, 0xDC, 0x95, 0xFD, 0x8D, 0xFD, 0x8E, 0x1D, 0x8E, 0x3E, 0x8E, 0x5F, 0x8E, 0x7F, 0x86, 0x3E, 0x5D, 0x1A, 0x3B, 0xF7, 0x2B, 0x14, 0x22, 0xB3, 0x22, 0x52, 0x22, 0x32, 0x2A, 0x32, 0x3A, 0x13, 0x42, 0x13, 0x4A, 0x13, 0x52, 0x34, 0x52, 0x33, 0x5A, 0x34, 0x62, 0x54, 0x6A, 0x74, 0x72, 0x95, 0x7A, 0xD5, 0x8B, 0x16, 0x9B, 0x97, 0xAC, 0x19, 0xB4, 0x7A, 0xBC, 0x7A, 0xB4, 0x5A, 0xB4, 0x39, 0xBC, 0x59, 0x01, 0xBC, 0x39, 0x02, 0xBC, 0x38, 0x81, 0xC4, 0x18, 0xBC, 0x18, 0x03, 0xC4, 0x18, 0x80, 0xC4, 0x17, 0x0D, 0xBB, 0xF7, 0x02, 0xBB, 0xD7, 0x02, 0xB3, 0xD7, 0x01, 0xBB, 0xD7, 0x01, 0xBB, 0xB6, 0x80, 0xBB, 0x96, 0x01, 0xBB, 0xB6, 0x80, 0xBB, 0x96, 0x01, 0xBB, 0xB7, 0x81, 0xBB, 0x97, 0xC3, 0x97, 0x02, 0xC3, 0x76, 0x80, 0xCB, 0x76, 0x02, 0xCB, 0x56, 0x80, 0xD3, 0x56, 0x09, 0xD3, 0x36, 0xA9, 0xCB, 0x56, 0xC3, 0x36, 0xBB, 0x16, 0xBB, 0x77, 0xB3, 0x97, 0xB3, 0xF8, 0xBC, 0xDA, 0xB5, 0x1A, 0xA5, 0x3A, 0x9D, 0x3A, 0x9D, 0x5A, 0x95, 0x5A, 0x95, 0x7B, 0x8D, 0x7B, 0x7D, 0x5B, 0x6D, 0x7B, 0x5D, 0xDC, 0x56, 0x1D, 0x4E, + 0x5D, 0x46, 0x7E, 0x46, 0x5D, 0x46, 0x3D, 0x45, 0xFC, 0x4D, 0xDC, 0x55, 0x3A, 0x64, 0xFA, 0x6C, 0xBA, 0x64, 0x79, 0x64, 0x38, 0x64, 0x18, 0x64, 0x79, 0x64, 0xDA, 0x65, 0x7C, 0x55, 0xBC, 0x4D, 0xFD, 0x3E, 0x3D, 0x2E, 0x3D, 0x1D, 0xFD, 0x1E, 0x1E, 0x16, 0x3E, 0x16, 0x1E, 0x0E, 0x3E, 0x03, 0x0E, 0x1E, 0x02, 0x0D, 0xFE, 0x01, 0x0D, 0xDE, 0x01, 0x0D, 0xBE, 0x01, 0x15, 0x9E, 0x80, 0x15, 0x7E, 0x01, 0x15, 0x5E, 0x89, 0x1D, 0x3E, 0x1D, 0x1D, 0x1C, 0xFD, 0x1C, 0xFE, 0x1C, 0xDD, 0x1C, 0xBD, 0x1C, 0x9D, 0x1C, 0x5D, 0x1C, 0x3D, 0x1C, 0x3C, 0x01, 0x1C, 0x1C, 0x01, 0x1B, 0xFC, 0x80, 0x1B, 0xDC, 0x03, 0x23, 0xDC, 0x01, 0x23, 0xBC, 0x81, 0x1B, 0x9B, 0x23, 0xBB, 0x02, 0x1B, 0x9B, 0x01, 0x1B, 0x7B, 0x01, 0x1B, 0x5B, 0x91, 0x13, 0x3A, 0x1B, 0x7B, 0x1B, 0xBB, 0x24, 0x3C, 0x2C, 0xDD, 0x35, 0x3D, 0x35, 0x9E, 0x35, 0xBD, 0x35, 0xDD, 0x2D, 0xDD, 0x2D, 0xFE, 0x2E, 0x1E, 0x2E, 0x3E, 0x26, 0x5D, 0x2E, 0x7E, 0x26, 0x9D, 0x26, 0xDE, 0x26, 0xFD, 0x01, 0x26, 0xFE, 0x80, 0x27, 0x1E, 0x01, 0x2F, 0x1E, 0xAE, 0x37, 0x1E, 0x47, 0x1E, 0x4E, 0xFE, 0x5E, 0xBD, 0x6E, 0x7D, 0x85, 0xFB, 0x8C, 0xF9, 0xA4, 0x37, 0xB3, 0xF8, 0xC3, 0xF8, 0xCB, 0xF8, 0xD3, 0xF8, 0xD4, 0x18, 0xD4, 0x19, 0xCC, 0x3C, 0xB3, 0xFE, 0x41, 0x77, 0x29, 0x5A, 0x19, 0x5C, 0x11, 0x7C, 0x09, 0x7D, 0x09, 0x9E, 0x11, 0x9E, 0x11, 0x9D, 0x11, 0x7D, 0x19, 0x7C, 0x29, 0x5B, 0x49, 0x39, 0x71, 0xBA, 0x9A, 0x3A, 0xAA, 0x38, 0x99, 0xF7, 0x91, 0xF6, 0x8A, 0x36, 0x72, 0x97, 0x5B, 0x18, 0x43, 0xBA, 0x34, + 0xDD, 0x1D, 0x5E, 0x0D, 0x7E, 0x05, 0xBE, 0x06, 0x5F, 0x06, 0x9F, 0x06, 0xFF, 0x07, 0x1F, 0x07, 0x5F, 0x07, 0x7F, 0x01, 0x07, 0x9F, 0x01, 0x07, 0xDF, 0x8C, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x7F, 0x2F, 0x3F, 0x46, 0xBE, 0x76, 0xDF, 0x7D, 0x3B, 0x52, 0x31, 0x92, 0x73, 0xA9, 0xF3, 0xB1, 0xB2, 0xC1, 0xB3, 0xC1, 0x93, 0x01, 0xC9, 0x93, 0x8C, 0xC9, 0xB3, 0xC9, 0x93, 0xC1, 0x93, 0xC1, 0xB3, 0xC1, 0xD3, 0xB9, 0xB3, 0xB9, 0xF4, 0xB2, 0x14, 0x99, 0xD4, 0x58, 0xD0, 0x51, 0x31, 0x49, 0x52, 0x49, 0x92, 0x01, 0x41, 0x72, 0x01, 0x39, 0x72, 0x80, 0x39, 0x71, 0x02, 0x39, 0x51, 0x03, 0x31, 0x51, 0x01, 0x29, 0x51, 0x86, 0x21, 0x32, 0x19, 0x53, 0x19, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xF7, 0x12, 0x17, 0x01, 0x12, 0x18, 0x01, 0x1A, 0x18, 0x84, 0x19, 0xF7, 0x11, 0xB5, 0x11, 0x74, 0x11, 0x52, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x31, 0x08, 0x21, 0x30, 0x83, 0x19, 0x30, 0x21, 0x31, 0x21, 0x30, 0x21, 0x50, 0x18, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x52, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x19, 0xF6, 0x19, 0xD6, 0x19, 0x95, 0x01, 0x11, 0x33, 0x80, 0x11, 0x12, 0x01, 0x19, 0x12, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x19, 0x31, 0x19, 0x10, 0x04, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, + 0x2F, 0x05, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x08, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x51, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x07, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x09, 0x21, 0x30, 0x87, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, + 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x87, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x01, 0x19, 0xD7, 0x85, 0x11, 0xB6, 0x11, 0x95, 0x09, 0x55, 0x09, 0x54, 0x09, 0x33, 0x09, 0x53, 0x01, 0x11, 0x53, 0x88, 0x11, 0x32, 0x09, 0x32, 0x11, 0x12, 0x09, 0x12, 0x11, 0x33, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x19, 0xF7, 0x02, 0x1A, 0x17, 0x81, 0x19, 0xD6, 0x11, 0x95, 0x01, 0x11, 0x33, 0x83, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x09, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x11, 0x04, 0x19, 0x11, 0x81, 0x10, 0xF1, 0x19, 0x11, 0x01, 0x11, 0x10, 0x83, 0x10, 0xF0, 0x19, 0x10, 0x10, 0xF0, 0x19, 0x11, 0x01, 0x11, 0x10, 0x83, 0x11, 0x11, 0x10, 0xF1, 0x10, 0xF0, 0x11, 0x11, 0x02, 0x10, 0xF1, 0x02, 0x11, 0x11, 0x81, 0x10, 0xF1, 0x11, 0x11, + 0x02, 0x10, 0xF1, 0x80, 0x11, 0x11, 0x01, 0x10, 0xF1, 0x02, 0x10, 0xF0, 0x81, 0x10, 0xD0, 0x10, 0xD1, 0x01, 0x10, 0xF1, 0x03, 0x10, 0xD1, 0x01, 0x10, 0xF1, 0x05, 0x10, 0xF0, 0x02, 0x08, 0xF1, 0x04, 0x08, 0xF2, 0x80, 0x09, 0x12, 0x04, 0x08, 0xF2, 0x01, 0x08, 0xF1, 0x0C, 0x08, 0xF2, 0x80, 0x08, 0xD2, 0x0A, 0x08, 0xF2, 0x80, 0x10, 0xF2, 0x01, 0x08, 0xF2, 0x01, 0x10, 0xF2, 0x01, 0x09, 0x12, 0x01, 0x10, 0xF2, 0x81, 0x08, 0xF1, 0x10, 0xF1, 0x02, 0x11, 0x11, 0x80, 0x11, 0x10, 0x01, 0x10, 0xF0, 0x02, 0x11, 0x10, 0x82, 0x10, 0xF0, 0x11, 0x11, 0x10, 0xF0, 0x06, 0x19, 0x31, 0x01, 0x11, 0x31, 0x81, 0x11, 0x11, 0x19, 0x11, 0x05, 0x11, 0x11, 0x80, 0x11, 0x31, 0x02, 0x11, 0x11, 0x0C, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x11, 0x11, 0x0B, 0x11, 0x31, 0x81, 0x11, 0x11, 0x11, 0x31, 0x04, 0x11, 0x11, 0x82, 0x19, 0x31, 0x11, 0x11, 0x19, 0x31, 0x0A, 0x11, 0x11, 0x80, 0x11, 0x31, 0x01, 0x11, 0x11, 0x82, 0x19, 0x11, 0x11, 0x11, 0x11, 0x31, 0x02, 0x11, 0x11, 0x81, 0x11, 0x31, 0x11, 0x11, 0x09, 0x11, 0x31, 0x02, 0x11, 0x11, 0x0D, 0x11, 0x31, 0x80, 0x11, 0x32, 0x01, 0x11, 0x31, 0x80, 0x11, 0x11, 0x12, 0x11, 0x31, 0x80, 0x19, 0x31, 0x01, 0x11, 0x31, 0x0B, 0x19, 0x31, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x07, 0x29, 0x30, 0x81, 0x31, 0x30, 0x31, 0x50, 0x04, 0x31, 0x30, 0x01, 0x31, 0x2F, 0x84, 0x31, 0x0F, 0x30, 0xCE, 0x51, 0x6F, 0xBC, 0x39, 0xD4, 0xBB, 0x02, 0xD4, 0x99, 0x02, 0xD4, 0x78, 0x90, 0xCC, 0x78, 0xCC, 0x99, 0xC4, 0x78, 0xAC, 0x37, 0xAC, + 0x98, 0xC5, 0xBD, 0xB5, 0x7B, 0xAD, 0xBC, 0x9D, 0xBC, 0x95, 0xBC, 0x95, 0xDD, 0x95, 0xDE, 0x85, 0x5C, 0x74, 0xFB, 0x5C, 0x38, 0x3A, 0xD4, 0x19, 0xD0, 0x01, 0x11, 0x8F, 0x85, 0x19, 0xB0, 0x21, 0xB1, 0x21, 0xD2, 0x29, 0xB2, 0x31, 0xD2, 0x39, 0xD2, 0x01, 0x41, 0xD3, 0x80, 0x49, 0xD3, 0x01, 0x51, 0xD3, 0x83, 0x51, 0xF3, 0x59, 0xF3, 0x61, 0xF3, 0x61, 0xD3, 0x01, 0x61, 0xD2, 0x89, 0x61, 0xB2, 0x51, 0x70, 0x61, 0xB2, 0x72, 0x34, 0x8A, 0xF6, 0xA3, 0x98, 0xB4, 0x1A, 0xBC, 0x1A, 0xC4, 0x5A, 0xC4, 0x39, 0x01, 0xC4, 0x38, 0x03, 0xC4, 0x18, 0x80, 0xC3, 0xF8, 0x03, 0xC3, 0xF7, 0x02, 0xC3, 0xD7, 0x80, 0xC3, 0xF7, 0x08, 0xC3, 0xD7, 0x05, 0xC3, 0xB7, 0x82, 0xC3, 0xB6, 0xC3, 0x96, 0xC3, 0xB7, 0x02, 0xC3, 0x97, 0x83, 0xC3, 0x96, 0xC3, 0x97, 0xC3, 0x96, 0xC3, 0x97, 0x01, 0xCB, 0x76, 0x03, 0xCB, 0x56, 0x80, 0xD3, 0x56, 0x0B, 0xD3, 0x36, 0x01, 0xC3, 0x16, 0x90, 0xB3, 0x16, 0xB3, 0x36, 0xA2, 0xF5, 0xAB, 0x96, 0xBC, 0xBA, 0xB4, 0xD9, 0xAC, 0xD9, 0xA4, 0xB8, 0xA4, 0x98, 0x9C, 0x97, 0x9C, 0x98, 0x9C, 0xB9, 0x84, 0x78, 0x74, 0x99, 0x6D, 0x1A, 0x5D, 0x7C, 0x55, 0xDC, 0x01, 0x4E, 0x1D, 0x86, 0x4D, 0xFC, 0x55, 0xBB, 0x54, 0xD9, 0x5C, 0x17, 0x74, 0x18, 0x7B, 0xF9, 0x83, 0xF9, 0x01, 0x83, 0xB8, 0x87, 0x73, 0x36, 0x6B, 0x56, 0x63, 0x97, 0x5C, 0x38, 0x55, 0x3A, 0x55, 0xFC, 0x46, 0x3D, 0x36, 0x3D, 0x01, 0x1D, 0xFD, 0x02, 0x16, 0x1E, 0x03, 0x0D, 0xFE, 0x01, 0x0D, 0xDE, 0x01, 0x0D, 0xBE, 0x88, 0x0D, 0x9E, 0x15, 0x7D, 0x15, 0x5D, 0x15, 0x5E, 0x1D, 0x5E, + 0x1D, 0x3E, 0x25, 0x3E, 0x25, 0x1E, 0x24, 0xFD, 0x01, 0x2C, 0xDD, 0x85, 0x2C, 0x9D, 0x2C, 0x7C, 0x2C, 0x3C, 0x2C, 0x1C, 0x2B, 0xDB, 0x2B, 0xBB, 0x01, 0x2B, 0x9A, 0x80, 0x2B, 0x7A, 0x02, 0x2B, 0x79, 0x80, 0x33, 0x79, 0x01, 0x33, 0x59, 0x81, 0x33, 0x79, 0x2B, 0x59, 0x02, 0x33, 0x59, 0x03, 0x33, 0x39, 0x03, 0x2B, 0x19, 0x8E, 0x23, 0x19, 0x2B, 0x5A, 0x2B, 0xBA, 0x34, 0x1B, 0x44, 0x9C, 0x44, 0xFD, 0x55, 0x7D, 0x4D, 0x9E, 0x4D, 0xDE, 0x4D, 0xFE, 0x4E, 0x1E, 0x4E, 0x3E, 0x46, 0x5D, 0x46, 0x9D, 0x46, 0xBD, 0x01, 0x3E, 0xDD, 0x8E, 0x3E, 0xFD, 0x36, 0xDD, 0x36, 0xFE, 0x3E, 0xFD, 0x3E, 0xFE, 0x46, 0xDD, 0x4E, 0xDD, 0x5E, 0xBD, 0x6E, 0x7D, 0x86, 0x1C, 0x8D, 0x39, 0x9C, 0x37, 0xB3, 0xF7, 0xC3, 0xF7, 0xCB, 0xF8, 0x01, 0xD3, 0xF8, 0xA1, 0xD4, 0x19, 0xD4, 0x1B, 0xC4, 0x3D, 0x72, 0x59, 0x29, 0x38, 0x19, 0x3B, 0x11, 0x5C, 0x11, 0x7D, 0x09, 0x7D, 0x09, 0x9E, 0x09, 0x7D, 0x11, 0x7D, 0x19, 0x7C, 0x21, 0x5B, 0x39, 0x3A, 0x59, 0x59, 0x9A, 0x3A, 0xA2, 0x39, 0x99, 0xF7, 0x91, 0xF6, 0x8A, 0x37, 0x7A, 0x77, 0x62, 0xD8, 0x43, 0x59, 0x34, 0x7C, 0x25, 0x1D, 0x0D, 0x3D, 0x05, 0x7E, 0x05, 0xFE, 0x06, 0x5F, 0x06, 0xDF, 0x07, 0x1F, 0x07, 0x5F, 0x07, 0x7F, 0x01, 0x07, 0x9F, 0x8D, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0x9F, 0x0F, 0x7F, 0x1F, 0x7F, 0x2F, 0x3F, 0x3E, 0xDE, 0x66, 0xBF, 0x85, 0xBD, 0x52, 0x51, 0x8A, 0x94, 0xAA, 0x13, 0xB9, 0xB3, 0xC1, 0xB3, 0x01, 0xC9, 0x93, 0x81, 0xD1, 0xB4, 0xD1, 0xB3, 0x01, 0xC1, 0x93, 0x8A, 0xC1, 0x72, 0xC1, 0xB3, 0xC1, 0xD4, + 0xBA, 0x14, 0xB2, 0x14, 0x99, 0xF4, 0x58, 0xD0, 0x51, 0x11, 0x51, 0x72, 0x49, 0x92, 0x41, 0x72, 0x02, 0x39, 0x72, 0x01, 0x39, 0x51, 0x81, 0x31, 0x31, 0x39, 0x51, 0x03, 0x31, 0x51, 0x88, 0x29, 0x51, 0x29, 0x32, 0x21, 0x53, 0x21, 0x74, 0x19, 0x95, 0x11, 0xB6, 0x11, 0xD7, 0x12, 0x18, 0x0A, 0x18, 0x02, 0x09, 0xF8, 0x87, 0x12, 0x39, 0x12, 0x18, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x11, 0x31, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x04, 0x21, 0x31, 0x80, 0x21, 0x51, 0x03, 0x21, 0x31, 0x80, 0x19, 0x30, 0x01, 0x21, 0x31, 0x01, 0x21, 0x51, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x30, 0x05, 0x21, 0x31, 0x09, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x51, 0x8D, 0x19, 0x51, 0x11, 0x31, 0x11, 0x32, 0x11, 0x73, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x33, 0x11, 0x13, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x52, 0x03, 0x19, 0x31, 0x01, 0x21, 0x31, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x82, 0x19, 0x30, 0x21, 0x30, 0x21, 0x31, 0x01, 0x21, 0x30, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, + 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x29, 0x51, 0x07, 0x21, 0x30, 0x02, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0C, 0x21, 0x30, 0x80, 0x21, 0x31, 0x0E, 0x21, 0x30, 0x81, 0x29, 0x51, 0x21, 0x30, 0x02, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x50, 0x21, 0x51, 0x21, 0x30, 0x02, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x50, 0x09, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x8D, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x21, 0xF8, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0x96, 0x09, 0x75, 0x09, 0x74, 0x09, 0x33, 0x01, 0x09, 0x53, 0x01, 0x09, 0x33, 0x84, 0x11, 0x54, 0x11, 0x74, 0x11, 0x95, 0x19, 0xB6, 0x19, 0xF7, 0x01, 0x1A, 0x17, 0x86, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x13, 0x11, 0x12, 0x11, 0x32, 0x01, 0x19, + 0x31, 0x02, 0x21, 0x30, 0x84, 0x29, 0x50, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x06, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x10, 0x02, 0x10, 0xF1, 0x80, 0x10, 0xF2, 0x02, 0x09, 0x12, 0x80, 0x08, 0xF2, 0x0B, 0x09, 0x12, 0x03, 0x09, 0x13, 0x80, 0x11, 0x33, 0x03, 0x09, 0x33, 0x06, 0x11, 0x33, 0x82, 0x11, 0x53, 0x11, 0x33, 0x11, 0x54, 0x01, 0x11, 0x34, 0x01, 0x11, 0x54, 0x82, 0x11, 0x33, 0x11, 0x54, 0x11, 0x53, 0x01, 0x11, 0x33, 0x83, 0x11, 0x53, 0x11, 0x32, 0x11, 0x53, 0x11, 0x32, 0x02, 0x11, 0x53, 0x80, 0x09, 0x53, 0x01, 0x11, 0x74, 0x03, 0x09, 0x54, 0x07, 0x11, 0x54, 0x80, 0x09, 0x54, 0x01, 0x11, 0x54, 0x80, 0x09, 0x34, 0x01, 0x11, 0x54, 0x80, 0x11, 0x34, 0x01, 0x11, 0x54, 0x83, 0x09, 0x34, 0x11, 0x54, 0x11, 0x34, 0x11, 0x54, 0x01, 0x11, 0x34, 0x01, 0x11, 0x54, 0x01, 0x09, 0x34, 0x82, 0x11, 0x54, 0x11, 0x34, 0x09, 0x34, 0x01, 0x11, 0x34, 0x82, 0x09, 0x34, 0x11, 0x34, 0x11, + 0x54, 0x04, 0x09, 0x34, 0x81, 0x09, 0x13, 0x11, 0x33, 0x01, 0x09, 0x33, 0x03, 0x11, 0x33, 0x81, 0x11, 0x32, 0x09, 0x12, 0x01, 0x09, 0x32, 0x80, 0x11, 0x33, 0x01, 0x09, 0x32, 0x02, 0x09, 0x12, 0x84, 0x08, 0xF2, 0x00, 0xF2, 0x08, 0xF2, 0x00, 0xD1, 0x08, 0xF2, 0x02, 0x00, 0xF2, 0x80, 0x08, 0xF2, 0x02, 0x00, 0xF2, 0x80, 0x08, 0xF2, 0x02, 0x00, 0xF2, 0x81, 0x08, 0xF2, 0x00, 0xF2, 0x04, 0x08, 0xF2, 0x82, 0x08, 0xD1, 0x08, 0xF2, 0x08, 0xD2, 0x04, 0x08, 0xF2, 0x83, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD1, 0x00, 0xF2, 0x05, 0x00, 0xD1, 0x82, 0x00, 0xF1, 0x00, 0xF2, 0x00, 0xF1, 0x09, 0x00, 0xF2, 0x82, 0x08, 0xF2, 0x00, 0xF2, 0x08, 0xF2, 0x01, 0x00, 0xF2, 0x80, 0x00, 0xD1, 0x01, 0x00, 0xF2, 0x80, 0x08, 0xF2, 0x04, 0x00, 0xF2, 0x81, 0x09, 0x12, 0x00, 0xF2, 0x01, 0x08, 0xF2, 0x86, 0x09, 0x12, 0x00, 0xF2, 0x09, 0x12, 0x00, 0xF2, 0x09, 0x12, 0x00, 0xF2, 0x09, 0x12, 0x04, 0x00, 0xF2, 0x81, 0x01, 0x12, 0x00, 0xF2, 0x0A, 0x09, 0x12, 0x01, 0x09, 0x32, 0x82, 0x09, 0x12, 0x09, 0x32, 0x09, 0x12, 0x02, 0x09, 0x33, 0x81, 0x09, 0x12, 0x09, 0x33, 0x12, 0x09, 0x12, 0x80, 0x09, 0x13, 0x0C, 0x09, 0x12, 0x81, 0x09, 0x32, 0x09, 0x12, 0x01, 0x11, 0x32, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x03, 0x29, 0x30, 0x05, 0x31, 0x30, 0x01, 0x31, 0x2F, 0x86, 0x31, 0x0E, 0x30, 0xCE, 0x38, 0xCD, 0xAB, 0xD8, 0xD4, 0xDB, 0xDC, 0xBA, 0xDC, 0x99, 0x01, 0xD4, 0x99, 0x01, 0xD4, 0x78, 0x93, 0xCC, 0x98, + 0xCC, 0x99, 0xC4, 0x99, 0xB4, 0x58, 0xC5, 0x1B, 0xBD, 0x5C, 0xBD, 0x7C, 0xB5, 0x9D, 0xA5, 0xBD, 0xA5, 0xFE, 0x8D, 0x5C, 0x4B, 0x55, 0x2A, 0x51, 0x21, 0xF0, 0x19, 0xAF, 0x19, 0x90, 0x21, 0xB1, 0x29, 0xB1, 0x29, 0x91, 0x29, 0xB2, 0x01, 0x31, 0xB2, 0x80, 0x39, 0xD3, 0x01, 0x39, 0xB3, 0x01, 0x41, 0xB3, 0x01, 0x49, 0xD3, 0x01, 0x51, 0xB3, 0x01, 0x51, 0xB2, 0x80, 0x59, 0xB2, 0x01, 0x51, 0x92, 0x02, 0x59, 0x72, 0x03, 0x59, 0x51, 0x85, 0x61, 0x91, 0x69, 0xD2, 0x7A, 0x33, 0xB3, 0xB8, 0xCC, 0x7B, 0xCC, 0x5A, 0x01, 0xC4, 0x39, 0x81, 0xC4, 0x19, 0xCC, 0x19, 0x02, 0xCB, 0xF8, 0x01, 0xCB, 0xD7, 0x01, 0xCB, 0xB7, 0x05, 0xCB, 0xD7, 0x01, 0xCB, 0xB7, 0x80, 0xCB, 0xB6, 0x01, 0xCB, 0xB7, 0x82, 0xCB, 0x96, 0xC3, 0x96, 0xCB, 0x96, 0x01, 0xC3, 0x96, 0x03, 0xCB, 0x96, 0x06, 0xCB, 0x76, 0x82, 0xCB, 0x56, 0xCB, 0x76, 0xCB, 0x56, 0x01, 0xD3, 0x56, 0x81, 0xD3, 0x36, 0xD3, 0x56, 0x01, 0xD3, 0x36, 0x80, 0xD3, 0x16, 0x07, 0xD3, 0x36, 0x88, 0xCB, 0x37, 0xC3, 0x16, 0xBB, 0x37, 0xAA, 0xD6, 0x8A, 0x33, 0x8A, 0x32, 0xB3, 0xF8, 0xBC, 0x99, 0xBC, 0x98, 0x01, 0xB4, 0x98, 0x01, 0xB4, 0x77, 0x86, 0xB4, 0x98, 0xB4, 0xB8, 0x9C, 0x78, 0x8C, 0x79, 0x7C, 0xDA, 0x6D, 0x5B, 0x5D, 0x7B, 0x02, 0x55, 0xFD, 0x92, 0x5D, 0x9B, 0x64, 0xFA, 0x6B, 0xD7, 0x8B, 0xD8, 0x93, 0xB8, 0x9B, 0xB8, 0x9B, 0x98, 0x9B, 0x57, 0x92, 0xF6, 0x82, 0xB5, 0x72, 0xB5, 0x6B, 0x36, 0x64, 0x38, 0x5D, 0x3B, 0x55, 0xDC, 0x46, 0x3D, 0x2D, 0xFD, 0x25, 0xFD, 0x1D, 0xFE, 0x03, 0x15, 0xFE, 0x01, 0x15, + 0xDE, 0x81, 0x15, 0xBD, 0x15, 0x9D, 0x01, 0x15, 0x7D, 0x82, 0x15, 0x5D, 0x1D, 0x3D, 0x1D, 0x1D, 0x01, 0x25, 0x1D, 0x01, 0x2C, 0xFE, 0x90, 0x34, 0xDD, 0x3C, 0xDD, 0x44, 0xBD, 0x44, 0x9C, 0x44, 0x7C, 0x44, 0x3B, 0x4C, 0x1B, 0x4B, 0xDA, 0x4B, 0x9A, 0x4B, 0x79, 0x43, 0x58, 0x4B, 0x78, 0x53, 0x78, 0x53, 0x98, 0x5B, 0x99, 0x5B, 0xD9, 0x63, 0xDA, 0x02, 0x63, 0xFA, 0x05, 0x63, 0xDA, 0x02, 0x63, 0x99, 0x93, 0x63, 0xB9, 0x63, 0x99, 0x5B, 0x79, 0x4B, 0x18, 0x42, 0xF7, 0x43, 0x38, 0x4B, 0x79, 0x53, 0xFA, 0x5C, 0x7B, 0x64, 0xDB, 0x6D, 0x3C, 0x6D, 0x5D, 0x6D, 0x9D, 0x6D, 0xBD, 0x6D, 0xFD, 0x66, 0x1D, 0x66, 0x3D, 0x5E, 0x7D, 0x5E, 0x9D, 0x56, 0xBD, 0x01, 0x4E, 0xBD, 0x81, 0x46, 0xBD, 0x46, 0xDD, 0x01, 0x4E, 0xBD, 0x93, 0x56, 0xBD, 0x66, 0x9D, 0x76, 0x7D, 0x86, 0x1C, 0x95, 0x7A, 0xA4, 0x58, 0xB4, 0x18, 0xC3, 0xF7, 0xCB, 0xF8, 0xD3, 0xD7, 0xD3, 0xF8, 0xDB, 0xF8, 0xD4, 0x1A, 0xCC, 0x3C, 0xAB, 0xBD, 0x39, 0x37, 0x19, 0x1A, 0x19, 0x5B, 0x11, 0x7D, 0x11, 0x9D, 0x01, 0x09, 0x7D, 0x96, 0x11, 0x7D, 0x19, 0x7D, 0x21, 0x5B, 0x31, 0x3A, 0x49, 0x18, 0x92, 0x3A, 0xA2, 0x59, 0x99, 0xF7, 0x91, 0xF7, 0x8A, 0x17, 0x7A, 0x77, 0x62, 0xB8, 0x4B, 0x19, 0x34, 0x3C, 0x24, 0xBD, 0x15, 0x1E, 0x05, 0x5D, 0x05, 0xDF, 0x06, 0x3F, 0x06, 0xBF, 0x06, 0xFF, 0x07, 0x3F, 0x07, 0x5F, 0x01, 0x07, 0x9F, 0x01, 0x07, 0xDF, 0x8C, 0x0F, 0x9F, 0x0F, 0x7F, 0x17, 0x7F, 0x27, 0x5F, 0x36, 0xFE, 0x5E, 0xDF, 0x86, 0x5F, 0x52, 0xB2, 0x82, 0x73, 0xA2, 0x13, 0xB1, 0xD3, 0xC1, 0xB3, + 0xC1, 0x93, 0x02, 0xC9, 0xB3, 0x80, 0xC9, 0x93, 0x01, 0xC1, 0x93, 0x8B, 0xC1, 0xB3, 0xC1, 0xD4, 0xB9, 0xF4, 0xB1, 0xF4, 0xA2, 0x15, 0x61, 0x11, 0x51, 0x11, 0x51, 0x72, 0x49, 0x72, 0x41, 0x72, 0x41, 0x71, 0x41, 0x72, 0x01, 0x39, 0x72, 0x83, 0x39, 0x71, 0x31, 0x31, 0x31, 0x51, 0x39, 0x72, 0x02, 0x31, 0x51, 0x8B, 0x29, 0x31, 0x29, 0x52, 0x21, 0x33, 0x19, 0x74, 0x19, 0xB6, 0x11, 0xB7, 0x09, 0xB7, 0x09, 0xF8, 0x09, 0xF9, 0x01, 0xD8, 0x01, 0xF9, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x86, 0x12, 0x19, 0x12, 0x18, 0x11, 0xF7, 0x11, 0xD6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x12, 0x01, 0x11, 0x11, 0x01, 0x19, 0x31, 0x02, 0x19, 0x11, 0x0B, 0x19, 0x31, 0x01, 0x19, 0x11, 0x83, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x0A, 0x19, 0x31, 0x03, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x51, 0x01, 0x19, 0x31, 0x89, 0x11, 0x32, 0x11, 0x53, 0x11, 0x94, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xB6, 0x11, 0x54, 0x09, 0x33, 0x09, 0x13, 0x01, 0x11, 0x32, 0x03, 0x19, 0x52, 0x02, 0x19, 0x31, 0x84, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x03, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x51, 0x01, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, + 0x30, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x18, 0xF0, 0x01, 0x19, 0x10, 0x85, 0x21, 0x10, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x01, 0x21, 0x51, 0x8A, 0x21, 0x31, 0x21, 0x30, 0x19, 0x10, 0x21, 0x10, 0x19, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x50, 0x29, 0x51, 0x04, 0x21, 0x30, 0x01, 0x21, 0x50, 0x83, 0x21, 0x51, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x82, 0x21, 0x51, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x30, 0x84, 0x21, 0x51, 0x21, 0x50, 0x21, 0x51, 0x21, 0x30, 0x21, 0x31, 0x01, 0x21, 0x51, 0x80, 0x21, 0x31, 0x02, 0x21, 0x51, 0x80, 0x29, 0x51, 0x01, 0x29, 0x31, 0x81, 0x21, 0x30, 0x29, 0x51, 0x01, 0x21, 0x30, 0x82, 0x29, 0x91, 0x29, 0x71, 0x21, 0x51, 0x03, 0x21, 0x31, 0x82, 0x19, 0x10, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x06, 0x21, 0x30, 0x01, 0x21, 0x31, 0x06, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, + 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x86, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0x75, 0x19, 0x96, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x01, 0x11, 0xD7, 0x01, 0x11, 0xB7, 0x83, 0x11, 0xD7, 0x11, 0xD6, 0x11, 0xB6, 0x11, 0x95, 0x01, 0x11, 0xB6, 0x03, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x85, 0x21, 0xF6, 0x19, 0x95, 0x19, 0x94, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x82, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x01, 0x19, 0xB6, 0x83, 0x19, 0xF7, 0x19, 0xF8, 0x1A, 0x18, 0x19, 0xF8, 0x09, 0x1A, 0x18, 0x87, 0x22, 0x39, 0x1A, 0x18, 0x22, 0x19, 0x1A, 0x18, 0x1A, 0x19, + 0x1A, 0x18, 0x22, 0x39, 0x1A, 0x18, 0x02, 0x1A, 0x19, 0x02, 0x1A, 0x18, 0x82, 0x1A, 0x39, 0x1A, 0x18, 0x22, 0x39, 0x02, 0x1A, 0x18, 0x82, 0x22, 0x18, 0x19, 0xF8, 0x1A, 0x18, 0x03, 0x19, 0xF8, 0x80, 0x11, 0xF7, 0x01, 0x19, 0xF8, 0x05, 0x19, 0xF7, 0x80, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x03, 0x11, 0xF8, 0x80, 0x12, 0x18, 0x01, 0x11, 0xF8, 0x87, 0x1A, 0x18, 0x11, 0xF8, 0x1A, 0x18, 0x19, 0xF8, 0x1A, 0x18, 0x11, 0xF8, 0x1A, 0x18, 0x12, 0x18, 0x03, 0x11, 0xF8, 0x80, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x02, 0x11, 0xF8, 0x81, 0x19, 0xF8, 0x11, 0xF8, 0x02, 0x19, 0xF8, 0x81, 0x11, 0xF8, 0x1A, 0x19, 0x03, 0x19, 0xF8, 0x86, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0xF8, 0x1A, 0x19, 0x19, 0xF8, 0x02, 0x1A, 0x19, 0x80, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x82, 0x22, 0x39, 0x1A, 0x18, 0x1A, 0x38, 0x02, 0x1A, 0x18, 0x87, 0x1A, 0x38, 0x1A, 0x18, 0x1A, 0x39, 0x1A, 0x19, 0x22, 0x39, 0x1A, 0x18, 0x22, 0x38, 0x22, 0x18, 0x07, 0x1A, 0x18, 0x80, 0x19, 0xF8, 0x05, 0x1A, 0x18, 0x82, 0x1A, 0x19, 0x1A, 0x18, 0x1A, 0x19, 0x08, 0x1A, 0x18, 0x84, 0x22, 0x18, 0x1A, 0x18, 0x1A, 0x19, 0x1A, 0x18, 0x22, 0x18, 0x0C, 0x1A, 0x18, 0x80, 0x1A, 0x38, 0x16, 0x1A, 0x18, 0x80, 0x1A, 0x38, 0x11, 0x1A, 0x18, 0x83, 0x19, 0xF8, 0x1A, 0x18, 0x19, 0xF8, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x8A, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xD8, 0x19, 0xF8, 0x11, 0xF8, 0x05, 0x19, 0xF8, 0x08, 0x1A, 0x18, 0x83, 0x19, + 0xF8, 0x1A, 0x18, 0x19, 0xF8, 0x1A, 0x18, 0x05, 0x19, 0xF8, 0x80, 0x11, 0xF8, 0x08, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x86, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x95, 0x19, 0x74, 0x19, 0x73, 0x19, 0x52, 0x21, 0x31, 0x01, 0x21, 0x30, 0x04, 0x29, 0x30, 0x01, 0x31, 0x30, 0x81, 0x29, 0x30, 0x31, 0x30, 0x01, 0x29, 0x30, 0x89, 0x29, 0x2F, 0x31, 0x2F, 0x29, 0x0F, 0x30, 0xEE, 0x38, 0xCD, 0x9B, 0x77, 0xD4, 0xFC, 0xD4, 0xBA, 0xDC, 0xB9, 0xDC, 0x99, 0x01, 0xD4, 0x79, 0x01, 0xD4, 0x78, 0x01, 0xCC, 0x99, 0x88, 0xC4, 0xB9, 0xC4, 0xFA, 0xBD, 0x3B, 0xBD, 0x7D, 0xAD, 0x5C, 0x94, 0xDB, 0x63, 0x76, 0x21, 0xB0, 0x19, 0x6F, 0x01, 0x21, 0x90, 0x85, 0x21, 0x91, 0x29, 0x91, 0x29, 0xB1, 0x29, 0xB2, 0x31, 0xB2, 0x39, 0xD3, 0x01, 0x31, 0xD3, 0x02, 0x39, 0xD3, 0x01, 0x41, 0xB3, 0x01, 0x49, 0xB3, 0x83, 0x49, 0xD3, 0x51, 0xD3, 0x51, 0xB3, 0x49, 0xB2, 0x04, 0x51, 0x92, 0x81, 0x59, 0xB2, 0x59, 0x93, 0x01, 0x59, 0x92, 0x02, 0x59, 0x72, 0x89, 0x59, 0x92, 0x59, 0x71, 0x51, 0x30, 0x51, 0x0F, 0x7A, 0x74, 0xA3, 0x57, 0xAB, 0xB8, 0xC4, 0x1A, 0xC4, 0x19, 0xCC, 0x19, 0x02, 0xCB, 0xF8, 0x82, 0xD3, 0xF8, 0xCB, 0xD7, 0xD3, 0xD7, 0x07, 0xCB, 0xB7, 0x80, 0xCB, 0xB6, 0x04, 0xCB, 0x96, 0x06, 0xCB, 0x76, 0x03, 0xCB, 0x56, 0x82, 0xD3, 0x76, 0xD3, 0x56, 0xD3, 0x76, 0x03, 0xD3, 0x56, 0x81, 0xD3, 0x36, 0xD3, 0x56, 0x09, 0xD3, 0x36, 0x87, 0xCB, 0x37, 0xCB, 0x57, 0xB2, 0xF6, 0xA2, 0x95, 0x79, 0xD2, 0x79, 0xD1, 0x92, 0x93, 0xCC, 0x9A, 0x01, 0xCC, 0xB9, 0x03, 0xC4, 0xB8, 0x9C, 0xC4, + 0xD8, 0xC4, 0xD9, 0xB4, 0x99, 0x9C, 0x99, 0x8D, 0x1B, 0x75, 0x5C, 0x65, 0x9C, 0x5D, 0xFD, 0x56, 0x1D, 0x5E, 0x1D, 0x65, 0xBC, 0x6D, 0x1A, 0x73, 0xD7, 0x93, 0xB8, 0x9B, 0x98, 0xA3, 0x78, 0xAB, 0x78, 0xAB, 0x57, 0xA2, 0xF5, 0x9A, 0xB5, 0x8A, 0x54, 0x82, 0x95, 0x73, 0x16, 0x64, 0x18, 0x5D, 0x3B, 0x4D, 0xDC, 0x3D, 0xFD, 0x2D, 0xFD, 0x25, 0xFD, 0x01, 0x1D, 0xFD, 0x80, 0x15, 0xDD, 0x01, 0x15, 0xBD, 0x87, 0x15, 0x9E, 0x1D, 0x9E, 0x25, 0x9E, 0x25, 0x7E, 0x25, 0x5D, 0x25, 0x3D, 0x2D, 0x1D, 0x2C, 0xFD, 0x01, 0x34, 0xDD, 0x8C, 0x34, 0xBD, 0x3C, 0x9C, 0x44, 0x7C, 0x44, 0x5B, 0x54, 0x3B, 0x5C, 0x3B, 0x64, 0x3A, 0x6C, 0x1A, 0x7C, 0x5A, 0x8C, 0x7B, 0x9C, 0xDC, 0xB5, 0x3D, 0xBD, 0x5E, 0x01, 0xBD, 0x5D, 0x04, 0xBD, 0x3D, 0x01, 0xBD, 0x1D, 0x02, 0xB5, 0x1D, 0x84, 0xBD, 0x1C, 0xB5, 0x1C, 0xBD, 0x1C, 0xBD, 0x1D, 0xBD, 0x3D, 0x01, 0xBD, 0x1C, 0x86, 0xBD, 0x1D, 0xBD, 0x1C, 0xBD, 0x3D, 0xB5, 0x3D, 0xA4, 0xBB, 0x9C, 0x9B, 0x94, 0xBB, 0x01, 0x8C, 0x9A, 0x8B, 0x84, 0x7A, 0x84, 0xBA, 0x84, 0xDB, 0x84, 0xFB, 0x85, 0x3C, 0x7D, 0x5C, 0x7D, 0x9C, 0x75, 0xBC, 0x75, 0xFD, 0x6E, 0x3D, 0x66, 0x5D, 0x5E, 0x7D, 0x01, 0x5E, 0x9D, 0x89, 0x5E, 0xBD, 0x5E, 0x9D, 0x66, 0x9D, 0x6E, 0x7D, 0x76, 0x5C, 0x8E, 0x1C, 0x9D, 0xBB, 0xA4, 0x78, 0xB3, 0xF7, 0xC3, 0xF7, 0x02, 0xD3, 0xD7, 0x88, 0xDB, 0xD8, 0xD3, 0xF9, 0xD4, 0x1A, 0xC4, 0x3E, 0x59, 0xD8, 0x29, 0x39, 0x19, 0x5B, 0x11, 0x7C, 0x11, 0x7D, 0x01, 0x09, 0x7D, 0x01, 0x11, 0x7D, 0x84, 0x21, 0x5C, 0x29, 0x5B, 0x40, + 0xF8, 0x79, 0xD9, 0x9A, 0x19, 0x01, 0x91, 0xF7, 0x8E, 0x8A, 0x17, 0x82, 0x57, 0x6A, 0x98, 0x53, 0x19, 0x3B, 0xFB, 0x2C, 0x9D, 0x14, 0xDD, 0x0D, 0x3D, 0x05, 0xBE, 0x06, 0x3F, 0x06, 0x9F, 0x06, 0xFF, 0x07, 0x3F, 0x07, 0x7F, 0x07, 0x9F, 0x01, 0x07, 0xBF, 0x8D, 0x07, 0xDF, 0x07, 0xBF, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x7F, 0x2E, 0xFE, 0x4E, 0x9E, 0x86, 0xBF, 0x53, 0x33, 0x7A, 0x73, 0x99, 0xF2, 0xBA, 0x14, 0xC1, 0xB3, 0xC1, 0x93, 0x01, 0xC9, 0x93, 0x81, 0xC9, 0xB3, 0xC1, 0x73, 0x01, 0xC1, 0x93, 0x8C, 0xC1, 0xB3, 0xB9, 0xB3, 0xB9, 0xF4, 0xB2, 0x14, 0xAA, 0x35, 0x69, 0x11, 0x50, 0xF1, 0x51, 0x52, 0x51, 0x92, 0x49, 0x92, 0x41, 0x71, 0x39, 0x71, 0x41, 0x72, 0x02, 0x39, 0x71, 0x81, 0x31, 0x51, 0x39, 0x71, 0x01, 0x31, 0x51, 0x89, 0x31, 0x52, 0x29, 0x11, 0x21, 0x12, 0x21, 0x33, 0x21, 0x95, 0x11, 0xB7, 0x11, 0xF8, 0x01, 0xB8, 0x01, 0xD9, 0x01, 0xF9, 0x02, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x85, 0x01, 0xF9, 0x0A, 0x19, 0x09, 0xF8, 0x11, 0xD7, 0x09, 0x95, 0x09, 0x33, 0x01, 0x09, 0x12, 0x01, 0x11, 0x12, 0x85, 0x11, 0x32, 0x11, 0x12, 0x19, 0x11, 0x10, 0xF1, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x32, 0x80, 0x11, 0x12, 0x01, 0x19, 0x32, 0x80, 0x11, 0x31, 0x0A, 0x19, 0x11, 0x01, 0x19, 0x12, 0x81, 0x11, 0x11, 0x11, 0x12, 0x02, 0x11, 0x11, 0x01, 0x11, 0x31, 0x81, 0x11, 0x11, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x85, 0x19, 0x31, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, + 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x50, 0x86, 0x21, 0x51, 0x19, 0x10, 0x19, 0x31, 0x19, 0x52, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x01, 0x22, 0x18, 0x85, 0x11, 0x96, 0x09, 0x34, 0x09, 0x33, 0x09, 0x13, 0x09, 0x33, 0x11, 0x33, 0x01, 0x11, 0x53, 0x83, 0x11, 0x73, 0x11, 0x52, 0x19, 0x52, 0x19, 0x32, 0x01, 0x19, 0x11, 0x81, 0x21, 0x11, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x50, 0x21, 0x50, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x50, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x80, 0x21, 0x52, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x21, 0x30, 0x19, 0x10, 0x21, 0x31, 0x19, 0x11, 0x01, 0x19, 0x10, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x51, 0x81, 0x21, 0x31, 0x19, 0x10, 0x01, 0x18, 0xF0, 0x02, 0x19, 0x10, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x51, 0x01, 0x19, 0x10, 0x01, 0x19, 0x31, 0x86, 0x19, 0x11, 0x19, 0x10, 0x21, 0x31, 0x19, 0x10, 0x21, 0x51, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x19, 0x10, 0x19, 0x30, 0x02, 0x19, 0x10, 0x85, 0x21, 0x31, 0x21, 0x51, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x19, 0x10, 0x80, 0x18, 0xF0, 0x01, 0x19, 0x10, 0x81, + 0x18, 0xF0, 0x19, 0x10, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x01, 0x21, 0x10, 0x82, 0x18, 0xF0, 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x19, 0x10, 0x01, 0x19, 0x11, 0x82, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x03, 0x21, 0x31, 0x01, 0x19, 0x10, 0x82, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x04, 0x19, 0x10, 0x07, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x89, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xB6, 0x19, 0xF7, 0x1A, 0x18, 0x02, 0x19, 0xF8, 0x81, 0x11, 0xF8, 0x11, 0xF7, 0x01, 0x1A, 0x18, 0x80, 0x19, 0xF8, 0x01, 0x19, 0xF7, 0x80, 0x11, 0xB6, 0x01, 0x19, 0xD6, 0x88, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x74, 0x11, 0x53, 0x19, 0x52, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, + 0x29, 0x10, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0x54, 0x19, 0x95, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xD8, 0x11, 0xF9, 0x11, 0xD8, 0x02, 0x11, 0xF9, 0x82, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xD8, 0x02, 0x09, 0xD9, 0x80, 0x09, 0xD8, 0x03, 0x09, 0xD9, 0x80, 0x09, 0xF9, 0x06, 0x09, 0xD9, 0x81, 0x09, 0xF9, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x80, 0x09, 0xF9, 0x03, 0x09, 0xD9, 0x82, 0x09, 0xD8, 0x11, 0xF9, 0x09, 0xD9, 0x0D, 0x09, 0xD8, 0x81, 0x09, 0xF8, 0x09, 0xD8, 0x06, 0x09, 0xF8, 0x01, 0x09, 0xF9, 0x82, 0x09, 0xD8, 0x09, 0xF9, 0x09, 0xD8, 0x02, 0x09, 0xF8, 0x80, 0x09, 0xD8, 0x01, 0x09, 0xF8, 0x87, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xD9, 0x02, 0x09, 0xF9, 0x80, 0x09, 0xD8, 0x03, 0x09, 0xF9, 0x81, 0x11, 0xF9, 0x09, 0xD9, 0x02, 0x09, 0xF9, 0x81, 0x09, 0xD9, 0x09, 0xF9, 0x06, 0x09, 0xD9, 0x81, 0x09, 0xF9, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x85, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xD9, 0x09, 0xD8, 0x02, 0x09, 0xD9, 0x82, 0x09, 0xB8, + 0x11, 0xF9, 0x11, 0xF8, 0x06, 0x11, 0xF9, 0x03, 0x09, 0xF9, 0x81, 0x11, 0xF9, 0x09, 0xF9, 0x12, 0x11, 0xF9, 0x80, 0x09, 0xF9, 0x0A, 0x11, 0xF9, 0x01, 0x09, 0xF9, 0x01, 0x11, 0xF9, 0x01, 0x09, 0xF9, 0x01, 0x11, 0xF9, 0x02, 0x09, 0xF9, 0x81, 0x11, 0xF9, 0x09, 0xF9, 0x01, 0x11, 0xF9, 0x05, 0x09, 0xF9, 0x80, 0x11, 0xF9, 0x18, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x81, 0x09, 0xF9, 0x11, 0xF9, 0x02, 0x09, 0xF9, 0x80, 0x09, 0xD9, 0x04, 0x09, 0xF9, 0x05, 0x11, 0xF9, 0x06, 0x09, 0xF9, 0x80, 0x11, 0xF9, 0x03, 0x09, 0xF9, 0x02, 0x09, 0xD9, 0x83, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x80, 0x11, 0xF9, 0x01, 0x09, 0xF9, 0x01, 0x11, 0xF9, 0x80, 0x09, 0xD9, 0x04, 0x11, 0xF9, 0x01, 0x11, 0xF8, 0x86, 0x19, 0xF8, 0x19, 0xD7, 0x21, 0xB5, 0x21, 0x94, 0x21, 0x32, 0x21, 0x31, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x81, 0x31, 0x30, 0x31, 0x50, 0x01, 0x31, 0x30, 0x02, 0x29, 0x2F, 0x86, 0x29, 0x0F, 0x30, 0xEE, 0x28, 0x8C, 0x7A, 0x93, 0xD4, 0xDC, 0xD4, 0xBA, 0xDC, 0xBA, 0x01, 0xDC, 0x99, 0x82, 0xD4, 0x99, 0xD4, 0x79, 0xD4, 0x99, 0x01, 0xCC, 0x99, 0x88, 0xCC, 0xBA, 0xC4, 0xDA, 0xC5, 0x1C, 0xBD, 0x3D, 0x5A, 0xB3, 0x39, 0xD0, 0x29, 0x4F, 0x21, 0x70, 0x29, 0x90, 0x01, 0x29, 0x91, 0x80, 0x31, 0x92, 0x02, 0x31, 0xB2, 0x02, 0x39, 0xB3, 0x02, 0x39, 0xD3, 0x02, 0x41, 0xD3, 0x80, 0x41, 0xB3, 0x01, 0x49, 0xD3, 0x80, 0x49, 0xD4, 0x01, 0x49, 0xD3, 0x80, 0x49, 0xB3, 0x03, 0x51, 0xB3, 0x05, 0x59, 0xB3, 0x01, + 0x59, 0x93, 0x80, 0x59, 0x92, 0x01, 0x51, 0x92, 0x8B, 0x59, 0x92, 0x51, 0x71, 0x59, 0x71, 0x61, 0x91, 0x71, 0xD2, 0x8A, 0x94, 0xAB, 0x37, 0xBB, 0xD8, 0xCC, 0x19, 0xD4, 0x19, 0xCB, 0xF8, 0xD3, 0xF8, 0x01, 0xD3, 0xD8, 0x80, 0xD3, 0xB7, 0x02, 0xCB, 0x97, 0x01, 0xD3, 0x97, 0x80, 0xD3, 0x96, 0x01, 0xCB, 0x96, 0x80, 0xD3, 0x96, 0x05, 0xD3, 0x76, 0x0E, 0xD3, 0x56, 0x01, 0xD3, 0x36, 0x01, 0xD3, 0x56, 0x03, 0xD3, 0x36, 0x02, 0xD3, 0x57, 0x84, 0xCB, 0x57, 0xC3, 0x37, 0xB2, 0xD6, 0x92, 0x34, 0x79, 0x91, 0x01, 0x71, 0xB1, 0x85, 0xCC, 0x39, 0xD4, 0x99, 0xD4, 0xB9, 0xD4, 0xD9, 0xD4, 0xB8, 0xCC, 0xB8, 0x01, 0xD4, 0xB8, 0x87, 0xCC, 0xB8, 0xCC, 0xD9, 0xBC, 0x98, 0xA4, 0x98, 0x8D, 0x1B, 0x75, 0x5B, 0x65, 0x7B, 0x5D, 0xDC, 0x01, 0x5E, 0x1D, 0x94, 0x65, 0xDC, 0x6D, 0x1B, 0x7B, 0xF8, 0x9B, 0xB8, 0xA3, 0x57, 0xAB, 0x37, 0xB3, 0x16, 0xBB, 0x16, 0xB2, 0xD5, 0xB2, 0xB5, 0xA2, 0x75, 0x9A, 0x75, 0x7A, 0x54, 0x73, 0x16, 0x64, 0x79, 0x5D, 0x7B, 0x45, 0xBC, 0x35, 0xBC, 0x2D, 0xDD, 0x25, 0xDD, 0x1D, 0xDD, 0x01, 0x1D, 0xBD, 0x96, 0x1D, 0x9D, 0x25, 0x9E, 0x2D, 0x7E, 0x35, 0x7E, 0x3D, 0x7E, 0x3D, 0x5E, 0x45, 0x3E, 0x44, 0xFD, 0x4C, 0xDD, 0x54, 0xBC, 0x54, 0x9C, 0x54, 0x5B, 0x5C, 0x5B, 0x5C, 0x3A, 0x6C, 0x3A, 0x7C, 0x7B, 0x8C, 0xBC, 0x9C, 0xFC, 0xAC, 0xFC, 0xB4, 0xFC, 0xBC, 0xFC, 0xC4, 0xFB, 0xC4, 0xDB, 0x01, 0xC4, 0xDA, 0x80, 0xCC, 0xDA, 0x01, 0xC4, 0xDA, 0x82, 0xCC, 0xDA, 0xC4, 0xDA, 0xCC, 0xDA, 0x05, 0xCC, 0xBA, 0x81, 0xCC, 0xDA, 0xCC, 0xBA, 0x02, + 0xCC, 0xDA, 0x80, 0xCC, 0xBA, 0x01, 0xCC, 0xDA, 0x81, 0xC4, 0xD9, 0xC4, 0xDA, 0x02, 0xBC, 0xDA, 0x82, 0xB4, 0xDA, 0xAC, 0xBA, 0xA4, 0x79, 0x01, 0xA4, 0x9A, 0x8A, 0xA4, 0xBA, 0x9C, 0xBA, 0x94, 0xDA, 0x8C, 0xDA, 0x8C, 0xFB, 0x85, 0x3B, 0x7D, 0x7B, 0x75, 0x9B, 0x75, 0xFC, 0x76, 0x3D, 0x76, 0x5D, 0x01, 0x76, 0x7D, 0x87, 0x76, 0x5D, 0x7E, 0x5D, 0x86, 0x3C, 0x95, 0xFC, 0xA5, 0x7B, 0xAC, 0x99, 0xBB, 0xF7, 0xCB, 0xF7, 0x02, 0xD3, 0xD7, 0x88, 0xDB, 0xD7, 0xDB, 0xF8, 0xD3, 0xF9, 0xCC, 0x3D, 0x82, 0xDB, 0x39, 0x38, 0x21, 0x5A, 0x19, 0x7C, 0x11, 0x7C, 0x01, 0x09, 0x7D, 0x97, 0x11, 0x9D, 0x11, 0x7D, 0x19, 0x5C, 0x29, 0x5B, 0x39, 0x19, 0x69, 0x79, 0x92, 0x1A, 0x91, 0xF8, 0x91, 0xF7, 0x89, 0xF7, 0x7A, 0x37, 0x6A, 0x98, 0x53, 0x19, 0x3B, 0xBB, 0x2C, 0x5D, 0x1C, 0xDD, 0x0D, 0x1D, 0x0D, 0xBE, 0x06, 0x1F, 0x06, 0x9F, 0x06, 0xFF, 0x07, 0x3F, 0x07, 0x7F, 0x07, 0x9F, 0x01, 0x07, 0xBF, 0x8E, 0x07, 0xDF, 0x07, 0x9F, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x7F, 0x2F, 0x1F, 0x46, 0xBE, 0x7E, 0xDF, 0x5B, 0xD6, 0x72, 0x52, 0xA2, 0x33, 0xB1, 0xD3, 0xC1, 0xB3, 0xC1, 0x93, 0xC9, 0x93, 0x01, 0xC9, 0xB3, 0x80, 0xC1, 0x73, 0x01, 0xC9, 0xB3, 0x01, 0xC1, 0xB3, 0x87, 0xB9, 0xF4, 0xB1, 0xD4, 0xAA, 0x35, 0x71, 0x32, 0x50, 0xF0, 0x51, 0x52, 0x51, 0x72, 0x49, 0x72, 0x01, 0x41, 0x71, 0x80, 0x41, 0x72, 0x01, 0x39, 0x71, 0x80, 0x39, 0x51, 0x01, 0x31, 0x51, 0x80, 0x31, 0x72, 0x01, 0x31, 0x52, 0x88, 0x29, 0x31, 0x21, 0x32, 0x21, 0x53, 0x21, 0x96, 0x19, 0xD8, 0x09, 0xD8, + 0x09, 0xD9, 0x01, 0xF9, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x8B, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xF9, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0x96, 0x09, 0x54, 0x11, 0x54, 0x09, 0x33, 0x01, 0x11, 0x33, 0x83, 0x11, 0x32, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x02, 0x19, 0x32, 0x07, 0x11, 0x32, 0x80, 0x11, 0x12, 0x03, 0x19, 0x12, 0x05, 0x11, 0x12, 0x80, 0x11, 0x33, 0x06, 0x11, 0x32, 0x81, 0x11, 0x33, 0x19, 0x52, 0x01, 0x19, 0x53, 0x01, 0x19, 0x32, 0x01, 0x19, 0x12, 0x83, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x50, 0x21, 0x30, 0x19, 0x30, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x52, 0x11, 0x53, 0x11, 0x75, 0x19, 0xD6, 0x22, 0x38, 0x19, 0xD7, 0x09, 0x75, 0x09, 0x54, 0x09, 0x34, 0x09, 0x33, 0x01, 0x33, 0x09, 0x33, 0x01, 0x09, 0x53, 0x86, 0x11, 0x73, 0x19, 0x94, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x18, 0xF1, 0x19, 0x11, 0x05, 0x21, 0x31, 0x83, 0x29, 0x72, 0x21, 0x52, 0x19, 0x11, 0x19, 0x10, 0x01, 0x19, 0x11, 0x82, 0x21, 0x51, 0x21, 0x71, 0x21, 0x51, 0x06, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x19, 0x11, 0x18, 0xF0, 0x03, 0x19, 0x11, 0x01, 0x18, 0xF0, + 0x02, 0x19, 0x10, 0x83, 0x21, 0x31, 0x19, 0x31, 0x10, 0xF0, 0x11, 0x10, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x86, 0x29, 0x51, 0x21, 0x30, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x10, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x84, 0x21, 0x52, 0x21, 0x31, 0x19, 0x31, 0x19, 0x10, 0x19, 0x30, 0x01, 0x19, 0x10, 0x85, 0x19, 0x30, 0x18, 0xEF, 0x19, 0x10, 0x10, 0xEF, 0x10, 0xF0, 0x18, 0xF0, 0x01, 0x10, 0xD0, 0x80, 0x19, 0x11, 0x03, 0x21, 0x31, 0x88, 0x19, 0x10, 0x21, 0x30, 0x29, 0x71, 0x21, 0x30, 0x19, 0x0F, 0x19, 0x10, 0x19, 0x30, 0x19, 0x10, 0x19, 0x11, 0x01, 0x21, 0x52, 0x01, 0x19, 0x11, 0x01, 0x21, 0x51, 0x81, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x52, 0x01, 0x19, 0x10, 0x83, 0x21, 0x51, 0x21, 0x31, 0x21, 0x51, 0x19, 0x30, 0x06, 0x19, 0x10, 0x80, 0x21, 0x30, 0x01, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x84, 0x29, 0x10, 0x20, 0xEF, 0x29, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x31, 0x01, 0x19, 0x11, 0x01, 0x11, 0x12, 0x90, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xB6, 0x19, 0xD7, 0x19, + 0xF7, 0x19, 0xF8, 0x1A, 0x18, 0x22, 0x38, 0x22, 0x39, 0x22, 0x38, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x19, 0x74, 0x01, 0x11, 0x53, 0x83, 0x11, 0x32, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x51, 0x80, 0x19, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x07, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x50, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x53, 0x11, 0x54, 0x11, 0x95, 0x11, 0x96, 0x11, 0xB7, 0x09, 0xB8, 0x09, 0xD8, 0x01, 0x09, 0xB9, 0x82, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xB9, 0x05, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x02, 0x09, 0xD9, 0x01, 0x09, 0xB9, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x81, 0x01, 0xB9, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x80, 0x09, 0xD9, 0x02, 0x01, 0xD9, 0x09, 0x09, 0xD9, + 0x85, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xFA, 0x09, 0xF9, 0x01, 0xD9, 0x04, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x83, 0x01, 0xD8, 0x09, 0xF8, 0x09, 0xF9, 0x01, 0xF9, 0x05, 0x01, 0xD9, 0x03, 0x09, 0xD9, 0x82, 0x09, 0xF9, 0x01, 0xD8, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x86, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0xD9, 0x03, 0x09, 0xD9, 0x80, 0x01, 0xB9, 0x05, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x05, 0x09, 0xD9, 0x82, 0x01, 0xD9, 0x09, 0xB9, 0x09, 0xD9, 0x02, 0x01, 0xB9, 0x02, 0x01, 0xD9, 0x01, 0x01, 0xB8, 0x03, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x04, 0x09, 0xF9, 0x84, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xFA, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x01, 0x09, 0xFA, 0x80, 0x09, 0xF9, 0x03, 0x09, 0xFA, 0x80, 0x09, 0xDA, 0x09, 0x09, 0xD9, 0x1E, 0x09, 0xF9, 0x80, 0x09, 0xD9, 0x0A, 0x09, 0xF9, 0x80, 0x09, 0xD9, 0x16, 0x09, 0xF9, 0x80, 0x09, 0xD9, 0x02, 0x09, 0xF9, 0x80, 0x09, 0xFA, 0x07, 0x09, 0xF9, 0x80, 0x09, 0xFA, 0x07, 0x09, 0xF9, 0x80, 0x09, 0xD9, 0x04, 0x09, 0xF9, 0x81, 0x09, 0xFA, 0x09, 0xF9, 0x02, 0x09, 0xD9, 0x05, 0x09, 0xF9, 0x81, 0x09, 0xFA, 0x09, 0xF9, 0x02, 0x09, 0xFA, 0x82, 0x09, 0xD9, 0x09, 0xFA, 0x09, 0xF9, 0x02, 0x11, 0xF9, 0x85, 0x19, 0xF8, 0x19, 0xD7, 0x21, 0xB5, 0x19, 0x52, 0x21, 0x31, 0x21, 0x30, 0x04, 0x29, 0x30, 0x02, 0x31, 0x30, 0x80, 0x31, 0x2F, 0x01, 0x29, 0x2F, 0x87, 0x29, 0x0F, 0x30, 0xEE, 0x30, 0xCD, 0x61, 0xD1, 0xDD, 0x3D, 0xD4, 0xBA, 0xD4, 0x9A, 0xD4, 0x99, 0x03, 0xD4, + 0x79, 0x01, 0xCC, 0x99, 0x85, 0xCC, 0xBA, 0xCC, 0xFB, 0xB4, 0xDB, 0x7B, 0x76, 0x29, 0x0E, 0x29, 0x4F, 0x01, 0x29, 0x70, 0x01, 0x29, 0x91, 0x80, 0x31, 0x91, 0x02, 0x31, 0x92, 0x01, 0x39, 0xB2, 0x03, 0x39, 0xB3, 0x82, 0x39, 0xD3, 0x39, 0xB3, 0x41, 0xB3, 0x01, 0x41, 0xD3, 0x05, 0x49, 0xD3, 0x05, 0x51, 0xD3, 0x06, 0x51, 0xB3, 0x80, 0x59, 0xB3, 0x02, 0x51, 0xB3, 0x80, 0x51, 0x92, 0x02, 0x59, 0x92, 0x88, 0x59, 0x71, 0x59, 0x50, 0x71, 0xF2, 0x7A, 0x33, 0x9A, 0xF5, 0xB3, 0x98, 0xC3, 0xB8, 0xCB, 0xF9, 0xD3, 0xF8, 0x01, 0xD3, 0xD8, 0x01, 0xD3, 0xD7, 0x02, 0xD3, 0xB7, 0x03, 0xD3, 0x97, 0x01, 0xD3, 0x96, 0x02, 0xD3, 0x76, 0x80, 0xD3, 0x56, 0x01, 0xD3, 0x76, 0x0C, 0xD3, 0x56, 0x80, 0xDB, 0x56, 0x03, 0xD3, 0x56, 0x81, 0xD3, 0x37, 0xD3, 0x57, 0x01, 0xCB, 0x57, 0x89, 0xC3, 0x57, 0xB3, 0x17, 0x9A, 0x75, 0x8A, 0x34, 0x71, 0x91, 0x69, 0x91, 0x71, 0x91, 0x9A, 0xD5, 0xDC, 0xBB, 0xD4, 0x79, 0x01, 0xD4, 0x99, 0x04, 0xD4, 0x98, 0x9C, 0xCC, 0xB8, 0xBC, 0x98, 0xA4, 0x98, 0x8D, 0x1A, 0x7D, 0x7B, 0x5D, 0x7B, 0x55, 0xDC, 0x56, 0x1D, 0x5E, 0x1D, 0x65, 0xDD, 0x6D, 0x1B, 0x7B, 0xF8, 0x9B, 0xD8, 0xA3, 0x16, 0xB2, 0xD6, 0xBA, 0xD5, 0xC2, 0xD6, 0xC2, 0xB5, 0xC2, 0x95, 0xBA, 0x95, 0xB2, 0x95, 0x91, 0xF4, 0x7A, 0x54, 0x63, 0x77, 0x6C, 0xFB, 0x55, 0x9C, 0x45, 0xBC, 0x35, 0x9C, 0x25, 0x9C, 0x01, 0x25, 0x9D, 0x8F, 0x2D, 0x9E, 0x2D, 0x7D, 0x35, 0x5D, 0x35, 0x3E, 0x3D, 0x1E, 0x4C, 0xFD, 0x54, 0xDD, 0x64, 0xDC, 0x85, 0x3D, 0x95, 0x5D, 0x9D, 0x5D, 0x9D, 0x3D, + 0xA5, 0x3D, 0xAD, 0x3D, 0xAD, 0x3C, 0xB5, 0x1C, 0x01, 0xB4, 0xFC, 0x01, 0xBC, 0xDB, 0x01, 0xC4, 0xDB, 0x08, 0xCC, 0xBA, 0x03, 0xCC, 0x99, 0x03, 0xD4, 0x99, 0x02, 0xD4, 0xB9, 0x80, 0xD4, 0x99, 0x03, 0xD4, 0xB9, 0x80, 0xCC, 0x99, 0x02, 0xCC, 0xB9, 0x81, 0xC4, 0xB9, 0xC4, 0x99, 0x02, 0xC4, 0xB9, 0x01, 0xBC, 0xB9, 0x89, 0xAC, 0x78, 0xA4, 0x59, 0x9C, 0x58, 0x94, 0x79, 0x8C, 0x99, 0x8C, 0xDA, 0x84, 0xDA, 0x85, 0x3B, 0x85, 0x9B, 0x85, 0xDC, 0x01, 0x85, 0xFC, 0x86, 0x8D, 0xFC, 0x95, 0xDC, 0x9D, 0x9B, 0xAD, 0x1A, 0xB4, 0x99, 0xBB, 0xF7, 0xCB, 0xD7, 0x01, 0xD3, 0xB7, 0x8A, 0xDB, 0xB7, 0xDB, 0xD7, 0xDB, 0xD8, 0xDB, 0xD9, 0xD3, 0xFB, 0xB3, 0xDD, 0x59, 0xD8, 0x29, 0x59, 0x19, 0x5B, 0x11, 0x7C, 0x11, 0x7D, 0x01, 0x11, 0x9D, 0x95, 0x11, 0x9E, 0x19, 0x7D, 0x21, 0x5C, 0x31, 0x3A, 0x59, 0x38, 0x81, 0xFA, 0x92, 0x19, 0x92, 0x18, 0x89, 0xF6, 0x7A, 0x16, 0x6A, 0x77, 0x5B, 0x19, 0x43, 0x9A, 0x34, 0x3C, 0x1C, 0x9D, 0x0C, 0xFD, 0x05, 0x7E, 0x06, 0x1F, 0x06, 0x7F, 0x06, 0xFF, 0x07, 0x3F, 0x07, 0x7F, 0x02, 0x07, 0xBF, 0x8D, 0x07, 0xDF, 0x07, 0x9F, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x7F, 0x27, 0x3F, 0x46, 0xFE, 0x6E, 0xDF, 0x64, 0x78, 0x6A, 0x52, 0x9A, 0x33, 0xB1, 0xD3, 0xB9, 0xB3, 0xC1, 0x93, 0x04, 0xC9, 0x93, 0x80, 0xC9, 0xB3, 0x01, 0xC1, 0xB3, 0x89, 0xB9, 0xF4, 0xB1, 0xF4, 0xAA, 0x35, 0x79, 0x52, 0x58, 0xF1, 0x59, 0x52, 0x51, 0x93, 0x49, 0x72, 0x41, 0x51, 0x41, 0x71, 0x03, 0x39, 0x71, 0x02, 0x31, 0x51, 0x01, 0x31, 0x52, 0x88, 0x29, 0x32, 0x21, + 0x32, 0x21, 0x54, 0x21, 0xB6, 0x19, 0xF8, 0x12, 0x19, 0x09, 0xFA, 0x01, 0xD9, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x84, 0x09, 0xF9, 0x09, 0xF8, 0x11, 0xF8, 0x11, 0xD7, 0x09, 0xB5, 0x02, 0x11, 0x95, 0x84, 0x19, 0x95, 0x19, 0x75, 0x19, 0x95, 0x19, 0x74, 0x21, 0x94, 0x04, 0x19, 0x74, 0x04, 0x19, 0x94, 0x02, 0x19, 0x74, 0x01, 0x21, 0x74, 0x02, 0x19, 0x74, 0x83, 0x21, 0x94, 0x19, 0x94, 0x19, 0x74, 0x19, 0x95, 0x02, 0x19, 0x94, 0x80, 0x19, 0x74, 0x02, 0x19, 0x94, 0x80, 0x19, 0x95, 0x01, 0x19, 0x94, 0x81, 0x19, 0xB5, 0x19, 0x94, 0x01, 0x19, 0x74, 0x01, 0x19, 0x53, 0x81, 0x19, 0x32, 0x21, 0x52, 0x01, 0x21, 0x31, 0x82, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x29, 0x50, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x50, 0x8C, 0x21, 0x31, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD7, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0xD7, 0x11, 0xD6, 0x11, 0xD7, 0x11, 0xD6, 0x01, 0x11, 0xF6, 0x01, 0x1A, 0x16, 0x86, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x33, 0x19, 0x53, 0x19, 0x31, 0x19, 0x11, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x2F, 0x80, 0x19, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x87, 0x21, 0x31, 0x21, 0x51, 0x19, 0x52, 0x21, 0x73, 0x21, 0x93, 0x21, 0x53, 0x19, 0x12, 0x19, 0x31, 0x01, 0x19, 0x11, 0x8D, 0x19, 0x10, 0x19, 0x31, 0x19, 0x11, 0x29, 0x93, 0x21, 0x73, 0x21, 0x32, 0x21, 0x52, 0x29, 0x93, 0x29, 0x73, + 0x21, 0x72, 0x21, 0x52, 0x21, 0x72, 0x21, 0x51, 0x21, 0x31, 0x05, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x10, 0x86, 0x19, 0x31, 0x31, 0xF4, 0x29, 0x93, 0x29, 0xB3, 0x31, 0xF4, 0x29, 0xD4, 0x21, 0x72, 0x01, 0x19, 0x31, 0x80, 0x21, 0x52, 0x01, 0x19, 0x10, 0x01, 0x19, 0x11, 0x81, 0x19, 0x52, 0x21, 0x93, 0x01, 0x21, 0xB3, 0x01, 0x29, 0xB4, 0x81, 0x29, 0x93, 0x21, 0x73, 0x01, 0x19, 0x52, 0x84, 0x21, 0x52, 0x21, 0x31, 0x19, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x51, 0x87, 0x21, 0x52, 0x21, 0x72, 0x21, 0x52, 0x29, 0x71, 0x21, 0x10, 0x21, 0x31, 0x21, 0x51, 0x21, 0x72, 0x01, 0x21, 0x73, 0x8C, 0x19, 0x72, 0x19, 0x52, 0x19, 0x31, 0x19, 0x32, 0x19, 0x52, 0x21, 0x72, 0x21, 0x93, 0x21, 0x73, 0x21, 0x52, 0x19, 0x31, 0x21, 0x51, 0x29, 0x71, 0x29, 0x92, 0x01, 0x29, 0xB2, 0x81, 0x31, 0xD3, 0x29, 0xB3, 0x01, 0x3A, 0x35, 0x81, 0x31, 0xF4, 0x21, 0x73, 0x01, 0x21, 0x52, 0x97, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x19, 0x10, 0x21, 0x51, 0x29, 0x92, 0x21, 0x30, 0x19, 0x0F, 0x21, 0x30, 0x19, 0x30, 0x19, 0x10, 0x19, 0x31, 0x29, 0xD4, 0x29, 0xB4, 0x19, 0x32, 0x11, 0x11, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x19, 0x11, 0x21, 0x52, 0x29, 0x73, 0x19, 0x10, 0x19, 0x31, 0x01, 0x21, 0x31, 0x87, 0x21, 0x51, 0x19, 0x31, 0x19, 0x10, 0x19, 0x31, 0x29, 0x72, 0x21, 0x72, 0x29, 0x72, 0x21, 0x52, 0x01, 0x21, 0x51, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, + 0x29, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x86, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x19, 0x31, 0x19, 0x11, 0x19, 0x12, 0x11, 0x32, 0x01, 0x11, 0x33, 0x88, 0x11, 0x74, 0x11, 0x54, 0x11, 0x95, 0x19, 0x95, 0x11, 0x75, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x95, 0x11, 0x95, 0x01, 0x11, 0x54, 0x84, 0x11, 0x33, 0x11, 0x12, 0x11, 0x32, 0x11, 0x12, 0x19, 0x12, 0x01, 0x19, 0x11, 0x85, 0x19, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x87, 0x21, 0x51, 0x19, 0x11, 0x11, 0x11, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, + 0xD8, 0x03, 0x09, 0xD9, 0x80, 0x09, 0xFA, 0x01, 0x09, 0xD9, 0x81, 0x01, 0xD9, 0x09, 0xDA, 0x02, 0x01, 0xDA, 0x87, 0x01, 0xD9, 0x01, 0xDA, 0x09, 0xDA, 0x09, 0xD9, 0x01, 0xD9, 0x09, 0xDA, 0x09, 0xD9, 0x01, 0xD9, 0x02, 0x09, 0xDA, 0x81, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x84, 0x01, 0xDA, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xFA, 0x01, 0xDA, 0x01, 0x09, 0xDA, 0x04, 0x09, 0xD9, 0x81, 0x09, 0xFA, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x02, 0x01, 0xF9, 0x01, 0x01, 0xFA, 0x80, 0x09, 0xDA, 0x02, 0x09, 0xD9, 0x80, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xF9, 0x80, 0x09, 0xF9, 0x03, 0x01, 0xD9, 0x80, 0x09, 0xF9, 0x07, 0x09, 0xD9, 0x82, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x83, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0xD9, 0x09, 0xD9, 0x01, 0x09, 0xFA, 0x06, 0x09, 0xD9, 0x81, 0x01, 0xD9, 0x09, 0xD9, 0x01, 0x09, 0xDA, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x02, 0x09, 0xD9, 0x82, 0x09, 0xDA, 0x09, 0xD9, 0x09, 0xDA, 0x02, 0x09, 0xD9, 0x83, 0x01, 0xD9, 0x01, 0xB9, 0x09, 0xD9, 0x09, 0xF9, 0x03, 0x01, 0xD9, 0x86, 0x09, 0xFA, 0x09, 0xDA, 0x09, 0xFA, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xDA, 0x07, 0x09, 0xFA, 0x03, 0x09, 0xDA, 0x02, 0x09, 0xFA, 0x01, 0x09, 0xDA, 0x01, 0x09, 0xFA, 0x01, 0x09, 0xDA, 0x01, 0x09, 0xFA, 0x80, 0x09, 0xDA, 0x0A, 0x09, 0xFA, 0x06, 0x09, 0xF9, 0x0E, 0x09, 0xFA, 0x01, 0x09, 0xF9, 0x01, 0x09, 0xFA, 0x05, 0x09, 0xF9, 0x01, 0x09, 0xFA, 0x05, 0x09, 0xF9, 0x05, 0x09, 0xFA, 0x01, 0x09, 0xF9, + 0x01, 0x09, 0xFA, 0x01, 0x09, 0xF9, 0x01, 0x09, 0xFA, 0x01, 0x09, 0xF9, 0x80, 0x09, 0xD9, 0x02, 0x09, 0xFA, 0x01, 0x09, 0xDA, 0x0F, 0x09, 0xFA, 0x01, 0x09, 0xF9, 0x81, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0x09, 0xF9, 0x82, 0x09, 0xD9, 0x09, 0xDA, 0x09, 0xD9, 0x11, 0x09, 0xFA, 0x01, 0x11, 0xF9, 0x86, 0x19, 0xF8, 0x19, 0xD7, 0x21, 0xB5, 0x21, 0x73, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x05, 0x29, 0x30, 0x81, 0x31, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x0E, 0x30, 0xEE, 0x41, 0x2E, 0xBC, 0x9B, 0xD4, 0xBB, 0xD4, 0x9A, 0x01, 0xD4, 0x99, 0x02, 0xD4, 0x79, 0x80, 0xCC, 0x99, 0x01, 0xCC, 0xBA, 0x85, 0xC4, 0xFB, 0x93, 0xB7, 0x41, 0x6F, 0x31, 0x2F, 0x29, 0x50, 0x29, 0x71, 0x01, 0x31, 0x71, 0x01, 0x31, 0x91, 0x01, 0x31, 0x92, 0x01, 0x39, 0x92, 0x81, 0x39, 0xB3, 0x39, 0xB2, 0x01, 0x39, 0xB3, 0x07, 0x41, 0xB3, 0x06, 0x49, 0xD3, 0x80, 0x49, 0xB3, 0x02, 0x51, 0xD3, 0x0D, 0x51, 0xB3, 0x80, 0x51, 0xB2, 0x01, 0x51, 0x92, 0x88, 0x51, 0x71, 0x59, 0x71, 0x59, 0x70, 0x69, 0xB1, 0x82, 0x33, 0x9A, 0xD5, 0xBB, 0x98, 0xD4, 0x3A, 0xD3, 0xF9, 0x02, 0xD3, 0xF8, 0x01, 0xD3, 0xD8, 0x80, 0xD3, 0xB7, 0x01, 0xD3, 0x97, 0x82, 0xD3, 0x77, 0xD3, 0x97, 0xD3, 0x77, 0x01, 0xDB, 0x97, 0x80, 0xD3, 0x77, 0x03, 0xD3, 0x76, 0x0F, 0xD3, 0x56, 0x80, 0xD3, 0x57, 0x01, 0xCB, 0x57, 0x8A, 0xC3, 0x57, 0xBB, 0x37, 0xAA, 0xD6, 0x81, 0xD2, 0x79, 0xD3, 0x71, 0xB2, 0x69, 0x92, 0x69, 0x91, 0x71, 0x91, 0xBB, 0xD8, 0xDC, 0xBA, 0x01, 0xDC, 0x99, 0x80, 0xD4, 0x78, 0x01, 0xD4, + 0x57, 0x92, 0xD4, 0x77, 0xD4, 0x78, 0xD4, 0x98, 0xCC, 0x98, 0xBC, 0x98, 0xA4, 0x98, 0x8D, 0x1A, 0x75, 0x5B, 0x5D, 0x9B, 0x5D, 0xFD, 0x56, 0x1D, 0x5E, 0x1D, 0x65, 0xBC, 0x6D, 0x1B, 0x7B, 0xF8, 0xA3, 0xD8, 0xAB, 0x16, 0xB2, 0xB5, 0xBA, 0x95, 0x01, 0xC2, 0x54, 0x89, 0xC2, 0x74, 0xC2, 0x75, 0xBA, 0x75, 0xA1, 0xF4, 0x81, 0xF4, 0x6A, 0x95, 0x6C, 0x39, 0x65, 0x5C, 0x4D, 0x9C, 0x45, 0x9C, 0x01, 0x35, 0x7C, 0x8C, 0x35, 0x7D, 0x35, 0x5D, 0x45, 0x5D, 0x45, 0x1D, 0x4C, 0xFD, 0x5C, 0xDD, 0x64, 0xDC, 0x74, 0xDC, 0x8C, 0xFC, 0xA5, 0x3D, 0xAD, 0x1C, 0xB5, 0x1B, 0xBD, 0x1B, 0x01, 0xBC, 0xFB, 0x80, 0xBC, 0xDA, 0x01, 0xC4, 0xDA, 0x81, 0xC4, 0xBA, 0xCC, 0xDA, 0x01, 0xCC, 0xBA, 0x80, 0xCC, 0x9A, 0x01, 0xCC, 0x99, 0x07, 0xD4, 0x99, 0x01, 0xD4, 0x79, 0x83, 0xD4, 0x99, 0xD4, 0x79, 0xD4, 0x99, 0xD4, 0x78, 0x02, 0xD4, 0x99, 0x81, 0xD4, 0x78, 0xDC, 0x99, 0x01, 0xDC, 0x98, 0x05, 0xD4, 0x98, 0x01, 0xD4, 0x78, 0x01, 0xCC, 0x78, 0x80, 0xCC, 0x98, 0x01, 0xCC, 0x78, 0x83, 0xC4, 0x58, 0xBC, 0x58, 0xB4, 0x58, 0xAC, 0x59, 0x01, 0xA4, 0x79, 0x8C, 0x9C, 0x79, 0x94, 0x99, 0x94, 0xD9, 0x8C, 0xD9, 0x95, 0x1A, 0x95, 0x3B, 0x9D, 0x5B, 0xA5, 0x3A, 0xA4, 0xD9, 0xB4, 0xB9, 0xBC, 0x58, 0xC3, 0xF7, 0xCB, 0xD7, 0x01, 0xD3, 0xB7, 0x02, 0xDB, 0xB7, 0x88, 0xDB, 0xD8, 0xD3, 0xDA, 0xC3, 0xFD, 0x72, 0x59, 0x31, 0x59, 0x21, 0x5B, 0x19, 0x7C, 0x11, 0x7D, 0x11, 0x9D, 0x01, 0x11, 0x9E, 0x96, 0x19, 0x7D, 0x21, 0x7C, 0x31, 0x3A, 0x49, 0x18, 0x79, 0xFA, 0x92, 0x39, 0x9A, 0x38, + 0x81, 0xD6, 0x79, 0xF6, 0x6A, 0x77, 0x63, 0x19, 0x43, 0x7A, 0x33, 0xFC, 0x24, 0xBD, 0x14, 0xDD, 0x0D, 0x7E, 0x05, 0xDF, 0x06, 0x7F, 0x06, 0xDF, 0x07, 0x3F, 0x07, 0x7F, 0x07, 0x9F, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0x9F, 0x01, 0x0F, 0x9F, 0x8C, 0x1F, 0x9F, 0x27, 0x7F, 0x37, 0x1E, 0x5E, 0xDF, 0x75, 0x5B, 0x6A, 0x92, 0x92, 0x12, 0xA9, 0xD3, 0xB9, 0xB3, 0xC1, 0x93, 0xC9, 0xB3, 0xC9, 0x93, 0xC9, 0x73, 0x02, 0xC9, 0x93, 0x90, 0xC9, 0xB3, 0xC1, 0xB3, 0xB9, 0xD3, 0xB1, 0xF4, 0xAA, 0x35, 0x81, 0xB3, 0x50, 0xD0, 0x51, 0x52, 0x51, 0x72, 0x49, 0x92, 0x41, 0x71, 0x41, 0x92, 0x39, 0x72, 0x39, 0x71, 0x31, 0x51, 0x39, 0x71, 0x31, 0x71, 0x01, 0x31, 0x51, 0x88, 0x31, 0x72, 0x31, 0x52, 0x29, 0x32, 0x21, 0x12, 0x19, 0x34, 0x21, 0xB6, 0x11, 0xD8, 0x12, 0x19, 0x09, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x04, 0x01, 0xDA, 0x01, 0x09, 0xF9, 0x80, 0x12, 0x19, 0x01, 0x1A, 0x38, 0x02, 0x22, 0x38, 0x02, 0x2A, 0x38, 0x82, 0x2A, 0x37, 0x32, 0x37, 0x32, 0x17, 0x04, 0x32, 0x37, 0x83, 0x2A, 0x37, 0x32, 0x58, 0x2A, 0x57, 0x32, 0x58, 0x02, 0x32, 0x37, 0x84, 0x32, 0x38, 0x32, 0x37, 0x32, 0x38, 0x32, 0x58, 0x32, 0x38, 0x02, 0x32, 0x37, 0x81, 0x32, 0x58, 0x2A, 0x37, 0x02, 0x32, 0x37, 0x01, 0x2A, 0x37, 0x8A, 0x2A, 0x17, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x37, 0x22, 0x17, 0x2A, 0x17, 0x22, 0x17, 0x21, 0xF6, 0x21, 0xB5, 0x19, 0x74, 0x19, 0x53, 0x01, 0x19, 0x32, 0x85, 0x19, 0x12, 0x21, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, + 0x30, 0x82, 0x29, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x11, 0xB7, 0x19, 0xD7, 0x22, 0x39, 0x22, 0x59, 0x22, 0x38, 0x19, 0xF7, 0x01, 0x12, 0x17, 0x01, 0x1A, 0x17, 0x87, 0x1A, 0x38, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x73, 0x19, 0x52, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x88, 0x21, 0x31, 0x21, 0x52, 0x19, 0x52, 0x29, 0xB4, 0x32, 0x16, 0x31, 0xF5, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x84, 0x21, 0x93, 0x29, 0xB4, 0x21, 0x73, 0x29, 0x93, 0x29, 0xB3, 0x01, 0x21, 0x93, 0x01, 0x21, 0x72, 0x82, 0x21, 0x52, 0x21, 0x51, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x87, 0x19, 0x10, 0x21, 0x72, 0x32, 0x15, 0x21, 0xB3, 0x21, 0x73, 0x21, 0x93, 0x21, 0x73, 0x19, 0x52, 0x01, 0x21, 0x73, 0x85, 0x29, 0x93, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x21, 0x93, 0x01, 0x21, 0xB4, 0x01, 0x21, 0x93, 0x02, 0x21, 0x73, 0x8A, 0x19, 0x73, 0x21, 0x93, 0x21, 0x52, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x18, 0xF0, 0x19, 0x10, 0x21, 0x72, 0x21, 0x93, 0x19, 0x52, 0x01, 0x19, 0x31, 0x87, 0x18, 0xF0, 0x19, 0x10, 0x21, 0x52, 0x21, 0xB3, 0x21, 0x93, 0x19, 0x73, 0x21, 0x93, 0x19, 0x52, 0x01, 0x11, 0x11, 0x85, 0x19, 0x32, 0x21, 0x73, 0x21, 0x93, 0x21, 0x52, + 0x19, 0x11, 0x11, 0x10, 0x01, 0x19, 0x10, 0x80, 0x19, 0x30, 0x01, 0x21, 0x51, 0x01, 0x21, 0x72, 0x83, 0x29, 0xD4, 0x29, 0xB3, 0x21, 0x73, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x85, 0x19, 0x31, 0x19, 0x10, 0x21, 0x51, 0x29, 0x92, 0x21, 0x50, 0x19, 0x0F, 0x01, 0x19, 0x10, 0x01, 0x19, 0x31, 0x82, 0x29, 0xD4, 0x32, 0x15, 0x29, 0xD4, 0x03, 0x19, 0x32, 0x83, 0x11, 0x11, 0x21, 0x73, 0x29, 0xB3, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x21, 0x52, 0x01, 0x29, 0xB3, 0x80, 0x29, 0x93, 0x01, 0x29, 0xB3, 0x02, 0x31, 0xB3, 0x83, 0x29, 0x93, 0x29, 0x92, 0x29, 0x71, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x03, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x31, 0x86, 0x19, 0x31, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x11, 0x33, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x02, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, + 0x01, 0x29, 0x0F, 0x01, 0x21, 0x30, 0x09, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x31, 0x8C, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xD8, 0x11, 0xF9, 0x09, 0xF9, 0x09, 0xFA, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0xD9, 0x09, 0xDA, 0x01, 0x09, 0xFA, 0x83, 0x01, 0xD9, 0x09, 0xDA, 0x09, 0xFA, 0x09, 0xDA, 0x01, 0x01, 0xDA, 0x80, 0x09, 0xDA, 0x01, 0x01, 0xD9, 0x01, 0x09, 0xDA, 0x85, 0x01, 0xDA, 0x09, 0xDA, 0x09, 0xFA, 0x01, 0xDA, 0x09, 0xDA, 0x09, 0xFA, 0x01, 0x01, 0xDA, 0x01, 0x09, 0xFA, 0x83, 0x01, 0xDA, 0x09, 0xDA, 0x01, 0xD9, 0x09, 0xFA, 0x01, 0x09, 0xDA, 0x80, 0x09, 0xFA, 0x01, 0x09, 0xD9, 0x80, 0x09, 0xFA, 0x01, 0x01, 0xD9, 0x88, 0x09, 0xFA, 0x01, 0xDA, 0x01, 0xF9, 0x09, 0xFA, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xFA, 0x09, 0xFA, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x02, 0x09, 0xD9, 0x80, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x80, 0x09, 0xF9, 0x06, 0x01, 0xD9, 0x84, 0x09, 0xD9, 0x09, 0xDA, 0x01, 0xD9, 0x09, 0xD9, 0x01, 0xD9, 0x02, 0x09, 0xD9, 0x81, 0x01, 0xD9, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x80, 0x09, 0xFA, 0x04, 0x09, 0xD9, 0x82, + 0x09, 0xDA, 0x09, 0xD9, 0x09, 0xB9, 0x07, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x84, 0x09, 0xDA, 0x01, 0xB9, 0x09, 0xDA, 0x09, 0xD9, 0x09, 0xDA, 0x01, 0x09, 0xD9, 0x80, 0x09, 0xDA, 0x03, 0x01, 0xD9, 0x01, 0x09, 0xFA, 0x89, 0x01, 0xDA, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xFA, 0x09, 0xDA, 0x09, 0xFA, 0x09, 0xD9, 0x09, 0xDA, 0x09, 0xFA, 0x02, 0x09, 0xDA, 0x80, 0x09, 0xFA, 0x02, 0x09, 0xDA, 0x80, 0x09, 0xFA, 0x01, 0x09, 0xDA, 0x80, 0x09, 0xFA, 0x05, 0x09, 0xDA, 0x82, 0x09, 0xFA, 0x09, 0xDA, 0x09, 0xFA, 0x01, 0x09, 0xDA, 0x01, 0x09, 0xFA, 0x80, 0x09, 0xDA, 0x02, 0x09, 0xFA, 0x81, 0x09, 0xD9, 0x09, 0xFA, 0x07, 0x09, 0xF9, 0x15, 0x09, 0xFA, 0x01, 0x09, 0xF9, 0x04, 0x09, 0xFA, 0x85, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xFA, 0x09, 0xF9, 0x09, 0xFA, 0x09, 0xD9, 0x16, 0x09, 0xFA, 0x01, 0x09, 0xDA, 0x15, 0x09, 0xFA, 0x05, 0x09, 0xDA, 0x83, 0x09, 0xFA, 0x09, 0xDA, 0x09, 0xFA, 0x09, 0xD9, 0x05, 0x09, 0xFA, 0x80, 0x09, 0xF9, 0x01, 0x11, 0xF9, 0x87, 0x19, 0xF8, 0x19, 0xD7, 0x19, 0xB5, 0x21, 0x73, 0x21, 0x51, 0x21, 0x31, 0x29, 0x30, 0x29, 0x50, 0x04, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x84, 0x29, 0x0E, 0x28, 0xEE, 0x30, 0xAC, 0xAB, 0xF9, 0xD4, 0xDB, 0x01, 0xD4, 0x9A, 0x81, 0xD4, 0x99, 0xDC, 0x99, 0x02, 0xD4, 0x99, 0x87, 0xCC, 0x9A, 0xCC, 0xDB, 0xBC, 0x9B, 0x72, 0xB4, 0x31, 0x0E, 0x31, 0x2F, 0x31, 0x50, 0x29, 0x51, 0x02, 0x31, 0x71, 0x01, 0x31, 0x92, 0x03, 0x39, 0x92, 0x80, 0x39, 0xB2, 0x01, 0x41, 0xB2, 0x0B, + 0x41, 0xB3, 0x82, 0x49, 0xB3, 0x41, 0x92, 0x41, 0xB3, 0x01, 0x49, 0xB3, 0x80, 0x51, 0xD3, 0x04, 0x49, 0xB3, 0x80, 0x51, 0xD3, 0x0A, 0x51, 0xB3, 0x80, 0x51, 0xB2, 0x01, 0x51, 0x92, 0x80, 0x51, 0x72, 0x01, 0x51, 0x71, 0x8A, 0x51, 0x50, 0x59, 0x50, 0x51, 0x2F, 0x61, 0x70, 0x9A, 0xD5, 0xB3, 0x77, 0xC3, 0xD9, 0xCC, 0x19, 0xD3, 0xF9, 0xD3, 0xD8, 0xD3, 0xB8, 0x01, 0xDB, 0xB7, 0x03, 0xD3, 0x97, 0x80, 0xDB, 0x97, 0x02, 0xD3, 0x97, 0x80, 0xD3, 0x77, 0x05, 0xD3, 0x76, 0x01, 0xD3, 0x56, 0x81, 0xDB, 0x77, 0xD3, 0x56, 0x06, 0xD3, 0x57, 0x90, 0xCB, 0x57, 0xC3, 0x57, 0xBB, 0x58, 0xAA, 0xF7, 0x82, 0x13, 0x69, 0x91, 0x71, 0xD3, 0x69, 0xB3, 0x69, 0xB2, 0x61, 0x92, 0x61, 0x71, 0x8A, 0x53, 0xD4, 0x7A, 0xDC, 0x9A, 0xDC, 0x99, 0xDC, 0x78, 0xDC, 0x58, 0x02, 0xDC, 0x57, 0x87, 0xD4, 0x57, 0xCC, 0x57, 0xC4, 0x77, 0xB4, 0x77, 0x9C, 0x98, 0x84, 0xF9, 0x6D, 0x3A, 0x5D, 0xBC, 0x01, 0x55, 0xFD, 0x9F, 0x55, 0xFC, 0x5D, 0x9C, 0x6D, 0x1B, 0x7C, 0x18, 0xA3, 0xD8, 0xAA, 0xF6, 0xBA, 0x95, 0xC2, 0x54, 0xC2, 0x14, 0xC2, 0x13, 0xCA, 0x14, 0xCA, 0x34, 0xC2, 0x55, 0xB2, 0x15, 0x91, 0xF4, 0x7A, 0x35, 0x6B, 0x37, 0x75, 0x1C, 0x5D, 0x9C, 0x55, 0x9D, 0x4D, 0x9C, 0x45, 0x7C, 0x45, 0x7D, 0x4D, 0x3D, 0x5D, 0x3D, 0x85, 0xDF, 0x8D, 0x7E, 0x85, 0x1C, 0x94, 0xFC, 0x9D, 0x1C, 0xAD, 0x1C, 0xB4, 0xFB, 0x01, 0xBC, 0xFB, 0x80, 0xC4, 0xFB, 0x02, 0xC4, 0xDA, 0x03, 0xCC, 0xBA, 0x80, 0xCC, 0x9A, 0x01, 0xD4, 0x9A, 0x06, 0xD4, 0x99, 0x02, 0xD4, 0x79, 0x05, 0xD4, 0x78, 0x80, 0xD4, + 0x58, 0x03, 0xDC, 0x78, 0x80, 0xDC, 0x98, 0x07, 0xDC, 0x78, 0x81, 0xD4, 0x78, 0xD4, 0x57, 0x01, 0xD4, 0x77, 0x80, 0xD4, 0x57, 0x02, 0xCC, 0x58, 0x01, 0xC4, 0x78, 0x85, 0xBC, 0x98, 0xBC, 0x99, 0xB4, 0x99, 0xAC, 0x99, 0xAC, 0x58, 0xA4, 0x58, 0x01, 0xA4, 0x38, 0x87, 0xAC, 0x18, 0xAC, 0x17, 0xB4, 0x18, 0xBC, 0x38, 0xCC, 0x58, 0xCB, 0xF7, 0xD3, 0xB7, 0xD3, 0xB6, 0x01, 0xDB, 0xB6, 0x01, 0xDB, 0xB7, 0x86, 0xDB, 0xB8, 0xD3, 0xD9, 0xCB, 0xFC, 0xAB, 0xBD, 0x39, 0x37, 0x21, 0x5A, 0x19, 0x7C, 0x01, 0x11, 0x9D, 0x80, 0x09, 0x9D, 0x01, 0x11, 0x7D, 0x95, 0x21, 0x7C, 0x31, 0x5B, 0x41, 0x18, 0x71, 0xBA, 0x92, 0x5A, 0x9A, 0x59, 0x81, 0xD7, 0x79, 0xF6, 0x6A, 0x78, 0x63, 0x1A, 0x43, 0x3A, 0x33, 0xDC, 0x24, 0x5D, 0x14, 0xDD, 0x0D, 0x5E, 0x05, 0xDE, 0x06, 0x5F, 0x06, 0xDF, 0x07, 0x3F, 0x07, 0x7F, 0x0F, 0xBF, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x8D, 0x07, 0x9F, 0x0F, 0xBF, 0x07, 0x7F, 0x17, 0x9F, 0x1F, 0x7F, 0x37, 0x3E, 0x56, 0xFF, 0x86, 0x5E, 0x62, 0xB2, 0x8A, 0x12, 0xA9, 0xF3, 0xB9, 0xB3, 0xC1, 0x93, 0xC9, 0xB3, 0x01, 0xC9, 0x73, 0x01, 0xC9, 0x93, 0x8A, 0xC9, 0xB3, 0xC9, 0xB4, 0xC1, 0xB3, 0xB9, 0xD3, 0xB1, 0xD4, 0xAA, 0x35, 0x89, 0xD4, 0x58, 0xF1, 0x51, 0x32, 0x51, 0x72, 0x49, 0x72, 0x01, 0x41, 0x92, 0x80, 0x39, 0x72, 0x02, 0x39, 0x71, 0x02, 0x31, 0x51, 0x01, 0x31, 0x72, 0x87, 0x29, 0x32, 0x21, 0x32, 0x21, 0x34, 0x21, 0x96, 0x19, 0xF8, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x02, 0x01, 0xDA, 0x86, 0x01, 0xD9, + 0x09, 0xD9, 0x09, 0xB8, 0x09, 0xD8, 0x11, 0xF7, 0x1A, 0x17, 0x1A, 0x37, 0x01, 0x22, 0x38, 0x80, 0x2A, 0x58, 0x01, 0x2A, 0x38, 0x82, 0x32, 0x58, 0x2A, 0x17, 0x29, 0xF7, 0x03, 0x2A, 0x17, 0x82, 0x2A, 0x37, 0x2A, 0x17, 0x2A, 0x38, 0x03, 0x2A, 0x37, 0x01, 0x32, 0x37, 0x06, 0x2A, 0x37, 0x05, 0x2A, 0x17, 0x81, 0x2A, 0x37, 0x29, 0xF6, 0x02, 0x29, 0xF7, 0x01, 0x2A, 0x17, 0x89, 0x22, 0x17, 0x22, 0x37, 0x22, 0x17, 0x21, 0xF6, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x33, 0x10, 0xF2, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x04, 0x21, 0x30, 0x98, 0x19, 0x10, 0x19, 0x30, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x55, 0x19, 0xB7, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xD7, 0x09, 0x96, 0x09, 0x75, 0x01, 0x55, 0x09, 0x95, 0x11, 0xD6, 0x19, 0xF7, 0x1A, 0x18, 0x1A, 0x38, 0x22, 0x38, 0x21, 0xF7, 0x19, 0x94, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x21, 0x52, 0x01, 0x19, 0x32, 0x80, 0x19, 0x33, 0x02, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x52, 0x88, 0x29, 0xD4, 0x21, 0x93, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x21, 0x72, 0x21, 0x93, 0x21, 0x73, 0x01, 0x21, 0x72, 0x01, 0x21, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x86, 0x21, 0x51, 0x19, 0x31, 0x21, 0x93, 0x19, 0x73, 0x19, 0x52, 0x19, 0x32, 0x11, 0x12, 0x02, 0x19, 0x32, 0x85, 0x19, 0x52, + 0x21, 0x93, 0x21, 0x52, 0x19, 0x31, 0x21, 0x52, 0x19, 0x52, 0x01, 0x19, 0x53, 0x01, 0x11, 0x32, 0x80, 0x11, 0x12, 0x01, 0x11, 0x11, 0x81, 0x19, 0x32, 0x19, 0x73, 0x01, 0x21, 0x94, 0x82, 0x21, 0x73, 0x21, 0x31, 0x21, 0x10, 0x01, 0x18, 0xF0, 0x93, 0x21, 0x93, 0x21, 0x94, 0x21, 0x73, 0x19, 0x32, 0x19, 0x11, 0x18, 0xF0, 0x19, 0x11, 0x21, 0x52, 0x21, 0xB4, 0x21, 0x94, 0x19, 0x94, 0x19, 0x74, 0x19, 0x53, 0x11, 0x32, 0x11, 0x12, 0x19, 0x52, 0x21, 0x94, 0x21, 0x93, 0x21, 0x73, 0x19, 0x31, 0x01, 0x19, 0x10, 0x03, 0x19, 0x30, 0x84, 0x19, 0x31, 0x21, 0x52, 0x21, 0x93, 0x19, 0x52, 0x19, 0x12, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x83, 0x19, 0x10, 0x21, 0x51, 0x29, 0x92, 0x21, 0x50, 0x01, 0x19, 0x10, 0x86, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x21, 0xB4, 0x29, 0xF5, 0x29, 0xD5, 0x19, 0x53, 0x02, 0x19, 0x32, 0x83, 0x11, 0x12, 0x21, 0x93, 0x29, 0xB4, 0x19, 0x32, 0x03, 0x19, 0x31, 0x86, 0x19, 0x32, 0x31, 0xD4, 0x21, 0x73, 0x19, 0x11, 0x19, 0x31, 0x21, 0x52, 0x19, 0x31, 0x06, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x29, 0x30, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x86, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x51, 0x02, 0x21, + 0x31, 0x04, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x02, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x10, 0x21, 0x31, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x31, 0x11, 0x32, 0x11, 0x54, 0x11, 0x95, 0x11, 0xB7, 0x11, 0xF8, 0x02, 0x09, 0xF9, 0x80, 0x09, 0xFA, 0x07, 0x09, 0xD9, 0x80, 0x01, 0xB9, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x07, 0x09, 0xD9, 0x82, 0x09, 0xFA, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x83, 0x09, 0xD9, 0x09, 0xFA, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x02, 0x09, 0xF9, 0x80, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x82, 0x09, 0xD9, 0x09, 0xFA, 0x09, + 0xF9, 0x01, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x03, 0x09, 0xD9, 0x80, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x80, 0x09, 0xF9, 0x04, 0x09, 0xD9, 0x03, 0x01, 0xD9, 0x14, 0x09, 0xD9, 0x01, 0x09, 0xB9, 0x07, 0x09, 0xD9, 0x80, 0x09, 0xF9, 0x0C, 0x09, 0xD9, 0x82, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xF9, 0x03, 0x09, 0xD9, 0x83, 0x09, 0xF9, 0x11, 0xF9, 0x09, 0xF9, 0x11, 0xF9, 0x02, 0x09, 0xF9, 0x82, 0x09, 0xD9, 0x09, 0xFA, 0x09, 0xDA, 0x01, 0x09, 0xF9, 0x03, 0x09, 0xFA, 0x80, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x06, 0x09, 0xD9, 0x81, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0x09, 0xFA, 0x01, 0x09, 0xF9, 0x01, 0x09, 0xFA, 0x03, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x80, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x1E, 0x09, 0xF9, 0x80, 0x11, 0xF9, 0x03, 0x09, 0xF9, 0x82, 0x09, 0xFA, 0x09, 0xF9, 0x09, 0xFA, 0x01, 0x09, 0xF9, 0x02, 0x09, 0xFA, 0x07, 0x09, 0xF9, 0x82, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xFA, 0x05, 0x09, 0xF9, 0x80, 0x09, 0xD9, 0x04, 0x09, 0xF9, 0x80, 0x09, 0xFA, 0x07, 0x09, 0xF9, 0x80, 0x11, 0xFA, 0x05, 0x09, 0xFA, 0x80, 0x09, 0xD9, 0x02, 0x09, 0xFA, 0x01, 0x09, 0xF9, 0x82, 0x09, 0xFA, 0x09, 0xD9, 0x09, 0xFA, 0x01, 0x09, 0xF9, 0x80, 0x09, 0xFA, 0x01, 0x09, 0xF9, 0x02, 0x11, 0xFA, 0x02, 0x11, 0xF9, 0x88, 0x11, 0xF8, 0x19, 0xF8, 0x19, 0xD6, 0x19, 0x94, 0x19, 0x52, 0x21, 0x31, 0x21, 0x51, 0x29, 0x30, 0x29, 0x50, 0x04, 0x29, 0x30, 0x87, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x28, 0xEE, 0x28, 0xCD, 0x7A, 0xD4, 0xD4, 0xFC, 0xD4, 0xBB, 0x02, 0xDC, 0xBA, 0x02, 0xD4, 0xBA, 0x86, + 0xCC, 0xDB, 0xCC, 0xFC, 0x82, 0xF5, 0x49, 0x6F, 0x31, 0x0E, 0x29, 0x2F, 0x29, 0x50, 0x03, 0x31, 0x71, 0x81, 0x31, 0x92, 0x31, 0x71, 0x02, 0x39, 0x92, 0x80, 0x39, 0xB2, 0x02, 0x39, 0x92, 0x80, 0x41, 0x92, 0x02, 0x41, 0xB2, 0x03, 0x41, 0xB3, 0x01, 0x41, 0xB2, 0x80, 0x41, 0x92, 0x01, 0x41, 0xB3, 0x80, 0x41, 0xB2, 0x01, 0x41, 0xB3, 0x80, 0x41, 0x92, 0x0F, 0x49, 0xB3, 0x02, 0x51, 0xB3, 0x80, 0x51, 0xB2, 0x04, 0x51, 0x92, 0x01, 0x51, 0x72, 0x8A, 0x51, 0x71, 0x51, 0x51, 0x51, 0x50, 0x59, 0x2F, 0x69, 0x90, 0x79, 0xD1, 0xA2, 0xD5, 0xC3, 0xD9, 0xDC, 0x3A, 0xD3, 0xF9, 0xD3, 0xD8, 0x01, 0xD3, 0xB8, 0x80, 0xD3, 0x98, 0x03, 0xD3, 0x97, 0x01, 0xD3, 0x77, 0x01, 0xD3, 0x97, 0x80, 0xD3, 0x77, 0x01, 0xD3, 0x97, 0x01, 0xD3, 0x77, 0x03, 0xDB, 0x97, 0x80, 0xD3, 0x77, 0x01, 0xD3, 0x98, 0x80, 0xD3, 0x78, 0x01, 0xCB, 0x77, 0x8E, 0xC3, 0x98, 0xB3, 0x17, 0x79, 0xD2, 0x69, 0x91, 0x61, 0x71, 0x61, 0xB2, 0x61, 0xD3, 0x69, 0xB3, 0x61, 0xB2, 0x61, 0x91, 0x61, 0x50, 0xB3, 0x97, 0xD4, 0x59, 0xDC, 0x79, 0xDC, 0x78, 0x02, 0xDC, 0x58, 0x01, 0xDC, 0x37, 0x92, 0xD4, 0x57, 0xCC, 0x37, 0xC4, 0x57, 0xAC, 0x57, 0x94, 0x78, 0x74, 0xF9, 0x65, 0x7B, 0x5D, 0xDC, 0x55, 0xFD, 0x56, 0x1D, 0x55, 0xDC, 0x5D, 0x9C, 0x75, 0x1B, 0x84, 0x18, 0x9B, 0x97, 0xAA, 0xD6, 0xBA, 0x75, 0xC2, 0x34, 0xC2, 0x14, 0x01, 0xC9, 0xF3, 0x93, 0xCA, 0x14, 0xC2, 0x15, 0xBA, 0x15, 0xA1, 0xF4, 0x81, 0xF5, 0x6A, 0x95, 0x74, 0xBB, 0x65, 0x3C, 0x5D, 0x7C, 0x5D, 0x9D, 0x5D, 0x7D, 0x55, 0x3C, 0x5C, + 0xFC, 0x6C, 0xDC, 0x85, 0x1C, 0x9D, 0x3D, 0xA5, 0x1C, 0xA4, 0xDB, 0xB4, 0xFB, 0xB4, 0xDB, 0x01, 0xBC, 0xDA, 0x01, 0xC4, 0xDA, 0x01, 0xCC, 0xDA, 0x02, 0xCC, 0xBA, 0x01, 0xD4, 0xBA, 0x01, 0xD4, 0x9A, 0x06, 0xD4, 0x99, 0x03, 0xDC, 0x99, 0x80, 0xDC, 0x79, 0x0E, 0xDC, 0x78, 0x80, 0xDC, 0x58, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x80, 0xD4, 0x57, 0x03, 0xD4, 0x37, 0x01, 0xCC, 0x37, 0x85, 0xCC, 0x57, 0xC4, 0x57, 0xC4, 0x78, 0xC4, 0x58, 0xBC, 0x58, 0xBC, 0x38, 0x01, 0xBB, 0xF8, 0x01, 0xBB, 0xD7, 0x01, 0xC3, 0xD7, 0x84, 0xC3, 0xF7, 0xD4, 0x18, 0xD3, 0xD7, 0xD3, 0xB6, 0xD3, 0x96, 0x02, 0xDB, 0x96, 0x01, 0xDB, 0xB7, 0xA0, 0xD3, 0xB9, 0xD3, 0xFA, 0xC4, 0x3E, 0x49, 0x78, 0x21, 0x39, 0x19, 0x7B, 0x11, 0x7C, 0x09, 0x7D, 0x09, 0x9D, 0x09, 0x7D, 0x11, 0x7D, 0x19, 0x7D, 0x29, 0x5B, 0x39, 0x19, 0x61, 0x9A, 0x92, 0x5B, 0x9A, 0x59, 0x81, 0xD7, 0x71, 0xD7, 0x6A, 0x78, 0x63, 0x1A, 0x4B, 0x1A, 0x33, 0x9B, 0x2C, 0x5D, 0x14, 0xBD, 0x0D, 0x5E, 0x05, 0xBE, 0x06, 0x5F, 0x06, 0xBF, 0x07, 0x3F, 0x07, 0x5F, 0x0F, 0xBF, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x8C, 0x07, 0xBF, 0x07, 0x9F, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x9F, 0x2F, 0x3E, 0x4E, 0xFE, 0x86, 0xBF, 0x62, 0xF3, 0x82, 0x12, 0xA1, 0xF3, 0xB1, 0xB3, 0xC1, 0xB3, 0x05, 0xC9, 0x93, 0x89, 0xC9, 0xB4, 0xC1, 0xD4, 0xC1, 0xF4, 0xB1, 0xD4, 0xAA, 0x35, 0x89, 0xD4, 0x58, 0xF1, 0x51, 0x32, 0x51, 0x73, 0x51, 0x92, 0x01, 0x41, 0x72, 0x01, 0x39, 0x71, 0x84, 0x39, 0x72, 0x39, 0x71, 0x39, 0x51, 0x39, + 0x71, 0x31, 0x31, 0x01, 0x31, 0x72, 0x88, 0x29, 0x12, 0x21, 0x32, 0x21, 0x34, 0x21, 0x96, 0x19, 0xD8, 0x09, 0xB8, 0x09, 0xB9, 0x09, 0xDA, 0x01, 0xDA, 0x02, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x86, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xB8, 0x09, 0xB8, 0x09, 0xB7, 0x09, 0xD6, 0x09, 0xB6, 0x03, 0x11, 0xB5, 0x03, 0x19, 0x95, 0x81, 0x21, 0x95, 0x19, 0x75, 0x05, 0x19, 0x95, 0x80, 0x19, 0xB5, 0x01, 0x19, 0x95, 0x80, 0x19, 0x94, 0x02, 0x19, 0x95, 0x01, 0x19, 0xB5, 0x01, 0x19, 0x95, 0x82, 0x19, 0xB5, 0x19, 0x95, 0x19, 0x94, 0x03, 0x19, 0x95, 0x01, 0x19, 0x94, 0x01, 0x19, 0x74, 0x81, 0x19, 0x95, 0x19, 0x75, 0x01, 0x19, 0x95, 0x82, 0x19, 0xB6, 0x22, 0x17, 0x22, 0x38, 0x01, 0x22, 0x17, 0x84, 0x21, 0xD6, 0x19, 0x74, 0x19, 0x53, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x89, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x76, 0x19, 0xD7, 0x11, 0xD7, 0x11, 0xB7, 0x09, 0x76, 0x01, 0x55, 0x02, 0x09, 0x55, 0x88, 0x09, 0x75, 0x09, 0xB6, 0x11, 0xD7, 0x1A, 0x18, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x51, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x21, 0x32, 0x21, 0x53, 0x21, 0x73, 0x19, 0x33, 0x01, 0x19, 0x32, 0x81, 0x19, 0x52, 0x19, 0x31, 0x01, 0x19, 0x52, 0x83, 0x11, 0x32, 0x21, 0xB4, + 0x21, 0xB3, 0x19, 0x52, 0x02, 0x19, 0x31, 0x86, 0x19, 0x32, 0x19, 0x72, 0x21, 0x72, 0x21, 0x52, 0x21, 0x72, 0x21, 0x31, 0x19, 0x10, 0x06, 0x21, 0x30, 0x02, 0x21, 0x31, 0x82, 0x19, 0x31, 0x21, 0x93, 0x19, 0x73, 0x01, 0x11, 0x12, 0x89, 0x19, 0x12, 0x11, 0x12, 0x19, 0x32, 0x19, 0x52, 0x19, 0x73, 0x21, 0x93, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x52, 0x01, 0x19, 0x53, 0x8D, 0x19, 0x74, 0x11, 0x33, 0x19, 0x32, 0x11, 0x12, 0x19, 0x12, 0x19, 0x32, 0x19, 0x53, 0x19, 0x94, 0x19, 0x74, 0x19, 0x53, 0x21, 0x52, 0x19, 0x10, 0x18, 0xF0, 0x19, 0x11, 0x01, 0x21, 0x73, 0x8E, 0x19, 0x53, 0x19, 0x52, 0x19, 0x31, 0x18, 0xF0, 0x19, 0x11, 0x21, 0x52, 0x21, 0x93, 0x21, 0xB4, 0x21, 0x94, 0x19, 0x73, 0x19, 0x53, 0x11, 0x32, 0x11, 0x12, 0x19, 0x33, 0x19, 0x73, 0x01, 0x21, 0x73, 0x8A, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x19, 0x30, 0x21, 0x50, 0x19, 0x30, 0x19, 0x31, 0x19, 0x51, 0x21, 0x93, 0x19, 0x53, 0x02, 0x19, 0x32, 0x89, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x21, 0x51, 0x29, 0x92, 0x21, 0x50, 0x19, 0x30, 0x21, 0x30, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x19, 0x73, 0x21, 0xB5, 0x21, 0xB4, 0x01, 0x19, 0x53, 0x80, 0x11, 0x32, 0x01, 0x11, 0x12, 0x01, 0x21, 0x94, 0x80, 0x11, 0x11, 0x01, 0x19, 0x31, 0x84, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x29, 0xB4, 0x21, 0x53, 0x02, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x03, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x83, 0x29, 0x0F, + 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x20, 0xEF, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x02, 0x21, 0x11, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x07, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x8A, 0x21, 0x31, 0x21, 0x51, 0x10, 0xF1, 0x11, 0x12, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xF8, 0x09, 0xD8, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x02, + 0x01, 0xB8, 0x01, 0x11, 0xF9, 0x80, 0x09, 0xF9, 0x01, 0x11, 0xF9, 0x80, 0x09, 0xD9, 0x01, 0x11, 0xF9, 0x02, 0x12, 0x19, 0x01, 0x11, 0xF9, 0x01, 0x12, 0x19, 0x06, 0x11, 0xF9, 0x85, 0x09, 0xD8, 0x11, 0xF9, 0x09, 0xD8, 0x11, 0xF9, 0x09, 0xD8, 0x11, 0xF9, 0x01, 0x11, 0xD9, 0x03, 0x11, 0xF9, 0x03, 0x09, 0xF9, 0x01, 0x11, 0xF9, 0x81, 0x09, 0xF9, 0x09, 0xD9, 0x05, 0x11, 0xF9, 0x01, 0x11, 0xD9, 0x81, 0x11, 0xF9, 0x11, 0xD9, 0x01, 0x11, 0xF9, 0x81, 0x11, 0xD8, 0x11, 0xF9, 0x01, 0x09, 0xF9, 0x81, 0x0A, 0x19, 0x09, 0xF9, 0x04, 0x11, 0xF9, 0x82, 0x11, 0xD9, 0x11, 0xF9, 0x12, 0x19, 0x01, 0x11, 0xF9, 0x01, 0x12, 0x19, 0x03, 0x11, 0xF9, 0x01, 0x12, 0x19, 0x03, 0x11, 0xF9, 0x80, 0x12, 0x19, 0x01, 0x11, 0xF9, 0x80, 0x12, 0x19, 0x01, 0x11, 0xF9, 0x80, 0x12, 0x19, 0x01, 0x11, 0xF9, 0x80, 0x12, 0x19, 0x01, 0x11, 0xF9, 0x80, 0x12, 0x19, 0x02, 0x11, 0xF9, 0x80, 0x12, 0x19, 0x06, 0x11, 0xF9, 0x81, 0x09, 0xF8, 0x11, 0xF8, 0x02, 0x11, 0xF9, 0x83, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xF9, 0x11, 0xF8, 0x01, 0x11, 0xF9, 0x80, 0x11, 0xD9, 0x03, 0x11, 0xF9, 0x80, 0x09, 0xD9, 0x07, 0x11, 0xF9, 0x01, 0x11, 0xD9, 0x5A, 0x11, 0xF9, 0x80, 0x12, 0x19, 0x08, 0x11, 0xF9, 0x80, 0x12, 0x19, 0x05, 0x11, 0xF9, 0x80, 0x11, 0xD9, 0x0D, 0x11, 0xF9, 0x01, 0x11, 0xF8, 0x85, 0x19, 0xF8, 0x19, 0xD7, 0x21, 0xB5, 0x19, 0x53, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x04, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x85, 0x29, 0x0F, 0x29, 0x0E, 0x30, 0xEE, 0x49, 0x6F, 0xBC, 0x7B, 0xD4, + 0xBB, 0x01, 0xDC, 0xBB, 0x80, 0xDC, 0xBA, 0x01, 0xD4, 0xBA, 0x88, 0xD4, 0xBB, 0xC4, 0x9B, 0x8B, 0x36, 0x38, 0xED, 0x30, 0xEE, 0x31, 0x0F, 0x31, 0x30, 0x31, 0x50, 0x31, 0x51, 0x02, 0x31, 0x71, 0x80, 0x39, 0x91, 0x04, 0x39, 0x92, 0x81, 0x41, 0x92, 0x39, 0x92, 0x06, 0x41, 0x92, 0x02, 0x41, 0xB2, 0x86, 0x49, 0xB3, 0x41, 0xB3, 0x41, 0xB2, 0x49, 0xB3, 0x41, 0xB3, 0x49, 0xB3, 0x41, 0xB3, 0x04, 0x49, 0xB3, 0x81, 0x41, 0x92, 0x49, 0x93, 0x06, 0x49, 0xB3, 0x80, 0x49, 0xD3, 0x03, 0x49, 0xB3, 0x01, 0x51, 0xB3, 0x01, 0x49, 0xB2, 0x04, 0x49, 0x92, 0x01, 0x49, 0x72, 0x80, 0x51, 0x72, 0x01, 0x51, 0x71, 0x88, 0x51, 0x51, 0x51, 0x50, 0x51, 0x0F, 0x50, 0xEF, 0x59, 0x0F, 0x82, 0x13, 0xA3, 0x17, 0xB3, 0x78, 0xC3, 0xB9, 0x01, 0xCB, 0xD9, 0x01, 0xCB, 0xB8, 0x80, 0xD3, 0xB8, 0x06, 0xD3, 0x97, 0x81, 0xD3, 0x98, 0xD3, 0x97, 0x03, 0xD3, 0x98, 0x01, 0xCB, 0x98, 0x89, 0xC3, 0x98, 0xBB, 0x78, 0xB3, 0x37, 0x9A, 0xD6, 0x79, 0xF2, 0x61, 0x50, 0x61, 0x71, 0x59, 0x72, 0x59, 0x92, 0x59, 0xB2, 0x01, 0x61, 0xB3, 0x87, 0x61, 0x92, 0x61, 0x71, 0x71, 0xB1, 0xCC, 0x39, 0xDC, 0x59, 0xDC, 0x79, 0xDC, 0x78, 0xDC, 0x58, 0x01, 0xE4, 0x58, 0x89, 0xE4, 0x57, 0xDC, 0x37, 0xD4, 0x57, 0xCC, 0x37, 0xB4, 0x37, 0xA4, 0x58, 0x8C, 0xB9, 0x6D, 0x1A, 0x5D, 0x9C, 0x55, 0xDD, 0x01, 0x4D, 0xFD, 0x89, 0x55, 0xDC, 0x5D, 0x7C, 0x75, 0x1B, 0x83, 0xD8, 0x9B, 0x16, 0xAA, 0x75, 0xBA, 0x55, 0xC2, 0x34, 0xCA, 0x34, 0xCA, 0x14, 0x01, 0xC9, 0xF4, 0x87, 0xC1, 0xD4, 0xB1, 0xD4, 0xA1, 0xF4, + 0x92, 0x35, 0x7A, 0xB6, 0x84, 0xBB, 0x75, 0x3C, 0x6D, 0x5C, 0x01, 0x6D, 0x7D, 0x85, 0x75, 0x7D, 0x7D, 0x3D, 0x85, 0x3D, 0x9D, 0x3D, 0xAD, 0x5D, 0xAD, 0x1C, 0x01, 0xBD, 0x1C, 0x01, 0xC4, 0xFB, 0x80, 0xC4, 0xDB, 0x02, 0xCC, 0xDB, 0x80, 0xCC, 0xBA, 0x06, 0xD4, 0xBA, 0x81, 0xDC, 0xBA, 0xD4, 0x9A, 0x01, 0xDC, 0x99, 0x01, 0xD4, 0x99, 0x06, 0xDC, 0x99, 0x80, 0xDC, 0x98, 0x06, 0xDC, 0x78, 0x05, 0xDC, 0x58, 0x80, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x03, 0xD4, 0x37, 0x80, 0xD4, 0x17, 0x02, 0xD4, 0x37, 0x03, 0xCC, 0x37, 0x80, 0xCC, 0x17, 0x01, 0xC4, 0x17, 0x80, 0xC3, 0xF7, 0x01, 0xCB, 0xF7, 0x02, 0xCB, 0xD7, 0x82, 0xD3, 0xF7, 0xD3, 0xD7, 0xD3, 0xB6, 0x01, 0xD3, 0x96, 0x01, 0xDB, 0x96, 0x88, 0xDB, 0xB7, 0xDB, 0x97, 0xDB, 0xB8, 0xD3, 0xDA, 0xCC, 0x1D, 0x72, 0x7A, 0x31, 0x59, 0x21, 0x5B, 0x11, 0x7C, 0x02, 0x09, 0x7D, 0x94, 0x11, 0x7D, 0x19, 0x7D, 0x29, 0x7C, 0x39, 0x1A, 0x51, 0x38, 0x92, 0x7B, 0x92, 0x5A, 0x81, 0xF8, 0x71, 0xF7, 0x6A, 0x78, 0x6B, 0x1A, 0x4B, 0x1A, 0x33, 0x7B, 0x24, 0x1C, 0x14, 0x9D, 0x0D, 0x1E, 0x05, 0xBE, 0x06, 0x5F, 0x06, 0xBF, 0x07, 0x1F, 0x07, 0x5F, 0x01, 0x0F, 0xBF, 0x01, 0x07, 0xDF, 0x8D, 0x07, 0xBF, 0x07, 0x9F, 0x0F, 0x9F, 0x17, 0xBF, 0x17, 0x7F, 0x2F, 0x5F, 0x46, 0xFE, 0x86, 0xFF, 0x63, 0x54, 0x71, 0xD1, 0x99, 0xF2, 0xB1, 0xD3, 0xC1, 0xD4, 0xC9, 0xB3, 0x05, 0xC9, 0x93, 0x87, 0xC1, 0xB3, 0xB9, 0xD3, 0xB9, 0xF4, 0xB2, 0x35, 0x91, 0xF4, 0x58, 0xF1, 0x51, 0x11, 0x51, 0x72, 0x01, 0x49, 0x92, 0x80, 0x41, 0x71, 0x03, + 0x39, 0x71, 0x80, 0x39, 0x51, 0x01, 0x31, 0x51, 0x8B, 0x31, 0x52, 0x31, 0x72, 0x29, 0x32, 0x21, 0x32, 0x21, 0x33, 0x21, 0x96, 0x19, 0xF8, 0x11, 0xF9, 0x09, 0xB9, 0x09, 0xDA, 0x01, 0xDA, 0x09, 0xFA, 0x02, 0x01, 0xBA, 0x80, 0x09, 0xDA, 0x01, 0x09, 0xD9, 0x84, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0xD7, 0x09, 0x75, 0x09, 0x54, 0x02, 0x09, 0x33, 0x81, 0x09, 0x32, 0x11, 0x33, 0x05, 0x11, 0x12, 0x82, 0x11, 0x13, 0x11, 0x12, 0x11, 0x13, 0x03, 0x11, 0x33, 0x82, 0x11, 0x12, 0x11, 0x32, 0x11, 0x12, 0x03, 0x11, 0x32, 0x01, 0x11, 0x12, 0x03, 0x11, 0x32, 0x02, 0x11, 0x12, 0x96, 0x10, 0xF2, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x13, 0x08, 0xF2, 0x09, 0x13, 0x09, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x53, 0x19, 0x33, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x29, 0x31, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0x55, 0x11, 0x96, 0x01, 0x11, 0xB7, 0x82, 0x11, 0x97, 0x09, 0x76, 0x09, 0x55, 0x01, 0x09, 0x34, 0x8A, 0x09, 0x55, 0x09, 0x75, 0x09, 0x96, 0x11, 0xD7, 0x19, 0xF7, 0x21, 0xF7, 0x11, 0x74, 0x11, 0x12, 0x19, 0x32, 0x21, 0x52, 0x21, 0x51, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x50, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x31, 0x19, 0x32, 0x21, 0x53, 0x21, 0x73, 0x01, 0x21, 0x74, 0x80, 0x21, 0x73, 0x02, 0x19, 0x32, 0x83, + 0x19, 0x52, 0x11, 0x32, 0x19, 0x93, 0x21, 0x93, 0x05, 0x19, 0x32, 0x84, 0x19, 0x52, 0x21, 0x73, 0x21, 0x72, 0x21, 0x52, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x21, 0x73, 0x19, 0x53, 0x10, 0xF1, 0x01, 0x11, 0x12, 0x01, 0x19, 0x32, 0x82, 0x19, 0x52, 0x29, 0xB4, 0x19, 0x52, 0x02, 0x19, 0x11, 0x81, 0x19, 0x32, 0x11, 0x32, 0x01, 0x19, 0x53, 0x84, 0x19, 0x74, 0x19, 0x53, 0x11, 0x32, 0x11, 0x12, 0x19, 0x33, 0x01, 0x19, 0x73, 0x85, 0x19, 0x74, 0x19, 0x53, 0x21, 0x31, 0x19, 0x11, 0x19, 0x10, 0x21, 0x32, 0x01, 0x19, 0x53, 0x82, 0x19, 0x73, 0x19, 0x52, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x21, 0x52, 0x01, 0x19, 0x73, 0x83, 0x19, 0x94, 0x19, 0x53, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x73, 0x86, 0x19, 0x53, 0x19, 0x73, 0x21, 0x73, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x51, 0x02, 0x19, 0x30, 0x01, 0x19, 0x31, 0x81, 0x21, 0x73, 0x19, 0x73, 0x02, 0x19, 0x32, 0x03, 0x19, 0x31, 0x85, 0x19, 0x11, 0x21, 0x51, 0x29, 0x92, 0x21, 0x30, 0x19, 0x30, 0x21, 0x51, 0x01, 0x19, 0x31, 0x81, 0x19, 0x32, 0x19, 0x53, 0x01, 0x19, 0x73, 0x87, 0x19, 0x53, 0x19, 0x73, 0x19, 0x53, 0x11, 0x13, 0x19, 0x33, 0x29, 0xB5, 0x19, 0x53, 0x11, 0x12, 0x03, 0x19, 0x31, 0x82, 0x19, 0x52, 0x21, 0x93, 0x19, 0x52, 0x05, 0x19, 0x32, 0x81, 0x19, 0x52, 0x21, 0x52, 0x02, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, + 0x2F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x08, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x04, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x88, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x11, 0x11, 0x32, 0x19, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x01, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x85, 0x01, 0xB9, 0x01, 0xB8, 0x09, 0xB8, 0x09, 0xD8, 0x11, 0xF8, 0x19, 0xF9, 0x02, 0x11, 0xD8, 0x01, 0x11, 0xD7, 0x82, 0x19, 0xD7, 0x11, 0xB7, 0x11, 0xD7, 0x04, 0x11, + 0xB7, 0x80, 0x19, 0xD7, 0x04, 0x11, 0xB7, 0x04, 0x11, 0xD7, 0x05, 0x11, 0xB7, 0x81, 0x11, 0xD7, 0x19, 0xD7, 0x04, 0x11, 0xD7, 0x81, 0x19, 0xD7, 0x11, 0xD7, 0x01, 0x19, 0xD7, 0x82, 0x11, 0xD7, 0x11, 0xB6, 0x19, 0xD7, 0x01, 0x11, 0xD7, 0x80, 0x11, 0xB7, 0x01, 0x19, 0xB7, 0x83, 0x11, 0xB7, 0x19, 0xB7, 0x19, 0xD8, 0x11, 0xB7, 0x01, 0x19, 0xD7, 0x88, 0x19, 0xF7, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xF7, 0x11, 0xD7, 0x19, 0xD7, 0x11, 0xD7, 0x19, 0xD7, 0x19, 0xD8, 0x04, 0x19, 0xD7, 0x01, 0x11, 0xD7, 0x81, 0x19, 0xD7, 0x19, 0xB7, 0x01, 0x19, 0xD7, 0x01, 0x19, 0xB7, 0x01, 0x19, 0xD7, 0x80, 0x19, 0xB7, 0x01, 0x19, 0xD7, 0x80, 0x11, 0xB7, 0x01, 0x19, 0xD7, 0x81, 0x19, 0xB7, 0x11, 0xB7, 0x04, 0x19, 0xD7, 0x80, 0x11, 0xB7, 0x03, 0x19, 0xD7, 0x84, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0xD7, 0x19, 0xD7, 0x11, 0xD7, 0x08, 0x11, 0xB6, 0x80, 0x19, 0xF7, 0x04, 0x19, 0xD7, 0x86, 0x19, 0xF7, 0x11, 0xD7, 0x19, 0xF7, 0x11, 0xD7, 0x19, 0xF7, 0x11, 0xD7, 0x19, 0xF8, 0x01, 0x19, 0xD8, 0x04, 0x19, 0xD7, 0x80, 0x19, 0xD8, 0x01, 0x19, 0xD7, 0x02, 0x11, 0xD7, 0x80, 0x19, 0xD7, 0x03, 0x11, 0xD7, 0x06, 0x19, 0xD8, 0x01, 0x11, 0xD7, 0x80, 0x19, 0xD8, 0x01, 0x19, 0xF8, 0x80, 0x19, 0xF7, 0x01, 0x19, 0xD8, 0x82, 0x19, 0xF8, 0x19, 0xF7, 0x19, 0xD8, 0x03, 0x19, 0xF8, 0x04, 0x19, 0xD8, 0x82, 0x19, 0xF8, 0x19, 0xF7, 0x19, 0xD8, 0x01, 0x11, 0xD7, 0x80, 0x19, 0xD7, 0x02, 0x11, 0xD7, 0x02, 0x19, 0xD7, 0x81, 0x11, 0xD7, 0x19, 0xD7, 0x07, 0x11, 0xD7, 0x80, 0x19, 0xD7, 0x09, + 0x11, 0xD7, 0x82, 0x19, 0xD7, 0x11, 0xD7, 0x19, 0xD7, 0x03, 0x11, 0xD7, 0x80, 0x19, 0xD7, 0x02, 0x19, 0xD8, 0x81, 0x19, 0xF8, 0x19, 0xD8, 0x02, 0x19, 0xF8, 0x04, 0x19, 0xD7, 0x80, 0x11, 0xD7, 0x01, 0x19, 0xD7, 0x01, 0x11, 0xD7, 0x80, 0x19, 0xD7, 0x0D, 0x11, 0xD7, 0x01, 0x19, 0xD8, 0x01, 0x19, 0xD7, 0x07, 0x19, 0xF8, 0x87, 0x19, 0xF7, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x94, 0x19, 0x53, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x05, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x85, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0x8C, 0x8B, 0x56, 0xCC, 0xFC, 0xDC, 0xDC, 0x01, 0xDC, 0xDB, 0x89, 0xDC, 0xBB, 0xD4, 0xBB, 0xD4, 0xFC, 0xAB, 0xD8, 0x49, 0x4F, 0x30, 0xCD, 0x30, 0xEE, 0x31, 0x0F, 0x31, 0x30, 0x31, 0x50, 0x01, 0x31, 0x51, 0x01, 0x31, 0x71, 0x81, 0x39, 0x91, 0x39, 0x71, 0x01, 0x39, 0x91, 0x01, 0x39, 0x92, 0x83, 0x39, 0x72, 0x39, 0x92, 0x41, 0x92, 0x39, 0x92, 0x0A, 0x41, 0x92, 0x04, 0x41, 0xB2, 0x80, 0x41, 0xB3, 0x03, 0x41, 0xB2, 0x03, 0x41, 0x92, 0x80, 0x41, 0xB2, 0x03, 0x49, 0xB2, 0x80, 0x49, 0xB3, 0x07, 0x49, 0xB2, 0x07, 0x49, 0x92, 0x02, 0x49, 0x72, 0x82, 0x49, 0x71, 0x49, 0x51, 0x51, 0x51, 0x01, 0x51, 0x30, 0x8A, 0x51, 0x0F, 0x59, 0x2F, 0x69, 0x70, 0x71, 0xB1, 0x82, 0x13, 0x9A, 0xB5, 0xAB, 0x37, 0xC3, 0xD9, 0xD4, 0x1A, 0xD3, 0xF9, 0xCB, 0xD9, 0x01, 0xCB, 0xB8, 0x81, 0xCB, 0x98, 0xCB, 0xB8, 0x01, 0xCB, 0xD9, 0x85, 0xD3, 0xF9, 0xCB, 0xD9, 0xC3, 0xB9, 0xB3, 0x37, 0xA2, 0xB5, 0x8A, 0x33, 0x01, 0x71, 0x91, 0x82, 0x61, 0x50, 0x59, 0x50, 0x59, 0x71, 0x03, + 0x59, 0x92, 0x01, 0x59, 0xB3, 0x87, 0x59, 0xB2, 0x61, 0xB2, 0x61, 0x71, 0xA3, 0x36, 0xDC, 0x7A, 0xDC, 0x79, 0xE4, 0x99, 0xE4, 0x78, 0x02, 0xE4, 0x58, 0x89, 0xE4, 0x57, 0xDC, 0x37, 0xD4, 0x37, 0xC4, 0x37, 0xB4, 0x38, 0x9C, 0x78, 0x84, 0xD9, 0x6D, 0x5B, 0x5D, 0xBC, 0x55, 0xFD, 0x01, 0x4D, 0xFD, 0xA4, 0x55, 0xBC, 0x65, 0x7C, 0x74, 0xFB, 0x83, 0x77, 0x9A, 0xD6, 0xAA, 0x75, 0xBA, 0x35, 0xC2, 0x34, 0xCA, 0x35, 0xCA, 0x14, 0xC9, 0xF4, 0xC1, 0xD3, 0xC1, 0xD4, 0xB1, 0xD4, 0xA9, 0xF5, 0x9A, 0x36, 0x8A, 0xD7, 0x8C, 0x5B, 0x85, 0x1D, 0x85, 0x5E, 0x85, 0x7E, 0x8D, 0x9F, 0x95, 0x9F, 0x9D, 0x7F, 0x9C, 0xFD, 0x9C, 0xBC, 0xAC, 0xFD, 0xC5, 0x5E, 0xCD, 0x5E, 0xCD, 0x3D, 0xCD, 0x1D, 0xCD, 0x1C, 0xCC, 0xFC, 0xCC, 0xDC, 0xCC, 0xDB, 0xCC, 0xDC, 0xCC, 0xDB, 0x01, 0xD4, 0xDB, 0x04, 0xD4, 0xBB, 0x02, 0xD4, 0xBA, 0x05, 0xD4, 0x9A, 0x01, 0xD4, 0x99, 0x05, 0xDC, 0x99, 0x80, 0xDC, 0x79, 0x01, 0xDC, 0x78, 0x80, 0xE4, 0x79, 0x01, 0xDC, 0x78, 0x80, 0xDC, 0x58, 0x01, 0xDC, 0x38, 0x02, 0xDC, 0x37, 0x80, 0xDC, 0x38, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x17, 0x08, 0xD4, 0x17, 0x80, 0xD3, 0xF7, 0x03, 0xCB, 0xF7, 0x80, 0xD3, 0xF7, 0x04, 0xD3, 0xD7, 0x81, 0xD3, 0xB7, 0xD3, 0x96, 0x03, 0xDB, 0x96, 0xA0, 0xDB, 0xB7, 0xDB, 0x97, 0xDB, 0xB8, 0xD3, 0xB9, 0xCB, 0xFC, 0x93, 0x3C, 0x41, 0x58, 0x29, 0x7A, 0x19, 0x7C, 0x11, 0x7D, 0x09, 0x7D, 0x09, 0x9D, 0x11, 0x7D, 0x19, 0x7D, 0x21, 0x5C, 0x31, 0x3A, 0x49, 0x39, 0x8A, 0x7C, 0x92, 0x7A, 0x81, 0xF8, 0x7A, 0x18, 0x72, 0x99, + 0x62, 0xFA, 0x4A, 0xFA, 0x33, 0x5B, 0x2C, 0x3D, 0x14, 0x9D, 0x0D, 0x1E, 0x05, 0x9E, 0x06, 0x5F, 0x06, 0xBF, 0x07, 0x1F, 0x07, 0x5F, 0x01, 0x0F, 0xBF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x01, 0x0F, 0x9F, 0x8B, 0x17, 0x9F, 0x27, 0x3E, 0x3E, 0xFE, 0x7E, 0xFF, 0x73, 0xF7, 0x69, 0xD1, 0x9A, 0x13, 0xB1, 0xF3, 0xB9, 0xD3, 0xC9, 0xD3, 0xC1, 0x93, 0xC9, 0x93, 0x01, 0xC9, 0xB4, 0x01, 0xC9, 0x93, 0x8D, 0xC1, 0xB3, 0xC1, 0xD3, 0xB1, 0xD4, 0xB2, 0x35, 0x92, 0x15, 0x61, 0x11, 0x51, 0x11, 0x51, 0x72, 0x49, 0x72, 0x49, 0x92, 0x41, 0x72, 0x39, 0x71, 0x39, 0x51, 0x39, 0x71, 0x01, 0x39, 0x51, 0x01, 0x31, 0x51, 0x88, 0x31, 0x52, 0x31, 0x72, 0x29, 0x32, 0x21, 0x32, 0x21, 0x53, 0x21, 0x75, 0x19, 0xD7, 0x19, 0xF9, 0x11, 0xD9, 0x01, 0x09, 0xDA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xBA, 0x89, 0x01, 0xB9, 0x09, 0xB9, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xB7, 0x09, 0x95, 0x09, 0x54, 0x09, 0x53, 0x11, 0x53, 0x03, 0x11, 0x32, 0x84, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x03, 0x19, 0x12, 0x02, 0x11, 0x12, 0x02, 0x11, 0x32, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x81, 0x19, 0x32, 0x11, 0x31, 0x03, 0x19, 0x32, 0x01, 0x19, 0x12, 0x02, 0x19, 0x32, 0x85, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x33, 0x01, 0x11, 0x13, 0x82, 0x11, 0x33, 0x11, 0x34, 0x19, 0x95, 0x02, 0x21, 0xF6, 0x84, 0x21, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x31, 0x88, 0x21, 0x10, 0x29, 0x10, + 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x83, 0x19, 0x31, 0x19, 0x32, 0x19, 0x54, 0x19, 0x96, 0x02, 0x11, 0xB7, 0x85, 0x11, 0x96, 0x09, 0x76, 0x09, 0x55, 0x09, 0x54, 0x09, 0x55, 0x09, 0x54, 0x01, 0x09, 0x75, 0x87, 0x11, 0x96, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x32, 0x81, 0x21, 0x73, 0x19, 0x74, 0x01, 0x19, 0x73, 0x02, 0x19, 0x32, 0x01, 0x11, 0x11, 0x01, 0x21, 0x93, 0x83, 0x11, 0x12, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x01, 0x19, 0x32, 0x81, 0x19, 0x52, 0x21, 0x93, 0x01, 0x21, 0x72, 0x80, 0x21, 0x31, 0x06, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x21, 0x73, 0x19, 0x53, 0x11, 0x12, 0x01, 0x19, 0x32, 0x84, 0x11, 0x32, 0x19, 0x52, 0x29, 0xB4, 0x29, 0xD4, 0x21, 0x52, 0x01, 0x19, 0x31, 0x84, 0x19, 0x11, 0x19, 0x32, 0x19, 0x73, 0x19, 0x74, 0x19, 0x53, 0x01, 0x19, 0x73, 0x80, 0x19, 0x53, 0x01, 0x19, 0x73, 0x88, 0x19, 0x74, 0x19, 0x94, 0x19, 0x73, 0x19, 0x32, 0x19, 0x31, 0x19, 0x10, 0x19, 0x11, 0x19, 0x31, 0x21, 0x73, 0x01, 0x19, 0x73, 0x85, 0x19, 0x72, 0x19, 0x31, 0x19, 0x10, 0x19, 0x11, 0x19, 0x52, 0x21, 0x73, 0x01, 0x19, 0x74, 0x01, 0x11, 0x33, 0x86, 0x19, 0x53, 0x21, 0x94, 0x19, 0x74, 0x19, 0x53, 0x19, 0x73, 0x21, 0x73, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x19, 0x30, 0x88, 0x19, 0x10, 0x19, 0x31, + 0x21, 0x93, 0x19, 0x73, 0x11, 0x32, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x19, 0x51, 0x01, 0x19, 0x31, 0x82, 0x18, 0xF0, 0x21, 0x51, 0x29, 0x92, 0x02, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x11, 0x32, 0x19, 0x73, 0x21, 0x94, 0x02, 0x19, 0x73, 0x01, 0x11, 0x33, 0x8A, 0x19, 0x34, 0x21, 0x95, 0x19, 0x53, 0x19, 0x12, 0x19, 0x11, 0x19, 0x31, 0x19, 0x52, 0x19, 0x32, 0x19, 0x72, 0x21, 0x73, 0x19, 0x52, 0x03, 0x19, 0x32, 0x01, 0x11, 0x32, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x82, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x81, 0x29, 0x50, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, + 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0x97, 0x11, 0xB8, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x80, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x89, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x09, 0x34, 0x09, 0x13, 0x00, 0xF2, 0x11, 0x34, 0x11, 0x13, 0x09, 0x12, 0x11, 0x12, 0x01, 0x10, 0xF2, 0x82, 0x11, 0x12, 0x09, 0x12, 0x11, 0x33, 0x03, 0x11, 0x12, 0x80, 0x10, 0xF2, 0x01, 0x11, 0x12, 0x82, 0x11, 0x33, 0x11, 0x12, 0x11, 0x32, 0x02, 0x11, 0x12, 0x81, 0x11, 0x33, 0x11, 0x13, 0x03, 0x11, 0x33, 0x04, 0x11, 0x13, 0x06, 0x11, 0x33, 0x81, 0x09, 0x12, 0x11, 0x12, 0x01, 0x09, 0x12, 0x01, 0x11, 0x13, 0x01, 0x11, 0x33, 0x01, 0x08, 0xF2, 0x81, 0x10, 0xF3, 0x10, 0xF2, 0x01, 0x11, 0x33, 0x01, 0x09, 0x12, 0x01, 0x08, 0xF2, 0x84, 0x11, 0x13, 0x11, 0x12, 0x11, 0x13, 0x11, 0x12, 0x10, 0xF2, 0x01, 0x11, 0x12, 0x80, 0x10, 0xF2, 0x01, 0x11, 0x12, 0x02, 0x10, 0xF2, 0x80, 0x11, 0x12, 0x06, 0x10, 0xF2, 0x82, 0x11, 0x12, 0x11, 0x13, 0x10, 0xF2, 0x06, 0x11, 0x12, + 0x80, 0x11, 0x33, 0x03, 0x11, 0x12, 0x81, 0x11, 0x13, 0x11, 0x12, 0x01, 0x11, 0x13, 0x09, 0x11, 0x12, 0x01, 0x11, 0x33, 0x02, 0x11, 0x53, 0x03, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x09, 0x32, 0x01, 0x09, 0x12, 0x05, 0x11, 0x33, 0x81, 0x09, 0x13, 0x09, 0x33, 0x04, 0x11, 0x33, 0x04, 0x11, 0x53, 0x02, 0x11, 0x54, 0x04, 0x11, 0x53, 0x05, 0x11, 0x33, 0x01, 0x11, 0x53, 0x0B, 0x11, 0x33, 0x0F, 0x11, 0x53, 0x02, 0x11, 0x54, 0x80, 0x11, 0x74, 0x06, 0x11, 0x54, 0x08, 0x11, 0x53, 0x01, 0x11, 0x33, 0x01, 0x11, 0x53, 0x0B, 0x11, 0x33, 0x13, 0x11, 0x53, 0x05, 0x11, 0x33, 0x81, 0x09, 0x33, 0x11, 0x33, 0x01, 0x09, 0x33, 0x01, 0x11, 0x33, 0x02, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x05, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x0E, 0x28, 0xED, 0x51, 0x90, 0xCC, 0xDC, 0x01, 0xD4, 0xDB, 0x80, 0xDC, 0xDB, 0x01, 0xD4, 0xBB, 0x83, 0xC4, 0xBB, 0x8A, 0xF5, 0x28, 0x6B, 0x30, 0xEE, 0x01, 0x31, 0x0F, 0x82, 0x31, 0x30, 0x31, 0x50, 0x31, 0x51, 0x02, 0x31, 0x71, 0x03, 0x39, 0x71, 0x01, 0x39, 0x91, 0x05, 0x39, 0x92, 0x02, 0x41, 0x92, 0x80, 0x39, 0x92, 0x1E, 0x41, 0x92, 0x80, 0x49, 0x92, 0x01, 0x41, 0x92, 0x04, 0x49, 0x92, 0x80, 0x49, 0x93, 0x05, 0x49, 0x92, 0x02, 0x49, 0x72, 0x81, 0x49, 0x51, 0x51, 0x51, 0x02, 0x51, 0x50, 0x82, 0x51, 0x30, 0x51, 0x0F, 0x49, 0x0F, 0x01, 0x48, 0xEE, 0x8D, 0x59, 0x2F, 0x7A, 0x12, 0x8A, 0x74, 0x9A, 0xD6, 0xA2, 0xF6, 0x9A, 0xF6, 0x92, 0xB5, 0x82, 0x33, 0x69, 0x91, 0x61, + 0x50, 0x59, 0x10, 0x51, 0x0F, 0x51, 0x10, 0x59, 0x50, 0x02, 0x59, 0x71, 0x83, 0x59, 0x92, 0x51, 0x92, 0x59, 0xB2, 0x59, 0xB3, 0x01, 0x59, 0xD3, 0x80, 0x59, 0xB3, 0x01, 0x59, 0x92, 0x83, 0x59, 0x91, 0x61, 0x91, 0xBB, 0xF9, 0xDC, 0x7A, 0x01, 0xE4, 0x99, 0x81, 0xE4, 0x78, 0xE4, 0x38, 0x01, 0xE4, 0x37, 0x88, 0xDC, 0x37, 0xD4, 0x17, 0xCC, 0x17, 0xBB, 0xF7, 0xAC, 0x17, 0x94, 0x78, 0x7D, 0x1A, 0x65, 0x7C, 0x55, 0xDD, 0x01, 0x4D, 0xFD, 0x89, 0x4D, 0xDD, 0x55, 0xBC, 0x65, 0x7C, 0x74, 0x9A, 0x83, 0x16, 0x9A, 0x95, 0xAA, 0x55, 0xBA, 0x35, 0xC2, 0x14, 0xCA, 0x14, 0x01, 0xC9, 0xF4, 0x01, 0xC1, 0xD4, 0x89, 0xB9, 0xF4, 0xAA, 0x15, 0x9A, 0x56, 0x8A, 0xB7, 0x8B, 0xBA, 0x83, 0xFB, 0x5A, 0xF7, 0x52, 0x95, 0x42, 0x13, 0x41, 0xF3, 0x01, 0x49, 0xF3, 0x8C, 0x51, 0xD3, 0x51, 0xD2, 0x51, 0x91, 0x61, 0xF2, 0x72, 0x95, 0x82, 0xF6, 0x9B, 0x98, 0xAB, 0xF9, 0xAB, 0xFA, 0xAC, 0x1A, 0xAB, 0xFA, 0xB3, 0xFA, 0xAB, 0xD9, 0x02, 0xB3, 0xF9, 0x81, 0xBC, 0x19, 0xBC, 0x3A, 0x03, 0xC4, 0x5A, 0x82, 0xCC, 0x7A, 0xCC, 0x7B, 0xCC, 0x7A, 0x01, 0xD4, 0x9B, 0x01, 0xD4, 0xBB, 0x84, 0xDC, 0xDB, 0xDC, 0xBB, 0xDC, 0xBA, 0xDC, 0x9A, 0xDC, 0xBA, 0x02, 0xDC, 0x99, 0x02, 0xDC, 0x79, 0x02, 0xDC, 0x78, 0x04, 0xDC, 0x58, 0x01, 0xDC, 0x38, 0x01, 0xDC, 0x37, 0x82, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x17, 0x02, 0xD4, 0x17, 0x07, 0xD3, 0xF7, 0x01, 0xD3, 0xD7, 0x80, 0xD3, 0xD6, 0x03, 0xD3, 0xB6, 0x82, 0xD3, 0x96, 0xDB, 0x96, 0xD3, 0x96, 0x02, 0xDB, 0x96, 0x89, 0xDB, 0x97, 0xD3, 0x97, + 0xD3, 0x98, 0xD3, 0xB9, 0xCB, 0xDB, 0xAB, 0x9D, 0x59, 0xD9, 0x29, 0x5A, 0x19, 0x7C, 0x11, 0x7C, 0x01, 0x09, 0x7D, 0x94, 0x11, 0x9D, 0x19, 0x9D, 0x21, 0x7C, 0x31, 0x3B, 0x39, 0x19, 0x7A, 0x3B, 0x8A, 0x7B, 0x7A, 0x18, 0x72, 0x38, 0x72, 0x99, 0x62, 0xFA, 0x4A, 0xFA, 0x3B, 0x7B, 0x2C, 0x1C, 0x1C, 0x9D, 0x0D, 0x1E, 0x05, 0x9E, 0x06, 0x3F, 0x06, 0xBF, 0x07, 0x1F, 0x07, 0x5F, 0x01, 0x0F, 0xBF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x8D, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x5F, 0x3E, 0xDE, 0x76, 0xBF, 0x84, 0xDA, 0x62, 0x11, 0x9A, 0x74, 0xB2, 0x13, 0xB9, 0xD3, 0xC1, 0xB3, 0xC9, 0xB4, 0xC9, 0x93, 0xC9, 0x94, 0x01, 0xC9, 0x93, 0x80, 0xC9, 0xB4, 0x01, 0xC1, 0xB3, 0x86, 0xB1, 0xB4, 0xAA, 0x15, 0x9A, 0x35, 0x61, 0x31, 0x51, 0x31, 0x51, 0x72, 0x51, 0x92, 0x01, 0x41, 0x72, 0x01, 0x39, 0x72, 0x02, 0x39, 0x51, 0x80, 0x31, 0x51, 0x01, 0x31, 0x72, 0x88, 0x31, 0x52, 0x29, 0x52, 0x29, 0x32, 0x21, 0x33, 0x21, 0x75, 0x19, 0x76, 0x11, 0xB7, 0x11, 0xF9, 0x09, 0xD9, 0x01, 0x09, 0xFA, 0x8B, 0x09, 0xDA, 0x01, 0xD9, 0x09, 0xF9, 0x12, 0x19, 0x11, 0xD8, 0x11, 0xB7, 0x09, 0x96, 0x09, 0x75, 0x11, 0x54, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x32, 0x81, 0x19, 0x52, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x21, 0x32, 0x19, 0x11, 0x21, 0x32, 0x19, 0x32, 0x02, 0x19, 0x12, 0x81, 0x19, 0x11, 0x19, 0x32, 0x04, 0x19, 0x31, 0x80, 0x21, 0x52, 0x07, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x21, 0x52, 0x01, 0x21, 0x31, 0x01, 0x21, 0x32, 0x89, 0x19, + 0x32, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x12, 0x11, 0x13, 0x11, 0x33, 0x19, 0x74, 0x19, 0xD6, 0x21, 0xF7, 0x01, 0x21, 0xD6, 0x82, 0x11, 0x53, 0x11, 0x12, 0x19, 0x12, 0x02, 0x21, 0x31, 0x81, 0x21, 0x10, 0x20, 0xF0, 0x03, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x12, 0x11, 0x33, 0x19, 0xD6, 0x19, 0xF8, 0x01, 0x11, 0xB7, 0x85, 0x01, 0x35, 0x09, 0x55, 0x09, 0x75, 0x09, 0x74, 0x11, 0x95, 0x09, 0x74, 0x01, 0x09, 0x75, 0x80, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x85, 0x11, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x51, 0x04, 0x21, 0x30, 0x01, 0x21, 0x31, 0x88, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x21, 0xB4, 0x21, 0xD5, 0x21, 0x94, 0x19, 0x93, 0x19, 0x52, 0x19, 0x31, 0x02, 0x11, 0x11, 0x83, 0x21, 0xD4, 0x21, 0xB4, 0x19, 0x32, 0x19, 0x52, 0x01, 0x19, 0x32, 0x01, 0x11, 0x12, 0x82, 0x19, 0x32, 0x21, 0x73, 0x21, 0x72, 0x01, 0x21, 0x51, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x82, 0x19, 0x31, 0x21, 0x73, 0x29, 0xD4, 0x01, 0x19, 0x73, 0x01, 0x21, 0xB4, 0x84, 0x29, 0xD4, 0x29, 0xB4, 0x21, 0x52, 0x19, 0x32, 0x21, 0x52, 0x02, 0x19, 0x11, 0x80, 0x21, 0xB4, 0x02, 0x19, 0x74, 0x8C, 0x21, 0x94, 0x21, 0x73, 0x21, 0x93, 0x21, 0xB4, 0x19, 0x74, 0x19, 0x73, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x21, 0x52, 0x21, 0x73, 0x01, 0x19, 0x73, 0x88, 0x19, 0x72, 0x19, 0x31, 0x10, 0xF0, 0x19, 0x31, 0x21, 0x72, 0x21, 0x73, + 0x19, 0x73, 0x19, 0x53, 0x11, 0x32, 0x01, 0x19, 0x53, 0x01, 0x19, 0x94, 0x01, 0x19, 0x73, 0x81, 0x19, 0x53, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x10, 0x01, 0x21, 0x30, 0x88, 0x19, 0x10, 0x19, 0x31, 0x29, 0xB4, 0x21, 0x94, 0x11, 0x32, 0x19, 0x32, 0x11, 0x31, 0x19, 0x31, 0x19, 0x51, 0x01, 0x19, 0x31, 0x94, 0x19, 0x10, 0x29, 0x72, 0x31, 0xD3, 0x21, 0x51, 0x19, 0x30, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x19, 0x52, 0x19, 0x73, 0x21, 0xB4, 0x19, 0x74, 0x19, 0x33, 0x19, 0x53, 0x11, 0x33, 0x19, 0x34, 0x19, 0x75, 0x19, 0x54, 0x19, 0x33, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x51, 0x80, 0x19, 0x52, 0x01, 0x21, 0x93, 0x8B, 0x19, 0x53, 0x19, 0x32, 0x19, 0x52, 0x19, 0x32, 0x19, 0x52, 0x19, 0x73, 0x19, 0x93, 0x21, 0x93, 0x19, 0x73, 0x21, 0x72, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x84, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x0F, + 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x88, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB8, 0x09, 0xD8, 0x03, 0x09, 0xD9, 0x01, 0x09, 0xD8, 0x83, 0x11, 0xD8, 0x11, 0xB7, 0x09, 0x75, 0x09, 0x13, 0x01, 0x08, 0xF2, 0x01, 0x11, 0x12, 0x01, 0x19, 0x12, 0x81, 0x19, 0x11, 0x18, 0xF1, 0x06, 0x19, 0x11, 0x82, 0x18, 0xF1, 0x19, 0x11, 0x18, 0xF1, 0x01, 0x19, 0x11, 0x01, 0x18, 0xF1, 0x80, 0x19, 0x31, 0x18, 0x19, 0x11, 0x80, 0x18, 0xF1, 0x01, 0x19, 0x12, 0x81, 0x18, 0xF1, 0x18, 0xF2, 0x01, 0x18, 0xF1, 0x01, 0x19, 0x11, 0x80, 0x19, 0x12, 0x02, 0x19, 0x11, 0x80, 0x18, 0xF1, 0x03, 0x19, 0x11, 0x01, 0x18, 0xF1, 0x81, 0x19, 0x11, 0x21, 0x31, + 0x01, 0x19, 0x11, 0x01, 0x18, 0xF1, 0x05, 0x19, 0x11, 0x01, 0x18, 0xF1, 0x82, 0x19, 0x12, 0x19, 0x11, 0x18, 0xF1, 0x0E, 0x19, 0x11, 0x80, 0x19, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x06, 0x19, 0x11, 0x14, 0x19, 0x31, 0x06, 0x19, 0x32, 0x02, 0x11, 0x31, 0x01, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x11, 0x32, 0x81, 0x19, 0x32, 0x11, 0x32, 0x02, 0x19, 0x32, 0x80, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x06, 0x19, 0x31, 0x12, 0x19, 0x32, 0x01, 0x19, 0x52, 0x80, 0x19, 0x32, 0x03, 0x19, 0x52, 0x0A, 0x19, 0x32, 0x01, 0x19, 0x31, 0x02, 0x19, 0x32, 0x80, 0x11, 0x31, 0x07, 0x19, 0x32, 0x02, 0x19, 0x31, 0x0E, 0x19, 0x32, 0x81, 0x11, 0x32, 0x19, 0x52, 0x01, 0x19, 0x32, 0x81, 0x11, 0x31, 0x11, 0x32, 0x01, 0x19, 0x32, 0x05, 0x19, 0x31, 0x81, 0x11, 0x31, 0x19, 0x32, 0x05, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x06, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x28, 0xEE, 0x30, 0xED, 0xA3, 0xF9, 0xCC, 0xDC, 0x01, 0xD4, 0xDC, 0x01, 0xD4, 0xDB, 0x85, 0xD5, 0x1D, 0x6A, 0x52, 0x30, 0xAD, 0x30, 0xEE, 0x30, 0xEF, 0x31, 0x0F, 0x01, 0x31, 0x30, 0x01, 0x31, 0x51, 0x82, 0x31, 0x71, 0x31, 0x51, 0x31, 0x71, 0x05, 0x39, 0x71, 0x81, 0x39, 0x92, 0x39, 0x71, 0x04, 0x39, 0x92, 0x23, 0x41, 0x92, 0x81, 0x49, 0xB2, 0x41, 0x92, 0x01, 0x49, 0x92, 0x80, 0x41, 0x92, 0x08, 0x49, 0x92, 0x01, 0x49, 0x72, 0x81, 0x49, 0x92, 0x49, 0x72, 0x02, 0x49, 0x71, 0x01, 0x49, 0x51, 0x80, 0x49, 0x71, 0x01, + 0x49, 0x51, 0x81, 0x49, 0x50, 0x49, 0x30, 0x01, 0x51, 0x30, 0x01, 0x51, 0x0F, 0x81, 0x51, 0x30, 0x51, 0x50, 0x01, 0x51, 0x51, 0x02, 0x51, 0x71, 0x03, 0x51, 0x92, 0x01, 0x51, 0xB2, 0x01, 0x51, 0xB3, 0x8D, 0x59, 0xD3, 0x59, 0xF4, 0x59, 0xD4, 0x59, 0xB3, 0x59, 0xB2, 0x59, 0x91, 0x71, 0xD1, 0xD4, 0x7A, 0xDC, 0x7A, 0xE4, 0x79, 0xE4, 0x78, 0xDC, 0x38, 0xDC, 0x37, 0xDC, 0x17, 0x01, 0xDB, 0xF7, 0x87, 0xD3, 0xF7, 0xCB, 0xF7, 0xB3, 0xF7, 0xA4, 0x18, 0x8C, 0x79, 0x7D, 0x1B, 0x65, 0x9C, 0x55, 0xDD, 0x01, 0x4D, 0xFD, 0x88, 0x4D, 0xDD, 0x5D, 0xBD, 0x65, 0x5B, 0x7C, 0x79, 0x82, 0xF6, 0xA2, 0x75, 0xB2, 0x55, 0xBA, 0x35, 0xC2, 0x14, 0x01, 0xC1, 0xF4, 0x01, 0xC1, 0xD3, 0x86, 0xC1, 0xF4, 0xBA, 0x15, 0xAA, 0x35, 0x9A, 0x56, 0x8A, 0x77, 0x7A, 0xB7, 0x62, 0x55, 0x01, 0x5A, 0x15, 0x80, 0x59, 0xF5, 0x03, 0x59, 0xF4, 0x01, 0x59, 0xD4, 0x83, 0x59, 0xD3, 0x59, 0xB3, 0x59, 0xB2, 0x59, 0x92, 0x03, 0x59, 0x91, 0x02, 0x59, 0x71, 0x01, 0x59, 0x70, 0x01, 0x61, 0x91, 0x80, 0x69, 0xB1, 0x02, 0x69, 0xD1, 0x81, 0x69, 0xF2, 0x71, 0xF2, 0x01, 0x72, 0x12, 0x89, 0x7A, 0x12, 0x7A, 0x32, 0x82, 0x53, 0x8A, 0xB4, 0xA3, 0x36, 0xB3, 0xB8, 0xCC, 0x5A, 0xDC, 0xDC, 0xDC, 0xDB, 0xDC, 0xBB, 0x02, 0xDC, 0x9A, 0x03, 0xDC, 0x79, 0x80, 0xDC, 0x78, 0x03, 0xDC, 0x58, 0x80, 0xDC, 0x38, 0x02, 0xDC, 0x37, 0x04, 0xDC, 0x17, 0x80, 0xD3, 0xF7, 0x01, 0xDB, 0xF7, 0x80, 0xD3, 0xF7, 0x05, 0xD3, 0xD7, 0x01, 0xD3, 0xD6, 0x01, 0xD3, 0xB6, 0x80, 0xDB, 0xB6, 0x02, 0xD3, 0x96, 0x03, 0xDB, + 0x96, 0x8A, 0xD3, 0x76, 0xD3, 0x77, 0xD3, 0x97, 0xD3, 0x99, 0xCB, 0xBA, 0xBB, 0xDD, 0x72, 0x5A, 0x31, 0x59, 0x19, 0x5B, 0x11, 0x7C, 0x09, 0x7D, 0x02, 0x11, 0x9D, 0x92, 0x19, 0x7C, 0x29, 0x5B, 0x39, 0x19, 0x61, 0xBA, 0x82, 0x5B, 0x7A, 0x19, 0x7A, 0x59, 0x72, 0xBA, 0x62, 0xDA, 0x4A, 0xFA, 0x3B, 0x5B, 0x2C, 0x1C, 0x1C, 0x9D, 0x0D, 0x1E, 0x05, 0x9E, 0x06, 0x5F, 0x06, 0x9F, 0x07, 0x1F, 0x07, 0x5F, 0x01, 0x0F, 0xBF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x9E, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x5F, 0x3E, 0xFE, 0x66, 0xBF, 0x95, 0xBD, 0x5A, 0x31, 0x9A, 0x94, 0xA9, 0xF3, 0xB9, 0xF3, 0xB9, 0xB3, 0xC1, 0xB3, 0xC9, 0xB4, 0xC9, 0x73, 0xC9, 0x93, 0xC9, 0xB4, 0xC9, 0x93, 0xC1, 0x93, 0xC1, 0xD4, 0xB9, 0xD4, 0xB2, 0x15, 0x92, 0x15, 0x69, 0x32, 0x59, 0x32, 0x49, 0x32, 0x49, 0x92, 0x41, 0x72, 0x41, 0x92, 0x41, 0x72, 0x39, 0x72, 0x39, 0x71, 0x01, 0x39, 0x51, 0x8B, 0x39, 0x72, 0x31, 0x72, 0x31, 0x31, 0x31, 0x52, 0x29, 0x52, 0x29, 0x32, 0x21, 0x32, 0x21, 0x54, 0x19, 0x75, 0x11, 0x96, 0x11, 0xD8, 0x12, 0x19, 0x03, 0x09, 0xF9, 0x85, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x75, 0x11, 0x54, 0x01, 0x11, 0x53, 0x80, 0x11, 0x32, 0x02, 0x19, 0x31, 0x84, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x01, 0x21, 0x11, 0x80, 0x21, 0x31, 0x03, 0x21, 0x11, 0x83, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x03, 0x21, 0x31, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x10, 0x19, 0x30, 0x21, 0x31, 0x21, 0x11, 0x19, 0x10, 0x21, + 0x31, 0x19, 0x10, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x01, 0x21, 0x11, 0x01, 0x21, 0x31, 0x02, 0x19, 0x32, 0x01, 0x11, 0x12, 0x82, 0x11, 0x53, 0x19, 0x74, 0x19, 0xB5, 0x01, 0x21, 0xF6, 0x84, 0x19, 0xB5, 0x19, 0x54, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x88, 0x21, 0x31, 0x19, 0x11, 0x11, 0x33, 0x19, 0x95, 0x19, 0xF8, 0x19, 0xD8, 0x11, 0xB7, 0x09, 0x76, 0x01, 0x35, 0x01, 0x09, 0x54, 0x01, 0x09, 0x74, 0x01, 0x09, 0x75, 0x89, 0x11, 0x96, 0x11, 0xB6, 0x19, 0xD6, 0x19, 0x95, 0x19, 0x53, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x19, 0x11, 0x19, 0x12, 0x01, 0x19, 0x32, 0x83, 0x19, 0x73, 0x21, 0xB4, 0x21, 0x93, 0x19, 0x52, 0x03, 0x19, 0x32, 0x89, 0x21, 0xB3, 0x21, 0xB4, 0x11, 0x12, 0x19, 0x32, 0x19, 0x52, 0x19, 0x32, 0x11, 0x12, 0x19, 0x32, 0x19, 0x52, 0x21, 0x73, 0x01, 0x21, 0x72, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x11, 0x21, 0x73, 0x29, 0xD4, 0x21, 0xB4, 0x19, 0x73, 0x21, 0x73, 0x02, 0x19, 0x52, 0x05, 0x19, 0x11, 0x02, 0x19, 0x73, 0x80, 0x19, 0x53, 0x01, 0x19, 0x52, 0x83, 0x19, 0x73, 0x21, 0x93, 0x19, 0x73, 0x19, 0x53, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x19, 0x10, 0x21, 0x51, 0x01, 0x21, 0x73, 0x85, 0x19, 0x73, 0x19, 0x72, 0x19, 0x11, + 0x10, 0xF0, 0x19, 0x31, 0x21, 0x72, 0x01, 0x21, 0x93, 0x89, 0x19, 0x33, 0x11, 0x12, 0x11, 0x32, 0x19, 0x53, 0x19, 0x73, 0x21, 0x94, 0x21, 0xB4, 0x21, 0x94, 0x19, 0x53, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x03, 0x21, 0x30, 0x82, 0x19, 0x11, 0x29, 0xB4, 0x21, 0x73, 0x01, 0x19, 0x32, 0x82, 0x19, 0x51, 0x11, 0x31, 0x19, 0x51, 0x01, 0x19, 0x31, 0x83, 0x18, 0xF0, 0x29, 0x92, 0x31, 0xB2, 0x21, 0x51, 0x01, 0x19, 0x10, 0x01, 0x19, 0x11, 0x84, 0x19, 0x52, 0x21, 0x94, 0x21, 0xB4, 0x19, 0x32, 0x11, 0x12, 0x01, 0x19, 0x33, 0x85, 0x19, 0x54, 0x21, 0x75, 0x21, 0x55, 0x19, 0x53, 0x19, 0x32, 0x19, 0x10, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x21, 0x93, 0x21, 0xB4, 0x19, 0x73, 0x02, 0x19, 0x32, 0x86, 0x19, 0x53, 0x19, 0x93, 0x21, 0xB4, 0x29, 0xD4, 0x21, 0xB4, 0x21, 0xB3, 0x21, 0x52, 0x01, 0x21, 0x31, 0x80, 0x19, 0x30, 0x02, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, + 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x06, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x89, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x09, 0xB8, 0x11, 0xD9, 0x09, 0xD9, 0x09, 0xB9, 0x01, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x85, 0x19, 0xF8, 0x11, 0xB6, 0x11, 0x54, 0x09, 0x13, 0x11, 0x12, 0x19, 0x53, 0x01, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x19, 0x10, 0x21, 0x10, 0x02, 0x21, 0x31, 0x81, 0x21, 0x10, 0x19, 0x10, 0x01, 0x21, 0x10, 0x01, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x30, 0x07, 0x19, 0x10, 0x81, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x31, 0x82, 0x21, 0x11, 0x19, 0x10, 0x18, 0xF0, 0x01, 0x19, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x19, 0x10, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x01, + 0x21, 0x11, 0x82, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x01, 0x21, 0x11, 0x01, 0x21, 0x31, 0x84, 0x21, 0x11, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x03, 0x21, 0x11, 0x08, 0x21, 0x10, 0x0C, 0x21, 0x11, 0x80, 0x21, 0x10, 0x01, 0x21, 0x11, 0x82, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x02, 0x21, 0x10, 0x04, 0x21, 0x11, 0x80, 0x21, 0x10, 0x02, 0x21, 0x11, 0x81, 0x21, 0x10, 0x21, 0x11, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x07, 0x19, 0x31, 0x81, 0x21, 0x31, 0x19, 0x30, 0x1A, 0x19, 0x31, 0x80, 0x19, 0x52, 0x0A, 0x19, 0x31, 0x04, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x07, 0x19, 0x31, 0x02, 0x21, 0x31, 0x02, 0x19, 0x31, 0x80, 0x21, 0x51, 0x04, 0x19, 0x31, 0x80, 0x19, 0x51, 0x03, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x31, 0x82, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x03, 0x19, 0x31, 0x80, 0x21, 0x31, 0x0A, 0x19, 0x31, 0x80, 0x21, 0x31, 0x07, 0x19, 0x31, 0x01, 0x21, 0x31, 0x83, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x21, 0x51, 0x01, 0x19, 0x31, 0x80, 0x19, 0x51, 0x09, 0x19, 0x31, 0x80, 0x21, 0x31, 0x09, 0x19, 0x31, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x29, 0x50, 0x05, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x8F, 0x29, 0x0F, 0x29, 0x0E, 0x28, 0xED, 0x49, 0x90, 0xBC, 0xBB, 0xCC, 0xDC, 0xD4, 0xFC, 0xD4, 0xDC, 0xCC, 0xDC, 0xC4, 0x9B, 0x61, 0xF1, 0x30, 0xAD, 0x30, 0xEE, 0x31, 0x0F, 0x31, 0x2F, 0x31, 0x30, 0x02, 0x31, 0x50, 0x81, 0x31, 0x51, 0x31, 0x71, 0x07, 0x39, 0x71, 0x83, 0x39, 0x92, 0x39, 0x91, 0x39, 0x92, 0x39, + 0x71, 0x01, 0x39, 0x92, 0x02, 0x41, 0x92, 0x02, 0x39, 0x92, 0x03, 0x41, 0x92, 0x80, 0x39, 0x72, 0x02, 0x41, 0x92, 0x01, 0x41, 0x72, 0x02, 0x41, 0x92, 0x01, 0x41, 0x72, 0x06, 0x41, 0x92, 0x80, 0x41, 0x72, 0x02, 0x41, 0x92, 0x80, 0x41, 0x72, 0x0E, 0x41, 0x92, 0x07, 0x49, 0x92, 0x02, 0x49, 0x71, 0x02, 0x41, 0x71, 0x03, 0x49, 0x71, 0x01, 0x49, 0x51, 0x02, 0x49, 0x71, 0x04, 0x49, 0x72, 0x84, 0x49, 0x92, 0x51, 0x92, 0x51, 0xB2, 0x51, 0x92, 0x51, 0xB2, 0x03, 0x51, 0xB3, 0x01, 0x59, 0xD3, 0x85, 0x59, 0xB3, 0x59, 0xB2, 0x59, 0x71, 0x9A, 0xD5, 0xDC, 0xBB, 0xDC, 0x79, 0x01, 0xE4, 0x58, 0x01, 0xDC, 0x17, 0x8A, 0xDB, 0xF7, 0xDB, 0xD6, 0xDB, 0xD7, 0xD3, 0xF7, 0xC3, 0xF7, 0xAB, 0xD7, 0x9C, 0x18, 0x84, 0x79, 0x75, 0x3B, 0x5D, 0xBD, 0x55, 0xFD, 0x01, 0x4D, 0xFD, 0x88, 0x4D, 0xDD, 0x5D, 0x9D, 0x6D, 0x1B, 0x7B, 0xF8, 0x8A, 0xB5, 0xA2, 0x55, 0xB2, 0x35, 0xBA, 0x35, 0xC2, 0x14, 0x01, 0xC1, 0xF4, 0x01, 0xC1, 0xD3, 0x87, 0xC1, 0xF4, 0xBA, 0x15, 0xAA, 0x36, 0x92, 0x36, 0x82, 0x35, 0x6A, 0x15, 0x62, 0x15, 0x5A, 0x15, 0x01, 0x62, 0x15, 0x03, 0x59, 0xF4, 0x02, 0x59, 0xD4, 0x01, 0x59, 0xD3, 0x04, 0x59, 0xB3, 0x81, 0x59, 0xB2, 0x61, 0xB2, 0x04, 0x59, 0xB2, 0x02, 0x59, 0x92, 0x80, 0x59, 0xB2, 0x02, 0x59, 0x92, 0x03, 0x59, 0x91, 0x80, 0x59, 0x71, 0x01, 0x59, 0x50, 0x86, 0x51, 0x2F, 0x59, 0x4F, 0x82, 0x94, 0xA3, 0x56, 0xBC, 0x19, 0xC4, 0x3A, 0xD4, 0x7B, 0x01, 0xDC, 0xBB, 0x82, 0xDC, 0xBA, 0xDC, 0x9A, 0xDC, 0x99, 0x01, 0xDC, 0x79, 0x80, 0xDC, 0x59, + 0x01, 0xDC, 0x58, 0x02, 0xDC, 0x38, 0x02, 0xDC, 0x37, 0x83, 0xDC, 0x17, 0xD3, 0xF7, 0xDC, 0x17, 0xDB, 0xF7, 0x01, 0xD3, 0xF7, 0x01, 0xD3, 0xD7, 0x80, 0xD3, 0xD6, 0x02, 0xDB, 0xD7, 0x01, 0xD3, 0xB6, 0x03, 0xDB, 0xB6, 0x03, 0xDB, 0x96, 0x02, 0xD3, 0x76, 0x8A, 0xD3, 0x77, 0xD3, 0x97, 0xD3, 0x98, 0xD3, 0xBA, 0xC3, 0xDC, 0x93, 0x1C, 0x31, 0x38, 0x21, 0x3A, 0x11, 0x7C, 0x11, 0x7D, 0x09, 0x9D, 0x01, 0x11, 0x9D, 0x92, 0x19, 0x7C, 0x29, 0x5B, 0x39, 0x3A, 0x51, 0x79, 0x72, 0x1A, 0x7A, 0x19, 0x7A, 0x59, 0x72, 0xBA, 0x62, 0xDA, 0x4A, 0xFA, 0x3B, 0x7B, 0x2C, 0x1C, 0x1C, 0x7D, 0x0D, 0x1D, 0x05, 0x9E, 0x06, 0x3F, 0x06, 0x9F, 0x07, 0x1F, 0x0F, 0x7F, 0x01, 0x0F, 0xBF, 0x02, 0x07, 0xDF, 0x92, 0x07, 0xBF, 0x0F, 0xDF, 0x0F, 0xBF, 0x17, 0x9F, 0x1F, 0x5E, 0x36, 0xFE, 0x66, 0xBF, 0x9E, 0x3F, 0x62, 0xB2, 0x92, 0xB4, 0xA2, 0x13, 0xBA, 0x33, 0xC1, 0xF3, 0xC1, 0xB3, 0xC1, 0x93, 0xC9, 0x93, 0xC9, 0xB3, 0xC1, 0x73, 0xC1, 0x93, 0x01, 0xC1, 0xB3, 0x87, 0xB9, 0xF5, 0xB2, 0x35, 0x9A, 0x35, 0x61, 0x31, 0x51, 0x11, 0x51, 0x52, 0x49, 0x72, 0x41, 0x92, 0x01, 0x41, 0x72, 0x85, 0x39, 0x71, 0x39, 0x72, 0x39, 0x71, 0x39, 0x51, 0x39, 0x72, 0x39, 0x52, 0x01, 0x31, 0x52, 0x80, 0x31, 0x72, 0x01, 0x29, 0x32, 0x84, 0x21, 0x53, 0x21, 0x74, 0x19, 0x95, 0x19, 0xF7, 0x1A, 0x18, 0x02, 0x1A, 0x39, 0x81, 0x11, 0xF8, 0x11, 0xB7, 0x01, 0x11, 0x96, 0x82, 0x11, 0x75, 0x19, 0x74, 0x19, 0x53, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, + 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x21, 0x10, 0x07, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x31, 0x8D, 0x19, 0x32, 0x19, 0x12, 0x11, 0x12, 0x19, 0x33, 0x19, 0x53, 0x19, 0x95, 0x19, 0xB5, 0x19, 0xB6, 0x21, 0xF6, 0x21, 0xD6, 0x11, 0x53, 0x11, 0x12, 0x11, 0x11, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x31, 0x21, 0x11, 0x18, 0xF1, 0x10, 0xF2, 0x19, 0x75, 0x21, 0xF8, 0x01, 0x19, 0xF8, 0x8F, 0x09, 0x96, 0x09, 0x55, 0x01, 0x34, 0x01, 0x33, 0x09, 0x34, 0x01, 0x34, 0x09, 0x75, 0x09, 0x96, 0x11, 0xD7, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0x95, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x32, 0x02, 0x19, 0x12, 0x82, 0x21, 0x73, 0x21, 0x94, 0x19, 0x73, 0x01, 0x19, 0x52, 0x84, 0x19, 0x32, 0x19, 0x31, 0x19, 0x52, 0x21, 0x93, 0x21, 0xB3, 0x01, 0x11, 0x11, 0x82, 0x19, 0x32, 0x19, 0x12, 0x11, 0x12, 0x01, 0x21, 0x73, 0x83, 0x21, 0x52, 0x21, 0x72, 0x21, 0x51, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x84, 0x21, 0x93, 0x19, 0x73, 0x19, 0x52, 0x19, 0x32, 0x19, 0x11, 0x02, 0x19, + 0x31, 0x88, 0x19, 0x11, 0x19, 0x10, 0x21, 0x31, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x21, 0x52, 0x21, 0x73, 0x19, 0x53, 0x03, 0x19, 0x32, 0x01, 0x19, 0x52, 0x81, 0x19, 0x53, 0x19, 0x52, 0x02, 0x19, 0x31, 0x82, 0x19, 0x10, 0x21, 0x31, 0x21, 0x72, 0x01, 0x21, 0x73, 0x84, 0x21, 0x52, 0x19, 0x11, 0x10, 0xF0, 0x19, 0x31, 0x21, 0x92, 0x01, 0x21, 0x93, 0x85, 0x19, 0x32, 0x11, 0x12, 0x19, 0x32, 0x19, 0x53, 0x19, 0x73, 0x21, 0x94, 0x01, 0x21, 0xB4, 0x84, 0x21, 0x93, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x8F, 0x21, 0x31, 0x29, 0x93, 0x21, 0x94, 0x19, 0x32, 0x19, 0x52, 0x19, 0x51, 0x19, 0x31, 0x19, 0x71, 0x19, 0x51, 0x19, 0x31, 0x19, 0x10, 0x29, 0x92, 0x31, 0xB3, 0x21, 0x51, 0x21, 0x30, 0x19, 0x10, 0x01, 0x19, 0x11, 0x84, 0x21, 0x73, 0x21, 0xB4, 0x21, 0x94, 0x11, 0x32, 0x11, 0x12, 0x01, 0x19, 0x33, 0x8B, 0x19, 0x55, 0x21, 0x96, 0x29, 0xB6, 0x21, 0x74, 0x21, 0x52, 0x19, 0x31, 0x19, 0x10, 0x11, 0x10, 0x19, 0x31, 0x19, 0x72, 0x29, 0xD4, 0x19, 0x53, 0x01, 0x11, 0x12, 0x01, 0x19, 0x12, 0x80, 0x19, 0x32, 0x01, 0x19, 0x53, 0x01, 0x19, 0x52, 0x80, 0x19, 0x31, 0x03, 0x19, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, + 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x07, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x88, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x19, 0x32, 0x11, 0x53, 0x11, 0x75, 0x11, 0x96, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xD9, 0x02, 0x09, 0xB9, 0x89, 0x09, 0xB8, 0x11, 0xD8, 0x11, 0xF8, 0x19, 0xD7, 0x11, 0x54, 0x11, 0x13, 0x11, 0x12, 0x19, 0x11, 0x19, 0x32, 0x21, 0x32, 0x02, 0x21, 0x31, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x50, 0x21, 0x51, 0x21, 0x50, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x19, 0x10, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, + 0x10, 0x02, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x11, 0x03, 0x21, 0x10, 0x04, 0x21, 0x30, 0x0C, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x08, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x31, 0x1A, 0x21, 0x30, 0x80, 0x21, 0x50, 0x06, 0x21, 0x30, 0x07, 0x21, 0x31, 0x22, 0x21, 0x30, 0x01, 0x21, 0x31, 0x28, 0x21, 0x30, 0x01, 0x21, 0x50, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x07, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x28, 0xEE, 0x28, 0xAC, 0x83, 0x15, 0xC4, 0xDC, 0x01, 0xCC, 0xFC, 0x84, 0xCC, 0xDC, 0xC4, 0xDC, 0x59, 0xD1, 0x30, 0xCD, 0x30, 0xEE, 0x01, 0x31, 0x0F, 0x81, 0x31, 0x2F, 0x31, 0x30, 0x01, 0x39, 0x50, 0x08, 0x39, 0x71, 0x80, 0x39, 0x72, 0x05, 0x39, 0x71, 0x80, 0x39, 0x92, 0x07, 0x39, 0x72, 0x80, 0x41, 0x92, 0x01, 0x39, 0x72, 0x08, 0x41, 0x72, 0x80, 0x41, 0x92, 0x02, 0x41, 0x72, 0x19, 0x41, 0x92, 0x03, 0x49, 0x92, 0x80, 0x49, 0x72, 0x03, 0x49, 0x92, 0x80, 0x41, 0x71, 0x01, 0x41, 0x72, 0x81, 0x41, 0x71, 0x41, 0x92, 0x01, 0x41, 0x71, 0x80, 0x49, 0x71, 0x02, 0x49, 0x72, 0x80, 0x49, 0x92, 0x01, 0x49, 0x72, 0x81, 0x49, 0x92, 0x49, 0x72, 0x03, 0x49, 0x92, 0x80, 0x49, 0xB2, 0x06, 0x51, 0xB3, 0x86, 0x51, 0x92, 0x59, 0xB2, 0x59, 0x50, 0xC4, 0x19, + 0xE4, 0xBA, 0xE4, 0x79, 0xDC, 0x38, 0x01, 0xDC, 0x17, 0x01, 0xDB, 0xF7, 0x88, 0xDB, 0xD6, 0xDB, 0xD7, 0xD3, 0xD7, 0xC3, 0xD7, 0xAB, 0xF7, 0x94, 0x18, 0x7C, 0x79, 0x6D, 0x3B, 0x5D, 0xBD, 0x02, 0x4D, 0xFD, 0x89, 0x55, 0xDD, 0x65, 0x9D, 0x74, 0xBB, 0x7B, 0x77, 0x92, 0x96, 0xAA, 0x35, 0xB2, 0x35, 0xBA, 0x14, 0xC1, 0xF4, 0xC1, 0xF3, 0x01, 0xC1, 0xD3, 0x87, 0xC1, 0xD4, 0xB9, 0xF4, 0xB1, 0xF5, 0xA2, 0x15, 0x89, 0xF5, 0x79, 0xD5, 0x69, 0xD4, 0x61, 0xF5, 0x01, 0x59, 0xF5, 0x82, 0x5A, 0x15, 0x59, 0xF4, 0x59, 0xF5, 0x02, 0x59, 0xF4, 0x04, 0x59, 0xD4, 0x82, 0x59, 0xB3, 0x59, 0xD4, 0x59, 0xD3, 0x0B, 0x59, 0xB3, 0x01, 0x51, 0xB2, 0x01, 0x59, 0x93, 0x01, 0x59, 0xB2, 0x04, 0x59, 0x92, 0x8C, 0x59, 0x91, 0x59, 0x71, 0x59, 0x70, 0x59, 0x50, 0x69, 0xB1, 0x71, 0xF2, 0x79, 0xF1, 0x92, 0xD5, 0xB3, 0xB8, 0xD4, 0x9B, 0xE4, 0xFC, 0xDC, 0xBB, 0xDC, 0x9A, 0x01, 0xDC, 0x7A, 0x80, 0xDC, 0x79, 0x01, 0xDC, 0x59, 0x80, 0xDC, 0x38, 0x02, 0xDC, 0x18, 0x01, 0xDC, 0x17, 0x02, 0xDB, 0xF7, 0x80, 0xD3, 0xD7, 0x02, 0xD3, 0xD6, 0x80, 0xDB, 0xD6, 0x04, 0xDB, 0xB6, 0x06, 0xDB, 0x96, 0x02, 0xD3, 0x76, 0x9F, 0xD3, 0x77, 0xD3, 0x97, 0xD3, 0x98, 0xD3, 0x99, 0xCB, 0xBB, 0xAB, 0x9D, 0x41, 0x58, 0x21, 0x3A, 0x19, 0x5B, 0x11, 0x9C, 0x09, 0x9D, 0x11, 0xBD, 0x11, 0x9D, 0x19, 0x9C, 0x21, 0x7C, 0x31, 0x5A, 0x41, 0x39, 0x61, 0xDA, 0x72, 0x3A, 0x7A, 0x7A, 0x72, 0x9A, 0x62, 0xDA, 0x4A, 0xFA, 0x3B, 0x7B, 0x2C, 0x1C, 0x1C, 0x7C, 0x15, 0x1D, 0x05, 0x7E, 0x06, 0x3F, 0x06, 0x9F, + 0x07, 0x1F, 0x0F, 0x7F, 0x01, 0x0F, 0xBF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x8C, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x5F, 0x3F, 0x1F, 0x5E, 0xBF, 0x9E, 0x9F, 0x62, 0xF3, 0x82, 0x93, 0xA2, 0x33, 0xB2, 0x13, 0xB9, 0xD3, 0xB9, 0x92, 0xC1, 0x93, 0x01, 0xC9, 0xB3, 0x8B, 0xC1, 0x73, 0xC9, 0x93, 0xC1, 0xB3, 0xC1, 0xD4, 0xB9, 0xD4, 0xB2, 0x15, 0x9A, 0x15, 0x69, 0x52, 0x51, 0x11, 0x51, 0x72, 0x49, 0x92, 0x41, 0x92, 0x02, 0x41, 0x72, 0x80, 0x39, 0x71, 0x01, 0x39, 0x51, 0x81, 0x39, 0x52, 0x39, 0x51, 0x02, 0x31, 0x51, 0x80, 0x29, 0x51, 0x01, 0x29, 0x52, 0x80, 0x21, 0x53, 0x01, 0x19, 0x74, 0x81, 0x19, 0x95, 0x19, 0xB6, 0x01, 0x11, 0xB6, 0x88, 0x11, 0x95, 0x11, 0x75, 0x19, 0x75, 0x11, 0x54, 0x19, 0x74, 0x19, 0x53, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x89, 0x19, 0x32, 0x19, 0x12, 0x19, 0x33, 0x19, 0x53, 0x19, 0x94, 0x19, 0xB5, 0x21, 0xD6, 0x21, 0xF6, 0x21, 0xD6, 0x11, 0x53, 0x01, 0x11, 0x12, 0x81, 0x21, 0x32, 0x21, 0x51, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x10, 0x21, 0x11, 0x18, 0xF1, 0x10, 0xF2, 0x11, 0x34, 0x19, 0xD7, 0x1A, 0x18, + 0x1A, 0x19, 0x19, 0xF8, 0x09, 0x96, 0x01, 0x54, 0x02, 0x01, 0x34, 0x87, 0x09, 0x75, 0x11, 0xD7, 0x1A, 0x18, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x74, 0x19, 0x53, 0x19, 0x52, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x31, 0x21, 0x32, 0x01, 0x19, 0x12, 0x01, 0x11, 0x12, 0x80, 0x11, 0x32, 0x01, 0x19, 0x52, 0x01, 0x19, 0x32, 0x83, 0x19, 0x11, 0x19, 0x31, 0x21, 0x73, 0x29, 0xB3, 0x01, 0x11, 0x11, 0x82, 0x10, 0xF1, 0x11, 0x12, 0x19, 0x53, 0x01, 0x21, 0x73, 0x81, 0x21, 0x72, 0x21, 0x52, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x82, 0x19, 0x31, 0x21, 0x72, 0x19, 0x52, 0x01, 0x19, 0x11, 0x03, 0x19, 0x31, 0x81, 0x19, 0x30, 0x19, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x31, 0x21, 0x72, 0x21, 0x73, 0x19, 0x52, 0x19, 0x32, 0x02, 0x19, 0x11, 0x80, 0x19, 0x32, 0x01, 0x19, 0x72, 0x86, 0x21, 0x73, 0x19, 0x32, 0x21, 0x51, 0x19, 0x31, 0x19, 0x10, 0x21, 0x31, 0x21, 0x72, 0x01, 0x21, 0x73, 0x84, 0x21, 0x52, 0x19, 0x11, 0x10, 0xF0, 0x21, 0x51, 0x21, 0x92, 0x01, 0x21, 0x93, 0x80, 0x19, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x80, 0x21, 0x73, 0x01, 0x21, 0x94, 0x80, 0x21, 0x73, 0x01, 0x21, 0x52, 0x84, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x93, 0x29, 0x93, 0x01, 0x19, 0x32, 0x81, 0x19, 0x51, 0x19, 0x30, 0x01, 0x19, 0x51, 0x83, 0x19, 0x30, 0x19, 0x10, 0x29, 0x72, 0x31, 0xB3, 0x01, + 0x21, 0x31, 0x8A, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x52, 0x21, 0x94, 0x21, 0x93, 0x11, 0x12, 0x19, 0x12, 0x19, 0x32, 0x19, 0x33, 0x19, 0x54, 0x01, 0x29, 0xB6, 0x81, 0x21, 0x74, 0x21, 0x52, 0x01, 0x19, 0x30, 0x82, 0x19, 0x10, 0x19, 0x51, 0x19, 0x52, 0x01, 0x21, 0x93, 0x87, 0x11, 0x32, 0x11, 0x12, 0x19, 0x32, 0x19, 0x12, 0x11, 0x32, 0x19, 0x32, 0x19, 0x52, 0x19, 0x32, 0x02, 0x19, 0x31, 0x01, 0x19, 0x10, 0x87, 0x19, 0x30, 0x21, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x84, 0x29, 0x50, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x03, 0x29, 0x10, 0x02, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, + 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x87, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x75, 0x11, 0xD7, 0x11, 0xF8, 0x09, 0xD8, 0x02, 0x09, 0xD9, 0x88, 0x09, 0xB9, 0x09, 0xD8, 0x09, 0xB8, 0x11, 0xD7, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x10, 0xF1, 0x01, 0x19, 0x11, 0x02, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x09, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x18, 0xEF, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x80, 0x21, 0x51, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x07, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, + 0x30, 0x01, 0x21, 0x10, 0x23, 0x21, 0x30, 0x80, 0x21, 0x50, 0x0F, 0x21, 0x30, 0x80, 0x29, 0x50, 0x0E, 0x21, 0x30, 0x80, 0x21, 0x50, 0x11, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x50, 0x19, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x50, 0x08, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x8D, 0x29, 0x0F, 0x29, 0x0E, 0x28, 0xEE, 0x39, 0x2E, 0xCD, 0x3D, 0xCC, 0xFD, 0xCC, 0xFC, 0xC4, 0xBC, 0xA3, 0xF9, 0x49, 0x6F, 0x30, 0xAD, 0x30, 0xEE, 0x30, 0xEF, 0x31, 0x0F, 0x01, 0x31, 0x2F, 0x80, 0x31, 0x30, 0x03, 0x39, 0x50, 0x01, 0x39, 0x71, 0x80, 0x39, 0x51, 0x0B, 0x39, 0x71, 0x80, 0x39, 0x72, 0x01, 0x39, 0x71, 0x82, 0x39, 0x72, 0x41, 0x92, 0x41, 0x72, 0x01, 0x39, 0x72, 0x80, 0x39, 0x71, 0x05, 0x39, 0x72, 0x02, 0x41, 0x72, 0x01, 0x39, 0x72, 0x05, 0x41, 0x72, 0x83, 0x39, 0x72, 0x41, 0x92, 0x41, 0x72, 0x41, 0x92, 0x01, 0x41, 0x72, 0x80, 0x41, 0x92, 0x01, 0x41, 0x72, 0x0B, 0x41, 0x92, 0x80, 0x41, 0x72, 0x04, 0x41, 0x92, 0x80, 0x49, 0x92, 0x01, 0x41, 0x92, 0x01, 0x49, 0x92, 0x84, 0x41, 0x92, 0x41, 0x72, 0x41, 0x71, 0x49, 0x92, 0x41, 0x72, 0x03, 0x41, 0x92, 0x81, 0x49, 0x92, 0x49, 0x72, 0x0A, 0x49, 0x92, 0x80, 0x49, 0xB2, 0x01, 0x49, 0xB3, 0x01, 0x51, 0xB3, 0x01, 0x49, 0x92, 0x88, 0x51, 0x92, 0x59, 0x92, 0x69, 0xB1, 0xDC, 0xDC, 0xE4, 0x9A, 0xE4, 0x59, 0xDC, 0x38, 0xE4, 0x38, 0xDC, 0x17, 0x01, 0xE3, 0xF7, 0x89, 0xDB, + 0xD6, 0xD3, 0xB6, 0xCB, 0xB6, 0xBB, 0xB7, 0xA3, 0xD7, 0x8C, 0x18, 0x74, 0x79, 0x6D, 0x3C, 0x5D, 0xBD, 0x55, 0xFD, 0x01, 0x4D, 0xDD, 0x8A, 0x55, 0x9C, 0x6D, 0x5C, 0x7C, 0x5A, 0x83, 0x16, 0x9A, 0x55, 0xAA, 0x15, 0xBA, 0x15, 0xB9, 0xF4, 0xC1, 0xF3, 0xC1, 0xD3, 0xC1, 0xF3, 0x01, 0xC1, 0xF4, 0x87, 0xB9, 0xF5, 0xAA, 0x15, 0x99, 0xF5, 0x81, 0xD4, 0x71, 0xD4, 0x69, 0xD4, 0x61, 0xD5, 0x59, 0xD4, 0x06, 0x59, 0xF4, 0x08, 0x59, 0xD4, 0x04, 0x59, 0xB3, 0x80, 0x59, 0xD3, 0x03, 0x59, 0xB3, 0x01, 0x59, 0xD3, 0x08, 0x59, 0xB3, 0x01, 0x59, 0xB2, 0x82, 0x59, 0x92, 0x59, 0xB2, 0x59, 0x92, 0x01, 0x59, 0x91, 0x8C, 0x61, 0x91, 0x59, 0x91, 0x59, 0x70, 0x59, 0x50, 0x59, 0x4F, 0x8A, 0x94, 0xAB, 0x77, 0xC4, 0x1A, 0xCC, 0x3A, 0xD4, 0x7A, 0xDC, 0x7A, 0xDC, 0x59, 0xDC, 0x39, 0x01, 0xDC, 0x38, 0x03, 0xDC, 0x18, 0x01, 0xDB, 0xF7, 0x87, 0xD3, 0xF7, 0xDB, 0xF7, 0xDB, 0xD7, 0xD3, 0xD7, 0xDB, 0xD7, 0xDB, 0xB6, 0xD3, 0xB6, 0xD3, 0x96, 0x03, 0xDB, 0x96, 0x80, 0xDB, 0xB6, 0x03, 0xDB, 0x96, 0x02, 0xD3, 0x76, 0x01, 0xDB, 0x97, 0x87, 0xD3, 0x98, 0xD3, 0x99, 0xCB, 0xBA, 0xBB, 0xDD, 0x51, 0xB9, 0x29, 0x39, 0x19, 0x5B, 0x11, 0x7C, 0x03, 0x11, 0x9D, 0x91, 0x21, 0x7C, 0x29, 0x5B, 0x39, 0x19, 0x59, 0xBA, 0x72, 0x5B, 0x7A, 0x7A, 0x72, 0xBA, 0x62, 0xDA, 0x4A, 0xB9, 0x3B, 0x1A, 0x2B, 0xDB, 0x1C, 0x9D, 0x0C, 0xFD, 0x05, 0x5E, 0x06, 0x1F, 0x06, 0x9F, 0x0F, 0x1F, 0x0F, 0x7F, 0x01, 0x0F, 0xBF, 0x01, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x8B, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x5F, + 0x37, 0x1F, 0x5E, 0xBE, 0x9E, 0xFF, 0x63, 0x95, 0x72, 0x52, 0x9A, 0x12, 0xAA, 0x13, 0xB9, 0xD3, 0xC1, 0x93, 0x01, 0xC9, 0xB3, 0x8A, 0xC9, 0x93, 0xC1, 0x73, 0xC9, 0x93, 0xC1, 0x93, 0xC1, 0xB4, 0xB9, 0xD4, 0xB2, 0x15, 0x9A, 0x15, 0x69, 0x32, 0x59, 0x32, 0x51, 0x52, 0x01, 0x49, 0x92, 0x02, 0x41, 0x72, 0x80, 0x39, 0x72, 0x03, 0x39, 0x51, 0x83, 0x31, 0x51, 0x31, 0x31, 0x31, 0x51, 0x31, 0x31, 0x01, 0x29, 0x31, 0x01, 0x21, 0x32, 0x84, 0x19, 0x32, 0x19, 0x53, 0x11, 0x33, 0x19, 0x33, 0x11, 0x33, 0x01, 0x19, 0x53, 0x80, 0x19, 0x33, 0x01, 0x19, 0x32, 0x02, 0x19, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x8A, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x33, 0x11, 0x53, 0x19, 0x74, 0x19, 0xD5, 0x21, 0xF6, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x53, 0x01, 0x11, 0x12, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x94, 0x21, 0x11, 0x18, 0xF1, 0x19, 0x12, 0x11, 0x33, 0x19, 0x96, 0x19, 0xF8, 0x1A, 0x18, 0x1A, 0x39, 0x1A, 0x18, 0x09, 0x76, 0x01, 0x55, 0x09, 0x75, 0x09, 0x96, 0x11, 0xD7, 0x11, 0xF8, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x95, 0x11, + 0x54, 0x19, 0x53, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x72, 0x21, 0x72, 0x01, 0x21, 0x52, 0x86, 0x21, 0x73, 0x29, 0xD4, 0x29, 0xB5, 0x21, 0x94, 0x21, 0x93, 0x19, 0x32, 0x19, 0x31, 0x02, 0x19, 0x11, 0x8A, 0x21, 0x93, 0x29, 0xD4, 0x19, 0x32, 0x21, 0x73, 0x29, 0xD4, 0x21, 0xB4, 0x21, 0x73, 0x21, 0x72, 0x21, 0x93, 0x21, 0x52, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x31, 0x21, 0x51, 0x21, 0x72, 0x19, 0x52, 0x05, 0x19, 0x31, 0x81, 0x19, 0x30, 0x19, 0x10, 0x01, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x31, 0x21, 0x72, 0x21, 0x93, 0x19, 0x52, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x52, 0x8F, 0x21, 0x73, 0x21, 0x52, 0x21, 0x72, 0x19, 0x30, 0x19, 0x10, 0x19, 0x31, 0x21, 0x72, 0x21, 0x73, 0x21, 0x52, 0x19, 0x52, 0x19, 0x10, 0x18, 0xF0, 0x19, 0x31, 0x21, 0x72, 0x21, 0x93, 0x21, 0x73, 0x01, 0x19, 0x12, 0x80, 0x19, 0x11, 0x01, 0x19, 0x32, 0x86, 0x21, 0x73, 0x21, 0xB3, 0x21, 0x93, 0x21, 0x73, 0x19, 0x52, 0x21, 0x52, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x30, 0x21, 0x31, 0x21, 0x93, 0x21, 0x73, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x30, 0x8D, 0x19, 0x50, 0x21, 0x51, 0x19, 0x30, 0x19, 0x10, 0x29, 0x51, 0x29, 0x72, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x21, 0x93, 0x19, 0x72, 0x01, 0x19, 0x11, 0x87, 0x19, 0x12, 0x19, 0x33, + 0x21, 0x54, 0x21, 0x75, 0x29, 0xB6, 0x21, 0x74, 0x21, 0x72, 0x19, 0x30, 0x01, 0x19, 0x10, 0x81, 0x21, 0x51, 0x19, 0x52, 0x01, 0x21, 0x93, 0x80, 0x21, 0xB4, 0x01, 0x21, 0x93, 0x80, 0x21, 0x73, 0x01, 0x21, 0x93, 0x82, 0x21, 0xB4, 0x21, 0x93, 0x21, 0x73, 0x01, 0x21, 0x51, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x88, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x09, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x19, 0x11, 0x19, 0x12, 0x01, 0x11, 0x33, 0x82, 0x11, + 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x02, 0x09, 0xD8, 0x81, 0x01, 0xB9, 0x09, 0xD9, 0x01, 0x09, 0xD8, 0x8B, 0x11, 0xF8, 0x19, 0xD7, 0x11, 0x55, 0x11, 0x33, 0x10, 0xF2, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x19, 0x10, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x19, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x50, 0x01, 0x29, 0x51, 0x81, 0x21, 0x31, 0x29, 0x51, 0x03, 0x21, 0x30, 0x83, 0x29, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x07, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x06, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x1B, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0B, 0x21, 0x30, 0x80, 0x29, 0x50, 0x02, 0x21, 0x30, 0x03, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x0A, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x08, 0x21, 0x30, 0x06, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x30, 0x81, + 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x03, 0x29, 0x50, 0x05, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x89, 0x29, 0x0E, 0x31, 0x0E, 0x7B, 0x16, 0xD5, 0x7F, 0xCD, 0x3D, 0xC4, 0xFD, 0x9B, 0xB8, 0x41, 0x0E, 0x30, 0xCD, 0x30, 0xEE, 0x01, 0x31, 0x0F, 0x01, 0x31, 0x2F, 0x81, 0x31, 0x30, 0x39, 0x30, 0x04, 0x39, 0x50, 0x02, 0x39, 0x51, 0x80, 0x31, 0x51, 0x13, 0x39, 0x71, 0x80, 0x39, 0x51, 0x04, 0x39, 0x72, 0x01, 0x41, 0x72, 0x82, 0x39, 0x71, 0x39, 0x72, 0x39, 0x52, 0x05, 0x39, 0x72, 0x07, 0x41, 0x72, 0x80, 0x39, 0x72, 0x01, 0x41, 0x72, 0x80, 0x39, 0x72, 0x03, 0x41, 0x72, 0x80, 0x41, 0x92, 0x05, 0x41, 0x72, 0x81, 0x41, 0x71, 0x41, 0x72, 0x01, 0x41, 0x92, 0x01, 0x41, 0x72, 0x83, 0x41, 0x71, 0x41, 0x72, 0x41, 0x71, 0x41, 0x92, 0x01, 0x41, 0x72, 0x01, 0x41, 0x92, 0x02, 0x41, 0x72, 0x01, 0x41, 0x92, 0x82, 0x41, 0x72, 0x49, 0x92, 0x49, 0x72, 0x08, 0x49, 0x92, 0x80, 0x49, 0xB2, 0x01, 0x49, 0xB3, 0x80, 0x49, 0xB2, 0x01, 0x49, 0x92, 0x87, 0x51, 0x91, 0x59, 0x71, 0x8A, 0x94, 0xE4, 0xDB, 0xE4, 0x79, 0xDC, 0x38, 0xDC, 0x17, 0xE4, 0x18, 0x01, 0xE3, 0xF7, 0xA1, 0xDB, 0xD7, 0xDB, 0xB6, 0xD3, 0xB6, 0xC3, 0x96, 0xB3, 0xB7, 0x9B, 0xB7, 0x8C, 0x18, 0x74, 0x9A, 0x65, 0x3C, 0x5D, 0xBD, 0x55, 0xFD, + 0x4D, 0xDD, 0x4D, 0xBD, 0x5D, 0x7C, 0x6D, 0x1C, 0x7B, 0xD9, 0x8A, 0x96, 0xA2, 0x35, 0xB1, 0xF5, 0xB9, 0xF4, 0xC1, 0xF4, 0xB9, 0xD3, 0xC1, 0xD3, 0xC1, 0xF3, 0xC2, 0x14, 0xBA, 0x14, 0xB2, 0x15, 0xA1, 0xF5, 0x89, 0xB4, 0x79, 0xB4, 0x69, 0xB4, 0x69, 0xD4, 0x61, 0xD4, 0x61, 0xF4, 0x03, 0x59, 0xF4, 0x81, 0x59, 0xD4, 0x59, 0xF4, 0x07, 0x59, 0xD4, 0x01, 0x59, 0xB3, 0x80, 0x59, 0xD4, 0x05, 0x59, 0xB3, 0x80, 0x59, 0xD3, 0x02, 0x51, 0xB3, 0x81, 0x51, 0xD3, 0x51, 0xB3, 0x0A, 0x59, 0xB3, 0x80, 0x59, 0x92, 0x01, 0x59, 0xB2, 0x02, 0x59, 0x92, 0x80, 0x59, 0xB2, 0x01, 0x59, 0x92, 0x80, 0x61, 0x91, 0x01, 0x61, 0x70, 0x83, 0x69, 0xB1, 0x79, 0xF1, 0x82, 0x32, 0xB3, 0x77, 0x01, 0xD4, 0x5A, 0x81, 0xD4, 0x59, 0xD4, 0x39, 0x02, 0xD4, 0x18, 0x81, 0xDB, 0xF8, 0xDC, 0x18, 0x02, 0xDB, 0xF7, 0x01, 0xDB, 0xD7, 0x02, 0xDB, 0xB6, 0x06, 0xDB, 0x96, 0x02, 0xD3, 0x96, 0x02, 0xD3, 0x76, 0x01, 0xD3, 0x77, 0x86, 0xD3, 0x99, 0xCB, 0xBA, 0xBB, 0xDD, 0x6A, 0x19, 0x31, 0x38, 0x21, 0x7B, 0x11, 0x9C, 0x03, 0x11, 0x9D, 0x93, 0x19, 0x7C, 0x21, 0x5B, 0x31, 0x1A, 0x49, 0x9A, 0x72, 0x7B, 0x7A, 0x9B, 0x72, 0xBB, 0x62, 0xBA, 0x4A, 0x79, 0x3A, 0xFA, 0x2B, 0xFC, 0x1C, 0x9D, 0x14, 0xDD, 0x05, 0x5E, 0x0E, 0x3F, 0x06, 0xBF, 0x0F, 0x1F, 0x0F, 0x5F, 0x0F, 0x9F, 0x0F, 0xBF, 0x01, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x8B, 0x0F, 0xBF, 0x17, 0x9F, 0x27, 0x7F, 0x37, 0x1F, 0x56, 0xDF, 0x8E, 0xBF, 0x74, 0x37, 0x6A, 0x31, 0x9A, 0x53, 0xA1, 0xF2, 0xB9, 0xF3, 0xC1, 0xB3, 0x01, 0xC9, 0xB3, + 0x02, 0xC9, 0x93, 0x8B, 0xC1, 0xB3, 0xC1, 0xD4, 0xB9, 0xD4, 0xB2, 0x35, 0x9A, 0x15, 0x69, 0x52, 0x51, 0x11, 0x51, 0x52, 0x49, 0x72, 0x49, 0x92, 0x41, 0x52, 0x41, 0x72, 0x01, 0x39, 0x71, 0x01, 0x39, 0x51, 0x81, 0x31, 0x31, 0x39, 0x51, 0x01, 0x31, 0x31, 0x81, 0x31, 0x51, 0x31, 0x30, 0x02, 0x29, 0x31, 0x02, 0x21, 0x31, 0x82, 0x21, 0x32, 0x19, 0x32, 0x19, 0x12, 0x02, 0x19, 0x32, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x07, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x8D, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x19, 0x94, 0x19, 0xB5, 0x21, 0xF6, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x13, 0x11, 0x74, 0x19, 0xB6, 0x02, 0x1A, 0x18, 0x01, 0x11, 0xD7, 0x81, 0x11, 0xB6, 0x11, 0xB7, 0x01, 0x11, 0xF8, 0x87, 0x19, 0xF7, 0x11, 0xB6, 0x19, 0x95, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x31, 0x21, 0x51, 0x01, 0x21, 0x52, 0x86, 0x19, 0x32, 0x21, 0x73, 0x29, + 0xB4, 0x21, 0x94, 0x21, 0x73, 0x21, 0x72, 0x19, 0x31, 0x03, 0x19, 0x11, 0x85, 0x21, 0x72, 0x29, 0xB4, 0x21, 0x72, 0x21, 0x73, 0x29, 0xB4, 0x21, 0x93, 0x01, 0x19, 0x52, 0x84, 0x21, 0x72, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x72, 0x03, 0x19, 0x31, 0x81, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x50, 0x86, 0x21, 0x10, 0x19, 0x10, 0x21, 0x52, 0x29, 0x93, 0x21, 0x52, 0x19, 0x31, 0x21, 0x52, 0x02, 0x19, 0x31, 0x85, 0x19, 0x52, 0x21, 0x52, 0x21, 0x73, 0x21, 0x52, 0x21, 0x51, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x72, 0x01, 0x21, 0x52, 0x82, 0x19, 0x10, 0x18, 0xF0, 0x21, 0x31, 0x02, 0x21, 0x72, 0x82, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x32, 0x86, 0x19, 0x52, 0x21, 0x73, 0x21, 0xB3, 0x21, 0x72, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x72, 0x21, 0x73, 0x01, 0x19, 0x31, 0x8F, 0x19, 0x50, 0x19, 0x30, 0x19, 0x50, 0x21, 0x50, 0x19, 0x10, 0x19, 0x0F, 0x29, 0x51, 0x29, 0x72, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x21, 0x52, 0x19, 0x52, 0x02, 0x19, 0x31, 0x85, 0x19, 0x12, 0x19, 0x33, 0x21, 0x54, 0x21, 0x74, 0x21, 0x73, 0x21, 0x72, 0x02, 0x19, 0x30, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x83, 0x29, 0xB3, 0x29, 0xD4, 0x21, 0x93, 0x21, 0x72, 0x02, 0x21, 0x93, 0x01, 0x21, 0x72, + 0x80, 0x21, 0x52, 0x01, 0x21, 0x31, 0x80, 0x21, 0x51, 0x02, 0x21, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x87, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x88, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x88, 0x19, 0x11, 0x19, 0x12, 0x11, + 0x32, 0x11, 0x54, 0x11, 0x75, 0x09, 0x96, 0x09, 0xD7, 0x09, 0xD8, 0x09, 0xF8, 0x01, 0x01, 0xD8, 0x87, 0x01, 0xD9, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xF8, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x13, 0x11, 0x12, 0x01, 0x19, 0x11, 0x81, 0x21, 0x52, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x19, 0x0F, 0x18, 0xEF, 0x01, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x51, 0x29, 0x30, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x29, 0x30, 0x0A, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x29, + 0x30, 0x80, 0x21, 0x2F, 0x07, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x50, 0x05, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x08, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x09, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x08, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x87, 0x31, 0x0E, 0x39, 0x2F, 0xAC, 0x7B, 0xCD, 0x7F, 0xCD, 0x3E, 0x93, 0x98, 0x41, 0x4F, 0x30, 0xED, 0x01, 0x30, 0xEE, 0x02, 0x31, 0x0F, 0x01, 0x31, 0x30, 0x01, 0x39, 0x30, 0x80, 0x31, 0x30, 0x03, 0x31, 0x50, 0x81, 0x39, 0x51, 0x31, 0x51, 0x01, 0x39, 0x51, 0x80, 0x31, 0x50, 0x06, 0x39, 0x51, 0x80, 0x39, 0x71, 0x01, 0x39, 0x51, 0x80, 0x39, 0x71, 0x04, 0x39, 0x51, 0x80, 0x39, 0x71, 0x02, 0x39, 0x51, 0x80, 0x39, 0x71, 0x01, 0x39, 0x51, 0x80, 0x39, 0x71, 0x01, 0x39, 0x51, 0x01, 0x39, 0x72, 0x02, 0x39, 0x52, 0x81, 0x39, 0x51, 0x39, 0x52, 0x01, 0x39, 0x72, 0x82, 0x39, 0x52, 0x39, 0x72, 0x39, 0x52, 0x02, 0x39, 0x71, 0x02, 0x39, 0x72, 0x81, 0x39, 0x51, 0x39, 0x71, 0x01, 0x39, 0x72, 0x04, 0x39, + 0x71, 0x80, 0x41, 0x72, 0x05, 0x39, 0x71, 0x0B, 0x41, 0x71, 0x05, 0x41, 0x72, 0x82, 0x41, 0x92, 0x41, 0x72, 0x49, 0x92, 0x01, 0x49, 0x72, 0x80, 0x41, 0x72, 0x07, 0x49, 0x92, 0x01, 0x49, 0xB2, 0x86, 0x49, 0x92, 0x51, 0x91, 0x59, 0x50, 0xA3, 0x36, 0xE4, 0xBB, 0xE4, 0x79, 0xDC, 0x18, 0x01, 0xDB, 0xF7, 0x81, 0xDB, 0xD7, 0xDB, 0xB6, 0x01, 0xDB, 0x96, 0x92, 0xD3, 0x96, 0xC3, 0x76, 0xB3, 0x96, 0x9B, 0xB7, 0x83, 0xF8, 0x74, 0x9A, 0x65, 0x3C, 0x5D, 0xBD, 0x55, 0xFD, 0x55, 0xDD, 0x55, 0x9D, 0x65, 0x5C, 0x74, 0xBB, 0x7B, 0x17, 0x92, 0x55, 0xAA, 0x15, 0xB1, 0xF4, 0xB9, 0xF4, 0xC1, 0xF4, 0x01, 0xC1, 0xD3, 0x89, 0xC1, 0xF4, 0xC2, 0x14, 0xBA, 0x15, 0xAA, 0x15, 0x91, 0xD4, 0x79, 0x94, 0x71, 0x94, 0x69, 0xB4, 0x61, 0xB4, 0x61, 0xD4, 0x04, 0x59, 0xD4, 0x80, 0x59, 0xF4, 0x04, 0x59, 0xD4, 0x01, 0x51, 0xD4, 0x11, 0x51, 0xB3, 0x11, 0x59, 0xB3, 0x01, 0x59, 0x92, 0x02, 0x61, 0x92, 0x01, 0x61, 0x91, 0x01, 0x61, 0x50, 0x85, 0x7A, 0x12, 0xA3, 0x36, 0xBB, 0xB8, 0xC3, 0xF9, 0xCB, 0xF9, 0xCB, 0xF8, 0x01, 0xD3, 0xF8, 0x01, 0xD3, 0xF7, 0x80, 0xD3, 0xD7, 0x01, 0xDB, 0xD7, 0x80, 0xDB, 0xD6, 0x01, 0xDB, 0xB6, 0x03, 0xDB, 0x96, 0x01, 0xDB, 0x76, 0x80, 0xD3, 0x76, 0x02, 0xDB, 0x96, 0x01, 0xD3, 0x76, 0x01, 0xD3, 0x56, 0x88, 0xD3, 0x77, 0xD3, 0x98, 0xD3, 0x99, 0xC3, 0xDC, 0x82, 0xBB, 0x41, 0x78, 0x29, 0x7A, 0x19, 0x9C, 0x11, 0x9C, 0x01, 0x11, 0xBD, 0x96, 0x11, 0x9D, 0x19, 0x9D, 0x21, 0x7C, 0x29, 0x3A, 0x31, 0x19, 0x72, 0x7C, 0x7A, 0xBB, 0x72, 0xBA, 0x62, + 0x9A, 0x4A, 0x79, 0x3A, 0xFA, 0x2B, 0xFC, 0x24, 0x9D, 0x14, 0xFD, 0x0D, 0x5E, 0x0E, 0x3F, 0x0E, 0xBF, 0x0F, 0x1F, 0x07, 0x3F, 0x0F, 0x9F, 0x0F, 0xBF, 0x0F, 0xDF, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x8A, 0x07, 0x9F, 0x17, 0x9F, 0x27, 0x7F, 0x2F, 0x1F, 0x4E, 0xBE, 0x7E, 0xBF, 0x74, 0x98, 0x62, 0x31, 0x92, 0x53, 0xA1, 0xD2, 0xB9, 0xF3, 0x01, 0xC1, 0xB3, 0x81, 0xC1, 0x93, 0xC9, 0x93, 0x01, 0xC9, 0x94, 0x8A, 0xC1, 0x93, 0xC1, 0xD4, 0xB9, 0xD4, 0xB2, 0x35, 0x9A, 0x15, 0x69, 0x31, 0x51, 0x11, 0x51, 0x52, 0x49, 0x72, 0x41, 0x72, 0x41, 0x52, 0x02, 0x39, 0x72, 0x05, 0x39, 0x51, 0x01, 0x31, 0x51, 0x81, 0x31, 0x30, 0x31, 0x31, 0x02, 0x29, 0x31, 0x04, 0x21, 0x31, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x31, 0x8A, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x19, 0x74, 0x21, 0xB6, 0x2A, 0x17, 0x22, 0x17, 0x19, 0xB5, 0x11, 0x53, 0x01, 0x11, 0x32, 0x86, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, + 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x89, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xF7, 0x19, 0xF8, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0xD7, 0x01, 0x19, 0xF7, 0x87, 0x11, 0xB6, 0x11, 0x95, 0x19, 0x74, 0x19, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x04, 0x19, 0x11, 0x02, 0x19, 0x31, 0x01, 0x19, 0x11, 0x82, 0x21, 0x31, 0x21, 0x72, 0x21, 0x52, 0x02, 0x19, 0x11, 0x85, 0x19, 0x31, 0x21, 0x52, 0x21, 0x72, 0x21, 0x51, 0x19, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x51, 0x21, 0x71, 0x19, 0x30, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x21, 0x51, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x21, 0x52, 0x82, 0x19, 0x31, 0x21, 0x31, 0x19, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x52, 0x81, 0x21, 0x31, 0x21, 0x51, 0x02, 0x21, 0x10, 0x84, 0x19, 0x10, 0x21, 0x31, 0x21, 0x52, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x10, 0x84, 0x21, 0x31, 0x21, 0x51, 0x21, 0x52, 0x21, 0x31, 0x19, 0x11, 0x03, 0x19, 0x31, 0x01, 0x21, 0x72, 0x01, 0x19, 0x31, 0x03, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x52, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x30, 0x81, 0x21, 0x50, 0x21, 0x30, 0x01, 0x19, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x51, 0x02, 0x21, 0x10, 0x80, 0x19, 0x10, 0x01, 0x21, 0x31, 0x83, 0x21, 0x52, + 0x19, 0x51, 0x21, 0x52, 0x19, 0x31, 0x01, 0x19, 0x11, 0x89, 0x19, 0x12, 0x19, 0x32, 0x21, 0x53, 0x21, 0x52, 0x21, 0x51, 0x21, 0x30, 0x19, 0x30, 0x21, 0x30, 0x19, 0x30, 0x21, 0x51, 0x01, 0x19, 0x31, 0x01, 0x21, 0x52, 0x02, 0x19, 0x31, 0x01, 0x19, 0x52, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8A, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x06, 0x29, 0x2F, 0x87, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, + 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x11, 0x19, 0x12, 0x19, 0x33, 0x11, 0x54, 0x09, 0x75, 0x09, 0x96, 0x09, 0xD7, 0x01, 0x09, 0xD8, 0x89, 0x01, 0xD8, 0x01, 0xB8, 0x01, 0xD8, 0x09, 0xD9, 0x09, 0xF9, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x75, 0x11, 0x13, 0x10, 0xF2, 0x01, 0x19, 0x11, 0x80, 0x21, 0x32, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x83, 0x19, 0x31, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x19, 0x10, 0x19, 0x31, 0x01, 0x19, 0x10, 0x01, 0x18, 0xF0, 0x81, 0x19, 0x10, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x04, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, + 0x02, 0x21, 0x30, 0x11, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x08, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x86, 0x31, 0x0E, 0x41, 0x70, 0x9C, 0x3A, 0x9B, 0xF9, 0x72, 0x94, 0x39, 0x0E, 0x30, 0xCD, 0x02, 0x30, 0xEE, 0x03, 0x31, 0x0F, 0x81, 0x31, 0x30, 0x39, 0x30, 0x07, 0x31, 0x30, 0x82, 0x31, 0x50, 0x39, 0x51, 0x31, 0x50, 0x05, + 0x31, 0x51, 0x81, 0x39, 0x51, 0x31, 0x51, 0x19, 0x39, 0x51, 0x02, 0x39, 0x52, 0x04, 0x39, 0x51, 0x80, 0x39, 0x71, 0x13, 0x39, 0x51, 0x01, 0x41, 0x71, 0x80, 0x41, 0x51, 0x07, 0x41, 0x71, 0x80, 0x41, 0x51, 0x02, 0x41, 0x71, 0x80, 0x41, 0x72, 0x01, 0x41, 0x71, 0x01, 0x41, 0x72, 0x80, 0x49, 0x72, 0x09, 0x49, 0x92, 0x93, 0x51, 0x92, 0x51, 0x91, 0x59, 0x6F, 0xBB, 0xF9, 0xE4, 0x9A, 0xE4, 0x59, 0xDB, 0xF7, 0xDB, 0xD7, 0xDB, 0xB7, 0xDB, 0xB6, 0xDB, 0x96, 0xDB, 0x76, 0xD3, 0x75, 0xCB, 0x76, 0xC3, 0x76, 0xB3, 0x96, 0x9B, 0x97, 0x83, 0xF8, 0x74, 0x9A, 0x65, 0x3B, 0x02, 0x5D, 0xDD, 0x91, 0x5D, 0x7C, 0x6D, 0x1C, 0x7C, 0x3A, 0x82, 0xB6, 0x9A, 0x15, 0xA9, 0xF4, 0xB1, 0xD4, 0xB9, 0xF4, 0xB9, 0xF3, 0xC1, 0xF3, 0xB9, 0xF3, 0xB9, 0xF4, 0xBA, 0x15, 0xB2, 0x15, 0xA1, 0xF4, 0x81, 0x93, 0x71, 0x93, 0x69, 0x94, 0x01, 0x61, 0xB4, 0x80, 0x61, 0xD4, 0x07, 0x59, 0xD4, 0x83, 0x51, 0xD4, 0x51, 0xB3, 0x51, 0xD3, 0x51, 0xD4, 0x07, 0x51, 0xB3, 0x80, 0x51, 0x93, 0x02, 0x51, 0xB3, 0x80, 0x51, 0x92, 0x09, 0x51, 0xB3, 0x07, 0x59, 0xB3, 0x01, 0x59, 0x93, 0x02, 0x59, 0xB3, 0x01, 0x59, 0x93, 0x04, 0x59, 0x92, 0x01, 0x61, 0xB2, 0x01, 0x61, 0x92, 0x87, 0x61, 0x91, 0x69, 0xB1, 0x82, 0x12, 0x9A, 0xB4, 0xBB, 0xB8, 0xCB, 0xF9, 0xCB, 0xF8, 0xCB, 0xD8, 0x01, 0xD3, 0xD7, 0x02, 0xD3, 0xB6, 0x81, 0xDB, 0xB6, 0xDB, 0xB7, 0x04, 0xDB, 0x96, 0x01, 0xD3, 0x76, 0x81, 0xDB, 0x96, 0xD3, 0x75, 0x02, 0xD3, 0x76, 0x01, 0xD3, 0x56, 0x88, 0xD3, 0x77, 0xD3, 0x78, 0xD3, 0x99, 0xC3, + 0xDB, 0x93, 0x1B, 0x49, 0x98, 0x29, 0x7A, 0x19, 0x9B, 0x19, 0xBD, 0x01, 0x11, 0xBD, 0x95, 0x09, 0x9D, 0x11, 0x9D, 0x21, 0x9C, 0x21, 0x5B, 0x29, 0x39, 0x6A, 0x7C, 0x7A, 0xDC, 0x6A, 0x9B, 0x62, 0x9A, 0x4A, 0x79, 0x3A, 0xDA, 0x33, 0xDC, 0x24, 0x9D, 0x14, 0xFD, 0x05, 0x5D, 0x0E, 0x3F, 0x0E, 0x9F, 0x0F, 0x1F, 0x07, 0x3F, 0x0F, 0x9F, 0x0F, 0xBF, 0x0F, 0xDF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x8B, 0x0F, 0xBF, 0x0F, 0x9F, 0x1F, 0x7F, 0x2F, 0x3F, 0x46, 0xBE, 0x7E, 0xDF, 0x7D, 0x3B, 0x62, 0x72, 0x82, 0x32, 0xA1, 0xF2, 0xB1, 0xD3, 0xB9, 0xB3, 0x01, 0xC9, 0xB3, 0x80, 0xC9, 0x93, 0x01, 0xC9, 0xB4, 0x88, 0xC1, 0x93, 0xC1, 0xB3, 0xB9, 0xD4, 0xB2, 0x15, 0x9A, 0x15, 0x69, 0x52, 0x51, 0x31, 0x49, 0x52, 0x49, 0x72, 0x01, 0x41, 0x72, 0x02, 0x39, 0x72, 0x02, 0x39, 0x51, 0x80, 0x31, 0x31, 0x01, 0x39, 0x51, 0x81, 0x31, 0x50, 0x31, 0x30, 0x02, 0x31, 0x50, 0x82, 0x29, 0x30, 0x29, 0x51, 0x29, 0x31, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x02, + 0x19, 0x32, 0x82, 0x19, 0x53, 0x19, 0x74, 0x19, 0xB6, 0x01, 0x22, 0x17, 0x86, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x31, 0x85, 0x19, 0x11, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x01, 0x19, 0xB6, 0x01, 0x11, 0x96, 0x8C, 0x11, 0xB6, 0x11, 0x96, 0x11, 0x95, 0x11, 0x74, 0x11, 0x54, 0x19, 0x33, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x05, 0x21, 0x10, 0x02, 0x21, 0x31, 0x80, 0x21, 0x11, 0x02, 0x21, 0x31, 0x03, 0x21, 0x11, 0x80, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x19, 0x11, 0x03, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x50, 0x03, 0x19, 0x30, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x31, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x21, 0x11, 0x02, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x81, 0x19, 0x31, 0x21, 0x51, 0x03, 0x19, 0x31, 0x82, 0x21, 0x51, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x51, 0x21, 0x31, 0x19, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x51, 0x03, 0x21, 0x10, 0x02, 0x21, 0x31, + 0x82, 0x19, 0x31, 0x21, 0x51, 0x19, 0x30, 0x01, 0x19, 0x31, 0x84, 0x19, 0x11, 0x19, 0x12, 0x19, 0x32, 0x21, 0x32, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x19, 0x30, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x52, 0x01, 0x19, 0x31, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x04, 0x21, 0x2F, + 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x11, 0x19, 0x12, 0x19, 0x33, 0x11, 0x34, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xF8, 0x09, 0xB7, 0x09, 0xD8, 0x01, 0xB8, 0x01, 0xD8, 0x01, 0x09, 0xD9, 0x85, 0x09, 0xD8, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x75, 0x09, 0x13, 0x10, 0xF2, 0x01, 0x19, 0x12, 0x83, 0x21, 0x52, 0x21, 0x32, 0x21, 0x31, 0x21, 0x32, 0x02, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x83, 0x19, 0x10, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x19, 0x31, 0x01, 0x21, 0x52, 0x81, 0x19, 0x52, 0x19, 0x32, 0x01, 0x11, 0x11, 0x82, 0x10, 0xF1, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x11, 0x05, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x10, 0x29, 0x30, + 0x01, 0x21, 0x2F, 0x04, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x0C, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x0A, 0x29, 0x0F, 0x80, 0x20, 0xEF, 0x03, 0x29, 0x0F, 0x80, 0x28, 0xEF, 0x02, 0x29, 0x0F, 0x0A, 0x20, 0xEF, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x05, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x0A, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x09, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x09, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x86, 0x29, 0x2F, 0x29, 0x0F, 0x28, 0xEF, 0x28, 0xEE, 0x39, 0x50, 0x39, 0x4F, 0x30, 0xCD, 0x05, 0x30, 0xEE, 0x03, 0x30, 0xEF, 0x03, 0x31, 0x10, 0x81, 0x31, 0x30, 0x31, 0x10, 0x02, 0x31, 0x30, 0x80, 0x31, 0x10, 0x08, 0x31, 0x30, 0x05, 0x31, 0x31, 0x84, 0x31, 0x30, 0x31, 0x31, 0x31, 0x51, 0x31, 0x31, 0x31, 0x30, 0x02, 0x31, 0x31, 0x80, 0x39, 0x31, 0x01, 0x31, 0x31, 0x02, 0x39, 0x31, 0x80, 0x31, 0x31, 0x04, 0x39, 0x31, 0x80, 0x31, 0x31, 0x03, 0x39, 0x31, 0x82, 0x31, 0x31, 0x39, 0x31, 0x31, 0x31, 0x12, 0x39, 0x31, 0x04, 0x39, 0x51, 0x01, 0x39, 0x31, 0x06, 0x39, 0x51, 0x01, 0x41, 0x51, 0x80, 0x39, 0x51, 0x07, 0x41, 0x51, 0x01, 0x41, 0x71, 0x80, 0x41, 0x51, 0x01, 0x41, 0x71, 0x82, 0x49, 0x72, 0x49, 0x92, 0x41, 0x71, 0x01, 0x49, 0x71, 0x8A, 0x49, 0x51, 0x51, 0x50, 0x59, 0x4F, 0xC3, 0xF8, 0xE4, 0x79, 0xE4, 0x38, 0xDB, 0xD7, 0xDB, 0xB7, 0xDB, 0xB6, 0xDB, 0x96, 0xDB, 0x76, 0x01, 0xD3, 0x55, + 0x86, 0xCB, 0x56, 0xC3, 0x55, 0xB3, 0x76, 0x9B, 0x97, 0x8C, 0x18, 0x74, 0xBA, 0x6D, 0x5C, 0x01, 0x65, 0xDD, 0x89, 0x65, 0x9D, 0x65, 0x1C, 0x74, 0x7B, 0x83, 0x99, 0x92, 0x76, 0xA2, 0x15, 0xB2, 0x15, 0xBA, 0x14, 0xB9, 0xF4, 0xB9, 0xF3, 0x01, 0xB9, 0xD3, 0x8A, 0xB9, 0xF4, 0xB1, 0xF4, 0xA9, 0xF5, 0x91, 0x93, 0x79, 0x73, 0x69, 0x73, 0x61, 0x73, 0x61, 0x94, 0x61, 0xB4, 0x61, 0xD4, 0x59, 0xB4, 0x01, 0x59, 0xB3, 0x06, 0x51, 0xB3, 0x81, 0x51, 0x93, 0x51, 0xB3, 0x0D, 0x51, 0x93, 0x01, 0x51, 0x92, 0x05, 0x51, 0x93, 0x01, 0x51, 0x92, 0x02, 0x51, 0x93, 0x83, 0x51, 0xB3, 0x51, 0x93, 0x51, 0x92, 0x51, 0x93, 0x01, 0x59, 0x93, 0x80, 0x59, 0xB3, 0x04, 0x59, 0x93, 0x04, 0x59, 0x92, 0x80, 0x61, 0xB2, 0x02, 0x61, 0x92, 0x8C, 0x61, 0x91, 0x61, 0x71, 0x61, 0x50, 0x61, 0x2F, 0x8A, 0x53, 0xAB, 0x36, 0xBB, 0xB7, 0xCB, 0xF8, 0xD3, 0xD7, 0xD3, 0xB7, 0xD3, 0xD7, 0xDB, 0xB7, 0xDB, 0xB6, 0x01, 0xDB, 0x96, 0x80, 0xDB, 0x76, 0x02, 0xDB, 0x96, 0x80, 0xD3, 0x76, 0x02, 0xD3, 0x75, 0x01, 0xD3, 0x76, 0x02, 0xD3, 0x56, 0x9E, 0xD3, 0x77, 0xD3, 0x78, 0xD3, 0x99, 0xC3, 0xBB, 0xAB, 0x7C, 0x62, 0x19, 0x31, 0x79, 0x21, 0x9B, 0x19, 0xBD, 0x19, 0xDE, 0x09, 0xBD, 0x09, 0xBE, 0x11, 0xBD, 0x19, 0xBD, 0x29, 0xBC, 0x29, 0x5A, 0x52, 0x1B, 0x72, 0xBC, 0x6A, 0x7B, 0x62, 0x7A, 0x4A, 0x59, 0x3A, 0xBA, 0x33, 0xBC, 0x2C, 0x9D, 0x14, 0xFE, 0x0D, 0x7E, 0x0E, 0x1F, 0x0E, 0x9F, 0x0F, 0x1F, 0x0F, 0x5F, 0x0F, 0x9F, 0x01, 0x0F, 0xBF, 0x81, 0x0F, 0xDF, 0x07, 0xDF, 0x01, 0x07, 0xBF, + 0x8E, 0x0F, 0xBF, 0x17, 0x9F, 0x1F, 0x7F, 0x2F, 0x3F, 0x46, 0xFF, 0x6E, 0xDF, 0x86, 0x1D, 0x5A, 0xB2, 0x7A, 0x32, 0xA2, 0x33, 0xB1, 0xF3, 0xC1, 0xD3, 0xC9, 0xB4, 0xC1, 0x73, 0xC9, 0x73, 0x01, 0xC9, 0x93, 0x88, 0xC1, 0x93, 0xC1, 0xB3, 0xB9, 0xD4, 0xB2, 0x15, 0x9A, 0x15, 0x69, 0x32, 0x51, 0x11, 0x51, 0x52, 0x49, 0x72, 0x01, 0x41, 0x72, 0x03, 0x39, 0x72, 0x81, 0x39, 0x51, 0x31, 0x51, 0x01, 0x31, 0x31, 0x80, 0x31, 0x51, 0x03, 0x31, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x87, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x51, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x83, 0x19, 0x33, 0x11, 0x53, 0x19, 0x95, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x86, 0x19, 0xB6, 0x11, 0x54, 0x08, 0xF2, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x51, 0x03, 0x21, 0x30, 0x88, 0x21, 0x31, 0x21, 0x30, 0x19, 0x30, 0x19, 0x10, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0x74, 0x03, 0x11, 0x74, 0x01, 0x11, 0x53, 0x80, 0x19, 0x53, 0x01, 0x19, 0x32, + 0x81, 0x19, 0x31, 0x19, 0x11, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x02, 0x21, 0x31, 0x80, 0x21, 0x52, 0x01, 0x21, 0x31, 0x01, 0x21, 0x10, 0x88, 0x21, 0x11, 0x21, 0x10, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x06, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x07, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x20, 0xF0, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x19, 0x31, 0x21, 0x51, 0x05, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x29, 0x51, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x06, 0x21, 0x30, 0x01, 0x19, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x19, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x31, 0x03, 0x19, 0x10, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x19, 0x30, 0x04, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, + 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x8A, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x0A, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x87, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x11, 0x34, 0x11, 0x75, 0x11, 0xB7, 0x09, 0xB7, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x01, 0x01, 0xD8, 0x01, 0x09, 0xD8, 0x88, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x75, 0x09, 0x13, 0x11, 0x12, 0x10, 0xF1, 0x19, + 0x12, 0x21, 0x52, 0x21, 0x32, 0x02, 0x19, 0x32, 0x81, 0x19, 0x53, 0x11, 0x32, 0x01, 0x09, 0x12, 0x84, 0x11, 0x12, 0x09, 0x12, 0x11, 0x32, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x31, 0x84, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x19, 0x31, 0x19, 0x52, 0x01, 0x11, 0x32, 0x89, 0x11, 0x53, 0x19, 0x74, 0x19, 0x94, 0x19, 0x74, 0x19, 0x53, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x03, 0x11, 0x32, 0x81, 0x09, 0x11, 0x11, 0x11, 0x01, 0x19, 0x11, 0x80, 0x21, 0x11, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x06, 0x29, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x87, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x0B, 0x29, 0x30, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x04, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x08, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x07, 0x20, 0xEE, 0x80, 0x28, 0xEF, 0x03, + 0x20, 0xEE, 0x82, 0x28, 0xEF, 0x20, 0xEE, 0x20, 0xEF, 0x03, 0x20, 0xEE, 0x81, 0x28, 0xEE, 0x28, 0xEF, 0x01, 0x20, 0xEE, 0x05, 0x28, 0xEF, 0x01, 0x20, 0xEE, 0x82, 0x28, 0xEF, 0x20, 0xCE, 0x20, 0xEE, 0x02, 0x20, 0xCE, 0x80, 0x20, 0xEE, 0x03, 0x20, 0xCE, 0x81, 0x20, 0xEE, 0x20, 0xCE, 0x03, 0x20, 0xEE, 0x80, 0x20, 0xCE, 0x05, 0x20, 0xEE, 0x02, 0x20, 0xEF, 0x81, 0x20, 0xEE, 0x20, 0xEF, 0x03, 0x20, 0xEE, 0x80, 0x20, 0xEF, 0x01, 0x20, 0xEE, 0x01, 0x20, 0xEF, 0x05, 0x20, 0xEE, 0x81, 0x20, 0xEF, 0x20, 0xCF, 0x01, 0x20, 0xEF, 0x82, 0x28, 0xEF, 0x20, 0xEF, 0x20, 0xEE, 0x07, 0x20, 0xEF, 0x81, 0x20, 0xEE, 0x20, 0xEF, 0x02, 0x20, 0xEE, 0x03, 0x20, 0xEF, 0x80, 0x20, 0xEE, 0x01, 0x20, 0xEF, 0x02, 0x28, 0xEF, 0x02, 0x28, 0xEE, 0x02, 0x28, 0xCE, 0x81, 0x28, 0xCD, 0x28, 0xAD, 0x01, 0x28, 0xCD, 0x01, 0x28, 0xCE, 0x01, 0x30, 0xCE, 0x82, 0x30, 0xEE, 0x30, 0xCE, 0x30, 0xEE, 0x04, 0x30, 0xEF, 0x83, 0x28, 0xEF, 0x30, 0xEF, 0x31, 0x0F, 0x29, 0x0F, 0x27, 0x31, 0x10, 0x01, 0x31, 0x11, 0x07, 0x31, 0x10, 0x80, 0x31, 0x30, 0x0C, 0x31, 0x10, 0x01, 0x31, 0x30, 0x80, 0x39, 0x30, 0x02, 0x39, 0x10, 0x81, 0x39, 0x31, 0x39, 0x10, 0x02, 0x39, 0x31, 0x80, 0x39, 0x30, 0x01, 0x39, 0x31, 0x01, 0x39, 0x30, 0x80, 0x39, 0x31, 0x01, 0x39, 0x30, 0x01, 0x39, 0x31, 0x05, 0x41, 0x31, 0x07, 0x41, 0x51, 0x87, 0x41, 0x30, 0x49, 0x30, 0x51, 0x2F, 0x61, 0x4E, 0xCC, 0x19, 0xDC, 0x39, 0xE3, 0xF8, 0xDB, 0xB7, 0x01, 0xDB, 0x96, 0x01, 0xDB, 0x76, 0x88, 0xD3, 0x55, 0xD3, 0x35, + 0xCB, 0x35, 0xBB, 0x15, 0xB3, 0x56, 0x9B, 0x77, 0x8B, 0xF8, 0x7C, 0xBA, 0x75, 0x5B, 0x01, 0x6D, 0xBD, 0x92, 0x6D, 0x5C, 0x74, 0xBB, 0x83, 0xFA, 0x8A, 0xF7, 0x9A, 0x56, 0xA9, 0xF5, 0xB2, 0x15, 0xBA, 0x14, 0xB9, 0xF4, 0xC1, 0xF4, 0xB9, 0xF3, 0xB9, 0xF4, 0xB1, 0xD4, 0xA9, 0xD4, 0x91, 0x93, 0x81, 0x52, 0x71, 0x52, 0x69, 0x53, 0x61, 0x73, 0x01, 0x61, 0x93, 0x01, 0x59, 0x93, 0x07, 0x51, 0x93, 0x80, 0x51, 0x73, 0x01, 0x51, 0x72, 0x81, 0x51, 0x73, 0x51, 0x72, 0x11, 0x49, 0x72, 0x01, 0x51, 0x72, 0x80, 0x49, 0x72, 0x07, 0x51, 0x72, 0x80, 0x51, 0x92, 0x04, 0x51, 0x72, 0x81, 0x59, 0x92, 0x59, 0x72, 0x01, 0x59, 0x92, 0x80, 0x59, 0x72, 0x02, 0x59, 0x92, 0x82, 0x59, 0x72, 0x59, 0x92, 0x59, 0x91, 0x02, 0x61, 0x71, 0x01, 0x61, 0x50, 0x8A, 0x61, 0x2F, 0x71, 0x8F, 0x8A, 0x32, 0xC3, 0xB7, 0xD4, 0x18, 0xD3, 0xD7, 0xD3, 0xB7, 0xDB, 0xB7, 0xDB, 0x96, 0xD3, 0x96, 0xDB, 0x76, 0x01, 0xD3, 0x76, 0x81, 0xDB, 0x76, 0xD3, 0x76, 0x02, 0xD3, 0x75, 0x01, 0xD3, 0x76, 0x01, 0xD3, 0x55, 0x80, 0xD3, 0x56, 0x01, 0xD3, 0x77, 0x9C, 0xD3, 0x98, 0xC3, 0xBA, 0xAB, 0x9C, 0x6A, 0x39, 0x31, 0x79, 0x21, 0x9B, 0x19, 0xDD, 0x19, 0xDE, 0x09, 0xBE, 0x09, 0xDE, 0x11, 0xDE, 0x19, 0xDE, 0x29, 0xDD, 0x29, 0x9B, 0x41, 0xBA, 0x6A, 0xBD, 0x6A, 0x7B, 0x5A, 0x5A, 0x4A, 0x3A, 0x3A, 0x9A, 0x33, 0x7C, 0x24, 0x5D, 0x1C, 0xFE, 0x0D, 0x5E, 0x0D, 0xFF, 0x06, 0x7F, 0x0F, 0x1F, 0x0F, 0x5F, 0x0F, 0x9F, 0x01, 0x0F, 0xBF, 0x80, 0x0F, 0xDF, 0x01, 0x07, 0xDF, 0x8D, 0x07, 0xBF, 0x07, 0x9F, + 0x0F, 0x9F, 0x1F, 0x7F, 0x2F, 0x5F, 0x3E, 0xFE, 0x66, 0xDF, 0x8E, 0x5E, 0x52, 0xF3, 0x72, 0x32, 0x9A, 0x33, 0xB1, 0xD2, 0xC1, 0xB3, 0xC9, 0xB3, 0x03, 0xC9, 0x93, 0x88, 0xC9, 0xB3, 0xC1, 0xB3, 0xB9, 0xD4, 0xB2, 0x15, 0x9A, 0x15, 0x69, 0x52, 0x51, 0x11, 0x51, 0x73, 0x49, 0x72, 0x02, 0x41, 0x72, 0x01, 0x39, 0x72, 0x85, 0x39, 0x52, 0x39, 0x51, 0x31, 0x51, 0x39, 0x51, 0x31, 0x31, 0x31, 0x51, 0x02, 0x31, 0x30, 0x80, 0x31, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x02, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x03, 0x21, 0x31, 0x92, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x02, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x19, 0x11, 0x01, 0x19, 0x32, 0x83, 0x19, 0x33, 0x11, 0x33, 0x11, 0x32, 0x19, 0x53, 0x03, 0x19, 0x32, 0x81, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x04, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, + 0x31, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x31, 0x19, 0x10, 0x19, 0x30, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x31, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x21, 0x30, 0x83, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x21, 0x10, 0x04, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x50, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x30, 0x03, 0x19, 0x10, 0x81, 0x21, 0x11, 0x19, 0x10, 0x01, 0x21, 0x31, 0x08, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, + 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x19, 0x11, 0x84, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x09, 0xD7, 0x05, 0x09, 0xD8, 0x84, 0x09, 0xF8, 0x11, 0xF8, 0x11, 0xB6, 0x11, 0x55, 0x11, 0x33, 0x01, 0x11, 0x12, 0x93, 0x19, 0x12, 0x19, 0x11, 0x19, 0x31, 0x19, 0x32, 0x19, 0x12, 0x19, 0x33, 0x19, 0x54, 0x09, 0x33, 0x11, 0x74, 0x19, 0xF6, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xF6, 0x22, 0x17, 0x21, 0xF6, 0x19, 0xB5, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x20, 0xEF, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x8E, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x19, 0xD5, 0x19, 0xF7, 0x1A, 0x17, 0x22, 0x17, 0x19, 0xF6, 0x19, 0xB6, 0x11, 0x74, 0x19, 0x53, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, + 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x19, 0x31, 0x82, 0x19, 0x72, 0x11, 0x53, 0x11, 0x94, 0x02, 0x22, 0x37, 0x85, 0x22, 0x17, 0x19, 0xF6, 0x19, 0x94, 0x19, 0x32, 0x19, 0x31, 0x21, 0x11, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x0A, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x05, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x09, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x28, 0xEE, 0x29, 0x0F, 0x28, 0xEE, 0x01, 0x20, 0xEE, 0x03, 0x20, 0xCE, 0x05, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x03, 0x20, 0xAD, 0x80, 0x20, 0xAE, 0x03, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x03, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x09, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x80, 0x20, 0xAE, 0x03, 0x20, 0xAD, 0x01, 0x20, 0xCE, 0x80, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xAD, 0x81, 0x20, 0xCD, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x83, 0x20, 0xAD, 0x20, 0xCE, + 0x20, 0xAD, 0x20, 0xCE, 0x01, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x01, 0x20, 0xCE, 0x82, 0x20, 0xAD, 0x20, 0xCE, 0x20, 0xCD, 0x01, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x03, 0x20, 0xAD, 0x01, 0x28, 0xAD, 0x80, 0x28, 0x8D, 0x05, 0x28, 0xAD, 0x82, 0x28, 0xCD, 0x28, 0xCE, 0x30, 0xCE, 0x01, 0x28, 0xCE, 0x80, 0x30, 0xCE, 0x01, 0x28, 0xCE, 0x80, 0x28, 0xEE, 0x02, 0x28, 0xCE, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x08, 0x28, 0xCF, 0x87, 0x30, 0xEF, 0x28, 0xCF, 0x30, 0xEF, 0x28, 0xCF, 0x30, 0xEF, 0x28, 0xCF, 0x28, 0xEF, 0x30, 0xEF, 0x02, 0x28, 0xCF, 0x82, 0x30, 0xEF, 0x28, 0xCF, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x82, 0x30, 0xEF, 0x30, 0xCF, 0x30, 0xEF, 0x09, 0x30, 0xCF, 0x80, 0x30, 0xF0, 0x03, 0x30, 0xCF, 0x01, 0x30, 0xEF, 0x81, 0x30, 0xF0, 0x30, 0xCF, 0x07, 0x30, 0xEF, 0x80, 0x30, 0xCF, 0x0C, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x01, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x81, 0x30, 0xEF, 0x38, 0xF0, 0x01, 0x30, 0xEF, 0x80, 0x38, 0xEF, 0x03, 0x38, 0xF0, 0x80, 0x38, 0xEF, 0x01, 0x38, 0xF0, 0x04, 0x39, 0x10, 0x80, 0x41, 0x30, 0x01, 0x41, 0x10, 0x01, 0x41, 0x0F, 0x85, 0x49, 0x0F, 0x51, 0x0E, 0x61, 0x2E, 0xCC, 0x18, 0xDC, 0x18, 0xDB, 0xD7, 0x01, 0xDB, 0x96, 0x80, 0xDB, 0x76, 0x01, 0xDB, 0x56, 0x93, 0xD3, 0x35, 0xD3, 0x15, 0xCB, 0x15, 0xC3, 0x15, 0xB3, + 0x36, 0xA3, 0x76, 0x9B, 0xF8, 0x8C, 0xBA, 0x85, 0x3B, 0x7D, 0x9D, 0x7D, 0x7D, 0x7C, 0xDB, 0x84, 0x3A, 0x8B, 0x58, 0x92, 0x76, 0xA2, 0x15, 0xA9, 0xF4, 0xB1, 0xF4, 0xB9, 0xF4, 0xB9, 0xD4, 0x01, 0xB9, 0xD3, 0x85, 0xB9, 0xD4, 0xA9, 0xB3, 0x99, 0x73, 0x81, 0x32, 0x71, 0x31, 0x69, 0x32, 0x01, 0x61, 0x52, 0x81, 0x59, 0x52, 0x59, 0x72, 0x02, 0x51, 0x52, 0x01, 0x51, 0x72, 0x81, 0x49, 0x52, 0x51, 0x52, 0x03, 0x49, 0x52, 0x02, 0x49, 0x51, 0x04, 0x49, 0x31, 0x81, 0x41, 0x31, 0x49, 0x31, 0x01, 0x41, 0x31, 0x07, 0x49, 0x31, 0x0B, 0x49, 0x51, 0x0B, 0x51, 0x51, 0x08, 0x59, 0x51, 0x01, 0x61, 0x50, 0x01, 0x61, 0x2F, 0x85, 0x61, 0x0E, 0x60, 0xCD, 0x81, 0xB0, 0xB2, 0xF4, 0xC3, 0x55, 0xD3, 0x96, 0x03, 0xDB, 0x96, 0x80, 0xD3, 0x76, 0x04, 0xD3, 0x75, 0x8E, 0xD3, 0x55, 0xD3, 0x75, 0xD3, 0x55, 0xCB, 0x55, 0xD3, 0x56, 0xD3, 0x76, 0xD3, 0x77, 0xCB, 0x78, 0xC3, 0x99, 0xB3, 0xBB, 0x7A, 0xBA, 0x29, 0x58, 0x21, 0x9B, 0x19, 0xDC, 0x19, 0xFE, 0x01, 0x09, 0xDE, 0x92, 0x11, 0xFE, 0x19, 0xFE, 0x21, 0xFD, 0x21, 0x9B, 0x31, 0x9A, 0x5A, 0x7D, 0x62, 0x9C, 0x5A, 0x5B, 0x4A, 0x19, 0x3A, 0x5A, 0x2B, 0x1B, 0x23, 0xFD, 0x1C, 0xDE, 0x0D, 0x5E, 0x05, 0xDE, 0x06, 0x5E, 0x0F, 0x1F, 0x0F, 0x7F, 0x0F, 0x9F, 0x01, 0x0F, 0xBF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x8B, 0x07, 0x9F, 0x0F, 0x9F, 0x17, 0x7F, 0x2F, 0x5F, 0x3E, 0xFE, 0x5E, 0xDE, 0x8E, 0xBF, 0x52, 0xF3, 0x6A, 0x11, 0x9A, 0x33, 0xB2, 0x13, 0xC1, 0xD3, 0x01, 0xC9, 0xB3, 0x8C, 0xC9, 0x93, 0xC1, 0x73, 0xC9, 0x93, + 0xC1, 0xB3, 0xC1, 0x93, 0xB9, 0xD4, 0xB2, 0x15, 0x9A, 0x15, 0x69, 0x52, 0x59, 0x11, 0x51, 0x52, 0x51, 0x93, 0x49, 0x92, 0x01, 0x41, 0x72, 0x80, 0x39, 0x52, 0x03, 0x39, 0x72, 0x80, 0x39, 0x51, 0x01, 0x31, 0x51, 0x80, 0x31, 0x50, 0x02, 0x31, 0x30, 0x03, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x04, 0x29, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x31, 0x21, 0x11, 0x21, 0x51, 0x01, 0x19, 0x32, 0x8D, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x21, 0xD7, 0x22, 0x17, 0x19, 0xF6, 0x19, 0xB5, 0x09, 0x33, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x07, 0x21, 0x30, 0x01, 0x19, 0x11, 0x80, 0x21, 0x32, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x51, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x50, 0x81, 0x21, 0x30, 0x21, 0x50, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x08, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, + 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x07, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x50, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x50, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x19, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x83, 0x21, 0x51, 0x21, 0x30, 0x21, 0x50, 0x19, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x07, 0x21, 0x2F, + 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x8C, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x19, 0x33, 0x11, 0x54, 0x09, 0x75, 0x11, 0xD7, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xD8, 0x02, 0x09, 0xD8, 0x85, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x11, 0x02, 0x19, 0x32, 0x85, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xF7, 0x11, 0xF7, 0x1A, 0x18, 0x01, 0x11, 0xF7, 0x01, 0x11, 0xD7, 0x85, 0x11, 0xD6, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x85, 0x19, 0x31, 0x11, 0x11, 0x11, 0x53, 0x11, 0x94, 0x19, 0xD6, 0x11, 0xF7, 0x02, 0x12, 0x18, + 0x85, 0x11, 0xF7, 0x11, 0xD7, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x53, 0x19, 0x31, 0x03, 0x21, 0x30, 0x03, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8D, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x19, 0xF6, 0x1A, 0x37, 0x1A, 0x38, 0x09, 0xF7, 0x11, 0xF8, 0x09, 0xF7, 0x1A, 0x17, 0x1A, 0x16, 0x19, 0x74, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x89, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x0D, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x02, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x06, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x28, 0xEE, 0x01, 0x28, 0xCD, 0x87, 0x28, 0xAD, 0x20, 0x8C, 0x20, 0x6B, 0x18, 0x4B, 0x18, 0x2A, 0x18, 0x0A, 0x10, 0x09, 0x18, 0x09, 0x02, 0x10, 0x09, 0x81, 0x18, 0x09, 0x10, 0x09, 0x01, 0x18, 0x09, 0x01, 0x10, 0x09, 0x02, 0x18, 0x09, 0x08, 0x10, 0x09, 0x02, 0x18, 0x09, 0x80, 0x10, 0x09, 0x02, 0x18, 0x09, 0x80, 0x10, 0x09, 0x02, 0x18, 0x09, + 0x82, 0x10, 0x09, 0x18, 0x09, 0x10, 0x09, 0x02, 0x18, 0x09, 0x81, 0x10, 0x09, 0x18, 0x09, 0x08, 0x10, 0x09, 0x80, 0x18, 0x09, 0x02, 0x10, 0x09, 0x80, 0x18, 0x09, 0x0A, 0x10, 0x09, 0x80, 0x18, 0x09, 0x18, 0x10, 0x09, 0x0F, 0x18, 0x09, 0x04, 0x20, 0x09, 0x80, 0x20, 0x29, 0x05, 0x20, 0x2A, 0x80, 0x20, 0x4A, 0x05, 0x20, 0x2A, 0x80, 0x18, 0x2A, 0x02, 0x20, 0x2A, 0x83, 0x20, 0x0A, 0x20, 0x2B, 0x20, 0x2A, 0x20, 0x2B, 0x02, 0x20, 0x2A, 0x01, 0x20, 0x0B, 0x82, 0x20, 0x2B, 0x20, 0x2A, 0x20, 0x2B, 0x05, 0x20, 0x2A, 0x80, 0x20, 0x0A, 0x04, 0x20, 0x2A, 0x80, 0x20, 0x0A, 0x01, 0x20, 0x2A, 0x03, 0x20, 0x0A, 0x01, 0x20, 0x2A, 0x03, 0x20, 0x0A, 0x82, 0x20, 0x0B, 0x20, 0x0A, 0x20, 0x2B, 0x01, 0x20, 0x0A, 0x81, 0x20, 0x2B, 0x20, 0x0B, 0x01, 0x20, 0x2B, 0x80, 0x20, 0x0B, 0x02, 0x20, 0x2B, 0x84, 0x20, 0x2A, 0x20, 0x2B, 0x20, 0x2A, 0x20, 0x2B, 0x20, 0x0A, 0x06, 0x20, 0x2B, 0x80, 0x20, 0x2A, 0x07, 0x20, 0x2B, 0x80, 0x28, 0x2B, 0x03, 0x20, 0x2B, 0x80, 0x28, 0x2B, 0x01, 0x20, 0x2B, 0x04, 0x28, 0x2B, 0x03, 0x28, 0x4B, 0x01, 0x30, 0x6B, 0x01, 0x30, 0x6C, 0x8A, 0x30, 0x6B, 0x30, 0x6C, 0x38, 0x6B, 0x40, 0x8C, 0x48, 0xAC, 0x79, 0xAF, 0xD4, 0x18, 0xDB, 0xF8, 0xDB, 0xD7, 0xDB, 0x97, 0xDB, 0x76, 0x01, 0xDB, 0x56, 0x92, 0xDB, 0x36, 0xDB, 0x35, 0xD3, 0x15, 0xCA, 0xF5, 0xC2, 0xF5, 0xBB, 0x15, 0xAB, 0x36, 0xA3, 0xB7, 0x9C, 0x7A, 0x9C, 0xFB, 0x9D, 0x3C, 0x94, 0xFC, 0x94, 0x3A, 0x93, 0x58, 0x92, 0x96, 0xA2, 0x35, 0xAA, 0x14, 0xB1, 0xF4, 0xB9, 0xF4, 0x02, + 0xB9, 0xD3, 0x89, 0xB1, 0xD3, 0xA9, 0xB2, 0x91, 0x50, 0x80, 0xEF, 0x68, 0xAE, 0x60, 0xAE, 0x58, 0xAE, 0x50, 0xAE, 0x50, 0xCE, 0x48, 0xCE, 0x01, 0x48, 0xEE, 0x80, 0x48, 0xCE, 0x03, 0x40, 0xCE, 0x01, 0x40, 0xAD, 0x83, 0x38, 0x8D, 0x38, 0xAD, 0x38, 0x8D, 0x38, 0xAD, 0x09, 0x38, 0x8D, 0x81, 0x38, 0x6D, 0x38, 0x8D, 0x01, 0x38, 0x6D, 0x80, 0x38, 0x6C, 0x02, 0x38, 0x8D, 0x03, 0x40, 0x8D, 0x81, 0x40, 0xAD, 0x40, 0x8D, 0x07, 0x40, 0xAD, 0x06, 0x48, 0xAD, 0x80, 0x48, 0xCE, 0x01, 0x48, 0xAD, 0x01, 0x48, 0xCD, 0x80, 0x50, 0xCE, 0x04, 0x50, 0xEE, 0x03, 0x58, 0xEE, 0x80, 0x58, 0xED, 0x01, 0x58, 0xCD, 0x88, 0x69, 0x2E, 0x79, 0x6E, 0x92, 0x10, 0x9A, 0x31, 0xB2, 0x92, 0xB2, 0xB2, 0xC2, 0xF3, 0xC3, 0x14, 0xCB, 0x34, 0x02, 0xCB, 0x55, 0x02, 0xD3, 0x55, 0x04, 0xCB, 0x55, 0x89, 0xCB, 0x56, 0xD3, 0x77, 0xCB, 0x97, 0xC3, 0xB9, 0xB3, 0xBB, 0x82, 0xFB, 0x31, 0x57, 0x21, 0x9A, 0x21, 0xDC, 0x19, 0xFE, 0x02, 0x09, 0xFE, 0x91, 0x11, 0xFE, 0x22, 0x1E, 0x21, 0xDD, 0x29, 0x7A, 0x4A, 0x3D, 0x62, 0x9D, 0x62, 0x9C, 0x4A, 0x1A, 0x3A, 0x3A, 0x2A, 0xBB, 0x23, 0x9C, 0x1C, 0xBE, 0x0D, 0x3E, 0x0D, 0xDF, 0x06, 0x5E, 0x0F, 0x1F, 0x0F, 0x7F, 0x0F, 0x9F, 0x01, 0x0F, 0xBF, 0x80, 0x0F, 0xDF, 0x02, 0x07, 0xBF, 0x8E, 0x07, 0x9F, 0x0F, 0x9F, 0x17, 0x7F, 0x27, 0x5F, 0x36, 0xFF, 0x56, 0xDE, 0x8E, 0xFF, 0x53, 0x54, 0x62, 0x31, 0x9A, 0x53, 0xB2, 0x33, 0xB9, 0xD3, 0xC1, 0xB3, 0xC9, 0xB4, 0xC9, 0x93, 0x01, 0xC1, 0x73, 0x87, 0xC1, 0x93, 0xC1, 0xB3, 0xB9, 0xF4, 0xB2, 0x15, + 0x9A, 0x35, 0x69, 0x32, 0x59, 0x11, 0x51, 0x52, 0x01, 0x49, 0x72, 0x80, 0x41, 0x72, 0x02, 0x39, 0x72, 0x83, 0x39, 0x52, 0x39, 0x51, 0x39, 0x72, 0x39, 0x51, 0x01, 0x31, 0x51, 0x83, 0x31, 0x50, 0x31, 0x30, 0x31, 0x50, 0x31, 0x30, 0x04, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x07, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8D, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x19, 0xF6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x02, 0x21, 0x31, 0x81, 0x19, 0x11, 0x21, 0x11, 0x01, 0x19, 0x10, 0x01, 0x21, 0x10, 0x82, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x04, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x08, 0x21, 0x30, 0x81, 0x29, 0x50, 0x21, 0x30, 0x07, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, + 0x85, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x19, 0x10, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x04, 0x29, 0x2F, + 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x50, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x31, 0x01, 0x19, 0x11, 0x89, 0x19, 0x33, 0x11, 0x33, 0x11, 0x75, 0x11, 0xB7, 0x09, 0xB7, 0x09, 0xD8, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0xD8, 0x01, 0x09, 0xD8, 0x86, 0x09, 0xB7, 0x11, 0xB6, 0x11, 0x75, 0x09, 0x12, 0x10, 0xF1, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x52, 0x85, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xF8, 0x01, 0x09, 0xD7, 0x89, 0x09, 0xB7, 0x09, 0xD8, 0x09, 0xB7, 0x01, 0xB7, 0x09, 0xD7, 0x09, 0xB7, 0x09, 0x96, 0x11, 0x95, 0x11, 0x33, 0x19, 0x32, 0x01, 0x21, 0x31, 0x80, 0x29, 0x51, 0x01, 0x29, 0x30, 0x92, 0x21, 0x30, 0x21, 0x11, 0x19, 0x11, 0x11, 0x32, 0x11, 0x74, 0x11, 0xB6, + 0x11, 0xD7, 0x09, 0xD7, 0x11, 0xF8, 0x09, 0xF8, 0x09, 0xD8, 0x09, 0xF8, 0x09, 0xD8, 0x09, 0xD7, 0x11, 0xB7, 0x19, 0xD6, 0x19, 0x74, 0x10, 0xF1, 0x19, 0x10, 0x01, 0x21, 0x31, 0x01, 0x21, 0x51, 0x80, 0x21, 0x31, 0x02, 0x19, 0x31, 0x92, 0x11, 0x32, 0x19, 0x73, 0x11, 0x74, 0x19, 0xD6, 0x11, 0xF7, 0x09, 0xF8, 0x01, 0xD7, 0x09, 0xD8, 0x01, 0xD8, 0x01, 0xB7, 0x0A, 0x18, 0x11, 0xF7, 0x11, 0xB5, 0x11, 0x53, 0x19, 0x32, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x0E, 0x29, 0x30, 0x04, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x08, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x8D, 0x20, 0xEE, 0x20, 0xCE, 0x20, 0xCD, 0x20, 0xAC, 0x20, 0x8C, 0x28, 0x8B, 0x39, 0x0D, 0x49, 0x6E, 0x6A, 0x51, 0x8B, 0x34, 0xAC, 0x18, 0xC4, 0xDB, 0xD5, 0x5D, 0xDD, 0x9D, 0x01, 0xE5, 0xBE, 0x81, 0xE5, 0xBD, 0xE5, 0xBE, 0x01, 0xE5, 0xBD, 0x02, 0xDD, 0xBD, 0x03, 0xE5, 0xBD, 0x01, 0xE5, 0xDD, 0x83, 0xDD, 0xBD, 0xE5, 0xDD, + 0xDD, 0xBD, 0xE5, 0xDD, 0x03, 0xDD, 0xBD, 0x03, 0xE5, 0xBD, 0x80, 0xDD, 0xBD, 0x08, 0xE5, 0xBD, 0x80, 0xDD, 0xBD, 0x2A, 0xE5, 0xBD, 0x80, 0xE5, 0xDD, 0x03, 0xE5, 0xBD, 0x80, 0xE5, 0xDD, 0x03, 0xE5, 0xBD, 0x80, 0xE5, 0xDD, 0x03, 0xE5, 0xBD, 0x80, 0xDD, 0xBD, 0x05, 0xE5, 0xBD, 0x80, 0xDD, 0xBD, 0x0A, 0xDD, 0x9D, 0x04, 0xE5, 0x9D, 0x80, 0xDD, 0x9D, 0x04, 0xDD, 0xBD, 0x82, 0xE5, 0x9D, 0xE5, 0xBD, 0xDD, 0xBD, 0x02, 0xE5, 0xBD, 0x86, 0xDD, 0xBD, 0xDD, 0x9D, 0xE5, 0x9D, 0xE5, 0xBD, 0xE5, 0x9D, 0xE5, 0xBD, 0xE5, 0x9D, 0x14, 0xE5, 0xBD, 0x82, 0xE5, 0x9D, 0xE5, 0xBD, 0xE5, 0x9D, 0x01, 0xE5, 0xBD, 0x02, 0xE5, 0x9D, 0x01, 0xE5, 0xBD, 0x80, 0xE5, 0x9D, 0x04, 0xE5, 0xBD, 0x81, 0xE5, 0x9D, 0xE5, 0xBD, 0x01, 0xE5, 0x9D, 0x82, 0xE5, 0xBD, 0xE5, 0x9D, 0xE5, 0xBD, 0x0A, 0xE5, 0x9D, 0x85, 0xE5, 0xBD, 0xE5, 0x9D, 0xE5, 0xBD, 0xE5, 0xBE, 0xE5, 0x9D, 0xE5, 0xBD, 0x12, 0xE5, 0x9D, 0x01, 0xE5, 0x7D, 0x80, 0xDD, 0x7D, 0x02, 0xE5, 0x5D, 0x88, 0xE5, 0x3C, 0xE5, 0x1C, 0xE4, 0xDB, 0xE4, 0x9A, 0xDC, 0x18, 0xDB, 0xD7, 0xDB, 0x97, 0xDB, 0x76, 0xDB, 0x56, 0x01, 0xDB, 0x36, 0x80, 0xDB, 0x15, 0x01, 0xD2, 0xF5, 0x8E, 0xD2, 0xD5, 0xCA, 0xD5, 0xC2, 0xD5, 0xB2, 0xD5, 0xAA, 0xF6, 0xAB, 0x77, 0xA3, 0x98, 0xA3, 0xB8, 0x9B, 0x37, 0x92, 0xB6, 0x9A, 0x55, 0xA2, 0x35, 0xA9, 0xF4, 0xB2, 0x14, 0xB9, 0xF4, 0x01, 0xB9, 0xD3, 0x88, 0xB1, 0xB3, 0xB1, 0xB2, 0xA9, 0xD2, 0xBA, 0xB4, 0xE4, 0x19, 0xEC, 0xDB, 0xEC, 0xFC, 0xED, 0x1C, 0xE5, 0x1C, 0x01, 0xE5, 0x3C, 0x83, 0xE5, + 0x5D, 0xE5, 0x5C, 0xE5, 0x7D, 0xE5, 0x5D, 0x02, 0xE5, 0x7D, 0x80, 0xE5, 0x5D, 0x0E, 0xE5, 0x7D, 0x03, 0xE5, 0x5D, 0x03, 0xE5, 0x3C, 0x83, 0xED, 0x3D, 0xE5, 0x1C, 0xED, 0x3C, 0xE5, 0x3C, 0x02, 0xED, 0x3C, 0x80, 0xE5, 0x3C, 0x02, 0xED, 0x3C, 0x80, 0xE5, 0x1C, 0x08, 0xED, 0x3C, 0x80, 0xED, 0x1C, 0x04, 0xED, 0x3C, 0x04, 0xE5, 0x1C, 0x01, 0xE4, 0xFC, 0x81, 0xEC, 0xFC, 0xED, 0x1C, 0x01, 0xEC, 0xFB, 0x84, 0xEC, 0xDB, 0xEC, 0xFB, 0xEC, 0xDA, 0xEC, 0xBA, 0xE4, 0x99, 0x01, 0xEC, 0x99, 0x04, 0xEC, 0x78, 0x82, 0xEC, 0x58, 0xE4, 0x58, 0xE4, 0x37, 0x01, 0xE4, 0x38, 0x82, 0xE4, 0x37, 0xE4, 0x58, 0xE4, 0x38, 0x01, 0xEC, 0x58, 0x01, 0xEC, 0x59, 0x87, 0xE4, 0x59, 0xDC, 0x5A, 0xC4, 0x1B, 0x8B, 0x3B, 0x31, 0x57, 0x21, 0x9A, 0x21, 0xFC, 0x1A, 0x1D, 0x01, 0x09, 0xFE, 0x01, 0x0A, 0x1E, 0x90, 0x1A, 0x1E, 0x21, 0xFD, 0x21, 0x9B, 0x39, 0xFC, 0x62, 0xBD, 0x62, 0xBC, 0x4A, 0x3B, 0x3A, 0x3A, 0x2A, 0x5A, 0x1B, 0x1B, 0x1C, 0x7E, 0x15, 0x3E, 0x0D, 0xFF, 0x06, 0x7F, 0x0E, 0xFF, 0x0F, 0x5F, 0x0F, 0x9F, 0x01, 0x0F, 0xBF, 0x80, 0x0F, 0xDF, 0x01, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x8C, 0x0F, 0xBF, 0x17, 0x9F, 0x27, 0x5F, 0x36, 0xFF, 0x4E, 0xBE, 0x7E, 0x9F, 0x5B, 0xB5, 0x5A, 0x11, 0x92, 0x53, 0xA9, 0xF3, 0xC1, 0xF4, 0xC1, 0x93, 0xC9, 0xB4, 0x02, 0xC9, 0x93, 0x87, 0xC1, 0x93, 0xC1, 0xB3, 0xB9, 0xD4, 0xB2, 0x15, 0x9A, 0x15, 0x69, 0x32, 0x59, 0x11, 0x51, 0x52, 0x01, 0x49, 0x72, 0x01, 0x41, 0x72, 0x01, 0x39, 0x72, 0x82, 0x39, 0x52, 0x39, 0x51, 0x39, 0x72, 0x01, + 0x31, 0x51, 0x81, 0x31, 0x31, 0x31, 0x50, 0x01, 0x31, 0x30, 0x81, 0x31, 0x50, 0x29, 0x50, 0x02, 0x29, 0x30, 0x03, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x07, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x21, 0xF6, 0x01, 0x22, 0x37, 0x82, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x01, 0x19, 0x31, 0x83, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x03, 0x21, 0x0F, 0x83, 0x18, 0xEF, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x10, 0x80, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x20, 0xEF, + 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x08, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x20, 0xEF, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, + 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x11, 0x89, 0x19, 0x11, 0x19, 0x12, 0x19, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xD9, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x01, 0x09, 0xD8, 0x83, 0x09, 0xB7, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x12, 0x01, 0x11, 0x11, 0x88, 0x19, 0x11, 0x19, 0x31, 0x21, 0x52, 0x19, 0x32, 0x11, 0x32, 0x09, 0x12, 0x11, 0x74, 0x11, 0xB6, 0x09, 0xD7, 0x02, 0x09, 0xD8, 0x03, 0x01, 0xD8, 0x01, 0x09, 0xD8, 0x8E, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x53, 0x19, 0x32, 0x19, 0x11, 0x29, 0x51, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x11, 0x33, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xF7, 0x01, 0x09, 0xF8, 0x01, 0x01, 0xD8, 0x89, 0x01, 0xF8, 0x01, 0xD8, 0x01, 0xB8, 0x09, 0xD8, 0x09, 0xD7, 0x11, 0xD7, 0x19, 0xB5, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x31, 0x80, 0x21, 0x51, 0x01, 0x19, 0x31, 0x86, 0x11, 0x11, 0x11, 0x12, 0x11, 0x53, 0x11, 0x95, 0x19, 0xF7, 0x11, 0xF8, 0x09, 0xD8, 0x01, 0x01, 0xD8, 0x88, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0xD8, 0x09, 0xF8, 0x11, 0xF8, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, + 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x88, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x07, 0x29, 0x30, 0x01, 0x21, 0x30, 0x09, 0x29, 0x30, 0x84, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x50, 0x29, 0x30, 0x05, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8E, 0x20, 0xEF, 0x28, 0xEF, 0x20, 0xEE, 0x20, 0xCE, 0x20, 0xAD, 0x20, 0x8C, 0x20, 0x6B, 0x28, 0xAC, 0x59, 0xD0, 0x9B, 0xD7, 0xBC, 0x9A, 0xCC, 0xFB, 0xD5, 0x3C, 0xD5, 0x3B, 0xDD, 0x3B, 0x01, 0xD5, 0x1A, 0x80, 0xD4, 0xFA, 0x08, 0xD4, 0xF9, 0x80, 0xD5, 0x19, 0x01, 0xD4, 0xF9, 0x03, 0xD5, 0x19, 0x2D, 0xD4, 0xF9, 0x01, 0xDC, 0xF9, 0x10, 0xD4, 0xF9, 0x80, 0xD5, 0x19, 0x0A, 0xD4, 0xF9, 0x80, 0xD5, 0x19, 0x51, 0xD4, 0xF9, 0x80, 0xD4, 0xF8, 0x28, 0xD4, 0xF9, 0x04, 0xD4, 0xD9, 0x01, 0xD4, 0xB9, 0x01, 0xDC, 0x99, 0x86, 0xDC, 0x78, 0xDC, 0x38, 0xDB, 0xF7, 0xDB, 0xB7, 0xD3, 0x76, 0xD3, 0x56, 0xDB, 0x36, 0x01, 0xDB, 0x16, 0x83, 0xDA, 0xF5, 0xDA, 0xD5, 0xD2, 0xB5, 0xD2, 0x95, 0x01, 0xCA, 0x95, 0x87, 0xBA, 0x95, 0xB2, 0x75, 0xA2, 0x54, 0xA2, 0x74, 0xA2, 0x75, 0xA2, 0x55, 0xA2, 0x34, 0xAA, 0x14, 0x02, 0xB1, 0xF4, 0x89, 0xB9, 0xF3, 0xB9, 0xD3, 0xB1, 0xD3, 0xB1, 0xD2, 0xB1, 0xF2, 0xCB, + 0x16, 0xE4, 0x39, 0xE4, 0x79, 0xDC, 0x99, 0xDC, 0x98, 0x02, 0xDC, 0xB9, 0x80, 0xD4, 0xB9, 0x0C, 0xD4, 0xD9, 0x80, 0xD4, 0xF9, 0x02, 0xD4, 0xD9, 0x80, 0xDC, 0xF9, 0x01, 0xD4, 0xD9, 0x05, 0xDC, 0xD9, 0x80, 0xDC, 0xB9, 0x04, 0xE4, 0xB9, 0x80, 0xE4, 0x99, 0x06, 0xE4, 0xB9, 0x80, 0xE4, 0xB8, 0x0A, 0xE4, 0xB9, 0x80, 0xE4, 0x99, 0x02, 0xE4, 0xB9, 0x81, 0xE4, 0x99, 0xE4, 0xB9, 0x05, 0xE4, 0x99, 0x80, 0xE4, 0x98, 0x01, 0xE4, 0x99, 0x01, 0xE4, 0x98, 0x03, 0xE4, 0x78, 0x80, 0xE4, 0x77, 0x07, 0xE4, 0x57, 0x03, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xE4, 0x58, 0x01, 0xEC, 0x58, 0x01, 0xEC, 0x79, 0x9C, 0xE4, 0x7A, 0xCC, 0x3B, 0x9B, 0x7B, 0x39, 0x77, 0x21, 0x9A, 0x21, 0xFC, 0x1A, 0x1D, 0x0A, 0x1E, 0x02, 0x1E, 0x02, 0x1F, 0x0A, 0x3E, 0x12, 0x3E, 0x1A, 0x1D, 0x19, 0xBC, 0x21, 0xBB, 0x5A, 0xDE, 0x5A, 0xDD, 0x4A, 0x7C, 0x3A, 0x3B, 0x22, 0x3A, 0x12, 0xBB, 0x13, 0xFD, 0x14, 0xFE, 0x0D, 0xDF, 0x0E, 0x5F, 0x0E, 0xFF, 0x0F, 0x3F, 0x0F, 0x9F, 0x0F, 0xBF, 0x01, 0x0F, 0xDF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x8B, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x7F, 0x36, 0xFE, 0x4E, 0xDF, 0x76, 0x9F, 0x6C, 0x58, 0x51, 0xF0, 0x92, 0x73, 0xA9, 0xF2, 0xB9, 0xB3, 0xC9, 0xB3, 0x02, 0xC9, 0x93, 0x8A, 0xC9, 0xB4, 0xC1, 0x93, 0xC1, 0xB4, 0xB9, 0xD4, 0xB2, 0x15, 0x99, 0xF5, 0x69, 0x52, 0x59, 0x32, 0x51, 0x52, 0x51, 0x72, 0x49, 0x72, 0x01, 0x41, 0x72, 0x80, 0x39, 0x72, 0x01, 0x39, 0x52, 0x82, 0x39, 0x72, 0x31, 0x51, 0x31, 0x31, 0x02, 0x31, 0x51, 0x01, 0x31, 0x50, 0x02, + 0x29, 0x50, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x05, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x07, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x06, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF6, 0x19, 0x94, 0x11, 0x53, 0x11, 0x12, 0x01, 0x19, 0x31, 0x84, 0x19, 0x10, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x08, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x06, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x28, 0xEF, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x87, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x20, 0xEF, 0x01, 0x29, 0x0F, + 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x09, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x07, + 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x11, 0x85, 0x21, 0x32, 0x19, 0x12, 0x11, 0x12, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD7, 0x01, 0x09, 0xD8, 0x03, 0x09, 0xD9, 0x87, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0x96, 0x19, 0xB7, 0x19, 0x95, 0x11, 0x33, 0x10, 0xF1, 0x11, 0x11, 0x01, 0x19, 0x31, 0x88, 0x21, 0x52, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x11, 0xB6, 0x09, 0xB7, 0x09, 0xF9, 0x09, 0xD8, 0x01, 0x01, 0xD9, 0x81, 0x01, 0xF9, 0x01, 0xD9, 0x01, 0x01, 0xB8, 0x86, 0x09, 0xF9, 0x09, 0xF8, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0x54, 0x19, 0x32, 0x19, 0x11, 0x02, 0x21, 0x31, 0x85, 0x19, 0x11, 0x10, 0xF1, 0x11, 0x33, 0x11, 0x95, 0x11, 0xB6, 0x09, 0xD7, 0x01, 0x09, 0xF9, 0x02, 0x01, 0xD9, 0x02, 0x01, 0xD8, 0x01, 0x09, 0xD8, 0x83, 0x11, 0xF7, 0x19, 0xD6, 0x11, 0x32, 0x19, 0x11, 0x01, 0x21, 0x51, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x11, 0x32, 0x87, 0x11, 0x74, 0x11, 0xB6, 0x19, 0xF8, 0x11, 0xF8, 0x09, 0xD8, 0x01, 0xD8, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0x01, 0xD9, 0x87, 0x01, 0xF9, 0x0A, 0x19, 0x12, 0x19, 0x11, 0xF7, 0x11, 0x74, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x8A, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, + 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x05, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x05, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x20, 0xEE, 0x01, 0x20, 0xCD, 0x84, 0x28, 0x8C, 0x38, 0xEC, 0x7A, 0x92, 0xBC, 0x79, 0xDD, 0x5C, 0x03, 0xD4, 0xFA, 0x06, 0xD4, 0xD9, 0x80, 0xD4, 0xD8, 0x02, 0xD4, 0xB8, 0x03, 0xCC, 0xB8, 0x80, 0xD4, 0xD8, 0x05, 0xCC, 0xD8, 0x01, 0xCC, 0xB8, 0x07, 0xCC, 0xD8, 0x80, 0xCC, 0xB8, 0x01, 0xCC, 0xD8, 0x03, 0xCC, 0xB8, 0x22, 0xD4, 0xB8, 0x09, 0xCC, 0xB8, 0x01, 0xCC, 0xD8, 0x81, 0xD4, 0xD8, 0xCC, 0xB8, 0x0A, 0xD4, 0xB8, 0x81, 0xD4, 0xD8, 0xD4, 0xB8, 0x01, 0xCC, 0xB8, 0x01, 0xD4, 0xB8, 0x12, 0xCC, 0xB8, 0x81, 0xD4, 0xD8, 0xCC, 0xB8, 0x04, 0xCC, 0xD8, 0x0C, 0xCC, 0xB8, 0x07, 0xD4, 0xB8, 0x01, 0xD4, 0xD8, 0x83, 0xD4, 0xB8, 0xD4, 0xD8, 0xCC, 0xB8, 0xD4, 0xD8, 0x09, 0xD4, 0xB8, 0x80, 0xD4, 0xD8, 0x06, 0xCC, 0xB8, 0x80, 0xD4, 0xB8, 0x02, 0xCC, 0xB8, 0x81, 0xD4, 0xB8, 0xCC, 0xB8, 0x02, 0xD4, 0xB8, 0x0F, 0xCC, 0xB8, 0x01, 0xD4, 0xB8, 0x80, 0xCC, 0xB8, 0x01, 0xD4, 0xB8, 0x0F, 0xCC, 0xB8, 0x01, 0xD4, 0xB8, + 0x01, 0xCC, 0xB8, 0x01, 0xD4, 0xB8, 0x01, 0xD4, 0x98, 0x8C, 0xD4, 0x78, 0xDC, 0x78, 0xDC, 0x58, 0xDC, 0x17, 0xDB, 0xD7, 0xD3, 0x96, 0xD3, 0x76, 0xDB, 0x56, 0xDB, 0x36, 0xDA, 0xF6, 0xD2, 0xD5, 0xDA, 0xB5, 0xDA, 0x95, 0x02, 0xD2, 0x74, 0x82, 0xD2, 0x75, 0xC2, 0x54, 0xBA, 0x34, 0x04, 0xB2, 0x14, 0x01, 0xB1, 0xF4, 0x80, 0xB9, 0xF4, 0x02, 0xB1, 0xD3, 0x84, 0xB1, 0xD2, 0xB2, 0x12, 0xCB, 0x15, 0xDB, 0xD8, 0xDC, 0x18, 0x01, 0xDC, 0x78, 0x01, 0xD4, 0x78, 0x04, 0xD4, 0x98, 0x81, 0xCC, 0xB8, 0xD4, 0x98, 0x05, 0xD4, 0xB8, 0x80, 0xCC, 0x98, 0x02, 0xD4, 0xB8, 0x83, 0xD4, 0x98, 0xD4, 0xB8, 0xD4, 0x98, 0xD4, 0xB8, 0x01, 0xD4, 0x98, 0x80, 0xD4, 0xB8, 0x01, 0xD4, 0x98, 0x05, 0xDC, 0x98, 0x80, 0xE4, 0xB8, 0x24, 0xE4, 0x98, 0x04, 0xE4, 0x78, 0x80, 0xE4, 0x77, 0x08, 0xE4, 0x57, 0x82, 0xE4, 0x37, 0xE4, 0x57, 0xDC, 0x37, 0x02, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0xA2, 0xE4, 0x58, 0xEC, 0x58, 0xEC, 0x59, 0xEC, 0x79, 0xE4, 0x7A, 0xCC, 0x3B, 0x9B, 0x7B, 0x41, 0xB7, 0x29, 0xBA, 0x22, 0x1C, 0x1A, 0x3D, 0x0A, 0x3E, 0x0A, 0x3F, 0x02, 0x3F, 0x0A, 0x3E, 0x12, 0x5E, 0x12, 0x3D, 0x11, 0xFC, 0x19, 0xDB, 0x42, 0x7D, 0x5A, 0xFE, 0x42, 0x9D, 0x32, 0x3C, 0x19, 0xFA, 0x0A, 0x5A, 0x0B, 0x7C, 0x0C, 0x9E, 0x0D, 0x9F, 0x0E, 0x3F, 0x0E, 0xDF, 0x0F, 0x3F, 0x0F, 0x7F, 0x0F, 0xBF, 0x0F, 0xDF, 0x0F, 0xFF, 0x01, 0x07, 0xDF, 0x9B, 0x07, 0xBF, 0x07, 0x9F, 0x0F, 0x9F, 0x17, 0x7F, 0x27, 0x7F, 0x37, 0x3F, 0x46, 0xDE, 0x76, 0xBF, 0x74, 0xB9, 0x5A, 0x71, 0x9A, 0x94, 0xB2, 0x33, + 0xB9, 0xD3, 0xC9, 0xB3, 0xC1, 0x73, 0xC9, 0x73, 0xC9, 0x93, 0xC9, 0x94, 0xC1, 0x93, 0xC1, 0xB4, 0xB9, 0xD4, 0xB2, 0x15, 0x99, 0xF5, 0x69, 0x32, 0x59, 0x11, 0x51, 0x52, 0x51, 0x93, 0x49, 0x72, 0x01, 0x41, 0x72, 0x01, 0x39, 0x51, 0x82, 0x39, 0x31, 0x39, 0x51, 0x39, 0x72, 0x02, 0x31, 0x51, 0x81, 0x31, 0x50, 0x29, 0x30, 0x01, 0x31, 0x51, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x29, 0x31, 0x09, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8E, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x19, 0x94, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x73, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x20, 0xF0, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, + 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x87, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x20, 0xEF, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, + 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x86, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x20, 0xEF, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x87, 0x21, 0x31, 0x21, 0x11, 0x21, 0x32, 0x19, 0x12, 0x11, 0x13, 0x11, 0x54, 0x11, 0x95, 0x11, 0xB7, 0x01, 0x09, 0xD8, 0x81, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x87, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0x97, 0x11, 0x96, 0x19, 0x95, 0x11, 0x13, 0x10, 0xF1, 0x11, 0x11, 0x01, 0x19, 0x31, 0x81, 0x21, 0x32, 0x19, 0x32, 0x01, 0x11, 0x32, 0x83, 0x11, 0x74, 0x11, 0xD6, 0x11, 0xD8, 0x09, 0xD8, 0x06, 0x01, 0xD9, 0x87, 0x01, 0xB8, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xB7, 0x19, 0x95, 0x19, 0x53, 0x19, 0x12, 0x01, 0x21, 0x31, 0x84, 0x19, 0x11, 0x10, 0xF1, 0x11, 0x33, 0x11, 0x95, 0x11, 0xB6, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xF9, 0x06, 0x01, 0xD9, 0x87, 0x09, 0xD8, 0x11, 0xF8, 0x11, 0xD7, 0x19, 0xF6, 0x11, 0x53, 0x19, 0x31, 0x21, 0x31, 0x21, 0x52, 0x01, 0x19, 0x31, 0x01, + 0x11, 0x32, 0x85, 0x11, 0x54, 0x19, 0xD6, 0x1A, 0x18, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xB8, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x02, 0x01, 0xD9, 0x86, 0x0A, 0x19, 0x12, 0x19, 0x11, 0xF7, 0x11, 0x74, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x0B, 0x21, 0x30, 0x08, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x20, 0xEE, 0x87, 0x20, 0xCD, 0x20, 0xAC, 0x20, 0x6B, 0x51, 0xAF, 0xB4, 0x59, 0xCC, 0xDA, 0xD4, 0xDA, 0xD4, 0xFA, 0x02, 0xD4, 0xD9, 0x80, 0xD4, 0xB9, 0x02, 0xD4, 0xB8, 0x01, 0xCC, 0xB8, 0x01, 0xCC, 0x98, 0x80, 0xCC, 0xB8, 0x04, 0xCC, 0x98, 0x0D, 0xCC, 0x97, 0x80, 0xC4, 0x97, 0x01, 0xCC, 0x97, 0x80, 0xC4, 0x97, 0x0B, 0xCC, 0x97, 0x05, 0xCC, 0x77, 0x04, 0xCC, 0x97, 0x01, 0xCC, 0x77, 0x80, 0xCC, 0x97, 0x01, 0xCC, 0x77, 0x01, 0xCC, 0x97, 0x07, 0xCC, 0x77, 0x80, 0xCC, 0x98, 0x02, 0xCC, 0x97, 0x01, 0xCC, 0x77, 0x1D, 0xCC, 0x97, + 0x80, 0xCC, 0x77, 0x02, 0xCC, 0x97, 0x82, 0xCC, 0x98, 0xCC, 0x97, 0xCC, 0x98, 0x01, 0xCC, 0x77, 0x01, 0xCC, 0x98, 0x80, 0xCC, 0x77, 0x01, 0xCC, 0x98, 0x81, 0xCC, 0x97, 0xCC, 0x98, 0x0B, 0xCC, 0x97, 0x01, 0xCC, 0x98, 0x01, 0xCC, 0x97, 0x80, 0xCC, 0x77, 0x02, 0xCC, 0x97, 0x81, 0xCC, 0x77, 0xCC, 0x97, 0x01, 0xCC, 0x98, 0x0D, 0xCC, 0x97, 0x01, 0xCC, 0x77, 0x05, 0xCC, 0x97, 0x80, 0xCC, 0x77, 0x03, 0xCC, 0x97, 0x01, 0xCC, 0x77, 0x08, 0xCC, 0x97, 0x01, 0xCC, 0x77, 0x01, 0xCC, 0x97, 0x80, 0xCC, 0x77, 0x06, 0xCC, 0x97, 0x01, 0xCC, 0x77, 0x01, 0xCC, 0x97, 0x80, 0xCC, 0x77, 0x08, 0xCC, 0x97, 0x80, 0xCC, 0x77, 0x05, 0xCC, 0x97, 0x02, 0xCC, 0x98, 0x81, 0xCC, 0x78, 0xCC, 0x77, 0x04, 0xCC, 0x78, 0x90, 0xCC, 0x98, 0xCC, 0x78, 0xD4, 0x78, 0xD4, 0x58, 0xD4, 0x78, 0xD4, 0x38, 0xD4, 0x17, 0xD3, 0xD7, 0xD3, 0xB7, 0xD3, 0x76, 0xD3, 0x56, 0xD3, 0x36, 0xDB, 0x16, 0xDA, 0xF6, 0xD2, 0xB5, 0xDA, 0x95, 0xDA, 0x75, 0x01, 0xD2, 0x54, 0x83, 0xD2, 0x34, 0xD2, 0x54, 0xCA, 0x34, 0xC2, 0x14, 0x01, 0xB9, 0xF3, 0x03, 0xB9, 0xF4, 0x02, 0xB9, 0xD3, 0x91, 0xB1, 0xB2, 0xA9, 0xD2, 0xB2, 0x12, 0xCB, 0x36, 0xDB, 0xF8, 0xDC, 0x38, 0xD4, 0x37, 0xD4, 0x58, 0xD4, 0x57, 0xD4, 0x78, 0xD4, 0x57, 0xCC, 0x57, 0xD4, 0x78, 0xCC, 0x78, 0xCC, 0x77, 0xCC, 0x98, 0xCC, 0x78, 0xCC, 0x77, 0x02, 0xCC, 0x78, 0x80, 0xCC, 0x98, 0x02, 0xCC, 0x78, 0x02, 0xCC, 0x77, 0x05, 0xCC, 0x78, 0x04, 0xD4, 0x78, 0x80, 0xDC, 0x78, 0x04, 0xDC, 0x77, 0x81, 0xE4, 0x78, 0xE4, 0x77, 0x01, 0xDC, 0x77, + 0x81, 0xE4, 0x77, 0xDC, 0x77, 0x01, 0xE4, 0x77, 0x80, 0xDC, 0x77, 0x02, 0xE4, 0x77, 0x81, 0xDC, 0x77, 0xE4, 0x98, 0x01, 0xE4, 0x77, 0x06, 0xE4, 0x78, 0x82, 0xDC, 0x57, 0xE4, 0x78, 0xDC, 0x78, 0x01, 0xDC, 0x77, 0x83, 0xDC, 0x78, 0xDC, 0x77, 0xDC, 0x78, 0xDC, 0x57, 0x01, 0xDC, 0x77, 0x01, 0xE4, 0x77, 0x80, 0xE4, 0x57, 0x01, 0xE4, 0x77, 0x0A, 0xE4, 0x57, 0x82, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x82, 0xE4, 0x57, 0xE4, 0x37, 0xE4, 0x57, 0x01, 0xEC, 0x58, 0x9D, 0xEC, 0x59, 0xDC, 0x5A, 0xCC, 0x3B, 0x9B, 0x9B, 0x49, 0xF8, 0x31, 0xDA, 0x22, 0x1C, 0x1A, 0x5D, 0x0A, 0x3E, 0x0A, 0x5F, 0x02, 0x5F, 0x02, 0x5E, 0x0A, 0x5E, 0x12, 0x5E, 0x1A, 0x5E, 0x1A, 0x3D, 0x2A, 0x3C, 0x4A, 0xFF, 0x3A, 0x9D, 0x2A, 0x5C, 0x19, 0xFB, 0x0A, 0x3A, 0x0A, 0xFC, 0x0B, 0xFD, 0x0D, 0x3F, 0x0D, 0xFF, 0x0E, 0xBF, 0x0F, 0x3F, 0x0F, 0x9F, 0x0F, 0xBF, 0x01, 0x0F, 0xFF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x8C, 0x0F, 0x9F, 0x17, 0x9F, 0x27, 0x7F, 0x2F, 0x3F, 0x46, 0xDF, 0x6E, 0x9F, 0x74, 0xFA, 0x5A, 0x51, 0x92, 0x93, 0xAA, 0x13, 0xB9, 0xD3, 0xC1, 0xB3, 0xC1, 0x73, 0x01, 0xC9, 0x93, 0x8A, 0xC9, 0xB4, 0xC1, 0x93, 0xC1, 0xB4, 0xB9, 0xF4, 0xB2, 0x15, 0x9A, 0x15, 0x69, 0x32, 0x59, 0x12, 0x51, 0x52, 0x51, 0x72, 0x49, 0x92, 0x01, 0x41, 0x72, 0x81, 0x39, 0x52, 0x41, 0x72, 0x01, 0x39, 0x51, 0x81, 0x39, 0x71, 0x31, 0x71, 0x01, 0x31, 0x51, 0x80, 0x31, 0x50, 0x01, 0x29, 0x50, 0x0A, 0x29, 0x30, 0x01, 0x21, 0x30, 0x04, 0x29, 0x30, 0x01, + 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x8E, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0x53, 0x19, 0x74, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF6, 0x19, 0xB5, 0x11, 0x73, 0x11, 0x12, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x20, 0xF0, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x84, 0x20, 0xEF, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, + 0x0F, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x89, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x50, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x05, 0x21, 0x10, 0x0A, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, + 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x90, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x10, 0xF2, 0x11, 0x13, 0x11, 0x54, 0x11, 0x96, 0x09, 0x96, 0x09, 0x97, 0x09, 0xD8, 0x09, 0xD9, 0x09, 0xF9, 0x01, 0x09, 0xD9, 0x01, 0x09, 0xB8, 0x86, 0x11, 0xD8, 0x11, 0x96, 0x19, 0x95, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x52, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x87, 0x11, 0x74, 0x11, 0xB6, 0x09, 0xD7, 0x09, 0xD8, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x02, 0x01, 0xD9, 0x8C, 0x01, 0xB8, 0x09, 0xB7, 0x11, 0x96, 0x19, 0x95, 0x19, 0x53, 0x19, 0x12, 0x19, 0x11, 0x18, 0xF1, 0x10, 0xF1, 0x11, 0x53, 0x11, 0x95, 0x11, 0xD7, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xF9, 0x01, 0x01, 0xD9, 0x85, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0xD7, 0x21, 0xF7, 0x11, 0x12, 0x11, 0x11, 0x01, 0x21, 0x52, 0x01, 0x19, 0x32, 0x85, 0x09, 0x12, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xF8, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x88, 0x01, 0xDA, 0x01, 0xFA, 0x0A, 0x19, 0x09, 0xF8, 0x11, 0xD7, 0x11, 0x74, 0x19, 0x53, + 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x07, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x8B, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x0B, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x20, 0xEE, 0x85, 0x20, 0xCD, 0x20, 0x8C, 0x41, 0x0D, 0x93, 0x55, 0xD5, 0x1C, 0xD4, 0xFA, 0x01, 0xD4, 0xD9, 0x80, 0xD4, 0xB9, 0x02, 0xD4, 0x98, 0x01, 0xCC, 0x98, 0x80, 0xCC, 0x78, 0x01, 0xCC, 0x98, 0x80, 0xCC, 0x78, 0x05, 0xC4, 0x77, 0x80, 0xC4, 0x57, 0x12, 0xC4, 0x77, 0x80, 0xC4, 0x57, 0x02, 0xC4, 0x77, 0x83, 0xC4, 0x57, 0xC4, 0x77, 0xC4, 0x57, 0xC4, 0x77, 0x05, 0xC4, 0x57, 0x02, 0xC4, 0x56, 0x01, 0xC4, 0x57, 0x81, 0xC4, 0x77, 0xC4, 0x56, 0x06, 0xC4, 0x57, 0x80, 0xC4, 0x56, 0x0D, 0xC4, 0x57, 0x83, 0xC4, 0x77, 0xC4, 0x57, 0xC4, 0x77, 0xC4, 0x57, 0x02, 0xC4, 0x77, 0x87, 0xC4, 0x57, 0xC4, 0x77, 0xC4, 0x56, 0xC4, 0x77, 0xC4, 0x56, 0xC4, 0x77, 0xC4, 0x57, 0xC4, 0x77, 0x03, 0xC4, 0x57, 0x81, 0xC4, 0x56, 0xC4, 0x57, 0x02, 0xC4, 0x56, 0x0D, 0xC4, 0x57, 0x80, 0xC4, 0x77, 0x04, 0xC4, 0x57, 0x01, 0xC4, 0x77, 0x01, + 0xC4, 0x57, 0x02, 0xC4, 0x77, 0x85, 0xC4, 0x57, 0xC4, 0x77, 0xC4, 0x56, 0xC4, 0x77, 0xC4, 0x57, 0xC4, 0x77, 0x07, 0xC4, 0x57, 0x80, 0xC4, 0x56, 0x08, 0xC4, 0x57, 0x82, 0xC4, 0x77, 0xC4, 0x57, 0xC4, 0x56, 0x08, 0xC4, 0x57, 0x82, 0xC4, 0x56, 0xC4, 0x57, 0xC4, 0x56, 0x1A, 0xC4, 0x57, 0x01, 0xC4, 0x56, 0x02, 0xC4, 0x57, 0x80, 0xC4, 0x56, 0x06, 0xC4, 0x57, 0x80, 0xC4, 0x56, 0x12, 0xC4, 0x57, 0x84, 0xCC, 0x78, 0xC4, 0x57, 0xCC, 0x57, 0xCC, 0x58, 0xCC, 0x57, 0x01, 0xCC, 0x37, 0x8E, 0xD4, 0x17, 0xD3, 0xF7, 0xD3, 0xB7, 0xD3, 0x76, 0xD3, 0x36, 0xD3, 0x16, 0xD2, 0xF5, 0xD2, 0xD5, 0xD2, 0xB5, 0xDA, 0xB5, 0xDA, 0x95, 0xDA, 0x75, 0xDA, 0x55, 0xD2, 0x34, 0xD2, 0x14, 0x01, 0xCA, 0x14, 0x83, 0xC9, 0xF4, 0xC1, 0xF3, 0xC1, 0xD3, 0xC1, 0xF3, 0x03, 0xB9, 0xD3, 0x88, 0xB9, 0xF3, 0xB1, 0xB2, 0xB1, 0xD2, 0xA9, 0xF2, 0xBA, 0xB4, 0xDC, 0x18, 0xD4, 0x38, 0xD4, 0x17, 0xCC, 0x17, 0x04, 0xCC, 0x37, 0x02, 0xCC, 0x57, 0x01, 0xC4, 0x57, 0x80, 0xC4, 0x37, 0x07, 0xC4, 0x57, 0x80, 0xC4, 0x37, 0x01, 0xC4, 0x57, 0x80, 0xCC, 0x57, 0x01, 0xC4, 0x57, 0x04, 0xCC, 0x57, 0x80, 0xD4, 0x58, 0x02, 0xD4, 0x57, 0x04, 0xDC, 0x57, 0x02, 0xDC, 0x77, 0x07, 0xDC, 0x57, 0x01, 0xDC, 0x77, 0x80, 0xE4, 0x77, 0x02, 0xDC, 0x77, 0x03, 0xDC, 0x57, 0x80, 0xE4, 0x77, 0x0D, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x57, 0x08, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x81, 0xDC, 0x37, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x81, 0xE4, 0x37, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x01, 0xEC, 0x58, 0x88, 0xEC, + 0x59, 0xE4, 0x5A, 0xCC, 0x1A, 0x9B, 0x9A, 0x52, 0x18, 0x31, 0xFA, 0x2A, 0x3C, 0x1A, 0x5D, 0x0A, 0x5E, 0x01, 0x0A, 0x7F, 0x80, 0x02, 0x7F, 0x01, 0x0A, 0x7E, 0x90, 0x12, 0x7E, 0x1A, 0x5D, 0x22, 0x5D, 0x32, 0xBE, 0x32, 0x9E, 0x22, 0x5D, 0x12, 0x1B, 0x0A, 0x5B, 0x02, 0xBB, 0x03, 0x7C, 0x04, 0x7D, 0x0D, 0x9F, 0x16, 0xBF, 0x0F, 0x3F, 0x0F, 0x9F, 0x0F, 0xBF, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x99, 0x07, 0x9F, 0x17, 0x9F, 0x1F, 0x7F, 0x2F, 0x3F, 0x46, 0xDE, 0x6E, 0xBF, 0x7D, 0x3B, 0x52, 0x51, 0x92, 0x73, 0xAA, 0x13, 0xB9, 0xF3, 0xC1, 0xB3, 0xC9, 0xB3, 0xC9, 0xB4, 0xC9, 0x93, 0xC1, 0x93, 0xC1, 0xB3, 0xB9, 0xB3, 0xB9, 0xF4, 0xB2, 0x15, 0x9A, 0x36, 0x69, 0x52, 0x59, 0x32, 0x51, 0x32, 0x51, 0x73, 0x41, 0x52, 0x01, 0x41, 0x72, 0x01, 0x39, 0x52, 0x02, 0x39, 0x51, 0x80, 0x31, 0x71, 0x01, 0x31, 0x51, 0x01, 0x31, 0x50, 0x04, 0x29, 0x50, 0x04, 0x29, 0x30, 0x04, 0x21, 0x30, 0x04, 0x29, 0x30, 0x02, 0x29, 0x10, 0x09, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x0B, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x51, 0x01, 0x19, 0x11, 0x8A, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x21, 0xD5, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, + 0x80, 0x21, 0x50, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x06, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, + 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x09, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x84, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x06, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x87, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x09, 0xB8, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xD9, + 0x01, 0x09, 0xD9, 0x88, 0x09, 0xD8, 0x11, 0xD8, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x10, 0xF1, 0x19, 0x11, 0x19, 0x31, 0x19, 0x51, 0x01, 0x19, 0x31, 0x86, 0x11, 0x32, 0x11, 0x53, 0x11, 0x94, 0x11, 0xD6, 0x09, 0xB7, 0x01, 0xB8, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x91, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0xD9, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0xB7, 0x11, 0xB6, 0x19, 0x74, 0x19, 0x53, 0x19, 0x12, 0x19, 0x11, 0x10, 0xD1, 0x11, 0x33, 0x11, 0x95, 0x11, 0xB7, 0x09, 0xB7, 0x01, 0xB8, 0x09, 0xF9, 0x03, 0x01, 0xD9, 0x82, 0x01, 0xFA, 0x02, 0x1A, 0x01, 0xF9, 0x01, 0x01, 0xD9, 0x85, 0x01, 0xB8, 0x09, 0xB8, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x12, 0x19, 0x11, 0x01, 0x19, 0x32, 0x87, 0x11, 0x11, 0x11, 0x32, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xD7, 0x09, 0xF8, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x88, 0x01, 0xFA, 0x09, 0xFA, 0x09, 0xF9, 0x09, 0xF8, 0x11, 0xB6, 0x19, 0x74, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x10, 0x29, 0x30, 0x83, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x29, 0x2F, 0x02, 0x29, + 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x89, 0x20, 0xEF, 0x20, 0xEE, 0x28, 0xCD, 0x20, 0x6B, 0x51, 0x8F, 0xB4, 0x38, 0xD4, 0xDB, 0xD4, 0xFA, 0xDC, 0xD9, 0xD4, 0xB9, 0x01, 0xD4, 0x98, 0x02, 0xCC, 0x78, 0x03, 0xC4, 0x77, 0x84, 0xBC, 0x76, 0xBC, 0x56, 0xB4, 0x35, 0xAC, 0x35, 0xAC, 0x15, 0x16, 0xAC, 0x14, 0x80, 0xAB, 0xF4, 0x08, 0xAC, 0x14, 0x03, 0xAB, 0xF4, 0x08, 0xAC, 0x14, 0x04, 0xAB, 0xF4, 0x80, 0xAC, 0x14, 0x05, 0xAB, 0xF4, 0x81, 0xAC, 0x14, 0xAB, 0xF4, 0x08, 0xAC, 0x14, 0x82, 0xAB, 0xF4, 0xAC, 0x14, 0xAB, 0xF4, 0x0A, 0xAC, 0x14, 0x80, 0xAB, 0xF4, 0x01, 0xAC, 0x14, 0x80, 0xAB, 0xF4, 0x09, 0xAC, 0x14, 0x80, 0xAB, 0xF4, 0x17, 0xAC, 0x14, 0x02, 0xAB, 0xF4, 0x02, 0xAC, 0x14, 0x03, 0xAB, 0xF4, 0x82, 0xAC, 0x14, 0xAB, 0xF4, 0xAC, 0x14, 0x01, 0xAB, 0xF4, 0x03, 0xAC, 0x14, 0x09, 0xAB, 0xF4, 0x80, 0xAC, 0x14, 0x0D, 0xAB, 0xF4, 0x02, 0xAC, 0x14, 0x02, 0xAB, 0xF4, 0x80, 0xAC, 0x14, 0x03, 0xAB, 0xF4, 0x80, 0xAC, 0x14, 0x0A, 0xAB, 0xF4, 0x82, 0xA3, 0xF4, 0xAB, 0xF4, 0xA3, 0xF4, 0x04, 0xAB, 0xF4, 0x80, 0xA3, 0xF4, 0x0D, 0xAB, 0xF4, 0x03, 0xAC, 0x15, 0x01, 0xAB, 0xF5, 0x03, 0xB4, 0x15, 0x8E, 0xB3, 0xF5, 0xBB, 0xD5, 0xC3, 0xD5, 0xCB, 0x96, 0xD3, 0x56, 0xD3, 0x15, 0xD2, 0xF5, 0xD2, 0xD5, 0xD2, 0xB4, 0xD2, 0x95, 0xDA, 0x95, 0xDA, 0x75, 0xD2, 0x55, 0xD2, 0x34, 0xC9, 0xF4, 0x03, 0xC9, 0xF3, 0x02, 0xC1, 0xD3, 0x01, 0xB9, 0xD3, 0x01, 0xB9, 0xB3, 0x89, 0xB1, 0xB2, 0xA9, 0xD2, 0xA1, 0xF1, 0xB2, 0xD3, 0xDC, 0xB9, 0xDC, + 0xD9, 0xCC, 0xB8, 0xCC, 0x97, 0xC4, 0x76, 0xBC, 0x35, 0x03, 0xB4, 0x15, 0x04, 0xAB, 0xF4, 0x80, 0xAB, 0xD4, 0x0A, 0xAB, 0xF4, 0x80, 0xAB, 0xF5, 0x01, 0xAB, 0xF4, 0x81, 0xAC, 0x15, 0xAB, 0xF4, 0x01, 0xB4, 0x15, 0x82, 0xBC, 0x15, 0xC4, 0x36, 0xCC, 0x37, 0x01, 0xD4, 0x37, 0x05, 0xDC, 0x57, 0x80, 0xDC, 0x77, 0x07, 0xDC, 0x57, 0x80, 0xE4, 0x57, 0x0D, 0xDC, 0x57, 0x84, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x36, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x05, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x02, 0xE4, 0x57, 0x82, 0xE4, 0x37, 0xDC, 0x37, 0xE4, 0x37, 0x04, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x02, 0xE4, 0x37, 0x01, 0xEC, 0x58, 0x89, 0xE4, 0x59, 0xDC, 0x5A, 0xCC, 0x1A, 0x9B, 0x7A, 0x5A, 0x58, 0x3A, 0x3A, 0x2A, 0x5C, 0x1A, 0x7D, 0x12, 0x7E, 0x0A, 0x7F, 0x01, 0x0A, 0x9F, 0x80, 0x02, 0x9E, 0x01, 0x0A, 0x7E, 0x81, 0x12, 0x9E, 0x1A, 0x7D, 0x01, 0x22, 0x9E, 0x89, 0x1A, 0x7D, 0x12, 0x5C, 0x0A, 0x7C, 0x02, 0x9C, 0x03, 0x1C, 0x03, 0xFC, 0x05, 0x1E, 0x16, 0x9F, 0x17, 0x3F, 0x17, 0x9F, 0x01, 0x0F, 0xBF, 0x80, 0x0F, 0xDF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x99, 0x0F, 0xBF, 0x17, 0x9F, 0x1F, 0x7F, 0x2F, 0x3F, 0x46, 0xFF, 0x6E, 0xBF, 0x85, 0x9D, 0x52, 0x71, 0x92, 0x93, 0xAA, 0x33, 0xB9, 0xB3, 0xC1, 0xB3, 0xC9, 0xB3, 0xC9, 0x93, 0xC1, 0x73, 0xC1, 0x93, 0xC1, 0xB3, 0xC1, 0xD4, 0xB9, 0xF4, 0xB2, 0x15, 0x9A, 0x15, 0x69, 0x32, 0x59, 0x32, 0x51, 0x32, 0x49, 0x52, 0x41, 0x52, 0x01, 0x41, 0x72, 0x80, 0x39, 0x72, 0x03, 0x39, 0x51, + 0x81, 0x31, 0x71, 0x31, 0x51, 0x01, 0x31, 0x50, 0x05, 0x29, 0x50, 0x03, 0x29, 0x30, 0x06, 0x21, 0x30, 0x05, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x08, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x50, 0x21, 0x51, 0x21, 0x31, 0x19, 0x10, 0x01, 0x19, 0x11, 0x8E, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x21, 0xF6, 0x22, 0x17, 0x21, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x19, 0x10, 0x21, 0x30, 0x19, 0x30, 0x21, 0x30, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x50, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, + 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x05, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x19, 0x11, 0x02, 0x21, 0x11, 0x03, 0x21, 0x31, 0x81, 0x19, 0x10, 0x21, 0x30, 0x19, 0x21, 0x31, 0x03, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x07, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, + 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x8A, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x11, 0x10, 0xF1, 0x11, 0x32, 0x11, 0x53, 0x11, 0x75, 0x11, 0x76, 0x11, 0xB7, 0x09, 0xD8, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0xB8, 0x01, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x85, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x10, 0xF1, 0x02, 0x19, 0x31, 0x88, 0x11, 0x31, 0x11, 0x32, 0x09, 0x32, 0x09, 0x74, 0x11, 0xD6, 0x09, 0xD7, 0x09, 0xF8, 0x01, 0xD8, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x8F, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0xB7, 0x19, 0x96, 0x19, 0x53, 0x11, 0x12, 0x10, 0xF1, 0x10, 0xD1, 0x11, 0x33, 0x19, 0x95, 0x11, 0x96, 0x09, 0xB7, 0x09, 0xF9, 0x02, 0x01, 0xD9, 0x03, 0x01, 0xFA, 0x03, 0x01, 0xD9, 0x8F, 0x09, 0xD8, 0x11, 0xD8, 0x19, 0xD7, 0x11, 0x54, 0x11, 0x33, 0x19, 0x52, 0x11, 0x11, 0x10, 0xF1, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD7, 0x09, 0xB7, 0x09, 0xF9, 0x01, 0xD9, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xB9, 0x03, 0x01, 0xDA, 0x86, 0x01, 0xD9, 0x09, 0xF9, 0x12, 0x18, 0x11, 0x96, 0x19, 0x53, 0x19, 0x11, 0x19, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, + 0x29, 0x30, 0x21, 0x30, 0x03, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x0F, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x09, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x20, 0xEE, 0x85, 0x20, 0xAD, 0x20, 0x6B, 0x72, 0x52, 0xCC, 0xDB, 0xD4, 0xFB, 0xD4, 0xDA, 0x01, 0xD4, 0xB9, 0x80, 0xD4, 0x98, 0x02, 0xCC, 0x78, 0x01, 0xC4, 0x57, 0x87, 0xBC, 0x56, 0xBC, 0x97, 0xC4, 0xD7, 0xC5, 0x17, 0xD5, 0xBA, 0xE6, 0x7C, 0xF7, 0x1F, 0xFF, 0x9F, 0x3C, 0xFF, 0xBF, 0x80, 0xFF, 0x9F, 0x1F, 0xFF, 0xBF, 0x80, 0xFF, 0x9F, 0x79, 0xFF, 0xBF, 0x81, 0xFF, 0x9F, 0xFF, 0xBF, 0x01, 0xFF, 0x9F, 0x80, 0xFF, 0xBF, 0x01, 0xFF, 0x9F, 0x85, 0xFF, 0x7F, 0xFF, 0x1F, 0xE4, 0x99, 0xC3, 0x14, 0xD2, 0xF5, 0xD2, 0xD5, 0x01, 0xD2, 0xB5, 0x86, 0xD2, 0x95, 0xD2, 0x75, 0xD2, 0x54, 0xD2, 0x14, 0xCA, 0x14, 0xD2, 0x14, 0xC9, 0xF3, 0x02, 0xC9, 0xD3, 0x02, 0xC1, 0xD3, 0x02, 0xB9, 0xB3, 0x86, 0xB1, 0x92, 0xA9, 0xB1, 0xA1, 0xF1, 0xBB, 0x95, 0xFE, 0x5E, 0xFF, 0x3F, 0xFF, 0x7F, 0x0B, 0xFF, 0x9F, 0x0F, 0xFF, 0xBF, 0x80, 0xFF, 0x9F, 0x01, 0xFF, 0xBF, 0x84, 0xFF, 0x9F, 0xFF, 0x5F, 0xCD, 0x39, 0xC4, 0x56, 0xCC, 0x36, 0x01, 0xD4, 0x37, 0x0D, 0xDC, 0x57, + 0x80, 0xE4, 0x57, 0x12, 0xDC, 0x57, 0x03, 0xDC, 0x36, 0x04, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x82, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xEC, 0x58, 0x8F, 0xEC, 0x59, 0xDC, 0x5A, 0xC3, 0xFA, 0xA3, 0x7A, 0x5A, 0x58, 0x42, 0x5A, 0x2A, 0x5C, 0x1A, 0x7D, 0x12, 0x7E, 0x0A, 0x9F, 0x02, 0x9F, 0x0A, 0xBF, 0x02, 0xBE, 0x02, 0x9E, 0x0A, 0x9E, 0x0A, 0xBE, 0x01, 0x12, 0xBE, 0x81, 0x1A, 0xBE, 0x12, 0x7E, 0x01, 0x0A, 0x9D, 0x89, 0x02, 0xBC, 0x02, 0xFC, 0x03, 0x9C, 0x04, 0x9D, 0x16, 0x1F, 0x16, 0xFF, 0x17, 0x7F, 0x17, 0xBF, 0x0F, 0xBF, 0x0F, 0xDF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x8D, 0x0F, 0xBF, 0x17, 0xBF, 0x1F, 0x7F, 0x2F, 0x5F, 0x3E, 0xDE, 0x66, 0x9F, 0x7D, 0x9C, 0x52, 0x72, 0x8A, 0x73, 0xAA, 0x33, 0xB1, 0xB3, 0xC1, 0x93, 0xC9, 0xB4, 0xC1, 0x93, 0x01, 0xC9, 0x93, 0x88, 0xC1, 0x93, 0xC1, 0xB3, 0xB9, 0xF4, 0xB2, 0x15, 0x9A, 0x35, 0x69, 0x32, 0x59, 0x12, 0x51, 0x52, 0x49, 0x52, 0x01, 0x49, 0x72, 0x83, 0x41, 0x72, 0x39, 0x72, 0x39, 0x51, 0x39, 0x71, 0x01, 0x39, 0x51, 0x80, 0x31, 0x71, 0x01, 0x31, 0x51, 0x01, 0x31, 0x50, 0x01, 0x29, 0x50, 0x81, 0x29, 0x30, 0x29, 0x50, 0x05, 0x29, 0x30, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x30, 0x29, 0x50, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, + 0x2F, 0x03, 0x29, 0x0F, 0x8D, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x87, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x19, 0x74, 0x19, 0xB5, 0x19, 0xD6, 0x01, 0x19, 0xB6, 0x82, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x88, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, + 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x84, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x19, 0x12, 0x03, 0x19, 0x32, 0x01, 0x21, 0x32, 0x07, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x52, 0x81, 0x19, 0x32, 0x19, 0x52, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x03, 0x19, 0x32, 0x80, 0x19, 0x52, 0x02, 0x19, 0x32, 0x02, 0x19, 0x31, 0x06, 0x19, 0x32, 0x01, 0x19, 0x31, 0x03, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x10, 0x04, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x0F, + 0x29, 0x30, 0x01, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x11, 0x84, 0x19, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x01, 0x09, 0xD8, 0x94, 0x09, 0xD9, 0x01, 0xB8, 0x01, 0xD9, 0x01, 0xB9, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x10, 0xF1, 0x21, 0x32, 0x21, 0x52, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x94, 0x11, 0xB6, 0x09, 0xD7, 0x02, 0x01, 0xD8, 0x01, 0x01, 0xD9, 0x84, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x8C, 0x09, 0xD9, 0x09, 0xB8, 0x19, 0xF8, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x32, 0x11, 0x12, 0x10, 0xD1, 0x11, 0x33, 0x11, 0x95, 0x11, 0x96, 0x11, 0xD8, 0x09, 0xD9, 0x02, 0x01, 0xD9, 0x80, 0x01, 0xDA, 0x03, 0x01, 0xFA, 0x8E, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xB9, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xD8, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x09, 0x11, 0x11, 0x32, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xD8, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x04, 0x01, 0xDA, 0x86, + 0x09, 0xFA, 0x09, 0xF9, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x74, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x08, 0x21, 0x10, 0x89, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x06, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x20, 0xEF, 0x20, 0xEE, 0x28, 0xCD, 0x20, 0x6B, 0x7A, 0xD3, 0xCC, 0xFB, 0xD4, 0xDA, 0x01, 0xD4, 0xB9, 0x8D, 0xD4, 0x99, 0xD4, 0x98, 0xCC, 0x78, 0xC4, 0x57, 0xC4, 0x77, 0xBC, 0x77, 0xB4, 0x36, 0xD5, 0x59, 0xEE, 0x7D, 0xFE, 0xFF, 0xFF, 0x5F, 0xFF, 0x7F, 0xFF, 0x9F, 0xFF, 0xBF, 0x02, 0xF7, 0xBF, 0x0B, 0xF7, 0xDF, 0x82, 0xF7, 0xBF, 0xF7, 0xDF, 0xF7, 0xBF, 0x21, 0xF7, 0xDF, 0x80, 0xF7, 0xBF, 0x1B, 0xF7, 0xDF, 0x01, 0xF7, 0xBF, 0x01, 0xF7, 0xDF, 0x80, 0xF7, 0xBF, 0x20, 0xF7, 0xDF, 0x80, 0xF7, 0xBF, 0x61, 0xF7, 0xDF, 0x07, 0xF7, 0xBF, 0x8B, 0xFF, 0x9F, 0xFF, 0x7F, 0xD4, 0x57, 0xC2, 0xD4, 0xCA, 0xB4, 0xCA, 0x94, 0xD2, 0x94, 0xD2, 0x95, 0xD2, 0x75, 0xD2, 0x54, 0xCA, 0x34, 0xCA, 0x13, 0x03, 0xC9, 0xF3, 0x01, 0xC9, 0xD3, 0x02, 0xC1, 0xD3, 0x01, 0xB9, 0xB3, 0x87, 0xB1, 0xB2, 0xB1, + 0xD2, 0xA1, 0xF1, 0xC3, 0xD6, 0xFE, 0xBF, 0xFF, 0x7F, 0xFF, 0xBF, 0xFF, 0xDF, 0x04, 0xF7, 0xDF, 0x80, 0xF7, 0xBF, 0x02, 0xF7, 0xDF, 0x01, 0xF7, 0xBF, 0x14, 0xF7, 0xDF, 0x84, 0xFF, 0xBF, 0xFF, 0x5F, 0xD5, 0x79, 0xC4, 0x36, 0xCC, 0x56, 0x01, 0xD4, 0x57, 0x82, 0xD4, 0x37, 0xDC, 0x57, 0xDC, 0x77, 0x06, 0xDC, 0x57, 0x80, 0xE4, 0x57, 0x0A, 0xDC, 0x57, 0x80, 0xE4, 0x57, 0x07, 0xDC, 0x57, 0x81, 0xDC, 0x36, 0xDC, 0x56, 0x03, 0xDC, 0x36, 0x81, 0xE4, 0x57, 0xDC, 0x37, 0x04, 0xE4, 0x57, 0x80, 0xDC, 0x37, 0x03, 0xE4, 0x37, 0x82, 0xE4, 0x57, 0xE4, 0x37, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x04, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x8D, 0xE4, 0x57, 0xEC, 0x58, 0xEC, 0x78, 0xE4, 0x59, 0xDC, 0x59, 0xC3, 0xF9, 0x9B, 0x7A, 0x5A, 0x78, 0x42, 0x7A, 0x2A, 0x7B, 0x1A, 0x7D, 0x12, 0x9E, 0x0A, 0x9E, 0x0A, 0xBF, 0x01, 0x0A, 0xDF, 0x01, 0x02, 0xBE, 0x83, 0x02, 0x9E, 0x0A, 0xBE, 0x12, 0xDF, 0x12, 0xBF, 0x01, 0x0A, 0x9E, 0x01, 0x02, 0xBD, 0x8A, 0x02, 0xFC, 0x03, 0x5C, 0x04, 0x1C, 0x0D, 0x9E, 0x16, 0xBF, 0x17, 0x5F, 0x17, 0x9F, 0x17, 0xBF, 0x0F, 0xDF, 0x07, 0xBF, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x8A, 0x17, 0xBF, 0x1F, 0x7F, 0x2F, 0x3F, 0x3E, 0xFF, 0x66, 0xBF, 0x7D, 0xDD, 0x52, 0x92, 0x8A, 0x93, 0xAA, 0x13, 0xB1, 0xB3, 0xC1, 0xB3, 0x01, 0xC9, 0xB3, 0x8B, 0xC9, 0x93, 0xC9, 0xB3, 0xC1, 0xB3, 0xC1, 0xB4, 0xB9, 0xD4, 0xB2, 0x15, 0x91, 0xF5, 0x69, 0x52, 0x59, 0x32, 0x51, 0x52, 0x51, 0x72, 0x49, 0x72, 0x01, 0x41, 0x72, 0x81, 0x39, 0x51, 0x39, 0x72, 0x02, 0x39, 0x71, + 0x02, 0x31, 0x51, 0x02, 0x31, 0x50, 0x80, 0x29, 0x50, 0x08, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x88, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x8D, 0x21, 0x51, 0x21, 0x32, 0x19, 0x32, 0x19, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x11, 0x96, 0x19, 0xB6, 0x22, 0x17, 0x19, 0xB5, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x03, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, + 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x84, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x86, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x06, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x8E, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x08, 0xF2, 0x03, 0x10, 0xF2, 0x02, 0x11, 0x12, 0x80, 0x11, 0x11, 0x01, 0x08, 0xF1, 0x80, 0x11, 0x12, 0x10, 0x08, 0xF1, 0x85, 0x08, 0xD1, 0x08, 0xF1, 0x11, 0x11, 0x10, 0xF1, 0x08, 0xF1, 0x11, 0x11, 0x01, 0x08, 0xF1, 0x80, 0x11, 0x12, 0x01, 0x09, 0x12, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x01, 0x19, 0x32, 0x02, 0x19, 0x31, 0x03, 0x21, 0x10, + 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x89, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x87, 0x29, 0x31, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x11, 0x96, 0x01, 0x11, 0xD8, 0x82, 0x09, 0xD8, 0x01, 0xB8, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x91, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x19, 0x33, 0x19, 0x12, 0x10, 0xF1, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB6, 0x09, 0xD7, 0x01, 0xD8, 0x02, 0x01, 0xF9, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x82, 0x01, 0xFA, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x8C, 0x01, 0xB8, 0x09, 0xB8, 0x09, 0xB7, 0x11, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x08, 0xF1, 0x08, 0xD1, 0x11, 0x33, 0x11, 0x95, 0x11, 0xD7, 0x11, 0xF8, 0x09, 0xD8, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x02, 0x01, 0xFA, 0x81, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x8D, 0x09, 0xD9, 0x11, 0xF8, 0x11, + 0xB7, 0x09, 0x34, 0x11, 0x13, 0x11, 0x32, 0x08, 0xF1, 0x09, 0x13, 0x11, 0x74, 0x19, 0xD7, 0x11, 0xD8, 0x12, 0x19, 0x09, 0xF9, 0x01, 0xD9, 0x07, 0x01, 0xDA, 0x88, 0x09, 0xFA, 0x01, 0xD9, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0x75, 0x19, 0x53, 0x19, 0x32, 0x19, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x87, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x0E, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x09, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x20, 0xEE, 0x84, 0x20, 0xCD, 0x28, 0x8B, 0x8B, 0x14, 0xD5, 0x1B, 0xD4, 0xDA, 0x01, 0xD4, 0xB9, 0x87, 0xD4, 0x99, 0xD4, 0x78, 0xCC, 0x78, 0xC4, 0x57, 0xBC, 0x56, 0xBC, 0xB7, 0xDD, 0xFB, 0xFF, 0x7F, 0x01, 0xFF, 0x9F, 0x80, 0xF7, 0x9F, 0x03, 0xF7, 0xBF, 0x04, 0xEF, 0xDF, 0x01, 0xEF, 0xFF, 0x09, 0xEF, 0xDF, 0x80, 0xEF, 0xBF, 0x04, 0xEF, 0xDF, 0x80, 0xEF, 0xBF, 0x08, 0xEF, 0xDF, 0x80, 0xEF, 0xFF, 0x7F, 0xEF, 0xDF, 0x0D, 0xEF, 0xDF, 0x80, 0xEF, 0xFF, 0x0A, 0xEF, 0xDF, 0x80, 0xEF, 0xFF, 0x03, 0xEF, 0xDF, 0x80, 0xEF, 0xFF, 0x18, 0xEF, 0xDF, 0x01, 0xF7, + 0xDF, 0x80, 0xEF, 0xBF, 0x04, 0xF7, 0xBF, 0x89, 0xFF, 0x7F, 0xCC, 0x17, 0xBA, 0x93, 0xC2, 0x73, 0xCA, 0x54, 0xCA, 0x74, 0xD2, 0x74, 0xD2, 0x54, 0xD2, 0x34, 0xCA, 0x13, 0x03, 0xC9, 0xF3, 0x01, 0xC9, 0xD3, 0x01, 0xC1, 0xD3, 0x01, 0xC1, 0xB3, 0x88, 0xB9, 0xB3, 0xB1, 0x92, 0xA9, 0xB1, 0x99, 0xD0, 0xB3, 0x74, 0xFF, 0x3F, 0xFF, 0x9F, 0xFF, 0xBF, 0xF7, 0xBF, 0x0A, 0xF7, 0xDF, 0x81, 0xEF, 0xDF, 0xF7, 0xDF, 0x01, 0xEF, 0xDF, 0x01, 0xF7, 0xDF, 0x05, 0xEF, 0xDF, 0x02, 0xEF, 0xFF, 0x04, 0xEF, 0xDF, 0x01, 0xF7, 0xDF, 0x88, 0xF7, 0xBF, 0xFF, 0xBF, 0xFF, 0x9F, 0xDD, 0x9A, 0xC4, 0x56, 0xCC, 0x36, 0xD4, 0x36, 0xD4, 0x37, 0xDC, 0x37, 0x12, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x03, 0xDC, 0x57, 0x83, 0xE4, 0x57, 0xDC, 0x57, 0xDC, 0x36, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x37, 0x06, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x80, 0xDC, 0x37, 0x02, 0xE4, 0x37, 0x80, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x80, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xEC, 0x58, 0x8A, 0xE4, 0x59, 0xDC, 0x59, 0xC3, 0xF9, 0x9B, 0x79, 0x62, 0x98, 0x42, 0x9A, 0x2A, 0x7B, 0x1A, 0x9D, 0x12, 0xBE, 0x0A, 0xBF, 0x0A, 0xDF, 0x01, 0x0A, 0xFF, 0x81, 0x02, 0xDF, 0x0A, 0xFF, 0x01, 0x02, 0xBE, 0x81, 0x0A, 0xDE, 0x0A, 0xDF, 0x02, 0x02, 0xBE, 0x89, 0x02, 0xDD, 0x02, 0xFD, 0x03, 0x3C, 0x03, 0xBC, 0x04, 0xFD, 0x16, 0x3F, 0x1F, 0x3F, 0x17, 0x9F, 0x17, 0xBF, 0x0F, 0xBF, 0x04, 0x07, 0xBF, 0x8D, 0x0F, 0x9F, 0x1F, + 0x7F, 0x27, 0x5F, 0x3E, 0xFF, 0x5E, 0xBF, 0x7D, 0xFD, 0x5B, 0x34, 0x8A, 0x93, 0xAA, 0x33, 0xB9, 0xD3, 0xC1, 0xB3, 0xC1, 0x93, 0xC9, 0x93, 0xC9, 0xB3, 0x01, 0xC1, 0x93, 0x86, 0xC1, 0xD4, 0xB9, 0xF4, 0xAA, 0x15, 0x91, 0xF5, 0x69, 0x32, 0x59, 0x52, 0x51, 0x53, 0x01, 0x49, 0x72, 0x01, 0x41, 0x72, 0x82, 0x39, 0x51, 0x39, 0x71, 0x39, 0x51, 0x01, 0x39, 0x71, 0x01, 0x31, 0x71, 0x80, 0x31, 0x51, 0x01, 0x31, 0x50, 0x03, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x05, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x89, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x19, 0x74, 0x11, 0x75, 0x11, 0x96, 0x22, 0x17, 0x21, 0xF7, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x10, 0x02, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, + 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x8D, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x84, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x03, 0x21, 0x10, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x10, + 0x09, 0x13, 0x09, 0x34, 0x03, 0x09, 0x13, 0x01, 0x09, 0x33, 0x80, 0x09, 0x13, 0x01, 0x09, 0x33, 0x01, 0x09, 0x13, 0x80, 0x09, 0x33, 0x01, 0x09, 0x13, 0x06, 0x09, 0x33, 0x01, 0x09, 0x13, 0x04, 0x09, 0x33, 0x01, 0x11, 0x33, 0x05, 0x11, 0x53, 0x80, 0x09, 0x53, 0x01, 0x11, 0x54, 0x01, 0x09, 0x53, 0x81, 0x09, 0x33, 0x11, 0x33, 0x01, 0x11, 0x12, 0x83, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x01, 0x21, 0x31, 0x86, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x03, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x11, 0x87, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x11, 0x54, 0x11, 0x96, 0x11, 0xB7, 0x09, 0xD8, 0x09, 0xB8, 0x01, 0x09, 0xD9, 0x80, 0x01, 0xB8, 0x01, 0x09, 0xD9, 0x85, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0x96, 0x11, 0x75, 0x11, 0x13, 0x11, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x86, 0x19, 0x11, 0x11, 0x12, 0x11, 0x53, 0x11, 0x75, 0x11, 0xD7, 0x09, 0xD7, 0x01, 0xB8, 0x02, 0x01, + 0xD9, 0x01, 0x01, 0xFA, 0x82, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x91, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0xD7, 0x19, 0xB6, 0x11, 0x33, 0x11, 0x12, 0x08, 0xD2, 0x11, 0x13, 0x19, 0x96, 0x19, 0xD7, 0x09, 0xD8, 0x01, 0xD8, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xDA, 0x04, 0x01, 0xFA, 0x02, 0x01, 0xD9, 0x8F, 0x09, 0xD9, 0x12, 0x19, 0x11, 0xD7, 0x11, 0x75, 0x11, 0x34, 0x11, 0x33, 0x08, 0xF2, 0x09, 0x13, 0x11, 0x75, 0x11, 0xD7, 0x11, 0xF8, 0x09, 0xD9, 0x09, 0xF9, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x88, 0x01, 0xD9, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0x95, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x0E, 0x29, 0x30, 0x0A, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x20, 0xEE, 0x8F, 0x20, 0xCD, 0x28, 0x8C, 0x7A, 0xD4, 0xD5, 0x1B, 0xD4, 0xDA, 0xDC, 0xB9, 0xDC, 0x99, 0xD4, 0x98, 0xD4, 0x78, 0xCC, 0x78, + 0xC4, 0x77, 0xB4, 0x56, 0xD5, 0x9A, 0xFF, 0x1F, 0xFF, 0x9F, 0xF7, 0xBF, 0x01, 0xF7, 0xDF, 0x06, 0xEF, 0xDF, 0x81, 0xE7, 0xDF, 0xEF, 0xDF, 0x01, 0xEF, 0xFF, 0x04, 0xE7, 0xDF, 0x02, 0xEF, 0xDF, 0x82, 0xE7, 0xDF, 0xEF, 0xDF, 0xE7, 0xDF, 0x01, 0xEF, 0xDF, 0x80, 0xE7, 0xDF, 0x03, 0xEF, 0xDF, 0x80, 0xE7, 0xDF, 0x03, 0xEF, 0xDF, 0x81, 0xEF, 0xFF, 0xE7, 0xDF, 0x17, 0xEF, 0xDF, 0x80, 0xEF, 0xFF, 0x01, 0xEF, 0xDF, 0x02, 0xE7, 0xDF, 0x01, 0xEF, 0xDF, 0x01, 0xE7, 0xDF, 0x84, 0xEF, 0xFF, 0xE7, 0xDF, 0xEF, 0xFF, 0xE7, 0xDF, 0xEF, 0xFF, 0x05, 0xEF, 0xDF, 0x06, 0xE7, 0xDF, 0x81, 0xEF, 0xDF, 0xE7, 0xDF, 0x10, 0xEF, 0xDF, 0x02, 0xE7, 0xDF, 0x01, 0xEF, 0xDF, 0x02, 0xE7, 0xDF, 0x06, 0xEF, 0xDF, 0x80, 0xEF, 0xFF, 0x08, 0xEF, 0xDF, 0x08, 0xE7, 0xDF, 0x09, 0xEF, 0xDF, 0x01, 0xE7, 0xDF, 0x01, 0xEF, 0xDF, 0x06, 0xE7, 0xDF, 0x80, 0xEF, 0xDF, 0x02, 0xE7, 0xDF, 0x06, 0xEF, 0xDF, 0x01, 0xE7, 0xDF, 0x19, 0xEF, 0xFF, 0x04, 0xEF, 0xDF, 0x01, 0xEF, 0xFF, 0x03, 0xE7, 0xFF, 0x80, 0xEF, 0xFF, 0x0D, 0xEF, 0xDF, 0x80, 0xF7, 0xDF, 0x01, 0xEF, 0xBF, 0x01, 0xF7, 0xBF, 0x84, 0xFF, 0x7F, 0xCB, 0xF6, 0xBA, 0x72, 0xC2, 0x53, 0xCA, 0x53, 0x01, 0xCA, 0x54, 0x80, 0xD2, 0x54, 0x01, 0xCA, 0x14, 0x02, 0xC9, 0xF3, 0x01, 0xC9, 0xD3, 0x01, 0xC1, 0xD3, 0x89, 0xC1, 0xB3, 0xC1, 0x93, 0xB9, 0xB3, 0xB9, 0x92, 0xB1, 0x92, 0xA1, 0xB1, 0xA2, 0xB2, 0xFE, 0xBF, 0xFF, 0x9F, 0xFF, 0xDF, 0x03, 0xF7, 0xDF, 0x12, 0xEF, 0xDF, 0x81, 0xEF, 0xFF, 0xE7, 0xDF, 0x07, 0xEF, 0xFF, 0x02, 0xEF, + 0xDF, 0x86, 0xF7, 0xDF, 0xFF, 0xBF, 0xFF, 0x7F, 0xD5, 0x99, 0xBC, 0x35, 0xCC, 0x36, 0xD4, 0x36, 0x01, 0xD4, 0x37, 0x80, 0xDC, 0x37, 0x09, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x03, 0xE4, 0x57, 0x02, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x06, 0xE4, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x80, 0xDC, 0x37, 0x04, 0xE4, 0x37, 0x03, 0xDC, 0x37, 0x80, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xEC, 0x58, 0x88, 0xE4, 0x58, 0xDC, 0x39, 0xBB, 0xD9, 0x9B, 0x7A, 0x62, 0x98, 0x42, 0x9A, 0x2A, 0x9C, 0x1A, 0xBD, 0x12, 0xDE, 0x01, 0x0A, 0xDF, 0x01, 0x02, 0xDF, 0x03, 0x02, 0xFF, 0x03, 0x02, 0xDF, 0x01, 0x02, 0xDE, 0x88, 0x02, 0xFD, 0x03, 0x1C, 0x03, 0x7C, 0x04, 0x5C, 0x0D, 0xDE, 0x1F, 0x3F, 0x1F, 0x7F, 0x17, 0x9F, 0x0F, 0xBF, 0x04, 0x07, 0xBF, 0x8B, 0x0F, 0x9F, 0x1F, 0x9F, 0x27, 0x5F, 0x3F, 0x1F, 0x56, 0xBF, 0x7E, 0x1E, 0x5B, 0x54, 0x8A, 0x93, 0xA2, 0x12, 0xB1, 0xD3, 0xC1, 0xB3, 0xC1, 0x93, 0x01, 0xC9, 0x93, 0x88, 0xC9, 0xB4, 0xC1, 0xB3, 0xB9, 0xB3, 0xBA, 0x15, 0xB2, 0x35, 0x91, 0xD4, 0x69, 0x32, 0x59, 0x52, 0x51, 0x52, 0x01, 0x49, 0x72, 0x01, 0x41, 0x72, 0x84, 0x41, 0x71, 0x39, 0x51, 0x39, 0x71, 0x39, 0x72, 0x31, 0x71, 0x03, 0x31, 0x51, 0x80, 0x31, 0x50, 0x0B, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, + 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x0C, 0x21, 0x2F, 0x93, 0x19, 0x0F, 0x21, 0x2F, 0x21, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x19, 0x54, 0x11, 0x75, 0x11, 0x96, 0x21, 0xF8, 0x22, 0x17, 0x11, 0x95, 0x11, 0x53, 0x19, 0x52, 0x19, 0x31, 0x21, 0x11, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x88, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x0A, 0x21, 0x10, 0x80, 0x29, + 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x08, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x22, 0x59, 0x03, 0x1A, 0x18, 0x80, 0x1A, 0x17, 0x01, 0x1A, 0x18, 0x06, 0x22, 0x18, 0x80, 0x21, 0xF8, 0x05, 0x22, 0x18, 0x83, 0x19, 0xF7, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x01, 0x21, 0xF8, 0x81, 0x22, 0x18, 0x21, 0xF8, 0x01, 0x21, 0xF7, 0x02, 0x19, 0xF7, 0x80, 0x19, 0xD7, 0x08, 0x19, 0xF7, 0x85, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x11, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x8B, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x86, + 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x88, 0x21, 0x10, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x19, 0x53, 0x11, 0x74, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xD8, 0x01, 0x09, 0xD8, 0x01, 0x01, 0xB8, 0x86, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xF9, 0x11, 0xF8, 0x19, 0xD7, 0x11, 0x75, 0x09, 0x12, 0x01, 0x10, 0xF1, 0x89, 0x19, 0x11, 0x21, 0x51, 0x21, 0x52, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x09, 0x96, 0x09, 0xB8, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xF9, 0x02, 0x01, 0xD9, 0x01, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x8E, 0x01, 0xD9, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x34, 0x08, 0xF2, 0x08, 0xD2, 0x09, 0x13, 0x19, 0x95, 0x19, 0xD7, 0x11, 0xD8, 0x12, 0x19, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xFA, 0x80, 0x02, 0x1A, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x8C, 0x01, 0xD9, 0x09, 0xF9, 0x11, 0xF9, 0x11, 0xD7, 0x11, 0x96, 0x09, 0x34, 0x08, 0xF3, 0x08, 0xF2, 0x09, 0x33, 0x11, 0x95, 0x11, 0xD7, 0x11, 0xD8, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x04, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x86, 0x01, 0xD9, 0x09, 0xF9, 0x12, 0x19, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x03, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, + 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x06, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x85, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x09, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x05, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x20, 0xEE, 0x20, 0xCE, 0x20, 0x8C, 0x72, 0x52, 0xCC, 0xFB, 0xD4, 0xDA, 0xD4, 0xB9, 0xD4, 0x98, 0x01, 0xD4, 0x78, 0x84, 0xCC, 0x58, 0xC4, 0x57, 0xBC, 0x76, 0xE6, 0x5C, 0xFF, 0x9F, 0x01, 0xF7, 0xBF, 0x01, 0xEF, 0xDF, 0x83, 0xEF, 0xFF, 0xEF, 0xDF, 0xEF, 0xFF, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x05, 0xE7, 0xDF, 0x03, 0xE7, 0xFF, 0x05, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x16, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x0D, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x12, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x03, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x1F, 0xE7, 0xDF, 0x85, 0xE7, 0xFF, 0xE7, 0xDF, 0xE7, 0xFF, 0xE7, 0xDF, 0xE7, 0xFF, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x80, 0xE7, 0xDF, 0x02, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x2C, 0xE7, 0xDF, 0x05, 0xE7, 0xFF, 0x05, 0xE7, 0xDF, 0x02, 0xE7, 0xFF, 0x02, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x03, 0xE7, 0xFF, 0x80, 0xE7, 0xDF, 0x02, + 0xE7, 0xFF, 0x07, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x81, 0xEF, 0xFF, 0xE7, 0xDF, 0x01, 0xEF, 0xDF, 0x02, 0xEF, 0xBF, 0x01, 0xF7, 0xBF, 0x83, 0xFF, 0x5F, 0xC3, 0xD6, 0xBA, 0x52, 0xC2, 0x53, 0x01, 0xCA, 0x54, 0x82, 0xD2, 0x54, 0xCA, 0x34, 0xCA, 0x13, 0x03, 0xC9, 0xF3, 0x80, 0xC9, 0xD3, 0x01, 0xC1, 0xD3, 0x01, 0xC1, 0xB3, 0x87, 0xC1, 0x93, 0xB9, 0x92, 0xB1, 0x92, 0xA1, 0xB1, 0x91, 0xD0, 0xFE, 0xDF, 0xFF, 0x9F, 0xFF, 0xBF, 0x02, 0xF7, 0xDF, 0x05, 0xEF, 0xDF, 0x06, 0xE7, 0xDF, 0x01, 0xEF, 0xFF, 0x80, 0xE7, 0xDF, 0x01, 0xEF, 0xDF, 0x03, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x80, 0xE7, 0xDF, 0x04, 0xE7, 0xFF, 0x8C, 0xEF, 0xFF, 0xE7, 0xDF, 0xEF, 0xDF, 0xEF, 0xFF, 0xEF, 0xDF, 0xEF, 0xBF, 0xF7, 0xBF, 0xFF, 0x9F, 0xD5, 0x59, 0xC4, 0x56, 0xCC, 0x56, 0xD4, 0x37, 0xD4, 0x36, 0x01, 0xD4, 0x37, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x08, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x03, 0xDC, 0x57, 0x05, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x02, 0xE4, 0x57, 0x07, 0xDC, 0x37, 0x82, 0xE4, 0x37, 0xDC, 0x37, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x8B, 0xE4, 0x58, 0xEC, 0x58, 0xE4, 0x59, 0xDC, 0x39, 0xBB, 0xF9, 0x9B, 0x9A, 0x62, 0xB9, 0x42, 0x9A, 0x2A, 0xBC, 0x1A, 0xBD, 0x12, 0xDE, 0x0A, 0xDF, 0x02, 0x02, 0xDF, 0x01, 0x03, 0x1F, 0x05, 0x02, 0xFF, 0x01, 0x02, 0xFE, 0x89, 0x03, 0x1E, 0x02, 0xFD, 0x03, 0x5C, 0x03, 0xFC, 0x05, 0x3D, 0x27, + 0x1F, 0x1F, 0x7F, 0x1F, 0xBF, 0x17, 0xBF, 0x0F, 0xBF, 0x02, 0x07, 0xDF, 0x97, 0x07, 0xBF, 0x0F, 0x9F, 0x17, 0x7F, 0x27, 0x5F, 0x37, 0x3F, 0x56, 0xDF, 0x7E, 0x3E, 0x63, 0x96, 0x82, 0x93, 0xA2, 0x13, 0xBA, 0x14, 0xC1, 0xB3, 0xC1, 0x73, 0xC1, 0x93, 0xC1, 0x73, 0xC9, 0xB4, 0xC1, 0xB3, 0xB9, 0xB4, 0xB9, 0xD4, 0xB2, 0x35, 0x91, 0xF5, 0x69, 0x52, 0x61, 0x52, 0x51, 0x52, 0x01, 0x49, 0x72, 0x81, 0x41, 0x92, 0x41, 0x72, 0x02, 0x39, 0x71, 0x04, 0x31, 0x51, 0x02, 0x31, 0x50, 0x03, 0x29, 0x30, 0x80, 0x29, 0x50, 0x03, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x06, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x86, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x0E, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8D, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x54, 0x11, 0x55, 0x19, 0xD7, 0x22, 0x18, 0x19, 0xB6, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x20, 0xEF, 0x21, 0x0F, 0x29, + 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x10, 0x02, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x09, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x04, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x09, 0xD8, 0x83, 0x09, 0xB8, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0xD8, 0x02, 0x11, 0xD7, + 0x85, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0xD8, 0x11, 0xB7, 0x03, 0x11, 0xD8, 0x82, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xD8, 0x01, 0x11, 0xD7, 0x02, 0x11, 0xD8, 0x83, 0x19, 0xF8, 0x11, 0xD7, 0x19, 0xD8, 0x11, 0xD8, 0x05, 0x11, 0xD7, 0x81, 0x11, 0xF7, 0x11, 0xD7, 0x02, 0x11, 0xF7, 0x01, 0x11, 0xD7, 0x80, 0x19, 0xD7, 0x01, 0x22, 0x18, 0x82, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x33, 0x01, 0x19, 0x32, 0x83, 0x19, 0x11, 0x19, 0x31, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x8A, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x87, 0x21, 0x10, 0x19, 0x11, 0x19, 0x12, 0x19, 0x33, 0x19, 0x74, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x01, 0x09, 0xD8, 0x81, 0x09, 0xD9, 0x01, 0xB8, 0x01, 0x09, 0xD9, 0x83, 0x09, 0xD8, 0x11, 0xD8, 0x19, 0xD7, 0x11, 0x54, 0x01, 0x11, 0x12, 0x8E, 0x18, 0xF1, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, + 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0xB6, 0x11, 0xD8, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xF9, 0x01, 0xD9, 0x04, 0x01, 0xFA, 0x80, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x8C, 0x09, 0xB8, 0x11, 0xF9, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x34, 0x08, 0xF2, 0x08, 0xD2, 0x09, 0x13, 0x11, 0x75, 0x19, 0xD7, 0x11, 0xD9, 0x09, 0xD9, 0x09, 0xF9, 0x02, 0x01, 0xD9, 0x82, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x8F, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xF9, 0x12, 0x19, 0x11, 0xD8, 0x11, 0x96, 0x09, 0x34, 0x09, 0x13, 0x08, 0xF3, 0x09, 0x34, 0x11, 0x95, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x89, 0x01, 0xBA, 0x01, 0xB9, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x19, 0x11, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x86, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x8A, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x09, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, + 0x2F, 0x29, 0x30, 0x09, 0x29, 0x2F, 0x87, 0x21, 0x0F, 0x20, 0xEE, 0x20, 0xCE, 0x28, 0x8C, 0x41, 0x2E, 0xD5, 0x1C, 0xD4, 0xDA, 0xD4, 0xB9, 0x01, 0xD4, 0x98, 0x86, 0xD4, 0x78, 0xCC, 0x57, 0xC4, 0x77, 0xBC, 0x76, 0xF6, 0xDE, 0xFF, 0xBF, 0xF7, 0xDF, 0x01, 0xEF, 0xDF, 0x01, 0xE7, 0xFF, 0x81, 0xE7, 0xDF, 0xE7, 0xFF, 0x02, 0xE7, 0xDF, 0x07, 0xE7, 0xFF, 0x02, 0xDF, 0xFF, 0x02, 0xDF, 0xDF, 0x03, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x03, 0xE7, 0xDF, 0x80, 0xDF, 0xDF, 0x01, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x06, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x03, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x06, 0xE7, 0xDF, 0x81, 0xE7, 0xFF, 0xE7, 0xDF, 0x06, 0xE7, 0xFF, 0x01, 0xDF, 0xDF, 0x80, 0xE7, 0xDF, 0x03, 0xDF, 0xDF, 0x01, 0xE7, 0xFF, 0x82, 0xDF, 0xDF, 0xE7, 0xFF, 0xDF, 0xDF, 0x01, 0xE7, 0xDF, 0x80, 0xDF, 0xDF, 0x03, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x01, 0xDF, 0xDF, 0x80, 0xE7, 0xFF, 0x01, 0xDF, 0xFF, 0x81, 0xE7, 0xFF, 0xDF, 0xDF, 0x0C, 0xE7, 0xDF, 0x82, 0xE7, 0xFF, 0xE7, 0xDF, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x04, 0xDF, 0xFF, 0x81, 0xE7, 0xFF, 0xE7, 0xDF, 0x01, 0xDF, 0xDF, 0x01, 0xE7, 0xDF, 0x83, 0xE7, 0xFF, 0xDF, 0xDF, 0xDF, 0xFF, 0xDF, 0xDF, 0x05, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x09, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x0C, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x03, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x05, 0xE7, 0xDF, 0x81, 0xE7, 0xFF, 0xE7, 0xDF, 0x02, 0xDF, 0xDF, 0x02, 0xE7, 0xDF, 0x0B, 0xE7, 0xFF, 0x01, + 0xE7, 0xDF, 0x07, 0xE7, 0xFF, 0x01, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x02, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x05, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x03, 0xEF, 0xDF, 0x85, 0xF7, 0xDF, 0xF7, 0xBF, 0xFF, 0x5F, 0xC3, 0x75, 0xBA, 0x52, 0xC2, 0x53, 0x02, 0xCA, 0x34, 0x83, 0xCA, 0x13, 0xC9, 0xF3, 0xCA, 0x13, 0xC9, 0xF3, 0x04, 0xC1, 0xD3, 0x01, 0xC1, 0xB3, 0x88, 0xB9, 0x92, 0xB1, 0x92, 0xA9, 0x91, 0x99, 0xD0, 0xE5, 0x3B, 0xFF, 0x7F, 0xFF, 0xBF, 0xF7, 0xBF, 0xF7, 0xDF, 0x04, 0xEF, 0xDF, 0x80, 0xEF, 0xFF, 0x01, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x80, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x05, 0xE7, 0xDF, 0x83, 0xE7, 0xFF, 0xE7, 0xDF, 0xE7, 0xFF, 0xE7, 0xDF, 0x05, 0xE7, 0xFF, 0x02, 0xE7, 0xDF, 0x02, 0xE7, 0xFF, 0x01, 0xEF, 0xFF, 0x8A, 0xEF, 0xDF, 0xF7, 0xDF, 0xF7, 0xBF, 0xFF, 0x7F, 0xD5, 0x79, 0xBC, 0x56, 0xCC, 0x56, 0xD4, 0x37, 0xD4, 0x57, 0xD4, 0x37, 0xDC, 0x37, 0x0B, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x57, 0x06, 0xE4, 0x57, 0x04, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x02, 0xDC, 0x37, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x04, 0xE4, 0x57, 0x93, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0xE4, 0x37, 0xE4, 0x57, 0xEC, 0x58, 0xE4, 0x58, 0xE4, 0x59, 0xDC, 0x59, 0xBB, 0xF9, 0x9B, 0x9A, 0x62, 0xB9, 0x42, 0x9A, 0x2A, 0xBC, 0x22, 0xDE, 0x12, 0xDE, 0x0A, 0xFF, 0x01, 0x02, 0xDF, 0x80, 0x02, 0xFF, 0x05, + 0x03, 0x1F, 0x02, 0x02, 0xFF, 0x8A, 0x03, 0x1F, 0x03, 0x1E, 0x02, 0xFD, 0x03, 0x1C, 0x03, 0x9B, 0x04, 0xBC, 0x26, 0xDF, 0x1F, 0x5F, 0x1F, 0x9F, 0x17, 0xBF, 0x07, 0x9F, 0x03, 0x07, 0xBF, 0x8B, 0x0F, 0xBF, 0x17, 0x9F, 0x27, 0x7F, 0x37, 0x3F, 0x4E, 0xDF, 0x76, 0x3E, 0x63, 0xB6, 0x7A, 0x73, 0xAA, 0x33, 0xB1, 0xD3, 0xB9, 0xB3, 0xC1, 0x93, 0x01, 0xC9, 0x94, 0x88, 0xC1, 0x94, 0xC1, 0xB4, 0xB9, 0xB4, 0xB9, 0xD4, 0xB2, 0x15, 0x89, 0xB4, 0x69, 0x52, 0x59, 0x52, 0x51, 0x73, 0x01, 0x49, 0x72, 0x01, 0x41, 0x72, 0x01, 0x39, 0x71, 0x80, 0x39, 0x51, 0x06, 0x31, 0x51, 0x80, 0x29, 0x50, 0x09, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x85, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x19, 0x33, 0x11, 0x33, 0x11, 0x55, 0x19, 0xB7, 0x22, 0x18, 0x21, 0xF7, 0x11, 0x54, 0x11, 0x53, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x2F, + 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x0D, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x05, 0x21, 0x10, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x86, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x87, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, + 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x81, 0x09, 0xD8, 0x09, 0xB8, 0x01, 0x11, 0xD8, 0x03, 0x09, 0xB8, 0x81, 0x11, 0xB8, 0x09, 0xB8, 0x03, 0x11, 0xD8, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x81, 0x09, 0xD8, 0x09, 0xB8, 0x07, 0x11, 0xD8, 0x81, 0x09, 0xD8, 0x09, 0xD7, 0x01, 0x11, 0xF8, 0x80, 0x11, 0xD8, 0x02, 0x09, 0xD8, 0x80, 0x09, 0xF8, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xB7, 0x88, 0x11, 0xD7, 0x1A, 0x18, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x11, 0x19, 0x12, 0x19, 0x53, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xB8, 0x01, 0xB8, 0x01, 0x09, 0xD9, 0x01, 0x09, 0xD8, 0x85, 0x19, 0xF9, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x11, 0x89, 0x19, 0x31, 0x19, 0x52, 0x11, 0x11, 0x11, + 0x12, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xD8, 0x01, 0xB8, 0x01, 0xD9, 0x01, 0xB9, 0x03, 0x01, 0xFA, 0x81, 0x02, 0x1A, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x80, 0x01, 0xDA, 0x01, 0x09, 0xD9, 0x83, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0x96, 0x11, 0x34, 0x01, 0x08, 0xF2, 0x82, 0x09, 0x13, 0x11, 0x75, 0x19, 0xD7, 0x01, 0x11, 0xF9, 0x82, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x02, 0x01, 0xB9, 0x8B, 0x09, 0xD9, 0x09, 0xF9, 0x11, 0xD8, 0x09, 0x76, 0x09, 0x34, 0x00, 0xF3, 0x08, 0xF3, 0x11, 0x54, 0x11, 0x96, 0x09, 0x96, 0x11, 0xD8, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x02, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x8C, 0x01, 0xFB, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x74, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x0A, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x09, 0x29, 0x2F, 0x87, 0x21, 0x0F, 0x20, 0xEF, 0x20, 0xEE, 0x28, 0xCD, 0x38, 0xED, + 0xB4, 0x39, 0xD4, 0xDA, 0xD4, 0xB9, 0x01, 0xD4, 0x98, 0x88, 0xD4, 0x78, 0xCC, 0x77, 0xC4, 0x57, 0xBC, 0x96, 0xFF, 0x5F, 0xFF, 0xBF, 0xF7, 0xDF, 0xEF, 0xDF, 0xEF, 0xFF, 0x04, 0xE7, 0xFF, 0x01, 0xDF, 0xDF, 0x08, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x06, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x02, 0xDF, 0xFF, 0x05, 0xDF, 0xDF, 0x02, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x03, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x02, 0xE7, 0xDF, 0x81, 0xE7, 0xFF, 0xDF, 0xDF, 0x02, 0xE7, 0xFF, 0x02, 0xDF, 0xDF, 0x03, 0xDF, 0xFF, 0x02, 0xDF, 0xDF, 0x80, 0xDF, 0xFF, 0x04, 0xDF, 0xDF, 0x03, 0xDF, 0xFF, 0x01, 0xE7, 0xFF, 0x80, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x06, 0xDF, 0xDF, 0x80, 0xDF, 0xFF, 0x02, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x02, 0xDF, 0xDF, 0x08, 0xE7, 0xFF, 0x80, 0xDF, 0xDF, 0x0A, 0xDF, 0xFF, 0x03, 0xDF, 0xDF, 0x81, 0xDF, 0xFF, 0xDF, 0xDF, 0x05, 0xDF, 0xFF, 0x02, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x81, 0xDF, 0xFF, 0xE7, 0xFF, 0x04, 0xDF, 0xDF, 0x02, 0xE7, 0xDF, 0x09, 0xDF, 0xDF, 0x03, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x02, 0xE7, 0xFF, 0x01, 0xDF, 0xDF, 0x06, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x08, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x15, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x04, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x06, 0xDF, 0xFF, 0x01, 0xE7, 0xFF, 0x03, 0xE7, 0xDF, 0x02, 0xEF, 0xDF, 0x87, 0xF7, 0xBF, 0xF7, 0x9F, 0xFF, 0x5F, 0xB3, 0x13, 0xBA, 0x33, 0xC2, 0x13, 0xC2, 0x14, 0xCA, 0x34, 0x01, 0xC2, 0x13, + 0x81, 0xC1, 0xF3, 0xC9, 0xF3, 0x01, 0xC1, 0xF3, 0x03, 0xC1, 0xD3, 0x8A, 0xC1, 0xB3, 0xB9, 0x93, 0xB9, 0x92, 0xB1, 0x72, 0x99, 0x90, 0xB3, 0x54, 0xFF, 0x1F, 0xFF, 0x9F, 0xF7, 0xBF, 0xF7, 0xDF, 0xF7, 0xFF, 0x02, 0xEF, 0xDF, 0x80, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x03, 0xE7, 0xDF, 0x03, 0xE7, 0xFF, 0x80, 0xE7, 0xDF, 0x03, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x03, 0xE7, 0xFF, 0x04, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x04, 0xE7, 0xFF, 0x80, 0xEF, 0xFF, 0x01, 0xEF, 0xDF, 0x84, 0xF7, 0xBF, 0xFF, 0x9F, 0xD5, 0xBA, 0xBC, 0x76, 0xCC, 0x56, 0x02, 0xD4, 0x37, 0x80, 0xDC, 0x37, 0x0A, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x01, 0xDC, 0x37, 0x04, 0xE4, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x81, 0xDC, 0x57, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x04, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x09, 0xE4, 0x57, 0x81, 0xDC, 0x37, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xE4, 0x58, 0x89, 0xE4, 0x59, 0xDC, 0x59, 0xBC, 0x1A, 0x9B, 0xBA, 0x5A, 0xB9, 0x3A, 0x9A, 0x2A, 0xDC, 0x22, 0xFD, 0x12, 0xFE, 0x0B, 0x1F, 0x02, 0x03, 0x1F, 0x04, 0x03, 0x3F, 0x03, 0x03, 0x1F, 0x8A, 0x03, 0x3F, 0x03, 0x1E, 0x02, 0xFD, 0x03, 0x3C, 0x03, 0x7C, 0x04, 0x5C, 0x26, 0x9F, 0x1F, 0x3F, 0x1F, 0x7F, 0x17, 0x9F, 0x0F, 0xBF, 0x01, 0x07, 0xBF, 0x8B, 0x07, 0xBE, 0x07, 0xDF, 0x0F, 0xBE, 0x17, 0xBF, 0x27, 0x7F, 0x2F, 0x3F, 0x4E, 0xDF, 0x76, 0x7F, 0x5B, 0xB6, 0x72, 0x52, 0xA2, 0x13, 0xB9, 0xF3, 0x01, 0xC1, 0xB3, 0x8A, 0xC9, 0x94, + 0xC9, 0xB4, 0xC1, 0x94, 0xC1, 0xB4, 0xB9, 0xB4, 0xB9, 0xF5, 0xB2, 0x15, 0x89, 0x94, 0x61, 0x12, 0x59, 0x52, 0x51, 0x73, 0x01, 0x49, 0x72, 0x01, 0x41, 0x92, 0x02, 0x39, 0x71, 0x05, 0x31, 0x51, 0x80, 0x31, 0x31, 0x01, 0x29, 0x51, 0x80, 0x29, 0x30, 0x01, 0x29, 0x50, 0x06, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x04, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x50, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x22, 0x18, 0x21, 0xF7, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x10, 0x01, 0x29, 0x30, 0x86, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x04, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, + 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x09, 0x21, 0x10, 0x80, 0x29, 0x30, 0x07, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x09, 0xD8, 0x84, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x02, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x01, 0x11, 0xD8, 0x83, 0x09, 0xD8, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xB8, 0x05, 0x09, 0xD8, 0x01, 0x11, 0xD8, 0x02, 0x09, 0xD8, 0x80, 0x11, 0xD9, + 0x02, 0x09, 0xD8, 0x82, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xF8, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x01, 0x09, 0xD8, 0x81, 0x09, 0xD9, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x81, 0x09, 0xD8, 0x1A, 0x18, 0x01, 0x11, 0xD7, 0x84, 0x11, 0x75, 0x11, 0x54, 0x11, 0x12, 0x19, 0x32, 0x19, 0x52, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x34, 0x11, 0x96, 0x01, 0x11, 0xB7, 0x01, 0x09, 0xD8, 0x88, 0x09, 0xD9, 0x01, 0xB8, 0x09, 0xB8, 0x09, 0xF9, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x54, 0x11, 0x12, 0x01, 0x10, 0xF1, 0x01, 0x19, 0x31, 0x87, 0x21, 0x52, 0x19, 0x52, 0x11, 0x11, 0x11, 0x12, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xD7, 0x01, 0xD8, 0x02, 0x01, 0xD9, 0x03, 0x01, 0xFA, 0x83, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0x09, 0xD9, 0x84, 0x09, 0xB8, 0x11, 0xF8, 0x11, 0xB6, 0x11, 0x34, 0x08, 0xF3, 0x01, 0x08, 0xF2, + 0x82, 0x11, 0x75, 0x19, 0xD7, 0x11, 0xF8, 0x01, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x8D, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0x76, 0x09, 0x14, 0x00, 0xD3, 0x08, 0xF3, 0x09, 0x54, 0x11, 0x95, 0x11, 0xB6, 0x11, 0xD8, 0x09, 0xB8, 0x09, 0xF9, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x83, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xFB, 0x02, 0x01, 0xDA, 0x87, 0x09, 0xB9, 0x11, 0xF9, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x0A, 0x29, 0x30, 0x07, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x2F, 0x86, 0x21, 0x0F, 0x20, 0xEE, 0x20, 0xCD, 0x20, 0x4B, 0x8B, 0x14, 0xD4, 0xDB, 0xD4, 0xB9, 0x01, 0xD4, 0x98, 0x85, 0xD4, 0x78, 0xCC, 0x77, 0xC4, 0x77, 0xBC, 0x96, 0xF7, 0x1F, 0xF7, 0xBF, 0x01, 0xEF, 0xDF, 0x03, 0xE7, 0xFF, 0x14, + 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x81, 0xDF, 0xDF, 0xDF, 0xFF, 0x04, 0xDF, 0xDF, 0x86, 0xE7, 0xFF, 0xE7, 0xDF, 0xDF, 0xDF, 0xE7, 0xDF, 0xE7, 0xFF, 0xE7, 0xDF, 0xE7, 0xFF, 0x01, 0xDF, 0xDF, 0x06, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x07, 0xDF, 0xFF, 0x81, 0xDF, 0xDF, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x81, 0xDF, 0xFF, 0xDF, 0xDF, 0x05, 0xDF, 0xFF, 0x82, 0xDF, 0xDF, 0xE7, 0xFF, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x82, 0xDF, 0xDF, 0xDF, 0xFF, 0xDF, 0xDF, 0x03, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x04, 0xDF, 0xFF, 0x02, 0xDF, 0xDF, 0x08, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x03, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x09, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x0A, 0xDF, 0xFF, 0x02, 0xDF, 0xDF, 0x0A, 0xDF, 0xFF, 0x0E, 0xDF, 0xDF, 0x02, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x02, 0xDF, 0xFF, 0x02, 0xDF, 0xDF, 0x04, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x0C, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x07, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x09, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x82, 0xDF, 0xFF, 0xDF, 0xDF, 0xDF, 0xFF, 0x03, 0xDF, 0xDF, 0x03, 0xDF, 0xFF, 0x80, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x01, 0xEF, 0xDF, 0x88, 0xEF, 0xBF, 0xF7, 0xBF, 0xFF, 0x9F, 0xFF, 0x1F, 0xAA, 0xB3, 0xB2, 0x13, 0xC2, 0x13, 0xC2, 0x14, 0xC2, 0x13, 0x04, 0xC1, 0xF3, 0x80, 0xC1, 0xF4, 0x02, 0xC1, 0xD3, 0x80, 0xB9, 0xB3, 0x01, 0xB9, 0x92, 0x86, 0xB1, 0x92, 0xA9, 0xB1, 0x91, 0xF0, 0xFE, 0x9F, 0xFF, 0x7F, 0xF7, 0xBF, 0xF7, 0xDF, 0x03, 0xEF, 0xDF, + 0x02, 0xE7, 0xDF, 0x81, 0xE7, 0xFF, 0xE7, 0xDF, 0x03, 0xE7, 0xFF, 0x80, 0xDF, 0xDF, 0x01, 0xE7, 0xFF, 0x81, 0xDF, 0xDF, 0xE7, 0xFF, 0x01, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x02, 0xE7, 0xFF, 0x03, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x07, 0xDF, 0xFF, 0x03, 0xE7, 0xFF, 0x01, 0xEF, 0xDF, 0x85, 0xF7, 0xBF, 0xFF, 0x9F, 0xE6, 0x3C, 0xBC, 0x55, 0xC4, 0x56, 0xCC, 0x37, 0x01, 0xD4, 0x37, 0x83, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0x07, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x37, 0x01, 0xDC, 0x37, 0x03, 0xE4, 0x57, 0x80, 0xDC, 0x57, 0x02, 0xE4, 0x57, 0x81, 0xDC, 0x37, 0xE4, 0x57, 0x02, 0xDC, 0x57, 0x03, 0xE4, 0x57, 0x80, 0xDC, 0x37, 0x0A, 0xE4, 0x57, 0x80, 0xDC, 0x57, 0x02, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xE4, 0x58, 0x89, 0xE4, 0x59, 0xDC, 0x5A, 0xC4, 0x3B, 0x93, 0xBB, 0x52, 0x98, 0x32, 0x7A, 0x2A, 0xDC, 0x1A, 0xFD, 0x0A, 0xFE, 0x0B, 0x1F, 0x01, 0x0B, 0x3F, 0x08, 0x03, 0x3F, 0xA8, 0x03, 0x1E, 0x03, 0x3F, 0x03, 0x3E, 0x03, 0x1D, 0x03, 0x3D, 0x03, 0x5C, 0x04, 0x1B, 0x15, 0xFF, 0x1F, 0x1F, 0x1F, 0x7F, 0x17, 0x9F, 0x0F, 0x9F, 0x07, 0xBE, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xDE, 0x0F, 0xBE, 0x0F, 0x9E, 0x1F, 0x7F, 0x2F, 0x3F, 0x46, 0xDE, 0x76, 0x9F, 0x5B, 0xF7, 0x72, 0x52, 0xA2, 0x33, 0xB1, 0xB3, 0xC1, 0xD4, 0xC1, 0xB3, 0xC1, 0x93, 0xC9, 0x94, 0xC9, 0xB4, 0xC1, 0x93, 0xB9, 0xB4, 0xB1, 0xD4, 0xB2, 0x36, 0x81, 0x93, 0x69, 0x52, 0x59, 0x52, 0x51, 0x72, 0x49, 0x72, 0x41, 0x72, 0x01, 0x41, 0x92, + 0x80, 0x39, 0x71, 0x01, 0x39, 0x72, 0x03, 0x31, 0x51, 0x80, 0x31, 0x31, 0x01, 0x31, 0x51, 0x83, 0x29, 0x30, 0x29, 0x51, 0x29, 0x30, 0x29, 0x50, 0x07, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x04, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8F, 0x29, 0x50, 0x29, 0x30, 0x21, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x34, 0x19, 0xB6, 0x21, 0xF8, 0x22, 0x17, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, + 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x03, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x02, 0x09, 0xD8, 0x80, 0x11, 0xD8, 0x01, 0x09, 0xB8, 0x82, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0xD8, 0x02, 0x09, 0xB8, 0x80, 0x09, 0xD8, 0x02, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x06, 0x09, 0xD8, 0x80, 0x09, 0xF8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xF9, 0x02, 0x09, 0xD9, 0x80, 0x01, 0xB8, 0x01, + 0x09, 0xF9, 0x89, 0x12, 0x19, 0x09, 0xF8, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xB7, 0x09, 0x75, 0x11, 0x54, 0x11, 0x13, 0x11, 0x32, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x29, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x86, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x09, 0x96, 0x11, 0xB7, 0x02, 0x09, 0xB8, 0x80, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x85, 0x09, 0xF8, 0x11, 0xD8, 0x11, 0x96, 0x11, 0x54, 0x10, 0xF2, 0x10, 0xF1, 0x01, 0x19, 0x11, 0x02, 0x19, 0x31, 0x85, 0x11, 0x11, 0x11, 0x12, 0x11, 0x74, 0x11, 0x96, 0x09, 0xB7, 0x09, 0xF9, 0x01, 0x01, 0xD9, 0x86, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x85, 0x01, 0xB9, 0x01, 0xB8, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0x76, 0x09, 0x34, 0x01, 0x08, 0xF3, 0x85, 0x09, 0x13, 0x11, 0x95, 0x19, 0xF7, 0x11, 0xF8, 0x11, 0xF9, 0x01, 0xB9, 0x01, 0x01, 0xBA, 0x80, 0x01, 0xB9, 0x05, 0x01, 0xDA, 0x86, + 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD9, 0x11, 0xD9, 0x11, 0xB8, 0x09, 0x55, 0x09, 0x14, 0x01, 0x08, 0xF3, 0x8C, 0x09, 0x34, 0x11, 0x95, 0x11, 0xB6, 0x11, 0xD8, 0x09, 0xB8, 0x09, 0xD8, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x02, 0x1B, 0x01, 0xFA, 0x01, 0xBA, 0x02, 0x01, 0xDA, 0x85, 0x01, 0xD9, 0x11, 0xF9, 0x1A, 0x19, 0x19, 0xB6, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x88, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x84, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x0D, 0x29, 0x30, 0x05, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x20, 0xEE, 0x20, 0xCE, 0x28, 0xAC, 0x49, 0x6E, 0xDD, 0x5D, 0xD4, 0xB9, 0x01, 0xD4, 0x98, 0x86, 0xD4, 0x78, 0xCC, 0x77, 0xC4, 0x77, 0xB4, 0x76, 0xFF, 0x3F, 0xF7, 0xBF, 0xEF, 0xDF, 0x03, 0xE7, 0xFF, 0x03, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x81, 0xDF, 0xFF, 0xDF, 0xDF, 0x0C, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x03, 0xDF, 0xFF, 0x81, 0xE7, 0xFF, 0xDF, 0xDF, 0x01, 0xE7, 0xFF, 0x80, 0xDF, 0xDF, + 0x03, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x02, 0xE7, 0xDF, 0x03, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x81, 0xDF, 0xDF, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x06, 0xDF, 0xFF, 0x03, 0xDF, 0xDF, 0x83, 0xDF, 0xFF, 0xDF, 0xDF, 0xDF, 0xFF, 0xDF, 0xDF, 0x02, 0xDF, 0xFF, 0x04, 0xE7, 0xFF, 0x01, 0xDF, 0xFF, 0x80, 0xE7, 0xFF, 0x01, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x07, 0xDF, 0xFF, 0x80, 0xD7, 0xFF, 0x02, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x2F, 0xDF, 0xFF, 0x0E, 0xDF, 0xDF, 0x08, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x0B, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x23, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x05, 0xDF, 0xFF, 0x82, 0xDF, 0xDF, 0xDF, 0xFF, 0xDF, 0xDF, 0x01, 0xE7, 0xDF, 0x86, 0xEF, 0xDF, 0xEF, 0xBF, 0xF7, 0xBF, 0xFF, 0x9F, 0xFE, 0xFF, 0xFD, 0xFE, 0xBA, 0xF5, 0x01, 0xBA, 0x13, 0x80, 0xC1, 0xF4, 0x04, 0xC1, 0xF3, 0x83, 0xC1, 0xD3, 0xC1, 0xF3, 0xC1, 0xD3, 0xB9, 0xD3, 0x01, 0xB9, 0xB3, 0x87, 0xB9, 0xB2, 0xB1, 0x92, 0xA9, 0xB1, 0x99, 0xF0, 0xDC, 0xD9, 0xFF, 0x7F, 0xFF, 0x9F, 0xF7, 0xBF, 0x03, 0xEF, 0xDF, 0x03, 0xE7, 0xDF, 0x80, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x83, 0xE7, 0xFF, 0xE7, 0xDF, 0xE7, 0xFF, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x82, 0xDF, 0xDF, 0xDF, 0xFF, 0xDF, 0xDF, 0x02, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x0A, 0xDF, 0xFF, 0x84, 0xDF, 0xDF, 0xDF, 0xFF, 0xDF, 0xDF, 0xE7, 0xFF, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x8C, 0xE7, 0xDF, 0xEF, 0xDF, 0xF7, 0xBF, 0xFF, 0x9F, 0xEE, 0xBD, 0xBC, 0xB6, 0xC4, 0x56, 0xCC, 0x37, 0xD4, 0x36, + 0xD4, 0x37, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0x07, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x03, 0xE4, 0x57, 0x80, 0xDC, 0x37, 0x0F, 0xE4, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x57, 0x05, 0xE4, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xE4, 0x58, 0x8B, 0xE4, 0x59, 0xD4, 0x5A, 0xC4, 0x5C, 0x8B, 0x9A, 0x4A, 0x78, 0x32, 0x9A, 0x2A, 0xFD, 0x1B, 0x1E, 0x0A, 0xFE, 0x03, 0x1F, 0x03, 0x3F, 0x03, 0x5F, 0x02, 0x03, 0x3F, 0x80, 0x03, 0x1F, 0x02, 0x03, 0x3F, 0x01, 0x03, 0x5F, 0x02, 0x03, 0x3F, 0x88, 0x03, 0x1E, 0x03, 0x3D, 0x03, 0x5C, 0x03, 0xFC, 0x0D, 0x9E, 0x1E, 0xDF, 0x1F, 0x5F, 0x17, 0x9F, 0x0F, 0x9E, 0x02, 0x07, 0xBE, 0x8D, 0x07, 0xDE, 0x0F, 0xBE, 0x0F, 0x9E, 0x1F, 0x7F, 0x2F, 0x3E, 0x46, 0xDE, 0x6E, 0x9F, 0x64, 0x17, 0x72, 0x32, 0xA2, 0x33, 0xB1, 0xD3, 0xB9, 0xB3, 0xC1, 0x93, 0xC9, 0x94, 0x01, 0xC1, 0x94, 0x89, 0xC1, 0xB4, 0xB9, 0xB4, 0xB1, 0xD4, 0xAA, 0x15, 0x81, 0x73, 0x69, 0x52, 0x59, 0x52, 0x51, 0x73, 0x49, 0x72, 0x41, 0x72, 0x01, 0x41, 0x92, 0x01, 0x39, 0x72, 0x81, 0x31, 0x51, 0x39, 0x72, 0x04, 0x31, 0x51, 0x82, 0x31, 0x31, 0x31, 0x51, 0x29, 0x51, 0x09, 0x29, 0x30, 0x01, 0x29, 0x10, 0x06, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x21, 0x10, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, + 0x01, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x19, 0x31, 0x19, 0x12, 0x11, 0x33, 0x11, 0x34, 0x19, 0xB6, 0x22, 0x38, 0x22, 0x17, 0x11, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x11, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x06, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x06, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, + 0x10, 0x03, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x30, 0x04, 0x09, 0xD8, 0x80, 0x11, 0xD8, 0x01, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x04, 0x11, 0xD8, 0x80, 0x09, 0xB8, 0x01, 0x11, 0xD8, 0x81, 0x09, 0xB8, 0x11, 0xD8, 0x01, 0x09, 0xD8, 0x01, 0x11, 0xD8, 0x01, 0x09, 0xB8, 0x81, 0x11, 0xB8, 0x11, 0xD8, 0x01, 0x09, 0xD8, 0x01, 0x11, 0xB8, 0x01, 0x09, 0xD8, 0x84, 0x11, 0xD8, 0x09, 0xB8, 0x09, 0xD8, 0x11, 0xD8, 0x09, 0xB8, 0x03, 0x09, 0xD8, 0x81, 0x09, 0xD9, 0x09, 0xD8, 0x01, 0x09, 0xD9, 0x81, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x8A, 0x09, 0xD9, 0x09, 0xF8, 0x11, 0xD7, 0x11, 0x96, 0x09, 0x34, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x29, 0x31, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x01, + 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x91, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x11, 0x53, 0x11, 0x54, 0x11, 0x95, 0x11, 0xB7, 0x09, 0xB7, 0x01, 0x09, 0xB8, 0x81, 0x09, 0xD9, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x01, 0x11, 0xF8, 0x85, 0x11, 0xB6, 0x09, 0x34, 0x10, 0xF2, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x01, 0x19, 0x31, 0x87, 0x19, 0x11, 0x19, 0x32, 0x11, 0x12, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xD8, 0x09, 0xF8, 0x01, 0xD8, 0x01, 0x01, 0xD9, 0x80, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x89, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xB9, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x09, 0x34, 0x02, 0x08, 0xF3, 0x84, 0x11, 0x75, 0x19, 0xD7, 0x11, 0xF8, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x82, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x89, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xF9, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x76, 0x09, 0x14, 0x08, 0xF3, 0x01, 0x09, 0x13, 0x82, 0x11, 0x96, 0x11, 0xB7, 0x11, 0xF8, 0x01, 0x09, 0xD8, 0x81, 0x01, 0xB8, 0x01, 0xD9, 0x03, 0x01, 0xFA, 0x02, 0x01, 0xDA, 0x86, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xF9, 0x11, 0xF8, 0x19, 0xB6, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x19, 0x30, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, + 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x0D, 0x29, 0x30, 0x05, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x8F, 0x21, 0x0F, 0x20, 0xEE, 0x28, 0xCD, 0x30, 0xAC, 0xB4, 0x39, 0xD4, 0xDA, 0xD4, 0xB9, 0xD4, 0x98, 0xD4, 0x78, 0xCC, 0x77, 0xC4, 0x77, 0xBC, 0x97, 0xEE, 0xDE, 0xF7, 0xBF, 0xEF, 0xDF, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x19, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x02, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x04, 0xE7, 0xFF, 0x02, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x02, 0xE7, 0xDF, 0x02, 0xDF, 0xDF, 0x02, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x04, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x03, 0xDF, 0xFF, 0x03, 0xDF, 0xDF, 0x01, 0xE7, 0xFF, 0x82, 0xE7, 0xDF, 0xE7, 0xFF, 0xE7, 0xDF, 0x06, 0xE7, 0xFF, 0x80, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x83, 0xDF, 0xFF, 0xE7, 0xFF, 0xDF, 0xDF, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x09, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x0A, 0xDF, 0xFF, 0x80, 0xD7, 0xFF, 0x02, 0xDF, 0xFF, 0x01, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x03, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x01, 0xD7, 0xFF, 0x06, 0xDF, 0xFF, + 0x80, 0xD7, 0xFF, 0x03, 0xDF, 0xFF, 0x03, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x02, 0xD7, 0xDF, 0x0C, 0xDF, 0xDF, 0x01, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x03, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x80, 0xDF, 0xFF, 0x02, 0xD7, 0xFF, 0x80, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x01, 0xD7, 0xFF, 0x81, 0xDF, 0xFF, 0xD7, 0xFF, 0x01, 0xDF, 0xFF, 0x01, 0xD7, 0xFF, 0x81, 0xDF, 0xFF, 0xD7, 0xDF, 0x02, 0xD7, 0xFF, 0x80, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x83, 0xDF, 0xFF, 0xD7, 0xDF, 0xDF, 0xFF, 0xD7, 0xFF, 0x01, 0xDF, 0xFF, 0x01, 0xD7, 0xFF, 0x81, 0xDF, 0xFF, 0xDF, 0xDF, 0x04, 0xD7, 0xFF, 0x80, 0xD7, 0xDF, 0x03, 0xD7, 0xFF, 0x0D, 0xDF, 0xFF, 0x01, 0xE7, 0xDF, 0x87, 0xEF, 0xBF, 0xF7, 0x9F, 0xFF, 0x9F, 0xFF, 0x3F, 0xC4, 0x57, 0xA2, 0x92, 0xBA, 0x94, 0xB1, 0xF3, 0x01, 0xB9, 0xF3, 0x81, 0xB9, 0xD3, 0xB9, 0xF3, 0x01, 0xC1, 0xF3, 0x02, 0xC1, 0xD3, 0x80, 0xB9, 0xD3, 0x02, 0xB9, 0xB3, 0x86, 0xB1, 0x92, 0xA9, 0x91, 0x99, 0xB0, 0xA3, 0x13, 0xFE, 0xFF, 0xFF, 0x9F, 0xF7, 0xBF, 0x03, 0xEF, 0xDF, 0x05, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x82, 0xE7, 0xDF, 0xE7, 0xFF, 0xE7, 0xDF, 0x03, 0xE7, 0xFF, 0x04, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x08, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x84, 0xDF, 0xFF, 0xDF, 0xDF, 0xDF, 0xFF, 0xDF, 0xDF, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x02, 0xE7, 0xDF, 0x85, 0xEF, 0xBF, 0xF7, 0x9F, 0xF7, 0x1F, 0xC4, 0xB7, 0xC4, 0x56, 0xCC, 0x56, 0x01, 0xD4, 0x37, 0x02, 0xDC, 0x37, 0x09, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xE4, 0x57, 0x02, 0xDC, + 0x57, 0x09, 0xE4, 0x57, 0x80, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x85, 0xDC, 0x37, 0xE4, 0x37, 0xDC, 0x36, 0xE4, 0x37, 0xDC, 0x37, 0xE4, 0x37, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x81, 0xDC, 0x57, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x80, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x02, 0xE4, 0x57, 0x8C, 0xE4, 0x58, 0xE4, 0x59, 0xE4, 0x79, 0xD4, 0x7B, 0xBC, 0x3C, 0x83, 0x7B, 0x4A, 0x99, 0x32, 0xBB, 0x2B, 0x1D, 0x1B, 0x3E, 0x0B, 0x1E, 0x03, 0x1F, 0x03, 0x3F, 0x02, 0x03, 0x5F, 0x80, 0x03, 0x3F, 0x02, 0x03, 0x5F, 0x80, 0x03, 0x3F, 0x03, 0x03, 0x5F, 0x89, 0x03, 0x3E, 0x03, 0x5E, 0x03, 0x5D, 0x03, 0x7D, 0x03, 0xDC, 0x05, 0x1C, 0x26, 0xBF, 0x27, 0x5F, 0x17, 0x7F, 0x0F, 0x9E, 0x03, 0x07, 0xBE, 0x8C, 0x0F, 0xDE, 0x0F, 0xBE, 0x1F, 0x7E, 0x2F, 0x7F, 0x3E, 0xDE, 0x66, 0x7F, 0x64, 0x58, 0x72, 0x52, 0x9A, 0x13, 0xB1, 0xD3, 0xB9, 0x93, 0xC1, 0x93, 0xC9, 0x94, 0x01, 0xC1, 0x94, 0x88, 0xC1, 0xB4, 0xB9, 0xB4, 0xB1, 0xD4, 0xAA, 0x36, 0x81, 0x93, 0x61, 0x32, 0x59, 0x52, 0x51, 0x72, 0x49, 0x72, 0x02, 0x41, 0x92, 0x01, 0x39, 0x71, 0x01, 0x39, 0x72, 0x04, 0x31, 0x51, 0x82, 0x31, 0x31, 0x31, 0x51, 0x31, 0x50, 0x09, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, + 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x31, 0x19, 0x32, 0x01, 0x11, 0x33, 0x86, 0x19, 0xB6, 0x22, 0x18, 0x22, 0x17, 0x11, 0x95, 0x09, 0x33, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x08, 0x21, 0x10, 0x81, + 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x04, 0x21, 0x10, 0x86, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x87, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x11, 0xF8, 0x82, 0x19, 0xF8, 0x11, 0xF8, 0x11, 0xD7, 0x02, 0x19, 0xF8, 0x82, 0x1A, 0x18, 0x11, 0xF7, 0x1A, 0x18, 0x02, 0x19, 0xF8, 0x80, 0x11, 0xD7, 0x01, 0x19, 0xF8, 0x80, 0x11, 0xD7, 0x03, 0x19, 0xF8, 0x80, 0x19, 0xF7, 0x05, 0x19, 0xF8, 0x89, 0x11, 0xF8, 0x19, 0xF8, 0x11, 0xF8, 0x11, 0xF7, 0x1A, 0x18, 0x11, 0xF8, 0x19, 0xF8, 0x1A, 0x18, 0x11, 0xF7, 0x19, 0xF8, 0x03, 0x11, 0xF8, 0x86, 0x11, 0xF9, 0x09, 0xF9, 0x09, 0xD9, 0x0A, 0x1A, 0x01, 0xD9, 0x01, 0xB8, 0x01, 0xB9, 0x01, 0x09, 0xFA, 0x8A, 0x09, 0xF9, 0x09, 0xD8, 0x09, 0xB7, 0x11, 0x96, 0x09, 0x34, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x29, 0x31, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, + 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x01, 0x21, 0x10, 0x85, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x11, 0x54, 0x09, 0x75, 0x01, 0x09, 0xB7, 0x80, 0x09, 0xF8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xD9, 0x01, 0x09, 0xD8, 0x87, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x54, 0x08, 0xF2, 0x11, 0x11, 0x18, 0xF0, 0x19, 0x10, 0x01, 0x21, 0x31, 0x87, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x09, 0x54, 0x09, 0xB6, 0x09, 0xD8, 0x0A, 0x19, 0x01, 0xD8, 0x01, 0x01, 0xD9, 0x81, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x81, 0x01, 0x99, 0x01, 0xBA, 0x01, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x83, 0x09, 0xB7, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x34, 0x01, 0x09, 0x13, 0x85, 0x08, 0xF3, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xF8, 0x11, 0xF9, 0x09, 0xF9, 0x02, 0x01, 0xB9, 0x82, 0x01, 0xDA, 0x0A, 0x1B, 0x01, 0xFA, 0x02, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x92, 0x09, 0xD8, 0x11, 0xF9, 0x11, 0xD7, 0x11, 0x75, 0x09, 0x13, 0x08, 0xF3, 0x09, 0x13, 0x09, 0x33, 0x11, 0x96, 0x19, 0xF8, 0x11, 0xD8, 0x09, 0xD8, 0x01, 0xB8, 0x09, 0xF9, 0x01, 0xF9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x88, 0x01, 0xD9, 0x11, 0xF9, 0x1A, 0x19, 0x19, 0xB6, 0x09, 0x13, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, + 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x0C, 0x29, 0x30, 0x06, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x20, 0xCE, 0x28, 0xAC, 0x6A, 0x11, 0xD4, 0xFB, 0xD4, 0xB9, 0x01, 0xD4, 0x98, 0x87, 0xD4, 0x78, 0xCC, 0x78, 0xBC, 0x56, 0xDE, 0x1B, 0xF7, 0x9F, 0xEF, 0xBF, 0xE7, 0xDF, 0xE7, 0xFF, 0x05, 0xDF, 0xFF, 0x81, 0xD7, 0xFF, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x82, 0xD7, 0xFF, 0xDF, 0xFF, 0xD7, 0xFF, 0x09, 0xDF, 0xFF, 0x81, 0xE7, 0xFF, 0xE7, 0xDF, 0x05, 0xE7, 0xFF, 0x05, 0xE7, 0xDF, 0x01, 0xEF, 0xDF, 0x0A, 0xE7, 0xDF, 0x81, 0xDF, 0xDF, 0xDF, 0xFF, 0x02, 0xDF, 0xDF, 0x03, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x02, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x03, 0xE7, 0xFF, 0x0C, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x02, 0xE7, 0xFF, 0x81, 0xDF, 0xFF, 0xDF, 0xDF, 0x02, 0xDF, 0xFF, 0x07, 0xD7, 0xFF, 0x01, 0xDF, 0xFF, 0x06, 0xD7, 0xDF, 0x80, 0xD7, 0xFF, 0x02, 0xD7, 0xDF, 0x80, 0xD7, 0xFF, 0x03, 0xD7, 0xDF, 0x80, 0xD7, 0xFF, 0x07, + 0xD7, 0xDF, 0x83, 0xD7, 0xFF, 0xD7, 0xDF, 0xD7, 0xFF, 0xD7, 0xDF, 0x02, 0xD7, 0xFF, 0x02, 0xD7, 0xDF, 0x03, 0xD7, 0xFF, 0x06, 0xD7, 0xDF, 0x05, 0xDF, 0xDF, 0x01, 0xD7, 0xFF, 0x81, 0xDF, 0xDF, 0xDF, 0xFF, 0x06, 0xD7, 0xDF, 0x80, 0xDF, 0xFF, 0x01, 0xD7, 0xFF, 0x01, 0xD7, 0xDF, 0x04, 0xD7, 0xFF, 0x81, 0xD7, 0xDF, 0xD7, 0xFF, 0x06, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x02, 0xD7, 0xDF, 0x80, 0xD7, 0xFF, 0x11, 0xD7, 0xDF, 0x09, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x01, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x81, 0xDF, 0xDF, 0xD7, 0xFF, 0x02, 0xDF, 0xFF, 0x87, 0xE7, 0xDF, 0xEF, 0xBF, 0xE6, 0xFF, 0x72, 0x6F, 0x69, 0x8D, 0x71, 0x4D, 0x89, 0xB0, 0x99, 0xD1, 0x01, 0xA9, 0xD2, 0x81, 0xB1, 0xD3, 0xB9, 0xD3, 0x01, 0xB9, 0xF3, 0x80, 0xB9, 0xD3, 0x02, 0xB9, 0xF3, 0x01, 0xB9, 0xD3, 0x01, 0xB9, 0xB3, 0x86, 0xB1, 0x92, 0xA9, 0x92, 0xA1, 0xB1, 0x89, 0xCF, 0xFE, 0xDF, 0xFF, 0x7F, 0xF7, 0xBF, 0x03, 0xEF, 0xDF, 0x01, 0xE7, 0xDF, 0x01, 0xEF, 0xFF, 0x82, 0xE7, 0xDF, 0xEF, 0xFF, 0xEF, 0xDF, 0x01, 0xEF, 0xFF, 0x80, 0xEF, 0xDF, 0x06, 0xE7, 0xFF, 0x02, 0xDF, 0xFF, 0x02, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x03, 0xD7, 0xFF, 0x84, 0xD7, 0xDF, 0xD7, 0xFF, 0xDF, 0xFF, 0xDF, 0xDF, 0xDF, 0xFF, 0x02, 0xDF, 0xDF, 0x82, 0xDF, 0xFF, 0xDF, 0xDF, 0xE7, 0xFF, 0x02, 0xE7, 0xDF, 0x85, 0xEF, 0xDF, 0xF7, 0x9F, 0xFF, 0x5F, 0xC5, 0x18, 0xC4, 0x76, 0xCC, 0x56, 0x01, 0xD4, 0x37, 0x02, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x04, + 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x80, 0xDC, 0x37, 0x04, 0xE4, 0x37, 0x82, 0xDC, 0x37, 0xE4, 0x37, 0xE4, 0x57, 0x01, 0xDC, 0x36, 0x81, 0xDC, 0x16, 0xDC, 0x36, 0x04, 0xDC, 0x37, 0x81, 0xE4, 0x57, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x80, 0xE4, 0x37, 0x02, 0xDC, 0x37, 0x80, 0xE4, 0x37, 0x01, 0xE4, 0x58, 0x89, 0xE4, 0x79, 0xE4, 0x7A, 0xD4, 0x7B, 0xB4, 0x3C, 0x73, 0x3A, 0x42, 0x9A, 0x32, 0xDC, 0x33, 0x5E, 0x23, 0x5F, 0x0B, 0x3E, 0x01, 0x03, 0x5F, 0x01, 0x03, 0x7F, 0x01, 0x03, 0x5F, 0x80, 0x03, 0x3F, 0x06, 0x03, 0x5F, 0x01, 0x03, 0x5E, 0x01, 0x03, 0x7D, 0x85, 0x03, 0xDC, 0x04, 0xBC, 0x1E, 0x7F, 0x27, 0x3F, 0x1F, 0x7F, 0x0F, 0x9E, 0x02, 0x07, 0xBE, 0x8D, 0x07, 0xDE, 0x07, 0xBE, 0x17, 0xBE, 0x1F, 0x9E, 0x2F, 0x7F, 0x47, 0x1F, 0x66, 0x9F, 0x6C, 0xB9, 0x6A, 0x72, 0x9A, 0x33, 0xB2, 0x14, 0xB9, 0xD3, 0xC1, 0xB3, 0xC9, 0xB4, 0x01, 0xC1, 0x73, 0x87, 0xC1, 0x94, 0xB9, 0xB4, 0xB9, 0xF5, 0xB2, 0x36, 0x79, 0x73, 0x61, 0x32, 0x59, 0x72, 0x49, 0x72, 0x01, 0x41, 0x72, 0x01, 0x41, 0x92, 0x01, 0x39, 0x71, 0x80, 0x39, 0x72, 0x04, 0x31, 0x51, 0x83, 0x31, 0x31, 0x29, 0x30, 0x31, 0x30, 0x31, 0x50, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x06, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, + 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x8B, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x22, 0x38, 0x22, 0x17, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x88, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, + 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x11, 0x96, 0x11, 0x95, 0x01, 0x11, 0x96, 0x81, 0x11, 0x95, 0x11, 0x75, 0x03, 0x11, 0x95, 0x81, 0x11, 0xB6, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x80, 0x11, 0x96, 0x05, 0x19, 0xB6, 0x89, 0x11, 0xB6, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0xD6, 0x11, 0xB6, 0x19, 0xD6, 0x06, 0x11, 0xB6, 0x81, 0x19, 0xD6, 0x11, 0xB6, 0x01, 0x11, 0xD7, 0x80, 0x19, 0xD8, 0x01, 0x11, 0xD8, 0x8F, 0x11, 0xF9, 0x12, 0x3A, 0x12, 0x1A, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xB9, 0x09, 0xFA, 0x09, 0xD9, 0x09, 0xF9, 0x11, 0xF9, 0x09, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x13, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, + 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x11, 0x01, 0x19, 0x11, 0x85, 0x19, 0x32, 0x11, 0x33, 0x09, 0x54, 0x09, 0x95, 0x11, 0xD7, 0x09, 0xD7, 0x04, 0x09, 0xD8, 0x87, 0x09, 0xF8, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x12, 0x10, 0xF1, 0x18, 0xF0, 0x02, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x74, 0x11, 0xB6, 0x09, 0xD7, 0x01, 0xD8, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xBA, 0x90, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x34, 0x09, 0x13, 0x08, 0xF2, 0x00, 0xF3, 0x11, 0x75, 0x11, 0xD7, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0xB8, 0x01, 0x01, 0xB9, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xB9, 0x02, 0x01, 0xD9, 0x85, 0x09, 0xD8, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x75, 0x09, 0x33, 0x08, 0xF2, 0x01, 0x09, 0x13, 0x84, 0x11, 0x95, 0x19, 0xF7, 0x09, 0xB7, 0x09, 0xD8, 0x01, 0xB8, 0x02, 0x01, 0xD9, 0x81, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0x01, 0xFA, 0x8C, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xD9, 0x09, 0xF9, 0x19, 0xF9, 0x11, 0x96, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x19, 0x30, 0x19, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, + 0x2F, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x0C, 0x29, 0x30, 0x09, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x8E, 0x20, 0xEE, 0x28, 0xCE, 0x20, 0x2A, 0xC4, 0xBA, 0xD4, 0xDA, 0xDC, 0xB9, 0xDC, 0x99, 0xD4, 0x98, 0xCC, 0x78, 0xC4, 0x77, 0xCD, 0x39, 0xFF, 0x9F, 0xEF, 0xBF, 0xE7, 0xDF, 0xE7, 0xFF, 0x01, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x03, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x04, 0xD7, 0xFF, 0x08, 0xDF, 0xFF, 0x02, 0xE7, 0xFF, 0x04, 0xE7, 0xDF, 0x02, 0xEF, 0xDF, 0x02, 0xEF, 0xBF, 0x05, 0xF7, 0xBF, 0x02, 0xEF, 0xBF, 0x80, 0xEF, 0xDF, 0x05, 0xE7, 0xDF, 0x07, 0xDF, 0xDF, 0x80, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x07, 0xE7, 0xDF, 0x01, 0xEF, 0xDF, 0x02, 0xEF, 0xBF, 0x01, 0xF7, 0xBF, 0x82, 0xEF, 0xBF, 0xF7, 0xBF, 0xEF, 0x9F, 0x03, 0xEF, 0xBF, 0x02, 0xEF, 0xDF, 0x03, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x03, 0xDF, 0xFF, 0x82, 0xD7, 0xDF, 0xD7, 0xFF, 0xD7, 0xDF, 0x02, 0xD7, 0xFF, 0x21, 0xD7, 0xDF, 0x80, 0xD7, 0xFF, 0x48, 0xD7, 0xDF, 0x80, 0xD7, 0xFF, 0x05, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x80, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x01, 0xD7, 0xDF, 0x05, + 0xD7, 0xFF, 0x01, 0xDF, 0xFF, 0x89, 0xE7, 0xDF, 0xEF, 0x9F, 0xEE, 0xDF, 0x8A, 0xF2, 0x81, 0xD0, 0x91, 0xB1, 0x99, 0xB1, 0xA1, 0xB2, 0xA9, 0xD2, 0xB1, 0xD2, 0x01, 0xB1, 0xD3, 0x01, 0xB9, 0xD3, 0x80, 0xB9, 0xF3, 0x03, 0xB9, 0xD3, 0x01, 0xB9, 0xB3, 0x86, 0xB1, 0xB2, 0xB1, 0x92, 0xA1, 0xB1, 0x91, 0xB0, 0xDC, 0xFA, 0xFF, 0x7F, 0xF7, 0xBF, 0x03, 0xEF, 0xDF, 0x02, 0xE7, 0xDF, 0x04, 0xEF, 0xDF, 0x80, 0xF7, 0xDF, 0x02, 0xEF, 0xBF, 0x02, 0xEF, 0xDF, 0x82, 0xE7, 0xDF, 0xE7, 0xFF, 0xE7, 0xDF, 0x01, 0xE7, 0xFF, 0x80, 0xDF, 0xFF, 0x06, 0xDF, 0xDF, 0x80, 0xD7, 0xFF, 0x05, 0xD7, 0xDF, 0x80, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x80, 0xDF, 0xFF, 0x02, 0xDF, 0xDF, 0x81, 0xDF, 0xFF, 0xDF, 0xDF, 0x02, 0xE7, 0xDF, 0x85, 0xEF, 0xBF, 0xF7, 0xBF, 0xFF, 0x7F, 0xBC, 0xB6, 0xC4, 0x56, 0xCC, 0x57, 0x01, 0xD4, 0x37, 0x03, 0xDC, 0x37, 0x80, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x80, 0xE4, 0x57, 0x0B, 0xE4, 0x37, 0x83, 0xE4, 0x36, 0xDC, 0x36, 0xE4, 0x36, 0xE4, 0x37, 0x01, 0xDC, 0x36, 0x83, 0xDC, 0x16, 0xE4, 0x37, 0xDC, 0x37, 0xE4, 0x37, 0x02, 0xDC, 0x37, 0x02, 0xE4, 0x37, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x37, 0x01, 0xE4, 0x58, 0x8A, 0xE4, 0x59, 0xDC, 0x5A, 0xD4, 0x9C, 0x83, 0x19, 0x4A, 0x58, 0x32, 0x39, 0x22, 0x7B, 0x2B, 0x3E, 0x23, 0x7F, 0x13, 0x7F, 0x0B, 0x7F, 0x04, 0x03, 0x7F, 0x80, 0x0B, 0x7F, 0x02, 0x03, 0x7F, 0x80, 0x03, 0x5F, 0x02, 0x03, 0x7F, 0x8A, 0x03, 0x5E, 0x03, + 0x7E, 0x03, 0x7D, 0x03, 0x9D, 0x03, 0xBC, 0x04, 0x7B, 0x1E, 0x3F, 0x2F, 0x3F, 0x1F, 0x7F, 0x17, 0x9E, 0x0F, 0xBE, 0x02, 0x07, 0xBE, 0x8B, 0x07, 0xBD, 0x0F, 0x9E, 0x1F, 0x9E, 0x27, 0x5F, 0x3F, 0x1F, 0x66, 0x9F, 0x6C, 0xDA, 0x72, 0x92, 0x9A, 0x33, 0xB1, 0xF3, 0xB9, 0xB3, 0xC1, 0xB3, 0x01, 0xC1, 0x94, 0x01, 0xC1, 0xB4, 0x85, 0xC1, 0xD4, 0xB1, 0xD4, 0xA9, 0xF5, 0x79, 0x52, 0x61, 0x52, 0x59, 0x72, 0x01, 0x49, 0x72, 0x01, 0x41, 0x72, 0x85, 0x41, 0x92, 0x39, 0x92, 0x39, 0x71, 0x39, 0x92, 0x31, 0x51, 0x39, 0x51, 0x02, 0x31, 0x51, 0x81, 0x31, 0x30, 0x31, 0x51, 0x01, 0x31, 0x30, 0x80, 0x29, 0x30, 0x02, 0x29, 0x50, 0x0F, 0x29, 0x30, 0x86, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x87, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x94, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x09, 0x33, 0x19, 0xB6, 0x2A, 0x38, 0x22, 0x17, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, + 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x07, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x03, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x11, 0x33, 0x02, 0x11, 0x13, 0x80, 0x11, 0x12, 0x01, 0x11, 0x13, 0x05, 0x11, 0x33, 0x01, 0x11, 0x13, 0x01, 0x11, 0x33, + 0x01, 0x11, 0x13, 0x02, 0x11, 0x33, 0x80, 0x11, 0x13, 0x0D, 0x11, 0x33, 0x81, 0x11, 0x54, 0x11, 0x33, 0x01, 0x09, 0x33, 0x81, 0x09, 0x13, 0x09, 0x14, 0x01, 0x09, 0x35, 0x85, 0x01, 0x56, 0x09, 0xB8, 0x11, 0xFA, 0x09, 0xFA, 0x09, 0xDA, 0x01, 0x99, 0x01, 0x01, 0xD9, 0x89, 0x09, 0xF9, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0x96, 0x11, 0x54, 0x11, 0x13, 0x19, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x0D, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x21, 0x32, 0x19, 0x12, 0x11, 0x33, 0x11, 0x74, 0x09, 0x96, 0x09, 0xB7, 0x04, 0x09, 0xD8, 0x01, 0x09, 0xF9, 0x86, 0x09, 0xB8, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x54, 0x08, 0xF1, 0x10, 0xF1, 0x19, 0x11, 0x01, 0x21, 0x51, 0x88, 0x21, 0x30, 0x21, 0x10, 0x19, 0x11, 0x11, 0x32, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xF8, 0x09, 0xF9, 0x01, 0xD8, 0x02, 0x01, 0xD9, 0x04, 0x01, 0xDA, 0x91, 0x01, 0xBA, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x08, 0xF2, 0x08, 0xD2, 0x09, 0x13, 0x11, 0x75, 0x11, 0xD7, 0x11, 0xD8, 0x12, 0x19, 0x01, 0xB8, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0x01, 0xFA, 0x83, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x85, 0x01, 0xB8, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xD7, 0x11, 0x74, 0x09, 0x33, 0x01, 0x09, + 0x12, 0x84, 0x09, 0x13, 0x11, 0x95, 0x19, 0xF7, 0x09, 0xD7, 0x09, 0xF9, 0x02, 0x01, 0xB9, 0x84, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x89, 0x09, 0xF9, 0x11, 0xD8, 0x11, 0x96, 0x11, 0x54, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x84, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x0B, 0x29, 0x30, 0x09, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x8D, 0x20, 0xEE, 0x28, 0xAC, 0x62, 0x11, 0xDD, 0x3C, 0xD4, 0xB9, 0xD4, 0x98, 0xD4, 0x78, 0xCC, 0x57, 0xC4, 0x57, 0xBC, 0x97, 0xF6, 0xDF, 0xF7, 0x9F, 0xE7, 0xBF, 0xE7, 0xDF, 0x02, 0xDF, 0xDF, 0x80, 0xD7, 0xFF, 0x06, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x80, 0xD7, 0xDF, 0x03, 0xD7, 0xFF, 0x03, 0xDF, 0xFF, 0x02, 0xE7, 0xFF, 0x04, 0xEF, 0xDF, 0x81, 0xEF, 0xBF, 0xF7, 0xBF, 0x01, 0xF7, 0x9F, 0x80, 0xFF, 0x7F, 0x05, 0xFF, 0x5F, 0x80, 0xFF, 0x7F, 0x01, 0xFF, 0x9F, 0x80, 0xF7, 0x9F, 0x01, 0xF7, 0xBF, 0x01, 0xEF, 0xBF, 0x01, 0xEF, 0xDF, 0x03, 0xE7, + 0xDF, 0x07, 0xDF, 0xDF, 0x04, 0xE7, 0xDF, 0x01, 0xEF, 0xDF, 0x02, 0xEF, 0xBF, 0x01, 0xF7, 0x9F, 0x01, 0xFF, 0x7F, 0x01, 0xFF, 0x5F, 0x01, 0xFF, 0x3F, 0x80, 0xFF, 0x5F, 0x02, 0xFF, 0x7F, 0x81, 0xFF, 0x9F, 0xF7, 0x9F, 0x01, 0xF7, 0xBF, 0x02, 0xEF, 0xBF, 0x80, 0xEF, 0xDF, 0x02, 0xE7, 0xDF, 0x81, 0xDF, 0xDF, 0xDF, 0xFF, 0x02, 0xDF, 0xDF, 0x81, 0xD7, 0xDF, 0xD7, 0xFF, 0x14, 0xD7, 0xDF, 0x84, 0xD7, 0xFF, 0xD7, 0xDF, 0xD7, 0xFF, 0xD7, 0xDF, 0xD7, 0xFF, 0x07, 0xD7, 0xDF, 0x80, 0xD7, 0xFF, 0x06, 0xD7, 0xDF, 0x80, 0xD7, 0xFF, 0x3D, 0xD7, 0xDF, 0x80, 0xD7, 0xFF, 0x11, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x02, 0xD7, 0xDF, 0x81, 0xD7, 0xFF, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x85, 0xEF, 0xBF, 0xEE, 0xDF, 0x93, 0x33, 0x89, 0xB0, 0x99, 0xB1, 0xA1, 0xB1, 0x01, 0xA9, 0xD2, 0x80, 0xB1, 0xD2, 0x03, 0xB1, 0xD3, 0x80, 0xB9, 0xF3, 0x03, 0xB9, 0xD3, 0x88, 0xB9, 0xB3, 0xB1, 0xB3, 0xB1, 0xB2, 0xA9, 0x92, 0x99, 0xD1, 0x92, 0x91, 0xFE, 0xBF, 0xF7, 0x7F, 0xEF, 0xBF, 0x05, 0xE7, 0xDF, 0x01, 0xEF, 0xDF, 0x80, 0xEF, 0xBF, 0x01, 0xF7, 0xBF, 0x01, 0xFF, 0xBF, 0x02, 0xFF, 0x9F, 0x80, 0xF7, 0x9F, 0x01, 0xF7, 0xBF, 0x81, 0xEF, 0xBF, 0xEF, 0xDF, 0x01, 0xE7, 0xDF, 0x01, 0xDF, 0xDF, 0x80, 0xDF, 0xFF, 0x03, 0xDF, 0xDF, 0x08, 0xD7, 0xDF, 0x80, 0xD7, 0xFF, 0x01, 0xD7, 0xDF, 0x08, 0xDF, 0xDF, 0x86, 0xE7, 0xDF, 0xE7, 0xBF, 0xEF, 0x9F, 0xFF, 0x5F, 0xBC, 0xD7, 0xC4, 0x56, 0xCC, 0x36, 0x01, 0xD4, 0x17, 0x0B, 0xDC, 0x37, 0x81, 0xE4, 0x37, 0xE4, 0x36, 0x10, 0xE4, 0x37, 0x82, + 0xE4, 0x36, 0xDC, 0x16, 0xDC, 0x36, 0x04, 0xE4, 0x37, 0x83, 0xDC, 0x37, 0xE4, 0x37, 0xDC, 0x37, 0xE4, 0x37, 0x05, 0xDC, 0x37, 0x8C, 0xE4, 0x38, 0xE4, 0x58, 0xE4, 0x59, 0xDC, 0x7A, 0xD4, 0xDE, 0x41, 0x54, 0x21, 0x35, 0x19, 0x98, 0x11, 0xF9, 0x1A, 0xFD, 0x1B, 0x7F, 0x13, 0x9F, 0x0B, 0xBF, 0x03, 0x03, 0x9F, 0x81, 0x03, 0x7F, 0x0B, 0x9F, 0x06, 0x03, 0x7F, 0x8A, 0x03, 0x5E, 0x03, 0x7E, 0x03, 0x9E, 0x03, 0xBD, 0x03, 0xDC, 0x04, 0x5B, 0x1D, 0xDE, 0x2F, 0x3F, 0x1F, 0x7F, 0x17, 0xBF, 0x0F, 0xBE, 0x01, 0x07, 0xBE, 0x8B, 0x07, 0xDE, 0x0F, 0xDE, 0x0F, 0xBE, 0x17, 0x9E, 0x2F, 0x7F, 0x3F, 0x1F, 0x66, 0xBF, 0x6C, 0xDA, 0x6A, 0x93, 0x9A, 0x53, 0xA9, 0xD3, 0xB9, 0xB3, 0x02, 0xC1, 0xB4, 0x8A, 0xC1, 0x94, 0xB9, 0x94, 0xB9, 0xD4, 0xB9, 0xF5, 0xAA, 0x15, 0x71, 0x52, 0x61, 0x52, 0x51, 0x72, 0x49, 0x72, 0x49, 0x93, 0x41, 0x72, 0x01, 0x41, 0x92, 0x82, 0x39, 0x92, 0x39, 0x71, 0x39, 0x72, 0x03, 0x39, 0x51, 0x80, 0x31, 0x51, 0x01, 0x31, 0x50, 0x81, 0x31, 0x51, 0x31, 0x31, 0x08, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x08, 0x29, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x88, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, + 0x2F, 0x88, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x51, 0x19, 0x52, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x22, 0x38, 0x22, 0x17, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, + 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x19, 0x32, 0x03, 0x19, 0x12, 0x04, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x32, 0x01, 0x19, 0x12, 0x80, 0x19, 0x32, 0x04, 0x19, 0x12, 0x80, 0x19, 0x32, 0x02, 0x19, 0x12, 0x01, 0x19, 0x32, 0x83, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x02, 0x19, 0x12, 0x82, 0x19, 0x32, 0x19, 0x33, 0x19, 0x32, 0x03, 0x11, 0x32, 0x80, 0x11, 0x12, 0x01, 0x11, 0x33, 0x87, 0x11, 0x34, 0x11, 0x14, 0x09, 0x35, 0x09, 0x56, 0x09, 0xB8, 0x12, 0x1A, 0x09, 0xD9, 0x09, 0xDA, 0x01, 0x01, 0xB9, 0x88, 0x09, 0xD9, 0x09, 0xFA, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x54, 0x11, 0x13, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x08, 0x21, 0x30, 0x80, 0x21, 0x11, 0x01, 0x19, 0x32, 0x83, 0x11, 0x33, 0x11, 0x74, 0x09, 0x95, 0x09, 0xD7, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xF9, + 0x89, 0x01, 0xD8, 0x0A, 0x19, 0x09, 0xF9, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x34, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x01, 0x21, 0x51, 0x88, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x19, 0x11, 0x11, 0x53, 0x11, 0xB6, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xF9, 0x02, 0x01, 0xD9, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x95, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0x95, 0x11, 0x53, 0x11, 0x12, 0x10, 0xF2, 0x08, 0xF2, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xFA, 0x01, 0xDA, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x8D, 0x09, 0xD9, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x08, 0xF2, 0x09, 0x53, 0x11, 0xD6, 0x11, 0xF8, 0x09, 0xB8, 0x01, 0xB8, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x03, 0x01, 0xDA, 0x89, 0x01, 0xD9, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0x96, 0x11, 0x34, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x85, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, + 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x0B, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8C, 0x28, 0xCD, 0x28, 0xAC, 0xA3, 0xF8, 0xD4, 0xDB, 0xD4, 0x99, 0xD4, 0x78, 0xCC, 0x58, 0xCC, 0x57, 0xC4, 0x77, 0xBC, 0xF7, 0xF7, 0x7F, 0xEF, 0xBF, 0xE7, 0xDF, 0x01, 0xDF, 0xDF, 0x06, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x80, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x88, 0xDF, 0xFF, 0xD7, 0xDF, 0xD7, 0xFF, 0xD7, 0xDF, 0xDF, 0xDF, 0xDF, 0xFF, 0xDF, 0xDF, 0xDF, 0xFF, 0xE7, 0xFF, 0x01, 0xE7, 0xDF, 0x82, 0xEF, 0xBF, 0xF7, 0xBF, 0xF7, 0x9F, 0x01, 0xFF, 0x9F, 0x87, 0xFF, 0x7F, 0xFF, 0x1F, 0xE6, 0x5E, 0xD5, 0xBB, 0xC4, 0xF9, 0xB4, 0x77, 0xAB, 0xF5, 0xA3, 0x94, 0x01, 0x93, 0x12, 0x87, 0xA3, 0x94, 0xAB, 0xB5, 0xB4, 0x16, 0xBC, 0x77, 0xCD, 0x19, 0xDD, 0xDC, 0xF6, 0xDF, 0xFF, 0x7F, 0x01, 0xFF, 0x9F, 0x81, 0xF7, 0x7F, 0xF7, 0x9F, 0x01, 0xEF, 0xBF, 0x03, 0xE7, 0xDF, 0x04, 0xDF, 0xDF, 0x03, 0xE7, 0xDF, 0x01, 0xEF, 0xBF, 0x94, 0xF7, 0xBF, 0xF7, 0x9F, 0xFF, 0x9F, 0xFF, 0x7F, 0xFF, 0x5F, 0xE6, 0x3D, 0xCD, 0x5A, 0xBC, 0x97, 0xA3, 0xD5, 0x93, 0x32, 0x93, 0x12, 0x92, 0xF2, 0x93, 0x12, 0x9B, 0x73, 0xAB, 0xD5, 0xBC, 0x57, 0xC4, 0xB8, 0xCD, 0x19, 0xDD, 0x9B, 0xEE, 0x5D, 0xFF, 0x1F, 0x02, 0xFF, 0x7F, 0x85, 0xF7, 0x7F, 0xF7, 0x9F, 0xEF, 0xBF, 0xE7, 0xBF, 0xE7, 0xDF, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x06, 0xD7, 0xDF, 0x01, 0xCF, + 0xDF, 0x02, 0xD7, 0xDF, 0x80, 0xCF, 0xBF, 0x03, 0xD7, 0xDF, 0x80, 0xD7, 0xBF, 0x01, 0xD7, 0xDF, 0x80, 0xD7, 0xFF, 0x01, 0xD7, 0xDF, 0x0B, 0xD7, 0xFF, 0x02, 0xD7, 0xDF, 0x80, 0xD7, 0xFF, 0x0D, 0xD7, 0xDF, 0x80, 0xD7, 0xBF, 0x46, 0xD7, 0xDF, 0x80, 0xCF, 0xDF, 0x02, 0xD7, 0xDF, 0x80, 0xD7, 0xFF, 0x01, 0xD7, 0xDF, 0x02, 0xDF, 0xDF, 0x85, 0xE7, 0x9F, 0xE6, 0xDF, 0x93, 0x53, 0x89, 0xB0, 0x99, 0xB1, 0xA1, 0xD2, 0x01, 0xA9, 0xD2, 0x01, 0xB1, 0xD3, 0x01, 0xB1, 0xF3, 0x03, 0xB9, 0xF3, 0x81, 0xB9, 0xD3, 0xB1, 0xD3, 0x01, 0xB1, 0xB3, 0x85, 0xA9, 0xB2, 0x99, 0xB1, 0x79, 0x6E, 0xBC, 0x57, 0xFF, 0x7F, 0xEF, 0x9F, 0x05, 0xE7, 0xDF, 0x92, 0xEF, 0xBF, 0xEF, 0x9F, 0xF7, 0x9F, 0xFF, 0x9F, 0xFF, 0x7F, 0xE6, 0x3D, 0xCD, 0x7A, 0xC4, 0xF9, 0xBC, 0x97, 0xBC, 0x77, 0xC4, 0xD8, 0xD5, 0x7A, 0xE6, 0x1D, 0xFF, 0x1F, 0xFF, 0x7F, 0xFF, 0x9F, 0xF7, 0x9F, 0xEF, 0xDF, 0xE7, 0xDF, 0x04, 0xDF, 0xDF, 0x0E, 0xD7, 0xDF, 0x07, 0xDF, 0xDF, 0x86, 0xE7, 0xDF, 0xE7, 0xBF, 0xF7, 0x9F, 0xF7, 0x1F, 0xBC, 0x96, 0xC4, 0x56, 0xCC, 0x36, 0x01, 0xD4, 0x17, 0x0A, 0xDC, 0x37, 0x01, 0xE4, 0x36, 0x80, 0xDC, 0x36, 0x01, 0xE4, 0x37, 0x01, 0xDC, 0x37, 0x81, 0xE4, 0x37, 0xE4, 0x17, 0x01, 0xE4, 0x37, 0x80, 0xE4, 0x16, 0x0C, 0xE4, 0x37, 0x83, 0xE4, 0x16, 0xE4, 0x37, 0xDC, 0x37, 0xDC, 0x36, 0x07, 0xDC, 0x37, 0x80, 0xDC, 0x38, 0x01, 0xE4, 0x59, 0x8C, 0xDC, 0x5A, 0xD4, 0xDF, 0x28, 0xD3, 0x19, 0x57, 0x11, 0x98, 0x09, 0xFA, 0x12, 0xBC, 0x1B, 0x5E, 0x13, 0x9F, 0x0B, 0xBF, 0x0B, 0x9F, + 0x03, 0x9F, 0x0B, 0xBF, 0x03, 0x0B, 0x9F, 0x80, 0x03, 0x7F, 0x01, 0x0B, 0x7F, 0x82, 0x0B, 0x9F, 0x0B, 0x7F, 0x03, 0x7F, 0x01, 0x03, 0x7E, 0x88, 0x03, 0x9E, 0x03, 0xBD, 0x03, 0xDC, 0x04, 0x3B, 0x15, 0xBE, 0x2F, 0x1F, 0x1F, 0x5F, 0x17, 0x9E, 0x0F, 0xBE, 0x01, 0x07, 0xBD, 0x8E, 0x07, 0xDD, 0x07, 0xDE, 0x0F, 0x9E, 0x17, 0x9E, 0x27, 0x7F, 0x3F, 0x1F, 0x66, 0xBF, 0x6D, 0x1A, 0x72, 0x93, 0x9A, 0x33, 0xA9, 0xD3, 0xB9, 0xD3, 0xC1, 0xB3, 0xC1, 0xB4, 0xC1, 0x94, 0x01, 0xC1, 0xB4, 0x8A, 0xB9, 0xD4, 0xB1, 0xF5, 0xAA, 0x36, 0x71, 0x52, 0x59, 0x52, 0x51, 0x72, 0x49, 0x72, 0x41, 0x72, 0x41, 0x92, 0x41, 0x72, 0x41, 0x92, 0x01, 0x39, 0x72, 0x02, 0x39, 0x71, 0x03, 0x31, 0x51, 0x82, 0x31, 0x50, 0x31, 0x31, 0x31, 0x30, 0x12, 0x29, 0x30, 0x86, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x91, 0x29, 0x2F, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x19, 0x31, 0x19, 0x52, 0x11, 0x32, 0x11, 0x33, 0x11, 0x95, 0x2A, 0x38, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x33, 0x19, 0x32, + 0x21, 0x52, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x08, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x0B, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x30, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, + 0x0F, 0x02, 0x19, 0x31, 0x03, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x32, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x19, 0x31, 0x04, 0x19, 0x11, 0x80, 0x19, 0x31, 0x05, 0x19, 0x11, 0x01, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x04, 0x19, 0x31, 0x96, 0x19, 0x32, 0x19, 0x12, 0x19, 0x33, 0x11, 0x33, 0x11, 0x34, 0x09, 0x34, 0x09, 0x56, 0x11, 0xB7, 0x11, 0xF9, 0x09, 0xD9, 0x09, 0xDA, 0x01, 0xB9, 0x01, 0x99, 0x01, 0xB9, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x19, 0x31, 0x01, 0x21, 0x31, 0x06, 0x21, 0x30, 0x04, 0x21, 0x10, 0x06, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x08, 0x21, 0x30, 0x81, 0x21, 0x51, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x32, 0x11, 0x11, 0x11, 0x12, 0x11, 0x54, 0x09, 0x95, 0x09, 0xB7, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xD9, 0x01, 0x01, 0xB8, 0x88, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x19, 0x10, 0x19, 0x32, 0x11, 0x74, 0x11, 0xB7, 0x09, 0xB8, 0x01, 0x01, 0xB9, 0x80, 0x01, 0xD9, 0x03, 0x01, 0xDA, 0x82, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0x01, 0xD9, 0x84, 0x09, 0xF9, 0x11, 0xF8, 0x11, 0xD7, 0x09, 0x54, 0x11, 0x33, 0x01, 0x11, 0x32, 0x86, 0x10, 0xF2, 0x11, 0x33, 0x19, 0xD7, 0x11, 0xF8, 0x01, 0x97, 0x01, 0xB8, 0x01, 0xB9, 0x01, + 0x01, 0xD9, 0x82, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xDA, 0x02, 0x01, 0xB9, 0x87, 0x01, 0xDA, 0x01, 0xD9, 0x09, 0xD9, 0x11, 0xF8, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x19, 0x32, 0x01, 0x11, 0x11, 0x88, 0x09, 0x12, 0x19, 0xD6, 0x1A, 0x17, 0x09, 0xB7, 0x01, 0x98, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xBA, 0x04, 0x01, 0xDA, 0x89, 0x09, 0xDA, 0x01, 0xB9, 0x09, 0xD9, 0x11, 0xD8, 0x11, 0x96, 0x09, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x84, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x88, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x09, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x0A, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0E, 0x28, 0xCD, 0x38, 0xED, 0xBC, 0x79, 0xCC, 0x99, 0xD4, 0x78, 0x01, 0xCC, 0x58, 0x84, 0xCC, 0x57, 0xB4, 0x15, 0xF7, 0x1F, 0xEF, 0x9F, 0xE7, 0xBF, 0x01, 0xDF, 0xDF, 0x06, 0xD7, 0xDF, 0x80, 0xCF, 0xDF, 0x03, 0xD7, 0xDF, 0x80, 0xD7, 0xFF, 0x01, 0xD7, + 0xDF, 0x01, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x80, 0xDF, 0xDF, 0x01, 0xE7, 0xDF, 0x88, 0xEF, 0xDF, 0xEF, 0xBF, 0xFF, 0x9F, 0xFF, 0x3F, 0xEE, 0x5E, 0xCC, 0xFA, 0xA3, 0x33, 0x79, 0xCF, 0x71, 0x6E, 0x01, 0x79, 0x6E, 0x01, 0x81, 0x8F, 0x01, 0x89, 0x8F, 0x03, 0x89, 0x90, 0x80, 0x89, 0x6F, 0x01, 0x81, 0x6F, 0x89, 0x81, 0x6E, 0x79, 0x4E, 0x79, 0x4D, 0x8A, 0x30, 0xBB, 0xF6, 0xED, 0xDD, 0xFE, 0xDF, 0xFF, 0x5F, 0xF7, 0x9F, 0xEF, 0x9F, 0x01, 0xE7, 0xBF, 0x07, 0xE7, 0xDF, 0x8B, 0xE7, 0xBF, 0xEF, 0xBF, 0xF7, 0x9F, 0xF7, 0x3F, 0xEE, 0x9E, 0xDD, 0x9C, 0xAB, 0xD6, 0x8A, 0x30, 0x71, 0x6E, 0x79, 0x6E, 0x81, 0x6F, 0x81, 0x8F, 0x04, 0x89, 0xB0, 0x80, 0x89, 0x90, 0x01, 0x89, 0x8F, 0x01, 0x81, 0x6F, 0x8A, 0x81, 0x4E, 0x79, 0x4E, 0x79, 0x4D, 0x79, 0x8E, 0x9A, 0xF3, 0xDD, 0x5B, 0xF6, 0x5E, 0xFE, 0xFF, 0xFF, 0x7F, 0xF7, 0x9F, 0xEF, 0xBF, 0x01, 0xE7, 0xDF, 0x02, 0xDF, 0xDF, 0x04, 0xD7, 0xDF, 0x01, 0xCF, 0xDF, 0x82, 0xD7, 0xDF, 0xCF, 0xDF, 0xCF, 0xBF, 0x2C, 0xD7, 0xDF, 0x01, 0xD7, 0xBF, 0x27, 0xD7, 0xDF, 0x80, 0xD7, 0xBF, 0x17, 0xD7, 0xDF, 0x80, 0xCF, 0xDF, 0x08, 0xD7, 0xDF, 0x01, 0xDF, 0xDF, 0x88, 0xE7, 0x9F, 0xEE, 0xDF, 0x93, 0x53, 0x89, 0xD0, 0x99, 0xD2, 0xA1, 0xD2, 0xA9, 0xD2, 0xA9, 0xD3, 0xB1, 0xD3, 0x01, 0xB1, 0xF3, 0x01, 0xB1, 0xD3, 0x01, 0xB1, 0xF3, 0x03, 0xB1, 0xD3, 0x87, 0xA9, 0xB2, 0x99, 0xB1, 0xC3, 0xD7, 0xFE, 0x9F, 0xFF, 0x5F, 0xF7, 0x9F, 0xEF, 0xBF, 0xE7, 0xBF, 0x02, 0xE7, 0xDF, 0x01, 0xE7, 0xBF, 0x87, 0xEF, 0xBF, 0xF7, 0x7F, 0xF6, + 0xDF, 0xA3, 0xB5, 0x71, 0xAE, 0x71, 0x6E, 0x79, 0x6E, 0x79, 0x6F, 0x02, 0x81, 0x6F, 0x89, 0x79, 0x4E, 0x79, 0x6E, 0x71, 0x4D, 0x79, 0xCE, 0xB4, 0x36, 0xF6, 0xBF, 0xF7, 0x9F, 0xE7, 0xBF, 0xE7, 0xDF, 0xDF, 0xDF, 0x01, 0xDF, 0xFF, 0x05, 0xD7, 0xDF, 0x82, 0xD7, 0xBF, 0xD7, 0xDF, 0xD7, 0xBF, 0x06, 0xD7, 0xDF, 0x01, 0xD7, 0xBF, 0x81, 0xD7, 0xDF, 0xD7, 0xBF, 0x04, 0xDF, 0xDF, 0x87, 0xE7, 0xDF, 0xE7, 0xBF, 0xEF, 0x9F, 0xF7, 0x3F, 0xBC, 0xD7, 0xC4, 0x36, 0xCC, 0x16, 0xD4, 0x16, 0x01, 0xD4, 0x17, 0x01, 0xDC, 0x17, 0x81, 0xDC, 0x37, 0xDC, 0x17, 0x01, 0xDC, 0x37, 0x82, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x36, 0x02, 0xDC, 0x16, 0x81, 0xDC, 0x17, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x03, 0xE4, 0x17, 0x01, 0xE4, 0x16, 0x03, 0xE4, 0x17, 0x80, 0xE4, 0x37, 0x01, 0xE4, 0x17, 0x80, 0xE4, 0x37, 0x01, 0xE4, 0x17, 0x81, 0xDC, 0x16, 0xE4, 0x37, 0x02, 0xE4, 0x17, 0x80, 0xE4, 0x37, 0x01, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x80, 0xE4, 0x17, 0x01, 0xE4, 0x37, 0x01, 0xE4, 0x38, 0x8B, 0xDC, 0x38, 0xDC, 0x59, 0xDC, 0x7A, 0xD4, 0xFF, 0x20, 0xB2, 0x19, 0x57, 0x11, 0x99, 0x09, 0xDA, 0x12, 0x9C, 0x1B, 0x3E, 0x13, 0x9F, 0x13, 0xBF, 0x03, 0x0B, 0xBF, 0x03, 0x0B, 0x9F, 0x81, 0x0B, 0x7F, 0x0B, 0x9F, 0x02, 0x0B, 0x7F, 0x01, 0x03, 0x7E, 0x88, 0x03, 0x9E, 0x03, 0xBD, 0x03, 0xFC, 0x04, 0x3B, 0x0D, 0x5D, 0x2F, 0x1F, 0x1F, 0x5F, 0x17, 0x7E, 0x0F, 0x9E, 0x01, 0x07, 0xBD, 0x8D, 0x07, 0xDD, 0x07, 0xBD, 0x0F, 0xBE, 0x17, 0x9E, 0x27, 0x7E, 0x3F, 0x1F, 0x5E, 0xBF, 0x75, 0x7C, 0x6A, + 0x93, 0x92, 0x13, 0xB2, 0x14, 0xB9, 0xD4, 0xB9, 0x93, 0xC1, 0x94, 0x01, 0xC1, 0xB4, 0x8C, 0xB9, 0x93, 0xB9, 0xB4, 0xB1, 0xD4, 0xA1, 0xF5, 0x79, 0x93, 0x61, 0x52, 0x51, 0x52, 0x41, 0x52, 0x41, 0x72, 0x41, 0x93, 0x49, 0xB3, 0x41, 0x92, 0x39, 0x71, 0x01, 0x39, 0x51, 0x80, 0x39, 0x71, 0x03, 0x31, 0x51, 0x02, 0x31, 0x30, 0x01, 0x31, 0x50, 0x80, 0x29, 0x50, 0x0C, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x2A, 0x38, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x01, 0x19, 0x11, 0x01, 0x21, + 0x32, 0x80, 0x21, 0x31, 0x02, 0x19, 0x11, 0x02, 0x21, 0x31, 0x82, 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x08, 0x21, 0x10, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x05, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x06, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x05, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x05, 0x21, 0x31, 0x83, 0x21, 0x11, 0x19, 0x10, 0x21, 0x11, 0x21, 0x10, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x87, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x19, 0x10, 0x19, 0x11, 0x21, 0x11, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x10, 0x82, 0x19, 0x31, 0x19, 0x10, 0x19, 0x31, 0x02, 0x19, 0x11, 0x01, 0x19, 0x31, + 0x80, 0x19, 0x11, 0x03, 0x19, 0x31, 0x01, 0x19, 0x32, 0x84, 0x11, 0x13, 0x11, 0x33, 0x11, 0x34, 0x09, 0x55, 0x11, 0x97, 0x01, 0x11, 0xF9, 0x89, 0x09, 0xFA, 0x09, 0xB9, 0x01, 0x99, 0x09, 0xB9, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x12, 0x01, 0x19, 0x32, 0x80, 0x21, 0x32, 0x06, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x51, 0x06, 0x21, 0x30, 0x01, 0x21, 0x31, 0x88, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x09, 0x75, 0x09, 0xB7, 0x09, 0xD8, 0x01, 0xB8, 0x02, 0x01, 0xD8, 0x86, 0x09, 0xD9, 0x09, 0xF9, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x01, 0x19, 0x11, 0x80, 0x21, 0x51, 0x03, 0x21, 0x10, 0x85, 0x19, 0x10, 0x19, 0x31, 0x11, 0x33, 0x11, 0x75, 0x09, 0x97, 0x09, 0xB8, 0x01, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x81, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0x01, 0xD9, 0x85, 0x09, 0xF9, 0x11, 0xF9, 0x09, 0xB7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x01, 0x11, 0x11, 0x82, 0x11, 0x32, 0x11, 0x54, 0x11, 0xD7, 0x01, 0x09, 0xB8, 0x80, 0x01, 0xD9, 0x02, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x87, 0x01, 0xBA, 0x01, 0xDA, 0x01, 0xB9, 0x09, 0xDA, 0x09, 0xD9, 0x11, 0xD8, 0x19, 0xD7, 0x11, 0x95, 0x01, 0x11, 0x32, 0x80, 0x19, 0x31, 0x01, 0x11, 0x11, 0x86, 0x11, 0x33, 0x19, 0xD6, 0x09, 0xB7, 0x09, + 0xB8, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x02, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x8A, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xF8, 0x09, 0x75, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x19, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x04, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x05, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x20, 0xEE, 0x28, 0xAD, 0x59, 0xAF, 0xCC, 0xBA, 0xCC, 0x79, 0xD4, 0x78, 0x01, 0xCC, 0x58, 0x85, 0xC4, 0x57, 0xBC, 0xD8, 0xF7, 0x9F, 0xE7, 0x9F, 0xDF, 0xBF, 0xDF, 0xDF, 0x07, 0xD7, 0xDF, 0x01, 0xCF, 0xDF, 0x05, 0xD7, 0xDF, 0x01, 0xDF, 0xFF, 0x01, 0xDF, 0xDF, 0x01, 0xE7, 0xDF, 0x88, 0xEF, 0xBF, 0xF7, 0x9F, 0xFF, 0x7F, 0xC5, 0x19, 0x9B, 0x74, 0x82, 0x30, 0x89, 0xD0, 0x91, 0xB0, 0x91, 0x91, 0x06, 0x99, 0x91, 0x92, 0x99, 0x71, 0xA1, + 0x91, 0x99, 0x91, 0x99, 0x71, 0xA1, 0x92, 0xA1, 0x72, 0x99, 0x71, 0xA1, 0x71, 0x99, 0x71, 0x99, 0x91, 0x91, 0x90, 0x89, 0xB0, 0x81, 0xAF, 0x8A, 0x91, 0xB4, 0x16, 0xF6, 0xDF, 0xFF, 0x9F, 0xF7, 0x9F, 0xEF, 0x9F, 0x03, 0xE7, 0xBF, 0x8B, 0xE7, 0xDF, 0xE7, 0xBF, 0xEF, 0xBF, 0xEF, 0x9F, 0xF7, 0x7F, 0xFF, 0x7F, 0xF6, 0xDF, 0xBC, 0x77, 0x82, 0x71, 0x81, 0xF0, 0x89, 0xB0, 0x91, 0xB1, 0x03, 0x99, 0x91, 0x01, 0x99, 0x92, 0x05, 0x99, 0x91, 0x04, 0x99, 0x71, 0x8A, 0x99, 0x91, 0x91, 0x90, 0x81, 0x8F, 0x8A, 0x30, 0x92, 0xD2, 0xBC, 0x57, 0xFE, 0xFF, 0xFF, 0x7F, 0xF7, 0x7F, 0xEF, 0xBF, 0xE7, 0xBF, 0x02, 0xDF, 0xDF, 0x03, 0xD7, 0xDF, 0x03, 0xCF, 0xDF, 0x80, 0xCF, 0xBF, 0x07, 0xD7, 0xDF, 0x08, 0xD7, 0xBF, 0x01, 0xD7, 0xDF, 0x80, 0xCF, 0xBF, 0x01, 0xD7, 0xDF, 0x03, 0xCF, 0xDF, 0x01, 0xD7, 0xDF, 0x84, 0xCF, 0xBF, 0xD7, 0xDF, 0xCF, 0xDF, 0xCF, 0xBF, 0xCF, 0xDF, 0x02, 0xD7, 0xDF, 0x80, 0xCF, 0xBF, 0x06, 0xD7, 0xDF, 0x05, 0xD7, 0xBF, 0x03, 0xD7, 0xDF, 0x02, 0xCF, 0xDF, 0x06, 0xD7, 0xDF, 0x03, 0xCF, 0xDF, 0x01, 0xD7, 0xDF, 0x03, 0xCF, 0xDF, 0x03, 0xD7, 0xDF, 0x04, 0xCF, 0xDF, 0x02, 0xD7, 0xDF, 0x80, 0xD7, 0xBF, 0x0A, 0xD7, 0xDF, 0x80, 0xCF, 0xBF, 0x0D, 0xD7, 0xDF, 0x05, 0xCF, 0xDF, 0x01, 0xD7, 0xDF, 0x8A, 0xD7, 0xFF, 0xDF, 0xFF, 0xDF, 0xDF, 0xE7, 0x9F, 0xEE, 0xFF, 0x93, 0x53, 0x89, 0xD0, 0x99, 0xD2, 0xA1, 0xD2, 0xA9, 0xF2, 0xA9, 0xF3, 0x07, 0xB1, 0xF3, 0x02, 0xB1, 0xD3, 0x85, 0xA9, 0xB2, 0x91, 0xB0, 0xD4, 0xB9, 0xFF, 0x3F, 0xF7, 0x7F, 0xE7, + 0x9F, 0x03, 0xE7, 0xBF, 0x80, 0xE7, 0xDF, 0x01, 0xE7, 0xBF, 0x84, 0xEF, 0x7F, 0xEE, 0xBF, 0x8A, 0xF2, 0x79, 0xD0, 0x89, 0x90, 0x01, 0x91, 0x91, 0x01, 0x99, 0x91, 0x01, 0x99, 0x71, 0x02, 0x99, 0x91, 0x85, 0x91, 0xB1, 0x81, 0xAF, 0x8A, 0x91, 0xEE, 0x9E, 0xF7, 0x9F, 0xE7, 0xBF, 0x01, 0xDF, 0xDF, 0x04, 0xD7, 0xDF, 0x03, 0xD7, 0xBF, 0x03, 0xD7, 0xDF, 0x0A, 0xD7, 0xBF, 0x01, 0xDF, 0xDF, 0x01, 0xDF, 0xBF, 0x85, 0xE7, 0xBF, 0xEF, 0x9F, 0xF7, 0x1F, 0xBC, 0xB7, 0xBC, 0x36, 0xCC, 0x16, 0x02, 0xD4, 0x16, 0x05, 0xDC, 0x17, 0x02, 0xDC, 0x16, 0x80, 0xDC, 0x17, 0x01, 0xDC, 0x16, 0x01, 0xDC, 0x17, 0x81, 0xDC, 0x16, 0xE4, 0x16, 0x02, 0xE4, 0x17, 0x80, 0xE4, 0x16, 0x09, 0xE4, 0x17, 0x84, 0xE4, 0x16, 0xE4, 0x17, 0xDB, 0xF6, 0xE4, 0x17, 0xE3, 0xF7, 0x01, 0xE4, 0x17, 0x81, 0xDC, 0x16, 0xE4, 0x17, 0x02, 0xDC, 0x17, 0x01, 0xE4, 0x17, 0x8C, 0xE4, 0x38, 0xDC, 0x38, 0xE4, 0x39, 0xDC, 0x59, 0xD4, 0x5B, 0xCC, 0xBF, 0x18, 0xB3, 0x11, 0x58, 0x11, 0x99, 0x09, 0xFA, 0x12, 0x5C, 0x12, 0xFE, 0x1B, 0x9F, 0x05, 0x13, 0xBF, 0x81, 0x13, 0x9E, 0x13, 0x7E, 0x01, 0x13, 0x7F, 0x90, 0x13, 0x9F, 0x13, 0x7F, 0x13, 0x7E, 0x0B, 0x7F, 0x0B, 0x7E, 0x03, 0x7E, 0x03, 0x9E, 0x03, 0xBD, 0x03, 0xDC, 0x04, 0x3C, 0x0D, 0x3D, 0x2E, 0xFF, 0x1F, 0x3F, 0x17, 0x7E, 0x0F, 0x9E, 0x0F, 0xBE, 0x07, 0xBD, 0x01, 0x07, 0xDD, 0x8B, 0x0F, 0xBE, 0x17, 0x9E, 0x27, 0x7E, 0x3F, 0x1F, 0x5E, 0xDF, 0x75, 0x5B, 0x6A, 0x93, 0x92, 0x13, 0xA9, 0xD3, 0xB9, 0xD3, 0xB9, 0xB3, 0xB9, 0x93, 0x01, 0xC1, + 0xB4, 0x8C, 0xC1, 0xD4, 0xB9, 0xD4, 0xB1, 0xD4, 0xA2, 0x35, 0x79, 0xB3, 0x59, 0x52, 0x51, 0x52, 0x41, 0x52, 0x41, 0x72, 0x41, 0x93, 0x41, 0xB3, 0x41, 0x92, 0x39, 0x71, 0x01, 0x39, 0x51, 0x80, 0x39, 0x71, 0x01, 0x31, 0x51, 0x83, 0x39, 0x51, 0x31, 0x51, 0x31, 0x30, 0x31, 0x51, 0x01, 0x29, 0x50, 0x80, 0x31, 0x50, 0x11, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x0F, 0x86, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8F, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x13, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x02, 0x19, 0x31, 0x07, 0x19, 0x32, 0x86, 0x19, 0x31, 0x21, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x21, 0x31, 0x21, 0x10, 0x03, 0x21, + 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x0D, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x03, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x07, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x0D, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x19, 0x10, 0x21, 0x31, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x19, 0x10, 0x21, 0x10, 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x21, 0x11, 0x19, 0x11, 0x01, 0x19, 0x32, 0x84, 0x11, 0x13, 0x11, 0x34, 0x11, 0x76, 0x11, 0xB8, 0x11, 0xF9, 0x01, 0x09, 0xD9, 0x89, 0x09, 0xB9, 0x01, + 0x99, 0x01, 0xB9, 0x09, 0xB9, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xB6, 0x11, 0x55, 0x11, 0x33, 0x19, 0x53, 0x02, 0x19, 0x32, 0x01, 0x19, 0x31, 0x05, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x21, 0x11, 0x03, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x01, 0x21, 0x31, 0x89, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x31, 0x85, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x09, 0x54, 0x09, 0x75, 0x09, 0xD7, 0x01, 0x09, 0xD8, 0x01, 0x01, 0xD9, 0x89, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x11, 0x11, 0x53, 0x11, 0x96, 0x09, 0xB8, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x92, 0x09, 0xF9, 0x0A, 0x19, 0x09, 0xB8, 0x09, 0x96, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x54, 0x19, 0xD7, 0x09, 0xB8, 0x09, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xBA, 0x01, 0x01, 0xDA, 0x87, 0x01, 0xD9, 0x09, 0xB9, 0x11, 0xF9, 0x19, 0xD8, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x01, 0x19, 0x10, 0x87, 0x11, 0x11, 0x11, 0x53, 0x19, 0xF7, 0x09, 0xD7, 0x09, 0xD8, 0x09, + 0xD9, 0x01, 0xD9, 0x01, 0xDA, 0x02, 0x01, 0xBA, 0x82, 0x01, 0xB9, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0x09, 0xF9, 0x89, 0x11, 0xD7, 0x11, 0x96, 0x09, 0x54, 0x11, 0x32, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x21, 0x30, 0x29, 0x50, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x03, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x84, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x10, 0x29, 0x30, 0x87, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x20, 0xEF, 0x20, 0xEE, 0x20, 0x6C, 0x8B, 0x14, 0xCC, 0x9A, 0x01, 0xCC, 0x58, 0x86, 0xCC, 0x57, 0xC4, 0x57, 0xBC, 0x56, 0xE6, 0x5D, 0xEF, 0x7F, 0xDF, 0x9F, 0xDF, 0xBF, 0x03, 0xD7, 0xBF, 0x80, 0xCF, 0xBF, 0x01, 0xD7, 0xBF, 0x80, 0xD7, 0xDF, 0x03, 0xCF, 0xDF, 0x03, 0xD7, 0xDF, 0x04, 0xDF, 0xDF, 0x89, 0xE7, 0xBF, 0xEF, 0x9F, 0xF7, 0x3F, 0xDD, 0xBC, 0x92, 0xD2, 0x81, 0xAF, 0x89, 0xD0, 0x91, 0xB1, 0x99, 0xB1, 0x99, 0xB2, 0x05, 0xA1, 0xB2, 0x06, 0xA9, 0xB2, 0x02, 0xA9, 0x92, 0x02, 0xA1, 0x92, 0x87, 0xA1, 0x91, 0x99, 0xB1, 0x91, 0xD1, 0x89, 0xD0, 0x81, + 0xCF, 0xC4, 0x78, 0xF6, 0xBF, 0xF7, 0x5F, 0x01, 0xEF, 0x9F, 0x02, 0xE7, 0xBF, 0x8A, 0xEF, 0x9F, 0xEF, 0x7F, 0xF7, 0x5F, 0xF6, 0xDF, 0xC4, 0x99, 0x82, 0x10, 0x81, 0xB0, 0x91, 0xD1, 0x91, 0xB1, 0x99, 0xB2, 0xA1, 0x92, 0x04, 0xA1, 0xB2, 0x81, 0xA1, 0x92, 0xA9, 0xB2, 0x01, 0xA1, 0xB2, 0x02, 0xA9, 0xB2, 0x80, 0xA9, 0x92, 0x02, 0xA9, 0xB2, 0x02, 0xA1, 0x92, 0x8B, 0x99, 0xB1, 0x99, 0xD1, 0x91, 0xD1, 0x89, 0xD0, 0x79, 0xAF, 0xB3, 0xF6, 0xF6, 0x9F, 0xF7, 0x5F, 0xEF, 0x9F, 0xE7, 0xBF, 0xDF, 0xBF, 0xDF, 0xDF, 0x03, 0xD7, 0xDF, 0x01, 0xCF, 0xDF, 0x07, 0xCF, 0xBF, 0x80, 0xD7, 0xBF, 0x11, 0xCF, 0xBF, 0x80, 0xCF, 0xBE, 0x03, 0xCF, 0xBF, 0x80, 0xCF, 0xBE, 0x3B, 0xCF, 0xBF, 0x80, 0xD7, 0xDF, 0x17, 0xCF, 0xBF, 0x80, 0xCF, 0xDF, 0x03, 0xCF, 0xBF, 0x80, 0xD7, 0xBF, 0x01, 0xD7, 0xDF, 0x86, 0xDF, 0xDF, 0xE7, 0x9F, 0xEE, 0xDF, 0x93, 0x54, 0x89, 0xD0, 0x99, 0xD2, 0xA1, 0xF2, 0x01, 0xA9, 0xF3, 0x07, 0xB1, 0xF3, 0x01, 0xB1, 0xD3, 0x87, 0xA9, 0xD3, 0xA9, 0xB2, 0x91, 0xB0, 0xCC, 0xB9, 0xFF, 0x3F, 0xEF, 0x7F, 0xE7, 0x9F, 0xE7, 0xBF, 0x03, 0xDF, 0xBF, 0x88, 0xE7, 0xBF, 0xEF, 0xBF, 0xF7, 0x7F, 0x9B, 0x94, 0x81, 0xF0, 0x89, 0xB1, 0x91, 0xB2, 0x99, 0x92, 0x99, 0xB2, 0x05, 0xA1, 0xB2, 0x88, 0xA1, 0x92, 0x99, 0x92, 0x91, 0xB1, 0x89, 0xD0, 0x8A, 0xD2, 0xF6, 0xFF, 0xEF, 0x9F, 0xDF, 0xDF, 0xDF, 0xFF, 0x01, 0xD7, 0xDF, 0x01, 0xD7, 0xBF, 0x01, 0xD7, 0xDF, 0x01, 0xCF, 0xBF, 0x80, 0xD7, 0xBF, 0x02, 0xCF, 0xBF, 0x0D, 0xD7, 0xBF, 0x8C, 0xDF, 0xBF, 0xDF, 0xDF, + 0xDF, 0xBF, 0xE7, 0xBF, 0xEF, 0x7F, 0xF7, 0x5F, 0xC5, 0x38, 0xBC, 0x36, 0xCC, 0x16, 0xD4, 0x16, 0xD3, 0xF6, 0xD4, 0x17, 0xD4, 0x16, 0x01, 0xDB, 0xF6, 0x01, 0xDC, 0x16, 0x84, 0xDC, 0x17, 0xDB, 0xF6, 0xDC, 0x16, 0xDB, 0xF6, 0xDC, 0x16, 0x02, 0xDB, 0xF6, 0x80, 0xDC, 0x17, 0x01, 0xDB, 0xF6, 0x02, 0xE3, 0xF6, 0x85, 0xE4, 0x17, 0xDB, 0xF6, 0xE4, 0x17, 0xDB, 0xF6, 0xE3, 0xF6, 0xE4, 0x17, 0x01, 0xE3, 0xF6, 0x81, 0xE4, 0x16, 0xE3, 0xF6, 0x01, 0xDB, 0xF6, 0x83, 0xE3, 0xF6, 0xDB, 0xF6, 0xE3, 0xF7, 0xE3, 0xF6, 0x01, 0xE4, 0x16, 0x01, 0xDB, 0xF6, 0x01, 0xDB, 0xF7, 0x02, 0xDC, 0x17, 0x8B, 0xDC, 0x18, 0xDC, 0x39, 0xDC, 0x5A, 0xD4, 0x7B, 0xC4, 0xBF, 0x20, 0xB3, 0x19, 0x58, 0x11, 0x79, 0x11, 0xDA, 0x0A, 0x3B, 0x12, 0x9D, 0x1B, 0x5F, 0x01, 0x1B, 0xBF, 0x85, 0x1B, 0x9F, 0x1B, 0x9E, 0x1B, 0x7E, 0x1B, 0x9E, 0x1B, 0x7E, 0x23, 0x7E, 0x01, 0x23, 0x5E, 0x01, 0x23, 0x7E, 0x80, 0x1B, 0x7E, 0x01, 0x13, 0x7E, 0x01, 0x0B, 0x9E, 0x88, 0x03, 0xBD, 0x03, 0xDC, 0x04, 0x1C, 0x04, 0xDC, 0x26, 0xBF, 0x1F, 0x3F, 0x17, 0x7E, 0x0F, 0xBE, 0x07, 0xBD, 0x01, 0x07, 0xDD, 0x89, 0x07, 0xDE, 0x0F, 0xBE, 0x17, 0x9E, 0x27, 0x7F, 0x3F, 0x1F, 0x5E, 0xBF, 0x75, 0x5C, 0x6A, 0xB3, 0x92, 0x13, 0xB1, 0xF4, 0x01, 0xB9, 0xB3, 0x8D, 0xC1, 0xD4, 0xC1, 0x93, 0xC1, 0xB4, 0xB9, 0xB3, 0xB9, 0xD4, 0xB2, 0x15, 0xAA, 0x36, 0x69, 0x32, 0x50, 0xF1, 0x51, 0x73, 0x49, 0x72, 0x49, 0x93, 0x41, 0x93, 0x41, 0x92, 0x01, 0x39, 0x72, 0x80, 0x39, 0x71, 0x01, 0x39, 0x51, 0x04, 0x31, 0x51, 0x80, + 0x31, 0x50, 0x01, 0x29, 0x50, 0x12, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x8C, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x09, 0x13, 0x19, 0xB5, 0x2A, 0x38, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x32, 0x19, 0x51, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x50, 0x21, 0x30, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x32, 0x85, 0x19, 0x52, 0x19, 0x53, 0x11, 0x53, 0x19, 0x53, 0x11, 0x53, 0x19, 0x53, 0x01, 0x11, 0x33, 0x01, 0x11, 0x32, 0x80, 0x19, 0x32, 0x01, 0x19, 0x12, 0x80, 0x21, 0x32, 0x03, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x05, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, + 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x0B, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x08, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x08, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x13, 0x11, 0x14, 0x11, 0x76, 0x11, 0xB7, 0x11, 0xD9, 0x11, 0xF9, 0x09, 0xD9, 0x02, 0x09, 0xB9, 0x87, 0x09, 0xB8, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x11, 0x74, 0x11, 0x53, 0x11, 0x33, 0x02, 0x19, 0x32, 0x01, 0x19, 0x12, 0x81, 0x19, 0x32, 0x19, 0x12, 0x01, 0x19, 0x32, 0x84, 0x19, 0x31, 0x19, 0x32, 0x19, 0x11, + 0x19, 0x32, 0x19, 0x11, 0x08, 0x19, 0x31, 0x81, 0x19, 0x32, 0x19, 0x31, 0x03, 0x19, 0x32, 0x01, 0x11, 0x31, 0x86, 0x11, 0x11, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x19, 0x52, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x53, 0x09, 0x53, 0x09, 0x54, 0x09, 0x76, 0x09, 0xB7, 0x09, 0xD8, 0x09, 0xF9, 0x01, 0xD8, 0x09, 0xD9, 0x01, 0x09, 0xF9, 0x85, 0x11, 0xF9, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x19, 0x11, 0x19, 0x74, 0x09, 0x76, 0x11, 0xD8, 0x09, 0xF9, 0x03, 0x01, 0xD9, 0x02, 0x01, 0xB9, 0x80, 0x01, 0xD9, 0x01, 0x09, 0xF9, 0x86, 0x11, 0xF8, 0x09, 0x96, 0x11, 0x75, 0x09, 0x33, 0x11, 0x32, 0x19, 0x12, 0x19, 0x11, 0x01, 0x19, 0x31, 0x86, 0x11, 0x12, 0x11, 0x54, 0x11, 0xB7, 0x11, 0xF9, 0x01, 0xB9, 0x01, 0x98, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x8B, 0x01, 0xDA, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xDA, 0x01, 0xB9, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xD7, 0x11, 0x55, 0x11, 0x13, 0x11, 0x32, 0x19, 0x11, 0x02, 0x19, 0x10, 0x85, 0x19, 0x11, 0x19, 0x74, 0x19, 0xF7, 0x12, 0x19, 0x09, 0xD8, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xDA, 0x8B, 0x01, 0xBA, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xFA, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0x96, 0x09, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x02, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, + 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x05, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x84, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x0E, 0x29, 0x30, 0x89, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x20, 0xEF, 0x20, 0xCE, 0x20, 0x4B, 0xB4, 0x18, 0xCC, 0x79, 0x01, 0xCC, 0x58, 0x86, 0xCC, 0x37, 0xC4, 0x57, 0xB4, 0x77, 0xEE, 0xDF, 0xEF, 0x9F, 0xDF, 0x9F, 0xDF, 0xBF, 0x02, 0xD7, 0xBF, 0x02, 0xCF, 0xBF, 0x80, 0xD7, 0xBF, 0x02, 0xCF, 0xBF, 0x81, 0xCF, 0xDF, 0xCF, 0xBF, 0x03, 0xD7, 0xDF, 0x02, 0xDF, 0xDF, 0x8A, 0xE7, 0xDF, 0xEF, 0xBF, 0xF7, 0x9F, 0xEE, 0xDF, 0xA3, 0xB4, 0x82, 0x10, 0x91, 0xD1, 0x99, 0xB1, 0x99, 0xB2, 0xA1, 0x92, 0xA1, 0xB2, 0x01, 0xA9, 0xB2, 0x85, 0xA9, 0xB3, 0xA9, 0xB2, 0xA9, 0xB3, 0xA9, 0xD3, 0xA9, 0xB3, 0xA9, 0xD3, 0x01, 0xA9, 0xB3, 0x80, 0xA9, 0xD3, 0x07, 0xA9, 0xB3, 0x80, 0xA9, 0xB2, 0x01, 0xA9, 0x92, 0x88, 0xA1, 0xB2, 0xA1, 0x91, 0x99, 0xB1, 0x89, 0xB0, 0x92, 0xB2, 0xE5, 0xFD, 0xFF, 0x5F, 0xF7, 0x7F, 0xEF, 0x7F, 0x01, 0xEF, 0x9F, 0x86, 0xF7, 0x7F, 0xFF, 0x5F, 0xE5, 0xDC, 0x92, + 0xF3, 0x89, 0xD0, 0x91, 0xB1, 0x99, 0xB1, 0x02, 0xA1, 0xB2, 0x01, 0xA9, 0xB2, 0x01, 0xA9, 0xB3, 0x03, 0xA9, 0xD3, 0x80, 0xA9, 0xB3, 0x02, 0xA9, 0xD3, 0x04, 0xA9, 0xB3, 0x81, 0xB1, 0xB3, 0xA9, 0xB3, 0x02, 0xA9, 0xB2, 0x01, 0xA1, 0xB2, 0x88, 0x99, 0xD1, 0x91, 0xF1, 0x8A, 0x71, 0xC4, 0xF9, 0xFF, 0x7F, 0xEF, 0x7F, 0xE7, 0xBF, 0xDF, 0xBF, 0xDF, 0xDF, 0x01, 0xD7, 0xDF, 0x81, 0xD7, 0xBF, 0xCF, 0xDF, 0x39, 0xCF, 0xBF, 0x80, 0xCF, 0xBE, 0x08, 0xCF, 0xBF, 0x80, 0xCF, 0xBE, 0x01, 0xCF, 0xBF, 0x80, 0xCF, 0xBE, 0x18, 0xCF, 0xBF, 0x02, 0xCF, 0x9F, 0x0C, 0xCF, 0xBF, 0x01, 0xCF, 0xBE, 0x08, 0xCF, 0xBF, 0x80, 0xD7, 0xBF, 0x01, 0xD7, 0xDF, 0x86, 0xD7, 0xBF, 0xE7, 0x9F, 0xE6, 0xFF, 0x93, 0x74, 0x81, 0xD0, 0x99, 0xF2, 0xA1, 0xF2, 0x01, 0xA9, 0xF3, 0x02, 0xB1, 0xF3, 0x80, 0xB1, 0xD3, 0x01, 0xB9, 0xF3, 0x01, 0xB1, 0xF3, 0x01, 0xB1, 0xD3, 0x86, 0xA9, 0xD2, 0xA1, 0xB2, 0x89, 0xB0, 0xC4, 0x98, 0xFF, 0x5F, 0xEF, 0x7F, 0xE7, 0x9F, 0x01, 0xDF, 0xBF, 0x80, 0xDF, 0x9F, 0x01, 0xDF, 0xBF, 0x87, 0xE7, 0xBF, 0xEF, 0x9F, 0xD6, 0x1C, 0x82, 0x30, 0x89, 0xB1, 0x91, 0xB2, 0x99, 0xB2, 0xA1, 0xD2, 0x01, 0xA1, 0xD3, 0x02, 0xA9, 0xD3, 0x02, 0xA9, 0xB3, 0x86, 0xA1, 0x92, 0x99, 0x92, 0x91, 0xB1, 0x8A, 0x10, 0xCD, 0x3A, 0xEF, 0x9F, 0xDF, 0xDF, 0x02, 0xD7, 0xDF, 0x80, 0xD7, 0xBF, 0x0B, 0xCF, 0xBF, 0x80, 0xD7, 0xBF, 0x02, 0xCF, 0xBF, 0x81, 0xD7, 0xBF, 0xCF, 0x9F, 0x06, 0xD7, 0xBF, 0x02, 0xDF, 0xBF, 0x85, 0xE7, 0x9F, 0xF7, 0x5F, 0xCD, 0x59, 0xBC, 0x15, 0xC3, 0xF6, + 0xCB, 0xF6, 0x03, 0xD3, 0xF6, 0x80, 0xDC, 0x16, 0x0A, 0xDB, 0xF6, 0x83, 0xE3, 0xF6, 0xDB, 0xF6, 0xDB, 0xD6, 0xE3, 0xF6, 0x02, 0xDB, 0xF6, 0x05, 0xE3, 0xF6, 0x01, 0xDB, 0xF6, 0x01, 0xE3, 0xF6, 0x05, 0xDB, 0xF6, 0x04, 0xDB, 0xF7, 0x01, 0xDC, 0x18, 0x8E, 0xDC, 0x39, 0xDC, 0x3A, 0xD4, 0x5B, 0xC4, 0x9E, 0x20, 0xD4, 0x19, 0x78, 0x11, 0x99, 0x11, 0xBA, 0x12, 0x1B, 0x12, 0x5C, 0x1A, 0xFE, 0x23, 0x7F, 0x2B, 0xBF, 0x2B, 0x9F, 0x23, 0x7E, 0x01, 0x2B, 0x7D, 0x01, 0x33, 0x5D, 0x01, 0x33, 0x3D, 0x8F, 0x33, 0x5E, 0x33, 0x7E, 0x2B, 0x7E, 0x23, 0x9E, 0x1B, 0x7E, 0x13, 0x9E, 0x0B, 0x9E, 0x03, 0x9D, 0x03, 0xDC, 0x04, 0x1C, 0x04, 0xBC, 0x1E, 0x5F, 0x1E, 0xFF, 0x17, 0x7E, 0x0F, 0xBE, 0x07, 0xBD, 0x01, 0x07, 0xDD, 0x89, 0x07, 0xBD, 0x0F, 0xBD, 0x17, 0x9E, 0x27, 0x7E, 0x37, 0x1E, 0x5E, 0xBF, 0x75, 0x7C, 0x6A, 0xB3, 0x92, 0x33, 0xA9, 0xD3, 0x01, 0xB9, 0xB3, 0x02, 0xC1, 0xB4, 0x89, 0xC1, 0xD4, 0xB9, 0xD4, 0xB1, 0xF4, 0xAA, 0x56, 0x60, 0xF1, 0x50, 0xF1, 0x51, 0x73, 0x49, 0x72, 0x41, 0x72, 0x41, 0x93, 0x02, 0x39, 0x72, 0x02, 0x39, 0x71, 0x04, 0x31, 0x51, 0x82, 0x29, 0x50, 0x29, 0x51, 0x29, 0x50, 0x05, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x0A, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, + 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x07, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x19, 0x31, 0x85, 0x11, 0x32, 0x11, 0x12, 0x19, 0x95, 0x2A, 0x17, 0x21, 0xF6, 0x19, 0xB5, 0x01, 0x11, 0x12, 0x81, 0x19, 0x31, 0x19, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x19, 0x32, 0x11, 0x32, 0x11, 0x52, 0x01, 0x11, 0x53, 0x84, 0x19, 0x94, 0x19, 0x95, 0x19, 0xB5, 0x11, 0x75, 0x19, 0xB5, 0x03, 0x19, 0x95, 0x82, 0x11, 0x74, 0x11, 0x54, 0x11, 0x33, 0x01, 0x11, 0x12, 0x01, 0x19, 0x12, 0x80, 0x21, 0x32, 0x02, 0x21, 0x31, 0x83, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x86, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, + 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x0B, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x50, 0x09, 0x21, 0x30, 0x82, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x01, 0x11, 0x13, 0x84, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xF9, 0x09, 0xD9, 0x02, 0x09, 0xB9, 0x85, 0x09, 0xD9, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0xB7, 0x00, 0xF3, 0x00, 0xD2, 0x04, 0x08, 0xF2, 0x80, 0x08, 0xD2, 0x03, 0x08, 0xF2, 0x82, 0x09, 0x12, 0x08, 0xF1, 0x08, 0xF2, 0x01, 0x08, 0xF1, 0x02, 0x09, 0x12, 0x03, 0x08, 0xF1, 0x81, 0x08, 0xF2, 0x08, 0xF1, 0x01, 0x08, 0xF2, 0x03, 0x08, 0xF1, 0x01, 0x09, 0x12, 0x02, 0x08, 0xF1, 0x02, 0x10, 0xF1, 0x89, 0x09, 0x11, 0x09, 0x12, 0x09, 0x13, 0x01, 0x13, 0x09, 0x55, 0x09, 0x76, 0x09, 0x97, 0x09, 0xB8, 0x01, 0xB8, 0x01, 0xD8, 0x02, 0x09, 0xF9, 0x97, 0x12, 0x19, 0x11, 0xF8, 0x11, 0x96, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x18, 0xF0, 0x19, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x19, + 0x10, 0x19, 0x11, 0x11, 0x33, 0x11, 0x96, 0x11, 0xD8, 0x09, 0xF9, 0x09, 0xFA, 0x01, 0xD9, 0x01, 0x01, 0xB9, 0x02, 0x01, 0xD9, 0x87, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xF8, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x91, 0x11, 0x13, 0x1A, 0x17, 0x12, 0x19, 0x01, 0xB8, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0x99, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xD9, 0x11, 0xB8, 0x09, 0x96, 0x09, 0x34, 0x11, 0x33, 0x11, 0x32, 0x02, 0x19, 0x31, 0x85, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x19, 0x53, 0x19, 0xF8, 0x11, 0xF8, 0x01, 0x09, 0xD9, 0x04, 0x01, 0xB9, 0x01, 0x09, 0xF9, 0x85, 0x09, 0xF8, 0x11, 0xF8, 0x11, 0xB6, 0x09, 0x54, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x89, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, + 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x0E, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x8E, 0x21, 0x2F, 0x21, 0x0F, 0x20, 0xEF, 0x20, 0xCE, 0x20, 0x6B, 0xC4, 0x9A, 0xCC, 0x59, 0xCC, 0x38, 0xCC, 0x37, 0xC4, 0x37, 0xBC, 0x36, 0xB4, 0xB7, 0xEF, 0x1F, 0xE7, 0x9F, 0xDF, 0x9F, 0x02, 0xD7, 0xBF, 0x08, 0xCF, 0xBF, 0x80, 0xCF, 0xDF, 0x03, 0xD7, 0xDF, 0x01, 0xDF, 0xDF, 0x87, 0xDF, 0xBF, 0xEF, 0x9F, 0xF7, 0x3F, 0xD5, 0x5B, 0x82, 0x50, 0x89, 0xD0, 0x91, 0xD1, 0x99, 0xD2, 0x01, 0xA1, 0xB2, 0x83, 0xA9, 0xB2, 0xA9, 0xB3, 0xA9, 0xD3, 0xA9, 0xB3, 0x01, 0xA9, 0xD3, 0x0E, 0xB1, 0xD3, 0x80, 0xB1, 0xB3, 0x01, 0xA9, 0xB3, 0x8F, 0xA9, 0xB2, 0xA9, 0x92, 0xA1, 0x92, 0x99, 0xB1, 0x91, 0xB1, 0x89, 0xD0, 0xCC, 0x99, 0xFE, 0xDF, 0xFF, 0x5F, 0xF7, 0x5F, 0xFF, 0x5F, 0xFE, 0xDF, 0xCC, 0xB9, 0x81, 0xD0, 0x91, 0xB0, 0x99, 0xD2, 0x01, 0xA1, 0xB2, 0x81, 0xA9, 0xB2, 0xA9, 0xB3, 0x01, 0xA9, 0xD3, 0x80, 0xA9, 0xB3, 0x01, 0xB1, 0xD3, 0x01, 0xA9, 0xD3, 0x02, 0xB1, 0xD3, 0x80, 0xB1, 0xF3, 0x08, 0xB1, 0xD3, 0x01, 0xB1, 0xB3, 0x80, 0xA9, 0xB3, 0x01, 0xA9, 0xB2, 0x88, 0xA1, 0xB2, 0x99, 0xB1, 0x99, 0xD1, 0x81, 0xAF, 0xA3, 0x95, 0xF6, 0xBF, 0xEF, 0x7F, 0xE7, 0x9F, 0xDF, 0xBF, 0x02, 0xD7, 0xDF, 0x80, 0xD7, 0xBF, 0x04, 0xCF, 0xBF, 0x02, 0xCF, 0x9F, 0x0F, 0xCF, 0xBF, 0x81, 0xCF, 0x9F, 0xCF, 0xBF, 0x04, 0xCF, 0x9E, 0x07, 0xCF, 0xBF, 0x01, 0xCF, 0x9F, 0x07, 0xCF, 0xBF, 0x80, 0xCF, 0x9F, 0x11, 0xCF, 0xBF, 0x03, 0xCF, 0xBE, 0x15, 0xCF, 0xBF, 0x85, 0xCF, 0x9F, 0xCF, 0xBF, 0xCF, 0x9E, 0xCF, + 0xBF, 0xCF, 0x9F, 0xCF, 0xBF, 0x01, 0xCF, 0x9F, 0x01, 0xCF, 0xBF, 0x01, 0xCF, 0x9E, 0x0C, 0xCF, 0xBF, 0x80, 0xCF, 0x9F, 0x04, 0xCF, 0xBF, 0x8A, 0xCF, 0xDF, 0xD7, 0xDF, 0xDF, 0xDF, 0xE7, 0x9F, 0xE6, 0xBF, 0x9B, 0x94, 0x81, 0xF0, 0x99, 0xF1, 0xA1, 0xF2, 0xA9, 0xF2, 0xA9, 0xF3, 0x03, 0xB1, 0xF3, 0x80, 0xB1, 0xD3, 0x02, 0xB1, 0xF3, 0x80, 0xB1, 0xD3, 0x01, 0xA9, 0xD3, 0x84, 0xA1, 0xB2, 0x89, 0xB0, 0xC4, 0xD9, 0xF7, 0x3F, 0xE7, 0x7F, 0x01, 0xDF, 0x9F, 0x80, 0xDF, 0xBF, 0x01, 0xDF, 0x9F, 0x88, 0xDF, 0xBF, 0xE7, 0x9F, 0xEF, 0x5F, 0xB4, 0xB7, 0x79, 0xF0, 0x91, 0xD2, 0x99, 0xF2, 0xA1, 0xD3, 0xA1, 0xF3, 0x04, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x01, 0xA9, 0xB3, 0x85, 0xA1, 0xB2, 0x99, 0xB2, 0x91, 0xD1, 0x92, 0xD2, 0xF7, 0x7F, 0xDF, 0xBF, 0x01, 0xD7, 0xDF, 0x80, 0xD7, 0xBF, 0x03, 0xCF, 0xBF, 0x80, 0xCF, 0x9F, 0x0B, 0xCF, 0xBF, 0x02, 0xCF, 0x9F, 0x01, 0xD7, 0xBF, 0x80, 0xCF, 0x9F, 0x02, 0xD7, 0x9F, 0x01, 0xD7, 0xBF, 0x87, 0xDF, 0xBF, 0xDF, 0x9F, 0xE7, 0x7F, 0xF7, 0x5F, 0xCD, 0x9A, 0xB4, 0x15, 0xC3, 0xF6, 0xCB, 0xD6, 0x01, 0xD3, 0xD6, 0x82, 0xD3, 0xF6, 0xD3, 0xD6, 0xD3, 0xF6, 0x07, 0xDB, 0xF6, 0x01, 0xDB, 0xD6, 0x80, 0xDB, 0xF6, 0x01, 0xDB, 0xD6, 0x80, 0xDB, 0xF6, 0x01, 0xE3, 0xD6, 0x88, 0xDB, 0xD6, 0xE3, 0xD6, 0xE3, 0xF6, 0xE3, 0xD6, 0xE3, 0xF6, 0xE3, 0xD6, 0xDB, 0xD6, 0xE3, 0xF6, 0xE3, 0xD6, 0x01, 0xDB, 0xF6, 0x80, 0xDB, 0xD6, 0x01, 0xDB, 0xF6, 0x01, 0xE3, 0xF6, 0x82, 0xDB, 0xF6, 0xDB, 0xD6, 0xDB, 0xF6, 0x01, 0xDB, 0xF7, 0xA7, 0xE3, + 0xF7, 0xDB, 0xF8, 0xE4, 0x18, 0xE4, 0x19, 0xDC, 0x3A, 0xD4, 0x5B, 0xC4, 0x7E, 0x20, 0xD4, 0x21, 0x99, 0x19, 0x9A, 0x11, 0xBA, 0x11, 0xDB, 0x12, 0x1B, 0x1A, 0xBD, 0x2B, 0x3E, 0x3B, 0x9F, 0x43, 0xBF, 0x43, 0x9E, 0x43, 0x7D, 0x4B, 0x7D, 0x4B, 0x5D, 0x53, 0x5D, 0x53, 0x3D, 0x53, 0x5D, 0x53, 0x7D, 0x4B, 0x7D, 0x43, 0x7E, 0x33, 0x7D, 0x23, 0x9E, 0x1B, 0x9D, 0x13, 0xBD, 0x03, 0x9C, 0x03, 0xDC, 0x03, 0xFC, 0x04, 0xBC, 0x1E, 0x3F, 0x1E, 0xDF, 0x17, 0x5E, 0x0F, 0x9D, 0x07, 0xBD, 0x01, 0x07, 0xDD, 0x8C, 0x0F, 0xDD, 0x0F, 0xBD, 0x17, 0x9E, 0x27, 0x7E, 0x37, 0x1E, 0x5E, 0xBF, 0x75, 0x7C, 0x6A, 0x93, 0x92, 0x12, 0xB1, 0xF4, 0xB9, 0xB3, 0xB9, 0xD4, 0xC1, 0xB3, 0x01, 0xC1, 0xB4, 0x86, 0xB9, 0xB3, 0xB9, 0xD4, 0xB2, 0x15, 0xAA, 0x56, 0x68, 0xF1, 0x59, 0x11, 0x59, 0x73, 0x01, 0x49, 0x72, 0x83, 0x41, 0x92, 0x39, 0x52, 0x39, 0x72, 0x39, 0x71, 0x01, 0x39, 0x92, 0x80, 0x39, 0x71, 0x02, 0x31, 0x51, 0x80, 0x31, 0x31, 0x02, 0x29, 0x51, 0x02, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x0C, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x07, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, + 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8C, 0x21, 0x50, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x2A, 0x17, 0x22, 0x17, 0x19, 0x95, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x01, 0x11, 0x53, 0x81, 0x11, 0x74, 0x11, 0x95, 0x01, 0x11, 0xB5, 0x80, 0x19, 0xD6, 0x02, 0x19, 0xF7, 0x82, 0x19, 0xD7, 0x11, 0xD7, 0x19, 0xD7, 0x02, 0x19, 0xF7, 0x82, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x54, 0x01, 0x11, 0x33, 0x01, 0x19, 0x12, 0x81, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x08, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, + 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x04, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x87, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x0A, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x88, 0x21, 0x10, 0x21, 0x11, 0x21, 0x31, 0x19, 0x12, 0x11, 0x12, 0x09, 0x13, 0x11, 0x75, 0x19, 0xD7, 0x11, 0xF8, 0x01, 0x11, 0xF9, 0x83, 0x09, 0xB9, 0x09, 0xD9, 0x01, 0xB9, 0x09, 0xD9, 0x01, 0x11, 0xF9, 0x88, 0x09, 0x96, 0x01, 0x35, 0x01, 0x34, 0x09, 0x54, 0x09, 0x34, 0x09, 0x14, 0x09, 0x34, 0x09, 0x14, 0x09, 0x33, 0x01, 0x09, 0x34, 0x03, 0x09, 0x33, 0x80, 0x09, 0x13, 0x05, 0x09, 0x33, 0x80, 0x09, 0x53, 0x01, 0x09, 0x33, 0x80, 0x11, 0x54, 0x02, 0x09, 0x54, 0x80, 0x09, 0x53, 0x01, 0x09, 0x54, 0x02, 0x11, 0x74, 0x80, 0x11, 0x53, 0x01, 0x11, 0x33, 0x80, 0x11, 0x53, 0x01, 0x09, 0x33, 0x92, 0x09, 0x54, 0x11, 0x75, 0x11, 0x96, 0x09, 0xB7, 0x09, 0xB8, 0x09, 0xD9, 0x01, 0xB9, 0x09, 0xD9, 0x01, 0xD9, 0x09, 0xF9, 0x12, 0x1A, 0x12, 0x19, 0x11, 0xD8, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, + 0x10, 0x93, 0x19, 0x10, 0x19, 0x11, 0x19, 0x33, 0x11, 0x75, 0x11, 0xD7, 0x09, 0xD8, 0x09, 0xF9, 0x09, 0xD9, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xB8, 0x01, 0xD8, 0x01, 0xB8, 0x11, 0xF8, 0x11, 0xB7, 0x09, 0x75, 0x11, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x01, 0x19, 0x11, 0x88, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x18, 0xF1, 0x11, 0x12, 0x19, 0xD6, 0x12, 0x18, 0x09, 0xB8, 0x09, 0xD9, 0x01, 0x01, 0xD9, 0x89, 0x01, 0xB9, 0x01, 0xB8, 0x09, 0xD9, 0x09, 0xF9, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x55, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x11, 0x8B, 0x19, 0x31, 0x21, 0x31, 0x19, 0x30, 0x19, 0x11, 0x18, 0xF1, 0x19, 0x33, 0x19, 0xB6, 0x11, 0xF8, 0x11, 0xD9, 0x09, 0xD9, 0x09, 0xB9, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x01, 0x09, 0xF9, 0x84, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x01, 0x11, 0x32, 0x81, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x88, 0x21, + 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x0D, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x8B, 0x20, 0xEF, 0x20, 0xCE, 0x28, 0xAC, 0xCC, 0xBB, 0xCC, 0x58, 0xCC, 0x38, 0xCC, 0x37, 0xC4, 0x17, 0xBC, 0x36, 0xBC, 0xD8, 0xEF, 0x5F, 0xE7, 0x9F, 0x01, 0xD7, 0x9F, 0x01, 0xCF, 0x9F, 0x02, 0xCF, 0xBF, 0x02, 0xCF, 0x9F, 0x02, 0xCF, 0xBF, 0x01, 0xD7, 0xBF, 0x01, 0xD7, 0xDF, 0x01, 0xD7, 0xBF, 0x88, 0xDF, 0xBF, 0xE7, 0x7F, 0xF7, 0x5F, 0xAC, 0x36, 0x82, 0x30, 0x91, 0xD1, 0x99, 0xB1, 0xA1, 0xB2, 0xA9, 0xB2, 0x02, 0xA9, 0xD3, 0x07, 0xB1, 0xD3, 0x01, 0xB1, 0xF3, 0x01, 0xB1, 0xD3, 0x01, 0xB1, 0xF3, 0x01, 0xB1, 0xD3, 0x80, 0xB1, 0xF3, 0x02, 0xB1, 0xD3, 0x81, 0xB1, 0xB3, 0xB1, 0xD3, 0x01, 0xB1, 0xB3, 0x80, 0xA9, 0xB3, 0x01, 0xA9, 0x92, 0x89, 0xA1, 0x92, 0x99, 0xB1, 0x91, 0xD0, 0xA3, 0x14, 0xED, 0xBD, 0xFF, 0x1F, 0xFE, 0x7F, 0xAB, 0x54, 0x91, 0xF1, 0x99, 0xB1, 0x01, 0xA1, 0xB2, 0x02, 0xA9, 0xB3, 0x07, 0xB1, 0xD3, 0x01, 0xB1, 0xF4, 0x05, 0xB1, 0xF3, 0x01, 0xB1, 0xD3, 0x80, 0xB1, 0xF3, 0x05, 0xB1, 0xD3, 0x02, 0xA9, 0xB2, 0x87, 0xA1, 0x92, 0x99, 0xB1, 0x89, 0xD0, 0x92, 0xD2, 0xEE, 0x9F, 0xF7, 0x7F, 0xE7, 0x9F, 0xDF, 0xBF, 0x02, 0xD7, 0xBF, 0x04, 0xCF, 0xBF, 0x08, 0xCF, 0x9F, 0x01, 0xCF, 0xBF, 0x01, 0xCF, 0x9E, 0x84, 0xCF, 0xBF, 0xCF, 0xBE, 0xC7, 0x9E, 0xC7, 0xBE, 0xCF, 0xBE, 0x04, 0xCF, 0x9E, 0x81, 0xCF, 0xBF, 0xC7, 0x9E, 0x03, 0xCF, 0x9E, + 0x80, 0xCF, 0x9F, 0x04, 0xCF, 0xBF, 0x80, 0xCF, 0x9F, 0x03, 0xCF, 0xBF, 0x01, 0xCF, 0x9F, 0x01, 0xCF, 0xBF, 0x01, 0xCF, 0x9F, 0x81, 0xCF, 0xBF, 0xCF, 0x9E, 0x05, 0xCF, 0xBF, 0x02, 0xCF, 0xBE, 0x80, 0xCF, 0xBF, 0x01, 0xCF, 0x9F, 0x81, 0xCF, 0xBF, 0xCF, 0xBE, 0x01, 0xCF, 0x9E, 0x81, 0xCF, 0xBE, 0xC7, 0x9E, 0x01, 0xCF, 0x9E, 0x05, 0xCF, 0xBE, 0x80, 0xCF, 0x9E, 0x03, 0xCF, 0x9F, 0x01, 0xCF, 0x9E, 0x0A, 0xCF, 0x9F, 0x80, 0xCF, 0xBF, 0x05, 0xCF, 0x9F, 0x14, 0xCF, 0xBF, 0x8A, 0xCF, 0xDF, 0xD7, 0xDF, 0xD7, 0xBF, 0xDF, 0x9F, 0xDE, 0xBF, 0x9B, 0xB5, 0x81, 0xF0, 0x99, 0xF1, 0xA1, 0xF2, 0xA9, 0xF2, 0xA9, 0xF3, 0x06, 0xB1, 0xF3, 0x01, 0xB1, 0xD3, 0x86, 0xA9, 0xD3, 0xA9, 0xD2, 0xA1, 0xB2, 0x89, 0x90, 0xC4, 0xD9, 0xF7, 0x3F, 0xE7, 0x7F, 0x01, 0xDF, 0x9F, 0x02, 0xD7, 0x9F, 0x84, 0xDF, 0xBF, 0xE7, 0x9F, 0xEF, 0x3F, 0x93, 0x94, 0x81, 0xF0, 0x01, 0x99, 0xF2, 0x01, 0xA1, 0xF3, 0x01, 0xAA, 0x13, 0x80, 0xB2, 0x13, 0x03, 0xA9, 0xF3, 0x89, 0xA9, 0xD3, 0xA9, 0xB3, 0xA9, 0xB2, 0xA1, 0xB2, 0x99, 0xB1, 0x79, 0xCF, 0xF7, 0x5F, 0xE7, 0x9F, 0xD7, 0xBF, 0xD7, 0xDF, 0x02, 0xCF, 0xBF, 0x05, 0xCF, 0x9F, 0x02, 0xCF, 0xBF, 0x81, 0xCF, 0x9F, 0xCF, 0xBF, 0x01, 0xCF, 0x9F, 0x80, 0xCF, 0xBF, 0x07, 0xCF, 0x9F, 0x05, 0xD7, 0x9F, 0x86, 0xDF, 0x9F, 0xE7, 0x7F, 0xEF, 0x5F, 0xD5, 0x9A, 0xB3, 0xF5, 0xC3, 0xD5, 0xCB, 0xD6, 0x05, 0xD3, 0xD6, 0x81, 0xDB, 0xD6, 0xDB, 0xF6, 0x11, 0xDB, 0xD6, 0x01, 0xE3, 0xD6, 0x01, 0xDB, 0xD6, 0x80, 0xE3, 0xD6, 0x07, 0xDB, 0xD6, 0x01, + 0xDB, 0xD7, 0x93, 0xE3, 0xF7, 0xDB, 0xF8, 0xE3, 0xF8, 0xDC, 0x19, 0xDC, 0x3A, 0xD4, 0x3B, 0xC4, 0x5E, 0x28, 0xF4, 0x29, 0x78, 0x21, 0x79, 0x19, 0x9A, 0x19, 0xBA, 0x1A, 0x1B, 0x2A, 0x9D, 0x32, 0xDD, 0x43, 0x3D, 0x53, 0x5D, 0x5B, 0x7D, 0x63, 0x7D, 0x6B, 0x5C, 0x02, 0x6B, 0x1B, 0x90, 0x62, 0xFB, 0x63, 0x1C, 0x5B, 0x3C, 0x53, 0x5C, 0x3B, 0x5C, 0x33, 0x9D, 0x23, 0xBD, 0x1B, 0xDD, 0x0B, 0xBC, 0x03, 0xDC, 0x04, 0x1C, 0x04, 0x9C, 0x15, 0xFF, 0x16, 0xBF, 0x17, 0x5F, 0x0F, 0x9E, 0x07, 0xBD, 0x02, 0x07, 0xDD, 0x96, 0x0F, 0xBD, 0x17, 0x9D, 0x27, 0x7E, 0x37, 0x1E, 0x5E, 0xDF, 0x75, 0x7C, 0x6A, 0x93, 0x92, 0x12, 0xA9, 0xD3, 0xB9, 0xD4, 0xB9, 0x93, 0xC1, 0xB3, 0xC1, 0x93, 0xC1, 0xB4, 0xB9, 0xB3, 0xB9, 0xD4, 0xB1, 0xD4, 0xAA, 0x15, 0x79, 0x32, 0x58, 0xF1, 0x59, 0x52, 0x51, 0x72, 0x49, 0x72, 0x01, 0x41, 0x52, 0x85, 0x39, 0x71, 0x39, 0x92, 0x39, 0x91, 0x31, 0x71, 0x31, 0x51, 0x31, 0x71, 0x02, 0x31, 0x51, 0x02, 0x29, 0x51, 0x80, 0x29, 0x50, 0x05, 0x29, 0x30, 0x80, 0x29, 0x10, 0x0A, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x07, + 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x2A, 0x38, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x19, 0x51, 0x21, 0x31, 0x21, 0x50, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x01, 0x19, 0x31, 0x88, 0x19, 0x32, 0x11, 0x52, 0x11, 0x53, 0x11, 0x73, 0x11, 0x95, 0x19, 0xD6, 0x19, 0xF6, 0x19, 0xF7, 0x1A, 0x17, 0x01, 0x19, 0xF7, 0x83, 0x1A, 0x18, 0x19, 0xF7, 0x1A, 0x18, 0x19, 0xF7, 0x01, 0x1A, 0x18, 0x81, 0x1A, 0x38, 0x1A, 0x18, 0x01, 0x1A, 0x17, 0x82, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x01, 0x11, 0x33, 0x80, 0x11, 0x12, 0x01, 0x19, 0x32, 0x81, 0x21, 0x51, 0x21, 0x31, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x06, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x06, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x03, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, + 0x0F, 0x04, 0x21, 0x30, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x85, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x86, 0x19, 0x11, 0x10, 0xF1, 0x10, 0xF2, 0x09, 0x13, 0x11, 0x55, 0x19, 0xD7, 0x1A, 0x19, 0x01, 0x11, 0xF9, 0x80, 0x09, 0xB9, 0x01, 0x01, 0xB9, 0x82, 0x09, 0xB9, 0x09, 0xD9, 0x12, 0x19, 0x01, 0x1A, 0x39, 0x80, 0x1A, 0x19, 0x01, 0x1A, 0x18, 0x01, 0x22, 0x19, 0x81, 0x22, 0x39, 0x22, 0x18, 0x01, 0x22, 0x38, 0x06, 0x22, 0x18, 0x02, 0x22, 0x38, 0x05, 0x22, 0x18, 0x85, 0x22, 0x38, 0x1A, 0x18, 0x22, 0x38, 0x1A, 0x18, 0x1A, 0x17, 0x1A, 0x18, 0x07, 0x19, 0xF7, 0x80, 0x19, 0xF8, 0x01, 0x11, 0xF9, 0x82, 0x09, 0xF9, 0x0A, 0x1A, 0x09, 0xFA, 0x01, 0x01, 0xD9, 0x86, 0x09, 0xD9, 0x12, 0x19, 0x11, 0xF9, 0x11, 0xB7, 0x09, + 0x34, 0x11, 0x33, 0x11, 0x11, 0x01, 0x19, 0x11, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x10, 0x19, 0x11, 0x19, 0x33, 0x11, 0x54, 0x11, 0x97, 0x11, 0xD8, 0x09, 0xD9, 0x01, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x86, 0x09, 0xF8, 0x12, 0x18, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x54, 0x11, 0x53, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x83, 0x18, 0xF1, 0x11, 0x12, 0x11, 0x95, 0x19, 0xF7, 0x01, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x89, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xB8, 0x11, 0xB7, 0x19, 0xD7, 0x11, 0x96, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x21, 0x10, 0x87, 0x19, 0x11, 0x19, 0x12, 0x19, 0x95, 0x11, 0xD7, 0x11, 0xB8, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x87, 0x11, 0xF8, 0x1A, 0x18, 0x11, 0xB6, 0x11, 0x75, 0x09, 0x33, 0x11, 0x33, 0x19, 0x53, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x51, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x50, 0x01, 0x21, 0x2F, 0x8C, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, + 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x0C, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x20, 0xEE, 0x20, 0xCD, 0x39, 0x0D, 0xCC, 0xDB, 0x01, 0xCC, 0x38, 0x86, 0xCC, 0x17, 0xC3, 0xF7, 0xB4, 0x16, 0xC5, 0x7A, 0xEF, 0x5F, 0xDF, 0x9F, 0xD7, 0x9F, 0x04, 0xCF, 0x9F, 0x80, 0xCF, 0xBF, 0x03, 0xCF, 0x9F, 0x82, 0xCF, 0xBF, 0xCF, 0x9F, 0xCF, 0xBF, 0x03, 0xD7, 0xBF, 0x86, 0xDF, 0xBF, 0xE7, 0x9F, 0xF7, 0x3F, 0xAB, 0xF6, 0x81, 0xF0, 0x91, 0xD1, 0x99, 0xB2, 0x01, 0xA1, 0xB2, 0x01, 0xA9, 0xD3, 0x01, 0xB1, 0xD3, 0x05, 0xB1, 0xF3, 0x80, 0xB1, 0xD3, 0x02, 0xB1, 0xF3, 0x02, 0xB1, 0xF4, 0x04, 0xB1, 0xF3, 0x05, 0xB1, 0xD3, 0x01, 0xB1, 0xB3, 0x80, 0xB1, 0x93, 0x01, 0xA9, 0x92, 0x89, 0xA1, 0xB2, 0x99, 0xB1, 0x91, 0xD0, 0xCB, 0x97, 0x91, 0xD0, 0x99, 0xB1, 0xA1, 0xB1, 0xA1, 0xB2, 0xA9, 0xB2, 0xA9, 0xB3, 0x02, 0xB1, 0xB3, 0x03, 0xB1, 0xD3, 0x80, 0xB1, 0xF4, 0x01, 0xB1, 0xD3, 0x03, 0xB1, 0xF4, 0x80, 0xB1, 0xD3, 0x09, 0xB1, 0xF3, 0x03, 0xB1, 0xD3, 0x81, 0xB1, 0xB3, 0xA9, 0xB3, 0x01, 0xA9, 0xB2, 0x87, 0xA1, 0xB1, 0x91, 0xD1, 0x8A, 0x30, 0xEE, 0x1E, 0xF7, 0x5F, 0xE7, 0x9F, 0xDF, 0xBF, 0xD7, 0xBF, 0x02, 0xCF, 0xBF, 0x01, 0xCF, 0x9F, 0x80, 0xC7, 0x9F, 0x02, 0xCF, 0x9F, 0x05, 0xC7, 0x9F, 0x13, 0xC7, 0x9E, 0x80, 0xC7, 0x9F, 0x01, 0xCF, 0x9F, 0x83, 0xC7, 0x9F, 0xC7, 0x9E, 0xC7, 0x9F, 0xCF, 0x9E, 0x04, 0xCF, 0x9F, 0x80, 0xCF, 0x9E, 0x02, 0xCF, 0x9F, + 0x04, 0xC7, 0x9E, 0x80, 0xCF, 0x9F, 0x1E, 0xC7, 0x9E, 0x01, 0xC7, 0x9F, 0x02, 0xC7, 0x9E, 0x80, 0xC7, 0x9F, 0x02, 0xCF, 0x9F, 0x80, 0xCF, 0xBF, 0x02, 0xCF, 0x9F, 0x04, 0xCF, 0xBF, 0x01, 0xCF, 0x9F, 0x02, 0xCF, 0x9E, 0x01, 0xC7, 0x9E, 0x80, 0xCF, 0x9F, 0x01, 0xCF, 0xBF, 0x01, 0xCF, 0x9F, 0x01, 0xCF, 0xBF, 0x04, 0xCF, 0x9F, 0x01, 0xCF, 0xBF, 0x01, 0xD7, 0xBF, 0x85, 0xE7, 0x9F, 0xDE, 0x9E, 0x9B, 0xB5, 0x81, 0xF0, 0x99, 0xF2, 0xA1, 0xF2, 0x01, 0xA9, 0xF3, 0x02, 0xB1, 0xF3, 0x02, 0xB1, 0xD3, 0x01, 0xB1, 0xF3, 0x88, 0xB1, 0xD3, 0xA9, 0xD3, 0xA9, 0xD2, 0xA1, 0xB1, 0x89, 0x90, 0xC4, 0xD9, 0xF7, 0x3F, 0xE7, 0x5F, 0xDF, 0x7F, 0x02, 0xD7, 0x9F, 0x86, 0xD7, 0x7F, 0xDF, 0x9F, 0xE7, 0x7F, 0xEE, 0xFF, 0x8B, 0x33, 0x8A, 0x11, 0x99, 0xF2, 0x01, 0xA1, 0xF3, 0x02, 0xAA, 0x13, 0x80, 0xB2, 0x13, 0x01, 0xB2, 0x14, 0x81, 0xB1, 0xF3, 0xB1, 0xF4, 0x01, 0xA9, 0xD3, 0x86, 0xA9, 0xB3, 0xA1, 0xB2, 0xA1, 0xD2, 0x81, 0xD0, 0xDE, 0x3D, 0xE7, 0x9F, 0xD7, 0xBF, 0x02, 0xCF, 0xBF, 0x06, 0xCF, 0x9F, 0x01, 0xC7, 0x9F, 0x01, 0xCF, 0x9F, 0x80, 0xC7, 0x9F, 0x0F, 0xCF, 0x9F, 0x01, 0xD7, 0x9F, 0x89, 0xDF, 0x9F, 0xE7, 0x7F, 0xF7, 0x5F, 0xD5, 0xBA, 0xB3, 0xF5, 0xC3, 0xD5, 0xCB, 0xB6, 0xD3, 0xB6, 0xD3, 0xD6, 0xD3, 0xB6, 0x01, 0xD3, 0xD6, 0x0A, 0xDB, 0xD6, 0x0F, 0xDB, 0xB6, 0x80, 0xE3, 0xD6, 0x01, 0xDB, 0xD6, 0x83, 0xDB, 0xB6, 0xDB, 0xD6, 0xDB, 0xB6, 0xDB, 0xD6, 0x02, 0xDB, 0xD7, 0x01, 0xDB, 0xF8, 0xA3, 0xDC, 0x1A, 0xD4, 0x3B, 0xBC, 0x3D, 0x28, 0xD4, 0x29, 0x58, + 0x21, 0x79, 0x21, 0x99, 0x21, 0xBA, 0x29, 0xFB, 0x32, 0x3B, 0x3A, 0x7B, 0x42, 0x7A, 0x5A, 0xBB, 0x6A, 0xDA, 0x7B, 0x1B, 0x83, 0x1B, 0x82, 0xDA, 0x7A, 0x78, 0x72, 0x78, 0x72, 0x99, 0x72, 0xB9, 0x6A, 0xDA, 0x62, 0xFB, 0x4B, 0x3B, 0x3B, 0x7C, 0x33, 0xBD, 0x23, 0xFD, 0x13, 0xDD, 0x0B, 0xFC, 0x04, 0x1C, 0x04, 0x9C, 0x15, 0xBE, 0x16, 0x7E, 0x17, 0x5F, 0x0F, 0x9E, 0x0F, 0xBD, 0x02, 0x07, 0xBD, 0x9D, 0x0F, 0xBD, 0x17, 0x9D, 0x27, 0x7E, 0x37, 0x1E, 0x56, 0xBE, 0x75, 0x9C, 0x6A, 0xB3, 0x92, 0x33, 0xA9, 0xF3, 0xB9, 0xD3, 0xB9, 0xB3, 0xC1, 0xD4, 0xC1, 0xB3, 0xC1, 0xD4, 0xB9, 0xB3, 0xB9, 0xD4, 0xB1, 0xB3, 0xA9, 0xD4, 0x89, 0x73, 0x69, 0x11, 0x61, 0x52, 0x59, 0x52, 0x49, 0x72, 0x41, 0x31, 0x41, 0x51, 0x39, 0x72, 0x39, 0x92, 0x39, 0x91, 0x39, 0x71, 0x31, 0x71, 0x04, 0x31, 0x51, 0x82, 0x29, 0x51, 0x29, 0x50, 0x29, 0x51, 0x01, 0x29, 0x50, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x06, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x07, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, + 0x21, 0x10, 0x8D, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x13, 0x19, 0x95, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x12, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x50, 0x03, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x87, 0x21, 0x51, 0x19, 0x51, 0x19, 0x32, 0x11, 0x52, 0x11, 0x53, 0x11, 0x74, 0x11, 0xB5, 0x19, 0xF6, 0x01, 0x19, 0xF7, 0x8B, 0x1A, 0x17, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0xB6, 0x11, 0x96, 0x11, 0x95, 0x11, 0xB6, 0x19, 0xF7, 0x1A, 0x17, 0x01, 0x1A, 0x38, 0x84, 0x1A, 0x18, 0x1A, 0x17, 0x19, 0xF7, 0x11, 0xB5, 0x09, 0x53, 0x01, 0x11, 0x33, 0x01, 0x19, 0x32, 0x01, 0x21, 0x31, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x05, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, + 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x03, 0x29, 0x30, 0x04, 0x21, 0x10, 0x85, 0x29, 0x30, 0x29, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x84, 0x11, 0x12, 0x11, 0x13, 0x11, 0x75, 0x11, 0xB7, 0x12, 0x19, 0x02, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x81, 0x01, 0xB8, 0x09, 0xB8, 0x01, 0x09, 0xD9, 0x02, 0x09, 0xD8, 0x87, 0x11, 0xD8, 0x09, 0xD8, 0x11, 0xD8, 0x09, 0xB7, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0xD8, 0x11, 0xD7, 0x05, 0x11, 0xD8, 0x82, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xF8, 0x04, 0x11, 0xD8, 0x83, 0x11, 0xF8, 0x11, 0xD7, 0x11, 0xF8, 0x11, 0xD8, 0x04, 0x11, 0xD7, 0x80, 0x11, 0xB7, 0x02, 0x11, 0xD7, 0x82, 0x11, 0xD8, 0x09, 0xD8, 0x09, 0xB8, 0x01, 0x09, 0xD9, 0x02, 0x01, 0xD9, 0x80, 0x09, + 0xD9, 0x01, 0x11, 0xF9, 0x86, 0x11, 0x97, 0x11, 0x75, 0x11, 0x13, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x19, 0x11, 0x19, 0x12, 0x19, 0x34, 0x19, 0x96, 0x11, 0xB7, 0x01, 0x11, 0xD8, 0x81, 0x09, 0xD8, 0x11, 0xF8, 0x01, 0x11, 0xF7, 0x84, 0x11, 0xD6, 0x11, 0x94, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x84, 0x21, 0x11, 0x19, 0x12, 0x11, 0x74, 0x19, 0xD6, 0x11, 0xB7, 0x01, 0x11, 0xD8, 0x88, 0x11, 0xF8, 0x11, 0xD8, 0x09, 0xB7, 0x11, 0xB7, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x54, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x11, 0x81, 0x19, 0x30, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x11, 0x19, 0x12, 0x19, 0x75, 0x19, 0xD7, 0x11, 0xB7, 0x19, 0xF8, 0x01, 0x11, 0xD7, 0x86, 0x11, 0xF8, 0x11, 0xF7, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x09, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x07, 0x21, + 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x0C, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x20, 0xEE, 0x20, 0xAD, 0x39, 0x0D, 0xCC, 0xBA, 0xCC, 0x38, 0x02, 0xC3, 0xF7, 0x84, 0xAB, 0xF5, 0xD5, 0xFC, 0xEF, 0x7F, 0xDF, 0x9F, 0xCF, 0x9F, 0x01, 0xCF, 0x7F, 0x01, 0xCF, 0x9F, 0x80, 0xCF, 0xBF, 0x05, 0xCF, 0x9F, 0x03, 0xCF, 0xBF, 0x89, 0xD7, 0xBF, 0xDF, 0x9F, 0xE7, 0x7F, 0xF7, 0x3F, 0xA3, 0xF5, 0x81, 0xF0, 0x91, 0xB1, 0xA1, 0xB2, 0xA9, 0xB2, 0xA9, 0xB3, 0x02, 0xA9, 0xD3, 0x80, 0xB1, 0xD3, 0x03, 0xB1, 0xF3, 0x82, 0xB9, 0xF3, 0xB1, 0xF3, 0xB9, 0xF3, 0x01, 0xB1, 0xF3, 0x82, 0xB9, 0xF4, 0xB1, 0xF3, 0xB1, 0xF4, 0x01, 0xB1, 0xD3, 0x09, 0xB1, 0xF3, 0x01, 0xB1, 0xD3, 0x01, 0xB1, 0xB3, 0x80, 0xB1, 0x93, 0x01, 0xB1, 0x92, 0x86, 0xA9, 0x92, 0xA9, 0xB2, 0xA1, 0x92, 0xA1, 0xB2, 0xA9, 0xB2, 0xA9, 0x92, 0xA9, 0xB2, 0x01, 0xB1, 0xB3, 0x81, 0xB1, 0xD3, 0xB1, 0xB3, 0x05, 0xB1, 0xD3, 0x80, 0xB1, 0xF4, 0x01, 0xB9, 0xF4, 0x80, 0xB1, 0xD3, 0x01, 0xB1, 0xF4, 0x81, 0xB1, 0xF3, 0xB9, 0xF4, 0x07, 0xB1, 0xF3, 0x81, 0xB9, 0xF3, 0xB1, 0xF3, 0x03, 0xB1, 0xD3, 0x01, 0xB1, 0xB3, 0x01, 0xA9, 0x92, 0x85, 0xA1, 0xB1, 0x91, 0xB1, 0x8A, 0x31, 0xE6, 0x1D, 0xF7, 0x5F, 0xE7, 0x9F, 0x01, 0xD7, 0xBF, 0x01, 0xCF, 0xBF, 0x80, 0xCF, 0x9F, 0x03, 0xC7, 0x9F, 0x82, 0xC7, 0x7E, 0xC7, 0x9F, 0xC7, 0x9E, 0x03, 0xC7, 0x9F, 0x01, 0xC7, 0x9E, 0x80, 0xC7, 0x9F, 0x01, 0xC7, + 0x9E, 0x80, 0xC7, 0x9F, 0x0A, 0xC7, 0x9E, 0x80, 0xC7, 0x9F, 0x02, 0xC7, 0x9E, 0x81, 0xC7, 0x9F, 0xCF, 0x9F, 0x05, 0xC7, 0x9E, 0x01, 0xCF, 0x9F, 0x82, 0xC7, 0x9E, 0xC7, 0x9F, 0xCF, 0x9F, 0x25, 0xC7, 0x9E, 0x04, 0xC7, 0x9F, 0x80, 0xC7, 0x9E, 0x03, 0xC7, 0x9F, 0x80, 0xC7, 0x9E, 0x01, 0xC7, 0x9F, 0x81, 0xC7, 0x9E, 0xCF, 0x9F, 0x01, 0xC7, 0x9E, 0x04, 0xCF, 0x9F, 0x81, 0xC7, 0x9E, 0xC7, 0x9F, 0x01, 0xC7, 0x9E, 0x80, 0xCF, 0xBF, 0x01, 0xC7, 0x9E, 0x07, 0xC7, 0x9F, 0x01, 0xCF, 0x9F, 0x01, 0xCF, 0xBF, 0x87, 0xD7, 0xBF, 0xDF, 0x9F, 0xD6, 0x9E, 0x9B, 0xB5, 0x81, 0xF0, 0x99, 0xF2, 0xA1, 0xF2, 0xA9, 0xF3, 0x02, 0xB1, 0xF3, 0x02, 0xB1, 0xD3, 0x83, 0xB9, 0xF3, 0xB1, 0xF3, 0xB1, 0xF4, 0xB1, 0xD3, 0x01, 0xA9, 0xD3, 0x84, 0xA1, 0x91, 0x89, 0xB0, 0xC4, 0xD9, 0xF7, 0x3F, 0xE7, 0x5F, 0x02, 0xD7, 0x7F, 0x01, 0xD7, 0x9F, 0x85, 0xDF, 0x9F, 0xE7, 0x7F, 0xE6, 0xDF, 0x8B, 0x33, 0x8A, 0x11, 0x9A, 0x12, 0x01, 0xA1, 0xF3, 0x87, 0xAA, 0x13, 0xAA, 0x34, 0xAA, 0x13, 0xB2, 0x13, 0xB2, 0x14, 0xB2, 0x13, 0xB2, 0x14, 0xB1, 0xF3, 0x01, 0xA9, 0xD3, 0x86, 0xA9, 0xB3, 0xA9, 0xD2, 0xA1, 0xD2, 0x89, 0xF0, 0xC5, 0x5A, 0xE7, 0x7F, 0xD7, 0x9F, 0x02, 0xCF, 0xBF, 0x86, 0xC7, 0x9F, 0xCF, 0x9F, 0xC7, 0x9F, 0xCF, 0x9F, 0xC7, 0x9E, 0xCF, 0x9F, 0xC7, 0x9E, 0x06, 0xC7, 0x9F, 0x05, 0xCF, 0x9F, 0x80, 0xC7, 0x7F, 0x08, 0xCF, 0x9F, 0x88, 0xD7, 0x9F, 0xDF, 0x9F, 0xE7, 0x7F, 0xEF, 0x5F, 0xDD, 0xFC, 0xAB, 0xD5, 0xC3, 0xD5, 0xCB, 0xB5, 0xCB, 0xB6, 0x04, 0xD3, 0xB6, 0x80, 0xDB, + 0xD6, 0x14, 0xDB, 0xB6, 0x01, 0xE3, 0xB6, 0x05, 0xDB, 0xB6, 0x81, 0xE3, 0xD6, 0xDB, 0xB6, 0x01, 0xDB, 0xB7, 0x89, 0xDB, 0xD7, 0xDB, 0xD8, 0xDB, 0xF8, 0xDB, 0xF9, 0xD4, 0x1A, 0xBC, 0x1D, 0x30, 0xD3, 0x29, 0x37, 0x29, 0x78, 0x31, 0x99, 0x01, 0x31, 0xB9, 0x9A, 0x41, 0xF9, 0x49, 0xF8, 0x62, 0x7A, 0x7A, 0xDA, 0x8A, 0xFA, 0x92, 0xD9, 0x92, 0xB9, 0x9A, 0x98, 0x92, 0x78, 0x8A, 0x77, 0x8A, 0x78, 0x8A, 0xB9, 0x7A, 0xB9, 0x6A, 0xDA, 0x53, 0x1B, 0x4B, 0x9C, 0x3B, 0xDD, 0x2C, 0x1E, 0x13, 0xFD, 0x0C, 0x1D, 0x04, 0x3C, 0x04, 0x7C, 0x0D, 0x9E, 0x16, 0x5E, 0x17, 0x5F, 0x0F, 0x9E, 0x0F, 0xBD, 0x02, 0x07, 0xBD, 0x8B, 0x0F, 0xBD, 0x17, 0x9D, 0x27, 0x7E, 0x37, 0x1E, 0x56, 0xBE, 0x75, 0x7C, 0x6A, 0xB3, 0x92, 0x33, 0xA9, 0xF3, 0xB1, 0xB3, 0xB9, 0xB3, 0xC1, 0xB3, 0x02, 0xC1, 0xD4, 0x8A, 0xB9, 0xB3, 0xB1, 0xB4, 0xA9, 0xB4, 0xAA, 0x15, 0x9A, 0x15, 0x71, 0x72, 0x61, 0x32, 0x51, 0x31, 0x41, 0x31, 0x41, 0x72, 0x41, 0x71, 0x01, 0x39, 0x71, 0x83, 0x39, 0x51, 0x39, 0x71, 0x31, 0x51, 0x31, 0x71, 0x02, 0x31, 0x51, 0x02, 0x29, 0x50, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x0C, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x08, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, + 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x8A, 0x21, 0x11, 0x19, 0x31, 0x19, 0x12, 0x11, 0x13, 0x19, 0x95, 0x29, 0xF7, 0x21, 0xF7, 0x21, 0xD6, 0x11, 0x33, 0x11, 0x32, 0x19, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x8A, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x94, 0x19, 0xD6, 0x19, 0xF6, 0x19, 0xF7, 0x01, 0x1A, 0x17, 0x81, 0x19, 0xF7, 0x11, 0xB6, 0x01, 0x11, 0x95, 0x80, 0x11, 0x74, 0x03, 0x11, 0x54, 0x01, 0x09, 0x54, 0x84, 0x09, 0x74, 0x11, 0xB6, 0x19, 0xF7, 0x1A, 0x17, 0x1A, 0x38, 0x01, 0x1A, 0x17, 0x83, 0x11, 0xB6, 0x11, 0x74, 0x11, 0x53, 0x11, 0x33, 0x01, 0x19, 0x32, 0x83, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x07, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, + 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x04, 0x29, 0x10, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8E, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x11, 0x11, 0x10, 0xF2, 0x09, 0x13, 0x11, 0x75, 0x11, 0xB7, 0x11, 0xF8, 0x11, 0xD9, 0x09, 0xD9, 0x09, 0xB9, 0x01, 0x01, 0xB9, 0x01, 0x01, 0xB8, 0x80, 0x09, 0xD8, 0x09, 0x09, 0xB8, 0x80, 0x09, 0xD8, 0x02, 0x09, 0xB8, 0x85, 0x09, 0xD8, 0x11, 0xB8, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xD7, 0x11, 0xD8, 0x02, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xD7, 0x03, 0x09, 0xD8, 0x01, 0x11, 0xD8, 0x01, + 0x11, 0xF8, 0x81, 0x12, 0x18, 0x11, 0xF8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x01, 0x09, 0xB9, 0x02, 0x01, 0xB9, 0x8A, 0x09, 0xD9, 0x12, 0x1A, 0x11, 0xD8, 0x09, 0x76, 0x09, 0x55, 0x11, 0x13, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x29, 0x51, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x83, 0x20, 0xEF, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x86, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x34, 0x19, 0x75, 0x19, 0xB6, 0x19, 0xD7, 0x01, 0x11, 0xB6, 0x85, 0x19, 0xB6, 0x11, 0x94, 0x11, 0x73, 0x19, 0x53, 0x19, 0x32, 0x11, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x8D, 0x21, 0x11, 0x19, 0x11, 0x19, 0x33, 0x19, 0x74, 0x11, 0x75, 0x19, 0xD7, 0x19, 0xF7, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x19, 0x74, 0x11, 0x32, 0x11, 0x12, 0x02, 0x19, 0x31, 0x01, 0x19, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x8E, 0x18, 0xF0, 0x18, 0xF1, 0x19, 0x53, 0x21, 0xB5, 0x19, 0xB6, 0x11, 0xB6, 0x19, 0xB6, 0x19, 0xD7, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x33, 0x19, 0x33, 0x19, 0x12, 0x11, 0x11, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, + 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x0C, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x91, 0x21, 0x0F, 0x20, 0xEE, 0x20, 0xAD, 0x41, 0x2E, 0xCC, 0x9A, 0xCC, 0x18, 0xC3, 0xF7, 0xC3, 0xD6, 0xBB, 0xD6, 0xB4, 0x16, 0xD6, 0x3C, 0xE7, 0x7F, 0xDF, 0x9F, 0xCF, 0x9F, 0xCF, 0x5E, 0xCF, 0x7F, 0xCF, 0x9F, 0xC7, 0x7F, 0x01, 0xCF, 0x9F, 0x01, 0xC7, 0x7F, 0x02, 0xCF, 0x9F, 0x80, 0xCF, 0xBF, 0x01, 0xCF, 0x9F, 0x8A, 0xD7, 0xBF, 0xD7, 0x9F, 0xE7, 0x7F, 0xEF, 0x1F, 0xAC, 0x16, 0x81, 0xF0, 0x91, 0xD1, 0xA1, 0xB2, 0xA1, 0xD2, 0xA9, 0xD3, 0xA9, 0xB3, 0x01, 0xB1, 0xD3, 0x84, 0xB1, 0xF3, 0xB1, 0xD3, 0xB1, 0xF3, 0xB9, 0xF3, 0xB1, 0xD3, 0x04, 0xB9, 0xF3, 0x82, 0xB1, 0xF3, 0xB9, 0xF4, 0xB9, 0xF3, 0x07, 0xB1, 0xF3, 0x80, 0xB9, 0xF3, 0x01, 0xB9, 0xF4, 0x81, 0xB1, 0xD3, 0xB9, 0xF3, 0x03, 0xB9, 0xD3, 0x0B, 0xB1, 0xB3, 0x80, 0xB1, 0xD3, 0x04, 0xB9, 0xD3, 0x80, 0xB9, 0xF4, 0x01, 0xB9, 0xD4, 0x01, 0xB9, 0xF4, 0x02, 0xB1, 0xF4, 0x04, 0xB1, 0xF3, 0x81, 0xB1, 0xD3, 0xB1, 0xF3, 0x01, 0xB9, 0xF3, 0x02, 0xB1, 0xF3, 0x81, 0xB9, 0xF3, 0xB1, 0xF3, 0x02, 0xB1, 0xD3, 0x01, 0xB1, 0xB3, 0x88, 0xB1, 0x92, 0xA9, 0x92, 0xA1, 0xB2, 0x99, 0xD1, 0x8A, 0x31, 0xE5, 0xFD, 0xEF, 0x5F, 0xDF, 0x9F, 0xD7, 0x9F, 0x02, 0xCF, 0x9F, 0x02, 0xC7, 0x9F, 0x84, + 0xC7, 0x7E, 0xC7, 0x7F, 0xC7, 0x7E, 0xC7, 0x9F, 0xC7, 0x9E, 0x01, 0xC7, 0x9F, 0x03, 0xC7, 0x9E, 0x81, 0xC7, 0x9F, 0xC7, 0x9E, 0x01, 0xC7, 0x9F, 0x1A, 0xC7, 0x9E, 0x80, 0xC7, 0x7E, 0x2A, 0xC7, 0x9E, 0x03, 0xC7, 0x9F, 0x03, 0xC7, 0x9E, 0x80, 0xC7, 0x9F, 0x02, 0xC7, 0x9E, 0x01, 0xC7, 0x9F, 0x09, 0xC7, 0x9E, 0x80, 0xC7, 0x7E, 0x03, 0xC7, 0x9E, 0x83, 0xC7, 0x7E, 0xC7, 0x9E, 0xC7, 0x9F, 0xCF, 0x9F, 0x01, 0xCF, 0xBF, 0x87, 0xCF, 0x9F, 0xDF, 0x7F, 0xD6, 0x7E, 0x9B, 0xB5, 0x81, 0xF0, 0x99, 0xF2, 0xA1, 0xF2, 0xA9, 0xF3, 0x02, 0xB1, 0xF3, 0x8D, 0xB1, 0xD3, 0xB9, 0xD3, 0xB9, 0xF3, 0xB9, 0xD3, 0xB1, 0xD3, 0xB1, 0xF4, 0xB1, 0xF3, 0xA9, 0xD3, 0xA9, 0xD2, 0xA1, 0x91, 0x89, 0xB0, 0xC4, 0xD9, 0xEF, 0x3F, 0xDF, 0x5F, 0x01, 0xD7, 0x7F, 0x80, 0xD7, 0x9F, 0x01, 0xD7, 0x7F, 0x8A, 0xD7, 0x9F, 0xDF, 0x7F, 0xE6, 0xDF, 0x8B, 0x33, 0x8A, 0x31, 0x9A, 0x13, 0xA2, 0x13, 0xA1, 0xF3, 0xAA, 0x13, 0xA9, 0xF3, 0xAA, 0x13, 0x02, 0xB2, 0x13, 0x80, 0xB1, 0xF3, 0x01, 0xA9, 0xF3, 0x02, 0xA9, 0xD3, 0x86, 0xA1, 0xD2, 0x89, 0xF0, 0xC5, 0x3A, 0xE7, 0x7F, 0xD7, 0x9F, 0xCF, 0x9F, 0xCF, 0xBF, 0x02, 0xC7, 0x9F, 0x01, 0xC7, 0x9E, 0x80, 0xC7, 0x9F, 0x01, 0xC7, 0x9E, 0x82, 0xC7, 0x9F, 0xC7, 0x9E, 0xC7, 0x9F, 0x01, 0xC7, 0x9E, 0x01, 0xC7, 0x9F, 0x80, 0xC7, 0x9E, 0x03, 0xC7, 0x9F, 0x03, 0xC7, 0x7F, 0x01, 0xCF, 0x9F, 0x05, 0xCF, 0x7F, 0x88, 0xD7, 0x7F, 0xDF, 0x7F, 0xE7, 0x5F, 0xEF, 0x3F, 0xDD, 0xFC, 0xB3, 0xF5, 0xC3, 0xB5, 0xCB, 0xB5, 0xCB, 0xB6, 0x06, 0xD3, 0xB6, 0x04, + 0xDB, 0xB6, 0x01, 0xDB, 0x96, 0x80, 0xDB, 0xB6, 0x01, 0xDB, 0x96, 0x02, 0xDB, 0xB6, 0x07, 0xDB, 0x96, 0x01, 0xDB, 0xB6, 0x05, 0xDB, 0x96, 0x80, 0xDB, 0xB6, 0x01, 0xDB, 0xB7, 0x8F, 0xDB, 0xD7, 0xDB, 0xD8, 0xDB, 0xF9, 0xD3, 0xFA, 0xC4, 0x1D, 0x38, 0xB3, 0x39, 0x57, 0x39, 0x78, 0x41, 0x78, 0x41, 0x77, 0x41, 0x36, 0x61, 0xD7, 0x9B, 0x3C, 0xA3, 0x1B, 0x9A, 0xD9, 0x9A, 0x98, 0x01, 0xA2, 0x77, 0x80, 0xAA, 0x77, 0x01, 0xAA, 0x97, 0x90, 0xA2, 0x97, 0x9A, 0xB8, 0x8A, 0xD9, 0x72, 0xD9, 0x63, 0x1A, 0x53, 0x9C, 0x43, 0xFD, 0x34, 0x1D, 0x1C, 0x1D, 0x0C, 0x1C, 0x04, 0x3C, 0x04, 0x9C, 0x0D, 0x5E, 0x0E, 0x3E, 0x1F, 0x5F, 0x0F, 0x9D, 0x0F, 0xBD, 0x01, 0x07, 0xBD, 0x01, 0x0F, 0xBD, 0x87, 0x17, 0x9D, 0x27, 0x7E, 0x37, 0x1E, 0x56, 0xBE, 0x75, 0x7C, 0x6A, 0xB3, 0x92, 0x12, 0xAA, 0x13, 0x01, 0xB9, 0xD3, 0x02, 0xC1, 0xB4, 0x01, 0xC1, 0xD4, 0x8C, 0xB1, 0xB3, 0xB1, 0xB4, 0xA9, 0xD4, 0xAA, 0x15, 0x92, 0x15, 0x61, 0x11, 0x59, 0x31, 0x49, 0x31, 0x49, 0x51, 0x41, 0x51, 0x41, 0x71, 0x39, 0x71, 0x39, 0x51, 0x04, 0x31, 0x51, 0x02, 0x29, 0x51, 0x05, 0x29, 0x30, 0x01, 0x29, 0x10, 0x0A, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x09, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x89, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, + 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x08, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x8E, 0x29, 0x2F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x21, 0xB5, 0x2A, 0x38, 0x21, 0xF7, 0x19, 0x95, 0x09, 0x12, 0x11, 0x12, 0x19, 0x31, 0x02, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xF7, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x95, 0x01, 0x11, 0x74, 0x80, 0x11, 0x53, 0x01, 0x11, 0x33, 0x80, 0x11, 0x53, 0x01, 0x11, 0x33, 0x01, 0x11, 0x53, 0x85, 0x11, 0x73, 0x09, 0x53, 0x09, 0x33, 0x09, 0x74, 0x11, 0x95, 0x19, 0xF7, 0x01, 0x1A, 0x38, 0x84, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x53, 0x11, 0x12, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x09, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x07, 0x21, + 0x2F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x8D, 0x21, 0x30, 0x21, 0x50, 0x21, 0x51, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x09, 0x33, 0x11, 0x75, 0x11, 0xD7, 0x11, 0xF8, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xB9, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x05, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x02, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x08, 0x09, 0xD8, 0x03, 0x11, 0xD8, 0x03, 0x09, 0xB8, 0x01, 0x09, 0xB9, 0x86, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xFA, 0x12, 0x3A, 0x11, 0xF9, 0x11, 0x97, 0x11, 0x55, 0x01, 0x11, 0x33, 0x01, 0x19, 0x11, 0x80, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, + 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x21, 0x10, 0x8B, 0x21, 0x11, 0x19, 0x12, 0x19, 0x33, 0x19, 0x54, 0x19, 0x74, 0x19, 0x95, 0x11, 0x74, 0x19, 0x74, 0x11, 0x53, 0x19, 0x52, 0x11, 0x32, 0x19, 0x31, 0x02, 0x19, 0x11, 0x81, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x87, 0x11, 0x53, 0x19, 0x95, 0x19, 0xB5, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x53, 0x19, 0x52, 0x19, 0x32, 0x01, 0x19, 0x11, 0x81, 0x19, 0x10, 0x19, 0x30, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x84, 0x20, 0xF0, 0x21, 0x11, 0x19, 0x32, 0x19, 0x73, 0x19, 0x94, 0x01, 0x19, 0x74, 0x81, 0x19, 0x95, 0x19, 0x74, 0x01, 0x19, 0x33, 0x80, 0x19, 0x32, 0x03, 0x19, 0x11, 0x02, 0x21, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x8D, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, + 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x0D, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x20, 0xEE, 0x20, 0xAD, 0x41, 0x2E, 0xCC, 0x9A, 0xC4, 0x17, 0xC3, 0xD6, 0x01, 0xBB, 0xB6, 0x85, 0xB4, 0x16, 0xDE, 0x9E, 0xDF, 0x7F, 0xD7, 0x9F, 0xCF, 0x9F, 0xCF, 0x7F, 0x05, 0xC7, 0x7F, 0x01, 0xC7, 0x9F, 0x81, 0xCF, 0x9F, 0xC7, 0x9F, 0x02, 0xCF, 0x9F, 0x88, 0xD7, 0xBF, 0xDF, 0x7F, 0xEF, 0x3F, 0xAC, 0x37, 0x82, 0x10, 0x91, 0xB1, 0xA1, 0xB2, 0xA9, 0xB2, 0xA9, 0xD3, 0x03, 0xB1, 0xD3, 0x02, 0xB9, 0xF3, 0x80, 0xB9, 0xD3, 0x06, 0xB9, 0xF3, 0x01, 0xB1, 0xF3, 0x80, 0xB1, 0xD3, 0x01, 0xB1, 0xF3, 0x01, 0xB1, 0xF4, 0x02, 0xB1, 0xF3, 0x01, 0xB9, 0xF3, 0x82, 0xB9, 0xF4, 0xB9, 0xD3, 0xB9, 0xF3, 0x04, 0xB9, 0xD3, 0x05, 0xB1, 0xB3, 0x01, 0xB9, 0xB3, 0x01, 0xB1, 0xB3, 0x06, 0xB9, 0xD3, 0x01, 0xB9, 0xF4, 0x02, 0xB9, 0xD4, 0x02, 0xB1, 0xD3, 0x03, 0xB1, 0xF3, 0x80, 0xB9, 0xF3, 0x02, 0xB1, 0xF3, 0x05, 0xB9, 0xF3, 0x80, 0xB1, 0xF3, 0x02, 0xB1, 0xD3, 0x8A, 0xB1, 0xB3, 0xB1, 0x93, 0xB1, 0x92, 0xA9, 0x92, 0xA1, 0x92, 0x99, 0xD1, 0x8A, 0x31, 0xE6, 0x5E, 0xEF, 0x5F, 0xDF, 0x7F, 0xD7, 0x9F, 0x01, 0xCF, 0x9F, 0x01, 0xC7, 0x9F, 0x02, 0xC7, 0x7E, 0x80, 0xC7, 0x9F, 0x02, 0xC7, 0x7E, 0x80, 0xBF, 0x7E, 0x02, 0xC7, 0x7E, 0x02, 0xC7, 0x9E, 0x01, 0xC7, 0x9F, 0x05, 0xC7, 0x9E, 0x80, 0xC7, 0x7E, 0x02, 0xC7, 0x9E, 0x02, 0xC7, 0x7E, 0x80, 0xC7, 0x9E, 0x04, 0xC7, 0x7E, 0x04, 0xC7, 0x9E, 0x80, 0xC7, 0x7E, 0x03, 0xC7, 0x9E, + 0x80, 0xC7, 0x7E, 0x23, 0xC7, 0x9E, 0x03, 0xC7, 0x9F, 0x80, 0xC7, 0x9E, 0x02, 0xC7, 0x9F, 0x03, 0xC7, 0x7E, 0x04, 0xC7, 0x9E, 0x01, 0xC7, 0x7E, 0x81, 0xC7, 0x9F, 0xC7, 0x7E, 0x08, 0xC7, 0x9E, 0x05, 0xC7, 0x7E, 0x01, 0xC7, 0x9F, 0x02, 0xCF, 0x9F, 0x87, 0xDF, 0x7F, 0xD6, 0x7E, 0x9B, 0xB5, 0x81, 0xF0, 0x99, 0xF2, 0xA1, 0xF2, 0xA9, 0xF3, 0xB2, 0x13, 0x01, 0xB1, 0xF3, 0x80, 0xB1, 0xD3, 0x02, 0xB9, 0xD3, 0x89, 0xB9, 0xF3, 0xB1, 0xF4, 0xB1, 0xF3, 0xA9, 0xD3, 0xA9, 0xD2, 0x99, 0x91, 0x89, 0xB0, 0xC4, 0xB9, 0xEF, 0x3F, 0xDF, 0x5F, 0x01, 0xD7, 0x7F, 0x01, 0xCF, 0x7F, 0x01, 0xD7, 0x9F, 0x84, 0xDF, 0x7F, 0xE6, 0xDF, 0x8B, 0x33, 0x8A, 0x31, 0x9A, 0x13, 0x01, 0xA2, 0x13, 0x80, 0xA9, 0xF3, 0x02, 0xAA, 0x13, 0x81, 0xA9, 0xF3, 0xB2, 0x13, 0x01, 0xB1, 0xF3, 0x80, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x01, 0xA1, 0xD2, 0x84, 0x89, 0xF0, 0xC5, 0x3A, 0xE7, 0x5F, 0xD7, 0x9F, 0xCF, 0x9F, 0x02, 0xC7, 0x9F, 0x80, 0xC7, 0x9E, 0x05, 0xC7, 0x7E, 0x01, 0xC7, 0x9E, 0x80, 0xC7, 0x9F, 0x04, 0xC7, 0x7E, 0x05, 0xC7, 0x7F, 0x81, 0xC7, 0x7E, 0xC7, 0x7F, 0x01, 0xC7, 0x7E, 0x06, 0xCF, 0x7F, 0x87, 0xD7, 0x7F, 0xDF, 0x5F, 0xEF, 0x5F, 0xE6, 0x1C, 0xB3, 0xF5, 0xBB, 0xD5, 0xC3, 0xB5, 0xCB, 0xB6, 0x05, 0xD3, 0xB6, 0x01, 0xD3, 0x96, 0x1B, 0xDB, 0x96, 0x01, 0xDB, 0x97, 0x8F, 0xDB, 0xB7, 0xDB, 0xB8, 0xDB, 0xD9, 0xD3, 0xDA, 0xC3, 0xFC, 0x40, 0xB3, 0x49, 0x56, 0x49, 0x57, 0x51, 0x77, 0x48, 0xD4, 0x82, 0x59, 0xA2, 0xFA, 0xAA, 0xD9, 0xAA, 0xB8, 0xAA, 0x77, 0xAA, 0x56, 0x01, + 0xB2, 0x56, 0x01, 0xBA, 0x76, 0xA1, 0xB2, 0x76, 0xB2, 0x96, 0xA2, 0x97, 0x92, 0x97, 0x7A, 0xB8, 0x63, 0x1A, 0x5B, 0x9C, 0x43, 0xFD, 0x34, 0x3E, 0x1C, 0x1D, 0x0C, 0x1D, 0x04, 0x5C, 0x04, 0x9C, 0x0D, 0x5E, 0x0D, 0xFE, 0x1F, 0x7F, 0x0F, 0x9D, 0x0F, 0xBD, 0x0F, 0xDD, 0x07, 0xBD, 0x07, 0xBC, 0x0F, 0xBD, 0x17, 0x9D, 0x27, 0x7E, 0x37, 0x1D, 0x5E, 0xBE, 0x75, 0x7B, 0x62, 0x93, 0x92, 0x12, 0xA9, 0xF3, 0xB9, 0xD3, 0xB9, 0x93, 0xC1, 0xB4, 0xB9, 0xB4, 0x01, 0xC1, 0xD4, 0x81, 0xB9, 0xD4, 0xB9, 0xB4, 0x01, 0xB1, 0xB4, 0x88, 0xB2, 0x15, 0xAA, 0x36, 0x81, 0x73, 0x61, 0x31, 0x51, 0x31, 0x49, 0x31, 0x41, 0x51, 0x41, 0x71, 0x39, 0x51, 0x01, 0x39, 0x71, 0x03, 0x31, 0x51, 0x01, 0x29, 0x51, 0x80, 0x29, 0x31, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x05, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x05, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x08, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x11, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x21, 0xB5, 0x2A, 0x17, + 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x13, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x11, 0xA4, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x95, 0x11, 0x54, 0x09, 0x33, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x19, 0x32, 0x11, 0x12, 0x19, 0x32, 0x19, 0x52, 0x11, 0x32, 0x19, 0x52, 0x11, 0x52, 0x11, 0x32, 0x11, 0x52, 0x11, 0x53, 0x09, 0x53, 0x11, 0x95, 0x11, 0xD6, 0x22, 0x38, 0x1A, 0x37, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x0D, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x89, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, + 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x50, 0x21, 0x51, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x11, 0x13, 0x11, 0x55, 0x19, 0xD7, 0x01, 0x11, 0xF8, 0x01, 0x09, 0xB8, 0x80, 0x01, 0x98, 0x01, 0x09, 0xB8, 0x83, 0x09, 0xD9, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0xD9, 0x02, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x80, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x80, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x81, 0x09, 0xD8, 0x09, 0xB8, 0x06, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x06, 0x09, 0xD8, 0x80, 0x11, 0xD9, 0x02, 0x09, 0xB8, 0x80, 0x09, 0x98, 0x03, 0x09, 0xB8, 0x01, 0x09, 0xD9, 0x88, 0x09, 0xF9, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0xB7, 0x11, 0x55, 0x11, 0x34, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x29, 0x30, + 0x01, 0x21, 0x10, 0x83, 0x19, 0x11, 0x18, 0xF1, 0x21, 0x53, 0x19, 0x33, 0x01, 0x19, 0x53, 0x81, 0x19, 0x73, 0x19, 0x52, 0x02, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x02, 0x19, 0x52, 0x80, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x19, 0x10, 0x80, 0x19, 0x30, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x31, 0x21, 0x32, 0x01, 0x19, 0x32, 0x01, 0x19, 0x12, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x85, 0x21, 0x11, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x84, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x07, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x10, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x8F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x20, 0xEE, 0x20, 0xAD, 0x41, 0x2E, 0xC4, 0x7A, 0xC3, 0xF7, 0xBB, 0xB6, 0xBB, 0x96, + 0xBB, 0xB6, 0xB4, 0x36, 0xE6, 0xFF, 0xDF, 0x7F, 0xD7, 0x9F, 0xCF, 0x9F, 0x01, 0xC7, 0x7E, 0x01, 0xC7, 0x7F, 0x01, 0xC7, 0x7E, 0x02, 0xC7, 0x7F, 0x03, 0xC7, 0x9F, 0x89, 0xD7, 0xBF, 0xDF, 0x9F, 0xEF, 0x7F, 0xC4, 0xF9, 0x82, 0x30, 0x91, 0xD1, 0xA1, 0xB2, 0xA9, 0xB2, 0xA9, 0xB3, 0xB1, 0xB3, 0x01, 0xB1, 0xD3, 0x80, 0xB9, 0xD3, 0x06, 0xB9, 0xF3, 0x81, 0xB9, 0xD3, 0xB9, 0xF3, 0x08, 0xB1, 0xD3, 0x81, 0xB1, 0xF4, 0xB1, 0xD3, 0x01, 0xB1, 0xF4, 0x80, 0xB1, 0xF3, 0x02, 0xB9, 0xF4, 0x03, 0xB9, 0xF3, 0x03, 0xB9, 0xD3, 0x01, 0xB9, 0xB3, 0x81, 0xB9, 0xD3, 0xB9, 0xB3, 0x0A, 0xB9, 0xD3, 0x84, 0xB9, 0xD4, 0xB9, 0xF4, 0xB9, 0xD3, 0xB9, 0xD4, 0xB1, 0xD4, 0x09, 0xB1, 0xD3, 0x01, 0xB1, 0xF3, 0x03, 0xB9, 0xF3, 0x01, 0xB9, 0xF4, 0x82, 0xB9, 0xF3, 0xB9, 0xD3, 0xB1, 0xD3, 0x02, 0xB1, 0xB3, 0x87, 0xB1, 0x92, 0xA9, 0x92, 0xA1, 0xB2, 0x99, 0xF1, 0x9A, 0xD3, 0xEE, 0x9F, 0xE7, 0x7F, 0xD7, 0x9F, 0x01, 0xCF, 0x9F, 0x01, 0xC7, 0x9F, 0x17, 0xC7, 0x7E, 0x80, 0xC7, 0x9E, 0x0D, 0xC7, 0x7E, 0x80, 0xC7, 0x9E, 0x03, 0xC7, 0x7E, 0x09, 0xC7, 0x9E, 0x01, 0xC7, 0x7E, 0x04, 0xC7, 0x9E, 0x01, 0xBF, 0x9E, 0x05, 0xC7, 0x9E, 0x01, 0xBF, 0x9E, 0x07, 0xC7, 0x9E, 0x02, 0xC7, 0x9F, 0x01, 0xC7, 0x7E, 0x01, 0xC7, 0x9E, 0x02, 0xC7, 0x9F, 0x06, 0xC7, 0x7E, 0x01, 0xC7, 0x9E, 0x04, 0xC7, 0x7E, 0x80, 0xC7, 0x9E, 0x09, 0xC7, 0x7E, 0x01, 0xC7, 0x7F, 0x01, 0xC7, 0x7E, 0x81, 0xC7, 0x7F, 0xC7, 0x9F, 0x02, 0xCF, 0x9F, 0x86, 0xDF, 0x9F, 0xD6, 0x7E, 0x9B, 0xB5, 0x81, 0xD0, 0x99, 0xF2, + 0xA1, 0xF2, 0xA9, 0xF3, 0x02, 0xB1, 0xF3, 0x85, 0xB1, 0xD3, 0xB9, 0xD3, 0xB1, 0xD3, 0xB9, 0xD3, 0xB9, 0xF3, 0xB9, 0xF4, 0x01, 0xB1, 0xD3, 0x86, 0xA9, 0xD3, 0xA1, 0x91, 0x89, 0xB0, 0xBC, 0xB9, 0xEF, 0x3F, 0xDF, 0x5F, 0xD7, 0x7F, 0x03, 0xCF, 0x7F, 0x85, 0xD7, 0x7F, 0xDF, 0x7F, 0xE6, 0xDF, 0x8B, 0x33, 0x8A, 0x31, 0x9A, 0x33, 0x02, 0xA2, 0x13, 0x04, 0xA9, 0xF3, 0x81, 0xB1, 0xF3, 0xA9, 0xF3, 0x03, 0xA9, 0xD3, 0x85, 0xA1, 0xD2, 0x89, 0xF1, 0xBC, 0xF9, 0xE7, 0x5F, 0xD7, 0x7F, 0xCF, 0x9F, 0x02, 0xC7, 0x9F, 0x80, 0xC7, 0x7E, 0x01, 0xC7, 0x7F, 0x81, 0xC7, 0x7E, 0xC7, 0x7F, 0x06, 0xC7, 0x7E, 0x81, 0xC7, 0x7F, 0xC7, 0x9F, 0x07, 0xC7, 0x7E, 0x80, 0xC7, 0x5E, 0x02, 0xC7, 0x7E, 0x80, 0xC7, 0x5E, 0x04, 0xCF, 0x7F, 0x01, 0xD7, 0x7F, 0x85, 0xDF, 0x5F, 0xEF, 0x3F, 0xE6, 0x5D, 0xB3, 0xF5, 0xBB, 0xB5, 0xC3, 0x95, 0x01, 0xCB, 0x96, 0x04, 0xD3, 0x96, 0x08, 0xDB, 0x96, 0x02, 0xDB, 0x76, 0x01, 0xDB, 0x96, 0x81, 0xDB, 0x76, 0xDB, 0x75, 0x01, 0xDB, 0x96, 0x08, 0xDB, 0x76, 0x01, 0xDB, 0x96, 0x92, 0xDB, 0x76, 0xDB, 0x77, 0xDB, 0x97, 0xDB, 0xB8, 0xDB, 0x98, 0xD3, 0xBA, 0xCB, 0xDC, 0x48, 0x71, 0x51, 0x15, 0x59, 0x15, 0x60, 0xD4, 0xAA, 0xFB, 0xB2, 0xDA, 0xB2, 0x98, 0xB2, 0x77, 0xBA, 0x77, 0xBA, 0x76, 0xBA, 0x56, 0xC2, 0x76, 0x01, 0xC2, 0x56, 0x01, 0xBA, 0x56, 0x8F, 0xB2, 0x56, 0xAA, 0x76, 0x9A, 0x97, 0x7A, 0x97, 0x6B, 0x19, 0x5B, 0x9C, 0x4B, 0xFD, 0x34, 0x5E, 0x1C, 0x1D, 0x0C, 0x3D, 0x04, 0x5C, 0x04, 0x9C, 0x05, 0x1D, 0x05, 0xBD, 0x1F, 0x5F, 0x17, + 0x9D, 0x01, 0x0F, 0xBD, 0x01, 0x07, 0xBC, 0x8A, 0x0F, 0xBD, 0x17, 0x9D, 0x1F, 0x5D, 0x37, 0x1E, 0x56, 0xBE, 0x75, 0x9C, 0x6A, 0x92, 0x92, 0x32, 0xA9, 0xF3, 0xB1, 0xB3, 0xB9, 0xD4, 0x01, 0xB9, 0xB3, 0x8D, 0xC1, 0xB4, 0xB9, 0xB3, 0xB9, 0x93, 0xB9, 0xB4, 0xB1, 0x94, 0xB1, 0xB4, 0xB1, 0xD4, 0xB2, 0x56, 0xA2, 0x36, 0x69, 0x31, 0x50, 0xF0, 0x49, 0x10, 0x41, 0x31, 0x41, 0x51, 0x03, 0x39, 0x51, 0x04, 0x31, 0x51, 0x80, 0x29, 0x31, 0x13, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x19, 0x12, 0x11, 0x33, 0x21, 0xD6, 0x2A, 0x37, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x32, 0x19, 0x51, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x10, 0x21, 0x51, 0x21, 0x31, 0x18, 0xF1, 0x10, 0xF2, 0x11, 0x33, 0x19, 0x95, 0x19, 0xB6, 0x01, 0x19, 0xD7, 0x01, 0x19, 0xD6, 0x82, 0x11, 0x75, 0x09, 0x33, 0x09, 0x12, 0x01, 0x11, 0x32, 0x81, + 0x19, 0x32, 0x19, 0x52, 0x03, 0x19, 0x32, 0x02, 0x19, 0x52, 0x81, 0x11, 0x52, 0x11, 0x32, 0x01, 0x09, 0x32, 0x8D, 0x09, 0x33, 0x09, 0x74, 0x11, 0xB5, 0x1A, 0x17, 0x22, 0x37, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x53, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x10, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x08, 0x21, 0x10, 0x80, 0x29, 0x10, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x8B, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x21, + 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x50, 0x88, 0x21, 0x51, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xF8, 0x11, 0xD8, 0x01, 0x09, 0xB8, 0x83, 0x09, 0xD8, 0x09, 0xB8, 0x09, 0xD8, 0x09, 0xB8, 0x02, 0x09, 0xD8, 0x82, 0x09, 0xF8, 0x09, 0xD8, 0x11, 0xD8, 0x01, 0x09, 0xD8, 0x01, 0x11, 0xD8, 0x81, 0x09, 0xB8, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x80, 0x11, 0xD8, 0x02, 0x09, 0xD8, 0x80, 0x09, 0xB8, 0x02, 0x09, 0xD8, 0x81, 0x11, 0xD8, 0x09, 0xD8, 0x02, 0x11, 0xD8, 0x82, 0x09, 0xD8, 0x11, 0xF8, 0x09, 0xD8, 0x01, 0x09, 0xB8, 0x83, 0x11, 0xB8, 0x09, 0xB8, 0x11, 0xB8, 0x09, 0xB8, 0x01, 0x11, 0xD8, 0x8C, 0x11, 0xF9, 0x12, 0x19, 0x11, 0xD8, 0x1A, 0x19, 0x11, 0xD7, 0x11, 0x96, 0x09, 0x55, 0x11, 0x33, 0x11, 0x13, 0x19, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x11, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x82, 0x19, 0x31, 0x21, 0x30, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x10, + 0x21, 0x30, 0x21, 0x10, 0x06, 0x19, 0x11, 0x01, 0x19, 0x10, 0x82, 0x21, 0x10, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x20, 0xF0, 0x01, 0x21, 0x10, 0x01, 0x21, 0x11, 0x02, 0x19, 0x11, 0x80, 0x21, 0x11, 0x01, 0x19, 0x11, 0x81, 0x21, 0x10, 0x19, 0x10, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x0F, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x20, 0xEE, 0x20, 0xAD, 0x41, 0x4E, 0xC4, 0x7A, 0xC3, 0xF7, 0x01, 0xBB, 0x96, 0x88, 0xB3, 0x96, 0xB4, 0x36, 0xEF, 0x3F, 0xDF, 0x7F, 0xD7, 0x9F, 0xCF, 0x7F, 0xC7, 0x7E, 0xC7, 0x5E, 0xC7, 0x7F, 0x01, 0xC7, 0x7E, 0x8F, 0xC7, 0x7F, 0xC7, 0x7E, 0xC7, 0x7F, 0xC7, 0x7E, 0xC7, 0x9F, 0xC7, 0x7F, 0xC7, 0x9F, 0xCF, + 0xBF, 0xD7, 0x9F, 0xE7, 0x7F, 0xDE, 0x5D, 0x82, 0x51, 0x91, 0xD1, 0xA1, 0xB2, 0xA9, 0xB2, 0xA9, 0xB3, 0x01, 0xB1, 0xB3, 0x80, 0xB1, 0xD3, 0x02, 0xB9, 0xD3, 0x02, 0xB9, 0xF3, 0x80, 0xB9, 0xD3, 0x01, 0xB9, 0xF3, 0x01, 0xB9, 0xD3, 0x0A, 0xB1, 0xD3, 0x83, 0xB1, 0xD4, 0xB1, 0xF4, 0xB1, 0xD3, 0xB1, 0xF3, 0x01, 0xB9, 0xF4, 0x81, 0xB9, 0xF3, 0xB9, 0xD3, 0x01, 0xB9, 0xF3, 0x15, 0xB9, 0xD3, 0x0C, 0xB1, 0xD3, 0x82, 0xB1, 0xF3, 0xB9, 0xF3, 0xB1, 0xD3, 0x01, 0xB9, 0xF3, 0x01, 0xB9, 0xF4, 0x01, 0xB9, 0xF3, 0x01, 0xB9, 0xD3, 0x01, 0xB1, 0xB3, 0x80, 0xB1, 0x93, 0x01, 0xB1, 0x92, 0x88, 0xA1, 0xB2, 0x91, 0xD1, 0xA3, 0x75, 0xF7, 0x1F, 0xDF, 0x7F, 0xD7, 0x9F, 0xCF, 0x9F, 0xC7, 0x9F, 0xC7, 0x7F, 0x01, 0xC7, 0x7E, 0x01, 0xBF, 0x7E, 0x1E, 0xC7, 0x7E, 0x01, 0xBF, 0x7E, 0x06, 0xC7, 0x7E, 0x82, 0xBF, 0x7E, 0xBF, 0x9E, 0xBF, 0x7E, 0x02, 0xC7, 0x9E, 0x01, 0xBF, 0x7E, 0x80, 0xC7, 0x9E, 0x02, 0xBF, 0x7E, 0x02, 0xC7, 0x9E, 0x0B, 0xBF, 0x9E, 0x01, 0xBF, 0x7E, 0x80, 0xC7, 0x9E, 0x01, 0xBF, 0x7E, 0x80, 0xC7, 0x9E, 0x02, 0xBF, 0x7E, 0x83, 0xBF, 0x9F, 0xC7, 0x9F, 0xC7, 0x7F, 0xC7, 0x7E, 0x04, 0xBF, 0x7E, 0x80, 0xC7, 0x7E, 0x01, 0xBF, 0x7E, 0x80, 0xC7, 0x7E, 0x01, 0xBF, 0x7E, 0x80, 0xC7, 0x7E, 0x01, 0xBF, 0x7E, 0x13, 0xC7, 0x7E, 0x80, 0xC7, 0x7F, 0x01, 0xC7, 0x9F, 0x01, 0xCF, 0x9F, 0x86, 0xDF, 0x9F, 0xD6, 0x9E, 0x93, 0xB5, 0x81, 0xF0, 0x99, 0xF2, 0xA1, 0xF2, 0xA9, 0xF3, 0x01, 0xB1, 0xF3, 0x82, 0xB9, 0xF3, 0xB9, 0xD3, 0xB1, 0xD3, 0x01, 0xB9, 0xD3, 0x01, + 0xB9, 0xF4, 0x01, 0xB1, 0xD3, 0x86, 0xA9, 0xD3, 0xA1, 0x91, 0x89, 0xB0, 0xBC, 0xB9, 0xEF, 0x3F, 0xDF, 0x7F, 0xD7, 0x7F, 0x04, 0xCF, 0x7F, 0x86, 0xDF, 0x5F, 0xE6, 0xDF, 0x8B, 0x33, 0x8A, 0x32, 0x9A, 0x12, 0x9A, 0x13, 0xA2, 0x13, 0x01, 0xA1, 0xF3, 0x04, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x87, 0xA9, 0xD2, 0xA9, 0xB2, 0xA1, 0xB2, 0xA1, 0xD2, 0x89, 0xF0, 0xBC, 0xF9, 0xE7, 0x5F, 0xD7, 0x7F, 0x02, 0xC7, 0x9F, 0x83, 0xC7, 0x7F, 0xBF, 0x7E, 0xC7, 0x7E, 0xC7, 0x7F, 0x03, 0xC7, 0x7E, 0x01, 0xBF, 0x7E, 0x0F, 0xC7, 0x7E, 0x83, 0xC7, 0x5E, 0xC7, 0x7F, 0xC7, 0x7E, 0xC7, 0x5F, 0x01, 0xCF, 0x5F, 0x80, 0xCF, 0x7F, 0x01, 0xCF, 0x5F, 0x87, 0xD7, 0x7F, 0xDF, 0x5F, 0xEF, 0x3F, 0xE6, 0x5D, 0xAB, 0xD5, 0xBB, 0xB5, 0xC3, 0x95, 0xCB, 0x96, 0x02, 0xD3, 0x96, 0x80, 0xD3, 0x76, 0x01, 0xD3, 0x96, 0x03, 0xDB, 0x96, 0x18, 0xDB, 0x76, 0x01, 0xDB, 0x77, 0x01, 0xDB, 0x98, 0x89, 0xD3, 0x99, 0xCB, 0xBB, 0x48, 0x0F, 0x69, 0x34, 0x8A, 0x18, 0xAA, 0x99, 0xBA, 0xB9, 0xB2, 0x57, 0xB2, 0x36, 0xBA, 0x36, 0x01, 0xC2, 0x56, 0x01, 0xCA, 0x56, 0x03, 0xC2, 0x35, 0x91, 0xBA, 0x55, 0xB2, 0x76, 0x9A, 0x76, 0x82, 0x97, 0x6B, 0x19, 0x5B, 0x9B, 0x4C, 0x3D, 0x34, 0x5E, 0x1C, 0x3D, 0x0C, 0x3D, 0x04, 0x5C, 0x04, 0x9C, 0x04, 0xFD, 0x05, 0x9D, 0x1F, 0x5F, 0x0F, 0x9D, 0x0F, 0xBD, 0x0F, 0xBC, 0x01, 0x07, 0xBC, 0x89, 0x0F, 0xBD, 0x17, 0x9D, 0x27, 0x7D, 0x37, 0x1D, 0x56, 0xBE, 0x75, 0x7B, 0x6A, 0x92, 0x92, 0x12, 0xA1, 0xD2, 0xB9, 0xD3, 0x01, 0xB9, 0xB3, 0x82, 0xC1, 0xB3, 0xB9, 0x93, + 0xC1, 0xB4, 0x03, 0xB9, 0xB4, 0x86, 0xB1, 0xB4, 0xB1, 0xF5, 0xB2, 0x76, 0x92, 0x15, 0x58, 0xD0, 0x51, 0x10, 0x49, 0x30, 0x01, 0x41, 0x51, 0x01, 0x39, 0x51, 0x80, 0x31, 0x31, 0x03, 0x31, 0x51, 0x81, 0x29, 0x51, 0x29, 0x31, 0x01, 0x29, 0x30, 0x80, 0x31, 0x30, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x02, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x8B, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x21, 0xB6, 0x2A, 0x17, 0x22, 0x17, 0x19, 0xB5, 0x09, 0x32, 0x11, 0x32, 0x19, 0x51, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x19, 0x12, 0x10, 0xF2, 0x11, 0x54, 0x19, 0xB6, 0x02, 0x19, 0xD7, 0x86, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x11, 0x11, 0x19, 0x32, 0x01, 0x19, 0x52, 0x01, 0x19, 0x32, 0x02, 0x19, 0x52, 0x8B, 0x19, 0x31, 0x19, 0x72, 0x19, 0x51, 0x19, 0x52, 0x11, 0x52, 0x11, 0x32, 0x11, 0x33, 0x09, 0x33, 0x09, 0x54, 0x11, 0x95, 0x19, 0xF6, 0x1A, 0x17, 0x01, 0x19, 0xD6, 0x88, 0x19, 0x94, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, + 0x21, 0x11, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x09, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x89, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, + 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x51, 0x87, 0x19, 0x10, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xF7, 0x01, 0x1A, 0x18, 0x01, 0x11, 0xF8, 0x80, 0x12, 0x18, 0x03, 0x11, 0xF8, 0x82, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0xD8, 0x01, 0x11, 0xF8, 0x02, 0x19, 0xF8, 0x01, 0x11, 0xF8, 0x01, 0x19, 0xF8, 0x80, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x86, 0x1A, 0x18, 0x11, 0xF8, 0x1A, 0x18, 0x12, 0x18, 0x1A, 0x18, 0x12, 0x18, 0x1A, 0x18, 0x01, 0x11, 0xF8, 0x84, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xF9, 0x19, 0xF8, 0x19, 0xD8, 0x01, 0x19, 0xF8, 0x80, 0x1A, 0x19, 0x03, 0x1A, 0x18, 0x01, 0x19, 0xF7, 0x86, 0x11, 0x95, 0x09, 0x33, 0x09, 0x12, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x84, 0x21, 0x30, 0x21, 0x10, 0x18, 0xF0, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x19, 0x10, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x20, 0xF0, 0x03, 0x21, 0x10, 0x81, 0x21, 0x31, 0x21, 0x11, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x29, 0x10, 0x87, 0x29, 0x30, 0x21, 0x10, 0x29, + 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x07, 0x29, 0x10, 0x06, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x09, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x08, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8C, 0x20, 0xEE, 0x20, 0xAD, 0x49, 0x4F, 0xC4, 0x7A, 0xC3, 0xF7, 0xBB, 0x96, 0xBB, 0x75, 0xB3, 0xB5, 0xAC, 0x15, 0xEF, 0x7F, 0xD7, 0x9F, 0xCF, 0x9F, 0xCF, 0x7F, 0x01, 0xC7, 0x5E, 0x80, 0xC7, 0x7E, 0x01, 0xC7, 0x7F, 0x80, 0xBF, 0x5E, 0x01, 0xC7, 0x5E, 0x01, 0xC7, 0x7E, 0x89, 0xC7, 0x7F, 0xC7, 0x9F, 0xCF, 0x9F, 0xDF, 0x7F, 0xE6, 0xFF, 0x9B, 0x94, 0x89, 0xD0, 0x99, 0xB1, 0xA1, 0xB2, 0xA9, 0xB3, 0x01, 0xB1, 0xB3, 0x03, 0xB9, 0xD3, 0x01, 0xB9, 0xF3, 0x01, 0xB9, 0xD3, 0x83, 0xB9, 0xF3, 0xB9, 0xD3, 0xB9, 0xF3, 0xB9, 0xD3, 0x01, 0xB1, 0xD3, 0x80, 0xB1, 0xB3, 0x02, 0xB1, 0xD3, 0x03, 0xA9, 0xD3, 0x80, 0xB1, 0xD3, 0x01, 0xB1, 0xB3, 0x02, 0xB1, 0xD3, 0x01, 0xB1, 0xF3, 0x02, 0xB9, 0xF3, 0x82, 0xB9, 0xD3, 0xB9, 0xF4, 0xB9, 0xD4, 0x09, 0xB9, 0xD3, 0x80, 0xB9, 0xF4, 0x07, 0xB9, 0xD3, 0x81, 0xB1, 0xD3, + 0xB1, 0xB3, 0x02, 0xB1, 0xD3, 0x05, 0xA9, 0xD3, 0x03, 0xB1, 0xD3, 0x82, 0xB1, 0xF3, 0xB1, 0xD3, 0xB1, 0xF3, 0x04, 0xB9, 0xF3, 0x02, 0xB9, 0xD3, 0x01, 0xB9, 0xB3, 0x88, 0xB1, 0x93, 0xB1, 0x92, 0xA9, 0x92, 0xA1, 0xB1, 0x89, 0xD0, 0xCD, 0x3A, 0xEF, 0x3F, 0xD7, 0x7F, 0xCF, 0x9F, 0x01, 0xC7, 0x7F, 0x82, 0xC7, 0x7E, 0xBF, 0x7E, 0xBF, 0x5E, 0x01, 0xBF, 0x7E, 0x80, 0xBF, 0x5E, 0x0C, 0xBF, 0x7E, 0x80, 0xC7, 0x7E, 0x01, 0xBF, 0x7E, 0x80, 0xC7, 0x7E, 0x04, 0xBF, 0x7E, 0x80, 0xC7, 0x7E, 0x01, 0xBF, 0x7E, 0x01, 0xC7, 0x7E, 0x81, 0xBF, 0x7E, 0xC7, 0x7E, 0x3E, 0xBF, 0x7E, 0x81, 0xC7, 0x7E, 0xBF, 0x5E, 0x02, 0xC7, 0x7E, 0x03, 0xBF, 0x7E, 0x80, 0xBF, 0x5E, 0x01, 0xC7, 0x7E, 0x80, 0xBF, 0x5E, 0x03, 0xC7, 0x7E, 0x80, 0xBF, 0x5E, 0x02, 0xC7, 0x7F, 0x02, 0xC7, 0x9F, 0x8A, 0xCF, 0x9F, 0xDF, 0x9F, 0xD6, 0x7E, 0x9B, 0xB5, 0x81, 0xF0, 0x99, 0xF2, 0xA1, 0xF2, 0xA9, 0xF3, 0xB2, 0x13, 0xB1, 0xF3, 0xB9, 0xF3, 0x02, 0xB9, 0xD3, 0x80, 0xB9, 0xD4, 0x01, 0xB9, 0xF4, 0x01, 0xB1, 0xD3, 0x85, 0xA9, 0xD3, 0xA1, 0x91, 0x89, 0xB0, 0xBC, 0xB9, 0xEF, 0x3F, 0xDF, 0x5F, 0x02, 0xCF, 0x7F, 0x89, 0xC7, 0x5F, 0xCF, 0x5F, 0xCF, 0x7F, 0xDF, 0x5F, 0xDE, 0xBF, 0x8B, 0x33, 0x82, 0x31, 0x91, 0xF2, 0x99, 0xF2, 0x99, 0xF3, 0x02, 0xA1, 0xF3, 0x01, 0xA9, 0xF3, 0x02, 0xA9, 0xD3, 0x02, 0xA9, 0xD2, 0x85, 0xA1, 0xB2, 0x99, 0xB2, 0x89, 0xF0, 0xB4, 0xF9, 0xDF, 0x3F, 0xCF, 0x7F, 0x01, 0xC7, 0x7F, 0x82, 0xBF, 0x7F, 0xBF, 0x7E, 0xBF, 0x7F, 0x0B, 0xBF, 0x7E, 0x06, 0xC7, 0x7E, 0x81, + 0xC7, 0x7F, 0xC7, 0x5E, 0x01, 0xC7, 0x7E, 0x04, 0xC7, 0x5E, 0x80, 0xC7, 0x5F, 0x04, 0xCF, 0x5F, 0x86, 0xD7, 0x5F, 0xDF, 0x3F, 0xE7, 0x3F, 0xEE, 0xBF, 0xB3, 0xF5, 0xBB, 0x95, 0xC3, 0x75, 0x01, 0xCB, 0x75, 0x80, 0xD3, 0x75, 0x04, 0xD3, 0x76, 0x08, 0xDB, 0x76, 0x05, 0xDB, 0x56, 0x03, 0xDB, 0x76, 0x04, 0xDB, 0x56, 0x02, 0xDB, 0x76, 0x81, 0xDB, 0x56, 0xDB, 0x77, 0x01, 0xDB, 0x78, 0x86, 0xDB, 0x99, 0xC3, 0x39, 0x89, 0xB4, 0xB2, 0xFA, 0xB2, 0xB9, 0xBA, 0x99, 0xBA, 0x77, 0x01, 0xC2, 0x77, 0x01, 0xC2, 0x56, 0x81, 0xCA, 0x56, 0xCA, 0x35, 0x03, 0xC2, 0x15, 0x92, 0xC2, 0x35, 0xBA, 0x35, 0xB2, 0x56, 0x9A, 0x56, 0x82, 0x97, 0x73, 0x19, 0x63, 0xDC, 0x4C, 0x5E, 0x3C, 0x9E, 0x24, 0x7E, 0x14, 0x7D, 0x04, 0x7D, 0x04, 0x9D, 0x04, 0xFD, 0x05, 0x7C, 0x1F, 0x5F, 0x0F, 0x9D, 0x0F, 0xBD, 0x0F, 0xBC, 0x01, 0x07, 0xBC, 0x89, 0x0F, 0x9C, 0x17, 0x9D, 0x27, 0x7D, 0x3F, 0x1E, 0x5E, 0xBE, 0x75, 0x7B, 0x6A, 0xB2, 0x92, 0x33, 0xA9, 0xF3, 0xB9, 0xD3, 0x01, 0xB9, 0xB3, 0x81, 0xC1, 0xD4, 0xC1, 0xB3, 0x02, 0xB9, 0x93, 0x88, 0xB9, 0x94, 0xB9, 0x93, 0xB1, 0xB4, 0xB1, 0xD4, 0xB2, 0x56, 0xAA, 0x97, 0x58, 0xCF, 0x51, 0x10, 0x49, 0x30, 0x01, 0x41, 0x51, 0x80, 0x39, 0x71, 0x01, 0x39, 0x51, 0x02, 0x31, 0x51, 0x02, 0x29, 0x31, 0x80, 0x31, 0x31, 0x0E, 0x29, 0x30, 0x80, 0x29, 0x10, 0x09, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, + 0x30, 0x04, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD5, 0x2A, 0x37, 0x22, 0x17, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x21, 0x51, 0x04, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8F, 0x11, 0x33, 0x11, 0x34, 0x19, 0xB6, 0x21, 0xF7, 0x19, 0xF7, 0x11, 0xB6, 0x11, 0x96, 0x11, 0x54, 0x11, 0x53, 0x09, 0x32, 0x09, 0x11, 0x11, 0x11, 0x19, 0x52, 0x19, 0x72, 0x19, 0x52, 0x19, 0x32, 0x01, 0x19, 0x52, 0x80, 0x19, 0x32, 0x01, 0x11, 0x11, 0x83, 0x19, 0x31, 0x11, 0x31, 0x19, 0x71, 0x19, 0x72, 0x01, 0x19, 0x52, 0x01, 0x11, 0x32, 0x88, 0x09, 0x33, 0x09, 0x53, 0x11, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xB5, 0x19, 0x94, 0x11, 0x12, 0x01, 0x19, 0x11, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x07, 0x21, 0x10, 0x80, 0x29, 0x10, 0x04, 0x21, + 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x09, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x11, 0x12, 0x84, 0x11, 0x53, 0x11, 0x54, 0x11, 0x75, 0x11, 0x95, 0x11, 0x96, 0x04, 0x11, 0xB6, 0x80, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x80, 0x19, 0xB6, 0x01, 0x11, 0x96, 0x80, 0x11, 0xB6, 0x01, 0x11, 0x96, 0x81, 0x11, 0xB6, + 0x11, 0x96, 0x02, 0x11, 0xB6, 0x84, 0x11, 0x96, 0x11, 0xB6, 0x11, 0x96, 0x19, 0xB6, 0x11, 0x96, 0x01, 0x11, 0xB6, 0x80, 0x11, 0xD6, 0x04, 0x11, 0xB6, 0x83, 0x11, 0xB7, 0x11, 0x96, 0x11, 0xB6, 0x11, 0x96, 0x02, 0x11, 0xB6, 0x01, 0x11, 0x95, 0x84, 0x11, 0x75, 0x09, 0x54, 0x11, 0x54, 0x09, 0x33, 0x11, 0x32, 0x01, 0x11, 0x12, 0x85, 0x19, 0x11, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x2F, 0x29, 0x50, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x05, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x07, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, + 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x13, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8D, 0x20, 0xEE, 0x20, 0xAD, 0x49, 0x4F, 0xC4, 0x5A, 0xC3, 0xD7, 0xBB, 0x96, 0xBB, 0x75, 0xB3, 0x95, 0xAC, 0x15, 0xEF, 0x7F, 0xD7, 0x7F, 0xCF, 0x7F, 0xC7, 0x7E, 0xC7, 0x5E, 0x01, 0xBF, 0x5E, 0x80, 0xBF, 0x7E, 0x04, 0xBF, 0x5E, 0x80, 0xC7, 0x7F, 0x01, 0xC7, 0x9F, 0x86, 0xCF, 0x9F, 0xDF, 0x5F, 0xC5, 0x5B, 0x82, 0x51, 0x91, 0xD1, 0xA1, 0xB2, 0xA9, 0xD3, 0x01, 0xB1, 0xD3, 0x06, 0xB9, 0xD3, 0x82, 0xB9, 0xF3, 0xB9, 0xD3, 0xB9, 0xF3, 0x01, 0xB9, 0xD3, 0x80, 0xB1, 0xD3, 0x02, 0xB1, 0xB3, 0x83, 0xA9, 0xB3, 0xA9, 0xD3, 0xA1, 0xD2, 0xA1, 0xF2, 0x01, 0x99, 0xF2, 0x81, 0xA1, 0xF2, 0xA1, 0xF3, 0x01, 0xA9, 0xD3, 0x81, 0xA9, 0xB3, 0xB1, 0xB3, 0x02, 0xB1, 0xD3, 0x81, 0xB9, 0xD3, 0xB9, 0xF3, 0x01, 0xB9, 0xF4, 0x02, 0xB9, 0xD4, 0x10, 0xB9, 0xD3, 0x01, 0xB1, 0xB3, 0x83, 0xB1, 0xD3, 0xA9, 0xD3, 0xA1, 0xD3, 0xA1, 0xF3, 0x03, 0x99, 0xF2, 0x81, 0xA1, 0xF2, 0xA1, 0xD2, 0x01, 0xA9, 0xD3, 0x80, 0xB1, 0xB3, 0x03, 0xB1, 0xD3, 0x06, 0xB9, 0xF3, 0x80, 0xB9, 0xD3, 0x02, 0xB9, 0xB3, 0x87, 0xB1, 0x93, 0xB1, 0x92, 0xA9, 0x92, 0xA1, 0xD1, 0x92, 0x92, 0xEE, 0x7F, 0xDF, 0x5F, 0xCF, 0x9F, 0x01, 0xC7, 0x7F, 0x01, 0xBF, 0x7E, 0x09, 0xBF, 0x5E, 0x03, 0xBF, 0x7E, 0x03, 0xBF, 0x5E, + 0x03, 0xBF, 0x7E, 0x04, 0xBF, 0x5E, 0x03, 0xBF, 0x7E, 0x0A, 0xBF, 0x5E, 0x0A, 0xBF, 0x7E, 0x80, 0xBF, 0x5E, 0x28, 0xBF, 0x7E, 0x06, 0xBF, 0x5E, 0x01, 0xBF, 0x7E, 0x01, 0xBF, 0x5E, 0x80, 0xC7, 0x7E, 0x06, 0xBF, 0x5E, 0x81, 0xC7, 0x7F, 0xBF, 0x5F, 0x02, 0xC7, 0x7F, 0x88, 0xC7, 0x9F, 0xCF, 0x9F, 0xD7, 0x7F, 0xD6, 0x7E, 0x93, 0x95, 0x81, 0xF1, 0x99, 0xF2, 0xA1, 0xF2, 0xA9, 0xF3, 0x01, 0xB1, 0xF3, 0x04, 0xB9, 0xD3, 0x8B, 0xB9, 0xD4, 0xB9, 0xF4, 0xB1, 0xF3, 0xB1, 0xD3, 0xA9, 0xD3, 0xA1, 0x91, 0x89, 0xB0, 0xBC, 0xB9, 0xE7, 0x1F, 0xD7, 0x5F, 0xCF, 0x7F, 0xCF, 0x5F, 0x02, 0xC7, 0x5F, 0x87, 0xCF, 0x7F, 0xD7, 0x5F, 0xDE, 0xDF, 0x83, 0x33, 0x82, 0x31, 0x92, 0x12, 0x91, 0xF2, 0x99, 0xF2, 0x01, 0x99, 0xD2, 0x81, 0xA1, 0xF2, 0xA1, 0xF3, 0x03, 0xA1, 0xD2, 0x02, 0xA1, 0xB2, 0x85, 0x99, 0xB2, 0x99, 0xB1, 0x81, 0xF0, 0xB4, 0xF9, 0xDF, 0x3F, 0xCF, 0x7F, 0x01, 0xC7, 0x7F, 0x80, 0xBF, 0x7F, 0x01, 0xBF, 0x7E, 0x04, 0xBF, 0x5E, 0x02, 0xBF, 0x7E, 0x80, 0xBF, 0x5E, 0x06, 0xBF, 0x7E, 0x02, 0xC7, 0x7E, 0x81, 0xC7, 0x5E, 0xC7, 0x7F, 0x07, 0xC7, 0x5E, 0x80, 0xC7, 0x5F, 0x04, 0xCF, 0x5F, 0x86, 0xD7, 0x5F, 0xDF, 0x5F, 0xEF, 0x1F, 0xEE, 0x5E, 0xAB, 0xD5, 0xBB, 0x95, 0xC3, 0x75, 0x01, 0xCB, 0x75, 0x80, 0xD3, 0x55, 0x01, 0xD3, 0x75, 0x01, 0xD3, 0x76, 0x81, 0xD3, 0x75, 0xD3, 0x76, 0x01, 0xD3, 0x55, 0x03, 0xDB, 0x55, 0x07, 0xDB, 0x56, 0x06, 0xDB, 0x55, 0x03, 0xDB, 0x56, 0x80, 0xDB, 0x36, 0x01, 0xDB, 0x57, 0x84, 0xDB, 0x78, 0xDB, 0x79, 0xCB, 0x19, 0x89, + 0x93, 0xB2, 0xB8, 0x01, 0xBA, 0x98, 0x80, 0xBA, 0x77, 0x01, 0xC2, 0x56, 0x80, 0xCA, 0x56, 0x01, 0xCA, 0x36, 0x01, 0xCA, 0x15, 0x80, 0xCA, 0x35, 0x01, 0xCA, 0x15, 0x90, 0xC2, 0x15, 0xBA, 0x35, 0xB2, 0x35, 0x9A, 0x56, 0x82, 0x76, 0x73, 0x19, 0x63, 0xDC, 0x4C, 0x7E, 0x3C, 0x9E, 0x24, 0x9E, 0x14, 0x7D, 0x04, 0x7D, 0x04, 0xBD, 0x04, 0xDD, 0x05, 0x5C, 0x1F, 0x5F, 0x0F, 0x9D, 0x01, 0x0F, 0xBC, 0x01, 0x07, 0xBC, 0x8E, 0x0F, 0x9C, 0x17, 0x9D, 0x27, 0x5D, 0x3F, 0x1D, 0x5E, 0xBE, 0x75, 0x7B, 0x6A, 0x92, 0x92, 0x12, 0xA1, 0xD2, 0xB1, 0xD3, 0xB9, 0xB3, 0xC1, 0xD3, 0xC1, 0xB3, 0xB9, 0x93, 0xC1, 0xB3, 0x03, 0xB9, 0x93, 0x88, 0xB9, 0xB4, 0xB1, 0xB4, 0xB2, 0x15, 0xAA, 0x96, 0x81, 0xB2, 0x50, 0xCF, 0x51, 0x30, 0x41, 0x30, 0x41, 0x51, 0x02, 0x39, 0x51, 0x82, 0x31, 0x51, 0x31, 0x31, 0x31, 0x51, 0x01, 0x31, 0x31, 0x80, 0x29, 0x31, 0x18, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x8D, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0xB5, 0x22, 0x37, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x33, 0x11, 0x32, 0x19, + 0x52, 0x21, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8C, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x19, 0xF7, 0x21, 0xF8, 0x19, 0xD7, 0x11, 0xB6, 0x11, 0x55, 0x09, 0x33, 0x09, 0x32, 0x11, 0x12, 0x01, 0x11, 0x31, 0x80, 0x19, 0x52, 0x01, 0x19, 0x32, 0x01, 0x11, 0x32, 0x01, 0x11, 0x12, 0x02, 0x11, 0x11, 0x82, 0x08, 0xF0, 0x11, 0x51, 0x11, 0x31, 0x02, 0x19, 0x52, 0x84, 0x11, 0x32, 0x09, 0x12, 0x09, 0x33, 0x09, 0x54, 0x11, 0xB6, 0x01, 0x19, 0xF7, 0x86, 0x22, 0x17, 0x19, 0x95, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x29, 0x10, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x05, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, + 0x2F, 0x85, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x31, 0x21, 0x11, 0x01, 0x19, 0x11, 0x83, 0x11, 0x12, 0x19, 0x53, 0x19, 0x33, 0x11, 0x12, 0x02, 0x09, 0x13, 0x83, 0x08, 0xF2, 0x09, 0x13, 0x11, 0x13, 0x09, 0x13, 0x01, 0x11, 0x33, 0x83, 0x11, 0x13, 0x09, 0x13, 0x09, 0x12, 0x11, 0x33, 0x01, 0x09, 0x13, 0x80, 0x11, 0x33, 0x01, 0x11, 0x13, 0x80, 0x11, 0x33, 0x01, 0x09, 0x33, 0x80, 0x11, 0x13, 0x03, 0x09, 0x13, 0x01, 0x11, 0x13, 0x80, 0x09, 0x13, 0x01, 0x11, 0x13, 0x01, 0x09, 0x13, 0x83, 0x11, 0x34, 0x09, 0x13, 0x11, 0x34, 0x11, 0x33, 0x01, 0x11, 0x13, 0x01, 0x09, 0x12, 0x01, 0x11, 0x33, 0x02, 0x11, 0x32, 0x03, 0x19, 0x31, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, + 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x07, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x09, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x20, 0xEE, 0x28, 0xAD, 0x49, 0x4F, 0xC4, 0x39, + 0xC3, 0xB7, 0xBB, 0x76, 0x01, 0xB3, 0x75, 0x84, 0xA3, 0xD5, 0xEF, 0x7F, 0xD7, 0x7F, 0xCF, 0x7E, 0xC7, 0x7E, 0x02, 0xBF, 0x5E, 0x01, 0xBF, 0x7E, 0x02, 0xBF, 0x5E, 0x01, 0xBF, 0x7E, 0x01, 0xC7, 0x9F, 0x85, 0xD7, 0x7F, 0xE7, 0x1F, 0x8A, 0xF3, 0x89, 0xD1, 0x99, 0xD2, 0xA9, 0xD3, 0x02, 0xB1, 0xD3, 0x02, 0xB9, 0xD3, 0x02, 0xB9, 0xF3, 0x04, 0xB9, 0xD3, 0x80, 0xB1, 0xD3, 0x01, 0xB1, 0xB3, 0x85, 0xB1, 0xB2, 0xA9, 0xB2, 0xA1, 0xD2, 0x99, 0xF2, 0x89, 0xF1, 0x92, 0x73, 0x01, 0x9A, 0xD4, 0x86, 0x92, 0xB3, 0x92, 0x32, 0x91, 0xF2, 0xA1, 0xD3, 0xA1, 0xB2, 0xA9, 0xB3, 0xB1, 0xB3, 0x01, 0xB1, 0xD3, 0x0A, 0xB9, 0xD3, 0x01, 0xC1, 0xD3, 0x09, 0xB9, 0xD3, 0x90, 0xB9, 0xB3, 0xB1, 0xB3, 0xB1, 0xB2, 0xA9, 0xD2, 0xA1, 0xD2, 0x91, 0xD2, 0x92, 0x32, 0x9A, 0xD4, 0x9B, 0x34, 0xA3, 0x55, 0x9B, 0x14, 0x92, 0x72, 0x91, 0xF1, 0xA1, 0xD2, 0xA1, 0xB2, 0xA9, 0xB3, 0xB1, 0xB3, 0x03, 0xB1, 0xD3, 0x80, 0xB9, 0xD3, 0x04, 0xB9, 0xF3, 0x02, 0xB9, 0xD3, 0x01, 0xB9, 0xB3, 0x89, 0xB1, 0x93, 0xB1, 0x92, 0xA9, 0xB2, 0x91, 0xD1, 0xBC, 0x38, 0xEF, 0x3F, 0xD7, 0x7F, 0xCF, 0x7F, 0xC7, 0x7F, 0xBF, 0x7F, 0x2B, 0xBF, 0x5E, 0x80, 0xBF, 0x7E, 0x04, 0xBF, 0x5E, 0x01, 0xBF, 0x7E, 0x02, 0xBF, 0x5E, 0x01, 0xBF, 0x7E, 0x81, 0xBF, 0x5E, 0xBF, 0x7E, 0x04, 0xB7, 0x7E, 0x01, 0xBF, 0x7E, 0x80, 0xBF, 0x5E, 0x02, 0xBF, 0x7E, 0x02, 0xBF, 0x5E, 0x83, 0xBF, 0x7E, 0xBF, 0x5E, 0xBF, 0x7E, 0xBF, 0x5E, 0x04, 0xBF, 0x7E, 0x1E, 0xBF, 0x5E, 0x80, 0xBF, 0x3E, 0x03, 0xBF, 0x5E, 0x80, 0xBF, 0x5F, + 0x02, 0xC7, 0x7F, 0x87, 0xD7, 0x7F, 0xCE, 0x5E, 0x93, 0x95, 0x81, 0xF1, 0x99, 0xF2, 0xA1, 0xF3, 0xA9, 0xF3, 0xB1, 0xF3, 0x01, 0xB9, 0xF3, 0x02, 0xB9, 0xD3, 0x02, 0xB9, 0xF4, 0x88, 0xB9, 0xD3, 0xB1, 0xD3, 0xA9, 0xF3, 0xA1, 0x92, 0x89, 0xB0, 0xBC, 0x99, 0xE7, 0x1F, 0xD7, 0x5F, 0xCF, 0x7F, 0x04, 0xC7, 0x5F, 0x86, 0xD7, 0x3F, 0xDE, 0xBF, 0x7A, 0xF2, 0x7A, 0x10, 0x8A, 0x11, 0x89, 0xF1, 0x91, 0xD1, 0x01, 0x91, 0xD2, 0x03, 0x99, 0xD2, 0x02, 0x99, 0xB1, 0x01, 0x99, 0x91, 0x01, 0x91, 0xB1, 0x83, 0x79, 0xD0, 0xB5, 0x19, 0xDF, 0x5F, 0xCF, 0x5F, 0x01, 0xC7, 0x7F, 0x01, 0xBF, 0x7E, 0x0B, 0xBF, 0x5E, 0x81, 0xBF, 0x7E, 0xBF, 0x5E, 0x02, 0xBF, 0x7E, 0x01, 0xBF, 0x5E, 0x06, 0xC7, 0x5E, 0x80, 0xC7, 0x7F, 0x01, 0xC7, 0x5E, 0x03, 0xC7, 0x5F, 0x02, 0xCF, 0x5F, 0x01, 0xD7, 0x5F, 0x85, 0xDF, 0x3F, 0xEF, 0x1F, 0xEE, 0x7F, 0xAB, 0xB5, 0xBB, 0x75, 0xC3, 0x55, 0x02, 0xCB, 0x55, 0x05, 0xD3, 0x55, 0x80, 0xDB, 0x56, 0x01, 0xDB, 0x35, 0x80, 0xDB, 0x55, 0x0B, 0xDB, 0x35, 0x01, 0xDB, 0x55, 0x02, 0xDB, 0x35, 0x80, 0xDB, 0x56, 0x02, 0xDB, 0x36, 0x80, 0xDB, 0x57, 0x01, 0xDB, 0x58, 0x89, 0xDB, 0x79, 0xCB, 0x39, 0x99, 0xF5, 0xB2, 0xB9, 0xB2, 0x98, 0xBA, 0x98, 0xBA, 0x77, 0xC2, 0x57, 0xC2, 0x36, 0xCA, 0x36, 0x01, 0xCA, 0x15, 0x80, 0xD2, 0x35, 0x03, 0xCA, 0x15, 0x92, 0xC2, 0x15, 0xBA, 0x15, 0xB2, 0x35, 0x9A, 0x35, 0x82, 0x56, 0x6A, 0xF8, 0x5B, 0xDB, 0x4C, 0x5D, 0x34, 0x9E, 0x1C, 0x7E, 0x14, 0x7D, 0x04, 0x7D, 0x04, 0xBD, 0x04, 0xDD, 0x05, 0x5C, 0x27, 0x7F, + 0x17, 0x9D, 0x0F, 0x9C, 0x07, 0x9C, 0x01, 0x07, 0xBC, 0x89, 0x0F, 0x9C, 0x17, 0x9D, 0x27, 0x5D, 0x3F, 0x1D, 0x5E, 0xBE, 0x75, 0x7B, 0x6A, 0xB3, 0x92, 0x12, 0xAA, 0x13, 0xB1, 0xD3, 0x02, 0xB9, 0xB3, 0x02, 0xC1, 0xB3, 0x01, 0xB9, 0x93, 0x01, 0xB9, 0xB3, 0x88, 0xB1, 0xB3, 0xB1, 0xF4, 0xB2, 0x76, 0xA2, 0x75, 0x48, 0x2D, 0x48, 0xEF, 0x49, 0x51, 0x41, 0x51, 0x39, 0x30, 0x01, 0x39, 0x51, 0x80, 0x31, 0x51, 0x02, 0x31, 0x31, 0x80, 0x29, 0x51, 0x0B, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x08, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x05, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0C, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x21, 0xB5, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x09, 0x33, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x32, 0x11, 0x12, 0x11, 0x54, 0x19, 0x96, 0x22, 0x18, 0x19, 0xF8, 0x19, 0xB7, 0x11, 0x75, 0x09, 0x13, 0x09, 0x12, 0x11, 0x52, 0x19, 0x52, 0x01, 0x11, 0x31, 0x80, 0x19, 0x31, 0x01, 0x11, 0x11, 0x82, + 0x09, 0x12, 0x11, 0x33, 0x11, 0x54, 0x01, 0x11, 0x74, 0x01, 0x11, 0x53, 0x82, 0x11, 0x52, 0x09, 0x11, 0x11, 0x11, 0x01, 0x11, 0x31, 0x8B, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x53, 0x11, 0x75, 0x11, 0xB6, 0x1A, 0x17, 0x22, 0x17, 0x11, 0x95, 0x11, 0x53, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x11, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x06, 0x29, 0x30, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x84, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x06, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, + 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x10, 0x01, 0x19, 0x31, 0x02, 0x19, 0x32, 0x02, 0x19, 0x12, 0x8A, 0x11, 0x12, 0x19, 0x32, 0x19, 0x12, 0x11, 0x12, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x11, 0x12, 0x19, 0x32, 0x11, 0x12, 0x02, 0x19, 0x32, 0x80, 0x11, 0x12, 0x01, 0x11, 0x32, 0x82, 0x11, 0x12, 0x19, 0x32, 0x11, 0x12, 0x03, 0x19, 0x12, 0x04, 0x11, 0x12, 0x01, 0x19, 0x13, 0x01, 0x11, 0x12, 0x01, 0x19, 0x12, 0x04, 0x19, 0x32, 0x80, 0x19, 0x31, 0x02, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x08, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, + 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x02, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x03, 0x21, 0x10, 0x82, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x07, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x0B, 0x29, 0x30, 0x86, 0x21, 0x0F, 0x20, 0xEE, 0x28, 0xAD, 0x49, 0x4F, 0xC4, 0x39, 0xC3, 0xB7, 0xBB, 0x76, 0x01, 0xB3, 0x55, 0x84, 0xA3, 0xB4, 0xEF, 0x7F, 0xCF, 0x7F, 0xCF, 0x5E, 0xC7, 0x5E, 0x07, 0xBF, 0x5E, 0x01, 0xBF, 0x7E, 0x87, 0xC7, 0x9F, 0xCF, 0x7F, 0xDF, 0x3F, 0xBD, 0x5A, 0x81, 0xF0, 0x99, 0xB1, 0xA1, 0xD2, 0xA9, 0xD3, 0x01, 0xB1, 0xD3, 0x0A, 0xB9, 0xD3, 0x01, 0xB1, 0xB3, 0x87, 0xB1, 0xB2, 0xA9, 0xB2, 0xA1, 0xD2, 0x99, 0xD1, 0x92, 0x12, 0xAB, 0x96, 0xD5, 0x3C, 0xE6, 0x1F, 0x01, 0xEE, 0x7F, 0x85, 0xE6, 0x3F, 0xE5, 0xBE, 0xBC, 0x18, 0x81, 0xD0, 0x91, 0xF2, 0xA1, + 0xD2, 0x01, 0xA9, 0xB3, 0x02, 0xB1, 0xD3, 0x07, 0xB9, 0xD3, 0x06, 0xC1, 0xD3, 0x04, 0xB9, 0xD3, 0x88, 0xB9, 0xB3, 0xB1, 0xB3, 0xA9, 0xB2, 0xA1, 0xD2, 0x91, 0xD1, 0x92, 0x72, 0xC4, 0x79, 0xDD, 0xBE, 0xEE, 0x7F, 0x01, 0xEE, 0xBF, 0x86, 0xEE, 0x9F, 0xE5, 0xFE, 0xCC, 0xBA, 0x8A, 0x31, 0x91, 0xF1, 0xA1, 0xD2, 0xA9, 0xB2, 0x01, 0xB1, 0xB3, 0x01, 0xB1, 0xD3, 0x01, 0xB9, 0xD3, 0x03, 0xB9, 0xF3, 0x02, 0xB9, 0xD3, 0x02, 0xB9, 0xB3, 0x88, 0xB1, 0x93, 0xB1, 0xB2, 0xA1, 0xD2, 0x8A, 0x10, 0xEE, 0xDF, 0xD7, 0x5F, 0xCF, 0x7F, 0xC7, 0x7F, 0xBF, 0x7E, 0x08, 0xBF, 0x5E, 0x80, 0xBF, 0x3E, 0x25, 0xBF, 0x5E, 0x80, 0xB7, 0x3E, 0x03, 0xBF, 0x5E, 0x0C, 0xB7, 0x5E, 0x01, 0xBF, 0x7E, 0x01, 0xBF, 0x5E, 0x80, 0xBF, 0x7E, 0x03, 0xBF, 0x5E, 0x01, 0xB7, 0x5E, 0x81, 0xBF, 0x5E, 0xB7, 0x5E, 0x0F, 0xBF, 0x5E, 0x80, 0xC7, 0x5E, 0x01, 0xBF, 0x5E, 0x05, 0xC7, 0x5E, 0x80, 0xBF, 0x3E, 0x07, 0xBF, 0x5E, 0x02, 0xBF, 0x3E, 0x02, 0xBF, 0x5E, 0x80, 0xBF, 0x7F, 0x01, 0xC7, 0x7F, 0x84, 0xD7, 0x5F, 0xCE, 0x5E, 0x93, 0x95, 0x89, 0xF1, 0x99, 0xF2, 0x01, 0xA9, 0xF3, 0x81, 0xB1, 0xF3, 0xB9, 0xF3, 0x04, 0xB9, 0xD3, 0x01, 0xB9, 0xF4, 0x89, 0xB9, 0xD3, 0xB1, 0xD3, 0xA9, 0xD3, 0xA1, 0x92, 0x89, 0xB0, 0xBC, 0x99, 0xE7, 0x1F, 0xD7, 0x5F, 0xCF, 0x7F, 0xC7, 0x5F, 0x01, 0xC7, 0x3F, 0x01, 0xC7, 0x5F, 0x83, 0xCF, 0x5F, 0xD6, 0xDF, 0x62, 0xD0, 0x61, 0xEE, 0x01, 0x69, 0xAE, 0x83, 0x71, 0xAE, 0x71, 0xAF, 0x79, 0xCF, 0x79, 0xAF, 0x01, 0x79, 0x8F, 0x02, 0x79, 0x8E, 0x02, 0x79, 0x6E, + 0x86, 0x71, 0x6E, 0x71, 0x8E, 0x59, 0x8D, 0xAD, 0x59, 0xD7, 0x5F, 0xC7, 0x5F, 0xC7, 0x7F, 0x09, 0xBF, 0x5E, 0x80, 0xBF, 0x7E, 0x0C, 0xBF, 0x5E, 0x04, 0xC7, 0x5E, 0x80, 0xC7, 0x7F, 0x03, 0xC7, 0x5F, 0x04, 0xCF, 0x5F, 0x8D, 0xD7, 0x5F, 0xD7, 0x3F, 0xD7, 0x1F, 0xE7, 0x3F, 0xEE, 0xFF, 0xEE, 0x3E, 0xB3, 0xB5, 0xBB, 0x75, 0xC3, 0x55, 0xCB, 0x55, 0xCB, 0x35, 0xCB, 0x55, 0xCB, 0x35, 0xD3, 0x55, 0x04, 0xD3, 0x35, 0x13, 0xDB, 0x35, 0x02, 0xDB, 0x36, 0x01, 0xDB, 0x37, 0x8B, 0xDB, 0x58, 0xDB, 0x79, 0xCB, 0x5A, 0x9A, 0x17, 0xB3, 0x1B, 0xB2, 0xFB, 0xBA, 0xFA, 0xBA, 0x79, 0xBA, 0x57, 0xC2, 0x57, 0xCA, 0x36, 0xCA, 0x15, 0x01, 0xC9, 0xF5, 0x80, 0xCA, 0x15, 0x01, 0xD2, 0x15, 0x92, 0xCA, 0x15, 0xC2, 0x15, 0xBA, 0x15, 0xB2, 0x35, 0x9A, 0x35, 0x82, 0x56, 0x6B, 0x19, 0x5B, 0xDB, 0x4C, 0x7D, 0x34, 0x9E, 0x1C, 0x7E, 0x14, 0x7D, 0x04, 0x7D, 0x04, 0xBD, 0x04, 0xDD, 0x05, 0x5C, 0x1F, 0x3F, 0x17, 0x7D, 0x0F, 0x9C, 0x02, 0x07, 0xBC, 0x89, 0x0F, 0xBC, 0x17, 0x7C, 0x27, 0x7D, 0x36, 0xFD, 0x5E, 0xBE, 0x6D, 0x5B, 0x6A, 0xB3, 0x92, 0x12, 0xA1, 0xD3, 0xB1, 0xD3, 0x01, 0xB9, 0xB3, 0x01, 0xC1, 0xB3, 0x83, 0xC1, 0xD4, 0xC1, 0xB3, 0xB9, 0x73, 0xB9, 0x93, 0x01, 0xB9, 0xB3, 0x88, 0xB1, 0xB3, 0xB1, 0xD3, 0xB2, 0x34, 0xB2, 0xB6, 0x68, 0xF0, 0x50, 0xCF, 0x51, 0x31, 0x41, 0x31, 0x39, 0x31, 0x01, 0x39, 0x51, 0x01, 0x31, 0x51, 0x01, 0x31, 0x31, 0x80, 0x29, 0x50, 0x1F, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, + 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x51, 0x04, 0x21, 0x30, 0x80, 0x19, 0x30, 0x08, 0x21, 0x30, 0x83, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x01, 0x22, 0x17, 0x84, 0x19, 0x95, 0x09, 0x33, 0x11, 0x12, 0x19, 0x31, 0x19, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x95, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x21, 0xF8, 0x22, 0x18, 0x19, 0xF8, 0x11, 0x96, 0x11, 0x55, 0x09, 0x13, 0x11, 0x12, 0x19, 0x52, 0x19, 0x31, 0x11, 0x31, 0x19, 0x31, 0x11, 0x31, 0x11, 0x12, 0x09, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x19, 0xB6, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x73, 0x11, 0x32, 0x01, 0x11, 0x11, 0x80, 0x19, 0x11, 0x01, 0x19, 0x52, 0x8B, 0x11, 0x12, 0x11, 0x53, 0x09, 0x54, 0x11, 0x96, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x87, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, + 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x09, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x06, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x30, 0x01, 0x21, 0x31, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x32, 0x01, 0x19, 0x11, 0x82, 0x19, 0x32, + 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x32, 0x03, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x52, 0x03, 0x19, 0x31, 0x80, 0x19, 0x32, 0x03, 0x19, 0x11, 0x04, 0x19, 0x32, 0x81, 0x19, 0x11, 0x19, 0x12, 0x02, 0x19, 0x32, 0x01, 0x19, 0x11, 0x02, 0x19, 0x31, 0x03, 0x21, 0x31, 0x03, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x20, 0xEF, 0x01, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x2F, 0x07, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, + 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x13, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x8C, 0x20, 0xEE, 0x20, 0xAD, 0x49, 0x2F, 0xBC, 0x19, 0xBB, 0xB7, 0xBB, 0x76, 0xBB, 0x75, 0xAB, 0x54, 0xA3, 0xD5, 0xEF, 0x7F, 0xD7, 0x7F, 0xCF, 0x7F, 0xC7, 0x5E, 0x03, 0xBF, 0x5E, 0x01, 0xB7, 0x5E, 0x03, 0xBF, 0x5E, 0x87, 0xC7, 0x7F, 0xCF, 0x5F, 0xDE, 0xDF, 0x8B, 0x54, 0x81, 0xD0, 0x99, 0xD2, 0xA1, 0xD3, 0xA9, 0xF3, 0x01, 0xB1, 0xD3, 0x09, 0xB9, 0xD3, 0x8A, 0xB9, 0xB3, 0xB1, 0xB3, 0xB1, 0xB2, 0xA9, 0xB2, 0xA1, 0xF2, 0x91, 0xF1, 0xA3, 0x75, 0xEE, 0x9F, 0xEF, 0x1F, 0xE7, 0x1F, 0xDF, 0x1F, 0x01, 0xD6, 0xFF, 0x01, 0xDE, 0xFF, 0x86, 0xE6, 0xFF, 0xEE, 0x7F, 0x9B, 0x75, 0x8A, 0x11, 0x99, 0xD2, 0xA9, 0xB2, 0xB1, 0xB3, 0x01, 0xB1, 0xD3, 0x06, 0xB9, 0xD3, 0x09, 0xC1, 0xD3, 0x8A, 0xB9, 0xD3, 0xB9, 0xB3, 0xB9, 0xD3, 0xB1, 0xB2, 0xA9, 0xB2, 0xA1, 0xD2, 0x92, 0x11, 0xB4, 0x38, 0xEE, 0xBF, 0xE6, 0xFF, 0xDE, 0xFF, 0x02, 0xD6, 0xFF, 0x87, 0xD7, 0x1F, 0xDE, 0xFF, 0xE6, 0xFF, 0xEE, 0x9F, 0xA3, 0x95, 0x91, 0xF1, 0xA1, 0xD2, 0xA9, 0xB2, 0x02, 0xB1, 0xB3, 0x03, 0xB9, 0xD3, 0x02, 0xB9, 0xF3, 0x02, 0xB9, 0xD3, 0x01, 0xB9, 0xB3, 0x88, 0xB9, 0x93, 0xB1, 0x92, 0xA9, 0xB2, 0x91, 0xD0, 0xCD, 0x5B, 0xE7, 0x3F, 0xCF, 0x7F, 0xC7, + 0x7E, 0xBF, 0x7E, 0x03, 0xBF, 0x5E, 0x04, 0xB7, 0x3E, 0x0E, 0xBF, 0x5E, 0x81, 0xC7, 0x5E, 0xC7, 0x5F, 0x07, 0xC7, 0x5E, 0x03, 0xBF, 0x5E, 0x80, 0xBF, 0x3E, 0x07, 0xBF, 0x5E, 0x02, 0xB7, 0x5E, 0x80, 0xBF, 0x5E, 0x1A, 0xB7, 0x5E, 0x81, 0xBF, 0x5E, 0xB7, 0x5E, 0x06, 0xBF, 0x5E, 0x03, 0xBF, 0x7F, 0x82, 0xBF, 0x5E, 0xBF, 0x7E, 0xC7, 0x7E, 0x06, 0xC7, 0x5E, 0x80, 0xC7, 0x5F, 0x03, 0xC7, 0x5E, 0x05, 0xBF, 0x5E, 0x06, 0xBF, 0x3E, 0x88, 0xBF, 0x5E, 0xBF, 0x5F, 0xC7, 0x7F, 0xD7, 0x5F, 0xCE, 0x3E, 0x93, 0x75, 0x81, 0xF1, 0x99, 0xF2, 0xA9, 0xF2, 0x01, 0xB1, 0xF3, 0x80, 0xB9, 0xF3, 0x04, 0xB9, 0xD3, 0x82, 0xB9, 0xD4, 0xB9, 0xF4, 0xB9, 0xD3, 0x01, 0xB1, 0xD3, 0x84, 0xA1, 0x92, 0x89, 0xD0, 0xB4, 0x78, 0xE7, 0x1F, 0xD7, 0x5F, 0x01, 0xC7, 0x5F, 0x80, 0xC7, 0x3E, 0x03, 0xC7, 0x3F, 0x82, 0xCF, 0x3F, 0xDF, 0x7F, 0xEF, 0x7F, 0x01, 0xF7, 0x5F, 0x01, 0xFF, 0x5F, 0x02, 0xFF, 0x3F, 0x01, 0xFF, 0x1F, 0x01, 0xFF, 0x3F, 0x80, 0xFF, 0x1F, 0x01, 0xFF, 0x3F, 0x85, 0xFF, 0x5F, 0xF7, 0x3F, 0xEF, 0x5F, 0xD7, 0x5F, 0xC7, 0x3F, 0xC7, 0x5F, 0x17, 0xBF, 0x5E, 0x80, 0xC7, 0x5F, 0x03, 0xC7, 0x5E, 0x81, 0xC7, 0x5F, 0xC7, 0x7F, 0x02, 0xC7, 0x5F, 0x04, 0xCF, 0x5F, 0x80, 0xCF, 0x3F, 0x01, 0xD7, 0x3F, 0x87, 0xD7, 0x1F, 0xDF, 0x1F, 0xE7, 0x1F, 0xEE, 0xFF, 0xFE, 0xBF, 0xB3, 0xB5, 0xBB, 0x54, 0xC3, 0x35, 0x02, 0xCB, 0x35, 0x05, 0xD3, 0x35, 0x02, 0xDB, 0x35, 0x0F, 0xDB, 0x15, 0x81, 0xDB, 0x35, 0xDB, 0x36, 0x01, 0xDB, 0x16, 0x01, 0xDB, 0x37, 0x8B, 0xDB, 0x38, 0xD3, + 0x59, 0xCB, 0x7B, 0x69, 0x35, 0x58, 0xF5, 0x40, 0x52, 0x48, 0x11, 0x89, 0xB7, 0xB2, 0x79, 0xC2, 0x37, 0xCA, 0x37, 0xC9, 0xF6, 0x01, 0xC9, 0xF5, 0x02, 0xCA, 0x15, 0x80, 0xC9, 0xF5, 0x01, 0xC2, 0x15, 0x8F, 0xB2, 0x35, 0xA2, 0x36, 0x8A, 0x77, 0x6B, 0x19, 0x63, 0xFC, 0x4C, 0x7E, 0x3C, 0xBF, 0x24, 0x9E, 0x14, 0x9D, 0x04, 0x9D, 0x04, 0xBD, 0x04, 0xDD, 0x05, 0x3C, 0x1F, 0x3E, 0x0F, 0x7C, 0x0F, 0x9C, 0x02, 0x07, 0xBC, 0x8A, 0x0F, 0xBC, 0x17, 0x9C, 0x27, 0x9E, 0x3F, 0x3E, 0x5E, 0xBE, 0x6D, 0x7B, 0x6A, 0xB3, 0x92, 0x13, 0xAA, 0x13, 0xB9, 0xD3, 0xB1, 0x93, 0x01, 0xB9, 0xB3, 0x84, 0xB9, 0x93, 0xC1, 0xB3, 0xB9, 0x93, 0xC1, 0xB4, 0xB9, 0x93, 0x02, 0xB9, 0xB3, 0x89, 0xB1, 0xD4, 0xB1, 0xF4, 0xAA, 0x35, 0x9A, 0x34, 0x58, 0xAF, 0x49, 0x10, 0x41, 0x30, 0x41, 0x51, 0x39, 0x51, 0x39, 0x71, 0x01, 0x31, 0x51, 0x81, 0x31, 0x71, 0x31, 0x50, 0x02, 0x29, 0x30, 0x80, 0x31, 0x50, 0x03, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x10, 0x07, 0x29, 0x30, 0x80, 0x29, 0x10, 0x04, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, + 0x21, 0x51, 0x19, 0x31, 0x19, 0x30, 0x01, 0x19, 0x10, 0x01, 0x21, 0x31, 0x82, 0x19, 0x31, 0x19, 0x30, 0x21, 0x31, 0x04, 0x21, 0x30, 0x8D, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x07, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x22, 0x38, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x96, 0x11, 0x54, 0x09, 0x12, 0x11, 0x12, 0x19, 0x52, 0x19, 0x51, 0x01, 0x11, 0x31, 0x85, 0x11, 0x52, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xF7, 0x02, 0x1A, 0x18, 0x93, 0x11, 0xD7, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x53, 0x11, 0x32, 0x10, 0xF1, 0x11, 0x11, 0x19, 0x52, 0x19, 0x53, 0x11, 0x12, 0x11, 0x32, 0x09, 0x33, 0x11, 0x95, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x10, 0x80, 0x29, 0x10, 0x10, 0x21, 0x10, 0x80, 0x29, 0x10, 0x07, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x05, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x21, + 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x11, 0x02, 0x21, 0x31, 0x82, 0x21, 0x11, 0x21, 0x31, 0x19, 0x31, 0x03, 0x19, 0x11, 0x81, 0x21, 0x31, 0x21, 0x11, 0x01, 0x19, 0x11, 0x85, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x19, 0x10, 0x01, 0x19, 0x11, 0x01, 0x21, 0x31, 0x8B, 0x21, 0x11, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x08, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x0F, + 0x21, 0x10, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x10, 0x04, 0x21, 0x10, 0x8D, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x2F, 0x08, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x03, 0x29, 0x10, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x06, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x13, 0x29, 0x30, 0x90, 0x21, 0x2F, 0x21, 0x0F, 0x20, 0xEE, 0x20, 0xAD, 0x49, 0x4F, 0xBC, 0x19, 0xBB, 0xB6, 0xBB, 0x55, 0xB3, 0x55, 0xAB, 0x34, 0xAB, 0xF5, 0xEF, 0x5F, 0xCF, 0x5E, 0xC7, 0x3E, 0xC7, 0x5E, 0xBF, 0x5E, 0xBF, 0x3E, 0x01, 0xB7, 0x3E, 0x80, 0xB7, 0x5E, 0x01, 0xB7, 0x3E, 0x01, 0xBF, 0x5E, 0x87, 0xBF, + 0x7F, 0xC7, 0x7F, 0xD7, 0x5F, 0xCD, 0xDD, 0x82, 0x71, 0x91, 0xF1, 0xA1, 0xD2, 0xA9, 0xF3, 0x01, 0xB1, 0xF3, 0x03, 0xB9, 0xD3, 0x80, 0xC1, 0xD4, 0x01, 0xC1, 0xD3, 0x81, 0xC1, 0xF3, 0xC1, 0xD3, 0x01, 0xB9, 0xD3, 0x8A, 0xB9, 0xB3, 0xB1, 0xB3, 0xA9, 0xB2, 0xA1, 0xF2, 0x81, 0xD0, 0xCC, 0xBA, 0xEE, 0xBF, 0xDF, 0x1F, 0xD7, 0x3F, 0xCF, 0x3F, 0xC7, 0x3F, 0x02, 0xC7, 0x1F, 0x01, 0xCF, 0x3F, 0x88, 0xDF, 0x1F, 0xE6, 0xBF, 0xBC, 0x79, 0x89, 0xF1, 0x99, 0xF2, 0xA9, 0xB2, 0xB1, 0xD3, 0xB1, 0xB3, 0xB1, 0xD3, 0x02, 0xB9, 0xD3, 0x81, 0xC1, 0xD3, 0xB9, 0xD3, 0x0A, 0xC1, 0xD3, 0x89, 0xB9, 0xB3, 0xB9, 0xD3, 0xB1, 0xB2, 0xA9, 0xB2, 0xA1, 0xF2, 0x89, 0xF1, 0xDD, 0x7C, 0xE6, 0xDF, 0xD6, 0xFF, 0xCF, 0x3F, 0x01, 0xC7, 0x1F, 0x02, 0xC7, 0x3F, 0x01, 0xCF, 0x3F, 0x88, 0xDF, 0x1F, 0xE6, 0xBF, 0xC4, 0xBA, 0x89, 0xF1, 0xA1, 0xD2, 0xA9, 0xB2, 0xB1, 0xD3, 0xB1, 0xB3, 0xB1, 0xD3, 0x03, 0xB9, 0xD3, 0x01, 0xB9, 0xF3, 0x03, 0xB9, 0xD3, 0x02, 0xB9, 0xB3, 0x86, 0xB1, 0x92, 0x99, 0xD1, 0x9B, 0x54, 0xE6, 0xDF, 0xD7, 0x5F, 0xC7, 0x5F, 0xBF, 0x7F, 0x01, 0xBF, 0x5E, 0x06, 0xB7, 0x3E, 0x82, 0xBF, 0x3E, 0xBF, 0x5E, 0xB7, 0x3E, 0x05, 0xBF, 0x5E, 0x05, 0xC7, 0x5F, 0x0C, 0xC7, 0x5E, 0x80, 0xC7, 0x3E, 0x01, 0xBF, 0x3E, 0x06, 0xBF, 0x5E, 0x19, 0xB7, 0x5E, 0x01, 0xB7, 0x3E, 0x01, 0xB7, 0x5E, 0x08, 0xBF, 0x5E, 0x81, 0xBF, 0x5F, 0xC7, 0x5F, 0x04, 0xC7, 0x7F, 0x04, 0xC7, 0x5E, 0x82, 0xCF, 0x5F, 0xC7, 0x5E, 0xC7, 0x5F, 0x04, 0xC7, 0x3E, 0x85, 0xC7, 0x5F, 0xC7, 0x5E, 0xC7, + 0x3E, 0xC7, 0x5F, 0xBF, 0x3E, 0xBF, 0x5E, 0x06, 0xBF, 0x3E, 0x01, 0xBF, 0x5E, 0x88, 0xC7, 0x7F, 0xD7, 0x5F, 0xCE, 0x3E, 0x93, 0x54, 0x89, 0xF1, 0x99, 0xF2, 0xA1, 0xD2, 0xB1, 0xF3, 0xB1, 0xD3, 0x04, 0xB9, 0xD3, 0x83, 0xB9, 0xD4, 0xC1, 0xF4, 0xB9, 0xF4, 0xB9, 0xD3, 0x01, 0xB1, 0xD3, 0x84, 0xA1, 0x92, 0x89, 0xB0, 0xB4, 0x78, 0xE7, 0x1F, 0xD7, 0x3F, 0x01, 0xC7, 0x5F, 0x02, 0xBF, 0x3E, 0x01, 0xC7, 0x3F, 0x83, 0xC7, 0x5F, 0xCF, 0x5F, 0xD7, 0x3F, 0xD7, 0x3E, 0x01, 0xDF, 0x3E, 0x82, 0xE7, 0x3E, 0xE7, 0x1E, 0xE7, 0x1F, 0x01, 0xEF, 0x1F, 0x81, 0xE6, 0xFE, 0xEF, 0x1F, 0x02, 0xE7, 0x1E, 0x01, 0xDF, 0x1E, 0x01, 0xD7, 0x3E, 0x81, 0xCF, 0x3F, 0xC7, 0x5F, 0x02, 0xBF, 0x5E, 0x80, 0xB7, 0x5E, 0x01, 0xB7, 0x3E, 0x01, 0xBF, 0x5E, 0x03, 0xB7, 0x3E, 0x03, 0xB7, 0x5E, 0x07, 0xBF, 0x5E, 0x05, 0xC7, 0x5F, 0x01, 0xCF, 0x7F, 0x01, 0xCF, 0x5F, 0x82, 0xCF, 0x5E, 0xCF, 0x5F, 0xCF, 0x3E, 0x01, 0xCF, 0x3F, 0x01, 0xD7, 0x3F, 0x02, 0xD7, 0x1F, 0x87, 0xDE, 0xFF, 0xDF, 0x1F, 0xE6, 0xFF, 0xF6, 0xDF, 0xFE, 0x7F, 0xC4, 0x17, 0xBB, 0x34, 0xC3, 0x34, 0x02, 0xCB, 0x35, 0x04, 0xD3, 0x35, 0x80, 0xD3, 0x15, 0x0C, 0xDB, 0x15, 0x80, 0xDA, 0xF5, 0x05, 0xDB, 0x15, 0x01, 0xDB, 0x16, 0x8E, 0xDB, 0x17, 0xDB, 0x37, 0xDB, 0x38, 0xD3, 0x59, 0xC3, 0x3B, 0x48, 0x73, 0x40, 0xB5, 0x40, 0xB6, 0x48, 0xB5, 0x50, 0x74, 0x9A, 0x19, 0xBA, 0x59, 0xC2, 0x37, 0xC1, 0xF6, 0xCA, 0x16, 0x02, 0xC9, 0xF5, 0x93, 0xC9, 0xF4, 0xC9, 0xF5, 0xC1, 0xF5, 0xC2, 0x15, 0xB2, 0x35, 0xA2, 0x36, 0x82, + 0x76, 0x73, 0x19, 0x63, 0xFC, 0x4C, 0x7E, 0x3C, 0xBF, 0x24, 0xBE, 0x14, 0x9E, 0x04, 0x9D, 0x04, 0xBD, 0x04, 0xDD, 0x05, 0x3C, 0x1F, 0x1E, 0x17, 0x7C, 0x0F, 0x9C, 0x01, 0x07, 0xBC, 0x01, 0x0F, 0xBC, 0x8B, 0x17, 0x9C, 0x27, 0x7D, 0x37, 0x1E, 0x56, 0xBE, 0x6D, 0x5B, 0x62, 0x93, 0x92, 0x33, 0xA1, 0xD3, 0xB1, 0xB3, 0xB9, 0xB3, 0xB9, 0x93, 0xC1, 0xB4, 0x01, 0xC1, 0xB3, 0x8D, 0xB9, 0x93, 0xC1, 0xB3, 0xB9, 0xB3, 0xB9, 0x93, 0xB9, 0xB3, 0xB9, 0xD4, 0xB1, 0xD3, 0xB1, 0xD4, 0xAA, 0x14, 0xAA, 0x96, 0x69, 0x31, 0x48, 0xEF, 0x49, 0x31, 0x39, 0x31, 0x01, 0x39, 0x51, 0x02, 0x31, 0x51, 0x81, 0x29, 0x30, 0x31, 0x50, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x12, 0x29, 0x30, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x84, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x19, 0x30, 0x02, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x51, 0x01, 0x19, 0x31, 0x01, 0x19, 0x51, 0x82, 0x19, 0x31, 0x21, 0x30, 0x21, 0x31, 0x02, 0x21, 0x30, 0x8A, 0x19, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x22, 0x17, 0x22, 0x18, 0x19, 0xD6, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x02, 0x21, 0x30, 0x93, 0x21, 0x2F, 0x21, + 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x09, 0x53, 0x19, 0xF7, 0x22, 0x38, 0x19, 0xD7, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x31, 0x19, 0x51, 0x19, 0x31, 0x01, 0x11, 0x31, 0x82, 0x19, 0x94, 0x19, 0xD5, 0x19, 0xF6, 0x01, 0x11, 0xD7, 0x80, 0x19, 0xF8, 0x03, 0x11, 0xF8, 0x85, 0x11, 0xF7, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x74, 0x11, 0x32, 0x11, 0x12, 0x01, 0x19, 0x32, 0x8D, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x11, 0x96, 0x19, 0xF8, 0x1A, 0x18, 0x11, 0x96, 0x11, 0x54, 0x11, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x29, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x04, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x05, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x07, 0x21, 0x2F, + 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x07, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x08, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x19, 0x10, 0x05, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x85, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x2F, 0x21, + 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x04, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x05, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x86, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x11, 0x29, 0x30, 0x8E, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x20, 0xEE, 0x20, 0xAD, 0x49, 0x2F, 0xBB, 0xF8, 0xBB, 0x96, 0xB3, 0x55, 0xB3, 0x35, 0xA3, 0x34, 0xAC, 0x16, 0xE7, 0x5F, 0xCF, 0x5F, 0xC7, 0x1E, 0x01, 0xBF, 0x3E, 0x06, 0xB7, 0x3E, 0x8A, 0xB7, 0x5E, 0xBF, 0x7E, 0xC7, 0x9F, 0xDF, 0x7F, 0xA4, 0x16, 0x81, 0xF0, 0x99, 0xF2, 0xA1, 0xD2, 0xA9, 0xD3, 0xB1, 0xF3, 0xB9, 0xF3, 0x01, 0xB9, 0xD3, 0x05, 0xC1, 0xD3, 0x01, 0xB9, 0xD3, 0x01, 0xB9, 0xB3, 0x86, 0xB1, 0xB2, 0xA1, 0xD2, 0x92, 0x31, 0xE6, 0x1F, 0xE6, 0xFF, 0xD7, 0x1F, 0xCF, 0x3F, 0x01, 0xC7, 0x3F, + 0x80, 0xBF, 0x1E, 0x01, 0xBF, 0x3F, 0x01, 0xC7, 0x3F, 0x89, 0xC7, 0x3E, 0xC7, 0x3F, 0xD7, 0x1F, 0xE6, 0xDF, 0xB4, 0x78, 0x8A, 0x11, 0x99, 0xD2, 0xA9, 0xD3, 0xB1, 0xB3, 0xB1, 0xD3, 0x03, 0xB9, 0xD3, 0x0B, 0xC1, 0xD3, 0x01, 0xB9, 0xB3, 0x89, 0xB1, 0xB2, 0xA1, 0xF2, 0x92, 0x31, 0xEE, 0x3F, 0xE7, 0x1F, 0xD7, 0x1F, 0xCF, 0x3F, 0xC7, 0x5F, 0xBF, 0x3F, 0xBF, 0x1E, 0x01, 0xBF, 0x3E, 0x01, 0xC7, 0x5F, 0x88, 0xC7, 0x3F, 0xC7, 0x1E, 0xD7, 0x1F, 0xE6, 0xDF, 0xB4, 0x78, 0x89, 0xF1, 0xA1, 0xD2, 0xA9, 0xB3, 0xB1, 0xB3, 0x01, 0xB1, 0xD3, 0x01, 0xB9, 0xD3, 0x01, 0xB9, 0xF3, 0x01, 0xB9, 0xD3, 0x80, 0xC1, 0xD3, 0x01, 0xB9, 0xD3, 0x01, 0xB9, 0xB3, 0x86, 0xB9, 0xB2, 0xB1, 0x92, 0xA1, 0xD2, 0x92, 0x92, 0xE6, 0x5F, 0xD7, 0x3F, 0xC7, 0x5F, 0x02, 0xBF, 0x5E, 0x07, 0xB7, 0x3E, 0x05, 0xBF, 0x5E, 0x02, 0xC7, 0x5F, 0x81, 0xCF, 0x5F, 0xCF, 0x7F, 0x02, 0xCF, 0x5F, 0x05, 0xD7, 0x5E, 0x01, 0xCF, 0x5E, 0x81, 0xCF, 0x3E, 0xCF, 0x3F, 0x02, 0xCF, 0x3E, 0x83, 0xCF, 0x3F, 0xC7, 0x3F, 0xC7, 0x3E, 0xC7, 0x5F, 0x03, 0xBF, 0x5E, 0x80, 0xBF, 0x3E, 0x01, 0xBF, 0x5E, 0x06, 0xB7, 0x3E, 0x80, 0xB7, 0x3D, 0x01, 0xB7, 0x5E, 0x80, 0xB7, 0x3D, 0x02, 0xB7, 0x3E, 0x05, 0xB7, 0x5E, 0x80, 0xB7, 0x3D, 0x09, 0xB7, 0x3E, 0x04, 0xBF, 0x5E, 0x03, 0xC7, 0x5F, 0x03, 0xCF, 0x5F, 0x80, 0xCF, 0x7F, 0x01, 0xCF, 0x5E, 0x03, 0xD7, 0x5E, 0x80, 0xD7, 0x5F, 0x06, 0xCF, 0x3F, 0x01, 0xC7, 0x3F, 0x81, 0xC7, 0x3E, 0xC7, 0x5E, 0x04, 0xBF, 0x3E, 0x01, 0xBF, 0x1E, 0x02, 0xBF, 0x3E, 0x86, 0xC7, + 0x3F, 0xCF, 0x3F, 0xD6, 0x5E, 0x8B, 0x34, 0x81, 0xF0, 0xA1, 0xF2, 0xA9, 0xD2, 0x01, 0xB1, 0xF3, 0x80, 0xB9, 0xF3, 0x02, 0xB9, 0xD3, 0x83, 0xC1, 0xD4, 0xB9, 0xD4, 0xC1, 0xF4, 0xB9, 0xF4, 0x01, 0xB9, 0xD3, 0x86, 0xB1, 0xD3, 0xA9, 0xB2, 0x91, 0xD0, 0xB4, 0x37, 0xE6, 0xFF, 0xD7, 0x3F, 0xC7, 0x3F, 0x02, 0xBF, 0x3E, 0x80, 0xBF, 0x1E, 0x01, 0xBF, 0x3E, 0x82, 0xC7, 0x3E, 0xC7, 0x1F, 0xCF, 0x1F, 0x01, 0xD7, 0x1F, 0x01, 0xDF, 0x1F, 0x02, 0xE7, 0x1F, 0x01, 0xE6, 0xFF, 0x02, 0xE7, 0x1F, 0x01, 0xDF, 0x1F, 0x82, 0xDF, 0x3F, 0xD7, 0x1E, 0xCF, 0x1F, 0x01, 0xC7, 0x3F, 0x02, 0xBF, 0x5E, 0x81, 0xB7, 0x3E, 0xBF, 0x5E, 0x06, 0xB7, 0x3E, 0x04, 0xB7, 0x5E, 0x05, 0xBF, 0x5E, 0x02, 0xC7, 0x5F, 0x03, 0xCF, 0x5F, 0x01, 0xD7, 0x5E, 0x03, 0xD7, 0x5F, 0x83, 0xD7, 0x5E, 0xD7, 0x3E, 0xD7, 0x3F, 0xD7, 0x1F, 0x01, 0xDF, 0x1F, 0x02, 0xDE, 0xFF, 0x01, 0xE6, 0xFF, 0x85, 0xEE, 0xDF, 0xF6, 0xDF, 0xFE, 0xBF, 0xCC, 0x57, 0xBB, 0x14, 0xC3, 0x14, 0x01, 0xCB, 0x15, 0x05, 0xD3, 0x15, 0x81, 0xD2, 0xF5, 0xD3, 0x15, 0x02, 0xDB, 0x15, 0x01, 0xDA, 0xF5, 0x80, 0xDB, 0x15, 0x0B, 0xDA, 0xF5, 0x01, 0xDA, 0xF6, 0x01, 0xDB, 0x17, 0x84, 0xD3, 0x38, 0xD3, 0x59, 0xBB, 0x1B, 0x40, 0x94, 0x40, 0xD6, 0x01, 0x40, 0xF7, 0x87, 0x48, 0xB6, 0x48, 0x53, 0xB2, 0x7A, 0xBA, 0x38, 0xC2, 0x17, 0xC1, 0xF6, 0xC9, 0xF5, 0xCA, 0x15, 0x03, 0xC9, 0xF5, 0xA1, 0xC2, 0x15, 0xB2, 0x15, 0xA2, 0x35, 0x8A, 0x76, 0x73, 0x19, 0x63, 0xFC, 0x54, 0x7E, 0x3C, 0xBF, 0x24, 0xBE, 0x14, 0xBE, 0x0C, 0xBD, 0x04, + 0xBD, 0x04, 0xFD, 0x05, 0x3B, 0x16, 0xFD, 0x17, 0x7C, 0x0F, 0x9C, 0x07, 0x9B, 0x07, 0xBB, 0x07, 0xBC, 0x0F, 0x9C, 0x17, 0x9C, 0x27, 0x7D, 0x37, 0x1E, 0x56, 0xBE, 0x6D, 0x5B, 0x62, 0x93, 0x92, 0x13, 0xAA, 0x14, 0xB1, 0xD3, 0xB9, 0xB3, 0xB9, 0xB4, 0xB9, 0x93, 0xC1, 0xD4, 0x04, 0xB9, 0x93, 0x80, 0xB9, 0xB3, 0x01, 0xB9, 0xD3, 0x85, 0xB1, 0xD3, 0xB2, 0x14, 0xB2, 0x96, 0x81, 0xB3, 0x50, 0xD0, 0x41, 0x10, 0x01, 0x39, 0x31, 0x80, 0x39, 0x51, 0x02, 0x31, 0x51, 0x80, 0x31, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x04, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x08, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x19, 0x10, 0x80, 0x11, 0x31, 0x01, 0x11, 0x52, 0x02, 0x11, 0x32, 0x01, 0x19, 0x52, 0x01, 0x11, 0x31, 0x01, 0x19, 0x52, 0x81, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x51, 0x01, 0x21, 0x31, 0x8A, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x33, 0x19, 0x95, 0x22, 0x17, 0x22, 0x18, 0x19, 0xB6, 0x11, 0x33, 0x11, 0x11, 0x19, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x09, 0x53, 0x19, 0xD6, 0x1A, 0x18, 0x11, 0xB6, 0x11, + 0x96, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x31, 0x84, 0x19, 0x51, 0x11, 0x31, 0x19, 0x73, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x11, 0xD7, 0x01, 0x11, 0xB7, 0x01, 0x09, 0xB7, 0x88, 0x11, 0xB7, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0xF7, 0x19, 0xD7, 0x11, 0x95, 0x19, 0x74, 0x11, 0x12, 0x19, 0x12, 0x01, 0x19, 0x32, 0x8A, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD7, 0x19, 0xF8, 0x11, 0xD7, 0x11, 0x75, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x06, 0x21, 0x30, 0x03, 0x21, 0x10, 0x05, 0x29, 0x10, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x50, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, + 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x87, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x08, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, + 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x87, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x05, 0x21, 0x10, 0x86, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x06, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x11, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x8C, 0x21, 0x0F, 0x20, 0xEE, 0x28, 0xAD, 0x49, 0x2F, 0xBC, 0x19, 0xBB, 0x96, 0xB3, 0x35, 0xAB, 0x14, 0xA3, 0x14, 0xAC, 0x16, 0xE7, 0x5F, 0xCF, 0x5F, 0xC7, 0x3E, 0x01, 0xBF, 0x3E, 0x05, 0xB7, 0x3E, 0x8A, 0xB7, 0x5E, 0xBF, 0x5E, 0xBF, 0x7E, 0xC7, 0x7F, 0xDF, 0x5F, 0x82, 0xB2, 0x89, 0xD1, 0x99, 0xD2, 0xA1, 0xD2, 0xA9, 0xF3, 0xB9, 0xF3, 0x01, 0xB9, 0xD3, 0x06, 0xC1, 0xD3, 0x02, 0xB9, 0xD3, 0x85, 0xB1, 0xB2, 0xA9, 0xD2, 0x92, 0x11, 0xDD, 0x7C, 0xE6, 0xFF, 0xCF, 0x1F, 0x01, 0xC7, 0x3F, 0x01, 0xBF, 0x3E, 0x80, 0xBF, 0x3F, 0x01, 0xBF, 0x3E, 0x80, 0xBF, 0x1E, 0x01, 0xBF, 0x3E, 0x89, 0xBF, 0x5F, + 0xC7, 0x3F, 0xD7, 0x3F, 0xE6, 0xDF, 0xA3, 0xD6, 0x8A, 0x11, 0xA1, 0xD2, 0xA9, 0xB2, 0xB1, 0xB3, 0xB1, 0xD3, 0x01, 0xB9, 0xD3, 0x0C, 0xC1, 0xD3, 0x8B, 0xB9, 0xB3, 0xB9, 0xB2, 0xA9, 0xD2, 0x92, 0x11, 0xDD, 0x5C, 0xE7, 0x1F, 0xCF, 0x3F, 0xC7, 0x3F, 0xBF, 0x5F, 0xBF, 0x5E, 0xBF, 0x3E, 0xB7, 0x1E, 0x01, 0xBF, 0x1E, 0x01, 0xBF, 0x3E, 0x01, 0xBF, 0x5F, 0x85, 0xC7, 0x3F, 0xCF, 0x1F, 0xE6, 0xDF, 0xAB, 0xD7, 0x91, 0xF1, 0xA1, 0xD2, 0x01, 0xB1, 0xB3, 0x02, 0xB9, 0xD3, 0x01, 0xB9, 0xF3, 0x80, 0xB9, 0xD3, 0x01, 0xC1, 0xD3, 0x01, 0xB9, 0xD3, 0x02, 0xB9, 0xB3, 0x86, 0xB1, 0x92, 0xA9, 0xB2, 0x91, 0xF1, 0xDD, 0xBD, 0xDF, 0x1F, 0xC7, 0x5F, 0xBF, 0x5E, 0x09, 0xB7, 0x3E, 0x02, 0xBF, 0x5E, 0x87, 0xBF, 0x7F, 0xC7, 0x5F, 0xCF, 0x5F, 0xCF, 0x3F, 0xD7, 0x3F, 0xDF, 0x3F, 0xDF, 0x1F, 0xE7, 0x1F, 0x01, 0xEF, 0x3F, 0x07, 0xF7, 0x3F, 0x01, 0xEF, 0x1F, 0x01, 0xE6, 0xFF, 0x80, 0xE7, 0x1F, 0x01, 0xDF, 0x1F, 0x84, 0xD7, 0x1F, 0xD7, 0x3F, 0xCF, 0x3F, 0xC7, 0x5F, 0xC7, 0x5E, 0x01, 0xBF, 0x3E, 0x80, 0xBF, 0x5E, 0x01, 0xBF, 0x3E, 0x05, 0xB7, 0x3E, 0x80, 0xB7, 0x3D, 0x02, 0xB7, 0x3E, 0x80, 0xB7, 0x3D, 0x05, 0xB7, 0x3E, 0x80, 0xB7, 0x3D, 0x0C, 0xB7, 0x3E, 0x02, 0xBF, 0x5E, 0x82, 0xBF, 0x3E, 0xC7, 0x5F, 0xCF, 0x5F, 0x01, 0xD7, 0x3F, 0x83, 0xDF, 0x3F, 0xE7, 0x3F, 0xEF, 0x3F, 0xEF, 0x5F, 0x01, 0xF7, 0x5F, 0x01, 0xF7, 0x3F, 0x84, 0xF7, 0x5F, 0xF7, 0x3F, 0xF7, 0x5F, 0xF7, 0x3F, 0xEF, 0x3F, 0x01, 0xEF, 0x1F, 0x01, 0xE7, 0x1F, 0x80, 0xE6, 0xFF, 0x01, 0xDF, 0x1F, + 0x01, 0xD7, 0x1F, 0x80, 0xCF, 0x3F, 0x02, 0xC7, 0x3E, 0x01, 0xBF, 0x3E, 0x03, 0xBF, 0x1E, 0x01, 0xBF, 0x3E, 0x87, 0xC7, 0x3F, 0xCF, 0x1F, 0xD6, 0x5E, 0x8B, 0x13, 0x89, 0xF1, 0xA1, 0xF2, 0xA9, 0xF2, 0xB1, 0xF3, 0x01, 0xB9, 0xF3, 0x01, 0xB9, 0xD3, 0x80, 0xC1, 0xD3, 0x01, 0xC1, 0xD4, 0x01, 0xC1, 0xF4, 0x80, 0xB9, 0xD3, 0x01, 0xB1, 0xD3, 0x85, 0xA1, 0xB1, 0x91, 0xD0, 0xB4, 0x37, 0xE6, 0xFF, 0xD7, 0x3F, 0xC7, 0x3F, 0x03, 0xBF, 0x1E, 0x80, 0xBF, 0x3E, 0x01, 0xC7, 0x3F, 0x82, 0xCF, 0x1F, 0xCE, 0xFF, 0xD6, 0xFF, 0x01, 0xDF, 0x1F, 0x02, 0xE6, 0xFF, 0x02, 0xEE, 0xFF, 0x80, 0xEE, 0xDF, 0x01, 0xEE, 0xFF, 0x01, 0xE6, 0xFF, 0x84, 0xDE, 0xFF, 0xD6, 0xFF, 0xD7, 0x1F, 0xCF, 0x3F, 0xC7, 0x3F, 0x01, 0xBF, 0x3E, 0x05, 0xB7, 0x3E, 0x80, 0xBF, 0x5E, 0x02, 0xB7, 0x3E, 0x03, 0xB7, 0x5E, 0x03, 0xBF, 0x5E, 0x8B, 0xBF, 0x7E, 0xBF, 0x5E, 0xC7, 0x5F, 0xCF, 0x5F, 0xCF, 0x3F, 0xD7, 0x3F, 0xDF, 0x3F, 0xE7, 0x1F, 0xEF, 0x3F, 0xF7, 0x5F, 0xF7, 0x3F, 0xF7, 0x5F, 0x06, 0xFF, 0x3F, 0x01, 0xF6, 0xFF, 0x04, 0xEE, 0xDF, 0x02, 0xF6, 0xDF, 0x84, 0xFE, 0xBF, 0xFE, 0x7F, 0xDC, 0x99, 0xB2, 0xF4, 0xC3, 0x14, 0x01, 0xCB, 0x15, 0x80, 0xD3, 0x15, 0x02, 0xD2, 0xF5, 0x80, 0xD3, 0x15, 0x01, 0xD2, 0xF5, 0x82, 0xD3, 0x15, 0xDA, 0xF5, 0xD2, 0xF5, 0x0E, 0xDA, 0xF5, 0x01, 0xDA, 0xF6, 0x8D, 0xD2, 0xF6, 0xDB, 0x17, 0xD3, 0x38, 0xCB, 0x5A, 0xB2, 0xFB, 0x40, 0x94, 0x38, 0xF7, 0x41, 0x18, 0x41, 0x39, 0x38, 0xF7, 0x48, 0xD6, 0x79, 0x57, 0xB2, 0x79, 0xC2, 0x38, 0x01, 0xC1, 0xD5, + 0x80, 0xC1, 0xF5, 0x03, 0xC9, 0xF5, 0xA2, 0xC1, 0xF5, 0xB2, 0x15, 0xA2, 0x15, 0x8A, 0x76, 0x73, 0x19, 0x6C, 0x1C, 0x54, 0x9E, 0x3C, 0xBE, 0x2C, 0xDE, 0x1C, 0xDE, 0x0C, 0xBD, 0x04, 0xDD, 0x04, 0xFD, 0x05, 0x5B, 0x16, 0xDD, 0x0F, 0x5C, 0x0F, 0x7C, 0x0F, 0xBC, 0x07, 0xBC, 0x07, 0xBB, 0x0F, 0x9C, 0x17, 0x9C, 0x1F, 0x7D, 0x37, 0x3E, 0x5E, 0xDF, 0x6D, 0x5B, 0x62, 0x93, 0x8A, 0x13, 0xA1, 0xD3, 0xB9, 0xF4, 0xB1, 0x93, 0xB9, 0xB4, 0xC1, 0xB3, 0xB9, 0x93, 0xC1, 0xD4, 0x02, 0xB9, 0x93, 0x02, 0xB9, 0xB3, 0x88, 0xB9, 0xD4, 0xB1, 0xD3, 0xBA, 0x35, 0xB2, 0x76, 0xA2, 0x96, 0x59, 0x11, 0x40, 0xF0, 0x39, 0x10, 0x39, 0x31, 0x04, 0x31, 0x51, 0x01, 0x31, 0x50, 0x81, 0x29, 0x30, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x8A, 0x19, 0x10, 0x19, 0x11, 0x11, 0x31, 0x11, 0x53, 0x11, 0x94, 0x19, 0xB5, 0x19, 0x95, 0x19, 0xB5, 0x19, 0x95, 0x19, 0xB5, 0x19, 0x94, 0x01, 0x11, 0x73, 0x81, 0x11, 0x53, 0x19, 0x52, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x51, 0x01, 0x21, + 0x31, 0x84, 0x21, 0x51, 0x19, 0x32, 0x11, 0x53, 0x11, 0x33, 0x11, 0x95, 0x01, 0x19, 0xF7, 0x83, 0x19, 0xD6, 0x09, 0x12, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x31, 0x11, 0x53, 0x09, 0x53, 0x19, 0xD6, 0x22, 0x18, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x54, 0x11, 0x33, 0x11, 0x11, 0x01, 0x19, 0x51, 0x86, 0x19, 0x31, 0x11, 0x52, 0x11, 0x73, 0x11, 0xB5, 0x19, 0xD6, 0x11, 0xD6, 0x11, 0xB7, 0x01, 0x09, 0x96, 0x02, 0x09, 0x76, 0x80, 0x09, 0x96, 0x02, 0x11, 0xD7, 0x85, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x33, 0x19, 0x32, 0x19, 0x12, 0x19, 0x32, 0x01, 0x11, 0x12, 0x8E, 0x11, 0x54, 0x11, 0x96, 0x11, 0xD7, 0x1A, 0x18, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x19, 0x12, 0x19, 0x11, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, + 0x30, 0x80, 0x21, 0x10, 0x0A, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x09, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x88, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, + 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x04, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x06, 0x21, 0x10, 0x03, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x87, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x0D, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x90, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x28, 0xEE, 0x28, 0xAD, 0x49, 0x2F, 0xBC, 0x19, 0xBB, 0x96, 0xB3, 0x35, 0xAA, 0xF4, 0xA3, 0x14, 0xAC, 0x16, 0xE7, 0x3F, 0xCF, 0x5F, 0xBF, 0x1E, 0xBF, 0x3E, 0xB7, 0x3E, 0x02, 0xB7, 0x1E, 0x81, 0xB7, 0x3E, 0xB7, 0x3D, 0x01, 0xB7, 0x3E, 0x88, 0xB7, 0x5E, 0xBF, 0x7F, 0xC7, 0x5F, 0xDF, 0x1F, 0x7A, 0x51, 0x91, 0xF1, 0x99, + 0xD2, 0xA9, 0xD2, 0xB1, 0xF3, 0x01, 0xB9, 0xF3, 0x80, 0xB9, 0xD3, 0x06, 0xC1, 0xD3, 0x02, 0xB9, 0xB3, 0x8B, 0xB1, 0xD2, 0x99, 0xF1, 0xB3, 0xF7, 0xE6, 0xBF, 0xD7, 0x1F, 0xC7, 0x3F, 0xBF, 0x1E, 0xBF, 0x3E, 0xBF, 0x1E, 0xBF, 0x3F, 0xBF, 0x3E, 0xB7, 0x3E, 0x02, 0xB7, 0x1E, 0x01, 0xB7, 0x3E, 0x88, 0xBF, 0x3E, 0xC7, 0x5F, 0xD7, 0x1F, 0xDE, 0x7E, 0x93, 0x13, 0x91, 0xF2, 0xA1, 0xB2, 0xA9, 0xB2, 0xB1, 0xD3, 0x02, 0xB9, 0xD3, 0x09, 0xC1, 0xD3, 0x8A, 0xC1, 0xB3, 0xC1, 0xD3, 0xB9, 0xB3, 0xB1, 0xB2, 0xA1, 0xF2, 0xA3, 0x75, 0xEE, 0xBF, 0xD7, 0x1F, 0xC7, 0x3F, 0xBF, 0x3F, 0xB7, 0x3E, 0x05, 0xB7, 0x1E, 0x02, 0xB7, 0x3E, 0x86, 0xBF, 0x3E, 0xC7, 0x3F, 0xD7, 0x1F, 0xDE, 0x5E, 0x92, 0xF3, 0x99, 0xF2, 0xA9, 0xD3, 0x01, 0xB1, 0xB3, 0x01, 0xB9, 0xD3, 0x01, 0xB9, 0xF3, 0x01, 0xC1, 0xF3, 0x03, 0xC1, 0xD3, 0x01, 0xB9, 0xB3, 0x85, 0xB9, 0xB2, 0xA9, 0xB2, 0x99, 0xF1, 0xB3, 0xF7, 0xE7, 0x1F, 0xC7, 0x3F, 0x01, 0xBF, 0x3E, 0x08, 0xB7, 0x3E, 0x02, 0xBF, 0x5E, 0x8B, 0xC7, 0x5F, 0xCF, 0x3F, 0xD6, 0xFF, 0xE6, 0xFF, 0xE6, 0x9F, 0xDD, 0xFD, 0xD5, 0x5C, 0xC4, 0x58, 0xA3, 0x35, 0x9A, 0x92, 0x89, 0xF0, 0x81, 0x8F, 0x01, 0x81, 0x6E, 0x91, 0x81, 0x4E, 0x81, 0x6E, 0x89, 0xAF, 0x9A, 0x52, 0xAA, 0xF4, 0xB3, 0x96, 0xBB, 0xF7, 0xCC, 0x99, 0xD4, 0xFB, 0xDD, 0x7C, 0xDD, 0xDD, 0xE6, 0x5E, 0xE6, 0xDF, 0xDF, 0x1F, 0xD7, 0x3F, 0xCF, 0x3E, 0xC7, 0x5F, 0xC7, 0x5E, 0x03, 0xBF, 0x3E, 0x02, 0xB7, 0x3E, 0x82, 0xB7, 0x1D, 0xB7, 0x3E, 0xAF, 0x1D, 0x01, 0xB7, 0x1D, 0x80, 0xAF, + 0x1D, 0x01, 0xAF, 0x3D, 0x02, 0xAF, 0x3E, 0x83, 0xB7, 0x3E, 0xAF, 0x3D, 0xB7, 0x3D, 0xAF, 0x3D, 0x01, 0xAF, 0x1D, 0x01, 0xB7, 0x3E, 0x80, 0xB7, 0x3D, 0x06, 0xB7, 0x3E, 0x8E, 0xBF, 0x3E, 0xBF, 0x5E, 0xC7, 0x5F, 0xC7, 0x3F, 0xCF, 0x1F, 0xDF, 0x1F, 0xE6, 0xBF, 0xDE, 0x3E, 0xD5, 0x9C, 0xCC, 0xFB, 0xAB, 0x75, 0x92, 0x92, 0x89, 0xF0, 0x81, 0x8F, 0x79, 0x6E, 0x01, 0x79, 0x4E, 0x92, 0x81, 0x8E, 0x89, 0xCF, 0x92, 0x51, 0xA2, 0xD3, 0xB3, 0x76, 0xC4, 0x18, 0xD4, 0xBA, 0xD4, 0xFB, 0xDD, 0x5C, 0xDD, 0x9C, 0xE6, 0x3E, 0xEE, 0x9F, 0xE6, 0xFF, 0xDF, 0x1F, 0xCF, 0x1F, 0xCF, 0x3F, 0xC7, 0x3F, 0xC7, 0x3E, 0xBF, 0x3E, 0x04, 0xBF, 0x1E, 0x89, 0xBF, 0x3E, 0xC7, 0x3F, 0xCF, 0x1F, 0xD6, 0x5E, 0x8B, 0x33, 0x89, 0xF1, 0x99, 0xD2, 0xA9, 0xD2, 0xB1, 0xF3, 0xB9, 0xF3, 0x02, 0xB9, 0xD3, 0x84, 0xC1, 0xD3, 0xC1, 0xD4, 0xC1, 0xD3, 0xC1, 0xD4, 0xC1, 0xF4, 0x01, 0xB9, 0xD3, 0x86, 0xB1, 0xF3, 0xA1, 0xB1, 0x91, 0xD0, 0xAC, 0x37, 0xE6, 0xFF, 0xD7, 0x3F, 0xC7, 0x3F, 0x04, 0xBF, 0x1E, 0x83, 0xC7, 0x1F, 0xCF, 0x1F, 0xD7, 0x1F, 0xDE, 0xFF, 0x01, 0xE6, 0xFF, 0x81, 0xEE, 0xDF, 0xF6, 0xFF, 0x01, 0xF6, 0xDF, 0x01, 0xFE, 0xDF, 0x80, 0xFE, 0xBF, 0x02, 0xFE, 0xDF, 0x01, 0xF6, 0xDF, 0x85, 0xEE, 0xDF, 0xE6, 0xDF, 0xDE, 0xFF, 0xCF, 0x1F, 0xC7, 0x1F, 0xBF, 0x3E, 0x08, 0xB7, 0x3E, 0x01, 0xB7, 0x3D, 0x82, 0xB7, 0x3E, 0xB7, 0x5E, 0xB7, 0x3E, 0x03, 0xBF, 0x5E, 0x80, 0xBF, 0x7E, 0x01, 0xC7, 0x5F, 0x89, 0xCF, 0x3F, 0xD7, 0x1F, 0xE6, 0xDF, 0xDE, 0x3E, 0xD5, 0x9C, 0xC4, 0xB9, + 0xA3, 0x55, 0x92, 0x92, 0x89, 0xF0, 0x81, 0x8F, 0x03, 0x81, 0x4E, 0x8A, 0x89, 0x8F, 0x89, 0xAF, 0x9A, 0x31, 0xAB, 0x14, 0xC3, 0xB7, 0xCC, 0x59, 0xE5, 0x1C, 0xED, 0x7D, 0xED, 0x9D, 0xF5, 0xDE, 0xFE, 0x3F, 0x02, 0xFE, 0xBF, 0x01, 0xFE, 0x9F, 0x84, 0xDC, 0x99, 0xBB, 0x14, 0xC3, 0x15, 0xCA, 0xF4, 0xCA, 0xF5, 0x01, 0xD2, 0xF5, 0x80, 0xD2, 0xD5, 0x04, 0xD2, 0xF5, 0x02, 0xDA, 0xF5, 0x03, 0xDA, 0xD5, 0x80, 0xDA, 0xF5, 0x06, 0xDA, 0xD5, 0x91, 0xDA, 0xF5, 0xDA, 0xD5, 0xDA, 0xF6, 0xD2, 0xF6, 0xD3, 0x17, 0xD3, 0x38, 0xCB, 0x5A, 0xAB, 0x1B, 0x38, 0x94, 0x38, 0xF7, 0x39, 0x39, 0x39, 0x59, 0x31, 0x18, 0x38, 0xF7, 0x50, 0xF6, 0x9A, 0x5A, 0xBA, 0x58, 0xC2, 0x17, 0x01, 0xC1, 0xF5, 0x02, 0xC9, 0xF5, 0x01, 0xC1, 0xF5, 0x91, 0xBA, 0x15, 0xA1, 0xF5, 0x8A, 0x36, 0x73, 0x18, 0x6C, 0x1C, 0x54, 0x9E, 0x3C, 0xDE, 0x2C, 0xDE, 0x1C, 0xFE, 0x0C, 0xBD, 0x04, 0xDD, 0x04, 0xFC, 0x05, 0x3B, 0x16, 0xDD, 0x17, 0x7C, 0x0F, 0x7B, 0x07, 0x9B, 0x07, 0xBB, 0x01, 0x0F, 0xBC, 0x88, 0x17, 0x9C, 0x1F, 0x7D, 0x37, 0x3E, 0x56, 0xDE, 0x65, 0x5B, 0x62, 0x93, 0x92, 0x33, 0xA9, 0xF3, 0xB1, 0xB3, 0x01, 0xB9, 0xB4, 0x81, 0xC1, 0xB4, 0xC1, 0xD4, 0x01, 0xB9, 0x93, 0x82, 0xB9, 0xB3, 0xB9, 0x93, 0xB9, 0xB4, 0x02, 0xB9, 0xB3, 0x88, 0xB1, 0x93, 0xA9, 0xB3, 0xB2, 0x55, 0xB2, 0xF8, 0x69, 0x52, 0x40, 0xAF, 0x38, 0xF0, 0x39, 0x31, 0x39, 0x51, 0x01, 0x31, 0x51, 0x80, 0x31, 0x31, 0x0C, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x09, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x04, 0x29, + 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x84, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0xB5, 0x11, 0xD6, 0x01, 0x19, 0xF7, 0x02, 0x19, 0xD7, 0x01, 0x19, 0xD6, 0x83, 0x19, 0xB5, 0x19, 0x94, 0x11, 0x53, 0x19, 0x32, 0x02, 0x19, 0x11, 0x02, 0x19, 0x31, 0x8B, 0x19, 0x32, 0x11, 0x32, 0x09, 0x33, 0x19, 0xB6, 0x22, 0x18, 0x22, 0x17, 0x11, 0xB5, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xF7, 0x22, 0x38, 0x11, 0x96, 0x11, 0x75, 0x09, 0x34, 0x11, 0x33, 0x19, 0x32, 0x02, 0x19, 0x51, 0x84, 0x11, 0x52, 0x11, 0x73, 0x19, 0xF6, 0x19, 0xD6, 0x11, 0xB6, 0x01, 0x11, 0x96, 0x80, 0x09, 0x75, 0x02, 0x09, 0x55, 0x87, 0x09, 0x75, 0x09, 0xB7, 0x11, 0xD7, 0x11, 0xF8, 0x19, 0xD7, 0x19, 0x95, 0x19, 0x74, 0x19, 0x12, 0x01, 0x19, 0x32, 0x90, 0x19, 0x12, 0x10, 0xF2, 0x11, 0x33, 0x11, 0x75, 0x11, 0xD7, 0x11, 0xF8, 0x19, 0xF7, 0x11, 0x96, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, + 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x02, 0x29, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x03, 0x21, 0x31, 0x01, 0x21, 0x11, 0x01, 0x21, 0x31, 0x04, 0x21, 0x10, 0x04, 0x21, 0x30, 0x84, 0x21, 0x50, 0x21, 0x51, 0x21, 0x30, 0x21, 0x31, 0x21, 0x51, 0x02, 0x21, 0x31, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x0E, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x06, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, + 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x8B, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x03, 0x29, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x84, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, + 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x0D, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x8E, 0x21, 0x2F, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0xAD, 0x49, 0x2F, 0xBB, 0xF9, 0xBB, 0x76, 0xB3, 0x15, 0xAA, 0xF4, 0xA3, 0x14, 0xAC, 0x16, 0xE7, 0x3F, 0xCF, 0x3F, 0xBF, 0x1E, 0xBF, 0x3E, 0x01, 0xB7, 0x1E, 0x81, 0xB7, 0x1D, 0xAF, 0x1D, 0x01, 0xB7, 0x1D, 0x01, 0xB7, 0x3E, 0x88, 0xB7, 0x5E, 0xBF, 0x5F, 0xCF, 0x5F, 0xC6, 0x3D, 0x82, 0x51, 0x91, 0xD1, 0x99, 0xD2, 0xA9, 0xD2, 0xB1, 0xF3, 0x01, 0xB9, 0xF3, 0x81, 0xB9, 0xD3, 0xC1, 0xF3, 0x06, 0xC1, 0xD3, 0x86, 0xB9, 0xD3, 0xB1, 0xB2, 0xA9, 0xD2, 0x89, 0xF1, 0xEE, 0x5F, 0xD6, 0xFF, 0xCF, 0x1F, 0x01, 0xBF, 0x1E, 0x83, 0xB7, 0x1E, 0xB7, 0x3E, 0xB7, 0x1E, 0xB7, 0x3E, 0x04, 0xB7, 0x1E, 0x01, 0xB7, 0x3E, 0x87, 0xBF, 0x5E, 0xC7, 0x3F, 0xD7, 0x1F, 0xCD, 0x9C, 0x8A, 0x31, 0x99, 0xD2, 0xA9, 0xD2, 0xB1, 0xB2, 0x01, 0xB9, 0xD3, 0x07, 0xC1, 0xD3, 0x80, 0xC1, 0xD4, 0x01, 0xC1, 0xD3, 0x88, 0xC1, 0xB3, 0xC1, 0xD3, 0xB9, 0xD3, 0xB1, 0xD2, 0x91, 0xF1, 0xD5, 0x9C, 0xDE, 0xFF, 0xCF, 0x3F, 0xBF, 0x3F, 0x09, 0xB7, + 0x1E, 0x01, 0xB7, 0x3E, 0x87, 0xBF, 0x5F, 0xC7, 0x3F, 0xD6, 0xFF, 0xC5, 0x7B, 0x8A, 0x31, 0xA1, 0xD2, 0xA9, 0xD3, 0xB1, 0xB3, 0x03, 0xB9, 0xD3, 0x81, 0xC1, 0xD3, 0xC1, 0xF3, 0x02, 0xC1, 0xD3, 0x88, 0xC1, 0xD4, 0xC1, 0xB3, 0xB9, 0xB3, 0xB9, 0xB2, 0xB1, 0xB2, 0xA1, 0xD1, 0xA3, 0x34, 0xE7, 0x1F, 0xC7, 0x3F, 0x01, 0xBF, 0x3E, 0x81, 0xB7, 0x3E, 0xB7, 0x1E, 0x01, 0xB7, 0x3E, 0x80, 0xB7, 0x1E, 0x02, 0xB7, 0x3E, 0x01, 0xBF, 0x3E, 0x8C, 0xC7, 0x3F, 0xCF, 0x1F, 0xDF, 0x1F, 0xEE, 0xFF, 0xCD, 0x7B, 0x9B, 0x95, 0x92, 0xD2, 0x8A, 0x31, 0x89, 0xF0, 0x91, 0xB0, 0x99, 0xB1, 0x99, 0x71, 0xA1, 0x91, 0x05, 0xA9, 0x71, 0x80, 0xA9, 0x91, 0x01, 0xA1, 0x91, 0x01, 0x99, 0xB1, 0x8B, 0x91, 0xD0, 0x91, 0xF0, 0x8A, 0x11, 0x92, 0xB2, 0x9B, 0x75, 0xCD, 0x5B, 0xF7, 0x1F, 0xE7, 0x1F, 0xD7, 0x1F, 0xCF, 0x1F, 0xC7, 0x3F, 0xC7, 0x3E, 0x01, 0xBF, 0x3E, 0x01, 0xB7, 0x3E, 0x01, 0xB7, 0x1E, 0x83, 0xB7, 0x1D, 0xB7, 0x1E, 0xAF, 0x1D, 0xB7, 0x1D, 0x01, 0xAF, 0x1D, 0x01, 0xAF, 0x3D, 0x80, 0xAF, 0x3E, 0x03, 0xAF, 0x3D, 0x01, 0xAF, 0x1D, 0x82, 0xAF, 0x1E, 0xAF, 0x1D, 0xB7, 0x1E, 0x02, 0xB7, 0x3E, 0x80, 0xB7, 0x1E, 0x02, 0xB7, 0x3E, 0x01, 0xBF, 0x3E, 0x8E, 0xC7, 0x3F, 0xCF, 0x1F, 0xDE, 0xFF, 0xE6, 0xDF, 0xAC, 0x77, 0x93, 0x34, 0x8A, 0x71, 0x89, 0xF0, 0x89, 0xB0, 0x99, 0xB1, 0x99, 0x91, 0xA1, 0x91, 0xA1, 0x71, 0xA9, 0x71, 0xA1, 0x51, 0x01, 0xA9, 0x71, 0x80, 0xA9, 0x91, 0x01, 0xA1, 0x91, 0x80, 0xA1, 0xB1, 0x01, 0x99, 0xB1, 0x01, 0x91, 0xD0, 0x87, 0x92, 0x11, 0x92, + 0x72, 0x92, 0xF3, 0xA3, 0xD6, 0xDE, 0x1E, 0xEF, 0x1F, 0xDE, 0xFF, 0xD7, 0x1F, 0x01, 0xC7, 0x1E, 0x04, 0xBF, 0x1E, 0x01, 0xC7, 0x1E, 0x88, 0xCE, 0xFF, 0xD6, 0x5E, 0x8B, 0x13, 0x89, 0xF1, 0x99, 0xD2, 0xA9, 0xD2, 0xB1, 0xF3, 0xB9, 0xF3, 0xB9, 0xD3, 0x05, 0xC1, 0xD3, 0x80, 0xC1, 0xF4, 0x01, 0xB9, 0xD3, 0x87, 0xB1, 0xD3, 0xA1, 0x91, 0x91, 0xD0, 0xB4, 0x57, 0xDE, 0xFF, 0xCF, 0x1F, 0xC7, 0x3F, 0xBE, 0xFE, 0x02, 0xB7, 0x1E, 0x8B, 0xBF, 0x1E, 0xC7, 0x1F, 0xC6, 0xDE, 0x94, 0xB7, 0xA4, 0x77, 0xAC, 0x78, 0xAC, 0x57, 0xAC, 0x17, 0xB3, 0xF7, 0xAB, 0xB6, 0xAB, 0x95, 0xAB, 0x54, 0x04, 0xA3, 0x34, 0x87, 0xA3, 0x54, 0xA3, 0x75, 0xA3, 0x95, 0x9B, 0xB5, 0x8B, 0x93, 0xAD, 0x9A, 0xCF, 0x1F, 0xBF, 0x3E, 0x01, 0xB7, 0x3E, 0x84, 0xB7, 0x1E, 0xB7, 0x3E, 0xAF, 0x1E, 0xB7, 0x3E, 0xB7, 0x1E, 0x07, 0xB7, 0x3E, 0x01, 0xBF, 0x5E, 0x8D, 0xC7, 0x5E, 0xCF, 0x5F, 0xD7, 0x3F, 0xDF, 0x1F, 0xE6, 0xFF, 0xB4, 0xF9, 0x93, 0x54, 0x82, 0x51, 0x89, 0xF1, 0x89, 0xB0, 0x91, 0x90, 0x99, 0x71, 0xA1, 0x71, 0xA9, 0x71, 0x03, 0xA9, 0x51, 0x02, 0xA9, 0x71, 0x90, 0xA1, 0x91, 0xA1, 0xB1, 0x99, 0xB1, 0x99, 0xB0, 0x99, 0xD1, 0x99, 0xF1, 0x9A, 0x52, 0xA2, 0xB3, 0xB3, 0x54, 0xED, 0x7C, 0xFE, 0x9F, 0xFE, 0x7F, 0xFE, 0x5F, 0xFE, 0x1F, 0xE4, 0x9A, 0xBA, 0xD4, 0xC2, 0xF4, 0x01, 0xCA, 0xF5, 0x80, 0xD2, 0xD5, 0x06, 0xD2, 0xF5, 0x0A, 0xDA, 0xD5, 0x80, 0xD2, 0xB4, 0x03, 0xDA, 0xD5, 0x91, 0xD2, 0xD6, 0xD2, 0xF6, 0xD2, 0xF7, 0xD3, 0x18, 0xCB, 0x3A, 0xAB, 0x1B, 0x38, 0x94, 0x31, 0x18, + 0x31, 0x39, 0x31, 0x5A, 0x31, 0x39, 0x31, 0x19, 0x40, 0xF7, 0x71, 0xB9, 0xB2, 0x7A, 0xC2, 0x37, 0xB9, 0xD5, 0xC1, 0xF5, 0x01, 0xC9, 0xF5, 0x8C, 0xC9, 0xD5, 0xC1, 0xD4, 0xC1, 0xD5, 0xB9, 0xF5, 0xA1, 0xF5, 0x8A, 0x15, 0x7B, 0x18, 0x6C, 0x1C, 0x5C, 0xBE, 0x3C, 0xFE, 0x2C, 0xFF, 0x1C, 0xFE, 0x0C, 0xFD, 0x01, 0x04, 0xFD, 0x84, 0x05, 0x5B, 0x0E, 0xBC, 0x0F, 0x5C, 0x0F, 0x7B, 0x0F, 0xBB, 0x01, 0x07, 0xBB, 0x9E, 0x0F, 0x9C, 0x17, 0x9C, 0x1F, 0x7D, 0x37, 0x3D, 0x56, 0xDE, 0x65, 0x5B, 0x62, 0x93, 0x92, 0x33, 0xA1, 0xF3, 0xB1, 0x93, 0xB9, 0xB3, 0xB9, 0xB4, 0xC1, 0xD4, 0xC1, 0xB4, 0xB9, 0xB4, 0xB9, 0x93, 0xB1, 0x73, 0xB9, 0xB4, 0xB9, 0xB3, 0xB9, 0xD4, 0xB9, 0xD3, 0xB9, 0xD4, 0xB1, 0xB3, 0xA9, 0xD4, 0xAA, 0x15, 0xB2, 0xD8, 0x79, 0xF4, 0x40, 0xD0, 0x39, 0x10, 0x39, 0x31, 0x31, 0x30, 0x03, 0x31, 0x51, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x82, 0x29, 0x50, 0x29, 0x30, 0x29, 0x2F, 0x0D, 0x29, 0x30, 0x80, 0x29, 0x10, 0x05, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x03, 0x21, 0x10, 0x84, 0x21, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x95, 0x11, 0xD7, 0x03, 0x11, 0xF8, 0x02, 0x11, 0xD7, 0x87, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xB5, + 0x19, 0x94, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x32, 0x01, 0x11, 0x33, 0x80, 0x19, 0xB6, 0x01, 0x22, 0x17, 0x85, 0x19, 0xB6, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x30, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x8D, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xF7, 0x22, 0x18, 0x11, 0x96, 0x11, 0x75, 0x11, 0x34, 0x11, 0x33, 0x19, 0x32, 0x19, 0x52, 0x01, 0x19, 0x51, 0x8D, 0x11, 0x32, 0x19, 0x94, 0x19, 0xF6, 0x11, 0xB6, 0x11, 0x96, 0x09, 0x76, 0x09, 0x75, 0x09, 0x55, 0x09, 0x54, 0x09, 0x34, 0x09, 0x54, 0x09, 0x55, 0x09, 0x76, 0x11, 0xF7, 0x01, 0x11, 0xD7, 0x88, 0x19, 0xB5, 0x19, 0x54, 0x19, 0x53, 0x19, 0x12, 0x19, 0x32, 0x19, 0x12, 0x11, 0x12, 0x11, 0x13, 0x11, 0x95, 0x01, 0x11, 0xD7, 0x84, 0x1A, 0x18, 0x11, 0x96, 0x11, 0x54, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x85, 0x21, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x29, 0x30, 0x88, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, + 0x31, 0x80, 0x21, 0x52, 0x02, 0x19, 0x31, 0x01, 0x21, 0x32, 0x05, 0x21, 0x31, 0x80, 0x21, 0x11, 0x06, 0x21, 0x31, 0x80, 0x21, 0x51, 0x09, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x21, 0x31, 0x80, 0x19, 0x10, 0x03, 0x21, 0x31, 0x80, 0x19, 0x31, 0x05, 0x21, 0x31, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x08, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x85, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x0A, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x09, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x08, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x06, 0x21, 0x0F, + 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x09, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x08, 0x29, 0x30, 0x8C, 0x29, 0x2F, 0x21, 0x0F, 0x28, 0xEE, 0x28, 0xAD, 0x49, 0x2F, 0xBB, 0xF9, 0xBB, 0x76, 0xB2, 0xF4, 0xAA, 0xF4, 0xA2, 0xF3, 0xAC, 0x16, 0xDF, 0x1F, 0xCF, 0x3F, 0x01, 0xBF, 0x1E, 0x80, 0xB7, 0x1E, 0x01, 0xAE, 0xFD, 0x02, 0xAF, 0x1D, 0x80, 0xAF, 0x1E, 0x01, 0xB7, 0x3E, 0x88, 0xBF, 0x5F, 0xCF, 0x3F, 0xBD, 0xBB, 0x71, 0xCF, 0x99, 0xF2, 0xA1, 0xD2, 0xA9, 0xD3, 0xB2, 0x13, 0xB9, 0xF3, 0x01, 0xB9, + 0xD3, 0x83, 0xC1, 0xD3, 0xC1, 0xF3, 0xC1, 0xD3, 0xC1, 0xF3, 0x03, 0xC1, 0xD3, 0x87, 0xB9, 0xB3, 0xB1, 0xD2, 0xA1, 0xF1, 0xB3, 0xB6, 0xEE, 0xFF, 0xCF, 0x1F, 0xC7, 0x1F, 0xBF, 0x3F, 0x04, 0xB7, 0x1E, 0x05, 0xAF, 0x1E, 0x88, 0xB7, 0x3E, 0xB7, 0x5F, 0xBF, 0x5F, 0xC7, 0x3F, 0xE7, 0x3F, 0xA3, 0xB6, 0x92, 0x11, 0xA1, 0xD2, 0xB1, 0xB2, 0x02, 0xB9, 0xD3, 0x09, 0xC1, 0xD3, 0x01, 0xC1, 0xB3, 0x87, 0xB9, 0xD3, 0xA9, 0xD2, 0x92, 0x51, 0xF7, 0x1F, 0xCF, 0x1F, 0xC7, 0x3F, 0xBF, 0x3F, 0xB7, 0x1E, 0x08, 0xAF, 0x1E, 0x02, 0xB7, 0x3E, 0x87, 0xBF, 0x3E, 0xCF, 0x1F, 0xE7, 0x1F, 0x9B, 0x55, 0x9A, 0x12, 0xA9, 0xD2, 0xB1, 0xB3, 0xB1, 0xD3, 0x01, 0xB9, 0xD3, 0x81, 0xC1, 0xD3, 0xC1, 0xF3, 0x05, 0xC1, 0xD3, 0x01, 0xB9, 0xB3, 0x84, 0xB1, 0xD2, 0xA9, 0xB1, 0x89, 0xF0, 0xEE, 0xFF, 0xC7, 0x1F, 0x01, 0xBF, 0x1E, 0x05, 0xB7, 0x1E, 0x8E, 0xB7, 0x3E, 0xBF, 0x3E, 0xC7, 0x3F, 0xCF, 0x1F, 0xDE, 0xFF, 0xD6, 0x3E, 0xB4, 0x58, 0x82, 0x10, 0x89, 0xD0, 0x91, 0xD1, 0x99, 0xD1, 0xA1, 0xB1, 0xA1, 0xB2, 0xA9, 0xB2, 0xA9, 0x92, 0x02, 0xB1, 0x92, 0x02, 0xB9, 0x92, 0x81, 0xB9, 0x72, 0xB9, 0x92, 0x02, 0xB1, 0x92, 0x01, 0xB1, 0xB2, 0x01, 0xA9, 0xB2, 0x01, 0xA1, 0xD1, 0x89, 0x99, 0xD1, 0x89, 0xD0, 0x81, 0xCF, 0xBC, 0x17, 0xDD, 0xFD, 0xE6, 0xFF, 0xD7, 0x1F, 0xCF, 0x3F, 0xC7, 0x3E, 0xBF, 0x3E, 0x04, 0xB7, 0x1E, 0x80, 0xAF, 0x1E, 0x05, 0xAF, 0x1D, 0x80, 0xAF, 0x3D, 0x06, 0xAF, 0x1D, 0x01, 0xB7, 0x1E, 0x81, 0xB7, 0x3E, 0xAF, 0x1E, 0x03, 0xB7, 0x3E, 0x8B, 0xBF, 0x3E, 0xBF, + 0x3F, 0xCF, 0x3F, 0xD6, 0xFF, 0xD6, 0x1E, 0xB4, 0x58, 0x79, 0xF0, 0x89, 0xB0, 0x91, 0xD1, 0x99, 0xB1, 0xA1, 0xB1, 0xA1, 0xB2, 0x01, 0xA9, 0x92, 0x03, 0xB1, 0x92, 0x81, 0xB9, 0x92, 0xB1, 0xB2, 0x01, 0xB1, 0x92, 0x03, 0xB1, 0xB2, 0x01, 0xA9, 0xB2, 0x89, 0xA1, 0xB1, 0xA1, 0xD1, 0x99, 0xD1, 0x91, 0xF1, 0x81, 0xB0, 0x9B, 0x14, 0xDD, 0x9C, 0xE6, 0xBF, 0xD6, 0xFF, 0xCE, 0xFE, 0x01, 0xC7, 0x1E, 0x03, 0xBF, 0x1E, 0x87, 0xC7, 0x1E, 0xCE, 0xFF, 0xD6, 0x3E, 0x82, 0xF3, 0x89, 0xF1, 0x99, 0xD2, 0xA9, 0xD3, 0xB1, 0xF3, 0x01, 0xB9, 0xF3, 0x04, 0xC1, 0xD3, 0x01, 0xC1, 0xF4, 0x89, 0xB9, 0xF3, 0xB9, 0xD3, 0xB1, 0xD3, 0xA9, 0xB2, 0x91, 0xD1, 0xAC, 0x37, 0xE6, 0xFF, 0xCF, 0x1F, 0xC7, 0x3E, 0xBF, 0x1E, 0x02, 0xB7, 0x1E, 0x87, 0xBF, 0x1E, 0xC6, 0xFF, 0xCE, 0x9E, 0x6A, 0xD1, 0x69, 0xCF, 0x79, 0xAF, 0x81, 0xB0, 0x81, 0x90, 0x01, 0x89, 0xB0, 0x01, 0x91, 0xB0, 0x02, 0x99, 0xB0, 0x03, 0x91, 0xB0, 0x86, 0x91, 0xD0, 0x8A, 0x10, 0x7A, 0x30, 0xA4, 0xB8, 0xCE, 0xFF, 0xBF, 0x1E, 0xB7, 0x1E, 0x03, 0xAF, 0x1E, 0x01, 0xAF, 0x1D, 0x82, 0xAF, 0x1E, 0xAF, 0x1D, 0xB7, 0x3D, 0x04, 0xB7, 0x3E, 0x88, 0xBF, 0x3E, 0xC7, 0x3E, 0xCF, 0x3F, 0xD7, 0x1F, 0xD6, 0x3E, 0xB4, 0x58, 0x82, 0x10, 0x81, 0xB0, 0x89, 0xB0, 0x01, 0x99, 0xB1, 0x82, 0xA1, 0x91, 0xA9, 0x92, 0xB1, 0x92, 0x01, 0xB1, 0x72, 0x06, 0xB9, 0x72, 0x01, 0xB1, 0x92, 0x82, 0xB1, 0xB2, 0xB1, 0x92, 0xB1, 0xB2, 0x01, 0xA9, 0xB2, 0x85, 0xA9, 0xB1, 0xA1, 0xB1, 0x99, 0x90, 0x99, 0xF1, 0xEC, 0xDB, 0xFD, 0xFF, 0x01, + 0xFE, 0x1F, 0x82, 0xEC, 0x9A, 0xC3, 0x15, 0xC2, 0xF4, 0x01, 0xCA, 0xD5, 0x07, 0xD2, 0xD5, 0x01, 0xDA, 0xD5, 0x08, 0xDA, 0xB5, 0x03, 0xDA, 0xD5, 0x01, 0xD2, 0xD6, 0x91, 0xD2, 0xF7, 0xD3, 0x18, 0xC3, 0x1A, 0xB3, 0x3C, 0x30, 0x95, 0x31, 0x18, 0x31, 0x39, 0x31, 0x5A, 0x29, 0x5A, 0x31, 0x3A, 0x39, 0x39, 0x48, 0xF6, 0xAA, 0x9B, 0xBA, 0x58, 0xB9, 0xF6, 0xC1, 0xF6, 0xC1, 0xF5, 0xC9, 0xF5, 0x01, 0xC1, 0xD5, 0x9D, 0xC1, 0xF5, 0xB9, 0xF5, 0xA1, 0xD5, 0x8A, 0x15, 0x7A, 0xF8, 0x74, 0x3C, 0x5C, 0xDE, 0x45, 0x1F, 0x2D, 0x1F, 0x1C, 0xFE, 0x0C, 0xFD, 0x04, 0xFD, 0x05, 0x1C, 0x05, 0x5B, 0x0E, 0xBC, 0x0F, 0x3B, 0x0F, 0x9B, 0x0F, 0xBB, 0x0F, 0xDB, 0x07, 0xBB, 0x0F, 0x9B, 0x17, 0x7C, 0x1F, 0x7D, 0x37, 0x3D, 0x5E, 0xDE, 0x65, 0x3A, 0x62, 0x93, 0x8A, 0x33, 0xAA, 0x14, 0xB1, 0xD4, 0x02, 0xB9, 0xB4, 0x90, 0xB9, 0x93, 0xC1, 0xD4, 0xB1, 0x73, 0xB9, 0x93, 0xB9, 0xB4, 0xB9, 0x93, 0xB1, 0x93, 0xB9, 0xD4, 0xB1, 0xD3, 0xA9, 0xB3, 0x99, 0x72, 0xAA, 0x55, 0xAA, 0xF8, 0x92, 0xB7, 0x51, 0x31, 0x41, 0x31, 0x39, 0x31, 0x02, 0x31, 0x51, 0x80, 0x31, 0x50, 0x01, 0x29, 0x30, 0x01, 0x29, 0x50, 0x06, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x08, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x29, 0x30, 0x04, 0x29, 0x0F, + 0x02, 0x29, 0x10, 0x02, 0x21, 0x10, 0x01, 0x21, 0x31, 0x91, 0x19, 0x32, 0x11, 0x53, 0x19, 0xB6, 0x19, 0xF7, 0x11, 0xF8, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xD7, 0x09, 0x97, 0x09, 0x96, 0x11, 0x96, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x74, 0x19, 0x53, 0x19, 0x32, 0x03, 0x19, 0x31, 0x83, 0x19, 0x32, 0x11, 0x33, 0x09, 0x33, 0x19, 0x95, 0x01, 0x19, 0xF7, 0x83, 0x19, 0xD6, 0x09, 0x33, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x30, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8B, 0x29, 0x30, 0x21, 0x30, 0x21, 0x31, 0x19, 0x52, 0x19, 0x53, 0x11, 0x74, 0x19, 0xF7, 0x22, 0x18, 0x11, 0x76, 0x11, 0x55, 0x11, 0x34, 0x11, 0x33, 0x01, 0x19, 0x52, 0x01, 0x11, 0x31, 0x85, 0x11, 0x52, 0x11, 0x74, 0x19, 0xF6, 0x19, 0xD6, 0x11, 0x95, 0x09, 0x75, 0x01, 0x09, 0x55, 0x01, 0x09, 0x34, 0x87, 0x01, 0x13, 0x01, 0x34, 0x01, 0x55, 0x09, 0x96, 0x11, 0xD7, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x53, 0x02, 0x19, 0x32, 0x8C, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x95, 0x11, 0xD7, 0x11, 0xD8, 0x19, 0xF8, 0x11, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x84, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x29, + 0x30, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x21, 0x11, 0x19, 0x11, 0x01, 0x19, 0x32, 0x81, 0x19, 0x11, 0x11, 0x11, 0x02, 0x19, 0x12, 0x80, 0x19, 0x32, 0x02, 0x19, 0x12, 0x01, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x32, 0x03, 0x19, 0x11, 0x80, 0x10, 0xF1, 0x05, 0x19, 0x11, 0x80, 0x11, 0x11, 0x02, 0x19, 0x11, 0x03, 0x11, 0x11, 0x01, 0x19, 0x11, 0x81, 0x10, 0xF1, 0x19, 0x11, 0x01, 0x11, 0x11, 0x81, 0x19, 0x11, 0x10, 0xF1, 0x01, 0x11, 0x11, 0x02, 0x19, 0x11, 0x80, 0x10, 0xF1, 0x01, 0x11, 0x11, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, + 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x09, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x85, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x08, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x08, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, + 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x0E, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x30, 0x90, 0x29, 0x2F, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0xAD, 0x49, 0x2F, 0xBB, 0xD8, 0xBB, 0x56, 0xB2, 0xF4, 0xAA, 0xD4, 0x9A, 0xD3, 0xAC, 0x16, 0xDF, 0x1F, 0xC7, 0x3F, 0xBF, 0x3E, 0xBF, 0x1E, 0xB6, 0xFD, 0xAE, 0xFD, 0x02, 0xAF, 0x1D, 0x8E, 0xAE, 0xFD, 0xAF, 0x1D, 0xAF, 0x1E, 0xB7, 0x3E, 0xBF, 0x5F, 0xCF, 0x3F, 0xAC, 0xF9, 0x79, 0xF0, 0x99, 0xD2, 0xA1, 0xD2, 0xA9, 0xF3, 0xB2, 0x13, 0xBA, 0x14, 0xB9, 0xF3, 0xB9, 0xD3, 0x01, 0xC1, 0xD3, 0x01, 0xC1, 0xF3, 0x02, 0xC1, 0xD3, 0x87, 0xB9, 0xD3, 0xB9, 0xB2, 0xB1, 0xD2, 0x9A, 0x31, 0xDD, 0x7C, 0xDE, 0xDF, 0xC7, 0x1F, 0xBF, 0x1E, 0x02, 0xB7, 0x1E, 0x08, 0xAF, 0x1E, 0x80, 0xAF, 0x3E, 0x01, 0xB7, 0x5E, 0x88, 0xBF, 0x5F, 0xD7, 0x3F, 0xCD, 0x7C, 0x8A, 0x52, 0x99, 0xF2, 0xA9, 0xD2, 0xB1, 0xD3, 0xB9, 0xD3, 0xC1, 0xF3, 0x09, 0xC1, 0xD3, 0x88, 0xC1, 0xB3, 0xB9, 0xB3, 0xB1, 0xD2, 0xA1, 0xF1, 0xBC, 0x18, 0xE6, 0xFF, 0xC7, 0x1F, 0xBF, 0x1E, 0xB7, 0x1E, 0x02, 0xAF, 0x1E, 0x82, 0xAF, 0x1D, 0xAE, 0xFD, 0xAF, 0x1D, 0x03, 0xAF, 0x1E, 0x01, 0xB7, 0x1E, 0x86, 0xB7, 0x3E, 0xBF, 0x3E, 0xBF, 0x1E, 0xD6, 0xFF, 0xCD, 0x5C, 0x92, 0x52, 0xA1, 0xF2, 0x01, 0xB1, 0xD3, 0x01, 0xB9, 0xD3, 0x01, 0xC1, 0xF3, 0x05, 0xC1, 0xD3, 0x88, 0xC1, 0xB3, 0xB9, 0xB3, 0xB9, 0xD3, 0xA9, 0xB2, 0x89, 0xF0, 0xDE, 0x7E, 0xCE, 0xFE, 0xBE, 0xFE, 0xBF, 0x1E, 0x02, 0xB7, 0x1E, 0x81, 0xB6, 0xFE, 0xB7, 0x1E, 0x01, 0xBF, 0x1E, 0x8B, + 0xC7, 0x1F, 0xCF, 0x1F, 0xE6, 0xFF, 0xB4, 0xB9, 0x82, 0x71, 0x89, 0xF1, 0x99, 0xB1, 0xA1, 0xB1, 0xA9, 0xB2, 0xB1, 0xB2, 0xB1, 0x92, 0xB9, 0xB2, 0x02, 0xB9, 0x92, 0x81, 0xB9, 0xB3, 0xB9, 0x93, 0x05, 0xC1, 0x93, 0x81, 0xC1, 0xB3, 0xC1, 0x93, 0x01, 0xB9, 0x93, 0x01, 0xB9, 0x92, 0x80, 0xB1, 0x92, 0x01, 0xB1, 0xB2, 0x88, 0xA9, 0xB2, 0xA1, 0xD1, 0x99, 0xF1, 0x92, 0x51, 0xA3, 0x95, 0xDE, 0x5E, 0xE7, 0x1F, 0xCE, 0xFF, 0xC7, 0x1F, 0x01, 0xBF, 0x1E, 0x03, 0xB7, 0x1E, 0x81, 0xAF, 0x1D, 0xAE, 0xFD, 0x0C, 0xAF, 0x1D, 0x80, 0xB7, 0x1E, 0x01, 0xAF, 0x1E, 0x02, 0xB7, 0x3E, 0x88, 0xBF, 0x3E, 0xC7, 0x1F, 0xCE, 0xFF, 0xE6, 0xFF, 0xB4, 0xF9, 0x8A, 0xD3, 0x89, 0xD0, 0x99, 0xD1, 0xA1, 0xB1, 0x01, 0xA9, 0xB2, 0x01, 0xB1, 0xB2, 0x04, 0xB9, 0xB3, 0x01, 0xC1, 0xB3, 0x05, 0xB9, 0xB3, 0x81, 0xB9, 0xB2, 0xB9, 0xB3, 0x01, 0xB1, 0x92, 0x01, 0xB1, 0xB2, 0x01, 0xA9, 0xB2, 0x86, 0x99, 0xD1, 0x8A, 0x11, 0x9B, 0x34, 0xE6, 0x5E, 0xDE, 0xDF, 0xD6, 0xDE, 0xCE, 0xFE, 0x04, 0xC7, 0x1E, 0x86, 0xCE, 0xFF, 0xD6, 0x5E, 0x82, 0xF3, 0x89, 0xF1, 0x99, 0xD2, 0xA9, 0xD3, 0xB1, 0xF3, 0x01, 0xB9, 0xF3, 0x82, 0xC1, 0xF3, 0xC1, 0xD3, 0xC1, 0xF4, 0x02, 0xC1, 0xD3, 0x80, 0xC1, 0xF4, 0x01, 0xB9, 0xD3, 0x86, 0xB1, 0xD3, 0xA9, 0xB2, 0x91, 0xD1, 0xB4, 0x37, 0xDE, 0xDF, 0xCF, 0x1F, 0xBF, 0x1E, 0x03, 0xB7, 0x1E, 0x84, 0xBF, 0x1E, 0xC6, 0xFF, 0xD6, 0x9F, 0x7B, 0x12, 0x79, 0xD0, 0x01, 0x91, 0xB1, 0x80, 0x99, 0x91, 0x03, 0xA1, 0xB1, 0x03, 0xA9, 0xB1, 0x88, 0xA1, 0x91, 0xA9, 0xB1, + 0xA1, 0x91, 0xA1, 0xB1, 0x99, 0xD1, 0x82, 0x10, 0xA4, 0x98, 0xCE, 0xFF, 0xBE, 0xFE, 0x01, 0xB7, 0x1E, 0x80, 0xAF, 0x1E, 0x05, 0xAF, 0x1D, 0x8D, 0xB7, 0x3E, 0xB7, 0x3D, 0xB7, 0x3E, 0xB7, 0x3D, 0xB7, 0x3E, 0xBF, 0x3E, 0xC7, 0x3F, 0xCF, 0x1F, 0xE6, 0xFF, 0xB4, 0xD9, 0x8A, 0xD3, 0x89, 0xF1, 0x99, 0xB1, 0xA1, 0xB2, 0x01, 0xA9, 0xB2, 0x01, 0xB1, 0xB2, 0x80, 0xB9, 0x92, 0x02, 0xB9, 0x93, 0x08, 0xC1, 0x93, 0x80, 0xC1, 0x92, 0x05, 0xB9, 0x92, 0x89, 0xB1, 0x92, 0xA9, 0xB2, 0xA1, 0xD1, 0xAA, 0x73, 0xFD, 0x5E, 0xFD, 0xFF, 0xFD, 0xBF, 0xFD, 0x1C, 0xBA, 0xD4, 0xC2, 0xD4, 0x02, 0xCA, 0xD5, 0x02, 0xD2, 0xD5, 0x01, 0xD2, 0xB4, 0x01, 0xD2, 0xB5, 0x03, 0xDA, 0xB5, 0x02, 0xDA, 0xB4, 0x06, 0xDA, 0xB5, 0x91, 0xD2, 0xB6, 0xD2, 0xD6, 0xD2, 0xD7, 0xCA, 0xF8, 0xC3, 0x1A, 0xAB, 0x3C, 0x30, 0x95, 0x29, 0x19, 0x29, 0x3A, 0x29, 0x5A, 0x29, 0x7B, 0x29, 0x5A, 0x31, 0x5A, 0x41, 0x18, 0x79, 0x98, 0xAA, 0x59, 0xBA, 0x17, 0xB9, 0xF6, 0x01, 0xC1, 0xF5, 0x80, 0xC9, 0xF5, 0x01, 0xC1, 0xF5, 0x89, 0xB9, 0xF5, 0xA1, 0xB4, 0x89, 0xF5, 0x7A, 0xD8, 0x74, 0x1C, 0x5C, 0xFF, 0x45, 0x3F, 0x2D, 0x1F, 0x1D, 0x1E, 0x0D, 0x1E, 0x01, 0x05, 0x1D, 0x91, 0x05, 0x7B, 0x0E, 0x9C, 0x0F, 0x5C, 0x0F, 0x7B, 0x0F, 0xBB, 0x07, 0xBB, 0x0F, 0xDB, 0x0F, 0x9B, 0x17, 0x9C, 0x1F, 0x7C, 0x37, 0x3D, 0x5E, 0xFE, 0x65, 0x1A, 0x62, 0x93, 0x8A, 0x33, 0xA1, 0xF3, 0xB1, 0xD4, 0xB1, 0xB3, 0x01, 0xB9, 0xB4, 0x83, 0xC1, 0xD4, 0xB9, 0xD4, 0xB1, 0x73, 0xB9, 0x93, 0x01, 0xB1, 0x93, 0x80, 0xB1, 0xB3, + 0x01, 0xB1, 0xD4, 0x87, 0xAA, 0x15, 0x99, 0xB3, 0x89, 0xB3, 0x8A, 0x35, 0x82, 0x76, 0x51, 0x72, 0x41, 0x31, 0x39, 0x31, 0x01, 0x31, 0x51, 0x02, 0x31, 0x50, 0x01, 0x29, 0x50, 0x04, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x0D, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x10, 0x83, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x31, 0x87, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x19, 0xF8, 0x11, 0xF8, 0x09, 0xB7, 0x11, 0xB7, 0x09, 0x97, 0x02, 0x09, 0x76, 0x87, 0x09, 0x96, 0x11, 0xD7, 0x19, 0xD7, 0x11, 0xB6, 0x19, 0x95, 0x19, 0x73, 0x19, 0x53, 0x19, 0x32, 0x02, 0x19, 0x31, 0x89, 0x19, 0x32, 0x11, 0x33, 0x09, 0x33, 0x19, 0x95, 0x22, 0x17, 0x19, 0xF7, 0x19, 0xB6, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x0E, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0xA1, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x18, 0x11, 0x76, 0x11, 0x75, 0x11, 0x34, 0x11, 0x33, 0x19, 0x53, 0x19, 0x52, 0x11, 0x31, 0x11, 0x32, 0x11, 0x52, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0x96, 0x11, 0x75, 0x09, 0x55, 0x09, 0x34, 0x09, 0x33, 0x09, 0x13, 0x09, 0x33, 0x01, 0x34, 0x09, + 0x55, 0x09, 0x96, 0x11, 0xD7, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x74, 0x19, 0x53, 0x01, 0x19, 0x32, 0x8B, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x75, 0x11, 0xD7, 0x11, 0xF8, 0x19, 0xD8, 0x11, 0x95, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x02, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x04, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x11, 0x02, 0x19, 0x32, 0x04, 0x11, 0x13, 0x81, 0x11, 0x33, 0x11, 0x13, 0x05, 0x11, 0x33, 0x05, 0x11, 0x12, 0x80, 0x08, 0xF2, 0x01, 0x11, 0x12, 0x80, 0x09, 0x12, 0x02, 0x11, 0x12, 0x02, 0x09, 0x12, 0x80, 0x11, 0x12, 0x01, 0x09, 0x12, 0x01, 0x11, 0x12, 0x01, 0x11, 0x13, 0x82, 0x09, 0x12, 0x11, 0x12, 0x11, 0x33, 0x01, 0x11, 0x12, 0x85, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x01, 0x11, 0x33, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x8A, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x29, + 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x08, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x03, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x19, 0x30, 0x19, 0x10, 0x02, 0x19, 0x30, 0x03, 0x21, 0x30, 0x85, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x04, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, + 0x30, 0x89, 0x29, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x21, 0x31, 0x85, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x31, 0x04, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x0E, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x8F, 0x29, 0x0F, 0x28, 0xEF, 0x28, 0x8D, 0x51, 0x2F, 0xBB, 0xB8, 0xBB, 0x56, 0xB2, 0xF4, 0xAA, 0xD4, 0x9A, 0xD3, 0xAB, 0xF6, 0xDF, 0x1F, 0xC7, 0x3F, 0xBF, 0x3E, 0xB7, 0x1E, 0xB6, 0xFD, 0xAE, 0xFD, 0x02, 0xAF, 0x1D, 0x01, 0xAE, 0xFD, 0x8B, 0xAF, 0x1E, 0xB7, 0x3E, 0xBF, 0x5F, 0xCF, 0x1F, 0xA4, 0x97, 0x79, 0xF0, 0x99, 0xD2, 0xA1, 0xD2, 0xB1, 0xF3, 0xB2, 0x13, 0xB9, 0xF3, 0xB9, 0xD3, 0x02, 0xC1, 0xD3, 0x01, 0xC1, 0xF3, 0x02, 0xC1, 0xD3, 0x88, 0xB9, 0xD3, 0xB9, 0xB2, 0xA9, 0xF2, 0xA2, 0x93, 0xDD, 0x9C, 0xD6, 0xDF, 0xC6, 0xFE, 0xB6, 0xDD, 0xB6, 0xFE, 0x01, 0xB7, 0x1E, 0x80, 0xAE, 0xFE, 0x01, 0xAE, 0xFD, + 0x80, 0xAF, 0x1D, 0x03, 0xAF, 0x1E, 0x80, 0xAE, 0xFD, 0x01, 0xAF, 0x1D, 0x89, 0xB7, 0x3E, 0xBF, 0x5E, 0xCF, 0x3F, 0xD6, 0x5E, 0x92, 0xF3, 0x91, 0xF2, 0xA9, 0xD2, 0xB1, 0xD3, 0xB9, 0xF3, 0xB9, 0xD3, 0x04, 0xC1, 0xD3, 0x81, 0xC9, 0xD3, 0xC9, 0xF3, 0x03, 0xC1, 0xD3, 0x87, 0xB9, 0xD3, 0xB1, 0xF2, 0x9A, 0x12, 0xDD, 0x3C, 0xD6, 0xDF, 0xC7, 0x1F, 0xB6, 0xFE, 0xB7, 0x1E, 0x02, 0xAF, 0x1E, 0x81, 0xAE, 0xFE, 0xAF, 0x1E, 0x01, 0xAE, 0xFD, 0x81, 0xAE, 0xFE, 0xAE, 0xFD, 0x03, 0xAF, 0x1E, 0x88, 0xB7, 0x3E, 0xBF, 0x1E, 0xCF, 0x1F, 0xDE, 0x3E, 0x92, 0xD3, 0x99, 0xF2, 0xA9, 0xD3, 0xB1, 0xD3, 0xB9, 0xD3, 0x01, 0xB9, 0xF3, 0x01, 0xC1, 0xF3, 0x05, 0xC1, 0xD3, 0x87, 0xB9, 0xB3, 0xB9, 0xD3, 0xA9, 0xB2, 0x91, 0xD0, 0xCD, 0xBC, 0xCE, 0xDE, 0xBE, 0xFE, 0xBF, 0x1E, 0x01, 0xB6, 0xFE, 0x02, 0xB7, 0x1E, 0x88, 0xBE, 0xFE, 0xC6, 0xFF, 0xD6, 0xDF, 0xD5, 0xFD, 0x93, 0x33, 0x81, 0xD0, 0x99, 0xD1, 0xA1, 0xB2, 0xA9, 0xB2, 0x01, 0xB1, 0xB2, 0x80, 0xB9, 0xB2, 0x02, 0xB9, 0xB3, 0x05, 0xC1, 0xB3, 0x01, 0xC1, 0x93, 0x81, 0xC1, 0xB3, 0xC1, 0x93, 0x03, 0xC1, 0xB3, 0x01, 0xC1, 0x93, 0x02, 0xB9, 0xB3, 0x8A, 0xB9, 0xB2, 0xB1, 0xB2, 0xA9, 0xD2, 0xA1, 0xF2, 0x9A, 0x11, 0x89, 0xF0, 0xC4, 0x99, 0xDE, 0x5E, 0xD6, 0xFF, 0xC6, 0xFF, 0xBF, 0x1E, 0x01, 0xB7, 0x1E, 0x81, 0xB6, 0xFD, 0xB7, 0x1E, 0x01, 0xAE, 0xFD, 0x01, 0xAF, 0x1D, 0x80, 0xAE, 0xFD, 0x01, 0xAF, 0x1D, 0x01, 0xA6, 0xFD, 0x03, 0xAF, 0x1D, 0x01, 0xAF, 0x3E, 0x02, 0xAF, 0x1E, 0x01, 0xB7, 0x3E, 0x8B, 0xBF, 0x3E, + 0xC7, 0x1F, 0xD6, 0xDF, 0xD6, 0x1E, 0xA3, 0xB5, 0x81, 0xF0, 0x91, 0xD1, 0x99, 0xB1, 0xA9, 0xB2, 0xB1, 0xD3, 0xB1, 0xB2, 0xB1, 0xB3, 0x02, 0xB9, 0xB3, 0x02, 0xC1, 0xB3, 0x01, 0xC1, 0xD3, 0x01, 0xC1, 0xB3, 0x80, 0xC1, 0xD3, 0x03, 0xC1, 0xB3, 0x80, 0xC1, 0xD3, 0x03, 0xB9, 0xB3, 0x01, 0xB9, 0x92, 0x88, 0xB1, 0x92, 0xA9, 0xB2, 0xA1, 0xD2, 0x99, 0xF1, 0x8A, 0x10, 0xCC, 0xFA, 0xE6, 0x9F, 0xD6, 0xDF, 0xCE, 0xFE, 0x03, 0xC6, 0xFE, 0x87, 0xCE, 0xDF, 0xD6, 0x3E, 0x8A, 0xF3, 0x89, 0xF1, 0x99, 0xD2, 0xA9, 0xD2, 0xB1, 0xF3, 0xB9, 0xF3, 0x01, 0xC1, 0xF3, 0x03, 0xC1, 0xD3, 0x89, 0xC1, 0xD4, 0xC1, 0xF4, 0xC1, 0xD3, 0xB9, 0xF3, 0xB1, 0xD3, 0xA9, 0xB1, 0x91, 0xD0, 0xAC, 0x17, 0xDE, 0xDF, 0xCE, 0xFF, 0x01, 0xBF, 0x1E, 0x01, 0xB6, 0xFE, 0x86, 0xB7, 0x1E, 0xBF, 0x1E, 0xC6, 0xFF, 0xD6, 0x9F, 0x83, 0x33, 0x81, 0xF1, 0x91, 0xD1, 0x01, 0xA1, 0xD2, 0x01, 0xA9, 0xD2, 0x81, 0xA9, 0xB2, 0xA9, 0xD2, 0x03, 0xB1, 0xD2, 0x01, 0xB1, 0xB2, 0x01, 0xA9, 0xB2, 0x86, 0xA1, 0xD1, 0x8A, 0x11, 0xA4, 0x77, 0xCE, 0xDF, 0xBE, 0xFE, 0xB7, 0x1E, 0xAF, 0x1E, 0x07, 0xAF, 0x1D, 0x8E, 0xB7, 0x3E, 0xB7, 0x3D, 0xB7, 0x3E, 0xBF, 0x5F, 0xC7, 0x3F, 0xD7, 0x1F, 0xD6, 0x3E, 0xA3, 0x95, 0x8A, 0x11, 0x91, 0xD1, 0x99, 0xB1, 0xA1, 0xB2, 0xA9, 0xD3, 0xB1, 0xD3, 0xB1, 0xB3, 0x02, 0xB9, 0xB3, 0x09, 0xC1, 0xB3, 0x01, 0xC1, 0x93, 0x80, 0xC1, 0xB3, 0x01, 0xC1, 0x93, 0x82, 0xC1, 0xB3, 0xC1, 0x93, 0xC1, 0x92, 0x01, 0xB9, 0x92, 0x8A, 0xB9, 0xB2, 0xB1, 0xB2, 0xB1, 0xD2, 0xA1, 0xB1, 0xE3, + 0xF9, 0xFD, 0x7E, 0xFD, 0x9E, 0xFD, 0x3D, 0xCB, 0x36, 0xC2, 0xD4, 0xCA, 0xD5, 0x01, 0xCA, 0xB5, 0x02, 0xD2, 0xB5, 0x01, 0xD2, 0xB4, 0x83, 0xD2, 0xB5, 0xD2, 0xB4, 0xDA, 0xB4, 0xDA, 0xB5, 0x04, 0xDA, 0x94, 0x80, 0xD2, 0x94, 0x01, 0xDA, 0x95, 0x02, 0xDA, 0xB5, 0x89, 0xD2, 0xB5, 0xD2, 0xB6, 0xD2, 0xD7, 0xCA, 0xF8, 0xC3, 0x1A, 0xB3, 0x3C, 0x30, 0xB5, 0x29, 0x19, 0x21, 0x3A, 0x21, 0x5B, 0x01, 0x29, 0x7B, 0x87, 0x29, 0x5A, 0x39, 0x39, 0x59, 0x16, 0x9A, 0x5A, 0xB2, 0x38, 0xB1, 0xD5, 0xB9, 0xF5, 0xC2, 0x16, 0x01, 0xC9, 0xF5, 0x9E, 0xC1, 0xD5, 0xB9, 0xD5, 0xA9, 0xB4, 0x91, 0xF5, 0x7A, 0x97, 0x73, 0xFC, 0x65, 0x1F, 0x45, 0x5F, 0x2D, 0x3F, 0x1D, 0x1E, 0x0D, 0x1E, 0x0D, 0x3D, 0x05, 0x3D, 0x05, 0x7B, 0x06, 0x5B, 0x0F, 0x3B, 0x0F, 0x7B, 0x0F, 0x9B, 0x0F, 0xBB, 0x07, 0xBB, 0x0F, 0x9B, 0x17, 0x7B, 0x27, 0x7C, 0x3F, 0x3D, 0x5E, 0xFE, 0x65, 0x3A, 0x62, 0xB3, 0x92, 0x53, 0xA1, 0xF3, 0xB1, 0xB3, 0xB1, 0x93, 0x01, 0xB9, 0xB3, 0x83, 0xB9, 0x93, 0xB1, 0xB3, 0xA1, 0x11, 0xC1, 0xF4, 0x01, 0xB9, 0xD4, 0x89, 0xB1, 0xB3, 0xB1, 0xD4, 0xB2, 0x35, 0x99, 0xD4, 0x50, 0x2D, 0x48, 0x2D, 0x38, 0x4E, 0x41, 0x10, 0x41, 0x31, 0x31, 0x10, 0x02, 0x31, 0x51, 0x80, 0x31, 0x50, 0x01, 0x29, 0x30, 0x01, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x12, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, + 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x89, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x53, 0x19, 0xB6, 0x19, 0xF7, 0x11, 0xB7, 0x09, 0x96, 0x01, 0x09, 0x76, 0x02, 0x09, 0x55, 0x86, 0x09, 0x76, 0x09, 0x96, 0x11, 0xD7, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x74, 0x21, 0x73, 0x01, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x8C, 0x11, 0x53, 0x11, 0x33, 0x11, 0x95, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x50, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x9C, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x19, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF8, 0x11, 0x96, 0x09, 0x55, 0x11, 0x54, 0x11, 0x33, 0x19, 0x53, 0x19, 0x52, 0x11, 0x31, 0x11, 0x32, 0x11, 0x52, 0x11, 0x74, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xB6, 0x11, 0x96, 0x09, 0x75, 0x09, 0x55, 0x09, 0x34, 0x01, 0x13, 0x09, 0x34, 0x09, 0x54, 0x09, 0x96, 0x01, 0x11, 0xD7, 0x85, 0x11, 0xD6, 0x11, 0x95, 0x11, 0x53, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x01, 0x19, 0x32, 0x88, 0x11, 0x33, 0x11, 0x95, 0x11, 0xD7, 0x11, 0xD8, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x53, 0x19, 0x52, 0x19, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x86, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, + 0x81, 0x29, 0x10, 0x21, 0x10, 0x04, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x8A, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x19, 0x32, 0x81, 0x19, 0x33, 0x11, 0x33, 0x01, 0x19, 0x75, 0x02, 0x11, 0x75, 0x01, 0x11, 0x96, 0x81, 0x11, 0x76, 0x11, 0x96, 0x03, 0x11, 0x95, 0x01, 0x09, 0x75, 0x0A, 0x11, 0x75, 0x83, 0x11, 0x96, 0x11, 0x75, 0x11, 0x96, 0x11, 0x75, 0x02, 0x11, 0x95, 0x80, 0x11, 0x75, 0x03, 0x11, 0x96, 0x01, 0x11, 0x95, 0x86, 0x11, 0x96, 0x11, 0xB6, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0xB6, 0x19, 0xB6, 0x19, 0xD6, 0x01, 0x19, 0xB6, 0x80, 0x11, 0xB6, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, + 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x03, 0x19, 0x31, 0x01, 0x21, 0x31, 0x05, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, + 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x05, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x0B, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x8F, 0x29, 0x0F, 0x28, 0xEF, 0x28, 0x8D, 0x49, 0x2F, 0xB3, 0x98, 0xB3, 0x35, 0xAA, 0xD4, 0xAA, 0xB3, 0x9A, 0xB3, 0xA3, 0xF6, 0xDF, 0x1F, 0xC7, 0x1E, 0xBF, 0x1E, 0xB7, 0x1E, 0xB6, 0xFD, 0xAE, 0xFD, 0x02, 0xAF, 0x1D, 0x01, 0xAE, 0xFD, 0x8B, 0xAF, 0x1D, 0xB7, 0x3E, 0xBF, 0x3F, 0xCF, 0x1F, 0x9C, 0x77, 0x81, 0xF0, 0x99, 0xD2, 0xA1, 0xF3, 0xB1, 0xF3, 0xBA, 0x13, 0xB9, 0xF3, 0xB9, 0xD3, 0x01, 0xC1, 0xD3, 0x80, 0xC1, 0xF3, 0x04, 0xC1, 0xD3, 0x88, 0xB9, 0xD3, 0xB9, 0xD2, 0xA9, 0xF2, 0xA2, 0xF4, 0xDD, 0xFE, 0xD6, 0xDF, 0xBE, 0xFE, 0xB6, 0xDD, 0xB6, 0xFD, 0x01, 0xAF, 0x1E, 0x08, 0xAE, 0xFD, 0x89, 0xAF, 0x1D, 0xAE, 0xFD, 0xAF, 0x1E, 0xB7, 0x3E, 0xC7, 0x3F, 0xD6, 0x9F, 0x8B, 0x13, 0x92, 0x12, 0xA9, 0xF2, 0xB1, 0xF3, 0x01, 0xB9, 0xD3, 0x03, 0xC1, 0xD3, 0x82, 0xC9, 0xD3, 0xC1, 0xD3, 0xC9, 0xD3, 0x03, 0xC1, 0xD3, 0x89, 0xB9, 0xD3, 0xA9, 0xF2, 0x9A, 0x72, 0xDD, 0xBD, 0xD6, 0xBF, 0xBE, 0xDE, 0xB6, 0xFE, 0xAE, 0xFE, 0xAF, 0x1E, 0xAE, 0xFE, 0x02, 0xAF, 0x1E, 0x02, 0xA6, 0xFD, 0x01, 0xAE, 0xFD, 0x89, 0xAF, 0x1E, 0xAE, 0xFD, 0xAF, 0x1E, 0xB7, 0x1E, 0xB7, 0x3E, 0xC7, 0x1F, 0xDE, 0x7F, 0x93, 0x13, 0x9A, 0x12, 0xA9, 0xD3, 0x01, 0xB1, 0xD3, 0x81, 0xB9, + 0xF3, 0xB9, 0xD3, 0x03, 0xC1, 0xF3, 0x03, 0xC1, 0xD3, 0x86, 0xB9, 0xD3, 0xB9, 0xF3, 0xA9, 0xB1, 0x91, 0xF1, 0xBD, 0x1A, 0xCE, 0xBE, 0xC6, 0xFE, 0x01, 0xBE, 0xFE, 0x80, 0xBF, 0x1E, 0x01, 0xB6, 0xFE, 0x87, 0xBE, 0xFE, 0xC6, 0xDE, 0xDE, 0xDF, 0xB4, 0xF9, 0x8A, 0x91, 0x89, 0xF0, 0x99, 0xD1, 0xA9, 0xB2, 0x01, 0xB1, 0xB2, 0x02, 0xB9, 0xB3, 0x81, 0xC1, 0xB3, 0xC1, 0xD3, 0x03, 0xC1, 0xB3, 0x80, 0xC9, 0xB3, 0x01, 0xC1, 0xB3, 0x07, 0xC9, 0xB3, 0x81, 0xC1, 0xB3, 0xC9, 0xB3, 0x03, 0xC1, 0xB3, 0x01, 0xB9, 0xB3, 0x88, 0xB1, 0xB2, 0xB1, 0xD2, 0xA9, 0xF2, 0x92, 0x11, 0x9B, 0x13, 0xDD, 0xFD, 0xDE, 0xFF, 0xC6, 0xFE, 0xBE, 0xFE, 0x01, 0xB7, 0x1E, 0x80, 0xB7, 0x1D, 0x02, 0xAE, 0xFD, 0x83, 0xAF, 0x1D, 0xAE, 0xFD, 0xA6, 0xFD, 0xAF, 0x1D, 0x01, 0xA6, 0xFD, 0x06, 0xAF, 0x1D, 0x01, 0xAF, 0x1E, 0x8A, 0xB7, 0x3E, 0xBF, 0x1E, 0xC7, 0x1F, 0xD6, 0xFF, 0xC5, 0x7B, 0x82, 0xB2, 0x89, 0xF0, 0x99, 0xD1, 0xA1, 0xD2, 0xA9, 0xD2, 0xB1, 0xB3, 0x02, 0xB9, 0xB3, 0x07, 0xC1, 0xD3, 0x01, 0xC9, 0xD3, 0x01, 0xC1, 0xD3, 0x80, 0xC9, 0xD3, 0x07, 0xC1, 0xB3, 0x80, 0xB9, 0xB3, 0x01, 0xB9, 0x92, 0x01, 0xB1, 0xB2, 0x86, 0xA1, 0xD2, 0x92, 0x11, 0xA3, 0x75, 0xEE, 0x9F, 0xDE, 0xBF, 0xCE, 0xDE, 0xCE, 0xFE, 0x01, 0xC6, 0xFE, 0x88, 0xCE, 0xDF, 0xD6, 0x1E, 0x8A, 0xF3, 0x89, 0xF1, 0x99, 0xD2, 0xA9, 0xD2, 0xB1, 0xF3, 0xB9, 0xF3, 0xC1, 0xF4, 0x01, 0xC1, 0xF3, 0x02, 0xC1, 0xD3, 0x82, 0xC1, 0xD4, 0xC1, 0xF4, 0xC1, 0xF3, 0x01, 0xB9, 0xF3, 0x91, 0xA9, 0xB1, 0x91, 0xD1, 0xAC, 0x17, + 0xE6, 0xDF, 0xCE, 0xFF, 0xBF, 0x1E, 0xB6, 0xFE, 0xB6, 0xFD, 0xB6, 0xFE, 0xB7, 0x1E, 0xBF, 0x1E, 0xC7, 0x1F, 0xD6, 0x9F, 0x8B, 0x33, 0x8A, 0x11, 0x99, 0xF2, 0xA1, 0xF2, 0xA9, 0xF3, 0x03, 0xB1, 0xF3, 0x84, 0xB1, 0xD3, 0xB9, 0xF3, 0xB9, 0xD3, 0xB9, 0xF3, 0xB9, 0xD3, 0x01, 0xB1, 0xD3, 0x87, 0xA9, 0xD2, 0xA1, 0xD2, 0x92, 0x31, 0xAC, 0x78, 0xCE, 0xDF, 0xBE, 0xFE, 0xB7, 0x1E, 0xAF, 0x1E, 0x02, 0xAF, 0x1D, 0x01, 0xAE, 0xFD, 0x03, 0xAF, 0x1D, 0x89, 0xB7, 0x3E, 0xBF, 0x3E, 0xC7, 0x1F, 0xD6, 0xFF, 0xCD, 0xDD, 0x8A, 0xF3, 0x89, 0xF1, 0x99, 0xD2, 0xA1, 0xD2, 0xA9, 0xD3, 0x01, 0xB1, 0xD3, 0x02, 0xB9, 0xD3, 0x80, 0xC1, 0xD3, 0x04, 0xC1, 0xB3, 0x0A, 0xC9, 0xB3, 0x02, 0xC1, 0xB3, 0x82, 0xC1, 0x92, 0xC1, 0x93, 0xC1, 0xB3, 0x01, 0xB9, 0xB2, 0x87, 0xB9, 0xD2, 0xA9, 0xB2, 0xC2, 0xD5, 0xFD, 0x5E, 0xFD, 0x7E, 0xFD, 0x3D, 0xCB, 0x76, 0xC2, 0xB4, 0x01, 0xCA, 0xB4, 0x82, 0xCA, 0xB5, 0xCA, 0xB4, 0xD2, 0xB5, 0x01, 0xD2, 0xB4, 0x03, 0xD2, 0x94, 0x02, 0xDA, 0x94, 0x83, 0xD2, 0x94, 0xDA, 0x94, 0xDA, 0x95, 0xDA, 0x94, 0x02, 0xDA, 0x95, 0x80, 0xD2, 0x95, 0x01, 0xD2, 0xB6, 0x90, 0xCA, 0xB7, 0xCA, 0xF8, 0xC3, 0x19, 0xAB, 0x3C, 0x30, 0xB5, 0x29, 0x39, 0x21, 0x5A, 0x21, 0x5B, 0x21, 0x7B, 0x29, 0x9C, 0x29, 0x7B, 0x31, 0x3A, 0x40, 0xF7, 0x8A, 0x3A, 0xAA, 0x59, 0xB9, 0xF6, 0xB1, 0xD5, 0x01, 0xC1, 0xD5, 0x9E, 0xC9, 0xF5, 0xC1, 0xF5, 0xB9, 0xD5, 0xA9, 0xB4, 0x91, 0xD4, 0x7A, 0x76, 0x6B, 0xBB, 0x65, 0x3F, 0x45, 0x7F, 0x2D, 0x3F, 0x1D, 0x3E, 0x15, 0x3E, 0x0D, + 0x3D, 0x05, 0x3D, 0x05, 0x7B, 0x06, 0x5B, 0x0F, 0x3B, 0x0F, 0x7B, 0x0F, 0x9B, 0x0F, 0xBB, 0x07, 0xBB, 0x0F, 0x9B, 0x17, 0x7C, 0x27, 0x7D, 0x3F, 0x3D, 0x66, 0xFE, 0x65, 0x19, 0x6A, 0xB3, 0x92, 0x33, 0xA1, 0xF3, 0xB1, 0xB3, 0x01, 0xB9, 0xB4, 0x84, 0xB9, 0xD4, 0xB9, 0xB3, 0xB1, 0xB3, 0xA1, 0x11, 0xB9, 0xD4, 0x02, 0xB1, 0xB3, 0x86, 0xB1, 0xD4, 0xB2, 0x56, 0x81, 0x92, 0x48, 0x6E, 0x48, 0xAF, 0x40, 0xF0, 0x41, 0x10, 0x01, 0x39, 0x51, 0x87, 0x31, 0x51, 0x31, 0x50, 0x29, 0x50, 0x31, 0x50, 0x29, 0x50, 0x31, 0x50, 0x29, 0x50, 0x31, 0x50, 0x07, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x0B, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x30, 0x88, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x88, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x19, 0xB5, 0x19, 0xF7, 0x11, 0xB7, 0x09, 0x76, 0x09, 0x56, 0x09, 0x35, 0x02, 0x09, 0x55, 0x88, 0x09, 0x75, 0x09, 0x95, 0x11, 0xD6, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x74, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x02, 0x19, 0x32, 0x8A, 0x11, 0x53, 0x11, 0x33, 0x19, 0xB6, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xB6, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x8D, 0x21, 0x2F, 0x21, 0x30, + 0x21, 0x31, 0x19, 0x31, 0x19, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x21, 0xF8, 0x19, 0xD7, 0x09, 0x55, 0x11, 0x54, 0x11, 0x33, 0x19, 0x53, 0x19, 0x52, 0x01, 0x11, 0x32, 0x82, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x82, 0x11, 0xB6, 0x11, 0x75, 0x09, 0x75, 0x02, 0x09, 0x54, 0x87, 0x09, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x19, 0x52, 0x02, 0x19, 0x31, 0x89, 0x19, 0x32, 0x11, 0x53, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xF8, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x06, 0x29, 0x10, 0x80, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x8F, 0x21, 0x30, 0x21, 0x51, 0x21, 0x31, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x19, 0x33, 0x19, 0x53, 0x19, 0x75, 0x21, 0xB6, 0x21, 0xD7, 0x21, 0xF8, 0x22, 0x19, 0x22, 0x18, 0x21, 0xF8, 0x22, 0x18, 0x01, 0x22, 0x39, 0x01, 0x22, 0x38, 0x84, 0x22, 0x59, 0x1A, 0x38, 0x22, 0x59, 0x22, 0x39, 0x1A, 0x19, 0x02, 0x22, 0x39, 0x80, 0x22, 0x19, 0x08, 0x22, 0x39, 0x80, 0x22, 0x59, 0x08, 0x22, 0x39, 0x80, 0x22, 0x38, 0x01, 0x22, + 0x39, 0x81, 0x1A, 0x18, 0x22, 0x39, 0x01, 0x1A, 0x18, 0x80, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x01, 0x19, 0xF8, 0x06, 0x21, 0x10, 0x85, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x04, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x82, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x02, 0x19, 0x52, 0x85, 0x11, 0x32, 0x19, 0x32, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x11, 0x31, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x0B, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x86, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x04, 0x29, + 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x84, 0x29, 0x30, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x02, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x10, 0x03, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x31, 0x08, 0x19, 0x31, 0x82, 0x21, 0x51, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x08, 0x29, 0x30, 0x08, 0x29, 0x2F, 0x8E, 0x21, 0x2F, 0x29, 0x0F, 0x28, 0xEF, 0x28, 0xAD, 0x51, 0x2F, 0xB3, 0x77, 0xB3, 0x15, 0xAA, 0xD4, 0xAA, 0xB4, 0x9A, 0xB3, 0xA3, 0xB5, 0xDF, 0x1F, 0xC6, 0xFE, 0xBE, 0xFE, 0xB7, 0x1E, 0x01, 0xAE, 0xDD, 0x80, 0xAE, 0xFD, 0x01, 0xAF, 0x1D, 0x01, 0xA6, 0xFD, 0x8F, 0xAF, 0x1D, 0xB7, 0x3E, 0xBF, 0x3F, 0xCF, 0x3F, 0x9C, 0x97, 0x82, 0x10, 0x99, 0xF2, 0xA1, 0xF2, 0xB1, 0xF3, 0xBA, 0x13, 0xB9, 0xF3, 0xB9, 0xD3, 0xC1, 0xD3, 0xC1, 0xF3, 0xC1, 0xD3, 0xC9, 0xF3, 0x04, 0xC1, 0xD3, 0x86, + 0xB9, 0xD2, 0xA9, 0xF2, 0xA2, 0xF4, 0xD5, 0x9C, 0xD6, 0xDF, 0xBE, 0xFE, 0xB6, 0xDD, 0x02, 0xAE, 0xFD, 0x80, 0xA6, 0xFD, 0x01, 0xA6, 0xDD, 0x01, 0xA6, 0xFD, 0x02, 0xAE, 0xFD, 0x80, 0xA6, 0xFD, 0x02, 0xAF, 0x1D, 0x88, 0xB7, 0x3E, 0xC7, 0x1F, 0xD6, 0x9F, 0x8B, 0x13, 0x8A, 0x11, 0xA1, 0xF2, 0xA9, 0xF3, 0xB9, 0xF3, 0xB9, 0xD3, 0x02, 0xC1, 0xD3, 0x04, 0xC9, 0xD3, 0x02, 0xC1, 0xD3, 0x88, 0xB9, 0xD2, 0xA9, 0xF2, 0x9A, 0xB3, 0xDD, 0xDD, 0xD6, 0xBF, 0xBE, 0xFE, 0xB6, 0xFE, 0xAF, 0x1E, 0xAE, 0xFD, 0x08, 0xA6, 0xFD, 0x80, 0xAE, 0xFD, 0x02, 0xAF, 0x1E, 0x87, 0xB7, 0x1E, 0xC7, 0x1F, 0xD6, 0x7E, 0x93, 0x34, 0x91, 0xF2, 0xA9, 0xD3, 0xB1, 0xD3, 0xB1, 0xF3, 0x01, 0xB9, 0xF3, 0x02, 0xC1, 0xF3, 0x04, 0xC1, 0xD3, 0x88, 0xB9, 0xD3, 0xB9, 0xF3, 0xA9, 0xB2, 0x91, 0xF1, 0xBC, 0xD9, 0xCE, 0x9E, 0xC6, 0xDE, 0xBE, 0xFE, 0xB6, 0xDE, 0x01, 0xBE, 0xFE, 0x87, 0xBE, 0xDE, 0xC6, 0xDE, 0xD6, 0x7E, 0xB4, 0x78, 0x82, 0x10, 0x91, 0xD1, 0xA1, 0xB1, 0xA9, 0xB2, 0x01, 0xB1, 0xD3, 0x02, 0xB9, 0xD3, 0x02, 0xC1, 0xD3, 0x04, 0xC9, 0xD3, 0x80, 0xC9, 0xB3, 0x02, 0xC9, 0xD3, 0x02, 0xC9, 0xD4, 0x05, 0xC9, 0xB3, 0x01, 0xC1, 0xB3, 0x80, 0xC1, 0xD3, 0x01, 0xC1, 0xB3, 0x8B, 0xB9, 0xB3, 0xB9, 0xD3, 0xB1, 0xB2, 0xA9, 0xF2, 0xA1, 0xF1, 0x8A, 0x31, 0xC4, 0xFA, 0xDE, 0x9F, 0xC6, 0xDE, 0xBE, 0xFE, 0xB7, 0x1E, 0xB6, 0xFD, 0x03, 0xAE, 0xFD, 0x05, 0xA6, 0xFD, 0x04, 0xAF, 0x1D, 0x81, 0xAE, 0xFD, 0xAF, 0x1D, 0x01, 0xB7, 0x3E, 0x8A, 0xBF, 0x1F, 0xD6, 0xDF, 0xBD, 0x3A, 0x71, 0xCF, + 0x89, 0xF1, 0x99, 0xD1, 0xA9, 0xD2, 0xB1, 0xD3, 0xB1, 0xB3, 0xB9, 0xD3, 0xB9, 0xB3, 0x01, 0xC1, 0xD3, 0x01, 0xC1, 0xD4, 0x01, 0xC9, 0xD3, 0x02, 0xC9, 0xD4, 0x05, 0xC9, 0xD3, 0x80, 0xC9, 0xD4, 0x03, 0xC9, 0xD3, 0x02, 0xC1, 0xD3, 0x02, 0xC1, 0xB3, 0x88, 0xB9, 0x93, 0xB9, 0xB2, 0xB1, 0xB2, 0xA9, 0xD2, 0x99, 0xF1, 0x8A, 0x51, 0xE5, 0xFE, 0xDE, 0x9F, 0xD6, 0xDE, 0x01, 0xCE, 0xDE, 0x87, 0xD6, 0xBF, 0xD6, 0x1E, 0x8A, 0xD3, 0x89, 0xF1, 0x99, 0xD1, 0xA9, 0xD2, 0xB1, 0xF3, 0xB9, 0xF3, 0x01, 0xC1, 0xF4, 0x04, 0xC1, 0xD3, 0x81, 0xC1, 0xF4, 0xC1, 0xF3, 0x01, 0xB9, 0xF3, 0x85, 0xA9, 0xB1, 0x99, 0xD1, 0xAC, 0x17, 0xDE, 0x9F, 0xC6, 0xBE, 0xBE, 0xFE, 0x02, 0xB6, 0xFD, 0x8B, 0xB6, 0xFE, 0xB7, 0x1E, 0xC6, 0xFF, 0xD6, 0x9F, 0x82, 0xF2, 0x8A, 0x11, 0xA2, 0x12, 0xA9, 0xF3, 0xAA, 0x13, 0xB1, 0xF3, 0xBA, 0x14, 0xBA, 0x13, 0x04, 0xB9, 0xF3, 0x01, 0xB9, 0xD3, 0x87, 0xB1, 0xB3, 0xB1, 0xD3, 0xA9, 0xD2, 0x92, 0x31, 0xAC, 0x57, 0xCE, 0xDF, 0xBE, 0xDE, 0xB7, 0x1E, 0x05, 0xAE, 0xFD, 0x02, 0xAF, 0x1D, 0x88, 0xAF, 0x1E, 0xB7, 0x3E, 0xC7, 0x1E, 0xD6, 0xDF, 0xCD, 0xDD, 0x7A, 0x31, 0x89, 0xD1, 0x99, 0xD2, 0xA9, 0xB2, 0x02, 0xB1, 0xD3, 0x81, 0xB9, 0xD3, 0xB9, 0xD4, 0x03, 0xC1, 0xD3, 0x80, 0xC9, 0xB3, 0x01, 0xC9, 0xD3, 0x04, 0xC9, 0xB3, 0x03, 0xC9, 0xD3, 0x02, 0xC9, 0xB3, 0x80, 0xC9, 0xD3, 0x01, 0xC9, 0xB3, 0x04, 0xC1, 0xB3, 0x84, 0xB9, 0xB3, 0xB9, 0xD3, 0xB1, 0xD2, 0xB2, 0x33, 0xFD, 0x3E, 0x01, 0xFD, 0x7E, 0x82, 0xD3, 0xB7, 0xBA, 0x94, 0xC2, 0xB4, 0x01, + 0xCA, 0x94, 0x81, 0xCA, 0xB4, 0xCA, 0x94, 0x06, 0xD2, 0x94, 0x80, 0xDA, 0x94, 0x04, 0xDA, 0x74, 0x98, 0xD2, 0x74, 0xDA, 0x95, 0xD2, 0x95, 0xD2, 0x75, 0xD2, 0x96, 0xD2, 0xB7, 0xCA, 0xD8, 0xC2, 0xF9, 0xB3, 0x5C, 0x30, 0xB5, 0x29, 0x39, 0x21, 0x5A, 0x19, 0x5B, 0x21, 0x7C, 0x21, 0x9C, 0x21, 0x7B, 0x29, 0x5A, 0x39, 0x19, 0x61, 0x37, 0xB2, 0x7A, 0xBA, 0x17, 0xB1, 0xB5, 0xB9, 0xD5, 0xC1, 0xB5, 0xC9, 0xF5, 0x01, 0xC1, 0xF5, 0xAC, 0xB1, 0xD4, 0x99, 0xF4, 0x7A, 0x36, 0x6B, 0x59, 0x65, 0x5F, 0x45, 0x9F, 0x2D, 0x7F, 0x1D, 0x5E, 0x15, 0x5E, 0x0D, 0x3D, 0x05, 0x5D, 0x05, 0x9C, 0x06, 0x5B, 0x0F, 0x1B, 0x0F, 0x5B, 0x0F, 0x9A, 0x07, 0xBB, 0x0F, 0xBB, 0x0F, 0x9B, 0x17, 0x5B, 0x27, 0x7D, 0x47, 0x3E, 0x66, 0xDE, 0x64, 0xD9, 0x6A, 0xB3, 0x92, 0x33, 0xA9, 0xF3, 0xB1, 0xD4, 0xB1, 0xB4, 0xB9, 0xB4, 0xB1, 0x93, 0xB9, 0xB4, 0xB1, 0xD4, 0xA1, 0x52, 0xB9, 0xF4, 0xB1, 0xD4, 0xB1, 0xB3, 0xB1, 0xD4, 0xA9, 0xD4, 0xAA, 0x55, 0x71, 0x51, 0x50, 0xCF, 0x49, 0x10, 0x41, 0x30, 0x41, 0x31, 0x01, 0x39, 0x51, 0x01, 0x31, 0x51, 0x84, 0x31, 0x71, 0x31, 0x50, 0x31, 0x51, 0x29, 0x50, 0x31, 0x50, 0x01, 0x31, 0x31, 0x01, 0x31, 0x30, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x07, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x83, + 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x53, 0x21, 0xF7, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0x96, 0x02, 0x09, 0x55, 0x80, 0x09, 0x34, 0x01, 0x09, 0x55, 0x84, 0x09, 0x95, 0x11, 0xD6, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x74, 0x01, 0x19, 0x32, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x82, 0x19, 0x32, 0x11, 0x53, 0x11, 0x33, 0x01, 0x21, 0xF7, 0x84, 0x22, 0x17, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x30, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0x94, 0x11, 0x96, 0x01, 0x19, 0xF7, 0x80, 0x11, 0x75, 0x01, 0x11, 0x54, 0x80, 0x11, 0x53, 0x02, 0x11, 0x32, 0x87, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x19, 0xF7, 0x1A, 0x17, 0x19, 0xF7, 0x11, 0xB6, 0x11, 0x96, 0x01, 0x09, 0x75, 0x88, 0x11, 0x96, 0x11, 0xD6, 0x19, 0xF7, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x52, 0x19, 0x52, 0x01, 0x19, 0x31, 0x8A, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x96, 0x11, 0xF7, 0x11, 0xF8, 0x11, 0xD7, 0x19, 0xB5, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x29, 0x10, 0x85, 0x29, 0x30, 0x29, 0x10, + 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x21, 0x51, 0x87, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0x74, 0x19, 0xB6, 0x21, 0xD6, 0x21, 0xF7, 0x19, 0xB7, 0x02, 0x21, 0xF8, 0x01, 0x22, 0x18, 0x01, 0x22, 0x38, 0x80, 0x22, 0x18, 0x02, 0x22, 0x38, 0x01, 0x22, 0x39, 0x80, 0x22, 0x38, 0x01, 0x1A, 0x18, 0x80, 0x1A, 0x19, 0x01, 0x1A, 0x18, 0x81, 0x22, 0x19, 0x22, 0x18, 0x03, 0x1A, 0x18, 0x07, 0x22, 0x18, 0x80, 0x19, 0xF8, 0x01, 0x22, 0x18, 0x81, 0x19, 0xF8, 0x19, 0xF7, 0x02, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x80, 0x19, 0xF8, 0x01, 0x1A, 0x18, 0x02, 0x19, 0xF8, 0x04, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x05, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x09, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x04, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x07, 0x21, + 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x09, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x50, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0x73, 0x01, 0x19, 0x74, 0x01, 0x19, 0x95, 0x02, 0x19, 0xB5, 0x84, 0x19, 0x74, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x09, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x03, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, + 0x21, 0x31, 0x04, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x19, 0x52, 0x02, 0x19, 0x32, 0x02, 0x19, 0x31, 0x80, 0x21, 0x31, 0x05, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x08, 0x29, 0x30, 0x09, 0x29, 0x2F, 0x8D, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0xAD, 0x51, 0x2F, 0xB3, 0x78, 0xB3, 0x15, 0xAA, 0xD4, 0xAA, 0xB4, 0x9A, 0x93, 0xA3, 0x95, 0xDE, 0xFF, 0xBE, 0xDE, 0xBE, 0xFE, 0xB6, 0xFD, 0x01, 0xAE, 0xDD, 0x01, 0xAF, 0x1D, 0x02, 0xA6, 0xFD, 0x8D, 0xAE, 0xFD, 0xB7, 0x3E, 0xBF, 0x3E, 0xCF, 0x1F, 0x94, 0x56, 0x82, 0x10, 0x99, 0xF2, 0xA1, 0xF2, 0xB2, 0x13, 0xBA, 0x13, 0xB9, 0xF3, 0xC1, 0xD3, 0xC1, 0xF3, 0xC9, 0xF4, 0x04, 0xC1, 0xD3, 0x89, 0xC1, 0xF3, 0xC1, 0xD3, 0xB9, 0xB2, 0xA9, 0xF2, 0x9A, 0xD3, 0xCD, 0x9C, 0xCE, 0xDF, 0xBE, 0xFE, 0xB6, 0xFE, 0xAE, 0xDD, 0x01, 0xAE, 0xFD, 0x80, 0xA6, 0xDD, 0x03, 0xA6, 0xFD, 0x82, 0xAE, 0xFD, 0xA6, 0xFD, 0xA6, 0xDD, 0x01, 0xA6, 0xFD, 0x8A, 0xAE, 0xFD, 0xAF, 0x1D, 0xB7, 0x3E, 0xBF, 0x1F, 0xD6, 0x9F, 0x83, 0x13, 0x8A, 0x31, 0xA1, 0xF2, 0xA9, 0xF3, 0xB9, 0xF3, 0xB9, 0xD3, 0x01, 0xC1, 0xD3, 0x05, 0xC9, 0xD3, 0x01, 0xC1, 0xD3, 0x88, 0xC1, 0xF3, 0xB9, 0xD2, 0xA9, 0xF2, 0xA2, 0xF4, 0xE6, 0x1E, 0xCE, 0xBF, 0xBE, 0xDE, 0xB6, 0xDE, 0xAE, 0xFE, 0x07, 0xA6, 0xFD, 0x01, 0xA6, 0xDD, 0x81, 0xA6, 0xFD, 0xAE, 0xFD, 0x01, 0xAF, 0x1D, 0x87, 0xB7, 0x1E, 0xC6, 0xFE, 0xD6, 0x7E, 0x93, 0x54, 0x92, 0x12, 0xA9, 0xD3, 0xA9, 0xF3, 0xB1, 0xF3, 0x01, 0xB9, 0xF3, 0x02, 0xC1, 0xF3, 0x80, 0xC1, 0xD3, 0x01, 0xC9, 0xF3, 0x01, 0xC1, 0xD3, 0x86, + 0xB9, 0xF3, 0xBA, 0x13, 0xB1, 0xD2, 0x99, 0xF1, 0xBC, 0xB9, 0xD6, 0x7E, 0xC6, 0xBE, 0x03, 0xBE, 0xDE, 0x87, 0xC6, 0xBE, 0xDE, 0x9F, 0x9B, 0xB5, 0x82, 0x11, 0x99, 0xD1, 0xA1, 0xD2, 0xA9, 0xD2, 0xB1, 0xD3, 0x01, 0xB9, 0xD3, 0x06, 0xC1, 0xD3, 0x07, 0xC9, 0xD3, 0x80, 0xC9, 0xB3, 0x04, 0xC9, 0xD3, 0x01, 0xC9, 0xB3, 0x02, 0xC9, 0xD3, 0x03, 0xC1, 0xD3, 0x80, 0xC1, 0xB3, 0x01, 0xB9, 0xB2, 0x86, 0xB1, 0xD2, 0xA1, 0xF2, 0x92, 0x51, 0xC5, 0x1A, 0xDE, 0xDF, 0xC6, 0xDE, 0xBE, 0xFE, 0x01, 0xB6, 0xFD, 0x02, 0xAE, 0xFD, 0x03, 0xA6, 0xFD, 0x80, 0xAE, 0xFD, 0x05, 0xA6, 0xFD, 0x01, 0xAF, 0x1E, 0x8B, 0xB7, 0x1E, 0xBF, 0x1F, 0xD6, 0xFF, 0xB4, 0xFA, 0x7A, 0x30, 0x91, 0xF1, 0x99, 0xB1, 0xA9, 0xD2, 0xB1, 0xD2, 0xB9, 0xD3, 0xB9, 0xF3, 0xB9, 0xD3, 0x02, 0xC1, 0xD3, 0x80, 0xC9, 0xD4, 0x0B, 0xC9, 0xD3, 0x80, 0xC9, 0xD4, 0x06, 0xC9, 0xD3, 0x01, 0xC1, 0xD3, 0x01, 0xC1, 0xB3, 0x91, 0xC1, 0x93, 0xB9, 0x93, 0xB9, 0xB2, 0xB1, 0xB2, 0xA1, 0xF2, 0x92, 0x72, 0xDD, 0xBD, 0xDE, 0x9F, 0xD6, 0xBE, 0xCE, 0xBE, 0xD6, 0x9F, 0xDD, 0xFE, 0x8A, 0xD3, 0x89, 0xF1, 0x99, 0xD2, 0xA9, 0xF2, 0xB1, 0xF3, 0xB9, 0xF3, 0x02, 0xC1, 0xF4, 0x80, 0xC9, 0xF3, 0x02, 0xC1, 0xD3, 0x81, 0xC1, 0xF4, 0xC1, 0xF3, 0x01, 0xB9, 0xF3, 0x85, 0xA9, 0xB1, 0x99, 0xD1, 0xAC, 0x17, 0xDE, 0x9F, 0xC6, 0xDE, 0xBE, 0xDE, 0x02, 0xB6, 0xDD, 0x87, 0xB6, 0xFD, 0xB6, 0xFE, 0xC6, 0xFE, 0xD6, 0x7E, 0x82, 0xF3, 0x92, 0x32, 0xA1, 0xF2, 0xAA, 0x13, 0x01, 0xB2, 0x13, 0x81, 0xBA, 0x13, 0xBA, 0x14, 0x02, 0xB9, + 0xF3, 0x82, 0xC1, 0xF3, 0xC1, 0xF4, 0xC1, 0xF3, 0x01, 0xB9, 0xD3, 0x86, 0xB1, 0xF3, 0xA9, 0xF2, 0x9A, 0x32, 0xAC, 0x78, 0xCE, 0xBF, 0xBE, 0xFE, 0xB6, 0xFE, 0x05, 0xAE, 0xFD, 0x01, 0xAF, 0x1D, 0x87, 0xAF, 0x3E, 0xB7, 0x3E, 0xBF, 0x1E, 0xCE, 0xFF, 0xBD, 0x5B, 0x82, 0x71, 0x89, 0xD1, 0xA1, 0xB2, 0x01, 0xA9, 0xB2, 0x81, 0xB1, 0xD3, 0xB9, 0xD3, 0x01, 0xB9, 0xD4, 0x01, 0xC1, 0xD4, 0x80, 0xC1, 0xD3, 0x08, 0xC9, 0xD3, 0x80, 0xC9, 0xB3, 0x05, 0xC9, 0xD3, 0x80, 0xC9, 0xB3, 0x06, 0xC9, 0xD3, 0x01, 0xC1, 0xB3, 0x84, 0xC1, 0xD3, 0xB9, 0xD3, 0xB1, 0xF2, 0xBA, 0x94, 0xFD, 0x3E, 0x01, 0xFD, 0x7E, 0x83, 0xDB, 0xD8, 0xBA, 0x93, 0xC2, 0x94, 0xCA, 0x94, 0x02, 0xCA, 0x74, 0x03, 0xD2, 0x74, 0x80, 0xD2, 0x94, 0x08, 0xD2, 0x74, 0x01, 0xD2, 0x75, 0x92, 0xD2, 0x96, 0xD2, 0xB7, 0xCA, 0xD8, 0xC2, 0xF9, 0xAB, 0x1C, 0x30, 0xB6, 0x29, 0x3A, 0x21, 0x5B, 0x19, 0x5B, 0x19, 0x7C, 0x21, 0x7C, 0x21, 0x9C, 0x29, 0x7B, 0x31, 0x3A, 0x40, 0xB6, 0xB2, 0xBB, 0xBA, 0x38, 0xB1, 0xB5, 0xB9, 0xD6, 0x02, 0xC1, 0xD5, 0x90, 0xC1, 0xF5, 0xB1, 0xD4, 0x99, 0xF4, 0x7A, 0x15, 0x62, 0xF8, 0x65, 0x3E, 0x45, 0x9F, 0x2D, 0x7F, 0x1D, 0x7E, 0x15, 0x5E, 0x0D, 0x5D, 0x05, 0x5D, 0x05, 0x9C, 0x06, 0x3B, 0x06, 0xFB, 0x0F, 0x5B, 0x0F, 0x9A, 0x01, 0x0F, 0xBB, 0x99, 0x0F, 0x9B, 0x17, 0x7B, 0x27, 0x5C, 0x3F, 0x1D, 0x66, 0xDE, 0x64, 0xB8, 0x6A, 0x92, 0x9A, 0x53, 0xA1, 0xF3, 0xB1, 0xD3, 0xB1, 0x93, 0xB1, 0xB4, 0xB9, 0xB4, 0xB9, 0xF4, 0xA9, 0x93, 0xA1, 0x52, 0xBA, 0x15, 0xB1, 0xD3, 0xB1, + 0xB4, 0xA9, 0xB3, 0xA9, 0xF4, 0xA2, 0x55, 0x58, 0xAF, 0x50, 0xF0, 0x49, 0x30, 0x41, 0x30, 0x01, 0x39, 0x51, 0x83, 0x39, 0x71, 0x31, 0x51, 0x31, 0x50, 0x31, 0x71, 0x01, 0x31, 0x51, 0x04, 0x29, 0x30, 0x80, 0x31, 0x30, 0x01, 0x29, 0x10, 0x04, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x87, 0x21, 0x10, 0x19, 0x31, 0x19, 0x11, 0x19, 0x53, 0x21, 0xD6, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0x96, 0x01, 0x09, 0x55, 0x8E, 0x09, 0x54, 0x09, 0x34, 0x09, 0x54, 0x09, 0x55, 0x09, 0x96, 0x11, 0xD6, 0x19, 0xF7, 0x19, 0xB5, 0x11, 0x73, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x52, 0x01, 0x11, 0x33, 0x86, 0x19, 0xD6, 0x22, 0x18, 0x22, 0x17, 0x19, 0xB5, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8C, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0x94, 0x11, 0x95, 0x19, 0xD7, 0x22, 0x18, 0x11, 0x96, 0x11, 0x55, 0x11, 0x34, 0x11, 0x33, 0x03, 0x11, 0x32, 0x85, 0x11, 0x74, 0x11, 0x94, 0x19, 0xB6, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x02, 0x11, 0xB6, 0x01, 0x11, 0xD6, + 0x01, 0x19, 0xF7, 0x83, 0x19, 0xD7, 0x19, 0xB5, 0x19, 0x73, 0x11, 0x32, 0x03, 0x19, 0x31, 0x87, 0x11, 0x32, 0x11, 0x33, 0x11, 0xB6, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x53, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x29, 0x51, 0x01, 0x21, 0x51, 0x84, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0x94, 0x19, 0xB6, 0x04, 0x21, 0xF7, 0x02, 0x21, 0xD7, 0x01, 0x19, 0xB6, 0x02, 0x19, 0x95, 0x04, 0x11, 0x95, 0x84, 0x19, 0xB6, 0x11, 0x95, 0x11, 0x96, 0x19, 0xB6, 0x11, 0x96, 0x04, 0x11, 0x95, 0x82, 0x19, 0x96, 0x11, 0x95, 0x19, 0x95, 0x04, 0x11, 0x95, 0x83, 0x19, 0x95, 0x11, 0x95, 0x19, 0x95, 0x11, 0x75, 0x03, 0x19, 0x95, 0x02, 0x11, 0x95, 0x82, 0x19, 0xB6, 0x11, 0x96, 0x11, 0x95, 0x02, 0x11, 0x96, 0x04, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x08, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, + 0x10, 0x08, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x29, 0x30, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x10, 0x1F, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x29, 0x30, 0x86, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x19, 0x95, 0x01, 0x19, 0xB6, 0x01, 0x19, 0xD7, 0x02, 0x19, 0xF7, 0x84, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x29, 0x30, 0x81, 0x21, + 0x2F, 0x21, 0x30, 0x01, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x30, 0x03, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x52, 0x01, 0x19, 0x32, 0x80, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x82, 0x19, 0x11, 0x21, 0x31, 0x19, 0x10, 0x04, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x08, 0x29, 0x30, 0x09, 0x29, 0x2F, 0x85, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0xAD, 0x51, 0x2F, 0xB3, 0x77, 0xB2, 0xF5, 0x01, 0xAA, 0xB4, 0x85, 0x9A, 0x93, 0x9B, 0x54, 0xDE, 0xFF, 0xC6, 0xDE, 0xB6, 0xDD, 0xB6, 0xFD, 0x01, 0xAE, 0xDD, 0x80, 0xAF, 0x1D, 0x01, 0xA6, 0xFD, 0x01, 0xA6, 0xDC, 0x89, 0xA6, 0xFD, 0xAF, 0x1E, 0xBF, 0x1E, 0xCF, 0x1F, 0x94, 0x16, 0x82, 0x10, 0x99, 0xF1, 0xA1, 0xF2, 0xB1, 0xF3, 0xB9, 0xF3, 0x02, 0xC1, 0xF3, 0x81, 0xC9, 0xF3, 0xC9, 0xF4, 0x02, 0xC9, 0xD3, 0x01, 0xC1, 0xD3, 0x87, 0xC1, 0xF3, 0xB1, 0xB2, 0xA1, 0xD1, 0xA2, 0xF4, 0xD5, 0xBC, 0xCE, 0xDF, 0xBE, 0xFE, 0xB6, 0xFD, 0x01, 0xAE, 0xFD, 0x05, 0xA6, 0xFD, 0x81, 0xA6, 0xDC, 0xA6, 0xFD, 0x01, 0xA6, 0xDD, 0x8B, 0xA6, 0xFD, 0xAE, 0xFD, 0xAF, 0x1D, 0xAF, 0x1E, 0xBF, 0x1F, 0xCE, 0x7E, 0x83, 0x13, 0x8A, 0x11, 0xA2, 0x12, 0xA9, 0xF3, 0xB1, 0xF3, 0xB9, 0xF3, 0x01, 0xC1, 0xF3, 0x86, 0xC9, 0xF3, 0xC9, 0xD3, 0xC9, 0xF3, 0xC9, 0xD3, 0xC9, 0xF3, 0xC9, 0xD3, 0xC1, 0xD3, 0x01, 0xC1, 0xF3, 0x87, 0xB9, 0xD2, 0xA9, 0xF2, 0x9A, 0xB3, 0xD5, 0xBD, 0xCE, 0xBF, 0xBE, 0xDE, 0xAE, 0xBD, 0xAE, 0xDD, 0x01, 0xA6, 0xDD, 0x80, 0xA6, 0xDC, 0x04, 0xA6, 0xFD, 0x01, + 0xA6, 0xDD, 0x02, 0xA6, 0xFD, 0x89, 0xAE, 0xFD, 0xB6, 0xFD, 0xC6, 0xFE, 0xCE, 0x7E, 0x8B, 0x13, 0x92, 0x12, 0xA1, 0xD2, 0xA9, 0xF3, 0xB1, 0xF3, 0xB9, 0xF3, 0x04, 0xC1, 0xF3, 0x02, 0xC9, 0xF3, 0x87, 0xC1, 0xD3, 0xC1, 0xF3, 0xBA, 0x13, 0xB1, 0xD2, 0x99, 0xF1, 0xBC, 0xB9, 0xCE, 0x7E, 0xC6, 0xBE, 0x01, 0xBE, 0xDE, 0x88, 0xC6, 0xDE, 0xCE, 0xBF, 0xD6, 0x7F, 0xA3, 0xD6, 0x82, 0x11, 0x99, 0xF1, 0xA1, 0xD2, 0xA9, 0xF2, 0xB1, 0xF3, 0x01, 0xB9, 0xF3, 0x80, 0xC1, 0xF3, 0x02, 0xC1, 0xD3, 0x05, 0xC9, 0xD3, 0x80, 0xC9, 0xD4, 0x0A, 0xC9, 0xD3, 0x82, 0xD1, 0xF4, 0xC9, 0xD3, 0xC9, 0xF4, 0x01, 0xC9, 0xD3, 0x02, 0xC9, 0xF3, 0x80, 0xC9, 0xD3, 0x01, 0xC1, 0xD3, 0x01, 0xB9, 0xD3, 0x87, 0xB1, 0xD2, 0xA1, 0xF2, 0x8A, 0x10, 0xC5, 0x3A, 0xD6, 0x9E, 0xC6, 0xDE, 0xBE, 0xFE, 0xB6, 0xFD, 0x02, 0xAE, 0xFD, 0x03, 0xA6, 0xDD, 0x05, 0xA6, 0xFD, 0x89, 0xAE, 0xFD, 0xAF, 0x1E, 0xB7, 0x3E, 0xBF, 0x1E, 0xCE, 0xFF, 0xC5, 0xDC, 0x69, 0xCF, 0x89, 0xF1, 0x99, 0xD1, 0xA9, 0xD2, 0x01, 0xB1, 0xD2, 0x84, 0xB9, 0xF3, 0xC1, 0xF4, 0xC1, 0xF3, 0xC9, 0xF4, 0xC9, 0xD4, 0x04, 0xC9, 0xD3, 0x05, 0xC9, 0xB3, 0x0D, 0xC9, 0xD3, 0x01, 0xC1, 0xD3, 0x80, 0xC1, 0xB3, 0x01, 0xB9, 0xB3, 0x8D, 0xB1, 0xD2, 0xA2, 0x12, 0x8A, 0x10, 0xEE, 0x3F, 0xDE, 0x9F, 0xD6, 0x9E, 0xDE, 0x7F, 0xD5, 0xBD, 0x92, 0xD3, 0x89, 0xF1, 0xA1, 0xF2, 0xA9, 0xF2, 0xB1, 0xF3, 0xB9, 0xF3, 0x01, 0xC1, 0xF4, 0x8F, 0xC1, 0xF3, 0xC9, 0xF3, 0xC9, 0xD3, 0xC9, 0xF3, 0xC9, 0xD3, 0xC9, 0xF4, 0xC1, 0xF3, 0xB9, 0xF3, 0xBA, + 0x13, 0xA9, 0xB2, 0x99, 0xF1, 0xAC, 0x17, 0xDE, 0x9F, 0xC6, 0xBE, 0xBE, 0xDE, 0xB6, 0xBD, 0x02, 0xB6, 0xDD, 0x87, 0xB6, 0xDE, 0xC6, 0xDE, 0xCE, 0x5E, 0x83, 0x13, 0x92, 0x32, 0xA2, 0x13, 0xAA, 0x13, 0xB2, 0x13, 0x01, 0xBA, 0x13, 0x80, 0xB9, 0xF3, 0x02, 0xC1, 0xF3, 0x83, 0xC1, 0xF4, 0xC1, 0xF3, 0xC1, 0xF4, 0xC1, 0xF3, 0x01, 0xB9, 0xD3, 0x85, 0xB1, 0xF2, 0x9A, 0x32, 0xAC, 0x77, 0xCE, 0xDF, 0xBE, 0xDE, 0xB6, 0xFD, 0x01, 0xAE, 0xFD, 0x80, 0xA6, 0xDC, 0x01, 0xAE, 0xFD, 0x02, 0xAF, 0x1D, 0x87, 0xB7, 0x3E, 0xBF, 0x1E, 0xCE, 0xDF, 0xC5, 0x9C, 0x71, 0xF0, 0x89, 0xD1, 0x99, 0xD1, 0xA9, 0xD2, 0x01, 0xB1, 0xF3, 0x81, 0xB9, 0xF3, 0xB9, 0xF4, 0x02, 0xC1, 0xF4, 0x02, 0xC9, 0xF4, 0x80, 0xC9, 0xF3, 0x01, 0xC9, 0xD3, 0x80, 0xC9, 0xD4, 0x0C, 0xC9, 0xD3, 0x03, 0xC9, 0xF3, 0x02, 0xC9, 0xD3, 0x02, 0xC1, 0xD3, 0x83, 0xB9, 0xF3, 0xB9, 0xF2, 0xAA, 0x12, 0xFD, 0x5E, 0x01, 0xFD, 0x9E, 0x83, 0xC3, 0x56, 0xBA, 0x93, 0xC2, 0x94, 0xC2, 0x74, 0x02, 0xCA, 0x74, 0x80, 0xD2, 0x54, 0x07, 0xD2, 0x74, 0x01, 0xD2, 0x54, 0x81, 0xD2, 0x74, 0xDA, 0x75, 0x01, 0xD2, 0x75, 0x88, 0xD2, 0x76, 0xD2, 0x97, 0xCA, 0xB8, 0xC2, 0xD9, 0xB3, 0x3D, 0x30, 0xB6, 0x29, 0x3A, 0x21, 0x5B, 0x19, 0x5B, 0x01, 0x19, 0x7C, 0x88, 0x19, 0x9C, 0x21, 0x9C, 0x31, 0x5B, 0x40, 0xF7, 0x92, 0x1A, 0xBA, 0x59, 0xB1, 0xD6, 0xB9, 0xD6, 0xB9, 0xD5, 0x01, 0xC1, 0xD5, 0xA3, 0xC1, 0xF5, 0xB1, 0xF4, 0xA2, 0x15, 0x81, 0xF5, 0x62, 0x97, 0x64, 0xDD, 0x45, 0x9F, 0x35, 0x9F, 0x1D, 0x9F, 0x15, 0x7E, 0x0D, + 0x5D, 0x05, 0x5D, 0x05, 0x9C, 0x06, 0x3A, 0x0E, 0xFB, 0x0F, 0x5B, 0x0F, 0x9A, 0x0F, 0xDB, 0x0F, 0xBB, 0x0F, 0x9B, 0x17, 0x7B, 0x2F, 0x5C, 0x47, 0x3D, 0x6E, 0xBE, 0x64, 0x98, 0x72, 0x92, 0x9A, 0x53, 0xA9, 0xF3, 0xB1, 0xB3, 0xB9, 0xD4, 0xB9, 0xF4, 0xB1, 0xB3, 0xB1, 0xD4, 0xA1, 0x72, 0x99, 0x52, 0xBA, 0x15, 0x01, 0xB1, 0xF4, 0x8A, 0xB2, 0x15, 0xA9, 0xD4, 0x9A, 0x15, 0x48, 0x4D, 0x49, 0x10, 0x49, 0x51, 0x41, 0x51, 0x39, 0x51, 0x39, 0x31, 0x39, 0x51, 0x31, 0x51, 0x01, 0x31, 0x50, 0x81, 0x31, 0x51, 0x29, 0x51, 0x02, 0x29, 0x30, 0x01, 0x31, 0x30, 0x03, 0x29, 0x30, 0x01, 0x29, 0x10, 0x04, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x96, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xF7, 0x09, 0x96, 0x09, 0x55, 0x09, 0x75, 0x09, 0x54, 0x09, 0x34, 0x09, 0x54, 0x09, 0x55, 0x11, 0x96, 0x11, 0xD7, 0x11, 0xD6, 0x19, 0xB5, 0x11, 0x74, 0x19, 0x53, 0x19, 0x32, 0x21, 0x52, 0x19, 0x31, 0x01, 0x19, 0x32, 0x82, 0x11, 0x12, 0x09, 0x12, + 0x19, 0xB5, 0x01, 0x22, 0x17, 0x83, 0x19, 0xB6, 0x11, 0x33, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x89, 0x19, 0x11, 0x19, 0x31, 0x19, 0x53, 0x19, 0x94, 0x19, 0x95, 0x19, 0xF7, 0x22, 0x18, 0x11, 0xB6, 0x09, 0x55, 0x09, 0x54, 0x01, 0x11, 0x32, 0x87, 0x11, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x53, 0x11, 0x95, 0x19, 0xB6, 0x19, 0xD7, 0x01, 0x11, 0xB7, 0x82, 0x19, 0xD7, 0x11, 0xD7, 0x11, 0xB6, 0x02, 0x19, 0xD7, 0x83, 0x19, 0x95, 0x11, 0x54, 0x11, 0x32, 0x19, 0x11, 0x02, 0x19, 0x31, 0x8A, 0x19, 0x11, 0x11, 0x32, 0x11, 0x74, 0x11, 0xB6, 0x1A, 0x18, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x95, 0x11, 0x33, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x10, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x31, 0x8B, 0x19, 0x32, 0x11, 0x12, 0x11, 0x32, 0x11, 0x53, 0x19, 0x95, 0x19, 0xD6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x54, 0x11, 0x33, 0x01, 0x11, 0x12, 0x01, 0x10, + 0xF2, 0x03, 0x10, 0xF1, 0x01, 0x11, 0x11, 0x01, 0x11, 0x12, 0x81, 0x09, 0x12, 0x11, 0x32, 0x07, 0x11, 0x12, 0x80, 0x11, 0x32, 0x01, 0x11, 0x12, 0x07, 0x11, 0x32, 0x81, 0x11, 0x12, 0x19, 0x32, 0x01, 0x11, 0x12, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x80, 0x19, 0x53, 0x02, 0x11, 0x32, 0x02, 0x11, 0x12, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x05, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x19, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x51, 0x02, 0x21, 0x31, 0x07, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB6, 0x19, 0xD7, 0x19, 0xF8, 0x11, 0xF8, 0x1A, 0x18, 0x01, 0x11, 0xF8, 0x86, 0x11, 0xD7, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, + 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x08, 0x21, 0x30, 0x02, 0x19, 0x31, 0x81, 0x19, 0x32, 0x19, 0x52, 0x05, 0x19, 0x73, 0x80, 0x19, 0x53, 0x01, 0x11, 0x32, 0x80, 0x19, 0x11, 0x02, 0x19, 0x31, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x07, 0x29, 0x30, 0x0A, 0x29, 0x2F, 0x8F, 0x21, 0x0F, 0x28, 0xEE, 0x28, 0x8D, 0x51, 0x2F, 0xB3, 0x57, 0xB2, 0xF5, 0xAA, 0xB4, 0xAA, 0x94, 0xA2, 0x93, 0x9B, 0x34, 0xE6, 0xFF, 0xBE, 0xDD, 0xB6, 0xDD, 0xB6, 0xFD, 0xAE, 0xDD, 0xAE, 0xDC, 0x01, 0xA6, 0xFD, 0x02, 0xA6, 0xDC, 0x89, 0xA6, 0xDD, 0xAE, 0xFD, 0xBE, 0xFE, 0xCE, 0xFF, 0x94, 0x15, 0x82, 0x10, 0x99, 0xD1, 0xA1, 0xF2, 0xB1, 0xF3, 0xB9, 0xF3, 0x02, 0xC1, 0xF3, 0x01, 0xCA, 0x14, 0x01, 0xC9, 0xF3, 0x81, 0xC9, 0xD3, 0xC9, 0xF3, 0x01, 0xC1, 0xF3, + 0x87, 0xB1, 0xD2, 0xA2, 0x12, 0x9A, 0xF3, 0xCD, 0xBC, 0xCE, 0xBE, 0xB6, 0xFE, 0xB6, 0xFD, 0xAE, 0xFD, 0x01, 0xA6, 0xDD, 0x80, 0xA6, 0xDC, 0x02, 0xA6, 0xFD, 0x03, 0xA6, 0xDC, 0x80, 0xA6, 0xDD, 0x03, 0xAE, 0xFD, 0x86, 0xBE, 0xFE, 0xCE, 0x7E, 0x82, 0xF3, 0x8A, 0x11, 0xA1, 0xF2, 0xA9, 0xF3, 0xB9, 0xF3, 0x02, 0xC1, 0xF3, 0x03, 0xC9, 0xF3, 0x80, 0xC9, 0xD3, 0x01, 0xC9, 0xF3, 0x01, 0xC1, 0xF3, 0x88, 0xB9, 0xD2, 0xA9, 0xF2, 0x9A, 0xD3, 0xD5, 0x9C, 0xCE, 0xBE, 0xBE, 0xDE, 0xAE, 0xBD, 0xAE, 0xDD, 0xA6, 0xDD, 0x02, 0xA6, 0xDC, 0x03, 0xA6, 0xFD, 0x01, 0xA6, 0xDD, 0x02, 0xA6, 0xFD, 0x01, 0xAE, 0xFD, 0x87, 0xBE, 0xFE, 0xCE, 0x5E, 0x8B, 0x13, 0x92, 0x12, 0xA1, 0xF2, 0xA9, 0xF3, 0xB1, 0xF3, 0xB9, 0xF3, 0x04, 0xC1, 0xF3, 0x02, 0xC9, 0xF3, 0x01, 0xC1, 0xF3, 0x84, 0xBA, 0x13, 0xB1, 0xD2, 0x9A, 0x11, 0xC4, 0xD9, 0xD6, 0x7E, 0x01, 0xC6, 0xBE, 0x88, 0xC6, 0xDE, 0xCE, 0x9E, 0xDE, 0x7F, 0xA3, 0xF6, 0x82, 0x11, 0x99, 0xF1, 0xA1, 0xD2, 0xA9, 0xD2, 0xB1, 0xF3, 0x01, 0xB9, 0xF3, 0x02, 0xC1, 0xF3, 0x83, 0xC9, 0xF3, 0xC9, 0xD3, 0xC1, 0xD3, 0xC9, 0xD3, 0x01, 0xC9, 0xF3, 0x80, 0xC9, 0xD3, 0x02, 0xC9, 0xD4, 0x81, 0xC9, 0xD3, 0xC9, 0xD4, 0x01, 0xC9, 0xD3, 0x01, 0xC9, 0xD4, 0x80, 0xC9, 0xF4, 0x01, 0xC9, 0xD3, 0x81, 0xD1, 0xF4, 0xC9, 0xF3, 0x02, 0xC9, 0xD3, 0x05, 0xC9, 0xF3, 0x02, 0xC1, 0xF3, 0x89, 0xB9, 0xD3, 0xB1, 0xD2, 0xA1, 0xF1, 0x92, 0x71, 0xCD, 0x5B, 0xD6, 0xBF, 0xC6, 0xDE, 0xB6, 0xDD, 0xAE, 0xDD, 0xAE, 0xFD, 0x01, 0xAE, 0xDD, 0x06, 0xA6, 0xDD, + 0x01, 0xA6, 0xFD, 0x89, 0xAF, 0x1D, 0xAF, 0x1E, 0xB7, 0x1E, 0xC6, 0xFF, 0xC5, 0xFD, 0x7A, 0x91, 0x8A, 0x11, 0x99, 0xD1, 0xA9, 0xF2, 0xB1, 0xD2, 0x01, 0xB9, 0xF3, 0x82, 0xC2, 0x14, 0xC1, 0xF4, 0xC9, 0xF4, 0x04, 0xC9, 0xD3, 0x81, 0xC9, 0xF4, 0xC9, 0xD4, 0x02, 0xC9, 0xD3, 0x80, 0xC9, 0xB3, 0x0B, 0xC9, 0xD3, 0x01, 0xC9, 0xF3, 0x81, 0xC9, 0xF4, 0xC9, 0xF3, 0x01, 0xC9, 0xD3, 0x02, 0xC1, 0xD3, 0x84, 0xB9, 0xD3, 0xB1, 0xD2, 0xA2, 0x12, 0xA3, 0x35, 0xEE, 0x1F, 0x01, 0xDE, 0x5F, 0x97, 0xDD, 0xBD, 0x92, 0xD4, 0x91, 0xF1, 0xA1, 0xD2, 0xA9, 0xF2, 0xB2, 0x13, 0xBA, 0x13, 0xC2, 0x14, 0xC1, 0xF4, 0xC1, 0xF3, 0xC9, 0xF3, 0xC9, 0xD3, 0xC9, 0xF3, 0xC9, 0xF4, 0xC9, 0xF3, 0xC1, 0xF3, 0xC2, 0x13, 0xBA, 0x13, 0xA9, 0xD2, 0x99, 0xF1, 0xB4, 0x37, 0xDE, 0x9F, 0xC6, 0xBE, 0xBE, 0xDD, 0x01, 0xB6, 0xBD, 0x02, 0xB6, 0xDD, 0x86, 0xC6, 0xDE, 0xCE, 0x5E, 0x83, 0x13, 0x92, 0x32, 0xA2, 0x12, 0xAA, 0x13, 0xB2, 0x13, 0x01, 0xBA, 0x13, 0x80, 0xB9, 0xF3, 0x06, 0xC1, 0xF3, 0x01, 0xB9, 0xF3, 0x86, 0xB1, 0xF2, 0x9A, 0x31, 0xAC, 0x78, 0xCE, 0xBE, 0xBE, 0xDD, 0xB6, 0xFD, 0xAE, 0xFD, 0x01, 0xAE, 0xDC, 0x02, 0xAE, 0xFD, 0x01, 0xAF, 0x1D, 0x87, 0xB7, 0x1E, 0xC6, 0xFF, 0xBD, 0xBB, 0x82, 0xB2, 0x89, 0xF1, 0x99, 0xB1, 0xA9, 0xD2, 0xB1, 0xF3, 0x01, 0xB9, 0xF3, 0x01, 0xC1, 0xF3, 0x01, 0xC1, 0xF4, 0x80, 0xC9, 0xF3, 0x04, 0xC9, 0xF4, 0x03, 0xC9, 0xD3, 0x01, 0xC9, 0xD4, 0x04, 0xC9, 0xD3, 0x81, 0xC9, 0xF3, 0xC9, 0xD3, 0x03, 0xC9, 0xF3, 0x01, 0xC9, 0xF4, 0x04, 0xC9, 0xF3, + 0x02, 0xC1, 0xF3, 0x86, 0xB2, 0x12, 0xBA, 0xD4, 0xFD, 0x7E, 0xFD, 0xBE, 0xFD, 0x9E, 0xBA, 0xD4, 0xBA, 0x73, 0x01, 0xC2, 0x74, 0x01, 0xCA, 0x74, 0x81, 0xCA, 0x54, 0xD2, 0x54, 0x01, 0xD2, 0x74, 0x03, 0xD2, 0x54, 0x80, 0xD2, 0x74, 0x02, 0xD2, 0x54, 0x02, 0xD2, 0x55, 0x88, 0xD2, 0x76, 0xD2, 0x97, 0xCA, 0xB8, 0xC2, 0xD9, 0xAA, 0xFC, 0x38, 0xB6, 0x29, 0x19, 0x21, 0x5B, 0x21, 0x7C, 0x01, 0x19, 0x7C, 0x9A, 0x19, 0x9C, 0x19, 0x7C, 0x29, 0x7B, 0x39, 0x18, 0x71, 0x78, 0xB2, 0x5A, 0xB2, 0x18, 0xB9, 0xF6, 0xB9, 0xD5, 0xC1, 0xD5, 0xC1, 0xF5, 0xC1, 0xD4, 0xB1, 0xF4, 0xA2, 0x15, 0x89, 0xF5, 0x62, 0x76, 0x5C, 0x7C, 0x4D, 0x9F, 0x35, 0x9F, 0x1D, 0x9F, 0x15, 0x7E, 0x0D, 0x7D, 0x05, 0x7D, 0x05, 0x9C, 0x06, 0x3A, 0x06, 0xDA, 0x0F, 0x5B, 0x01, 0x0F, 0x9A, 0x89, 0x0F, 0xBB, 0x0F, 0x7B, 0x1F, 0x7B, 0x2F, 0x5C, 0x4F, 0x3D, 0x6E, 0xBE, 0x64, 0x57, 0x72, 0x92, 0x9A, 0x33, 0xA9, 0xF3, 0x01, 0xB1, 0xD4, 0x84, 0xB9, 0xD4, 0xB1, 0xB4, 0xB1, 0xD4, 0xA1, 0x72, 0x99, 0x52, 0x03, 0xB1, 0xF4, 0x87, 0xA9, 0xF4, 0x91, 0xF4, 0x50, 0xAF, 0x49, 0x10, 0x41, 0x51, 0x39, 0x51, 0x39, 0x31, 0x39, 0x71, 0x01, 0x31, 0x51, 0x81, 0x31, 0x71, 0x29, 0x71, 0x03, 0x29, 0x50, 0x05, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, 0x29, 0x10, 0x03, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, + 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x85, 0x11, 0x53, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xF7, 0x11, 0x96, 0x09, 0x76, 0x01, 0x09, 0x75, 0x8B, 0x09, 0x54, 0x01, 0x34, 0x09, 0x55, 0x11, 0xB6, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x73, 0x19, 0x52, 0x19, 0x32, 0x21, 0x52, 0x19, 0x51, 0x01, 0x19, 0x32, 0x82, 0x11, 0x32, 0x11, 0x13, 0x19, 0x95, 0x01, 0x21, 0xF7, 0x87, 0x19, 0xB6, 0x11, 0x12, 0x11, 0x11, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x90, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x11, 0x19, 0x31, 0x19, 0x32, 0x19, 0x74, 0x11, 0x75, 0x19, 0xB6, 0x22, 0x18, 0x19, 0xF7, 0x09, 0x75, 0x09, 0x54, 0x11, 0x33, 0x11, 0x32, 0x19, 0x52, 0x19, 0x31, 0x01, 0x11, 0x32, 0x85, 0x19, 0x53, 0x11, 0x53, 0x11, 0x75, 0x19, 0xB6, 0x11, 0xB6, 0x19, 0xB6, 0x01, 0x11, 0xB6, 0x01, 0x19, 0xB6, 0x84, 0x11, 0x96, 0x11, 0x95, 0x11, 0x74, 0x19, 0x53, 0x19, 0x32, 0x03, 0x19, 0x31, 0x8A, 0x11, 0x12, 0x11, 0x33, 0x11, 0x75, 0x19, 0xD7, 0x1A, 0x18, 0x19, 0xD7, 0x11, 0xB6, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x88, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, + 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB5, 0x01, 0x21, 0xF7, 0x86, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x10, 0xF1, 0x01, 0x19, 0x11, 0x81, 0x18, 0xF1, 0x18, 0xF0, 0x02, 0x19, 0x10, 0x80, 0x18, 0xF0, 0x01, 0x19, 0x10, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x18, 0xF1, 0x19, 0x31, 0x0A, 0x19, 0x11, 0x01, 0x19, 0x31, 0x02, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x02, 0x19, 0x11, 0x80, 0x19, 0x31, 0x03, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x02, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x83, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, + 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x14, 0x21, 0x31, 0x80, 0x21, 0x30, 0x04, 0x21, 0x51, 0x82, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x05, 0x21, 0x51, 0x81, 0x19, 0x51, 0x21, 0x51, 0x01, 0x19, 0x31, 0x82, 0x21, 0x51, 0x19, 0x31, 0x21, 0x52, 0x01, 0x21, 0x31, 0x81, 0x21, 0x51, 0x21, 0x31, 0x02, 0x19, 0x31, 0x8A, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB7, 0x19, 0xF8, 0x11, 0xF8, 0x11, 0xB7, 0x09, 0xB7, 0x11, 0xD7, 0x02, 0x11, 0xF8, 0x85, 0x19, 0xF7, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x53, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8B, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x29, 0x30, 0x02, 0x29, 0x10, 0x06, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0C, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x52, 0x8B, 0x19, 0x53, + 0x19, 0x74, 0x19, 0x94, 0x21, 0xD5, 0x21, 0xF6, 0x2A, 0x37, 0x22, 0x16, 0x21, 0xD5, 0x19, 0x94, 0x19, 0x73, 0x11, 0x52, 0x19, 0x52, 0x01, 0x19, 0x31, 0x83, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x30, 0x0D, 0x29, 0x2F, 0x90, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0x8D, 0x51, 0x2F, 0xB3, 0x37, 0xB2, 0xD5, 0xAA, 0x94, 0xAA, 0x73, 0xA2, 0x73, 0x9B, 0x13, 0xE6, 0xFF, 0xC6, 0xFE, 0xBE, 0xDD, 0xB6, 0xFD, 0xAE, 0xBD, 0xAE, 0xDC, 0xA6, 0xDD, 0x03, 0xA6, 0xDC, 0x89, 0xA6, 0xDD, 0xAE, 0xDD, 0xBE, 0xFE, 0xCE, 0xDF, 0x93, 0xF5, 0x82, 0x10, 0x99, 0xF2, 0xA1, 0xF2, 0xB1, 0xF3, 0xBA, 0x13, 0x01, 0xC2, 0x14, 0x02, 0xCA, 0x14, 0x01, 0xC9, 0xF4, 0x89, 0xCA, 0x14, 0xC9, 0xF3, 0xC1, 0xF3, 0xC2, 0x13, 0xB9, 0xF3, 0xAA, 0x32, 0xAB, 0x95, 0xCD, 0xBC, 0xC6, 0x9E, 0xB6, 0xDD, 0x01, 0xAE, 0xDD, 0x80, 0xA6, 0xDD, 0x02, 0xA6, 0xDC, 0x80, 0xA6, 0xFC, 0x07, 0xA6, 0xDC, 0x01, 0xAE, 0xDD, 0x8D, 0xBE, 0xBE, 0xCE, 0x5E, 0x82, 0xF2, 0x8A, 0x31, 0x99, 0xF2, 0xAA, 0x12, 0xBA, 0x13, 0xC2, 0x13, 0xC2, 0x14, 0xC9, 0xF4, 0xC9, 0xF3, 0xC9, 0xF4, 0xC9, 0xF3, 0xC9, 0xF4, 0x01, 0xC9, 0xF3, 0x8A, 0xC1, 0xF4, 0xC2, 0x14, 0xC2, 0x13, 0xB9, 0xD2, 0xAA, 0x12, 0xA3, 0x14, 0xCD, 0x7C, 0xCE, 0xBF, 0xBE, 0xDE, 0xB6, 0xDD, 0xAE, 0xDD, 0x01, 0xA6, 0xDD, 0x83, 0xA6, 0xDC, 0x9E, 0xDC, 0xA6, 0xDC, 0x9E, 0xDC, 0x01, 0xA6, 0xDC, 0x01, 0xA6, 0xDD, 0x02, 0xA6, 0xFD, 0x89, 0xA6, 0xDD, 0xAE, 0xFD, 0xBE, 0xDE, 0xCE, 0x5E, 0x8B, 0x54, + 0x8A, 0x11, 0xA2, 0x12, 0xA9, 0xF3, 0xB1, 0xF3, 0xBA, 0x14, 0x01, 0xC2, 0x14, 0x82, 0xC2, 0x13, 0xC9, 0xF3, 0xCA, 0x13, 0x02, 0xC9, 0xF3, 0x01, 0xC1, 0xF3, 0x8F, 0xBA, 0x33, 0xB1, 0xF2, 0x91, 0xF1, 0xDD, 0xBD, 0xD6, 0x7E, 0xCE, 0x9E, 0xC6, 0xBE, 0xCE, 0x9E, 0xDE, 0x7F, 0xAC, 0x37, 0x81, 0xF0, 0x91, 0xF1, 0xA1, 0xF2, 0xA9, 0xF2, 0xB1, 0xF3, 0xBA, 0x13, 0x01, 0xC2, 0x14, 0x01, 0xC1, 0xF3, 0x80, 0xCA, 0x14, 0x01, 0xC9, 0xF4, 0x80, 0xCA, 0x14, 0x02, 0xC9, 0xF4, 0x80, 0xC9, 0xF3, 0x0D, 0xC9, 0xF4, 0x02, 0xC9, 0xF3, 0x81, 0xC9, 0xF4, 0xD1, 0xF4, 0x01, 0xC9, 0xF4, 0x01, 0xC9, 0xF3, 0x81, 0xCA, 0x14, 0xCA, 0x13, 0x01, 0xC1, 0xF3, 0x87, 0xB9, 0xF3, 0xB1, 0xF2, 0xA1, 0xF1, 0x81, 0xF0, 0xD5, 0xBC, 0xCE, 0x9E, 0xBE, 0xBE, 0xB6, 0xDD, 0x01, 0xAE, 0xDD, 0x80, 0xAE, 0xDC, 0x04, 0xA6, 0xDC, 0x01, 0xA6, 0xDD, 0x89, 0xA6, 0xFD, 0xAE, 0xFD, 0xAF, 0x1D, 0xB7, 0x1E, 0xBE, 0xFE, 0xD6, 0x9F, 0x82, 0xD2, 0x81, 0xF0, 0x99, 0xF1, 0xA9, 0xF2, 0x01, 0xB1, 0xF3, 0x80, 0xBA, 0x13, 0x01, 0xC2, 0x14, 0x80, 0xCA, 0x14, 0x07, 0xC9, 0xF4, 0x80, 0xD1, 0xF4, 0x01, 0xC9, 0xF4, 0x84, 0xD1, 0xF4, 0xC9, 0xD3, 0xC9, 0xD4, 0xD1, 0xF4, 0xC9, 0xD4, 0x01, 0xC9, 0xF4, 0x05, 0xC9, 0xF3, 0x01, 0xC9, 0xF4, 0x80, 0xCA, 0x14, 0x02, 0xC9, 0xF4, 0x8F, 0xC9, 0xF3, 0xC1, 0xF4, 0xC1, 0xD3, 0xC1, 0xF3, 0xB9, 0xD3, 0xB1, 0xF3, 0xA2, 0x32, 0xCC, 0x39, 0xEE, 0x3F, 0xE6, 0x1E, 0xE5, 0xBE, 0x9A, 0xF4, 0x91, 0xF1, 0xA1, 0xD2, 0xA9, 0xF2, 0xB2, 0x13, 0x01, 0xC2, 0x14, 0x81, 0xC1, + 0xF3, 0xC9, 0xF3, 0x03, 0xC9, 0xF4, 0x80, 0xCA, 0x14, 0x01, 0xC2, 0x14, 0x86, 0xBA, 0x13, 0xB1, 0xF2, 0x99, 0xF1, 0xB4, 0x37, 0xDE, 0x9F, 0xC6, 0xBE, 0xBE, 0xDE, 0x01, 0xB6, 0xBD, 0x02, 0xB6, 0xDD, 0x86, 0xC6, 0xDE, 0xCE, 0x5E, 0x82, 0xF3, 0x8A, 0x31, 0xA2, 0x12, 0xAA, 0x13, 0xB2, 0x33, 0x01, 0xBA, 0x13, 0x01, 0xC2, 0x14, 0x84, 0xC2, 0x13, 0xC1, 0xF3, 0xCA, 0x13, 0xC1, 0xF3, 0xCA, 0x14, 0x01, 0xC1, 0xF3, 0x86, 0xB9, 0xF3, 0xB2, 0x12, 0xA2, 0x72, 0xB4, 0xB8, 0xCE, 0x9E, 0xBE, 0xDD, 0xB6, 0xFD, 0x04, 0xAE, 0xDC, 0x01, 0xAE, 0xFD, 0x8A, 0xB7, 0x1E, 0xC6, 0xFE, 0xCE, 0x7E, 0x8B, 0x33, 0x8A, 0x11, 0x99, 0xF2, 0xA9, 0xD2, 0xB1, 0xF3, 0xB9, 0xF3, 0xBA, 0x13, 0xC2, 0x13, 0x01, 0xC1, 0xF4, 0x82, 0xCA, 0x14, 0xC9, 0xF4, 0xCA, 0x14, 0x01, 0xC9, 0xF4, 0x80, 0xC9, 0xF3, 0x01, 0xC9, 0xF4, 0x81, 0xC9, 0xD4, 0xD1, 0xD4, 0x01, 0xC9, 0xD3, 0x01, 0xC9, 0xD4, 0x80, 0xC9, 0xF4, 0x02, 0xC9, 0xD3, 0x01, 0xC9, 0xF3, 0x01, 0xC9, 0xF4, 0x01, 0xC9, 0xF3, 0x82, 0xC9, 0xF4, 0xC9, 0xF3, 0xC9, 0xF4, 0x02, 0xCA, 0x14, 0x02, 0xC9, 0xF3, 0x01, 0xC1, 0xF3, 0x89, 0xBA, 0x13, 0xB2, 0x12, 0xD3, 0x97, 0xFD, 0xDF, 0xFD, 0xDE, 0xFD, 0xBE, 0xBB, 0x14, 0xBA, 0x93, 0xC2, 0x73, 0xC2, 0x54, 0x02, 0xCA, 0x54, 0x09, 0xD2, 0x54, 0x01, 0xDA, 0x55, 0x95, 0xD2, 0x55, 0xD2, 0x56, 0xD2, 0x77, 0xCA, 0x98, 0xC2, 0xB9, 0xAA, 0xFC, 0x38, 0xB6, 0x29, 0x1A, 0x21, 0x5B, 0x21, 0x7C, 0x19, 0x7D, 0x11, 0x7D, 0x19, 0x9D, 0x19, 0x7C, 0x29, 0x7C, 0x39, 0x39, 0x59, 0x17, 0x9A, 0x3A, + 0xB2, 0x18, 0xB9, 0xF7, 0xC1, 0xD6, 0xC1, 0xD5, 0x01, 0xC1, 0xF5, 0x8E, 0xB9, 0xF5, 0xA9, 0xF5, 0x91, 0xF5, 0x6A, 0x76, 0x53, 0xFA, 0x4D, 0x5E, 0x35, 0x9F, 0x1D, 0xBF, 0x15, 0x7E, 0x0D, 0x7D, 0x0D, 0x9D, 0x05, 0xBC, 0x06, 0x3A, 0x06, 0xDA, 0x0F, 0x7B, 0x02, 0x0F, 0x9A, 0x8F, 0x0F, 0x7A, 0x1F, 0x5B, 0x2F, 0x3C, 0x4F, 0x1D, 0x76, 0xBE, 0x64, 0x57, 0x72, 0x72, 0x9A, 0x33, 0xA1, 0xB2, 0xB1, 0xD3, 0xB1, 0xD4, 0xB1, 0xB4, 0xB1, 0xD4, 0xB1, 0xF4, 0x99, 0x52, 0xA1, 0x93, 0x01, 0xA9, 0xD4, 0x86, 0xB1, 0xF4, 0xA9, 0xD4, 0xAA, 0x15, 0x89, 0xB3, 0x50, 0xF0, 0x49, 0x31, 0x41, 0x30, 0x02, 0x39, 0x51, 0x81, 0x31, 0x51, 0x31, 0x71, 0x01, 0x29, 0x51, 0x01, 0x29, 0x50, 0x03, 0x29, 0x30, 0x80, 0x29, 0x50, 0x03, 0x29, 0x30, 0x02, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x92, 0x18, 0xF0, 0x10, 0xF1, 0x11, 0x32, 0x19, 0x95, 0x19, 0xF6, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0xD7, 0x09, 0xB6, 0x09, 0x96, 0x09, 0x76, 0x09, 0xB6, 0x11, 0xF7, 0x1A, 0x17, 0x19, 0xD6, 0x11, 0x94, 0x11, 0x52, 0x11, + 0x31, 0x03, 0x19, 0x31, 0x89, 0x19, 0x32, 0x11, 0x12, 0x11, 0x13, 0x21, 0xD6, 0x2A, 0x38, 0x22, 0x17, 0x19, 0x95, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x31, 0x89, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0x96, 0x22, 0x18, 0x1A, 0x18, 0x09, 0x75, 0x09, 0x34, 0x09, 0x33, 0x11, 0x32, 0x01, 0x19, 0x52, 0x80, 0x11, 0x31, 0x01, 0x19, 0x32, 0x82, 0x19, 0x33, 0x11, 0x54, 0x11, 0x74, 0x01, 0x11, 0x75, 0x01, 0x11, 0xB5, 0x8D, 0x11, 0x95, 0x19, 0x75, 0x19, 0x74, 0x11, 0x54, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x19, 0x51, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x19, 0xB6, 0x01, 0x1A, 0x18, 0x88, 0x19, 0xF7, 0x11, 0x95, 0x09, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x30, 0x29, 0x51, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x10, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x85, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, + 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x19, 0x10, 0x19, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x30, 0x02, 0x21, 0x31, 0x02, 0x21, 0x30, 0x83, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x02, 0x21, 0x31, 0x81, 0x19, 0x10, 0x21, 0x30, 0x01, 0x19, 0x30, 0x84, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x19, 0x10, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x51, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x19, 0x11, 0x21, 0x11, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x02, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x21, 0x31, 0x19, 0x31, 0x21, 0x31, 0x02, 0x19, 0x31, 0x02, 0x21, 0x31, 0x02, 0x19, 0x31, 0x83, 0x19, 0x51, 0x19, 0x31, 0x21, 0x52, 0x19, 0x31, 0x01, 0x21, 0x51, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x03, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x05, + 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x11, 0x89, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xB7, 0x11, 0xD7, 0x11, 0xF8, 0x09, 0xB7, 0x01, 0x09, 0x96, 0x8A, 0x09, 0x76, 0x09, 0x96, 0x09, 0xB7, 0x11, 0xB7, 0x19, 0xF8, 0x11, 0xB6, 0x19, 0xB5, 0x19, 0x73, 0x19, 0x32, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x84, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x10, 0x08, 0x21, 0x30, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x86, 0x19, 0x53, 0x11, 0x53, 0x19, 0x95, 0x21, 0xD6, 0x21, 0xF6, 0x22, 0x17, 0x19, 0xD6, 0x02, 0x22, 0x17, 0x86, 0x21, 0xF6, 0x19, 0xD5, 0x19, 0x94, 0x19, 0x53, 0x19, 0x52, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, + 0x05, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x8D, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0x8D, 0x51, 0x2F, 0xB3, 0x37, 0xB2, 0xD5, 0xAA, 0x94, 0xAA, 0x73, 0xA2, 0x73, 0x92, 0xF3, 0xE6, 0xFF, 0xC6, 0xFE, 0xBE, 0xFD, 0xB6, 0xFD, 0x01, 0xAE, 0xBC, 0x04, 0xA6, 0xDC, 0x8B, 0xAE, 0xFD, 0xB6, 0xFD, 0xBE, 0xDE, 0xCE, 0xDF, 0x93, 0xF5, 0x82, 0x10, 0x9A, 0x12, 0xAA, 0x13, 0xB2, 0x13, 0xBA, 0x34, 0xC2, 0x34, 0xCA, 0x34, 0x06, 0xCA, 0x14, 0x87, 0xC2, 0x14, 0xC2, 0x13, 0xB9, 0xF3, 0xA2, 0x32, 0xAB, 0x95, 0xC5, 0xBB, 0xC6, 0x9D, 0xB6, 0xBD, 0x01, 0xAE, 0xDD, 0x80, 0xA6, 0xDD, 0x0B, 0xA6, 0xDC, 0x88, 0xAE, 0xDC, 0xAE, 0xDD, 0xBE, 0xFE, 0xCE, 0x7E, 0x83, 0x13, 0x8A, 0x31, 0x9A, 0x12, 0xAA, 0x13, 0xBA, 0x13, 0x01, 0xC2, 0x14, 0x01, 0xCA, 0x14, 0x81, 0xC9, 0xF4, 0xCA, 0x14, 0x01, 0xC9, 0xF4, 0x01, 0xCA, 0x14, 0x89, 0xC2, 0x34, 0xC2, 0x14, 0xB9, 0xF3, 0xAA, 0x32, 0xAB, 0x55, 0xCD, 0x9C, 0xCE, 0x9E, 0xB6, 0xDE, 0xB6, 0xDD, 0xAE, 0xDD, 0x01, 0xA6, 0xDD, 0x06, 0xA6, 0xDC, 0x80, 0xA6, 0xDD, 0x01, 0xA6, 0xFD, 0x80, 0xA6, 0xFC, 0x01, 0xAE, 0xFD, 0x87, 0xBE, 0xFE, 0xCE, 0x3D, 0x83, 0x13, 0x8A, 0x32, 0xA2, 0x13, 0xAA, 0x33, 0xB2, 0x13, 0xBA, 0x14, 0x01, 0xC2, 0x14, 0x02, 0xCA, 0x14, 0x80, 0xC9, 0xF3, 0x01, 0xCA, 0x14, 0x86, 0xC2, 0x13, 0xC1, 0xF3, 0xC2, 0x33, 0xB1, 0xF2, 0x92, 0x11, 0xDD, 0xBC, 0xD6, 0x5E, 0x01, 0xCE, 0x9E, 0x89, 0xD6, 0x7E, 0xAC, 0x78, 0x82, 0x10, 0x91, 0xD1, 0xA1, 0xF2, 0xA9, 0xF3, 0xB1, 0xF3, 0xBA, 0x13, + 0xC2, 0x13, 0xC2, 0x34, 0x08, 0xCA, 0x14, 0x0E, 0xC9, 0xF4, 0x01, 0xC9, 0xF3, 0x03, 0xC9, 0xF4, 0x81, 0xD2, 0x14, 0xC9, 0xF4, 0x03, 0xCA, 0x14, 0x01, 0xCA, 0x13, 0x01, 0xC2, 0x13, 0x86, 0xB1, 0xD2, 0xA2, 0x11, 0x92, 0xB2, 0xD5, 0xDD, 0xCE, 0x9E, 0xBE, 0xDD, 0xB6, 0xDD, 0x01, 0xAE, 0xDD, 0x80, 0xAE, 0xFD, 0x02, 0xA6, 0xBC, 0x01, 0xAE, 0xDC, 0x01, 0xAE, 0xFD, 0x87, 0xAF, 0x1D, 0xB7, 0x3E, 0xBE, 0xFE, 0xCE, 0xBE, 0x8B, 0xB4, 0x7A, 0x10, 0x91, 0xD1, 0xA1, 0xF2, 0x01, 0xB2, 0x13, 0x82, 0xBA, 0x13, 0xC2, 0x34, 0xC2, 0x14, 0x02, 0xCA, 0x14, 0x03, 0xC9, 0xF4, 0x80, 0xD2, 0x14, 0x01, 0xC9, 0xF4, 0x04, 0xD1, 0xF4, 0x03, 0xC9, 0xF4, 0x80, 0xD1, 0xF4, 0x01, 0xC9, 0xF3, 0x84, 0xCA, 0x14, 0xC9, 0xF4, 0xCA, 0x14, 0xC9, 0xF4, 0xD2, 0x14, 0x02, 0xCA, 0x14, 0x80, 0xC9, 0xF4, 0x01, 0xCA, 0x14, 0x01, 0xC9, 0xF4, 0x91, 0xC1, 0xF4, 0xC1, 0xD3, 0xB9, 0xF3, 0xB2, 0x13, 0x9A, 0x32, 0xED, 0x7D, 0xED, 0xFF, 0xE5, 0x9E, 0xA2, 0xF4, 0x91, 0xD1, 0xA1, 0xD1, 0xB2, 0x13, 0xBA, 0x13, 0xC2, 0x34, 0xC2, 0x14, 0xC2, 0x13, 0xCA, 0x14, 0xC9, 0xF3, 0x02, 0xCA, 0x14, 0x8C, 0xCA, 0x34, 0xC2, 0x34, 0xC2, 0x14, 0xC2, 0x34, 0xB1, 0xF2, 0x99, 0xF1, 0xB4, 0x37, 0xDE, 0x7E, 0xC6, 0xBE, 0xBE, 0xBD, 0xB6, 0xBD, 0xB6, 0xBC, 0xB6, 0xBD, 0x01, 0xB6, 0xDD, 0x87, 0xC6, 0xDE, 0xCE, 0x5E, 0x82, 0xF2, 0x8A, 0x31, 0x9A, 0x12, 0xAA, 0x13, 0xB2, 0x33, 0xBA, 0x34, 0x01, 0xC2, 0x34, 0x01, 0xC2, 0x14, 0x02, 0xCA, 0x13, 0x80, 0xC2, 0x13, 0x01, 0xC1, 0xF3, 0x88, 0xBA, 0x13, 0xB2, + 0x12, 0x9A, 0x52, 0xBC, 0xD8, 0xCE, 0x9E, 0xBE, 0xDD, 0xB6, 0xDD, 0xAE, 0xDC, 0xAE, 0xBC, 0x03, 0xAE, 0xDC, 0x89, 0xB7, 0x1D, 0xBF, 0x1E, 0xCE, 0xBE, 0x93, 0xF6, 0x8A, 0x51, 0x91, 0xF2, 0xA1, 0xF2, 0xB1, 0xF3, 0xBA, 0x14, 0xC2, 0x34, 0x01, 0xC2, 0x14, 0x04, 0xCA, 0x14, 0x80, 0xCA, 0x13, 0x01, 0xC9, 0xF3, 0x80, 0xC9, 0xF4, 0x02, 0xC9, 0xF3, 0x80, 0xD1, 0xF4, 0x01, 0xC9, 0xD4, 0x01, 0xC9, 0xD3, 0x80, 0xC9, 0xF3, 0x03, 0xC9, 0xF4, 0x80, 0xC9, 0xF3, 0x01, 0xC9, 0xF4, 0x81, 0xCA, 0x14, 0xCA, 0x13, 0x03, 0xCA, 0x14, 0x80, 0xCA, 0x13, 0x01, 0xCA, 0x14, 0x01, 0xCA, 0x13, 0x02, 0xC2, 0x13, 0x86, 0xAA, 0x11, 0xF4, 0xFC, 0xFD, 0xFF, 0xFE, 0x1F, 0xFD, 0xDE, 0xB2, 0xB3, 0xBA, 0x73, 0x01, 0xC2, 0x53, 0x02, 0xCA, 0x54, 0x03, 0xD2, 0x54, 0x03, 0xD2, 0x34, 0x8E, 0xD2, 0x54, 0xD2, 0x34, 0xDA, 0x55, 0xD2, 0x35, 0xD2, 0x55, 0xD2, 0x77, 0xCA, 0x98, 0xC2, 0xB9, 0xAA, 0xFC, 0x38, 0xB6, 0x29, 0x1A, 0x21, 0x5B, 0x21, 0x7C, 0x19, 0x7C, 0x11, 0x7D, 0x01, 0x19, 0x9D, 0x87, 0x29, 0x9C, 0x31, 0x3A, 0x49, 0x18, 0x81, 0xDA, 0xAA, 0x39, 0xB9, 0xF7, 0xB9, 0xD6, 0xC1, 0xD5, 0x01, 0xC1, 0xF5, 0x8E, 0xB9, 0xF5, 0xA9, 0xD5, 0x91, 0xF5, 0x72, 0x56, 0x53, 0x99, 0x4D, 0x1E, 0x35, 0x9F, 0x25, 0xBF, 0x15, 0x9E, 0x0D, 0x9E, 0x0D, 0x9D, 0x05, 0xDC, 0x06, 0x3A, 0x06, 0xBA, 0x0F, 0x5B, 0x02, 0x0F, 0x9A, 0x88, 0x17, 0x9B, 0x1F, 0x5B, 0x2F, 0x3C, 0x4F, 0x1D, 0x76, 0x7D, 0x64, 0x37, 0x72, 0x72, 0x9A, 0x33, 0xA1, 0xD3, 0x01, 0xB1, 0xD4, 0x85, 0xB9, 0xF5, 0xB1, 0xB3, + 0xB2, 0x15, 0x88, 0xF0, 0x99, 0x73, 0xA9, 0xF4, 0x01, 0xA9, 0xD4, 0x88, 0xA9, 0xF4, 0xA2, 0x15, 0x81, 0x72, 0x50, 0xF0, 0x49, 0x30, 0x41, 0x31, 0x39, 0x30, 0x31, 0x51, 0x39, 0x71, 0x01, 0x31, 0x71, 0x02, 0x29, 0x51, 0x01, 0x29, 0x50, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x30, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x10, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x8B, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x86, 0x19, 0x10, 0x18, 0xF0, 0x19, 0x11, 0x19, 0x32, 0x19, 0x73, 0x11, 0xB5, 0x1A, 0x17, 0x01, 0x11, 0xD7, 0x8A, 0x12, 0x18, 0x11, 0xD7, 0x09, 0xB7, 0x09, 0xB6, 0x11, 0xD7, 0x11, 0xF7, 0x19, 0xD6, 0x11, 0x94, 0x11, 0x73, 0x11, 0x32, 0x19, 0x32, 0x03, 0x19, 0x31, 0x01, 0x19, 0x32, 0x81, 0x11, 0x13, 0x19, 0xB6, 0x01, 0x22, 0x17, 0x80, 0x19, 0xB5, 0x01, 0x11, 0x12, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8D, 0x19, 0x32, 0x11, 0x12, 0x19, 0x54, 0x19, 0x95, 0x19, 0xF7, 0x22, 0x18, 0x11, 0x96, 0x09, 0x54, 0x09, 0x53, + 0x11, 0x53, 0x11, 0x52, 0x19, 0x52, 0x11, 0x11, 0x19, 0x31, 0x01, 0x19, 0x32, 0x82, 0x19, 0x53, 0x11, 0x53, 0x11, 0x54, 0x03, 0x11, 0x74, 0x81, 0x19, 0x74, 0x11, 0x53, 0x01, 0x19, 0x53, 0x81, 0x19, 0x32, 0x11, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x8B, 0x11, 0x75, 0x19, 0xF7, 0x22, 0x18, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x01, 0x21, 0x10, 0x01, 0x29, 0x10, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x10, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x11, 0x11, 0x12, 0x11, 0x53, 0x11, 0x74, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x82, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x01, 0x11, 0x32, 0x02, 0x19, 0x31, 0x86, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x0A, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x03, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, + 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x29, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x50, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x19, 0x31, 0x03, 0x19, 0x32, 0x80, 0x19, 0x12, 0x01, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x32, 0x0A, 0x19, 0x12, 0x01, 0x11, 0x12, 0x02, 0x11, 0x32, 0x03, 0x11, 0x11, 0x07, 0x11, 0x12, 0x02, 0x11, 0x32, 0x81, 0x11, 0x12, 0x11, 0x32, 0x06, 0x11, 0x12, 0x8A, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xB7, 0x09, 0xB7, 0x09, 0x97, 0x09, 0x96, 0x09, 0x76, 0x09, 0x75, 0x01, 0x01, 0x55, 0x8A, 0x09, 0x76, 0x11, 0xB6, 0x11, 0xD7, 0x19, 0xD7, 0x19, 0xB5, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x88, 0x21, 0x10, 0x29, 0x10, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, + 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x08, 0x21, 0x30, 0x84, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x01, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x51, 0x02, 0x19, 0x31, 0x84, 0x19, 0x32, 0x11, 0x53, 0x19, 0x74, 0x21, 0xD6, 0x21, 0xF7, 0x01, 0x19, 0xD7, 0x8A, 0x11, 0x96, 0x11, 0x95, 0x11, 0x96, 0x11, 0xB6, 0x11, 0xD6, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xB5, 0x19, 0x74, 0x11, 0x32, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x07, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x8D, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0x8D, 0x59, 0x4F, 0xB3, 0x37, 0xB2, 0xD5, 0xAA, 0x94, 0xAA, 0x73, 0xA2, 0x53, 0x92, 0xD2, 0xE6, 0xFF, 0xC6, 0xFE, 0xBE, 0xDD, 0xB6, 0xFD, 0x01, 0xAE, 0xBC, 0x81, 0xA6, 0xDC, 0xA6, 0xBC, 0x02, 0xA6, 0xDC, 0x89, 0xAE, 0xFD, 0xB6, 0xFD, 0xBE, 0xFE, 0xD6, 0xFF, 0x94, 0x15, 0x82, 0x10, 0x9A, 0x12, 0xAA, 0x13, 0xB2, 0x33, 0xBA, 0x34, 0x01, 0xC2, 0x34, 0x01, 0xCA, 0x34, 0x03, 0xCA, 0x14, 0x8C, 0xCA, 0x34, 0xC2, 0x14, 0xC2, 0x13, 0xBA, 0x13, 0xA2, + 0x52, 0xA3, 0x95, 0xC5, 0x9B, 0xC6, 0xBE, 0xB6, 0xDD, 0xAE, 0xDC, 0xAE, 0xFD, 0xAE, 0xDD, 0xA6, 0xDD, 0x0A, 0xA6, 0xDC, 0x89, 0xAE, 0xFC, 0xB7, 0x1D, 0xC7, 0x1E, 0xCE, 0x7E, 0x82, 0xF2, 0x8A, 0x31, 0x9A, 0x12, 0xAA, 0x33, 0xBA, 0x34, 0xC2, 0x34, 0x01, 0xCA, 0x34, 0x82, 0xCA, 0x14, 0xCA, 0x34, 0xD2, 0x34, 0x01, 0xCA, 0x13, 0x8A, 0xCA, 0x14, 0xCA, 0x34, 0xC2, 0x34, 0xC2, 0x33, 0xBA, 0x13, 0xAA, 0x32, 0xAB, 0x96, 0xCD, 0x9C, 0xC6, 0x7E, 0xB6, 0xBD, 0xAE, 0xBC, 0x01, 0xAE, 0xDC, 0x81, 0xAE, 0xFD, 0xA6, 0xFD, 0x01, 0xA6, 0xFC, 0x05, 0xA6, 0xDC, 0x8B, 0xA6, 0xFC, 0xAE, 0xFC, 0xAF, 0x1D, 0xAE, 0xFD, 0xBE, 0xFE, 0xCE, 0x7E, 0x83, 0x13, 0x8A, 0x31, 0xA2, 0x12, 0xAA, 0x33, 0xBA, 0x33, 0xC2, 0x34, 0x02, 0xCA, 0x34, 0x05, 0xCA, 0x14, 0x8E, 0xC2, 0x13, 0xC2, 0x33, 0xB2, 0x12, 0xAA, 0x93, 0xDD, 0xBD, 0xD6, 0x5E, 0xCE, 0x7E, 0xD6, 0x5E, 0xD5, 0x9C, 0x82, 0x51, 0x89, 0xF1, 0x99, 0xD1, 0xAA, 0x13, 0xB2, 0x33, 0xBA, 0x34, 0x01, 0xC2, 0x34, 0x80, 0xCA, 0x34, 0x03, 0xCA, 0x14, 0x01, 0xCA, 0x34, 0x81, 0xCA, 0x14, 0xD2, 0x14, 0x01, 0xCA, 0x14, 0x81, 0xD2, 0x14, 0xCA, 0x14, 0x01, 0xC9, 0xF4, 0x81, 0xCA, 0x14, 0xC9, 0xF4, 0x02, 0xCA, 0x14, 0x01, 0xC9, 0xF4, 0x02, 0xCA, 0x14, 0x80, 0xC9, 0xF4, 0x02, 0xCA, 0x14, 0x81, 0xD2, 0x14, 0xCA, 0x14, 0x01, 0xD2, 0x14, 0x01, 0xCA, 0x14, 0x8C, 0xCA, 0x34, 0xCA, 0x14, 0xCA, 0x34, 0xCA, 0x13, 0xC2, 0x13, 0xC2, 0x33, 0xC2, 0x13, 0xB2, 0x12, 0xA2, 0x32, 0x9B, 0x34, 0xDE, 0x9F, 0xC6, 0xBD, 0xBE, 0xBD, 0x01, + 0xB6, 0xDD, 0x81, 0xAE, 0xDD, 0xAE, 0xDC, 0x01, 0xAE, 0xBC, 0x01, 0xAE, 0xDC, 0x02, 0xAE, 0xFD, 0x8A, 0xB7, 0x1D, 0xC6, 0xFE, 0xB5, 0x3A, 0x7A, 0x50, 0x89, 0xF1, 0x99, 0xD1, 0xA9, 0xF2, 0xB2, 0x33, 0xBA, 0x33, 0xC2, 0x54, 0xC2, 0x34, 0x01, 0xCA, 0x34, 0x82, 0xCA, 0x14, 0xD2, 0x34, 0xD2, 0x14, 0x02, 0xCA, 0x14, 0x80, 0xD2, 0x14, 0x01, 0xD1, 0xF4, 0x80, 0xD2, 0x14, 0x04, 0xC9, 0xF4, 0x80, 0xCA, 0x14, 0x04, 0xC9, 0xF4, 0x03, 0xCA, 0x14, 0x01, 0xD2, 0x34, 0x01, 0xCA, 0x14, 0x81, 0xD2, 0x14, 0xD2, 0x34, 0x03, 0xCA, 0x14, 0x01, 0xC2, 0x14, 0x89, 0xBA, 0x13, 0xB2, 0x53, 0xAA, 0xF5, 0xF5, 0x9E, 0xED, 0x7E, 0xA2, 0xF4, 0x91, 0xD1, 0xA1, 0xD1, 0xB2, 0x13, 0xBA, 0x33, 0x01, 0xC2, 0x34, 0x84, 0xC2, 0x13, 0xCA, 0x13, 0xCA, 0x14, 0xCA, 0x34, 0xCA, 0x14, 0x01, 0xCA, 0x34, 0x02, 0xC2, 0x34, 0x86, 0xB1, 0xF2, 0x9A, 0x11, 0xB4, 0x37, 0xDE, 0x7E, 0xC6, 0xBD, 0xBE, 0xDD, 0xB6, 0xBD, 0x02, 0xB6, 0xBC, 0x87, 0xB6, 0xDD, 0xC6, 0xBE, 0xD6, 0x5E, 0x83, 0x12, 0x8A, 0x31, 0x9A, 0x12, 0xAA, 0x33, 0xB2, 0x33, 0x01, 0xC2, 0x54, 0x80, 0xC2, 0x34, 0x03, 0xCA, 0x34, 0x01, 0xCA, 0x14, 0x01, 0xC2, 0x13, 0x88, 0xC2, 0x33, 0xBA, 0x33, 0xA2, 0x72, 0xBC, 0xB8, 0xCE, 0x9E, 0xBE, 0xBD, 0xB6, 0xDD, 0xAE, 0xDC, 0xAE, 0xBC, 0x01, 0xAE, 0xDC, 0x89, 0xAE, 0xFC, 0xB6, 0xFD, 0xB7, 0x3E, 0xC6, 0xFF, 0xC5, 0xBC, 0x82, 0xB2, 0x8A, 0x11, 0x99, 0xD2, 0xA9, 0xF2, 0xB2, 0x33, 0x01, 0xC2, 0x54, 0x81, 0xC2, 0x34, 0xCA, 0x34, 0x07, 0xCA, 0x14, 0x03, 0xC9, 0xF4, 0x81, 0xD1, + 0xF4, 0xC9, 0xF4, 0x03, 0xC9, 0xF3, 0x02, 0xC9, 0xF4, 0x80, 0xC9, 0xF3, 0x01, 0xC9, 0xF4, 0x02, 0xCA, 0x14, 0x81, 0xCA, 0x34, 0xD2, 0x34, 0x03, 0xCA, 0x34, 0x80, 0xCA, 0x14, 0x02, 0xCA, 0x34, 0x84, 0xCA, 0x33, 0xC2, 0x33, 0xBA, 0x53, 0xBA, 0xD4, 0xFD, 0xDE, 0x01, 0xFE, 0x3E, 0x85, 0xFD, 0xFE, 0xBB, 0x14, 0xB2, 0x73, 0xBA, 0x33, 0xC2, 0x13, 0xCA, 0x14, 0x02, 0xCA, 0x34, 0x07, 0xD2, 0x34, 0x8C, 0xD2, 0x35, 0xD2, 0x14, 0xCA, 0x35, 0xCA, 0x57, 0xCA, 0x78, 0xC2, 0x99, 0xAA, 0xDC, 0x38, 0xB6, 0x31, 0x1A, 0x21, 0x5B, 0x19, 0x7C, 0x19, 0x7D, 0x11, 0x7D, 0x01, 0x19, 0x9D, 0x87, 0x21, 0x7C, 0x31, 0x5B, 0x41, 0x19, 0x59, 0x17, 0xA2, 0x3A, 0xB1, 0xF7, 0xB9, 0xD6, 0xC1, 0xD5, 0x01, 0xC1, 0xF5, 0x9B, 0xB9, 0xD5, 0xA9, 0xD5, 0x91, 0xD5, 0x72, 0x36, 0x53, 0x39, 0x4C, 0xBD, 0x3D, 0x9F, 0x25, 0xDF, 0x15, 0x9E, 0x0D, 0x9D, 0x0D, 0xBD, 0x0D, 0xFC, 0x06, 0x3A, 0x06, 0xB9, 0x0F, 0x5A, 0x0F, 0x7A, 0x07, 0x7A, 0x0F, 0x7A, 0x17, 0x9B, 0x1F, 0x7B, 0x37, 0x5C, 0x4F, 0x1D, 0x6E, 0x7D, 0x5B, 0xD6, 0x72, 0x73, 0x9A, 0x33, 0xAA, 0x14, 0xB1, 0xF4, 0x01, 0xB1, 0xB4, 0x01, 0xB1, 0xF4, 0x81, 0x80, 0xAF, 0x99, 0x93, 0x01, 0xA9, 0xF4, 0x01, 0xAA, 0x15, 0x87, 0x99, 0xF4, 0x68, 0xF0, 0x51, 0x10, 0x49, 0x31, 0x41, 0x51, 0x39, 0x51, 0x31, 0x31, 0x39, 0x51, 0x01, 0x31, 0x51, 0x80, 0x31, 0x71, 0x01, 0x29, 0x71, 0x01, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x0D, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, + 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x85, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x86, 0x21, 0x10, 0x19, 0x10, 0x19, 0x30, 0x19, 0x31, 0x19, 0x52, 0x19, 0x53, 0x19, 0x74, 0x01, 0x11, 0x95, 0x82, 0x09, 0x96, 0x11, 0xF8, 0x11, 0xD7, 0x01, 0x11, 0xB7, 0x82, 0x11, 0xD7, 0x11, 0xD6, 0x11, 0x74, 0x01, 0x11, 0x53, 0x01, 0x19, 0x52, 0x01, 0x19, 0x51, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x19, 0x53, 0x11, 0x33, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xB5, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x19, 0x11, 0x19, 0x32, 0x19, 0x54, 0x19, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x94, 0x09, 0x53, 0x11, 0x52, 0x11, 0x32, 0x04, 0x19, 0x32, 0x80, 0x19, 0x53, 0x01, 0x11, 0x53, 0x83, 0x11, 0x52, 0x11, 0x53, 0x19, 0x73, 0x19, 0x53, 0x01, 0x19, 0x52, 0x82, 0x19, 0x32, 0x19, 0x11, 0x11, 0x11, 0x01, 0x19, 0x31, 0x8E, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x18, 0x19, 0xF8, 0x19, 0xB7, 0x11, 0x75, 0x11, 0x34, 0x19, 0x32, 0x19, 0x52, 0x19, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, + 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x21, 0x0F, 0x02, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x05, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x19, 0x11, 0x83, 0x19, 0x32, 0x19, 0x53, 0x11, 0x75, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x84, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x30, 0x03, 0x21, 0x10, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x29, 0x10, 0x29, 0x30, 0x01, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x04, 0x29, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, + 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x19, 0x31, 0x02, 0x19, 0x32, 0x81, 0x19, 0x52, 0x19, 0x32, 0x05, 0x11, 0x32, 0x05, 0x11, 0x12, 0x80, 0x10, 0xF2, 0x07, 0x11, 0x12, 0x01, 0x09, 0x12, 0x02, 0x11, 0x12, 0x80, 0x09, 0x12, 0x07, 0x11, 0x12, 0x80, 0x11, 0x13, 0x08, 0x11, 0x33, 0x01, 0x11, 0x53, 0x80, 0x11, 0x54, 0x01, 0x11, 0x75, 0x80, 0x11, 0x96, 0x02, 0x11, 0xB7, 0x81, 0x09, 0x97, 0x09, 0x76, 0x01, 0x09, 0x96, 0x84, 0x09, 0x75, 0x01, 0x54, 0x01, 0x34, 0x01, 0x55, 0x09, 0x96, 0x01, 0x19, 0xD7, 0x86, 0x19, 0xB6, 0x19, 0x74, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x83, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x10, 0x21, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x82, 0x29, 0x31, 0x21, 0x11, 0x21, 0x31, 0x02, 0x21, 0x10, 0x01, 0x21, 0x11, 0x82, 0x21, 0x31, 0x21, 0x30, 0x19, + 0x10, 0x04, 0x21, 0x11, 0x83, 0x21, 0x31, 0x19, 0x11, 0x21, 0x31, 0x21, 0x11, 0x04, 0x19, 0x11, 0x88, 0x19, 0x10, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x11, 0x31, 0x11, 0x11, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x81, 0x11, 0xB6, 0x09, 0x96, 0x01, 0x09, 0x76, 0x80, 0x09, 0x96, 0x01, 0x09, 0x75, 0x85, 0x11, 0xD6, 0x1A, 0x17, 0x19, 0xF6, 0x19, 0x95, 0x11, 0x33, 0x19, 0x32, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x08, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x90, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0x8D, 0x51, 0x2F, 0xAB, 0x16, 0xB2, 0xB5, 0xAA, 0x74, 0xAA, 0x53, 0xA2, 0x53, 0x8A, 0x92, 0xE6, 0xFF, 0xC6, 0xDD, 0xBE, 0xFD, 0xB6, 0xFD, 0x01, 0xAE, 0xBC, 0x80, 0xAE, 0xDC, 0x01, 0xA6, 0xDC, 0x80, 0xAE, 0xDC, 0x01, 0xAE, 0xFD, 0x89, 0xB7, 0x1D, 0xBF, 0x1E, 0xD6, 0xFF, 0x94, 0x15, 0x82, 0x30, 0x9A, 0x12, 0xA2, 0x33, 0xB2, 0x33, 0xBA, 0x34, 0xC2, 0x34, 0x04, 0xCA, 0x34, 0x01, 0xD2, 0x34, 0x01, 0xCA, 0x34, 0x86, 0xC2, 0x34, 0xBA, 0x13, 0xAA, 0x73, 0xA3, 0x75, 0xC5, 0x9B, 0xCE, 0xBE, 0xB6, 0xDD, 0x03, 0xAE, 0xDC, 0x08, 0xA6, 0xDC, 0x01, 0xAE, 0xDC, 0x89, 0xAE, 0xFC, 0xB7, 0x1D, 0xC6, 0xFE, 0xCE, 0x7E, 0x83, 0x12, 0x8A, 0x31, 0x9A, 0x12, 0xAA, 0x33, 0xBA, 0x34, 0xC2, 0x34, 0x02, 0xCA, 0x34, 0x02, 0xD2, 0x34, 0x02, 0xCA, 0x34, 0x88, 0xC2, 0x34, 0xC2, 0x33, 0xB2, 0x13, 0xA2, 0x52, 0xB3, 0xF7, 0xCD, 0xDC, 0xC6, 0x9D, 0xB6, 0x9D, 0xB6, + 0xBC, 0x02, 0xAE, 0xDC, 0x03, 0xA6, 0xFC, 0x04, 0xA6, 0xDC, 0x81, 0xA6, 0xFC, 0xAE, 0xFC, 0x01, 0xAE, 0xFD, 0x88, 0xBE, 0xFE, 0xCE, 0x5D, 0x83, 0x12, 0x8A, 0x51, 0xA2, 0x32, 0xAA, 0x53, 0xBA, 0x33, 0xC2, 0x54, 0xCA, 0x54, 0x03, 0xCA, 0x34, 0x80, 0xCA, 0x14, 0x01, 0xCA, 0x34, 0x80, 0xCA, 0x14, 0x01, 0xC2, 0x33, 0x90, 0xBA, 0x33, 0xAA, 0x93, 0xE5, 0xDD, 0xD6, 0x3D, 0xD6, 0x5E, 0xE6, 0x7F, 0x9B, 0x54, 0x89, 0xF0, 0x99, 0xF1, 0xAA, 0x12, 0xB2, 0x33, 0xBA, 0x34, 0xC2, 0x54, 0xCA, 0x54, 0xCA, 0x34, 0xCA, 0x33, 0xCA, 0x34, 0x01, 0xCA, 0x13, 0x03, 0xD2, 0x34, 0x81, 0xCA, 0x34, 0xD2, 0x34, 0x04, 0xCA, 0x14, 0x81, 0xCA, 0x13, 0xCA, 0x14, 0x04, 0xC2, 0x13, 0x03, 0xCA, 0x14, 0x02, 0xCA, 0x34, 0x80, 0xCA, 0x14, 0x03, 0xD2, 0x34, 0x01, 0xCA, 0x14, 0x01, 0xCA, 0x33, 0x8E, 0xCA, 0x34, 0xCA, 0x33, 0xCA, 0x34, 0xC2, 0x34, 0xBA, 0x33, 0xB2, 0x32, 0x9A, 0x72, 0xB4, 0x98, 0xD6, 0x9E, 0xC6, 0xDD, 0xB6, 0xDD, 0xB6, 0xFD, 0xB6, 0xDD, 0xAE, 0xDC, 0xAE, 0xBC, 0x02, 0xAE, 0xDC, 0x8A, 0xAE, 0xFD, 0xAF, 0x1D, 0xB7, 0x1D, 0xBF, 0x1E, 0xD6, 0xDE, 0x82, 0xF2, 0x82, 0x10, 0x9A, 0x11, 0xAA, 0x12, 0xB2, 0x33, 0xBA, 0x53, 0x01, 0xC2, 0x54, 0x03, 0xCA, 0x34, 0x81, 0xD2, 0x34, 0xD2, 0x14, 0x01, 0xD2, 0x34, 0x08, 0xCA, 0x14, 0x02, 0xC2, 0x13, 0x03, 0xCA, 0x14, 0x01, 0xCA, 0x34, 0x01, 0xCA, 0x14, 0x82, 0xCA, 0x34, 0xD2, 0x34, 0xCA, 0x34, 0x01, 0xD2, 0x34, 0x05, 0xCA, 0x34, 0x01, 0xC2, 0x34, 0x89, 0xBA, 0x54, 0xAA, 0x73, 0xEC, 0xBC, 0xED, 0x1D, 0xAA, 0xF5, + 0x99, 0xF1, 0xA1, 0xD1, 0xB2, 0x13, 0xBA, 0x34, 0xC2, 0x34, 0x08, 0xCA, 0x34, 0x86, 0xC2, 0x34, 0xC2, 0x54, 0xB2, 0x12, 0x9A, 0x11, 0xB4, 0x37, 0xDE, 0x9E, 0xCE, 0xBD, 0x01, 0xBE, 0xBD, 0x01, 0xB6, 0xBC, 0x8A, 0xB6, 0xDC, 0xBE, 0xDD, 0xC6, 0xDE, 0xD6, 0x5E, 0x83, 0x12, 0x8A, 0x31, 0x9A, 0x32, 0xAA, 0x33, 0xB2, 0x33, 0xBA, 0x54, 0xC2, 0x54, 0x01, 0xCA, 0x54, 0x04, 0xCA, 0x34, 0x89, 0xCA, 0x14, 0xC2, 0x13, 0xBA, 0x13, 0xB2, 0x12, 0xA2, 0x72, 0xBC, 0xD8, 0xCE, 0x9D, 0xBE, 0xDD, 0xB6, 0xDD, 0xB6, 0xDC, 0x02, 0xAE, 0xDC, 0x01, 0xB7, 0x1D, 0x8A, 0xBF, 0x1E, 0xD6, 0xDF, 0x93, 0x94, 0x82, 0x31, 0x99, 0xF1, 0xA1, 0xD2, 0xB2, 0x33, 0xBA, 0x54, 0xC2, 0x74, 0xCA, 0x74, 0xCA, 0x54, 0x04, 0xCA, 0x34, 0x01, 0xD2, 0x34, 0x80, 0xCA, 0x34, 0x04, 0xCA, 0x14, 0x82, 0xCA, 0x13, 0xCA, 0x14, 0xCA, 0x13, 0x02, 0xC2, 0x13, 0x81, 0xC1, 0xF3, 0xC9, 0xF3, 0x02, 0xC9, 0xF4, 0x02, 0xCA, 0x14, 0x01, 0xCA, 0x34, 0x82, 0xD2, 0x34, 0xCA, 0x34, 0xD2, 0x34, 0x05, 0xCA, 0x34, 0x8D, 0xCA, 0x33, 0xC2, 0x33, 0xBA, 0x53, 0xB2, 0x72, 0xF4, 0xFB, 0xFE, 0x5F, 0xFE, 0x7E, 0xFE, 0x7F, 0xFD, 0xFE, 0xBB, 0x34, 0xB2, 0x32, 0xBA, 0x12, 0xC2, 0x13, 0xCA, 0x13, 0x01, 0xCA, 0x14, 0x80, 0xCA, 0x34, 0x07, 0xD2, 0x34, 0xB3, 0xD2, 0x15, 0xD2, 0x35, 0xCA, 0x36, 0xCA, 0x58, 0xC2, 0x99, 0xAA, 0xDC, 0x40, 0xB7, 0x31, 0x1A, 0x21, 0x5B, 0x19, 0x7C, 0x11, 0x7D, 0x11, 0x9D, 0x11, 0x7D, 0x19, 0x9D, 0x21, 0x9D, 0x29, 0x5C, 0x39, 0x3A, 0x48, 0xD7, 0x91, 0xD9, 0xB2, 0x18, 0xB1, 0xD6, + 0xC1, 0xF6, 0xC1, 0xD5, 0xC1, 0xF5, 0xB9, 0xD5, 0xB1, 0xF5, 0x99, 0xF6, 0x7A, 0x36, 0x5A, 0xF8, 0x54, 0x5C, 0x3D, 0x9F, 0x25, 0xDF, 0x1D, 0x9E, 0x15, 0xBE, 0x0D, 0xBD, 0x0D, 0xFC, 0x06, 0x5A, 0x06, 0xB9, 0x0F, 0x5A, 0x0F, 0x7A, 0x07, 0x7A, 0x0F, 0x9A, 0x17, 0x9A, 0x1F, 0x7B, 0x2F, 0x3C, 0x4E, 0xDC, 0x76, 0x7D, 0x5B, 0xB5, 0x72, 0x73, 0x9A, 0x33, 0xA1, 0xD3, 0xB1, 0xD4, 0x01, 0xA9, 0xB4, 0x8D, 0xA9, 0xD4, 0xB2, 0x15, 0x80, 0xD0, 0x99, 0x93, 0xA1, 0xD4, 0xAA, 0x15, 0xAA, 0x14, 0xAA, 0x35, 0x9A, 0x15, 0x60, 0xD0, 0x50, 0xF0, 0x49, 0x51, 0x41, 0x51, 0x39, 0x71, 0x01, 0x39, 0x51, 0x80, 0x31, 0x51, 0x02, 0x31, 0x71, 0x80, 0x29, 0x51, 0x02, 0x29, 0x50, 0x0D, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x88, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x50, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x30, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x19, 0x73, 0x19, 0x74, 0x11, 0x75, 0x11, 0x96, 0x01, 0x11, 0xD7, 0x83, 0x11, 0xB7, 0x09, 0x96, 0x11, 0xD6, 0x11, 0x95, 0x01, 0x11, 0x53, 0x83, 0x11, 0x32, 0x19, 0x52, 0x19, 0x72, 0x19, 0x51, 0x02, 0x19, 0x31, 0x80, 0x19, 0x32, + 0x01, 0x11, 0x33, 0x8C, 0x19, 0xB6, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x12, 0x19, 0x32, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x19, 0x33, 0x19, 0x74, 0x11, 0x95, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xF6, 0x11, 0xB5, 0x11, 0x74, 0x09, 0x32, 0x01, 0x11, 0x32, 0x02, 0x19, 0x32, 0x80, 0x19, 0x52, 0x01, 0x19, 0x32, 0x03, 0x11, 0x32, 0x80, 0x19, 0x32, 0x01, 0x11, 0x32, 0x01, 0x11, 0x11, 0x01, 0x11, 0x31, 0x8D, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x22, 0x18, 0x21, 0xF8, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x03, 0x29, 0x10, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x30, 0x01, 0x21, 0x10, 0x85, 0x21, 0x11, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x21, 0xD7, 0x01, 0x21, 0xF7, 0x84, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, + 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x03, 0x21, 0x10, 0x85, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x05, 0x29, 0x10, 0x01, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x19, 0x30, 0x02, 0x19, 0x31, 0x85, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x19, 0x73, 0x19, 0x74, 0x11, 0x53, 0x08, 0x19, 0x74, 0x80, 0x19, 0x95, 0x04, 0x19, 0x94, 0x80, 0x19, 0x95, 0x01, 0x19, 0x94, 0x02, 0x19, 0x95, 0x82, 0x19, 0xB5, 0x19, 0x95, 0x19, 0xB5, 0x04, 0x19, 0x95, 0x04, 0x21, 0xB5, 0x81, 0x21, 0xD5, 0x21, 0xD6, 0x02, 0x21, 0xB5, 0x01, 0x21, 0xD6, 0x80, 0x19, 0xD5, 0x01, 0x19, 0xB5, 0x85, 0x19, 0xB6, 0x19, 0x95, 0x19, 0xB5, 0x11, 0x95, 0x11, 0x96, 0x11, 0xB6, 0x01, 0x11, 0xB7, 0x82, 0x11, 0xD7, 0x11, 0xD8, 0x09, 0x97, 0x01, 0x09, 0x76, 0x81, 0x09, 0x96, 0x09, 0x75, 0x01, 0x01, 0x34, 0x89, 0x09, 0x55, 0x11, 0xB7, 0x19, 0xF8, 0x19, 0xD7, 0x21, 0xD7, 0x19, 0x95, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x02, 0x21, + 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x87, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x02, 0x21, 0x11, 0x82, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x01, 0x18, 0xF1, 0x01, 0x19, 0x11, 0x81, 0x11, 0x11, 0x10, 0xF1, 0x01, 0x19, 0x11, 0x80, 0x10, 0xF1, 0x01, 0x19, 0x11, 0x80, 0x11, 0x11, 0x06, 0x10, 0xF1, 0x80, 0x10, 0xF0, 0x02, 0x08, 0xF0, 0x84, 0x08, 0xF1, 0x09, 0x32, 0x11, 0x74, 0x11, 0xB5, 0x11, 0xB6, 0x02, 0x11, 0xB7, 0x80, 0x09, 0x96, 0x01, 0x01, 0x55, 0x01, 0x09, 0x75, 0x01, 0x09, 0x96, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xB5, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x0B, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x90, 0x29, 0x2F, 0x29, 0x0F, 0x28, 0xEE, 0x30, 0x8D, 0x51, 0x2F, 0xAB, 0x16, 0xB2, 0x94, 0xAA, 0x53, 0xAA, 0x33, 0xA2, 0x32, 0x8A, 0x71, 0xEF, 0x1F, 0xCE, 0xFD, 0xBE, 0xDD, 0xBE, 0xFD, 0xB6, 0xBC, 0xAE, 0xDC, 0x04, 0xAE, 0xFC, 0x8A, 0xB6, 0xFD, 0xB7, 0x1D, 0xC7, + 0x1E, 0xD7, 0x1F, 0x9C, 0x36, 0x7A, 0x10, 0x92, 0x12, 0xA2, 0x12, 0xB2, 0x33, 0xBA, 0x54, 0xC2, 0x54, 0x02, 0xCA, 0x54, 0x02, 0xD2, 0x54, 0x80, 0xD2, 0x34, 0x01, 0xCA, 0x34, 0x87, 0xC2, 0x54, 0xBA, 0x53, 0xAA, 0x73, 0xAB, 0xB5, 0xCD, 0xBB, 0xCE, 0xBE, 0xBE, 0xDD, 0xB6, 0xDC, 0x02, 0xAE, 0xDC, 0x80, 0xA6, 0xDC, 0x01, 0xAE, 0xDC, 0x03, 0xA6, 0xDC, 0x02, 0xAE, 0xDC, 0x8A, 0xAE, 0xFC, 0xB6, 0xFC, 0xB7, 0x1D, 0xC7, 0x1E, 0xD6, 0x9E, 0x83, 0x12, 0x8A, 0x51, 0x9A, 0x12, 0xAA, 0x53, 0xBA, 0x54, 0xC2, 0x54, 0x01, 0xCA, 0x54, 0x02, 0xD2, 0x54, 0x01, 0xD2, 0x34, 0x01, 0xCA, 0x34, 0x88, 0xC2, 0x34, 0xC2, 0x54, 0xBA, 0x33, 0xAA, 0x93, 0xBC, 0x78, 0xD6, 0x3D, 0xC6, 0x9D, 0xBE, 0xDD, 0xB6, 0xDC, 0x01, 0xAE, 0xDC, 0x03, 0xAE, 0xFC, 0x81, 0xA6, 0xFC, 0xAE, 0xFC, 0x01, 0xA6, 0xDC, 0x81, 0xA6, 0xFC, 0xA6, 0xDC, 0x02, 0xAE, 0xFC, 0x88, 0xB6, 0xFD, 0xBE, 0xDD, 0xCE, 0x5D, 0x83, 0x12, 0x8A, 0x51, 0xA2, 0x32, 0xAA, 0x53, 0xBA, 0x54, 0xC2, 0x54, 0x02, 0xCA, 0x54, 0x03, 0xCA, 0x34, 0x81, 0xCA, 0x54, 0xCA, 0x34, 0x01, 0xC2, 0x33, 0x8A, 0xBA, 0x33, 0xAA, 0xB3, 0xED, 0xFE, 0xDE, 0x1E, 0xE6, 0x3E, 0xCD, 0x3B, 0x79, 0xCF, 0x91, 0xF1, 0xA2, 0x12, 0xB2, 0x53, 0xBA, 0x54, 0x01, 0xC2, 0x54, 0x80, 0xCA, 0x74, 0x01, 0xCA, 0x54, 0x01, 0xCA, 0x34, 0x02, 0xD2, 0x54, 0x03, 0xD2, 0x34, 0x01, 0xCA, 0x34, 0x01, 0xCA, 0x14, 0x83, 0xC2, 0x13, 0xC2, 0x33, 0xBA, 0x33, 0xBA, 0x32, 0x01, 0xB2, 0x32, 0x80, 0xB2, 0x12, 0x01, 0xBA, 0x13, 0x81, 0xC2, 0x13, 0xC2, 0x34, + 0x04, 0xCA, 0x34, 0x82, 0xD2, 0x54, 0xD2, 0x55, 0xD2, 0x54, 0x02, 0xD2, 0x34, 0x02, 0xCA, 0x34, 0x02, 0xCA, 0x54, 0x89, 0xC2, 0x54, 0xBA, 0x33, 0xAA, 0x52, 0x9A, 0xF3, 0xDD, 0xDD, 0xCE, 0xBE, 0xBE, 0xFD, 0xBE, 0xDD, 0xB6, 0xFD, 0xB6, 0xDC, 0x03, 0xAE, 0xDC, 0x8D, 0xB6, 0xFC, 0xB7, 0x1D, 0xBF, 0x1D, 0xCF, 0x1E, 0xBD, 0x9B, 0x71, 0xCE, 0x91, 0xF1, 0xA2, 0x32, 0xB2, 0x53, 0xBA, 0x53, 0xBA, 0x54, 0xC2, 0x74, 0xCA, 0x74, 0xCA, 0x54, 0x01, 0xCA, 0x34, 0x80, 0xD2, 0x54, 0x07, 0xD2, 0x34, 0x02, 0xCA, 0x34, 0x01, 0xC2, 0x33, 0x01, 0xBA, 0x33, 0x01, 0xBA, 0x13, 0x80, 0xC2, 0x13, 0x04, 0xCA, 0x34, 0x84, 0xCA, 0x14, 0xD2, 0x34, 0xD2, 0x55, 0xD2, 0x34, 0xD2, 0x54, 0x01, 0xD2, 0x34, 0x05, 0xCA, 0x54, 0x01, 0xC2, 0x54, 0x86, 0xBA, 0x74, 0xC3, 0x16, 0xF5, 0x1D, 0xB3, 0x15, 0x99, 0xF1, 0xA1, 0xF2, 0xB2, 0x13, 0x01, 0xC2, 0x54, 0x82, 0xC2, 0x34, 0xCA, 0x54, 0xCA, 0x34, 0x01, 0xCA, 0x54, 0x83, 0xD2, 0x54, 0xCA, 0x34, 0xCA, 0x55, 0xCA, 0x54, 0x01, 0xC2, 0x54, 0x87, 0xBA, 0x13, 0xA2, 0x32, 0xB4, 0x57, 0xDE, 0x9E, 0xCE, 0xBD, 0xC6, 0xFD, 0xBE, 0xBC, 0xB6, 0xBC, 0x01, 0xB6, 0xDC, 0x87, 0xBE, 0xDD, 0xC6, 0xDD, 0xD6, 0x7E, 0x83, 0x12, 0x8A, 0x51, 0x9A, 0x32, 0xAA, 0x33, 0xB2, 0x53, 0x01, 0xC2, 0x54, 0x06, 0xCA, 0x54, 0x80, 0xCA, 0x34, 0x01, 0xC2, 0x33, 0x84, 0xBA, 0x33, 0xAA, 0xD3, 0xBC, 0xF9, 0xD6, 0xBD, 0xC6, 0xDD, 0x04, 0xB6, 0xDC, 0x88, 0xB7, 0x1D, 0xBF, 0x1D, 0xC6, 0xFE, 0xC5, 0xFC, 0x7A, 0x30, 0x91, 0xF1, 0x99, 0xF2, 0xA9, 0xF2, 0xBA, + 0x33, 0x01, 0xC2, 0x74, 0x80, 0xCA, 0x74, 0x02, 0xCA, 0x54, 0x02, 0xD2, 0x54, 0x81, 0xCA, 0x34, 0xD2, 0x54, 0x03, 0xCA, 0x34, 0x88, 0xCA, 0x13, 0xCA, 0x34, 0xCA, 0x33, 0xC2, 0x33, 0xBA, 0x33, 0xBA, 0x32, 0xB2, 0x32, 0xB2, 0x12, 0xBA, 0x12, 0x01, 0xC2, 0x13, 0x80, 0xCA, 0x13, 0x01, 0xCA, 0x14, 0x03, 0xCA, 0x34, 0x04, 0xD2, 0x54, 0x81, 0xCA, 0x54, 0xD2, 0x54, 0x02, 0xCA, 0x54, 0x85, 0xC2, 0x33, 0xC2, 0x53, 0xBA, 0x73, 0xB2, 0xF3, 0xFE, 0x7F, 0xFE, 0x7E, 0x01, 0xFE, 0x9E, 0x88, 0xFE, 0x3E, 0xBB, 0x74, 0xAA, 0x11, 0xBA, 0x12, 0xC1, 0xF3, 0xC9, 0xF3, 0xCA, 0x13, 0xCA, 0x14, 0xD2, 0x14, 0x06, 0xD2, 0x34, 0x89, 0xCA, 0x14, 0xCA, 0x15, 0xCA, 0x36, 0xC2, 0x58, 0xBA, 0x79, 0xAA, 0xDC, 0x40, 0xB7, 0x29, 0x1A, 0x21, 0x5B, 0x19, 0x7C, 0x03, 0x11, 0x7D, 0x87, 0x21, 0x9D, 0x29, 0x9D, 0x31, 0x3A, 0x40, 0xF8, 0x71, 0x78, 0xA2, 0x19, 0xA9, 0xB6, 0xB9, 0xF6, 0x01, 0xC1, 0xD5, 0xA1, 0xB9, 0xD5, 0xB1, 0xF6, 0xA1, 0xF6, 0x82, 0x37, 0x62, 0xD8, 0x4B, 0xDB, 0x45, 0x7F, 0x2D, 0xDF, 0x1D, 0xBE, 0x15, 0xBE, 0x0D, 0xDD, 0x0D, 0xFC, 0x06, 0x5A, 0x06, 0xDA, 0x07, 0x3A, 0x07, 0x59, 0x0F, 0x7A, 0x0F, 0x9A, 0x17, 0x7A, 0x1F, 0x5B, 0x37, 0x5C, 0x4E, 0xFD, 0x76, 0x7D, 0x5B, 0xD6, 0x7A, 0x73, 0x9A, 0x13, 0xAA, 0x14, 0xA9, 0xD4, 0xA9, 0xB3, 0xA9, 0xB4, 0xA9, 0xB3, 0xA1, 0x93, 0x80, 0xAF, 0xA1, 0xF4, 0x01, 0xA1, 0xD4, 0x86, 0xA1, 0xF4, 0x99, 0xF4, 0x9A, 0x35, 0x61, 0x10, 0x51, 0x10, 0x41, 0x30, 0x41, 0x71, 0x01, 0x39, 0x71, 0x81, 0x39, 0x51, 0x39, 0x71, + 0x01, 0x31, 0x51, 0x01, 0x29, 0x51, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x50, 0x08, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x05, 0x29, 0x30, 0x07, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x96, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x19, 0x52, 0x19, 0x73, 0x11, 0x54, 0x11, 0x75, 0x11, 0xD7, 0x11, 0xD8, 0x09, 0xB7, 0x11, 0xB7, 0x11, 0x95, 0x09, 0x54, 0x11, 0x53, 0x11, 0x52, 0x19, 0x52, 0x19, 0x51, 0x19, 0x71, 0x19, 0x51, 0x19, 0x10, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x19, 0x53, 0x11, 0x33, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x83, 0x19, 0x95, 0x11, 0x12, 0x11, 0x11, 0x21, 0x31, 0x03, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8B, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x74, 0x11, 0xB6, 0x11, 0xD6, 0x19, 0xF7, 0x19, 0xF6, 0x11, 0xB5, 0x09, 0x33, 0x11, 0x33, 0x01, 0x11, 0x32, 0x85, 0x19, 0x32, 0x19, 0x52, 0x19, 0x53, 0x19, 0x52, 0x19, 0x32, 0x11, 0x32, 0x02, 0x11, 0x31, 0x01, 0x19, 0x32, 0x02, 0x11, 0x32, 0x8D, 0x11, 0x52, 0x11, 0x53, 0x11, 0x33, 0x11, 0x74, 0x11, 0x95, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x75, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x21, 0x31, + 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x05, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x86, 0x21, 0x11, 0x19, 0x31, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB6, 0x21, 0xF7, 0x01, 0x21, 0xD7, 0x85, 0x19, 0x95, 0x19, 0x74, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x10, 0x29, 0x30, 0x02, 0x21, 0x10, 0x84, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, + 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x10, 0x02, 0x29, 0x10, 0x03, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x01, 0x19, 0x31, 0x85, 0x19, 0x11, 0x19, 0x12, 0x11, 0x32, 0x19, 0x53, 0x19, 0xB5, 0x21, 0xF6, 0x01, 0x2A, 0x37, 0x81, 0x32, 0x57, 0x2A, 0x57, 0x01, 0x32, 0x58, 0x01, 0x32, 0x78, 0x80, 0x3A, 0x78, 0x02, 0x32, 0x58, 0x02, 0x32, 0x78, 0x08, 0x32, 0x58, 0x80, 0x32, 0x78, 0x01, 0x32, 0x58, 0x81, 0x2A, 0x37, 0x32, 0x58, 0x01, 0x2A, 0x58, 0x01, 0x32, 0x58, 0x86, 0x2A, 0x37, 0x32, 0x58, 0x2A, 0x38, 0x32, 0x38, 0x2A, 0x37, 0x32, 0x38, 0x2A, 0x38, 0x01, 0x2A, 0x37, 0x02, 0x2A, 0x17, 0x01, 0x22, 0x17, 0x81, 0x21, 0xF7, 0x21, 0xF6, 0x01, 0x19, 0xD6, 0x81, 0x19, 0xD7, 0x11, 0xB6, 0x01, 0x11, 0xD7, 0x92, 0x11, 0xB7, 0x11, 0xD7, 0x09, 0x96, 0x09, 0x76, 0x09, 0x55, 0x01, 0x55, 0x09, 0x55, 0x01, 0x34, 0x09, 0x54, 0x09, 0x55, 0x19, 0xB7, 0x19, 0xD8, 0x21, 0xF8, 0x21, 0xF7, 0x19, 0x74, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, + 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x51, 0x82, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x82, 0x11, 0x12, 0x10, 0xF2, 0x08, 0xF2, 0x02, 0x09, 0x12, 0x80, 0x08, 0xF2, 0x02, 0x11, 0x12, 0x02, 0x09, 0x12, 0x02, 0x08, 0xF2, 0x04, 0x09, 0x12, 0x84, 0x09, 0x32, 0x09, 0x53, 0x09, 0x73, 0x11, 0x94, 0x11, 0xB5, 0x01, 0x11, 0xB6, 0x83, 0x11, 0x96, 0x11, 0x97, 0x09, 0x96, 0x09, 0x76, 0x03, 0x01, 0x55, 0x01, 0x09, 0x75, 0x86, 0x11, 0xF7, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x8C, 0x29, 0x2F, 0x29, 0x0F, 0x28, 0xEE, 0x28, 0x8D, 0x51, 0x0F, 0xAA, 0xF6, 0xB2, 0x94, 0xAA, 0x53, 0xAA, 0x33, 0xA2, 0x32, 0x8A, 0x71, 0xEF, 0x1F, 0xCE, 0xFD, 0x01, 0xC6, 0xFD, 0x01, 0xB6, 0xDC, 0x81, 0xB6, 0xFC, 0xB7, 0x1C, 0x02, 0xAE, 0xFC, 0x89, 0xB7, 0x1D, 0xBF, 0x1D, 0xC7, 0x1E, 0xDF, 0x3F, 0x94, 0x15, 0x7A, 0x10, 0x92, 0x11, 0xA2, 0x32, 0xB2, 0x53, 0xC2, 0x74, 0x01, 0xCA, 0x74, 0x01, 0xCA, 0x54, 0x82, 0xD2, 0x54, 0xD2, 0x75, 0xD2, 0x54, 0x02, 0xCA, 0x54, 0x86, 0xC2, 0x74, 0xBA, 0x74, 0xAA, 0x93, 0xAB, 0xD5, 0xCD, 0xDB, 0xCE, 0xDE, + 0xC7, 0x1D, 0x02, 0xB6, 0xFC, 0x05, 0xAE, 0xFC, 0x01, 0xAE, 0xDC, 0x81, 0xAE, 0xFC, 0xAE, 0xDC, 0x01, 0xAE, 0xFC, 0x8A, 0xB7, 0x1C, 0xBF, 0x1D, 0xC7, 0x1D, 0xD6, 0x9E, 0x83, 0x12, 0x8A, 0x51, 0x9A, 0x32, 0xAA, 0x53, 0xBA, 0x54, 0xC2, 0x54, 0xCA, 0x74, 0x01, 0xCA, 0x54, 0x03, 0xD2, 0x54, 0x81, 0xCA, 0x54, 0xCA, 0x34, 0x01, 0xC2, 0x54, 0x87, 0xBA, 0x53, 0xAA, 0xB3, 0xC4, 0xB9, 0xD6, 0x7D, 0xCE, 0xDD, 0xBE, 0xFD, 0xB6, 0xFC, 0xB6, 0xDC, 0x06, 0xAE, 0xFC, 0x01, 0xAE, 0xDC, 0x02, 0xAE, 0xFC, 0x01, 0xB7, 0x1C, 0x89, 0xBF, 0x1D, 0xC6, 0xDD, 0xD6, 0x7E, 0x83, 0x12, 0x8A, 0x51, 0x9A, 0x32, 0xAA, 0x53, 0xBA, 0x54, 0xC2, 0x74, 0xCA, 0x74, 0x02, 0xCA, 0x54, 0x01, 0xD2, 0x55, 0x90, 0xD2, 0x54, 0xD2, 0x74, 0xCA, 0x54, 0xC2, 0x54, 0xC2, 0x53, 0xBA, 0x53, 0xB2, 0xD4, 0xED, 0xFE, 0xE5, 0xFE, 0xE5, 0xDE, 0x9A, 0xF3, 0x92, 0x11, 0x99, 0xF1, 0xB2, 0x53, 0xBA, 0x74, 0xC2, 0x74, 0xC2, 0x54, 0x01, 0xCA, 0x74, 0x01, 0xCA, 0x54, 0x05, 0xD2, 0x54, 0x03, 0xCA, 0x34, 0x80, 0xCA, 0x54, 0x01, 0xC2, 0x53, 0x89, 0xB2, 0x52, 0xAA, 0x72, 0xB2, 0xD2, 0xC3, 0xB5, 0xD4, 0x58, 0xE4, 0xB9, 0xD4, 0x37, 0xB2, 0xD3, 0xA2, 0x31, 0xB2, 0x32, 0x01, 0xBA, 0x33, 0x01, 0xC2, 0x54, 0x02, 0xCA, 0x54, 0x06, 0xD2, 0x54, 0x04, 0xCA, 0x54, 0x87, 0xC2, 0x74, 0xB2, 0x53, 0xA2, 0x72, 0xA3, 0x95, 0xE6, 0xFF, 0xCE, 0xDD, 0xBE, 0xDD, 0xBE, 0xFC, 0x03, 0xB6, 0xDC, 0x8B, 0xB6, 0xFC, 0xB7, 0x1D, 0xBF, 0x1D, 0xC7, 0x1E, 0xD6, 0xFF, 0x8B, 0x93, 0x82, 0x10, 0x99, 0xF1, 0xAA, 0x33, + 0xB2, 0x53, 0xBA, 0x74, 0xC2, 0x74, 0x01, 0xCA, 0x74, 0x82, 0xD2, 0x74, 0xD2, 0x54, 0xD2, 0x74, 0x03, 0xD2, 0x54, 0x83, 0xD2, 0x34, 0xD2, 0x54, 0xD2, 0x34, 0xD2, 0x54, 0x01, 0xCA, 0x54, 0x88, 0xC2, 0x74, 0xBA, 0x73, 0xB2, 0x92, 0xAA, 0x92, 0xBB, 0x54, 0xCB, 0xD6, 0xCB, 0xB6, 0xAA, 0x51, 0xB2, 0x52, 0x01, 0xBA, 0x33, 0x81, 0xC2, 0x34, 0xCA, 0x34, 0x01, 0xCA, 0x54, 0x02, 0xD2, 0x55, 0x80, 0xD2, 0x54, 0x01, 0xD2, 0x55, 0x82, 0xD2, 0x75, 0xCA, 0x54, 0xD2, 0x54, 0x01, 0xCA, 0x54, 0x01, 0xCA, 0x74, 0x01, 0xC2, 0x74, 0x85, 0xB2, 0x74, 0xEC, 0x5B, 0xBB, 0x16, 0x99, 0xD1, 0xA1, 0xF2, 0xB2, 0x33, 0x01, 0xC2, 0x54, 0x02, 0xCA, 0x54, 0x01, 0xD2, 0x54, 0x01, 0xD2, 0x74, 0x80, 0xCA, 0x75, 0x01, 0xCA, 0x74, 0x86, 0xC2, 0x54, 0xBA, 0x33, 0xA2, 0x52, 0xB4, 0x57, 0xDE, 0xBE, 0xCE, 0xDE, 0xC6, 0xFD, 0x01, 0xBE, 0xDC, 0x8A, 0xBE, 0xFD, 0xBE, 0xFC, 0xBE, 0xFD, 0xCE, 0xDD, 0xD6, 0x7E, 0x83, 0x12, 0x8A, 0x51, 0x9A, 0x32, 0xAA, 0x33, 0xB2, 0x53, 0xC2, 0x74, 0x02, 0xCA, 0x74, 0x81, 0xCA, 0x54, 0xD2, 0x54, 0x03, 0xCA, 0x54, 0x95, 0xCA, 0x34, 0xC2, 0x33, 0xBA, 0x53, 0xA2, 0xB3, 0xBC, 0xF9, 0xCE, 0x9D, 0xC6, 0xDD, 0xBE, 0xFD, 0xBE, 0xFC, 0xB6, 0xFC, 0xB6, 0xDC, 0xB6, 0xFC, 0xBF, 0x1D, 0xC7, 0x1D, 0xCE, 0xDE, 0x8B, 0xD4, 0x82, 0x31, 0x91, 0xD1, 0xA1, 0xF2, 0xB2, 0x53, 0xC2, 0x74, 0xCA, 0x94, 0x02, 0xCA, 0x74, 0x81, 0xD2, 0x74, 0xCA, 0x74, 0x04, 0xD2, 0x54, 0x01, 0xCA, 0x54, 0x01, 0xCA, 0x34, 0x8C, 0xCA, 0x53, 0xC2, 0x53, 0xBA, 0x72, 0xB2, 0x92, + 0xBB, 0x13, 0xCB, 0xD6, 0xDC, 0x78, 0xDC, 0x37, 0xAA, 0xB2, 0xAA, 0x31, 0xB2, 0x12, 0xBA, 0x13, 0xC2, 0x13, 0x01, 0xCA, 0x34, 0x03, 0xCA, 0x54, 0x80, 0xD2, 0x54, 0x01, 0xCA, 0x54, 0x02, 0xD2, 0x74, 0x80, 0xCA, 0x54, 0x02, 0xCA, 0x74, 0x84, 0xC2, 0x74, 0xC2, 0x73, 0xAA, 0x72, 0xED, 0x7C, 0xFE, 0x9E, 0x01, 0xF6, 0xBE, 0x85, 0xFE, 0x9E, 0xFE, 0x5E, 0xC3, 0x95, 0xAA, 0x11, 0xB9, 0xF2, 0xC1, 0xF3, 0x01, 0xC9, 0xF3, 0x01, 0xCA, 0x14, 0x01, 0xD2, 0x14, 0x80, 0xCA, 0x13, 0x03, 0xD2, 0x14, 0x8A, 0xC9, 0xF5, 0xCA, 0x36, 0xC2, 0x37, 0xBA, 0x79, 0xAA, 0xBC, 0x40, 0xB7, 0x29, 0x1A, 0x21, 0x5B, 0x19, 0x7D, 0x19, 0x9D, 0x11, 0x9D, 0x01, 0x11, 0x7D, 0xA4, 0x19, 0x7D, 0x29, 0x9D, 0x29, 0x5B, 0x39, 0x19, 0x60, 0xF7, 0x91, 0x98, 0xA9, 0xD7, 0xB9, 0xF7, 0xC1, 0xF6, 0xC1, 0xF5, 0xB9, 0xD5, 0xB1, 0xF6, 0xA1, 0xF6, 0x8A, 0x37, 0x6A, 0xB8, 0x53, 0x9A, 0x4D, 0x5F, 0x35, 0xDF, 0x25, 0xDE, 0x15, 0xBE, 0x15, 0xDD, 0x0E, 0x1C, 0x06, 0x5A, 0x06, 0xB9, 0x0F, 0x3A, 0x0F, 0x7A, 0x0F, 0x79, 0x0F, 0x7A, 0x17, 0x7A, 0x27, 0x7B, 0x37, 0x3C, 0x4E, 0xFD, 0x76, 0x5D, 0x53, 0x95, 0x7A, 0x93, 0x9A, 0x33, 0xA1, 0xF4, 0x03, 0xA9, 0xD4, 0x83, 0xA1, 0x93, 0x78, 0xAF, 0x99, 0xD4, 0xA2, 0x15, 0x01, 0xA1, 0xF4, 0x86, 0xA2, 0x15, 0x91, 0xF5, 0x61, 0x11, 0x51, 0x31, 0x41, 0x10, 0x39, 0x31, 0x41, 0x92, 0x01, 0x39, 0x71, 0x80, 0x31, 0x31, 0x02, 0x31, 0x51, 0x80, 0x29, 0x30, 0x02, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x0B, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, + 0x29, 0x30, 0x04, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x88, 0x19, 0x52, 0x19, 0x53, 0x11, 0x53, 0x09, 0x55, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xB7, 0x11, 0xB6, 0x11, 0x95, 0x01, 0x11, 0x53, 0x80, 0x11, 0x31, 0x01, 0x19, 0x31, 0x80, 0x19, 0x51, 0x03, 0x19, 0x31, 0x83, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x83, 0x21, 0xB6, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x11, 0x12, 0x11, 0x53, 0x11, 0x95, 0x11, 0xB6, 0x01, 0x19, 0xF7, 0x82, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x54, 0x01, 0x11, 0x33, 0x81, 0x11, 0x32, 0x19, 0x53, 0x09, 0x11, 0x32, 0x03, 0x11, 0x53, 0x81, 0x09, 0x54, 0x11, 0xB5, 0x01, 0x19, 0xF7, 0x83, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x75, 0x11, 0x53, 0x01, 0x11, 0x12, 0x80, 0x19, 0x31, 0x01, 0x21, 0x51, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x05, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x30, + 0x21, 0x0F, 0x02, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x85, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x21, 0xF7, 0x01, 0x21, 0xD7, 0x85, 0x19, 0x75, 0x19, 0x74, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x87, 0x21, 0x0F, 0x20, 0xEF, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x20, 0xEF, 0x29, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x29, 0x50, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x19, 0x12, 0x19, 0x33, 0x19, 0x94, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x80, 0x21, 0xF7, 0x01, 0x2A, 0x17, 0x01, 0x22, + 0x17, 0x05, 0x21, 0xF6, 0x03, 0x21, 0xD6, 0x81, 0x21, 0xD5, 0x21, 0xD6, 0x01, 0x21, 0xD5, 0x02, 0x21, 0xD6, 0x80, 0x21, 0xF6, 0x04, 0x21, 0xD6, 0x81, 0x21, 0xF6, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x06, 0x21, 0xD6, 0x01, 0x19, 0xB6, 0x01, 0x21, 0xD6, 0x01, 0x19, 0xD6, 0x01, 0x21, 0xD6, 0x84, 0x21, 0xF6, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0xF6, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xF8, 0x11, 0xF8, 0x11, 0xD7, 0x09, 0x96, 0x09, 0x76, 0x01, 0x09, 0x55, 0x84, 0x09, 0x54, 0x09, 0x34, 0x01, 0x34, 0x09, 0x55, 0x11, 0x96, 0x01, 0x19, 0xD7, 0x85, 0x21, 0xD6, 0x11, 0x54, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x31, 0x84, 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x74, 0x01, 0x11, 0xB5, 0x09, 0x11, 0x95, 0x01, 0x19, 0xB5, 0x87, 0x19, 0xB6, 0x11, 0xB6, 0x19, 0xB6, 0x19, 0xD6, 0x19, + 0xF7, 0x19, 0xD6, 0x19, 0xF7, 0x1A, 0x17, 0x01, 0x11, 0xD6, 0x82, 0x11, 0xF6, 0x09, 0xD6, 0x11, 0xF7, 0x01, 0x11, 0xD7, 0x81, 0x11, 0xB7, 0x09, 0x97, 0x02, 0x09, 0x76, 0x01, 0x01, 0x55, 0x80, 0x01, 0x35, 0x01, 0x01, 0x55, 0x86, 0x09, 0x75, 0x11, 0xF7, 0x1A, 0x18, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x12, 0x19, 0x31, 0x03, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x05, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x84, 0x28, 0xEE, 0x30, 0x8D, 0x51, 0x0F, 0xAA, 0xF6, 0xB2, 0x94, 0x01, 0xAA, 0x33, 0x85, 0xA2, 0x32, 0x8A, 0x51, 0xF7, 0x3F, 0xD7, 0x3E, 0xCF, 0x1D, 0xC7, 0x1D, 0x01, 0xB6, 0xDC, 0x80, 0xB6, 0xFC, 0x01, 0xB7, 0x1C, 0x01, 0xB6, 0xFC, 0x8B, 0xB7, 0x1C, 0xBF, 0x3D, 0xCF, 0x3E, 0xDF, 0x3F, 0x93, 0xF5, 0x7A, 0x10, 0x91, 0xF1, 0xA2, 0x32, 0xB2, 0x73, 0xC2, 0x94, 0xCA, 0x94, 0xCA, 0x74, 0x01, 0xD2, 0x74, 0x8C, 0xD2, 0x75, 0xD2, 0x95, 0xD2, 0x75, 0xD2, 0x54, 0xCA, 0x54, 0xCA, 0x75, 0xCA, 0x95, 0xBA, 0x74, 0xAA, 0x93, 0xB3, 0xF5, 0xCD, 0xFB, 0xCE, 0xFD, 0xC7, 0x1D, 0x01, 0xBE, 0xFC, 0x04, 0xB6, 0xFC, 0x04, 0xAE, 0xFC, 0x03, 0xB6, 0xFC, 0x88, 0xBF, 0x1C, 0xCF, 0x1D, 0xD6, 0x9E, 0x83, 0x12, 0x8A, 0x31, 0x9A, 0x12, 0xAA, 0x53, 0xBA, 0x74, 0xC2, 0x74, 0x01, 0xCA, 0x74, 0x02, 0xD2, 0x74, 0x01, 0xD2, 0x54, 0x80, 0xD2, 0x74, 0x01, 0xCA, 0x74, 0x87, 0xC2, 0x74, 0xBA, 0x73, 0xAA, 0xB3, 0xC4, 0xD9, 0xD6, 0x9D, 0xCE, 0xFD, 0xC7, 0x1D, 0xBE, 0xFC, 0x03, 0xB6, 0xFC, 0x05, 0xAE, 0xFC, 0x02, 0xB6, 0xFC, 0x8A, 0xB7, 0x1C, 0xBF, + 0x1C, 0xBF, 0x1D, 0xCE, 0xFE, 0xD6, 0x7E, 0x83, 0x12, 0x8A, 0x51, 0x9A, 0x32, 0xAA, 0x53, 0xBA, 0x74, 0xC2, 0x74, 0x01, 0xCA, 0x75, 0x01, 0xD2, 0x75, 0x80, 0xD2, 0x55, 0x01, 0xD2, 0x75, 0x8E, 0xD2, 0x74, 0xCA, 0x74, 0xCA, 0x54, 0xC2, 0x53, 0xBA, 0x73, 0xBB, 0x14, 0xF5, 0xFE, 0xE5, 0xDD, 0xD4, 0xDB, 0x8A, 0x31, 0x91, 0xF1, 0xA2, 0x12, 0xB2, 0x74, 0xC2, 0x74, 0xC2, 0x94, 0x01, 0xCA, 0x74, 0x81, 0xD2, 0x74, 0xCA, 0x54, 0x06, 0xD2, 0x74, 0x03, 0xCA, 0x54, 0x85, 0xC2, 0x73, 0xBA, 0x73, 0xB2, 0xF3, 0xCC, 0x57, 0xE5, 0xBA, 0xFE, 0xBD, 0x01, 0xF6, 0xDD, 0x01, 0xF6, 0xBD, 0x85, 0xEE, 0x3C, 0xDD, 0x5A, 0xB3, 0x54, 0xA2, 0x31, 0xB2, 0x12, 0xBA, 0x13, 0x01, 0xC2, 0x54, 0x83, 0xCA, 0x54, 0xCA, 0x75, 0xCA, 0x74, 0xD2, 0x54, 0x02, 0xD2, 0x74, 0x80, 0xD2, 0x94, 0x02, 0xD2, 0x74, 0x03, 0xCA, 0x74, 0x88, 0xC2, 0x94, 0xB2, 0x73, 0x9A, 0xB2, 0xD5, 0xBB, 0xD6, 0xDE, 0xCE, 0xFD, 0xC7, 0x1C, 0xBE, 0xFC, 0xB6, 0xFC, 0x01, 0xB6, 0xDC, 0x8E, 0xB6, 0xFC, 0xBF, 0x1D, 0xC7, 0x3D, 0xCF, 0x1E, 0xD6, 0x7D, 0x7A, 0xB0, 0x8A, 0x10, 0xA2, 0x12, 0xB2, 0x53, 0xBA, 0x74, 0xC2, 0x74, 0xCA, 0x94, 0xCA, 0x95, 0xD2, 0x94, 0xCA, 0x74, 0x01, 0xD2, 0x74, 0x80, 0xD2, 0x94, 0x01, 0xD2, 0x74, 0x81, 0xD2, 0x75, 0xD2, 0x55, 0x01, 0xD2, 0x54, 0x91, 0xCA, 0x54, 0xC2, 0x54, 0xC2, 0x93, 0xBA, 0xD3, 0xC3, 0xF5, 0xF5, 0xFB, 0xFE, 0xFF, 0xFE, 0xFE, 0xF6, 0xDD, 0xFE, 0xBE, 0xFE, 0x7E, 0xCC, 0x57, 0xAA, 0x92, 0xAA, 0x32, 0xBA, 0x33, 0xC2, 0x34, 0xCA, 0x74, 0xCA, 0x75, 0x09, + 0xD2, 0x75, 0x81, 0xCA, 0x74, 0xD2, 0x95, 0x01, 0xCA, 0x75, 0x89, 0xC2, 0x95, 0xC2, 0x94, 0xC3, 0x16, 0xBA, 0xF5, 0x99, 0xD1, 0xA1, 0xF1, 0xB2, 0x33, 0xC2, 0x74, 0xCA, 0x74, 0xCA, 0x95, 0x01, 0xD2, 0x95, 0x01, 0xD2, 0x75, 0x8B, 0xD2, 0x74, 0xD2, 0x75, 0xD2, 0x95, 0xCA, 0x95, 0xCA, 0x74, 0xC2, 0x74, 0xBA, 0x53, 0xA2, 0x72, 0xB4, 0x57, 0xE6, 0xDF, 0xD6, 0xFE, 0xC6, 0xFD, 0x01, 0xBE, 0xDC, 0x01, 0xBE, 0xFD, 0x8B, 0xC6, 0xFD, 0xCE, 0xFD, 0xDE, 0x9E, 0x8B, 0x32, 0x8A, 0x51, 0x9A, 0x32, 0xAA, 0x33, 0xB2, 0x53, 0xC2, 0x74, 0xCA, 0x95, 0xCA, 0x94, 0xCA, 0x74, 0x04, 0xD2, 0x74, 0x01, 0xCA, 0x54, 0x86, 0xC2, 0x53, 0xBA, 0x73, 0xAA, 0xD3, 0xC5, 0x19, 0xCE, 0x9D, 0xC6, 0xFD, 0xBF, 0x1D, 0x01, 0xBE, 0xFC, 0x8B, 0xB6, 0xFC, 0xBE, 0xFC, 0xBF, 0x1D, 0xCE, 0xFE, 0xCE, 0x1C, 0x7A, 0xB1, 0x89, 0xF0, 0x99, 0xF1, 0xAA, 0x33, 0xBA, 0x74, 0xCA, 0xB5, 0xCA, 0x95, 0x01, 0xCA, 0x94, 0x80, 0xD2, 0x94, 0x04, 0xD2, 0x74, 0x02, 0xD2, 0x54, 0x87, 0xCA, 0x74, 0xCA, 0x54, 0xCA, 0x73, 0xBA, 0x93, 0xB2, 0xD2, 0xCC, 0x16, 0xF5, 0xFB, 0xFE, 0xDE, 0x01, 0xF6, 0xDD, 0x89, 0xFE, 0xDD, 0xFE, 0xBE, 0xD4, 0xF8, 0xA2, 0xB1, 0xAA, 0x31, 0xB2, 0x12, 0xC2, 0x13, 0xC2, 0x34, 0xC2, 0x54, 0xCA, 0x54, 0x02, 0xCA, 0x74, 0x07, 0xD2, 0x74, 0x8E, 0xCA, 0x74, 0xCA, 0x94, 0xC2, 0x94, 0xBA, 0xB3, 0xBB, 0x95, 0xFE, 0x7E, 0xF6, 0xBE, 0xF6, 0xDE, 0xF6, 0xDD, 0xFE, 0xBE, 0xFE, 0x9E, 0xCB, 0xF6, 0xAA, 0x11, 0xB9, 0xF2, 0xC1, 0xF2, 0x04, 0xC9, 0xF3, 0x90, 0xCA, 0x13, 0xCA, 0x14, + 0xC9, 0xF4, 0xD2, 0x14, 0xCA, 0x14, 0xCA, 0x15, 0xCA, 0x16, 0xC2, 0x37, 0xBA, 0x59, 0xAA, 0xBC, 0x40, 0xD7, 0x29, 0x1A, 0x21, 0x5C, 0x21, 0x9D, 0x19, 0x9D, 0x11, 0x9E, 0x11, 0x9D, 0x01, 0x11, 0x7D, 0x86, 0x19, 0x7D, 0x21, 0x5C, 0x31, 0x19, 0x61, 0x79, 0x91, 0xD9, 0x99, 0x96, 0xB9, 0xF7, 0x01, 0xC1, 0xF6, 0x8F, 0xB9, 0xF5, 0xB1, 0xD5, 0xA1, 0xD5, 0x92, 0x16, 0x7A, 0x98, 0x5B, 0x7B, 0x4D, 0x3E, 0x35, 0xBF, 0x25, 0xBE, 0x1D, 0xDD, 0x15, 0xDD, 0x0E, 0x1C, 0x06, 0x7A, 0x06, 0xB9, 0x07, 0x19, 0x07, 0x59, 0x01, 0x0F, 0x7A, 0x88, 0x17, 0x7A, 0x27, 0x5B, 0x37, 0x3C, 0x4E, 0xDD, 0x76, 0x5E, 0x5B, 0xD6, 0x7A, 0x93, 0x9A, 0x53, 0xAA, 0x34, 0x03, 0xA9, 0xD4, 0x91, 0x91, 0x52, 0x78, 0xD0, 0x99, 0xB3, 0xA2, 0x14, 0xAA, 0x35, 0xAA, 0x15, 0xA2, 0x35, 0x89, 0xB4, 0x58, 0x8F, 0x59, 0x51, 0x41, 0x10, 0x39, 0x10, 0x39, 0x31, 0x41, 0x72, 0x39, 0x71, 0x39, 0x51, 0x31, 0x51, 0x31, 0x31, 0x01, 0x31, 0x51, 0x80, 0x31, 0x50, 0x01, 0x29, 0x50, 0x03, 0x29, 0x30, 0x82, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x06, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x09, + 0x54, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0xB6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x52, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x19, 0x51, 0x8E, 0x19, 0x30, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x11, 0x85, 0x11, 0x32, 0x11, 0x53, 0x11, 0x95, 0x19, 0xB6, 0x19, 0xF6, 0x19, 0xD6, 0x01, 0x11, 0xB5, 0x83, 0x11, 0x94, 0x11, 0x54, 0x11, 0x53, 0x09, 0x33, 0x06, 0x11, 0x32, 0x81, 0x11, 0x53, 0x11, 0x32, 0x02, 0x09, 0x33, 0x82, 0x09, 0x74, 0x11, 0x95, 0x11, 0xB6, 0x01, 0x19, 0xF7, 0x8C, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x21, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x19, 0x11, 0x89, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0xD6, 0x21, 0xD7, 0x19, 0x95, 0x19, + 0x53, 0x11, 0x12, 0x01, 0x19, 0x31, 0x81, 0x19, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x30, 0x02, 0x21, 0x10, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x81, 0x29, 0x51, 0x21, 0x31, 0x01, 0x19, 0x11, 0x82, 0x19, 0x12, 0x19, 0x33, 0x19, 0x95, 0x02, 0x21, 0xF7, 0x83, 0x21, 0xF6, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x95, 0x01, 0x11, 0x74, 0x80, 0x11, 0x94, 0x05, 0x11, 0x74, 0x81, 0x11, 0x53, 0x11, 0x73, 0x01, 0x11, 0x74, 0x80, 0x11, 0x53, 0x02, 0x11, 0x74, 0x85, 0x11, 0x54, 0x11, 0x74, 0x11, 0x54, 0x19, 0x74, 0x19, 0x54, 0x11, 0x54, 0x01, 0x19, 0x54, 0x05, 0x11, 0x74, 0x07, 0x19, 0x74, 0x81, 0x19, 0x94, 0x19, 0x74, 0x01, 0x19, 0x94, 0x03, 0x19, 0x95, 0x01, 0x19, 0xB5, 0x88, 0x19, 0xB6, 0x19, 0xD6, 0x11, 0xD7, 0x19, 0xD7, 0x19, 0xF7, 0x11, 0xD7, 0x11, + 0x96, 0x09, 0x76, 0x01, 0x35, 0x01, 0x01, 0x34, 0x82, 0x09, 0x34, 0x09, 0x55, 0x11, 0x96, 0x01, 0x19, 0xB7, 0x83, 0x19, 0x95, 0x11, 0x53, 0x19, 0x52, 0x19, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x0A, 0x21, 0x0F, 0x84, 0x29, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x21, 0x51, 0x01, 0x19, 0x31, 0x01, 0x11, 0x32, 0x83, 0x11, 0x53, 0x19, 0xD5, 0x22, 0x17, 0x22, 0x18, 0x01, 0x22, 0x38, 0x02, 0x22, 0x59, 0x81, 0x22, 0x58, 0x22, 0x59, 0x01, 0x22, 0x38, 0x83, 0x22, 0x58, 0x2A, 0x58, 0x22, 0x38, 0x22, 0x58, 0x03, 0x22, 0x38, 0x80, 0x1A, 0x17, 0x02, 0x1A, 0x38, 0x82, 0x12, 0x18, 0x1A, 0x38, 0x11, 0xF7, 0x01, 0x12, 0x17, 0x02, 0x11, 0xF7, 0x84, 0x11, 0xD7, 0x11, 0xB7, 0x09, 0x96, 0x09, 0x76, 0x01, 0x55, 0x03, 0x01, 0x35, 0x01, 0x01, 0x55, 0x86, 0x11, 0xD7, 0x1A, 0x38, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x0B, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x8C, 0x30, 0xEF, 0x30, 0x8D, 0x51, 0x0F, 0xB2, 0xF6, 0xB2, + 0x94, 0xAA, 0x53, 0xAA, 0x32, 0xA2, 0x12, 0x8A, 0x51, 0xF7, 0x3F, 0xDF, 0x3D, 0xD7, 0x5D, 0xC7, 0x1C, 0x01, 0xBE, 0xFC, 0x01, 0xB6, 0xFC, 0x02, 0xB7, 0x1C, 0x8C, 0xBF, 0x1C, 0xC7, 0x5D, 0xCF, 0x5E, 0xE7, 0x5F, 0x93, 0xF4, 0x7A, 0x10, 0x92, 0x11, 0xA2, 0x32, 0xB2, 0x73, 0xC2, 0x94, 0xCA, 0xB5, 0xCA, 0x94, 0xD2, 0x94, 0x03, 0xD2, 0x95, 0x01, 0xD2, 0x75, 0x87, 0xCA, 0x95, 0xCA, 0xB5, 0xC2, 0x94, 0xAA, 0xB3, 0xB3, 0xF5, 0xD6, 0x1B, 0xD6, 0xFD, 0xC7, 0x1C, 0x02, 0xBF, 0x1C, 0x80, 0xBE, 0xFC, 0x08, 0xB7, 0x1C, 0x80, 0xB6, 0xFB, 0x01, 0xBF, 0x1C, 0x8A, 0xC7, 0x3C, 0xCF, 0x3D, 0xDE, 0xBD, 0x83, 0x12, 0x82, 0x51, 0x9A, 0x11, 0xAA, 0x53, 0xBA, 0x74, 0xC2, 0x74, 0xCA, 0x94, 0xCA, 0x74, 0x01, 0xD2, 0x74, 0x80, 0xD2, 0x94, 0x01, 0xD2, 0x74, 0x80, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x86, 0xC2, 0x94, 0xBA, 0x94, 0xAA, 0xD3, 0xCD, 0x19, 0xDE, 0xBD, 0xCE, 0xFD, 0xC6, 0xFC, 0x01, 0xBE, 0xFC, 0x01, 0xB7, 0x1C, 0x80, 0xB6, 0xFC, 0x02, 0xB7, 0x1C, 0x01, 0xB6, 0xFC, 0x01, 0xB7, 0x1C, 0x01, 0xB7, 0x1B, 0x01, 0xBF, 0x3C, 0x88, 0xC7, 0x3D, 0xD7, 0x1E, 0xDE, 0x9D, 0x8B, 0x12, 0x8A, 0x51, 0x9A, 0x32, 0xAA, 0x73, 0xBA, 0x74, 0xC2, 0x95, 0x01, 0xCA, 0x95, 0x80, 0xD2, 0x95, 0x02, 0xD2, 0x75, 0x01, 0xD2, 0x95, 0x01, 0xCA, 0x74, 0x8A, 0xCA, 0x94, 0xC2, 0xB4, 0xC3, 0x35, 0xF5, 0xBE, 0xF5, 0xDE, 0xA2, 0xD3, 0x91, 0xF1, 0x99, 0xF1, 0xAA, 0x33, 0xBA, 0x94, 0xC2, 0x94, 0x01, 0xCA, 0x94, 0x81, 0xD2, 0x95, 0xCA, 0x74, 0x01, 0xD2, 0x74, 0x80, 0xD2, 0x94, 0x04, + 0xD2, 0x74, 0x02, 0xCA, 0x74, 0x86, 0xC2, 0x93, 0xBA, 0xB3, 0xBB, 0x33, 0xDD, 0x39, 0xF6, 0x9D, 0xEE, 0xDC, 0xE6, 0xFC, 0x01, 0xDE, 0xFB, 0x8A, 0xDF, 0x1B, 0xDE, 0xFB, 0xE6, 0xDC, 0xEE, 0xBC, 0xF6, 0x5D, 0xD4, 0xB8, 0x9A, 0x51, 0xA2, 0x11, 0xB2, 0x33, 0xBA, 0x74, 0xC2, 0x74, 0x03, 0xCA, 0x74, 0x80, 0xD2, 0x74, 0x06, 0xD2, 0x94, 0x87, 0xCA, 0x74, 0xCA, 0x94, 0xCA, 0xB4, 0xBA, 0x73, 0xAA, 0xB3, 0xA3, 0x94, 0xDE, 0x9E, 0xD6, 0xFD, 0x01, 0xC7, 0x1C, 0x02, 0xBE, 0xFC, 0x80, 0xBF, 0x1C, 0x01, 0xC7, 0x3D, 0x8A, 0xD7, 0x1E, 0xCD, 0xDB, 0x7A, 0x2F, 0x92, 0x11, 0xA2, 0x12, 0xB2, 0x73, 0xBA, 0x74, 0xCA, 0x94, 0xCA, 0x95, 0xD2, 0x95, 0xD2, 0xB5, 0x03, 0xD2, 0x94, 0x03, 0xD2, 0x74, 0x01, 0xCA, 0x74, 0x93, 0xC2, 0x74, 0xBA, 0x93, 0xBB, 0x13, 0xDC, 0xD8, 0xF6, 0x7C, 0xEE, 0xFC, 0xE6, 0xFC, 0xDE, 0xDB, 0xDE, 0xFB, 0xE6, 0xDB, 0xEE, 0xFD, 0xF6, 0xDD, 0xE5, 0x7A, 0xA2, 0x91, 0xAA, 0x32, 0xB2, 0x33, 0xC2, 0x74, 0xCA, 0x74, 0xCA, 0x75, 0xCA, 0x74, 0x02, 0xD2, 0x75, 0x04, 0xD2, 0x95, 0x80, 0xCA, 0x95, 0x01, 0xD2, 0x95, 0x01, 0xCA, 0x95, 0x89, 0xC2, 0x95, 0xC2, 0xB5, 0xBA, 0xD5, 0x99, 0xD1, 0xA1, 0xF1, 0xB2, 0x53, 0xC2, 0x94, 0xCA, 0xB5, 0xCA, 0x95, 0xD2, 0xB5, 0x05, 0xD2, 0x95, 0x88, 0xCA, 0x95, 0xCA, 0x94, 0xC2, 0x94, 0xBA, 0x73, 0xAA, 0x92, 0xBC, 0x57, 0xE6, 0xDE, 0xD6, 0xFE, 0xCF, 0x1D, 0x01, 0xC6, 0xFC, 0x02, 0xC7, 0x1D, 0x87, 0xD6, 0xFD, 0xDE, 0x9E, 0x8B, 0x32, 0x8A, 0x51, 0x9A, 0x32, 0xAA, 0x53, 0xB2, 0x73, 0xC2, 0x94, 0x01, 0xCA, + 0x94, 0x03, 0xD2, 0x94, 0x02, 0xD2, 0x74, 0x86, 0xCA, 0x74, 0xC2, 0x74, 0xBA, 0x73, 0xAA, 0xF3, 0xC5, 0x39, 0xD6, 0xDD, 0xCE, 0xFD, 0x02, 0xBE, 0xFC, 0x89, 0xBF, 0x1C, 0xBF, 0x1D, 0xC7, 0x1D, 0xD6, 0xFE, 0xAC, 0xB8, 0x7A, 0x30, 0x89, 0xF1, 0x99, 0xF1, 0xB2, 0x73, 0xC2, 0x94, 0x01, 0xCA, 0xB5, 0x80, 0xCA, 0x95, 0x05, 0xD2, 0x94, 0x81, 0xD2, 0x74, 0xD2, 0x94, 0x01, 0xD2, 0x74, 0x01, 0xCA, 0x94, 0x87, 0xBA, 0xB3, 0xB2, 0xF2, 0xE5, 0x39, 0xF6, 0x9D, 0xEE, 0xDC, 0xE6, 0xFC, 0xE7, 0x1C, 0xDF, 0x1C, 0x01, 0xE6, 0xFC, 0x87, 0xF6, 0xDD, 0xF5, 0xFC, 0xAB, 0x12, 0xA2, 0x31, 0xB2, 0x12, 0xBA, 0x33, 0xC2, 0x54, 0xC2, 0x74, 0x02, 0xCA, 0x94, 0x03, 0xD2, 0x95, 0x83, 0xD2, 0x74, 0xD2, 0x94, 0xD2, 0x95, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x84, 0xC2, 0xB4, 0xBA, 0xB3, 0xB3, 0x13, 0xF5, 0xFD, 0xFE, 0xBE, 0x01, 0xF6, 0xFD, 0x88, 0xF6, 0xDD, 0xFE, 0xDE, 0xFE, 0x9E, 0xD4, 0x17, 0xA2, 0x10, 0xB1, 0xF1, 0xB9, 0xD2, 0xC1, 0xD2, 0xC1, 0xD3, 0x02, 0xC9, 0xF3, 0x81, 0xC9, 0xF4, 0xC9, 0xF3, 0x01, 0xCA, 0x14, 0x8B, 0xCA, 0x15, 0xCA, 0x16, 0xC2, 0x37, 0xBA, 0x59, 0xAA, 0xBC, 0x40, 0xD7, 0x29, 0x1A, 0x21, 0x5B, 0x19, 0x7D, 0x19, 0x9D, 0x11, 0xBE, 0x11, 0x9E, 0x01, 0x11, 0x9D, 0xA4, 0x11, 0x5C, 0x19, 0x5C, 0x31, 0x3A, 0x59, 0x5A, 0x89, 0xDA, 0xA1, 0xD8, 0xB1, 0xF7, 0xB9, 0xF6, 0xC2, 0x16, 0xB9, 0xF5, 0xB1, 0xD5, 0xA1, 0xD5, 0x92, 0x16, 0x7A, 0x58, 0x63, 0x19, 0x4C, 0xBC, 0x3D, 0xBE, 0x2D, 0xDE, 0x1D, 0xBD, 0x1D, 0xDD, 0x16, 0x1C, 0x0E, 0x9A, 0x06, 0xB9, + 0x07, 0x39, 0x07, 0x59, 0x07, 0x79, 0x0F, 0x7A, 0x17, 0x7A, 0x27, 0x5B, 0x37, 0x3C, 0x56, 0xDD, 0x76, 0x5D, 0x5B, 0xB5, 0x7A, 0x93, 0x9A, 0x54, 0xA2, 0x13, 0xA9, 0xF4, 0x01, 0xA9, 0xD4, 0x8E, 0xA9, 0xF5, 0x81, 0x11, 0x78, 0xD0, 0x99, 0xD4, 0xAA, 0x35, 0xA1, 0xF4, 0xA2, 0x14, 0xA2, 0x15, 0x89, 0xB4, 0x50, 0x6E, 0x51, 0x31, 0x49, 0x51, 0x39, 0x10, 0x39, 0x31, 0x39, 0x51, 0x01, 0x39, 0x72, 0x02, 0x31, 0x51, 0x80, 0x31, 0x50, 0x01, 0x29, 0x50, 0x04, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x85, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x86, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x89, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x54, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xB7, 0x11, 0xB6, 0x11, 0x74, 0x01, 0x11, 0x32, 0x01, 0x19, 0x31, 0x82, 0x19, 0x30, 0x21, 0x51, 0x19, 0x50, 0x01, 0x19, 0x30, 0x81, 0x19, 0x31, 0x19, 0x32, 0x01, 0x11, 0x33, 0x80, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x85, 0x19, 0x95, 0x11, 0x12, 0x19, 0x32, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, + 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x11, 0x53, 0x11, 0x95, 0x19, 0xB6, 0x19, 0xD6, 0x01, 0x19, 0xF6, 0x01, 0x11, 0xB5, 0x85, 0x11, 0x75, 0x11, 0x54, 0x11, 0x53, 0x09, 0x33, 0x11, 0x33, 0x11, 0x53, 0x02, 0x11, 0x33, 0x02, 0x09, 0x33, 0x84, 0x09, 0x54, 0x11, 0x75, 0x11, 0xB5, 0x19, 0xF7, 0x1A, 0x17, 0x01, 0x19, 0xF7, 0x83, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x01, 0x11, 0x11, 0x81, 0x19, 0x11, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x05, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x86, 0x19, 0x10, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x21, 0xF7, 0x84, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x02, 0x19, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, + 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x81, 0x21, 0x10, 0x29, 0x10, 0x08, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x09, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x88, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x19, 0x10, 0x18, 0xF1, 0x19, 0x12, 0x19, 0x33, 0x19, 0x95, 0x21, 0xF7, 0x01, 0x21, 0xD7, 0x82, 0x19, 0xB6, 0x19, 0x75, 0x11, 0x54, 0x01, 0x11, 0x33, 0x83, 0x09, 0x33, 0x09, 0x12, 0x09, 0x32, 0x09, 0x12, 0x09, 0x11, 0x32, 0x80, 0x11, 0x52, 0x03, 0x11, 0x32, 0x85, 0x11, 0x12, 0x19, 0x33, 0x11, 0x33, 0x11, 0x12, 0x11, 0x32, 0x19, 0x33, 0x01, 0x11, 0x12, 0x80, 0x11, 0x32, 0x0B, 0x11, 0x12, 0x80, 0x11, 0x33, 0x02, 0x11, 0x12, 0x80, 0x11, 0x13, 0x04, 0x11, 0x33, 0x86, 0x11, 0x34, 0x11, 0x55, 0x11, 0x75, 0x11, 0x96, 0x11, 0xB6, 0x11, 0xB7, 0x11, 0xD7, 0x02, 0x09, 0x75, 0x88, 0x11, 0x96, 0x19, 0xB7, 0x19, 0xF7, 0x19, 0xB7, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x33, 0x19, 0x32, 0x21, 0x51, 0x01, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x11, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x20, 0xEF, 0x09, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x21, + 0x31, 0x19, 0x31, 0x01, 0x19, 0x52, 0x82, 0x11, 0x53, 0x11, 0x74, 0x19, 0xF6, 0x02, 0x1A, 0x17, 0x01, 0x19, 0xF7, 0x81, 0x22, 0x38, 0x1A, 0x18, 0x08, 0x19, 0xF7, 0x80, 0x19, 0xD7, 0x04, 0x19, 0xF7, 0x88, 0x11, 0xF7, 0x11, 0xD7, 0x11, 0xF7, 0x12, 0x17, 0x11, 0xF7, 0x12, 0x17, 0x11, 0xF7, 0x09, 0xD7, 0x09, 0xB7, 0x02, 0x11, 0xD7, 0x82, 0x09, 0xB7, 0x09, 0x96, 0x09, 0x76, 0x01, 0x01, 0x35, 0x80, 0x09, 0x55, 0x01, 0x01, 0x55, 0x87, 0x09, 0x76, 0x11, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x11, 0x74, 0x11, 0x12, 0x19, 0x31, 0x19, 0x30, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x0C, 0x29, 0x2F, 0x91, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x28, 0xEF, 0x30, 0x8D, 0x51, 0x0F, 0xB2, 0xF6, 0xB2, 0x74, 0xAA, 0x33, 0xAA, 0x12, 0xA2, 0x12, 0x8A, 0x30, 0xFF, 0x5F, 0xDF, 0x5D, 0xD7, 0x5D, 0xCF, 0x3C, 0x01, 0xBE, 0xFC, 0x80, 0xBF, 0x1C, 0x01, 0xBF, 0x1B, 0x8C, 0xB7, 0x1B, 0xBF, 0x1B, 0xC7, 0x3C, 0xC7, 0x5D, 0xD7, 0x7E, 0xE7, 0x5F, 0x93, 0xD4, 0x7A, 0x30, 0x92, 0x11, 0xA2, 0x52, 0xB2, 0x94, 0xC2, 0xB4, 0xCA, 0xB5, 0x05, 0xD2, 0xB5, 0x80, 0xD2, 0x95, 0x01, 0xD2, 0xB5, 0x86, 0xCA, 0xD5, 0xC2, 0xB4, 0xB2, 0xD3, 0xB4, 0x15, 0xD6, 0x1B, 0xD7, 0x1D, 0xCF, 0x3C, 0x01, 0xC7, 0x1C, 0x03, 0xBF, 0x1C, 0x02, 0xBF, 0x1B, 0x80, 0xBF, 0x1C, 0x01, 0xBF, 0x1B, 0x80, 0xBF, 0x3C, 0x01, 0xBF, 0x1B, 0x8F, 0xC7, 0x3C, 0xC7, 0x5C, 0xD7, 0x3D, 0xDE, 0xBD, 0x83, 0x31, 0x82, 0x50, 0x92, 0x31, 0xAA, 0x73, 0xBA, 0x94, 0xC2, 0x94, 0xCA, 0x94, 0xD2, 0xB5, + 0xD2, 0x95, 0xD2, 0xB5, 0xD2, 0x94, 0xD2, 0x95, 0x01, 0xD2, 0x94, 0x8B, 0xCA, 0xB4, 0xCA, 0xB5, 0xCA, 0xB4, 0xC2, 0xB4, 0xB2, 0xF3, 0xCD, 0x39, 0xDE, 0xBD, 0xD7, 0x1D, 0xCF, 0x1C, 0xC7, 0x1C, 0xBF, 0x1C, 0xBF, 0x1B, 0x05, 0xBF, 0x1C, 0x04, 0xBF, 0x1B, 0x80, 0xBF, 0x3B, 0x01, 0xC7, 0x3C, 0x89, 0xD7, 0x3E, 0xDE, 0x9D, 0x8B, 0x12, 0x8A, 0x51, 0x9A, 0x11, 0xAA, 0x53, 0xBA, 0x94, 0xC2, 0x94, 0xCA, 0xB5, 0xCA, 0x95, 0x05, 0xD2, 0x95, 0x01, 0xCA, 0x94, 0x89, 0xCA, 0xB4, 0xC2, 0xD4, 0xC3, 0x15, 0xFD, 0x7D, 0xCC, 0x38, 0x89, 0xD0, 0x99, 0xF1, 0xA2, 0x12, 0xBA, 0x74, 0xC2, 0x94, 0x01, 0xCA, 0xB5, 0x80, 0xD2, 0xD5, 0x01, 0xD2, 0x95, 0x01, 0xD2, 0xB5, 0x85, 0xD2, 0x95, 0xD2, 0x94, 0xD2, 0x95, 0xD2, 0x94, 0xD2, 0x95, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x87, 0xC2, 0x94, 0xB2, 0x92, 0xBB, 0xB4, 0xED, 0xDB, 0xF6, 0xDD, 0xE6, 0xFC, 0xDF, 0x1C, 0xDF, 0x1B, 0x01, 0xD7, 0x1B, 0x8A, 0xD7, 0x1A, 0xDF, 0x3B, 0xDF, 0x1B, 0xDE, 0xDB, 0xE6, 0xBB, 0xF6, 0xBD, 0xDD, 0x59, 0x9A, 0xB1, 0xA2, 0x31, 0xB2, 0x33, 0xBA, 0x74, 0x01, 0xC2, 0x94, 0x80, 0xCA, 0x94, 0x01, 0xD2, 0x94, 0x02, 0xD2, 0xB5, 0x80, 0xD2, 0x94, 0x01, 0xD2, 0xB5, 0x8B, 0xD2, 0x94, 0xCA, 0x94, 0xCA, 0xB4, 0xCA, 0xD5, 0xC2, 0x94, 0xB2, 0x93, 0xA3, 0x13, 0xD5, 0x9B, 0xDE, 0xFE, 0xCF, 0x1D, 0xCF, 0x1C, 0xC7, 0x1C, 0x01, 0xC6, 0xFC, 0x01, 0xC7, 0x3D, 0x88, 0xCF, 0x5D, 0xE7, 0x3F, 0xAC, 0x36, 0x82, 0x0F, 0x92, 0x11, 0xA2, 0x32, 0xBA, 0x74, 0xC2, 0x94, 0xCA, 0xB5, 0x04, 0xD2, 0xB5, 0x03, 0xD2, + 0x94, 0x8C, 0xD2, 0x95, 0xD2, 0x94, 0xCA, 0x94, 0xC2, 0x94, 0xBA, 0xB3, 0xC3, 0x74, 0xED, 0xBA, 0xEE, 0x7C, 0xEE, 0xFC, 0xDE, 0xFB, 0xD6, 0xDA, 0xD6, 0xFB, 0xD7, 0x1B, 0x01, 0xDF, 0x1B, 0x88, 0xE6, 0xFC, 0xEE, 0xDD, 0xDD, 0x7A, 0x9A, 0x70, 0xA2, 0x11, 0xAA, 0x12, 0xBA, 0x53, 0xC2, 0x74, 0xCA, 0x95, 0x07, 0xD2, 0x95, 0x03, 0xD2, 0xB5, 0x80, 0xCA, 0xB5, 0x01, 0xC2, 0x94, 0x80, 0xBA, 0x94, 0x01, 0xA1, 0xF1, 0x81, 0xB2, 0x53, 0xC2, 0x94, 0x01, 0xCA, 0xB5, 0x02, 0xD2, 0xB5, 0x01, 0xD2, 0x95, 0x01, 0xD2, 0xB5, 0x01, 0xCA, 0xB5, 0x86, 0xCA, 0xB4, 0xBA, 0x93, 0xAA, 0x92, 0xBC, 0x77, 0xEE, 0xDE, 0xDF, 0x1D, 0xCF, 0x1D, 0x01, 0xC6, 0xFC, 0x01, 0xC7, 0x1C, 0x89, 0xCF, 0x1C, 0xD7, 0x1D, 0xDE, 0x9E, 0x8B, 0x32, 0x8A, 0x51, 0x9A, 0x31, 0xAA, 0x52, 0xB2, 0x73, 0xC2, 0xB4, 0xCA, 0xB5, 0x03, 0xD2, 0xB5, 0x03, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x85, 0xC2, 0xB3, 0xAA, 0xF3, 0xCD, 0x59, 0xDE, 0xDD, 0xD7, 0x1D, 0xCF, 0x1D, 0x01, 0xC6, 0xFC, 0x89, 0xC7, 0x3C, 0xC7, 0x3D, 0xCF, 0x3D, 0xDF, 0x1F, 0x93, 0x73, 0x81, 0xF0, 0x91, 0xF1, 0xA2, 0x12, 0xBA, 0x94, 0xC2, 0xB5, 0x01, 0xCA, 0xD5, 0x81, 0xCA, 0xB5, 0xD2, 0xB5, 0x01, 0xD2, 0xB4, 0x01, 0xD2, 0xB5, 0x8B, 0xD2, 0x95, 0xD2, 0x94, 0xD2, 0x95, 0xD2, 0x94, 0xCA, 0x74, 0xCA, 0x94, 0xC2, 0xB3, 0xB3, 0x12, 0xFE, 0x1C, 0xFE, 0xDD, 0xEE, 0xFC, 0xE7, 0x1C, 0x04, 0xDF, 0x1B, 0x86, 0xE6, 0xFC, 0xEE, 0xFD, 0xFF, 0x1F, 0xAB, 0x32, 0x9A, 0x10, 0xAA, 0x12, 0xB2, 0x33, 0x01, 0xC2, 0x94, 0x81, 0xCA, 0x94, 0xCA, + 0xB5, 0x01, 0xD2, 0x95, 0x80, 0xD2, 0xB5, 0x01, 0xD2, 0x95, 0x80, 0xD2, 0x94, 0x02, 0xD2, 0xB5, 0x01, 0xCA, 0xB4, 0x84, 0xC2, 0xD4, 0xAA, 0xD3, 0xE5, 0x5A, 0xFE, 0xBE, 0xF6, 0xFD, 0x01, 0xEE, 0xFD, 0x88, 0xF6, 0xFD, 0xFE, 0xDD, 0xFE, 0xBE, 0xCC, 0x16, 0xA2, 0x10, 0xB1, 0xD1, 0xB9, 0xD2, 0xC1, 0xB3, 0xC1, 0xD3, 0x01, 0xC9, 0xD3, 0x01, 0xC9, 0xF3, 0x8C, 0xC9, 0xF4, 0xCA, 0x14, 0xCA, 0x15, 0xC2, 0x16, 0xBA, 0x17, 0xBA, 0x59, 0xAA, 0xDC, 0x40, 0xD7, 0x29, 0x1A, 0x21, 0x5B, 0x19, 0x5C, 0x11, 0x7D, 0x11, 0xBE, 0x01, 0x09, 0x9E, 0x88, 0x11, 0x9D, 0x11, 0x5C, 0x19, 0x5C, 0x29, 0x3B, 0x49, 0x3A, 0x71, 0x99, 0xA2, 0x19, 0xB2, 0x18, 0xB9, 0xF7, 0x01, 0xBA, 0x16, 0x8D, 0xB2, 0x16, 0xA9, 0xF6, 0x9A, 0x16, 0x82, 0x17, 0x62, 0x97, 0x54, 0x3B, 0x4D, 0x9E, 0x35, 0xFE, 0x25, 0xFE, 0x1D, 0xDD, 0x15, 0xFB, 0x06, 0x7A, 0x06, 0xD9, 0x07, 0x19, 0x02, 0x0F, 0x79, 0x88, 0x17, 0x7A, 0x27, 0x7B, 0x37, 0x1C, 0x4E, 0xBC, 0x76, 0x5D, 0x5B, 0xB5, 0x7A, 0x93, 0x9A, 0x53, 0xAA, 0x34, 0x02, 0xA9, 0xF4, 0x8E, 0xA1, 0xF4, 0x78, 0xD0, 0x79, 0x11, 0x89, 0x72, 0xB2, 0x76, 0xAA, 0x15, 0xAA, 0x35, 0xA2, 0x35, 0x91, 0xF4, 0x58, 0x8F, 0x48, 0xEF, 0x51, 0x71, 0x41, 0x30, 0x39, 0x10, 0x31, 0x10, 0x02, 0x39, 0x51, 0x84, 0x31, 0x51, 0x31, 0x50, 0x29, 0x30, 0x31, 0x50, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, + 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x88, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0xB6, 0x11, 0xF7, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x54, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x01, 0x19, 0x30, 0x80, 0x19, 0x51, 0x02, 0x19, 0x30, 0x8A, 0x19, 0x51, 0x19, 0x52, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x01, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB5, 0x01, 0x19, 0xD6, 0x81, 0x19, 0xF7, 0x19, 0xD6, 0x03, 0x11, 0x95, 0x01, 0x11, 0x74, 0x02, 0x11, 0x54, 0x01, 0x11, 0x75, 0x01, 0x11, 0x96, 0x80, 0x19, 0xB7, 0x01, 0x19, 0xD7, 0x84, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0xB5, 0x19, 0x94, 0x11, 0x53, 0x01, 0x11, 0x32, 0x80, 0x11, 0x11, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x03, + 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x19, 0x11, 0x83, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x01, 0x22, 0x17, 0x88, 0x21, 0xD7, 0x19, 0x75, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x18, 0xF0, 0x21, 0x10, 0x21, 0x30, 0x21, 0x50, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x50, 0x05, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x10, 0x21, 0x0F, 0x09, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x11, 0x11, 0x19, 0x33, 0x19, 0x75, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x81, + 0x19, 0xB6, 0x11, 0x54, 0x02, 0x11, 0x33, 0x06, 0x11, 0x32, 0x03, 0x11, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x31, 0x01, 0x11, 0x31, 0x08, 0x19, 0x32, 0x80, 0x19, 0x12, 0x02, 0x19, 0x32, 0x80, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x19, 0x12, 0x02, 0x19, 0x11, 0x04, 0x19, 0x12, 0x82, 0x11, 0x12, 0x19, 0x32, 0x11, 0x11, 0x03, 0x11, 0x12, 0x81, 0x11, 0x32, 0x11, 0x12, 0x01, 0x11, 0x33, 0x01, 0x11, 0x34, 0x81, 0x19, 0x75, 0x19, 0xB6, 0x01, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x82, 0x19, 0xD7, 0x19, 0xF7, 0x21, 0xF8, 0x01, 0x19, 0xD7, 0x86, 0x19, 0x95, 0x19, 0x74, 0x19, 0x52, 0x19, 0x31, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x87, 0x19, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x53, 0x11, 0x94, 0x22, 0x17, 0x01, 0x1A, 0x17, 0x01, 0x19, 0xD6, 0x82, 0x11, 0xB6, 0x19, 0xB6, 0x11, 0xB6, 0x02, 0x11, 0x95, 0x83, 0x11, 0x75, 0x11, 0x95, 0x11, 0x75, 0x11, 0x95, 0x01, 0x11, 0x74, 0x81, 0x11, 0x95, 0x19, 0x95, 0x02, 0x11, + 0x75, 0x80, 0x11, 0x74, 0x03, 0x11, 0x95, 0x80, 0x09, 0x95, 0x01, 0x11, 0xB5, 0x03, 0x11, 0xB6, 0x85, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0xF8, 0x11, 0xB7, 0x09, 0x76, 0x01, 0x55, 0x02, 0x09, 0x55, 0x81, 0x09, 0x76, 0x11, 0x96, 0x01, 0x19, 0xF7, 0x84, 0x19, 0xD6, 0x11, 0x54, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x0C, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x86, 0x29, 0x0F, 0x28, 0xEE, 0x30, 0x8D, 0x50, 0xEF, 0xAA, 0xD5, 0xB2, 0x74, 0xAA, 0x33, 0x01, 0xA2, 0x12, 0x81, 0x8A, 0x0F, 0xFF, 0x7F, 0x01, 0xDF, 0x5D, 0x80, 0xCF, 0x3C, 0x01, 0xC7, 0x1B, 0x02, 0xBF, 0x1B, 0x8C, 0xBF, 0x3B, 0xC7, 0x3B, 0xC7, 0x3C, 0xCF, 0x7C, 0xD7, 0x7E, 0xE7, 0x1E, 0x8B, 0xB3, 0x7A, 0x2F, 0x92, 0x11, 0xA2, 0x52, 0xB2, 0x94, 0xC2, 0xD4, 0xCA, 0xD5, 0x02, 0xD2, 0xD5, 0x04, 0xD2, 0xB5, 0x86, 0xCA, 0xB5, 0xCA, 0xD5, 0xC2, 0xB4, 0xB2, 0xF3, 0xB4, 0x15, 0xDE, 0x3B, 0xDF, 0x1D, 0x01, 0xCF, 0x3C, 0x83, 0xC7, 0x3C, 0xC7, 0x1B, 0xC7, 0x1C, 0xC7, 0x1B, 0x01, 0xBF, 0x1B, 0x82, 0xBF, 0x3B, 0xBF, 0x1B, 0xBF, 0x3B, 0x01, 0xBF, 0x1B, 0x01, 0xBF, 0x3B, 0x8B, 0xC7, 0x3B, 0xC7, 0x3C, 0xCF, 0x5C, 0xD7, 0x5D, 0xDE, 0xDE, 0x83, 0x31, 0x82, 0x50, 0x92, 0x31, 0xAA, 0x73, 0xBA, 0x94, 0xC2, 0xB5, 0xCA, 0xD5, 0x05, 0xD2, 0xB5, 0x80, 0xD2, 0xB4, 0x01, 0xCA, 0xB4, 0x01, 0xC2, 0xB4, 0x83, 0xAA, 0xF3, 0xD5, 0x59, 0xDE, 0xBD, 0xD6, 0xFC, 0x01, 0xCF, 0x1C, 0x81, 0xC7, 0x1B, 0xC7, 0x3B, 0x02, 0xBF, 0x3B, 0x01, 0xC7, 0x1B, 0x03, 0xBF, 0x1B, + 0x02, 0xC7, 0x3B, 0x01, 0xCF, 0x5C, 0x88, 0xDF, 0x5D, 0xDE, 0x9D, 0x8B, 0x12, 0x8A, 0x51, 0x9A, 0x32, 0xAA, 0x53, 0xBA, 0x94, 0xCA, 0xB5, 0xCA, 0xD5, 0x06, 0xD2, 0xB5, 0x8B, 0xD2, 0xB4, 0xCA, 0xD4, 0xCA, 0xD5, 0xCA, 0xF5, 0xC3, 0x15, 0xE4, 0x7A, 0xAA, 0xB3, 0x9A, 0x11, 0x99, 0xF2, 0xAA, 0x33, 0xBA, 0xB4, 0xC2, 0xB5, 0x01, 0xCA, 0xB5, 0x04, 0xD2, 0xB5, 0x80, 0xD2, 0xB4, 0x04, 0xD2, 0xB5, 0x87, 0xCA, 0xB4, 0xC2, 0xB4, 0xBA, 0xB3, 0xBB, 0x53, 0xED, 0xFB, 0xF6, 0xDC, 0xE7, 0x1C, 0xDF, 0x3B, 0x02, 0xD7, 0x3B, 0x03, 0xD7, 0x3A, 0x8C, 0xDF, 0x3B, 0xDF, 0x1B, 0xE6, 0xFC, 0xEE, 0xBC, 0xDD, 0x9A, 0x9A, 0xB1, 0x9A, 0x31, 0xAA, 0x53, 0xBA, 0x94, 0xC2, 0xD5, 0xCA, 0xD5, 0xCA, 0xB5, 0xD2, 0xB4, 0x02, 0xD2, 0xB5, 0x01, 0xD2, 0xD5, 0x02, 0xD2, 0xB5, 0x86, 0xD2, 0xD5, 0xCA, 0xD5, 0xC2, 0xB4, 0xBA, 0x93, 0xAA, 0xD3, 0xBC, 0x36, 0xE6, 0xDD, 0x01, 0xD7, 0x1C, 0x01, 0xCF, 0x1C, 0x80, 0xC7, 0x1C, 0x02, 0xCF, 0x5D, 0x87, 0xEF, 0x5F, 0x8B, 0x12, 0x89, 0xF0, 0x9A, 0x11, 0xAA, 0x52, 0xBA, 0x94, 0xC2, 0xB4, 0xCA, 0xD5, 0x03, 0xD2, 0xD5, 0x82, 0xD2, 0xB5, 0xD2, 0xB4, 0xD2, 0xB5, 0x02, 0xD2, 0xB4, 0x89, 0xCA, 0xB4, 0xCA, 0x94, 0xBA, 0xB3, 0xBB, 0x33, 0xE5, 0x59, 0xF6, 0xBC, 0xE6, 0xFB, 0xDF, 0x1B, 0xDF, 0x3B, 0xD7, 0x1B, 0x02, 0xD7, 0x1A, 0x8A, 0xD7, 0x3B, 0xDF, 0x3B, 0xE7, 0x1C, 0xF6, 0xDD, 0xD4, 0xF8, 0x92, 0x30, 0xA1, 0xF1, 0xB2, 0x12, 0xC2, 0x74, 0xCA, 0x94, 0xCA, 0xB5, 0x03, 0xD2, 0xB5, 0x80, 0xDA, 0xD5, 0x02, 0xD2, 0xB5, 0x81, 0xD2, 0x95, + 0xD2, 0xB5, 0x01, 0xD2, 0xD5, 0x82, 0xCA, 0xB5, 0xC2, 0xB5, 0xBA, 0x94, 0x01, 0xA1, 0xF1, 0x82, 0xB2, 0x53, 0xC2, 0xB4, 0xCA, 0xD5, 0x01, 0xD2, 0xD5, 0x02, 0xD2, 0xB5, 0x80, 0xD2, 0x95, 0x01, 0xD2, 0xB5, 0x8B, 0xD2, 0xD5, 0xCA, 0xB5, 0xCA, 0xB4, 0xC2, 0xB3, 0xAA, 0xB2, 0xBC, 0x77, 0xEE, 0xFE, 0xDF, 0x1D, 0xD7, 0x1D, 0xCF, 0x1C, 0xCE, 0xFC, 0xCF, 0x1C, 0x01, 0xCF, 0x3C, 0x88, 0xDF, 0x3D, 0xE6, 0xBE, 0x8B, 0x32, 0x8A, 0x50, 0x9A, 0x31, 0xAA, 0x52, 0xBA, 0x94, 0xC2, 0xB4, 0xCA, 0xD5, 0x01, 0xD2, 0xD5, 0x81, 0xD2, 0xB5, 0xD2, 0xD5, 0x02, 0xD2, 0xB5, 0x80, 0xD2, 0x94, 0x01, 0xCA, 0xB4, 0x88, 0xC2, 0xB4, 0xB3, 0x13, 0xCD, 0x79, 0xDE, 0xDD, 0xD7, 0x1D, 0xCF, 0x3C, 0xC6, 0xFC, 0xC7, 0x1C, 0xCF, 0x5D, 0x01, 0xD7, 0x5D, 0x86, 0xDE, 0xBD, 0x82, 0x90, 0x81, 0xD0, 0x91, 0xF1, 0xA2, 0x32, 0xBA, 0x94, 0xC2, 0xD5, 0x01, 0xCA, 0xD5, 0x80, 0xD2, 0xD5, 0x06, 0xD2, 0xB5, 0x80, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x85, 0xC2, 0xB3, 0xB2, 0xF2, 0xED, 0x9A, 0xF6, 0xDD, 0xE6, 0xFC, 0xE7, 0x1B, 0x01, 0xDF, 0x3B, 0x80, 0xD7, 0x1B, 0x02, 0xD7, 0x3B, 0x8A, 0xDF, 0x3B, 0xE7, 0x3C, 0xEF, 0x1D, 0xED, 0xFB, 0x9A, 0xB1, 0xA2, 0x31, 0xAA, 0x12, 0xBA, 0x73, 0xC2, 0xB4, 0xCA, 0xB4, 0xCA, 0xB5, 0x06, 0xD2, 0xB5, 0x01, 0xD2, 0xD5, 0x01, 0xCA, 0xD4, 0x85, 0xC2, 0xD4, 0xB2, 0xD3, 0xCC, 0x36, 0xFE, 0xDE, 0xEE, 0xFD, 0xEE, 0xFC, 0x01, 0xEF, 0x1C, 0x88, 0xF7, 0x1D, 0xFE, 0xFD, 0xFE, 0xBE, 0xE4, 0xD9, 0x99, 0xEF, 0xB1, 0xD1, 0xB9, 0xB2, 0xC1, 0xB2, 0xC1, 0xD2, 0x01, + 0xC9, 0xD3, 0x8D, 0xC9, 0xF3, 0xC9, 0xF4, 0xCA, 0x14, 0xCA, 0x15, 0xC1, 0xF5, 0xBA, 0x17, 0xB2, 0x58, 0xA2, 0xBC, 0x40, 0xD7, 0x29, 0x1A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x9D, 0x11, 0x9E, 0x01, 0x09, 0x9E, 0x99, 0x11, 0x9E, 0x11, 0x9D, 0x19, 0x7D, 0x21, 0x3B, 0x41, 0x5A, 0x61, 0x7A, 0x92, 0x1A, 0xAA, 0x39, 0xB2, 0x17, 0xB1, 0xF6, 0xBA, 0x16, 0xBA, 0x56, 0xAA, 0x36, 0x9A, 0x16, 0x89, 0xF7, 0x6A, 0x77, 0x53, 0xBA, 0x55, 0x5E, 0x3D, 0xDE, 0x2D, 0xFE, 0x1D, 0xDD, 0x16, 0x1B, 0x0E, 0x9A, 0x06, 0xD8, 0x07, 0x19, 0x07, 0x39, 0x01, 0x0F, 0x79, 0x88, 0x17, 0x7A, 0x2F, 0x7B, 0x3F, 0x1C, 0x4E, 0x9C, 0x76, 0x3D, 0x5B, 0x75, 0x7A, 0x93, 0x9A, 0x53, 0xA1, 0xF3, 0x01, 0xA9, 0xF4, 0x84, 0xA2, 0x15, 0x91, 0xB3, 0x70, 0xD0, 0x79, 0x11, 0x81, 0x52, 0x01, 0xA2, 0x35, 0x86, 0xA2, 0x14, 0xA2, 0x15, 0xA2, 0x35, 0x69, 0x10, 0x48, 0xAE, 0x51, 0x71, 0x49, 0x51, 0x01, 0x39, 0x10, 0x01, 0x39, 0x51, 0x80, 0x39, 0x71, 0x03, 0x31, 0x50, 0x80, 0x29, 0x50, 0x09, 0x29, 0x30, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x95, 0x01, 0x19, 0xF7, 0x84, 0x11, 0xB6, 0x11, 0x53, + 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x01, 0x19, 0x30, 0x80, 0x19, 0x50, 0x03, 0x19, 0x30, 0x83, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x01, 0x21, 0xF7, 0x83, 0x19, 0x95, 0x11, 0x12, 0x19, 0x12, 0x19, 0x31, 0x01, 0x21, 0x30, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x88, 0x19, 0x10, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0x74, 0x11, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD7, 0x01, 0x19, 0xB6, 0x80, 0x11, 0xB6, 0x01, 0x19, 0xD6, 0x80, 0x19, 0xB6, 0x02, 0x11, 0x96, 0x81, 0x19, 0xB6, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x02, 0x19, 0xD7, 0x88, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x94, 0x19, 0x73, 0x19, 0x52, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x19, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x19, 0x11, 0x83, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xB5, 0x01, 0x22, 0x17, 0x87, 0x21, 0xD7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x10, 0x18, 0xF0, 0x19, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, + 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x29, 0x10, 0x06, 0x29, 0x0F, 0x0B, 0x21, 0x0F, 0x0A, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x31, 0x85, 0x19, 0x10, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0x74, 0x19, 0xB6, 0x01, 0x22, 0x17, 0x84, 0x21, 0xB6, 0x19, 0x74, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x01, 0x11, 0x32, 0x80, 0x11, 0x52, 0x01, 0x19, 0x52, 0x81, 0x11, 0x32, 0x11, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x51, 0x80, 0x19, 0x31, 0x02, 0x19, 0x30, 0x05, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x32, 0x05, 0x19, 0x31, 0x8A, 0x19, 0x11, 0x21, 0x31, 0x19, 0x31, 0x21, 0x51, 0x19, 0x31, 0x21, 0x52, 0x19, 0x31, 0x19, 0x51, 0x19, 0x31, 0x21, 0x52, 0x19, 0x51, 0x05, 0x19, 0x31, 0x01, 0x19, 0x32, 0x01, 0x19, 0x12, 0x87, 0x11, 0x12, 0x11, 0x33, 0x19, 0x74, 0x21, 0x95, 0x21, 0xD7, 0x21, 0xF7, 0x21, 0xD7, 0x19, 0xD7, 0x01, 0x22, 0x18, 0x88, 0x2A, 0x18, 0x21, 0xF7, + 0x19, 0x95, 0x19, 0x74, 0x19, 0x53, 0x19, 0x52, 0x19, 0x31, 0x21, 0x30, 0x21, 0x50, 0x05, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x0A, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x0C, 0x21, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x86, 0x21, 0x31, 0x21, 0x32, 0x19, 0x12, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF6, 0x01, 0x22, 0x17, 0x84, 0x19, 0xD6, 0x11, 0x94, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x02, 0x11, 0x53, 0x82, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x07, 0x11, 0x12, 0x01, 0x09, 0x12, 0x80, 0x11, 0x32, 0x01, 0x09, 0x32, 0x01, 0x09, 0x33, 0x93, 0x09, 0x34, 0x09, 0x55, 0x11, 0xB6, 0x19, 0xF8, 0x11, 0xD8, 0x11, 0xF8, 0x11, 0xD7, 0x09, 0x76, 0x09, 0x56, 0x09, 0x76, 0x11, 0x96, 0x11, 0xB7, 0x19, 0xF8, 0x11, 0xD7, 0x19, 0xD7, 0x19, 0x96, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x51, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x0B, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x8F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x28, 0xEE, 0x30, 0x8D, 0x50, 0xEE, 0xAA, 0xD5, 0xB2, 0x73, 0xAA, 0x12, 0xA2, 0x12, 0xA2, 0x11, 0x8A, 0x0F, 0xFF, 0x5F, 0xE7, 0x5D, 0xDF, 0x5C, 0xD7, 0x3C, 0x04, 0xC7, 0x1B, 0x02, 0xC7, 0x3B, 0x89, 0xCF, 0x7C, 0xDF, 0x7D, 0xE6, 0xFE, 0x8B, 0x72, 0x7A, 0x2F, 0x92, 0x11, 0xA2, 0x72, + 0xB2, 0xB4, 0xC2, 0xF5, 0xCA, 0xF5, 0x07, 0xD2, 0xD5, 0x87, 0xD2, 0xF5, 0xCA, 0xF5, 0xC2, 0xD4, 0xB3, 0x13, 0xBC, 0x35, 0xDE, 0x3B, 0xDF, 0x1C, 0xD7, 0x3C, 0x02, 0xCF, 0x3B, 0x01, 0xC7, 0x1B, 0x04, 0xC7, 0x3B, 0x01, 0xC7, 0x1B, 0x02, 0xC7, 0x3B, 0x88, 0xCF, 0x5B, 0xCF, 0x7C, 0xDF, 0x5D, 0xE6, 0xDD, 0x83, 0x31, 0x82, 0x50, 0x92, 0x31, 0xAA, 0x73, 0xBA, 0xB4, 0x01, 0xCA, 0xF5, 0x07, 0xD2, 0xD5, 0x89, 0xCA, 0xF5, 0xCA, 0xD4, 0xC2, 0xD4, 0xB2, 0xF3, 0xDD, 0x9A, 0xE6, 0xFD, 0xDF, 0x1C, 0xD7, 0x1B, 0xCF, 0x3B, 0xCF, 0x1B, 0x03, 0xC7, 0x3B, 0x80, 0xC7, 0x1B, 0x06, 0xC7, 0x3B, 0x01, 0xCF, 0x5B, 0x88, 0xD7, 0x5C, 0xDF, 0x5D, 0xE6, 0xBD, 0x8B, 0x11, 0x8A, 0x30, 0x9A, 0x11, 0xAA, 0x53, 0xBA, 0xB4, 0xCA, 0xD5, 0x06, 0xD2, 0xD5, 0x81, 0xD2, 0xB5, 0xD2, 0xD5, 0x01, 0xD2, 0xF5, 0x87, 0xCB, 0x15, 0xCB, 0x36, 0xD3, 0xB7, 0xA2, 0x32, 0x9A, 0x12, 0xA2, 0x12, 0xB2, 0x73, 0xC2, 0xD5, 0x01, 0xCA, 0xD5, 0x06, 0xD2, 0xD5, 0x80, 0xD2, 0xB4, 0x01, 0xD2, 0xD5, 0x87, 0xD2, 0xB5, 0xD2, 0xB4, 0xCA, 0xB4, 0xC2, 0xD3, 0xBB, 0x73, 0xED, 0xDA, 0xF7, 0x1D, 0xEF, 0x3B, 0x01, 0xDF, 0x3B, 0x80, 0xD7, 0x3B, 0x05, 0xD7, 0x3A, 0x89, 0xD7, 0x5A, 0xDF, 0x5B, 0xDF, 0x3B, 0xDE, 0xFB, 0xF6, 0xFD, 0xCC, 0xF7, 0x8A, 0x4F, 0x9A, 0x11, 0xAA, 0x52, 0xBA, 0xB4, 0x01, 0xCA, 0xD5, 0x01, 0xCA, 0xB5, 0x80, 0xD2, 0xB5, 0x06, 0xD2, 0xD5, 0x01, 0xCA, 0xD5, 0x88, 0xC2, 0xD4, 0xB2, 0xD3, 0xAB, 0x53, 0xEE, 0xBD, 0xDF, 0x1D, 0xDF, 0x3C, 0xD7, 0x3C, 0xCF, 0x1B, 0xCF, 0x3C, 0x01, + 0xCF, 0x5C, 0x86, 0xD7, 0x5D, 0xF7, 0x7F, 0x72, 0x2E, 0x89, 0xF0, 0x9A, 0x11, 0xAA, 0x53, 0xC2, 0xD4, 0x01, 0xCA, 0xD5, 0x80, 0xD2, 0xF5, 0x03, 0xD2, 0xD5, 0x01, 0xD2, 0xB5, 0x80, 0xD2, 0xB4, 0x01, 0xD2, 0xB5, 0x01, 0xCA, 0xB4, 0x88, 0xBA, 0xF3, 0xDC, 0xF8, 0xF6, 0xBC, 0xEF, 0x1C, 0xE7, 0x3B, 0xDF, 0x5B, 0xDF, 0x3B, 0xD7, 0x3A, 0xD7, 0x1A, 0x01, 0xD7, 0x3A, 0x80, 0xD7, 0x5A, 0x01, 0xDF, 0x5B, 0x8A, 0xE7, 0x1C, 0xF6, 0x9C, 0x9B, 0x32, 0x91, 0xEF, 0xA1, 0xF1, 0xB2, 0x53, 0xC2, 0xB4, 0xCA, 0xD5, 0xD2, 0xF5, 0xD2, 0xD5, 0xD2, 0xB5, 0x01, 0xD2, 0xD5, 0x80, 0xDA, 0xD5, 0x01, 0xD2, 0xD5, 0x01, 0xD2, 0xB5, 0x02, 0xD2, 0xD5, 0x81, 0xCA, 0xD5, 0xC2, 0x94, 0x01, 0xA1, 0xF1, 0x84, 0xB2, 0x73, 0xC2, 0xB4, 0xCA, 0xD5, 0xD2, 0xD5, 0xD2, 0xF5, 0x05, 0xD2, 0xD5, 0x88, 0xD2, 0xF5, 0xCA, 0xD5, 0xCA, 0xD4, 0xC2, 0xB3, 0xAA, 0xD2, 0xC4, 0x96, 0xEE, 0xFD, 0xDF, 0x1D, 0xD7, 0x3C, 0x01, 0xCF, 0x1C, 0x01, 0xCF, 0x3C, 0x89, 0xD7, 0x3D, 0xDF, 0x3E, 0xE6, 0xDE, 0x8B, 0x31, 0x8A, 0x50, 0x9A, 0x31, 0xAA, 0x52, 0xBA, 0x94, 0xCA, 0xD5, 0xD2, 0xF5, 0x06, 0xD2, 0xD5, 0x88, 0xD2, 0xB5, 0xCA, 0xB4, 0xCA, 0xD4, 0xC2, 0xD4, 0xB3, 0x13, 0xD5, 0x79, 0xE6, 0xFD, 0xDF, 0x3D, 0xD7, 0x3C, 0x01, 0xCF, 0x1B, 0x01, 0xD7, 0x7D, 0x86, 0xDF, 0x5D, 0xD6, 0x7C, 0x7A, 0x0F, 0x89, 0xF0, 0x91, 0xF1, 0xAA, 0x32, 0xBA, 0xB4, 0x01, 0xCA, 0xD5, 0x07, 0xD2, 0xD5, 0x01, 0xD2, 0xB5, 0x86, 0xCA, 0x94, 0xCA, 0xB4, 0xBA, 0xD3, 0xD4, 0xB7, 0xFE, 0xBC, 0xEE, 0xFC, 0xE7, 0x3B, 0x01, + 0xDF, 0x3B, 0x81, 0xD7, 0x1A, 0xD7, 0x3A, 0x03, 0xD7, 0x3B, 0x89, 0xDF, 0x5B, 0xE7, 0x1C, 0xE6, 0x9B, 0xB4, 0x35, 0x9A, 0x50, 0xA2, 0x31, 0xAA, 0x32, 0xBA, 0x94, 0xC2, 0xB4, 0xCA, 0xB4, 0x07, 0xD2, 0xD5, 0x80, 0xD2, 0xF5, 0x01, 0xCA, 0xF5, 0x84, 0xC2, 0xD4, 0xBA, 0xD3, 0xB3, 0x53, 0xFE, 0xFE, 0xEE, 0xFC, 0x03, 0xEF, 0x1C, 0x89, 0xF7, 0x1C, 0xFF, 0x1D, 0xFF, 0x1E, 0xED, 0x5A, 0x9A, 0x0F, 0xA9, 0xD0, 0xB9, 0xB1, 0xC1, 0xB2, 0xC1, 0xD3, 0xC9, 0xD3, 0x01, 0xC9, 0xF3, 0x8B, 0xCA, 0x14, 0xC2, 0x15, 0xC1, 0xF5, 0xBA, 0x16, 0xB2, 0x38, 0x9A, 0x9B, 0x40, 0xD7, 0x29, 0x1A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x9D, 0x09, 0x9D, 0x01, 0x09, 0x9E, 0x89, 0x11, 0xBE, 0x11, 0x9E, 0x11, 0x7D, 0x19, 0x5C, 0x31, 0x5B, 0x41, 0x3A, 0x69, 0x58, 0xA2, 0x3A, 0xAA, 0x18, 0xB2, 0x16, 0x01, 0xB2, 0x36, 0xAD, 0xAA, 0x16, 0xA2, 0x16, 0x8A, 0x17, 0x72, 0x77, 0x53, 0x79, 0x54, 0xDC, 0x45, 0xDE, 0x36, 0x1E, 0x25, 0xDD, 0x1E, 0x1C, 0x0E, 0x9A, 0x06, 0xD9, 0x07, 0x19, 0x07, 0x38, 0x07, 0x59, 0x0F, 0x79, 0x1F, 0x7A, 0x27, 0x5B, 0x3F, 0x1C, 0x56, 0xBD, 0x76, 0x1D, 0x5B, 0x54, 0x7A, 0x93, 0x9A, 0x54, 0xA1, 0xF3, 0xAA, 0x14, 0xA1, 0xD4, 0xA1, 0xF4, 0x89, 0xB3, 0x70, 0xF0, 0x71, 0x52, 0x71, 0x11, 0x9A, 0x15, 0xA2, 0x35, 0xA1, 0xF4, 0xA2, 0x15, 0xA2, 0x35, 0x81, 0xB3, 0x48, 0x8E, 0x49, 0x10, 0x51, 0x91, 0x41, 0x50, 0x39, 0x30, 0x39, 0x31, 0x39, 0x51, 0x31, 0x51, 0x03, 0x31, 0x50, 0x01, 0x29, 0x50, 0x07, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x2F, + 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x88, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0xB6, 0x19, 0xF7, 0x1A, 0x18, 0x11, 0xB6, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x51, 0x01, 0x19, 0x30, 0x81, 0x19, 0x50, 0x21, 0x50, 0x01, 0x19, 0x30, 0x01, 0x19, 0x31, 0x82, 0x11, 0x32, 0x11, 0x33, 0x21, 0xB6, 0x01, 0x21, 0xF7, 0x84, 0x19, 0x95, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x19, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8D, 0x29, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x19, 0x54, 0x19, 0x75, 0x19, 0xB6, 0x19, 0xD6, 0x01, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x80, 0x11, 0xD7, 0x02, 0x11, 0xB7, 0x8B, 0x19, 0xB7, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xD7, 0x21, 0xF7, 0x21, 0xD7, 0x19, 0xB6, 0x19, 0x95, 0x19, 0x74, 0x11, 0x53, 0x19, 0x53, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x19, 0x51, 0x19, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, + 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x8A, 0x11, 0x12, 0x11, 0x32, 0x11, 0x74, 0x19, 0xB5, 0x22, 0x17, 0x22, 0x38, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x10, 0x84, 0x21, 0x30, 0x29, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x07, 0x21, 0x10, 0x81, 0x29, 0x10, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x51, 0x01, 0x19, 0x31, 0x84, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x82, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x53, 0x01, + 0x11, 0x12, 0x80, 0x11, 0x32, 0x01, 0x19, 0x32, 0x80, 0x19, 0x52, 0x03, 0x19, 0x31, 0x06, 0x19, 0x30, 0x80, 0x21, 0x30, 0x01, 0x19, 0x30, 0x80, 0x21, 0x30, 0x02, 0x19, 0x10, 0x81, 0x21, 0x11, 0x21, 0x31, 0x01, 0x19, 0x11, 0x82, 0x21, 0x11, 0x19, 0x10, 0x21, 0x31, 0x01, 0x19, 0x30, 0x81, 0x19, 0x10, 0x19, 0x30, 0x01, 0x21, 0x30, 0x82, 0x19, 0x30, 0x21, 0x30, 0x19, 0x30, 0x02, 0x21, 0x31, 0x87, 0x19, 0x10, 0x21, 0x31, 0x19, 0x30, 0x21, 0x51, 0x21, 0x30, 0x21, 0x31, 0x19, 0x10, 0x21, 0x31, 0x02, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x32, 0x01, 0x19, 0x12, 0x8C, 0x19, 0x32, 0x19, 0x33, 0x19, 0x74, 0x19, 0x75, 0x19, 0x95, 0x19, 0x75, 0x19, 0xB6, 0x21, 0xD6, 0x21, 0xB6, 0x19, 0x75, 0x19, 0x74, 0x19, 0x53, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x21, 0x30, 0x21, 0x50, 0x05, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x0A, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x19, 0xD6, 0x22, 0x37, 0x22, 0x17, 0x19, 0xB5, 0x11, 0x53, 0x02, 0x11, 0x32, 0x04, 0x11, 0x11, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x09, 0x19, 0x11, 0x81, 0x10, 0xF1, 0x19, 0x11, 0x03, 0x11, 0x11, 0x01, + 0x11, 0x12, 0x84, 0x11, 0x13, 0x09, 0x34, 0x11, 0x75, 0x19, 0xD7, 0x19, 0xF7, 0x01, 0x19, 0xF8, 0x81, 0x11, 0xD7, 0x11, 0xB7, 0x01, 0x11, 0x96, 0x80, 0x19, 0xD7, 0x01, 0x19, 0xF7, 0x85, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x0B, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x91, 0x29, 0x2F, 0x29, 0x0F, 0x28, 0xEF, 0x30, 0x8D, 0x50, 0xEE, 0xAA, 0xD5, 0xB2, 0x53, 0xAA, 0x12, 0xA1, 0xF2, 0xA1, 0xF1, 0x8A, 0x0F, 0xFF, 0x7F, 0xE7, 0x5D, 0xDF, 0x5C, 0xD7, 0x3B, 0xCF, 0x1B, 0xCF, 0x3B, 0xC7, 0x3B, 0x01, 0xC7, 0x3A, 0x80, 0xCF, 0x3B, 0x01, 0xCF, 0x5B, 0x88, 0xD7, 0x7C, 0xDF, 0x5D, 0xE6, 0xDD, 0x8B, 0x51, 0x82, 0x2F, 0x92, 0x31, 0xAA, 0x93, 0xBA, 0xD4, 0xC2, 0xF5, 0x01, 0xD3, 0x15, 0x07, 0xD2, 0xF5, 0x85, 0xCB, 0x15, 0xC2, 0xF4, 0xBB, 0x34, 0xBC, 0x35, 0xDE, 0x5B, 0xDF, 0x1C, 0x01, 0xD7, 0x3B, 0x04, 0xCF, 0x3B, 0x80, 0xC7, 0x3B, 0x03, 0xC7, 0x3A, 0x01, 0xC7, 0x3B, 0x80, 0xCF, 0x3B, 0x01, 0xCF, 0x5B, 0x88, 0xD7, 0x7B, 0xDF, 0x5D, 0xE6, 0xFD, 0x83, 0x31, 0x82, 0x50, 0x92, 0x31, 0xAA, 0x92, 0xBA, 0xD4, 0xCA, 0xF5, 0x04, 0xD2, 0xF5, 0x80, 0xDA, 0xF5, 0x02, 0xD2, 0xF5, 0x88, 0xCA, 0xF5, 0xCA, 0xF4, 0xC2, 0xD4, 0xB2, 0xF2, 0xDD, 0xBA, 0xE6, 0xFC, 0xDF, 0x1B, 0xD7, 0x1B, 0xD7, 0x3B, 0x01, 0xCF, 0x3B, 0x80, 0xCF, 0x3A, 0x04, 0xCF, 0x3B, 0x04, 0xCF, 0x3A, 0x89, 0xCF, 0x5B, 0xD7, 0x5B, 0xD7, 0x5C, 0xE7, 0x5D, 0xE6, 0xBD, 0x8B, 0x11, 0x8A, 0x30, 0x9A, 0x11, 0xAA, 0x72, 0xBA, 0xB4, + 0x01, 0xCA, 0xD5, 0x01, 0xD2, 0xF5, 0x02, 0xD2, 0xD5, 0x81, 0xD2, 0xF5, 0xD2, 0xD5, 0x01, 0xD2, 0xF5, 0x87, 0xD3, 0x15, 0xCB, 0x15, 0xCB, 0x36, 0xBA, 0xF5, 0x9A, 0x11, 0xA2, 0x12, 0xA2, 0x32, 0xBA, 0xB4, 0x01, 0xCA, 0xF5, 0x81, 0xCA, 0xD5, 0xD2, 0xD5, 0x01, 0xD2, 0xF5, 0x81, 0xD2, 0xD5, 0xDA, 0xF5, 0x04, 0xD2, 0xD5, 0x87, 0xD2, 0xB5, 0xCA, 0xD4, 0xC2, 0xF3, 0xBB, 0x32, 0xDD, 0x58, 0xFE, 0xFD, 0xEF, 0x3B, 0xE7, 0x3B, 0x01, 0xDF, 0x5A, 0x07, 0xD7, 0x3A, 0x89, 0xDF, 0x5A, 0xDF, 0x7B, 0xDF, 0x5B, 0xE6, 0xFB, 0xEE, 0xBC, 0xB4, 0x14, 0x8A, 0x0F, 0x9A, 0x10, 0xAA, 0x73, 0xC2, 0xD5, 0x02, 0xCA, 0xD5, 0x01, 0xD2, 0xD5, 0x02, 0xD2, 0xF5, 0x80, 0xD2, 0xD5, 0x02, 0xD2, 0xF5, 0x87, 0xCA, 0xF5, 0xCB, 0x15, 0xBA, 0xF4, 0xAB, 0x33, 0xD5, 0x99, 0xEF, 0x1D, 0xDF, 0x3C, 0xD7, 0x3C, 0x01, 0xD7, 0x3B, 0x8A, 0xD7, 0x3C, 0xD7, 0x5C, 0xDF, 0x7D, 0xEF, 0x3F, 0x71, 0xED, 0x92, 0x10, 0x9A, 0x11, 0xB2, 0x73, 0xC2, 0xD4, 0xCA, 0xF5, 0xD3, 0x15, 0x04, 0xD2, 0xF5, 0x04, 0xD2, 0xD5, 0x87, 0xCA, 0xD4, 0xC2, 0xF3, 0xC3, 0x94, 0xF6, 0x5B, 0xEF, 0x1C, 0xE7, 0x3B, 0xDF, 0x3B, 0xDF, 0x3A, 0x04, 0xD7, 0x3A, 0x01, 0xD7, 0x5A, 0x88, 0xDF, 0x5B, 0xE7, 0x5C, 0xF7, 0x5D, 0xCD, 0x38, 0x81, 0xCE, 0x99, 0xF0, 0xAA, 0x32, 0xC2, 0x94, 0xCA, 0xF5, 0x03, 0xD2, 0xF5, 0x07, 0xD2, 0xD5, 0x01, 0xD2, 0xF5, 0x85, 0xC2, 0xD4, 0xA1, 0xF1, 0x99, 0xF1, 0xB2, 0x73, 0xC2, 0xD5, 0xCA, 0xF5, 0x04, 0xD2, 0xF5, 0x80, 0xD2, 0xD5, 0x02, 0xD2, 0xF5, 0x88, 0xCA, 0xF5, 0xCA, 0xF4, 0xC2, + 0xD3, 0xB2, 0xD2, 0xC4, 0xB6, 0xF6, 0xFD, 0xE7, 0x3D, 0xDF, 0x3C, 0xD7, 0x1C, 0x03, 0xD7, 0x3C, 0x87, 0xE7, 0x5D, 0xEE, 0xDE, 0x8B, 0x31, 0x8A, 0x50, 0x9A, 0x31, 0xAA, 0x72, 0xBA, 0xB4, 0xCA, 0xF5, 0x06, 0xD2, 0xF5, 0x01, 0xD2, 0xD5, 0x87, 0xD2, 0xD4, 0xCA, 0xD4, 0xC2, 0xD4, 0xB3, 0x33, 0xD5, 0x99, 0xE6, 0xFD, 0xDF, 0x3C, 0xD7, 0x3C, 0x01, 0xD7, 0x1B, 0x88, 0xD7, 0x5C, 0xDF, 0x7D, 0xE7, 0x5D, 0xC5, 0x99, 0x71, 0xEE, 0x89, 0xF0, 0x9A, 0x11, 0xAA, 0x73, 0xC2, 0xD5, 0x01, 0xCA, 0xF5, 0x04, 0xD2, 0xF5, 0x04, 0xD2, 0xD5, 0x86, 0xCA, 0xD4, 0xC2, 0xD3, 0xC3, 0x74, 0xF6, 0x1B, 0xF6, 0xFC, 0xE6, 0xFB, 0xDF, 0x1A, 0x01, 0xDF, 0x3B, 0x80, 0xDF, 0x3A, 0x02, 0xD7, 0x3A, 0x80, 0xDF, 0x5A, 0x01, 0xDF, 0x5B, 0x89, 0xE7, 0x5B, 0xEF, 0x3C, 0xDD, 0xFA, 0x92, 0xB1, 0xA2, 0x51, 0xA2, 0x11, 0xBA, 0x93, 0xC2, 0xD4, 0xCA, 0xB4, 0xCA, 0xD5, 0x01, 0xD2, 0xF5, 0x04, 0xD2, 0xD5, 0x86, 0xD2, 0xF5, 0xD3, 0x15, 0xCA, 0xF5, 0xC2, 0xF4, 0xBA, 0xD3, 0xAB, 0x12, 0xFE, 0xFE, 0x03, 0xEF, 0x1C, 0x01, 0xEF, 0x3C, 0x86, 0xF7, 0x3C, 0xFF, 0x3D, 0xFF, 0x1E, 0xF5, 0x9B, 0xA2, 0x50, 0xA9, 0xD0, 0xB1, 0xB1, 0x01, 0xC1, 0xB2, 0x81, 0xC1, 0xD3, 0xC9, 0xF3, 0x01, 0xC1, 0xF4, 0x89, 0xB9, 0xF5, 0xBA, 0x16, 0xAA, 0x38, 0x9A, 0x9B, 0x40, 0xD7, 0x29, 0x1A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x9D, 0x09, 0x9D, 0x03, 0x09, 0x9E, 0x87, 0x11, 0x9E, 0x11, 0x5D, 0x21, 0x5C, 0x31, 0x3A, 0x49, 0x18, 0x81, 0xFA, 0xA2, 0x39, 0xB2, 0x38, 0x02, 0xAA, 0x16, 0x97, 0xA2, 0x36, 0x92, 0x16, + 0x7A, 0x57, 0x5B, 0x17, 0x54, 0x7B, 0x4D, 0xDE, 0x36, 0x1E, 0x2D, 0xFD, 0x1E, 0x1B, 0x0E, 0x79, 0x06, 0xD9, 0x07, 0x18, 0x0F, 0x59, 0x0F, 0x79, 0x17, 0x9A, 0x1F, 0x7A, 0x2F, 0x7B, 0x3F, 0x3C, 0x56, 0xBC, 0x75, 0xDC, 0x53, 0x34, 0x7A, 0x93, 0x92, 0x33, 0x99, 0xF4, 0x01, 0xA1, 0xF4, 0x8E, 0x99, 0xF4, 0x79, 0x52, 0x71, 0x11, 0x71, 0x72, 0x69, 0x31, 0x79, 0x72, 0xA2, 0x56, 0xA2, 0x35, 0xA2, 0x15, 0x99, 0xF4, 0x9A, 0x15, 0x50, 0xAE, 0x40, 0xAE, 0x51, 0x71, 0x41, 0x71, 0x01, 0x39, 0x30, 0x81, 0x39, 0x31, 0x31, 0x51, 0x01, 0x31, 0x50, 0x80, 0x29, 0x50, 0x0B, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x20, 0xEF, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x0D, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x8C, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x11, 0x95, 0x19, 0xD7, 0x19, 0xF7, 0x11, 0xB5, 0x09, 0x32, 0x11, 0x31, 0x19, 0x31, 0x03, 0x19, 0x30, 0x81, 0x21, 0x30, 0x19, 0x2F, 0x01, 0x19, 0x30, 0x83, 0x19, 0x51, 0x11, 0x32, 0x11, 0x13, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x83, 0x19, 0x95, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x87, 0x21, 0x11, 0x19, 0x11, + 0x19, 0x12, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0x95, 0x19, 0xB6, 0x01, 0x19, 0xD7, 0x83, 0x11, 0xD7, 0x19, 0xD7, 0x11, 0xD7, 0x11, 0xB7, 0x01, 0x19, 0xB7, 0x01, 0x19, 0xD7, 0x83, 0x19, 0xB6, 0x21, 0xB6, 0x19, 0x95, 0x19, 0x74, 0x01, 0x11, 0x33, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x30, 0x04, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x50, 0x21, 0x11, 0x01, 0x19, 0x31, 0x8F, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x19, 0xF7, 0x22, 0x17, 0x19, 0xD7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x10, 0x19, 0x0F, 0x21, 0x30, 0x29, 0x50, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x10, 0x01, 0x29, 0x10, + 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x09, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x01, 0x19, 0x31, 0x84, 0x19, 0x11, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x83, 0x21, 0xD6, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x02, 0x19, 0x32, 0x05, 0x19, 0x31, 0x80, 0x19, 0x10, 0x05, 0x19, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x04, 0x21, 0x30, 0x07, 0x21, 0x10, 0x80, 0x19, 0x10, 0x02, 0x21, 0x10, 0x80, 0x19, 0x10, 0x01, 0x21, 0x10, 0x01, 0x19, 0x10, 0x04, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x12, 0x19, 0x32, 0x03, 0x19, 0x33, 0x82, 0x19, 0x74, 0x19, 0x75, 0x19, 0x54, 0x01, 0x19, 0x33, 0x84, 0x19, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x30, 0x21, 0x10, 0x06, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, + 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8C, 0x19, 0x30, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x21, 0xD6, 0x21, 0xF7, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x33, 0x11, 0x32, 0x01, 0x11, 0x11, 0x82, 0x19, 0x11, 0x19, 0x10, 0x19, 0x11, 0x01, 0x19, 0x10, 0x80, 0x19, 0x30, 0x01, 0x19, 0x10, 0x81, 0x19, 0x11, 0x19, 0x10, 0x02, 0x21, 0x31, 0x82, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x11, 0x81, 0x21, 0x31, 0x21, 0x10, 0x02, 0x21, 0x31, 0x01, 0x19, 0x31, 0x86, 0x19, 0x11, 0x11, 0x11, 0x10, 0xF2, 0x11, 0x53, 0x11, 0x74, 0x19, 0x95, 0x19, 0xB6, 0x03, 0x19, 0xD7, 0x81, 0x19, 0xB7, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x0B, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x85, 0x30, 0xEF, 0x30, 0x8D, 0x50, 0xCE, 0xAA, 0xD5, 0xB2, 0x53, 0xAA, 0x12, 0x01, 0xA1, 0xF1, 0x86, 0x89, 0xEE, 0xFF, 0x7F, 0xEF, 0x5D, 0xE7, 0x7C, 0xDF, 0x3B, 0xD7, 0x3B, 0xD7, 0x3A, 0x03, 0xCF, 0x3A, 0x8A, 0xD7, 0x5A, 0xD7, 0x7B, 0xDF, 0x7B, 0xE7, 0x7D, 0xE6, 0xBD, 0x8B, 0x51, 0x82, 0x2F, 0x92, 0x31, 0xAA, 0x93, 0xBA, 0xF4, 0xCB, 0x15, 0x02, 0xD3, 0x15, 0x81, 0xD2, 0xF5, 0xDB, 0x15, 0x02, 0xD3, 0x15, 0x88, 0xD2, 0xF5, 0xCA, 0xF5, 0xCB, 0x15, 0xC2, 0xF4, 0xBB, 0x34, 0xBC, 0x55, 0xE6, 0x5B, 0xE7, 0x3C, 0xDF, 0x5B, 0x03, 0xD7, 0x3B, 0x80, 0xCF, 0x3B, 0x08, 0xCF, 0x3A, 0x8A, 0xCF, 0x5A, 0xD7, 0x5B, 0xD7, 0x7B, + 0xE7, 0x7D, 0xEE, 0xFD, 0x83, 0x30, 0x82, 0x4F, 0x92, 0x31, 0xAA, 0x92, 0xBA, 0xD4, 0xCB, 0x15, 0x02, 0xD3, 0x16, 0x01, 0xD3, 0x15, 0x01, 0xDA, 0xF5, 0x01, 0xD2, 0xF5, 0x89, 0xD3, 0x15, 0xCB, 0x15, 0xC2, 0xF4, 0xB3, 0x12, 0xE5, 0xDA, 0xEF, 0x1C, 0xDF, 0x1B, 0xDF, 0x3B, 0xD7, 0x5B, 0xD7, 0x3B, 0x01, 0xD7, 0x3A, 0x81, 0xCF, 0x3A, 0xCF, 0x5B, 0x01, 0xCF, 0x3A, 0x01, 0xCF, 0x5A, 0x01, 0xCF, 0x3A, 0x01, 0xD7, 0x3A, 0x8A, 0xD7, 0x5A, 0xD7, 0x5B, 0xDF, 0x7C, 0xE7, 0x5D, 0xEE, 0xBD, 0x8B, 0x11, 0x8A, 0x30, 0x9A, 0x11, 0xAA, 0x73, 0xBA, 0xB4, 0xCA, 0xF5, 0x07, 0xD2, 0xF5, 0x02, 0xD3, 0x15, 0x82, 0xD3, 0x35, 0xD3, 0x36, 0xBA, 0xB4, 0x01, 0xA2, 0x12, 0x83, 0xAA, 0x53, 0xC2, 0xD5, 0xCB, 0x15, 0xD3, 0x15, 0x03, 0xD2, 0xF5, 0x80, 0xDB, 0x15, 0x03, 0xD2, 0xF5, 0x02, 0xD2, 0xD5, 0x86, 0xCA, 0xF4, 0xC3, 0x53, 0xDD, 0x17, 0xFF, 0x3D, 0xF7, 0x3B, 0xE7, 0x5B, 0xE7, 0x5A, 0x01, 0xDF, 0x5A, 0x07, 0xD7, 0x3A, 0x8F, 0xDF, 0x3A, 0xDF, 0x5A, 0xE7, 0x7B, 0xE7, 0x3A, 0xE6, 0xFB, 0xFF, 0x1D, 0x92, 0xD0, 0x89, 0xEF, 0x9A, 0x10, 0xBA, 0xB4, 0xC2, 0xF5, 0xCA, 0xF5, 0xCA, 0xD5, 0xCA, 0xF5, 0xD2, 0xF5, 0xD3, 0x15, 0x01, 0xD2, 0xF5, 0x81, 0xD3, 0x16, 0xD3, 0x15, 0x01, 0xD2, 0xF5, 0x87, 0xD3, 0x15, 0xCB, 0x15, 0xC2, 0xF4, 0xB3, 0x33, 0xC4, 0xB6, 0xF7, 0x1D, 0xE7, 0x3C, 0xDF, 0x5C, 0x01, 0xD7, 0x1B, 0x89, 0xD7, 0x3B, 0xDF, 0x5C, 0xE7, 0x5D, 0xDE, 0x5C, 0x71, 0xED, 0x92, 0x10, 0x9A, 0x31, 0xB2, 0x93, 0xC2, 0xF5, 0xCB, 0x15, 0x01, 0xD3, 0x15, 0x80, 0xD2, + 0xF5, 0x01, 0xD3, 0x15, 0x81, 0xD2, 0xF5, 0xDA, 0xF5, 0x03, 0xD2, 0xF5, 0x86, 0xCA, 0xF4, 0xC3, 0x34, 0xCC, 0x76, 0xFE, 0xFC, 0xEF, 0x3B, 0xE7, 0x3B, 0xDF, 0x5A, 0x03, 0xD7, 0x3A, 0x03, 0xD7, 0x5A, 0x89, 0xDF, 0x7B, 0xDF, 0x5B, 0xEF, 0x5C, 0xFF, 0x1D, 0x79, 0xCD, 0x91, 0xCF, 0xA2, 0x11, 0xB2, 0x73, 0xCA, 0xF5, 0xCB, 0x15, 0x01, 0xD3, 0x15, 0x01, 0xD2, 0xF5, 0x01, 0xD2, 0xD5, 0x81, 0xDA, 0xF5, 0xDA, 0xF6, 0x01, 0xDA, 0xF5, 0x01, 0xDB, 0x16, 0x86, 0xD3, 0x15, 0xCA, 0xF5, 0x99, 0xF1, 0x99, 0xD0, 0xB2, 0x73, 0xC2, 0xD5, 0xCA, 0xF5, 0x02, 0xD3, 0x16, 0x01, 0xD3, 0x15, 0x80, 0xD2, 0xF5, 0x03, 0xD3, 0x15, 0x86, 0xCB, 0x15, 0xC2, 0xF4, 0xB3, 0x12, 0xC4, 0xB6, 0xF7, 0x1D, 0xE7, 0x5C, 0xDF, 0x5C, 0x02, 0xD7, 0x3B, 0x8A, 0xD7, 0x5C, 0xDF, 0x5C, 0xE7, 0x3D, 0xEE, 0xDD, 0x8B, 0x31, 0x8A, 0x50, 0x9A, 0x31, 0xAA, 0x72, 0xBA, 0xD4, 0xCB, 0x15, 0xCA, 0xF5, 0x03, 0xD3, 0x15, 0x04, 0xD2, 0xF5, 0x93, 0xCA, 0xF4, 0xC2, 0xF4, 0xBB, 0x53, 0xDD, 0x99, 0xEE, 0xFC, 0xE7, 0x3C, 0xDF, 0x5C, 0xD7, 0x1B, 0xD7, 0x3B, 0xDF, 0x7C, 0xE7, 0x7D, 0xEF, 0x7E, 0xBD, 0x37, 0x71, 0xCD, 0x89, 0xF0, 0x9A, 0x11, 0xB2, 0x93, 0xC2, 0xF5, 0xCB, 0x15, 0xCA, 0xF5, 0x01, 0xD3, 0x15, 0x82, 0xD3, 0x16, 0xD3, 0x15, 0xD2, 0xF5, 0x01, 0xD2, 0xF6, 0x02, 0xD2, 0xF5, 0x84, 0xCB, 0x14, 0xC3, 0x34, 0xCC, 0x56, 0xFE, 0xDC, 0xEF, 0x1B, 0x01, 0xE7, 0x3B, 0x05, 0xDF, 0x3A, 0x01, 0xDF, 0x5A, 0x8A, 0xDF, 0x7B, 0xE7, 0x5B, 0xEF, 0x5B, 0xFF, 0x7E, 0xA3, 0x52, 0x92, 0x30, 0x91, 0xF0, + 0xAA, 0x52, 0xC2, 0xD4, 0xCA, 0xD4, 0xCA, 0xD5, 0x06, 0xD2, 0xF5, 0x01, 0xD3, 0x15, 0x01, 0xCB, 0x15, 0x82, 0xC2, 0xF4, 0xA2, 0xD1, 0xFF, 0x3E, 0x01, 0xEF, 0x1C, 0x04, 0xEF, 0x3C, 0x87, 0xF7, 0x5C, 0xFF, 0x3D, 0xFF, 0x1E, 0xFE, 0x1C, 0xA2, 0x50, 0xA9, 0xD0, 0xB9, 0xB1, 0xC1, 0xB2, 0x01, 0xC1, 0xD3, 0x01, 0xC1, 0xF4, 0x89, 0xB9, 0xF5, 0xBA, 0x16, 0xB2, 0x58, 0xA2, 0xBB, 0x40, 0xD7, 0x29, 0x1A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x9D, 0x11, 0x9E, 0x03, 0x09, 0x9E, 0x01, 0x11, 0x9E, 0x95, 0x19, 0x7D, 0x21, 0x3C, 0x39, 0x1A, 0x48, 0xD8, 0x9A, 0x3B, 0xAA, 0x39, 0xAA, 0x37, 0xAA, 0x16, 0xAA, 0x37, 0xA2, 0x57, 0x92, 0x16, 0x7A, 0x36, 0x6B, 0x18, 0x54, 0x1A, 0x4D, 0xBD, 0x36, 0x1D, 0x2E, 0x1D, 0x26, 0x5C, 0x0E, 0x79, 0x06, 0xD8, 0x06, 0xD7, 0x07, 0x18, 0x01, 0x0F, 0x58, 0x89, 0x1F, 0x7A, 0x2F, 0x5A, 0x3F, 0x1C, 0x5E, 0xBD, 0x75, 0x9B, 0x52, 0xF3, 0x82, 0xB4, 0x9A, 0x34, 0xA2, 0x35, 0xAA, 0x35, 0x01, 0x99, 0xF4, 0x81, 0x71, 0x31, 0x69, 0x31, 0x01, 0x69, 0x52, 0x8C, 0x69, 0x11, 0x92, 0x15, 0xA2, 0x36, 0xAA, 0x56, 0xA2, 0x15, 0xA2, 0x76, 0x71, 0x51, 0x38, 0x4D, 0x49, 0x10, 0x49, 0x71, 0x41, 0x51, 0x39, 0x50, 0x39, 0x51, 0x03, 0x31, 0x50, 0x03, 0x29, 0x50, 0x06, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x85, 0x21, 0x2F, + 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x50, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0xB5, 0x1A, 0x17, 0x19, 0xF7, 0x11, 0x95, 0x09, 0x12, 0x11, 0x31, 0x19, 0x51, 0x21, 0x51, 0x02, 0x19, 0x30, 0x01, 0x19, 0x2F, 0x01, 0x19, 0x30, 0x86, 0x19, 0x31, 0x11, 0x32, 0x11, 0x13, 0x21, 0xB6, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x01, 0x11, 0x12, 0x81, 0x19, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x12, 0x82, 0x19, 0x53, 0x19, 0x54, 0x19, 0x74, 0x01, 0x11, 0x75, 0x80, 0x11, 0x95, 0x01, 0x11, 0x96, 0x01, 0x19, 0xB7, 0x84, 0x19, 0xB6, 0x19, 0x96, 0x19, 0x75, 0x19, 0x54, 0x11, 0x33, 0x01, 0x11, 0x12, 0x80, 0x19, 0x12, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, + 0x19, 0x11, 0x8D, 0x19, 0x32, 0x11, 0x53, 0x11, 0x74, 0x21, 0xF6, 0x19, 0xD6, 0x19, 0xD7, 0x21, 0xD7, 0x11, 0x75, 0x09, 0x13, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x19, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x50, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x06, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x21, 0x2F, 0x05, 0x21, 0x10, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x20, 0xEF, 0x29, 0x10, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x8E, 0x21, 0x31, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x19, 0x53, 0x19, 0x74, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF6, 0x19, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x11, 0x03, 0x19, 0x31, 0x01, 0x19, 0x10, 0x82, 0x21, 0x30, 0x19, 0x10, 0x21, 0x10, 0x01, 0x19, 0x30, 0x80, 0x21, 0x30, 0x01, 0x19, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x08, 0x21, 0x10, 0x80, 0x21, 0x0F, + 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x31, 0x80, 0x19, 0x11, 0x02, 0x19, 0x31, 0x03, 0x19, 0x32, 0x80, 0x19, 0x13, 0x01, 0x19, 0x33, 0x01, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x30, 0x84, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x19, 0x95, 0x02, 0x21, 0xF7, 0x83, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x30, 0x29, 0x51, 0x03, 0x21, 0x30, 0x84, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x11, 0x32, 0x01, 0x11, 0x33, 0x90, 0x11, 0x74, 0x19, 0xB5, 0x19, 0x95, 0x19, 0xB6, 0x19, 0xB5, 0x19, 0x95, 0x19, 0xB5, 0x19, + 0xB6, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x19, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x05, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x30, 0xEF, 0x30, 0x8D, 0x48, 0xCE, 0xAA, 0xD5, 0xB2, 0x53, 0xAA, 0x12, 0x01, 0xA1, 0xF1, 0x84, 0x89, 0xEE, 0xFF, 0x7F, 0xEF, 0x5C, 0xE7, 0x7C, 0xDF, 0x5B, 0x02, 0xD7, 0x3A, 0x02, 0xD7, 0x5A, 0x80, 0xD7, 0x7A, 0x01, 0xDF, 0x7B, 0x87, 0xEF, 0x7D, 0xE6, 0xBC, 0x8B, 0x31, 0x82, 0x2F, 0x92, 0x30, 0xAA, 0xB3, 0xBA, 0xF4, 0xCB, 0x35, 0x01, 0xD3, 0x35, 0x03, 0xD3, 0x15, 0x81, 0xD3, 0x35, 0xDB, 0x36, 0x01, 0xD3, 0x15, 0x85, 0xCB, 0x15, 0xC3, 0x14, 0xBB, 0x33, 0xC4, 0x55, 0xE6, 0x5B, 0xE7, 0x3C, 0x01, 0xDF, 0x5B, 0x01, 0xDF, 0x3B, 0x01, 0xD7, 0x3A, 0x80, 0xD7, 0x5A, 0x01, 0xD7, 0x3A, 0x80, 0xCF, 0x3A, 0x05, 0xD7, 0x5A, 0x01, 0xDF, 0x7B, 0x87, 0xE7, 0x7C, 0xEF, 0x1D, 0x8B, 0x30, 0x82, 0x4F, 0x92, 0x31, 0xAA, 0x93, 0xBA, 0xD4, 0xCB, 0x15, 0x02, 0xD3, 0x16, 0x80, 0xD3, 0x15, 0x02, 0xDB, 0x15, 0x80, 0xDB, 0x35, 0x01, 0xD3, 0x15, 0x85, 0xCB, 0x14, 0xC3, 0x14, 0xB3, 0x12, 0xE5, 0xDA, 0xEF, 0x1C, 0xE7, 0x3B, 0x01, 0xDF, 0x3A, 0x80, 0xD7, 0x3A, 0x04, 0xD7, 0x5A, 0x80, 0xD7, 0x3A, 0x01, 0xD7, 0x5A, 0x01, 0xD7, 0x3A, 0x8D, 0xD7, 0x5A, 0xD7, 0x3A, 0xD7, 0x5A, 0xDF, 0x5B, 0xDF, 0x7C, 0xEF, 0x7D, 0xEE, 0xDD, 0x8B, 0x31, 0x8A, 0x50, 0x9A, 0x31, 0xAA, 0x72, 0xC2, 0xD4, 0xCA, 0xF5, + 0xD3, 0x15, 0x01, 0xD3, 0x16, 0x80, 0xDB, 0x16, 0x01, 0xDB, 0x15, 0x04, 0xD3, 0x15, 0x82, 0xD3, 0x35, 0xD3, 0x36, 0xBA, 0xB4, 0x01, 0xA2, 0x12, 0x83, 0xB2, 0x94, 0xC2, 0xF5, 0xCB, 0x15, 0xD3, 0x36, 0x03, 0xD3, 0x15, 0x01, 0xDB, 0x15, 0x80, 0xD3, 0x15, 0x03, 0xD2, 0xF5, 0x86, 0xD2, 0xF4, 0xC3, 0x13, 0xCC, 0x35, 0xFE, 0x9B, 0xF7, 0x3C, 0xEF, 0x5A, 0xE7, 0x3A, 0x04, 0xDF, 0x5A, 0x80, 0xD7, 0x3A, 0x01, 0xD7, 0x39, 0x81, 0xDF, 0x59, 0xD7, 0x39, 0x01, 0xDF, 0x5A, 0x89, 0xDF, 0x39, 0xDF, 0x5A, 0xE7, 0x9B, 0xE7, 0x5A, 0xEF, 0x1B, 0xD5, 0x58, 0x82, 0x2E, 0x91, 0xEF, 0xA2, 0x31, 0xC2, 0xD4, 0x02, 0xCA, 0xF5, 0x08, 0xD3, 0x15, 0x86, 0xCB, 0x15, 0xC3, 0x14, 0xBB, 0x53, 0xB3, 0xF3, 0xF6, 0xFD, 0xEF, 0x3C, 0xE7, 0x5B, 0x01, 0xDF, 0x3B, 0x8A, 0xDF, 0x5B, 0xE7, 0x5C, 0xEF, 0x7D, 0xC5, 0x98, 0x7A, 0x0E, 0x92, 0x10, 0xA2, 0x31, 0xB2, 0xB3, 0xCB, 0x15, 0xD3, 0x36, 0xD3, 0x16, 0x02, 0xD3, 0x15, 0x03, 0xDB, 0x15, 0x01, 0xD3, 0x15, 0x89, 0xD2, 0xF4, 0xCB, 0x34, 0xC3, 0x73, 0xDD, 0x38, 0xFF, 0x1C, 0xEF, 0x5B, 0xE7, 0x7A, 0xDF, 0x7A, 0xDF, 0x5A, 0xD7, 0x3A, 0x02, 0xD7, 0x39, 0x80, 0xD7, 0x5A, 0x01, 0xDF, 0x7A, 0x89, 0xDF, 0x9A, 0xE7, 0x9B, 0xEF, 0x9B, 0xFF, 0x7E, 0x9B, 0x31, 0x89, 0xEF, 0x9A, 0x11, 0xB2, 0x73, 0xC2, 0xF4, 0xCB, 0x15, 0x02, 0xD3, 0x15, 0x03, 0xD2, 0xF5, 0x8B, 0xDA, 0xF5, 0xDB, 0x16, 0xDB, 0x15, 0xDB, 0x16, 0xDB, 0x36, 0xD3, 0x36, 0xCB, 0x15, 0x99, 0xF0, 0x99, 0xF1, 0xB2, 0x73, 0xC2, 0xF5, 0xCB, 0x16, 0x03, 0xD3, 0x16, 0x04, + 0xD3, 0x15, 0x86, 0xD3, 0x35, 0xCB, 0x34, 0xC3, 0x14, 0xBB, 0x33, 0xCC, 0xB6, 0xFF, 0x1D, 0xEF, 0x5C, 0x03, 0xDF, 0x5B, 0x01, 0xDF, 0x5C, 0x88, 0xEF, 0x5D, 0xEE, 0xFD, 0x8B, 0x31, 0x8A, 0x50, 0x9A, 0x31, 0xAA, 0x92, 0xBA, 0xD4, 0xCB, 0x15, 0xD3, 0x35, 0x03, 0xD3, 0x15, 0x80, 0xDB, 0x15, 0x02, 0xD3, 0x15, 0x87, 0xD2, 0xF5, 0xCA, 0xF4, 0xC2, 0xF4, 0xBB, 0x53, 0xDD, 0xB9, 0xEE, 0xFB, 0xE7, 0x3B, 0xE7, 0x5B, 0x01, 0xDF, 0x3B, 0x01, 0xE7, 0x7C, 0x87, 0xF7, 0x7E, 0xAC, 0x95, 0x79, 0xEE, 0x89, 0xF0, 0x9A, 0x31, 0xB2, 0xB3, 0xCB, 0x15, 0xD3, 0x36, 0x01, 0xD3, 0x16, 0x01, 0xD3, 0x36, 0x01, 0xD3, 0x15, 0x80, 0xD2, 0xF5, 0x01, 0xD3, 0x16, 0x01, 0xD3, 0x15, 0x86, 0xCB, 0x34, 0xC3, 0x73, 0xDD, 0x38, 0xFF, 0x1C, 0xEF, 0x3B, 0xE7, 0x3B, 0xE7, 0x5B, 0x05, 0xDF, 0x3A, 0x01, 0xDF, 0x5A, 0x88, 0xE7, 0x7A, 0xE7, 0x7B, 0xEF, 0x9B, 0xFF, 0x9E, 0xAB, 0xD3, 0x92, 0x50, 0x91, 0xEF, 0xA2, 0x31, 0xC2, 0xF4, 0x01, 0xCA, 0xF5, 0x01, 0xD2, 0xF5, 0x81, 0xD3, 0x15, 0xDB, 0x16, 0x04, 0xD3, 0x15, 0x89, 0xCB, 0x15, 0xCB, 0x14, 0xC2, 0xF4, 0xA2, 0xF1, 0xFF, 0x1E, 0xF7, 0x3C, 0xEF, 0x3C, 0xEF, 0x3B, 0xEF, 0x3C, 0xEF, 0x3B, 0x01, 0xEF, 0x5C, 0x95, 0xEF, 0x5B, 0xF7, 0x7C, 0xFF, 0x5D, 0xFF, 0x3E, 0xFD, 0xFC, 0xA2, 0x70, 0xA9, 0xD0, 0xB9, 0xB1, 0xC1, 0xB2, 0xC1, 0xD3, 0xC1, 0xD4, 0xB9, 0xF4, 0xC1, 0xF5, 0xBA, 0x16, 0xB2, 0x58, 0x9A, 0x9B, 0x40, 0xF7, 0x29, 0x1A, 0x21, 0x5B, 0x19, 0x7D, 0x11, 0x9D, 0x11, 0x9E, 0x02, 0x09, 0x9E, 0xA7, 0x09, 0x7E, 0x09, 0x9E, + 0x11, 0x9E, 0x11, 0x5D, 0x19, 0x5D, 0x29, 0x3C, 0x39, 0x1A, 0x61, 0x18, 0x9A, 0x5A, 0xA2, 0x38, 0xAA, 0x37, 0xAA, 0x57, 0xA2, 0x36, 0x9A, 0x36, 0x82, 0x36, 0x6A, 0xB7, 0x5B, 0x98, 0x55, 0x5C, 0x46, 0x1D, 0x36, 0x1D, 0x26, 0x5B, 0x0E, 0x79, 0x06, 0xD8, 0x07, 0x18, 0x06, 0xF7, 0x07, 0x37, 0x17, 0x78, 0x1F, 0x79, 0x2F, 0x5A, 0x47, 0x1C, 0x66, 0xBD, 0x6D, 0x3A, 0x5A, 0xD3, 0x82, 0x94, 0x92, 0x34, 0xA2, 0x14, 0xA2, 0x15, 0x99, 0xF5, 0x91, 0xD4, 0x71, 0x31, 0x02, 0x69, 0x52, 0x8D, 0x61, 0x11, 0x79, 0x52, 0xA2, 0x56, 0xAA, 0x56, 0xA1, 0xF4, 0xA2, 0x35, 0x8A, 0x14, 0x48, 0x8E, 0x40, 0xCF, 0x49, 0x50, 0x41, 0x71, 0x39, 0x30, 0x31, 0x50, 0x31, 0x51, 0x01, 0x31, 0x50, 0x01, 0x29, 0x50, 0x81, 0x29, 0x30, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x04, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8F, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x95, 0x19, 0xF7, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x12, 0x11, 0x31, 0x19, 0x51, 0x21, 0x51, 0x21, 0x50, 0x19, 0x2F, 0x21, 0x2F, 0x21, + 0x50, 0x19, 0x2F, 0x01, 0x19, 0x30, 0x83, 0x19, 0x31, 0x11, 0x32, 0x09, 0x12, 0x19, 0xB5, 0x01, 0x21, 0xF7, 0x80, 0x19, 0x95, 0x01, 0x11, 0x12, 0x80, 0x19, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x02, 0x11, 0x53, 0x02, 0x11, 0x54, 0x83, 0x11, 0x74, 0x11, 0x54, 0x11, 0x53, 0x19, 0x33, 0x01, 0x19, 0x32, 0x80, 0x19, 0x12, 0x03, 0x19, 0x11, 0x84, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8E, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x19, 0x94, 0x19, 0xB6, 0x19, 0xF7, 0x21, 0xF7, 0x21, 0xD7, 0x11, 0x55, 0x11, 0x34, 0x11, 0x13, 0x11, 0x12, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x80, 0x21, + 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x87, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x10, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8E, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x19, 0x74, 0x19, 0xB6, 0x22, 0x17, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x03, 0x19, 0x31, 0x80, 0x19, 0x30, 0x03, 0x19, 0x10, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x02, 0x19, 0x10, 0x83, 0x21, 0x31, + 0x19, 0x31, 0x21, 0x31, 0x21, 0x32, 0x01, 0x19, 0x11, 0x03, 0x19, 0x12, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0A, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x0C, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x31, 0x82, 0x19, 0x33, 0x11, 0x33, 0x11, 0x75, 0x01, 0x21, 0xF7, 0x87, 0x22, 0x17, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x21, 0x51, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x10, 0x06, 0x21, 0x30, 0x02, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x11, 0x85, 0x10, 0xF1, 0x11, 0x11, 0x11, 0x12, 0x11, 0x32, 0x19, 0x73, 0x19, 0x74, 0x03, 0x19, 0x53, 0x01, 0x11, 0x32, 0x84, 0x11, 0x11, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x4F, 0x02, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x05, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x89, 0x28, 0xEF, 0x30, 0x8D, 0x48, 0xAE, 0xAA, 0xD5, 0xB2, 0x53, 0xAA, 0x12, 0xA9, 0xF1, 0xA1, 0xF1, 0x89, 0xEE, 0xFF, 0x7F, 0x01, 0xEF, 0x7C, 0x83, 0xE7, 0x5B, 0xDF, 0x3A, 0xDF, 0x5A, 0xDF, 0x3A, 0x01, + 0xDF, 0x5A, 0x80, 0xDF, 0x59, 0x01, 0xDF, 0x7A, 0x89, 0xE7, 0x9B, 0xEF, 0x9D, 0xE6, 0xBC, 0x8B, 0x51, 0x82, 0x2F, 0x92, 0x30, 0xAA, 0xD3, 0xBB, 0x14, 0xCB, 0x35, 0xD3, 0x56, 0x01, 0xD3, 0x36, 0x8D, 0xD3, 0x35, 0xD3, 0x15, 0xD3, 0x35, 0xDB, 0x36, 0xDB, 0x56, 0xD3, 0x35, 0xD3, 0x15, 0xCB, 0x35, 0xCB, 0x34, 0xBB, 0x74, 0xC4, 0x75, 0xE6, 0x5A, 0xEF, 0x3C, 0xE7, 0x5B, 0x03, 0xDF, 0x5A, 0x01, 0xD7, 0x5A, 0x80, 0xD7, 0x3A, 0x06, 0xD7, 0x5A, 0x8A, 0xDF, 0x5A, 0xDF, 0x7A, 0xE7, 0x9B, 0xEF, 0x7C, 0xF7, 0x1D, 0x8B, 0x30, 0x82, 0x4F, 0x92, 0x30, 0xAA, 0x92, 0xBA, 0xF4, 0xCB, 0x36, 0x02, 0xD3, 0x36, 0x02, 0xDB, 0x36, 0x80, 0xDB, 0x35, 0x03, 0xD3, 0x35, 0x85, 0xCB, 0x34, 0xB3, 0x52, 0xE5, 0xF9, 0xF7, 0x1C, 0xEF, 0x3B, 0xE7, 0x5A, 0x03, 0xDF, 0x5A, 0x07, 0xD7, 0x5A, 0x82, 0xD7, 0x59, 0xDF, 0x5A, 0xDF, 0x7A, 0x01, 0xE7, 0x7B, 0x87, 0xEF, 0x7D, 0xF6, 0xFD, 0x93, 0x31, 0x8A, 0x50, 0x9A, 0x31, 0xAA, 0x92, 0xC2, 0xD4, 0xCB, 0x35, 0x02, 0xD3, 0x36, 0x01, 0xDB, 0x36, 0x80, 0xD3, 0x15, 0x01, 0xD3, 0x35, 0x80, 0xDB, 0x35, 0x01, 0xD3, 0x35, 0x82, 0xD3, 0x36, 0xD3, 0x56, 0xBA, 0x94, 0x01, 0xA2, 0x12, 0x81, 0xBA, 0xD5, 0xCB, 0x15, 0x01, 0xD3, 0x36, 0x82, 0xDB, 0x56, 0xD3, 0x36, 0xD3, 0x35, 0x02, 0xDB, 0x36, 0x01, 0xDB, 0x16, 0x02, 0xD3, 0x15, 0x85, 0xCB, 0x14, 0xC3, 0x53, 0xED, 0xD9, 0xFE, 0xFB, 0xF7, 0x5B, 0xEF, 0x5A, 0x01, 0xE7, 0x5A, 0x03, 0xDF, 0x59, 0x82, 0xDF, 0x5A, 0xDF, 0x7A, 0xDF, 0x5A, 0x04, 0xDF, 0x59, 0x80, 0xE7, 0x79, 0x01, 0xE7, + 0x7A, 0x8A, 0xEF, 0x3B, 0xE6, 0x5A, 0x92, 0xEF, 0x89, 0xEE, 0x91, 0xCF, 0xB2, 0xB3, 0xC2, 0xF5, 0xCB, 0x15, 0xD3, 0x35, 0xD3, 0x36, 0xD3, 0x15, 0x04, 0xD3, 0x35, 0x81, 0xD3, 0x36, 0xD3, 0x15, 0x01, 0xCB, 0x35, 0x85, 0xC3, 0x54, 0xB3, 0xD3, 0xF6, 0x9C, 0xF7, 0x3C, 0xEF, 0x5B, 0xE7, 0x3B, 0x01, 0xE7, 0x5B, 0x87, 0xE7, 0x5C, 0xF7, 0x7D, 0xBD, 0x16, 0x7A, 0x0E, 0x92, 0x10, 0x9A, 0x51, 0xB2, 0xB3, 0xCB, 0x36, 0x01, 0xD3, 0x36, 0x82, 0xD3, 0x15, 0xD3, 0x36, 0xD3, 0x35, 0x01, 0xDB, 0x15, 0x01, 0xDB, 0x35, 0x80, 0xD3, 0x15, 0x01, 0xD3, 0x35, 0x86, 0xCB, 0x34, 0xC3, 0xB4, 0xED, 0xD9, 0xFF, 0x5C, 0xEF, 0x7B, 0xE7, 0x7B, 0xE7, 0x7A, 0x01, 0xDF, 0x5A, 0x81, 0xDF, 0x59, 0xD7, 0x59, 0x03, 0xDF, 0x7A, 0x01, 0xE7, 0x9A, 0x89, 0xEF, 0xBB, 0xFF, 0x9D, 0xBC, 0x75, 0x8A, 0x2F, 0x92, 0x30, 0xAA, 0x72, 0xBA, 0xF4, 0xC3, 0x15, 0xCB, 0x35, 0xD3, 0x35, 0x03, 0xD3, 0x15, 0x81, 0xD2, 0xF5, 0xDA, 0xF5, 0x01, 0xDB, 0x15, 0x83, 0xDB, 0x35, 0xD3, 0x35, 0xD3, 0x56, 0xCB, 0x35, 0x01, 0x99, 0xD0, 0x81, 0xB2, 0x93, 0xC2, 0xF5, 0x04, 0xD3, 0x36, 0x05, 0xD3, 0x35, 0x87, 0xCB, 0x35, 0xCB, 0x34, 0xBB, 0x33, 0xCC, 0xD6, 0xFF, 0x3D, 0xEF, 0x5C, 0xE7, 0x7B, 0xE7, 0x5B, 0x01, 0xDF, 0x5B, 0x01, 0xE7, 0x7C, 0x8C, 0xEF, 0x7D, 0xF6, 0xFD, 0x8B, 0x31, 0x8A, 0x4F, 0x92, 0x31, 0xAA, 0x92, 0xBA, 0xF4, 0xCB, 0x35, 0xD3, 0x36, 0xD3, 0x35, 0xD3, 0x36, 0xDB, 0x36, 0xD3, 0x35, 0x01, 0xDB, 0x35, 0x80, 0xD3, 0x35, 0x01, 0xD3, 0x15, 0x92, 0xCB, 0x14, 0xCB, 0x34, 0xBB, 0x73, + 0xE5, 0xD9, 0xEF, 0x1B, 0xEF, 0x5B, 0xE7, 0x5B, 0xDF, 0x3A, 0xDF, 0x3B, 0xE7, 0x7B, 0xEF, 0x7C, 0xFF, 0x7E, 0x9B, 0xF2, 0x82, 0x0E, 0x91, 0xF0, 0x9A, 0x31, 0xB2, 0xD4, 0xCB, 0x36, 0xD3, 0x56, 0x05, 0xD3, 0x36, 0x80, 0xDB, 0x36, 0x01, 0xD3, 0x36, 0x01, 0xD3, 0x35, 0x88, 0xCB, 0x54, 0xC3, 0xD4, 0xED, 0xD9, 0xFF, 0x3C, 0xEF, 0x7B, 0xEF, 0x5A, 0xE7, 0x5A, 0xDF, 0x3A, 0xDF, 0x39, 0x03, 0xDF, 0x5A, 0x02, 0xE7, 0x5A, 0x87, 0xE7, 0x7B, 0xEF, 0x9B, 0xFF, 0x9D, 0xB4, 0x54, 0x8A, 0x4F, 0x89, 0xEF, 0x9A, 0x10, 0xC3, 0x15, 0x01, 0xD3, 0x35, 0x01, 0xD3, 0x15, 0x01, 0xD3, 0x36, 0x04, 0xD3, 0x35, 0x84, 0xCB, 0x15, 0xCB, 0x35, 0xC3, 0x14, 0xAA, 0xF1, 0xFF, 0x3E, 0x01, 0xF7, 0x5C, 0x80, 0xEF, 0x5B, 0x02, 0xEF, 0x3B, 0x02, 0xEF, 0x5B, 0x86, 0xF7, 0x7C, 0xFF, 0x7D, 0xFF, 0x5E, 0xFE, 0x7D, 0x99, 0xEE, 0xA9, 0xD0, 0xB9, 0xB2, 0x01, 0xC1, 0xD3, 0x8A, 0xC1, 0xD4, 0xB9, 0xF5, 0xB2, 0x16, 0xAA, 0x38, 0x9A, 0x7A, 0x40, 0xD7, 0x31, 0x1A, 0x21, 0x5B, 0x19, 0x7C, 0x11, 0x7D, 0x11, 0x9E, 0x05, 0x09, 0x9E, 0xA6, 0x11, 0x7E, 0x11, 0x5D, 0x19, 0x5D, 0x29, 0x1B, 0x38, 0xD9, 0x71, 0xDA, 0xA2, 0x7A, 0xA2, 0x37, 0xA2, 0x16, 0xA2, 0x36, 0x9A, 0x36, 0x8A, 0x57, 0x7A, 0x96, 0x5B, 0x37, 0x5D, 0x1B, 0x4D, 0xFC, 0x3E, 0x3C, 0x2E, 0x5B, 0x0E, 0x78, 0x06, 0xD8, 0x0F, 0x38, 0x07, 0x37, 0x07, 0x57, 0x0F, 0x58, 0x1F, 0x79, 0x2F, 0x5A, 0x47, 0x1B, 0x66, 0xBC, 0x64, 0xD8, 0x52, 0xB2, 0x82, 0x94, 0x92, 0x34, 0xA2, 0x35, 0xA2, 0x15, 0x9A, 0x15, 0x89, 0xD4, 0x69, 0x32, + 0x69, 0x72, 0x61, 0x72, 0x01, 0x61, 0x52, 0x8D, 0x69, 0x31, 0x92, 0x15, 0xA2, 0x56, 0x99, 0xF4, 0x9A, 0x14, 0x9A, 0x76, 0x69, 0x30, 0x40, 0x6D, 0x40, 0xEF, 0x41, 0x51, 0x39, 0x50, 0x31, 0x30, 0x31, 0x50, 0x29, 0x30, 0x04, 0x29, 0x50, 0x07, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x19, 0xB5, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x12, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x4F, 0x01, 0x21, 0x2F, 0x01, 0x19, 0x30, 0x86, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x21, 0xD6, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x01, 0x11, 0x32, 0x80, 0x19, 0x31, 0x01, 0x21, 0x10, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x20, 0xEF, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x31, 0x82, 0x19, 0x11, 0x10, 0xF1, 0x11, 0x11, 0x02, 0x19, 0x52, 0x80, 0x11, 0x32, 0x02, 0x11, 0x12, 0x80, 0x11, + 0x11, 0x01, 0x19, 0x31, 0x81, 0x21, 0x52, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x10, 0x19, 0x11, 0x11, 0x11, 0x11, 0x33, 0x11, 0x74, 0x19, 0x95, 0x22, 0x17, 0x19, 0xF7, 0x21, 0xF7, 0x19, 0x75, 0x11, 0x13, 0x11, 0x12, 0x01, 0x19, 0x52, 0x81, 0x19, 0x30, 0x19, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x10, 0x0A, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x31, 0x01, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x10, 0x29, + 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x33, 0x19, 0x74, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x86, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x11, 0x19, 0x10, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x21, 0x10, 0x82, 0x19, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x04, 0x21, 0x31, 0x05, 0x21, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x17, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0E, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x89, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, + 0x33, 0x11, 0x74, 0x21, 0xD7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x74, 0x01, 0x11, 0x32, 0x81, 0x19, 0x31, 0x19, 0x51, 0x01, 0x21, 0x51, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x81, 0x19, 0x10, 0x19, 0x11, 0x03, 0x19, 0x31, 0x02, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x11, 0x11, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x4F, 0x29, 0x50, 0x01, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x06, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8D, 0x28, 0xEF, 0x30, 0x8D, 0x48, 0xAD, 0xB2, 0xD5, 0xB2, 0x53, 0xA9, 0xF2, 0xA9, 0xF1, 0xA1, 0xF1, 0x89, 0xEE, 0xFF, 0x7F, 0xEF, 0x7C, 0xEF, 0x9B, 0xE7, 0x7A, 0xDF, 0x5A, 0x03, 0xDF, 0x59, 0x01, 0xDF, 0x79, 0x8A, 0xE7, 0x9A, 0xE7, 0xBB, 0xF7, 0xBD, 0xEE, 0xDC, 0x93, 0x50, 0x82, 0x2F, 0x92, 0x30, 0xAA, 0xD3, 0xBB, 0x14, 0xCB, 0x35, 0xD3, 0x56, 0x01, 0xDB, 0x56, 0x02, 0xD3, 0x35, 0x01, 0xDB, 0x56, 0x01, 0xD3, 0x35, 0x88, 0xD3, 0x55, 0xCB, 0x54, 0xBB, 0x74, 0xC4, 0x95, 0xEE, 0x7A, 0xEF, 0x5B, 0xE7, 0x7B, 0xE7, 0x5A, 0xE7, 0x7A, 0x03, 0xDF, 0x5A, 0x82, 0xDF, 0x59, 0xDF, 0x7A, 0xDF, 0x59, 0x02, 0xDF, 0x79, 0x80, 0xDF, 0x59, 0x01, 0xDF, 0x7A, 0x89, 0xE7, 0x7A, 0xE7, 0x9B, 0xEF, 0x9C, 0xF7, 0x1D, 0x8B, + 0x30, 0x82, 0x4F, 0x92, 0x30, 0xAA, 0x92, 0xBA, 0xF4, 0xCB, 0x36, 0x02, 0xD3, 0x56, 0x01, 0xDB, 0x56, 0x81, 0xDB, 0x36, 0xDB, 0x35, 0x02, 0xD3, 0x35, 0x85, 0xD3, 0x55, 0xCB, 0x34, 0xBB, 0x73, 0xE5, 0xD9, 0xF7, 0x3C, 0xEF, 0x5B, 0x02, 0xE7, 0x5A, 0x05, 0xDF, 0x59, 0x05, 0xDF, 0x79, 0x8A, 0xDF, 0x7A, 0xE7, 0x9A, 0xE7, 0x9B, 0xF7, 0x9D, 0xF6, 0xFD, 0x93, 0x30, 0x8A, 0x50, 0x9A, 0x51, 0xAA, 0x92, 0xC3, 0x14, 0xCB, 0x35, 0x01, 0xD3, 0x56, 0x02, 0xDB, 0x56, 0x01, 0xDB, 0x36, 0x82, 0xD3, 0x35, 0xDB, 0x56, 0xD3, 0x55, 0x01, 0xD3, 0x56, 0x81, 0xDB, 0x77, 0xB2, 0x73, 0x01, 0xA2, 0x12, 0x81, 0xBA, 0xD5, 0xCB, 0x36, 0x01, 0xD3, 0x56, 0x80, 0xDB, 0x56, 0x01, 0xD3, 0x56, 0x80, 0xDB, 0x56, 0x01, 0xDB, 0x36, 0x81, 0xDB, 0x56, 0xDB, 0x36, 0x01, 0xD3, 0x15, 0x86, 0xD3, 0x35, 0xCB, 0x34, 0xCC, 0x15, 0xFE, 0xBB, 0xF7, 0x3B, 0xEF, 0x5A, 0xEF, 0x59, 0x05, 0xE7, 0x59, 0x04, 0xDF, 0x59, 0x02, 0xE7, 0x79, 0x01, 0xE7, 0x7A, 0x88, 0xEF, 0x9A, 0xF7, 0x9B, 0xFF, 0x5D, 0xC5, 0x16, 0x79, 0xCD, 0x91, 0xCF, 0xA2, 0x52, 0xC2, 0xF5, 0xCB, 0x35, 0x01, 0xD3, 0x56, 0x01, 0xD3, 0x36, 0x80, 0xD3, 0x56, 0x01, 0xDB, 0x56, 0x02, 0xD3, 0x36, 0x87, 0xD3, 0x35, 0xCB, 0x55, 0xC3, 0x74, 0xBB, 0xD3, 0xF6, 0x7B, 0xF7, 0x3C, 0xEF, 0x7B, 0xEF, 0x5B, 0x01, 0xEF, 0x7B, 0x87, 0xEF, 0x7C, 0xFF, 0x9D, 0xBD, 0x16, 0x82, 0x2E, 0x92, 0x30, 0xA2, 0x51, 0xB2, 0xD3, 0xCB, 0x56, 0x01, 0xD3, 0x56, 0x01, 0xD3, 0x36, 0x02, 0xDB, 0x36, 0x02, 0xDB, 0x35, 0x01, 0xD3, 0x35, 0x88, 0xC3, + 0x54, 0xC3, 0xF4, 0xF6, 0x3A, 0xF7, 0x5C, 0xEF, 0x7B, 0xE7, 0x7A, 0xE7, 0x9A, 0xE7, 0x7A, 0xDF, 0x7A, 0x02, 0xDF, 0x79, 0x80, 0xDF, 0x59, 0x01, 0xDF, 0x79, 0x01, 0xE7, 0x9A, 0x87, 0xEF, 0xBB, 0xFF, 0x9D, 0xCD, 0x37, 0x82, 0x2E, 0x92, 0x30, 0xA2, 0x92, 0xBB, 0x14, 0xC3, 0x34, 0x01, 0xCB, 0x35, 0x03, 0xD3, 0x35, 0x81, 0xD3, 0x15, 0xD2, 0xF5, 0x01, 0xD3, 0x15, 0x89, 0xD3, 0x35, 0xD3, 0x55, 0xD3, 0x76, 0xCB, 0x55, 0x99, 0xF0, 0x91, 0xD0, 0xB2, 0x93, 0xC2, 0xF5, 0xD3, 0x36, 0xD3, 0x56, 0x01, 0xD3, 0x36, 0x82, 0xD3, 0x56, 0xD3, 0x36, 0xDB, 0x56, 0x03, 0xD3, 0x55, 0x86, 0xCB, 0x55, 0xCB, 0x34, 0xBB, 0x53, 0xCC, 0xD6, 0xFF, 0x3D, 0xEF, 0x5C, 0xE7, 0x7B, 0x01, 0xE7, 0x5B, 0x01, 0xE7, 0x7B, 0x8B, 0xEF, 0x9C, 0xF7, 0x7D, 0xF6, 0xFD, 0x8B, 0x30, 0x8A, 0x4F, 0x92, 0x30, 0xAA, 0xB3, 0xBA, 0xF4, 0xCB, 0x55, 0xD3, 0x56, 0xD3, 0x36, 0xD3, 0x56, 0x03, 0xDB, 0x56, 0x80, 0xDB, 0x36, 0x01, 0xD3, 0x35, 0x01, 0xCB, 0x34, 0x84, 0xBB, 0x93, 0xE5, 0xF9, 0xF7, 0x3B, 0xEF, 0x7B, 0xEF, 0x7A, 0x01, 0xE7, 0x5A, 0x88, 0xEF, 0x9B, 0xF7, 0x9C, 0xFF, 0x7D, 0xA3, 0xF2, 0x82, 0x0E, 0x92, 0x10, 0x9A, 0x31, 0xB2, 0xD4, 0xCB, 0x56, 0x02, 0xD3, 0x56, 0x82, 0xD3, 0x36, 0xDB, 0x56, 0xD3, 0x36, 0x01, 0xDB, 0x56, 0x01, 0xD3, 0x36, 0x8B, 0xD3, 0x35, 0xCB, 0x35, 0xC3, 0x74, 0xC3, 0xF4, 0xF6, 0x3A, 0xFF, 0x7C, 0xF7, 0x7B, 0xEF, 0x7A, 0xE7, 0x7A, 0xE7, 0x59, 0xDF, 0x39, 0xDF, 0x59, 0x01, 0xDF, 0x39, 0x8E, 0xE7, 0x59, 0xE7, 0x5A, 0xE7, 0x7A, 0xEF, 0x7A, 0xEF, 0x9A, + 0xEF, 0x9B, 0xFF, 0xBD, 0xBC, 0x95, 0x8A, 0x6F, 0x8A, 0x0F, 0x9A, 0x10, 0xC3, 0x15, 0xCB, 0x35, 0xD3, 0x56, 0xDB, 0x56, 0x01, 0xD3, 0x36, 0x02, 0xD3, 0x56, 0x02, 0xD3, 0x55, 0x85, 0xD3, 0x35, 0xCB, 0x35, 0xC3, 0x14, 0xAB, 0x11, 0xFF, 0x3E, 0xF7, 0x3B, 0x01, 0xF7, 0x5B, 0x02, 0xEF, 0x5B, 0x80, 0xEF, 0x5A, 0x01, 0xEF, 0x5B, 0x92, 0xF7, 0x7B, 0xF7, 0x9C, 0xFF, 0x7D, 0xFF, 0x5E, 0xF5, 0x9B, 0x9A, 0x0F, 0xB1, 0xD1, 0xB9, 0xD3, 0xC1, 0xD3, 0xB9, 0xD4, 0xB9, 0xF5, 0xBA, 0x16, 0xB2, 0x38, 0x9A, 0x5A, 0x40, 0xD7, 0x31, 0x1A, 0x21, 0x5B, 0x19, 0x7D, 0x11, 0x9D, 0x01, 0x09, 0x9E, 0x82, 0x01, 0x9E, 0x09, 0x9E, 0x09, 0x9F, 0x01, 0x09, 0x9E, 0xA4, 0x09, 0x7E, 0x11, 0x7E, 0x19, 0x5D, 0x21, 0x3C, 0x28, 0xFB, 0x40, 0xD8, 0x92, 0x5B, 0xA2, 0x7A, 0xA2, 0x58, 0x9A, 0x16, 0x92, 0x36, 0x8A, 0x57, 0x7A, 0x56, 0x62, 0xD6, 0x5C, 0x99, 0x5D, 0xDC, 0x4E, 0x1C, 0x36, 0x5B, 0x16, 0x78, 0x0E, 0xD7, 0x0F, 0x37, 0x07, 0x37, 0x07, 0x57, 0x0F, 0x37, 0x1F, 0x79, 0x37, 0x5A, 0x4E, 0xFB, 0x6E, 0xBD, 0x5C, 0x57, 0x5A, 0x92, 0x82, 0x94, 0x9A, 0x54, 0x99, 0xF4, 0xA2, 0x15, 0x9A, 0x15, 0x81, 0x93, 0x69, 0x52, 0x01, 0x61, 0x52, 0x8B, 0x59, 0x52, 0x61, 0x72, 0x61, 0x31, 0x71, 0x52, 0x92, 0x15, 0x9A, 0x35, 0xA2, 0x35, 0xA2, 0x96, 0x92, 0x34, 0x50, 0x8E, 0x40, 0x8E, 0x41, 0x30, 0x01, 0x39, 0x50, 0x03, 0x31, 0x50, 0x03, 0x29, 0x50, 0x05, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, + 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x19, 0x10, 0x19, 0x11, 0x11, 0x12, 0x19, 0x95, 0x01, 0x19, 0xD6, 0x85, 0x11, 0x74, 0x11, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x8E, 0x21, 0x50, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x13, 0x19, 0xB6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x06, 0x21, 0x0F, 0x05, 0x21, 0x30, 0x01, 0x19, 0x10, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x03, 0x19, 0x31, 0x01, 0x19, 0x30, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x81, 0x20, 0xEF, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x85, 0x21, 0x31, 0x19, 0x10, 0x11, 0x11, + 0x11, 0x32, 0x11, 0x53, 0x19, 0xB6, 0x02, 0x21, 0xF7, 0x81, 0x19, 0x95, 0x11, 0x33, 0x01, 0x11, 0x12, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x06, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x0C, 0x21, 0x30, 0x85, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x19, 0x31, 0x21, 0x32, 0x01, 0x21, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x84, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0x74, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x89, 0x21, 0xD6, 0x19, 0x75, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x50, 0x21, 0x10, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, + 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x09, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x0F, 0x06, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x19, 0x10, 0x88, 0x19, 0x31, 0x19, 0x53, 0x11, 0x53, 0x11, 0x74, 0x21, 0xF7, 0x2A, 0x38, 0x21, 0xD7, 0x11, 0x75, 0x11, 0x33, 0x01, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x31, 0x01, 0x21, 0x51, 0x02, 0x19, 0x11, 0x84, 0x19, 0x31, 0x29, 0xB2, 0x21, 0x51, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x04, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x07, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x90, 0x29, + 0x2F, 0x29, 0x0F, 0x28, 0xEF, 0x30, 0x8D, 0x48, 0xAD, 0xB2, 0xF5, 0xB2, 0x52, 0xAA, 0x12, 0xA9, 0xF1, 0xA1, 0xF1, 0x89, 0xCD, 0xFF, 0x7E, 0xF7, 0x7C, 0xEF, 0x9B, 0xEF, 0x7A, 0xE7, 0x5A, 0xE7, 0x79, 0x01, 0xE7, 0x59, 0x02, 0xE7, 0x79, 0x8A, 0xEF, 0x9A, 0xEF, 0xBB, 0xFF, 0xBD, 0xEE, 0xDC, 0x93, 0x50, 0x82, 0x2F, 0x8A, 0x30, 0xAA, 0xD3, 0xBB, 0x35, 0xCB, 0x56, 0xD3, 0x76, 0x03, 0xDB, 0x56, 0x81, 0xD3, 0x55, 0xDB, 0x56, 0x01, 0xDB, 0x76, 0x01, 0xD3, 0x55, 0x85, 0xCB, 0x55, 0xC3, 0x94, 0xCC, 0xB5, 0xEE, 0x9A, 0xF7, 0x5B, 0xEF, 0x9B, 0x02, 0xE7, 0x7A, 0x04, 0xE7, 0x79, 0x01, 0xDF, 0x79, 0x81, 0xE7, 0x79, 0xDF, 0x79, 0x01, 0xE7, 0x79, 0x8C, 0xE7, 0x7A, 0xE7, 0x9A, 0xE7, 0xBB, 0xF7, 0xBC, 0xF7, 0x1D, 0x8B, 0x30, 0x82, 0x4F, 0x92, 0x30, 0xA2, 0x92, 0xC3, 0x14, 0xCB, 0x56, 0xD3, 0x76, 0xD3, 0x56, 0x05, 0xDB, 0x56, 0x02, 0xD3, 0x55, 0x86, 0xCB, 0x75, 0xBB, 0x93, 0xE5, 0xD8, 0xFF, 0x3C, 0xF7, 0x7B, 0xEF, 0x9A, 0xE7, 0x7A, 0x05, 0xE7, 0x79, 0x01, 0xDF, 0x79, 0x80, 0xE7, 0x99, 0x02, 0xDF, 0x79, 0x80, 0xE7, 0x99, 0x01, 0xE7, 0x9A, 0x8A, 0xEF, 0xBB, 0xF7, 0xBD, 0xF6, 0xFD, 0x93, 0x30, 0x8A, 0x6F, 0x9A, 0x50, 0xAA, 0xB2, 0xC3, 0x14, 0xD3, 0x76, 0xD3, 0x56, 0xDB, 0x76, 0x03, 0xDB, 0x56, 0x80, 0xD3, 0x56, 0x02, 0xDB, 0x56, 0x01, 0xDB, 0x76, 0x85, 0xDB, 0x77, 0xB2, 0x73, 0xA2, 0x12, 0xAA, 0x32, 0xC2, 0xF5, 0xD3, 0x56, 0x01, 0xD3, 0x76, 0x83, 0xDB, 0x76, 0xD3, 0x56, 0xDB, 0x56, 0xD3, 0x56, 0x01, 0xDB, 0x56, 0x89, 0xDB, 0x76, 0xD3, 0x56, + 0xD3, 0x55, 0xD3, 0x35, 0xD3, 0x55, 0xCB, 0x74, 0xDC, 0xB6, 0xFF, 0x1C, 0xF7, 0x7B, 0xF7, 0x7A, 0x01, 0xEF, 0x79, 0x01, 0xE7, 0x79, 0x05, 0xE7, 0x59, 0x01, 0xE7, 0x79, 0x80, 0xE7, 0x99, 0x02, 0xE7, 0x79, 0x8A, 0xEF, 0x99, 0xEF, 0xBA, 0xEF, 0x9B, 0xFF, 0xBC, 0xFF, 0x7F, 0x71, 0x8C, 0x89, 0xCF, 0x9A, 0x10, 0xBA, 0xF4, 0xCB, 0x55, 0xD3, 0x76, 0x02, 0xD3, 0x56, 0x01, 0xDB, 0x56, 0x03, 0xD3, 0x56, 0x87, 0xD3, 0x55, 0xCB, 0x55, 0xC3, 0x74, 0xBB, 0xB3, 0xF6, 0x5B, 0xFF, 0x5C, 0xF7, 0x7B, 0xEF, 0x7B, 0x01, 0xEF, 0x9B, 0x88, 0xF7, 0x9C, 0xFF, 0x9D, 0xBD, 0x16, 0x82, 0x2E, 0x92, 0x30, 0x9A, 0x51, 0xB2, 0xD3, 0xCB, 0x56, 0xD3, 0x76, 0x01, 0xD3, 0x56, 0x05, 0xDB, 0x56, 0x01, 0xDB, 0x55, 0x84, 0xD3, 0x55, 0xCB, 0x74, 0xC4, 0x34, 0xFE, 0x7B, 0xFF, 0x5B, 0x01, 0xEF, 0x7A, 0x80, 0xE7, 0x9A, 0x07, 0xE7, 0x79, 0x8A, 0xE7, 0x99, 0xEF, 0xB9, 0xEF, 0x9A, 0xFF, 0x9C, 0xD5, 0x97, 0x7A, 0x2D, 0x8A, 0x0E, 0x92, 0x50, 0xB3, 0x33, 0xC3, 0x54, 0xC3, 0x55, 0x01, 0xCB, 0x55, 0x80, 0xD3, 0x35, 0x01, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x02, 0xD3, 0x75, 0x86, 0xCB, 0x55, 0x99, 0xF0, 0x91, 0xD0, 0xB2, 0x93, 0xC3, 0x15, 0xD3, 0x56, 0xD3, 0x77, 0x02, 0xD3, 0x56, 0x01, 0xDB, 0x76, 0x81, 0xDB, 0x56, 0xD3, 0x56, 0x01, 0xD3, 0x55, 0x86, 0xD3, 0x75, 0xCB, 0x54, 0xBB, 0x73, 0xCC, 0xF6, 0xFF, 0x3C, 0xF7, 0x7C, 0xEF, 0x7B, 0x02, 0xE7, 0x7B, 0x89, 0xEF, 0x7B, 0xEF, 0x9B, 0xF7, 0x9D, 0xF6, 0xFD, 0x93, 0x30, 0x8A, 0x4F, 0x92, 0x30, 0xAA, 0xB2, 0xBB, 0x14, 0xCB, 0x56, + 0x01, 0xD3, 0x76, 0x03, 0xDB, 0x76, 0x01, 0xDB, 0x56, 0x02, 0xD3, 0x55, 0x85, 0xCB, 0x74, 0xC3, 0xD3, 0xE6, 0x18, 0xF7, 0x5B, 0xF7, 0x9B, 0xEF, 0x9A, 0x01, 0xEF, 0x7A, 0x8A, 0xEF, 0x9B, 0xF7, 0x9C, 0xFF, 0x7D, 0xA4, 0x12, 0x82, 0x0E, 0x92, 0x10, 0xA2, 0x51, 0xB2, 0xD4, 0xCB, 0x56, 0xD3, 0x77, 0xD3, 0x76, 0x01, 0xD3, 0x56, 0x01, 0xDB, 0x56, 0x80, 0xDB, 0x76, 0x01, 0xD3, 0x56, 0x02, 0xD3, 0x55, 0x86, 0xC3, 0x74, 0xC3, 0xF3, 0xF6, 0x5A, 0xFF, 0x7C, 0xF7, 0x9A, 0xEF, 0x7A, 0xEF, 0x79, 0x01, 0xE7, 0x79, 0x04, 0xE7, 0x59, 0x8A, 0xEF, 0x79, 0xEF, 0x9A, 0xEF, 0x7A, 0xF7, 0xBB, 0xFF, 0xBD, 0xC4, 0xD5, 0x92, 0xAF, 0x8A, 0x2F, 0x92, 0x10, 0xBA, 0xF4, 0xCB, 0x35, 0x04, 0xD3, 0x56, 0x80, 0xDB, 0x76, 0x03, 0xD3, 0x76, 0x80, 0xD3, 0x55, 0x01, 0xCB, 0x55, 0x82, 0xB3, 0x32, 0xFF, 0x1D, 0xF7, 0x5B, 0x02, 0xF7, 0x7B, 0x80, 0xF7, 0x5A, 0x01, 0xEF, 0x5A, 0x94, 0xF7, 0x7B, 0xEF, 0x5A, 0xEF, 0x7B, 0xF7, 0x7B, 0xF7, 0x7C, 0xFF, 0x7D, 0xFF, 0x5E, 0xE5, 0x39, 0xA1, 0xD0, 0xB9, 0xD2, 0xB9, 0xD3, 0xB9, 0xD4, 0xB9, 0xF5, 0xBA, 0x16, 0xB2, 0x38, 0xA2, 0x7B, 0x48, 0xD7, 0x31, 0x1A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x9D, 0x02, 0x09, 0x9E, 0x02, 0x09, 0x9F, 0x80, 0x01, 0x7E, 0x01, 0x09, 0x7E, 0x93, 0x11, 0x7E, 0x19, 0x5D, 0x29, 0x3C, 0x30, 0xFA, 0x48, 0xD7, 0x8A, 0x7B, 0x9A, 0x79, 0x9A, 0x57, 0x92, 0x16, 0x8A, 0x36, 0x82, 0x56, 0x6A, 0xB6, 0x53, 0xB7, 0x65, 0x7B, 0x55, 0xFC, 0x3E, 0x5B, 0x16, 0x57, 0x0E, 0xB7, 0x06, 0xD6, 0x07, 0x16, 0x01, 0x0F, 0x57, + 0x8E, 0x27, 0x79, 0x37, 0x5A, 0x4F, 0x1B, 0x76, 0xBD, 0x53, 0xF5, 0x5A, 0x72, 0x7A, 0x53, 0x92, 0x14, 0x99, 0xF4, 0x99, 0xF5, 0x9A, 0x15, 0x79, 0x73, 0x71, 0x73, 0x61, 0x72, 0x59, 0x52, 0x01, 0x59, 0x72, 0x8C, 0x59, 0x51, 0x59, 0x10, 0x71, 0x72, 0x9A, 0x35, 0xA2, 0x76, 0xAA, 0x96, 0xA2, 0x96, 0x69, 0x31, 0x40, 0x4D, 0x38, 0xCE, 0x41, 0x50, 0x39, 0x70, 0x31, 0x30, 0x01, 0x31, 0x50, 0x01, 0x29, 0x50, 0x06, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x20, 0xEF, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x97, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x74, 0x11, 0x11, 0x19, 0x11, 0x21, 0x51, 0x21, 0x50, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x8B, 0x21, 0x30, 0x21, 0x51, 0x19, 0x51, 0x11, 0x32, 0x09, 0x12, 0x21, 0xD6, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x32, 0x19, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x20, 0xEF, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x30, 0x29, 0x50, 0x21, 0x30, 0x21, + 0x50, 0x02, 0x21, 0x30, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x19, 0x10, 0x08, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x20, 0xEF, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x89, 0x29, 0x30, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x11, 0x31, 0x11, 0x52, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x84, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x01, 0x19, 0x11, 0x03, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x19, 0x31, 0x01, 0x19, 0x11, 0x04, 0x19, 0x31, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x85, 0x11, 0x33, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, + 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x84, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x19, 0x54, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x83, 0x21, 0xD6, 0x19, 0x75, 0x11, 0x13, 0x11, 0x12, 0x01, 0x19, 0x31, 0x82, 0x21, 0x30, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x05, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x09, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8F, 0x19, 0x11, 0x19, 0x31, 0x11, + 0x32, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF7, 0x2A, 0x38, 0x22, 0x18, 0x19, 0x96, 0x11, 0x54, 0x11, 0x32, 0x11, 0x12, 0x19, 0x31, 0x19, 0x10, 0x19, 0x31, 0x19, 0x30, 0x03, 0x21, 0x30, 0x84, 0x20, 0xEF, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x10, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x85, 0x29, 0x0F, 0x28, 0xEF, 0x30, 0xAE, 0x48, 0x8D, 0xB2, 0xD5, 0xB2, 0x53, 0x01, 0xA9, 0xF1, 0x86, 0xA1, 0xF1, 0x89, 0xED, 0xFF, 0x7E, 0xF7, 0x9C, 0xEF, 0x9B, 0xEF, 0x9A, 0xEF, 0x79, 0x01, 0xE7, 0x59, 0x02, 0xE7, 0x79, 0x01, 0xEF, 0x99, 0x89, 0xF7, 0xBB, 0xFF, 0xBC, 0xF6, 0xDB, 0x93, 0x70, 0x82, 0x2E, 0x8A, 0x10, 0xAA, 0xD3, 0xBB, 0x35, 0xCB, 0x76, 0xD3, 0x76, 0x01, 0xDB, 0x76, 0x01, 0xDB, 0x56, 0x80, 0xD3, 0x55, 0x02, 0xDB, 0x76, 0x86, 0xD3, 0x76, 0xD3, 0x75, 0xCB, 0x75, 0xC3, 0x93, 0xCC, 0xB5, 0xF6, 0x9A, 0xF7, 0x7B, 0x02, 0xEF, 0x9A, 0x82, 0xEF, 0x99, 0xEF, 0x79, 0xE7, 0x99, 0x01, 0xE7, 0x79, 0x80, 0xE7, 0x99, 0x02, 0xE7, 0x79, 0x8C, 0xE7, 0x99, 0xE7, 0x79, 0xE7, 0x99, 0xEF, 0x99, 0xEF, 0xBA, 0xEF, 0xDB, 0xF7, 0xBC, 0xFF, + 0x1D, 0x93, 0x30, 0x8A, 0x4F, 0x92, 0x30, 0xAA, 0x92, 0xBB, 0x14, 0x01, 0xD3, 0x76, 0x03, 0xDB, 0x76, 0x01, 0xDB, 0x56, 0x81, 0xD3, 0x76, 0xD3, 0x55, 0x01, 0xD3, 0x75, 0x85, 0xCB, 0x75, 0xC3, 0x93, 0xE5, 0xB8, 0xFF, 0x3B, 0xF7, 0x9B, 0xEF, 0x9A, 0x01, 0xEF, 0x79, 0x05, 0xE7, 0x79, 0x02, 0xE7, 0x99, 0x80, 0xE7, 0x79, 0x01, 0xE7, 0x99, 0x01, 0xEF, 0xBA, 0x87, 0xEF, 0xBB, 0xF7, 0xBC, 0xF6, 0xFC, 0x93, 0x50, 0x8A, 0x6F, 0x92, 0x50, 0xAA, 0xB2, 0xBB, 0x14, 0x01, 0xD3, 0x76, 0x08, 0xDB, 0x76, 0x83, 0xDB, 0x96, 0xDB, 0x76, 0xDB, 0xB7, 0xAA, 0x52, 0x01, 0xA2, 0x12, 0x81, 0xC3, 0x15, 0xD3, 0x77, 0x03, 0xD3, 0x76, 0x05, 0xDB, 0x76, 0x87, 0xD3, 0x76, 0xD3, 0x55, 0xCB, 0x75, 0xC3, 0xB4, 0xE5, 0x78, 0xFF, 0x5C, 0xF7, 0x7A, 0xEF, 0x9A, 0x01, 0xEF, 0x99, 0x03, 0xEF, 0x79, 0x05, 0xE7, 0x79, 0x81, 0xE7, 0x78, 0xE7, 0x79, 0x02, 0xEF, 0x99, 0x88, 0xF7, 0xBA, 0xF7, 0xDB, 0xF7, 0xBC, 0xFF, 0x9E, 0x71, 0xCC, 0x89, 0xCF, 0x91, 0xEF, 0xBA, 0xF4, 0xCB, 0x56, 0x03, 0xD3, 0x76, 0x04, 0xDB, 0x76, 0x01, 0xD3, 0x76, 0x85, 0xD3, 0x75, 0xC3, 0x74, 0xBB, 0x92, 0xFE, 0x5B, 0xFF, 0x5C, 0xF7, 0x7B, 0x03, 0xF7, 0x9B, 0x89, 0xFF, 0x9D, 0xC5, 0x36, 0x82, 0x2E, 0x92, 0x30, 0x9A, 0x51, 0xB2, 0xF3, 0xCB, 0x76, 0xD3, 0x96, 0xD3, 0x76, 0xDB, 0x96, 0x05, 0xDB, 0x76, 0x86, 0xDB, 0x75, 0xD3, 0x75, 0xD3, 0x55, 0xC3, 0x74, 0xCC, 0x54, 0xFE, 0xBB, 0xFF, 0x7B, 0x01, 0xEF, 0x9A, 0x80, 0xEF, 0x79, 0x01, 0xE7, 0x79, 0x80, 0xE7, 0x78, 0x01, 0xE7, 0x79, 0x83, 0xE7, 0x78, + 0xE7, 0x98, 0xE7, 0x99, 0xEF, 0xB9, 0x01, 0xEF, 0x99, 0x88, 0xFF, 0x9B, 0xD5, 0xB7, 0x72, 0x4C, 0x7A, 0x0D, 0x8A, 0x2E, 0xAB, 0x32, 0xBB, 0x73, 0xC3, 0x94, 0xC3, 0x74, 0x02, 0xCB, 0x74, 0x03, 0xD3, 0x74, 0x80, 0xD3, 0x95, 0x02, 0xD3, 0xB5, 0x86, 0xC3, 0x54, 0x91, 0xEF, 0x91, 0xD0, 0xB2, 0x93, 0xC3, 0x15, 0xD3, 0x56, 0xDB, 0x97, 0x01, 0xDB, 0x76, 0x80, 0xD3, 0x76, 0x02, 0xDB, 0x76, 0x01, 0xD3, 0x76, 0x01, 0xD3, 0x75, 0x85, 0xCB, 0x74, 0xBB, 0x73, 0xD4, 0xF6, 0xFF, 0x5C, 0xF7, 0x7B, 0xF7, 0x9B, 0x02, 0xEF, 0x7A, 0x8B, 0xEF, 0x9A, 0xEF, 0x9B, 0xF7, 0x9C, 0xFF, 0x1D, 0x93, 0x50, 0x8A, 0x4F, 0x92, 0x30, 0xAA, 0xB2, 0xBB, 0x14, 0xCB, 0x76, 0xD3, 0x96, 0xD3, 0x76, 0x06, 0xDB, 0x76, 0x01, 0xD3, 0x75, 0x91, 0xCB, 0x74, 0xC3, 0xD3, 0xE6, 0x18, 0xFF, 0x5B, 0xF7, 0xBA, 0xEF, 0x9A, 0xEF, 0x99, 0xEF, 0x9A, 0xF7, 0xBB, 0xF7, 0x9C, 0xFF, 0x7D, 0xB4, 0x73, 0x82, 0x0E, 0x92, 0x30, 0x9A, 0x51, 0xB2, 0xD3, 0xCB, 0x56, 0xD3, 0x77, 0x01, 0xD3, 0x76, 0x80, 0xDB, 0x56, 0x04, 0xDB, 0x76, 0x80, 0xD3, 0x76, 0x01, 0xD3, 0x75, 0x85, 0xC3, 0x94, 0xC4, 0x13, 0xFE, 0x9A, 0xFF, 0x7B, 0xF7, 0x9A, 0xEF, 0x99, 0x05, 0xEF, 0x79, 0x80, 0xEF, 0x59, 0x01, 0xEF, 0x79, 0x8B, 0xEF, 0x99, 0xF7, 0xBA, 0xF7, 0xBB, 0xFF, 0xBD, 0xC4, 0xF6, 0x92, 0xAF, 0x8A, 0x2F, 0x92, 0x10, 0xBB, 0x14, 0xCB, 0x35, 0xD3, 0x56, 0xDB, 0x76, 0x01, 0xD3, 0x56, 0x80, 0xD3, 0x76, 0x01, 0xDB, 0x96, 0x02, 0xD3, 0x76, 0x86, 0xD3, 0x55, 0xCB, 0x55, 0xCB, 0x54, 0xB3, 0x31, 0xFF, 0x1D, 0xFF, + 0x7B, 0xF7, 0x7B, 0x01, 0xF7, 0x7A, 0x81, 0xF7, 0x5A, 0xEF, 0x5A, 0x02, 0xF7, 0x7A, 0x92, 0xF7, 0x7B, 0xF7, 0x9B, 0xF7, 0x9C, 0xFF, 0x9C, 0xFF, 0x9D, 0xFF, 0x3F, 0xA2, 0x30, 0xB1, 0xD2, 0xB9, 0xD3, 0xB9, 0xD4, 0xB9, 0xF5, 0xBA, 0x16, 0xB2, 0x38, 0x9A, 0x7B, 0x48, 0xD7, 0x31, 0x1A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x9D, 0x01, 0x09, 0x9E, 0x02, 0x09, 0x9F, 0x83, 0x01, 0x9F, 0x01, 0x9E, 0x09, 0x9E, 0x09, 0x7E, 0x01, 0x11, 0x7E, 0xB0, 0x19, 0x5D, 0x29, 0x1B, 0x30, 0xF9, 0x48, 0xD7, 0x9A, 0xDC, 0x9A, 0x59, 0x92, 0x37, 0x8A, 0x16, 0x82, 0x57, 0x72, 0x96, 0x5B, 0x56, 0x6D, 0x1B, 0x65, 0xDC, 0x4E, 0x3A, 0x26, 0x77, 0x0E, 0xB6, 0x06, 0xD6, 0x07, 0x16, 0x0F, 0x56, 0x17, 0x58, 0x27, 0x79, 0x3F, 0x5A, 0x4E, 0xDB, 0x76, 0x9D, 0x53, 0xB4, 0x62, 0x72, 0x82, 0x53, 0x92, 0x14, 0x99, 0xF4, 0x99, 0xF5, 0x91, 0xF5, 0x71, 0x73, 0x69, 0x73, 0x61, 0x93, 0x59, 0x72, 0x51, 0x72, 0x59, 0x92, 0x51, 0x51, 0x59, 0x51, 0x59, 0x10, 0x81, 0xF4, 0x9A, 0x76, 0xA2, 0x55, 0xA2, 0x96, 0x8A, 0x14, 0x50, 0xAE, 0x38, 0xAE, 0x39, 0x0F, 0x39, 0x50, 0x03, 0x31, 0x50, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x05, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, + 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x8B, 0x29, 0x30, 0x29, 0x50, 0x21, 0x50, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xF7, 0x11, 0x74, 0x11, 0x11, 0x19, 0x11, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x8C, 0x19, 0x2F, 0x21, 0x30, 0x19, 0x30, 0x19, 0x51, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x2A, 0x37, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x32, 0x19, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x04, 0x21, 0x30, 0x89, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x85, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x20, 0xEF, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x30, 0x86, 0x21, 0x51, 0x19, 0x30, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x11, 0x73, 0x19, 0xD5, 0x01, 0x22, 0x17, 0x83, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x13, 0x11, 0x12, 0x02, 0x19, 0x11, 0x80, 0x21, 0x10, + 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x19, 0x31, 0x81, 0x11, 0x32, 0x11, 0x12, 0x05, 0x11, 0x32, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x03, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x85, 0x11, 0x95, 0x11, 0x74, 0x19, 0x73, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x10, 0x80, 0x29, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x05, 0x21, 0x30, 0x84, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x54, 0x19, 0xB6, 0x01, 0x22, 0x17, 0x83, 0x21, 0xD6, 0x11, 0x74, 0x11, 0x13, 0x11, 0x32, 0x01, 0x19, 0x31, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, + 0x2F, 0x08, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x85, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB6, 0x19, 0xD7, 0x01, 0x21, 0xF8, 0x85, 0x19, 0xB6, 0x19, 0x74, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x31, 0x01, 0x19, 0x30, 0x01, 0x21, 0x30, 0x84, 0x19, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x0F, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x28, 0xEF, 0x30, 0xAE, 0x40, 0x8D, 0xB2, 0xB5, 0xB2, 0x53, 0x01, 0xA9, 0xF1, 0x82, + 0xA1, 0xF0, 0x81, 0xAD, 0xFF, 0x7E, 0x01, 0xF7, 0x9B, 0x80, 0xEF, 0x9A, 0x01, 0xEF, 0x79, 0x04, 0xEF, 0x78, 0x8A, 0xEF, 0x99, 0xF7, 0xDA, 0xFF, 0xDC, 0xF6, 0xDB, 0x9B, 0x71, 0x82, 0x2E, 0x8A, 0x0F, 0xAA, 0xD3, 0xC3, 0x35, 0xCB, 0x76, 0xD3, 0x96, 0x01, 0xDB, 0x96, 0x03, 0xDB, 0x76, 0x01, 0xDB, 0x96, 0x87, 0xDB, 0x76, 0xD3, 0x75, 0xCB, 0x74, 0xC3, 0x93, 0xCC, 0xB5, 0xF6, 0x9A, 0xFF, 0x9B, 0xF7, 0x9A, 0x04, 0xEF, 0x99, 0x02, 0xEF, 0x78, 0x80, 0xEF, 0x99, 0x02, 0xEF, 0x98, 0x02, 0xEF, 0x99, 0x89, 0xEF, 0xBA, 0xF7, 0xBA, 0xFF, 0xBC, 0xFF, 0x1C, 0x93, 0x50, 0x8A, 0x4E, 0x92, 0x50, 0xA2, 0x92, 0xC3, 0x35, 0xD3, 0x96, 0x03, 0xDB, 0x97, 0x80, 0xDB, 0x96, 0x01, 0xDB, 0x76, 0x01, 0xDB, 0x96, 0x02, 0xD3, 0x95, 0x88, 0xC3, 0xB3, 0xE5, 0xD8, 0xFF, 0x5B, 0xFF, 0x9A, 0xF7, 0xBA, 0xF7, 0x99, 0xEF, 0x99, 0xEF, 0x98, 0xEF, 0x99, 0x06, 0xEF, 0x98, 0x80, 0xE7, 0x98, 0x01, 0xEF, 0x99, 0x8C, 0xEF, 0xB9, 0xEF, 0xBA, 0xF7, 0xBB, 0xFF, 0xBC, 0xF6, 0xFC, 0x93, 0x30, 0x8A, 0x4E, 0x92, 0x2F, 0xAA, 0xB2, 0xC3, 0x34, 0xD3, 0x76, 0xD3, 0x96, 0xDB, 0x96, 0x04, 0xDB, 0x76, 0x04, 0xDB, 0x96, 0x85, 0xDB, 0xB7, 0xAA, 0x52, 0xA2, 0x12, 0xA2, 0x32, 0xC3, 0x35, 0xD3, 0x97, 0x01, 0xD3, 0x96, 0x81, 0xD3, 0x76, 0xD3, 0x96, 0x06, 0xDB, 0x96, 0x86, 0xD3, 0x75, 0xD3, 0x95, 0xC3, 0xB3, 0xED, 0xB9, 0xFF, 0x7C, 0xF7, 0x9A, 0xF7, 0x99, 0x03, 0xEF, 0x99, 0x04, 0xEF, 0x79, 0x02, 0xEF, 0x78, 0x80, 0xEF, 0x98, 0x03, 0xEF, 0x99, 0x88, 0xEF, 0xBA, 0xF7, 0xBA, 0xF7, 0xBB, + 0xFF, 0x9E, 0x71, 0xCC, 0x89, 0xCE, 0x89, 0xCF, 0xB2, 0xD3, 0xCB, 0x75, 0x03, 0xD3, 0x96, 0x81, 0xD3, 0x76, 0xDB, 0x96, 0x01, 0xDB, 0x76, 0x95, 0xD3, 0x75, 0xDB, 0x76, 0xDB, 0x96, 0xD3, 0x75, 0xCB, 0x74, 0xBB, 0xD3, 0xFE, 0x5A, 0xFF, 0x5C, 0xF7, 0x9B, 0xF7, 0x7A, 0xF7, 0x9A, 0xF7, 0x9B, 0xFF, 0x9B, 0xFF, 0x9D, 0xCD, 0x36, 0x82, 0x2E, 0x92, 0x30, 0x9A, 0x51, 0xB2, 0xF3, 0xCB, 0x96, 0xD3, 0x97, 0xDB, 0x97, 0x02, 0xDB, 0x96, 0x84, 0xDB, 0x76, 0xDB, 0x96, 0xDB, 0x76, 0xDB, 0x96, 0xDB, 0x76, 0x01, 0xD3, 0x75, 0x84, 0xCB, 0x73, 0xC4, 0x33, 0xFE, 0xBB, 0xFF, 0x7B, 0xF7, 0x9A, 0x01, 0xEF, 0x99, 0x04, 0xEF, 0x98, 0x80, 0xEF, 0x78, 0x01, 0xEF, 0x98, 0x01, 0xEF, 0xB9, 0x89, 0xF7, 0x99, 0xFF, 0x9B, 0xD6, 0x17, 0x7A, 0xCC, 0x82, 0xCD, 0x92, 0xEE, 0xA3, 0x50, 0xAB, 0x71, 0xB3, 0x91, 0xBB, 0x91, 0x01, 0xBB, 0x92, 0x01, 0xC3, 0x92, 0x80, 0xC3, 0x93, 0x01, 0xC3, 0xB3, 0x89, 0xCB, 0xB3, 0xCB, 0xD4, 0xCB, 0xF4, 0xCB, 0xF5, 0xC3, 0x74, 0x91, 0xEF, 0x91, 0xD0, 0xB2, 0xB3, 0xC3, 0x15, 0xD3, 0x76, 0x02, 0xDB, 0x97, 0x03, 0xDB, 0x96, 0x80, 0xDB, 0x76, 0x01, 0xDB, 0x96, 0x86, 0xD3, 0x95, 0xD3, 0x94, 0xC3, 0xB3, 0xD5, 0x16, 0xFF, 0x5C, 0xFF, 0x7B, 0xF7, 0x9A, 0x01, 0xEF, 0x7A, 0x01, 0xEF, 0x9A, 0x89, 0xF7, 0xBB, 0xFF, 0x9C, 0xFF, 0x1C, 0x93, 0x50, 0x82, 0x4E, 0x92, 0x2F, 0xA2, 0xB2, 0xBB, 0x34, 0xCB, 0x96, 0xD3, 0x96, 0x03, 0xDB, 0x96, 0x03, 0xDB, 0x76, 0x01, 0xD3, 0x75, 0x85, 0xCB, 0x94, 0xC3, 0xF3, 0xEE, 0x38, 0xFF, 0x5A, 0xF7, 0x9A, 0xF7, + 0xBA, 0x01, 0xEF, 0x99, 0x88, 0xF7, 0xBA, 0xFF, 0xBB, 0xFF, 0x9D, 0xB4, 0x73, 0x7A, 0x0D, 0x92, 0x10, 0x9A, 0x51, 0xB2, 0xD3, 0xCB, 0x76, 0x02, 0xDB, 0x97, 0x81, 0xDB, 0x96, 0xDB, 0x76, 0x02, 0xDB, 0x96, 0x80, 0xDB, 0x76, 0x01, 0xDB, 0x96, 0x87, 0xD3, 0x95, 0xCB, 0xB4, 0xCC, 0x54, 0xFE, 0xBA, 0xFF, 0x9B, 0xF7, 0x9A, 0xF7, 0x99, 0xEF, 0x98, 0x01, 0xEF, 0x78, 0x01, 0xEF, 0x98, 0x80, 0xEF, 0x78, 0x01, 0xEF, 0x79, 0x01, 0xEF, 0x99, 0x01, 0xF7, 0xDA, 0x89, 0xFF, 0xBC, 0xC4, 0xF5, 0x92, 0xAF, 0x8A, 0x2E, 0x92, 0x0F, 0xC3, 0x34, 0xCB, 0x56, 0xD3, 0x76, 0xDB, 0x96, 0xD3, 0x76, 0x01, 0xDB, 0x76, 0x01, 0xDB, 0x96, 0x02, 0xD3, 0x96, 0x86, 0xD3, 0x75, 0xCB, 0x55, 0xCB, 0x54, 0xB3, 0x51, 0xFF, 0x3D, 0xFF, 0x7B, 0xF7, 0x9B, 0x06, 0xF7, 0x7A, 0x01, 0xF7, 0x9B, 0x92, 0xFF, 0xBC, 0xFF, 0x9C, 0xFF, 0x7C, 0xFF, 0x3E, 0xC3, 0x74, 0xA9, 0xD1, 0xB1, 0xD2, 0xB1, 0xB3, 0xB9, 0xD5, 0xB1, 0xF6, 0xB2, 0x58, 0x9A, 0x5A, 0x48, 0xF8, 0x31, 0x1A, 0x21, 0x3B, 0x19, 0x7D, 0x11, 0x9D, 0x11, 0x9E, 0x09, 0x9E, 0x02, 0x09, 0x9F, 0x01, 0x01, 0x9F, 0xA5, 0x01, 0x9E, 0x09, 0x9E, 0x09, 0x7E, 0x11, 0x7E, 0x19, 0x5D, 0x21, 0x5D, 0x29, 0x3B, 0x38, 0xF9, 0x69, 0xB9, 0x92, 0x7A, 0x92, 0x58, 0x8A, 0x57, 0x82, 0x57, 0x72, 0x97, 0x62, 0xF6, 0x74, 0x79, 0x7D, 0xDC, 0x5E, 0x3A, 0x36, 0x98, 0x0E, 0x75, 0x0E, 0xD6, 0x0F, 0x16, 0x0F, 0x37, 0x17, 0x37, 0x2F, 0x79, 0x3F, 0x3A, 0x56, 0xFC, 0x7E, 0x9D, 0x4B, 0x53, 0x62, 0x72, 0x7A, 0x33, 0x92, 0x34, 0x9A, 0x15, 0xA2, 0x36, + 0x81, 0xB4, 0x69, 0x32, 0x69, 0x93, 0x61, 0x93, 0x01, 0x51, 0x72, 0x8E, 0x51, 0x92, 0x51, 0x72, 0x51, 0x51, 0x51, 0x10, 0x61, 0x31, 0x81, 0xD4, 0x92, 0x35, 0x9A, 0x76, 0xAA, 0xF8, 0x82, 0x14, 0x40, 0xAE, 0x38, 0xCE, 0x39, 0x30, 0x31, 0x30, 0x31, 0x50, 0x06, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x05, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x0A, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x8A, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0x74, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x19, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x19, 0x30, 0x8B, 0x19, 0x31, 0x11, 0x12, 0x11, 0x13, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x10, + 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x20, 0xEF, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x87, 0x11, 0x11, 0x11, 0x12, 0x11, 0x54, 0x19, 0xD6, 0x22, 0x37, 0x22, 0x17, 0x21, 0xF6, 0x11, 0x74, 0x01, 0x11, 0x12, 0x01, 0x19, 0x11, 0x83, 0x21, 0x31, 0x21, 0x11, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x88, 0x11, 0x32, 0x11, 0x53, 0x19, 0x94, 0x19, 0xB6, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x75, 0x01, 0x11, 0x33, 0x01, 0x19, 0x32, 0x86, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x19, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x87, 0x19, 0xF7, 0x11, 0x95, 0x11, 0x74, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x29, 0x2F, 0x21, 0x0F, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, + 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x88, 0x11, 0x12, 0x11, 0x53, 0x19, 0xB6, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0x75, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x29, 0x10, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x8C, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF7, 0x21, 0xF8, 0x21, 0xF7, 0x19, 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x19, 0x11, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, + 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x03, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x05, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x07, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x28, 0xEF, 0x30, 0xAE, 0x40, 0x8D, 0xAA, 0xB4, 0xB2, 0x52, 0x01, 0xA9, 0xF1, 0x86, 0xA9, 0xF0, 0x89, 0xCD, 0xFF, 0x7E, 0xF7, 0x9B, 0xF7, 0x9A, 0xEF, 0x9A, 0xEF, 0x99, 0x01, 0xEF, 0x78, 0x03, 0xEF, 0x98, 0x8D, 0xF7, 0x99, 0xF7, 0xDA, 0xFF, 0xBC, 0xF6, 0xDB, 0x9B, 0x91, 0x82, 0x2E, 0x8A, 0x0F, 0xAA, 0xD3, 0xC3, 0x55, 0xD3, 0x96, 0xDB, 0x97, 0xDB, 0xB7, 0xDB, 0x96, 0xDB, 0x76, 0x02, 0xDB, 0x96, 0x80, 0xDB, 0xB6, 0x01, 0xDB, 0x96, 0x85, 0xD3, 0x95, 0xCB, 0x94, 0xC3, 0xB3, 0xCC, 0xB4, 0xF6, 0xBA, 0xFF, 0x9B, 0x03, 0xF7, 0xB9, 0x81, 0xF7, 0x99, 0xF7, 0x98, 0x07, 0xEF, 0x98, 0x80, 0xEF, 0xB9, 0x01, 0xF7, 0xB9, 0x88, 0xF7, 0xBA, 0xFF, 0xBB, 0xFF, 0x1C, 0x93, 0x4F, 0x82, 0x4E, 0x92, 0x2F, 0xA2, 0xB2, 0xBB, 0x34, 0xD3, 0x96, 0x02, 0xDB, 0xB7, 0x01, 0xDB, 0x97, 0x80, 0xDB, 0xB6, 0x01, 0xDB, 0x96, 0x01, 0xDB, 0x95, 0x85, 0xD3, 0xB5, 0xD3, 0x95, 0xC3, 0xB3, 0xE5, 0xD7, 0xFF, 0x3A, + 0xFF, 0x9A, 0x01, 0xF7, 0x99, 0x81, 0xF7, 0x98, 0xF7, 0xB8, 0x01, 0xF7, 0x98, 0x02, 0xEF, 0x98, 0x80, 0xEF, 0xB8, 0x02, 0xEF, 0x98, 0x80, 0xEF, 0xB8, 0x01, 0xEF, 0xB9, 0x8A, 0xF7, 0xBA, 0xF7, 0xDB, 0xFF, 0xBC, 0xFE, 0xFC, 0x93, 0x50, 0x8A, 0x4E, 0x92, 0x4F, 0xAA, 0xB2, 0xC3, 0x54, 0xD3, 0x96, 0xDB, 0xB6, 0x07, 0xDB, 0x96, 0x01, 0xDB, 0xB6, 0x82, 0xDB, 0x96, 0xDB, 0xD7, 0xAA, 0x73, 0x01, 0xA2, 0x32, 0x81, 0xC3, 0x35, 0xD3, 0x97, 0x03, 0xDB, 0xB6, 0x82, 0xDB, 0x96, 0xDB, 0xB6, 0xDB, 0x96, 0x01, 0xD3, 0x96, 0x02, 0xDB, 0x96, 0x84, 0xD3, 0x95, 0xC3, 0xB3, 0xFE, 0x5A, 0xFF, 0x7B, 0xF7, 0x9A, 0x01, 0xF7, 0xB9, 0x83, 0xEF, 0x99, 0xF7, 0xB9, 0xF7, 0x99, 0xEF, 0x99, 0x07, 0xEF, 0x98, 0x01, 0xEF, 0xB8, 0x02, 0xF7, 0xB9, 0x89, 0xF7, 0xBA, 0xF7, 0xBB, 0xFF, 0x9E, 0x71, 0xEC, 0x81, 0xCE, 0x89, 0xCF, 0xB2, 0xD3, 0xCB, 0x96, 0xD3, 0xB7, 0xDB, 0xB7, 0x02, 0xD3, 0x96, 0x04, 0xDB, 0x96, 0x86, 0xD3, 0x95, 0xD3, 0x75, 0xCB, 0x94, 0xC3, 0xD3, 0xF6, 0x39, 0xFF, 0x5B, 0xF7, 0x7A, 0x02, 0xF7, 0x9A, 0x89, 0xFF, 0x9B, 0xFF, 0x9D, 0xCD, 0x77, 0x82, 0x2D, 0x92, 0x2F, 0x9A, 0x51, 0xB2, 0xF4, 0xD3, 0x97, 0xD3, 0xB7, 0xDB, 0xB7, 0x01, 0xDB, 0x96, 0x80, 0xDB, 0xB6, 0x04, 0xDB, 0x96, 0x87, 0xDB, 0x95, 0xD3, 0x75, 0xCB, 0x94, 0xC4, 0x33, 0xFE, 0xBA, 0xFF, 0x7B, 0xF7, 0xBA, 0xF7, 0x99, 0x01, 0xEF, 0x98, 0x80, 0xEF, 0xB8, 0x04, 0xEF, 0x98, 0x01, 0xF7, 0xB8, 0x01, 0xF7, 0xB9, 0x85, 0xFF, 0xBA, 0xFF, 0x5A, 0xF6, 0xD9, 0xFE, 0xDA, 0xFE, 0xBA, 0xFE, 0x9A, + 0x02, 0xFE, 0x5A, 0x90, 0xFE, 0x39, 0xFE, 0x19, 0xFD, 0xF9, 0xF5, 0xD9, 0xF5, 0xB8, 0xF5, 0xB9, 0xF5, 0xB8, 0xF5, 0xB9, 0xED, 0xB9, 0xED, 0x99, 0xE4, 0xF8, 0xC3, 0xB4, 0x92, 0x0F, 0x91, 0xCF, 0xB2, 0xB3, 0xC3, 0x35, 0xD3, 0x76, 0x01, 0xDB, 0xB7, 0x80, 0xDB, 0x97, 0x06, 0xDB, 0x96, 0x85, 0xD3, 0x95, 0xCB, 0x94, 0xC3, 0xB3, 0xD5, 0x15, 0xFF, 0x5C, 0xFF, 0x7B, 0x02, 0xF7, 0x9A, 0x8C, 0xF7, 0xBA, 0xF7, 0x9A, 0xF7, 0xBB, 0xFF, 0x9C, 0xFF, 0x1C, 0x93, 0x50, 0x8A, 0x4F, 0x92, 0x2F, 0xAA, 0xD2, 0xBB, 0x34, 0xD3, 0x96, 0xD3, 0xB6, 0xDB, 0xB6, 0x06, 0xDB, 0x96, 0x86, 0xD3, 0x75, 0xD3, 0x95, 0xCB, 0x94, 0xC3, 0xF3, 0xEE, 0x38, 0xFF, 0x7A, 0xFF, 0xBA, 0x02, 0xF7, 0xB9, 0x88, 0xF7, 0xBA, 0xFF, 0xBB, 0xFF, 0x9D, 0xB4, 0x94, 0x7A, 0x0D, 0x8A, 0x0F, 0x9A, 0x50, 0xB2, 0xD3, 0xD3, 0x96, 0x02, 0xDB, 0xB7, 0x05, 0xDB, 0x96, 0x89, 0xDB, 0xB6, 0xDB, 0xB5, 0xD3, 0x95, 0xCB, 0xB4, 0xC4, 0x53, 0xFE, 0xBA, 0xFF, 0x7A, 0xF7, 0x99, 0xF7, 0x98, 0xF7, 0xB8, 0x01, 0xF7, 0x98, 0x01, 0xEF, 0x98, 0x81, 0xEF, 0x78, 0xF7, 0x98, 0x02, 0xF7, 0xB9, 0x01, 0xF7, 0xDA, 0x86, 0xFF, 0xBC, 0xC4, 0xF5, 0x92, 0xAF, 0x8A, 0x0E, 0x9A, 0x2F, 0xC3, 0x55, 0xD3, 0x96, 0x01, 0xDB, 0xB7, 0x04, 0xDB, 0x96, 0x88, 0xD3, 0x96, 0xD3, 0xB6, 0xD3, 0x96, 0xD3, 0x95, 0xD3, 0x75, 0xCB, 0x74, 0xB3, 0x51, 0xFF, 0x3C, 0xFF, 0x7B, 0x01, 0xF7, 0x9A, 0x80, 0xFF, 0x9A, 0x04, 0xF7, 0x7A, 0x81, 0xF7, 0x9A, 0xFF, 0x9B, 0x01, 0xFF, 0xBC, 0x8E, 0xFF, 0x7C, 0xFF, 0x1C, 0xE4, 0xB8, 0xAA, 0x10, + 0xA9, 0xD2, 0xB1, 0xD4, 0xB9, 0xF5, 0xB2, 0x16, 0xB2, 0x58, 0x9A, 0x5A, 0x48, 0xF8, 0x29, 0x1A, 0x21, 0x5B, 0x19, 0x7D, 0x11, 0x9D, 0x01, 0x09, 0x9E, 0x80, 0x09, 0x9F, 0x01, 0x01, 0x9F, 0x02, 0x09, 0x9F, 0x01, 0x09, 0x9E, 0x92, 0x09, 0x7E, 0x11, 0x7E, 0x19, 0x5D, 0x21, 0x3D, 0x29, 0x1B, 0x40, 0xF8, 0x7A, 0x3B, 0x8A, 0x7A, 0x8A, 0x58, 0x7A, 0x37, 0x72, 0x77, 0x6A, 0xB6, 0x6B, 0x97, 0x85, 0x9C, 0x66, 0x3A, 0x46, 0xB9, 0x1E, 0xB6, 0x0E, 0xB5, 0x0F, 0x16, 0x01, 0x17, 0x37, 0x87, 0x27, 0x39, 0x47, 0x3B, 0x5E, 0xFC, 0x7E, 0x5C, 0x53, 0x33, 0x6A, 0x72, 0x82, 0x33, 0x92, 0x14, 0x01, 0x9A, 0x15, 0x83, 0x81, 0xB4, 0x69, 0x52, 0x61, 0x93, 0x59, 0x93, 0x01, 0x51, 0x72, 0x8E, 0x49, 0x72, 0x49, 0x71, 0x49, 0x51, 0x51, 0x31, 0x50, 0xF0, 0x61, 0x31, 0x92, 0x35, 0x9A, 0x76, 0xA2, 0xB6, 0xA2, 0xF8, 0x61, 0x71, 0x38, 0xAE, 0x39, 0x0F, 0x31, 0x30, 0x31, 0x50, 0x01, 0x29, 0x30, 0x81, 0x29, 0x50, 0x31, 0x50, 0x02, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x0E, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x8B, 0x21, 0x30, 0x19, 0x11, 0x19, 0x12, 0x11, 0x13, 0x11, 0x95, 0x19, 0xD6, 0x11, 0xB6, 0x19, 0xB5, 0x11, 0x12, 0x19, + 0x31, 0x21, 0x31, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x8F, 0x19, 0x2F, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x04, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x10, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x8B, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x11, 0x53, 0x21, 0xD6, 0x21, 0xF7, 0x2A, 0x38, 0x21, 0xF7, 0x19, 0x74, 0x11, 0x32, 0x19, 0x12, 0x01, 0x19, 0x11, 0x82, 0x19, 0x31, 0x21, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x83, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x88, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x74, 0x19, 0xB5, 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xF8, 0x11, 0xD8, 0x01, 0x11, 0xF8, 0x85, 0x19, 0xF8, 0x11, 0xB6, 0x09, 0x54, 0x11, 0x54, + 0x19, 0x73, 0x19, 0x52, 0x01, 0x19, 0x31, 0x81, 0x19, 0x30, 0x21, 0x50, 0x04, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x89, 0x1A, 0x18, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x20, 0xEF, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x19, 0x10, 0x83, 0x19, 0x11, 0x11, 0x12, 0x19, 0x54, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x85, 0x19, 0xB6, 0x11, 0x75, 0x11, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0A, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x0C, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, + 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x8B, 0x10, 0xF1, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x19, 0xD7, 0x22, 0x18, 0x21, 0xD7, 0x19, 0x96, 0x11, 0x33, 0x11, 0x13, 0x11, 0x12, 0x19, 0x11, 0x01, 0x19, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x07, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x06, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x06, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8A, 0x28, 0xEE, 0x30, 0xAE, 0x40, 0x6C, 0xAA, 0xB4, 0xB2, 0x52, 0xAA, 0x11, 0xA9, 0xF1, 0xA9, 0xF0, 0x89, 0xCD, 0xFF, 0x7E, 0xF7, 0x9B, 0x01, 0xF7, 0xBA, 0x80, 0xF7, 0x99, 0x03, 0xF7, 0x98, 0x8B, 0xF7, 0xB8, 0xF7, 0xB9, 0xF7, 0xD9, 0xFF, 0xDA, 0xFF, 0xBB, 0xF6, 0xDB, 0xA3, 0xB1, 0x82, 0x2E, 0x8A, 0x0F, 0xAA, 0xD3, 0xC3, 0x55, 0xD3, 0xB6, 0x01, 0xDB, 0xB7, 0x02, 0xDB, 0xB6, 0x82, 0xDB, 0x96, 0xDB, 0xB6, 0xE3, 0xD6, 0x01, 0xDB, 0xB6, 0x85, 0xD3, 0xB5, 0xD3, 0x94, 0xCB, 0xD4, 0xD4, 0xF5, 0xFE, 0xFA, 0xFF, 0x9A, 0x01, 0xF7, 0xB9, 0x83, 0xF7, 0xD9, 0xF7, 0xD8, 0xF7, 0xB8, 0xF7, 0xD8, 0x05, 0xF7, 0xB8, 0x80, 0xF7, 0xD8, + 0x01, 0xF7, 0xB8, 0x01, 0xF7, 0xD9, 0x88, 0xFF, 0xDA, 0xFF, 0xBB, 0xFF, 0x1C, 0x93, 0x4F, 0x82, 0x4E, 0x8A, 0x0F, 0xA2, 0xB1, 0xBB, 0x54, 0xD3, 0xB6, 0x04, 0xDB, 0xD7, 0x02, 0xDB, 0xB6, 0x02, 0xDB, 0xB5, 0x85, 0xD3, 0xB5, 0xC3, 0xD3, 0xF6, 0x59, 0xFF, 0x7A, 0xFF, 0x99, 0xF7, 0x98, 0x0B, 0xF7, 0xB8, 0x82, 0xF7, 0xD8, 0xF7, 0xB9, 0xF7, 0xD9, 0x01, 0xF7, 0xDA, 0x87, 0xFF, 0xBC, 0xFE, 0xFC, 0x9B, 0x70, 0x8A, 0x6E, 0x92, 0x2F, 0xAA, 0xD2, 0xC3, 0x54, 0xD3, 0xB6, 0x0A, 0xDB, 0xB6, 0x88, 0xDB, 0xD7, 0xDB, 0xF8, 0xAA, 0x73, 0xA2, 0x12, 0xA2, 0x32, 0xCB, 0x56, 0xD3, 0xB7, 0xDB, 0xB6, 0xDB, 0xD6, 0x02, 0xDB, 0xB6, 0x80, 0xDB, 0xD6, 0x01, 0xDB, 0xB6, 0x80, 0xD3, 0xB6, 0x01, 0xDB, 0xB6, 0x85, 0xD3, 0x96, 0xD3, 0xB5, 0xCC, 0x14, 0xFE, 0x7A, 0xFF, 0x7B, 0xFF, 0xBA, 0x01, 0xF7, 0xB9, 0x03, 0xF7, 0xB8, 0x81, 0xF7, 0xB9, 0xF7, 0xB8, 0x01, 0xF7, 0x98, 0x06, 0xF7, 0xB8, 0x01, 0xF7, 0xB9, 0x87, 0xF7, 0xBA, 0xFF, 0xBB, 0xFF, 0x9E, 0x71, 0xCB, 0x81, 0xCE, 0x89, 0xCE, 0xB2, 0xF3, 0xD3, 0xB6, 0x01, 0xDB, 0xD7, 0x81, 0xDB, 0xB7, 0xD3, 0xB6, 0x05, 0xDB, 0xB6, 0x01, 0xD3, 0x95, 0x83, 0xD3, 0xB4, 0xC3, 0xF3, 0xFE, 0x7A, 0xFF, 0x5B, 0x01, 0xFF, 0x9A, 0x01, 0xFF, 0xBA, 0x87, 0xFF, 0xBB, 0xFF, 0x9C, 0xD5, 0x97, 0x82, 0x0D, 0x92, 0x2F, 0x9A, 0x50, 0xBB, 0x14, 0xD3, 0xB7, 0x02, 0xDB, 0xB7, 0x01, 0xDB, 0xD7, 0x04, 0xDB, 0xB6, 0x87, 0xDB, 0x95, 0xD3, 0x95, 0xCB, 0xB4, 0xCC, 0x74, 0xFE, 0xFB, 0xFF, 0x7A, 0xFF, 0xB9, 0xFF, 0xD9, 0x09, 0xF7, 0xB8, 0x85, + 0xF7, 0xD8, 0xFF, 0xD9, 0xFF, 0xB9, 0xFF, 0xBA, 0xFF, 0x9A, 0xFF, 0x7A, 0x01, 0xFF, 0x5A, 0x04, 0xFF, 0x3A, 0x81, 0xFF, 0x1A, 0xFF, 0x1B, 0x02, 0xFF, 0x3B, 0x80, 0xFF, 0x5C, 0x01, 0xFF, 0x3C, 0x88, 0xFE, 0x5B, 0xBB, 0xF4, 0x89, 0xEE, 0x89, 0xCF, 0xAA, 0xB3, 0xC3, 0x35, 0xD3, 0x97, 0xDB, 0xB7, 0xDB, 0xD7, 0x01, 0xDB, 0xB7, 0x81, 0xDB, 0xB6, 0xDB, 0xD7, 0x03, 0xDB, 0xB6, 0x01, 0xD3, 0xB5, 0x86, 0xC3, 0xD3, 0xDD, 0x36, 0xFF, 0x5C, 0xFF, 0x7A, 0xFF, 0x9A, 0xF7, 0x9A, 0xF7, 0xBA, 0x01, 0xF7, 0xDA, 0x8A, 0xFF, 0xDB, 0xFF, 0xBC, 0xFF, 0x1C, 0x9B, 0x70, 0x8A, 0x4F, 0x92, 0x2F, 0xAA, 0xD2, 0xC3, 0x54, 0xD3, 0xB6, 0xDB, 0xD7, 0xDB, 0xB7, 0x06, 0xDB, 0xB6, 0x01, 0xD3, 0x95, 0x90, 0xD3, 0x94, 0xC3, 0xD2, 0xFE, 0x99, 0xFF, 0x9A, 0xFF, 0x99, 0xFF, 0xB9, 0xF7, 0xB9, 0xFF, 0xD9, 0xFF, 0xBA, 0xFF, 0xBB, 0xFF, 0x9C, 0xBC, 0xB4, 0x7A, 0x0D, 0x8A, 0x0F, 0x92, 0x50, 0xB3, 0x14, 0xD3, 0xB7, 0x02, 0xDB, 0xB7, 0x83, 0xDB, 0xD7, 0xDB, 0xB7, 0xDB, 0xB6, 0xDB, 0x96, 0x03, 0xDB, 0xB6, 0x85, 0xD3, 0xB5, 0xCB, 0xD3, 0xCC, 0x94, 0xFE, 0xFA, 0xFF, 0x7A, 0xFF, 0xB9, 0x01, 0xF7, 0xB8, 0x80, 0xF7, 0x98, 0x02, 0xF7, 0xB8, 0x80, 0xF7, 0x98, 0x02, 0xF7, 0xB8, 0x89, 0xF7, 0xD9, 0xF7, 0xB9, 0xFF, 0xDA, 0xFF, 0xBC, 0xC4, 0xF5, 0x92, 0xAF, 0x8A, 0x0E, 0x9A, 0x2F, 0xC3, 0x55, 0xD3, 0x96, 0x03, 0xDB, 0xB7, 0x02, 0xDB, 0xB6, 0x03, 0xD3, 0xB6, 0x84, 0xD3, 0x95, 0xCB, 0x94, 0xB3, 0x72, 0xFF, 0x5C, 0xFF, 0x9B, 0x02, 0xFF, 0x9A, 0x80, 0xF7, 0x79, 0x01, 0xFF, 0x99, + 0x02, 0xFF, 0x9A, 0x91, 0xF7, 0x9A, 0xFF, 0xBB, 0xFF, 0xBC, 0xFF, 0x7B, 0xFF, 0x1C, 0xED, 0x38, 0xAA, 0x51, 0xA9, 0xD1, 0xA9, 0xB3, 0xB1, 0xF5, 0xB2, 0x16, 0xAA, 0x38, 0x92, 0x3A, 0x48, 0xF8, 0x29, 0x1A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x9D, 0x02, 0x09, 0x9E, 0x02, 0x09, 0x9F, 0x80, 0x01, 0x9F, 0x02, 0x09, 0x9F, 0x01, 0x09, 0x7E, 0xB1, 0x11, 0x5E, 0x19, 0x5D, 0x21, 0x3C, 0x31, 0x1B, 0x38, 0xD8, 0x82, 0x9C, 0x82, 0x59, 0x7A, 0x38, 0x72, 0x57, 0x6A, 0x76, 0x6B, 0x16, 0x8D, 0x3B, 0x75, 0xFA, 0x56, 0xDA, 0x26, 0x96, 0x0E, 0x74, 0x16, 0xF6, 0x17, 0x16, 0x1F, 0x37, 0x2F, 0x39, 0x3E, 0xFA, 0x5E, 0xDC, 0x7E, 0x5C, 0x52, 0xF2, 0x72, 0xB3, 0x82, 0x54, 0x92, 0x14, 0x9A, 0x15, 0x9A, 0x36, 0x79, 0x94, 0x69, 0x73, 0x59, 0x72, 0x59, 0x93, 0x51, 0x92, 0x51, 0xB2, 0x49, 0x92, 0x51, 0xB2, 0x49, 0x72, 0x49, 0x51, 0x51, 0x51, 0x59, 0x10, 0x71, 0x92, 0x8A, 0x55, 0x92, 0x55, 0x9A, 0xB7, 0x82, 0x55, 0x51, 0x30, 0x38, 0xCF, 0x39, 0x10, 0x31, 0x30, 0x07, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x09, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x8B, 0x21, 0x10, 0x21, 0x30, 0x19, 0x31, 0x19, + 0x12, 0x11, 0x12, 0x11, 0x95, 0x19, 0xD7, 0x19, 0xB6, 0x11, 0x95, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x19, 0x30, 0x89, 0x19, 0x51, 0x19, 0x32, 0x11, 0x33, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xF6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x10, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x11, 0x74, 0x02, 0x21, 0xF7, 0x85, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x01, 0x21, 0x31, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x30, + 0x87, 0x21, 0x31, 0x19, 0x31, 0x11, 0x52, 0x11, 0x94, 0x11, 0x95, 0x11, 0xB6, 0x11, 0xD7, 0x11, 0xF8, 0x01, 0x09, 0xD8, 0x80, 0x09, 0xD9, 0x02, 0x09, 0xD8, 0x8B, 0x11, 0xD7, 0x11, 0x96, 0x09, 0x33, 0x11, 0x32, 0x11, 0x52, 0x19, 0x31, 0x19, 0x51, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x19, 0x30, 0x19, 0x0F, 0x05, 0x21, 0x30, 0x01, 0x11, 0xD7, 0x83, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x10, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x30, 0x05, 0x21, 0x30, 0x86, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x21, 0xD6, 0x01, 0x21, 0xF7, 0x83, 0x21, 0xD7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x0A, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x12, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, + 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x0A, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x51, 0x19, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0x95, 0x21, 0xF7, 0x22, 0x18, 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x02, 0x19, 0x10, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x0A, 0x21, 0x0F, 0x82, 0x20, 0xEE, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8C, 0x28, 0xEF, 0x30, 0xAE, 0x40, 0x6C, 0xAA, 0x94, 0xB2, 0x52, 0xB2, 0x11, 0xA9, 0xF1, 0xA9, 0xF0, 0x89, 0xCD, 0xFF, 0x7E, 0xF7, 0x9B, 0xF7, 0xBA, 0xF7, 0xB9, 0x01, 0xF7, 0x98, 0x03, 0xF7, 0xB8, 0x8A, 0xF7, 0xD8, 0xFF, 0xD9, 0xFF, 0xB9, 0xFF, 0x7A, 0xFE, + 0xDB, 0xAB, 0xB1, 0x8A, 0x2E, 0x8A, 0x0F, 0xAA, 0xF3, 0xC3, 0x55, 0xD3, 0xB7, 0x02, 0xDB, 0xD7, 0x80, 0xDB, 0xB7, 0x01, 0xDB, 0xB6, 0x01, 0xDB, 0xD6, 0x01, 0xDB, 0xB6, 0x01, 0xD3, 0xB5, 0x86, 0xCB, 0xF4, 0xDD, 0x15, 0xFE, 0xD9, 0xFF, 0x99, 0xFF, 0xB9, 0xFF, 0xB8, 0xF7, 0xB8, 0x06, 0xFF, 0xB8, 0x82, 0xFF, 0xD8, 0xFF, 0xB8, 0xF7, 0xB8, 0x01, 0xFF, 0xD8, 0x01, 0xFF, 0xD9, 0x89, 0xFF, 0xDA, 0xFF, 0x9B, 0xFF, 0x1B, 0x9B, 0x4F, 0x8A, 0x4E, 0x8A, 0x2F, 0xAA, 0xB2, 0xC3, 0x54, 0xD3, 0xD7, 0xDB, 0xF7, 0x02, 0xDB, 0xD7, 0x04, 0xDB, 0xD6, 0x8B, 0xDB, 0xB5, 0xD3, 0xB5, 0xD3, 0xD5, 0xCB, 0xF3, 0xFE, 0x59, 0xFF, 0x7A, 0xFF, 0x78, 0xFF, 0x98, 0xFF, 0xB8, 0xF7, 0xB7, 0xFF, 0xB8, 0xF7, 0xB7, 0x02, 0xFF, 0xB8, 0x80, 0xF7, 0xB7, 0x02, 0xFF, 0xB8, 0x01, 0xFF, 0xD8, 0x01, 0xFF, 0xD9, 0x8A, 0xFF, 0xDA, 0xFF, 0xBA, 0xFF, 0x9B, 0xFE, 0xFB, 0x9B, 0x70, 0x8A, 0x4E, 0x92, 0x2F, 0xAA, 0xD2, 0xC3, 0x54, 0xD3, 0xD6, 0xDB, 0xD7, 0x02, 0xDB, 0xD6, 0x01, 0xDB, 0xB6, 0x03, 0xDB, 0xD6, 0x01, 0xDB, 0xD7, 0x81, 0xE3, 0xF8, 0xAA, 0x72, 0x01, 0xA2, 0x32, 0x81, 0xCB, 0x76, 0xD3, 0xB7, 0x01, 0xDB, 0xD7, 0x04, 0xDB, 0xD6, 0x80, 0xDB, 0xB6, 0x02, 0xDB, 0xD6, 0x86, 0xD3, 0xB6, 0xD3, 0xD5, 0xCC, 0x13, 0xFE, 0x7A, 0xFF, 0x5A, 0xFF, 0x99, 0xFF, 0xB9, 0x03, 0xF7, 0xB8, 0x80, 0xFF, 0xB8, 0x01, 0xF7, 0xB8, 0x82, 0xFF, 0xB8, 0xF7, 0xB8, 0xFF, 0xB8, 0x03, 0xF7, 0xB8, 0x01, 0xFF, 0xB8, 0x89, 0xF7, 0xB8, 0xFF, 0xB9, 0xFF, 0xBA, 0xFF, 0xBB, 0xFF, 0x9E, 0x71, 0xCB, 0x81, + 0xCE, 0x89, 0xCE, 0xAA, 0xD3, 0xD3, 0xD6, 0x01, 0xDB, 0xF7, 0x81, 0xDB, 0xD7, 0xDB, 0xB7, 0x03, 0xDB, 0xB6, 0x80, 0xDB, 0xD6, 0x01, 0xDB, 0xB6, 0x84, 0xD3, 0xB5, 0xD3, 0xD4, 0xCC, 0x13, 0xFE, 0x7A, 0xFF, 0x5B, 0x01, 0xFF, 0x9A, 0x01, 0xFF, 0xBA, 0x88, 0xFF, 0x9B, 0xFF, 0x9C, 0xDD, 0xB8, 0x82, 0x0D, 0x92, 0x2F, 0x9A, 0x50, 0xB3, 0x13, 0xD3, 0xB7, 0xDB, 0xF7, 0x01, 0xDB, 0xD7, 0x03, 0xDB, 0xD6, 0x80, 0xDB, 0xB6, 0x02, 0xDB, 0xD6, 0x85, 0xDB, 0xB5, 0xCB, 0xD4, 0xCC, 0x94, 0xFE, 0xFA, 0xFF, 0x7A, 0xFF, 0x99, 0x02, 0xFF, 0xB8, 0x03, 0xF7, 0xB7, 0x03, 0xFF, 0xB7, 0x02, 0xFF, 0xB8, 0x01, 0xFF, 0xB9, 0x01, 0xFF, 0x99, 0x03, 0xFF, 0x79, 0x80, 0xFF, 0x59, 0x01, 0xFF, 0x79, 0x80, 0xFF, 0x59, 0x01, 0xFF, 0x5A, 0x01, 0xFF, 0x7A, 0x88, 0xFF, 0x7B, 0xFF, 0x5C, 0xFE, 0x7B, 0xBB, 0xF3, 0x8A, 0x0E, 0x89, 0xCF, 0xAA, 0xB3, 0xC3, 0x55, 0xD3, 0xB7, 0x01, 0xDB, 0xD7, 0x84, 0xDB, 0xB7, 0xDB, 0xD7, 0xDB, 0xB6, 0xDB, 0xD7, 0xDB, 0xB6, 0x01, 0xDB, 0xD6, 0x87, 0xDB, 0xB6, 0xDB, 0xD5, 0xD3, 0xD5, 0xCB, 0xF4, 0xDD, 0x56, 0xFF, 0x3B, 0xFF, 0x7A, 0xFF, 0x99, 0x01, 0xFF, 0xB9, 0x02, 0xFF, 0xBA, 0x87, 0xFF, 0x9B, 0xFF, 0x1C, 0x9B, 0x70, 0x8A, 0x4E, 0x92, 0x2F, 0xAA, 0xD2, 0xC3, 0x54, 0xD3, 0xD6, 0x01, 0xDB, 0xD7, 0x81, 0xDB, 0xB6, 0xDB, 0xD7, 0x03, 0xDB, 0xD6, 0x01, 0xDB, 0xB6, 0x85, 0xD3, 0xB5, 0xD3, 0xB4, 0xC3, 0xD2, 0xFE, 0xB9, 0xFF, 0x79, 0xFF, 0x99, 0x01, 0xFF, 0xB8, 0x01, 0xFF, 0xB9, 0x89, 0xFF, 0x9A, 0xFF, 0x9C, 0xBC, 0xB4, 0x7A, 0x0D, 0x8A, + 0x0F, 0x92, 0x50, 0xB2, 0xF3, 0xD3, 0xB6, 0xDB, 0xD7, 0xDB, 0xB7, 0x02, 0xDB, 0xD7, 0x01, 0xDB, 0xB6, 0x02, 0xDB, 0xD6, 0x8E, 0xDB, 0xD5, 0xD3, 0xB5, 0xCB, 0xD3, 0xD4, 0xB4, 0xFE, 0xF9, 0xFF, 0x59, 0xF7, 0x78, 0xF7, 0x97, 0xFF, 0xB8, 0xF7, 0x97, 0xF7, 0xB7, 0xFF, 0xB7, 0xF7, 0xB7, 0xFF, 0xB8, 0xFF, 0xB7, 0x01, 0xFF, 0xB8, 0x89, 0xFF, 0xD8, 0xFF, 0xD9, 0xFF, 0xDA, 0xFF, 0xBC, 0xCC, 0xF5, 0x92, 0xAE, 0x8A, 0x0D, 0x9A, 0x2F, 0xC3, 0x55, 0xD3, 0x96, 0x03, 0xDB, 0xD7, 0x82, 0xDB, 0xB6, 0xDB, 0xD6, 0xDB, 0xB6, 0x01, 0xDB, 0xD6, 0x85, 0xDB, 0xB6, 0xD3, 0xB6, 0xD3, 0xB5, 0xCB, 0x94, 0xB3, 0x91, 0xFF, 0x5C, 0x01, 0xFF, 0x9A, 0x02, 0xFF, 0x99, 0x80, 0xFF, 0x79, 0x01, 0xFF, 0x99, 0x82, 0xFF, 0x79, 0xFF, 0x9A, 0xFF, 0xBA, 0x01, 0xFF, 0xBB, 0x8E, 0xFF, 0x7B, 0xFF, 0x1B, 0xF5, 0x99, 0xAA, 0xB1, 0xA1, 0xD1, 0xA9, 0xD3, 0xB1, 0xF5, 0xB2, 0x16, 0xAA, 0x38, 0x92, 0x5A, 0x41, 0x18, 0x29, 0x1A, 0x21, 0x5B, 0x19, 0x9D, 0x11, 0x9D, 0x02, 0x09, 0x9E, 0x87, 0x09, 0x9F, 0x01, 0x9F, 0x09, 0x9F, 0x01, 0x9F, 0x09, 0x9F, 0x01, 0x9F, 0x09, 0x9F, 0x09, 0x9E, 0x01, 0x09, 0x7E, 0x9F, 0x11, 0x7E, 0x11, 0x3D, 0x21, 0x3D, 0x31, 0x1B, 0x51, 0x9A, 0x7A, 0x9B, 0x7A, 0x59, 0x72, 0x37, 0x6A, 0x57, 0x62, 0x75, 0x7C, 0x18, 0x7D, 0x7A, 0x5E, 0x9A, 0x36, 0xB7, 0x16, 0x54, 0x16, 0xD6, 0x17, 0x16, 0x1F, 0x17, 0x37, 0x3A, 0x46, 0xFA, 0x6E, 0xDC, 0x7D, 0xDB, 0x52, 0xD2, 0x72, 0x93, 0x8A, 0x54, 0x92, 0x14, 0x9A, 0x15, 0x92, 0x16, 0x71, 0x94, 0x61, 0x52, 0x59, 0x73, + 0x59, 0xB3, 0x01, 0x51, 0xB3, 0x87, 0x49, 0x92, 0x49, 0x72, 0x49, 0x71, 0x41, 0x51, 0x49, 0x31, 0x51, 0x51, 0x59, 0x30, 0x71, 0xB3, 0x01, 0x8A, 0x55, 0x84, 0x92, 0xB6, 0x72, 0x14, 0x38, 0xCF, 0x39, 0x10, 0x31, 0x10, 0x04, 0x29, 0x30, 0x83, 0x29, 0x10, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x89, 0x19, 0x11, 0x11, 0x11, 0x11, 0x13, 0x11, 0x95, 0x11, 0xB6, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x06, 0x21, 0x30, 0x8B, 0x19, 0x30, 0x19, 0x51, 0x11, 0x32, 0x09, 0x13, 0x19, 0xB5, 0x22, 0x17, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x21, 0x30, 0x01, 0x21, 0x50, 0x01, 0x21, 0x0F, 0x89, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0E, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x30, 0x21, 0x10, 0x01, + 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x50, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x11, 0x8B, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x21, 0xD6, 0x22, 0x18, 0x21, 0xF7, 0x21, 0xD6, 0x11, 0x54, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x31, 0x21, 0x51, 0x04, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x85, 0x19, 0x31, 0x11, 0x32, 0x11, 0x53, 0x11, 0xB5, 0x11, 0xD7, 0x11, 0xD8, 0x01, 0x09, 0xD8, 0x80, 0x01, 0xB8, 0x01, 0x01, 0xD9, 0x87, 0x01, 0xB9, 0x01, 0xD9, 0x09, 0xF9, 0x09, 0xD8, 0x11, 0xD8, 0x11, 0x96, 0x09, 0x33, 0x09, 0x32, 0x01, 0x11, 0x32, 0x02, 0x19, 0x31, 0x81, 0x19, 0x10, 0x19, 0x30, 0x03, 0x19, 0x10, 0x82, 0x19, 0x30, 0x19, 0x10, 0x09, 0x96, 0x01, 0x11, 0x96, 0x81, 0x19, 0xB6, 0x11, 0x74, 0x01, 0x11, 0x53, 0x80, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x31, 0x06, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x29, 0x30, 0x04, + 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x19, 0x0F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x84, 0x19, 0x32, 0x19, 0x53, 0x11, 0x53, 0x19, 0xB6, 0x21, 0xF7, 0x01, 0x21, 0xD7, 0x83, 0x19, 0x75, 0x11, 0x13, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x06, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x09, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x8E, 0x19, 0x11, 0x19, 0x52, 0x19, 0x32, 0x11, 0x33, 0x19, 0x75, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x19, 0x74, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, + 0x01, 0x29, 0x0F, 0x0D, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x07, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x84, 0x28, 0xEF, 0x30, 0xAE, 0x40, 0x6C, 0xAA, 0xB4, 0xB2, 0x52, 0x01, 0xB2, 0x11, 0x87, 0xA9, 0xF0, 0x89, 0xCD, 0xFF, 0x5D, 0xFF, 0x9A, 0xFF, 0x99, 0xFF, 0x98, 0xF7, 0x98, 0xF7, 0x97, 0x03, 0xFF, 0xB7, 0x01, 0xFF, 0xB8, 0x88, 0xFF, 0x99, 0xFF, 0x59, 0xFE, 0xBA, 0xAB, 0xD1, 0x82, 0x2E, 0x8A, 0x0F, 0xB2, 0xF3, 0xC3, 0x75, 0xD3, 0xD7, 0x01, 0xDB, 0xF7, 0x01, 0xDB, 0xD7, 0x85, 0xE3, 0xF7, 0xDB, 0xD7, 0xDB, 0xD6, 0xE3, 0xF7, 0xDB, 0xF6, 0xDB, 0xD6, 0x01, 0xD3, 0xD5, 0x84, 0xCB, 0xF3, 0xDC, 0xF4, 0xFE, 0xB8, 0xFF, 0x79, 0xFF, 0x98, 0x04, 0xFF, 0xB7, 0x03, 0xFF, 0x96, 0x01, 0xFF, 0x97, 0x02, 0xFF, 0xB7, 0x01, 0xFF, 0xB8, 0x88, 0xFF, 0xB9, 0xFF, 0x9A, 0xFF, 0x1B, 0x9B, 0x70, 0x8A, 0x6E, 0x92, 0x2F, 0xAA, 0xD2, 0xC3, 0x75, 0xD3, 0xF7, 0x04, 0xDB, 0xF7, 0x81, 0xDB, 0xD6, 0xDB, 0xF6, 0x02, 0xDB, 0xD6, 0x01, 0xDB, 0xD5, 0x83, 0xCB, 0xF3, 0xF6, 0x38, 0xFF, 0x59, 0xFF, 0x78, 0x02, 0xFF, 0x97, 0x03, 0xFF, 0xB7, 0x01, 0xFF, 0x97, 0x01, 0xFF, 0xB7, 0x01, 0xFF, 0x97, 0x80, 0xFF, 0xB7, 0x01, 0xFF, 0xB8, 0x89, 0xFF, 0xB9, 0xFF, + 0x99, 0xFF, 0x7B, 0xFE, 0xDB, 0xA3, 0x91, 0x8A, 0x6E, 0x92, 0x4F, 0xAA, 0xD2, 0xC3, 0x74, 0xD3, 0xD6, 0x02, 0xDB, 0xF7, 0x81, 0xDB, 0xD6, 0xDB, 0xD7, 0x01, 0xDB, 0xD6, 0x81, 0xDB, 0xF7, 0xDB, 0xD6, 0x03, 0xDB, 0xF7, 0x84, 0xAA, 0x93, 0xA2, 0x32, 0xA2, 0x31, 0xCB, 0x76, 0xDB, 0xD7, 0x02, 0xDB, 0xF7, 0x01, 0xDB, 0xD6, 0x04, 0xDB, 0xF6, 0x01, 0xDB, 0xD6, 0x84, 0xD3, 0xF5, 0xCC, 0x33, 0xFE, 0x39, 0xFF, 0x3A, 0xFF, 0x79, 0x01, 0xFF, 0xB8, 0x0E, 0xFF, 0xB7, 0x01, 0xFF, 0xB8, 0x89, 0xFF, 0xB9, 0xFF, 0xBB, 0xFF, 0x9D, 0x71, 0xCB, 0x89, 0xEE, 0x89, 0xCE, 0xAA, 0xD3, 0xD3, 0xF7, 0xDB, 0xF8, 0xDB, 0xF7, 0x02, 0xDB, 0xD7, 0x02, 0xDB, 0xD6, 0x80, 0xDB, 0xF6, 0x01, 0xDB, 0xD6, 0x85, 0xDB, 0xD5, 0xD3, 0xF4, 0xCC, 0x13, 0xFE, 0x59, 0xFF, 0x5A, 0xFF, 0x79, 0x02, 0xFF, 0x99, 0x87, 0xFF, 0x7A, 0xFF, 0x7C, 0xDD, 0xB7, 0x82, 0x0D, 0x92, 0x2F, 0x9A, 0x50, 0xB3, 0x13, 0xD3, 0xB6, 0x04, 0xDB, 0xF7, 0x01, 0xDB, 0xD6, 0x81, 0xDB, 0xF6, 0xDB, 0xD6, 0x01, 0xDB, 0xF6, 0x86, 0xDB, 0xD5, 0xD3, 0xF4, 0xD4, 0xB4, 0xFE, 0xD9, 0xFF, 0x38, 0xFF, 0x77, 0xFF, 0x97, 0x01, 0xFF, 0xB7, 0x06, 0xFF, 0x96, 0x81, 0xFF, 0xB6, 0xFF, 0xB7, 0x01, 0xFF, 0x97, 0x02, 0xFF, 0x98, 0x04, 0xFF, 0x78, 0x80, 0xFF, 0x58, 0x01, 0xFF, 0x78, 0x03, 0xFF, 0x79, 0x01, 0xFF, 0x7A, 0x89, 0xFF, 0x5B, 0xFE, 0x9A, 0xBC, 0x13, 0x8A, 0x0E, 0x89, 0xEF, 0xB2, 0xD3, 0xCB, 0x76, 0xD3, 0xD7, 0xDB, 0xF8, 0xDB, 0xF7, 0x01, 0xDB, 0xD7, 0x02, 0xDB, 0xF7, 0x01, 0xDB, 0xD6, 0x89, 0xDB, 0xF6, 0xDB, + 0xF5, 0xD3, 0xD5, 0xCC, 0x14, 0xDD, 0x15, 0xFF, 0x1A, 0xFF, 0x39, 0xFF, 0x58, 0xFF, 0x78, 0xFF, 0x98, 0x01, 0xFF, 0x99, 0x88, 0xFF, 0xBA, 0xFF, 0x9B, 0xFF, 0x1B, 0xA3, 0x90, 0x8A, 0x4E, 0x92, 0x4F, 0xAA, 0xD2, 0xC3, 0x54, 0xD3, 0xD6, 0x01, 0xDB, 0xF7, 0x82, 0xDB, 0xD7, 0xDB, 0xD6, 0xDB, 0xF7, 0x02, 0xDB, 0xD7, 0x87, 0xDB, 0xD6, 0xDB, 0xB6, 0xDB, 0xD5, 0xD3, 0xD5, 0xCC, 0x13, 0xFE, 0x57, 0xFF, 0x58, 0xFF, 0x78, 0x02, 0xFF, 0x98, 0x88, 0xFF, 0x99, 0xFF, 0x9A, 0xFF, 0x7C, 0xC4, 0xD4, 0x7A, 0x0D, 0x8A, 0x0F, 0x9A, 0x50, 0xB3, 0x14, 0xD3, 0xB7, 0x02, 0xDB, 0xD7, 0x81, 0xDB, 0xF7, 0xE3, 0xF7, 0x01, 0xDB, 0xD6, 0x01, 0xE3, 0xF6, 0x86, 0xDB, 0xD6, 0xDB, 0xD5, 0xD3, 0xD5, 0xCB, 0xF3, 0xD4, 0x93, 0xFE, 0xD9, 0xFF, 0x58, 0x01, 0xFF, 0x97, 0x01, 0xFF, 0xB7, 0x82, 0xFF, 0xB6, 0xFF, 0x96, 0xFF, 0xB6, 0x03, 0xFF, 0xB7, 0x01, 0xFF, 0xB8, 0x88, 0xFF, 0xD9, 0xFF, 0x9B, 0xCC, 0xF4, 0x9A, 0xCE, 0x8A, 0x0D, 0x92, 0x0F, 0xC3, 0x54, 0xD3, 0xB6, 0xDB, 0xD7, 0x02, 0xDB, 0xF7, 0x01, 0xDB, 0xD7, 0x01, 0xDB, 0xF7, 0x80, 0xDB, 0xF6, 0x01, 0xDB, 0xD6, 0x01, 0xD3, 0xD5, 0x84, 0xBB, 0xB2, 0xFF, 0x1B, 0xFF, 0x7A, 0xFF, 0x79, 0xFF, 0x99, 0x01, 0xFF, 0x78, 0x01, 0xFF, 0x98, 0x01, 0xFF, 0x99, 0x81, 0xFF, 0x79, 0xFF, 0x9A, 0x01, 0xFF, 0xBB, 0x8E, 0xFF, 0x9B, 0xFF, 0x3C, 0xFD, 0xFA, 0xBB, 0x32, 0xA1, 0xF1, 0xA9, 0xD3, 0xB1, 0xF5, 0xB2, 0x16, 0xAA, 0x58, 0x92, 0x5A, 0x41, 0x18, 0x29, 0x3A, 0x21, 0x5B, 0x19, 0x7C, 0x11, 0x9D, 0x01, 0x09, 0x9E, 0x80, 0x01, + 0x9E, 0x05, 0x01, 0x9F, 0x81, 0x09, 0x9F, 0x09, 0x9E, 0x02, 0x09, 0x7E, 0x9E, 0x11, 0x5E, 0x19, 0x5D, 0x21, 0x3C, 0x29, 0x1A, 0x49, 0xBA, 0x72, 0x9B, 0x72, 0x78, 0x6A, 0x57, 0x62, 0x56, 0x6B, 0x17, 0x74, 0xD9, 0x66, 0x59, 0x4E, 0xF8, 0x2E, 0xD6, 0x1E, 0xD6, 0x1F, 0x17, 0x26, 0xF7, 0x37, 0x19, 0x4E, 0xFB, 0x6E, 0xDC, 0x7D, 0x9A, 0x52, 0xB2, 0x7A, 0x94, 0x82, 0x34, 0x92, 0x35, 0x9A, 0x36, 0x92, 0x16, 0x71, 0x94, 0x61, 0x73, 0x59, 0x72, 0x51, 0x92, 0x01, 0x51, 0xB3, 0x03, 0x49, 0x92, 0x84, 0x41, 0x51, 0x41, 0x10, 0x48, 0xF0, 0x51, 0x10, 0x71, 0xB2, 0x01, 0x82, 0x75, 0x84, 0x82, 0x95, 0x59, 0xB2, 0x39, 0x0F, 0x31, 0x10, 0x31, 0x30, 0x04, 0x29, 0x30, 0x80, 0x29, 0x10, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x31, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x11, 0xB5, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x04, 0x21, 0x30, 0x8E, 0x21, 0x2F, 0x19, 0x30, 0x19, 0x31, 0x19, 0x52, 0x11, 0x52, 0x11, 0x33, 0x19, 0xB6, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x33, + 0x11, 0x12, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x06, 0x29, 0x2F, 0x81, 0x29, 0x30, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x11, 0x83, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x01, 0x22, 0x18, 0x88, 0x21, 0xF7, 0x19, 0x74, 0x10, 0xF2, 0x11, 0x11, 0x19, 0x11, 0x21, 0x30, 0x29, 0x51, 0x29, 0x30, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x29, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x09, 0x21, 0x2F, 0x89, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x54, 0x19, 0xD6, 0x11, 0xF7, 0x11, 0xF8, 0x09, 0xD9, 0x06, 0x01, 0xD9, 0x85, 0x09, 0xD9, 0x09, 0xF9, 0x09, 0xD7, 0x11, 0xD6, 0x09, 0x75, 0x09, 0x33, 0x01, 0x09, 0x12, 0x80, 0x11, 0x11, 0x01, 0x11, 0x32, 0x81, 0x11, 0x11, 0x11, + 0x31, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x11, 0x11, 0x8A, 0x09, 0x55, 0x11, 0x76, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0xB5, 0x11, 0x74, 0x11, 0x52, 0x11, 0x32, 0x11, 0x31, 0x19, 0x51, 0x02, 0x21, 0x51, 0x06, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x18, 0xEF, 0x19, 0x0F, 0x01, 0x19, 0x10, 0x02, 0x21, 0x51, 0x8D, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xF8, 0x21, 0xD7, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x02, 0x19, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8C, 0x11, 0x32, 0x11, 0x53, 0x19, 0x94, 0x21, 0xF7, 0x22, 0x17, + 0x21, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x13, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x19, 0x30, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x09, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x0C, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x0A, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x8F, 0x28, 0xEF, 0x30, 0xAE, 0x38, 0x6C, 0xAA, 0xB4, 0xB2, 0x52, 0xB2, 0x11, 0xB1, 0xF1, 0xA9, 0xF0, 0x91, 0xCD, 0xFF, 0x3C, 0xFF, 0x7A, 0xFF, 0x99, 0xFF, 0x78, 0xFF, 0x77, 0xFF, 0x76, 0xFF, 0x97, 0x02, 0xFF, 0x76, 0x01, 0xFF, 0x77, 0x89, 0xFF, 0x58, 0xFF, 0x19, 0xFE, 0x79, 0xB3, 0xD1, 0x8A, 0x0D, 0x89, 0xEF, 0xAA, 0xF3, 0xC3, 0x75, 0xD3, 0xD7, 0xDC, 0x17, 0x04, 0xDB, 0xF7, 0x82, 0xDB, 0xF6, 0xDB, 0xF7, 0xE3, 0xF7, 0x01, 0xDB, 0xF6, 0x84, 0xDB, 0xF5, 0xD4, 0x14, 0xDC, 0xF4, 0xFE, 0x78, 0xFF, 0x38, 0x01, 0xFF, 0x77, 0x01, 0xFF, 0x96, 0x02, 0xFF, 0x76, 0x01, 0xFF, 0x75, 0x03, 0xFF, 0x55, 0x01, 0xFF, 0x76, 0x8A, 0xFF, 0x56, 0xFF, 0x57, 0xFF, 0x78, 0xFF, 0x59, 0xFE, 0xDA, 0xA3, 0x6F, 0x8A, 0x6E, 0x92, 0x4F, 0xAA, 0xF2, 0xC3, 0x75, 0xD3, 0xF7, 0x03, 0xDB, 0xF7, 0x81, 0xDC, 0x17, 0xDB, 0xF7, 0x03, 0xDB, 0xF6, 0x01, 0xDB, 0xF5, 0x82, 0xCC, 0x13, 0xF5, 0xF7, 0xFF, 0x18, 0x01, 0xFF, 0x57, 0x01, 0xFF, + 0x76, 0x80, 0xFF, 0x96, 0x05, 0xFF, 0x76, 0x04, 0xFF, 0x56, 0x80, 0xFF, 0x77, 0x01, 0xFF, 0x58, 0x87, 0xFF, 0x3A, 0xFE, 0x9A, 0xAB, 0xB1, 0x8A, 0x4E, 0x92, 0x2F, 0xAA, 0xF2, 0xC3, 0x74, 0xD3, 0xF6, 0x02, 0xDC, 0x17, 0x03, 0xDB, 0xF7, 0x80, 0xDB, 0xF6, 0x01, 0xDB, 0xF7, 0x83, 0xDC, 0x17, 0xDB, 0xF7, 0xE4, 0x18, 0xB2, 0xB3, 0x01, 0xA2, 0x31, 0x80, 0xCB, 0x56, 0x04, 0xDB, 0xF7, 0x06, 0xDB, 0xF6, 0x87, 0xDB, 0xD6, 0xD3, 0xF5, 0xCC, 0x14, 0xF5, 0xD8, 0xFE, 0xD9, 0xFF, 0x18, 0xFF, 0x57, 0xFF, 0x77, 0x0A, 0xFF, 0x76, 0x81, 0xFF, 0x56, 0xFF, 0x76, 0x01, 0xFF, 0x56, 0x8A, 0xFF, 0x76, 0xFF, 0x77, 0xFF, 0x98, 0xFF, 0x9A, 0xFF, 0x7D, 0x71, 0xCB, 0x89, 0xEE, 0x89, 0xCE, 0xAA, 0xD2, 0xD3, 0xF7, 0xDC, 0x18, 0x04, 0xDB, 0xF7, 0x02, 0xDB, 0xF6, 0x80, 0xE3, 0xF6, 0x01, 0xDB, 0xF6, 0x85, 0xD3, 0xF5, 0xCC, 0x33, 0xFE, 0x39, 0xFF, 0x1A, 0xFF, 0x39, 0xFF, 0x38, 0x01, 0xFF, 0x58, 0x87, 0xFF, 0x39, 0xFF, 0x3B, 0xE5, 0xB7, 0x82, 0x0C, 0x92, 0x2F, 0x9A, 0x50, 0xB3, 0x13, 0xD3, 0xB6, 0x01, 0xDB, 0xF7, 0x01, 0xE4, 0x17, 0x80, 0xDC, 0x17, 0x05, 0xDB, 0xF6, 0x84, 0xDB, 0xF5, 0xD3, 0xF4, 0xD4, 0xB4, 0xFE, 0xB9, 0xFF, 0x18, 0x01, 0xFF, 0x57, 0x04, 0xFF, 0x76, 0x80, 0xFF, 0x75, 0x06, 0xFF, 0x76, 0x0B, 0xFF, 0x57, 0x01, 0xFF, 0x58, 0x80, 0xFF, 0x38, 0x01, 0xFF, 0x59, 0x87, 0xFF, 0x3A, 0xFE, 0x59, 0xBB, 0xF2, 0x8A, 0x0E, 0x89, 0xEF, 0xB2, 0xF3, 0xCB, 0x76, 0xDB, 0xD7, 0x01, 0xDC, 0x18, 0x05, 0xDB, 0xF7, 0x88, 0xDB, 0xF6, 0xDC, 0x16, 0xDB, 0xF6, 0xDB, + 0xF5, 0xD4, 0x14, 0xD4, 0xD4, 0xFE, 0xB9, 0xFF, 0x18, 0xFF, 0x37, 0x02, 0xFF, 0x57, 0x8B, 0xFF, 0x58, 0xFF, 0x79, 0xFF, 0x5A, 0xFE, 0xDB, 0xAB, 0x90, 0x92, 0x4E, 0x92, 0x2F, 0xAA, 0xD2, 0xC3, 0x74, 0xD3, 0xD6, 0xDB, 0xF7, 0xDC, 0x17, 0x05, 0xDB, 0xF7, 0x87, 0xDB, 0xF6, 0xDB, 0xD6, 0xDB, 0xD5, 0xDB, 0xF5, 0xD4, 0x13, 0xF6, 0x37, 0xFF, 0x17, 0xFF, 0x37, 0x02, 0xFF, 0x57, 0x88, 0xFF, 0x58, 0xFF, 0x59, 0xFF, 0x5B, 0xC4, 0xD4, 0x79, 0xED, 0x8A, 0x0F, 0x9A, 0x50, 0xB3, 0x14, 0xD3, 0xD7, 0x04, 0xDB, 0xF7, 0x84, 0xDB, 0xD6, 0xDB, 0xF6, 0xE3, 0xF6, 0xE4, 0x16, 0xE3, 0xF6, 0x01, 0xDB, 0xF5, 0x84, 0xD4, 0x13, 0xD4, 0xB3, 0xFE, 0xB8, 0xFF, 0x38, 0xFF, 0x77, 0x01, 0xFF, 0x76, 0x80, 0xFF, 0x96, 0x01, 0xFF, 0x76, 0x81, 0xFF, 0x55, 0xFF, 0x75, 0x02, 0xFF, 0x76, 0x8A, 0xFF, 0x77, 0xFF, 0x98, 0xFF, 0x99, 0xFF, 0x7A, 0xCC, 0xD4, 0x9A, 0xAE, 0x8A, 0x0D, 0x92, 0x0F, 0xC3, 0x54, 0xD3, 0xB7, 0xDB, 0xD7, 0x03, 0xDB, 0xF7, 0x8B, 0xDC, 0x17, 0xE4, 0x17, 0xDB, 0xF7, 0xDC, 0x17, 0xDB, 0xF6, 0xDB, 0xD6, 0xD3, 0xD5, 0xD3, 0xD4, 0xC3, 0xB2, 0xFE, 0xFA, 0xFF, 0x59, 0xFF, 0x58, 0x01, 0xFF, 0x78, 0x02, 0xFF, 0x57, 0x02, 0xFF, 0x58, 0x81, 0xFF, 0x38, 0xFF, 0x59, 0x01, 0xFF, 0x7A, 0x8D, 0xFF, 0x1B, 0xFE, 0x1A, 0xC3, 0x93, 0xA1, 0xF1, 0xA9, 0xD3, 0xB1, 0xF5, 0xB2, 0x16, 0xAA, 0x58, 0x92, 0x5A, 0x41, 0x18, 0x29, 0x3A, 0x21, 0x5B, 0x19, 0x9D, 0x11, 0x9D, 0x01, 0x09, 0x9E, 0x82, 0x09, 0x9F, 0x01, 0x9F, 0x09, 0x9F, 0x04, 0x01, 0x9F, 0x01, 0x09, 0x9F, 0x80, + 0x09, 0x9E, 0x01, 0x09, 0x7E, 0x8C, 0x11, 0x7E, 0x19, 0x7D, 0x21, 0x5C, 0x20, 0xD8, 0x52, 0x1A, 0x72, 0xBB, 0x62, 0x78, 0x5A, 0x36, 0x52, 0x76, 0x53, 0x76, 0x5D, 0x97, 0x4E, 0xB7, 0x47, 0x58, 0x01, 0x27, 0x17, 0x87, 0x26, 0xF8, 0x36, 0xF9, 0x4E, 0xDA, 0x76, 0xBC, 0x75, 0x19, 0x5A, 0xB2, 0x7A, 0x94, 0x8A, 0x34, 0x01, 0x92, 0x15, 0x84, 0x81, 0xD4, 0x69, 0x73, 0x61, 0x73, 0x59, 0x93, 0x51, 0x72, 0x01, 0x51, 0xB3, 0x01, 0x49, 0xB2, 0x01, 0x49, 0x92, 0x8B, 0x41, 0x31, 0x41, 0x30, 0x41, 0x10, 0x48, 0xF0, 0x59, 0x51, 0x72, 0x14, 0x7A, 0x54, 0x7A, 0x95, 0x6A, 0x54, 0x41, 0x51, 0x31, 0x10, 0x31, 0x30, 0x04, 0x29, 0x30, 0x81, 0x29, 0x10, 0x29, 0x0F, 0x06, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x09, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x88, 0x11, 0x32, 0x09, 0x12, 0x11, 0x95, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x19, 0x30, 0x8D, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x19, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, + 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x29, 0x10, 0x01, 0x29, 0x30, 0x80, 0x21, 0x30, 0x04, 0x21, 0x10, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x80, 0x21, 0x0E, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8D, 0x29, 0x51, 0x21, 0x10, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x11, 0x53, 0x11, 0x54, 0x19, 0xB6, 0x21, 0xF8, 0x22, 0x18, 0x21, 0xD7, 0x11, 0x74, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x0A, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x08, 0xF1, 0x11, 0x74, 0x19, 0xD7, 0x11, 0xD7, 0x09, 0xD8, 0x01, 0xB8, 0x01, 0x01, 0xB9, 0x84, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x85, 0x09, 0xD8, 0x11, 0xF8, 0x11, 0xB7, 0x11, 0x96, 0x09, 0x34, 0x09, 0x33, 0x01, 0x09, 0x12, 0x83, 0x11, 0x33, 0x19, 0x73, 0x11, 0x53, 0x11, 0x52, 0x03, 0x11, 0x32, 0x01, 0x09, 0x55, 0x8E, 0x11, 0xB6, 0x19, 0xF7, + 0x22, 0x17, 0x11, 0xB5, 0x11, 0x95, 0x11, 0x73, 0x11, 0x53, 0x11, 0x32, 0x11, 0x52, 0x19, 0x52, 0x19, 0x72, 0x19, 0x51, 0x19, 0x31, 0x19, 0x30, 0x21, 0x51, 0x03, 0x21, 0x31, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x84, 0x21, 0x30, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x80, 0x19, 0x10, 0x01, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x52, 0x85, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x74, 0x11, 0x95, 0x01, 0x22, 0x17, 0x86, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x13, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x51, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x86, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0E, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, + 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x01, 0x11, 0x32, 0x8A, 0x19, 0x94, 0x21, 0xF6, 0x21, 0xF7, 0x22, 0x17, 0x19, 0xB6, 0x11, 0x33, 0x11, 0x12, 0x10, 0xF2, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x03, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8D, 0x28, 0xEF, 0x30, 0xAE, 0x38, 0x4C, 0xB2, 0xB4, 0xBA, 0x52, 0xB2, 0x11, 0xB1, 0xF1, 0xA9, 0xF0, 0x91, 0xAC, 0xFE, 0xDB, 0xFF, 0x19, 0xFF, 0x38, 0xFF, 0x37, 0xFF, 0x16, 0x01, 0xFF, 0x15, 0x80, 0xFF, 0x14, 0x01, 0xFE, 0xF4, 0x8A, 0xFE, 0xF5, 0xFE, 0xF6, 0xFE, 0xF7, 0xFE, 0xB8, 0xF6, 0x18, 0xBB, 0xD1, 0x8A, 0x0D, 0x92, 0x0E, 0xB2, 0xF3, 0xCB, 0x95, 0xDB, 0xF7, 0x01, 0xDC, 0x18, 0x01, 0xDC, 0x17, 0x80, 0xE4, 0x17, 0x01, 0xDB, 0xF7, + 0x01, 0xE4, 0x17, 0x01, 0xDC, 0x16, 0x84, 0xDB, 0xF5, 0xDC, 0x14, 0xDC, 0xB4, 0xFE, 0x17, 0xFE, 0xD7, 0x01, 0xFF, 0x16, 0x01, 0xFF, 0x15, 0x81, 0xFF, 0x14, 0xFE, 0xF4, 0x03, 0xFE, 0xD4, 0x82, 0xFE, 0xD3, 0xFE, 0xD4, 0xFE, 0xB3, 0x01, 0xFE, 0xB4, 0x8B, 0xFE, 0xB5, 0xFE, 0xD5, 0xFE, 0xD6, 0xFE, 0xB7, 0xFE, 0x58, 0xA3, 0x4F, 0x8A, 0x4D, 0x92, 0x4F, 0xAA, 0xF2, 0xC3, 0x95, 0xD3, 0xF7, 0xDC, 0x18, 0x01, 0xDC, 0x17, 0x01, 0xE4, 0x17, 0x80, 0xDC, 0x17, 0x01, 0xE4, 0x17, 0x89, 0xE4, 0x16, 0xDB, 0xF6, 0xDB, 0xF5, 0xDC, 0x15, 0xD4, 0x33, 0xF5, 0xD6, 0xFE, 0xB7, 0xFE, 0xD6, 0xFE, 0xF6, 0xFF, 0x16, 0x01, 0xFF, 0x15, 0x81, 0xFF, 0x14, 0xFE, 0xF4, 0x07, 0xFE, 0xD4, 0x01, 0xFE, 0xD5, 0x8B, 0xFE, 0xD6, 0xFE, 0xD7, 0xFE, 0xB8, 0xF6, 0x18, 0xB3, 0x91, 0x92, 0x2E, 0x92, 0x2F, 0xAA, 0xF2, 0xC3, 0x95, 0xD3, 0xF7, 0xDC, 0x37, 0xE4, 0x37, 0x02, 0xE4, 0x17, 0x06, 0xDC, 0x17, 0x81, 0xE4, 0x38, 0xB2, 0xB3, 0x01, 0xA2, 0x31, 0x82, 0xBA, 0xF4, 0xE4, 0x38, 0xE4, 0x18, 0x03, 0xDC, 0x17, 0x05, 0xDC, 0x16, 0x88, 0xDB, 0xF6, 0xD3, 0xF5, 0xD4, 0x14, 0xED, 0x57, 0xFE, 0x57, 0xFE, 0x96, 0xFE, 0xD6, 0xFE, 0xD5, 0xFE, 0xF5, 0x02, 0xFE, 0xD4, 0x80, 0xFE, 0xF4, 0x0A, 0xFE, 0xD4, 0x84, 0xFE, 0xF5, 0xFE, 0xF6, 0xFE, 0xF8, 0xFF, 0x1B, 0x79, 0xCB, 0x01, 0x89, 0xEE, 0x82, 0xAA, 0xF3, 0xD4, 0x17, 0xDC, 0x38, 0x01, 0xDC, 0x18, 0x01, 0xDC, 0x17, 0x01, 0xDB, 0xF7, 0x89, 0xDB, 0xF6, 0xE4, 0x17, 0xE4, 0x16, 0xE3, 0xF6, 0xDC, 0x16, 0xDC, 0x15, 0xD4, 0x33, 0xFE, 0x18, + 0xFE, 0xB9, 0xFE, 0xD8, 0x02, 0xFE, 0xF7, 0x88, 0xFE, 0xB7, 0xFE, 0xB9, 0xDD, 0x15, 0x82, 0x0C, 0x92, 0x0F, 0x9A, 0x50, 0xBB, 0x13, 0xD3, 0xD6, 0xDC, 0x17, 0x03, 0xE4, 0x17, 0x80, 0xDB, 0xF6, 0x04, 0xDC, 0x16, 0x87, 0xDB, 0xF5, 0xD4, 0x14, 0xDC, 0xB4, 0xFE, 0x78, 0xFE, 0xB7, 0xFE, 0xD6, 0xFE, 0xF6, 0xFE, 0xF5, 0x02, 0xFF, 0x15, 0x05, 0xFE, 0xF4, 0x80, 0xFF, 0x14, 0x02, 0xFF, 0x15, 0x09, 0xFF, 0x16, 0x03, 0xFE, 0xF6, 0x01, 0xFE, 0xF7, 0x8A, 0xFE, 0xD8, 0xED, 0xD7, 0xB3, 0x91, 0x89, 0xED, 0x89, 0xCE, 0xB2, 0xF3, 0xCB, 0x96, 0xD3, 0xF7, 0xDC, 0x18, 0xE4, 0x38, 0xDC, 0x17, 0x03, 0xDB, 0xF7, 0x81, 0xDC, 0x17, 0xE4, 0x16, 0x01, 0xDC, 0x16, 0x85, 0xDC, 0x15, 0xDC, 0x34, 0xDC, 0x93, 0xFE, 0x58, 0xFE, 0xB7, 0xFE, 0xD6, 0x03, 0xFE, 0xF6, 0x8E, 0xFE, 0xF7, 0xFE, 0xD8, 0xF6, 0x18, 0xAB, 0x4F, 0x92, 0x4E, 0x9A, 0x4F, 0xB2, 0xD2, 0xC3, 0x75, 0xD3, 0xD6, 0xDC, 0x17, 0xE4, 0x37, 0xDC, 0x17, 0xDB, 0xF7, 0xE4, 0x17, 0xDC, 0x17, 0x01, 0xE4, 0x17, 0x01, 0xDB, 0xF6, 0x87, 0xDB, 0xF5, 0xDC, 0x15, 0xD4, 0x13, 0xFD, 0xF6, 0xFE, 0x96, 0xFE, 0xB5, 0xFE, 0xD5, 0xFE, 0xF5, 0x01, 0xFE, 0xF6, 0x87, 0xFE, 0xF8, 0xFE, 0xFA, 0xCC, 0xB4, 0x81, 0xEC, 0x8A, 0x0F, 0x9A, 0x50, 0xBB, 0x34, 0xD3, 0xD7, 0x01, 0xDC, 0x18, 0x84, 0xDB, 0xF7, 0xDC, 0x17, 0xE4, 0x17, 0xDB, 0xF7, 0xDB, 0xF6, 0x01, 0xE4, 0x16, 0x80, 0xDC, 0x16, 0x01, 0xDC, 0x15, 0x85, 0xD4, 0x14, 0xDC, 0xB3, 0xFE, 0x57, 0xFE, 0xD7, 0xFE, 0xF6, 0xFF, 0x15, 0x01, 0xFE, 0xF5, 0x01, 0xFE, 0xF4, 0x03, + 0xFE, 0xD4, 0x8D, 0xFE, 0xD5, 0xFE, 0xF5, 0xFE, 0xF6, 0xFF, 0x17, 0xFE, 0xF9, 0xCC, 0x93, 0x9A, 0x8E, 0x89, 0xED, 0x92, 0x2F, 0xC3, 0x55, 0xD3, 0xD7, 0xDB, 0xF7, 0xDC, 0x18, 0xE4, 0x18, 0x02, 0xDC, 0x17, 0x01, 0xE4, 0x17, 0x80, 0xDC, 0x17, 0x01, 0xDC, 0x16, 0x86, 0xDB, 0xF5, 0xD3, 0xF4, 0xC3, 0xD2, 0xFE, 0xB9, 0xFF, 0x19, 0xFF, 0x18, 0xFF, 0x17, 0x04, 0xFE, 0xF6, 0x02, 0xFE, 0xD6, 0x90, 0xFE, 0xD7, 0xFE, 0xF8, 0xFE, 0xF9, 0xFE, 0xD9, 0xFD, 0xF9, 0xD3, 0xF4, 0xA1, 0xF0, 0xA9, 0xD3, 0xA9, 0xF4, 0xAA, 0x16, 0xAA, 0x58, 0x92, 0x5A, 0x41, 0x18, 0x29, 0x3A, 0x21, 0x5B, 0x19, 0x7D, 0x11, 0x9D, 0x01, 0x09, 0x9E, 0x80, 0x09, 0x9F, 0x03, 0x01, 0x9F, 0x80, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0xA3, 0x01, 0x9E, 0x01, 0x9F, 0x01, 0x9E, 0x09, 0x9E, 0x09, 0x7E, 0x11, 0x9E, 0x11, 0x7D, 0x19, 0x7D, 0x21, 0x5B, 0x21, 0x18, 0x52, 0x5B, 0x5A, 0x99, 0x52, 0x57, 0x4A, 0x36, 0x42, 0xD5, 0x3C, 0x94, 0x4E, 0x77, 0x3E, 0xD7, 0x26, 0xF6, 0x2F, 0x37, 0x2F, 0x18, 0x36, 0xF9, 0x4E, 0xBA, 0x7E, 0xBC, 0x74, 0xF8, 0x62, 0xD3, 0x82, 0x94, 0x8A, 0x54, 0x92, 0x35, 0x92, 0x15, 0x81, 0xD4, 0x69, 0x73, 0x61, 0x73, 0x59, 0x73, 0x51, 0x93, 0x51, 0xB3, 0x01, 0x49, 0x92, 0x02, 0x41, 0x92, 0x80, 0x49, 0x92, 0x01, 0x41, 0x51, 0x01, 0x41, 0x10, 0x86, 0x49, 0x10, 0x61, 0xB2, 0x6A, 0x14, 0x61, 0xF3, 0x41, 0x51, 0x30, 0xF0, 0x31, 0x10, 0x05, 0x29, 0x30, 0x08, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, + 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0x95, 0x11, 0x12, 0x19, 0x11, 0x21, 0x51, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x2F, 0x8E, 0x19, 0x0F, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x13, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x11, 0x19, 0x31, 0x21, 0x50, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0E, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x30, 0x84, 0x21, 0x10, 0x29, 0x30, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x80, 0x21, 0x11, 0x01, 0x19, 0x11, 0x81, 0x21, 0x31, 0x21, 0x11, 0x04, 0x21, 0x30, 0x84, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x0D, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, + 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x11, 0x8E, 0x11, 0x32, 0x19, 0x74, 0x11, 0x74, 0x19, 0xB6, 0x22, 0x18, 0x2A, 0x38, 0x19, 0xB6, 0x19, 0x54, 0x11, 0x12, 0x11, 0x11, 0x19, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x08, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x89, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x11, 0x12, 0x19, 0x95, 0x19, 0xD7, 0x11, 0xF8, 0x09, 0xF8, 0x01, 0xB8, 0x01, 0xB9, 0x01, 0x01, 0xD9, 0x02, 0x01, 0xFA, 0x86, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0xB8, 0x09, 0xB8, 0x09, 0xD8, 0x11, 0xB7, 0x11, 0xB6, 0x01, 0x11, 0x96, 0x81, 0x19, 0x95, 0x11, 0x95, 0x01, 0x19, 0x95, 0x02, 0x19, 0x94, 0x02, 0x19, 0x73, 0x01, 0x11, 0x54, 0x8A, 0x09, 0x54, 0x11, 0xB6, 0x19, 0xD6, 0x19, 0xF6, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x94, 0x09, 0x53, 0x11, 0x53, 0x11, 0x32, 0x11, 0x31, 0x02, 0x11, 0x11, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x11, 0x05, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x81, 0x19, 0x10, 0x19, 0x11, 0x01, 0x19, 0x10, 0x01, 0x19, 0x11, 0x8B, 0x21, 0x31, 0x19, 0x32, 0x19, 0x31, 0x19, 0x32, 0x19, 0x11, 0x11, 0x11, 0x08, 0xF1, 0x11, 0x11, 0x11, 0x32, 0x09, 0x33, 0x09, 0x54, 0x11, 0xB5, 0x01, 0x22, 0x17, 0x84, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x13, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x31, 0x02, 0x21, + 0x30, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x8A, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x06, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x05, 0x21, 0x30, 0x01, 0x21, 0x31, 0x01, 0x19, 0x31, 0x89, 0x11, 0x31, 0x11, 0x32, 0x19, 0xB5, 0x21, 0xF6, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0xB6, 0x11, 0x54, 0x11, 0x33, 0x19, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x09, 0x21, 0x0F, + 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x90, 0x28, 0xEF, 0x30, 0xAE, 0x38, 0x4C, 0xAA, 0xB4, 0xBA, 0x52, 0xB2, 0x11, 0xB1, 0xF1, 0xB1, 0xF0, 0x99, 0xCD, 0xFD, 0xD8, 0xF6, 0x15, 0xEE, 0x14, 0xEE, 0x33, 0xED, 0xD2, 0xED, 0xD1, 0xED, 0xF1, 0xEE, 0x11, 0x01, 0xF6, 0x31, 0x8A, 0xF6, 0x32, 0xF6, 0x33, 0xFE, 0x35, 0xFE, 0x16, 0xE5, 0x35, 0xB3, 0x91, 0x8A, 0x0D, 0x92, 0x0E, 0xB2, 0xF2, 0xCB, 0x95, 0xDC, 0x17, 0x01, 0xE4, 0x38, 0x01, 0xDC, 0x17, 0x80, 0xE4, 0x37, 0x01, 0xDC, 0x17, 0x01, 0xE4, 0x17, 0x88, 0xE4, 0x16, 0xE4, 0x36, 0xDC, 0x15, 0xDC, 0x34, 0xDC, 0x93, 0xED, 0x74, 0xF5, 0xF4, 0xF6, 0x13, 0xED, 0xF2, 0x01, 0xED, 0xF1, 0x02, 0xED, 0xD0, 0x01, 0xF5, 0xD0, 0x85, 0xF5, 0xF0, 0xF5, 0xF1, 0xFE, 0x11, 0xF6, 0x11, 0xF6, 0x12, 0xF6, 0x32, 0x01, 0xFE, 0x33, 0x88, 0xFE, 0x54, 0xFE, 0x36, 0xED, 0x95, 0xA3, 0x2E, 0x8A, 0x2D, 0x92, 0x4F, 0xAA, 0xF2, 0xC3, 0x95, 0xDC, 0x17, 0x02, 0xDC, 0x18, 0x80, 0xDC, 0x17, 0x02, 0xE4, 0x17, 0x01, 0xE4, 0x37, 0x80, 0xDC, 0x16, 0x01, 0xDC, 0x15, 0x85, 0xDC, 0x33, 0xED, 0x14, 0xF5, 0xB4, 0xF5, 0xD3, 0xED, 0xF2, 0xED, 0xD2, 0x01, 0xED, 0xF1, 0x80, 0xED, 0xF0, 0x07, 0xF5, 0xF1, 0x01, 0xFE, + 0x12, 0x8F, 0xFE, 0x33, 0xF6, 0x34, 0xFE, 0x34, 0xFE, 0x16, 0xE5, 0x35, 0xB3, 0x50, 0x92, 0x2E, 0x92, 0x2F, 0xB3, 0x12, 0xC3, 0x95, 0xDC, 0x17, 0xE4, 0x58, 0xE4, 0x38, 0xE4, 0x37, 0xDC, 0x17, 0xE4, 0x17, 0x02, 0xDC, 0x17, 0x80, 0xDC, 0x16, 0x02, 0xDC, 0x37, 0x85, 0xE4, 0x58, 0xB2, 0xD3, 0xA2, 0x11, 0xA2, 0x31, 0xAA, 0x92, 0xE4, 0x59, 0x01, 0xE4, 0x38, 0x01, 0xDC, 0x37, 0x82, 0xDC, 0x17, 0xDC, 0x16, 0xDC, 0x17, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x17, 0x01, 0xDC, 0x16, 0x84, 0xDB, 0xF5, 0xD4, 0x14, 0xEC, 0xF6, 0xF5, 0xD6, 0xF6, 0x15, 0x01, 0xF6, 0x34, 0x86, 0xFE, 0x33, 0xFE, 0x32, 0xF6, 0x32, 0xF6, 0x11, 0xF6, 0x31, 0xF6, 0x11, 0xF6, 0x31, 0x02, 0xF6, 0x11, 0x82, 0xF6, 0x31, 0xF6, 0x11, 0xF6, 0x31, 0x02, 0xFE, 0x32, 0x84, 0xFE, 0x54, 0xF6, 0x54, 0xF6, 0x55, 0xFE, 0x99, 0x79, 0xCB, 0x01, 0x89, 0xEE, 0x83, 0xB2, 0xF3, 0xDC, 0x38, 0xDC, 0x58, 0xDC, 0x38, 0x04, 0xDC, 0x17, 0x80, 0xE4, 0x17, 0x02, 0xE4, 0x16, 0x85, 0xDC, 0x16, 0xDC, 0x15, 0xD4, 0x33, 0xF5, 0x76, 0xF5, 0xF6, 0xF6, 0x36, 0x01, 0xF6, 0x55, 0x8C, 0xFE, 0x56, 0xF6, 0x16, 0xF5, 0xF6, 0xCC, 0x73, 0x8A, 0x0C, 0x92, 0x2F, 0x9A, 0x50, 0xBB, 0x33, 0xD3, 0xF7, 0xDC, 0x37, 0xE4, 0x37, 0xE4, 0x17, 0xE4, 0x37, 0x01, 0xE4, 0x17, 0x80, 0xE4, 0x37, 0x02, 0xDC, 0x16, 0x01, 0xDC, 0x15, 0x85, 0xDC, 0x14, 0xDC, 0x73, 0xED, 0x54, 0xED, 0xB4, 0xED, 0xF3, 0xED, 0xD2, 0x02, 0xED, 0xD1, 0x02, 0xED, 0xB0, 0x86, 0xED, 0x8F, 0xED, 0xB0, 0xE5, 0x90, 0xE5, 0xAF, 0xE5, 0x8F, 0xE5, 0xAF, 0xE5, + 0x8F, 0x06, 0xE5, 0xB0, 0x81, 0xED, 0xB1, 0xED, 0xD1, 0x01, 0xED, 0xF1, 0x93, 0xF6, 0x12, 0xF6, 0x32, 0xF6, 0x33, 0xFE, 0x53, 0xFE, 0x54, 0xFE, 0x55, 0xFE, 0x36, 0xE5, 0x35, 0xAB, 0x50, 0x81, 0xCD, 0x89, 0xCE, 0xB2, 0xF3, 0xCB, 0xB6, 0xDB, 0xF7, 0xDC, 0x38, 0xE4, 0x38, 0xDC, 0x17, 0xDB, 0xF7, 0xDC, 0x17, 0xDB, 0xF7, 0x02, 0xE4, 0x37, 0x86, 0xE4, 0x36, 0xDC, 0x16, 0xDC, 0x15, 0xDC, 0x14, 0xD4, 0x52, 0xF5, 0xB6, 0xFE, 0x35, 0x04, 0xFE, 0x54, 0x88, 0xFE, 0x55, 0xFE, 0x36, 0xE5, 0x35, 0xA3, 0x0F, 0x92, 0x2E, 0x9A, 0x4F, 0xB2, 0xF2, 0xCB, 0x75, 0xDB, 0xF7, 0x01, 0xE4, 0x37, 0x03, 0xDC, 0x17, 0x80, 0xE4, 0x17, 0x01, 0xDC, 0x16, 0x80, 0xDB, 0xF6, 0x01, 0xDC, 0x15, 0x8F, 0xD4, 0x33, 0xF5, 0x95, 0xF5, 0xF4, 0xFE, 0x34, 0xFE, 0x54, 0xFE, 0x74, 0xFE, 0x54, 0xFE, 0x55, 0xFE, 0x56, 0xFE, 0x38, 0xC4, 0x52, 0x81, 0xED, 0x8A, 0x0F, 0x9A, 0x50, 0xBB, 0x34, 0xD3, 0xF7, 0x01, 0xDC, 0x18, 0x01, 0xDC, 0x17, 0x02, 0xE4, 0x17, 0x01, 0xE4, 0x16, 0x80, 0xE4, 0x36, 0x01, 0xDC, 0x15, 0x86, 0xDC, 0x34, 0xDC, 0x73, 0xED, 0x74, 0xF5, 0xF4, 0xEE, 0x13, 0xED, 0xF2, 0xED, 0xF1, 0x03, 0xF5, 0xF1, 0x01, 0xF6, 0x11, 0x82, 0xF6, 0x12, 0xFE, 0x33, 0xFE, 0x53, 0x01, 0xF6, 0x54, 0x89, 0xFE, 0x56, 0xC4, 0x32, 0x9A, 0x6D, 0x89, 0xED, 0x92, 0x0F, 0xC3, 0x75, 0xDB, 0xF7, 0xDC, 0x18, 0xE4, 0x38, 0xE4, 0x18, 0x04, 0xDC, 0x17, 0x87, 0xE4, 0x37, 0xDC, 0x36, 0xDC, 0x16, 0xDC, 0x15, 0xDB, 0xF4, 0xCC, 0x12, 0xF5, 0xB6, 0xED, 0xD4, 0x01, 0xED, 0xD3, 0x83, 0xED, 0xF3, + 0xF5, 0xF3, 0xF6, 0x13, 0xF6, 0x33, 0x01, 0xFE, 0x34, 0x92, 0xF6, 0x34, 0xFE, 0x34, 0xFE, 0x55, 0xFE, 0x56, 0xFE, 0x77, 0xFE, 0x58, 0xFD, 0xB7, 0xDC, 0x14, 0xA1, 0xF0, 0xA9, 0xF3, 0xA9, 0xF4, 0xAA, 0x16, 0xAA, 0x58, 0x8A, 0x5A, 0x41, 0x18, 0x29, 0x1A, 0x21, 0x5B, 0x19, 0x7D, 0x11, 0x9D, 0x01, 0x09, 0x9E, 0x09, 0x01, 0x9F, 0x80, 0x01, 0x9E, 0x02, 0x09, 0x9E, 0x9D, 0x09, 0x7E, 0x11, 0x7D, 0x11, 0x5C, 0x19, 0x3A, 0x19, 0x38, 0x5B, 0x3C, 0x52, 0xF9, 0x3A, 0x56, 0x22, 0x93, 0x02, 0xCD, 0x25, 0x32, 0x2E, 0x54, 0x2F, 0x16, 0x2F, 0x37, 0x2F, 0x17, 0x3E, 0xF9, 0x56, 0xBA, 0x86, 0x9D, 0x6C, 0x56, 0x62, 0xB3, 0x82, 0x94, 0x82, 0x34, 0x8A, 0x35, 0x8A, 0x15, 0x79, 0xB4, 0x69, 0x73, 0x59, 0x73, 0x59, 0x93, 0x51, 0x93, 0x49, 0x93, 0x01, 0x49, 0x92, 0x80, 0x49, 0xB2, 0x01, 0x41, 0x92, 0x8B, 0x41, 0x72, 0x41, 0x71, 0x41, 0x51, 0x41, 0x30, 0x41, 0x10, 0x41, 0x0F, 0x41, 0x10, 0x49, 0x71, 0x49, 0x51, 0x39, 0x10, 0x31, 0x10, 0x31, 0x30, 0x04, 0x29, 0x30, 0x06, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x8C, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, + 0x11, 0xB5, 0x11, 0xD6, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x8C, 0x21, 0x30, 0x19, 0x10, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x32, 0x11, 0x31, 0x19, 0x51, 0x01, 0x21, 0x30, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x31, 0x03, 0x19, 0x32, 0x81, 0x19, 0x12, 0x19, 0x11, 0x03, 0x21, 0x31, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x09, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x50, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x01, 0x19, 0x11, 0x8A, 0x19, 0x32, 0x11, 0x53, 0x19, 0x74, 0x19, 0xB6, 0x22, 0x18, 0x2A, 0x18, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x51, 0x19, 0x31, + 0x11, 0x32, 0x19, 0x95, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xD8, 0x01, 0xB8, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x80, 0x01, 0xB9, 0x01, 0x09, 0xD9, 0x80, 0x09, 0xB8, 0x01, 0x09, 0xB7, 0x85, 0x11, 0xB6, 0x19, 0xD7, 0x21, 0xF7, 0x22, 0x17, 0x21, 0xF7, 0x22, 0x17, 0x01, 0x21, 0xF6, 0x01, 0x21, 0xD5, 0x01, 0x21, 0xB5, 0x80, 0x21, 0xD5, 0x02, 0x11, 0x33, 0x81, 0x11, 0x54, 0x11, 0x75, 0x01, 0x11, 0xB6, 0x85, 0x11, 0xD6, 0x11, 0xB5, 0x11, 0x95, 0x09, 0x54, 0x09, 0x33, 0x09, 0x12, 0x02, 0x08, 0xF1, 0x80, 0x11, 0x11, 0x02, 0x11, 0x12, 0x81, 0x11, 0x11, 0x11, 0x31, 0x01, 0x11, 0x32, 0x01, 0x11, 0x31, 0x80, 0x11, 0x11, 0x02, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x82, 0x19, 0x31, 0x10, 0xF1, 0x19, 0x12, 0x02, 0x11, 0x12, 0x80, 0x10, 0xF2, 0x01, 0x08, 0xF2, 0x8E, 0x09, 0x13, 0x09, 0x33, 0x09, 0x54, 0x11, 0xB5, 0x22, 0x37, 0x22, 0x17, 0x21, 0xD6, 0x11, 0x54, 0x11, 0x13, 0x10, 0xF2, 0x19, 0x11, 0x19, 0x31, 0x21, 0x51, 0x21, 0x50, 0x19, 0x30, 0x01, 0x19, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x88, 0x29, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x80, 0x21, + 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x50, 0x02, 0x21, 0x30, 0x01, 0x21, 0x10, 0x8C, 0x21, 0x31, 0x19, 0x31, 0x11, 0x11, 0x11, 0x12, 0x11, 0x53, 0x19, 0xD5, 0x19, 0xD6, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x95, 0x19, 0x54, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x84, 0x21, 0x30, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0xA0, 0x28, 0xEF, 0x30, 0xCE, 0x38, 0x4C, + 0xAA, 0xB4, 0xBA, 0x52, 0xB2, 0x12, 0xB1, 0xF1, 0xB1, 0xD0, 0xA1, 0xCD, 0xF5, 0x35, 0xF5, 0x74, 0xED, 0xB3, 0xED, 0x92, 0xE5, 0x30, 0xED, 0x2F, 0xED, 0x4F, 0xED, 0x4E, 0xED, 0x4F, 0xED, 0x6F, 0xED, 0x70, 0xED, 0x71, 0xED, 0x92, 0xED, 0x53, 0xDC, 0x93, 0xB3, 0x50, 0x89, 0xED, 0x92, 0x0E, 0xB2, 0xF3, 0xCB, 0x95, 0xDC, 0x17, 0xE4, 0x58, 0xE4, 0x38, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x02, 0xDC, 0x17, 0x80, 0xE4, 0x37, 0x01, 0xE4, 0x36, 0x88, 0xDC, 0x15, 0xDC, 0x34, 0xDC, 0x53, 0xED, 0x13, 0xED, 0x52, 0xED, 0x71, 0xED, 0x50, 0xED, 0x4F, 0xED, 0x2F, 0x03, 0xED, 0x2E, 0x81, 0xED, 0x2F, 0xED, 0x2E, 0x02, 0xED, 0x4F, 0x91, 0xED, 0x6F, 0xED, 0x70, 0xF5, 0x70, 0xF5, 0x91, 0xF5, 0xB2, 0xF5, 0x93, 0xE5, 0x14, 0xA3, 0x0E, 0x8A, 0x2D, 0x92, 0x2E, 0xB2, 0xF2, 0xCB, 0xB5, 0xDC, 0x17, 0xDC, 0x38, 0xE4, 0x38, 0xDC, 0x18, 0xE4, 0x38, 0xE4, 0x37, 0x01, 0xE4, 0x17, 0x01, 0xE4, 0x37, 0x01, 0xE4, 0x36, 0x86, 0xDC, 0x15, 0xDC, 0x34, 0xE4, 0xD3, 0xED, 0x33, 0xED, 0x52, 0xED, 0x51, 0xED, 0x30, 0x01, 0xED, 0x2F, 0x03, 0xED, 0x2E, 0x81, 0xED, 0x0E, 0xED, 0x2F, 0x01, 0xED, 0x2E, 0x02, 0xED, 0x2F, 0x8A, 0xED, 0x50, 0xED, 0x51, 0xED, 0x72, 0xED, 0x53, 0xE4, 0xD3, 0xB3, 0x2F, 0x92, 0x2E, 0x9A, 0x4F, 0xB3, 0x12, 0xCB, 0xB5, 0xDC, 0x17, 0x01, 0xE4, 0x58, 0x80, 0xE4, 0x37, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x17, 0x01, 0xDC, 0x37, 0x81, 0xE4, 0x37, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x86, 0xE4, 0x58, 0xB2, 0xD3, 0x9A, 0x11, 0x9A, 0x31, 0xA2, 0x72, 0xE4, 0x58, 0xE4, + 0x38, 0x01, 0xE4, 0x58, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x17, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x8B, 0xE4, 0x17, 0xE4, 0x16, 0xDB, 0xF5, 0xDC, 0x15, 0xE4, 0x74, 0xED, 0x14, 0xED, 0x53, 0xED, 0x73, 0xED, 0x72, 0xED, 0x71, 0xED, 0x70, 0xED, 0x4F, 0x01, 0xED, 0x4E, 0x03, 0xED, 0x2E, 0x80, 0xED, 0x4E, 0x02, 0xED, 0x2F, 0x01, 0xED, 0x4F, 0x85, 0xED, 0x50, 0xED, 0x71, 0xED, 0x92, 0xED, 0x73, 0xF5, 0xD7, 0x81, 0xCB, 0x01, 0x89, 0xEE, 0x83, 0xB2, 0xF3, 0xDC, 0x58, 0xE4, 0x58, 0xDC, 0x38, 0x01, 0xDC, 0x17, 0x82, 0xDC, 0x37, 0xE4, 0x37, 0xDC, 0x17, 0x01, 0xE4, 0x17, 0x80, 0xE4, 0x37, 0x01, 0xE4, 0x16, 0x85, 0xDC, 0x35, 0xDC, 0x34, 0xE4, 0xB4, 0xED, 0x34, 0xE5, 0x33, 0xE5, 0x53, 0x01, 0xED, 0x73, 0x87, 0xED, 0x74, 0xED, 0x55, 0xCC, 0x32, 0x8A, 0x0D, 0x9A, 0x2F, 0x9A, 0x70, 0xBB, 0x34, 0xDC, 0x17, 0x01, 0xE4, 0x38, 0x02, 0xE4, 0x37, 0x81, 0xDC, 0x37, 0xDC, 0x36, 0x01, 0xE4, 0x36, 0x88, 0xDC, 0x16, 0xDC, 0x36, 0xDC, 0x35, 0xDC, 0x34, 0xDC, 0x53, 0xEC, 0xF3, 0xED, 0x53, 0xED, 0x72, 0xED, 0x51, 0x01, 0xED, 0x30, 0x02, 0xED, 0x2F, 0x81, 0xED, 0x2E, 0xE4, 0xEE, 0x01, 0xED, 0x0E, 0x0E, 0xE5, 0x0E, 0x01, 0xE5, 0x2E, 0x8B, 0xED, 0x4F, 0xED, 0x70, 0xED, 0x91, 0xED, 0x92, 0xED, 0x73, 0xDC, 0xB3, 0xAB, 0x0E, 0x81, 0xAC, 0x89, 0xCE, 0xB3, 0x13, 0xCB, 0xB6, 0xDC, 0x18, 0x01, 0xE4, 0x38, 0x80, 0xDC, 0x18, 0x01, 0xDC, 0x17, 0x81, 0xE4, 0x37, 0xDC, 0x17, 0x01, 0xE4, 0x37, 0x87, 0xDC, 0x36, 0xE4, 0x36, 0xDC, 0x15, 0xDC, 0x14, 0xDC, 0x53, 0xE4, + 0xF3, 0xED, 0x53, 0xED, 0x72, 0x02, 0xED, 0x71, 0x8E, 0xED, 0x72, 0xE5, 0x72, 0xED, 0x74, 0xE4, 0xF4, 0xAA, 0xEF, 0x92, 0x2E, 0x9A, 0x4F, 0xB2, 0xF2, 0xCB, 0x95, 0xDC, 0x17, 0xE4, 0x38, 0xE4, 0x58, 0xE4, 0x37, 0xDC, 0x17, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x80, 0xE4, 0x36, 0x01, 0xDC, 0x16, 0x84, 0xDC, 0x15, 0xDC, 0x35, 0xDC, 0x33, 0xED, 0x14, 0xED, 0x53, 0x01, 0xED, 0x72, 0x8C, 0xED, 0x92, 0xED, 0x72, 0xED, 0x93, 0xED, 0x74, 0xED, 0x34, 0xB3, 0x90, 0x89, 0xED, 0x92, 0x0F, 0x9A, 0x50, 0xBB, 0x54, 0xDC, 0x17, 0xDC, 0x38, 0xE4, 0x38, 0x01, 0xDC, 0x17, 0x03, 0xE4, 0x37, 0x01, 0xE4, 0x36, 0x01, 0xDC, 0x35, 0x85, 0xDC, 0x34, 0xDC, 0x73, 0xED, 0x13, 0xED, 0x53, 0xED, 0x71, 0xE5, 0x50, 0x04, 0xED, 0x2F, 0x02, 0xED, 0x4F, 0x80, 0xED, 0x70, 0x01, 0xED, 0x91, 0x88, 0xED, 0x92, 0xED, 0x94, 0xC3, 0xF1, 0x9A, 0x4D, 0x89, 0xCD, 0x9A, 0x2F, 0xC3, 0x75, 0xDB, 0xF7, 0xDC, 0x18, 0x02, 0xE4, 0x38, 0x80, 0xE4, 0x37, 0x02, 0xDC, 0x17, 0x01, 0xE4, 0x37, 0x88, 0xDC, 0x36, 0xDC, 0x15, 0xDC, 0x14, 0xD3, 0xF2, 0xED, 0x34, 0xED, 0x53, 0xED, 0x52, 0xED, 0x31, 0xE5, 0x31, 0x01, 0xED, 0x30, 0x81, 0xED, 0x50, 0xED, 0x51, 0x01, 0xED, 0x71, 0x91, 0xED, 0x92, 0xF5, 0xB3, 0xF5, 0xB4, 0xFD, 0xD5, 0xFD, 0xB5, 0xFD, 0x76, 0xE4, 0x54, 0xA1, 0xEF, 0xA9, 0xD2, 0xA9, 0xF4, 0xAA, 0x16, 0xA2, 0x58, 0x8A, 0x5A, 0x41, 0x18, 0x29, 0x1A, 0x21, 0x5B, 0x19, 0x7D, 0x11, 0x9D, 0x01, 0x09, 0x9E, 0x0A, 0x01, 0x9F, 0x80, 0x01, 0x9E, 0x02, 0x09, 0x9E, 0x99, 0x09, 0x7E, 0x11, + 0x7D, 0x11, 0x7C, 0x11, 0x79, 0x2A, 0x79, 0x5C, 0x3D, 0x64, 0xDD, 0x65, 0x7B, 0x0B, 0xAF, 0x04, 0x0C, 0x0D, 0x4F, 0x2E, 0xD5, 0x2F, 0x57, 0x37, 0x38, 0x3E, 0xD8, 0x56, 0x9A, 0x86, 0x5C, 0x6C, 0x16, 0x6A, 0xD4, 0x82, 0x94, 0x82, 0x34, 0x8A, 0x15, 0x81, 0xF5, 0x71, 0x94, 0x69, 0x94, 0x59, 0x93, 0x01, 0x51, 0x93, 0x03, 0x49, 0x92, 0x8B, 0x41, 0x92, 0x39, 0x71, 0x41, 0x92, 0x41, 0x71, 0x41, 0x92, 0x41, 0x71, 0x39, 0x30, 0x38, 0xEF, 0x39, 0x0F, 0x39, 0x10, 0x38, 0xF0, 0x31, 0x10, 0x01, 0x31, 0x30, 0x80, 0x31, 0x31, 0x04, 0x29, 0x30, 0x03, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x0A, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x01, 0x19, 0xD7, 0x83, 0x19, 0x95, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x8E, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x10, 0x19, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB5, 0x21, 0xF7, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x30, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, + 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x10, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x02, 0x19, 0x32, 0x01, 0x19, 0x53, 0x83, 0x11, 0x53, 0x11, 0x33, 0x11, 0x12, 0x19, 0x12, 0x01, 0x19, 0x11, 0x80, 0x19, 0x10, 0x04, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x29, 0x51, 0x01, 0x19, 0x11, 0x83, 0x11, 0x12, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x02, 0x21, 0xF7, 0x84, 0x19, 0x74, 0x11, 0x12, 0x10, 0xF1, 0x18, 0xF1, 0x19, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x21, 0x31, 0x19, 0x31, 0x11, 0x12, 0x19, 0x95, 0x11, 0xB7, 0x11, 0xD8, 0x09, 0xB8, 0x01, 0xB8, 0x01, 0x01, 0xB9, 0x81, 0x01, 0xDA, 0x01, 0xFA, 0x01, 0x01, 0xDA, 0x85, 0x01, 0xD9, 0x01, 0xB9, 0x01, 0x98, 0x09, 0xB8, 0x09, 0xB7, 0x11, 0xB7, 0x01, 0x11, 0xB6, 0x81, 0x19, 0xD6, 0x19, 0xF6, 0x02, 0x21, 0xF6, + 0x01, 0x21, 0xB5, 0x85, 0x21, 0xD5, 0x21, 0xB5, 0x21, 0xD5, 0x21, 0xB5, 0x19, 0x52, 0x11, 0x32, 0x01, 0x11, 0x33, 0x83, 0x11, 0x54, 0x11, 0x75, 0x11, 0xB6, 0x19, 0xF7, 0x01, 0x11, 0xD6, 0x84, 0x11, 0x95, 0x09, 0x74, 0x09, 0x54, 0x09, 0x33, 0x09, 0x13, 0x02, 0x11, 0x33, 0x82, 0x11, 0x32, 0x11, 0x12, 0x11, 0x32, 0x02, 0x11, 0x12, 0x04, 0x11, 0x32, 0x02, 0x11, 0x12, 0x01, 0x11, 0x32, 0x80, 0x11, 0x12, 0x01, 0x10, 0xF2, 0x80, 0x11, 0x12, 0x01, 0x08, 0xF2, 0x8D, 0x09, 0x12, 0x09, 0x13, 0x11, 0x54, 0x11, 0x75, 0x19, 0xF7, 0x2A, 0x58, 0x22, 0x17, 0x21, 0xF6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x11, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x0D, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, + 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x19, 0x11, 0x83, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x19, 0xB5, 0x02, 0x21, 0xF6, 0x81, 0x19, 0x95, 0x11, 0x53, 0x01, 0x11, 0x12, 0x81, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x2F, 0x29, 0x30, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x9D, 0x28, 0xEF, 0x28, 0xCE, 0x38, 0x4C, 0xAA, 0xB4, 0xBA, 0x53, 0xB2, 0x12, 0xB1, 0xF1, 0xB1, 0xD0, 0xA1, 0xAD, 0xFD, 0x36, 0xFD, 0x74, 0xF5, 0x93, 0xF5, 0x72, 0xF5, 0x30, 0xED, 0x2F, 0xED, 0x0E, 0xED, 0x2E, 0xF5, 0x2E, 0xF5, 0x2F, 0xF5, 0x4F, 0xF5, 0x30, 0xF5, 0x51, 0xED, 0x33, 0xDC, 0x92, 0xBB, 0x4F, 0x92, 0x0D, 0x92, 0x0E, 0xB2, 0xF2, 0xCB, 0xB5, 0xDC, 0x37, 0x01, 0xE4, 0x58, 0x03, 0xE4, 0x37, 0x02, 0xDC, 0x37, 0x01, 0xE4, 0x36, 0x8A, 0xE4, 0x35, 0xDC, 0x34, 0xE4, 0x53, 0xF5, 0x14, 0xF5, 0x32, 0xED, 0x51, 0xED, 0x30, 0xED, 0x2F, 0xED, 0x0F, 0xF5, 0x2F, + 0xF5, 0x0E, 0x02, 0xF5, 0x2F, 0x01, 0xF5, 0x0E, 0x01, 0xED, 0x0E, 0x01, 0xED, 0x2F, 0x8C, 0xF5, 0x2F, 0xED, 0x50, 0xF5, 0x51, 0xF5, 0x53, 0xE4, 0xD3, 0xAB, 0x0E, 0x92, 0x2D, 0x92, 0x2F, 0xB3, 0x12, 0xCB, 0xB5, 0xDC, 0x17, 0xE4, 0x38, 0xE4, 0x58, 0x01, 0xE4, 0x38, 0x81, 0xE4, 0x37, 0xE4, 0x17, 0x02, 0xE4, 0x37, 0x88, 0xE4, 0x57, 0xE4, 0x36, 0xE4, 0x35, 0xDC, 0x33, 0xEC, 0xB3, 0xF5, 0x13, 0xED, 0x32, 0xED, 0x31, 0xED, 0x10, 0x01, 0xED, 0x0F, 0x80, 0xF5, 0x0E, 0x01, 0xED, 0x0E, 0x05, 0xF5, 0x0E, 0x81, 0xF5, 0x0F, 0xF5, 0x2F, 0x01, 0xF5, 0x30, 0x8A, 0xF5, 0x31, 0xF5, 0x33, 0xE4, 0xB3, 0xBB, 0x4F, 0x92, 0x2E, 0x9A, 0x2F, 0xB3, 0x13, 0xCB, 0x95, 0xDC, 0x17, 0xDC, 0x58, 0xE4, 0x58, 0x01, 0xDC, 0x37, 0x03, 0xE4, 0x37, 0x8C, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0xE4, 0x78, 0xBA, 0xF3, 0x9A, 0x10, 0x9A, 0x31, 0xA2, 0x51, 0xD3, 0xF7, 0xE4, 0x58, 0xE4, 0x38, 0xE4, 0x37, 0x03, 0xDC, 0x37, 0x8E, 0xE4, 0x37, 0xDC, 0x37, 0xE4, 0x37, 0xDC, 0x36, 0xE4, 0x37, 0xDC, 0x16, 0xDC, 0x15, 0xDC, 0x34, 0xEC, 0xB4, 0xEC, 0xF4, 0xF5, 0x33, 0xF5, 0x32, 0xF5, 0x31, 0xF5, 0x30, 0xF5, 0x0F, 0x02, 0xF5, 0x2F, 0x01, 0xF5, 0x0E, 0x01, 0xED, 0x0E, 0x80, 0xF5, 0x0F, 0x01, 0xED, 0x0F, 0x01, 0xF5, 0x2F, 0x01, 0xF5, 0x30, 0x86, 0xF5, 0x51, 0xED, 0x52, 0xFD, 0xD7, 0x81, 0xCB, 0x89, 0xEE, 0x91, 0xEF, 0xB2, 0xF3, 0x01, 0xDC, 0x58, 0x80, 0xDC, 0x38, 0x01, 0xDC, 0x37, 0x02, 0xE4, 0x37, 0x80, 0xE4, 0x17, 0x02, 0xE4, 0x37, 0x84, 0xE4, 0x36, 0xE4, 0x35, + 0xDC, 0x34, 0xEC, 0xD5, 0xED, 0x14, 0x01, 0xED, 0x33, 0x01, 0xED, 0x53, 0x87, 0xED, 0x54, 0xED, 0x35, 0xCC, 0x32, 0x92, 0x0D, 0x9A, 0x4F, 0xA2, 0x91, 0xBB, 0x54, 0xDC, 0x17, 0x01, 0xE4, 0x58, 0x84, 0xDC, 0x17, 0xE4, 0x17, 0xE4, 0x37, 0xDC, 0x37, 0xE4, 0x37, 0x01, 0xE4, 0x56, 0x01, 0xE4, 0x36, 0x86, 0xDC, 0x35, 0xDC, 0x34, 0xE4, 0x53, 0xF5, 0x14, 0xF5, 0x53, 0xED, 0x52, 0xED, 0x31, 0x01, 0xF5, 0x30, 0x80, 0xF5, 0x2F, 0x02, 0xF5, 0x0F, 0x06, 0xF5, 0x0E, 0x04, 0xF5, 0x2E, 0x01, 0xF5, 0x0E, 0x81, 0xED, 0x0E, 0xF5, 0x2E, 0x04, 0xED, 0x2E, 0x8C, 0xED, 0x2F, 0xED, 0x30, 0xED, 0x51, 0xED, 0x32, 0xE4, 0xB2, 0xAB, 0x0E, 0x89, 0xCC, 0x91, 0xEE, 0xB3, 0x13, 0xCB, 0xD6, 0xDC, 0x17, 0xE4, 0x58, 0xE4, 0x38, 0x01, 0xDC, 0x38, 0x80, 0xE4, 0x58, 0x01, 0xE4, 0x37, 0x81, 0xDC, 0x37, 0xDC, 0x36, 0x01, 0xE4, 0x36, 0x86, 0xE4, 0x35, 0xDC, 0x34, 0xDC, 0x33, 0xEC, 0xF4, 0xED, 0x33, 0xED, 0x52, 0xED, 0x31, 0x01, 0xED, 0x51, 0x01, 0xED, 0x52, 0x8A, 0xED, 0x53, 0xE4, 0xD4, 0xAA, 0xEF, 0x9A, 0x2E, 0xA2, 0x4F, 0xB3, 0x13, 0xCB, 0x95, 0xDC, 0x17, 0xE4, 0x58, 0xE4, 0x57, 0xE4, 0x37, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xE4, 0x36, 0x01, 0xE4, 0x35, 0x83, 0xDC, 0x33, 0xEC, 0xF4, 0xED, 0x13, 0xED, 0x32, 0x03, 0xED, 0x52, 0x89, 0xED, 0x53, 0xED, 0x15, 0xB3, 0x50, 0x89, 0xED, 0x92, 0x0F, 0x9A, 0x50, 0xBB, 0x54, 0xDC, 0x17, 0xE4, 0x38, 0xDC, 0x38, 0x01, 0xDC, 0x37, 0x03, 0xE4, 0x37, 0x80, 0xDC, 0x36, 0x01, 0xE4, 0x36, 0x87, 0xE4, + 0x35, 0xDC, 0x34, 0xDC, 0x73, 0xED, 0x13, 0xED, 0x33, 0xED, 0x51, 0xED, 0x30, 0xF5, 0x30, 0x02, 0xF5, 0x0F, 0x01, 0xF5, 0x2F, 0x01, 0xED, 0x0F, 0x8A, 0xED, 0x2F, 0xED, 0x50, 0xED, 0x51, 0xED, 0x52, 0xF5, 0x74, 0xCB, 0xF1, 0x9A, 0x6D, 0x89, 0xED, 0x9A, 0x2F, 0xCB, 0x95, 0xDC, 0x17, 0x02, 0xE4, 0x38, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x17, 0x83, 0xDC, 0x37, 0xE4, 0x37, 0xE4, 0x57, 0xE4, 0x36, 0x01, 0xDC, 0x35, 0x82, 0xD4, 0x12, 0xF5, 0x34, 0xF5, 0x73, 0x01, 0xF5, 0x52, 0x02, 0xF5, 0x31, 0x02, 0xF5, 0x51, 0x01, 0xED, 0x51, 0x91, 0xF5, 0x52, 0xF5, 0x72, 0xF5, 0x93, 0xFD, 0x74, 0xFD, 0x55, 0xEC, 0x75, 0xA1, 0xEF, 0xA1, 0xD2, 0xAA, 0x14, 0xAA, 0x36, 0xA2, 0x58, 0x8A, 0x5A, 0x41, 0x18, 0x29, 0x1A, 0x21, 0x5C, 0x19, 0x9D, 0x11, 0x9D, 0x09, 0x9E, 0x01, 0x01, 0x9E, 0x09, 0x01, 0x9F, 0x01, 0x01, 0x9E, 0x01, 0x09, 0x9E, 0x99, 0x09, 0x7E, 0x09, 0x7D, 0x09, 0x7C, 0x09, 0x9A, 0x09, 0xF8, 0x43, 0xFC, 0x76, 0x1F, 0x6E, 0x9D, 0x4E, 0x58, 0x15, 0x30, 0x05, 0x4F, 0x26, 0xB4, 0x2F, 0x36, 0x37, 0x38, 0x3E, 0xD8, 0x5E, 0x9A, 0x8E, 0x3C, 0x5B, 0x74, 0x72, 0xD4, 0x82, 0x95, 0x82, 0x35, 0x8A, 0x15, 0x81, 0xF5, 0x69, 0x73, 0x61, 0x94, 0x59, 0x94, 0x01, 0x51, 0x93, 0x8A, 0x49, 0xB3, 0x49, 0x93, 0x49, 0x92, 0x41, 0x92, 0x41, 0x72, 0x39, 0x71, 0x41, 0x72, 0x39, 0x51, 0x41, 0x91, 0x39, 0x71, 0x39, 0x50, 0x04, 0x39, 0x30, 0x01, 0x31, 0x30, 0x81, 0x29, 0x30, 0x29, 0x10, 0x02, 0x29, 0x30, 0x04, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, + 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x09, 0x21, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x01, 0x11, 0x12, 0x86, 0x19, 0xB5, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0xB5, 0x11, 0x32, 0x11, 0x11, 0x19, 0x51, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x10, 0x01, 0x19, 0x11, 0x84, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x53, 0x11, 0x74, 0x01, 0x19, 0xB5, 0x83, 0x19, 0x95, 0x19, 0x54, 0x11, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x81, 0x21, 0x11, 0x21, 0x31, 0x03, 0x21, 0x10, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0D, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x88, 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, + 0x11, 0x18, 0xF1, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x84, 0x21, 0xD6, 0x11, 0x54, 0x11, 0x33, 0x11, 0x12, 0x18, 0xF1, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x50, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x32, 0x19, 0x95, 0x19, 0xD7, 0x11, 0xD8, 0x09, 0xD8, 0x01, 0xB8, 0x01, 0x01, 0xB9, 0x02, 0x01, 0xDA, 0x84, 0x01, 0xFA, 0x01, 0xD9, 0x01, 0xB8, 0x09, 0xB8, 0x09, 0xB7, 0x01, 0x11, 0xD7, 0x88, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0xB5, 0x11, 0x94, 0x11, 0x74, 0x19, 0x74, 0x11, 0x53, 0x19, 0x53, 0x19, 0x73, 0x03, 0x19, 0x53, 0x80, 0x19, 0x52, 0x01, 0x19, 0x32, 0x01, 0x11, 0x32, 0x84, 0x11, 0x53, 0x19, 0xB5, 0x19, 0xD6, 0x22, 0x17, 0x19, 0xF7, 0x01, 0x19, 0xD7, 0x80, 0x19, 0xD6, 0x01, 0x19, 0xB5, 0x81, 0x19, 0x95, 0x19, 0x94, 0x03, 0x19, 0x74, 0x80, 0x11, 0x74, 0x04, 0x19, 0x74, 0x82, 0x11, 0x53, 0x19, 0x74, 0x19, 0x53, 0x01, 0x19, 0x54, 0x81, 0x19, 0x53, 0x11, 0x53, 0x01, 0x11, 0x33, 0x93, 0x11, 0x54, 0x19, 0x74, 0x11, 0x74, 0x19, 0x95, 0x19, 0xB5, 0x19, 0xD6, 0x22, 0x37, 0x2A, 0x58, 0x22, 0x37, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x54, 0x11, 0x32, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, + 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x0D, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x0D, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x09, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x85, 0x19, 0x10, 0x19, 0x11, 0x19, 0x12, 0x11, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x01, 0x22, 0x17, 0x84, 0x21, 0xF6, 0x19, 0x95, 0x19, 0x74, 0x11, 0x32, 0x10, 0xF1, 0x01, 0x19, 0x11, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x0B, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x0F, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x05, 0x29, + 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x8E, 0x29, 0x0F, 0x28, 0xEF, 0x28, 0xAE, 0x38, 0x4C, 0xAA, 0xB5, 0xBA, 0x53, 0xB2, 0x11, 0xB1, 0xF1, 0xB1, 0xF0, 0xA1, 0xCD, 0xFD, 0x36, 0xFD, 0x74, 0xFD, 0xB3, 0xF5, 0x71, 0xF5, 0x50, 0x02, 0xF5, 0x2F, 0x02, 0xF5, 0x4F, 0x89, 0xF5, 0x50, 0xF5, 0x31, 0xF5, 0x32, 0xE4, 0x92, 0xBB, 0x4F, 0x91, 0xED, 0x9A, 0x2F, 0xB3, 0x13, 0xCB, 0xB6, 0xDC, 0x37, 0x01, 0xE4, 0x78, 0x80, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x8B, 0xDC, 0x37, 0xE4, 0x37, 0xDC, 0x37, 0xE4, 0x37, 0xE4, 0x36, 0xE4, 0x56, 0xE4, 0x35, 0xE4, 0x34, 0xE4, 0x73, 0xF5, 0x13, 0xF5, 0x53, 0xF5, 0x51, 0x01, 0xF5, 0x30, 0x01, 0xF5, 0x2F, 0x82, 0xFD, 0x4F, 0xF5, 0x2F, 0xFD, 0x4F, 0x01, 0xF5, 0x2F, 0x81, 0xF5, 0x0E, 0xF5, 0x2F, 0x01, 0xF5, 0x0F, 0x80, 0xF5, 0x2F, 0x02, 0xF5, 0x30, 0x87, 0xF5, 0x52, 0xE4, 0xB2, 0xB3, 0x0E, 0x92, 0x2D, 0x9A, 0x4F, 0xB3, 0x13, 0xCB, 0xB5, 0xDC, 0x38, 0x01, 0xE4, 0x58, 0x80, 0xE4, 0x38, 0x05, 0xE4, 0x37, 0x01, 0xE4, 0x56, 0x86, 0xE4, 0x35, 0xE4, 0x34, 0xEC, 0xB3, 0xF5, 0x13, 0xED, 0x11, 0xF5, 0x31, 0xF5, 0x10, 0x08, 0xF5, 0x2F, 0x83, 0xF5, 0x2E, 0xF5, 0x2F, 0xFD, 0x2F, 0xF5, 0x2F, 0x01, 0xF5, 0x30, 0x8B, 0xF5, 0x31, 0xF5, 0x33, 0xE4, 0xB2, 0xBB, 0x4F, 0x9A, 0x4D, 0x9A, 0x2F, 0xBB, 0x13, 0xCB, 0xB5, 0xDC, 0x37, 0xDC, 0x58, 0xE4, 0x57, 0xDC, 0x37, 0x02, 0xE4, 0x37, 0x04, 0xE4, 0x57, 0x86, 0xDC, 0x57, 0xE4, 0x57, 0xC3, 0x54, 0x9A, 0x10, 0x9A, 0x30, 0x9A, 0x31, 0xD3, 0xD6, 0x02, 0xE4, 0x58, 0x80, 0xE4, 0x37, + 0x02, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x8A, 0xDC, 0x37, 0xDC, 0x36, 0xE4, 0x37, 0xE4, 0x36, 0xE4, 0x16, 0xDC, 0x15, 0xE4, 0x34, 0xEC, 0x94, 0xF4, 0xD3, 0xF5, 0x12, 0xFD, 0x32, 0x01, 0xFD, 0x31, 0x02, 0xFD, 0x30, 0x05, 0xF5, 0x2F, 0x8B, 0xF5, 0x30, 0xF5, 0x50, 0xF5, 0x30, 0xF5, 0x50, 0xF5, 0x51, 0xF5, 0x72, 0xF5, 0x73, 0xFD, 0xD7, 0x81, 0xCB, 0x89, 0xEE, 0x91, 0xEE, 0xB2, 0xF3, 0x01, 0xDC, 0x58, 0x80, 0xDC, 0x38, 0x01, 0xDC, 0x37, 0x05, 0xE4, 0x37, 0x86, 0xE4, 0x57, 0xE4, 0x36, 0xE4, 0x35, 0xE4, 0x54, 0xF5, 0x15, 0xF5, 0x34, 0xF5, 0x54, 0x02, 0xF5, 0x53, 0x8A, 0xF5, 0x54, 0xF5, 0x35, 0xCC, 0x12, 0x92, 0x0D, 0x9A, 0x2F, 0xA2, 0x91, 0xC3, 0x74, 0xDC, 0x38, 0xE4, 0x78, 0xE4, 0x58, 0xDC, 0x37, 0x03, 0xE4, 0x37, 0x80, 0xE4, 0x57, 0x02, 0xE4, 0x36, 0x86, 0xE4, 0x35, 0xDC, 0x34, 0xE4, 0x73, 0xF5, 0x14, 0xF5, 0x53, 0xF5, 0x52, 0xF5, 0x31, 0x02, 0xF5, 0x30, 0x0B, 0xF5, 0x2F, 0x01, 0xF5, 0x4F, 0x05, 0xF5, 0x2F, 0x01, 0xF5, 0x2E, 0x01, 0xF5, 0x2F, 0x8D, 0xF5, 0x4F, 0xF5, 0x2F, 0xED, 0x10, 0xF5, 0x31, 0xE4, 0xD2, 0xB3, 0x4F, 0x89, 0xCC, 0x91, 0xEE, 0xBB, 0x13, 0xD3, 0xD6, 0xDC, 0x17, 0xDC, 0x58, 0xE4, 0x58, 0xDC, 0x37, 0x01, 0xE4, 0x58, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x36, 0x01, 0xE4, 0x56, 0x85, 0xE4, 0x36, 0xE4, 0x35, 0xE4, 0x53, 0xEC, 0xD4, 0xF5, 0x34, 0xF5, 0x53, 0x03, 0xF5, 0x72, 0x8E, 0xF5, 0x53, 0xF5, 0x54, 0xE4, 0xD4, 0xB3, 0x0F, 0x9A, 0x4E, 0xA2, 0x50, 0xBB, 0x13, 0xCB, 0x95, 0xDC, 0x17, 0xE4, 0x58, 0xE4, + 0x57, 0xE4, 0x37, 0xDC, 0x16, 0xDC, 0x37, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xE4, 0x36, 0x85, 0xDC, 0x35, 0xE4, 0x35, 0xE4, 0x54, 0xEC, 0xF4, 0xF5, 0x13, 0xF5, 0x33, 0x02, 0xF5, 0x52, 0x8D, 0xF5, 0x53, 0xF5, 0x54, 0xF5, 0x35, 0xBB, 0x50, 0x89, 0xED, 0x92, 0x0F, 0xA2, 0x71, 0xC3, 0x75, 0xDC, 0x37, 0xE4, 0x38, 0xE4, 0x58, 0xE4, 0x37, 0xDC, 0x37, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x81, 0xE4, 0x37, 0xE4, 0x57, 0x01, 0xE4, 0x36, 0x84, 0xE4, 0x55, 0xE4, 0x54, 0xE4, 0x73, 0xEC, 0xF3, 0xF5, 0x53, 0x01, 0xF5, 0x51, 0x02, 0xF5, 0x30, 0x01, 0xF5, 0x2F, 0x80, 0xF5, 0x4F, 0x01, 0xF5, 0x2F, 0x81, 0xF5, 0x4F, 0xF5, 0x50, 0x01, 0xED, 0x51, 0x89, 0xF5, 0x74, 0xCB, 0xF1, 0x9A, 0x6D, 0x89, 0xED, 0x9A, 0x2F, 0xC3, 0x95, 0xDB, 0xF7, 0xE4, 0x58, 0xE4, 0x38, 0xDC, 0x38, 0x04, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x84, 0xE4, 0x56, 0xE4, 0x35, 0xDC, 0x34, 0xDC, 0x12, 0xFD, 0x55, 0x01, 0xFD, 0x73, 0x01, 0xFD, 0x72, 0x80, 0xF5, 0x52, 0x04, 0xF5, 0x51, 0x80, 0xF5, 0x71, 0x01, 0xF5, 0x72, 0x8E, 0xF5, 0x73, 0xFD, 0x74, 0xFD, 0x55, 0xF4, 0xD6, 0xA1, 0xEF, 0xA9, 0xD2, 0xAA, 0x14, 0xAA, 0x36, 0xA2, 0x78, 0x8A, 0x5A, 0x41, 0x18, 0x29, 0x1A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x9D, 0x01, 0x09, 0x9E, 0x0C, 0x01, 0x9F, 0x01, 0x01, 0x9E, 0x99, 0x09, 0x9E, 0x09, 0x9D, 0x01, 0x9D, 0x01, 0xBB, 0x02, 0x19, 0x2B, 0xBB, 0x66, 0x5F, 0x5E, 0xBD, 0x4E, 0xD9, 0x2E, 0x74, 0x26, 0xB3, 0x1E, 0xB3, 0x2F, 0x56, 0x37, 0x37, 0x46, 0xD8, 0x5E, 0x7A, 0x8E, 0x1C, 0x5B, 0x33, 0x72, 0xD4, + 0x82, 0x95, 0x82, 0x35, 0x82, 0x15, 0x79, 0xD4, 0x69, 0x93, 0x61, 0x94, 0x59, 0x93, 0x01, 0x51, 0x93, 0x85, 0x51, 0xB3, 0x49, 0xB3, 0x49, 0x92, 0x41, 0x92, 0x41, 0x72, 0x39, 0x72, 0x01, 0x39, 0x51, 0x01, 0x41, 0x71, 0x02, 0x39, 0x71, 0x82, 0x39, 0x50, 0x39, 0x51, 0x39, 0x30, 0x01, 0x31, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x50, 0x06, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0x95, 0x08, 0xF1, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x8A, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x21, 0xD6, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x94, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x80, 0x21, 0x11, 0x01, 0x19, 0x32, 0x83, + 0x19, 0x74, 0x11, 0x74, 0x11, 0x95, 0x19, 0xB6, 0x01, 0x19, 0xD6, 0x80, 0x19, 0xF6, 0x01, 0x21, 0xF6, 0x84, 0x19, 0xB5, 0x21, 0x94, 0x19, 0x33, 0x19, 0x32, 0x19, 0x11, 0x01, 0x21, 0x31, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0F, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x18, 0xF1, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xB6, 0x19, 0x74, 0x19, 0x33, 0x11, 0x12, 0x01, 0x19, 0x11, 0x82, 0x21, 0x30, 0x21, 0x10, 0x29, 0x30, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8A, 0x21, 0x51, 0x19, 0x11, 0x10, 0xF1, 0x11, 0x74, 0x19, 0xD6, 0x11, 0xD7, 0x09, 0xD8, 0x01, 0xB8, 0x01, 0xD9, 0x01, 0x98, 0x01, 0xB9, 0x01, 0x01, 0xBA, 0x80, 0x01, 0xDA, 0x01, 0x09, 0xD9, 0x86, 0x11, 0xD8, 0x11, 0xF8, 0x19, 0xF7, 0x11, 0xB5, 0x11, 0x54, 0x11, 0x33, 0x09, 0x12, 0x01, 0x11, 0x12, 0x01, 0x11, 0x32, 0x02, 0x19, 0x52, 0x82, 0x19, 0x32, 0x11, 0x12, 0x19, 0x32, 0x02, 0x19, 0x31, 0x86, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x11, 0x33, 0x11, 0x94, 0x19, 0xD5, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x82, + 0x21, 0xF7, 0x22, 0x17, 0x2A, 0x37, 0x04, 0x2A, 0x17, 0x80, 0x2A, 0x37, 0x01, 0x2A, 0x16, 0x01, 0x2A, 0x17, 0x02, 0x2A, 0x16, 0x8C, 0x32, 0x37, 0x2A, 0x16, 0x2A, 0x37, 0x2A, 0x17, 0x29, 0xF6, 0x21, 0xF6, 0x29, 0xF7, 0x2A, 0x37, 0x32, 0x57, 0x2A, 0x37, 0x32, 0x58, 0x32, 0x37, 0x2A, 0x57, 0x01, 0x2A, 0x37, 0x85, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x94, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x11, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, + 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x06, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x81, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x32, 0x81, 0x11, 0x33, 0x19, 0x95, 0x01, 0x22, 0x17, 0x88, 0x21, 0xF7, 0x19, 0x95, 0x19, 0x54, 0x19, 0x53, 0x11, 0x11, 0x19, 0x11, 0x18, 0xF0, 0x19, 0x10, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x8D, 0x28, 0xEF, 0x30, 0xCE, 0x38, 0x4C, 0xAA, 0xB4, 0xB2, 0x52, 0xB2, 0x12, 0xB1, 0xF1, 0xB1, 0xF0, 0xA1, 0xAD, 0xFD, 0x36, 0xFD, 0x74, 0xFD, 0x92, 0xF5, 0x71, 0xF5, 0x50, 0x01, 0xF5, 0x2F, 0x01, 0xFD, 0x4F, 0x90, 0xFD, 0x6F, 0xFD, 0x70, 0xFD, 0x50, 0xFD, 0x51, 0xF5, 0x32, 0xE4, 0xB2, 0xC3, 0x70, 0x92, 0x0D, 0x92, 0x0E, 0xB2, 0xF2, 0xCB, 0x95, 0xDC, 0x17, 0xE4, 0x58, 0xE4, 0x78, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x8C, 0xDC, 0x36, 0xE4, 0x36, 0xE4, 0x56, 0xE4, + 0x35, 0xE4, 0x34, 0xE4, 0x73, 0xF5, 0x14, 0xFD, 0x73, 0xF5, 0x51, 0xF5, 0x30, 0xFD, 0x50, 0xF5, 0x50, 0xFD, 0x50, 0x03, 0xFD, 0x4F, 0x90, 0xFD, 0x2F, 0xFD, 0x4F, 0xFD, 0x2F, 0xFD, 0x4F, 0xF5, 0x2F, 0xFD, 0x50, 0xF5, 0x50, 0xFD, 0x50, 0xFD, 0x51, 0xFD, 0x53, 0xEC, 0xD3, 0xB3, 0x2F, 0x92, 0x2D, 0x9A, 0x4F, 0xB3, 0x33, 0xCB, 0xB6, 0xDC, 0x37, 0x01, 0xE4, 0x58, 0x80, 0xE4, 0x38, 0x05, 0xE4, 0x37, 0x89, 0xE4, 0x36, 0xE4, 0x56, 0xE4, 0x35, 0xE4, 0x54, 0xEC, 0xD3, 0xF5, 0x33, 0xF5, 0x32, 0xF5, 0x31, 0xF5, 0x30, 0xFD, 0x30, 0x01, 0xFD, 0x2F, 0x81, 0xF5, 0x2F, 0xFD, 0x2F, 0x07, 0xFD, 0x4F, 0x01, 0xFD, 0x50, 0x89, 0xFD, 0x51, 0xFD, 0x53, 0xE4, 0xB2, 0xBB, 0x6F, 0x9A, 0x4D, 0x9A, 0x4F, 0xBB, 0x13, 0xCB, 0xB5, 0xDC, 0x37, 0xDC, 0x58, 0x03, 0xE4, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x36, 0x01, 0xE4, 0x57, 0x01, 0xE4, 0x77, 0x80, 0xD3, 0xF6, 0x02, 0x9A, 0x30, 0x80, 0xC3, 0x75, 0x03, 0xE4, 0x58, 0x05, 0xDC, 0x37, 0x80, 0xE4, 0x36, 0x01, 0xE4, 0x37, 0x87, 0xE4, 0x36, 0xDC, 0x15, 0xE4, 0x14, 0xE4, 0x54, 0xF4, 0xB4, 0xF4, 0xD3, 0xFD, 0x13, 0xFD, 0x32, 0x01, 0xFD, 0x31, 0x01, 0xFD, 0x51, 0x80, 0xFD, 0x50, 0x01, 0xFD, 0x30, 0x81, 0xFD, 0x50, 0xFD, 0x30, 0x03, 0xFD, 0x50, 0x01, 0xF5, 0x51, 0x86, 0xF5, 0x52, 0xF5, 0x93, 0xFD, 0xB6, 0x81, 0xCB, 0x89, 0xEE, 0x91, 0xEE, 0xB2, 0xF3, 0x01, 0xDC, 0x58, 0x82, 0xE4, 0x58, 0xDC, 0x38, 0xE4, 0x38, 0x05, 0xE4, 0x37, 0x01, 0xE4, 0x36, 0x83, 0xE4, 0x35, 0xE4, 0x54, 0xF5, 0x16, 0xFD, + 0x55, 0x01, 0xF5, 0x54, 0x89, 0xF5, 0x53, 0xF5, 0x74, 0xF5, 0x54, 0xF5, 0x55, 0xD4, 0x12, 0x92, 0x0D, 0x92, 0x0F, 0x9A, 0x70, 0xBB, 0x34, 0xDC, 0x37, 0x01, 0xE4, 0x58, 0x01, 0xE4, 0x57, 0x02, 0xE4, 0x37, 0x80, 0xE4, 0x56, 0x02, 0xE4, 0x36, 0x86, 0xE4, 0x35, 0xE4, 0x54, 0xE4, 0x73, 0xF5, 0x34, 0xF5, 0x53, 0xF5, 0x52, 0xF5, 0x31, 0x01, 0xF5, 0x30, 0x83, 0xFD, 0x50, 0xFD, 0x30, 0xFD, 0x50, 0xFD, 0x2F, 0x0B, 0xFD, 0x4F, 0x80, 0xF5, 0x4F, 0x01, 0xFD, 0x4F, 0x83, 0xF5, 0x4F, 0xF5, 0x2E, 0xF5, 0x4F, 0xFD, 0x4F, 0x02, 0xF5, 0x4F, 0x01, 0xF5, 0x50, 0x87, 0xF5, 0x52, 0xED, 0x13, 0xBB, 0x6F, 0x89, 0xEC, 0x92, 0x0E, 0xAA, 0xD2, 0xCB, 0xB6, 0xD4, 0x17, 0x01, 0xE4, 0x58, 0x83, 0xDC, 0x38, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x36, 0x02, 0xE4, 0x56, 0x86, 0xE4, 0x35, 0xE4, 0x54, 0xEC, 0xD4, 0xF5, 0x34, 0xF5, 0x53, 0xFD, 0x73, 0xFD, 0x93, 0x02, 0xF5, 0x73, 0x89, 0xF5, 0x75, 0xEC, 0xF5, 0xB3, 0x0F, 0x9A, 0x4E, 0xA2, 0x50, 0xBB, 0x13, 0xCB, 0x95, 0xDC, 0x17, 0xE4, 0x58, 0xE4, 0x57, 0x03, 0xE4, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xE4, 0x36, 0x87, 0xDC, 0x36, 0xDC, 0x35, 0xE4, 0x55, 0xE4, 0x54, 0xF4, 0xF4, 0xF5, 0x14, 0xF5, 0x33, 0xFD, 0x53, 0x01, 0xFD, 0x73, 0x88, 0xFD, 0x74, 0xFD, 0x75, 0xF5, 0x36, 0xB3, 0x30, 0x89, 0xED, 0x92, 0x0F, 0xA2, 0x71, 0xCB, 0x95, 0xDC, 0x38, 0x01, 0xE4, 0x58, 0x80, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x81, 0xE4, 0x57, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x84, 0xE4, 0x55, 0xE4, + 0x54, 0xE4, 0x93, 0xF4, 0xF4, 0xF5, 0x53, 0x01, 0xF5, 0x51, 0x07, 0xFD, 0x50, 0x01, 0xF5, 0x50, 0x89, 0xF5, 0x51, 0xF5, 0x52, 0xFD, 0x74, 0xCB, 0xF1, 0x9A, 0x6E, 0x92, 0x0D, 0x9A, 0x2F, 0xCB, 0x95, 0xDC, 0x17, 0xE4, 0x58, 0x01, 0xDC, 0x38, 0x80, 0xDC, 0x37, 0x02, 0xE4, 0x37, 0x80, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x84, 0xE4, 0x36, 0xE4, 0x35, 0xDC, 0x34, 0xDC, 0x32, 0xFD, 0x54, 0x01, 0xFD, 0x73, 0x03, 0xFD, 0x72, 0x02, 0xF5, 0x71, 0x80, 0xF5, 0x72, 0x02, 0xFD, 0x72, 0x01, 0xFD, 0x73, 0x8D, 0xFD, 0x75, 0xFD, 0x37, 0xA1, 0xEF, 0xA1, 0xD2, 0xAA, 0x14, 0xAA, 0x36, 0xA2, 0x78, 0x8A, 0x5A, 0x41, 0x18, 0x29, 0x1A, 0x21, 0x5C, 0x19, 0x9D, 0x11, 0x7D, 0x09, 0x9E, 0x01, 0x01, 0x9E, 0x0B, 0x01, 0x9F, 0x02, 0x01, 0x9E, 0x01, 0x01, 0x9D, 0x9F, 0x01, 0xBB, 0x02, 0x3A, 0x23, 0xDC, 0x5E, 0x7F, 0x4E, 0xBD, 0x2E, 0x77, 0x1E, 0x94, 0x1E, 0xD3, 0x16, 0xD3, 0x27, 0x35, 0x2F, 0x37, 0x46, 0xD8, 0x66, 0x7A, 0x85, 0x9A, 0x5B, 0x13, 0x7A, 0xF5, 0x82, 0x75, 0x82, 0x35, 0x82, 0x15, 0x71, 0xB4, 0x61, 0x73, 0x59, 0x73, 0x59, 0x93, 0x51, 0x73, 0x51, 0x93, 0x51, 0xB3, 0x49, 0xB3, 0x49, 0x72, 0x41, 0x92, 0x41, 0x72, 0x41, 0x92, 0x41, 0x72, 0x01, 0x39, 0x71, 0x81, 0x39, 0x51, 0x39, 0x71, 0x03, 0x39, 0x50, 0x82, 0x31, 0x50, 0x31, 0x51, 0x31, 0x30, 0x03, 0x29, 0x30, 0x80, 0x29, 0x50, 0x04, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, + 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x88, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x12, 0x19, 0x11, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x88, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x12, 0x21, 0xB5, 0x21, 0xF7, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x10, 0x84, 0x21, 0x31, 0x19, 0x52, 0x19, 0x53, 0x11, 0x74, 0x19, 0xB6, 0x01, 0x19, 0xF7, 0x82, 0x19, 0xD7, 0x11, 0xB6, 0x19, 0xD6, 0x01, 0x19, 0xF7, 0x85, 0x21, 0xF7, 0x21, 0xD6, 0x21, 0xB5, 0x19, 0x53, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x31, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x07, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x85, 0x21, 0x31, 0x18, 0xF1, 0x11, 0x12, 0x11, 0x33, 0x11, 0x53, 0x19, 0xB6, 0x01, 0x21, 0xF7, 0x83, 0x19, 0xD6, 0x19, 0x54, 0x11, 0x12, 0x19, 0x12, 0x01, 0x19, + 0x11, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x07, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x11, 0x11, 0x11, 0x11, 0x53, 0x19, 0xB6, 0x11, 0xB6, 0x11, 0xD8, 0x09, 0xD9, 0x01, 0xD9, 0x03, 0x01, 0xB9, 0x86, 0x01, 0xD9, 0x09, 0xF9, 0x11, 0xF9, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0x95, 0x11, 0x54, 0x02, 0x11, 0x32, 0x82, 0x19, 0x32, 0x11, 0x12, 0x19, 0x31, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x01, 0x21, 0x30, 0x89, 0x21, 0x10, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0x53, 0x19, 0x94, 0x21, 0xB6, 0x21, 0xD6, 0x02, 0x21, 0xF6, 0x04, 0x29, 0xF6, 0x84, 0x21, 0xF6, 0x2A, 0x16, 0x21, 0xD6, 0x21, 0xF6, 0x29, 0xF6, 0x04, 0x21, 0xF6, 0x01, 0x2A, 0x17, 0x8E, 0x21, 0xF6, 0x2A, 0x17, 0x32, 0x38, 0x2A, 0x17, 0x2A, 0x37, 0x32, 0x57, 0x2A, 0x16, 0x29, 0xF6, 0x21, 0xD5, 0x19, 0x94, 0x21, 0xB5, 0x21, 0xB4, 0x19, 0x94, 0x11, 0x32, 0x10, 0xF1, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, + 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x10, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x32, 0x82, 0x11, 0x33, 0x19, 0x94, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x87, 0x19, 0xB5, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, 0x19, 0x52, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x02, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x0F, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x84, 0x28, 0xEF, 0x28, 0xCE, 0x38, 0x4C, 0xAA, 0xB4, 0xB2, 0x52, 0x01, 0xB1, 0xF1, 0x86, 0xB1, 0xD0, 0xA9, 0xCD, 0xFD, 0x35, 0xFD, 0x73, 0xFD, 0xB2, + 0xFD, 0x91, 0xF5, 0x30, 0x02, 0xFD, 0x4F, 0x81, 0xFD, 0x6F, 0xFD, 0x8F, 0x01, 0xFD, 0x70, 0x88, 0xFD, 0x51, 0xFD, 0x52, 0xEC, 0xF3, 0xC3, 0xB0, 0x92, 0x0D, 0x92, 0x0E, 0xB2, 0xF2, 0xC3, 0x95, 0xD4, 0x17, 0x01, 0xE4, 0x78, 0x81, 0xE4, 0x57, 0xDC, 0x57, 0x02, 0xE4, 0x57, 0x81, 0xDC, 0x37, 0xE4, 0x37, 0x01, 0xE4, 0x56, 0x87, 0xE4, 0x35, 0xDC, 0x14, 0xE4, 0x73, 0xFD, 0x34, 0xFD, 0x73, 0xFD, 0x71, 0xF5, 0x50, 0xFD, 0x50, 0x05, 0xFD, 0x70, 0x01, 0xFD, 0x4F, 0x04, 0xFD, 0x70, 0x01, 0xFD, 0x71, 0x89, 0xFD, 0x93, 0xEC, 0xF3, 0xB3, 0x2F, 0x92, 0x4D, 0x9A, 0x6F, 0xB3, 0x33, 0xCB, 0xB5, 0xDC, 0x37, 0xE4, 0x78, 0xE4, 0x58, 0x06, 0xE4, 0x37, 0x89, 0xE4, 0x36, 0xE4, 0x56, 0xE4, 0x35, 0xE4, 0x54, 0xEC, 0xD3, 0xFD, 0x53, 0xFD, 0x72, 0xFD, 0x51, 0xFD, 0x50, 0xFD, 0x70, 0x01, 0xFD, 0x50, 0x04, 0xFD, 0x4F, 0x80, 0xFD, 0x6F, 0x03, 0xFD, 0x4F, 0x8A, 0xFD, 0x50, 0xFD, 0x70, 0xFD, 0x71, 0xFD, 0x73, 0xEC, 0xD3, 0xC3, 0x70, 0x9A, 0x4D, 0x9A, 0x4F, 0xBB, 0x13, 0xCB, 0xB5, 0xDC, 0x37, 0x01, 0xE4, 0x58, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x83, 0xE4, 0x77, 0xE4, 0x97, 0xE4, 0x78, 0xA2, 0x90, 0x01, 0x92, 0x0F, 0x85, 0xB2, 0xD2, 0xDC, 0x17, 0xE4, 0x58, 0xE4, 0x78, 0xE4, 0x58, 0xE4, 0x57, 0x03, 0xDC, 0x37, 0x80, 0xE4, 0x37, 0x02, 0xE4, 0x57, 0x87, 0xE4, 0x36, 0xDC, 0x16, 0xE4, 0x15, 0xE4, 0x35, 0xEC, 0x74, 0xEC, 0x93, 0xF4, 0xD3, 0xF4, 0xF2, 0x01, 0xFD, 0x32, 0x80, 0xFD, 0x52, 0x0B, 0xFD, 0x51, + 0x86, 0xFD, 0x72, 0xFD, 0x93, 0xFD, 0xD7, 0x89, 0xCB, 0x92, 0x0F, 0x91, 0xEF, 0xB2, 0xF3, 0x02, 0xE4, 0x58, 0x80, 0xDC, 0x38, 0x01, 0xE4, 0x38, 0x01, 0xE4, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x01, 0xE4, 0x36, 0x86, 0xE4, 0x55, 0xE4, 0x54, 0xF5, 0x16, 0xFD, 0x55, 0xFD, 0x54, 0xF5, 0x53, 0xFD, 0x53, 0x01, 0xFD, 0x54, 0x88, 0xFD, 0x55, 0xD4, 0x33, 0x92, 0x0D, 0x92, 0x0E, 0x9A, 0x50, 0xBB, 0x33, 0xDC, 0x17, 0xE4, 0x57, 0xE4, 0x58, 0x01, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x80, 0xDC, 0x36, 0x02, 0xE4, 0x36, 0x89, 0xE4, 0x56, 0xE4, 0x35, 0xE4, 0x54, 0xE4, 0x93, 0xFD, 0x34, 0xFD, 0x73, 0xF5, 0x52, 0xF5, 0x51, 0xFD, 0x51, 0xFD, 0x70, 0x03, 0xFD, 0x50, 0x05, 0xFD, 0x4F, 0x80, 0xFD, 0x6F, 0x0C, 0xFD, 0x4F, 0x80, 0xFD, 0x6F, 0x01, 0xFD, 0x70, 0x8D, 0xFD, 0x71, 0xFD, 0x72, 0xF5, 0x53, 0xC3, 0x8F, 0x89, 0xCB, 0x89, 0xEE, 0xA2, 0xB1, 0xC3, 0x75, 0xD3, 0xF7, 0xE4, 0x58, 0xE4, 0x78, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x81, 0xDC, 0x37, 0xDC, 0x36, 0x01, 0xE4, 0x57, 0x87, 0xE4, 0x56, 0xE4, 0x35, 0xE4, 0x54, 0xEC, 0x94, 0xF5, 0x34, 0xF5, 0x53, 0xFD, 0x73, 0xFD, 0x93, 0x01, 0xF5, 0x73, 0x8A, 0xFD, 0x74, 0xFD, 0x75, 0xEC, 0xF5, 0xB3, 0x10, 0x9A, 0x4F, 0xA2, 0x50, 0xB2, 0xF2, 0xCB, 0x95, 0xDC, 0x17, 0xE4, 0x58, 0xE4, 0x57, 0x02, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x03, 0xE4, 0x36, 0x83, 0xE4, 0x55, 0xE4, 0x54, 0xF4, 0xF5, 0xFD, 0x34, 0x04, 0xFD, 0x74, 0x87, 0xFD, 0x55, 0xF4, 0xF5, 0xAA, 0xCF, 0x92, 0x0D, 0x92, 0x0F, 0xA2, + 0x91, 0xCB, 0xB6, 0xDC, 0x58, 0x01, 0xE4, 0x58, 0x80, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x81, 0xE4, 0x57, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x85, 0xE4, 0x55, 0xE4, 0x54, 0xE4, 0x73, 0xF4, 0xF3, 0xFD, 0x53, 0xFD, 0x52, 0x01, 0xFD, 0x51, 0x80, 0xFD, 0x71, 0x05, 0xFD, 0x70, 0x80, 0xF5, 0x70, 0x01, 0xFD, 0x71, 0x8A, 0xFD, 0x72, 0xFD, 0x94, 0xD4, 0x12, 0xA2, 0x8E, 0x92, 0x0D, 0x9A, 0x4F, 0xCB, 0x95, 0xDC, 0x17, 0xE4, 0x58, 0xDC, 0x38, 0xDC, 0x37, 0x03, 0xE4, 0x37, 0x02, 0xE4, 0x57, 0x84, 0xDC, 0x36, 0xDC, 0x35, 0xDC, 0x34, 0xDC, 0x32, 0xFD, 0x54, 0x01, 0xFD, 0x73, 0x81, 0xFD, 0x72, 0xFD, 0x52, 0x02, 0xFD, 0x72, 0x03, 0xFD, 0x92, 0x02, 0xFD, 0x93, 0x8D, 0xFD, 0x94, 0xFD, 0x95, 0xFD, 0x57, 0xA1, 0xEF, 0xA1, 0xF2, 0xAA, 0x14, 0xA2, 0x16, 0xA2, 0x78, 0x8A, 0x5A, 0x41, 0x18, 0x29, 0x3A, 0x21, 0x7C, 0x19, 0x9D, 0x11, 0x9D, 0x01, 0x09, 0x9E, 0x05, 0x01, 0x9F, 0x04, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x80, 0x01, 0xBF, 0x01, 0x01, 0x9E, 0x88, 0x01, 0x9D, 0x01, 0xBD, 0x01, 0xFC, 0x02, 0x5A, 0x1B, 0xFC, 0x56, 0x9F, 0x46, 0xDD, 0x26, 0x96, 0x16, 0xB3, 0x01, 0x17, 0x13, 0x94, 0x27, 0x55, 0x2E, 0xF6, 0x46, 0xD8, 0x6E, 0x9B, 0x7D, 0x39, 0x62, 0xD3, 0x7A, 0xD5, 0x82, 0x95, 0x82, 0x55, 0x79, 0xF5, 0x71, 0xB4, 0x61, 0x73, 0x59, 0x73, 0x59, 0x94, 0x51, 0x73, 0x51, 0x93, 0x49, 0xB3, 0x49, 0x72, 0x49, 0x92, 0x41, 0x92, 0x41, 0x71, 0x01, 0x41, 0x92, 0x01, 0x39, 0x71, 0x01, 0x39, 0x51, 0x82, 0x31, 0x50, 0x39, 0x50, 0x31, 0x50, 0x02, 0x31, + 0x30, 0x84, 0x31, 0x50, 0x31, 0x51, 0x29, 0x30, 0x29, 0x50, 0x29, 0x30, 0x05, 0x29, 0x2F, 0x80, 0x29, 0x30, 0x05, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x0A, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x51, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x01, 0x19, 0xD6, 0x84, 0x19, 0x95, 0x11, 0x11, 0x19, 0x11, 0x21, 0x30, 0x21, 0x10, 0x05, 0x21, 0x2F, 0x81, 0x19, 0x30, 0x19, 0x31, 0x01, 0x11, 0x32, 0x87, 0x21, 0xD6, 0x21, 0xF7, 0x19, 0xB6, 0x19, 0x94, 0x11, 0x32, 0x11, 0x11, 0x19, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x19, 0x31, 0x21, 0x94, 0x19, 0xB5, 0x11, 0x95, 0x11, 0xD7, 0x01, 0x19, 0xF7, 0x83, 0x11, 0xB6, 0x11, 0x96, 0x11, 0xB6, 0x11, 0xD6, 0x01, 0x19, 0xF7, 0x85, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x02, 0x21, 0x31, 0x07, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x04, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x10, 0x02, 0x29, 0x30, 0x80, 0x21, 0x30, 0x01, 0x29, 0x30, 0x94, 0x29, 0x10, + 0x21, 0x10, 0x21, 0x30, 0x21, 0x31, 0x21, 0x11, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB5, 0x19, 0xF6, 0x19, 0xD6, 0x21, 0xF6, 0x19, 0x74, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x21, 0x51, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x10, 0x19, 0x11, 0x11, 0x53, 0x19, 0xB5, 0x11, 0xB6, 0x11, 0xB7, 0x09, 0xD8, 0x09, 0xD9, 0x01, 0x01, 0xB9, 0x80, 0x01, 0xD9, 0x01, 0x09, 0xD9, 0x86, 0x09, 0xD8, 0x19, 0xF8, 0x11, 0xD7, 0x09, 0x34, 0x09, 0x33, 0x11, 0x52, 0x19, 0x52, 0x01, 0x19, 0x31, 0x82, 0x19, 0x51, 0x19, 0x31, 0x19, 0x51, 0x06, 0x19, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x87, 0x19, 0x11, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x33, 0x11, 0x53, 0x11, 0x33, 0x02, 0x19, 0x54, 0x04, 0x19, 0x74, 0x80, 0x19, 0x94, 0x02, 0x19, 0x74, 0x80, 0x19, 0x94, 0x01, 0x19, 0x74, 0x82, 0x11, 0x74, 0x19, 0x74, 0x11, 0x74, 0x01, 0x19, 0x74, 0x83, 0x11, 0x74, 0x19, 0x75, 0x19, 0x95, 0x19, 0x74, 0x01, 0x11, 0x53, 0x86, 0x11, 0x33, 0x11, 0x32, 0x19, 0x53, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x01, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, + 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x0A, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x89, 0x29, 0x2F, 0x21, 0x0E, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x83, 0x19, 0x32, 0x19, 0x33, 0x19, 0x74, 0x21, 0xF6, 0x01, 0x21, 0xF7, 0x83, 0x19, 0x95, 0x11, 0x53, 0x11, 0x12, 0x19, 0x11, 0x01, 0x19, 0x31, 0x83, 0x19, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x10, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, + 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x0D, 0x29, 0x0F, 0x8B, 0x30, 0xCE, 0x38, 0x4C, 0xA2, 0x94, 0xB2, 0x52, 0xB2, 0x11, 0xB1, 0xF1, 0xB1, 0xD0, 0xA1, 0xCC, 0xFD, 0x35, 0xFD, 0x93, 0xFD, 0xB2, 0xFD, 0x91, 0x01, 0xFD, 0x50, 0x01, 0xFD, 0x4F, 0x01, 0xFD, 0x8F, 0x8C, 0xFD, 0x90, 0xFD, 0x91, 0xFD, 0x92, 0xFD, 0x73, 0xF5, 0x13, 0xCB, 0xD1, 0x91, 0xEC, 0x92, 0x0E, 0xAA, 0xD2, 0xC3, 0x74, 0xD3, 0xF6, 0xE4, 0x58, 0xE4, 0x78, 0x01, 0xDC, 0x37, 0x82, 0xDC, 0x57, 0xDC, 0x36, 0xE4, 0x57, 0x02, 0xDC, 0x36, 0x86, 0xE4, 0x56, 0xE4, 0x35, 0xE4, 0x34, 0xE4, 0x73, 0xFD, 0x34, 0xFD, 0x73, 0xFD, 0x91, 0x02, 0xFD, 0x70, 0x80, 0xFD, 0x4F, 0x06, 0xFD, 0x70, 0x80, 0xFD, 0x6F, 0x02, 0xFD, 0x70, 0x89, 0xFD, 0x91, 0xFD, 0x92, 0xFD, 0x93, 0xEC, 0xF3, 0xBB, 0x4F, 0x92, 0x4D, 0x9A, 0x6F, 0xB3, 0x13, 0xC3, 0xB5, 0xDC, 0x37, 0x01, 0xE4, 0x58, 0x01, 0xE4, 0x37, 0x01, 0xDC, 0x37, 0x02, 0xE4, 0x37, 0x86, 0xE4, 0x36, 0xE4, 0x56, 0xE4, 0x35, 0xE4, 0x54, 0xEC, 0xD3, 0xFD, 0x53, 0xFD, 0x72, 0x01, 0xFD, 0x71, 0x02, 0xFD, 0x70, 0x01, 0xFD, 0x6F, 0x80, 0xFD, 0x4F, 0x02, 0xFD, 0x6F, 0x80, 0xFD, 0x4F, 0x02, 0xFD, 0x6F, 0x01, 0xFD, 0x70, 0x88, 0xFD, 0x91, 0xFD, 0x93, 0xEC, 0xD3, 0xC3, 0x6F, 0x9A, 0x4E, 0x9A, 0x4F, 0xBB, 0x33, 0xCB, 0xB5, 0xDC, 0x37, 0x01, 0xE4, 0x58, 0x83, 0xDC, 0x57, 0xE4, 0x57, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x02, + 0xDC, 0x56, 0x83, 0xE4, 0x76, 0xE4, 0x97, 0xEC, 0xD8, 0xBB, 0x32, 0x01, 0x92, 0x0F, 0x81, 0xA2, 0x71, 0xCB, 0xB6, 0x01, 0xE4, 0x58, 0x83, 0xE4, 0x78, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0x02, 0xDC, 0x37, 0x03, 0xE4, 0x57, 0x01, 0xE4, 0x36, 0x87, 0xE4, 0x35, 0xE4, 0x55, 0xEC, 0x95, 0xF4, 0xD5, 0xF4, 0xF4, 0xFD, 0x13, 0xFD, 0x33, 0xFD, 0x53, 0x02, 0xFD, 0x52, 0x03, 0xFD, 0x51, 0x80, 0xFD, 0x71, 0x03, 0xFD, 0x72, 0x87, 0xFD, 0x73, 0xFD, 0x94, 0xFD, 0xB7, 0x89, 0xEC, 0x92, 0x0E, 0x91, 0xEF, 0xB2, 0xF3, 0xE4, 0x79, 0x01, 0xE4, 0x58, 0x80, 0xDC, 0x38, 0x01, 0xE4, 0x38, 0x84, 0xE4, 0x58, 0xE4, 0x37, 0xE4, 0x57, 0xE4, 0x37, 0xE4, 0x57, 0x01, 0xE4, 0x36, 0x83, 0xE4, 0x35, 0xE4, 0x54, 0xF5, 0x16, 0xFD, 0x55, 0x03, 0xFD, 0x54, 0x88, 0xFD, 0x75, 0xFD, 0x76, 0xDC, 0x53, 0x92, 0x0D, 0x92, 0x0F, 0x9A, 0x50, 0xBB, 0x33, 0xD4, 0x16, 0xDC, 0x37, 0x03, 0xE4, 0x57, 0x81, 0xDC, 0x37, 0xE4, 0x37, 0x01, 0xDC, 0x36, 0x89, 0xE4, 0x36, 0xE4, 0x56, 0xE4, 0x35, 0xE4, 0x54, 0xE4, 0x93, 0xF5, 0x34, 0xFD, 0x73, 0xF5, 0x72, 0xFD, 0x51, 0xFD, 0x71, 0x03, 0xFD, 0x70, 0x0D, 0xFD, 0x6F, 0x82, 0xFD, 0x4F, 0xFD, 0x6F, 0xFD, 0x4F, 0x04, 0xFD, 0x6F, 0x01, 0xFD, 0x90, 0x8C, 0xFD, 0x91, 0xFD, 0x92, 0xFD, 0x73, 0xC3, 0xD0, 0x81, 0xCB, 0x89, 0xCD, 0x9A, 0x70, 0xBB, 0x34, 0xD3, 0xF7, 0xE4, 0x58, 0xE4, 0x78, 0xDC, 0x38, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x89, 0xDC, 0x37, 0xDC, 0x57, 0xE4, 0x56, 0xDC, 0x36, 0xDC, 0x35, 0xE4, 0x55, 0xEC, 0x94, 0xF5, + 0x14, 0xFD, 0x54, 0xFD, 0x74, 0x02, 0xFD, 0x73, 0x89, 0xFD, 0x74, 0xFD, 0x76, 0xF5, 0x16, 0xB3, 0x10, 0x9A, 0x4F, 0x9A, 0x50, 0xB2, 0xF2, 0xCB, 0x95, 0xDC, 0x37, 0xE4, 0x58, 0x02, 0xE4, 0x57, 0x83, 0xE4, 0x37, 0xE4, 0x57, 0xE4, 0x36, 0xE4, 0x57, 0x01, 0xE4, 0x36, 0x01, 0xE4, 0x56, 0x82, 0xE4, 0x75, 0xF4, 0xF5, 0xFD, 0x35, 0x01, 0xFD, 0x74, 0x01, 0xFD, 0x94, 0x8C, 0xFD, 0x95, 0xFD, 0x75, 0xF4, 0xF6, 0xAA, 0xAE, 0x92, 0x0E, 0x92, 0x0F, 0xA2, 0xB1, 0xCB, 0xB6, 0xDC, 0x37, 0xE4, 0x58, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x88, 0xDC, 0x37, 0xDC, 0x56, 0xE4, 0x56, 0xE4, 0x35, 0xE4, 0x54, 0xE4, 0x73, 0xF5, 0x14, 0xFD, 0x73, 0xFD, 0x72, 0x02, 0xFD, 0x71, 0x01, 0xFD, 0x70, 0x01, 0xFD, 0x50, 0x01, 0xFD, 0x70, 0x80, 0xFD, 0x90, 0x01, 0xFD, 0x91, 0x89, 0xFD, 0xB2, 0xFD, 0xB4, 0xD4, 0x12, 0xA2, 0x8E, 0x92, 0x0D, 0x9A, 0x4F, 0xCB, 0x95, 0xDC, 0x17, 0xE4, 0x58, 0xDC, 0x38, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x37, 0x03, 0xE4, 0x57, 0x87, 0xE4, 0x56, 0xDC, 0x36, 0xDC, 0x35, 0xE4, 0x34, 0xDC, 0x33, 0xF5, 0x34, 0xFD, 0x53, 0xF5, 0x52, 0x03, 0xFD, 0x72, 0x04, 0xFD, 0x92, 0x80, 0xFD, 0x93, 0x01, 0xFD, 0xB3, 0x8F, 0xFD, 0xB4, 0xFD, 0xB5, 0xFD, 0x77, 0xA2, 0x10, 0xA1, 0xD2, 0xAA, 0x14, 0xAA, 0x36, 0xA2, 0x78, 0x8A, 0x5A, 0x41, 0x38, 0x29, 0x1A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x7D, 0x09, 0x9E, 0x01, 0x9E, 0x05, 0x01, 0x9F, 0x02, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x02, 0x01, 0xBF, 0x01, 0x01, 0x9E, 0x94, 0x01, 0x9D, + 0x01, 0xBD, 0x01, 0xFB, 0x02, 0x7A, 0x1C, 0x3C, 0x56, 0x9F, 0x46, 0xFD, 0x1E, 0xB6, 0x16, 0xF4, 0x0F, 0x13, 0x17, 0x33, 0x1F, 0x55, 0x2F, 0x17, 0x46, 0xD8, 0x76, 0xBB, 0x74, 0xB8, 0x62, 0xB3, 0x7A, 0xB5, 0x82, 0x75, 0x82, 0x35, 0x79, 0xF5, 0x01, 0x69, 0x94, 0x84, 0x61, 0x94, 0x59, 0xB4, 0x51, 0x93, 0x51, 0xB3, 0x49, 0x93, 0x01, 0x41, 0x72, 0x04, 0x41, 0x92, 0x01, 0x39, 0x51, 0x82, 0x31, 0x30, 0x31, 0x50, 0x31, 0x51, 0x02, 0x31, 0x30, 0x02, 0x31, 0x50, 0x01, 0x29, 0x30, 0x82, 0x29, 0x50, 0x29, 0x2F, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x09, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x0F, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x83, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0xB5, 0x01, 0x19, 0xD6, 0x82, 0x11, 0x94, 0x11, 0x11, 0x19, 0x31, 0x01, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x89, 0x19, 0x31, 0x19, 0x32, 0x09, 0x12, 0x19, 0xB5, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x94, 0x11, 0x32, 0x11, 0x11, 0x19, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x52, 0x11, 0x73, 0x11, 0x95, 0x11, 0xB6, + 0x19, 0xF7, 0x11, 0xD7, 0x11, 0xB6, 0x09, 0x76, 0x02, 0x09, 0x75, 0x80, 0x11, 0xB6, 0x01, 0x19, 0xF7, 0x86, 0x11, 0xB6, 0x11, 0x95, 0x11, 0x33, 0x11, 0x12, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x03, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x10, 0x81, 0x21, 0x31, 0x21, 0x30, 0x09, 0x21, 0x31, 0x02, 0x21, 0x30, 0x04, 0x21, 0x10, 0x8D, 0x18, 0xF1, 0x10, 0xF1, 0x11, 0x12, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x21, 0xF6, 0x22, 0x17, 0x21, 0xF6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x11, 0x19, 0x11, 0x19, 0x31, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x90, 0x19, 0x11, 0x11, 0x32, 0x19, 0x74, 0x19, 0x95, 0x19, 0xD7, 0x11, 0xD7, 0x09, 0xF8, 0x09, 0xD8, 0x09, 0xF9, 0x09, 0xD9, 0x09, 0xB8, 0x11, 0xD8, 0x11, 0xD7, 0x11, 0x96, 0x11, 0x54, 0x11, 0x33, 0x11, 0x52, 0x02, 0x19, 0x31, 0x81, 0x19, 0x10, 0x19, 0x31, 0x02, 0x19, 0x30, 0x81, 0x19, 0x10, 0x21, 0x30, 0x01, 0x19, 0x10, 0x01, 0x21, 0x31, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x12, 0x04, 0x11, 0x12, 0x81, 0x19, 0x32, 0x11, 0x11, 0x05, 0x11, 0x12, 0x80, 0x11, 0x32, + 0x01, 0x11, 0x33, 0x01, 0x11, 0x32, 0x86, 0x11, 0x33, 0x11, 0x53, 0x11, 0x33, 0x11, 0x32, 0x11, 0x33, 0x11, 0x32, 0x11, 0x12, 0x02, 0x11, 0x11, 0x80, 0x19, 0x52, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x30, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x28, 0xEF, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0C, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x84, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x8C, 0x21, 0x10, 0x19, 0x11, 0x19, 0x31, 0x19, 0x52, 0x11, 0x33, 0x11, 0x54, 0x21, 0xF6, 0x22, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x32, + 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x20, 0xEF, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x8C, 0x28, 0xEF, 0x30, 0xCE, 0x38, 0x4C, 0xA2, 0x94, 0xB2, 0x52, 0xB2, 0x12, 0xBA, 0x11, 0xB1, 0xF0, 0xA1, 0xCD, 0xFD, 0x55, 0xFD, 0xB4, 0xFD, 0xD3, 0xFD, 0xB1, 0x01, 0xFD, 0x70, 0x01, 0xFD, 0x6F, 0x80, 0xFD, 0x8F, 0x01, 0xFD, 0xB0, 0x8B, 0xFD, 0xB1, 0xFD, 0xB2, 0xFD, 0xB4, 0xFD, 0x54, 0xD4, 0x11, 0x89, 0xEC, 0x92, 0x0E, 0xAA, 0xB1, 0xBB, 0x54, 0xCB, 0xF6, 0xDC, 0x58, 0xE4, 0x78, 0x02, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x88, 0xE4, 0x56, 0xE4, 0x36, 0xE4, 0x35, 0xE4, 0x34, 0xE4, 0x73, 0xFD, 0x54, 0xFD, 0x93, 0xFD, 0x91, 0xFD, 0x71, 0x01, 0xFD, 0x70, 0x01, 0xFD, 0x6F, 0x81, 0xFD, 0x70, 0xFD, 0x6F, 0x03, 0xFD, 0x70, 0x80, 0xFD, + 0x6F, 0x01, 0xFD, 0x70, 0x80, 0xFD, 0x90, 0x01, 0xFD, 0x91, 0x87, 0xFD, 0x93, 0xEC, 0xF3, 0xB3, 0x4E, 0x92, 0x4D, 0x9A, 0x4F, 0xAA, 0xF2, 0xC3, 0x95, 0xD4, 0x37, 0x01, 0xE4, 0x58, 0x03, 0xDC, 0x37, 0x81, 0xE4, 0x57, 0xE4, 0x37, 0x02, 0xE4, 0x36, 0x84, 0xE4, 0x35, 0xE4, 0x53, 0xF4, 0xF3, 0xFD, 0x73, 0xFD, 0x72, 0x01, 0xFD, 0x71, 0x03, 0xFD, 0x70, 0x01, 0xFD, 0x6F, 0x80, 0xFD, 0x8F, 0x04, 0xFD, 0x6F, 0x8D, 0xFD, 0x8F, 0xFD, 0x70, 0xFD, 0x90, 0xFD, 0x91, 0xFD, 0x93, 0xEC, 0xD3, 0xBB, 0x70, 0x9A, 0x4D, 0x9A, 0x4F, 0xBB, 0x33, 0xCB, 0xB5, 0xDC, 0x37, 0xE4, 0x78, 0xE4, 0x58, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x03, 0xDC, 0x56, 0x88, 0xE4, 0x76, 0xEC, 0xB7, 0xF5, 0x39, 0xE4, 0x97, 0x92, 0x4F, 0x92, 0x2F, 0x9A, 0x2F, 0xBB, 0x33, 0xDC, 0x17, 0x01, 0xE4, 0x58, 0x01, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x05, 0xE4, 0x57, 0x01, 0xDC, 0x36, 0x01, 0xE4, 0x35, 0x83, 0xE4, 0x54, 0xEC, 0x94, 0xFD, 0x15, 0xFD, 0x14, 0x01, 0xFD, 0x33, 0x80, 0xFD, 0x53, 0x03, 0xFD, 0x52, 0x04, 0xFD, 0x72, 0x80, 0xFD, 0x73, 0x01, 0xFD, 0x94, 0x81, 0xFD, 0xB7, 0x89, 0xEC, 0x01, 0x91, 0xEF, 0x85, 0xB3, 0x13, 0xE4, 0x79, 0xE4, 0x78, 0xE4, 0x58, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x86, 0xE4, 0x36, 0xDC, 0x36, 0xDC, 0x35, 0xE4, 0x54, 0xFD, 0x16, 0xFD, 0x55, 0xFD, 0x75, 0x02, 0xFD, 0x74, 0x88, 0xFD, 0x75, 0xFD, 0x76, 0xDC, 0x54, 0x92, 0x0D, 0x9A, 0x2F, 0xA2, 0x50, 0xC3, 0x54, 0xDC, 0x17, 0xDC, 0x37, 0x04, + 0xE4, 0x57, 0x02, 0xDC, 0x36, 0x87, 0xE4, 0x36, 0xE4, 0x56, 0xE4, 0x35, 0xE4, 0x34, 0xE4, 0x93, 0xFD, 0x34, 0xFD, 0x73, 0xFD, 0x72, 0x01, 0xFD, 0x71, 0x81, 0xFD, 0x90, 0xFD, 0x70, 0x01, 0xFD, 0x90, 0x0B, 0xFD, 0x6F, 0x80, 0xFD, 0x8F, 0x06, 0xFD, 0x6F, 0x01, 0xFD, 0x8F, 0x8D, 0xFD, 0x90, 0xFD, 0xB0, 0xFD, 0x91, 0xFD, 0x92, 0xFD, 0x73, 0xCC, 0x10, 0x81, 0xAB, 0x89, 0xCD, 0x9A, 0x30, 0xB3, 0x13, 0xD3, 0xF7, 0xE4, 0x78, 0xE4, 0x79, 0xE4, 0x58, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x85, 0xE4, 0x36, 0xE4, 0x55, 0xEC, 0x75, 0xF4, 0xD4, 0xF5, 0x14, 0xFD, 0x54, 0x01, 0xFD, 0x74, 0x8A, 0xFD, 0x94, 0xFD, 0x75, 0xFD, 0x76, 0xEC, 0xF6, 0xB3, 0x10, 0x9A, 0x4F, 0x9A, 0x30, 0xB2, 0xD2, 0xCB, 0xB5, 0xDC, 0x37, 0xE4, 0x58, 0x02, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x01, 0xE4, 0x36, 0x01, 0xE4, 0x56, 0x83, 0xE4, 0x75, 0xF4, 0xF5, 0xFD, 0x35, 0xFD, 0x75, 0x02, 0xFD, 0x74, 0x88, 0xFD, 0x75, 0xFD, 0x76, 0xF4, 0xF6, 0xAA, 0xAF, 0x92, 0x0E, 0x92, 0x0F, 0xAA, 0xB1, 0xD3, 0xF6, 0xDC, 0x37, 0x02, 0xE4, 0x57, 0x02, 0xE4, 0x37, 0x82, 0xE4, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xE4, 0x56, 0x85, 0xE4, 0x35, 0xE4, 0x54, 0xE4, 0x73, 0xF5, 0x33, 0xFD, 0x73, 0xFD, 0x72, 0x02, 0xFD, 0x71, 0x03, 0xFD, 0x70, 0x01, 0xFD, 0x90, 0x02, 0xFD, 0x91, 0x8C, 0xFD, 0xB2, 0xFD, 0xB5, 0xD4, 0x31, 0x9A, 0x6D, 0x92, 0x0D, 0x9A, 0x2F, 0xC3, 0x95, 0xDC, 0x17, 0xE4, 0x58, 0xDC, 0x38, 0xDC, 0x37, 0xDC, 0x57, + 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x82, 0xDC, 0x36, 0xE4, 0x57, 0xE4, 0x36, 0x01, 0xDC, 0x35, 0x82, 0xDC, 0x34, 0xDC, 0x32, 0xFD, 0x54, 0x01, 0xFD, 0x93, 0x08, 0xFD, 0x92, 0x02, 0xFD, 0xB3, 0x8F, 0xFD, 0xB4, 0xFD, 0xB5, 0xFD, 0x78, 0xA2, 0x10, 0xA1, 0xF2, 0xA1, 0xF4, 0xA2, 0x16, 0xA2, 0x58, 0x8A, 0x5A, 0x41, 0x18, 0x29, 0x1A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x7D, 0x09, 0x9E, 0x01, 0x9E, 0x05, 0x01, 0x9F, 0x06, 0x01, 0xBF, 0x80, 0x01, 0xBE, 0x01, 0x01, 0x9E, 0x88, 0x01, 0x9D, 0x01, 0xBC, 0x02, 0x1B, 0x02, 0x9A, 0x1C, 0x7D, 0x4E, 0x9F, 0x3F, 0x1D, 0x1E, 0xF7, 0x17, 0x14, 0x01, 0x0F, 0x13, 0x8F, 0x1F, 0x55, 0x2F, 0x17, 0x4E, 0xF9, 0x7E, 0xDC, 0x74, 0x77, 0x6A, 0xB4, 0x82, 0xB5, 0x82, 0x55, 0x79, 0xF5, 0x79, 0xD5, 0x69, 0x73, 0x61, 0x73, 0x59, 0x73, 0x59, 0x93, 0x51, 0xB4, 0x51, 0x93, 0x01, 0x49, 0x93, 0x01, 0x49, 0x92, 0x01, 0x39, 0x71, 0x81, 0x39, 0x72, 0x41, 0x92, 0x02, 0x39, 0x51, 0x80, 0x39, 0x71, 0x01, 0x31, 0x51, 0x81, 0x31, 0x50, 0x31, 0x30, 0x01, 0x31, 0x50, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x50, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, + 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x8A, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x19, 0x11, 0x19, 0x31, 0x11, 0x32, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xF7, 0x11, 0x94, 0x11, 0x11, 0x01, 0x19, 0x10, 0x80, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x89, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x10, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x8E, 0x19, 0x10, 0x19, 0x31, 0x11, 0x73, 0x11, 0x95, 0x11, 0xD6, 0x11, 0xD7, 0x11, 0xB7, 0x09, 0x76, 0x09, 0x75, 0x09, 0x55, 0x01, 0x34, 0x09, 0x54, 0x09, 0x75, 0x11, 0xB6, 0x11, 0xF7, 0x01, 0x11, 0xD7, 0x83, 0x11, 0x95, 0x11, 0x54, 0x09, 0x12, 0x08, 0xF1, 0x01, 0x11, 0x11, 0x1D, 0x19, 0x11, 0x80, 0x18, 0xF1, 0x01, 0x19, 0x11, 0x8B, 0x10, 0xF1, 0x19, 0x12, 0x10, 0xF2, 0x08, 0xF2, 0x09, 0x33, 0x11, 0x95, 0x22, 0x17, 0x22, 0x37, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, + 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x50, 0x21, 0x30, 0x21, 0x10, 0x01, 0x19, 0x10, 0x86, 0x11, 0x12, 0x11, 0x53, 0x19, 0x95, 0x19, 0xD6, 0x12, 0x17, 0x1A, 0x39, 0x1A, 0x19, 0x01, 0x1A, 0x18, 0x81, 0x19, 0xB7, 0x11, 0x75, 0x01, 0x11, 0x33, 0x86, 0x19, 0x32, 0x19, 0x31, 0x19, 0x10, 0x19, 0x30, 0x21, 0x30, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x02, 0x21, 0x31, 0x80, 0x19, 0x31, 0x01, 0x19, 0x11, 0x03, 0x19, 0x31, 0x06, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x02, 0x19, 0x12, 0x80, 0x19, 0x32, 0x02, 0x11, 0x32, 0x02, 0x19, 0x32, 0x80, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x51, 0x01, 0x19, 0x31, 0x82, 0x21, 0x51, 0x19, 0x10, 0x19, 0x30, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, + 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x08, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x0E, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x30, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x52, 0x8A, 0x19, 0x74, 0x21, 0xD6, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0x95, 0x19, 0x54, 0x11, 0x32, 0x19, 0x12, 0x19, 0x11, 0x19, 0x10, 0x19, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0E, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0E, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x05, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x8D, 0x28, 0xEE, 0x30, 0xCE, 0x38, + 0x4C, 0xA2, 0x94, 0xB2, 0x52, 0xB2, 0x11, 0xB1, 0xF1, 0xB1, 0xD0, 0xA1, 0xCD, 0xFD, 0x56, 0xFD, 0xD4, 0xFD, 0xD3, 0xFD, 0xB1, 0xFD, 0x90, 0x01, 0xFD, 0x6F, 0x80, 0xFD, 0x8F, 0x01, 0xFD, 0xAF, 0x01, 0xFD, 0xB0, 0x8A, 0xFD, 0xD2, 0xFD, 0xD4, 0xFD, 0x95, 0xD4, 0x12, 0x89, 0xEC, 0x91, 0xEE, 0xA2, 0xB1, 0xBB, 0x53, 0xCB, 0xF6, 0xDC, 0x57, 0xE4, 0x78, 0x02, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x02, 0xDC, 0x36, 0x86, 0xE4, 0x56, 0xE4, 0x35, 0xDC, 0x34, 0xE4, 0x73, 0xFD, 0x74, 0xFD, 0x93, 0xFD, 0x91, 0x01, 0xFD, 0x70, 0x04, 0xFD, 0x90, 0x01, 0xFD, 0x70, 0x82, 0xFD, 0x90, 0xFD, 0x70, 0xFD, 0x90, 0x02, 0xFD, 0x70, 0x8B, 0xFD, 0x90, 0xFD, 0x91, 0xFD, 0x93, 0xEC, 0xF3, 0xBB, 0x4F, 0x92, 0x4D, 0x92, 0x4F, 0xB3, 0x12, 0xC3, 0x95, 0xD4, 0x37, 0xE4, 0x78, 0xE4, 0x58, 0x03, 0xDC, 0x37, 0x02, 0xE4, 0x57, 0x01, 0xE4, 0x36, 0x85, 0xE4, 0x55, 0xE4, 0x53, 0xEC, 0xD3, 0xFD, 0x73, 0xFD, 0x72, 0xFD, 0x71, 0x02, 0xFD, 0x70, 0x82, 0xFD, 0x6F, 0xFD, 0x70, 0xFD, 0x6F, 0x06, 0xFD, 0x8F, 0x01, 0xFD, 0x90, 0x89, 0xFD, 0x91, 0xFD, 0xB1, 0xFD, 0x93, 0xEC, 0xD3, 0xC3, 0x90, 0x9A, 0x4E, 0x9A, 0x4F, 0xBB, 0x13, 0xCB, 0xB5, 0xDC, 0x37, 0x01, 0xE4, 0x58, 0x01, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x36, 0x03, 0xDC, 0x56, 0x8A, 0xDC, 0x76, 0xE4, 0xB7, 0xF5, 0x58, 0xFD, 0x79, 0xBB, 0x72, 0x92, 0x4F, 0x92, 0x2F, 0xA2, 0xB1, 0xCB, 0xD6, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x83, 0xDC, 0x37, 0xDC, 0x57, 0xE4, 0x57, 0xDC, 0x37, 0x03, 0xE4, 0x57, 0x04, 0xDC, + 0x36, 0x85, 0xDC, 0x35, 0xE4, 0x54, 0xE4, 0x94, 0xF4, 0xD4, 0xFD, 0x35, 0xFD, 0x34, 0x01, 0xFD, 0x54, 0x04, 0xFD, 0x53, 0x03, 0xFD, 0x73, 0x83, 0xFD, 0x74, 0xFD, 0x95, 0xFD, 0xB8, 0x89, 0xEC, 0x01, 0x91, 0xEF, 0x81, 0xB3, 0x13, 0xE4, 0x78, 0x01, 0xE4, 0x58, 0x80, 0xE4, 0x57, 0x03, 0xDC, 0x57, 0x80, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x85, 0xE4, 0x57, 0xDC, 0x36, 0xDC, 0x35, 0xDC, 0x55, 0xF5, 0x16, 0xFD, 0x56, 0x03, 0xFD, 0x75, 0x89, 0xFD, 0x55, 0xFD, 0x56, 0xDC, 0x54, 0x9A, 0x0D, 0x9A, 0x4F, 0xA2, 0x70, 0xC3, 0x74, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x37, 0x02, 0xE4, 0x57, 0x02, 0xDC, 0x36, 0x01, 0xE4, 0x36, 0x87, 0xE4, 0x56, 0xE4, 0x35, 0xE4, 0x33, 0xE4, 0x72, 0xFD, 0x54, 0xFD, 0x93, 0xFD, 0x92, 0xFD, 0x91, 0x01, 0xFD, 0x70, 0x81, 0xFD, 0x6F, 0xFD, 0x90, 0x01, 0xFD, 0x8F, 0x01, 0xFD, 0x6F, 0x02, 0xFD, 0x8F, 0x80, 0xFD, 0x6F, 0x0B, 0xFD, 0x8F, 0x80, 0xFD, 0x6F, 0x01, 0xFD, 0x8F, 0x02, 0xFD, 0x90, 0x87, 0xFD, 0x91, 0xFD, 0x73, 0xE4, 0x92, 0x89, 0xCB, 0x89, 0xEE, 0x9A, 0x50, 0xB2, 0xF3, 0xD3, 0xF7, 0x01, 0xE4, 0x78, 0x01, 0xE4, 0x58, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x87, 0xE4, 0x36, 0xE4, 0x35, 0xE4, 0x55, 0xF4, 0xD5, 0xF4, 0xF5, 0xFD, 0x35, 0xFD, 0x75, 0xFD, 0x74, 0x01, 0xFD, 0x95, 0x88, 0xFD, 0x96, 0xF4, 0xF6, 0xB3, 0x10, 0x9A, 0x4F, 0x9A, 0x30, 0xB2, 0xD2, 0xCB, 0x95, 0xDC, 0x37, 0xE4, 0x78, 0x03, 0xE4, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x80, 0xE4, 0x57, 0x01, 0xE4, + 0x36, 0x83, 0xE4, 0x56, 0xE4, 0x35, 0xF4, 0xD5, 0xFD, 0x36, 0x01, 0xFD, 0x55, 0x02, 0xFD, 0x75, 0x89, 0xFD, 0x76, 0xF4, 0xF6, 0xA2, 0x8E, 0x92, 0x0E, 0x92, 0x0F, 0xAA, 0xB1, 0xD4, 0x16, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0x03, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, 0x56, 0x86, 0xE4, 0x56, 0xDC, 0x55, 0xE4, 0x54, 0xE4, 0x93, 0xFD, 0x33, 0xFD, 0x93, 0xFD, 0x92, 0x01, 0xFD, 0x91, 0x80, 0xFD, 0x71, 0x01, 0xFD, 0x70, 0x04, 0xFD, 0x90, 0x01, 0xFD, 0x91, 0x88, 0xFD, 0xB2, 0xFD, 0xD5, 0xCC, 0x11, 0x9A, 0x6D, 0x92, 0x0D, 0x9A, 0x2F, 0xC3, 0x94, 0xD4, 0x17, 0xDC, 0x38, 0x03, 0xDC, 0x37, 0x84, 0xDC, 0x57, 0xDC, 0x37, 0xE4, 0x37, 0xE4, 0x57, 0xE4, 0x36, 0x01, 0xDC, 0x35, 0x82, 0xDC, 0x34, 0xDC, 0x33, 0xF5, 0x54, 0x03, 0xFD, 0xB3, 0x80, 0xFD, 0x92, 0x02, 0xFD, 0xB2, 0x80, 0xFD, 0x92, 0x01, 0xFD, 0xB2, 0x02, 0xFD, 0xB3, 0x8D, 0xFD, 0xB4, 0xFD, 0xB5, 0xFD, 0x78, 0xA2, 0x10, 0xA1, 0xF2, 0xA1, 0xF4, 0xA2, 0x16, 0xA2, 0x78, 0x8A, 0x5A, 0x41, 0x38, 0x29, 0x1A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x9E, 0x01, 0x09, 0x9E, 0x08, 0x01, 0x9F, 0x03, 0x01, 0xBF, 0x80, 0x01, 0xBE, 0x01, 0x01, 0x9E, 0x88, 0x01, 0x9D, 0x01, 0xBC, 0x02, 0x3B, 0x02, 0xBA, 0x1C, 0x9D, 0x46, 0xBF, 0x37, 0x1D, 0x16, 0xF6, 0x0F, 0x34, 0x01, 0x0F, 0x33, 0x90, 0x27, 0x76, 0x2F, 0x17, 0x4E, 0xD9, 0x7E, 0xBC, 0x6B, 0xF5, 0x72, 0x94, 0x82, 0x75, 0x8A, 0x55, 0x82, 0x15, 0x79, 0xD4, 0x61, 0x73, 0x61, 0x94, 0x59, 0x73, 0x59, 0x93, 0x51, 0xB3, 0x51, 0x93, 0x49, 0xB3, 0x01, 0x49, + 0x93, 0x81, 0x41, 0x92, 0x39, 0x51, 0x01, 0x39, 0x71, 0x82, 0x41, 0x72, 0x39, 0x51, 0x39, 0x71, 0x01, 0x39, 0x51, 0x81, 0x39, 0x71, 0x31, 0x50, 0x01, 0x31, 0x30, 0x01, 0x31, 0x50, 0x03, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x06, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x89, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x19, 0x95, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8D, 0x21, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0xB5, 0x11, 0x32, 0x11, 0x11, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x53, 0x11, 0x95, 0x01, 0x11, 0xD7, 0x88, 0x09, 0x76, 0x09, 0x75, 0x09, 0x55, 0x01, 0x34, 0x09, 0x34, 0x01, 0x34, 0x09, 0x55, 0x01, 0x55, 0x09, 0x96, 0x01, 0x11, + 0xD7, 0x83, 0x19, 0xF7, 0x19, 0xB6, 0x11, 0x54, 0x09, 0x13, 0x01, 0x11, 0x33, 0x83, 0x11, 0x32, 0x11, 0x33, 0x11, 0x12, 0x11, 0x32, 0x17, 0x11, 0x12, 0x80, 0x10, 0xF1, 0x02, 0x11, 0x12, 0x85, 0x11, 0x32, 0x11, 0x12, 0x09, 0x12, 0x09, 0x13, 0x09, 0x33, 0x11, 0x95, 0x01, 0x22, 0x17, 0x83, 0x21, 0xF6, 0x19, 0x94, 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x21, 0x30, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8C, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x94, 0x11, 0xB5, 0x19, 0xD6, 0x11, 0xB5, 0x19, 0xB5, 0x11, 0x75, 0x11, 0x54, 0x11, 0x33, 0x11, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x10, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x21, 0x31, 0x80, 0x19, 0x31, 0x04, 0x21, 0x31, 0x80, 0x19, 0x10, 0x01, 0x19, 0x31, 0x84, 0x21, 0x31, 0x19, 0x11, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x01, 0x19, 0x11, 0x04, 0x19, 0x31, 0x01, 0x21, 0x31, 0x01, 0x19, 0x30, 0x01, + 0x19, 0x31, 0x80, 0x21, 0x31, 0x05, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x19, 0x11, 0x01, 0x19, 0x32, 0x87, 0x11, 0x32, 0x19, 0x74, 0x21, 0xF6, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x95, 0x19, 0x53, 0x19, 0x32, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, + 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x06, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x28, 0xEF, 0x30, 0xCE, 0x38, 0x4C, 0xA2, 0x73, 0xB2, 0x52, 0x01, 0xB2, 0x11, 0x85, 0xB1, 0xF0, 0xAA, 0x0D, 0xFD, 0x76, 0xFD, 0xD4, 0xFD, 0xF3, 0xFD, 0xD1, 0x01, 0xFD, 0x90, 0x83, 0xFD, 0x8F, 0xFD, 0xAF, 0xFD, 0xB0, 0xFD, 0xAF, 0x01, 0xFD, 0xB0, 0x8A, 0xFD, 0xD2, 0xFD, 0xD4, 0xFD, 0xB5, 0xD4, 0x31, 0x89, 0xEC, 0x92, 0x0E, 0xA2, 0x91, 0xBB, 0x33, 0xCB, 0xF6, 0xDC, 0x57, 0xE4, 0x78, 0x03, 0xDC, 0x57, 0x8C, 0xE4, 0x57, 0xDC, 0x36, 0xE4, 0x36, 0xDC, 0x36, 0xE4, 0x56, 0xE4, 0x35, 0xDC, 0x54, 0xE4, 0x72, 0xFD, 0x74, 0xFD, 0xD3, 0xFD, 0xB2, 0xFD, 0x91, 0xFD, 0x90, 0x03, 0xFD, 0xB0, 0x01, 0xFD, 0x90, 0x80, 0xFD, 0xB0, 0x04, 0xFD, 0x90, 0x8A, 0xFD, 0xB0, 0xFD, 0xB1, 0xFD, 0x91, 0xFD, 0xB3, 0xEC, 0xF3, 0xB3, 0x4E, 0x92, 0x4D, 0x92, 0x4F, 0xB3, 0x12, 0xC3, 0xB5, 0xDC, 0x37, 0x01, 0xE4, 0x78, 0x02, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xE4, + 0x56, 0x84, 0xE4, 0x55, 0xE4, 0x74, 0xEC, 0xF3, 0xFD, 0x93, 0xFD, 0x92, 0x01, 0xFD, 0x91, 0x02, 0xFD, 0x90, 0x04, 0xFD, 0x8F, 0x03, 0xFD, 0xAF, 0x01, 0xFD, 0xB0, 0x01, 0xFD, 0xB1, 0x87, 0xFD, 0xB3, 0xEC, 0xF3, 0xBB, 0x70, 0x9A, 0x4E, 0x9A, 0x4F, 0xB3, 0x13, 0xCB, 0xB5, 0xDC, 0x37, 0x01, 0xE4, 0x58, 0x01, 0xE4, 0x57, 0x83, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x36, 0xDC, 0x57, 0x02, 0xDC, 0x56, 0x8A, 0xDC, 0x76, 0xE4, 0xB6, 0xFD, 0x78, 0xFD, 0xB9, 0xDC, 0xB6, 0xA2, 0xAF, 0x92, 0x2E, 0x9A, 0x4F, 0xBB, 0x74, 0xD4, 0x17, 0xDC, 0x57, 0x01, 0xE4, 0x78, 0x03, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x56, 0x01, 0xDC, 0x36, 0x86, 0xDC, 0x35, 0xE4, 0x55, 0xDC, 0x34, 0xE4, 0x54, 0xEC, 0x94, 0xF4, 0xD5, 0xF4, 0xD4, 0x01, 0xFC, 0xF4, 0x81, 0xFD, 0x14, 0xFD, 0x13, 0x01, 0xF5, 0x13, 0x01, 0xF5, 0x33, 0x84, 0xF5, 0x53, 0xFD, 0x74, 0xFD, 0x75, 0xFD, 0xB8, 0x89, 0xCD, 0x01, 0x91, 0xEF, 0x81, 0xB3, 0x13, 0xE4, 0x79, 0x01, 0xE4, 0x58, 0x82, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x83, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x37, 0xE4, 0x36, 0x01, 0xE4, 0x56, 0x83, 0xE4, 0x55, 0xF4, 0xF7, 0xFD, 0x57, 0xFD, 0x76, 0x02, 0xFD, 0x75, 0x87, 0xFD, 0x55, 0xFD, 0x36, 0xE4, 0x54, 0x9A, 0x0D, 0x9A, 0x4F, 0xA2, 0x70, 0xCB, 0x95, 0xDC, 0x57, 0x04, 0xE4, 0x57, 0x01, 0xDC, 0x36, 0x03, 0xE4, 0x56, 0x86, 0xE4, 0x35, 0xDC, 0x33, 0xE4, 0x92, 0xFD, 0x54, 0xFD, 0xB3, 0xFD, 0xB2, 0xFD, 0x91, 0x03, 0xFD, + 0x90, 0x04, 0xFD, 0x8F, 0x80, 0xFD, 0xAF, 0x07, 0xFD, 0x8F, 0x80, 0xFD, 0xAF, 0x06, 0xFD, 0x8F, 0x01, 0xFD, 0xAF, 0x8D, 0xFD, 0xB0, 0xFD, 0xD1, 0xFD, 0xB1, 0xFD, 0xB3, 0xFD, 0x74, 0x92, 0x2B, 0x8A, 0x0D, 0x9A, 0x4F, 0xAA, 0xD2, 0xD3, 0xD6, 0xDC, 0x38, 0xE4, 0x58, 0xDC, 0x57, 0xE4, 0x58, 0x03, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x95, 0xDC, 0x36, 0xDC, 0x56, 0xDC, 0x36, 0xE4, 0x36, 0xE4, 0x35, 0xE4, 0x75, 0xEC, 0x95, 0xF4, 0xD5, 0xFD, 0x35, 0xFD, 0x75, 0xFD, 0x95, 0xFD, 0x96, 0xFD, 0x97, 0xF5, 0x17, 0xB3, 0x11, 0x9A, 0x4F, 0x9A, 0x30, 0xB2, 0xD2, 0xCB, 0xB5, 0xDC, 0x37, 0xE4, 0x78, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x81, 0xE4, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x80, 0xE4, 0x56, 0x01, 0xDC, 0x36, 0x83, 0xE4, 0x36, 0xE4, 0x35, 0xF4, 0xB6, 0xF4, 0xF6, 0x01, 0xF4, 0xF5, 0x01, 0xF5, 0x15, 0x87, 0xFD, 0x35, 0xFD, 0x37, 0xEC, 0xB6, 0xA2, 0x4E, 0x92, 0x0E, 0x92, 0x0F, 0xAA, 0xB1, 0xDC, 0x16, 0x02, 0xDC, 0x37, 0x80, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x82, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x86, 0xE4, 0x56, 0xDC, 0x55, 0xDC, 0x54, 0xE4, 0x93, 0xFD, 0x54, 0xFD, 0xB3, 0xFD, 0xB2, 0x02, 0xFD, 0x91, 0x02, 0xFD, 0x90, 0x03, 0xFD, 0xB0, 0x8C, 0xFD, 0x90, 0xFD, 0xB1, 0xFD, 0xD2, 0xFD, 0xD5, 0xD4, 0x31, 0x9A, 0x6D, 0x92, 0x0D, 0x9A, 0x2F, 0xC3, 0x74, 0xD4, 0x16, 0xDC, 0x58, 0xE4, 0x58, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x8B, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0xE4, 0x36, 0xE4, 0x56, 0xE4, 0x36, 0xE4, 0x35, 0xDC, 0x34, 0xDC, 0x53, + 0xF5, 0x74, 0xFD, 0xD4, 0xFD, 0xD3, 0x02, 0xFD, 0xB3, 0x03, 0xFD, 0xB2, 0x03, 0xFD, 0xD3, 0x8E, 0xFD, 0xB3, 0xFD, 0xD4, 0xFD, 0xD5, 0xFD, 0x98, 0x9A, 0x10, 0xA1, 0xF2, 0xA1, 0xF4, 0xA2, 0x36, 0xA2, 0x78, 0x8A, 0x5A, 0x41, 0x18, 0x29, 0x1A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x9E, 0x01, 0x09, 0x9E, 0x06, 0x01, 0x9F, 0x04, 0x01, 0xBF, 0x80, 0x01, 0x9E, 0x01, 0x01, 0xBE, 0x9A, 0x01, 0x9E, 0x01, 0xBD, 0x01, 0xDC, 0x02, 0x3B, 0x02, 0x9A, 0x1C, 0x7D, 0x46, 0xDF, 0x37, 0x1D, 0x16, 0xF6, 0x0F, 0x13, 0x0F, 0x33, 0x0F, 0x53, 0x1F, 0x76, 0x37, 0x58, 0x56, 0xFA, 0x7E, 0x9C, 0x63, 0x74, 0x72, 0x74, 0x82, 0x55, 0x81, 0xF4, 0x82, 0x15, 0x71, 0xB4, 0x69, 0x94, 0x61, 0x93, 0x59, 0x73, 0x51, 0x93, 0x51, 0xB3, 0x02, 0x49, 0x93, 0x85, 0x49, 0x92, 0x49, 0x93, 0x41, 0x92, 0x39, 0x72, 0x39, 0x51, 0x39, 0x72, 0x01, 0x39, 0x71, 0x81, 0x31, 0x50, 0x31, 0x51, 0x02, 0x31, 0x50, 0x82, 0x31, 0x30, 0x29, 0x30, 0x31, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x08, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, + 0x2F, 0x05, 0x21, 0x0F, 0x84, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x11, 0x12, 0x19, 0xB5, 0x01, 0x19, 0xD6, 0x95, 0x19, 0x75, 0x11, 0x11, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x32, 0x11, 0x12, 0x21, 0x31, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x85, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x88, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x31, 0x19, 0x52, 0x11, 0x74, 0x11, 0xB6, 0x19, 0xF7, 0x11, 0xB7, 0x01, 0x55, 0x02, 0x09, 0x55, 0x01, 0x09, 0x54, 0x8C, 0x09, 0x55, 0x09, 0x75, 0x09, 0x96, 0x09, 0xB7, 0x09, 0xD7, 0x11, 0xD8, 0x11, 0xF7, 0x11, 0xD7, 0x11, 0xB6, 0x11, 0x96, 0x11, 0xB6, 0x11, 0x96, 0x11, 0x95, 0x03, 0x11, 0x75, 0x80, 0x11, 0x55, 0x06, 0x11, 0x75, 0x82, 0x11, 0x55, 0x11, 0x75, 0x11, 0x55, 0x0A, 0x11, 0x75, 0x01, 0x11, 0x95, 0x80, 0x11, 0x74, 0x01, 0x11, 0x95, 0x8B, 0x19, 0xD6, 0x19, 0xF6, 0x22, 0x17, 0x22, 0x37, 0x22, 0x38, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x74, 0x19, 0x53, 0x11, 0x32, 0x19, 0x31, 0x19, 0x11, 0x02, 0x21, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, + 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x31, 0x01, 0x19, 0x31, 0x82, 0x11, 0x31, 0x11, 0x11, 0x11, 0x32, 0x01, 0x11, 0x12, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x19, 0x10, 0x19, 0x30, 0x02, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x50, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x07, 0x21, 0x30, 0x01, 0x21, 0x31, 0x83, 0x21, 0x30, 0x21, 0x31, 0x21, 0x30, 0x21, 0x31, 0x06, 0x21, 0x30, 0x03, 0x21, 0x31, 0x84, 0x21, 0x30, 0x19, 0x10, 0x21, 0x31, 0x19, 0x10, 0x21, 0x10, 0x03, 0x21, 0x30, 0x80, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x20, 0xEF, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x06, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x0F, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x05, + 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x31, 0x01, 0x19, 0x32, 0x81, 0x11, 0x33, 0x11, 0x74, 0x02, 0x21, 0xF6, 0x82, 0x21, 0x95, 0x19, 0x53, 0x19, 0x12, 0x01, 0x19, 0x11, 0x81, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x8A, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x09, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x08, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8B, 0x28, 0xEF, 0x30, 0xCE, 0x38, 0x6C, 0xA2, 0x94, 0xB2, 0x52, 0xB2, 0x32, 0xB2, 0x11, 0xB1, 0xF0, 0xA9, 0xED, 0xFD, 0x76, 0xFD, 0xD4, 0xFD, 0xF3, 0x01, 0xFD, 0xD1, 0x01, 0xFD, 0xB0, 0x01, 0xFD, 0xCF, 0x80, 0xFD, 0xAF, 0x01, 0xFD, 0xD0, 0x8A, 0xFD, 0xF2, 0xFD, 0xF4, 0xFD, 0xB5, 0xCC, 0x11, 0x89, 0xEC, 0x92, 0x0E, 0xA2, 0x90, 0xBB, 0x33, 0xD3, + 0xF6, 0xDC, 0x57, 0xE4, 0x78, 0x03, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x87, 0xE4, 0x36, 0xE4, 0x35, 0xE4, 0x54, 0xE4, 0x92, 0xFD, 0x94, 0xFD, 0xD3, 0xFD, 0xD2, 0xFD, 0xB1, 0x01, 0xFD, 0xB0, 0x01, 0xFD, 0xD0, 0x07, 0xFD, 0xB0, 0x01, 0xFD, 0xD0, 0x01, 0xFD, 0xD1, 0x87, 0xFD, 0xD3, 0xED, 0x13, 0xB3, 0x4E, 0x92, 0x4D, 0x9A, 0x4F, 0xB3, 0x12, 0xC3, 0xB5, 0xDC, 0x37, 0x01, 0xE4, 0x58, 0x80, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x80, 0xDC, 0x37, 0x01, 0xE4, 0x37, 0x80, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x84, 0xE4, 0x55, 0xE4, 0x74, 0xED, 0x13, 0xFD, 0xB3, 0xFD, 0xB2, 0x01, 0xFD, 0xB1, 0x03, 0xFD, 0xB0, 0x02, 0xFD, 0xAF, 0x80, 0xFD, 0xCF, 0x03, 0xFD, 0xAF, 0x01, 0xFD, 0xD0, 0x01, 0xFD, 0xD1, 0x89, 0xFD, 0xD3, 0xED, 0x13, 0xC3, 0x90, 0x9A, 0x4D, 0x9A, 0x4F, 0xB3, 0x12, 0xCB, 0xB5, 0xDC, 0x37, 0xE4, 0x58, 0xDC, 0x57, 0x02, 0xE4, 0x57, 0x82, 0xDC, 0x57, 0xE4, 0x57, 0xDC, 0x57, 0x02, 0xDC, 0x56, 0x8C, 0xDC, 0x76, 0xE4, 0x96, 0xF5, 0x78, 0xFD, 0xB8, 0xF5, 0x78, 0xB3, 0x71, 0x92, 0x4E, 0x92, 0x4F, 0xAA, 0xD1, 0xCB, 0xB5, 0xDC, 0x57, 0xE4, 0x78, 0xE4, 0x57, 0x01, 0xE4, 0x77, 0x01, 0xE4, 0x57, 0x06, 0xDC, 0x57, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x56, 0x87, 0xDC, 0x36, 0xE4, 0x56, 0xDC, 0x35, 0xDC, 0x55, 0xE4, 0x55, 0xE4, 0x54, 0xE4, 0x74, 0xEC, 0x74, 0x01, 0xEC, 0x94, 0x02, 0xEC, 0xB3, 0x81, 0xEC, 0xD3, 0xEC, 0xF3, 0x01, 0xED, 0x14, 0x82, 0xF5, 0x76, 0xFD, 0xB9, 0x89, 0xCD, 0x01, 0x91, 0xEF, 0x82, 0xB3, 0x13, 0xE4, 0x78, 0xE4, 0x58, + 0x01, 0xE4, 0x57, 0x82, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x80, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x02, 0xE4, 0x56, 0x84, 0xE4, 0x75, 0xE4, 0x95, 0xEC, 0xD5, 0xFD, 0x57, 0xFD, 0x76, 0x01, 0xFD, 0x56, 0x81, 0xFD, 0x36, 0xE4, 0x54, 0x01, 0xC3, 0x73, 0x81, 0xC3, 0x94, 0xD3, 0xF6, 0x01, 0xE4, 0x57, 0x84, 0xDC, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0xE4, 0x37, 0xDC, 0x36, 0x01, 0xDC, 0x56, 0x02, 0xE4, 0x56, 0x85, 0xDC, 0x35, 0xDC, 0x33, 0xE4, 0x92, 0xFD, 0x74, 0xFD, 0xB3, 0xFD, 0xD2, 0x01, 0xFD, 0xB1, 0x02, 0xFD, 0xB0, 0x80, 0xFD, 0x8F, 0x05, 0xFD, 0xAF, 0x80, 0xFD, 0xCF, 0x0F, 0xFD, 0xAF, 0x01, 0xFD, 0xD0, 0x8B, 0xFD, 0xD1, 0xFD, 0xD2, 0xFD, 0xD4, 0xB3, 0x4F, 0x8A, 0x0C, 0x92, 0x2E, 0xA2, 0x91, 0xCB, 0x95, 0xDC, 0x37, 0xE4, 0x58, 0xDC, 0x57, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xDC, 0x57, 0x02, 0xE4, 0x57, 0x9B, 0xDC, 0x57, 0xDC, 0x56, 0xDC, 0x36, 0xDC, 0x35, 0xE4, 0x35, 0xE4, 0x55, 0xE4, 0x74, 0xE4, 0x94, 0xF5, 0x15, 0xFD, 0x56, 0xFD, 0x97, 0xFD, 0x98, 0xF5, 0x18, 0xB3, 0x11, 0x9A, 0x50, 0x9A, 0x30, 0xB2, 0xD3, 0xCB, 0xB6, 0xDC, 0x37, 0xE4, 0x78, 0xE4, 0x57, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x36, 0xE4, 0x36, 0xE4, 0x56, 0x02, 0xDC, 0x36, 0x82, 0xE4, 0x35, 0xE4, 0x75, 0xE4, 0x55, 0x01, 0xE4, 0x54, 0x02, 0xE4, 0x74, 0x8A, 0xEC, 0xB5, 0xC3, 0x72, 0x91, 0xED, 0x89, 0xCD, 0x89, 0xCE, 0xAA, 0xB1, 0xDC, 0x36, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xDC, + 0x57, 0x81, 0xDC, 0x56, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x85, 0xDC, 0x55, 0xDC, 0x54, 0xE4, 0xB3, 0xFD, 0x54, 0xFD, 0xB3, 0xFD, 0xB2, 0x03, 0xFD, 0xB1, 0x02, 0xFD, 0xB0, 0x01, 0xFD, 0xD0, 0x02, 0xFD, 0xD1, 0x97, 0xFD, 0xD2, 0xFD, 0xF5, 0xD4, 0x52, 0x9A, 0x6D, 0x92, 0x0D, 0x92, 0x2E, 0xC3, 0x74, 0xD4, 0x16, 0xDC, 0x37, 0xDC, 0x57, 0xE4, 0x57, 0xDC, 0x57, 0xDC, 0x37, 0xDC, 0x57, 0xDC, 0x37, 0xE4, 0x36, 0xE4, 0x57, 0xE4, 0x56, 0xE4, 0x36, 0xE4, 0x35, 0xDC, 0x34, 0xDC, 0x53, 0xF5, 0x74, 0xFD, 0xD4, 0x01, 0xFD, 0xD3, 0x01, 0xFD, 0xB3, 0x80, 0xFD, 0xD3, 0x03, 0xFD, 0xD2, 0x81, 0xFD, 0xD3, 0xFD, 0xF3, 0x01, 0xFD, 0xF4, 0x8F, 0xFD, 0xD4, 0xFD, 0xF6, 0xFD, 0xB8, 0x9A, 0x10, 0xA1, 0xF2, 0xA2, 0x14, 0xA2, 0x36, 0xA2, 0x78, 0x82, 0x5A, 0x41, 0x18, 0x29, 0x1A, 0x19, 0x5C, 0x19, 0x7D, 0x11, 0x7E, 0x09, 0x9E, 0x01, 0x9E, 0x07, 0x01, 0x9F, 0x04, 0x01, 0xBF, 0x01, 0x01, 0xBE, 0x89, 0x01, 0x9E, 0x01, 0xBD, 0x01, 0xDC, 0x02, 0x3B, 0x02, 0xBA, 0x1C, 0x9D, 0x46, 0xDF, 0x37, 0x3D, 0x16, 0xF6, 0x0F, 0x54, 0x01, 0x0F, 0x53, 0x89, 0x1F, 0x56, 0x37, 0x37, 0x56, 0xFA, 0x7E, 0x5C, 0x5B, 0x13, 0x72, 0x54, 0x82, 0x14, 0x82, 0x15, 0x81, 0xF5, 0x71, 0xB4, 0x01, 0x61, 0x93, 0x82, 0x59, 0x93, 0x59, 0xB3, 0x51, 0x93, 0x01, 0x49, 0x92, 0x81, 0x49, 0x93, 0x41, 0x92, 0x02, 0x41, 0x72, 0x85, 0x39, 0x72, 0x39, 0x51, 0x39, 0x71, 0x39, 0x51, 0x31, 0x51, 0x39, 0x71, 0x02, 0x31, 0x50, 0x80, 0x31, 0x30, 0x03, 0x29, 0x30, 0x0D, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, + 0x2F, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x19, 0x11, 0x11, 0x12, 0x19, 0xB5, 0x01, 0x19, 0xD6, 0x83, 0x19, 0x75, 0x11, 0x11, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x8B, 0x21, 0x10, 0x21, 0x30, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x21, 0xD5, 0x22, 0x16, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x21, 0x31, 0x01, 0x21, 0x30, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0E, 0x8B, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x31, 0x19, 0x52, 0x11, 0x74, 0x19, 0xD6, 0x1A, 0x18, 0x11, 0xB7, 0x09, 0x75, 0x09, 0x55, 0x02, 0x09, 0x34, 0x83, 0x09, 0x54, 0x09, 0x55, 0x09, 0x75, 0x09, 0x76, 0x01, 0x09, 0xB7, 0x82, 0x09, 0xD7, 0x11, 0xD7, 0x11, 0xF8, 0x05, 0x1A, 0x18, 0x82, 0x22, 0x18, 0x1A, 0x18, 0x22, 0x38, 0x02, 0x22, 0x18, 0x80, 0x22, 0x38, 0x01, 0x22, 0x18, 0x01, 0x22, 0x38, 0x01, 0x22, 0x18, 0x01, 0x22, 0x39, 0x81, 0x22, 0x38, 0x22, 0x39, 0x01, 0x22, 0x38, 0x82, 0x22, 0x39, + 0x22, 0x59, 0x22, 0x38, 0x01, 0x22, 0x59, 0x82, 0x22, 0x79, 0x22, 0x58, 0x22, 0x59, 0x02, 0x22, 0x58, 0x80, 0x2A, 0x59, 0x01, 0x22, 0x58, 0x8A, 0x22, 0x37, 0x21, 0xF7, 0x19, 0xB5, 0x19, 0x74, 0x19, 0x53, 0x11, 0x32, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x04, 0x21, 0x30, 0x03, 0x19, 0x10, 0x80, 0x21, 0x30, 0x01, 0x19, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x19, 0x30, 0x12, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x12, 0x21, 0x30, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x09, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, + 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x31, 0x84, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x19, 0x74, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x82, 0x19, 0x95, 0x19, 0x53, 0x19, 0x12, 0x02, 0x19, 0x11, 0x81, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x88, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x06, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x07, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, + 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x12, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8B, 0x28, 0xEF, 0x30, 0xCE, 0x38, 0x4C, 0xA2, 0xB4, 0xB2, 0x52, 0xB2, 0x32, 0xB2, 0x31, 0xB1, 0xF0, 0xA1, 0xCD, 0xFD, 0x96, 0xFD, 0xF4, 0xFE, 0x13, 0x01, 0xFD, 0xF1, 0x80, 0xFD, 0xF0, 0x03, 0xFD, 0xCF, 0x8C, 0xFD, 0xF0, 0xFD, 0xF1, 0xFD, 0xF2, 0xFD, 0xF4, 0xFD, 0xD5, 0xCC, 0x11, 0x89, 0xEC, 0x92, 0x0E, 0xA2, 0x90, 0xB3, 0x12, 0xD3, 0xF6, 0xDC, 0x57, 0xE4, 0x78, 0x02, 0xDC, 0x57, 0x83, 0xE4, 0x57, 0xDC, 0x36, 0xDC, 0x56, 0xE4, 0x56, 0x01, 0xE4, 0x36, 0x86, 0xE4, 0x35, 0xDC, 0x54, 0xE4, 0x92, 0xFD, 0x94, 0xFD, 0xF3, 0xFD, 0xF2, 0xFD, 0xD1, 0x02, 0xFD, 0xD0, 0x80, 0xFD, 0xF0, 0x01, 0xFD, 0xD0, 0x01, 0xFD, 0xCF, 0x02, 0xFD, 0xD0, 0x82, 0xFD, 0xF0, 0xFD, 0xD0, 0xFD, 0xF0, 0x01, 0xFD, 0xF1, 0x8A, 0xFD, 0xF3, 0xED, 0x33, 0xBB, 0x6F, 0x92, 0x6D, 0x9A, 0x6F, 0xB3, 0x12, 0xC3, 0x95, 0xDC, 0x37, 0xE4, 0x78, 0xE4, 0x58, 0xE4, 0x57, 0x02, 0xE4, 0x37, 0x02, 0xE4, 0x57, 0x80, 0xE4, 0x36, 0x01, 0xE4, 0x55, 0x83, 0xE4, 0x73, 0xF5, 0x13, 0xFD, 0xB3, 0xFD, 0xD2, 0x01, 0xFD, 0xD1, 0x03, 0xFD, 0xD0, 0x80, 0xFD, 0xCF, 0x01, 0xFD, 0xD0, 0x03, 0xFD, 0xCF, 0x01, 0xFD, 0xF0, 0x80, 0xFE, 0x11, 0x01, 0xFD, 0xF1, 0x8A, 0xFD, 0xD3, 0xED, 0x13, 0xBB, 0x8F, 0x9A, 0x4D, 0x9A, 0x2E, 0xB2, 0xF2, 0xCB, 0xB5, 0xDC, 0x37, 0xE4, 0x78, 0xE4, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x57, 0x03, 0xDC, 0x56, 0x8A, 0xE4, 0x95, 0xFD, + 0x97, 0xFD, 0xD7, 0xFD, 0xF8, 0xE5, 0x15, 0x92, 0x6D, 0x92, 0x2E, 0x92, 0x4F, 0xB3, 0x12, 0xD4, 0x16, 0xDC, 0x57, 0x01, 0xE4, 0x78, 0x80, 0xE4, 0x77, 0x06, 0xDC, 0x57, 0x80, 0xE4, 0x57, 0x07, 0xDC, 0x56, 0x80, 0xE4, 0x56, 0x02, 0xE4, 0x55, 0x80, 0xE4, 0x54, 0x02, 0xE4, 0x74, 0x80, 0xDC, 0x74, 0x01, 0xE4, 0x94, 0x84, 0xE4, 0xB4, 0xEC, 0xD4, 0xF5, 0x36, 0xFD, 0x99, 0x91, 0xED, 0x01, 0x91, 0xEF, 0x81, 0xB3, 0x13, 0xE4, 0x78, 0x01, 0xE4, 0x58, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x01, 0xE4, 0x57, 0x02, 0xE4, 0x56, 0x80, 0xDC, 0x56, 0x01, 0xDC, 0x55, 0x83, 0xDC, 0x34, 0xD4, 0x14, 0xD4, 0x13, 0xDC, 0x34, 0x01, 0xE4, 0x55, 0x80, 0xE4, 0x77, 0x05, 0xE4, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x56, 0x04, 0xE4, 0x56, 0x85, 0xDC, 0x35, 0xDC, 0x53, 0xE4, 0x92, 0xFD, 0x94, 0xFD, 0xD3, 0xFD, 0xD2, 0x01, 0xFD, 0xD1, 0x03, 0xFD, 0xD0, 0x16, 0xFD, 0xCF, 0x01, 0xFD, 0xF0, 0x88, 0xFD, 0xF1, 0xFD, 0xF2, 0xFD, 0xF4, 0xDC, 0xB2, 0x92, 0x4C, 0x92, 0x2E, 0x9A, 0x4F, 0xBB, 0x53, 0xDC, 0x17, 0x02, 0xE4, 0x78, 0x80, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x02, 0xDC, 0x36, 0x81, 0xE4, 0x56, 0xDC, 0x35, 0x02, 0xE4, 0x55, 0x8C, 0xE4, 0x74, 0xE4, 0x95, 0xEC, 0xB6, 0xEC, 0xB7, 0xB3, 0x12, 0x9A, 0x50, 0x9A, 0x30, 0xB2, 0xD3, 0xCB, 0xD6, 0xDC, 0x37, 0xE4, 0x78, 0xE4, 0x57, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xE4, 0x57, 0x02, 0xE4, 0x36, 0x01, 0xDC, 0x36, 0x81, 0xE4, 0x56, 0xDC, 0x36, 0x05, + 0xDC, 0x55, 0x82, 0xE4, 0x55, 0xE4, 0x75, 0xEC, 0xB7, 0x01, 0xEC, 0xB8, 0x81, 0xEC, 0x98, 0xE4, 0x77, 0x02, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x83, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x57, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x85, 0xE4, 0x55, 0xE4, 0x74, 0xE4, 0xB3, 0xFD, 0x74, 0xFD, 0xB3, 0xFD, 0xD2, 0x03, 0xFD, 0xD1, 0x04, 0xFD, 0xD0, 0x02, 0xFD, 0xF1, 0x8B, 0xFD, 0xF2, 0xFD, 0xF5, 0xD4, 0x72, 0x9A, 0x6D, 0x92, 0x0D, 0x9A, 0x2F, 0xC3, 0x74, 0xDC, 0x17, 0xDC, 0x37, 0xDC, 0x57, 0xE4, 0x58, 0xDC, 0x57, 0x02, 0xDC, 0x37, 0x88, 0xE4, 0x57, 0xE4, 0x56, 0xDC, 0x36, 0xDC, 0x35, 0xE4, 0x55, 0xDC, 0x34, 0xDC, 0x73, 0xED, 0x33, 0xFD, 0xF4, 0x03, 0xFD, 0xD3, 0x01, 0xFD, 0xF3, 0x80, 0xFD, 0xD2, 0x02, 0xFD, 0xF3, 0x01, 0xFE, 0x13, 0x8F, 0xFE, 0x14, 0xFD, 0xF5, 0xFD, 0xF6, 0xFD, 0x98, 0x9A, 0x10, 0xA1, 0xF3, 0xA1, 0xF4, 0xA2, 0x36, 0x9A, 0x58, 0x82, 0x5A, 0x41, 0x18, 0x29, 0x1A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x9E, 0x09, 0x9E, 0x01, 0x01, 0x9E, 0x03, 0x01, 0x9F, 0x08, 0x01, 0xBF, 0x89, 0x01, 0xBE, 0x01, 0x9E, 0x01, 0xBD, 0x01, 0xDC, 0x02, 0x5B, 0x02, 0xDA, 0x14, 0x7C, 0x3E, 0xDF, 0x2F, 0x3D, 0x0E, 0xF6, 0x02, 0x0F, 0x53, 0x8A, 0x1F, 0x56, 0x37, 0x17, 0x5E, 0xFA, 0x7E, 0x3C, 0x52, 0xB2, 0x72, 0x33, 0x79, 0xF4, 0x82, 0x15, 0x79, 0xD4, 0x69, 0x93, 0x61, 0x93, 0x01, 0x59, 0x93, 0x01, 0x51, 0xB3, 0x02, 0x49, 0x93, 0x81, 0x49, 0x92, 0x41, 0x92, 0x01, 0x41, 0x72, 0x80, 0x39, 0x72, 0x04, 0x39, 0x51, 0x80, 0x31, 0x50, 0x01, 0x31, 0x30, + 0x02, 0x31, 0x50, 0x81, 0x29, 0x30, 0x31, 0x30, 0x0B, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x19, 0x31, 0x11, 0x32, 0x19, 0xB5, 0x01, 0x19, 0xD7, 0x83, 0x19, 0x95, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x02, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x86, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x21, 0xD5, 0x22, 0x17, 0x19, 0xD6, 0x11, 0x74, 0x01, 0x11, 0x12, 0x82, 0x19, 0x31, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8A, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x54, 0x19, 0xD6, 0x1A, 0x18, 0x11, 0xF7, 0x09, 0x96, 0x01, 0x55, 0x09, 0x35, 0x02, 0x09, 0x34, 0x82, 0x09, 0x54, 0x11, 0x96, 0x09, 0x97, 0x02, 0x11, 0xD8, 0x80, 0x11, 0xF8, 0x01, 0x19, 0xF8, 0x01, 0x22, 0x18, 0x01, 0x1A, 0x18, 0x82, 0x22, 0x18, 0x1A, 0x18, 0x19, 0xF8, 0x01, 0x22, 0x18, 0x81, 0x1A, 0x18, 0x22, 0x38, 0x05, 0x22, 0x18, 0x80, 0x21, 0xF8, 0x09, 0x22, 0x18, 0x03, 0x22, 0x38, 0x82, 0x22, 0x18, 0x19, 0xF7, 0x19, 0xD6, 0x01, 0x19, 0xB6, + 0x85, 0x11, 0x95, 0x11, 0x74, 0x19, 0x94, 0x19, 0x74, 0x19, 0x73, 0x19, 0x32, 0x01, 0x19, 0x11, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x07, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x11, 0x11, 0x01, 0x19, 0x31, 0x81, 0x21, 0x31, 0x21, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, + 0x80, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x51, 0x21, 0x31, 0x01, 0x19, 0x32, 0x82, 0x11, 0x33, 0x19, 0x74, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x82, 0x19, 0xB5, 0x19, 0x74, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x19, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x08, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, + 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x10, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8E, 0x28, 0xEF, 0x30, 0xCE, 0x38, 0x6C, 0xA2, 0x94, 0xB2, 0x53, 0xB2, 0x32, 0xB2, 0x11, 0xA9, 0xF0, 0xA1, 0xCD, 0xFD, 0x76, 0xFD, 0xF4, 0xFE, 0x13, 0xFD, 0xF1, 0xFE, 0x11, 0xFD, 0xF0, 0x03, 0xFD, 0xEF, 0x8C, 0xFD, 0xF0, 0xFE, 0x11, 0xFE, 0x12, 0xFE, 0x14, 0xFD, 0xF5, 0xCC, 0x11, 0x89, 0xEC, 0x92, 0x0E, 0xA2, 0x90, 0xB3, 0x12, 0xD3, 0xF6, 0xDC, 0x57, 0xE4, 0x78, 0x01, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x81, 0xDC, 0x57, 0xE4, 0x57, 0x02, 0xE4, 0x56, 0x87, 0xE4, 0x55, 0xE4, 0x54, 0xE4, 0x92, 0xFD, 0xB4, 0xFD, 0xF3, 0xFD, 0xF2, 0xFD, 0xD1, 0xFD, 0xF1, 0x03, 0xFD, 0xF0, 0x02, 0xFD, 0xEF, 0x80, 0xFD, 0xCF, 0x02, 0xFD, 0xEF, 0x02, 0xFD, 0xF0, 0x8D, 0xFE, 0x12, 0xFE, 0x13, 0xF5, 0x73, 0xBB, 0x8F, 0x92, 0x6D, 0x9A, 0x6F, 0xAA, 0xF2, 0xC3, 0x95, 0xDC, 0x37, 0xE4, 0x78, 0xE4, 0x58, 0xE4, 0x37, 0xE4, 0x57, 0xE4, 0x58, 0x01, 0xE4, 0x37, 0x82, 0xE4, 0x57, 0xE4, 0x36, 0xDC, 0x36, 0x01, 0xE4, 0x55, 0x83, 0xE4, 0x73, 0xF5, 0x13, 0xFD, 0xD3, 0xFD, 0xF2, 0x01, 0xFD, 0xF1, 0x03, 0xFD, 0xF0, 0x07, 0xFD, 0xEF, 0x81, 0xFD, 0xF0, 0xFE, 0x10, 0x01, 0xFE, 0x11, 0x8A, 0xFD, 0xF3, 0xED, 0x33, 0xBB, 0x8F, 0x9A, 0x4D, 0x9A, 0x2E, 0xB3, 0x12, 0xCB, 0xB5, 0xDC, 0x37, 0xE4, 0x78, 0xE4, 0x77, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x82, 0xDC, 0x56, 0xE4, 0x57, 0xDC, 0x56, 0x01, 0xDC, + 0x36, 0x84, 0xDC, 0x56, 0xDC, 0x55, 0xDC, 0x75, 0xFD, 0xB7, 0xFD, 0xD7, 0x01, 0xFD, 0xF7, 0x86, 0xBB, 0xD1, 0x8A, 0x2C, 0x8A, 0x2D, 0x92, 0x4E, 0xC3, 0x94, 0xD4, 0x16, 0xDC, 0x57, 0x01, 0xE4, 0x77, 0x05, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x57, 0x07, 0xDC, 0x56, 0x80, 0xE4, 0x56, 0x01, 0xDC, 0x56, 0x81, 0xDC, 0x55, 0xE4, 0x55, 0x02, 0xDC, 0x55, 0x86, 0xDC, 0x75, 0xDC, 0x74, 0xE4, 0x94, 0xE4, 0xB5, 0xED, 0x16, 0xFD, 0x99, 0x89, 0xCD, 0x01, 0x91, 0xEF, 0x81, 0xB3, 0x13, 0xE4, 0x78, 0x01, 0xE4, 0x58, 0x08, 0xE4, 0x57, 0x81, 0xDC, 0x36, 0xDC, 0x56, 0x01, 0xDC, 0x36, 0x85, 0xDC, 0x56, 0xDC, 0x36, 0xDC, 0x56, 0xDC, 0x36, 0xDC, 0x56, 0xDC, 0x55, 0x02, 0xE4, 0x56, 0x02, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x03, 0xE4, 0x56, 0x86, 0xDC, 0x55, 0xDC, 0x54, 0xE4, 0xB3, 0xFD, 0xB4, 0xFD, 0xD3, 0xFD, 0xF2, 0xFD, 0xF1, 0x01, 0xFD, 0xD0, 0x81, 0xFD, 0xF0, 0xFD, 0xCF, 0x06, 0xFD, 0xEF, 0x82, 0xFD, 0xCF, 0xFD, 0xEF, 0xFD, 0xCF, 0x08, 0xFD, 0xEF, 0x80, 0xFD, 0xCF, 0x03, 0xFD, 0xEF, 0x01, 0xFE, 0x10, 0x8B, 0xFE, 0x11, 0xFE, 0x12, 0xFE, 0x13, 0xFD, 0xB5, 0xA2, 0xCC, 0x92, 0x0C, 0x92, 0x2E, 0xB2, 0xF1, 0xCB, 0xD5, 0xDC, 0x57, 0xE4, 0x98, 0xE4, 0x78, 0x01, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x80, 0xDC, 0x57, 0x02, 0xDC, 0x56, 0x06, 0xE4, 0x56, 0x89, 0xE4, 0x76, 0xE4, 0x96, 0xE4, 0x97, 0xB3, 0x12, 0x9A, 0x50, 0x9A, 0x30, 0xAA, 0xD3, 0xCB, 0xD6, 0xDC, 0x37, 0xE4, 0x78, 0x01, + 0xE4, 0x57, 0x80, 0xDC, 0x57, 0x01, 0xDC, 0x36, 0x01, 0xE4, 0x57, 0x80, 0xE4, 0x36, 0x02, 0xE4, 0x56, 0x04, 0xDC, 0x56, 0x01, 0xE4, 0x56, 0x02, 0xE4, 0x76, 0x80, 0xE4, 0x77, 0x02, 0xE4, 0x57, 0x02, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x03, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x85, 0xDC, 0x55, 0xDC, 0x54, 0xE4, 0xB3, 0xFD, 0x74, 0xFD, 0xD3, 0xFD, 0xD2, 0x03, 0xFD, 0xD1, 0x82, 0xFD, 0xF1, 0xFD, 0xF0, 0xFD, 0xD0, 0x01, 0xFD, 0xF0, 0x8E, 0xFD, 0xF1, 0xFE, 0x11, 0xFE, 0x12, 0xFE, 0x13, 0xFE, 0x15, 0xD4, 0x72, 0x9A, 0x6D, 0x92, 0x0D, 0x92, 0x2F, 0xC3, 0x74, 0xD4, 0x17, 0xDC, 0x37, 0xDC, 0x57, 0xE4, 0x58, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x80, 0xDC, 0x36, 0x01, 0xE4, 0x56, 0x81, 0xDC, 0x36, 0xDC, 0x35, 0x01, 0xE4, 0x55, 0x83, 0xDC, 0x53, 0xF5, 0x54, 0xFD, 0xF4, 0xFE, 0x14, 0x01, 0xFD, 0xF3, 0x03, 0xFD, 0xF2, 0x80, 0xFD, 0xF3, 0x03, 0xFE, 0x13, 0x8F, 0xFE, 0x14, 0xFD, 0xF4, 0xFD, 0xF6, 0xFD, 0x98, 0x9A, 0x30, 0xA1, 0xF3, 0x99, 0xF4, 0x9A, 0x16, 0x9A, 0x58, 0x8A, 0x7A, 0x41, 0x38, 0x29, 0x1A, 0x21, 0x5C, 0x19, 0x9D, 0x11, 0x9D, 0x09, 0x9E, 0x01, 0x01, 0x9E, 0x03, 0x01, 0x9F, 0x08, 0x01, 0xBF, 0x01, 0x01, 0x9E, 0x88, 0x01, 0xBD, 0x01, 0xDC, 0x02, 0x5B, 0x03, 0x1A, 0x14, 0xBC, 0x3E, 0xDF, 0x2F, 0x3C, 0x0E, 0xF5, 0x0F, 0x33, 0x01, 0x0F, 0x53, 0x92, 0x27, 0x56, 0x37, 0x18, 0x5F, 0x1B, 0x75, 0xFB, 0x52, 0x72, 0x72, 0x34, 0x81, 0xF4, 0x81, 0xF5, 0x71, 0x94, 0x69, 0x93, 0x61, 0x73, 0x61, 0xB4, 0x59, 0x93, 0x59, 0xB3, 0x51, 0xB3, + 0x49, 0x93, 0x49, 0x72, 0x49, 0x93, 0x49, 0x92, 0x01, 0x41, 0x92, 0x80, 0x41, 0x72, 0x01, 0x39, 0x72, 0x01, 0x39, 0x71, 0x01, 0x39, 0x51, 0x02, 0x31, 0x50, 0x80, 0x31, 0x30, 0x03, 0x29, 0x30, 0x0C, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x89, 0x21, 0x30, 0x21, 0x51, 0x19, 0x31, 0x11, 0x32, 0x19, 0xB5, 0x19, 0xD7, 0x19, 0xB7, 0x19, 0x95, 0x11, 0x11, 0x19, 0x11, 0x02, 0x21, 0x30, 0x80, 0x21, 0x50, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8C, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x93, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x10, 0x19, 0x32, 0x19, 0x74, 0x19, 0xB6, 0x11, 0xD7, 0x1A, 0x18, 0x11, 0xD7, 0x09, 0x75, 0x09, 0x55, 0x09, 0x34, 0x01, 0x14, 0x09, 0x34, 0x09, 0x75, 0x11, 0xD7, 0x11, 0xF8, 0x01, + 0x11, 0xD8, 0x81, 0x11, 0xB7, 0x11, 0xB6, 0x01, 0x11, 0x96, 0x86, 0x19, 0xB6, 0x19, 0x96, 0x11, 0x96, 0x19, 0x96, 0x11, 0x95, 0x11, 0x96, 0x19, 0xB6, 0x04, 0x11, 0x95, 0x80, 0x19, 0x95, 0x02, 0x11, 0x95, 0x80, 0x19, 0x95, 0x01, 0x11, 0x95, 0x82, 0x11, 0x75, 0x19, 0x95, 0x11, 0x75, 0x02, 0x11, 0x95, 0x82, 0x11, 0x75, 0x11, 0x95, 0x11, 0x75, 0x03, 0x11, 0x74, 0x85, 0x11, 0x54, 0x11, 0x74, 0x11, 0x54, 0x11, 0x34, 0x11, 0x54, 0x11, 0x53, 0x01, 0x19, 0x53, 0x81, 0x19, 0x52, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x86, 0x19, 0xB4, 0x11, 0x32, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x30, + 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x86, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x08, 0x21, 0x0F, 0x12, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x0B, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x50, 0x21, 0x30, 0x01, 0x19, 0x31, 0x88, 0x11, 0x32, 0x11, 0x53, 0x19, 0x94, 0x21, 0xF6, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0xB5, 0x19, 0x74, 0x19, 0x32, 0x01, 0x19, 0x11, 0x80, 0x19, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, + 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x0A, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x30, 0x04, 0x29, 0x0F, 0x14, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x8B, 0x28, 0xEF, 0x30, 0xCE, 0x38, 0x6C, 0xA2, 0x94, 0xB2, 0x53, 0xB2, 0x12, 0xB2, 0x11, 0xA9, 0xF0, 0xA1, 0xED, 0xF5, 0x15, 0xFD, 0xD4, 0xFE, 0x13, 0x01, 0xFE, 0x11, 0x80, 0xFD, 0xF0, 0x01, 0xFE, 0x0F, 0x80, 0xFE, 0x30, 0x02, 0xFE, 0x10, 0x8A, 0xFE, 0x32, 0xFE, 0x33, 0xFE, 0x16, 0xC3, 0xF0, 0x89, 0xEC, 0x92, 0x0E, 0xA2, 0x90, 0xB3, 0x32, 0xD3, 0xF6, 0xDC, 0x78, 0xE4, 0x98, 0x01, 0xDC, 0x57, 0x03, 0xE4, 0x57, 0x02, 0xE4, 0x56, 0x87, 0xDC, 0x35, 0xDC, 0x54, 0xE4, 0x92, 0xFD, 0x94, 0xFE, 0x13, 0xFD, 0xF1, 0xFE, 0x11, 0xFD, 0xF0, 0x03, 0xFE, 0x10, 0x80, 0xFD, 0xF0, 0x06, 0xFD, 0xEF, 0x8A, 0xFD, 0xF0, 0xFE, 0x10, 0xFE, 0x11, 0xFE, 0x33, 0xF5, 0x73, 0xBB, 0x8F, 0x92, 0x6D, 0x92, 0x4E, 0xAA, 0xF2, 0xC3, 0x95, 0xDC, 0x37, 0x01, 0xE4, 0x78, 0x81, 0xE4, 0x37, 0xE4, 0x57, 0x01, 0xE4, 0x37, 0x89, 0xDC, 0x37, 0xE4, 0x57, 0xE4, 0x36, 0xDC, 0x36, 0xE4, 0x56, 0xE4, 0x55, 0xE4, 0x73, 0xF5, 0x33, 0xFD, 0xF3, 0xFE, 0x12, 0x01, 0xFE, 0x11, 0x83, 0xFE, 0x10, 0xFD, 0xF0, 0xFD, 0xEF, 0xFD, + 0xF0, 0x05, 0xFD, 0xEF, 0x01, 0xFE, 0x0F, 0x01, 0xFE, 0x10, 0x8A, 0xFE, 0x11, 0xFD, 0xF1, 0xFD, 0xF3, 0xED, 0x53, 0xBB, 0x8F, 0x9A, 0x6D, 0x9A, 0x4F, 0xB3, 0x12, 0xCB, 0xB5, 0xDC, 0x37, 0xE4, 0x78, 0x04, 0xDC, 0x57, 0x81, 0xE4, 0x57, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x84, 0xDC, 0x36, 0xDC, 0x55, 0xDC, 0x74, 0xF5, 0x96, 0xFD, 0xD6, 0x01, 0xFE, 0x16, 0x86, 0xF5, 0xB6, 0xAB, 0x4E, 0x8A, 0x0B, 0x8A, 0x0D, 0xA2, 0xD0, 0xC3, 0xB4, 0xDC, 0x37, 0x02, 0xE4, 0x77, 0x04, 0xDC, 0x57, 0x82, 0xE4, 0x57, 0xDC, 0x57, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x0A, 0xDC, 0x56, 0x01, 0xDC, 0x55, 0x03, 0xDC, 0x75, 0x83, 0xE4, 0x95, 0xED, 0x17, 0xFD, 0x9A, 0x89, 0xCE, 0x01, 0x91, 0xEF, 0x82, 0xB3, 0x13, 0xE4, 0x78, 0xE4, 0x58, 0x01, 0xDC, 0x57, 0x81, 0xE4, 0x57, 0xDC, 0x57, 0x05, 0xE4, 0x57, 0x01, 0xDC, 0x36, 0x07, 0xDC, 0x56, 0x01, 0xE4, 0x56, 0x01, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x07, 0xE4, 0x57, 0x01, 0xE4, 0x76, 0x88, 0xE4, 0x56, 0xE4, 0x55, 0xDC, 0x35, 0xDC, 0x54, 0xE4, 0xB3, 0xFD, 0x94, 0xFD, 0xF3, 0xFE, 0x12, 0xFD, 0xF1, 0x02, 0xFD, 0xF0, 0x02, 0xFD, 0xEF, 0x80, 0xFE, 0x0F, 0x12, 0xFD, 0xEF, 0x01, 0xFE, 0x0F, 0x01, 0xFE, 0x10, 0x01, 0xFE, 0x31, 0x89, 0xFE, 0x32, 0xFE, 0x34, 0xD4, 0xB1, 0x89, 0xEB, 0x92, 0x0D, 0x9A, 0x6F, 0xBB, 0x53, 0xDC, 0x37, 0xE4, 0x78, 0xE4, 0x77, 0x02, 0xE4, 0x57, 0x83, 0xDC, 0x57, 0xDC, 0x36, 0xDC, 0x37, 0xDC, 0x57, 0x02, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x80, 0xDC, 0x56, 0x02, 0xE4, 0x56, 0x01, 0xE4, 0x76, 0x87, 0xE4, 0x97, + 0xE4, 0x77, 0xB3, 0x33, 0x9A, 0x50, 0x9A, 0x30, 0xAA, 0xD2, 0xCB, 0xD6, 0xDC, 0x37, 0x01, 0xE4, 0x78, 0x01, 0xDC, 0x57, 0x82, 0xDC, 0x36, 0xE4, 0x57, 0xDC, 0x57, 0x02, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x03, 0xDC, 0x56, 0x06, 0xE4, 0x56, 0x01, 0xE4, 0x57, 0x07, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x81, 0xDC, 0x57, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x86, 0xDC, 0x35, 0xDC, 0x54, 0xE4, 0x92, 0xFD, 0x74, 0xFD, 0xD3, 0xFD, 0xD2, 0xFD, 0xF2, 0x02, 0xFD, 0xF1, 0x82, 0xFD, 0xF0, 0xFE, 0x10, 0xFD, 0xF0, 0x01, 0xFE, 0x10, 0x01, 0xFE, 0x11, 0x01, 0xFE, 0x12, 0x88, 0xFE, 0x15, 0xD4, 0x72, 0x9A, 0x6D, 0x92, 0x0D, 0x92, 0x2F, 0xC3, 0x74, 0xD3, 0xF6, 0xDC, 0x37, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x02, 0xDC, 0x57, 0x80, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x80, 0xDC, 0x36, 0x01, 0xE4, 0x55, 0x82, 0xDC, 0x53, 0xF5, 0x54, 0xFE, 0x14, 0x04, 0xFE, 0x13, 0x83, 0xFE, 0x12, 0xFE, 0x13, 0xFE, 0x12, 0xFE, 0x13, 0x02, 0xFE, 0x33, 0x8E, 0xFD, 0xF4, 0xFD, 0xD4, 0xFD, 0xD6, 0xFD, 0x78, 0x9A, 0x10, 0x99, 0xF3, 0x99, 0xF4, 0x9A, 0x16, 0x9A, 0x58, 0x8A, 0x7A, 0x39, 0x18, 0x29, 0x3A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x7D, 0x01, 0x09, 0x9E, 0x80, 0x01, 0x9E, 0x03, 0x01, 0x9F, 0x81, 0x01, 0xBF, 0x01, 0x9F, 0x06, 0x01, 0xBF, 0x01, 0x01, 0xBE, 0x94, 0x01, 0xBD, 0x01, 0xDC, 0x02, 0x5B, 0x03, 0x5A, 0x14, 0xDC, 0x3E, 0xFF, 0x2F, 0x5C, 0x0F, 0x15, 0x0F, 0x33, 0x0F, 0x53, 0x0F, 0x33, 0x1F, 0x56, 0x37, 0x38, 0x67, 0x3C, 0x75, 0xFB, 0x52, 0x92, 0x72, 0x54, 0x82, 0x15, 0x81, 0xF5, 0x71, + 0x94, 0x69, 0x93, 0x01, 0x61, 0x93, 0x82, 0x59, 0xD4, 0x51, 0xB3, 0x51, 0x93, 0x01, 0x49, 0x93, 0x88, 0x49, 0x92, 0x49, 0xB3, 0x41, 0x92, 0x41, 0x72, 0x41, 0x92, 0x39, 0x72, 0x39, 0x71, 0x39, 0x51, 0x39, 0x71, 0x01, 0x39, 0x51, 0x01, 0x31, 0x50, 0x01, 0x31, 0x30, 0x80, 0x31, 0x50, 0x01, 0x29, 0x30, 0x80, 0x31, 0x30, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x07, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x19, 0x31, 0x11, 0x32, 0x19, 0xB5, 0x01, 0x19, 0xD7, 0x82, 0x19, 0x75, 0x10, 0xF1, 0x19, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x89, 0x21, 0x32, 0x19, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x21, 0xF6, 0x19, 0xD6, 0x19, 0x94, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, + 0x19, 0x11, 0x19, 0x53, 0x11, 0x95, 0x19, 0xD7, 0x01, 0x11, 0xF8, 0x82, 0x11, 0xF7, 0x09, 0x96, 0x09, 0x76, 0x01, 0x09, 0x75, 0x87, 0x19, 0xD7, 0x19, 0xF8, 0x1A, 0x18, 0x19, 0xF8, 0x11, 0xB7, 0x11, 0x75, 0x09, 0x34, 0x11, 0x13, 0x09, 0x11, 0x12, 0x81, 0x11, 0x32, 0x11, 0x12, 0x01, 0x11, 0x32, 0x01, 0x11, 0x12, 0x01, 0x11, 0x11, 0x07, 0x11, 0x12, 0x80, 0x11, 0x11, 0x03, 0x11, 0x12, 0x02, 0x11, 0x32, 0x80, 0x19, 0x52, 0x02, 0x19, 0x32, 0x01, 0x10, 0xF1, 0x87, 0x18, 0xF1, 0x19, 0x11, 0x19, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x85, 0x2A, 0x57, 0x11, 0x74, 0x11, 0x33, 0x11, 0x12, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, + 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x0A, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x0E, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x19, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x86, 0x21, 0x51, 0x19, 0x31, 0x11, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x22, 0x17, 0x01, 0x21, 0xF6, 0x82, 0x21, 0xD6, 0x19, 0x74, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x19, 0x10, 0x02, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, + 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x0A, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x06, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x09, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x8F, 0x28, 0xEE, 0x30, 0xCE, 0x38, 0x6C, 0xA2, 0x94, 0xAA, 0x53, 0xB2, 0x32, 0xB2, 0x11, 0xA9, 0xF0, 0xA1, 0xED, 0xEC, 0xB4, 0xFD, 0xD5, 0xFE, 0x13, 0xFE, 0x12, 0xFE, 0x11, 0xFE, 0x10, 0xFE, 0x0F, 0x03, 0xFE, 0x30, 0x8B, 0xFE, 0x10, 0xFE, 0x32, 0xFE, 0x54, 0xFE, 0x36, 0xC3, 0xF0, 0x89, 0xEC, 0x92, 0x0E, 0xA2, 0x90, 0xB3, 0x32, 0xD4, 0x16, 0xE4, 0x78, 0xE4, 0x98, 0x05, 0xE4, 0x57, 0x80, 0xDC, 0x56, 0x01, 0xE4, 0x56, 0x87, 0xDC, 0x55, 0xDC, 0x53, 0xDC, 0x92, 0xFD, 0x93, 0xFE, 0x13, 0xFE, 0x32, 0xFE, 0x11, 0xFE, 0x31, 0x01, 0xFE, 0x30, 0x03, 0xFE, 0x10, 0x80, 0xFE, 0x0F, 0x01, 0xFE, 0x30, 0x01, 0xFE, 0x0F, 0x81, 0xFE, 0x10, 0xFE, 0x30, 0x01, 0xFE, 0x31, 0x89, 0xFE, 0x33, 0xED, 0x53, 0xBB, 0x8F, 0x92, 0x4D, 0x92, 0x4E, 0xAA, 0xF2, 0xC3, 0x95, 0xDC, 0x37, 0xE4, 0x78, 0xE4, 0x58, 0x01, 0xE4, 0x57, 0x01, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x02, 0xE4, 0x56, 0x84, 0xE4, 0x55, 0xDC, 0x73, 0xF5, 0x33, 0xFD, 0xF3, 0xFE, 0x12, 0x01, 0xFE, 0x11, 0x02, 0xFE, 0x10, 0x03, 0xFE, 0x0F, 0x80, 0xFE, 0x10, 0x03, 0xFE, 0x0F, 0x81, 0xFE, 0x10, 0xFE, 0x30, 0x01, + 0xFE, 0x31, 0x87, 0xFE, 0x33, 0xF5, 0x73, 0xBB, 0x8F, 0x9A, 0x6D, 0x9A, 0x2F, 0xB2, 0xF2, 0xC3, 0x95, 0xDC, 0x37, 0x01, 0xDC, 0x57, 0x01, 0xE4, 0x77, 0x80, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x80, 0xDC, 0x57, 0x02, 0xDC, 0x56, 0x90, 0xDC, 0x55, 0xDC, 0x74, 0xF5, 0x96, 0xFD, 0xF5, 0xFE, 0x15, 0xFE, 0x35, 0xFE, 0x36, 0xF5, 0xB5, 0x9A, 0xCC, 0x8A, 0x2C, 0x92, 0x6E, 0xB3, 0x32, 0xCB, 0xF5, 0xDC, 0x36, 0xDC, 0x77, 0xE4, 0x77, 0xDC, 0x77, 0x05, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x81, 0xDC, 0x57, 0xE4, 0x57, 0x04, 0xDC, 0x56, 0x81, 0xE4, 0x76, 0xE4, 0x56, 0x06, 0xDC, 0x56, 0x85, 0xDC, 0x76, 0xDC, 0x75, 0xDC, 0x96, 0xED, 0x17, 0xFD, 0x7A, 0x89, 0xCE, 0x01, 0x91, 0xEF, 0x80, 0xB3, 0x13, 0x01, 0xE4, 0x78, 0x80, 0xDC, 0x58, 0x06, 0xDC, 0x57, 0x02, 0xE4, 0x57, 0x82, 0xDC, 0x36, 0xE4, 0x57, 0xDC, 0x57, 0x07, 0xDC, 0x56, 0x03, 0xDC, 0x57, 0x04, 0xE4, 0x57, 0x80, 0xE4, 0x77, 0x01, 0xE4, 0x57, 0x02, 0xE4, 0x56, 0x86, 0xE4, 0x55, 0xDC, 0x55, 0xDC, 0x54, 0xE4, 0xB3, 0xFD, 0xB4, 0xFE, 0x13, 0xFE, 0x12, 0x01, 0xFE, 0x11, 0x01, 0xFE, 0x10, 0x81, 0xFE, 0x0F, 0xFE, 0x10, 0x16, 0xFE, 0x0F, 0x8C, 0xFE, 0x2F, 0xFE, 0x30, 0xFE, 0x50, 0xFE, 0x51, 0xFE, 0x52, 0xFE, 0x53, 0xFE, 0x15, 0x9A, 0x8B, 0x92, 0x2C, 0x9A, 0x4E, 0xAA, 0xF1, 0xD4, 0x16, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x01, 0xE4, 0x77, 0x01, 0xDC, 0x57, 0x83, 0xDC, 0x36, 0xDC, 0x57, 0xDC, 0x56, 0xDC, 0x57, 0x05, 0xDC, 0x56, 0x80, 0xE4, 0x56, 0x01, 0xE4, 0x76, 0x89, 0xE4, 0x97, 0xE4, 0x77, 0xBB, 0x33, + 0x9A, 0x51, 0x9A, 0x31, 0xAA, 0xD3, 0xD3, 0xF6, 0xDC, 0x37, 0xE4, 0x78, 0xE4, 0x77, 0x04, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x81, 0xE4, 0x57, 0xDC, 0x56, 0x01, 0xE4, 0x56, 0x80, 0xDC, 0x56, 0x02, 0xE4, 0x56, 0x06, 0xDC, 0x56, 0x07, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xE4, 0x57, 0x81, 0xDC, 0x57, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x85, 0xDC, 0x35, 0xDC, 0x34, 0xE4, 0x92, 0xFD, 0x94, 0xFD, 0xF3, 0xFD, 0xF2, 0x04, 0xFE, 0x11, 0x01, 0xFE, 0x31, 0x8C, 0xFE, 0x11, 0xFE, 0x10, 0xFE, 0x11, 0xFE, 0x31, 0xFE, 0x32, 0xFE, 0x33, 0xFE, 0x35, 0xD4, 0x92, 0x9A, 0x6D, 0x92, 0x0D, 0x9A, 0x2F, 0xC3, 0x94, 0xD4, 0x17, 0x06, 0xDC, 0x57, 0x80, 0xE4, 0x77, 0x02, 0xE4, 0x56, 0x85, 0xE4, 0x55, 0xDC, 0x55, 0xDC, 0x53, 0xF5, 0x74, 0xFE, 0x14, 0xFE, 0x34, 0x0A, 0xFE, 0x33, 0x91, 0xFE, 0x14, 0xFE, 0x15, 0xFD, 0xF6, 0xFD, 0x57, 0x9A, 0x10, 0x99, 0xF3, 0x99, 0xD4, 0x9A, 0x16, 0x9A, 0x58, 0x8A, 0x7B, 0x39, 0x18, 0x29, 0x3A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x7D, 0x09, 0x7E, 0x09, 0x9E, 0x01, 0x9E, 0x03, 0x01, 0x9F, 0x81, 0x01, 0xBF, 0x01, 0x9F, 0x06, 0x01, 0xBF, 0x01, 0x01, 0xBE, 0x87, 0x01, 0xBD, 0x01, 0xDC, 0x02, 0x7B, 0x03, 0x9A, 0x15, 0x1C, 0x36, 0xFF, 0x2F, 0x5C, 0x0F, 0x15, 0x01, 0x0F, 0x53, 0x8E, 0x0F, 0x33, 0x27, 0x56, 0x37, 0x18, 0x67, 0x3C, 0x65, 0x79, 0x4A, 0x92, 0x72, 0x54, 0x82, 0x35, 0x79, 0xD4, 0x69, 0x94, 0x61, 0x73, 0x61, 0x93, 0x59, 0x93, 0x59, 0xB3, 0x51, 0xB3, 0x01, 0x49, 0x93, 0x82, 0x49, 0x92, 0x49, 0x93, 0x49, 0x92, 0x02, 0x41, 0x72, + 0x80, 0x39, 0x51, 0x02, 0x39, 0x71, 0x81, 0x39, 0x51, 0x31, 0x51, 0x01, 0x31, 0x50, 0x02, 0x31, 0x30, 0x82, 0x29, 0x30, 0x29, 0x2F, 0x31, 0x30, 0x0D, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8A, 0x19, 0x31, 0x11, 0x12, 0x19, 0x95, 0x19, 0xD7, 0x19, 0xB6, 0x19, 0x75, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x92, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x22, 0x17, 0x21, 0xF6, 0x11, 0x74, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x84, 0x19, 0x11, 0x19, 0x33, 0x11, 0x74, 0x11, 0xB6, 0x19, 0xF7, 0x01, 0x11, 0xF8, 0x03, 0x11, 0xB7, 0x01, 0x19, 0xF7, 0x83, 0x19, 0xD7, 0x11, 0xB6, 0x19, 0x95, 0x11, 0x34, 0x01, 0x11, 0x12, 0x80, 0x11, 0x11, 0x06, 0x19, 0x11, + 0x01, 0x19, 0x10, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x10, 0x80, 0x19, 0x30, 0x01, 0x19, 0x10, 0x08, 0x19, 0x11, 0x80, 0x19, 0x10, 0x01, 0x19, 0x11, 0x80, 0x19, 0x31, 0x04, 0x19, 0x11, 0x80, 0x19, 0x31, 0x02, 0x19, 0x11, 0x81, 0x21, 0x11, 0x19, 0x10, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x86, 0x1A, 0x17, 0x19, 0xF6, 0x11, 0x74, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, + 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x19, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x0B, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x01, 0x11, 0x32, 0x81, 0x11, 0x74, 0x21, 0xF6, 0x01, 0x22, 0x17, 0x83, 0x19, 0xD5, 0x11, 0x53, 0x11, 0x12, 0x10, 0xF1, 0x01, 0x19, 0x11, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x06, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, + 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x07, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x91, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x28, 0xEE, 0x30, 0xEE, 0x38, 0x6C, 0x9A, 0x94, 0xB2, 0x73, 0xB2, 0x32, 0xB2, 0x11, 0xA9, 0xF0, 0xA1, 0xEE, 0xE4, 0x93, 0xFD, 0xD5, 0xFE, 0x34, 0xFE, 0x32, 0xFE, 0x31, 0x01, 0xFE, 0x30, 0x03, 0xFE, 0x50, 0x8B, 0xFE, 0x30, 0xFE, 0x72, 0xFE, 0x74, 0xFE, 0x36, 0xBB, 0xF0, 0x89, 0xEC, 0x92, 0x0E, 0xA2, 0x90, 0xB3, 0x12, 0xD3, 0xF6, 0xE4, 0x77, 0xE4, 0x98, 0x05, 0xE4, 0x57, 0x02, 0xE4, 0x56, 0x84, 0xDC, 0x55, 0xDC, 0x53, 0xE4, 0xB2, 0xFD, 0xB4, 0xFE, 0x33, 0x01, 0xFE, 0x31, 0x02, 0xFE, 0x30, 0x01, 0xFE, 0x2F, 0x06, 0xFE, 0x30, 0x01, 0xFE, 0x50, 0x01, 0xFE, 0x51, 0x87, 0xFE, 0x53, 0xED, 0x73, 0xB3, 0x8F, 0x92, 0x6D, 0x9A, 0x6F, 0xB3, 0x12, 0xC3, 0x95, 0xDC, 0x37, 0x01, 0xE4, 0x78, 0x81, 0xE4, 0x57, 0xE4, 0x37, 0x03, 0xE4, 0x57, 0x02, 0xE4, 0x56, 0x85, 0xE4, 0x75, 0xDC, 0x52, 0xF5, 0x52, 0xFE, 0x13, 0xFE, 0x32, 0xFE, 0x31, 0x03, 0xFE, 0x30, 0x01, 0xFE, 0x2F, 0x01, 0xFE, 0x30, 0x01, 0xFE, 0x2F, 0x82, 0xFE, 0x30, 0xFE, 0x2F, 0xFE, 0x10, 0x01, 0xFE, 0x30, 0x8A, 0xFE, 0x51, 0xFE, 0x52, 0xFE, 0x54, 0xF5, 0x93, 0xBB, 0x8F, 0x92, 0x4D, 0x92, 0x4F, 0xAA, 0xF2, 0xC3, 0x95, 0xDC, + 0x57, 0xE4, 0x78, 0x01, 0xDC, 0x57, 0x82, 0xE4, 0x77, 0xDC, 0x57, 0xDC, 0x36, 0x04, 0xDC, 0x56, 0x83, 0xDC, 0x75, 0xDC, 0x94, 0xF5, 0xB5, 0xFE, 0x35, 0x01, 0xFE, 0x34, 0x88, 0xFE, 0x54, 0xFE, 0x55, 0xE5, 0x53, 0x92, 0xAB, 0x8A, 0x4C, 0x92, 0x6E, 0xBB, 0x93, 0xCC, 0x15, 0xDC, 0x56, 0x02, 0xDC, 0x77, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x56, 0x03, 0xDC, 0x57, 0x84, 0xE4, 0x57, 0xDC, 0x56, 0xDC, 0x57, 0xDC, 0x56, 0xDC, 0x57, 0x04, 0xDC, 0x56, 0x80, 0xE4, 0x56, 0x03, 0xDC, 0x56, 0x01, 0xDC, 0x76, 0x89, 0xDC, 0x96, 0xED, 0x18, 0xFD, 0x9B, 0x89, 0xCE, 0x92, 0x10, 0x91, 0xEF, 0xB3, 0x13, 0xE4, 0x78, 0xDC, 0x58, 0xDC, 0x78, 0x05, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x84, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x57, 0xDC, 0x36, 0x01, 0xE4, 0x57, 0x03, 0xDC, 0x56, 0x85, 0xE4, 0x57, 0xDC, 0x36, 0xDC, 0x57, 0xDC, 0x36, 0xDC, 0x57, 0xDC, 0x37, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x56, 0x03, 0xDC, 0x57, 0x82, 0xDC, 0x56, 0xE4, 0x56, 0xDC, 0x56, 0x01, 0xDC, 0x55, 0x85, 0xDC, 0x53, 0xE4, 0xB2, 0xFD, 0xB4, 0xFE, 0x13, 0xFE, 0x32, 0xFE, 0x11, 0x05, 0xFE, 0x30, 0x16, 0xFE, 0x2F, 0x01, 0xFE, 0x50, 0x01, 0xFE, 0x51, 0x87, 0xFE, 0x52, 0xFE, 0x54, 0xDC, 0xB1, 0x92, 0x6B, 0x92, 0x4D, 0x9A, 0x6E, 0xC3, 0x93, 0xDC, 0x56, 0x03, 0xE4, 0x77, 0x81, 0xE4, 0x57, 0xDC, 0x57, 0x02, 0xDC, 0x56, 0x81, 0xDC, 0x36, 0xDC, 0x56, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x56, 0x01, 0xE4, 0x56, 0x80, 0xDC, 0x56, 0x01, 0xE4, 0x76, 0x89, 0xE4, 0x97, 0xE4, 0x77, 0xBB, 0x33, 0x9A, 0x50, + 0x9A, 0x30, 0xB2, 0xF3, 0xD3, 0xF7, 0xDC, 0x57, 0xE4, 0x78, 0xE4, 0x77, 0x04, 0xDC, 0x57, 0x01, 0xDC, 0x36, 0x80, 0xDC, 0x56, 0x01, 0xDC, 0x57, 0x03, 0xDC, 0x56, 0x80, 0xE4, 0x57, 0x01, 0xDC, 0x56, 0x03, 0xDC, 0x57, 0x03, 0xDC, 0x56, 0x81, 0xDC, 0x36, 0xDC, 0x57, 0x04, 0xDC, 0x37, 0x02, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x85, 0xDC, 0x55, 0xDC, 0x54, 0xE4, 0xB3, 0xFD, 0xB4, 0xFE, 0x13, 0xFE, 0x12, 0x01, 0xFE, 0x11, 0x05, 0xFE, 0x31, 0x80, 0xFE, 0x30, 0x01, 0xFE, 0x31, 0x88, 0xFE, 0x52, 0xFE, 0x32, 0xFE, 0x55, 0xDC, 0xB2, 0x9A, 0x6D, 0x92, 0x0D, 0x9A, 0x4F, 0xC3, 0x95, 0xD4, 0x16, 0x04, 0xDC, 0x57, 0x8B, 0xE4, 0x57, 0xDC, 0x57, 0xE4, 0x77, 0xE4, 0x76, 0xDC, 0x56, 0xDC, 0x36, 0xE4, 0x55, 0xDC, 0x35, 0xDC, 0x53, 0xF5, 0x74, 0xFE, 0x35, 0xFE, 0x34, 0x01, 0xFE, 0x53, 0x83, 0xFE, 0x33, 0xFE, 0x32, 0xFE, 0x53, 0xFE, 0x33, 0x01, 0xFE, 0x53, 0x91, 0xFE, 0x33, 0xFE, 0x53, 0xFE, 0x54, 0xFE, 0x55, 0xFE, 0x36, 0xFE, 0x17, 0xEC, 0xF6, 0x9A, 0x10, 0x99, 0xD3, 0xA1, 0xF5, 0x9A, 0x16, 0x9A, 0x58, 0x82, 0x5A, 0x39, 0x18, 0x29, 0x3A, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x7D, 0x02, 0x09, 0x9E, 0x80, 0x01, 0x9E, 0x01, 0x01, 0x9F, 0x80, 0x01, 0x9E, 0x08, 0x01, 0xBF, 0x01, 0x01, 0xBE, 0x97, 0x01, 0xDD, 0x01, 0xDB, 0x02, 0x7A, 0x03, 0xFB, 0x1D, 0x7C, 0x36, 0xFF, 0x2F, 0x7C, 0x0F, 0x15, 0x0F, 0x33, 0x0F, 0x53, 0x0F, 0x33, 0x27, 0x77, 0x3F, 0x39, 0x5F, 0x3C, 0x5D, 0x38, 0x4A, 0xB3, 0x72, 0x74, 0x82, 0x55, 0x71, 0xB4, 0x69, 0x94, 0x61, 0x94, 0x59, 0x73, + 0x61, 0xB4, 0x59, 0xB3, 0x01, 0x51, 0x93, 0x82, 0x49, 0x73, 0x49, 0x72, 0x49, 0x93, 0x01, 0x49, 0x92, 0x81, 0x41, 0x72, 0x39, 0x71, 0x02, 0x39, 0x51, 0x82, 0x39, 0x71, 0x39, 0x51, 0x31, 0x51, 0x02, 0x31, 0x30, 0x80, 0x31, 0x50, 0x01, 0x31, 0x30, 0x81, 0x31, 0x50, 0x31, 0x30, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x06, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x08, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x30, 0x86, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x19, 0x31, 0x11, 0x32, 0x19, 0x95, 0x01, 0x19, 0xD7, 0x85, 0x11, 0x95, 0x11, 0x11, 0x19, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x84, 0x21, 0x31, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x01, 0x21, 0xF6, 0x83, 0x19, 0x95, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x8B, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x10, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x96, 0x19, 0xD7, 0x19, 0xF8, 0x19, 0xD7, 0x11, 0xB7, 0x01, 0x11, 0xB6, 0x87, 0x11, 0x96, 0x19, 0xB5, 0x19, 0x95, 0x11, 0x74, 0x19, 0x54, + 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x01, 0x19, 0x10, 0x80, 0x21, 0x51, 0x07, 0x21, 0x30, 0x80, 0x21, 0x50, 0x04, 0x21, 0x30, 0x86, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x31, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x02, 0x21, 0x30, 0x83, 0x21, 0x10, 0x19, 0x10, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x21, 0x10, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x84, 0x11, 0xB6, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x53, 0x01, 0x19, 0x32, 0x81, 0x21, 0x31, 0x21, 0x10, 0x04, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x81, + 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x06, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x14, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x0E, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x15, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8C, 0x11, 0x32, 0x11, 0x52, 0x11, 0x74, 0x21, 0xF6, 0x22, 0x17, 0x21, 0xF6, 0x19, 0xB5, 0x19, 0x74, 0x19, 0x53, 0x11, 0x11, 0x10, 0xF1, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x86, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0E, 0x21, 0x2E, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x82, 0x21, + 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x09, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x92, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x28, 0xEE, 0x30, 0xEE, 0x38, 0x6C, 0x9A, 0x94, 0xB2, 0x73, 0xB2, 0x32, 0xAA, 0x11, 0xA9, 0xF1, 0xA1, 0xEE, 0xE4, 0x93, 0xFD, 0xF5, 0xFE, 0x34, 0xFE, 0x52, 0x01, 0xFE, 0x51, 0x01, 0xFE, 0x50, 0x80, 0xFE, 0x4F, 0x01, 0xFE, 0x50, 0x89, 0xFE, 0x71, 0xFE, 0x92, 0xFE, 0x74, 0xFE, 0x56, 0xBB, 0xF0, 0x8A, 0x0C, 0x92, 0x2E, 0xA2, 0x90, 0xB3, 0x12, 0xD3, 0xF6, 0x01, 0xE4, 0x77, 0x02, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x82, 0xE4, 0x57, 0xE4, 0x56, 0xDC, 0x36, 0x01, 0xE4, 0x55, 0x85, 0xDC, 0x53, 0xDC, 0xB2, 0xFD, 0xD4, 0xFE, 0x33, 0xFE, 0x52, 0xFE, 0x51, 0x01, 0xFE, 0x50, 0x02, 0xFE, 0x2F, 0x81, 0xFE, 0x4F, 0xFE, 0x50, 0x01, 0xFE, 0x4F, 0x80, 0xFE, 0x50, 0x01, 0xFE, 0x2F, 0x80, 0xFE, 0x50, 0x01, 0xFE, 0x71, 0x88, 0xFE, 0x72, 0xFE, 0x53, 0xED, 0x93, 0xB3, 0x8E, 0x92, 0x6D, 0x92, 0x4E, 0xAB, 0x12, 0xC3, 0x94, 0xDC, 0x37, 0x01, 0xE4, 0x58, 0x05, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x83, 0xE4, 0x55, 0xDC, 0x54, 0xDC, 0x52, 0xF5, 0x93, 0x01, 0xFE, 0x32, 0x80, 0xFE, 0x31, 0x04, 0xFE, 0x30, 0x01, 0xFE, 0x50, 0x03, 0xFE, 0x30, 0x80, 0xFE, 0x2F, 0x01, 0xFE, 0x30, + 0x8C, 0xFE, 0x50, 0xFE, 0x71, 0xFE, 0x72, 0xFE, 0x54, 0xED, 0x93, 0xB3, 0x6E, 0x92, 0x4D, 0x92, 0x2E, 0xAA, 0xF2, 0xC3, 0xB5, 0xDC, 0x57, 0xE4, 0x78, 0xE4, 0x57, 0x01, 0xDC, 0x57, 0x82, 0xDC, 0x36, 0xDC, 0x56, 0xE4, 0x57, 0x02, 0xDC, 0x56, 0x01, 0xDC, 0x55, 0x82, 0xDC, 0x94, 0xF5, 0xD5, 0xFE, 0x55, 0x01, 0xFE, 0x54, 0x89, 0xFE, 0x73, 0xFE, 0x54, 0xFE, 0x55, 0xE5, 0x53, 0x92, 0x8B, 0x8A, 0x6C, 0x9A, 0xAF, 0xC3, 0xD4, 0xD4, 0x15, 0xDC, 0x56, 0x03, 0xDC, 0x77, 0x80, 0xDC, 0x56, 0x01, 0xDC, 0x77, 0x02, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x82, 0xE4, 0x77, 0xDC, 0x56, 0xDC, 0x57, 0x09, 0xDC, 0x56, 0x01, 0xDC, 0x76, 0x87, 0xE4, 0x96, 0xEC, 0xF8, 0xFD, 0x9B, 0x89, 0xCE, 0x9A, 0x10, 0x91, 0xEF, 0xB3, 0x13, 0xE4, 0x78, 0x01, 0xDC, 0x78, 0x06, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x81, 0xDC, 0x56, 0xDC, 0x57, 0x04, 0xDC, 0x56, 0x01, 0xDC, 0x36, 0x80, 0xDC, 0x37, 0x04, 0xDC, 0x57, 0x03, 0xDC, 0x56, 0x80, 0xDC, 0x57, 0x03, 0xDC, 0x56, 0x01, 0xDC, 0x55, 0x84, 0xDC, 0x53, 0xDC, 0x92, 0xFD, 0xB4, 0xFE, 0x13, 0xFE, 0x32, 0x01, 0xFE, 0x51, 0x06, 0xFE, 0x50, 0x04, 0xFE, 0x4F, 0x81, 0xFE, 0x2F, 0xFE, 0x4F, 0x01, 0xFE, 0x2F, 0x81, 0xFE, 0x4F, 0xFE, 0x2F, 0x04, 0xFE, 0x4F, 0x80, 0xFE, 0x2F, 0x04, 0xFE, 0x4F, 0x01, 0xFE, 0x70, 0x01, 0xFE, 0x71, 0x88, 0xFE, 0x53, 0xFE, 0x14, 0xB3, 0x8D, 0x92, 0x4B, 0x92, 0x4D, 0xA2, 0xCF, 0xD4, 0x35, 0xDC, 0x77, 0xE4, 0x77, 0x01, 0xDC, 0x57, 0x02, 0xE4, 0x57, 0x84, 0xDC, 0x57, 0xDC, 0x36, 0xDC, 0x56, + 0xDC, 0x36, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x8E, 0xE4, 0x57, 0xDC, 0x57, 0xE4, 0x77, 0xDC, 0x76, 0xE4, 0x77, 0xE4, 0x97, 0xE4, 0x77, 0xBB, 0x53, 0x9A, 0x50, 0x9A, 0x30, 0xB2, 0xF3, 0xCB, 0xD6, 0xDC, 0x57, 0xE4, 0x78, 0xE4, 0x77, 0x04, 0xDC, 0x57, 0x01, 0xDC, 0x36, 0x08, 0xDC, 0x56, 0x01, 0xDC, 0x36, 0x81, 0xDC, 0x57, 0xDC, 0x36, 0x01, 0xDC, 0x57, 0x02, 0xDC, 0x56, 0x01, 0xDC, 0x57, 0x82, 0xDC, 0x37, 0xDC, 0x57, 0xE4, 0x57, 0x02, 0xDC, 0x37, 0x82, 0xDC, 0x36, 0xDC, 0x56, 0xDC, 0x36, 0x01, 0xDC, 0x55, 0x84, 0xDC, 0x54, 0xE4, 0xB3, 0xFD, 0xB4, 0xFE, 0x13, 0xFE, 0x32, 0x04, 0xFE, 0x31, 0x01, 0xFE, 0x30, 0x80, 0xFE, 0x50, 0x02, 0xFE, 0x51, 0x8A, 0xFE, 0x52, 0xFE, 0x73, 0xFE, 0x55, 0xDC, 0xD3, 0x9A, 0x6C, 0x92, 0x0D, 0x92, 0x2F, 0xC3, 0x74, 0xD4, 0x16, 0xDC, 0x57, 0xE4, 0x77, 0x04, 0xDC, 0x57, 0x82, 0xE4, 0x77, 0xE4, 0x76, 0xDC, 0x36, 0x02, 0xDC, 0x35, 0x83, 0xDC, 0x53, 0xF5, 0x94, 0xFE, 0x35, 0xFE, 0x54, 0x01, 0xFE, 0x53, 0x01, 0xFE, 0x52, 0x03, 0xFE, 0x53, 0x80, 0xFE, 0x74, 0x01, 0xFE, 0x54, 0x8F, 0xFE, 0x75, 0xFE, 0x56, 0xFE, 0x18, 0xDC, 0x75, 0x99, 0xF1, 0xA1, 0xF3, 0xA1, 0xF5, 0xA2, 0x37, 0x9A, 0x58, 0x82, 0x3A, 0x38, 0xF8, 0x29, 0x1A, 0x21, 0x5B, 0x19, 0x7D, 0x11, 0x7D, 0x09, 0x7E, 0x01, 0x09, 0x9E, 0x80, 0x01, 0x9E, 0x03, 0x01, 0x9F, 0x07, 0x01, 0xBF, 0x01, 0x01, 0xBE, 0x87, 0x01, 0xDD, 0x01, 0xFB, 0x02, 0x9A, 0x0C, 0x5B, 0x1D, 0xBD, 0x2E, 0xFE, 0x2F, 0x5B, 0x0F, 0x15, 0x02, 0x0F, 0x33, 0x86, 0x27, 0x77, 0x37, 0x39, + 0x5F, 0x1C, 0x4C, 0xF7, 0x4A, 0xD3, 0x72, 0x95, 0x7A, 0x15, 0x01, 0x69, 0x94, 0x82, 0x61, 0x93, 0x61, 0xB4, 0x59, 0xB4, 0x01, 0x51, 0x93, 0x02, 0x49, 0x93, 0x80, 0x49, 0x72, 0x02, 0x41, 0x72, 0x01, 0x39, 0x71, 0x03, 0x39, 0x51, 0x80, 0x31, 0x30, 0x01, 0x31, 0x50, 0x03, 0x31, 0x30, 0x01, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x07, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x19, 0x31, 0x11, 0x12, 0x19, 0x95, 0x01, 0x19, 0xD7, 0x82, 0x19, 0x95, 0x11, 0x11, 0x19, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x8B, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0x95, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x12, 0x19, 0x32, 0x21, 0x51, 0x03, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x10, 0x8D, 0x19, 0x11, 0x19, 0x32, 0x11, 0x33, 0x11, 0x54, 0x11, 0x75, 0x19, 0xD6, 0x11, 0xB6, 0x11, 0x96, 0x11, 0x95, 0x19, 0x95, 0x11, 0x74, 0x11, 0x54, + 0x11, 0x53, 0x11, 0x32, 0x01, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x09, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x0F, 0x20, 0xEF, 0x01, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x30, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x09, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x06, 0x29, 0x2F, 0x8B, 0x11, 0x95, 0x11, 0xD6, 0x11, 0xB6, 0x19, 0xD6, 0x11, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x06, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x0A, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, + 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x10, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x8B, 0x19, 0x31, 0x19, 0x11, 0x11, 0x32, 0x11, 0x53, 0x11, 0x94, 0x21, 0xF6, 0x22, 0x17, 0x21, 0xF6, 0x19, 0xB5, 0x19, 0x53, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x11, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0E, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x03, 0x29, 0x2F, 0x09, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x0A, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x2F, + 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x0E, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x90, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0E, 0x30, 0xEE, 0x38, 0x8C, 0x92, 0x53, 0xAA, 0x93, 0xB2, 0x52, 0xAA, 0x12, 0xA9, 0xF1, 0xA1, 0xEE, 0xD4, 0x12, 0xFD, 0xF6, 0xFE, 0x54, 0xFE, 0x73, 0xFE, 0x72, 0xFE, 0x71, 0x01, 0xFE, 0x70, 0x8C, 0xFE, 0x4F, 0xFE, 0x6F, 0xFE, 0x70, 0xFE, 0x91, 0xFE, 0x92, 0xFE, 0x94, 0xFE, 0x76, 0xBB, 0xEF, 0x8A, 0x2C, 0x92, 0x2E, 0xA2, 0x90, 0xB3, 0x32, 0xD4, 0x16, 0x01, 0xE4, 0x77, 0x03, 0xE4, 0x57, 0x81, 0xDC, 0x57, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x85, 0xE4, 0x55, 0xDC, 0x35, 0xDC, 0x53, 0xDC, 0xB1, 0xFD, 0xF4, 0xFE, 0x53, 0x01, 0xFE, 0x71, 0x80, 0xFE, 0x70, 0x01, 0xFE, 0x50, 0x08, 0xFE, 0x4F, 0x8B, 0xFE, 0x50, 0xFE, 0x70, 0xFE, 0x71, 0xFE, 0x72, 0xFE, 0x73, 0xF5, 0xB4, 0xB3, 0x6E, 0x8A, 0x4C, 0x8A, 0x0D, 0xAA, 0xD1, 0xC3, 0xB5, 0xDC, 0x57, 0x01, 0xE4, 0x58, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x84, 0xDC, 0x55, 0xDC, 0x54, 0xDC, 0x52, 0xF5, 0x93, 0xFE, 0x32, 0x01, 0xFE, 0x51, 0x0A, 0xFE, 0x50, 0x80, 0xFE, 0x4F, 0x01, 0xFE, 0x50, 0x8B, 0xFE, 0x70, 0xFE, 0x71, 0xFE, 0x72, 0xFE, 0x74, 0xED, 0x93, 0xB3, 0x8E, 0x92, 0x4D, 0x92, 0x4F, 0xB3, 0x12, 0xCB, 0xB5, 0xE4, 0x58, 0xE4, 0x78, 0x05, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x55, 0x83, 0xD4, 0x73, 0xF5, 0xD4, 0xFE, 0x54, 0xFE, 0x74, 0x02, 0xFE, 0x73, 0x87, 0xFE, 0x74, 0xFE, 0x75, 0xDD, + 0x12, 0x92, 0xAB, 0x92, 0x6C, 0x9A, 0x8E, 0xC3, 0xB3, 0xD4, 0x35, 0x01, 0xDC, 0x56, 0x80, 0xDC, 0x76, 0x02, 0xDC, 0x77, 0x80, 0xDC, 0x57, 0x02, 0xDC, 0x56, 0x80, 0xDC, 0x57, 0x02, 0xDC, 0x56, 0x80, 0xDC, 0x57, 0x07, 0xDC, 0x56, 0x01, 0xE4, 0x76, 0x01, 0xDC, 0x76, 0x89, 0xE4, 0x96, 0xF5, 0x39, 0xFD, 0x9B, 0x89, 0xCE, 0x92, 0x10, 0x91, 0xEF, 0xB2, 0xF3, 0xE4, 0x78, 0xDC, 0x78, 0xDC, 0x77, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x37, 0x84, 0xDC, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x57, 0xDC, 0x37, 0x05, 0xDC, 0x57, 0x86, 0xDC, 0x56, 0xE4, 0x57, 0xE4, 0x56, 0xDC, 0x56, 0xDC, 0x36, 0xDC, 0x57, 0xDC, 0x36, 0x02, 0xDC, 0x57, 0x81, 0xDC, 0x37, 0xDC, 0x57, 0x03, 0xDC, 0x56, 0x01, 0xDC, 0x57, 0x03, 0xDC, 0x56, 0x86, 0xDC, 0x55, 0xDC, 0x53, 0xE4, 0xB2, 0xFD, 0xD4, 0xFE, 0x33, 0xFE, 0x32, 0xFE, 0x51, 0x01, 0xFE, 0x71, 0x01, 0xFE, 0x50, 0x83, 0xFE, 0x70, 0xFE, 0x50, 0xFE, 0x4F, 0xFE, 0x50, 0x05, 0xFE, 0x4F, 0x80, 0xFE, 0x6F, 0x0A, 0xFE, 0x4F, 0x03, 0xFE, 0x6F, 0x01, 0xFE, 0x70, 0x8A, 0xFE, 0x90, 0xFE, 0x91, 0xFE, 0x92, 0xFE, 0x73, 0xF5, 0xF4, 0x92, 0x8A, 0x8A, 0x4B, 0x92, 0x4D, 0xA2, 0xD0, 0xD4, 0x56, 0xDC, 0x56, 0x02, 0xDC, 0x76, 0x01, 0xE4, 0x77, 0x80, 0xDC, 0x56, 0x06, 0xDC, 0x57, 0x8B, 0xE4, 0x57, 0xDC, 0x57, 0xDC, 0x77, 0xE4, 0x77, 0xE4, 0x97, 0xDC, 0x77, 0xBB, 0x53, 0x9A, 0x50, 0x9A, 0x10, 0xAA, 0xD2, 0xCB, 0xB6, 0xDC, 0x57, 0x01, 0xE4, 0x78, 0x03, 0xDC, 0x57, 0x80, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x83, 0xDC, 0x57, 0xDC, 0x36, 0xDC, + 0x57, 0xDC, 0x56, 0x03, 0xDC, 0x57, 0x81, 0xDC, 0x56, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x04, 0xDC, 0x57, 0x84, 0xE4, 0x57, 0xDC, 0x36, 0xDC, 0x57, 0xE4, 0x57, 0xDC, 0x37, 0x03, 0xDC, 0x57, 0x02, 0xDC, 0x56, 0x01, 0xDC, 0x35, 0x85, 0xDC, 0x54, 0xE4, 0xB2, 0xFD, 0xD4, 0xFE, 0x33, 0xFE, 0x32, 0xFE, 0x52, 0x03, 0xFE, 0x51, 0x80, 0xFE, 0x30, 0x01, 0xFE, 0x51, 0x02, 0xFE, 0x71, 0x89, 0xFE, 0x72, 0xFE, 0x93, 0xFE, 0x75, 0xDC, 0xD3, 0x92, 0x6C, 0x8A, 0x0D, 0x92, 0x0E, 0xBB, 0x74, 0xD4, 0x16, 0xDC, 0x57, 0x01, 0xE4, 0x77, 0x01, 0xDC, 0x57, 0x02, 0xE4, 0x57, 0x82, 0xE4, 0x56, 0xDC, 0x35, 0xDC, 0x56, 0x01, 0xDC, 0x55, 0x86, 0xD4, 0x53, 0xF5, 0x94, 0xFE, 0x55, 0xFE, 0x74, 0xFE, 0x73, 0xFE, 0x53, 0xFE, 0x52, 0x02, 0xFE, 0x53, 0x01, 0xFE, 0x73, 0x01, 0xFE, 0x74, 0x01, 0xFE, 0x75, 0x91, 0xFE, 0x57, 0xFD, 0xF8, 0xCB, 0xD4, 0x99, 0xD1, 0xA1, 0xF4, 0xA2, 0x15, 0xA2, 0x37, 0x9A, 0x58, 0x82, 0x39, 0x41, 0x18, 0x29, 0x1A, 0x21, 0x5B, 0x19, 0x5C, 0x19, 0x7D, 0x11, 0x7E, 0x09, 0x7E, 0x09, 0x9E, 0x01, 0x9E, 0x04, 0x01, 0x9F, 0x05, 0x01, 0xBF, 0x02, 0x01, 0xBE, 0x93, 0x01, 0xDD, 0x01, 0xFB, 0x02, 0x9A, 0x14, 0x7C, 0x1D, 0xFD, 0x2E, 0xFE, 0x27, 0x5B, 0x0F, 0x15, 0x0F, 0x33, 0x0F, 0x53, 0x0F, 0x34, 0x27, 0x97, 0x3F, 0x7A, 0x56, 0xFC, 0x44, 0xD8, 0x4A, 0xD4, 0x6A, 0x96, 0x61, 0xD4, 0x61, 0x73, 0x61, 0x94, 0x01, 0x61, 0xB4, 0x82, 0x59, 0xD4, 0x51, 0xB3, 0x51, 0x93, 0x01, 0x49, 0x93, 0x81, 0x49, 0x92, 0x41, 0x72, 0x01, 0x41, 0x92, 0x82, 0x41, 0x72, + 0x39, 0x51, 0x39, 0x71, 0x03, 0x39, 0x51, 0x80, 0x31, 0x51, 0x01, 0x31, 0x30, 0x01, 0x31, 0x50, 0x01, 0x31, 0x30, 0x81, 0x29, 0x30, 0x31, 0x30, 0x0B, 0x29, 0x2F, 0x0B, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x0E, 0x05, 0x21, 0x0F, 0x88, 0x21, 0x30, 0x19, 0x31, 0x11, 0x12, 0x19, 0x95, 0x19, 0xD7, 0x19, 0xD6, 0x11, 0x74, 0x11, 0x11, 0x19, 0x10, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x8B, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x19, 0xB5, 0x2A, 0x17, 0x21, 0xF7, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x19, 0x51, 0x04, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x19, 0x11, 0x88, 0x19, 0x32, 0x11, 0x53, 0x19, 0x74, 0x19, 0x94, 0x19, 0x74, 0x19, 0x94, 0x19, 0x73, 0x11, 0x32, 0x19, 0x32, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x04, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x10, 0x84, 0x21, + 0x0F, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x11, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x86, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x88, 0x09, 0x75, 0x11, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xF6, 0x11, 0x95, 0x11, 0x53, 0x11, 0x12, 0x19, 0x31, 0x01, 0x21, 0x31, 0x03, 0x21, 0x30, 0x08, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x0F, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, + 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x06, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x86, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x31, 0x89, 0x11, 0x11, 0x11, 0x32, 0x19, 0xB4, 0x21, 0xF6, 0x22, 0x17, 0x22, 0x16, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x11, 0x11, 0x01, 0x19, 0x11, 0x80, 0x21, 0x31, 0x01, 0x21, 0x30, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x08, 0x29, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x06, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x0D, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x9D, 0x29, 0x0E, 0x30, 0xEE, 0x38, 0x8C, 0x8A, 0x12, + 0xAA, 0x94, 0xAA, 0x53, 0xAA, 0x32, 0xA9, 0xF1, 0xA1, 0xEF, 0xBB, 0x2F, 0xFD, 0xD7, 0xFE, 0x34, 0xFE, 0x73, 0xFE, 0x72, 0xFE, 0x71, 0xFE, 0x91, 0xFE, 0x90, 0xFE, 0x6F, 0xF6, 0x6F, 0xFE, 0x90, 0xFE, 0xB1, 0xFE, 0xB2, 0xFE, 0x94, 0xFE, 0x96, 0xBB, 0xEF, 0x8A, 0x2B, 0x92, 0x2E, 0x9A, 0x8F, 0xB3, 0x12, 0xD4, 0x16, 0x02, 0xE4, 0x77, 0x03, 0xE4, 0x57, 0x01, 0xDC, 0x56, 0x86, 0xE4, 0x56, 0xDC, 0x35, 0xDC, 0x34, 0xDC, 0x33, 0xDC, 0xB1, 0xFD, 0xF4, 0xFE, 0x52, 0x01, 0xFE, 0x71, 0x02, 0xFE, 0x70, 0x01, 0xFE, 0x6F, 0x01, 0xFE, 0x70, 0x02, 0xFE, 0x6F, 0x81, 0xFE, 0x4F, 0xFE, 0x6F, 0x01, 0xFE, 0x70, 0x89, 0xFE, 0x91, 0xFE, 0x92, 0xFE, 0x94, 0xED, 0xB3, 0xB3, 0x6E, 0x92, 0x4C, 0x92, 0x2E, 0xAA, 0xF1, 0xC3, 0xB5, 0xDC, 0x57, 0x01, 0xE4, 0x58, 0x84, 0xE4, 0x57, 0xDC, 0x37, 0xE4, 0x57, 0xDC, 0x57, 0xE4, 0x57, 0x01, 0xE4, 0x56, 0x87, 0xDC, 0x56, 0xDC, 0x55, 0xDC, 0x34, 0xDC, 0x52, 0xF5, 0xB3, 0xFE, 0x53, 0xFE, 0x51, 0xFE, 0x71, 0x03, 0xFE, 0x50, 0x01, 0xFE, 0x70, 0x01, 0xFE, 0x50, 0x81, 0xFE, 0x70, 0xFE, 0x50, 0x01, 0xFE, 0x4F, 0x80, 0xFE, 0x50, 0x01, 0xFE, 0x70, 0x88, 0xFE, 0x91, 0xFE, 0x92, 0xFE, 0x94, 0xF5, 0xB4, 0xB3, 0x6E, 0x92, 0x4D, 0x9A, 0x4F, 0xB3, 0x12, 0xCB, 0xD5, 0x01, 0xE4, 0x58, 0x02, 0xDC, 0x57, 0x81, 0xE4, 0x57, 0xDC, 0x57, 0x02, 0xDC, 0x56, 0x85, 0xDC, 0x36, 0xDC, 0x35, 0xDC, 0x75, 0xD4, 0x73, 0xFD, 0xF4, 0xFE, 0x54, 0x01, 0xFE, 0x73, 0x02, 0xFE, 0x93, 0x87, 0xFE, 0x94, 0xFE, 0x75, 0xE5, 0x52, 0x92, 0xAB, 0x92, 0x6C, + 0x9A, 0x8E, 0xBB, 0x92, 0xD4, 0x56, 0x04, 0xDC, 0x76, 0x01, 0xDC, 0x77, 0x81, 0xDC, 0x76, 0xDC, 0x77, 0x0C, 0xDC, 0x56, 0x80, 0xE4, 0x56, 0x02, 0xE4, 0x76, 0x87, 0xE4, 0xB7, 0xF5, 0x39, 0xFD, 0x9B, 0x89, 0xCE, 0x92, 0x0F, 0x91, 0xEF, 0xB2, 0xF2, 0xE4, 0x98, 0x01, 0xDC, 0x77, 0x02, 0xDC, 0x57, 0x03, 0xDC, 0x37, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x05, 0xDC, 0x57, 0x03, 0xDC, 0x56, 0x82, 0xDC, 0x57, 0xDC, 0x56, 0xDC, 0x36, 0x04, 0xDC, 0x57, 0x04, 0xDC, 0x56, 0x81, 0xDC, 0x77, 0xE4, 0x77, 0x01, 0xDC, 0x56, 0x01, 0xDC, 0x55, 0x84, 0xDC, 0x53, 0xDC, 0xD2, 0xFD, 0xF4, 0xFE, 0x53, 0xFE, 0x52, 0x01, 0xFE, 0x71, 0x05, 0xFE, 0x70, 0x81, 0xFE, 0x6F, 0xFE, 0x70, 0x06, 0xFE, 0x6F, 0x80, 0xFE, 0x4F, 0x0C, 0xFE, 0x6F, 0x8F, 0xFE, 0x90, 0xFE, 0xB0, 0xFE, 0x90, 0xFE, 0xB1, 0xFE, 0x91, 0xFE, 0x92, 0xFE, 0x94, 0xDD, 0x32, 0x8A, 0x8A, 0x92, 0x6C, 0x92, 0x4D, 0xB3, 0x51, 0xD4, 0x56, 0xDC, 0x76, 0xDC, 0x56, 0xDC, 0x76, 0x01, 0xDC, 0x56, 0x82, 0xDC, 0x77, 0xDC, 0x57, 0xE4, 0x77, 0x07, 0xDC, 0x57, 0x89, 0xDC, 0x77, 0xE4, 0x97, 0xDC, 0x57, 0xBB, 0x54, 0x9A, 0x50, 0x9A, 0x30, 0xAA, 0xD2, 0xCB, 0xD6, 0xDC, 0x57, 0xE4, 0x77, 0x01, 0xDC, 0x77, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x04, 0xDC, 0x57, 0x80, 0xDC, 0x56, 0x03, 0xDC, 0x57, 0x80, 0xDC, 0x56, 0x03, 0xDC, 0x57, 0x80, 0xDC, 0x56, 0x08, 0xDC, 0x57, 0x83, 0xDC, 0x56, 0xE4, 0x57, 0xDC, 0x56, 0xDC, 0x36, 0x01, 0xDC, 0x56, 0x87, 0xDC, 0x35, 0xDC, 0x55, 0xDC, 0x53, 0xE4, 0xB2, 0xFD, 0xD4, + 0xFE, 0x53, 0xFE, 0x52, 0xFE, 0x72, 0x03, 0xFE, 0x71, 0x01, 0xFE, 0x70, 0x01, 0xFE, 0x71, 0x80, 0xFE, 0x91, 0x01, 0xFE, 0x92, 0x87, 0xFE, 0x93, 0xFE, 0x95, 0xDC, 0xF3, 0x92, 0x6C, 0x8A, 0x0D, 0x92, 0x0E, 0xBB, 0x74, 0xD4, 0x16, 0x02, 0xDC, 0x57, 0x82, 0xE4, 0x77, 0xE4, 0x57, 0xDC, 0x57, 0x03, 0xDC, 0x56, 0x80, 0xDC, 0x35, 0x01, 0xDC, 0x55, 0x81, 0xD4, 0x53, 0xFD, 0xD5, 0x01, 0xFE, 0x74, 0x07, 0xFE, 0x73, 0x01, 0xFE, 0x94, 0x93, 0xFE, 0x75, 0xFE, 0x96, 0xFE, 0x77, 0xFD, 0xD9, 0xBB, 0x12, 0x99, 0xF1, 0xA1, 0xF4, 0xA2, 0x15, 0xA2, 0x37, 0x9A, 0x58, 0x82, 0x19, 0x41, 0x18, 0x31, 0x1A, 0x29, 0x3B, 0x21, 0x5C, 0x19, 0x5D, 0x11, 0x7E, 0x11, 0x9E, 0x09, 0x7E, 0x09, 0x9E, 0x03, 0x01, 0x9F, 0x05, 0x01, 0xBF, 0x01, 0x01, 0xDF, 0x93, 0x01, 0xDE, 0x01, 0xBD, 0x01, 0xDD, 0x01, 0xFB, 0x02, 0x9A, 0x14, 0x9C, 0x26, 0x1D, 0x26, 0xDD, 0x27, 0x5B, 0x0F, 0x15, 0x0F, 0x53, 0x0F, 0x73, 0x0F, 0x34, 0x27, 0x97, 0x37, 0x7A, 0x46, 0xBB, 0x44, 0xF8, 0x42, 0xF4, 0x62, 0x96, 0x59, 0xD4, 0x01, 0x61, 0x94, 0x82, 0x61, 0xB4, 0x59, 0xD4, 0x59, 0xB4, 0x02, 0x51, 0xB3, 0x80, 0x49, 0x93, 0x01, 0x49, 0x72, 0x01, 0x41, 0x72, 0x80, 0x41, 0x71, 0x01, 0x39, 0x71, 0x03, 0x39, 0x51, 0x80, 0x31, 0x30, 0x02, 0x31, 0x50, 0x80, 0x29, 0x30, 0x02, 0x31, 0x30, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x06, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x0F, + 0x03, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x08, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x21, 0x0E, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x8B, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x11, 0x11, 0x12, 0x19, 0x95, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x11, 0x19, 0x30, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x8B, 0x21, 0x50, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x21, 0xB5, 0x21, 0xD6, 0x21, 0xF6, 0x19, 0x95, 0x11, 0x12, 0x19, 0x32, 0x01, 0x21, 0x51, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x83, 0x19, 0x10, 0x19, 0x11, 0x19, 0x31, 0x11, 0x32, 0x03, 0x19, 0x52, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x19, 0x30, 0x19, 0x10, 0x02, 0x21, 0x30, 0x82, 0x29, 0x50, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x20, 0xEE, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x87, 0x29, 0x0F, 0x20, 0xEF, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, + 0x0F, 0x03, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x87, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x0D, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x8A, 0x09, 0x34, 0x09, 0x54, 0x11, 0xB6, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0xD6, 0x11, 0x75, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x07, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x0B, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x0E, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, + 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x09, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x19, 0x31, 0x01, 0x11, 0x32, 0x80, 0x19, 0xB5, 0x02, 0x21, 0xF6, 0x83, 0x19, 0xB5, 0x19, 0x73, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x10, 0x81, 0x21, 0x30, 0x29, 0x51, 0x01, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0E, 0x05, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x06, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x0B, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x91, 0x29, 0x0F, 0x28, 0xEE, 0x30, 0xEE, 0x38, 0x8D, 0x79, 0xD1, 0xAA, 0x94, 0xAA, 0x53, 0xAA, 0x32, 0xA9, 0xF1, 0xA1, 0xEF, 0xAA, 0x6E, 0xFD, 0x56, 0xFE, 0x35, 0xFE, 0x73, 0xFE, 0x92, 0xFE, 0x91, 0xFE, 0xB1, 0xFE, 0xB0, 0x02, 0xFE, 0x90, 0x8A, 0xFE, 0xB1, 0xFE, 0xB2, 0xFE, 0xB4, 0xFE, 0x96, 0xBC, 0x0F, 0x8A, 0x2B, + 0x8A, 0x2D, 0x9A, 0x6F, 0xAB, 0x11, 0xD4, 0x36, 0xDC, 0x77, 0x01, 0xE4, 0x77, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x88, 0xE4, 0x56, 0xDC, 0x56, 0xE4, 0x56, 0xE4, 0x55, 0xDC, 0x34, 0xDC, 0x53, 0xDC, 0xB1, 0xFE, 0x14, 0xFE, 0x73, 0x01, 0xFE, 0x91, 0x80, 0xFE, 0x90, 0x01, 0xFE, 0x70, 0x01, 0xFE, 0x90, 0x81, 0xFE, 0x6F, 0xFE, 0x90, 0x01, 0xFE, 0x6F, 0x82, 0xFE, 0x90, 0xFE, 0x6F, 0xFE, 0x70, 0x01, 0xFE, 0x90, 0x8B, 0xFE, 0x91, 0xFE, 0xB2, 0xFE, 0x94, 0xF5, 0xD4, 0xB3, 0x8E, 0x92, 0x6D, 0x92, 0x6E, 0xB3, 0x12, 0xCB, 0xD5, 0xDC, 0x57, 0xE4, 0x57, 0xE4, 0x77, 0x01, 0xE4, 0x57, 0x80, 0xDC, 0x57, 0x01, 0xE4, 0x57, 0x87, 0xDC, 0x56, 0xE4, 0x77, 0xE4, 0x56, 0xDC, 0x55, 0xDC, 0x54, 0xD4, 0x52, 0xF5, 0xB3, 0xFE, 0x52, 0x01, 0xFE, 0x71, 0x08, 0xFE, 0x70, 0x80, 0xFE, 0x6F, 0x03, 0xFE, 0x70, 0x89, 0xFE, 0x90, 0xFE, 0x91, 0xFE, 0xB2, 0xFE, 0x93, 0xF5, 0xD4, 0xB3, 0x6E, 0x92, 0x4D, 0x92, 0x2E, 0xAA, 0xF2, 0xCB, 0xD5, 0x05, 0xE4, 0x57, 0x03, 0xDC, 0x56, 0x87, 0xDC, 0x36, 0xDC, 0x55, 0xDC, 0x54, 0xDC, 0x73, 0xF5, 0xD4, 0xFE, 0x53, 0xFE, 0x73, 0xFE, 0x72, 0x03, 0xFE, 0x92, 0x87, 0xFE, 0x93, 0xFE, 0x95, 0xF5, 0xD4, 0xA3, 0x2C, 0x92, 0x6B, 0x92, 0x4C, 0xAB, 0x30, 0xC3, 0xD3, 0x01, 0xD4, 0x55, 0x04, 0xDC, 0x76, 0x08, 0xDC, 0x56, 0x01, 0xDC, 0x36, 0x03, 0xDC, 0x56, 0x8A, 0xE4, 0x56, 0xE4, 0x76, 0xDC, 0x76, 0xE4, 0x96, 0xF5, 0x38, 0xFD, 0x9B, 0x89, 0xCD, 0x92, 0x0F, 0x91, 0xEF, 0xAA, 0xD2, 0xE4, 0x98, 0x01, 0xDC, 0x77, 0x11, 0xDC, 0x57, 0x02, + 0xDC, 0x56, 0x80, 0xDC, 0x36, 0x03, 0xDC, 0x37, 0x80, 0xDC, 0x57, 0x02, 0xDC, 0x56, 0x80, 0xDC, 0x76, 0x01, 0xDC, 0x56, 0x01, 0xDC, 0x76, 0x80, 0xDC, 0x56, 0x01, 0xDC, 0x55, 0x84, 0xDC, 0x53, 0xE4, 0xF2, 0xFE, 0x14, 0xFE, 0x73, 0xFE, 0x72, 0x01, 0xFE, 0x71, 0x02, 0xFE, 0x70, 0x80, 0xFE, 0x90, 0x02, 0xFE, 0x70, 0x01, 0xFE, 0x6F, 0x80, 0xFE, 0x90, 0x01, 0xFE, 0x6F, 0x81, 0xFE, 0x8F, 0xFE, 0x6F, 0x01, 0xFE, 0x8F, 0x80, 0xFE, 0x6F, 0x0B, 0xFE, 0x8F, 0x80, 0xFE, 0x90, 0x02, 0xFE, 0xB0, 0x01, 0xFE, 0xB1, 0x86, 0xFE, 0xB2, 0xFE, 0xB4, 0xD5, 0x10, 0x8A, 0x8A, 0x92, 0x6C, 0x92, 0x8D, 0xBB, 0x72, 0x02, 0xDC, 0x56, 0x02, 0xDC, 0x76, 0x03, 0xDC, 0x56, 0x03, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x83, 0xDC, 0x77, 0xE4, 0x97, 0xDC, 0x57, 0xBB, 0x54, 0x01, 0x9A, 0x30, 0x82, 0xAA, 0xD2, 0xCB, 0xF6, 0xE4, 0x78, 0x02, 0xDC, 0x77, 0x80, 0xDC, 0x57, 0x01, 0xDC, 0x36, 0x03, 0xDC, 0x56, 0x06, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x56, 0x01, 0xDC, 0x57, 0x02, 0xDC, 0x56, 0x80, 0xDC, 0x57, 0x08, 0xDC, 0x56, 0x01, 0xDC, 0x55, 0x83, 0xDC, 0x73, 0xDC, 0xD2, 0xFD, 0xF4, 0xFE, 0x53, 0x01, 0xFE, 0x72, 0x03, 0xFE, 0x71, 0x02, 0xFE, 0x70, 0x01, 0xFE, 0x91, 0x01, 0xFE, 0xB2, 0x87, 0xFE, 0xB3, 0xFE, 0x95, 0xDC, 0xF3, 0x8A, 0x4B, 0x8A, 0x0D, 0x92, 0x0E, 0xC3, 0x74, 0xD4, 0x16, 0x05, 0xDC, 0x57, 0x03, 0xDC, 0x56, 0x01, 0xDC, 0x55, 0x83, 0xDC, 0x54, 0xD4, 0x52, 0xFD, 0xF5, 0xFE, 0x74, 0x07, 0xFE, 0x93, 0x01, 0xFE, 0x94, 0x01, 0xFE, 0x95, + 0x90, 0xFE, 0x96, 0xFE, 0x58, 0xFD, 0x59, 0xAA, 0x51, 0xA1, 0xF2, 0xA1, 0xF4, 0xA1, 0xF5, 0xA2, 0x16, 0x9A, 0x38, 0x79, 0xD8, 0x48, 0xF7, 0x39, 0x19, 0x31, 0x3B, 0x29, 0x5C, 0x21, 0x5C, 0x19, 0x7D, 0x11, 0x7E, 0x01, 0x09, 0x9E, 0x03, 0x01, 0x9F, 0x04, 0x01, 0xBF, 0x01, 0x01, 0xDF, 0x01, 0x01, 0xDE, 0x94, 0x01, 0xDD, 0x01, 0xDC, 0x01, 0xFB, 0x02, 0xBA, 0x14, 0x9B, 0x1D, 0xFC, 0x26, 0xFD, 0x27, 0x5A, 0x0F, 0x15, 0x07, 0x33, 0x0F, 0x74, 0x0F, 0x55, 0x27, 0xB8, 0x2F, 0x5A, 0x3E, 0x9B, 0x45, 0x7A, 0x4B, 0xB7, 0x5A, 0xF6, 0x51, 0xF4, 0x59, 0xD4, 0x59, 0x93, 0x01, 0x59, 0xD4, 0x81, 0x51, 0xB4, 0x51, 0x93, 0x03, 0x49, 0x93, 0x01, 0x41, 0x72, 0x80, 0x41, 0x92, 0x04, 0x39, 0x71, 0x82, 0x39, 0x51, 0x31, 0x51, 0x31, 0x50, 0x01, 0x31, 0x30, 0x80, 0x31, 0x50, 0x03, 0x31, 0x30, 0x81, 0x29, 0x30, 0x31, 0x30, 0x05, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x11, 0x11, 0x12, + 0x19, 0xB5, 0x19, 0xD7, 0x19, 0xD6, 0x19, 0x75, 0x11, 0x11, 0x19, 0x10, 0x03, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x8C, 0x21, 0x50, 0x19, 0x31, 0x19, 0x32, 0x11, 0x12, 0x21, 0xB5, 0x29, 0xF6, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x19, 0x12, 0x21, 0x51, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x85, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x19, 0x11, 0x01, 0x19, 0x31, 0x83, 0x19, 0x51, 0x21, 0x51, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x88, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x07, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x21, 0x0E, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, + 0x0D, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x11, 0x54, 0x80, 0x19, 0x95, 0x02, 0x19, 0xD6, 0x84, 0x11, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x02, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x07, + 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x87, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x33, 0x19, 0x94, 0x02, 0x21, 0xF6, 0x85, 0x19, 0xB5, 0x19, 0x73, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x29, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x81, 0x29, 0x2F, 0x21, 0x0E, 0x02, 0x29, 0x2F, 0x85, 0x21, 0x0E, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x0D, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x0B, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x8D, 0x29, 0x0F, 0x29, 0x0E, 0x30, 0xEE, 0x38, 0xAD, 0x61, 0x2F, 0xA2, 0xB4, 0xAA, 0x53, 0xAA, 0x32, 0xAA, 0x11, 0xA1, 0xCF, 0xA2, 0x0E, 0xE4, 0x74, 0xFE, 0x36, 0xFE, 0x74, 0x01, 0xFE, 0x92, 0x01, 0xFE, 0xB1, 0x02, 0xFE, 0xB0, 0x8B, 0xFE, 0xB1, 0xFE, 0xB2, 0xFE, 0xB3, 0xFE, 0x95, 0xB3, 0xEE, 0x82, 0x2B, 0x8A, 0x2D, 0x9A, 0x6E, 0xB3, + 0x11, 0xD4, 0x15, 0xDC, 0x76, 0xDC, 0x77, 0x02, 0xDC, 0x56, 0x8A, 0xE4, 0x56, 0xDC, 0x36, 0xE4, 0x56, 0xDC, 0x36, 0xE4, 0x55, 0xDC, 0x35, 0xDC, 0x34, 0xDC, 0x52, 0xDC, 0xB1, 0xFE, 0x14, 0xFE, 0x72, 0x01, 0xFE, 0x91, 0x07, 0xFE, 0x90, 0x01, 0xFE, 0x8F, 0x02, 0xFE, 0x90, 0x89, 0xFE, 0xB0, 0xFE, 0xB1, 0xFE, 0xB2, 0xFE, 0xB3, 0xF5, 0xF4, 0xAB, 0x6D, 0x9A, 0x8D, 0x92, 0x6E, 0xAA, 0xF1, 0xCB, 0xD5, 0x03, 0xDC, 0x57, 0x02, 0xE4, 0x57, 0x01, 0xE4, 0x77, 0x87, 0xE4, 0x76, 0xE4, 0x56, 0xDC, 0x55, 0xDC, 0x54, 0xD4, 0x51, 0xF5, 0xD3, 0xFE, 0x52, 0xFE, 0x71, 0x05, 0xFE, 0x70, 0x01, 0xFE, 0x6F, 0x01, 0xFE, 0x90, 0x82, 0xFE, 0x70, 0xFE, 0x90, 0xFE, 0x8F, 0x01, 0xFE, 0x90, 0x8A, 0xFE, 0xB0, 0xFE, 0xB1, 0xFE, 0xB2, 0xFE, 0x93, 0xF5, 0xF4, 0xAB, 0x4D, 0x92, 0x4C, 0x92, 0x2E, 0xAA, 0xF1, 0xCB, 0xD5, 0xDC, 0x57, 0x01, 0xE4, 0x77, 0x80, 0xDC, 0x56, 0x01, 0xE4, 0x57, 0x80, 0xE4, 0x56, 0x03, 0xDC, 0x56, 0x85, 0xDC, 0x55, 0xDC, 0x54, 0xD4, 0x72, 0xF5, 0xD3, 0xFE, 0x53, 0xFE, 0x72, 0x02, 0xFE, 0x92, 0x8B, 0xFE, 0xB2, 0xFE, 0x92, 0xFE, 0xB2, 0xFE, 0x93, 0xFE, 0x94, 0xFE, 0x34, 0xC4, 0x50, 0x8A, 0x6A, 0x9A, 0x8C, 0xA2, 0xCE, 0xBB, 0x71, 0xD4, 0x55, 0x02, 0xDC, 0x76, 0x0C, 0xDC, 0x56, 0x80, 0xE4, 0x56, 0x04, 0xDC, 0x56, 0x89, 0xDC, 0x76, 0xE4, 0x96, 0xF5, 0x58, 0xFD, 0x9A, 0x89, 0xCD, 0x9A, 0x0F, 0x91, 0xEF, 0xA2, 0x91, 0xE4, 0xB8, 0xDC, 0x77, 0x02, 0xDC, 0x57, 0x80, 0xDC, 0x36, 0x02, 0xDC, 0x37, 0x83, 0xDC, 0x36, 0xDC, 0x37, 0xDC, 0x36, 0xDC, + 0x57, 0x01, 0xDC, 0x36, 0x02, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x81, 0xDC, 0x57, 0xDC, 0x56, 0x03, 0xDC, 0x36, 0x81, 0xDC, 0x57, 0xDC, 0x37, 0x01, 0xDC, 0x36, 0x01, 0xDC, 0x56, 0x82, 0xDC, 0x76, 0xDC, 0x56, 0xDC, 0x76, 0x03, 0xDC, 0x56, 0x86, 0xDC, 0x55, 0xDC, 0x54, 0xDC, 0x73, 0xE4, 0xF2, 0xFE, 0x34, 0xFE, 0x73, 0xFE, 0x92, 0x01, 0xFE, 0x91, 0x04, 0xFE, 0x90, 0x80, 0xFE, 0xB0, 0x01, 0xFE, 0x90, 0x0D, 0xFE, 0x8F, 0x01, 0xFE, 0xAF, 0x01, 0xFE, 0x8F, 0x01, 0xFE, 0xAF, 0x04, 0xFE, 0xB0, 0x01, 0xFE, 0xD1, 0x87, 0xFE, 0xB1, 0xFE, 0xB2, 0xFE, 0x94, 0xDD, 0x52, 0x8A, 0xAA, 0x92, 0xAC, 0x9A, 0x8D, 0xB3, 0x51, 0x02, 0xDC, 0x76, 0x07, 0xDC, 0x56, 0x01, 0xDC, 0x57, 0x01, 0xDC, 0x56, 0x83, 0xDC, 0x77, 0xE4, 0x97, 0xDC, 0x36, 0xBB, 0x74, 0x01, 0x9A, 0x30, 0x85, 0xAA, 0xD2, 0xCB, 0xD5, 0xDC, 0x77, 0xE4, 0x77, 0xDC, 0x77, 0xDC, 0x57, 0x0F, 0xDC, 0x56, 0x80, 0xDC, 0x57, 0x02, 0xDC, 0x56, 0x01, 0xDC, 0x36, 0x02, 0xDC, 0x56, 0x03, 0xDC, 0x36, 0x04, 0xDC, 0x56, 0x01, 0xDC, 0x55, 0x85, 0xDC, 0x54, 0xDC, 0x73, 0xDC, 0xD2, 0xFE, 0x14, 0xFE, 0x73, 0xFE, 0x92, 0x09, 0xFE, 0x91, 0x01, 0xFE, 0xB2, 0x87, 0xFE, 0xB3, 0xFE, 0x95, 0xDD, 0x13, 0x8A, 0x4B, 0x8A, 0x0D, 0x92, 0x0E, 0xBB, 0x74, 0xD4, 0x16, 0x04, 0xDC, 0x57, 0x04, 0xDC, 0x56, 0x85, 0xDC, 0x55, 0xDC, 0x35, 0xDC, 0x34, 0xD4, 0x32, 0xFE, 0x35, 0xFE, 0x94, 0x03, 0xFE, 0xB3, 0x01, 0xFE, 0x93, 0x01, 0xFE, 0xB4, 0x01, 0xFE, 0x94, 0x95, 0xFE, 0x95, 0xFE, 0x96, 0xFE, 0x77, 0xFE, 0x5A, 0xBB, 0x32, + 0xA2, 0x11, 0xA1, 0xF3, 0xA1, 0xF4, 0xA1, 0xF5, 0xA2, 0x16, 0x9A, 0x18, 0x79, 0xD8, 0x50, 0xF7, 0x41, 0x19, 0x41, 0x3A, 0x31, 0x3B, 0x29, 0x3B, 0x21, 0x3C, 0x19, 0x7D, 0x11, 0x7E, 0x09, 0x9E, 0x09, 0x9F, 0x02, 0x01, 0x9F, 0x03, 0x01, 0xBF, 0x03, 0x01, 0xDF, 0x97, 0x01, 0xDE, 0x01, 0xDD, 0x01, 0xDC, 0x01, 0xFB, 0x02, 0xBA, 0x14, 0xBB, 0x1E, 0x1C, 0x26, 0xDC, 0x27, 0x5A, 0x0F, 0x14, 0x07, 0x53, 0x0F, 0x74, 0x0F, 0x55, 0x1F, 0x98, 0x2F, 0x7A, 0x36, 0x9B, 0x3D, 0x9A, 0x64, 0xBA, 0x53, 0x16, 0x52, 0x35, 0x59, 0xD4, 0x59, 0xF4, 0x59, 0xD4, 0x51, 0xB4, 0x01, 0x51, 0xB3, 0x02, 0x49, 0x93, 0x84, 0x49, 0x92, 0x41, 0x72, 0x41, 0x92, 0x41, 0x72, 0x41, 0x71, 0x01, 0x39, 0x71, 0x02, 0x39, 0x51, 0x83, 0x31, 0x51, 0x31, 0x50, 0x31, 0x30, 0x31, 0x50, 0x03, 0x31, 0x30, 0x80, 0x29, 0x30, 0x0C, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x09, 0x29, 0x0F, 0x08, 0x29, 0x2F, 0x88, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x87, 0x19, 0x31, 0x11, 0x12, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xB6, 0x11, 0x74, 0x11, 0x11, 0x19, 0x31, 0x02, 0x21, 0x30, 0x04, 0x21, 0x2F, 0x8C, 0x21, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x12, 0x21, 0xB5, 0x21, 0xF6, 0x21, 0xD6, 0x19, + 0x95, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x4F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x80, 0x29, 0x30, 0x04, 0x21, 0x10, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x0E, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x01, 0x20, 0xEE, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x11, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, + 0x02, 0x21, 0x0F, 0x86, 0x29, 0x2F, 0x19, 0x53, 0x19, 0x33, 0x11, 0x33, 0x11, 0x54, 0x11, 0x95, 0x19, 0xD6, 0x01, 0x19, 0xF6, 0x88, 0x19, 0x95, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x21, 0x31, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x0A, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x0B, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x0D, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x09, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x0C, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x09, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0E, 0x03, 0x29, 0x2F, 0x88, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x10, 0x19, 0x32, 0x19, 0x53, 0x11, 0x33, 0x11, 0x54, 0x19, 0xD6, 0x01, 0x21, 0xF6, 0x81, 0x19, 0xB5, 0x11, 0x33, 0x01, 0x11, 0x11, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x01, 0x29, 0x30, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x21, 0x0E, 0x29, 0x2E, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x83, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0E, 0x09, 0x29, 0x0F, 0x01, 0x29, + 0x2F, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x85, 0x21, 0x0E, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x0D, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x8F, 0x29, 0x0F, 0x29, 0x0E, 0x31, 0x0E, 0x38, 0xCD, 0x50, 0xED, 0x9A, 0x94, 0xA2, 0x53, 0xAA, 0x52, 0xAA, 0x12, 0xA1, 0xF0, 0x99, 0xAE, 0xBB, 0x10, 0xFE, 0x57, 0xFE, 0x94, 0xFE, 0xB3, 0xFE, 0xB2, 0x01, 0xFE, 0xB1, 0x02, 0xFE, 0xB0, 0x8A, 0xFE, 0xB1, 0xFE, 0xD2, 0xFE, 0xB3, 0xFE, 0xB5, 0xBC, 0x0E, 0x82, 0x2B, 0x8A, 0x2D, 0x9A, 0x6E, 0xAA, 0xF1, 0xD4, 0x15, 0xDC, 0x76, 0x04, 0xDC, 0x56, 0x80, 0xDC, 0x36, 0x01, 0xE4, 0x35, 0x80, 0xDC, 0x35, 0x01, 0xDC, 0x34, 0x85, 0xDC, 0x52, 0xDC, 0xB1, 0xFE, 0x34, 0xFE, 0x93, 0xFE, 0x91, 0xFE, 0xB1, 0x02, 0xFE, 0x90, 0x0A, 0xFE, 0xB0, 0x88, 0xFE, 0xB1, 0xFE, 0xD2, 0xFE, 0xB3, 0xF5, 0xF4, 0xA3, 0x2C, 0x8A, 0x4B, 0x8A, 0x2D, 0xA2, 0x8F, 0xC3, 0xB4, 0x08, 0xDC, 0x56, 0x01, 0xDC, 0x55, 0x84, 0xDC, 0x54, 0xDC, 0x53, 0xD4, 0x51, 0xF5, 0xD2, 0xFE, 0x72, 0x01, 0xFE, 0x91, 0x0B, 0xFE, 0x90, 0x02, 0xFE, 0xB0, 0x89, 0xFE, 0xD1, 0xFE, 0xB1, 0xFE, 0x93, 0xF5, 0xD3, 0xA3, 0x0C, + 0x92, 0x2C, 0x92, 0x2D, 0xAA, 0xD0, 0xCB, 0xF5, 0xDC, 0x57, 0x04, 0xDC, 0x56, 0x80, 0xDC, 0x36, 0x01, 0xDC, 0x56, 0x01, 0xDC, 0x35, 0x85, 0xDC, 0x34, 0xDC, 0x54, 0xD4, 0x71, 0xF5, 0xF3, 0xFE, 0x73, 0xFE, 0x92, 0x07, 0xFE, 0xB2, 0x88, 0xFE, 0xB3, 0xFE, 0x95, 0xED, 0xB3, 0xB3, 0x8D, 0xA2, 0xEC, 0xAB, 0x0F, 0xB3, 0x50, 0xC3, 0xD3, 0xCC, 0x14, 0x01, 0xD4, 0x55, 0x81, 0xDC, 0x55, 0xDC, 0x76, 0x0F, 0xDC, 0x56, 0x84, 0xDC, 0x75, 0xE4, 0xB6, 0xF5, 0x57, 0xFD, 0xBA, 0x89, 0xCD, 0x01, 0x92, 0x0F, 0x82, 0x9A, 0x50, 0xE4, 0xB8, 0xDC, 0x76, 0x02, 0xDC, 0x56, 0x04, 0xDC, 0x36, 0x80, 0xDC, 0x57, 0x08, 0xDC, 0x36, 0x80, 0xDC, 0x56, 0x08, 0xDC, 0x36, 0x05, 0xDC, 0x56, 0x02, 0xDC, 0x55, 0x01, 0xDC, 0x54, 0x86, 0xD4, 0x52, 0xDC, 0xB1, 0xFE, 0x34, 0xFE, 0x93, 0xFE, 0xB2, 0xFE, 0x91, 0xFE, 0xB1, 0x01, 0xFE, 0x90, 0x06, 0xFE, 0xB0, 0x14, 0xFE, 0xAF, 0x80, 0xFE, 0xB0, 0x02, 0xFE, 0xD0, 0x01, 0xFE, 0xD1, 0x8A, 0xFE, 0xD2, 0xFE, 0xB2, 0xFE, 0xB4, 0xF6, 0x14, 0xA3, 0x2C, 0x92, 0xAC, 0x9A, 0xAD, 0xA2, 0xAF, 0xCB, 0xF4, 0xD4, 0x35, 0xDC, 0x76, 0x0A, 0xDC, 0x56, 0x88, 0xDC, 0x76, 0xDC, 0x77, 0xD4, 0x16, 0xBB, 0x53, 0x9A, 0x50, 0x9A, 0x30, 0xAA, 0xB1, 0xCB, 0xB5, 0xDC, 0x57, 0x02, 0xDC, 0x77, 0x80, 0xD4, 0x36, 0x01, 0xDC, 0x36, 0x0C, 0xDC, 0x56, 0x01, 0xDC, 0x36, 0x80, 0xDC, 0x56, 0x04, 0xDC, 0x36, 0x80, 0xDC, 0x56, 0x03, 0xDC, 0x36, 0x80, 0xDC, 0x56, 0x04, 0xDC, 0x35, 0x01, 0xDC, 0x34, 0x84, 0xD4, 0x52, 0xDC, 0xD1, 0xFE, 0x34, 0xFE, 0x93, 0xFE, + 0x92, 0x03, 0xFE, 0x91, 0x04, 0xFE, 0xB1, 0x02, 0xFE, 0xB2, 0x88, 0xFE, 0xD3, 0xFE, 0xB5, 0xDD, 0x33, 0x8A, 0x2B, 0x8A, 0x0D, 0x89, 0xEE, 0xBB, 0x73, 0xD4, 0x16, 0xDC, 0x56, 0x01, 0xDC, 0x57, 0x05, 0xDC, 0x56, 0x86, 0xDC, 0x55, 0xDC, 0x35, 0xDC, 0x34, 0xDC, 0x54, 0xCC, 0x31, 0xFE, 0x75, 0xFE, 0xB4, 0x04, 0xFE, 0xB3, 0x03, 0xFE, 0xB4, 0x01, 0xFE, 0xB5, 0x94, 0xFE, 0x97, 0xFE, 0x78, 0xF5, 0x37, 0x99, 0xEF, 0xA1, 0xF2, 0xA1, 0xF3, 0xA1, 0xF4, 0xA1, 0xF5, 0xA2, 0x16, 0x9A, 0x17, 0x79, 0x77, 0x58, 0xF7, 0x59, 0x39, 0x49, 0x19, 0x38, 0xD9, 0x51, 0x7B, 0x51, 0xFD, 0x21, 0x3C, 0x19, 0x7E, 0x09, 0x7E, 0x09, 0x9E, 0x01, 0x01, 0x9F, 0x05, 0x01, 0xBF, 0x8C, 0x01, 0xDF, 0x01, 0xDE, 0x01, 0xDF, 0x01, 0xDE, 0x01, 0xDD, 0x01, 0xFD, 0x02, 0x1B, 0x02, 0xB9, 0x14, 0xBB, 0x1E, 0x1C, 0x26, 0xFC, 0x27, 0x5A, 0x0F, 0x14, 0x01, 0x0F, 0x73, 0x8B, 0x0F, 0x54, 0x1F, 0x98, 0x27, 0x5A, 0x2E, 0xBB, 0x4E, 0x3C, 0x6D, 0x5C, 0x53, 0x56, 0x5A, 0xB6, 0x51, 0xF4, 0x5A, 0x15, 0x51, 0xD4, 0x51, 0xB4, 0x01, 0x51, 0xB3, 0x01, 0x49, 0x93, 0x01, 0x49, 0x92, 0x02, 0x41, 0x92, 0x01, 0x41, 0x71, 0x80, 0x39, 0x51, 0x01, 0x39, 0x71, 0x03, 0x31, 0x50, 0x01, 0x31, 0x30, 0x01, 0x31, 0x50, 0x01, 0x29, 0x30, 0x0B, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, + 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x21, 0x30, 0x19, 0x31, 0x11, 0x32, 0x19, 0xB5, 0x01, 0x19, 0xD7, 0x97, 0x11, 0x74, 0x11, 0x11, 0x19, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0xB5, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x74, 0x10, 0xF2, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x84, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x20, 0xEF, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x21, 0x0E, 0x83, 0x29, 0x0F, 0x21, 0x0E, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x02, 0x21, 0x0E, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x80, 0x20, 0xEE, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, + 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x0C, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x09, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x8D, 0x29, 0x2F, 0x21, 0x52, 0x19, 0x32, 0x19, 0x12, 0x11, 0x33, 0x11, 0x54, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xF6, 0x21, 0xF6, 0x11, 0x74, 0x11, 0x53, 0x19, 0x32, 0x19, 0x31, 0x02, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x0D, 0x29, 0x0F, 0x81, 0x21, 0x0E, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x0F, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x11, 0x29, 0x0F, 0x01, 0x29, 0x2F, + 0x80, 0x29, 0x0E, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x11, 0x52, 0x11, 0x53, 0x11, 0x54, 0x02, 0x21, 0xF6, 0x85, 0x19, 0x95, 0x19, 0x53, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x01, 0x29, 0x30, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x10, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x09, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x0E, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x8D, 0x31, 0x0E, 0x30, 0xCE, 0x48, 0xCD, 0x8A, 0x73, 0xA2, 0x73, 0xAA, 0x52, 0xAA, 0x32, 0xA1, 0xF1, 0x99, 0xCF, 0x91, 0xCC, 0xFD, 0xD6, 0xFE, 0x75, 0xFE, 0xB3, 0xFE, 0xD2, 0x01, 0xFE, 0xB1, 0x80, 0xFE, 0xD1, 0x01, 0xFE, 0xD0, 0x01, 0xFE, 0xD1, 0x89, 0xFE, 0xB3, 0xFE, 0xB5, 0xBC, 0x2E, 0x82, 0x2A, 0x8A, 0x2D, 0x92, 0x6E, 0xA2, 0xD0, 0xD4, 0x14, 0xDC, 0x55, 0xDC, 0x56, 0x02, 0xDC, 0x55, 0x02, 0xDC, 0x35, 0x02, 0xDC, 0x34, 0x84, 0xDC, 0x33, + 0xDC, 0x52, 0xDC, 0xD1, 0xFE, 0x33, 0xFE, 0x92, 0x02, 0xFE, 0xB1, 0x02, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x06, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x01, 0xFE, 0xD1, 0x88, 0xFE, 0xD2, 0xFE, 0xB3, 0xF5, 0xF3, 0x9A, 0xEA, 0x8A, 0x2A, 0x8A, 0x0C, 0x9A, 0x6E, 0xC3, 0xD3, 0xDC, 0x56, 0x01, 0xDC, 0x55, 0x82, 0xDC, 0x35, 0xDC, 0x55, 0xDC, 0x56, 0x03, 0xDC, 0x55, 0x85, 0xDC, 0x34, 0xDC, 0x33, 0xDC, 0x53, 0xD4, 0x50, 0xF5, 0xD2, 0xFE, 0x92, 0x01, 0xFE, 0xB1, 0x01, 0xFE, 0xB0, 0x01, 0xFE, 0x90, 0x81, 0xFE, 0xB0, 0xFE, 0x90, 0x07, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x01, 0xFE, 0xD1, 0x87, 0xFE, 0x93, 0xF5, 0xF3, 0x9A, 0xEB, 0x8A, 0x2B, 0x92, 0x2D, 0xA2, 0xCF, 0xCB, 0xF4, 0xDC, 0x56, 0x03, 0xDC, 0x55, 0x02, 0xDC, 0x35, 0x81, 0xDC, 0x55, 0xDC, 0x35, 0x01, 0xDC, 0x34, 0x82, 0xDC, 0x53, 0xD4, 0x51, 0xFE, 0x13, 0x01, 0xFE, 0x92, 0x04, 0xFE, 0xB1, 0x03, 0xFE, 0xD2, 0x89, 0xFE, 0xD3, 0xFE, 0xB4, 0xFE, 0x54, 0xDD, 0x11, 0xAB, 0x4D, 0xA3, 0x2D, 0xB3, 0x6F, 0xBB, 0xB0, 0xC3, 0xF2, 0xC4, 0x12, 0x01, 0xD4, 0x54, 0x81, 0xD4, 0x55, 0xDC, 0x75, 0x02, 0xD4, 0x55, 0x01, 0xDC, 0x55, 0x01, 0xDC, 0x35, 0x06, 0xDC, 0x55, 0x84, 0xDC, 0x75, 0xDC, 0x95, 0xED, 0x56, 0xFD, 0xB9, 0x89, 0xCC, 0x01, 0x92, 0x0F, 0x82, 0x9A, 0x2F, 0xE4, 0xB7, 0xDC, 0x76, 0x03, 0xDC, 0x56, 0x07, 0xDC, 0x36, 0x01, 0xDC, 0x35, 0x06, 0xDC, 0x36, 0x80, 0xDC, 0x56, 0x05, 0xDC, 0x36, 0x01, 0xDC, 0x35, 0x05, 0xDC, 0x55, 0x01, 0xD4, 0x54, 0x84, 0xD4, 0x53, 0xD4, 0x52, 0xDC, 0xB0, 0xFE, 0x33, 0xFE, + 0x92, 0x01, 0xFE, 0xB1, 0x80, 0xFE, 0xD1, 0x03, 0xFE, 0xB0, 0x05, 0xFE, 0xD0, 0x81, 0xFE, 0xCF, 0xFE, 0xD0, 0x06, 0xFE, 0xCF, 0x08, 0xFE, 0xAF, 0x01, 0xFE, 0xCF, 0x04, 0xFE, 0xD0, 0x01, 0xFE, 0xD1, 0x01, 0xFE, 0xD2, 0x88, 0xFE, 0xB4, 0xFE, 0x55, 0xCC, 0x90, 0x92, 0xCB, 0x9A, 0xAC, 0xA3, 0x0E, 0xB3, 0x4F, 0xBB, 0x91, 0xCB, 0xF3, 0x01, 0xDC, 0x75, 0x80, 0xDC, 0x55, 0x06, 0xDC, 0x56, 0x01, 0xDC, 0x76, 0x8F, 0xCC, 0x15, 0xB3, 0x32, 0x9A, 0x50, 0x9A, 0x2F, 0xA2, 0x90, 0xC3, 0xB4, 0xDC, 0x56, 0xDC, 0x76, 0xDC, 0x56, 0xD4, 0x56, 0xDC, 0x56, 0xDC, 0x35, 0xDC, 0x55, 0xDC, 0x56, 0xDC, 0x55, 0xDC, 0x35, 0x01, 0xDC, 0x55, 0x80, 0xDC, 0x56, 0x15, 0xDC, 0x35, 0x81, 0xDC, 0x55, 0xDC, 0x35, 0x02, 0xDC, 0x34, 0x84, 0xD4, 0x33, 0xD4, 0x52, 0xD4, 0xD1, 0xFE, 0x54, 0xFE, 0x93, 0x01, 0xFE, 0xB2, 0x07, 0xFE, 0xB1, 0x80, 0xFE, 0xB2, 0x01, 0xFE, 0xD2, 0x89, 0xFE, 0xD3, 0xFE, 0xB5, 0xDD, 0x33, 0x8A, 0x2A, 0x8A, 0x0C, 0x89, 0xED, 0xB3, 0x52, 0xD4, 0x15, 0xDC, 0x56, 0xDC, 0x76, 0x05, 0xDC, 0x56, 0x81, 0xDC, 0x55, 0xDC, 0x35, 0x01, 0xDC, 0x34, 0x84, 0xD4, 0x53, 0xD4, 0x71, 0xFE, 0x75, 0xFE, 0xB4, 0xFE, 0xD4, 0x04, 0xFE, 0xB3, 0x01, 0xFE, 0xD4, 0x01, 0xFE, 0xB5, 0x85, 0xFE, 0x96, 0xFE, 0x58, 0xFD, 0xF9, 0xAA, 0x8F, 0xA1, 0xF1, 0xA1, 0xD3, 0x01, 0xA1, 0xF4, 0x8E, 0xA1, 0xF5, 0xA2, 0x16, 0x91, 0xF7, 0x71, 0x35, 0x60, 0xF6, 0x69, 0x58, 0x50, 0xD7, 0x59, 0x39, 0x82, 0x9E, 0x7A, 0x9F, 0x31, 0x3B, 0x21, 0x3C, 0x11, 0x7D, 0x09, 0x7E, 0x09, 0x9F, 0x01, + 0x01, 0x9F, 0x02, 0x01, 0xBF, 0x81, 0x01, 0xDF, 0x01, 0xBE, 0x03, 0x01, 0xDE, 0x96, 0x01, 0xDD, 0x01, 0xFC, 0x02, 0x1B, 0x02, 0xD9, 0x14, 0xDB, 0x1E, 0x1C, 0x26, 0xDC, 0x1F, 0x5A, 0x0F, 0x34, 0x07, 0x53, 0x0F, 0x73, 0x0F, 0x75, 0x1F, 0xB9, 0x1F, 0x5A, 0x36, 0xFC, 0x4E, 0x7D, 0x6D, 0xBD, 0x43, 0x36, 0x4A, 0x95, 0x4A, 0x14, 0x51, 0xF4, 0x51, 0xD4, 0x51, 0xB4, 0x01, 0x51, 0xB3, 0x81, 0x49, 0xB3, 0x49, 0x93, 0x01, 0x49, 0x92, 0x80, 0x41, 0x92, 0x01, 0x41, 0x72, 0x80, 0x41, 0x92, 0x02, 0x39, 0x71, 0x81, 0x39, 0x51, 0x39, 0x50, 0x06, 0x31, 0x50, 0x80, 0x31, 0x30, 0x08, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x0E, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x0B, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x19, 0x11, 0x11, 0x32, 0x19, 0x95, 0x19, 0xF7, 0x19, 0xD7, 0x19, 0x95, 0x11, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x05, 0x21, 0x2F, 0x8A, 0x19, 0x10, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x19, 0xB5, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x75, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x0A, 0x29, 0x0F, 0x80, 0x29, + 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x02, 0x28, 0xEF, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x07, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x0F, 0x21, 0x0E, 0x21, 0x0F, 0x03, 0x21, 0x0E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0E, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x0A, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0E, 0x02, 0x29, 0x2F, 0x87, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x8D, 0x21, 0x10, 0x21, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x11, 0x74, 0x19, 0xB5, 0x21, 0xF6, 0x19, 0xF6, 0x19, 0xD6, 0x19, 0x94, 0x19, 0x53, 0x11, 0x31, 0x19, 0x31, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, + 0x29, 0x2F, 0x83, 0x29, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x0B, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x0C, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x09, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x0A, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x21, 0x0E, 0x03, 0x29, 0x2F, 0x90, 0x21, 0x2F, 0x21, 0x0F, 0x19, 0x0F, 0x19, 0x10, 0x19, 0x31, 0x19, 0x52, 0x11, 0x33, 0x09, 0x33, 0x21, 0xF6, 0x22, 0x37, 0x21, 0xD6, 0x19, 0x74, 0x19, 0x73, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x20, 0xEF, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x85, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x13, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, + 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x20, 0xEE, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x0D, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x8E, 0x30, 0xEE, 0x38, 0xAD, 0x71, 0xD1, 0xA2, 0x73, 0xAA, 0x53, 0xAA, 0x32, 0xA2, 0x11, 0x99, 0xD0, 0x91, 0xAD, 0xCB, 0xF1, 0xFE, 0x36, 0xFE, 0x94, 0xFE, 0xD2, 0xFE, 0xB2, 0xFE, 0xB1, 0x04, 0xFE, 0xD1, 0x87, 0xFE, 0xD2, 0xFE, 0xB4, 0xC4, 0x6E, 0x7A, 0x09, 0x8A, 0x2C, 0x92, 0x6D, 0x9A, 0xAE, 0xCC, 0x14, 0x02, 0xD4, 0x55, 0x01, 0xDC, 0x55, 0x03, 0xDC, 0x54, 0x01, 0xDC, 0x33, 0x84, 0xDC, 0x52, 0xD4, 0x71, 0xDC, 0xB0, 0xFE, 0x53, 0xFE, 0xB2, 0x01, 0xFE, 0xB1, 0x80, 0xFE, 0xB0, 0x01, 0xFE, 0xD0, 0x81, 0xFE, 0xB0, 0xFE, 0xD0, 0x01, 0xFE, 0xB0, 0x06, 0xFE, 0xD0, 0x01, 0xFE, 0xF1, 0x86, 0xFE, 0xB2, 0xF6, 0x12, 0x92, 0xA8, 0x82, 0x29, 0x82, 0x0A, 0x92, 0x6C, 0xBB, 0x71, 0x03, 0xDC, 0x54, 0x02, 0xDC, 0x55, 0x01, 0xDC, 0x54, 0x01, 0xD4, 0x33, 0x86, 0xD4, 0x32, 0xD4, 0x52, 0xD4, 0x70, 0xF5, 0xD1, 0xFE, 0xB2, 0xFE, 0xB1, 0xFE, 0xD1, 0x06, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x03, 0xFE, 0xB0, 0x02, 0xFE, 0xD0, 0x01, 0xFE, 0xD1, 0x89, 0xFE, 0xB2, 0xF5, 0xF3, 0x92, 0xC9, 0x8A, 0x2A, 0x8A, 0x2C, 0x9A, 0xAE, 0xBB, 0x91, 0xCC, 0x34, 0xD4, 0x34, 0xD4, 0x54, 0x02, 0xDC, 0x55, 0x02, 0xDC, 0x54, 0x86, + 0xDC, 0x34, 0xDC, 0x33, 0xD4, 0x33, 0xD4, 0x52, 0xCC, 0x50, 0xF6, 0x12, 0xFE, 0x92, 0x02, 0xFE, 0xB1, 0x05, 0xFE, 0xD1, 0x90, 0xFE, 0xF1, 0xFE, 0xF2, 0xFE, 0xD2, 0xFE, 0xD3, 0xFE, 0xD5, 0xFE, 0xD6, 0xD5, 0x31, 0xBC, 0x0E, 0xB3, 0xCE, 0xB3, 0xAE, 0xB3, 0xAF, 0xBB, 0xAF, 0xBB, 0xD0, 0xC3, 0xD1, 0xC3, 0xF2, 0xCC, 0x13, 0xD4, 0x33, 0x04, 0xD4, 0x34, 0x82, 0xDC, 0x34, 0xDC, 0x54, 0xDC, 0x55, 0x02, 0xDC, 0x54, 0x01, 0xDC, 0x74, 0x83, 0xDC, 0xB4, 0xED, 0x35, 0xF5, 0x97, 0x81, 0xCB, 0x02, 0x92, 0x0E, 0x80, 0xDC, 0x96, 0x01, 0xDC, 0x75, 0x04, 0xDC, 0x55, 0x08, 0xDC, 0x35, 0x80, 0xDC, 0x34, 0x01, 0xDC, 0x35, 0x81, 0xDC, 0x34, 0xDC, 0x55, 0x04, 0xDC, 0x35, 0x80, 0xDC, 0x55, 0x01, 0xDC, 0x35, 0x02, 0xDC, 0x34, 0x84, 0xDC, 0x54, 0xDC, 0x34, 0xDC, 0x54, 0xD4, 0x34, 0xD4, 0x54, 0x01, 0xD4, 0x53, 0x86, 0xD4, 0x52, 0xD4, 0x51, 0xD4, 0xCF, 0xFE, 0x53, 0xFE, 0xB2, 0xFE, 0xB1, 0xFE, 0xD1, 0x02, 0xFE, 0xD0, 0x80, 0xFE, 0xB0, 0x06, 0xFE, 0xD0, 0x01, 0xFE, 0xCF, 0x01, 0xFE, 0xD0, 0x03, 0xFE, 0xCF, 0x80, 0xFE, 0xD0, 0x06, 0xFE, 0xCF, 0x01, 0xFE, 0xD0, 0x80, 0xFE, 0xCF, 0x05, 0xFE, 0xD0, 0x02, 0xFE, 0xD1, 0x8D, 0xFE, 0xD2, 0xFE, 0xD3, 0xFE, 0xD4, 0xFE, 0xB5, 0xFE, 0x95, 0xD4, 0xF0, 0xB3, 0xAD, 0xAB, 0x6D, 0xAB, 0x2D, 0xB3, 0x4F, 0xB3, 0x50, 0xC3, 0xB2, 0xCC, 0x13, 0xCC, 0x14, 0x01, 0xD4, 0x34, 0x01, 0xD4, 0x35, 0x81, 0xD4, 0x55, 0xDC, 0x55, 0x01, 0xDC, 0x75, 0x86, 0xCB, 0xF4, 0xB3, 0x51, 0x9A, 0x6F, 0x92, 0x4E, 0xA2, 0xB0, 0xBB, 0x72, 0xD4, + 0x35, 0x03, 0xD4, 0x55, 0x06, 0xDC, 0x55, 0x82, 0xD4, 0x35, 0xDC, 0x55, 0xDC, 0x34, 0x03, 0xD4, 0x54, 0x06, 0xD4, 0x34, 0x01, 0xDC, 0x34, 0x01, 0xD4, 0x34, 0x03, 0xDC, 0x34, 0x04, 0xD4, 0x34, 0x85, 0xD4, 0x33, 0xD4, 0x52, 0xD4, 0x51, 0xD4, 0xD0, 0xFE, 0x74, 0xFE, 0xB3, 0x01, 0xFE, 0xD2, 0x80, 0xFE, 0xB2, 0x01, 0xFE, 0xB1, 0x80, 0xFE, 0xD1, 0x02, 0xFE, 0xB1, 0x80, 0xFE, 0xD1, 0x02, 0xFE, 0xD2, 0x88, 0xFE, 0xF3, 0xFE, 0xB4, 0xE5, 0x53, 0x82, 0x29, 0x82, 0x0B, 0x81, 0xEC, 0xAB, 0x31, 0xCC, 0x14, 0xD4, 0x55, 0x06, 0xDC, 0x55, 0x86, 0xDC, 0x54, 0xDC, 0x34, 0xD4, 0x33, 0xD4, 0x52, 0xD4, 0x51, 0xDC, 0xF1, 0xFE, 0xB5, 0x01, 0xFE, 0xD4, 0x01, 0xFE, 0xD3, 0x80, 0xFE, 0xB3, 0x02, 0xFE, 0xD4, 0x01, 0xFE, 0xD5, 0x85, 0xFE, 0xB6, 0xFE, 0x57, 0xFD, 0xD8, 0xAA, 0x8F, 0x99, 0xAF, 0xA1, 0xD2, 0x01, 0xA9, 0xD3, 0x86, 0xA9, 0xF4, 0xAA, 0x15, 0xAA, 0x36, 0x91, 0xD6, 0x81, 0x75, 0x79, 0x56, 0x89, 0xD8, 0x01, 0x9A, 0x9B, 0x87, 0x92, 0x7B, 0x8A, 0x9D, 0x72, 0xBF, 0x31, 0x7C, 0x19, 0x5D, 0x09, 0x7E, 0x09, 0x9E, 0x01, 0x9F, 0x03, 0x01, 0xBF, 0x02, 0x01, 0xDF, 0x01, 0x01, 0xDE, 0x95, 0x01, 0xFE, 0x01, 0xFD, 0x01, 0xFC, 0x02, 0x1B, 0x02, 0xD9, 0x14, 0xFC, 0x1E, 0x3C, 0x26, 0xFC, 0x1F, 0x59, 0x07, 0x34, 0x07, 0x53, 0x07, 0x73, 0x07, 0x54, 0x1F, 0xD9, 0x27, 0x9B, 0x37, 0x3C, 0x4E, 0xBE, 0x6D, 0xFE, 0x3B, 0x36, 0x42, 0x75, 0x41, 0xF3, 0x49, 0xF4, 0x01, 0x49, 0xB3, 0x82, 0x51, 0xB3, 0x51, 0xD4, 0x49, 0x93, 0x01, 0x49, 0x72, 0x01, 0x41, 0x72, 0x82, + 0x41, 0x92, 0x41, 0x72, 0x41, 0x71, 0x02, 0x39, 0x51, 0x82, 0x31, 0x50, 0x39, 0x51, 0x39, 0x71, 0x02, 0x31, 0x50, 0x82, 0x31, 0x30, 0x31, 0x2F, 0x31, 0x30, 0x0B, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x82, 0x19, 0x10, 0x11, 0x11, 0x19, 0x95, 0x01, 0x19, 0xD6, 0x82, 0x11, 0x95, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x8A, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x32, 0x21, 0xB5, 0x29, 0xF7, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x19, 0x11, 0x21, 0x51, 0x01, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x28, 0xEF, 0x28, 0xEE, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0E, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x8C, 0x29, 0x0E, 0x21, + 0x0E, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x21, 0x0E, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x82, 0x29, 0x0E, 0x29, 0x2F, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x05, 0x29, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x10, 0x85, 0x21, 0x31, 0x19, 0x32, 0x19, 0x53, 0x11, 0x73, 0x19, 0xB5, 0x19, 0xF6, 0x01, 0x21, 0xF6, 0x83, 0x19, 0x94, 0x11, 0x52, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x83, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x80, 0x29, + 0x2F, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x0F, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x0A, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x02, 0x29, 0x2F, 0x90, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x11, 0x52, 0x11, 0x53, 0x21, 0xD6, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x95, 0x19, 0x74, 0x19, 0x32, 0x19, 0x31, 0x19, 0x30, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x20, 0xEE, 0x04, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x85, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0E, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x03, 0x29, + 0x0F, 0x80, 0x29, 0x2F, 0x0C, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x84, 0x30, 0xEE, 0x30, 0xCD, 0x48, 0xEE, 0x9A, 0x94, 0xA2, 0x53, 0x01, 0xA2, 0x32, 0x87, 0xA1, 0xF1, 0x99, 0xCE, 0x9A, 0x4D, 0xF5, 0x96, 0xFE, 0x95, 0xFE, 0xB3, 0xFE, 0xB2, 0xFE, 0xB1, 0x04, 0xFE, 0xD1, 0x83, 0xFE, 0xD2, 0xFE, 0xD3, 0xFE, 0x74, 0x8A, 0xC9, 0x01, 0x7A, 0x08, 0x83, 0x82, 0x49, 0xAB, 0x6E, 0xBB, 0xCF, 0xC3, 0xF0, 0x03, 0xCC, 0x31, 0x81, 0xD4, 0x51, 0xD4, 0x31, 0x02, 0xCC, 0x30, 0x85, 0xCC, 0x2F, 0xCC, 0x6E, 0xD4, 0xCE, 0xFE, 0x72, 0xFE, 0xB1, 0xFE, 0xD1, 0x01, 0xFE, 0xB0, 0x0B, 0xFE, 0xD0, 0x80, 0xFE, 0xF0, 0x01, 0xFE, 0xF1, 0x88, 0xFE, 0xD2, 0xFE, 0x93, 0xC4, 0x8D, 0xAB, 0xAC, 0x9A, 0xEA, 0x8A, 0x69, 0x9A, 0xCB, 0xBB, 0xF0, 0xCC, 0x31, 0x02, 0xD4, 0x52, 0x80, 0xD4, 0x72, 0x01, 0xD4, 0x52, 0x01, 0xCC, 0x51, 0x01, 0xCC, 0x50, 0x84, 0xD4, 0x70, 0xCC, 0x6E, 0xED, 0xF0, 0xFE, 0xB2, 0xFE, 0xD1, 0x0D, 0xFE, 0xD0, 0x81, 0xFE, 0xB0, 0xFE, 0xD0, 0x01, 0xFE, 0xF1, 0x8D, 0xFE, 0xD2, 0xFE, 0x73, 0xA3, 0x8A, 0x8A, 0x88, 0x82, 0x28, 0x8A, 0x69, 0x92, 0xCB, 0xB3, 0x8E, 0xC4, 0x10, 0xCC, 0x31, 0xD4, 0x51, 0xCC, 0x31, 0xD4, 0x51, 0xD4, 0x52, 0x02, 0xD4, 0x51, 0x89, 0xCC, 0x31, 0xCC, 0x30, 0xCC, 0x4F, 0xC4, 0x4E, 0xF6, 0x11, 0xFE, 0xB2, 0xFE, 0xB1, 0xFE, 0xD1, 0xFE, 0xB1, 0xFE, 0xD0, 0x02, 0xFE, 0xD1, 0x81, 0xFE, 0xF1, 0xFE, 0xD1, 0x02, 0xFE, 0xF1, 0x80, 0xFE, 0xF2, 0x01, 0xFE, 0xF3, 0x82, + 0xFE, 0xD4, 0xFE, 0xB5, 0xFE, 0x55, 0x01, 0xF5, 0xF4, 0x84, 0xF5, 0xD4, 0xE5, 0x53, 0xD4, 0xB1, 0xC4, 0x50, 0xC4, 0x0F, 0x01, 0xBB, 0xEF, 0x81, 0xC4, 0x10, 0xC3, 0xF0, 0x01, 0xC4, 0x10, 0x03, 0xCC, 0x31, 0x82, 0xCC, 0x51, 0xCC, 0x31, 0xCC, 0x51, 0x01, 0xCC, 0x70, 0x88, 0xD4, 0xF1, 0xE5, 0x33, 0x69, 0x46, 0x79, 0xC9, 0x79, 0xE9, 0x81, 0xE9, 0xAB, 0x6E, 0xBB, 0xCF, 0xC4, 0x11, 0x01, 0xCC, 0x31, 0x04, 0xD4, 0x52, 0x87, 0xD4, 0x32, 0xD4, 0x53, 0xD4, 0x32, 0xD4, 0x52, 0xCC, 0x32, 0xD4, 0x52, 0xCC, 0x52, 0xCC, 0x32, 0x03, 0xD4, 0x32, 0x82, 0xD4, 0x52, 0xD4, 0x32, 0xCC, 0x32, 0x01, 0xD4, 0x52, 0x82, 0xCC, 0x32, 0xD4, 0x32, 0xCC, 0x32, 0x02, 0xD4, 0x32, 0x01, 0xD4, 0x51, 0x02, 0xCC, 0x31, 0x87, 0xCC, 0x51, 0xCC, 0x50, 0xCC, 0x4F, 0xCC, 0x4E, 0xD4, 0xEE, 0xFE, 0x93, 0xFE, 0xB2, 0xFE, 0xD1, 0x07, 0xFE, 0xD0, 0x01, 0xFE, 0xCF, 0x80, 0xFE, 0xD0, 0x12, 0xFE, 0xCF, 0x07, 0xFE, 0xD0, 0x02, 0xFE, 0xD1, 0x01, 0xFE, 0xD2, 0x01, 0xFE, 0xD3, 0x85, 0xFE, 0xB4, 0xFE, 0x75, 0xF5, 0xF4, 0xF5, 0xB4, 0xE5, 0x33, 0xCC, 0x71, 0x01, 0xBB, 0xCF, 0x81, 0xBB, 0xD0, 0xBB, 0xF0, 0x01, 0xC3, 0xF0, 0x82, 0xC4, 0x11, 0xCC, 0x31, 0xCC, 0x51, 0x01, 0xCC, 0x72, 0x81, 0xB3, 0x8F, 0x9A, 0xED, 0x01, 0x82, 0x2A, 0x84, 0x92, 0x8B, 0x9A, 0xED, 0xBB, 0xB0, 0xC4, 0x11, 0xCC, 0x32, 0x02, 0xCC, 0x52, 0x04, 0xD4, 0x52, 0x02, 0xCC, 0x52, 0x82, 0xCC, 0x32, 0xCC, 0x31, 0xCC, 0x51, 0x03, 0xCC, 0x31, 0x02, 0xCC, 0x32, 0x03, 0xCC, 0x31, 0x04, 0xCC, 0x32, 0x03, 0xCC, 0x31, + 0x02, 0xCC, 0x51, 0x84, 0xCC, 0x50, 0xCC, 0x6F, 0xD4, 0xCF, 0xFE, 0x93, 0xFE, 0xD3, 0x01, 0xFE, 0xD2, 0x08, 0xFE, 0xD1, 0x01, 0xFE, 0xD2, 0x98, 0xFE, 0xF3, 0xFE, 0xD4, 0xE5, 0x92, 0x7A, 0x47, 0x71, 0xC7, 0x71, 0xC8, 0x82, 0x4A, 0xA3, 0x4E, 0xC4, 0x11, 0xCC, 0x52, 0xCC, 0x33, 0xCC, 0x53, 0xD4, 0x53, 0xD4, 0x73, 0xD4, 0x53, 0xD4, 0x52, 0xD4, 0x32, 0xD4, 0x51, 0xCC, 0x30, 0xD4, 0x91, 0xE5, 0x73, 0xFE, 0x75, 0xFE, 0xB4, 0xFE, 0xD4, 0xFE, 0xD3, 0x03, 0xFE, 0xD4, 0x89, 0xFE, 0xF4, 0xFE, 0xF5, 0xFE, 0xD5, 0xFE, 0xD6, 0xFE, 0x97, 0xFD, 0xD7, 0xAA, 0xCF, 0x99, 0xAE, 0xA1, 0xB1, 0xA9, 0xD2, 0x01, 0xA9, 0xD3, 0x8F, 0xA9, 0xF4, 0xAA, 0x15, 0xAA, 0x56, 0x91, 0xB5, 0x91, 0xB6, 0x91, 0xD6, 0x9A, 0x38, 0xA2, 0x58, 0xA2, 0x59, 0x9A, 0x7A, 0x92, 0x7C, 0x61, 0xDB, 0x31, 0x1A, 0x21, 0x5C, 0x11, 0x7E, 0x09, 0x9E, 0x01, 0x01, 0x9E, 0x01, 0x01, 0xBF, 0x03, 0x01, 0xDF, 0x01, 0x01, 0xFF, 0x9A, 0x01, 0xFE, 0x01, 0xFD, 0x02, 0x1C, 0x02, 0x3B, 0x02, 0xD9, 0x14, 0xFC, 0x1E, 0x3C, 0x26, 0xDB, 0x1F, 0x59, 0x0F, 0x34, 0x07, 0x53, 0x07, 0x73, 0x07, 0x74, 0x1F, 0xD9, 0x27, 0x7A, 0x2F, 0x1C, 0x4E, 0xBE, 0x65, 0xBD, 0x3B, 0x15, 0x3A, 0x54, 0x41, 0xF4, 0x41, 0xB3, 0x49, 0xB3, 0x51, 0xD4, 0x51, 0xF4, 0x51, 0xB3, 0x49, 0xB3, 0x02, 0x49, 0x92, 0x01, 0x41, 0x92, 0x01, 0x41, 0x71, 0x02, 0x39, 0x71, 0x81, 0x39, 0x51, 0x39, 0x50, 0x02, 0x31, 0x50, 0x01, 0x31, 0x30, 0x82, 0x31, 0x2F, 0x29, 0x2F, 0x31, 0x50, 0x07, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, + 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x86, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x31, 0x11, 0x11, 0x19, 0x95, 0x01, 0x19, 0xD6, 0x84, 0x11, 0x95, 0x11, 0x12, 0x19, 0x31, 0x21, 0x50, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x4F, 0x19, 0x30, 0x01, 0x19, 0x31, 0x81, 0x11, 0x32, 0x19, 0xB5, 0x01, 0x21, 0xF7, 0x84, 0x19, 0x95, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x03, 0x29, 0x0E, 0x84, 0x21, 0x0E, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x28, 0xEE, 0x29, 0x0F, 0x28, 0xEE, 0x01, 0x29, 0x0E, 0x02, 0x21, 0x0E, 0x02, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x01, + 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x20, 0xEE, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x83, 0x29, 0x0F, 0x21, 0x0E, 0x29, 0x0E, 0x29, 0x0F, 0x08, 0x29, 0x2F, 0x84, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x0A, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x04, 0x21, 0x0F, 0x08, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x01, 0x19, 0x11, 0x82, 0x19, 0x73, 0x19, 0x74, 0x19, 0xB5, 0x01, 0x21, 0xF6, 0x84, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x32, 0x19, 0x32, 0x21, 0x11, 0x01, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x08, 0x29, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, + 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x86, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x02, 0x21, 0x2F, 0x03, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x01, 0x21, 0x2F, 0x8D, 0x21, 0x30, 0x21, 0x31, 0x19, 0x31, 0x11, 0x32, 0x11, 0x33, 0x11, 0x53, 0x21, 0xF6, 0x2A, 0x38, 0x21, 0xD6, 0x19, 0x74, 0x11, 0x53, 0x11, 0x32, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x21, 0x0E, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x20, 0xEE, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x0D, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x29, + 0x0F, 0x04, 0x29, 0x2F, 0x91, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x30, 0xEE, 0x30, 0x6C, 0x82, 0x33, 0xA2, 0x73, 0xA2, 0x52, 0xAA, 0x32, 0xA2, 0x11, 0x99, 0xF0, 0x91, 0xCD, 0xB3, 0x0F, 0xFE, 0x77, 0xFE, 0xB4, 0xFE, 0xB3, 0xFE, 0xD2, 0x04, 0xFE, 0xD1, 0x01, 0xFE, 0xD2, 0x82, 0xFE, 0xD3, 0xFE, 0xF5, 0xFF, 0x16, 0x01, 0xFE, 0xF6, 0x82, 0xFE, 0xD6, 0xFE, 0xB6, 0xFE, 0x95, 0x01, 0xFE, 0x54, 0x01, 0xFE, 0x34, 0x83, 0xFE, 0x13, 0xFE, 0x54, 0xFE, 0x74, 0xFE, 0x94, 0x01, 0xFE, 0xB4, 0x83, 0xFE, 0xB3, 0xFE, 0x91, 0xFE, 0xB1, 0xFE, 0xD1, 0x0F, 0xFE, 0xD0, 0x02, 0xFE, 0xF1, 0x87, 0xFE, 0xD2, 0xFE, 0xF3, 0xFE, 0xF4, 0xFE, 0xF5, 0xFE, 0xF6, 0xFE, 0xD6, 0xFE, 0x95, 0xF5, 0xF3, 0x01, 0xED, 0xB3, 0x83, 0xF5, 0xD3, 0xED, 0xB3, 0xF5, 0xD3, 0xF5, 0xF3, 0x01, 0xFE, 0x13, 0x85, 0xFE, 0x33, 0xFE, 0x73, 0xFE, 0x93, 0xFE, 0x72, 0xFE, 0xD2, 0xFE, 0xD1, 0x10, 0xFE, 0xD0, 0x80, 0xFE, 0xF0, 0x01, 0xFE, 0xF1, 0x82, 0xFE, 0xF2, 0xFF, 0x14, 0xFE, 0xF5, 0x02, 0xFE, 0xF6, 0x82, 0xFE, 0xD5, 0xFE, 0x74, 0xFE, 0x54, 0x01, 0xFE, 0x34, 0x02, 0xF6, 0x13, 0x86, 0xFE, 0x34, 0xF6, 0x13, 0xFE, 0x33, 0xFE, 0x53, 0xFE, 0x94, 0xFE, 0x72, 0xFE, 0xB1, 0x01, 0xFE, 0xD1, 0x04, 0xFE, 0xD0, 0x02, 0xFE, 0xD1, 0x03, 0xFE, 0xF1, 0x02, 0xFE, 0xF2, 0x80, 0xFE, 0xF3, 0x03, 0xFE, 0xD4, 0x01, 0xFE, 0xD5, 0x02, 0xFE, 0xF5, 0x83, 0xFE, 0xD5, 0xFE, 0xF6, 0xFE, 0xD5, 0xFE, 0xB5, 0x01, 0xFE, 0x95, 0x01, 0xFE, 0x94, 0x80, 0xFE, 0x95, 0x02, 0xFE, 0x94, 0x01, 0xFE, 0xB5, + 0x81, 0xFE, 0xD4, 0xFE, 0xD5, 0x03, 0xFE, 0xF7, 0x82, 0xFE, 0xB6, 0xF6, 0x14, 0xED, 0xB3, 0x02, 0xE5, 0x72, 0x83, 0xED, 0x93, 0xE5, 0x72, 0xED, 0x93, 0xED, 0x92, 0x03, 0xED, 0xB3, 0x01, 0xF5, 0xD3, 0x80, 0xF5, 0xF3, 0x01, 0xF5, 0xD3, 0x01, 0xF5, 0xF3, 0x85, 0xF5, 0xD3, 0xF5, 0xF3, 0xF5, 0xD3, 0xF5, 0xF4, 0xF5, 0xF3, 0xF5, 0xF4, 0x02, 0xF5, 0xD3, 0x83, 0xF5, 0xF3, 0xF5, 0xD3, 0xF5, 0xF3, 0xF5, 0xD3, 0x01, 0xF5, 0xF3, 0x80, 0xFE, 0x34, 0x01, 0xFE, 0x33, 0x85, 0xFE, 0x53, 0xFE, 0x73, 0xFE, 0x93, 0xFE, 0xB2, 0xFE, 0xD2, 0xFE, 0xD1, 0x03, 0xFE, 0xD0, 0x10, 0xFE, 0xCF, 0x02, 0xFE, 0xD0, 0x80, 0xFE, 0xCF, 0x01, 0xFE, 0xD0, 0x01, 0xFE, 0xCF, 0x0A, 0xFE, 0xD0, 0x03, 0xFE, 0xD1, 0x01, 0xFE, 0xD2, 0x81, 0xFE, 0xD3, 0xFE, 0xB3, 0x01, 0xFE, 0xB4, 0x81, 0xFE, 0xB5, 0xFE, 0xD5, 0x01, 0xFE, 0xD6, 0x8A, 0xFE, 0xF6, 0xFE, 0xD6, 0xFE, 0xB5, 0xFE, 0x95, 0xFE, 0x75, 0xF6, 0x34, 0xF5, 0xF3, 0xED, 0xF3, 0xF6, 0x14, 0xFE, 0xB6, 0xFE, 0xD7, 0x02, 0xFE, 0xF7, 0x84, 0xFE, 0xD7, 0xFE, 0xB6, 0xFE, 0x34, 0xF5, 0xF4, 0xED, 0xB3, 0x02, 0xE5, 0x93, 0x80, 0xE5, 0x72, 0x01, 0xED, 0x93, 0x81, 0xED, 0xB3, 0xED, 0xD3, 0x01, 0xF5, 0xF4, 0x83, 0xF6, 0x14, 0xF6, 0x34, 0xFE, 0x35, 0xFE, 0x34, 0x08, 0xFE, 0x35, 0x84, 0xFE, 0x34, 0xF6, 0x34, 0xF6, 0x14, 0xFE, 0x15, 0xF6, 0x15, 0x01, 0xF6, 0x14, 0x81, 0xFE, 0x34, 0xF6, 0x14, 0x02, 0xFE, 0x34, 0x84, 0xFE, 0x54, 0xFE, 0x74, 0xFE, 0x73, 0xF6, 0x31, 0xFE, 0xD3, 0x02, 0xFE, 0xD2, 0x06, 0xFE, 0xD1, 0x01, 0xFE, 0xD2, + 0x80, 0xFE, 0xF2, 0x01, 0xFE, 0xD2, 0x82, 0xFE, 0xF3, 0xFE, 0xF4, 0xFF, 0x16, 0x01, 0xFF, 0x17, 0x82, 0xFE, 0xF7, 0xFE, 0xD7, 0xF6, 0x35, 0x01, 0xE5, 0x73, 0x89, 0xDD, 0x53, 0xDD, 0x33, 0xDD, 0x32, 0xE5, 0x53, 0xE5, 0x73, 0xED, 0xB3, 0xF6, 0x14, 0xFE, 0x95, 0xFE, 0xD6, 0xFE, 0xD5, 0x01, 0xFE, 0xD4, 0x81, 0xFE, 0xD3, 0xFE, 0xF4, 0x01, 0xFE, 0xD4, 0x02, 0xFE, 0xF4, 0x99, 0xFE, 0xF5, 0xFE, 0xD6, 0xFE, 0x97, 0xFE, 0x38, 0xAA, 0xCF, 0x99, 0xAE, 0xA1, 0xB0, 0xA1, 0xB2, 0xA9, 0xF3, 0xB1, 0xF4, 0xA9, 0xF3, 0xAA, 0x14, 0xAA, 0x15, 0x99, 0xD4, 0x91, 0x94, 0x91, 0xD6, 0x99, 0xF6, 0xA2, 0x37, 0xAA, 0x38, 0xA2, 0x58, 0xA2, 0x79, 0x92, 0x9C, 0x59, 0x9A, 0x31, 0x1A, 0x21, 0x5C, 0x11, 0x7D, 0x01, 0x09, 0x9E, 0x80, 0x01, 0xBE, 0x01, 0x01, 0xBF, 0x81, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x01, 0xDE, 0x80, 0x01, 0xFF, 0x01, 0x01, 0xFE, 0x93, 0x01, 0xFD, 0x02, 0x1C, 0x02, 0x3B, 0x02, 0xD9, 0x14, 0xFC, 0x1E, 0x3C, 0x26, 0xFC, 0x1F, 0x59, 0x07, 0x14, 0x07, 0x52, 0x07, 0x73, 0x0F, 0x95, 0x1F, 0xB9, 0x1F, 0x5A, 0x37, 0x3C, 0x4E, 0x9E, 0x44, 0xBA, 0x32, 0xD5, 0x42, 0x75, 0x42, 0x14, 0x01, 0x49, 0xD4, 0x81, 0x51, 0xF4, 0x51, 0xD4, 0x02, 0x49, 0x93, 0x80, 0x49, 0x92, 0x01, 0x41, 0x72, 0x82, 0x41, 0x92, 0x41, 0x72, 0x41, 0x71, 0x01, 0x39, 0x71, 0x82, 0x39, 0x51, 0x31, 0x50, 0x39, 0x51, 0x02, 0x31, 0x50, 0x01, 0x31, 0x30, 0x01, 0x31, 0x2F, 0x80, 0x31, 0x50, 0x03, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x0A, 0x29, + 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x0E, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x86, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x88, 0x21, 0x30, 0x19, 0x31, 0x11, 0x32, 0x19, 0x95, 0x19, 0xD7, 0x21, 0xF7, 0x11, 0x95, 0x11, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x4F, 0x29, 0x4F, 0x01, 0x21, 0x2F, 0x8D, 0x21, 0x4F, 0x21, 0x2F, 0x21, 0x50, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0xB5, 0x21, 0xF7, 0x21, 0xF6, 0x19, 0x74, 0x11, 0x12, 0x19, 0x32, 0x21, 0x31, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x05, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x82, 0x29, 0x2E, 0x29, 0x2F, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x0F, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x08, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x84, 0x21, + 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x2E, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0E, 0x21, 0x0E, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x2E, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x19, 0x10, 0x01, 0x19, 0x31, 0x89, 0x19, 0x53, 0x19, 0x74, 0x19, 0xB5, 0x21, 0xF6, 0x22, 0x17, 0x19, 0xD6, 0x19, 0x74, 0x11, 0x12, 0x19, 0x11, 0x21, 0x11, 0x01, 0x21, 0x10, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x0E, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, + 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x05, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x30, 0x19, 0x31, 0x11, 0x11, 0x11, 0x32, 0x11, 0x74, 0x19, 0xD6, 0x2A, 0x37, 0x21, 0xF6, 0x19, 0x95, 0x19, 0x53, 0x19, 0x32, 0x19, 0x11, 0x01, 0x19, 0x10, 0x03, 0x21, 0x0F, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0E, 0x02, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, + 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x21, 0x0E, 0x0A, 0x29, 0x0F, 0x0A, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x8E, 0x29, 0x2F, 0x29, 0x0E, 0x28, 0xEE, 0x30, 0xCD, 0x51, 0x0E, 0x9A, 0xB4, 0xA2, 0x53, 0xA2, 0x32, 0xA2, 0x12, 0xA1, 0xF1, 0x99, 0xCF, 0x91, 0xED, 0xE4, 0xF4, 0xFE, 0x76, 0xFE, 0xB4, 0x01, 0xFE, 0xD2, 0x04, 0xFE, 0xD1, 0x02, 0xFE, 0xD2, 0x02, 0xFE, 0xF3, 0x01, 0xFE, 0xD3, 0x80, 0xFE, 0xF3, 0x01, 0xFE, 0xD3, 0x80, 0xFE, 0xB3, 0x02, 0xFE, 0xD3, 0x02, 0xFE, 0xD2, 0x01, 0xFE, 0xD1, 0x81, 0xFE, 0xF1, 0xFE, 0xD1, 0x11, 0xFE, 0xD0, 0x03, 0xFE, 0xF1, 0x82, 0xFE, 0xF2, 0xFE, 0xD2, 0xFE, 0xF2, 0x02, 0xFE, 0xD3, 0x80, 0xFE, 0xB3, 0x03, 0xFE, 0xB4, 0x02, 0xFE, 0xB3, 0x02, 0xFE, 0xD2, 0x01, 0xFE, 0xD1, 0x05, 0xFE, 0xD0, 0x80, 0xFE, 0xCF, 0x0C, 0xFE, 0xD0, 0x01, 0xFE, 0xD1, 0x80, 0xFE, 0xF1, 0x02, 0xFE, 0xF2, 0x80, 0xFE, 0xF3, 0x05, 0xFE, 0xD3, 0x03, 0xFE, 0xB3, 0x02, 0xFE, 0xD2, 0x01, 0xFE, 0xD1, 0x0C, 0xFE, 0xD0, 0x03, 0xFE, 0xF1, 0x03, 0xFE, 0xF2, 0x80, 0xFE, 0xF3, 0x01, 0xFE, 0xF2, 0x01, 0xFE, 0xF3, 0x04, 0xFE, 0xF2, 0x0A, 0xFE, 0xD2, 0x04, 0xFE, 0xF3, 0x01, 0xFE, 0xD3, 0x82, 0xFE, 0xD4, 0xFE, 0xB4, 0xFE, 0xD4, 0x03, 0xFE, 0xB4, 0x80, 0xFE, 0xD4, 0x02, 0xFE, 0xB4, 0x83, 0xFE, 0xB3, 0xFE, 0xB4, 0xFE, 0xD4, 0xFE, + 0xB4, 0x06, 0xFE, 0xB3, 0x01, 0xFE, 0xD4, 0x06, 0xFE, 0xB4, 0x03, 0xFE, 0xB3, 0x01, 0xFE, 0xB2, 0x02, 0xFE, 0xD2, 0x01, 0xFE, 0xD1, 0x03, 0xFE, 0xD0, 0x12, 0xFE, 0xCF, 0x80, 0xFE, 0xD0, 0x01, 0xFE, 0xCF, 0x80, 0xFE, 0xD0, 0x03, 0xFE, 0xCF, 0x0B, 0xFE, 0xD0, 0x03, 0xFE, 0xD1, 0x02, 0xFE, 0xD2, 0x01, 0xFE, 0xD3, 0x06, 0xFE, 0xF3, 0x01, 0xFE, 0xD3, 0x80, 0xFE, 0xD4, 0x01, 0xFE, 0xD3, 0x81, 0xFE, 0xF4, 0xFE, 0xF3, 0x02, 0xFE, 0xF4, 0x81, 0xFE, 0xF3, 0xFE, 0xD3, 0x01, 0xFE, 0xD4, 0x04, 0xFE, 0xB4, 0x80, 0xFE, 0xB5, 0x01, 0xFE, 0xB4, 0x01, 0xFE, 0xD4, 0x80, 0xFE, 0xB4, 0x10, 0xFE, 0xD4, 0x80, 0xFE, 0xD5, 0x05, 0xFE, 0xD4, 0x03, 0xFE, 0xD3, 0x04, 0xFE, 0xD2, 0x04, 0xFE, 0xD1, 0x80, 0xFE, 0xB1, 0x01, 0xFE, 0xD1, 0x03, 0xFE, 0xD2, 0x82, 0xFE, 0xF2, 0xFE, 0xF3, 0xFF, 0x14, 0x03, 0xFE, 0xF4, 0x01, 0xFE, 0xD5, 0x80, 0xFE, 0xD6, 0x03, 0xFE, 0xB6, 0x01, 0xFE, 0xD5, 0x03, 0xFE, 0xD4, 0x82, 0xFE, 0xF4, 0xFE, 0xD3, 0xFE, 0xF3, 0x04, 0xFE, 0xF4, 0x88, 0xFE, 0xF5, 0xFE, 0xD6, 0xFE, 0xB7, 0xFE, 0x18, 0xAB, 0x0F, 0x99, 0xAE, 0xA1, 0xB0, 0xA1, 0xB1, 0xA9, 0xD2, 0x01, 0xA9, 0xF3, 0x01, 0xAA, 0x14, 0x90, 0xA2, 0x15, 0x91, 0x93, 0x91, 0xD4, 0x99, 0xF6, 0xA2, 0x16, 0xA2, 0x17, 0xAA, 0x37, 0xAA, 0x58, 0xA2, 0x59, 0x9A, 0x9C, 0x51, 0x5A, 0x28, 0xFA, 0x21, 0x3C, 0x19, 0x7D, 0x09, 0x9E, 0x09, 0xBE, 0x01, 0xBE, 0x02, 0x01, 0xBF, 0x02, 0x01, 0xDF, 0x02, 0x01, 0xFE, 0x97, 0x01, 0xFD, 0x02, 0x1C, 0x02, 0x3B, 0x02, 0xD9, 0x15, 0x1C, 0x1E, 0x3C, 0x26, + 0xFC, 0x1F, 0x59, 0x07, 0x14, 0x07, 0x53, 0x07, 0x93, 0x0F, 0x95, 0x1F, 0x98, 0x27, 0x5A, 0x3F, 0x3D, 0x56, 0xBE, 0x3C, 0x38, 0x32, 0xB5, 0x3A, 0x34, 0x4A, 0x14, 0x49, 0xD4, 0x51, 0xD4, 0x51, 0xF4, 0x51, 0xB4, 0x01, 0x49, 0x93, 0x85, 0x49, 0xB3, 0x49, 0x93, 0x41, 0x92, 0x41, 0x72, 0x41, 0x92, 0x41, 0x71, 0x03, 0x39, 0x71, 0x81, 0x31, 0x50, 0x39, 0x50, 0x01, 0x31, 0x50, 0x03, 0x31, 0x30, 0x81, 0x31, 0x50, 0x31, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x0B, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x10, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x06, 0x29, 0x0F, 0x95, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x31, 0x11, 0x32, 0x19, 0x95, 0x19, 0xD6, 0x19, 0xF7, 0x19, 0x95, 0x11, 0x11, 0x19, 0x31, 0x21, 0x30, 0x21, 0x50, 0x21, 0x4F, 0x21, 0x2F, 0x21, 0x2E, 0x02, 0x21, 0x2F, 0x8A, 0x21, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x33, 0x19, 0x94, 0x22, 0x17, 0x21, 0xD6, 0x19, 0xB5, 0x11, 0x12, 0x19, 0x12, 0x21, 0x31, 0x01, 0x21, 0x30, 0x81, 0x29, 0x30, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x06, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, + 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x21, 0x0E, 0x01, 0x29, 0x2F, 0x12, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0E, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x06, 0x29, 0x2F, 0x87, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x82, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x90, 0x29, 0x2F, 0x29, 0x30, 0x21, 0x30, 0x19, 0x10, 0x18, 0xF0, 0x19, 0x11, 0x11, 0x53, 0x19, 0x74, 0x19, 0xD6, 0x21, 0xF6, 0x22, 0x16, 0x21, 0xF6, 0x19, 0x74, 0x19, 0x32, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x01, 0x29, 0x10, 0x80, 0x29, 0x30, 0x07, 0x29, + 0x0F, 0x02, 0x21, 0x0F, 0x86, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x84, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x08, 0x21, 0x0F, 0x02, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x8E, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x30, 0x21, 0x31, 0x19, 0x11, 0x11, 0x31, 0x11, 0x32, 0x19, 0x94, 0x19, 0xD5, 0x22, 0x17, 0x21, 0xF6, 0x19, 0xB5, 0x19, 0x74, 0x19, 0x32, 0x11, 0x10, 0x01, 0x19, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0E, 0x04, 0x29, 0x0F, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, + 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x0B, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0E, 0x07, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0E, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x0A, 0x29, 0x2F, 0x85, 0x28, 0xEE, 0x30, 0xCD, 0x40, 0xAD, 0x82, 0x53, 0x9A, 0x73, 0xA2, 0x52, 0x01, 0xA2, 0x32, 0x87, 0xA1, 0xF1, 0x99, 0xEF, 0x9A, 0x2C, 0xF5, 0x96, 0xFE, 0x95, 0xFE, 0xD4, 0xFE, 0xD3, 0xFE, 0xD2, 0x04, 0xFE, 0xD1, 0x82, 0xFE, 0xD2, 0xFE, 0xF2, 0xFE, 0xD2, 0x01, 0xFE, 0xF2, 0x04, 0xFE, 0xD2, 0x82, 0xFE, 0xB2, 0xFE, 0xB1, 0xFE, 0xD2, 0x04, 0xFE, 0xD1, 0x14, 0xFE, 0xD0, 0x81, 0xFE, 0xF0, 0xFE, 0xD0, 0x05, 0xFE, 0xD1, 0x08, 0xFE, 0xB2, 0x80, 0xFE, 0xD2, 0x02, 0xFE, 0xD1, 0x03, 0xFE, 0xD0, 0x80, 0xFE, 0xCF, 0x01, 0xFE, 0xD0, 0x03, 0xFE, 0xCF, 0x0B, 0xFE, 0xD0, 0x02, 0xFE, 0xD1, 0x01, 0xFE, 0xF1, 0x80, 0xFE, 0xD1, 0x07, 0xFE, 0xD2, 0x80, 0xFE, 0xB2, 0x03, 0xFE, 0xD1, 0x04, 0xFE, 0xD0, 0x80, 0xFE, 0xB0, 0x0B, 0xFE, 0xD0, 0x07, 0xFE, 0xD1, 0x81, 0xFE, 0xF1, 0xFE, 0xF2, 0x02, 0xFE, 0xF1, 0x0B, 0xFE, 0xD1, 0x27, 0xFE, 0xD2, 0x02, + 0xFE, 0xB2, 0x04, 0xFE, 0xD1, 0x05, 0xFE, 0xD0, 0x0B, 0xFE, 0xCF, 0x80, 0xFE, 0xEF, 0x0A, 0xFE, 0xCF, 0x01, 0xFE, 0xD0, 0x01, 0xFE, 0xCF, 0x0C, 0xFE, 0xD0, 0x04, 0xFE, 0xD1, 0x15, 0xFE, 0xD2, 0x80, 0xFE, 0xB2, 0x01, 0xFE, 0xB3, 0x04, 0xFE, 0xD3, 0x80, 0xFE, 0xB3, 0x19, 0xFE, 0xD3, 0x83, 0xFE, 0xF3, 0xFE, 0xD3, 0xFE, 0xD2, 0xFE, 0xF2, 0x05, 0xFE, 0xD2, 0x80, 0xFE, 0xD1, 0x01, 0xFE, 0xD2, 0x04, 0xFE, 0xD1, 0x05, 0xFE, 0xD2, 0x01, 0xFE, 0xD3, 0x02, 0xFE, 0xF3, 0x05, 0xFE, 0xD4, 0x80, 0xFE, 0xB4, 0x01, 0xFE, 0xD4, 0x02, 0xFE, 0xD3, 0x01, 0xFE, 0xD4, 0x01, 0xFE, 0xD3, 0x03, 0xFE, 0xF4, 0x88, 0xFE, 0xF5, 0xFE, 0xD5, 0xFE, 0x96, 0xFD, 0xF7, 0xA2, 0x8E, 0x91, 0xAD, 0xA1, 0xB0, 0xA1, 0xB1, 0xA9, 0xD2, 0x02, 0xA9, 0xF3, 0x85, 0xB2, 0x14, 0xAA, 0x35, 0xA2, 0x15, 0x91, 0xB4, 0x91, 0xD4, 0x99, 0xF5, 0x01, 0xA2, 0x16, 0x8D, 0xAA, 0x37, 0xAA, 0x38, 0xA2, 0x59, 0x9A, 0x9C, 0x48, 0xF9, 0x28, 0xFA, 0x21, 0x5C, 0x11, 0x7D, 0x09, 0x9E, 0x09, 0xBE, 0x01, 0xBE, 0x01, 0xBF, 0x01, 0xDF, 0x01, 0xDE, 0x01, 0x01, 0xDF, 0x02, 0x01, 0xFF, 0x97, 0x01, 0xFE, 0x01, 0xFD, 0x02, 0x1C, 0x02, 0x3B, 0x02, 0xF9, 0x15, 0x1C, 0x1E, 0x3C, 0x26, 0xFC, 0x1F, 0x59, 0x07, 0x14, 0x07, 0x32, 0x07, 0x73, 0x0F, 0x95, 0x1F, 0x98, 0x27, 0x19, 0x47, 0x5D, 0x6F, 0x5F, 0x33, 0xF6, 0x32, 0xB4, 0x3A, 0x13, 0x49, 0xF4, 0x49, 0xB3, 0x51, 0xD4, 0x51, 0xB4, 0x01, 0x49, 0x93, 0x85, 0x49, 0x72, 0x49, 0x93, 0x49, 0x92, 0x49, 0x72, 0x41, 0x72, 0x41, 0x92, 0x01, 0x41, 0x71, 0x01, + 0x39, 0x71, 0x01, 0x39, 0x51, 0x04, 0x31, 0x50, 0x81, 0x29, 0x2F, 0x31, 0x30, 0x01, 0x31, 0x2F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x31, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x21, 0x0E, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x82, 0x20, 0xEE, 0x21, 0x0E, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0E, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x21, 0x0E, 0x81, 0x29, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x8A, 0x21, 0x30, 0x19, 0x10, 0x11, 0x12, 0x19, 0xB5, 0x19, 0xD6, 0x19, 0xD7, 0x11, 0x74, 0x11, 0x11, 0x19, 0x31, 0x19, 0x30, 0x21, 0x50, 0x01, 0x21, 0x2F, 0x90, 0x21, 0x0E, 0x21, 0x2E, 0x21, 0x2F, 0x21, 0x4F, 0x21, 0x0F, 0x19, 0x30, 0x19, 0x31, 0x11, 0x32, 0x19, 0x94, 0x2A, 0x17, 0x21, 0xD6, 0x19, 0x95, 0x11, 0x12, 0x19, 0x32, 0x19, 0x31, 0x21, 0x31, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x04, 0x29, 0x2F, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x80, 0x28, 0xEE, 0x01, 0x29, 0x0F, 0x83, + 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x0F, 0x29, 0x0F, 0x82, 0x29, 0x0E, 0x20, 0xEE, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x84, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x03, 0x21, 0x0E, 0x83, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x84, 0x29, 0x2F, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0E, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x08, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0E, 0x81, 0x21, 0x0E, 0x29, 0x0F, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x21, 0x0E, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x83, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x0E, 0x07, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x8F, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x2E, 0x29, 0x2F, 0x29, 0x50, 0x21, 0x2F, 0x19, 0x0F, 0x19, 0x10, 0x19, 0x31, 0x11, 0x11, 0x19, 0x73, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x19, 0xF6, 0x85, 0x21, 0xD6, 0x19, 0x74, 0x19, 0x32, 0x19, 0x11, 0x21, 0x11, 0x21, 0x10, 0x03, 0x29, 0x10, 0x80, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, + 0x01, 0x21, 0x0F, 0x85, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x0C, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x82, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0B, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x11, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x07, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x11, 0x32, 0x81, 0x11, 0x74, 0x19, 0xD6, 0x01, 0x22, 0x17, 0x85, 0x19, 0x95, 0x19, 0x74, 0x19, 0x52, 0x19, 0x31, 0x19, 0x30, 0x19, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0E, 0x29, 0x0F, 0x05, 0x21, 0x0E, 0x81, 0x29, 0x0F, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0E, 0x03, 0x29, 0x0F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2F, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x2F, 0x21, 0x0E, + 0x01, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x07, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x02, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x82, 0x21, 0x0E, 0x29, 0x0F, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x83, 0x29, 0x0F, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x0C, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x8D, 0x28, 0xCD, 0x30, 0xAD, 0x48, 0xEE, 0x9A, 0x94, 0xA2, 0x73, 0xA2, 0x53, 0xA2, 0x32, 0xA2, 0x12, 0x99, 0xF0, 0x99, 0xEE, 0x9A, 0x6D, 0xFE, 0x37, 0xFE, 0x95, 0xFE, 0xD4, 0x01, 0xFE, 0xD2, 0x05, 0xFE, 0xD1, 0x80, 0xFE, 0xB1, 0x02, 0xFE, 0xD1, 0x80, 0xFE, 0xB1, 0x07, 0xFE, 0xD1, 0x80, 0xFE, 0xB0, 0x02, 0xFE, 0xD0, 0x80, 0xFE, 0xB0, 0x03, 0xFE, 0xD0, 0x05, 0xFE, 0xCF, 0x0E, 0xFE, 0xD0, 0x03, 0xFE, 0xD1, 0x03, 0xFE, 0xB1, 0x04, 0xFE, 0xD1, 0x06, 0xFE, 0xD0, 0x01, 0xFE, 0xCF, 0x01, 0xFE, 0xAF, 0x02, 0xFE, 0xCF, 0x02, 0xFE, 0xD0, 0x80, 0xFE, 0xAF, 0x0A, 0xFE, 0xD0, 0x0C, 0xFE, 0xD1, 0x15, 0xFE, 0xD0, 0x07, 0xFE, 0xD1, 0x80, 0xFE, 0xF1, 0x01, 0xFE, 0xD0, 0x02, 0xFE, 0xD1, 0x80, 0xFE, 0xD0, 0x01, 0xFE, 0xD1, 0x80, 0xFE, 0xD0, 0x03, 0xFE, 0xD1, 0x80, 0xFE, 0xB1, 0x2D, 0xFE, 0xD1, 0x04, 0xFE, 0xD0, 0x81, 0xFE, 0xCF, 0xFE, 0xD0, 0x1A, 0xFE, 0xCF, 0x02, 0xFE, 0xD0, 0x80, 0xFE, 0xAF, 0x01, 0xFE, 0xD0, + 0x01, 0xFE, 0xB0, 0x08, 0xFE, 0xD0, 0x05, 0xFE, 0xD1, 0x80, 0xFE, 0xF1, 0x06, 0xFE, 0xD1, 0x16, 0xFE, 0xD2, 0x80, 0xFE, 0xD3, 0x0B, 0xFE, 0xD2, 0x03, 0xFE, 0xD3, 0x01, 0xFE, 0xF3, 0x80, 0xFE, 0xD3, 0x05, 0xFE, 0xD2, 0x80, 0xFE, 0xF2, 0x05, 0xFE, 0xD2, 0x80, 0xFE, 0xD1, 0x02, 0xFE, 0xD2, 0x05, 0xFE, 0xD1, 0x05, 0xFE, 0xD2, 0x81, 0xFE, 0xD3, 0xFE, 0xD2, 0x0F, 0xFE, 0xD3, 0x80, 0xFE, 0xF3, 0x02, 0xFE, 0xF4, 0x88, 0xFE, 0xF5, 0xFE, 0xF6, 0xFE, 0x97, 0xF5, 0xB6, 0xAA, 0xAE, 0x99, 0xCE, 0xA1, 0xB0, 0xA1, 0xB1, 0xA9, 0xD2, 0x01, 0xA9, 0xF3, 0x80, 0xAA, 0x13, 0x01, 0xAA, 0x14, 0x81, 0xAA, 0x35, 0x99, 0xF4, 0x01, 0x91, 0xB4, 0x8B, 0x99, 0xD5, 0xA2, 0x16, 0xAA, 0x16, 0xAA, 0x37, 0xAA, 0x38, 0xA2, 0x59, 0x92, 0x7B, 0x40, 0xF8, 0x29, 0x1B, 0x21, 0x5C, 0x11, 0x7D, 0x09, 0xBE, 0x01, 0x01, 0xBE, 0x80, 0x01, 0xBF, 0x03, 0x01, 0xDF, 0x02, 0x01, 0xFF, 0x95, 0x01, 0xFE, 0x01, 0xFD, 0x02, 0x1C, 0x02, 0x3B, 0x02, 0xD9, 0x15, 0x1C, 0x26, 0x5C, 0x26, 0xFC, 0x1F, 0x59, 0x07, 0x14, 0x07, 0x32, 0x0F, 0x94, 0x17, 0x75, 0x1F, 0x78, 0x2F, 0x19, 0x4F, 0x5D, 0x66, 0xDF, 0x33, 0xB6, 0x32, 0x73, 0x42, 0x14, 0x49, 0xD3, 0x49, 0xB3, 0x01, 0x51, 0xB4, 0x80, 0x49, 0x73, 0x01, 0x49, 0x93, 0x80, 0x49, 0x92, 0x01, 0x49, 0x72, 0x81, 0x41, 0x72, 0x41, 0x92, 0x01, 0x41, 0x71, 0x82, 0x39, 0x71, 0x39, 0x51, 0x39, 0x71, 0x01, 0x39, 0x50, 0x02, 0x31, 0x50, 0x81, 0x31, 0x2F, 0x31, 0x30, 0x02, 0x31, 0x2F, 0x83, 0x29, 0x2F, 0x31, 0x2F, 0x29, 0x2F, 0x29, 0x0F, 0x01, + 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x04, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x0E, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x80, 0x21, 0x0F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x29, 0x0F, 0x05, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x8B, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x10, 0x11, 0x32, 0x19, 0x95, 0x19, 0xD6, 0x19, 0xB6, 0x19, 0x95, 0x11, 0x11, 0x19, 0x10, 0x19, 0x30, 0x02, 0x21, 0x2F, 0x8F, 0x21, 0x2E, 0x21, 0x2F, 0x29, 0x4F, 0x21, 0x2F, 0x21, 0x0F, 0x19, 0x30, 0x19, 0x31, 0x19, 0x52, 0x11, 0x54, 0x21, 0xF7, 0x22, 0x17, 0x11, 0x95, 0x11, 0x33, 0x11, 0x32, 0x19, 0x32, 0x21, 0x31, 0x01, 0x29, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x2F, 0x02, 0x21, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x06, 0x29, 0x0F, 0x85, 0x29, 0x0E, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x28, 0xEF, 0x03, 0x29, 0x0F, 0x80, 0x28, 0xEF, 0x04, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x80, 0x28, 0xEE, 0x01, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x81, + 0x21, 0x0F, 0x20, 0xEE, 0x01, 0x21, 0x0E, 0x81, 0x29, 0x0E, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x80, 0x20, 0xEE, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x05, 0x29, 0x0F, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2F, 0x29, 0x2E, 0x21, 0x0E, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2F, 0x21, 0x0E, 0x05, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2E, 0x84, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x18, 0xEF, 0x01, 0x19, 0x10, 0x87, 0x19, 0x11, 0x19, 0x73, 0x19, 0x74, 0x19, 0xB5, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0xB5, 0x19, 0x74, 0x01, 0x19, 0x32, 0x82, 0x19, 0x11, 0x18, 0xF0, 0x20, 0xF0, 0x05, 0x21, 0x10, 0x85, 0x29, 0x30, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, + 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x09, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x05, 0x21, 0x0F, 0x81, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x29, 0x30, 0x01, 0x21, 0x30, 0x01, 0x19, 0x31, 0x8B, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD5, 0x21, 0xF6, 0x21, 0xD6, 0x19, 0x94, 0x11, 0x33, 0x19, 0x32, 0x19, 0x31, 0x19, 0x30, 0x19, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2E, 0x03, 0x21, 0x2E, 0x05, 0x21, 0x0E, 0x83, 0x20, 0xEE, 0x21, 0x0E, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x07, 0x29, 0x0F, 0x82, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0E, 0x08, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x0E, 0x80, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x83, 0x21, 0x0E, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x21, 0x0E, + 0x01, 0x29, 0x0F, 0x04, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x0E, 0x0D, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x06, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x90, 0x28, 0xEE, 0x30, 0xCE, 0x38, 0xCD, 0x69, 0x90, 0x92, 0x12, 0xA2, 0x33, 0xAA, 0x53, 0xA2, 0x32, 0xA2, 0x11, 0x99, 0xF0, 0x99, 0xEE, 0xA2, 0xCE, 0xFD, 0xD6, 0xFE, 0x95, 0xFE, 0xD4, 0xFE, 0xF3, 0xFE, 0xF2, 0x01, 0xFE, 0xD2, 0x02, 0xFE, 0xD1, 0x81, 0xFE, 0xB1, 0xFE, 0xD1, 0x07, 0xFE, 0xB1, 0x05, 0xFE, 0xB0, 0x01, 0xFE, 0xD0, 0x01, 0xFE, 0xB0, 0x01, 0xFE, 0xD0, 0x80, 0xFE, 0xAF, 0x02, 0xFE, 0xCF, 0x81, 0xFE, 0xAF, 0xFE, 0xCF, 0x04, 0xFE, 0xAF, 0x01, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x02, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x05, 0xFE, 0xB0, 0x81, 0xFE, 0xD1, 0xFE, 0xB0, 0x05, 0xFE, 0xB1, 0x80, 0xFE, 0xB0, 0x02, 0xFE, 0xD0, 0x03, 0xFE, 0xB0, 0x82, 0xFE, 0xAF, 0xFE, 0xD0, 0xFE, 0xCF, 0x03, 0xFE, 0xAF, 0x02, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x04, 0xFE, 0xAF, 0x02, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x04, 0xFE, 0xB0, 0x04, 0xFE, 0xD0, 0x01, 0xFE, 0xD1, 0x01, 0xFE, 0xD0, 0x80, 0xFE, 0xB0, 0x04, 0xFE, 0xD0, 0x02, 0xFE, 0xB0, 0x09, 0xFE, 0xAF, 0x0B, 0xFE, 0xD0, 0x80, 0xFE, 0xB0, 0x03, 0xFE, 0xD0, 0x81, 0xFE, 0xB0, 0xFE, 0xD0, 0x09, 0xFE, 0xB0, 0x80, 0xFE, 0xB1, 0x02, 0xFE, 0xD1, 0x80, 0xFE, 0xB1, 0x01, 0xFE, 0xB0, 0x01, 0xFE, 0xD1, 0x01, 0xFE, 0xB0, 0x05, 0xFE, 0xD1, 0x80, 0xFE, 0xD0, 0x01, 0xFE, 0xB0, 0x03, 0xFE, 0xB1, 0x02, 0xFE, 0xD1, + 0x80, 0xFE, 0xB1, 0x0B, 0xFE, 0xD1, 0x03, 0xFE, 0xD0, 0x80, 0xFE, 0xB0, 0x02, 0xFE, 0xD0, 0x80, 0xFE, 0xB0, 0x02, 0xFE, 0xD0, 0x03, 0xFE, 0xCF, 0x80, 0xFE, 0xAF, 0x04, 0xFE, 0xCF, 0x07, 0xFE, 0xAF, 0x02, 0xFE, 0xCF, 0x03, 0xFE, 0xAF, 0x01, 0xFE, 0xCF, 0x01, 0xFE, 0xAF, 0x80, 0xFE, 0xD0, 0x0E, 0xFE, 0xB0, 0x82, 0xFE, 0xD0, 0xFE, 0xB0, 0xFE, 0xD0, 0x0A, 0xFE, 0xD1, 0x02, 0xFE, 0xB1, 0x80, 0xFE, 0xD1, 0x06, 0xFE, 0xB1, 0x80, 0xFE, 0xB2, 0x01, 0xFE, 0xB1, 0x01, 0xFE, 0xB2, 0x82, 0xFE, 0xD2, 0xFE, 0xB2, 0xFE, 0xD2, 0x07, 0xFE, 0xB2, 0x80, 0xFE, 0xD2, 0x03, 0xFE, 0xB2, 0x18, 0xFE, 0xD2, 0x02, 0xFE, 0xB1, 0x02, 0xFE, 0xB2, 0x01, 0xFE, 0xD2, 0x81, 0xFE, 0xB2, 0xFE, 0xD2, 0x02, 0xFE, 0xB2, 0x03, 0xFE, 0xD2, 0x0D, 0xFE, 0xD3, 0x03, 0xFE, 0xF4, 0x88, 0xFE, 0xF5, 0xFE, 0xF6, 0xFE, 0x97, 0xF5, 0x96, 0xAA, 0x8E, 0x99, 0xAD, 0xA1, 0xB0, 0xA9, 0xD1, 0xA9, 0xF2, 0x01, 0xA9, 0xF3, 0x80, 0xAA, 0x13, 0x01, 0xAA, 0x14, 0x91, 0xAA, 0x34, 0x91, 0xD4, 0x89, 0xB3, 0x89, 0xD4, 0x91, 0xD5, 0x99, 0xF5, 0xA2, 0x16, 0xAA, 0x16, 0xAA, 0x37, 0xA2, 0x38, 0xA2, 0x59, 0x82, 0x1A, 0x38, 0xD8, 0x29, 0x1B, 0x21, 0x5C, 0x11, 0x9D, 0x09, 0x9E, 0x01, 0xBE, 0x01, 0x01, 0xBF, 0x02, 0x01, 0xDF, 0x99, 0x01, 0xFF, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xFE, 0x02, 0x1E, 0x02, 0x1D, 0x02, 0x3D, 0x02, 0x5B, 0x02, 0xF9, 0x1D, 0x3C, 0x26, 0x7C, 0x26, 0xFC, 0x1F, 0x39, 0x06, 0xF4, 0x07, 0x12, 0x17, 0x94, 0x1F, 0x75, 0x27, 0x78, 0x37, 0x1A, 0x5F, 0x7F, 0x55, 0xFC, 0x33, 0x75, + 0x3A, 0x74, 0x4A, 0x55, 0x51, 0xF4, 0x51, 0xD4, 0x01, 0x51, 0xB4, 0x01, 0x51, 0x93, 0x85, 0x51, 0xB3, 0x49, 0xB3, 0x49, 0x72, 0x49, 0x92, 0x41, 0x72, 0x41, 0x91, 0x01, 0x41, 0x71, 0x02, 0x39, 0x71, 0x81, 0x31, 0x50, 0x31, 0x30, 0x02, 0x31, 0x50, 0x81, 0x31, 0x2F, 0x31, 0x50, 0x01, 0x31, 0x2F, 0x80, 0x31, 0x50, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x10, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0E, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x10, 0x11, 0x32, 0x11, 0x94, 0x01, 0x19, 0xB6, 0x83, 0x11, 0x95, 0x11, 0x11, 0x19, 0x31, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x91, 0x21, 0x0E, 0x21, 0x2F, 0x29, 0x4F, 0x21, 0x4F, 0x21, 0x2F, 0x19, 0x30, 0x19, 0x10, 0x11, 0x32, 0x11, 0x53, 0x21, 0xF6, 0x22, 0x37, 0x19, 0xF6, 0x09, 0x53, 0x09, 0x12, 0x19, 0x32, 0x19, 0x31, 0x29, 0x51, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x21, 0x0E, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x0E, 0x29, 0x2E, 0x07, + 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x80, 0x20, 0xEE, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x20, 0xEE, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x03, 0x29, 0x0E, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x08, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x05, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x02, 0x21, 0x0E, 0x82, 0x29, 0x0F, 0x21, 0x0E, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x81, 0x21, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x01, 0x19, 0x10, 0x8A, 0x19, 0x31, 0x11, 0x53, 0x19, 0x94, 0x19, 0xB5, 0x19, 0xD6, 0x21, 0xF6, 0x21, 0xD5, 0x19, 0x74, 0x19, 0x53, 0x11, 0x11, 0x18, 0xF1, 0x01, 0x18, 0xF0, 0x01, 0x21, 0x31, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2F, + 0x08, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x0F, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x07, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x08, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x83, 0x21, 0x0F, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x30, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x86, 0x21, 0x31, 0x19, 0x11, 0x11, 0x11, 0x11, 0x12, 0x11, 0x32, 0x11, 0x74, 0x19, 0xD5, 0x01, 0x21, 0xF6, 0x84, 0x19, 0x95, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x01, 0x19, 0x0F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x4F, 0x21, 0x2F, 0x21, 0x2E, 0x01, 0x21, 0x0E, 0x01, 0x21, 0x2E, 0x88, 0x29, 0x2F, 0x29, 0x2E, 0x21, 0x0E, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0F, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x81, 0x21, 0x0E, 0x29, 0x0F, 0x04, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x82, 0x21, 0x0E, 0x29, 0x2F, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x82, + 0x29, 0x2F, 0x29, 0x0E, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x03, 0x21, 0x0E, 0x81, 0x29, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x82, 0x21, 0x0E, 0x29, 0x0E, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x84, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x2F, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x04, 0x29, 0x0E, 0x0B, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x09, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x8F, 0x28, 0xEE, 0x30, 0xCD, 0x48, 0xEE, 0x79, 0xD1, 0x9A, 0x33, 0xA2, 0x53, 0xAA, 0x53, 0xA2, 0x32, 0x99, 0xF1, 0x99, 0xF0, 0x91, 0xED, 0x9A, 0x8D, 0xFD, 0xF6, 0xFE, 0x96, 0xFE, 0xD4, 0xFE, 0xD3, 0x02, 0xFE, 0xD2, 0x01, 0xFE, 0xD1, 0x08, 0xFE, 0xB1, 0x07, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x02, 0xFE, 0xB0, 0x0C, 0xFE, 0xAF, 0x1D, 0xFE, 0xB0, 0x03, 0xFE, 0xAF, 0x80, 0xFE, 0xB0, 0x06, 0xFE, 0xAF, 0x17, 0xFE, 0xB0, 0x81, 0xFE, 0xD0, 0xFE, 0xAF, 0x01, 0xFE, 0xB0, 0x01, 0xFE, 0xAF, 0x80, 0xFE, 0xD0, 0x08, 0xFE, 0xAF, 0x05, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x06, 0xFE, 0xB0, 0x82, 0xFE, 0xD0, 0xFE, 0xB0, 0xFE, 0xD0, 0x28, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x01, 0xFE, 0xB0, 0x01, 0xFE, 0xD0, 0x01, 0xFE, 0xB0, 0x01, 0xFE, 0xD0, 0x07, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x01, 0xFE, 0xB0, 0x82, 0xFE, 0xAF, 0xFE, 0xD0, 0xFE, 0xCF, 0x02, 0xFE, 0xD0, 0x81, 0xFE, 0xAF, 0xFE, 0xCF, 0x15, 0xFE, 0xAF, 0x11, 0xFE, 0xB0, 0x88, 0xFE, 0xD0, 0xFE, 0xB0, 0xFE, 0xD0, 0xFE, 0xB0, 0xFE, 0xD1, 0xFE, 0xD0, 0xFE, 0xD1, + 0xFE, 0xB0, 0xFE, 0xD1, 0x14, 0xFE, 0xB1, 0x81, 0xFE, 0xB2, 0xFE, 0xB1, 0x06, 0xFE, 0xB2, 0x80, 0xFE, 0xB1, 0x07, 0xFE, 0xB2, 0x01, 0xFE, 0xD2, 0x80, 0xFE, 0xB2, 0x0B, 0xFE, 0xD2, 0x80, 0xFE, 0xB2, 0x02, 0xFE, 0xD2, 0x01, 0xFE, 0xB2, 0x80, 0xFE, 0xB1, 0x0C, 0xFE, 0xB2, 0x01, 0xFE, 0xD2, 0x82, 0xFE, 0xB2, 0xFE, 0xD2, 0xFE, 0xB2, 0x01, 0xFE, 0xD2, 0x04, 0xFE, 0xD3, 0x80, 0xFE, 0xB3, 0x02, 0xFE, 0xD3, 0x01, 0xFE, 0xD4, 0x02, 0xFE, 0xF4, 0x88, 0xFE, 0xF5, 0xFE, 0xD6, 0xFE, 0xB7, 0xF5, 0x96, 0xB2, 0xEF, 0x99, 0xCE, 0xA1, 0xB0, 0xA9, 0xD1, 0xA9, 0xD2, 0x01, 0xA9, 0xF3, 0x02, 0xAA, 0x14, 0x87, 0xAA, 0x34, 0x9A, 0x14, 0x89, 0xB3, 0x89, 0xB4, 0x89, 0xD4, 0x89, 0xB4, 0x99, 0xF5, 0xA2, 0x16, 0x01, 0xAA, 0x37, 0x89, 0xA2, 0x38, 0x9A, 0x39, 0x79, 0xD9, 0x38, 0xD9, 0x29, 0x1B, 0x19, 0x5C, 0x11, 0x7D, 0x01, 0x9E, 0x01, 0xBE, 0x01, 0xBF, 0x01, 0x01, 0xDF, 0x02, 0x01, 0xFF, 0x02, 0x02, 0x1F, 0x01, 0x02, 0x1E, 0x97, 0x02, 0x3C, 0x02, 0x5B, 0x02, 0xF9, 0x15, 0x1C, 0x26, 0x7C, 0x26, 0xFC, 0x1F, 0x39, 0x07, 0x14, 0x07, 0x12, 0x17, 0x74, 0x1F, 0x55, 0x37, 0x78, 0x36, 0xB9, 0x6F, 0x5F, 0x45, 0x19, 0x33, 0x14, 0x42, 0x54, 0x4A, 0x14, 0x51, 0xD4, 0x59, 0xD4, 0x51, 0xB4, 0x59, 0xD4, 0x59, 0xB4, 0x51, 0xB3, 0x03, 0x49, 0x92, 0x80, 0x41, 0x92, 0x01, 0x41, 0x71, 0x01, 0x39, 0x71, 0x01, 0x39, 0x70, 0x01, 0x39, 0x50, 0x02, 0x31, 0x50, 0x04, 0x31, 0x2F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, + 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x84, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2F, 0x29, 0x0E, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x2E, 0x88, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x30, 0x11, 0x32, 0x11, 0x74, 0x01, 0x19, 0xD6, 0x84, 0x19, 0x95, 0x11, 0x31, 0x19, 0x31, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x19, 0x30, 0x8F, 0x19, 0x31, 0x11, 0x32, 0x19, 0xB5, 0x22, 0x37, 0x22, 0x17, 0x11, 0x95, 0x09, 0x12, 0x11, 0x12, 0x19, 0x11, 0x21, 0x31, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x86, 0x21, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x06, 0x29, 0x0F, + 0x83, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x87, 0x21, 0x0E, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x0F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x08, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x0F, 0x04, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x05, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x02, 0x29, 0x0F, 0x81, 0x21, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x0E, 0x81, 0x21, 0x2F, 0x29, 0x50, 0x01, 0x21, 0x50, 0x01, 0x19, 0x10, 0x90, 0x19, 0x31, 0x11, 0x32, 0x11, 0x74, 0x19, 0xD5, 0x19, 0xD6, 0x22, 0x16, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x53, 0x11, 0x11, 0x19, 0x31, 0x19, 0x32, 0x19, 0x31, 0x21, 0x51, 0x21, 0x72, 0x21, 0x51, 0x21, 0x31, 0x16, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0D, 0x21, 0x30, 0x80, + 0x21, 0x2F, 0x12, 0x21, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x06, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x10, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x10, 0x01, 0x21, 0x2F, 0x06, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x80, 0x21, 0x0F, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x03, 0x21, 0x30, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x31, 0x19, 0x11, 0x01, 0x19, 0x32, 0x89, 0x11, 0x32, 0x11, 0x33, 0x11, 0x74, 0x19, 0xD6, 0x22, 0x17, 0x22, 0x16, 0x19, 0x94, 0x11, 0x52, 0x11, 0x31, 0x19, 0x11, 0x01, 0x19, 0x10, 0x86, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x2E, 0x29, 0x2F, 0x29, 0x2E, 0x01, 0x21, 0x0E, 0x80, 0x21, 0x2E, 0x04, 0x29, 0x2E, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0E, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x84, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0E, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x84, 0x21, 0x0E, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2F, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0E, 0x02, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x02, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x87, 0x29, 0x0F, 0x29, 0x0E, 0x29, + 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x03, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x05, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x83, 0x29, 0x2E, 0x29, 0x2F, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2F, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x2F, 0x04, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x8F, 0x28, 0xEE, 0x30, 0xEE, 0x38, 0xCE, 0x51, 0x0E, 0x8A, 0x13, 0x9A, 0x53, 0xAA, 0x73, 0xAA, 0x53, 0xA2, 0x12, 0x99, 0xF1, 0x99, 0xF0, 0x91, 0xEE, 0x9A, 0x4C, 0xED, 0x55, 0xFE, 0x96, 0xFE, 0xD5, 0x01, 0xFE, 0xD3, 0x01, 0xFE, 0xD2, 0x09, 0xFE, 0xB1, 0x0D, 0xFE, 0xB0, 0x80, 0xFE, 0xAF, 0x02, 0xFE, 0xB0, 0x05, 0xFE, 0xAF, 0x81, 0xFE, 0xB0, 0xFE, 0xAF, 0x04, 0xFE, 0xB0, 0x82, 0xFE, 0x90, 0xFE, 0xB0, 0xFE, 0x90, 0x04, 0xFE, 0xB0, 0x80, 0xFE, 0x90, 0x2F, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x07, 0xFE, 0xB0, 0x80, 0xFE, 0xAF, 0x5B, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x01, 0xFE, 0xB0, 0x01, 0xFE, 0xAF, 0x83, 0xFE, 0xD0, 0xFE, 0xAF, 0xFE, 0xB0, 0xFE, 0xAF, 0x01, 0xFE, 0xB0, 0x80, 0xFE, 0xAF, 0x02, 0xFE, 0xB0, 0x01, 0xFE, 0xAF, 0x04, 0xFE, 0xB0, 0x82, 0xFE, 0xAF, 0xFE, 0xB0, 0xFE, 0xD0, 0x0A, 0xFE, 0xB0, 0x02, 0xFE, 0xD0, 0x03, 0xFE, 0xB0, 0x81, 0xFE, 0xD0, 0xFE, 0xB0, 0x01, 0xFE, 0xB1, 0x84, 0xFE, 0xB0, 0xFE, 0xB1, 0xFE, 0xB0, 0xFE, 0xB1, 0xFE, 0xD1, 0x01, 0xFE, 0xB1, 0x80, 0xFE, 0xD1, 0x0A, 0xFE, 0xB1, 0x80, 0xFE, 0xD1, 0x04, 0xFE, 0xB1, 0x17, 0xFE, 0xB2, 0x02, 0xFE, 0xD2, 0x80, 0xFE, 0xB2, 0x02, + 0xFE, 0xD2, 0x80, 0xFE, 0xB2, 0x07, 0xFE, 0xD2, 0x01, 0xFE, 0xB2, 0x80, 0xFE, 0xD2, 0x06, 0xFE, 0xB2, 0x83, 0xFE, 0xD2, 0xFE, 0xB2, 0xFE, 0xD2, 0xFE, 0xB2, 0x01, 0xFE, 0xD2, 0x81, 0xFE, 0xD3, 0xFE, 0xD2, 0x01, 0xFE, 0xD3, 0x80, 0xFE, 0xB3, 0x08, 0xFE, 0xD3, 0x80, 0xFE, 0xD4, 0x02, 0xFE, 0xF4, 0x88, 0xFE, 0xF5, 0xFE, 0xD6, 0xFE, 0xB7, 0xFE, 0x18, 0xA2, 0x8E, 0x99, 0xAE, 0xA1, 0xB0, 0xA1, 0xB1, 0xA9, 0xF2, 0x01, 0xA9, 0xF3, 0x87, 0xA1, 0xF3, 0xA2, 0x14, 0xAA, 0x14, 0xAA, 0x35, 0xA2, 0x35, 0x91, 0xF4, 0x89, 0xF4, 0x89, 0xD4, 0x01, 0x81, 0xB4, 0x81, 0x91, 0xF5, 0xA2, 0x16, 0x01, 0xAA, 0x37, 0x89, 0xA2, 0x38, 0x92, 0x3A, 0x61, 0x78, 0x38, 0xF9, 0x29, 0x3B, 0x19, 0x7D, 0x11, 0x9D, 0x01, 0x9E, 0x01, 0xBE, 0x01, 0xBF, 0x01, 0x01, 0xDF, 0x02, 0x01, 0xFF, 0x02, 0x02, 0x1F, 0x9F, 0x02, 0x1E, 0x02, 0x1D, 0x02, 0x3D, 0x02, 0x7B, 0x02, 0xF9, 0x14, 0xFB, 0x26, 0x7D, 0x26, 0xFC, 0x1F, 0x39, 0x0E, 0xF4, 0x0F, 0x12, 0x1F, 0x74, 0x27, 0x35, 0x3F, 0x38, 0x4E, 0xBA, 0x5E, 0x3B, 0x2B, 0x94, 0x32, 0x93, 0x42, 0x13, 0x49, 0xF4, 0x59, 0xD4, 0x51, 0xB4, 0x51, 0x93, 0x59, 0x94, 0x59, 0xB4, 0x51, 0x93, 0x49, 0x72, 0x49, 0x92, 0x49, 0x72, 0x49, 0x92, 0x41, 0x71, 0x41, 0x91, 0x01, 0x41, 0x71, 0x82, 0x39, 0x70, 0x39, 0x71, 0x39, 0x70, 0x01, 0x39, 0x50, 0x80, 0x31, 0x2F, 0x01, 0x31, 0x50, 0x84, 0x31, 0x2F, 0x31, 0x4F, 0x31, 0x2F, 0x31, 0x4F, 0x31, 0x2F, 0x09, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2E, 0x04, 0x29, 0x0F, 0x02, 0x29, + 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x2E, 0x80, 0x21, 0x2E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x19, 0x10, 0x19, 0x32, 0x19, 0x94, 0x01, 0x19, 0xD6, 0x83, 0x19, 0x95, 0x11, 0x31, 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x4F, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x8D, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x19, 0x52, 0x19, 0x94, 0x22, 0x16, 0x22, 0x37, 0x19, 0xD6, 0x11, 0x54, 0x11, 0x12, 0x10, 0xF1, 0x19, 0x11, 0x21, 0x31, 0x29, 0x50, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x21, 0x0E, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0E, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x06, 0x29, 0x2E, 0x01, 0x21, 0x0E, 0x81, 0x21, 0x2F, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x29, 0x2F, + 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x07, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x05, 0x29, 0x0E, 0x83, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x03, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x86, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x21, 0x2E, 0x01, 0x21, 0x0E, 0x80, 0x21, 0x2E, 0x01, 0x21, 0x2F, 0x90, 0x29, 0x70, 0x21, 0x50, 0x19, 0x0F, 0x19, 0x10, 0x19, 0x11, 0x11, 0x11, 0x11, 0x52, 0x11, 0x73, 0x19, 0xB5, 0x21, 0xD6, 0x21, 0xF6, 0x19, 0xD5, 0x19, 0xB4, 0x11, 0x53, 0x11, 0x52, 0x11, 0x12, 0x11, 0x32, 0x01, 0x11, 0x31, 0x02, 0x19, 0x31, 0x80, 0x21, 0x31, 0x02, 0x21, 0x30, 0x81, 0x19, 0x30, 0x21, 0x31, 0x03, 0x21, 0x30, 0x82, 0x19, 0x30, 0x21, 0x30, 0x19, 0x30, 0x01, 0x21, 0x30, 0x80, 0x19, 0x30, 0x02, 0x21, 0x30, 0x80, 0x19, 0x10, 0x04, 0x21, 0x30, 0x81, 0x21, 0x10, 0x19, 0x10, 0x05, 0x21, 0x30, 0x01, 0x21, 0x31, 0x0C, 0x21, 0x30, + 0x80, 0x19, 0x30, 0x05, 0x21, 0x30, 0x80, 0x21, 0x31, 0x03, 0x21, 0x30, 0x80, 0x19, 0x10, 0x02, 0x21, 0x30, 0x82, 0x19, 0x30, 0x21, 0x30, 0x19, 0x30, 0x0E, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x19, 0x10, 0x1A, 0x21, 0x30, 0x80, 0x21, 0x10, 0x09, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x19, 0x10, 0x01, 0x19, 0x31, 0x8B, 0x19, 0x11, 0x19, 0x12, 0x11, 0x12, 0x11, 0x33, 0x19, 0x94, 0x21, 0xF6, 0x22, 0x16, 0x21, 0xF6, 0x19, 0x94, 0x19, 0x73, 0x11, 0x31, 0x19, 0x11, 0x01, 0x19, 0x10, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x2E, 0x21, 0x0E, 0x21, 0x2E, 0x01, 0x21, 0x0E, 0x05, 0x29, 0x2E, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x06, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x83, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0E, 0x29, 0x0F, 0x0F, 0x29, 0x2F, 0x81, 0x29, 0x2E, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0E, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x82, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2F, + 0x03, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x91, 0x28, 0xEE, 0x30, 0xEE, 0x38, 0xAD, 0x61, 0x70, 0x92, 0x53, 0xA2, 0x94, 0xAA, 0x73, 0xA2, 0x33, 0xA2, 0x12, 0x99, 0xF1, 0x99, 0xD0, 0x91, 0xEE, 0x92, 0x2C, 0xD4, 0x92, 0xFE, 0x77, 0xFE, 0xB6, 0xFE, 0xB4, 0xFE, 0xB3, 0x01, 0xFE, 0xB2, 0x80, 0xFE, 0xD2, 0x01, 0xFE, 0xB2, 0x07, 0xFE, 0xB1, 0x04, 0xFE, 0xB0, 0x06, 0xFE, 0xD0, 0x81, 0xFE, 0xB0, 0xFE, 0xD0, 0x20, 0xFE, 0xB0, 0x02, 0xFE, 0xD0, 0x82, 0xFE, 0xB0, 0xFE, 0xD0, 0xFE, 0xB0, 0x01, 0xFE, 0xD0, 0x81, 0xFE, 0xB0, 0xFE, 0xD0, 0x09, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x1B, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x04, 0xFE, 0xB0, 0x80, 0xFE, 0xD0, 0x13, 0xFE, 0xB0, 0x81, 0xFE, 0xD0, 0xFE, 0xD1, 0x15, 0xFE, 0xB0, 0x02, 0xFE, 0xB1, 0x01, 0xFE, 0xB0, 0x01, 0xFE, 0xB1, 0x80, 0xFE, 0xD1, 0x08, 0xFE, 0xB0, 0x01, 0xFE, 0xB1, 0x0E, 0xFE, 0xB0, 0x80, 0xFE, 0xD1, 0x04, 0xFE, 0xD0, 0x03, 0xFE, 0xB0, 0x81, 0xFE, 0xD0, 0xFE, 0xB0, 0x07, 0xFE, 0xD0, 0x80, 0xFE, 0xB0, 0x03, 0xFE, 0xD0, 0x80, 0xFE, 0xB0, 0x08, 0xFE, 0xD0, 0x83, 0xFE, 0xB0, 0xFE, 0xD0, 0xFE, 0xB0, 0xFE, 0xD0, 0x01, 0xFE, 0xB0, 0x01, 0xFE, 0xD0, 0x80, 0xFE, 0xD1, 0x02, 0xFE, 0xD0, 0x80, 0xFE, 0xB1, 0x03, 0xFE, 0xD1, 0x80, 0xFE, 0xB1, 0x02, 0xFE, 0xD1, 0x02, 0xFE, 0xB1, 0x09, 0xFE, 0xD1, 0x05, 0xFE, 0xB1, 0x03, 0xFE, 0xD2, 0x80, 0xFE, 0xB2, 0x06, 0xFE, 0xD2, 0x01, 0xFE, 0xB2, 0x11, 0xFE, 0xD2, 0x80, 0xFE, 0xD3, 0x02, 0xFE, 0xD2, + 0x80, 0xFE, 0xD3, 0x0A, 0xFE, 0xD2, 0x83, 0xFE, 0xB2, 0xFE, 0xD2, 0xFE, 0xD3, 0xFE, 0xD2, 0x01, 0xFE, 0xD3, 0x02, 0xFE, 0xD2, 0x81, 0xFE, 0xD3, 0xFE, 0xB2, 0x0D, 0xFE, 0xD3, 0x01, 0xFE, 0xD4, 0x80, 0xFE, 0xF4, 0x01, 0xFE, 0xF5, 0x8B, 0xFE, 0xD6, 0xFE, 0xB7, 0xFD, 0xD7, 0xAA, 0xCE, 0x99, 0xEF, 0xA1, 0xB0, 0xA1, 0xD1, 0xA9, 0xD2, 0xA9, 0xF3, 0xAA, 0x13, 0xA9, 0xF3, 0xAA, 0x13, 0x01, 0xA2, 0x14, 0x84, 0xA2, 0x35, 0x91, 0xD4, 0x89, 0xD4, 0x89, 0xF5, 0x81, 0xD4, 0x01, 0x81, 0xB4, 0x8B, 0x91, 0xF6, 0xA2, 0x16, 0xAA, 0x37, 0xA2, 0x17, 0xA2, 0x39, 0x8A, 0x1A, 0x59, 0x38, 0x39, 0x1A, 0x29, 0x3C, 0x19, 0x7D, 0x09, 0x9D, 0x01, 0xBE, 0x02, 0x01, 0xDF, 0x03, 0x01, 0xFF, 0x80, 0x02, 0x1F, 0x01, 0x02, 0x3F, 0x01, 0x02, 0x3E, 0x92, 0x02, 0x5D, 0x02, 0x7B, 0x02, 0xF9, 0x0C, 0xBB, 0x26, 0x5D, 0x26, 0xDC, 0x27, 0x3A, 0x0E, 0xD4, 0x0E, 0xF2, 0x27, 0x54, 0x2F, 0x14, 0x47, 0x18, 0x56, 0x9A, 0x55, 0x59, 0x2A, 0xF3, 0x3A, 0x52, 0x4A, 0x13, 0x51, 0xF4, 0x59, 0xB4, 0x01, 0x51, 0x93, 0x80, 0x59, 0xB4, 0x01, 0x51, 0x93, 0x03, 0x49, 0x92, 0x01, 0x41, 0x92, 0x01, 0x41, 0x71, 0x01, 0x39, 0x71, 0x80, 0x39, 0x70, 0x01, 0x39, 0x50, 0x02, 0x31, 0x50, 0x04, 0x31, 0x2F, 0x01, 0x31, 0x0F, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x82, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x0F, + 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x2E, 0x81, 0x21, 0x0E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x83, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x8A, 0x21, 0x0F, 0x21, 0x2F, 0x19, 0x10, 0x19, 0x32, 0x19, 0x94, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0x95, 0x11, 0x11, 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x90, 0x29, 0x4F, 0x21, 0x2F, 0x21, 0x0E, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x19, 0x53, 0x19, 0xD5, 0x22, 0x37, 0x21, 0xF6, 0x19, 0xB5, 0x11, 0x54, 0x11, 0x12, 0x01, 0x19, 0x11, 0x88, 0x29, 0x51, 0x29, 0x30, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x0E, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x84, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x07, 0x29, 0x0F, 0x82, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x06, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x83, 0x21, 0x0E, 0x29, 0x2E, 0x21, 0x0E, 0x21, 0x2E, 0x01, 0x21, 0x0E, 0x02, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x02, 0x29, 0x2F, 0x05, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x01, + 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x82, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x03, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x02, 0x21, 0x2E, 0x02, 0x21, 0x0E, 0x8A, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x19, 0x31, 0x19, 0x11, 0x19, 0x32, 0x11, 0x53, 0x19, 0x94, 0x03, 0x19, 0xB5, 0x85, 0x11, 0x74, 0x09, 0x32, 0x09, 0x12, 0x09, 0x11, 0x11, 0x11, 0x11, 0x31, 0x01, 0x11, 0x11, 0x81, 0x19, 0x31, 0x11, 0x10, 0x03, 0x19, 0x31, 0x80, 0x19, 0x11, 0x05, 0x19, 0x31, 0x82, 0x19, 0x11, 0x19, 0x31, 0x19, 0x10, 0x06, 0x19, 0x31, 0x80, 0x19, 0x11, 0x11, 0x19, 0x31, 0x02, 0x19, 0x30, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x0E, 0x19, 0x31, 0x80, 0x19, 0x51, 0x02, 0x19, 0x31, 0x01, 0x19, 0x30, 0x16, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x80, 0x19, 0x30, 0x02, 0x19, 0x31, 0x01, 0x19, 0x30, 0x12, 0x19, 0x31, 0x80, 0x19, 0x11, + 0x0A, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x11, 0x12, 0x8B, 0x11, 0x33, 0x11, 0x74, 0x21, 0xD5, 0x21, 0xF6, 0x19, 0xD5, 0x11, 0x73, 0x11, 0x32, 0x11, 0x31, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x83, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x21, 0x0E, 0x81, 0x21, 0x2E, 0x21, 0x0E, 0x04, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x85, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x04, 0x29, 0x2F, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x85, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x06, 0x29, 0x2E, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x0A, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x83, 0x30, 0xCE, 0x40, 0xCE, 0x61, 0x70, 0x92, 0x53, 0x01, 0xA2, 0x53, 0x8A, 0xAA, 0x53, 0xA2, 0x32, 0xA2, 0x11, 0x99, 0xF0, 0x91, 0xEF, 0x92, 0x0D, 0xAB, 0x0F, 0xE5, 0x14, 0xFE, 0x36, 0xFE, 0x95, 0xFE, 0xB4, 0x02, 0xFE, 0xB3, 0x02, 0xFE, 0xB2, 0x03, + 0xFE, 0xB1, 0x81, 0xFE, 0xD1, 0xFE, 0xB1, 0x0B, 0xFE, 0xD1, 0x80, 0xFE, 0xF1, 0x01, 0xFE, 0xD1, 0x81, 0xFE, 0xD0, 0xFE, 0xD1, 0x06, 0xFE, 0xD0, 0x47, 0xFE, 0xD1, 0x04, 0xFE, 0xD0, 0x81, 0xFE, 0xD1, 0xFE, 0xD0, 0x6F, 0xFE, 0xD1, 0x80, 0xFE, 0xD0, 0x10, 0xFE, 0xD1, 0x80, 0xFE, 0xD2, 0x07, 0xFE, 0xD1, 0x02, 0xFE, 0xD2, 0x80, 0xFE, 0xF2, 0x10, 0xFE, 0xD2, 0x80, 0xFE, 0xF2, 0x0A, 0xFE, 0xD2, 0x13, 0xFE, 0xF3, 0x04, 0xFE, 0xD2, 0x01, 0xFE, 0xD3, 0x80, 0xFE, 0xD2, 0x0D, 0xFE, 0xD3, 0x80, 0xFE, 0xF3, 0x01, 0xFE, 0xD3, 0x80, 0xFE, 0xF3, 0x03, 0xFE, 0xD3, 0x80, 0xFE, 0xF4, 0x03, 0xFE, 0xD4, 0x89, 0xFE, 0xF4, 0xFE, 0xD5, 0xFE, 0xF5, 0xFE, 0xD7, 0xFE, 0x98, 0xFD, 0xB8, 0xA2, 0x4E, 0x99, 0xCE, 0xA1, 0xD1, 0xA9, 0xD2, 0x02, 0xA9, 0xF3, 0x02, 0xAA, 0x14, 0x82, 0xA2, 0x14, 0xA2, 0x35, 0x92, 0x14, 0x02, 0x81, 0xD4, 0x90, 0x81, 0xD5, 0x81, 0xB4, 0x89, 0xB4, 0x9A, 0x16, 0xA2, 0x16, 0xA2, 0x17, 0xA2, 0x38, 0x9A, 0x59, 0x81, 0xFA, 0x49, 0x18, 0x39, 0x1A, 0x29, 0x5C, 0x19, 0x7D, 0x09, 0x9E, 0x01, 0xBE, 0x01, 0xBF, 0x01, 0xDF, 0x02, 0x01, 0xFF, 0x02, 0x02, 0x1F, 0x01, 0x02, 0x3F, 0x01, 0x02, 0x5E, 0x99, 0x02, 0x5D, 0x02, 0x7C, 0x02, 0xFA, 0x04, 0x5A, 0x26, 0x1C, 0x26, 0xDC, 0x27, 0x3A, 0x0E, 0xB4, 0x0E, 0xB1, 0x2F, 0x33, 0x36, 0xF4, 0x4E, 0xF7, 0x7F, 0x3C, 0x3C, 0x14, 0x32, 0xB2, 0x42, 0x32, 0x52, 0x13, 0x59, 0xF4, 0x61, 0xD4, 0x59, 0xB4, 0x59, 0x93, 0x59, 0xB4, 0x59, 0xB3, 0x51, 0xB3, 0x49, 0x92, 0x51, 0x92, 0x01, 0x49, 0x92, 0x81, 0x41, + 0x71, 0x41, 0x91, 0x01, 0x41, 0x71, 0x83, 0x39, 0x71, 0x39, 0x50, 0x39, 0x70, 0x39, 0x50, 0x01, 0x31, 0x50, 0x01, 0x31, 0x30, 0x81, 0x31, 0x2F, 0x31, 0x4F, 0x05, 0x31, 0x2F, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x05, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x87, 0x21, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x83, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x89, 0x19, 0x10, 0x19, 0x31, 0x19, 0x94, 0x19, 0xD6, 0x21, 0xF7, 0x19, 0x95, 0x11, 0x11, 0x19, 0x10, 0x21, 0x30, 0x29, 0x30, 0x01, 0x21, 0x2F, 0x83, 0x21, 0x0E, 0x21, 0x2F, 0x21, 0x0E, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x8E, 0x19, 0x10, 0x19, 0x31, 0x19, 0x52, 0x19, 0x94, 0x19, 0xD5, 0x19, 0xF6, 0x21, 0xF6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x12, 0x18, 0xF1, 0x21, 0x31, 0x29, 0x30, 0x29, 0x50, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x06, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x2F, 0x08, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x02, 0x29, + 0x2E, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x86, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x21, 0x2E, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x84, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x82, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x84, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x2F, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x2F, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x06, 0x29, 0x2F, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x03, 0x21, 0x2E, 0x84, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x21, 0x0E, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x30, 0x21, 0x30, 0x01, 0x19, 0x11, 0x8C, 0x19, 0x32, 0x19, 0x53, 0x19, 0x94, 0x19, 0xD5, 0x19, 0xD6, 0x11, 0xB5, 0x19, 0xD5, 0x11, 0x94, 0x11, 0x53, 0x09, 0x32, 0x09, 0x11, 0x11, 0x11, 0x11, 0x32, 0x0D, 0x11, 0x31, 0x80, 0x11, 0x11, 0x03, 0x11, 0x31, 0x81, 0x19, + 0x32, 0x11, 0x31, 0x01, 0x19, 0x52, 0x01, 0x19, 0x32, 0x80, 0x19, 0x52, 0x01, 0x19, 0x32, 0x80, 0x11, 0x31, 0x02, 0x19, 0x32, 0x01, 0x11, 0x32, 0x81, 0x19, 0x31, 0x19, 0x32, 0x01, 0x11, 0x31, 0x80, 0x19, 0x32, 0x02, 0x19, 0x31, 0x80, 0x11, 0x31, 0x01, 0x19, 0x31, 0x04, 0x11, 0x31, 0x82, 0x19, 0x31, 0x19, 0x52, 0x19, 0x31, 0x01, 0x19, 0x52, 0x80, 0x19, 0x32, 0x01, 0x19, 0x52, 0x01, 0x19, 0x32, 0x01, 0x19, 0x52, 0x01, 0x19, 0x32, 0x83, 0x19, 0x52, 0x19, 0x31, 0x19, 0x52, 0x19, 0x31, 0x01, 0x19, 0x51, 0x81, 0x19, 0x31, 0x19, 0x52, 0x06, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x01, 0x19, 0x32, 0x80, 0x19, 0x52, 0x02, 0x19, 0x31, 0x80, 0x19, 0x51, 0x02, 0x19, 0x31, 0x01, 0x19, 0x51, 0x01, 0x19, 0x31, 0x01, 0x19, 0x51, 0x04, 0x19, 0x31, 0x84, 0x19, 0x32, 0x19, 0x31, 0x19, 0x51, 0x19, 0x31, 0x19, 0x52, 0x01, 0x19, 0x51, 0x01, 0x19, 0x52, 0x80, 0x19, 0x31, 0x02, 0x19, 0x32, 0x01, 0x19, 0x52, 0x07, 0x19, 0x32, 0x81, 0x19, 0x31, 0x19, 0x32, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x02, 0x11, 0x32, 0x01, 0x11, 0x12, 0x81, 0x19, 0x54, 0x21, 0xD6, 0x01, 0x21, 0xD5, 0x82, 0x19, 0x73, 0x11, 0x32, 0x19, 0x31, 0x01, 0x19, 0x10, 0x84, 0x19, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x05, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x80, + 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x2F, 0x29, 0x2E, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x2F, 0x07, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x06, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x2E, 0x85, 0x29, 0x0E, 0x30, 0xEE, 0x30, 0xCE, 0x40, 0xCD, 0x61, 0x50, 0x8A, 0x53, 0x01, 0xA2, 0x73, 0x88, 0xA2, 0x53, 0xA2, 0x32, 0x9A, 0x11, 0x99, 0xF1, 0x99, 0xF0, 0x91, 0xEE, 0x9A, 0x4D, 0xAB, 0x2E, 0xE5, 0x33, 0x01, 0xFE, 0x76, 0x80, 0xFE, 0x95, 0x01, 0xFE, 0x94, 0x81, 0xFE, 0xB3, 0xFE, 0x93, 0x02, 0xFE, 0xB2, 0x06, 0xFE, 0xD2, 0x0D, 0xFE, 0xF2, 0x01, 0xFE, 0xF1, 0x01, 0xFE, 0xF2, 0x80, 0xFE, 0xF1, 0x06, 0xFE, 0xF2, 0x01, 0xFE, 0xD2, 0x02, 0xFE, 0xF2, 0x09, 0xFE, 0xD2, 0x34, 0xFE, 0xF2, 0x01, 0xFE, 0xF1, 0x06, 0xFE, 0xF2, 0x04, 0xFE, 0xD2, 0x81, 0xFE, 0xF2, 0xFE, 0xD2, 0x0F, 0xFE, 0xF2, 0x01, 0xFE, 0xD2, 0x80, 0xFE, 0xF2, 0x13, 0xFE, 0xD2, 0x80, 0xFE, 0xF2, 0x09, 0xFE, 0xD2, 0x80, 0xFE, 0xF2, 0x02, 0xFE, 0xD2, 0x01, 0xFE, 0xF2, 0x06, 0xFE, 0xD2, 0x80, 0xFE, 0xF2, 0x06, 0xFE, 0xD2, 0x2E, 0xFE, 0xF2, 0x80, 0xFE, 0xF3, 0x0B, 0xFE, 0xF2, 0x19, 0xFE, 0xF3, 0x80, 0xFE, 0xF4, + 0x06, 0xFE, 0xF3, 0x2E, 0xFE, 0xF4, 0x02, 0xFE, 0xD5, 0x89, 0xFE, 0xB5, 0xFE, 0xD6, 0xFE, 0xB6, 0xFE, 0x97, 0xFE, 0x78, 0xE4, 0xF5, 0x9A, 0x4E, 0x99, 0xCF, 0xA1, 0xB1, 0xA1, 0xB2, 0x01, 0xA9, 0xF3, 0x80, 0xAA, 0x13, 0x01, 0xA9, 0xF3, 0x84, 0xAA, 0x14, 0xAA, 0x34, 0xA2, 0x35, 0x91, 0xF4, 0x81, 0xB3, 0x03, 0x79, 0xD4, 0x8D, 0x81, 0xB4, 0x89, 0xD5, 0x9A, 0x16, 0xA2, 0x16, 0xA2, 0x17, 0xA2, 0x38, 0x9A, 0x5A, 0x71, 0xDA, 0x40, 0xF9, 0x31, 0x3B, 0x21, 0x5C, 0x11, 0x7D, 0x09, 0x9E, 0x01, 0xBE, 0x01, 0x01, 0xDF, 0x01, 0x01, 0xFF, 0x80, 0x02, 0x1F, 0x02, 0x02, 0x3F, 0x01, 0x02, 0x5F, 0x93, 0x02, 0x5E, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7C, 0x02, 0xFA, 0x03, 0xF9, 0x25, 0xDD, 0x2E, 0xDD, 0x27, 0x3A, 0x0E, 0xB4, 0x16, 0xD2, 0x2F, 0x33, 0x36, 0xB4, 0x5E, 0xD7, 0x7E, 0xDB, 0x3B, 0x72, 0x3A, 0x72, 0x42, 0x12, 0x5A, 0x14, 0x61, 0xF4, 0x01, 0x61, 0xD4, 0x01, 0x59, 0xB3, 0x80, 0x51, 0x93, 0x01, 0x51, 0xB3, 0x83, 0x51, 0xB2, 0x49, 0x92, 0x41, 0x71, 0x41, 0x92, 0x02, 0x41, 0x71, 0x03, 0x39, 0x50, 0x82, 0x31, 0x50, 0x31, 0x30, 0x31, 0x50, 0x07, 0x31, 0x2F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x03, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x0F, 0x05, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x83, 0x21, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, + 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x86, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x83, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x8E, 0x29, 0x0E, 0x29, 0x0F, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x0F, 0x19, 0x10, 0x11, 0x31, 0x19, 0x94, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x11, 0x19, 0x10, 0x21, 0x30, 0x29, 0x30, 0x03, 0x21, 0x2F, 0x94, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x4F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x30, 0x19, 0x31, 0x11, 0x52, 0x11, 0x73, 0x19, 0xD5, 0x19, 0xD6, 0x21, 0xD6, 0x19, 0x94, 0x19, 0x53, 0x11, 0x12, 0x19, 0x11, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x09, 0x29, 0x0F, 0x84, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x29, 0x0F, 0x05, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x04, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x82, 0x29, 0x2E, 0x21, 0x2E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x09, 0x21, 0x30, 0x02, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x08, 0x29, 0x0E, + 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x05, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2F, 0x06, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x2E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x20, 0xEE, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x92, 0x21, 0x2F, 0x29, 0x50, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x19, 0x52, 0x19, 0x73, 0x19, 0xB4, 0x19, 0xD5, 0x19, 0xF5, 0x19, 0xD5, 0x19, 0xB5, 0x19, 0xB4, 0x11, 0x94, 0x19, 0x94, 0x19, 0x93, 0x11, 0x73, 0x19, 0x73, 0x19, 0x72, 0x01, 0x19, 0x52, 0x03, 0x11, 0x52, 0x84, 0x19, 0x72, 0x11, 0x52, 0x19, 0x53, 0x11, 0x52, 0x19, 0x72, 0x01, 0x11, 0x52, 0x05, 0x19, 0x52, 0x81, 0x11, 0x52, 0x19, 0x53, 0x02, 0x19, 0x52, 0x08, 0x19, 0x53, 0x01, 0x19, 0x52, 0x82, 0x19, 0x72, 0x19, 0x52, 0x11, 0x52, 0x01, 0x19, 0x72, 0x01, 0x19, 0x52, 0x80, 0x19, 0x72, 0x01, 0x19, 0x52, 0x82, 0x11, 0x52, 0x19, 0x72, 0x11, 0x52, 0x03, 0x19, 0x52, 0x80, 0x19, 0x73, 0x01, 0x19, 0x52, 0x80, 0x19, 0x72, 0x01, 0x19, 0x53, 0x81, 0x19, 0x52, 0x19, 0x72, 0x07, 0x19, 0x52, 0x81, 0x19, 0x72, 0x19, 0x73, 0x13, 0x19, 0x52, 0x81, 0x19, 0x72, 0x11, 0x52, 0x07, 0x19, 0x52, 0x82, 0x19, 0x73, 0x19, 0x52, 0x19, 0x72, 0x02, 0x19, 0x52, 0x83, 0x19, 0x73, 0x19, 0x72, 0x19, 0x73, + 0x19, 0x52, 0x02, 0x19, 0x73, 0x02, 0x19, 0x52, 0x03, 0x19, 0x53, 0x80, 0x19, 0x52, 0x03, 0x19, 0x53, 0x80, 0x19, 0x73, 0x01, 0x19, 0x52, 0x81, 0x19, 0x73, 0x19, 0x53, 0x01, 0x19, 0x73, 0x01, 0x19, 0x94, 0x80, 0x21, 0xF6, 0x01, 0x21, 0xD5, 0x85, 0x19, 0x73, 0x19, 0x52, 0x11, 0x11, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x03, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x2E, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0E, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x0C, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x06, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x0A, 0x29, 0x0E, 0x82, 0x29, 0x2F, 0x29, 0x0E, 0x21, 0x0E, 0x06, 0x29, 0x2E, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x0B, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x28, 0xEE, 0x85, 0x30, 0xCD, 0x38, 0xAD, 0x61, 0x70, 0x92, 0x94, 0x9A, 0x53, 0xA2, 0x53, 0x01, 0xA2, 0x32, 0x8F, 0xA2, 0x12, 0x9A, 0x11, 0x9A, 0x10, 0x9A, 0x0F, 0x92, 0x0E, 0x92, 0x0C, 0x9A, 0x8D, 0xD4, 0x93, 0xED, 0x55, 0xFE, 0x16, 0xFE, 0x36, 0xFE, 0x55, 0xFE, 0x75, 0xFE, 0x94, 0xFE, 0xB4, 0xFE, 0xB3, 0x01, 0xFE, 0xD3, 0x08, 0xFE, 0xF3, 0x04, 0xFF, 0x13, 0x21, 0xFE, 0xF3, + 0x80, 0xFF, 0x14, 0x01, 0xFE, 0xF3, 0x01, 0xFE, 0xF4, 0x01, 0xFE, 0xF3, 0x01, 0xFE, 0xF4, 0x09, 0xFE, 0xF3, 0x81, 0xFF, 0x13, 0xFE, 0xF3, 0x03, 0xFF, 0x14, 0x01, 0xFE, 0xF4, 0x80, 0xFF, 0x14, 0x06, 0xFE, 0xF4, 0x04, 0xFF, 0x14, 0x02, 0xFF, 0x13, 0x08, 0xFE, 0xF3, 0x80, 0xFF, 0x13, 0x01, 0xFE, 0xF3, 0x80, 0xFF, 0x13, 0x01, 0xFF, 0x14, 0x80, 0xFE, 0xF4, 0x08, 0xFE, 0xF3, 0x01, 0xFF, 0x13, 0x80, 0xFE, 0xF3, 0x01, 0xFF, 0x14, 0x80, 0xFE, 0xF4, 0x07, 0xFF, 0x14, 0x80, 0xFF, 0x13, 0x01, 0xFE, 0xF3, 0x80, 0xFF, 0x13, 0x08, 0xFE, 0xF3, 0x80, 0xFF, 0x14, 0x05, 0xFE, 0xF3, 0x80, 0xFF, 0x14, 0x01, 0xFE, 0xF3, 0x06, 0xFE, 0xF4, 0x80, 0xFF, 0x14, 0x05, 0xFE, 0xF3, 0x01, 0xFE, 0xF4, 0x01, 0xFE, 0xF3, 0x01, 0xFE, 0xF4, 0x03, 0xFE, 0xF3, 0x83, 0xFF, 0x14, 0xFE, 0xF3, 0xFE, 0xF4, 0xFF, 0x14, 0x05, 0xFE, 0xF4, 0x06, 0xFE, 0xF3, 0x82, 0xFF, 0x14, 0xFF, 0x13, 0xFF, 0x14, 0x04, 0xFF, 0x13, 0x02, 0xFE, 0xF3, 0x83, 0xFF, 0x13, 0xFF, 0x14, 0xFF, 0x13, 0xFF, 0x14, 0x03, 0xFF, 0x13, 0x02, 0xFE, 0xF3, 0x06, 0xFF, 0x13, 0x81, 0xFE, 0xF3, 0xFF, 0x14, 0x01, 0xFE, 0xF4, 0x03, 0xFF, 0x14, 0x01, 0xFE, 0xF4, 0x03, 0xFF, 0x14, 0x01, 0xFE, 0xF4, 0x0E, 0xFF, 0x14, 0x0C, 0xFF, 0x15, 0x80, 0xFF, 0x35, 0x2C, 0xFF, 0x15, 0x80, 0xFE, 0xF5, 0x02, 0xFF, 0x15, 0x06, 0xFF, 0x16, 0x02, 0xFE, 0xF6, 0x80, 0xFE, 0xD6, 0x01, 0xFE, 0xB6, 0x8A, 0xFE, 0x97, 0xFE, 0x98, 0xFE, 0x58, 0xF5, 0x77, 0xBB, 0x71, 0x91, 0xCD, 0x99, 0xD0, 0xA1, 0xD1, 0xA9, 0xD2, 0xA9, 0xF3, 0xA9, + 0xD3, 0x02, 0xA9, 0xF3, 0x84, 0xAA, 0x14, 0xA2, 0x14, 0xA2, 0x35, 0x9A, 0x35, 0x81, 0xD4, 0x04, 0x79, 0xD4, 0x8C, 0x81, 0xB4, 0x91, 0xF6, 0x9A, 0x16, 0xA2, 0x16, 0xA2, 0x17, 0xA2, 0x58, 0x9A, 0x9B, 0x61, 0x7A, 0x39, 0x1A, 0x31, 0x5C, 0x21, 0x7D, 0x11, 0x7D, 0x09, 0x9E, 0x01, 0x01, 0xDF, 0x01, 0x01, 0xFF, 0x81, 0x02, 0x1F, 0x02, 0x3F, 0x02, 0x02, 0x5F, 0x02, 0x02, 0x7F, 0x96, 0x02, 0x9E, 0x02, 0x9D, 0x02, 0x9C, 0x02, 0xDA, 0x03, 0x99, 0x15, 0x5B, 0x36, 0xFE, 0x2F, 0x5B, 0x0E, 0xB4, 0x1E, 0xD2, 0x2E, 0xF3, 0x3E, 0xB4, 0x6E, 0xD8, 0x6D, 0xD8, 0x43, 0x32, 0x4A, 0xB3, 0x52, 0x33, 0x5A, 0x14, 0x59, 0xD3, 0x61, 0xB3, 0x61, 0xD4, 0x59, 0xB3, 0x59, 0x93, 0x02, 0x51, 0x92, 0x80, 0x51, 0xB2, 0x01, 0x49, 0x92, 0x03, 0x41, 0x71, 0x01, 0x39, 0x50, 0x84, 0x39, 0x71, 0x39, 0x50, 0x31, 0x50, 0x39, 0x70, 0x31, 0x50, 0x05, 0x31, 0x2F, 0x83, 0x31, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x2E, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x03, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x07, 0x29, 0x0E, 0x85, 0x21, 0x0E, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x0C, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x8A, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x30, 0x19, 0x32, 0x19, 0x94, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x11, 0x19, 0x10, + 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x4F, 0x21, 0x2F, 0x02, 0x21, 0x0E, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x8C, 0x21, 0x30, 0x19, 0x30, 0x11, 0x11, 0x11, 0x52, 0x19, 0x94, 0x21, 0xD5, 0x21, 0xD6, 0x21, 0xD5, 0x21, 0xB5, 0x11, 0x33, 0x19, 0x32, 0x19, 0x11, 0x19, 0x10, 0x01, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x21, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x04, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x05, 0x29, 0x2E, 0x01, 0x21, 0x0E, 0x81, 0x21, 0x2E, 0x29, 0x2E, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x03, 0x21, 0x30, 0x84, 0x19, 0x10, 0x19, 0x31, 0x21, 0x31, 0x19, 0x31, 0x19, 0x10, 0x01, 0x19, 0x30, 0x81, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x05, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2F, 0x07, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x09, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x85, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, + 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x8A, 0x29, 0x2F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x31, 0x19, 0x31, 0x19, 0x52, 0x11, 0x52, 0x19, 0x94, 0x19, 0xD4, 0x19, 0xF5, 0x04, 0x21, 0xF5, 0x82, 0x29, 0xF5, 0x2A, 0x16, 0x2A, 0x15, 0x02, 0x29, 0xF5, 0x89, 0x21, 0xF5, 0x29, 0xF5, 0x21, 0xD5, 0x21, 0xF5, 0x21, 0xD5, 0x29, 0xF5, 0x21, 0xD5, 0x21, 0xF5, 0x21, 0xD5, 0x29, 0xF5, 0x02, 0x21, 0xD5, 0x80, 0x29, 0xF5, 0x01, 0x29, 0xD5, 0x04, 0x21, 0xD5, 0x80, 0x21, 0xD4, 0x02, 0x21, 0xD5, 0x80, 0x29, 0xD5, 0x03, 0x21, 0xD5, 0x84, 0x21, 0xB4, 0x21, 0xD5, 0x21, 0xD4, 0x21, 0xD5, 0x21, 0xB4, 0x01, 0x21, 0xD4, 0x01, 0x21, 0xB4, 0x81, 0x21, 0xD4, 0x21, 0xB4, 0x02, 0x21, 0xD4, 0x02, 0x21, 0xB4, 0x82, 0x21, 0xD4, 0x21, 0xB4, 0x21, 0xD4, 0x08, 0x21, 0xB4, 0x80, 0x21, 0xD4, 0x06, 0x21, 0xB4, 0x80, 0x21, 0xD4, 0x02, 0x21, 0xB4, 0x01, 0x21, 0xD4, 0x03, 0x21, 0xB4, 0x89, 0x21, 0xD4, 0x21, 0xB4, 0x21, 0xD4, 0x21, 0xB4, 0x21, 0xD4, 0x21, 0xB4, 0x21, 0xD4, 0x21, 0xB4, 0x21, 0xD4, 0x21, 0xB4, 0x02, 0x21, 0xD4, 0x81, 0x21, 0xB4, 0x21, 0xD4, 0x02, 0x21, 0xB4, 0x82, 0x21, 0xD4, 0x21, 0xB4, 0x21, 0xD4, 0x02, 0x21, 0xB4, 0x82, 0x21, 0xD4, 0x21, 0xB4, 0x21, 0xD4, 0x02, 0x21, 0xB4, 0x80, 0x21, 0xD5, 0x02, 0x21, 0xB4, 0x87, 0x21, 0xD4, 0x21, 0xB4, 0x21, 0xD4, 0x21, 0xB4, + 0x21, 0xD4, 0x21, 0xB4, 0x21, 0xD5, 0x21, 0xB4, 0x03, 0x21, 0xD5, 0x80, 0x2A, 0x15, 0x02, 0x29, 0xF5, 0x81, 0x29, 0xF6, 0x29, 0xF5, 0x01, 0x2A, 0x16, 0x86, 0x29, 0xF5, 0x21, 0xD5, 0x19, 0x73, 0x19, 0x52, 0x19, 0x31, 0x19, 0x10, 0x21, 0x10, 0x03, 0x21, 0x0F, 0x80, 0x21, 0x2E, 0x02, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x82, 0x21, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x08, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x08, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x13, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x13, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x0B, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x28, 0xEE, 0x85, 0x30, 0xCD, 0x38, 0xAD, 0x61, 0x6F, 0x92, 0x94, 0x9A, 0x73, 0x9A, 0x53, 0x02, 0xA2, 0x32, 0x02, 0x9A, 0x11, 0x8B, 0x9A, 0x10, 0x92, 0x0E, 0x92, 0x0D, 0x92, 0x4C, 0x9A, 0x8C, 0xA2, 0xED, 0xC3, 0xF0, 0xD4, 0xB2, 0xE5, 0x53, 0xF5, 0xF5, 0xFE, 0x56, 0xFE, 0xB7, 0x02, 0xFE, 0xF8, 0x80, 0xFF, 0x18, 0x03, 0xFE, 0xF8, 0x81, 0xFF, 0x18, 0xFE, 0xF8, 0x01, 0xFF, 0x18, 0x01, 0xFE, 0xF8, 0x80, 0xFF, 0x18, 0x01, 0xFE, 0xF8, 0x80, 0xFF, 0x18, 0x01, 0xFE, 0xF8, 0x01, 0xFF, 0x18, 0x03, 0xFE, 0xF8, 0x0D, 0xFF, 0x18, 0x05, 0xFE, 0xF8, 0x0C, 0xFF, 0x18, 0x82, 0xFE, 0xF8, 0xFF, + 0x18, 0xFE, 0xF8, 0x13, 0xFF, 0x18, 0x03, 0xFE, 0xF8, 0x07, 0xFF, 0x18, 0x07, 0xFE, 0xF8, 0x01, 0xFF, 0x18, 0x80, 0xFE, 0xF8, 0x0B, 0xFF, 0x18, 0x80, 0xFE, 0xF8, 0x0A, 0xFF, 0x18, 0x80, 0xFE, 0xF8, 0x02, 0xFF, 0x18, 0x05, 0xFE, 0xF8, 0x80, 0xFF, 0x18, 0x02, 0xFE, 0xF8, 0x03, 0xFF, 0x18, 0x0B, 0xFE, 0xF8, 0x80, 0xFF, 0x18, 0x02, 0xFE, 0xF8, 0x81, 0xFF, 0x18, 0xFE, 0xF8, 0x01, 0xFF, 0x18, 0x09, 0xFE, 0xF8, 0x80, 0xFF, 0x18, 0x0F, 0xFE, 0xF8, 0x01, 0xFF, 0x18, 0x80, 0xFE, 0xF8, 0x05, 0xFF, 0x18, 0x80, 0xFE, 0xF8, 0x02, 0xFF, 0x18, 0x80, 0xFE, 0xF8, 0x01, 0xFF, 0x18, 0x02, 0xFE, 0xF8, 0x01, 0xFF, 0x18, 0x80, 0xFE, 0xF8, 0x04, 0xFF, 0x18, 0x80, 0xFE, 0xF8, 0x01, 0xFF, 0x18, 0x02, 0xFE, 0xF8, 0x04, 0xFF, 0x18, 0x02, 0xFF, 0x19, 0x02, 0xFF, 0x18, 0x01, 0xFE, 0xF8, 0x01, 0xFF, 0x18, 0x01, 0xFF, 0x19, 0x01, 0xFF, 0x18, 0x02, 0xFF, 0x19, 0x80, 0xFE, 0xF9, 0x1E, 0xFF, 0x19, 0x80, 0xFE, 0xF9, 0x08, 0xFF, 0x19, 0x85, 0xFE, 0xF9, 0xFF, 0x1A, 0xFF, 0x19, 0xFF, 0x1A, 0xFF, 0x19, 0xFF, 0x1A, 0x03, 0xFF, 0x19, 0x80, 0xFE, 0xF9, 0x04, 0xFF, 0x19, 0x04, 0xFE, 0xF9, 0x80, 0xFF, 0x19, 0x02, 0xFE, 0xF9, 0x01, 0xFF, 0x1A, 0x80, 0xFE, 0xFA, 0x01, 0xFF, 0x1A, 0x01, 0xFE, 0xFA, 0x01, 0xFF, 0x1A, 0x8C, 0xFE, 0xD9, 0xFE, 0xB9, 0xFE, 0x78, 0xFE, 0x58, 0xFD, 0xD6, 0xED, 0x35, 0xD4, 0x73, 0xBB, 0x70, 0xA2, 0xAE, 0x99, 0xED, 0x99, 0xCE, 0xA1, 0xD0, 0xA1, 0xB1, 0x01, 0xA9, 0xD2, 0x02, 0xA9, 0xF3, 0x86, 0xA1, 0xF3, 0xA1, 0xF4, 0xA2, 0x14, 0xA2, 0x35, + 0x91, 0xF4, 0x81, 0xB3, 0x79, 0xB4, 0x04, 0x79, 0xD4, 0x8D, 0x81, 0xB4, 0x91, 0xF6, 0x9A, 0x16, 0xA2, 0x17, 0xA2, 0x37, 0xA2, 0x59, 0x9A, 0x9B, 0x51, 0x59, 0x31, 0x1A, 0x29, 0x5C, 0x19, 0x7D, 0x09, 0x7D, 0x01, 0xBE, 0x01, 0xDF, 0x01, 0x01, 0xFF, 0x01, 0x02, 0x1F, 0x80, 0x02, 0x3F, 0x03, 0x02, 0x7F, 0x01, 0x02, 0x9F, 0x96, 0x02, 0xBE, 0x02, 0xBD, 0x02, 0x9C, 0x02, 0xDB, 0x03, 0x59, 0x14, 0xFB, 0x3F, 0x1F, 0x2F, 0x5B, 0x16, 0xB4, 0x16, 0x92, 0x36, 0xF3, 0x46, 0x73, 0x6E, 0x97, 0x65, 0x15, 0x4B, 0x32, 0x52, 0x92, 0x62, 0x74, 0x59, 0xF3, 0x61, 0xD3, 0x61, 0xB3, 0x61, 0xD4, 0x59, 0xB3, 0x51, 0x93, 0x01, 0x51, 0x92, 0x80, 0x51, 0xB2, 0x02, 0x49, 0x92, 0x03, 0x41, 0x71, 0x82, 0x39, 0x71, 0x39, 0x50, 0x39, 0x70, 0x01, 0x39, 0x50, 0x82, 0x31, 0x50, 0x31, 0x2F, 0x31, 0x4F, 0x04, 0x31, 0x2F, 0x85, 0x31, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x2E, 0x29, 0x2F, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x06, 0x29, 0x0E, 0x82, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x06, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x86, 0x29, 0x2E, 0x21, 0x0E, 0x29, 0x2E, 0x21, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x10, 0x29, 0x0E, 0x02, 0x29, 0x2F, 0x8A, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x19, 0x94, 0x19, 0xB6, 0x19, 0xD6, 0x21, 0xB5, 0x11, 0x11, 0x19, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x4F, 0x01, 0x21, + 0x0E, 0x01, 0x21, 0x2E, 0x01, 0x29, 0x2F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x19, 0x10, 0x83, 0x19, 0x31, 0x11, 0x52, 0x19, 0x94, 0x21, 0xD5, 0x01, 0x21, 0xD6, 0x83, 0x19, 0x94, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x02, 0x21, 0x30, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x03, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x82, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x82, 0x29, 0x2F, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x83, 0x29, 0x2E, 0x21, 0x2E, 0x29, 0x2E, 0x21, 0x2E, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x19, 0x10, 0x01, 0x19, 0x31, 0x86, 0x19, 0x32, 0x11, 0x32, 0x11, 0x52, 0x11, 0x32, 0x19, 0x52, 0x11, 0x31, 0x11, 0x11, 0x01, 0x19, 0x10, 0x01, 0x21, 0x30, 0x80, 0x29, 0x30, 0x02, 0x29, 0x2F, 0x82, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x84, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x07, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x82, 0x29, + 0x2F, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2F, 0x03, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x19, 0x31, 0x85, 0x11, 0x52, 0x19, 0x73, 0x21, 0xB4, 0x21, 0xD4, 0x2A, 0x15, 0x21, 0xF5, 0x0A, 0x29, 0xF5, 0x80, 0x21, 0xD5, 0x01, 0x29, 0xF5, 0x01, 0x21, 0xF5, 0x07, 0x29, 0xF5, 0x80, 0x2A, 0x16, 0x02, 0x29, 0xF5, 0x80, 0x29, 0xD5, 0x01, 0x29, 0xF5, 0x80, 0x29, 0xD5, 0x02, 0x29, 0xF5, 0x04, 0x29, 0xD5, 0x01, 0x21, 0xD5, 0x86, 0x29, 0xF5, 0x21, 0xD5, 0x29, 0xD5, 0x21, 0xD4, 0x29, 0xD5, 0x21, 0xD5, 0x29, 0xF5, 0x01, 0x21, 0xD4, 0x81, 0x21, 0xF5, 0x21, 0xD5, 0x01, 0x29, 0xF5, 0x83, 0x29, 0xD4, 0x29, 0xF5, 0x29, 0xD5, 0x29, 0xF5, 0x01, 0x29, 0xD5, 0x82, 0x29, 0xD4, 0x29, 0xF4, 0x21, 0xD4, 0x01, 0x29, 0xD4, 0x85, 0x29, 0xD5, 0x29, 0xF5, 0x29, 0xD5, 0x29, 0xD4, 0x29, 0xF5, 0x29, 0xD4, 0x0A, 0x29, 0xF5, 0x80, 0x21, 0xF5, 0x06, 0x29, 0xF5, 0x80, 0x21, 0xF5, 0x04, 0x29, 0xF5, 0x80, 0x21, 0xF5, 0x18, 0x29, 0xF5, 0x01, 0x2A, 0x16, 0x03, 0x29, 0xF5, 0x01, 0x32, 0x16, 0x02, 0x29, 0xF5, 0x86, 0x29, 0xD5, 0x19, 0x94, 0x29, 0xF5, 0x2A, 0x15, 0x29, 0xF5, 0x19, 0x52, 0x19, 0x11, 0x01, 0x19, 0x10, 0x80, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x0E, 0x20, 0xEE, 0x03, 0x21, 0x0E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, + 0x29, 0x2F, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x85, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x06, 0x29, 0x0E, 0x81, 0x29, 0x2F, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x09, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x20, 0xEE, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x82, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x0F, 0x06, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x06, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x0E, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x88, 0x28, 0xED, 0x30, 0xCD, 0x30, 0xAC, 0x51, 0x2E, 0x92, 0x94, 0x9A, 0x73, 0x9A, 0x53, 0xA2, 0x52, 0xA2, 0x32, 0x01, 0x9A, 0x32, 0x01, 0x9A, 0x11, 0x01, 0x9A, 0x10, 0x86, 0x92, 0x0F, 0x91, 0xEE, 0x91, 0xED, 0x89, 0xCC, 0x81, 0x8B, 0x79, 0x8B, 0x79, 0x6A, 0x01, 0x71, 0x49, 0x81, 0x69, 0x29, 0x69, 0x49, 0x01, 0x69, 0x29, 0x83, 0x69, 0x28, 0x69, 0x49, 0x69, 0x28, 0x69, 0x49, 0x01, 0x69, 0x28, 0x87, 0x69, 0x29, 0x69, 0x49, 0x69, 0x29, 0x69, 0x49, 0x69, 0x29, 0x69, 0x49, 0x69, 0x28, 0x69, 0x49, 0x02, 0x69, 0x28, 0x84, 0x69, 0x48, 0x69, 0x28, 0x69, 0x49, 0x69, 0x29, 0x69, 0x49, 0x05, 0x69, 0x29, 0x80, 0x69, 0x28, 0x04, 0x69, 0x29, 0x01, 0x69, 0x28, 0x80, 0x69, 0x29, 0x04, 0x69, 0x28, 0x01, 0x69, 0x29, 0x80, 0x69, 0x28, + 0x03, 0x69, 0x29, 0x04, 0x69, 0x28, 0x05, 0x69, 0x29, 0x81, 0x69, 0x28, 0x69, 0x49, 0x01, 0x69, 0x29, 0x82, 0x69, 0x28, 0x69, 0x29, 0x69, 0x28, 0x09, 0x69, 0x29, 0x81, 0x69, 0x28, 0x69, 0x29, 0x01, 0x69, 0x28, 0x81, 0x69, 0x29, 0x69, 0x28, 0x02, 0x69, 0x29, 0x02, 0x69, 0x28, 0x02, 0x69, 0x29, 0x02, 0x69, 0x28, 0x86, 0x69, 0x29, 0x69, 0x28, 0x69, 0x29, 0x69, 0x28, 0x69, 0x49, 0x69, 0x29, 0x69, 0x49, 0x01, 0x69, 0x29, 0x01, 0x69, 0x28, 0x82, 0x69, 0x29, 0x69, 0x28, 0x69, 0x48, 0x05, 0x69, 0x28, 0x04, 0x69, 0x29, 0x80, 0x69, 0x28, 0x03, 0x69, 0x29, 0x84, 0x69, 0x49, 0x69, 0x28, 0x69, 0x49, 0x69, 0x28, 0x69, 0x48, 0x03, 0x69, 0x49, 0x03, 0x69, 0x29, 0x80, 0x69, 0x28, 0x01, 0x69, 0x49, 0x02, 0x69, 0x29, 0x01, 0x69, 0x28, 0x89, 0x69, 0x29, 0x69, 0x49, 0x69, 0x28, 0x69, 0x49, 0x69, 0x29, 0x69, 0x49, 0x69, 0x29, 0x69, 0x49, 0x69, 0x29, 0x69, 0x49, 0x03, 0x69, 0x29, 0x01, 0x69, 0x28, 0x0C, 0x69, 0x29, 0x01, 0x69, 0x49, 0x06, 0x69, 0x29, 0x80, 0x69, 0x28, 0x02, 0x69, 0x29, 0x80, 0x69, 0x28, 0x02, 0x69, 0x29, 0x81, 0x61, 0x28, 0x69, 0x49, 0x01, 0x69, 0x29, 0x80, 0x69, 0x28, 0x03, 0x69, 0x29, 0x01, 0x69, 0x28, 0x81, 0x69, 0x29, 0x69, 0x28, 0x02, 0x69, 0x29, 0x02, 0x69, 0x28, 0x81, 0x69, 0x29, 0x69, 0x28, 0x01, 0x69, 0x29, 0x82, 0x69, 0x49, 0x69, 0x28, 0x69, 0x49, 0x04, 0x69, 0x29, 0x80, 0x69, 0x49, 0x0A, 0x69, 0x29, 0x80, 0x69, 0x09, 0x0C, 0x69, 0x29, 0x80, 0x69, 0x49, 0x05, 0x69, 0x29, 0x01, 0x69, 0x09, 0x80, 0x69, 0x29, 0x06, + 0x71, 0x29, 0x81, 0x71, 0x09, 0x71, 0x29, 0x09, 0x71, 0x09, 0x82, 0x70, 0xE9, 0x79, 0x09, 0x71, 0x09, 0x01, 0x70, 0xE9, 0x80, 0x71, 0x09, 0x01, 0x79, 0x09, 0x02, 0x71, 0x09, 0x01, 0x79, 0x09, 0x01, 0x70, 0xE9, 0x84, 0x79, 0x09, 0x71, 0x09, 0x79, 0x09, 0x70, 0xE9, 0x79, 0x09, 0x03, 0x71, 0x09, 0x80, 0x70, 0xE9, 0x0A, 0x71, 0x09, 0x01, 0x70, 0xE9, 0x01, 0x79, 0x0A, 0x80, 0x78, 0xE9, 0x03, 0x79, 0x0A, 0x88, 0x81, 0x2A, 0x81, 0x2B, 0x89, 0x4B, 0x89, 0x4C, 0x91, 0x6D, 0x91, 0x8E, 0x99, 0xAF, 0xA1, 0xB0, 0xA1, 0xD1, 0x01, 0xA9, 0xD2, 0x01, 0xA9, 0xD3, 0x80, 0xA9, 0xF3, 0x02, 0xAA, 0x14, 0x01, 0xA2, 0x14, 0x81, 0x92, 0x14, 0x81, 0xB3, 0x01, 0x79, 0xB4, 0x01, 0x79, 0xD4, 0x90, 0x79, 0xF4, 0x81, 0xF5, 0x81, 0xB4, 0x89, 0xD5, 0x91, 0xD5, 0x99, 0xF6, 0xA2, 0x17, 0xA2, 0x38, 0xA2, 0x59, 0x92, 0x9B, 0x41, 0x19, 0x29, 0x3B, 0x21, 0x7D, 0x19, 0x7D, 0x09, 0x9E, 0x01, 0xBE, 0x01, 0xFF, 0x02, 0x02, 0x1F, 0x81, 0x02, 0x3F, 0x02, 0x5F, 0x04, 0x02, 0x9F, 0x80, 0x02, 0xBF, 0x01, 0x02, 0xBE, 0x8F, 0x02, 0xBD, 0x02, 0xDB, 0x03, 0x3A, 0x0C, 0x7A, 0x47, 0x3F, 0x37, 0x3B, 0x16, 0x94, 0x26, 0xB2, 0x36, 0xD3, 0x4E, 0x94, 0x76, 0x57, 0x5C, 0x73, 0x5B, 0x53, 0x62, 0xB3, 0x6A, 0x94, 0x62, 0x14, 0x02, 0x61, 0xB3, 0x85, 0x59, 0xB3, 0x51, 0x92, 0x51, 0x93, 0x51, 0x92, 0x51, 0xB3, 0x51, 0xB2, 0x01, 0x49, 0x92, 0x80, 0x41, 0x91, 0x03, 0x41, 0x71, 0x80, 0x39, 0x70, 0x01, 0x39, 0x50, 0x80, 0x39, 0x70, 0x01, 0x31, 0x50, 0x82, 0x31, 0x4F, 0x31, 0x2F, 0x31, + 0x4F, 0x01, 0x31, 0x2F, 0x86, 0x31, 0x4F, 0x31, 0x0F, 0x29, 0x0F, 0x31, 0x2F, 0x29, 0x0E, 0x31, 0x2F, 0x29, 0x2F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x05, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x0C, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x2F, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x2F, 0x8A, 0x21, 0x2F, 0x21, 0x0F, 0x19, 0x10, 0x11, 0x11, 0x19, 0x74, 0x21, 0xD6, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x32, 0x19, 0x30, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x21, 0x2E, 0x03, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x01, 0x19, 0x10, 0x82, 0x19, 0x31, 0x11, 0x32, 0x19, 0x74, 0x01, 0x21, 0xD6, 0x84, 0x21, 0xF6, 0x19, 0x74, 0x11, 0x32, 0x11, 0x11, 0x19, 0x11, 0x01, 0x21, 0x30, 0x83, 0x29, 0x30, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x09, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x21, 0x0F, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x2F, 0x02, 0x21, 0x2F, 0x81, 0x29, 0x2F, 0x29, 0x50, 0x03, + 0x21, 0x30, 0x8A, 0x19, 0x30, 0x19, 0x31, 0x19, 0x32, 0x11, 0x52, 0x19, 0x94, 0x19, 0xD5, 0x19, 0xF5, 0x1A, 0x16, 0x22, 0x36, 0x21, 0xF5, 0x19, 0xB4, 0x01, 0x19, 0x52, 0x01, 0x19, 0x10, 0x84, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x0A, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x2F, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x06, 0x29, 0x0E, 0x83, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x2F, 0x07, 0x29, 0x2E, 0x81, 0x29, 0x2F, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x21, 0x0E, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x03, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x19, 0x31, 0x01, 0x19, 0x52, 0x01, 0x19, 0x72, 0x80, 0x19, 0x73, 0x02, 0x19, 0x52, 0x80, 0x19, 0x73, 0x01, 0x21, 0x73, 0x01, 0x19, 0x73, 0x01, 0x19, 0x93, 0x02, 0x19, 0x73, 0x80, 0x19, 0x93, 0x08, 0x19, 0x73, 0x81, 0x21, 0x73, 0x19, 0x73, 0x03, 0x21, 0x73, 0x81, 0x21, 0x93, 0x21, 0x73, 0x01, 0x19, 0x73, 0x82, 0x21, 0x73, 0x19, 0x73, 0x21, 0x73, 0x03, 0x19, 0x73, 0x80, 0x21, 0x73, 0x01, 0x19, 0x73, 0x01, 0x21, 0x73, 0x08, 0x19, 0x73, 0x84, 0x19, 0x72, 0x21, 0x73, 0x19, 0x72, 0x21, 0x73, 0x19, 0x73, 0x01, 0x21, 0x73, 0x01, + 0x19, 0x72, 0x80, 0x19, 0x73, 0x01, 0x21, 0x73, 0x81, 0x19, 0x72, 0x21, 0x73, 0x02, 0x19, 0x72, 0x80, 0x19, 0x73, 0x01, 0x19, 0x72, 0x02, 0x19, 0x73, 0x81, 0x21, 0x93, 0x19, 0x73, 0x05, 0x19, 0x93, 0x01, 0x19, 0x73, 0x04, 0x19, 0x93, 0x82, 0x21, 0x93, 0x19, 0x93, 0x19, 0x73, 0x03, 0x19, 0x93, 0x83, 0x21, 0x93, 0x19, 0x73, 0x21, 0x93, 0x21, 0x73, 0x02, 0x21, 0x93, 0x80, 0x19, 0x73, 0x04, 0x21, 0x93, 0x80, 0x19, 0x73, 0x01, 0x19, 0x93, 0x83, 0x21, 0x93, 0x21, 0x73, 0x21, 0x93, 0x19, 0x73, 0x01, 0x21, 0x73, 0x80, 0x19, 0x93, 0x04, 0x19, 0x73, 0x01, 0x19, 0x53, 0x01, 0x19, 0x73, 0x80, 0x19, 0x53, 0x02, 0x19, 0x52, 0x01, 0x19, 0x32, 0x80, 0x11, 0x10, 0x01, 0x19, 0x10, 0x80, 0x21, 0x10, 0x02, 0x21, 0x0F, 0x05, 0x21, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x05, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x0C, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x07, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x0C, 0x29, 0x0E, 0x81, 0x29, 0x2F, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x09, 0x29, 0x0E, 0x10, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x8C, 0x28, 0xED, 0x30, 0xED, 0x30, 0xAC, 0x48, 0xED, 0x8A, 0x53, 0x9A, 0x94, 0x9A, + 0x73, 0x9A, 0x53, 0x9A, 0x52, 0xA2, 0x52, 0xA2, 0x32, 0x9A, 0x32, 0x9A, 0x31, 0x02, 0x9A, 0x11, 0x80, 0x9A, 0x10, 0x02, 0x91, 0xF0, 0x02, 0x91, 0xCF, 0x07, 0x89, 0xAF, 0x83, 0x89, 0xAE, 0x89, 0x8E, 0x81, 0x8E, 0x81, 0x8F, 0x0E, 0x81, 0x8E, 0x81, 0x81, 0xAF, 0x81, 0xAE, 0x29, 0x81, 0x8E, 0x04, 0x89, 0x8E, 0x02, 0x89, 0xAE, 0x02, 0x89, 0x8E, 0x81, 0x89, 0x8F, 0x89, 0x8E, 0x01, 0x89, 0xAE, 0x81, 0x89, 0xAF, 0x89, 0x8F, 0x04, 0x89, 0x8E, 0x04, 0x81, 0x8E, 0x80, 0x89, 0x8E, 0x05, 0x81, 0x8E, 0x01, 0x89, 0xAE, 0x01, 0x89, 0x8E, 0x80, 0x89, 0xAE, 0x09, 0x81, 0x8E, 0x03, 0x81, 0x8F, 0x04, 0x81, 0x8E, 0x03, 0x89, 0x8E, 0x01, 0x81, 0x8E, 0x03, 0x89, 0xAE, 0x01, 0x89, 0x8E, 0x80, 0x89, 0xAE, 0x01, 0x89, 0x8E, 0x3E, 0x81, 0x8E, 0x01, 0x89, 0x8E, 0x81, 0x81, 0x8E, 0x89, 0x8E, 0x01, 0x81, 0x8E, 0x01, 0x89, 0x8E, 0x81, 0x81, 0x8E, 0x89, 0x8E, 0x04, 0x81, 0x8E, 0x81, 0x81, 0x8F, 0x81, 0x8E, 0x01, 0x89, 0x8E, 0x02, 0x89, 0x8F, 0x80, 0x89, 0xAF, 0x02, 0x89, 0x8F, 0x01, 0x81, 0x8F, 0x81, 0x89, 0x8F, 0x89, 0x8E, 0x0A, 0x89, 0x8F, 0x02, 0x81, 0x8F, 0x03, 0x81, 0x6E, 0x80, 0x81, 0x6F, 0x01, 0x89, 0x6F, 0x01, 0x89, 0x6E, 0x05, 0x89, 0x6F, 0x81, 0x91, 0x6F, 0x91, 0x8F, 0x03, 0x91, 0x6F, 0x01, 0x99, 0x8F, 0x80, 0x99, 0x6F, 0x01, 0x99, 0x8F, 0x01, 0x99, 0x6F, 0x82, 0x99, 0x8F, 0x99, 0x6F, 0x99, 0x90, 0x04, 0x99, 0x6F, 0x80, 0xA1, 0x8F, 0x06, 0x99, 0x6F, 0x80, 0xA1, 0x6F, 0x04, 0x99, 0x6F, 0x01, 0x99, 0x4F, 0x80, 0x99, 0x6F, 0x03, 0x99, 0x4F, + 0x81, 0x91, 0x4F, 0x99, 0x6F, 0x01, 0x99, 0x4F, 0x88, 0x91, 0x4F, 0x99, 0x6F, 0x91, 0x4F, 0x99, 0x6F, 0x99, 0x4F, 0x99, 0x6F, 0x99, 0x4F, 0x99, 0x70, 0x99, 0x4F, 0x01, 0x99, 0x6F, 0x01, 0x99, 0x70, 0x83, 0xA1, 0x70, 0x99, 0x70, 0xA1, 0x70, 0xA1, 0x90, 0x02, 0xA1, 0x91, 0x81, 0xA1, 0xB1, 0xA9, 0xB1, 0x01, 0xA9, 0xD2, 0x81, 0xB1, 0xF3, 0xA9, 0xF3, 0x01, 0xB1, 0xF3, 0x80, 0xAA, 0x13, 0x01, 0xAA, 0x14, 0x84, 0xA2, 0x14, 0xA2, 0x35, 0x89, 0xB3, 0x81, 0xB3, 0x79, 0xB3, 0x01, 0x79, 0xB4, 0x01, 0x79, 0xD4, 0x90, 0x81, 0xF4, 0x81, 0xD4, 0x89, 0xD4, 0x91, 0xF5, 0x91, 0xB4, 0x99, 0xF6, 0xA2, 0x37, 0xA2, 0x58, 0x9A, 0x79, 0x82, 0x5B, 0x41, 0x19, 0x29, 0x3B, 0x21, 0x7D, 0x11, 0x7D, 0x09, 0x9E, 0x01, 0xDE, 0x02, 0x1F, 0x02, 0x02, 0x3F, 0x81, 0x02, 0x5F, 0x02, 0x7F, 0x03, 0x02, 0x9F, 0x01, 0x02, 0xBF, 0x93, 0x02, 0xDF, 0x02, 0xDE, 0x02, 0xDD, 0x02, 0xDC, 0x02, 0xFA, 0x03, 0xD9, 0x4F, 0x3F, 0x37, 0x3C, 0x16, 0x74, 0x26, 0xB3, 0x3E, 0xD3, 0x56, 0x94, 0x76, 0x16, 0x53, 0xD2, 0x63, 0x33, 0x6A, 0xB3, 0x72, 0x94, 0x69, 0xF3, 0x61, 0xD3, 0x61, 0xB3, 0x02, 0x59, 0xB3, 0x82, 0x51, 0xB3, 0x51, 0xB2, 0x49, 0xB2, 0x01, 0x49, 0x92, 0x80, 0x49, 0x91, 0x01, 0x41, 0x71, 0x80, 0x41, 0x91, 0x01, 0x41, 0x71, 0x81, 0x39, 0x50, 0x39, 0x70, 0x01, 0x39, 0x50, 0x01, 0x31, 0x50, 0x01, 0x31, 0x4F, 0x02, 0x31, 0x2F, 0x83, 0x31, 0x4F, 0x31, 0x0F, 0x31, 0x2F, 0x29, 0x0E, 0x01, 0x31, 0x2F, 0x13, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, + 0x02, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x83, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x2F, 0x21, 0x0E, 0x08, 0x29, 0x0E, 0x90, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0F, 0x21, 0x0F, 0x21, 0x2F, 0x19, 0x10, 0x11, 0x11, 0x19, 0x74, 0x19, 0xB6, 0x19, 0xD6, 0x19, 0xD5, 0x11, 0x32, 0x19, 0x31, 0x21, 0x30, 0x02, 0x21, 0x2F, 0x83, 0x29, 0x2E, 0x21, 0x2E, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x21, 0x2E, 0x03, 0x21, 0x2F, 0x84, 0x19, 0x10, 0x19, 0x11, 0x11, 0x11, 0x19, 0x53, 0x19, 0x74, 0x02, 0x21, 0xD6, 0x84, 0x19, 0x74, 0x11, 0x32, 0x11, 0x11, 0x11, 0x10, 0x19, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x01, 0x29, 0x0F, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x06, 0x29, 0x2F, 0x81, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x85, 0x21, 0x4F, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x30, 0x01, 0x19, 0x31, 0x84, 0x19, 0x52, 0x19, 0x53, 0x19, 0xB4, 0x19, 0xF6, 0x1A, 0x16, 0x01, 0x1A, 0x17, 0x89, 0x1A, 0x37, 0x22, 0x16, 0x21, 0xF6, 0x21, 0xD5, 0x19, 0x94, 0x11, 0x32, 0x10, 0xF1, + 0x19, 0x10, 0x21, 0x10, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0F, 0x05, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x05, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x13, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x84, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x81, 0x19, 0x30, 0x19, 0x10, 0x01, 0x19, 0x31, 0x80, 0x19, 0x10, 0x02, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x07, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x81, 0x19, 0x11, 0x19, 0x31, 0x01, 0x19, 0x11, 0x03, 0x19, 0x31, 0x03, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x11, 0x0C, 0x19, 0x31, 0x80, 0x19, 0x11, 0x05, 0x19, 0x31, 0x80, 0x19, 0x11, 0x0B, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x10, 0x19, 0x31, 0x01, 0x19, 0x11, 0x14, 0x19, 0x31, 0x80, 0x19, 0x32, 0x01, 0x19, 0x31, 0x82, 0x19, 0x32, 0x19, 0x31, 0x19, 0x11, 0x0A, 0x19, 0x31, 0x80, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x11, 0x04, 0x19, 0x31, 0x03, 0x19, + 0x11, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x02, 0x19, 0x31, 0x8B, 0x10, 0xF0, 0x18, 0xF0, 0x18, 0xEF, 0x19, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x0E, 0x21, 0x0F, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x02, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x87, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x29, 0x2F, 0x18, 0x29, 0x0E, 0x88, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x0F, 0x08, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x17, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x89, 0x29, 0x0D, 0x28, 0xED, 0x28, 0xCD, 0x30, 0xCD, 0x30, 0x4B, 0x61, 0x6F, 0x8A, 0x53, 0x9A, 0x94, 0x9A, 0x73, 0x9A, 0x52, 0x04, 0xA2, 0x52, 0x80, 0x9A, 0x32, 0x02, 0x9A, 0x31, 0x0B, 0x9A, 0x11, 0x81, 0x92, 0x10, 0x9A, 0x11, 0x08, 0x92, 0x11, 0x81, 0x91, 0xF0, 0x92, 0x11, 0x04, 0x91, 0xF1, 0x84, 0x92, 0x11, 0x91, 0xF1, 0x92, 0x11, 0x91, 0xF1, 0x92, 0x11, 0x10, 0x91, 0xF1, 0x01, 0x92, 0x11, 0x81, 0x91, 0xF1, 0x91, 0xF0, 0x08, 0x91, 0xF1, 0x82, 0x91, 0xD0, 0x91, 0xF0, 0x91, 0xD0, 0x02, 0x91, 0xF0, 0x80, 0x91, 0xD0, 0x03, 0x91, 0xF0, 0x86, 0x92, 0x11, 0x91, 0xF1, 0x9A, 0x11, 0x91, 0xF1, 0x92, 0x11, + 0x91, 0xF0, 0x9A, 0x11, 0x08, 0x99, 0xF1, 0x80, 0x91, 0xF1, 0x01, 0x9A, 0x11, 0x81, 0x91, 0xF1, 0x92, 0x11, 0x07, 0x91, 0xF1, 0x80, 0x91, 0xF0, 0x01, 0x91, 0xF1, 0x80, 0x92, 0x11, 0x02, 0x91, 0xF1, 0x80, 0x99, 0xF1, 0x01, 0x91, 0xF1, 0x85, 0x92, 0x11, 0x9A, 0x11, 0x92, 0x10, 0x92, 0x11, 0x9A, 0x11, 0x92, 0x10, 0x01, 0x9A, 0x11, 0x02, 0x92, 0x11, 0x01, 0x91, 0xF1, 0x01, 0x92, 0x11, 0x01, 0x91, 0xF1, 0x81, 0x9A, 0x11, 0x91, 0xF1, 0x01, 0x99, 0xF1, 0x80, 0x9A, 0x11, 0x03, 0x92, 0x11, 0x01, 0x91, 0xF1, 0x80, 0x99, 0xF1, 0x02, 0x91, 0xF1, 0x01, 0x91, 0xF0, 0x80, 0x91, 0xD0, 0x04, 0x91, 0xF0, 0x80, 0x91, 0xF1, 0x01, 0x91, 0xF0, 0x01, 0x91, 0xF1, 0x02, 0x92, 0x11, 0x01, 0x9A, 0x11, 0x80, 0x91, 0xF1, 0x03, 0x92, 0x11, 0x02, 0x91, 0xF1, 0x80, 0x92, 0x11, 0x10, 0x91, 0xF1, 0x82, 0x91, 0xD0, 0x91, 0xF1, 0x91, 0xF0, 0x05, 0x91, 0xF1, 0x05, 0x92, 0x11, 0x82, 0x9A, 0x11, 0x91, 0xF1, 0x92, 0x11, 0x05, 0x9A, 0x11, 0x08, 0x91, 0xF1, 0x01, 0x92, 0x11, 0x04, 0x9A, 0x11, 0x80, 0x91, 0xF1, 0x01, 0x9A, 0x11, 0x80, 0x91, 0xF1, 0x06, 0x9A, 0x11, 0x01, 0x99, 0xF1, 0x02, 0x9A, 0x11, 0x80, 0x9A, 0x12, 0x05, 0x9A, 0x11, 0x80, 0x91, 0xF1, 0x02, 0x99, 0xF1, 0x80, 0x91, 0xF1, 0x02, 0x99, 0xF1, 0x81, 0x99, 0xD1, 0x99, 0xF1, 0x06, 0x99, 0xD1, 0x01, 0xA1, 0xD1, 0x02, 0xA1, 0xB1, 0x81, 0xA1, 0xD1, 0xA1, 0xB1, 0x01, 0xA1, 0xD1, 0x80, 0xA1, 0xB1, 0x12, 0xA9, 0xB1, 0x81, 0xA9, 0x91, 0xA9, 0xB1, 0x01, 0xA9, 0x91, 0x03, 0xA9, 0xB1, 0x01, 0xA9, 0xB2, 0x03, + 0xA9, 0xB1, 0x80, 0xA9, 0xB2, 0x01, 0xA9, 0xB1, 0x81, 0xA9, 0xB2, 0xA9, 0xB1, 0x01, 0xA9, 0xB2, 0x80, 0xA9, 0xB1, 0x01, 0xA9, 0xB2, 0x01, 0xA9, 0xB1, 0x09, 0xA9, 0xB2, 0x04, 0xA9, 0xD2, 0x87, 0xB1, 0xD3, 0xB1, 0xF3, 0xB2, 0x14, 0xAA, 0x14, 0xA9, 0xF4, 0xA1, 0xF4, 0x99, 0xF4, 0x89, 0xB3, 0x01, 0x81, 0xB3, 0x05, 0x79, 0xD4, 0x8F, 0x81, 0xD4, 0x89, 0xF5, 0x91, 0xF5, 0x91, 0xD5, 0x99, 0xF6, 0xA2, 0x37, 0xA2, 0x58, 0x9A, 0x7A, 0x7A, 0x3A, 0x39, 0x39, 0x29, 0x7C, 0x19, 0x9D, 0x11, 0xBE, 0x09, 0xDE, 0x02, 0x1F, 0x02, 0x3F, 0x01, 0x02, 0x5F, 0x80, 0x02, 0x7F, 0x01, 0x02, 0x9F, 0x03, 0x02, 0xBF, 0x01, 0x02, 0xDF, 0x9D, 0x02, 0xFF, 0x02, 0xFE, 0x02, 0xDE, 0x02, 0xFC, 0x02, 0xFB, 0x03, 0x99, 0x3E, 0xBF, 0x37, 0x1C, 0x1E, 0x54, 0x1E, 0x52, 0x3E, 0x92, 0x56, 0x74, 0x75, 0xB5, 0x5B, 0x91, 0x5A, 0xB2, 0x6A, 0x53, 0x72, 0x54, 0x6A, 0x14, 0x69, 0xD4, 0x61, 0xB3, 0x59, 0x92, 0x59, 0x93, 0x59, 0xD3, 0x59, 0xB3, 0x51, 0xB2, 0x49, 0x92, 0x49, 0x71, 0x49, 0x92, 0x41, 0x71, 0x41, 0x91, 0x03, 0x41, 0x71, 0x04, 0x39, 0x50, 0x80, 0x31, 0x4F, 0x03, 0x31, 0x2F, 0x01, 0x31, 0x4F, 0x81, 0x31, 0x2F, 0x31, 0x0E, 0x01, 0x29, 0x0E, 0x80, 0x31, 0x2F, 0x02, 0x29, 0x0E, 0x84, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2F, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x29, + 0x2F, 0x07, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x8B, 0x19, 0x10, 0x11, 0x11, 0x19, 0x73, 0x21, 0xF6, 0x19, 0xD6, 0x19, 0xB5, 0x11, 0x53, 0x11, 0x31, 0x19, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x85, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x21, 0x0E, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x30, 0x8B, 0x19, 0x11, 0x11, 0x11, 0x11, 0x32, 0x19, 0x74, 0x21, 0xB5, 0x21, 0xF6, 0x21, 0xD5, 0x19, 0x94, 0x11, 0x53, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x06, 0x21, 0x30, 0x01, 0x21, 0x10, 0x02, 0x21, 0x30, 0x82, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x03, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0F, 0x04, 0x21, 0x2F, 0x82, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x83, 0x29, 0x30, 0x21, 0x30, 0x29, 0x30, 0x21, 0x30, 0x03, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x02, 0x19, 0x30, 0x01, 0x19, 0x31, 0x83, 0x19, 0x52, 0x19, 0x94, 0x19, 0xB5, 0x19, 0xD5, 0x01, 0x11, 0xD5, 0x01, 0x11, 0xB5, 0x89, 0x11, 0xD5, 0x19, 0xF6, 0x22, 0x16, 0x19, 0xF6, 0x19, 0xB5, 0x19, 0x94, 0x11, 0x32, 0x19, 0x11, 0x21, 0x30, 0x21, 0x10, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2E, 0x06, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x21, + 0x2E, 0x03, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x21, 0x0E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x81, 0x29, 0x2F, 0x21, 0x0E, 0x02, 0x21, 0x2E, 0x82, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x21, 0x2E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x2F, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x03, 0x29, 0x2E, 0x01, 0x21, 0x2E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x82, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x0E, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x19, 0x10, 0x80, 0x21, 0x30, 0x01, 0x19, 0x10, 0x80, 0x21, 0x10, 0x03, 0x19, 0x10, 0x01, 0x19, 0x30, 0x01, 0x19, 0x10, 0x01, 0x19, 0x30, 0x81, 0x19, 0x10, 0x21, 0x31, 0x08, 0x19, 0x10, 0x80, 0x19, 0x30, 0x02, 0x19, 0x10, 0x80, 0x19, 0x30, 0x05, 0x19, 0x10, 0x80, 0x19, 0x31, 0x02, 0x19, 0x10, 0x80, 0x19, 0x30, 0x02, 0x19, 0x10, 0x01, 0x19, 0x30, 0x02, 0x19, 0x10, 0x80, 0x19, 0x30, 0x01, 0x21, 0x30, 0x03, 0x19, 0x10, 0x01, 0x19, 0x30, 0x81, 0x19, 0x10, 0x21, 0x30, 0x01, 0x19, 0x10, 0x81, 0x21, 0x10, 0x19, 0x10, 0x01, 0x21, 0x10, 0x81, 0x19, 0x10, 0x21, 0x30, 0x09, 0x19, + 0x10, 0x80, 0x19, 0x30, 0x01, 0x19, 0x10, 0x80, 0x19, 0x30, 0x01, 0x19, 0x10, 0x01, 0x19, 0x30, 0x01, 0x19, 0x10, 0x80, 0x19, 0x30, 0x01, 0x19, 0x10, 0x82, 0x19, 0x30, 0x19, 0x10, 0x19, 0x30, 0x01, 0x19, 0x10, 0x84, 0x19, 0x30, 0x19, 0x10, 0x19, 0x11, 0x21, 0x31, 0x19, 0x10, 0x01, 0x19, 0x11, 0x01, 0x19, 0x10, 0x80, 0x19, 0x30, 0x04, 0x19, 0x10, 0x83, 0x19, 0x31, 0x19, 0x11, 0x19, 0x10, 0x21, 0x31, 0x01, 0x19, 0x11, 0x80, 0x19, 0x10, 0x02, 0x19, 0x11, 0x04, 0x19, 0x10, 0x01, 0x21, 0x11, 0x05, 0x19, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x02, 0x21, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x1A, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x0D, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x15, 0x29, 0x2E, 0x06, 0x29, 0x0E, 0x01, 0x28, 0xED, 0x85, 0x30, 0xCD, 0x30, 0xAC, 0x40, 0xAC, 0x61, 0x4F, 0x92, 0x93, 0xA2, 0xD4, 0x01, 0x9A, 0x93, 0x01, 0x9A, 0x73, 0x81, 0xA2, 0x73, 0xA2, 0x53, 0x06, 0xA2, 0x52, 0x80, 0xA2, 0x32, 0x08, 0xA2, 0x52, 0x04, 0xA2, 0x73, 0x80, 0xA2, 0x53, 0x03, 0xA2, 0x73, 0x80, 0xA2, 0x52, 0x0A, 0xA2, 0x53, + 0x80, 0xA2, 0x73, 0x04, 0xA2, 0x53, 0x80, 0xA2, 0x73, 0x07, 0xA2, 0x53, 0x80, 0xA2, 0x73, 0x03, 0xA2, 0x52, 0x0C, 0xA2, 0x53, 0x81, 0xA2, 0x73, 0xA2, 0x53, 0x02, 0xA2, 0x73, 0x04, 0xA2, 0x52, 0x81, 0xA2, 0x73, 0xA2, 0x52, 0x01, 0xA2, 0x73, 0x04, 0xA2, 0x53, 0x01, 0xA2, 0x52, 0x01, 0xA2, 0x53, 0x81, 0xA2, 0x73, 0xA2, 0x52, 0x07, 0xA2, 0x53, 0x82, 0x9A, 0x52, 0xA2, 0x53, 0xA2, 0x73, 0x03, 0xA2, 0x53, 0x02, 0xA2, 0x52, 0x80, 0xA2, 0x53, 0x0C, 0xA2, 0x52, 0x01, 0xA2, 0x53, 0x80, 0xA2, 0x52, 0x02, 0xA2, 0x53, 0x02, 0xA2, 0x52, 0x01, 0xA2, 0x53, 0x07, 0xA2, 0x52, 0x0A, 0xA2, 0x53, 0x83, 0xA2, 0x73, 0xA2, 0x52, 0xA2, 0x73, 0xA2, 0x53, 0x04, 0xA2, 0x52, 0x82, 0xA2, 0x53, 0xA2, 0x73, 0xA2, 0x53, 0x05, 0xA2, 0x73, 0x07, 0xA2, 0x53, 0x81, 0xA2, 0x73, 0xA2, 0x53, 0x01, 0xA2, 0x73, 0x0D, 0xA2, 0x53, 0x01, 0xA2, 0x73, 0x80, 0xA2, 0x53, 0x02, 0xA2, 0x52, 0x13, 0xA2, 0x53, 0x04, 0xA2, 0x52, 0x01, 0xA2, 0x53, 0x80, 0xA2, 0x73, 0x01, 0xA2, 0x53, 0x80, 0xA2, 0x32, 0x01, 0xA2, 0x52, 0x06, 0xA2, 0x53, 0x80, 0xA2, 0x33, 0x06, 0xA2, 0x53, 0x81, 0xA2, 0x33, 0xA2, 0x53, 0x04, 0xA2, 0x32, 0x01, 0xA2, 0x33, 0x80, 0xA2, 0x32, 0x01, 0xA2, 0x12, 0x80, 0xA2, 0x13, 0x01, 0xA2, 0x12, 0x85, 0xA1, 0xF2, 0xA9, 0xF2, 0xA9, 0xF3, 0xA9, 0xF2, 0xA9, 0xD2, 0xA9, 0xF2, 0x07, 0xA9, 0xD2, 0x80, 0xB1, 0xB2, 0x01, 0xB1, 0xD2, 0x04, 0xB1, 0xB2, 0x80, 0xB1, 0xD2, 0x0E, 0xB1, 0xB2, 0x02, 0xB1, 0xB3, 0x01, 0xB1, 0xB2, 0x80, 0xA9, 0xB2, 0x04, 0xB1, 0xB2, 0x81, 0xB1, + 0xD3, 0xB1, 0xB3, 0x01, 0xB1, 0xB2, 0x01, 0xB1, 0xD3, 0x02, 0xB1, 0xB2, 0x0C, 0xB1, 0xB3, 0x01, 0xB1, 0xD3, 0x88, 0xB1, 0xF3, 0xB2, 0x14, 0xA9, 0xD3, 0x91, 0x52, 0x91, 0x72, 0x89, 0x93, 0x81, 0x73, 0x81, 0x93, 0x81, 0xB4, 0x05, 0x81, 0xD4, 0x8F, 0x89, 0xD4, 0x91, 0xF4, 0x99, 0xF5, 0x99, 0xD5, 0xA2, 0x16, 0xA2, 0x37, 0xA2, 0x58, 0x92, 0x79, 0x72, 0x1A, 0x39, 0x5A, 0x29, 0x9C, 0x19, 0xBD, 0x11, 0xDE, 0x12, 0x1F, 0x0A, 0x5F, 0x02, 0x5F, 0x01, 0x02, 0x7F, 0x80, 0x02, 0x9F, 0x02, 0x02, 0xBF, 0x04, 0x02, 0xDF, 0x98, 0x02, 0xFF, 0x03, 0x1F, 0x02, 0xFE, 0x02, 0xFD, 0x02, 0xFB, 0x03, 0x5A, 0x2D, 0xFF, 0x36, 0xDD, 0x1E, 0x75, 0x1E, 0x52, 0x3E, 0x72, 0x5E, 0x54, 0x75, 0x75, 0x53, 0x30, 0x62, 0x91, 0x72, 0x73, 0x72, 0x34, 0x72, 0x14, 0x69, 0xD4, 0x69, 0xB3, 0x61, 0xB3, 0x59, 0x93, 0x59, 0xD3, 0x59, 0xB3, 0x51, 0x92, 0x02, 0x49, 0x92, 0x02, 0x41, 0x91, 0x02, 0x41, 0x71, 0x01, 0x41, 0x50, 0x02, 0x39, 0x50, 0x01, 0x31, 0x4F, 0x04, 0x31, 0x2F, 0x81, 0x31, 0x0F, 0x31, 0x2F, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x09, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x0B, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x21, 0x0F, 0x82, 0x19, 0x10, 0x11, 0x11, 0x11, + 0x52, 0x01, 0x21, 0xF6, 0x82, 0x19, 0xD5, 0x11, 0x53, 0x11, 0x31, 0x01, 0x19, 0x10, 0x01, 0x21, 0x2F, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x2F, 0x8D, 0x21, 0x2F, 0x21, 0x30, 0x21, 0x10, 0x19, 0x11, 0x19, 0x32, 0x11, 0x32, 0x19, 0x74, 0x21, 0xB5, 0x21, 0xF6, 0x19, 0xB5, 0x19, 0x94, 0x11, 0x53, 0x11, 0x32, 0x11, 0x11, 0x01, 0x19, 0x10, 0x03, 0x19, 0x30, 0x82, 0x19, 0x10, 0x21, 0x30, 0x19, 0x10, 0x04, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x03, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x82, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x03, 0x21, 0x30, 0x03, 0x19, 0x30, 0x02, 0x19, 0x31, 0x81, 0x11, 0x32, 0x11, 0x53, 0x01, 0x19, 0xB5, 0x84, 0x19, 0xF6, 0x09, 0x95, 0x11, 0x95, 0x09, 0x74, 0x11, 0x94, 0x01, 0x09, 0x74, 0x8D, 0x11, 0xB5, 0x19, 0xD6, 0x19, 0xF6, 0x19, 0xB5, 0x19, 0x94, 0x19, 0x32, 0x19, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x21, 0x0E, 0x29, 0x2E, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x02, 0x21, 0x2E, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x2E, 0x82, 0x29, 0x2E, 0x21, 0x2E, 0x29, 0x2E, 0x01, 0x21, 0x0E, 0x81, 0x21, 0x2E, 0x29, 0x2F, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x83, 0x29, 0x0F, 0x29, 0x2F, 0x29, 0x0F, 0x29, 0x2F, + 0x01, 0x29, 0x2E, 0x80, 0x29, 0x4E, 0x05, 0x21, 0x2E, 0x81, 0x29, 0x2E, 0x21, 0x2E, 0x04, 0x29, 0x2E, 0x07, 0x21, 0x2E, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x2E, 0x01, 0x21, 0x0E, 0x01, 0x21, 0x2E, 0x82, 0x21, 0x0E, 0x21, 0x2E, 0x21, 0x0E, 0x01, 0x21, 0x2E, 0x02, 0x21, 0x0E, 0x80, 0x21, 0x2E, 0x03, 0x21, 0x0E, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x21, 0x2E, 0x02, 0x21, 0x2F, 0x84, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x19, 0x0F, 0x02, 0x21, 0x0F, 0x82, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x80, 0x21, 0x30, 0x02, 0x21, 0x10, 0x88, 0x21, 0x30, 0x19, 0x0F, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x10, 0x19, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x19, 0x0F, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x30, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x19, 0x0F, 0x01, 0x21, 0x30, 0x81, 0x21, 0x10, 0x21, 0x0F, 0x01, 0x21, 0x30, + 0x01, 0x21, 0x10, 0x01, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x83, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x01, 0x21, 0x10, 0x86, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x19, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x30, 0x02, 0x21, 0x10, 0x82, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x08, 0x21, 0x10, 0x85, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x08, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x10, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x06, 0x29, 0x2E, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x09, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x06, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x16, 0x29, 0x2E, 0x06, 0x29, 0x0E, 0x81, 0x28, 0xEE, 0x28, 0xED, 0x01, 0x30, 0xCD, 0x84, 0x30, 0xAC, 0x30, 0x6B, 0x48, 0xCD, 0x71, 0xD1, 0x8A, 0x73, 0x01, 0x9A, 0xB4, 0x80, 0xA2, 0xB4, 0x01, 0xA2, 0x94, 0x80, 0xAA, 0x94, 0x02, 0xAA, 0x93, 0x81, 0xA2, 0x73, 0xAA, 0x73, 0x03, 0xAA, 0x93, 0x83, 0xAA, 0x73, 0xAA, 0x93, 0xA2, 0x93, 0xAA, 0x93, 0x02, 0xA2, 0x93, 0x81, 0xA2, 0x94, + 0xA2, 0x93, 0x02, 0xA2, 0x94, 0x85, 0xA2, 0x93, 0xAA, 0x94, 0xA2, 0x94, 0xAA, 0x94, 0xA2, 0x94, 0xA2, 0x93, 0x02, 0xAA, 0x94, 0x03, 0xA2, 0x94, 0x02, 0xAA, 0x94, 0x80, 0xA2, 0x94, 0x06, 0xAA, 0x94, 0x80, 0xAA, 0xB4, 0x07, 0xAA, 0x94, 0x82, 0xA2, 0x93, 0xA2, 0x94, 0xA2, 0x93, 0x0E, 0xAA, 0x94, 0x83, 0xAA, 0xB4, 0xA2, 0x93, 0xAA, 0xB4, 0xA2, 0x93, 0x04, 0xAA, 0x93, 0x80, 0xA2, 0x93, 0x07, 0xAA, 0x94, 0x80, 0xAA, 0x93, 0x01, 0xAA, 0x94, 0x81, 0xA2, 0x93, 0xAA, 0x94, 0x01, 0xA2, 0x94, 0x80, 0xA2, 0x73, 0x02, 0xA2, 0x94, 0x01, 0xA2, 0x93, 0x01, 0xA2, 0x94, 0x01, 0xA2, 0x93, 0x81, 0xAA, 0x93, 0xAA, 0x94, 0x0F, 0xAA, 0x93, 0x01, 0xA2, 0x93, 0x05, 0xAA, 0x94, 0x80, 0xA2, 0x93, 0x06, 0xAA, 0x93, 0x80, 0xA2, 0x93, 0x03, 0xAA, 0x93, 0x80, 0xAA, 0x94, 0x01, 0xAA, 0x93, 0x85, 0xAA, 0x94, 0xAA, 0xB4, 0xAA, 0x94, 0xAA, 0xB4, 0xAA, 0x94, 0xAA, 0xB4, 0x02, 0xAA, 0x94, 0x81, 0xAA, 0x93, 0xAA, 0x94, 0x01, 0xAA, 0x93, 0x80, 0xA2, 0x93, 0x01, 0xAA, 0x93, 0x83, 0xA2, 0x93, 0xAA, 0x93, 0xA2, 0x93, 0xAA, 0x94, 0x03, 0xA2, 0x93, 0x82, 0xA2, 0x94, 0xAA, 0x94, 0xA2, 0x93, 0x02, 0xA2, 0x94, 0x08, 0xAA, 0x94, 0x02, 0xAA, 0xB4, 0x07, 0xA2, 0x94, 0x01, 0xAA, 0x94, 0x81, 0xA2, 0x94, 0xAA, 0x94, 0x02, 0xA2, 0x93, 0x80, 0xA2, 0x94, 0x01, 0xAA, 0x94, 0x01, 0xA2, 0x94, 0x0B, 0xAA, 0x94, 0x81, 0xA2, 0x93, 0xA2, 0x94, 0x07, 0xA2, 0x93, 0x05, 0xA2, 0x73, 0x01, 0xAA, 0x73, 0x05, 0xA2, 0x73, 0x02, 0xA2, 0x74, 0x83, 0xAA, 0x74, 0xA2, 0x73, 0xA2, 0x74, 0xA2, + 0x73, 0x04, 0xA2, 0x53, 0x02, 0xA2, 0x33, 0x81, 0xAA, 0x53, 0xA2, 0x33, 0x03, 0xAA, 0x33, 0x02, 0xAA, 0x13, 0x03, 0xA9, 0xF3, 0x02, 0xB1, 0xF3, 0x09, 0xB1, 0xD3, 0x81, 0xB1, 0xB3, 0xB1, 0xD3, 0x09, 0xB9, 0xD3, 0x82, 0xB1, 0xB3, 0xB9, 0xB3, 0xB9, 0xD3, 0x02, 0xB9, 0xB3, 0x02, 0xB1, 0xB3, 0x05, 0xB1, 0xD3, 0x01, 0xB1, 0xB3, 0x80, 0xB9, 0xD3, 0x02, 0xB1, 0xD3, 0x05, 0xB1, 0xB3, 0x85, 0xB9, 0xD3, 0xB9, 0xB3, 0xB9, 0xD3, 0xB9, 0xB3, 0xB1, 0xB3, 0xB1, 0xD3, 0x01, 0xB1, 0xB3, 0x80, 0xB1, 0xD3, 0x03, 0xB1, 0xB3, 0x01, 0xB1, 0xD3, 0x8C, 0xB1, 0xF4, 0xB1, 0xD4, 0xA1, 0x72, 0x91, 0x11, 0x89, 0x31, 0x89, 0x52, 0x81, 0x52, 0x79, 0x72, 0x79, 0x73, 0x81, 0xB3, 0x81, 0xB4, 0x79, 0x93, 0x79, 0xB3, 0x01, 0x81, 0xB4, 0x90, 0x81, 0xB3, 0x89, 0xB3, 0x91, 0xD4, 0xA1, 0xF4, 0xA1, 0xF5, 0xAA, 0x16, 0xA2, 0x37, 0xA2, 0x58, 0x92, 0x79, 0x69, 0xF9, 0x39, 0x7A, 0x29, 0xBC, 0x19, 0xDD, 0x12, 0x1E, 0x12, 0x5F, 0x0A, 0x7F, 0x02, 0x7F, 0x01, 0x02, 0x9F, 0x80, 0x02, 0xBF, 0x02, 0x02, 0xDF, 0x04, 0x02, 0xFF, 0x01, 0x03, 0x1F, 0x92, 0x03, 0x1E, 0x02, 0xFD, 0x02, 0xFC, 0x03, 0x3A, 0x25, 0x7E, 0x36, 0xBD, 0x26, 0x76, 0x2E, 0x73, 0x3E, 0x52, 0x5E, 0x33, 0x7D, 0x75, 0x63, 0x51, 0x6A, 0x91, 0x72, 0x53, 0x7A, 0x34, 0x7A, 0x14, 0x71, 0xD3, 0x69, 0xB3, 0x61, 0xB3, 0x02, 0x59, 0xB3, 0x85, 0x51, 0xB3, 0x51, 0xB2, 0x49, 0x72, 0x49, 0x92, 0x49, 0x91, 0x41, 0x91, 0x03, 0x41, 0x71, 0x81, 0x39, 0x50, 0x41, 0x70, 0x02, 0x39, 0x50, 0x02, 0x31, 0x2F, 0x80, 0x31, 0x4F, + 0x04, 0x31, 0x2F, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x8C, 0x21, 0x2E, 0x21, 0x2F, 0x19, 0x10, 0x19, 0x11, 0x11, 0x52, 0x19, 0x94, 0x22, 0x16, 0x21, 0xF6, 0x11, 0x73, 0x11, 0x32, 0x19, 0x31, 0x19, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x21, 0x0E, 0x80, 0x21, 0x2E, 0x01, 0x29, 0x2F, 0x85, 0x21, 0x30, 0x21, 0x10, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x19, 0x73, 0x01, 0x21, 0xB5, 0x85, 0x19, 0xB5, 0x19, 0x74, 0x11, 0x53, 0x11, 0x12, 0x11, 0x11, 0x10, 0xF0, 0x06, 0x19, 0x10, 0x05, 0x19, 0x30, 0x81, 0x19, 0x10, 0x19, 0x30, 0x06, 0x19, 0x10, 0x80, 0x19, 0x30, 0x01, 0x19, 0x10, 0x80, 0x19, 0x30, 0x18, 0x19, 0x10, 0x84, 0x18, 0xEF, 0x18, 0xF0, 0x19, 0x30, 0x19, 0x10, 0x11, 0x10, 0x01, 0x11, 0x11, 0x86, 0x09, 0x11, 0x11, 0x73, 0x19, 0xB5, 0x1A, 0x17, 0x11, 0xD5, 0x11, 0x94, 0x09, 0x74, 0x02, 0x09, 0x53, 0x8A, 0x09, 0x52, 0x09, 0x53, 0x11, 0x94, 0x19, 0xF6, 0x19, 0xB5, 0x21, 0xD5, 0x19, + 0x73, 0x10, 0xF0, 0x21, 0x10, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x0E, 0x81, 0x29, 0x2E, 0x31, 0x2F, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x4E, 0x86, 0x21, 0x4E, 0x21, 0x2E, 0x21, 0x4F, 0x21, 0x2E, 0x21, 0x2F, 0x21, 0x2E, 0x21, 0x0E, 0x03, 0x21, 0x2E, 0x01, 0x21, 0x0E, 0x81, 0x29, 0x0E, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x0B, 0x21, 0x2E, 0x01, 0x29, 0x2E, 0x05, 0x21, 0x2E, 0x84, 0x19, 0x0E, 0x21, 0x2E, 0x21, 0x2F, 0x21, 0x2E, 0x21, 0x2F, 0x01, 0x21, 0x2E, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0E, 0x01, 0x21, 0x2E, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0E, 0x01, 0x21, 0x2E, 0x80, 0x19, 0x0E, 0x01, 0x21, 0x2E, 0x81, 0x21, 0x0E, 0x21, 0x2F, 0x01, 0x21, 0x2E, 0x80, 0x21, 0x0E, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x83, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x21, 0x2E, 0x03, 0x21, 0x0E, 0x82, 0x29, 0x2F, 0x21, 0x2F, 0x29, 0x2F, 0x03, 0x21, 0x2F, 0x80, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x03, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0A, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x85, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, + 0x02, 0x21, 0x0F, 0x83, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x07, 0x21, 0x0F, 0x82, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x0F, 0x21, 0x0F, 0x81, 0x21, 0x0E, 0x21, 0x2F, 0x03, 0x21, 0x0E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x05, 0x29, 0x2E, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x06, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x06, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x0B, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x07, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x31, 0x2E, 0x05, 0x29, 0x0E, 0x01, 0x28, 0xED, 0x89, 0x30, 0xED, 0x30, 0xCD, 0x30, 0xAC, 0x38, 0x8C, 0x40, 0xAC, + 0x50, 0xCD, 0x59, 0x2E, 0x71, 0xB1, 0x8A, 0x53, 0x9A, 0xB4, 0x01, 0xA2, 0xD5, 0x84, 0xA2, 0xF5, 0xA2, 0xD5, 0xA2, 0xF5, 0xA2, 0xD5, 0xAA, 0xF5, 0x01, 0xA2, 0xF5, 0x05, 0xA2, 0xD5, 0x81, 0xA2, 0xD4, 0xA2, 0xF5, 0x02, 0x9A, 0xD4, 0x81, 0xA2, 0xD5, 0x9A, 0xB4, 0x08, 0xA2, 0xD5, 0x84, 0x9A, 0xB5, 0xA2, 0xD5, 0x9A, 0xB5, 0xA2, 0xD5, 0x9A, 0xB5, 0x02, 0xA2, 0xD5, 0x84, 0x9A, 0xB4, 0xA2, 0xD5, 0x9A, 0xB4, 0xA2, 0xD5, 0xA2, 0xB4, 0x08, 0xA2, 0xD5, 0x82, 0xA2, 0xB4, 0xA2, 0xD5, 0x9A, 0xD4, 0x02, 0xA2, 0xD5, 0x81, 0x9A, 0xB4, 0xA2, 0xD5, 0x01, 0x9A, 0xB5, 0x81, 0x9A, 0x94, 0x9A, 0xB5, 0x0B, 0x9A, 0x94, 0x82, 0x9A, 0x93, 0x9A, 0xB4, 0x9A, 0x93, 0x07, 0x9A, 0x94, 0x02, 0x9A, 0xB4, 0x80, 0x9A, 0x94, 0x01, 0x9A, 0xB4, 0x9B, 0x9A, 0xD4, 0x9A, 0xB4, 0xA2, 0xD5, 0x9A, 0xB4, 0xA2, 0xD5, 0x9A, 0xB4, 0x9A, 0xD5, 0x9A, 0xB4, 0x9A, 0xD4, 0x9A, 0xB4, 0x9A, 0xD4, 0x9A, 0xB4, 0xA2, 0xD5, 0x9A, 0xB4, 0xA2, 0xD5, 0xA2, 0xD4, 0xA2, 0xD5, 0xA2, 0xD4, 0xA2, 0xD5, 0xA2, 0xD4, 0xA2, 0xD5, 0xA2, 0xD4, 0xA2, 0xD5, 0xA2, 0xD4, 0xA2, 0xD5, 0xA2, 0xD4, 0xA2, 0xF5, 0xA2, 0xD4, 0x02, 0xA2, 0xD5, 0x80, 0xA2, 0xD4, 0x08, 0xA2, 0xD5, 0x81, 0xA2, 0xD4, 0xA2, 0xF5, 0x05, 0xA2, 0xD5, 0x85, 0xA2, 0xD4, 0xA2, 0xD5, 0xA2, 0xD4, 0xA2, 0xD5, 0xA2, 0xB4, 0xA2, 0xD4, 0x03, 0x9A, 0xB4, 0x02, 0x9A, 0x94, 0x81, 0x9A, 0xB4, 0x9A, 0x94, 0x03, 0x9A, 0xB4, 0x8B, 0xA2, 0xD4, 0x9A, 0xB4, 0xA2, 0xD5, 0xA2, 0xD4, 0xA2, 0xD5, 0xA2, 0xD4, 0xA2, 0xD5, 0xA2, 0xD4, 0xA2, 0xD5, 0x9A, + 0xD4, 0xA2, 0xD5, 0x9A, 0xD4, 0x0A, 0xA2, 0xD5, 0x85, 0x9A, 0xB4, 0xA2, 0xD5, 0x9A, 0xB4, 0x9A, 0xD4, 0x9A, 0xB4, 0x9A, 0xD4, 0x06, 0x9A, 0xB4, 0x8C, 0x9A, 0xD4, 0x9A, 0xB4, 0x9A, 0xB5, 0x9A, 0xB4, 0xA2, 0xD5, 0x9A, 0xB4, 0xA2, 0xD5, 0x9A, 0xB4, 0xA2, 0xD5, 0x9A, 0xB4, 0xA2, 0xD5, 0x9A, 0xB4, 0xA2, 0xD5, 0x02, 0x9A, 0xB4, 0x89, 0xA2, 0xD5, 0x9A, 0xB4, 0xA2, 0xD5, 0xA2, 0xB4, 0xA2, 0xD5, 0x9A, 0xB4, 0xA2, 0xD5, 0x9A, 0xB4, 0xA2, 0xD5, 0x9A, 0xB4, 0x07, 0xA2, 0xD5, 0x02, 0xA2, 0xF5, 0x81, 0xA2, 0xD5, 0xA2, 0xF5, 0x03, 0xA2, 0xD5, 0x84, 0xA2, 0xB5, 0xA2, 0xD5, 0xA2, 0xB5, 0xA2, 0xD5, 0xA2, 0xB4, 0x02, 0xA2, 0xB5, 0x89, 0xA2, 0x95, 0xA2, 0xB5, 0xA2, 0x95, 0xA2, 0xB5, 0xA2, 0x95, 0xA2, 0x74, 0xA2, 0x54, 0xA2, 0x74, 0xA2, 0x54, 0xA2, 0x74, 0x03, 0xAA, 0x74, 0x02, 0xAA, 0x54, 0x80, 0xB2, 0x54, 0x02, 0xB2, 0x34, 0x80, 0xAA, 0x13, 0x01, 0xB2, 0x13, 0x04, 0xB1, 0xF3, 0x04, 0xB1, 0xD3, 0x80, 0xB9, 0xF3, 0x03, 0xB9, 0xD3, 0x80, 0xB9, 0xF3, 0x0D, 0xB9, 0xD3, 0x01, 0xB9, 0xD4, 0x02, 0xB9, 0xD3, 0x02, 0xB9, 0xD4, 0x01, 0xB9, 0xD3, 0x81, 0xB9, 0xD4, 0xB9, 0xD3, 0x02, 0xB9, 0xD4, 0x01, 0xB9, 0xD3, 0x01, 0xB9, 0xD4, 0x01, 0xB9, 0xD3, 0x01, 0xB9, 0xD4, 0x80, 0xB9, 0xB3, 0x01, 0xB9, 0xD3, 0x06, 0xB9, 0xB3, 0x01, 0xB9, 0xD3, 0x80, 0xB9, 0xD4, 0x01, 0xB9, 0xB3, 0x01, 0xB1, 0xB3, 0x83, 0xA9, 0x93, 0xA9, 0x72, 0xA1, 0x93, 0xA1, 0xB3, 0x01, 0x99, 0xB3, 0x80, 0x91, 0xB3, 0x02, 0x81, 0x52, 0x81, 0x79, 0x52, 0x81, 0x52, 0x01, 0x81, 0x72, 0x81, + 0x91, 0xB4, 0x99, 0xF4, 0x01, 0xA1, 0xF4, 0x8D, 0xA9, 0xF4, 0xAA, 0x15, 0xAA, 0x16, 0xA2, 0x37, 0x9A, 0x58, 0x8A, 0x79, 0x61, 0xF9, 0x39, 0xBA, 0x29, 0xFD, 0x19, 0xFD, 0x12, 0x3E, 0x12, 0x7F, 0x0A, 0x9F, 0x02, 0x9F, 0x01, 0x02, 0xBF, 0x80, 0x02, 0xDF, 0x04, 0x02, 0xFF, 0x02, 0x03, 0x1F, 0x01, 0x03, 0x3F, 0x91, 0x03, 0x3E, 0x03, 0x1D, 0x02, 0xFC, 0x03, 0x3A, 0x0C, 0x9C, 0x36, 0x5D, 0x2E, 0x97, 0x2E, 0x73, 0x3E, 0x53, 0x5E, 0x13, 0x7D, 0x75, 0x63, 0x10, 0x6A, 0x91, 0x7A, 0x32, 0x82, 0x34, 0x79, 0xF4, 0x71, 0xB3, 0x69, 0xB3, 0x01, 0x61, 0xB3, 0x81, 0x59, 0x93, 0x51, 0x92, 0x01, 0x51, 0xB2, 0x01, 0x49, 0x92, 0x01, 0x49, 0x91, 0x80, 0x41, 0x91, 0x01, 0x41, 0x71, 0x01, 0x41, 0x50, 0x02, 0x39, 0x50, 0x81, 0x39, 0x30, 0x39, 0x50, 0x07, 0x31, 0x2F, 0x02, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x0D, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x05, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x05, 0x29, 0x2E, 0x8E, 0x21, 0x0E, 0x21, 0x2F, 0x19, 0x0F, 0x19, 0x10, 0x11, 0x32, 0x11, 0x53, 0x21, 0xD5, 0x22, 0x16, 0x19, 0xB5, 0x11, 0x32, 0x19, 0x32, 0x19, 0x31, 0x19, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x03, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x21, 0x0E, + 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x85, 0x21, 0x10, 0x19, 0x10, 0x19, 0x11, 0x19, 0x32, 0x19, 0x53, 0x19, 0x94, 0x01, 0x21, 0xD6, 0x89, 0x19, 0x95, 0x11, 0x53, 0x11, 0x52, 0x11, 0x11, 0x11, 0x31, 0x11, 0x11, 0x19, 0x31, 0x11, 0x11, 0x19, 0x31, 0x11, 0x11, 0x06, 0x19, 0x31, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x31, 0x19, 0x11, 0x02, 0x19, 0x31, 0x80, 0x19, 0x30, 0x07, 0x19, 0x31, 0x01, 0x11, 0x11, 0x82, 0x19, 0x31, 0x11, 0x10, 0x19, 0x31, 0x01, 0x19, 0x11, 0x81, 0x19, 0x10, 0x19, 0x11, 0x01, 0x19, 0x10, 0x80, 0x19, 0x11, 0x05, 0x11, 0x10, 0x84, 0x19, 0x10, 0x11, 0x10, 0x10, 0xF0, 0x19, 0x11, 0x19, 0x31, 0x01, 0x11, 0x31, 0x82, 0x11, 0x12, 0x09, 0x12, 0x09, 0x53, 0x01, 0x19, 0xF6, 0x83, 0x09, 0x94, 0x09, 0x53, 0x09, 0x32, 0x09, 0x53, 0x03, 0x09, 0x32, 0x86, 0x09, 0x53, 0x19, 0xD5, 0x19, 0xF6, 0x19, 0xB5, 0x19, 0x73, 0x19, 0x11, 0x19, 0x0F, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x82, 0x21, 0x2E, 0x21, 0x0E, 0x19, 0x2E, 0x02, 0x21, 0x4E, 0x81, 0x19, 0x2E, 0x19, 0x4E, 0x02, 0x19, 0x2E, 0x01, 0x19, 0x0E, 0x02, 0x19, 0x2E, 0x84, 0x19, 0x0E, 0x21, 0x2E, 0x21, 0x2F, 0x21, 0x0F, 0x29, 0x0F, 0x01, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x2E, 0x07, 0x19, 0x2E, 0x02, 0x21, 0x2E, 0x82, 0x21, 0x4F, 0x21, 0x2E, 0x21, 0x4E, 0x01, 0x21, 0x2E, 0x80, 0x19, 0x4E, 0x02, 0x19, 0x2E, 0x80, 0x19, 0x0E, 0x01, 0x19, 0x2E, 0x01, 0x19, 0x2F, 0x01, 0x21, 0x4F, + 0x01, 0x19, 0x0E, 0x04, 0x19, 0x2E, 0x80, 0x19, 0x0E, 0x01, 0x19, 0x2F, 0x04, 0x19, 0x2E, 0x82, 0x19, 0x0E, 0x19, 0x2E, 0x19, 0x2F, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x82, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x85, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x2E, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x84, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x2E, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x8C, 0x21, 0x0E, 0x21, 0x2E, 0x21, 0x0E, 0x21, 0x0F, 0x21, 0x0E, 0x21, 0x2F, 0x21, 0x0E, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2E, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x0E, 0x04, 0x21, 0x0F, 0x88, 0x21, 0x0E, 0x21, 0x0F, 0x21, 0x0E, 0x21, 0x2F, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x0E, 0x21, 0x2E, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x2E, 0x02, 0x21, 0x0E, 0x8C, 0x21, 0x2F, 0x21, 0x0E, 0x21, 0x2F, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x0E, 0x21, 0x2E, 0x21, 0x0E, 0x21, 0x2E, 0x21, 0x0E, 0x21, 0x2F, 0x21, 0x0E, 0x21, 0x2F, 0x01, 0x21, 0x0E, 0x82, 0x21, 0x0F, 0x21, 0x2E, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x03, 0x21, 0x0E, 0x82, 0x21, 0x0F, 0x21, 0x0E, 0x29, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x0E, 0x29, 0x0F, 0x02, 0x21, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x82, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, + 0x0E, 0x02, 0x29, 0x0F, 0x80, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x2F, 0x82, 0x21, 0x0E, 0x29, 0x0F, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x02, 0x29, 0x0F, 0x83, 0x21, 0x0E, 0x29, 0x2F, 0x21, 0x0F, 0x29, 0x2F, 0x02, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x83, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x2E, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x83, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x0A, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x0A, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x08, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x06, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x0E, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2F, 0x04, 0x29, 0x0E, 0x10, 0x29, 0x2E, 0x08, 0x29, 0x0E, 0x05, 0x29, 0x2E, 0x84, 0x29, 0x0E, 0x29, 0x2E, 0x31, 0x2E, 0x29, 0x0E, 0x31, 0x0E, 0x04, 0x29, 0x0E, 0x01, 0x28, 0xED, 0x01, 0x30, 0xED, 0x86, 0x30, 0xCD, 0x30, 0xAD, 0x30, 0xAC, 0x30, 0x8C, 0x30, 0x6C, 0x30, 0x6B, 0x30, 0x4B, 0x02, 0x30, 0x2B, 0x80, 0x30, 0x2A, 0x08, 0x30, 0x0A, 0x0A, 0x30, 0x2A, 0x80, 0x30, 0x2B, 0x03, 0x30, 0x2A, 0x05, 0x30, 0x2B, 0x18, 0x30, 0x2A, 0x04, 0x30, 0x2B, 0x08, 0x30, 0x4B, 0x01, 0x30, 0x4A, 0x01, 0x30, 0x2A, 0x80, 0x30, 0x4B, 0x02, 0x30, 0x4A, 0x80, 0x30, 0x4B, 0x0A, 0x30, 0x2B, 0x01, 0x30, 0x4B, 0x80, 0x30, 0x2B, 0x02, 0x30, 0x2A, 0x01, + 0x30, 0x2B, 0x01, 0x30, 0x2A, 0x01, 0x30, 0x2B, 0x34, 0x30, 0x2A, 0x02, 0x30, 0x0A, 0x01, 0x30, 0x2A, 0x01, 0x30, 0x2B, 0x80, 0x28, 0x2A, 0x03, 0x30, 0x2A, 0x81, 0x28, 0x2A, 0x30, 0x2B, 0x03, 0x30, 0x2A, 0x03, 0x30, 0x2B, 0x80, 0x30, 0x0A, 0x05, 0x30, 0x2A, 0x0B, 0x30, 0x2B, 0x83, 0x30, 0x2A, 0x30, 0x2B, 0x30, 0x2A, 0x30, 0x2B, 0x03, 0x30, 0x2A, 0x01, 0x30, 0x2B, 0x80, 0x30, 0x2A, 0x05, 0x30, 0x2B, 0x80, 0x30, 0x2A, 0x04, 0x30, 0x2B, 0x02, 0x30, 0x4B, 0x04, 0x30, 0x2B, 0x04, 0x38, 0x4B, 0x03, 0x38, 0x4C, 0x01, 0x38, 0x6C, 0x80, 0x40, 0x4C, 0x05, 0x40, 0x6C, 0x83, 0x48, 0x6D, 0x48, 0x6C, 0x48, 0x4C, 0x50, 0x6D, 0x01, 0x50, 0x4D, 0x83, 0x58, 0x4D, 0x58, 0x6E, 0x58, 0x4D, 0x58, 0x2D, 0x01, 0x58, 0x0C, 0x80, 0x60, 0x0C, 0x01, 0x60, 0x0B, 0x89, 0x68, 0x0C, 0x70, 0x0C, 0x78, 0x4D, 0x78, 0x6E, 0x80, 0x8E, 0x88, 0xAF, 0x90, 0xF0, 0x91, 0x10, 0x99, 0x31, 0xA1, 0x51, 0x01, 0xA1, 0x52, 0x81, 0xA9, 0x72, 0xA9, 0x92, 0x01, 0xB1, 0xB3, 0x01, 0xB9, 0xD3, 0x81, 0xB9, 0xF3, 0xB9, 0xF4, 0x02, 0xC1, 0xF4, 0x01, 0xC2, 0x14, 0x04, 0xC1, 0xF4, 0x80, 0xC9, 0xF4, 0x03, 0xC1, 0xF4, 0x03, 0xC1, 0xD4, 0x01, 0xB9, 0xD4, 0x03, 0xC1, 0xD4, 0x06, 0xB9, 0xD4, 0x80, 0xC1, 0xD4, 0x02, 0xB9, 0xD4, 0x03, 0xC1, 0xD4, 0x80, 0xB9, 0xD4, 0x03, 0xC1, 0xD4, 0x82, 0xC1, 0xB4, 0xB9, 0xD4, 0xB9, 0xD3, 0x01, 0xB9, 0xB3, 0x82, 0xB9, 0xD3, 0xB9, 0xD4, 0xC1, 0xF4, 0x01, 0xB9, 0xD4, 0x80, 0xB9, 0xF4, 0x02, 0xB9, 0xD4, 0x02, 0xB9, 0xF4, 0x80, 0xBA, 0x15, 0x01, 0xBA, + 0x35, 0x81, 0xB2, 0x55, 0xB2, 0x76, 0x01, 0xB2, 0x56, 0x80, 0xB2, 0x76, 0x02, 0xB2, 0x56, 0x80, 0xB2, 0x35, 0x01, 0xB2, 0x15, 0x8D, 0xB2, 0x14, 0xB1, 0xF4, 0xA9, 0xF5, 0xAA, 0x15, 0xAA, 0x37, 0x9A, 0x58, 0x82, 0x59, 0x51, 0xD9, 0x3A, 0x1B, 0x2A, 0x3D, 0x1A, 0x5E, 0x12, 0x7E, 0x0A, 0x9F, 0x0A, 0xBF, 0x01, 0x02, 0xDF, 0x01, 0x02, 0xFF, 0x07, 0x03, 0x1F, 0x01, 0x03, 0x3F, 0x92, 0x03, 0x3E, 0x03, 0x1E, 0x02, 0xFD, 0x03, 0x3B, 0x04, 0x1B, 0x2D, 0xDD, 0x36, 0xB8, 0x2E, 0x53, 0x3E, 0x33, 0x5D, 0xF3, 0x85, 0x55, 0x63, 0x10, 0x7A, 0xB2, 0x82, 0x53, 0x8A, 0x54, 0x82, 0x14, 0x71, 0xB3, 0x69, 0xB3, 0x61, 0x93, 0x01, 0x59, 0x93, 0x82, 0x59, 0xB3, 0x51, 0x92, 0x51, 0xB2, 0x01, 0x49, 0x92, 0x82, 0x49, 0x71, 0x41, 0x71, 0x49, 0x91, 0x01, 0x41, 0x71, 0x01, 0x41, 0x50, 0x80, 0x39, 0x50, 0x02, 0x39, 0x30, 0x81, 0x31, 0x2F, 0x39, 0x4F, 0x05, 0x31, 0x2F, 0x01, 0x29, 0x0E, 0x05, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x0C, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x82, 0x29, 0x2F, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x80, 0x21, 0x2E, 0x01, 0x21, 0x0F, 0x83, 0x19, 0x10, 0x19, 0x51, 0x19, 0x73, 0x19, 0xB4, 0x01, 0x21, 0xF6, 0x84, 0x19, 0x94, 0x11, 0x32, + 0x11, 0x11, 0x19, 0x10, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2F, 0x86, 0x21, 0x30, 0x19, 0x10, 0x19, 0x31, 0x19, 0x52, 0x19, 0x94, 0x21, 0xB5, 0x21, 0xD6, 0x01, 0x21, 0xF6, 0x87, 0x19, 0xD5, 0x19, 0x93, 0x19, 0x73, 0x19, 0x93, 0x19, 0x73, 0x19, 0x93, 0x19, 0x73, 0x21, 0x93, 0x02, 0x19, 0x72, 0x02, 0x21, 0x72, 0x80, 0x19, 0x72, 0x01, 0x21, 0x72, 0x82, 0x21, 0x73, 0x19, 0x72, 0x21, 0x73, 0x07, 0x21, 0x72, 0x06, 0x19, 0x72, 0x01, 0x19, 0x73, 0x01, 0x19, 0x72, 0x88, 0x21, 0x73, 0x19, 0x72, 0x21, 0x72, 0x19, 0x72, 0x21, 0x73, 0x21, 0x72, 0x21, 0x73, 0x19, 0x72, 0x21, 0x72, 0x03, 0x19, 0x72, 0x80, 0x21, 0x93, 0x01, 0x19, 0x72, 0x81, 0x21, 0x93, 0x21, 0xB3, 0x01, 0x21, 0xB4, 0x85, 0x19, 0x94, 0x11, 0x74, 0x11, 0x95, 0x11, 0xD6, 0x11, 0xB5, 0x09, 0x54, 0x01, 0x09, 0x32, 0x80, 0x11, 0x73, 0x02, 0x09, 0x52, 0x89, 0x09, 0x53, 0x11, 0x53, 0x11, 0x94, 0x11, 0x95, 0x19, 0xD5, 0x19, 0x73, 0x19, 0x31, 0x19, 0x30, 0x21, 0x0F, 0x21, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x87, 0x29, 0x2E, 0x29, 0x2F, 0x29, 0x0E, 0x21, 0x2E, 0x19, 0x0E, 0x19, 0x2E, 0x11, 0x2E, 0x11, 0x0D, 0x01, 0x08, 0xED, 0x81, 0x08, 0xCC, 0x09, 0x0D, 0x04, 0x08, 0xED, 0x86, 0x11, 0x2E, 0x11, 0x0E, 0x08, 0xCD, 0x10, 0xED, 0x11, 0x0E, 0x19, 0x0E, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x86, 0x21, 0x0E, 0x21, 0x2E, 0x19, 0x0E, 0x19, 0x2E, + 0x11, 0x0E, 0x11, 0x4E, 0x11, 0x2E, 0x01, 0x09, 0x0D, 0x81, 0x09, 0x2D, 0x09, 0x0E, 0x01, 0x11, 0x2E, 0x80, 0x11, 0x0E, 0x01, 0x19, 0x0E, 0x80, 0x19, 0x2E, 0x04, 0x11, 0x2E, 0x82, 0x09, 0x0E, 0x11, 0x2E, 0x08, 0xED, 0x01, 0x09, 0x0E, 0x87, 0x08, 0xEE, 0x08, 0xCE, 0x10, 0xEE, 0x19, 0x0E, 0x19, 0x2E, 0x11, 0x0E, 0x10, 0xED, 0x08, 0xED, 0x01, 0x11, 0x0E, 0x82, 0x09, 0x0E, 0x08, 0xED, 0x11, 0x2F, 0x01, 0x11, 0x2E, 0x80, 0x09, 0x0E, 0x02, 0x09, 0x0D, 0x80, 0x08, 0xED, 0x01, 0x09, 0x0E, 0x81, 0x29, 0x0E, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x80, 0x28, 0xED, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x8E, 0x29, 0x2E, 0x21, 0x0E, 0x21, 0x2E, 0x21, 0x0E, 0x21, 0x2E, 0x29, 0x2E, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x2E, 0x21, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x83, 0x21, 0x0E, 0x21, 0x2E, 0x21, 0x0E, 0x21, 0x2E, 0x03, 0x21, 0x0E, 0x83, 0x21, 0x2E, 0x29, 0x2E, 0x21, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x81, 0x21, 0x0E, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x80, 0x29, 0x0E, 0x02, 0x21, 0x0E, 0x81, 0x29, 0x0E, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x21, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x21, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x82, 0x29, 0x2E, 0x21, 0x0E, 0x29, 0x2E, 0x02, 0x21, 0x0E, 0x84, 0x29, 0x2E, 0x21, 0x0E, 0x29, 0x2E, + 0x21, 0x0E, 0x21, 0x2E, 0x08, 0x21, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x21, 0x0E, 0x29, 0x0E, 0x02, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x21, 0x0E, 0x06, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x07, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x83, 0x21, 0x0E, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x83, 0x29, 0x0E, 0x29, 0x2E, 0x21, 0x0E, 0x29, 0x0E, 0x02, 0x21, 0x0E, 0x81, 0x29, 0x2E, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x06, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x06, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x05, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x0F, 0x29, 0x2E, 0x08, 0x29, 0x0E, 0x08, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0E, + 0x01, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x01, 0x30, 0xED, 0x04, 0x30, 0xCD, 0x06, 0x30, 0xAD, 0x01, 0x30, 0xAC, 0x0D, 0x30, 0xAD, 0x80, 0x30, 0xAC, 0x01, 0x30, 0xAD, 0x02, 0x30, 0xAC, 0x08, 0x30, 0xAD, 0x01, 0x30, 0xCD, 0x01, 0x30, 0xAD, 0x80, 0x30, 0xAC, 0x02, 0x30, 0xAD, 0x01, 0x30, 0xCD, 0x05, 0x30, 0xAD, 0x01, 0x30, 0xCD, 0x05, 0x30, 0xAD, 0x15, 0x30, 0xAC, 0x01, 0x30, 0xAD, 0x01, 0x30, 0xAC, 0x01, 0x30, 0xAD, 0x01, 0x30, 0xAC, 0x01, 0x30, 0xAD, 0x01, 0x30, 0xAC, 0x80, 0x30, 0xAD, 0x02, 0x30, 0xAC, 0x01, 0x30, 0xAD, 0x01, 0x30, 0xAC, 0x01, 0x30, 0xAD, 0x01, 0x30, 0xCD, 0x0A, 0x30, 0xAD, 0x80, 0x30, 0xAC, 0x0A, 0x30, 0xAD, 0x80, 0x30, 0xAC, 0x18, 0x30, 0xAD, 0x01, 0x30, 0xAC, 0x21, 0x30, 0xAD, 0x80, 0x30, 0xAC, 0x04, 0x30, 0xAD, 0x80, 0x30, 0xAC, 0x0A, 0x30, 0xAD, 0x80, 0x30, 0xCD, 0x05, 0x30, 0xAD, 0x80, 0x30, 0xCD, 0x01, 0x30, 0xAD, 0x01, 0x30, 0xCD, 0x80, 0x30, 0xAD, 0x03, 0x30, 0xCD, 0x85, 0x30, 0xAD, 0x38, 0xAD, 0x38, 0xCE, 0x38, 0xCD, 0x38, 0xCE, 0x38, 0xCD, 0x06, 0x38, 0xCE, 0x07, 0x40, 0xCE, 0x87, 0x48, 0xCE, 0x48, 0xAE, 0x48, 0xCE, 0x50, 0xAE, 0x50, 0x8E, 0x58, 0x6E, 0x58, 0x4D, 0x58, 0x0D, 0x01, 0x58, 0x0C, 0x83, 0x60, 0x0C, 0x80, 0xF0, 0x99, 0x92, 0xA1, 0xD3, 0x01, 0xB2, 0x14, 0x01, 0xB1, 0xF4, 0x82, 0xB1, 0xD4, 0xB1, 0xD3, 0xB1, 0xD4, 0x02, 0xB1, 0xD3, 0x03, 0xB9, 0xF4, 0x82, 0xC1, 0xF4, 0xB9, 0xF4, 0xC1, 0xF4, 0x01, 0xC2, 0x14, 0x81, 0xC1, 0xF4, 0xC2, 0x14, 0x04, 0xCA, 0x14, 0x02, 0xCA, 0x15, 0x83, 0xCA, + 0x14, 0xC9, 0xF4, 0xC9, 0xF5, 0xC9, 0xF4, 0x01, 0xC9, 0xF5, 0x02, 0xC1, 0xF4, 0x81, 0xC1, 0xD4, 0xC1, 0xF4, 0x0D, 0xC1, 0xD4, 0x80, 0xC1, 0xB4, 0x08, 0xC1, 0xD4, 0x80, 0xC1, 0xB3, 0x0C, 0xC1, 0xD4, 0x02, 0xC1, 0xF4, 0x80, 0xB9, 0xF5, 0x01, 0xBA, 0x15, 0x02, 0xBA, 0x14, 0x85, 0xBA, 0x35, 0xB2, 0x34, 0xBA, 0x35, 0xB2, 0x14, 0xBA, 0x35, 0xB2, 0x14, 0x01, 0xBA, 0x14, 0x80, 0xB2, 0x14, 0x03, 0xB1, 0xF4, 0x8A, 0xAA, 0x15, 0xA2, 0x36, 0x9A, 0x78, 0x7A, 0x59, 0x51, 0xD9, 0x3A, 0x5C, 0x2A, 0x7D, 0x1A, 0x9E, 0x12, 0xBE, 0x0A, 0xDF, 0x0A, 0xFF, 0x01, 0x02, 0xFF, 0x02, 0x03, 0x1F, 0x06, 0x03, 0x3F, 0x01, 0x03, 0x5F, 0x01, 0x03, 0x3E, 0x91, 0x03, 0x1D, 0x03, 0x3C, 0x03, 0xBB, 0x25, 0x5C, 0x46, 0xFB, 0x36, 0x95, 0x3D, 0xF3, 0x5D, 0xD4, 0x7C, 0xD4, 0x6A, 0xEF, 0x7A, 0x91, 0x82, 0x52, 0x8A, 0x54, 0x82, 0x14, 0x71, 0xB3, 0x69, 0x93, 0x61, 0x93, 0x61, 0xB3, 0x01, 0x59, 0xB3, 0x81, 0x51, 0xB3, 0x51, 0xB2, 0x01, 0x49, 0x92, 0x80, 0x49, 0x91, 0x03, 0x41, 0x71, 0x80, 0x41, 0x70, 0x04, 0x39, 0x50, 0x81, 0x31, 0x2F, 0x31, 0x4F, 0x04, 0x31, 0x2F, 0x81, 0x29, 0x0E, 0x31, 0x2E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x0B, 0x29, 0x2E, 0x09, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x06, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x81, + 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x90, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x31, 0x19, 0x52, 0x19, 0x73, 0x19, 0xD5, 0x22, 0x16, 0x19, 0xD5, 0x19, 0x74, 0x11, 0x32, 0x19, 0x31, 0x18, 0xEF, 0x21, 0x0F, 0x29, 0x2F, 0x29, 0x0E, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x84, 0x19, 0x31, 0x19, 0x52, 0x21, 0x94, 0x19, 0xB4, 0x21, 0xF5, 0x01, 0x2A, 0x16, 0x01, 0x2A, 0x36, 0x81, 0x2A, 0x16, 0x29, 0xF5, 0x02, 0x32, 0x15, 0x8A, 0x2A, 0x15, 0x32, 0x15, 0x2A, 0x15, 0x32, 0x15, 0x29, 0xF5, 0x29, 0xF4, 0x29, 0xF5, 0x31, 0xF5, 0x29, 0xF5, 0x32, 0x15, 0x2A, 0x15, 0x01, 0x31, 0xF5, 0x01, 0x32, 0x15, 0x80, 0x31, 0xF5, 0x0D, 0x32, 0x15, 0x80, 0x2A, 0x15, 0x03, 0x32, 0x15, 0x84, 0x31, 0xF5, 0x29, 0xF5, 0x2A, 0x15, 0x29, 0xF5, 0x2A, 0x15, 0x01, 0x29, 0xF5, 0x83, 0x29, 0xD4, 0x29, 0xF5, 0x29, 0xD4, 0x21, 0xD4, 0x01, 0x21, 0xB3, 0x01, 0x21, 0xB4, 0x8A, 0x19, 0xB4, 0x21, 0xD5, 0x19, 0xB5, 0x11, 0xB5, 0x11, 0xD6, 0x11, 0xB5, 0x09, 0x54, 0x09, 0x33, 0x09, 0x32, 0x09, 0x52, 0x11, 0x52, 0x01, 0x11, 0x53, 0x89, 0x09, 0x53, 0x11, 0x53, 0x11, 0x95, 0x19, 0xD5, 0x19, 0xB5, 0x19, 0x73, 0x19, 0x51, 0x19, 0x10, 0x21, 0x2F, 0x21, 0x0E, 0x01, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x83, 0x29, 0x2E, 0x21, 0x0E, 0x19, 0x2F, 0x11, 0x2E, 0x01, 0x00, 0xED, 0x80, 0x00, 0xEC, 0x01, 0x00, 0xED, 0x80, 0x01, 0x0D, 0x01, 0x01, + 0x2D, 0x01, 0x01, 0x2E, 0x80, 0x01, 0x4E, 0x01, 0x01, 0x2E, 0x8D, 0x01, 0x0E, 0x00, 0xED, 0x00, 0xCD, 0x00, 0xED, 0x09, 0x2E, 0x11, 0x0E, 0x19, 0x0E, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x2E, 0x19, 0x0E, 0x00, 0xAC, 0x00, 0xED, 0x01, 0x2E, 0x02, 0x01, 0x2D, 0x01, 0x01, 0x4E, 0x84, 0x01, 0x2E, 0x01, 0x0D, 0x00, 0xCD, 0x09, 0x0E, 0x19, 0x6F, 0x01, 0x19, 0x90, 0x82, 0x11, 0x90, 0x00, 0xED, 0x01, 0x0D, 0x01, 0x01, 0x0E, 0x84, 0x01, 0x2E, 0x01, 0x0E, 0x01, 0x4F, 0x01, 0x2E, 0x01, 0x0E, 0x01, 0x00, 0xCD, 0x86, 0x11, 0x2E, 0x19, 0x90, 0x09, 0x2E, 0x00, 0xCC, 0x00, 0xED, 0x01, 0x0D, 0x01, 0x2E, 0x03, 0x01, 0x0E, 0x82, 0x01, 0x4E, 0x01, 0x2E, 0x01, 0x4E, 0x01, 0x01, 0x2D, 0x01, 0x01, 0x4E, 0x80, 0x01, 0x4F, 0x04, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x06, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x21, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x04, 0x29, 0x2E, 0x81, 0x21, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x06, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x21, 0x2E, 0x81, 0x21, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x21, 0x0E, 0x29, 0x2E, 0x02, 0x21, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x86, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x83, 0x29, 0x2E, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x89, 0x29, 0x2E, 0x29, + 0x0E, 0x29, 0x2E, 0x21, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x21, 0x0E, 0x29, 0x0E, 0x21, 0x0E, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x88, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x08, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x2F, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x21, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x21, 0x0E, 0x09, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x06, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x11, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x83, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x06, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x05, 0x29, 0x2E, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x09, 0x29, 0x2E, 0x0A, 0x29, 0x0E, 0x06, 0x29, 0x2E, 0x80, 0x29, + 0x2D, 0x05, 0x29, 0x2E, 0x80, 0x31, 0x2E, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x31, 0x0E, 0x08, 0x30, 0xED, 0x1E, 0x30, 0xCD, 0x84, 0x30, 0xED, 0x30, 0xCD, 0x30, 0xED, 0x30, 0xCD, 0x30, 0xED, 0x02, 0x30, 0xCD, 0x07, 0x30, 0xED, 0x24, 0x30, 0xCD, 0x80, 0x30, 0xED, 0x09, 0x30, 0xCD, 0x80, 0x30, 0xED, 0x06, 0x30, 0xCD, 0x03, 0x30, 0xED, 0x09, 0x30, 0xCD, 0x80, 0x30, 0xED, 0x10, 0x30, 0xCD, 0x80, 0x30, 0xED, 0x14, 0x30, 0xCD, 0x80, 0x30, 0xED, 0x11, 0x30, 0xCD, 0x01, 0x30, 0xED, 0x14, 0x30, 0xCD, 0x80, 0x30, 0xED, 0x08, 0x30, 0xCD, 0x80, 0x30, 0xED, 0x03, 0x30, 0xCD, 0x81, 0x30, 0xED, 0x30, 0xCD, 0x06, 0x30, 0xED, 0x0C, 0x38, 0xEE, 0x01, 0x40, 0xEF, 0x81, 0x41, 0x0F, 0x40, 0xEF, 0x01, 0x40, 0xEE, 0x01, 0x48, 0xEF, 0x01, 0x48, 0xCE, 0x8A, 0x50, 0xCE, 0x50, 0xAE, 0x58, 0x8E, 0x60, 0x6D, 0x70, 0xAE, 0x91, 0x92, 0xBA, 0x95, 0xDB, 0x59, 0xD3, 0x38, 0xD3, 0x17, 0xD2, 0xF7, 0x01, 0xD2, 0xD6, 0x03, 0xD2, 0xB6, 0x80, 0xD2, 0x96, 0x01, 0xCA, 0x96, 0x83, 0xD2, 0x96, 0xCA, 0x76, 0xCA, 0x75, 0xD2, 0x75, 0x02, 0xD2, 0x55, 0x80, 0xD2, 0x35, 0x09, 0xCA, 0x14, 0x04, 0xC9, 0xF4, 0x80, 0xC9, 0xF5, 0x05, 0xC9, 0xF4, 0x0B, 0xC1, 0xD4, 0x80, 0xC1, 0xB4, 0x06, 0xC1, 0xD4, 0x81, 0xB9, 0xB3, 0xC1, 0xB4, 0x03, 0xC1, 0xD4, 0x80, 0xC1, 0xD3, 0x07, 0xC1, 0xD4, 0x81, 0xC1, 0xB3, 0xB9, 0xB3, 0x03, 0xB9, 0xD4, 0x81, 0xC1, 0xD4, 0xB9, 0xD4, 0x05, 0xB9, 0xF4, 0x01, 0xBA, 0x14, 0x81, 0xB2, 0x14, 0xBA, 0x14, 0x01, 0xB2, 0x14, 0x01, 0xB9, 0xF4, 0x80, + 0xB1, 0xF4, 0x01, 0xB9, 0xF4, 0x01, 0xB1, 0xF4, 0x8A, 0xAA, 0x15, 0xA2, 0x57, 0x92, 0x79, 0x72, 0x39, 0x4A, 0x1A, 0x3A, 0x7C, 0x2A, 0xBE, 0x1A, 0xBE, 0x12, 0xDF, 0x0A, 0xFF, 0x0B, 0x1F, 0x01, 0x03, 0x1F, 0x03, 0x03, 0x3F, 0x05, 0x03, 0x5F, 0x80, 0x03, 0x7F, 0x01, 0x03, 0x5F, 0x92, 0x03, 0x3E, 0x03, 0x3D, 0x03, 0x3C, 0x03, 0x7B, 0x14, 0xBB, 0x4F, 0x3C, 0x3E, 0xD6, 0x3D, 0xD3, 0x65, 0xB4, 0x7C, 0xB4, 0x6A, 0xAF, 0x82, 0x91, 0x8A, 0x52, 0x92, 0x54, 0x92, 0x55, 0x79, 0xB3, 0x69, 0x93, 0x61, 0x72, 0x59, 0x93, 0x02, 0x59, 0xB3, 0x80, 0x51, 0xB2, 0x01, 0x49, 0x92, 0x80, 0x49, 0x71, 0x01, 0x49, 0x91, 0x01, 0x41, 0x71, 0x01, 0x41, 0x70, 0x84, 0x39, 0x50, 0x39, 0x70, 0x39, 0x50, 0x39, 0x4F, 0x39, 0x2F, 0x05, 0x31, 0x2F, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x90, 0x29, 0x0E, 0x29, 0x2E, 0x21, 0x2E, 0x21, 0x2F, 0x21, 0x30, 0x19, 0x30, 0x19, 0x51, 0x19, 0x52, 0x19, 0x94, 0x19, 0xD5, 0x21, 0xF6, 0x21, 0xD5, 0x19, 0x73, 0x19, 0x11, 0x19, 0x10, 0x18, 0xEF, 0x21, 0x0F, 0x02, 0x29, 0x2F, 0x86, 0x29, 0x0E, 0x21, 0x0E, 0x29, + 0x2E, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x2E, 0x21, 0x0E, 0x03, 0x29, 0x2E, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x87, 0x19, 0x10, 0x19, 0x11, 0x19, 0x31, 0x19, 0x52, 0x19, 0x73, 0x19, 0x93, 0x21, 0x94, 0x21, 0xD4, 0x03, 0x29, 0xD5, 0x01, 0x29, 0xD4, 0x03, 0x29, 0xF4, 0x80, 0x29, 0xD4, 0x02, 0x29, 0xF4, 0x81, 0x29, 0xD4, 0x29, 0xF4, 0x01, 0x29, 0xF5, 0x02, 0x29, 0xF4, 0x80, 0x29, 0xF5, 0x06, 0x29, 0xF4, 0x83, 0x29, 0xF5, 0x29, 0xD5, 0x29, 0xF4, 0x29, 0xD4, 0x02, 0x29, 0xF5, 0x81, 0x29, 0xD4, 0x29, 0xF4, 0x01, 0x29, 0xD4, 0x82, 0x29, 0xF4, 0x29, 0xF5, 0x21, 0xB4, 0x01, 0x29, 0xD4, 0x81, 0x21, 0xB4, 0x29, 0xD4, 0x01, 0x21, 0xD4, 0x80, 0x29, 0xF5, 0x01, 0x29, 0xD4, 0x83, 0x21, 0xB4, 0x29, 0xD4, 0x29, 0xF4, 0x21, 0xF5, 0x01, 0x21, 0xD5, 0x81, 0x11, 0xB5, 0x11, 0xD6, 0x01, 0x11, 0xF6, 0x84, 0x11, 0x95, 0x09, 0x53, 0x09, 0x12, 0x09, 0x32, 0x09, 0x52, 0x01, 0x09, 0x32, 0x8A, 0x11, 0x53, 0x11, 0x94, 0x11, 0xB5, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x52, 0x19, 0x51, 0x21, 0x30, 0x21, 0x2F, 0x29, 0x2E, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x01, 0x21, 0x0E, 0x8A, 0x19, 0x0E, 0x11, 0x2F, 0x09, 0x2E, 0x4B, 0xB8, 0x54, 0x7A, 0x4C, 0x7A, 0x44, 0x7A, 0x44, 0x9B, 0x44, 0xBB, 0x4C, 0xFC, 0x44, 0xDB, 0x02, 0x4D, 0x1C, 0x81, 0x4C, 0xFC, 0x4C, 0xDC, 0x01, 0x44, 0x9B, 0x84, 0x44, 0x7B, 0x4C, 0x7B, 0x43, 0xD8, 0x01, 0x0E, 0x11, 0x0E, 0x01, 0x21, 0x4F, 0x93, 0x21, 0x6F, 0x21, 0x8F, 0x2A, 0x52, 0x54, 0x18, 0x4C, 0x59, 0x44, 0x7A, 0x3C, 0x59, 0x34, 0x59, 0x3C, + 0x9A, 0x34, 0x5A, 0x34, 0x19, 0x2B, 0xB7, 0x22, 0xF5, 0x01, 0x6F, 0x09, 0x4F, 0x09, 0x2F, 0x09, 0x6F, 0x01, 0x4E, 0x22, 0xF5, 0x33, 0xF8, 0x01, 0x3C, 0x39, 0x01, 0x3C, 0x5A, 0x8B, 0x44, 0x7A, 0x44, 0x5A, 0x44, 0x19, 0x64, 0xDC, 0x5C, 0x3A, 0x01, 0x2E, 0x09, 0x2E, 0x01, 0x0D, 0x4C, 0x19, 0x4C, 0x9A, 0x44, 0x7A, 0x3C, 0x7A, 0x02, 0x3C, 0x5A, 0x80, 0x3C, 0x3A, 0x02, 0x44, 0x9B, 0x01, 0x3C, 0x7A, 0x82, 0x34, 0x59, 0x34, 0x39, 0x2C, 0x19, 0x02, 0x29, 0x0E, 0x84, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x12, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x13, 0x29, 0x0E, 0x81, 0x21, 0x0D, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x21, 0x0D, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x83, 0x29, 0x2E, 0x21, 0x0D, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x0E, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x06, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x80, 0x21, 0x0D, 0x08, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, + 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x06, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x07, 0x29, 0x2E, 0x0D, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x2D, 0x04, 0x29, 0x2E, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x03, 0x31, 0x0E, 0x02, 0x31, 0x0D, 0x15, 0x30, 0xED, 0x80, 0x28, 0xED, 0x0A, 0x30, 0xED, 0x80, 0x28, 0xED, 0x67, 0x30, 0xED, 0x02, 0x28, 0xED, 0x49, 0x30, 0xED, 0x80, 0x30, 0xEE, 0x01, 0x30, 0xED, 0x02, 0x30, 0xEE, 0x87, 0x30, 0xED, 0x30, 0xEE, 0x31, 0x0E, 0x30, 0xED, 0x31, 0x0E, 0x30, 0xEE, 0x38, 0xEE, 0x30, 0xEE, 0x02, 0x39, 0x0E, 0x06, 0x39, 0x0F, 0x04, 0x41, 0x0F, 0x01, 0x49, 0x0F, 0x01, 0x48, 0xEF, 0x84, 0x50, 0xEF, 0x58, 0xCF, 0x58, 0xAE, 0x71, 0x0F, 0xB2, 0xB6, 0x01, 0xCB, 0x17, 0x81, 0xD2, 0xF7, + 0xD2, 0xF6, 0x01, 0xD2, 0xD6, 0x03, 0xD2, 0xB5, 0x03, 0xD2, 0x95, 0x03, 0xD2, 0x75, 0x03, 0xD2, 0x55, 0x01, 0xD2, 0x35, 0x80, 0xD2, 0x55, 0x01, 0xD2, 0x35, 0x03, 0xD2, 0x14, 0x01, 0xCA, 0x14, 0x01, 0xC9, 0xF4, 0x80, 0xCA, 0x14, 0x03, 0xC9, 0xF4, 0x80, 0xC9, 0xF5, 0x06, 0xC9, 0xF4, 0x08, 0xC1, 0xD4, 0x80, 0xC1, 0xD5, 0x1B, 0xC1, 0xD4, 0x81, 0xB9, 0xD4, 0xC1, 0xD4, 0x04, 0xB9, 0xD4, 0x03, 0xB9, 0xF4, 0x01, 0xB1, 0xF4, 0x80, 0xB9, 0xF4, 0x01, 0xB1, 0xF4, 0x8E, 0xB9, 0xF4, 0xB1, 0xD4, 0xB9, 0xD4, 0xB9, 0xF4, 0xB1, 0xF4, 0xA9, 0xF4, 0xAA, 0x15, 0xA2, 0x57, 0x92, 0x99, 0x6A, 0x39, 0x4A, 0x1A, 0x3A, 0xBD, 0x2A, 0xFE, 0x1A, 0xFE, 0x13, 0x1F, 0x01, 0x0B, 0x3F, 0x81, 0x03, 0x5F, 0x03, 0x3F, 0x04, 0x03, 0x5F, 0x81, 0x03, 0x7F, 0x03, 0x5F, 0x04, 0x03, 0x7F, 0x92, 0x03, 0x5F, 0x03, 0x5E, 0x03, 0x3D, 0x03, 0x3C, 0x03, 0x5C, 0x0C, 0x3A, 0x4F, 0x1D, 0x46, 0xD7, 0x3D, 0xB3, 0x65, 0x95, 0x74, 0x53, 0x6A, 0x8F, 0x7A, 0x51, 0x8A, 0x53, 0x92, 0x54, 0x92, 0x34, 0x79, 0xB3, 0x71, 0x93, 0x61, 0x93, 0x01, 0x61, 0xB3, 0x82, 0x59, 0xB3, 0x51, 0xB2, 0x51, 0x92, 0x01, 0x49, 0x92, 0x01, 0x49, 0x71, 0x80, 0x41, 0x71, 0x02, 0x41, 0x70, 0x03, 0x39, 0x50, 0x83, 0x39, 0x4F, 0x39, 0x50, 0x31, 0x2F, 0x31, 0x4F, 0x02, 0x31, 0x2F, 0x03, 0x31, 0x2E, 0x85, 0x29, 0x0E, 0x31, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x06, 0x29, 0x0E, 0x05, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, + 0x2E, 0x05, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x06, 0x29, 0x0E, 0x83, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x85, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x2E, 0x21, 0x2E, 0x01, 0x21, 0x2F, 0x84, 0x19, 0x30, 0x19, 0x31, 0x19, 0x52, 0x19, 0x73, 0x19, 0x94, 0x01, 0x21, 0xF6, 0x85, 0x21, 0xB5, 0x19, 0x73, 0x19, 0x11, 0x18, 0xF0, 0x20, 0xEF, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x03, 0x21, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x21, 0x0E, 0x80, 0x21, 0x2E, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x10, 0x02, 0x19, 0x10, 0x01, 0x19, 0x31, 0x80, 0x19, 0x32, 0x02, 0x19, 0x52, 0x82, 0x21, 0x52, 0x21, 0x73, 0x21, 0x72, 0x03, 0x21, 0x73, 0x80, 0x21, 0x93, 0x01, 0x21, 0x73, 0x02, 0x21, 0x93, 0x82, 0x19, 0x72, 0x21, 0x73, 0x21, 0x93, 0x01, 0x19, 0x72, 0x80, 0x21, 0x93, 0x06, 0x21, 0x72, 0x01, 0x21, 0x73, 0x01, 0x21, 0x72, 0x01, 0x21, 0x73, 0x05, 0x21, 0x72, 0x01, 0x21, 0x73, 0x81, 0x19, 0x52, 0x21, 0x73, 0x01, 0x19, 0x73, 0x01, 0x19, 0x72, 0x80, 0x19, 0x73, 0x01, 0x21, 0x93, 0x81, 0x19, 0x72, 0x21, 0x93, 0x01, 0x19, 0x93, 0x84, 0x19, 0x73, 0x19, 0x74, 0x11, 0x74, 0x11, 0xB5, 0x19, 0xF6, 0x01, 0x11, 0xD6, 0x81, 0x11, 0x94, 0x09, 0x53, 0x03, 0x09, 0x32, 0x81, 0x09, 0x53, 0x11, 0xB5, 0x01, 0x19, 0xD5, 0x84, 0x19, 0x94, 0x11, 0x52, 0x19, 0x31, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x21, 0x0E, 0x88, 0x19, + 0x2E, 0x09, 0x2F, 0x01, 0x4F, 0x4C, 0x3A, 0x44, 0x7A, 0x2C, 0x18, 0x24, 0x18, 0x1C, 0x18, 0x13, 0xF8, 0x01, 0x14, 0x18, 0x82, 0x14, 0x38, 0x14, 0x18, 0x1C, 0x19, 0x01, 0x13, 0xF8, 0x85, 0x1C, 0x19, 0x24, 0x39, 0x2C, 0x5A, 0x34, 0x5A, 0x3C, 0x19, 0x01, 0x2E, 0x03, 0x11, 0x0E, 0x8C, 0x11, 0x2E, 0x4B, 0x96, 0x5C, 0x9A, 0x3C, 0x38, 0x2C, 0x18, 0x24, 0x39, 0x1C, 0x39, 0x1C, 0x59, 0x1C, 0x39, 0x24, 0x39, 0x2C, 0x39, 0x33, 0xF9, 0x01, 0xF1, 0x02, 0x01, 0x2E, 0x84, 0x02, 0x11, 0x3C, 0x5A, 0x2C, 0x39, 0x24, 0x19, 0x1B, 0xF8, 0x02, 0x24, 0x19, 0x88, 0x23, 0xF8, 0x34, 0x39, 0x54, 0xBB, 0x33, 0x35, 0x01, 0x0D, 0x00, 0xED, 0x01, 0x4E, 0x54, 0xFC, 0x34, 0x7A, 0x01, 0x24, 0x39, 0x01, 0x1C, 0x19, 0x01, 0x1B, 0xF8, 0x80, 0x1C, 0x19, 0x02, 0x1C, 0x39, 0x81, 0x1C, 0x59, 0x14, 0x18, 0x01, 0x1C, 0x38, 0x84, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x0D, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x21, 0x0D, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x09, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x80, 0x21, 0x0D, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x08, 0x29, 0x0E, 0x03, 0x29, 0x0D, 0x84, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x0D, + 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x85, 0x29, 0x0D, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x0D, 0x1A, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x06, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x0F, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x06, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x0D, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x0A, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x0A, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x0C, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x02, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x06, 0x29, 0x0D, 0x80, 0x31, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x31, 0x2E, 0x02, 0x31, 0x0E, 0x81, 0x31, 0x2E, 0x31, 0x0D, 0x01, 0x31, 0x0E, 0x81, 0x31, 0x0D, 0x31, 0x0E, 0x03, 0x31, 0x0D, 0x80, 0x30, 0xED, 0x08, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x04, 0x30, 0xED, 0x80, 0x31, 0x0D, 0x05, 0x30, 0xED, 0x01, 0x29, 0x0D, 0x01, 0x30, 0xED, 0x15, 0x31, 0x0D, 0x01, 0x30, 0xED, 0x80, 0x31, 0x0D, 0x08, 0x30, + 0xED, 0x07, 0x31, 0x0D, 0x12, 0x30, 0xED, 0x0C, 0x31, 0x0D, 0x01, 0x30, 0xED, 0x0A, 0x31, 0x0D, 0x07, 0x30, 0xED, 0x14, 0x31, 0x0D, 0x80, 0x30, 0xED, 0x05, 0x31, 0x0D, 0x80, 0x31, 0x0E, 0x01, 0x31, 0x0D, 0x81, 0x31, 0x0E, 0x30, 0xED, 0x0B, 0x31, 0x0D, 0x03, 0x30, 0xED, 0x01, 0x31, 0x0D, 0x01, 0x30, 0xED, 0x15, 0x31, 0x0D, 0x82, 0x30, 0xED, 0x31, 0x0D, 0x30, 0xED, 0x02, 0x31, 0x0E, 0x80, 0x30, 0xED, 0x01, 0x31, 0x0E, 0x80, 0x30, 0xEE, 0x05, 0x31, 0x0E, 0x04, 0x39, 0x0E, 0x03, 0x39, 0x0F, 0x03, 0x39, 0x2F, 0x80, 0x41, 0x2F, 0x01, 0x41, 0x0F, 0x01, 0x41, 0x2F, 0x02, 0x49, 0x0F, 0x84, 0x50, 0xEF, 0x58, 0xEE, 0x60, 0xCE, 0x89, 0xB1, 0xC3, 0x37, 0x01, 0xCA, 0xF6, 0x81, 0xD2, 0xF6, 0xCA, 0xB5, 0x01, 0xD2, 0xB5, 0x80, 0xD2, 0x95, 0x03, 0xD2, 0xB5, 0x03, 0xD2, 0x95, 0x01, 0xD2, 0x75, 0x01, 0xD2, 0x55, 0x81, 0xCA, 0x35, 0xD2, 0x55, 0x06, 0xD2, 0x35, 0x80, 0xD2, 0x34, 0x05, 0xD2, 0x14, 0x04, 0xC9, 0xF4, 0x80, 0xC9, 0xF5, 0x01, 0xC9, 0xF4, 0x03, 0xC9, 0xF5, 0x01, 0xC9, 0xD5, 0x01, 0xC9, 0xF5, 0x01, 0xC1, 0xF5, 0x80, 0xC1, 0xD4, 0x02, 0xC1, 0xD5, 0x01, 0xC1, 0xF5, 0x03, 0xC1, 0xD5, 0x05, 0xC1, 0xF5, 0x0E, 0xC1, 0xD4, 0x80, 0xC1, 0xF4, 0x02, 0xC1, 0xD4, 0x02, 0xB9, 0xD4, 0x02, 0xB9, 0xD3, 0x02, 0xB9, 0xD4, 0x01, 0xB9, 0xF4, 0x02, 0xB1, 0xD4, 0x81, 0xB9, 0xD4, 0xB1, 0xD4, 0x02, 0xB9, 0xF4, 0x8B, 0xB1, 0xF4, 0xA9, 0xF4, 0xA2, 0x35, 0x9A, 0x77, 0x8A, 0x99, 0x62, 0x19, 0x4A, 0x5B, 0x3A, 0xFD, 0x23, 0x1E, 0x1B, 0x3F, 0x0B, 0x3F, 0x0B, + 0x5F, 0x05, 0x03, 0x5F, 0x04, 0x03, 0x7F, 0x80, 0x03, 0x9F, 0x03, 0x03, 0x7F, 0x80, 0x03, 0x7E, 0x01, 0x03, 0x5D, 0x8D, 0x03, 0x5C, 0x0C, 0x3B, 0x46, 0xBD, 0x4E, 0xFA, 0x3D, 0xB5, 0x65, 0x75, 0x74, 0x13, 0x6A, 0x6F, 0x82, 0x71, 0x8A, 0x32, 0x9A, 0x54, 0x9A, 0x55, 0x81, 0xD3, 0x71, 0x73, 0x01, 0x61, 0x93, 0x81, 0x61, 0xB3, 0x59, 0xD3, 0x01, 0x51, 0xB2, 0x82, 0x49, 0x92, 0x49, 0x91, 0x49, 0x71, 0x01, 0x49, 0x91, 0x80, 0x41, 0x71, 0x02, 0x41, 0x70, 0x80, 0x39, 0x50, 0x03, 0x39, 0x4F, 0x03, 0x31, 0x2F, 0x81, 0x31, 0x2E, 0x31, 0x2F, 0x02, 0x31, 0x2E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x31, 0x2E, 0x0B, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x06, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x83, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x80, 0x19, 0x30, 0x01, 0x19, 0x51, 0x8B, 0x11, 0x52, 0x19, 0x94, 0x21, 0xF5, 0x22, 0x16, 0x21, 0xD5, 0x19, 0x73, 0x19, 0x11, 0x18, 0xF0, 0x21, 0x10, 0x21, 0x30, 0x29, 0x30, 0x29, 0x0F, 0x02, 0x21, 0x0E, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x21, 0x0E, 0x82, 0x29, 0x2E, 0x21, 0x2E, 0x21, 0x0E, 0x01, 0x21, + 0x2F, 0x80, 0x21, 0x0F, 0x02, 0x19, 0x10, 0x81, 0x18, 0xF0, 0x19, 0x10, 0x01, 0x19, 0x11, 0x80, 0x18, 0xF0, 0x02, 0x19, 0x11, 0x01, 0x19, 0x10, 0x80, 0x19, 0x11, 0x01, 0x19, 0x31, 0x02, 0x19, 0x11, 0x08, 0x19, 0x10, 0x80, 0x19, 0x30, 0x0A, 0x19, 0x10, 0x80, 0x19, 0x11, 0x06, 0x19, 0x10, 0x01, 0x11, 0x10, 0x80, 0x19, 0x11, 0x01, 0x10, 0xF0, 0x81, 0x11, 0x10, 0x11, 0x11, 0x01, 0x11, 0x10, 0x03, 0x11, 0x11, 0x87, 0x10, 0xF1, 0x09, 0x12, 0x11, 0x74, 0x11, 0xB5, 0x19, 0xD6, 0x19, 0xF6, 0x11, 0xD5, 0x11, 0x94, 0x03, 0x09, 0x53, 0x88, 0x11, 0x94, 0x21, 0xF6, 0x19, 0xD5, 0x19, 0xB5, 0x11, 0x73, 0x11, 0x31, 0x19, 0x51, 0x21, 0x50, 0x21, 0x2F, 0x02, 0x21, 0x0E, 0x02, 0x29, 0x2E, 0x8A, 0x21, 0x0E, 0x21, 0x2E, 0x19, 0x2E, 0x09, 0x2E, 0x01, 0x6F, 0x44, 0x5A, 0x34, 0x59, 0x24, 0x39, 0x1C, 0x39, 0x14, 0x19, 0x0C, 0x19, 0x01, 0x0C, 0x39, 0x03, 0x0C, 0x19, 0x02, 0x14, 0x19, 0x8D, 0x1C, 0x19, 0x2C, 0x5A, 0x3C, 0x19, 0x01, 0x6F, 0x09, 0x2E, 0x11, 0x2E, 0x11, 0x0E, 0x11, 0x0D, 0x00, 0xEC, 0x11, 0xAF, 0x4C, 0x38, 0x34, 0x38, 0x24, 0x39, 0x14, 0x18, 0x02, 0x14, 0x19, 0x88, 0x14, 0x39, 0x1C, 0x39, 0x24, 0x39, 0x0A, 0xD4, 0x01, 0xD0, 0x01, 0x6F, 0x01, 0xF1, 0x23, 0xD8, 0x24, 0x18, 0x02, 0x13, 0xF8, 0x8C, 0x1C, 0x19, 0x1B, 0xF9, 0x1B, 0xF8, 0x23, 0xF8, 0x34, 0x19, 0x33, 0xD8, 0x09, 0xD0, 0x01, 0x4E, 0x01, 0x0D, 0x01, 0x8F, 0x3C, 0x59, 0x24, 0x39, 0x24, 0x59, 0x02, 0x14, 0x19, 0x84, 0x1C, 0x39, 0x14, 0x18, 0x14, 0x39, 0x14, 0x59, 0x0C, 0x39, + 0x01, 0x0C, 0x38, 0x80, 0x0C, 0x58, 0x01, 0x0C, 0x38, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2E, 0x29, 0x2D, 0x01, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x29, 0x0D, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x82, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x81, 0x29, 0x0D, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x83, 0x21, 0x0D, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x0E, 0x29, 0x0E, 0x81, 0x29, 0x0D, 0x29, 0x0E, 0x04, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x82, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x8A, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x86, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x03, 0x29, 0x0E, + 0x82, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x0E, 0x06, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x06, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x83, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x0D, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x0D, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x03, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2E, 0x31, 0x2E, 0x29, 0x2E, 0x05, 0x29, 0x0D, 0x01, 0x31, 0x2E, 0x83, 0x29, 0x0D, 0x31, 0x2E, 0x29, 0x0D, 0x31, 0x2E, 0x01, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x05, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x80, 0x28, 0xED, 0x05, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x48, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x17, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x13, 0x31, 0x0D, 0x80, 0x31, 0x0E, 0x07, 0x31, 0x0D, 0x01, 0x31, 0x0E, 0x01, 0x31, 0x0D, 0x01, + 0x31, 0x0E, 0x09, 0x31, 0x0D, 0x80, 0x31, 0x0E, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x0E, 0x16, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x0F, 0x31, 0x0E, 0x01, 0x31, 0x2E, 0x01, 0x39, 0x2F, 0x81, 0x39, 0x0E, 0x39, 0x2E, 0x04, 0x39, 0x2F, 0x80, 0x41, 0x4F, 0x01, 0x41, 0x2F, 0x01, 0x41, 0x0F, 0x86, 0x49, 0x0F, 0x48, 0xEF, 0x50, 0xEE, 0x58, 0xEE, 0x60, 0xCE, 0xA2, 0x95, 0xCB, 0x37, 0x01, 0xCA, 0xF6, 0x02, 0xD2, 0xD5, 0x03, 0xD2, 0xB5, 0x03, 0xD2, 0x95, 0x03, 0xD2, 0x75, 0x04, 0xD2, 0x55, 0x81, 0xD2, 0x35, 0xD2, 0x55, 0x05, 0xD2, 0x35, 0x88, 0xD2, 0x14, 0xD2, 0x15, 0xD2, 0x14, 0xD2, 0x15, 0xD2, 0x14, 0xC9, 0xF4, 0xD2, 0x15, 0xCA, 0x14, 0xC9, 0xF4, 0x09, 0xC9, 0xF5, 0x0E, 0xC1, 0xF5, 0x03, 0xC1, 0xF6, 0x05, 0xC1, 0xF5, 0x0A, 0xC1, 0xD4, 0x04, 0xC1, 0xF4, 0x07, 0xB9, 0xD4, 0x04, 0xB9, 0xF4, 0x82, 0xB9, 0xD4, 0xB9, 0xF4, 0xB1, 0xD4, 0x01, 0xB9, 0xF4, 0x8B, 0xB2, 0x14, 0xA9, 0xF4, 0xA2, 0x35, 0x9A, 0x77, 0x82, 0x99, 0x5A, 0x19, 0x42, 0x7B, 0x3B, 0x1D, 0x23, 0x3E, 0x13, 0x3E, 0x0B, 0x5F, 0x0B, 0x7F, 0x04, 0x03, 0x7F, 0x80, 0x03, 0x9F, 0x04, 0x03, 0x7F, 0x04, 0x03, 0x9F, 0x01, 0x03, 0x7E, 0x94, 0x03, 0x5D, 0x03, 0x7C, 0x04, 0x1B, 0x36, 0x3C, 0x57, 0x3C, 0x3D, 0x95, 0x6D, 0x76, 0x7C, 0x13, 0x6A, 0x4F, 0x82, 0x51, 0x92, 0x32, 0x9A, 0x33, 0x9A, 0x55, 0x81, 0xD4, 0x71, 0x72, 0x69, 0xB3, 0x61, 0x93, 0x61, 0xB3, 0x59, 0xD3, 0x51, 0xB2, 0x51, 0x92, 0x01, 0x49, 0x92, 0x01, 0x49, 0x71, 0x80, 0x49, 0x91, 0x03, 0x41, 0x70, 0x02, 0x39, + 0x50, 0x82, 0x39, 0x4F, 0x39, 0x2F, 0x39, 0x4F, 0x01, 0x31, 0x2F, 0x81, 0x31, 0x4F, 0x31, 0x2F, 0x02, 0x31, 0x2E, 0x83, 0x29, 0x2E, 0x31, 0x2E, 0x29, 0x2E, 0x31, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x81, 0x29, 0x0D, 0x29, 0x2E, 0x0A, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x07, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x81, 0x29, 0x0D, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x04, 0x29, 0x2E, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x03, 0x29, 0x0D, 0x02, 0x29, 0x2E, 0x80, 0x21, 0x2E, 0x01, 0x21, 0x2F, 0x01, 0x19, 0x30, 0x88, 0x11, 0x31, 0x11, 0x32, 0x19, 0xB4, 0x22, 0x15, 0x21, 0xF5, 0x21, 0xB5, 0x21, 0x73, 0x10, 0xF1, 0x19, 0x11, 0x01, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x2E, 0x01, 0x21, 0x0E, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x19, 0x10, 0x02, 0x21, 0x10, 0x01, 0x19, 0x10, 0x81, 0x21, 0x10, 0x19, 0x10, 0x03, 0x21, 0x10, 0x01, 0x19, 0x10, 0x01, 0x21, 0x10, 0x85, 0x19, 0x0F, 0x21, 0x10, 0x19, 0x0F, 0x19, 0x10, 0x21, 0x10, 0x19, 0x0F, 0x07, 0x21, 0x10, 0x82, 0x21, 0x0F, 0x21, 0x10, 0x21, 0x30, 0x04, 0x21, 0x10, 0x01, 0x19, 0x10, 0x80, 0x21, 0x10, 0x0D, 0x19, 0x10, 0x87, 0x19, 0x30, 0x11, 0x10, 0x19, 0x11, 0x10, 0xF1, 0x11, 0x32, 0x11, 0x74, 0x11, 0xB4, 0x19, 0xD6, 0x01, 0x19, 0xD5, 0x81, 0x11, 0x94, 0x11, 0x74, 0x01, 0x11, 0x73, + 0x86, 0x19, 0xD5, 0x21, 0xF6, 0x19, 0xD5, 0x19, 0x94, 0x11, 0x52, 0x19, 0x31, 0x19, 0x10, 0x01, 0x21, 0x2F, 0x8E, 0x21, 0x0E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x21, 0x2E, 0x21, 0x4E, 0x11, 0x2E, 0x09, 0x2E, 0x01, 0x6F, 0x44, 0x5A, 0x2C, 0x39, 0x14, 0x18, 0x14, 0x39, 0x01, 0x0C, 0x39, 0x81, 0x04, 0x38, 0x04, 0x39, 0x03, 0x0C, 0x39, 0x80, 0x0C, 0x19, 0x01, 0x14, 0x39, 0x84, 0x1C, 0x39, 0x24, 0x5A, 0x34, 0x19, 0x01, 0x6F, 0x09, 0x4E, 0x02, 0x11, 0x2E, 0x86, 0x09, 0x2D, 0x00, 0xEC, 0x2B, 0x14, 0x3C, 0x59, 0x24, 0x18, 0x14, 0x19, 0x0C, 0x18, 0x01, 0x0C, 0x19, 0x88, 0x0C, 0x39, 0x14, 0x39, 0x1C, 0x39, 0x1B, 0xD8, 0x02, 0x11, 0x02, 0x31, 0x0B, 0x55, 0x1B, 0xF8, 0x13, 0xF8, 0x01, 0x0B, 0xF8, 0x80, 0x14, 0x19, 0x01, 0x13, 0xF9, 0x90, 0x1C, 0x19, 0x23, 0xF8, 0x34, 0x19, 0x0A, 0x32, 0x01, 0x8F, 0x01, 0x4E, 0x01, 0x2D, 0x01, 0xAF, 0x34, 0x59, 0x1C, 0x18, 0x14, 0x18, 0x14, 0x39, 0x0C, 0x19, 0x0C, 0x18, 0x0C, 0x19, 0x0C, 0x39, 0x0C, 0x18, 0x01, 0x0C, 0x39, 0x02, 0x04, 0x38, 0x81, 0x04, 0x58, 0x04, 0x38, 0x03, 0x29, 0x2D, 0x01, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x04, 0x29, 0x2E, 0x83, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x0D, 0x06, 0x29, 0x0E, 0x04, 0x29, 0x0D, 0x06, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x83, 0x29, 0x0D, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x29, 0x0D, 0x02, 0x29, + 0x0E, 0x81, 0x29, 0x0D, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x03, 0x29, 0x0D, 0x05, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2E, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x0D, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x05, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x84, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x2E, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x84, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x81, 0x29, + 0x2E, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x89, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x2E, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x0D, 0x29, 0x0E, 0x0F, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x04, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x20, 0x29, 0x0D, 0x01, 0x31, 0x0E, 0x01, 0x29, 0x0D, 0x09, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x66, 0x31, 0x0D, 0x0F, 0x29, 0x0D, 0x81, 0x31, 0x0D, 0x31, 0x2E, 0x02, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x13, 0x31, 0x0D, 0x03, 0x31, 0x0E, 0x07, 0x31, 0x0D, 0x01, 0x31, 0x0E, 0x03, 0x29, 0x0D, 0x01, 0x31, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x0A, 0x31, 0x0E, 0x05, 0x31, 0x2E, 0x09, 0x39, 0x2F, 0x80, 0x41, 0x2F, 0x01, 0x41, 0x0F, 0x89, 0x40, 0xEE, 0x48, 0xCE, 0x50, 0xCE, 0x71, 0x2F, 0xC3, 0x37, 0xCB, 0x17, 0xCA, 0xF6, 0xD2, 0xF6, 0xD2, 0xD6, 0xD2, 0xF6, 0x02, 0xD2, 0xD6, 0x01, 0xD2, 0xB5, 0x01, 0xD2, 0x95, 0x01, 0xD2, 0x75, 0x81, 0xD2, 0x55, 0xD2, 0x75, 0x01, 0xD2, 0x55, 0x01, 0xD2, 0x75, 0x04, 0xD2, 0x55, 0x02, 0xD2, 0x35, 0x81, 0xD2, 0x15, 0xD2, 0x35, 0x01, 0xD2, 0x15, 0x80, 0xD2, 0x35, 0x01, 0xD2, 0x15, 0x06, 0xCA, 0x15, 0x01, 0xC9, 0xF5, 0x85, 0xCA, + 0x15, 0xC9, 0xF5, 0xC9, 0xF6, 0xCA, 0x16, 0xC2, 0x16, 0xC1, 0xF6, 0x08, 0xC2, 0x16, 0x80, 0xC2, 0x17, 0x02, 0xC2, 0x16, 0x02, 0xBA, 0x16, 0x80, 0xB9, 0xF6, 0x01, 0xBA, 0x17, 0x01, 0xB9, 0xF6, 0x01, 0xBA, 0x16, 0x81, 0xC1, 0xF6, 0xB9, 0xF6, 0x06, 0xC1, 0xF5, 0x83, 0xC1, 0xD5, 0xC1, 0xF5, 0xB9, 0xD5, 0xC1, 0xF5, 0x02, 0xB9, 0xD5, 0x05, 0xB9, 0xD4, 0x80, 0xB9, 0xF4, 0x01, 0xB9, 0xD4, 0x81, 0xB9, 0xF4, 0xB9, 0xD4, 0x08, 0xB9, 0xF4, 0x8A, 0xBA, 0x14, 0xB2, 0x14, 0xAA, 0x14, 0x9A, 0x35, 0x92, 0x77, 0x7A, 0x98, 0x52, 0x59, 0x42, 0xDC, 0x33, 0x3E, 0x1B, 0x5E, 0x13, 0x7F, 0x01, 0x0B, 0x7F, 0x0A, 0x03, 0x9F, 0x02, 0x03, 0xBF, 0x02, 0x03, 0x9F, 0x80, 0x03, 0x7E, 0x01, 0x03, 0x7D, 0x90, 0x04, 0x1B, 0x25, 0x9B, 0x57, 0x1D, 0x45, 0xB7, 0x6D, 0x77, 0x7C, 0x14, 0x72, 0x6F, 0x8A, 0x51, 0x92, 0x32, 0x9A, 0x13, 0x9A, 0x34, 0x89, 0xF4, 0x79, 0x93, 0x69, 0x93, 0x61, 0xB3, 0x59, 0x92, 0x59, 0xB3, 0x01, 0x51, 0x92, 0x03, 0x49, 0x91, 0x01, 0x41, 0x71, 0x82, 0x41, 0x50, 0x41, 0x70, 0x41, 0x50, 0x02, 0x39, 0x50, 0x01, 0x39, 0x4F, 0x01, 0x31, 0x2F, 0x87, 0x31, 0x4F, 0x31, 0x2E, 0x31, 0x4F, 0x31, 0x2E, 0x31, 0x2F, 0x31, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x83, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x83, 0x29, 0x2E, 0x29, 0x0E, 0x29, + 0x2E, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x81, 0x31, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x87, 0x21, 0x2E, 0x21, 0x2F, 0x21, 0x4F, 0x19, 0x30, 0x10, 0xEF, 0x11, 0x10, 0x11, 0x52, 0x19, 0xD4, 0x01, 0x21, 0xF6, 0x82, 0x21, 0xD5, 0x19, 0x73, 0x11, 0x11, 0x01, 0x18, 0xF0, 0x80, 0x29, 0x30, 0x01, 0x29, 0x2F, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x21, 0x0E, 0x02, 0x29, 0x2F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x09, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x0A, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x30, 0x80, 0x21, 0x10, 0x03, 0x21, 0x30, 0x01, 0x19, 0x10, 0x84, 0x19, 0x31, 0x11, 0x52, 0x11, 0x73, 0x19, 0x94, 0x19, 0xB4, 0x02, 0x19, 0xD5, 0x01, 0x11, 0x94, 0x85, 0x19, 0xB4, 0x19, 0xD5, 0x19, 0xB4, 0x19, 0x72, 0x11, 0x31, 0x19, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0E, 0x29, 0x0E, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x87, 0x21, 0x2E, 0x21, 0x4E, 0x11, 0x4E, 0x01, 0x2E, 0x01, 0x6F, 0x44, 0x9B, 0x24, 0x18, 0x14, 0x18, 0x01, 0x0C, 0x18, 0x80, 0x0C, 0x39, 0x01, 0x04, 0x39, 0x82, + 0x04, 0x19, 0x04, 0x39, 0x0C, 0x5A, 0x01, 0x0C, 0x39, 0x87, 0x0C, 0x3A, 0x0C, 0x39, 0x14, 0x19, 0x1C, 0x39, 0x34, 0x5A, 0x01, 0x6F, 0x09, 0x2E, 0x11, 0x4E, 0x01, 0x19, 0x4E, 0x87, 0x11, 0x4E, 0x09, 0x2D, 0x01, 0x2D, 0x2B, 0x96, 0x34, 0x7A, 0x1C, 0x39, 0x14, 0x39, 0x0B, 0xF8, 0x02, 0x0C, 0x19, 0x84, 0x0C, 0x18, 0x1C, 0x7A, 0x03, 0x76, 0x0B, 0x96, 0x14, 0x18, 0x02, 0x0C, 0x18, 0x01, 0x0C, 0x19, 0x8B, 0x0B, 0xF8, 0x13, 0xF9, 0x1B, 0xF8, 0x2B, 0xF9, 0x2B, 0x77, 0x01, 0x6F, 0x01, 0x6E, 0x01, 0x2E, 0x01, 0x0D, 0x01, 0x8E, 0x34, 0x39, 0x1C, 0x18, 0x01, 0x14, 0x18, 0x81, 0x0C, 0x19, 0x0C, 0x18, 0x01, 0x0C, 0x39, 0x02, 0x04, 0x18, 0x85, 0x04, 0x38, 0x04, 0x59, 0x04, 0x38, 0x04, 0x39, 0x04, 0x38, 0x29, 0x2E, 0x03, 0x29, 0x2D, 0x82, 0x29, 0x0D, 0x29, 0x2E, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x83, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x0E, 0x11, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x0C, 0x29, 0x0D, + 0x03, 0x29, 0x0E, 0x0B, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x0F, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x0D, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0E, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x84, 0x29, 0x2E, 0x29, 0x2D, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x0C, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x0D, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x06, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x86, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x2D, 0x0D, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x04, 0x29, 0x2D, 0x81, 0x29, 0x2E, 0x29, 0x2D, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x2D, 0x1F, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x06, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x07, 0x29, 0x0D, 0x22, 0x31, 0x0D, 0x06, 0x29, 0x0D, 0x25, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x11, 0x31, 0x0D, 0x0D, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x01, 0x31, 0x2D, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x02, 0x31, + 0x0D, 0x01, 0x29, 0x0D, 0x0C, 0x31, 0x0D, 0x02, 0x31, 0x0E, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x05, 0x31, 0x0D, 0x01, 0x31, 0x0E, 0x01, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x31, 0x2E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x31, 0x2D, 0x80, 0x31, 0x2E, 0x01, 0x31, 0x0E, 0x80, 0x31, 0x2E, 0x06, 0x31, 0x0E, 0x07, 0x31, 0x2E, 0x01, 0x31, 0x2F, 0x04, 0x39, 0x2F, 0x80, 0x39, 0x4F, 0x02, 0x39, 0x2F, 0x87, 0x41, 0x2F, 0x41, 0x0E, 0x40, 0xEE, 0x48, 0xCE, 0x48, 0x6C, 0x89, 0xF2, 0xC3, 0x37, 0xCB, 0x17, 0x01, 0xD2, 0xF6, 0x01, 0xD2, 0xD6, 0x80, 0xD2, 0xD5, 0x02, 0xD2, 0xB5, 0x02, 0xD2, 0x95, 0x83, 0xD2, 0x75, 0xD2, 0x95, 0xD2, 0x75, 0xD2, 0x55, 0x01, 0xD2, 0x75, 0x82, 0xD2, 0x55, 0xD2, 0x76, 0xD2, 0x55, 0x03, 0xD2, 0x56, 0x01, 0xCA, 0x56, 0x82, 0xCA, 0x36, 0xCA, 0x35, 0xCA, 0x36, 0x02, 0xCA, 0x15, 0x02, 0xCA, 0x16, 0x03, 0xCA, 0x36, 0x03, 0xC2, 0x16, 0x01, 0xBA, 0x16, 0x02, 0xBA, 0x17, 0x01, 0xB2, 0x17, 0x8B, 0xB1, 0xF7, 0xB2, 0x18, 0xA9, 0xF7, 0xB2, 0x17, 0xAA, 0x17, 0xB2, 0x17, 0xAA, 0x17, 0xB2, 0x17, 0xAA, 0x17, 0xB2, 0x18, 0xAA, 0x17, 0xAA, 0x18, 0x01, 0xAA, 0x17, 0x85, 0xA9, 0xF7, 0xAA, 0x17, 0xA1, 0xF7, 0xA9, 0xF8, 0xA1, 0xD7, 0xA9, 0xF8, 0x02, 0xA9, 0xF7, 0x02, 0xB1, 0xF7, 0x80, 0xB1, 0xF6, 0x06, 0xBA, 0x16, 0x05, 0xB9, 0xF5, 0x80, 0xB9, 0xD4, 0x01, 0xB9, 0xF4, 0x03, 0xB9, 0xF5, 0x0B, 0xB9, 0xF4, 0x8E, 0xBA, 0x14, 0xB2, 0x15, 0xA2, 0x15, 0x9A, 0x35, 0x82, 0x76, 0x72, 0xB8, 0x52, 0xB9, 0x43, 0x3C, + 0x2B, 0x7E, 0x1B, 0x7E, 0x13, 0x9F, 0x0B, 0x9F, 0x03, 0x9F, 0x03, 0xBF, 0x03, 0x9F, 0x01, 0x03, 0xBF, 0x80, 0x03, 0x9F, 0x05, 0x03, 0xBF, 0x80, 0x03, 0xDF, 0x04, 0x03, 0xBF, 0x80, 0x03, 0x9E, 0x01, 0x03, 0x9D, 0x90, 0x04, 0x1C, 0x15, 0x1A, 0x56, 0xDE, 0x55, 0xFA, 0x6D, 0x58, 0x84, 0x35, 0x72, 0x50, 0x8A, 0x52, 0x92, 0x12, 0x9A, 0x13, 0x9A, 0x34, 0x91, 0xF4, 0x79, 0x93, 0x69, 0x92, 0x61, 0x93, 0x61, 0xB3, 0x59, 0xB2, 0x02, 0x51, 0x92, 0x02, 0x49, 0x91, 0x81, 0x49, 0x71, 0x49, 0x91, 0x01, 0x41, 0x70, 0x01, 0x41, 0x50, 0x85, 0x39, 0x4F, 0x39, 0x50, 0x39, 0x4F, 0x39, 0x2F, 0x31, 0x2F, 0x39, 0x4F, 0x01, 0x31, 0x2E, 0x85, 0x31, 0x4E, 0x31, 0x2E, 0x31, 0x0E, 0x31, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x05, 0x29, 0x0E, 0x04, 0x29, 0x0D, 0x83, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x07, 0x29, 0x0D, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x84, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x2E, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0E, 0x01, 0x21, 0x2E, 0x8F, 0x21, 0x2F, 0x19, 0x2F, 0x19, 0x0F, 0x11, 0x10, 0x11, 0x30, 0x11, 0x72, 0x19, 0xB4, 0x21, 0xF6, 0x21, 0xF5, 0x21, 0xD5, 0x19, 0x73, 0x11, 0x11, 0x19, 0x10, 0x21, 0x10, 0x21, + 0x2F, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x82, 0x29, 0x2E, 0x21, 0x0D, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x86, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x21, 0x0E, 0x21, 0x0F, 0x29, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x0E, 0x80, 0x21, 0x2E, 0x02, 0x21, 0x0E, 0x02, 0x21, 0x2E, 0x82, 0x21, 0x0E, 0x21, 0x2E, 0x29, 0x2F, 0x01, 0x21, 0x0E, 0x85, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x2E, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2F, 0x02, 0x21, 0x0E, 0x82, 0x29, 0x0F, 0x21, 0x0F, 0x29, 0x2F, 0x04, 0x21, 0x0E, 0x82, 0x29, 0x2F, 0x29, 0x0E, 0x21, 0x0E, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0E, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x30, 0x01, 0x19, 0x30, 0x82, 0x19, 0x51, 0x11, 0x52, 0x11, 0x73, 0x02, 0x19, 0xB4, 0x85, 0x19, 0x94, 0x19, 0xB4, 0x19, 0x93, 0x19, 0x73, 0x11, 0x52, 0x11, 0x31, 0x01, 0x19, 0x30, 0x82, 0x21, 0x2F, 0x21, 0x2E, 0x21, 0x0E, 0x05, 0x29, 0x0D, 0x89, 0x21, 0x0E, 0x19, 0x2E, 0x11, 0x4E, 0x01, 0x0E, 0x01, 0x6F, 0x4C, 0xBB, 0x1B, 0xF8, 0x14, 0x39, 0x0C, 0x39, 0x04, 0x18, 0x02, 0x04, 0x39, 0x8D, 0x04, 0x19, 0x04, 0x39, 0x0C, 0x39, 0x04, 0x19, 0x14, 0x5A, 0x0C, 0x19, 0x0C, 0x39, 0x14, 0x39, 0x24, 0x59, 0x34, 0x39, 0x01, 0x6E, 0x09, 0x4E, 0x11, 0x2D, 0x19, 0x4E, 0x01, 0x19, 0x4D, 0x86, 0x11, 0x2D, 0x01, 0x0C, 0x01, 0xAF, 0x34, 0x39, 0x24, 0x5A, 0x14, + 0x39, 0x0C, 0x19, 0x01, 0x0C, 0x39, 0x82, 0x0C, 0x19, 0x0C, 0x18, 0x0C, 0x38, 0x01, 0x0C, 0x18, 0x01, 0x04, 0x18, 0x92, 0x0C, 0x18, 0x04, 0x18, 0x0C, 0x18, 0x0C, 0x19, 0x14, 0x19, 0x13, 0xF8, 0x1B, 0xF8, 0x3C, 0x39, 0x01, 0xD0, 0x01, 0x2E, 0x09, 0x4E, 0x09, 0x2E, 0x01, 0x0D, 0x01, 0x6E, 0x34, 0x59, 0x1C, 0x18, 0x1C, 0x38, 0x14, 0x39, 0x0C, 0x18, 0x02, 0x0C, 0x39, 0x01, 0x04, 0x18, 0x01, 0x04, 0x39, 0x01, 0x04, 0x38, 0x82, 0x04, 0x59, 0x04, 0x38, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x83, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x2E, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x81, 0x29, 0x0D, 0x29, 0x0E, 0x0B, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x15, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x0F, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x17, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x0E, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x80, + 0x29, 0x2E, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x0A, 0x29, 0x0E, 0x84, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x06, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x0D, 0x07, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x0D, 0x09, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x01, 0x29, 0x2D, 0x03, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x07, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x03, 0x29, 0x2E, 0x13, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x0E, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x10, 0x29, 0x0D, 0x0B, 0x31, 0x0D, 0x05, 0x29, 0x0D, 0x03, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x05, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x03, 0x31, 0x0D, 0x05, 0x29, 0x0D, 0x0A, 0x31, 0x0D, 0x22, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x1F, 0x29, 0x0D, 0x03, 0x31, 0x0D, 0x08, 0x29, 0x0D, 0x03, 0x31, 0x2D, 0x03, 0x29, 0x0D, 0x06, 0x29, 0x2D, 0x03, 0x31, 0x2D, 0x81, 0x31, 0x2E, 0x31, 0x0E, 0x01, 0x31, 0x2E, 0x01, 0x31, 0x0D, 0x01, 0x31, 0x0E, 0x0A, 0x31, 0x2E, 0x81, 0x39, 0x2F, 0x39, 0x2E, 0x02, 0x39, 0x2F, 0x80, 0x39, 0x4F, 0x02, 0x39, 0x2F, 0x80, 0x39, 0x2E, 0x01, 0x41, 0x0E, 0x84, 0x48, 0xCD, 0x58, 0xCE, 0xAA, 0xB5, 0xCB, 0x58, + 0xCA, 0xF6, 0x02, 0xD2, 0xF6, 0x80, 0xD2, 0xD6, 0x01, 0xD2, 0xB5, 0x03, 0xD2, 0x95, 0x07, 0xD2, 0x75, 0x03, 0xD2, 0x76, 0x01, 0xCA, 0x76, 0x05, 0xCA, 0x56, 0x80, 0xC2, 0x56, 0x03, 0xC2, 0x57, 0x81, 0xC2, 0x37, 0xC2, 0x57, 0x01, 0xBA, 0x57, 0x80, 0xBA, 0x37, 0x01, 0xB2, 0x37, 0x01, 0xAA, 0x17, 0x87, 0xAA, 0x18, 0xA1, 0xF7, 0xA1, 0xF8, 0xA1, 0xD7, 0x99, 0xF8, 0x91, 0xD7, 0x89, 0xB7, 0x89, 0x97, 0x04, 0x81, 0x97, 0x80, 0x81, 0xB8, 0x01, 0x81, 0x98, 0x80, 0x81, 0x97, 0x06, 0x81, 0x98, 0x01, 0x79, 0x98, 0x82, 0x81, 0x98, 0x81, 0x97, 0x81, 0xB8, 0x01, 0x89, 0xB7, 0x80, 0x91, 0xB7, 0x01, 0x99, 0xF7, 0x82, 0xA2, 0x18, 0xAA, 0x17, 0xAA, 0x38, 0x04, 0xB2, 0x37, 0x03, 0xB2, 0x16, 0x80, 0xB2, 0x15, 0x04, 0xB1, 0xF5, 0x80, 0xB1, 0xF4, 0x0C, 0xB9, 0xF4, 0x89, 0xB2, 0x15, 0xAA, 0x15, 0xA2, 0x15, 0x92, 0x56, 0x82, 0x97, 0x62, 0xB8, 0x4B, 0x3A, 0x43, 0x9D, 0x23, 0x9D, 0x13, 0x9E, 0x01, 0x0B, 0xBF, 0x80, 0x03, 0xBF, 0x01, 0x03, 0xDF, 0x01, 0x03, 0xBF, 0x01, 0x03, 0xDF, 0x80, 0x03, 0xBF, 0x04, 0x03, 0xDF, 0x04, 0x03, 0xBF, 0x01, 0x03, 0xBE, 0x92, 0x03, 0xBD, 0x04, 0x1C, 0x0C, 0xBA, 0x3E, 0x3D, 0x5E, 0x7C, 0x75, 0xBA, 0x8C, 0x76, 0x7A, 0x70, 0x92, 0x72, 0x9A, 0x33, 0x9A, 0x13, 0x9A, 0x34, 0x92, 0x14, 0x79, 0x93, 0x69, 0x72, 0x69, 0xB3, 0x61, 0xB3, 0x59, 0xB3, 0x59, 0x92, 0x02, 0x51, 0x92, 0x01, 0x49, 0x91, 0x01, 0x49, 0x71, 0x01, 0x41, 0x70, 0x81, 0x41, 0x50, 0x39, 0x50, 0x02, 0x39, 0x4F, 0x80, 0x39, 0x2F, 0x01, 0x31, 0x2F, 0x01, 0x31, + 0x2E, 0x80, 0x31, 0x4E, 0x03, 0x31, 0x2E, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x88, 0x29, 0x2E, 0x29, 0x0E, 0x31, 0x0E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x2E, 0x29, 0x0D, 0x02, 0x29, 0x2E, 0x82, 0x29, 0x0D, 0x29, 0x2E, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x83, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x82, 0x29, 0x0D, 0x29, 0x2E, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x84, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x86, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x21, 0x0D, 0x21, 0x0E, 0x21, 0x2E, 0x01, 0x21, 0x2F, 0x84, 0x19, 0x2F, 0x11, 0x0F, 0x11, 0x30, 0x19, 0x72, 0x19, 0xB4, 0x01, 0x21, 0xF5, 0x85, 0x21, 0xB4, 0x19, 0x53, 0x19, 0x11, 0x19, 0x10, 0x21, 0x30, 0x21, 0x2F, 0x02, 0x21, 0x0E, 0x85, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x2E, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x04, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x82, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x02, 0x29, 0x2E, 0x82, 0x21, 0x0E, 0x29, 0x2E, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x09, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x21, + 0x2E, 0x29, 0x2F, 0x02, 0x21, 0x2E, 0x86, 0x21, 0x0E, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x19, 0x0F, 0x82, 0x19, 0x10, 0x11, 0x31, 0x19, 0x72, 0x02, 0x19, 0x93, 0x01, 0x19, 0x72, 0x82, 0x19, 0x52, 0x19, 0x31, 0x19, 0x30, 0x01, 0x19, 0x2F, 0x82, 0x21, 0x4F, 0x21, 0x2E, 0x21, 0x0D, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x99, 0x19, 0x2E, 0x11, 0x0E, 0x01, 0x0E, 0x01, 0x6F, 0x44, 0xBB, 0x24, 0x18, 0x14, 0x59, 0x0C, 0x39, 0x04, 0x38, 0x04, 0x39, 0x04, 0x18, 0x04, 0x38, 0x04, 0x19, 0x04, 0x39, 0x04, 0x19, 0x0C, 0x39, 0x0C, 0x19, 0x14, 0x39, 0x14, 0x59, 0x1C, 0x59, 0x24, 0x59, 0x3C, 0x59, 0x01, 0x6E, 0x11, 0x4E, 0x19, 0x4D, 0x19, 0x2D, 0x01, 0x19, 0x4E, 0x85, 0x19, 0x4D, 0x09, 0x0C, 0x01, 0x0D, 0x0A, 0x72, 0x34, 0x9A, 0x1C, 0x59, 0x03, 0x0C, 0x19, 0x01, 0x04, 0x18, 0x82, 0x03, 0xF8, 0x04, 0x18, 0x04, 0x38, 0x02, 0x04, 0x18, 0x01, 0x03, 0xF8, 0x85, 0x14, 0x19, 0x1B, 0xF8, 0x2B, 0xF9, 0x12, 0x72, 0x01, 0x0D, 0x09, 0x2D, 0x01, 0x11, 0x4E, 0x91, 0x09, 0x2D, 0x01, 0xAF, 0x44, 0x7A, 0x34, 0x79, 0x24, 0x59, 0x24, 0x39, 0x1C, 0x59, 0x1C, 0x7A, 0x14, 0x39, 0x0C, 0x18, 0x0C, 0x39, 0x04, 0x39, 0x04, 0x18, 0x04, 0x38, 0x04, 0x18, 0x04, 0x39, 0x04, 0x18, 0x04, 0x38, 0x07, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x0F, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x15, 0x29, + 0x0D, 0x80, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0B, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x24, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0E, 0x07, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x05, 0x29, 0x2D, 0x03, 0x29, 0x2E, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x2E, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x2E, 0x03, 0x29, 0x2D, 0x01, 0x29, 0x2E, 0x13, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x0C, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x0F, 0x29, 0x0D, 0x05, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x07, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x05, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x05, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x07, 0x29, 0x0D, 0x03, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x22, 0x29, + 0x0D, 0x05, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x19, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x0C, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x03, 0x29, 0x0D, 0x04, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x02, 0x31, 0x2D, 0x86, 0x31, 0x2E, 0x29, 0x0D, 0x31, 0x2D, 0x31, 0x0D, 0x31, 0x2E, 0x31, 0x0D, 0x31, 0x0E, 0x04, 0x31, 0x2E, 0x01, 0x39, 0x2E, 0x04, 0x31, 0x2E, 0x01, 0x39, 0x2E, 0x80, 0x39, 0x2F, 0x04, 0x39, 0x2E, 0x89, 0x41, 0x2E, 0x41, 0x0E, 0x40, 0xEE, 0x48, 0xCD, 0x69, 0x2F, 0xB3, 0x16, 0xCB, 0x17, 0xCA, 0xF6, 0xD2, 0xF6, 0xD2, 0xD5, 0x03, 0xD2, 0xB5, 0x01, 0xD2, 0x95, 0x81, 0xCA, 0x95, 0xD2, 0x75, 0x01, 0xD2, 0x95, 0x81, 0xD2, 0x75, 0xCA, 0x75, 0x02, 0xD2, 0x76, 0x82, 0xD2, 0x96, 0xD2, 0x76, 0xCA, 0x76, 0x03, 0xCA, 0x77, 0x02, 0xC2, 0x77, 0x01, 0xC2, 0x78, 0x80, 0xBA, 0x98, 0x01, 0xBA, 0x99, 0x80, 0xBA, 0xB9, 0x01, 0xB2, 0xBA, 0x82, 0xB2, 0x9A, 0xB2, 0xBA, 0xAA, 0x9A, 0x01, 0xA2, 0x7A, 0x01, 0x9A, 0x59, 0x87, 0x92, 0x19, 0x89, 0xF9, 0x81, 0xD8, 0x81, 0xD9, 0x81, 0xD8, 0x81, 0xB8, 0x79, 0x98, 0x71, 0x98, 0x01, 0x69, 0x78, 0x04, 0x61, 0x58, 0x01, 0x61, 0x78, 0x82, 0x61, 0x58, 0x61, 0x59, 0x59, 0x58, 0x04, 0x59, 0x59, 0x04, 0x59, 0x79, 0x01, 0x61, 0x78, 0x80, 0x69, 0x78, 0x01, 0x69, 0x98, 0x81, 0x71, 0xB8, 0x79, 0xB8, 0x01, 0x81, 0xF8, 0x82, 0x8A, 0x19, 0x92, 0x39, 0x9A, 0x7A, 0x01, 0x9A, 0x79, 0x01, 0x9A, 0x38, 0x81, 0x9A, 0x17, 0xA2, 0x37, 0x01, 0xAA, 0x37, 0x83, 0xAA, 0x36, 0xB2, 0x36, 0xB2, 0x16, 0xB2, 0x15, 0x06, 0xB1, 0xF5, + 0x80, 0xB1, 0xF4, 0x03, 0xB9, 0xF4, 0x01, 0xB1, 0xF4, 0x80, 0xB1, 0xF5, 0x01, 0xAA, 0x15, 0x87, 0x9A, 0x35, 0x8A, 0x56, 0x72, 0x97, 0x5A, 0xF9, 0x4B, 0x9B, 0x33, 0xDD, 0x23, 0xBD, 0x13, 0xDE, 0x01, 0x0B, 0xDF, 0x01, 0x03, 0xDF, 0x03, 0x03, 0xFF, 0x81, 0x03, 0xDF, 0x03, 0xFF, 0x06, 0x03, 0xDF, 0x01, 0x03, 0xBF, 0x81, 0x03, 0xDF, 0x03, 0xDE, 0x01, 0x03, 0xBE, 0x8F, 0x04, 0x1D, 0x0C, 0xBB, 0x2D, 0xBC, 0x6E, 0xBE, 0x75, 0xBB, 0x8C, 0x97, 0x7A, 0x71, 0x92, 0x72, 0x9A, 0x12, 0x9A, 0x13, 0x9A, 0x14, 0x9A, 0x35, 0x81, 0xD3, 0x69, 0x72, 0x69, 0xB3, 0x61, 0x92, 0x01, 0x59, 0x92, 0x02, 0x51, 0x92, 0x82, 0x49, 0x91, 0x49, 0x71, 0x49, 0x91, 0x01, 0x41, 0x70, 0x82, 0x41, 0x50, 0x41, 0x70, 0x41, 0x50, 0x03, 0x39, 0x4F, 0x01, 0x39, 0x2F, 0x80, 0x31, 0x2F, 0x04, 0x31, 0x2E, 0x81, 0x31, 0x0E, 0x31, 0x2E, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x81, 0x31, 0x0E, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x1A, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x0D, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x0C, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2E, 0x01, 0x21, 0x2E, 0x85, 0x21, 0x2F, 0x19, 0x2F, 0x11, 0x0F, 0x11, 0x31, 0x19, 0x72, 0x19, 0xB4, 0x01, 0x21, 0xD5, 0x83, 0x21, 0xB4, 0x19, 0x73, 0x19, 0x11, 0x19, 0x10, 0x02, 0x21, 0x0F, 0x88, 0x21, 0x2E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x2E, 0x29, 0x0D, 0x21, 0x0D, 0x29, 0x2D, 0x04, 0x29, + 0x0D, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0D, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x85, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x2E, 0x21, 0x0E, 0x21, 0x2E, 0x01, 0x29, 0x2E, 0x03, 0x21, 0x0E, 0x03, 0x21, 0x2E, 0x01, 0x21, 0x0F, 0x84, 0x19, 0x0F, 0x19, 0x10, 0x19, 0x30, 0x19, 0x31, 0x11, 0x31, 0x01, 0x19, 0x31, 0x02, 0x19, 0x10, 0x84, 0x19, 0x0F, 0x21, 0x0F, 0x21, 0x4F, 0x21, 0x2E, 0x21, 0x0D, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x86, 0x19, 0x2E, 0x11, 0x0E, 0x01, 0x0E, 0x01, 0x6F, 0x44, 0x9B, 0x24, 0x38, 0x14, 0x38, 0x01, 0x0C, 0x38, 0x02, 0x04, 0x38, 0x01, 0x0C, 0x39, 0x96, 0x14, 0x39, 0x1C, 0x39, 0x24, 0x59, 0x24, 0x39, 0x2C, 0x59, 0x2C, 0x38, 0x34, 0x59, 0x3B, 0xF8, 0x01, 0x6E, 0x11, 0x4D, 0x11, 0x0D, 0x19, 0x2D, 0x19, 0x4D, 0x19, 0x2D, 0x19, 0x6E, 0x11, 0x4D, 0x01, 0x0D, 0x01, 0x4D, 0x1B, 0x56, 0x34, 0x9B, 0x14, 0x19, 0x0C, 0x39, 0x0C, 0x19, 0x01, 0x04, 0x19, 0x04, 0x04, 0x18, 0x81, 0x0C, 0x39, 0x04, 0x18, 0x01, 0x0C, 0x18, 0x8C, 0x14, 0x19, 0x24, 0x19, 0x2B, 0x97, 0x01, 0x4E, 0x01, 0x0D, 0x11, 0x2D, 0x11, 0x2E, 0x11, 0x2D, 0x11, 0x4E, 0x09, 0x6F, 0x3B, 0x96, 0x3B, 0xF8, 0x3C, 0x18, 0x01, 0x34, 0x18, 0x01, 0x2C, 0x39, 0x81, 0x1C, 0x39, 0x14, 0x39, 0x03, 0x04, 0x39, 0x02, 0x04, 0x38, 0x02, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x01, + 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x11, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x15, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x21, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x1E, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x83, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x2E, 0x29, 0x2D, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x1B, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x05, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x15, 0x29, 0x2D, 0x01, 0x29, 0x2E, 0x1A, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x1A, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x07, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x09, 0x29, 0x2D, 0x03, 0x31, 0x2D, 0x34, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x0D, 0x29, 0x0D, 0x03, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x08, 0x29, 0x0D, 0x10, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x06, 0x29, + 0x0D, 0x01, 0x31, 0x0D, 0x05, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x06, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x81, 0x29, 0x2E, 0x29, 0x2D, 0x01, 0x31, 0x2D, 0x82, 0x31, 0x0D, 0x31, 0x0E, 0x31, 0x0D, 0x0A, 0x31, 0x2E, 0x01, 0x39, 0x2E, 0x80, 0x39, 0x4F, 0x02, 0x39, 0x2E, 0x02, 0x39, 0x0E, 0x86, 0x41, 0x0E, 0x40, 0xCD, 0x48, 0xAD, 0x79, 0x90, 0xC3, 0x37, 0xC2, 0xF6, 0xCA, 0xF6, 0x01, 0xD2, 0xD6, 0x03, 0xD2, 0xB5, 0x83, 0xCA, 0x95, 0xD2, 0xB5, 0xCA, 0x95, 0xD2, 0x95, 0x05, 0xD2, 0x96, 0x04, 0xCA, 0x97, 0x80, 0xC2, 0x97, 0x01, 0xC2, 0x98, 0x8C, 0xBA, 0x98, 0xBA, 0x78, 0xB2, 0x99, 0xB2, 0x79, 0xAA, 0x79, 0xA2, 0x59, 0x92, 0x39, 0x81, 0xF8, 0x79, 0xD8, 0x69, 0x97, 0x61, 0x57, 0x51, 0x16, 0x48, 0xF6, 0x02, 0x40, 0xD6, 0x01, 0x38, 0xD6, 0x02, 0x40, 0xF7, 0x80, 0x41, 0x17, 0x04, 0x41, 0x18, 0x03, 0x41, 0x39, 0x08, 0x39, 0x39, 0x82, 0x39, 0x19, 0x39, 0x3A, 0x39, 0x39, 0x03, 0x39, 0x3A, 0x04, 0x39, 0x39, 0x84, 0x41, 0x39, 0x41, 0x38, 0x41, 0x58, 0x41, 0x38, 0x49, 0x38, 0x02, 0x49, 0x58, 0x01, 0x41, 0x17, 0x85, 0x51, 0x57, 0x59, 0x77, 0x61, 0x97, 0x69, 0xB7, 0x82, 0x18, 0x8A, 0x18, 0x01, 0x9A, 0x58, 0x82, 0xA2, 0x77, 0xA2, 0x57, 0xAA, 0x56, 0x02, 0xAA, 0x36, 0x80, 0xAA, 0x15, 0x02, 0xA9, 0xF5, 0x06, 0xB1, 0xF5, 0x8C, 0xA9, 0xF5, 0xA1, 0xF5, 0x9A, 0x15, 0x92, 0x36, 0x82, 0x77, 0x6A, 0xB8, 0x53, 0x39, 0x43, 0xFC, 0x34, 0x1D, 0x1B, 0xDE, 0x13, 0xFF, 0x0B, 0xFF, 0x0C, 0x1F, + 0x0D, 0x03, 0xFF, 0x03, 0x03, 0xDF, 0x02, 0x03, 0xDE, 0x8F, 0x04, 0x3D, 0x0C, 0xBC, 0x25, 0x7C, 0x66, 0x7F, 0x7D, 0xFC, 0x94, 0xB8, 0x7A, 0x91, 0x92, 0x73, 0x9A, 0x33, 0xA2, 0x13, 0xA2, 0x34, 0x9A, 0x35, 0x89, 0xD4, 0x71, 0x72, 0x69, 0x92, 0x61, 0xB3, 0x01, 0x59, 0x92, 0x02, 0x51, 0x92, 0x81, 0x49, 0x91, 0x49, 0x71, 0x01, 0x49, 0x91, 0x01, 0x41, 0x70, 0x01, 0x41, 0x50, 0x80, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x82, 0x39, 0x2F, 0x39, 0x4F, 0x39, 0x2F, 0x03, 0x31, 0x2E, 0x03, 0x31, 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x29, 0x0E, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0A, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x09, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x87, 0x29, 0x2E, 0x29, 0x4F, 0x21, 0x4F, 0x19, 0x0F, 0x11, 0x0F, 0x11, 0x30, 0x11, 0x52, 0x19, 0xB4, 0x01, 0x21, 0xD5, 0x84, 0x21, 0xD4, 0x19, 0x72, 0x19, 0x31, 0x19, 0x10, 0x21, 0x30, 0x01, 0x21, 0x2F, 0x86, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, + 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x81, 0x21, 0x0D, 0x21, 0x0E, 0x02, 0x29, 0x2E, 0x82, 0x29, 0x0D, 0x29, 0x2E, 0x21, 0x0D, 0x01, 0x21, 0x2E, 0x01, 0x29, 0x2E, 0x01, 0x21, 0x2E, 0x82, 0x21, 0x0E, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x19, 0x0F, 0x01, 0x21, 0x0F, 0x83, 0x18, 0xEF, 0x21, 0x0F, 0x21, 0x2F, 0x21, 0x0E, 0x01, 0x21, 0x2E, 0x07, 0x29, 0x0D, 0x94, 0x29, 0x2D, 0x29, 0x2E, 0x19, 0x2E, 0x11, 0x2E, 0x00, 0xED, 0x01, 0x90, 0x44, 0xBB, 0x1B, 0xF8, 0x14, 0x38, 0x0C, 0x38, 0x0C, 0x18, 0x04, 0x18, 0x04, 0x38, 0x0C, 0x38, 0x0C, 0x18, 0x03, 0x76, 0x02, 0x51, 0x01, 0xF0, 0x02, 0x10, 0x01, 0xEF, 0x01, 0xCF, 0x01, 0x01, 0xAE, 0x82, 0x01, 0x8E, 0x11, 0x6E, 0x11, 0x2D, 0x02, 0x19, 0x2D, 0x88, 0x19, 0x4D, 0x21, 0x4E, 0x19, 0x6E, 0x09, 0x0D, 0x01, 0x0D, 0x01, 0x8F, 0x34, 0x39, 0x24, 0x59, 0x14, 0x19, 0x01, 0x0C, 0x39, 0x01, 0x04, 0x19, 0x83, 0x04, 0x39, 0x04, 0x18, 0x03, 0xF8, 0x04, 0x38, 0x01, 0x04, 0x18, 0x88, 0x0C, 0x18, 0x14, 0x39, 0x13, 0xF8, 0x34, 0x3A, 0x01, 0xD0, 0x01, 0x2D, 0x11, 0x2D, 0x19, 0x2E, 0x19, 0x4E, 0x01, 0x19, 0x2D, 0x84, 0x10, 0xED, 0x00, 0x8B, 0x00, 0xAB, 0x00, 0xCB, 0x00, 0xCC, 0x01, 0x00, 0xEC, 0x86, 0x01, 0x2D, 0x01, 0xF0, 0x1C, 0x18, 0x0C, 0x39, 0x0C, 0x59, 0x04, 0x18, 0x04, 0x39, 0x02, 0x04, 0x38, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, + 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x2D, 0x1B, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0B, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0D, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x0A, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0F, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x65, 0x29, 0x2D, 0x48, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x07, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x0D, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x13, 0x29, 0x0D, 0x80, 0x29, 0x2D, + 0x01, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x08, 0x29, 0x2D, 0x83, 0x29, 0x0D, 0x31, 0x2D, 0x29, 0x0D, 0x31, 0x2D, 0x02, 0x31, 0x0E, 0x09, 0x31, 0x2E, 0x04, 0x39, 0x2E, 0x02, 0x39, 0x0E, 0x86, 0x40, 0xEE, 0x40, 0xCD, 0x48, 0x8C, 0x92, 0x33, 0xC3, 0x37, 0xCB, 0x16, 0xCA, 0xF6, 0x02, 0xD2, 0xD6, 0x02, 0xD2, 0xB5, 0x01, 0xCA, 0xB5, 0x02, 0xD2, 0xB6, 0x01, 0xCA, 0x96, 0x02, 0xCA, 0x97, 0x80, 0xCA, 0xB8, 0x02, 0xC2, 0xB8, 0x81, 0xBA, 0xB9, 0xBA, 0xD9, 0x01, 0xB2, 0xDA, 0x8B, 0xAA, 0x9A, 0xA2, 0x7A, 0x92, 0x39, 0x8A, 0x39, 0x81, 0xF8, 0x71, 0xB7, 0x61, 0x77, 0x59, 0x56, 0x51, 0x36, 0x41, 0x17, 0x39, 0x17, 0x39, 0x18, 0x01, 0x31, 0x18, 0x80, 0x29, 0x18, 0x04, 0x29, 0x39, 0x04, 0x29, 0x19, 0x07, 0x29, 0x3A, 0x02, 0x21, 0x3A, 0x0E, 0x21, 0x3B, 0x01, 0x29, 0x5B, 0x06, 0x29, 0x5A, 0x8D, 0x29, 0x7A, 0x29, 0x5A, 0x29, 0x59, 0x31, 0x79, 0x39, 0x79, 0x41, 0x78, 0x49, 0x78, 0x51, 0xB8, 0x59, 0xB7, 0x69, 0xF7, 0x71, 0xF7, 0x82, 0x58, 0x8A, 0x78, 0x92, 0x98, 0x01, 0x9A, 0x98, 0x83, 0x9A, 0x77, 0x9A, 0x36, 0x91, 0xF6, 0x9A, 0x16, 0x01, 0xA2, 0x16, 0x81, 0xA1, 0xF5, 0xAA, 0x15, 0x03, 0xA9, 0xF5, 0x8B, 0xA1, 0xF5, 0x9A, 0x15, 0x92, 0x36, 0x82, 0x56, 0x72, 0x97, 0x5A, 0xD8, 0x4B, 0x5A, 0x44, 0x1D, 0x2C, 0x1D, 0x1C, 0x1E, 0x14, 0x1E, 0x0C, 0x1F, 0x02, 0x04, 0x1F, 0x80, 0x04, 0x3F, 0x02, 0x04, 0x1F, 0x80, 0x03, 0xFF, 0x03, 0x04, 0x1F, 0x08, 0x03, 0xFF, 0x92, 0x03, 0xFE, 0x04, 0x3E, 0x14, 0xFD, 0x1D, 0x1B, 0x56, 0x1E, 0x7D, 0xFD, + 0x94, 0xD9, 0x7A, 0x92, 0x8A, 0x52, 0x9A, 0x33, 0xA2, 0x13, 0xA2, 0x14, 0x9A, 0x14, 0x92, 0x14, 0x71, 0x92, 0x69, 0x92, 0x69, 0xB3, 0x59, 0x92, 0x59, 0xB2, 0x01, 0x51, 0x92, 0x80, 0x51, 0x91, 0x01, 0x49, 0x91, 0x81, 0x49, 0x71, 0x49, 0x91, 0x01, 0x41, 0x70, 0x01, 0x41, 0x50, 0x03, 0x39, 0x4F, 0x01, 0x39, 0x2F, 0x80, 0x39, 0x2E, 0x02, 0x31, 0x2E, 0x81, 0x31, 0x0E, 0x31, 0x2E, 0x01, 0x31, 0x0E, 0x86, 0x31, 0x2E, 0x29, 0x0D, 0x31, 0x2E, 0x29, 0x0D, 0x31, 0x2E, 0x29, 0x0D, 0x31, 0x0E, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x1C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x10, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x87, 0x29, 0x2E, 0x29, 0x4E, 0x21, 0x2F, 0x19, 0x0F, 0x11, 0x0F, 0x11, 0x30, 0x19, 0x52, 0x19, 0x94, 0x01, 0x21, 0xD5, 0x84, 0x21, 0xB4, 0x21, 0x72, 0x11, 0x10, 0x19, 0x10, 0x21, 0x2F, 0x01, 0x21, 0x0E, 0x83, 0x29, 0x0E, 0x21, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x80, 0x20, 0xED, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x81, 0x21, 0x0D, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x81, 0x21, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x2E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x2E, 0x82, 0x21, 0x0E, 0x20, + 0xEE, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x0E, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x01, 0x21, 0x0D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x91, 0x29, 0x4E, 0x19, 0x2E, 0x11, 0x2E, 0x01, 0x0E, 0x01, 0x8F, 0x44, 0x9B, 0x1B, 0xF8, 0x14, 0x18, 0x14, 0x59, 0x0C, 0x38, 0x04, 0x18, 0x0C, 0x38, 0x0C, 0x18, 0x14, 0x39, 0x03, 0x35, 0x01, 0xCF, 0x01, 0x6E, 0x01, 0x4D, 0x01, 0x01, 0x2D, 0x83, 0x01, 0x0C, 0x00, 0xEB, 0x01, 0x0C, 0x09, 0x2D, 0x01, 0x19, 0x2D, 0x93, 0x19, 0x0D, 0x21, 0x4D, 0x21, 0x2D, 0x21, 0x4D, 0x21, 0x4E, 0x11, 0x2D, 0x09, 0x0D, 0x01, 0x2D, 0x12, 0xB3, 0x34, 0x7A, 0x14, 0x19, 0x0C, 0x19, 0x0C, 0x39, 0x04, 0x39, 0x04, 0x18, 0x04, 0x39, 0x04, 0x38, 0x03, 0xF8, 0x04, 0x39, 0x04, 0x18, 0x01, 0x0C, 0x39, 0x84, 0x13, 0xF8, 0x23, 0xF8, 0x1A, 0xF5, 0x01, 0x0D, 0x09, 0x2D, 0x01, 0x19, 0x2D, 0x03, 0x21, 0x2D, 0x80, 0x19, 0x0D, 0x01, 0x10, 0xEC, 0x88, 0x08, 0xCC, 0x00, 0xCC, 0x00, 0xAB, 0x00, 0xCC, 0x01, 0x6E, 0x2C, 0x19, 0x14, 0x39, 0x0C, 0x39, 0x0C, 0x59, 0x01, 0x04, 0x18, 0x01, 0x04, 0x38, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x14, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, + 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x11, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0F, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x86, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2E, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0C, 0x29, 0x0D, 0x6D, 0x29, 0x2D, 0x11, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x05, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x12, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x06, 0x29, 0x2D, + 0x01, 0x29, 0x0D, 0x05, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x05, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x0B, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x05, 0x31, 0x2D, 0x80, 0x31, 0x0E, 0x08, 0x31, 0x2E, 0x06, 0x39, 0x2E, 0x87, 0x39, 0x0E, 0x38, 0xED, 0x40, 0xED, 0x40, 0xCD, 0x58, 0xCD, 0xAA, 0xF6, 0xCB, 0x37, 0xCB, 0x16, 0x01, 0xD2, 0xF6, 0x01, 0xD2, 0xD6, 0x02, 0xD2, 0xB5, 0x03, 0xD2, 0xB6, 0x81, 0xCA, 0xB6, 0xD2, 0xD7, 0x01, 0xCA, 0xB7, 0x90, 0xCA, 0xB8, 0xC2, 0xB8, 0xBA, 0xB8, 0xBA, 0xB9, 0xB2, 0xB9, 0xAA, 0xBA, 0xA2, 0x99, 0x8A, 0x38, 0x79, 0xF8, 0x61, 0x56, 0x50, 0xF5, 0x48, 0xD4, 0x40, 0xD4, 0x40, 0xD5, 0x40, 0xF5, 0x38, 0xF6, 0x39, 0x16, 0x01, 0x39, 0x17, 0x82, 0x31, 0x18, 0x31, 0x38, 0x29, 0x38, 0x01, 0x29, 0x39, 0x01, 0x21, 0x39, 0x03, 0x21, 0x3A, 0x85, 0x21, 0x5A, 0x21, 0x3A, 0x19, 0x3A, 0x21, 0x3B, 0x21, 0x5B, 0x19, 0x3B, 0x01, 0x21, 0x5B, 0x03, 0x19, 0x5B, 0x02, 0x19, 0x3B, 0x0B, 0x19, 0x5C, 0x80, 0x11, 0x3C, 0x02, 0x19, 0x5C, 0x06, 0x19, 0x7C, 0x83, 0x19, 0x9C, 0x19, 0x7C, 0x19, 0x9C, 0x19, 0xBC, 0x01, 0x19, 0xBB, 0x01, 0x21, 0xBB, 0x82, 0x29, 0xDB, 0x31, 0xFA, 0x39, 0xFA, 0x01, 0x39, 0xF9, 0x80, 0x41, 0xF8, 0x01, 0x41, 0xD7, 0x80, 0x51, 0xF7, 0x01, 0x59, 0xF7, 0x84, 0x61, 0xF7, 0x72, 0x37, 0x7A, 0x17, 0x82, 0x37, 0x8A, 0x37, 0x01, 0x92, 0x37, 0x81, 0x9A, 0x37, 0x9A, 0x16, 0x01, 0xA2, 0x16, 0x8A, 0x9A, 0x16, 0x92, 0x16, + 0x8A, 0x16, 0x82, 0x36, 0x72, 0x77, 0x62, 0xD8, 0x4B, 0x39, 0x43, 0xDB, 0x34, 0x3D, 0x24, 0x3E, 0x14, 0x3E, 0x01, 0x0C, 0x3F, 0x81, 0x04, 0x5F, 0x04, 0x3F, 0x01, 0x04, 0x5F, 0x03, 0x04, 0x3F, 0x80, 0x04, 0x1F, 0x02, 0x04, 0x3F, 0x02, 0x04, 0x1F, 0x01, 0x03, 0xFF, 0x04, 0x04, 0x1F, 0x94, 0x04, 0x5E, 0x0C, 0xBD, 0x25, 0x3D, 0x45, 0x9D, 0x75, 0xBD, 0x94, 0xDA, 0x72, 0x72, 0x82, 0x12, 0x9A, 0x13, 0xA2, 0x14, 0xA2, 0x34, 0xA2, 0x14, 0x9A, 0x14, 0x71, 0x72, 0x69, 0x51, 0x69, 0xB2, 0x61, 0x92, 0x59, 0xB2, 0x59, 0x92, 0x51, 0x92, 0x51, 0x91, 0x01, 0x49, 0x71, 0x82, 0x49, 0x91, 0x41, 0x70, 0x49, 0x90, 0x02, 0x41, 0x70, 0x80, 0x41, 0x6F, 0x03, 0x39, 0x4F, 0x80, 0x39, 0x2E, 0x03, 0x31, 0x2E, 0x81, 0x31, 0x0E, 0x31, 0x2E, 0x01, 0x29, 0x0D, 0x01, 0x31, 0x2E, 0x01, 0x31, 0x2D, 0x80, 0x31, 0x2E, 0x14, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0A, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2E, 0x80, 0x21, 0x2F, 0x01, 0x19, 0x0F, 0x88, 0x11, 0x10, 0x11, 0x52, 0x19, 0x94, 0x21, 0xD4, 0x21, 0xD5, 0x21, 0xD4, 0x19, 0x72, 0x10, 0xF0, 0x19, 0x10, 0x01, 0x21, 0x2F, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x2D, 0x21, 0x0D, 0x13, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x82, 0x29, + 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x83, 0x21, 0x0D, 0x20, 0xED, 0x21, 0x0D, 0x20, 0xED, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x21, 0x0D, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x83, 0x28, 0xEE, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x81, 0x21, 0x0D, 0x21, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x8C, 0x29, 0x2D, 0x21, 0x2D, 0x19, 0x2E, 0x09, 0x0D, 0x00, 0xED, 0x01, 0x8F, 0x44, 0x9B, 0x1C, 0x18, 0x14, 0x18, 0x0C, 0x38, 0x0C, 0x18, 0x0C, 0x38, 0x04, 0x18, 0x01, 0x0C, 0x18, 0x8B, 0x24, 0x5A, 0x34, 0x7A, 0x3C, 0x7A, 0x44, 0xBB, 0x4C, 0x9B, 0x4C, 0x9A, 0x54, 0x9A, 0x4C, 0x59, 0x43, 0x96, 0x09, 0x4D, 0x19, 0x2D, 0x19, 0x0D, 0x01, 0x21, 0x2D, 0x01, 0x21, 0x4D, 0x89, 0x21, 0x2D, 0x19, 0x4D, 0x11, 0x4E, 0x01, 0x2D, 0x01, 0x6E, 0x2B, 0xD8, 0x24, 0x5A, 0x14, 0x39, 0x0C, 0x18, 0x03, 0xF8, 0x05, 0x04, 0x18, 0x87, 0x0C, 0x18, 0x14, 0x18, 0x24, 0x19, 0x2B, 0xB7, 0x01, 0x8F, 0x01, 0x0D, 0x11, 0x2E, 0x19, 0x2E, 0x04, 0x21, 0x2D, 0x89, 0x21, 0x0D, 0x19, 0x0D, 0x21, 0x4E, 0x19, 0x4E, 0x11, 0x2D, 0x08, 0xEC, 0x00, 0xEC, 0x01, 0x4E, 0x34, 0x5A, 0x1C, 0x19, 0x01, 0x0C, 0x19, 0x80, 0x03, 0xF8, 0x02, 0x04, 0x18, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x82, + 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x15, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x41, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x3F, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x03, 0x29, 0x0D, 0x6D, 0x29, 0x2D, 0x11, 0x29, 0x0D, 0x05, 0x29, 0x2D, 0x0D, 0x29, 0x0D, 0x07, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x11, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x0B, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x0A, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x0F, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x07, 0x31, 0x2D, 0x08, 0x31, 0x2E, 0x04, 0x39, 0x2E, 0x01, 0x39, 0x0E, 0x88, 0x38, 0xED, 0x40, 0xED, 0x40, 0xAD, 0x59, 0x0E, 0xB3, 0x17, 0xCB, 0x57, 0xCA, 0xF6, 0xD3, 0x16, 0xD2, 0xF6, 0x04, 0xD2, 0xD6, 0x02, 0xD2, 0xB6, 0x80, 0xCA, 0xB6, 0x01, 0xCA, 0xD7, 0x93, 0xCA, 0xD8, 0xC2, 0xD8, 0xC2, 0xD9, 0xBA, 0xFA, 0xB2, 0xFA, 0xAA, 0xDA, 0x8A, 0x17, 0x71, 0xB6, 0x61, 0x55, 0x59, + 0x35, 0x49, 0x15, 0x40, 0xD5, 0x38, 0xF6, 0x39, 0x16, 0x31, 0x16, 0x31, 0x17, 0x31, 0x37, 0x31, 0x17, 0x31, 0x37, 0x29, 0x37, 0x02, 0x29, 0x38, 0x02, 0x21, 0x39, 0x82, 0x21, 0x59, 0x21, 0x3A, 0x19, 0x3A, 0x04, 0x19, 0x5A, 0x04, 0x19, 0x5B, 0x80, 0x11, 0x5B, 0x09, 0x11, 0x5C, 0x80, 0x11, 0x5D, 0x01, 0x09, 0x5D, 0x01, 0x11, 0x5D, 0x80, 0x09, 0x5D, 0x03, 0x09, 0x7D, 0x80, 0x09, 0x5D, 0x02, 0x09, 0x7D, 0x82, 0x09, 0x9D, 0x11, 0x9D, 0x09, 0x9D, 0x02, 0x11, 0x9D, 0x01, 0x11, 0xBD, 0x02, 0x11, 0xDD, 0x01, 0x11, 0xFD, 0x84, 0x11, 0xFC, 0x1A, 0x1D, 0x1A, 0x1C, 0x22, 0x3C, 0x2A, 0x5C, 0x01, 0x2A, 0x5B, 0x8C, 0x2A, 0x5A, 0x2A, 0x3A, 0x32, 0x5A, 0x3A, 0x5A, 0x3A, 0x59, 0x42, 0x59, 0x4A, 0x59, 0x5A, 0x79, 0x62, 0x78, 0x72, 0x79, 0x72, 0x78, 0x7A, 0x78, 0x82, 0x58, 0x01, 0x8A, 0x58, 0x8E, 0x92, 0x57, 0x92, 0x37, 0x8A, 0x37, 0x82, 0x36, 0x7A, 0x37, 0x72, 0x57, 0x62, 0x98, 0x5A, 0xF9, 0x4B, 0xBA, 0x3C, 0x3C, 0x2C, 0x5D, 0x1C, 0x5E, 0x14, 0x5F, 0x0C, 0x5F, 0x0C, 0x7F, 0x07, 0x04, 0x5F, 0x05, 0x04, 0x3F, 0x81, 0x04, 0x1F, 0x04, 0x3F, 0x04, 0x04, 0x1F, 0x8A, 0x04, 0x3F, 0x04, 0x7E, 0x0C, 0xDE, 0x1D, 0x1D, 0x3D, 0x5D, 0x75, 0xBE, 0x94, 0xFC, 0x6A, 0x93, 0x82, 0x32, 0x9A, 0x33, 0xA2, 0x13, 0x01, 0xA2, 0x14, 0x84, 0x9A, 0x14, 0x81, 0xD3, 0x69, 0x51, 0x69, 0xB3, 0x61, 0xB2, 0x02, 0x59, 0x92, 0x82, 0x51, 0x91, 0x49, 0x71, 0x49, 0x91, 0x01, 0x49, 0x71, 0x02, 0x41, 0x70, 0x01, 0x41, 0x4F, 0x04, 0x39, 0x4F, 0x82, 0x39, 0x2F, 0x31, 0x2E, 0x31, + 0x0E, 0x03, 0x31, 0x2E, 0x01, 0x31, 0x0E, 0x02, 0x31, 0x2D, 0x10, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x01, 0x21, 0x2E, 0x8B, 0x19, 0x0F, 0x10, 0xEF, 0x11, 0x10, 0x19, 0x52, 0x19, 0x93, 0x21, 0xB4, 0x21, 0xD4, 0x21, 0xB4, 0x19, 0x72, 0x11, 0x10, 0x19, 0x30, 0x21, 0x2F, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x0D, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x21, 0x0D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x01, 0x28, 0xED, 0x81, 0x29, 0x0D, 0x21, 0x0D, 0x05, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x02, 0x29, 0x0D, 0x88, 0x29, 0x2D, 0x21, 0x0D, 0x21, 0x2E, 0x11, 0x2E, 0x00, 0xED, 0x01, 0x8F, 0x44, 0x9B, 0x24, 0x18, 0x1C, 0x18, 0x02, 0x0C, 0x18, 0x80, 0x0C, 0x38, 0x01, 0x0B, 0xF8, 0x89, 0x0B, 0xD7, 0x13, 0xD8, 0x1B, 0xD7, 0x1B, 0xD8, 0x23, 0xF8, 0x34, 0x39, 0x34, 0x19, 0x44, 0x59, 0x54, 0x39, 0x09, 0x2D, 0x01, 0x19, 0x0D, 0x80, 0x21, 0x0D, 0x01, 0x21, 0x2D, 0x80, 0x21, 0x4D, 0x01, 0x21, 0x2D, 0x86, 0x19, 0x2D, + 0x11, 0x2E, 0x01, 0x4E, 0x02, 0x11, 0x34, 0x7A, 0x1C, 0x19, 0x14, 0x18, 0x02, 0x04, 0x18, 0x80, 0x0C, 0x39, 0x01, 0x04, 0x39, 0x89, 0x0C, 0x39, 0x0C, 0x18, 0x14, 0x18, 0x3C, 0x9B, 0x12, 0xB3, 0x01, 0x0D, 0x09, 0x0D, 0x19, 0x2E, 0x19, 0x0D, 0x21, 0x0D, 0x01, 0x21, 0x2D, 0x03, 0x21, 0x0D, 0x01, 0x21, 0x4D, 0x86, 0x19, 0x4D, 0x11, 0x2D, 0x00, 0xEC, 0x01, 0x4D, 0x3C, 0x7A, 0x13, 0xF8, 0x14, 0x19, 0x01, 0x03, 0xF8, 0x02, 0x04, 0x18, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x69, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x12, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x11, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x46, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0D, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x21, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x4A, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x04, 0x29, 0x2D, 0x0F, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x1E, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x20, 0x29, 0x2D, 0x26, 0x29, 0x0D, 0x06, 0x31, 0x2D, 0x80, 0x31, 0x0D, 0x07, 0x31, 0x2E, 0x04, 0x39, 0x2E, 0x01, 0x39, 0x0E, 0x88, 0x38, 0xED, 0x40, 0xED, 0x40, 0xAC, 0x69, 0x4F, 0xC3, 0x98, 0xC3, 0x37, 0xCB, 0x17, 0xCA, 0xF6, 0xD2, 0xF6, 0x06, 0xD2, 0xD6, 0x80, 0xCA, 0xB6, 0x01, 0xCA, 0xD7, 0x88, 0xCA, 0xD8, 0xC2, 0xD8, 0xBA, 0xF9, 0xB2, 0xFA, 0xA2, 0xBA, 0x82, 0x18, 0x59, 0x35, 0x40, 0xD3, 0x40, 0xF4, 0x01, 0x41, + 0x15, 0x80, 0x41, 0x16, 0x01, 0x39, 0x36, 0x03, 0x31, 0x37, 0x80, 0x29, 0x37, 0x04, 0x29, 0x38, 0x02, 0x21, 0x39, 0x80, 0x21, 0x59, 0x05, 0x19, 0x5A, 0x80, 0x19, 0x5B, 0x02, 0x11, 0x5B, 0x09, 0x11, 0x5C, 0x02, 0x11, 0x7D, 0x04, 0x09, 0x7D, 0x81, 0x09, 0x7E, 0x09, 0x9E, 0x03, 0x09, 0x7E, 0x04, 0x09, 0x9E, 0x03, 0x09, 0xBE, 0x01, 0x09, 0xDE, 0x01, 0x09, 0xFE, 0x03, 0x0A, 0x1E, 0x83, 0x0A, 0x3E, 0x12, 0x3E, 0x12, 0x5D, 0x12, 0x7D, 0x01, 0x1A, 0x9D, 0x8D, 0x1A, 0x9C, 0x22, 0x9C, 0x22, 0xBC, 0x2A, 0xBB, 0x2A, 0xDB, 0x32, 0xDB, 0x3A, 0xDB, 0x3A, 0xDA, 0x42, 0xDA, 0x4A, 0xDA, 0x52, 0xFA, 0x5A, 0xDA, 0x62, 0xBA, 0x6A, 0xBA, 0x01, 0x72, 0x99, 0x8C, 0x7A, 0x99, 0x7A, 0x98, 0x7A, 0x78, 0x72, 0x57, 0x6A, 0x57, 0x5A, 0x77, 0x52, 0xB8, 0x4B, 0x5A, 0x44, 0x3C, 0x34, 0x7D, 0x24, 0x7D, 0x14, 0x7E, 0x14, 0x7F, 0x01, 0x0C, 0x7F, 0x07, 0x04, 0x7F, 0x04, 0x04, 0x5F, 0x07, 0x04, 0x3F, 0x8A, 0x04, 0x5F, 0x04, 0x9F, 0x0C, 0xFE, 0x1D, 0x3E, 0x35, 0x3D, 0x65, 0x9E, 0x8D, 0x1D, 0x72, 0xF5, 0x82, 0x53, 0x9A, 0x54, 0x9A, 0x13, 0x01, 0xA2, 0x14, 0x87, 0x9A, 0x15, 0x92, 0x14, 0x71, 0x71, 0x71, 0xD3, 0x61, 0x92, 0x59, 0x92, 0x59, 0x91, 0x51, 0x92, 0x01, 0x51, 0x91, 0x82, 0x49, 0x71, 0x49, 0x70, 0x49, 0x71, 0x03, 0x41, 0x70, 0x80, 0x41, 0x4F, 0x02, 0x39, 0x4F, 0x80, 0x39, 0x2F, 0x02, 0x31, 0x2E, 0x01, 0x31, 0x4E, 0x02, 0x31, 0x2E, 0x80, 0x31, 0x0E, 0x01, 0x31, 0x2E, 0x07, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x80, + 0x29, 0x2D, 0x1A, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x09, 0x29, 0x0D, 0x02, 0x29, 0x2E, 0x84, 0x21, 0x0E, 0x19, 0x0F, 0x19, 0x10, 0x19, 0x31, 0x19, 0x72, 0x01, 0x19, 0x93, 0x84, 0x21, 0xD4, 0x21, 0xB4, 0x19, 0x52, 0x10, 0xEF, 0x19, 0x0F, 0x01, 0x21, 0x2F, 0x85, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x0D, 0x21, 0x0D, 0x29, 0x0D, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x82, 0x28, 0xEC, 0x29, 0x0D, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x20, 0xEC, 0x03, 0x29, 0x0D, 0x80, 0x21, 0x0D, 0x05, 0x29, 0x0D, 0x8C, 0x29, 0x2D, 0x29, 0x2E, 0x21, 0x4E, 0x11, 0x2E, 0x00, 0xED, 0x01, 0x8F, 0x4C, 0x9B, 0x23, 0xD8, 0x1C, 0x18, 0x14, 0x39, 0x14, 0x18, 0x14, 0x39, 0x03, 0xD8, 0x01, 0x0B, 0xF8, 0x80, 0x13, 0xF8, 0x01, 0x13, 0xD8, 0x01, 0x1B, 0xD8, 0x88, 0x23, 0xF8, 0x2B, 0xF8, 0x3C, 0x19, 0x54, 0x5A, 0x00, 0xEC, 0x19, 0x2D, 0x21, 0x2D, 0x29, 0x2D, 0x21, 0x0D, 0x01, 0x21, 0x2D, 0x88, 0x29, 0x2D, 0x21, 0x0D, 0x19, 0x0D, 0x11, 0x2D, 0x09, 0x4E, 0x01, 0x6F, 0x34, 0x19, 0x24, 0x39, 0x13, 0xF8, 0x01, 0x0C, 0x18, 0x80, 0x04, 0x18, 0x01, 0x04, 0x19, 0x01, 0x0C, 0x19, 0x8B, 0x14, + 0x19, 0x24, 0x19, 0x2B, 0xD8, 0x01, 0x4E, 0x00, 0xED, 0x11, 0x2E, 0x21, 0x4E, 0x21, 0x2E, 0x21, 0x2D, 0x20, 0xED, 0x21, 0x0D, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x03, 0x21, 0x2D, 0x84, 0x11, 0x2D, 0x09, 0x0D, 0x01, 0x6E, 0x44, 0x7A, 0x1B, 0xF8, 0x01, 0x14, 0x19, 0x83, 0x0C, 0x18, 0x0B, 0xF8, 0x0C, 0x19, 0x03, 0xF8, 0x01, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x08, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x3F, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x16, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0D, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x7F, 0x29, 0x0D, 0x11, 0x29, 0x0D, 0x6D, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x05, 0x29, 0x2D, 0x10, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x1D, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x0B, 0x29, 0x2D, 0x0D, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x25, 0x29, 0x0D, 0x07, 0x31, 0x2D, 0x81, 0x31, 0x0D, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x04, 0x31, 0x2E, 0x03, 0x39, 0x2E, 0x88, 0x39, 0x0E, 0x39, 0x0D, 0x38, 0xED, 0x40, 0xCD, 0x40, 0x8C, 0x71, 0xB0, 0xBB, 0x57, 0xC3, 0x37, 0xCB, 0x17, 0x02, 0xD2, 0xF6, 0x01, 0xD2, 0xD6, 0x04, 0xCA, 0xD6, 0x8A, 0xCA, 0xD7, 0xC2, 0xD8, 0xC2, 0xF9, 0xBB, 0x19, 0xB3, 0x1A, 0x8A, 0x17, 0x61, 0x34, 0x51, 0x14, 0x40, 0xF4, 0x39, 0x15, 0x39, 0x35, 0x04, 0x31, 0x36, 0x01, 0x31, 0x37, 0x03, 0x29, 0x37, 0x03, 0x29, 0x38, 0x82, 0x21, 0x38, 0x21, 0x59, + 0x21, 0x39, 0x02, 0x21, 0x59, 0x80, 0x21, 0x5A, 0x03, 0x19, 0x5A, 0x01, 0x19, 0x5B, 0x02, 0x11, 0x5B, 0x07, 0x11, 0x7C, 0x03, 0x11, 0x7D, 0x03, 0x09, 0x7D, 0x81, 0x09, 0x7E, 0x09, 0x9E, 0x07, 0x01, 0x9E, 0x84, 0x01, 0xBE, 0x01, 0xBF, 0x01, 0xBE, 0x01, 0xBF, 0x01, 0xBE, 0x01, 0x01, 0xDF, 0x81, 0x01, 0xFF, 0x02, 0x1F, 0x02, 0x02, 0x3F, 0x01, 0x02, 0x5F, 0x81, 0x02, 0x7E, 0x0A, 0x7E, 0x01, 0x0A, 0x9E, 0x80, 0x12, 0xBE, 0x01, 0x12, 0xDD, 0x80, 0x12, 0xFD, 0x01, 0x1A, 0xFD, 0x81, 0x23, 0x1D, 0x23, 0x1C, 0x01, 0x2B, 0x3C, 0x80, 0x33, 0x5C, 0x01, 0x3B, 0x5B, 0x86, 0x43, 0x3B, 0x4B, 0x3B, 0x52, 0xFA, 0x5B, 0x1A, 0x5A, 0xFA, 0x6B, 0x1A, 0x6A, 0xFA, 0x01, 0x62, 0xD9, 0x87, 0x5A, 0xD9, 0x4A, 0xD8, 0x43, 0x19, 0x3B, 0x9B, 0x34, 0x7D, 0x24, 0x9D, 0x1C, 0x9E, 0x14, 0x9F, 0x01, 0x0C, 0x9F, 0x03, 0x04, 0x9F, 0x01, 0x04, 0x7F, 0x02, 0x04, 0x9F, 0x80, 0x04, 0x7F, 0x06, 0x04, 0x5F, 0x02, 0x04, 0x3F, 0x94, 0x04, 0x5F, 0x04, 0x7F, 0x04, 0x9F, 0x04, 0xBF, 0x0C, 0xFE, 0x1D, 0x3E, 0x35, 0x5D, 0x5D, 0x7E, 0x85, 0x1D, 0x73, 0x15, 0x82, 0x53, 0x9A, 0x53, 0xA2, 0x34, 0xA2, 0x14, 0xA1, 0xF4, 0xA2, 0x35, 0x92, 0x35, 0x71, 0x72, 0x69, 0x92, 0x61, 0x92, 0x59, 0x71, 0x01, 0x59, 0x92, 0x81, 0x51, 0x92, 0x51, 0x91, 0x01, 0x49, 0x91, 0x80, 0x49, 0x70, 0x03, 0x41, 0x70, 0x80, 0x41, 0x4F, 0x02, 0x39, 0x4F, 0x81, 0x31, 0x2E, 0x39, 0x4F, 0x01, 0x31, 0x2E, 0x01, 0x31, 0x4E, 0x01, 0x31, 0x2E, 0x80, 0x31, 0x0E, 0x01, 0x31, 0x2E, 0x80, 0x31, 0x2D, 0x0A, 0x29, + 0x0D, 0x80, 0x29, 0x2D, 0x17, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x85, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x21, 0x0E, 0x8C, 0x21, 0x2F, 0x19, 0x0F, 0x19, 0x10, 0x19, 0x31, 0x19, 0x52, 0x19, 0x93, 0x19, 0xB4, 0x21, 0xD4, 0x21, 0xB4, 0x19, 0x52, 0x11, 0x10, 0x19, 0x0F, 0x21, 0x2F, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x10, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x08, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x0E, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x21, 0x0D, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x8B, 0x29, 0x0D, 0x21, 0x2D, 0x19, 0x0E, 0x11, 0x0E, 0x00, 0xED, 0x01, 0x90, 0x4C, 0x5A, 0x2B, 0xF8, 0x24, 0x19, 0x1C, 0x19, 0x13, 0xF8, 0x13, 0xD8, 0x01, 0x13, 0xF8, 0x83, 0x13, 0xD8, 0x13, 0xF9, 0x13, 0xF8, 0x13, 0xD8, 0x01, 0x1B, 0xD8, 0x85, 0x23, 0xD8, 0x2B, 0xF9, 0x33, 0xF9, 0x54, 0x5A, 0x00, 0xED, 0x19, 0x0D, 0x02, 0x21, 0x0D, 0x80, 0x21, 0x2D, 0x01, 0x29, 0x2D, 0x01, 0x21, 0x0D, 0x88, 0x19, 0x2D, 0x11, 0x2E, 0x01, 0x4E, 0x2B, 0x77, 0x34, 0x39, 0x1B, 0xF9, 0x13, 0xF8, 0x14, 0x39, 0x0B, 0xF8, 0x01, 0x0B, 0xF9, 0x89, 0x0C, 0x19, 0x14, 0x19, 0x1B, 0xD8, 0x2B, 0xF9, 0x0A, 0x52, 0x00, 0xED, + 0x09, 0x0D, 0x11, 0x0D, 0x19, 0x0D, 0x21, 0x0E, 0x01, 0x21, 0x0D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x21, 0x0D, 0x8A, 0x19, 0x2D, 0x09, 0x0C, 0x01, 0x6E, 0x44, 0x39, 0x23, 0xF8, 0x1B, 0xF9, 0x13, 0xF9, 0x13, 0xF8, 0x0B, 0xF8, 0x0B, 0xF9, 0x0B, 0xD8, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x40, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x28, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0C, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x3E, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x12, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x82, 0x28, 0xED, 0x29, 0x0D, 0x29, 0x2D, 0x12, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x14, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x39, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x1A, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x11, 0x29, 0x2D, 0x4B, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x18, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x2D, 0x1C, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x05, 0x29, 0x0D, 0x01, 0x31, 0x2D, 0x80, 0x29, 0x0D, 0x04, 0x31, 0x2D, 0x80, 0x31, 0x0D, 0x02, 0x31, 0x2D, 0x82, 0x31, 0x2E, 0x31, 0x0D, 0x31, 0x0E, 0x01, 0x31, 0x2E, 0x02, 0x39, 0x2E, 0x01, 0x39, 0x0D, 0x87, 0x38, 0xED, 0x40, 0xCD, 0x48, 0xAC, 0x81, 0xF2, 0xC3, 0x99, 0xC3, 0x37, 0xCB, 0x17, 0xCB, 0x16, 0x03, 0xD2, 0xF6, 0x03, 0xCA, 0xD6, 0x89, 0xCA, 0xD7, 0xC2, 0xD7, 0xC3, 0x19, 0xB2, 0xF9, 0x9A, 0x98, 0x69, 0x74, 0x48, 0xD2, + 0x40, 0xF3, 0x41, 0x14, 0x41, 0x35, 0x01, 0x39, 0x35, 0x80, 0x31, 0x35, 0x01, 0x31, 0x36, 0x03, 0x29, 0x36, 0x08, 0x29, 0x37, 0x82, 0x29, 0x38, 0x29, 0x58, 0x21, 0x38, 0x01, 0x21, 0x58, 0x03, 0x21, 0x59, 0x80, 0x21, 0x5A, 0x03, 0x19, 0x5A, 0x01, 0x19, 0x5B, 0x81, 0x11, 0x5B, 0x19, 0x5B, 0x01, 0x19, 0x5C, 0x80, 0x11, 0x5C, 0x04, 0x11, 0x7C, 0x01, 0x11, 0x7D, 0x80, 0x11, 0x9D, 0x01, 0x09, 0x9D, 0x81, 0x09, 0x9E, 0x09, 0x7E, 0x01, 0x09, 0x9E, 0x03, 0x01, 0x9E, 0x80, 0x01, 0x9F, 0x03, 0x01, 0xBF, 0x83, 0x01, 0xDF, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xFF, 0x01, 0x02, 0x1F, 0x80, 0x02, 0x3F, 0x01, 0x02, 0x5F, 0x80, 0x02, 0x7F, 0x01, 0x02, 0x9F, 0x01, 0x02, 0xBF, 0x01, 0x02, 0xDE, 0x82, 0x0A, 0xFE, 0x0B, 0x1E, 0x0B, 0x3E, 0x01, 0x13, 0x3E, 0x80, 0x13, 0x3D, 0x01, 0x1B, 0x5D, 0x01, 0x1B, 0x9D, 0x01, 0x23, 0xBD, 0x85, 0x2B, 0xBC, 0x33, 0x9C, 0x3B, 0xBC, 0x3B, 0x9C, 0x4B, 0xBC, 0x53, 0xDC, 0x02, 0x5B, 0xDB, 0x87, 0x53, 0xBB, 0x4B, 0xDB, 0x43, 0xFB, 0x3B, 0xDB, 0x2C, 0x1C, 0x24, 0x9D, 0x1C, 0xBE, 0x14, 0xBE, 0x01, 0x0C, 0xBF, 0x80, 0x0C, 0x9F, 0x09, 0x04, 0x9F, 0x03, 0x04, 0x7F, 0x80, 0x04, 0x5F, 0x01, 0x04, 0x7F, 0x02, 0x04, 0x5F, 0x81, 0x04, 0x7F, 0x04, 0x9F, 0x01, 0x04, 0xBF, 0x91, 0x04, 0xDE, 0x1D, 0x1E, 0x35, 0x3E, 0x5D, 0x9F, 0x85, 0x5E, 0x62, 0xF5, 0x82, 0x74, 0x9A, 0x74, 0xA2, 0x54, 0xA2, 0x14, 0xA1, 0xF4, 0xA2, 0x15, 0x9A, 0x34, 0x79, 0x92, 0x69, 0x72, 0x69, 0xB2, 0x61, 0x92, 0x59, 0xB2, 0x02, 0x51, 0x91, 0x01, 0x49, 0x91, + 0x82, 0x49, 0x70, 0x41, 0x70, 0x41, 0x50, 0x01, 0x41, 0x70, 0x81, 0x41, 0x6F, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x01, 0x39, 0x2F, 0x80, 0x39, 0x4E, 0x02, 0x31, 0x2E, 0x80, 0x31, 0x0E, 0x01, 0x31, 0x2E, 0x82, 0x31, 0x2D, 0x31, 0x0D, 0x31, 0x2D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x1E, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x2C, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x83, 0x28, 0xEC, 0x28, 0xED, 0x29, 0x0D, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x86, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x30, 0x19, 0x30, 0x19, 0x72, 0x19, 0x93, 0x21, 0xB4, 0x01, 0x21, 0xD4, 0x82, 0x19, 0x72, 0x11, 0x10, 0x19, 0x10, 0x01, 0x21, 0x2F, 0x01, 0x29, 0x2E, 0x0A, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x0F, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x28, 0xEC, 0x06, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x8A, 0x29, 0x2D, 0x29, 0x2E, 0x21, 0x2E, 0x10, 0xED, 0x00, 0xED, 0x09, 0x90, 0x4C, 0x1A, 0x33, 0xD9, 0x2B, 0xD9, 0x23, 0xD8, 0x1B, 0xB8, 0x01, 0x1B, 0xD9, 0x80, 0x1B, 0xB8, 0x03, 0x1B, 0xD9, 0x01, 0x23, 0xD9, 0x85, 0x23, 0xD8, 0x2B, 0xB8, 0x33, 0xB8, 0x54, 0x5A, 0x01, 0x0D, + 0x19, 0x0D, 0x01, 0x21, 0x0D, 0x02, 0x29, 0x2D, 0x8D, 0x21, 0x0D, 0x21, 0x2D, 0x21, 0x0D, 0x19, 0x0D, 0x11, 0x2E, 0x01, 0x0E, 0x43, 0xF9, 0x3C, 0x3A, 0x23, 0xD9, 0x1B, 0xB8, 0x1B, 0xD9, 0x1B, 0xF9, 0x13, 0xD9, 0x13, 0xF9, 0x01, 0x1B, 0xD9, 0x86, 0x2C, 0x1A, 0x3C, 0x1A, 0x22, 0xD5, 0x00, 0x8C, 0x10, 0xEE, 0x19, 0x0E, 0x19, 0x0D, 0x02, 0x21, 0x0D, 0x83, 0x29, 0x2D, 0x29, 0x0D, 0x21, 0x0D, 0x29, 0x0D, 0x02, 0x21, 0x0D, 0x86, 0x21, 0x0C, 0x19, 0x0C, 0x08, 0xEC, 0x09, 0x4E, 0x44, 0x19, 0x2B, 0xD8, 0x23, 0xB8, 0x01, 0x1B, 0xB9, 0x80, 0x1B, 0xD9, 0x01, 0x13, 0xB9, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x35, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x7F, 0x29, 0x0D, 0x1A, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x56, 0x29, 0x0D, 0x17, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x2C, 0x29, 0x2D, 0x55, 0x29, 0x0D, 0x25, 0x29, 0x2D, 0x1C, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x06, 0x29, 0x0D, 0x81, 0x31, 0x2D, 0x29, 0x0D, 0x04, 0x31, 0x2D, 0x81, 0x31, 0x0D, 0x31, 0x2E, 0x02, 0x31, 0x2D, 0x80, 0x31, 0x0D, 0x02, 0x31, 0x2E, 0x01, 0x39, 0x2E, 0x88, 0x39, 0x0E, 0x39, 0x0D, 0x38, 0xED, 0x40, 0xCD, 0x40, 0x6B, 0x82, 0x12, 0xBB, 0x78, 0xC3, 0x37, 0xCB, 0x37, 0x02, 0xD3, 0x17, 0x80, 0xD2, 0xF6, 0x02, 0xCA, 0xF6, 0x80, 0xCA, 0xF7, 0x01, 0xC2, 0xF7, 0x8A, 0xC3, 0x38, 0xC3, 0x59, 0x79, 0x93, 0x58, 0xD1, 0x48, 0xD2, 0x40, 0xD2, 0x39, 0x13, 0x39, 0x14, 0x39, 0x34, 0x39, 0x35, 0x39, 0x55, 0x01, 0x31, 0x35, 0x05, 0x29, 0x35, 0x05, 0x29, 0x36, 0x02, 0x29, 0x56, 0x02, 0x31, 0x57, 0x82, + 0x29, 0x57, 0x31, 0x57, 0x29, 0x57, 0x01, 0x29, 0x58, 0x80, 0x29, 0x78, 0x01, 0x29, 0x58, 0x02, 0x21, 0x38, 0x85, 0x19, 0x38, 0x19, 0x18, 0x19, 0x38, 0x19, 0x39, 0x19, 0x19, 0x19, 0x39, 0x01, 0x19, 0x5A, 0x02, 0x19, 0x5B, 0x81, 0x11, 0x5B, 0x11, 0x5C, 0x01, 0x11, 0x7C, 0x80, 0x11, 0x9D, 0x01, 0x09, 0x7D, 0x80, 0x09, 0x9D, 0x02, 0x09, 0x9E, 0x80, 0x01, 0x9E, 0x01, 0x01, 0xBE, 0x81, 0x01, 0xBF, 0x01, 0xBE, 0x01, 0x01, 0xBF, 0x80, 0x01, 0xDF, 0x01, 0x01, 0xFF, 0x01, 0x02, 0x1F, 0x01, 0x02, 0x3F, 0x81, 0x02, 0x5F, 0x02, 0x7F, 0x01, 0x02, 0x9F, 0x80, 0x02, 0xBF, 0x01, 0x02, 0xDF, 0x80, 0x02, 0xFF, 0x01, 0x03, 0x1F, 0x87, 0x03, 0x3F, 0x03, 0x5F, 0x0B, 0x5F, 0x0B, 0x7F, 0x0B, 0x7E, 0x13, 0x9F, 0x13, 0x9E, 0x13, 0xBE, 0x01, 0x13, 0xDE, 0x01, 0x13, 0xFE, 0x81, 0x1C, 0x1E, 0x1B, 0xFD, 0x01, 0x2C, 0x1D, 0x82, 0x3C, 0x3D, 0x3C, 0x3C, 0x44, 0x5D, 0x01, 0x44, 0x5C, 0x86, 0x44, 0x7C, 0x3C, 0x7D, 0x34, 0x7D, 0x2C, 0x7D, 0x24, 0x9D, 0x1C, 0xBE, 0x14, 0xDE, 0x02, 0x0C, 0xDF, 0x0A, 0x04, 0xBF, 0x02, 0x04, 0x9F, 0x04, 0x04, 0x7F, 0x82, 0x04, 0x5F, 0x04, 0x7F, 0x04, 0x9F, 0x01, 0x04, 0xBF, 0x97, 0x04, 0xDF, 0x0D, 0x1E, 0x1D, 0x5F, 0x2D, 0x5E, 0x55, 0x7F, 0x85, 0x7F, 0x63, 0x36, 0x7A, 0x74, 0x9A, 0x74, 0xA2, 0x54, 0xA2, 0x14, 0x99, 0xD3, 0x99, 0xF4, 0xA2, 0x55, 0x89, 0xD3, 0x71, 0x72, 0x69, 0xB2, 0x61, 0x92, 0x59, 0x92, 0x59, 0x91, 0x51, 0x91, 0x51, 0xB1, 0x49, 0x91, 0x49, 0x90, 0x01, 0x49, 0x70, 0x02, 0x41, 0x70, 0x81, 0x41, 0x6F, 0x41, + 0x4F, 0x02, 0x39, 0x4F, 0x81, 0x39, 0x2E, 0x39, 0x4E, 0x04, 0x31, 0x2E, 0x80, 0x31, 0x0D, 0x01, 0x31, 0x2E, 0x80, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x13, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x17, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x21, 0x0D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x89, 0x21, 0x0E, 0x29, 0x2E, 0x21, 0x0E, 0x21, 0x2F, 0x21, 0x0F, 0x21, 0x2F, 0x19, 0x30, 0x19, 0x72, 0x19, 0x93, 0x21, 0xB4, 0x01, 0x21, 0xD4, 0x82, 0x19, 0x51, 0x11, 0x10, 0x19, 0x0F, 0x01, 0x21, 0x0F, 0x01, 0x29, 0x0E, 0x07, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x03, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x11, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x83, 0x21, 0x0D, 0x29, 0x2D, 0x21, 0x0D, 0x21, 0x0C, 0x01, 0x29, 0x2D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x21, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x89, 0x29, 0x2D, 0x21, 0x2D, 0x21, 0x2E, 0x19, 0x0E, 0x00, 0xCD, 0x11, 0x70, 0x53, 0xFA, 0x3B, 0xB9, 0x3B, 0xD9, 0x33, 0xD9, 0x01, 0x2B, 0xB9, 0x83, 0x23, 0xB9, 0x2B, 0xD9, 0x2B, 0xDA, 0x23, 0xDA, 0x02, 0x23, 0xB9, 0x87, 0x2B, 0xD9, 0x2B, 0xB8, 0x33, 0xD9, 0x3B, 0xD9, 0x5C, 0x3A, 0x09, + 0x2E, 0x18, 0xED, 0x20, 0xED, 0x01, 0x21, 0x0D, 0x8C, 0x29, 0x2D, 0x21, 0x0D, 0x29, 0x0D, 0x29, 0x2D, 0x21, 0x0D, 0x21, 0x0E, 0x11, 0x0E, 0x09, 0x4F, 0x5C, 0x3B, 0x3B, 0xD9, 0x2B, 0x99, 0x23, 0x78, 0x23, 0x99, 0x02, 0x23, 0xB9, 0x87, 0x23, 0x99, 0x2B, 0x99, 0x33, 0xBA, 0x4B, 0xFB, 0x64, 0x3B, 0x00, 0xAD, 0x10, 0xAD, 0x18, 0xEE, 0x01, 0x21, 0x0E, 0x81, 0x29, 0x0D, 0x20, 0xED, 0x01, 0x29, 0x0D, 0x80, 0x21, 0x0D, 0x01, 0x29, 0x0D, 0x87, 0x29, 0x2D, 0x20, 0xEC, 0x29, 0x0D, 0x18, 0xEC, 0x10, 0xCC, 0x09, 0x0D, 0x54, 0x1A, 0x33, 0x98, 0x01, 0x2B, 0xB9, 0x01, 0x23, 0xB9, 0x01, 0x23, 0x99, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x10, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x4C, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, + 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x1F, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x36, 0x29, 0x0D, 0x3F, 0x29, 0x2D, 0x55, 0x29, 0x0D, 0x25, 0x29, 0x2D, 0x25, 0x29, 0x0D, 0x05, 0x31, 0x2D, 0x02, 0x31, 0x2E, 0x01, 0x31, 0x2D, 0x80, 0x31, 0x2E, 0x01, 0x31, 0x2D, 0x01, 0x39, 0x0D, 0x88, 0x39, 0x0E, 0x39, 0x0D, 0x38, 0xED, 0x38, 0xCC, 0x48, 0x8C, 0x8A, 0x53, 0xC3, 0x98, 0xC3, 0x37, 0xCB, 0x37, 0x01, 0xD3, 0x17, 0x80, 0xCB, 0x17, 0x02, 0xCA, 0xF6, 0x8A, 0xCA, 0xF7, 0xC3, 0x17, 0xC3, 0x38, 0xBB, 0x38, 0xA2, 0xB7, 0x79, 0xD3, 0x40, 0x6F, 0x40, 0xB1, 0x40, 0xD1, 0x38, 0xF2, 0x39, 0x13, 0x01, 0x31, 0x13, 0x02, 0x31, 0x34, 0x82, 0x31, 0x35, 0x31, 0x75, 0x39, 0x75, 0x01, 0x39, 0x96, 0x02, 0x39, 0xB6, 0x81, 0x41, 0xB6, 0x39, 0xB6, 0x02, 0x41, 0xB6, 0x01, 0x41, 0xD7, 0x83, 0x41, 0xD6, 0x41, 0xD7, 0x41, 0xD6, 0x49, 0xD7, 0x02, 0x49, 0xF7, 0x81, 0x49, 0xD7, 0x49, 0xF7, 0x01, 0x49, 0xD7, 0x01, 0x49, 0xF7, 0x01, 0x49, 0xF8, 0x01, 0x4A, 0x18, 0x87, 0x4A, 0x19, 0x4A, 0x39, 0x4A, 0x19, 0x4A, 0x1A, 0x49, 0xFA, 0x41, 0xDA, 0x31, 0x79, 0x29, 0x38, 0x01, 0x21, 0x39, 0x88, 0x21, 0x3A, 0x19, 0x3A, 0x19, 0x3B, 0x11, 0x5B, 0x11, 0x5C, 0x11, 0x7C, 0x11, 0x7D, 0x09, 0x7D, 0x09, 0x9D, 0x01, 0x09, 0x9E, 0x80, 0x01, 0x9E, 0x01, 0x09, 0xBE, 0x01, 0x01, 0xBE, 0x02, 0x01, 0xDF, 0x80, 0x01, 0xFF, 0x01, 0x02, 0x1F, 0x81, 0x02, 0x3F, 0x02, 0x5F, 0x01, 0x02, 0x7F, 0x81, 0x02, 0x9F, 0x02, 0xBF, + 0x01, 0x02, 0xDF, 0x80, 0x02, 0xFF, 0x01, 0x03, 0x1F, 0x81, 0x03, 0x3F, 0x03, 0x5F, 0x01, 0x03, 0x7F, 0x80, 0x03, 0x9F, 0x01, 0x0B, 0xBF, 0x01, 0x0B, 0xDF, 0x87, 0x0B, 0xFF, 0x0C, 0x1F, 0x14, 0x3F, 0x0C, 0x3F, 0x0C, 0x3E, 0x14, 0x5E, 0x14, 0x7E, 0x1C, 0x7E, 0x01, 0x24, 0x9D, 0x80, 0x24, 0x7D, 0x01, 0x34, 0x9D, 0x87, 0x34, 0xBD, 0x34, 0xDD, 0x2C, 0xDD, 0x2C, 0xFE, 0x24, 0xDE, 0x1C, 0xDE, 0x14, 0xDE, 0x14, 0xFE, 0x01, 0x0C, 0xDF, 0x06, 0x04, 0xDF, 0x05, 0x04, 0xBF, 0x04, 0x04, 0x9F, 0x03, 0x04, 0x7F, 0x80, 0x04, 0xBF, 0x01, 0x04, 0xDF, 0x98, 0x04, 0xFF, 0x0D, 0x1E, 0x15, 0x3E, 0x2D, 0x5E, 0x4D, 0x7F, 0x7D, 0x7F, 0x63, 0x36, 0x7A, 0x94, 0x92, 0x74, 0x9A, 0x54, 0xA2, 0x14, 0x99, 0xD3, 0xA1, 0xF4, 0xA2, 0x14, 0x92, 0x34, 0x71, 0x51, 0x69, 0x92, 0x61, 0x92, 0x59, 0x91, 0x51, 0x71, 0x51, 0x92, 0x51, 0xB1, 0x51, 0x91, 0x49, 0x91, 0x49, 0x90, 0x01, 0x49, 0x70, 0x01, 0x41, 0x70, 0x80, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x01, 0x39, 0x2F, 0x82, 0x39, 0x2E, 0x39, 0x4E, 0x39, 0x2E, 0x01, 0x31, 0x2E, 0x80, 0x31, 0x0E, 0x01, 0x31, 0x0D, 0x01, 0x31, 0x2E, 0x80, 0x31, 0x0D, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x19, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x82, 0x28, 0xEC, 0x29, 0x0D, 0x31, 0x0D, 0x01, 0x28, 0xEC, 0x84, 0x28, 0xED, 0x29, 0x0D, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x02, + 0x21, 0x0E, 0x8D, 0x19, 0x0F, 0x19, 0x30, 0x19, 0x52, 0x19, 0x93, 0x21, 0xD4, 0x21, 0xF4, 0x21, 0xB3, 0x19, 0x51, 0x19, 0x10, 0x19, 0x0F, 0x21, 0x2F, 0x21, 0x0E, 0x29, 0x2E, 0x29, 0x0E, 0x04, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x21, 0x0D, 0x01, 0x29, 0x0D, 0x01, 0x21, 0x2D, 0x03, 0x29, 0x2D, 0x82, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x88, 0x21, 0x0D, 0x21, 0x0E, 0x18, 0xEE, 0x08, 0xCE, 0x19, 0x71, 0x63, 0xFB, 0x4B, 0x9A, 0x4B, 0xBA, 0x43, 0xBA, 0x03, 0x3B, 0x9A, 0x82, 0x33, 0x9A, 0x3B, 0xBA, 0x3C, 0x1B, 0x01, 0x3B, 0xFA, 0x8C, 0x3C, 0x1A, 0x3B, 0xD9, 0x43, 0xD9, 0x4C, 0x1A, 0x74, 0x9C, 0x19, 0x4F, 0x18, 0xED, 0x21, 0x0D, 0x29, 0x0D, 0x20, 0xEC, 0x21, 0x0D, 0x29, 0x0D, 0x20, 0xEC, 0x01, 0x21, 0x0D, 0x85, 0x20, 0xEE, 0x10, 0xCD, 0x5B, 0x78, 0x53, 0xBA, 0x43, 0x79, 0x3B, 0x79, 0x02, 0x3B, 0x9A, 0x01, 0x3B, 0xBA, 0x88, 0x43, 0xBB, 0x3B, 0x5A, 0x43, 0x39, 0x4B, 0x59, 0x5B, 0x9A, 0x63, 0x59, 0x10, 0xAE, 0x18, 0xCE, 0x20, 0xEE, 0x01, 0x29, 0x0E, 0x81, + 0x29, 0x0D, 0x29, 0x2E, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x8A, 0x20, 0xED, 0x10, 0xCD, 0x19, 0x2E, 0x64, 0x1A, 0x4B, 0xB9, 0x43, 0xBA, 0x3B, 0x99, 0x3B, 0x79, 0x3B, 0x9A, 0x3B, 0xBB, 0x3B, 0x9A, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x16, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x1D, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x24, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x89, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x16, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x14, 0x29, 0x0D, 0x80, + 0x29, 0x2D, 0x1D, 0x29, 0x0D, 0x09, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x27, 0x29, 0x2D, 0x5C, 0x29, 0x0D, 0x1D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x2D, 0x25, 0x29, 0x0D, 0x05, 0x31, 0x2D, 0x81, 0x31, 0x0D, 0x31, 0x2E, 0x01, 0x31, 0x2D, 0x80, 0x31, 0x2E, 0x02, 0x31, 0x2D, 0x02, 0x39, 0x0D, 0x86, 0x38, 0xED, 0x38, 0xCC, 0x38, 0x6B, 0x81, 0xF2, 0xBB, 0x57, 0xC3, 0x37, 0xCB, 0x37, 0x01, 0xD3, 0x37, 0x03, 0xCB, 0x17, 0x88, 0xC3, 0x17, 0xC3, 0x37, 0xC3, 0x58, 0x92, 0x55, 0x61, 0x10, 0x48, 0xAF, 0x40, 0xD0, 0x40, 0xF1, 0x38, 0xF1, 0x01, 0x39, 0x12, 0x80, 0x39, 0x33, 0x01, 0x31, 0x33, 0x02, 0x31, 0x54, 0x81, 0x39, 0x54, 0x39, 0x74, 0x01, 0x39, 0x95, 0x85, 0x39, 0x94, 0x41, 0x95, 0x39, 0x94, 0x41, 0x94, 0x41, 0x95, 0x41, 0xB5, 0x07, 0x41, 0xB4, 0x04, 0x49, 0xB4, 0x80, 0x49, 0xB5, 0x01, 0x49, 0xB4, 0x06, 0x51, 0xD5, 0x83, 0x51, 0xF6, 0x51, 0xD6, 0x49, 0xD6, 0x51, 0xD7, 0x01, 0x51, 0xF8, 0x89, 0x41, 0xD9, 0x39, 0x78, 0x31, 0x58, 0x29, 0x58, 0x29, 0x38, 0x21, 0x39, 0x21, 0x59, 0x19, 0x39, 0x19, 0x5A, 0x11, 0x5B, 0x01, 0x11, 0x7C, 0x80, 0x11, 0x9D, 0x01, 0x09, 0x9D, 0x02, 0x09, 0xBE, 0x01, 0x09, 0xDE, 0x80, 0x01, 0xDE, 0x01, 0x01, 0xFF, 0x83, 0x02, 0x1F, 0x02, 0x3F, 0x02, 0x5F, 0x02, 0x7F, 0x01, 0x02, 0x9F, 0x01, 0x02, 0xDF, 0x01, 0x02, 0xFF, 0x84, 0x03, 0x1F, 0x03, 0x3F, 0x03, 0x5F, 0x03, 0x7F, 0x03, 0x9F, 0x01, 0x03, 0xBF, 0x01, 0x03, 0xDF, 0x80, 0x0B, 0xFF, 0x01, 0x0C, 0x1F, 0x80, 0x0C, 0x3F, 0x01, 0x0C, 0x5F, 0x01, 0x0C, + 0x7F, 0x85, 0x0C, 0xBF, 0x0C, 0xBE, 0x14, 0xDF, 0x14, 0xDE, 0x1C, 0xFE, 0x1C, 0xDE, 0x01, 0x24, 0xFE, 0x01, 0x25, 0x1E, 0x80, 0x1D, 0x1E, 0x01, 0x1D, 0x3E, 0x83, 0x15, 0x1E, 0x0D, 0x1E, 0x0C, 0xFF, 0x0D, 0x1F, 0x04, 0x04, 0xFF, 0x06, 0x04, 0xDF, 0x03, 0x04, 0xBF, 0x06, 0x04, 0x9F, 0x80, 0x04, 0xBF, 0x01, 0x04, 0xFF, 0x91, 0x05, 0x1F, 0x0D, 0x5F, 0x15, 0x3E, 0x2D, 0x7F, 0x4D, 0x9F, 0x75, 0xBF, 0x63, 0x97, 0x6A, 0x74, 0x92, 0x74, 0x9A, 0x54, 0xA2, 0x34, 0x99, 0xD3, 0xA1, 0xF4, 0xA2, 0x34, 0xA2, 0x55, 0x79, 0x92, 0x69, 0x72, 0x61, 0x92, 0x01, 0x59, 0x92, 0x02, 0x51, 0x91, 0x82, 0x49, 0x91, 0x49, 0x90, 0x49, 0x70, 0x02, 0x41, 0x70, 0x02, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x82, 0x39, 0x2E, 0x31, 0x2E, 0x39, 0x2E, 0x06, 0x31, 0x2E, 0x83, 0x31, 0x0D, 0x31, 0x2D, 0x29, 0x0D, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x81, 0x31, 0x0D, 0x28, 0xED, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0D, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x82, 0x31, 0x2D, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x81, 0x21, 0x0D, 0x20, 0xED, 0x01, 0x21, 0x0E, 0x8B, 0x19, 0x0F, 0x19, 0x30, 0x19, 0x72, 0x19, 0x93, 0x21, 0xB4, 0x21, 0xF4, 0x21, 0x93, 0x19, 0x51, 0x19, 0x10, 0x19, 0x0F, 0x21, 0x0F, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x03, 0x29, 0x0D, 0x83, + 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x21, 0x2D, 0x80, 0x21, 0x0D, 0x03, 0x21, 0x2D, 0x01, 0x21, 0x2E, 0x02, 0x21, 0x2D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x87, 0x20, 0xED, 0x20, 0xEE, 0x10, 0x8D, 0x21, 0x30, 0x73, 0xFC, 0x5B, 0x9A, 0x5B, 0x7B, 0x53, 0x5A, 0x01, 0x4B, 0x3A, 0x84, 0x4B, 0x5A, 0x4B, 0x7A, 0x4B, 0x5A, 0x4B, 0x7A, 0x5C, 0x1C, 0x01, 0x4B, 0xDA, 0x01, 0x4B, 0xBA, 0x86, 0x53, 0xB9, 0x5B, 0xDA, 0x74, 0x3B, 0x31, 0xB1, 0x20, 0xEE, 0x20, 0xED, 0x28, 0xED, 0x03, 0x29, 0x0D, 0x8A, 0x28, 0xED, 0x28, 0xEE, 0x18, 0x8D, 0x4A, 0x34, 0x6B, 0x9A, 0x5B, 0x39, 0x53, 0x39, 0x53, 0x7B, 0x53, 0x7A, 0x53, 0x7B, 0x4B, 0x7A, 0x01, 0x4B, 0x5A, 0x88, 0x53, 0x5B, 0x5B, 0x7B, 0x5B, 0x3A, 0x5B, 0x19, 0x63, 0x19, 0x6B, 0x39, 0x41, 0xF3, 0x10, 0x4C, 0x28, 0xEE, 0x02, 0x28, 0xED, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x20, 0xED, 0x82, 0x18, 0xAC, 0x10, 0xCD, 0x6B, 0xDA, 0x01, 0x5B, 0x9A, 0x84, 0x53, 0x7A, 0x53, 0x5A, 0x4B, 0x5A, 0x4B, 0x7B, 0x4B, 0x5A, 0x02, 0x28, 0xEC, 0x03, 0x29, + 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x05, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x37, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x11, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x6A, 0x29, 0x0D, 0x1E, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x63, 0x29, 0x0D, 0x15, 0x29, 0x2D, 0x2D, 0x29, 0x0D, 0x05, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x02, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x01, 0x39, 0x0D, 0x86, 0x38, 0xED, 0x38, 0xCC, 0x40, 0x8C, 0x79, 0xF2, 0xC3, 0x98, 0xC3, 0x37, 0xCB, 0x37, 0x04, 0xCB, 0x17, 0x8A, 0xC3, 0x17, 0xC3, 0x37, 0xB2, 0xF7, 0x92, 0x75, 0x50, 0xCE, 0x40, 0x8E, 0x40, 0xCF, 0x40, 0xF0, 0x39, 0x10, 0x39, 0x11, 0x39, 0x32, + 0x01, 0x39, 0x52, 0x80, 0x41, 0x73, 0x03, 0x41, 0x94, 0x84, 0x41, 0x73, 0x39, 0x73, 0x41, 0x73, 0x41, 0x93, 0x41, 0x94, 0x09, 0x41, 0x93, 0x80, 0x49, 0xB3, 0x01, 0x49, 0x92, 0x80, 0x49, 0xB3, 0x02, 0x49, 0xB2, 0x81, 0x49, 0x92, 0x49, 0x93, 0x02, 0x49, 0xB3, 0x04, 0x51, 0xB3, 0x83, 0x51, 0xD4, 0x51, 0xB4, 0x51, 0xD4, 0x51, 0xB4, 0x02, 0x51, 0xD5, 0x80, 0x51, 0xD6, 0x01, 0x51, 0xF7, 0x01, 0x52, 0x18, 0x85, 0x51, 0xF8, 0x49, 0xD8, 0x41, 0xB8, 0x31, 0x98, 0x29, 0x78, 0x21, 0x79, 0x01, 0x19, 0x5A, 0x01, 0x11, 0x7B, 0x81, 0x11, 0x9C, 0x09, 0x9D, 0x01, 0x09, 0xBD, 0x81, 0x09, 0xDD, 0x09, 0xDE, 0x01, 0x09, 0xFE, 0x82, 0x02, 0x1E, 0x02, 0x3E, 0x02, 0x5F, 0x01, 0x02, 0x7F, 0x80, 0x02, 0x9F, 0x01, 0x02, 0xDF, 0x01, 0x03, 0x1F, 0x84, 0x03, 0x3F, 0x03, 0x5F, 0x03, 0x7F, 0x03, 0x9F, 0x03, 0xBF, 0x02, 0x03, 0xDF, 0x01, 0x03, 0xFF, 0x81, 0x04, 0x1F, 0x04, 0x3F, 0x01, 0x04, 0x5F, 0x87, 0x0C, 0x7F, 0x04, 0x9F, 0x04, 0xBF, 0x04, 0xDF, 0x0C, 0xFF, 0x0D, 0x1F, 0x0D, 0x3F, 0x0D, 0x1E, 0x04, 0x15, 0x3E, 0x80, 0x15, 0x5E, 0x02, 0x15, 0x5F, 0x01, 0x0D, 0x3F, 0x81, 0x05, 0x1F, 0x05, 0x3F, 0x02, 0x05, 0x1F, 0x01, 0x04, 0xFF, 0x80, 0x05, 0x1F, 0x03, 0x04, 0xFF, 0x04, 0x04, 0xDF, 0x01, 0x04, 0xBF, 0x01, 0x04, 0x9F, 0x01, 0x04, 0xBF, 0x82, 0x04, 0x9F, 0x04, 0xBF, 0x04, 0xDF, 0x01, 0x05, 0x1F, 0x91, 0x05, 0x3F, 0x0D, 0x7F, 0x15, 0x7F, 0x2D, 0x9F, 0x4D, 0xDF, 0x75, 0xFF, 0x5B, 0xD8, 0x62, 0x74, 0x8A, 0x74, 0x9A, 0x95, 0xA2, 0x34, 0xA1, 0xF3, 0xA1, + 0xF4, 0xA2, 0x14, 0xA2, 0x55, 0x89, 0xD3, 0x71, 0x71, 0x69, 0xB2, 0x01, 0x59, 0x91, 0x02, 0x51, 0x91, 0x01, 0x49, 0x91, 0x81, 0x49, 0x70, 0x41, 0x70, 0x01, 0x41, 0x50, 0x80, 0x41, 0x6F, 0x01, 0x41, 0x4F, 0x80, 0x39, 0x4F, 0x03, 0x39, 0x2E, 0x06, 0x31, 0x2E, 0x82, 0x31, 0x2D, 0x29, 0x0D, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x04, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x12, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0E, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x01, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x01, 0x21, 0x0E, 0x89, 0x19, 0x0F, 0x19, 0x30, 0x19, 0x51, 0x19, 0x93, 0x21, 0xB4, 0x21, 0xD4, 0x21, 0xB3, 0x19, 0x52, 0x19, 0x10, 0x19, 0x0F, 0x01, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x84, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x21, 0x2D, 0x21, 0x0D, 0x01, 0x21, 0x2E, 0x01, 0x21, 0x0E, 0x80, 0x19, 0x0E, 0x03, 0x21, 0x2E, 0x03, 0x21, 0x0D, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x84, 0x29, + 0x0E, 0x20, 0xCD, 0x18, 0x8D, 0x29, 0x31, 0x84, 0x1D, 0x01, 0x73, 0x7B, 0x87, 0x6B, 0x5B, 0x6B, 0x3B, 0x63, 0x3B, 0x6B, 0x7C, 0x6B, 0x5B, 0x6B, 0x9C, 0x29, 0xB4, 0x00, 0x2E, 0x02, 0x00, 0x0D, 0x84, 0x00, 0x2D, 0x00, 0x2C, 0x00, 0x0C, 0x00, 0x0B, 0x20, 0xAE, 0x01, 0x28, 0xAD, 0x80, 0x28, 0xCD, 0x01, 0x29, 0x0D, 0x01, 0x28, 0xED, 0x85, 0x28, 0xCD, 0x20, 0xAD, 0x39, 0x30, 0x7B, 0x5A, 0x73, 0x39, 0x73, 0x3A, 0x01, 0x6B, 0x3B, 0x01, 0x63, 0x3B, 0x80, 0x63, 0x5B, 0x01, 0x63, 0x3B, 0x81, 0x63, 0x1B, 0x6B, 0x3B, 0x01, 0x73, 0x3B, 0x86, 0x7B, 0x1B, 0x7B, 0x1A, 0x83, 0x3A, 0x28, 0xCF, 0x20, 0x8D, 0x28, 0xCE, 0x28, 0xCD, 0x01, 0x28, 0xED, 0x05, 0x29, 0x0D, 0x87, 0x28, 0xED, 0x20, 0xCD, 0x20, 0xAD, 0x20, 0xEE, 0x7B, 0xDB, 0x6B, 0x7A, 0x6B, 0x7B, 0x63, 0x3A, 0x01, 0x6B, 0x5B, 0x81, 0x63, 0x3B, 0x5B, 0x3B, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x0C, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0B, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x12, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x10, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x26, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x0C, + 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x8D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x4F, 0x29, 0x0D, 0x17, 0x29, 0x2D, 0x62, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x13, 0x29, 0x2D, 0x2D, 0x29, 0x0D, 0x04, 0x31, 0x2D, 0x80, 0x31, 0x0D, 0x02, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x86, 0x39, 0x0D, 0x38, 0xED, 0x38, 0xCC, 0x38, 0x6B, 0x71, 0xB0, 0xBB, 0x77, 0xC3, 0x57, 0x04, 0xCB, 0x37, 0x8D, 0xC3, 0x37, 0xC3, 0x57, 0xBB, 0x78, 0x79, 0x91, 0x58, 0xCE, 0x40, 0x8D, 0x40, 0xCE, 0x38, 0xEF, 0x41, 0x10, 0x41, 0x30, 0x39, 0x31, 0x39, 0x51, 0x41, 0x52, 0x39, 0x52, 0x01, 0x41, 0x72, 0x01, 0x41, 0x73, 0x04, 0x41, 0x72, 0x04, 0x41, 0x92, 0x09, 0x49, 0x92, 0x04, 0x49, 0x91, 0x80, 0x49, 0xB2, 0x01, 0x49, 0x92, 0x01, 0x51, 0xB2, 0x02, 0x51, 0x92, 0x02, 0x51, 0xB2, 0x04, 0x51, 0xB3, 0x81, 0x51, 0xB4, 0x51, 0xD5, 0x01, 0x59, 0xF5, 0x81, 0x59, 0xF6, 0x51, 0xF6, 0x01, 0x51, 0xF7, 0x8D, 0x49, 0xF8, 0x41, 0xD8, 0x39, + 0xB8, 0x31, 0xB9, 0x29, 0x79, 0x21, 0x59, 0x19, 0x79, 0x19, 0x7A, 0x11, 0x7B, 0x11, 0x9C, 0x11, 0xBC, 0x11, 0xDC, 0x11, 0xDD, 0x11, 0xFD, 0x01, 0x0A, 0x1E, 0x8B, 0x0A, 0x3E, 0x0A, 0x7E, 0x02, 0x7E, 0x02, 0x9F, 0x02, 0xBF, 0x02, 0xDF, 0x02, 0xFF, 0x03, 0x1F, 0x03, 0x5F, 0x03, 0x7F, 0x03, 0x9F, 0x03, 0xBF, 0x02, 0x03, 0xDF, 0x01, 0x03, 0xFF, 0x01, 0x04, 0x1F, 0x01, 0x04, 0x5F, 0x86, 0x04, 0x7F, 0x04, 0x9F, 0x04, 0xBF, 0x04, 0xDF, 0x04, 0xFF, 0x05, 0x1F, 0x0D, 0x3F, 0x01, 0x0D, 0x5F, 0x06, 0x0D, 0x7F, 0x01, 0x0D, 0x9F, 0x01, 0x0D, 0x7F, 0x02, 0x05, 0x5F, 0x03, 0x05, 0x3F, 0x03, 0x05, 0x1F, 0x04, 0x04, 0xFF, 0x02, 0x04, 0xDF, 0x05, 0x04, 0xBF, 0x82, 0x04, 0xDF, 0x04, 0xFF, 0x05, 0x3F, 0x01, 0x05, 0x5F, 0x92, 0x0D, 0x7F, 0x15, 0x9F, 0x25, 0x9E, 0x45, 0xDF, 0x6E, 0x1F, 0x5C, 0x39, 0x5A, 0x74, 0x82, 0x74, 0x92, 0x54, 0xA2, 0x34, 0xA1, 0xF3, 0xA1, 0xD3, 0xA1, 0xF4, 0xAA, 0x35, 0x92, 0x14, 0x71, 0x51, 0x71, 0xB2, 0x61, 0x92, 0x59, 0x71, 0x02, 0x51, 0x91, 0x86, 0x49, 0x91, 0x49, 0x90, 0x49, 0x70, 0x41, 0x70, 0x41, 0x50, 0x41, 0x70, 0x41, 0x6F, 0x02, 0x39, 0x4F, 0x03, 0x39, 0x2E, 0x02, 0x31, 0x2E, 0x84, 0x31, 0x0D, 0x31, 0x2E, 0x31, 0x2D, 0x31, 0x2E, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x02, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x0F, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0C, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x80, 0x28, 0xED, + 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x21, 0x0E, 0x8B, 0x19, 0x0F, 0x19, 0x30, 0x19, 0x51, 0x19, 0x73, 0x21, 0xD4, 0x21, 0xF4, 0x21, 0xB3, 0x19, 0x51, 0x19, 0x10, 0x19, 0x0F, 0x21, 0x0F, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x12, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x07, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x2C, 0x04, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x21, 0x0D, 0x21, 0x2D, 0x01, 0x21, 0x2E, 0x01, 0x19, 0x0E, 0x03, 0x19, 0x2F, 0x81, 0x19, 0x2E, 0x21, 0x2F, 0x03, 0x21, 0x0E, 0x80, 0x21, 0x0D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x87, 0x28, 0xED, 0x20, 0xCD, 0x18, 0x8D, 0x31, 0x11, 0x93, 0xDD, 0x83, 0x5B, 0x83, 0x3B, 0x7B, 0x1B, 0x02, 0x7A, 0xFB, 0x84, 0x7B, 0x1B, 0x8B, 0x9D, 0x5A, 0x17, 0x20, 0x70, 0x20, 0x2F, 0x03, 0x18, 0x0E, 0x01, 0x18, 0x0D, 0x80, 0x18, 0x0C, 0x01, 0x28, 0x8D, 0x89, 0x30, 0xCD, 0x28, 0xCD, 0x30, 0xED, 0x28, 0xED, 0x28, 0xAD, 0x28, 0xAE, 0x20, 0x2D, 0x7A, 0xB8, 0x82, 0xFA, 0x7A, 0xFA, 0x01, 0x83, 0x1B, 0x01, 0x7B, 0x1B, 0x02, 0x73, 0x1B, 0x82, 0x72, 0xFB, 0x7A, 0xFB, 0x7A, 0xFC, 0x01, 0x82, 0xFB, 0x89, 0x82, 0xDB, 0x82, 0xDA, 0x82, 0xFA, 0x72, 0x77, 0x20, 0x2D, 0x28, 0xAE, 0x28, + 0xCD, 0x28, 0xED, 0x29, 0x0D, 0x28, 0xED, 0x04, 0x29, 0x0D, 0x84, 0x28, 0xED, 0x20, 0xCD, 0x20, 0xAD, 0x20, 0xAE, 0x83, 0x9B, 0x01, 0x83, 0x5B, 0x80, 0x7B, 0x1B, 0x01, 0x7A, 0xFB, 0x01, 0x72, 0xFB, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x0F, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x86, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x0D, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, + 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x85, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x87, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x84, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x57, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x73, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x0B, 0x29, 0x2D, 0x2D, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x05, 0x31, 0x2D, 0x80, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x03, 0x31, 0x0D, 0x87, 0x39, 0x0D, 0x38, 0xED, 0x38, 0xCC, 0x40, 0xAC, 0x71, 0xD1, 0xC3, 0xD9, 0xC3, 0x78, 0xCB, 0x57, 0x02, 0xCB, 0x37, 0x8B, 0xC3, 0x37, 0xC3, 0x58, 0xB3, 0x37, 0x92, 0x74, 0x48, 0x6C, 0x40, 0xAD, 0x40, 0xCE, 0x40, 0xEE, 0x39, 0x0F, 0x39, 0x2F, 0x39, 0x0F, 0x39, 0x30, 0x03, 0x39, 0x51, 0x02, 0x39, 0x71, 0x01, 0x39, 0x51, 0x03, 0x41, 0x71, 0x10, 0x49, 0x91, 0x82, 0x51, 0x91, 0x51, 0xB1, 0x49, 0xB1, 0x01, 0x51, 0xB1, 0x80, 0x51, 0x91, 0x02, 0x51, 0xB1, 0x03, 0x51, 0x91, 0x81, 0x51, 0xB2, 0x51, 0x92, 0x03, 0x51, 0xB2, 0x01, 0x51, 0xB3, + 0x80, 0x51, 0xD3, 0x01, 0x51, 0xD4, 0x81, 0x51, 0xD5, 0x51, 0xF5, 0x02, 0x51, 0xF6, 0x92, 0x52, 0x17, 0x52, 0x18, 0x4A, 0x18, 0x42, 0x19, 0x39, 0xF9, 0x31, 0xD9, 0x29, 0xBA, 0x21, 0x9A, 0x19, 0xBB, 0x19, 0xDC, 0x19, 0xFC, 0x1A, 0x1D, 0x1A, 0x3D, 0x12, 0x3D, 0x12, 0x5E, 0x12, 0x7E, 0x0A, 0x9E, 0x0A, 0xBE, 0x0A, 0xDE, 0x01, 0x02, 0xFF, 0x83, 0x03, 0x3F, 0x03, 0x5F, 0x03, 0x7F, 0x03, 0x9F, 0x01, 0x03, 0xBF, 0x01, 0x03, 0xDF, 0x85, 0x03, 0xFF, 0x04, 0x1F, 0x04, 0x3F, 0x04, 0x5F, 0x04, 0x7F, 0x04, 0x9F, 0x01, 0x04, 0xBF, 0x01, 0x04, 0xFF, 0x82, 0x05, 0x1F, 0x05, 0x3F, 0x05, 0x5F, 0x02, 0x0D, 0x9F, 0x02, 0x0D, 0xBF, 0x01, 0x0D, 0x9F, 0x83, 0x05, 0x9F, 0x0D, 0xBF, 0x0D, 0x9F, 0x05, 0x9F, 0x03, 0x05, 0x7F, 0x01, 0x05, 0x5F, 0x81, 0x05, 0x3F, 0x05, 0x5F, 0x01, 0x05, 0x3F, 0x04, 0x05, 0x1F, 0x81, 0x04, 0xFF, 0x05, 0x1F, 0x02, 0x04, 0xFF, 0x05, 0x04, 0xDF, 0x82, 0x04, 0xFF, 0x05, 0x3F, 0x05, 0x5F, 0x01, 0x05, 0x7F, 0x98, 0x0D, 0x9F, 0x15, 0xBF, 0x25, 0xBF, 0x3D, 0xFF, 0x66, 0x3F, 0x6C, 0xFC, 0x52, 0x73, 0x72, 0x53, 0x92, 0x54, 0x9A, 0x33, 0xA1, 0xF3, 0xA9, 0xF4, 0xA9, 0xF3, 0xAA, 0x14, 0x9A, 0x14, 0x79, 0x92, 0x71, 0x92, 0x61, 0x92, 0x59, 0x71, 0x51, 0x91, 0x51, 0x71, 0x51, 0xB1, 0x51, 0x91, 0x49, 0x91, 0x49, 0x70, 0x02, 0x41, 0x70, 0x80, 0x41, 0x6F, 0x01, 0x41, 0x4F, 0x81, 0x39, 0x4F, 0x39, 0x4E, 0x02, 0x39, 0x2E, 0x85, 0x39, 0x4E, 0x39, 0x2E, 0x31, 0x2E, 0x31, 0x0D, 0x31, 0x2D, 0x31, 0x2E, 0x01, 0x31, 0x2D, 0x03, 0x31, 0x0D, + 0x24, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x83, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x82, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x2E, 0x01, 0x21, 0x0E, 0x83, 0x19, 0x0F, 0x19, 0x10, 0x19, 0x52, 0x19, 0x93, 0x01, 0x21, 0xD4, 0x88, 0x21, 0xB3, 0x19, 0x51, 0x19, 0x10, 0x18, 0xEF, 0x21, 0x0F, 0x21, 0x2E, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x07, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x01, 0x21, 0x0D, 0x01, 0x21, 0x2E, 0x01, 0x19, 0x2F, 0x81, 0x19, 0x4F, 0x11, 0x30, 0x03, 0x19, 0x50, 0x01, 0x19, 0x30, 0x01, 0x21, 0x2F, 0x82, 0x21, 0x0E, 0x29, 0x0E, 0x21, 0x0D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x89, 0x28, 0xCD, 0x20, 0xAD, 0x20, 0x6D, 0x38, 0xF0, 0x9B, 0xBD, 0x93, 0x3C, 0x8A, 0xDB, 0x92, 0xDB, 0x8A, 0xBB, 0x92, 0xDC, + 0x01, 0x8A, 0x9B, 0x97, 0x82, 0x7A, 0x9A, 0xFD, 0xAB, 0xBF, 0xB3, 0xDF, 0xAB, 0xBF, 0xB3, 0xFF, 0xA3, 0xBE, 0xA3, 0x9D, 0x9B, 0x7C, 0xAB, 0xFD, 0xB4, 0x3D, 0x72, 0x35, 0x28, 0x0C, 0x30, 0xAE, 0x30, 0xAD, 0x30, 0xCD, 0x28, 0xAD, 0x28, 0x8D, 0x28, 0x4D, 0x69, 0xF5, 0x92, 0xFA, 0x92, 0xBA, 0x92, 0xDB, 0x8A, 0xBB, 0x01, 0x92, 0xDC, 0x81, 0x8A, 0xFC, 0x8B, 0x1C, 0x01, 0x8A, 0xFC, 0x02, 0x8A, 0xDC, 0x8B, 0x92, 0xFC, 0x8A, 0x9B, 0x92, 0x9B, 0x92, 0x9A, 0x92, 0xBA, 0x8A, 0xB9, 0x49, 0x11, 0x20, 0x0C, 0x28, 0x8D, 0x30, 0xCD, 0x28, 0xED, 0x31, 0x0D, 0x04, 0x29, 0x0D, 0x88, 0x20, 0xCC, 0x20, 0xCD, 0x20, 0x8D, 0x28, 0x8E, 0x93, 0x7B, 0x93, 0x3B, 0x92, 0xDB, 0x92, 0xDC, 0x8A, 0x9B, 0x02, 0x8A, 0xBB, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x84, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0F, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, + 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x88, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x89, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x58, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x75, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x09, 0x29, 0x2D, 0x2E, 0x29, 0x0D, 0x01, + 0x31, 0x0D, 0x03, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x04, 0x31, 0x0D, 0x80, 0x30, 0xED, 0x01, 0x38, 0xEC, 0x86, 0x38, 0xAB, 0x69, 0xB0, 0xBB, 0x98, 0xC3, 0x78, 0xCB, 0x78, 0xCB, 0x58, 0xCB, 0x57, 0x01, 0xC3, 0x57, 0x85, 0xC3, 0x98, 0x81, 0xF2, 0x58, 0xEE, 0x48, 0x8C, 0x40, 0xCD, 0x40, 0xEE, 0x01, 0x39, 0x0E, 0x02, 0x39, 0x2F, 0x80, 0x41, 0x50, 0x01, 0x39, 0x50, 0x01, 0x41, 0x70, 0x81, 0x39, 0x70, 0x41, 0x71, 0x06, 0x41, 0x70, 0x04, 0x49, 0x70, 0x03, 0x49, 0x90, 0x01, 0x49, 0x91, 0x85, 0x49, 0x90, 0x51, 0xB1, 0x49, 0x90, 0x51, 0x91, 0x49, 0x90, 0x49, 0x91, 0x01, 0x51, 0xB1, 0x01, 0x49, 0x90, 0x01, 0x51, 0x91, 0x80, 0x49, 0x90, 0x07, 0x51, 0x91, 0x02, 0x51, 0xB1, 0x03, 0x51, 0xB2, 0x02, 0x51, 0xB3, 0x02, 0x51, 0xD4, 0x81, 0x51, 0xD5, 0x51, 0xF5, 0x01, 0x51, 0xF6, 0x80, 0x52, 0x17, 0x01, 0x4A, 0x18, 0x8B, 0x42, 0x19, 0x39, 0xF9, 0x29, 0xD9, 0x29, 0xDA, 0x29, 0xFB, 0x22, 0x1B, 0x22, 0x3C, 0x22, 0x5C, 0x1A, 0x7D, 0x1A, 0x9D, 0x1A, 0xBE, 0x12, 0xDE, 0x01, 0x0A, 0xFE, 0x84, 0x0B, 0x1E, 0x03, 0x5E, 0x03, 0x7F, 0x03, 0x9F, 0x03, 0xBF, 0x01, 0x03, 0xDF, 0x87, 0x03, 0xFF, 0x04, 0x1F, 0x04, 0x3F, 0x04, 0x5F, 0x04, 0x7F, 0x04, 0x9F, 0x04, 0xBF, 0x04, 0xDF, 0x01, 0x04, 0xFF, 0x87, 0x05, 0x1F, 0x05, 0x3F, 0x05, 0x5F, 0x05, 0x7F, 0x05, 0x9F, 0x05, 0xBF, 0x0D, 0xBF, 0x0D, 0xDF, 0x02, 0x05, 0xDF, 0x80, 0x05, 0xBF, 0x02, 0x05, 0xDF, 0x01, 0x05, 0xBF, 0x02, 0x05, 0x9F, 0x81, 0x05, 0x7F, 0x05, 0x9F, 0x01, 0x05, 0x7F, 0x02, + 0x05, 0x5F, 0x03, 0x05, 0x3F, 0x03, 0x05, 0x1F, 0x07, 0x04, 0xFF, 0x82, 0x05, 0x1F, 0x05, 0x5F, 0x05, 0x7F, 0x02, 0x05, 0x9F, 0x90, 0x15, 0xDF, 0x25, 0xFF, 0x35, 0xFF, 0x5E, 0x5F, 0x6D, 0x5D, 0x4A, 0xB4, 0x72, 0x74, 0x92, 0x74, 0x9A, 0x33, 0xAA, 0x14, 0xA9, 0xF3, 0xA9, 0xF4, 0xA1, 0xF4, 0xA2, 0x35, 0x89, 0xB2, 0x71, 0x92, 0x69, 0x92, 0x01, 0x59, 0x92, 0x02, 0x51, 0x91, 0x80, 0x49, 0x70, 0x01, 0x49, 0x90, 0x01, 0x41, 0x70, 0x01, 0x41, 0x4F, 0x03, 0x39, 0x4F, 0x01, 0x39, 0x2E, 0x02, 0x31, 0x2E, 0x80, 0x31, 0x0D, 0x03, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x81, 0x29, 0x0D, 0x31, 0x0D, 0x1E, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x83, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x4D, 0x02, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x83, 0x21, 0x2F, 0x19, 0x30, 0x19, 0x51, 0x19, 0x93, 0x01, 0x21, 0xD4, 0x87, 0x21, 0xB3, 0x19, 0x51, 0x11, 0x0F, 0x19, 0x0F, 0x19, 0x0E, 0x21, 0x2E, 0x21, 0x0E, 0x29, 0x0E, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x04, 0x29, + 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x86, 0x21, 0x0D, 0x21, 0x2D, 0x21, 0x2E, 0x19, 0x2E, 0x19, 0x4F, 0x19, 0x50, 0x19, 0x51, 0x01, 0x11, 0x71, 0x83, 0x19, 0x92, 0x19, 0x72, 0x19, 0x92, 0x19, 0x72, 0x01, 0x19, 0x51, 0x01, 0x19, 0x30, 0x82, 0x21, 0x0F, 0x21, 0x0E, 0x21, 0x0D, 0x03, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x8D, 0x31, 0x0D, 0x28, 0xED, 0x28, 0xAD, 0x28, 0x4D, 0x38, 0xB0, 0xAB, 0x9D, 0xA3, 0x1C, 0x9A, 0xDC, 0xA2, 0xBC, 0xA2, 0x9C, 0xA2, 0x7C, 0x9A, 0x7C, 0x9A, 0x7B, 0x9A, 0x7C, 0x01, 0x9A, 0x5B, 0x93, 0xA2, 0x9C, 0x9A, 0x9C, 0x92, 0x7B, 0x9A, 0x9B, 0x9A, 0xBB, 0xA3, 0x1C, 0xAB, 0x3C, 0xAB, 0x5B, 0x8A, 0x98, 0x30, 0x0D, 0x38, 0x8E, 0x30, 0x8D, 0x30, 0xAE, 0x30, 0x8E, 0x30, 0x4E, 0x40, 0x90, 0x9A, 0xFA, 0x9A, 0xBA, 0xA2, 0x9B, 0x9A, 0x7B, 0x01, 0xA2, 0xBC, 0x92, 0x9A, 0xBC, 0x9A, 0xDC, 0x9B, 0x1D, 0x9A, 0xFC, 0x9B, 0x1D, 0x92, 0xDC, 0x9A, 0xBC, 0x9A, 0xDC, 0x9A, 0xBC, 0xA2, 0xBC, 0xA2, 0x9C, 0xA2, 0x9B, 0x9A, 0x9B, 0x9A, 0xBA, 0x92, 0x99, 0x38, 0x2E, 0x28, 0x2D, 0x28, 0x8D, 0x30, 0xEE, 0x01, 0x28, 0xED, 0x03, 0x29, 0x0D, 0x87, 0x28, 0xED, 0x20, 0xAC, 0x20, 0x6C, 0x28, 0x4E, 0x9B, 0x3B, 0xA3, 0x1C, 0xA2, 0xBC, 0xA2, 0x9C, 0x02, 0x9A, 0x7C, 0x84, 0x9A, 0x9C, 0x29, 0x0D, 0x28, 0xEC, 0x29, 0x0D, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x81, 0x31, 0x0D, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, + 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x16, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x7F, 0x29, 0x0D, 0x56, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x34, 0x29, 0x0D, 0x03, 0x31, 0x0D, 0x02, 0x31, 0x2D, 0x06, 0x31, 0x0D, 0x85, 0x30, 0xEC, 0x38, + 0xEC, 0x40, 0xCC, 0x69, 0x90, 0xC3, 0xD9, 0xBB, 0x78, 0x02, 0xC3, 0x57, 0x88, 0xC3, 0x58, 0xB3, 0x37, 0x92, 0x74, 0x48, 0x8C, 0x40, 0x8C, 0x40, 0xCD, 0x40, 0xED, 0x38, 0xED, 0x39, 0x0E, 0x01, 0x39, 0x2E, 0x80, 0x39, 0x2F, 0x01, 0x39, 0x4F, 0x80, 0x41, 0x4F, 0x01, 0x41, 0x50, 0x0A, 0x41, 0x70, 0x03, 0x49, 0x70, 0x0F, 0x49, 0x90, 0x02, 0x51, 0x90, 0x01, 0x49, 0x90, 0x04, 0x51, 0x90, 0x80, 0x51, 0x91, 0x05, 0x51, 0xB1, 0x05, 0x51, 0xB2, 0x01, 0x51, 0xB3, 0x80, 0x51, 0xD3, 0x01, 0x59, 0xD4, 0x85, 0x59, 0xF5, 0x51, 0xF5, 0x51, 0xF6, 0x49, 0xF6, 0x49, 0xF7, 0x4A, 0x18, 0x01, 0x42, 0x19, 0x95, 0x3A, 0x1A, 0x32, 0x1A, 0x32, 0x3B, 0x2A, 0x5B, 0x2A, 0x7C, 0x22, 0x9D, 0x22, 0xDD, 0x1A, 0xFE, 0x1B, 0x1E, 0x13, 0x3E, 0x13, 0x5E, 0x0B, 0x7F, 0x0B, 0x9F, 0x0B, 0xBF, 0x03, 0xDF, 0x03, 0xFF, 0x04, 0x1F, 0x04, 0x3F, 0x04, 0x5F, 0x0C, 0x7F, 0x0C, 0x9F, 0x0C, 0xBF, 0x01, 0x04, 0xDF, 0x82, 0x04, 0xFF, 0x0D, 0x1F, 0x05, 0x1F, 0x01, 0x0D, 0x5F, 0x83, 0x0D, 0x7F, 0x05, 0x9F, 0x05, 0xBF, 0x0D, 0xDF, 0x02, 0x0D, 0xFF, 0x83, 0x05, 0xFF, 0x0D, 0xFF, 0x05, 0xDF, 0x05, 0xFF, 0x02, 0x05, 0xDF, 0x01, 0x05, 0xBF, 0x04, 0x05, 0x9F, 0x01, 0x05, 0x7F, 0x02, 0x05, 0x5F, 0x05, 0x05, 0x3F, 0x01, 0x05, 0x1F, 0x04, 0x04, 0xFF, 0x80, 0x05, 0x1F, 0x01, 0x05, 0x3F, 0x81, 0x05, 0x7F, 0x05, 0x9F, 0x01, 0x05, 0xBF, 0x8A, 0x05, 0xDF, 0x0D, 0xDF, 0x1E, 0x1F, 0x36, 0x1F, 0x56, 0x5F, 0x75, 0xFF, 0x42, 0xD4, 0x6A, 0x73, 0x8A, 0x73, 0x9A, 0x33, 0xAA, 0x34, 0x02, 0xA9, + 0xF4, 0x85, 0xA1, 0xF4, 0x91, 0xD3, 0x71, 0x72, 0x69, 0x92, 0x59, 0x71, 0x59, 0x91, 0x02, 0x51, 0x91, 0x82, 0x49, 0x91, 0x49, 0x70, 0x49, 0x90, 0x01, 0x41, 0x70, 0x81, 0x41, 0x4F, 0x41, 0x6F, 0x01, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x02, 0x39, 0x2E, 0x05, 0x31, 0x2E, 0x80, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x82, 0x29, 0x0D, 0x31, 0x0D, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x11, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x2E, 0x89, 0x29, 0x0E, 0x21, 0x0E, 0x19, 0x0F, 0x19, 0x30, 0x19, 0x51, 0x21, 0x93, 0x21, 0xD4, 0x21, 0xF4, 0x21, 0xB3, 0x19, 0x51, 0x01, 0x19, 0x0F, 0x84, 0x19, 0x0E, 0x21, 0x2E, 0x21, 0x0E, 0x29, 0x2E, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x0E, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, + 0x29, 0x2D, 0x88, 0x21, 0x2D, 0x21, 0x0E, 0x21, 0x2E, 0x19, 0x4F, 0x19, 0x50, 0x11, 0x51, 0x11, 0x72, 0x19, 0xB3, 0x11, 0xB3, 0x01, 0x11, 0xB4, 0x81, 0x19, 0xB4, 0x19, 0xB3, 0x01, 0x19, 0x93, 0x85, 0x19, 0x72, 0x19, 0x51, 0x21, 0x30, 0x21, 0x2F, 0x21, 0x0E, 0x21, 0x0D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x8B, 0x28, 0xEC, 0x29, 0x0C, 0x31, 0x2C, 0x31, 0x0C, 0x28, 0xCC, 0x28, 0x8C, 0x28, 0x4D, 0x40, 0x8F, 0xBB, 0xBE, 0xAB, 0x1C, 0xAA, 0xDC, 0xAA, 0x9C, 0x01, 0xAA, 0x7C, 0x81, 0xB2, 0xBD, 0xB2, 0x9D, 0x01, 0xAA, 0x5C, 0x82, 0xB2, 0x5C, 0xB2, 0x7C, 0xAA, 0x7C, 0x01, 0xAA, 0x9C, 0x01, 0xAA, 0x9B, 0x01, 0xAA, 0xDB, 0x81, 0x92, 0x98, 0x38, 0x0E, 0x01, 0x38, 0x6E, 0x85, 0x38, 0x8E, 0x38, 0x4E, 0x40, 0x4F, 0x92, 0x99, 0xAA, 0xDB, 0xB2, 0xDC, 0x01, 0xB2, 0x9C, 0x88, 0xAA, 0x9C, 0xA2, 0x5B, 0xA2, 0x7B, 0xA2, 0x9B, 0xAB, 0x3E, 0x69, 0x35, 0x71, 0x97, 0xA2, 0xFC, 0xA2, 0xBB, 0x01, 0xA2, 0x9C, 0x8B, 0xA2, 0x7C, 0xAA, 0x7C, 0xB2, 0x9C, 0xB2, 0xBC, 0xAA, 0xBC, 0xAA, 0xFB, 0x82, 0x17, 0x30, 0x0D, 0x30, 0x6D, 0x30, 0xCD, 0x28, 0xCD, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x88, 0x31, 0x2D, 0x29, 0x0D, 0x28, 0xED, 0x28, 0xAD, 0x28, 0x6D, 0x38, 0x6E, 0xB3, 0x7D, 0xAA, 0xFC, 0xB2, 0xBD, 0x01, 0xAA, 0x7C, 0x01, 0xAA, 0x5C, 0x81, 0xB2, 0x7C, 0x29, 0x0D, 0x01, 0x28, 0xEC, 0x82, 0x29, 0x0D, 0x28, 0xEC, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x0D, + 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x85, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x28, 0xEC, 0x05, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x0D, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x0D, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x19, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x14, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x85, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x7F, 0x29, 0x0D, 0x50, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x33, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x04, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x06, 0x31, 0x0D, 0x85, 0x30, 0xEC, + 0x38, 0xEC, 0x38, 0xAC, 0x59, 0x6F, 0xB3, 0x98, 0xBB, 0x78, 0x02, 0xBB, 0x57, 0x84, 0xBB, 0x98, 0x92, 0x73, 0x61, 0x0E, 0x48, 0x8C, 0x40, 0xCC, 0x02, 0x38, 0xED, 0x80, 0x39, 0x0D, 0x01, 0x39, 0x2E, 0x01, 0x39, 0x2F, 0x01, 0x39, 0x4F, 0x01, 0x41, 0x4F, 0x04, 0x41, 0x6F, 0x80, 0x41, 0x70, 0x03, 0x41, 0x6F, 0x80, 0x41, 0x90, 0x01, 0x41, 0x6F, 0x02, 0x49, 0x6F, 0x02, 0x49, 0x70, 0x15, 0x49, 0x90, 0x02, 0x51, 0x90, 0x81, 0x51, 0xB1, 0x51, 0x91, 0x04, 0x51, 0xB1, 0x07, 0x51, 0xB2, 0x80, 0x59, 0xD3, 0x01, 0x59, 0xD4, 0x81, 0x59, 0xF4, 0x51, 0xF5, 0x01, 0x51, 0xF6, 0x01, 0x4A, 0x17, 0x8E, 0x4A, 0x18, 0x42, 0x19, 0x3A, 0x39, 0x3A, 0x5A, 0x32, 0x7B, 0x32, 0x9B, 0x2A, 0xDC, 0x22, 0xFD, 0x23, 0x1D, 0x1B, 0x3E, 0x1B, 0x5E, 0x13, 0x9E, 0x13, 0xBE, 0x13, 0xFF, 0x0B, 0xFF, 0x01, 0x0C, 0x3F, 0x83, 0x0C, 0x5F, 0x0C, 0x7F, 0x0C, 0x9F, 0x0C, 0xBF, 0x01, 0x0C, 0xDF, 0x87, 0x0C, 0xFF, 0x0D, 0x1F, 0x0D, 0x3F, 0x15, 0x5F, 0x0D, 0x7F, 0x15, 0x9F, 0x0D, 0xBF, 0x0D, 0xDF, 0x02, 0x0D, 0xFF, 0x05, 0x0E, 0x1F, 0x01, 0x05, 0xFF, 0x02, 0x05, 0xDF, 0x01, 0x05, 0xBF, 0x04, 0x05, 0x9F, 0x01, 0x05, 0x7F, 0x04, 0x05, 0x5F, 0x01, 0x05, 0x3F, 0x01, 0x05, 0x1F, 0x80, 0x04, 0xFF, 0x02, 0x05, 0x1F, 0x01, 0x05, 0x3F, 0x01, 0x05, 0x5F, 0x81, 0x05, 0x9F, 0x05, 0xBF, 0x02, 0x05, 0xDF, 0x92, 0x0D, 0xFF, 0x1E, 0x1F, 0x2E, 0x1E, 0x4E, 0x5F, 0x76, 0x7F, 0x4B, 0x55, 0x5A, 0x52, 0x8A, 0x94, 0x92, 0x13, 0xAA, 0x14, 0xA9, 0xF4, 0xA9, 0xD3, 0xA9, 0xD4, 0xA9, 0xF4, 0x9A, + 0x14, 0x81, 0xB3, 0x69, 0x92, 0x61, 0x92, 0x59, 0x91, 0x02, 0x51, 0x91, 0x82, 0x49, 0x91, 0x49, 0x90, 0x49, 0x70, 0x01, 0x41, 0x70, 0x85, 0x41, 0x4F, 0x41, 0x6F, 0x41, 0x4F, 0x39, 0x2F, 0x41, 0x4F, 0x39, 0x4E, 0x02, 0x39, 0x2E, 0x80, 0x39, 0x4E, 0x03, 0x31, 0x2E, 0x81, 0x31, 0x2D, 0x31, 0x2E, 0x01, 0x31, 0x2D, 0x82, 0x31, 0x0D, 0x31, 0x2D, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x13, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x0B, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x85, 0x29, 0x0C, 0x31, 0x2D, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2E, 0x21, 0x0D, 0x01, 0x21, 0x0E, 0x8B, 0x19, 0x0F, 0x19, 0x30, 0x19, 0x51, 0x19, 0x92, 0x21, 0xD3, 0x21, 0xF4, 0x19, 0x92, 0x19, 0x51, 0x11, 0x0F, 0x19, 0x0F, 0x19, 0x0E, 0x21, 0x4F, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0B, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x21, 0x2E, 0x84, 0x19, 0x2F, 0x19, 0x30, + 0x11, 0x50, 0x11, 0x71, 0x11, 0x93, 0x01, 0x11, 0xD4, 0x80, 0x11, 0xD5, 0x01, 0x11, 0xB4, 0x88, 0x11, 0x94, 0x11, 0xB4, 0x11, 0x93, 0x19, 0x73, 0x19, 0x52, 0x19, 0x31, 0x21, 0x30, 0x21, 0x0F, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x89, 0x31, 0x0C, 0x28, 0xCC, 0x28, 0x8C, 0x28, 0x2D, 0x40, 0x4F, 0xC3, 0xBE, 0xB2, 0xFC, 0xB2, 0x9C, 0xB2, 0x7C, 0xB2, 0x5C, 0x01, 0xBA, 0x7D, 0x81, 0xBA, 0x5D, 0xBA, 0x3D, 0x02, 0xBA, 0x5D, 0x81, 0xBA, 0x5C, 0xB2, 0x5C, 0x01, 0xBA, 0x9C, 0x85, 0xB2, 0x9C, 0xB2, 0xBC, 0xAA, 0xDB, 0xAB, 0x1B, 0x40, 0x0E, 0x40, 0x6F, 0x01, 0x38, 0x4E, 0x84, 0x38, 0x0E, 0x79, 0xB5, 0xB2, 0xFC, 0xB2, 0xDC, 0xBA, 0xBC, 0x01, 0xBA, 0x9D, 0x01, 0xB2, 0x7C, 0x82, 0xAA, 0x7C, 0xAA, 0xBC, 0xA2, 0xBB, 0x01, 0x40, 0x10, 0x85, 0x9A, 0x7A, 0xA2, 0xBB, 0xAA, 0x9C, 0xB2, 0x9C, 0xB2, 0x9D, 0xBA, 0xDD, 0x01, 0xBA, 0xBD, 0x94, 0xBA, 0xBC, 0xB2, 0xBC, 0xA2, 0xBA, 0x50, 0x90, 0x30, 0x0C, 0x30, 0x8D, 0x30, 0xCD, 0x30, 0xED, 0x28, 0xED, 0x31, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x28, 0xEC, 0x28, 0xAC, 0x28, 0x4C, 0x38, 0x4E, 0xBB, 0x7D, 0xBA, 0xFD, 0xB2, 0x9D, 0xB2, 0x5D, 0xB2, 0x3C, 0x02, 0xBA, 0x5D, 0x01, 0x28, 0xEC, 0x80, 0x31, 0x0D, 0x04, 0x28, 0xEC, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x31, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, + 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x0A, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x09, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x86, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x8A, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, + 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x3F, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x7F, 0x29, 0x0D, 0x4A, 0x29, 0x0D, 0x82, 0x31, 0x2D, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x05, 0x31, 0x0D, 0x85, 0x30, 0xEC, 0x38, 0xED, 0x38, 0xCC, 0x51, 0x0D, 0xBB, 0xF9, 0xBB, 0x98, 0x01, 0xBB, 0x77, 0x86, 0xBB, 0x78, 0xA3, 0x36, 0x69, 0x6F, 0x40, 0x8C, 0x40, 0xCC, 0x40, 0xCD, 0x38, 0xED, 0x01, 0x39, 0x0D, 0x80, 0x39, 0x0E, 0x02, 0x39, 0x2E, 0x01, 0x39, 0x4E, 0x80, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x01, 0x41, 0x4F, 0x80, 0x39, 0x4F, 0x09, 0x41, 0x6F, 0x82, 0x41, 0x4F, 0x41, 0x6F, 0x49, 0x6F, 0x03, 0x41, 0x6F, 0x01, 0x49, 0x70, 0x81, 0x49, 0x90, 0x49, 0x6F, 0x13, 0x49, 0x90, 0x82, 0x51, 0xB0, 0x51, 0x90, 0x49, 0x90, 0x02, 0x51, 0xB1, 0x01, 0x51, 0x91, 0x80, 0x51, 0xB1, 0x02, 0x51, 0xB2, 0x80, 0x51, 0xB1, 0x02, 0x51, 0x91, 0x81, 0x51, 0xB2, 0x59, 0xB2, 0x01, 0x59, 0xD3, 0x81, 0x59, 0xD4, 0x51, 0xF4, 0x01, 0x51, 0xF5, 0x9D, 0x51, 0xF6, 0x52, 0x17, 0x4A, 0x17, 0x42, 0x18, 0x42, 0x38, 0x3A, 0x59, 0x3A, 0x7A, 0x32, 0x9A, 0x2A, 0xDB, 0x2B, 0x1C, 0x2B, 0x3D, 0x23, 0x7D, 0x23, 0x9D, 0x1B, 0xDE, 0x13, 0xFE, 0x14, 0x1E, 0x14, 0x3E, 0x0C, 0x3E, 0x0C, 0x5E, 0x0C, 0x7E, 0x14, 0x9F, 0x14, 0xBF, 0x14, 0xDF, 0x14, 0xFF, + 0x15, 0x1F, 0x15, 0x3F, 0x15, 0x5F, 0x1D, 0x7F, 0x1D, 0xBF, 0x1D, 0xDF, 0x01, 0x1D, 0xFF, 0x01, 0x16, 0x1F, 0x02, 0x16, 0x3F, 0x80, 0x0E, 0x3F, 0x02, 0x0E, 0x1F, 0x80, 0x06, 0x1F, 0x03, 0x05, 0xFF, 0x01, 0x05, 0xDF, 0x02, 0x05, 0xBF, 0x02, 0x05, 0x9F, 0x02, 0x05, 0x7F, 0x81, 0x05, 0x5F, 0x05, 0x7F, 0x02, 0x05, 0x5F, 0x80, 0x05, 0x3F, 0x03, 0x05, 0x1F, 0x01, 0x05, 0x3F, 0x01, 0x05, 0x5F, 0x82, 0x05, 0x7F, 0x05, 0xBF, 0x05, 0xDF, 0x01, 0x05, 0xFF, 0x8A, 0x06, 0x1F, 0x0E, 0x1F, 0x16, 0x3F, 0x2E, 0x5F, 0x46, 0x7F, 0x76, 0xBF, 0x5C, 0x38, 0x52, 0x73, 0x8A, 0xB4, 0x9A, 0x33, 0xA1, 0xF3, 0x01, 0xA9, 0xD3, 0x85, 0xA9, 0xF4, 0xA1, 0xD4, 0x99, 0xF4, 0x89, 0xD3, 0x71, 0x72, 0x69, 0x92, 0x01, 0x59, 0x91, 0x02, 0x51, 0x91, 0x83, 0x49, 0x91, 0x49, 0x90, 0x49, 0x70, 0x41, 0x70, 0x01, 0x41, 0x6F, 0x02, 0x41, 0x4F, 0x03, 0x39, 0x2E, 0x80, 0x39, 0x4E, 0x05, 0x31, 0x2E, 0x80, 0x31, 0x2D, 0x04, 0x31, 0x0D, 0x83, 0x29, 0x0D, 0x31, 0x0D, 0x29, 0x0D, 0x31, 0x2D, 0x1C, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x31, 0x0D, 0x29, 0x0C, 0x31, 0x0D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x83, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x02, 0x20, 0xEC, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x8D, 0x19, 0x2F, 0x19, 0x30, 0x19, 0x51, + 0x19, 0x92, 0x19, 0xB3, 0x21, 0xD3, 0x19, 0x92, 0x11, 0x50, 0x11, 0x0F, 0x19, 0x0F, 0x21, 0x4F, 0x21, 0x2F, 0x29, 0x2E, 0x21, 0x0E, 0x02, 0x29, 0x2E, 0x82, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x0B, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x11, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x21, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x21, 0x0D, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x2E, 0x29, 0x2D, 0x01, 0x29, 0x2E, 0x01, 0x21, 0x2E, 0x85, 0x21, 0x2F, 0x19, 0x50, 0x19, 0x71, 0x11, 0x72, 0x11, 0x93, 0x11, 0xB4, 0x01, 0x09, 0xD5, 0x02, 0x09, 0xB5, 0x80, 0x11, 0xB5, 0x02, 0x11, 0x94, 0x84, 0x19, 0x73, 0x19, 0x31, 0x19, 0x30, 0x21, 0x0F, 0x21, 0x0E, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x89, 0x31, 0x0D, 0x28, 0xCC, 0x28, 0x6C, 0x30, 0x2C, 0x48, 0x90, 0xCB, 0xFF, 0xBA, 0xFC, 0xBA, 0xBC, 0xBA, 0x7C, 0xBA, 0x7D, 0x01, 0xC2, 0x7D, 0x9C, 0xC2, 0x9E, 0xC2, 0x7D, 0xC2, 0x5D, 0xC2, 0x3D, 0xCA, 0x7D, 0xC2, 0x5D, 0xC2, 0x7C, 0xC2, 0x9C, 0xC2, 0xBD, 0xBA, 0x9C, 0xB2, 0x9B, 0xB2, 0xDB, 0xC3, 0xBE, 0x40, 0x0E, 0x38, 0x0E, 0x38, 0x2E, 0x40, 0x4E, 0x48, 0x4F, 0xBB, 0x5D, 0xBA, 0xFC, 0xBA, 0xDC, 0xBA, 0x9C, 0xC2, 0x9D, 0xBA, 0x7C, 0xC2, 0x9D, 0xBA, 0x9C, 0xB2, 0x9C, 0xB2, 0xFC, 0x81, 0xB6, 0x01, 0x40, 0x0F, 0x83, 0x60, 0xD3, 0xAA, 0xFC, 0xAA, 0xBC, 0xBA, 0xBD, 0x01, 0xBA, 0x9D, 0x01, 0xC2, 0x9D, 0x89, 0xC2, 0xBD, 0xC2, 0xDD, 0xBA, 0xFC, 0xA2, 0xBA, 0x38, 0x0E, 0x38, 0x6E, 0x30, 0xAD, 0x30, 0xED, 0x28, 0xED, + 0x31, 0x0D, 0x01, 0x28, 0xEC, 0x87, 0x28, 0xCC, 0x28, 0xAC, 0x28, 0x4C, 0x40, 0x6F, 0xC3, 0x7E, 0xBA, 0xDD, 0xC2, 0xBD, 0xBA, 0x7D, 0x01, 0xBA, 0x5D, 0x84, 0xC2, 0x5D, 0xCA, 0x7D, 0x30, 0xEC, 0x30, 0xCC, 0x30, 0xED, 0x01, 0x30, 0xEC, 0x80, 0x28, 0xEC, 0x05, 0x30, 0xEC, 0x80, 0x31, 0x0C, 0x02, 0x31, 0x0D, 0x01, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x84, 0x28, 0xEC, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x83, 0x28, 0xEC, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x84, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x2C, 0x08, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, + 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x11, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x52, 0x29, 0x0D, 0x01, 0x29, 0x2C, 0x7F, 0x29, 0x0D, 0x4D, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x06, 0x31, 0x0D, 0x01, 0x30, 0xED, 0x83, 0x38, 0xCC, 0x48, 0xCD, 0xAB, 0x97, 0xBB, 0xB8, 0x01, 0xBB, 0x98, 0x84, 0xBB, 0xB8, 0x8A, 0x73, 0x50, 0xCD, 0x40, 0xAC, 0x38, 0xCC, 0x01, 0x38, 0xED, 0x01, 0x39, 0x0D, 0x03, 0x39, 0x2E, 0x03, 0x39, 0x4E, 0x82, 0x39, 0x4F, 0x39, 0x4E, 0x39, 0x4F, 0x09, 0x41, 0x4F, 0x09, 0x41, 0x6F, 0x02, 0x49, 0x6F, 0x03, 0x49, 0x70, 0x13, 0x49, 0x90, 0x02, 0x49, 0x91, 0x02, 0x51, 0x91, 0x02, 0x51, 0xB1, 0x84, 0x51, 0x91, 0x51, 0xB1, 0x51, 0x91, 0x51, 0xB1, 0x51, 0xB2, 0x01, 0x59, 0xB2, 0x80, 0x51, 0xD2, 0x01, 0x51, 0xD3, 0x01, 0x51, 0xD4, 0x01, 0x51, 0xF5, 0x01, 0x4A, 0x16, 0x8E, 0x42, 0x37, 0x42, 0x58, 0x3A, 0x78, 0x32, 0xB9, 0x32, 0xFA, 0x33, 0x3B, 0x33, 0x5C, 0x2B, 0xBD, 0x2B, 0xFE, 0x23, 0xFE, 0x1C, 0x3E, 0x1C, 0x5E, 0x1C, 0x7E, 0x1C, 0x9E, 0x14, 0x9E, 0x01, 0x14, 0xBE, 0x8A, 0x1C, 0xFF, 0x1D, 0x1F, 0x1D, 0x3F, 0x1D, 0x5F, 0x25, 0x7F, 0x25, 0x9F, 0x25, 0xBF, 0x25, 0xDF, + 0x25, 0xFF, 0x26, 0x1F, 0x26, 0x3F, 0x01, 0x1E, 0x3F, 0x02, 0x16, 0x3F, 0x02, 0x0E, 0x3F, 0x03, 0x0E, 0x1F, 0x01, 0x05, 0xFF, 0x81, 0x05, 0xDF, 0x05, 0xBF, 0x01, 0x05, 0xDF, 0x01, 0x05, 0xBF, 0x02, 0x05, 0x9F, 0x03, 0x05, 0x7F, 0x01, 0x05, 0x5F, 0x05, 0x05, 0x3F, 0x01, 0x05, 0x5F, 0x82, 0x05, 0x7F, 0x05, 0x9F, 0x05, 0xBF, 0x01, 0x05, 0xFF, 0x01, 0x06, 0x1F, 0x8B, 0x0E, 0x5F, 0x16, 0x7F, 0x26, 0x7F, 0x36, 0x7E, 0x6E, 0xFF, 0x64, 0xFB, 0x4A, 0x92, 0x8A, 0xD5, 0x92, 0x12, 0xA1, 0xF3, 0xA9, 0xF3, 0xB1, 0xF4, 0x01, 0xA9, 0xF4, 0x85, 0xA2, 0x14, 0x92, 0x14, 0x71, 0x72, 0x69, 0x92, 0x59, 0x71, 0x59, 0x91, 0x02, 0x51, 0x91, 0x02, 0x49, 0x70, 0x81, 0x41, 0x70, 0x41, 0x6F, 0x02, 0x41, 0x4F, 0x82, 0x39, 0x4F, 0x39, 0x2E, 0x39, 0x4E, 0x02, 0x39, 0x2E, 0x01, 0x31, 0x2E, 0x80, 0x31, 0x2D, 0x01, 0x31, 0x2E, 0x80, 0x31, 0x2D, 0x07, 0x31, 0x0D, 0x21, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x84, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x83, 0x31, 0x0D, 0x29, 0x0D, 0x29, 0x0C, 0x31, 0x0C, 0x03, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x0A, 0x29, 0x0D, 0x8D, 0x21, 0x0E, 0x21, 0x2E, 0x19, 0x2F, 0x19, 0x30, 0x19, 0x51, 0x19, 0x92, 0x19, 0xB3, 0x21, 0xD3, 0x19, 0xB2, 0x11, 0x50, 0x11, 0x2F, 0x19, 0x2F, 0x21, 0x2F, 0x21, 0x2E, 0x02, 0x21, 0x0E, 0x01, 0x21, 0x2E, 0x01, 0x21, 0x0E, 0x01, + 0x21, 0x2E, 0x01, 0x21, 0x0E, 0x01, 0x21, 0x2E, 0x09, 0x21, 0x0E, 0x01, 0x29, 0x2E, 0x04, 0x29, 0x0E, 0x02, 0x21, 0x0E, 0x80, 0x21, 0x2E, 0x03, 0x21, 0x0E, 0x81, 0x29, 0x2E, 0x21, 0x0D, 0x02, 0x21, 0x0E, 0x02, 0x21, 0x2E, 0x04, 0x21, 0x0E, 0x04, 0x21, 0x2E, 0x87, 0x21, 0x2F, 0x19, 0x30, 0x19, 0x50, 0x11, 0x71, 0x11, 0x93, 0x09, 0x94, 0x09, 0xB4, 0x09, 0xB5, 0x01, 0x01, 0xB5, 0x81, 0x01, 0xB6, 0x01, 0xB5, 0x01, 0x09, 0xB5, 0x86, 0x11, 0xB5, 0x11, 0x94, 0x11, 0x73, 0x19, 0x52, 0x19, 0x51, 0x21, 0x2F, 0x21, 0x0E, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x31, 0x2D, 0x29, 0x0C, 0x02, 0x31, 0x0C, 0x8C, 0x30, 0xCC, 0x28, 0x6C, 0x30, 0x2C, 0x48, 0x8F, 0xD4, 0x1F, 0xBB, 0x1C, 0xBA, 0xDC, 0xC2, 0xDD, 0xC2, 0x9D, 0xC2, 0x7D, 0xC2, 0x9D, 0xC2, 0x7D, 0xCA, 0x9D, 0x01, 0xCA, 0x7D, 0x80, 0xC2, 0x5C, 0x01, 0xC2, 0x7C, 0x85, 0xC2, 0x9C, 0xBA, 0x9C, 0xBA, 0x9B, 0xB2, 0xBB, 0xB2, 0xFB, 0xCB, 0xFE, 0x01, 0x40, 0x0E, 0x01, 0x38, 0x0D, 0x86, 0x81, 0xD6, 0xC3, 0x7D, 0xBA, 0xFC, 0xC2, 0xFD, 0xC2, 0xBC, 0xC2, 0xBD, 0xCA, 0xBD, 0x01, 0xC2, 0xDD, 0x88, 0xBA, 0xBC, 0xC3, 0x7E, 0x58, 0xB2, 0x40, 0x0E, 0x38, 0x0E, 0x40, 0x0E, 0x92, 0x59, 0xC3, 0x5E, 0xBA, 0xDD, 0x01, 0xC2, 0xDD, 0x02, 0xC2, 0xBD, 0x88, 0xC2, 0xDD, 0xCB, 0x1D, 0xCB, 0x9E, 0x71, 0xB5, 0x30, 0x0D, 0x30, 0xAD, 0x30, 0xED, 0x30, 0xEC, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x87, 0x28, 0xCC, 0x28, 0xAC, 0x28, 0x4C, 0x40, 0x4E, 0xC3, 0x9E, 0xC2, 0xFD, 0xC2, 0xBD, 0xC2, 0x9D, 0x01, 0xC2, 0x7D, 0x81, + 0xCA, 0x9D, 0xD2, 0xDE, 0x01, 0x30, 0x8C, 0x80, 0x30, 0xAC, 0x03, 0x30, 0xCC, 0x02, 0x30, 0xEC, 0x80, 0x30, 0xED, 0x03, 0x30, 0xEC, 0x83, 0x31, 0x0D, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x03, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x8A, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x03, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x07, 0x29, 0x0C, 0x81, 0x29, 0x2C, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x12, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, + 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x48, 0x29, 0x0D, 0x01, 0x29, 0x2C, 0x03, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x7F, 0x29, 0x0D, 0x42, 0x29, 0x0D, 0x01, 0x31, 0x2D, 0x80, 0x29, 0x2D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x07, 0x31, 0x0D, 0x8C, 0x30, 0xEC, 0x38, 0xCC, 0x40, 0xCC, 0xAB, 0x98, 0xBB, 0xB8, 0xBB, 0x98, 0xBB, 0xB8, 0xA3, 0x36, 0x59, 0x4F, 0x38, 0x8B, 0x40, 0xCC, 0x38, 0xCC, 0x38, 0xED, 0x03, 0x39, 0x0D, 0x02, 0x39, 0x2E, 0x08, 0x39, 0x4E, 0x81, 0x41, 0x4F, 0x41, 0x6F, 0x05, 0x41, 0x4F, 0x0F, 0x41, 0x6F, 0x80, 0x41, 0x70, 0x0E, 0x49, 0x70, 0x02, 0x49, 0x90, 0x80, 0x49, 0x70, 0x03, 0x49, 0x90, 0x81, 0x49, 0x91, 0x51, 0x91, 0x03, 0x49, 0x91, 0x80, 0x51, 0x91, 0x01, 0x51, 0xB1, 0x81, 0x51, 0xD1, 0x59, 0xD2, 0x06, 0x51, 0xB2, 0x80, 0x59, 0xD3, 0x01, 0x51, 0xD4, 0x82, 0x51, 0xF4, 0x52, 0x15, 0x4A, 0x15, 0x01, 0x42, 0x36, 0x88, 0x3A, 0x77, 0x3A, 0x98, 0x3A, 0xD9, 0x3B, 0x19, 0x33, 0x5A, 0x3B, 0xFD, 0x3C, 0x7F, 0x2C, 0x7E, 0x24, 0x9E, 0x01, 0x24, 0xBE, 0x01, 0x24, 0xFF, 0x85, 0x25, 0x1F, 0x25, 0x3F, 0x2D, 0x5F, 0x2D, 0x7F, 0x2D, 0x9F, 0x2D, 0x9E, 0x01, 0x2D, 0xBE, 0x81, 0x2D, 0xDE, + 0x2D, 0xFE, 0x01, 0x2E, 0x1E, 0x01, 0x26, 0x3F, 0x01, 0x1E, 0x3F, 0x80, 0x16, 0x5F, 0x01, 0x16, 0x3F, 0x02, 0x0E, 0x3F, 0x02, 0x0E, 0x1F, 0x83, 0x0D, 0xFF, 0x05, 0xFF, 0x0D, 0xFF, 0x05, 0xFF, 0x01, 0x05, 0xDF, 0x02, 0x05, 0xBF, 0x02, 0x05, 0x9F, 0x03, 0x05, 0x7F, 0x02, 0x05, 0x5F, 0x80, 0x05, 0x3F, 0x01, 0x05, 0x5F, 0x01, 0x05, 0x7F, 0x81, 0x05, 0x9F, 0x05, 0xBF, 0x01, 0x05, 0xFF, 0x80, 0x06, 0x1F, 0x01, 0x06, 0x3F, 0x8A, 0x0E, 0x5F, 0x16, 0x9F, 0x26, 0x9F, 0x36, 0x9E, 0x5E, 0xBF, 0x65, 0x9D, 0x3A, 0x92, 0x82, 0xF4, 0x9A, 0x53, 0x99, 0xD2, 0xA9, 0xD3, 0x01, 0xB1, 0xF4, 0x85, 0xA9, 0xD3, 0xA1, 0xF4, 0x91, 0xF3, 0x79, 0x71, 0x69, 0x71, 0x61, 0x71, 0x01, 0x51, 0x71, 0x01, 0x51, 0x91, 0x83, 0x49, 0x91, 0x49, 0x90, 0x49, 0x70, 0x41, 0x70, 0x01, 0x41, 0x4F, 0x80, 0x41, 0x6F, 0x01, 0x41, 0x4F, 0x01, 0x39, 0x4E, 0x02, 0x39, 0x2E, 0x80, 0x31, 0x2E, 0x02, 0x31, 0x2D, 0x81, 0x31, 0x2E, 0x31, 0x2D, 0x06, 0x31, 0x0D, 0x81, 0x29, 0x0D, 0x31, 0x2D, 0x02, 0x29, 0x0D, 0x82, 0x28, 0xED, 0x29, 0x0D, 0x28, 0xED, 0x17, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0A, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x8B, 0x29, 0x2E, 0x21, 0x2E, 0x21, 0x2F, 0x19, 0x2F, 0x19, 0x30, 0x19, 0x51, 0x19, 0x92, 0x21, 0xD3, 0x21, 0xF4, 0x19, 0xB3, 0x11, 0x51, + 0x10, 0xEF, 0x02, 0x10, 0xEE, 0x81, 0x19, 0x0E, 0x18, 0xEE, 0x0F, 0x19, 0x0E, 0x07, 0x21, 0x0E, 0x80, 0x19, 0x0E, 0x01, 0x21, 0x0E, 0x81, 0x19, 0x0E, 0x21, 0x0E, 0x02, 0x19, 0x0E, 0x80, 0x21, 0x0E, 0x02, 0x19, 0x0E, 0x03, 0x21, 0x0E, 0x03, 0x19, 0x0E, 0x01, 0x18, 0xEE, 0x06, 0x19, 0x0E, 0x85, 0x11, 0x0F, 0x11, 0x10, 0x11, 0x31, 0x11, 0x72, 0x09, 0x73, 0x09, 0xB4, 0x01, 0x01, 0xB5, 0x80, 0x01, 0xB6, 0x01, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x89, 0x09, 0xB6, 0x09, 0xB5, 0x11, 0xB5, 0x11, 0xB4, 0x11, 0x73, 0x19, 0x51, 0x21, 0x30, 0x21, 0x2E, 0x29, 0x0E, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x89, 0x31, 0x2D, 0x31, 0x0D, 0x28, 0xCC, 0x28, 0x8C, 0x30, 0x4D, 0x48, 0x8F, 0xF5, 0x3F, 0xDC, 0x3F, 0xD3, 0x9E, 0xCB, 0x3E, 0x02, 0xD3, 0x1E, 0x8D, 0xDB, 0x3F, 0xDB, 0x1E, 0xDB, 0x1F, 0xE3, 0x5F, 0xDB, 0x3F, 0xD3, 0x1E, 0xDB, 0x5F, 0xD3, 0x5E, 0xD3, 0x7F, 0xCB, 0x7E, 0xCB, 0xBE, 0xD4, 0x1F, 0xDC, 0xBF, 0x40, 0x0D, 0x01, 0x38, 0x0D, 0x92, 0x61, 0x12, 0xD4, 0x7F, 0xCB, 0xBE, 0xCB, 0x5D, 0xCB, 0x3D, 0xCB, 0x1D, 0xD3, 0x1E, 0xD3, 0x3E, 0xD3, 0x5E, 0xCB, 0x5E, 0xD3, 0xBF, 0xC3, 0x9D, 0x40, 0x0E, 0x38, 0x0E, 0x38, 0x0D, 0x38, 0x0E, 0x69, 0x33, 0xD4, 0x1F, 0xCB, 0x7E, 0x01, 0xCB, 0x3E, 0x81, 0xCB, 0x1E, 0xD3, 0x1E, 0x01, 0xD3, 0x3E, 0x95, 0xD3, 0x7E, 0xD3, 0xFF, 0xCC, 0x3E, 0x51, 0x31, 0x30, 0x8D, 0x30, 0xED, 0x31, 0x0D, 0x29, 0x0C, 0x31, 0x0C, 0x28, 0xEC, 0x30, 0xCC, 0x30, 0xAC, 0x30, 0x6C, 0x40, 0x8E, 0xDC, 0x7F, 0xDB, 0xDF, 0xD3, 0x5F, 0xCA, 0xFE, + 0xCA, 0xDE, 0xD2, 0xFE, 0xDB, 0x3E, 0xE3, 0x9F, 0x01, 0x40, 0x8C, 0x80, 0x38, 0x6B, 0x01, 0x30, 0x6B, 0x81, 0x30, 0x8B, 0x38, 0x8B, 0x01, 0x38, 0xAC, 0x84, 0x30, 0xAC, 0x38, 0xCC, 0x30, 0xCC, 0x30, 0xEC, 0x30, 0xCC, 0x04, 0x30, 0xEC, 0x80, 0x30, 0xED, 0x01, 0x30, 0xEC, 0x85, 0x28, 0xEC, 0x31, 0x0C, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x82, 0x28, 0xEC, 0x31, 0x0D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x09, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, + 0x29, 0x0D, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x66, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x7F, 0x29, 0x0D, 0x43, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x04, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x8C, 0x30, 0xEC, 0x38, 0xEC, 0x40, 0xEC, 0x93, 0x36, 0xB3, 0xD8, 0xB3, 0xB8, 0xBB, 0xD8, 0x92, 0xB4, 0x48, 0xCD, 0x38, 0xAC, 0x38, 0xCC, 0x38, 0xEC, 0x38, 0xED, 0x01, 0x39, 0x0D, 0x02, 0x39, 0x2D, 0x02, 0x39, 0x2E, 0x09, 0x39, 0x4E, 0x82, 0x41, 0x4E, 0x39, 0x4E, 0x41, 0x4E, 0x04, 0x41, 0x4F, 0x0F, 0x41, 0x6F, 0x81, 0x41, 0x70, 0x41, 0x6F, 0x01, 0x41, 0x70, 0x80, 0x49, 0x70, 0x03, 0x41, 0x70, 0x05, 0x49, 0x70, 0x01, 0x49, 0x90, 0x01, 0x49, 0x70, 0x04, 0x49, 0x90, 0x80, 0x49, 0x70, 0x01, 0x49, 0x90, 0x82, 0x49, 0x91, 0x49, 0x90, 0x49, 0x91, 0x01, 0x51, 0x91, 0x05, 0x51, 0xB1, 0x81, 0x51, 0x91, 0x51, 0xB1, 0x02, 0x51, 0xB2, 0x02, 0x51, 0xD3, 0x8D, 0x51, 0xF4, 0x4A, 0x14, 0x4A, 0x15, 0x42, 0x35, 0x42, 0x56, 0x42, 0x76, 0x3A, 0x97, 0x32, 0xB7, 0x2A, 0xF8, 0x44, 0x3D, 0x4C, 0xDF, 0x3C, 0xBE, 0x34, 0xDF, 0x34, 0xFE, 0x01, 0x35, 0x1E, 0x82, 0x35, 0x3F, 0x35, 0x5F, 0x3D, 0x7F, 0x01, 0x3D, 0x9F, 0x01, 0x3D, 0x9E, 0x82, 0x35, 0x9D, 0x35, 0xBD, 0x35, 0xDD, 0x02, 0x36, 0x1E, 0x01, 0x2E, 0x3E, 0x80, 0x26, 0x3F, 0x01, 0x1E, 0x3F, 0x04, 0x16, 0x3F, 0x02, 0x0E, 0x1F, 0x01, 0x0D, 0xFF, 0x02, 0x05, 0xFF, 0x02, 0x05, 0xDF, 0x02, 0x05, 0xBF, 0x80, 0x05, 0x9F, 0x03, 0x05, 0x7F, 0x03, 0x05, 0x5F, 0x01, + 0x05, 0x7F, 0x01, 0x05, 0x9F, 0x82, 0x05, 0xDF, 0x05, 0xFF, 0x06, 0x1F, 0x01, 0x06, 0x3F, 0x80, 0x06, 0x5F, 0x01, 0x0E, 0x9F, 0x88, 0x1E, 0xBF, 0x2E, 0xBF, 0x4E, 0xBF, 0x76, 0x5F, 0x3A, 0xF3, 0x7A, 0xD4, 0x92, 0x53, 0x99, 0xF2, 0xA9, 0xD3, 0x01, 0xB1, 0xF4, 0x86, 0xA9, 0xF4, 0xA1, 0xF4, 0xA2, 0x34, 0x81, 0xB2, 0x69, 0x71, 0x61, 0x92, 0x59, 0x91, 0x02, 0x51, 0x91, 0x02, 0x49, 0x90, 0x86, 0x49, 0x70, 0x41, 0x50, 0x41, 0x70, 0x41, 0x4F, 0x41, 0x6F, 0x41, 0x4F, 0x39, 0x4F, 0x04, 0x39, 0x2E, 0x81, 0x31, 0x2E, 0x39, 0x2D, 0x04, 0x31, 0x2D, 0x05, 0x31, 0x0D, 0x08, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x15, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x28, 0xEC, 0x81, 0x29, 0x0D, 0x28, 0xEC, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x01, 0x21, 0x2E, 0x01, 0x19, 0x2F, 0x8A, 0x19, 0x30, 0x11, 0x51, 0x19, 0x92, 0x21, 0xD4, 0x21, 0xF4, 0x21, 0xF3, 0x11, 0x51, 0x09, 0x0F, 0x08, 0xEF, 0x09, 0x0F, 0x10, 0xEF, 0x02, 0x11, 0x0F, 0x80, 0x11, 0x10, 0x06, 0x11, 0x0F, 0x82, 0x11, 0x10, 0x11, 0x0F, 0x11, 0x2F, 0x15, 0x11, 0x0F, 0x80, 0x11, 0x2F, 0x06, 0x11, 0x0F, 0x80, 0x10, 0xEF, 0x01, 0x11, 0x0F, 0x80, 0x19, 0x10, 0x01, 0x19, 0x0F, 0x82, 0x11, 0x0F, 0x11, 0x30, 0x11, 0x0F, 0x01, 0x11, 0x30, 0x85, 0x09, 0x31, 0x09, 0x52, 0x09, 0x73, 0x09, 0xB4, 0x09, 0xB5, 0x01, 0xB5, 0x04, 0x01, 0xB6, 0x80, 0x01, 0x96, 0x01, 0x09, + 0xB6, 0x87, 0x09, 0xB5, 0x11, 0xB4, 0x11, 0x73, 0x19, 0x92, 0x19, 0x30, 0x21, 0x2F, 0x29, 0x2E, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x01, 0x31, 0x0D, 0x89, 0x30, 0xED, 0x28, 0xAD, 0x30, 0x6D, 0x48, 0xCF, 0xCC, 0x7E, 0xCC, 0x1D, 0xBB, 0x3B, 0xBB, 0x3C, 0xC3, 0x3C, 0xC3, 0x3D, 0x01, 0xCB, 0x5D, 0x94, 0xC3, 0x1C, 0xCB, 0x3D, 0xD3, 0x9E, 0xD3, 0x7E, 0xCB, 0x7D, 0xC3, 0x5C, 0xC3, 0x3C, 0xBB, 0x3C, 0xB3, 0x3B, 0xB3, 0x5B, 0xB3, 0x7B, 0x9A, 0xD8, 0x38, 0x0D, 0x38, 0x2D, 0x40, 0x6E, 0x8A, 0xB7, 0xCC, 0x5E, 0xB3, 0x7B, 0xB3, 0x3B, 0xBB, 0x3B, 0xBB, 0x1B, 0x01, 0xBB, 0x1C, 0x84, 0xBA, 0xFB, 0xAA, 0xDA, 0xA2, 0xB9, 0x69, 0x73, 0x40, 0x6E, 0x01, 0x38, 0x6E, 0x92, 0x38, 0x4E, 0x40, 0x4F, 0xAB, 0x3B, 0xB3, 0x5C, 0xB3, 0x3C, 0xBB, 0x3C, 0xBB, 0x1C, 0xC3, 0x3D, 0xC3, 0x3C, 0xBB, 0x3C, 0xB3, 0x1B, 0xAB, 0x3A, 0x9B, 0x18, 0x69, 0xF3, 0x28, 0x8C, 0x28, 0xCD, 0x31, 0x0D, 0x31, 0x2D, 0x31, 0x0C, 0x01, 0x30, 0xEC, 0x97, 0x30, 0xAC, 0x30, 0x8C, 0x40, 0xCE, 0xCC, 0x5E, 0xD4, 0x3F, 0xC3, 0x7D, 0xBB, 0x3D, 0xBB, 0x1C, 0xC3, 0x3C, 0xCB, 0x5D, 0xC3, 0x3C, 0x92, 0x94, 0x8A, 0x73, 0x8A, 0x53, 0x79, 0xD1, 0x69, 0x90, 0x59, 0x0E, 0x48, 0xCD, 0x40, 0x8B, 0x38, 0x6B, 0x30, 0x6B, 0x38, 0x6B, 0x30, 0x8B, 0x30, 0xAC, 0x01, 0x38, 0xAC, 0x82, 0x30, 0xAC, 0x30, 0xCC, 0x30, 0xEC, 0x02, 0x30, 0xCC, 0x84, 0x30, 0xEC, 0x31, 0x0C, 0x28, 0xEC, 0x31, 0x0C, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x82, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x03, 0x29, 0x0D, 0x80, + 0x31, 0x0D, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x0A, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x0F, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x02, 0x29, 0x0D, 0x89, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x87, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x1A, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x42, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x7F, 0x29, 0x0D, 0x4B, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x04, 0x31, 0x0D, 0x84, 0x30, 0xED, 0x30, 0xEC, 0x38, 0xCC, 0x7A, 0x52, 0xAB, + 0xD8, 0x01, 0xB3, 0xB8, 0x84, 0x72, 0x11, 0x40, 0xAB, 0x38, 0xCC, 0x38, 0xEC, 0x38, 0xED, 0x02, 0x39, 0x0D, 0x03, 0x39, 0x2D, 0x02, 0x39, 0x2E, 0x0E, 0x39, 0x4E, 0x80, 0x41, 0x4E, 0x05, 0x41, 0x4F, 0x13, 0x41, 0x6F, 0x82, 0x41, 0x70, 0x41, 0x6F, 0x49, 0x70, 0x01, 0x41, 0x70, 0x04, 0x49, 0x70, 0x81, 0x49, 0x90, 0x49, 0x70, 0x05, 0x49, 0x90, 0x81, 0x51, 0x91, 0x49, 0x90, 0x01, 0x49, 0x91, 0x83, 0x51, 0x91, 0x49, 0x91, 0x49, 0x90, 0x51, 0x91, 0x05, 0x51, 0xB1, 0x01, 0x59, 0xB2, 0x80, 0x59, 0xD2, 0x01, 0x51, 0xD2, 0x80, 0x51, 0xD3, 0x01, 0x51, 0xF3, 0x8A, 0x49, 0xF4, 0x4A, 0x14, 0x4A, 0x34, 0x42, 0x35, 0x42, 0x55, 0x3A, 0x55, 0x3A, 0x76, 0x2A, 0x56, 0x33, 0x19, 0x4C, 0x7E, 0x4C, 0xFF, 0x01, 0x45, 0x3F, 0x01, 0x45, 0x5F, 0x01, 0x4D, 0x5F, 0x86, 0x55, 0x7F, 0x55, 0x9F, 0x5D, 0xFF, 0x5E, 0x3F, 0x5E, 0x5F, 0x5E, 0x7F, 0x56, 0x5E, 0x01, 0x4E, 0x5E, 0x84, 0x46, 0x5E, 0x3E, 0x3E, 0x3E, 0x5E, 0x2E, 0x1E, 0x2E, 0x3E, 0x01, 0x26, 0x3E, 0x80, 0x26, 0x3F, 0x02, 0x1E, 0x3F, 0x01, 0x16, 0x1F, 0x80, 0x0E, 0x1F, 0x02, 0x0D, 0xFF, 0x01, 0x05, 0xFF, 0x04, 0x05, 0xDF, 0x80, 0x05, 0xBF, 0x03, 0x05, 0x9F, 0x05, 0x05, 0x7F, 0x01, 0x05, 0x9F, 0x81, 0x05, 0xBF, 0x05, 0xFF, 0x01, 0x06, 0x1F, 0x8F, 0x06, 0x3F, 0x06, 0x5F, 0x06, 0x7F, 0x06, 0x9F, 0x0E, 0xDF, 0x1E, 0xDF, 0x26, 0xDF, 0x3E, 0xBF, 0x6E, 0xBF, 0x3B, 0x74, 0x72, 0xD4, 0x8A, 0x33, 0xA2, 0x13, 0xA9, 0xF3, 0xA9, 0xF4, 0xA9, 0xD4, 0x01, 0xA9, 0xF4, 0x85, 0xA2, 0x14, 0x91, 0xF3, 0x71, 0x51, + 0x61, 0x71, 0x61, 0x91, 0x59, 0x91, 0x01, 0x51, 0x91, 0x04, 0x49, 0x70, 0x84, 0x41, 0x70, 0x41, 0x4F, 0x41, 0x2F, 0x41, 0x4F, 0x39, 0x4F, 0x02, 0x39, 0x4E, 0x01, 0x39, 0x2E, 0x06, 0x31, 0x2D, 0x04, 0x31, 0x0D, 0x81, 0x29, 0x0D, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0B, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2E, 0x21, 0x2E, 0x21, 0x2F, 0x01, 0x19, 0x2F, 0x86, 0x19, 0x30, 0x19, 0x51, 0x19, 0x72, 0x19, 0xB2, 0x21, 0xD3, 0x2A, 0x14, 0x19, 0xD3, 0x01, 0x11, 0x92, 0x80, 0x19, 0xB3, 0x01, 0x19, 0x93, 0x81, 0x11, 0x92, 0x19, 0x93, 0x01, 0x11, 0x93, 0x81, 0x11, 0x72, 0x19, 0x92, 0x02, 0x11, 0x72, 0x80, 0x11, 0x92, 0x06, 0x11, 0x72, 0x80, 0x19, 0x72, 0x08, 0x11, 0x72, 0x80, 0x11, 0x92, 0x02, 0x11, 0x72, 0x01, 0x11, 0x92, 0x01, 0x11, 0x72, 0x83, 0x19, 0x92, 0x11, 0x72, 0x11, 0x92, 0x11, 0x72, 0x01, 0x19, 0x92, 0x01, 0x19, 0x93, 0x01, 0x19, 0xB3, 0x01, 0x19, 0x93, 0x01, 0x19, 0x92, 0x81, 0x19, 0xB3, 0x11, 0x92, 0x02, 0x11, 0xB3, 0x01, 0x09, 0x94, 0x81, 0x01, 0xB4, 0x01, 0xB5, 0x01, 0x01, 0xD6, 0x02, 0x01, + 0xB6, 0x01, 0x01, 0x96, 0x89, 0x09, 0xB6, 0x09, 0x95, 0x09, 0xB5, 0x11, 0xB5, 0x11, 0x93, 0x19, 0x72, 0x19, 0x50, 0x21, 0x2F, 0x29, 0x0E, 0x29, 0x2D, 0x01, 0x28, 0xEC, 0x8A, 0x29, 0x0C, 0x31, 0x0D, 0x28, 0xEC, 0x31, 0x0D, 0x30, 0xED, 0x28, 0xCD, 0x30, 0xCD, 0x28, 0x8D, 0x20, 0x0B, 0x28, 0x0B, 0x30, 0x0B, 0x02, 0x30, 0x0C, 0x80, 0x38, 0x0C, 0x06, 0x30, 0x0C, 0x01, 0x30, 0x0B, 0x84, 0x30, 0x0C, 0x30, 0x0B, 0x28, 0x0B, 0x28, 0x0C, 0x38, 0x8E, 0x01, 0x38, 0xAE, 0x80, 0x28, 0x2C, 0x01, 0x28, 0x0B, 0x80, 0x28, 0x0C, 0x06, 0x30, 0x0C, 0x85, 0x30, 0x6D, 0x38, 0x8D, 0x30, 0x8D, 0x38, 0xAE, 0x30, 0x8D, 0x30, 0x6D, 0x01, 0x28, 0x0C, 0x04, 0x30, 0x0C, 0x80, 0x30, 0x0B, 0x01, 0x28, 0x0B, 0x83, 0x20, 0x0B, 0x28, 0x6B, 0x30, 0xED, 0x28, 0xCC, 0x01, 0x28, 0xEC, 0x80, 0x31, 0x0C, 0x02, 0x28, 0xEC, 0x83, 0x30, 0xCC, 0x30, 0x8C, 0x20, 0x0A, 0x28, 0x0B, 0x05, 0x30, 0x0C, 0x01, 0x92, 0x33, 0x80, 0x9A, 0x53, 0x02, 0x92, 0x53, 0x8F, 0x92, 0x73, 0x82, 0x33, 0x79, 0xF1, 0x61, 0x4F, 0x51, 0x0E, 0x48, 0xAC, 0x38, 0x6B, 0x30, 0x4A, 0x30, 0x2A, 0x30, 0x6B, 0x30, 0x8B, 0x30, 0x8C, 0x30, 0x8B, 0x30, 0xAC, 0x30, 0xAB, 0x30, 0xCC, 0x04, 0x30, 0xEC, 0x03, 0x28, 0xEC, 0x81, 0x31, 0x0C, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x81, 0x31, 0x0D, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, + 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x83, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0D, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x2C, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x19, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x1A, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x41, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x7F, 0x29, 0x0D, 0x4B, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x04, 0x31, 0x0D, 0x8A, 0x30, 0xED, 0x30, 0xCC, 0x6A, 0x31, 0xAB, 0xD8, 0xAB, 0xB8, 0xA3, 0x97, 0x59, 0x6F, 0x38, 0xAC, 0x38, 0xCC, 0x38, 0xED, 0x30, 0xEC, 0x02, 0x39, 0x0D, 0x03, 0x39, 0x2D, 0x01, 0x39, 0x2E, 0x11, 0x39, 0x4E, 0x83, 0x41, 0x4E, 0x39, 0x4E, 0x41, 0x4E, + 0x39, 0x4E, 0x06, 0x41, 0x4F, 0x18, 0x41, 0x6F, 0x80, 0x41, 0x70, 0x02, 0x49, 0x70, 0x83, 0x49, 0x90, 0x49, 0x70, 0x49, 0x90, 0x49, 0x70, 0x08, 0x49, 0x90, 0x01, 0x51, 0x91, 0x05, 0x51, 0xB1, 0x80, 0x51, 0xB2, 0x02, 0x51, 0xD2, 0x02, 0x51, 0xF3, 0x80, 0x4A, 0x13, 0x01, 0x4A, 0x14, 0x01, 0x42, 0x14, 0x90, 0x3A, 0x35, 0x32, 0x35, 0x2A, 0x96, 0x3B, 0xBA, 0x5D, 0x1F, 0x5D, 0x5F, 0x55, 0x1E, 0x54, 0xFE, 0x4C, 0x7C, 0x4C, 0x3B, 0x4C, 0x3A, 0x4C, 0x5A, 0x64, 0xFC, 0x75, 0xBF, 0x86, 0x5F, 0x7E, 0x5F, 0x7E, 0x7F, 0x01, 0x76, 0x5F, 0x85, 0x6E, 0x5F, 0x66, 0x5F, 0x5E, 0x5F, 0x4E, 0x3E, 0x3E, 0x1E, 0x36, 0x1E, 0x01, 0x2E, 0x1E, 0x84, 0x26, 0x1E, 0x26, 0x3F, 0x1E, 0x1F, 0x1E, 0x3F, 0x1E, 0x1F, 0x01, 0x16, 0x1F, 0x82, 0x15, 0xFF, 0x0D, 0xFF, 0x0E, 0x1F, 0x01, 0x0D, 0xFF, 0x01, 0x05, 0xFF, 0x01, 0x05, 0xDF, 0x01, 0x05, 0xBF, 0x03, 0x05, 0x9F, 0x80, 0x05, 0x7F, 0x03, 0x05, 0x9F, 0x01, 0x05, 0xBF, 0x91, 0x05, 0xDF, 0x05, 0xFF, 0x06, 0x1F, 0x06, 0x3F, 0x06, 0x5F, 0x06, 0x7F, 0x06, 0x9F, 0x06, 0xBF, 0x0E, 0xDF, 0x16, 0xFF, 0x27, 0x1F, 0x3E, 0xDF, 0x66, 0xFF, 0x4C, 0x57, 0x5A, 0x93, 0x8A, 0x73, 0x9A, 0x13, 0xAA, 0x13, 0x01, 0xA9, 0xF3, 0x87, 0xA9, 0xF4, 0xAA, 0x14, 0xA1, 0xF3, 0x9A, 0x34, 0x79, 0x92, 0x69, 0x71, 0x61, 0x91, 0x59, 0x91, 0x01, 0x51, 0x91, 0x81, 0x49, 0x70, 0x51, 0x91, 0x01, 0x49, 0x70, 0x81, 0x49, 0x50, 0x41, 0x50, 0x01, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x82, 0x39, 0x4E, 0x39, 0x2E, 0x39, 0x4E, 0x02, 0x39, 0x2E, 0x01, 0x31, + 0x2D, 0x80, 0x31, 0x2E, 0x02, 0x31, 0x2D, 0x80, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x0B, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x21, 0x2E, 0x8A, 0x21, 0x2F, 0x19, 0x0F, 0x19, 0x2F, 0x19, 0x50, 0x19, 0x51, 0x19, 0x71, 0x19, 0x92, 0x19, 0xD4, 0x2A, 0x35, 0x22, 0x35, 0x22, 0x36, 0x01, 0x22, 0x15, 0x84, 0x22, 0x36, 0x22, 0x15, 0x22, 0x16, 0x22, 0x15, 0x22, 0x36, 0x01, 0x22, 0x15, 0x82, 0x21, 0xF5, 0x22, 0x15, 0x19, 0xF4, 0x05, 0x21, 0xF5, 0x80, 0x22, 0x15, 0x02, 0x21, 0xF5, 0x85, 0x22, 0x15, 0x21, 0xF5, 0x22, 0x15, 0x21, 0xF5, 0x22, 0x15, 0x21, 0xF4, 0x04, 0x22, 0x15, 0x83, 0x21, 0xF5, 0x1A, 0x15, 0x1A, 0x14, 0x22, 0x15, 0x01, 0x21, 0xF4, 0x87, 0x21, 0xF5, 0x22, 0x15, 0x21, 0xF5, 0x22, 0x15, 0x21, 0xF4, 0x21, 0xF5, 0x21, 0xF4, 0x22, 0x15, 0x01, 0x21, 0xF5, 0x87, 0x19, 0xB4, 0x21, 0xD4, 0x19, 0xD3, 0x19, 0xD4, 0x19, 0xD3, 0x19, 0xD4, 0x11, 0xD4, 0x11, 0xB4, 0x01, 0x09, 0xB4, 0x83, 0x09, 0xB5, 0x01, 0xB5, 0x01, 0xB6, + 0x01, 0xD6, 0x04, 0x01, 0xB6, 0x88, 0x01, 0x96, 0x01, 0x95, 0x09, 0xB5, 0x11, 0xB4, 0x11, 0x93, 0x19, 0x72, 0x19, 0x30, 0x21, 0x2F, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x88, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0D, 0x31, 0x0D, 0x29, 0x0D, 0x28, 0xED, 0x28, 0xCD, 0x30, 0xED, 0x28, 0xAC, 0x02, 0x28, 0x4B, 0x02, 0x28, 0x2B, 0x80, 0x20, 0x2A, 0x01, 0x28, 0x2B, 0x82, 0x20, 0x0A, 0x20, 0x2B, 0x28, 0x2B, 0x02, 0x28, 0x4B, 0x02, 0x28, 0x6C, 0x81, 0x30, 0x8C, 0x30, 0x8D, 0x01, 0x30, 0xAD, 0x03, 0x28, 0x8C, 0x03, 0x28, 0x6C, 0x80, 0x28, 0x6B, 0x01, 0x28, 0x6C, 0x86, 0x28, 0x8C, 0x30, 0xAD, 0x28, 0xAD, 0x30, 0xCD, 0x30, 0xAD, 0x30, 0xCD, 0x30, 0xAD, 0x02, 0x28, 0x6C, 0x81, 0x28, 0x4C, 0x28, 0x4B, 0x01, 0x28, 0x6B, 0x01, 0x28, 0x8C, 0x81, 0x28, 0xAC, 0x28, 0xCC, 0x04, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x01, 0x28, 0xCC, 0x81, 0x28, 0xAC, 0x28, 0x8C, 0x01, 0x28, 0x6C, 0x84, 0x28, 0x4B, 0x28, 0x2B, 0x20, 0x2B, 0x20, 0x0A, 0x9A, 0x12, 0x01, 0x91, 0xF2, 0x80, 0x9A, 0x12, 0x01, 0x91, 0xF2, 0x81, 0x89, 0xF2, 0x92, 0x32, 0x02, 0x92, 0x53, 0x88, 0x8A, 0x53, 0x82, 0x12, 0x71, 0xD1, 0x71, 0xB1, 0x59, 0x4F, 0x48, 0xAC, 0x38, 0x8C, 0x38, 0x6B, 0x30, 0x6B, 0x01, 0x30, 0x4B, 0x82, 0x30, 0x6B, 0x30, 0x8C, 0x30, 0xAC, 0x01, 0x30, 0xCC, 0x02, 0x30, 0xEC, 0x04, 0x31, 0x0C, 0x80, 0x31, 0x0D, 0x02, 0x28, 0xEC, 0x81, 0x31, 0x0C, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, + 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x02, 0x29, 0x2C, 0x82, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x81, 0x29, 0x2C, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x19, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x18, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x7F, 0x29, 0x0D, 0x7F, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x08, 0x31, 0x0D, 0x87, 0x30, 0xEC, 0x41, 0x4E, 0x93, 0x97, 0xA3, 0xB8, 0x93, 0x36, 0x40, 0xEC, 0x38, 0xCC, 0x38, 0xEC, 0x01, 0x38, 0xED, 0x80, 0x31, 0x0D, 0x02, 0x39, 0x0D, 0x02, 0x39, 0x2D, 0x02, + 0x39, 0x2E, 0x0E, 0x39, 0x4E, 0x80, 0x39, 0x2E, 0x05, 0x39, 0x4E, 0x81, 0x41, 0x4F, 0x39, 0x4F, 0x0C, 0x41, 0x4F, 0x80, 0x41, 0x6F, 0x03, 0x41, 0x4F, 0x0D, 0x41, 0x6F, 0x06, 0x49, 0x70, 0x06, 0x49, 0x90, 0x02, 0x51, 0x91, 0x06, 0x51, 0xB1, 0x04, 0x51, 0xD2, 0x82, 0x51, 0xF2, 0x51, 0xF3, 0x49, 0xF3, 0x01, 0x4A, 0x13, 0x01, 0x4A, 0x14, 0x9B, 0x42, 0x14, 0x3A, 0x35, 0x32, 0x14, 0x32, 0x75, 0x5C, 0x1C, 0x6C, 0xBE, 0x43, 0x9A, 0x42, 0xF7, 0x4A, 0xF7, 0x52, 0xD6, 0x52, 0xB5, 0x4A, 0x74, 0x4A, 0x54, 0x4A, 0x53, 0x5A, 0xD5, 0x63, 0x77, 0x6B, 0xF9, 0x7C, 0xBB, 0x7D, 0x1C, 0x7D, 0x7E, 0x7D, 0xDF, 0x6E, 0x3F, 0x5E, 0x5F, 0x56, 0x7F, 0x4E, 0x5E, 0x46, 0x5E, 0x3E, 0x3E, 0x2D, 0xFD, 0x01, 0x25, 0xFE, 0x80, 0x26, 0x1F, 0x01, 0x1E, 0x1F, 0x01, 0x16, 0x1F, 0x80, 0x0E, 0x1F, 0x02, 0x0D, 0xFF, 0x81, 0x05, 0xDF, 0x05, 0xFF, 0x01, 0x05, 0xDF, 0x04, 0x05, 0xBF, 0x02, 0x05, 0x9F, 0x02, 0x05, 0xBF, 0x01, 0x05, 0xDF, 0x80, 0x05, 0xFF, 0x01, 0x06, 0x3F, 0x98, 0x06, 0x7F, 0x06, 0x9F, 0x06, 0xBF, 0x06, 0xDF, 0x06, 0xFF, 0x0E, 0xFF, 0x1F, 0x1F, 0x36, 0xFF, 0x5E, 0xFF, 0x65, 0x9C, 0x42, 0x11, 0x82, 0x53, 0x92, 0x13, 0xA1, 0xF3, 0xA9, 0xF3, 0xB2, 0x14, 0xA9, 0xD3, 0xA9, 0xF3, 0xAA, 0x14, 0x9A, 0x14, 0x89, 0xD3, 0x69, 0x71, 0x61, 0x91, 0x59, 0x91, 0x51, 0x91, 0x01, 0x51, 0x71, 0x03, 0x49, 0x70, 0x81, 0x41, 0x4F, 0x41, 0x50, 0x01, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x01, 0x39, 0x4E, 0x01, 0x39, 0x2E, 0x80, 0x31, 0x0D, 0x05, 0x31, 0x2D, 0x01, 0x29, 0x0D, + 0x03, 0x31, 0x0D, 0x0E, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x81, 0x29, 0x2C, 0x29, 0x0C, 0x02, 0x29, 0x2D, 0x80, 0x21, 0x0D, 0x01, 0x21, 0x2E, 0x8A, 0x19, 0x0E, 0x19, 0x2F, 0x19, 0x30, 0x19, 0x50, 0x19, 0x51, 0x19, 0x72, 0x11, 0x72, 0x11, 0x92, 0x19, 0xB3, 0x19, 0xD4, 0x19, 0xB4, 0x03, 0x19, 0xD4, 0x80, 0x19, 0xD5, 0x07, 0x19, 0xD4, 0x83, 0x19, 0xF4, 0x21, 0xF4, 0x19, 0xD4, 0x19, 0xD5, 0x02, 0x21, 0xD4, 0x81, 0x21, 0xF4, 0x21, 0xD4, 0x01, 0x19, 0xD4, 0x01, 0x21, 0xF4, 0x01, 0x21, 0xD4, 0x80, 0x21, 0xF4, 0x08, 0x19, 0xD4, 0x85, 0x19, 0xF4, 0x19, 0xD4, 0x19, 0xB4, 0x19, 0xD4, 0x21, 0xD4, 0x19, 0xD4, 0x03, 0x19, 0xB4, 0x81, 0x19, 0xB3, 0x19, 0xD3, 0x01, 0x19, 0xB3, 0x88, 0x11, 0xB3, 0x11, 0x93, 0x09, 0x93, 0x09, 0x73, 0x09, 0x94, 0x09, 0xB4, 0x01, 0x95, 0x01, 0xB5, 0x01, 0xD6, 0x05, 0x01, 0xB6, 0x01, 0x09, 0xB6, 0x86, 0x09, 0xB5, 0x11, 0xB4, 0x11, 0x93, 0x19, 0x51, 0x19, 0x30, 0x21, 0x2E, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x82, 0x31, 0x0D, 0x29, 0x0D, 0x31, 0x0D, 0x02, 0x29, 0x0D, 0x01, 0x28, 0xED, 0x8C, 0x30, 0xCD, 0x30, 0xCC, 0x30, 0xAC, 0x30, 0xCC, 0x30, 0xAC, 0x30, 0xCC, 0x30, 0xAC, 0x30, 0xCC, 0x28, + 0xAC, 0x30, 0xAC, 0x28, 0xAC, 0x30, 0xCC, 0x28, 0xAC, 0x01, 0x30, 0xCC, 0x83, 0x30, 0xCD, 0x28, 0xCC, 0x30, 0xCC, 0x28, 0xCC, 0x01, 0x30, 0xCD, 0x01, 0x30, 0xED, 0x85, 0x30, 0xCD, 0x28, 0xCC, 0x30, 0xCC, 0x28, 0xCC, 0x28, 0xAC, 0x30, 0xCC, 0x02, 0x28, 0xAC, 0x81, 0x30, 0xCC, 0x30, 0xCD, 0x05, 0x30, 0xED, 0x82, 0x30, 0xCD, 0x30, 0xED, 0x28, 0xCC, 0x02, 0x28, 0xAC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xEC, 0x82, 0x31, 0x0C, 0x29, 0x0C, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x80, 0x31, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x31, 0x0D, 0x01, 0x28, 0xEC, 0x02, 0x28, 0xCC, 0x01, 0x28, 0xAC, 0x86, 0x28, 0x8C, 0x99, 0xD2, 0x91, 0xD1, 0x99, 0xF2, 0x91, 0xD1, 0x91, 0xF2, 0x91, 0xD1, 0x01, 0x91, 0xF2, 0x80, 0x91, 0xF1, 0x01, 0x92, 0x12, 0x01, 0x8A, 0x12, 0x8A, 0x8A, 0x33, 0x92, 0x53, 0x8A, 0x53, 0x82, 0x32, 0x7A, 0x12, 0x79, 0xF2, 0x69, 0xB1, 0x61, 0x6F, 0x50, 0xED, 0x40, 0x8C, 0x30, 0x4B, 0x01, 0x30, 0x4A, 0x84, 0x30, 0x6B, 0x38, 0xAC, 0x30, 0xAC, 0x30, 0xCC, 0x38, 0xEC, 0x01, 0x30, 0xEC, 0x80, 0x31, 0x0C, 0x05, 0x30, 0xEC, 0x82, 0x28, 0xEC, 0x31, 0x0C, 0x30, 0xEC, 0x01, 0x31, 0x0C, 0x80, 0x31, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, + 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x85, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x84, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x7F, 0x29, 0x0D, 0x7F, 0x29, 0x0D, 0x21, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x04, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x85, 0x30, 0xEC, 0x49, 0x8F, 0x59, 0xD0, 0x51, 0x6F, 0x38, 0xCC, 0x38, 0xEC, 0x01, 0x30, 0xEC, 0x81, 0x30, 0xED, 0x31, 0x0D, 0x03, 0x39, 0x0D, 0x02, 0x39, 0x2D, 0x80, 0x39, 0x2E, 0x01, 0x39, 0x2D, 0x02, 0x39, 0x2E, 0x04, 0x39, 0x4E, 0x80, 0x39, 0x2E, 0x04, 0x39, 0x4E, 0x80, 0x39, + 0x2E, 0x05, 0x39, 0x4E, 0x01, 0x41, 0x4F, 0x82, 0x39, 0x4E, 0x41, 0x4F, 0x39, 0x4E, 0x03, 0x39, 0x4F, 0x03, 0x41, 0x4E, 0x81, 0x41, 0x4F, 0x39, 0x4F, 0x0B, 0x41, 0x4F, 0x80, 0x41, 0x6F, 0x01, 0x41, 0x4F, 0x81, 0x41, 0x6F, 0x41, 0x4F, 0x03, 0x41, 0x6F, 0x80, 0x41, 0x70, 0x01, 0x41, 0x6F, 0x80, 0x49, 0x6F, 0x05, 0x49, 0x70, 0x03, 0x49, 0x90, 0x06, 0x51, 0x91, 0x04, 0x51, 0xB1, 0x80, 0x51, 0xB2, 0x03, 0x51, 0xD2, 0x02, 0x51, 0xF3, 0x02, 0x49, 0xF3, 0xA0, 0x41, 0xF4, 0x39, 0xF4, 0x3A, 0x15, 0x4A, 0xD7, 0x6B, 0xBA, 0x5A, 0xD7, 0x62, 0xB7, 0x62, 0x96, 0x6A, 0x95, 0x6A, 0x55, 0x72, 0x54, 0x72, 0x55, 0x72, 0x34, 0x6A, 0x54, 0x62, 0x54, 0x5A, 0x54, 0x52, 0x73, 0x52, 0xB4, 0x4A, 0xD4, 0x5B, 0xF8, 0x85, 0xDF, 0x86, 0x3F, 0x76, 0x3F, 0x66, 0x3F, 0x5E, 0x3F, 0x4E, 0x3F, 0x46, 0x1E, 0x36, 0x1E, 0x2D, 0xFE, 0x25, 0xFE, 0x26, 0x1F, 0x1E, 0x1F, 0x1D, 0xFF, 0x01, 0x15, 0xFF, 0x04, 0x0D, 0xFF, 0x02, 0x05, 0xDF, 0x06, 0x05, 0xBF, 0x01, 0x05, 0xDF, 0x01, 0x05, 0xFF, 0x85, 0x06, 0x1F, 0x06, 0x3F, 0x06, 0x7F, 0x06, 0x9F, 0x06, 0xBF, 0x06, 0xDF, 0x01, 0x06, 0xFF, 0x91, 0x0F, 0x1F, 0x1F, 0x3F, 0x2E, 0xFF, 0x4E, 0xFF, 0x76, 0x9F, 0x3A, 0x51, 0x72, 0x53, 0x8A, 0x33, 0xA2, 0x13, 0xAA, 0x13, 0xA9, 0xF3, 0xA1, 0xD3, 0xA9, 0xD3, 0xAA, 0x14, 0xA2, 0x14, 0x92, 0x14, 0x71, 0x71, 0x61, 0x91, 0x01, 0x59, 0x91, 0x01, 0x51, 0x91, 0x80, 0x51, 0x71, 0x02, 0x49, 0x70, 0x81, 0x41, 0x4F, 0x41, 0x50, 0x01, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x85, 0x39, 0x4E, 0x31, + 0x2E, 0x39, 0x4E, 0x39, 0x2E, 0x31, 0x2D, 0x31, 0x2E, 0x03, 0x31, 0x2D, 0x01, 0x29, 0x0D, 0x03, 0x31, 0x0D, 0x81, 0x29, 0x0D, 0x31, 0x0D, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x21, 0x0D, 0x01, 0x21, 0x2E, 0x01, 0x19, 0x2F, 0x82, 0x19, 0x30, 0x19, 0x50, 0x19, 0x51, 0x03, 0x11, 0x51, 0x82, 0x11, 0x52, 0x11, 0x51, 0x11, 0x52, 0x02, 0x19, 0x72, 0x80, 0x19, 0x92, 0x01, 0x19, 0x72, 0x02, 0x19, 0x92, 0x82, 0x19, 0x93, 0x19, 0x72, 0x19, 0x92, 0x01, 0x19, 0x93, 0x01, 0x19, 0x92, 0x80, 0x19, 0x93, 0x06, 0x19, 0x92, 0x04, 0x19, 0x72, 0x05, 0x19, 0x92, 0x82, 0x11, 0x72, 0x19, 0x72, 0x19, 0x92, 0x01, 0x19, 0x72, 0x80, 0x19, 0x93, 0x07, 0x19, 0x72, 0x01, 0x11, 0x72, 0x89, 0x11, 0x93, 0x11, 0x73, 0x11, 0x93, 0x09, 0x94, 0x09, 0xB4, 0x09, 0xB5, 0x01, 0x95, 0x09, 0xB6, 0x01, 0xB6, 0x09, 0xD6, 0x02, 0x01, 0xB6, 0x80, 0x09, 0xD6, 0x01, 0x09, 0xB5, 0x84, 0x11, 0xB4, 0x11, + 0x72, 0x19, 0x51, 0x19, 0x2F, 0x21, 0x0E, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x31, 0x2D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x85, 0x28, 0xED, 0x29, 0x0D, 0x30, 0xEC, 0x28, 0xEC, 0x30, 0xEC, 0x30, 0xCC, 0x02, 0x30, 0xEC, 0x82, 0x28, 0xCC, 0x28, 0xEC, 0x28, 0xCC, 0x01, 0x28, 0xEC, 0x89, 0x28, 0xED, 0x28, 0xCC, 0x30, 0xED, 0x28, 0xEC, 0x28, 0xED, 0x28, 0xEC, 0x28, 0xED, 0x28, 0xCC, 0x31, 0x0D, 0x28, 0xED, 0x01, 0x31, 0x0D, 0x07, 0x28, 0xEC, 0x84, 0x31, 0x0D, 0x28, 0xEC, 0x31, 0x0D, 0x28, 0xED, 0x31, 0x0D, 0x02, 0x30, 0xED, 0x07, 0x28, 0xEC, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x04, 0x29, 0x0C, 0x07, 0x28, 0xEC, 0x82, 0x28, 0xCC, 0x28, 0xEC, 0x28, 0xCB, 0x01, 0x28, 0xEC, 0x81, 0x99, 0xD2, 0x99, 0xF2, 0x02, 0x91, 0xD1, 0x8A, 0x91, 0xB1, 0x91, 0xD1, 0x91, 0xD2, 0x91, 0xF2, 0x92, 0x12, 0x9A, 0x12, 0x9A, 0x33, 0x91, 0xF2, 0x92, 0x12, 0x91, 0xF2, 0x89, 0xF2, 0x01, 0x92, 0x33, 0x8A, 0x92, 0x53, 0x8A, 0x33, 0x92, 0x53, 0x8A, 0x53, 0x82, 0x33, 0x7A, 0x12, 0x71, 0xB0, 0x59, 0x2E, 0x48, 0xAC, 0x38, 0x4B, 0x30, 0x4B, 0x01, 0x30, 0x4A, 0x81, 0x30, 0x8B, 0x30, 0xAB, 0x01, 0x30, 0xCC, 0x04, 0x30, 0xEC, 0x82, 0x31, 0x0C, 0x30, 0xEC, 0x31, 0x0C, 0x04, 0x30, 0xEC, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x03, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x02, 0x29, 0x0C, + 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x84, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x09, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x9C, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x28, 0xEC, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x7F, 0x29, 0x0D, 0x74, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x09, 0x31, 0x0D, 0x01, 0x30, 0xEC, 0x01, 0x38, 0xED, 0x01, 0x30, 0xED, 0x02, 0x31, 0x0D, 0x02, 0x39, 0x0D, 0x04, 0x39, 0x2D, 0x81, 0x39, 0x2E, + 0x39, 0x4E, 0x02, 0x39, 0x2E, 0x0A, 0x39, 0x4E, 0x80, 0x39, 0x2E, 0x0A, 0x39, 0x4E, 0x02, 0x39, 0x4F, 0x05, 0x39, 0x4E, 0x80, 0x39, 0x4F, 0x01, 0x39, 0x4E, 0x81, 0x41, 0x4E, 0x39, 0x4E, 0x0C, 0x41, 0x4F, 0x03, 0x41, 0x6F, 0x80, 0x41, 0x4F, 0x04, 0x41, 0x6F, 0x80, 0x49, 0x6F, 0x03, 0x49, 0x70, 0x80, 0x49, 0x90, 0x01, 0x49, 0x70, 0x81, 0x51, 0x90, 0x49, 0x90, 0x03, 0x49, 0x91, 0x01, 0x51, 0x91, 0x03, 0x51, 0xB1, 0x81, 0x51, 0xD1, 0x51, 0xB1, 0x03, 0x51, 0xD2, 0x80, 0x51, 0xF2, 0x01, 0x51, 0xF3, 0x82, 0x51, 0xD3, 0x51, 0xF3, 0x49, 0xF3, 0x02, 0x49, 0xD3, 0x80, 0x52, 0x34, 0x01, 0x6A, 0xD7, 0x83, 0x72, 0xD7, 0x72, 0xB6, 0x7A, 0x95, 0x82, 0x75, 0x03, 0x82, 0x55, 0x91, 0x82, 0x75, 0x7A, 0x55, 0x72, 0x34, 0x6A, 0x13, 0x59, 0xF3, 0x49, 0xD2, 0x49, 0xF2, 0x74, 0x1A, 0x85, 0x5E, 0x85, 0xFF, 0x6E, 0x3F, 0x66, 0x5F, 0x56, 0x5F, 0x4E, 0x7F, 0x3E, 0x3F, 0x36, 0x1E, 0x25, 0xDE, 0x25, 0xFF, 0x01, 0x1D, 0xFF, 0x01, 0x15, 0xFF, 0x02, 0x0D, 0xFF, 0x80, 0x0D, 0xDF, 0x07, 0x05, 0xDF, 0x03, 0x05, 0xFF, 0x01, 0x06, 0x1F, 0x83, 0x06, 0x5F, 0x06, 0x7F, 0x06, 0x9F, 0x06, 0xBF, 0x01, 0x06, 0xFF, 0x01, 0x0F, 0x1F, 0x91, 0x17, 0x1F, 0x2F, 0x1F, 0x47, 0x1F, 0x87, 0x3F, 0x4B, 0x54, 0x5A, 0x12, 0x8A, 0x74, 0x9A, 0x33, 0xAA, 0x34, 0xAA, 0x14, 0xA1, 0xD3, 0xAA, 0x14, 0xA1, 0xF3, 0xA2, 0x34, 0x92, 0x14, 0x79, 0x71, 0x61, 0x51, 0x59, 0x71, 0x02, 0x51, 0x71, 0x80, 0x51, 0x91, 0x03, 0x49, 0x70, 0x02, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x81, 0x39, 0x2E, 0x39, + 0x4E, 0x03, 0x39, 0x2E, 0x81, 0x31, 0x2E, 0x31, 0x0D, 0x04, 0x31, 0x2D, 0x03, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x0A, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2C, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x2C, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x08, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0D, 0x80, 0x21, 0x0D, 0x01, 0x21, 0x0E, 0x80, 0x21, 0x2F, 0x02, 0x19, 0x2F, 0x80, 0x19, 0x30, 0x05, 0x19, 0x0F, 0x80, 0x19, 0x2F, 0x01, 0x19, 0x0F, 0x80, 0x19, 0x2F, 0x01, 0x19, 0x0F, 0x83, 0x19, 0x2F, 0x19, 0x0F, 0x19, 0x30, 0x19, 0x2F, 0x0F, 0x19, 0x0F, 0x82, 0x19, 0x30, 0x19, 0x2F, 0x19, 0x30, 0x02, 0x19, 0x2F, 0x84, 0x11, 0x0F, 0x19, 0x2F, 0x19, 0x30, 0x11, 0x0F, 0x19, 0x2F, 0x01, 0x19, 0x30, 0x06, 0x19, 0x10, 0x01, 0x19, 0x30, 0x02, 0x19, 0x51, 0x81, 0x11, 0x51, 0x11, 0x31, 0x01, 0x11, 0x52, 0x81, 0x11, 0x73, 0x11, 0x94, 0x01, 0x09, 0x95, 0x02, 0x09, 0xB6, 0x82, 0x09, 0xD6, 0x09, 0xB6, 0x09, 0xD6, 0x01, 0x11, 0xD5, 0x84, 0x11, 0xB4, 0x11, 0x72, 0x19, 0x30, 0x19, 0x2F, 0x21, 0x0E, 0x02, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x84, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x30, 0xEC, 0x31, 0x0D, 0x02, 0x28, 0xEC, 0x81, 0x31, 0x0D, 0x29, + 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x28, 0xED, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x83, 0x28, 0xEC, 0x29, 0x0D, 0x28, 0xEC, 0x31, 0x0D, 0x05, 0x29, 0x0D, 0x81, 0x31, 0x0D, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x04, 0x28, 0xEC, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x82, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x85, 0x99, 0xD1, 0x91, 0xB1, 0x99, 0xF2, 0x91, 0xD1, 0x99, 0xD1, 0x99, 0xD2, 0x01, 0x91, 0xD1, 0x85, 0x91, 0xF2, 0x91, 0xD2, 0x99, 0xF2, 0x91, 0xD2, 0x99, 0xF2, 0x91, 0xF2, 0x01, 0x91, 0xD2, 0x03, 0x91, 0xF2, 0x81, 0x92, 0x33, 0x92, 0x13, 0x01, 0x92, 0x33, 0x8A, 0x8A, 0x33, 0x8A, 0x53, 0x8A, 0x73, 0x82, 0x33, 0x71, 0xF1, 0x59, 0x2E, 0x48, 0xAC, 0x38, 0x4B, 0x30, 0x2A, 0x28, 0x4A, 0x30, 0x4A, 0x01, 0x30, 0x8B, 0x82, 0x30, 0xAC, 0x30, 0xAB, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x80, 0x38, 0xEC, 0x06, 0x30, 0xEC, 0x80, 0x28, 0xEC, 0x02, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x0D, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x28, 0xEC, 0x29, 0x0C, + 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x85, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x7F, 0x29, 0x0D, 0x7F, 0x29, 0x0D, 0x33, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x09, 0x31, 0x0D, 0x01, 0x30, 0xED, 0x03, 0x31, 0x0D, 0x82, 0x39, 0x0D, 0x31, 0x0D, 0x39, 0x0D, 0x06, 0x39, 0x2D, 0x05, 0x39, 0x2E, 0x01, 0x39, 0x4E, 0x01, 0x39, 0x2E, 0x18, 0x39, 0x4E, 0x01, 0x39, 0x2E, 0x82, 0x39, 0x4E, 0x39, 0x2E, 0x39, 0x4E, 0x01, 0x39, 0x4F, 0x0E, 0x41, 0x4F, 0x81, 0x41, 0x6F, 0x41, 0x4F, 0x02, 0x41, 0x6F, 0x81, 0x41, 0x4F, 0x41, 0x6F, 0x01, 0x49, 0x6F, 0x05, 0x49, 0x70, 0x05, 0x49, 0x90, 0x02, 0x51, 0x91, 0x04, 0x51, 0xB1, 0x80, 0x51, + 0xB2, 0x06, 0x51, 0xD2, 0x80, 0x51, 0xD3, 0x03, 0x51, 0xD2, 0x86, 0x5A, 0x13, 0x6A, 0x95, 0x7A, 0xD6, 0x82, 0xD6, 0x82, 0x95, 0x8A, 0x75, 0x8A, 0x55, 0x04, 0x92, 0x55, 0x93, 0x8A, 0x34, 0x92, 0x35, 0x8A, 0x14, 0x79, 0xD3, 0x71, 0xF3, 0x61, 0xF3, 0x5A, 0x74, 0x53, 0x16, 0x5B, 0xF8, 0x85, 0xDF, 0x86, 0x5F, 0x6E, 0x3F, 0x66, 0x3F, 0x56, 0x5F, 0x46, 0x1F, 0x2D, 0xBD, 0x25, 0x9D, 0x25, 0xDF, 0x25, 0xFF, 0x1D, 0xDF, 0x01, 0x15, 0xFF, 0x80, 0x0D, 0xDF, 0x01, 0x0D, 0xFF, 0x04, 0x05, 0xDF, 0x02, 0x05, 0xFF, 0x02, 0x06, 0x1F, 0x01, 0x06, 0x3F, 0x9D, 0x06, 0x5F, 0x06, 0x9F, 0x06, 0xBF, 0x06, 0xDF, 0x06, 0xFF, 0x07, 0x1F, 0x0F, 0x3F, 0x0F, 0x5F, 0x17, 0x5F, 0x27, 0x3F, 0x3E, 0xDE, 0x6F, 0x1F, 0x75, 0x1B, 0x41, 0xF0, 0x8A, 0xB4, 0x92, 0x13, 0xA2, 0x33, 0xAA, 0x13, 0xA9, 0xF3, 0xA1, 0xF3, 0xAA, 0x34, 0xA2, 0x34, 0x9A, 0x14, 0x81, 0xD3, 0x61, 0x51, 0x61, 0x91, 0x59, 0x71, 0x51, 0x91, 0x51, 0x70, 0x51, 0x71, 0x02, 0x49, 0x70, 0x80, 0x41, 0x70, 0x02, 0x41, 0x4F, 0x84, 0x39, 0x4F, 0x39, 0x2F, 0x39, 0x4F, 0x39, 0x2E, 0x39, 0x4E, 0x03, 0x39, 0x2E, 0x83, 0x31, 0x2D, 0x31, 0x2E, 0x31, 0x2D, 0x31, 0x2E, 0x01, 0x31, 0x2D, 0x81, 0x31, 0x0D, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x0E, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, + 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x07, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x0C, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x83, 0x21, 0x2D, 0x21, 0x2E, 0x21, 0x0E, 0x21, 0x2E, 0x01, 0x21, 0x0E, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0E, 0x80, 0x20, 0xEE, 0x03, 0x21, 0x0E, 0x82, 0x20, 0xEE, 0x21, 0x0E, 0x21, 0x0D, 0x01, 0x21, 0x0E, 0x82, 0x20, 0xEE, 0x21, 0x0E, 0x20, 0xEE, 0x05, 0x21, 0x0E, 0x81, 0x20, 0xEE, 0x21, 0x0E, 0x04, 0x20, 0xEE, 0x03, 0x21, 0x0E, 0x01, 0x19, 0x0E, 0x80, 0x21, 0x0E, 0x02, 0x19, 0x0E, 0x80, 0x21, 0x2E, 0x02, 0x19, 0x0E, 0x01, 0x21, 0x0F, 0x81, 0x18, 0xEE, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x81, 0x19, 0x0F, 0x21, 0x0F, 0x01, 0x19, 0x0F, 0x81, 0x19, 0x2F, 0x19, 0x0F, 0x01, 0x19, 0x30, 0x84, 0x11, 0x31, 0x11, 0x51, 0x19, 0x73, 0x11, 0x93, 0x11, 0x94, 0x01, 0x11, 0xB5, 0x80, 0x09, 0xB5, 0x01, 0x09, 0xB6, 0x8A, 0x09, 0xB5, 0x11, 0xD5, 0x11, 0xB5, 0x11, 0xB4, 0x11, 0x93, 0x19, 0x71, 0x19, 0x50, 0x19, 0x2F, 0x21, 0x2E, 0x29, 0x2D, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x31, 0x0D, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x01, 0x31, 0x0D, 0x81, 0x29, 0x0D, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x83, 0x28, 0xEC, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x05, 0x29, 0x0D, + 0x01, 0x29, 0x0C, 0x83, 0x29, 0x2D, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0D, 0x01, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x05, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x80, 0x91, 0xB1, 0x04, 0x99, 0xD1, 0x8A, 0x91, 0xB1, 0x99, 0xD1, 0x91, 0xB1, 0x91, 0xD1, 0x91, 0xB1, 0x99, 0xD2, 0x99, 0xF2, 0x91, 0xD2, 0x99, 0xF2, 0x99, 0xD2, 0x91, 0xB2, 0x01, 0x91, 0xD2, 0x84, 0x99, 0xF2, 0x91, 0xF2, 0x91, 0xD2, 0x91, 0xF2, 0x9A, 0x13, 0x02, 0x92, 0x12, 0x8F, 0x92, 0x32, 0x8A, 0x33, 0x92, 0x73, 0x92, 0x94, 0x8A, 0x93, 0x82, 0x32, 0x69, 0xB0, 0x59, 0x4E, 0x48, 0xCC, 0x38, 0x6B, 0x30, 0x4A, 0x30, 0x6B, 0x30, 0x6A, 0x30, 0x8B, 0x30, 0xAB, 0x38, 0xAC, 0x02, 0x38, 0xCC, 0x02, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x02, 0x28, 0xEC, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x11, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x2C, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, + 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x84, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x85, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x7F, 0x29, 0x0D, 0x7F, 0x29, 0x0D, 0x42, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x14, 0x31, 0x0D, 0x02, 0x39, 0x2D, 0x80, 0x31, 0x2D, 0x01, 0x39, 0x2D, 0x80, 0x31, 0x2D, 0x01, 0x31, 0x2E, 0x80, 0x31, 0x2D, 0x06, 0x39, 0x2E, 0x01, 0x39, 0x4E, 0x02, 0x39, 0x2E, 0x80, 0x39, 0x4E, 0x01, 0x39, 0x2E, 0x09, 0x39, 0x4E, 0x04, 0x39, 0x2E, 0x80, 0x39, 0x4E, 0x07, 0x39, 0x2E, 0x80, 0x39, 0x4F, 0x02, 0x39, 0x4E, 0x04, 0x41, 0x4F, 0x02, 0x39, 0x4F, 0x0A, 0x41, 0x4F, 0x02, 0x41, 0x6F, 0x83, 0x41, 0x4F, 0x41, 0x6F, 0x49, 0x6F, 0x41, 0x4F, 0x03, 0x49, 0x70, 0x04, 0x49, 0x90, 0x01, 0x51, 0x91, 0x04, 0x51, 0xB1, 0x80, 0x51, 0xD1, 0x01, 0x51, 0xD2, 0x02, 0x51, 0xF2, 0x03, 0x51, 0xD2, 0x03, 0x59, 0xD2, 0x85, 0x6A, 0x13, 0x7A, 0x75, 0x8A, 0x95, 0x92, 0x75, 0x92, 0x55, 0x92, 0x34, 0x02, 0x9A, 0x14, 0x02, 0x9A, 0x34, 0x91, 0x9A, 0x54, 0x9A, 0x75, 0x8A, 0x14, 0x81, 0xF4, 0x7A, 0x14, 0x72, 0x14, 0x62, 0x34, 0x52, 0x13, 0x42, 0x33, 0x6C, 0x3A, 0x7D, 0x7E, 0x7E, 0x3F, 0x66, 0x5F, 0x5E, 0x7F, 0x4E, 0x3F, 0x2D, 0x9D, 0x25, 0x7D, 0x25, 0xBF, 0x01, 0x1D, 0xDF, + 0x81, 0x15, 0xDF, 0x15, 0xFF, 0x01, 0x0D, 0xDF, 0x80, 0x0D, 0xFF, 0x04, 0x05, 0xFF, 0x01, 0x06, 0x1F, 0x02, 0x06, 0x3F, 0x80, 0x06, 0x5F, 0x01, 0x06, 0x9F, 0x8F, 0x06, 0xDF, 0x06, 0xFF, 0x07, 0x1F, 0x07, 0x3F, 0x07, 0x1F, 0x0F, 0x3F, 0x17, 0x3F, 0x1F, 0x1F, 0x36, 0xFE, 0x5E, 0xDF, 0x8E, 0x7F, 0x3A, 0x30, 0x82, 0xF5, 0x92, 0x73, 0x9A, 0x33, 0xA2, 0x13, 0x02, 0xA9, 0xF3, 0x88, 0xAA, 0x14, 0xA2, 0x14, 0x92, 0x14, 0x69, 0x51, 0x61, 0x71, 0x59, 0x91, 0x51, 0x71, 0x51, 0x70, 0x51, 0x71, 0x02, 0x49, 0x70, 0x82, 0x41, 0x70, 0x41, 0x4F, 0x41, 0x70, 0x01, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x80, 0x39, 0x2E, 0x01, 0x39, 0x4E, 0x01, 0x39, 0x2E, 0x83, 0x31, 0x2D, 0x39, 0x2E, 0x31, 0x2E, 0x31, 0x4E, 0x02, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x84, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x84, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x04, 0x29, 0x0C, 0x86, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x09, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x02, 0x21, + 0x0E, 0x01, 0x29, 0x2E, 0x81, 0x21, 0x0D, 0x29, 0x0E, 0x01, 0x21, 0x0D, 0x80, 0x20, 0xED, 0x01, 0x29, 0x0D, 0x82, 0x20, 0xED, 0x21, 0x0D, 0x29, 0x0D, 0x02, 0x21, 0x0D, 0x80, 0x29, 0x0D, 0x01, 0x21, 0x0D, 0x85, 0x20, 0xED, 0x29, 0x0D, 0x20, 0xED, 0x29, 0x0D, 0x21, 0x0D, 0x29, 0x0D, 0x01, 0x20, 0xED, 0x86, 0x21, 0x0D, 0x29, 0x0D, 0x20, 0xED, 0x21, 0x0D, 0x20, 0xED, 0x21, 0x0D, 0x20, 0xED, 0x01, 0x29, 0x0E, 0x04, 0x21, 0x0D, 0x80, 0x20, 0xED, 0x01, 0x21, 0x0D, 0x06, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x03, 0x21, 0x0E, 0x81, 0x21, 0x0F, 0x19, 0x0E, 0x02, 0x19, 0x0F, 0x85, 0x19, 0x30, 0x19, 0x51, 0x19, 0x52, 0x11, 0x52, 0x11, 0x73, 0x11, 0x94, 0x02, 0x11, 0xB4, 0x01, 0x11, 0x94, 0x01, 0x11, 0x93, 0x86, 0x11, 0x71, 0x19, 0x51, 0x19, 0x50, 0x21, 0x2E, 0x21, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x28, 0xEC, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x28, 0xEC, 0x07, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x09, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x05, 0x28, 0xEC, 0x01, 0x20, 0xEC, 0x01, 0x29, 0x0C, 0x02, 0x99, 0xD1, 0x01, 0x99, 0xF2, 0x02, 0x99, 0xD1, 0x02, 0x91, 0xB1, 0x81, 0x99, 0xB1, 0x91, 0xB1, 0x01, 0x99, 0xD2, 0x01, 0x99, 0xB2, 0x03, 0x99, 0xD2, 0x86, 0x91, 0xB1, + 0x99, 0xF2, 0x91, 0xD2, 0x91, 0xF2, 0x91, 0xD1, 0x92, 0x12, 0x91, 0xF2, 0x02, 0x92, 0x12, 0x82, 0x92, 0x32, 0x8A, 0x32, 0x92, 0x73, 0x01, 0x92, 0x94, 0x88, 0x8A, 0x53, 0x79, 0xF1, 0x69, 0x90, 0x51, 0x0D, 0x48, 0xAC, 0x38, 0x6B, 0x38, 0x4B, 0x30, 0x4B, 0x30, 0x6B, 0x01, 0x38, 0x8B, 0x81, 0x38, 0xAC, 0x30, 0xAC, 0x02, 0x30, 0xCC, 0x80, 0x30, 0xEC, 0x03, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x05, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x31, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x08, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, + 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x89, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x8A, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x7F, 0x29, 0x0D, 0x7F, 0x29, 0x0D, 0x10, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x13, 0x31, 0x0D, 0x02, 0x39, 0x2D, 0x83, 0x31, 0x2D, 0x39, 0x2D, 0x31, 0x2D, 0x39, 0x2D, 0x01, 0x31, 0x2D, 0x81, 0x31, 0x2E, 0x39, 0x4E, 0x02, 0x39, 0x2E, 0x80, 0x31, 0x2D, 0x01, 0x39, 0x2E, 0x02, 0x31, 0x2E, 0x01, 0x39, 0x2E, 0x80, 0x39, 0x4E, 0x01, 0x39, 0x2E, 0x82, 0x39, 0x4E, 0x39, 0x2E, 0x39, 0x4E, 0x02, 0x39, 0x2E, 0x80, 0x39, 0x4E, 0x01, 0x39, 0x2E, 0x80, 0x39, 0x4E, 0x10, 0x39, 0x2E, 0x02, 0x39, 0x4E, 0x06, 0x39, 0x4F, 0x02, 0x41, 0x4F, 0x01, 0x41, 0x4E, 0x07, 0x41, 0x4F, 0x03, 0x41, 0x6F, 0x84, 0x49, 0x6F, 0x41, 0x6F, 0x49, 0x6F, 0x49, 0x70, 0x49, 0x90, 0x01, 0x49, 0x70, 0x03, 0x49, 0x90, 0x02, 0x51, 0x91, 0x81, 0x51, 0xB1, 0x51, 0x91, 0x01, 0x51, 0xB1, 0x80, 0x51, 0xD1, 0x04, 0x51, 0xD2, 0x06, 0x59, 0xD2, 0x85, 0x61, 0xB2, 0x69, 0xB2, 0x82, 0x34, 0x92, 0x75, 0x9A, 0x55, 0x9A, 0x34, 0x04, 0xA2, 0x14, 0x01, 0xA2, 0x34, 0x82, 0x9A, 0x34, + 0x9A, 0x14, 0x9A, 0x35, 0x01, 0x92, 0x15, 0x91, 0x8A, 0x15, 0x7A, 0x14, 0x72, 0x14, 0x62, 0x54, 0x5A, 0xD5, 0x4B, 0x56, 0x7D, 0x9E, 0x86, 0x7F, 0x6E, 0x5F, 0x66, 0x5F, 0x4E, 0x1F, 0x25, 0x3C, 0x25, 0x7D, 0x25, 0xBE, 0x25, 0xDF, 0x1D, 0xDF, 0x15, 0xDF, 0x15, 0xFF, 0x01, 0x0D, 0xFF, 0x80, 0x05, 0xFF, 0x02, 0x06, 0x1F, 0x02, 0x06, 0x3F, 0x02, 0x06, 0x5F, 0x80, 0x06, 0x9F, 0x01, 0x06, 0xDF, 0x80, 0x07, 0x1F, 0x02, 0x07, 0x3F, 0x93, 0x0F, 0x3F, 0x0F, 0x5F, 0x1F, 0x5F, 0x37, 0x1F, 0x4E, 0xDF, 0x8E, 0xFF, 0x43, 0x33, 0x72, 0xF4, 0x82, 0x53, 0x92, 0x33, 0xA2, 0x13, 0xAA, 0x13, 0xA9, 0xF3, 0xA9, 0xF4, 0xAA, 0x14, 0xA1, 0xF4, 0x92, 0x14, 0x79, 0xB2, 0x61, 0x71, 0x59, 0x91, 0x02, 0x51, 0x71, 0x02, 0x49, 0x70, 0x01, 0x41, 0x70, 0x03, 0x41, 0x4F, 0x81, 0x39, 0x4F, 0x39, 0x4E, 0x02, 0x39, 0x2E, 0x07, 0x31, 0x2D, 0x04, 0x31, 0x0D, 0x82, 0x29, 0x0D, 0x31, 0x2D, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x2C, 0x84, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x02, 0x29, 0x2C, 0x81, 0x29, 0x0C, 0x29, 0x2C, 0x0A, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, + 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x85, 0x31, 0x0C, 0x29, 0x0C, 0x31, 0x0C, 0x29, 0x0C, 0x28, 0xEC, 0x31, 0x0C, 0x02, 0x29, 0x0C, 0x0C, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x1C, 0x29, 0x0D, 0x80, 0x21, 0x0D, 0x01, 0x29, 0x0D, 0x81, 0x21, 0x0D, 0x29, 0x2D, 0x01, 0x21, 0x0D, 0x01, 0x29, 0x0D, 0x01, 0x28, 0xED, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x21, 0x0E, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x01, 0x19, 0x30, 0x82, 0x19, 0x31, 0x19, 0x51, 0x19, 0x72, 0x01, 0x19, 0x93, 0x02, 0x11, 0x93, 0x01, 0x11, 0x72, 0x85, 0x11, 0x51, 0x19, 0x50, 0x19, 0x2F, 0x21, 0x4F, 0x21, 0x2E, 0x21, 0x2D, 0x01, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x83, 0x21, 0x0D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x82, 0x28, 0xEC, 0x29, 0x0C, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2D, 0x06, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x06, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x04, 0x28, 0xEC, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x80, 0x91, 0xB1, 0x01, 0x99, 0xB1, 0x07, 0x99, 0xD1, 0x80, 0x99, 0xB1, 0x01, 0x99, 0xD2, 0x01, 0x99, 0xB2, 0x01, 0x99, 0xB1, 0x81, 0x99, 0xD2, 0x99, 0xB2, 0x01, 0x99, 0xD2, 0x83, 0x99, 0xB1, 0x91, 0xB1, 0x91, 0xD1, 0x91, 0xB1, 0x01, 0x91, 0xD1, 0x80, 0x91, 0xF2, 0x01, 0x9A, 0x12, 0x01, 0x91, 0xF2, 0x95, 0x89, + 0xD1, 0x89, 0xF2, 0x8A, 0x12, 0x92, 0x32, 0x92, 0x53, 0x92, 0x73, 0x92, 0x53, 0x92, 0x73, 0x82, 0x32, 0x71, 0xB1, 0x61, 0x4F, 0x50, 0xED, 0x48, 0x8C, 0x40, 0x8B, 0x38, 0x8B, 0x38, 0x6B, 0x30, 0x8B, 0x38, 0xAC, 0x30, 0xAC, 0x30, 0xCC, 0x30, 0xEC, 0x30, 0xCC, 0x02, 0x30, 0xEC, 0x02, 0x31, 0x0C, 0x06, 0x29, 0x0C, 0x82, 0x28, 0xEC, 0x29, 0x0C, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x82, 0x28, 0xED, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x83, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x83, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x13, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x19, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, + 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x89, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x14, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x1C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0D, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x1B, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x15, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0D, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x6B, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x81, 0x31, 0x2D, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x0E, 0x31, 0x0D, 0x01, 0x39, 0x2D, 0x03, 0x31, 0x2D, 0x80, 0x39, 0x2D, 0x01, 0x31, 0x2D, 0x0F, 0x39, 0x2E, 0x80, 0x31, 0x2E, 0x01, 0x39, 0x4E, 0x1E, 0x39, 0x2E, 0x80, 0x39, 0x4E, 0x02, 0x39, 0x4F, 0x01, 0x39, 0x4E, 0x01, 0x41, 0x4E, 0x0B, 0x41, 0x4F, 0x82, 0x41, 0x6F, 0x41, 0x4F, 0x49, 0x6F, 0x06, 0x49, 0x70, 0x01, 0x49, 0x90, 0x81, 0x51, 0x91, 0x49, 0x91, 0x01, 0x51, 0x91, 0x03, 0x51, 0xB1, 0x81, 0x51, 0xD2, 0x59, 0xD2, 0x01, 0x51, 0xD2, 0x03, 0x59, 0xD2, 0x80, 0x61, 0xF2, 0x01, 0x61, 0xD2, 0x01, 0x69, 0xB2, 0x83, 0x79, 0xD3, 0x9A, 0x34, 0x9A, 0x14, 0xA2, 0x14, 0x05, 0xAA, 0x14, 0x03, 0xA2, 0x14, 0x01, 0x9A, 0x35, 0x95, 0x92, 0x55, 0x8A, 0x55, 0x82, 0x55, 0x72, 0x75, 0x6A, 0xB6, 0x52, 0x94, 0x5B, 0x77, 0x85, 0x9F, 0x86, 0x3F, 0x76, 0x7F, 0x6E, 0xBF, 0x4E, 0x3F, 0x35, 0xBD, 0x2D, 0x9D, 0x25, + 0xBE, 0x1D, 0xBE, 0x1D, 0xDE, 0x15, 0xFE, 0x0D, 0xFF, 0x0E, 0x1F, 0x06, 0x1F, 0x0E, 0x3F, 0x02, 0x06, 0x3F, 0x01, 0x06, 0x5F, 0x85, 0x06, 0x7F, 0x06, 0x9F, 0x06, 0xBF, 0x06, 0xDF, 0x06, 0xFF, 0x07, 0x1F, 0x02, 0x07, 0x5F, 0x94, 0x0F, 0x5F, 0x0F, 0x7F, 0x1F, 0x5F, 0x27, 0x1F, 0x46, 0xDE, 0x7F, 0x3F, 0x5C, 0xB8, 0x4A, 0x51, 0x7A, 0x73, 0x8A, 0x33, 0xA2, 0x34, 0xAA, 0x14, 0xA9, 0xF4, 0xA9, 0xD3, 0xAA, 0x14, 0xA1, 0xF4, 0x99, 0xF3, 0x89, 0xF3, 0x69, 0x71, 0x61, 0x91, 0x59, 0x71, 0x01, 0x51, 0x71, 0x80, 0x49, 0x70, 0x02, 0x49, 0x90, 0x81, 0x41, 0x70, 0x41, 0x6F, 0x02, 0x41, 0x4F, 0x80, 0x39, 0x4F, 0x01, 0x39, 0x4E, 0x02, 0x39, 0x2E, 0x05, 0x31, 0x2D, 0x01, 0x29, 0x0D, 0x03, 0x31, 0x0D, 0x02, 0x29, 0x0D, 0x0C, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x83, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x01, 0x31, 0x0C, 0x02, 0x29, 0x0C, 0x80, 0x31, 0x0C, 0x01, 0x29, 0x0C, 0x12, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x25, 0x29, 0x0D, 0x03, 0x29, 0x2E, 0x02, 0x21, + 0x0E, 0x01, 0x21, 0x2F, 0x84, 0x21, 0x50, 0x19, 0x50, 0x19, 0x51, 0x19, 0x71, 0x19, 0x72, 0x02, 0x19, 0x71, 0x80, 0x11, 0x30, 0x01, 0x19, 0x50, 0x85, 0x19, 0x4F, 0x19, 0x2E, 0x21, 0x2E, 0x21, 0x0D, 0x21, 0x0C, 0x29, 0x2D, 0x05, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x08, 0x29, 0x0C, 0x82, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x2D, 0x07, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x05, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x80, 0x20, 0xEC, 0x04, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x01, 0x91, 0xB1, 0x01, 0x99, 0xB1, 0x81, 0x99, 0xD1, 0x91, 0xB1, 0x03, 0x99, 0xD1, 0x80, 0x99, 0xD2, 0x01, 0x99, 0xD1, 0x80, 0x99, 0xD2, 0x01, 0x99, 0xB1, 0x81, 0x99, 0xB2, 0x99, 0xD2, 0x01, 0x99, 0xB2, 0x80, 0x99, 0xD2, 0x03, 0x99, 0xB1, 0x82, 0x99, 0xD1, 0x91, 0xB1, 0x99, 0xD1, 0x01, 0x99, 0xD2, 0x87, 0x99, 0xF2, 0x91, 0xD2, 0x99, 0xF2, 0x91, 0xD2, 0x91, 0xF2, 0x91, 0xD2, 0x91, 0xF2, 0x89, 0xD1, 0x01, 0x91, 0xF2, 0x81, 0x92, 0x33, 0x92, 0x12, 0x01, 0x92, 0x53, 0x01, 0x8A, 0x53, 0x86, 0x82, 0x53, 0x71, 0xF1, 0x61, 0x4F, 0x50, 0xED, 0x48, 0xCD, 0x38, 0x8C, 0x30, 0x6B, 0x01, 0x30, 0x8B, 0x80, 0x30, 0xAC, 0x02, 0x30, 0xCC, 0x07, 0x30, 0xEC, + 0x04, 0x28, 0xEC, 0x06, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x85, 0x29, 0x2D, 0x29, 0x0D, 0x28, 0xEC, 0x29, 0x0C, 0x29, 0x0D, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x2C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x2C, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0D, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x12, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x47, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x4F, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x77, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x31, 0x2D, 0x12, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x80, 0x31, 0x0D, 0x04, 0x31, 0x2D, 0x01, 0x39, 0x2E, 0x80, 0x31, 0x2D, 0x0B, 0x39, 0x2E, 0x01, + 0x31, 0x2E, 0x21, 0x39, 0x2E, 0x80, 0x39, 0x4E, 0x05, 0x39, 0x2E, 0x04, 0x39, 0x4F, 0x06, 0x41, 0x4F, 0x80, 0x41, 0x6F, 0x01, 0x41, 0x4F, 0x08, 0x49, 0x70, 0x03, 0x49, 0x90, 0x06, 0x51, 0xB1, 0x80, 0x51, 0xD2, 0x03, 0x59, 0xD2, 0x02, 0x61, 0xD2, 0x85, 0x61, 0xB1, 0x69, 0x91, 0x71, 0x91, 0x81, 0xB2, 0x9A, 0x14, 0xA2, 0x14, 0x01, 0xAA, 0x14, 0x82, 0xB2, 0x14, 0xAA, 0x14, 0xA9, 0xF4, 0x04, 0xAA, 0x14, 0x96, 0xA2, 0x14, 0xA2, 0x34, 0x9A, 0x34, 0x9A, 0x35, 0x92, 0x55, 0x8A, 0x35, 0x82, 0x55, 0x7A, 0x75, 0x6A, 0x95, 0x52, 0xD5, 0x53, 0x97, 0x5C, 0x79, 0x7E, 0x5F, 0x76, 0x7F, 0x5E, 0x5F, 0x4D, 0xFF, 0x46, 0x3F, 0x3E, 0x5F, 0x2E, 0x3F, 0x15, 0xDD, 0x15, 0xFE, 0x16, 0x1E, 0x0E, 0x1F, 0x01, 0x0E, 0x3F, 0x02, 0x06, 0x5F, 0x80, 0x06, 0x7F, 0x01, 0x06, 0x9F, 0x01, 0x06, 0xDF, 0x80, 0x07, 0x1F, 0x01, 0x07, 0x3F, 0x8D, 0x07, 0x5F, 0x07, 0x7F, 0x0F, 0x7F, 0x0F, 0x5F, 0x17, 0x5F, 0x2F, 0x5F, 0x36, 0xDE, 0x66, 0xFF, 0x7E, 0x3D, 0x31, 0xEF, 0x7A, 0xD4, 0x8A, 0x53, 0x9A, 0x33, 0xA1, 0xF3, 0x02, 0xA9, 0xF4, 0x85, 0xA1, 0xF4, 0xA2, 0x14, 0x92, 0x14, 0x69, 0x51, 0x61, 0x71, 0x59, 0x71, 0x01, 0x51, 0x71, 0x82, 0x49, 0x70, 0x49, 0x90, 0x49, 0x70, 0x01, 0x41, 0x70, 0x84, 0x41, 0x90, 0x39, 0x4F, 0x41, 0x4F, 0x39, 0x4F, 0x41, 0x4F, 0x04, 0x39, 0x2E, 0x80, 0x31, 0x0D, 0x01, 0x39, 0x2E, 0x03, 0x31, 0x2D, 0x04, 0x31, 0x0D, 0x02, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, + 0x04, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x83, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x82, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x03, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x82, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x87, 0x29, 0x2D, 0x29, 0x0C, 0x31, 0x0D, 0x29, 0x0C, 0x28, 0xEC, 0x31, 0x0D, 0x31, 0x0C, 0x28, 0xEC, 0x04, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x02, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0B, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x0B, 0x29, 0x0D, 0x86, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x21, 0x0E, 0x03, 0x21, 0x2F, 0x80, 0x19, 0x2F, 0x01, 0x19, 0x30, 0x01, 0x19, 0x50, 0x01, 0x19, 0x2F, 0x01, 0x19, 0x2E, 0x82, 0x21, 0x2E, 0x21, 0x0D, 0x21, 0x2D, 0x06, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x0A, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x02, 0x29, + 0x0C, 0x82, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x0D, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x05, 0x99, 0xD1, 0x81, 0x91, 0xB1, 0x99, 0xB1, 0x01, 0x99, 0xD1, 0x80, 0x91, 0xD1, 0x02, 0x99, 0xD2, 0x80, 0x99, 0xB2, 0x01, 0x99, 0xD2, 0x80, 0x99, 0xB1, 0x02, 0x99, 0xB2, 0x80, 0x99, 0xD2, 0x01, 0x99, 0xB1, 0x80, 0x91, 0x91, 0x01, 0x99, 0xB1, 0x81, 0x99, 0xD2, 0x99, 0xD1, 0x01, 0x99, 0xD2, 0x82, 0x99, 0xB1, 0x99, 0xF2, 0x99, 0xD2, 0x01, 0x91, 0xD2, 0x80, 0x91, 0xD1, 0x02, 0x91, 0xD2, 0x03, 0x91, 0xF2, 0x83, 0x89, 0xF2, 0x8A, 0x12, 0x8A, 0x32, 0x8A, 0x33, 0x01, 0x8A, 0x53, 0x8A, 0x8A, 0x73, 0x82, 0x53, 0x79, 0xF1, 0x61, 0x8F, 0x51, 0x2E, 0x40, 0xCC, 0x38, 0x8B, 0x30, 0x6A, 0x30, 0x6B, 0x30, 0x8B, 0x30, 0xAB, 0x02, 0x30, 0xAC, 0x82, 0x30, 0xCC, 0x30, 0xEC, 0x30, 0xCC, 0x04, 0x30, 0xEC, 0x84, 0x31, 0x0C, 0x28, 0xEC, 0x31, 0x0D, 0x31, 0x0C, 0x28, 0xEC, 0x05, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x85, 0x28, 0xEC, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, + 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x11, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x10, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x14, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x13, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x3E, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x5F, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x10, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x12, 0x29, 0x0D, 0x12, 0x31, 0x0D, 0x81, 0x39, 0x2D, 0x31, 0x0D, 0x0A, 0x31, 0x2D, 0x81, 0x31, 0x2E, 0x31, 0x2D, 0x02, 0x31, 0x2E, 0x01, 0x39, 0x2E, 0x80, 0x31, 0x2E, 0x02, 0x39, 0x2E, 0x01, 0x31, 0x2E, 0x2C, 0x39, 0x2E, 0x80, 0x39, 0x4F, 0x01, 0x41, 0x4F, 0x80, 0x39, 0x4F, 0x08, 0x41, 0x4F, 0x01, 0x41, 0x70, 0x02, 0x49, 0x70, 0x80, 0x49, 0x50, 0x05, 0x49, 0x70, 0x01, 0x49, 0x90, 0x01, 0x51, 0x91, 0x02, 0x51, 0xB1, 0x81, 0x51, 0xD2, 0x51, 0xD1, 0x02, 0x59, 0xD2, 0x8A, 0x59, 0xB2, 0x61, 0xD2, 0x61, 0xB2, 0x61, 0xD2, 0x69, 0xB2, 0x69, 0x91, 0x79, 0x92, 0x81, 0x72, 0x99, 0xF4, 0xAA, + 0x34, 0xAA, 0x14, 0x03, 0xB2, 0x14, 0x04, 0xAA, 0x14, 0x01, 0xA2, 0x14, 0x93, 0x9A, 0x34, 0x9A, 0x35, 0x92, 0x35, 0x92, 0x55, 0x82, 0x55, 0x7A, 0x55, 0x6A, 0x95, 0x5A, 0xB5, 0x4A, 0xD5, 0x32, 0x93, 0x33, 0x15, 0x54, 0xBB, 0x5D, 0x9E, 0x55, 0xFF, 0x56, 0x7F, 0x4E, 0xBF, 0x46, 0xBF, 0x26, 0x5E, 0x16, 0x1E, 0x0E, 0x3E, 0x01, 0x0E, 0x5F, 0x81, 0x06, 0x5F, 0x06, 0x7F, 0x02, 0x06, 0x9F, 0x84, 0x06, 0xBF, 0x06, 0xDF, 0x06, 0xFF, 0x07, 0x1F, 0x07, 0x3F, 0x01, 0x07, 0x5F, 0x01, 0x07, 0x7F, 0x8B, 0x0F, 0x7F, 0x17, 0x5F, 0x1F, 0x3F, 0x37, 0x1F, 0x4E, 0xDE, 0x87, 0x1F, 0x2A, 0x50, 0x62, 0x93, 0x82, 0x73, 0x9A, 0x53, 0xA2, 0x13, 0xA9, 0xF4, 0x01, 0xA9, 0xD3, 0x89, 0xA1, 0xF4, 0xA2, 0x14, 0x9A, 0x35, 0x71, 0x71, 0x61, 0x51, 0x61, 0x91, 0x51, 0x50, 0x51, 0x70, 0x49, 0x70, 0x49, 0x90, 0x01, 0x49, 0x70, 0x80, 0x41, 0x70, 0x03, 0x41, 0x4F, 0x80, 0x39, 0x4F, 0x05, 0x39, 0x2E, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2E, 0x02, 0x31, 0x2D, 0x06, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x11, 0x29, 0x0C, 0x81, 0x29, 0x2C, 0x29, 0x2D, 0x0A, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x0A, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x28, 0xEC, 0x01, 0x31, 0x0C, 0x84, 0x29, 0x0C, 0x31, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x28, 0xEC, 0x04, + 0x29, 0x0C, 0x19, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2E, 0x29, 0x0D, 0x29, 0x2E, 0x02, 0x21, 0x2E, 0x81, 0x21, 0x0E, 0x21, 0x2E, 0x01, 0x21, 0x2F, 0x01, 0x19, 0x2E, 0x85, 0x19, 0x0E, 0x21, 0x0E, 0x21, 0x2E, 0x21, 0x0D, 0x21, 0x2D, 0x21, 0x0D, 0x03, 0x29, 0x0C, 0x82, 0x31, 0x2C, 0x29, 0x0C, 0x31, 0x0C, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x09, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x82, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x82, 0x29, 0x0D, 0x28, 0xEC, 0x29, 0x0C, 0x04, 0x28, 0xEC, 0x80, 0x99, 0xD2, 0x04, 0x99, 0xD1, 0x85, 0x91, 0xB1, 0x99, 0xF2, 0x91, 0xB1, 0x91, 0xD1, 0x99, 0xD1, 0x91, 0xD1, 0x01, 0x91, 0xB1, 0x82, 0x99, 0xD2, 0x91, 0xB1, 0x99, 0xD2, 0x02, 0x99, 0xB2, 0x82, 0x99, 0xD2, 0x99, 0xB2, 0x99, 0xD2, 0x01, 0x99, 0xB1, 0x80, 0x99, 0xB2, 0x04, 0x99, 0xB1, 0x07, 0x99, 0xD2, 0x02, 0x91, 0xD2, 0x81, 0x91, 0xF2, 0x91, 0xD2, 0x03, 0x91, + 0xF2, 0x80, 0x92, 0x12, 0x02, 0x8A, 0x12, 0x80, 0x8A, 0x53, 0x02, 0x8A, 0x73, 0x84, 0x82, 0x52, 0x71, 0xF1, 0x69, 0xB0, 0x59, 0x0E, 0x40, 0x8C, 0x01, 0x30, 0x2A, 0x81, 0x30, 0x4A, 0x38, 0x6B, 0x01, 0x30, 0x8B, 0x01, 0x30, 0xAC, 0x02, 0x30, 0xCC, 0x04, 0x30, 0xEC, 0x01, 0x28, 0xEC, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x83, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x83, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x15, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x27, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x1F, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x15, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x23, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x23, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x37, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, + 0x80, 0x29, 0x2D, 0x2A, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x83, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x10, 0x29, 0x0D, 0x12, 0x31, 0x0D, 0x81, 0x31, 0x2D, 0x31, 0x0D, 0x0A, 0x31, 0x2D, 0x06, 0x31, 0x2E, 0x84, 0x31, 0x4E, 0x39, 0x4E, 0x39, 0x2E, 0x39, 0x2D, 0x31, 0x2D, 0x03, 0x31, 0x2E, 0x20, 0x39, 0x2E, 0x80, 0x39, 0x4E, 0x06, 0x39, 0x2E, 0x04, 0x39, 0x4F, 0x0A, 0x41, 0x4F, 0x80, 0x41, 0x6F, 0x01, 0x41, 0x70, 0x06, 0x49, 0x70, 0x01, 0x49, 0x90, 0x01, 0x51, 0x91, 0x04, 0x51, 0xB1, 0x01, 0x59, 0xB1, 0x02, 0x59, 0xB2, 0x01, 0x61, 0xD2, 0x01, 0x69, 0xB2, 0x84, 0x71, 0xB2, 0x71, 0x71, 0x79, 0x51, 0x91, 0xB3, 0xAA, 0x34, 0x01, 0xAA, 0x14, 0x01, 0xB2, 0x14, 0x03, 0xB1, 0xF4, 0x01, 0xA9, 0xF4, 0x80, 0xAA, 0x14, 0x01, 0xA2, 0x14, 0x97, 0x9A, 0x14, 0x9A, 0x35, 0x92, 0x34, 0x8A, 0x55, 0x82, 0x55, 0x72, 0x75, 0x6A, 0x74, 0x5A, 0x94, 0x52, 0x94, 0x3A, 0x93, 0x2A, 0xD4, 0x23, 0x34, 0x2B, 0xB6, 0x34, 0x99, 0x66, 0x5F, 0x56, 0x9F, 0x46, 0x9F, 0x36, 0x7F, 0x26, 0x5F, 0x1E, 0x5F, 0x16, 0x5F, 0x0E, 0x7F, 0x0E, 0x9F, 0x0E, 0xBF, 0x01, 0x06, 0xBF, 0x82, 0x06, 0xDF, 0x07, 0x1F, 0x07, 0x3F, 0x02, 0x07, 0x5F, 0x01, 0x07, 0x7F, 0x8B, 0x0F, 0x9F, 0x17, 0x7F, 0x1F, 0x5F, 0x2F, 0x1F, 0x3E, 0x9D, 0x87, 0x7F, 0x43, 0x95, 0x52, 0x52, 0x82, 0xB4, 0x8A, 0x13, 0x9A, 0x13, 0xA9, 0xF3, 0x02, 0xA9, 0xF4, 0x87, 0xA1, 0xF4, 0x9A, 0x34, 0x89, 0xD3, 0x69, 0x51, 0x61, 0x71, 0x51, 0x71, 0x51, 0x70, 0x51, 0x91, 0x02, + 0x49, 0x70, 0x80, 0x41, 0x70, 0x04, 0x41, 0x4F, 0x04, 0x39, 0x2E, 0x83, 0x39, 0x0D, 0x39, 0x2E, 0x31, 0x0D, 0x31, 0x2E, 0x02, 0x31, 0x2D, 0x04, 0x31, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x0B, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x2C, 0x29, 0x0C, 0x03, 0x29, 0x2C, 0x07, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x84, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x0C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x0E, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x21, 0x0D, 0x01, 0x21, 0x0E, 0x83, 0x21, 0x2E, 0x21, 0x0D, 0x21, 0x2E, 0x21, 0x0E, 0x01, 0x21, 0x0D, 0x01, 0x29, 0x2D, 0x07, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x07, 0x29, 0x0C, + 0x01, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0D, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x05, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x05, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x04, 0x28, 0xEC, 0x84, 0x99, 0x91, 0x99, 0xB1, 0x99, 0xD1, 0x99, 0xD2, 0x99, 0xD1, 0x01, 0x99, 0xD2, 0x8C, 0x91, 0xB1, 0x91, 0xD1, 0x91, 0xB1, 0x99, 0xD2, 0x91, 0xD1, 0x91, 0xB1, 0x99, 0xD2, 0x91, 0xB1, 0x99, 0xD2, 0x91, 0xB1, 0x99, 0xB2, 0x99, 0xB1, 0x99, 0xD2, 0x01, 0x99, 0xB2, 0x02, 0x99, 0xB1, 0x02, 0x99, 0xB2, 0x83, 0x99, 0xD2, 0x99, 0xB2, 0x99, 0xD2, 0x99, 0xB1, 0x03, 0x99, 0xD2, 0x01, 0x99, 0xB2, 0x01, 0x99, 0xD2, 0x82, 0x99, 0xF2, 0x91, 0xD2, 0x99, 0xD2, 0x01, 0x91, 0xD2, 0x84, 0x91, 0xF2, 0x91, 0xD1, 0x91, 0xD2, 0x92, 0x12, 0x9A, 0x33, 0x01, 0x92, 0x12, 0x80, 0x89, 0xF2, 0x02, 0x8A, 0x12, 0x01, 0x8A, 0x32, 0x02, 0x8A, 0x33, 0x88, 0x81, 0xF2, 0x79, 0xD1, 0x71, 0x90, 0x50, 0xAD, 0x40, 0x6B, 0x40, 0x8C, 0x38, 0x6B, 0x30, 0x4B, 0x30, 0x4A, 0x01, 0x30, 0x6B, 0x82, 0x30, 0x8B, 0x30, 0xAC, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x03, 0x31, 0x0C, 0x82, 0x29, 0x0C, 0x31, 0x0D, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x01, 0x31, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, + 0x0C, 0x02, 0x29, 0x0D, 0x08, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x31, 0x0D, 0x06, 0x29, 0x0D, 0x82, 0x31, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x15, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x0E, 0x29, 0x0D, 0x80, 0x29, + 0x0C, 0x04, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0D, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x04, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x31, 0x0D, 0x31, 0x2D, 0x01, 0x29, 0x0C, 0x81, 0x31, 0x0D, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x82, 0x31, 0x2D, 0x31, 0x0C, 0x31, 0x2D, 0x04, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x08, 0x31, 0x2D, 0x80, 0x31, 0x0D, 0x02, 0x31, 0x2D, 0x81, 0x31, 0x2E, + 0x31, 0x2D, 0x04, 0x31, 0x2E, 0x81, 0x31, 0x2D, 0x31, 0x0D, 0x02, 0x31, 0x2E, 0x81, 0x31, 0x2D, 0x31, 0x0D, 0x08, 0x31, 0x2E, 0x80, 0x31, 0x0D, 0x01, 0x31, 0x2E, 0x01, 0x39, 0x2E, 0x01, 0x31, 0x2E, 0x01, 0x39, 0x2E, 0x80, 0x31, 0x2E, 0x10, 0x39, 0x2E, 0x01, 0x39, 0x4E, 0x02, 0x39, 0x4F, 0x81, 0x41, 0x4F, 0x39, 0x2F, 0x04, 0x41, 0x4F, 0x84, 0x41, 0x70, 0x41, 0x4F, 0x41, 0x70, 0x41, 0x6F, 0x49, 0x90, 0x02, 0x41, 0x6F, 0x80, 0x41, 0x70, 0x02, 0x49, 0x70, 0x01, 0x49, 0x91, 0x80, 0x51, 0x91, 0x01, 0x51, 0x71, 0x80, 0x51, 0x91, 0x01, 0x51, 0xB2, 0x01, 0x51, 0x91, 0x01, 0x59, 0xB1, 0x01, 0x61, 0xB2, 0x8A, 0x69, 0xB2, 0x61, 0x51, 0x69, 0x51, 0x79, 0x92, 0x81, 0x72, 0x99, 0xF4, 0xA2, 0x14, 0xA9, 0xD3, 0xA9, 0xF4, 0xB1, 0xF4, 0xA9, 0xB3, 0x01, 0xA9, 0xD3, 0x83, 0xB1, 0xF4, 0xA9, 0xB3, 0xA9, 0xD3, 0xA1, 0xB3, 0x01, 0xA1, 0xD3, 0x95, 0xAA, 0x14, 0xAA, 0x34, 0x9A, 0x14, 0x9A, 0x34, 0x92, 0x34, 0x82, 0x13, 0x82, 0x54, 0x82, 0x95, 0x82, 0xF6, 0x72, 0xF6, 0x62, 0xD5, 0x42, 0x32, 0x31, 0xF1, 0x42, 0xD4, 0x64, 0x9A, 0x7E, 0x3F, 0x6E, 0x9F, 0x56, 0xBF, 0x3E, 0x9F, 0x26, 0x5E, 0x16, 0x5E, 0x16, 0x7E, 0x01, 0x0E, 0x9F, 0x84, 0x06, 0xDF, 0x0E, 0xFF, 0x07, 0x1F, 0x07, 0x3F, 0x07, 0x5F, 0x01, 0x07, 0x7F, 0x01, 0x07, 0x9F, 0x8C, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x7F, 0x2F, 0x3F, 0x3E, 0xDE, 0x6E, 0xFF, 0x6D, 0x1B, 0x42, 0x31, 0x82, 0xD4, 0x92, 0x74, 0x9A, 0x13, 0xAA, 0x14, 0xA1, 0xD3, 0x01, 0xA9, 0xF4, 0x01, 0xA2, 0x14, 0x83, 0x92, 0x13, 0x69, + 0x51, 0x61, 0x71, 0x59, 0x71, 0x01, 0x51, 0x70, 0x02, 0x49, 0x70, 0x01, 0x41, 0x70, 0x02, 0x41, 0x4F, 0x02, 0x39, 0x4F, 0x02, 0x39, 0x2E, 0x81, 0x39, 0x0D, 0x39, 0x0E, 0x01, 0x31, 0x2E, 0x01, 0x31, 0x2D, 0x04, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x02, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x31, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x21, 0x0C, 0x01, 0x29, 0x0D, 0x03, 0x21, 0x0C, 0x0D, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0D, 0x80, 0x20, 0xED, 0x04, 0x29, 0x0D, 0x01, 0x21, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x05, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x04, 0x29, 0x0D, 0x80, + 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x28, 0xEC, 0x83, 0x29, 0x0D, 0x28, 0xEC, 0x29, 0x0D, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x82, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x04, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x08, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x80, 0x20, 0xEC, 0x01, 0x28, 0xEC, 0x01, 0x99, 0x71, 0x83, 0x99, 0x91, 0x99, 0xD1, 0x99, 0xB1, 0x99, 0xD1, 0x04, 0x99, 0xD2, 0x81, 0x99, 0xF2, 0x91, 0xD1, 0x01, 0x99, 0xD2, 0x82, 0x91, 0xB1, 0x91, 0xD2, 0x91, 0xB1, 0x01, 0x99, 0xB2, 0x01, 0x99, 0xB1, 0x01, 0x99, 0xB2, 0x83, 0x99, 0xB1, 0x99, 0xB2, 0x99, 0xB1, 0x99, 0xD2, 0x01, 0x99, 0xB2, 0x01, 0x99, 0xD2, 0x83, 0x99, 0xB2, 0x91, 0x91, 0x99, 0xD2, 0x99, 0xB2, 0x08, 0x99, 0xD2, 0x01, 0x91, 0xD2, 0x80, 0x91, 0xF2, 0x03, 0x91, 0xD2, 0x03, 0x91, 0xF2, 0x82, 0x92, 0x12, 0x91, 0xF2, 0x92, 0x12, 0x01, 0x91, 0xF2, 0x01, 0x92, 0x13, 0x8D, 0x92, 0x12, 0x8A, 0x12, 0x82, 0x12, 0x81, 0xF2, 0x71, 0xD1, 0x61, 0x6F, 0x50, 0xED, 0x48, 0xAC, 0x38, 0x4B, 0x30, 0x2A, 0x30, 0x4A, 0x30, 0x6A, 0x30, 0x8B, 0x30, 0xAB, 0x01, 0x30, 0xCC, 0x04, 0x30, 0xEC, 0x02, 0x31, 0x0C, 0x88, 0x30, 0xEC, 0x28, 0xEC, 0x31, 0x0C, 0x28, 0xEC, 0x31, 0x0D, 0x31, 0x0C, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x28, 0xEC, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, + 0x29, 0x0C, 0x85, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x28, 0xEC, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0D, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x86, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x0F, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x0F, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, + 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x86, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x80, + 0x31, 0x0D, 0x08, 0x29, 0x0D, 0x81, 0x31, 0x2D, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x01, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x07, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x09, 0x31, 0x2D, 0x81, 0x31, 0x0D, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x81, 0x31, 0x0D, 0x31, 0x2D, 0x01, 0x31, 0x2E, 0x80, 0x31, 0x0D, 0x01, 0x31, 0x2E, 0x83, 0x31, 0x2D, 0x31, 0x0D, 0x31, 0x2D, 0x31, 0x2E, 0x02, 0x31, 0x0D, 0x05, 0x31, 0x2E, 0x80, 0x31, 0x2D, 0x05, 0x31, 0x2E, 0x80, 0x31, 0x2D, 0x05, 0x31, 0x2E, 0x80, 0x39, 0x4E, 0x0C, 0x39, 0x2E, 0x01, 0x39, 0x4E, 0x81, 0x39, 0x2F, 0x39, 0x4F, 0x01, 0x39, 0x2F, 0x05, 0x41, 0x4F, 0x05, 0x41, 0x6F, 0x80, 0x41, 0x70, 0x05, 0x49, 0x70, 0x81, 0x49, 0x71, 0x51, 0x71, 0x01, 0x51, 0x91, 0x80, 0x59, 0xB2, 0x02, 0x51, 0x91, 0x01, 0x59, 0x91, 0x8C, 0x61, 0xB2, 0x61, 0x92, 0x61, 0x71, 0x69, 0x72, 0x69, 0x51, 0x79, 0x72, 0x89, 0xD3, 0x99, 0xF4, 0xAA, 0x14, 0xA9, 0xF4, 0xA9, 0xD4, 0xA9, 0xD3, 0xB1, 0xF4, 0x01, 0xA9, 0xD3, 0x81, 0xB1, 0xF4, 0xA9, 0xB3, 0x02, 0xA9, 0xD3, 0x02, 0xA9, 0xF3, 0x97, 0xAA, 0x13, 0x99, 0xD3, 0x99, 0xF3, 0x9A, 0x13, 0x92, 0x14, 0x9A, 0x75, 0x92, 0x54, 0x8A, 0x54, 0x8A, 0xB5, 0x7A, 0x74, 0x62, 0x13, 0x39, 0xB0, 0x3A, 0x52, 0x5C, 0x79, 0x7E, 0x7F, 0x6E, 0xDF, 0x4E, 0xBF, 0x36, 0x7F, 0x1E, 0x5E, 0x16, 0x7E, 0x0E, 0x9E, 0x0E, 0xDF, 0x0E, 0xFF, 0x0F, 0x1F, 0x01, 0x07, 0x3F, 0x04, 0x07, 0x7F, 0x8A, 0x0F, 0x9F, 0x17, 0x5F, 0x27, 0x5F, 0x3E, 0xFF, 0x56, 0xBE, 0x86, + 0x5F, 0x32, 0x50, 0x7A, 0xF4, 0x8A, 0x33, 0x9A, 0x13, 0xA1, 0xD3, 0x01, 0xA9, 0xF4, 0x88, 0xAA, 0x14, 0xA1, 0xF4, 0xA2, 0x14, 0x9A, 0x34, 0x79, 0x91, 0x61, 0x71, 0x61, 0x91, 0x51, 0x70, 0x51, 0x91, 0x04, 0x49, 0x70, 0x02, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x81, 0x39, 0x2E, 0x39, 0x4E, 0x03, 0x39, 0x2E, 0x83, 0x31, 0x0D, 0x31, 0x2E, 0x31, 0x0D, 0x31, 0x2D, 0x04, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0E, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x02, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x21, 0x0D, 0x03, 0x29, 0x0D, 0x80, 0x21, 0x0C, 0x01, 0x29, 0x0C, 0x80, 0x21, 0x0C, 0x01, + 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x82, 0x31, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x08, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x21, 0x0D, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x07, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x81, 0x31, 0x2D, 0x28, 0xEC, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x05, 0x28, 0xEC, 0x80, 0x29, 0x0D, 0x01, 0x28, 0xEC, 0x82, 0x29, 0x0D, 0x28, 0xEC, 0x29, 0x0D, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0D, 0x01, 0x28, 0xEC, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x18, 0x28, 0xEC, 0x80, 0x20, 0xEC, 0x01, 0x28, 0xEC, 0x81, 0x20, 0xEC, 0x28, 0xCC, 0x02, 0x28, 0xEC, 0x81, 0x99, 0xB1, 0x99, 0x91, 0x06, 0x99, 0xB1, 0x01, 0x99, 0xD2, 0x01, 0x91, 0xB1, 0x81, 0x99, 0xD2, 0x91, 0xB2, 0x01, 0x99, 0xD2, 0x85, 0x91, 0xD1, 0x91, 0xB1, 0x99, 0xD2, 0x99, 0xB2, 0x99, 0xD2, 0x99, 0xB1, 0x01, 0x99, 0xD2, 0x01, 0x99, 0xB1, 0x82, 0x99, 0xD2, 0x99, 0xB1, 0x91, 0x91, 0x01, 0x99, 0xB1, 0x81, 0x99, 0xB2, 0x99, 0xD2, 0x01, 0x99, 0xB2, 0x82, 0x99, 0xB1, 0x99, 0xD2, 0x91, 0xB1, 0x02, 0x99, 0xD2, 0x80, 0x91, 0xB2, 0x04, 0x99, 0xD2, 0x01, 0x91, 0xD2, 0x86, 0x99, 0xD2, 0x91, 0xD2, 0x99, 0xD2, 0x91, 0xD2, 0x99, 0xD2, 0x91, 0xD2, 0x91, 0xF2, 0x03, 0x99, 0xF2, 0x83, 0x99, 0xF3, 0x99, 0xF2, 0x91, 0xF2, 0x92, 0x12, 0x01, 0x8A, 0x12, 0x81, 0x8A, 0x33, 0x8A, 0x32, 0x01, 0x8A, 0x53, 0x89, 0x82, 0x32, 0x79, 0xF1, 0x69, 0x8F, 0x50, 0xED, 0x40, 0x8B, 0x38, + 0x6B, 0x30, 0x4A, 0x30, 0x6A, 0x30, 0x6B, 0x30, 0x8B, 0x03, 0x30, 0xCC, 0x81, 0x30, 0xEC, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x84, 0x28, 0xEC, 0x31, 0x0D, 0x30, 0xEC, 0x31, 0x0C, 0x30, 0xEC, 0x01, 0x31, 0x0D, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x31, 0x2D, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x01, 0x29, 0x0D, 0x09, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x0C, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, + 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x85, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x87, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, + 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x13, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x08, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x01, 0x31, 0x0D, 0x80, 0x29, 0x0C, 0x0F, 0x31, 0x0D, 0x81, 0x31, 0x2D, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x01, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x82, 0x31, 0x2E, 0x31, 0x2D, 0x31, 0x2E, 0x03, 0x31, 0x0D, 0x81, 0x31, 0x2E, 0x31, 0x2D, 0x02, 0x31, 0x2E, 0x80, 0x31, 0x0D, 0x03, 0x31, 0x2E, 0x80, 0x31, 0x0E, 0x02, 0x31, 0x2E, 0x01, 0x31, 0x2D, 0x85, 0x31, 0x2E, 0x31, 0x2D, 0x31, 0x2E, 0x31, 0x2D, 0x31, 0x2E, 0x31, 0x2D, 0x04, 0x31, 0x2E, 0x80, 0x39, 0x4E, 0x01, 0x31, 0x2E, 0x01, 0x31, 0x2D, 0x85, 0x31, 0x2E, 0x39, 0x2E, 0x31, 0x2E, 0x39, 0x2E, 0x31, 0x0E, 0x39, 0x2E, 0x01, 0x31, 0x0E, 0x80, 0x31, 0x2E, 0x02, 0x39, 0x2E, 0x01, 0x39, 0x4E, 0x80, 0x39, 0x2F, 0x01, 0x39, 0x2E, 0x02, 0x39, 0x4F, 0x01, 0x39, 0x4E, 0x80, 0x39, 0x4F, 0x01, 0x41, 0x4F, 0x80, 0x41, 0x6F, 0x01, 0x41, 0x4F, 0x03, 0x41, + 0x6F, 0x80, 0x49, 0x90, 0x03, 0x49, 0x70, 0x80, 0x49, 0x71, 0x01, 0x51, 0x91, 0x02, 0x51, 0x71, 0x01, 0x51, 0x91, 0x03, 0x59, 0x91, 0x89, 0x61, 0x92, 0x69, 0x92, 0x69, 0x72, 0x69, 0x71, 0x71, 0x51, 0x89, 0xF3, 0x9A, 0x14, 0xB2, 0x76, 0xA1, 0xF4, 0xA9, 0xF4, 0x01, 0xA9, 0xD3, 0x84, 0xB1, 0xF4, 0xA9, 0xD3, 0xB1, 0xF4, 0xB1, 0xD3, 0xA9, 0xD3, 0x01, 0xB1, 0xD3, 0x82, 0xA9, 0xB2, 0xA9, 0xD3, 0xB1, 0xF4, 0x01, 0xA9, 0xF3, 0x96, 0xA1, 0xF3, 0x99, 0xD3, 0x99, 0xF3, 0xA2, 0x54, 0x9A, 0x34, 0x9A, 0x54, 0x92, 0x54, 0x82, 0x54, 0x7A, 0x94, 0x6A, 0x74, 0x39, 0xB0, 0x3A, 0xF4, 0x75, 0x7D, 0x6E, 0x5F, 0x5E, 0xBF, 0x3E, 0x9F, 0x2E, 0x9E, 0x1E, 0x9E, 0x16, 0xBE, 0x0E, 0xFF, 0x0F, 0x1F, 0x0F, 0x5F, 0x07, 0x5F, 0x01, 0x07, 0x7F, 0x02, 0x07, 0x9F, 0x89, 0x0F, 0x9F, 0x17, 0x7F, 0x1F, 0x5F, 0x37, 0x3F, 0x4E, 0xBE, 0x86, 0xDF, 0x3A, 0xB2, 0x72, 0xB3, 0x8A, 0x53, 0xA2, 0x54, 0x01, 0xAA, 0x14, 0x01, 0xA9, 0xF3, 0x88, 0xAA, 0x14, 0xA2, 0x34, 0x9A, 0x34, 0x81, 0xB2, 0x61, 0x30, 0x61, 0x91, 0x59, 0x70, 0x59, 0x91, 0x51, 0x70, 0x02, 0x49, 0x70, 0x01, 0x41, 0x6F, 0x01, 0x41, 0x4F, 0x80, 0x39, 0x4F, 0x02, 0x39, 0x4E, 0x04, 0x39, 0x2E, 0x01, 0x31, 0x2E, 0x02, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x14, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x81, + 0x29, 0x0C, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x2D, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x82, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x81, 0x21, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x0C, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x86, 0x29, 0x0D, 0x29, 0x2D, 0x28, 0xED, 0x28, 0xEC, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x02, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x04, 0x28, 0xEC, 0x81, 0x29, 0x0D, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x02, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x06, 0x28, 0xEC, 0x80, 0x29, 0x0D, 0x0C, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x08, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x28, 0xCC, 0x01, 0x28, 0xEC, 0x03, 0xA1, 0xB1, 0x86, 0x99, 0xB1, 0x99, 0x91, 0x99, 0xB1, 0x99, 0x91, 0x91, 0x91, 0x99, 0xB1, 0x91, 0xB1, 0x03, 0x99, 0xD2, 0x80, 0x99, 0xB2, 0x01, 0x99, 0xD2, 0x80, 0x99, 0xB1, 0x01, 0x99, 0xD2, 0x82, 0x99, 0xB2, 0x99, 0xB1, 0x99, 0xB2, 0x01, 0x99, 0xB1, 0x81, 0x99, 0xD2, 0x99, + 0xB2, 0x01, 0x99, 0xB1, 0x82, 0x91, 0x91, 0x99, 0xB2, 0x91, 0xB1, 0x02, 0x99, 0xB2, 0x01, 0x99, 0xD2, 0x82, 0x91, 0xB2, 0x91, 0xB1, 0x99, 0xB2, 0x01, 0x91, 0xB1, 0x01, 0x99, 0xD2, 0x80, 0x91, 0xB1, 0x01, 0x99, 0xD2, 0x82, 0x91, 0xB2, 0x99, 0xD2, 0x99, 0xB2, 0x01, 0x99, 0xD2, 0x80, 0x91, 0xB2, 0x03, 0x99, 0xD2, 0x82, 0x99, 0xF2, 0x99, 0xD2, 0x99, 0xF2, 0x01, 0x99, 0xD2, 0x81, 0x99, 0xF2, 0x9A, 0x12, 0x01, 0x92, 0x12, 0x8D, 0x91, 0xF2, 0x92, 0x12, 0x89, 0xF2, 0x92, 0x12, 0x8A, 0x12, 0x92, 0x53, 0x8A, 0x32, 0x92, 0x73, 0x8A, 0x53, 0x7A, 0x12, 0x69, 0xB0, 0x59, 0x4E, 0x48, 0xCC, 0x38, 0x6B, 0x01, 0x30, 0x4A, 0x02, 0x30, 0x8B, 0x02, 0x30, 0xAB, 0x02, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x80, 0x31, 0x0D, 0x01, 0x30, 0xEC, 0x83, 0x31, 0x0D, 0x28, 0xEC, 0x31, 0x0D, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x83, 0x31, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x02, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x09, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x10, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x0C, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x0E, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x04, 0x29, + 0x0C, 0x80, 0x29, 0x0D, 0x09, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x08, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x0C, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x11, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x10, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x0E, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x0B, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x0E, 0x29, 0x0C, 0x82, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x12, 0x29, 0x0D, 0x82, 0x31, 0x0D, 0x28, 0xEC, 0x31, 0x0C, 0x01, 0x31, 0x0D, 0x81, 0x28, 0xEC, 0x31, 0x0C, 0x05, + 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x05, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x04, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x02, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x02, 0x31, 0x2E, 0x80, 0x31, 0x0E, 0x01, 0x31, 0x2E, 0x01, 0x31, 0x0E, 0x81, 0x31, 0x2E, 0x31, 0x0D, 0x03, 0x31, 0x2E, 0x01, 0x31, 0x2D, 0x80, 0x31, 0x2E, 0x01, 0x31, 0x2D, 0x07, 0x31, 0x2E, 0x02, 0x31, 0x2D, 0x05, 0x31, 0x2E, 0x80, 0x31, 0x0E, 0x05, 0x39, 0x2E, 0x80, 0x39, 0x2F, 0x03, 0x39, 0x2E, 0x03, 0x39, 0x4E, 0x01, 0x41, 0x4E, 0x04, 0x41, 0x4F, 0x01, 0x41, 0x6F, 0x01, 0x49, 0x6F, 0x06, 0x49, 0x70, 0x01, 0x51, 0x71, 0x03, 0x51, 0x91, 0x82, 0x51, 0x71, 0x59, 0x91, 0x61, 0xB2, 0x01, 0x61, 0x92, 0x8B, 0x69, 0x92, 0x69, 0x71, 0x71, 0x71, 0x81, 0x92, 0x99, 0xF4, 0xA2, 0x14, 0xAA, 0x35, 0xAA, 0x14, 0xA1, 0xB3, 0xA9, 0xF4, 0xA9, 0xD3, 0xA9, 0xD4, 0x01, 0xB1, 0xF4, 0x80, 0xB1, 0xF3, 0x01, 0xB1, 0xD3, 0x83, 0xA9, 0xD3, 0xB1, 0xD3, 0xB1, 0xF4, 0xB1, 0xF3, 0x02, 0xA9, 0xD3, 0x01, 0xA1, 0xF3, 0xAD, 0xA2, 0x14, 0xA2, 0x34, 0x9A, 0x34, 0x8A, 0x33, 0x8A, 0x74, 0x7A, 0xB5, 0x52, 0x32, 0x29, 0xD0, 0x54, 0x79, 0x76, 0x5F, 0x5E, 0x7F, 0x4E, 0xFF, 0x36, 0xDF, 0x26, 0xDE, 0x16, 0xFE, 0x17, 0x1F, 0x0F, 0x3F, 0x0F, 0x5F, 0x0F, 0x7F, 0x07, 0x9F, 0x07, 0x7F, 0x07, 0x9F, 0x0F, 0xBF, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x7F, 0x2F, 0x5F, 0x46, 0xFF, 0x76, 0xFF, 0x43, + 0x94, 0x6A, 0x93, 0x8A, 0x53, 0x9A, 0x13, 0xAA, 0x14, 0xA1, 0xD3, 0xA9, 0xF3, 0xA9, 0xF4, 0xAA, 0x14, 0xA2, 0x14, 0xA2, 0x34, 0x92, 0x14, 0x69, 0x30, 0x69, 0x91, 0x59, 0x70, 0x51, 0x70, 0x51, 0x90, 0x02, 0x49, 0x70, 0x81, 0x41, 0x70, 0x41, 0x6F, 0x02, 0x41, 0x4F, 0x80, 0x39, 0x4F, 0x01, 0x39, 0x4E, 0x04, 0x39, 0x2E, 0x82, 0x31, 0x2E, 0x31, 0x2D, 0x31, 0x0D, 0x02, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x08, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x10, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0D, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x81, 0x29, 0x2C, 0x29, 0x0C, 0x02, 0x29, 0x2C, 0x81, 0x29, 0x0C, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x83, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x83, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x0D, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x2D, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x82, 0x28, 0xEC, 0x29, 0x0D, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, + 0x03, 0x29, 0x0D, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x84, 0x28, 0xEC, 0x29, 0x0D, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0D, 0x01, 0x28, 0xEC, 0x88, 0x29, 0x0D, 0x28, 0xEC, 0x29, 0x0D, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x80, 0x29, 0x0D, 0x0D, 0x28, 0xEC, 0x80, 0x28, 0xED, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x04, 0x28, 0xEC, 0x85, 0x99, 0x71, 0x99, 0x91, 0xA1, 0xB1, 0xA1, 0xB2, 0x99, 0x91, 0x99, 0xB2, 0x01, 0x99, 0xB1, 0x80, 0x99, 0xB2, 0x01, 0x99, 0xB1, 0x81, 0x91, 0x91, 0x99, 0xB1, 0x01, 0x91, 0x91, 0x01, 0x99, 0xB2, 0x82, 0x99, 0xD2, 0x99, 0xB2, 0x91, 0xB1, 0x04, 0x99, 0xB1, 0x81, 0x99, 0xD2, 0x99, 0xB1, 0x01, 0x91, 0xB1, 0x80, 0x91, 0x91, 0x02, 0x91, 0xB1, 0x81, 0x99, 0xD2, 0x99, 0xB1, 0x01, 0x99, 0xB2, 0x03, 0x99, 0xD2, 0x80, 0x99, 0xB2, 0x03, 0x99, 0xD2, 0x82, 0x99, 0xD1, 0x99, 0xD2, 0x99, 0xB1, 0x04, 0x99, 0xD2, 0x82, 0x91, 0xB2, 0x99, 0xD2, 0x91, 0xB2, 0x05, 0x99, 0xD2, 0x80, 0x91, 0xD2, 0x01, 0x99, 0xF2, 0x04, 0x91, 0xF2, 0x81, 0x92, 0x13, 0x92, 0x32, 0x01, 0x92, 0x12, 0x8C, 0x92, 0x33, 0x92, 0x32, 0x8A, 0x32, 0x92, 0x74, 0x92, 0x73, 0x82, 0x32, 0x79, 0xF1, 0x71, 0xD1, 0x61, 0x6F, 0x51, 0x0D, 0x40, 0xAC, 0x38, 0x6B, 0x30, 0x6B, 0x01, 0x30, 0x6A, 0x01, 0x30, 0x8B, 0x81, 0x30, 0xCC, 0x30, 0xEC, 0x01, 0x30, 0xCC, + 0x03, 0x30, 0xEC, 0x81, 0x31, 0x0C, 0x28, 0xEC, 0x02, 0x31, 0x0C, 0x82, 0x28, 0xEC, 0x31, 0x0C, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x2D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x82, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x01, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x0A, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x0A, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x13, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x0D, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x0C, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x09, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x1C, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0C, 0x81, 0x29, 0x2C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x80, 0x29, + 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x0E, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x81, 0x29, 0x2C, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x07, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x15, 0x29, 0x0D, 0x82, 0x31, 0x0D, 0x31, 0x2D, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x80, 0x31, 0x0C, 0x05, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x06, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x08, 0x31, 0x0D, 0x89, 0x31, 0x2D, 0x29, 0x0D, 0x31, 0x2D, 0x31, 0x0D, 0x29, 0x0D, 0x31, 0x0D, 0x31, 0x2D, 0x31, 0x0D, 0x31, 0x2D, 0x31, 0x0D, 0x02, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x01, + 0x31, 0x2D, 0x80, 0x31, 0x0D, 0x01, 0x31, 0x2E, 0x01, 0x31, 0x0E, 0x01, 0x31, 0x0D, 0x81, 0x31, 0x2E, 0x31, 0x2D, 0x01, 0x31, 0x2E, 0x02, 0x31, 0x0D, 0x06, 0x31, 0x2D, 0x81, 0x31, 0x0D, 0x31, 0x2E, 0x03, 0x31, 0x0D, 0x0C, 0x31, 0x2E, 0x08, 0x39, 0x2E, 0x01, 0x39, 0x4E, 0x01, 0x39, 0x2E, 0x03, 0x41, 0x4E, 0x01, 0x41, 0x4F, 0x81, 0x41, 0x6F, 0x41, 0x4F, 0x01, 0x49, 0x6F, 0x80, 0x41, 0x4F, 0x03, 0x49, 0x70, 0x80, 0x49, 0x90, 0x01, 0x49, 0x70, 0x80, 0x49, 0x71, 0x05, 0x51, 0x91, 0x80, 0x51, 0x71, 0x01, 0x59, 0x91, 0x81, 0x61, 0xB2, 0x69, 0xB2, 0x01, 0x69, 0x72, 0x8B, 0x71, 0x51, 0x89, 0xD3, 0x99, 0xF4, 0xA2, 0x14, 0xAA, 0x35, 0xA9, 0xD3, 0xA9, 0xF4, 0xA9, 0xB3, 0xA9, 0xD3, 0xB1, 0xD4, 0xB1, 0xB3, 0xB1, 0xD3, 0x01, 0xB1, 0xB3, 0x83, 0xB1, 0xD3, 0xB1, 0xF4, 0xA9, 0xD3, 0xB1, 0xD3, 0x01, 0xA9, 0xD3, 0x80, 0xA9, 0xF4, 0x01, 0xA9, 0xF3, 0x92, 0xAA, 0x14, 0xAA, 0x34, 0x9A, 0x34, 0x92, 0x33, 0x8A, 0x33, 0x7A, 0x74, 0x62, 0x73, 0x31, 0x8F, 0x53, 0xD7, 0x8E, 0x9F, 0x66, 0x9F, 0x4E, 0x9E, 0x36, 0xDF, 0x26, 0xFE, 0x17, 0x1F, 0x17, 0x3F, 0x0F, 0x5F, 0x0F, 0x7F, 0x07, 0x7F, 0x02, 0x07, 0x9F, 0x94, 0x0F, 0x9F, 0x17, 0x9F, 0x1F, 0x7F, 0x27, 0x3F, 0x3F, 0x1F, 0x6E, 0xFF, 0x54, 0x57, 0x5A, 0x52, 0x8A, 0x53, 0x9A, 0x34, 0xA2, 0x13, 0xA1, 0xD3, 0xA9, 0xD3, 0xA1, 0xD3, 0xAA, 0x14, 0xA1, 0xF4, 0xA2, 0x14, 0xA2, 0x55, 0x79, 0x71, 0x61, 0x50, 0x59, 0x50, 0x01, 0x51, 0x70, 0x01, 0x49, 0x70, 0x80, 0x49, 0x6F, 0x02, 0x41, 0x6F, 0x80, 0x41, 0x4F, + 0x02, 0x39, 0x4F, 0x01, 0x39, 0x4E, 0x02, 0x39, 0x2E, 0x81, 0x31, 0x0D, 0x31, 0x2E, 0x02, 0x31, 0x2D, 0x86, 0x31, 0x0D, 0x29, 0x0D, 0x31, 0x0D, 0x31, 0x2D, 0x31, 0x0D, 0x29, 0x0D, 0x31, 0x2D, 0x08, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x1C, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x05, 0x29, 0x2C, 0x82, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x82, 0x28, 0xEC, 0x29, 0x0D, 0x31, 0x0D, 0x07, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x17, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x86, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0D, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x82, 0x29, 0x0C, 0x28, 0xEC, + 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x82, 0x29, 0x0C, 0x28, 0xEC, 0x20, 0xEC, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x04, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x01, 0x99, 0x71, 0x02, 0x99, 0x91, 0x81, 0x99, 0x71, 0x99, 0x91, 0x01, 0x99, 0xB1, 0x83, 0x99, 0x91, 0x99, 0xB1, 0x99, 0x91, 0x99, 0xB1, 0x03, 0x99, 0x91, 0x08, 0x99, 0xB1, 0x80, 0x99, 0xD2, 0x01, 0x91, 0xB1, 0x80, 0x99, 0xD2, 0x01, 0x91, 0xB1, 0x01, 0x99, 0xB1, 0x02, 0x99, 0xD2, 0x84, 0x91, 0xB1, 0x99, 0xD2, 0x99, 0xB2, 0x99, 0xD2, 0x99, 0xB2, 0x01, 0x99, 0xB1, 0x81, 0x99, 0xD1, 0x99, 0xB1, 0x03, 0x99, 0xD2, 0x01, 0x99, 0xB2, 0x06, 0x99, 0xD2, 0x02, 0x99, 0xB2, 0x84, 0x99, 0xD2, 0x99, 0xF2, 0x99, 0xD2, 0x91, 0xD2, 0x99, 0xF2, 0x01, 0x91, 0xD2, 0x01, 0x91, 0xF2, 0x80, 0x91, 0xD2, 0x01, 0x91, 0xF2, 0x81, 0x9A, 0x12, 0x99, 0xF2, 0x01, 0x91, 0xF2, 0x01, 0x92, 0x12, 0x01, 0x92, 0x33, 0x01, 0x8A, 0x33, 0x8D, 0x8A, 0x53, 0x82, 0x32, 0x71, 0xF1, 0x69, 0x90, 0x59, 0x4E, 0x40, 0xCC, 0x40, 0x8C, 0x38, 0x6B, 0x30, 0x6B, 0x30, 0x8B, 0x28, 0x6A, 0x30, 0x8B, 0x30, 0xAB, 0x30, 0xAC, 0x01, 0x30, 0xCC, 0x04, 0x30, 0xEC, 0x82, 0x31, 0x0D, 0x31, 0x0C, 0x30, 0xEC, 0x01, 0x31, 0x0C, 0x82, 0x28, 0xEC, 0x30, 0xEC, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x82, 0x31, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x02, + 0x29, 0x2D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x0D, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x0E, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x0E, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x84, 0x29, 0x2C, 0x29, 0x0C, + 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x85, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x0B, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x84, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x0D, 0x29, 0x2D, 0x02, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x07, 0x29, 0x0C, 0x84, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x2C, 0x04, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x84, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, + 0x2C, 0x06, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2C, 0x04, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0D, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x08, 0x29, 0x0D, 0x07, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x08, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x06, 0x31, 0x0D, 0x81, 0x31, 0x2D, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x03, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x84, 0x31, 0x0D, 0x31, 0x2D, 0x29, 0x0D, 0x31, 0x0D, 0x31, 0x2D, 0x04, 0x31, 0x0D, 0x81, 0x31, 0x2E, 0x31, 0x0E, 0x05, 0x31, 0x0D, 0x82, 0x31, 0x2D, 0x31, 0x0D, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x02, 0x31, 0x2D, 0x03, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x81, 0x31, 0x2D, 0x31, 0x2E, 0x01, 0x31, 0x2D, 0x08, 0x31, 0x2E, 0x82, 0x31, 0x0E, 0x31, 0x2E, 0x39, 0x2E, 0x01, 0x31, 0x2E, 0x05, 0x39, 0x2E, 0x80, 0x39, 0x4E, 0x03, 0x39, 0x2E, 0x82, 0x39, 0x4E, 0x41, 0x4F, 0x41, 0x2E, 0x01, 0x41, 0x4F, 0x80, 0x41, 0x6F, 0x02, 0x41, 0x4F, 0x80, 0x41, 0x6F, 0x03, 0x49, 0x70, 0x80, 0x49, 0x50, 0x02, 0x49, 0x70, 0x81, 0x51, 0x91, 0x49, 0x70, 0x04, 0x51, 0x91, 0x02, 0x59, 0x91, 0x87, 0x61, 0xB2, 0x61, 0x92, 0x69, 0x92, 0x71, 0x92, 0x71, 0x51, 0x81, 0x92, 0x91, 0xD3, 0xA2, 0x34, 0x01, 0xAA, 0x14, 0x83, 0xA9, 0xF4, 0xA9, 0xB3, 0xA9, 0xD3, 0xB1, 0xD4, 0x08, 0xB1, 0xD3, 0x93, 0xA9, 0xD3, 0xA9, 0xB3, 0xB1, 0xF4, 0xA9, 0xD3, 0xAA, 0x13, 0xA1, 0xF3, 0xA2, 0x14, 0x9A, 0x13, 0x8A, 0x33, 0x82, 0x53, 0x6A, 0x53, 0x39, 0xB0, 0x43, 0x13, 0x8E, 0x7F, 0x6E, + 0x9F, 0x4E, 0x9F, 0x36, 0xFE, 0x27, 0x3F, 0x1F, 0x3F, 0x17, 0x5F, 0x01, 0x0F, 0x7F, 0x01, 0x07, 0x9F, 0x80, 0x07, 0xBF, 0x01, 0x0F, 0x9F, 0x98, 0x17, 0x9F, 0x27, 0x7F, 0x36, 0xFF, 0x5E, 0xDF, 0x6D, 0x7B, 0x52, 0x72, 0x82, 0x53, 0x92, 0x33, 0xA2, 0x14, 0xA1, 0xF4, 0xA1, 0xD3, 0xAA, 0x14, 0xA9, 0xF3, 0xAA, 0x14, 0xA2, 0x14, 0x9A, 0x34, 0x89, 0xD2, 0x61, 0x50, 0x61, 0x70, 0x59, 0x70, 0x51, 0x70, 0x51, 0x90, 0x49, 0x70, 0x49, 0x6F, 0x41, 0x4F, 0x01, 0x41, 0x6F, 0x01, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x80, 0x39, 0x4E, 0x04, 0x39, 0x2E, 0x02, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x81, 0x29, 0x0D, 0x31, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x08, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x10, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x0A, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, + 0x82, 0x29, 0x0D, 0x31, 0x0D, 0x31, 0x0C, 0x05, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x07, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x09, 0x29, 0x0C, 0x83, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x01, 0x20, 0xEC, 0x86, 0x28, 0xEC, 0x29, 0x0C, 0x20, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0C, 0x20, 0xEC, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x04, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x0B, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0xA1, 0xB2, 0x03, 0xA1, 0xB1, 0x04, 0x99, 0x91, 0x82, 0x99, 0x71, 0x99, 0x91, 0x99, 0xB1, 0x01, 0x99, 0x91, 0x02, 0x99, 0xB1, 0x81, 0x99, 0x91, 0x91, 0x91, 0x01, 0x99, 0xB1, 0x95, 0x91, 0x91, 0x99, 0xB1, 0x99, 0xD2, 0x99, 0xB1, 0x91, 0xB1, 0x91, 0xD1, 0x91, 0xB1, 0x99, 0xD2, 0x99, 0xD1, 0x91, 0xB1, 0x99, 0xD1, 0x91, 0xD1, 0x99, 0xD1, 0x91, 0xB1, 0x99, 0xD1, 0x99, 0xD2, 0x99, 0xB1, 0x99, 0xB2, 0x99, 0xD2, 0x99, 0xB1, 0x99, 0xD1, 0x99, 0xD2, 0x01, 0x99, 0xB1, 0x80, 0x99, 0xD2, 0x01, 0x99, 0xB2, 0x83, 0x99, 0xB1, 0x99, 0xD2, 0x99, 0xB2, 0x99, 0xD2, 0x05, 0x99, 0xB2, 0x80, 0x99, 0xD2, 0x02, 0x99, + 0xB2, 0x02, 0x99, 0xD2, 0x02, 0x91, 0xD2, 0x01, 0x99, 0xD2, 0x81, 0x99, 0xF2, 0x91, 0xD2, 0x02, 0x99, 0xD2, 0x80, 0x91, 0xD2, 0x01, 0x91, 0xF2, 0x83, 0x92, 0x12, 0x9A, 0x33, 0x92, 0x33, 0x92, 0x12, 0x01, 0x8A, 0x12, 0x80, 0x82, 0x12, 0x02, 0x8A, 0x53, 0x87, 0x82, 0x53, 0x7A, 0x12, 0x61, 0x90, 0x51, 0x2E, 0x48, 0xED, 0x40, 0xAC, 0x38, 0x6B, 0x30, 0x4A, 0x01, 0x30, 0x6B, 0x84, 0x30, 0x8B, 0x30, 0xAC, 0x38, 0xCC, 0x30, 0xCC, 0x30, 0xEC, 0x01, 0x30, 0xCC, 0x02, 0x30, 0xEC, 0x80, 0x31, 0x0D, 0x01, 0x31, 0x0C, 0x80, 0x30, 0xEC, 0x01, 0x31, 0x0C, 0x80, 0x28, 0xEC, 0x05, 0x29, 0x0C, 0x82, 0x28, 0xEC, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x86, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x31, 0x0D, 0x30, 0xEC, 0x28, 0xEC, 0x31, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x84, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x04, 0x29, 0x0C, 0x83, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x0A, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x86, 0x29, 0x2C, + 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2D, 0x08, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x08, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x0A, 0x29, 0x0C, 0x83, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x11, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x04, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x0A, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x07, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x0C, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, + 0x2C, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x2C, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x0C, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x04, 0x31, 0x0D, 0x82, 0x29, 0x0D, 0x31, 0x0D, 0x29, 0x0D, 0x04, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x0A, 0x31, 0x0D, 0x82, 0x29, 0x0D, 0x31, 0x0D, 0x29, 0x0D, 0x07, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x81, 0x31, 0x0D, 0x29, 0x0D, 0x0E, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x08, 0x31, 0x0D, 0x81, 0x31, 0x2D, 0x31, 0x0D, 0x05, 0x31, 0x2D, 0x01, 0x31, 0x2E, 0x81, 0x31, 0x2D, 0x39, 0x2E, 0x08, 0x31, 0x2E, 0x08, 0x39, 0x2E, 0x81, 0x39, 0x2F, 0x41, 0x2F, 0x03, 0x41, 0x4F, 0x01, 0x41, 0x6F, 0x03, 0x41, 0x4F, 0x06, 0x49, 0x70, 0x80, 0x51, 0x91, 0x02, 0x51, 0x70, 0x01, 0x51, 0x91, 0x03, 0x59, 0x91, 0x80, 0x61, 0x71, 0x01, 0x69, 0x92, 0x8C, 0x71, 0x72, 0x79, 0x71, 0x89, 0xD3, 0xA2, 0x14, 0xA1, 0xF3, 0xAA, 0x14, 0xB2, 0x14, 0xA9, 0xD3, 0xB1, 0xD4, 0xB1, 0xD3, 0xA9, 0xB3, 0xB1, 0xD3, 0xA9, 0xB3, 0x01, 0xB1, 0xB3, 0x84, 0xB1, 0xD3, 0xB1, 0xB3, 0xB1, 0xD3, 0xA9, 0xD3, 0xB1, 0xD3, 0x01, 0xA9, 0xB3, 0x80, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x91, 0xA2, 0x13, 0x9A, 0x33, 0x92, 0x53, 0x8A, 0x53, 0x7A, 0x74, 0x49, 0xF1, 0x2A, 0x10, 0x85, 0xFF, 0x7E, 0xDF, 0x56, 0xDF, 0x36, 0xFE, 0x27, 0x1F, 0x1F, 0x5F, 0x17, 0x7F, 0x0F, 0x7F, 0x0F, 0x9F, + 0x07, 0x9F, 0x07, 0xBF, 0x01, 0x0F, 0xBF, 0x89, 0x17, 0x9F, 0x27, 0x9F, 0x37, 0x5F, 0x56, 0xFF, 0x7E, 0x7F, 0x42, 0x31, 0x72, 0x32, 0x92, 0x33, 0xA2, 0x34, 0xA1, 0xF4, 0x02, 0xA9, 0xF4, 0x87, 0xA1, 0xD3, 0xA2, 0x14, 0x9A, 0x14, 0x92, 0x13, 0x69, 0x30, 0x61, 0x50, 0x59, 0x70, 0x51, 0x70, 0x01, 0x51, 0x90, 0x01, 0x49, 0x6F, 0x83, 0x41, 0x70, 0x41, 0x6F, 0x39, 0x4F, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x80, 0x39, 0x4E, 0x03, 0x39, 0x2E, 0x80, 0x39, 0x0D, 0x04, 0x31, 0x2D, 0x84, 0x31, 0x0D, 0x31, 0x2D, 0x31, 0x0D, 0x29, 0x0D, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x83, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x02, 0x29, 0x2C, 0x81, 0x29, 0x0C, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x83, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x03, + 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x0B, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x0C, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x82, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x0A, 0x28, 0xEC, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x80, 0x20, 0xEC, 0x01, 0x28, 0xEC, 0x04, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x80, 0x20, 0xEC, 0x01, 0x28, 0xEC, 0x85, 0xA9, 0xD2, 0xA1, 0xB2, 0xA1, 0xB1, 0xA1, 0xD2, 0xA1, 0xB1, 0xA1, 0xD2, 0x01, 0xA1, 0xB1, 0x82, 0xA1, 0xB2, 0x99, 0x91, 0x99, 0xB1, 0x02, 0x99, 0x91, 0x80, 0x99, 0x71, 0x03, 0x99, 0x91, 0x01, 0x99, 0xB1, 0x80, 0x99, 0x91, 0x01, 0x99, 0xB1, 0x80, 0x99, 0xD1, 0x01, 0x99, 0xB1, 0x81, 0x99, 0xD2, 0x99, 0xD1, 0x01, 0x91, 0xD1, 0x82, 0x99, 0xD2, 0x99, 0xD1, 0x91, 0xB1, 0x01, 0x99, 0xD1, 0x01, 0x99, 0xB1, 0x82, 0x99, 0xD1, 0x99, 0xB1, 0x91, 0xB1, 0x02, 0x99, 0xB1, 0x0B, 0x99, 0xB2, 0x83, 0x99, 0xB1, 0x99, 0xD2, 0x99, 0xB2, 0x99, 0xD2, 0x01, 0x99, 0xB2, 0x85, 0x99, 0xD2, 0x99, 0xB2, 0x99, 0xD2, 0x91, 0xB2, 0x99, 0xD2, 0x91, 0xD2, + 0x0A, 0x99, 0xD2, 0x80, 0x91, 0xD2, 0x03, 0x91, 0xF2, 0x03, 0x92, 0x12, 0x83, 0x92, 0x32, 0x8A, 0x12, 0x8A, 0x32, 0x8A, 0x12, 0x02, 0x8A, 0x53, 0x85, 0x82, 0x32, 0x71, 0xD1, 0x61, 0x6F, 0x59, 0x2E, 0x40, 0xAC, 0x38, 0x8B, 0x01, 0x38, 0x6B, 0x01, 0x38, 0x8C, 0x01, 0x30, 0xAC, 0x82, 0x30, 0xAB, 0x30, 0xAC, 0x30, 0xCC, 0x01, 0x38, 0xEC, 0x81, 0x30, 0xEC, 0x31, 0x0C, 0x01, 0x30, 0xEC, 0x81, 0x28, 0xEC, 0x30, 0xEC, 0x04, 0x28, 0xEC, 0x80, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x82, 0x29, 0x0C, 0x31, 0x0D, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x82, 0x28, 0xEC, 0x29, 0x0D, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x07, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x2C, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2D, 0x0B, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2C, + 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x2C, 0x08, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x0B, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x0A, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x0E, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x83, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x2D, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x81, 0x29, 0x0C, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x07, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x83, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, + 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x0A, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x31, 0x0D, 0x04, 0x29, 0x0D, 0x04, 0x31, 0x0D, 0x81, 0x29, 0x0D, 0x28, 0xED, 0x04, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x07, 0x31, 0x0D, 0x02, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x05, 0x29, 0x0D, 0x05, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x06, 0x31, 0x0D, 0x82, 0x31, 0x2D, 0x31, 0x0D, 0x29, 0x0D, 0x06, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x03, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x80, 0x31, 0x0D, 0x03, 0x31, 0x2D, 0x80, 0x31, 0x2E, 0x01, 0x31, 0x2D, 0x83, 0x31, 0x0D, 0x31, 0x2E, 0x31, 0x0D, 0x31, 0x2D, 0x03, 0x31, 0x2E, 0x0D, 0x39, 0x2E, 0x08, 0x41, 0x4F, 0x01, 0x41, 0x50, 0x81, 0x49, 0x70, 0x49, 0x50, 0x02, 0x49, 0x70, 0x85, 0x51, 0x91, 0x49, 0x70, 0x49, 0x91, 0x51, 0xB1, 0x51, 0x91, 0x51, 0x70, 0x01, 0x51, 0x91, 0x80, 0x59, 0x91, 0x02, 0x61, 0x91, 0x87, 0x69, 0x92, 0x71, 0x92, 0x79, 0x92, 0x81, 0x92, 0x99, 0xF3, 0xA2, 0x14, 0xB2, 0x35, 0xAA, 0x14, 0x01, 0xA9, 0xB3, 0x81, 0xB1, 0xD4, 0xB1, 0xF4, 0x01, 0xB1, 0xD3, 0x80, 0xB1, 0xB3, 0x02, 0xB1, 0xD3, 0x82, 0xB1, 0xF4, 0xB1, 0xD3, 0xB1, 0xB3, 0x01, 0xB1, 0xD3, 0xA0, 0xA9, 0xB2, 0xB1, 0xF3, 0xAA, 0x13, 0xA1, 0xF3, 0xA2, 0x13, 0x9A, 0x33, 0x8A, 0x33, 0x82, 0x94, 0x5A, 0x12, 0x29, 0xAF, + 0x7D, 0x9D, 0x7E, 0xFF, 0x56, 0xDF, 0x36, 0xDE, 0x2F, 0x3F, 0x1F, 0x7F, 0x17, 0x7F, 0x0F, 0x9F, 0x07, 0x9F, 0x07, 0xBF, 0x0F, 0xBF, 0x0F, 0x9F, 0x17, 0xBF, 0x1F, 0x9F, 0x2F, 0x5F, 0x47, 0x1F, 0x7E, 0xDF, 0x4A, 0xD3, 0x6A, 0x32, 0x92, 0x53, 0x9A, 0x13, 0xA1, 0xF3, 0xAA, 0x14, 0x01, 0xA9, 0xD3, 0x89, 0xA9, 0xF4, 0xA1, 0xF3, 0xA2, 0x14, 0x9A, 0x34, 0x81, 0xD2, 0x61, 0x50, 0x61, 0x70, 0x51, 0x50, 0x51, 0x70, 0x51, 0x90, 0x01, 0x49, 0x90, 0x80, 0x41, 0x6F, 0x01, 0x41, 0x4F, 0x82, 0x41, 0x70, 0x39, 0x4F, 0x39, 0x4E, 0x03, 0x39, 0x2E, 0x81, 0x39, 0x0E, 0x39, 0x2E, 0x05, 0x31, 0x2D, 0x85, 0x31, 0x0D, 0x29, 0x0D, 0x31, 0x2D, 0x31, 0x0D, 0x29, 0x0D, 0x31, 0x0D, 0x07, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x86, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x09, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x12, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x84, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0D, 0x28, 0xEC, 0x10, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, + 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x21, 0x0C, 0x29, 0x2D, 0x0A, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x05, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x07, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x04, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x06, 0x28, 0xEC, 0x83, 0xA9, 0xD2, 0xA1, 0xB2, 0xA9, 0xF2, 0xA1, 0xB1, 0x02, 0xA1, 0xD2, 0x81, 0xA1, 0xD1, 0xA1, 0xD2, 0x03, 0xA1, 0xB1, 0x82, 0x99, 0x91, 0xA1, 0xB1, 0xA1, 0x91, 0x05, 0x99, 0x91, 0x02, 0x99, 0xB1, 0x81, 0x91, 0xB1, 0x99, 0xB1, 0x02, 0x91, 0xB1, 0x87, 0x99, 0xD1, 0x99, 0xD2, 0x91, 0xB1, 0x99, 0xB1, 0x91, 0xB1, 0x99, 0xB1, 0x99, 0xD2, 0x91, 0xB1, 0x01, 0x99, 0xB1, 0x02, 0x91, 0xB1, 0x81, 0x99, 0xB1, 0x91, 0xB1, 0x03, 0x99, 0xB2, 0x01, 0x99, 0xB1, 0x02, 0x99, 0xB2, 0x80, 0x99, 0xD2, 0x02, 0x99, 0xB2, 0x8D, 0x99, 0xB1, 0x99, 0xD2, 0x99, 0xB2, 0x99, 0xD2, 0x99, 0xB2, 0x99, 0xD2, 0x91, 0xB1, 0x99, 0xD2, 0x91, 0xD2, 0x91, 0xD1, 0x99, 0xD2, 0x91, 0xB1, 0x99, 0xB1, 0x99, 0xD2, 0x01, 0x91, 0xB1, 0x80, 0x99, 0xB1, 0x02, 0x99, 0xB2, 0x01, 0x99, 0xD2, 0x01, 0x91, 0xD2, 0x83, 0x99, 0xD2, 0x91, 0xD2, 0x9A, 0x12, 0x91, + 0xF2, 0x02, 0x92, 0x12, 0x83, 0x9A, 0x33, 0x9A, 0x53, 0x9A, 0x33, 0x92, 0x12, 0x02, 0x8A, 0x12, 0x01, 0x92, 0x53, 0x87, 0x8A, 0x32, 0x82, 0x12, 0x71, 0xD1, 0x69, 0x90, 0x61, 0x2F, 0x50, 0xEE, 0x48, 0xAD, 0x40, 0x8C, 0x01, 0x38, 0x6B, 0x02, 0x30, 0x6B, 0x80, 0x30, 0x8B, 0x01, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x80, 0x31, 0x0C, 0x02, 0x30, 0xEC, 0x84, 0x31, 0x0C, 0x28, 0xEC, 0x31, 0x0D, 0x29, 0x0C, 0x28, 0xEC, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x07, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x83, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x0D, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x0E, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x80, + 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x84, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x0A, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x08, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x17, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x0F, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x28, 0xEC, 0x19, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x0A, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x0B, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x06, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x31, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x02, 0x31, 0x0D, 0x81, 0x29, 0x0D, 0x31, 0x0D, 0x04, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x04, 0x29, 0x0D, 0x81, 0x31, 0x0D, 0x29, 0x0D, 0x0A, 0x31, 0x0D, 0x81, 0x31, 0x2D, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x80, + 0x31, 0x2D, 0x03, 0x29, 0x0D, 0x83, 0x31, 0x0D, 0x31, 0x2D, 0x31, 0x0D, 0x31, 0x2D, 0x06, 0x31, 0x0D, 0x02, 0x31, 0x2D, 0x81, 0x31, 0x0D, 0x31, 0x2D, 0x03, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x03, 0x31, 0x0D, 0x02, 0x31, 0x2D, 0x81, 0x31, 0x0D, 0x31, 0x2D, 0x06, 0x31, 0x0D, 0x03, 0x31, 0x2D, 0x80, 0x31, 0x0D, 0x01, 0x31, 0x2E, 0x07, 0x39, 0x2E, 0x80, 0x39, 0x2F, 0x01, 0x39, 0x2E, 0x84, 0x39, 0x4F, 0x41, 0x4F, 0x39, 0x4F, 0x41, 0x4F, 0x41, 0x2F, 0x01, 0x39, 0x2F, 0x01, 0x41, 0x4F, 0x02, 0x41, 0x50, 0x81, 0x49, 0x70, 0x41, 0x50, 0x01, 0x49, 0x70, 0x01, 0x49, 0x90, 0x81, 0x49, 0x70, 0x49, 0x90, 0x01, 0x51, 0x91, 0x81, 0x51, 0xB1, 0x51, 0x91, 0x03, 0x59, 0x91, 0x88, 0x61, 0x71, 0x61, 0x91, 0x71, 0x92, 0x79, 0xB2, 0x92, 0x14, 0x91, 0xF3, 0xA2, 0x34, 0xAA, 0x34, 0xA9, 0xF4, 0x01, 0xA9, 0xD3, 0x88, 0xB1, 0xD4, 0xB1, 0xB3, 0xB1, 0xF4, 0xB1, 0xD3, 0xA9, 0xB3, 0xB1, 0xB3, 0xB1, 0xD3, 0xA9, 0xB3, 0xB1, 0xF4, 0x03, 0xB1, 0xD3, 0x92, 0xA9, 0xB2, 0xA9, 0xD2, 0xA9, 0xF3, 0xA1, 0xF3, 0xA2, 0x13, 0x9A, 0x33, 0x92, 0x54, 0x82, 0x94, 0x5A, 0x32, 0x21, 0x6E, 0x7D, 0x5C, 0x86, 0xFF, 0x56, 0xFF, 0x36, 0xFE, 0x27, 0x1E, 0x1F, 0x7F, 0x17, 0x9F, 0x0F, 0x9F, 0x0F, 0xBF, 0x01, 0x0F, 0x9F, 0x94, 0x0F, 0x7F, 0x17, 0x7F, 0x27, 0x5F, 0x47, 0x1E, 0x7F, 0x3F, 0x5B, 0xD6, 0x5A, 0x10, 0x92, 0xB4, 0x9A, 0x54, 0xA2, 0x13, 0xA1, 0xF3, 0xA1, 0xD3, 0xA9, 0xD3, 0xA9, 0xF3, 0xAA, 0x14, 0xA2, 0x14, 0x9A, 0x34, 0x92, 0x34, 0x61, + 0x0F, 0x61, 0x50, 0x51, 0x50, 0x01, 0x51, 0x70, 0x01, 0x49, 0x70, 0x80, 0x41, 0x6F, 0x02, 0x41, 0x4F, 0x01, 0x39, 0x2F, 0x04, 0x39, 0x2E, 0x01, 0x31, 0x2D, 0x80, 0x31, 0x2E, 0x02, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x81, 0x29, 0x0D, 0x31, 0x2D, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x09, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0C, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x08, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x0C, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x08, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x83, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x21, 0x0C, 0x09, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x08, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x07, 0x28, 0xEC, 0x82, 0x20, 0xEC, 0x28, + 0xEC, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x20, 0xEC, 0x02, 0x29, 0x0C, 0x84, 0x20, 0xEC, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0C, 0x09, 0x28, 0xEC, 0x80, 0x28, 0xEB, 0x06, 0x28, 0xEC, 0x84, 0x29, 0x0C, 0x28, 0xEC, 0xA1, 0xD2, 0xA1, 0xB1, 0xA1, 0xD2, 0x02, 0xA1, 0xD1, 0x02, 0xA1, 0xD2, 0x02, 0xA1, 0xB2, 0x81, 0xA1, 0xB1, 0xA1, 0xD1, 0x02, 0xA1, 0xB1, 0x04, 0x99, 0x91, 0x81, 0x99, 0xB1, 0x99, 0x90, 0x01, 0x99, 0xB1, 0x07, 0x91, 0xB1, 0x05, 0x99, 0xB1, 0x87, 0x91, 0xB1, 0x99, 0xB1, 0x91, 0xB1, 0x99, 0xB1, 0x91, 0xB1, 0x99, 0xB1, 0x99, 0xB2, 0x91, 0xB1, 0x01, 0x99, 0xB2, 0x80, 0x99, 0xB1, 0x01, 0x99, 0xB2, 0x80, 0x99, 0xD2, 0x03, 0x99, 0xB2, 0x80, 0x99, 0xB1, 0x03, 0x99, 0xB2, 0x80, 0x99, 0xD2, 0x01, 0x91, 0xB2, 0x80, 0x91, 0xD1, 0x01, 0x99, 0xD2, 0x81, 0x91, 0xB1, 0x99, 0xD2, 0x03, 0x99, 0xB1, 0x84, 0x91, 0xB1, 0x99, 0xB1, 0x99, 0xB2, 0x99, 0xD2, 0x99, 0xB2, 0x02, 0x99, 0xD2, 0x80, 0x99, 0xF2, 0x01, 0x91, 0xD2, 0x82, 0x99, 0xF2, 0x91, 0xF2, 0x99, 0xF2, 0x02, 0x91, 0xF2, 0x80, 0x9A, 0x33, 0x02, 0x91, 0xF2, 0x90, 0x92, 0x13, 0x92, 0x12, 0x92, 0x13, 0x92, 0x33, 0x8A, 0x13, 0x8A, 0x12, 0x8A, 0x13, 0x81, 0xF2, 0x82, 0x12, 0x79, 0xD1, 0x69, 0xB0, 0x59, 0x4F, 0x51, 0x0E, 0x40, 0x8B, 0x30, 0x4B, 0x30, 0x4A, 0x30, 0x6B, 0x01, 0x30, 0x8B, 0x82, 0x30, 0xAB, 0x30, 0xCB, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x80, 0x30, 0xED, 0x01, 0x30, 0xEC, 0x03, 0x28, 0xEC, 0x82, 0x30, 0xEC, 0x28, 0xEC, 0x29, + 0x0C, 0x01, 0x28, 0xEC, 0x87, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x2D, 0x80, 0x31, 0x2D, 0x01, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x82, 0x28, 0xEC, 0x29, 0x0C, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, + 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x08, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x83, + 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x01, 0x28, 0xEC, 0x05, 0x29, 0x0D, 0x83, 0x31, 0x2D, 0x31, 0x0D, 0x31, 0x2D, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x0A, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x82, 0x31, 0x0D, 0x29, 0x0D, 0x31, 0x2D, 0x02, 0x29, 0x0D, 0x85, 0x31, 0x0D, 0x29, 0x0D, 0x31, 0x0D, 0x31, 0x2D, 0x31, 0x0D, 0x29, 0x0D, 0x04, 0x31, 0x0D, 0x81, 0x29, 0x0D, 0x31, 0x2D, 0x01, 0x29, 0x0D, 0x09, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x04, 0x31, 0x0D, 0x82, 0x31, 0x2D, 0x31, 0x0D, 0x31, 0x2D, 0x06, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x81, 0x31, 0x0D, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x80, 0x31, 0x0D, 0x03, 0x31, 0x2E, 0x01, 0x39, 0x2E, 0x82, 0x39, 0x2F, 0x39, 0x2E, 0x39, 0x4F, 0x02, 0x39, 0x2E, 0x01, 0x39, 0x4F, 0x01, 0x41, 0x4F, 0x02, 0x41, 0x2F, 0x81, 0x41, 0x4F, 0x41, 0x70, 0x01, 0x41, 0x4F, 0x02, 0x41, 0x70, 0x02, 0x49, 0x70, 0x82, 0x49, 0x90, 0x49, 0x91, 0x49, 0x70, 0x03, 0x51, 0x91, 0x02, 0x59, 0x91, 0x8D, 0x61, 0x91, 0x61, 0x71, 0x69, 0x91, 0x71, 0x91, 0x81, 0xB2, 0x91, 0xF3, 0x99, 0xF3, 0xB2, 0x55, 0xB2, 0x34, 0xA1, 0xB3, 0xA9, 0xB3, 0xA9, 0xD3, 0xB1, 0xF4, 0xB1, 0xD4, 0x02, 0xB1, 0xD3, 0x80, 0xB1, 0xB3, 0x01, 0xB1, 0xD3, 0x85, 0xB1, 0xF3, + 0xB1, 0xD3, 0xB1, 0xF3, 0xB1, 0xD3, 0xA9, 0xD2, 0xB1, 0xF3, 0x01, 0xA9, 0xF3, 0x98, 0xA1, 0xF3, 0x9A, 0x13, 0x92, 0x33, 0x82, 0x74, 0x59, 0xF1, 0x21, 0x6E, 0x6C, 0xFA, 0x87, 0x1F, 0x56, 0xDF, 0x36, 0xFE, 0x27, 0x5F, 0x1F, 0x7F, 0x17, 0x9F, 0x0F, 0xBF, 0x0F, 0x9F, 0x0F, 0xBF, 0x0F, 0x9F, 0x1F, 0x9F, 0x2F, 0x7F, 0x3F, 0x1E, 0x6F, 0x1F, 0x74, 0xFA, 0x49, 0xEF, 0x8A, 0xB4, 0x92, 0x33, 0x01, 0xA2, 0x13, 0x89, 0xAA, 0x14, 0xA9, 0xD3, 0xAA, 0x14, 0xA9, 0xF3, 0xA2, 0x13, 0xA2, 0x14, 0x9A, 0x34, 0x69, 0x30, 0x61, 0x50, 0x59, 0x70, 0x01, 0x51, 0x70, 0x01, 0x49, 0x70, 0x01, 0x41, 0x6F, 0x80, 0x41, 0x4F, 0x03, 0x39, 0x4F, 0x03, 0x39, 0x2E, 0x80, 0x31, 0x0D, 0x01, 0x31, 0x2E, 0x81, 0x31, 0x0D, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x09, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x10, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x2D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2C, 0x0A, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x0B, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x08, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2C, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x01, 0x29, + 0x2D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x83, 0x21, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x21, 0x0C, 0x04, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x84, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x0A, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x06, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x82, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0C, 0x07, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x01, 0xA1, 0xB1, 0x81, 0xA1, 0x91, 0xA1, 0xB1, 0x04, 0xA1, 0xD1, 0x80, 0xA1, 0xD2, 0x01, 0xA1, 0xD1, 0x82, 0xA1, 0xD2, 0xA1, 0xD1, 0xA1, 0xD2, 0x03, 0xA1, 0xB1, 0x02, 0x99, 0xB1, 0x81, 0x99, 0x91, 0x99, 0xB1, 0x01, 0x99, 0x91, 0x80, 0x99, 0xB1, 0x01, 0x91, 0xB1, 0x81, 0x91, 0x90, 0x91, 0xB1, 0x02, 0x99, 0xB1, 0x01, 0x91, 0x91, 0x01, 0x99, 0xB1, 0x82, 0x91, 0x91, 0x99, 0xB1, 0x91, 0x91, 0x02, 0x99, 0xB1, 0x03, 0x99, 0xB2, 0x01, 0x99, 0xB1, 0x81, 0x99, 0xD2, 0x99, 0xB1, 0x05, 0x99, 0xB2, 0x82, 0x99, 0xD2, 0x99, 0xB2, 0x99, 0xB1, 0x03, 0x99, 0xB2, 0x82, 0x91, 0xB1, 0x99, 0xD2, 0x99, 0xD1, 0x01, 0x99, 0xD2, 0x85, 0x99, 0xB1, 0x99, 0xD1, 0x91, 0xB1, 0x99, 0xD2, 0x91, 0xB1, 0x99, 0xB1, 0x02, 0x99, 0xB2, 0x05, 0x99, 0xD2, 0x82, 0x91, 0xB1, 0x91, 0xB2, 0x91, 0xD2, 0x01, 0x91, 0xB1, 0x83, 0x99, + 0xF2, 0x91, 0xD2, 0x99, 0xF2, 0x91, 0xF2, 0x01, 0x99, 0xF2, 0x80, 0x91, 0xD2, 0x01, 0x91, 0xF2, 0x82, 0x91, 0xF3, 0x9A, 0x33, 0x9A, 0x54, 0x02, 0x92, 0x33, 0x01, 0x92, 0x53, 0x02, 0x8A, 0x53, 0x87, 0x7A, 0x12, 0x71, 0xD1, 0x51, 0x0E, 0x48, 0xCC, 0x40, 0xAC, 0x38, 0x6B, 0x30, 0x6B, 0x28, 0x6B, 0x01, 0x30, 0x8B, 0x80, 0x30, 0xAB, 0x01, 0x30, 0xCC, 0x02, 0x30, 0xEC, 0x80, 0x31, 0x0D, 0x01, 0x30, 0xEC, 0x80, 0x28, 0xEC, 0x01, 0x30, 0xEC, 0x84, 0x28, 0xEC, 0x31, 0x0C, 0x31, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x01, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x82, + 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0E, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0F, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x12, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x84, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x09, 0x29, 0x0C, 0x82, 0x29, 0x2C, 0x29, 0x2D, 0x29, 0x2C, 0x05, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x01, + 0x29, 0x0C, 0x14, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x31, 0x2D, 0x06, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x80, 0x30, 0xED, 0x03, 0x31, 0x0D, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x31, 0x2D, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x02, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x09, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x05, 0x31, 0x0D, 0x82, 0x31, 0x2D, 0x31, 0x0D, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x03, 0x31, 0x2D, 0x06, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x03, 0x31, 0x2D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x03, 0x31, 0x2E, 0x80, 0x39, 0x2E, 0x01, 0x31, 0x2E, 0x03, 0x39, 0x2E, 0x02, 0x39, 0x4F, 0x01, 0x39, 0x2F, 0x81, 0x39, 0x4F, 0x41, 0x2F, 0x04, 0x41, 0x4F, 0x85, 0x41, 0x70, 0x41, 0x6F, 0x41, 0x70, 0x49, 0x70, 0x41, 0x70, 0x49, 0x90, 0x02, 0x49, 0x70, 0x82, 0x51, 0xB1, 0x49, 0x70, 0x49, 0x71, 0x01, 0x51, 0x71, 0x01, 0x51, 0x91, 0x81, 0x59, 0xB1, 0x59, 0x91, 0x01, 0x61, 0x91, 0x84, 0x69, 0x71, 0x71, 0x71, 0x79, 0xB2, 0x89, 0xD3, 0x99, 0xF4, 0x01, 0xAA, 0x35, 0x80, 0xA9, 0xF4, 0x02, 0xA9, 0xB3, 0x84, 0xB1, 0xF4, 0xB1, 0xD4, 0xB1, 0xD3, 0xB1, 0xF4, 0xA9, 0xB3, 0x01, 0xB1, 0xB3, 0x80, 0xA9, 0xB3, 0x01, 0xB1, 0xF3, 0x80, 0xB1, 0xD3, 0x01, 0xA9, 0xD3, 0x8E, 0xB1, 0xF3, 0xA9, 0xF3, 0xA2, 0x13, 0x9A, 0x33, 0x92, 0x54, 0x82, 0x74, 0x5A, 0x11, 0x21, 0x4D, 0x75, 0x1B, 0x86, 0xFF, 0x56, 0xDF, 0x37, 0x1E, 0x27, 0x3F, 0x17, 0x7F, 0x0F, 0x7F, 0x01, 0x0F, 0x9F, 0x01, 0x17, 0x9F, 0x98, 0x27, 0x7F, + 0x37, 0x1E, 0x5E, 0xDE, 0x7D, 0xDC, 0x3A, 0x2F, 0x7A, 0xB3, 0x92, 0x73, 0x9A, 0x33, 0xA2, 0x13, 0xA1, 0xF3, 0xA9, 0xF3, 0xAA, 0x14, 0xA9, 0xF3, 0xA1, 0xF3, 0xA2, 0x14, 0x9A, 0x34, 0x89, 0xF3, 0x59, 0x0F, 0x59, 0x50, 0x59, 0x70, 0x51, 0x70, 0x49, 0x50, 0x41, 0x50, 0x41, 0x4F, 0x41, 0x6F, 0x01, 0x41, 0x4F, 0x82, 0x39, 0x4F, 0x39, 0x2F, 0x39, 0x4F, 0x01, 0x39, 0x2E, 0x01, 0x31, 0x2E, 0x82, 0x39, 0x2E, 0x31, 0x2E, 0x31, 0x0D, 0x01, 0x31, 0x0E, 0x02, 0x31, 0x0D, 0x08, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x83, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x0A, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x21, 0x0D, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x0E, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x04, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x2C, 0x01, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x2C, 0x07, 0x29, 0x0C, 0x84, 0x21, 0x0C, 0x20, + 0xEC, 0x21, 0x0C, 0x29, 0x0C, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x80, 0x20, 0xEC, 0x03, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x04, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x04, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x05, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x05, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x07, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x04, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x81, 0x29, 0x0C, 0x28, 0xEB, 0x01, 0x28, 0xEC, 0x05, 0xA1, 0xB1, 0x82, 0xA1, 0xD1, 0xA1, 0xD2, 0xA1, 0xB1, 0x01, 0xA1, 0xD1, 0x80, 0xA1, 0xB1, 0x01, 0xA1, 0xD1, 0x81, 0xA1, 0xD2, 0xA1, 0xB1, 0x01, 0xA1, 0xD2, 0x81, 0x99, 0xB1, 0xA1, 0xD1, 0x03, 0x99, 0xB1, 0x81, 0x99, 0x91, 0x99, 0xB1, 0x01, 0x99, 0x91, 0x80, 0x99, 0xB1, 0x02, 0x91, 0xB1, 0x80, 0x91, 0x91, 0x02, 0x99, 0xB1, 0x81, 0x99, 0x91, 0x99, 0xB1, 0x02, 0x99, 0x91, 0x04, 0x99, 0xB1, 0x02, 0x99, 0xB2, 0x01, 0x99, 0xB1, 0x09, 0x99, 0xB2, 0x80, 0x99, 0xD2, 0x01, 0x99, 0xB1, 0x03, 0x99, 0xD2, 0x03, 0x99, 0xD1, 0x86, 0x99, 0xB1, 0x99, 0xD2, 0x91, 0x91, 0x99, 0xD2, 0x99, 0xB1, 0x99, 0xD2, 0x99, 0xB2, 0x04, 0x99, 0xD2, 0x01, 0x99, 0xB2, 0x91, 0x99, 0xD2, 0x91, 0xB2, 0x91, 0xB1, 0x91, 0xB2, 0x91, 0x91, 0x91, 0xB2, 0x91, 0xD2, 0x91, 0xB2, 0x99, 0xD2, 0x99, 0xF3, 0x91, 0xD2, 0x91, 0xB2, 0x91, 0xD2, 0x99, 0xF3, 0x91, 0xF2, 0x91, 0xD2, 0x92, 0x13, 0x91, 0xF2, 0x02, 0x92, 0x12, 0x80, 0x89, 0xF2, 0x01, 0x92, + 0x33, 0x82, 0x8A, 0x53, 0x8A, 0x33, 0x82, 0x33, 0x01, 0x82, 0x53, 0x85, 0x72, 0x12, 0x69, 0xD0, 0x51, 0x2E, 0x40, 0xCC, 0x30, 0x6B, 0x30, 0x4A, 0x01, 0x30, 0x6B, 0x81, 0x30, 0x8B, 0x30, 0xAC, 0x01, 0x38, 0xCC, 0x80, 0x30, 0xCC, 0x05, 0x30, 0xEC, 0x01, 0x31, 0x0D, 0x81, 0x30, 0xEC, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x07, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x2D, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x11, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0E, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x12, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, + 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0E, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x85, 0x29, 0x0D, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x28, 0xEC, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x28, 0xEC, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x06, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x07, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x1E, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x31, 0x0D, 0x02, 0x30, 0xED, 0x81, 0x28, 0xED, 0x31, 0x0D, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x0B, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x0B, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x81, 0x29, 0x0D, 0x31, 0x0D, 0x01, 0x31, + 0x2D, 0x80, 0x29, 0x0D, 0x02, 0x31, 0x0D, 0x80, 0x29, 0x0D, 0x01, 0x31, 0x0D, 0x80, 0x31, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x06, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x81, 0x31, 0x2E, 0x31, 0x2D, 0x01, 0x31, 0x2E, 0x80, 0x31, 0x0D, 0x05, 0x31, 0x2E, 0x81, 0x39, 0x2E, 0x31, 0x2E, 0x03, 0x39, 0x2E, 0x84, 0x31, 0x0E, 0x39, 0x2E, 0x39, 0x4F, 0x39, 0x2F, 0x39, 0x4F, 0x01, 0x39, 0x2F, 0x03, 0x41, 0x4F, 0x81, 0x41, 0x6F, 0x41, 0x4F, 0x04, 0x41, 0x6F, 0x04, 0x49, 0x70, 0x82, 0x49, 0x71, 0x51, 0x91, 0x49, 0x70, 0x01, 0x51, 0x91, 0x89, 0x59, 0x91, 0x59, 0x71, 0x59, 0x91, 0x61, 0x91, 0x69, 0x92, 0x69, 0x91, 0x79, 0x92, 0x81, 0xB2, 0x91, 0xF3, 0xA2, 0x34, 0x01, 0xAA, 0x35, 0x86, 0xA1, 0xD4, 0xA1, 0xB3, 0xA9, 0xD3, 0xA9, 0xF4, 0xA9, 0xD4, 0xB1, 0xF4, 0xA9, 0xD3, 0x01, 0xB1, 0xD3, 0x01, 0xA9, 0xB3, 0x9F, 0xB1, 0xD3, 0xB1, 0xF3, 0xA9, 0xB3, 0xB1, 0xD3, 0xA9, 0xD3, 0xB2, 0x14, 0xA9, 0xF3, 0xA2, 0x13, 0x9A, 0x13, 0x92, 0x33, 0x8A, 0x74, 0x5A, 0x11, 0x29, 0x8E, 0x7D, 0x7C, 0x7E, 0xFF, 0x4E, 0xDE, 0x2F, 0x1E, 0x27, 0x5F, 0x17, 0x9F, 0x0F, 0x9F, 0x17, 0xBF, 0x17, 0x9F, 0x17, 0x7E, 0x27, 0x7E, 0x3F, 0x3E, 0x56, 0xDE, 0x86, 0xBF, 0x42, 0xB1, 0x72, 0x92, 0x92, 0x73, 0x9A, 0x33, 0xA2, 0x13, 0x03, 0xA9, 0xF3, 0x8B, 0xAA, 0x13, 0xAA, 0x14, 0xA2, 0x13, 0x9A, 0x34, 0x69, 0x30, 0x61, 0x50, 0x59, 0x50, 0x51, 0x70, 0x49, 0x50, 0x49, 0x70, 0x49, 0x90, 0x41, 0x70, 0x01, 0x41, 0x4F, 0x03, 0x39, 0x4F, 0x81, 0x39, 0x4E, 0x31, 0x4E, 0x02, 0x31, 0x2E, + 0x02, 0x31, 0x0E, 0x01, 0x31, 0x0D, 0x0A, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0F, 0x29, 0x0D, 0x84, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x82, 0x29, 0x0D, 0x31, 0x0D, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x83, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x2C, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x0C, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x0A, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x11, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, + 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0x28, 0xEB, 0x01, 0x28, 0xEC, 0x05, 0xA1, 0xB1, 0x81, 0xA1, 0xD1, 0xA1, 0xB1, 0x01, 0xA1, 0xF2, 0x81, 0xA1, 0xB1, 0xA1, 0xD1, 0x01, 0x99, 0xB1, 0x83, 0xA1, 0xB1, 0xA1, 0xD1, 0xA1, 0xD2, 0xA1, 0xD1, 0x02, 0xA1, 0xD2, 0x02, 0x99, 0xB1, 0x82, 0xA1, 0xD2, 0x99, 0xB1, 0x99, 0xB2, 0x07, 0x99, 0xB1, 0x80, 0x99, 0x91, 0x01, 0x99, 0xB1, 0x82, 0x99, 0xB2, 0x99, 0x91, 0x99, 0xB1, 0x01, 0x99, 0x91, 0x06, 0x99, 0xB2, 0x80, 0x99, 0x91, 0x0E, 0x99, 0xB2, 0x80, 0x91, 0xB1, 0x01, 0x99, 0xD2, 0x89, 0x99, 0xB1, 0x99, 0xD2, 0x99, 0xB1, 0x99, 0xD2, 0x99, 0xB1, 0x99, 0xD2, 0x91, 0xB1, 0x99, 0xB1, 0x99, 0xD2, 0x99, 0xB1, 0x02, 0x99, 0xB2, 0x02, 0x91, 0xB1, 0x81, 0x99, 0xD2, 0x91, 0x91, 0x01, 0x99, 0xD2, 0x80, 0x91, 0xB1, 0x01, 0x99, 0xD2, 0x02, 0x91, 0xB2, 0x82, 0x91, 0x91, 0x91, 0xD2, 0x99, 0xD2, 0x01, 0x91, 0xB2, 0x8B, 0x91, 0xD2, 0x91, 0xB2, 0x91, 0xD2, 0x91, 0xF2, 0x91, 0xD2, 0x91, 0xF2, 0x91, 0xD2, 0x92, 0x13, 0x91, 0xF2, 0x92, 0x12, 0x92, 0x13, 0x92, 0x33, 0x01, 0x8A, 0x12, 0x8E, 0x8A, 0x33, 0x8A, 0x53, 0x8A, 0x74, 0x8A, 0x94, 0x8A, 0x53, 0x82, 0x53, 0x79, 0xF2, 0x61, 0x90, 0x50, 0xED, 0x40, 0x8C, 0x38, 0x6B, 0x30, 0x4B, 0x30, 0x6B, 0x38, 0x8B, 0x30, 0x8B, 0x01, 0x30, 0xAC, 0x04, 0x30, 0xCC, 0x03, 0x30, 0xEC, 0x81, 0x31, 0x0C, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0D, 0x01, 0x28, 0xEC, 0x02, 0x29, 0x0C, + 0x05, 0x29, 0x0D, 0x82, 0x28, 0xEC, 0x29, 0x0D, 0x28, 0xEC, 0x08, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x26, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x15, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x13, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x16, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x22, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x12, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x0D, 0x28, 0xEC, 0x29, 0x0D, 0x29, 0x0C, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x07, 0x29, 0x0D, 0x81, 0x28, 0xED, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x0F, 0x29, 0x0D, 0x04, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0E, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0D, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0C, 0x83, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x01, + 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0E, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x07, 0x31, 0x0D, 0x0A, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x04, 0x29, 0x0D, 0x81, 0x28, 0xED, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x04, 0x29, 0x0D, 0x80, 0x31, 0x2D, 0x09, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x05, 0x29, 0x0D, 0x03, 0x31, 0x0D, 0x01, 0x31, 0x2D, 0x82, 0x31, 0x2E, 0x31, 0x0D, 0x31, 0x2D, 0x06, 0x31, 0x2E, 0x80, 0x31, 0x4E, 0x03, 0x31, 0x2E, 0x80, 0x31, 0x0E, 0x02, 0x31, 0x2E, 0x01, 0x39, 0x2E, 0x81, 0x39, 0x4E, 0x31, 0x2E, 0x02, 0x39, 0x2E, 0x01, 0x39, 0x2F, 0x01, 0x41, 0x4F, 0x81, 0x39, 0x4F, 0x41, 0x4F, 0x01, 0x39, 0x4F, 0x03, 0x41, 0x6F, 0x81, 0x41, 0x70, 0x41, 0x6F, 0x03, 0x49, 0x70, 0x81, 0x49, 0x91, 0x49, 0x71, 0x04, 0x51, 0x91, 0x02, 0x59, 0x71, 0x8A, 0x61, 0x92, 0x69, 0x91, 0x79, 0xD2, 0x79, 0xB2, 0x89, 0xF3, 0x91, 0xF3, 0x9A, 0x14, 0xA2, 0x35, 0xA2, 0x14, 0xA1, 0xD3, 0xA9, 0xD4, 0x01, 0xA9, 0xF4, 0x80, 0xB1, 0xF4, 0x01, 0xA9, 0xD3, 0x03, 0xB1, 0xD3, 0x80, 0xA9, 0xB3, 0x02, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x8B, 0xA2, 0x13, 0x9A, 0x33, 0x92, 0x33, 0x82, 0x74, 0x59, 0xF1, 0x29, 0x8E, 0x86, 0x1E, 0x77, 0x1F, 0x46, 0xBE, 0x2F, 0x3F, 0x1F, 0x5F, 0x17, 0x7F, 0x01, 0x17, 0x9F, 0x8B, 0x1F, 0x9F, 0x27, 0x7F, 0x2F, 0x1D, 0x4E, 0xBD, 0x7E, 0xDF, 0x43, 0x32, 0x5A, 0x51, 0x8A, 0x73, 0x9A, 0x74, + 0xA2, 0x13, 0xAA, 0x14, 0xA9, 0xF4, 0x01, 0xA9, 0xD3, 0x89, 0xA1, 0xD3, 0xAA, 0x14, 0xA2, 0x34, 0xA2, 0x54, 0x79, 0x91, 0x59, 0x0F, 0x59, 0x50, 0x49, 0x2F, 0x49, 0x50, 0x49, 0x70, 0x02, 0x41, 0x70, 0x80, 0x41, 0x4F, 0x04, 0x39, 0x4F, 0x01, 0x31, 0x4E, 0x02, 0x31, 0x2E, 0x01, 0x31, 0x0E, 0x81, 0x31, 0x0D, 0x31, 0x0E, 0x01, 0x29, 0x2D, 0x80, 0x31, 0x2D, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x22, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x12, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x04, 0x29, 0x0C, 0x81, 0x29, 0x0D, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x81, 0x29, 0x0C, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x2D, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x01, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x07, 0x29, 0x0C, 0x80, 0x21, 0x0C, 0x04, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x29, 0x0C, 0x04, 0x28, 0xEC, 0x04, 0x29, 0x0C, 0x09, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x81, 0x28, 0xEC, 0x20, 0xEC, 0x03, 0x28, + 0xEC, 0x03, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x84, 0x29, 0x0C, 0x28, 0xEC, 0x20, 0xEC, 0x28, 0xEC, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x20, 0xEC, 0x06, 0x28, 0xEC, 0x83, 0x29, 0x0C, 0x28, 0xEC, 0x29, 0x0C, 0x28, 0xEC, 0x03, 0xA1, 0xB1, 0x80, 0xA1, 0xD1, 0x02, 0xA1, 0xB1, 0x02, 0xA1, 0xD1, 0x81, 0x99, 0xB1, 0x99, 0xD1, 0x01, 0x99, 0xB1, 0x81, 0xA1, 0xD2, 0x99, 0xB1, 0x04, 0xA1, 0xD2, 0x81, 0x99, 0xB2, 0xA1, 0xB2, 0x01, 0x99, 0xB1, 0x81, 0xA1, 0xD2, 0x99, 0xB2, 0x03, 0x99, 0xB1, 0x03, 0x99, 0x91, 0x01, 0x99, 0xB1, 0x02, 0x99, 0x91, 0x81, 0x99, 0xB1, 0x99, 0xB2, 0x01, 0x99, 0x91, 0x80, 0x91, 0x91, 0x01, 0x99, 0xB2, 0x80, 0x99, 0x92, 0x02, 0x99, 0xB2, 0x80, 0x91, 0x91, 0x0B, 0x99, 0xB2, 0x80, 0x91, 0xB2, 0x01, 0x99, 0xD2, 0x02, 0x99, 0xB2, 0x86, 0x99, 0xD2, 0x91, 0xB1, 0x99, 0xD2, 0x99, 0xB2, 0x99, 0xD2, 0x91, 0xB1, 0x99, 0xB1, 0x03, 0x99, 0xB2, 0x84, 0x91, 0xB2, 0x99, 0xB2, 0x91, 0xB2, 0x99, 0xD2, 0x91, 0xB1, 0x02, 0x99, 0xD2, 0x80, 0x91, 0xB2, 0x01, 0x99, 0xD2, 0x82, 0x91, 0xB2, 0x91, 0x91, 0x91, 0xB2, 0x01, 0x99, 0xD2, 0x02, 0x91, 0xB2, 0x81, 0x91, 0xD2, 0x91, 0xB2, 0x05, 0x91, 0xD2, 0x93, 0x91, 0xF2, 0x91, 0xD2, 0x91, 0xF2, 0x92, 0x13, 0x89, 0xF2, 0x92, 0x12, 0x89, 0xF2, 0x8A, 0x12, 0x89, 0xF2, 0x8A, 0x33, 0x8A, 0x13, 0x8A, 0x53, 0x92, 0x74, 0x92, 0x94, 0x8A, 0x94, 0x82, 0x53, 0x71, 0xD1, 0x61, 0x6F, 0x48, 0xCD, 0x38, 0x8B, 0x01, 0x30, 0x4A, 0x83, 0x30, 0x6B, 0x38, 0x8B, 0x30, 0x8B, 0x30, 0xAB, 0x02, 0x30, 0xAC, 0x01, + 0x30, 0xCC, 0x80, 0x30, 0xEC, 0x02, 0x28, 0xEC, 0x83, 0x31, 0x0D, 0x28, 0xED, 0x30, 0xEC, 0x31, 0x0C, 0x02, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x51, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x67, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x46, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x17, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x10, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x2B, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x19, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0A, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x01, 0x29, 0x0D, 0x05, 0x31, 0x0D, 0x81, 0x29, 0x0D, 0x31, 0x0D, 0x05, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x0C, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x19, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x03, 0x29, 0x0D, 0x04, 0x31, 0x0D, 0x07, 0x31, 0x2E, 0x80, 0x31, 0x4E, 0x08, 0x31, 0x2E, 0x04, 0x39, 0x2E, 0x02, 0x39, 0x2F, 0x04, 0x39, 0x4F, 0x85, 0x41, 0x6F, 0x41, 0x4F, 0x41, 0x6F, 0x41, 0x70, 0x49, 0x70, 0x41, 0x70, 0x02, 0x49, 0x70, 0x01, 0x49, 0x71, 0x83, 0x49, 0x91, 0x51, 0x91, 0x51, 0x71, 0x51, 0x91, 0x01, 0x51, 0x71, 0xB6, 0x59, 0x92, 0x59, 0x71, 0x61, 0x71, 0x61, 0x92, 0x69, 0xB2, 0x71, 0xB2, 0x71, 0x71, 0x81, 0xB3, 0x91, 0xD3, 0xA2, 0x35, 0xA2, 0x15, 0xAA, 0x15, 0xA1, 0xD4, 0xA1, 0xB3, 0xA9, 0xD4, 0xB1, 0xF4, 0xA9, 0xD4, 0xB1, 0xF4, 0xA9, 0xD3, 0xB1, 0xF4, 0xA9, 0xD3, 0xB1, 0xD3, 0xA9, 0xD3, 0xB1, 0xD3, 0xA9, 0xD3, 0xB1, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0xA1, + 0xF3, 0x9A, 0x13, 0x8A, 0x13, 0x82, 0x33, 0x51, 0xD0, 0x32, 0x30, 0x96, 0xDF, 0x66, 0xDF, 0x46, 0xFE, 0x2F, 0x3F, 0x1F, 0x7F, 0x17, 0x7E, 0x17, 0x9E, 0x1F, 0x9E, 0x27, 0x7E, 0x37, 0x5E, 0x46, 0xDD, 0x6E, 0xDE, 0x5C, 0x76, 0x4A, 0x30, 0x82, 0x93, 0x92, 0x53, 0x9A, 0x13, 0xA1, 0xF3, 0xA9, 0xF4, 0xB1, 0xF4, 0xA9, 0xD3, 0x01, 0xA9, 0xF4, 0x89, 0xA2, 0x14, 0xA2, 0x34, 0x92, 0x13, 0x61, 0x10, 0x59, 0x50, 0x51, 0x30, 0x49, 0x50, 0x49, 0x70, 0x41, 0x50, 0x41, 0x70, 0x01, 0x41, 0x4F, 0x03, 0x39, 0x4F, 0x01, 0x31, 0x4F, 0x03, 0x31, 0x2E, 0x02, 0x31, 0x0E, 0x80, 0x31, 0x2E, 0x3E, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x13, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x17, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0B, 0x29, 0x0D, 0x84, 0x29, 0x0C, 0x29, 0x2D, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x08, 0x29, 0x0D, 0x02, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x87, 0x21, 0x0C, 0x29, 0x2D, 0x21, 0x0C, 0x29, 0x0C, 0x29, 0x0D, 0x29, 0x0C, 0x29, 0x0D, 0x28, 0xEC, 0x01, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x82, 0x29, 0x0C, 0x29, 0x0D, 0x28, 0xEC, 0x03, 0x29, 0x0C, 0x80, 0x28, 0xEC, 0x02, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x86, 0x29, 0x0C, 0x28, 0xEC, 0x20, 0xEC, 0x29, 0x0C, 0x20, 0xEC, 0x28, 0xEC, 0x20, 0xEC, 0x0F, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x05, 0x28, 0xEC, 0x82, 0x20, 0xEC, 0x28, 0xEC, 0x29, 0x0C, 0x04, 0x28, 0xEC, 0x82, 0x20, 0xEC, 0x29, 0x0C, 0x28, 0xEC, + 0x02, 0x29, 0x0C, 0x02, 0x28, 0xEC, 0x80, 0x20, 0xEC, 0x02, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x81, 0x20, 0xEC, 0x29, 0x0C, 0x05, 0x28, 0xEC, 0x01, 0x20, 0xEC, 0x81, 0x29, 0x0C, 0x28, 0xEC, 0x02, 0xA1, 0xB1, 0x81, 0x99, 0x91, 0x99, 0xB1, 0x01, 0x99, 0x91, 0x80, 0xA1, 0xD2, 0x03, 0x99, 0xB1, 0x80, 0x99, 0xD1, 0x03, 0x99, 0xB1, 0x80, 0x99, 0xD2, 0x01, 0x99, 0x91, 0x01, 0x99, 0xB1, 0x01, 0x99, 0xB2, 0x82, 0x99, 0x91, 0x99, 0xB1, 0x99, 0x91, 0x02, 0x99, 0xB1, 0x01, 0x99, 0xB2, 0x02, 0x91, 0x91, 0x80, 0x99, 0x91, 0x02, 0x91, 0x91, 0x88, 0x99, 0x91, 0x91, 0x91, 0x99, 0xB1, 0x91, 0x71, 0x99, 0x91, 0x91, 0x91, 0x99, 0xB2, 0x99, 0xB1, 0x99, 0xB2, 0x03, 0x91, 0x91, 0x01, 0x99, 0xB2, 0x01, 0x91, 0x92, 0x82, 0x91, 0x91, 0x99, 0xB2, 0x99, 0x92, 0x02, 0x99, 0xB2, 0x85, 0x91, 0xB2, 0x99, 0xB2, 0x91, 0x91, 0x99, 0xD2, 0x91, 0xB2, 0x99, 0xB2, 0x01, 0x91, 0xB1, 0x01, 0x99, 0xB2, 0x8A, 0x91, 0xB1, 0x99, 0xD2, 0x91, 0xB2, 0x99, 0xD2, 0x91, 0xB2, 0x99, 0xD2, 0x91, 0xB2, 0x99, 0xD2, 0x91, 0x91, 0x91, 0xB2, 0x99, 0xB2, 0x01, 0x91, 0xB2, 0x80, 0x91, 0xB1, 0x01, 0x91, 0xB2, 0x80, 0x91, 0xB1, 0x01, 0x91, 0xB2, 0x01, 0x99, 0xD2, 0x80, 0x91, 0xD2, 0x04, 0x99, 0xD2, 0x01, 0x91, 0xB2, 0x82, 0x99, 0xF2, 0x91, 0xB2, 0x99, 0xD2, 0x01, 0x91, 0xB1, 0x80, 0x91, 0xB2, 0x02, 0x91, 0xD2, 0x87, 0x99, 0xF3, 0x91, 0xD2, 0x9A, 0x13, 0x91, 0xD2, 0x89, 0xD2, 0x91, 0xF2, 0x89, 0xF2, 0x92, 0x13, 0x02, 0x89, 0xF2, 0x80, 0x8A, 0x12, 0x01, 0x8A, 0x13, + 0x81, 0x8A, 0x33, 0x92, 0x53, 0x02, 0x92, 0x94, 0x84, 0x82, 0x53, 0x71, 0xD1, 0x59, 0x4F, 0x48, 0xCC, 0x40, 0x8B, 0x01, 0x38, 0x6B, 0x82, 0x30, 0x6B, 0x30, 0x8B, 0x38, 0xAC, 0x01, 0x30, 0xAC, 0x02, 0x30, 0xCC, 0x03, 0x30, 0xEC, 0x82, 0x28, 0xEC, 0x31, 0x0C, 0x31, 0x0D, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x1D, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x22, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x1C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x7F, 0x29, 0x0D, 0x15, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0D, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0F, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x21, 0x29, 0x0D, 0x02, 0x29, 0x2D, 0x10, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x0F, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x03, 0x29, 0x0D, 0x03, 0x28, 0xED, 0x05, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x08, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x07, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x0B, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x16, 0x29, 0x0D, 0x83, 0x31, 0x0E, 0x29, 0x0D, 0x31, 0x0E, 0x29, 0x0D, 0x02, 0x31, 0x0E, 0x84, 0x31, 0x2E, 0x29, 0x0E, 0x31, 0x2E, 0x29, 0x2E, 0x31, 0x2E, 0x03, 0x31, 0x0E, 0x06, 0x31, 0x2E, 0x03, 0x39, 0x2E, 0x01, 0x39, 0x2F, 0x01, 0x39, 0x2E, 0x80, 0x39, 0x2F, 0x05, 0x39, 0x4F, 0x01, 0x41, 0x4F, 0x01, 0x41, 0x50, 0x80, 0x41, 0x70, 0x02, 0x49, 0x71, 0x81, 0x49, 0x91, 0x49, 0x71, 0x02, 0x51, + 0x91, 0x81, 0x51, 0x92, 0x51, 0x72, 0x01, 0x59, 0x92, 0x87, 0x59, 0x72, 0x59, 0x71, 0x61, 0x92, 0x69, 0x92, 0x69, 0x72, 0x71, 0x72, 0x81, 0x92, 0x91, 0xD4, 0x01, 0xA2, 0x35, 0x81, 0xA2, 0x14, 0xA1, 0xD4, 0x01, 0xA9, 0xD4, 0x83, 0xA9, 0xF4, 0xB1, 0xF4, 0xA9, 0xB3, 0xB1, 0xD3, 0x01, 0xB1, 0xF4, 0x81, 0xA9, 0xD3, 0xA9, 0xB3, 0x02, 0xA9, 0xD3, 0x8A, 0xA9, 0xF3, 0xA2, 0x13, 0xA2, 0x34, 0x92, 0x33, 0x7A, 0x53, 0x41, 0x8F, 0x3A, 0xB2, 0x97, 0x3F, 0x66, 0xFF, 0x3F, 0x1E, 0x2F, 0x5E, 0x02, 0x1F, 0x7E, 0x96, 0x1F, 0x5D, 0x37, 0x5E, 0x47, 0x3E, 0x66, 0xFE, 0x75, 0xDB, 0x42, 0x50, 0x72, 0x72, 0x92, 0x73, 0x9A, 0x33, 0xA1, 0xF3, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF4, 0xA9, 0xD3, 0xA9, 0xF4, 0xA1, 0xF3, 0xA2, 0x14, 0x9A, 0x34, 0x71, 0x50, 0x51, 0x0F, 0x51, 0x30, 0x49, 0x50, 0x49, 0x70, 0x02, 0x41, 0x70, 0x80, 0x41, 0x50, 0x01, 0x39, 0x4F, 0x80, 0x39, 0x2F, 0x01, 0x39, 0x4F, 0x83, 0x31, 0x4F, 0x31, 0x2E, 0x31, 0x4F, 0x31, 0x2E, 0x04, 0x31, 0x0E, 0x01, 0x29, 0x0E, 0x80, 0x31, 0x2E, 0x03, 0x29, 0x0D, 0x80, 0x31, 0x0D, 0x0C, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x44, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x05, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x11, 0x29, 0x0D, 0x82, 0x29, 0x2D, 0x29, 0x0D, 0x21, 0x0D, 0x10, 0x29, 0x0D, 0x80, 0x29, 0x0C, 0x0A, 0x29, 0x0D, 0x05, 0x29, 0x0C, 0x01, 0x29, 0x0D, 0x01, 0x21, 0x0C, 0x83, 0x20, 0xEC, 0x29, 0x0D, 0x21, 0x0C, 0x28, 0xEC, 0x01, 0x29, 0x0D, 0x81, + 0x29, 0x0C, 0x29, 0x0D, 0x05, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x02, 0x29, 0x0D, 0x83, 0x21, 0x0C, 0x20, 0xEC, 0x28, 0xEC, 0x29, 0x0C, 0x03, 0x28, 0xEC, 0x81, 0x20, 0xEC, 0x29, 0x0C, 0x04, 0x20, 0xEC, 0x04, 0x28, 0xEC, 0x80, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x80, 0x28, 0xED, 0x01, 0x20, 0xEC, 0x01, 0x28, 0xEC, 0x07, 0x20, 0xEC, 0x01, 0x29, 0x0C, 0x01, 0x28, 0xEC, 0x02, 0x20, 0xEC, 0x03, 0x28, 0xEC, 0x81, 0x20, 0xEC, 0x29, 0x0C, 0x0A, 0x28, 0xEC, 0x80, 0x20, 0xEC, 0x06, 0x28, 0xEC, 0x02, 0x20, 0xEC, 0x80, 0x28, 0xEC, 0x04, 0x99, 0x91, 0x80, 0x99, 0xB1, 0x01, 0x99, 0x91, 0x8F, 0x99, 0xB1, 0x99, 0x91, 0x99, 0xB1, 0x99, 0xD2, 0x99, 0xB1, 0x91, 0x91, 0x99, 0xB1, 0x91, 0x91, 0x99, 0xB1, 0x91, 0x91, 0x91, 0xB1, 0x99, 0xB2, 0x91, 0x91, 0x99, 0xB1, 0x99, 0x92, 0x91, 0x91, 0x01, 0x99, 0xB2, 0x01, 0x99, 0xB1, 0x85, 0x91, 0x91, 0x91, 0xB1, 0x99, 0xB2, 0x91, 0xB2, 0x91, 0x91, 0x91, 0xB1, 0x01, 0x91, 0x92, 0x01, 0x91, 0x91, 0x83, 0x91, 0xB1, 0x91, 0x91, 0x91, 0xB1, 0x91, 0x91, 0x01, 0x91, 0xB2, 0x83, 0x91, 0x91, 0x91, 0xB1, 0x91, 0xB2, 0x91, 0x91, 0x01, 0x99, 0xB2, 0x01, 0x91, 0x91, 0x82, 0x99, 0xB2, 0x91, 0xB2, 0x99, 0xB2, 0x02, 0x91, 0xB2, 0x02, 0x99, 0xB2, 0x82, 0x91, 0xB2, 0x99, 0xB2, 0x99, 0xD2, 0x04, 0x91, 0xB2, 0x80, 0x99, 0xD2, 0x01, 0x91, 0xB2, 0x80, 0x91, 0xD2, 0x01, 0x91, 0xB2, 0x80, 0x99, 0xD2, 0x01, 0x91, 0xD2, 0x80, 0x99, 0xD2, 0x05, 0x91, 0xB2, 0x82, 0x91, 0x91, 0x99, 0xD2, 0x91, 0xB2, 0x04, 0x99, 0xD2, 0x81, 0x91, 0xD2, + 0x99, 0xF2, 0x01, 0x99, 0xD2, 0x82, 0x91, 0xD2, 0x99, 0xD2, 0x99, 0xF3, 0x02, 0x91, 0xD2, 0x87, 0x91, 0xB2, 0x91, 0xD2, 0x99, 0xD2, 0x91, 0xB2, 0x91, 0xD2, 0x99, 0xD2, 0x91, 0xD2, 0x99, 0xD2, 0x01, 0x99, 0xF2, 0x03, 0x91, 0xF2, 0x80, 0x91, 0xD2, 0x02, 0x91, 0xF2, 0x81, 0x89, 0xF2, 0x92, 0x13, 0x01, 0x89, 0xF2, 0x80, 0x89, 0xD2, 0x01, 0x8A, 0x12, 0x01, 0x8A, 0x53, 0x8A, 0x92, 0x94, 0x92, 0xB4, 0x8A, 0x94, 0x82, 0x73, 0x71, 0xF1, 0x61, 0x90, 0x59, 0x2E, 0x40, 0xAC, 0x40, 0x8C, 0x38, 0x6B, 0x38, 0x8B, 0x01, 0x30, 0x8B, 0x81, 0x30, 0x8C, 0x30, 0xAC, 0x02, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x01, 0x30, 0xED, 0x83, 0x31, 0x0D, 0x28, 0xEC, 0x28, 0xED, 0x31, 0x0D, 0x49, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0A, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x10, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x0D, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x60, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x06, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x1B, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x6B, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x0C, 0x29, 0x0D, 0x01, 0x28, 0xED, 0x80, 0x29, 0x0D, 0x01, 0x28, 0xED, 0x02, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x10, 0x29, 0x0D, 0x01, 0x28, 0xED, 0x03, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x80, 0x28, 0xED, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x01, + 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x04, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x0D, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x31, 0x0E, 0x01, 0x29, 0x0E, 0x01, 0x31, 0x0E, 0x01, 0x29, 0x0E, 0x01, 0x31, 0x0E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x31, 0x2E, 0x03, 0x31, 0x0E, 0x80, 0x31, 0x2E, 0x01, 0x31, 0x0E, 0x02, 0x31, 0x2E, 0x85, 0x31, 0x0E, 0x31, 0x2E, 0x39, 0x2F, 0x31, 0x2E, 0x31, 0x2F, 0x39, 0x2F, 0x01, 0x31, 0x2F, 0x02, 0x39, 0x2F, 0x81, 0x39, 0x4F, 0x39, 0x2F, 0x01, 0x39, 0x4F, 0x81, 0x39, 0x2F, 0x41, 0x4F, 0x02, 0x41, 0x50, 0x01, 0x41, 0x70, 0x01, 0x49, 0x71, 0x83, 0x49, 0x91, 0x49, 0x71, 0x49, 0x91, 0x51, 0x91, 0x04, 0x51, 0x92, 0x01, 0x59, 0x72, 0x81, 0x59, 0x92, 0x61, 0x72, 0x01, 0x69, 0x92, 0x8A, 0x71, 0x72, 0x71, 0x52, 0x89, 0xB3, 0x91, 0xD3, 0xA2, 0x55, 0x9A, 0x14, 0xA2, 0x15, 0xA9, 0xF5, 0xA1, 0xB3, 0xA9, 0xD4, 0xB1, 0xD4, 0x02, 0xB1, 0xF4, 0x81, 0xA9, 0xD3, 0xB1, 0xF3, 0x02, 0xA9, 0xD3, 0x8B, 0xAA, 0x13, 0xA9, 0xF3, 0xA2, 0x13, 0x9A, 0x13, 0x8A, 0x33, 0x72, 0x33, 0x31, 0x4E, 0x5C, 0x16, 0x97, 0x7F, 0x4E, 0xBE, 0x37, 0x1E, 0x2F, 0x5E, 0x02, 0x27, 0x7E, 0x89, 0x37, 0x5E, 0x47, 0x3D, 0x4E, 0xBC, 0x76, 0x5C, 0x42, 0xD1, 0x62, 0x72, 0x8A, 0x94, 0x9A, 0x33, 0xA1, 0xF3, 0xA9, 0xD3, 0x03, 0xA9, 0xF4, 0x85, 0xAA, 0x14, 0xA2, 0x14, 0x9A, 0x14, 0x81, 0xD2, 0x59, 0x0F, 0x51, 0x50, 0x01, 0x49, 0x50, 0x01, 0x41, 0x50, 0x80, 0x41, 0x70, 0x02, 0x39, 0x4F, 0x80, 0x39, 0x2F, 0x01, 0x39, 0x4F, 0x81, 0x31, 0x2F, + 0x31, 0x4F, 0x01, 0x31, 0x2E, 0x80, 0x31, 0x0E, 0x03, 0x31, 0x2E, 0x05, 0x29, 0x0E, 0x81, 0x28, 0xED, 0x29, 0x0E, 0x43, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x28, 0xED, 0x38, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x29, 0x2E, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x06, 0x29, 0x0D, 0x01, 0x29, 0x0C, 0x82, 0x21, 0x0C, 0x20, 0xEC, 0x29, 0x0D, 0x01, 0x21, 0x0D, 0x80, 0x29, 0x0D, 0x01, 0x21, 0x0D, 0x81, 0x29, 0x0D, 0x21, 0x0D, 0x02, 0x29, 0x0D, 0x01, 0x20, 0xED, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xEC, 0x02, 0x28, 0xED, 0x02, 0x29, 0x0D, 0x80, 0x20, 0xED, 0x01, 0x21, 0x0D, 0x83, 0x20, 0xED, 0x28, 0xED, 0x28, 0xEC, 0x29, 0x0D, 0x01, 0x20, 0xEC, 0x80, 0x29, 0x0D, 0x01, 0x20, 0xEC, 0x82, 0x21, 0x0C, 0x20, 0xEC, 0x20, 0xED, 0x03, 0x20, 0xEC, 0x05, 0x20, 0xED, 0x80, 0x20, 0xEC, 0x02, 0x20, 0xED, 0x01, 0x20, 0xEC, 0x01, 0x20, 0xED, 0x05, 0x20, 0xEC, 0x81, 0x28, 0xEC, 0x20, 0xEC, 0x01, 0x21, 0x0C, 0x80, 0x20, 0xEC, 0x01, 0x28, 0xEC, 0x81, 0x20, 0xEC, 0x28, 0xEC, 0x02, 0x20, 0xEC, 0x02, 0x28, 0xEC, 0x80, 0x20, 0xEC, 0x01, 0x28, 0xED, 0x85, 0x20, 0xEC, 0x28, 0xEC, 0x20, 0xCC, 0x20, 0xEC, 0x28, 0xEC, 0x20, 0xEC, 0x01, 0x28, 0xEC, 0x83, 0x20, 0xEC, 0x28, 0xEC, 0x20, 0xEC, 0x29, 0x0C, 0x03, 0x20, 0xEC, 0x02, 0x91, 0x70, 0x01, 0x91, 0x50, 0x82, 0x91, 0x70, 0x91, 0x91, 0x91, 0x71, 0x01, 0x91, 0x91, 0x81, 0x91, 0x70, 0x91, 0x71, 0x03, 0x91, 0x91, 0x01, 0x89, 0x70, 0x01, 0x89, 0x71, 0x01, + 0x91, 0x91, 0x80, 0x91, 0x92, 0x06, 0x91, 0x91, 0x01, 0x91, 0x92, 0x01, 0x91, 0x91, 0x83, 0x91, 0xB2, 0x91, 0x91, 0x91, 0xB2, 0x91, 0xB1, 0x03, 0x91, 0x91, 0x81, 0x91, 0x92, 0x91, 0x91, 0x04, 0x91, 0xB2, 0x80, 0x91, 0x91, 0x04, 0x91, 0xB2, 0x81, 0x91, 0x92, 0x99, 0xD2, 0x01, 0x91, 0xB2, 0x01, 0x99, 0xB2, 0x06, 0x91, 0xB2, 0x80, 0x91, 0xD2, 0x01, 0x91, 0xB2, 0x80, 0x99, 0xD2, 0x01, 0x91, 0xB2, 0x80, 0x91, 0xD2, 0x06, 0x91, 0xB2, 0x89, 0x99, 0xD2, 0x91, 0xB2, 0x99, 0xF3, 0x99, 0xD2, 0x91, 0xD2, 0x99, 0xD3, 0x91, 0x91, 0x91, 0xB2, 0x89, 0x91, 0x91, 0x91, 0x01, 0x91, 0xB2, 0x89, 0x91, 0xD2, 0x91, 0xB2, 0x89, 0x71, 0x89, 0x91, 0x91, 0xD2, 0x91, 0xB2, 0x91, 0xD2, 0x99, 0xF3, 0x91, 0xB2, 0x99, 0xD2, 0x01, 0x91, 0xB2, 0x87, 0x99, 0xF3, 0x91, 0xD2, 0x99, 0xF2, 0x99, 0xF3, 0x91, 0x91, 0x91, 0xB2, 0x91, 0xD2, 0x91, 0xF2, 0x01, 0x91, 0xD2, 0x91, 0x91, 0xF3, 0x91, 0xD2, 0x9A, 0x13, 0x91, 0xF2, 0x91, 0xF3, 0x92, 0x13, 0x89, 0xF2, 0x89, 0xD2, 0x91, 0xF2, 0x92, 0x12, 0x89, 0xF2, 0x89, 0xD2, 0x89, 0xF2, 0x8A, 0x12, 0x8A, 0x13, 0x89, 0xF2, 0x8A, 0x13, 0x8A, 0x33, 0x01, 0x92, 0x74, 0x87, 0x92, 0x94, 0x8A, 0x74, 0x82, 0x13, 0x71, 0xF2, 0x61, 0x4F, 0x51, 0x0E, 0x48, 0xCD, 0x40, 0xAD, 0x01, 0x30, 0x6B, 0x01, 0x30, 0x8C, 0x02, 0x30, 0xAC, 0x01, 0x30, 0xCC, 0x80, 0x30, 0xEC, 0x01, 0x30, 0xED, 0x01, 0x31, 0x0D, 0x82, 0x28, 0xEC, 0x28, 0xED, 0x29, 0x2D, 0x30, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x29, 0x0D, 0x01, 0x29, 0x2D, 0x13, 0x29, 0x0D, 0x80, + 0x29, 0x0E, 0x0D, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x35, 0x29, 0x0D, 0x01, 0x28, 0xED, 0x09, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x02, 0x29, 0x0D, 0x82, 0x29, 0x0E, 0x29, 0x0D, 0x28, 0xED, 0x11, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x0F, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x06, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x01, 0x28, 0xED, 0x81, 0x29, 0x0D, 0x28, 0xED, 0x03, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x03, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x12, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x12, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x03, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x04, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x03, 0x29, 0x0D, 0x82, 0x29, 0x0E, 0x29, 0x0D, 0x28, 0xED, 0x0D, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x09, 0x29, 0x0D, 0x80, 0x29, 0x2E, 0x07, 0x29, 0x0D, 0x80, 0x29, 0x2D, 0x02, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x0F, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x05, 0x29, 0x0D, 0x81, 0x28, 0xED, 0x29, 0x0D, 0x05, 0x29, 0x0E, 0x03, 0x29, 0x0D, 0x83, 0x29, 0x0E, 0x29, 0x0D, 0x28, 0xED, 0x29, 0x0D, 0x01, 0x28, 0xED, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x01, 0x28, 0xED, 0x80, 0x29, 0x0D, 0x02, 0x28, 0xED, 0x01, 0x28, 0xEE, 0x80, 0x29, 0x0E, 0x02, 0x28, 0xED, 0x80, 0x28, 0xEE, 0x02, 0x29, 0x0E, 0x01, 0x28, 0xED, 0x01, 0x28, 0xEE, 0x09, 0x29, + 0x0E, 0x03, 0x28, 0xEE, 0x01, 0x29, 0x0E, 0x81, 0x28, 0xED, 0x29, 0x0E, 0x01, 0x28, 0xEE, 0x80, 0x28, 0xED, 0x04, 0x29, 0x0E, 0x01, 0x28, 0xEE, 0x80, 0x28, 0xED, 0x02, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x82, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x81, 0x31, 0x2E, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x81, 0x31, 0x0E, 0x28, 0xEE, 0x01, 0x29, 0x0E, 0x82, 0x31, 0x0E, 0x29, 0x0E, 0x28, 0xEE, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x31, 0x2E, 0x04, 0x31, 0x0E, 0x80, 0x31, 0x0F, 0x02, 0x31, 0x2F, 0x01, 0x31, 0x0F, 0x01, 0x31, 0x2F, 0x80, 0x31, 0x4F, 0x03, 0x31, 0x2F, 0x01, 0x39, 0x2F, 0x80, 0x39, 0x50, 0x01, 0x39, 0x30, 0x81, 0x41, 0x50, 0x39, 0x30, 0x03, 0x41, 0x50, 0x81, 0x39, 0x30, 0x41, 0x50, 0x01, 0x41, 0x71, 0x85, 0x49, 0x91, 0x49, 0x92, 0x49, 0x72, 0x49, 0x71, 0x49, 0x72, 0x49, 0x71, 0x02, 0x51, 0x72, 0x80, 0x51, 0x92, 0x01, 0x59, 0x92, 0x01, 0x61, 0x92, 0x01, 0x69, 0x92, 0x87, 0x69, 0x52, 0x71, 0x72, 0x81, 0xB3, 0x92, 0x15, 0x9A, 0x15, 0xA1, 0xF4, 0xAA, 0x15, 0xA1, 0xD4, 0x03, 0xA9, 0xD4, 0x80, 0xA9, 0xD3, 0x01, 0xB1, 0xF4, 0x8E, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xD2, 0xA9, 0xF3, 0xAA, 0x13, 0xA2, 0x13, 0x9A, 0x34, 0x8A, 0x54, 0x62, 0x12, 0x29, 0x6E, 0x6D, 0x1B, 0x7F, 0x5F, 0x4F, 0x1F, 0x3F, 0x3E, 0x2F, 0x5E, 0x01, 0x27, 0x3D, 0x8B, 0x37, 0x5D, 0x3F, 0x3D, 0x4E, 0xDC, 0x6E, 0x9D, 0x4B, 0xB4, 0x52, 0x71, 0x7A, 0x73, 0x92, 0x53, 0xA2, 0x34, 0xA9, + 0xD3, 0xA9, 0xF4, 0xA9, 0xD3, 0x01, 0xA9, 0xD4, 0x87, 0xA1, 0xD3, 0xAA, 0x14, 0x9A, 0x14, 0x92, 0x14, 0x59, 0x0F, 0x51, 0x30, 0x51, 0x50, 0x49, 0x50, 0x02, 0x41, 0x50, 0x02, 0x39, 0x50, 0x81, 0x39, 0x4F, 0x39, 0x50, 0x06, 0x31, 0x2F, 0x80, 0x31, 0x0E, 0x01, 0x31, 0x2E, 0x82, 0x29, 0x2E, 0x29, 0x0E, 0x29, 0x2E, 0x0A, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x81, 0x29, 0x2E, 0x29, 0x0E, 0x03, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x83, 0x28, 0xED, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x07, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x28, 0xED, 0x01, 0x29, 0x0E, 0x0D, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x04, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x80, 0x28, 0xED, 0x04, 0x29, 0x0E, 0x81, 0x21, 0x0D, 0x29, 0x0E, 0x08, 0x21, 0x0D, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x81, 0x20, 0xED, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x21, 0x0D, 0x82, 0x29, 0x0E, 0x21, 0x0D, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x02, 0x21, 0x0D, 0x83, 0x29, 0x0E, 0x29, 0x0D, 0x21, 0x0D, 0x28, 0xED, 0x01, 0x29, 0x0E, 0x80, 0x21, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x05, 0x29, 0x0E, 0x01, 0x21, 0x0D, 0x01, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x06, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0D, 0x02, 0x21, 0x0D, 0x80, 0x20, 0xED, 0x01, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x80, 0x20, 0xED, 0x02, 0x21, 0x0D, 0x80, 0x20, 0xED, 0x01, 0x21, 0x0D, 0x80, 0x20, 0xED, 0x08, 0x21, 0x0D, + 0x01, 0x20, 0xED, 0x81, 0x29, 0x0D, 0x20, 0xED, 0x01, 0x29, 0x0D, 0x04, 0x28, 0xED, 0x01, 0x20, 0xED, 0x80, 0x29, 0x0D, 0x02, 0x21, 0x0D, 0x01, 0x20, 0xED, 0x81, 0x21, 0x0D, 0x20, 0xED, 0x01, 0x21, 0x0D, 0x81, 0x20, 0xED, 0x21, 0x0D, 0x01, 0x20, 0xED, 0x01, 0x21, 0x0D, 0x80, 0x29, 0x0D, 0x01, 0x21, 0x0D, 0x80, 0x29, 0x0D, 0x05, 0x20, 0xED, 0x80, 0x21, 0x0D, 0x01, 0x20, 0xED, 0x01, 0x21, 0x0D, 0x05, 0x20, 0xED, 0x80, 0x21, 0x0D, 0x02, 0x20, 0xEC, 0x80, 0x20, 0xED, 0x05, 0x20, 0xEC, 0x01, 0x21, 0x0D, 0x01, 0x20, 0xED, 0x81, 0x20, 0xEC, 0x20, 0xED, 0x02, 0x28, 0xED, 0x80, 0x29, 0x0D, 0x01, 0x20, 0xED, 0x81, 0x20, 0xCC, 0x28, 0xED, 0x03, 0x29, 0x0D, 0x81, 0x20, 0xEC, 0x28, 0xEC, 0x02, 0x20, 0xEC, 0x8C, 0x21, 0x0C, 0x20, 0xEC, 0x21, 0x0C, 0x89, 0x71, 0x89, 0x70, 0x89, 0x71, 0x89, 0x51, 0x89, 0x50, 0x89, 0x71, 0x89, 0x50, 0x89, 0x71, 0x89, 0x91, 0x89, 0x71, 0x01, 0x89, 0x91, 0x04, 0x89, 0x71, 0x88, 0x89, 0x91, 0x89, 0x71, 0x89, 0x92, 0x89, 0x71, 0x89, 0x91, 0x89, 0x92, 0x91, 0x92, 0x89, 0x92, 0x89, 0xB2, 0x02, 0x89, 0x92, 0x80, 0x91, 0xB2, 0x02, 0x89, 0x92, 0x81, 0x91, 0xB2, 0x89, 0x92, 0x01, 0x91, 0xB2, 0x88, 0x89, 0x91, 0x89, 0xB2, 0x91, 0xB2, 0x89, 0x92, 0x91, 0xB2, 0x91, 0x92, 0x91, 0xB2, 0x89, 0x92, 0x89, 0xB2, 0x01, 0x91, 0xB2, 0x80, 0x89, 0xB2, 0x05, 0x91, 0xB2, 0x80, 0x91, 0xD3, 0x04, 0x91, 0xB2, 0x82, 0x91, 0xD2, 0x91, 0xB2, 0x91, 0xD2, 0x01, 0x91, 0xB2, 0x01, 0x91, 0xD2, 0x80, 0x91, 0xB2, 0x01, 0x91, 0xD2, 0x84, + 0x91, 0xB2, 0x91, 0xD2, 0x91, 0xD3, 0x91, 0xB2, 0x91, 0xD3, 0x01, 0x91, 0xD2, 0x84, 0x91, 0xB2, 0x91, 0xD3, 0x91, 0xB2, 0x91, 0xD3, 0x91, 0xB2, 0x04, 0x91, 0xD3, 0x01, 0x91, 0xD2, 0x84, 0x89, 0xB2, 0x91, 0xB2, 0x89, 0x92, 0x91, 0xD2, 0x91, 0xB2, 0x01, 0x89, 0xB2, 0x85, 0x91, 0xD2, 0x89, 0xB2, 0x91, 0xF3, 0x89, 0xB2, 0x91, 0xD2, 0x91, 0xF3, 0x01, 0x91, 0xD2, 0x80, 0x99, 0xF3, 0x01, 0x91, 0xD3, 0x85, 0x91, 0xF3, 0x91, 0xD2, 0x91, 0xB2, 0x91, 0xD3, 0x91, 0xD2, 0x91, 0xF3, 0x01, 0x91, 0xD2, 0x80, 0x91, 0xD3, 0x03, 0x91, 0xF3, 0x80, 0x89, 0xF3, 0x01, 0x92, 0x13, 0x08, 0x89, 0xF3, 0x01, 0x8A, 0x13, 0x80, 0x81, 0xF3, 0x01, 0x8A, 0x33, 0x02, 0x8A, 0x54, 0x01, 0x8A, 0x95, 0x86, 0x82, 0x74, 0x69, 0xD1, 0x59, 0x90, 0x51, 0x4F, 0x49, 0x0E, 0x40, 0xED, 0x30, 0x8C, 0x02, 0x30, 0xAC, 0x82, 0x30, 0xCC, 0x28, 0xCC, 0x28, 0xCD, 0x02, 0x28, 0xED, 0x81, 0x29, 0x0D, 0x28, 0xED, 0x06, 0x29, 0x0D, 0x80, 0x21, 0x0D, 0x03, 0x29, 0x0D, 0x09, 0x29, 0x0E, 0x80, 0x28, 0xED, 0x0A, 0x29, 0x0E, 0x80, 0x21, 0x0D, 0x07, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x21, 0x0D, 0x04, 0x29, 0x0E, 0x80, 0x21, 0x0D, 0x01, 0x29, 0x0E, 0x80, 0x21, 0x0D, 0x0A, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x0E, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x15, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x16, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x0A, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x02, 0x29, + 0x0E, 0x81, 0x29, 0x0D, 0x28, 0xED, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x06, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x09, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x11, 0x29, 0x0E, 0x83, 0x29, 0x0D, 0x29, 0x0E, 0x29, 0x0D, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x04, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x82, 0x28, 0xED, 0x29, 0x0E, 0x28, 0xED, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x05, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x06, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x82, 0x29, 0x0D, 0x29, 0x0E, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x80, 0x29, 0x0E, 0x02, 0x29, 0x0D, 0x80, 0x28, 0xED, 0x02, 0x29, 0x0D, 0x02, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x28, 0xED, 0x06, 0x29, 0x0E, 0x81, 0x29, 0x0D, 0x28, 0xED, 0x01, 0x29, 0x0D, 0x03, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x81, 0x29, 0x0E, 0x29, 0x0D, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x82, 0x28, 0xED, 0x29, 0x0D, 0x28, 0xED, 0x03, 0x29, 0x0D, 0x80, 0x28, 0xEE, 0x06, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x0E, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x0D, 0x01, 0x29, 0x0E, 0x01, 0x29, 0x0D, 0x1C, 0x29, 0x0E, 0x02, 0x28, 0xEE, 0x01, 0x29, 0x0E, 0x80, 0x28, 0xEE, 0x02, 0x29, 0x0E, 0x03, 0x28, 0xEE, 0x01, 0x29, 0x0E, 0x01, 0x28, 0xEE, 0x82, 0x29, 0x0E, 0x28, 0xEE, 0x29, 0x0E, 0x01, 0x28, 0xEE, 0x0E, + 0x29, 0x0E, 0x82, 0x28, 0xEE, 0x29, 0x0E, 0x28, 0xEE, 0x01, 0x29, 0x0E, 0x81, 0x28, 0xEE, 0x29, 0x0E, 0x02, 0x28, 0xEE, 0x80, 0x29, 0x0E, 0x01, 0x28, 0xEE, 0x01, 0x29, 0x0E, 0x82, 0x28, 0xEE, 0x29, 0x0E, 0x28, 0xEE, 0x0E, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x01, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x02, 0x29, 0x0E, 0x80, 0x28, 0xEE, 0x06, 0x29, 0x0E, 0x84, 0x31, 0x2F, 0x29, 0x0E, 0x29, 0x2E, 0x31, 0x2E, 0x29, 0x0E, 0x01, 0x31, 0x2E, 0x80, 0x31, 0x0E, 0x03, 0x31, 0x0F, 0x01, 0x31, 0x2F, 0x80, 0x31, 0x0F, 0x02, 0x31, 0x2F, 0x86, 0x31, 0x30, 0x31, 0x2F, 0x31, 0x50, 0x31, 0x2F, 0x31, 0x30, 0x39, 0x30, 0x39, 0x50, 0x01, 0x39, 0x30, 0x81, 0x39, 0x50, 0x39, 0x30, 0x02, 0x39, 0x50, 0x81, 0x41, 0x51, 0x39, 0x51, 0x02, 0x41, 0x51, 0x80, 0x41, 0x50, 0x01, 0x41, 0x71, 0x02, 0x49, 0x72, 0x80, 0x49, 0x92, 0x01, 0x49, 0x72, 0x01, 0x51, 0x92, 0x86, 0x51, 0xB3, 0x51, 0x92, 0x51, 0x72, 0x59, 0x92, 0x59, 0x93, 0x59, 0x92, 0x61, 0x72, 0x01, 0x69, 0x93, 0x89, 0x71, 0x72, 0x79, 0x72, 0x89, 0xD4, 0x99, 0xF4, 0xA2, 0x35, 0xA1, 0xF4, 0xA9, 0xF5, 0xA9, 0xF4, 0xA1, 0xB4, 0xA9, 0xD4, 0x01, 0xB1, 0xF4, 0x81, 0xA9, 0xD3, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x89, 0xAA, 0x14, 0x9A, 0x13, 0x92, 0x33, 0x82, 0x33, 0x51, 0xD1, 0x21, 0xAF, 0x86, 0x5F, 0x77, 0x1F, 0x4F, 0x1E, 0x37, 0x3E, 0x01, 0x2F, 0x3D, 0x8B, 0x2F, 0x1D, 0x3F, 0x3D, 0x4F, 0x1D, 0x6E, 0xDD, 0x64, 0xD8, 0x42, 0x70, 0x7A, 0xB3, 0x8A, 0x33, 0x9A, 0x13, + 0xAA, 0x14, 0xA1, 0xB3, 0xA9, 0xD3, 0x01, 0xB1, 0xF4, 0x87, 0xA9, 0xF4, 0xA1, 0xF4, 0x99, 0xF4, 0x92, 0x34, 0x71, 0xB2, 0x59, 0x51, 0x51, 0x71, 0x49, 0x71, 0x03, 0x41, 0x70, 0x01, 0x39, 0x70, 0x01, 0x39, 0x50, 0x81, 0x31, 0x50, 0x39, 0x50, 0x01, 0x31, 0x2F, 0x80, 0x31, 0x4F, 0x01, 0x31, 0x2F, 0x80, 0x31, 0x0F, 0x01, 0x31, 0x2F, 0x02, 0x29, 0x2E, 0x01, 0x29, 0x2F, 0x80, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x0A, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x12, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x05, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x04, 0x29, 0x0E, 0x82, 0x21, 0x0E, 0x29, 0x0E, 0x21, 0x0E, 0x04, 0x29, 0x0E, 0x80, 0x29, 0x2E, 0x05, 0x29, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x11, 0x21, 0x0E, 0x81, 0x29, 0x0E, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x81, 0x21, 0x0E, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x80, 0x29, 0x0E, 0x09, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x03, 0x21, 0x0E, 0x80, 0x29, 0x0E, 0x06, 0x21, 0x0E, 0x80, 0x21, 0x2E, 0x04, 0x21, 0x0E, 0x83, 0x29, 0x0E, 0x21, 0x0E, 0x29, 0x0E, 0x21, 0x0E, 0x02, 0x29, 0x0E, 0x02, 0x21, 0x0E, 0x82, 0x21, 0x0D, 0x21, 0x0E, 0x20, 0xEE, 0x09, 0x21, 0x0E, 0x04, 0x21, 0x0D, 0x0A, 0x21, 0x0E, 0x86, 0x20, 0xED, 0x21, 0x0E, 0x28, 0xEE, 0x21, 0x0E, 0x20, 0xEE, 0x28, 0xEE, 0x20, 0xEE, 0x01, 0x21, 0x0E, 0x80, 0x20, 0xEE, 0x08, 0x21, 0x0E, 0x02, 0x21, 0x0D, 0x03, 0x21, 0x0E, 0x80, 0x21, 0x0D, 0x01, 0x21, 0x0E, 0x80, 0x21, 0x0D, 0x01, 0x20, 0xED, 0x01, 0x21, + 0x0D, 0x81, 0x20, 0xED, 0x21, 0x0D, 0x01, 0x20, 0xED, 0x80, 0x21, 0x0D, 0x01, 0x20, 0xED, 0x80, 0x21, 0x0D, 0x04, 0x20, 0xED, 0x80, 0x21, 0x0D, 0x03, 0x20, 0xED, 0x01, 0x21, 0x0D, 0x81, 0x20, 0xED, 0x21, 0x0D, 0x02, 0x20, 0xED, 0x80, 0x21, 0x0D, 0x09, 0x20, 0xED, 0x80, 0x21, 0x0D, 0x01, 0x20, 0xED, 0x81, 0x21, 0x0D, 0x20, 0xED, 0x01, 0x21, 0x0D, 0x81, 0x20, 0xED, 0x21, 0x0D, 0x01, 0x20, 0xED, 0x81, 0x21, 0x0D, 0x20, 0xED, 0x05, 0x81, 0x71, 0x81, 0x81, 0x51, 0x89, 0x72, 0x01, 0x89, 0x92, 0x80, 0x81, 0x91, 0x01, 0x81, 0x71, 0x81, 0x81, 0x91, 0x89, 0x92, 0x03, 0x81, 0x92, 0x80, 0x89, 0x92, 0x01, 0x81, 0x92, 0x0B, 0x89, 0xB2, 0x80, 0x89, 0x92, 0x04, 0x89, 0xB2, 0x82, 0x89, 0xD3, 0x89, 0xB2, 0x89, 0xB3, 0x01, 0x89, 0xB2, 0x01, 0x89, 0xD3, 0x04, 0x89, 0xB3, 0x80, 0x89, 0xD3, 0x02, 0x89, 0xB3, 0x81, 0x89, 0xD3, 0x91, 0xD3, 0x01, 0x89, 0xB3, 0x01, 0x91, 0xD3, 0x02, 0x89, 0xD3, 0x01, 0x91, 0xD3, 0x01, 0x89, 0xD3, 0x83, 0x91, 0xF3, 0x91, 0xD3, 0x89, 0xD3, 0x89, 0xD2, 0x04, 0x89, 0xD3, 0x80, 0x89, 0xF3, 0x03, 0x89, 0xD3, 0x80, 0x91, 0xF3, 0x01, 0x89, 0xD3, 0x80, 0x91, 0xF3, 0x01, 0x91, 0xD3, 0x84, 0x89, 0xD3, 0x91, 0xD3, 0x89, 0xD3, 0x89, 0xB2, 0x89, 0xD3, 0x01, 0x91, 0xF3, 0x83, 0x89, 0xF3, 0x89, 0xD2, 0x89, 0xB2, 0x89, 0xD3, 0x02, 0x89, 0xF3, 0x04, 0x89, 0xD3, 0x82, 0x91, 0xF3, 0x89, 0xD3, 0x91, 0xF3, 0x01, 0x89, 0xD3, 0x80, 0x92, 0x13, 0x03, 0x91, 0xF3, 0x81, 0x89, 0xD3, 0x92, 0x13, 0x02, 0x89, 0xF3, 0x81, 0x92, 0x14, 0x89, + 0xF3, 0x02, 0x8A, 0x14, 0x81, 0x8A, 0x13, 0x89, 0xF3, 0x01, 0x8A, 0x14, 0x02, 0x81, 0xF3, 0x02, 0x82, 0x13, 0x02, 0x82, 0x14, 0x8B, 0x82, 0x34, 0x7A, 0x13, 0x7A, 0x34, 0x82, 0x75, 0x7A, 0x54, 0x72, 0x34, 0x72, 0x13, 0x69, 0xF2, 0x59, 0xB1, 0x49, 0x4F, 0x41, 0x0E, 0x30, 0xCD, 0x03, 0x28, 0xAC, 0x82, 0x28, 0xAD, 0x28, 0xCD, 0x20, 0xCD, 0x01, 0x28, 0xED, 0x81, 0x20, 0xED, 0x21, 0x0E, 0x01, 0x20, 0xED, 0x81, 0x21, 0x0E, 0x20, 0xED, 0x0D, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x18, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x10, 0x21, 0x0E, 0x80, 0x20, 0xEE, 0x01, 0x21, 0x0E, 0x81, 0x20, 0xEE, 0x21, 0x0E, 0x02, 0x20, 0xEE, 0x80, 0x29, 0x0E, 0x02, 0x20, 0xEE, 0x81, 0x21, 0x0E, 0x20, 0xEE, 0x04, 0x21, 0x0E, 0x80, 0x20, 0xEE, 0x04, 0x21, 0x0E, 0x80, 0x20, 0xEE, 0x03, 0x21, 0x0E, 0x80, 0x20, 0xEE, 0x08, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x07, 0x21, 0x0E, 0x80, 0x29, 0x0E, 0x07, 0x21, 0x0E, 0x80, 0x20, 0xEE, 0x0A, 0x21, 0x0E, 0x81, 0x20, 0xEE, 0x29, 0x0E, 0x02, 0x20, 0xEE, 0x80, 0x21, 0x0E, 0x03, 0x20, 0xEE, 0x01, 0x29, 0x0E, 0x02, 0x20, 0xEE, 0x82, 0x21, 0x0E, 0x20, 0xEE, 0x21, 0x0E, 0x02, 0x20, 0xEE, 0x80, 0x21, 0x0E, 0x02, 0x20, 0xEE, 0x81, 0x21, 0x0E, 0x29, 0x0E, 0x03, 0x21, 0x0E, 0x80, 0x29, 0x0E, 0x05, 0x21, 0x0E, 0x02, 0x20, 0xEE, 0x80, 0x21, 0x0E, 0x02, 0x20, 0xEE, 0x83, 0x21, 0x0E, 0x20, 0xEE, 0x21, 0x0E, 0x20, 0xEE, 0x02, 0x21, 0x0E, 0x80, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x80, 0x20, 0xEE, 0x03, 0x29, 0x0E, 0x01, 0x21, 0x0E, 0x81, 0x20, 0xEE, + 0x21, 0x0E, 0x02, 0x20, 0xEE, 0x02, 0x29, 0x0E, 0x05, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x80, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x80, 0x29, 0x0E, 0x04, 0x21, 0x0E, 0x05, 0x20, 0xEE, 0x01, 0x21, 0x0E, 0x03, 0x29, 0x0E, 0x02, 0x21, 0x0E, 0x80, 0x29, 0x0E, 0x05, 0x20, 0xEE, 0x02, 0x29, 0x0E, 0x80, 0x20, 0xEE, 0x01, 0x29, 0x0E, 0x01, 0x20, 0xEE, 0x01, 0x29, 0x0E, 0x04, 0x21, 0x0E, 0x80, 0x20, 0xEE, 0x01, 0x21, 0x0E, 0x05, 0x20, 0xEE, 0x80, 0x29, 0x0E, 0x02, 0x20, 0xEE, 0x80, 0x29, 0x0E, 0x02, 0x20, 0xEE, 0x80, 0x29, 0x0E, 0x02, 0x20, 0xEE, 0x80, 0x29, 0x0E, 0x02, 0x20, 0xEE, 0x82, 0x29, 0x0E, 0x20, 0xEE, 0x29, 0x0E, 0x03, 0x20, 0xEE, 0x01, 0x29, 0x0E, 0x86, 0x20, 0xEE, 0x29, 0x0E, 0x28, 0xEE, 0x29, 0x0E, 0x20, 0xEE, 0x29, 0x0E, 0x21, 0x0E, 0x01, 0x29, 0x0E, 0x01, 0x20, 0xEE, 0x02, 0x29, 0x0E, 0x80, 0x20, 0xEE, 0x02, 0x29, 0x0E, 0x01, 0x20, 0xEE, 0x80, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x80, 0x29, 0x0E, 0x04, 0x20, 0xEE, 0x01, 0x28, 0xEE, 0x05, 0x20, 0xEE, 0x80, 0x29, 0x0E, 0x02, 0x20, 0xEE, 0x80, 0x21, 0x0E, 0x04, 0x20, 0xEE, 0x01, 0x29, 0x0E, 0x01, 0x20, 0xEE, 0x01, 0x29, 0x0E, 0x01, 0x28, 0xEE, 0x81, 0x21, 0x0E, 0x20, 0xEE, 0x02, 0x28, 0xEE, 0x82, 0x20, 0xEE, 0x29, 0x0E, 0x20, 0xEE, 0x03, 0x29, 0x0E, 0x82, 0x20, 0xEE, 0x29, 0x0E, 0x29, 0x0F, 0x02, 0x29, 0x0E, 0x01, 0x29, 0x0F, 0x80, 0x28, 0xEE, 0x0A, 0x29, 0x0F, 0x80, 0x29, 0x0E, 0x01, 0x28, 0xEE, 0x81, 0x29, 0x0F, 0x29, 0x0E, 0x02, 0x29, 0x0F, 0x80, 0x28, 0xEF, 0x01, 0x29, 0x0F, + 0x01, 0x29, 0x0E, 0x81, 0x29, 0x0F, 0x28, 0xEF, 0x02, 0x29, 0x0F, 0x02, 0x28, 0xEF, 0x14, 0x29, 0x0F, 0x80, 0x28, 0xEF, 0x04, 0x29, 0x0F, 0x80, 0x20, 0xEE, 0x0D, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x02, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x29, 0x0F, 0x01, 0x29, 0x2F, 0x81, 0x29, 0x0F, 0x29, 0x2F, 0x07, 0x29, 0x0F, 0x81, 0x29, 0x2F, 0x29, 0x0F, 0x04, 0x29, 0x2F, 0x82, 0x31, 0x2F, 0x29, 0x0F, 0x29, 0x2F, 0x03, 0x31, 0x2F, 0x06, 0x31, 0x30, 0x80, 0x31, 0x50, 0x04, 0x31, 0x30, 0x82, 0x31, 0x31, 0x31, 0x30, 0x39, 0x31, 0x08, 0x39, 0x51, 0x80, 0x39, 0x71, 0x01, 0x39, 0x51, 0x80, 0x41, 0x71, 0x01, 0x41, 0x72, 0x80, 0x41, 0x92, 0x03, 0x49, 0x92, 0x82, 0x51, 0xB3, 0x49, 0x93, 0x51, 0x93, 0x02, 0x51, 0xB3, 0x01, 0x59, 0xB3, 0x80, 0x59, 0x93, 0x01, 0x61, 0x93, 0x81, 0x69, 0xB3, 0x79, 0xD4, 0x01, 0x81, 0xD4, 0x89, 0x91, 0xF5, 0x9A, 0x15, 0x99, 0xD4, 0xA1, 0xF5, 0xA9, 0xF4, 0xA9, 0xD4, 0xA1, 0x93, 0xA9, 0xF4, 0xA9, 0xD3, 0xA9, 0xF4, 0x01, 0xA9, 0xD3, 0xA5, 0xA9, 0xB2, 0xA9, 0xD3, 0xA9, 0xF3, 0xA2, 0x14, 0xA2, 0x54, 0x92, 0x74, 0x82, 0x54, 0x49, 0xD1, 0x2A, 0x71, 0x86, 0xBF, 0x5E, 0xFE, 0x46, 0xFD, 0x37, 0x1D, 0x2F, 0x1D, 0x2E, 0xFC, 0x36, 0xFC, 0x3E, 0xBC, 0x5E, 0x9C, 0x6D, 0x9A, 0x42, 0xB1, 0x7A, 0xF4, 0x92, 0x94, 0x99, 0xF3, 0xA1, 0xD3, 0xA9, 0xD3, 0xA9, 0xF4, 0xA1, 0x93, 0xA9, 0xD4, 0xA9, 0xF4, 0xAA, 0x35, 0x99, 0xD4, 0x91, 0xF4, 0x82, 0x14, 0x59, 0x30, 0x51, + 0x50, 0x49, 0x51, 0x41, 0x51, 0x41, 0x71, 0x01, 0x41, 0x91, 0x81, 0x39, 0x91, 0x39, 0x71, 0x06, 0x31, 0x50, 0x01, 0x31, 0x30, 0x80, 0x31, 0x50, 0x07, 0x29, 0x2F, 0x04, 0x29, 0x0F, 0x80, 0x29, 0x2F, 0x03, 0x29, 0x0F, 0x03, 0x21, 0x0F, 0x80, 0x29, 0x0F, 0x09, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x0E, 0x0C, 0x21, 0x0F, 0x80, 0x29, 0x2F, 0x10, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x02, 0x21, 0x0F, 0x01, 0x29, 0x2F, 0x09, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x06, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x05, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x81, 0x21, 0x0F, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x02, 0x21, 0x2F, 0x02, 0x21, 0x0F, 0x80, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x01, 0x21, 0x0F, 0x01, 0x21, 0x2F, 0x0C, 0x21, 0x0F, 0x03, 0x21, 0x0E, 0x07, 0x21, 0x0F, 0x81, 0x21, 0x0E, 0x21, 0x2F, 0x01, 0x21, 0x0E, 0x80, 0x21, 0x2F, 0x04, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x80, 0x21, 0x0E, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x0E, 0x20, 0xEE, 0x03, 0x21, 0x0E, 0x01, 0x20, 0xEE, 0x81, 0x21, 0x0F, 0x20, 0xEF, 0x05, 0x21, 0x0F, 0x80, 0x19, 0x0F, 0x05, 0x21, 0x0F, 0x80, 0x19, 0x0E, 0x01, 0x21, 0x0E, 0x01, 0x19, 0x0E, 0x05, 0x21, 0x0E, 0x01, 0x19, 0x0E, 0x80, 0x21, 0x0E, 0x01, 0x19, 0x0E, 0x80, 0x21, 0x0E, 0x07, 0x19, 0x0E, 0x84, 0x21, 0x0E, 0x19, 0x0E, 0x21, 0x0E, 0x19, 0x0E, 0x21, 0x0E, 0x01, 0x19, 0x0E, 0x01, 0x21, 0x0E, 0x80, 0x18, 0xED, 0x01, + 0x19, 0x0D, 0x01, 0x18, 0xED, 0x01, 0x18, 0xEE, 0x81, 0x21, 0x0E, 0x20, 0xEE, 0x01, 0x21, 0x0E, 0x06, 0x20, 0xEE, 0x01, 0x21, 0x0E, 0x80, 0x20, 0xED, 0x04, 0x21, 0x0D, 0x01, 0x19, 0x0D, 0x84, 0x21, 0x0D, 0x81, 0xB2, 0x81, 0xB3, 0x81, 0xB2, 0x81, 0xB3, 0x02, 0x79, 0x92, 0x81, 0x81, 0x93, 0x81, 0xB2, 0x03, 0x79, 0x92, 0x82, 0x81, 0xB3, 0x79, 0xB2, 0x79, 0xB3, 0x01, 0x79, 0xB2, 0x80, 0x79, 0x92, 0x06, 0x79, 0xB3, 0x01, 0x81, 0xB3, 0x84, 0x79, 0xB3, 0x81, 0xD3, 0x79, 0xD3, 0x79, 0xB3, 0x81, 0xD3, 0x01, 0x79, 0xB3, 0x82, 0x81, 0xD3, 0x79, 0xB3, 0x81, 0xF3, 0x08, 0x81, 0xD3, 0x81, 0x81, 0xD4, 0x81, 0xB3, 0x01, 0x81, 0xD3, 0x81, 0x81, 0xD4, 0x81, 0xD3, 0x02, 0x81, 0xD4, 0x82, 0x81, 0xD3, 0x81, 0xD4, 0x89, 0xD4, 0x04, 0x81, 0xD4, 0x83, 0x81, 0xD3, 0x89, 0xF4, 0x81, 0xD3, 0x89, 0xF4, 0x03, 0x81, 0xF3, 0x81, 0x81, 0xD3, 0x81, 0xF4, 0x01, 0x81, 0xD3, 0x04, 0x81, 0xF4, 0x81, 0x81, 0xD3, 0x81, 0xF4, 0x01, 0x81, 0xD3, 0x81, 0x81, 0xD4, 0x81, 0xD3, 0x01, 0x81, 0xD4, 0x8A, 0x89, 0xF4, 0x81, 0xD4, 0x81, 0xF4, 0x81, 0xD3, 0x8A, 0x14, 0x89, 0xF4, 0x81, 0xF3, 0x8A, 0x14, 0x81, 0xF4, 0x81, 0xD3, 0x8A, 0x14, 0x03, 0x81, 0xF3, 0x82, 0x81, 0xD3, 0x81, 0xF4, 0x81, 0xD3, 0x02, 0x81, 0xF4, 0x82, 0x89, 0xF4, 0x8A, 0x14, 0x81, 0xF3, 0x03, 0x89, 0xF4, 0x80, 0x8A, 0x14, 0x04, 0x81, 0xF4, 0x80, 0x8A, 0x14, 0x01, 0x82, 0x14, 0x83, 0x8A, 0x35, 0x82, 0x14, 0x82, 0x34, 0x8A, 0x35, 0x04, 0x82, 0x14, 0x80, 0x82, 0x35, 0x01, 0x82, 0x34, 0x01, 0x82, 0x35, + 0x80, 0x82, 0x55, 0x01, 0x7A, 0x14, 0x01, 0x72, 0x14, 0x01, 0x7A, 0x55, 0x8F, 0x72, 0x34, 0x7A, 0x75, 0x72, 0x55, 0x7A, 0x96, 0x72, 0x95, 0x72, 0xB5, 0x62, 0x54, 0x5A, 0x13, 0x49, 0x91, 0x39, 0x4F, 0x28, 0xEE, 0x28, 0xAD, 0x20, 0xCE, 0x20, 0xAD, 0x20, 0xCD, 0x20, 0xCE, 0x02, 0x20, 0xEE, 0x02, 0x21, 0x0E, 0x04, 0x21, 0x0F, 0x81, 0x20, 0xEF, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x04, 0x18, 0xEF, 0x80, 0x21, 0x0F, 0x01, 0x18, 0xEF, 0x80, 0x19, 0x0F, 0x01, 0x18, 0xEF, 0x03, 0x19, 0x0F, 0x02, 0x21, 0x0F, 0x01, 0x18, 0xEF, 0x80, 0x19, 0x0F, 0x04, 0x18, 0xEF, 0x80, 0x21, 0x0F, 0x02, 0x18, 0xEF, 0x01, 0x19, 0x0F, 0x80, 0x18, 0xEF, 0x02, 0x21, 0x0F, 0x02, 0x19, 0x0F, 0x04, 0x18, 0xEF, 0x81, 0x19, 0x0F, 0x21, 0x0F, 0x07, 0x18, 0xEF, 0x82, 0x20, 0xEF, 0x18, 0xEF, 0x20, 0xEF, 0x07, 0x18, 0xEF, 0x80, 0x19, 0x0F, 0x05, 0x18, 0xEF, 0x81, 0x20, 0xEF, 0x18, 0xEF, 0x04, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x19, 0x0F, 0x03, 0x18, 0xEF, 0x01, 0x20, 0xEF, 0x06, 0x21, 0x0F, 0x80, 0x18, 0xEE, 0x01, 0x19, 0x0F, 0x01, 0x21, 0x0F, 0x81, 0x18, 0xEF, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x81, 0x18, 0xEF, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x80, 0x18, 0xEF, 0x01, 0x21, 0x0F, 0x01, 0x18, 0xEF, 0x80, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x02, 0x18, 0xEF, 0x18, 0x20, 0xEF, 0x82, 0x18, 0xEE, 0x20, 0xEE, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x81, 0x21, 0x0F, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x80, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x03, 0x20, 0xEF, 0x81, 0x18, 0xEF, 0x21, + 0x0F, 0x05, 0x20, 0xEF, 0x01, 0x20, 0xEE, 0x0B, 0x20, 0xEF, 0x80, 0x20, 0xEE, 0x01, 0x20, 0xEF, 0x83, 0x20, 0xEE, 0x20, 0xEF, 0x21, 0x0F, 0x20, 0xEE, 0x03, 0x20, 0xEF, 0x81, 0x21, 0x0F, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x81, 0x20, 0xEE, 0x21, 0x0F, 0x01, 0x20, 0xEE, 0x02, 0x20, 0xEF, 0x84, 0x20, 0xEE, 0x20, 0xEF, 0x21, 0x0F, 0x20, 0xEF, 0x18, 0xEE, 0x01, 0x20, 0xEE, 0x81, 0x20, 0xEF, 0x20, 0xEE, 0x01, 0x20, 0xEF, 0x81, 0x20, 0xEE, 0x21, 0x0F, 0x02, 0x20, 0xEF, 0x01, 0x20, 0xEE, 0x01, 0x20, 0xEF, 0x82, 0x18, 0xEF, 0x18, 0xCF, 0x20, 0xEF, 0x08, 0x20, 0xEE, 0x80, 0x18, 0xEE, 0x03, 0x20, 0xEE, 0x80, 0x18, 0xEE, 0x01, 0x20, 0xEE, 0x81, 0x18, 0xEE, 0x18, 0xCE, 0x01, 0x18, 0xEE, 0x0B, 0x20, 0xEE, 0x06, 0x20, 0xEF, 0x83, 0x20, 0xCE, 0x20, 0xEF, 0x20, 0xEE, 0x20, 0xCE, 0x0C, 0x20, 0xEE, 0x85, 0x18, 0xEE, 0x20, 0xEE, 0x21, 0x0E, 0x20, 0xEE, 0x18, 0xEE, 0x20, 0xEE, 0x02, 0x20, 0xEF, 0x06, 0x20, 0xEE, 0x81, 0x18, 0xEE, 0x20, 0xEE, 0x07, 0x20, 0xEF, 0x87, 0x20, 0xEE, 0x20, 0xEF, 0x20, 0xEE, 0x21, 0x0F, 0x18, 0xCE, 0x18, 0xEE, 0x20, 0xEE, 0x18, 0xEE, 0x05, 0x20, 0xEE, 0x80, 0x20, 0xEF, 0x01, 0x20, 0xEE, 0x81, 0x20, 0xEF, 0x20, 0xEE, 0x07, 0x20, 0xEF, 0x80, 0x20, 0xEE, 0x03, 0x20, 0xEF, 0x01, 0x21, 0x0F, 0x01, 0x20, 0xEF, 0x82, 0x21, 0x0F, 0x29, 0x30, 0x29, 0x0F, 0x01, 0x29, 0x30, 0x01, 0x29, 0x10, 0x1F, 0x29, 0x30, 0x80, 0x29, 0x51, 0x04, 0x29, 0x30, 0x02, 0x29, 0x51, 0x01, 0x29, 0x50, 0x06, 0x29, 0x30, 0x82, 0x29, 0x10, 0x29, 0x30, + 0x29, 0x50, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x01, 0x29, 0x30, 0x80, 0x29, 0x51, 0x01, 0x29, 0x30, 0x81, 0x29, 0x50, 0x29, 0x30, 0x01, 0x29, 0x51, 0x02, 0x29, 0x30, 0x80, 0x29, 0x51, 0x01, 0x29, 0x30, 0x81, 0x29, 0x50, 0x21, 0x30, 0x18, 0x29, 0x30, 0x01, 0x29, 0x31, 0x81, 0x29, 0x30, 0x29, 0x31, 0x01, 0x29, 0x30, 0x80, 0x29, 0x50, 0x02, 0x29, 0x30, 0x80, 0x29, 0x50, 0x02, 0x29, 0x30, 0x81, 0x31, 0x30, 0x29, 0x30, 0x01, 0x31, 0x31, 0x01, 0x31, 0x51, 0x80, 0x29, 0x31, 0x01, 0x29, 0x51, 0x01, 0x29, 0x31, 0x82, 0x31, 0x51, 0x31, 0x31, 0x31, 0x51, 0x02, 0x31, 0x52, 0x82, 0x39, 0x52, 0x31, 0x52, 0x39, 0x52, 0x02, 0x39, 0x72, 0x02, 0x39, 0x92, 0x02, 0x41, 0x92, 0x82, 0x41, 0x93, 0x41, 0x92, 0x41, 0x93, 0x01, 0x49, 0xB3, 0x81, 0x49, 0x93, 0x49, 0xB4, 0x01, 0x49, 0xB3, 0x85, 0x49, 0xB4, 0x49, 0xB3, 0x51, 0xF4, 0x51, 0xD4, 0x51, 0xB3, 0x59, 0xD4, 0x01, 0x59, 0xB4, 0x86, 0x61, 0xD4, 0x61, 0xB3, 0x69, 0x93, 0x71, 0xD4, 0x79, 0xD5, 0x81, 0xF5, 0x89, 0xD4, 0x01, 0x99, 0xF5, 0x01, 0xAA, 0x15, 0x83, 0xA1, 0xD4, 0xA9, 0xD4, 0xA9, 0xD3, 0xB1, 0xF4, 0x03, 0xA9, 0xD3, 0x8A, 0xA9, 0xF3, 0xAA, 0x14, 0xA1, 0xF3, 0x9A, 0x34, 0x92, 0x54, 0x72, 0x53, 0x31, 0xAF, 0x53, 0xF6, 0x87, 0x1F, 0x56, 0xDD, 0x46, 0xFD, 0x01, 0x3F, 0x3D, 0x8A, 0x3F, 0x1D, 0x3E, 0xDC, 0x56, 0x9C, 0x76, 0x3C, 0x3B, 0x11, 0x72, 0xF3, 0x8A, 0x73, 0x91, 0xF3, 0xA1, 0xD3, 0xA9, 0xF3, 0xA9, 0xF4, 0x01, 0xA9, 0xD4, 0x8A, 0xA9, 0xF4, 0xA1, + 0xF4, 0xA2, 0x15, 0x91, 0xF4, 0x8A, 0x35, 0x61, 0x51, 0x51, 0x51, 0x49, 0x71, 0x41, 0x71, 0x41, 0xB2, 0x41, 0x92, 0x01, 0x39, 0xB2, 0x81, 0x31, 0x71, 0x31, 0x91, 0x03, 0x31, 0x71, 0x02, 0x29, 0x51, 0x82, 0x31, 0x51, 0x29, 0x30, 0x29, 0x50, 0x01, 0x29, 0x30, 0x03, 0x29, 0x50, 0x06, 0x29, 0x30, 0x81, 0x21, 0x30, 0x21, 0x10, 0x01, 0x21, 0x30, 0x03, 0x21, 0x10, 0x0B, 0x21, 0x30, 0x81, 0x21, 0x2F, 0x21, 0x0F, 0x01, 0x21, 0x30, 0x80, 0x21, 0x10, 0x0B, 0x21, 0x30, 0x80, 0x21, 0x10, 0x19, 0x21, 0x30, 0x80, 0x21, 0x10, 0x01, 0x21, 0x30, 0x80, 0x19, 0x30, 0x19, 0x21, 0x30, 0x80, 0x19, 0x30, 0x0F, 0x21, 0x30, 0x80, 0x19, 0x30, 0x02, 0x21, 0x30, 0x83, 0x19, 0x30, 0x19, 0x10, 0x21, 0x30, 0x19, 0x30, 0x04, 0x21, 0x30, 0x83, 0x21, 0x10, 0x21, 0x30, 0x21, 0x10, 0x21, 0x30, 0x01, 0x21, 0x10, 0x80, 0x21, 0x30, 0x03, 0x19, 0x0F, 0x80, 0x19, 0x30, 0x01, 0x19, 0x0F, 0x01, 0x19, 0x10, 0x80, 0x19, 0x30, 0x03, 0x19, 0x10, 0x80, 0x19, 0x0F, 0x01, 0x19, 0x2F, 0x04, 0x19, 0x0F, 0x86, 0x19, 0x30, 0x19, 0x10, 0x19, 0x0F, 0x19, 0x30, 0x19, 0x2F, 0x19, 0x0F, 0x19, 0x30, 0x04, 0x19, 0x0F, 0x82, 0x21, 0x0F, 0x19, 0x0F, 0x21, 0x10, 0x01, 0x21, 0x0F, 0x81, 0x21, 0x10, 0x19, 0x0F, 0x01, 0x19, 0x10, 0x82, 0x19, 0x0F, 0x18, 0xEF, 0x19, 0x10, 0x04, 0x19, 0x0F, 0x80, 0x19, 0x2F, 0x05, 0x19, 0x0F, 0x80, 0x19, 0x2F, 0x01, 0x19, 0x0F, 0x80, 0x19, 0x2F, 0x10, 0x19, 0x0F, 0x80, 0x19, 0x2F, 0x03, 0x19, 0x0F, 0x04, 0x19, 0x0E, 0x03, 0x18, 0xEE, 0x81, 0x18, 0xEF, + 0x18, 0xEE, 0x01, 0x19, 0x0F, 0x01, 0x18, 0xEF, 0x01, 0x18, 0xEE, 0x81, 0x18, 0xCE, 0x18, 0xEF, 0x01, 0x18, 0xEE, 0x80, 0x19, 0x0E, 0x01, 0x18, 0xEE, 0x01, 0x19, 0x0E, 0x01, 0x18, 0xEE, 0x02, 0x19, 0x0E, 0x80, 0x8A, 0x97, 0x02, 0x8A, 0x76, 0x81, 0x82, 0x56, 0x8A, 0x76, 0x01, 0x8A, 0x77, 0x82, 0x8A, 0x76, 0x8A, 0x97, 0x8A, 0x76, 0x01, 0x8A, 0x97, 0x81, 0x8A, 0x96, 0x8A, 0x97, 0x07, 0x8A, 0xB7, 0x80, 0x8A, 0x97, 0x01, 0x82, 0x96, 0x81, 0x82, 0x76, 0x82, 0x56, 0x02, 0x82, 0x76, 0x82, 0x82, 0x96, 0x82, 0x56, 0x82, 0x76, 0x01, 0x82, 0x77, 0x05, 0x82, 0x76, 0x01, 0x82, 0x77, 0x01, 0x8A, 0x77, 0x01, 0x82, 0x57, 0x03, 0x82, 0x77, 0x87, 0x82, 0x56, 0x82, 0x77, 0x82, 0x57, 0x8A, 0x77, 0x82, 0x77, 0x8A, 0x77, 0x82, 0x57, 0x8A, 0x57, 0x01, 0x8A, 0x77, 0x80, 0x8A, 0x56, 0x01, 0x8A, 0x77, 0x02, 0x8A, 0x76, 0x01, 0x82, 0x76, 0x80, 0x8A, 0x76, 0x02, 0x8A, 0x97, 0x82, 0x82, 0x77, 0x8A, 0x97, 0x82, 0x77, 0x05, 0x8A, 0x97, 0x02, 0x8A, 0xB7, 0x02, 0x92, 0xB8, 0x84, 0x8A, 0x97, 0x92, 0xB7, 0x92, 0xB8, 0x92, 0xD8, 0x92, 0xB7, 0x02, 0x8A, 0x97, 0x82, 0x92, 0xB7, 0x92, 0xD8, 0x92, 0xD7, 0x02, 0x8A, 0xB7, 0x01, 0x8A, 0x97, 0x84, 0x8A, 0xB7, 0x8A, 0x97, 0x8A, 0x77, 0x8A, 0x97, 0x8A, 0x96, 0x02, 0x8A, 0x97, 0x80, 0x92, 0x97, 0x01, 0x8A, 0x97, 0x80, 0x92, 0x97, 0x01, 0x92, 0xB7, 0x80, 0x8A, 0xB7, 0x02, 0x8A, 0x97, 0x02, 0x8A, 0xB7, 0x88, 0x8A, 0xB8, 0x8A, 0xB7, 0x92, 0xD8, 0x8A, 0xB7, 0x8A, 0x97, 0x8A, 0xB7, 0x8A, 0x97, 0x8A, 0xB7, 0x92, 0xB7, + 0x04, 0x8A, 0xB7, 0x01, 0x8A, 0xD8, 0x83, 0x92, 0xF8, 0x8A, 0xD8, 0x8A, 0xF8, 0x8B, 0x18, 0x01, 0x93, 0x39, 0x01, 0x93, 0x59, 0x81, 0x93, 0x79, 0x8B, 0x7A, 0x01, 0x93, 0xBA, 0x8E, 0x9B, 0xFB, 0x93, 0xFB, 0x8B, 0xDA, 0x83, 0x9A, 0x73, 0x38, 0x6A, 0xF7, 0x62, 0xD6, 0x52, 0x75, 0x4A, 0x55, 0x42, 0x13, 0x39, 0xF3, 0x31, 0xB2, 0x29, 0x91, 0x29, 0x71, 0x21, 0x71, 0x05, 0x21, 0x51, 0x82, 0x21, 0x31, 0x21, 0x51, 0x21, 0x71, 0x01, 0x21, 0x51, 0x82, 0x21, 0x31, 0x21, 0x51, 0x21, 0x31, 0x02, 0x21, 0x51, 0x04, 0x19, 0x51, 0x86, 0x19, 0x31, 0x21, 0x51, 0x19, 0x51, 0x19, 0x30, 0x19, 0x10, 0x19, 0x31, 0x19, 0x30, 0x03, 0x19, 0x31, 0x01, 0x19, 0x51, 0x05, 0x21, 0x51, 0x01, 0x19, 0x31, 0x81, 0x21, 0x51, 0x19, 0x31, 0x01, 0x21, 0x51, 0x04, 0x19, 0x51, 0x86, 0x19, 0x31, 0x19, 0x51, 0x21, 0x51, 0x19, 0x31, 0x21, 0x51, 0x19, 0x31, 0x21, 0x51, 0x02, 0x19, 0x31, 0x84, 0x21, 0x51, 0x21, 0x31, 0x19, 0x31, 0x21, 0x51, 0x19, 0x31, 0x06, 0x21, 0x51, 0x84, 0x19, 0x51, 0x19, 0x31, 0x19, 0x51, 0x19, 0x31, 0x21, 0x31, 0x01, 0x21, 0x51, 0x01, 0x21, 0x31, 0x03, 0x21, 0x51, 0x82, 0x21, 0x72, 0x21, 0x71, 0x21, 0x31, 0x10, 0x21, 0x51, 0x01, 0x21, 0x71, 0x02, 0x21, 0x51, 0x80, 0x19, 0x31, 0x02, 0x21, 0x31, 0x81, 0x19, 0x31, 0x21, 0x51, 0x03, 0x19, 0x31, 0x06, 0x21, 0x51, 0x80, 0x21, 0x31, 0x02, 0x21, 0x51, 0x01, 0x21, 0x52, 0x81, 0x21, 0x51, 0x21, 0x52, 0x02, 0x21, 0x51, 0x82, 0x21, 0x52, 0x21, 0x51, 0x21, 0x52, 0x07, 0x21, 0x51, 0x81, 0x29, 0x71, 0x21, + 0x51, 0x01, 0x21, 0x31, 0x01, 0x21, 0x51, 0x01, 0x21, 0x71, 0x80, 0x21, 0x51, 0x01, 0x21, 0x71, 0x08, 0x21, 0x51, 0x01, 0x21, 0x71, 0x01, 0x29, 0x72, 0x0E, 0x21, 0x51, 0x01, 0x29, 0x71, 0x82, 0x29, 0x72, 0x29, 0x51, 0x29, 0x72, 0x01, 0x29, 0x71, 0x81, 0x29, 0x72, 0x29, 0x71, 0x05, 0x29, 0x72, 0x81, 0x29, 0x71, 0x29, 0x72, 0x03, 0x29, 0x71, 0x81, 0x21, 0x51, 0x29, 0x71, 0x01, 0x21, 0x51, 0x83, 0x29, 0x71, 0x21, 0x71, 0x29, 0x71, 0x21, 0x71, 0x01, 0x21, 0x51, 0x01, 0x29, 0x71, 0x01, 0x21, 0x51, 0x01, 0x29, 0x92, 0x81, 0x21, 0x71, 0x21, 0x51, 0x04, 0x29, 0x71, 0x01, 0x29, 0x72, 0x80, 0x29, 0x92, 0x01, 0x29, 0x72, 0x08, 0x29, 0x71, 0x81, 0x29, 0x51, 0x29, 0x72, 0x01, 0x29, 0x71, 0x80, 0x29, 0x72, 0x01, 0x29, 0x71, 0x81, 0x21, 0x51, 0x29, 0x72, 0x02, 0x29, 0x71, 0x01, 0x29, 0x72, 0x03, 0x29, 0x71, 0x80, 0x29, 0x72, 0x01, 0x29, 0x71, 0x81, 0x29, 0x72, 0x29, 0x71, 0x0B, 0x29, 0x72, 0x01, 0x31, 0x92, 0x04, 0x29, 0x71, 0x02, 0x29, 0x51, 0x01, 0x29, 0x92, 0x02, 0x29, 0x91, 0x82, 0x29, 0x92, 0x29, 0x72, 0x29, 0x92, 0x01, 0x29, 0x72, 0x01, 0x29, 0x51, 0x81, 0x31, 0x72, 0x29, 0x72, 0x03, 0x29, 0x92, 0x01, 0x29, 0x71, 0x08, 0x29, 0x72, 0x02, 0x29, 0x71, 0x85, 0x29, 0x72, 0x29, 0x71, 0x29, 0x92, 0x29, 0x72, 0x29, 0x71, 0x29, 0x72, 0x04, 0x29, 0x71, 0x81, 0x29, 0x72, 0x29, 0x71, 0x04, 0x29, 0x72, 0x02, 0x29, 0x92, 0x80, 0x31, 0x92, 0x01, 0x29, 0x72, 0x01, 0x31, 0x92, 0x01, 0x31, 0xB2, 0x80, 0x31, 0x92, 0x01, 0x31, 0xB2, 0x02, 0x31, + 0xB3, 0x80, 0x31, 0x92, 0x0A, 0x31, 0xB3, 0x01, 0x31, 0xD3, 0x0D, 0x31, 0xB3, 0x80, 0x31, 0x93, 0x02, 0x31, 0xB3, 0x01, 0x31, 0x93, 0x0D, 0x31, 0xB3, 0x81, 0x31, 0x93, 0x31, 0x92, 0x09, 0x31, 0xB3, 0x80, 0x31, 0xD3, 0x06, 0x31, 0xB3, 0x81, 0x29, 0x92, 0x31, 0x93, 0x02, 0x31, 0xB3, 0x01, 0x31, 0x93, 0x83, 0x29, 0x92, 0x31, 0xB3, 0x31, 0x93, 0x29, 0x93, 0x01, 0x31, 0x93, 0x01, 0x29, 0x92, 0x80, 0x31, 0x93, 0x01, 0x29, 0x92, 0x01, 0x29, 0x93, 0x02, 0x29, 0x92, 0x82, 0x29, 0x93, 0x29, 0x92, 0x29, 0x93, 0x01, 0x29, 0x73, 0x80, 0x29, 0x72, 0x05, 0x31, 0x93, 0x85, 0x31, 0xB3, 0x31, 0x93, 0x29, 0x93, 0x29, 0x72, 0x29, 0x73, 0x29, 0x93, 0x03, 0x31, 0x93, 0x81, 0x31, 0xB3, 0x31, 0x93, 0x01, 0x31, 0x92, 0x80, 0x29, 0x92, 0x01, 0x31, 0xB3, 0x83, 0x31, 0x92, 0x29, 0x72, 0x31, 0x93, 0x31, 0x72, 0x01, 0x31, 0xB3, 0x81, 0x31, 0x93, 0x29, 0x73, 0x01, 0x31, 0x93, 0x03, 0x31, 0x73, 0x82, 0x31, 0x93, 0x39, 0x93, 0x39, 0xB4, 0x02, 0x39, 0x94, 0x80, 0x39, 0xB3, 0x01, 0x39, 0xB4, 0x87, 0x39, 0xB3, 0x41, 0xD4, 0x39, 0xD4, 0x39, 0xB4, 0x41, 0xD4, 0x41, 0xB3, 0x39, 0xB3, 0x41, 0xD4, 0x03, 0x41, 0xB4, 0x80, 0x49, 0xB4, 0x02, 0x49, 0xF5, 0x02, 0x49, 0xD4, 0x02, 0x51, 0xF5, 0x93, 0x51, 0xD4, 0x59, 0xF5, 0x59, 0xD4, 0x61, 0xF5, 0x61, 0xD4, 0x61, 0xB4, 0x69, 0xB4, 0x71, 0xD5, 0x79, 0xD5, 0x92, 0x57, 0x91, 0xF5, 0x99, 0xF4, 0xA1, 0xF4, 0xAA, 0x15, 0xA1, 0xD3, 0xA9, 0xD3, 0xA1, 0xB3, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0x02, 0xA9, 0xD3, 0x98, 0xAA, + 0x14, 0xA2, 0x13, 0x9A, 0x54, 0x8A, 0x74, 0x6A, 0x73, 0x21, 0x6D, 0x7D, 0x9B, 0x87, 0x1F, 0x4E, 0x9C, 0x46, 0xFC, 0x3F, 0x1C, 0x3E, 0xFC, 0x3E, 0xBB, 0x56, 0x9B, 0x76, 0x5C, 0x3B, 0x52, 0x6A, 0xD2, 0x82, 0x32, 0x9A, 0x33, 0xA1, 0xF3, 0xA1, 0xD3, 0xA9, 0xD3, 0xA1, 0xB3, 0xA9, 0xF4, 0xA9, 0xD4, 0x01, 0xA1, 0xF4, 0x86, 0x9A, 0x14, 0x92, 0x55, 0x69, 0xB3, 0x59, 0x92, 0x49, 0x92, 0x41, 0x92, 0x41, 0xB2, 0x01, 0x41, 0xD3, 0x84, 0x39, 0xD3, 0x31, 0xB3, 0x39, 0xD3, 0x31, 0xB3, 0x31, 0xB2, 0x04, 0x29, 0x93, 0x80, 0x31, 0x72, 0x03, 0x29, 0x72, 0x80, 0x29, 0x71, 0x02, 0x29, 0x72, 0x03, 0x29, 0x52, 0x81, 0x21, 0x52, 0x29, 0x52, 0x01, 0x29, 0x72, 0x05, 0x21, 0x72, 0x80, 0x21, 0x51, 0x09, 0x21, 0x72, 0x80, 0x21, 0x71, 0x02, 0x21, 0x51, 0x81, 0x21, 0x72, 0x21, 0x51, 0x02, 0x21, 0x72, 0x82, 0x21, 0x51, 0x21, 0x52, 0x21, 0x72, 0x01, 0x21, 0x51, 0x80, 0x21, 0x52, 0x02, 0x21, 0x51, 0x03, 0x21, 0x72, 0x01, 0x21, 0x52, 0x01, 0x19, 0x51, 0x81, 0x21, 0x72, 0x21, 0x52, 0x01, 0x21, 0x72, 0x03, 0x21, 0x52, 0x81, 0x21, 0x72, 0x21, 0x51, 0x01, 0x21, 0x72, 0x04, 0x21, 0x52, 0x01, 0x21, 0x51, 0x82, 0x19, 0x31, 0x21, 0x72, 0x21, 0x52, 0x01, 0x21, 0x72, 0x01, 0x21, 0x52, 0x81, 0x21, 0x72, 0x21, 0x51, 0x04, 0x21, 0x72, 0x80, 0x21, 0x52, 0x05, 0x21, 0x72, 0x84, 0x21, 0x52, 0x19, 0x52, 0x21, 0x72, 0x19, 0x51, 0x21, 0x52, 0x02, 0x19, 0x51, 0x85, 0x21, 0x52, 0x19, 0x51, 0x21, 0x72, 0x19, 0x72, 0x21, 0x72, 0x19, 0x51, 0x01, 0x19, 0x52, 0x01, 0x19, 0x31, + 0x81, 0x19, 0x52, 0x19, 0x51, 0x01, 0x19, 0x31, 0x02, 0x19, 0x51, 0x80, 0x19, 0x31, 0x02, 0x19, 0x51, 0x80, 0x19, 0x31, 0x05, 0x19, 0x51, 0x03, 0x19, 0x31, 0x01, 0x19, 0x51, 0x06, 0x19, 0x31, 0x01, 0x19, 0x51, 0x87, 0x19, 0x30, 0x19, 0x51, 0x19, 0x31, 0x19, 0x51, 0x19, 0x31, 0x19, 0x51, 0x19, 0x31, 0x19, 0x51, 0x02, 0x19, 0x31, 0x80, 0x19, 0x30, 0x01, 0x19, 0x31, 0x81, 0x19, 0x30, 0x19, 0x31, 0x03, 0x19, 0x30, 0x82, 0x19, 0x10, 0x19, 0x30, 0x19, 0x10, 0x01, 0x19, 0x30, 0x82, 0x19, 0x31, 0x11, 0x10, 0x19, 0x30, 0x04, 0x19, 0x10, 0x03, 0x19, 0x11, 0x01, 0x19, 0x10, 0x83, 0x19, 0x11, 0x10, 0xF0, 0x19, 0x31, 0x19, 0x10, 0x03, 0x11, 0x10, 0x80, 0x19, 0x30, 0x04, 0x11, 0x10, 0x01, 0x11, 0x30, 0x02, 0x11, 0x10, 0x80, 0x10, 0xEF, 0x01, 0x11, 0x0F, 0x80, 0x11, 0x30, 0x03, 0x11, 0x10, 0x01, 0x10, 0xF0, 0x05, 0x11, 0x10, 0x02, 0x11, 0x0F, 0x01, 0x11, 0x10, 0x01, 0x11, 0x0F, 0x02, 0x10, 0xEF, 0x01, 0x11, 0x0F, 0x08, 0x10, 0xEF, 0x80, 0x11, 0x0F, 0x08, 0x10, 0xEF, 0x01, 0x10, 0xEE, 0x81, 0x11, 0x0E, 0x10, 0xEE, 0x01, 0x11, 0x0E, 0x81, 0x59, 0xB3, 0x51, 0x93, 0x02, 0x51, 0x72, 0x80, 0x51, 0x92, 0x05, 0x59, 0x93, 0x80, 0x51, 0x92, 0x02, 0x51, 0x72, 0x01, 0x49, 0x72, 0x03, 0x51, 0x72, 0x82, 0x51, 0x92, 0x51, 0x72, 0x51, 0x92, 0x01, 0x51, 0x72, 0x82, 0x51, 0x93, 0x59, 0x93, 0x51, 0xB3, 0x02, 0x59, 0xD3, 0x80, 0x59, 0xD4, 0x03, 0x59, 0xF4, 0x01, 0x59, 0xD4, 0x81, 0x59, 0xF4, 0x59, 0xD4, 0x02, 0x61, 0xF4, 0x02, 0x59, 0xD4, 0x81, 0x61, + 0xF4, 0x59, 0xF4, 0x01, 0x61, 0xF4, 0x80, 0x62, 0x15, 0x02, 0x61, 0xF5, 0x86, 0x61, 0xF4, 0x59, 0xD4, 0x61, 0xF5, 0x61, 0xD5, 0x61, 0xF5, 0x61, 0xF4, 0x61, 0xF5, 0x06, 0x61, 0xF4, 0x03, 0x62, 0x14, 0x82, 0x62, 0x15, 0x59, 0xF4, 0x62, 0x14, 0x01, 0x59, 0xF4, 0x07, 0x59, 0xD4, 0x81, 0x59, 0xB3, 0x59, 0xD4, 0x05, 0x59, 0xB3, 0x02, 0x59, 0xD4, 0x85, 0x61, 0xF4, 0x59, 0xF4, 0x62, 0x14, 0x59, 0xF4, 0x62, 0x35, 0x62, 0x14, 0x01, 0x62, 0x15, 0x8C, 0x6A, 0x35, 0x61, 0xF4, 0x6A, 0x35, 0x62, 0x14, 0x6A, 0x15, 0x62, 0x14, 0x6A, 0x15, 0x6A, 0x14, 0x6A, 0x15, 0x61, 0xF4, 0x6A, 0x14, 0x62, 0x14, 0x6A, 0x35, 0x01, 0x62, 0x14, 0x81, 0x62, 0x15, 0x62, 0x35, 0x03, 0x62, 0x15, 0x84, 0x59, 0xF4, 0x62, 0x15, 0x62, 0x14, 0x62, 0x15, 0x61, 0xF4, 0x03, 0x62, 0x15, 0x82, 0x62, 0x35, 0x62, 0x15, 0x62, 0x35, 0x05, 0x62, 0x15, 0x81, 0x5A, 0x14, 0x62, 0x15, 0x01, 0x59, 0xF4, 0x80, 0x51, 0xD4, 0x01, 0x51, 0xF4, 0x81, 0x49, 0xD3, 0x49, 0xF4, 0x01, 0x52, 0x14, 0x80, 0x52, 0x35, 0x02, 0x52, 0x55, 0x85, 0x52, 0x95, 0x42, 0x54, 0x42, 0x35, 0x39, 0xF4, 0x31, 0xF3, 0x29, 0xB2, 0x01, 0x21, 0x92, 0x03, 0x19, 0x72, 0x81, 0x19, 0x52, 0x19, 0x72, 0x01, 0x19, 0x73, 0x01, 0x21, 0x93, 0x80, 0x19, 0x93, 0x01, 0x19, 0x73, 0x80, 0x19, 0x93, 0x01, 0x19, 0x73, 0x80, 0x19, 0x72, 0x03, 0x19, 0x92, 0x07, 0x19, 0x72, 0x81, 0x19, 0x92, 0x19, 0x93, 0x03, 0x19, 0xB3, 0x04, 0x19, 0x93, 0x80, 0x19, 0x92, 0x03, 0x19, 0x72, 0x01, 0x19, 0x93, 0x81, 0x19, 0xB3, 0x19, 0x93, 0x01, + 0x19, 0x72, 0x81, 0x19, 0x93, 0x19, 0x92, 0x02, 0x19, 0x93, 0x81, 0x21, 0x93, 0x21, 0xB3, 0x01, 0x19, 0x93, 0x81, 0x21, 0xB3, 0x19, 0x93, 0x0F, 0x21, 0xB3, 0x85, 0x19, 0x93, 0x21, 0xB3, 0x19, 0x93, 0x21, 0x93, 0x21, 0xB3, 0x21, 0x93, 0x04, 0x21, 0xB3, 0x80, 0x21, 0x93, 0x01, 0x21, 0xB3, 0x84, 0x21, 0x93, 0x21, 0xB3, 0x21, 0x93, 0x21, 0xB3, 0x21, 0xD3, 0x03, 0x21, 0xB3, 0x84, 0x19, 0xB2, 0x19, 0xB3, 0x21, 0xB3, 0x19, 0x92, 0x19, 0xB3, 0x01, 0x21, 0xB3, 0x02, 0x21, 0xD3, 0x81, 0x19, 0xB3, 0x21, 0xB3, 0x02, 0x21, 0xD4, 0x01, 0x21, 0xB3, 0x02, 0x21, 0xD4, 0x80, 0x21, 0xB3, 0x01, 0x21, 0xD4, 0x01, 0x21, 0xD3, 0x03, 0x21, 0xD4, 0x81, 0x29, 0xD4, 0x21, 0xD4, 0x0F, 0x29, 0xD4, 0x06, 0x21, 0xB3, 0x80, 0x29, 0xD3, 0x01, 0x29, 0xD4, 0x82, 0x29, 0xF4, 0x29, 0xD3, 0x29, 0xF4, 0x03, 0x29, 0xD4, 0x82, 0x21, 0xB3, 0x29, 0xD3, 0x29, 0xF4, 0x01, 0x21, 0xB3, 0x05, 0x21, 0xD3, 0x81, 0x29, 0xD4, 0x29, 0xF4, 0x02, 0x29, 0xD4, 0x80, 0x29, 0xD3, 0x0A, 0x29, 0xF4, 0x01, 0x29, 0xD4, 0x01, 0x29, 0xF4, 0x80, 0x29, 0xD4, 0x0B, 0x29, 0xF4, 0x80, 0x32, 0x14, 0x04, 0x29, 0xF4, 0x82, 0x2A, 0x14, 0x29, 0xF4, 0x2A, 0x14, 0x05, 0x29, 0xF4, 0x84, 0x29, 0xD4, 0x32, 0x14, 0x29, 0xF4, 0x2A, 0x14, 0x29, 0xD4, 0x08, 0x29, 0xF4, 0x82, 0x2A, 0x14, 0x29, 0xF4, 0x2A, 0x14, 0x01, 0x29, 0xF4, 0x81, 0x2A, 0x14, 0x29, 0xF4, 0x02, 0x32, 0x14, 0x80, 0x31, 0xF4, 0x05, 0x32, 0x14, 0x80, 0x31, 0xF4, 0x04, 0x32, 0x14, 0x80, 0x32, 0x35, 0x06, 0x32, 0x14, 0x80, 0x32, 0x35, + 0x02, 0x32, 0x14, 0x80, 0x32, 0x15, 0x02, 0x32, 0x14, 0x01, 0x31, 0xF4, 0x84, 0x32, 0x14, 0x31, 0xF4, 0x32, 0x14, 0x31, 0xF4, 0x32, 0x14, 0x04, 0x31, 0xF4, 0x80, 0x32, 0x14, 0x01, 0x31, 0xF4, 0x80, 0x29, 0xF3, 0x02, 0x32, 0x14, 0x82, 0x29, 0xF4, 0x32, 0x14, 0x32, 0x34, 0x01, 0x32, 0x35, 0x80, 0x3A, 0x35, 0x01, 0x3A, 0x15, 0x83, 0x31, 0xF4, 0x3A, 0x15, 0x32, 0x14, 0x32, 0x34, 0x04, 0x32, 0x35, 0x02, 0x3A, 0x35, 0x81, 0x32, 0x15, 0x3A, 0x55, 0x02, 0x3A, 0x35, 0x82, 0x3A, 0x55, 0x3A, 0x35, 0x3A, 0x55, 0x01, 0x3A, 0x35, 0x80, 0x32, 0x35, 0x02, 0x3A, 0x55, 0x80, 0x32, 0x35, 0x02, 0x3A, 0x35, 0x82, 0x32, 0x34, 0x3A, 0x35, 0x32, 0x35, 0x01, 0x3A, 0x35, 0x01, 0x32, 0x14, 0x01, 0x32, 0x15, 0x01, 0x32, 0x35, 0x87, 0x32, 0x15, 0x31, 0xF4, 0x32, 0x14, 0x32, 0x15, 0x31, 0xF4, 0x31, 0xD4, 0x31, 0xF4, 0x31, 0xD3, 0x01, 0x31, 0xF4, 0x81, 0x29, 0xD3, 0x29, 0xF4, 0x01, 0x32, 0x14, 0x07, 0x31, 0xF4, 0x81, 0x31, 0xD4, 0x31, 0xF4, 0x04, 0x29, 0xF4, 0x04, 0x31, 0xF4, 0x81, 0x31, 0xD4, 0x31, 0xF4, 0x01, 0x29, 0xD4, 0x01, 0x31, 0xD4, 0x01, 0x31, 0xF4, 0x01, 0x31, 0xD4, 0x01, 0x31, 0xF4, 0x02, 0x29, 0xD4, 0x80, 0x31, 0xD4, 0x04, 0x31, 0xF4, 0x81, 0x29, 0xD4, 0x31, 0xF4, 0x03, 0x29, 0xF4, 0x82, 0x29, 0xD3, 0x29, 0xD4, 0x31, 0xF4, 0x01, 0x31, 0xD4, 0x83, 0x31, 0xF4, 0x29, 0xD3, 0x29, 0xF4, 0x31, 0xF4, 0x01, 0x29, 0xF4, 0x01, 0x29, 0xD3, 0x01, 0x29, 0xF4, 0x81, 0x31, 0xF4, 0x29, 0xB3, 0x01, 0x29, 0xD4, 0x83, 0x31, 0xF4, 0x29, 0xD4, 0x29, 0xD3, + 0x29, 0xB3, 0x01, 0x29, 0xD4, 0x82, 0x29, 0xF4, 0x29, 0xD4, 0x29, 0xD3, 0x01, 0x29, 0xD4, 0x80, 0x29, 0xF4, 0x01, 0x29, 0xD4, 0x01, 0x29, 0xF4, 0x01, 0x29, 0xD4, 0x80, 0x29, 0xF4, 0x0D, 0x29, 0xD4, 0x80, 0x29, 0xB4, 0x03, 0x29, 0xD4, 0x80, 0x29, 0xF4, 0x09, 0x29, 0xD4, 0x82, 0x29, 0xB4, 0x21, 0xB3, 0x29, 0xD4, 0x01, 0x29, 0xF4, 0x80, 0x29, 0xD4, 0x01, 0x29, 0xB3, 0x81, 0x29, 0xD4, 0x31, 0xF4, 0x04, 0x29, 0xD4, 0x80, 0x31, 0xD4, 0x01, 0x29, 0xB4, 0x01, 0x31, 0xD4, 0x80, 0x31, 0xB4, 0x01, 0x31, 0xD5, 0x03, 0x31, 0xD4, 0x81, 0x31, 0xB4, 0x31, 0xD4, 0x01, 0x31, 0xF4, 0x81, 0x39, 0xF4, 0x31, 0xD4, 0x02, 0x39, 0xD4, 0x80, 0x39, 0xF4, 0x01, 0x39, 0xD4, 0x03, 0x41, 0xF5, 0x80, 0x4A, 0x16, 0x02, 0x42, 0x15, 0x82, 0x4A, 0x36, 0x4A, 0x15, 0x52, 0x35, 0x02, 0x52, 0x15, 0x01, 0x5A, 0x15, 0x87, 0x62, 0x36, 0x62, 0x16, 0x61, 0xF5, 0x71, 0xF6, 0x79, 0xF5, 0x81, 0xF5, 0x92, 0x35, 0x99, 0xF4, 0x01, 0xA2, 0x14, 0x81, 0xA9, 0xF4, 0xA1, 0xD3, 0x01, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0xA9, 0xA9, 0xD3, 0xA9, 0xB3, 0xA9, 0xF3, 0xA1, 0xF3, 0x9A, 0x13, 0x92, 0x33, 0x82, 0x73, 0x5A, 0x52, 0x32, 0x2F, 0x9E, 0xDF, 0x66, 0xBD, 0x4E, 0xBC, 0x46, 0xDC, 0x47, 0x1C, 0x46, 0xBB, 0x4E, 0x7B, 0x76, 0x9D, 0x43, 0xD3, 0x62, 0xD2, 0x82, 0x73, 0x92, 0x13, 0xA1, 0xF3, 0xA1, 0xD3, 0xA1, 0xB3, 0xA9, 0xF4, 0xA9, 0xD4, 0xA9, 0xF4, 0xAA, 0x15, 0xA2, 0x15, 0x9A, 0x14, 0x89, 0xF4, 0x7A, 0x14, 0x51, 0x72, 0x49, 0x92, 0x41, 0xB3, 0x39, 0xD3, 0x39, 0xD4, 0x31, 0xD4, 0x31, + 0xF4, 0x29, 0xD3, 0x31, 0xF4, 0x29, 0xF4, 0x01, 0x29, 0xD3, 0x03, 0x21, 0xB4, 0x01, 0x21, 0x93, 0x02, 0x21, 0xB3, 0x04, 0x21, 0x93, 0x80, 0x21, 0x72, 0x01, 0x21, 0x73, 0x83, 0x21, 0x93, 0x21, 0x73, 0x21, 0x93, 0x21, 0xB3, 0x01, 0x21, 0x93, 0x82, 0x19, 0x93, 0x21, 0x93, 0x19, 0x73, 0x07, 0x19, 0x93, 0x01, 0x19, 0x92, 0x80, 0x19, 0x93, 0x01, 0x19, 0x92, 0x01, 0x19, 0x72, 0x87, 0x19, 0x92, 0x19, 0x72, 0x19, 0x92, 0x19, 0x93, 0x19, 0x72, 0x19, 0x93, 0x19, 0x72, 0x19, 0x92, 0x08, 0x19, 0x72, 0x80, 0x19, 0x93, 0x01, 0x19, 0x73, 0x01, 0x19, 0x72, 0x80, 0x19, 0x92, 0x01, 0x19, 0x72, 0x81, 0x19, 0x93, 0x19, 0x72, 0x01, 0x19, 0x93, 0x05, 0x19, 0x72, 0x81, 0x19, 0x52, 0x19, 0x73, 0x01, 0x19, 0x52, 0x80, 0x19, 0x73, 0x04, 0x19, 0x72, 0x01, 0x19, 0x92, 0x04, 0x19, 0x72, 0x02, 0x11, 0x72, 0x80, 0x19, 0x72, 0x02, 0x11, 0x52, 0x03, 0x11, 0x72, 0x0A, 0x11, 0x52, 0x02, 0x11, 0x72, 0x04, 0x11, 0x52, 0x84, 0x11, 0x32, 0x11, 0x52, 0x11, 0x32, 0x11, 0x52, 0x11, 0x51, 0x01, 0x11, 0x52, 0x80, 0x11, 0x51, 0x04, 0x11, 0x31, 0x02, 0x11, 0x52, 0x81, 0x11, 0x31, 0x11, 0x32, 0x03, 0x11, 0x31, 0x01, 0x11, 0x52, 0x80, 0x11, 0x31, 0x01, 0x11, 0x32, 0x01, 0x11, 0x31, 0x82, 0x11, 0x52, 0x11, 0x51, 0x11, 0x52, 0x03, 0x11, 0x51, 0x81, 0x11, 0x31, 0x11, 0x32, 0x10, 0x11, 0x31, 0x82, 0x09, 0x31, 0x09, 0x11, 0x11, 0x31, 0x02, 0x09, 0x11, 0x83, 0x11, 0x31, 0x11, 0x11, 0x09, 0x11, 0x11, 0x31, 0x07, 0x11, 0x11, 0x01, 0x09, 0x11, 0x81, 0x11, 0x11, 0x09, 0x11, + 0x04, 0x09, 0x10, 0x80, 0x08, 0xF0, 0x06, 0x09, 0x10, 0x80, 0x08, 0xF0, 0x07, 0x09, 0x10, 0x82, 0x08, 0xF0, 0x09, 0x10, 0x08, 0xF0, 0x03, 0x09, 0x10, 0x03, 0x08, 0xF0, 0x02, 0x09, 0x10, 0x81, 0x08, 0xEF, 0x09, 0x10, 0x07, 0x08, 0xEF, 0x80, 0x08, 0xF0, 0x01, 0x08, 0xEF, 0x03, 0x08, 0xF0, 0x02, 0x08, 0xEF, 0x80, 0x08, 0xCF, 0x04, 0x08, 0xEF, 0x80, 0x08, 0xEE, 0x01, 0x08, 0xEF, 0x80, 0x09, 0x0F, 0x02, 0x00, 0x0C, 0x80, 0x08, 0x0C, 0x0D, 0x08, 0x0B, 0x80, 0x00, 0x0B, 0x05, 0x08, 0x0B, 0x80, 0x00, 0x0B, 0x04, 0x08, 0x0B, 0x80, 0x08, 0x0C, 0x01, 0x00, 0x0B, 0x80, 0x08, 0x0B, 0x06, 0x00, 0x0B, 0x80, 0x08, 0x0C, 0x02, 0x00, 0x0B, 0x81, 0x08, 0x0C, 0x00, 0x0B, 0x02, 0x08, 0x0B, 0x06, 0x00, 0x0B, 0x01, 0x00, 0x0C, 0x80, 0x08, 0x0C, 0x10, 0x00, 0x0B, 0x03, 0x00, 0x0C, 0x02, 0x08, 0x0C, 0x80, 0x00, 0x0B, 0x09, 0x08, 0x0C, 0x03, 0x00, 0x0C, 0x81, 0x00, 0x0B, 0x00, 0x0C, 0x09, 0x00, 0x0B, 0x82, 0x08, 0x0B, 0x00, 0x0B, 0x08, 0x0B, 0x08, 0x00, 0x0B, 0x03, 0x00, 0x0C, 0x01, 0x00, 0x0B, 0x02, 0x00, 0x0C, 0x03, 0x08, 0x0C, 0x04, 0x00, 0x0C, 0x83, 0x08, 0x0C, 0x08, 0x0D, 0x08, 0x2D, 0x10, 0x4D, 0x03, 0x08, 0x2D, 0x01, 0x10, 0x6E, 0x87, 0x08, 0x6D, 0x08, 0x8D, 0x08, 0x6D, 0x00, 0x4D, 0x08, 0x6D, 0x00, 0x6D, 0x08, 0xAE, 0x08, 0xCE, 0x05, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x02, 0x00, 0xCF, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x08, 0x01, + 0x10, 0x01, 0x01, 0x11, 0x81, 0x01, 0x31, 0x01, 0x11, 0x01, 0x01, 0x31, 0x01, 0x01, 0x10, 0x01, 0x01, 0x11, 0x01, 0x01, 0x31, 0x03, 0x01, 0x11, 0x01, 0x01, 0x31, 0x80, 0x01, 0x51, 0x01, 0x01, 0x31, 0x02, 0x01, 0x10, 0x80, 0x01, 0x31, 0x02, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x85, 0x01, 0x11, 0x01, 0x10, 0x01, 0x11, 0x01, 0x10, 0x01, 0x31, 0x01, 0x11, 0x01, 0x01, 0x10, 0x03, 0x00, 0xF0, 0x82, 0x01, 0x11, 0x01, 0x10, 0x00, 0xF0, 0x08, 0x01, 0x10, 0x83, 0x01, 0x31, 0x01, 0x10, 0x01, 0x31, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x81, 0x01, 0x31, 0x01, 0x11, 0x01, 0x01, 0x31, 0x01, 0x01, 0x10, 0x80, 0x01, 0x31, 0x01, 0x01, 0x10, 0x01, 0x01, 0x30, 0x02, 0x01, 0x31, 0x01, 0x01, 0x30, 0x81, 0x01, 0x31, 0x01, 0x30, 0x03, 0x01, 0x10, 0x03, 0x01, 0x31, 0x82, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x31, 0x02, 0x01, 0x10, 0x80, 0x01, 0x30, 0x04, 0x01, 0x10, 0x0C, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x06, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x01, 0x01, 0x31, 0x81, 0x01, 0x10, 0x01, 0x31, 0x01, 0x01, 0x10, 0x80, 0x01, 0x30, 0x02, 0x01, 0x10, 0x83, 0x01, 0x30, 0x01, 0x10, 0x01, 0x31, 0x01, 0x30, 0x01, 0x01, 0x10, 0x81, 0x01, 0x31, 0x01, 0x30, 0x01, 0x01, 0x10, 0x82, 0x00, 0xEF, 0x00, 0xF0, 0x01, 0x30, 0x02, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x31, 0x0A, 0x01, 0x10, 0x03, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x03, 0x00, 0xF0, 0x0A, 0x01, 0x10, 0x81, 0x00, 0xF0, 0x01, 0x10, 0x01, + 0x00, 0xF0, 0x01, 0x01, 0x10, 0x87, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x30, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x01, 0x30, 0x81, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x00, 0xEF, 0x03, 0x01, 0x10, 0x81, 0x01, 0x0F, 0x01, 0x10, 0x01, 0x00, 0xEF, 0x01, 0x01, 0x10, 0x80, 0x00, 0xF0, 0x07, 0x00, 0xEF, 0x80, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x01, 0x00, 0xEF, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xF0, 0x03, 0x01, 0x10, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x03, 0x01, 0x10, 0x01, 0x00, 0xEF, 0x02, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x01, 0x09, 0x30, 0x01, 0x01, 0x10, 0x01, 0x00, 0xEF, 0x01, 0x01, 0x10, 0x03, 0x00, 0xEF, 0x81, 0x01, 0x10, 0x00, 0xF0, 0x05, 0x00, 0xEF, 0x82, 0x00, 0xCF, 0x00, 0xEF, 0x01, 0x10, 0x04, 0x00, 0xEF, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xEF, 0x01, 0x01, 0x10, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xEF, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xEF, 0x82, 0x01, 0x30, 0x01, 0x0F, 0x01, 0x10, 0x03, 0x01, 0x30, 0x8A, 0x01, 0x31, 0x01, 0x10, 0x01, 0x31, 0x09, 0x71, 0x09, 0x31, 0x09, 0x10, 0x09, 0x31, 0x09, 0x10, 0x01, 0x10, 0x09, 0x30, 0x09, 0x51, 0x01, 0x01, 0x10, 0x84, 0x01, 0x31, 0x09, 0x31, 0x01, 0x31, 0x09, 0x31, 0x09, 0x51, 0x08, 0x09, 0x31, 0x06, 0x01, 0x31, 0x01, 0x09, 0x31, 0x80, 0x01, 0x31, 0x03, 0x09, 0x31, 0x82, 0x09, 0x51, 0x09, 0x31, 0x09, 0x51, 0x02, 0x09, 0x31, 0x80, 0x09, 0x51, 0x03, 0x09, 0x31, 0x06, 0x09, 0x51, 0x80, + 0x01, 0x31, 0x09, 0x09, 0x51, 0x86, 0x09, 0x31, 0x09, 0x51, 0x01, 0x51, 0x01, 0x30, 0x01, 0x31, 0x01, 0x10, 0x01, 0x31, 0x01, 0x09, 0x51, 0x81, 0x01, 0x30, 0x09, 0x31, 0x01, 0x09, 0x51, 0x80, 0x01, 0x10, 0x02, 0x09, 0x31, 0x81, 0x09, 0x51, 0x01, 0x51, 0x01, 0x01, 0x31, 0x03, 0x09, 0x51, 0x81, 0x09, 0x52, 0x01, 0x31, 0x02, 0x09, 0x51, 0x80, 0x01, 0x31, 0x01, 0x09, 0x31, 0x01, 0x09, 0x51, 0x80, 0x01, 0x31, 0x04, 0x09, 0x31, 0x01, 0x09, 0x51, 0x01, 0x09, 0x31, 0x03, 0x01, 0x31, 0x01, 0x09, 0x51, 0x01, 0x09, 0x31, 0x01, 0x09, 0x52, 0x80, 0x09, 0x32, 0x02, 0x09, 0x31, 0x01, 0x09, 0x52, 0x01, 0x09, 0x72, 0x83, 0x01, 0x31, 0x01, 0x51, 0x09, 0x51, 0x01, 0x31, 0x01, 0x09, 0x51, 0x82, 0x01, 0x10, 0x01, 0x11, 0x11, 0x72, 0x02, 0x09, 0x52, 0x05, 0x11, 0x72, 0x03, 0x11, 0x52, 0x81, 0x11, 0x72, 0x11, 0x52, 0x01, 0x11, 0x72, 0x80, 0x11, 0x52, 0x02, 0x11, 0x72, 0x01, 0x19, 0x92, 0x81, 0x19, 0xB3, 0x19, 0x93, 0x01, 0x21, 0x93, 0x01, 0x21, 0xB3, 0x80, 0x21, 0x93, 0x01, 0x21, 0xB3, 0x80, 0x29, 0xB4, 0x02, 0x29, 0xD4, 0x82, 0x31, 0xD4, 0x31, 0xF4, 0x31, 0xD4, 0x01, 0x39, 0xF4, 0x81, 0x42, 0x15, 0x41, 0xF5, 0x01, 0x49, 0xF5, 0x8F, 0x51, 0xF5, 0x59, 0xF5, 0x62, 0x15, 0x71, 0xF5, 0x79, 0xF4, 0x89, 0xF4, 0x92, 0x14, 0x99, 0xF4, 0xA1, 0xD3, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0xA9, 0xB3, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x91, 0xAA, 0x34, 0x9A, 0x34, 0x8A, 0x33, 0x7A, 0x73, 0x49, 0xF0, 0x53, 0x94, 0x9F, 0x7F, 0x66, 0xDD, + 0x4E, 0xDC, 0x46, 0xDB, 0x46, 0xBB, 0x56, 0x9B, 0x6E, 0x9C, 0x5C, 0xB7, 0x5A, 0xB2, 0x82, 0x93, 0x8A, 0x12, 0x99, 0xF3, 0x01, 0xAA, 0x14, 0x80, 0xA1, 0xB3, 0x01, 0xA9, 0xD4, 0x88, 0xAA, 0x14, 0xA2, 0x15, 0x9A, 0x35, 0x8A, 0x14, 0x82, 0x34, 0x51, 0x72, 0x41, 0x72, 0x39, 0x93, 0x31, 0x93, 0x01, 0x21, 0xB3, 0x02, 0x19, 0xB3, 0x02, 0x11, 0xB3, 0x80, 0x11, 0x93, 0x03, 0x11, 0x73, 0x01, 0x09, 0x72, 0x80, 0x09, 0x52, 0x02, 0x09, 0x51, 0x04, 0x09, 0x52, 0x81, 0x09, 0x32, 0x09, 0x31, 0x07, 0x01, 0x31, 0x80, 0x01, 0x51, 0x03, 0x01, 0x31, 0x02, 0x01, 0x11, 0x82, 0x01, 0x31, 0x01, 0x30, 0x01, 0x10, 0x02, 0x01, 0x30, 0x02, 0x01, 0x31, 0x80, 0x01, 0x11, 0x0E, 0x01, 0x31, 0x80, 0x01, 0x11, 0x0B, 0x01, 0x31, 0x82, 0x01, 0x51, 0x01, 0x31, 0x01, 0x11, 0x0B, 0x01, 0x31, 0x83, 0x01, 0x11, 0x01, 0x31, 0x01, 0x11, 0x01, 0x31, 0x02, 0x01, 0x11, 0x80, 0x01, 0x31, 0x09, 0x01, 0x11, 0x81, 0x01, 0x31, 0x01, 0x11, 0x01, 0x01, 0x31, 0x80, 0x01, 0x11, 0x08, 0x01, 0x31, 0x02, 0x01, 0x11, 0x02, 0x01, 0x31, 0x81, 0x01, 0x11, 0x01, 0x31, 0x01, 0x01, 0x11, 0x04, 0x01, 0x31, 0x0D, 0x01, 0x11, 0x80, 0x01, 0x31, 0x07, 0x01, 0x11, 0x81, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x04, 0x01, 0x11, 0x80, 0x01, 0x10, 0x01, 0x01, 0x11, 0x01, 0x01, 0x10, 0x82, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x05, 0x01, 0x10, 0x80, 0x01, 0x11, 0x02, 0x01, 0x10, 0x83, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x11, 0x00, 0xF0, 0x03, 0x01, 0x11, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x11, + 0x02, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x01, 0x01, 0x10, 0x04, 0x00, 0xF0, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x03, 0x01, 0x10, 0x01, 0x01, 0x11, 0x81, 0x01, 0x10, 0x00, 0xF0, 0x02, 0x01, 0x10, 0x0F, 0x00, 0xF0, 0x04, 0x00, 0xEF, 0x8B, 0x00, 0xF0, 0x00, 0xEF, 0x00, 0xF0, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xEF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x03, 0x00, 0xEF, 0x01, 0x01, 0x0F, 0x03, 0x00, 0xEF, 0x02, 0x00, 0xCE, 0x81, 0x00, 0xAE, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x06, 0x00, 0x8D, 0x03, 0x00, 0x8C, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x82, 0x00, 0x6D, 0x00, 0x8C, 0x00, 0x8D, 0x08, 0x00, 0xAD, 0x80, 0x00, 0xCD, 0x04, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x06, 0x00, 0xAD, 0x01, 0x00, 0xCE, 0x80, 0x00, 0xCD, 0x02, 0x00, 0xCE, 0x02, 0x00, 0xCD, 0x03, 0x00, 0xEE, 0x81, 0x00, 0xCE, 0x00, 0xEE, 0x07, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x0A, 0x00, 0xAD, 0x05, 0x00, 0xCE, 0x06, 0x00, 0xEE, 0x81, 0x00, 0xCD, 0x00, 0xED, 0x05, 0x00, 0xCD, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xCD, 0x80, 0x00, 0xEE, 0x02, 0x00, 0xCD, 0x81, 0x00, 0xEE, 0x00, 0xCE, 0x03, 0x00, 0xEE, 0x02, 0x00, 0xCE, 0x80, 0x00, 0xEE, 0x02, 0x00, 0xCE, 0x82, 0x00, 0xCD, 0x00, 0xAD, 0x00, 0xCD, 0x04, 0x00, 0xCE, 0x05, 0x00, 0xAE, 0x03, 0x00, 0xCE, 0x80, 0x00, 0xCD, 0x01, 0x00, 0xCE, 0x82, 0x00, 0xEE, 0x01, 0x0E, 0x01, 0x0F, 0x01, 0x01, 0x2F, 0x80, 0x01, 0x4F, 0x03, 0x01, 0x70, 0x81, 0x01, + 0x71, 0x01, 0x91, 0x01, 0x01, 0xB1, 0x81, 0x01, 0xB2, 0x01, 0xD2, 0x02, 0x01, 0xB2, 0x02, 0x01, 0xD2, 0x80, 0x01, 0xB3, 0x01, 0x01, 0xB2, 0x80, 0x01, 0xB3, 0x01, 0x01, 0xB2, 0x03, 0x01, 0xD2, 0x01, 0x01, 0xF2, 0x03, 0x01, 0xD2, 0x04, 0x01, 0xD3, 0x03, 0x01, 0xD2, 0x80, 0x01, 0xD3, 0x01, 0x01, 0xD2, 0x01, 0x01, 0xD3, 0x82, 0x01, 0xD2, 0x01, 0xF3, 0x01, 0xD3, 0x01, 0x01, 0xF3, 0x01, 0x01, 0xF2, 0x02, 0x01, 0xD2, 0x80, 0x01, 0xF2, 0x01, 0x01, 0xF3, 0x80, 0x01, 0xF2, 0x09, 0x01, 0xD2, 0x82, 0x01, 0xF2, 0x01, 0xD2, 0x01, 0xF2, 0x04, 0x01, 0xD2, 0x80, 0x01, 0xF2, 0x01, 0x01, 0xF3, 0x85, 0x01, 0xF2, 0x01, 0xD2, 0x01, 0xF3, 0x01, 0xF2, 0x01, 0xF3, 0x01, 0xF2, 0x01, 0x01, 0xF3, 0x01, 0x01, 0xF2, 0x01, 0x02, 0x13, 0x01, 0x01, 0xF2, 0x83, 0x01, 0xD2, 0x01, 0xF3, 0x02, 0x33, 0x02, 0x13, 0x01, 0x01, 0xF3, 0x02, 0x01, 0xF2, 0x81, 0x01, 0xF3, 0x01, 0xD2, 0x02, 0x01, 0xF2, 0x01, 0x02, 0x13, 0x80, 0x01, 0xF2, 0x03, 0x01, 0xD2, 0x81, 0x01, 0xF2, 0x02, 0x12, 0x02, 0x02, 0x13, 0x01, 0x01, 0xF3, 0x01, 0x01, 0xD2, 0x80, 0x01, 0xF3, 0x04, 0x01, 0xF2, 0x80, 0x01, 0xD2, 0x04, 0x01, 0xF2, 0x01, 0x01, 0xF3, 0x02, 0x01, 0xF2, 0x80, 0x01, 0xF3, 0x04, 0x01, 0xF2, 0x87, 0x02, 0x13, 0x01, 0xF2, 0x01, 0xF3, 0x02, 0x13, 0x01, 0xF3, 0x01, 0xF2, 0x02, 0x12, 0x01, 0xF2, 0x01, 0x02, 0x12, 0x87, 0x02, 0x13, 0x01, 0xF2, 0x02, 0x33, 0x0A, 0x54, 0x02, 0x33, 0x01, 0xD2, 0x01, 0xF3, 0x01, 0xF2, 0x01, 0x02, 0x12, 0x80, 0x02, 0x13, 0x01, 0x01, 0xF2, 0x84, 0x02, + 0x13, 0x0A, 0x33, 0x02, 0x13, 0x0A, 0x33, 0x01, 0xF2, 0x02, 0x02, 0x12, 0x80, 0x01, 0xF2, 0x01, 0x02, 0x12, 0x80, 0x02, 0x13, 0x01, 0x0A, 0x33, 0x83, 0x01, 0xF2, 0x02, 0x12, 0x01, 0xF2, 0x0A, 0x12, 0x01, 0x0A, 0x13, 0x80, 0x01, 0xF2, 0x02, 0x02, 0x12, 0x82, 0x01, 0xF2, 0x02, 0x12, 0x01, 0xF2, 0x01, 0x02, 0x12, 0x81, 0x0A, 0x13, 0x01, 0xF2, 0x01, 0x02, 0x12, 0x82, 0x0A, 0x13, 0x01, 0xF2, 0x0A, 0x13, 0x03, 0x02, 0x12, 0x80, 0x01, 0xF2, 0x02, 0x0A, 0x12, 0x80, 0x02, 0x12, 0x01, 0x0A, 0x12, 0x81, 0x0A, 0x32, 0x0A, 0x12, 0x02, 0x0A, 0x13, 0x80, 0x0A, 0x12, 0x03, 0x0A, 0x13, 0x80, 0x0A, 0x33, 0x01, 0x0A, 0x13, 0x80, 0x01, 0xF2, 0x01, 0x0A, 0x13, 0x02, 0x0A, 0x33, 0x01, 0x0A, 0x12, 0x01, 0x0A, 0x33, 0x82, 0x02, 0x12, 0x0A, 0x53, 0x0A, 0x33, 0x01, 0x0A, 0x53, 0x07, 0x0A, 0x33, 0x82, 0x0A, 0x53, 0x0A, 0x32, 0x0A, 0x33, 0x02, 0x0A, 0x32, 0x83, 0x0A, 0x33, 0x0A, 0x12, 0x0A, 0x33, 0x0A, 0x32, 0x03, 0x0A, 0x33, 0x85, 0x12, 0x33, 0x0A, 0x33, 0x12, 0x53, 0x0A, 0x32, 0x0A, 0x33, 0x0A, 0x12, 0x03, 0x12, 0x33, 0x89, 0x12, 0x53, 0x12, 0x33, 0x12, 0x53, 0x12, 0x33, 0x12, 0x53, 0x12, 0x33, 0x12, 0x53, 0x12, 0x33, 0x12, 0x53, 0x0A, 0x33, 0x01, 0x12, 0x33, 0x01, 0x0A, 0x12, 0x80, 0x12, 0x32, 0x02, 0x12, 0x33, 0x02, 0x12, 0x53, 0x02, 0x0A, 0x33, 0x89, 0x12, 0x53, 0x0A, 0x53, 0x12, 0x53, 0x0A, 0x33, 0x12, 0x53, 0x12, 0x33, 0x12, 0x53, 0x12, 0x33, 0x12, 0x53, 0x12, 0x12, 0x01, 0x12, 0x33, 0x83, 0x12, 0x53, 0x0A, 0x12, 0x12, 0x53, 0x12, 0x33, + 0x02, 0x12, 0x53, 0x82, 0x0A, 0x33, 0x12, 0x53, 0x12, 0x33, 0x03, 0x12, 0x53, 0x80, 0x12, 0x73, 0x06, 0x12, 0x53, 0x80, 0x12, 0x73, 0x02, 0x12, 0x53, 0x88, 0x12, 0x73, 0x12, 0x53, 0x12, 0x73, 0x12, 0x53, 0x12, 0x73, 0x12, 0x53, 0x12, 0x73, 0x0A, 0x53, 0x12, 0x73, 0x01, 0x0A, 0x53, 0x01, 0x0A, 0x33, 0x8E, 0x0A, 0x12, 0x0A, 0x33, 0x12, 0x53, 0x12, 0x33, 0x01, 0xB1, 0x0A, 0x12, 0x12, 0x33, 0x12, 0x53, 0x12, 0x74, 0x0A, 0x33, 0x02, 0x12, 0x12, 0x53, 0x12, 0x74, 0x0A, 0x33, 0x01, 0xD1, 0x01, 0x0A, 0x12, 0x85, 0x12, 0x13, 0x0A, 0x12, 0x0A, 0x13, 0x0A, 0x12, 0x0A, 0x33, 0x0A, 0x12, 0x02, 0x0A, 0x33, 0x85, 0x0A, 0x32, 0x0A, 0x53, 0x0A, 0x33, 0x0A, 0x53, 0x0A, 0x33, 0x12, 0x53, 0x05, 0x0A, 0x33, 0x01, 0x0A, 0x13, 0x80, 0x0A, 0x12, 0x02, 0x0A, 0x33, 0x80, 0x0A, 0x12, 0x02, 0x0A, 0x33, 0x80, 0x0A, 0x13, 0x02, 0x0A, 0x33, 0x80, 0x0A, 0x12, 0x05, 0x0A, 0x33, 0x81, 0x12, 0x33, 0x0A, 0x12, 0x01, 0x0A, 0x33, 0x81, 0x12, 0x33, 0x09, 0xF2, 0x02, 0x0A, 0x12, 0x83, 0x0A, 0x32, 0x0A, 0x33, 0x0A, 0x12, 0x0A, 0x33, 0x01, 0x0A, 0x12, 0x80, 0x0A, 0x13, 0x01, 0x12, 0x54, 0x88, 0x0A, 0x33, 0x0A, 0x12, 0x12, 0x53, 0x12, 0x33, 0x0A, 0x33, 0x09, 0xF2, 0x0A, 0x13, 0x0A, 0x33, 0x0A, 0x53, 0x01, 0x0A, 0x33, 0x81, 0x0A, 0x12, 0x0A, 0x13, 0x01, 0x0A, 0x33, 0x02, 0x0A, 0x13, 0x82, 0x0A, 0x33, 0x02, 0x12, 0x0A, 0x13, 0x02, 0x0A, 0x12, 0x82, 0x0A, 0x13, 0x01, 0xF2, 0x02, 0x12, 0x04, 0x01, 0xF2, 0x02, 0x0A, 0x13, 0x82, 0x01, 0xF2, 0x0A, 0x12, 0x02, 0x12, + 0x01, 0x0A, 0x13, 0x86, 0x0A, 0x33, 0x0A, 0x13, 0x0A, 0x33, 0x0A, 0x13, 0x0A, 0x33, 0x0A, 0x13, 0x0A, 0x33, 0x01, 0x0A, 0x13, 0x81, 0x09, 0xF3, 0x0A, 0x13, 0x01, 0x0A, 0x54, 0x01, 0x0A, 0x33, 0x80, 0x02, 0x12, 0x02, 0x0A, 0x33, 0x01, 0x01, 0xF2, 0x88, 0x01, 0xD2, 0x0A, 0x13, 0x12, 0x54, 0x0A, 0x33, 0x01, 0xD2, 0x0A, 0x13, 0x12, 0x34, 0x0A, 0x34, 0x09, 0xF3, 0x02, 0x0A, 0x13, 0x80, 0x09, 0xF2, 0x01, 0x09, 0xF3, 0x82, 0x0A, 0x13, 0x12, 0x13, 0x12, 0x33, 0x01, 0x12, 0x13, 0x80, 0x0A, 0x12, 0x01, 0x12, 0x13, 0x85, 0x12, 0x33, 0x12, 0x13, 0x12, 0x33, 0x12, 0x13, 0x1A, 0x33, 0x11, 0xF2, 0x02, 0x1A, 0x13, 0x80, 0x19, 0xF3, 0x01, 0x1A, 0x13, 0x02, 0x22, 0x34, 0x81, 0x1A, 0x13, 0x22, 0x33, 0x01, 0x22, 0x13, 0x81, 0x21, 0xF2, 0x2A, 0x13, 0x01, 0x29, 0xF3, 0x01, 0x29, 0xB2, 0x8B, 0x29, 0x71, 0x39, 0x92, 0x41, 0x71, 0x51, 0x91, 0x61, 0x71, 0x82, 0x34, 0x92, 0x14, 0x9A, 0x14, 0xA1, 0xF4, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0x02, 0xA9, 0xD3, 0xA6, 0xA9, 0xF3, 0xB2, 0x14, 0xA9, 0xF3, 0xA2, 0x13, 0x92, 0x13, 0x82, 0x32, 0x6A, 0x53, 0x29, 0x8E, 0x7D, 0x9B, 0x87, 0x1F, 0x56, 0x7B, 0x4E, 0xBB, 0x4E, 0xDC, 0x4E, 0x9B, 0x66, 0x7C, 0x65, 0x39, 0x52, 0xF2, 0x72, 0x72, 0x8A, 0x12, 0x9A, 0x13, 0xA1, 0xF3, 0xA9, 0xF4, 0xA1, 0xB3, 0xA9, 0xB3, 0xA9, 0xF4, 0xAA, 0x14, 0xA1, 0xF4, 0xA2, 0x35, 0x8A, 0x14, 0x79, 0xF3, 0x41, 0x30, 0x20, 0xCE, 0x10, 0xEF, 0x11, 0x50, 0x09, 0x71, 0x09, 0xB1, 0x01, 0x91, 0x01, 0xB1, 0x01, 0x91, 0x01, 0x01, 0xB1, 0x80, + 0x01, 0xD2, 0x06, 0x01, 0xB2, 0x01, 0x01, 0xB1, 0x01, 0x01, 0xB2, 0x03, 0x01, 0xD2, 0x03, 0x01, 0xB2, 0x84, 0x01, 0x92, 0x01, 0xB2, 0x01, 0xD2, 0x01, 0xF2, 0x01, 0xF3, 0x02, 0x01, 0xD2, 0x81, 0x01, 0xF3, 0x01, 0xD3, 0x02, 0x01, 0xD2, 0x80, 0x01, 0xB2, 0x01, 0x01, 0xD2, 0x01, 0x01, 0xF2, 0x10, 0x01, 0xD2, 0x01, 0x01, 0xF3, 0x03, 0x01, 0xF2, 0x02, 0x01, 0xD2, 0x83, 0x01, 0xF2, 0x01, 0xD2, 0x01, 0xD3, 0x01, 0xD2, 0x02, 0x01, 0xD3, 0x04, 0x01, 0xD2, 0x01, 0x01, 0xB2, 0x83, 0x01, 0xD2, 0x01, 0xD3, 0x01, 0xF3, 0x01, 0xD3, 0x03, 0x01, 0xB2, 0x80, 0x01, 0xD3, 0x06, 0x01, 0xD2, 0x80, 0x01, 0xD3, 0x04, 0x01, 0xD2, 0x01, 0x01, 0xD3, 0x82, 0x01, 0xB3, 0x01, 0xB2, 0x01, 0xB3, 0x01, 0x01, 0xD3, 0x01, 0x01, 0xD2, 0x01, 0x01, 0xD3, 0x02, 0x01, 0xB2, 0x80, 0x01, 0xD2, 0x01, 0x01, 0xB2, 0x01, 0x01, 0xD2, 0x04, 0x01, 0xB2, 0x02, 0x01, 0xD3, 0x83, 0x01, 0xB2, 0x01, 0xD3, 0x01, 0xB2, 0x01, 0xD2, 0x03, 0x01, 0xB2, 0x04, 0x01, 0x92, 0x02, 0x01, 0xB2, 0x02, 0x01, 0x92, 0x01, 0x01, 0x91, 0x81, 0x01, 0x92, 0x01, 0x72, 0x01, 0x01, 0x92, 0x04, 0x01, 0xB2, 0x80, 0x01, 0x92, 0x01, 0x01, 0x91, 0x01, 0x01, 0x92, 0x05, 0x01, 0xB2, 0x80, 0x01, 0x92, 0x01, 0x01, 0xB2, 0x80, 0x01, 0x92, 0x01, 0x01, 0x71, 0x81, 0x01, 0x91, 0x01, 0x71, 0x01, 0x01, 0x91, 0x03, 0x01, 0x92, 0x02, 0x01, 0x91, 0x02, 0x01, 0x71, 0x82, 0x01, 0x92, 0x01, 0x71, 0x01, 0x72, 0x0C, 0x01, 0x71, 0x80, 0x01, 0x51, 0x01, 0x01, 0x71, 0x81, 0x01, 0x51, 0x01, 0x71, 0x02, 0x01, 0x51, 0x02, + 0x01, 0x71, 0x01, 0x01, 0x91, 0x02, 0x01, 0x71, 0x80, 0x01, 0x91, 0x02, 0x01, 0x71, 0x80, 0x01, 0x91, 0x03, 0x01, 0x71, 0x80, 0x01, 0x51, 0x02, 0x01, 0x71, 0x85, 0x01, 0x51, 0x01, 0x91, 0x01, 0x71, 0x01, 0x91, 0x01, 0x71, 0x01, 0x91, 0x04, 0x01, 0x71, 0x80, 0x01, 0x51, 0x01, 0x01, 0x50, 0x02, 0x01, 0x51, 0x82, 0x01, 0x71, 0x01, 0x51, 0x01, 0x71, 0x01, 0x01, 0x51, 0x02, 0x01, 0x70, 0x01, 0x01, 0x71, 0x82, 0x01, 0x91, 0x01, 0x70, 0x01, 0x90, 0x01, 0x01, 0x70, 0x88, 0x01, 0x50, 0x01, 0x70, 0x4C, 0xDD, 0x55, 0x1E, 0x4C, 0xDD, 0x4C, 0xDE, 0x54, 0xFE, 0x55, 0x1E, 0x54, 0xFE, 0x01, 0x55, 0x1E, 0x81, 0x54, 0xFE, 0x55, 0x1E, 0x01, 0x5D, 0x1E, 0x83, 0x5D, 0x3E, 0x5D, 0x1E, 0x55, 0x1E, 0x54, 0xFD, 0x01, 0x54, 0xDD, 0x80, 0x4C, 0xDC, 0x01, 0x4C, 0xBC, 0x84, 0x4C, 0xDC, 0x4C, 0xBC, 0x4C, 0xDC, 0x4C, 0xBC, 0x54, 0xFD, 0x01, 0x54, 0xDD, 0x80, 0x54, 0xFD, 0x01, 0x54, 0xDD, 0x82, 0x54, 0xDC, 0x4C, 0xBC, 0x4C, 0x9C, 0x01, 0x4C, 0xBC, 0x85, 0x4C, 0xDD, 0x54, 0xFD, 0x54, 0xDD, 0x4C, 0xFD, 0x54, 0xFD, 0x54, 0xDD, 0x01, 0x4C, 0xDD, 0x01, 0x54, 0xFD, 0x82, 0x54, 0xDD, 0x54, 0xFD, 0x5C, 0xFD, 0x01, 0x54, 0xFD, 0x81, 0x54, 0xDD, 0x54, 0xFD, 0x01, 0x54, 0xDD, 0x03, 0x54, 0xFD, 0x01, 0x55, 0x1D, 0x84, 0x54, 0xFD, 0x5D, 0x3E, 0x55, 0x1E, 0x5D, 0x1E, 0x55, 0x1D, 0x01, 0x54, 0xFD, 0x82, 0x5D, 0x1E, 0x55, 0x1E, 0x5D, 0x1E, 0x02, 0x55, 0x1E, 0x80, 0x5D, 0x3E, 0x02, 0x55, 0x1E, 0x80, 0x54, 0xFD, 0x01, 0x55, 0x1E, 0x02, 0x54, 0xFD, 0x80, 0x54, 0xDD, + 0x01, 0x54, 0xFD, 0x01, 0x5D, 0x1D, 0x02, 0x5D, 0x3E, 0x80, 0x55, 0x1E, 0x01, 0x5D, 0x3E, 0x03, 0x55, 0x1D, 0x83, 0x55, 0x3E, 0x5D, 0x3E, 0x5D, 0x5F, 0x5D, 0x3E, 0x02, 0x5D, 0x5E, 0x80, 0x65, 0x7E, 0x06, 0x5D, 0x5E, 0x81, 0x65, 0x5E, 0x5D, 0x5E, 0x01, 0x65, 0x5E, 0x80, 0x65, 0x7E, 0x06, 0x65, 0x5E, 0x01, 0x5D, 0x5E, 0x8C, 0x65, 0x5E, 0x5D, 0x5E, 0x5D, 0x3E, 0x5D, 0x1E, 0x5D, 0x3E, 0x5D, 0x1E, 0x65, 0x5E, 0x5D, 0x3E, 0x65, 0x5E, 0x65, 0x7E, 0x65, 0x7F, 0x65, 0x7E, 0x65, 0x7F, 0x01, 0x5D, 0x5E, 0x01, 0x5D, 0x3E, 0x86, 0x65, 0x5E, 0x5D, 0x5E, 0x65, 0x7E, 0x5D, 0x7E, 0x5D, 0x3D, 0x55, 0x1D, 0x55, 0x3D, 0x02, 0x5D, 0x5E, 0x86, 0x5D, 0x3D, 0x55, 0x1D, 0x54, 0xFD, 0x4C, 0xFD, 0x55, 0x3D, 0x55, 0x5E, 0x55, 0x7E, 0x01, 0x55, 0x9F, 0x01, 0x5D, 0xBF, 0x02, 0x55, 0xBF, 0x83, 0x55, 0x9F, 0x55, 0xBF, 0x55, 0x9F, 0x55, 0xBF, 0x02, 0x55, 0x9F, 0x80, 0x55, 0xBF, 0x02, 0x55, 0x9F, 0x81, 0x55, 0xBF, 0x55, 0x9F, 0x05, 0x55, 0xBF, 0x02, 0x55, 0xDF, 0x01, 0x55, 0xBF, 0x81, 0x55, 0x9F, 0x55, 0xBF, 0x02, 0x55, 0x9F, 0x0A, 0x55, 0xBF, 0x80, 0x4D, 0x9F, 0x01, 0x55, 0xBF, 0x07, 0x55, 0xDF, 0x01, 0x55, 0xBF, 0x80, 0x55, 0xDF, 0x01, 0x5D, 0xFF, 0x82, 0x55, 0xBF, 0x5D, 0xDF, 0x55, 0xDF, 0x03, 0x5D, 0xDF, 0x82, 0x5D, 0xFF, 0x5D, 0xDF, 0x5D, 0xFF, 0x0C, 0x5D, 0xDF, 0x81, 0x5D, 0xFF, 0x5D, 0xDF, 0x08, 0x5D, 0xFF, 0x83, 0x55, 0xDF, 0x5D, 0xFF, 0x55, 0xDF, 0x5D, 0xDF, 0x01, 0x5D, 0xFF, 0x81, 0x5D, 0xDF, 0x65, 0xFF, 0x03, 0x5D, 0xDF, 0x85, 0x5D, 0xFF, + 0x66, 0x1F, 0x5D, 0xBF, 0x55, 0xBF, 0x5D, 0xFF, 0x66, 0x1F, 0x01, 0x66, 0x3F, 0x01, 0x5D, 0xFF, 0x01, 0x5D, 0xDF, 0x04, 0x5D, 0xFF, 0x02, 0x66, 0x1F, 0x80, 0x65, 0xFF, 0x01, 0x66, 0x1F, 0x80, 0x66, 0x3F, 0x02, 0x66, 0x1F, 0x80, 0x66, 0x3F, 0x04, 0x66, 0x1F, 0x80, 0x66, 0x3F, 0x04, 0x66, 0x1F, 0x87, 0x66, 0x3F, 0x66, 0x1F, 0x66, 0x3F, 0x66, 0x1F, 0x66, 0x3F, 0x66, 0x1F, 0x66, 0x3F, 0x66, 0x1F, 0x01, 0x66, 0x3F, 0x80, 0x6E, 0x3F, 0x01, 0x66, 0x3F, 0x80, 0x5D, 0xFF, 0x01, 0x65, 0xFF, 0x80, 0x66, 0x1F, 0x01, 0x66, 0x3F, 0x02, 0x66, 0x1F, 0x80, 0x65, 0xFF, 0x01, 0x66, 0x1F, 0x01, 0x66, 0x3F, 0x80, 0x6E, 0x3F, 0x02, 0x6E, 0x5F, 0x80, 0x66, 0x5F, 0x02, 0x66, 0x1F, 0x81, 0x6E, 0x3F, 0x6E, 0x5F, 0x01, 0x6E, 0x3F, 0x02, 0x6E, 0x1F, 0x03, 0x6E, 0x3F, 0x80, 0x6E, 0x5F, 0x02, 0x6E, 0x3F, 0x80, 0x6E, 0x5F, 0x01, 0x6E, 0x3F, 0x01, 0x6E, 0x5F, 0x80, 0x6E, 0x3F, 0x02, 0x6E, 0x5F, 0x80, 0x6E, 0x3F, 0x01, 0x6E, 0x5F, 0x06, 0x76, 0x5F, 0x80, 0x6E, 0x5F, 0x02, 0x76, 0x5F, 0x81, 0x6E, 0x3F, 0x76, 0x5F, 0x01, 0x76, 0x3F, 0x02, 0x6E, 0x3F, 0x80, 0x6E, 0x5F, 0x03, 0x6E, 0x3F, 0x01, 0x76, 0x5F, 0x03, 0x6E, 0x3F, 0x80, 0x6E, 0x5F, 0x06, 0x76, 0x5F, 0x01, 0x76, 0x3F, 0x06, 0x76, 0x5F, 0x0D, 0x76, 0x7F, 0x80, 0x7E, 0x9F, 0x05, 0x76, 0x7F, 0x80, 0x76, 0x5F, 0x02, 0x76, 0x7F, 0x83, 0x76, 0x5F, 0x76, 0x7F, 0x76, 0x5F, 0x76, 0x7F, 0x02, 0x76, 0x5F, 0x82, 0x7E, 0x7F, 0x76, 0x5F, 0x76, 0x7F, 0x01, 0x76, 0x5F, 0x01, 0x6E, 0x3F, 0x89, 0x76, 0x3F, 0x76, + 0x5F, 0x6E, 0x3F, 0x76, 0x5F, 0x6E, 0x5F, 0x76, 0x5F, 0x76, 0x7F, 0x6E, 0x7F, 0x76, 0x7F, 0x76, 0x5F, 0x01, 0x76, 0x7F, 0x80, 0x7E, 0x9F, 0x02, 0x7E, 0x7F, 0x05, 0x7E, 0x9F, 0x01, 0x76, 0x7F, 0x1B, 0x7E, 0x9F, 0x80, 0x76, 0x7F, 0x01, 0x7E, 0x9F, 0x80, 0x7E, 0xBF, 0x01, 0x76, 0x7F, 0x01, 0x7E, 0x7F, 0x81, 0x76, 0x5F, 0x7E, 0x5F, 0x01, 0x7E, 0x7F, 0x01, 0x76, 0x5F, 0x81, 0x66, 0x1F, 0x6E, 0x3F, 0x01, 0x76, 0x7F, 0x02, 0x76, 0x5F, 0x81, 0x7E, 0x5F, 0x76, 0x5F, 0x01, 0x7E, 0x7F, 0x01, 0x76, 0x7F, 0x02, 0x7E, 0x9F, 0x80, 0x76, 0x7F, 0x03, 0x7E, 0x9F, 0x80, 0x76, 0x9F, 0x02, 0x7E, 0x9F, 0x84, 0x76, 0x9F, 0x76, 0x7F, 0x7E, 0x9F, 0x76, 0x7F, 0x76, 0x9F, 0x02, 0x76, 0x7F, 0x88, 0x76, 0x9F, 0x76, 0x7F, 0x76, 0x9F, 0x76, 0x7F, 0x76, 0x9F, 0x76, 0x7F, 0x7E, 0x9F, 0x76, 0x7F, 0x7E, 0x9F, 0x01, 0x7E, 0x7F, 0x83, 0x76, 0x7F, 0x76, 0x9F, 0x76, 0x7F, 0x76, 0x9F, 0x05, 0x76, 0x7F, 0x02, 0x76, 0x5F, 0x81, 0x76, 0x7F, 0x76, 0x5F, 0x03, 0x76, 0x7F, 0x80, 0x6E, 0x7F, 0x01, 0x66, 0x3F, 0x01, 0x6E, 0x5F, 0x83, 0x6E, 0x3F, 0x6E, 0x5F, 0x6E, 0x3F, 0x76, 0x5F, 0x03, 0x6E, 0x3F, 0x80, 0x6E, 0x5F, 0x02, 0x76, 0x5F, 0x80, 0x6E, 0x5F, 0x02, 0x76, 0x5F, 0x80, 0x6E, 0x5F, 0x01, 0x76, 0x5F, 0x80, 0x76, 0x7F, 0x01, 0x76, 0x5F, 0x82, 0x6E, 0x5F, 0x76, 0x5F, 0x6E, 0x5F, 0x02, 0x76, 0x5F, 0x02, 0x6E, 0x5F, 0x04, 0x76, 0x5F, 0x80, 0x6E, 0x3F, 0x01, 0x76, 0x5F, 0x80, 0x76, 0x7F, 0x02, 0x76, 0x5F, 0x80, 0x76, 0x7F, 0x03, 0x76, 0x5F, 0x02, 0x6E, 0x3F, 0x81, + 0x6E, 0x5F, 0x6E, 0x3F, 0x04, 0x6E, 0x5F, 0x04, 0x6E, 0x3F, 0x8B, 0x76, 0x3F, 0x6E, 0x1F, 0x6D, 0xFF, 0x6E, 0x1F, 0x6E, 0x3F, 0x6E, 0x1F, 0x76, 0x3F, 0x6E, 0x1F, 0x76, 0x3F, 0x6E, 0x3F, 0x76, 0x3F, 0x6E, 0x3F, 0x05, 0x76, 0x3F, 0x88, 0x7E, 0x5F, 0x76, 0x3F, 0x7E, 0x5F, 0x7E, 0x3F, 0x7E, 0x5F, 0x7E, 0x3F, 0x7E, 0x5F, 0x7E, 0x3F, 0x7E, 0x5F, 0x01, 0x86, 0x5F, 0x80, 0x86, 0x3F, 0x05, 0x86, 0x5F, 0x81, 0x8E, 0x7F, 0x8E, 0x5F, 0x01, 0x8E, 0x7F, 0x82, 0x96, 0x7F, 0x96, 0x5F, 0x96, 0x7F, 0x01, 0x9E, 0x5F, 0x8B, 0x9E, 0x3F, 0xA6, 0x3F, 0xAE, 0x3F, 0xB6, 0x3F, 0xB5, 0xFF, 0xA4, 0xBC, 0x59, 0xB1, 0x71, 0xF3, 0x92, 0x34, 0x9A, 0x14, 0xA2, 0x14, 0xA1, 0xF3, 0x01, 0xA9, 0xF3, 0x97, 0xB1, 0xF4, 0xA9, 0xD3, 0xA9, 0xB3, 0xA9, 0xD3, 0xA9, 0xF3, 0xA1, 0xF3, 0xA2, 0x33, 0x92, 0x53, 0x82, 0x53, 0x5A, 0x31, 0x21, 0xEE, 0x96, 0x9F, 0x6E, 0x9D, 0x56, 0x9C, 0x4E, 0x9B, 0x56, 0xBB, 0x66, 0x7B, 0x7E, 0x1C, 0x52, 0xF2, 0x6A, 0x72, 0x82, 0x12, 0x9A, 0x13, 0xA1, 0xF3, 0xA1, 0xD3, 0x01, 0xA9, 0xF4, 0x8B, 0xA9, 0xB3, 0xA9, 0xF4, 0xA1, 0xF4, 0x99, 0xF4, 0x92, 0x34, 0x69, 0xB1, 0xBD, 0x3E, 0xBE, 0x1F, 0x95, 0xDF, 0x85, 0xDF, 0x7D, 0xFF, 0x6D, 0xDF, 0x01, 0x6D, 0xFF, 0x01, 0x6E, 0x1F, 0x80, 0x66, 0x1F, 0x01, 0x6E, 0x1F, 0x80, 0x6D, 0xFF, 0x01, 0x65, 0xFF, 0x80, 0x65, 0xDF, 0x01, 0x65, 0xFF, 0x02, 0x66, 0x1F, 0x81, 0x5D, 0xDF, 0x55, 0xDF, 0x02, 0x55, 0xBF, 0x02, 0x5D, 0xDF, 0x80, 0x5D, 0xBF, 0x02, 0x5D, 0xDF, 0x01, 0x5D, 0xFF, 0x01, 0x55, 0xBF, 0x85, + 0x5D, 0xDF, 0x5D, 0xFF, 0x5D, 0xDF, 0x5D, 0xFF, 0x5D, 0xDF, 0x5D, 0xFF, 0x02, 0x5D, 0xDF, 0x80, 0x5D, 0xFF, 0x01, 0x55, 0xDF, 0x81, 0x55, 0xBF, 0x55, 0xDF, 0x01, 0x5D, 0xDF, 0x87, 0x55, 0xDF, 0x5D, 0xDF, 0x55, 0xBF, 0x5D, 0xDF, 0x55, 0xDF, 0x5D, 0xDF, 0x55, 0xBF, 0x5D, 0xDF, 0x02, 0x55, 0xDF, 0x84, 0x5D, 0xDF, 0x55, 0xDF, 0x5D, 0xDF, 0x55, 0xBF, 0x55, 0xDF, 0x01, 0x5D, 0xFF, 0x01, 0x55, 0xDF, 0x81, 0x55, 0xBF, 0x55, 0xDF, 0x01, 0x55, 0xBF, 0x80, 0x4D, 0xBF, 0x02, 0x55, 0xBF, 0x01, 0x4D, 0xBF, 0x02, 0x4D, 0x9F, 0x80, 0x4D, 0xBF, 0x0A, 0x4D, 0x9F, 0x80, 0x55, 0xBF, 0x01, 0x4D, 0xBF, 0x02, 0x4D, 0x9F, 0x81, 0x55, 0xBF, 0x4D, 0xBF, 0x04, 0x55, 0xBF, 0x02, 0x4D, 0x9F, 0x82, 0x55, 0x9F, 0x4D, 0x9F, 0x55, 0x9F, 0x03, 0x4D, 0x9F, 0x02, 0x4D, 0x7F, 0x80, 0x55, 0x7F, 0x05, 0x4D, 0x7F, 0x81, 0x4D, 0x5F, 0x4D, 0x7F, 0x01, 0x45, 0x5E, 0x01, 0x45, 0x7F, 0x01, 0x4D, 0x9F, 0x82, 0x45, 0x7F, 0x4D, 0x9F, 0x45, 0x7F, 0x01, 0x4D, 0x7F, 0x80, 0x4D, 0x9F, 0x01, 0x4D, 0x7F, 0x01, 0x4D, 0x5F, 0x82, 0x4D, 0x5E, 0x45, 0x3E, 0x45, 0x5E, 0x08, 0x45, 0x3E, 0x80, 0x45, 0x5E, 0x03, 0x45, 0x5F, 0x83, 0x4D, 0x7F, 0x45, 0x3E, 0x4D, 0x5F, 0x45, 0x5E, 0x03, 0x4D, 0x7F, 0x83, 0x45, 0x7F, 0x45, 0x5F, 0x45, 0x7F, 0x45, 0x5F, 0x03, 0x45, 0x5E, 0x80, 0x4D, 0x7F, 0x01, 0x4D, 0x5E, 0x81, 0x45, 0x5E, 0x45, 0x3E, 0x01, 0x45, 0x5E, 0x81, 0x45, 0x3E, 0x45, 0x5E, 0x07, 0x45, 0x3E, 0x01, 0x3D, 0x1D, 0x01, 0x3C, 0xFD, 0x02, 0x3D, 0x1D, 0x80, 0x3D, 0x3E, 0x01, 0x45, + 0x3E, 0x01, 0x3D, 0x3E, 0x81, 0x45, 0x3E, 0x45, 0x1E, 0x01, 0x45, 0x1D, 0x81, 0x45, 0x1E, 0x45, 0x1D, 0x01, 0x3C, 0xFD, 0x01, 0x3C, 0xDD, 0x01, 0x3C, 0xFD, 0x01, 0x3D, 0x1E, 0x01, 0x3D, 0x3E, 0x8A, 0x3D, 0x1D, 0x3D, 0x3E, 0x45, 0x3E, 0x45, 0x5E, 0x45, 0x3E, 0x45, 0x5E, 0x45, 0x3E, 0x45, 0x5E, 0x45, 0x3F, 0x45, 0x3E, 0x45, 0x1E, 0x01, 0x45, 0x3E, 0x03, 0x45, 0x1E, 0x04, 0x45, 0x3E, 0x84, 0x45, 0x1E, 0x45, 0x3E, 0x45, 0x1E, 0x45, 0x3E, 0x45, 0x1E, 0x04, 0x45, 0x3E, 0x85, 0x3D, 0x1E, 0x45, 0x3E, 0x3C, 0xFD, 0x3D, 0x1E, 0x3C, 0xFD, 0x3D, 0x1E, 0x02, 0x45, 0x3E, 0x01, 0x45, 0x5E, 0x80, 0x45, 0x7F, 0x02, 0x45, 0x5E, 0x80, 0x45, 0x3E, 0x01, 0x3D, 0x1D, 0x80, 0x3D, 0x5F, 0x05, 0x3D, 0x3F, 0x85, 0x3D, 0x5F, 0x45, 0x7F, 0x45, 0x5F, 0x45, 0x7F, 0x45, 0x5F, 0x4D, 0x9F, 0x01, 0x45, 0x7F, 0x03, 0x4D, 0x9F, 0x80, 0x4D, 0xBF, 0x01, 0x4D, 0xDF, 0x80, 0x55, 0xDF, 0x01, 0x55, 0xFF, 0x81, 0x4D, 0xBF, 0x4D, 0x9F, 0x02, 0x45, 0x7F, 0x01, 0x4D, 0xBF, 0x81, 0x55, 0xDF, 0x4D, 0xBF, 0x02, 0x4D, 0x9F, 0x01, 0x45, 0x7F, 0x02, 0x3D, 0x5E, 0x83, 0x3D, 0x5F, 0x45, 0x7F, 0x45, 0x9F, 0x4D, 0x9F, 0x01, 0x4D, 0xBF, 0x08, 0x55, 0xBF, 0x04, 0x4D, 0xBF, 0x01, 0x4D, 0x9F, 0x01, 0x4D, 0xBF, 0x80, 0x4D, 0x9F, 0x01, 0x45, 0x9F, 0x01, 0x45, 0x7F, 0x84, 0x4D, 0x9F, 0x4D, 0xBF, 0x4D, 0x9F, 0x4D, 0xBF, 0x45, 0x9F, 0x07, 0x4D, 0x9F, 0x01, 0x4D, 0xBF, 0x83, 0x55, 0xDF, 0x55, 0xFF, 0x56, 0x1F, 0x55, 0xFF, 0x02, 0x4D, 0xDF, 0x81, 0x4D, 0xBF, 0x4D, 0xDF, 0x01, 0x55, + 0xFF, 0x81, 0x4D, 0xDF, 0x4D, 0xBF, 0x01, 0x45, 0x9F, 0x01, 0x45, 0x7F, 0x01, 0x45, 0x9F, 0x80, 0x4D, 0xBF, 0x01, 0x4D, 0xDF, 0x81, 0x55, 0xDF, 0x55, 0xFF, 0x02, 0x55, 0xDF, 0x02, 0x55, 0xFF, 0x80, 0x55, 0xDF, 0x01, 0x55, 0xFF, 0x01, 0x55, 0xDF, 0x01, 0x55, 0xFF, 0x04, 0x55, 0xDF, 0x02, 0x55, 0xFF, 0x03, 0x55, 0xDF, 0x80, 0x5D, 0xFF, 0x02, 0x5E, 0x1F, 0x01, 0x55, 0xFF, 0x01, 0x56, 0x1F, 0x81, 0x55, 0xFF, 0x56, 0x1F, 0x06, 0x5E, 0x3F, 0x02, 0x56, 0x1F, 0x80, 0x55, 0xFF, 0x01, 0x56, 0x1F, 0x01, 0x55, 0xFF, 0x02, 0x4D, 0xFF, 0x81, 0x4E, 0x1F, 0x4D, 0xFF, 0x02, 0x4E, 0x1F, 0x01, 0x46, 0x1F, 0x04, 0x45, 0xFF, 0x0B, 0x4E, 0x1F, 0x01, 0x4E, 0x3F, 0x01, 0x4E, 0x1F, 0x80, 0x4E, 0x3F, 0x01, 0x46, 0x1F, 0x80, 0x45, 0xFF, 0x02, 0x45, 0xDF, 0x01, 0x45, 0xFF, 0x82, 0x46, 0x1F, 0x4E, 0x1F, 0x46, 0x1F, 0x03, 0x45, 0xFF, 0x80, 0x46, 0x1F, 0x04, 0x45, 0xFF, 0x02, 0x46, 0x1F, 0x81, 0x4E, 0x3F, 0x46, 0x3F, 0x06, 0x46, 0x1F, 0x01, 0x4E, 0x3F, 0x81, 0x4E, 0x1F, 0x46, 0x1F, 0x04, 0x4E, 0x1F, 0x80, 0x56, 0x1F, 0x04, 0x56, 0x3F, 0x80, 0x4E, 0x1F, 0x05, 0x56, 0x3F, 0x03, 0x4E, 0x3F, 0x03, 0x4E, 0x1F, 0x02, 0x4E, 0x3F, 0x80, 0x46, 0x1F, 0x01, 0x45, 0xFF, 0x04, 0x4E, 0x1F, 0x89, 0x56, 0x1F, 0x4E, 0x1F, 0x56, 0x3F, 0x4E, 0x1F, 0x4D, 0xFF, 0x4E, 0x1F, 0x4E, 0x3F, 0x56, 0x3F, 0x4E, 0x3F, 0x56, 0x3F, 0x02, 0x56, 0x5F, 0x80, 0x4E, 0x3F, 0x01, 0x46, 0x1F, 0x81, 0x45, 0xFF, 0x4E, 0x1F, 0x01, 0x4E, 0x3F, 0x80, 0x4D, 0xFF, 0x01, 0x4E, 0x1F, 0x03, 0x56, + 0x3F, 0x02, 0x56, 0x5F, 0x80, 0x56, 0x3F, 0x01, 0x56, 0x5F, 0x80, 0x56, 0x3F, 0x0F, 0x56, 0x5F, 0x82, 0x56, 0x7F, 0x56, 0x5F, 0x56, 0x3F, 0x02, 0x56, 0x5F, 0x82, 0x56, 0x3F, 0x4E, 0x1F, 0x4D, 0xFF, 0x01, 0x56, 0x1F, 0x02, 0x56, 0x3F, 0x02, 0x56, 0x5F, 0x02, 0x56, 0x3F, 0x01, 0x56, 0x5F, 0x80, 0x56, 0x3F, 0x01, 0x56, 0x5F, 0x80, 0x56, 0x7F, 0x01, 0x56, 0x5F, 0x80, 0x4E, 0x3F, 0x01, 0x56, 0x3F, 0x81, 0x5E, 0x5F, 0x5E, 0x7F, 0x06, 0x5E, 0x5F, 0x03, 0x5E, 0x7F, 0x03, 0x5E, 0x5F, 0x01, 0x5E, 0x7F, 0x01, 0x5E, 0x5F, 0x01, 0x5E, 0x7F, 0x80, 0x5E, 0x5F, 0x0B, 0x5E, 0x7F, 0x03, 0x5E, 0x5F, 0x80, 0x66, 0x7F, 0x02, 0x5E, 0x5F, 0x04, 0x5E, 0x7F, 0x06, 0x5E, 0x5F, 0x04, 0x5E, 0x7F, 0x80, 0x5E, 0x5F, 0x02, 0x66, 0x5F, 0x81, 0x5E, 0x5F, 0x66, 0x5F, 0x01, 0x5E, 0x5F, 0x07, 0x5E, 0x7F, 0x85, 0x5E, 0x5F, 0x5E, 0x7F, 0x66, 0x7F, 0x5E, 0x5F, 0x5E, 0x7F, 0x66, 0x7F, 0x01, 0x5E, 0x5F, 0x81, 0x5E, 0x7F, 0x66, 0x7F, 0x02, 0x5E, 0x5F, 0x81, 0x66, 0x7F, 0x5E, 0x5F, 0x03, 0x66, 0x5F, 0x80, 0x66, 0x7F, 0x01, 0x66, 0x5F, 0x01, 0x5E, 0x5F, 0x02, 0x66, 0x7F, 0x81, 0x66, 0x9F, 0x66, 0x7F, 0x03, 0x66, 0x9F, 0x80, 0x5E, 0x7F, 0x01, 0x5E, 0x5F, 0x82, 0x5E, 0x7F, 0x66, 0x7F, 0x66, 0x9F, 0x02, 0x5E, 0x9F, 0x03, 0x66, 0x9F, 0x01, 0x6E, 0x9F, 0x07, 0x66, 0x9F, 0x04, 0x66, 0x7F, 0x80, 0x66, 0x9F, 0x02, 0x66, 0x7F, 0x80, 0x66, 0x9F, 0x04, 0x66, 0x7F, 0x81, 0x66, 0x9F, 0x66, 0x7F, 0x02, 0x66, 0x9F, 0x81, 0x66, 0x7F, 0x66, 0x9F, 0x02, 0x66, 0x7F, 0x81, 0x66, + 0x9F, 0x66, 0x7F, 0x06, 0x66, 0x9F, 0x84, 0x66, 0xBF, 0x6E, 0xBF, 0x66, 0x9F, 0x6E, 0x9F, 0x6E, 0xBF, 0x02, 0x6E, 0x9F, 0x07, 0x66, 0x9F, 0x80, 0x6E, 0x9F, 0x02, 0x6E, 0xBF, 0x01, 0x6E, 0x9F, 0x0B, 0x66, 0x9F, 0x0A, 0x66, 0x7F, 0x85, 0x66, 0x9F, 0x66, 0x7F, 0x66, 0x9F, 0x66, 0x7F, 0x66, 0x9F, 0x66, 0x7F, 0x08, 0x66, 0x9F, 0x81, 0x66, 0x7F, 0x66, 0x9F, 0x02, 0x66, 0x7F, 0x81, 0x66, 0x9F, 0x66, 0x7F, 0x01, 0x66, 0x9F, 0x01, 0x66, 0x7F, 0x80, 0x66, 0x9F, 0x01, 0x66, 0xBF, 0x01, 0x5E, 0x9F, 0x02, 0x5E, 0x7F, 0x01, 0x66, 0x9F, 0x86, 0x66, 0x7F, 0x66, 0x9F, 0x66, 0x7F, 0x5E, 0x5F, 0x66, 0x7F, 0x5E, 0x7F, 0x66, 0x9F, 0x02, 0x5E, 0x7F, 0x03, 0x66, 0x7F, 0x81, 0x66, 0x9F, 0x66, 0x7F, 0x03, 0x66, 0x9F, 0x82, 0x66, 0x7F, 0x5E, 0x7F, 0x66, 0x7F, 0x0E, 0x5E, 0x7F, 0x02, 0x66, 0x7F, 0x01, 0x5E, 0x7F, 0x80, 0x66, 0x7F, 0x04, 0x5E, 0x5F, 0x82, 0x56, 0x3F, 0x5E, 0x5F, 0x5E, 0x7F, 0x01, 0x5E, 0x9F, 0x01, 0x56, 0x7F, 0x01, 0x5E, 0x7F, 0x80, 0x66, 0x9F, 0x03, 0x66, 0x7F, 0x02, 0x66, 0x5F, 0x01, 0x66, 0x7F, 0x80, 0x66, 0x5F, 0x04, 0x66, 0x7F, 0x0B, 0x6E, 0x7F, 0x09, 0x76, 0x7F, 0x81, 0x76, 0x9F, 0x76, 0x7F, 0x01, 0x7E, 0x9F, 0x01, 0x86, 0x9F, 0x01, 0x86, 0x7F, 0x01, 0x8E, 0x7F, 0x8D, 0x96, 0x5F, 0x9E, 0x7F, 0xA6, 0x7F, 0xAE, 0x7F, 0xBE, 0x7F, 0xBD, 0xBF, 0x62, 0x13, 0x7A, 0x13, 0x9A, 0x35, 0x99, 0xF3, 0xA2, 0x14, 0xA1, 0xF3, 0xA9, 0xD3, 0xB1, 0xF4, 0x01, 0xA9, 0xD3, 0x96, 0xA9, 0xB3, 0xA9, 0xD3, 0xA9, 0xF3, 0xA2, 0x13, 0x9A, 0x33, 0x92, + 0x74, 0x7A, 0x93, 0x39, 0xCF, 0x53, 0xB5, 0x96, 0xFF, 0x66, 0x7C, 0x56, 0x7B, 0x5E, 0x9B, 0x5E, 0x5B, 0x7E, 0x3C, 0x5B, 0x74, 0x6A, 0x92, 0x82, 0x52, 0x92, 0x12, 0x99, 0xD2, 0xA9, 0xF3, 0xA9, 0xF4, 0xA9, 0xD4, 0x01, 0xA9, 0xD3, 0x8A, 0xAA, 0x14, 0x99, 0xF3, 0x9A, 0x55, 0x71, 0xF2, 0xB5, 0x1D, 0xC6, 0xDF, 0xA6, 0x9F, 0x8E, 0x9F, 0x7E, 0x7F, 0x6E, 0x7F, 0x66, 0x5F, 0x02, 0x66, 0x7F, 0x02, 0x66, 0x9F, 0x02, 0x66, 0x7F, 0x81, 0x66, 0x5F, 0x66, 0x7F, 0x02, 0x5E, 0x7F, 0x02, 0x56, 0x7F, 0x02, 0x4E, 0x5F, 0x80, 0x4E, 0x3F, 0x01, 0x56, 0x3F, 0x80, 0x4E, 0x3F, 0x03, 0x56, 0x5F, 0x01, 0x56, 0x3F, 0x02, 0x4E, 0x3F, 0x02, 0x56, 0x3F, 0x80, 0x4E, 0x3F, 0x01, 0x56, 0x3F, 0x02, 0x4E, 0x3F, 0x02, 0x4E, 0x1F, 0x11, 0x4E, 0x3F, 0x01, 0x4E, 0x5F, 0x02, 0x4E, 0x3F, 0x80, 0x4E, 0x5F, 0x04, 0x4E, 0x3F, 0x01, 0x46, 0x3F, 0x02, 0x46, 0x1F, 0x02, 0x46, 0x3F, 0x08, 0x46, 0x1F, 0x80, 0x3D, 0xFF, 0x01, 0x46, 0x1F, 0x04, 0x45, 0xFF, 0x02, 0x46, 0x1F, 0x80, 0x4E, 0x3F, 0x01, 0x46, 0x1F, 0x05, 0x4E, 0x1F, 0x01, 0x46, 0x1F, 0x81, 0x4E, 0x1F, 0x46, 0x1F, 0x01, 0x4E, 0x1F, 0x01, 0x4D, 0xFF, 0x05, 0x4E, 0x1F, 0x80, 0x46, 0x1F, 0x02, 0x45, 0xFF, 0x04, 0x3D, 0xFF, 0x81, 0x3D, 0xDF, 0x3D, 0xFF, 0x02, 0x3D, 0xDF, 0x80, 0x45, 0xDF, 0x05, 0x45, 0xFF, 0x82, 0x3D, 0xFF, 0x45, 0xFF, 0x46, 0x1F, 0x03, 0x45, 0xFF, 0x04, 0x3D, 0xFF, 0x81, 0x45, 0xFF, 0x3D, 0xFF, 0x01, 0x3D, 0xDF, 0x04, 0x45, 0xFF, 0x01, 0x3D, 0xFF, 0x01, 0x3D, 0xDF, 0x03, 0x3D, 0xFF, 0x05, 0x45, + 0xFF, 0x03, 0x3D, 0xFF, 0x01, 0x45, 0xFF, 0x01, 0x46, 0x1F, 0x81, 0x45, 0xFF, 0x46, 0x1F, 0x03, 0x45, 0xFF, 0x02, 0x3D, 0xFF, 0x01, 0x3D, 0xDF, 0x80, 0x35, 0xDF, 0x01, 0x3D, 0xFF, 0x81, 0x3E, 0x1F, 0x3D, 0xFF, 0x01, 0x45, 0xFF, 0x01, 0x46, 0x1F, 0x80, 0x4E, 0x1F, 0x04, 0x45, 0xFF, 0x80, 0x3D, 0xFF, 0x02, 0x3D, 0xDF, 0x88, 0x3D, 0xFF, 0x3D, 0xDF, 0x3D, 0xFF, 0x3D, 0xDF, 0x3D, 0xFF, 0x3D, 0xDF, 0x3D, 0xFF, 0x3D, 0xDF, 0x3D, 0xFF, 0x05, 0x3D, 0xDF, 0x82, 0x3D, 0xBF, 0x3D, 0xDF, 0x3D, 0xBF, 0x01, 0x3D, 0xDF, 0x07, 0x45, 0xDF, 0x81, 0x45, 0xFF, 0x45, 0xDF, 0x02, 0x45, 0xFF, 0x01, 0x3D, 0xFF, 0x05, 0x3D, 0xDF, 0x04, 0x35, 0xBF, 0x80, 0x3D, 0xBF, 0x01, 0x35, 0xBF, 0x01, 0x35, 0x9F, 0x83, 0x35, 0xBF, 0x24, 0xFD, 0x1C, 0xDD, 0x1C, 0xBD, 0x01, 0x24, 0xDD, 0x84, 0x1C, 0xBD, 0x24, 0xBD, 0x24, 0xDD, 0x24, 0xFD, 0x24, 0xFE, 0x01, 0x2C, 0xFE, 0x82, 0x2C, 0xFD, 0x2D, 0x1D, 0x2D, 0x1E, 0x02, 0x24, 0xFD, 0x80, 0x2D, 0x1E, 0x01, 0x2D, 0x1D, 0x80, 0x25, 0x1D, 0x01, 0x24, 0xFD, 0x80, 0x24, 0xDD, 0x01, 0x1C, 0xDC, 0x80, 0x1C, 0xBC, 0x01, 0x1C, 0xDC, 0x8D, 0x1C, 0xBC, 0x14, 0x7B, 0x1C, 0x9C, 0x14, 0x9B, 0x14, 0x9C, 0x1C, 0xBC, 0x25, 0x1D, 0x25, 0x3E, 0x2D, 0x5E, 0x35, 0x7F, 0x2D, 0x7F, 0x35, 0x7F, 0x2D, 0x3E, 0x25, 0x1E, 0x02, 0x25, 0x1D, 0x80, 0x24, 0xFD, 0x01, 0x2D, 0x1E, 0x01, 0x2C, 0xFD, 0x01, 0x2D, 0x1D, 0x01, 0x2C, 0xFD, 0x02, 0x2D, 0x1D, 0x03, 0x25, 0x1D, 0x80, 0x24, 0xFD, 0x02, 0x2D, 0x1D, 0x86, 0x25, 0x1D, 0x2D, 0x1D, 0x24, 0xFD, + 0x2D, 0x1E, 0x2D, 0x1D, 0x24, 0xFD, 0x25, 0x1D, 0x01, 0x24, 0xFD, 0x85, 0x2D, 0x1D, 0x24, 0xFD, 0x2D, 0x1E, 0x2D, 0x3E, 0x24, 0xFD, 0x2D, 0x1D, 0x03, 0x2D, 0x3E, 0x01, 0x25, 0x1D, 0x01, 0x24, 0xFC, 0x81, 0x25, 0x1D, 0x1C, 0xFC, 0x01, 0x25, 0x1D, 0x80, 0x1D, 0x1D, 0x02, 0x1C, 0xDC, 0x82, 0x25, 0x1D, 0x2D, 0x3E, 0x35, 0x7E, 0x01, 0x35, 0x7F, 0x84, 0x35, 0x9F, 0x2D, 0x5E, 0x25, 0x3E, 0x25, 0x1D, 0x24, 0xFD, 0x01, 0x2D, 0x3D, 0x05, 0x2D, 0x5E, 0x01, 0x35, 0x7E, 0x01, 0x35, 0x5E, 0x80, 0x35, 0x7E, 0x07, 0x35, 0x5E, 0x01, 0x35, 0x7E, 0x81, 0x2D, 0x5E, 0x35, 0x7E, 0x02, 0x35, 0x5E, 0x81, 0x2D, 0x3D, 0x35, 0x5D, 0x02, 0x35, 0x5E, 0x81, 0x2D, 0x5E, 0x35, 0x5E, 0x01, 0x35, 0x7E, 0x80, 0x35, 0x9E, 0x01, 0x35, 0x7E, 0x89, 0x2D, 0x7E, 0x2D, 0x7D, 0x35, 0x7E, 0x2D, 0x7E, 0x35, 0x9E, 0x35, 0x9F, 0x2D, 0x7E, 0x2D, 0x5E, 0x35, 0x7E, 0x2D, 0x5D, 0x01, 0x35, 0x9E, 0x05, 0x35, 0xBF, 0x03, 0x2D, 0x9E, 0x80, 0x2D, 0x9F, 0x01, 0x35, 0xBF, 0x80, 0x35, 0x9F, 0x01, 0x35, 0xBF, 0x80, 0x35, 0x9F, 0x0D, 0x35, 0xBF, 0x81, 0x2D, 0x9E, 0x35, 0xBF, 0x01, 0x35, 0xDF, 0x07, 0x35, 0xBF, 0x80, 0x35, 0x9F, 0x01, 0x35, 0xBF, 0x81, 0x35, 0xDF, 0x35, 0xFF, 0x03, 0x35, 0xBF, 0x01, 0x2D, 0xBE, 0x01, 0x2D, 0x9E, 0x80, 0x25, 0x7E, 0x01, 0x25, 0x7D, 0x86, 0x25, 0x7E, 0x2D, 0xBF, 0x35, 0xDF, 0x3E, 0x1F, 0x3D, 0xFF, 0x35, 0xDF, 0x35, 0xBF, 0x03, 0x35, 0xDF, 0x80, 0x35, 0xBF, 0x06, 0x3D, 0xDF, 0x80, 0x45, 0xDF, 0x02, 0x3D, 0xDF, 0x80, 0x45, 0xDF, 0x07, 0x3D, 0xDF, + 0x80, 0x3D, 0xFF, 0x02, 0x3D, 0xDF, 0x80, 0x35, 0xDF, 0x01, 0x3D, 0xFF, 0x82, 0x3D, 0xDF, 0x35, 0xBF, 0x3D, 0xFF, 0x01, 0x3D, 0xDF, 0x81, 0x45, 0xFF, 0x3D, 0xDF, 0x02, 0x3D, 0xBF, 0x8E, 0x3D, 0xDF, 0x3D, 0xFF, 0x45, 0xFF, 0x3D, 0xFF, 0x3D, 0xDF, 0x35, 0xBE, 0x3D, 0xDF, 0x35, 0xBE, 0x35, 0xDE, 0x35, 0xDF, 0x35, 0xBE, 0x2D, 0x7D, 0x25, 0x5D, 0x2D, 0x9E, 0x3D, 0xFF, 0x01, 0x46, 0x1F, 0x80, 0x3E, 0x1F, 0x01, 0x3D, 0xFF, 0x80, 0x3D, 0xDF, 0x01, 0x3D, 0xFF, 0x04, 0x45, 0xFF, 0x01, 0x46, 0x1F, 0x01, 0x45, 0xFF, 0x01, 0x46, 0x1F, 0x0A, 0x45, 0xFF, 0x05, 0x46, 0x1F, 0x80, 0x45, 0xFF, 0x01, 0x46, 0x1F, 0x04, 0x45, 0xFF, 0x80, 0x46, 0x1F, 0x03, 0x45, 0xFF, 0x02, 0x46, 0x1F, 0x80, 0x45, 0xFF, 0x02, 0x3D, 0xFF, 0x84, 0x35, 0xDE, 0x35, 0xDF, 0x35, 0xBE, 0x3D, 0xFF, 0x46, 0x1F, 0x01, 0x46, 0x3F, 0x05, 0x45, 0xFF, 0x80, 0x4E, 0x1F, 0x04, 0x46, 0x1F, 0x81, 0x4E, 0x1F, 0x4E, 0x3F, 0x01, 0x46, 0x1F, 0x02, 0x4E, 0x1F, 0x85, 0x46, 0x1F, 0x4E, 0x1F, 0x46, 0x1F, 0x4E, 0x3F, 0x46, 0x1F, 0x4E, 0x3F, 0x04, 0x4E, 0x1F, 0x04, 0x4E, 0x3F, 0x02, 0x4E, 0x1F, 0x82, 0x4E, 0x3F, 0x4E, 0x1F, 0x4E, 0x3F, 0x04, 0x4E, 0x1F, 0x01, 0x46, 0x1F, 0x01, 0x4E, 0x1F, 0x81, 0x4D, 0xFF, 0x45, 0xFF, 0x01, 0x4D, 0xFF, 0x02, 0x45, 0xFF, 0x80, 0x3D, 0xDF, 0x01, 0x45, 0xFF, 0x81, 0x4E, 0x1F, 0x45, 0xFF, 0x01, 0x4E, 0x1F, 0x03, 0x56, 0x1F, 0x01, 0x4E, 0x1F, 0x0A, 0x4E, 0x3F, 0x80, 0x4E, 0x1F, 0x01, 0x4E, 0x3F, 0x01, 0x4E, 0x1F, 0x01, 0x4E, 0x3F, 0x01, 0x56, 0x3F, 0x83, + 0x4E, 0x3F, 0x4E, 0x1F, 0x56, 0x3F, 0x4E, 0x1F, 0x01, 0x4E, 0x3F, 0x80, 0x56, 0x3F, 0x01, 0x4E, 0x3F, 0x04, 0x56, 0x3F, 0x84, 0x4E, 0x3F, 0x4E, 0x1F, 0x4D, 0xFF, 0x45, 0xDF, 0x4E, 0x1F, 0x03, 0x4E, 0x3F, 0x03, 0x4E, 0x1F, 0x81, 0x4E, 0x3F, 0x4E, 0x5F, 0x01, 0x4E, 0x3F, 0x81, 0x4E, 0x1F, 0x4D, 0xFF, 0x07, 0x4E, 0x1F, 0x82, 0x4E, 0x3F, 0x56, 0x3F, 0x4E, 0x1F, 0x04, 0x56, 0x3F, 0x82, 0x4E, 0x3F, 0x56, 0x5F, 0x56, 0x3F, 0x04, 0x56, 0x5F, 0x80, 0x4E, 0x3F, 0x03, 0x56, 0x3F, 0x02, 0x56, 0x5F, 0x80, 0x4E, 0x3F, 0x02, 0x56, 0x5F, 0x80, 0x56, 0x3F, 0x05, 0x56, 0x5F, 0x81, 0x56, 0x3F, 0x4E, 0x3F, 0x01, 0x56, 0x5F, 0x05, 0x56, 0x3F, 0x81, 0x4E, 0x3F, 0x4E, 0x1F, 0x02, 0x4E, 0x5F, 0x80, 0x4E, 0x3F, 0x01, 0x4E, 0x1F, 0x80, 0x4E, 0x3F, 0x01, 0x56, 0x3F, 0x81, 0x4E, 0x1F, 0x56, 0x3F, 0x08, 0x4E, 0x3F, 0x06, 0x56, 0x5F, 0x80, 0x56, 0x3F, 0x01, 0x4E, 0x3F, 0x01, 0x56, 0x3F, 0x81, 0x56, 0x5F, 0x4E, 0x3F, 0x02, 0x56, 0x5F, 0x80, 0x4E, 0x3F, 0x09, 0x56, 0x3F, 0x82, 0x56, 0x5F, 0x56, 0x3F, 0x56, 0x5F, 0x02, 0x56, 0x3F, 0x01, 0x56, 0x5F, 0x04, 0x56, 0x3F, 0x83, 0x4E, 0x1F, 0x4E, 0x3F, 0x56, 0x5F, 0x4E, 0x5F, 0x01, 0x4E, 0x3F, 0x02, 0x46, 0x1F, 0x07, 0x4E, 0x1F, 0x81, 0x4E, 0x3F, 0x4E, 0x1F, 0x06, 0x4E, 0x3F, 0x80, 0x4E, 0x1F, 0x02, 0x4E, 0x3F, 0x80, 0x4E, 0x1F, 0x08, 0x4E, 0x3F, 0x86, 0x4E, 0x5F, 0x4E, 0x3F, 0x4E, 0x1F, 0x4E, 0x3F, 0x4E, 0x1F, 0x4E, 0x3F, 0x4E, 0x1F, 0x02, 0x4E, 0x3F, 0x83, 0x4E, 0x1F, 0x4E, 0x3F, 0x4E, 0x1F, 0x4E, 0x3F, + 0x01, 0x4E, 0x1F, 0x80, 0x4D, 0xFF, 0x01, 0x4E, 0x1F, 0x80, 0x4E, 0x3F, 0x01, 0x46, 0x1F, 0x86, 0x46, 0x3F, 0x3E, 0x1F, 0x3D, 0xFE, 0x35, 0xDE, 0x3D, 0xDE, 0x3D, 0xFF, 0x3D, 0xDE, 0x01, 0x3D, 0xBE, 0x01, 0x45, 0xDF, 0x80, 0x45, 0xFF, 0x01, 0x4E, 0x1F, 0x02, 0x4D, 0xFF, 0x03, 0x4E, 0x1F, 0x09, 0x56, 0x1F, 0x09, 0x5E, 0x1F, 0x05, 0x66, 0x3F, 0x03, 0x6E, 0x3F, 0x02, 0x76, 0x1F, 0x01, 0x7E, 0x1F, 0x8A, 0x85, 0xFF, 0x8D, 0xDF, 0x9D, 0xDF, 0xB6, 0x1F, 0xCD, 0xFF, 0x61, 0xB2, 0x82, 0x14, 0x9A, 0x34, 0xA1, 0xF4, 0x99, 0xD3, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x81, 0xA9, 0xB3, 0xB1, 0xF3, 0x01, 0xA9, 0xD3, 0x92, 0xA1, 0xD3, 0xA2, 0x33, 0x9A, 0x54, 0x8A, 0x94, 0x72, 0x93, 0x21, 0x6D, 0x7D, 0x9B, 0x7E, 0x9D, 0x5E, 0x3B, 0x5E, 0x7B, 0x66, 0x3B, 0x7E, 0x3C, 0x6B, 0xF6, 0x62, 0x71, 0x82, 0x73, 0x92, 0x32, 0xA2, 0x13, 0xA9, 0xF3, 0xA9, 0xF4, 0x01, 0xA9, 0xD4, 0x01, 0xA9, 0xF4, 0x8A, 0xA2, 0x14, 0x92, 0x13, 0x82, 0x33, 0x72, 0xF5, 0xA5, 0x7F, 0x85, 0x7F, 0x6D, 0xBF, 0x65, 0xDF, 0x5D, 0xDF, 0x55, 0xDF, 0x4D, 0xDF, 0x06, 0x4D, 0xFF, 0x80, 0x45, 0xDF, 0x02, 0x4D, 0xFF, 0x01, 0x45, 0xFF, 0x80, 0x46, 0x1F, 0x01, 0x46, 0x3F, 0x83, 0x35, 0xBE, 0x25, 0x5D, 0x2D, 0x9E, 0x2D, 0xBE, 0x01, 0x35, 0xDF, 0x01, 0x35, 0xBF, 0x81, 0x35, 0x9F, 0x35, 0x9E, 0x01, 0x35, 0xDF, 0x01, 0x3D, 0xDF, 0x06, 0x35, 0xBF, 0x80, 0x3D, 0xBF, 0x01, 0x35, 0xBF, 0x01, 0x3D, 0xBF, 0x81, 0x3D, 0xDF, 0x3D, 0xBF, 0x02, 0x3D, 0xDF, 0x84, 0x3D, 0xBF, 0x3D, 0xDF, 0x3D, 0xBF, 0x3D, + 0xDF, 0x3D, 0xBF, 0x04, 0x3D, 0xDF, 0x84, 0x35, 0xBF, 0x3D, 0xDF, 0x35, 0xDF, 0x3D, 0xDF, 0x35, 0xDF, 0x01, 0x35, 0xBF, 0x01, 0x35, 0xDF, 0x80, 0x3D, 0xDF, 0x02, 0x35, 0xDF, 0x81, 0x35, 0xFF, 0x3E, 0x1F, 0x01, 0x3D, 0xFF, 0x80, 0x3E, 0x1F, 0x01, 0x35, 0xFF, 0x82, 0x35, 0xDF, 0x25, 0x7D, 0x1D, 0x5D, 0x01, 0x1D, 0x7D, 0x01, 0x25, 0x9E, 0x81, 0x2D, 0x9E, 0x25, 0x9E, 0x03, 0x2D, 0xBF, 0x81, 0x2D, 0xBE, 0x2D, 0x9E, 0x01, 0x2D, 0xBF, 0x05, 0x2D, 0x9F, 0x01, 0x2D, 0x9E, 0x81, 0x35, 0xBF, 0x2D, 0x9F, 0x01, 0x35, 0xBF, 0x85, 0x2D, 0x9E, 0x2D, 0x7E, 0x35, 0x9F, 0x2D, 0x9F, 0x35, 0xBF, 0x2D, 0x9F, 0x06, 0x35, 0x9F, 0x83, 0x2D, 0x9F, 0x35, 0x9F, 0x35, 0xBF, 0x35, 0x9F, 0x02, 0x2D, 0x9F, 0x01, 0x35, 0xBF, 0x01, 0x2D, 0x9F, 0x81, 0x2D, 0xBF, 0x2D, 0x9F, 0x01, 0x2D, 0xBF, 0x81, 0x2D, 0xDF, 0x2D, 0xBF, 0x01, 0x2D, 0x9F, 0x81, 0x25, 0x3E, 0x1C, 0xFD, 0x01, 0x1D, 0x1D, 0x80, 0x25, 0x5D, 0x03, 0x25, 0x5E, 0x02, 0x25, 0x7E, 0x82, 0x25, 0x9E, 0x25, 0x7E, 0x2D, 0x9F, 0x03, 0x25, 0x7E, 0x80, 0x2D, 0x7F, 0x03, 0x25, 0x5E, 0x84, 0x25, 0x7E, 0x25, 0x5E, 0x25, 0x7E, 0x25, 0x5E, 0x25, 0x7E, 0x06, 0x25, 0x5E, 0x03, 0x2D, 0x7E, 0x81, 0x2D, 0x9F, 0x2D, 0x7F, 0x01, 0x2D, 0x9F, 0x02, 0x25, 0x7E, 0x80, 0x2D, 0x9F, 0x01, 0x2D, 0x7E, 0x80, 0x2D, 0x7F, 0x01, 0x2D, 0x7E, 0x80, 0x2D, 0x9E, 0x01, 0x2D, 0x9F, 0x03, 0x2D, 0xBF, 0x82, 0x25, 0x9E, 0x1D, 0x5E, 0x15, 0x1D, 0x02, 0x0C, 0xDC, 0x89, 0x14, 0xFC, 0x1C, 0xFC, 0x1D, 0x1D, 0x1C, 0xFD, 0x1D, 0x1D, 0x1C, + 0xFD, 0x1D, 0x1D, 0x25, 0x3D, 0x25, 0x7E, 0x25, 0x5E, 0x01, 0x25, 0x7E, 0x80, 0x25, 0x5E, 0x01, 0x1D, 0x3E, 0x80, 0x1D, 0x3D, 0x01, 0x25, 0x5E, 0x02, 0x1D, 0x3D, 0x04, 0x1D, 0x1D, 0x80, 0x25, 0x1E, 0x04, 0x25, 0x3E, 0x04, 0x25, 0x1E, 0x80, 0x1C, 0xFE, 0x01, 0x25, 0x1E, 0x07, 0x25, 0x3E, 0x01, 0x1D, 0x1E, 0x81, 0x25, 0x3E, 0x25, 0x5F, 0x02, 0x2D, 0x9F, 0x86, 0x2D, 0x7F, 0x25, 0x7E, 0x25, 0x5E, 0x1D, 0x1D, 0x14, 0xFD, 0x14, 0xDD, 0x0C, 0x9C, 0x03, 0x04, 0x7B, 0x01, 0x14, 0x5C, 0x01, 0x0C, 0x3B, 0x06, 0x14, 0x5C, 0x02, 0x14, 0x5B, 0x03, 0x0C, 0x3B, 0x01, 0x0C, 0x1A, 0x85, 0x04, 0x1A, 0x0C, 0x3A, 0x04, 0x1A, 0x0C, 0x3B, 0x04, 0x3A, 0x04, 0x3B, 0x03, 0x04, 0x3A, 0x86, 0x04, 0x5B, 0x04, 0x3B, 0x0C, 0x7B, 0x14, 0x9C, 0x14, 0xBD, 0x1C, 0xDD, 0x1C, 0xDE, 0x01, 0x25, 0x1E, 0x84, 0x1C, 0xFE, 0x1C, 0xFD, 0x1C, 0xBD, 0x14, 0x9D, 0x14, 0x9C, 0x03, 0x14, 0x7C, 0x80, 0x14, 0x5C, 0x01, 0x14, 0x5B, 0x82, 0x14, 0x3B, 0x0C, 0x3B, 0x14, 0x3B, 0x01, 0x0C, 0x3B, 0x01, 0x0C, 0x3A, 0x01, 0x0C, 0x5B, 0x80, 0x0C, 0x5A, 0x07, 0x0C, 0x5B, 0x80, 0x14, 0x5B, 0x05, 0x0C, 0x5B, 0x80, 0x0C, 0x3B, 0x03, 0x0C, 0x5B, 0x83, 0x14, 0x5B, 0x0C, 0x5B, 0x14, 0x5B, 0x0C, 0x5B, 0x01, 0x0C, 0x5A, 0x80, 0x04, 0x5A, 0x02, 0x04, 0x3A, 0x88, 0x04, 0x5A, 0x04, 0x7A, 0x04, 0x7B, 0x04, 0x9B, 0x04, 0x7B, 0x0C, 0x7B, 0x14, 0xBC, 0x14, 0xDD, 0x1C, 0xFD, 0x02, 0x25, 0x1E, 0x80, 0x1C, 0xFD, 0x01, 0x1C, 0xDD, 0x83, 0x14, 0xBD, 0x14, 0x9C, 0x14, 0x7C, 0x14, 0x9C, 0x01, 0x14, + 0x7B, 0x01, 0x14, 0x9B, 0x01, 0x14, 0x7B, 0x81, 0x14, 0x9B, 0x0C, 0x7B, 0x04, 0x14, 0x7B, 0x80, 0x14, 0x5B, 0x04, 0x14, 0x7B, 0x80, 0x14, 0x9B, 0x03, 0x14, 0x7B, 0x02, 0x14, 0x5B, 0x80, 0x14, 0x7B, 0x01, 0x0C, 0x5B, 0x83, 0x14, 0x7B, 0x0C, 0x7B, 0x14, 0x7B, 0x14, 0x9B, 0x01, 0x14, 0x7B, 0x01, 0x0C, 0x7B, 0x01, 0x0C, 0x7A, 0x83, 0x0C, 0x7B, 0x0C, 0x9B, 0x0C, 0x7A, 0x04, 0x7A, 0x01, 0x04, 0x3A, 0x82, 0x04, 0x5A, 0x14, 0xBB, 0x1C, 0xFD, 0x01, 0x25, 0x3E, 0x84, 0x1D, 0x1E, 0x1C, 0xFD, 0x1D, 0x1D, 0x14, 0xDD, 0x14, 0xDC, 0x01, 0x14, 0xBC, 0x03, 0x14, 0x9C, 0x82, 0x14, 0x9B, 0x14, 0xBC, 0x14, 0x9B, 0x01, 0x14, 0xBC, 0x81, 0x14, 0x9B, 0x0C, 0x9B, 0x0D, 0x14, 0x9B, 0x02, 0x14, 0xBC, 0x80, 0x1C, 0xBC, 0x04, 0x14, 0xBC, 0x80, 0x14, 0xDC, 0x01, 0x14, 0xBC, 0x81, 0x14, 0xDC, 0x1C, 0xDC, 0x04, 0x14, 0xDC, 0x83, 0x14, 0xFC, 0x1D, 0x1C, 0x14, 0xFC, 0x0C, 0xDC, 0x01, 0x0C, 0xBB, 0x81, 0x1D, 0x1D, 0x25, 0x9F, 0x01, 0x2D, 0x9F, 0x80, 0x2D, 0x7E, 0x01, 0x25, 0x5E, 0x80, 0x25, 0x3E, 0x01, 0x1C, 0xFD, 0x01, 0x14, 0xDC, 0x80, 0x14, 0xBC, 0x05, 0x1C, 0xBC, 0x81, 0x1C, 0xDC, 0x1C, 0x9C, 0x04, 0x1C, 0xBC, 0x80, 0x1C, 0x9C, 0x01, 0x1C, 0xBC, 0x02, 0x1C, 0xDC, 0x80, 0x14, 0xBC, 0x0E, 0x1C, 0xDC, 0x80, 0x1C, 0x9B, 0x04, 0x1C, 0xDC, 0x8F, 0x1C, 0xBB, 0x1C, 0xDB, 0x14, 0xDB, 0x1C, 0xFC, 0x1D, 0x1C, 0x14, 0xFC, 0x0C, 0xBB, 0x14, 0xBB, 0x25, 0x5E, 0x35, 0xDF, 0x3D, 0xFF, 0x3D, 0xDF, 0x35, 0x9F, 0x35, 0x7E, 0x2D, 0x5E, 0x2D, 0x3E, 0x03, 0x24, 0xFD, + 0x83, 0x1C, 0xDC, 0x24, 0xFC, 0x24, 0xDC, 0x24, 0xFD, 0x02, 0x24, 0xFC, 0x81, 0x24, 0xFD, 0x24, 0xFC, 0x04, 0x24, 0xFD, 0x01, 0x24, 0xDD, 0x01, 0x24, 0xFC, 0x81, 0x24, 0xDC, 0x24, 0xFD, 0x01, 0x24, 0xFC, 0x81, 0x24, 0xFD, 0x24, 0xFC, 0x02, 0x24, 0xFD, 0x80, 0x25, 0x1D, 0x04, 0x24, 0xFD, 0x82, 0x2D, 0x1D, 0x24, 0xFD, 0x25, 0x1D, 0x01, 0x24, 0xFC, 0x80, 0x24, 0xDC, 0x02, 0x24, 0xFC, 0x03, 0x25, 0x1C, 0x80, 0x1D, 0x1C, 0x01, 0x1C, 0xFC, 0x86, 0x2D, 0x7E, 0x35, 0xDF, 0x3D, 0xFF, 0x3D, 0xDF, 0x35, 0xBF, 0x35, 0x7E, 0x2D, 0x5E, 0x01, 0x2D, 0x3D, 0x01, 0x2D, 0x1D, 0x81, 0x24, 0xFC, 0x25, 0x1D, 0x01, 0x2D, 0x1D, 0x01, 0x25, 0x1D, 0x80, 0x24, 0xFC, 0x03, 0x2D, 0x1D, 0x80, 0x2D, 0x3D, 0x02, 0x2D, 0x1D, 0x80, 0x2D, 0x3D, 0x04, 0x2D, 0x1D, 0x80, 0x2D, 0x1C, 0x03, 0x2D, 0x1D, 0x81, 0x2D, 0x1C, 0x2D, 0x1D, 0x01, 0x2D, 0x1C, 0x02, 0x2D, 0x1D, 0x82, 0x2D, 0x3D, 0x2D, 0x1D, 0x2D, 0x3D, 0x03, 0x2D, 0x1D, 0x83, 0x25, 0x1C, 0x2D, 0x3D, 0x2D, 0x1D, 0x2D, 0x3D, 0x02, 0x2D, 0x1C, 0x01, 0x2D, 0x3D, 0x82, 0x2D, 0x7D, 0x35, 0x9E, 0x3D, 0xBF, 0x01, 0x35, 0xBF, 0x81, 0x35, 0x9E, 0x3D, 0x9F, 0x02, 0x3D, 0x7E, 0x01, 0x3D, 0x5E, 0x80, 0x35, 0x5E, 0x02, 0x35, 0x3D, 0x84, 0x35, 0x5D, 0x35, 0x3D, 0x35, 0x5D, 0x35, 0x3D, 0x35, 0x5D, 0x01, 0x2D, 0x3D, 0x80, 0x35, 0x5D, 0x02, 0x35, 0x3D, 0x80, 0x2D, 0x3D, 0x03, 0x35, 0x3D, 0x80, 0x35, 0x5D, 0x03, 0x35, 0x3D, 0x02, 0x2D, 0x1D, 0x84, 0x35, 0x3D, 0x2D, 0x1D, 0x2D, 0x3D, 0x35, 0x3D, 0x2D, 0x1D, 0x01, 0x35, + 0x3D, 0x81, 0x2D, 0x1C, 0x35, 0x3D, 0x01, 0x2D, 0x1D, 0x80, 0x2C, 0xFD, 0x01, 0x2D, 0x3D, 0x80, 0x35, 0x5D, 0x02, 0x2D, 0x3D, 0x86, 0x35, 0x5D, 0x2D, 0x1C, 0x24, 0xFB, 0x35, 0x9E, 0x3D, 0xFF, 0x3D, 0xDF, 0x3D, 0xBF, 0x01, 0x35, 0x7E, 0x01, 0x35, 0x3E, 0x80, 0x3D, 0x5E, 0x02, 0x35, 0x5E, 0x05, 0x35, 0x5D, 0x81, 0x35, 0x3D, 0x35, 0x5D, 0x02, 0x35, 0x3D, 0x02, 0x35, 0x5D, 0x01, 0x35, 0x3D, 0x01, 0x35, 0x5D, 0x09, 0x35, 0x3D, 0x01, 0x35, 0x5D, 0x80, 0x35, 0x3D, 0x01, 0x35, 0x3C, 0x81, 0x35, 0x3D, 0x2D, 0x3C, 0x01, 0x35, 0x3D, 0x02, 0x2D, 0x3D, 0x01, 0x2D, 0x1C, 0x8E, 0x2D, 0x1D, 0x2D, 0x1C, 0x35, 0x3C, 0x35, 0x3D, 0x2D, 0x1C, 0x35, 0x3C, 0x2D, 0x1C, 0x24, 0xFB, 0x46, 0x3F, 0x3D, 0xDE, 0x2D, 0x5D, 0x35, 0x5D, 0x2D, 0x3D, 0x35, 0x3D, 0x2D, 0x3D, 0x01, 0x35, 0x3D, 0x80, 0x35, 0x5D, 0x02, 0x35, 0x3D, 0x80, 0x35, 0x5D, 0x02, 0x35, 0x3D, 0x80, 0x35, 0x5D, 0x01, 0x35, 0x3D, 0x83, 0x2D, 0x3D, 0x35, 0x3D, 0x35, 0x5D, 0x35, 0x3D, 0x03, 0x35, 0x5D, 0x83, 0x35, 0x3D, 0x35, 0x5D, 0x35, 0x3D, 0x35, 0x5D, 0x02, 0x35, 0x3D, 0x80, 0x35, 0x5D, 0x05, 0x35, 0x3D, 0x82, 0x35, 0x3C, 0x35, 0x3D, 0x35, 0x3C, 0x02, 0x35, 0x3D, 0x81, 0x35, 0x3C, 0x35, 0x3D, 0x06, 0x35, 0x5D, 0x01, 0x35, 0x3D, 0x80, 0x3D, 0x5D, 0x01, 0x35, 0x3D, 0x83, 0x35, 0x5D, 0x35, 0x9E, 0x46, 0x1F, 0x35, 0xBE, 0x01, 0x2D, 0x5D, 0x82, 0x2D, 0x3D, 0x2D, 0x5D, 0x35, 0x5D, 0x02, 0x35, 0x7E, 0x80, 0x35, 0x5E, 0x01, 0x35, 0x7E, 0x02, 0x35, 0x5E, 0x81, 0x35, 0x3D, 0x35, 0x5D, 0x01, + 0x35, 0x3D, 0x07, 0x2D, 0x3D, 0x80, 0x2D, 0x1C, 0x02, 0x2D, 0x3D, 0x80, 0x2D, 0x3C, 0x06, 0x2D, 0x3D, 0x01, 0x2D, 0x1C, 0x80, 0x2D, 0x1D, 0x01, 0x2D, 0x1C, 0x80, 0x2D, 0x3D, 0x02, 0x2D, 0x1C, 0x80, 0x2D, 0x3C, 0x02, 0x35, 0x3D, 0x03, 0x35, 0x5E, 0x82, 0x35, 0x7E, 0x35, 0x9E, 0x3D, 0xDF, 0x01, 0x35, 0xBE, 0x84, 0x25, 0x7D, 0x25, 0x3C, 0x25, 0x5D, 0x25, 0x3D, 0x25, 0x1C, 0x01, 0x2D, 0x3D, 0x82, 0x35, 0x5E, 0x35, 0x3D, 0x2D, 0x3D, 0x02, 0x35, 0x3D, 0x82, 0x35, 0x5E, 0x35, 0x3D, 0x35, 0x5D, 0x02, 0x35, 0x3D, 0x06, 0x35, 0x1D, 0x02, 0x34, 0xFC, 0x02, 0x3C, 0xFC, 0x80, 0x3C, 0xFD, 0x02, 0x3D, 0x1D, 0x82, 0x3C, 0xFC, 0x3D, 0x1D, 0x3C, 0xFC, 0x01, 0x3D, 0x1C, 0x82, 0x3D, 0x1D, 0x45, 0x1C, 0x45, 0x1D, 0x01, 0x45, 0x1C, 0x01, 0x44, 0xFC, 0x02, 0x4C, 0xFC, 0x80, 0x4C, 0xDC, 0x01, 0x54, 0xBC, 0x8A, 0x5C, 0xBC, 0x6C, 0xDC, 0x8D, 0x5E, 0xB5, 0xDF, 0x93, 0xBA, 0x71, 0xD3, 0x89, 0xF4, 0x9A, 0x34, 0xA2, 0x14, 0xA1, 0xF3, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x94, 0xA9, 0xD3, 0xB2, 0x14, 0xA9, 0xD3, 0xA9, 0xF3, 0xAA, 0x34, 0x9A, 0x13, 0x92, 0x53, 0x82, 0x93, 0x5A, 0x51, 0x32, 0x4F, 0x9E, 0xBF, 0x66, 0x1B, 0x66, 0x5B, 0x6E, 0x5B, 0x86, 0x3C, 0x7C, 0x98, 0x62, 0x92, 0x82, 0x93, 0x92, 0x53, 0x99, 0xF2, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x8C, 0xB1, 0xF4, 0xA9, 0xD3, 0xA9, 0xF4, 0xA1, 0xF3, 0x91, 0xF3, 0x8A, 0x34, 0x62, 0x13, 0x6B, 0x58, 0x53, 0xD9, 0x4C, 0x7C, 0x44, 0xBC, 0x3C, 0xDD, 0x34, 0xDD, 0x02, 0x34, 0xFD, 0x01, 0x2C, 0xDD, 0x81, 0x2C, 0xDC, + 0x2C, 0xDD, 0x02, 0x24, 0xBC, 0x89, 0x24, 0xDC, 0x2C, 0xFD, 0x2D, 0x1D, 0x25, 0x1D, 0x2D, 0x3D, 0x35, 0xBF, 0x46, 0x1F, 0x2D, 0x9F, 0x25, 0x5E, 0x14, 0xDC, 0x01, 0x14, 0xFC, 0x80, 0x0C, 0xDB, 0x01, 0x14, 0xDC, 0x83, 0x14, 0xBC, 0x14, 0xDC, 0x1C, 0xDC, 0x1C, 0xFC, 0x01, 0x1C, 0xDC, 0x80, 0x14, 0xDC, 0x02, 0x1C, 0xDC, 0x01, 0x1C, 0xFD, 0x02, 0x1C, 0xDD, 0x80, 0x1C, 0xDC, 0x01, 0x1C, 0xDD, 0x81, 0x1C, 0xBC, 0x1C, 0xDD, 0x06, 0x1C, 0xBC, 0x02, 0x14, 0xBC, 0x01, 0x14, 0x9C, 0x81, 0x14, 0xBC, 0x14, 0x9C, 0x05, 0x14, 0x9B, 0x80, 0x0C, 0x9B, 0x01, 0x14, 0x9B, 0x81, 0x14, 0xBC, 0x14, 0x9B, 0x01, 0x14, 0xBC, 0x88, 0x14, 0xDC, 0x1D, 0x1D, 0x25, 0x3D, 0x25, 0x5E, 0x25, 0x7E, 0x2D, 0x9F, 0x2D, 0xBF, 0x1D, 0x7E, 0x1D, 0x5D, 0x01, 0x0D, 0x1C, 0x82, 0x0C, 0xDB, 0x04, 0xBB, 0x0C, 0xBB, 0x01, 0x0C, 0xDC, 0x01, 0x14, 0xFC, 0x03, 0x14, 0xDC, 0x01, 0x14, 0xDD, 0x03, 0x14, 0xBC, 0x81, 0x0C, 0xBC, 0x14, 0x9C, 0x03, 0x14, 0xBC, 0x02, 0x14, 0x9B, 0x01, 0x0C, 0x9B, 0x05, 0x0C, 0x7B, 0x80, 0x14, 0x7B, 0x04, 0x0C, 0x7B, 0x84, 0x14, 0x7B, 0x14, 0x9B, 0x0C, 0x7B, 0x0C, 0x9C, 0x0C, 0x7B, 0x03, 0x0C, 0x9B, 0x83, 0x14, 0xBC, 0x14, 0xDC, 0x1C, 0xFD, 0x1D, 0x3E, 0x02, 0x25, 0x3E, 0x83, 0x1D, 0x3E, 0x1C, 0xFD, 0x14, 0xDD, 0x0C, 0xDC, 0x02, 0x04, 0x9B, 0x83, 0x04, 0x7A, 0x04, 0x5A, 0x04, 0x7A, 0x04, 0x7B, 0x03, 0x0C, 0x9B, 0x80, 0x0C, 0x9C, 0x03, 0x0C, 0x9B, 0x01, 0x0C, 0x9C, 0x80, 0x0C, 0x7B, 0x01, 0x0C, 0x9C, 0x80, 0x14, 0x9C, 0x01, 0x0C, 0x9C, 0x87, + 0x0C, 0x7B, 0x0C, 0x7C, 0x0C, 0x9C, 0x0C, 0x7C, 0x0C, 0x7B, 0x0C, 0x7C, 0x0C, 0x5B, 0x0C, 0x7C, 0x0A, 0x0C, 0x7B, 0x05, 0x0C, 0x5B, 0x01, 0x0C, 0x7B, 0x83, 0x0C, 0x9C, 0x14, 0xBC, 0x14, 0xFD, 0x1C, 0xFD, 0x01, 0x1D, 0x1D, 0x87, 0x15, 0x1D, 0x14, 0xFD, 0x0C, 0xDC, 0x04, 0x9B, 0x04, 0xBB, 0x04, 0x7B, 0x04, 0x7A, 0x04, 0x5A, 0x03, 0x04, 0x3A, 0x04, 0x04, 0x5A, 0x02, 0x04, 0x3A, 0x81, 0x04, 0x5B, 0x04, 0x3B, 0x02, 0x04, 0x5B, 0x01, 0x04, 0x3B, 0x80, 0x04, 0x3A, 0x01, 0x04, 0x3B, 0x01, 0x0C, 0x3B, 0x02, 0x0C, 0x5B, 0x85, 0x0C, 0x3B, 0x04, 0x3B, 0x0C, 0x3B, 0x04, 0x3B, 0x04, 0x1B, 0x04, 0x3B, 0x06, 0x04, 0x1B, 0x80, 0x04, 0x3B, 0x02, 0x04, 0x1B, 0x88, 0x04, 0x1A, 0x04, 0x1B, 0x04, 0x3B, 0x0C, 0x3B, 0x0C, 0x5B, 0x0C, 0x7C, 0x14, 0x9C, 0x14, 0xBD, 0x1C, 0xDD, 0x01, 0x14, 0xDD, 0x81, 0x14, 0xBD, 0x14, 0xBC, 0x01, 0x0C, 0x9C, 0x81, 0x04, 0x7C, 0x0C, 0xBC, 0x01, 0x04, 0x7B, 0x81, 0x03, 0x38, 0x03, 0x39, 0x06, 0x03, 0x38, 0x84, 0x03, 0x18, 0x03, 0x17, 0x02, 0xF7, 0x03, 0x17, 0x03, 0x18, 0x02, 0x03, 0x38, 0x80, 0x03, 0x58, 0x03, 0x03, 0x79, 0x01, 0x03, 0x99, 0x85, 0x03, 0xD9, 0x03, 0xFA, 0x04, 0x1A, 0x04, 0x5B, 0x0C, 0x9C, 0x14, 0xFD, 0x01, 0x1D, 0x1E, 0x86, 0x0C, 0x5C, 0x0C, 0x1B, 0x0C, 0x1C, 0x03, 0xDB, 0x03, 0xBA, 0x03, 0x7A, 0x03, 0x9A, 0x02, 0x03, 0x79, 0x04, 0x03, 0x59, 0x80, 0x03, 0x39, 0x07, 0x03, 0x59, 0x80, 0x03, 0x58, 0x06, 0x03, 0x79, 0x01, 0x03, 0x58, 0x80, 0x03, 0x79, 0x06, 0x03, 0x59, 0x02, 0x03, 0x79, 0x03, 0x03, + 0x59, 0x80, 0x03, 0x78, 0x01, 0x03, 0x79, 0x86, 0x03, 0x78, 0x03, 0x99, 0x03, 0xB9, 0x03, 0xD9, 0x04, 0x1A, 0x04, 0x3B, 0x0C, 0x7C, 0x01, 0x0C, 0xBC, 0x83, 0x14, 0xDD, 0x0C, 0xDD, 0x14, 0xDD, 0x0C, 0x7C, 0x01, 0x0C, 0x3B, 0x81, 0x03, 0xDA, 0x03, 0x99, 0x04, 0x03, 0x79, 0x82, 0x03, 0x99, 0x03, 0x79, 0x03, 0x59, 0x04, 0x03, 0x58, 0x04, 0x03, 0x79, 0x09, 0x03, 0x78, 0x84, 0x03, 0x58, 0x03, 0x99, 0x03, 0x79, 0x03, 0x78, 0x03, 0x79, 0x01, 0x03, 0x78, 0x01, 0x03, 0x79, 0x03, 0x03, 0x99, 0x81, 0x03, 0x78, 0x03, 0x58, 0x01, 0x03, 0x78, 0x80, 0x03, 0x98, 0x01, 0x03, 0xB8, 0x85, 0x03, 0xD9, 0x03, 0xF9, 0x04, 0x1A, 0x04, 0x5B, 0x0C, 0x7B, 0x14, 0xBC, 0x01, 0x25, 0x1E, 0x83, 0x14, 0x7C, 0x04, 0x1A, 0x03, 0xFA, 0x03, 0xDA, 0x05, 0x03, 0x99, 0x84, 0x03, 0x79, 0x03, 0x99, 0x03, 0x79, 0x03, 0x99, 0x03, 0x79, 0x03, 0x03, 0x99, 0x05, 0x03, 0x98, 0x01, 0x03, 0x78, 0x01, 0x03, 0x99, 0x80, 0x03, 0x78, 0x01, 0x03, 0x99, 0x80, 0x03, 0x98, 0x01, 0x03, 0x99, 0x01, 0x03, 0x98, 0x03, 0x03, 0x99, 0x01, 0x03, 0x78, 0x80, 0x03, 0x99, 0x02, 0x03, 0xB9, 0x03, 0x03, 0x98, 0x01, 0x03, 0xD9, 0x01, 0x03, 0xB8, 0x87, 0x03, 0xF9, 0x04, 0x19, 0x0C, 0x5B, 0x0C, 0x9B, 0x1D, 0x1D, 0x25, 0x5E, 0x1C, 0xFD, 0x0C, 0x3B, 0x02, 0x03, 0xFA, 0x01, 0x03, 0xDA, 0x80, 0x03, 0xD9, 0x02, 0x03, 0xB9, 0x08, 0x03, 0x99, 0x02, 0x03, 0x79, 0x80, 0x03, 0x78, 0x01, 0x03, 0x79, 0x03, 0x03, 0x99, 0x01, 0x03, 0xB9, 0x80, 0x03, 0x99, 0x07, 0x03, 0xB9, 0x80, 0x03, 0x99, 0x03, 0x03, + 0xB9, 0x81, 0x03, 0xD9, 0x03, 0xB9, 0x01, 0x0B, 0xFA, 0x81, 0x0B, 0xF9, 0x0C, 0x19, 0x02, 0x03, 0xD9, 0x88, 0x03, 0xF9, 0x0C, 0x3A, 0x0C, 0x5A, 0x0C, 0x7A, 0x14, 0xDC, 0x25, 0x1D, 0x2D, 0x7F, 0x24, 0xFD, 0x14, 0x3A, 0x01, 0x03, 0xD9, 0x01, 0x03, 0xB9, 0x84, 0x0B, 0xB9, 0x0B, 0xD9, 0x03, 0x99, 0x03, 0xB9, 0x03, 0x99, 0x02, 0x03, 0xB9, 0x80, 0x03, 0x99, 0x01, 0x03, 0x98, 0x80, 0x03, 0xB9, 0x03, 0x03, 0x99, 0x80, 0x03, 0xB9, 0x03, 0x03, 0x99, 0x82, 0x03, 0xB9, 0x03, 0x99, 0x03, 0x98, 0x04, 0x03, 0xB9, 0x80, 0x03, 0xD9, 0x04, 0x03, 0xB9, 0x80, 0x03, 0xBA, 0x01, 0x03, 0xB9, 0x87, 0x0B, 0xBA, 0x0B, 0xDA, 0x03, 0xB9, 0x0B, 0xBA, 0x0B, 0xD9, 0x0B, 0xDA, 0x14, 0x1B, 0x14, 0x3B, 0x01, 0x0C, 0x3A, 0x01, 0x0B, 0xF9, 0x87, 0x0C, 0x19, 0x04, 0x19, 0x14, 0x9B, 0x24, 0xFC, 0x2D, 0x3E, 0x2D, 0x1E, 0x1C, 0x9C, 0x0C, 0x1B, 0x02, 0x0B, 0xD9, 0x02, 0x03, 0xB9, 0x81, 0x0B, 0xB9, 0x0B, 0xD9, 0x02, 0x03, 0xB9, 0x80, 0x03, 0x99, 0x01, 0x03, 0xB9, 0x01, 0x03, 0x99, 0x01, 0x0B, 0xB9, 0x01, 0x03, 0x99, 0x01, 0x0B, 0xB9, 0x80, 0x03, 0xB9, 0x02, 0x0B, 0xB9, 0x01, 0x03, 0xB9, 0x81, 0x0B, 0xB9, 0x03, 0xB9, 0x03, 0x0B, 0xB9, 0x80, 0x0B, 0xB8, 0x02, 0x0B, 0xB9, 0x80, 0x0B, 0xB8, 0x02, 0x0B, 0xB9, 0x01, 0x0B, 0xD9, 0x80, 0x0B, 0xB9, 0x01, 0x0B, 0xD9, 0x02, 0x0B, 0xF9, 0x8C, 0x14, 0x1A, 0x14, 0x3A, 0x13, 0xF9, 0x0B, 0xD9, 0x0B, 0xF9, 0x0C, 0x19, 0x35, 0x5E, 0x35, 0x7E, 0x2D, 0x3E, 0x24, 0xBC, 0x14, 0x7B, 0x14, 0x5B, 0x0B, 0xF9, 0x01, 0x0B, 0xD9, 0x80, + 0x0B, 0xB9, 0x02, 0x13, 0xD9, 0x80, 0x13, 0xB9, 0x01, 0x0B, 0xB9, 0x01, 0x03, 0x98, 0x80, 0x0B, 0xD9, 0x03, 0x0B, 0xB9, 0x82, 0x0B, 0xD9, 0x0B, 0xB8, 0x0B, 0x98, 0x01, 0x0B, 0xB9, 0x01, 0x0B, 0xB8, 0x83, 0x0B, 0x99, 0x03, 0x99, 0x0B, 0x98, 0x0B, 0xB9, 0x01, 0x0B, 0x98, 0x83, 0x0B, 0xB9, 0x0B, 0x98, 0x0B, 0xB9, 0x13, 0xB9, 0x02, 0x0B, 0xB9, 0x01, 0x0B, 0xD9, 0x84, 0x13, 0xD9, 0x13, 0xB9, 0x13, 0xD9, 0x0B, 0x98, 0x0B, 0xB9, 0x01, 0x13, 0xD9, 0x83, 0x13, 0xFA, 0x13, 0xF9, 0x13, 0xFA, 0x14, 0x1A, 0x01, 0x13, 0xF9, 0x87, 0x14, 0x19, 0x14, 0x1A, 0x14, 0x3A, 0x14, 0x39, 0x3D, 0x7F, 0x35, 0x5E, 0x1C, 0x9C, 0x14, 0x3A, 0x01, 0x14, 0x1A, 0x81, 0x13, 0xFA, 0x13, 0xDA, 0x01, 0x13, 0xFA, 0x01, 0x13, 0xF9, 0x01, 0x13, 0xD9, 0x83, 0x0B, 0xD9, 0x13, 0xD9, 0x0B, 0xD9, 0x0B, 0xB9, 0x01, 0x0B, 0x98, 0x80, 0x0B, 0xD9, 0x01, 0x0B, 0xB9, 0x02, 0x0B, 0xB8, 0x0A, 0x0B, 0x98, 0x09, 0x0B, 0xB8, 0x83, 0x0B, 0xD9, 0x0B, 0xB8, 0x0B, 0xD9, 0x0B, 0xB8, 0x01, 0x0B, 0xD9, 0x90, 0x13, 0xF9, 0x0B, 0xD9, 0x13, 0xD9, 0x14, 0x19, 0x1C, 0x1A, 0x13, 0xD8, 0x0B, 0xB8, 0x14, 0x19, 0x14, 0x39, 0x45, 0xFF, 0x2D, 0x3D, 0x14, 0x5A, 0x0B, 0xF9, 0x0B, 0xD9, 0x13, 0xFA, 0x13, 0xD9, 0x0B, 0xD9, 0x01, 0x13, 0xF9, 0x02, 0x13, 0xD9, 0x86, 0x0B, 0xD8, 0x0B, 0xB8, 0x0B, 0xD9, 0x0B, 0xD8, 0x0B, 0xB8, 0x0B, 0xD8, 0x0B, 0xB8, 0x01, 0x03, 0x98, 0x80, 0x0B, 0xB9, 0x02, 0x0B, 0xB8, 0x80, 0x0B, 0x98, 0x02, 0x0B, 0xB8, 0x01, 0x0B, 0x98, 0x09, 0x0B, 0xB8, 0x80, 0x0B, 0x98, 0x05, + 0x0B, 0xB8, 0x80, 0x0B, 0xD9, 0x01, 0x0B, 0xB8, 0x81, 0x0B, 0xD9, 0x13, 0xF9, 0x02, 0x0B, 0xD9, 0x01, 0x13, 0xD9, 0x80, 0x1B, 0xF9, 0x01, 0x13, 0xF9, 0x86, 0x14, 0x19, 0x14, 0x5A, 0x35, 0x7E, 0x1C, 0xDB, 0x0C, 0x3A, 0x03, 0xD9, 0x03, 0xD8, 0x01, 0x0B, 0xD9, 0x80, 0x0B, 0xF9, 0x03, 0x13, 0xF9, 0x80, 0x0B, 0xF9, 0x01, 0x0B, 0xD9, 0x80, 0x0B, 0xB9, 0x01, 0x0B, 0xB8, 0x80, 0x0B, 0xB9, 0x06, 0x0B, 0xB8, 0x80, 0x0B, 0xB9, 0x01, 0x0B, 0xB8, 0x80, 0x0B, 0xD8, 0x03, 0x0B, 0xB8, 0x01, 0x0B, 0xB9, 0x01, 0x0B, 0xB8, 0x82, 0x0B, 0xD9, 0x0B, 0xB9, 0x0B, 0xB8, 0x02, 0x0B, 0xB9, 0x02, 0x0B, 0xB8, 0x82, 0x0B, 0xD9, 0x03, 0x98, 0x0B, 0xB8, 0x01, 0x0B, 0xD9, 0x81, 0x13, 0xF9, 0x13, 0xFA, 0x01, 0x0B, 0xD9, 0x02, 0x13, 0xF9, 0x86, 0x14, 0x1A, 0x24, 0xFC, 0x35, 0x9F, 0x35, 0xBF, 0x25, 0x1D, 0x14, 0x7A, 0x14, 0x5A, 0x01, 0x14, 0x3A, 0x02, 0x14, 0x1A, 0x82, 0x13, 0xFA, 0x0B, 0xD9, 0x13, 0xF9, 0x01, 0x0B, 0xD9, 0x06, 0x13, 0xD9, 0x01, 0x13, 0xB9, 0x80, 0x13, 0xD9, 0x01, 0x13, 0xB9, 0x80, 0x13, 0xD9, 0x02, 0x13, 0xB9, 0x01, 0x1B, 0xB9, 0x80, 0x1B, 0x99, 0x05, 0x1B, 0xB9, 0x80, 0x1B, 0xD9, 0x02, 0x1B, 0xB9, 0x01, 0x23, 0xB9, 0x01, 0x23, 0xD9, 0x02, 0x2B, 0xD9, 0x8F, 0x33, 0xF9, 0x33, 0xDA, 0x3B, 0xFA, 0x43, 0xFA, 0x4B, 0xFB, 0x4B, 0xDA, 0x5B, 0xDA, 0x6B, 0xDA, 0x8C, 0x1C, 0x82, 0xF8, 0x71, 0xB3, 0x92, 0x14, 0x9A, 0x14, 0xA1, 0xF3, 0xAA, 0x14, 0xA9, 0xF3, 0x03, 0xA9, 0xD3, 0x95, 0xA9, 0xF4, 0xA9, 0xF3, 0xA2, 0x13, 0x9A, 0x33, 0x92, 0x53, 0x7A, + 0x93, 0x41, 0xEF, 0x64, 0x36, 0x86, 0x5D, 0x6E, 0x3B, 0x6E, 0x1B, 0x85, 0xFC, 0x8D, 0x3A, 0x5A, 0x91, 0x7A, 0x73, 0x8A, 0x32, 0x9A, 0x13, 0xA1, 0xD2, 0xA9, 0xF3, 0xA9, 0xD3, 0xB1, 0xF4, 0xA9, 0xD3, 0x01, 0xAA, 0x14, 0x89, 0x99, 0xF3, 0x8A, 0x34, 0x72, 0x34, 0x73, 0x38, 0x53, 0x99, 0x2B, 0x17, 0x1B, 0x17, 0x1B, 0x78, 0x13, 0x99, 0x13, 0x79, 0x03, 0x0B, 0x79, 0x80, 0x0B, 0x59, 0x03, 0x0B, 0x79, 0x82, 0x0B, 0x78, 0x0B, 0x99, 0x0B, 0xB9, 0x01, 0x03, 0xB9, 0x88, 0x03, 0x78, 0x03, 0x98, 0x14, 0x3B, 0x25, 0x1E, 0x2D, 0x5E, 0x1D, 0x1D, 0x14, 0xDC, 0x04, 0x5A, 0x03, 0xF9, 0x01, 0x03, 0xD9, 0x80, 0x03, 0xB9, 0x01, 0x03, 0xD9, 0x83, 0x03, 0xB9, 0x03, 0xD9, 0x03, 0xFA, 0x03, 0xD9, 0x02, 0x03, 0xB9, 0x82, 0x03, 0x99, 0x03, 0x98, 0x03, 0x78, 0x05, 0x03, 0x99, 0x81, 0x03, 0x78, 0x03, 0x79, 0x17, 0x03, 0x99, 0x01, 0x03, 0x98, 0x80, 0x03, 0x99, 0x03, 0x03, 0xB9, 0x86, 0x03, 0xD9, 0x0C, 0x5A, 0x14, 0xDC, 0x1D, 0x3D, 0x15, 0x1D, 0x0C, 0xFC, 0x04, 0x9B, 0x01, 0x03, 0xF9, 0x82, 0x03, 0xD9, 0x03, 0xB9, 0x03, 0xD9, 0x01, 0x03, 0xB9, 0x01, 0x03, 0x99, 0x80, 0x03, 0xB9, 0x01, 0x03, 0xDA, 0x80, 0x03, 0xBA, 0x02, 0x03, 0xB9, 0x04, 0x03, 0x99, 0x80, 0x03, 0xB9, 0x09, 0x03, 0x99, 0x80, 0x03, 0x79, 0x02, 0x03, 0x99, 0x80, 0x03, 0x79, 0x04, 0x03, 0x99, 0x01, 0x03, 0x79, 0x05, 0x03, 0x99, 0x80, 0x03, 0x79, 0x01, 0x03, 0x99, 0x8D, 0x03, 0xDA, 0x0C, 0x3B, 0x0C, 0x5C, 0x14, 0xBD, 0x14, 0xDD, 0x14, 0xFD, 0x04, 0x9B, 0x04, 0x3A, 0x04, 0x1A, 0x03, 0xF9, + 0x03, 0xD9, 0x03, 0xB9, 0x03, 0xB8, 0x03, 0x98, 0x02, 0x03, 0x78, 0x01, 0x03, 0x98, 0x05, 0x03, 0x99, 0x05, 0x03, 0x79, 0x01, 0x03, 0x99, 0x02, 0x03, 0x79, 0x80, 0x03, 0x59, 0x07, 0x03, 0x79, 0x05, 0x03, 0x78, 0x01, 0x03, 0x79, 0x03, 0x03, 0x78, 0x01, 0x03, 0x79, 0x80, 0x03, 0x99, 0x01, 0x03, 0xB9, 0x8B, 0x03, 0xD9, 0x03, 0xFA, 0x04, 0x1B, 0x0C, 0x7C, 0x0C, 0xBC, 0x15, 0x1D, 0x0C, 0xBC, 0x04, 0x3A, 0x04, 0x1A, 0x03, 0xFA, 0x03, 0xD9, 0x03, 0xB9, 0x01, 0x03, 0x98, 0x81, 0x03, 0x99, 0x03, 0x98, 0x04, 0x03, 0x78, 0x01, 0x03, 0x79, 0x03, 0x03, 0x99, 0x02, 0x03, 0x79, 0x80, 0x03, 0x59, 0x06, 0x03, 0x79, 0x01, 0x03, 0x59, 0x01, 0x03, 0x79, 0x0C, 0x03, 0x59, 0x83, 0x03, 0x38, 0x03, 0x39, 0x03, 0x59, 0x03, 0x38, 0x01, 0x03, 0x59, 0x8B, 0x03, 0x58, 0x03, 0x59, 0x03, 0x79, 0x03, 0x9A, 0x0C, 0x1B, 0x0C, 0x3C, 0x14, 0xBD, 0x14, 0xFE, 0x1D, 0x3E, 0x1D, 0x3F, 0x02, 0xF8, 0x03, 0x19, 0x05, 0x02, 0xF8, 0x85, 0x02, 0xF7, 0x02, 0xD7, 0x02, 0xF8, 0x02, 0xD7, 0x02, 0xF7, 0x02, 0xF8, 0x01, 0x03, 0x18, 0x80, 0x03, 0x39, 0x01, 0x03, 0x59, 0x80, 0x03, 0x58, 0x03, 0x03, 0x38, 0x88, 0x03, 0x78, 0x03, 0xBA, 0x04, 0x3B, 0x0C, 0x9D, 0x1C, 0xFE, 0x1D, 0x1E, 0x14, 0xBE, 0x0C, 0x3C, 0x03, 0x79, 0x01, 0x03, 0x59, 0x01, 0x03, 0x39, 0x05, 0x03, 0x19, 0x80, 0x02, 0xF8, 0x01, 0x03, 0x18, 0x03, 0x03, 0x19, 0x04, 0x03, 0x39, 0x80, 0x03, 0x19, 0x06, 0x03, 0x39, 0x01, 0x03, 0x18, 0x03, 0x03, 0x39, 0x82, 0x03, 0x19, 0x03, 0x39, 0x03, 0x19, 0x04, 0x03, 0x59, + 0x04, 0x03, 0x39, 0x02, 0x03, 0x59, 0x01, 0x03, 0x79, 0x85, 0x03, 0x99, 0x03, 0xB9, 0x03, 0xFA, 0x04, 0x3B, 0x0C, 0x7C, 0x14, 0xDD, 0x01, 0x14, 0xDE, 0x82, 0x0C, 0x5C, 0x03, 0xBA, 0x03, 0x99, 0x01, 0x03, 0x59, 0x84, 0x03, 0x39, 0x03, 0x18, 0x03, 0x19, 0x03, 0x18, 0x03, 0x19, 0x02, 0x03, 0x39, 0x80, 0x03, 0x59, 0x05, 0x03, 0x39, 0x80, 0x03, 0x19, 0x04, 0x03, 0x39, 0x81, 0x03, 0x38, 0x03, 0x59, 0x03, 0x03, 0x39, 0x80, 0x03, 0x38, 0x04, 0x03, 0x59, 0x80, 0x03, 0x38, 0x05, 0x03, 0x59, 0x80, 0x03, 0x79, 0x03, 0x03, 0x38, 0x80, 0x03, 0x58, 0x01, 0x03, 0x79, 0x80, 0x03, 0x78, 0x01, 0x03, 0x98, 0x87, 0x03, 0xD9, 0x0C, 0x5B, 0x25, 0x1E, 0x25, 0x3F, 0x1C, 0xDE, 0x0C, 0x3B, 0x03, 0xB9, 0x03, 0x78, 0x01, 0x03, 0x79, 0x01, 0x03, 0x59, 0x04, 0x03, 0x39, 0x02, 0x03, 0x59, 0x81, 0x03, 0x39, 0x03, 0x79, 0x01, 0x03, 0x59, 0x80, 0x03, 0x58, 0x01, 0x03, 0x79, 0x04, 0x03, 0x58, 0x02, 0x03, 0x59, 0x82, 0x03, 0x79, 0x03, 0x59, 0x03, 0x79, 0x01, 0x03, 0x59, 0x82, 0x03, 0x38, 0x03, 0x59, 0x03, 0x79, 0x01, 0x03, 0x59, 0x81, 0x03, 0x79, 0x03, 0x58, 0x06, 0x03, 0x79, 0x02, 0x03, 0x58, 0x8C, 0x03, 0x79, 0x03, 0x99, 0x03, 0x78, 0x03, 0x58, 0x03, 0x78, 0x03, 0xFA, 0x24, 0xFD, 0x35, 0x7F, 0x25, 0x3E, 0x0C, 0x5B, 0x03, 0x98, 0x03, 0x78, 0x03, 0x58, 0x07, 0x03, 0x79, 0x82, 0x03, 0x59, 0x03, 0x79, 0x03, 0x59, 0x04, 0x03, 0x79, 0x82, 0x03, 0x7A, 0x03, 0x79, 0x03, 0x59, 0x01, 0x0B, 0x7A, 0x89, 0x03, 0x79, 0x03, 0x59, 0x0B, 0x9A, 0x03, 0x79, 0x0B, 0x7A, + 0x03, 0x7A, 0x03, 0x79, 0x03, 0x59, 0x0B, 0x9A, 0x03, 0x9A, 0x02, 0x03, 0x99, 0x80, 0x03, 0x79, 0x01, 0x03, 0x99, 0x85, 0x03, 0x9A, 0x0B, 0x9A, 0x0B, 0xBA, 0x03, 0x99, 0x0B, 0xBA, 0x0B, 0x99, 0x01, 0x0B, 0xBA, 0x86, 0x0B, 0x99, 0x03, 0x79, 0x03, 0x99, 0x03, 0x78, 0x03, 0x98, 0x03, 0x78, 0x03, 0x57, 0x01, 0x03, 0x78, 0x8C, 0x03, 0xF9, 0x2D, 0x3E, 0x3D, 0xDF, 0x3D, 0x9F, 0x14, 0x5B, 0x03, 0x58, 0x03, 0x37, 0x03, 0x38, 0x03, 0x58, 0x0B, 0x99, 0x0B, 0x79, 0x0B, 0x99, 0x0B, 0x79, 0x01, 0x0B, 0xBA, 0x85, 0x0B, 0x79, 0x03, 0x79, 0x0B, 0x9A, 0x03, 0x79, 0x0B, 0x99, 0x0B, 0x79, 0x01, 0x0B, 0x9A, 0x86, 0x0B, 0xBA, 0x0B, 0x9A, 0x0B, 0xBA, 0x0B, 0x99, 0x0B, 0xBA, 0x0B, 0x9A, 0x0B, 0xBA, 0x02, 0x0B, 0x9A, 0x01, 0x0B, 0xBA, 0x85, 0x0B, 0x9A, 0x03, 0x99, 0x0B, 0xBA, 0x0B, 0xDA, 0x0B, 0xBA, 0x0B, 0x9A, 0x02, 0x0B, 0xBA, 0x80, 0x0B, 0x9A, 0x01, 0x0B, 0xBA, 0x01, 0x0B, 0xBB, 0x82, 0x13, 0xBB, 0x0B, 0x9A, 0x13, 0xDB, 0x01, 0x0B, 0x9A, 0x01, 0x0B, 0xBA, 0x81, 0x03, 0x99, 0x03, 0xB9, 0x02, 0x03, 0x99, 0x86, 0x03, 0x98, 0x03, 0xD9, 0x35, 0x5E, 0x45, 0xDF, 0x35, 0x3F, 0x0B, 0xFA, 0x03, 0x58, 0x02, 0x03, 0x79, 0x80, 0x0B, 0x9A, 0x01, 0x0B, 0x99, 0x81, 0x03, 0x79, 0x0B, 0x99, 0x01, 0x0B, 0xBA, 0x80, 0x0B, 0x99, 0x01, 0x13, 0xDA, 0x81, 0x0B, 0x9A, 0x0B, 0x79, 0x02, 0x13, 0xBA, 0x84, 0x0B, 0x9A, 0x13, 0xBA, 0x0B, 0x9A, 0x0B, 0xBA, 0x0B, 0x9A, 0x02, 0x0B, 0xBA, 0x81, 0x0B, 0x99, 0x13, 0xBA, 0x01, 0x0B, 0xBA, 0x01, 0x13, 0xBA, 0x82, 0x13, 0x9A, + 0x13, 0xBA, 0x0B, 0xB9, 0x05, 0x13, 0xBA, 0x80, 0x13, 0xDA, 0x02, 0x13, 0xBA, 0x8F, 0x13, 0xDA, 0x13, 0xBA, 0x13, 0xDA, 0x0B, 0xBA, 0x13, 0xDA, 0x0B, 0xB9, 0x13, 0xDA, 0x0B, 0x99, 0x03, 0x98, 0x03, 0x78, 0x03, 0x37, 0x1C, 0x3B, 0x45, 0xBF, 0x2D, 0x1E, 0x1C, 0x7C, 0x0B, 0xDA, 0x01, 0x03, 0x99, 0x80, 0x0B, 0xB9, 0x01, 0x0B, 0x99, 0x01, 0x13, 0xBA, 0x80, 0x13, 0x9A, 0x01, 0x13, 0xBA, 0x80, 0x1B, 0xDA, 0x05, 0x13, 0xBA, 0x80, 0x13, 0x9A, 0x01, 0x13, 0xBA, 0x01, 0x13, 0xDA, 0x01, 0x13, 0xBA, 0x80, 0x13, 0xDA, 0x01, 0x13, 0xBA, 0x80, 0x13, 0xDA, 0x01, 0x13, 0xBA, 0x83, 0x1B, 0xDB, 0x13, 0xBA, 0x13, 0xDA, 0x1B, 0xDA, 0x01, 0x13, 0xBA, 0x01, 0x1B, 0xDA, 0x81, 0x13, 0xDA, 0x13, 0xBA, 0x02, 0x1B, 0xDA, 0x80, 0x13, 0xBA, 0x01, 0x13, 0xDA, 0x80, 0x1B, 0xDA, 0x03, 0x1B, 0xFB, 0x81, 0x0B, 0x99, 0x1B, 0xFB, 0x01, 0x13, 0xDA, 0x80, 0x0B, 0xB9, 0x01, 0x0B, 0xB8, 0x83, 0x3D, 0x9F, 0x24, 0xBC, 0x13, 0xFA, 0x13, 0xFB, 0x01, 0x13, 0xDA, 0x82, 0x1B, 0xDB, 0x13, 0xBA, 0x1B, 0xDA, 0x01, 0x13, 0xBA, 0x80, 0x13, 0x99, 0x02, 0x13, 0xBA, 0x80, 0x13, 0xB9, 0x01, 0x13, 0xBA, 0x80, 0x1B, 0xDA, 0x0E, 0x13, 0xBA, 0x01, 0x13, 0xDA, 0x8D, 0x13, 0xBA, 0x13, 0xB9, 0x13, 0xDA, 0x13, 0xBA, 0x13, 0xDA, 0x13, 0xBA, 0x13, 0xDA, 0x13, 0xB9, 0x13, 0xBA, 0x13, 0xDA, 0x13, 0xBA, 0x13, 0xB9, 0x13, 0xDA, 0x13, 0xBA, 0x01, 0x13, 0xDA, 0x01, 0x13, 0xBA, 0x80, 0x13, 0xDA, 0x01, 0x1B, 0xFA, 0x88, 0x13, 0xB9, 0x1B, 0xFA, 0x13, 0xD9, 0x13, 0xB9, 0x0B, 0xB8, 0x3D, 0x9F, + 0x24, 0xDC, 0x1C, 0x5B, 0x13, 0xFA, 0x01, 0x13, 0xDA, 0x80, 0x1B, 0xFB, 0x01, 0x1B, 0xDA, 0x90, 0x13, 0xBA, 0x1B, 0xDA, 0x13, 0xBA, 0x13, 0xDA, 0x13, 0xBA, 0x13, 0xDA, 0x13, 0xBA, 0x1B, 0xDA, 0x13, 0xDA, 0x13, 0xBA, 0x13, 0x99, 0x13, 0xDA, 0x13, 0xBA, 0x13, 0xB9, 0x13, 0xBA, 0x13, 0xB9, 0x13, 0x99, 0x01, 0x13, 0xBA, 0x86, 0x13, 0xB9, 0x13, 0x99, 0x13, 0xBA, 0x13, 0xDA, 0x13, 0xB9, 0x13, 0xBA, 0x13, 0xDA, 0x02, 0x13, 0xBA, 0x80, 0x1B, 0xDA, 0x0A, 0x13, 0xBA, 0x81, 0x1B, 0xDA, 0x13, 0xBA, 0x01, 0x13, 0xB9, 0x82, 0x13, 0xBA, 0x13, 0xB9, 0x13, 0xDA, 0x01, 0x13, 0xBA, 0x80, 0x1B, 0xBA, 0x01, 0x13, 0xB9, 0x87, 0x0B, 0xB9, 0x0B, 0xB8, 0x2D, 0x1E, 0x24, 0xDC, 0x14, 0x5B, 0x0B, 0xFA, 0x0B, 0xD9, 0x0B, 0xDA, 0x01, 0x13, 0xDA, 0x80, 0x1C, 0x1B, 0x01, 0x13, 0xDA, 0x82, 0x0B, 0x99, 0x13, 0xBA, 0x0B, 0xB9, 0x07, 0x13, 0xBA, 0x82, 0x13, 0xB9, 0x13, 0x99, 0x13, 0xDA, 0x01, 0x13, 0xBA, 0x01, 0x13, 0xB9, 0x01, 0x13, 0xBA, 0x01, 0x13, 0xDA, 0x80, 0x13, 0xB9, 0x09, 0x13, 0xBA, 0x80, 0x13, 0xDA, 0x04, 0x13, 0xBA, 0x82, 0x13, 0xB9, 0x13, 0xBA, 0x13, 0xB9, 0x02, 0x0B, 0x79, 0x88, 0x0B, 0x99, 0x0B, 0x79, 0x03, 0x58, 0x03, 0x37, 0x03, 0x78, 0x2D, 0x1E, 0x3D, 0xDF, 0x35, 0x7F, 0x03, 0xF9, 0x01, 0x03, 0x98, 0x02, 0x0B, 0xB9, 0x87, 0x13, 0xDA, 0x13, 0xB9, 0x13, 0xDA, 0x0B, 0x99, 0x13, 0xBA, 0x0B, 0x99, 0x13, 0xBA, 0x13, 0x99, 0x01, 0x13, 0xBA, 0x81, 0x1B, 0xDA, 0x13, 0xDA, 0x01, 0x1B, 0xDB, 0x01, 0x1B, 0xBA, 0x80, 0x1B, 0xDA, 0x02, 0x1B, 0xBA, + 0x82, 0x23, 0xDA, 0x23, 0xDB, 0x23, 0xDA, 0x01, 0x23, 0xDB, 0x81, 0x23, 0xBB, 0x2B, 0xDB, 0x05, 0x2B, 0xFB, 0x01, 0x2C, 0x1B, 0x01, 0x34, 0x1B, 0x82, 0x33, 0xFB, 0x34, 0x1B, 0x33, 0xFB, 0x01, 0x3C, 0x1B, 0x80, 0x3B, 0xFB, 0x01, 0x33, 0xDA, 0x8E, 0x3B, 0xDA, 0x43, 0xFB, 0x4B, 0xDB, 0x53, 0x9A, 0x53, 0x59, 0x63, 0x19, 0x7B, 0x59, 0x82, 0xB7, 0x79, 0xD4, 0x92, 0x35, 0xA2, 0x34, 0xA1, 0xF3, 0xA1, 0xD3, 0xA9, 0xF3, 0xB1, 0xF3, 0x01, 0xA9, 0xD3, 0x91, 0xB2, 0x14, 0xA9, 0xF3, 0xA1, 0xF3, 0x9A, 0x13, 0x92, 0x33, 0x82, 0x32, 0x6A, 0x52, 0x39, 0xEE, 0x8D, 0xFC, 0x7D, 0xFB, 0x7E, 0x1C, 0x85, 0xDB, 0x95, 0x7C, 0x5A, 0x91, 0x7A, 0x93, 0x8A, 0x33, 0x9A, 0x13, 0xA1, 0xF3, 0x01, 0xA9, 0xD3, 0x94, 0xA9, 0xD4, 0xB1, 0xF4, 0xA9, 0xF4, 0xAA, 0x14, 0xA1, 0xF4, 0x92, 0x14, 0x7A, 0x14, 0x72, 0xB7, 0x6C, 0x1C, 0x3B, 0x59, 0x2B, 0x7A, 0x2B, 0xBB, 0x23, 0xBA, 0x23, 0xBB, 0x1B, 0xBA, 0x1B, 0x7A, 0x1B, 0xBB, 0x1B, 0x9A, 0x1B, 0xBB, 0x1B, 0x9A, 0x13, 0x9A, 0x02, 0x13, 0x7A, 0x80, 0x0B, 0x59, 0x01, 0x0B, 0x79, 0x8E, 0x03, 0x59, 0x03, 0x58, 0x03, 0x38, 0x03, 0x58, 0x03, 0xDA, 0x2D, 0x1E, 0x35, 0xBF, 0x35, 0x9F, 0x25, 0x3F, 0x14, 0x7C, 0x03, 0xDA, 0x03, 0x99, 0x03, 0x79, 0x03, 0x78, 0x03, 0x58, 0x01, 0x03, 0x99, 0x84, 0x03, 0xBA, 0x0B, 0xBA, 0x03, 0x99, 0x03, 0x59, 0x03, 0x79, 0x02, 0x03, 0x58, 0x01, 0x03, 0x59, 0x80, 0x03, 0x79, 0x01, 0x03, 0x7A, 0x81, 0x03, 0x59, 0x03, 0x7A, 0x03, 0x03, 0x79, 0x82, 0x03, 0x59, 0x03, 0x79, 0x03, 0x59, 0x02, 0x03, + 0x79, 0x02, 0x03, 0x59, 0x81, 0x03, 0x79, 0x03, 0x59, 0x03, 0x03, 0x79, 0x80, 0x03, 0x9A, 0x01, 0x03, 0x79, 0x02, 0x03, 0x59, 0x01, 0x03, 0x58, 0x02, 0x03, 0x59, 0x02, 0x03, 0x58, 0x88, 0x03, 0x99, 0x04, 0x1A, 0x04, 0x5B, 0x14, 0xDD, 0x25, 0x5F, 0x2D, 0x7F, 0x1C, 0xDD, 0x0C, 0x1A, 0x03, 0xB9, 0x01, 0x03, 0x99, 0x01, 0x03, 0x79, 0x80, 0x03, 0x58, 0x01, 0x03, 0x59, 0x80, 0x03, 0x99, 0x01, 0x03, 0x9A, 0x01, 0x03, 0x79, 0x0A, 0x03, 0x59, 0x84, 0x03, 0x79, 0x03, 0x59, 0x03, 0x79, 0x03, 0x59, 0x03, 0x79, 0x0B, 0x03, 0x59, 0x80, 0x03, 0x39, 0x04, 0x03, 0x59, 0x03, 0x03, 0x38, 0x85, 0x03, 0x59, 0x03, 0x79, 0x03, 0x9A, 0x03, 0xBA, 0x04, 0x1B, 0x14, 0xDE, 0x01, 0x25, 0x3F, 0x84, 0x24, 0xFE, 0x14, 0x7C, 0x04, 0x1A, 0x03, 0xDA, 0x03, 0xB9, 0x01, 0x03, 0x99, 0x81, 0x03, 0x79, 0x03, 0x59, 0x01, 0x03, 0x58, 0x01, 0x03, 0x79, 0x02, 0x03, 0x59, 0x04, 0x03, 0x39, 0x80, 0x03, 0x19, 0x15, 0x03, 0x39, 0x80, 0x03, 0x38, 0x04, 0x03, 0x39, 0x80, 0x03, 0x38, 0x02, 0x03, 0x59, 0x01, 0x03, 0x79, 0x89, 0x03, 0x99, 0x03, 0xB9, 0x04, 0x1B, 0x14, 0xFE, 0x1D, 0x3F, 0x1C, 0xFE, 0x14, 0x9D, 0x0C, 0x3B, 0x03, 0xFA, 0x03, 0xB9, 0x02, 0x03, 0x99, 0x02, 0x03, 0x79, 0x07, 0x03, 0x59, 0x05, 0x03, 0x39, 0x01, 0x03, 0x19, 0x07, 0x03, 0x39, 0x80, 0x03, 0x19, 0x01, 0x03, 0x39, 0x05, 0x03, 0x19, 0x01, 0x03, 0x39, 0x04, 0x03, 0x19, 0x82, 0x02, 0xF8, 0x03, 0x18, 0x02, 0xF8, 0x01, 0x03, 0x18, 0x01, 0x03, 0x19, 0x83, 0x03, 0x39, 0x03, 0x9A, 0x03, 0xDB, 0x0C, 0x5C, + 0x01, 0x0C, 0x9D, 0x02, 0x03, 0x39, 0x81, 0x0B, 0x5A, 0x03, 0x5A, 0x01, 0x0B, 0x7A, 0x01, 0x0B, 0x9A, 0x04, 0x0B, 0xBB, 0x81, 0x0B, 0x9B, 0x03, 0x5A, 0x01, 0x03, 0x39, 0x02, 0x03, 0x38, 0x89, 0x03, 0x59, 0x03, 0x99, 0x0B, 0xFB, 0x1C, 0x7D, 0x24, 0xDF, 0x25, 0x1F, 0x2D, 0x3F, 0x0C, 0x5C, 0x03, 0xBA, 0x03, 0x59, 0x02, 0x03, 0x39, 0x80, 0x03, 0x19, 0x02, 0x03, 0x3A, 0x82, 0x03, 0x5A, 0x03, 0x5B, 0x03, 0x7B, 0x03, 0x0B, 0x7B, 0x82, 0x0B, 0x7A, 0x0B, 0x7B, 0x0B, 0x9B, 0x02, 0x03, 0x5A, 0x85, 0x0B, 0x7B, 0x03, 0x3A, 0x03, 0x7B, 0x03, 0x5A, 0x0B, 0x7B, 0x03, 0x7A, 0x04, 0x0B, 0x7B, 0x02, 0x0B, 0x9B, 0x81, 0x0B, 0xBB, 0x0B, 0x7A, 0x02, 0x0B, 0x9B, 0x01, 0x0B, 0xBB, 0x82, 0x03, 0x9B, 0x0B, 0xBB, 0x03, 0x9A, 0x01, 0x03, 0x9B, 0x01, 0x03, 0x9A, 0x80, 0x0B, 0xBB, 0x03, 0x03, 0x7A, 0x8C, 0x03, 0x79, 0x03, 0x9A, 0x03, 0xBA, 0x03, 0xFB, 0x14, 0x5C, 0x1C, 0xBD, 0x24, 0xFF, 0x2D, 0x5F, 0x14, 0xBD, 0x04, 0x1B, 0x03, 0x79, 0x03, 0x59, 0x03, 0x79, 0x01, 0x03, 0x7A, 0x81, 0x03, 0x9B, 0x0B, 0x9B, 0x01, 0x0B, 0xBB, 0x81, 0x13, 0xDC, 0x0B, 0x9B, 0x01, 0x13, 0xBC, 0x84, 0x13, 0xDC, 0x13, 0xBC, 0x0B, 0xBC, 0x13, 0xBC, 0x13, 0xDC, 0x02, 0x13, 0xBC, 0x02, 0x13, 0xDC, 0x80, 0x0B, 0xBB, 0x04, 0x13, 0xDC, 0x80, 0x0B, 0xBC, 0x01, 0x13, 0xDC, 0x82, 0x13, 0xBB, 0x0B, 0xBB, 0x13, 0xBB, 0x02, 0x0B, 0xBB, 0x02, 0x13, 0xDB, 0x01, 0x0B, 0xDB, 0x87, 0x0B, 0xBB, 0x0B, 0xFB, 0x0B, 0xDB, 0x0B, 0xFB, 0x0B, 0xDB, 0x0B, 0xFB, 0x0B, 0xDA, 0x03, 0xBA, 0x01, 0x03, + 0x99, 0x83, 0x03, 0xBA, 0x03, 0xFA, 0x14, 0x7C, 0x1C, 0xDE, 0x01, 0x1C, 0xBE, 0x80, 0x0C, 0x3C, 0x01, 0x03, 0xDA, 0x02, 0x03, 0xBA, 0x81, 0x03, 0x9A, 0x0B, 0xBB, 0x02, 0x13, 0xDC, 0x80, 0x13, 0xFC, 0x04, 0x1B, 0xFC, 0x88, 0x13, 0xFC, 0x13, 0xDC, 0x1B, 0xFC, 0x13, 0xFC, 0x13, 0xDB, 0x13, 0xFC, 0x14, 0x1C, 0x13, 0xFC, 0x1C, 0x1C, 0x02, 0x13, 0xFC, 0x80, 0x1C, 0x1C, 0x03, 0x13, 0xFC, 0x80, 0x13, 0xDC, 0x02, 0x1B, 0xFC, 0x83, 0x13, 0xFB, 0x14, 0x1C, 0x13, 0xFB, 0x13, 0xFC, 0x01, 0x13, 0xFB, 0x83, 0x13, 0xFC, 0x1C, 0x1C, 0x14, 0x1C, 0x1C, 0x3C, 0x02, 0x1C, 0x1C, 0x02, 0x1C, 0x3C, 0x84, 0x14, 0x1C, 0x0B, 0xDA, 0x03, 0xBA, 0x0C, 0x1B, 0x24, 0xBE, 0x01, 0x2D, 0x1F, 0x83, 0x24, 0xDE, 0x14, 0x5C, 0x0C, 0x1B, 0x0B, 0xFB, 0x01, 0x0B, 0xDA, 0x01, 0x0B, 0xDB, 0x83, 0x13, 0xFB, 0x13, 0xDB, 0x13, 0xFC, 0x1B, 0xFC, 0x01, 0x1C, 0x1C, 0x01, 0x1C, 0x1D, 0x82, 0x1C, 0x1C, 0x1C, 0x1D, 0x1C, 0x3D, 0x03, 0x1C, 0x1D, 0x81, 0x1B, 0xFC, 0x1C, 0x1D, 0x01, 0x1C, 0x1C, 0x82, 0x1B, 0xFC, 0x24, 0x1D, 0x1C, 0x1C, 0x01, 0x1B, 0xFC, 0x80, 0x24, 0x1D, 0x01, 0x1C, 0x1C, 0x01, 0x1B, 0xFC, 0x87, 0x13, 0xFC, 0x1C, 0x3C, 0x14, 0x1C, 0x13, 0xFC, 0x1C, 0x3C, 0x1C, 0x1C, 0x1C, 0x3C, 0x24, 0x3D, 0x01, 0x1B, 0xFC, 0x01, 0x1C, 0x1C, 0x81, 0x1C, 0x3C, 0x24, 0x5D, 0x01, 0x1C, 0x3C, 0x02, 0x14, 0x1B, 0x8C, 0x1C, 0x3C, 0x14, 0x1B, 0x03, 0xD9, 0x14, 0x5C, 0x35, 0x3F, 0x3D, 0x9F, 0x2D, 0x3F, 0x1C, 0x7C, 0x14, 0x1B, 0x13, 0xFB, 0x1C, 0x1B, 0x1C, 0x3C, 0x24, 0x3C, 0x01, + 0x1B, 0xFB, 0x82, 0x1B, 0xFC, 0x23, 0xFC, 0x24, 0x1C, 0x01, 0x24, 0x3D, 0x82, 0x2C, 0x5D, 0x24, 0x5D, 0x2C, 0x5D, 0x02, 0x24, 0x3D, 0x01, 0x24, 0x5D, 0x82, 0x24, 0x3D, 0x24, 0x5D, 0x2C, 0x7D, 0x01, 0x24, 0x3D, 0x81, 0x24, 0x5D, 0x2C, 0x5D, 0x02, 0x24, 0x3D, 0x85, 0x24, 0x5D, 0x24, 0x3D, 0x24, 0x5D, 0x24, 0x3D, 0x24, 0x5D, 0x24, 0x3D, 0x05, 0x24, 0x5D, 0x01, 0x24, 0x3D, 0x84, 0x2C, 0x5D, 0x24, 0x3D, 0x24, 0x5D, 0x1C, 0x1D, 0x24, 0x1D, 0x01, 0x24, 0x5D, 0x8E, 0x24, 0x3C, 0x24, 0x5D, 0x14, 0x1B, 0x14, 0x3B, 0x14, 0x3C, 0x1C, 0x5C, 0x24, 0xBE, 0x35, 0x5F, 0x3D, 0x7F, 0x2C, 0xFE, 0x2C, 0xBE, 0x1C, 0x3C, 0x13, 0xFB, 0x1B, 0xFC, 0x1C, 0x1C, 0x01, 0x24, 0x3C, 0x80, 0x24, 0x3D, 0x01, 0x24, 0x5D, 0x84, 0x2C, 0x7E, 0x34, 0xBE, 0x2C, 0x5D, 0x24, 0x5D, 0x24, 0x3D, 0x01, 0x2C, 0x5D, 0x80, 0x2C, 0x7D, 0x02, 0x2C, 0x5D, 0x80, 0x2C, 0x7E, 0x01, 0x2C, 0x5D, 0x01, 0x2C, 0x7D, 0x02, 0x2C, 0x5D, 0x80, 0x2C, 0x7D, 0x02, 0x2C, 0x5D, 0x84, 0x2C, 0x7E, 0x2C, 0x5D, 0x2C, 0x3D, 0x2C, 0x5D, 0x2C, 0x7D, 0x01, 0x2C, 0x5D, 0x02, 0x2C, 0x7D, 0x80, 0x34, 0x7E, 0x02, 0x2C, 0x5D, 0x88, 0x2C, 0x7D, 0x24, 0x5D, 0x24, 0x3C, 0x24, 0x5C, 0x2C, 0x7D, 0x24, 0x3C, 0x24, 0x5C, 0x1C, 0x3B, 0x24, 0x3C, 0x01, 0x1C, 0x3B, 0x86, 0x1C, 0x5C, 0x3D, 0x7F, 0x3D, 0x5F, 0x2C, 0xDD, 0x24, 0xBD, 0x24, 0x7D, 0x1C, 0x5C, 0x01, 0x24, 0x5D, 0x01, 0x2C, 0x7D, 0x82, 0x2C, 0x9E, 0x2C, 0x7D, 0x2C, 0x7E, 0x03, 0x2C, 0x5D, 0x86, 0x2C, 0x7D, 0x2C, 0x5D, 0x2C, 0x7D, 0x34, 0x7E, 0x2C, + 0x7D, 0x34, 0x7E, 0x34, 0x9E, 0x01, 0x2C, 0x7D, 0x03, 0x34, 0x9E, 0x87, 0x2C, 0x7D, 0x2C, 0x7E, 0x34, 0x9E, 0x34, 0x7E, 0x34, 0x9E, 0x2C, 0x7D, 0x2C, 0x5D, 0x2C, 0x7D, 0x02, 0x34, 0x7E, 0x80, 0x34, 0x7D, 0x01, 0x2C, 0x7D, 0x80, 0x34, 0x9E, 0x01, 0x2C, 0x5D, 0x80, 0x2C, 0x7D, 0x01, 0x2C, 0x5D, 0x86, 0x34, 0x7D, 0x2C, 0x3C, 0x2C, 0x5D, 0x24, 0x3C, 0x2C, 0x5D, 0x24, 0x3C, 0x2C, 0x5C, 0x01, 0x24, 0x1C, 0x86, 0x24, 0x1B, 0x24, 0x3C, 0x1C, 0x1B, 0x24, 0x7C, 0x4D, 0xBF, 0x24, 0xBC, 0x24, 0x7C, 0x02, 0x24, 0x3C, 0x01, 0x24, 0x1C, 0x81, 0x2C, 0x3D, 0x2C, 0x5D, 0x04, 0x2C, 0x7D, 0x81, 0x34, 0x7D, 0x2C, 0x7D, 0x01, 0x2C, 0x5D, 0x80, 0x34, 0x5D, 0x02, 0x34, 0x7E, 0x01, 0x34, 0x9E, 0x01, 0x34, 0x7E, 0x80, 0x34, 0x7D, 0x01, 0x34, 0x7E, 0x81, 0x2C, 0x7D, 0x34, 0x9E, 0x03, 0x34, 0x7E, 0x01, 0x34, 0x9E, 0x81, 0x34, 0x7D, 0x34, 0x9E, 0x01, 0x34, 0x7D, 0x80, 0x2C, 0x7D, 0x02, 0x34, 0x7D, 0x81, 0x2C, 0x7D, 0x34, 0x9D, 0x01, 0x34, 0x7D, 0x87, 0x2C, 0x7D, 0x34, 0x9D, 0x34, 0x7D, 0x2C, 0x7D, 0x2C, 0x3C, 0x2C, 0x5C, 0x24, 0x1C, 0x2C, 0x3C, 0x02, 0x24, 0x1B, 0x83, 0x1C, 0x3B, 0x3D, 0x7F, 0x2C, 0xFE, 0x1C, 0x5C, 0x01, 0x1C, 0x1B, 0x83, 0x24, 0x3C, 0x24, 0x1C, 0x24, 0x3C, 0x2C, 0x3C, 0x01, 0x2C, 0x5D, 0x81, 0x2C, 0x7D, 0x34, 0x7D, 0x02, 0x2C, 0x5D, 0x80, 0x2C, 0x3C, 0x02, 0x2C, 0x5D, 0x80, 0x2C, 0x3D, 0x02, 0x2C, 0x5D, 0x83, 0x34, 0x7E, 0x34, 0x7D, 0x2C, 0x7D, 0x34, 0x7D, 0x01, 0x2C, 0x7D, 0x01, 0x2C, 0x5D, 0x80, 0x2C, 0x7D, 0x02, 0x34, 0x7E, + 0x82, 0x34, 0x7D, 0x34, 0x7E, 0x2C, 0x5D, 0x01, 0x2C, 0x7D, 0x80, 0x34, 0x7E, 0x02, 0x2C, 0x5D, 0x01, 0x34, 0x7D, 0x85, 0x2C, 0x5D, 0x34, 0x7D, 0x2C, 0x7D, 0x2C, 0x5D, 0x2C, 0x7D, 0x24, 0x5D, 0x02, 0x2C, 0x5D, 0x82, 0x24, 0x1C, 0x2C, 0x3C, 0x2C, 0x1C, 0x01, 0x2C, 0x3C, 0x85, 0x24, 0x3C, 0x2C, 0x7D, 0x24, 0x5C, 0x35, 0x3F, 0x3D, 0x7F, 0x1C, 0x7C, 0x01, 0x1C, 0x3B, 0x80, 0x1C, 0x3C, 0x01, 0x24, 0x3C, 0x83, 0x2C, 0x5D, 0x2C, 0x7D, 0x2C, 0x5D, 0x34, 0x7D, 0x01, 0x2C, 0x7D, 0x83, 0x34, 0x7D, 0x34, 0x7E, 0x2C, 0x5D, 0x34, 0x7D, 0x01, 0x2C, 0x5D, 0x80, 0x2C, 0x7D, 0x01, 0x34, 0x7E, 0x81, 0x2C, 0x7D, 0x2C, 0x5D, 0x01, 0x2C, 0x7D, 0x80, 0x34, 0x9E, 0x0C, 0x2C, 0x5D, 0x8D, 0x2C, 0x7E, 0x2C, 0x5D, 0x2C, 0x7E, 0x2C, 0x5D, 0x2C, 0x7D, 0x2C, 0x5D, 0x2C, 0x7E, 0x34, 0x9E, 0x2C, 0x7D, 0x34, 0x9E, 0x34, 0xBE, 0x2C, 0x7D, 0x34, 0x9E, 0x2C, 0x7E, 0x01, 0x2C, 0x7D, 0x88, 0x2C, 0x9D, 0x24, 0x3C, 0x13, 0xFB, 0x1C, 0x3B, 0x2C, 0xDE, 0x3D, 0x7F, 0x35, 0x3F, 0x24, 0x9C, 0x14, 0x3B, 0x01, 0x14, 0x1B, 0x81, 0x13, 0xFB, 0x1C, 0x1B, 0x01, 0x24, 0x1C, 0x86, 0x24, 0x3C, 0x2C, 0x3C, 0x2C, 0x3D, 0x2C, 0x5D, 0x2C, 0x1C, 0x2C, 0x3D, 0x2C, 0x1C, 0x01, 0x2C, 0x3D, 0x84, 0x2C, 0x3C, 0x2C, 0x3D, 0x34, 0x5D, 0x2C, 0x3D, 0x34, 0x5D, 0x01, 0x34, 0x3D, 0x03, 0x34, 0x5D, 0x80, 0x3C, 0x5D, 0x02, 0x3C, 0x5E, 0x03, 0x3C, 0x5D, 0x81, 0x3C, 0x7D, 0x3C, 0x7E, 0x01, 0x3C, 0x5D, 0x80, 0x3C, 0x7D, 0x03, 0x44, 0x7E, 0x02, 0x4C, 0x9E, 0x80, 0x54, 0x9E, 0x01, 0x54, 0xBE, + 0x8E, 0x5C, 0xBE, 0x54, 0x7D, 0x5C, 0x7D, 0x64, 0x5D, 0x6C, 0x5D, 0x7C, 0x5D, 0x9C, 0xDF, 0xAC, 0xDF, 0x7A, 0x76, 0x81, 0xD3, 0x9A, 0x14, 0xA2, 0x14, 0xAA, 0x14, 0xA1, 0xB2, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x93, 0xA9, 0xD3, 0xA1, 0xD3, 0xA9, 0xD3, 0xAA, 0x14, 0xA2, 0x33, 0x92, 0x53, 0x82, 0x93, 0x5A, 0x30, 0x4B, 0x12, 0x9E, 0x5E, 0x85, 0xDB, 0x8D, 0xBC, 0x9D, 0x9C, 0x62, 0xD3, 0x72, 0x52, 0x8A, 0x53, 0xA2, 0x74, 0xA2, 0x13, 0xA9, 0xF3, 0xA9, 0xD3, 0x01, 0xA9, 0xB3, 0x01, 0xA9, 0xF4, 0x88, 0xA1, 0xF4, 0x92, 0x14, 0x82, 0x14, 0x72, 0x76, 0x74, 0x1C, 0x64, 0x5D, 0x54, 0x7D, 0x44, 0x5D, 0x3C, 0x5D, 0x01, 0x3C, 0x7E, 0x84, 0x3C, 0x9E, 0x3C, 0x7E, 0x34, 0x7E, 0x34, 0x5E, 0x3C, 0x7E, 0x01, 0x34, 0x7E, 0x8F, 0x34, 0x5E, 0x34, 0x7E, 0x2C, 0x7E, 0x2C, 0x9E, 0x2C, 0x5D, 0x24, 0x5D, 0x24, 0x5C, 0x24, 0x5D, 0x1C, 0x3C, 0x0B, 0xFB, 0x0C, 0x1B, 0x24, 0xFE, 0x35, 0x5F, 0x2D, 0x5F, 0x24, 0xFE, 0x14, 0x9D, 0x01, 0x0C, 0x1B, 0x01, 0x0B, 0xFB, 0x88, 0x0B, 0xDA, 0x0B, 0x9A, 0x0B, 0xBA, 0x13, 0xFB, 0x13, 0xDB, 0x13, 0xFB, 0x1B, 0xFC, 0x1C, 0x1C, 0x13, 0xDB, 0x02, 0x1B, 0xFC, 0x83, 0x1B, 0xFD, 0x1C, 0x1D, 0x1C, 0x1C, 0x1C, 0x1D, 0x02, 0x1B, 0xFC, 0x82, 0x1C, 0x1D, 0x1B, 0xFC, 0x1C, 0x1D, 0x01, 0x1C, 0x1C, 0x84, 0x1C, 0x1D, 0x24, 0x1D, 0x1B, 0xFC, 0x1C, 0x1D, 0x1C, 0x1C, 0x01, 0x1C, 0x1D, 0x82, 0x1C, 0x1C, 0x1B, 0xFC, 0x1C, 0x1D, 0x01, 0x1C, 0x1C, 0x84, 0x1C, 0x1D, 0x1C, 0x1C, 0x1C, 0x3D, 0x24, 0x5D, 0x1C, 0x1D, 0x01, 0x1C, 0x1C, 0x01, 0x1C, + 0x3D, 0x80, 0x1C, 0x5D, 0x01, 0x1C, 0x3D, 0x84, 0x1C, 0x5D, 0x14, 0x3C, 0x14, 0x5D, 0x14, 0x9D, 0x14, 0xDD, 0x03, 0x1C, 0xFE, 0x83, 0x1C, 0xBD, 0x14, 0x5C, 0x0C, 0x3C, 0x0B, 0xDB, 0x01, 0x14, 0x1C, 0x01, 0x13, 0xFC, 0x80, 0x0B, 0xDB, 0x01, 0x03, 0x9A, 0x02, 0x0B, 0xDB, 0x85, 0x13, 0xFC, 0x13, 0xDB, 0x13, 0xDC, 0x13, 0xBB, 0x13, 0xDB, 0x13, 0xDC, 0x05, 0x13, 0xFC, 0x85, 0x13, 0xDB, 0x13, 0xDC, 0x13, 0xFC, 0x13, 0xDB, 0x13, 0xFC, 0x13, 0xDB, 0x02, 0x13, 0xFC, 0x82, 0x13, 0xDC, 0x13, 0xFC, 0x13, 0xDB, 0x02, 0x13, 0xDC, 0x81, 0x13, 0xBC, 0x13, 0xDC, 0x01, 0x13, 0xBB, 0x02, 0x13, 0xDC, 0x86, 0x13, 0xFC, 0x13, 0xDB, 0x13, 0xFC, 0x0B, 0xDB, 0x0B, 0xDC, 0x0B, 0xDB, 0x0C, 0x1C, 0x01, 0x0C, 0x3C, 0x89, 0x04, 0x1C, 0x0C, 0x7D, 0x24, 0xFF, 0x2D, 0x1F, 0x25, 0x1F, 0x24, 0xDE, 0x0C, 0x3C, 0x0C, 0x1C, 0x0B, 0xDB, 0x0B, 0xFB, 0x02, 0x0B, 0xDB, 0x81, 0x03, 0xBB, 0x03, 0x9A, 0x02, 0x03, 0x7A, 0x01, 0x03, 0x9A, 0x81, 0x0B, 0x9B, 0x0B, 0xBB, 0x04, 0x0B, 0x9B, 0x02, 0x13, 0xBC, 0x8E, 0x13, 0xBB, 0x13, 0xBC, 0x0B, 0xBB, 0x13, 0xDC, 0x0B, 0xBB, 0x13, 0xDC, 0x13, 0xBC, 0x13, 0xDC, 0x13, 0xBC, 0x13, 0xDC, 0x13, 0xBB, 0x13, 0xBC, 0x13, 0xBB, 0x13, 0xBC, 0x0B, 0xBB, 0x01, 0x13, 0xDC, 0x89, 0x0B, 0xBC, 0x0B, 0xBB, 0x0B, 0xDB, 0x0B, 0xBB, 0x0B, 0xDB, 0x0B, 0xBB, 0x0B, 0xDB, 0x0B, 0xBB, 0x0B, 0xDB, 0x03, 0xBA, 0x01, 0x03, 0xBB, 0x8A, 0x03, 0xDB, 0x04, 0x1B, 0x0C, 0x3C, 0x04, 0x3C, 0x0C, 0x7D, 0x1C, 0xDE, 0x1C, 0xFF, 0x14, 0xBD, 0x14, 0x7D, 0x04, + 0x1B, 0x03, 0xFB, 0x03, 0x03, 0xBA, 0x80, 0x0B, 0xBB, 0x01, 0x03, 0xBB, 0x82, 0x03, 0x9A, 0x03, 0x7A, 0x03, 0x5A, 0x01, 0x03, 0x59, 0x02, 0x03, 0x5A, 0x87, 0x03, 0x7A, 0x03, 0x5A, 0x03, 0x7A, 0x03, 0x5A, 0x0B, 0x7B, 0x03, 0x5A, 0x0B, 0x7B, 0x0B, 0x9B, 0x01, 0x0B, 0x7B, 0x85, 0x0B, 0x9B, 0x03, 0x7B, 0x0B, 0x9B, 0x03, 0x7B, 0x0B, 0x9B, 0x03, 0x7B, 0x09, 0x0B, 0x7B, 0x80, 0x0B, 0x9B, 0x01, 0x0B, 0x7A, 0x83, 0x0B, 0x5A, 0x0B, 0x9B, 0x0B, 0x7A, 0x0B, 0x9B, 0x02, 0x0B, 0x7A, 0x80, 0x0B, 0x9B, 0x01, 0x0B, 0xBB, 0x81, 0x03, 0xDB, 0x03, 0xBB, 0x01, 0x03, 0xDB, 0x85, 0x13, 0xBB, 0x13, 0x9B, 0x0B, 0x5A, 0x0B, 0x7A, 0x0B, 0x7B, 0x0B, 0x9B, 0x03, 0x0B, 0xBB, 0x80, 0x03, 0x9B, 0x01, 0x03, 0x9A, 0x02, 0x03, 0x59, 0x8D, 0x03, 0x9A, 0x13, 0xFC, 0x24, 0x5D, 0x2C, 0x9E, 0x34, 0xFF, 0x3D, 0x1F, 0x35, 0x1F, 0x34, 0xFF, 0x2C, 0xDF, 0x1C, 0x9E, 0x14, 0x3D, 0x0C, 0x1C, 0x0B, 0xFC, 0x0B, 0xDC, 0x03, 0x13, 0xDC, 0x81, 0x1B, 0xFD, 0x13, 0xBC, 0x01, 0x13, 0xDC, 0x04, 0x13, 0xBC, 0x80, 0x13, 0x9C, 0x01, 0x13, 0xBC, 0x81, 0x13, 0x9C, 0x0B, 0x9C, 0x05, 0x13, 0xBC, 0x87, 0x13, 0xDD, 0x13, 0xDC, 0x13, 0xDD, 0x1B, 0xDD, 0x13, 0xBC, 0x13, 0x9C, 0x1B, 0xDD, 0x13, 0xBC, 0x04, 0x13, 0xDC, 0x82, 0x13, 0xBC, 0x13, 0xBB, 0x13, 0xDC, 0x01, 0x0B, 0xBB, 0x80, 0x0B, 0xDC, 0x01, 0x0B, 0xBB, 0x02, 0x03, 0x9B, 0x01, 0x03, 0xBB, 0x80, 0x0B, 0xDB, 0x01, 0x0B, 0xFC, 0x8B, 0x14, 0x1D, 0x1C, 0x5D, 0x24, 0x9E, 0x2C, 0xDF, 0x2C, 0xFF, 0x2D, 0x1F, 0x24, 0xDF, 0x1C, 0x9E, + 0x14, 0x5D, 0x14, 0x3C, 0x14, 0x1C, 0x1C, 0x3D, 0x01, 0x1C, 0x1D, 0x83, 0x14, 0x1D, 0x1C, 0x1D, 0x14, 0x1D, 0x1C, 0x1D, 0x01, 0x13, 0xFD, 0x02, 0x13, 0xDC, 0x80, 0x13, 0xBC, 0x02, 0x13, 0xDC, 0x82, 0x13, 0xBC, 0x13, 0xDD, 0x1B, 0xDD, 0x02, 0x13, 0xDD, 0x85, 0x1B, 0xFD, 0x13, 0xFD, 0x13, 0xDD, 0x13, 0xDC, 0x1B, 0xFD, 0x13, 0xFD, 0x01, 0x1B, 0xFD, 0x80, 0x13, 0xDD, 0x01, 0x13, 0xDC, 0x81, 0x1B, 0xFD, 0x13, 0xDC, 0x01, 0x1B, 0xFC, 0x80, 0x13, 0xDC, 0x02, 0x1B, 0xFC, 0x81, 0x13, 0xFC, 0x14, 0x1C, 0x01, 0x13, 0xFC, 0x80, 0x0B, 0xFC, 0x01, 0x0B, 0xDB, 0x86, 0x0B, 0xFB, 0x0C, 0x1C, 0x0B, 0xFB, 0x14, 0x5C, 0x14, 0x5D, 0x24, 0xBE, 0x2D, 0x1F, 0x01, 0x35, 0x3F, 0x86, 0x2C, 0xFF, 0x24, 0xBF, 0x1C, 0x9E, 0x24, 0x9E, 0x24, 0xBF, 0x24, 0x9E, 0x24, 0x7E, 0x02, 0x24, 0x5E, 0x02, 0x1C, 0x1D, 0x82, 0x1B, 0xFD, 0x1C, 0x1D, 0x24, 0x1D, 0x02, 0x1C, 0x1D, 0x01, 0x1B, 0xFD, 0x80, 0x1C, 0x1D, 0x01, 0x1B, 0xFC, 0x04, 0x1C, 0x1D, 0x01, 0x1C, 0x3D, 0x02, 0x1C, 0x1D, 0x01, 0x24, 0x3D, 0x01, 0x24, 0x3E, 0x80, 0x1C, 0x1D, 0x04, 0x24, 0x3D, 0x80, 0x1C, 0x1C, 0x02, 0x24, 0x3D, 0x03, 0x1C, 0x3D, 0x80, 0x14, 0x1C, 0x01, 0x13, 0xFB, 0x87, 0x14, 0x1C, 0x14, 0x3C, 0x0C, 0x1C, 0x1C, 0x7D, 0x24, 0xBE, 0x2C, 0xFF, 0x2D, 0x1F, 0x2C, 0xFF, 0x01, 0x24, 0x9E, 0x87, 0x24, 0xBE, 0x2C, 0xBE, 0x2C, 0x9E, 0x24, 0x7D, 0x24, 0x5D, 0x24, 0x7D, 0x24, 0x5D, 0x24, 0x5E, 0x02, 0x24, 0x3D, 0x83, 0x24, 0x3E, 0x24, 0x3D, 0x24, 0x1D, 0x24, 0x3E, 0x02, 0x24, 0x3D, 0x01, 0x24, + 0x3E, 0x04, 0x24, 0x3D, 0x01, 0x24, 0x3E, 0x80, 0x24, 0x1D, 0x01, 0x2C, 0x3E, 0x81, 0x24, 0x3D, 0x24, 0x1D, 0x01, 0x24, 0x3D, 0x82, 0x2C, 0x3E, 0x24, 0x3E, 0x24, 0x5D, 0x02, 0x24, 0x5E, 0x02, 0x24, 0x5D, 0x01, 0x24, 0x3D, 0x89, 0x1C, 0x1C, 0x24, 0x3D, 0x24, 0x5D, 0x24, 0x3C, 0x1C, 0x3C, 0x24, 0x3D, 0x1C, 0x1C, 0x14, 0x1C, 0x14, 0x3C, 0x1C, 0x3C, 0x01, 0x1C, 0x7D, 0x82, 0x35, 0x1F, 0x35, 0x5F, 0x35, 0x1F, 0x01, 0x24, 0xBE, 0x01, 0x24, 0x9E, 0x84, 0x24, 0x7D, 0x2C, 0x7D, 0x24, 0x5D, 0x2C, 0x5D, 0x2C, 0x3D, 0x01, 0x24, 0x1D, 0x81, 0x2C, 0x3D, 0x24, 0x1D, 0x01, 0x2C, 0x3D, 0x81, 0x24, 0x3D, 0x2C, 0x3D, 0x01, 0x24, 0x3D, 0x80, 0x24, 0x1D, 0x05, 0x24, 0x3D, 0x82, 0x2C, 0x5D, 0x24, 0x3D, 0x2C, 0x5E, 0x05, 0x24, 0x3D, 0x80, 0x2C, 0x5E, 0x05, 0x24, 0x5D, 0x89, 0x24, 0x3D, 0x2C, 0x5E, 0x2C, 0x3D, 0x24, 0x3D, 0x2C, 0x3E, 0x2C, 0x5E, 0x24, 0x3D, 0x24, 0x1D, 0x24, 0x3D, 0x24, 0x5D, 0x02, 0x24, 0x3D, 0x80, 0x1C, 0x3C, 0x01, 0x14, 0x3C, 0x83, 0x1C, 0x7D, 0x2C, 0xFF, 0x35, 0x1F, 0x2C, 0xDE, 0x02, 0x2C, 0xBE, 0x01, 0x2C, 0x7E, 0x83, 0x2C, 0x5E, 0x24, 0x3D, 0x2C, 0x5E, 0x2C, 0x7E, 0x01, 0x2C, 0x5D, 0x80, 0x2C, 0x7E, 0x01, 0x2C, 0x5D, 0x01, 0x2C, 0x7E, 0x80, 0x24, 0x1D, 0x06, 0x2C, 0x3D, 0x80, 0x2C, 0x5D, 0x01, 0x2C, 0x3D, 0x84, 0x2C, 0x5D, 0x2C, 0x3D, 0x2C, 0x5D, 0x2C, 0x5E, 0x2C, 0x5D, 0x01, 0x2C, 0x5E, 0x83, 0x2C, 0x5D, 0x2C, 0x3D, 0x2C, 0x5D, 0x2C, 0x5E, 0x01, 0x2C, 0x5D, 0x87, 0x2C, 0x7D, 0x2C, 0x7E, 0x2C, 0x5D, 0x2C, 0x7E, 0x2C, + 0x5D, 0x2C, 0x3D, 0x2C, 0x5D, 0x2C, 0x7D, 0x02, 0x2C, 0x5D, 0x80, 0x2C, 0x7E, 0x02, 0x2C, 0x5D, 0x01, 0x2C, 0x7D, 0x82, 0x24, 0x5D, 0x24, 0x7D, 0x24, 0x9D, 0x01, 0x34, 0xFF, 0x01, 0x2C, 0xDE, 0x83, 0x2C, 0xBE, 0x2C, 0x9E, 0x2C, 0x7D, 0x2C, 0x9E, 0x01, 0x2C, 0x7E, 0x81, 0x2C, 0x7D, 0x2C, 0x9E, 0x04, 0x2C, 0x5D, 0x80, 0x34, 0x5E, 0x01, 0x2C, 0x5D, 0x01, 0x34, 0x5E, 0x02, 0x2C, 0x5D, 0x80, 0x34, 0x7E, 0x01, 0x2C, 0x5D, 0x81, 0x2C, 0x5E, 0x2C, 0x5D, 0x01, 0x2C, 0x7E, 0x01, 0x2C, 0x5E, 0x80, 0x2C, 0x7E, 0x01, 0x2C, 0x5D, 0x81, 0x34, 0x7E, 0x2C, 0x5E, 0x01, 0x2C, 0x5D, 0x88, 0x34, 0x7E, 0x2C, 0x5D, 0x34, 0x7E, 0x2C, 0x5E, 0x2C, 0x5D, 0x34, 0x5E, 0x34, 0x7E, 0x2C, 0x5D, 0x34, 0x7E, 0x01, 0x2C, 0x5D, 0x85, 0x34, 0x5D, 0x34, 0x7E, 0x2C, 0x5D, 0x2C, 0x7D, 0x34, 0x7E, 0x34, 0x7D, 0x01, 0x2C, 0x7D, 0x87, 0x2C, 0x5D, 0x24, 0x3C, 0x24, 0x5C, 0x3D, 0x3F, 0x45, 0x7F, 0x2C, 0xDE, 0x34, 0xDE, 0x3C, 0xDF, 0x04, 0x34, 0x7E, 0x01, 0x34, 0x9E, 0x04, 0x34, 0x7E, 0x80, 0x34, 0x5D, 0x01, 0x34, 0x7E, 0x02, 0x34, 0x5E, 0x81, 0x34, 0x7E, 0x2C, 0x5E, 0x01, 0x34, 0x5E, 0x01, 0x34, 0x7E, 0x01, 0x2C, 0x5D, 0x83, 0x34, 0x7E, 0x2C, 0x5E, 0x2C, 0x5D, 0x34, 0x5E, 0x01, 0x2C, 0x5E, 0x80, 0x34, 0x7E, 0x02, 0x2C, 0x5D, 0x80, 0x34, 0x5E, 0x01, 0x2C, 0x5D, 0x80, 0x34, 0x7D, 0x05, 0x2C, 0x5D, 0x83, 0x34, 0x7D, 0x2C, 0x5D, 0x34, 0x7D, 0x34, 0x9E, 0x01, 0x34, 0x7D, 0x01, 0x34, 0x9E, 0x89, 0x2C, 0x7D, 0x34, 0x7D, 0x34, 0x9E, 0x2C, 0x9D, 0x3D, 0x5F, 0x35, 0x3F, + 0x34, 0xDE, 0x34, 0xDF, 0x34, 0xBE, 0x34, 0x9E, 0x02, 0x34, 0x7E, 0x80, 0x34, 0x9E, 0x03, 0x34, 0x7E, 0x81, 0x34, 0x5D, 0x34, 0x7E, 0x01, 0x34, 0x7D, 0x08, 0x34, 0x7E, 0x84, 0x34, 0x5E, 0x34, 0x7E, 0x2C, 0x5E, 0x34, 0x5E, 0x34, 0x7E, 0x01, 0x2C, 0x5E, 0x80, 0x34, 0x7E, 0x01, 0x34, 0x5E, 0x80, 0x2C, 0x5E, 0x01, 0x34, 0x5E, 0x81, 0x2C, 0x5D, 0x2C, 0x5E, 0x01, 0x34, 0x5E, 0x01, 0x2C, 0x5D, 0x81, 0x34, 0x7E, 0x34, 0x5E, 0x02, 0x34, 0x7E, 0x80, 0x2C, 0x5E, 0x02, 0x2C, 0x7E, 0x85, 0x34, 0x7E, 0x34, 0x9E, 0x34, 0x7E, 0x3C, 0x9E, 0x34, 0x7E, 0x34, 0x7D, 0x01, 0x2C, 0x7D, 0x86, 0x2C, 0x9D, 0x34, 0xFE, 0x45, 0x9F, 0x3D, 0x3F, 0x2C, 0xDE, 0x2C, 0xBE, 0x2C, 0x9E, 0x02, 0x2C, 0x7D, 0x01, 0x34, 0x7E, 0x82, 0x2C, 0x5D, 0x34, 0x7D, 0x2C, 0x7D, 0x01, 0x34, 0x7E, 0x01, 0x2C, 0x5D, 0x81, 0x2C, 0x5E, 0x34, 0x7E, 0x01, 0x2C, 0x5E, 0x80, 0x34, 0x7E, 0x01, 0x2C, 0x5E, 0x86, 0x34, 0x7E, 0x2C, 0x5E, 0x2C, 0x5D, 0x2C, 0x5E, 0x34, 0x7E, 0x2C, 0x5E, 0x2C, 0x5D, 0x01, 0x2C, 0x5E, 0x81, 0x2C, 0x3D, 0x2C, 0x5E, 0x01, 0x34, 0x7E, 0x01, 0x2C, 0x5E, 0x01, 0x34, 0x7E, 0x01, 0x2C, 0x5E, 0x80, 0x2C, 0x7E, 0x02, 0x2C, 0x5E, 0x80, 0x2C, 0x5D, 0x01, 0x34, 0x7E, 0x80, 0x2C, 0x5E, 0x02, 0x2C, 0x5D, 0x8D, 0x34, 0x9E, 0x2C, 0x7D, 0x2C, 0x5D, 0x2C, 0x7D, 0x2C, 0x5D, 0x24, 0x5C, 0x2C, 0xBE, 0x34, 0xFE, 0x3D, 0x3F, 0x35, 0x3F, 0x35, 0x1F, 0x2C, 0xDE, 0x2C, 0xBE, 0x2C, 0x9D, 0x01, 0x2C, 0x7D, 0x82, 0x34, 0x7E, 0x34, 0x7D, 0x34, 0x7E, 0x01, 0x34, 0x5D, 0x80, 0x34, + 0x5E, 0x02, 0x34, 0x3D, 0x82, 0x34, 0x5D, 0x34, 0x5E, 0x34, 0x5D, 0x06, 0x34, 0x5E, 0x80, 0x3C, 0x5E, 0x01, 0x3C, 0x7E, 0x82, 0x3C, 0x5E, 0x3C, 0x7E, 0x44, 0x5E, 0x04, 0x3C, 0x5E, 0x80, 0x44, 0x7E, 0x02, 0x3C, 0x5E, 0x80, 0x44, 0x7E, 0x01, 0x44, 0x5E, 0x01, 0x44, 0x5D, 0x81, 0x4C, 0x5E, 0x4C, 0x7E, 0x01, 0x4C, 0x7D, 0x01, 0x4C, 0x5D, 0x8B, 0x54, 0x5D, 0x54, 0x3D, 0x5C, 0x3D, 0x64, 0x3D, 0x6C, 0x5D, 0x7C, 0x5D, 0x8C, 0x5D, 0x9C, 0x1C, 0x71, 0xD3, 0x8A, 0x14, 0x9A, 0x14, 0xA2, 0x14, 0x02, 0xA9, 0xF3, 0x80, 0xA9, 0xF4, 0x01, 0xA9, 0xD3, 0x8F, 0xA9, 0xF4, 0xAA, 0x14, 0xA2, 0x13, 0x9A, 0x33, 0x8A, 0x53, 0x7A, 0xB3, 0x39, 0xAE, 0x9D, 0x7B, 0x9D, 0xFD, 0x95, 0x7B, 0xA5, 0x7C, 0x73, 0x14, 0x72, 0x32, 0x8A, 0x53, 0x9A, 0x33, 0xA2, 0x13, 0x03, 0xA9, 0xD3, 0x01, 0xA9, 0xF4, 0x89, 0xA2, 0x14, 0x9A, 0x14, 0x8A, 0x35, 0x6A, 0x35, 0x6B, 0x9A, 0x5C, 0x1C, 0x4C, 0x1C, 0x44, 0x3D, 0x3C, 0x1C, 0x34, 0x3D, 0x01, 0x34, 0x1C, 0x01, 0x2C, 0x1D, 0x81, 0x34, 0x3D, 0x2C, 0x1D, 0x03, 0x2C, 0x3D, 0x02, 0x24, 0x3D, 0x02, 0x24, 0x5D, 0x80, 0x24, 0x3D, 0x01, 0x1C, 0x3C, 0x82, 0x1C, 0x5D, 0x1C, 0x9D, 0x24, 0xDE, 0x01, 0x2D, 0x3F, 0x81, 0x24, 0xFF, 0x24, 0xBE, 0x01, 0x1C, 0x5D, 0x82, 0x1C, 0x3C, 0x1C, 0x3D, 0x1C, 0x3C, 0x03, 0x24, 0x5D, 0x80, 0x24, 0x3D, 0x06, 0x24, 0x1D, 0x80, 0x1B, 0xFD, 0x01, 0x24, 0x3D, 0x80, 0x1C, 0x1D, 0x02, 0x24, 0x1D, 0x80, 0x24, 0x3D, 0x01, 0x24, 0x1D, 0x80, 0x23, 0xFD, 0x01, 0x24, 0x3E, 0x03, 0x24, 0x1D, 0x02, 0x1C, 0x1D, + 0x02, 0x24, 0x3D, 0x01, 0x1C, 0x1D, 0x03, 0x1C, 0x3D, 0x01, 0x1C, 0x1D, 0x80, 0x1C, 0x1C, 0x02, 0x14, 0x1C, 0x82, 0x0B, 0xFC, 0x0C, 0x1C, 0x0C, 0x3C, 0x01, 0x14, 0x5C, 0x81, 0x14, 0x7D, 0x1C, 0xBE, 0x01, 0x24, 0xDE, 0x82, 0x24, 0xBE, 0x1C, 0x7D, 0x14, 0x3C, 0x01, 0x0B, 0xFC, 0x01, 0x14, 0x1C, 0x80, 0x13, 0xFC, 0x01, 0x14, 0x1C, 0x03, 0x1C, 0x3D, 0x01, 0x1C, 0x1D, 0x82, 0x1B, 0xFC, 0x1C, 0x1D, 0x1B, 0xFD, 0x02, 0x1C, 0x1D, 0x80, 0x1B, 0xFD, 0x07, 0x1C, 0x1D, 0x84, 0x14, 0x1D, 0x1C, 0x1D, 0x1B, 0xFD, 0x13, 0xFC, 0x1C, 0x1D, 0x01, 0x1B, 0xFD, 0x89, 0x1C, 0x1D, 0x1B, 0xFD, 0x1B, 0xDC, 0x1B, 0xFD, 0x1B, 0xDD, 0x1B, 0xDC, 0x1B, 0xFD, 0x1B, 0xFC, 0x1B, 0xFD, 0x1C, 0x1D, 0x02, 0x13, 0xFC, 0x81, 0x0B, 0xDB, 0x0B, 0xFC, 0x01, 0x0B, 0xDC, 0x80, 0x0B, 0xFC, 0x01, 0x03, 0xDB, 0x89, 0x0C, 0x1C, 0x1C, 0x9D, 0x24, 0xBE, 0x24, 0xDF, 0x24, 0xBE, 0x1C, 0x5D, 0x0B, 0xFC, 0x03, 0xDB, 0x0B, 0xFB, 0x0B, 0xFC, 0x01, 0x0B, 0xDB, 0x01, 0x0B, 0xDC, 0x01, 0x13, 0xDC, 0x01, 0x1C, 0x1D, 0x01, 0x1B, 0xFD, 0x88, 0x13, 0xDC, 0x1B, 0xFD, 0x13, 0xDC, 0x13, 0xBC, 0x1B, 0xDD, 0x13, 0xBC, 0x13, 0x9C, 0x13, 0xBC, 0x13, 0xDC, 0x01, 0x13, 0xBC, 0x04, 0x13, 0xDC, 0x80, 0x13, 0x9C, 0x04, 0x13, 0xBC, 0x80, 0x0B, 0x9B, 0x02, 0x13, 0xBC, 0x82, 0x13, 0xDC, 0x0B, 0xBB, 0x0B, 0x9B, 0x05, 0x0B, 0xBB, 0x87, 0x03, 0xBB, 0x0B, 0xDB, 0x03, 0xBB, 0x03, 0xDB, 0x03, 0xBB, 0x03, 0xDB, 0x0C, 0x3C, 0x14, 0x7D, 0x01, 0x1C, 0x9E, 0x01, 0x24, 0xDF, 0x84, 0x1C, 0x7E, 0x14, 0x1C, + 0x0B, 0xDB, 0x03, 0xBA, 0x03, 0xBB, 0x01, 0x0B, 0xDB, 0x83, 0x03, 0xBB, 0x03, 0x9B, 0x0B, 0x9B, 0x0B, 0xBB, 0x01, 0x0B, 0x9B, 0x01, 0x13, 0xDC, 0x81, 0x13, 0xFD, 0x13, 0xDC, 0x01, 0x13, 0xBC, 0x80, 0x0B, 0x9C, 0x01, 0x13, 0x9C, 0x02, 0x0B, 0x9B, 0x01, 0x0B, 0x9C, 0x81, 0x0B, 0x9B, 0x0B, 0xBC, 0x02, 0x0B, 0x9C, 0x83, 0x13, 0x9C, 0x0B, 0x7B, 0x13, 0x9C, 0x13, 0x7B, 0x01, 0x13, 0x9C, 0x81, 0x0B, 0x9C, 0x13, 0xBC, 0x01, 0x0B, 0x7B, 0x82, 0x0B, 0x9B, 0x13, 0x9C, 0x0B, 0x7B, 0x01, 0x0B, 0x9B, 0x04, 0x0B, 0x7A, 0x85, 0x03, 0x7A, 0x03, 0x9A, 0x03, 0x9B, 0x03, 0xBB, 0x0B, 0xDC, 0x0B, 0xFC, 0x01, 0x1B, 0xDC, 0x81, 0x24, 0x1D, 0x23, 0xFD, 0x01, 0x1C, 0x1D, 0x80, 0x13, 0xDC, 0x01, 0x0B, 0xBB, 0x80, 0x03, 0x9A, 0x01, 0x03, 0x7A, 0x8E, 0x03, 0x9A, 0x0B, 0xFB, 0x1C, 0x9E, 0x2C, 0xFF, 0x35, 0x5F, 0x3D, 0x7F, 0x35, 0x1F, 0x34, 0xFF, 0x2C, 0x9F, 0x24, 0x5E, 0x24, 0x3D, 0x1B, 0xFD, 0x1B, 0xFC, 0x13, 0xDD, 0x1B, 0xFD, 0x02, 0x1C, 0x1D, 0x02, 0x1B, 0xFD, 0x80, 0x1C, 0x1D, 0x01, 0x1B, 0xFD, 0x81, 0x24, 0x1D, 0x1C, 0x1D, 0x02, 0x1B, 0xFD, 0x81, 0x23, 0xFD, 0x1B, 0xFD, 0x02, 0x1B, 0xDD, 0x85, 0x1B, 0xFD, 0x24, 0x1E, 0x1B, 0xFE, 0x1B, 0xFD, 0x1B, 0xDD, 0x1B, 0xFE, 0x04, 0x1B, 0xFD, 0x01, 0x23, 0xFE, 0x01, 0x24, 0x1E, 0x87, 0x23, 0xFD, 0x23, 0xFE, 0x24, 0x1E, 0x23, 0xFD, 0x24, 0x1E, 0x24, 0x1D, 0x1B, 0xFD, 0x24, 0x3E, 0x01, 0x1C, 0x3D, 0x85, 0x24, 0x5E, 0x1C, 0x1D, 0x14, 0x1D, 0x13, 0xFD, 0x0B, 0xBC, 0x0B, 0xFC, 0x02, 0x14, 0x3D, 0x81, 0x1C, + 0xBE, 0x24, 0xDF, 0x03, 0x2C, 0xFF, 0x86, 0x2C, 0xDF, 0x24, 0x9E, 0x1C, 0x3D, 0x13, 0xFC, 0x13, 0xDC, 0x1C, 0x1D, 0x14, 0x1C, 0x01, 0x1C, 0x1D, 0x01, 0x1B, 0xFC, 0x04, 0x1C, 0x1D, 0x80, 0x24, 0x1E, 0x02, 0x24, 0x3E, 0x01, 0x24, 0x1E, 0x80, 0x1C, 0x1E, 0x03, 0x24, 0x1E, 0x80, 0x24, 0x3E, 0x01, 0x24, 0x1E, 0x80, 0x1B, 0xFE, 0x01, 0x24, 0x1E, 0x01, 0x1C, 0x1E, 0x81, 0x24, 0x1E, 0x1B, 0xFE, 0x03, 0x24, 0x1E, 0x84, 0x24, 0x1D, 0x24, 0x3E, 0x2C, 0x5F, 0x2C, 0x5E, 0x2C, 0x3E, 0x01, 0x2C, 0x5E, 0x8A, 0x2C, 0x7E, 0x2C, 0x9E, 0x24, 0x5E, 0x1C, 0x5D, 0x14, 0x1C, 0x0B, 0xFC, 0x14, 0x3D, 0x14, 0x7D, 0x14, 0x5D, 0x14, 0x7D, 0x24, 0xDF, 0x01, 0x2D, 0x1F, 0x85, 0x35, 0x1F, 0x2C, 0xFF, 0x2C, 0xDF, 0x24, 0x9E, 0x1C, 0x5E, 0x1C, 0x3D, 0x01, 0x1C, 0x1D, 0x81, 0x1C, 0x3D, 0x1C, 0x1D, 0x01, 0x24, 0x5E, 0x02, 0x2C, 0x5E, 0x80, 0x2C, 0x5F, 0x03, 0x2C, 0x7F, 0x81, 0x2C, 0x5F, 0x2C, 0x5E, 0x01, 0x2C, 0x7F, 0x01, 0x2C, 0x5E, 0x01, 0x2C, 0x7F, 0x01, 0x24, 0x5E, 0x81, 0x2C, 0x7E, 0x24, 0x5E, 0x02, 0x24, 0x3E, 0x81, 0x24, 0x5E, 0x2C, 0x5F, 0x01, 0x24, 0x5E, 0x01, 0x2C, 0x5E, 0x01, 0x2C, 0x5F, 0x01, 0x2C, 0x5E, 0x80, 0x2C, 0x7E, 0x02, 0x34, 0x9F, 0x01, 0x34, 0x9E, 0x8D, 0x34, 0x9F, 0x2C, 0xBF, 0x24, 0x7E, 0x24, 0x5E, 0x1C, 0x5D, 0x1C, 0x3D, 0x1C, 0x5D, 0x24, 0x9E, 0x1C, 0x5D, 0x1C, 0x7D, 0x2C, 0xFF, 0x35, 0x3F, 0x2C, 0xFF, 0x24, 0xBF, 0x03, 0x24, 0x9E, 0x80, 0x24, 0x7E, 0x01, 0x24, 0x5E, 0x80, 0x2C, 0x9F, 0x01, 0x2C, 0x9E, 0x80, 0x2C, 0x7E, 0x04, + 0x34, 0x7F, 0x80, 0x34, 0x9F, 0x02, 0x2C, 0x7F, 0x81, 0x34, 0x9F, 0x2C, 0x9F, 0x04, 0x2C, 0x7F, 0x01, 0x2C, 0x5E, 0x02, 0x34, 0x7F, 0x81, 0x2C, 0x5E, 0x34, 0x5F, 0x05, 0x34, 0x7F, 0x02, 0x2C, 0x7E, 0x80, 0x2C, 0x7F, 0x01, 0x2C, 0x5E, 0x90, 0x34, 0x7E, 0x34, 0xBF, 0x3C, 0xDF, 0x34, 0xBF, 0x34, 0x9F, 0x34, 0xBF, 0x2C, 0x9E, 0x2C, 0xBF, 0x2C, 0x9E, 0x24, 0x9E, 0x24, 0xBE, 0x2C, 0xFF, 0x24, 0xDE, 0x2C, 0xFF, 0x35, 0x3F, 0x3D, 0x5F, 0x2C, 0xDF, 0x01, 0x24, 0x7D, 0x80, 0x24, 0x7E, 0x01, 0x2C, 0x9E, 0x03, 0x2C, 0x7E, 0x03, 0x34, 0x9F, 0x80, 0x34, 0x7E, 0x04, 0x34, 0x9F, 0x85, 0x34, 0x7F, 0x34, 0x9F, 0x2C, 0x7E, 0x34, 0x7F, 0x2C, 0x7E, 0x34, 0x7F, 0x01, 0x2C, 0x7F, 0x82, 0x2C, 0x5E, 0x2C, 0x7E, 0x34, 0x7F, 0x01, 0x34, 0x9F, 0x02, 0x2C, 0x7E, 0x80, 0x34, 0x9F, 0x01, 0x2C, 0x7E, 0x80, 0x2C, 0x9E, 0x01, 0x2C, 0x7E, 0x80, 0x2C, 0x9E, 0x01, 0x2C, 0x7E, 0x80, 0x34, 0x7F, 0x01, 0x2C, 0x5E, 0x82, 0x34, 0x7E, 0x34, 0x7F, 0x34, 0x9F, 0x01, 0x3C, 0xBF, 0x02, 0x34, 0xBF, 0x89, 0x2C, 0xBF, 0x2C, 0x9E, 0x24, 0xBE, 0x2C, 0xFF, 0x35, 0x1F, 0x35, 0x3F, 0x2C, 0xDE, 0x2C, 0xFF, 0x2C, 0xDF, 0x2C, 0xBE, 0x01, 0x2C, 0x9E, 0x80, 0x2C, 0x5E, 0x01, 0x34, 0x7E, 0x81, 0x34, 0x9F, 0x3C, 0xBF, 0x02, 0x3C, 0xDF, 0x81, 0x2C, 0x7E, 0x34, 0x9F, 0x01, 0x34, 0xBF, 0x81, 0x34, 0x9F, 0x3C, 0xBF, 0x0D, 0x34, 0x9F, 0x82, 0x34, 0x7E, 0x34, 0x9F, 0x34, 0xBF, 0x01, 0x34, 0x9F, 0x80, 0x34, 0x7E, 0x04, 0x34, 0x9E, 0x80, 0x34, 0x9F, 0x02, 0x34, 0xBF, 0x80, 0x34, 0xBE, + 0x01, 0x34, 0xBF, 0x80, 0x34, 0xDF, 0x01, 0x34, 0xBF, 0x80, 0x34, 0xDF, 0x03, 0x34, 0xBE, 0x82, 0x34, 0xDE, 0x3D, 0x5F, 0x35, 0x1F, 0x02, 0x2C, 0xDE, 0x80, 0x2C, 0xBE, 0x01, 0x2C, 0x9E, 0x80, 0x34, 0x9E, 0x01, 0x34, 0xBF, 0x82, 0x34, 0xDF, 0x3C, 0xDF, 0x34, 0xBF, 0x02, 0x34, 0x9F, 0x82, 0x3C, 0xBF, 0x3C, 0xDF, 0x3C, 0xBF, 0x01, 0x34, 0x9E, 0x02, 0x3C, 0xBF, 0x83, 0x34, 0x9E, 0x3C, 0x9F, 0x34, 0x9F, 0x3C, 0xDF, 0x01, 0x3C, 0xBF, 0x81, 0x34, 0x9F, 0x34, 0xBF, 0x03, 0x3C, 0xBF, 0x01, 0x3C, 0x9F, 0x80, 0x34, 0x9F, 0x01, 0x3C, 0xBF, 0x82, 0x34, 0x9F, 0x34, 0x9E, 0x34, 0x9F, 0x02, 0x3C, 0x9F, 0x03, 0x3C, 0xBF, 0x82, 0x44, 0xDF, 0x44, 0xFF, 0x3C, 0xDF, 0x01, 0x44, 0xFF, 0x81, 0x3C, 0xFF, 0x3C, 0xDF, 0x01, 0x34, 0xBE, 0x01, 0x34, 0xDF, 0x82, 0x2C, 0xBD, 0x4D, 0x9F, 0x34, 0xDE, 0x02, 0x34, 0xDF, 0x01, 0x3C, 0xDF, 0x85, 0x3C, 0xBF, 0x3C, 0xDF, 0x3C, 0xBF, 0x3C, 0xDF, 0x3C, 0xBF, 0x3C, 0xDF, 0x02, 0x3C, 0xBF, 0x01, 0x3C, 0x9F, 0x80, 0x34, 0x9E, 0x02, 0x3C, 0xBF, 0x81, 0x3C, 0x9F, 0x34, 0x9F, 0x01, 0x3C, 0xBF, 0x80, 0x3C, 0x9F, 0x01, 0x34, 0x9F, 0x01, 0x3C, 0xBF, 0x81, 0x3C, 0x9F, 0x34, 0x9F, 0x05, 0x3C, 0xBF, 0x80, 0x3C, 0xDF, 0x01, 0x3C, 0xBF, 0x80, 0x34, 0x9F, 0x04, 0x3C, 0xBF, 0x01, 0x3C, 0xDF, 0x80, 0x3C, 0xBF, 0x03, 0x44, 0xFF, 0x05, 0x3C, 0xDF, 0x88, 0x3C, 0xFF, 0x2C, 0x9E, 0x3D, 0x3F, 0x35, 0x1F, 0x34, 0xDF, 0x3C, 0xFF, 0x3C, 0xDF, 0x3C, 0xBF, 0x34, 0xBF, 0x05, 0x3C, 0xDF, 0x02, 0x3C, 0xBF, 0x03, 0x3C, 0xDF, 0x06, 0x3C, + 0xBF, 0x80, 0x3C, 0xDF, 0x08, 0x3C, 0xBF, 0x01, 0x34, 0x9F, 0x02, 0x3C, 0xBF, 0x80, 0x3C, 0x9F, 0x01, 0x3C, 0xBF, 0x81, 0x3C, 0x9F, 0x34, 0x9F, 0x02, 0x3C, 0xBF, 0x03, 0x3C, 0xDF, 0x02, 0x44, 0xFF, 0x01, 0x44, 0xDF, 0x02, 0x44, 0xFF, 0x82, 0x3C, 0xFF, 0x3C, 0xDF, 0x34, 0xDE, 0x01, 0x35, 0x3F, 0x01, 0x35, 0x1F, 0x83, 0x34, 0xDF, 0x2C, 0xBE, 0x2C, 0x9E, 0x2C, 0x7E, 0x05, 0x3C, 0xBF, 0x01, 0x3C, 0x9F, 0x80, 0x34, 0x9F, 0x01, 0x3C, 0xBF, 0x88, 0x3C, 0x9F, 0x3C, 0xBF, 0x34, 0x9F, 0x3C, 0x9F, 0x34, 0x9F, 0x34, 0xBF, 0x3C, 0xBF, 0x3C, 0x9F, 0x34, 0x9F, 0x02, 0x3C, 0x9F, 0x03, 0x34, 0x9F, 0x02, 0x3C, 0x9F, 0x01, 0x34, 0x9F, 0x80, 0x34, 0xBF, 0x01, 0x3C, 0xBF, 0x01, 0x34, 0x9F, 0x80, 0x34, 0xBF, 0x02, 0x3C, 0xBF, 0x02, 0x3C, 0xDF, 0x02, 0x3C, 0xBF, 0x01, 0x34, 0xBF, 0x81, 0x3C, 0xBF, 0x34, 0xBF, 0x01, 0x34, 0xBE, 0x81, 0x34, 0xDF, 0x34, 0xFF, 0x01, 0x35, 0x3F, 0x83, 0x2C, 0xDE, 0x2C, 0xDF, 0x34, 0xDF, 0x2C, 0x9E, 0x01, 0x2C, 0x7E, 0x81, 0x2C, 0x5D, 0x34, 0x7E, 0x03, 0x3C, 0x9F, 0x01, 0x3C, 0x7F, 0x81, 0x34, 0x7E, 0x3C, 0x7F, 0x01, 0x3C, 0x9F, 0x81, 0x3C, 0x7F, 0x34, 0x7E, 0x01, 0x3C, 0x7F, 0x80, 0x3C, 0x9F, 0x02, 0x3C, 0x7F, 0x02, 0x44, 0x9F, 0x02, 0x44, 0x7F, 0x01, 0x44, 0x9F, 0x83, 0x4C, 0xBF, 0x4C, 0x9F, 0x4C, 0xBF, 0x4C, 0x9F, 0x02, 0x4C, 0xBF, 0x80, 0x54, 0xBF, 0x01, 0x4C, 0x9F, 0x01, 0x54, 0x9F, 0x02, 0x54, 0x9E, 0x8E, 0x5C, 0x9E, 0x5C, 0xBF, 0x64, 0x9E, 0x64, 0x7E, 0x64, 0x5D, 0x6C, 0x5D, 0x74, 0x3D, 0x84, 0x5D, 0x94, + 0x3D, 0x8B, 0x38, 0x79, 0xF4, 0x92, 0x14, 0xA2, 0x14, 0xAA, 0x14, 0xA1, 0xF3, 0x01, 0xA9, 0xD3, 0x01, 0xA9, 0xF4, 0xA4, 0xA1, 0xB2, 0xA1, 0xD3, 0xA1, 0xF3, 0xA2, 0x13, 0x92, 0x33, 0x8A, 0x53, 0x62, 0x51, 0x5A, 0xB2, 0xBE, 0x3F, 0xA5, 0x7C, 0xAD, 0x7C, 0x83, 0x96, 0x69, 0xF1, 0x8A, 0x53, 0x92, 0x13, 0x99, 0xF3, 0xA9, 0xF3, 0xA9, 0xD3, 0xB1, 0xF4, 0xA9, 0xF4, 0xA9, 0xD3, 0xA9, 0xF4, 0xAA, 0x14, 0x9A, 0x14, 0x8A, 0x14, 0x72, 0x14, 0x7B, 0xBA, 0x74, 0x5D, 0x5C, 0x3D, 0x44, 0x1D, 0x44, 0x3D, 0x3C, 0x5D, 0x3C, 0x5E, 0x44, 0x9F, 0x3C, 0x5E, 0x3C, 0x9F, 0x34, 0x7E, 0x04, 0x3C, 0x9F, 0x01, 0x34, 0x9E, 0x01, 0x2C, 0x7E, 0x80, 0x34, 0x9E, 0x01, 0x34, 0xBF, 0x01, 0x2C, 0x9E, 0x87, 0x24, 0x7E, 0x24, 0x7D, 0x1C, 0x7D, 0x24, 0xBE, 0x2C, 0xFF, 0x2D, 0x1F, 0x2C, 0xFF, 0x24, 0xDF, 0x02, 0x24, 0x9E, 0x01, 0x24, 0x7E, 0x80, 0x24, 0x5D, 0x01, 0x24, 0x3D, 0x81, 0x2C, 0x7E, 0x34, 0x7E, 0x04, 0x34, 0x7F, 0x03, 0x34, 0x9F, 0x80, 0x2C, 0x5E, 0x01, 0x2C, 0x5F, 0x84, 0x2C, 0x5E, 0x2C, 0x5F, 0x2C, 0x7F, 0x2C, 0x5F, 0x2C, 0x7F, 0x03, 0x2C, 0x5F, 0x84, 0x2C, 0x5E, 0x24, 0x5E, 0x2C, 0x5E, 0x2C, 0x7E, 0x2C, 0x5E, 0x01, 0x24, 0x3E, 0x82, 0x24, 0x5E, 0x2C, 0x7E, 0x2C, 0x7F, 0x01, 0x2C, 0x7E, 0x82, 0x24, 0x7E, 0x2C, 0x7E, 0x2C, 0x9E, 0x02, 0x2C, 0x7E, 0x01, 0x2C, 0x9E, 0x91, 0x24, 0x7E, 0x24, 0x5D, 0x24, 0x9E, 0x2C, 0xBF, 0x24, 0x9E, 0x24, 0x7D, 0x1C, 0x3D, 0x24, 0x9E, 0x24, 0xBE, 0x2C, 0xFF, 0x2D, 0x1F, 0x2C, 0xDF, 0x24, 0x9E, 0x1C, 0x5D, 0x1C, 0x7E, + 0x24, 0x9E, 0x24, 0x7E, 0x24, 0x5E, 0x02, 0x24, 0x3E, 0x01, 0x24, 0x5E, 0x81, 0x2C, 0x5E, 0x24, 0x5E, 0x01, 0x24, 0x3E, 0x81, 0x24, 0x5E, 0x24, 0x3E, 0x01, 0x24, 0x5E, 0x02, 0x24, 0x3E, 0x80, 0x2C, 0x3E, 0x04, 0x24, 0x3E, 0x80, 0x1C, 0x3D, 0x01, 0x24, 0x3E, 0x80, 0x24, 0x5E, 0x02, 0x24, 0x1E, 0x02, 0x2C, 0x3E, 0x81, 0x2C, 0x1E, 0x23, 0xFE, 0x02, 0x2C, 0x3E, 0x87, 0x2C, 0x5E, 0x24, 0x3E, 0x24, 0x5E, 0x1C, 0x3D, 0x1C, 0x3E, 0x1C, 0x3D, 0x1C, 0x5E, 0x24, 0x7E, 0x01, 0x1C, 0x5E, 0x02, 0x1C, 0x3D, 0x01, 0x14, 0x1C, 0x85, 0x1C, 0x3D, 0x24, 0x9F, 0x2C, 0xDF, 0x2C, 0xFF, 0x24, 0xDF, 0x1C, 0x7E, 0x01, 0x14, 0x3D, 0x02, 0x14, 0x1D, 0x03, 0x13, 0xFD, 0x01, 0x1C, 0x1D, 0x81, 0x24, 0x3E, 0x1C, 0x1E, 0x01, 0x1B, 0xFD, 0x02, 0x23, 0xFD, 0x01, 0x24, 0x1E, 0x81, 0x1B, 0xFD, 0x1C, 0x1D, 0x04, 0x1B, 0xFD, 0x80, 0x1C, 0x1D, 0x02, 0x1B, 0xFD, 0x80, 0x23, 0xFD, 0x01, 0x24, 0x1E, 0x80, 0x24, 0x3E, 0x01, 0x24, 0x1D, 0x01, 0x23, 0xFD, 0x02, 0x24, 0x1D, 0x01, 0x24, 0x3E, 0x02, 0x24, 0x5E, 0x02, 0x1C, 0x3D, 0x83, 0x14, 0x1D, 0x0B, 0xBB, 0x13, 0xFC, 0x14, 0x1C, 0x01, 0x13, 0xFC, 0x88, 0x14, 0x1C, 0x24, 0x7E, 0x2C, 0xBF, 0x34, 0xFF, 0x2D, 0x1F, 0x2C, 0xDF, 0x24, 0x9E, 0x14, 0x3D, 0x0B, 0xFC, 0x01, 0x0B, 0xDB, 0x83, 0x13, 0xDC, 0x0B, 0xDC, 0x13, 0xDC, 0x0B, 0xBC, 0x01, 0x13, 0xBC, 0x81, 0x13, 0xDC, 0x1B, 0xDD, 0x01, 0x1B, 0xFD, 0x82, 0x24, 0x1D, 0x1B, 0xFD, 0x23, 0xFE, 0x01, 0x23, 0xFD, 0x81, 0x23, 0xFE, 0x24, 0x1E, 0x01, 0x1B, 0xDD, 0x80, 0x13, + 0xDD, 0x05, 0x1B, 0xDD, 0x01, 0x1B, 0xBD, 0x81, 0x1B, 0xDD, 0x1B, 0xBD, 0x01, 0x1B, 0xDD, 0x01, 0x1B, 0xFD, 0x81, 0x1B, 0xDC, 0x1B, 0xDD, 0x01, 0x1B, 0xFD, 0x80, 0x1B, 0xFC, 0x01, 0x1B, 0xDC, 0x02, 0x13, 0xDC, 0x80, 0x13, 0xFD, 0x01, 0x13, 0xFC, 0x01, 0x0B, 0xDC, 0x03, 0x0B, 0x3A, 0x82, 0x0B, 0x5A, 0x03, 0x39, 0x03, 0x19, 0x01, 0x03, 0x39, 0x83, 0x03, 0x7A, 0x03, 0x9A, 0x14, 0x3D, 0x24, 0xDF, 0x01, 0x2D, 0x1F, 0x86, 0x2C, 0xFF, 0x2C, 0xBE, 0x1C, 0x5D, 0x0B, 0xBB, 0x03, 0x59, 0x02, 0xF9, 0x02, 0xD9, 0x01, 0x02, 0xD8, 0x02, 0x02, 0xD9, 0x02, 0x02, 0xF9, 0x83, 0x03, 0x1A, 0x03, 0x19, 0x03, 0x3A, 0x03, 0x1A, 0x01, 0x0B, 0x3A, 0x80, 0x0B, 0x5A, 0x01, 0x0B, 0x3A, 0x80, 0x0B, 0x1A, 0x01, 0x0B, 0x3A, 0x82, 0x0B, 0x1A, 0x0B, 0x3B, 0x0B, 0x3A, 0x01, 0x13, 0x5B, 0x80, 0x0B, 0x3B, 0x01, 0x13, 0x5B, 0x80, 0x0B, 0x5B, 0x01, 0x13, 0x5B, 0x80, 0x0B, 0x5B, 0x01, 0x13, 0x5B, 0x81, 0x13, 0x7B, 0x0B, 0x5B, 0x04, 0x13, 0x5B, 0x80, 0x13, 0x3B, 0x01, 0x13, 0x5B, 0x80, 0x0B, 0x3A, 0x01, 0x0B, 0x5A, 0x01, 0x03, 0x3A, 0x02, 0x03, 0x39, 0x85, 0x03, 0x5A, 0x03, 0x7A, 0x03, 0x9B, 0x03, 0xBB, 0x0B, 0xFC, 0x1C, 0xBF, 0x01, 0x2C, 0xFF, 0x84, 0x24, 0x9E, 0x14, 0x3D, 0x0B, 0xDB, 0x0B, 0x9A, 0x03, 0x5A, 0x02, 0x03, 0x19, 0x01, 0x03, 0x1A, 0x80, 0x03, 0x39, 0x01, 0x0B, 0x3A, 0x80, 0x03, 0x39, 0x01, 0x03, 0x3A, 0x80, 0x0B, 0x3A, 0x02, 0x0B, 0x5A, 0x01, 0x0B, 0x5B, 0x82, 0x13, 0x7B, 0x0B, 0x5B, 0x13, 0x7B, 0x01, 0x13, 0x7C, 0x80, 0x13, 0x7B, 0x01, 0x13, + 0x9C, 0x01, 0x13, 0x7C, 0x80, 0x13, 0x9C, 0x01, 0x13, 0x7C, 0x05, 0x13, 0x9C, 0x82, 0x13, 0x7B, 0x1B, 0x9C, 0x13, 0x9B, 0x05, 0x13, 0x7B, 0x81, 0x13, 0x5A, 0x13, 0x7A, 0x01, 0x0B, 0x5A, 0x8D, 0x03, 0x5A, 0x03, 0x59, 0x03, 0x7A, 0x03, 0xBA, 0x03, 0xDB, 0x04, 0x1C, 0x14, 0x7D, 0x25, 0x1F, 0x2D, 0x3F, 0x2C, 0xFF, 0x1C, 0x7D, 0x13, 0xFC, 0x03, 0x9A, 0x03, 0x7A, 0x02, 0x03, 0x3A, 0x80, 0x03, 0x39, 0x02, 0x03, 0x3A, 0x81, 0x0B, 0x3A, 0x0B, 0x5A, 0x01, 0x13, 0x5B, 0x81, 0x13, 0x7B, 0x13, 0x5B, 0x02, 0x13, 0x7B, 0x05, 0x13, 0x9C, 0x03, 0x1B, 0xBC, 0x01, 0x13, 0x9C, 0x80, 0x1B, 0xBC, 0x02, 0x13, 0xBC, 0x01, 0x1B, 0xBC, 0x80, 0x13, 0xBC, 0x01, 0x1B, 0xBC, 0x01, 0x13, 0x9C, 0x80, 0x13, 0x9B, 0x03, 0x13, 0x7B, 0x83, 0x13, 0x7A, 0x13, 0x7B, 0x13, 0x7A, 0x13, 0x9A, 0x01, 0x0B, 0x7A, 0x01, 0x03, 0x5A, 0x89, 0x03, 0x7A, 0x03, 0xBB, 0x0B, 0xFC, 0x14, 0x5D, 0x1C, 0x9E, 0x2D, 0x1F, 0x35, 0x1F, 0x24, 0x9E, 0x14, 0x1C, 0x0B, 0xDB, 0x01, 0x0B, 0xBB, 0x01, 0x0B, 0x9B, 0x82, 0x0B, 0x9A, 0x0B, 0x9B, 0x0B, 0x7B, 0x04, 0x13, 0x9B, 0x83, 0x1B, 0xBC, 0x13, 0x9B, 0x1B, 0x9B, 0x1B, 0x9C, 0x03, 0x1B, 0xBC, 0x81, 0x1B, 0xDC, 0x1B, 0xBC, 0x05, 0x1B, 0xDC, 0x01, 0x1B, 0xBC, 0x80, 0x1B, 0xDC, 0x02, 0x1B, 0xBC, 0x80, 0x23, 0xDC, 0x01, 0x1B, 0xBC, 0x01, 0x1B, 0xDC, 0x01, 0x1B, 0xBC, 0x82, 0x1B, 0xDC, 0x1B, 0xBC, 0x13, 0x9B, 0x01, 0x1B, 0xBC, 0x02, 0x1B, 0xBB, 0x02, 0x13, 0x9B, 0x8C, 0x0B, 0x7A, 0x0B, 0x9A, 0x0B, 0x9B, 0x0B, 0xDB, 0x14, 0x1C, 0x14, 0x5D, + 0x24, 0xDF, 0x35, 0x1F, 0x2C, 0xFF, 0x1C, 0x5C, 0x0B, 0xDB, 0x13, 0xDB, 0x0B, 0xBB, 0x03, 0x13, 0xBB, 0x80, 0x1B, 0xDC, 0x01, 0x1B, 0xBC, 0x02, 0x1B, 0xDC, 0x80, 0x1B, 0xBC, 0x04, 0x1B, 0xDC, 0x81, 0x1B, 0xBC, 0x23, 0xFD, 0x02, 0x1B, 0xDC, 0x83, 0x23, 0xFD, 0x1B, 0xDC, 0x23, 0xFD, 0x1B, 0xDC, 0x01, 0x23, 0xDC, 0x84, 0x23, 0xFC, 0x23, 0xDC, 0x23, 0xFD, 0x23, 0xFC, 0x23, 0xFD, 0x01, 0x1B, 0xFC, 0x82, 0x23, 0xFC, 0x1B, 0xFC, 0x1B, 0xDC, 0x02, 0x1B, 0xFC, 0x84, 0x1B, 0xDC, 0x1B, 0xFC, 0x1B, 0xDC, 0x23, 0xDC, 0x1B, 0xDC, 0x01, 0x23, 0xDC, 0x82, 0x23, 0xFC, 0x1B, 0xBB, 0x1B, 0xDC, 0x01, 0x1B, 0xDB, 0x8A, 0x13, 0xDB, 0x0B, 0x9A, 0x0B, 0xBB, 0x14, 0x1C, 0x2D, 0x1F, 0x35, 0x3F, 0x2C, 0xFF, 0x24, 0x9E, 0x24, 0x7D, 0x1C, 0x3C, 0x1C, 0x1C, 0x01, 0x1B, 0xFC, 0x03, 0x1B, 0xDC, 0x01, 0x23, 0xFD, 0x82, 0x24, 0x1D, 0x1B, 0xFC, 0x1B, 0xBC, 0x01, 0x1B, 0xDC, 0x82, 0x23, 0xFC, 0x23, 0xFD, 0x23, 0xDC, 0x02, 0x23, 0xFC, 0x81, 0x23, 0xDC, 0x23, 0xFD, 0x02, 0x23, 0xFC, 0x86, 0x23, 0xFD, 0x23, 0xFC, 0x23, 0xFD, 0x23, 0xFC, 0x23, 0xFD, 0x23, 0xFC, 0x23, 0xFD, 0x03, 0x23, 0xFC, 0x80, 0x23, 0xFD, 0x03, 0x23, 0xFC, 0x04, 0x24, 0x1D, 0x81, 0x24, 0x1C, 0x24, 0x1D, 0x03, 0x24, 0x1C, 0x02, 0x23, 0xFC, 0x84, 0x1B, 0xFC, 0x1B, 0xFB, 0x24, 0x7C, 0x3D, 0x5F, 0x2C, 0xDE, 0x01, 0x24, 0x9D, 0x82, 0x24, 0x7D, 0x1C, 0x3C, 0x1C, 0x1C, 0x01, 0x24, 0x1C, 0x02, 0x24, 0x1D, 0x82, 0x24, 0x1C, 0x24, 0x1D, 0x23, 0xFD, 0x01, 0x23, 0xFC, 0x01, 0x2C, 0x1D, 0x87, 0x24, + 0x1D, 0x24, 0x1C, 0x23, 0xFC, 0x2C, 0x1D, 0x2C, 0x1C, 0x23, 0xFC, 0x2C, 0x1D, 0x23, 0xFD, 0x02, 0x2C, 0x1D, 0x80, 0x23, 0xFC, 0x01, 0x24, 0x1D, 0x81, 0x2C, 0x1D, 0x24, 0x1D, 0x02, 0x2C, 0x1D, 0x02, 0x24, 0x1D, 0x01, 0x23, 0xFD, 0x82, 0x24, 0x1D, 0x23, 0xFC, 0x2C, 0x1D, 0x05, 0x23, 0xFC, 0x01, 0x2C, 0x1C, 0x80, 0x23, 0xFC, 0x02, 0x24, 0x1C, 0x01, 0x23, 0xFC, 0x87, 0x1B, 0xFC, 0x1B, 0xFB, 0x13, 0xDB, 0x24, 0x5C, 0x45, 0x9F, 0x1C, 0x3C, 0x24, 0x5D, 0x24, 0x3D, 0x03, 0x24, 0x1C, 0x04, 0x24, 0x1D, 0x83, 0x2C, 0x1D, 0x2B, 0xFD, 0x23, 0xFC, 0x2C, 0x1D, 0x02, 0x23, 0xFD, 0x01, 0x2C, 0x1D, 0x80, 0x23, 0xFD, 0x02, 0x2C, 0x1D, 0x80, 0x23, 0xFD, 0x07, 0x2C, 0x1D, 0x81, 0x2C, 0x3D, 0x24, 0x1D, 0x08, 0x2C, 0x1D, 0x84, 0x24, 0x1C, 0x23, 0xFC, 0x24, 0x1D, 0x2C, 0x1D, 0x23, 0xFC, 0x01, 0x2C, 0x1D, 0x84, 0x2C, 0x1C, 0x24, 0x1C, 0x2C, 0x3D, 0x24, 0x1C, 0x23, 0xFC, 0x01, 0x24, 0x1C, 0x88, 0x2C, 0x3D, 0x24, 0x1D, 0x1B, 0xFB, 0x35, 0x1F, 0x2C, 0xDE, 0x13, 0xDB, 0x24, 0x1D, 0x1B, 0xDC, 0x24, 0x1C, 0x03, 0x24, 0x1D, 0x01, 0x2C, 0x1D, 0x80, 0x2C, 0x3D, 0x01, 0x2C, 0x1D, 0x01, 0x2C, 0x3D, 0x06, 0x2C, 0x1D, 0x81, 0x24, 0x1D, 0x23, 0xFD, 0x02, 0x2C, 0x1D, 0x80, 0x23, 0xFD, 0x01, 0x2C, 0x1D, 0x81, 0x2C, 0x1E, 0x23, 0xFD, 0x02, 0x2C, 0x1D, 0x83, 0x24, 0x1D, 0x23, 0xFD, 0x2C, 0x1D, 0x24, 0x1D, 0x07, 0x23, 0xFD, 0x80, 0x23, 0xFC, 0x02, 0x23, 0xFD, 0x01, 0x24, 0x1D, 0x01, 0x23, 0xFC, 0x01, 0x23, 0xDC, 0x01, 0x1B, 0xBB, 0x88, 0x1B, 0xDB, 0x1B, 0xBB, + 0x1B, 0xDB, 0x13, 0xDB, 0x1C, 0x5D, 0x35, 0x1F, 0x24, 0xBE, 0x1C, 0x5D, 0x24, 0x5D, 0x01, 0x1C, 0x1C, 0x81, 0x24, 0x1C, 0x24, 0x3D, 0x01, 0x24, 0x1D, 0x81, 0x2C, 0x1D, 0x24, 0x1D, 0x02, 0x2C, 0x1D, 0x02, 0x23, 0xFD, 0x80, 0x24, 0x1D, 0x09, 0x23, 0xFD, 0x01, 0x23, 0xDC, 0x01, 0x23, 0xFD, 0x80, 0x23, 0xDD, 0x02, 0x23, 0xFD, 0x80, 0x23, 0xDD, 0x02, 0x23, 0xFD, 0x80, 0x23, 0xDD, 0x02, 0x23, 0xFD, 0x85, 0x23, 0xDD, 0x23, 0xFD, 0x23, 0xDC, 0x23, 0xFD, 0x23, 0xDC, 0x24, 0x1D, 0x02, 0x23, 0xFD, 0x01, 0x1B, 0xDC, 0x80, 0x1B, 0xBB, 0x01, 0x13, 0xBB, 0x88, 0x0B, 0x7A, 0x13, 0x9A, 0x13, 0xFB, 0x24, 0x9D, 0x35, 0x1F, 0x2D, 0x1F, 0x1C, 0x5D, 0x14, 0x1C, 0x1C, 0x1C, 0x01, 0x1B, 0xFC, 0x81, 0x23, 0xFC, 0x23, 0xFD, 0x04, 0x2B, 0xFD, 0x80, 0x23, 0xDD, 0x02, 0x23, 0xFD, 0x89, 0x23, 0xDC, 0x2B, 0xFD, 0x23, 0xDD, 0x23, 0xDC, 0x2B, 0xDD, 0x2B, 0xFD, 0x2B, 0xDD, 0x2B, 0xFD, 0x2B, 0xDC, 0x33, 0xFD, 0x01, 0x2B, 0xFD, 0x80, 0x2B, 0xDD, 0x02, 0x33, 0xFD, 0x80, 0x34, 0x1D, 0x01, 0x3C, 0x1D, 0x81, 0x3C, 0x3E, 0x3C, 0x3D, 0x02, 0x3C, 0x1D, 0x89, 0x44, 0x1D, 0x44, 0x3E, 0x44, 0x5E, 0x44, 0x3D, 0x44, 0x3E, 0x4C, 0x5E, 0x4C, 0x3D, 0x54, 0x5E, 0x4C, 0x3D, 0x54, 0x5E, 0x01, 0x5C, 0x5E, 0x01, 0x5C, 0x1D, 0x8B, 0x63, 0xFD, 0x6B, 0xFC, 0x83, 0xFC, 0x9B, 0xFC, 0x82, 0x96, 0x81, 0xD3, 0x9A, 0x35, 0xA2, 0x14, 0xAA, 0x14, 0xA1, 0xD3, 0xA9, 0xD3, 0xA9, 0xF4, 0x02, 0xA9, 0xD3, 0x9C, 0xA9, 0xF3, 0xA1, 0xF3, 0x9A, 0x13, 0x8A, 0x12, 0x82, 0x72, 0x59, 0xCF, 0x9C, + 0x99, 0xBD, 0xBE, 0xAC, 0xFB, 0x9B, 0xF8, 0x72, 0x11, 0x92, 0x74, 0x9A, 0x33, 0xA1, 0xF3, 0xA1, 0xD2, 0xA9, 0xF3, 0xA9, 0xD3, 0xB1, 0xF4, 0xA9, 0xB3, 0xA9, 0xF3, 0xA1, 0xF3, 0x9A, 0x14, 0x92, 0x34, 0x72, 0x14, 0x7B, 0x7A, 0x84, 0x9F, 0x64, 0x3D, 0x54, 0x3D, 0x44, 0x1D, 0x01, 0x3C, 0x3D, 0x83, 0x34, 0x1D, 0x34, 0x3D, 0x2B, 0xFD, 0x2C, 0x1D, 0x03, 0x23, 0xFC, 0x82, 0x23, 0xDC, 0x23, 0xFC, 0x23, 0xDC, 0x03, 0x1B, 0xDC, 0x02, 0x13, 0xBB, 0x90, 0x0B, 0x9A, 0x0B, 0x9B, 0x0B, 0x9A, 0x0B, 0x9B, 0x13, 0xFC, 0x1C, 0x5D, 0x24, 0xBF, 0x2C, 0xDF, 0x24, 0xBE, 0x1C, 0x5D, 0x0B, 0xDB, 0x0B, 0xBA, 0x0B, 0x9A, 0x0B, 0x7A, 0x0B, 0x9B, 0x13, 0x9B, 0x1B, 0xBB, 0x02, 0x1B, 0xBC, 0x82, 0x1B, 0x9C, 0x1B, 0xBC, 0x1B, 0x9C, 0x04, 0x1B, 0xDC, 0x80, 0x1B, 0xDD, 0x03, 0x1B, 0xBC, 0x81, 0x1B, 0xDD, 0x1B, 0xDC, 0x01, 0x1B, 0xBC, 0x81, 0x1B, 0xDD, 0x1B, 0xBC, 0x02, 0x1B, 0xDC, 0x84, 0x1B, 0xBC, 0x1B, 0xDC, 0x1B, 0xBC, 0x13, 0xBC, 0x1B, 0xBC, 0x04, 0x13, 0xBC, 0x81, 0x13, 0xBB, 0x13, 0xBC, 0x02, 0x13, 0xBB, 0x81, 0x0B, 0x7A, 0x13, 0x9B, 0x01, 0x0B, 0x5A, 0x8D, 0x03, 0x3A, 0x0B, 0x5A, 0x0B, 0x7A, 0x03, 0x39, 0x0B, 0x7A, 0x03, 0x5A, 0x03, 0x7A, 0x0B, 0xBB, 0x1C, 0x3D, 0x2C, 0xBF, 0x2C, 0xFF, 0x24, 0x9E, 0x03, 0xBB, 0x03, 0x9A, 0x01, 0x0B, 0x9B, 0x01, 0x0B, 0x7A, 0x80, 0x0B, 0x7B, 0x02, 0x13, 0x9B, 0x81, 0x13, 0xBC, 0x13, 0x9B, 0x01, 0x13, 0x9C, 0x82, 0x13, 0x9B, 0x13, 0x7B, 0x13, 0x9C, 0x01, 0x13, 0x7C, 0x02, 0x1B, 0x9C, 0x06, 0x13, 0x9C, 0x84, 0x13, + 0x9B, 0x13, 0x9C, 0x1B, 0x9C, 0x13, 0x7B, 0x13, 0x5B, 0x01, 0x13, 0x7B, 0x82, 0x13, 0x7C, 0x1B, 0x7C, 0x1B, 0x9C, 0x02, 0x13, 0x7B, 0x83, 0x13, 0x9B, 0x13, 0x9C, 0x13, 0x7B, 0x13, 0x9B, 0x04, 0x0B, 0x7B, 0x89, 0x0B, 0x7A, 0x0B, 0x7B, 0x03, 0x5A, 0x0B, 0x7A, 0x03, 0x3A, 0x03, 0x5A, 0x03, 0x3A, 0x0B, 0x9B, 0x14, 0x1D, 0x24, 0xBF, 0x01, 0x2C, 0xFF, 0x84, 0x1C, 0x7E, 0x03, 0xBB, 0x03, 0x7A, 0x03, 0x7B, 0x03, 0x7A, 0x02, 0x03, 0x5A, 0x81, 0x0B, 0x7B, 0x0B, 0x5B, 0x01, 0x0B, 0x7B, 0x83, 0x0B, 0x5B, 0x13, 0x7B, 0x13, 0x5B, 0x0B, 0x5B, 0x04, 0x13, 0x7B, 0x85, 0x0B, 0x7B, 0x13, 0x7C, 0x13, 0x7B, 0x0B, 0x7B, 0x13, 0x9C, 0x13, 0x7C, 0x02, 0x13, 0x7B, 0x81, 0x13, 0x5B, 0x13, 0x7C, 0x06, 0x13, 0x5B, 0x84, 0x0B, 0x5B, 0x0B, 0x5A, 0x13, 0x5B, 0x0B, 0x5A, 0x13, 0x7B, 0x01, 0x0B, 0x5B, 0x82, 0x0B, 0x3A, 0x03, 0x3A, 0x03, 0x39, 0x04, 0x03, 0x19, 0x80, 0x02, 0xF9, 0x01, 0x03, 0x19, 0x87, 0x03, 0x39, 0x03, 0x7A, 0x13, 0xFC, 0x1C, 0x7D, 0x2C, 0xFF, 0x35, 0x1F, 0x2C, 0xFF, 0x14, 0x3D, 0x02, 0x03, 0x7A, 0x85, 0x03, 0x5A, 0x03, 0x3A, 0x03, 0x19, 0x03, 0x39, 0x03, 0x19, 0x03, 0x1A, 0x05, 0x0B, 0x3A, 0x8C, 0x13, 0x5A, 0x13, 0x3B, 0x0B, 0x3A, 0x0B, 0x3B, 0x0B, 0x5B, 0x0B, 0x3A, 0x0B, 0x3B, 0x0B, 0x5B, 0x0B, 0x3B, 0x13, 0x5B, 0x13, 0x3B, 0x13, 0x5C, 0x13, 0x3B, 0x01, 0x13, 0x5B, 0x81, 0x0B, 0x3B, 0x13, 0x3B, 0x01, 0x13, 0x5B, 0x05, 0x13, 0x7B, 0x80, 0x13, 0x7A, 0x01, 0x13, 0x7B, 0x81, 0x13, 0x7A, 0x13, 0x7B, 0x01, 0x0B, 0x5A, 0x83, 0x0B, 0x7A, + 0x0B, 0x5A, 0x0B, 0x7B, 0x02, 0x77, 0x01, 0x02, 0x97, 0x01, 0x02, 0x77, 0x8E, 0x02, 0x76, 0x02, 0x97, 0x02, 0xD7, 0x03, 0x39, 0x03, 0xDB, 0x14, 0x7E, 0x24, 0xDF, 0x1C, 0xBF, 0x1C, 0x7E, 0x0B, 0xDB, 0x03, 0x5A, 0x02, 0xF8, 0x02, 0xD8, 0x02, 0xB7, 0x02, 0x97, 0x05, 0x02, 0x77, 0x83, 0x02, 0x57, 0x02, 0x37, 0x02, 0x57, 0x02, 0x56, 0x02, 0x02, 0x57, 0x08, 0x02, 0x77, 0x01, 0x02, 0x78, 0x03, 0x02, 0x57, 0x09, 0x02, 0x78, 0x02, 0x02, 0x58, 0x04, 0x02, 0x57, 0x83, 0x02, 0x78, 0x02, 0x97, 0x02, 0x98, 0x02, 0xB8, 0x01, 0x02, 0x97, 0x8C, 0x02, 0xB7, 0x02, 0xF8, 0x03, 0x39, 0x03, 0x7A, 0x03, 0xBB, 0x14, 0x5D, 0x24, 0xFF, 0x2C, 0xDF, 0x0B, 0xDB, 0x03, 0x5A, 0x03, 0x39, 0x03, 0x18, 0x02, 0xD7, 0x02, 0x02, 0xB7, 0x02, 0x02, 0x97, 0x03, 0x02, 0x77, 0x06, 0x02, 0x97, 0x83, 0x02, 0x98, 0x02, 0x78, 0x02, 0x98, 0x02, 0x78, 0x03, 0x02, 0x98, 0x02, 0x02, 0x78, 0x80, 0x02, 0x98, 0x02, 0x02, 0x78, 0x80, 0x02, 0x98, 0x02, 0x02, 0x78, 0x03, 0x02, 0x98, 0x80, 0x02, 0x78, 0x01, 0x02, 0x98, 0x01, 0x02, 0x77, 0x04, 0x02, 0x97, 0x86, 0x02, 0xB7, 0x02, 0xD8, 0x03, 0x18, 0x03, 0x39, 0x03, 0x7A, 0x03, 0xDB, 0x14, 0x7D, 0x01, 0x24, 0xDF, 0x83, 0x0B, 0xDB, 0x03, 0x59, 0x03, 0x19, 0x02, 0xF8, 0x01, 0x02, 0xB7, 0x01, 0x02, 0xB8, 0x01, 0x02, 0xD8, 0x05, 0x02, 0x98, 0x03, 0x02, 0x78, 0x07, 0x02, 0x98, 0x01, 0x02, 0x78, 0x10, 0x02, 0x98, 0x81, 0x02, 0x97, 0x02, 0x77, 0x03, 0x02, 0x97, 0x81, 0x02, 0xB7, 0x02, 0xB8, 0x01, 0x02, 0xD8, 0x8A, 0x02, 0xF8, 0x03, + 0x39, 0x03, 0x9A, 0x03, 0xDB, 0x0C, 0x3C, 0x1C, 0xBE, 0x1C, 0x7E, 0x03, 0x7A, 0x03, 0x19, 0x03, 0x18, 0x02, 0xD8, 0x01, 0x02, 0xB7, 0x81, 0x02, 0xD8, 0x02, 0xB8, 0x01, 0x02, 0xB7, 0x01, 0x02, 0x97, 0x80, 0x02, 0x98, 0x01, 0x02, 0xB8, 0x02, 0x02, 0x98, 0x82, 0x02, 0x97, 0x02, 0x98, 0x02, 0xB8, 0x02, 0x02, 0x98, 0x82, 0x02, 0x77, 0x02, 0x98, 0x02, 0x77, 0x05, 0x02, 0x98, 0x80, 0x02, 0xB8, 0x03, 0x02, 0x98, 0x80, 0x02, 0xB8, 0x04, 0x02, 0x98, 0x01, 0x02, 0x97, 0x01, 0x02, 0x98, 0x01, 0x02, 0xB8, 0x01, 0x02, 0x97, 0x01, 0x02, 0xB8, 0x81, 0x02, 0xB7, 0x02, 0xD8, 0x01, 0x02, 0xD7, 0x86, 0x03, 0x18, 0x03, 0x59, 0x0B, 0xDB, 0x24, 0xDF, 0x24, 0xBF, 0x13, 0xFC, 0x03, 0x39, 0x01, 0x03, 0x18, 0x82, 0x02, 0xD8, 0x02, 0xD7, 0x02, 0xB7, 0x02, 0x02, 0x97, 0x02, 0x02, 0xB8, 0x01, 0x02, 0x97, 0x11, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x0A, 0x02, 0xB8, 0x01, 0x02, 0xD8, 0x03, 0x02, 0xB8, 0x01, 0x02, 0xB7, 0x01, 0x02, 0x97, 0x8D, 0x02, 0xD7, 0x02, 0xD8, 0x02, 0xB7, 0x02, 0xD7, 0x02, 0xF7, 0x03, 0x38, 0x1C, 0x7D, 0x2D, 0x1F, 0x1C, 0x9D, 0x03, 0x9A, 0x03, 0x38, 0x03, 0x18, 0x02, 0xF7, 0x02, 0xD7, 0x01, 0x02, 0xB7, 0x01, 0x02, 0xD8, 0x0A, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x04, 0x02, 0xB8, 0x82, 0x02, 0xB7, 0x02, 0x97, 0x02, 0xB8, 0x01, 0x02, 0xB7, 0x02, 0x02, 0xB8, 0x80, 0x02, 0x97, 0x0A, 0x02, 0xB8, 0x80, 0x02, 0xB7, 0x01, 0x02, 0x97, 0x81, 0x02, 0xB7, 0x02, 0x97, 0x04, 0x02, 0xB7, 0x04, 0x02, 0xD7, 0x83, 0x2C, 0xDE, 0x2C, 0xFF, 0x14, 0x1C, 0x03, + 0x38, 0x01, 0x02, 0xF7, 0x01, 0x02, 0xF8, 0x81, 0x02, 0xD8, 0x02, 0xD7, 0x03, 0x02, 0xB7, 0x09, 0x02, 0xB8, 0x82, 0x02, 0xB7, 0x02, 0xB8, 0x02, 0xB7, 0x02, 0x02, 0x97, 0x02, 0x02, 0xB7, 0x01, 0x02, 0xB8, 0x04, 0x02, 0x97, 0x81, 0x02, 0xB7, 0x02, 0x97, 0x05, 0x02, 0xB8, 0x02, 0x02, 0xB7, 0x81, 0x02, 0x97, 0x02, 0xB7, 0x03, 0x02, 0x97, 0x82, 0x02, 0xB7, 0x02, 0xD7, 0x02, 0xD8, 0x02, 0x02, 0xD7, 0x86, 0x02, 0xF8, 0x24, 0x9D, 0x34, 0xFF, 0x03, 0x59, 0x02, 0xD8, 0x02, 0x97, 0x02, 0xB8, 0x05, 0x02, 0xD8, 0x07, 0x02, 0xB8, 0x09, 0x02, 0x97, 0x81, 0x02, 0x98, 0x02, 0x97, 0x01, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x01, 0x02, 0xB8, 0x04, 0x02, 0x97, 0x81, 0x02, 0xB7, 0x02, 0x97, 0x05, 0x02, 0xB7, 0x04, 0x02, 0x97, 0x80, 0x02, 0xB8, 0x01, 0x02, 0x97, 0x80, 0x02, 0xB8, 0x01, 0x02, 0xB7, 0x85, 0x02, 0x97, 0x02, 0xB7, 0x02, 0xF8, 0x35, 0x1F, 0x24, 0xBE, 0x02, 0xF8, 0x09, 0x02, 0xD8, 0x81, 0x02, 0xB8, 0x02, 0x98, 0x01, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x01, 0x02, 0xB8, 0x01, 0x02, 0x98, 0x80, 0x02, 0xB8, 0x01, 0x02, 0x98, 0x80, 0x02, 0xB8, 0x03, 0x02, 0x98, 0x03, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x09, 0x02, 0xB8, 0x06, 0x02, 0x98, 0x05, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x01, 0x02, 0xB8, 0x02, 0x02, 0xD8, 0x84, 0x02, 0xF7, 0x03, 0x38, 0x2C, 0xFF, 0x1C, 0x5D, 0x03, 0x18, 0x02, 0x02, 0xF8, 0x81, 0x02, 0xD8, 0x02, 0xF8, 0x02, 0x02, 0xB8, 0x80, 0x02, 0xD8, 0x01, 0x02, 0xB8, 0x01, 0x02, 0x98, 0x01, 0x02, 0xB8, 0x05, 0x02, 0x98, 0x80, 0x02, 0xB8, 0x02, + 0x02, 0x98, 0x80, 0x02, 0xB8, 0x01, 0x02, 0x98, 0x80, 0x02, 0xB8, 0x01, 0x02, 0x98, 0x01, 0x02, 0xB8, 0x05, 0x02, 0x98, 0x80, 0x02, 0xB8, 0x06, 0x02, 0x98, 0x01, 0x02, 0x77, 0x03, 0x02, 0x98, 0x81, 0x02, 0xB8, 0x02, 0xD8, 0x01, 0x02, 0xB8, 0x87, 0x02, 0xB7, 0x02, 0xD7, 0x03, 0x39, 0x14, 0x3C, 0x2D, 0x1F, 0x1C, 0x7D, 0x03, 0x38, 0x03, 0x18, 0x01, 0x02, 0xF8, 0x0D, 0x02, 0xB8, 0x01, 0x02, 0x98, 0x01, 0x02, 0xB8, 0x81, 0x02, 0x98, 0x02, 0xB8, 0x02, 0x02, 0x98, 0x81, 0x02, 0xB8, 0x0A, 0xB8, 0x01, 0x0A, 0x98, 0x02, 0x0A, 0xB8, 0x82, 0x0A, 0x97, 0x0A, 0x98, 0x0A, 0xB8, 0x01, 0x12, 0xB8, 0x80, 0x12, 0xD8, 0x01, 0x12, 0xB8, 0x84, 0x12, 0xD8, 0x1A, 0xD8, 0x1A, 0xF9, 0x1A, 0xD8, 0x12, 0x98, 0x02, 0x1A, 0x98, 0x02, 0x2A, 0xB9, 0x8A, 0x32, 0xB9, 0x42, 0xD9, 0x4A, 0xB8, 0x62, 0xD8, 0x7A, 0xD8, 0x7A, 0x15, 0x8A, 0x15, 0xA2, 0x55, 0x99, 0xF3, 0xA1, 0xD3, 0xAA, 0x14, 0x01, 0xA9, 0xD3, 0x81, 0xA9, 0xB3, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x8C, 0xAA, 0x33, 0x9A, 0x33, 0x8A, 0x32, 0x7A, 0x31, 0x72, 0x52, 0xC5, 0x1D, 0xC5, 0x3D, 0x93, 0x76, 0x7A, 0x12, 0x92, 0x13, 0x9A, 0x33, 0xA2, 0x13, 0xAA, 0x13, 0x01, 0xA9, 0xF3, 0x80, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x8B, 0xA1, 0xF3, 0xA2, 0x14, 0x92, 0x14, 0x82, 0x55, 0x62, 0x56, 0x42, 0x15, 0x32, 0x57, 0x1A, 0x57, 0x12, 0x97, 0x12, 0xB8, 0x0A, 0xB8, 0x0A, 0xD9, 0x01, 0x02, 0xD8, 0x84, 0x02, 0xB8, 0x02, 0x98, 0x02, 0x77, 0x02, 0x97, 0x02, 0x98, 0x01, 0x02, 0x97, 0x80, 0x02, 0xB8, 0x05, 0x02, 0x98, 0x82, + 0x02, 0xB8, 0x02, 0xD8, 0x02, 0xB8, 0x01, 0x02, 0xD8, 0x8C, 0x02, 0xF8, 0x03, 0x19, 0x03, 0x39, 0x0B, 0xBB, 0x1C, 0x5D, 0x2D, 0x1F, 0x14, 0x5D, 0x03, 0x59, 0x03, 0x39, 0x03, 0x19, 0x02, 0xF8, 0x02, 0x97, 0x02, 0x77, 0x01, 0x02, 0x97, 0x01, 0x02, 0xB8, 0x84, 0x02, 0x98, 0x02, 0xB8, 0x02, 0x77, 0x02, 0x98, 0x02, 0x97, 0x01, 0x02, 0x98, 0x06, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x01, 0x02, 0xB8, 0x81, 0x02, 0x98, 0x02, 0x97, 0x02, 0x02, 0x98, 0x01, 0x02, 0xB8, 0x01, 0x02, 0x98, 0x82, 0x02, 0x97, 0x02, 0x98, 0x02, 0x97, 0x03, 0x02, 0x98, 0x82, 0x02, 0x97, 0x02, 0xB8, 0x02, 0x97, 0x02, 0x02, 0x98, 0x01, 0x02, 0x77, 0x83, 0x02, 0x98, 0x02, 0xB8, 0x02, 0xD8, 0x02, 0xB8, 0x02, 0x02, 0xD8, 0x8A, 0x03, 0x19, 0x03, 0x39, 0x13, 0xFC, 0x24, 0x7E, 0x2C, 0xDF, 0x03, 0x9A, 0x03, 0x39, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xD8, 0x02, 0x97, 0x01, 0x02, 0x77, 0x03, 0x02, 0x98, 0x80, 0x02, 0xB8, 0x02, 0x02, 0x98, 0x80, 0x02, 0xB8, 0x0D, 0x02, 0x98, 0x80, 0x02, 0x78, 0x01, 0x02, 0x98, 0x81, 0x02, 0x78, 0x02, 0x98, 0x02, 0x02, 0x78, 0x81, 0x02, 0x57, 0x02, 0x77, 0x02, 0x02, 0x78, 0x02, 0x02, 0x98, 0x80, 0x02, 0x78, 0x03, 0x02, 0x77, 0x01, 0x02, 0x97, 0x8B, 0x02, 0xB8, 0x02, 0xD8, 0x02, 0xD9, 0x03, 0x19, 0x03, 0x39, 0x03, 0x3A, 0x03, 0x9B, 0x13, 0xFC, 0x1C, 0x5E, 0x24, 0xBF, 0x0B, 0xBB, 0x03, 0x39, 0x01, 0x03, 0x19, 0x81, 0x02, 0xD9, 0x02, 0xB8, 0x04, 0x02, 0x98, 0x01, 0x02, 0x78, 0x03, 0x02, 0x98, 0x80, 0x02, 0x78, 0x01, 0x02, 0x77, 0x01, 0x02, 0x78, + 0x01, 0x02, 0x98, 0x02, 0x02, 0x78, 0x80, 0x02, 0x77, 0x04, 0x02, 0x57, 0x81, 0x02, 0x78, 0x02, 0x77, 0x02, 0x02, 0x57, 0x82, 0x02, 0x77, 0x02, 0x78, 0x02, 0x57, 0x01, 0x02, 0x77, 0x80, 0x02, 0x57, 0x01, 0x02, 0x77, 0x02, 0x02, 0x97, 0x01, 0x02, 0x77, 0x02, 0x02, 0x97, 0x82, 0x02, 0xB7, 0x02, 0xB8, 0x02, 0xD8, 0x01, 0x02, 0xF8, 0x8A, 0x03, 0x39, 0x0B, 0x9B, 0x14, 0x1D, 0x24, 0x7E, 0x1C, 0x7E, 0x03, 0xBB, 0x03, 0x39, 0x03, 0x19, 0x02, 0xF9, 0x02, 0xD8, 0x02, 0xB8, 0x02, 0x02, 0x97, 0x80, 0x02, 0x77, 0x02, 0x02, 0x57, 0x81, 0x02, 0x56, 0x02, 0x57, 0x03, 0x02, 0x77, 0x01, 0x02, 0x78, 0x01, 0x02, 0x58, 0x81, 0x02, 0x78, 0x02, 0x58, 0x01, 0x02, 0x57, 0x01, 0x02, 0x37, 0x01, 0x02, 0x57, 0x80, 0x02, 0x37, 0x02, 0x02, 0x57, 0x01, 0x02, 0x37, 0x01, 0x02, 0x36, 0x81, 0x02, 0x56, 0x02, 0x36, 0x04, 0x02, 0x56, 0x02, 0x02, 0x77, 0x82, 0x02, 0x36, 0x02, 0x57, 0x02, 0x36, 0x01, 0x02, 0x56, 0x8C, 0x02, 0x97, 0x0B, 0x59, 0x13, 0xFC, 0x24, 0x9E, 0x24, 0xBF, 0x14, 0x5D, 0x03, 0xFC, 0x03, 0x9A, 0x03, 0x5A, 0x03, 0x39, 0x03, 0x19, 0x02, 0xF8, 0x02, 0xD8, 0x01, 0x02, 0xB8, 0x81, 0x02, 0x98, 0x02, 0x97, 0x03, 0x02, 0x98, 0x01, 0x02, 0x77, 0x02, 0x02, 0x97, 0x02, 0x02, 0x77, 0x08, 0x02, 0x98, 0x01, 0x02, 0x78, 0x80, 0x02, 0x57, 0x01, 0x02, 0x78, 0x04, 0x02, 0x98, 0x80, 0x02, 0x78, 0x02, 0x02, 0x98, 0x07, 0x02, 0x78, 0x01, 0x02, 0x98, 0x81, 0x02, 0xB8, 0x02, 0xD8, 0x02, 0x02, 0xB7, 0x88, 0x02, 0xF8, 0x03, 0x7A, 0x14, 0x1C, 0x1C, 0x7E, 0x1C, + 0x9E, 0x1C, 0xBE, 0x0B, 0xFC, 0x03, 0x7A, 0x03, 0x39, 0x01, 0x03, 0x19, 0x80, 0x02, 0xF8, 0x02, 0x02, 0xD8, 0x82, 0x02, 0xB8, 0x02, 0xD8, 0x02, 0xB7, 0x02, 0x02, 0xB8, 0x80, 0x02, 0xB7, 0x03, 0x02, 0xB8, 0x80, 0x02, 0xD8, 0x03, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x01, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x01, 0x02, 0x99, 0x01, 0x02, 0x98, 0x80, 0x02, 0x78, 0x01, 0x02, 0x98, 0x80, 0x02, 0x99, 0x0D, 0x02, 0x98, 0x80, 0x02, 0xB8, 0x01, 0x02, 0xB7, 0x90, 0x02, 0xB8, 0x02, 0xB7, 0x02, 0xB8, 0x02, 0xD8, 0x02, 0xF8, 0x03, 0x79, 0x14, 0x1C, 0x1C, 0x7D, 0x1C, 0xBE, 0x24, 0xDF, 0x14, 0x3C, 0x03, 0x9A, 0x03, 0x39, 0x03, 0x19, 0x02, 0xF8, 0x02, 0xD8, 0x02, 0xF8, 0x01, 0x02, 0xD8, 0x01, 0x02, 0xF9, 0x81, 0x02, 0xD8, 0x02, 0xD9, 0x05, 0x02, 0xB8, 0x02, 0x02, 0x98, 0x80, 0x02, 0xB9, 0x01, 0x02, 0xB8, 0x82, 0x02, 0x98, 0x02, 0xB9, 0x02, 0xB8, 0x01, 0x02, 0x98, 0x80, 0x02, 0xB8, 0x03, 0x02, 0x98, 0x80, 0x02, 0xB8, 0x05, 0x02, 0x98, 0x83, 0x02, 0xB8, 0x02, 0x98, 0x02, 0xB8, 0x02, 0x98, 0x02, 0x02, 0xB8, 0x82, 0x02, 0x98, 0x02, 0xB8, 0x02, 0xB7, 0x01, 0x02, 0xB8, 0x01, 0x02, 0xD8, 0x02, 0x02, 0xF8, 0x86, 0x03, 0x59, 0x0B, 0xFC, 0x14, 0x7D, 0x1C, 0x9E, 0x24, 0xBF, 0x0C, 0x1C, 0x03, 0x7A, 0x01, 0x03, 0x39, 0x80, 0x03, 0x19, 0x03, 0x02, 0xF8, 0x82, 0x02, 0xF9, 0x02, 0xF8, 0x02, 0xD8, 0x02, 0x02, 0xD9, 0x02, 0x02, 0xB8, 0x80, 0x02, 0xD8, 0x04, 0x02, 0xB8, 0x01, 0x02, 0x98, 0x80, 0x02, 0xB8, 0x02, 0x02, 0x98, 0x0B, 0x02, 0xB8, 0x81, 0x02, 0xD8, 0x02, + 0xB8, 0x01, 0x02, 0xD8, 0x01, 0x02, 0xB8, 0x04, 0x02, 0xD8, 0x80, 0x02, 0xB8, 0x01, 0x02, 0xD8, 0x02, 0x02, 0xF8, 0x86, 0x03, 0x18, 0x03, 0x9A, 0x1C, 0x7E, 0x24, 0xDF, 0x24, 0xBF, 0x03, 0xBB, 0x03, 0x59, 0x01, 0x03, 0x19, 0x82, 0x02, 0xF8, 0x03, 0x18, 0x02, 0xF8, 0x03, 0x02, 0xD8, 0x01, 0x02, 0xF9, 0x03, 0x02, 0xD8, 0x80, 0x02, 0xB8, 0x03, 0x02, 0xD8, 0x80, 0x02, 0xD9, 0x12, 0x02, 0xB8, 0x06, 0x02, 0xD8, 0x80, 0x02, 0xB8, 0x02, 0x02, 0xD8, 0x85, 0x02, 0xB7, 0x02, 0xD8, 0x02, 0xD7, 0x02, 0xD8, 0x02, 0xF8, 0x03, 0x18, 0x01, 0x03, 0x38, 0x84, 0x14, 0x1C, 0x2C, 0xFF, 0x14, 0x5D, 0x03, 0x99, 0x03, 0x18, 0x02, 0x02, 0xF8, 0x80, 0x02, 0xD8, 0x04, 0x02, 0xF8, 0x03, 0x02, 0xD8, 0x03, 0x02, 0xD9, 0x80, 0x02, 0xB8, 0x02, 0x02, 0xD8, 0x81, 0x02, 0xB8, 0x02, 0xD8, 0x02, 0x02, 0xB8, 0x80, 0x02, 0xD8, 0x0A, 0x02, 0xB8, 0x82, 0x02, 0xD8, 0x02, 0xB8, 0x02, 0xD8, 0x02, 0x02, 0xB8, 0x80, 0x02, 0xD8, 0x02, 0x02, 0xB8, 0x81, 0x02, 0xD8, 0x02, 0xB7, 0x02, 0x02, 0xD8, 0x8B, 0x02, 0xD7, 0x02, 0xD8, 0x02, 0xB7, 0x02, 0xD7, 0x03, 0x18, 0x02, 0xF8, 0x0B, 0x9A, 0x35, 0x1F, 0x14, 0x3C, 0x0B, 0xBB, 0x03, 0x39, 0x03, 0x38, 0x01, 0x03, 0x18, 0x01, 0x02, 0xF8, 0x07, 0x02, 0xD8, 0x0B, 0x02, 0xB8, 0x01, 0x02, 0x97, 0x05, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x05, 0x02, 0xB8, 0x80, 0x02, 0xD8, 0x04, 0x02, 0xB8, 0x04, 0x02, 0xD8, 0x80, 0x02, 0xB7, 0x01, 0x02, 0xD8, 0x03, 0x02, 0xF8, 0x01, 0x03, 0x18, 0x83, 0x2C, 0xFF, 0x1C, 0x5D, 0x03, 0x39, 0x03, 0x19, 0x01, + 0x02, 0xF8, 0x80, 0x02, 0xF9, 0x03, 0x02, 0xF8, 0x81, 0x02, 0xD8, 0x02, 0xF8, 0x03, 0x02, 0xD8, 0x81, 0x02, 0xB8, 0x02, 0xD8, 0x09, 0x02, 0xB8, 0x80, 0x02, 0x97, 0x01, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x01, 0x02, 0xB8, 0x80, 0x02, 0x97, 0x02, 0x02, 0xB8, 0x80, 0x02, 0x97, 0x03, 0x02, 0xB7, 0x03, 0x02, 0xB8, 0x82, 0x02, 0xD8, 0x02, 0xB8, 0x02, 0xD8, 0x03, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x03, 0x02, 0xB8, 0x80, 0x02, 0xD8, 0x01, 0x02, 0xB7, 0x83, 0x02, 0xF8, 0x35, 0x1F, 0x24, 0xBE, 0x03, 0x39, 0x02, 0x03, 0x19, 0x02, 0x02, 0xF9, 0x80, 0x02, 0xD8, 0x01, 0x02, 0xD9, 0x02, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x23, 0x02, 0xB8, 0x81, 0x02, 0xD9, 0x02, 0xB9, 0x02, 0x02, 0xD9, 0x81, 0x02, 0xB8, 0x02, 0xD9, 0x01, 0x02, 0xD8, 0x02, 0x02, 0xF8, 0x01, 0x03, 0x18, 0x81, 0x1C, 0x7D, 0x2D, 0x1F, 0x01, 0x03, 0x59, 0x82, 0x03, 0x39, 0x03, 0x18, 0x02, 0xF8, 0x03, 0x02, 0xD8, 0x01, 0x02, 0xD9, 0x81, 0x02, 0x98, 0x02, 0xB9, 0x08, 0x02, 0xB8, 0x01, 0x02, 0x98, 0x0A, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x04, 0x02, 0xB8, 0x85, 0x02, 0x98, 0x02, 0xB8, 0x02, 0x98, 0x02, 0xB8, 0x02, 0x98, 0x02, 0xB8, 0x02, 0x02, 0x98, 0x81, 0x02, 0xB9, 0x02, 0xB8, 0x03, 0x02, 0xD8, 0x80, 0x02, 0xF8, 0x02, 0x02, 0xD8, 0x86, 0x03, 0x19, 0x03, 0x9A, 0x14, 0x7D, 0x2C, 0xFF, 0x13, 0xFC, 0x03, 0x59, 0x03, 0x39, 0x01, 0x03, 0x19, 0x80, 0x02, 0xF9, 0x02, 0x02, 0xD9, 0x80, 0x02, 0xB8, 0x02, 0x02, 0xD9, 0x81, 0x02, 0xB8, 0x02, 0xD9, 0x01, 0x02, 0xB8, 0x80, 0x02, 0xD8, 0x03, 0x02, 0xB8, + 0x09, 0x02, 0x98, 0x82, 0x02, 0x97, 0x02, 0x77, 0x0A, 0x98, 0x01, 0x02, 0x97, 0x82, 0x0A, 0x97, 0x0A, 0x98, 0x02, 0x77, 0x01, 0x0A, 0xB8, 0x80, 0x0A, 0x97, 0x01, 0x12, 0xB8, 0x82, 0x0A, 0x97, 0x1A, 0xB8, 0x12, 0x98, 0x01, 0x1A, 0x98, 0x8F, 0x22, 0xB8, 0x22, 0x98, 0x2A, 0xD9, 0x2A, 0xB8, 0x32, 0x98, 0x3A, 0x77, 0x4A, 0x56, 0x5A, 0x35, 0x7A, 0x76, 0x82, 0x15, 0x9A, 0x55, 0x9A, 0x14, 0xA2, 0x14, 0xA9, 0xF4, 0xA9, 0xF3, 0xA9, 0xD3, 0x01, 0xB1, 0xF3, 0x8D, 0xA9, 0xD3, 0xA9, 0xF3, 0xA1, 0xF3, 0xA2, 0x13, 0x9A, 0x12, 0x8A, 0x12, 0x82, 0x12, 0x8A, 0xB4, 0xCC, 0xDC, 0xAB, 0x98, 0x81, 0xF2, 0x9A, 0x33, 0x9A, 0x13, 0xA2, 0x13, 0x01, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x8C, 0xB2, 0x14, 0xA9, 0xF3, 0xAA, 0x14, 0xA2, 0x34, 0x92, 0x35, 0x8A, 0x96, 0x6A, 0x56, 0x41, 0xF5, 0x21, 0xD5, 0x22, 0x57, 0x12, 0x56, 0x0A, 0x97, 0x0A, 0xB8, 0x03, 0x02, 0x98, 0x80, 0x02, 0x77, 0x01, 0x02, 0x97, 0x01, 0x02, 0x98, 0x03, 0x02, 0xB8, 0x02, 0x02, 0xB9, 0x80, 0x02, 0xB8, 0x04, 0x02, 0xD8, 0x8B, 0x02, 0xF8, 0x02, 0xF9, 0x03, 0x19, 0x03, 0x39, 0x03, 0x9A, 0x14, 0x5C, 0x24, 0xFF, 0x14, 0x5D, 0x03, 0xBA, 0x03, 0x59, 0x03, 0x39, 0x02, 0xF8, 0x01, 0x02, 0xD8, 0x81, 0x02, 0xF9, 0x02, 0xD8, 0x01, 0x02, 0xF9, 0x01, 0x02, 0xD8, 0x05, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x04, 0x02, 0xB8, 0x85, 0x02, 0x98, 0x02, 0xB8, 0x02, 0x98, 0x02, 0xB8, 0x02, 0x97, 0x02, 0x98, 0x03, 0x02, 0xB8, 0x81, 0x02, 0x98, 0x02, 0xB8, 0x02, 0x02, 0x98, 0x04, 0x02, 0xB8, 0x80, 0x02, 0xD8, 0x03, + 0x02, 0xB8, 0x80, 0x02, 0xB9, 0x05, 0x02, 0xB8, 0x8B, 0x02, 0xD8, 0x02, 0xF9, 0x03, 0x19, 0x03, 0x39, 0x03, 0x9A, 0x1C, 0x5D, 0x35, 0x1F, 0x1C, 0x5D, 0x0B, 0xBB, 0x03, 0x59, 0x03, 0x19, 0x02, 0xF8, 0x03, 0x02, 0xD8, 0x82, 0x02, 0xB8, 0x02, 0xD9, 0x02, 0xB9, 0x01, 0x02, 0xB8, 0x09, 0x02, 0x98, 0x04, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x03, 0x02, 0xB8, 0x80, 0x02, 0xB9, 0x01, 0x02, 0x98, 0x80, 0x02, 0x78, 0x0B, 0x02, 0x98, 0x05, 0x02, 0xB8, 0x81, 0x02, 0xD9, 0x03, 0x19, 0x02, 0x03, 0x3A, 0x88, 0x03, 0x7B, 0x14, 0x3D, 0x24, 0xBF, 0x1C, 0x3D, 0x0B, 0xBB, 0x03, 0x5A, 0x03, 0x1A, 0x02, 0xF9, 0x02, 0xD8, 0x01, 0x02, 0xB8, 0x01, 0x02, 0xD8, 0x80, 0x02, 0xB9, 0x03, 0x02, 0xB8, 0x05, 0x02, 0x98, 0x80, 0x02, 0x78, 0x02, 0x02, 0x98, 0x83, 0x02, 0x78, 0x02, 0x98, 0x02, 0x78, 0x02, 0x98, 0x02, 0x02, 0x78, 0x02, 0x02, 0x98, 0x01, 0x02, 0x78, 0x07, 0x02, 0x98, 0x02, 0x02, 0xB8, 0x80, 0x02, 0x98, 0x01, 0x02, 0x97, 0x03, 0x02, 0xB7, 0x82, 0x02, 0xB8, 0x02, 0xD8, 0x02, 0xF8, 0x01, 0x03, 0x19, 0x88, 0x03, 0x39, 0x03, 0x7A, 0x14, 0x3D, 0x2C, 0xDF, 0x1C, 0x7E, 0x13, 0xDB, 0x03, 0x5A, 0x03, 0x19, 0x02, 0xF8, 0x05, 0x02, 0xB8, 0x03, 0x02, 0x97, 0x03, 0x02, 0x98, 0x01, 0x02, 0x78, 0x83, 0x02, 0x57, 0x02, 0x78, 0x02, 0x77, 0x02, 0x78, 0x0B, 0x02, 0x57, 0x89, 0x02, 0x56, 0x02, 0x77, 0x02, 0x57, 0x02, 0x77, 0x02, 0x57, 0x02, 0x56, 0x02, 0x77, 0x02, 0x76, 0x02, 0x77, 0x02, 0x97, 0x01, 0x02, 0x98, 0x8C, 0x02, 0xD9, 0x02, 0xF9, 0x03, 0x5A, 0x1B, 0xFC, + 0x24, 0x7E, 0x2C, 0xBF, 0x24, 0xBE, 0x1C, 0x7D, 0x0C, 0x1C, 0x03, 0x9B, 0x03, 0x7A, 0x03, 0x3A, 0x03, 0x39, 0x01, 0x03, 0x19, 0x81, 0x02, 0xF8, 0x03, 0x19, 0x01, 0x02, 0xF9, 0x01, 0x03, 0x19, 0x09, 0x03, 0x3A, 0x81, 0x0B, 0x3A, 0x0B, 0x5A, 0x01, 0x0B, 0x3A, 0x01, 0x03, 0x1A, 0x02, 0x03, 0x3A, 0x81, 0x0B, 0x5A, 0x03, 0x1A, 0x01, 0x03, 0x3A, 0x01, 0x03, 0x1A, 0x06, 0x03, 0x3A, 0x02, 0x0B, 0x5B, 0x80, 0x0B, 0x7B, 0x03, 0x03, 0x3A, 0x8B, 0x0B, 0x5B, 0x0B, 0x7B, 0x03, 0x5A, 0x0B, 0x7A, 0x03, 0x3A, 0x03, 0x19, 0x03, 0x39, 0x03, 0x59, 0x03, 0x7A, 0x0B, 0xDB, 0x1C, 0x5D, 0x24, 0xBE, 0x01, 0x1C, 0x7E, 0x81, 0x0C, 0x1C, 0x03, 0x7A, 0x02, 0x03, 0x39, 0x80, 0x03, 0x19, 0x05, 0x03, 0x39, 0x01, 0x03, 0x5A, 0x80, 0x03, 0x3A, 0x02, 0x03, 0x39, 0x01, 0x03, 0x3A, 0x81, 0x03, 0x5A, 0x03, 0x7B, 0x02, 0x03, 0x3A, 0x80, 0x03, 0x5A, 0x01, 0x0B, 0x5B, 0x81, 0x03, 0x5B, 0x0B, 0x9C, 0x01, 0x03, 0x5B, 0x02, 0x03, 0x3B, 0x01, 0x0B, 0x5B, 0x83, 0x03, 0x3A, 0x03, 0x3B, 0x0B, 0x5B, 0x0B, 0x3B, 0x02, 0x03, 0x3A, 0x81, 0x0B, 0x5A, 0x03, 0x5A, 0x03, 0x0B, 0x7B, 0x85, 0x0B, 0x5A, 0x03, 0x5A, 0x0B, 0x9A, 0x0B, 0x9B, 0x0B, 0x9A, 0x0B, 0x9B, 0x02, 0x03, 0x39, 0x81, 0x03, 0x7A, 0x14, 0x3C, 0x01, 0x1C, 0xBE, 0x84, 0x24, 0xDF, 0x14, 0x5D, 0x03, 0x9A, 0x03, 0x59, 0x03, 0x39, 0x02, 0x03, 0x19, 0x03, 0x03, 0x39, 0x80, 0x03, 0x5A, 0x02, 0x03, 0x7A, 0x02, 0x03, 0x5A, 0x04, 0x03, 0x3A, 0x02, 0x0B, 0x5B, 0x01, 0x0B, 0x7B, 0x03, 0x03, 0x5B, 0x81, 0x0B, 0x5B, 0x03, + 0x5B, 0x02, 0x0B, 0x7B, 0x80, 0x0B, 0x9C, 0x01, 0x0B, 0x5B, 0x82, 0x03, 0x5B, 0x0B, 0x5B, 0x03, 0x3A, 0x02, 0x0B, 0x5B, 0x83, 0x0B, 0x7B, 0x0B, 0x9B, 0x0B, 0x7B, 0x0B, 0x9B, 0x01, 0x0B, 0x7B, 0x90, 0x0B, 0x9B, 0x0B, 0x9A, 0x0B, 0xBB, 0x13, 0xBB, 0x0B, 0x9B, 0x03, 0x7A, 0x03, 0x39, 0x03, 0x59, 0x0B, 0xFC, 0x1C, 0x7D, 0x1C, 0xBE, 0x24, 0xDF, 0x14, 0x5D, 0x03, 0xBB, 0x03, 0x7A, 0x03, 0x5A, 0x03, 0x59, 0x01, 0x03, 0x5A, 0x80, 0x03, 0x7B, 0x02, 0x03, 0x5A, 0x80, 0x03, 0x7B, 0x01, 0x03, 0x7A, 0x01, 0x03, 0x5B, 0x81, 0x03, 0x7B, 0x0B, 0x7B, 0x04, 0x0B, 0x9B, 0x01, 0x0B, 0x7B, 0x80, 0x0B, 0x9B, 0x04, 0x0B, 0x7B, 0x80, 0x0B, 0x9B, 0x03, 0x0B, 0x7B, 0x01, 0x0B, 0x9B, 0x80, 0x03, 0x7B, 0x01, 0x0B, 0x9B, 0x86, 0x03, 0x7B, 0x0B, 0x9B, 0x0B, 0xBC, 0x03, 0x7B, 0x0B, 0x9B, 0x03, 0x7A, 0x0B, 0x7B, 0x03, 0x0B, 0x9B, 0x89, 0x0B, 0x7A, 0x0B, 0x9A, 0x0B, 0x9B, 0x0B, 0xBB, 0x0B, 0xDB, 0x0B, 0xFC, 0x0B, 0xDB, 0x03, 0x7A, 0x03, 0xBA, 0x14, 0x3C, 0x01, 0x24, 0xDF, 0x81, 0x14, 0x7D, 0x03, 0xBA, 0x01, 0x03, 0x7A, 0x01, 0x03, 0x59, 0x81, 0x03, 0x5A, 0x03, 0x7A, 0x01, 0x03, 0x9B, 0x80, 0x03, 0x7B, 0x01, 0x0B, 0x7B, 0x80, 0x0B, 0xBB, 0x07, 0x0B, 0x9B, 0x80, 0x0B, 0x9C, 0x01, 0x0B, 0xBC, 0x8B, 0x0B, 0x9B, 0x0B, 0x9C, 0x0B, 0xBC, 0x0B, 0x9B, 0x13, 0xBC, 0x0B, 0x9C, 0x0B, 0x9B, 0x0B, 0x9C, 0x13, 0xBC, 0x0B, 0x9C, 0x13, 0xBC, 0x13, 0x9C, 0x01, 0x0B, 0x9C, 0x80, 0x13, 0xBC, 0x01, 0x0B, 0x9B, 0x83, 0x0B, 0xBB, 0x0B, 0x9B, 0x13, 0xBC, 0x1B, 0xFD, 0x01, + 0x0B, 0x7A, 0x01, 0x0B, 0x7B, 0x83, 0x0B, 0x9B, 0x13, 0xBB, 0x0B, 0x9B, 0x0B, 0xBB, 0x01, 0x13, 0xDB, 0x80, 0x0B, 0xBB, 0x02, 0x0B, 0xDB, 0x86, 0x03, 0xBA, 0x03, 0xDA, 0x1C, 0x9E, 0x24, 0xFF, 0x1C, 0xBE, 0x0C, 0x3C, 0x03, 0x99, 0x01, 0x03, 0x79, 0x80, 0x03, 0x9A, 0x02, 0x0B, 0x9A, 0x80, 0x0B, 0xBB, 0x01, 0x0B, 0x9B, 0x84, 0x0B, 0xBC, 0x0B, 0xBB, 0x13, 0xDC, 0x0B, 0xBC, 0x13, 0xDC, 0x02, 0x13, 0xBC, 0x83, 0x13, 0xDC, 0x0B, 0xBC, 0x13, 0xBC, 0x13, 0xDC, 0x01, 0x13, 0xBC, 0x89, 0x13, 0xDC, 0x13, 0xBC, 0x13, 0xDC, 0x13, 0xFC, 0x13, 0xDC, 0x13, 0xBC, 0x13, 0xDC, 0x13, 0xFC, 0x13, 0xDC, 0x13, 0xBC, 0x01, 0x13, 0xDC, 0x02, 0x13, 0xBC, 0x83, 0x13, 0xDC, 0x13, 0xBC, 0x0B, 0x9B, 0x0B, 0xBC, 0x01, 0x13, 0xDC, 0x82, 0x13, 0xBC, 0x0B, 0xBB, 0x13, 0xDC, 0x01, 0x13, 0xBC, 0x80, 0x13, 0xBB, 0x01, 0x0B, 0x9B, 0x02, 0x13, 0xBB, 0x01, 0x0B, 0x9B, 0x80, 0x0B, 0xBB, 0x01, 0x0B, 0xFB, 0x8A, 0x35, 0x3F, 0x14, 0x5D, 0x03, 0xFB, 0x03, 0xDB, 0x03, 0x9A, 0x03, 0x59, 0x03, 0x79, 0x03, 0x9A, 0x0B, 0x9A, 0x0B, 0xBB, 0x13, 0xDB, 0x01, 0x13, 0xBB, 0x03, 0x13, 0xDC, 0x02, 0x13, 0xBC, 0x84, 0x13, 0x9C, 0x13, 0xBC, 0x13, 0xDC, 0x13, 0xBC, 0x13, 0xDC, 0x05, 0x13, 0xBC, 0x02, 0x13, 0xDC, 0x01, 0x13, 0xBC, 0x80, 0x13, 0xDC, 0x03, 0x13, 0xBC, 0x84, 0x13, 0xBB, 0x13, 0xDC, 0x13, 0xBC, 0x13, 0xDC, 0x13, 0xBC, 0x02, 0x13, 0xDC, 0x80, 0x13, 0xFC, 0x01, 0x13, 0xDC, 0x80, 0x1B, 0xFC, 0x04, 0x13, 0xBB, 0x88, 0x13, 0xDB, 0x0B, 0x9A, 0x0B, 0xBA, 0x0B, 0xBB, 0x0B, + 0xDB, 0x0B, 0xBB, 0x14, 0x1C, 0x2D, 0x1F, 0x0C, 0x3C, 0x01, 0x03, 0xBB, 0x80, 0x03, 0x9B, 0x01, 0x0B, 0x9B, 0x82, 0x0B, 0xBC, 0x0B, 0xBB, 0x13, 0xDC, 0x02, 0x13, 0xFC, 0x01, 0x13, 0xDC, 0x80, 0x1B, 0xFD, 0x01, 0x1B, 0xFC, 0x81, 0x13, 0xFC, 0x1B, 0xFD, 0x03, 0x13, 0xDC, 0x81, 0x13, 0xFC, 0x1B, 0xFD, 0x05, 0x1B, 0xFC, 0x81, 0x13, 0xDC, 0x1B, 0xFC, 0x02, 0x13, 0xDC, 0x02, 0x1B, 0xFC, 0x82, 0x13, 0xDC, 0x1C, 0x1C, 0x13, 0xDC, 0x01, 0x13, 0xFC, 0x01, 0x13, 0xDC, 0x80, 0x1B, 0xFC, 0x01, 0x13, 0xFC, 0x02, 0x13, 0xDC, 0x81, 0x13, 0xFC, 0x0B, 0xBB, 0x02, 0x13, 0xBC, 0x82, 0x0B, 0xBB, 0x13, 0xDC, 0x0B, 0x9A, 0x01, 0x03, 0x7A, 0x83, 0x0B, 0xBB, 0x1C, 0x9E, 0x14, 0x7D, 0x03, 0x9A, 0x02, 0x0B, 0xBB, 0x82, 0x0B, 0x9B, 0x0B, 0xDC, 0x0B, 0xBC, 0x03, 0x13, 0xDC, 0x80, 0x1B, 0xDD, 0x02, 0x13, 0xBC, 0x82, 0x1B, 0xDC, 0x13, 0xDC, 0x1B, 0xFD, 0x02, 0x13, 0xDC, 0x80, 0x1B, 0xFD, 0x08, 0x13, 0xDC, 0x01, 0x13, 0xFD, 0x04, 0x13, 0xDC, 0x81, 0x13, 0xBC, 0x13, 0xDC, 0x01, 0x13, 0xBC, 0x03, 0x13, 0xDC, 0x85, 0x13, 0xBC, 0x0B, 0xBC, 0x13, 0xBC, 0x13, 0xDC, 0x0B, 0x9C, 0x13, 0xBC, 0x01, 0x0B, 0x9C, 0x01, 0x13, 0xBC, 0x81, 0x0B, 0x7B, 0x0B, 0x9C, 0x02, 0x0B, 0x9B, 0x88, 0x0B, 0xBB, 0x03, 0xBB, 0x03, 0xBA, 0x0C, 0x1C, 0x2D, 0x1F, 0x03, 0xBA, 0x03, 0xDB, 0x03, 0xBB, 0x0B, 0xBB, 0x01, 0x03, 0x7A, 0x01, 0x0B, 0xBC, 0x80, 0x0B, 0x9B, 0x01, 0x0B, 0x9C, 0x81, 0x13, 0xBC, 0x0B, 0x7B, 0x01, 0x0B, 0x9C, 0x86, 0x13, 0xBC, 0x0B, 0x9C, 0x13, 0xBC, 0x0B, 0x9B, + 0x13, 0xDC, 0x0B, 0xBC, 0x13, 0xDC, 0x01, 0x13, 0xBC, 0x04, 0x13, 0xDC, 0x81, 0x13, 0xBC, 0x13, 0x9C, 0x01, 0x13, 0xBC, 0x85, 0x13, 0xDC, 0x13, 0xBC, 0x13, 0xDC, 0x13, 0xBC, 0x0B, 0xBC, 0x13, 0x9C, 0x07, 0x13, 0xBC, 0x84, 0x13, 0x9C, 0x0B, 0x9C, 0x13, 0xDC, 0x0B, 0x9C, 0x0B, 0x7B, 0x02, 0x0B, 0x9B, 0x80, 0x13, 0xDC, 0x02, 0x0B, 0x9B, 0x83, 0x03, 0x9B, 0x03, 0xBB, 0x0B, 0xFB, 0x0C, 0x1C, 0x01, 0x1C, 0x9E, 0x8C, 0x0C, 0x3C, 0x0C, 0x1C, 0x0B, 0xFC, 0x03, 0x9B, 0x03, 0x7B, 0x0B, 0x7B, 0x0B, 0x9B, 0x0B, 0x7B, 0x0B, 0x9B, 0x13, 0x9C, 0x13, 0xBC, 0x0B, 0x7B, 0x13, 0xBC, 0x01, 0x0B, 0x7B, 0x02, 0x13, 0x9B, 0x80, 0x13, 0xBC, 0x03, 0x13, 0x9B, 0x80, 0x1B, 0x9B, 0x01, 0x1B, 0xBC, 0x83, 0x1B, 0x9B, 0x1B, 0xBC, 0x23, 0xBC, 0x1B, 0x9C, 0x02, 0x23, 0xBC, 0x02, 0x23, 0x9B, 0x81, 0x2B, 0xDC, 0x2B, 0xBC, 0x01, 0x2B, 0xDC, 0x8B, 0x2B, 0xBC, 0x2B, 0xDC, 0x33, 0xFC, 0x33, 0xDC, 0x33, 0xFD, 0x33, 0xDC, 0x3B, 0xFD, 0x3B, 0xDD, 0x3B, 0xFD, 0x3B, 0xBC, 0x43, 0xDD, 0x43, 0xBC, 0x01, 0x4B, 0xBC, 0x90, 0x5B, 0xBC, 0x5B, 0x7B, 0x6B, 0x5A, 0x7B, 0x19, 0x7A, 0x76, 0x8A, 0x35, 0x9A, 0x14, 0xA2, 0x14, 0xA1, 0xD3, 0xA9, 0xF4, 0xA9, 0xF3, 0xA9, 0xB3, 0xA9, 0xD3, 0xA9, 0xB3, 0xA9, 0xD3, 0xA9, 0xF3, 0xAA, 0x13, 0x01, 0x99, 0xF2, 0x8B, 0x91, 0xF2, 0x92, 0x33, 0x9A, 0x95, 0xAB, 0x16, 0x9A, 0x33, 0x99, 0xF2, 0xA2, 0x13, 0xA1, 0xF3, 0xA9, 0xF3, 0xA9, 0xD3, 0xB2, 0x14, 0xA9, 0xF4, 0x01, 0xA9, 0xF3, 0x8E, 0xAA, 0x14, 0xA2, 0x14, 0x9A, 0x35, 0x8A, 0x76, 0x6A, + 0x56, 0x41, 0xD5, 0x53, 0x3A, 0x2A, 0xD8, 0x22, 0xF9, 0x1B, 0x3A, 0x13, 0x5A, 0x13, 0x5B, 0x0B, 0x7A, 0x13, 0x9B, 0x13, 0x7B, 0x01, 0x13, 0x9B, 0x01, 0x0B, 0x7B, 0x85, 0x13, 0x9B, 0x0B, 0x7B, 0x0B, 0x5B, 0x0B, 0x7B, 0x13, 0x9C, 0x0B, 0x7B, 0x01, 0x03, 0x5B, 0x03, 0x0B, 0x7B, 0x80, 0x0B, 0x9B, 0x01, 0x03, 0x7A, 0x01, 0x03, 0x5A, 0x8B, 0x03, 0x9A, 0x03, 0xDB, 0x04, 0x1C, 0x0C, 0x5C, 0x14, 0x9E, 0x1C, 0x9E, 0x0C, 0x3C, 0x0B, 0xFB, 0x03, 0xBA, 0x0B, 0xBB, 0x0B, 0x9B, 0x03, 0x7A, 0x02, 0x03, 0x5A, 0x82, 0x03, 0x7A, 0x0B, 0x7B, 0x0B, 0x9B, 0x01, 0x0B, 0x7B, 0x87, 0x03, 0x5A, 0x03, 0x3A, 0x03, 0x5A, 0x0B, 0x7B, 0x03, 0x3A, 0x0B, 0x5B, 0x03, 0x5B, 0x0B, 0x5B, 0x01, 0x0B, 0x7B, 0x87, 0x0B, 0x5B, 0x0B, 0x7B, 0x0B, 0x5B, 0x03, 0x5A, 0x0B, 0x5A, 0x0B, 0x5B, 0x0B, 0x5A, 0x0B, 0x7B, 0x01, 0x0B, 0x5B, 0x84, 0x03, 0x5A, 0x03, 0x3A, 0x03, 0x5A, 0x0B, 0x7B, 0x0B, 0x5B, 0x01, 0x03, 0x5A, 0x82, 0x0B, 0x7B, 0x03, 0x3A, 0x0B, 0x7A, 0x02, 0x03, 0x5A, 0x81, 0x0B, 0x7B, 0x03, 0x5B, 0x01, 0x03, 0x5A, 0x80, 0x03, 0x7B, 0x01, 0x03, 0x5A, 0x01, 0x03, 0x3A, 0x01, 0x03, 0x39, 0x87, 0x03, 0x9A, 0x0B, 0xFC, 0x0B, 0xDB, 0x14, 0x3D, 0x24, 0xDF, 0x24, 0xFF, 0x1C, 0x7E, 0x14, 0x3D, 0x02, 0x0B, 0xBB, 0x01, 0x0B, 0x9B, 0x88, 0x0B, 0x7B, 0x03, 0x5A, 0x03, 0x3A, 0x0B, 0x5A, 0x03, 0x3A, 0x0B, 0x5A, 0x0B, 0x7B, 0x03, 0x3A, 0x0B, 0x3A, 0x01, 0x0B, 0x5B, 0x80, 0x0B, 0x7B, 0x01, 0x03, 0x5B, 0x85, 0x0B, 0x7B, 0x03, 0x5B, 0x03, 0x3A, 0x03, 0x5A, 0x03, 0x7B, 0x03, + 0x5A, 0x02, 0x03, 0x5B, 0x83, 0x03, 0x7B, 0x0B, 0x7B, 0x03, 0x5B, 0x03, 0x7B, 0x01, 0x03, 0x5B, 0x01, 0x03, 0x3B, 0x82, 0x03, 0x3A, 0x03, 0x3B, 0x03, 0x1A, 0x01, 0x03, 0x3A, 0x80, 0x03, 0x3B, 0x01, 0x0B, 0x5B, 0x82, 0x03, 0x3A, 0x0B, 0x5A, 0x03, 0x3A, 0x01, 0x03, 0x5A, 0x83, 0x03, 0x3A, 0x03, 0x5A, 0x03, 0x7A, 0x03, 0x5A, 0x02, 0x03, 0x3A, 0x87, 0x03, 0x5A, 0x03, 0x7A, 0x03, 0x9B, 0x0B, 0xFC, 0x24, 0xBF, 0x24, 0xDF, 0x1C, 0x5E, 0x13, 0xFD, 0x01, 0x03, 0x9B, 0x81, 0x03, 0x7B, 0x0B, 0x7B, 0x02, 0x0B, 0x9B, 0x03, 0x03, 0x5A, 0x02, 0x03, 0x3A, 0x82, 0x03, 0x1A, 0x0B, 0x5A, 0x03, 0x3A, 0x01, 0x03, 0x1A, 0x80, 0x03, 0x5A, 0x02, 0x03, 0x3A, 0x01, 0x03, 0x5A, 0x82, 0x03, 0x3A, 0x03, 0x3B, 0x0B, 0x5B, 0x01, 0x03, 0x1A, 0x01, 0x03, 0x3A, 0x01, 0x03, 0x3B, 0x81, 0x03, 0x1A, 0x03, 0x3A, 0x06, 0x03, 0x1A, 0x80, 0x03, 0x3A, 0x05, 0x03, 0x19, 0x05, 0x03, 0x39, 0x80, 0x03, 0x5A, 0x01, 0x03, 0x7A, 0x8A, 0x03, 0xBB, 0x1C, 0x7E, 0x2C, 0xDF, 0x24, 0xBE, 0x1C, 0x7D, 0x0B, 0xDB, 0x03, 0x9A, 0x03, 0x59, 0x03, 0x5A, 0x03, 0x59, 0x03, 0x5A, 0x02, 0x0B, 0x7A, 0x82, 0x03, 0x5A, 0x03, 0x3A, 0x03, 0x19, 0x04, 0x03, 0x3A, 0x82, 0x0B, 0x3B, 0x02, 0xFA, 0x03, 0x1A, 0x01, 0x02, 0xFA, 0x80, 0x02, 0xF9, 0x03, 0x03, 0x1A, 0x80, 0x0B, 0x3A, 0x03, 0x03, 0x1A, 0x84, 0x0B, 0x3A, 0x0B, 0x5A, 0x0B, 0x3A, 0x0B, 0x5B, 0x03, 0x19, 0x01, 0x03, 0x3A, 0x80, 0x0B, 0x3A, 0x01, 0x0B, 0x5A, 0x8E, 0x03, 0x3A, 0x03, 0x1A, 0x24, 0x1E, 0x24, 0x3E, 0x2C, 0x7E, 0x2C, 0x9F, + 0x2C, 0xDF, 0x24, 0x9E, 0x1C, 0x5D, 0x14, 0x1C, 0x0B, 0xFC, 0x0B, 0xDB, 0x0B, 0xDC, 0x13, 0xFC, 0x13, 0xDC, 0x01, 0x0B, 0x9B, 0x82, 0x0B, 0x7B, 0x13, 0xBB, 0x0B, 0x9B, 0x01, 0x13, 0x9B, 0x81, 0x13, 0xBC, 0x0B, 0x9B, 0x02, 0x13, 0xBC, 0x85, 0x0B, 0x9B, 0x0B, 0xBB, 0x0B, 0x9B, 0x0B, 0xBB, 0x0B, 0x9B, 0x0B, 0xBB, 0x03, 0x13, 0xBC, 0x80, 0x13, 0x9C, 0x04, 0x13, 0xBC, 0x82, 0x0B, 0x7B, 0x13, 0xBC, 0x0B, 0x9C, 0x01, 0x13, 0xBC, 0x85, 0x13, 0xDD, 0x0B, 0xBC, 0x13, 0xDC, 0x0B, 0x9C, 0x13, 0xBC, 0x0B, 0x9B, 0x01, 0x0B, 0xBC, 0x82, 0x13, 0xBC, 0x0B, 0xBC, 0x13, 0xBC, 0x02, 0x0B, 0x9B, 0x01, 0x03, 0x7B, 0x82, 0x03, 0x9B, 0x03, 0x7B, 0x03, 0x9B, 0x01, 0x03, 0x9A, 0x83, 0x0B, 0xBB, 0x14, 0x1C, 0x1C, 0x5D, 0x24, 0xBE, 0x01, 0x24, 0xDF, 0x83, 0x24, 0x9E, 0x14, 0x3D, 0x0B, 0xFC, 0x0B, 0xDC, 0x02, 0x0B, 0xBB, 0x01, 0x0B, 0x9B, 0x84, 0x13, 0xBB, 0x0B, 0xBB, 0x13, 0xDB, 0x13, 0xDC, 0x13, 0xDB, 0x01, 0x13, 0xDC, 0x89, 0x0B, 0xBB, 0x13, 0xBC, 0x0B, 0x9B, 0x13, 0xBC, 0x13, 0xDC, 0x0B, 0xBC, 0x13, 0xDC, 0x0B, 0xDC, 0x0B, 0xBC, 0x13, 0xDC, 0x02, 0x0B, 0xBC, 0x83, 0x13, 0xBC, 0x13, 0xDC, 0x13, 0xDD, 0x0B, 0xBC, 0x01, 0x13, 0xDD, 0x03, 0x13, 0xBD, 0x02, 0x13, 0xDD, 0x89, 0x13, 0x9C, 0x13, 0xDD, 0x13, 0xBC, 0x13, 0xDD, 0x13, 0xBC, 0x13, 0xDC, 0x13, 0xFD, 0x13, 0xFC, 0x13, 0xDC, 0x0B, 0xBC, 0x02, 0x0B, 0xBB, 0x03, 0x03, 0x9A, 0x86, 0x0B, 0xBB, 0x14, 0x3D, 0x24, 0x9E, 0x2C, 0xDF, 0x2D, 0x1F, 0x24, 0xFF, 0x1C, 0x7E, 0x01, 0x14, 0x3D, 0x80, 0x13, + 0xFC, 0x01, 0x13, 0xDC, 0x01, 0x13, 0xBC, 0x82, 0x13, 0xDC, 0x13, 0xBC, 0x13, 0xFC, 0x01, 0x13, 0xDC, 0x04, 0x0B, 0xDC, 0x01, 0x13, 0xDC, 0x82, 0x0B, 0xBC, 0x13, 0xBC, 0x13, 0xDC, 0x02, 0x13, 0xBC, 0x87, 0x13, 0xFD, 0x0B, 0xDC, 0x13, 0xDC, 0x0B, 0xBC, 0x13, 0xDD, 0x0B, 0xDC, 0x0B, 0xBC, 0x13, 0xBC, 0x02, 0x13, 0xDD, 0x01, 0x13, 0xFD, 0x80, 0x13, 0xDD, 0x01, 0x1B, 0xFD, 0x8C, 0x13, 0xFD, 0x13, 0xDD, 0x1B, 0xDD, 0x13, 0xBC, 0x13, 0xDD, 0x13, 0xBC, 0x13, 0xDC, 0x0B, 0xDC, 0x13, 0xDC, 0x0B, 0xBC, 0x13, 0xDC, 0x13, 0xFC, 0x0B, 0xBB, 0x01, 0x0B, 0xDB, 0x01, 0x03, 0x9A, 0x8F, 0x03, 0xDB, 0x1C, 0x5D, 0x24, 0xDF, 0x2D, 0x1F, 0x24, 0xFF, 0x1C, 0x9E, 0x14, 0x5D, 0x14, 0x3D, 0x14, 0x1D, 0x13, 0xFC, 0x13, 0xFD, 0x13, 0xFC, 0x0B, 0xDC, 0x13, 0xFD, 0x0B, 0xFC, 0x13, 0xFD, 0x04, 0x0B, 0xDC, 0x01, 0x0B, 0xDD, 0x01, 0x0B, 0xDC, 0x08, 0x13, 0xFD, 0x80, 0x13, 0xDD, 0x01, 0x13, 0xFD, 0x01, 0x13, 0xDD, 0x82, 0x13, 0xFD, 0x0B, 0xDC, 0x13, 0xDD, 0x03, 0x13, 0xFD, 0x85, 0x0B, 0xDC, 0x13, 0xFD, 0x14, 0x1D, 0x0B, 0xFC, 0x0B, 0xDC, 0x13, 0xFD, 0x02, 0x0B, 0xDC, 0x01, 0x13, 0xDC, 0x80, 0x13, 0xFC, 0x03, 0x0B, 0xDC, 0x84, 0x0B, 0xFC, 0x03, 0xDB, 0x03, 0xBA, 0x03, 0xDB, 0x14, 0x5D, 0x01, 0x24, 0xDF, 0x80, 0x1C, 0x9E, 0x01, 0x14, 0x3D, 0x84, 0x14, 0x5D, 0x14, 0x3D, 0x14, 0x1C, 0x13, 0xFC, 0x0B, 0xDC, 0x01, 0x13, 0xFC, 0x88, 0x14, 0x1D, 0x0B, 0xFC, 0x13, 0xFD, 0x14, 0x1D, 0x13, 0xFD, 0x0B, 0xDC, 0x13, 0xDC, 0x0B, 0xDC, 0x13, 0xFC, 0x01, 0x13, 0xFD, + 0x80, 0x13, 0xDD, 0x04, 0x13, 0xFD, 0x80, 0x14, 0x1D, 0x01, 0x13, 0xFD, 0x88, 0x14, 0x1D, 0x13, 0xFD, 0x14, 0x1D, 0x1C, 0x1E, 0x1C, 0x1D, 0x13, 0xFD, 0x1C, 0x1D, 0x13, 0xFD, 0x1C, 0x1E, 0x02, 0x13, 0xFD, 0x02, 0x1C, 0x1D, 0x82, 0x14, 0x1D, 0x1C, 0x1D, 0x14, 0x1D, 0x01, 0x1C, 0x1D, 0x80, 0x13, 0xDC, 0x01, 0x13, 0xFC, 0x82, 0x0B, 0x9B, 0x13, 0xFC, 0x0B, 0xDB, 0x02, 0x0B, 0xFC, 0x8A, 0x0C, 0x1C, 0x03, 0xFB, 0x03, 0xDB, 0x0C, 0x3C, 0x1C, 0xFF, 0x1C, 0xDF, 0x14, 0x7D, 0x14, 0x9D, 0x1C, 0x9E, 0x1C, 0x5D, 0x14, 0x3D, 0x02, 0x14, 0x1C, 0x80, 0x14, 0x1D, 0x03, 0x13, 0xFD, 0x84, 0x14, 0x1D, 0x13, 0xFD, 0x14, 0x1D, 0x13, 0xFD, 0x14, 0x1D, 0x01, 0x13, 0xFD, 0x82, 0x13, 0xDD, 0x13, 0xFD, 0x14, 0x1D, 0x01, 0x13, 0xFD, 0x81, 0x14, 0x1D, 0x13, 0xFD, 0x02, 0x14, 0x1D, 0x80, 0x13, 0xFD, 0x01, 0x1C, 0x1E, 0x02, 0x14, 0x1D, 0x81, 0x1C, 0x1D, 0x1C, 0x3E, 0x01, 0x1C, 0x1D, 0x84, 0x1C, 0x1E, 0x1C, 0x1D, 0x14, 0x1D, 0x1C, 0x1D, 0x1C, 0x3E, 0x01, 0x14, 0x1D, 0x80, 0x1C, 0x3E, 0x01, 0x1C, 0x3D, 0x85, 0x14, 0x1D, 0x1C, 0x3D, 0x1C, 0x1D, 0x1C, 0x3D, 0x13, 0xFC, 0x1C, 0x1D, 0x03, 0x13, 0xFC, 0x89, 0x0B, 0xDC, 0x0B, 0xFC, 0x03, 0xDB, 0x1C, 0xBE, 0x24, 0xDF, 0x14, 0x5D, 0x1C, 0x9E, 0x1C, 0x7E, 0x1C, 0x5D, 0x1C, 0x3D, 0x02, 0x14, 0x1C, 0x81, 0x1C, 0x1C, 0x14, 0x1C, 0x03, 0x1C, 0x1D, 0x81, 0x1C, 0x1E, 0x1B, 0xFD, 0x02, 0x1C, 0x1D, 0x82, 0x1C, 0x3E, 0x1C, 0x1D, 0x14, 0x1D, 0x01, 0x1C, 0x1E, 0x02, 0x1C, 0x3E, 0x01, 0x1C, 0x1D, 0x01, 0x1C, 0x3E, 0x80, + 0x1C, 0x1D, 0x01, 0x1C, 0x3E, 0x82, 0x1C, 0x1E, 0x1C, 0x1D, 0x1C, 0x3D, 0x03, 0x1C, 0x3E, 0x80, 0x1C, 0x3D, 0x02, 0x1C, 0x3E, 0x84, 0x1C, 0x3D, 0x1C, 0x5E, 0x1C, 0x3E, 0x1C, 0x5E, 0x1C, 0x3D, 0x01, 0x1C, 0x1D, 0x81, 0x1C, 0x3D, 0x1C, 0x5D, 0x01, 0x1C, 0x3D, 0x8B, 0x1C, 0x1D, 0x13, 0xFC, 0x1C, 0x3D, 0x1C, 0x5D, 0x14, 0x1C, 0x0B, 0xFC, 0x0C, 0x1C, 0x24, 0xBF, 0x24, 0xDF, 0x14, 0x5D, 0x14, 0x5E, 0x14, 0x3D, 0x03, 0x14, 0x1D, 0x80, 0x1C, 0x1D, 0x01, 0x14, 0x1D, 0x81, 0x13, 0xFC, 0x1C, 0x3D, 0x01, 0x1C, 0x1D, 0x81, 0x13, 0xFD, 0x1C, 0x3D, 0x02, 0x1C, 0x1D, 0x80, 0x1C, 0x3E, 0x02, 0x1C, 0x1D, 0x83, 0x1C, 0x3E, 0x14, 0x1D, 0x1C, 0x3D, 0x1C, 0x1D, 0x02, 0x1C, 0x3D, 0x02, 0x1C, 0x1D, 0x02, 0x1C, 0x3D, 0x80, 0x1C, 0x1D, 0x02, 0x1C, 0x3D, 0x80, 0x1C, 0x1D, 0x01, 0x1C, 0x3D, 0x80, 0x1C, 0x5D, 0x01, 0x1C, 0x3D, 0x86, 0x14, 0x1D, 0x1C, 0x5E, 0x1C, 0x3D, 0x1C, 0x3E, 0x1C, 0x5E, 0x1C, 0x3E, 0x1C, 0x3D, 0x01, 0x24, 0x7F, 0x83, 0x1C, 0x5E, 0x24, 0x7E, 0x24, 0x5E, 0x1C, 0x1D, 0x02, 0x1C, 0x3D, 0x88, 0x14, 0x1D, 0x1C, 0xBE, 0x14, 0x7E, 0x0C, 0x1D, 0x1C, 0x3E, 0x14, 0x3D, 0x14, 0x1D, 0x14, 0x3D, 0x14, 0x1D, 0x02, 0x1C, 0x3E, 0x84, 0x1C, 0x1E, 0x1C, 0x3E, 0x1C, 0x1D, 0x1C, 0x3E, 0x24, 0x3E, 0x03, 0x1C, 0x3E, 0x01, 0x1C, 0x5E, 0x81, 0x1C, 0x3D, 0x1C, 0x1D, 0x01, 0x1C, 0x3E, 0x83, 0x1C, 0x3D, 0x1C, 0x1D, 0x1C, 0x3E, 0x1C, 0x1D, 0x02, 0x1C, 0x3E, 0x88, 0x1C, 0x1D, 0x1C, 0x3E, 0x1C, 0x1D, 0x1C, 0x3D, 0x1C, 0x1D, 0x1C, 0x3D, 0x1C, 0x1D, 0x1C, + 0x3D, 0x1C, 0x1D, 0x02, 0x1C, 0x3E, 0x89, 0x1C, 0x3D, 0x1C, 0x3E, 0x1C, 0x1D, 0x1C, 0x3E, 0x1C, 0x5E, 0x1C, 0x3E, 0x14, 0x1D, 0x1C, 0x3E, 0x1C, 0x1E, 0x1C, 0x1D, 0x01, 0x1C, 0x3E, 0x80, 0x1C, 0x1D, 0x02, 0x1C, 0x3E, 0x88, 0x1C, 0x1D, 0x1C, 0x3D, 0x14, 0x1D, 0x14, 0x3D, 0x14, 0x5D, 0x0C, 0x1C, 0x24, 0xDF, 0x1C, 0xDE, 0x14, 0x7D, 0x01, 0x14, 0x3D, 0x80, 0x14, 0x1D, 0x01, 0x14, 0x3D, 0x01, 0x1C, 0x3E, 0x80, 0x1B, 0xFD, 0x02, 0x1C, 0x1E, 0x80, 0x1C, 0x3E, 0x01, 0x1C, 0x1E, 0x81, 0x1C, 0x3E, 0x1C, 0x1E, 0x02, 0x1C, 0x3E, 0x80, 0x1C, 0x1D, 0x04, 0x1C, 0x3E, 0x80, 0x14, 0x1D, 0x01, 0x1C, 0x3E, 0x81, 0x1C, 0x1E, 0x14, 0x1D, 0x02, 0x1C, 0x3E, 0x80, 0x1C, 0x1E, 0x01, 0x1C, 0x3E, 0x8D, 0x1C, 0x1E, 0x14, 0x1D, 0x1C, 0x1E, 0x1C, 0x1D, 0x1C, 0x1E, 0x1C, 0x1D, 0x1C, 0x3E, 0x1C, 0x1D, 0x1C, 0x1E, 0x1C, 0x3E, 0x14, 0x1D, 0x13, 0xFD, 0x1C, 0x1E, 0x1C, 0x3E, 0x01, 0x13, 0xFD, 0x82, 0x1C, 0x1D, 0x13, 0xFD, 0x1C, 0x3E, 0x02, 0x14, 0x1D, 0x81, 0x14, 0x3D, 0x0C, 0x3C, 0x01, 0x14, 0x5D, 0x84, 0x1C, 0xBE, 0x14, 0x9E, 0x0C, 0x3C, 0x0C, 0x1C, 0x0B, 0xDC, 0x03, 0x13, 0xFD, 0x02, 0x1B, 0xFD, 0x82, 0x1C, 0x1E, 0x1B, 0xFD, 0x1C, 0x1E, 0x01, 0x1C, 0x1D, 0x01, 0x24, 0x3E, 0x83, 0x1B, 0xFD, 0x24, 0x3E, 0x24, 0x3D, 0x24, 0x1D, 0x01, 0x2C, 0x3E, 0x80, 0x23, 0xFD, 0x04, 0x2C, 0x3E, 0x80, 0x2C, 0x1D, 0x02, 0x34, 0x3E, 0x01, 0x34, 0x5E, 0x82, 0x34, 0x3E, 0x3C, 0x5E, 0x34, 0x5E, 0x02, 0x3C, 0x5E, 0x80, 0x34, 0x3D, 0x01, 0x3C, 0x5E, 0x92, 0x44, 0x5E, 0x4C, + 0x7F, 0x44, 0x5F, 0x44, 0x5E, 0x4C, 0x7F, 0x4C, 0x3E, 0x4C, 0x1D, 0x4C, 0x1E, 0x54, 0x1D, 0x53, 0xFD, 0x63, 0xFD, 0x73, 0xDC, 0x73, 0x7A, 0x7A, 0xB8, 0x82, 0x35, 0x92, 0x35, 0x99, 0xF4, 0xA2, 0x14, 0xA1, 0xD3, 0x01, 0xA9, 0xD3, 0x82, 0xA9, 0xB3, 0xB1, 0xF4, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x02, 0xA1, 0xF3, 0x85, 0x99, 0xF3, 0x9A, 0x13, 0xA2, 0x74, 0xA2, 0x34, 0x99, 0xD2, 0xA1, 0xF3, 0x03, 0xA9, 0xF3, 0x80, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x8B, 0xA2, 0x14, 0xA2, 0x34, 0x9A, 0x35, 0x8A, 0x55, 0x82, 0xD8, 0x5A, 0x97, 0x74, 0x3D, 0x5C, 0x1D, 0x44, 0x1D, 0x33, 0xFD, 0x23, 0xFD, 0x24, 0x1D, 0x01, 0x1B, 0xFD, 0x85, 0x24, 0x1D, 0x1B, 0xFD, 0x1C, 0x1D, 0x24, 0x3E, 0x1C, 0x1D, 0x1B, 0xFD, 0x01, 0x1C, 0x1D, 0x01, 0x13, 0xDD, 0x01, 0x13, 0xFD, 0x81, 0x14, 0x1D, 0x13, 0xFD, 0x01, 0x14, 0x1D, 0x81, 0x13, 0xFD, 0x13, 0xDC, 0x01, 0x13, 0xFD, 0x01, 0x13, 0xFC, 0x89, 0x0B, 0xFC, 0x0C, 0x1C, 0x14, 0x3D, 0x0C, 0x5D, 0x14, 0x7D, 0x1C, 0x9E, 0x1C, 0xDF, 0x1C, 0x9E, 0x0C, 0x3C, 0x0C, 0x1C, 0x01, 0x03, 0xDB, 0x80, 0x03, 0xBB, 0x01, 0x0B, 0xBB, 0x86, 0x0B, 0xBC, 0x0B, 0xDC, 0x13, 0xDC, 0x13, 0xFC, 0x13, 0xDC, 0x13, 0xFD, 0x1C, 0x1D, 0x01, 0x13, 0xFD, 0x81, 0x1B, 0xFD, 0x13, 0xDD, 0x01, 0x1B, 0xFD, 0x01, 0x13, 0xFD, 0x81, 0x1B, 0xFD, 0x13, 0xDD, 0x01, 0x1B, 0xFD, 0x01, 0x13, 0xFD, 0x82, 0x13, 0xDD, 0x13, 0xDC, 0x13, 0xFD, 0x01, 0x13, 0xDD, 0x82, 0x13, 0xFD, 0x13, 0xDC, 0x13, 0xBC, 0x01, 0x13, 0xFD, 0x82, 0x13, 0xDD, 0x13, 0xDC, 0x13, 0xFD, 0x01, + 0x13, 0xDC, 0x82, 0x13, 0xFD, 0x13, 0xDC, 0x0B, 0xBC, 0x02, 0x13, 0xFD, 0x02, 0x0B, 0xDC, 0x80, 0x13, 0xDC, 0x02, 0x0B, 0xDC, 0x81, 0x0B, 0xBB, 0x0B, 0xDC, 0x01, 0x0B, 0xFC, 0x88, 0x0C, 0x1C, 0x14, 0x7D, 0x1C, 0xBE, 0x24, 0xBF, 0x1C, 0x9E, 0x14, 0x3D, 0x0B, 0xDB, 0x03, 0xBB, 0x03, 0x9B, 0x01, 0x03, 0x7B, 0x81, 0x0B, 0x7B, 0x0B, 0x9B, 0x02, 0x13, 0xBC, 0x01, 0x13, 0xDC, 0x81, 0x13, 0xDD, 0x13, 0xBC, 0x01, 0x13, 0xDD, 0x81, 0x13, 0xFD, 0x13, 0xDC, 0x01, 0x13, 0xFD, 0x81, 0x0B, 0xDC, 0x0B, 0xBC, 0x01, 0x0B, 0xDC, 0x01, 0x13, 0xFD, 0x83, 0x0B, 0xDD, 0x0B, 0xDC, 0x13, 0xFD, 0x0B, 0xDD, 0x02, 0x13, 0xFD, 0x01, 0x13, 0xDD, 0x82, 0x0B, 0xBC, 0x13, 0xBC, 0x13, 0xDD, 0x01, 0x13, 0xBC, 0x82, 0x13, 0xDD, 0x13, 0xBD, 0x13, 0xFD, 0x01, 0x13, 0xDC, 0x81, 0x0B, 0xDC, 0x13, 0xDC, 0x01, 0x0B, 0xDC, 0x82, 0x0B, 0xBC, 0x13, 0xDC, 0x0B, 0xDC, 0x01, 0x0B, 0xBC, 0x8D, 0x0B, 0x9B, 0x03, 0x9B, 0x0B, 0xBC, 0x03, 0xBB, 0x0B, 0xDC, 0x14, 0x3D, 0x1C, 0x7E, 0x24, 0x9F, 0x1C, 0x7E, 0x14, 0x3D, 0x0B, 0xFC, 0x03, 0xBB, 0x03, 0x9A, 0x03, 0x7A, 0x03, 0x03, 0x9B, 0x81, 0x0B, 0x9B, 0x13, 0xBC, 0x03, 0x13, 0xDC, 0x83, 0x13, 0xFD, 0x13, 0xDC, 0x13, 0xBC, 0x0B, 0x9C, 0x01, 0x13, 0xDC, 0x81, 0x13, 0xBC, 0x0B, 0xBC, 0x01, 0x13, 0xBC, 0x80, 0x13, 0xDD, 0x03, 0x13, 0xBC, 0x80, 0x0B, 0xBC, 0x02, 0x13, 0xBD, 0x81, 0x0B, 0x9C, 0x13, 0xBC, 0x03, 0x13, 0xDD, 0x01, 0x13, 0xBC, 0x01, 0x13, 0xDD, 0x01, 0x13, 0xDC, 0x02, 0x13, 0xBC, 0x81, 0x0B, 0xBC, 0x0B, 0x9B, 0x03, + 0x0B, 0xBB, 0x01, 0x0B, 0x9B, 0x01, 0x0B, 0xBB, 0x83, 0x03, 0xBB, 0x0B, 0xFB, 0x14, 0x3D, 0x1C, 0x7D, 0x01, 0x24, 0xBF, 0x82, 0x1C, 0x7E, 0x14, 0x1C, 0x0B, 0xBB, 0x01, 0x03, 0x7A, 0x80, 0x03, 0x9A, 0x04, 0x0B, 0x9B, 0x80, 0x0B, 0x7B, 0x01, 0x0B, 0x9B, 0x01, 0x0B, 0x9C, 0x03, 0x13, 0x9C, 0x81, 0x13, 0xBC, 0x13, 0x9C, 0x01, 0x13, 0xBC, 0x81, 0x13, 0x9C, 0x0B, 0x7C, 0x03, 0x13, 0xBC, 0x80, 0x13, 0xDD, 0x01, 0x13, 0xBC, 0x82, 0x0B, 0x7B, 0x0B, 0x9C, 0x13, 0xBC, 0x03, 0x0B, 0x9B, 0x83, 0x0B, 0x7B, 0x0B, 0x7C, 0x2C, 0x7F, 0x24, 0x3E, 0x01, 0x1B, 0xFD, 0x83, 0x13, 0xBC, 0x0B, 0x7B, 0x13, 0x9B, 0x13, 0xBC, 0x01, 0x13, 0xDC, 0x80, 0x13, 0xBC, 0x01, 0x13, 0x9B, 0x81, 0x13, 0xDC, 0x13, 0xBC, 0x02, 0x13, 0xDC, 0x01, 0x1B, 0xDC, 0x82, 0x13, 0xBC, 0x1B, 0xDC, 0x1B, 0xBC, 0x01, 0x13, 0xBC, 0x80, 0x1B, 0xDC, 0x03, 0x13, 0xBC, 0x01, 0x13, 0x9C, 0x80, 0x13, 0x7C, 0x02, 0x13, 0x9C, 0x01, 0x13, 0xBC, 0x81, 0x13, 0x9C, 0x13, 0xBC, 0x01, 0x1B, 0xDD, 0x82, 0x13, 0xBD, 0x13, 0xBC, 0x13, 0x9C, 0x01, 0x13, 0xBC, 0x81, 0x1B, 0xFD, 0x1B, 0xDD, 0x01, 0x1B, 0xFD, 0x02, 0x13, 0xFD, 0x01, 0x13, 0xBC, 0x8B, 0x0B, 0x9C, 0x0B, 0x9B, 0x0B, 0x9C, 0x0B, 0x9B, 0x0B, 0xBC, 0x13, 0xFD, 0x14, 0x1D, 0x13, 0xDC, 0x14, 0x3D, 0x1C, 0x7E, 0x24, 0x7E, 0x2C, 0xBF, 0x01, 0x24, 0x9E, 0x82, 0x24, 0x5E, 0x1B, 0xFC, 0x13, 0xDC, 0x03, 0x0B, 0x9B, 0x80, 0x13, 0xBC, 0x02, 0x13, 0xDC, 0x84, 0x1B, 0xFD, 0x13, 0xFC, 0x1B, 0xFD, 0x13, 0xDC, 0x1B, 0xFD, 0x01, 0x13, 0xDC, 0x8B, + 0x1B, 0xFD, 0x1C, 0x1D, 0x1B, 0xFD, 0x1C, 0x1D, 0x1B, 0xFD, 0x13, 0xDC, 0x13, 0xDD, 0x1B, 0xFD, 0x13, 0xDC, 0x1B, 0xFD, 0x13, 0xDD, 0x13, 0xBC, 0x01, 0x13, 0xDD, 0x82, 0x13, 0xBD, 0x13, 0xDD, 0x13, 0xBC, 0x01, 0x13, 0xDD, 0x85, 0x13, 0xBC, 0x13, 0xDD, 0x1B, 0xDD, 0x13, 0xBD, 0x1B, 0xBD, 0x13, 0xBD, 0x01, 0x1B, 0xDD, 0x86, 0x24, 0x1E, 0x1B, 0xFE, 0x1C, 0x1D, 0x24, 0x3E, 0x1C, 0x1E, 0x1C, 0x1D, 0x1B, 0xFD, 0x01, 0x13, 0xBC, 0x82, 0x13, 0xDC, 0x0B, 0xBB, 0x0B, 0xDB, 0x01, 0x0B, 0xBB, 0x81, 0x14, 0x3C, 0x1C, 0x5D, 0x01, 0x24, 0xDF, 0x84, 0x2C, 0xDF, 0x24, 0x9F, 0x24, 0x7E, 0x1C, 0x1D, 0x13, 0xDC, 0x02, 0x13, 0xFC, 0x80, 0x13, 0xDC, 0x01, 0x13, 0xBC, 0x81, 0x1B, 0xFD, 0x24, 0x3E, 0x02, 0x1B, 0xFD, 0x80, 0x1C, 0x1D, 0x01, 0x1B, 0xFD, 0x80, 0x1C, 0x1D, 0x01, 0x14, 0x1D, 0x01, 0x13, 0xFD, 0x82, 0x1C, 0x1D, 0x13, 0xFD, 0x13, 0xDD, 0x01, 0x13, 0xFD, 0x81, 0x1B, 0xFD, 0x1C, 0x1D, 0x02, 0x13, 0xFD, 0x81, 0x1C, 0x1D, 0x13, 0xDD, 0x01, 0x13, 0xFD, 0x81, 0x13, 0xDD, 0x13, 0xFD, 0x01, 0x13, 0xDD, 0x81, 0x1B, 0xFD, 0x13, 0xDD, 0x01, 0x1B, 0xDD, 0x80, 0x13, 0xDD, 0x02, 0x1B, 0xFD, 0x01, 0x24, 0x3E, 0x85, 0x1C, 0x1E, 0x1C, 0x3E, 0x1C, 0x3D, 0x13, 0xFD, 0x14, 0x1D, 0x13, 0xDC, 0x01, 0x0B, 0x9B, 0x88, 0x03, 0x9A, 0x03, 0x7A, 0x0B, 0xFC, 0x24, 0xBE, 0x2D, 0x3F, 0x2C, 0xFF, 0x2C, 0xDF, 0x24, 0x7E, 0x14, 0x1D, 0x02, 0x13, 0xFC, 0x80, 0x13, 0xDC, 0x02, 0x13, 0xFD, 0x80, 0x1C, 0x1D, 0x01, 0x14, 0x1D, 0x81, 0x1C, 0x1E, 0x1C, 0x3E, 0x01, 0x1C, + 0x1E, 0x81, 0x14, 0x1D, 0x14, 0x1E, 0x01, 0x13, 0xFD, 0x80, 0x14, 0x1E, 0x03, 0x13, 0xFD, 0x83, 0x14, 0x1D, 0x13, 0xFD, 0x13, 0xDD, 0x13, 0xFD, 0x01, 0x1C, 0x1D, 0x81, 0x13, 0xFD, 0x1B, 0xFD, 0x01, 0x1C, 0x1D, 0x01, 0x1C, 0x1E, 0x81, 0x1B, 0xFD, 0x1C, 0x1D, 0x01, 0x13, 0xFD, 0x01, 0x14, 0x1D, 0x80, 0x13, 0xFD, 0x01, 0x14, 0x1D, 0x80, 0x13, 0xFC, 0x01, 0x1C, 0x3D, 0x81, 0x14, 0x1D, 0x1C, 0x3E, 0x04, 0x1C, 0x1D, 0x8E, 0x13, 0xFD, 0x13, 0xFC, 0x14, 0x1C, 0x0C, 0x1C, 0x03, 0xDB, 0x14, 0x5D, 0x1C, 0xBE, 0x24, 0xFF, 0x24, 0xBE, 0x1C, 0x7E, 0x14, 0x3D, 0x14, 0x1D, 0x13, 0xFC, 0x0B, 0xDC, 0x13, 0xFC, 0x01, 0x13, 0xFD, 0x80, 0x1C, 0x3E, 0x01, 0x1C, 0x1D, 0x84, 0x1C, 0x1E, 0x1C, 0x3E, 0x1C, 0x1E, 0x1C, 0x3E, 0x1C, 0x1D, 0x02, 0x1C, 0x1E, 0x01, 0x1C, 0x1D, 0x85, 0x14, 0x1D, 0x1C, 0x1E, 0x13, 0xFD, 0x14, 0x1D, 0x13, 0xFD, 0x1C, 0x1E, 0x02, 0x13, 0xFD, 0x81, 0x1B, 0xFE, 0x1B, 0xFD, 0x03, 0x13, 0xFD, 0x01, 0x1C, 0x1E, 0x84, 0x13, 0xFD, 0x1B, 0xFD, 0x1C, 0x1E, 0x1B, 0xFD, 0x13, 0xDD, 0x01, 0x1B, 0xFD, 0x80, 0x13, 0xDC, 0x01, 0x13, 0xDD, 0x01, 0x1B, 0xFD, 0x81, 0x13, 0xDD, 0x1C, 0x1E, 0x01, 0x1C, 0x3E, 0x80, 0x24, 0x5E, 0x01, 0x1C, 0x3D, 0x85, 0x14, 0x1C, 0x14, 0x1D, 0x14, 0x1C, 0x14, 0x3D, 0x03, 0xFB, 0x1C, 0x9E, 0x01, 0x24, 0xFF, 0x86, 0x14, 0x7E, 0x14, 0x3D, 0x1C, 0x5D, 0x14, 0x3D, 0x1C, 0x3D, 0x14, 0x1D, 0x13, 0xFC, 0x01, 0x1C, 0x3D, 0x01, 0x1C, 0x3E, 0x80, 0x1C, 0x5E, 0x03, 0x1C, 0x3E, 0x80, 0x1C, 0x1E, 0x01, 0x14, 0x1E, 0x81, + 0x13, 0xFE, 0x1B, 0xFE, 0x01, 0x1C, 0x1E, 0x81, 0x13, 0xFD, 0x1B, 0xFE, 0x01, 0x1C, 0x1E, 0x01, 0x13, 0xFD, 0x80, 0x1C, 0x1E, 0x01, 0x1C, 0x1D, 0x83, 0x1C, 0x1E, 0x13, 0xFD, 0x14, 0x1D, 0x1C, 0x1E, 0x02, 0x13, 0xFD, 0x82, 0x1C, 0x1D, 0x1B, 0xFD, 0x1C, 0x1E, 0x01, 0x14, 0x1D, 0x84, 0x1C, 0x1D, 0x13, 0xFD, 0x14, 0x1D, 0x1C, 0x1E, 0x14, 0x1D, 0x01, 0x1C, 0x1D, 0x95, 0x1C, 0x1E, 0x1C, 0x1D, 0x1B, 0xFD, 0x1C, 0x1E, 0x24, 0x5E, 0x24, 0x3E, 0x24, 0x1E, 0x1B, 0xFD, 0x1C, 0x1D, 0x1C, 0x3E, 0x1C, 0x5E, 0x0B, 0xFC, 0x1C, 0x9E, 0x2D, 0x1F, 0x1C, 0x9E, 0x24, 0x9E, 0x14, 0x3D, 0x13, 0xFC, 0x14, 0x1D, 0x1C, 0x1D, 0x1C, 0x3E, 0x1C, 0x3D, 0x03, 0x24, 0x5E, 0x81, 0x24, 0x3E, 0x1C, 0x1E, 0x01, 0x24, 0x3E, 0x02, 0x1C, 0x1E, 0x86, 0x1B, 0xFD, 0x1C, 0x1D, 0x13, 0xFD, 0x1C, 0x3E, 0x1C, 0x1E, 0x1B, 0xFD, 0x1C, 0x1D, 0x01, 0x1C, 0x1E, 0x02, 0x1C, 0x1D, 0x80, 0x1C, 0x1E, 0x03, 0x1C, 0x1D, 0x85, 0x1C, 0x1E, 0x1C, 0x3E, 0x1C, 0x1D, 0x1C, 0x1E, 0x1C, 0x3E, 0x1C, 0x1D, 0x02, 0x1C, 0x1E, 0x03, 0x1C, 0x1D, 0x80, 0x13, 0xFD, 0x01, 0x1C, 0x3E, 0x81, 0x24, 0x3E, 0x1C, 0x3E, 0x01, 0x1C, 0x1D, 0x84, 0x1C, 0x3E, 0x1C, 0x3D, 0x1C, 0x5E, 0x1C, 0x1D, 0x1C, 0x3D, 0x01, 0x14, 0x3D, 0x81, 0x14, 0x3C, 0x2D, 0x1F, 0x03, 0x14, 0x3D, 0x07, 0x1C, 0x3E, 0x81, 0x1C, 0x1E, 0x1C, 0x3E, 0x02, 0x1C, 0x1E, 0x83, 0x1C, 0x3E, 0x1B, 0xFD, 0x1C, 0x1E, 0x1C, 0x1D, 0x01, 0x1B, 0xFD, 0x80, 0x1C, 0x1E, 0x02, 0x1C, 0x1D, 0x01, 0x13, 0xFD, 0x06, 0x1C, 0x1D, 0x81, 0x14, 0x1D, 0x1C, + 0x3D, 0x01, 0x1C, 0x1D, 0x82, 0x14, 0x1D, 0x1C, 0x3D, 0x1C, 0x1D, 0x01, 0x13, 0xFD, 0x83, 0x1C, 0x1D, 0x14, 0x1D, 0x1C, 0x3D, 0x1C, 0x1D, 0x01, 0x14, 0x1D, 0x81, 0x1C, 0x1D, 0x13, 0xFD, 0x01, 0x1C, 0x3E, 0x01, 0x13, 0xFD, 0x81, 0x1C, 0x3E, 0x1C, 0x1D, 0x01, 0x1C, 0x3E, 0x88, 0x1C, 0x1D, 0x13, 0xFD, 0x13, 0xFC, 0x2D, 0x1F, 0x24, 0xBF, 0x0B, 0xFC, 0x1C, 0x3E, 0x14, 0x1E, 0x14, 0x3E, 0x01, 0x14, 0x1E, 0x01, 0x1C, 0x1E, 0x02, 0x1C, 0x3E, 0x01, 0x1C, 0x1E, 0x01, 0x1B, 0xFD, 0x01, 0x1C, 0x3E, 0x02, 0x1C, 0x1D, 0x80, 0x1C, 0x1E, 0x03, 0x1C, 0x1D, 0x80, 0x1C, 0x1E, 0x01, 0x1C, 0x1D, 0x01, 0x1C, 0x1E, 0x85, 0x1C, 0x1D, 0x1C, 0x1E, 0x1C, 0x1D, 0x1B, 0xFD, 0x1C, 0x1D, 0x1C, 0x3E, 0x01, 0x1C, 0x1D, 0x81, 0x13, 0xFD, 0x1C, 0x1D, 0x02, 0x1B, 0xFD, 0x82, 0x1C, 0x1D, 0x1C, 0x3E, 0x1C, 0x1E, 0x02, 0x1C, 0x1D, 0x02, 0x1C, 0x3E, 0x01, 0x1C, 0x1D, 0x81, 0x1C, 0x3E, 0x24, 0x3E, 0x01, 0x1C, 0x1E, 0x88, 0x1C, 0x1D, 0x1C, 0x3E, 0x13, 0xFD, 0x14, 0x1D, 0x1C, 0x3D, 0x14, 0x3D, 0x1C, 0x5D, 0x1C, 0xBE, 0x2D, 0x3F, 0x01, 0x14, 0x5D, 0x01, 0x14, 0x5E, 0x82, 0x14, 0x3D, 0x13, 0xFD, 0x1C, 0x3E, 0x01, 0x1C, 0x1E, 0x01, 0x24, 0x3F, 0x83, 0x24, 0x5F, 0x1C, 0x3E, 0x1C, 0x1E, 0x1C, 0x3E, 0x02, 0x1C, 0x1D, 0x81, 0x1C, 0x1E, 0x13, 0xFD, 0x02, 0x1B, 0xFD, 0x80, 0x13, 0xFD, 0x03, 0x1C, 0x1D, 0x01, 0x1B, 0xFD, 0x86, 0x1C, 0x1D, 0x1C, 0x1E, 0x1C, 0x1D, 0x1C, 0x1E, 0x1C, 0x3E, 0x1C, 0x1D, 0x1B, 0xFD, 0x02, 0x1C, 0x1D, 0x8D, 0x1C, 0x1E, 0x1B, 0xFD, 0x1C, 0x1E, + 0x1C, 0x3E, 0x13, 0xFD, 0x1B, 0xFD, 0x1C, 0x1E, 0x1C, 0x1D, 0x24, 0x3E, 0x1C, 0x3E, 0x13, 0xFD, 0x1C, 0x1D, 0x24, 0x5E, 0x1C, 0x3E, 0x01, 0x1C, 0x1E, 0x81, 0x1C, 0x3E, 0x14, 0x1D, 0x01, 0x1C, 0x3E, 0x81, 0x1C, 0x5E, 0x1C, 0x7E, 0x01, 0x14, 0x7E, 0x85, 0x1C, 0xBE, 0x1C, 0x9E, 0x0B, 0xFC, 0x13, 0xFC, 0x13, 0xFD, 0x13, 0xDD, 0x01, 0x1B, 0xFD, 0x87, 0x1C, 0x1D, 0x1B, 0xFD, 0x1C, 0x1E, 0x1B, 0xFD, 0x1B, 0xFE, 0x24, 0x1E, 0x24, 0x3E, 0x1B, 0xDD, 0x01, 0x1B, 0xFD, 0x84, 0x24, 0x1D, 0x1B, 0xFD, 0x1B, 0xDD, 0x1B, 0xFD, 0x24, 0x1D, 0x04, 0x23, 0xFD, 0x80, 0x2C, 0x1E, 0x01, 0x23, 0xFD, 0x84, 0x2C, 0x1E, 0x2C, 0x1D, 0x2C, 0x1E, 0x34, 0x3E, 0x2C, 0x1E, 0x01, 0x34, 0x3E, 0x85, 0x34, 0x1D, 0x34, 0x1E, 0x3C, 0x3E, 0x34, 0x3E, 0x3C, 0x3E, 0x3C, 0x5E, 0x01, 0x3C, 0x1E, 0x85, 0x44, 0x3E, 0x3B, 0xFE, 0x44, 0x3F, 0x4C, 0x5F, 0x4C, 0x3F, 0x4C, 0x5F, 0x01, 0x54, 0x5F, 0x8A, 0x64, 0x7F, 0x64, 0x3E, 0x74, 0x3E, 0x7B, 0xDD, 0x72, 0xF9, 0x82, 0x97, 0x92, 0x56, 0x9A, 0x14, 0xA1, 0xF4, 0xA1, 0xD3, 0xB2, 0x14, 0x01, 0xA9, 0xD3, 0x01, 0xA9, 0xB3, 0x80, 0xB2, 0x14, 0x01, 0xA9, 0xF3, 0x84, 0xA1, 0xF3, 0xA1, 0xD3, 0xA1, 0xF3, 0xA2, 0x14, 0xAA, 0x34, 0x01, 0xA1, 0xF3, 0x82, 0xAA, 0x13, 0xA9, 0xF3, 0xA9, 0xD3, 0x03, 0xA9, 0xF3, 0x8B, 0xA1, 0xF3, 0xA1, 0xD3, 0xA2, 0x14, 0x9A, 0x35, 0x8A, 0x35, 0x8A, 0xD8, 0x7B, 0x19, 0x8C, 0x7F, 0x74, 0xBF, 0x54, 0x7F, 0x3C, 0x3E, 0x2C, 0x1E, 0x01, 0x2C, 0x3E, 0x80, 0x2C, 0x5E, 0x01, 0x24, 0x3E, 0x01, 0x1C, 0x1E, 0x82, + 0x1B, 0xFE, 0x24, 0x1E, 0x1B, 0xFD, 0x01, 0x1C, 0x1E, 0x85, 0x24, 0x3E, 0x1C, 0x3E, 0x1C, 0x1E, 0x1C, 0x1D, 0x1C, 0x1E, 0x1B, 0xFD, 0x01, 0x1C, 0x1D, 0x81, 0x1C, 0x3E, 0x1C, 0x1E, 0x01, 0x13, 0xFD, 0x01, 0x14, 0x1D, 0x01, 0x1C, 0x3D, 0x81, 0x14, 0x3D, 0x14, 0x1C, 0x01, 0x14, 0x5D, 0x83, 0x24, 0xBF, 0x24, 0xFF, 0x14, 0x7E, 0x0C, 0x3C, 0x01, 0x0B, 0xFC, 0x82, 0x13, 0xFC, 0x13, 0xDC, 0x0B, 0xBC, 0x02, 0x13, 0xDC, 0x01, 0x1B, 0xFD, 0x82, 0x13, 0xFD, 0x1B, 0xFD, 0x1C, 0x1D, 0x02, 0x1B, 0xFD, 0x80, 0x13, 0xDD, 0x01, 0x1B, 0xFD, 0x80, 0x1C, 0x1E, 0x02, 0x1B, 0xFD, 0x80, 0x1B, 0xDD, 0x04, 0x1B, 0xFD, 0x80, 0x1B, 0xDD, 0x03, 0x1B, 0xFD, 0x83, 0x13, 0xFD, 0x1B, 0xFD, 0x1C, 0x1E, 0x1C, 0x1D, 0x01, 0x1B, 0xFD, 0x82, 0x1C, 0x1D, 0x1B, 0xFD, 0x1C, 0x1E, 0x02, 0x13, 0xFD, 0x81, 0x1C, 0x3E, 0x1C, 0x1E, 0x02, 0x13, 0xFD, 0x81, 0x13, 0xDD, 0x13, 0xFD, 0x01, 0x13, 0xFC, 0x81, 0x14, 0x1D, 0x13, 0xFC, 0x01, 0x0B, 0xDC, 0x82, 0x03, 0xBB, 0x14, 0x3D, 0x1C, 0x7E, 0x01, 0x1C, 0x9E, 0x88, 0x14, 0x5D, 0x0B, 0xFC, 0x0B, 0xBB, 0x0B, 0xBC, 0x0B, 0x9B, 0x0B, 0x9C, 0x0B, 0x9B, 0x13, 0xBC, 0x13, 0xDC, 0x01, 0x13, 0xBC, 0x82, 0x13, 0xDC, 0x13, 0xDD, 0x13, 0xFD, 0x02, 0x13, 0xDD, 0x81, 0x13, 0xDC, 0x13, 0xDD, 0x01, 0x13, 0xFD, 0x86, 0x14, 0x1D, 0x1C, 0x1E, 0x13, 0xDD, 0x13, 0xDC, 0x13, 0xFD, 0x14, 0x1D, 0x13, 0xFD, 0x01, 0x13, 0xDD, 0x87, 0x13, 0xFD, 0x13, 0xDD, 0x1B, 0xFE, 0x13, 0xFD, 0x1B, 0xFD, 0x1B, 0xDD, 0x13, 0xBD, 0x13, 0xDD, 0x01, 0x1B, 0xDD, + 0x01, 0x1B, 0xFD, 0x80, 0x1C, 0x1D, 0x01, 0x1B, 0xFD, 0x83, 0x13, 0xDC, 0x13, 0xFD, 0x13, 0xDD, 0x1B, 0xFD, 0x01, 0x13, 0xDC, 0x01, 0x13, 0xFD, 0x02, 0x1C, 0x1D, 0x85, 0x13, 0xFD, 0x13, 0xDC, 0x0B, 0xDC, 0x0B, 0xBC, 0x14, 0x1D, 0x1C, 0x5E, 0x01, 0x24, 0x9F, 0x88, 0x1C, 0x7E, 0x14, 0x5D, 0x0C, 0x1C, 0x0B, 0xDB, 0x03, 0xBB, 0x0B, 0xBB, 0x0B, 0x9B, 0x0B, 0x7B, 0x0B, 0x5B, 0x01, 0x13, 0x9B, 0x80, 0x13, 0x9C, 0x01, 0x13, 0xBC, 0x01, 0x13, 0xDC, 0x80, 0x13, 0xDD, 0x02, 0x13, 0xDC, 0x80, 0x1B, 0xFD, 0x01, 0x13, 0xBC, 0x01, 0x13, 0xDC, 0x81, 0x1B, 0xFD, 0x1B, 0xDD, 0x01, 0x13, 0xDD, 0x80, 0x13, 0xBC, 0x03, 0x13, 0xDD, 0x81, 0x1B, 0xDD, 0x13, 0xBD, 0x01, 0x1B, 0xDD, 0x80, 0x13, 0xBC, 0x04, 0x1B, 0xDD, 0x81, 0x1B, 0xFD, 0x13, 0xDC, 0x01, 0x1B, 0xFD, 0x82, 0x1C, 0x1D, 0x13, 0xFC, 0x1B, 0xFD, 0x01, 0x13, 0xBC, 0x02, 0x13, 0xDC, 0x80, 0x13, 0xFC, 0x04, 0x0B, 0xBB, 0x81, 0x14, 0x1D, 0x24, 0x5E, 0x01, 0x2C, 0xBF, 0x84, 0x24, 0x9E, 0x1C, 0x5D, 0x0B, 0xFB, 0x03, 0x9A, 0x03, 0x7A, 0x01, 0x03, 0x5A, 0x01, 0x0B, 0x7A, 0x80, 0x03, 0x5B, 0x01, 0x0B, 0x7B, 0x02, 0x13, 0x9C, 0x81, 0x13, 0xBC, 0x1B, 0xBC, 0x04, 0x13, 0x9C, 0x02, 0x13, 0xBC, 0x80, 0x13, 0x7C, 0x01, 0x13, 0x9C, 0x01, 0x13, 0xBC, 0x81, 0x1B, 0xDD, 0x13, 0xBC, 0x01, 0x0B, 0x9C, 0x02, 0x13, 0xBC, 0x87, 0x0B, 0x9C, 0x0B, 0x7C, 0x0B, 0x3A, 0x02, 0xF9, 0x02, 0xB8, 0x02, 0x98, 0x02, 0x78, 0x02, 0x98, 0x06, 0x02, 0xB8, 0x03, 0x02, 0xD9, 0x82, 0x02, 0xF9, 0x02, 0xD9, 0x02, 0xB9, 0x02, + 0x02, 0xD9, 0x82, 0x0A, 0xFA, 0x02, 0xD9, 0x02, 0xF9, 0x01, 0x02, 0xFA, 0x82, 0x02, 0xF9, 0x0B, 0x1A, 0x02, 0xFA, 0x01, 0x02, 0xD9, 0x01, 0x0A, 0xDA, 0x01, 0x0A, 0xFB, 0x81, 0x0A, 0xFA, 0x0B, 0x1B, 0x01, 0x0B, 0x3B, 0x82, 0x0B, 0x1A, 0x0B, 0x3B, 0x0B, 0x1B, 0x04, 0x0B, 0x1A, 0x81, 0x0B, 0x3A, 0x0B, 0x1A, 0x01, 0x0B, 0x3A, 0x82, 0x03, 0x1A, 0x02, 0xF9, 0x02, 0xD9, 0x01, 0x02, 0xF9, 0x80, 0x03, 0x19, 0x02, 0x03, 0x3A, 0x88, 0x03, 0x1A, 0x13, 0xDC, 0x34, 0xBF, 0x34, 0xDF, 0x24, 0x3E, 0x1B, 0xDC, 0x0B, 0x3A, 0x02, 0xF9, 0x02, 0xB8, 0x01, 0x02, 0x98, 0x02, 0x02, 0xB9, 0x01, 0x02, 0xD9, 0x80, 0x02, 0xB9, 0x02, 0x02, 0xD9, 0x80, 0x02, 0xF9, 0x01, 0x02, 0xFA, 0x82, 0x02, 0xD9, 0x0A, 0xFA, 0x0B, 0x1A, 0x01, 0x02, 0xFA, 0x02, 0x0B, 0x1A, 0x83, 0x0B, 0x3B, 0x0B, 0x1A, 0x0B, 0x1B, 0x0B, 0x1A, 0x01, 0x0B, 0x1B, 0x01, 0x0B, 0x3B, 0x80, 0x0B, 0x1B, 0x02, 0x0B, 0x3B, 0x80, 0x0B, 0x1B, 0x02, 0x0B, 0x3B, 0x80, 0x0B, 0x1B, 0x01, 0x0B, 0x3B, 0x01, 0x0B, 0x1B, 0x80, 0x13, 0x3B, 0x03, 0x0B, 0x3B, 0x81, 0x0B, 0x1A, 0x0B, 0x3A, 0x01, 0x02, 0xF9, 0x81, 0x03, 0x19, 0x02, 0xF9, 0x01, 0x03, 0x39, 0x88, 0x03, 0x9B, 0x1C, 0x3D, 0x24, 0x9E, 0x34, 0xDF, 0x2C, 0xDF, 0x24, 0x7E, 0x13, 0xDC, 0x03, 0x19, 0x02, 0xD9, 0x01, 0x02, 0xB8, 0x02, 0x02, 0xD8, 0x84, 0x02, 0xD9, 0x02, 0xB9, 0x02, 0xD9, 0x02, 0xB9, 0x02, 0xD9, 0x01, 0x02, 0xFA, 0x83, 0x02, 0xF9, 0x02, 0xFA, 0x03, 0x1A, 0x0B, 0x3B, 0x01, 0x03, 0x3A, 0x01, 0x03, 0x3B, 0x80, 0x0B, 0x5B, 0x01, 0x0B, + 0x3B, 0x86, 0x13, 0x5B, 0x0B, 0x5B, 0x0B, 0x7B, 0x13, 0x5B, 0x0B, 0x3B, 0x0B, 0x5B, 0x0B, 0x7B, 0x03, 0x0B, 0x5B, 0x80, 0x0B, 0x3B, 0x01, 0x0B, 0x5B, 0x81, 0x0B, 0x3B, 0x0B, 0x5B, 0x03, 0x0B, 0x3B, 0x01, 0x13, 0x5B, 0x82, 0x0B, 0x3B, 0x13, 0x5B, 0x0B, 0x3B, 0x01, 0x0B, 0x5B, 0x80, 0x13, 0x7B, 0x01, 0x0B, 0x5A, 0x81, 0x03, 0x5A, 0x03, 0x19, 0x01, 0x03, 0x39, 0x8A, 0x03, 0x7A, 0x24, 0x9F, 0x35, 0x1F, 0x35, 0x3F, 0x24, 0x9E, 0x13, 0xDC, 0x03, 0x5A, 0x03, 0x19, 0x02, 0xD9, 0x02, 0xF9, 0x02, 0xD9, 0x02, 0x02, 0xF9, 0x85, 0x03, 0x1A, 0x02, 0xFA, 0x03, 0x1A, 0x03, 0x3A, 0x03, 0x3B, 0x03, 0x1A, 0x03, 0x03, 0x3B, 0x81, 0x0B, 0x3B, 0x03, 0x3B, 0x0A, 0x0B, 0x5B, 0x01, 0x13, 0x5B, 0x01, 0x0B, 0x5B, 0x84, 0x13, 0x7C, 0x0B, 0x5B, 0x13, 0x7C, 0x0B, 0x5C, 0x13, 0x7C, 0x01, 0x0B, 0x7C, 0x01, 0x0B, 0x5B, 0x80, 0x0B, 0x7C, 0x01, 0x13, 0x9C, 0x85, 0x0B, 0x7C, 0x13, 0x9C, 0x0B, 0x7B, 0x0B, 0x9C, 0x13, 0x9C, 0x0B, 0x7B, 0x01, 0x0B, 0x5B, 0x80, 0x0B, 0x3A, 0x01, 0x03, 0x3A, 0x01, 0x03, 0x5A, 0x81, 0x03, 0x7A, 0x1C, 0x7E, 0x01, 0x2C, 0xFF, 0x82, 0x1C, 0x3D, 0x03, 0x7A, 0x03, 0x19, 0x04, 0x02, 0xF9, 0x03, 0x03, 0x1A, 0x86, 0x0B, 0x3B, 0x03, 0x3B, 0x0B, 0x3B, 0x0B, 0x5B, 0x0B, 0x3B, 0x0B, 0x5B, 0x0B, 0x7C, 0x03, 0x0B, 0x5B, 0x80, 0x0B, 0x5C, 0x01, 0x0B, 0x7C, 0x85, 0x0B, 0x5B, 0x0B, 0x7C, 0x13, 0x7C, 0x0B, 0x7C, 0x0B, 0x5B, 0x0B, 0x5C, 0x02, 0x0B, 0x5B, 0x81, 0x0B, 0x5C, 0x0B, 0x3B, 0x01, 0x0B, 0x5B, 0x80, 0x0B, 0x3B, 0x01, 0x0B, 0x5B, 0x01, + 0x0B, 0x3B, 0x82, 0x0B, 0x5B, 0x0B, 0x3B, 0x0B, 0x5B, 0x01, 0x0B, 0x3B, 0x81, 0x02, 0xFA, 0x0B, 0x3B, 0x01, 0x0B, 0x5B, 0x81, 0x0B, 0x7B, 0x0B, 0x3B, 0x01, 0x0B, 0x5B, 0x01, 0x0B, 0x5A, 0x87, 0x03, 0x5A, 0x03, 0x39, 0x03, 0x5A, 0x03, 0x7A, 0x1C, 0x7E, 0x2C, 0xFF, 0x24, 0xBF, 0x0B, 0xBB, 0x01, 0x03, 0x39, 0x82, 0x03, 0x19, 0x03, 0x3A, 0x03, 0x19, 0x01, 0x03, 0x1A, 0x81, 0x03, 0x3A, 0x03, 0x1A, 0x01, 0x0B, 0x5B, 0x80, 0x03, 0x3B, 0x01, 0x0B, 0x5B, 0x83, 0x03, 0x5B, 0x0B, 0x5B, 0x0B, 0x5C, 0x0B, 0x5B, 0x03, 0x0B, 0x5C, 0x80, 0x0B, 0x7C, 0x02, 0x0B, 0x5C, 0x80, 0x0B, 0x7C, 0x02, 0x0B, 0x5C, 0x84, 0x0B, 0x7C, 0x0B, 0x5C, 0x0B, 0x7C, 0x0B, 0x5B, 0x0B, 0x5C, 0x04, 0x0B, 0x5B, 0x81, 0x0B, 0x7C, 0x0B, 0x5B, 0x03, 0x0B, 0x5C, 0x81, 0x0B, 0x7C, 0x0B, 0x5B, 0x01, 0x0B, 0x7C, 0x81, 0x0B, 0x7B, 0x13, 0x7C, 0x02, 0x0B, 0x5B, 0x01, 0x0B, 0x3B, 0x80, 0x0B, 0x1A, 0x01, 0x03, 0x1A, 0x87, 0x03, 0x3A, 0x03, 0x5A, 0x0B, 0xFC, 0x34, 0xFF, 0x1C, 0x3D, 0x03, 0x7B, 0x03, 0x3A, 0x03, 0x1A, 0x01, 0x02, 0xF9, 0x80, 0x02, 0xFA, 0x02, 0x03, 0x1A, 0x81, 0x03, 0x3A, 0x0B, 0x5B, 0x01, 0x0B, 0x3B, 0x02, 0x0B, 0x5B, 0x80, 0x0B, 0x5C, 0x02, 0x0B, 0x5B, 0x84, 0x0B, 0x7B, 0x0B, 0x5B, 0x0B, 0x7B, 0x13, 0x7C, 0x0B, 0x5B, 0x01, 0x0B, 0x7C, 0x87, 0x13, 0x7C, 0x0B, 0x5B, 0x0B, 0x7C, 0x0B, 0x7B, 0x0B, 0x7C, 0x0B, 0x5B, 0x0B, 0x7B, 0x0B, 0x5B, 0x02, 0x0B, 0x7C, 0x80, 0x0B, 0x7B, 0x05, 0x0B, 0x7C, 0x82, 0x0B, 0x7B, 0x0B, 0x5B, 0x0B, 0x7C, 0x02, 0x0B, 0x7B, 0x82, + 0x13, 0x7C, 0x0B, 0x5B, 0x13, 0x7C, 0x01, 0x13, 0x9C, 0x04, 0x0B, 0x7B, 0x83, 0x03, 0x7B, 0x03, 0x5A, 0x14, 0x1C, 0x2C, 0xFF, 0x01, 0x03, 0x5A, 0x02, 0x03, 0x3B, 0x01, 0x03, 0x5B, 0x02, 0x0B, 0x5B, 0x82, 0x0B, 0x7C, 0x0B, 0x5C, 0x0B, 0x5B, 0x01, 0x0B, 0x7C, 0x01, 0x0B, 0x5C, 0x81, 0x0B, 0x5B, 0x0B, 0x5C, 0x04, 0x0B, 0x5B, 0x81, 0x0B, 0x7B, 0x0B, 0x5B, 0x04, 0x0B, 0x7C, 0x84, 0x0B, 0x5B, 0x13, 0x7C, 0x0B, 0x7B, 0x13, 0x7C, 0x0B, 0x5B, 0x01, 0x0B, 0x7B, 0x80, 0x13, 0x7B, 0x01, 0x0B, 0x7B, 0x81, 0x0B, 0x5B, 0x0B, 0x7B, 0x02, 0x0B, 0x5B, 0x80, 0x0B, 0x7B, 0x06, 0x0B, 0x5B, 0x8F, 0x0B, 0x3B, 0x03, 0x3B, 0x0B, 0x3B, 0x03, 0x3B, 0x0B, 0x3B, 0x0B, 0x5B, 0x03, 0x3A, 0x0B, 0x5B, 0x03, 0x1A, 0x02, 0xF9, 0x2C, 0xBF, 0x24, 0xBF, 0x03, 0x19, 0x03, 0x5B, 0x03, 0x3B, 0x03, 0x5B, 0x04, 0x0B, 0x5B, 0x80, 0x0B, 0x3B, 0x01, 0x0B, 0x5B, 0x80, 0x0B, 0x3B, 0x04, 0x0B, 0x5B, 0x82, 0x0B, 0x7B, 0x0B, 0x5B, 0x13, 0x7C, 0x02, 0x0B, 0x5B, 0x01, 0x0B, 0x7B, 0x01, 0x0B, 0x5B, 0x01, 0x0B, 0x5C, 0x81, 0x0B, 0x7B, 0x0B, 0x5B, 0x01, 0x0B, 0x7B, 0x82, 0x0B, 0x7C, 0x0B, 0x5B, 0x0B, 0x7C, 0x05, 0x0B, 0x5B, 0x81, 0x0B, 0x7B, 0x0B, 0x7C, 0x08, 0x0B, 0x5B, 0x83, 0x03, 0x3B, 0x0B, 0x3B, 0x0B, 0x5B, 0x0B, 0x3B, 0x03, 0x03, 0x3A, 0x8A, 0x03, 0x1A, 0x03, 0x3A, 0x03, 0x7A, 0x0B, 0xDB, 0x2C, 0xFF, 0x0C, 0x1C, 0x03, 0x7A, 0x03, 0x7B, 0x03, 0x5A, 0x0B, 0x9B, 0x0B, 0x5B, 0x04, 0x0B, 0x3B, 0x02, 0x0B, 0x5B, 0x80, 0x0B, 0x5C, 0x05, 0x0B, 0x5B, 0x80, 0x0B, 0x3B, 0x01, + 0x0B, 0x5B, 0x80, 0x0B, 0x3B, 0x02, 0x0B, 0x5B, 0x80, 0x0B, 0x3B, 0x05, 0x0B, 0x5B, 0x81, 0x0B, 0x7B, 0x13, 0x7B, 0x01, 0x0B, 0x7B, 0x08, 0x0B, 0x5B, 0x84, 0x0B, 0x7C, 0x0B, 0x5B, 0x0B, 0x3B, 0x0B, 0x5B, 0x0B, 0x3B, 0x01, 0x0B, 0x5B, 0x82, 0x03, 0x3B, 0x03, 0x1A, 0x0B, 0x3B, 0x02, 0x03, 0x3A, 0x8C, 0x03, 0x5B, 0x0B, 0x9B, 0x0B, 0xBC, 0x1C, 0x5E, 0x2C, 0xDF, 0x14, 0x1D, 0x03, 0x5A, 0x03, 0x3A, 0x03, 0x1A, 0x03, 0x3A, 0x0B, 0x5B, 0x0B, 0x3B, 0x0B, 0x5B, 0x01, 0x0B, 0x3B, 0x80, 0x13, 0x5B, 0x02, 0x0B, 0x5B, 0x83, 0x13, 0x5B, 0x0B, 0x3B, 0x13, 0x7B, 0x0B, 0x5B, 0x02, 0x0B, 0x3B, 0x03, 0x13, 0x3B, 0x80, 0x13, 0x5B, 0x01, 0x13, 0x3B, 0x01, 0x13, 0x5B, 0x02, 0x1B, 0x5B, 0x82, 0x1B, 0x7B, 0x1B, 0x5B, 0x1B, 0x7B, 0x02, 0x23, 0x7C, 0x80, 0x2B, 0x9C, 0x01, 0x23, 0x7C, 0x81, 0x2B, 0x9C, 0x2B, 0x7C, 0x01, 0x2B, 0x5C, 0x81, 0x2B, 0x7C, 0x2B, 0x5B, 0x01, 0x33, 0x7C, 0x8E, 0x33, 0x7B, 0x3B, 0x9C, 0x3B, 0x7C, 0x4B, 0x9C, 0x53, 0x7C, 0x63, 0x5B, 0x6B, 0x1A, 0x7A, 0x97, 0x92, 0x97, 0x92, 0x35, 0x99, 0xF4, 0xAA, 0x14, 0xA9, 0xF3, 0xB1, 0xF4, 0xA9, 0xB3, 0x01, 0xB1, 0xF3, 0x83, 0xA9, 0xF3, 0xB1, 0xF3, 0xA9, 0xF3, 0xA1, 0xD3, 0x02, 0xA9, 0xF3, 0x01, 0xA1, 0xF3, 0x82, 0xA9, 0xF3, 0xA1, 0xD3, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x83, 0xA9, 0xF3, 0xA9, 0xD3, 0xAA, 0x14, 0xA1, 0xD3, 0x01, 0xA2, 0x14, 0x88, 0x9A, 0x35, 0x92, 0x35, 0x8A, 0x97, 0x7A, 0xD8, 0x39, 0x73, 0x42, 0xB8, 0x2A, 0xB8, 0x1A, 0xFA, 0x13, 0x1A, 0x03, 0x13, 0x5B, 0x80, 0x0B, 0x5B, + 0x07, 0x0B, 0x3B, 0x83, 0x0B, 0x5B, 0x0B, 0x3B, 0x0B, 0x5B, 0x03, 0x1B, 0x04, 0x0B, 0x3B, 0x81, 0x03, 0x3A, 0x0B, 0x5B, 0x01, 0x03, 0x1A, 0x80, 0x03, 0x19, 0x01, 0x02, 0xF9, 0x80, 0x03, 0x1A, 0x01, 0x03, 0x3A, 0x88, 0x0B, 0x9B, 0x1C, 0x5E, 0x2C, 0xFF, 0x2C, 0xDF, 0x14, 0x1C, 0x03, 0x7A, 0x03, 0x5A, 0x03, 0x3A, 0x03, 0x1A, 0x01, 0x03, 0x19, 0x01, 0x03, 0x1A, 0x80, 0x0B, 0x3A, 0x01, 0x0B, 0x3B, 0x83, 0x0B, 0x3A, 0x0B, 0x5B, 0x0B, 0x3B, 0x0B, 0x1A, 0x02, 0x0B, 0x3B, 0x81, 0x13, 0x5C, 0x0B, 0x3B, 0x01, 0x13, 0x5B, 0x80, 0x0B, 0x3B, 0x01, 0x0B, 0x5B, 0x03, 0x0B, 0x3B, 0x80, 0x13, 0x5B, 0x01, 0x0B, 0x3B, 0x02, 0x0B, 0x5B, 0x82, 0x0B, 0x3B, 0x13, 0x7B, 0x0B, 0x5B, 0x01, 0x0B, 0x3A, 0x04, 0x0B, 0x3B, 0x80, 0x0B, 0x3A, 0x02, 0x0B, 0x3B, 0x01, 0x03, 0x3A, 0x80, 0x02, 0xFA, 0x02, 0x02, 0xF9, 0x01, 0x03, 0x1A, 0x02, 0x03, 0x3A, 0x82, 0x03, 0x5A, 0x0B, 0xBB, 0x1C, 0x3D, 0x01, 0x2C, 0xBF, 0x83, 0x1C, 0x1D, 0x0B, 0x9B, 0x03, 0x3A, 0x03, 0x19, 0x02, 0x02, 0xF9, 0x02, 0x03, 0x1A, 0x82, 0x0B, 0x3A, 0x0B, 0x3B, 0x0B, 0x3A, 0x01, 0x0B, 0x3B, 0x81, 0x03, 0x1A, 0x0B, 0x3B, 0x02, 0x0B, 0x5B, 0x01, 0x0B, 0x3B, 0x80, 0x0B, 0x5B, 0x08, 0x0B, 0x3B, 0x80, 0x0B, 0x1A, 0x01, 0x0B, 0x1B, 0x03, 0x0A, 0xFA, 0x01, 0x0B, 0x1A, 0x81, 0x03, 0x1A, 0x02, 0xFA, 0x01, 0x03, 0x1A, 0x01, 0x02, 0xFA, 0x81, 0x03, 0x1A, 0x02, 0xFA, 0x02, 0x02, 0xF9, 0x01, 0x02, 0xD9, 0x82, 0x02, 0xF9, 0x02, 0xD9, 0x02, 0xF9, 0x01, 0x02, 0xFA, 0x83, 0x03, 0x1A, 0x03, 0x3A, 0x13, + 0xBC, 0x24, 0x3E, 0x01, 0x2C, 0xDF, 0x85, 0x24, 0x9E, 0x13, 0xFC, 0x0B, 0x9B, 0x03, 0x19, 0x02, 0xF9, 0x02, 0xD9, 0x01, 0x02, 0xD8, 0x80, 0x02, 0xD9, 0x01, 0x02, 0xF9, 0x80, 0x03, 0x19, 0x01, 0x0B, 0x1A, 0x02, 0x0B, 0x3A, 0x81, 0x0B, 0x3B, 0x0B, 0x3A, 0x02, 0x0B, 0x1A, 0x81, 0x13, 0x5B, 0x13, 0x3B, 0x01, 0x0B, 0x1A, 0x84, 0x02, 0xFA, 0x0B, 0x3B, 0x0B, 0x1A, 0x0B, 0x1B, 0x0B, 0x1A, 0x01, 0x02, 0xFA, 0x83, 0x0B, 0x1A, 0x02, 0xDA, 0x02, 0xFA, 0x0A, 0xFA, 0x01, 0x02, 0xD9, 0x81, 0x0A, 0xFA, 0x02, 0xD9, 0x01, 0x02, 0xFA, 0x84, 0x03, 0x1A, 0x02, 0xFA, 0x0B, 0x1A, 0x03, 0x1A, 0x02, 0xF9, 0x01, 0x02, 0xD9, 0x01, 0x02, 0xD8, 0x05, 0x02, 0xD9, 0x80, 0x02, 0xF9, 0x01, 0x02, 0xD9, 0x88, 0x02, 0xF9, 0x0B, 0x9B, 0x1C, 0x1D, 0x34, 0xBF, 0x3D, 0x1F, 0x34, 0xDF, 0x13, 0xFC, 0x03, 0x39, 0x03, 0x19, 0x02, 0x02, 0xF9, 0x01, 0x02, 0xD9, 0x85, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xF9, 0x0B, 0x1A, 0x0A, 0xFA, 0x0B, 0x1A, 0x01, 0x0A, 0xFA, 0x80, 0x0B, 0x1A, 0x01, 0x0A, 0xFA, 0x84, 0x0B, 0x1A, 0x0A, 0xFA, 0x02, 0xDA, 0x0A, 0xFA, 0x02, 0xD9, 0x01, 0x0B, 0x1A, 0x80, 0x02, 0xDA, 0x01, 0x0B, 0x1A, 0x81, 0x02, 0xFA, 0x0A, 0xFA, 0x02, 0x02, 0xFA, 0x80, 0x02, 0xDA, 0x01, 0x02, 0x17, 0x03, 0x01, 0xF6, 0x80, 0x01, 0xD6, 0x03, 0x01, 0xF6, 0x03, 0x02, 0x17, 0x09, 0x01, 0xF7, 0x04, 0x02, 0x17, 0x82, 0x01, 0xF7, 0x02, 0x17, 0x02, 0x38, 0x02, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x81, 0x02, 0x17, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x05, 0x01, 0xF7, 0x03, 0x02, 0x17, 0x80, + 0x02, 0x16, 0x02, 0x02, 0x37, 0x8B, 0x02, 0x57, 0x02, 0x77, 0x02, 0x98, 0x02, 0xB8, 0x03, 0x19, 0x1B, 0xDC, 0x2C, 0x5E, 0x3C, 0xBF, 0x13, 0x5B, 0x02, 0x98, 0x02, 0x58, 0x02, 0x37, 0x03, 0x01, 0xF7, 0x81, 0x02, 0x17, 0x02, 0x37, 0x01, 0x02, 0x38, 0x01, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x01, 0x02, 0x18, 0x01, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x01, 0x02, 0x18, 0x03, 0x02, 0x17, 0x80, 0x02, 0x18, 0x01, 0x02, 0x38, 0x81, 0x02, 0x18, 0x01, 0xF7, 0x02, 0x02, 0x18, 0x02, 0x02, 0x38, 0x81, 0x02, 0x18, 0x01, 0xF8, 0x02, 0x01, 0xF7, 0x01, 0x02, 0x18, 0x01, 0x02, 0x38, 0x01, 0x01, 0xF7, 0x01, 0x01, 0xF6, 0x01, 0x02, 0x16, 0x80, 0x02, 0x37, 0x01, 0x02, 0x57, 0x8E, 0x02, 0x77, 0x02, 0x97, 0x02, 0xD8, 0x03, 0x3A, 0x1B, 0xFC, 0x2C, 0x7E, 0x34, 0x9F, 0x1B, 0xBC, 0x02, 0xB9, 0x02, 0x57, 0x02, 0x16, 0x02, 0x17, 0x02, 0x16, 0x02, 0x37, 0x02, 0x36, 0x01, 0x02, 0x17, 0x03, 0x02, 0x37, 0x01, 0x02, 0x17, 0x81, 0x02, 0x18, 0x02, 0x17, 0x03, 0x02, 0x18, 0x03, 0x02, 0x38, 0x02, 0x02, 0x18, 0x80, 0x02, 0x17, 0x02, 0x02, 0x38, 0x80, 0x02, 0x37, 0x02, 0x02, 0x17, 0x01, 0x02, 0x38, 0x80, 0x02, 0x18, 0x06, 0x02, 0x38, 0x01, 0x02, 0x18, 0x80, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x01, 0x02, 0x37, 0x8F, 0x02, 0x36, 0x02, 0x57, 0x02, 0x77, 0x02, 0x97, 0x02, 0xB8, 0x02, 0xD8, 0x03, 0x7B, 0x24, 0x5E, 0x24, 0x7F, 0x1B, 0xFD, 0x03, 0x3A, 0x02, 0xD9, 0x02, 0x77, 0x02, 0x57, 0x02, 0x37, 0x02, 0x17, 0x01, 0x02, 0x37, 0x80, 0x02, 0x57, + 0x02, 0x02, 0x37, 0x01, 0x02, 0x58, 0x02, 0x02, 0x38, 0x81, 0x02, 0x58, 0x02, 0x38, 0x01, 0x02, 0x58, 0x05, 0x02, 0x38, 0x80, 0x02, 0x58, 0x04, 0x02, 0x38, 0x02, 0x02, 0x18, 0x01, 0x02, 0x38, 0x04, 0x02, 0x18, 0x01, 0x02, 0x38, 0x80, 0x02, 0x18, 0x01, 0x02, 0x58, 0x02, 0x02, 0x38, 0x80, 0x02, 0x18, 0x01, 0x02, 0x58, 0x8F, 0x02, 0x38, 0x02, 0x58, 0x02, 0x38, 0x02, 0x37, 0x02, 0x57, 0x02, 0x78, 0x02, 0x98, 0x02, 0xB8, 0x03, 0x19, 0x1C, 0x1D, 0x2C, 0xBF, 0x2C, 0x7F, 0x03, 0x3A, 0x02, 0x98, 0x02, 0x57, 0x02, 0x37, 0x02, 0x02, 0x57, 0x80, 0x02, 0x58, 0x01, 0x02, 0x78, 0x01, 0x02, 0x58, 0x80, 0x02, 0x78, 0x01, 0x02, 0x58, 0x80, 0x02, 0x79, 0x02, 0x02, 0x58, 0x01, 0x02, 0x38, 0x80, 0x02, 0x58, 0x03, 0x02, 0x38, 0x01, 0x02, 0x58, 0x12, 0x02, 0x38, 0x84, 0x02, 0x58, 0x02, 0x59, 0x02, 0x58, 0x02, 0x79, 0x02, 0x59, 0x01, 0x02, 0x38, 0x80, 0x02, 0x58, 0x04, 0x02, 0x78, 0x89, 0x02, 0x98, 0x02, 0xB8, 0x02, 0xF9, 0x13, 0xFD, 0x2C, 0xBF, 0x24, 0x7F, 0x03, 0x19, 0x02, 0x77, 0x02, 0x57, 0x02, 0x37, 0x01, 0x02, 0x57, 0x06, 0x02, 0x58, 0x80, 0x02, 0x78, 0x02, 0x02, 0x58, 0x80, 0x02, 0x59, 0x04, 0x02, 0x38, 0x80, 0x02, 0x39, 0x01, 0x02, 0x59, 0x05, 0x02, 0x38, 0x03, 0x02, 0x58, 0x03, 0x02, 0x38, 0x82, 0x02, 0x59, 0x02, 0x79, 0x02, 0x38, 0x02, 0x02, 0x58, 0x01, 0x02, 0x59, 0x02, 0x02, 0x58, 0x02, 0x02, 0x38, 0x05, 0x02, 0x58, 0x88, 0x02, 0x78, 0x02, 0x98, 0x02, 0xB9, 0x02, 0xF9, 0x3C, 0xFF, 0x1B, 0xFD, 0x02, 0xD9, 0x02, 0x78, 0x02, 0x98, + 0x02, 0x02, 0x78, 0x03, 0x02, 0x58, 0x01, 0x02, 0x78, 0x82, 0x02, 0x58, 0x02, 0x59, 0x02, 0x38, 0x04, 0x02, 0x58, 0x01, 0x02, 0x38, 0x19, 0x02, 0x58, 0x80, 0x02, 0x38, 0x01, 0x02, 0x58, 0x02, 0x02, 0x38, 0x81, 0x02, 0x18, 0x02, 0x17, 0x05, 0x02, 0x58, 0x85, 0x02, 0x98, 0x02, 0xB8, 0x2C, 0x9F, 0x13, 0xFD, 0x02, 0xD9, 0x02, 0x99, 0x01, 0x02, 0x79, 0x01, 0x02, 0x78, 0x01, 0x02, 0x79, 0x81, 0x02, 0x58, 0x02, 0x59, 0x01, 0x02, 0x58, 0x01, 0x02, 0x59, 0x03, 0x02, 0x58, 0x01, 0x02, 0x38, 0x01, 0x02, 0x58, 0x01, 0x02, 0x38, 0x01, 0x02, 0x58, 0x01, 0x02, 0x38, 0x12, 0x02, 0x58, 0x80, 0x02, 0x38, 0x06, 0x02, 0x58, 0x81, 0x02, 0x79, 0x02, 0x38, 0x02, 0x02, 0x58, 0x01, 0x02, 0x78, 0x85, 0x02, 0x58, 0x02, 0x57, 0x1B, 0xFD, 0x1C, 0x1D, 0x02, 0x98, 0x02, 0x99, 0x01, 0x02, 0x58, 0x80, 0x02, 0x78, 0x0A, 0x02, 0x58, 0x80, 0x02, 0x38, 0x0B, 0x02, 0x58, 0x80, 0x02, 0x38, 0x01, 0x02, 0x58, 0x80, 0x02, 0x38, 0x11, 0x02, 0x58, 0x80, 0x02, 0x79, 0x05, 0x02, 0x58, 0x01, 0x02, 0x78, 0x02, 0x02, 0x58, 0x84, 0x02, 0x57, 0x02, 0x78, 0x02, 0xB8, 0x13, 0xFC, 0x24, 0x9F, 0x01, 0x02, 0x98, 0x01, 0x02, 0x78, 0x03, 0x02, 0x58, 0x80, 0x02, 0x18, 0x04, 0x02, 0x38, 0x81, 0x02, 0x58, 0x02, 0x79, 0x07, 0x02, 0x58, 0x02, 0x02, 0x38, 0x80, 0x02, 0x58, 0x01, 0x02, 0x38, 0x01, 0x02, 0x58, 0x01, 0x02, 0x38, 0x01, 0x02, 0x58, 0x01, 0x02, 0x38, 0x01, 0x02, 0x58, 0x01, 0x02, 0x38, 0x01, 0x02, 0x58, 0x03, 0x02, 0x38, 0x82, 0x02, 0x58, 0x02, 0x79, 0x02, 0x38, 0x03, + 0x02, 0x58, 0x80, 0x02, 0x78, 0x03, 0x02, 0x58, 0x8A, 0x02, 0x38, 0x02, 0x58, 0x02, 0x78, 0x02, 0x98, 0x13, 0x9C, 0x34, 0x9F, 0x03, 0x1A, 0x02, 0xD9, 0x02, 0xB9, 0x02, 0x58, 0x02, 0x37, 0x06, 0x02, 0x58, 0x80, 0x02, 0x79, 0x03, 0x02, 0x58, 0x82, 0x02, 0x79, 0x02, 0x58, 0x02, 0x59, 0x01, 0x02, 0x58, 0x80, 0x02, 0x38, 0x03, 0x02, 0x58, 0x82, 0x02, 0x79, 0x02, 0x38, 0x02, 0x58, 0x01, 0x02, 0x38, 0x01, 0x02, 0x58, 0x82, 0x02, 0x38, 0x02, 0x58, 0x02, 0x38, 0x01, 0x0A, 0x58, 0x81, 0x0A, 0x38, 0x02, 0x38, 0x01, 0x0A, 0x58, 0x82, 0x12, 0x59, 0x12, 0x78, 0x0A, 0x38, 0x01, 0x12, 0x58, 0x82, 0x0A, 0x38, 0x12, 0x58, 0x12, 0x38, 0x01, 0x1A, 0x38, 0x8E, 0x22, 0x37, 0x32, 0x37, 0x4A, 0x57, 0x62, 0x36, 0x82, 0x77, 0x9A, 0x76, 0x9A, 0x14, 0xA2, 0x14, 0xA1, 0xF3, 0xA9, 0xF4, 0xA9, 0xD3, 0xA9, 0xF4, 0xA9, 0xD3, 0xA9, 0xB3, 0xB1, 0xF4, 0x01, 0xA9, 0xF3, 0x80, 0xA1, 0xB2, 0x02, 0xA9, 0xF3, 0x80, 0xA1, 0xD3, 0x01, 0xA9, 0xD3, 0x80, 0xB1, 0xF4, 0x02, 0xA9, 0xD3, 0x8D, 0xA9, 0xF4, 0xA9, 0xF3, 0xA1, 0xD3, 0xAA, 0x34, 0xA2, 0x14, 0x99, 0xF4, 0x92, 0x35, 0x8A, 0x36, 0x72, 0x36, 0x20, 0x50, 0x31, 0xB5, 0x22, 0x38, 0x01, 0xB6, 0x01, 0xF7, 0x04, 0x02, 0x38, 0x81, 0x02, 0x18, 0x02, 0x38, 0x03, 0x02, 0x18, 0x01, 0x02, 0x38, 0x80, 0x02, 0x18, 0x01, 0x02, 0x38, 0x01, 0x02, 0x18, 0x02, 0x02, 0x17, 0x81, 0x02, 0x58, 0x02, 0x38, 0x01, 0x02, 0x58, 0x01, 0x02, 0x37, 0x01, 0x02, 0x58, 0x80, 0x02, 0x37, 0x01, 0x02, 0x58, 0x88, 0x02, 0x57, 0x02, 0x98, 0x03, + 0x19, 0x24, 0x3E, 0x24, 0x7F, 0x0B, 0x9C, 0x02, 0xF9, 0x02, 0xB8, 0x02, 0x98, 0x02, 0x02, 0x78, 0x03, 0x02, 0x37, 0x80, 0x02, 0x57, 0x04, 0x02, 0x37, 0x81, 0x02, 0x17, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x01, 0x02, 0x58, 0x80, 0x02, 0x38, 0x01, 0x02, 0x17, 0x80, 0x02, 0x18, 0x01, 0x02, 0x17, 0x80, 0x02, 0x18, 0x02, 0x02, 0x17, 0x01, 0x02, 0x18, 0x01, 0x02, 0x17, 0x82, 0x02, 0x18, 0x02, 0x37, 0x02, 0x38, 0x01, 0x02, 0x37, 0x80, 0x02, 0x38, 0x03, 0x02, 0x17, 0x07, 0x02, 0x38, 0x01, 0x02, 0x37, 0x80, 0x02, 0x58, 0x02, 0x02, 0x78, 0x8A, 0x02, 0x98, 0x02, 0xF9, 0x1B, 0xFD, 0x24, 0x5E, 0x1B, 0xFD, 0x03, 0x3A, 0x02, 0xB8, 0x02, 0x98, 0x02, 0x77, 0x02, 0x78, 0x02, 0x77, 0x01, 0x02, 0x57, 0x80, 0x02, 0x58, 0x01, 0x02, 0x37, 0x01, 0x02, 0x17, 0x81, 0x02, 0x37, 0x02, 0x38, 0x03, 0x02, 0x17, 0x01, 0x02, 0x38, 0x09, 0x02, 0x17, 0x06, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x80, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x80, 0x01, 0xF7, 0x03, 0x02, 0x17, 0x01, 0x02, 0x37, 0x02, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x04, 0x02, 0x37, 0x88, 0x02, 0x57, 0x02, 0xD9, 0x13, 0x9B, 0x2C, 0x3E, 0x2C, 0x5E, 0x13, 0xDC, 0x0B, 0x5A, 0x02, 0xB8, 0x02, 0x98, 0x01, 0x02, 0x77, 0x81, 0x02, 0x57, 0x02, 0x37, 0x05, 0x02, 0x16, 0x80, 0x01, 0xF6, 0x03, 0x02, 0x17, 0x80, 0x01, 0xF7, 0x01, 0x01, 0xD6, 0x01, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x82, 0x01, 0xF7, 0x02, 0x17, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x81, 0x02, 0x18, 0x02, 0x17, 0x04, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x01, + 0x02, 0x17, 0x82, 0x01, 0xF7, 0x02, 0x17, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x80, 0x02, 0x37, 0x02, 0x02, 0x17, 0x04, 0x02, 0x37, 0x02, 0x02, 0x57, 0x85, 0x02, 0x98, 0x02, 0xF9, 0x1B, 0xDD, 0x2C, 0x5E, 0x24, 0x5E, 0x0B, 0x9B, 0x01, 0x02, 0xB8, 0x82, 0x02, 0x98, 0x02, 0x78, 0x02, 0x57, 0x02, 0x02, 0x37, 0x01, 0x02, 0x17, 0x81, 0x02, 0x16, 0x02, 0x17, 0x01, 0x02, 0x16, 0x82, 0x01, 0xF6, 0x01, 0xF7, 0x01, 0xF6, 0x02, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x01, 0x01, 0xD6, 0x01, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x81, 0x02, 0x17, 0x01, 0xF6, 0x03, 0x01, 0xD6, 0x85, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0xD7, 0x01, 0x01, 0xD6, 0x01, 0x01, 0xD7, 0x84, 0x01, 0xB7, 0x01, 0xD7, 0x01, 0xB7, 0x01, 0xD7, 0x01, 0xB7, 0x0B, 0x01, 0xD7, 0x83, 0x01, 0xF7, 0x01, 0xF8, 0x01, 0xD7, 0x01, 0xB7, 0x06, 0x01, 0xD7, 0x02, 0x01, 0xB7, 0x05, 0x01, 0xD6, 0x02, 0x01, 0xF6, 0x8B, 0x02, 0x16, 0x02, 0x57, 0x0A, 0xF9, 0x23, 0xBC, 0x34, 0x5F, 0x2C, 0x3E, 0x23, 0xDC, 0x13, 0x3A, 0x02, 0x98, 0x02, 0x37, 0x02, 0x17, 0x01, 0xF7, 0x04, 0x01, 0xD7, 0x04, 0x01, 0xF7, 0x03, 0x01, 0xD7, 0x80, 0x01, 0xF8, 0x04, 0x01, 0xD7, 0x88, 0x01, 0xD8, 0x01, 0xF8, 0x01, 0xD7, 0x01, 0xD8, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xD7, 0x02, 0x01, 0xF8, 0x02, 0x01, 0xD7, 0x02, 0x01, 0xF8, 0x81, 0x01, 0xD7, 0x01, 0xD8, 0x03, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x02, 0x01, 0xD6, 0x01, 0x01, 0xF6, 0x8A, + 0x02, 0x16, 0x02, 0x36, 0x02, 0x57, 0x02, 0x98, 0x13, 0x7B, 0x2C, 0x1D, 0x2C, 0x3E, 0x1B, 0xFD, 0x03, 0x19, 0x02, 0xB8, 0x02, 0x57, 0x01, 0x02, 0x17, 0x09, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x05, 0x01, 0xF7, 0x02, 0x01, 0xF8, 0x80, 0x01, 0xF7, 0x04, 0x01, 0xF8, 0x80, 0x01, 0xD7, 0x08, 0x01, 0xF7, 0x84, 0x01, 0xF8, 0x02, 0x18, 0x01, 0xF7, 0x01, 0xF8, 0x01, 0xF7, 0x02, 0x01, 0xF8, 0x82, 0x01, 0xF7, 0x01, 0xF8, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x01, 0x01, 0xF6, 0x03, 0x02, 0x16, 0x8A, 0x02, 0x36, 0x02, 0x77, 0x02, 0xF9, 0x24, 0x1D, 0x2C, 0x7F, 0x13, 0xBC, 0x02, 0xF9, 0x02, 0xD9, 0x02, 0x98, 0x02, 0x57, 0x02, 0x37, 0x0A, 0x02, 0x17, 0x0C, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x01, 0x02, 0x18, 0x05, 0x01, 0xF8, 0x80, 0x02, 0x18, 0x05, 0x01, 0xF8, 0x80, 0x01, 0xF7, 0x07, 0x01, 0xF8, 0x01, 0x02, 0x18, 0x03, 0x02, 0x17, 0x83, 0x02, 0x38, 0x02, 0x57, 0x02, 0x78, 0x13, 0x5B, 0x01, 0x24, 0x3E, 0x82, 0x0B, 0x5A, 0x02, 0xD9, 0x02, 0x78, 0x01, 0x02, 0x37, 0x80, 0x02, 0x17, 0x02, 0x02, 0x37, 0x01, 0x02, 0x38, 0x80, 0x02, 0x17, 0x04, 0x02, 0x38, 0x80, 0x02, 0x18, 0x01, 0x02, 0x38, 0x04, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x04, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x06, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x07, 0x02, 0x18, 0x81, 0x01, 0xF8, 0x02, 0x18, 0x02, 0x02, 0x38, 0x82, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x02, 0x38, 0x80, 0x02, 0x58, 0x01, 0x02, 0x37, 0x86, 0x02, 0x78, 0x02, 0x98, 0x13, 0x9B, 0x34, 0xBF, 0x1B, 0xDD, 0x02, 0xD9, 0x02, 0x78, 0x01, 0x02, + 0x37, 0x80, 0x02, 0x17, 0x01, 0x02, 0x37, 0x80, 0x02, 0x38, 0x01, 0x02, 0x18, 0x03, 0x02, 0x38, 0x01, 0x02, 0x18, 0x80, 0x02, 0x38, 0x01, 0x02, 0x18, 0x82, 0x02, 0x19, 0x02, 0x18, 0x02, 0x19, 0x01, 0x02, 0x18, 0x80, 0x02, 0x19, 0x0F, 0x02, 0x18, 0x80, 0x02, 0x38, 0x02, 0x02, 0x18, 0x02, 0x02, 0x39, 0x8A, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x39, 0x02, 0x18, 0x02, 0x38, 0x02, 0x39, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x01, 0x02, 0x38, 0x87, 0x02, 0x37, 0x02, 0x78, 0x02, 0x99, 0x2C, 0x3F, 0x23, 0xFD, 0x02, 0xD9, 0x02, 0x98, 0x02, 0x78, 0x02, 0x02, 0x58, 0x07, 0x02, 0x38, 0x81, 0x02, 0x18, 0x02, 0x38, 0x04, 0x02, 0x18, 0x81, 0x02, 0x38, 0x02, 0x18, 0x01, 0x02, 0x38, 0x01, 0x02, 0x18, 0x01, 0x02, 0x38, 0x01, 0x02, 0x18, 0x89, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x02, 0x38, 0x02, 0x02, 0x18, 0x01, 0x02, 0x38, 0x04, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x01, 0x02, 0x18, 0x01, 0x02, 0x38, 0x01, 0x02, 0x18, 0x01, 0x02, 0x38, 0x85, 0x02, 0x78, 0x02, 0xFA, 0x34, 0xBF, 0x03, 0x3A, 0x02, 0x99, 0x02, 0x79, 0x01, 0x02, 0x38, 0x01, 0x02, 0x58, 0x81, 0x02, 0x38, 0x02, 0x39, 0x01, 0x02, 0x38, 0x02, 0x02, 0x39, 0x83, 0x02, 0x18, 0x02, 0x39, 0x02, 0x18, 0x02, 0x39, 0x0F, 0x02, 0x18, 0x80, 0x02, 0x38, 0x01, 0x02, 0x18, 0x04, 0x02, 0x38, 0x80, 0x02, 0x18, 0x03, 0x02, 0x38, 0x01, 0x02, 0x18, 0x02, 0x02, 0x38, 0x82, 0x02, 0x18, 0x02, 0x38, + 0x02, 0x59, 0x02, 0x02, 0x38, 0x80, 0x02, 0x18, 0x02, 0x02, 0x38, 0x82, 0x02, 0x37, 0x02, 0x38, 0x02, 0x37, 0x01, 0x1B, 0xFD, 0x01, 0x02, 0x58, 0x0E, 0x02, 0x38, 0x80, 0x02, 0x18, 0x06, 0x02, 0x38, 0x83, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x04, 0x02, 0x18, 0x81, 0x02, 0x38, 0x02, 0x18, 0x04, 0x02, 0x38, 0x80, 0x02, 0x18, 0x02, 0x02, 0x38, 0x80, 0x02, 0x18, 0x04, 0x02, 0x38, 0x80, 0x02, 0x18, 0x02, 0x02, 0x38, 0x80, 0x02, 0x18, 0x04, 0x02, 0x38, 0x02, 0x02, 0x37, 0x86, 0x02, 0x58, 0x02, 0x98, 0x03, 0x39, 0x3C, 0xFF, 0x0B, 0x3A, 0x02, 0x78, 0x02, 0x58, 0x03, 0x02, 0x38, 0x81, 0x02, 0x18, 0x02, 0x38, 0x04, 0x02, 0x18, 0x02, 0x02, 0x38, 0x80, 0x02, 0x18, 0x01, 0x02, 0x38, 0x01, 0x02, 0x18, 0x80, 0x02, 0x38, 0x0A, 0x02, 0x18, 0x80, 0x02, 0x38, 0x06, 0x02, 0x18, 0x80, 0x02, 0x38, 0x03, 0x02, 0x18, 0x0B, 0x02, 0x38, 0x82, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x01, 0x02, 0x58, 0x82, 0x02, 0x98, 0x1B, 0xDD, 0x34, 0x9F, 0x01, 0x02, 0xB9, 0x82, 0x02, 0x58, 0x02, 0x37, 0x02, 0x17, 0x01, 0x02, 0x18, 0x80, 0x02, 0x38, 0x03, 0x02, 0x18, 0x08, 0x02, 0x38, 0x01, 0x02, 0x18, 0x02, 0x02, 0x38, 0x81, 0x02, 0x18, 0x02, 0x38, 0x01, 0x02, 0x18, 0x01, 0x02, 0x38, 0x80, 0x02, 0x18, 0x01, 0x02, 0x38, 0x82, 0x02, 0x18, 0x02, 0x38, 0x0A, 0x38, 0x01, 0x0A, 0x18, 0x80, 0x0A, 0x38, 0x01, 0x0A, 0x18, 0x91, 0x0A, 0x38, 0x12, 0x58, 0x12, 0x38, 0x0A, 0x38, 0x12, 0x58, 0x0A, 0x38, 0x12, 0x59, 0x12, 0x38, 0x1A, 0x38, 0x22, 0x38, 0x2A, 0x37, + 0x3A, 0x17, 0x5A, 0x37, 0x7A, 0x77, 0x92, 0x77, 0x9A, 0x35, 0x99, 0xF4, 0xAA, 0x14, 0x01, 0xA9, 0xF4, 0x01, 0xA9, 0xD3, 0x80, 0xB1, 0xF4, 0x01, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x86, 0xA9, 0xD3, 0xA9, 0xF4, 0xA1, 0xD3, 0xA9, 0xF4, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0x02, 0xA9, 0xD3, 0x83, 0xA9, 0xF3, 0xA9, 0xF4, 0xA9, 0xF3, 0xA1, 0xF3, 0x01, 0xA2, 0x14, 0x87, 0x92, 0x15, 0x8A, 0x36, 0x82, 0x98, 0x49, 0x74, 0x52, 0x59, 0x32, 0x79, 0x09, 0xD6, 0x0A, 0x18, 0x03, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x01, 0x02, 0x18, 0x02, 0x01, 0xF8, 0x01, 0x02, 0x18, 0x05, 0x01, 0xF8, 0x8A, 0x01, 0xF7, 0x01, 0xF8, 0x02, 0x18, 0x01, 0xF7, 0x02, 0x17, 0x02, 0x18, 0x02, 0x17, 0x02, 0x38, 0x02, 0x17, 0x02, 0x38, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x8A, 0x02, 0x37, 0x02, 0x58, 0x02, 0x78, 0x02, 0xB8, 0x1B, 0xBC, 0x34, 0x9F, 0x2C, 0x3E, 0x0B, 0x1A, 0x02, 0x77, 0x02, 0x57, 0x02, 0x37, 0x02, 0x02, 0x17, 0x80, 0x01, 0xF7, 0x04, 0x02, 0x17, 0x81, 0x01, 0xF7, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x80, 0x01, 0xF8, 0x02, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x0B, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x80, 0x01, 0xD7, 0x03, 0x01, 0xF7, 0x81, 0x02, 0x17, 0x01, 0xF7, 0x02, 0x02, 0x18, 0x82, 0x02, 0x17, 0x02, 0x18, 0x01, 0xF7, 0x04, 0x02, 0x17, 0x89, 0x02, 0x37, 0x02, 0x58, 0x02, 0x78, 0x02, 0xB9, 0x0B, 0x3A, 0x24, 0x1E, 0x2C, 0x7F, 0x23, 0xFD, 0x0A, 0xF9, 0x02, 0x77, 0x01, 0x02, 0x57, 0x83, 0x02, 0x37, 0x02, 0x17, 0x02, 0x16, 0x02, 0x17, 0x05, 0x01, + 0xF7, 0x03, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x81, 0x01, 0xF7, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x81, 0x01, 0xD7, 0x01, 0xF7, 0x03, 0x01, 0xD7, 0x80, 0x01, 0xB7, 0x07, 0x01, 0xD7, 0x06, 0x01, 0xF7, 0x84, 0x01, 0xD7, 0x01, 0xD6, 0x01, 0xD7, 0x01, 0xF7, 0x02, 0x17, 0x02, 0x01, 0xF7, 0x8A, 0x02, 0x17, 0x02, 0x37, 0x02, 0x57, 0x02, 0x98, 0x0B, 0x1A, 0x1B, 0xDD, 0x2C, 0x3E, 0x2C, 0x1E, 0x1B, 0x5B, 0x02, 0x77, 0x02, 0x57, 0x01, 0x02, 0x37, 0x80, 0x02, 0x16, 0x01, 0x01, 0xF6, 0x07, 0x01, 0xD6, 0x03, 0x01, 0xB6, 0x84, 0x01, 0xD7, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0xD7, 0x01, 0xB7, 0x02, 0x01, 0xD7, 0x81, 0x01, 0xF8, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x80, 0x01, 0xB7, 0x03, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x06, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x07, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x01, 0x02, 0x37, 0x8A, 0x02, 0x78, 0x02, 0xB8, 0x0B, 0x3A, 0x23, 0xFD, 0x2C, 0x1E, 0x2B, 0xDD, 0x13, 0x1A, 0x02, 0x98, 0x02, 0x57, 0x02, 0x37, 0x02, 0x17, 0x01, 0x01, 0xF6, 0x81, 0x01, 0xD6, 0x01, 0xF6, 0x05, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x04, 0x01, 0xD6, 0x02, 0x01, 0xB6, 0x80, 0x01, 0xD6, 0x01, 0x01, 0xD7, 0x83, 0x01, 0xD6, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xD6, 0x04, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x03, 0x01, 0xB6, 0x02, 0x01, 0xD7, 0x80, 0x01, 0xB7, 0x04, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x04, 0x01, 0xD7, 0x80, 0x01, 0xB7, 0x0B, 0x01, 0xD7, 0x02, 0x01, 0xB7, 0x80, 0x01, 0xB6, 0x01, 0x01, 0xD7, 0x02, 0x01, 0xD6, 0x01, + 0x01, 0xF6, 0x87, 0x02, 0x37, 0x02, 0xB8, 0x1B, 0x7C, 0x34, 0x3E, 0x3C, 0x7F, 0x34, 0x3E, 0x23, 0x9C, 0x02, 0xB8, 0x01, 0x02, 0x57, 0x82, 0x02, 0x17, 0x01, 0xF6, 0x01, 0xD6, 0x02, 0x01, 0xD7, 0x81, 0x01, 0xD6, 0x01, 0xF7, 0x06, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x81, 0x01, 0xD7, 0x01, 0xB7, 0x01, 0x01, 0xD7, 0x80, 0x01, 0xD8, 0x02, 0x01, 0xD7, 0x02, 0x01, 0xF8, 0x82, 0x01, 0xD7, 0x01, 0xF8, 0x01, 0xD7, 0x01, 0x01, 0xF8, 0x03, 0x01, 0xD7, 0x01, 0x01, 0xF8, 0x80, 0x01, 0xB7, 0x02, 0x01, 0xD7, 0x81, 0x01, 0xF8, 0x01, 0xF7, 0x01, 0x01, 0xF8, 0x83, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xD6, 0x01, 0x01, 0xF7, 0x01, 0x01, 0xF6, 0x01, 0x02, 0x16, 0x88, 0x02, 0x77, 0x02, 0xD9, 0x1B, 0x9C, 0x34, 0x5E, 0x34, 0x7F, 0x2C, 0x1D, 0x0B, 0x19, 0x02, 0x77, 0x02, 0x57, 0x01, 0x02, 0x37, 0x01, 0x02, 0x17, 0x81, 0x01, 0xF6, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x83, 0x01, 0xF6, 0x01, 0xF7, 0x01, 0xD6, 0x02, 0x17, 0x03, 0x01, 0xF7, 0x81, 0x01, 0xD7, 0x01, 0xF8, 0x06, 0x01, 0xF7, 0x80, 0x02, 0x18, 0x01, 0x01, 0xF8, 0x80, 0x01, 0xD8, 0x01, 0x01, 0xF8, 0x01, 0x01, 0xF7, 0x03, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xF8, 0x01, 0x01, 0xD7, 0x81, 0x01, 0xF8, 0x01, 0xF7, 0x03, 0x01, 0xF8, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x82, 0x02, 0x17, 0x02, 0x38, 0x02, 0x17, 0x01, 0x02, 0x16, 0x01, 0x02, 0x36, 0x89, 0x02, 0xB8, 0x1B, 0x9B, 0x34, 0x7F, 0x2C, 0x5E, 0x0B, 0x1A, 0x02, 0x98, 0x02, 0xD9, 0x02, 0x78, 0x02, 0x37, 0x02, 0x16, 0x01, + 0x02, 0x17, 0x81, 0x02, 0x37, 0x02, 0x17, 0x01, 0x02, 0x38, 0x80, 0x02, 0x17, 0x02, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x81, 0x02, 0x18, 0x01, 0xF7, 0x02, 0x02, 0x18, 0x83, 0x01, 0xF8, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x04, 0x02, 0x18, 0x89, 0x01, 0xF8, 0x01, 0xF7, 0x02, 0x18, 0x01, 0xF8, 0x02, 0x18, 0x01, 0xF8, 0x02, 0x18, 0x01, 0xF8, 0x02, 0x18, 0x01, 0xF7, 0x02, 0x01, 0xF8, 0x88, 0x01, 0xF7, 0x01, 0xF8, 0x01, 0xF7, 0x01, 0xF8, 0x02, 0x18, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xF8, 0x01, 0xF7, 0x02, 0x02, 0x18, 0x02, 0x02, 0x17, 0x80, 0x02, 0x37, 0x01, 0x02, 0x58, 0x88, 0x02, 0xD9, 0x1B, 0xBD, 0x34, 0x7F, 0x1B, 0xDD, 0x02, 0xF9, 0x02, 0xB8, 0x02, 0x78, 0x02, 0x58, 0x02, 0x37, 0x05, 0x02, 0x17, 0x80, 0x02, 0x37, 0x02, 0x02, 0x17, 0x02, 0x02, 0x38, 0x03, 0x02, 0x18, 0x80, 0x02, 0x38, 0x04, 0x02, 0x18, 0x83, 0x01, 0xF8, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x01, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x04, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x02, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x0B, 0x02, 0x18, 0x01, 0x02, 0x38, 0x01, 0x02, 0x17, 0x86, 0x02, 0x37, 0x02, 0x58, 0x02, 0x98, 0x13, 0x9C, 0x3C, 0xBF, 0x23, 0xFD, 0x02, 0x98, 0x01, 0x02, 0x57, 0x80, 0x02, 0x37, 0x01, 0x02, 0x58, 0x88, 0x02, 0x38, 0x02, 0x17, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x04, 0x02, 0x18, 0x88, 0x02, 0x39, 0x02, 0x18, 0x02, 0x19, 0x02, 0x18, 0x02, 0x19, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x19, 0x04, 0x02, 0x18, 0x80, 0x02, + 0x38, 0x01, 0x02, 0x18, 0x81, 0x02, 0x39, 0x02, 0x38, 0x01, 0x02, 0x18, 0x81, 0x02, 0x38, 0x02, 0x39, 0x04, 0x02, 0x18, 0x80, 0x02, 0x38, 0x02, 0x02, 0x18, 0x80, 0x02, 0x38, 0x02, 0x02, 0x18, 0x81, 0x02, 0x38, 0x02, 0x18, 0x02, 0x02, 0x17, 0x85, 0x02, 0x38, 0x02, 0x58, 0x02, 0x99, 0x1B, 0x9C, 0x2C, 0x1E, 0x02, 0xB9, 0x01, 0x02, 0x78, 0x80, 0x02, 0x58, 0x04, 0x02, 0x38, 0x80, 0x02, 0x18, 0x02, 0x02, 0x38, 0x83, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x01, 0x02, 0x18, 0x80, 0x02, 0x38, 0x03, 0x02, 0x18, 0x83, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x01, 0x02, 0x38, 0x01, 0x02, 0x18, 0x80, 0x02, 0x38, 0x02, 0x02, 0x18, 0x81, 0x02, 0x38, 0x02, 0x18, 0x02, 0x02, 0x38, 0x80, 0x02, 0x18, 0x02, 0x02, 0x38, 0x82, 0x02, 0x39, 0x02, 0x19, 0x02, 0x18, 0x01, 0x02, 0x38, 0x80, 0x02, 0x39, 0x01, 0x02, 0x18, 0x83, 0x02, 0x38, 0x02, 0x39, 0x02, 0x18, 0x02, 0x39, 0x01, 0x02, 0x38, 0x02, 0x02, 0x18, 0x86, 0x02, 0x38, 0x02, 0x58, 0x02, 0x98, 0x2C, 0x3E, 0x2C, 0x3F, 0x02, 0xB9, 0x02, 0x78, 0x03, 0x02, 0x38, 0x01, 0x02, 0x18, 0x01, 0x02, 0x38, 0x81, 0x02, 0x18, 0x02, 0x39, 0x02, 0x02, 0x18, 0x84, 0x02, 0x39, 0x02, 0x18, 0x02, 0x39, 0x02, 0x18, 0x02, 0x39, 0x02, 0x02, 0x18, 0x80, 0x02, 0x39, 0x02, 0x02, 0x18, 0x80, 0x02, 0x38, 0x03, 0x02, 0x18, 0x01, 0x02, 0x38, 0x80, 0x02, 0x18, 0x01, 0x02, 0x38, 0x80, 0x02, 0x39, 0x01, 0x02, 0x18, 0x01, 0x02, 0x38, 0x80, 0x02, 0x18, 0x01, 0x02, 0x38, 0x01, 0x02, 0x18, 0x02, 0x02, 0x38, + 0x81, 0x02, 0x18, 0x02, 0x39, 0x02, 0x02, 0x18, 0x01, 0x02, 0x38, 0x80, 0x02, 0x58, 0x03, 0x02, 0x38, 0x84, 0x02, 0x37, 0x02, 0x17, 0x02, 0x37, 0x2C, 0x3E, 0x1B, 0xFD, 0x01, 0x02, 0x58, 0x08, 0x02, 0x38, 0x82, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x02, 0x38, 0x8C, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x01, 0x02, 0x38, 0x81, 0x02, 0x18, 0x01, 0xF8, 0x03, 0x02, 0x38, 0x01, 0x02, 0x18, 0x02, 0x02, 0x38, 0x84, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x02, 0x38, 0x02, 0x02, 0x18, 0x80, 0x02, 0x38, 0x02, 0x02, 0x18, 0x82, 0x02, 0x38, 0x02, 0x37, 0x02, 0x58, 0x02, 0x02, 0x37, 0x87, 0x02, 0x57, 0x02, 0x98, 0x02, 0xB8, 0x2C, 0x5F, 0x2C, 0x1E, 0x02, 0x98, 0x02, 0x58, 0x02, 0x38, 0x01, 0x02, 0x17, 0x80, 0x01, 0xF7, 0x02, 0x02, 0x18, 0x01, 0x02, 0x38, 0x01, 0x02, 0x59, 0x04, 0x02, 0x38, 0x80, 0x02, 0x18, 0x02, 0x02, 0x38, 0x02, 0x02, 0x18, 0x80, 0x02, 0x38, 0x02, 0x02, 0x18, 0x80, 0x02, 0x38, 0x02, 0x02, 0x18, 0x82, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x04, 0x02, 0x18, 0x02, 0x02, 0x38, 0x02, 0x02, 0x18, 0x02, 0x02, 0x38, 0x02, 0x02, 0x18, 0x85, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x02, 0x38, 0x02, 0x17, 0x01, 0x02, 0x18, 0x81, 0x02, 0x38, 0x02, 0x58, 0x01, 0x02, 0x98, 0x83, 0x2C, 0x5F, 0x24, 0x1E, 0x02, 0x78, 0x02, 0x58, 0x01, 0x02, 0x38, 0x85, 0x02, 0x17, 0x02, 0x38, + 0x02, 0x18, 0x01, 0xF8, 0x02, 0x18, 0x02, 0x38, 0x02, 0x02, 0x18, 0x80, 0x02, 0x38, 0x04, 0x02, 0x18, 0x01, 0x02, 0x38, 0x80, 0x01, 0xF7, 0x03, 0x02, 0x18, 0x80, 0x02, 0x38, 0x02, 0x02, 0x18, 0x81, 0x0A, 0x59, 0x0A, 0x39, 0x01, 0x0A, 0x59, 0x01, 0x0A, 0x38, 0x81, 0x0A, 0x39, 0x02, 0x18, 0x02, 0x0A, 0x59, 0x81, 0x0A, 0x38, 0x12, 0x59, 0x02, 0x12, 0x79, 0x92, 0x1A, 0x99, 0x12, 0x79, 0x1A, 0x9A, 0x22, 0xBA, 0x22, 0x79, 0x2A, 0x79, 0x32, 0x58, 0x3A, 0x38, 0x52, 0x17, 0x6A, 0x16, 0x92, 0x97, 0x9A, 0x36, 0x91, 0xD4, 0xA1, 0xF4, 0xA1, 0xD4, 0xA9, 0xD3, 0xA9, 0xD4, 0xB1, 0xF4, 0xA9, 0xB3, 0x02, 0xA9, 0xD3, 0x80, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x80, 0xA9, 0xF4, 0x01, 0xA9, 0xD3, 0x84, 0xA9, 0xB3, 0xA9, 0xD3, 0xB1, 0xF4, 0xA9, 0xD3, 0xB1, 0xF4, 0x02, 0xA9, 0xF3, 0x8A, 0xA9, 0xF4, 0xA1, 0xF3, 0x99, 0xF4, 0x9A, 0x35, 0x92, 0x56, 0x92, 0xD9, 0x59, 0xB5, 0x41, 0xD6, 0x3A, 0x99, 0x12, 0x18, 0x0A, 0x38, 0x03, 0x02, 0x38, 0x80, 0x02, 0x39, 0x01, 0x01, 0xF8, 0x01, 0x02, 0x19, 0x81, 0x02, 0x18, 0x01, 0xF8, 0x02, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x01, 0x02, 0x18, 0x83, 0x02, 0x38, 0x02, 0x18, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x81, 0x02, 0x17, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x82, 0x02, 0x38, 0x02, 0x17, 0x02, 0x38, 0x01, 0x02, 0x17, 0x82, 0x01, 0xF7, 0x02, 0x17, 0x02, 0x37, 0x01, 0x02, 0x58, 0x85, 0x0B, 0x1A, 0x2C, 0x3F, 0x34, 0x7F, 0x1B, 0x9C, 0x02, 0x98, 0x02, 0x57, 0x06, 0x02, 0x17, 0x80, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x81, 0x02, + 0x17, 0x01, 0xF7, 0x01, 0x02, 0x18, 0x81, 0x01, 0xF7, 0x02, 0x17, 0x01, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x80, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xF8, 0x80, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x01, 0x02, 0x18, 0x84, 0x01, 0xF7, 0x02, 0x18, 0x01, 0xF7, 0x02, 0x18, 0x02, 0x17, 0x02, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x84, 0x01, 0xF8, 0x02, 0x18, 0x01, 0xF7, 0x02, 0x38, 0x02, 0x17, 0x02, 0x02, 0x18, 0x83, 0x01, 0xF7, 0x02, 0x18, 0x02, 0x17, 0x01, 0xF6, 0x02, 0x01, 0xF7, 0x01, 0x02, 0x37, 0x89, 0x02, 0x78, 0x02, 0x98, 0x02, 0xB8, 0x13, 0x5B, 0x23, 0xFD, 0x34, 0x7F, 0x23, 0xFD, 0x02, 0xF9, 0x02, 0x77, 0x02, 0x37, 0x02, 0x02, 0x17, 0x80, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x02, 0x01, 0xF7, 0x80, 0x01, 0xD6, 0x01, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x81, 0x01, 0xF7, 0x01, 0xD7, 0x09, 0x01, 0xF7, 0x81, 0x02, 0x18, 0x01, 0xF7, 0x01, 0x01, 0xF8, 0x01, 0x01, 0xD7, 0x03, 0x01, 0xF7, 0x03, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x81, 0x01, 0xF7, 0x01, 0xD7, 0x04, 0x01, 0xF7, 0x80, 0x01, 0xF6, 0x01, 0x01, 0xF7, 0x8D, 0x02, 0x17, 0x02, 0x37, 0x02, 0x17, 0x02, 0x37, 0x02, 0x57, 0x0A, 0xD9, 0x23, 0x9C, 0x3C, 0x5F, 0x34, 0x5E, 0x1B, 0x7B, 0x02, 0xB8, 0x02, 0x57, 0x02, 0x36, 0x02, 0x16, 0x03, 0x01, 0xF6, 0x03, 0x01, 0xF7, 0x82, 0x02, 0x17, 0x01, 0xF7, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x81, 0x01, 0xD7, 0x01, 0xD6, 0x02, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x03, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x81, + 0x01, 0xF8, 0x01, 0xF7, 0x05, 0x01, 0xD7, 0x84, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xD7, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x81, 0x01, 0xF7, 0x01, 0xF6, 0x02, 0x01, 0xD6, 0x01, 0x01, 0xF6, 0x81, 0x02, 0x17, 0x02, 0x37, 0x03, 0x02, 0x57, 0x87, 0x12, 0xFA, 0x2B, 0xDD, 0x3C, 0x7F, 0x34, 0x5F, 0x23, 0xBD, 0x0A, 0xF9, 0x02, 0x57, 0x02, 0x17, 0x04, 0x01, 0xF6, 0x80, 0x01, 0xF7, 0x01, 0x01, 0xD6, 0x81, 0x01, 0xF6, 0x01, 0xF7, 0x03, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x04, 0x01, 0xD7, 0x81, 0x01, 0xB6, 0x01, 0xD7, 0x01, 0x01, 0xD6, 0x81, 0x01, 0xD7, 0x01, 0xD6, 0x01, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x80, 0x01, 0xB6, 0x01, 0x01, 0xB7, 0x80, 0x01, 0xB6, 0x01, 0x01, 0xB7, 0x81, 0x01, 0xB6, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x08, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x04, 0x01, 0xD7, 0x80, 0x01, 0xB7, 0x04, 0x01, 0xD7, 0x80, 0x01, 0xB6, 0x01, 0x01, 0xD7, 0x80, 0x01, 0xB6, 0x01, 0x01, 0xD7, 0x8C, 0x01, 0xF7, 0x01, 0xF6, 0x02, 0x16, 0x02, 0x17, 0x02, 0x57, 0x12, 0xFA, 0x2B, 0xDD, 0x34, 0x3E, 0x2B, 0xFD, 0x1B, 0x5B, 0x02, 0xB8, 0x02, 0x56, 0x02, 0x15, 0x01, 0x02, 0x16, 0x80, 0x01, 0xF6, 0x02, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x0A, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x0D, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x81, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x82, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x81, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x81, 0x01, + 0xD6, 0x01, 0xF6, 0x01, 0x02, 0x17, 0x01, 0x02, 0x37, 0x87, 0x02, 0x78, 0x0A, 0xD9, 0x23, 0xDD, 0x34, 0x3E, 0x2C, 0x3E, 0x1B, 0x7B, 0x02, 0xB8, 0x02, 0x77, 0x01, 0x02, 0x36, 0x82, 0x02, 0x16, 0x02, 0x37, 0x02, 0x17, 0x01, 0x01, 0xF6, 0x80, 0x01, 0xF7, 0x01, 0x01, 0xF6, 0x02, 0x01, 0xD6, 0x06, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x06, 0x01, 0xF7, 0x03, 0x01, 0xD7, 0x80, 0x01, 0xD8, 0x06, 0x01, 0xF7, 0x82, 0x01, 0xF8, 0x01, 0xF7, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x8C, 0x02, 0x16, 0x02, 0x36, 0x02, 0x98, 0x1B, 0x5B, 0x2C, 0x1E, 0x2C, 0x3E, 0x1B, 0x9B, 0x02, 0xB8, 0x02, 0x57, 0x02, 0x78, 0x02, 0x37, 0x02, 0x17, 0x02, 0x16, 0x01, 0x01, 0xF6, 0x03, 0x02, 0x17, 0x02, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x06, 0x01, 0xF7, 0x82, 0x01, 0xF8, 0x02, 0x18, 0x01, 0xF8, 0x01, 0x02, 0x18, 0x81, 0x01, 0xF7, 0x02, 0x18, 0x01, 0x01, 0xF8, 0x01, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x01, 0x01, 0xF7, 0x01, 0x02, 0x18, 0x04, 0x01, 0xF7, 0x82, 0x01, 0xF8, 0x01, 0xF7, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x82, 0x02, 0x18, 0x02, 0x17, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x80, 0x01, 0xF7, 0x01, 0x02, 0x37, 0x85, 0x02, 0x78, 0x13, 0x3B, 0x23, 0xFE, 0x2C, 0x1E, 0x0B, 0x1A, 0x02, 0x98, 0x01, 0x02, 0x78, 0x81, 0x02, 0x57, 0x02, 0x37, 0x03, 0x02, 0x17, 0x03, 0x01, 0xF7, 0x84, 0x02, 0x17, 0x01, 0xF7, 0x02, 0x17, 0x02, 0x18, 0x01, 0xF7, 0x03, 0x02, 0x18, 0x80, + 0x01, 0xF8, 0x05, 0x02, 0x18, 0x01, 0x01, 0xF8, 0x80, 0x02, 0x18, 0x02, 0x01, 0xF8, 0x80, 0x02, 0x18, 0x01, 0x01, 0xF8, 0x80, 0x02, 0x18, 0x01, 0x01, 0xF8, 0x84, 0x02, 0x18, 0x01, 0xF8, 0x01, 0xF7, 0x01, 0xF8, 0x02, 0x18, 0x03, 0x01, 0xF8, 0x01, 0x02, 0x18, 0x81, 0x01, 0xF8, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x8B, 0x02, 0x18, 0x02, 0x17, 0x02, 0x37, 0x02, 0x17, 0x02, 0x37, 0x02, 0x58, 0x02, 0x98, 0x23, 0xFD, 0x2C, 0x3E, 0x1B, 0xBC, 0x02, 0x98, 0x02, 0x57, 0x03, 0x02, 0x37, 0x02, 0x02, 0x17, 0x80, 0x01, 0xF7, 0x01, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x0F, 0x02, 0x18, 0x82, 0x01, 0xF8, 0x02, 0x18, 0x01, 0xF8, 0x15, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x02, 0x02, 0x18, 0x80, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x85, 0x02, 0x58, 0x02, 0x78, 0x0A, 0xFA, 0x34, 0x7F, 0x02, 0xB9, 0x02, 0x78, 0x01, 0x02, 0x58, 0x02, 0x02, 0x38, 0x16, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x04, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x0D, 0x02, 0x18, 0x80, 0x02, 0x38, 0x03, 0x02, 0x18, 0x02, 0x02, 0x38, 0x02, 0x02, 0x18, 0x01, 0x02, 0x38, 0x85, 0x02, 0x58, 0x02, 0xB9, 0x34, 0x7F, 0x1B, 0x9C, 0x02, 0x78, 0x02, 0x38, 0x03, 0x02, 0x18, 0x80, 0x02, 0x17, 0x10, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x1E, 0x02, 0x18, 0x80, 0x02, 0x38, 0x01, 0x02, 0x37, 0x05, 0x02, 0x17, 0x81, 0x2C, 0x5E, 0x1B, 0xDD, 0x01, 0x02, 0x37, 0x84, 0x02, 0x38, 0x02, 0x37, 0x02, 0x17, 0x02, 0x38, 0x02, 0x18, 0x01, 0x02, 0x38, 0x12, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x07, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x11, 0x02, 0x18, 0x81, + 0x02, 0x17, 0x02, 0x18, 0x01, 0x02, 0x17, 0x80, 0x02, 0x37, 0x02, 0x02, 0x17, 0x01, 0x02, 0x37, 0x83, 0x02, 0x78, 0x0B, 0x3A, 0x34, 0x7F, 0x02, 0xB9, 0x01, 0x02, 0x37, 0x01, 0x02, 0x17, 0x80, 0x01, 0xF7, 0x03, 0x02, 0x18, 0x01, 0x02, 0x38, 0x80, 0x02, 0x18, 0x01, 0x02, 0x38, 0x0A, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x15, 0x02, 0x18, 0x80, 0x02, 0x38, 0x01, 0x02, 0x18, 0x80, 0x01, 0xF7, 0x03, 0x02, 0x18, 0x04, 0x02, 0x17, 0x8B, 0x02, 0x37, 0x02, 0x58, 0x02, 0x78, 0x02, 0xD9, 0x3C, 0xDF, 0x1B, 0x9C, 0x02, 0x78, 0x02, 0x37, 0x02, 0x38, 0x02, 0x17, 0x01, 0xF7, 0x02, 0x17, 0x04, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x08, 0x02, 0x18, 0x80, 0x02, 0x17, 0x03, 0x02, 0x18, 0x81, 0x02, 0x38, 0x01, 0xF8, 0x02, 0x02, 0x18, 0x81, 0x0A, 0x39, 0x02, 0x18, 0x02, 0x02, 0x38, 0x80, 0x0A, 0x39, 0x01, 0x0A, 0x38, 0x80, 0x0A, 0x59, 0x04, 0x0A, 0x58, 0x82, 0x12, 0x59, 0x12, 0x79, 0x1A, 0x99, 0x01, 0x1A, 0x79, 0x88, 0x22, 0x58, 0x22, 0x38, 0x32, 0x17, 0x41, 0xF7, 0x5A, 0x17, 0x7A, 0x57, 0x92, 0x57, 0x9A, 0x15, 0xA1, 0xF4, 0x01, 0xA9, 0xF4, 0x82, 0xA9, 0xD4, 0xA9, 0xD3, 0xB1, 0xF4, 0x01, 0xA9, 0xD3, 0x80, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x82, 0xA9, 0xD3, 0xA9, 0xF3, 0xA9, 0xB3, 0x01, 0xA9, 0xD3, 0x80, 0xB1, 0xF4, 0x01, 0xA9, 0xD3, 0x8C, 0xA9, 0xF3, 0xA9, 0xD3, 0xA1, 0xD3, 0xA1, 0xF4, 0xA2, 0x35, 0x9A, 0x15, 0x92, 0x15, 0x92, 0x98, 0x61, 0xD6, 0x31, 0x34, 0x21, 0xF6, 0x11, 0xF7, 0x0A, 0x17, 0x03, 0x02, 0x18, 0x01, 0x01, 0xF8, 0x81, 0x02, + 0x18, 0x01, 0xF8, 0x02, 0x02, 0x18, 0x02, 0x01, 0xF8, 0x03, 0x02, 0x18, 0x80, 0x01, 0xF7, 0x01, 0x01, 0xF8, 0x04, 0x01, 0xF7, 0x05, 0x02, 0x17, 0x80, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x86, 0x02, 0x37, 0x02, 0x58, 0x02, 0xB9, 0x13, 0x7B, 0x34, 0x5F, 0x2C, 0x1E, 0x0A, 0xD9, 0x01, 0x02, 0x37, 0x84, 0x02, 0x17, 0x02, 0x37, 0x02, 0x17, 0x01, 0xF7, 0x02, 0x17, 0x03, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x03, 0x01, 0xF7, 0x84, 0x02, 0x18, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xF8, 0x0D, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x04, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x03, 0x01, 0xF7, 0x81, 0x02, 0x18, 0x02, 0x17, 0x06, 0x01, 0xF7, 0x81, 0x02, 0x17, 0x02, 0x37, 0x01, 0x02, 0x57, 0x86, 0x02, 0x98, 0x0B, 0x19, 0x23, 0xFD, 0x34, 0x3E, 0x13, 0x5B, 0x02, 0x98, 0x02, 0x37, 0x02, 0x02, 0x17, 0x81, 0x01, 0xF7, 0x01, 0xF6, 0x02, 0x01, 0xD6, 0x80, 0x01, 0xF7, 0x04, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x03, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x81, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x03, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x82, 0x01, 0xF7, 0x01, 0xD6, 0x01, 0xD7, 0x03, 0x01, 0xF7, 0x82, 0x01, 0xD6, 0x01, 0xF6, 0x02, 0x17, 0x05, 0x01, 0xF6, 0x01, 0x02, 0x16, 0x87, 0x02, 0x36, 0x02, 0x77, 0x13, 0x1A, 0x2B, 0xDD, 0x2B, 0xFD, 0x1B, 0x7B, 0x02, 0x98, 0x02, 0x57, 0x02, 0x02, 0x16, 0x01, 0x01, 0xF6, 0x81, 0x01, 0xD6, 0x01, 0xF6, 0x01, 0x01, 0xB6, 0x80, 0x01, 0xD6, + 0x02, 0x01, 0xF7, 0x01, 0x01, 0xD6, 0x82, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xF7, 0x0F, 0x01, 0xD7, 0x80, 0x01, 0xD6, 0x06, 0x01, 0xD7, 0x08, 0x01, 0xD6, 0x01, 0x01, 0xF6, 0x01, 0x01, 0xF7, 0x81, 0x01, 0xF6, 0x02, 0x17, 0x01, 0x02, 0x16, 0x8A, 0x02, 0x36, 0x02, 0x77, 0x0A, 0xD9, 0x23, 0xBC, 0x34, 0x3E, 0x23, 0xBD, 0x12, 0xFA, 0x02, 0x37, 0x02, 0x36, 0x02, 0x16, 0x02, 0x37, 0x01, 0x02, 0x17, 0x01, 0x01, 0xF6, 0x02, 0x01, 0xD6, 0x07, 0x01, 0xB6, 0x03, 0x01, 0xD6, 0x05, 0x01, 0xB6, 0x02, 0x01, 0x96, 0x02, 0x01, 0xB6, 0x03, 0x01, 0x96, 0x10, 0x01, 0xB6, 0x81, 0x01, 0x96, 0x01, 0xB6, 0x02, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x01, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x8A, 0x02, 0x17, 0x02, 0x57, 0x02, 0xB8, 0x13, 0x5B, 0x34, 0x1E, 0x2B, 0xFD, 0x23, 0x9C, 0x0A, 0xB8, 0x02, 0x16, 0x01, 0xD4, 0x01, 0xB4, 0x02, 0x01, 0xD5, 0x80, 0x01, 0xB5, 0x01, 0x01, 0xD5, 0x10, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x02, 0x01, 0xD7, 0x02, 0x01, 0xB7, 0x02, 0x01, 0xD7, 0x82, 0x01, 0xB7, 0x01, 0xD7, 0x01, 0xB7, 0x02, 0x01, 0xD7, 0x80, 0x01, 0xD6, 0x01, 0x01, 0xB6, 0x02, 0x01, 0xD6, 0x01, 0x01, 0xB6, 0x82, 0x01, 0x96, 0x01, 0xD6, 0x01, 0xB6, 0x03, 0x01, 0xD6, 0x01, 0x01, 0xF6, 0x8A, 0x02, 0x16, 0x02, 0x57, 0x02, 0x98, 0x0B, 0x1A, 0x1B, 0xBC, 0x2C, 0x3E, 0x23, 0xBC, 0x0A, 0xF9, 0x02, 0x57, 0x02, 0x16, 0x02, 0x15, 0x02, 0x01, 0xF5, 0x81, 0x01, 0xF6, 0x02, 0x16, 0x02, 0x01, 0xF6, 0x06, 0x01, 0xD6, 0x82, 0x01, 0xF6, + 0x01, 0xF7, 0x01, 0xF6, 0x02, 0x01, 0xD6, 0x01, 0x01, 0xD7, 0x81, 0x01, 0xF7, 0x01, 0xD6, 0x06, 0x01, 0xD7, 0x02, 0x01, 0xB7, 0x03, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x83, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x80, 0x01, 0xB6, 0x01, 0x01, 0xD7, 0x02, 0x01, 0xD6, 0x88, 0x01, 0xF6, 0x02, 0x17, 0x02, 0x37, 0x02, 0x98, 0x13, 0x5A, 0x2C, 0x3E, 0x34, 0x5F, 0x1B, 0x9C, 0x02, 0x78, 0x02, 0x02, 0x16, 0x01, 0x01, 0xF6, 0x01, 0x02, 0x16, 0x81, 0x01, 0xF6, 0x01, 0xF7, 0x01, 0x01, 0xF6, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x81, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x82, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x04, 0x01, 0xF7, 0x81, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x81, 0x01, 0xF7, 0x01, 0xD7, 0x08, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xD6, 0x03, 0x01, 0xF7, 0x89, 0x02, 0x17, 0x02, 0x37, 0x02, 0x98, 0x23, 0xBC, 0x2C, 0x1E, 0x23, 0xDD, 0x02, 0xDA, 0x02, 0x78, 0x02, 0x58, 0x02, 0x37, 0x04, 0x02, 0x17, 0x80, 0x01, 0xF6, 0x02, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x03, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x14, 0x01, 0xF7, 0x81, 0x01, 0xD7, 0x01, 0xF8, 0x03, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x03, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x02, 0x01, 0xF7, 0x03, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x86, 0x02, 0x17, 0x02, 0x37, 0x02, 0x98, 0x2C, 0x1E, 0x34, 0x3F, 0x13, + 0x3B, 0x02, 0x57, 0x01, 0x02, 0x37, 0x02, 0x02, 0x17, 0x0F, 0x01, 0xF7, 0x02, 0x02, 0x18, 0x81, 0x01, 0xF7, 0x01, 0xF8, 0x02, 0x01, 0xF7, 0x80, 0x01, 0xF8, 0x08, 0x01, 0xF7, 0x80, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x01, 0x01, 0xF8, 0x83, 0x01, 0xF7, 0x01, 0xF8, 0x01, 0xF7, 0x02, 0x18, 0x02, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x01, 0x02, 0x18, 0x80, 0x02, 0x17, 0x02, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x87, 0x02, 0x37, 0x02, 0xB9, 0x34, 0x9F, 0x0B, 0x3B, 0x02, 0x99, 0x02, 0x78, 0x02, 0x58, 0x02, 0x37, 0x01, 0x02, 0x17, 0x04, 0x01, 0xF7, 0x81, 0x02, 0x17, 0x02, 0x18, 0x01, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x03, 0x01, 0xF7, 0x80, 0x01, 0xF8, 0x15, 0x01, 0xF7, 0x01, 0x01, 0xF8, 0x82, 0x01, 0xF7, 0x02, 0x17, 0x02, 0x18, 0x02, 0x01, 0xF7, 0x81, 0x02, 0x18, 0x01, 0xF7, 0x03, 0x02, 0x18, 0x01, 0x02, 0x17, 0x86, 0x02, 0x58, 0x02, 0x37, 0x0B, 0x1A, 0x2C, 0x1E, 0x02, 0xB9, 0x02, 0x38, 0x02, 0x17, 0x02, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x81, 0x01, 0xF7, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x02, 0x01, 0xF8, 0x80, 0x01, 0xF7, 0x01, 0x02, 0x18, 0x0C, 0x01, 0xF8, 0x80, 0x01, 0xF7, 0x01, 0x01, 0xF8, 0x80, 0x01, 0xF7, 0x05, 0x01, 0xF8, 0x81, 0x01, 0xF7, 0x02, 0x18, 0x01, 0x01, 0xF8, 0x80, 0x01, 0xF7, 0x02, 0x01, 0xF8, 0x02, 0x01, 0xF7, 0x02, 0x02, 0x18, 0x81, 0x01, 0xF7, 0x02, 0x18, 0x03, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x85, 0x01, 0xF6, 0x02, 0x17, 0x01, 0xF6, 0x23, 0xDD, 0x1B, 0x9C, 0x02, 0x57, 0x09, 0x02, 0x17, 0x03, 0x01, 0xF7, 0x80, 0x02, + 0x17, 0x03, 0x01, 0xF7, 0x80, 0x02, 0x18, 0x02, 0x01, 0xF7, 0x80, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x80, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x80, 0x02, 0x18, 0x02, 0x01, 0xF7, 0x01, 0x01, 0xF8, 0x08, 0x01, 0xF7, 0x80, 0x02, 0x18, 0x03, 0x01, 0xF7, 0x81, 0x02, 0x17, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x03, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x80, 0x01, 0xF6, 0x01, 0x02, 0x17, 0x84, 0x02, 0x57, 0x02, 0x78, 0x34, 0x5F, 0x0B, 0x1A, 0x02, 0x16, 0x04, 0x01, 0xF7, 0x81, 0x02, 0x17, 0x01, 0xF7, 0x03, 0x02, 0x17, 0x05, 0x01, 0xF7, 0x80, 0x02, 0x18, 0x09, 0x01, 0xF7, 0x01, 0x01, 0xF8, 0x04, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x08, 0x01, 0xF7, 0x82, 0x02, 0x17, 0x01, 0xF7, 0x02, 0x17, 0x06, 0x01, 0xF7, 0x81, 0x02, 0x17, 0x01, 0xF7, 0x03, 0x02, 0x17, 0x88, 0x02, 0x37, 0x02, 0x57, 0x02, 0x77, 0x1B, 0x7B, 0x3C, 0x9F, 0x02, 0xD9, 0x02, 0x37, 0x02, 0x17, 0x01, 0xF6, 0x01, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x81, 0x02, 0x18, 0x01, 0xF7, 0x01, 0x01, 0xF8, 0x02, 0x01, 0xF7, 0x83, 0x02, 0x18, 0x02, 0x17, 0x01, 0xF7, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x01, 0x02, 0x18, 0x80, 0x02, 0x17, 0x09, 0x02, 0x18, 0x80, 0x01, 0xF8, 0x01, 0x02, 0x18, 0x87, 0x02, 0x17, 0x02, 0x38, 0x0A, 0x38, 0x02, 0x17, 0x01, 0xF7, 0x0A, 0x18, 0x09, 0xF7, 0x0A, 0x18, 0x01, 0x12, 0x38, 0x01, 0x1A, 0x18, 0x87, 0x21, 0xF7, 0x3A, 0x17, 0x52, 0x37, 0x6A, 0x37, 0x8A, 0x57, 0x9A, 0x36, 0x99, 0xF5, 0xA1, 0xD4, 0x01, 0xA9, 0xD4, 0x02, 0xA9, 0xD3, 0x82, 0xA9, 0xB3, 0xA9, + 0xF3, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x01, 0xB1, 0xF3, 0x80, 0xA9, 0xD3, 0x02, 0xA9, 0xF3, 0x02, 0xA9, 0xD3, 0x8A, 0xA1, 0xD3, 0xA1, 0xF4, 0xAA, 0x35, 0x9A, 0x35, 0x92, 0x15, 0x8A, 0x57, 0x72, 0x37, 0x31, 0x12, 0x32, 0x38, 0x09, 0xB6, 0x01, 0xD6, 0x03, 0x01, 0xF7, 0x01, 0x01, 0xF8, 0x81, 0x01, 0xF7, 0x01, 0xF8, 0x06, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x81, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0x01, 0xD6, 0x02, 0x01, 0xF7, 0x80, 0x01, 0xF6, 0x02, 0x02, 0x17, 0x87, 0x02, 0x37, 0x02, 0x78, 0x02, 0x98, 0x23, 0xBD, 0x2B, 0xFD, 0x13, 0x3B, 0x02, 0x78, 0x02, 0x37, 0x01, 0x02, 0x17, 0x80, 0x01, 0xF7, 0x01, 0x01, 0xF6, 0x81, 0x01, 0xF7, 0x01, 0xF6, 0x05, 0x01, 0xF7, 0x03, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x03, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x01, 0x01, 0xD6, 0x09, 0x01, 0xF7, 0x03, 0x01, 0xD7, 0x03, 0x01, 0xF7, 0x81, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0x01, 0xF6, 0x01, 0x02, 0x16, 0x01, 0x01, 0xF6, 0x89, 0x02, 0x16, 0x02, 0x36, 0x02, 0x77, 0x13, 0x1A, 0x2C, 0x1E, 0x23, 0xDD, 0x13, 0x1A, 0x02, 0x78, 0x02, 0x37, 0x01, 0xF6, 0x05, 0x01, 0xD6, 0x01, 0x01, 0xB6, 0x81, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x05, 0x01, 0xD7, 0x81, 0x01, 0xD6, 0x01, 0xB6, 0x02, 0x01, 0xD7, 0x82, 0x01, 0xD6, 0x01, 0xD7, 0x01, 0xD6, 0x02, 0x01, 0xD7, 0x82, + 0x01, 0xB6, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0x01, 0xD7, 0x02, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x05, 0x01, 0xD6, 0x82, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0xF6, 0x03, 0x01, 0xD6, 0x80, 0x01, 0xD5, 0x02, 0x01, 0xF6, 0x88, 0x02, 0x16, 0x0A, 0xB9, 0x23, 0x7B, 0x2B, 0xFD, 0x1B, 0x7B, 0x0A, 0xD9, 0x02, 0x57, 0x02, 0x16, 0x01, 0xF6, 0x01, 0x01, 0xD6, 0x81, 0x01, 0xB5, 0x01, 0xD6, 0x01, 0x01, 0xB6, 0x01, 0x01, 0x95, 0x01, 0x01, 0xB6, 0x82, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0xD6, 0x07, 0x01, 0xB6, 0x80, 0x01, 0xD6, 0x01, 0x01, 0xB6, 0x01, 0x01, 0xD7, 0x81, 0x01, 0xB6, 0x01, 0xD6, 0x03, 0x01, 0xB6, 0x80, 0x01, 0xD6, 0x07, 0x01, 0xB6, 0x02, 0x01, 0xD6, 0x80, 0x01, 0xF6, 0x07, 0x01, 0xD6, 0x01, 0x01, 0xD5, 0x01, 0x01, 0xF5, 0x8C, 0x01, 0xF6, 0x02, 0x16, 0x02, 0x57, 0x1B, 0x5B, 0x23, 0xBC, 0x23, 0xDC, 0x13, 0x7B, 0x02, 0xD8, 0x02, 0x77, 0x02, 0x37, 0x02, 0x16, 0x01, 0xF6, 0x01, 0xD5, 0x04, 0x01, 0xB5, 0x08, 0x01, 0xB6, 0x80, 0x01, 0xD6, 0x01, 0x01, 0xB6, 0x81, 0x01, 0xD6, 0x01, 0xB6, 0x04, 0x01, 0x96, 0x01, 0x01, 0x95, 0x03, 0x01, 0x96, 0x07, 0x01, 0xB6, 0x02, 0x01, 0x96, 0x80, 0x01, 0xB6, 0x01, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x01, 0x01, 0x95, 0x80, 0x01, 0xB5, 0x03, 0x01, 0xD6, 0x03, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x02, 0x02, 0x17, 0x8A, 0x02, 0x37, 0x02, 0x78, 0x2B, 0xDD, 0x3C, 0x9F, 0x23, 0xBC, 0x0B, 0x3A, 0x02, 0xB8, 0x02, 0x57, 0x02, 0x16, 0x01, 0xF5, 0x01, 0xD5, 0x01, 0x01, 0xD4, 0x02, 0x01, 0xD5, 0x81, 0x01, 0xB5, 0x01, 0xD5, 0x0E, 0x01, + 0xD6, 0x80, 0x01, 0xB6, 0x03, 0x01, 0xD6, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xB6, 0x80, 0x01, 0xD6, 0x05, 0x01, 0xB6, 0x04, 0x01, 0xD6, 0x81, 0x01, 0xB6, 0x01, 0xD6, 0x05, 0x01, 0xB6, 0x80, 0x01, 0x95, 0x02, 0x01, 0xD6, 0x8A, 0x01, 0xF6, 0x02, 0x16, 0x02, 0x37, 0x02, 0x77, 0x13, 0x5A, 0x2C, 0x1D, 0x23, 0xFC, 0x13, 0x9B, 0x02, 0xF9, 0x02, 0x98, 0x02, 0x36, 0x01, 0x02, 0x16, 0x80, 0x01, 0xF5, 0x01, 0x01, 0xD5, 0x01, 0x01, 0xF5, 0x81, 0x01, 0xF6, 0x02, 0x16, 0x01, 0x01, 0xF6, 0x04, 0x01, 0xD6, 0x80, 0x01, 0xD5, 0x04, 0x01, 0xF6, 0x0B, 0x01, 0xD6, 0x05, 0x01, 0xB6, 0x81, 0x01, 0xD6, 0x01, 0xB6, 0x02, 0x01, 0xD6, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x84, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0xD7, 0x02, 0x01, 0xD6, 0x03, 0x01, 0xF6, 0x88, 0x02, 0x16, 0x13, 0x1A, 0x3C, 0x7F, 0x34, 0x7F, 0x1B, 0x9C, 0x02, 0xD9, 0x02, 0x57, 0x02, 0x37, 0x02, 0x16, 0x01, 0x01, 0xF6, 0x02, 0x01, 0xD6, 0x82, 0x02, 0x16, 0x01, 0xF6, 0x01, 0xF7, 0x01, 0x01, 0xF6, 0x05, 0x01, 0xD6, 0x02, 0x01, 0xF6, 0x04, 0x01, 0xD6, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xF7, 0x03, 0x01, 0xD7, 0x80, 0x01, 0xB6, 0x04, 0x01, 0xD6, 0x84, 0x01, 0xF6, 0x01, 0xF7, 0x01, 0xF6, 0x01, 0xF7, 0x01, 0xF6, 0x04, 0x01, 0xF7, 0x81, 0x01, 0xD6, 0x01, 0xF6, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xF6, 0x03, 0x01, 0xD6, 0x87, 0x01, 0xF6, 0x02, 0x17, 0x02, 0x37, 0x0A, 0x99, 0x23, 0xBC, 0x2B, 0xFE, 0x13, 0x5B, 0x02, 0x99, 0x01, 0x02, 0x58, 0x81, 0x02, 0x37, 0x02, 0x17, + 0x01, 0x02, 0x16, 0x03, 0x01, 0xF6, 0x03, 0x01, 0xF7, 0x84, 0x01, 0xD6, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xD6, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xF6, 0x06, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x81, 0x01, 0xF6, 0x01, 0xD6, 0x05, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x05, 0x01, 0xF7, 0x81, 0x01, 0xF6, 0x01, 0xF7, 0x03, 0x02, 0x17, 0x02, 0x01, 0xF6, 0x81, 0x02, 0x37, 0x02, 0x78, 0x01, 0x1B, 0x9C, 0x81, 0x02, 0xD9, 0x02, 0x57, 0x01, 0x02, 0x37, 0x01, 0x02, 0x17, 0x01, 0x01, 0xF6, 0x01, 0x01, 0xF7, 0x81, 0x01, 0xD6, 0x01, 0xF6, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x80, 0x01, 0xD6, 0x01, 0x01, 0xD7, 0x81, 0x01, 0xD6, 0x01, 0xD7, 0x14, 0x01, 0xF7, 0x80, 0x01, 0xD6, 0x01, 0x01, 0xD7, 0x08, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x04, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x88, 0x02, 0x37, 0x02, 0x57, 0x1B, 0xBC, 0x13, 0x7B, 0x02, 0xD9, 0x02, 0xB9, 0x02, 0x78, 0x02, 0x58, 0x02, 0x17, 0x02, 0x01, 0xF7, 0x81, 0x01, 0xD6, 0x01, 0xD7, 0x0E, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x04, 0x01, 0xF7, 0x80, 0x01, 0xD6, 0x09, 0x01, 0xF7, 0x80, 0x01, 0xD6, 0x10, 0x01, 0xF7, 0x03, 0x02, 0x17, 0x81, 0x02, 0x37, 0x02, 0x57, 0x01, 0x13, 0x5B, 0x82, 0x02, 0x58, 0x02, 0x37, 0x01, 0xF6, 0x01, 0x02, 0x17, 0x85, 0x01, 0xF7, 0x01, 0xF6, 0x02, 0x17, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x03, 0x01, 0xF7, 0x14, 0x01, 0xD7, 0x05, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xD7, + 0x08, 0x01, 0xF7, 0x06, 0x01, 0xF6, 0x83, 0x13, 0x3A, 0x13, 0x5B, 0x02, 0x57, 0x02, 0x37, 0x01, 0x02, 0x17, 0x02, 0x01, 0xF7, 0x01, 0x01, 0xF6, 0x81, 0x01, 0xD6, 0x01, 0xF6, 0x01, 0x01, 0xD6, 0x01, 0x01, 0xF6, 0x05, 0x01, 0xF7, 0x82, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xD7, 0x0C, 0x01, 0xF7, 0x83, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x82, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xD7, 0x04, 0x01, 0xF7, 0x01, 0x01, 0xF6, 0x80, 0x01, 0xD6, 0x06, 0x01, 0xF6, 0x87, 0x02, 0x16, 0x02, 0x37, 0x02, 0x36, 0x0B, 0x3A, 0x1B, 0xBC, 0x01, 0xD5, 0x01, 0xF6, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x81, 0x01, 0xF7, 0x01, 0xF6, 0x01, 0x01, 0xF7, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x04, 0x01, 0xD7, 0x80, 0x01, 0xD6, 0x02, 0x01, 0xD7, 0x81, 0x01, 0xF7, 0x01, 0xD7, 0x16, 0x01, 0xF7, 0x80, 0x01, 0xD6, 0x02, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x88, 0x02, 0x37, 0x02, 0x17, 0x02, 0x37, 0x02, 0x77, 0x1B, 0xBC, 0x2B, 0xFD, 0x02, 0x57, 0x02, 0x16, 0x01, 0xF6, 0x02, 0x02, 0x17, 0x03, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x09, 0x01, 0xF7, 0x07, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x03, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x81, 0x01, 0xF7, 0x02, 0x17, 0x03, 0x01, 0xF7, 0x95, 0x01, 0xD7, 0x0A, 0x17, 0x09, 0xF7, 0x11, 0xF7, 0x19, 0xD6, 0x29, 0xB6, 0x31, 0x95, 0x51, 0x95, 0x7A, 0x36, 0x92, 0x56, 0x99, 0xF5, 0xA1, 0xD4, 0xA9, 0xD4, 0xA9, 0xF4, 0xA9, 0xD4, 0xA9, + 0xF4, 0xA9, 0xD3, 0xB1, 0xF4, 0xA9, 0xD3, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0x02, 0xA9, 0xD3, 0x88, 0xB1, 0xF3, 0xA9, 0xD3, 0xB1, 0xF4, 0xA9, 0xD3, 0xA9, 0xB3, 0xA9, 0xD3, 0xA9, 0xF3, 0xA9, 0xD3, 0xA1, 0xF3, 0x01, 0xA1, 0xF4, 0x86, 0xA2, 0x35, 0x92, 0x15, 0x8A, 0x36, 0x7A, 0x57, 0x31, 0x12, 0x29, 0xD6, 0x01, 0x74, 0x02, 0x01, 0xD6, 0x80, 0x01, 0xF7, 0x07, 0x01, 0xD7, 0x01, 0x01, 0xD6, 0x02, 0x01, 0xD7, 0x80, 0x01, 0xD6, 0x03, 0x01, 0xD7, 0x82, 0x01, 0xD6, 0x01, 0xD7, 0x01, 0xF7, 0x08, 0x01, 0xD6, 0x81, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0x01, 0xF6, 0x81, 0x02, 0x16, 0x02, 0x17, 0x01, 0x02, 0x37, 0x87, 0x02, 0x57, 0x0B, 0x1A, 0x23, 0xDD, 0x1B, 0x7B, 0x0A, 0xD9, 0x02, 0x78, 0x02, 0x37, 0x02, 0x16, 0x05, 0x01, 0xF6, 0x04, 0x01, 0xD6, 0x80, 0x01, 0xF6, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xF7, 0x08, 0x01, 0xD6, 0x80, 0x01, 0xF6, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x03, 0x01, 0xD6, 0x80, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x82, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0xD7, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x82, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0xF7, 0x07, 0x01, 0xF6, 0x8B, 0x01, 0xD5, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0xF6, 0x02, 0x36, 0x02, 0xB8, 0x13, 0x9B, 0x1B, 0xBC, 0x1B, 0x7C, 0x12, 0xFA, 0x02, 0x57, 0x02, 0x16, 0x02, 0x01, 0xF6, 0x81, 0x01, 0xD6, 0x01, 0xB5, 0x02, 0x01, 0xB6, 0x03, 0x01, 0xD6, 0x01, 0x01, 0xF6, 0x05, 0x01, 0xD6, 0x81, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0x01, 0xB6, 0x03, 0x01, 0xD6, 0x06, 0x01, 0xB6, 0x02, 0x01, + 0xD6, 0x02, 0x01, 0xB6, 0x01, 0x01, 0xB5, 0x01, 0x01, 0xD6, 0x01, 0x01, 0xD5, 0x81, 0x01, 0xD6, 0x01, 0xB5, 0x01, 0x01, 0xD5, 0x01, 0x01, 0xD6, 0x81, 0x01, 0xD5, 0x01, 0xB5, 0x01, 0x01, 0xD5, 0x01, 0x01, 0xF5, 0x89, 0x02, 0x36, 0x02, 0x77, 0x0B, 0x19, 0x1B, 0x9B, 0x23, 0xFD, 0x23, 0x9C, 0x13, 0x3A, 0x02, 0x77, 0x02, 0x16, 0x01, 0xF6, 0x02, 0x01, 0xD6, 0x01, 0x01, 0xB5, 0x81, 0x01, 0x95, 0x01, 0xB5, 0x03, 0x01, 0xD6, 0x01, 0x01, 0xB6, 0x80, 0x01, 0xB5, 0x01, 0x01, 0x95, 0x82, 0x01, 0x96, 0x01, 0xB6, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x80, 0x01, 0xD6, 0x08, 0x01, 0xB6, 0x80, 0x01, 0x96, 0x05, 0x01, 0x95, 0x01, 0x01, 0xB5, 0x80, 0x01, 0xB6, 0x06, 0x01, 0xD6, 0x81, 0x01, 0xD5, 0x01, 0xB5, 0x02, 0x01, 0xD5, 0x01, 0x01, 0xB5, 0x8D, 0x01, 0xD5, 0x01, 0xF5, 0x02, 0x15, 0x02, 0x36, 0x02, 0x97, 0x13, 0x7A, 0x1B, 0xDC, 0x2C, 0x1D, 0x23, 0xFC, 0x13, 0x3A, 0x02, 0x78, 0x02, 0x36, 0x02, 0x16, 0x01, 0xF5, 0x02, 0x01, 0xD5, 0x03, 0x01, 0xB5, 0x80, 0x01, 0xD5, 0x04, 0x01, 0xB5, 0x83, 0x01, 0xB6, 0x01, 0xD6, 0x23, 0x1B, 0x1A, 0xFB, 0x01, 0x1A, 0xFA, 0x82, 0x1A, 0xBA, 0x1A, 0xDA, 0x12, 0xBA, 0x04, 0x1A, 0xDA, 0x80, 0x1A, 0xB9, 0x02, 0x1A, 0xDA, 0x8C, 0x12, 0xDA, 0x1A, 0xFA, 0x12, 0xB9, 0x1A, 0xDA, 0x12, 0xB9, 0x1A, 0xFA, 0x1A, 0xDA, 0x12, 0xBA, 0x1A, 0xDA, 0x1A, 0xFA, 0x1A, 0xDA, 0x1A, 0xFA, 0x1A, 0xDA, 0x01, 0x1A, 0xFA, 0x84, 0x23, 0x1B, 0x1B, 0x1A, 0x1A, 0xFA, 0x1A, 0xF9, 0x1A, 0xFA, 0x01, 0x12, 0xD9, 0x8F, 0x12, 0xB9, 0x12, 0xD9, 0x12, + 0xB9, 0x1A, 0xFA, 0x12, 0xDA, 0x12, 0xD9, 0x12, 0xFA, 0x23, 0x5B, 0x33, 0xDD, 0x34, 0x1E, 0x2B, 0xFD, 0x23, 0x9C, 0x1B, 0x7B, 0x13, 0x5B, 0x13, 0x3A, 0x13, 0x5A, 0x01, 0x1B, 0x3A, 0x81, 0x1B, 0x5A, 0x1B, 0x3A, 0x02, 0x23, 0x5B, 0x80, 0x23, 0x3B, 0x01, 0x2B, 0x5B, 0x01, 0x23, 0x1A, 0x82, 0x1B, 0x1A, 0x23, 0x1B, 0x1B, 0x1A, 0x01, 0x23, 0x3B, 0x85, 0x23, 0x5C, 0x23, 0x3B, 0x23, 0x5B, 0x1B, 0x1A, 0x1B, 0x1B, 0x1B, 0x1A, 0x01, 0x1B, 0x1B, 0x80, 0x23, 0x3B, 0x03, 0x1A, 0xFA, 0x81, 0x1A, 0xDA, 0x22, 0xFB, 0x02, 0x1A, 0xFA, 0x81, 0x22, 0xFB, 0x1A, 0xDA, 0x02, 0x1A, 0xFA, 0x80, 0x1A, 0xDA, 0x01, 0x1A, 0xFA, 0x80, 0x1B, 0x1A, 0x02, 0x1A, 0xFA, 0x88, 0x1B, 0x1A, 0x1A, 0xFA, 0x23, 0x1B, 0x1A, 0xFA, 0x1A, 0xDA, 0x1A, 0xFA, 0x23, 0x3B, 0x1B, 0x1A, 0x1B, 0x3A, 0x01, 0x12, 0xD9, 0x83, 0x13, 0x3A, 0x1B, 0x7B, 0x2B, 0xFD, 0x23, 0xFD, 0x02, 0x23, 0xDC, 0x81, 0x1B, 0xBC, 0x13, 0x5B, 0x01, 0x13, 0x3A, 0x84, 0x13, 0x1A, 0x1B, 0x1A, 0x1B, 0x3A, 0x1B, 0x5B, 0x23, 0x5B, 0x01, 0x2B, 0x9C, 0x83, 0x1B, 0x1A, 0x1A, 0xFA, 0x12, 0xFA, 0x1B, 0x1A, 0x01, 0x23, 0x3B, 0x01, 0x1B, 0x1A, 0x80, 0x1A, 0xFA, 0x01, 0x1B, 0x1A, 0x80, 0x1B, 0x3B, 0x02, 0x1B, 0x1A, 0x81, 0x23, 0x1B, 0x1A, 0xFA, 0x04, 0x1B, 0x1A, 0x81, 0x1A, 0xFA, 0x1B, 0x1B, 0x02, 0x1A, 0xFA, 0x87, 0x22, 0xFB, 0x22, 0xFA, 0x1A, 0xDA, 0x22, 0xFB, 0x23, 0x1B, 0x22, 0xFB, 0x1A, 0xFB, 0x1B, 0x1B, 0x02, 0x23, 0x3B, 0x81, 0x23, 0x5C, 0x23, 0x7C, 0x01, 0x23, 0x5B, 0x01, 0x1B, 0x3B, 0x81, 0x1A, 0xFA, + 0x1B, 0x1B, 0x01, 0x1B, 0x1A, 0x86, 0x12, 0xFA, 0x13, 0x1A, 0x12, 0xFA, 0x1B, 0x7B, 0x34, 0x1E, 0x2B, 0xFD, 0x23, 0xBC, 0x01, 0x1B, 0xBC, 0x82, 0x1B, 0x9C, 0x13, 0x5B, 0x13, 0x1A, 0x01, 0x12, 0xFA, 0x01, 0x1B, 0x3B, 0x84, 0x1B, 0x1B, 0x23, 0x3B, 0x1B, 0x1B, 0x1B, 0x3B, 0x1B, 0x1B, 0x01, 0x1B, 0x3B, 0x84, 0x23, 0x5C, 0x23, 0x5B, 0x23, 0x5C, 0x23, 0x3B, 0x1B, 0x3B, 0x04, 0x23, 0x3B, 0x83, 0x23, 0x5C, 0x23, 0x3B, 0x23, 0x5C, 0x23, 0x3B, 0x02, 0x23, 0x5C, 0x81, 0x23, 0x3B, 0x23, 0x3C, 0x02, 0x23, 0x1B, 0x80, 0x23, 0x3B, 0x01, 0x1A, 0xFB, 0x82, 0x1B, 0x1B, 0x23, 0x3B, 0x1B, 0x1B, 0x01, 0x23, 0x3B, 0x85, 0x23, 0x5B, 0x1B, 0x5B, 0x23, 0x7C, 0x1B, 0x3B, 0x23, 0x5C, 0x1B, 0x3B, 0x01, 0x23, 0x5B, 0x92, 0x23, 0x7C, 0x23, 0x5C, 0x23, 0x5B, 0x1B, 0x3B, 0x23, 0x5B, 0x1B, 0x3B, 0x1B, 0x1B, 0x1B, 0x3B, 0x23, 0x7C, 0x12, 0xF9, 0x0A, 0xD9, 0x1B, 0x5B, 0x23, 0xBD, 0x2C, 0x1E, 0x23, 0xDD, 0x23, 0xBD, 0x0B, 0x1A, 0x02, 0x99, 0x0A, 0xD9, 0x01, 0x1B, 0x3B, 0x01, 0x12, 0xFA, 0x01, 0x12, 0xDA, 0x01, 0x1B, 0x3B, 0x8C, 0x12, 0xFA, 0x1B, 0x1B, 0x12, 0xBA, 0x12, 0xDA, 0x1B, 0x1B, 0x23, 0x3B, 0x1A, 0xFA, 0x1A, 0xFB, 0x1B, 0x1B, 0x23, 0x1B, 0x1B, 0x1B, 0x23, 0x3C, 0x1B, 0x1B, 0x01, 0x1B, 0x3B, 0x84, 0x23, 0x3B, 0x1B, 0x3B, 0x23, 0x3B, 0x1B, 0x1B, 0x23, 0x5C, 0x01, 0x23, 0x3B, 0x88, 0x1B, 0x1B, 0x1B, 0x3B, 0x1B, 0x1B, 0x23, 0x3B, 0x23, 0x1B, 0x23, 0x5C, 0x23, 0x3B, 0x23, 0x5C, 0x1B, 0x3B, 0x01, 0x23, 0x3B, 0x82, 0x23, 0x5C, 0x1B, 0x1B, 0x23, 0x3B, + 0x01, 0x1B, 0x1B, 0x82, 0x1B, 0x3B, 0x23, 0x7C, 0x23, 0x5B, 0x01, 0x1B, 0x3B, 0x87, 0x23, 0x5B, 0x1B, 0x3B, 0x1B, 0x3A, 0x1B, 0x5B, 0x23, 0x9C, 0x1B, 0x3B, 0x1B, 0x5B, 0x12, 0xFA, 0x01, 0x1B, 0x5B, 0x88, 0x23, 0xBC, 0x2C, 0x3E, 0x23, 0xFD, 0x2B, 0xFD, 0x1B, 0x7B, 0x13, 0x1A, 0x0A, 0xF9, 0x0A, 0xD9, 0x12, 0xFA, 0x01, 0x23, 0x5C, 0x81, 0x12, 0xBA, 0x1A, 0xFB, 0x01, 0x23, 0x5C, 0x02, 0x1B, 0x1B, 0x81, 0x23, 0x3B, 0x1B, 0x3B, 0x03, 0x23, 0x3B, 0x85, 0x23, 0x5C, 0x23, 0x3B, 0x23, 0x5B, 0x23, 0x5C, 0x23, 0x7C, 0x23, 0x3B, 0x02, 0x23, 0x5C, 0x01, 0x23, 0x3B, 0x81, 0x23, 0x5B, 0x23, 0x5C, 0x02, 0x23, 0x3B, 0x02, 0x23, 0x5B, 0x01, 0x23, 0x5C, 0x83, 0x1B, 0x3B, 0x23, 0x5B, 0x23, 0x3B, 0x23, 0x5C, 0x02, 0x23, 0x3B, 0x83, 0x23, 0x5C, 0x1B, 0x3B, 0x23, 0x5C, 0x1B, 0x1B, 0x03, 0x1B, 0x3B, 0x90, 0x23, 0x5C, 0x23, 0x5B, 0x23, 0x5C, 0x1B, 0x3B, 0x1B, 0x5B, 0x13, 0x5B, 0x1B, 0x7B, 0x0A, 0xF9, 0x23, 0xBC, 0x3C, 0xDF, 0x1B, 0xBC, 0x13, 0x7B, 0x1B, 0x7B, 0x13, 0x3B, 0x1B, 0x3B, 0x12, 0xFA, 0x12, 0xDA, 0x01, 0x1B, 0x3B, 0x01, 0x23, 0x5C, 0x01, 0x1B, 0x1B, 0x82, 0x1B, 0x3B, 0x23, 0x5C, 0x1B, 0x3B, 0x01, 0x23, 0x5C, 0x81, 0x23, 0x7C, 0x23, 0x5C, 0x02, 0x23, 0x7C, 0x81, 0x23, 0x5C, 0x23, 0x7C, 0x01, 0x23, 0x5C, 0x81, 0x23, 0x7C, 0x23, 0x5C, 0x02, 0x23, 0x7C, 0x01, 0x2B, 0x7C, 0x07, 0x23, 0x7C, 0x82, 0x2B, 0x7C, 0x23, 0x5B, 0x23, 0x5C, 0x01, 0x23, 0x7C, 0x02, 0x23, 0x5C, 0x80, 0x2B, 0x7C, 0x01, 0x23, 0x7C, 0x85, 0x23, 0x5C, 0x23, 0x7C, 0x1B, + 0x3B, 0x23, 0x5C, 0x1B, 0x3B, 0x23, 0x5C, 0x01, 0x23, 0x7C, 0x81, 0x23, 0x9D, 0x1B, 0x7C, 0x01, 0x13, 0x3B, 0x8E, 0x02, 0xD9, 0x13, 0x5B, 0x3C, 0xBF, 0x13, 0x7B, 0x13, 0x3B, 0x23, 0xBD, 0x2B, 0xDD, 0x23, 0x9C, 0x1B, 0x5C, 0x23, 0x5C, 0x23, 0x7C, 0x2B, 0x9C, 0x23, 0x7C, 0x2B, 0x7C, 0x23, 0x3C, 0x02, 0x23, 0x5C, 0x80, 0x23, 0x3C, 0x01, 0x23, 0x5C, 0x82, 0x23, 0x7D, 0x23, 0x5C, 0x23, 0x7C, 0x06, 0x23, 0x5C, 0x82, 0x23, 0x7C, 0x23, 0x5C, 0x23, 0x7D, 0x02, 0x23, 0x5C, 0x80, 0x23, 0x7C, 0x02, 0x23, 0x5C, 0x81, 0x23, 0x7C, 0x23, 0x5C, 0x07, 0x23, 0x7C, 0x80, 0x23, 0x9D, 0x02, 0x23, 0x7C, 0x80, 0x2B, 0x9C, 0x03, 0x23, 0x7C, 0x89, 0x23, 0x5C, 0x23, 0x7C, 0x1B, 0x5B, 0x23, 0x7C, 0x23, 0x5B, 0x1B, 0x1A, 0x12, 0xF9, 0x12, 0xFA, 0x12, 0xD9, 0x0A, 0xD9, 0x01, 0x2C, 0x1D, 0x84, 0x0A, 0xD9, 0x13, 0x1B, 0x1B, 0x5C, 0x23, 0x5C, 0x1B, 0x3B, 0x01, 0x23, 0x5C, 0x01, 0x23, 0x7C, 0x80, 0x2B, 0x7C, 0x01, 0x23, 0x5C, 0x01, 0x23, 0x7C, 0x80, 0x23, 0x5C, 0x01, 0x23, 0x7C, 0x80, 0x2B, 0x7C, 0x01, 0x23, 0x7C, 0x81, 0x23, 0x7D, 0x2B, 0x7D, 0x02, 0x23, 0x7C, 0x80, 0x23, 0x7D, 0x01, 0x23, 0x7C, 0x01, 0x2B, 0x7C, 0x02, 0x23, 0x7C, 0x80, 0x2B, 0x7D, 0x06, 0x23, 0x7C, 0x85, 0x2B, 0x7C, 0x23, 0x5C, 0x23, 0x7C, 0x23, 0x5C, 0x23, 0x7C, 0x2B, 0x7C, 0x02, 0x23, 0x7C, 0x01, 0x2B, 0x7C, 0x8C, 0x2B, 0x9D, 0x2B, 0x7C, 0x23, 0x7C, 0x2B, 0x9C, 0x23, 0x5B, 0x23, 0x7C, 0x2B, 0x7C, 0x23, 0x7C, 0x23, 0x5B, 0x23, 0x7C, 0x1B, 0x5B, 0x23, 0x5B, 0x23, 0x5C, 0x01, 0x23, + 0x9C, 0x8E, 0x1B, 0x9C, 0x13, 0x7B, 0x34, 0x9F, 0x13, 0x3A, 0x13, 0x1A, 0x1B, 0x5B, 0x13, 0x3B, 0x1B, 0x5B, 0x23, 0x7C, 0x1B, 0x3B, 0x23, 0x7C, 0x1B, 0x3B, 0x23, 0x5C, 0x1B, 0x3C, 0x23, 0x3C, 0x02, 0x23, 0x5C, 0x81, 0x23, 0x7C, 0x23, 0x5C, 0x02, 0x23, 0x7C, 0x02, 0x23, 0x5C, 0x80, 0x23, 0x7C, 0x02, 0x23, 0x5C, 0x80, 0x23, 0x7C, 0x05, 0x23, 0x5C, 0x82, 0x23, 0x3B, 0x23, 0x5C, 0x23, 0x3B, 0x05, 0x23, 0x5C, 0x02, 0x23, 0x7C, 0x82, 0x23, 0x5C, 0x23, 0x7C, 0x23, 0x5C, 0x01, 0x23, 0x7C, 0x01, 0x23, 0x5C, 0x84, 0x2B, 0x9D, 0x1B, 0x3B, 0x23, 0x5C, 0x23, 0x7C, 0x23, 0x5B, 0x01, 0x23, 0x5C, 0x80, 0x1B, 0x1B, 0x01, 0x12, 0xFA, 0x86, 0x1B, 0x5B, 0x23, 0x9B, 0x2B, 0xFD, 0x13, 0x7B, 0x34, 0x3E, 0x1B, 0x9B, 0x13, 0x3A, 0x01, 0x1B, 0x7C, 0x85, 0x1B, 0x5B, 0x1B, 0x7C, 0x1B, 0x5C, 0x23, 0x7C, 0x23, 0x5C, 0x23, 0x7C, 0x01, 0x23, 0x5C, 0x02, 0x23, 0x3C, 0x80, 0x23, 0x5C, 0x03, 0x1B, 0x3B, 0x84, 0x1B, 0x5C, 0x23, 0x7C, 0x1B, 0x5B, 0x23, 0x5C, 0x1B, 0x1B, 0x01, 0x1B, 0x3B, 0x80, 0x1B, 0x3C, 0x02, 0x1B, 0x3B, 0x81, 0x23, 0x5C, 0x1B, 0x1B, 0x01, 0x1B, 0x3B, 0x04, 0x23, 0x5C, 0x83, 0x23, 0x5B, 0x23, 0x5C, 0x23, 0x3B, 0x23, 0x5C, 0x01, 0x2B, 0x5C, 0x8B, 0x33, 0x5C, 0x33, 0x7C, 0x33, 0x5B, 0x3B, 0x5C, 0x3B, 0x3B, 0x43, 0x1B, 0x4A, 0xFA, 0x5A, 0xFA, 0x6A, 0xFA, 0x7A, 0x98, 0x92, 0x97, 0x92, 0x15, 0x01, 0xA1, 0xF4, 0x82, 0xA9, 0xD4, 0xA9, 0xD3, 0xB1, 0xF4, 0x01, 0xA9, 0xD3, 0x82, 0xB1, 0xF4, 0xA9, 0xD3, 0xB1, 0xF4, 0x06, 0xA9, 0xD3, 0x91, 0xB1, + 0xD3, 0xA9, 0xD3, 0xA9, 0xB3, 0xB2, 0x14, 0xA9, 0xF3, 0xA1, 0xD3, 0xA1, 0xD4, 0xA2, 0x14, 0xA2, 0x35, 0x92, 0x15, 0x8A, 0x15, 0x82, 0x97, 0x5A, 0x36, 0x84, 0x7F, 0x3B, 0x1A, 0x22, 0xB9, 0x22, 0xFA, 0x23, 0x1B, 0x01, 0x23, 0x3B, 0x82, 0x23, 0x3C, 0x1B, 0x1B, 0x23, 0x3C, 0x01, 0x23, 0x5C, 0x88, 0x23, 0x3B, 0x23, 0x5B, 0x23, 0x5C, 0x23, 0x3B, 0x23, 0x1B, 0x23, 0x5C, 0x23, 0x1B, 0x23, 0x3C, 0x1B, 0x1B, 0x03, 0x23, 0x3B, 0x82, 0x23, 0x5B, 0x1B, 0x1B, 0x23, 0x3C, 0x01, 0x1B, 0x1B, 0x81, 0x1A, 0xFA, 0x1A, 0xFB, 0x01, 0x23, 0x3B, 0x82, 0x12, 0xBA, 0x12, 0xB9, 0x1B, 0x1B, 0x01, 0x23, 0x3B, 0x83, 0x1B, 0x3B, 0x12, 0xD9, 0x0A, 0xD9, 0x12, 0xFA, 0x01, 0x13, 0x3A, 0x89, 0x1B, 0x7B, 0x2C, 0x3E, 0x34, 0x5E, 0x23, 0xBC, 0x1B, 0x7B, 0x13, 0x1A, 0x1B, 0x3B, 0x1B, 0x5B, 0x1B, 0x3B, 0x1B, 0x5B, 0x01, 0x1B, 0x3B, 0x80, 0x23, 0x5B, 0x01, 0x23, 0x7C, 0x02, 0x23, 0x5B, 0x80, 0x23, 0x3B, 0x01, 0x1B, 0x1A, 0x8A, 0x1A, 0xFA, 0x23, 0x1B, 0x1A, 0xFA, 0x23, 0x1B, 0x1A, 0xFA, 0x23, 0x3B, 0x1B, 0x1B, 0x23, 0x3B, 0x1B, 0x1B, 0x23, 0x3B, 0x1B, 0x1A, 0x01, 0x1B, 0x1B, 0x80, 0x23, 0x1B, 0x01, 0x1B, 0x1B, 0x83, 0x23, 0x1B, 0x23, 0x3B, 0x1A, 0xFA, 0x1B, 0x1B, 0x04, 0x1A, 0xFA, 0x03, 0x23, 0x1B, 0x80, 0x2B, 0x3C, 0x03, 0x1A, 0xFA, 0x80, 0x1B, 0x1A, 0x01, 0x1B, 0x1B, 0x82, 0x23, 0x3B, 0x1A, 0xFA, 0x12, 0xDA, 0x01, 0x1A, 0xFA, 0x01, 0x1B, 0x3B, 0x92, 0x13, 0x1A, 0x0A, 0xF9, 0x1B, 0x7B, 0x23, 0xDC, 0x2C, 0x1D, 0x2C, 0x3E, 0x2C, 0x1D, 0x2B, 0xFD, 0x13, 0x3A, + 0x13, 0x1A, 0x12, 0xF9, 0x13, 0x1A, 0x1A, 0xFA, 0x1A, 0xDA, 0x12, 0xDA, 0x1A, 0xDA, 0x23, 0x1B, 0x23, 0x3B, 0x1B, 0x1B, 0x03, 0x23, 0x3B, 0x88, 0x23, 0x5B, 0x1B, 0x1B, 0x1B, 0x3B, 0x1A, 0xFA, 0x1B, 0x1B, 0x1A, 0xFA, 0x1B, 0x1B, 0x1A, 0xFA, 0x1B, 0x1B, 0x01, 0x1A, 0xFA, 0x84, 0x1B, 0x1B, 0x23, 0x5B, 0x1A, 0xFA, 0x1B, 0x1B, 0x1A, 0xFA, 0x01, 0x1B, 0x1B, 0x81, 0x23, 0x1B, 0x1A, 0xFA, 0x01, 0x23, 0x1B, 0x84, 0x23, 0x3B, 0x1B, 0x1B, 0x23, 0x1B, 0x1B, 0x1A, 0x23, 0x1B, 0x01, 0x23, 0x3B, 0x81, 0x1B, 0x1B, 0x23, 0x1B, 0x01, 0x1A, 0xFA, 0x82, 0x1A, 0xDA, 0x1A, 0xFA, 0x1A, 0xDA, 0x01, 0x1A, 0xFA, 0x88, 0x1B, 0x1A, 0x23, 0x3B, 0x23, 0x5B, 0x23, 0x3B, 0x23, 0x5B, 0x1B, 0x5A, 0x1B, 0x7B, 0x23, 0x9C, 0x23, 0xBC, 0x01, 0x23, 0xDC, 0x81, 0x23, 0xFD, 0x2C, 0x1D, 0x01, 0x34, 0x1D, 0x82, 0x23, 0x7B, 0x1B, 0x3A, 0x0A, 0x98, 0x01, 0x12, 0xD9, 0x80, 0x12, 0xDA, 0x01, 0x1A, 0xDA, 0x01, 0x1B, 0x1B, 0x01, 0x23, 0x3B, 0x83, 0x1B, 0x1B, 0x23, 0x1B, 0x1A, 0xFA, 0x1B, 0x1B, 0x03, 0x23, 0x1B, 0x86, 0x1A, 0xDA, 0x1A, 0xFA, 0x1A, 0xDA, 0x1A, 0xFA, 0x1B, 0x1B, 0x1B, 0x3B, 0x1A, 0xFA, 0x02, 0x1B, 0x1B, 0x01, 0x23, 0x1B, 0x87, 0x1A, 0xDA, 0x23, 0x1B, 0x1A, 0xB9, 0x1A, 0xDA, 0x1A, 0xB9, 0x1A, 0xDA, 0x1A, 0xFA, 0x23, 0x1A, 0x01, 0x1A, 0xB9, 0x82, 0x12, 0x99, 0x12, 0xB9, 0x12, 0x99, 0x01, 0x12, 0xB9, 0x80, 0x12, 0xD9, 0x01, 0x1A, 0xDA, 0x80, 0x1A, 0xD9, 0x01, 0x12, 0xB9, 0x83, 0x12, 0xD9, 0x12, 0xB9, 0x12, 0xD9, 0x1A, 0xF9, 0x01, 0x1B, 0x1A, 0x8A, 0x13, + 0x3A, 0x1B, 0x7B, 0x1B, 0x9B, 0x13, 0x9B, 0x13, 0x9A, 0x1B, 0xBB, 0x23, 0xDC, 0x23, 0xBC, 0x2B, 0xBC, 0x1B, 0x5A, 0x1B, 0x19, 0x05, 0x0A, 0x77, 0x81, 0x0A, 0x78, 0x0A, 0x77, 0x01, 0x0A, 0x98, 0x02, 0x12, 0xB8, 0x80, 0x12, 0x98, 0x01, 0x12, 0xB9, 0x85, 0x23, 0x1B, 0x1A, 0xDA, 0x1A, 0xFB, 0x23, 0x1B, 0x2B, 0x5C, 0x23, 0x3B, 0x01, 0x2B, 0x7C, 0x83, 0x33, 0x9D, 0x2B, 0x7C, 0x33, 0x9D, 0x33, 0x7C, 0x03, 0x33, 0x9D, 0x01, 0x2B, 0x7C, 0x80, 0x2B, 0x7D, 0x01, 0x2B, 0x7C, 0x82, 0x2B, 0x9C, 0x33, 0xBD, 0x33, 0x9D, 0x02, 0x33, 0xBD, 0x94, 0x33, 0x7C, 0x2B, 0x7C, 0x2B, 0x5C, 0x2B, 0x5B, 0x2B, 0x7C, 0x23, 0x7B, 0x23, 0x5B, 0x1B, 0x5A, 0x23, 0x5B, 0x23, 0x7B, 0x2B, 0x9C, 0x23, 0x9C, 0x2B, 0x9C, 0x23, 0x7B, 0x23, 0x5B, 0x2B, 0x7C, 0x33, 0xBD, 0x33, 0xFD, 0x33, 0xBD, 0x2B, 0x9C, 0x1B, 0x3B, 0x01, 0x12, 0xF9, 0x81, 0x13, 0x1A, 0x12, 0xFA, 0x01, 0x1B, 0x3A, 0x80, 0x13, 0x1A, 0x01, 0x1B, 0x3A, 0x02, 0x1B, 0x1A, 0x02, 0x23, 0x3B, 0x81, 0x23, 0x1A, 0x23, 0x1B, 0x03, 0x23, 0x3B, 0x85, 0x1B, 0x1A, 0x23, 0x5B, 0x23, 0x3B, 0x23, 0x5B, 0x23, 0x3B, 0x23, 0x5C, 0x02, 0x23, 0x5B, 0x84, 0x2B, 0x9C, 0x2B, 0x7C, 0x2B, 0x9D, 0x2B, 0x7C, 0x33, 0x7C, 0x01, 0x2B, 0x7C, 0x85, 0x2B, 0x5C, 0x2B, 0x7C, 0x2B, 0x5C, 0x33, 0x7C, 0x2B, 0x5C, 0x33, 0x7D, 0x01, 0x2B, 0x7C, 0x81, 0x2B, 0x9C, 0x33, 0xBD, 0x01, 0x2B, 0x7C, 0x80, 0x23, 0x5B, 0x01, 0x2B, 0x7C, 0x84, 0x23, 0x7C, 0x2B, 0x7C, 0x23, 0x5C, 0x2B, 0x7C, 0x23, 0x5B, 0x01, 0x2B, 0x7C, 0x88, 0x2B, 0x9C, 0x23, + 0x7C, 0x1B, 0x3A, 0x13, 0x1A, 0x2B, 0xBC, 0x34, 0x1D, 0x2B, 0xFD, 0x23, 0xBC, 0x1B, 0x9B, 0x01, 0x13, 0x3A, 0x81, 0x1B, 0x5B, 0x13, 0x3A, 0x01, 0x1B, 0x5B, 0x03, 0x1B, 0x3B, 0x83, 0x23, 0x5C, 0x23, 0x7C, 0x23, 0x5C, 0x1B, 0x1B, 0x01, 0x23, 0x7C, 0x80, 0x23, 0x5B, 0x01, 0x2B, 0x9C, 0x82, 0x2B, 0x7C, 0x2B, 0x9C, 0x23, 0x5C, 0x02, 0x2B, 0x7C, 0x87, 0x23, 0x5B, 0x2B, 0x7C, 0x2B, 0x5C, 0x2B, 0x7C, 0x2B, 0x5C, 0x2B, 0x7C, 0x2B, 0x5C, 0x2B, 0x9D, 0x01, 0x2B, 0x9C, 0x84, 0x2B, 0x9D, 0x33, 0x9D, 0x2B, 0x7C, 0x33, 0xBD, 0x2B, 0x7D, 0x02, 0x33, 0x9D, 0x88, 0x33, 0x7D, 0x33, 0x9D, 0x33, 0x7D, 0x33, 0x9D, 0x33, 0x7D, 0x2B, 0x7D, 0x2B, 0x7C, 0x33, 0x9D, 0x2B, 0x7C, 0x03, 0x23, 0x7C, 0x80, 0x23, 0x7B, 0x02, 0x23, 0x7C, 0x86, 0x1B, 0x5B, 0x1B, 0x3B, 0x23, 0x9C, 0x2B, 0xFE, 0x3C, 0x5F, 0x34, 0x1E, 0x1B, 0x7C, 0x01, 0x13, 0x1A, 0x04, 0x1B, 0x5B, 0x01, 0x23, 0x7C, 0x01, 0x23, 0x5C, 0x80, 0x33, 0xBD, 0x01, 0x2B, 0x7D, 0x80, 0x2B, 0x7C, 0x01, 0x2B, 0x7D, 0x82, 0x2B, 0x9D, 0x2B, 0x9C, 0x33, 0xBE, 0x01, 0x2B, 0x9D, 0x01, 0x2B, 0x7C, 0x91, 0x2B, 0x7D, 0x2B, 0x9D, 0x2B, 0x7C, 0x2B, 0x9D, 0x2B, 0x7D, 0x2B, 0x9D, 0x2B, 0x7C, 0x2B, 0x9D, 0x2B, 0x7C, 0x2B, 0x9D, 0x2B, 0x7C, 0x33, 0x9D, 0x2B, 0x7D, 0x33, 0x9D, 0x2B, 0x7D, 0x33, 0x9D, 0x2B, 0x7D, 0x33, 0x9D, 0x02, 0x2B, 0x9D, 0x81, 0x33, 0xDD, 0x2B, 0x9C, 0x02, 0x2B, 0xBD, 0x81, 0x23, 0x9C, 0x2B, 0x9D, 0x01, 0x2B, 0x9C, 0x01, 0x23, 0x7C, 0x01, 0x1B, 0x3B, 0x80, 0x1B, 0x5B, 0x01, 0x1B, 0x1B, 0x84, + 0x1B, 0x3B, 0x23, 0x9C, 0x23, 0xBC, 0x23, 0x7C, 0x1B, 0x5B, 0x01, 0x34, 0x1E, 0x80, 0x2B, 0xDD, 0x01, 0x23, 0x9C, 0x83, 0x1B, 0x5B, 0x1B, 0x3B, 0x23, 0x7C, 0x2B, 0xBD, 0x01, 0x23, 0x7C, 0x81, 0x2B, 0xBD, 0x23, 0x7C, 0x01, 0x2B, 0x9D, 0x82, 0x33, 0xDE, 0x2B, 0xBD, 0x33, 0xDE, 0x02, 0x33, 0xBE, 0x01, 0x33, 0x9D, 0x9D, 0x3B, 0xDE, 0x33, 0x9D, 0x33, 0xBE, 0x33, 0xBD, 0x33, 0xBE, 0x2B, 0x9D, 0x33, 0xBE, 0x2B, 0x9D, 0x2B, 0xBD, 0x2B, 0x9D, 0x33, 0xBD, 0x2B, 0x9D, 0x33, 0xBD, 0x2B, 0x9D, 0x33, 0xBD, 0x2B, 0x9D, 0x33, 0xBD, 0x2B, 0x9D, 0x33, 0xBD, 0x2B, 0x9D, 0x33, 0xBD, 0x2B, 0x9D, 0x33, 0xBE, 0x2B, 0xBD, 0x33, 0xBD, 0x2B, 0x9D, 0x33, 0xBD, 0x2B, 0x9D, 0x33, 0xDD, 0x2B, 0x9D, 0x01, 0x33, 0xBD, 0x8C, 0x2B, 0xBD, 0x2B, 0x9D, 0x2B, 0xBD, 0x2B, 0x9C, 0x23, 0x9C, 0x23, 0x7C, 0x23, 0x9C, 0x2B, 0xBC, 0x23, 0x9C, 0x23, 0x7C, 0x1B, 0x5B, 0x1B, 0x7B, 0x23, 0x9C, 0x01, 0x2C, 0x1E, 0x85, 0x2B, 0xFD, 0x1B, 0x9C, 0x1B, 0x7B, 0x23, 0x9C, 0x1B, 0x5B, 0x1B, 0x7B, 0x01, 0x1B, 0x3B, 0x81, 0x2B, 0x9D, 0x2B, 0xBD, 0x01, 0x2B, 0x7D, 0x01, 0x2B, 0x9D, 0x87, 0x2B, 0x7D, 0x33, 0xBD, 0x2B, 0x9D, 0x2B, 0xBD, 0x2B, 0x9D, 0x33, 0xBD, 0x2B, 0xBD, 0x33, 0xDE, 0x01, 0x33, 0xBD, 0x82, 0x2B, 0x9D, 0x33, 0xBD, 0x2B, 0x9D, 0x01, 0x33, 0xBD, 0x80, 0x33, 0xDE, 0x02, 0x33, 0xBD, 0x01, 0x33, 0xDE, 0x01, 0x33, 0xBD, 0x80, 0x33, 0xDE, 0x02, 0x33, 0xBD, 0x81, 0x33, 0xDE, 0x2B, 0xBD, 0x02, 0x33, 0xBD, 0x83, 0x2B, 0xBD, 0x33, 0xDE, 0x2B, 0xBD, 0x33, 0xDE, 0x02, 0x33, + 0xBD, 0x81, 0x33, 0xDE, 0x33, 0xBE, 0x02, 0x33, 0xDE, 0x01, 0x2B, 0xBD, 0x89, 0x23, 0x7C, 0x2B, 0x9C, 0x23, 0x7C, 0x23, 0x9C, 0x23, 0xBD, 0x23, 0xBC, 0x1B, 0x9C, 0x1B, 0x9B, 0x3C, 0x7F, 0x23, 0xDC, 0x01, 0x1B, 0x7B, 0x84, 0x13, 0x3B, 0x13, 0x1A, 0x13, 0x1B, 0x1B, 0x3B, 0x23, 0x7C, 0x01, 0x33, 0xDE, 0x82, 0x2B, 0x9D, 0x23, 0x7C, 0x2B, 0xBD, 0x02, 0x2B, 0x9D, 0x81, 0x2B, 0xBD, 0x2B, 0x9D, 0x02, 0x2B, 0xBD, 0x86, 0x2B, 0x9D, 0x2B, 0xBD, 0x2B, 0x9D, 0x2B, 0xBD, 0x2B, 0x9D, 0x33, 0xBD, 0x33, 0x9D, 0x01, 0x33, 0xBD, 0x80, 0x33, 0xDE, 0x04, 0x33, 0xBD, 0x82, 0x33, 0xDE, 0x33, 0xBD, 0x33, 0xBE, 0x01, 0x33, 0xDE, 0x87, 0x2B, 0xBD, 0x33, 0xDE, 0x33, 0xBD, 0x33, 0xDE, 0x33, 0xDD, 0x33, 0xDE, 0x33, 0xDD, 0x33, 0xDE, 0x01, 0x2B, 0xBD, 0x82, 0x33, 0xBD, 0x33, 0xDD, 0x2B, 0xBD, 0x01, 0x33, 0xBD, 0x83, 0x33, 0xDE, 0x2B, 0xBD, 0x33, 0xBD, 0x2B, 0x9D, 0x01, 0x2B, 0xBD, 0x01, 0x2B, 0xDD, 0x01, 0x23, 0xBD, 0x83, 0x1B, 0x9C, 0x44, 0xDF, 0x3C, 0xBF, 0x13, 0x5B, 0x02, 0x1B, 0x7C, 0x80, 0x1B, 0x5B, 0x01, 0x23, 0x7C, 0x80, 0x2B, 0x9C, 0x01, 0x2B, 0x9D, 0x84, 0x2B, 0x7C, 0x33, 0xBE, 0x33, 0x9E, 0x33, 0xBE, 0x33, 0x9D, 0x01, 0x33, 0xBE, 0x87, 0x33, 0xDE, 0x33, 0xBE, 0x33, 0xDE, 0x33, 0xBE, 0x33, 0xDE, 0x33, 0xBE, 0x33, 0xDE, 0x33, 0xBE, 0x02, 0x33, 0xDE, 0x01, 0x33, 0xBE, 0x01, 0x33, 0xDE, 0x81, 0x2B, 0xBD, 0x33, 0xDE, 0x01, 0x33, 0xBE, 0x84, 0x2B, 0xBD, 0x33, 0xDE, 0x33, 0xBE, 0x2B, 0xBD, 0x2B, 0x9D, 0x01, 0x2B, 0xBD, 0x82, 0x33, 0xDE, 0x2B, + 0xBD, 0x33, 0xDE, 0x01, 0x2B, 0xBD, 0x86, 0x2B, 0x9D, 0x2B, 0xBD, 0x2B, 0x9D, 0x2B, 0xBD, 0x2B, 0x9D, 0x2B, 0xBD, 0x23, 0x7C, 0x01, 0x2B, 0x9D, 0x01, 0x33, 0xDE, 0x01, 0x2B, 0xBD, 0x01, 0x33, 0xFE, 0x91, 0x33, 0xFD, 0x33, 0xDD, 0x2B, 0xBD, 0x1B, 0x3B, 0x34, 0x1E, 0x34, 0x5E, 0x1B, 0x3B, 0x23, 0x9D, 0x2B, 0x9D, 0x23, 0x9D, 0x2B, 0x9D, 0x2B, 0x7D, 0x2B, 0xBD, 0x2B, 0x9D, 0x2B, 0xBD, 0x2B, 0x9D, 0x33, 0xBD, 0x2B, 0x9D, 0x02, 0x2B, 0xBD, 0x80, 0x2B, 0x9D, 0x01, 0x2B, 0xBD, 0x81, 0x33, 0xDE, 0x33, 0xBE, 0x01, 0x2B, 0xBE, 0x85, 0x33, 0xBE, 0x2B, 0xBD, 0x2B, 0xBE, 0x2B, 0xBD, 0x33, 0xBE, 0x2B, 0x9D, 0x01, 0x33, 0xBD, 0x85, 0x33, 0xBE, 0x2B, 0x9D, 0x33, 0xDE, 0x33, 0xBE, 0x33, 0xDE, 0x2B, 0x9D, 0x02, 0x2B, 0xBD, 0x81, 0x2B, 0x9D, 0x2B, 0xBD, 0x01, 0x33, 0xBD, 0x80, 0x2B, 0xBD, 0x01, 0x33, 0xBD, 0x82, 0x33, 0xDE, 0x2B, 0x9D, 0x33, 0xBE, 0x01, 0x2B, 0xBD, 0x85, 0x2B, 0x9D, 0x33, 0xBD, 0x2B, 0x9D, 0x2B, 0xBD, 0x2B, 0x9C, 0x33, 0xBD, 0x02, 0x2B, 0x9D, 0x83, 0x2B, 0xBD, 0x2B, 0x9D, 0x2B, 0xBD, 0x23, 0x9D, 0x02, 0x23, 0x7C, 0x86, 0x1B, 0x7B, 0x13, 0x5B, 0x23, 0xFD, 0x34, 0x5F, 0x23, 0xDD, 0x1B, 0x9C, 0x23, 0x9C, 0x01, 0x23, 0x7C, 0x01, 0x2B, 0x9D, 0x80, 0x2B, 0xBD, 0x02, 0x2B, 0x9D, 0x81, 0x2B, 0xBE, 0x2B, 0x7D, 0x01, 0x2B, 0xBD, 0x80, 0x33, 0xBD, 0x01, 0x2B, 0xBD, 0x85, 0x2B, 0x9D, 0x33, 0xBE, 0x2B, 0x9D, 0x33, 0xBE, 0x33, 0xBD, 0x33, 0xDE, 0x02, 0x2B, 0xBD, 0x80, 0x33, 0xDE, 0x01, 0x33, 0xBE, 0x82, 0x33, 0xDE, 0x33, 0xBD, 0x2B, + 0xBD, 0x02, 0x33, 0xBD, 0x80, 0x2B, 0xBD, 0x02, 0x33, 0xBD, 0x80, 0x2B, 0xBD, 0x01, 0x33, 0xBD, 0x86, 0x2B, 0xBD, 0x2B, 0x9D, 0x33, 0xBD, 0x2B, 0x9D, 0x33, 0xBD, 0x2B, 0xBD, 0x33, 0xDE, 0x01, 0x2B, 0xBD, 0x81, 0x2B, 0x7D, 0x2B, 0x9D, 0x01, 0x23, 0x5C, 0x83, 0x23, 0x3C, 0x23, 0x7D, 0x23, 0x5C, 0x23, 0x7C, 0x01, 0x23, 0x5C, 0x80, 0x23, 0x9C, 0x01, 0x1B, 0x5B, 0x01, 0x13, 0x3A, 0x80, 0x2B, 0xDD, 0x01, 0x23, 0xBC, 0x84, 0x13, 0x3A, 0x0B, 0x1A, 0x13, 0x1A, 0x1B, 0x3B, 0x1B, 0x5B, 0x01, 0x23, 0x5C, 0x86, 0x2B, 0x7C, 0x2B, 0x7D, 0x2B, 0x9D, 0x2B, 0x7D, 0x2B, 0x9D, 0x2B, 0x7D, 0x2B, 0xBD, 0x02, 0x2B, 0x9D, 0x01, 0x2B, 0xBD, 0x89, 0x2B, 0x9D, 0x23, 0x7C, 0x2B, 0x9D, 0x2B, 0x7D, 0x2B, 0xBD, 0x2B, 0x9D, 0x2B, 0xBD, 0x2B, 0x9D, 0x2B, 0xBD, 0x2B, 0x9D, 0x02, 0x2B, 0xBD, 0x81, 0x2B, 0x9D, 0x2B, 0xBD, 0x02, 0x2B, 0x9D, 0x01, 0x33, 0xBD, 0x01, 0x3B, 0xDE, 0x81, 0x33, 0xBD, 0x33, 0x9D, 0x01, 0x3B, 0x9D, 0x8C, 0x3B, 0xBD, 0x43, 0xBD, 0x43, 0x9C, 0x4B, 0x7C, 0x53, 0x7C, 0x5B, 0x5C, 0x6B, 0x3B, 0x72, 0xB8, 0x8A, 0x98, 0x92, 0x56, 0x9A, 0x15, 0xA2, 0x15, 0xA9, 0xF4, 0x03, 0xA9, 0xD3, 0x01, 0xB1, 0xF3, 0x8D, 0xA9, 0xD3, 0xB1, 0xF3, 0xA9, 0xD3, 0xB1, 0xF3, 0xA9, 0xD3, 0xB1, 0xF3, 0xA9, 0xD3, 0xB1, 0xF4, 0xB1, 0xF3, 0xA9, 0xD3, 0xB1, 0xF4, 0xA9, 0xF4, 0xA9, 0xF3, 0xA1, 0xD3, 0x01, 0xA1, 0xF4, 0x8C, 0xA2, 0x35, 0x9A, 0x35, 0x8A, 0x35, 0x8A, 0xD8, 0x62, 0x56, 0x52, 0xD9, 0x3A, 0xD9, 0x2A, 0xFA, 0x2B, 0x1B, 0x23, 0x1B, 0x1B, 0x1B, 0x23, 0x3C, + 0x1B, 0x1B, 0x01, 0x23, 0x3C, 0x8A, 0x2B, 0x7C, 0x23, 0x5C, 0x2B, 0x7C, 0x23, 0x5C, 0x2B, 0x7D, 0x2B, 0x9D, 0x33, 0x9D, 0x2B, 0x7C, 0x33, 0xBD, 0x2B, 0x7D, 0x33, 0xBD, 0x02, 0x2B, 0x9D, 0x86, 0x33, 0xDD, 0x2B, 0x9D, 0x33, 0xBD, 0x2B, 0x9D, 0x33, 0x9D, 0x33, 0xBD, 0x33, 0xDE, 0x01, 0x33, 0xBD, 0x80, 0x2B, 0x7D, 0x02, 0x33, 0xBD, 0x84, 0x2B, 0x9D, 0x2B, 0x7D, 0x23, 0x3B, 0x23, 0x7C, 0x23, 0x5C, 0x01, 0x1B, 0x3B, 0x01, 0x1B, 0x5B, 0x01, 0x1B, 0x7B, 0x80, 0x23, 0xBC, 0x01, 0x34, 0x1E, 0x8A, 0x2B, 0xDD, 0x1B, 0x5B, 0x1B, 0x3B, 0x13, 0x1A, 0x12, 0xDA, 0x13, 0x1A, 0x1B, 0x3B, 0x23, 0x7B, 0x23, 0x5B, 0x2B, 0xBD, 0x23, 0x7C, 0x01, 0x23, 0x5B, 0x8A, 0x2B, 0x9C, 0x2B, 0x7C, 0x2B, 0x9D, 0x2B, 0x5C, 0x33, 0x9D, 0x2B, 0x7C, 0x2B, 0x9D, 0x2B, 0x7C, 0x2B, 0x9D, 0x2B, 0x7C, 0x2B, 0x9D, 0x01, 0x2B, 0x7C, 0x82, 0x23, 0x5C, 0x2B, 0x9D, 0x2B, 0x7C, 0x02, 0x2B, 0x9D, 0x8D, 0x2B, 0x7C, 0x2B, 0x9D, 0x2B, 0x7C, 0x2B, 0x7D, 0x33, 0x9D, 0x33, 0xBD, 0x33, 0x9D, 0x33, 0xBD, 0x33, 0x7D, 0x33, 0xBD, 0x33, 0x7C, 0x33, 0xBD, 0x2B, 0x5C, 0x33, 0x9D, 0x01, 0x2B, 0x5C, 0x01, 0x2B, 0x7C, 0x94, 0x23, 0x5B, 0x2B, 0x7C, 0x23, 0x5B, 0x2B, 0x9D, 0x2B, 0x9C, 0x2B, 0x9D, 0x2B, 0x7C, 0x23, 0x3B, 0x1B, 0x3B, 0x23, 0x5B, 0x1B, 0x3B, 0x1B, 0x3A, 0x1B, 0x5A, 0x1B, 0x7B, 0x13, 0x5A, 0x23, 0x9B, 0x2B, 0xDC, 0x34, 0x5E, 0x44, 0x9F, 0x2B, 0xDD, 0x23, 0x7C, 0x03, 0x1B, 0x3B, 0x02, 0x23, 0x3B, 0x8D, 0x1A, 0xFA, 0x1B, 0x1B, 0x23, 0x3B, 0x23, 0x5C, 0x23, 0x3B, 0x2B, 0x9C, + 0x23, 0x5C, 0x2B, 0x9C, 0x2B, 0x7C, 0x2B, 0x7D, 0x2B, 0x5C, 0x2B, 0x7C, 0x23, 0x5C, 0x2B, 0x7C, 0x02, 0x23, 0x3B, 0x81, 0x2B, 0x7C, 0x23, 0x5C, 0x02, 0x2B, 0x9D, 0x81, 0x2B, 0x7C, 0x2B, 0x9C, 0x01, 0x2B, 0x5C, 0x83, 0x23, 0x3B, 0x2B, 0x5C, 0x2B, 0x7C, 0x33, 0x9D, 0x01, 0x2B, 0x7C, 0x80, 0x23, 0x3B, 0x01, 0x2B, 0x5C, 0x03, 0x2B, 0x7C, 0x84, 0x33, 0x9D, 0x2B, 0x7C, 0x2B, 0x9C, 0x2B, 0x5C, 0x23, 0x5C, 0x01, 0x23, 0x3B, 0x83, 0x1B, 0x3B, 0x1B, 0x5A, 0x1B, 0x3A, 0x13, 0x1A, 0x01, 0x0A, 0xF9, 0x89, 0x13, 0x19, 0x13, 0x3A, 0x13, 0x1A, 0x23, 0x7B, 0x23, 0x9B, 0x2B, 0xBC, 0x3C, 0x1E, 0x44, 0x5F, 0x33, 0xFE, 0x23, 0x7B, 0x01, 0x23, 0x7C, 0x01, 0x1B, 0x3B, 0x02, 0x1A, 0xFA, 0x01, 0x1B, 0x1A, 0x96, 0x1B, 0x1B, 0x23, 0x5B, 0x2B, 0x7C, 0x23, 0x3B, 0x2B, 0x5C, 0x23, 0x3B, 0x2B, 0x7C, 0x2B, 0x5C, 0x2B, 0x7C, 0x23, 0x5C, 0x2B, 0x7C, 0x23, 0x5B, 0x2B, 0x7C, 0x23, 0x5B, 0x23, 0x5C, 0x23, 0x5B, 0x2B, 0x7C, 0x2B, 0x5C, 0x33, 0x9C, 0x2B, 0x7C, 0x33, 0x9C, 0x33, 0x7C, 0x33, 0x9D, 0x01, 0x33, 0x9C, 0x82, 0x2B, 0x7C, 0x33, 0xBD, 0x33, 0x7C, 0x01, 0x33, 0x9C, 0x8B, 0x33, 0x7C, 0x2B, 0x7C, 0x33, 0x9C, 0x2B, 0x7C, 0x33, 0x9C, 0x2B, 0x7C, 0x33, 0x9C, 0x2B, 0x7C, 0x33, 0x9C, 0x2B, 0x7C, 0x2B, 0x5B, 0x23, 0x3B, 0x02, 0x1B, 0x1A, 0x91, 0x13, 0x1A, 0x13, 0x19, 0x13, 0x3A, 0x13, 0x19, 0x13, 0x39, 0x13, 0x3A, 0x13, 0x19, 0x1B, 0x5A, 0x2B, 0xBC, 0x2B, 0xDC, 0x33, 0xFD, 0x3C, 0x1D, 0x4C, 0x9F, 0x54, 0xDF, 0x4C, 0x9F, 0x44, 0x5E, 0x33, 0xDC, 0x33, 0xBC, + 0x01, 0x23, 0x7B, 0x87, 0x2B, 0x9B, 0x33, 0xBC, 0x2B, 0x7B, 0x2B, 0x9C, 0x2B, 0x7B, 0x2B, 0x5B, 0x2B, 0x3B, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x03, 0x01, 0xD6, 0x82, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0xF6, 0x02, 0x01, 0xD6, 0x80, 0x01, 0xF7, 0x02, 0x01, 0xB6, 0x03, 0x01, 0xD6, 0x82, 0x01, 0xF6, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0x01, 0xB5, 0x01, 0x01, 0xD5, 0x02, 0x02, 0x16, 0x02, 0x02, 0x36, 0x87, 0x0A, 0xB8, 0x12, 0xF9, 0x23, 0x5B, 0x33, 0xDD, 0x33, 0x9C, 0x1A, 0xDA, 0x0A, 0x37, 0x01, 0xF6, 0x01, 0x01, 0xD6, 0x03, 0x01, 0xF6, 0x81, 0x01, 0xD6, 0x01, 0xF6, 0x01, 0x01, 0xD6, 0x01, 0x01, 0xF6, 0x01, 0x01, 0xF7, 0x8D, 0x01, 0xD6, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0xF7, 0x02, 0x17, 0x01, 0xF7, 0x01, 0xD6, 0x01, 0xD7, 0x01, 0xD6, 0x01, 0xF7, 0x01, 0xF6, 0x01, 0xF7, 0x01, 0xF6, 0x01, 0xF7, 0x04, 0x01, 0xD6, 0x80, 0x01, 0xF7, 0x01, 0x01, 0xD6, 0x85, 0x01, 0xF6, 0x01, 0xF7, 0x01, 0xD6, 0x01, 0xF7, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0x01, 0xF6, 0x80, 0x01, 0xB6, 0x02, 0x01, 0xD6, 0x81, 0x01, 0xF6, 0x02, 0x17, 0x01, 0x01, 0xF6, 0x81, 0x02, 0x17, 0x02, 0x16, 0x01, 0x01, 0xF6, 0x80, 0x01, 0xD6, 0x01, 0x01, 0xF6, 0x8A, 0x02, 0x16, 0x02, 0x17, 0x02, 0x57, 0x0A, 0xB8, 0x1B, 0x5B, 0x2B, 0xBD, 0x2B, 0x9C, 0x0A, 0x98, 0x02, 0x16, 0x02, 0x37, 0x02, 0x17, 0x02, 0x01, 0xF6, 0x80, 0x02, 0x17, 0x04, 0x01, 0xD6, 0x86, 0x01, 0xD7, 0x02, 0x17, 0x01, 0xF7, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0xF7, 0x01, 0xD6, 0x01, + 0x01, 0xF7, 0x03, 0x01, 0xD6, 0x03, 0x02, 0x17, 0x82, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xD6, 0x03, 0x01, 0xF7, 0x01, 0x01, 0xF6, 0x04, 0x01, 0xF7, 0x81, 0x01, 0xD6, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x02, 0x01, 0xF7, 0x81, 0x01, 0xF6, 0x01, 0xF7, 0x01, 0x01, 0xF6, 0x03, 0x02, 0x37, 0x89, 0x02, 0x57, 0x12, 0xFA, 0x1B, 0x5B, 0x1B, 0x1A, 0x12, 0xFA, 0x0A, 0x98, 0x02, 0x37, 0x01, 0xF7, 0x02, 0x37, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x01, 0x01, 0xD6, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xD6, 0x01, 0x01, 0xF7, 0x84, 0x0A, 0x18, 0x02, 0x17, 0x02, 0x18, 0x01, 0xD6, 0x01, 0xD7, 0x01, 0x01, 0xD6, 0x83, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x85, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xD6, 0x01, 0xF7, 0x01, 0xD7, 0x03, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x03, 0x01, 0xF7, 0x82, 0x01, 0xD7, 0x01, 0xF7, 0x02, 0x17, 0x02, 0x01, 0xF7, 0x82, 0x02, 0x17, 0x01, 0xF7, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x04, 0x02, 0x17, 0x80, 0x01, 0xF6, 0x01, 0x02, 0x17, 0x80, 0x02, 0x37, 0x01, 0x02, 0x78, 0x86, 0x12, 0xDA, 0x23, 0x7C, 0x13, 0x1A, 0x0A, 0xB9, 0x0A, 0x98, 0x02, 0x78, 0x02, 0x17, 0x01, 0x01, 0xD6, 0x01, 0x02, 0x17, 0x81, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0x01, 0xF7, 0x83, 0x02, 0x18, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xD6, 0x03, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x04, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x04, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x04, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x02, + 0x01, 0xF7, 0x80, 0x02, 0x17, 0x02, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x01, 0x02, 0x37, 0x8A, 0x02, 0x16, 0x02, 0x17, 0x02, 0x57, 0x02, 0x98, 0x23, 0x7C, 0x23, 0x9C, 0x1B, 0x3B, 0x0A, 0xB9, 0x02, 0x37, 0x02, 0x17, 0x01, 0xF7, 0x04, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x80, 0x02, 0x18, 0x02, 0x01, 0xD7, 0x80, 0x01, 0xF8, 0x02, 0x01, 0xF7, 0x81, 0x02, 0x18, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x02, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x03, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x0A, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x0E, 0x01, 0xF7, 0x8A, 0x02, 0x17, 0x01, 0xF7, 0x02, 0x17, 0x02, 0x57, 0x02, 0x98, 0x34, 0x3E, 0x02, 0xB8, 0x02, 0x78, 0x02, 0x37, 0x02, 0x17, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x80, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x83, 0x02, 0x17, 0x01, 0xD7, 0x01, 0xF7, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x82, 0x02, 0x18, 0x01, 0xF7, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x16, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x02, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x06, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x03, 0x01, 0xF7, 0x89, 0x02, 0x37, 0x02, 0x98, 0x2B, 0xFE, 0x13, 0x3B, 0x02, 0x37, 0x02, 0x38, 0x02, 0x17, 0x02, 0x37, 0x02, 0x38, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x81, 0x02, 0x18, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x02, 0x01, 0xF8, 0x80, 0x01, 0xF7, 0x02, 0x01, 0xF8, 0x06, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x0D, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x81, + 0x01, 0xF7, 0x02, 0x17, 0x07, 0x01, 0xF7, 0x01, 0x02, 0x18, 0x02, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x84, 0x01, 0xF7, 0x01, 0xD6, 0x12, 0xFA, 0x1B, 0x3B, 0x02, 0x78, 0x02, 0x02, 0x17, 0x80, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x03, 0x02, 0x18, 0x05, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x04, 0x01, 0xF7, 0x80, 0x01, 0xF8, 0x19, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x07, 0x01, 0xF7, 0x08, 0x02, 0x17, 0x85, 0x02, 0x57, 0x02, 0x98, 0x2B, 0xFE, 0x02, 0xB9, 0x02, 0x99, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x85, 0x02, 0x17, 0x02, 0x18, 0x02, 0x38, 0x02, 0x18, 0x01, 0xF7, 0x02, 0x18, 0x0E, 0x01, 0xF7, 0x80, 0x01, 0xD7, 0x07, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x0D, 0x01, 0xF7, 0x82, 0x01, 0xF8, 0x01, 0xF7, 0x02, 0x18, 0x01, 0x01, 0xF8, 0x02, 0x01, 0xF7, 0x80, 0x02, 0x18, 0x01, 0x01, 0xF7, 0x81, 0x02, 0x37, 0x02, 0x17, 0x01, 0x01, 0xF6, 0x84, 0x02, 0x37, 0x02, 0x57, 0x02, 0x98, 0x3C, 0x5F, 0x1B, 0x7C, 0x01, 0x02, 0x78, 0x80, 0x02, 0x58, 0x02, 0x02, 0x17, 0x80, 0x02, 0x18, 0x01, 0x02, 0x17, 0x81, 0x01, 0xF7, 0x02, 0x18, 0x0A, 0x01, 0xF7, 0x81, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0x02, 0x17, 0x03, 0x01, 0xF7, 0x02, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x01, 0x02, 0x18, 0x82, 0x0A, 0x18, 0x02, 0x18, 0x0A, 0x38, 0x01, 0x0A, 0x18, 0x91, 0x0A, 0x17, 0x09, 0xF7, 0x0A, 0x18, 0x12, 0x38, 0x12, 0x37, 0x1A, 0x58, 0x22, 0x58, 0x22, 0x38, 0x2A, 0x17, 0x31, 0xB6, 0x41, 0x94, 0x72, 0x57, 0x92, 0x97, 0x9A, 0x35, 0x99, 0xF4, 0xA1, 0xD4, 0xA9, 0xF4, 0xA1, 0xB3, 0x01, 0xB1, + 0xF4, 0x81, 0xA9, 0xD3, 0xA9, 0xB3, 0x01, 0xA9, 0xD3, 0x02, 0xB1, 0xD3, 0x80, 0xB1, 0xF3, 0x01, 0xB1, 0xD3, 0x82, 0xA9, 0xB2, 0xB1, 0xF3, 0xA9, 0xB3, 0x03, 0xA9, 0xF3, 0x91, 0xAA, 0x14, 0xA2, 0x35, 0x9A, 0x14, 0x8A, 0x15, 0x92, 0xB8, 0x51, 0x94, 0x31, 0x95, 0x19, 0x95, 0x11, 0xD6, 0x09, 0xF7, 0x0A, 0x17, 0x02, 0x38, 0x0A, 0x38, 0x02, 0x38, 0x01, 0xF7, 0x02, 0x18, 0x01, 0xF7, 0x02, 0x18, 0x02, 0x01, 0xF7, 0x82, 0x01, 0xD7, 0x01, 0xF7, 0x02, 0x17, 0x03, 0x01, 0xF7, 0x80, 0x01, 0xD6, 0x01, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x02, 0x01, 0xD6, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x01, 0x01, 0xD6, 0x81, 0x01, 0xF7, 0x01, 0xD7, 0x02, 0x01, 0xD6, 0x01, 0x01, 0xF7, 0x80, 0x02, 0x17, 0x01, 0x01, 0xF6, 0x01, 0x02, 0x16, 0x02, 0x01, 0xF6, 0x86, 0x02, 0x37, 0x1B, 0x3A, 0x2B, 0xBC, 0x23, 0x7B, 0x12, 0xD9, 0x0A, 0xB9, 0x02, 0x37, 0x03, 0x01, 0xF6, 0x01, 0x02, 0x37, 0x01, 0x01, 0xD6, 0x01, 0x02, 0x17, 0x03, 0x01, 0xF7, 0x83, 0x01, 0xD6, 0x01, 0xF7, 0x01, 0xD6, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x81, 0x01, 0xD6, 0x01, 0xF7, 0x02, 0x01, 0xD6, 0x02, 0x01, 0xD7, 0x85, 0x01, 0xD6, 0x01, 0xD7, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0xF7, 0x01, 0xF6, 0x01, 0x01, 0xD6, 0x81, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x01, 0x01, 0xF7, 0x80, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x83, 0x01, 0xF7, 0x02, 0x17, 0x01, 0xF7, 0x01, 0xF6, 0x02, 0x01, 0xD6, 0x02, 0x01, 0xF6, 0x02, 0x02, 0x16, 0x01, 0x01, 0xF5, 0x8A, 0x02, 0x36, 0x12, 0xF9, 0x34, 0x1E, 0x23, + 0x9C, 0x12, 0xFA, 0x02, 0x78, 0x02, 0x57, 0x02, 0x17, 0x01, 0xF6, 0x02, 0x17, 0x01, 0xF7, 0x02, 0x01, 0xF6, 0x85, 0x01, 0xF7, 0x02, 0x17, 0x01, 0xF6, 0x01, 0xF7, 0x01, 0xF6, 0x01, 0xF7, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x02, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x03, 0x01, 0xD6, 0x80, 0x01, 0xF6, 0x03, 0x01, 0xD6, 0x80, 0x01, 0x95, 0x02, 0x01, 0xB6, 0x84, 0x01, 0xD6, 0x01, 0xF7, 0x01, 0xB5, 0x01, 0x95, 0x01, 0x96, 0x02, 0x01, 0xB6, 0x86, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0xF6, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x02, 0x01, 0xF6, 0x01, 0x01, 0xF5, 0x01, 0x01, 0xD5, 0x82, 0x01, 0xF6, 0x02, 0x17, 0x01, 0xF6, 0x01, 0x01, 0xD6, 0x85, 0x01, 0xF6, 0x0A, 0x98, 0x23, 0x3B, 0x33, 0xFD, 0x23, 0x5B, 0x02, 0x57, 0x01, 0x02, 0x17, 0x85, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0xF6, 0x01, 0xF7, 0x01, 0xD6, 0x02, 0x17, 0x01, 0x01, 0xF7, 0x81, 0x01, 0xF6, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xF6, 0x02, 0x01, 0xD6, 0x83, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0xB5, 0x01, 0x01, 0xB6, 0x01, 0x01, 0xB5, 0x80, 0x01, 0xB6, 0x01, 0x01, 0xB5, 0x01, 0x01, 0xB6, 0x83, 0x01, 0xB5, 0x01, 0xD5, 0x01, 0xD6, 0x01, 0xB5, 0x03, 0x01, 0xD6, 0x82, 0x01, 0xB5, 0x01, 0xD6, 0x01, 0xB5, 0x01, 0x01, 0xD5, 0x80, 0x01, 0xB5, 0x02, 0x01, 0xD6, 0x01, 0x01, 0xD5, 0x03, 0x01, 0xF5, 0x80, 0x02, 0x16, 0x03, 0x01, 0xF5, 0x01, 0x01, 0xD5, 0x80, 0x01, 0xF6, 0x01, 0x0A, 0x57, 0x80, 0x12, 0x98, 0x01, 0x2B, 0x7B, 0x82, 0x23, 0x5A, 0x12, 0xD8, 0x02, + 0x36, 0x01, 0x02, 0x16, 0x01, 0x01, 0xF5, 0x02, 0x01, 0xD5, 0x01, 0x01, 0xB5, 0x80, 0x01, 0xB6, 0x01, 0x01, 0x95, 0x80, 0x01, 0xB6, 0x06, 0x01, 0x95, 0x82, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x0A, 0x01, 0x95, 0x01, 0x01, 0xB5, 0x8B, 0x01, 0xD5, 0x01, 0xF5, 0x02, 0x16, 0x02, 0x36, 0x02, 0x57, 0x12, 0xD9, 0x23, 0x7B, 0x3B, 0xFD, 0x2B, 0x9C, 0x1A, 0xD9, 0x0A, 0x57, 0x01, 0xD5, 0x01, 0x01, 0xB5, 0x04, 0x01, 0x95, 0x80, 0x01, 0xB6, 0x02, 0x01, 0xB5, 0x83, 0x01, 0xB6, 0x01, 0x96, 0x01, 0x95, 0x01, 0x96, 0x01, 0x01, 0x95, 0x01, 0x01, 0xB6, 0x80, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x03, 0x01, 0x96, 0x08, 0x01, 0xB6, 0x81, 0x01, 0x96, 0x01, 0x95, 0x01, 0x01, 0xB6, 0x01, 0x01, 0x95, 0x01, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x01, 0x01, 0x95, 0x82, 0x01, 0xB6, 0x01, 0x95, 0x01, 0xB5, 0x01, 0x01, 0xB6, 0x80, 0x01, 0xB5, 0x01, 0x01, 0xD5, 0x80, 0x01, 0xB5, 0x03, 0x01, 0xD5, 0x01, 0x01, 0xF6, 0x86, 0x0A, 0x78, 0x23, 0x5B, 0x33, 0xDD, 0x33, 0xBD, 0x23, 0x3A, 0x0A, 0x78, 0x01, 0xF6, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xD5, 0x01, 0x01, 0xB5, 0x81, 0x01, 0x95, 0x01, 0xB6, 0x01, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x02, 0x01, 0x96, 0x80, 0x01, 0xB6, 0x02, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x04, 0x01, 0x96, 0x81, 0x01, 0xB6, 0x01, 0xD6, 0x02, 0x01, 0xB6, 0x80, 0x01, 0xD6, 0x03, 0x01, 0xB6, 0x80, 0x01, 0xD6, 0x05, 0x01, 0xB6, 0x80, 0x01, 0xD6, 0x07, 0x01, 0xB6, 0x80, 0x01, 0x96, 0x04, 0x01, 0xB6, 0x81, 0x01, 0xB5, 0x01, 0xD6, + 0x01, 0x01, 0xF6, 0x01, 0x02, 0x16, 0x86, 0x0A, 0x98, 0x3C, 0x1E, 0x33, 0xDD, 0x1B, 0x1A, 0x0A, 0x98, 0x02, 0x16, 0x01, 0xF6, 0x03, 0x01, 0xD6, 0x01, 0x01, 0xB6, 0x80, 0x01, 0x96, 0x03, 0x01, 0xB6, 0x80, 0x01, 0x96, 0x02, 0x01, 0xB6, 0x80, 0x01, 0x96, 0x06, 0x01, 0xB6, 0x01, 0x01, 0x96, 0x0B, 0x01, 0xB6, 0x80, 0x01, 0xD6, 0x03, 0x01, 0xB6, 0x01, 0x01, 0xD7, 0x05, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x82, 0x01, 0xD7, 0x01, 0xB6, 0x01, 0xD7, 0x03, 0x01, 0xD6, 0x8F, 0x01, 0xF6, 0x01, 0xF7, 0x02, 0x17, 0x02, 0x37, 0x12, 0xDA, 0x33, 0xDE, 0x2B, 0xBD, 0x0A, 0x99, 0x02, 0x37, 0x02, 0x16, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0xB5, 0x01, 0xB6, 0x01, 0xD6, 0x05, 0x01, 0xB6, 0x80, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x80, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x80, 0x01, 0x96, 0x06, 0x01, 0xB6, 0x80, 0x01, 0xD6, 0x07, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x04, 0x01, 0xB6, 0x03, 0x01, 0xB7, 0x01, 0x01, 0xB6, 0x86, 0x01, 0xD7, 0x01, 0xB6, 0x01, 0xD7, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0xF7, 0x01, 0x01, 0xD6, 0x81, 0x01, 0xF6, 0x01, 0xD6, 0x03, 0x01, 0xF6, 0x86, 0x02, 0x57, 0x3C, 0x1E, 0x2B, 0xBD, 0x0A, 0x98, 0x02, 0x37, 0x02, 0x17, 0x01, 0xF6, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x02, 0x01, 0xD6, 0x01, 0x01, 0xB6, 0x01, 0x01, 0xD7, 0x03, 0x01, 0xB7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x02, 0x01, 0xD7, 0x80, 0x01, 0xB6, 0x01, 0x01, 0xD7, 0x84, 0x01, 0xB7, 0x01, 0xD7, 0x01, 0xB7, 0x01, 0xD7, 0x01, 0xB7, 0x02, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x81, + 0x01, 0xB6, 0x01, 0xD7, 0x03, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x81, 0x01, 0xB6, 0x01, 0xD7, 0x01, 0x01, 0xD6, 0x80, 0x01, 0xB6, 0x04, 0x01, 0xD7, 0x80, 0x01, 0xB6, 0x05, 0x01, 0xD7, 0x81, 0x01, 0xD6, 0x01, 0xD7, 0x01, 0x01, 0xF7, 0x85, 0x02, 0x17, 0x02, 0x57, 0x3C, 0x3E, 0x1B, 0x3B, 0x02, 0x37, 0x02, 0x17, 0x01, 0x01, 0xD6, 0x02, 0x01, 0xB6, 0x82, 0x01, 0xB7, 0x01, 0xB6, 0x01, 0xD7, 0x02, 0x01, 0xB7, 0x81, 0x01, 0xD7, 0x01, 0xB6, 0x0E, 0x01, 0xB7, 0x80, 0x01, 0xB6, 0x08, 0x01, 0xB7, 0x80, 0x01, 0xB6, 0x01, 0x01, 0xB7, 0x01, 0x01, 0xB6, 0x80, 0x01, 0xD7, 0x02, 0x01, 0xB7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x85, 0x01, 0xB6, 0x01, 0xB7, 0x01, 0xB6, 0x01, 0xB7, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0x01, 0xD7, 0x80, 0x01, 0xB6, 0x02, 0x01, 0xD7, 0x86, 0x01, 0xD6, 0x01, 0xF7, 0x02, 0x17, 0x12, 0xFA, 0x2B, 0xBD, 0x02, 0x38, 0x01, 0xF7, 0x01, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x03, 0x01, 0xD7, 0x81, 0x01, 0xB7, 0x01, 0xD7, 0x03, 0x01, 0xB7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x80, 0x01, 0xD7, 0x04, 0x01, 0xB7, 0x80, 0x01, 0xD7, 0x0A, 0x01, 0xB7, 0x80, 0x01, 0xD7, 0x06, 0x01, 0xB7, 0x82, 0x01, 0xB6, 0x01, 0xB7, 0x01, 0xB6, 0x01, 0x01, 0xB7, 0x02, 0x01, 0xD7, 0x82, 0x01, 0xB6, 0x01, 0xB7, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x01, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x83, 0x01, 0xD7, 0x01, 0xB7, 0x01, 0xD7, 0x01, 0xB6, 0x02, 0x01, 0xD6, 0x83, 0x1B, 0x1A, 0x1B, 0x3B, 0x01, 0xF6, 0x01, 0xF7, 0x04, 0x01, 0xD7, 0x80, 0x01, 0xB7, 0x06, 0x01, 0xD7, 0x80, + 0x01, 0xB7, 0x01, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x81, 0x01, 0xD7, 0x01, 0xB7, 0x01, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x01, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x01, 0x01, 0xD7, 0x02, 0x01, 0xB7, 0x81, 0x01, 0xD7, 0x01, 0xB7, 0x01, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x01, 0x01, 0xD7, 0x06, 0x01, 0xB7, 0x01, 0x01, 0xD7, 0x02, 0x01, 0xB7, 0x06, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x01, 0x01, 0xF6, 0x85, 0x02, 0x17, 0x02, 0x57, 0x23, 0x9D, 0x13, 0x1B, 0x02, 0x58, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x82, 0x01, 0xF7, 0x01, 0xB6, 0x01, 0xB7, 0x02, 0x01, 0xD7, 0x80, 0x01, 0xB7, 0x01, 0x01, 0xD7, 0x02, 0x01, 0xB7, 0x01, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x80, 0x01, 0xD7, 0x03, 0x01, 0xB7, 0x01, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x01, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x80, 0x01, 0xD7, 0x03, 0x01, 0xB7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xB6, 0x01, 0x01, 0xB7, 0x80, 0x01, 0xD7, 0x01, 0x01, 0xB7, 0x04, 0x01, 0xD7, 0x80, 0x01, 0xB7, 0x06, 0x01, 0xD7, 0x80, 0x01, 0xF7, 0x02, 0x01, 0xD6, 0x88, 0x01, 0xF6, 0x02, 0x16, 0x02, 0x37, 0x12, 0xD9, 0x4C, 0xDF, 0x02, 0x78, 0x02, 0x58, 0x02, 0x17, 0x01, 0xF7, 0x02, 0x01, 0xD7, 0x01, 0x01, 0xD6, 0x81, 0x01, 0xD7, 0x01, 0xB7, 0x01, 0x01, 0xD7, 0x81, 0x01, 0xB6, 0x01, 0xD6, 0x02, 0x01, 0xD7, 0x80, 0x01, 0xD6, 0x03, 0x01, 0xD7, 0x01, 0x01, 0xB6, 0x01, 0x01, 0xD7, 0x80, 0x01, 0xB7, 0x04, 0x01, 0xD7, 0x84, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xF7, 0x01, 0xD7, 0x01, 0xF7, 0x04, 0x01, 0xD7, 0x03, 0x09, 0xF7, 0x8C, 0x12, 0x17, + 0x11, 0xF7, 0x19, 0xF7, 0x21, 0xD6, 0x31, 0xF7, 0x39, 0x95, 0x49, 0x94, 0x8A, 0xD8, 0x92, 0x56, 0x9A, 0x15, 0xA2, 0x14, 0xA1, 0xF3, 0xA9, 0xF4, 0x03, 0xA9, 0xD3, 0x81, 0xB1, 0xD3, 0xA9, 0xD3, 0x02, 0xB1, 0xD3, 0x01, 0xB1, 0xF3, 0x80, 0xA9, 0xB3, 0x03, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x88, 0xA9, 0xF4, 0xAA, 0x14, 0xA2, 0x14, 0x9A, 0x15, 0x92, 0x35, 0x8A, 0x77, 0x59, 0xB4, 0x31, 0x74, 0x21, 0xB6, 0x01, 0x09, 0xB6, 0x80, 0x01, 0xD6, 0x01, 0x01, 0xF7, 0x04, 0x01, 0xD7, 0x80, 0x01, 0xB7, 0x05, 0x01, 0xB6, 0x80, 0x01, 0xD6, 0x0A, 0x01, 0xB6, 0x80, 0x01, 0x96, 0x05, 0x01, 0xB6, 0x05, 0x01, 0xD6, 0x80, 0x01, 0xF6, 0x01, 0x01, 0xD6, 0x01, 0x01, 0xF6, 0x87, 0x01, 0xD6, 0x01, 0xF6, 0x0A, 0x98, 0x23, 0x7B, 0x33, 0xDD, 0x23, 0x7C, 0x02, 0x37, 0x01, 0xF6, 0x07, 0x01, 0xD6, 0x80, 0x01, 0xF7, 0x0E, 0x01, 0xB6, 0x81, 0x01, 0x96, 0x01, 0xB6, 0x05, 0x01, 0x96, 0x07, 0x01, 0x95, 0x01, 0x01, 0xB6, 0x80, 0x01, 0x95, 0x03, 0x01, 0xB6, 0x86, 0x01, 0x95, 0x01, 0xB5, 0x01, 0xD6, 0x01, 0x95, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0xB6, 0x02, 0x01, 0xB5, 0x03, 0x01, 0xD5, 0x01, 0x01, 0xF5, 0x8A, 0x02, 0x36, 0x1B, 0x1A, 0x33, 0xFE, 0x33, 0xDD, 0x12, 0xFA, 0x02, 0x37, 0x02, 0x16, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0xD6, 0x05, 0x01, 0xB6, 0x83, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0x96, 0x01, 0xB5, 0x01, 0x01, 0xB6, 0x8A, 0x01, 0x95, 0x01, 0x96, 0x01, 0xB6, 0x01, 0x96, 0x01, 0xB6, 0x01, 0x96, 0x01, 0xB6, 0x01, 0x96, 0x01, 0x95, 0x01, 0xB6, 0x01, 0x95, 0x01, + 0x01, 0x96, 0x82, 0x01, 0x95, 0x01, 0xB6, 0x01, 0x96, 0x02, 0x01, 0x95, 0x81, 0x01, 0x75, 0x01, 0x96, 0x01, 0x01, 0x95, 0x01, 0x01, 0x96, 0x04, 0x01, 0x95, 0x05, 0x01, 0xB5, 0x80, 0x01, 0x95, 0x05, 0x01, 0xB5, 0x89, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0xD5, 0x01, 0xF6, 0x12, 0x98, 0x23, 0x5B, 0x3B, 0xDD, 0x2B, 0x7C, 0x12, 0xB9, 0x01, 0xF6, 0x02, 0x01, 0xD6, 0x86, 0x01, 0xB6, 0x01, 0xB5, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0xB5, 0x01, 0xB6, 0x04, 0x01, 0xB5, 0x03, 0x01, 0x95, 0x80, 0x01, 0xB5, 0x11, 0x01, 0x95, 0x80, 0x01, 0x94, 0x07, 0x01, 0x95, 0x80, 0x01, 0x94, 0x01, 0x01, 0xB4, 0x02, 0x01, 0xB5, 0x04, 0x01, 0x94, 0x81, 0x01, 0x74, 0x01, 0x94, 0x01, 0x01, 0xB4, 0x82, 0x01, 0xF5, 0x0A, 0x57, 0x1A, 0xF9, 0x01, 0x2B, 0x7B, 0x81, 0x1A, 0xF9, 0x0A, 0x77, 0x01, 0x02, 0x16, 0x84, 0x01, 0xF5, 0x01, 0xD5, 0x01, 0xB5, 0x01, 0x94, 0x01, 0xB5, 0x03, 0x01, 0x54, 0x82, 0x01, 0x74, 0x01, 0x95, 0x01, 0x74, 0x0A, 0x01, 0x54, 0x80, 0x01, 0x74, 0x01, 0x01, 0x54, 0x81, 0x01, 0x74, 0x01, 0x54, 0x03, 0x01, 0x74, 0x01, 0x01, 0x94, 0x86, 0x01, 0xB4, 0x01, 0xB5, 0x01, 0xD5, 0x02, 0x15, 0x0A, 0x77, 0x1A, 0xF9, 0x23, 0x5A, 0x01, 0x2B, 0x7B, 0x81, 0x0A, 0x57, 0x01, 0xB5, 0x03, 0x01, 0x74, 0x80, 0x01, 0x94, 0x06, 0x01, 0x74, 0x01, 0x01, 0x75, 0x01, 0x01, 0x55, 0x80, 0x01, 0x54, 0x02, 0x01, 0x55, 0x01, 0x01, 0x75, 0x80, 0x01, 0x96, 0x03, 0x01, 0x75, 0x80, 0x01, 0x74, 0x0A, 0x01, 0x75, 0x80, 0x01, 0x54, 0x01, 0x01, 0x74, 0x80, 0x01, 0x75, 0x01, + 0x01, 0x74, 0x83, 0x01, 0x75, 0x01, 0x74, 0x01, 0x75, 0x01, 0x95, 0x01, 0x01, 0x75, 0x02, 0x01, 0x74, 0x80, 0x01, 0x95, 0x01, 0x01, 0x94, 0x80, 0x01, 0xB4, 0x01, 0x01, 0x94, 0x01, 0x01, 0xB5, 0x82, 0x01, 0xF5, 0x0A, 0x77, 0x23, 0x3A, 0x01, 0x2B, 0x9C, 0x82, 0x23, 0x1A, 0x02, 0x16, 0x01, 0xB5, 0x01, 0x01, 0x95, 0x80, 0x01, 0xB5, 0x02, 0x01, 0x95, 0x04, 0x01, 0x75, 0x80, 0x01, 0x95, 0x01, 0x01, 0x75, 0x81, 0x01, 0x55, 0x01, 0x75, 0x01, 0x01, 0x95, 0x81, 0x01, 0x96, 0x01, 0x75, 0x01, 0x01, 0x96, 0x01, 0x01, 0x55, 0x83, 0x01, 0x75, 0x01, 0x55, 0x01, 0x76, 0x01, 0x95, 0x03, 0x01, 0x75, 0x81, 0x01, 0xB6, 0x01, 0x96, 0x03, 0x01, 0x75, 0x82, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x01, 0x75, 0x03, 0x01, 0x95, 0x02, 0x01, 0x75, 0x07, 0x01, 0x95, 0x8A, 0x01, 0xB5, 0x01, 0x95, 0x01, 0xB5, 0x01, 0xD5, 0x01, 0xF5, 0x02, 0x36, 0x23, 0x3A, 0x3C, 0x1E, 0x2B, 0x9C, 0x12, 0xB9, 0x01, 0xF6, 0x03, 0x01, 0xB5, 0x04, 0x01, 0x95, 0x01, 0x01, 0x96, 0x01, 0x01, 0x95, 0x05, 0x01, 0x75, 0x81, 0x01, 0x95, 0x01, 0x75, 0x01, 0x01, 0x95, 0x02, 0x01, 0x96, 0x82, 0x01, 0x75, 0x01, 0x96, 0x01, 0x95, 0x01, 0x01, 0x75, 0x05, 0x01, 0x95, 0x80, 0x01, 0xB6, 0x06, 0x01, 0x95, 0x80, 0x01, 0x96, 0x01, 0x01, 0x95, 0x01, 0x01, 0x96, 0x80, 0x01, 0x95, 0x01, 0x01, 0x75, 0x01, 0x01, 0x95, 0x81, 0x01, 0x96, 0x01, 0x95, 0x03, 0x01, 0xB5, 0x01, 0x01, 0xD6, 0x85, 0x01, 0xF6, 0x02, 0x17, 0x1B, 0x3A, 0x33, 0xDD, 0x23, 0x3B, 0x0A, 0x37, 0x02, 0x01, 0xB5, 0x04, 0x01, + 0x95, 0x82, 0x01, 0xB6, 0x01, 0x96, 0x01, 0x95, 0x05, 0x01, 0x96, 0x80, 0x01, 0x75, 0x01, 0x01, 0x96, 0x05, 0x01, 0x95, 0x81, 0x01, 0x96, 0x01, 0x75, 0x02, 0x01, 0x96, 0x02, 0x01, 0x75, 0x81, 0x01, 0x95, 0x01, 0x75, 0x06, 0x01, 0x95, 0x01, 0x01, 0x96, 0x80, 0x01, 0x75, 0x04, 0x01, 0x96, 0x02, 0x01, 0x95, 0x81, 0x01, 0xB6, 0x01, 0x95, 0x02, 0x01, 0xB6, 0x04, 0x01, 0xB5, 0x84, 0x01, 0xD6, 0x01, 0xF6, 0x3C, 0x1F, 0x3B, 0xFE, 0x02, 0x57, 0x01, 0x01, 0xF6, 0x82, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0xB6, 0x07, 0x01, 0x96, 0x02, 0x01, 0xB6, 0x12, 0x01, 0x96, 0x81, 0x01, 0xB6, 0x01, 0x95, 0x01, 0x01, 0x96, 0x03, 0x01, 0x95, 0x81, 0x01, 0x96, 0x01, 0x95, 0x01, 0x01, 0x96, 0x01, 0x01, 0x95, 0x81, 0x01, 0x96, 0x01, 0x95, 0x01, 0x01, 0xB6, 0x80, 0x01, 0x95, 0x02, 0x01, 0x96, 0x03, 0x01, 0xB6, 0x81, 0x01, 0xB5, 0x01, 0xB6, 0x03, 0x01, 0xD6, 0x84, 0x2B, 0x9C, 0x2B, 0xBD, 0x02, 0x37, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0x01, 0xB6, 0x01, 0x01, 0x96, 0x80, 0x01, 0x95, 0x04, 0x01, 0x96, 0x80, 0x01, 0x76, 0x06, 0x01, 0x96, 0x80, 0x01, 0x76, 0x08, 0x01, 0x96, 0x80, 0x01, 0xB6, 0x0D, 0x01, 0x96, 0x80, 0x01, 0xB6, 0x04, 0x01, 0x96, 0x02, 0x01, 0x95, 0x02, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x82, 0x01, 0xD6, 0x01, 0xB6, 0x01, 0xD6, 0x01, 0x01, 0xB6, 0x01, 0x01, 0xD6, 0x83, 0x01, 0xF6, 0x2B, 0x9C, 0x12, 0xFA, 0x02, 0x17, 0x01, 0x01, 0xD6, 0x05, 0x01, 0xB6, 0x22, 0x01, 0x96, 0x82, 0x01, 0xB6, 0x01, 0x96, 0x01, 0xB6, 0x02, 0x01, 0x96, 0x80, 0x01, 0xB6, 0x02, + 0x01, 0x96, 0x80, 0x01, 0xB6, 0x03, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x01, 0x01, 0x96, 0x80, 0x01, 0xB6, 0x01, 0x01, 0x95, 0x01, 0x01, 0xB6, 0x81, 0x23, 0x5B, 0x1B, 0x3B, 0x02, 0x01, 0xB6, 0x01, 0x01, 0x96, 0x80, 0x01, 0xB6, 0x07, 0x01, 0x96, 0x82, 0x01, 0xB6, 0x01, 0x96, 0x01, 0xB6, 0x01, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x02, 0x01, 0x96, 0x80, 0x01, 0xB6, 0x0C, 0x01, 0x96, 0x82, 0x01, 0xB6, 0x01, 0x96, 0x01, 0xB6, 0x0C, 0x01, 0x96, 0x81, 0x01, 0xB6, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x01, 0x01, 0x96, 0x03, 0x01, 0xB6, 0x81, 0x01, 0x96, 0x01, 0x95, 0x01, 0x01, 0xB5, 0x84, 0x01, 0xF6, 0x02, 0x37, 0x12, 0xFA, 0x2B, 0xBD, 0x01, 0xF6, 0x01, 0x01, 0xD7, 0x06, 0x01, 0x96, 0x82, 0x01, 0xB6, 0x01, 0x96, 0x01, 0xB6, 0x01, 0x01, 0x96, 0x80, 0x01, 0x76, 0x03, 0x01, 0x96, 0x80, 0x01, 0xB6, 0x16, 0x01, 0x96, 0x01, 0x01, 0xB6, 0x03, 0x01, 0x96, 0x80, 0x01, 0xB6, 0x04, 0x01, 0x96, 0x80, 0x01, 0xD7, 0x05, 0x01, 0xB6, 0x01, 0x01, 0xB5, 0x87, 0x01, 0xD6, 0x01, 0xF6, 0x02, 0x37, 0x23, 0x9C, 0x2B, 0xBD, 0x01, 0xF6, 0x02, 0x17, 0x01, 0xF6, 0x01, 0x01, 0xB6, 0x03, 0x01, 0x96, 0x80, 0x01, 0x95, 0x01, 0x01, 0x96, 0x01, 0x01, 0x95, 0x82, 0x01, 0xB6, 0x01, 0x95, 0x01, 0xB6, 0x03, 0x01, 0x96, 0x80, 0x01, 0xB6, 0x08, 0x01, 0x96, 0x08, 0x01, 0xB6, 0x80, 0x01, 0xD7, 0x02, 0x01, 0xB6, 0x81, 0x01, 0xD6, 0x09, 0xF6, 0x01, 0x09, 0xD6, 0x8A, 0x11, 0xD6, 0x11, 0xB5, 0x29, 0xD6, 0x31, 0xB5, 0x39, 0x74, 0x6A, 0x36, 0x8A, 0x76, 0x9A, 0x35, 0xA2, 0x35, 0xA1, 0xF4, + 0xA1, 0xB3, 0x02, 0xA9, 0xD3, 0x89, 0xA9, 0xB3, 0xA9, 0xD3, 0xA9, 0xB3, 0xB1, 0xF3, 0xA9, 0xB3, 0xA9, 0xB2, 0xB1, 0xF3, 0xA9, 0xB2, 0xA9, 0xD3, 0xA9, 0xB3, 0x03, 0xB1, 0xF3, 0x01, 0xA9, 0xD3, 0x88, 0xA9, 0xF4, 0xA2, 0x14, 0xA2, 0x35, 0x9A, 0x56, 0x8A, 0x77, 0x51, 0x73, 0x31, 0x74, 0x19, 0x74, 0x11, 0xB5, 0x01, 0x01, 0x95, 0x80, 0x01, 0xB5, 0x02, 0x01, 0xB6, 0x81, 0x01, 0x96, 0x01, 0xB6, 0x01, 0x01, 0x96, 0x80, 0x01, 0x75, 0x01, 0x01, 0x96, 0x05, 0x01, 0x95, 0x01, 0x01, 0x75, 0x80, 0x01, 0x95, 0x04, 0x01, 0x75, 0x80, 0x01, 0xB5, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x02, 0x01, 0x95, 0x01, 0x01, 0xB5, 0x01, 0x01, 0x95, 0x82, 0x01, 0xB5, 0x01, 0x95, 0x01, 0xD6, 0x01, 0x01, 0xD5, 0x80, 0x01, 0xB5, 0x03, 0x01, 0xD5, 0x8C, 0x02, 0x16, 0x1B, 0x1A, 0x33, 0xBC, 0x23, 0x5B, 0x0A, 0x57, 0x01, 0xF6, 0x01, 0xB6, 0x01, 0xB5, 0x01, 0x95, 0x01, 0xB5, 0x01, 0xB6, 0x01, 0xB5, 0x01, 0xB6, 0x01, 0x01, 0xB5, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x01, 0x01, 0x95, 0x02, 0x01, 0x75, 0x85, 0x01, 0x96, 0x01, 0x95, 0x01, 0xB6, 0x01, 0x95, 0x01, 0x96, 0x01, 0x75, 0x01, 0x01, 0x96, 0x06, 0x01, 0x75, 0x82, 0x01, 0x54, 0x01, 0x74, 0x01, 0x54, 0x01, 0x01, 0x75, 0x01, 0x01, 0x74, 0x82, 0x01, 0x95, 0x01, 0x74, 0x01, 0x95, 0x04, 0x01, 0x75, 0x81, 0x01, 0x95, 0x01, 0x75, 0x03, 0x01, 0x95, 0x03, 0x01, 0x94, 0x01, 0x01, 0xB5, 0x01, 0x01, 0xD5, 0x87, 0x01, 0xB5, 0x01, 0xD5, 0x02, 0x16, 0x23, 0x5B, 0x33, 0xBC, 0x1B, 0x1A, 0x02, 0x37, 0x01, 0xF6, 0x01, 0x01, + 0xB5, 0x02, 0x01, 0x95, 0x82, 0x01, 0x74, 0x01, 0x75, 0x01, 0x74, 0x01, 0x01, 0x95, 0x83, 0x01, 0x74, 0x01, 0x75, 0x01, 0x95, 0x01, 0x74, 0x02, 0x01, 0x95, 0x05, 0x01, 0x75, 0x82, 0x01, 0x74, 0x01, 0x75, 0x01, 0x74, 0x03, 0x01, 0x75, 0x82, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x02, 0x01, 0x75, 0x01, 0x01, 0x54, 0x81, 0x01, 0x55, 0x01, 0x75, 0x01, 0x01, 0x74, 0x82, 0x01, 0x75, 0x01, 0x74, 0x01, 0x75, 0x01, 0x01, 0x74, 0x84, 0x01, 0x94, 0x01, 0x74, 0x01, 0x94, 0x01, 0xB5, 0x01, 0x74, 0x01, 0x01, 0x94, 0x80, 0x01, 0x95, 0x02, 0x01, 0x74, 0x81, 0x01, 0x94, 0x01, 0x74, 0x03, 0x01, 0xB5, 0x87, 0x12, 0x98, 0x2B, 0x7B, 0x2B, 0x5B, 0x23, 0x1A, 0x0A, 0x57, 0x01, 0xF6, 0x01, 0xB5, 0x01, 0x95, 0x01, 0x01, 0x94, 0x01, 0x01, 0x75, 0x80, 0x01, 0x95, 0x01, 0x01, 0x94, 0x08, 0x01, 0x74, 0x01, 0x01, 0x95, 0x01, 0x01, 0x74, 0x80, 0x01, 0x54, 0x02, 0x01, 0x74, 0x80, 0x01, 0x95, 0x04, 0x01, 0x74, 0x01, 0x01, 0x54, 0x01, 0x01, 0x74, 0x01, 0x01, 0x54, 0x01, 0x01, 0x74, 0x01, 0x01, 0x54, 0x01, 0x01, 0x74, 0x81, 0x01, 0x94, 0x01, 0x74, 0x01, 0x01, 0x94, 0x04, 0x01, 0x74, 0x01, 0x01, 0x54, 0x82, 0x01, 0x74, 0x01, 0x53, 0x01, 0x54, 0x01, 0x01, 0x74, 0x02, 0x01, 0x94, 0x88, 0x01, 0xF5, 0x1A, 0xD8, 0x33, 0x9B, 0x2B, 0xBB, 0x1B, 0x19, 0x02, 0x77, 0x02, 0x36, 0x01, 0xD4, 0x01, 0xB4, 0x01, 0x01, 0x94, 0x0A, 0x01, 0x54, 0x80, 0x01, 0x33, 0x01, 0x01, 0x54, 0x03, 0x01, 0x53, 0x80, 0x01, 0x33, 0x05, 0x01, 0x53, 0x82, 0x01, 0x73, 0x01, 0x74, 0x01, 0x73, + 0x01, 0x01, 0xB4, 0x89, 0x01, 0xD5, 0x0A, 0x56, 0x2B, 0x5A, 0x2B, 0x7A, 0x1A, 0xF9, 0x0A, 0x77, 0x01, 0xF5, 0x01, 0xB4, 0x01, 0x94, 0x01, 0x74, 0x01, 0x01, 0x53, 0x01, 0x01, 0x54, 0x82, 0x01, 0x74, 0x01, 0x53, 0x01, 0x74, 0x03, 0x01, 0x54, 0x80, 0x01, 0x74, 0x08, 0x01, 0x54, 0x80, 0x01, 0x75, 0x01, 0x01, 0x54, 0x80, 0x01, 0x74, 0x01, 0x01, 0x54, 0x06, 0x01, 0x74, 0x81, 0x01, 0x54, 0x01, 0x74, 0x01, 0x01, 0x54, 0x80, 0x01, 0x74, 0x04, 0x01, 0x54, 0x80, 0x01, 0x74, 0x01, 0x01, 0x54, 0x01, 0x01, 0x74, 0x81, 0x01, 0x54, 0x01, 0x74, 0x01, 0x01, 0x54, 0x01, 0x01, 0x74, 0x03, 0x01, 0x94, 0x88, 0x01, 0xB4, 0x01, 0xD4, 0x0A, 0x57, 0x33, 0x9B, 0x3B, 0xDD, 0x23, 0x5A, 0x12, 0x77, 0x01, 0xF5, 0x01, 0xB5, 0x01, 0x01, 0x94, 0x04, 0x01, 0x74, 0x03, 0x01, 0x54, 0x01, 0x01, 0x75, 0x05, 0x01, 0x55, 0x03, 0x01, 0x75, 0x81, 0x01, 0x55, 0x01, 0x54, 0x01, 0x01, 0x55, 0x01, 0x01, 0x75, 0x81, 0x01, 0x55, 0x01, 0x75, 0x01, 0x01, 0x54, 0x03, 0x01, 0x75, 0x80, 0x01, 0x54, 0x02, 0x01, 0x75, 0x80, 0x01, 0x54, 0x06, 0x01, 0x75, 0x04, 0x01, 0x74, 0x80, 0x01, 0x94, 0x01, 0x01, 0x74, 0x81, 0x01, 0x94, 0x01, 0x74, 0x02, 0x01, 0x94, 0x86, 0x01, 0xB5, 0x01, 0xD5, 0x1A, 0xD9, 0x3B, 0xFD, 0x33, 0xBC, 0x12, 0x98, 0x01, 0xD5, 0x01, 0x01, 0xB5, 0x02, 0x01, 0x94, 0x80, 0x01, 0x95, 0x02, 0x01, 0x74, 0x01, 0x01, 0x75, 0x82, 0x01, 0x96, 0x01, 0x75, 0x01, 0x55, 0x03, 0x01, 0x75, 0x80, 0x01, 0x54, 0x13, 0x01, 0x75, 0x85, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, + 0x75, 0x01, 0x95, 0x01, 0x75, 0x02, 0x01, 0x95, 0x01, 0x01, 0x75, 0x80, 0x01, 0x95, 0x01, 0x01, 0x75, 0x80, 0x01, 0x95, 0x01, 0x01, 0x75, 0x81, 0x01, 0x95, 0x01, 0x75, 0x02, 0x01, 0x95, 0x02, 0x01, 0xB5, 0x85, 0x01, 0xD5, 0x12, 0x78, 0x33, 0x9C, 0x2B, 0x5B, 0x0A, 0x57, 0x01, 0xF6, 0x01, 0x01, 0xB5, 0x01, 0x01, 0x95, 0x01, 0x01, 0x74, 0x80, 0x01, 0x75, 0x01, 0x01, 0x95, 0x01, 0x01, 0x75, 0x01, 0x01, 0x95, 0x04, 0x01, 0x75, 0x80, 0x01, 0x95, 0x02, 0x01, 0x75, 0x80, 0x01, 0x95, 0x04, 0x01, 0x75, 0x80, 0x01, 0x95, 0x02, 0x01, 0x75, 0x80, 0x01, 0x55, 0x05, 0x01, 0x75, 0x80, 0x01, 0x95, 0x01, 0x01, 0x75, 0x80, 0x01, 0x95, 0x0A, 0x01, 0x75, 0x07, 0x01, 0x95, 0x80, 0x01, 0x94, 0x01, 0x01, 0xB5, 0x85, 0x01, 0xF6, 0x3B, 0xDD, 0x33, 0xDD, 0x02, 0x37, 0x01, 0xD6, 0x01, 0xB5, 0x03, 0x01, 0x95, 0x80, 0x01, 0x75, 0x03, 0x01, 0x95, 0x80, 0x01, 0x75, 0x01, 0x01, 0x96, 0x80, 0x01, 0x95, 0x05, 0x01, 0x96, 0x82, 0x01, 0x95, 0x01, 0x75, 0x01, 0x96, 0x01, 0x01, 0x95, 0x80, 0x01, 0x96, 0x01, 0x01, 0x75, 0x82, 0x01, 0x95, 0x01, 0x96, 0x01, 0x75, 0x08, 0x01, 0x95, 0x01, 0x01, 0x75, 0x03, 0x01, 0x95, 0x80, 0x01, 0x75, 0x04, 0x01, 0x95, 0x01, 0x01, 0x75, 0x81, 0x01, 0x95, 0x01, 0x75, 0x07, 0x01, 0x95, 0x86, 0x01, 0xB5, 0x01, 0xD5, 0x0A, 0x57, 0x4C, 0x7F, 0x02, 0x57, 0x01, 0xF6, 0x01, 0xB6, 0x02, 0x01, 0x95, 0x81, 0x01, 0x75, 0x01, 0x95, 0x01, 0x01, 0x75, 0x02, 0x01, 0x96, 0x82, 0x01, 0x76, 0x01, 0x96, 0x01, 0x75, 0x02, 0x01, 0x96, 0x04, 0x01, + 0x95, 0x82, 0x01, 0x75, 0x01, 0x95, 0x01, 0x76, 0x01, 0x01, 0x75, 0x81, 0x01, 0x95, 0x01, 0x75, 0x09, 0x01, 0x95, 0x02, 0x01, 0x75, 0x81, 0x01, 0x95, 0x01, 0x75, 0x01, 0x01, 0x95, 0x85, 0x01, 0x75, 0x01, 0x95, 0x01, 0x96, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x01, 0x75, 0x08, 0x01, 0x95, 0x01, 0x01, 0xB5, 0x86, 0x01, 0xD5, 0x02, 0x16, 0x3B, 0xFE, 0x02, 0x57, 0x01, 0xF6, 0x01, 0xB6, 0x01, 0xB5, 0x01, 0x01, 0x95, 0x80, 0x01, 0xB5, 0x02, 0x01, 0x95, 0x80, 0x01, 0x96, 0x01, 0x01, 0x95, 0x80, 0x01, 0x75, 0x01, 0x01, 0x96, 0x80, 0x01, 0x75, 0x04, 0x01, 0x96, 0x01, 0x01, 0x95, 0x81, 0x01, 0x96, 0x01, 0x95, 0x02, 0x01, 0x96, 0x80, 0x01, 0x95, 0x01, 0x01, 0x96, 0x01, 0x01, 0x75, 0x82, 0x01, 0x96, 0x01, 0x95, 0x01, 0x75, 0x02, 0x01, 0x96, 0x80, 0x01, 0x95, 0x02, 0x01, 0x96, 0x01, 0x01, 0x95, 0x80, 0x01, 0x96, 0x01, 0x01, 0x95, 0x01, 0x01, 0x96, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x01, 0x01, 0x95, 0x81, 0x01, 0x96, 0x01, 0x95, 0x02, 0x01, 0x96, 0x81, 0x01, 0x75, 0x01, 0x95, 0x01, 0x01, 0x75, 0x02, 0x01, 0x95, 0x81, 0x23, 0x5B, 0x1A, 0xD9, 0x02, 0x01, 0xB6, 0x81, 0x01, 0x96, 0x01, 0x95, 0x10, 0x01, 0x96, 0x01, 0x01, 0x95, 0x01, 0x01, 0x96, 0x82, 0x01, 0x95, 0x01, 0x75, 0x01, 0x96, 0x03, 0x01, 0x95, 0x81, 0x01, 0x96, 0x01, 0x95, 0x06, 0x01, 0x96, 0x80, 0x01, 0x95, 0x06, 0x01, 0x96, 0x80, 0x01, 0x95, 0x01, 0x01, 0x96, 0x07, 0x01, 0x95, 0x80, 0x01, 0xB6, 0x04, 0x01, 0x95, 0x01, 0x01, 0xB5, 0x83, 0x01, 0xF6, 0x02, 0x57, 0x3B, + 0xFE, 0x0A, 0x37, 0x01, 0x01, 0xB6, 0x01, 0x01, 0x96, 0x06, 0x01, 0x95, 0x81, 0x01, 0x96, 0x01, 0x75, 0x01, 0x01, 0x95, 0x02, 0x01, 0x75, 0x80, 0x01, 0x95, 0x01, 0x01, 0x96, 0x06, 0x01, 0x75, 0x86, 0x01, 0x96, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x01, 0x01, 0x95, 0x01, 0x01, 0x75, 0x80, 0x01, 0x95, 0x01, 0x01, 0x75, 0x01, 0x01, 0x95, 0x84, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x01, 0x76, 0x01, 0x75, 0x03, 0x01, 0x96, 0x80, 0x01, 0x95, 0x01, 0x01, 0x96, 0x81, 0x01, 0x95, 0x01, 0x96, 0x05, 0x01, 0x95, 0x01, 0x01, 0xB5, 0x89, 0x02, 0x16, 0x02, 0x36, 0x3C, 0x1E, 0x12, 0xB9, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0xB5, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x01, 0x75, 0x01, 0x01, 0x95, 0x03, 0x01, 0x75, 0x04, 0x01, 0x95, 0x80, 0x01, 0x75, 0x01, 0x01, 0x95, 0x81, 0x01, 0x75, 0x01, 0x95, 0x01, 0x01, 0x75, 0x01, 0x01, 0x96, 0x01, 0x01, 0x95, 0x85, 0x01, 0xB6, 0x01, 0x96, 0x01, 0x95, 0x01, 0xB6, 0x01, 0x96, 0x01, 0xB6, 0x01, 0x01, 0x95, 0x01, 0x01, 0xB6, 0x80, 0x01, 0x95, 0x01, 0x01, 0xB6, 0x01, 0x01, 0xB5, 0x80, 0x09, 0xD6, 0x01, 0x09, 0xB5, 0x89, 0x19, 0xD6, 0x19, 0x75, 0x29, 0x95, 0x31, 0x54, 0x41, 0x33, 0x92, 0xD8, 0x92, 0x55, 0x9A, 0x35, 0xAA, 0x34, 0xA1, 0xD3, 0x02, 0xA9, 0xD3, 0x02, 0xB1, 0xD3, 0x82, 0xA9, 0xB3, 0xB1, 0xD3, 0xA9, 0xD3, 0x01, 0xB1, 0xD3, 0x01, 0xA9, 0xD3, 0x82, 0xB1, 0xF3, 0xA9, 0xD3, 0xB1, 0xF3, 0x02, 0xA9, 0xD3, 0x88, 0xA9, 0xF4, 0xAA, 0x14, 0xA2, 0x14, 0x9A, 0x55, 0x92, + 0xB7, 0x51, 0x52, 0x29, 0x12, 0x11, 0x54, 0x09, 0x74, 0x01, 0x01, 0x95, 0x80, 0x01, 0xB5, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x01, 0x01, 0x95, 0x01, 0x01, 0x75, 0x84, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x01, 0x74, 0x01, 0x01, 0x75, 0x82, 0x01, 0x74, 0x01, 0x95, 0x01, 0x75, 0x01, 0x01, 0x74, 0x80, 0x01, 0x75, 0x01, 0x01, 0x74, 0x80, 0x01, 0x75, 0x01, 0x01, 0x74, 0x01, 0x01, 0x75, 0x01, 0x01, 0x74, 0x81, 0x01, 0x75, 0x01, 0x95, 0x02, 0x01, 0x75, 0x84, 0x01, 0x74, 0x01, 0x94, 0x01, 0x95, 0x01, 0x94, 0x01, 0x95, 0x01, 0x01, 0xB5, 0x82, 0x01, 0x94, 0x01, 0xB5, 0x01, 0x95, 0x01, 0x01, 0xB5, 0x86, 0x01, 0xF5, 0x0A, 0x36, 0x23, 0x3A, 0x2B, 0x7B, 0x12, 0x98, 0x01, 0xD5, 0x01, 0xB5, 0x07, 0x01, 0x95, 0x01, 0x01, 0x75, 0x02, 0x01, 0x74, 0x09, 0x01, 0x75, 0x81, 0x01, 0x55, 0x01, 0x75, 0x01, 0x01, 0x54, 0x80, 0x01, 0x74, 0x01, 0x01, 0x54, 0x80, 0x01, 0x74, 0x02, 0x01, 0x54, 0x82, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x01, 0x01, 0x54, 0x80, 0x01, 0x74, 0x07, 0x01, 0x54, 0x07, 0x01, 0x74, 0x81, 0x01, 0x94, 0x01, 0xB5, 0x01, 0x01, 0x94, 0x80, 0x01, 0xB4, 0x01, 0x01, 0x94, 0x8A, 0x01, 0xB5, 0x02, 0x16, 0x1A, 0xD9, 0x33, 0xBC, 0x1A, 0xD9, 0x01, 0xB5, 0x01, 0xB4, 0x01, 0x95, 0x01, 0x94, 0x01, 0x74, 0x01, 0x54, 0x0C, 0x01, 0x74, 0x03, 0x01, 0x54, 0x81, 0x01, 0x74, 0x01, 0x54, 0x01, 0x01, 0x74, 0x03, 0x01, 0x54, 0x01, 0x01, 0x74, 0x01, 0x01, 0x54, 0x80, 0x01, 0x34, 0x04, 0x01, 0x54, 0x82, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, + 0x01, 0x01, 0x54, 0x80, 0x01, 0x74, 0x01, 0x01, 0x54, 0x03, 0x01, 0x74, 0x81, 0x01, 0x54, 0x01, 0x74, 0x01, 0x01, 0x54, 0x81, 0x01, 0x74, 0x01, 0x54, 0x02, 0x01, 0x74, 0x02, 0x01, 0x94, 0x82, 0x01, 0xB4, 0x01, 0xF5, 0x12, 0xB8, 0x01, 0x2B, 0x7B, 0x81, 0x12, 0x77, 0x01, 0xD5, 0x01, 0x01, 0x94, 0x07, 0x01, 0x74, 0x01, 0x01, 0x54, 0x01, 0x01, 0x74, 0x80, 0x01, 0x53, 0x01, 0x01, 0x54, 0x81, 0x01, 0x53, 0x01, 0x74, 0x01, 0x01, 0x53, 0x81, 0x01, 0x74, 0x01, 0x53, 0x03, 0x01, 0x54, 0x02, 0x01, 0x53, 0x01, 0x01, 0x54, 0x84, 0x01, 0x53, 0x01, 0x74, 0x01, 0x54, 0x01, 0x53, 0x01, 0x54, 0x02, 0x01, 0x53, 0x81, 0x01, 0x33, 0x01, 0x54, 0x0F, 0x01, 0x53, 0x8B, 0x01, 0x73, 0x01, 0x53, 0x01, 0x74, 0x01, 0x73, 0x01, 0x93, 0x01, 0xB4, 0x02, 0x36, 0x12, 0x97, 0x2B, 0x7A, 0x2B, 0x5A, 0x0A, 0x56, 0x01, 0xF5, 0x01, 0x01, 0x73, 0x80, 0x01, 0x54, 0x07, 0x01, 0x33, 0x84, 0x01, 0x54, 0x01, 0x74, 0x01, 0x53, 0x01, 0x74, 0x01, 0x73, 0x01, 0x01, 0x53, 0x01, 0x01, 0x33, 0x01, 0x01, 0x53, 0x84, 0x01, 0x73, 0x01, 0x53, 0x01, 0x73, 0x01, 0x53, 0x01, 0x73, 0x01, 0x01, 0x93, 0x87, 0x01, 0xB4, 0x02, 0x15, 0x1A, 0xB7, 0x2B, 0x5A, 0x33, 0x5A, 0x12, 0x56, 0x01, 0xB4, 0x01, 0x94, 0x02, 0x01, 0x73, 0x02, 0x01, 0x53, 0x02, 0x01, 0x33, 0x01, 0x01, 0x53, 0x85, 0x01, 0x74, 0x01, 0x53, 0x01, 0x74, 0x01, 0x53, 0x01, 0x33, 0x01, 0x54, 0x01, 0x01, 0x33, 0x83, 0x01, 0x34, 0x01, 0x54, 0x01, 0x74, 0x01, 0x33, 0x07, 0x01, 0x54, 0x87, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, + 0x01, 0x54, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x01, 0x54, 0x01, 0x01, 0x34, 0x01, 0x01, 0x54, 0x01, 0x01, 0x74, 0x81, 0x01, 0x54, 0x01, 0x53, 0x01, 0x01, 0x54, 0x82, 0x01, 0x74, 0x01, 0x53, 0x01, 0x54, 0x04, 0x01, 0x53, 0x82, 0x01, 0x74, 0x01, 0x73, 0x01, 0x74, 0x01, 0x01, 0x94, 0x88, 0x01, 0xB4, 0x01, 0xF4, 0x0A, 0x76, 0x23, 0x3A, 0x33, 0xBC, 0x23, 0x19, 0x0A, 0x56, 0x01, 0x94, 0x01, 0x73, 0x02, 0x01, 0x74, 0x01, 0x01, 0x54, 0x80, 0x01, 0x53, 0x01, 0x01, 0x54, 0x82, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x04, 0x01, 0x54, 0x81, 0x01, 0x75, 0x01, 0x34, 0x01, 0x01, 0x54, 0x81, 0x01, 0x55, 0x01, 0x75, 0x02, 0x01, 0x54, 0x80, 0x01, 0x75, 0x03, 0x01, 0x54, 0x82, 0x01, 0x74, 0x01, 0x75, 0x01, 0x95, 0x02, 0x01, 0x54, 0x81, 0x01, 0x74, 0x01, 0x54, 0x01, 0x01, 0x74, 0x03, 0x01, 0x54, 0x84, 0x01, 0x74, 0x01, 0x54, 0x01, 0x95, 0x01, 0x75, 0x01, 0x74, 0x02, 0x01, 0x54, 0x01, 0x01, 0x74, 0x80, 0x01, 0x53, 0x04, 0x01, 0x74, 0x02, 0x01, 0x94, 0x85, 0x01, 0xB4, 0x12, 0x57, 0x33, 0x5B, 0x3B, 0x9C, 0x1A, 0xB8, 0x01, 0xB4, 0x01, 0x01, 0x94, 0x02, 0x01, 0x74, 0x80, 0x01, 0x94, 0x03, 0x01, 0x74, 0x81, 0x01, 0x54, 0x01, 0x74, 0x03, 0x01, 0x75, 0x80, 0x01, 0x54, 0x01, 0x01, 0x74, 0x83, 0x01, 0x95, 0x01, 0x75, 0x01, 0x74, 0x01, 0x54, 0x03, 0x01, 0x75, 0x83, 0x01, 0x54, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x01, 0x01, 0x75, 0x84, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x74, 0x01, 0x95, 0x06, 0x01, 0x74, 0x84, 0x01, 0x95, 0x01, 0x74, 0x01, + 0x95, 0x01, 0x75, 0x01, 0x95, 0x03, 0x01, 0x54, 0x81, 0x01, 0x74, 0x01, 0x95, 0x03, 0x01, 0x74, 0x01, 0x01, 0x94, 0x02, 0x01, 0xB4, 0x87, 0x01, 0xD5, 0x1A, 0xF9, 0x33, 0x7C, 0x12, 0x98, 0x01, 0xF5, 0x01, 0xD5, 0x01, 0xB5, 0x01, 0x95, 0x02, 0x01, 0x74, 0x01, 0x01, 0x95, 0x06, 0x01, 0x75, 0x80, 0x01, 0x95, 0x02, 0x01, 0x75, 0x82, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x02, 0x01, 0x75, 0x83, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x74, 0x05, 0x01, 0x75, 0x83, 0x01, 0x95, 0x01, 0x74, 0x01, 0x75, 0x01, 0x95, 0x01, 0x01, 0x75, 0x82, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x02, 0x01, 0x75, 0x82, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x01, 0x75, 0x80, 0x01, 0x74, 0x01, 0x01, 0x95, 0x01, 0x01, 0x74, 0x83, 0x01, 0x95, 0x01, 0x74, 0x01, 0xB5, 0x01, 0x95, 0x01, 0x01, 0x74, 0x80, 0x01, 0x94, 0x01, 0x01, 0xB5, 0x85, 0x02, 0x16, 0x2B, 0x5B, 0x23, 0x1A, 0x02, 0x16, 0x01, 0xD6, 0x01, 0x95, 0x01, 0x01, 0x74, 0x80, 0x01, 0x75, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x02, 0x01, 0x95, 0x08, 0x01, 0x75, 0x80, 0x01, 0xB6, 0x03, 0x01, 0x95, 0x82, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x01, 0x01, 0x95, 0x01, 0x01, 0x75, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x06, 0x01, 0x95, 0x01, 0x01, 0x75, 0x82, 0x01, 0x95, 0x01, 0x75, 0x01, 0x74, 0x01, 0x01, 0x95, 0x80, 0x01, 0xB5, 0x01, 0x01, 0x95, 0x80, 0x01, 0x94, 0x01, 0x01, 0x74, 0x87, 0x01, 0xB5, 0x01, 0xD5, 0x01, 0xF6, 0x44, 0x1E, + 0x12, 0xB9, 0x01, 0xF6, 0x01, 0xD6, 0x01, 0x95, 0x02, 0x01, 0x75, 0x80, 0x01, 0x95, 0x01, 0x01, 0x75, 0x83, 0x01, 0xB6, 0x01, 0x95, 0x01, 0xB6, 0x01, 0x96, 0x03, 0x01, 0x75, 0x80, 0x01, 0xB6, 0x01, 0x01, 0x95, 0x80, 0x01, 0x75, 0x04, 0x01, 0x95, 0x02, 0x01, 0x75, 0x04, 0x01, 0x95, 0x80, 0x01, 0x75, 0x01, 0x01, 0x95, 0x80, 0x01, 0xB6, 0x03, 0x01, 0x95, 0x80, 0x01, 0x75, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x01, 0x01, 0x95, 0x02, 0x01, 0x75, 0x01, 0x01, 0x95, 0x82, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x01, 0x01, 0x95, 0x80, 0x01, 0xB5, 0x05, 0x01, 0x95, 0x85, 0x01, 0xB5, 0x01, 0xD5, 0x1A, 0xD9, 0x33, 0xBC, 0x02, 0x16, 0x01, 0xD5, 0x02, 0x01, 0xB5, 0x02, 0x01, 0x95, 0x82, 0x01, 0xB5, 0x01, 0x95, 0x01, 0x75, 0x04, 0x01, 0x95, 0x8A, 0x01, 0x75, 0x01, 0x96, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x01, 0x01, 0x95, 0x01, 0x01, 0x75, 0x02, 0x01, 0x95, 0x82, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x03, 0x01, 0x95, 0x80, 0x01, 0xB6, 0x01, 0x01, 0x95, 0x01, 0x01, 0x75, 0x89, 0x01, 0x95, 0x01, 0x75, 0x01, 0x55, 0x01, 0x75, 0x01, 0x74, 0x01, 0x75, 0x01, 0x95, 0x1A, 0xFA, 0x12, 0xB8, 0x01, 0xB5, 0x05, 0x01, 0x95, 0x80, 0x01, 0x75, 0x02, 0x01, 0x96, 0x02, 0x01, 0x95, 0x01, 0x01, 0x75, 0x83, 0x01, 0x96, 0x01, 0xB6, 0x01, 0x96, + 0x01, 0x75, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x04, 0x01, 0x95, 0x80, 0x01, 0x75, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x02, 0x01, 0x95, 0x01, 0x01, 0x75, 0x81, 0x01, 0x95, 0x01, 0x96, 0x02, 0x01, 0x95, 0x01, 0x01, 0x96, 0x81, 0x01, 0x95, 0x01, 0x75, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x02, 0x01, 0x95, 0x80, 0x01, 0x75, 0x08, 0x01, 0x95, 0x81, 0x01, 0x74, 0x01, 0xB5, 0x01, 0x01, 0x95, 0x84, 0x01, 0xB5, 0x01, 0xD6, 0x2B, 0x5B, 0x2B, 0x5C, 0x01, 0xB5, 0x01, 0x01, 0x95, 0x80, 0x01, 0x75, 0x03, 0x01, 0x95, 0x82, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x02, 0x01, 0x95, 0x83, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x0E, 0x01, 0x75, 0x80, 0x01, 0x95, 0x02, 0x01, 0x75, 0x80, 0x01, 0x95, 0x04, 0x01, 0x75, 0x80, 0x01, 0x95, 0x01, 0x01, 0x75, 0x80, 0x01, 0x54, 0x08, 0x01, 0x75, 0x83, 0x01, 0x95, 0x01, 0x75, 0x01, 0x74, 0x01, 0x75, 0x01, 0x01, 0x95, 0x02, 0x01, 0x94, 0x89, 0x01, 0x95, 0x01, 0xB5, 0x01, 0xD5, 0x0A, 0x37, 0x3B, 0xFD, 0x0A, 0x37, 0x01, 0xB5, 0x01, 0x95, 0x01, 0x75, 0x01, 0x74, 0x02, 0x01, 0x54, 0x89, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x01, 0x75, 0x82, 0x01, 0x95, 0x01, 0x75, 0x01, 0x55, 0x03, 0x01, 0x75, 0x05, 0x01, 0x95, 0x83, 0x01, 0x96, 0x01, 0x95, 0x01, 0xB6, 0x01, 0xB5, 0x01, 0x01, 0x95, 0x83, 0x01, 0xB6, 0x01, 0x95, 0x01, 0xB6, 0x01, 0xB5, 0x02, 0x09, 0xD6, 0x01, 0x09, 0xB5, 0x8B, 0x11, 0x95, 0x19, 0x95, 0x21, + 0x75, 0x29, 0x54, 0x31, 0x12, 0x72, 0x56, 0x9A, 0xB7, 0x9A, 0x15, 0xA1, 0xF4, 0xAA, 0x14, 0xA9, 0xF4, 0xA9, 0xD3, 0x03, 0xB1, 0xD3, 0x85, 0xB1, 0xF3, 0xB1, 0xD3, 0xA9, 0xD3, 0xA9, 0xB3, 0xA9, 0xD3, 0xB1, 0xF3, 0x01, 0xA9, 0xD3, 0x01, 0xB1, 0xF4, 0x8B, 0xB1, 0xF3, 0xA9, 0xD3, 0xB1, 0xF4, 0xA9, 0xD3, 0xA9, 0xF4, 0xA2, 0x14, 0x9A, 0x35, 0x92, 0x97, 0x61, 0xD4, 0x18, 0x90, 0x11, 0x33, 0x01, 0x33, 0x02, 0x01, 0x74, 0x83, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x01, 0x01, 0x55, 0x01, 0x01, 0x54, 0x82, 0x01, 0x95, 0x01, 0x74, 0x01, 0x95, 0x01, 0x01, 0x74, 0x80, 0x01, 0x75, 0x05, 0x01, 0x74, 0x80, 0x01, 0x75, 0x01, 0x01, 0x74, 0x80, 0x01, 0x54, 0x01, 0x01, 0x74, 0x82, 0x01, 0x95, 0x01, 0x74, 0x01, 0x95, 0x07, 0x01, 0x74, 0x02, 0x01, 0x94, 0x01, 0x01, 0x74, 0x80, 0x01, 0x94, 0x02, 0x01, 0x74, 0x02, 0x01, 0x94, 0x85, 0x01, 0xB4, 0x12, 0x77, 0x2B, 0x5B, 0x1A, 0xD9, 0x01, 0xF5, 0x01, 0xB4, 0x01, 0x01, 0x94, 0x80, 0x01, 0x95, 0x02, 0x01, 0x74, 0x80, 0x01, 0x54, 0x01, 0x01, 0x74, 0x81, 0x01, 0x95, 0x01, 0x54, 0x01, 0x01, 0x74, 0x80, 0x01, 0x95, 0x01, 0x01, 0x74, 0x80, 0x01, 0x54, 0x01, 0x01, 0x74, 0x01, 0x01, 0x54, 0x02, 0x01, 0x75, 0x02, 0x01, 0x54, 0x84, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x03, 0x01, 0x54, 0x80, 0x01, 0x53, 0x01, 0x01, 0x74, 0x02, 0x01, 0x54, 0x80, 0x01, 0x34, 0x01, 0x01, 0x54, 0x01, 0x01, 0x74, 0x01, 0x01, 0x54, 0x01, 0x01, 0x53, 0x01, 0x01, 0x74, 0x01, 0x01, 0x54, 0x82, 0x01, + 0x74, 0x01, 0x73, 0x01, 0x94, 0x01, 0x01, 0x74, 0x81, 0x01, 0x73, 0x01, 0x74, 0x02, 0x01, 0x94, 0x85, 0x01, 0xD5, 0x22, 0xF9, 0x2B, 0x3A, 0x12, 0x56, 0x01, 0xB4, 0x01, 0x94, 0x04, 0x01, 0x74, 0x02, 0x01, 0x53, 0x01, 0x01, 0x73, 0x02, 0x01, 0x74, 0x81, 0x01, 0x53, 0x01, 0x54, 0x01, 0x01, 0x74, 0x01, 0x01, 0x54, 0x82, 0x01, 0x33, 0x01, 0x54, 0x01, 0x53, 0x01, 0x01, 0x54, 0x81, 0x01, 0x74, 0x01, 0x54, 0x02, 0x01, 0x33, 0x82, 0x01, 0x54, 0x01, 0x33, 0x01, 0x34, 0x01, 0x01, 0x33, 0x83, 0x01, 0x54, 0x01, 0x33, 0x01, 0x54, 0x01, 0x33, 0x03, 0x01, 0x54, 0x80, 0x01, 0x74, 0x01, 0x01, 0x54, 0x01, 0x01, 0x53, 0x01, 0x01, 0x73, 0x0A, 0x01, 0x53, 0x03, 0x01, 0x73, 0x81, 0x01, 0xB4, 0x1A, 0x97, 0x01, 0x23, 0x19, 0x82, 0x0A, 0x56, 0x01, 0xD4, 0x01, 0x94, 0x01, 0x01, 0x73, 0x80, 0x01, 0x74, 0x01, 0x01, 0x53, 0x01, 0x01, 0x33, 0x81, 0x01, 0x53, 0x01, 0x33, 0x03, 0x01, 0x53, 0x80, 0x01, 0x33, 0x01, 0x01, 0x53, 0x80, 0x01, 0x33, 0x01, 0x01, 0x53, 0x01, 0x01, 0x33, 0x03, 0x01, 0x53, 0x09, 0x01, 0x33, 0x82, 0x01, 0x53, 0x01, 0x33, 0x01, 0x53, 0x01, 0x01, 0x33, 0x03, 0x01, 0x53, 0x81, 0x01, 0x33, 0x01, 0x53, 0x06, 0x01, 0x33, 0x02, 0x01, 0x53, 0x80, 0x01, 0x33, 0x01, 0x01, 0x53, 0x03, 0x01, 0x73, 0x85, 0x01, 0x93, 0x01, 0xF5, 0x1A, 0xB7, 0x33, 0x5A, 0x2B, 0x3A, 0x12, 0x56, 0x01, 0x01, 0x33, 0x80, 0x01, 0x53, 0x01, 0x01, 0x33, 0x80, 0x01, 0x13, 0x05, 0x01, 0x33, 0x81, 0x01, 0x53, 0x01, 0x32, 0x01, 0x01, 0x53, 0x82, 0x01, 0x32, 0x01, 0x53, + 0x01, 0x33, 0x02, 0x01, 0x53, 0x02, 0x01, 0x73, 0x94, 0x01, 0xB4, 0x22, 0xB8, 0x33, 0x5A, 0x2B, 0x39, 0x12, 0x97, 0x0A, 0x15, 0x01, 0xB4, 0x01, 0x93, 0x01, 0x73, 0x01, 0x53, 0x01, 0x33, 0x01, 0x53, 0x01, 0x33, 0x01, 0x53, 0x01, 0x32, 0x01, 0x33, 0x01, 0x12, 0x01, 0x33, 0x01, 0x53, 0x01, 0x33, 0x01, 0x53, 0x01, 0x01, 0x33, 0x80, 0x01, 0x53, 0x03, 0x01, 0x33, 0x82, 0x01, 0x53, 0x01, 0x33, 0x01, 0x53, 0x01, 0x01, 0x33, 0x80, 0x01, 0x53, 0x01, 0x01, 0x33, 0x81, 0x01, 0x53, 0x01, 0x33, 0x01, 0x01, 0x53, 0x01, 0x01, 0x54, 0x82, 0x01, 0x33, 0x01, 0x54, 0x01, 0x74, 0x01, 0x01, 0x54, 0x80, 0x01, 0x74, 0x01, 0x01, 0x33, 0x81, 0x01, 0x54, 0x01, 0x33, 0x02, 0x01, 0x54, 0x02, 0x01, 0x33, 0x01, 0x01, 0x53, 0x01, 0x01, 0x33, 0x83, 0x01, 0x53, 0x01, 0x33, 0x01, 0x53, 0x01, 0x33, 0x01, 0x01, 0x53, 0x8A, 0x01, 0x73, 0x01, 0x93, 0x01, 0x94, 0x01, 0xD4, 0x1A, 0x97, 0x33, 0x7A, 0x2B, 0x39, 0x12, 0x97, 0x02, 0x15, 0x01, 0x94, 0x01, 0x73, 0x02, 0x01, 0x53, 0x80, 0x01, 0x33, 0x01, 0x01, 0x53, 0x80, 0x01, 0x33, 0x01, 0x01, 0x53, 0x82, 0x01, 0x54, 0x01, 0x53, 0x01, 0x74, 0x03, 0x01, 0x54, 0x80, 0x01, 0x34, 0x02, 0x01, 0x54, 0x06, 0x01, 0x34, 0x81, 0x01, 0x74, 0x01, 0x54, 0x01, 0x01, 0x34, 0x83, 0x01, 0x54, 0x01, 0x34, 0x01, 0x54, 0x01, 0x74, 0x02, 0x01, 0x54, 0x82, 0x01, 0x34, 0x01, 0x54, 0x01, 0x74, 0x01, 0x01, 0x33, 0x81, 0x01, 0x54, 0x01, 0x33, 0x04, 0x01, 0x54, 0x83, 0x01, 0x74, 0x01, 0x54, 0x01, 0x53, 0x01, 0x54, 0x02, 0x01, 0x53, 0x81, + 0x01, 0x73, 0x01, 0x53, 0x02, 0x01, 0x73, 0x87, 0x01, 0x93, 0x01, 0xB4, 0x12, 0x56, 0x33, 0x3A, 0x3B, 0x7B, 0x1A, 0x98, 0x01, 0xB4, 0x01, 0x73, 0x03, 0x01, 0x53, 0x04, 0x01, 0x54, 0x80, 0x01, 0x53, 0x02, 0x01, 0x54, 0x80, 0x01, 0x74, 0x02, 0x01, 0x54, 0x81, 0x01, 0x74, 0x01, 0x54, 0x01, 0x01, 0x74, 0x01, 0x01, 0x54, 0x02, 0x01, 0x74, 0x07, 0x01, 0x54, 0x03, 0x01, 0x74, 0x82, 0x01, 0x94, 0x01, 0x74, 0x01, 0x54, 0x02, 0x01, 0x74, 0x80, 0x01, 0x54, 0x02, 0x01, 0x74, 0x80, 0x01, 0x94, 0x01, 0x01, 0x74, 0x81, 0x01, 0x54, 0x01, 0x34, 0x01, 0x01, 0x54, 0x82, 0x01, 0x74, 0x01, 0x54, 0x01, 0x53, 0x02, 0x01, 0x74, 0x01, 0x01, 0x94, 0x8A, 0x01, 0xB4, 0x01, 0x94, 0x12, 0x57, 0x33, 0x9B, 0x1A, 0xD8, 0x01, 0xD5, 0x01, 0xB5, 0x01, 0xB4, 0x01, 0x94, 0x01, 0x74, 0x01, 0x54, 0x01, 0x01, 0x74, 0x82, 0x01, 0x54, 0x01, 0x74, 0x01, 0x75, 0x01, 0x01, 0x54, 0x86, 0x01, 0x75, 0x01, 0x54, 0x01, 0x75, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x01, 0x75, 0x06, 0x01, 0x74, 0x87, 0x01, 0x95, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x01, 0x75, 0x01, 0x54, 0x01, 0x74, 0x01, 0x54, 0x01, 0x01, 0x74, 0x8B, 0x01, 0x75, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x01, 0x75, 0x01, 0x54, 0x01, 0x74, 0x01, 0x54, 0x01, 0x75, 0x01, 0x95, 0x01, 0x74, 0x01, 0x54, 0x01, 0x01, 0x74, 0x81, 0x01, 0x75, 0x01, 0x74, 0x01, 0x01, 0x54, 0x01, 0x01, 0x74, 0x01, 0x01, 0x54, 0x81, 0x01, 0x74, 0x01, 0x54, 0x02, 0x01, 0x74, 0x80, 0x01, 0x53, 0x01, 0x01, 0x94, 0x86, 0x01, 0xB4, 0x0A, 0x36, + 0x33, 0x7B, 0x1A, 0xD9, 0x01, 0xD5, 0x01, 0x95, 0x01, 0x74, 0x02, 0x01, 0x54, 0x05, 0x01, 0x74, 0x82, 0x01, 0x54, 0x01, 0x75, 0x01, 0x54, 0x01, 0x01, 0x74, 0x04, 0x01, 0x75, 0x80, 0x01, 0x95, 0x01, 0x01, 0x75, 0x80, 0x01, 0x95, 0x04, 0x01, 0x75, 0x81, 0x01, 0x54, 0x01, 0x74, 0x02, 0x01, 0x75, 0x04, 0x01, 0x74, 0x81, 0x01, 0x95, 0x01, 0x74, 0x02, 0x01, 0x95, 0x01, 0x01, 0x74, 0x81, 0x01, 0x95, 0x01, 0x75, 0x06, 0x01, 0x74, 0x80, 0x01, 0x54, 0x01, 0x01, 0x74, 0x80, 0x01, 0x94, 0x05, 0x01, 0x74, 0x8A, 0x01, 0x94, 0x01, 0xB4, 0x3B, 0xBC, 0x22, 0xF9, 0x01, 0xF6, 0x01, 0xB5, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x04, 0x01, 0x75, 0x80, 0x01, 0x95, 0x01, 0x01, 0x55, 0x88, 0x01, 0x75, 0x01, 0x55, 0x01, 0x95, 0x01, 0x75, 0x01, 0x55, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x05, 0x01, 0x75, 0x80, 0x01, 0x95, 0x04, 0x01, 0x75, 0x80, 0x01, 0x74, 0x01, 0x01, 0x75, 0x82, 0x01, 0x95, 0x01, 0x75, 0x01, 0x74, 0x01, 0x01, 0x95, 0x80, 0x01, 0x74, 0x03, 0x01, 0x75, 0x80, 0x01, 0x95, 0x01, 0x01, 0x75, 0x83, 0x01, 0x74, 0x01, 0x95, 0x01, 0x75, 0x01, 0x74, 0x03, 0x01, 0x95, 0x02, 0x01, 0x75, 0x01, 0x01, 0x74, 0x80, 0x01, 0x94, 0x01, 0x01, 0x74, 0x83, 0x01, 0xD5, 0x33, 0x9B, 0x1A, 0xD9, 0x01, 0xF5, 0x01, 0x01, 0xB5, 0x80, 0x01, 0x94, 0x01, 0x01, 0x74, 0x07, 0x01, 0x75, 0x82, 0x01, 0x74, 0x01, 0x75, 0x01, 0x95, 0x04, 0x01, 0x75, 0x80, 0x01, 0x95, 0x02, 0x01, 0x75, 0x80, 0x01, 0x95, 0x02, 0x01, 0x75, 0x80, 0x01, + 0x95, 0x05, 0x01, 0x75, 0x80, 0x01, 0x95, 0x03, 0x01, 0x75, 0x82, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x02, 0x01, 0x75, 0x80, 0x01, 0x95, 0x02, 0x01, 0x75, 0x83, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x02, 0x01, 0x95, 0x05, 0x01, 0x75, 0x85, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x01, 0x54, 0x1A, 0xD9, 0x12, 0xB8, 0x02, 0x01, 0x95, 0x01, 0x01, 0x74, 0x80, 0x01, 0x95, 0x01, 0x01, 0x75, 0x81, 0x01, 0x95, 0x01, 0x75, 0x01, 0x01, 0x95, 0x02, 0x01, 0x75, 0x80, 0x01, 0x95, 0x01, 0x01, 0x75, 0x01, 0x01, 0x95, 0x81, 0x01, 0x75, 0x01, 0x95, 0x02, 0x01, 0x75, 0x81, 0x01, 0x95, 0x01, 0x75, 0x01, 0x01, 0x95, 0x05, 0x01, 0x75, 0x84, 0x01, 0x95, 0x01, 0x75, 0x01, 0x74, 0x01, 0x75, 0x01, 0x95, 0x01, 0x01, 0x75, 0x01, 0x01, 0x95, 0x01, 0x01, 0x75, 0x01, 0x01, 0x95, 0x06, 0x01, 0x75, 0x81, 0x01, 0x74, 0x01, 0x75, 0x03, 0x01, 0x95, 0x03, 0x01, 0x74, 0x81, 0x01, 0x94, 0x01, 0x95, 0x02, 0x01, 0x94, 0x86, 0x01, 0x95, 0x12, 0x78, 0x33, 0x9C, 0x01, 0xD5, 0x01, 0x94, 0x01, 0x74, 0x01, 0x75, 0x01, 0x01, 0x95, 0x01, 0x01, 0x74, 0x01, 0x01, 0x95, 0x03, 0x01, 0x75, 0x82, 0x01, 0x74, 0x01, 0x75, 0x01, 0x54, 0x01, 0x01, 0x75, 0x80, 0x01, 0x54, 0x02, 0x01, 0x75, 0x82, 0x01, 0x54, 0x01, 0x75, 0x01, 0x55, 0x02, 0x01, 0x75, 0x80, 0x01, 0x74, 0x02, 0x01, 0x75, 0x80, 0x01, 0x74, 0x02, 0x01, 0x75, 0x81, 0x01, 0x74, 0x01, 0x75, 0x02, 0x01, 0x74, 0x82, 0x01, 0x75, 0x01, 0x74, 0x01, 0x75, 0x01, 0x01, 0x74, 0x81, 0x01, 0x75, 0x01, 0x54, 0x01, 0x01, + 0x75, 0x82, 0x01, 0x54, 0x01, 0x75, 0x01, 0x54, 0x01, 0x01, 0x75, 0x02, 0x01, 0x54, 0x07, 0x01, 0x74, 0x01, 0x01, 0x94, 0x83, 0x12, 0x98, 0x33, 0x7B, 0x01, 0xB5, 0x01, 0x94, 0x02, 0x01, 0x74, 0x03, 0x01, 0x54, 0x02, 0x01, 0x74, 0x82, 0x01, 0x54, 0x01, 0x74, 0x01, 0x54, 0x01, 0x01, 0x75, 0x01, 0x01, 0x54, 0x82, 0x01, 0x74, 0x01, 0x54, 0x01, 0x75, 0x01, 0x01, 0x54, 0x81, 0x01, 0x55, 0x01, 0x75, 0x01, 0x01, 0x74, 0x01, 0x01, 0x75, 0x8A, 0x01, 0x74, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0xB5, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x01, 0x75, 0x01, 0x95, 0x09, 0x95, 0x01, 0x01, 0x95, 0x80, 0x01, 0xB5, 0x01, 0x09, 0xB5, 0x8B, 0x09, 0x95, 0x09, 0x75, 0x11, 0x54, 0x19, 0x54, 0x29, 0x54, 0x31, 0x13, 0x49, 0x53, 0x92, 0xD8, 0x9A, 0x56, 0xA2, 0x15, 0xA1, 0xF4, 0xA9, 0xF4, 0x01, 0xA9, 0xD3, 0x81, 0xB1, 0xD3, 0xB1, 0xF4, 0x01, 0xA9, 0xD3, 0x83, 0xB1, 0xD3, 0xB1, 0xF3, 0xA9, 0xB2, 0xB1, 0xD3, 0x01, 0xA9, 0xD3, 0x84, 0xA9, 0xB3, 0xA9, 0xD3, 0xB1, 0xF3, 0xA9, 0xD3, 0xB1, 0xF3, 0x02, 0xA9, 0xD3, 0x86, 0xAA, 0x14, 0xA2, 0x35, 0x9A, 0xB7, 0x61, 0xB4, 0x20, 0xB1, 0x19, 0x33, 0x09, 0x33, 0x01, 0x01, 0x54, 0x03, 0x01, 0x74, 0x05, 0x01, 0x54, 0x80, 0x01, 0x74, 0x03, 0x01, 0x54, 0x02, 0x01, 0x74, 0x01, 0x01, 0x54, 0x80, 0x01, 0x74, 0x04, 0x01, 0x54, 0x80, 0x01, 0x74, 0x01, 0x01, 0x54, 0x04, 0x01, 0x74, 0x84, 0x01, 0x54, 0x01, 0x74, 0x01, 0x54, 0x01, 0x53, 0x01, 0x74, 0x01, 0x01, 0x53, 0x01, 0x01, 0x74, 0x03, 0x01, 0x54, 0x01, 0x01, 0x53, + 0x01, 0x01, 0x74, 0x84, 0x01, 0x94, 0x01, 0xD5, 0x1A, 0xD9, 0x2B, 0x3A, 0x12, 0x77, 0x01, 0x01, 0x94, 0x80, 0x01, 0x74, 0x02, 0x01, 0x53, 0x01, 0x01, 0x54, 0x80, 0x01, 0x74, 0x02, 0x01, 0x54, 0x80, 0x01, 0x74, 0x07, 0x01, 0x54, 0x80, 0x01, 0x34, 0x01, 0x01, 0x54, 0x01, 0x01, 0x33, 0x81, 0x01, 0x54, 0x01, 0x33, 0x01, 0x01, 0x54, 0x80, 0x01, 0x34, 0x01, 0x01, 0x54, 0x02, 0x01, 0x33, 0x01, 0x01, 0x53, 0x02, 0x01, 0x33, 0x01, 0x01, 0x54, 0x05, 0x01, 0x53, 0x81, 0x01, 0x33, 0x01, 0x74, 0x04, 0x01, 0x53, 0x80, 0x01, 0x73, 0x02, 0x01, 0x53, 0x80, 0x01, 0x73, 0x01, 0x01, 0x53, 0x8C, 0x01, 0x74, 0x01, 0x73, 0x01, 0x74, 0x01, 0x73, 0x09, 0xF5, 0x22, 0xD8, 0x33, 0x3A, 0x12, 0x16, 0x01, 0x94, 0x01, 0x74, 0x01, 0x73, 0x01, 0x53, 0x01, 0x73, 0x03, 0x01, 0x53, 0x80, 0x01, 0x73, 0x03, 0x01, 0x53, 0x81, 0x01, 0x33, 0x01, 0x53, 0x01, 0x01, 0x33, 0x80, 0x01, 0x53, 0x07, 0x01, 0x33, 0x80, 0x01, 0x53, 0x08, 0x01, 0x33, 0x86, 0x01, 0x53, 0x01, 0x33, 0x01, 0x53, 0x01, 0x33, 0x01, 0x54, 0x01, 0x53, 0x01, 0x33, 0x01, 0x01, 0x53, 0x80, 0x01, 0x33, 0x01, 0x01, 0x53, 0x01, 0x01, 0x33, 0x80, 0x01, 0x53, 0x03, 0x01, 0x33, 0x01, 0x01, 0x53, 0x01, 0x01, 0x33, 0x81, 0x01, 0x53, 0x01, 0x52, 0x01, 0x01, 0x53, 0x01, 0x01, 0x73, 0x86, 0x01, 0xB4, 0x0A, 0x15, 0x22, 0xF8, 0x2B, 0x19, 0x1A, 0x97, 0x01, 0xB4, 0x01, 0x93, 0x01, 0x01, 0x73, 0x01, 0x01, 0x52, 0x80, 0x01, 0x32, 0x01, 0x01, 0x33, 0x80, 0x01, 0x32, 0x03, 0x01, 0x33, 0x81, 0x01, 0x53, 0x01, 0x33, + 0x01, 0x01, 0x53, 0x81, 0x01, 0x33, 0x01, 0x53, 0x08, 0x01, 0x33, 0x81, 0x01, 0x32, 0x01, 0x33, 0x01, 0x01, 0x32, 0x82, 0x01, 0x12, 0x01, 0x33, 0x01, 0x53, 0x07, 0x01, 0x33, 0x80, 0x01, 0x53, 0x02, 0x01, 0x33, 0x80, 0x01, 0x32, 0x02, 0x01, 0x33, 0x02, 0x01, 0x32, 0x82, 0x01, 0x33, 0x01, 0x32, 0x01, 0x33, 0x02, 0x01, 0x32, 0x01, 0x01, 0x52, 0x01, 0x01, 0x53, 0x84, 0x01, 0x73, 0x01, 0x93, 0x09, 0xF5, 0x01, 0xF5, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x01, 0x01, 0x33, 0x04, 0x01, 0x12, 0x81, 0x00, 0xF2, 0x01, 0x12, 0x01, 0x01, 0x32, 0x02, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x52, 0x89, 0x01, 0x72, 0x01, 0xB3, 0x12, 0x35, 0x2A, 0xF8, 0x33, 0x5A, 0x2A, 0xF9, 0x12, 0x36, 0x01, 0x72, 0x01, 0x52, 0x01, 0x73, 0x01, 0x01, 0x53, 0x81, 0x01, 0x12, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x01, 0x01, 0x32, 0x02, 0x01, 0x33, 0x80, 0x01, 0x13, 0x01, 0x01, 0x12, 0x80, 0x01, 0x13, 0x02, 0x01, 0x33, 0x01, 0x01, 0x13, 0x05, 0x01, 0x33, 0x82, 0x01, 0x13, 0x01, 0x33, 0x01, 0x12, 0x05, 0x01, 0x33, 0x80, 0x01, 0x53, 0x01, 0x01, 0x33, 0x81, 0x01, 0x12, 0x01, 0x13, 0x01, 0x01, 0x33, 0x80, 0x01, 0x53, 0x02, 0x01, 0x33, 0x80, 0x01, 0x12, 0x01, 0x01, 0x13, 0x81, 0x01, 0x33, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x33, 0x03, 0x01, 0x32, 0x84, 0x01, 0x33, 0x01, 0x53, 0x01, 0x73, 0x01, 0xD4, 0x12, 0x77, 0x01, 0x2B, 0x19, 0x82, 0x1A, 0x77, 0x01, 0xB4, 0x01, 0x73, 0x01, 0x01, 0x53, 0x01, 0x01, 0x32, 0x01, 0x01, 0x12, 0x82, 0x01, 0x33, 0x01, + 0x13, 0x01, 0x33, 0x01, 0x01, 0x13, 0x05, 0x01, 0x33, 0x81, 0x01, 0x13, 0x01, 0x34, 0x05, 0x01, 0x33, 0x81, 0x01, 0x13, 0x01, 0x34, 0x01, 0x01, 0x33, 0x01, 0x01, 0x34, 0x80, 0x01, 0x33, 0x02, 0x01, 0x13, 0x02, 0x01, 0x33, 0x02, 0x01, 0x13, 0x02, 0x01, 0x54, 0x03, 0x01, 0x33, 0x81, 0x01, 0x53, 0x01, 0x13, 0x01, 0x01, 0x33, 0x80, 0x01, 0x53, 0x02, 0x01, 0x33, 0x81, 0x01, 0x53, 0x01, 0x33, 0x03, 0x01, 0x53, 0x01, 0x01, 0x73, 0x86, 0x01, 0xB4, 0x0A, 0x15, 0x22, 0xB8, 0x33, 0x3A, 0x22, 0xB8, 0x09, 0xD5, 0x01, 0x33, 0x01, 0x01, 0x32, 0x07, 0x01, 0x33, 0x81, 0x01, 0x53, 0x01, 0x54, 0x02, 0x01, 0x33, 0x80, 0x01, 0x54, 0x03, 0x01, 0x33, 0x01, 0x01, 0x53, 0x01, 0x01, 0x33, 0x01, 0x01, 0x53, 0x81, 0x01, 0x33, 0x01, 0x54, 0x0B, 0x01, 0x33, 0x01, 0x01, 0x53, 0x81, 0x01, 0x54, 0x01, 0x53, 0x01, 0x01, 0x74, 0x80, 0x01, 0x54, 0x01, 0x01, 0x33, 0x01, 0x01, 0x53, 0x82, 0x01, 0x54, 0x01, 0x53, 0x01, 0x33, 0x01, 0x01, 0x54, 0x02, 0x01, 0x33, 0x80, 0x01, 0x53, 0x01, 0x01, 0x73, 0x89, 0x01, 0x53, 0x01, 0x73, 0x01, 0x93, 0x01, 0xD4, 0x2B, 0x19, 0x33, 0x7B, 0x0A, 0x15, 0x01, 0xB4, 0x01, 0xD5, 0x01, 0x73, 0x05, 0x01, 0x53, 0x03, 0x01, 0x54, 0x87, 0x01, 0x34, 0x01, 0x54, 0x01, 0x34, 0x01, 0x54, 0x01, 0x34, 0x01, 0x54, 0x01, 0x33, 0x01, 0x54, 0x02, 0x01, 0x34, 0x01, 0x01, 0x54, 0x80, 0x01, 0x34, 0x01, 0x01, 0x54, 0x81, 0x01, 0x33, 0x01, 0x34, 0x03, 0x01, 0x54, 0x80, 0x01, 0x33, 0x01, 0x01, 0x34, 0x84, 0x01, 0x54, 0x01, 0x34, 0x01, 0x54, 0x01, + 0x34, 0x01, 0x54, 0x01, 0x01, 0x34, 0x01, 0x01, 0x54, 0x81, 0x01, 0x74, 0x01, 0x54, 0x02, 0x01, 0x34, 0x81, 0x01, 0x54, 0x01, 0x34, 0x02, 0x01, 0x54, 0x02, 0x01, 0x33, 0x01, 0x01, 0x53, 0x80, 0x01, 0x74, 0x01, 0x01, 0x33, 0x89, 0x01, 0x53, 0x01, 0x74, 0x01, 0xB4, 0x0A, 0x16, 0x33, 0x5B, 0x22, 0xD9, 0x01, 0x94, 0x01, 0x73, 0x01, 0x74, 0x01, 0x54, 0x01, 0x01, 0x53, 0x02, 0x01, 0x54, 0x80, 0x01, 0x53, 0x08, 0x01, 0x54, 0x80, 0x01, 0x74, 0x01, 0x01, 0x54, 0x80, 0x01, 0x34, 0x01, 0x01, 0x54, 0x80, 0x01, 0x74, 0x02, 0x01, 0x54, 0x80, 0x01, 0x34, 0x01, 0x01, 0x54, 0x80, 0x01, 0x34, 0x01, 0x01, 0x54, 0x80, 0x01, 0x74, 0x04, 0x01, 0x54, 0x01, 0x01, 0x74, 0x80, 0x01, 0x54, 0x01, 0x01, 0x74, 0x07, 0x01, 0x54, 0x01, 0x01, 0x34, 0x01, 0x01, 0x54, 0x83, 0x01, 0x75, 0x01, 0x74, 0x01, 0x53, 0x01, 0x54, 0x05, 0x01, 0x53, 0x85, 0x01, 0x94, 0x2B, 0x19, 0x2B, 0x3A, 0x01, 0xD5, 0x01, 0xB5, 0x01, 0x54, 0x01, 0x01, 0x33, 0x02, 0x01, 0x54, 0x80, 0x01, 0x75, 0x02, 0x01, 0x34, 0x03, 0x01, 0x54, 0x01, 0x01, 0x34, 0x05, 0x01, 0x54, 0x80, 0x01, 0x75, 0x06, 0x01, 0x54, 0x80, 0x01, 0x74, 0x02, 0x01, 0x54, 0x80, 0x01, 0x74, 0x02, 0x01, 0x54, 0x80, 0x01, 0x74, 0x04, 0x01, 0x54, 0x04, 0x01, 0x74, 0x02, 0x01, 0x54, 0x80, 0x01, 0x74, 0x02, 0x01, 0x54, 0x02, 0x01, 0x74, 0x02, 0x01, 0x54, 0x87, 0x01, 0x74, 0x01, 0x54, 0x01, 0x53, 0x01, 0x74, 0x01, 0x94, 0x01, 0xF5, 0x3B, 0xFD, 0x0A, 0x16, 0x01, 0x01, 0x94, 0x86, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x01, + 0x53, 0x01, 0x33, 0x01, 0x34, 0x01, 0x75, 0x02, 0x01, 0x54, 0x84, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x04, 0x01, 0x54, 0x01, 0x01, 0x74, 0x01, 0x01, 0x54, 0x80, 0x01, 0x74, 0x02, 0x01, 0x54, 0x84, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x01, 0x54, 0x01, 0x74, 0x08, 0x01, 0x54, 0x80, 0x01, 0x74, 0x02, 0x01, 0x54, 0x82, 0x01, 0x75, 0x01, 0x54, 0x01, 0x74, 0x02, 0x01, 0x54, 0x80, 0x01, 0x74, 0x02, 0x01, 0x54, 0x80, 0x01, 0x95, 0x03, 0x01, 0x54, 0x80, 0x01, 0x74, 0x01, 0x01, 0x54, 0x84, 0x01, 0x33, 0x01, 0x54, 0x01, 0x53, 0x22, 0xD9, 0x12, 0x77, 0x03, 0x01, 0x74, 0x02, 0x01, 0x54, 0x80, 0x01, 0x74, 0x05, 0x01, 0x54, 0x80, 0x01, 0x74, 0x02, 0x01, 0x75, 0x02, 0x01, 0x54, 0x80, 0x01, 0x74, 0x02, 0x01, 0x54, 0x80, 0x01, 0x55, 0x02, 0x01, 0x54, 0x80, 0x01, 0x74, 0x01, 0x01, 0x54, 0x01, 0x01, 0x74, 0x01, 0x01, 0x54, 0x81, 0x01, 0x74, 0x01, 0x54, 0x01, 0x01, 0x74, 0x01, 0x01, 0x54, 0x01, 0x01, 0x74, 0x01, 0x01, 0x54, 0x01, 0x01, 0x74, 0x06, 0x01, 0x54, 0x81, 0x01, 0x74, 0x01, 0x54, 0x02, 0x01, 0x74, 0x01, 0x01, 0x54, 0x02, 0x01, 0x74, 0x02, 0x01, 0x54, 0x02, 0x01, 0x74, 0x83, 0x01, 0x94, 0x2B, 0x1A, 0x0A, 0x36, 0x01, 0x53, 0x02, 0x01, 0x54, 0x01, 0x01, 0x74, 0x80, 0x01, 0x53, 0x05, 0x01, 0x54, 0x80, 0x01, 0x74, 0x03, 0x01, 0x54, 0x02, 0x01, 0x34, 0x81, 0x01, 0x54, 0x01, 0x34, 0x01, 0x01, 0x54, 0x80, 0x01, 0x34, 0x19, 0x01, 0x54, 0x02, 0x01, 0x34, 0x01, 0x01, 0x54, 0x81, 0x01, 0x74, 0x01, 0x54, 0x02, 0x01, + 0x53, 0x03, 0x01, 0x74, 0x80, 0x01, 0x73, 0x01, 0x01, 0x94, 0x84, 0x2A, 0xF9, 0x22, 0xD9, 0x01, 0x94, 0x01, 0x74, 0x01, 0x53, 0x01, 0x01, 0x74, 0x01, 0x01, 0x54, 0x80, 0x01, 0x33, 0x01, 0x01, 0x34, 0x01, 0x01, 0x54, 0x82, 0x01, 0x34, 0x01, 0x33, 0x01, 0x34, 0x01, 0x01, 0x54, 0x03, 0x01, 0x34, 0x04, 0x01, 0x54, 0x80, 0x01, 0x74, 0x03, 0x01, 0x54, 0x81, 0x01, 0x34, 0x01, 0x54, 0x01, 0x01, 0x74, 0x03, 0x01, 0x54, 0x01, 0x01, 0x75, 0x02, 0x01, 0x74, 0x82, 0x09, 0x95, 0x09, 0x75, 0x09, 0x74, 0x01, 0x11, 0x54, 0x8B, 0x21, 0x74, 0x31, 0x54, 0x38, 0xF1, 0x7A, 0x56, 0xA2, 0xD8, 0x9A, 0x15, 0xA1, 0xD4, 0xA9, 0xF4, 0xA9, 0xD3, 0xB1, 0xD3, 0xA9, 0xB3, 0xB1, 0xF3, 0x01, 0xA9, 0xD3, 0x80, 0xA9, 0xB3, 0x03, 0xA9, 0xD3, 0x81, 0xA9, 0xF3, 0xA9, 0xD3, 0x01, 0xB1, 0xD3, 0x80, 0xB1, 0xF4, 0x03, 0xA9, 0xD3, 0x89, 0xAA, 0x14, 0xA2, 0x56, 0x9A, 0xB7, 0x72, 0x15, 0x20, 0xB0, 0x19, 0x33, 0x11, 0x54, 0x09, 0x54, 0x01, 0x33, 0x01, 0x54, 0x01, 0x01, 0x34, 0x80, 0x01, 0x33, 0x02, 0x01, 0x54, 0x81, 0x01, 0x74, 0x01, 0x54, 0x01, 0x01, 0x33, 0x80, 0x01, 0x53, 0x02, 0x01, 0x54, 0x01, 0x01, 0x53, 0x81, 0x01, 0x54, 0x01, 0x74, 0x01, 0x01, 0x53, 0x04, 0x01, 0x33, 0x80, 0x01, 0x54, 0x01, 0x01, 0x53, 0x02, 0x01, 0x33, 0x80, 0x01, 0x53, 0x01, 0x01, 0x33, 0x01, 0x01, 0x53, 0x85, 0x01, 0x33, 0x01, 0x53, 0x01, 0x33, 0x01, 0x53, 0x01, 0x33, 0x01, 0x53, 0x05, 0x01, 0x33, 0x01, 0x01, 0x53, 0x02, 0x01, 0x73, 0x85, 0x12, 0x37, 0x33, 0x3A, 0x22, 0xD9, 0x01, 0xD5, + 0x01, 0x74, 0x01, 0x73, 0x02, 0x01, 0x53, 0x02, 0x01, 0x33, 0x80, 0x01, 0x53, 0x03, 0x01, 0x33, 0x81, 0x01, 0x53, 0x01, 0x54, 0x06, 0x01, 0x33, 0x02, 0x01, 0x13, 0x01, 0x01, 0x33, 0x01, 0x01, 0x13, 0x08, 0x01, 0x33, 0x80, 0x01, 0x53, 0x02, 0x01, 0x33, 0x80, 0x01, 0x53, 0x09, 0x01, 0x33, 0x82, 0x01, 0x32, 0x01, 0x53, 0x01, 0x32, 0x01, 0x01, 0x33, 0x80, 0x01, 0x32, 0x01, 0x01, 0x33, 0x82, 0x01, 0x53, 0x01, 0x33, 0x01, 0x73, 0x02, 0x01, 0x53, 0x84, 0x12, 0x15, 0x33, 0x3A, 0x33, 0x19, 0x12, 0x16, 0x01, 0x94, 0x03, 0x01, 0x53, 0x80, 0x01, 0x33, 0x01, 0x01, 0x53, 0x80, 0x01, 0x32, 0x01, 0x01, 0x33, 0x80, 0x01, 0x53, 0x03, 0x01, 0x12, 0x87, 0x01, 0x13, 0x01, 0x33, 0x01, 0x13, 0x01, 0x33, 0x01, 0x12, 0x01, 0x13, 0x01, 0x33, 0x01, 0x32, 0x01, 0x01, 0x12, 0x01, 0x01, 0x33, 0x04, 0x01, 0x13, 0x02, 0x01, 0x33, 0x80, 0x01, 0x13, 0x03, 0x01, 0x33, 0x80, 0x01, 0x53, 0x01, 0x01, 0x33, 0x01, 0x01, 0x32, 0x03, 0x01, 0x33, 0x01, 0x01, 0x32, 0x82, 0x01, 0x12, 0x01, 0x33, 0x01, 0x12, 0x01, 0x01, 0x32, 0x80, 0x01, 0x12, 0x03, 0x01, 0x32, 0x80, 0x01, 0x53, 0x02, 0x01, 0x52, 0x86, 0x01, 0x73, 0x12, 0x15, 0x22, 0xD8, 0x2B, 0x19, 0x1A, 0x77, 0x01, 0xD4, 0x01, 0x93, 0x01, 0x01, 0x52, 0x02, 0x01, 0x32, 0x01, 0x01, 0x12, 0x0A, 0x01, 0x32, 0x82, 0x01, 0x33, 0x01, 0x32, 0x01, 0x12, 0x02, 0x01, 0x32, 0x02, 0x01, 0x33, 0x06, 0x01, 0x12, 0x02, 0x01, 0x13, 0x81, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x33, 0x81, 0x01, 0x12, 0x01, 0x33, 0x01, 0x01, 0x12, + 0x01, 0x01, 0x32, 0x81, 0x01, 0x33, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x52, 0x82, 0x01, 0x73, 0x01, 0x52, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x01, 0x01, 0x33, 0x03, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x03, 0x01, 0x12, 0x04, 0x01, 0x32, 0x86, 0x01, 0x93, 0x1A, 0x76, 0x33, 0x39, 0x2B, 0x19, 0x1A, 0x56, 0x01, 0xB3, 0x01, 0x52, 0x01, 0x01, 0x32, 0x80, 0x01, 0x52, 0x03, 0x01, 0x12, 0x81, 0x00, 0xF2, 0x00, 0xF1, 0x02, 0x01, 0x12, 0x02, 0x01, 0x32, 0x80, 0x01, 0x33, 0x01, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x12, 0x01, 0x01, 0x33, 0x03, 0x01, 0x12, 0x80, 0x01, 0x33, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, 0x01, 0x32, 0x82, 0x01, 0x33, 0x01, 0x12, 0x01, 0x32, 0x03, 0x01, 0x12, 0x01, 0x01, 0x33, 0x83, 0x01, 0x32, 0x01, 0x33, 0x01, 0x12, 0x00, 0xF2, 0x05, 0x01, 0x12, 0x05, 0x01, 0x32, 0x87, 0x01, 0x52, 0x09, 0xD4, 0x2A, 0xD8, 0x33, 0x3A, 0x22, 0xB7, 0x0A, 0x15, 0x01, 0x93, 0x01, 0x52, 0x02, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x04, 0x01, 0x12, 0x81, 0x01, 0x33, 0x01, 0x13, 0x01, 0x01, 0x33, 0x80, 0x01, 0x12, 0x02, 0x01, 0x33, 0x80, 0x01, 0x13, 0x05, 0x01, 0x33, 0x01, 0x01, 0x13, 0x80, 0x01, 0x33, 0x01, 0x01, 0x13, 0x80, 0x01, 0x33, 0x08, 0x01, 0x13, 0x03, 0x01, 0x33, 0x80, 0x01, 0x13, 0x02, 0x01, 0x33, 0x01, 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, 0x01, 0x32, + 0x01, 0x01, 0x33, 0x80, 0x01, 0x32, 0x01, 0x01, 0x33, 0x80, 0x01, 0x53, 0x01, 0x01, 0x52, 0x88, 0x01, 0x53, 0x01, 0x73, 0x0A, 0x15, 0x22, 0xD8, 0x33, 0x3A, 0x22, 0x97, 0x09, 0xB4, 0x01, 0x53, 0x01, 0x32, 0x04, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x12, 0x81, 0x01, 0x13, 0x01, 0x53, 0x04, 0x01, 0x33, 0x82, 0x01, 0x13, 0x01, 0x33, 0x01, 0x13, 0x10, 0x01, 0x33, 0x01, 0x01, 0x13, 0x81, 0x01, 0x33, 0x01, 0x13, 0x08, 0x01, 0x33, 0x80, 0x01, 0x13, 0x08, 0x01, 0x33, 0x80, 0x01, 0x32, 0x02, 0x01, 0x53, 0x85, 0x01, 0x73, 0x01, 0x53, 0x12, 0x36, 0x43, 0xBC, 0x22, 0xB8, 0x01, 0xB4, 0x01, 0x01, 0x93, 0x01, 0x01, 0x53, 0x80, 0x01, 0x33, 0x01, 0x01, 0x32, 0x03, 0x01, 0x33, 0x81, 0x01, 0x54, 0x01, 0x33, 0x02, 0x01, 0x34, 0x05, 0x01, 0x33, 0x83, 0x01, 0x13, 0x01, 0x54, 0x01, 0x33, 0x01, 0x34, 0x06, 0x01, 0x33, 0x80, 0x01, 0x53, 0x07, 0x01, 0x33, 0x02, 0x01, 0x34, 0x06, 0x01, 0x33, 0x80, 0x01, 0x13, 0x04, 0x01, 0x33, 0x01, 0x01, 0x13, 0x81, 0x01, 0x33, 0x01, 0x53, 0x03, 0x01, 0x33, 0x85, 0x01, 0x73, 0x01, 0x94, 0x0A, 0x15, 0x33, 0x7B, 0x1A, 0x77, 0x01, 0x94, 0x01, 0x01, 0x53, 0x03, 0x01, 0x33, 0x81, 0x01, 0x53, 0x01, 0x54, 0x01, 0x01, 0x33, 0x80, 0x01, 0x54, 0x01, 0x01, 0x33, 0x82, 0x01, 0x53, 0x01, 0x33, 0x01, 0x54, 0x02, 0x01, 0x33, 0x80, 0x01, 0x54, 0x02, 0x01, 0x33, 0x81, 0x01, 0x34, 0x01, 0x33, 0x01, 0x01, 0x34, 0x84, 0x01, 0x13, 0x01, 0x33, 0x01, 0x34, 0x01, 0x33, 0x01, 0x34, 0x01, 0x01, 0x33, 0x01, 0x01, 0x34, 0x02, 0x01, + 0x33, 0x81, 0x01, 0x54, 0x01, 0x33, 0x03, 0x01, 0x53, 0x80, 0x01, 0x54, 0x0A, 0x01, 0x33, 0x81, 0x01, 0x53, 0x01, 0x54, 0x03, 0x01, 0x33, 0x01, 0x01, 0x53, 0x87, 0x01, 0x33, 0x01, 0x73, 0x01, 0x53, 0x0A, 0x16, 0x3B, 0x7B, 0x01, 0xB4, 0x01, 0x74, 0x01, 0x53, 0x03, 0x01, 0x33, 0x01, 0x01, 0x54, 0x02, 0x01, 0x33, 0x80, 0x01, 0x13, 0x02, 0x01, 0x33, 0x80, 0x01, 0x54, 0x01, 0x01, 0x34, 0x01, 0x01, 0x54, 0x03, 0x01, 0x34, 0x81, 0x01, 0x54, 0x01, 0x33, 0x04, 0x01, 0x34, 0x81, 0x01, 0x33, 0x01, 0x54, 0x01, 0x01, 0x53, 0x81, 0x01, 0x33, 0x01, 0x54, 0x01, 0x01, 0x53, 0x81, 0x01, 0x33, 0x01, 0x54, 0x01, 0x01, 0x53, 0x01, 0x01, 0x33, 0x80, 0x01, 0x54, 0x01, 0x01, 0x53, 0x80, 0x01, 0x54, 0x01, 0x01, 0x53, 0x80, 0x01, 0x33, 0x01, 0x01, 0x54, 0x80, 0x01, 0x33, 0x04, 0x01, 0x54, 0x81, 0x01, 0x53, 0x01, 0x33, 0x01, 0x01, 0x53, 0x80, 0x01, 0x54, 0x01, 0x01, 0x53, 0x01, 0x01, 0x73, 0x83, 0x12, 0x77, 0x33, 0x9B, 0x01, 0x73, 0x01, 0x74, 0x01, 0x01, 0x53, 0x03, 0x01, 0x33, 0x04, 0x01, 0x34, 0x04, 0x01, 0x54, 0x02, 0x01, 0x34, 0x01, 0x01, 0x54, 0x02, 0x01, 0x34, 0x02, 0x01, 0x54, 0x80, 0x01, 0x34, 0x02, 0x01, 0x54, 0x01, 0x01, 0x34, 0x01, 0x01, 0x54, 0x80, 0x01, 0x34, 0x01, 0x01, 0x54, 0x01, 0x01, 0x34, 0x80, 0x01, 0x54, 0x02, 0x01, 0x34, 0x09, 0x01, 0x54, 0x80, 0x01, 0x34, 0x03, 0x01, 0x54, 0x01, 0x01, 0x33, 0x80, 0x01, 0x54, 0x05, 0x01, 0x33, 0x81, 0x22, 0xD8, 0x12, 0x56, 0x03, 0x01, 0x53, 0x80, 0x01, 0x33, 0x02, 0x01, 0x53, 0x86, 0x01, + 0x54, 0x01, 0x34, 0x01, 0x33, 0x01, 0x54, 0x01, 0x34, 0x01, 0x54, 0x01, 0x34, 0x01, 0x01, 0x54, 0x80, 0x01, 0x34, 0x01, 0x01, 0x54, 0x81, 0x01, 0x33, 0x01, 0x54, 0x03, 0x01, 0x34, 0x80, 0x01, 0x53, 0x01, 0x01, 0x54, 0x01, 0x01, 0x33, 0x80, 0x01, 0x54, 0x01, 0x01, 0x33, 0x01, 0x01, 0x34, 0x81, 0x01, 0x33, 0x01, 0x54, 0x01, 0x01, 0x53, 0x81, 0x01, 0x34, 0x01, 0x54, 0x02, 0x01, 0x34, 0x01, 0x01, 0x54, 0x01, 0x01, 0x33, 0x85, 0x01, 0x54, 0x01, 0x53, 0x01, 0x54, 0x01, 0x33, 0x01, 0x54, 0x01, 0x53, 0x01, 0x01, 0x54, 0x81, 0x01, 0x33, 0x01, 0x53, 0x02, 0x01, 0x54, 0x01, 0x01, 0x53, 0x80, 0x01, 0x54, 0x02, 0x01, 0x33, 0x85, 0x01, 0x53, 0x01, 0x74, 0x01, 0x53, 0x01, 0x73, 0x0A, 0x16, 0x22, 0xD9, 0x01, 0x01, 0x53, 0x87, 0x01, 0x33, 0x01, 0x54, 0x01, 0x53, 0x01, 0x54, 0x01, 0x33, 0x01, 0x53, 0x01, 0x33, 0x01, 0x54, 0x0A, 0x01, 0x33, 0x01, 0x01, 0x34, 0x82, 0x01, 0x33, 0x01, 0x34, 0x01, 0x54, 0x02, 0x01, 0x34, 0x80, 0x01, 0x54, 0x02, 0x01, 0x34, 0x80, 0x01, 0x33, 0x01, 0x01, 0x34, 0x81, 0x01, 0x33, 0x01, 0x34, 0x04, 0x01, 0x33, 0x80, 0x01, 0x54, 0x04, 0x01, 0x33, 0x01, 0x01, 0x54, 0x01, 0x01, 0x33, 0x81, 0x01, 0x34, 0x01, 0x33, 0x01, 0x01, 0x54, 0x80, 0x01, 0x33, 0x02, 0x01, 0x53, 0x80, 0x01, 0x74, 0x05, 0x01, 0x53, 0x85, 0x01, 0x73, 0x01, 0x94, 0x2A, 0xF9, 0x12, 0x36, 0x01, 0x73, 0x01, 0x74, 0x02, 0x01, 0x53, 0x03, 0x01, 0x33, 0x81, 0x01, 0x54, 0x01, 0x34, 0x01, 0x01, 0x13, 0x01, 0x01, 0x33, 0x80, 0x01, 0x34, 0x02, 0x01, 0x33, + 0x80, 0x01, 0x34, 0x01, 0x01, 0x33, 0x83, 0x01, 0x54, 0x01, 0x34, 0x01, 0x33, 0x01, 0x34, 0x01, 0x01, 0x33, 0x80, 0x01, 0x53, 0x01, 0x01, 0x33, 0x81, 0x01, 0x54, 0x01, 0x53, 0x04, 0x01, 0x54, 0x01, 0x01, 0x34, 0x01, 0x01, 0x74, 0x93, 0x01, 0x54, 0x01, 0x74, 0x01, 0x54, 0x09, 0x54, 0x11, 0x74, 0x11, 0x54, 0x19, 0x33, 0x29, 0x53, 0x28, 0xD1, 0x59, 0x73, 0xA2, 0xF8, 0x9A, 0x15, 0xA1, 0xF4, 0xA9, 0xF4, 0xA9, 0xF3, 0xB1, 0xF3, 0xA9, 0xD3, 0xA9, 0xB2, 0xB1, 0xD3, 0xB1, 0xF3, 0x01, 0xA9, 0xD3, 0x82, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0x03, 0xA9, 0xD3, 0x01, 0xB1, 0xD3, 0x8A, 0xA9, 0xD3, 0xB1, 0xF4, 0xA9, 0xF4, 0xAA, 0x14, 0xA2, 0x55, 0x9A, 0x76, 0x72, 0x15, 0x18, 0x4F, 0x19, 0x12, 0x09, 0x12, 0x01, 0x13, 0x03, 0x01, 0x33, 0x81, 0x01, 0x13, 0x01, 0x54, 0x03, 0x01, 0x33, 0x83, 0x01, 0x13, 0x01, 0x54, 0x01, 0x33, 0x01, 0x53, 0x02, 0x01, 0x33, 0x80, 0x01, 0x53, 0x1D, 0x01, 0x33, 0x01, 0x01, 0x12, 0x03, 0x01, 0x33, 0x01, 0x01, 0x53, 0x83, 0x01, 0x94, 0x1A, 0x77, 0x33, 0x5B, 0x12, 0x16, 0x01, 0x01, 0x73, 0x01, 0x01, 0x53, 0x84, 0x01, 0x33, 0x01, 0x32, 0x01, 0x33, 0x01, 0x53, 0x01, 0x33, 0x02, 0x01, 0x13, 0x01, 0x01, 0x33, 0x02, 0x01, 0x13, 0x82, 0x01, 0x33, 0x01, 0x13, 0x01, 0x33, 0x01, 0x01, 0x13, 0x82, 0x01, 0x33, 0x01, 0x13, 0x01, 0x33, 0x02, 0x01, 0x13, 0x04, 0x01, 0x33, 0x81, 0x01, 0x32, 0x01, 0x12, 0x02, 0x01, 0x33, 0x01, 0x01, 0x13, 0x02, 0x01, 0x32, 0x03, 0x01, 0x33, 0x03, 0x01, 0x32, 0x80, 0x01, 0x12, 0x04, 0x01, 0x32, + 0x01, 0x01, 0x12, 0x01, 0x01, 0x32, 0x8F, 0x01, 0x33, 0x01, 0x32, 0x01, 0x33, 0x01, 0x53, 0x01, 0x33, 0x01, 0x52, 0x01, 0x53, 0x09, 0xD4, 0x2A, 0xD9, 0x33, 0x3A, 0x09, 0xB4, 0x01, 0x73, 0x01, 0x52, 0x01, 0x32, 0x01, 0x53, 0x01, 0x52, 0x02, 0x01, 0x32, 0x01, 0x01, 0x33, 0x81, 0x01, 0x12, 0x01, 0x13, 0x03, 0x01, 0x12, 0x80, 0x01, 0x33, 0x05, 0x01, 0x12, 0x80, 0x01, 0x33, 0x07, 0x01, 0x12, 0x82, 0x01, 0x33, 0x01, 0x12, 0x01, 0x13, 0x01, 0x01, 0x12, 0x84, 0x01, 0x13, 0x01, 0x12, 0x01, 0x13, 0x01, 0x33, 0x01, 0x12, 0x01, 0x01, 0x32, 0x0D, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x12, 0x03, 0x01, 0x32, 0x86, 0x01, 0x52, 0x01, 0xB3, 0x12, 0x56, 0x2A, 0xF8, 0x2B, 0x19, 0x09, 0xF4, 0x01, 0x72, 0x01, 0x01, 0x52, 0x02, 0x01, 0x32, 0x01, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x12, 0x06, 0x01, 0x32, 0x82, 0x01, 0x12, 0x01, 0x32, 0x01, 0x12, 0x01, 0x01, 0x32, 0x07, 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, 0x01, 0x12, 0x80, 0x01, 0x33, 0x05, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x12, 0x83, 0x00, 0xF2, 0x01, 0x12, 0x00, 0xF2, 0x01, 0x12, 0x02, 0x00, 0xF2, 0x04, 0x01, 0x12, 0x02, 0x01, 0x32, 0x82, 0x01, 0x52, 0x01, 0x32, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x80, 0x00, 0xF1, 0x04, 0x01, 0x12, 0x02, 0x01, 0x32, 0x02, 0x01, 0x52, 0x87, 0x01, 0x72, 0x01, 0x93, 0x11, 0xF4, 0x22, 0x97, 0x33, 0x19, 0x32, 0xF8, 0x09, 0xB4, 0x01, 0x32, 0x01, 0x01, 0x11, 0x01, 0x01, 0x12, 0x01, 0x01, 0x11, 0x01, + 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x02, 0x01, 0x32, 0x0D, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x12, 0x01, 0x01, 0x32, 0x81, 0x01, 0x33, 0x01, 0x32, 0x03, 0x01, 0x12, 0x82, 0x01, 0x33, 0x01, 0x12, 0x01, 0x32, 0x06, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x06, 0x01, 0x32, 0x89, 0x01, 0x52, 0x01, 0x93, 0x12, 0x15, 0x2A, 0xD8, 0x33, 0x39, 0x2A, 0xB8, 0x09, 0xB4, 0x01, 0x52, 0x01, 0x32, 0x01, 0x12, 0x01, 0x01, 0x11, 0x0A, 0x01, 0x12, 0x80, 0x01, 0x33, 0x02, 0x01, 0x12, 0x86, 0x01, 0x13, 0x01, 0x32, 0x01, 0x12, 0x01, 0x13, 0x01, 0x12, 0x01, 0x13, 0x01, 0x33, 0x09, 0x01, 0x13, 0x03, 0x00, 0xF2, 0x82, 0x01, 0x13, 0x01, 0x12, 0x01, 0x33, 0x03, 0x01, 0x13, 0x80, 0x01, 0x33, 0x04, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x33, 0x01, 0x01, 0x12, 0x03, 0x01, 0x32, 0x87, 0x01, 0x52, 0x01, 0x93, 0x09, 0xF4, 0x22, 0x97, 0x33, 0x39, 0x22, 0xD8, 0x11, 0xF5, 0x01, 0x32, 0x03, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x33, 0x02, 0x01, 0x12, 0x01, 0x01, 0x33, 0x88, 0x01, 0x13, 0x01, 0x33, 0x01, 0x13, 0x01, 0x33, 0x01, 0x13, 0x01, 0x33, 0x01, 0x53, 0x01, 0x33, 0x01, 0x13, 0x02, 0x01, 0x12, 0x81, 0x01, 0x33, 0x01, 0x13, 0x02, 0x01, 0x12, 0x01, 0x01, 0x13, 0x80, 0x01, 0x12, 0x01, 0x01, 0x33, 0x02, 0x01, 0x13, 0x01, 0x01, 0x33, 0x80, 0x01, 0x13, 0x02, 0x00, 0xF2, 0x80, 0x01, 0x12, 0x01, 0x01, 0x33, + 0x07, 0x01, 0x12, 0x82, 0x01, 0x33, 0x01, 0x32, 0x01, 0x33, 0x02, 0x01, 0x32, 0x8A, 0x01, 0x53, 0x01, 0x94, 0x2A, 0xD8, 0x3B, 0x5A, 0x09, 0xF5, 0x01, 0x72, 0x01, 0x52, 0x01, 0x73, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x33, 0x81, 0x01, 0x12, 0x00, 0xF2, 0x01, 0x01, 0x13, 0x01, 0x01, 0x33, 0x03, 0x01, 0x13, 0x81, 0x01, 0x33, 0x01, 0x13, 0x01, 0x01, 0x33, 0x83, 0x01, 0x13, 0x01, 0x33, 0x01, 0x13, 0x01, 0x33, 0x01, 0x01, 0x13, 0x80, 0x01, 0x33, 0x01, 0x01, 0x13, 0x0A, 0x01, 0x33, 0x07, 0x01, 0x13, 0x01, 0x01, 0x33, 0x80, 0x01, 0x54, 0x04, 0x01, 0x33, 0x81, 0x01, 0x53, 0x01, 0x33, 0x01, 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, 0x01, 0x73, 0x83, 0x09, 0xF5, 0x3B, 0x7B, 0x1A, 0x77, 0x01, 0x53, 0x01, 0x01, 0x33, 0x01, 0x01, 0x12, 0x83, 0x01, 0x13, 0x01, 0x12, 0x01, 0x33, 0x01, 0x13, 0x02, 0x01, 0x33, 0x80, 0x01, 0x13, 0x01, 0x01, 0x33, 0x01, 0x01, 0x13, 0x80, 0x01, 0x33, 0x02, 0x01, 0x13, 0x80, 0x01, 0x33, 0x02, 0x01, 0x13, 0x81, 0x01, 0x33, 0x01, 0x13, 0x03, 0x01, 0x33, 0x06, 0x01, 0x13, 0x07, 0x01, 0x33, 0x80, 0x01, 0x13, 0x06, 0x01, 0x33, 0x03, 0x01, 0x13, 0x04, 0x01, 0x33, 0x83, 0x01, 0x53, 0x01, 0x32, 0x01, 0x12, 0x01, 0x33, 0x01, 0x01, 0x53, 0x84, 0x01, 0xB4, 0x43, 0x7B, 0x09, 0xD5, 0x01, 0x74, 0x01, 0x53, 0x01, 0x01, 0x33, 0x84, 0x01, 0x13, 0x01, 0x12, 0x01, 0x33, 0x01, 0x53, 0x01, 0x54, 0x01, 0x01, 0x33, 0x80, 0x01, 0x13, 0x03, 0x01, 0x33, 0x81, 0x01, 0x34, 0x01, 0x33, 0x02, + 0x01, 0x13, 0x80, 0x01, 0x33, 0x01, 0x01, 0x13, 0x04, 0x01, 0x33, 0x80, 0x01, 0x34, 0x02, 0x01, 0x13, 0x0B, 0x01, 0x33, 0x80, 0x01, 0x53, 0x06, 0x01, 0x33, 0x80, 0x01, 0x13, 0x0D, 0x01, 0x33, 0x01, 0x01, 0x53, 0x83, 0x33, 0x7B, 0x12, 0x77, 0x01, 0x74, 0x01, 0x53, 0x05, 0x01, 0x33, 0x80, 0x01, 0x13, 0x03, 0x01, 0x33, 0x80, 0x01, 0x54, 0x01, 0x01, 0x33, 0x83, 0x01, 0x13, 0x01, 0x33, 0x01, 0x13, 0x01, 0x33, 0x01, 0x01, 0x34, 0x01, 0x01, 0x13, 0x12, 0x01, 0x33, 0x80, 0x01, 0x34, 0x12, 0x01, 0x33, 0x80, 0x01, 0x53, 0x01, 0x01, 0x33, 0x80, 0x00, 0xF2, 0x02, 0x01, 0x12, 0x82, 0x22, 0xD8, 0x12, 0x36, 0x01, 0x32, 0x02, 0x01, 0x33, 0x01, 0x01, 0x12, 0x05, 0x01, 0x33, 0x82, 0x01, 0x13, 0x01, 0x33, 0x01, 0x13, 0x05, 0x01, 0x33, 0x80, 0x01, 0x13, 0x0B, 0x01, 0x33, 0x80, 0x01, 0x13, 0x0C, 0x01, 0x33, 0x01, 0x01, 0x13, 0x06, 0x01, 0x33, 0x80, 0x01, 0x53, 0x02, 0x01, 0x33, 0x80, 0x01, 0x53, 0x01, 0x01, 0x33, 0x81, 0x01, 0x13, 0x01, 0x33, 0x01, 0x01, 0x13, 0x02, 0x01, 0x33, 0x83, 0x01, 0x53, 0x01, 0xB4, 0x3B, 0x7B, 0x01, 0x73, 0x06, 0x01, 0x33, 0x80, 0x01, 0x13, 0x08, 0x01, 0x33, 0x02, 0x01, 0x13, 0x80, 0x01, 0x33, 0x01, 0x01, 0x13, 0x04, 0x01, 0x33, 0x80, 0x01, 0x13, 0x03, 0x01, 0x33, 0x81, 0x01, 0x13, 0x01, 0x33, 0x03, 0x01, 0x13, 0x13, 0x01, 0x33, 0x81, 0x01, 0x32, 0x01, 0x33, 0x01, 0x01, 0x53, 0x81, 0x01, 0x33, 0x01, 0x53, 0x01, 0x01, 0x32, 0x85, 0x01, 0x52, 0x01, 0x73, 0x09, 0xD4, 0x43, 0x9C, 0x09, 0xD5, 0x01, 0x73, 0x01, 0x01, + 0x53, 0x81, 0x01, 0x33, 0x01, 0x13, 0x04, 0x01, 0x33, 0x80, 0x01, 0x13, 0x04, 0x01, 0x33, 0x01, 0x01, 0x13, 0x80, 0x01, 0x34, 0x01, 0x01, 0x33, 0x80, 0x01, 0x13, 0x02, 0x01, 0x33, 0x82, 0x01, 0x13, 0x01, 0x33, 0x01, 0x13, 0x07, 0x01, 0x33, 0x80, 0x01, 0x53, 0x01, 0x01, 0x54, 0x01, 0x01, 0x53, 0x80, 0x01, 0x33, 0x01, 0x01, 0x54, 0x81, 0x01, 0x33, 0x09, 0x33, 0x01, 0x11, 0x33, 0x86, 0x21, 0x13, 0x28, 0xF2, 0x38, 0xB0, 0x8A, 0x76, 0xA2, 0x76, 0xA1, 0xF4, 0xA9, 0xF4, 0x06, 0xA9, 0xD3, 0x84, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0x01, 0xA9, 0xB3, 0x81, 0xB1, 0xF4, 0xB1, 0xF3, 0x01, 0xB1, 0xD3, 0x8B, 0xB1, 0xD4, 0xA9, 0xF4, 0xAA, 0x14, 0xA2, 0x55, 0xA2, 0xB7, 0x82, 0x56, 0x10, 0x0E, 0x10, 0xB1, 0x08, 0xD2, 0x00, 0xF2, 0x01, 0x12, 0x01, 0x13, 0x01, 0x01, 0x33, 0x03, 0x01, 0x13, 0x0D, 0x01, 0x33, 0x02, 0x01, 0x13, 0x84, 0x01, 0x33, 0x01, 0x13, 0x01, 0x33, 0x01, 0x12, 0x01, 0x32, 0x03, 0x01, 0x33, 0x83, 0x01, 0x12, 0x01, 0x33, 0x01, 0x32, 0x01, 0x33, 0x01, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x12, 0x81, 0x01, 0x33, 0x01, 0x32, 0x01, 0x01, 0x33, 0x03, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x33, 0x85, 0x01, 0x32, 0x01, 0x52, 0x09, 0xD5, 0x3B, 0x7B, 0x22, 0xB8, 0x01, 0x94, 0x01, 0x01, 0x53, 0x02, 0x01, 0x32, 0x02, 0x01, 0x33, 0x81, 0x01, 0x53, 0x01, 0x33, 0x03, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x03, 0x01, 0x13, 0x83, 0x01, 0x12, 0x01, 0x33, 0x01, 0x12, 0x01, 0x33, 0x01, 0x01, 0x13, 0x80, 0x01, 0x12, + 0x01, 0x01, 0x32, 0x01, 0x01, 0x33, 0x02, 0x01, 0x12, 0x80, 0x01, 0x33, 0x02, 0x01, 0x12, 0x80, 0x01, 0x33, 0x03, 0x01, 0x12, 0x01, 0x01, 0x13, 0x01, 0x01, 0x32, 0x01, 0x01, 0x12, 0x03, 0x01, 0x32, 0x01, 0x01, 0x12, 0x01, 0x01, 0x32, 0x03, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x12, 0x05, 0x01, 0x32, 0x83, 0x11, 0xF5, 0x33, 0x19, 0x1A, 0x76, 0x09, 0xB4, 0x02, 0x01, 0x52, 0x02, 0x01, 0x32, 0x03, 0x01, 0x12, 0x82, 0x01, 0x33, 0x01, 0x32, 0x01, 0x33, 0x02, 0x01, 0x12, 0x82, 0x01, 0x33, 0x01, 0x32, 0x01, 0x33, 0x01, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x04, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x33, 0x03, 0x00, 0xF2, 0x85, 0x01, 0x12, 0x01, 0x13, 0x01, 0x33, 0x01, 0x12, 0x01, 0x33, 0x01, 0x32, 0x0B, 0x01, 0x12, 0x80, 0x01, 0x32, 0x06, 0x01, 0x12, 0x01, 0x01, 0x32, 0x88, 0x01, 0x11, 0x01, 0x32, 0x01, 0x52, 0x01, 0x93, 0x1A, 0x76, 0x3B, 0x7A, 0x33, 0x59, 0x12, 0x76, 0x01, 0x92, 0x03, 0x01, 0x52, 0x02, 0x01, 0x32, 0x01, 0x01, 0x12, 0x02, 0x00, 0xF2, 0x81, 0x01, 0x12, 0x00, 0xF2, 0x02, 0x01, 0x12, 0x01, 0x01, 0x32, 0x06, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x33, 0x01, 0x32, 0x10, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x12, 0x81, 0x01, 0x11, 0x01, 0x12, 0x01, 0x01, 0x11, 0x02, 0x01, 0x31, 0x80, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x81, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x04, 0x01, 0x32, 0x02, 0x01, 0x52, 0x85, 0x09, 0xB3, 0x22, 0xB7, 0x33, 0x19, 0x2A, 0xF8, 0x1A, 0x36, + 0x01, 0x93, 0x01, 0x01, 0x32, 0x80, 0x01, 0x12, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x04, 0x01, 0x12, 0x02, 0x01, 0x32, 0x03, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x04, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x05, 0x01, 0x12, 0x80, 0x01, 0x32, 0x08, 0x01, 0x12, 0x80, 0x01, 0x32, 0x09, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x03, 0x01, 0x32, 0x85, 0x01, 0x93, 0x22, 0x97, 0x3B, 0x5A, 0x33, 0x19, 0x1A, 0x36, 0x01, 0x93, 0x01, 0x01, 0x32, 0x81, 0x01, 0x12, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xF2, 0x05, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x33, 0x04, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x33, 0x06, 0x01, 0x12, 0x84, 0x00, 0xF2, 0x01, 0x13, 0x00, 0xF2, 0x01, 0x13, 0x01, 0x12, 0x02, 0x00, 0xF2, 0x81, 0x01, 0x12, 0x01, 0x13, 0x14, 0x01, 0x12, 0x8A, 0x01, 0x32, 0x01, 0x53, 0x11, 0xF5, 0x22, 0xB7, 0x2B, 0x19, 0x22, 0x97, 0x09, 0xD4, 0x01, 0x72, 0x01, 0x32, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x82, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x06, 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, 0x01, 0x12, 0x83, 0x01, 0x33, 0x01, 0x12, 0x01, 0x13, 0x01, 0x33, 0x03, 0x01, 0x13, 0x08, 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, 0x01, 0x12, 0x03, 0x01, 0x13, 0x82, 0x01, 0x33, 0x01, 0x13, 0x01, 0x33, 0x01, 0x01, 0x13, 0x03, 0x00, 0xF2, 0x05, 0x01, 0x12, 0x82, 0x00, 0xF2, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x12, 0x04, 0x01, 0x32, 0x83, 0x22, 0x56, 0x3B, 0x5A, 0x22, 0x77, 0x01, 0x93, 0x01, 0x01, + 0x52, 0x01, 0x01, 0x32, 0x80, 0x01, 0x11, 0x02, 0x01, 0x12, 0x01, 0x01, 0x32, 0x81, 0x01, 0x33, 0x01, 0x32, 0x01, 0x01, 0x12, 0x83, 0x01, 0x13, 0x00, 0xF2, 0x01, 0x13, 0x01, 0x33, 0x0C, 0x01, 0x13, 0x84, 0x01, 0x12, 0x01, 0x13, 0x01, 0x33, 0x01, 0x13, 0x01, 0x12, 0x01, 0x01, 0x13, 0x02, 0x01, 0x33, 0x01, 0x01, 0x13, 0x01, 0x01, 0x33, 0x05, 0x01, 0x13, 0x80, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x02, 0x01, 0x33, 0x01, 0x01, 0x13, 0x83, 0x01, 0x12, 0x01, 0x33, 0x01, 0x12, 0x01, 0x33, 0x01, 0x01, 0x32, 0x86, 0x01, 0x12, 0x01, 0x32, 0x01, 0x52, 0x01, 0x73, 0x12, 0x15, 0x43, 0x9B, 0x12, 0x36, 0x01, 0x01, 0x32, 0x05, 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, 0x01, 0x12, 0x01, 0x01, 0x33, 0x01, 0x01, 0x12, 0x80, 0x01, 0x33, 0x05, 0x01, 0x12, 0x81, 0x01, 0x33, 0x01, 0x12, 0x06, 0x01, 0x13, 0x80, 0x01, 0x33, 0x06, 0x01, 0x13, 0x83, 0x01, 0x33, 0x01, 0x13, 0x01, 0x12, 0x01, 0x33, 0x02, 0x01, 0x12, 0x03, 0x01, 0x13, 0x01, 0x01, 0x33, 0x81, 0x01, 0x12, 0x01, 0x33, 0x03, 0x01, 0x13, 0x02, 0x01, 0x33, 0x01, 0x01, 0x13, 0x81, 0x01, 0x32, 0x01, 0x33, 0x02, 0x01, 0x32, 0x87, 0x01, 0x53, 0x01, 0x93, 0x3B, 0x7B, 0x22, 0x77, 0x01, 0x53, 0x01, 0x33, 0x01, 0x13, 0x01, 0x32, 0x03, 0x01, 0x12, 0x80, 0x01, 0x33, 0x03, 0x01, 0x12, 0x02, 0x01, 0x13, 0x80, 0x01, 0x33, 0x01, 0x01, 0x13, 0x81, 0x01, 0x12, 0x01, 0x33, 0x05, 0x01, 0x13, 0x81, 0x01, 0x12, 0x01, 0x33, 0x01, 0x01, 0x13, 0x80, 0x01, 0x12, 0x01, 0x01, 0x13, 0x01, 0x01, 0x33, 0x83, 0x01, 0x12, 0x01, + 0x13, 0x01, 0x33, 0x01, 0x32, 0x01, 0x01, 0x33, 0x01, 0x01, 0x32, 0x80, 0x01, 0x33, 0x02, 0x01, 0x32, 0x03, 0x01, 0x33, 0x01, 0x01, 0x13, 0x80, 0x01, 0x33, 0x01, 0x01, 0x12, 0x80, 0x01, 0x33, 0x03, 0x01, 0x12, 0x06, 0x01, 0x32, 0x85, 0x01, 0x53, 0x01, 0xB4, 0x43, 0xDC, 0x01, 0xB4, 0x01, 0x53, 0x01, 0x32, 0x01, 0x01, 0x12, 0x81, 0x01, 0x33, 0x01, 0x12, 0x01, 0x01, 0x33, 0x02, 0x01, 0x13, 0x80, 0x01, 0x33, 0x01, 0x01, 0x13, 0x01, 0x01, 0x33, 0x81, 0x01, 0x13, 0x01, 0x33, 0x01, 0x01, 0x13, 0x80, 0x01, 0x33, 0x01, 0x01, 0x13, 0x01, 0x01, 0x33, 0x02, 0x01, 0x13, 0x14, 0x01, 0x33, 0x01, 0x01, 0x13, 0x07, 0x01, 0x33, 0x01, 0x01, 0x13, 0x02, 0x01, 0x33, 0x04, 0x01, 0x12, 0x84, 0x00, 0xF1, 0x1A, 0x97, 0x0A, 0x15, 0x01, 0x32, 0x01, 0x33, 0x01, 0x01, 0x32, 0x02, 0x01, 0x12, 0x83, 0x01, 0x32, 0x01, 0x33, 0x01, 0x13, 0x01, 0x33, 0x01, 0x01, 0x13, 0x80, 0x01, 0x33, 0x01, 0x01, 0x13, 0x02, 0x01, 0x33, 0x01, 0x01, 0x13, 0x82, 0x01, 0x33, 0x01, 0x12, 0x01, 0x33, 0x01, 0x01, 0x12, 0x01, 0x01, 0x32, 0x81, 0x01, 0x12, 0x01, 0x13, 0x01, 0x01, 0x32, 0x03, 0x01, 0x13, 0x04, 0x01, 0x33, 0x81, 0x01, 0x53, 0x01, 0x13, 0x05, 0x01, 0x33, 0x01, 0x01, 0x13, 0x80, 0x01, 0x33, 0x02, 0x01, 0x13, 0x03, 0x01, 0x33, 0x01, 0x01, 0x13, 0x81, 0x01, 0x33, 0x01, 0x32, 0x01, 0x01, 0x33, 0x02, 0x01, 0x13, 0x01, 0x01, 0x12, 0x01, 0x01, 0x32, 0x85, 0x01, 0x53, 0x2A, 0xD9, 0x22, 0x98, 0x01, 0x53, 0x01, 0x32, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x33, 0x80, + 0x01, 0x12, 0x01, 0x01, 0x13, 0x80, 0x01, 0x33, 0x03, 0x01, 0x13, 0x81, 0x01, 0x33, 0x01, 0x12, 0x01, 0x01, 0x33, 0x08, 0x01, 0x13, 0x80, 0x01, 0x33, 0x02, 0x01, 0x13, 0x80, 0x01, 0x33, 0x04, 0x01, 0x13, 0x80, 0x01, 0x33, 0x01, 0x01, 0x32, 0x01, 0x01, 0x13, 0x80, 0x01, 0x12, 0x02, 0x01, 0x32, 0x01, 0x01, 0x33, 0x82, 0x01, 0x13, 0x01, 0x33, 0x01, 0x13, 0x03, 0x01, 0x33, 0x80, 0x01, 0x32, 0x01, 0x01, 0x33, 0x81, 0x01, 0x32, 0x01, 0x33, 0x07, 0x01, 0x32, 0x86, 0x01, 0x52, 0x1A, 0x36, 0x3B, 0x5A, 0x01, 0x94, 0x01, 0x73, 0x01, 0x33, 0x01, 0x32, 0x02, 0x01, 0x33, 0x01, 0x01, 0x12, 0x01, 0x01, 0x13, 0x01, 0x01, 0x33, 0x03, 0x01, 0x13, 0x81, 0x01, 0x33, 0x01, 0x13, 0x01, 0x01, 0x33, 0x06, 0x01, 0x13, 0x80, 0x01, 0x12, 0x09, 0x01, 0x33, 0x01, 0x01, 0x53, 0x03, 0x01, 0x33, 0x01, 0x09, 0x33, 0x88, 0x11, 0x13, 0x19, 0x13, 0x29, 0x12, 0x30, 0xB0, 0x61, 0x73, 0xA2, 0xD8, 0xA2, 0x35, 0xA1, 0xD4, 0xA9, 0xF4, 0x01, 0xA9, 0xF3, 0x03, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x81, 0xA9, 0xD3, 0xB1, 0xF3, 0x02, 0xA9, 0xD3, 0x81, 0xB1, 0xF3, 0xA9, 0xB3, 0x01, 0xA9, 0xD3, 0x8A, 0xB1, 0xD3, 0xB1, 0xF4, 0xA9, 0xF4, 0xA2, 0x55, 0xA2, 0x97, 0x82, 0x56, 0x18, 0x2E, 0x10, 0xB1, 0x08, 0xB1, 0x08, 0xF2, 0x00, 0xF2, 0x02, 0x01, 0x33, 0x02, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x01, 0x01, 0x33, 0x80, 0x01, 0x13, 0x02, 0x01, 0x33, 0x01, 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, 0x01, 0x13, 0x82, 0x01, 0x33, 0x01, 0x12, 0x01, 0x33, 0x05, 0x01, 0x12, 0x81, 0x01, 0x33, 0x01, + 0x12, 0x03, 0x01, 0x32, 0x81, 0x01, 0x12, 0x01, 0x32, 0x05, 0x01, 0x12, 0x82, 0x01, 0x33, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x12, 0x81, 0x01, 0x33, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x81, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x12, 0x02, 0x01, 0x32, 0x86, 0x01, 0x73, 0x22, 0x77, 0x3B, 0x5A, 0x12, 0x15, 0x01, 0x52, 0x01, 0x53, 0x01, 0x52, 0x03, 0x01, 0x32, 0x80, 0x01, 0x33, 0x02, 0x01, 0x12, 0x01, 0x01, 0x33, 0x02, 0x00, 0xF2, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x33, 0x81, 0x01, 0x12, 0x01, 0x33, 0x13, 0x01, 0x12, 0x83, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x12, 0x02, 0x01, 0x32, 0x81, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x04, 0x01, 0x12, 0x01, 0x01, 0x32, 0x81, 0x01, 0x11, 0x01, 0x12, 0x02, 0x01, 0x32, 0x84, 0x01, 0x52, 0x12, 0x15, 0x33, 0x19, 0x2A, 0xD8, 0x01, 0x93, 0x01, 0x01, 0x52, 0x01, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x04, 0x01, 0x12, 0x81, 0x01, 0x33, 0x01, 0x12, 0x02, 0x01, 0x32, 0x80, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x08, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x81, 0x01, 0x12, 0x00, 0xF2, 0x10, 0x01, 0x12, 0x80, 0x01, 0x32, 0x06, 0x01, 0x12, 0x03, 0x01, 0x11, 0x01, 0x01, 0x31, 0x87, 0x01, 0x52, 0x01, 0x72, 0x0A, 0x14, 0x22, 0xD7, 0x33, 0x39, 0x22, 0xB7, 0x09, 0xD4, 0x01, 0x72, 0x01, 0x01, 0x52, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x02, 0x00, 0xF2, 0x83, 0x01, 0x12, 0x00, 0xF2, 0x01, 0x12, 0x01, 0x32, 0x08, 0x01, 0x12, 0x82, 0x01, 0x32, 0x09, 0x73, + 0x01, 0x32, 0x0D, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x83, 0x00, 0xF2, 0x01, 0x12, 0x00, 0xF2, 0x00, 0xF1, 0x04, 0x01, 0x12, 0x05, 0x01, 0x11, 0x02, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x01, 0x32, 0x87, 0x01, 0x52, 0x09, 0xB3, 0x1A, 0x56, 0x33, 0x39, 0x3B, 0x5A, 0x1A, 0x76, 0x09, 0x93, 0x01, 0x72, 0x01, 0x01, 0x32, 0x03, 0x01, 0x12, 0x84, 0x00, 0xF1, 0x01, 0x32, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x06, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x06, 0x01, 0x12, 0x82, 0x00, 0xF2, 0x01, 0x12, 0x00, 0xF2, 0x0B, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x01, 0x00, 0xF1, 0x02, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x03, 0x01, 0x12, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x87, 0x01, 0x32, 0x01, 0x72, 0x09, 0xD4, 0x22, 0x97, 0x2A, 0xF8, 0x22, 0xB7, 0x11, 0xF4, 0x01, 0x52, 0x01, 0x01, 0x32, 0x84, 0x01, 0x12, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x81, 0x00, 0xF1, 0x00, 0xF2, 0x02, 0x00, 0xF1, 0x0A, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x33, 0x02, 0x01, 0x12, 0x80, 0x01, 0x13, 0x04, 0x01, 0x12, 0x81, 0x01, 0x33, 0x01, 0x12, 0x03, 0x00, 0xF2, 0x80, 0x01, 0x13, 0x04, 0x01, 0x12, 0x81, 0x00, 0xF2, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x83, 0x01, 0x12, 0x01, 0x32, 0x01, 0x12, 0x00, 0xF2, 0x04, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x12, 0x87, 0x01, 0x32, 0x09, 0xB4, 0x22, 0x97, 0x32, 0xF9, 0x22, + 0x97, 0x12, 0x15, 0x01, 0x52, 0x01, 0x32, 0x01, 0x01, 0x11, 0x82, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x11, 0x01, 0x01, 0x12, 0x80, 0x01, 0x11, 0x11, 0x01, 0x12, 0x81, 0x01, 0x13, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x02, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x08, 0x01, 0x12, 0x03, 0x00, 0xF2, 0x81, 0x01, 0x12, 0x01, 0x33, 0x02, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x06, 0x01, 0x12, 0x86, 0x01, 0x32, 0x01, 0x73, 0x2A, 0xB7, 0x33, 0x19, 0x11, 0xF5, 0x01, 0x53, 0x01, 0x52, 0x01, 0x01, 0x32, 0x01, 0x01, 0x11, 0x84, 0x01, 0x12, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x12, 0x02, 0x01, 0x32, 0x80, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x81, 0x01, 0x12, 0x00, 0xF2, 0x07, 0x01, 0x12, 0x80, 0x01, 0x33, 0x02, 0x01, 0x12, 0x81, 0x01, 0x13, 0x01, 0x12, 0x01, 0x01, 0x32, 0x02, 0x01, 0x33, 0x01, 0x01, 0x12, 0x83, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x13, 0x08, 0x01, 0x12, 0x80, 0x01, 0x33, 0x03, 0x01, 0x12, 0x80, 0x01, 0x33, 0x08, 0x01, 0x12, 0x85, 0x01, 0x32, 0x01, 0x52, 0x1A, 0x36, 0x3B, 0x3A, 0x11, 0xF5, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x02, 0x01, 0x12, 0x80, 0x01, 0x53, 0x04, 0x01, 0x12, 0x80, 0x01, 0x32, 0x06, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x33, 0x04, 0x01, 0x12, 0x82, 0x01, 0x33, 0x01, 0x12, 0x01, 0x33, 0x02, 0x01, 0x13, 0x09, 0x01, 0x12, 0x81, 0x01, 0x33, 0x01, 0x12, 0x01, 0x01, 0x33, 0x01, 0x01, 0x12, 0x83, 0x01, 0x33, 0x01, 0x12, 0x01, 0x33, 0x01, 0x12, 0x01, 0x01, + 0x33, 0x01, 0x01, 0x12, 0x01, 0x01, 0x13, 0x81, 0x01, 0x32, 0x01, 0x12, 0x01, 0x01, 0x32, 0x85, 0x01, 0x52, 0x01, 0x32, 0x2A, 0xD8, 0x2A, 0xF8, 0x01, 0x52, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x08, 0x01, 0x12, 0x01, 0x01, 0x33, 0x05, 0x01, 0x12, 0x03, 0x01, 0x13, 0x05, 0x01, 0x12, 0x87, 0x01, 0x33, 0x01, 0x12, 0x01, 0x33, 0x01, 0x13, 0x01, 0x33, 0x01, 0x12, 0x01, 0x33, 0x01, 0x12, 0x04, 0x01, 0x32, 0x01, 0x01, 0x12, 0x02, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x33, 0x05, 0x01, 0x12, 0x83, 0x01, 0x32, 0x01, 0x33, 0x01, 0x12, 0x01, 0x33, 0x03, 0x01, 0x32, 0x81, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x52, 0x81, 0x22, 0xB7, 0x2A, 0xF9, 0x01, 0x01, 0x53, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x82, 0x01, 0x33, 0x01, 0x12, 0x01, 0x13, 0x01, 0x01, 0x12, 0x80, 0x01, 0x33, 0x03, 0x01, 0x12, 0x82, 0x01, 0x33, 0x01, 0x13, 0x01, 0x33, 0x06, 0x01, 0x13, 0x02, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x33, 0x80, 0x01, 0x13, 0x01, 0x01, 0x33, 0x82, 0x01, 0x13, 0x01, 0x33, 0x01, 0x32, 0x01, 0x01, 0x33, 0x82, 0x01, 0x12, 0x01, 0x13, 0x01, 0x33, 0x01, 0x01, 0x12, 0x01, 0x01, 0x33, 0x80, 0x01, 0x13, 0x01, 0x01, 0x12, 0x01, 0x01, 0x33, 0x84, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x33, 0x01, 0x32, 0x02, 0x01, 0x12, 0x82, 0x01, 0x33, 0x01, 0x32, 0x01, 0x33, 0x01, 0x01, 0x12, 0x84, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x11, 0x22, 0xB7, 0x0A, 0x14, 0x01, 0x01, 0x32, 0x11, 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, + 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x12, 0x81, 0x01, 0x33, 0x01, 0x32, 0x02, 0x01, 0x33, 0x02, 0x01, 0x32, 0x80, 0x01, 0x33, 0x02, 0x01, 0x32, 0x03, 0x01, 0x33, 0x04, 0x01, 0x12, 0x80, 0x01, 0x33, 0x09, 0x01, 0x12, 0x80, 0x01, 0x33, 0x02, 0x01, 0x12, 0x01, 0x01, 0x32, 0x83, 0x01, 0x53, 0x09, 0xD4, 0x3B, 0x3A, 0x01, 0x52, 0x03, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x33, 0x04, 0x01, 0x12, 0x01, 0x01, 0x13, 0x84, 0x01, 0x33, 0x01, 0x32, 0x01, 0x33, 0x01, 0x12, 0x01, 0x33, 0x03, 0x01, 0x12, 0x02, 0x01, 0x13, 0x80, 0x01, 0x12, 0x02, 0x01, 0x13, 0x01, 0x01, 0x12, 0x02, 0x01, 0x13, 0x82, 0x01, 0x12, 0x01, 0x33, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x12, 0x01, 0x01, 0x32, 0x81, 0x01, 0x33, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x33, 0x05, 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, 0x01, 0x32, 0x80, 0x01, 0x12, 0x02, 0x01, 0x32, 0x80, 0x01, 0x12, 0x03, 0x01, 0x32, 0x85, 0x01, 0x11, 0x01, 0x32, 0x22, 0x97, 0x2A, 0xF9, 0x01, 0x73, 0x01, 0x53, 0x01, 0x01, 0x32, 0x81, 0x01, 0x12, 0x01, 0x33, 0x04, 0x01, 0x12, 0x01, 0x01, 0x13, 0x01, 0x01, 0x33, 0x80, 0x01, 0x12, 0x01, 0x01, 0x13, 0x81, 0x01, 0x12, 0x01, 0x33, 0x02, 0x01, 0x12, 0x02, 0x01, 0x13, 0x01, 0x01, 0x33, 0x82, 0x01, 0x32, 0x01, 0x33, 0x01, 0x32, 0x0C, 0x01, 0x33, 0x8B, 0x09, 0x53, 0x09, 0x33, 0x11, 0x33, 0x19, 0x33, 0x20, 0xF2, 0x28, 0xD1, 0x40, 0x90, 0x92, 0x97, 0xA2, 0x56, 0xA1, + 0xF4, 0xAA, 0x14, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x85, 0xB1, 0xF4, 0xA9, 0xD3, 0xA9, 0xF3, 0xB1, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x86, 0xA9, 0xF3, 0xA9, 0xD3, 0xB1, 0xF4, 0xA9, 0xD3, 0xB1, 0xF3, 0xB1, 0xF4, 0xA9, 0xB3, 0x01, 0xA9, 0xF4, 0x87, 0xA2, 0x35, 0x9A, 0x76, 0x8A, 0x77, 0x20, 0x4F, 0x18, 0xD1, 0x08, 0xD1, 0x08, 0xF2, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x83, 0x01, 0x33, 0x01, 0x12, 0x01, 0x33, 0x01, 0x32, 0x01, 0x01, 0x33, 0x05, 0x01, 0x12, 0x82, 0x01, 0x13, 0x01, 0x33, 0x01, 0x12, 0x01, 0x01, 0x32, 0x06, 0x01, 0x12, 0x02, 0x01, 0x32, 0x83, 0x01, 0x12, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x04, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x05, 0x01, 0x12, 0x88, 0x01, 0x11, 0x01, 0x12, 0x01, 0x32, 0x01, 0x52, 0x09, 0xD4, 0x2A, 0xD8, 0x2A, 0xB8, 0x01, 0x93, 0x01, 0x52, 0x01, 0x01, 0x32, 0x05, 0x01, 0x12, 0x82, 0x01, 0x33, 0x01, 0x12, 0x01, 0x13, 0x04, 0x00, 0xF2, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x1A, 0x01, 0x12, 0x02, 0x01, 0x32, 0x81, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x82, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x03, 0x01, 0x12, 0x85, 0x01, 0x32, 0x01, 0x73, 0x22, 0x97, 0x3B, 0x3A, 0x1A, 0x36, 0x01, 0x93, 0x01, 0x01, 0x52, 0x02, 0x01, 0x32, 0x04, 0x01, 0x12, 0x01, 0x01, 0x32, 0x0E, 0x01, 0x12, 0x84, 0x01, 0x32, 0x01, 0x12, 0x00, 0xF2, 0x01, 0x12, 0x00, + 0xF2, 0x11, 0x01, 0x12, 0x83, 0x01, 0x32, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x01, 0x31, 0x86, 0x01, 0x51, 0x09, 0xB3, 0x2A, 0xD8, 0x3B, 0x5A, 0x22, 0xB7, 0x09, 0xF4, 0x01, 0x72, 0x01, 0x01, 0x32, 0x81, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x09, 0x53, 0x02, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x81, 0x00, 0xF2, 0x00, 0xF1, 0x04, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x08, 0x01, 0x12, 0x03, 0x00, 0xF1, 0x83, 0x01, 0x12, 0x00, 0xF2, 0x00, 0xF1, 0x00, 0xF2, 0x07, 0x00, 0xF1, 0x0B, 0x01, 0x11, 0x87, 0x01, 0x31, 0x01, 0x92, 0x1A, 0x55, 0x2A, 0xD8, 0x32, 0xF8, 0x22, 0x97, 0x11, 0xF4, 0x01, 0x72, 0x01, 0x01, 0x31, 0x88, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x00, 0xF2, 0x81, 0x00, 0xF1, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x83, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x10, 0x01, 0x12, 0x82, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF2, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xF2, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x06, 0x01, 0x11, 0x87, 0x01, 0x32, 0x01, 0x72, 0x1A, 0x35, 0x2A, 0xF8, 0x2A, 0xD8, 0x1A, 0x56, 0x09, 0xD4, 0x01, 0x72, 0x01, 0x01, 0x32, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x09, 0x00, 0xF1, 0x04, 0x01, + 0x12, 0x80, 0x00, 0xF1, 0x0B, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x04, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x03, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x87, 0x00, 0xF1, 0x00, 0xF2, 0x01, 0x11, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x01, 0x00, 0xF1, 0x88, 0x01, 0x11, 0x01, 0x12, 0x09, 0x93, 0x2A, 0x97, 0x33, 0x19, 0x22, 0x77, 0x09, 0xB3, 0x01, 0x52, 0x01, 0x31, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x80, 0x01, 0x11, 0x0C, 0x01, 0x12, 0x02, 0x00, 0xF2, 0x03, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x05, 0x01, 0x12, 0x81, 0x00, 0xF2, 0x01, 0x12, 0x03, 0x00, 0xF2, 0x81, 0x01, 0x12, 0x01, 0x33, 0x0B, 0x01, 0x12, 0x01, 0x01, 0x11, 0x86, 0x01, 0x32, 0x1A, 0x36, 0x3B, 0x19, 0x1A, 0x56, 0x09, 0xB3, 0x01, 0x52, 0x01, 0x32, 0x01, 0x01, 0x12, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x01, 0x32, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x0F, 0x01, 0x12, 0x01, 0x01, 0x32, 0x16, 0x01, 0x12, 0x02, 0x00, 0xF2, 0x03, 0x01, 0x12, 0x88, 0x01, 0x32, 0x01, 0x11, 0x01, 0x32, 0x01, 0x52, 0x1A, 0x56, 0x3B, 0x7A, 0x09, 0xB4, 0x01, 0x32, 0x01, 0x11, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x0C, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x0A, 0x01, 0x12, 0x80, 0x01, 0x32, 0x0D, 0x01, 0x12, 0x01, 0x01, + 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x08, 0x01, 0x12, 0x02, 0x01, 0x32, 0x85, 0x09, 0xD4, 0x43, 0x9B, 0x01, 0x73, 0x01, 0x52, 0x01, 0x12, 0x00, 0xF2, 0x0A, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x80, 0x01, 0x32, 0x0A, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x01, 0x01, 0x32, 0x12, 0x01, 0x12, 0x80, 0x01, 0x32, 0x04, 0x01, 0x12, 0x01, 0x01, 0x32, 0x82, 0x01, 0x72, 0x3B, 0x5A, 0x09, 0xB4, 0x01, 0x01, 0x32, 0x0E, 0x01, 0x12, 0x80, 0x01, 0x13, 0x06, 0x01, 0x12, 0x01, 0x01, 0x33, 0x01, 0x01, 0x12, 0x01, 0x01, 0x32, 0x80, 0x01, 0x12, 0x02, 0x01, 0x32, 0x04, 0x01, 0x12, 0x01, 0x01, 0x32, 0x0D, 0x01, 0x12, 0x01, 0x01, 0x32, 0x03, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x12, 0x01, 0x01, 0x32, 0x81, 0x01, 0x12, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x22, 0x76, 0x09, 0xF4, 0x02, 0x01, 0x32, 0x1A, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x02, 0x01, 0x32, 0x80, 0x01, 0x12, 0x01, 0x01, 0x32, 0x80, 0x01, 0x12, 0x06, 0x01, 0x32, 0x80, 0x01, 0x13, 0x04, 0x01, 0x12, 0x02, 0x01, 0x32, 0x05, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x01, 0x01, 0x32, 0x83, 0x01, 0x52, 0x2A, 0xF9, 0x01, 0xB3, 0x01, 0x32, 0x03, 0x01, 0x12, 0x80, 0x01, 0x32, 0x09, 0x01, 0x12, 0x01, 0x01, 0x32, 0x05, 0x01, 0x12, 0x80, 0x01, 0x32, 0x07, 0x01, 0x12, 0x80, 0x01, 0x13, 0x04, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, + 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x08, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x02, 0x01, 0x12, 0x03, 0x01, 0x32, 0x80, 0x01, 0x11, 0x01, 0x01, 0x32, 0x84, 0x01, 0x52, 0x33, 0x19, 0x22, 0x97, 0x01, 0x52, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x84, 0x01, 0x32, 0x01, 0x33, 0x01, 0x12, 0x01, 0x32, 0x00, 0xF2, 0x0C, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x82, 0x01, 0x33, 0x01, 0x12, 0x01, 0x32, 0x07, 0x01, 0x33, 0x8F, 0x01, 0x12, 0x09, 0x33, 0x09, 0x32, 0x11, 0x12, 0x19, 0x12, 0x28, 0xF1, 0x30, 0x6F, 0x79, 0xF5, 0xA2, 0xB7, 0x9A, 0x14, 0xA2, 0x14, 0xA9, 0xF4, 0xA9, 0xD3, 0xA9, 0xF4, 0xA9, 0xF3, 0xB2, 0x14, 0x02, 0xA9, 0xD3, 0x87, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0xB1, 0xF3, 0xA9, 0xF3, 0xB1, 0xF4, 0xA9, 0xD3, 0xB1, 0xF3, 0x02, 0xA9, 0xD3, 0x87, 0xAA, 0x14, 0xA2, 0x35, 0x9A, 0x76, 0x92, 0xB8, 0x20, 0x4F, 0x18, 0xD1, 0x08, 0xD1, 0x08, 0xF1, 0x02, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x07, 0x01, 0x12, 0x01, 0x01, 0x32, 0x0A, 0x01, 0x12, 0x80, 0x01, 0x32, 0x05, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x12, 0x01, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x0E, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x01, 0x12, 0x01, 0x01, 0x32, 0x86, 0x01, 0x73, 0x12, 0x36, 0x3B, 0x7A, 0x12, 0x35, 0x01, 0x73, 0x01, 0x52, 0x01, 0x32, 0x07, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x80, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x02, 0x01, 0x12, 0x82, 0x00, 0xF2, 0x01, 0x12, 0x00, + 0xF2, 0x02, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x05, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x07, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x07, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x03, 0x01, 0x12, 0x83, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x01, 0x12, 0x88, 0x01, 0x32, 0x01, 0x73, 0x22, 0x76, 0x32, 0xF9, 0x1A, 0x36, 0x01, 0x73, 0x01, 0x52, 0x01, 0x73, 0x01, 0x32, 0x07, 0x01, 0x12, 0x81, 0x00, 0xF2, 0x00, 0xF1, 0x04, 0x01, 0x12, 0x80, 0x01, 0x11, 0x03, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x03, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x09, 0x01, 0x12, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x01, 0x11, 0x01, 0x01, 0x12, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x84, 0x01, 0x12, 0x01, 0x31, 0x01, 0x11, 0x01, 0x32, 0x01, 0x11, 0x02, 0x01, 0x31, 0x86, 0x01, 0x52, 0x01, 0x93, 0x12, 0x35, 0x33, 0x39, 0x33, 0x19, 0x1A, 0x56, 0x01, 0x52, 0x01, 0x01, 0x32, 0x87, 0x01, 0x11, 0x01, 0x12, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x11, 0x01, 0x32, 0x01, 0x12, 0x01, 0x01, 0x11, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x04, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x02, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x02, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x83, 0x01, 0x12, 0x00, 0xF1, 0x00, 0xF2, 0x01, 0x12, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, + 0xF1, 0x04, 0x01, 0x11, 0x89, 0x01, 0x31, 0x01, 0x11, 0x01, 0x51, 0x01, 0x92, 0x12, 0x35, 0x2A, 0xB7, 0x33, 0x19, 0x2A, 0xD7, 0x22, 0x56, 0x01, 0x72, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x80, 0x01, 0x12, 0x01, 0x00, 0xD1, 0x80, 0x00, 0xF2, 0x06, 0x00, 0xF1, 0x05, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x03, 0x01, 0x12, 0x89, 0x01, 0x11, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x85, 0x01, 0x12, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x01, 0x31, 0x88, 0x01, 0x52, 0x01, 0xB3, 0x12, 0x35, 0x22, 0x96, 0x22, 0xB7, 0x12, 0x15, 0x09, 0xB3, 0x01, 0x52, 0x01, 0x31, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x03, 0x00, 0xF1, 0x81, 0x01, 0x12, 0x01, 0x11, 0x03, 0x01, 0x12, 0x80, 0x01, 0x11, 0x02, 0x01, 0x12, 0x80, 0x01, 0x11, 0x08, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x08, 0x01, 0x12, 0x81, 0x01, 0x11, 0x01, 0x32, 0x01, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x83, 0x01, 0x12, 0x01, 0x32, 0x01, 0x11, 0x01, 0x32, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x85, 0x01, 0x31, 0x01, 0x93, 0x22, 0x97, 0x33, 0x19, 0x2A, 0xB7, 0x09, 0xB3, 0x03, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x80, 0x01, 0x12, 0x03, 0x00, + 0xF1, 0x01, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x07, 0x01, 0x12, 0x81, 0x00, 0xF2, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x81, 0x01, 0x12, 0x00, 0xF2, 0x0C, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x06, 0x01, 0x12, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x81, 0x01, 0x31, 0x01, 0x93, 0x01, 0x2A, 0xD8, 0x81, 0x11, 0xF5, 0x09, 0x93, 0x01, 0x01, 0x32, 0x04, 0x01, 0x11, 0x80, 0x01, 0x31, 0x01, 0x01, 0x11, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x84, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x32, 0x01, 0x12, 0x01, 0x53, 0x10, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x08, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x08, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x02, 0x01, 0x12, 0x80, 0x01, 0x11, 0x02, 0x01, 0x32, 0x86, 0x01, 0x52, 0x01, 0x72, 0x2A, 0xB7, 0x43, 0x7A, 0x09, 0x93, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x01, 0x12, 0x01, 0x11, 0x25, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x04, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x07, 0x01, 0x12, 0x01, 0x01, 0x32, 0x85, 0x01, 0x73, 0x3B, 0x5A, 0x11, 0xF5, 0x01, 0x32, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x82, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x05, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x00, 0xF2, 0x09, 0x01, 0x12, 0x02, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, + 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x06, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x84, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x12, 0x01, 0x11, 0x01, 0x01, 0x32, 0x87, 0x09, 0xF4, 0x2A, 0xF8, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x12, 0x01, 0x52, 0x01, 0x12, 0x01, 0x01, 0x32, 0x05, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x0E, 0x01, 0x12, 0x02, 0x01, 0x32, 0x01, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x12, 0x01, 0x01, 0x32, 0x80, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x12, 0x81, 0x00, 0xF2, 0x01, 0x32, 0x03, 0x01, 0x12, 0x86, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x02, 0x01, 0x12, 0x81, 0x01, 0x11, 0x01, 0x32, 0x03, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x2A, 0xD7, 0x12, 0x35, 0x01, 0x01, 0x32, 0x81, 0x01, 0x12, 0x01, 0x11, 0x03, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x12, 0x02, 0x01, 0x32, 0x03, 0x01, 0x12, 0x01, 0x01, 0x32, 0x80, 0x01, 0x12, 0x01, 0x01, 0x32, 0x04, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x03, 0x01, 0x32, 0x03, 0x01, 0x12, 0x03, 0x01, 0x32, 0x03, 0x01, 0x12, 0x80, 0x01, 0x32, 0x08, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x84, 0x01, 0x52, 0x1A, 0x76, 0x22, 0x97, 0x01, 0x11, 0x01, 0x12, 0x07, 0x01, 0x32, 0x02, 0x01, 0x12, 0x01, 0x01, 0x32, 0x03, + 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x12, 0x05, 0x01, 0x32, 0x82, 0x01, 0x12, 0x01, 0x32, 0x01, 0x12, 0x01, 0x01, 0x32, 0x09, 0x01, 0x12, 0x01, 0x01, 0x32, 0x81, 0x01, 0x12, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x05, 0x01, 0x12, 0x80, 0x01, 0x32, 0x04, 0x01, 0x12, 0x02, 0x01, 0x11, 0x02, 0x01, 0x32, 0x02, 0x01, 0x11, 0x82, 0x01, 0x93, 0x43, 0x7B, 0x12, 0x15, 0x01, 0x01, 0x32, 0x05, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x04, 0x01, 0x12, 0x81, 0x00, 0xF2, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x02, 0x01, 0x32, 0x80, 0x01, 0x33, 0x01, 0x01, 0x32, 0x80, 0x01, 0x33, 0x02, 0x01, 0x12, 0x82, 0x01, 0x33, 0x01, 0x32, 0x01, 0x12, 0x01, 0x09, 0x12, 0x88, 0x19, 0x12, 0x20, 0xF1, 0x28, 0x90, 0x40, 0xB0, 0x9A, 0xB7, 0xA2, 0x55, 0xA2, 0x14, 0xAA, 0x14, 0xA1, 0xD3, 0x01, 0xA9, 0xD3, 0x81, 0xA9, 0xF4, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x80, 0xA9, 0xF3, 0x03, 0xA9, 0xD3, 0x84, 0xA9, 0xF3, 0xB2, 0x14, 0xA9, 0xD3, 0xB1, 0xF4, 0xA9, 0xD3, 0x01, 0xA9, 0xF4, 0x86, 0xA2, 0x14, 0xA2, 0x96, 0x8A, 0x97, 0x18, 0x0D, 0x10, 0x90, 0x10, 0xD1, 0x08, 0xF1, 0x01, 0x01, 0x12, 0x80, 0x01, 0x33, 0x01, 0x01, 0x12, 0x81, 0x00, 0xF2, 0x01, 0x12, 0x02, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x10, 0x01, 0x12, 0x80, 0x01, 0x32, 0x0B, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x85, 0x01, 0x11, 0x01, 0x12, + 0x01, 0x11, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x01, 0x12, 0x02, 0x01, 0x11, 0x80, 0x01, 0x31, 0x01, 0x01, 0x32, 0x85, 0x01, 0x93, 0x3B, 0x5A, 0x2A, 0xF8, 0x01, 0xB4, 0x01, 0x52, 0x01, 0x32, 0x01, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x32, 0x01, 0x12, 0x00, 0xF2, 0x03, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x04, 0x01, 0x12, 0x83, 0x00, 0xF1, 0x01, 0x32, 0x01, 0x11, 0x01, 0x32, 0x02, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x04, 0x01, 0x12, 0x04, 0x00, 0xF2, 0x81, 0x01, 0x11, 0x01, 0x32, 0x03, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x86, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x11, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x82, 0x01, 0x12, 0x01, 0x11, 0x01, 0x12, 0x03, 0x01, 0x11, 0x85, 0x09, 0xB3, 0x2A, 0xD8, 0x33, 0x19, 0x12, 0x35, 0x01, 0x93, 0x01, 0x52, 0x01, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF2, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x01, 0x12, 0x03, 0x00, 0xF1, 0x02, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x04, 0x01, 0x12, 0x83, 0x00, 0xF2, 0x01, 0x12, 0x00, 0xF2, 0x00, 0xF1, 0x02, 0x01, 0x12, 0x80, 0x01, 0x11, 0x08, 0x00, 0xF1, 0x81, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x80, 0x01, 0x31, 0x01, 0x01, 0x11, 0x02, 0x01, 0x31, 0x86, 0x01, 0x52, 0x1A, 0x15, 0x32, 0xF8, 0x33, 0x39, 0x1A, 0x96, 0x01, 0xB3, 0x01, 0x52, 0x03, + 0x01, 0x11, 0x80, 0x01, 0x32, 0x01, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x02, 0x01, 0x12, 0x04, 0x00, 0xF1, 0x0A, 0x01, 0x12, 0x82, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x05, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x02, 0x01, 0x31, 0x87, 0x01, 0x51, 0x09, 0xD3, 0x2A, 0x96, 0x3B, 0x59, 0x32, 0xF8, 0x1A, 0x55, 0x09, 0xB3, 0x01, 0x31, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x81, 0x00, 0xD1, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x02, 0x00, 0xD1, 0x06, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x84, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x89, 0x01, 0x31, 0x01, 0x72, 0x09, 0xF4, 0x1A, 0x76, 0x2A, 0xF8, 0x1A, 0x76, 0x09, 0xF4, 0x01, 0x92, 0x01, 0x72, 0x01, 0x31, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x07, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x81, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x03, 0x00, 0xF2, 0x80, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, + 0xF1, 0x03, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x84, 0x09, 0xB3, 0x2A, 0xD8, 0x3B, 0x5A, 0x22, 0xB7, 0x09, 0xD4, 0x01, 0x01, 0x32, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x06, 0x01, 0x11, 0x80, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x00, 0xF2, 0x80, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x80, 0x01, 0x12, 0x02, 0x00, 0xF2, 0x80, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x06, 0x01, 0x12, 0x83, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x32, 0x09, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x85, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x11, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x87, 0x01, 0x31, 0x01, 0x52, 0x1A, 0x55, 0x33, 0x18, 0x22, 0x96, 0x09, 0xB3, 0x01, 0x52, 0x01, 0x32, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x01, 0x31, 0x03, 0x01, 0x11, 0x83, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x11, 0x01, 0x12, 0x02, 0x01, 0x32, 0x83, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x05, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x0D, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x01, 0x31, 0x01, 0x32, 0x01, 0x01, 0x52, 0x83, 0x01, 0x93, 0x33, 0x19, 0x3B, 0x59, 0x01, 0x52, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x02, + 0x01, 0x12, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x12, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x0B, 0x01, 0x12, 0x01, 0x01, 0x11, 0x08, 0x01, 0x12, 0x80, 0x01, 0x11, 0x02, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x12, 0x01, 0x01, 0x32, 0x83, 0x01, 0x31, 0x2A, 0xF8, 0x1A, 0x76, 0x01, 0x52, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x12, 0x03, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x0C, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x03, 0x01, 0x12, 0x80, 0x01, 0x32, 0x07, 0x01, 0x12, 0x80, 0x01, 0x32, 0x10, 0x01, 0x12, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x03, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x12, 0x04, 0x01, 0x11, 0x85, 0x01, 0x32, 0x01, 0x31, 0x2A, 0xD8, 0x12, 0x35, 0x01, 0x11, 0x01, 0x32, 0x02, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x11, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x0F, 0x01, 0x12, 0x80, 0x01, 0x32, 0x10, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x01, 0x01, 0x32, 0x02, 0x01, 0x12, 0x01, 0x01, 0x32, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x06, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x83, 0x00, 0xF0, 0x22, 0x96, 0x12, 0x14, 0x01, 0x31, 0x01, 0x01, 0x32, 0x03, 0x01, 0x11, 0x80, 0x01, 0x32, 0x06, 0x01, 0x12, 0x80, 0x01, 0x32, 0x04, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x0A, 0x01, 0x12, 0x80, 0x01, 0x32, 0x04, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x01, 0x01, 0x32, 0x81, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x12, + 0x80, 0x01, 0x32, 0x09, 0x01, 0x12, 0x01, 0x01, 0x32, 0x87, 0x01, 0x12, 0x01, 0x11, 0x01, 0x12, 0x01, 0x31, 0x01, 0x93, 0x33, 0x39, 0x01, 0x31, 0x01, 0x32, 0x01, 0x01, 0x12, 0x86, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x31, 0x01, 0x32, 0x01, 0x11, 0x01, 0x32, 0x01, 0x01, 0x12, 0x82, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x03, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x01, 0x01, 0x32, 0x80, 0x01, 0x12, 0x03, 0x01, 0x32, 0x09, 0x01, 0x12, 0x80, 0x01, 0x11, 0x12, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x11, 0x80, 0x01, 0x31, 0x03, 0x01, 0x11, 0x83, 0x01, 0x31, 0x09, 0xD4, 0x3B, 0x7A, 0x09, 0x93, 0x02, 0x01, 0x32, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x05, 0x01, 0x12, 0x82, 0x01, 0x11, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x11, 0x81, 0x01, 0x32, 0x00, 0xF1, 0x06, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x05, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x05, 0x01, 0x12, 0x94, 0x01, 0x32, 0x01, 0x12, 0x09, 0x32, 0x09, 0x12, 0x10, 0xF1, 0x18, 0xF1, 0x28, 0xB0, 0x30, 0x4E, 0x79, 0xF5, 0x9A, 0x76, 0xA2, 0x35, 0xA1, 0xF4, 0xA9, 0xF4, 0xA9, 0xD4, 0xA9, 0xF4, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0xB1, 0xF3, 0xA9, 0xF3, 0xB1, 0xF3, 0x01, 0xA9, 0xD3, 0x03, 0xA9, 0xF3, 0x8B, 0xA9, 0xD3, 0xA9, 0xF3, 0xB2, 0x14, 0xA9, 0xF4, 0xA2, 0x14, 0x9A, 0x76, 0x8A, 0x97, 0x18, 0x0D, 0x10, 0x6F, 0x08, 0xB0, 0x00, 0xD1, 0x00, 0xF1, 0x1B, 0x01, 0x12, 0x80, 0x01, 0x11, 0x05, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x12, 0x01, 0x32, 0x01, 0x00, + 0xF1, 0x81, 0x01, 0x12, 0x00, 0xF1, 0x02, 0x00, 0xF2, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x01, 0x12, 0x04, 0x01, 0x11, 0x01, 0x01, 0x32, 0x01, 0x01, 0x52, 0x83, 0x12, 0x15, 0x33, 0x19, 0x1A, 0x76, 0x01, 0x52, 0x02, 0x01, 0x32, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x02, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x12, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x12, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x80, 0x01, 0x32, 0x01, 0x01, 0x11, 0x01, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x81, 0x00, 0xF2, 0x01, 0x12, 0x01, 0x00, 0xF2, 0x82, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x04, 0x00, 0xF1, 0x82, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x03, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x01, 0x12, 0x05, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x85, 0x01, 0x32, 0x09, 0xD4, 0x2A, 0xD8, 0x2B, 0x18, 0x1A, 0x56, 0x01, 0x93, 0x01, 0x01, 0x52, 0x80, 0x01, 0x32, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x83, 0x01, 0x12, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x83, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x81, 0x01, 0x31, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x85, 0x01, 0x52, 0x01, 0xB3, 0x1A, 0x76, 0x3B, 0x5A, + 0x3B, 0x39, 0x09, 0xB3, 0x01, 0x01, 0x31, 0x81, 0x01, 0x11, 0x01, 0x31, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x00, 0xD1, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x06, 0x00, 0xF1, 0x88, 0x01, 0x51, 0x11, 0xF3, 0x22, 0x76, 0x2A, 0xD7, 0x3B, 0x18, 0x2A, 0xB7, 0x11, 0xB3, 0x01, 0x31, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x81, 0x00, 0xF1, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x0D, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x09, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x89, 0x01, 0x72, 0x09, 0xF3, 0x22, 0xB6, 0x2A, 0xF8, 0x1A, 0x76, 0x01, 0xB3, 0x01, 0x92, 0x09, 0x92, 0x01, 0x51, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x05, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x82, 0x01, 0x12, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, + 0x01, 0x12, 0x05, 0x01, 0x11, 0x80, 0x01, 0x31, 0x01, 0x01, 0x11, 0x80, 0x01, 0x31, 0x05, 0x00, 0xF1, 0x88, 0x01, 0x11, 0x01, 0x31, 0x01, 0x72, 0x22, 0x76, 0x33, 0x19, 0x2A, 0xD7, 0x11, 0xF4, 0x01, 0x32, 0x01, 0x31, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x82, 0x00, 0xF2, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x84, 0x01, 0x12, 0x00, 0xF2, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x82, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF2, 0x01, 0x00, 0xF1, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x11, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x04, 0x00, 0xF1, 0x01, 0x01, 0x32, 0x80, 0x01, 0x12, 0x01, 0x01, 0x11, 0x01, 0x01, 0x32, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x00, 0xD1, 0x01, 0x01, 0x11, 0x87, 0x01, 0x31, 0x09, 0xB3, 0x2A, 0xB7, 0x22, 0x97, 0x1A, 0x35, 0x09, 0x93, 0x01, 0x32, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x32, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x12, 0x01, 0x11, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x83, 0x01, 0x11, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x08, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x84, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x02, 0x01, 0x11, + 0x02, 0x01, 0x31, 0x82, 0x01, 0xB3, 0x33, 0x39, 0x2A, 0xB7, 0x01, 0x01, 0x31, 0x85, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x01, 0x12, 0x84, 0x01, 0x11, 0x01, 0x32, 0x01, 0x11, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x11, 0x84, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x11, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x12, 0x01, 0x01, 0x11, 0x01, 0x01, 0x32, 0x88, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x01, 0x12, 0x01, 0x32, 0x01, 0x11, 0x01, 0x32, 0x02, 0x01, 0x11, 0x80, 0x01, 0x32, 0x01, 0x01, 0x52, 0x83, 0x2A, 0xB7, 0x22, 0x97, 0x01, 0x72, 0x01, 0x32, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x12, 0x02, 0x01, 0x11, 0x83, 0x01, 0x12, 0x01, 0x11, 0x01, 0x32, 0x01, 0x11, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x04, 0x01, 0x12, 0x80, 0x01, 0x53, 0x07, 0x01, 0x12, 0x80, 0x01, 0x32, 0x10, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x11, 0x02, 0x01, 0x12, 0x81, 0x01, 0x32, 0x01, 0x12, 0x01, 0x01, 0x32, 0x80, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x82, 0x01, 0x12, 0x01, 0x11, 0x01, 0x12, 0x01, 0x01, 0x11, 0x80, 0x01, 0x32, 0x04, 0x01, 0x11, 0x86, 0x01, 0x31, 0x01, 0x72, 0x33, 0x39, 0x01, 0x92, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x81, 0x01, 0x52, 0x01, 0x32, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x07, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, + 0x12, 0x80, 0x01, 0x32, 0x07, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x07, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x04, 0x01, 0x11, 0x87, 0x01, 0x32, 0x01, 0x11, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x22, 0x96, 0x11, 0xF4, 0x01, 0x01, 0x31, 0x02, 0x01, 0x11, 0x80, 0x01, 0x32, 0x02, 0x01, 0x11, 0x80, 0x01, 0x32, 0x04, 0x01, 0x11, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x82, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x32, 0x0B, 0x01, 0x12, 0x80, 0x01, 0x32, 0x02, 0x01, 0x12, 0x80, 0x01, 0x32, 0x04, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x81, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x01, 0x11, 0x83, 0x01, 0x32, 0x01, 0x12, 0x01, 0x11, 0x01, 0x32, 0x02, 0x01, 0x11, 0x02, 0x01, 0x12, 0x01, 0x01, 0x11, 0x85, 0x01, 0x12, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x09, 0x52, 0x01, 0x32, 0x02, 0x01, 0x11, 0x87, 0x01, 0x32, 0x01, 0x72, 0x33, 0x19, 0x22, 0x76, 0x01, 0x52, 0x01, 0x31, 0x01, 0x32, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x01, 0x31, 0x01, 0x01, 0x11, 0x83, 0x01, 0x32, 0x01, 0x12, 0x01, 0x11, 0x01, 0x12, 0x01, 0x01, 0x11, 0x83, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x32, 0x01, 0x12, 0x02, 0x01, 0x32, 0x82, 0x01, 0x12, 0x01, 0x11, 0x01, 0x32, 0x02, 0x01, 0x12, 0x01, 0x01, 0x11, 0x83, 0x01, 0x32, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x05, 0x01, 0x12, 0x82, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x32, 0x0F, 0x01, 0x12, 0x84, 0x01, 0x11, + 0x01, 0x12, 0x01, 0x32, 0x01, 0x11, 0x01, 0x32, 0x01, 0x01, 0x11, 0x80, 0x01, 0x31, 0x03, 0x01, 0x11, 0x8C, 0x01, 0x31, 0x22, 0x76, 0x43, 0x9A, 0x01, 0x72, 0x01, 0x31, 0x01, 0x11, 0x01, 0x32, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x12, 0x01, 0x01, 0x11, 0x80, 0x01, 0x12, 0x02, 0x01, 0x11, 0x84, 0x01, 0x12, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x32, 0x05, 0x01, 0x12, 0x86, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x00, 0xF2, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x32, 0x07, 0x01, 0x12, 0x80, 0x01, 0x11, 0x01, 0x09, 0x11, 0x89, 0x08, 0xF1, 0x10, 0xF1, 0x20, 0xD0, 0x28, 0x8F, 0x48, 0xD0, 0x9A, 0x97, 0xA2, 0x56, 0xA1, 0xF4, 0xAA, 0x14, 0xA9, 0xF4, 0x01, 0xA9, 0xD3, 0x83, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xB3, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x90, 0xA9, 0xD3, 0xAA, 0x14, 0xA9, 0xD3, 0xA9, 0xF3, 0xB2, 0x13, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0xA1, 0xF3, 0xA2, 0x35, 0xA2, 0x76, 0x9A, 0xD8, 0x18, 0x0D, 0x18, 0xB0, 0x11, 0x11, 0x00, 0xF1, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x02, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x03, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x0B, 0x01, 0x12, 0x81, 0x01, 0x11, 0x01, 0x32, 0x02, 0x01, 0x11, 0x82, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x12, 0x03, 0x01, 0x11, 0x03, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x01, 0x12, 0x03, 0x01, 0x11, 0x80, 0x01, 0x31, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x80, 0x01, 0x31, 0x01, 0x01, 0x32, 0x86, 0x01, 0x31, 0x01, 0x72, + 0x2A, 0xB7, 0x33, 0x39, 0x09, 0xF4, 0x01, 0x52, 0x01, 0x31, 0x01, 0x01, 0x32, 0x80, 0x01, 0x12, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x01, 0x32, 0x80, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x83, 0x01, 0x12, 0x01, 0x11, 0x09, 0x52, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x12, 0x03, 0x01, 0x11, 0x81, 0x01, 0x12, 0x01, 0x11, 0x01, 0x01, 0x12, 0x07, 0x00, 0xF1, 0x81, 0x01, 0x12, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x82, 0x00, 0xD1, 0x01, 0x12, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x87, 0x01, 0x31, 0x12, 0x15, 0x2A, 0xD8, 0x2A, 0xF8, 0x1A, 0x76, 0x01, 0x93, 0x01, 0x52, 0x01, 0x31, 0x03, 0x01, 0x11, 0x81, 0x01, 0x12, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x06, 0x00, 0xF1, 0x80, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xF2, 0x06, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x0A, 0x00, 0xF1, 0x84, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD1, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x01, 0x31, 0x86, 0x01, 0x52, 0x01, 0x72, 0x1A, 0x55, 0x3B, 0x39, 0x33, 0x18, 0x12, 0x35, 0x01, 0x72, 0x02, 0x01, 0x31, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x32, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x83, 0x01, 0x11, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x12, 0x02, 0x01, 0x11, 0x82, 0x01, 0x12, 0x01, 0x11, 0x00, 0xF1, 0x04, + 0x01, 0x11, 0x07, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x86, 0x2A, 0xD7, 0x2A, 0xB7, 0x1A, 0x34, 0x11, 0xD3, 0x01, 0x51, 0x01, 0x30, 0x01, 0x10, 0x08, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x07, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x84, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x82, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD1, 0x03, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x87, 0x09, 0xB3, 0x22, 0x76, 0x22, 0x96, 0x22, 0xB6, 0x1A, 0x55, 0x09, 0xD3, 0x01, 0x72, 0x01, 0x51, 0x01, 0x01, 0x31, 0x01, 0x01, 0x10, 0x05, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x83, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x80, 0x01, 0x31, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x86, 0x01, 0x72, 0x22, 0x76, 0x3B, 0x39, 0x2A, 0xB7, 0x11, 0xF4, 0x01, 0x72, 0x01, 0x31, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, + 0x06, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xF2, 0x03, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x80, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x83, 0x01, 0x11, 0x01, 0x32, 0x01, 0x11, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x81, 0x01, 0x31, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x88, 0x01, 0x11, 0x01, 0x72, 0x1A, 0x55, 0x2A, 0xD7, 0x1A, 0x76, 0x09, 0xD3, 0x01, 0x51, 0x01, 0x31, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x83, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x12, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x01, 0x31, 0x83, 0x09, 0xF4, 0x33, 0x59, 0x12, 0x35, 0x01, 0x31, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x01, 0x12, 0x03, 0x01, 0x11, 0x01, 0x01, 0x12, 0x03, 0x01, 0x11, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x12, + 0x82, 0x01, 0x11, 0x01, 0x12, 0x01, 0x32, 0x05, 0x01, 0x12, 0x80, 0x00, 0xF2, 0x05, 0x01, 0x12, 0x05, 0x01, 0x11, 0x80, 0x01, 0x32, 0x0C, 0x01, 0x11, 0x85, 0x01, 0x32, 0x01, 0x31, 0x12, 0x15, 0x33, 0x19, 0x09, 0xB3, 0x01, 0x32, 0x0B, 0x01, 0x11, 0x19, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x06, 0x01, 0x12, 0x01, 0x01, 0x11, 0x06, 0x01, 0x12, 0x80, 0x01, 0x11, 0x01, 0x01, 0x12, 0x0B, 0x01, 0x11, 0x8A, 0x01, 0x31, 0x22, 0xB7, 0x2A, 0xD8, 0x01, 0x52, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x32, 0x01, 0x11, 0x01, 0x31, 0x03, 0x01, 0x11, 0x84, 0x01, 0x32, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x12, 0x06, 0x01, 0x11, 0x81, 0x01, 0x12, 0x01, 0x11, 0x04, 0x01, 0x12, 0x80, 0x01, 0x11, 0x0B, 0x01, 0x12, 0x81, 0x01, 0x11, 0x01, 0x32, 0x03, 0x01, 0x12, 0x80, 0x01, 0x11, 0x04, 0x01, 0x12, 0x81, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x01, 0x11, 0x01, 0x01, 0x12, 0x80, 0x01, 0x32, 0x03, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x85, 0x00, 0xF1, 0x00, 0xD0, 0x22, 0x96, 0x09, 0xF3, 0x01, 0x11, 0x01, 0x31, 0x0A, 0x01, 0x11, 0x80, 0x01, 0x32, 0x03, 0x01, 0x11, 0x01, 0x01, 0x12, 0x81, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x01, 0x11, 0x81, 0x01, 0x12, 0x01, 0x11, 0x02, 0x01, 0x12, 0x80, 0x01, 0x11, 0x07, 0x01, 0x12, 0x01, 0x01, 0x11, 0x05, 0x01, 0x12, 0x83, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x07, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x0B, 0x01, 0x11, 0x01, 0x01, 0x31, 0x83, 0x12, 0x15, 0x43, 0x9B, 0x01, 0x52, 0x01, + 0x31, 0x01, 0x01, 0x11, 0x82, 0x01, 0x12, 0x01, 0x11, 0x01, 0x31, 0x0C, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x09, 0x01, 0x11, 0x80, 0x01, 0x32, 0x05, 0x01, 0x11, 0x82, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x01, 0x11, 0x0D, 0x01, 0x12, 0x82, 0x01, 0x32, 0x01, 0x11, 0x00, 0xF1, 0x06, 0x01, 0x11, 0x80, 0x01, 0x31, 0x01, 0x01, 0x11, 0x84, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x31, 0x32, 0xF8, 0x3B, 0x59, 0x01, 0x01, 0x31, 0x01, 0x01, 0x11, 0x80, 0x01, 0x12, 0x03, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x04, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x01, 0x01, 0x11, 0x03, 0x01, 0x12, 0x04, 0x01, 0x11, 0x90, 0x09, 0x11, 0x08, 0xF1, 0x10, 0xF1, 0x18, 0xF1, 0x20, 0xB0, 0x30, 0x4E, 0x8A, 0x97, 0x9A, 0x35, 0xA2, 0x15, 0xA1, 0xF4, 0xA9, 0xF4, 0xA9, 0xD3, 0xA9, 0xB3, 0xA9, 0xF4, 0xB1, 0xF4, 0xA9, 0xD3, 0xB1, 0xF4, 0x01, 0xA9, 0xD3, 0x07, 0xA9, 0xF3, 0x86, 0xA9, 0xF4, 0xA2, 0x34, 0x9A, 0x55, 0x9A, 0xF8, 0x38, 0xF0, 0x29, 0x31, 0x11, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x89, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x11, 0x02, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x12, 0x01, 0x00, + 0xF1, 0x81, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x01, 0x31, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x01, 0x31, 0x02, 0x01, 0x11, 0x80, 0x01, 0x31, 0x01, 0x01, 0x11, 0x01, 0x01, 0x31, 0x88, 0x01, 0x51, 0x12, 0x14, 0x3B, 0x7A, 0x1A, 0x76, 0x01, 0x52, 0x01, 0x31, 0x01, 0x32, 0x01, 0x31, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x82, 0x01, 0x32, 0x01, 0x11, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x06, 0x00, 0xF1, 0x80, 0x01, 0x12, 0x05, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x08, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x85, 0x01, 0x52, 0x09, 0xD4, 0x22, 0xB7, 0x2B, 0x18, 0x22, 0x96, 0x01, 0x72, 0x01, 0x01, 0x31, 0x80, 0x01, 0x11, 0x01, 0x01, 0x31, 0x01, 0x01, 0x11, 0x82, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x31, 0x0A, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x0B, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x85, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xD0, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xD0, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x88, 0x01, 0x31, 0x01, 0x11, 0x01, 0x31, 0x01, 0x72, 0x12, 0x14, 0x22, 0xB7, 0x33, + 0x38, 0x22, 0x96, 0x09, 0x93, 0x02, 0x01, 0x31, 0x02, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x08, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x0F, 0x00, 0xF1, 0x83, 0x01, 0x11, 0x11, 0xB3, 0x01, 0x51, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x83, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xF1, 0x81, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x03, 0x00, 0xD1, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x01, 0x01, 0x11, 0x88, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x51, 0x09, 0xD3, 0x22, 0x96, 0x2A, 0xB7, 0x22, 0x96, 0x1A, 0x55, 0x09, 0xB3, 0x02, 0x01, 0x11, 0x05, 0x00, 0xF0, 0x82, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x80, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x06, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x80, 0x01, 0x31, 0x03, 0x01, 0x11, 0x80, 0x01, 0x31, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF0, 0x89, 0x01, 0x11, 0x01, 0x31, 0x01, + 0x11, 0x01, 0x31, 0x01, 0x72, 0x12, 0x14, 0x2A, 0xF7, 0x2A, 0xD7, 0x1A, 0x35, 0x01, 0x72, 0x02, 0x01, 0x11, 0x84, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x06, 0x01, 0x11, 0x84, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x11, 0x08, 0x00, 0xF1, 0x82, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD1, 0x06, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x83, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x86, 0x01, 0x31, 0x09, 0xF4, 0x22, 0x96, 0x2A, 0xD7, 0x1A, 0x35, 0x01, 0x72, 0x01, 0x31, 0x09, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x01, 0x32, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x10, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x08, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x87, 0x01, 0x11, 0x01, 0x31, 0x01, 0x51, 0x1A, 0x55, 0x3B, 0x7A, 0x09, 0xD3, 0x01, 0x51, 0x01, 0x52, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x12, 0x01, 0x11, 0x01, 0x12, 0x05, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x83, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x06, 0x01, 0x12, 0x82, 0x00, 0xF1, + 0x01, 0x12, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x0F, 0x01, 0x11, 0x01, 0x01, 0x31, 0x83, 0x09, 0xB3, 0x3B, 0x7A, 0x11, 0xF4, 0x01, 0x31, 0x05, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x82, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xD1, 0x04, 0x00, 0xF1, 0x81, 0x01, 0x12, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x02, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x06, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x03, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x03, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x85, 0x01, 0x11, 0x01, 0x32, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x01, 0x32, 0x01, 0x01, 0x11, 0x80, 0x01, 0x32, 0x05, 0x01, 0x11, 0x82, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x83, 0x01, 0x31, 0x01, 0x51, 0x43, 0x9A, 0x09, 0xD3, 0x01, 0x01, 0x31, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x0E, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x80, 0x00, 0xF2, 0x01, 0x01, 0x12, 0x87, 0x01, 0x32, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x11, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x12, 0x03, 0x01, 0x11, 0x80, 0x01, 0x12, 0x01, 0x01, 0x11, 0x02, 0x01, 0x12, 0x80, 0x01, 0x11, 0x06, 0x01, 0x12, 0x80, 0x01, 0x32, 0x01, 0x01, 0x12, 0x01, 0x01, 0x11, 0x83, 0x01, 0x31, 0x01, 0x32, 0x01, 0x11, 0x01, 0x12, 0x03, 0x00, 0xF1, 0x84, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xF0, 0x2A, 0xD7, 0x09, 0xF4, 0x07, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x82, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x83, + 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x12, 0x04, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x01, 0x11, 0x80, 0x01, 0x31, 0x13, 0x01, 0x11, 0x81, 0x01, 0x31, 0x01, 0x11, 0x01, 0x01, 0x31, 0x81, 0x43, 0x9A, 0x01, 0x92, 0x0A, 0x01, 0x11, 0x83, 0x00, 0xF1, 0x01, 0x32, 0x01, 0x11, 0x01, 0x32, 0x01, 0x01, 0x11, 0x80, 0x01, 0x31, 0x03, 0x01, 0x11, 0x01, 0x01, 0x31, 0x02, 0x01, 0x11, 0x80, 0x01, 0x32, 0x07, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x86, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x0B, 0x01, 0x12, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x02, 0x01, 0x11, 0x8D, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x11, 0x01, 0x92, 0x43, 0x9A, 0x22, 0x96, 0x01, 0x51, 0x01, 0x31, 0x01, 0x11, 0x01, 0x32, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x82, 0x01, 0x32, 0x01, 0x12, 0x01, 0x32, 0x01, 0x01, 0x12, 0x02, 0x01, 0x11, 0x8C, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF1, 0x08, 0xF1, 0x10, 0xF1, 0x20, 0xD0, 0x28, 0x6F, 0x69, 0xD4, 0x92, 0x56, 0x99, 0xF4, 0xA2, 0x14, 0xA9, 0xF4, 0xA1, 0xD3, 0x01, 0xA9, 0xD3, 0x80, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x83, 0xB1, 0xF3, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x8C, 0xB1, 0xF3, 0xA9, 0xD3, + 0xB1, 0xF3, 0xA9, 0xF3, 0xAA, 0x14, 0xA2, 0x14, 0x9A, 0x55, 0x92, 0xD7, 0x41, 0x31, 0x42, 0x15, 0x19, 0x52, 0x09, 0x11, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x83, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x32, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x07, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x01, 0x12, 0x01, 0x01, 0x11, 0x82, 0x00, 0xF1, 0x00, 0xD1, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x01, 0x01, 0x31, 0x83, 0x01, 0x72, 0x32, 0xF8, 0x2A, 0xD7, 0x09, 0xD3, 0x02, 0x01, 0x51, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x01, 0x32, 0x01, 0x11, 0x07, 0x00, 0xF1, 0x08, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x05, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x84, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x03, 0x00, 0xF1, 0x83, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x87, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x31, 0x11, 0xF4, 0x2A, 0xB7, 0x2A, 0xF8, 0x12, 0x14, 0x01, 0x92, 0x01, 0x01, 0x51, 0x01, 0x01, 0x31, 0x04, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x01, + 0x00, 0xF1, 0x01, 0x01, 0x11, 0x09, 0x00, 0xF1, 0x08, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x06, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x01, 0x31, 0x89, 0x09, 0xB3, 0x2A, 0xB7, 0x33, 0x39, 0x22, 0x96, 0x09, 0xD3, 0x01, 0x51, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x08, 0x00, 0xF1, 0x86, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x03, 0x00, 0xD1, 0x03, 0x00, 0xF1, 0x06, 0x00, 0xD1, 0x80, 0x00, 0xD0, 0x04, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x06, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x89, 0x01, 0x31, 0x01, 0x51, 0x11, 0xF4, 0x32, 0xF7, 0x32, 0xF8, 0x22, 0xB6, 0x12, 0x14, 0x01, 0x72, 0x01, 0x31, 0x01, 0x11, 0x07, 0x00, 0xF0, 0x83, 0x01, 0x10, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x83, 0x01, 0x11, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xD1, 0x82, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, + 0x04, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x08, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x07, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x83, 0x01, 0x10, 0x01, 0x31, 0x01, 0x71, 0x11, 0xF4, 0x01, 0x2A, 0xD7, 0x82, 0x11, 0xF4, 0x01, 0x92, 0x01, 0x31, 0x02, 0x01, 0x11, 0x04, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x0E, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x82, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x8B, 0x00, 0xD1, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x72, 0x1A, 0x55, 0x2A, 0xF7, 0x22, 0x96, 0x01, 0x92, 0x01, 0x31, 0x01, 0x11, 0x01, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x80, 0x01, 0x31, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x06, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x80, 0x01, 0x31, 0x05, 0x01, 0x11, 0x80, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x83, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x06, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x85, 0x01, 0x51, 0x2A, 0xD7, 0x3B, 0x59, 0x01, 0xB2, 0x01, + 0x51, 0x01, 0x31, 0x01, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x83, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x01, 0x12, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x83, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x0B, 0x01, 0x11, 0x88, 0x01, 0x31, 0x01, 0x72, 0x3B, 0x59, 0x1A, 0x55, 0x01, 0x52, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x07, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x12, 0x04, 0x00, 0xF1, 0x81, 0x01, 0x12, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x12, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x12, 0x00, 0xF1, 0x07, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x08, 0x01, 0x11, 0x88, 0x01, 0x31, 0x01, 0x92, 0x43, 0x9A, 0x01, 0x11, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x12, + 0x10, 0x01, 0x11, 0x01, 0x01, 0x12, 0x01, 0x01, 0x11, 0x80, 0x01, 0x32, 0x01, 0x01, 0x11, 0x03, 0x01, 0x12, 0x04, 0x01, 0x11, 0x81, 0x01, 0x32, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x12, 0x04, 0x00, 0xF1, 0x82, 0x00, 0xD0, 0x2A, 0xB7, 0x09, 0xF4, 0x07, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x83, 0x00, 0xF1, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x01, 0x01, 0x31, 0x81, 0x1A, 0x75, 0x22, 0x96, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x06, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x80, 0x01, 0x31, 0x10, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x01, 0x12, 0x01, 0x00, 0xF1, 0x82, 0x01, 0x12, 0x00, 0xF2, 0x01, 0x12, 0x07, 0x00, 0xF1, 0x01, 0x01, 0x12, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x85, 0x01, 0x11, 0x01, 0x31, 0x09, 0xF3, 0x3B, 0x79, 0x12, 0x35, 0x01, 0x31, 0x03, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x07, 0x01, 0x11, 0x80, 0x01, 0x12, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x01, 0x12, 0x01, 0x00, + 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x03, 0x01, 0x12, 0x03, 0x01, 0x11, 0x8C, 0x09, 0x11, 0x08, 0xF1, 0x10, 0xF0, 0x18, 0xD0, 0x20, 0x8F, 0x38, 0x90, 0x9A, 0xB7, 0x9A, 0x15, 0xA2, 0x15, 0xAA, 0x35, 0xA1, 0xD3, 0xA9, 0xF4, 0xA9, 0xF3, 0x02, 0xA9, 0xD3, 0x92, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0xB1, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0xA9, 0xD3, 0xAA, 0x14, 0xA9, 0xF4, 0xA2, 0x14, 0x9A, 0x76, 0x92, 0xF8, 0x41, 0x52, 0x5A, 0xF8, 0x42, 0x97, 0x11, 0x92, 0x09, 0x52, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x83, 0x00, 0xF1, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x12, 0x04, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x0B, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x06, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x83, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x80, 0x01, 0x10, 0x01, 0x01, 0x31, 0x86, 0x11, 0xF4, 0x33, 0x39, 0x22, 0x76, 0x01, 0x92, 0x01, 0x72, 0x01, 0x52, 0x01, 0x31, 0x05, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x05, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x08, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x83, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD1, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x08, 0x00, 0xF1, 0x83, 0x00, 0xD1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x84, 0x00, + 0xD1, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x86, 0x01, 0x52, 0x09, 0xD3, 0x22, 0xD7, 0x2A, 0xD7, 0x12, 0x34, 0x01, 0x72, 0x01, 0x51, 0x01, 0x01, 0x31, 0x06, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x85, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x01, 0x31, 0x04, 0x01, 0x11, 0x0B, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x02, 0x01, 0x31, 0x81, 0x01, 0x71, 0x11, 0xF4, 0x01, 0x33, 0x18, 0x86, 0x1A, 0x14, 0x01, 0x31, 0x01, 0x11, 0x01, 0x31, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD1, 0x04, 0x00, 0xF1, 0x82, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x83, 0x01, 0x11, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x82, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x11, 0x03, 0x00, 0xF1, + 0x02, 0x00, 0xD1, 0x06, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x08, 0x00, 0xF0, 0x88, 0x01, 0x10, 0x01, 0x31, 0x01, 0x72, 0x12, 0x34, 0x2A, 0xF7, 0x33, 0x18, 0x22, 0x75, 0x11, 0xD3, 0x01, 0x31, 0x02, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x03, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x08, 0x00, 0xF1, 0x82, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD1, 0x09, 0x00, 0xF1, 0x02, 0x00, 0xD1, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x84, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF0, 0x88, 0x01, 0x10, 0x01, 0x51, 0x11, 0xF3, 0x2A, 0xB6, 0x2A, 0xD7, 0x1A, 0x34, 0x01, 0x72, 0x01, 0x31, 0x01, 0x10, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x83, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x81, 0x00, 0xD1, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x80, 0x11, 0xF4, 0x01, 0x2A, 0xF7, 0x82, 0x11, 0xF4, 0x01, 0x51, 0x01, 0x31, 0x01, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x01, + 0x11, 0x05, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x86, 0x01, 0x11, 0x01, 0x52, 0x33, 0x18, 0x2A, 0xD7, 0x01, 0x71, 0x01, 0x51, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x07, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x84, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x07, 0x00, 0xF1, 0x83, 0x00, 0xD1, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x85, 0x01, 0x51, 0x33, 0x18, 0x2A, 0xD7, 0x01, 0x52, 0x01, 0x31, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x12, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x06, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD1, 0x0D, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, + 0x01, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x80, 0x00, 0xF0, 0x01, 0x22, 0x96, 0x86, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD0, 0x01, 0x11, 0x01, 0x31, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x01, 0x31, 0x01, 0x01, 0x11, 0x83, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x06, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x87, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x83, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x12, 0x03, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x01, 0x32, 0x05, 0x00, 0xF1, 0x89, 0x00, 0xD0, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD0, 0x2A, 0xB7, 0x09, 0xB3, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x0E, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x84, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x06, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x31, 0x03, 0x01, 0x11, 0x83, 0x01, 0x51, 0x09, 0xD3, 0x53, 0xFC, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, + 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x09, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x01, 0x12, 0x01, 0x00, 0xD1, 0x07, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x83, 0x01, 0x30, 0x12, 0x34, 0x3B, 0x59, 0x09, 0xD4, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x06, 0x01, 0x11, 0x80, 0x01, 0x12, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x80, 0x01, 0x12, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x08, 0xF1, 0x85, 0x10, 0xF1, 0x18, 0x90, 0x20, 0x0E, 0x82, 0x35, 0xA2, 0x76, 0x99, 0xF4, 0x01, 0xA1, 0xF4, 0x01, 0xA9, 0xF3, 0x82, 0xB1, 0xF3, 0xA9, 0xB3, 0xA9, 0xD3, 0x04, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x8F, 0xB1, 0xF3, 0xA9, 0xF4, 0xA9, 0xF3, 0xA1, 0xF3, 0x99, 0xF4, 0x9A, 0x55, 0x92, 0xF8, 0x38, 0xF0, 0x29, 0x52, 0x42, 0x96, 0x32, 0x96, 0x11, 0xB3, 0x01, 0x51, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x13, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x80, 0x01, 0x31, 0x04, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x82, + 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x83, 0x00, 0xF0, 0x01, 0x11, 0x01, 0x31, 0x09, 0x92, 0x01, 0x33, 0x38, 0x83, 0x09, 0xF4, 0x01, 0x71, 0x01, 0x31, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x83, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x08, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x0B, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x10, 0x89, 0x01, 0x51, 0x1A, 0x34, 0x33, 0x18, 0x2A, 0xD7, 0x09, 0xF3, 0x01, 0x72, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x10, 0x03, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x0B, 0x00, 0xF1, 0x84, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF1, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x83, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x81, 0x01, 0x11, 0x01, 0x31, 0x01, 0x01, 0x10, 0x87, 0x01, 0x31, 0x1A, 0x14, 0x3B, 0x39, + 0x33, 0x18, 0x1A, 0x35, 0x01, 0x72, 0x01, 0x31, 0x01, 0x10, 0x05, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x83, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x81, 0x00, 0xF1, 0x00, 0xD1, 0x04, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD1, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x08, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x84, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x10, 0x06, 0x00, 0xF0, 0x87, 0x01, 0x10, 0x01, 0x72, 0x1A, 0x55, 0x2A, 0xF7, 0x2A, 0xD7, 0x12, 0x34, 0x01, 0x92, 0x01, 0x31, 0x02, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x02, 0x00, 0xD1, 0x81, 0x00, 0xF1, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x88, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD1, 0x02, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xF1, + 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x88, 0x01, 0x10, 0x01, 0x31, 0x11, 0xF3, 0x2A, 0xD7, 0x32, 0xF7, 0x1A, 0x55, 0x09, 0x92, 0x01, 0x31, 0x01, 0x11, 0x04, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF0, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x07, 0x00, 0xF1, 0x04, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x87, 0x01, 0x11, 0x01, 0x52, 0x22, 0x76, 0x3B, 0x39, 0x22, 0x96, 0x01, 0x92, 0x01, 0x31, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x0D, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x00, 0xF0, 0x0F, 0x00, 0xF1, 0x05, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x86, 0x01, 0x10, 0x01, 0x52, 0x3B, 0x39, 0x1A, 0x75, 0x01, 0x72, 0x01, 0x31, 0x01, 0x10, 0x03, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x81, 0x00, 0xD0, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, + 0x00, 0xF1, 0x01, 0x01, 0x11, 0x0B, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x08, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x85, 0x01, 0x31, 0x22, 0x96, 0x3B, 0x39, 0x01, 0x92, 0x01, 0x31, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x83, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x1C, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x03, 0x01, 0x11, 0x84, 0x00, 0xF0, 0x43, 0x9A, 0x09, 0xB3, 0x01, 0x31, 0x01, 0x11, 0x01, 0x00, 0xD0, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x0C, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x08, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x86, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x86, 0x00, 0xF1, 0x00, 0xD0, 0x2A, 0x97, 0x09, 0x93, 0x01, 0x11, 0x01, 0x12, 0x01, 0x11, 0x0F, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, + 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x83, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xF1, 0x00, 0xD1, 0x03, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x06, 0x01, 0x11, 0x83, 0x01, 0x51, 0x43, 0x7A, 0x11, 0xD4, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x07, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x09, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xD1, 0x09, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x02, 0x01, 0x10, 0x83, 0x01, 0x51, 0x1A, 0x76, 0x3B, 0x59, 0x01, 0x72, 0x04, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x08, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x89, 0x00, 0xF0, 0x08, 0xF0, 0x18, 0xD0, 0x18, 0x2E, 0x59, 0x32, 0x9A, 0xB7, 0x9A, 0x15, 0xA2, 0x15, 0xA1, 0xD4, 0xA9, 0xF4, 0x03, 0xA9, 0xD3, 0x80, 0xB1, 0xF3, 0x04, + 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x90, 0xA9, 0xF3, 0xA1, 0xD3, 0xAA, 0x14, 0xA2, 0x14, 0x9A, 0x55, 0x92, 0xF8, 0x18, 0x0D, 0x10, 0x8F, 0x11, 0x11, 0x22, 0x14, 0x32, 0xB7, 0x11, 0xF4, 0x01, 0x51, 0x01, 0x31, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x0B, 0x00, 0xF1, 0x82, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x04, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x83, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x88, 0x01, 0x11, 0x01, 0x31, 0x01, 0x51, 0x12, 0x14, 0x3B, 0x38, 0x22, 0x96, 0x09, 0xB3, 0x01, 0x51, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x06, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x82, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x82, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD1, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x8C, 0x01, 0x72, 0x12, 0x14, 0x33, 0x18, 0x2A, 0xD7, 0x11, 0xF4, 0x01, 0x51, 0x01, 0x30, 0x01, 0x31, 0x01, 0x10, 0x00, 0xF0, + 0x01, 0x10, 0x00, 0xF0, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x82, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x84, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x03, 0x01, 0x10, 0x85, 0x01, 0x51, 0x09, 0xB2, 0x22, 0x96, 0x33, 0x18, 0x2A, 0xB7, 0x09, 0x92, 0x03, 0x01, 0x10, 0x07, 0x00, 0xF0, 0x82, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x0A, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xF1, 0x81, 0x00, 0xD1, 0x00, 0xF1, 0x02, 0x00, 0xD1, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x81, 0x00, 0xF1, 0x00, 0xF0, 0x03, 0x00, 0xF1, 0x83, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x03, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x8B, 0x01, 0x30, 0x09, 0xB3, 0x22, 0x75, 0x33, 0x18, 0x2A, 0xD7, 0x09, 0xD3, 0x01, 0x51, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, + 0x01, 0x10, 0x02, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xD1, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x03, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x01, 0x11, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x83, 0x01, 0x10, 0x01, 0x51, 0x11, 0xF4, 0x22, 0x76, 0x01, 0x22, 0x96, 0x80, 0x09, 0xB2, 0x01, 0x01, 0x10, 0x80, 0x01, 0x11, 0x06, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x0A, 0x00, 0xF1, 0x82, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x82, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x06, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x05, 0x00, 0xF0, 0x87, 0x00, 0xF1, 0x01, 0x11, 0x09, 0xB3, 0x2A, 0xB7, 0x32, 0xF7, 0x12, 0x14, 0x01, 0x51, 0x01, 0x10, 0x08, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x83, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xD1, 0x0D, 0x00, 0xF1, 0x89, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x00, 0xF1, 0x00, + 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x0A, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x09, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x84, 0x09, 0xB3, 0x3B, 0x39, 0x12, 0x14, 0x01, 0x72, 0x01, 0x31, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x06, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x02, 0x01, 0x11, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x87, 0x11, 0xF4, 0x3B, 0x19, 0x09, 0x93, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x0A, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x83, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x06, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x32, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF0, 0x86, 0x01, 0x11, 0x01, 0x10, 0x11, 0xD3, 0x3B, 0x18, 0x01, 0x51, 0x01, 0x31, 0x01, 0x11, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, + 0xF1, 0x02, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x05, 0x00, 0xF1, 0x86, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x84, 0x2A, 0xD7, 0x11, 0xF4, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x10, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x0A, 0x00, 0xF1, 0x86, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x82, 0x11, 0xD3, 0x3B, 0x19, 0x01, 0x31, 0x03, 0x01, 0x11, 0x01, 0x00, 0xD0, 0x06, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x02, + 0x00, 0xF1, 0x80, 0x01, 0x11, 0x06, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x0B, 0x00, 0xF1, 0x83, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x86, 0x01, 0x31, 0x01, 0x51, 0x1A, 0x76, 0x2A, 0xF7, 0x01, 0x51, 0x01, 0x11, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x01, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x02, 0x01, 0x11, 0x88, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x82, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x31, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x8B, 0x08, 0xD0, 0x19, 0x11, 0x28, 0xD0, 0x38, 0x6E, 0x9A, 0xB7, 0x9A, 0x55, 0xA2, 0x35, 0x99, 0xD3, 0xA1, 0xD3, 0xB2, 0x14, 0xA9, 0xD3, 0xB2, 0x14, 0x01, 0xA9, 0xD3, 0x80, 0xB1, 0xF3, 0x01, 0xA9, 0xD3, 0x81, 0xA9, 0xF3, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x8D, 0xB1, 0xF4, 0xA9, 0xF4, 0xAA, 0x14, 0xAA, 0x55, 0x9A, 0x55, 0x92, 0xF7, 0x18, 0x0C, 0x08, 0x6E, 0x08, 0xF0, 0x01, 0x10, 0x11, 0xB2, 0x32, 0xF7, 0x1A, 0x14, 0x01, 0x31, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x31, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xD1, 0x00, 0xF1, 0x02, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x84, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x01, 0x00, + 0xF1, 0x80, 0x00, 0xD1, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x05, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x82, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x87, 0x01, 0x11, 0x01, 0x10, 0x01, 0x51, 0x32, 0xF7, 0x33, 0x18, 0x1A, 0x55, 0x01, 0x92, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x0D, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x03, 0x00, 0xF0, 0x82, 0x01, 0x11, 0x00, 0xF0, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x8D, 0x01, 0x51, 0x22, 0x55, 0x33, 0x18, 0x2A, 0xF7, 0x12, 0x14, 0x01, 0x71, 0x01, 0x31, 0x01, 0x11, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xD1, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x04, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x09, 0x00, 0xF0, + 0x80, 0x01, 0x10, 0x04, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x88, 0x01, 0x10, 0x01, 0x31, 0x09, 0xB2, 0x22, 0xB6, 0x33, 0x38, 0x22, 0x96, 0x09, 0xF3, 0x01, 0x71, 0x01, 0x30, 0x03, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x83, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x0B, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x81, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xD1, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x84, 0x01, 0x11, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x07, 0x00, 0xF0, 0x88, 0x01, 0x31, 0x11, 0xF4, 0x32, 0xF7, 0x33, 0x18, 0x1A, 0x55, 0x09, 0xB2, 0x01, 0x51, 0x01, 0x31, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x86, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x01, 0x00, + 0xF1, 0x85, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x82, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x88, 0x00, 0xF0, 0x01, 0x10, 0x1A, 0x14, 0x2A, 0xD7, 0x2A, 0xB7, 0x1A, 0x55, 0x09, 0xD3, 0x01, 0x31, 0x01, 0x10, 0x03, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x82, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x05, 0x00, 0xF1, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x03, 0x00, 0xF0, 0x03, 0x00, 0xF1, 0x85, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x87, 0x01, 0x10, 0x01, 0x51, 0x22, 0x55, 0x32, 0xF8, 0x22, 0x76, 0x01, 0x51, 0x01, 0x30, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x82, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD1, 0x05, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x06, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x07, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x06, 0x00, 0xF0, 0x85, 0x01, 0x10, 0x1A, 0x35, + 0x3B, 0x18, 0x11, 0xF4, 0x01, 0x72, 0x01, 0x31, 0x02, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x82, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x07, 0x00, 0xF1, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x02, 0x01, 0x11, 0x88, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x82, 0x00, 0xD0, 0x01, 0x11, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x87, 0x01, 0x11, 0x01, 0x52, 0x3B, 0x19, 0x11, 0xF4, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x06, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x89, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x04, 0x00, 0xF0, 0x02, 0x01, 0x10, 0x86, 0x43, 0x59, 0x1A, 0x14, 0x01, 0x51, 0x01, 0x11, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x01, 0x00, + 0xF0, 0x82, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF0, 0x08, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x84, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x84, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x84, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xB0, 0x2A, 0x96, 0x11, 0xD3, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x07, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x86, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x09, 0x00, 0xF1, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x85, 0x01, 0x10, 0x01, 0x31, 0x33, 0x18, 0x01, 0x92, 0x01, 0x31, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xF1, 0x82, 0x00, 0xD1, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x82, 0x00, 0xF1, 0x01, 0x11, + 0x00, 0xF0, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x87, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x03, 0x00, 0xF0, 0x8A, 0x01, 0x10, 0x01, 0x11, 0x01, 0x31, 0x01, 0x92, 0x22, 0xD7, 0x2A, 0xD7, 0x01, 0x31, 0x01, 0x11, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xD1, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x06, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x84, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x84, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x8A, 0x08, 0xD0, 0x10, 0xD0, 0x20, 0xD0, 0x28, 0x2E, 0x7A, 0x35, 0xA2, 0xB7, 0x99, 0xF4, 0xA1, 0xF4, 0xA1, 0xD4, 0xA9, 0xF4, 0xB1, 0xF4, 0x01, 0xA9, 0xD3, 0x82, 0xB1, 0xF3, 0xA9, 0xD3, 0xA9, 0xB2, 0x02, 0xA9, 0xD3, 0x80, 0xA9, 0xF3, 0x01, 0xB1, 0xF3, 0x8D, 0xB1, 0xF4, 0xAA, 0x14, 0xAA, 0x35, 0x9A, 0x55, 0x92, 0xB7, 0x18, 0x0C, 0x08, 0x6E, 0x08, 0xAF, 0x00, 0xF0, 0x01, 0x31, 0x09, 0x92, 0x3B, 0x18, 0x22, 0x55, 0x01, 0x31, 0x01, 0x01, 0x11, 0x87, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x06, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x80, 0x00, 0xF0, + 0x01, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x06, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x04, 0x00, 0xF1, 0x82, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x05, 0x00, 0xF0, 0x88, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x31, 0x09, 0xD3, 0x2A, 0xB7, 0x33, 0x18, 0x11, 0xD3, 0x01, 0x31, 0x02, 0x00, 0xF0, 0x84, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x85, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x05, 0x00, 0xF1, 0x83, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x07, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x86, 0x01, 0x72, 0x12, 0x14, 0x33, 0x17, 0x32, 0xF7, 0x11, 0xF3, 0x01, 0x51, 0x01, 0x31, 0x01, 0x01, 0x10, 0x83, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x06, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x04, 0x00, 0xF0, + 0x80, 0x00, 0xF1, 0x13, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x89, 0x01, 0x51, 0x01, 0x92, 0x12, 0x14, 0x22, 0xB6, 0x3B, 0x58, 0x1A, 0x54, 0x01, 0x51, 0x01, 0x30, 0x01, 0x31, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x85, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x09, 0x00, 0xD0, 0x0B, 0x00, 0xF0, 0x84, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x06, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x83, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x8B, 0x01, 0x10, 0x01, 0x51, 0x1A, 0x34, 0x33, 0x18, 0x2A, 0xD7, 0x1A, 0x14, 0x01, 0x31, 0x01, 0x30, 0x01, 0x51, 0x01, 0x31, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x08, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF1, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x80, 0x01, 0x11, 0x04, 0x00, 0xD0, 0x87, 0x00, 0xF0, 0x01, 0x10, 0x11, 0xB3, 0x2A, 0x96, + 0x22, 0x76, 0x1A, 0x55, 0x11, 0xD3, 0x01, 0x51, 0x04, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x87, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x31, 0x11, 0xF3, 0x2A, 0xD7, 0x22, 0xB6, 0x12, 0x14, 0x01, 0x31, 0x06, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x03, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x04, 0x00, 0xF1, 0x84, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD1, 0x04, 0x00, 0xF1, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x86, 0x01, 0x10, 0x01, 0x31, 0x22, 0x75, 0x32, 0xF8, 0x11, 0xD3, 0x01, 0x72, 0x01, 0x10, 0x03, 0x00, + 0xF0, 0x01, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x05, 0x00, 0xF1, 0x03, 0x00, 0xF0, 0x88, 0x01, 0x11, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x01, 0x01, 0x11, 0x82, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x07, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x88, 0x01, 0x11, 0x01, 0x31, 0x33, 0x18, 0x22, 0x35, 0x01, 0x32, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x83, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF0, 0x03, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xF1, 0x81, 0x00, 0xF0, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x0B, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x85, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x8E, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x11, 0x01, 0x10, 0x01, 0x72, 0x43, 0x79, 0x01, 0x72, 0x01, 0x31, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x88, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xF1, + 0x80, 0x00, 0xF0, 0x05, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x07, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x84, 0x01, 0x11, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x03, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x03, 0x00, 0xF0, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x07, 0x00, 0xF1, 0x84, 0x00, 0xD0, 0x01, 0x32, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD1, 0x03, 0x00, 0xD0, 0x81, 0x2A, 0xB7, 0x09, 0xD3, 0x02, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xD1, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x85, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x82, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x06, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x31, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x84, 0x01, 0x10, 0x22, 0x75, 0x22, 0x76, 0x00, 0xF0, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x07, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x0B, 0x00, 0xF1, + 0x02, 0x00, 0xF0, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x0A, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x01, 0x11, 0x03, 0x00, 0xF0, 0x85, 0x01, 0x10, 0x01, 0x51, 0x09, 0xD3, 0x33, 0x39, 0x1A, 0x35, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD0, 0x03, 0x00, 0xF1, 0x82, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD1, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x03, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x8A, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x08, 0xD0, 0x10, 0x8F, 0x20, 0x4E, 0x51, 0x11, 0xA2, 0xD8, 0x9A, 0x35, 0xA2, 0x35, 0x01, 0xA9, 0xF4, 0x84, 0xA9, 0xD3, 0xB1, 0xF3, 0xB1, 0xD3, 0xA9, 0xD3, 0xB1, 0xD3, 0x01, 0xA9, 0xD3, 0x81, 0xB1, 0xF4, 0xA9, 0xD3, 0x01, 0xA9, 0xF3, 0x01, 0xB1, 0xF4, 0x8F, 0xA9, 0xF4, 0xA2, 0x14, 0x9A, 0x55, 0x92, 0xB7, 0x18, 0x0C, 0x10, 0x6E, 0x08, 0xAF, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x11, 0x01, 0x51, 0x3B, 0x18, 0x2A, 0xB7, 0x01, 0x31, 0x01, 0x10, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x05, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x81, 0x00, 0xD1, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x02, + 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x89, 0x01, 0x10, 0x01, 0x31, 0x01, 0x51, 0x1A, 0x55, 0x33, 0x18, 0x22, 0x96, 0x09, 0x92, 0x01, 0x10, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x83, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x03, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x03, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x04, 0x00, 0xF1, 0x81, 0x00, 0xF0, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xF0, 0x01, 0x11, 0x03, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x85, 0x01, 0x51, 0x1A, 0x14, 0x32, 0xF8, 0x2A, 0xB7, 0x09, 0xD3, 0x01, 0x51, 0x02, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xB0, 0x04, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x82, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x05, 0x00, 0xF0, 0x85, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x06, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x8A, 0x01, 0x10, 0x01, 0x30, 0x01, + 0x51, 0x01, 0x71, 0x09, 0xB2, 0x22, 0x96, 0x3B, 0x38, 0x22, 0x96, 0x01, 0x92, 0x01, 0x30, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x09, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xD1, 0x07, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x07, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x85, 0x09, 0x71, 0x2A, 0xB6, 0x3B, 0x38, 0x2A, 0xD7, 0x11, 0xF3, 0x01, 0x51, 0x02, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xB0, 0x03, 0x00, 0xD0, 0x81, 0x00, 0xB0, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x0A, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x86, 0x00, 0xF0, 0x09, 0x92, 0x2A, 0xB7, 0x2A, 0x97, 0x1A, 0x35, 0x09, 0xB3, 0x01, 0x31, 0x01, 0x01, 0x10, 0x03, 0x00, 0xF0, 0x0B, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x8A, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x00, + 0xD1, 0x00, 0xD0, 0x00, 0xD1, 0x00, 0xD0, 0x00, 0xD1, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x04, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x86, 0x01, 0x10, 0x01, 0x71, 0x22, 0x96, 0x33, 0x18, 0x1A, 0x55, 0x01, 0x92, 0x01, 0x30, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xD1, 0x02, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xD0, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x83, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD1, 0x00, 0xF1, 0x02, 0x00, 0xD1, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x80, 0x00, 0xD0, 0x04, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x08, 0x00, 0xF0, 0x85, 0x01, 0x31, 0x2A, 0x96, 0x32, 0xF8, 0x09, 0xB3, 0x01, 0x72, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x06, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x0F, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x14, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x83, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x10, + 0x83, 0x2A, 0xB7, 0x32, 0xF8, 0x01, 0x52, 0x01, 0x11, 0x08, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x0C, 0x00, 0xF0, 0x82, 0x01, 0x10, 0x00, 0xF0, 0x00, 0xF1, 0x03, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x85, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x0F, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x03, 0x01, 0x10, 0x87, 0x00, 0xF0, 0x22, 0x75, 0x2A, 0xB6, 0x01, 0x10, 0x01, 0x31, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x05, 0x00, 0xF0, 0x85, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x03, 0x00, 0xF1, 0x03, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x0C, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x07, 0x00, 0xF1, 0x81, 0x01, 0x31, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x22, 0x76, 0x11, 0xD3, 0x01, 0x01, 0x11, 0x06, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x07, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x11, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x82, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x84, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x05, 0x00, + 0xF0, 0x86, 0x01, 0x72, 0x32, 0xF8, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x03, 0x00, 0xF1, 0x81, 0x00, 0xF0, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x81, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x03, 0x00, 0xF0, 0x03, 0x00, 0xF1, 0x0A, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x80, 0x01, 0x11, 0x03, 0x00, 0xD0, 0x8C, 0x00, 0xF0, 0x01, 0x11, 0x01, 0x51, 0x09, 0xF4, 0x3B, 0x39, 0x09, 0x93, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD1, 0x00, 0xD0, 0x00, 0xD1, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x02, 0x00, 0xD1, 0x84, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x04, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x81, 0x00, 0xF1, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x05, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x8B, 0x00, 0xD0, 0x08, 0xB0, 0x10, 0x8F, 0x20, 0x6F, 0x30, 0x4E, 0x92, 0x96, 0x9A, 0x55, 0xA2, 0x35, 0xA1, 0xF4, 0xA9, 0xD4, 0xA9, 0xD3, 0xB1, 0xF3, 0x02, 0xB1, 0xD3, 0x84, 0xA9, 0xD3, 0xB1, 0xD3, 0xB1, 0xF4, 0xA9, 0xD3, 0xA9, 0xF3, 0x02, 0xA9, 0xD3, 0x87, 0xA9, 0xF4, 0xA2, 0x34, 0x9A, 0x75, 0x8A, 0x96, 0x18, 0x0D, 0x10, 0x6E, 0x08, 0xAF, 0x00, 0xAF, 0x01, 0x00, 0xF0, 0x84, 0x01, 0x10, 0x01, 0x51, 0x22, 0x76, + 0x2A, 0xB7, 0x01, 0x31, 0x01, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x83, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x03, 0x00, 0xF1, 0x83, 0x00, 0xD1, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x83, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xD1, 0x03, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x06, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x88, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x31, 0x09, 0x92, 0x22, 0x95, 0x32, 0xF7, 0x1A, 0x34, 0x01, 0x10, 0x05, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x84, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x81, 0x00, 0xF1, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x09, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x84, 0x01, 0x51, 0x11, 0xF3, 0x33, 0x18, 0x2A, 0xD7, 0x11, 0xB3, 0x02, 0x01, 0x10, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x81, 0x00, 0xF0, + 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x08, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x03, 0x01, 0x10, 0x81, 0x01, 0x91, 0x1A, 0x34, 0x01, 0x32, 0xF7, 0x81, 0x11, 0xF3, 0x01, 0x31, 0x02, 0x00, 0xF0, 0x08, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x04, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xB0, 0x00, 0xD0, 0x00, 0xAF, 0x06, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x04, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xB0, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xF0, 0x86, 0x01, 0x30, 0x11, 0xD3, 0x2A, 0x96, 0x3B, 0x18, 0x2A, 0x96, 0x09, 0xB2, 0x01, 0x30, 0x01, 0x01, 0x10, 0x80, 0x00, 0xF0, 0x07, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x07, 0x00, 0xD0, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xB0, 0x81, 0x00, 0xD0, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xD0, + 0x80, 0x00, 0xB0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x85, 0x09, 0x92, 0x2A, 0xB6, 0x32, 0xF8, 0x2A, 0x96, 0x11, 0xD3, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x81, 0x01, 0x10, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x83, 0x00, 0xB0, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x81, 0x00, 0xF1, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x86, 0x01, 0x10, 0x01, 0x51, 0x09, 0xF3, 0x2A, 0xD6, 0x22, 0x96, 0x11, 0xF3, 0x01, 0x30, 0x03, 0x01, 0x10, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x02, 0x00, 0xD1, 0x82, 0x00, 0xD0, 0x00, 0xD1, 0x00, 0xD0, 0x01, 0x00, 0xD1, 0x02, 0x00, 0xD0, + 0x02, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x80, 0x01, 0x10, 0x03, 0x00, 0xD0, 0x86, 0x00, 0xF0, 0x01, 0x31, 0x2A, 0xB7, 0x22, 0x96, 0x09, 0x92, 0x09, 0x72, 0x01, 0x10, 0x03, 0x00, 0xF0, 0x81, 0x01, 0x10, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF1, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xF1, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x0A, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xB0, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x85, 0x22, 0x55, 0x3B, 0x59, 0x01, 0x92, 0x01, 0x31, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x84, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x86, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x83, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x11, 0x01, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x01, 0x10, 0x09, 0x51, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, + 0x01, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x83, 0x01, 0x10, 0x3B, 0x39, 0x09, 0x92, 0x01, 0x31, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x81, 0x01, 0x11, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x0A, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x82, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xAF, 0x22, 0x55, 0x09, 0xB2, 0x01, 0x01, 0x11, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x03, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x05, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x0A, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x0C, 0x00, 0xF0, 0x82, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x01, 0x30, 0x43, 0x59, 0x11, 0xD3, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xF1, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xB0, 0x00, 0xD0, 0x01, + 0x01, 0x11, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF1, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x05, 0x00, 0xF0, 0x8D, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x83, 0x01, 0x51, 0x1A, 0x55, 0x3B, 0x18, 0x01, 0x31, 0x06, 0x00, 0xD0, 0x04, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x84, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xD0, 0x03, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF1, 0x93, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x11, 0x09, 0x11, 0x08, 0xF0, 0x10, 0xF0, 0x10, 0xB0, 0x18, 0x8F, 0x20, 0x2D, 0x71, 0xB3, 0xA2, 0xB7, 0x9A, 0x35, 0xA2, 0x14, 0xA1, 0xD3, 0xA9, 0xD4, 0xA9, 0xB3, 0xB1, 0xD3, 0xA9, 0xB3, 0xB1, 0xD3, 0x02, 0xA9, 0xD3, 0x8A, 0xB1, 0xF4, 0xA9, 0xB3, 0xB1, 0xF3, 0xB1, 0xF4, 0xA9, 0xF3, 0xA9, 0xF4, 0xAA, 0x55, 0x9A, 0x55, 0x92, 0xB7, 0x18, 0x0C, 0x10, 0x6E, 0x01, 0x08, 0xD0, 0x88, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x10, 0x01, 0x30, 0x2A, 0x76, 0x3B, 0x39, 0x09, 0x92, 0x01, 0x10, 0x03, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x03, 0x00, 0xD0, + 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x03, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x00, 0xD1, 0x82, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x08, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x83, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x82, 0x01, 0x10, 0x01, 0x71, 0x1A, 0x14, 0x01, 0x2A, 0xB6, 0x81, 0x01, 0x72, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x81, 0x00, 0xD1, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x84, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF1, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x04, 0x00, 0xCF, 0x02, 0x00, 0xF0, 0x87, 0x01, 0x10, 0x01, 0x30, 0x22, 0x55, 0x3B, 0x38, 0x2A, 0xB6, 0x09, 0xB2, 0x01, 0x31, 0x01, 0x10, 0x03, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x0E, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, + 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x08, 0x00, 0xD0, 0x86, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x01, 0x00, 0xEF, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xEF, 0x86, 0x01, 0x51, 0x22, 0x34, 0x3B, 0x18, 0x32, 0xF7, 0x1A, 0x34, 0x01, 0x71, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x0A, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xB0, 0x08, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x08, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xB0, 0x82, 0x00, 0xD0, 0x00, 0xB0, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x88, 0x00, 0xEF, 0x00, 0xF0, 0x09, 0x51, 0x1A, 0x14, 0x3A, 0xF7, 0x3B, 0x18, 0x2A, 0x75, 0x09, 0xB2, 0x01, 0x31, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x0B, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x05, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x82, 0x00, 0xB0, 0x00, 0xD0, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x80, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x86, 0x00, 0xF0, 0x09, + 0x71, 0x2A, 0x96, 0x3B, 0x38, 0x2A, 0xB6, 0x11, 0xF3, 0x01, 0x51, 0x02, 0x00, 0xF0, 0x82, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x1C, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x08, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x84, 0x01, 0x71, 0x22, 0x96, 0x2A, 0xD7, 0x1A, 0x75, 0x01, 0x71, 0x02, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x07, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF1, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x05, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x0C, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xD1, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x88, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x31, 0x32, 0xD7, 0x22, 0x96, 0x09, 0x92, 0x01, 0x51, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x03, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x08, 0x00, 0xF0, 0x82, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x08, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x0E, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, + 0x01, 0x00, 0xD0, 0x01, 0x01, 0x10, 0x85, 0x09, 0x92, 0x43, 0x79, 0x11, 0xF3, 0x01, 0x51, 0x01, 0x11, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x0D, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x11, 0x03, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x84, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x09, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x80, 0x00, 0xD0, 0x06, 0x00, 0xF0, 0x85, 0x00, 0xD0, 0x00, 0xF0, 0x19, 0xF4, 0x3B, 0x39, 0x01, 0x31, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x11, 0x05, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x0A, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x84, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xAF, 0x1A, 0x34, 0x09, 0xB2, 0x01, 0x10, 0x01, 0x01, 0x11, 0x80, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, + 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x09, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x0E, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x83, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x82, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x82, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x11, 0x03, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x84, 0x00, 0xF0, 0x01, 0x10, 0x22, 0x55, 0x3B, 0x39, 0x01, 0x10, 0x04, 0x00, 0xF0, 0x85, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x01, 0x11, 0x07, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x0E, 0x00, 0xF0, 0x86, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x86, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x84, 0x01, 0x11, 0x01, 0x51, 0x2A, 0x96, 0x2A, 0xB7, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x82, 0x00, 0xD1, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x83, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x84, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x00, + 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x8B, 0x08, 0xF1, 0x08, 0xD0, 0x10, 0xD0, 0x18, 0x8F, 0x20, 0x4E, 0x40, 0xAF, 0x9A, 0xD7, 0x9A, 0x55, 0xA2, 0x15, 0xA9, 0xF4, 0xA9, 0xD3, 0xB1, 0xF4, 0x02, 0xB1, 0xD3, 0x81, 0xA9, 0xD3, 0xB1, 0xD3, 0x04, 0xA9, 0xD3, 0x93, 0xB2, 0x14, 0xAA, 0x14, 0xA2, 0x34, 0x9A, 0x55, 0x8A, 0x96, 0x18, 0x0C, 0x10, 0x6E, 0x08, 0xAF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x10, 0x01, 0x30, 0x1A, 0x14, 0x43, 0x59, 0x11, 0xD3, 0x01, 0x10, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x08, 0x00, 0xD0, 0x81, 0x00, 0xB0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x07, 0x00, 0xD0, 0x84, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x0A, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x86, 0x01, 0x10, 0x01, 0x30, 0x01, 0x92, 0x1A, 0x55, 0x32, 0xF8, 0x1A, 0x14, 0x01, 0x31, 0x01, 0x00, 0xF0, 0x08, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x07, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x82, 0x01, 0x10, 0x00, 0xF0, + 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x87, 0x01, 0x10, 0x01, 0x71, 0x1A, 0x14, 0x43, 0x79, 0x32, 0xD7, 0x09, 0x72, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x0D, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x85, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xEF, 0x01, 0x10, 0x07, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x87, 0x01, 0x10, 0x01, 0x50, 0x09, 0xB2, 0x2A, 0xB6, 0x3B, 0x38, 0x32, 0xD7, 0x09, 0x92, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xD1, 0x06, 0x00, 0xD0, 0x01, 0x00, 0xB0, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xB0, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x07, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x83, 0x00, 0xEF, 0x01, 0x30, 0x09, 0x71, 0x1A, 0x14, 0x01, 0x2A, 0x75, 0x82, 0x22, 0x34, 0x09, 0x92, 0x01, 0x10, 0x01, 0x00, 0xEF, 0x06, 0x00, 0xCF, 0x85, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xB0, 0x00, 0xD0, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xF0, 0x05, 0x00, 0xD0, + 0x80, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x83, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xB0, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x85, 0x01, 0x51, 0x22, 0x55, 0x3B, 0x18, 0x2A, 0x96, 0x11, 0xB2, 0x01, 0x51, 0x01, 0x01, 0x10, 0x81, 0x00, 0xF0, 0x00, 0xCF, 0x03, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x80, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x8C, 0x00, 0xCF, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x30, 0x09, 0xB2, 0x2A, 0xD7, 0x22, 0x75, 0x12, 0x34, 0x01, 0x51, 0x01, 0x10, 0x00, 0xF0, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x85, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xF1, 0x03, 0x00, 0xF0, 0x86, 0x00, 0xD0, 0x00, 0xF0, 0x00, + 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x11, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xD1, 0x01, 0x00, 0xF1, 0x84, 0x00, 0xD1, 0x00, 0xD0, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x04, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x09, 0x52, 0x01, 0x2A, 0xB7, 0x82, 0x09, 0x92, 0x09, 0x52, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x13, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x07, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x08, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF1, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x89, 0x01, 0x10, 0x01, 0x31, 0x3B, 0x39, 0x1A, 0x34, 0x01, 0x31, 0x01, 0x10, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x07, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, + 0xF0, 0x02, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x85, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x10, 0x3B, 0x18, 0x19, 0xF4, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x01, 0x31, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x81, 0x01, 0x11, 0x01, 0x10, 0x0B, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x05, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x11, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x84, 0x00, 0xCF, 0x1A, 0x34, 0x11, 0xF3, 0x01, 0x10, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF1, 0x18, 0x00, 0xF0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xF1, 0x04, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x03, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x85, 0x01, 0x10, 0x01, 0x31, 0x43, 0x7A, 0x01, 0x72, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x09, 0x11, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF1, + 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF1, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x80, 0x01, 0x11, 0x05, 0x00, 0xF0, 0x85, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x82, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x89, 0x01, 0x10, 0x09, 0x92, 0x32, 0xF8, 0x22, 0x55, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xB0, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF1, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x82, 0x00, 0xD1, 0x00, 0xF1, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x8A, 0x08, 0xD0, 0x08, 0xB0, 0x10, 0x8F, 0x20, 0x6F, 0x28, 0x0D, 0x82, 0x35, 0x9A, 0x55, 0x9A, 0x14, 0xAA, 0x15, 0xA9, 0xF4, 0xB1, 0xF4, 0x01, 0xB1, 0xD3, 0x80, 0xB1, 0xD4, 0x01, 0xA9, 0xB3, 0x81, 0xA9, 0xD3, 0xB1, 0xF4, 0x02, 0xA9, 0xD3, 0x88, 0xA9, 0xF3, 0xAA, 0x14, 0xAA, 0x55, 0xA2, 0x75, 0x92, 0xB6, 0x18, 0x0C, 0x10, 0x6E, 0x08, 0x8F, 0x00, 0xAF, 0x01, 0x00, 0xD0, 0x87, 0x00, 0xAF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x01, 0x10, 0x11, 0xD3, 0x3B, 0x18, 0x1A, 0x14, 0x01, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x07, + 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF1, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x08, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x8A, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x51, 0x11, 0xF3, 0x32, 0xF7, 0x22, 0x96, 0x01, 0x72, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x83, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x01, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x83, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x85, 0x01, 0x51, 0x22, 0x96, 0x43, 0x9A, 0x2A, 0xB6, 0x09, 0xB2, 0x01, 0x30, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x09, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, + 0xD0, 0x01, 0x00, 0xF0, 0x85, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xD0, 0x82, 0x01, 0x10, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x02, 0x00, 0xF0, 0x82, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x01, 0x01, 0x30, 0x87, 0x09, 0x92, 0x2A, 0x96, 0x3B, 0x58, 0x33, 0x18, 0x11, 0xF3, 0x01, 0x51, 0x01, 0x10, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x01, 0x00, 0xAF, 0x0D, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xAF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x08, 0x00, 0xD0, 0x82, 0x00, 0xAF, 0x00, 0xD0, 0x00, 0xAF, 0x01, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x8A, 0x00, 0xCF, 0x00, 0xEF, 0x09, 0x71, 0x11, 0xD3, 0x1A, 0x14, 0x2A, 0x96, 0x22, 0x75, 0x1A, 0x14, 0x09, 0x71, 0x00, 0xF0, 0x00, 0xEF, 0x07, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xCF, 0x83, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x82, 0x00, 0xAF, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x07, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xAF, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x81, + 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x86, 0x00, 0xEF, 0x01, 0x51, 0x1A, 0x14, 0x3B, 0x18, 0x32, 0xD7, 0x11, 0xD3, 0x01, 0x10, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x03, 0x00, 0xAF, 0x01, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x09, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x87, 0x00, 0xF0, 0x09, 0x92, 0x1A, 0x55, 0x32, 0xF7, 0x1A, 0x34, 0x01, 0x91, 0x01, 0x10, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xCF, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x84, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x10, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x85, 0x09, 0x92, 0x32, 0xF7, 0x22, 0x55, 0x01, 0x51, 0x01, 0x31, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x01, 0x00, + 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x01, 0x10, 0x09, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x09, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x85, 0x01, 0x30, 0x2A, 0xB7, 0x2A, 0x96, 0x01, 0x51, 0x01, 0x10, 0x01, 0x11, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x06, 0x00, 0xF0, 0x82, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x07, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x01, 0x11, 0x02, 0x00, 0xF0, 0x81, 0x00, 0xF1, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x08, 0x00, 0xD0, 0x87, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x51, 0x3B, 0x18, 0x01, 0x31, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xCF, 0x03, 0x00, 0xF0, 0x07, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x84, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, + 0xD0, 0x04, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x81, 0x00, 0xF1, 0x00, 0xD0, 0x03, 0x00, 0xF1, 0x02, 0x00, 0xF0, 0x83, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x11, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF1, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x84, 0x00, 0xD0, 0x00, 0xCF, 0x22, 0x54, 0x11, 0xF3, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x06, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF0, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x0B, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xF1, 0x00, 0xD0, 0x00, 0xF1, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x84, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x84, 0x01, 0x10, 0x00, 0xF0, 0x22, 0x96, 0x1A, 0x34, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x82, 0x01, 0x11, 0x00, 0xF1, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x84, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, + 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x07, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x83, 0x01, 0x10, 0x11, 0xB3, 0x32, 0xF8, 0x11, 0xD3, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x04, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x8A, 0x08, 0xD0, 0x08, 0xB0, 0x18, 0xD0, 0x18, 0x6E, 0x20, 0x0D, 0x61, 0x93, 0x9A, 0x96, 0xA2, 0x55, 0xA1, 0xF4, 0xAA, 0x14, 0xA9, 0xD3, 0x01, 0xB1, 0xD3, 0x01, 0xA9, 0xB3, 0x92, 0xB1, 0xF4, 0xA9, 0xD3, 0xA9, 0xD4, 0xA9, 0xD3, 0xB1, 0xF3, 0xA9, 0xD3, 0xA9, 0xF4, 0xAA, 0x14, 0xA2, 0x35, 0x9A, 0x55, 0x82, 0x76, 0x18, 0x0C, 0x10, 0x6E, 0x08, 0x8F, 0x00, 0xAF, 0x08, 0xF0, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x01, 0x01, 0x10, 0x84, 0x01, 0x92, 0x2A, 0xD7, 0x22, 0x55, 0x01, 0x31, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x84, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x10, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x07, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x03, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, + 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xCF, 0x01, 0x10, 0x01, 0x01, 0x30, 0x84, 0x01, 0x71, 0x12, 0x34, 0x2A, 0xB6, 0x1A, 0x34, 0x01, 0x30, 0x01, 0x00, 0xF0, 0x19, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x0B, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x04, 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xD0, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x84, 0x01, 0x71, 0x1A, 0x14, 0x3B, 0x59, 0x2A, 0xD7, 0x01, 0x51, 0x03, 0x00, 0xF0, 0x82, 0x00, 0xAF, 0x00, 0xD0, 0x00, 0xCF, 0x06, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x81, 0x00, 0xD0, 0x00, 0xCF, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xCF, 0x82, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x82, 0x00, 0xAF, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x00, 0xCF, 0x86, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x02, 0x01, 0x10, 0x85, 0x01, 0x50, 0x11, 0xF3, 0x2A, 0xD6, 0x43, 0x79, 0x1A, 0x34, 0x01, 0x30, 0x01, 0x01, 0x10, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x82, 0x00, 0xD0, 0x00, + 0xCF, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xAF, 0x03, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xAF, 0x00, 0xB0, 0x02, 0x00, 0xAF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xAF, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x83, 0x00, 0xAF, 0x00, 0xD0, 0x00, 0xAF, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x03, 0x00, 0xAF, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xAF, 0x02, 0x00, 0xCF, 0x83, 0x00, 0xF0, 0x01, 0x51, 0x11, 0xD3, 0x1A, 0x14, 0x01, 0x22, 0x75, 0x82, 0x22, 0x54, 0x09, 0x91, 0x01, 0x10, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x15, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x06, 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x83, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xAF, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x83, 0x00, 0xB0, 0x00, 0xD0, 0x00, 0xAF, 0x00, 0xB0, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x8A, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x30, 0x09, 0xB2, 0x22, 0x55, 0x32, 0xF7, 0x1A, 0x14, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, + 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x82, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x89, 0x01, 0x10, 0x00, 0xEF, 0x01, 0x30, 0x09, 0xD3, 0x22, 0x75, 0x2A, 0xB6, 0x11, 0xD3, 0x01, 0x30, 0x00, 0xEF, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x05, 0x00, 0xCF, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x0D, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x07, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x87, 0x00, 0xD0, 0x00, 0xF0, 0x11, 0xB3, 0x32, 0xD7, 0x11, 0xF3, 0x01, 0x30, 0x00, 0xF0, 0x00, 0xEF, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xAF, 0x00, 0xB0, 0x05, 0x00, 0xF0, 0x07, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x03, 0x00, 0xF0, + 0x09, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x88, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x10, 0x11, 0xF3, 0x2A, 0xB6, 0x01, 0x71, 0x01, 0x10, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x01, 0x11, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x01, 0x11, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x85, 0x1A, 0x35, 0x22, 0x55, 0x01, 0x11, 0x01, 0x10, 0x00, 0xF0, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xAF, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x0D, 0x00, 0xD0, 0x01, 0x00, 0xF1, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x03, 0x00, 0xCF, 0x01, 0x1A, 0x34, 0x02, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x05, 0x00, 0xF0, 0x83, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, + 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xAF, 0x01, 0x00, 0xF0, 0x08, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xAF, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x84, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x10, 0x09, 0xB2, 0x33, 0x18, 0x07, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xF1, 0x04, 0x00, 0xD0, 0x82, 0x00, 0xD1, 0x00, 0xD0, 0x00, 0xB0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x84, 0x01, 0x10, 0x11, 0xF4, 0x32, 0xF8, 0x01, 0x72, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xB0, 0x00, 0xD0, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x8B, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xB0, 0x08, 0xD0, 0x10, 0xD0, 0x10, 0x8F, 0x18, 0x2D, 0x40, 0xB0, + 0x92, 0x97, 0x9A, 0x55, 0x99, 0xF4, 0xA1, 0xD3, 0x01, 0xA9, 0xF3, 0x01, 0xA9, 0xB3, 0x83, 0xB1, 0xD3, 0xA9, 0xD3, 0xA9, 0xD4, 0xB1, 0xF4, 0x01, 0xA9, 0xD3, 0x01, 0xB1, 0xF4, 0x86, 0xAA, 0x14, 0xA2, 0x35, 0x9A, 0x76, 0x82, 0x35, 0x18, 0x0C, 0x10, 0x6E, 0x08, 0xAF, 0x01, 0x00, 0xCF, 0x03, 0x00, 0xF0, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xF0, 0x85, 0x01, 0x10, 0x01, 0x51, 0x2A, 0xD7, 0x22, 0x96, 0x01, 0x72, 0x01, 0x31, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x82, 0x01, 0x10, 0x00, 0xF0, 0x00, 0xAF, 0x0E, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x84, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x01, 0x01, 0x30, 0x85, 0x09, 0xB2, 0x2A, 0xD6, 0x22, 0xB6, 0x01, 0x71, 0x01, 0x10, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x8A, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xF0, 0x07, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x06, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, + 0xF0, 0x06, 0x00, 0xCF, 0x81, 0x00, 0xF0, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x82, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xF0, 0x02, 0x01, 0x10, 0x85, 0x01, 0x30, 0x1A, 0x34, 0x3B, 0x38, 0x1A, 0x55, 0x01, 0x51, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x04, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x84, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x89, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x10, 0x09, 0x92, 0x32, 0xD7, 0x33, 0x18, 0x1A, 0x34, 0x01, 0x71, 0x01, 0x30, 0x03, 0x00, 0xF0, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x83, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x04, 0x00, 0xD0, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x05, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x0B, 0x00, 0xAF, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x89, 0x01, 0x10, 0x11, 0xB2, 0x2A, 0x75, 0x2A, 0x96, 0x22, 0x75, 0x1A, 0x34, 0x09, 0xB2, 0x01, 0x71, 0x01, 0x0F, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x06, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xCF, + 0x80, 0x00, 0xEF, 0x08, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xD0, 0x06, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xAF, 0x06, 0x00, 0xCF, 0x81, 0x00, 0xAF, 0x00, 0xD0, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xF0, 0x86, 0x01, 0x10, 0x19, 0xF3, 0x22, 0x75, 0x2A, 0xB6, 0x1A, 0x34, 0x01, 0x71, 0x01, 0x10, 0x01, 0x00, 0xEF, 0x03, 0x00, 0xCF, 0x81, 0x00, 0xEF, 0x01, 0x10, 0x04, 0x00, 0xF0, 0x06, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xAF, 0x01, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x83, 0x00, 0xEF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xEF, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x04, 0x00, 0xCF, 0x06, 0x00, 0xD0, 0x83, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x89, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x30, 0x01, 0x71, 0x22, 0x55, 0x2A, 0xD6, 0x1A, 0x34, 0x01, 0x71, 0x01, 0x10, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x05, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x06, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xAF, 0x0D, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x04, + 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x84, 0x19, 0xF4, 0x2A, 0xB6, 0x09, 0xB2, 0x01, 0x50, 0x01, 0x10, 0x01, 0x00, 0xEF, 0x81, 0x00, 0xCF, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x85, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xAF, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x84, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x10, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x0A, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x89, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x10, 0x09, 0x92, 0x32, 0xD7, 0x09, 0xB2, 0x01, 0x30, 0x01, 0x10, 0x00, 0xD0, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x25, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xF0, 0x0C, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x81, 0x32, 0xD7, 0x11, 0xF3, 0x01, 0x01, 0x10, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x04, 0x00, 0xCF, 0x84, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xAF, 0x00, 0xD0, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x83, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x08, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x0B, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xCF, 0x01, + 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x04, 0x00, 0xCF, 0x01, 0x1A, 0x34, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xF0, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x09, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x26, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x84, 0x01, 0x10, 0x01, 0x31, 0x3B, 0x18, 0x09, 0x72, 0x01, 0x10, 0x04, 0x00, 0xF0, 0x0D, 0x00, 0xD0, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x12, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x11, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x01, 0x10, 0x84, 0x01, 0x31, 0x2A, 0x96, 0x2A, 0xD7, 0x01, 0x31, 0x00, 0xF0, 0x0C, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x08, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x89, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xB0, 0x08, 0xD0, 0x18, 0xF0, 0x10, 0x2D, 0x28, 0x2D, 0x82, 0x55, 0x92, 0x35, 0x01, 0xA2, 0x14, 0x85, 0xA9, 0xF4, 0xB1, 0xF4, 0xA9, 0xD3, 0xB1, 0xD3, 0xB1, 0xF3, 0xA9, 0xD3, 0x01, 0xB1, 0xF4, 0x02, 0xA9, 0xD3, 0x87, 0xA9, 0xF4, 0xAA, 0x14, 0xA2, 0x35, 0x9A, 0x76, 0x7A, 0x14, 0x10, 0x0C, 0x10, 0x6E, 0x08, 0x8E, 0x01, 0x00, 0xAF, 0x90, 0x00, 0xCF, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x10, 0x01, 0x30, 0x01, 0x71, + 0x2A, 0xD7, 0x2A, 0xF7, 0x01, 0x72, 0x01, 0x31, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x83, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xCF, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x09, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x07, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x04, 0x00, 0xF0, 0x01, 0x01, 0x30, 0x83, 0x01, 0x91, 0x12, 0x34, 0x3B, 0x38, 0x1A, 0x14, 0x01, 0x01, 0x10, 0x80, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x08, 0x00, 0xCF, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x04, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x80, 0x01, 0x10, 0x01, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x01, 0x10, 0x84, 0x01, 0x71, 0x22, 0x55, 0x3B, 0x38, 0x1A, 0x34, 0x01, 0x30, 0x02, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x81, + 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x0D, 0x00, 0xCF, 0x81, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x06, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x08, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x07, 0x00, 0xEF, 0x04, 0x00, 0xCF, 0x89, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x30, 0x01, 0x91, 0x1A, 0x55, 0x3B, 0x59, 0x2A, 0xB6, 0x09, 0x92, 0x01, 0x30, 0x00, 0xEF, 0x01, 0x01, 0x10, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x04, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x05, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xCF, 0x8A, 0x00, 0xEF, 0x01, 0x30, 0x11, 0xD3, 0x32, 0xD6, 0x3B, 0x18, 0x2A, 0x95, 0x1A, 0x34, 0x01, 0x50, 0x01, 0x0F, 0x01, 0x30, 0x00, 0xEF, 0x01, 0x00, 0xCE, 0x80, 0x00, 0xEF, 0x04, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x05, 0x00, 0xCF, 0x89, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x01, 0x10, 0x00, 0xF0, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xCF, 0x86, 0x00, 0xD0, 0x00, 0xAF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x05, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x03, 0x00, 0xCF, 0x82, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x01, 0x00, + 0xEF, 0x86, 0x01, 0x10, 0x01, 0x30, 0x09, 0xB2, 0x2A, 0x96, 0x32, 0xD7, 0x2A, 0x95, 0x09, 0xB2, 0x01, 0x01, 0x0F, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xF0, 0x82, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x83, 0x00, 0xEF, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x85, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x81, 0x00, 0xF0, 0x00, 0xAF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x82, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x83, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x87, 0x00, 0xF0, 0x01, 0x10, 0x11, 0xD2, 0x33, 0x17, 0x2A, 0xB6, 0x09, 0x92, 0x01, 0x10, 0x01, 0x0F, 0x08, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xF0, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x84, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xAF, 0x00, 0xD0, 0x00, 0xAF, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x83, 0x00, 0xAF, 0x00, 0xD0, 0x00, 0xB0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xAF, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x0C, 0x00, 0xD0, 0x83, + 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x86, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x10, 0x01, 0x30, 0x22, 0x55, 0x32, 0xD7, 0x01, 0x71, 0x01, 0x01, 0x30, 0x81, 0x00, 0xF0, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x85, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xAF, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x86, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x71, 0x32, 0xF7, 0x09, 0xB2, 0x01, 0x51, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x82, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x85, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x02, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x83, 0x00, 0xB0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x84, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, + 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x03, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x84, 0x19, 0xF4, 0x2A, 0x96, 0x01, 0x51, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xCF, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x85, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xD0, 0x00, 0xCF, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x82, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x84, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x84, 0x00, 0xCF, 0x00, 0xEF, 0x1A, 0x54, 0x22, 0x55, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x03, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xD0, 0x80, 0x00, 0xF1, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x83, 0x00, 0xF0, + 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x84, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xAF, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x81, 0x1A, 0x34, 0x2A, 0xD7, 0x01, 0x01, 0x31, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x83, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xAF, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x03, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xB0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x85, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x84, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x83, 0x01, 0x31, 0x2A, 0xD7, 0x1A, 0x55, 0x01, 0x31, 0x01, 0x00, 0xF0, 0x85, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x02, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xAF, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xCF, 0x05, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x8E, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xD0, 0x00, 0xB0, 0x08, 0xB0, 0x10, 0xD0, 0x10, 0x4E, 0x18, 0x0C, 0x69, 0xB3, 0x92, + 0x55, 0x9A, 0x35, 0xA2, 0x14, 0xA1, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0x02, 0xA9, 0xD3, 0x81, 0xB1, 0xF4, 0xB2, 0x14, 0x02, 0xA9, 0xD3, 0x87, 0xAA, 0x14, 0xA1, 0xF3, 0xA2, 0x34, 0x9A, 0x55, 0x71, 0xD3, 0x18, 0x0C, 0x10, 0x8E, 0x08, 0xAE, 0x01, 0x00, 0xAF, 0x05, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x01, 0x01, 0x10, 0x01, 0x01, 0x30, 0x84, 0x22, 0x96, 0x2A, 0xD7, 0x01, 0x71, 0x01, 0x30, 0x01, 0x10, 0x05, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xAF, 0x02, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x83, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x03, 0x00, 0xCF, 0x8B, 0x00, 0xD0, 0x00, 0xAF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x8B, 0x00, 0xF0, 0x00, 0xEF, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x30, 0x01, 0x51, 0x11, 0xF3, 0x3B, 0x38, 0x2A, 0xD6, 0x01, 0x51, 0x01, 0x10, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xF0, 0x83, 0x00, 0xCF, 0x01, 0x10, 0x00, 0xCF, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x86, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x81, + 0x00, 0xF0, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x85, 0x00, 0xEF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x04, 0x00, 0xCF, 0x82, 0x01, 0x10, 0x00, 0xCF, 0x00, 0xEF, 0x04, 0x00, 0xCF, 0x81, 0x00, 0xF0, 0x01, 0x10, 0x01, 0x01, 0x30, 0x80, 0x09, 0xB2, 0x01, 0x32, 0xF7, 0x86, 0x12, 0x13, 0x01, 0x51, 0x01, 0x10, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x05, 0x00, 0xCF, 0x82, 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x10, 0x01, 0x00, 0xEF, 0x81, 0x00, 0xF0, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x82, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x83, 0x00, 0xEF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xAF, 0x03, 0x00, 0xCF, 0x82, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x07, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x03, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x89, 0x01, 0x10, 0x01, 0x30, 0x01, 0x10, 0x01, 0x0F, 0x01, 0x50, 0x22, 0x75, 0x3B, 0x38, 0x33, 0x38, 0x1A, 0x54, 0x01, 0x91, 0x01, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x05, 0x00, 0xCF, + 0x82, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xAF, 0x04, 0x00, 0xCF, 0x03, 0x00, 0xAF, 0x07, 0x00, 0xCF, 0x87, 0x01, 0x10, 0x01, 0x30, 0x11, 0xD3, 0x22, 0x75, 0x22, 0x55, 0x11, 0xF3, 0x09, 0x91, 0x01, 0x30, 0x02, 0x01, 0x0F, 0x80, 0x00, 0xEF, 0x02, 0x00, 0xCE, 0x04, 0x00, 0xCF, 0x82, 0x00, 0xEF, 0x00, 0xF0, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x81, 0x00, 0xF0, 0x00, 0xCF, 0x06, 0x00, 0xF0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x07, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x0A, 0x00, 0xCF, 0x84, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xAF, 0x04, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x81, 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x01, 0x0F, 0x87, 0x01, 0x30, 0x09, 0x92, 0x22, 0x75, 0x2A, 0xB6, 0x12, 0x13, 0x01, 0x51, 0x01, 0x30, 0x01, 0x0F, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x08, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x10, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x85, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xD0, 0x0C, 0x00, 0xCF, 0x82, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x01, 0x00, 0xF0, 0x86, 0x01, 0x10, 0x22, 0x55, 0x32, 0xD7, 0x09, 0x91, 0x01, 0x30, 0x01, 0x0F, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xCF, 0x81, 0x00, 0xF0, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, + 0xCF, 0x80, 0x00, 0xF0, 0x0F, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x04, 0x00, 0xCF, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x86, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x09, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x81, 0x01, 0x10, 0x01, 0x30, 0x01, 0x2A, 0xB6, 0x02, 0x01, 0x30, 0x81, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x03, 0x00, 0xCF, 0x82, 0x00, 0xEF, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x83, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x84, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x85, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x09, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x03, 0x00, 0xD0, 0x84, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x00, 0xF0, 0x84, 0x01, 0x10, 0x22, 0x95, 0x1A, 0x34, 0x01, 0x30, 0x01, 0x10, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x1A, + 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x83, 0x2A, 0x96, 0x19, 0xF4, 0x01, 0x10, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x03, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xCF, 0x02, 0x00, 0xF0, 0x8C, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x0C, 0x00, 0xF0, 0x82, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x08, 0x00, 0xD0, 0x89, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xF0, 0x1A, 0x34, 0x22, 0x96, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xF0, 0x09, 0x00, 0xD0, 0x06, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, + 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x8D, 0x01, 0x30, 0x32, 0xF7, 0x09, 0xD3, 0x01, 0x30, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xCF, 0x07, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x85, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x02, 0x00, 0xD0, 0x84, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xF0, 0x05, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x04, 0x00, 0xF0, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xF0, 0x85, 0x01, 0x10, 0x00, 0xEF, 0x01, 0x92, 0x32, 0xF7, 0x11, 0xD3, 0x01, 0x10, 0x06, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x83, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x8A, 0x00, 0xAF, 0x08, 0xD0, 0x00, 0xB0, 0x08, 0xAF, 0x10, 0x8F, 0x10, 0x0C, 0x48, 0xF0, 0x92, 0x76, 0x9A, 0x35, 0xA2, 0x14, 0xA1, 0xF3, 0x02, 0xA9, 0xF3, 0x01, 0xA9, 0xD3, 0x01, 0xB1, 0xF4, 0x01, 0xA9, 0xD3, 0x01, 0xA9, 0xF4, 0x85, 0xAA, 0x34, 0xA2, 0x14, 0x9A, 0x96, 0x61, 0x92, 0x10, 0x0C, 0x10, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x04, + 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x87, 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x30, 0x1A, 0x34, 0x2A, 0xB6, 0x01, 0x92, 0x01, 0x30, 0x01, 0x10, 0x02, 0x00, 0xF0, 0x83, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xD0, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xD0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x06, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x05, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xF0, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x83, 0x00, 0xF0, 0x00, 0xEF, 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x01, 0x10, 0x87, 0x01, 0x30, 0x01, 0x71, 0x11, 0xF3, 0x32, 0xD7, 0x11, 0xD3, 0x01, 0x10, 0x00, 0xCF, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x81, 0x00, 0xAF, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xF0, 0x00, 0xCF, 0x02, 0x00, 0xEF, 0x03, 0x00, 0xCF, 0x02, 0x00, 0xF0, 0x82, 0x00, 0xEF, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x82, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xEF, 0x03, 0x00, 0xCF, + 0x84, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xEF, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xF0, 0x87, 0x01, 0x0F, 0x01, 0x30, 0x01, 0x91, 0x22, 0x75, 0x3B, 0x38, 0x11, 0xF3, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x82, 0x00, 0xF0, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x04, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x06, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x81, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xEF, 0x00, 0xF0, 0x01, 0x00, 0xEF, 0x02, 0x01, 0x0F, 0x88, 0x01, 0x50, 0x01, 0xB2, 0x1A, 0x74, 0x33, 0x17, 0x22, 0x54, 0x01, 0x51, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x81, 0x00, 0xAF, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x09, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x05, 0x00, 0xCF, 0x02, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x86, 0x01, 0x51, 0x09, 0xD3, 0x1A, 0x34, 0x1A, 0x14, 0x01, 0x71, 0x01, 0x10, 0x01, 0x0F, 0x03, 0x00, 0xEF, 0x02, 0x00, 0xCE, 0x81, 0x00, 0xCF, 0x00, 0xCE, 0x05, 0x00, 0xCF, 0x82, 0x00, + 0xAF, 0x00, 0xCF, 0x00, 0xEF, 0x04, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x06, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x06, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x09, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x05, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x01, 0x01, 0x10, 0x86, 0x01, 0x0F, 0x01, 0x30, 0x01, 0x91, 0x12, 0x34, 0x22, 0x75, 0x12, 0x13, 0x01, 0x30, 0x01, 0x01, 0x0F, 0x01, 0x00, 0xEF, 0x05, 0x00, 0xCF, 0x80, 0x00, 0xAE, 0x05, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x05, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x07, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x81, 0x00, 0xCF, 0x00, 0xAF, 0x16, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xF0, 0x88, 0x01, 0x10, 0x01, 0x30, 0x09, 0xB2, 0x2A, 0xB6, 0x1A, 0x34, 0x01, 0x30, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xEF, 0x07, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x03, 0x00, 0xCF, 0x03, 0x00, 0xAF, 0x06, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x84, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x05, 0x00, 0xAF, 0x0A, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x88, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x10, 0x00, 0xF0, 0x01, 0x31, 0x22, 0x75, 0x22, 0x55, 0x01, 0x10, 0x01, 0x01, 0x0F, 0x03, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x03, + 0x00, 0xEF, 0x01, 0x00, 0xAF, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x07, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x03, 0x00, 0xCF, 0x82, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xAF, 0x08, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x04, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x06, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x08, 0x00, 0xCF, 0x01, 0x01, 0x10, 0x80, 0x00, 0xF0, 0x01, 0x01, 0x10, 0x85, 0x11, 0xD2, 0x2A, 0xF7, 0x01, 0x71, 0x01, 0x10, 0x00, 0xEF, 0x00, 0xCF, 0x02, 0x00, 0xEF, 0x05, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x10, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x06, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xCF, 0x81, 0x00, 0xAF, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xAF, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x03, 0x00, 0xCF, 0x81, 0x00, 0xAF, 0x00, 0xCF, 0x02, 0x00, 0xD0, 0x82, 0x00, 0xF0, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x82, 0x01, 0x72, 0x2A, 0x96, 0x09, 0x72, 0x01, 0x00, 0xF0, 0x05, 0x00, 0xCF, 0x03, 0x00, 0xEF, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x0D, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x0A, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x83, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x02, 0x00, 0xD0, 0x81, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x00, 0xAF, 0x02, 0x00, 0xCF, 0x81, 0x09, 0x92, + 0x1A, 0x14, 0x04, 0x00, 0xCF, 0x81, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xD0, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x04, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x0E, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xEF, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xAF, 0x82, 0x00, 0xD0, 0x00, 0xAF, 0x00, 0xD0, 0x01, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x85, 0x01, 0x10, 0x00, 0xEF, 0x1A, 0x34, 0x1A, 0x55, 0x00, 0xF0, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x02, 0x00, 0xCF, 0x82, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xAF, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x13, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xF0, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xD0, 0x00, 0xCF, 0x01, 0x00, 0xF0, 0x81, 0x00, 0xCF, 0x00, 0xD0, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xD0, 0x88, 0x00, 0xCF, 0x00, 0xEF, 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x30, 0x1A, 0x34, 0x1A, 0x55, 0x01, 0x51, 0x01, 0x10, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xF0, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x81, 0x00, + 0xCF, 0x00, 0xAF, 0x04, 0x00, 0xCF, 0x94, 0x00, 0xAF, 0x00, 0xD0, 0x08, 0xD0, 0x00, 0xD0, 0x08, 0xAF, 0x08, 0x8F, 0x10, 0x4D, 0x30, 0x4E, 0x8A, 0x76, 0x92, 0x55, 0x9A, 0x14, 0xA2, 0x14, 0xAA, 0x13, 0xA1, 0xB2, 0xA9, 0xD3, 0xA9, 0xF3, 0xB1, 0xF4, 0xA9, 0xF4, 0xB1, 0xF4, 0xA9, 0xD3, 0xA9, 0xB3, 0x01, 0xA9, 0xF4, 0x86, 0xA1, 0xF4, 0x9A, 0x14, 0x9A, 0x96, 0x59, 0x51, 0x10, 0x0C, 0x08, 0x6D, 0x08, 0xAE, 0x02, 0x00, 0xCF, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x03, 0x00, 0xEF, 0x84, 0x01, 0x0F, 0x1A, 0x34, 0x2A, 0xD7, 0x09, 0xB2, 0x01, 0x30, 0x02, 0x00, 0xEF, 0x80, 0x00, 0xF0, 0x01, 0x00, 0xEF, 0x05, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x0F, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x0C, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x05, 0x00, 0xCF, 0x82, 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x0F, 0x01, 0x01, 0x10, 0x84, 0x01, 0x51, 0x2A, 0xD6, 0x22, 0x75, 0x01, 0x71, 0x01, 0x10, 0x01, 0x00, 0xEF, 0x81, 0x00, 0xCF, 0x00, 0xF0, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x0B, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x09, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xCF, 0x03, 0x00, 0xAF, 0x81, 0x00, 0xCF, 0x00, 0xAF, 0x06, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x81, 0x00, 0xEF, 0x00, 0xCF, 0x01, + 0x00, 0xF0, 0x81, 0x00, 0xCF, 0x00, 0xAF, 0x02, 0x00, 0xEF, 0x81, 0x01, 0x0F, 0x09, 0x91, 0x01, 0x2A, 0xB6, 0x85, 0x01, 0x92, 0x01, 0x30, 0x01, 0x10, 0x00, 0xF0, 0x00, 0xEF, 0x00, 0xF0, 0x0A, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x08, 0x00, 0xCF, 0x80, 0x00, 0xAE, 0x04, 0x00, 0xCF, 0x81, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x05, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x06, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x04, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x8A, 0x00, 0xEF, 0x01, 0x0F, 0x01, 0x10, 0x01, 0x0F, 0x01, 0x30, 0x11, 0xD3, 0x1A, 0x34, 0x12, 0x13, 0x09, 0xB2, 0x01, 0x50, 0x01, 0x10, 0x02, 0x00, 0xEF, 0x82, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x02, 0x00, 0xCE, 0x04, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x88, 0x01, 0x30, 0x09, 0xB2, 0x1A, 0x54, 0x22, 0x95, 0x12, 0x13, 0x01, 0xD2, 0x01, 0x71, 0x01, 0x30, 0x01, 0x0F, 0x01, 0x00, 0xEF, 0x01, 0x00, 0xCE, 0x82, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xAE, 0x05, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x06, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xCE, 0x80, 0x00, 0xCF, 0x0A, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xCE, 0x09, 0x00, 0xCF, 0x04, 0x00, 0xEF, 0x88, + 0x01, 0x30, 0x01, 0x91, 0x1A, 0x54, 0x1A, 0x74, 0x09, 0xF2, 0x01, 0x91, 0x01, 0x50, 0x01, 0x30, 0x00, 0xEF, 0x01, 0x00, 0xCE, 0x80, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x02, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0xCF, 0x01, 0x00, 0xCE, 0x80, 0x00, 0xAE, 0x03, 0x00, 0xCF, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x0A, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x09, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x82, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x03, 0x00, 0xCF, 0x81, 0x00, 0xEF, 0x00, 0xCF, 0x02, 0x00, 0xEF, 0x86, 0x01, 0x10, 0x01, 0x71, 0x22, 0x96, 0x1A, 0x75, 0x09, 0xB2, 0x01, 0x30, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x03, 0x00, 0xCE, 0x81, 0x00, 0xCF, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x84, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x1B, 0x00, 0xAE, 0x82, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x05, 0x00, 0xCF, 0x87, 0x00, 0xEF, 0x01, 0x10, 0x01, 0x30, 0x22, 0x96, 0x09, 0xB2, 0x01, 0x50, 0x01, 0x0F, 0x00, 0xEF, 0x01, 0x00, 0xCE, 0x03, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x83, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xCF, 0x01, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0F, 0x00, 0xAE, + 0x80, 0x00, 0xAF, 0x0B, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x83, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x86, 0x01, 0x0F, 0x01, 0x10, 0x01, 0x30, 0x1A, 0x75, 0x09, 0xD2, 0x01, 0x30, 0x00, 0xEF, 0x03, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x03, 0x00, 0xAF, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x83, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xAF, 0x1B, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x03, 0x00, 0xCF, 0x85, 0x00, 0xF0, 0x00, 0xEF, 0x01, 0x91, 0x09, 0xD2, 0x01, 0x30, 0x00, 0xEF, 0x03, 0x00, 0xCF, 0x82, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xCF, 0x01, 0x00, 0xCE, 0x81, 0x00, 0xCF, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x06, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x0B, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x07, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAF, 0x82, 0x01, 0x10, 0x09, 0xD3, 0x00, 0xF0, 0x02, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x81, 0x00, 0x8E, 0x00, 0x8F, 0x05, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x0F, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x80, + 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x09, 0x00, 0xAF, 0x81, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x03, 0x00, 0xCF, 0x81, 0x01, 0x50, 0x22, 0x75, 0x01, 0x00, 0xEF, 0x81, 0x00, 0xCF, 0x00, 0xEF, 0x03, 0x00, 0xCF, 0x81, 0x00, 0xAF, 0x00, 0xCF, 0x06, 0x00, 0xAF, 0x82, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x12, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xCE, 0x00, 0xAE, 0x05, 0x00, 0xAF, 0x81, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xCF, 0x86, 0x00, 0xEF, 0x01, 0x10, 0x01, 0x50, 0x09, 0xD2, 0x01, 0x71, 0x01, 0x51, 0x01, 0x0F, 0x05, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x07, 0x00, 0xAE, 0x84, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x87, 0x00, 0x6E, 0x08, 0x2D, 0x20, 0x0D, 0x69, 0xB3, 0x92, 0x96, 0x9A, 0x34, 0xA2, 0x14, 0xA1, 0xF3, 0x01, 0xA9, 0xF3, 0x81, 0xA9, 0xD3, 0xA9, 0xF3, 0x01, 0xB1, 0xF4, 0x8A, 0xA9, 0xD3, 0xB1, 0xF4, 0xA9, 0xF4, 0xAA, 0x14, 0xA1, 0xF4, 0x9A, 0x14, 0x9A, 0x96, 0x48, 0xCF, 0x08, 0x0B, 0x00, 0x6D, 0x00, 0x8E, 0x01, 0x00, + 0xAE, 0x03, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x84, 0x00, 0xCF, 0x01, 0x0F, 0x09, 0xF3, 0x12, 0x34, 0x01, 0x91, 0x01, 0x01, 0x30, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xCF, 0x03, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x81, 0x00, 0x8E, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x10, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x08, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x05, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x02, 0x00, 0xCF, 0x82, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x03, 0x00, 0xCF, 0x02, 0x00, 0xEF, 0x84, 0x01, 0x10, 0x01, 0x30, 0x1A, 0x75, 0x22, 0xD6, 0x09, 0xD2, 0x01, 0x01, 0x30, 0x82, 0x01, 0x10, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x0A, 0x00, 0xAE, 0x82, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x03, 0x00, 0xCF, 0x03, 0x00, 0xAF, 0x05, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xEF, 0x87, 0x01, 0x0F, 0x01, 0x30, 0x09, 0xD2, 0x1A, 0x75, 0x1A, 0x54, 0x09, 0xB2, 0x01, 0x51, 0x01, 0x30, 0x01, 0x01, 0x10, 0x81, 0x00, 0xEF, 0x00, 0xCF, 0x04, 0x00, 0xAF, 0x12, 0x00, 0xAE, 0x02, 0x00, 0xCE, 0x01, 0x00, 0xCF, 0x03, 0x00, 0xCE, 0x02, 0x00, 0xEF, + 0x01, 0x00, 0xCF, 0x81, 0x00, 0xCE, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x81, 0x00, 0xCF, 0x00, 0xAE, 0x04, 0x00, 0xCF, 0x80, 0x00, 0xAE, 0x02, 0x00, 0xCE, 0x03, 0x00, 0xCF, 0x82, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xEF, 0x02, 0x01, 0x0F, 0x8B, 0x01, 0x30, 0x01, 0x50, 0x12, 0x34, 0x1A, 0x95, 0x22, 0xB5, 0x12, 0x13, 0x01, 0x71, 0x01, 0x30, 0x01, 0x10, 0x01, 0x30, 0x2A, 0x96, 0x32, 0xD7, 0x01, 0x3A, 0xD6, 0x04, 0x3B, 0x17, 0x80, 0x3B, 0x37, 0x02, 0x43, 0x37, 0x03, 0x3B, 0x17, 0x89, 0x32, 0xD6, 0x3B, 0x17, 0x32, 0xF6, 0x2A, 0xD6, 0x2A, 0xB6, 0x22, 0x75, 0x22, 0x54, 0x12, 0x13, 0x1A, 0x33, 0x11, 0xF3, 0x02, 0x12, 0x13, 0x82, 0x22, 0x95, 0x2A, 0xD6, 0x33, 0x17, 0x01, 0x33, 0x37, 0x81, 0x33, 0x78, 0x3B, 0x78, 0x03, 0x43, 0x99, 0x80, 0x43, 0x79, 0x01, 0x4B, 0x99, 0x81, 0x4B, 0x78, 0x43, 0x38, 0x01, 0x43, 0x58, 0x01, 0x43, 0x37, 0x80, 0x43, 0x17, 0x01, 0x43, 0x37, 0x80, 0x43, 0x38, 0x02, 0x43, 0x37, 0x81, 0x43, 0x17, 0x43, 0x38, 0x02, 0x43, 0x17, 0x83, 0x3A, 0xF7, 0x3A, 0xD6, 0x3A, 0xF7, 0x43, 0x17, 0x02, 0x3A, 0xF6, 0x86, 0x32, 0xB6, 0x3A, 0xF7, 0x43, 0x17, 0x3B, 0x17, 0x3A, 0xF7, 0x3B, 0x17, 0x43, 0x17, 0x01, 0x3B, 0x17, 0x87, 0x43, 0x37, 0x43, 0x58, 0x43, 0x38, 0x3B, 0x17, 0x43, 0x38, 0x43, 0x17, 0x3B, 0x17, 0x43, 0x37, 0x01, 0x43, 0x17, 0x80, 0x3B, 0x17, 0x01, 0x3A, 0xF7, 0x80, 0x42, 0xF7, 0x02, 0x43, 0x17, 0x01, 0x3B, 0x17, 0x81, 0x3A, 0xF7, 0x3B, 0x17, 0x01, + 0x3A, 0xF7, 0x82, 0x32, 0xD6, 0x3A, 0xD7, 0x32, 0xB6, 0x01, 0x2A, 0x95, 0x87, 0x1A, 0x34, 0x1A, 0x13, 0x11, 0xF2, 0x1A, 0x33, 0x12, 0x13, 0x1A, 0x54, 0x1A, 0x74, 0x22, 0xB5, 0x01, 0x2B, 0x17, 0x80, 0x2B, 0x37, 0x02, 0x3B, 0x78, 0x82, 0x43, 0x78, 0x3B, 0x38, 0x43, 0x79, 0x01, 0x43, 0x58, 0x86, 0x43, 0x38, 0x3A, 0xF7, 0x3A, 0xD7, 0x43, 0x17, 0x43, 0x38, 0x3A, 0xF7, 0x3B, 0x17, 0x01, 0x43, 0x37, 0x80, 0x43, 0x58, 0x01, 0x4B, 0x78, 0x80, 0x4B, 0x58, 0x02, 0x4B, 0x79, 0x01, 0x43, 0x58, 0x01, 0x4B, 0x58, 0x80, 0x43, 0x58, 0x01, 0x4B, 0x79, 0x83, 0x4B, 0x99, 0x53, 0x99, 0x4B, 0x79, 0x43, 0x58, 0x02, 0x4B, 0x79, 0x82, 0x43, 0x58, 0x43, 0x78, 0x4B, 0x79, 0x01, 0x43, 0x58, 0x83, 0x43, 0x78, 0x43, 0x58, 0x4B, 0x59, 0x43, 0x58, 0x01, 0x43, 0x38, 0x83, 0x43, 0x37, 0x3B, 0x17, 0x43, 0x38, 0x43, 0x17, 0x02, 0x43, 0x38, 0x84, 0x43, 0x18, 0x43, 0x38, 0x3A, 0xF7, 0x43, 0x17, 0x3B, 0x17, 0x01, 0x3A, 0xF7, 0x8A, 0x3A, 0xD7, 0x32, 0xD6, 0x3A, 0xF7, 0x3A, 0xD6, 0x3A, 0xF7, 0x32, 0xF6, 0x3A, 0xF7, 0x32, 0xD7, 0x2A, 0x96, 0x22, 0x75, 0x1A, 0x34, 0x01, 0x1A, 0x54, 0x91, 0x22, 0x95, 0x1A, 0x54, 0x22, 0x95, 0x33, 0x38, 0x33, 0x17, 0x32, 0xF7, 0x3B, 0x58, 0x4B, 0xB9, 0x43, 0x99, 0x43, 0x79, 0x43, 0x58, 0x43, 0x38, 0x3B, 0x17, 0x4B, 0x59, 0x4B, 0x58, 0x43, 0x17, 0x43, 0x38, 0x43, 0x17, 0x02, 0x43, 0x38, 0x84, 0x3A, 0xF7, 0x43, 0x18, 0x3A, 0xF7, 0x42, 0xF7, 0x4B, 0x58, 0x01, 0x43, 0x18, 0x84, 0x43, 0x58, 0x3A, 0xD7, 0x3A, 0xF7, 0x4B, 0x79, 0x4B, + 0x99, 0x02, 0x43, 0x58, 0x01, 0x4B, 0x99, 0x84, 0x53, 0x99, 0x4B, 0x99, 0x53, 0xBA, 0x4B, 0x99, 0x53, 0xB9, 0x02, 0x53, 0x99, 0x81, 0x53, 0xBA, 0x53, 0xB9, 0x06, 0x53, 0xBA, 0x83, 0x53, 0x99, 0x53, 0xBA, 0x53, 0xDA, 0x53, 0xBA, 0x02, 0x53, 0x99, 0x80, 0x4B, 0x79, 0x01, 0x53, 0xBA, 0x80, 0x4B, 0x79, 0x01, 0x4B, 0x59, 0x82, 0x43, 0x58, 0x43, 0x38, 0x3A, 0xF7, 0x01, 0x3B, 0x17, 0x80, 0x3A, 0xF7, 0x01, 0x32, 0xD7, 0x84, 0x32, 0xB6, 0x2A, 0x96, 0x2A, 0x95, 0x22, 0x34, 0x1A, 0x54, 0x01, 0x1A, 0x34, 0x82, 0x11, 0xF3, 0x1A, 0x34, 0x43, 0x59, 0x01, 0x3B, 0x38, 0x01, 0x43, 0x58, 0x01, 0x3B, 0x58, 0x84, 0x33, 0x17, 0x32, 0xF7, 0x32, 0xB6, 0x3A, 0xF7, 0x43, 0x58, 0x01, 0x3A, 0xD7, 0x01, 0x3B, 0x18, 0x81, 0x43, 0x38, 0x4B, 0x58, 0x01, 0x3B, 0x17, 0x81, 0x43, 0x58, 0x43, 0x38, 0x01, 0x4B, 0x79, 0x84, 0x43, 0x38, 0x4B, 0x59, 0x4B, 0x79, 0x43, 0x58, 0x4B, 0x79, 0x02, 0x4B, 0x99, 0x86, 0x4B, 0x79, 0x4B, 0x99, 0x53, 0xB9, 0x53, 0x99, 0x4B, 0x79, 0x4B, 0x99, 0x4B, 0x79, 0x01, 0x53, 0x99, 0x80, 0x4B, 0x79, 0x03, 0x53, 0x99, 0x02, 0x4B, 0x99, 0x81, 0x4B, 0xB9, 0x4B, 0x99, 0x01, 0x53, 0x99, 0x80, 0x4B, 0x99, 0x01, 0x53, 0x99, 0x83, 0x53, 0xBA, 0x53, 0xB9, 0x4B, 0x99, 0x4B, 0x79, 0x02, 0x4B, 0x99, 0x82, 0x4B, 0x79, 0x4B, 0x78, 0x4B, 0x58, 0x01, 0x43, 0x58, 0x81, 0x4B, 0x58, 0x43, 0x58, 0x01, 0x3B, 0x17, 0x8B, 0x43, 0x38, 0x43, 0x17, 0x43, 0x38, 0x3B, 0x17, 0x32, 0xB6, 0x2A, 0x96, 0x2A, 0xB5, 0x2A, 0xB6, 0x22, 0x75, 0x1A, 0x75, 0x33, 0x17, + 0x33, 0x38, 0x01, 0x3B, 0x79, 0x89, 0x33, 0x17, 0x32, 0xD6, 0x32, 0xD7, 0x32, 0xF7, 0x32, 0xB6, 0x32, 0xD7, 0x3A, 0xF7, 0x3B, 0x17, 0x3A, 0xF7, 0x3B, 0x17, 0x01, 0x3A, 0xF7, 0x87, 0x43, 0x38, 0x3B, 0x17, 0x43, 0x18, 0x4B, 0x58, 0x32, 0xD6, 0x3A, 0xD7, 0x4B, 0x58, 0x4B, 0x79, 0x01, 0x43, 0x38, 0x85, 0x43, 0x58, 0x4B, 0x99, 0x4B, 0x79, 0x4B, 0x58, 0x4B, 0x78, 0x4B, 0x99, 0x01, 0x4B, 0x78, 0x01, 0x4B, 0x79, 0x81, 0x4B, 0x78, 0x4B, 0x99, 0x01, 0x4B, 0x79, 0x02, 0x4B, 0x78, 0x81, 0x53, 0x99, 0x4B, 0x99, 0x02, 0x53, 0x99, 0x83, 0x4B, 0x99, 0x53, 0x99, 0x4B, 0x99, 0x53, 0xB9, 0x01, 0x4B, 0x99, 0x83, 0x4B, 0x79, 0x53, 0x99, 0x4B, 0x99, 0x4B, 0x79, 0x01, 0x4B, 0x99, 0x85, 0x4B, 0x58, 0x4B, 0x99, 0x4B, 0x78, 0x4B, 0x79, 0x4B, 0x99, 0x4B, 0x78, 0x01, 0x4B, 0x79, 0x80, 0x4B, 0x78, 0x01, 0x4B, 0x79, 0x01, 0x43, 0x38, 0x84, 0x43, 0x58, 0x3B, 0x18, 0x3A, 0xF7, 0x3B, 0x38, 0x32, 0xF7, 0x01, 0x32, 0xD6, 0x83, 0x2A, 0x95, 0x22, 0x75, 0x3B, 0x38, 0x33, 0x37, 0x01, 0x3B, 0x38, 0x01, 0x33, 0x17, 0x87, 0x3B, 0x17, 0x3B, 0x38, 0x32, 0xF7, 0x3B, 0x17, 0x32, 0xF7, 0x32, 0xF6, 0x3B, 0x17, 0x43, 0x37, 0x01, 0x3A, 0xF7, 0x83, 0x43, 0x38, 0x3B, 0x17, 0x43, 0x38, 0x4B, 0x59, 0x01, 0x43, 0x17, 0x01, 0x43, 0x58, 0x81, 0x43, 0x38, 0x4B, 0x58, 0x03, 0x4B, 0x79, 0x04, 0x4B, 0x99, 0x84, 0x4B, 0xB9, 0x4B, 0x99, 0x53, 0x99, 0x4B, 0x99, 0x4B, 0xB9, 0x02, 0x4B, 0x99, 0x82, 0x53, 0xB9, 0x4B, 0x99, 0x4B, 0x79, 0x01, 0x4B, 0x99, 0x86, 0x4B, 0x78, 0x4B, 0x79, + 0x4B, 0xB9, 0x4B, 0x99, 0x4B, 0x79, 0x4B, 0x99, 0x43, 0x79, 0x03, 0x4B, 0x79, 0x81, 0x4B, 0x99, 0x4B, 0x79, 0x01, 0x4B, 0x99, 0x81, 0x4B, 0xB9, 0x4B, 0x99, 0x02, 0x53, 0xBA, 0x80, 0x53, 0x9A, 0x04, 0x53, 0xBA, 0x01, 0x4B, 0x59, 0x81, 0x53, 0x9A, 0x4B, 0x59, 0x01, 0x43, 0x38, 0x88, 0x3A, 0xF7, 0x32, 0xD7, 0x1A, 0x55, 0x33, 0x38, 0x3B, 0x38, 0x43, 0x59, 0x33, 0x18, 0x32, 0xF7, 0x3A, 0xF7, 0x01, 0x43, 0x38, 0x01, 0x43, 0x59, 0x84, 0x4B, 0x79, 0x43, 0x58, 0x4B, 0x79, 0x43, 0x59, 0x4B, 0x59, 0x01, 0x43, 0x59, 0x04, 0x43, 0x58, 0x80, 0x4B, 0x79, 0x01, 0x43, 0x58, 0x81, 0x43, 0x38, 0x4B, 0x58, 0x01, 0x43, 0x58, 0x01, 0x4B, 0x58, 0x01, 0x43, 0x58, 0x83, 0x4B, 0x58, 0x4B, 0x79, 0x43, 0x58, 0x4B, 0x78, 0x02, 0x4B, 0x79, 0x01, 0x4B, 0x99, 0x82, 0x4B, 0x79, 0x4B, 0x58, 0x4B, 0x78, 0x01, 0x4B, 0x79, 0x80, 0x4B, 0x78, 0x02, 0x4B, 0x79, 0x01, 0x4B, 0x59, 0x80, 0x43, 0x38, 0x01, 0x4B, 0x59, 0x80, 0x43, 0x58, 0x01, 0x4B, 0x79, 0x83, 0x4B, 0x59, 0x4B, 0x79, 0x43, 0x59, 0x43, 0x58, 0x01, 0x4B, 0x99, 0x8E, 0x4B, 0x79, 0x43, 0x59, 0x43, 0x38, 0x4B, 0x79, 0x43, 0x38, 0x3A, 0xF7, 0x4B, 0x79, 0x53, 0x9A, 0x42, 0xF7, 0x3A, 0xF7, 0x4B, 0x79, 0x4B, 0x99, 0x4B, 0x79, 0x43, 0x38, 0x32, 0xD6, 0x01, 0x32, 0xF7, 0x84, 0x33, 0x17, 0x22, 0x95, 0x33, 0x58, 0x1A, 0x75, 0x22, 0x95, 0x01, 0x32, 0xF7, 0x82, 0x3B, 0x18, 0x3B, 0x38, 0x3B, 0x18, 0x01, 0x43, 0x59, 0x82, 0x4B, 0x79, 0x43, 0x79, 0x43, 0x59, 0x01, 0x4B, 0x79, 0x82, 0x43, 0x38, 0x4B, 0x59, 0x4B, + 0x79, 0x02, 0x43, 0x58, 0x83, 0x43, 0x38, 0x43, 0x58, 0x4B, 0x59, 0x43, 0x58, 0x01, 0x4B, 0x79, 0x85, 0x43, 0x78, 0x4B, 0x79, 0x43, 0x79, 0x4B, 0x79, 0x43, 0x59, 0x4B, 0x79, 0x02, 0x4B, 0x99, 0x82, 0x4B, 0xB9, 0x53, 0x99, 0x53, 0xB9, 0x03, 0x4B, 0x99, 0x80, 0x4B, 0x78, 0x01, 0x4B, 0x99, 0x80, 0x4B, 0x79, 0x05, 0x4B, 0x78, 0x01, 0x4B, 0x79, 0x89, 0x4B, 0x78, 0x4B, 0x79, 0x4B, 0x99, 0x4B, 0x79, 0x43, 0x58, 0x4B, 0x58, 0x4B, 0x79, 0x43, 0x38, 0x43, 0x58, 0x4B, 0x79, 0x01, 0x43, 0x18, 0x84, 0x4B, 0x79, 0x53, 0x9A, 0x4B, 0x79, 0x4B, 0x59, 0x53, 0x79, 0x02, 0x4B, 0x59, 0x01, 0x3B, 0x17, 0x88, 0x43, 0x38, 0x43, 0x58, 0x3B, 0x58, 0x2A, 0xD6, 0x1A, 0x95, 0x2A, 0xF7, 0x1A, 0x75, 0x12, 0x54, 0x22, 0x95, 0x02, 0x22, 0x75, 0x83, 0x32, 0xD7, 0x3B, 0x17, 0x32, 0xD7, 0x32, 0xD6, 0x01, 0x3A, 0xF7, 0x95, 0x43, 0x17, 0x43, 0x37, 0x43, 0x38, 0x43, 0x58, 0x4B, 0x79, 0x4B, 0x99, 0x4B, 0x59, 0x4B, 0x58, 0x43, 0x58, 0x4B, 0x79, 0x4B, 0x99, 0x53, 0x99, 0x4B, 0x58, 0x4B, 0x59, 0x53, 0x9A, 0x4B, 0x79, 0x53, 0xDA, 0x5B, 0xFB, 0x4B, 0x58, 0x43, 0x38, 0x53, 0xDA, 0x5B, 0xDA, 0x01, 0x43, 0x17, 0x9D, 0x3A, 0xD6, 0x3A, 0xB6, 0x4A, 0xD7, 0x63, 0x18, 0x7A, 0xF8, 0x61, 0xD3, 0x92, 0xB6, 0x92, 0x34, 0x9A, 0x34, 0xA2, 0x14, 0xA1, 0xF3, 0xA9, 0xF3, 0xA9, 0xD3, 0xA9, 0xF3, 0xA9, 0xF4, 0xA9, 0xD3, 0xA9, 0x93, 0xA9, 0xB3, 0xB2, 0x15, 0xAA, 0x14, 0xA2, 0x14, 0x9A, 0x14, 0x9A, 0xB6, 0x51, 0x71, 0x62, 0xD6, 0x52, 0xD6, 0x4B, 0x17, 0x53, 0x99, 0x5B, 0xBA, 0x63, + 0xFB, 0x02, 0x53, 0xBA, 0x01, 0x53, 0x99, 0x92, 0x4B, 0x79, 0x43, 0x18, 0x3B, 0x18, 0x43, 0x58, 0x43, 0x59, 0x43, 0x58, 0x33, 0x17, 0x33, 0x38, 0x2B, 0x17, 0x22, 0xD6, 0x2B, 0x17, 0x22, 0x95, 0x12, 0x13, 0x1A, 0x75, 0x22, 0xB6, 0x2A, 0xB6, 0x32, 0xB6, 0x32, 0xD7, 0x32, 0xF7, 0x01, 0x32, 0xD7, 0x80, 0x3B, 0x18, 0x04, 0x3A, 0xF7, 0x01, 0x43, 0x18, 0x85, 0x43, 0x58, 0x4B, 0x58, 0x43, 0x58, 0x43, 0x17, 0x43, 0x58, 0x4B, 0x78, 0x01, 0x43, 0x38, 0x81, 0x43, 0x58, 0x4B, 0x79, 0x01, 0x4B, 0x58, 0x81, 0x4B, 0x79, 0x53, 0xBA, 0x01, 0x53, 0x99, 0x01, 0x53, 0xB9, 0x83, 0x53, 0x99, 0x53, 0xBA, 0x53, 0x99, 0x4B, 0x79, 0x01, 0x53, 0x99, 0x01, 0x4B, 0x79, 0x81, 0x43, 0x58, 0x4B, 0x78, 0x01, 0x4B, 0x99, 0x80, 0x4B, 0x78, 0x01, 0x4B, 0x79, 0x01, 0x4B, 0x99, 0x80, 0x53, 0x99, 0x02, 0x4B, 0x79, 0x86, 0x53, 0x79, 0x4B, 0x58, 0x4B, 0x59, 0x4B, 0x38, 0x43, 0x38, 0x4B, 0x58, 0x43, 0x38, 0x01, 0x43, 0x58, 0x80, 0x43, 0x18, 0x01, 0x43, 0x38, 0x83, 0x4B, 0x59, 0x43, 0x58, 0x3B, 0x38, 0x3B, 0x17, 0x03, 0x3B, 0x38, 0x88, 0x33, 0x17, 0x22, 0xD6, 0x1A, 0x95, 0x2A, 0xF7, 0x33, 0x78, 0x22, 0xD6, 0x12, 0x54, 0x12, 0x34, 0x22, 0xB6, 0x05, 0x32, 0xD7, 0x83, 0x3A, 0xF7, 0x32, 0xD7, 0x3A, 0xF7, 0x3B, 0x17, 0x01, 0x3A, 0xF7, 0x80, 0x3B, 0x17, 0x01, 0x43, 0x58, 0x80, 0x43, 0x17, 0x04, 0x43, 0x38, 0x80, 0x43, 0x17, 0x02, 0x43, 0x38, 0x81, 0x3B, 0x17, 0x43, 0x17, 0x02, 0x43, 0x38, 0x80, 0x4B, 0x58, 0x01, 0x4B, 0x79, 0x80, 0x4B, 0x99, 0x01, 0x53, 0x99, 0x01, + 0x4B, 0x99, 0x81, 0x53, 0x9A, 0x4B, 0x99, 0x01, 0x4B, 0x79, 0x80, 0x4B, 0x58, 0x01, 0x4B, 0x79, 0x81, 0x43, 0x38, 0x43, 0x58, 0x01, 0x43, 0x38, 0x87, 0x43, 0x58, 0x43, 0x37, 0x43, 0x17, 0x43, 0x37, 0x43, 0x17, 0x43, 0x38, 0x3B, 0x17, 0x3A, 0xF7, 0x02, 0x3B, 0x17, 0x80, 0x43, 0x17, 0x01, 0x3B, 0x17, 0x80, 0x43, 0x18, 0x01, 0x43, 0x38, 0x01, 0x43, 0x58, 0x81, 0x3B, 0x38, 0x43, 0x78, 0x01, 0x43, 0x99, 0x8D, 0x43, 0xB9, 0x3B, 0x78, 0x3B, 0x58, 0x33, 0x58, 0x3B, 0x79, 0x3B, 0x58, 0x22, 0xB6, 0x1A, 0x54, 0x11, 0xF3, 0x12, 0x14, 0x1A, 0x34, 0x22, 0x55, 0x22, 0x75, 0x22, 0x55, 0x01, 0x2A, 0x76, 0x80, 0x2A, 0x96, 0x02, 0x32, 0xB6, 0x01, 0x32, 0xD6, 0x01, 0x3A, 0xF7, 0x02, 0x3B, 0x17, 0x80, 0x3A, 0xF7, 0x01, 0x43, 0x38, 0x83, 0x43, 0x37, 0x3B, 0x17, 0x43, 0x17, 0x43, 0x37, 0x01, 0x43, 0x17, 0x82, 0x3B, 0x17, 0x3A, 0xF6, 0x43, 0x17, 0x04, 0x3B, 0x17, 0x82, 0x3B, 0x37, 0x33, 0x17, 0x3A, 0xF7, 0x02, 0x3B, 0x17, 0x80, 0x43, 0x37, 0x02, 0x43, 0x38, 0x82, 0x43, 0x58, 0x43, 0x38, 0x4B, 0x79, 0x02, 0x4B, 0x58, 0x84, 0x43, 0x38, 0x43, 0x58, 0x4B, 0x58, 0x43, 0x38, 0x43, 0x58, 0x01, 0x43, 0x38, 0x84, 0x43, 0x17, 0x43, 0x37, 0x43, 0x38, 0x43, 0x58, 0x3B, 0x37, 0x01, 0x43, 0x38, 0x87, 0x3B, 0x38, 0x43, 0x58, 0x4B, 0x79, 0x43, 0x79, 0x3B, 0x38, 0x43, 0x78, 0x4B, 0x99, 0x43, 0x78, 0x01, 0x4B, 0xBA, 0x80, 0x3B, 0x78, 0x01, 0x33, 0x37, 0x84, 0x3B, 0x78, 0x33, 0x17, 0x2A, 0xD6, 0x1A, 0x74, 0x09, 0xF3, 0x01, 0x11, 0xB2, 0x01, 0x09, 0x71, 0x81, + 0x11, 0xB2, 0x11, 0xB1, 0x02, 0x19, 0xF2, 0x84, 0x11, 0xD2, 0x19, 0xF2, 0x11, 0xD2, 0x19, 0xF3, 0x19, 0xD2, 0x01, 0x19, 0xF2, 0x01, 0x1A, 0x13, 0x01, 0x1A, 0x33, 0x90, 0x1A, 0x54, 0x22, 0x54, 0x22, 0x74, 0x2A, 0x95, 0x2A, 0xD6, 0x33, 0x17, 0x2A, 0xD6, 0x22, 0xB6, 0x22, 0xB5, 0x2A, 0xF6, 0x33, 0x17, 0x22, 0xB5, 0x1A, 0x33, 0x11, 0xF2, 0x09, 0xB2, 0x09, 0xB1, 0x09, 0xD2, 0x01, 0x09, 0x91, 0x84, 0x09, 0x90, 0x09, 0x71, 0x09, 0x70, 0x09, 0x91, 0x09, 0x71, 0x01, 0x11, 0x91, 0x87, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x19, 0xD2, 0x11, 0xB2, 0x11, 0xB1, 0x11, 0x91, 0x01, 0x11, 0xB1, 0x83, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x09, 0x71, 0x01, 0x11, 0x91, 0x96, 0x19, 0xB2, 0x11, 0x92, 0x19, 0xD2, 0x11, 0xB1, 0x19, 0xD2, 0x11, 0xB1, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x09, 0x91, 0x11, 0x91, 0x09, 0x91, 0x11, 0xB2, 0x11, 0xB1, 0x11, 0xD2, 0x11, 0x91, 0x11, 0xB1, 0x02, 0x11, 0x91, 0x87, 0x19, 0xB2, 0x11, 0xB1, 0x19, 0xB2, 0x11, 0x91, 0x19, 0xD2, 0x19, 0xB2, 0x19, 0xD2, 0x19, 0xB2, 0x01, 0x19, 0xD2, 0x81, 0x19, 0xF3, 0x19, 0xD2, 0x01, 0x19, 0xF3, 0x01, 0x22, 0x13, 0x88, 0x1A, 0x34, 0x22, 0x54, 0x22, 0x75, 0x2A, 0x95, 0x2A, 0xB5, 0x33, 0x37, 0x2A, 0xD5, 0x22, 0xB5, 0x22, 0xD6, 0x01, 0x22, 0x95, 0x84, 0x12, 0x33, 0x11, 0xF2, 0x09, 0xD2, 0x09, 0xB1, 0x09, 0x91, 0x01, 0x09, 0x71, 0x83, 0x09, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x01, 0x11, 0xB2, + 0x02, 0x19, 0xD2, 0x8C, 0x11, 0x91, 0x11, 0xD2, 0x11, 0x91, 0x11, 0xB1, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0xB2, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x03, 0x11, 0x91, 0x91, 0x11, 0xB1, 0x09, 0x71, 0x11, 0xB2, 0x11, 0x91, 0x11, 0x92, 0x09, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x09, 0xB1, 0x11, 0xB2, 0x09, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x01, 0x11, 0xB2, 0x87, 0x19, 0xD2, 0x11, 0xB2, 0x19, 0xB2, 0x11, 0xB2, 0x19, 0xB2, 0x11, 0x91, 0x19, 0xB2, 0x11, 0x92, 0x01, 0x19, 0xD2, 0x82, 0x22, 0x13, 0x19, 0xF3, 0x22, 0x13, 0x03, 0x19, 0xF3, 0x8B, 0x19, 0xF2, 0x19, 0xF3, 0x1A, 0x13, 0x1A, 0x34, 0x22, 0x55, 0x22, 0x75, 0x2A, 0xB6, 0x1A, 0x54, 0x12, 0x13, 0x33, 0x17, 0x32, 0xF7, 0x12, 0x13, 0x01, 0x09, 0xB2, 0x81, 0x09, 0x92, 0x09, 0x91, 0x02, 0x09, 0x71, 0x85, 0x09, 0x51, 0x09, 0x71, 0x19, 0xD2, 0x11, 0xB2, 0x11, 0xD2, 0x11, 0x92, 0x01, 0x11, 0xB2, 0x85, 0x19, 0xD2, 0x11, 0x92, 0x19, 0xB2, 0x11, 0x92, 0x11, 0xB2, 0x11, 0x92, 0x01, 0x19, 0xB2, 0x81, 0x19, 0xF3, 0x19, 0xD3, 0x01, 0x11, 0xB2, 0x88, 0x11, 0xD2, 0x19, 0xF3, 0x19, 0xD2, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x92, 0x11, 0xB2, 0x09, 0x91, 0x11, 0xB1, 0x02, 0x11, 0x91, 0x83, 0x11, 0xB1, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x71, 0x02, 0x11, 0x91, 0x80, 0x11, 0x71, 0x02, 0x11, 0x91, 0x84, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x02, 0x11, 0x91, 0x88, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, + 0x11, 0x92, 0x09, 0x71, 0x11, 0x91, 0x11, 0xB2, 0x19, 0xD3, 0x19, 0xB2, 0x01, 0x19, 0xD3, 0x81, 0x19, 0xF3, 0x19, 0xD3, 0x01, 0x19, 0xF3, 0x88, 0x1A, 0x13, 0x22, 0x34, 0x22, 0x54, 0x2A, 0x95, 0x22, 0x74, 0x22, 0x95, 0x2A, 0xB6, 0x3B, 0x58, 0x22, 0x75, 0x01, 0x09, 0x91, 0x80, 0x09, 0x71, 0x01, 0x09, 0x91, 0x82, 0x09, 0xB1, 0x09, 0xB2, 0x11, 0xD2, 0x01, 0x11, 0xB2, 0x98, 0x11, 0x92, 0x11, 0xB2, 0x11, 0x91, 0x11, 0x92, 0x09, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0x92, 0x11, 0x91, 0x11, 0xB2, 0x09, 0x71, 0x11, 0x91, 0x09, 0x91, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x02, 0x11, 0x91, 0x90, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x11, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0xB1, 0x09, 0x91, 0x11, 0xB1, 0x09, 0x91, 0x11, 0x91, 0x09, 0x70, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x70, 0x01, 0x09, 0x71, 0x88, 0x11, 0x91, 0x09, 0x91, 0x11, 0xB1, 0x11, 0x91, 0x11, 0xB1, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB1, 0x01, 0x11, 0x91, 0x80, 0x09, 0x71, 0x01, 0x11, 0xB1, 0x01, 0x11, 0xB2, 0x84, 0x11, 0xD2, 0x11, 0xB2, 0x19, 0xD3, 0x19, 0xF3, 0x11, 0xD2, 0x01, 0x11, 0xF3, 0x83, 0x2A, 0xD6, 0x1A, 0x34, 0x09, 0xF3, 0x09, 0xB2, 0x02, 0x09, 0x91, 0x8B, 0x11, 0xB2, 0x09, 0x92, 0x11, 0xB2, 0x09, 0x91, 0x11, 0xB2, 0x11, 0x92, 0x11, 0xB2, 0x11, 0x91, 0x11, 0x92, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x92, 0x01, 0x11, 0xB2, 0x01, 0x11, + 0x91, 0x02, 0x11, 0xB2, 0x9E, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x70, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x70, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x11, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x01, 0x11, 0x91, 0x8E, 0x11, 0xB2, 0x09, 0x91, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x91, 0x11, 0xB1, 0x09, 0x91, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x91, 0x11, 0xB1, 0x09, 0x71, 0x11, 0x91, 0x01, 0x11, 0x92, 0x80, 0x11, 0xB2, 0x01, 0x19, 0xF3, 0x01, 0x11, 0xD3, 0x82, 0x11, 0xD2, 0x2A, 0xB6, 0x2A, 0xD6, 0x01, 0x09, 0xD2, 0x82, 0x09, 0xB2, 0x01, 0x91, 0x09, 0x92, 0x01, 0x09, 0xB2, 0x01, 0x11, 0xB2, 0x81, 0x11, 0xD2, 0x11, 0xB1, 0x01, 0x11, 0xB2, 0x87, 0x11, 0xD2, 0x11, 0xB2, 0x19, 0xD2, 0x11, 0xB2, 0x19, 0xB2, 0x11, 0xB2, 0x19, 0xB2, 0x11, 0x91, 0x02, 0x11, 0xB2, 0x8F, 0x11, 0x91, 0x11, 0xB1, 0x09, 0x91, 0x11, 0xB2, 0x09, 0x91, 0x11, 0x91, 0x09, 0x91, 0x11, 0x91, 0x09, 0x91, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x09, 0x91, 0x09, 0x71, 0x11, 0x91, 0x02, 0x09, 0x91, 0x81, 0x11, 0x91, 0x09, 0x71, 0x01, 0x09, 0x91, 0x83, 0x11, 0x91, 0x09, 0x71, 0x11, 0xB2, 0x09, 0x91, 0x02, 0x11, 0xB2, 0x80, 0x09, 0x91, 0x02, 0x11, 0xB2, 0x85, 0x09, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x09, 0x91, 0x11, 0x91, 0x01, + 0x09, 0x91, 0x85, 0x09, 0x71, 0x09, 0x91, 0x09, 0x71, 0x09, 0x91, 0x09, 0x71, 0x09, 0x91, 0x01, 0x09, 0x71, 0x84, 0x11, 0x92, 0x19, 0xB2, 0x19, 0xD3, 0x11, 0xB2, 0x11, 0x92, 0x01, 0x09, 0x71, 0x83, 0x1A, 0x54, 0x2A, 0xF7, 0x11, 0xD3, 0x19, 0xF3, 0x03, 0x11, 0xD3, 0x82, 0x11, 0xD2, 0x11, 0xB2, 0x11, 0xD2, 0x06, 0x11, 0xB2, 0x8F, 0x11, 0xD2, 0x11, 0xB2, 0x11, 0xD2, 0x11, 0xB1, 0x11, 0xB2, 0x11, 0xB1, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x09, 0x91, 0x11, 0x91, 0x09, 0x91, 0x11, 0x91, 0x09, 0x91, 0x11, 0xB1, 0x09, 0x91, 0x02, 0x11, 0x91, 0x8E, 0x09, 0x91, 0x11, 0x91, 0x09, 0x91, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x91, 0x11, 0xB1, 0x09, 0x91, 0x11, 0x91, 0x09, 0x91, 0x11, 0x91, 0x09, 0x91, 0x01, 0x11, 0x91, 0x01, 0x11, 0x92, 0x8F, 0x11, 0xB2, 0x09, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x09, 0x91, 0x11, 0xB2, 0x09, 0x91, 0x11, 0xB2, 0x09, 0x91, 0x11, 0xB2, 0x09, 0x91, 0x09, 0x92, 0x09, 0x91, 0x11, 0x92, 0x09, 0x71, 0x02, 0x11, 0x71, 0x01, 0x09, 0x71, 0x81, 0x11, 0xB2, 0x19, 0xD2, 0x01, 0x11, 0xB2, 0x86, 0x09, 0x92, 0x09, 0xB2, 0x11, 0xF3, 0x11, 0xD3, 0x12, 0x13, 0x2A, 0xD6, 0x12, 0x34, 0x01, 0x11, 0xF3, 0x82, 0x11, 0xD3, 0x09, 0xB2, 0x11, 0xB2, 0x01, 0x09, 0x92, 0x01, 0x09, 0x91, 0x80, 0x09, 0x71, 0x01, 0x11, 0xB2, 0x93, 0x11, 0x92, 0x09, 0x71, 0x11, 0xB2, 0x11, 0x92, 0x11, 0xB2, 0x11, 0x92, 0x11, 0xB2, 0x11, 0x92, 0x11, 0xB2, 0x11, 0x92, 0x11, 0xB2, 0x11, 0x92, 0x11, 0xB2, 0x09, 0x91, + 0x11, 0xB2, 0x09, 0x91, 0x11, 0xB2, 0x09, 0x91, 0x11, 0x92, 0x09, 0x71, 0x02, 0x09, 0x91, 0x88, 0x09, 0x71, 0x11, 0x91, 0x09, 0x91, 0x11, 0x91, 0x09, 0x91, 0x11, 0x91, 0x09, 0x91, 0x11, 0xB1, 0x09, 0x91, 0x01, 0x11, 0x91, 0x84, 0x11, 0xB1, 0x09, 0x91, 0x11, 0xB1, 0x09, 0x91, 0x11, 0xB1, 0x01, 0x11, 0x91, 0x87, 0x09, 0x91, 0x11, 0x91, 0x09, 0x71, 0x09, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0xB2, 0x01, 0x11, 0x91, 0x80, 0x09, 0x71, 0x02, 0x11, 0x71, 0x89, 0x09, 0x51, 0x11, 0x92, 0x11, 0x71, 0x09, 0x51, 0x09, 0x50, 0x11, 0x71, 0x11, 0x91, 0x11, 0xB2, 0x09, 0xB1, 0x11, 0xD2, 0x01, 0x11, 0xF2, 0x8A, 0x1A, 0x74, 0x2A, 0xF6, 0x22, 0xB6, 0x1A, 0x54, 0x12, 0x13, 0x11, 0xF3, 0x11, 0xD3, 0x19, 0xF3, 0x11, 0xD3, 0x11, 0xB2, 0x11, 0x91, 0x01, 0x11, 0xB2, 0x82, 0x11, 0xD2, 0x09, 0x91, 0x11, 0xB1, 0x01, 0x11, 0x91, 0x84, 0x09, 0x71, 0x11, 0x92, 0x09, 0x71, 0x09, 0x91, 0x09, 0x71, 0x02, 0x11, 0x91, 0x81, 0x09, 0x71, 0x11, 0x91, 0x02, 0x09, 0x71, 0x94, 0x09, 0x50, 0x09, 0x71, 0x11, 0x91, 0x11, 0xB2, 0x11, 0xB1, 0x11, 0x91, 0x11, 0x71, 0x19, 0x71, 0x19, 0x51, 0x31, 0x72, 0x41, 0x72, 0x38, 0xAF, 0x92, 0xD7, 0x92, 0x34, 0x9A, 0x34, 0xA2, 0x14, 0xA1, 0xF3, 0xA1, 0xD3, 0xA9, 0xF4, 0xA9, 0xD3, 0xB1, 0xF4, 0x02, 0xA9, 0xD3, 0x88, 0xA9, 0xF4, 0xAA, 0x14, 0xA2, 0x35, 0x92, 0x34, 0x92, 0x96, 0x40, 0xCF, 0x39, 0x92, 0x21, 0x71, 0x11, 0x10, 0x01, 0x01, 0x0F, 0x01, 0x09, 0x30, 0x82, 0x09, 0x50, 0x09, 0x71, 0x09, 0x50, 0x01, 0x09, 0x71, + 0x82, 0x09, 0x91, 0x09, 0x71, 0x11, 0x92, 0x01, 0x11, 0xB2, 0x80, 0x11, 0xD2, 0x02, 0x1A, 0x33, 0x85, 0x1A, 0x54, 0x2A, 0xD6, 0x33, 0x38, 0x12, 0x54, 0x12, 0x13, 0x09, 0xB2, 0x03, 0x11, 0xD3, 0x03, 0x11, 0xB2, 0x83, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x02, 0x11, 0x91, 0x8A, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB1, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB1, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x02, 0x09, 0x71, 0x01, 0x09, 0x91, 0x88, 0x11, 0x91, 0x09, 0x71, 0x11, 0x92, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xD2, 0x09, 0x91, 0x11, 0xD2, 0x02, 0x11, 0xB1, 0x85, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x09, 0x91, 0x11, 0x92, 0x09, 0x71, 0x01, 0x11, 0x91, 0x80, 0x11, 0xB2, 0x01, 0x11, 0x92, 0x87, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x02, 0x11, 0x92, 0x85, 0x11, 0xD2, 0x11, 0x92, 0x11, 0xB2, 0x09, 0x92, 0x11, 0xB2, 0x11, 0xD2, 0x01, 0x1A, 0x13, 0x87, 0x12, 0x13, 0x09, 0xB2, 0x09, 0xD2, 0x12, 0x33, 0x2A, 0xF6, 0x3B, 0x78, 0x12, 0x54, 0x12, 0x14, 0x01, 0x09, 0xD3, 0x84, 0x09, 0xD2, 0x09, 0xB2, 0x11, 0xD3, 0x11, 0xB2, 0x11, 0xD2, 0x01, 0x11, 0xB2, 0x86, 0x09, 0x91, 0x11, 0xB2, 0x09, 0x91, 0x11, 0xB1, 0x09, 0x91, 0x11, 0xB2, 0x09, 0x91, 0x02, 0x11, 0xB2, 0x81, 0x11, 0x92, 0x19, 0xD2, 0x02, 0x11, 0xB2, 0x80, 0x19, 0xD2, 0x03, 0x11, 0xB2, 0x81, 0x11, 0x91, 0x11, 0xB2, 0x01, 0x11, 0x91, 0x87, 0x09, 0x71, 0x11, 0x71, 0x09, 0x51, 0x11, 0x91, 0x09, + 0x71, 0x11, 0x91, 0x09, 0x71, 0x09, 0x91, 0x02, 0x09, 0x71, 0x01, 0x09, 0x91, 0x82, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x01, 0x11, 0x91, 0x80, 0x09, 0x71, 0x01, 0x11, 0x91, 0x83, 0x19, 0xD2, 0x11, 0xB2, 0x11, 0xD2, 0x11, 0xB1, 0x01, 0x11, 0xB2, 0x80, 0x19, 0xD2, 0x01, 0x11, 0xB2, 0x80, 0x11, 0x91, 0x01, 0x11, 0xB2, 0x80, 0x11, 0xF2, 0x01, 0x11, 0xB2, 0x80, 0x09, 0x91, 0x01, 0x09, 0xB1, 0x8C, 0x09, 0xB2, 0x09, 0x91, 0x09, 0xD2, 0x09, 0xB1, 0x09, 0xD2, 0x12, 0x13, 0x1A, 0x54, 0x32, 0xF7, 0x33, 0x17, 0x2A, 0xD6, 0x22, 0x75, 0x1A, 0x55, 0x1A, 0x14, 0x02, 0x11, 0xD3, 0x8A, 0x19, 0xD3, 0x11, 0xD2, 0x19, 0xF3, 0x11, 0xB2, 0x19, 0xD2, 0x11, 0xB2, 0x19, 0xD2, 0x11, 0x91, 0x11, 0xB2, 0x11, 0x91, 0x11, 0xB2, 0x02, 0x11, 0x91, 0x83, 0x11, 0xB1, 0x11, 0x91, 0x11, 0xB1, 0x11, 0x71, 0x01, 0x11, 0x91, 0x83, 0x11, 0xD2, 0x11, 0x91, 0x11, 0xD2, 0x11, 0x91, 0x01, 0x11, 0xB2, 0x82, 0x11, 0xD2, 0x11, 0xB2, 0x11, 0xD2, 0x01, 0x11, 0xB2, 0x01, 0x09, 0x91, 0x8A, 0x11, 0x91, 0x11, 0xB2, 0x09, 0x91, 0x11, 0xB1, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x09, 0x71, 0x11, 0x91, 0x11, 0x71, 0x01, 0x11, 0x91, 0x01, 0x11, 0xB2, 0x83, 0x19, 0xF2, 0x11, 0x91, 0x11, 0xB2, 0x11, 0xB1, 0x01, 0x11, 0xB2, 0x85, 0x19, 0xD2, 0x11, 0xB2, 0x19, 0xD2, 0x11, 0x92, 0x11, 0xB2, 0x11, 0x91, 0x01, 0x11, 0xD2, 0x84, 0x09, 0xB2, 0x01, 0x71, 0x11, 0xB2, 0x09, 0xB1, 0x11, 0xD2, 0x02, 0x09, 0x91, 0x8B, 0x09, 0xB1, 0x11, 0xF2, 0x12, 0x13, 0x1A, 0x74, 0x22, 0xB6, + 0x2B, 0x17, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x05, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x03, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x86, 0x00, 0xEF, 0x01, 0x71, 0x1A, 0x34, 0x22, 0x75, 0x1A, 0x13, 0x01, 0x0F, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x07, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x04, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x82, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x02, 0x00, 0x6D, 0x85, 0x00, 0x6E, 0x00, 0x6D, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8D, 0x0A, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x03, 0x00, 0x8E, 0x03, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x03, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x83, 0x01, 0x2F, 0x12, 0x13, 0x22, 0x95, 0x01, 0x2F, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x80, 0x00, 0x6E, 0x01, 0x00, 0x4D, 0x02, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x01, 0x00, 0x6E, 0x81, 0x00, 0x8E, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x08, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x82, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x06, 0x00, 0x6D, 0x05, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x01, 0x00, + 0xAE, 0x02, 0x00, 0xCF, 0x84, 0x01, 0x70, 0x2A, 0xD6, 0x11, 0xF3, 0x00, 0xEF, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x01, 0x00, 0x6E, 0x01, 0x00, 0x8E, 0x05, 0x00, 0x6E, 0x80, 0x00, 0x8E, 0x03, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x03, 0x00, 0x6E, 0x80, 0x00, 0x8E, 0x02, 0x00, 0x6D, 0x01, 0x00, 0x6E, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x6E, 0x0A, 0x00, 0x8E, 0x01, 0x00, 0x6E, 0x83, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x84, 0x01, 0x0F, 0x11, 0xF3, 0x32, 0xF6, 0x11, 0xD2, 0x00, 0xEF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x10, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x83, 0x00, 0x6D, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x03, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x01, 0x00, 0x6E, 0x03, 0x00, 0x8E, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x84, 0x22, 0x34, 0x11, 0xF3, 0x01, 0x10, 0x00, 0xCF, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x6E, 0x12, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x15, 0x00, 0x8E, + 0x01, 0x00, 0x6E, 0x81, 0x00, 0x8E, 0x00, 0x6E, 0x03, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x0E, 0x00, 0x8E, 0x84, 0x00, 0xCF, 0x11, 0xD3, 0x19, 0xF3, 0x01, 0x0F, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x1C, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x09, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x06, 0x00, 0x8E, 0x83, 0x1A, 0x34, 0x22, 0x55, 0x00, 0xAE, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x11, 0x00, 0x8E, 0x86, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x0B, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x85, 0x00, 0xCF, 0x00, 0xEF, 0x2A, 0x96, 0x01, 0x51, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x08, 0x00, 0x8E, 0x01, 0x00, 0x6E, 0x81, 0x00, 0x8E, 0x00, 0x6E, 0x1E, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0x6E, 0x07, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x88, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x09, 0xB2, 0x2A, + 0xB6, 0x01, 0x30, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x0C, 0x00, 0x8E, 0x82, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x89, 0x00, 0x4D, 0x00, 0x6E, 0x08, 0x4D, 0x10, 0x2D, 0x20, 0x0C, 0x82, 0x96, 0x92, 0x75, 0x9A, 0x34, 0x9A, 0x13, 0xB2, 0x55, 0x01, 0xA9, 0xF3, 0x82, 0xA9, 0xD3, 0xB1, 0xD4, 0xB1, 0xF4, 0x01, 0xA9, 0xB3, 0x87, 0xA9, 0xD4, 0xA9, 0xF4, 0xA2, 0x35, 0x9A, 0x75, 0x82, 0x55, 0x28, 0x0C, 0x10, 0x4D, 0x08, 0x6E, 0x0F, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x8E, 0x00, 0xCF, 0x01, 0x1A, 0x14, 0x85, 0x01, 0x51, 0x01, 0x10, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x16, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x0B, 0x00, 0x8E, 0x82, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x81, 0x00, 0x6E, 0x00, 0x6D, 0x01, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x88, 0x00, 0xEF, 0x09, 0xD2, 0x22, 0x96, 0x1A, 0x34, 0x01, 0x71, 0x01, 0x10, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x08, 0x00, 0x8E, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x6D, 0x06, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x08, 0x00, 0x8E, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x6D, 0x01, 0x00, + 0x8E, 0x81, 0x00, 0x6D, 0x00, 0x8E, 0x03, 0x00, 0x8D, 0x03, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x03, 0x00, 0x6D, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x89, 0x00, 0xCF, 0x01, 0x30, 0x22, 0x54, 0x2A, 0xD6, 0x09, 0xB2, 0x01, 0x10, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xAE, 0x06, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0x8D, 0x04, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x15, 0x00, 0x8E, 0x04, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x03, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x86, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x0F, 0x01, 0x30, 0x01, 0x50, 0x00, 0x8D, 0x00, 0x6D, 0x04, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x03, 0x00, 0x8E, 0x80, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x88, 0x00, 0xCE, 0x09, 0x30, 0x21, 0xF3, 0x3A, 0xD7, 0x2A, 0xB6, 0x11, 0xD2, 0x01, 0x2F, 0x00, 0xEF, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x04, 0x00, 0x8E, 0x8B, 0x00, 0x6D, 0x00, 0x8E, 0x00, 0x6D, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x01, 0x00, 0x6E, 0x01, 0x00, 0x8E, 0x84, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x04, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x05, 0x00, 0x8E, 0x03, 0x00, 0x6E, 0x81, 0x00, 0x8E, 0x00, 0x6D, 0x02, + 0x00, 0x8E, 0x82, 0x00, 0x6D, 0x00, 0x8E, 0x00, 0x6D, 0x02, 0x00, 0x8E, 0x82, 0x00, 0x6D, 0x00, 0x6E, 0x00, 0x6D, 0x03, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x8B, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xEF, 0x19, 0xD2, 0x3A, 0xD6, 0x3A, 0xF7, 0x11, 0xD2, 0x01, 0x30, 0x00, 0xEE, 0x00, 0xCF, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x6E, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x8E, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x6E, 0x01, 0x00, 0x8E, 0x81, 0x00, 0x6D, 0x00, 0x8E, 0x04, 0x00, 0x6E, 0x81, 0x00, 0x8E, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x04, 0x00, 0x8E, 0x84, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x02, 0x00, 0x6E, 0x82, 0x00, 0x8E, 0x00, 0x6D, 0x00, 0x8E, 0x02, 0x00, 0x6E, 0x06, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x86, 0x00, 0xCF, 0x00, 0xEF, 0x09, 0x30, 0x32, 0x96, 0x3B, 0x38, 0x09, 0xB2, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x83, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x02, 0x00, 0x6E, 0x80, 0x00, 0x8E, 0x02, 0x00, 0x6E, 0x82, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x04, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x04, 0x00, 0x8E, 0x84, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x81, 0x00, 0x6E, 0x00, 0x8E, 0x02, 0x00, 0x6E, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x6E, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x04, 0x00, 0x8E, 0x80, 0x00, + 0x6E, 0x02, 0x00, 0x8E, 0x82, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x01, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x89, 0x00, 0xAE, 0x00, 0xEF, 0x32, 0x96, 0x32, 0xB6, 0x09, 0x71, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x84, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x04, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x03, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x07, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x86, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x0C, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x82, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x03, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x86, 0x00, 0xAF, 0x00, 0xCF, 0x11, 0x92, 0x3A, 0xF7, 0x01, 0x30, 0x01, 0x10, 0x00, 0xEF, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x07, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x18, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x03, 0x00, 0x8E, 0x03, 0x00, 0x6E, 0x03, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x84, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x08, 0x00, 0x8E, 0x83, 0x01, 0x31, 0x2A, 0x76, 0x09, 0x71, 0x00, 0xEF, 0x01, 0x00, 0xAF, 0x02, 0x00, 0x8F, 0x0D, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x07, 0x00, 0x8E, 0x80, 0x00, 0x8F, 0x02, 0x00, 0x8E, 0x82, + 0x00, 0x8F, 0x00, 0x8E, 0x00, 0x8F, 0x04, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAF, 0x00, 0x8F, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8F, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x84, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x83, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0x8F, 0x00, 0x6E, 0x03, 0x00, 0x8E, 0x83, 0x11, 0xF3, 0x1A, 0x14, 0x00, 0x8E, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8F, 0x03, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x11, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, 0x8F, 0x00, 0x8E, 0x00, 0x8F, 0x0A, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x06, 0x00, 0x8E, 0x82, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x10, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xCF, 0x83, 0x11, 0xF3, 0x19, 0xF4, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0x6E, 0x06, 0x00, 0x8E, 0x83, 0x00, 0x6E, 0x00, 0x8F, 0x00, 0x8E, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x02, 0x00, 0x6E, 0x17, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x15, 0x00, 0x8E, 0x82, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6D, 0x03, 0x00, 0x8E, 0x84, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xEF, 0x2A, 0x95, 0x32, 0xB6, 0x01, 0x00, 0xEF, 0x85, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0x8F, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x03, 0x00, 0x8E, 0x02, 0x00, 0x6E, 0x81, 0x00, 0x8E, 0x00, 0x6E, 0x08, 0x00, 0x8E, 0x80, + 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x81, 0x00, 0x8F, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x87, 0x08, 0x8E, 0x08, 0x6E, 0x18, 0x6E, 0x18, 0x0C, 0x69, 0xF4, 0x92, 0x96, 0x9A, 0x55, 0xA2, 0x34, 0x01, 0xAA, 0x14, 0x83, 0xA9, 0xD3, 0xA9, 0xF4, 0xB1, 0xF4, 0xB1, 0xD4, 0x01, 0xA9, 0xB3, 0x88, 0xA9, 0xD4, 0xA9, 0xF4, 0xA2, 0x35, 0xA2, 0xB7, 0x69, 0xB3, 0x28, 0x2D, 0x18, 0x4D, 0x08, 0x6E, 0x00, 0x6E, 0x0B, 0x00, 0x8E, 0x82, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x8B, 0x00, 0xCF, 0x22, 0x34, 0x32, 0xD7, 0x09, 0x71, 0x01, 0x10, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8F, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x1C, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x0F, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x81, 0x00, 0x6E, 0x00, 0x8E, 0x02, 0x00, 0x6E, 0x86, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x86, 0x00, 0xEF, 0x01, 0x30, 0x1A, 0x34, 0x3B, 0x18, 0x19, 0xF3, 0x01, 0x10, 0x00, 0xEF, 0x02, 0x00, 0xAE, 0x85, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x07, 0x00, 0x8E, 0x84, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x07, 0x00, 0x8E, 0x01, 0x00, 0x6E, 0x81, 0x00, 0x8E, 0x00, 0x6E, 0x08, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x0A, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x88, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6D, 0x00, 0x8E, 0x00, + 0x6D, 0x00, 0x8E, 0x00, 0x6D, 0x03, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x86, 0x00, 0xCF, 0x01, 0x30, 0x1A, 0x13, 0x3B, 0x17, 0x1A, 0x34, 0x01, 0x30, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x83, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x07, 0x00, 0x8E, 0x82, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x16, 0x00, 0x8E, 0x82, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0x6E, 0x0A, 0x00, 0x8E, 0x81, 0x00, 0x6E, 0x00, 0x6D, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x6D, 0x04, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x03, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x81, 0x00, 0xCF, 0x00, 0xEF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0x6E, 0x83, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x03, 0x00, 0x8E, 0x8C, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x0F, 0x11, 0x91, 0x22, 0x13, 0x2A, 0x95, 0x2A, 0x55, 0x11, 0x92, 0x00, 0xEF, 0x00, 0xCE, 0x00, 0xEF, 0x00, 0xCE, 0x00, 0xEF, 0x07, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x84, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x14, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x07, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x07, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x86, 0x00, 0xCE, 0x01, 0x10, 0x11, 0xB2, 0x2A, 0x75, 0x32, 0xB6, 0x19, 0xF3, 0x01, 0x0F, 0x02, 0x00, 0xEF, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, + 0xAE, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x85, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x11, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x07, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x07, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x89, 0x00, 0xCE, 0x00, 0xEF, 0x01, 0x0F, 0x19, 0xD3, 0x32, 0xD7, 0x2A, 0x55, 0x01, 0x10, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x80, 0x00, 0x8F, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x8F, 0x0B, 0x00, 0x8E, 0x81, 0x00, 0x8F, 0x00, 0x8E, 0x04, 0x00, 0x8F, 0x04, 0x00, 0x8E, 0x01, 0x00, 0x8F, 0x04, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x8F, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x06, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x85, 0x00, 0xAE, 0x00, 0xCF, 0x01, 0x10, 0x2A, 0x55, 0x22, 0x55, 0x01, 0x30, 0x01, 0x00, 0xEF, 0x82, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x06, 0x00, 0x8E, 0x80, 0x00, 0x8F, 0x04, 0x00, 0x8E, 0x82, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0x8F, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x8F, 0x02, 0x00, 0x8E, 0x84, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0x8F, 0x00, 0x8E, 0x00, 0x8F, 0x08, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x05, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x04, 0x00, 0x8E, 0x80, 0x00, + 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x82, 0x01, 0x30, 0x3A, 0xF7, 0x19, 0xF3, 0x01, 0x00, 0xEF, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8F, 0x80, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x04, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x82, 0x00, 0x8F, 0x00, 0x8E, 0x00, 0xAF, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x04, 0x00, 0x8F, 0x02, 0x00, 0x8E, 0x01, 0x00, 0x8F, 0x80, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x04, 0x00, 0x8E, 0x84, 0x00, 0xAF, 0x19, 0xD3, 0x22, 0x55, 0x01, 0x31, 0x00, 0xEF, 0x01, 0x00, 0xAF, 0x82, 0x00, 0x8E, 0x00, 0x8F, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x83, 0x00, 0xAF, 0x00, 0x8F, 0x00, 0x8E, 0x00, 0x8F, 0x02, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAF, 0x00, 0x8F, 0x00, 0x8E, 0x07, 0x00, 0x8F, 0x80, 0x00, 0xAF, 0x05, 0x00, 0x8F, 0x84, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x01, 0x00, 0x8F, 0x81, 0x00, 0xAF, 0x00, 0x8F, 0x02, 0x00, 0xAF, 0x81, 0x00, 0x8F, 0x00, 0xAF, 0x04, 0x00, 0x8F, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x80, 0x00, 0x8F, 0x03, 0x00, 0x8E, 0x84, 0x19, + 0xF3, 0x1A, 0x14, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x06, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x82, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x87, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8F, 0x01, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x81, 0x00, 0x8F, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAF, 0x81, 0x00, 0x8E, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x09, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x86, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xEF, 0x09, 0x72, 0x32, 0xB7, 0x00, 0xF0, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x03, 0x00, 0x8F, 0x81, 0x00, 0x6F, 0x00, 0x8F, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAF, 0x00, 0x8F, 0x0B, 0x00, 0x8E, 0x82, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x0A, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x03, 0x00, 0x8E, 0x82, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x04, 0x00, 0x8E, 0x87, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0x8F, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x83, 0x00, 0xCE, 0x00, 0xEF, 0x32, 0xB6, 0x11, 0xD3, 0x02, 0x00, 0xEF, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8F, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x03, + 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x06, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x83, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0x8F, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x98, 0x00, 0x8E, 0x08, 0x8E, 0x10, 0x8E, 0x10, 0x6E, 0x20, 0x4D, 0x51, 0x51, 0x92, 0x96, 0x92, 0x34, 0xA2, 0x14, 0xA1, 0xF3, 0xA1, 0xD3, 0xB2, 0x14, 0xA9, 0xD4, 0xB1, 0xD4, 0xB1, 0xF4, 0xA9, 0xD4, 0xA9, 0xB3, 0xB2, 0x14, 0xAA, 0x35, 0x9A, 0x14, 0x9A, 0xB6, 0x48, 0xCF, 0x20, 0x0C, 0x18, 0x6E, 0x08, 0x6E, 0x0F, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x87, 0x00, 0xAE, 0x00, 0xCF, 0x01, 0x0F, 0x22, 0x54, 0x3B, 0x17, 0x09, 0x91, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x0E, 0x00, 0x8E, 0x80, 0x00, 0x8F, 0x06, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x80, 0x00, 0x8F, 0x0A, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xEF, 0x85, 0x01, 0x51, 0x32, 0xB6, 0x22, 0x55, 0x01, 0x51, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x0B, 0x00, 0x8E, 0x02, 0x00, 0x6E, 0x09, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, + 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xEF, 0x87, 0x01, 0x30, 0x2A, 0x75, 0x32, 0xD6, 0x11, 0xB2, 0x01, 0x30, 0x01, 0x10, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x84, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x06, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x07, 0x00, 0x8E, 0x80, 0x00, 0x6E, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8F, 0x0B, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x08, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x82, 0x00, 0xCF, 0x00, 0xEF, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x83, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x88, 0x00, 0xCE, 0x09, 0x30, 0x22, 0x13, 0x3A, 0xD6, 0x32, 0xD6, 0x22, 0x34, 0x09, 0x71, 0x00, 0xEF, 0x00, 0xCF, 0x03, 0x00, 0xCE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x83, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, + 0x8E, 0x00, 0x6E, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xEF, 0x19, 0xB2, 0x01, 0x32, 0xB6, 0x81, 0x19, 0xD2, 0x01, 0x0F, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x83, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x06, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x03, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x84, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x8A, 0x00, 0xCE, 0x01, 0x0F, 0x09, 0x71, 0x32, 0x96, 0x32, 0xD6, 0x11, 0xB2, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x07, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x02, 0x00, 0x8F, 0x86, 0x00, 0x8E, 0x00, 0x8F, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8F, 0x80, 0x00, 0xAF, 0x01, 0x00, 0x8F, 0x84, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x02, 0x00, 0x8F, 0x83, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8F, + 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x84, 0x00, 0xEF, 0x09, 0x50, 0x2A, 0x75, 0x22, 0x14, 0x01, 0x10, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x87, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0x8F, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x86, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xAF, 0x00, 0x8F, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x81, 0x00, 0x8E, 0x00, 0xAF, 0x03, 0x00, 0x8E, 0x83, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x84, 0x00, 0xCF, 0x00, 0xEF, 0x22, 0x34, 0x2A, 0x75, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x84, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x03, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x81, + 0x00, 0xAE, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x86, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x03, 0x00, 0x8E, 0x03, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x87, 0x00, 0xAE, 0x00, 0xF0, 0x22, 0x34, 0x19, 0xF3, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAF, 0x82, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x82, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8F, 0x81, 0x00, 0xAF, 0x00, 0x8F, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8F, 0x81, 0x00, 0xAF, 0x00, 0x8F, 0x04, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x84, 0x00, 0x8F, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8F, 0x0A, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x05, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x83, 0x00, 0xAE, 0x00, 0x8E, 0x19, 0xD3, 0x1A, 0x13, 0x01, 0x00, 0xAF, 0x04, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8F, 0x01, 0x00, 0xAF, 0x85, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x04, 0x00, 0xAF, 0x85, 0x00, 0xAE, + 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x03, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x04, 0x00, 0xAF, 0x84, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x82, 0x00, 0x8F, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x87, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xEF, 0x01, 0x10, 0x32, 0x96, 0x22, 0x14, 0x00, 0xCF, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x04, 0x00, 0x8F, 0x80, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0xAF, 0x04, 0x00, 0x8E, 0x83, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x81, 0x00, 0x8E, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x85, 0x01, 0x50, 0x43, 0x38, 0x09, 0x91, 0x00, 0xF0, 0x00, 0xEF, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x83, 0x00, 0x8F, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, + 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x83, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xCE, 0x01, 0x00, 0x8E, 0x87, 0x08, 0x6E, 0x10, 0x6E, 0x18, 0x4D, 0x30, 0x6E, 0x8A, 0x96, 0x9A, 0x55, 0xA2, 0x14, 0xA1, 0xF3, 0x02, 0xA9, 0xF4, 0x80, 0xA9, 0xB3, 0x01, 0xB1, 0xD4, 0x88, 0xB1, 0xF4, 0xA9, 0xF4, 0xA2, 0x14, 0x9A, 0x34, 0x92, 0x75, 0x28, 0x0C, 0x18, 0x2C, 0x10, 0x4D, 0x00, 0x6D, 0x09, 0x00, 0x8E, 0x85, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x8A, 0x00, 0xCF, 0x00, 0xEF, 0x11, 0xB2, 0x3B, 0x17, 0x19, 0xF3, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0xCF, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x83, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8F, 0x85, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x8F, 0x02, 0x00, 0x8E, 0x82, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x85, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x04, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x86, 0x00, 0xEF, 0x01, 0x30, 0x19, 0xF3, 0x32, 0xD6, 0x1A, 0x13, 0x00, 0xEF, 0x00, 0xCE, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAE, + 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x85, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x08, 0x00, 0x8E, 0x83, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x83, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x07, 0x00, 0xAE, 0x8C, 0x00, 0xCE, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0xEF, 0x11, 0x91, 0x2A, 0x75, 0x3A, 0xD7, 0x1A, 0x13, 0x09, 0x51, 0x01, 0x10, 0x00, 0xF0, 0x00, 0xCF, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xCF, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x09, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x04, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0xCE, 0x87, 0x00, 0xEF, 0x09, 0x91, 0x1A, + 0x13, 0x2A, 0x95, 0x32, 0xB6, 0x22, 0x13, 0x09, 0x71, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xCF, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x01, 0x00, 0xCF, 0x85, 0x00, 0xEF, 0x11, 0xB1, 0x2A, 0x54, 0x32, 0xB6, 0x22, 0x13, 0x01, 0x30, 0x01, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0xCF, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0xCF, 0x88, 0x01, 0x10, 0x19, 0xD2, 0x32, 0xB6, 0x32, 0x95, 0x09, 0x51, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xCF, + 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x04, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x84, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x83, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xCF, 0x80, 0x08, 0xEF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x88, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xEF, 0x09, 0x71, 0x2A, 0x75, 0x2A, 0x54, 0x09, 0x51, 0x01, 0x10, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x07, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x82, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x87, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x83, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x8C, 0x00, 0x8E, 0x00, 0xAE, 0x00, + 0xAF, 0x00, 0xCF, 0x00, 0xEF, 0x19, 0xF3, 0x32, 0xB6, 0x09, 0x50, 0x00, 0xEF, 0x00, 0xAF, 0x00, 0xCE, 0x00, 0xCF, 0x00, 0xAE, 0x03, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x83, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x83, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x84, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x03, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x82, 0x00, 0x8F, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x07, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x03, 0x00, 0x8E, 0x87, 0x00, 0xAF, 0x19, 0xB2, 0x2A, 0x75, 0x09, 0x92, 0x00, 0xEF, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x81, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x83, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x84, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xCF, 0x03, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x81, 0x00, 0xCF, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x83, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x82, 0x00, 0xAE, 0x00, 0xCF, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x05, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xAE, + 0x01, 0x00, 0xCF, 0x83, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x02, 0x00, 0xCF, 0x82, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x19, 0xF3, 0x1A, 0x13, 0x03, 0x00, 0xAF, 0x89, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xAE, 0x03, 0x00, 0xAF, 0x82, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x05, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x82, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xCF, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x85, 0x00, 0xF0, 0x1A, 0x14, 0x3A, 0xD7, 0x00, 0xEF, 0x00, 0xAE, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x06, 0x00, 0xAF, 0x81, 0x00, 0x8F, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x81, 0x00, 0xAE, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, + 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCF, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x82, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x82, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x84, 0x00, 0xCE, 0x00, 0xCF, 0x22, 0x13, 0x43, 0x38, 0x01, 0x30, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0C, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x05, 0x00, 0xAE, 0x88, 0x08, 0xAE, 0x08, 0x8E, 0x08, 0x6D, 0x18, 0x4D, 0x28, 0x2C, 0x7A, 0x34, 0x9A, 0x75, 0xA2, 0x34, 0xAA, 0x14, 0x02, 0xA9, 0xF4, 0x8D, 0xA9, 0xD4, 0xB1, 0xF4, 0xA9, 0xB3, 0xA9, 0xD3, 0xAA, 0x14, 0xA2, 0x35, 0x92, 0x34, 0x82, 0x55, 0x20, 0x0B, 0x18, 0x2D, 0x10, 0x6D, 0x08, 0x8E, 0x08, 0xAE, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x88, 0x00, 0xCE, 0x00, 0xCF, 0x01, 0x30, 0x3B, 0x17, 0x22, 0x75, 0x01, 0x10, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xEF, 0x02, 0x00, 0xAE, 0x82, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0xCF, 0x06, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x02, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x81, 0x00, 0xAE, + 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xCE, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x82, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xEF, 0x84, 0x01, 0x30, 0x2A, 0x75, 0x32, 0xB6, 0x09, 0x71, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCF, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x83, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x88, 0x00, 0xCE, 0x11, 0x91, 0x32, 0xD6, 0x32, 0xB5, 0x19, 0xF3, 0x01, 0x30, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xCF, 0x0A, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, + 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x07, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x8A, 0x00, 0xCE, 0x00, 0xEF, 0x09, 0x30, 0x11, 0xB1, 0x2A, 0x74, 0x3B, 0x17, 0x2A, 0x95, 0x11, 0xB1, 0x01, 0x30, 0x00, 0xEF, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x06, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x86, 0x00, 0xEF, 0x11, 0x91, 0x32, 0xB6, 0x3B, 0x17, 0x22, 0x34, 0x09, 0x50, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, + 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xCF, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x00, 0xCF, 0x86, 0x09, 0x71, 0x32, 0x96, 0x32, 0xB6, 0x11, 0xD2, 0x00, 0xEF, 0x00, 0xCE, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x85, 0x00, 0xCF, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xCF, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x85, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCF, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x86, 0x00, 0xCE, 0x00, 0xEF, 0x11, 0xB2, 0x2A, 0x95, 0x2A, 0x75, 0x01, 0x30, 0x00, 0xEF, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x03, 0x00, + 0xAF, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xCF, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x88, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x83, 0x11, 0x91, 0x2A, 0x55, 0x19, 0xF3, 0x00, 0xEF, 0x03, 0x00, 0xAE, 0x84, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x84, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x05, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x0C, 0x00, 0xAE, 0x84, 0x00, 0x8E, 0x00, 0xCF, 0x22, 0x13, 0x2A, 0x75, 0x01, 0x10, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x81, 0x00, 0xCF, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x0B, 0x00, 0xAF, 0x80, 0x00, 0xCF, 0x03, 0x00, 0xAF, 0x81, 0x00, 0xAE, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x81, 0x00, + 0xAF, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x81, 0x00, 0xCF, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xAF, 0x82, 0x00, 0xCF, 0x00, 0xCE, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x03, 0x00, 0xAF, 0x88, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x19, 0xF3, 0x22, 0x34, 0x00, 0xAE, 0x00, 0xCF, 0x00, 0xAF, 0x08, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0xCF, 0x03, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x86, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x82, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x07, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x04, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x81, 0x00, 0xCF, 0x00, 0xAF, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x84, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCF, 0x00, 0xCE, 0x07, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x83, 0x09, 0x71, 0x3A, 0xF7, 0x09, 0x51, 0x00, 0xCF, 0x03, 0x00, 0xAF, 0x81, 0x00, 0xAE, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x06, 0x00, 0xAF, 0x83, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x04, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAF, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAF, + 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x05, 0x00, 0xAE, 0x83, 0x00, 0xCE, 0x00, 0xCF, 0x2A, 0x75, 0x32, 0x96, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x88, 0x00, 0x8E, 0x08, 0x8E, 0x08, 0x6D, 0x18, 0x4D, 0x20, 0x0C, 0x69, 0xB2, 0x9A, 0x95, 0xA2, 0x34, 0xAA, 0x14, 0x01, 0xA9, 0xF4, 0x81, 0xA9, 0xD4, 0xB1, 0xD4, 0x01, 0xA9, 0xD4, 0x88, 0xA9, 0xF4, 0xAA, 0x15, 0xA2, 0x55, 0x9A, 0x75, 0x61, 0x91, 0x20, 0x0C, 0x18, 0x4D, 0x08, 0x6E, 0x08, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x86, 0x00, 0xCF, 0x01, 0x30, 0x32, 0xB6, 0x3A, 0xF7, 0x01, 0x10, 0x00, 0xEF, 0x00, 0xCF, 0x04, 0x00, 0xAE, 0x85, 0x00, 0xAF, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x83, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8E, 0x0F, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x85, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x8B, + 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xCF, 0x00, 0xCE, 0x01, 0x0F, 0x11, 0xD2, 0x43, 0x38, 0x22, 0x54, 0x01, 0x0F, 0x00, 0xCF, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x03, 0x00, 0x8E, 0x85, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x86, 0x00, 0xCE, 0x01, 0x0F, 0x09, 0x91, 0x2A, 0x75, 0x32, 0xB6, 0x22, 0x14, 0x09, 0x30, 0x01, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0A, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0E, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x87, 0x00, 0xCE, 0x00, 0xEF, 0x09, 0x50, 0x19, 0xD2, 0x32, 0x95, 0x3A, 0xF6, 0x2A, 0x54, 0x01, 0x2F, 0x01, 0x00, 0xCE, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x02, + 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x0A, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x86, 0x01, 0x0F, 0x11, 0xB1, 0x22, 0x34, 0x2A, 0x75, 0x2A, 0x54, 0x11, 0x91, 0x00, 0xEF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCF, 0x04, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x86, 0x00, 0xCE, 0x00, 0xEF, 0x01, 0x30, 0x2A, 0x54, 0x3A, 0xD7, 0x2A, 0x75, 0x01, 0x10, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, + 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xCF, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x87, 0x00, 0xCF, 0x01, 0x30, 0x11, 0xD2, 0x2A, 0x95, 0x1A, 0x13, 0x01, 0x10, 0x00, 0xCE, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x82, 0x00, 0xCF, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x82, 0x11, 0x71, 0x2A, 0x54, 0x22, 0x34, 0x01, 0x00, 0xCE, 0x07, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x08, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x0B, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x83, 0x01, 0x0F, 0x32, 0x75, + 0x19, 0xD2, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x02, 0x00, 0xCF, 0x05, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x03, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x07, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x82, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x03, 0x00, 0xCF, 0x83, 0x00, 0xAE, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xCF, 0x05, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x19, 0xF3, 0x22, 0x14, 0x01, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x07, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x0B, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0xAE, 0x03, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x07, 0x00, 0xAE, 0x83, 0x00, 0xCF, 0x00, 0xEF, 0x2A, 0x75, 0x22, 0x54, 0x01, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x03, 0x00, 0x8E, 0x01, 0x00, + 0xAE, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x84, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x83, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x84, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xAF, 0x06, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x83, 0x00, 0xEF, 0x4B, 0x58, 0x2A, 0x75, 0x01, 0x10, 0x02, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAF, 0x0A, 0x00, 0xAE, 0x89, 0x00, 0x8E, 0x08, 0x8E, 0x08, 0x6D, 0x10, 0x4D, 0x18, 0x0C, 0x48, 0xCF, 0x9A, 0x96, 0x9A, 0x14, 0xAA, 0x34, 0xAA, 0x14, 0x01, 0xA9, 0xD4, 0x01, 0xB1, 0xF4, 0x8B, 0xA9, 0xF4, 0xA9, 0xD4, 0xA1, 0xF4, 0x9A, 0x14, 0x9A, 0xB7, 0x51, 0x10, 0x20, 0x4D, 0x18, 0x6E, 0x08, 0x8E, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x85, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8F, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x87, 0x00, 0xCF, 0x00, 0xEF, 0x2A, 0x75, 0x3B, 0x17, 0x01, 0x30, 0x00, 0xCF, 0x00, 0xAF, 0x00, 0xCF, 0x01, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, + 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x85, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x84, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x0A, 0x00, 0xAE, 0x89, 0x00, 0xCE, 0x09, 0x50, 0x3A, 0xF7, 0x43, 0x17, 0x11, 0x92, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x87, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x84, 0x11, 0x91, 0x32, 0xB5, 0x32, 0xB6, 0x1A, 0x13, 0x01, 0x30, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, + 0xCE, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x11, 0x71, 0x01, 0x32, 0x95, 0x85, 0x2A, 0x74, 0x1A, 0x13, 0x09, 0x50, 0x00, 0xEF, 0x00, 0xCE, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x6D, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xCF, 0x00, 0xAF, 0x03, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x84, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x85, 0x09, 0x71, 0x2A, 0x95, 0x32, 0xD6, 0x22, 0x54, 0x11, 0x71, 0x01, 0x0F, 0x01, 0x00, 0xCE, 0x08, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, + 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x86, 0x00, 0xEE, 0x11, 0xB1, 0x3A, 0xF7, 0x43, 0x38, 0x11, 0xB2, 0x00, 0xCF, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x84, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x86, 0x00, 0xEF, 0x01, 0x0F, 0x22, 0x34, 0x32, 0xB6, 0x19, 0xD2, 0x00, 0xEF, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x89, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xEF, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x0A, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xCF, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x83, 0x00, 0xCF, 0x00, 0x8E, 0x00, 0xCE, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, + 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x8A, 0x00, 0xAE, 0x00, 0xCF, 0x01, 0x30, 0x32, 0x75, 0x2A, 0x75, 0x01, 0x0F, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xCF, 0x00, 0xAF, 0x0B, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0xCF, 0x06, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x82, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x09, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x11, 0x91, 0x32, 0x95, 0x09, 0x50, 0x02, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0xCF, 0x07, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x80, 0x00, 0xAE, 0x04, 0x00, 0xAF, 0x0F, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x82, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x01, 0x19, 0xF3, 0x81, 0x00, 0xAE, 0x00, 0xAF, 0x18, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x0A, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x06, 0x00, 0xAE, 0x80, 0x00, 0xCF, + 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x09, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x06, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x84, 0x09, 0xB1, 0x43, 0x38, 0x00, 0xEF, 0x00, 0xAF, 0x00, 0xAE, 0x02, 0x00, 0xAF, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x83, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x0B, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x0E, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAF, 0x81, 0x00, 0x8E, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x82, 0x09, 0x50, 0x4B, 0x79, 0x19, 0xF3, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x08, 0x8E, 0x86, 0x10, 0x6D, 0x18, 0x2C, 0x30, 0x4D, 0x9A, 0x96, 0xA2, 0x34, 0xAA, 0x14, 0xB2, 0x14, 0x01, 0xA9, 0xD4, 0x01, 0xB1, 0xF4, 0x88, 0xA9, 0xD3, 0xA9, 0xF4, 0xAA, 0x35, 0x9A, 0x35, 0xA2, 0xD7, 0x38, 0x4D, 0x20, 0x4D, 0x10, 0x6D, 0x08, 0x6E, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x84, 0x00, 0xAF, 0x00, 0x8F, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, + 0x00, 0xAE, 0x84, 0x00, 0xCE, 0x00, 0xEF, 0x19, 0xF3, 0x4B, 0x58, 0x09, 0x71, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x15, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x85, 0x00, 0xCE, 0x00, 0xEF, 0x19, 0xD2, 0x43, 0x38, 0x32, 0x96, 0x01, 0x0F, 0x01, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x85, 0x00, 0xEF, 0x11, 0x91, 0x2A, 0x95, 0x3A, 0xF7, 0x22, 0x13, 0x01, 0x0F, 0x01, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, + 0x00, 0x8E, 0x0B, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x0A, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x06, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x86, 0x00, 0xEE, 0x11, 0x91, 0x2A, 0x75, 0x3A, 0xD6, 0x2A, 0x54, 0x19, 0xD2, 0x01, 0x0F, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0x6E, 0x01, 0x00, 0x8E, 0x0B, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xCE, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0A, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0C, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x85, 0x09, 0x70, 0x22, 0x33, 0x2A, 0x75, 0x22, 0x54, 0x11, 0xB1, 0x01, 0x0F, 0x02, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCE, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x11, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0D, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x84, 0x09, 0x50, 0x22, 0x33, 0x32, 0xB5, 0x22, 0x34, 0x01, 0x0F, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xCE, 0x02, 0x00, 0x8E, 0x0A, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, + 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x86, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x85, 0x00, 0xCF, 0x01, 0x0F, 0x22, 0x54, 0x32, 0xB6, 0x19, 0xD2, 0x00, 0xEF, 0x07, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x29, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x87, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x0F, 0x19, 0xF2, 0x32, 0x95, 0x11, 0x91, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x86, 0x00, 0xCE, + 0x1A, 0x13, 0x22, 0x13, 0x00, 0xEF, 0x00, 0xAE, 0x00, 0xCF, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x09, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x85, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0F, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x06, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x03, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x01, 0x1A, 0x13, 0x81, 0x00, 0xCE, 0x00, 0xCF, 0x0C, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0D, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x85, 0x00, 0xCE, 0x00, 0xEF, 0x01, 0x0F, 0x43, 0x38, 0x19, 0xF3, 0x00, 0xCE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAF, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x11, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x0C, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xAE, + 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x82, 0x11, 0xB2, 0x53, 0xBA, 0x09, 0x92, 0x01, 0x00, 0xCF, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x96, 0x00, 0x8E, 0x00, 0x8D, 0x08, 0x8D, 0x10, 0x6D, 0x18, 0x2D, 0x20, 0x0C, 0x79, 0xF3, 0xA2, 0x55, 0xA2, 0x14, 0xA9, 0xF4, 0xA1, 0xB3, 0xA9, 0xD4, 0xA9, 0xF4, 0xB1, 0xF4, 0xA9, 0xF4, 0xA1, 0xF4, 0xA2, 0x14, 0xA2, 0x76, 0x8A, 0x76, 0x28, 0x0C, 0x18, 0x6D, 0x08, 0x6D, 0x00, 0x6D, 0x03, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x82, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x87, 0x00, 0xCE, 0x00, 0xEF, 0x19, 0xD2, 0x4B, 0x78, 0x11, 0x91, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0E, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0A, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x87, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x10, 0x2A, 0x75, 0x3A, 0xF7, 0x09, 0x91, 0x01, 0x0F, 0x01, 0x00, + 0xCF, 0x81, 0x00, 0xCE, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x07, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x0A, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x86, 0x00, 0xCE, 0x00, 0xEF, 0x11, 0xB2, 0x2A, 0x95, 0x32, 0x95, 0x11, 0xD2, 0x01, 0x0F, 0x01, 0x00, 0xCE, 0x80, 0x00, 0xAF, 0x03, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x84, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x0A, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xCE, 0x00, 0xAE, 0x02, 0x00, 0xCE, 0x88, 0x11, 0x91, 0x3A, 0xF7, 0x3A, 0xF6, 0x22, 0x34, 0x09, 0x71, 0x01, 0x0F, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, + 0xAE, 0x01, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x86, 0x00, 0xEF, 0x09, 0x50, 0x22, 0x34, 0x2A, 0x95, 0x2A, 0x54, 0x11, 0xB1, 0x01, 0x0F, 0x01, 0x00, 0xCE, 0x07, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x10, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x86, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x0F, 0x19, 0xD2, 0x01, 0x32, 0xB5, 0x82, 0x19, 0xB2, 0x00, 0xCE, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x13, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x86, 0x00, 0xCE, 0x00, 0xCF, 0x01, 0x0F, 0x2A, 0x95, 0x2A, 0xB5, 0x09, 0x71, 0x00, 0xEF, 0x01, + 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x15, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0B, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0C, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x83, 0x09, 0x30, 0x09, 0x71, 0x32, 0xB5, 0x19, 0xD2, 0x01, 0x00, 0xCE, 0x07, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0C, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0C, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x83, 0x00, 0xCE, 0x01, 0x0F, 0x2A, 0x75, 0x11, 0xB2, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x0D, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x09, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, 0x8D, 0x19, 0xF3, 0x1A, 0x13, 0x02, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, + 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0E, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x20, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x85, 0x00, 0xCE, 0x00, 0xEF, 0x2A, 0x54, 0x3A, 0xF7, 0x00, 0xEF, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x11, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0B, 0x00, 0xAE, 0x84, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAF, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x02, 0x00, 0xAE, 0x84, 0x00, 0xEF, 0x22, 0x14, 0x32, 0xD7, 0x01, 0x30, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x0B, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x89, 0x08, 0x8D, 0x10, 0x6D, 0x18, 0x4D, 0x18, 0x0B, 0x61, 0x30, 0x9A, 0x55, 0xA2, 0x34, 0xA1, 0xF4, 0xA1, 0xD4, 0xA9, 0xD4, 0x01, 0xB2, 0x15, 0x8B, 0xA9, 0xF4, 0xA2, 0x14, 0xA2, 0x35, 0xA2, 0xD7, 0x59, 0x31, 0x20, 0x0C, 0x10, 0x4D, 0x08, 0x6D, 0x00, 0x6E, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x03, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x8B, 0x00, 0xCE, 0x01, 0x0F, + 0x09, 0x91, 0x43, 0x58, 0x19, 0xF2, 0x00, 0xEE, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x12, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0F, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x81, 0x00, 0xCF, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x86, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xEF, 0x09, 0x91, 0x32, 0xD6, 0x22, 0x54, 0x01, 0x2F, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xCE, 0x0A, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x08, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x19, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x8A, 0x01, 0x0F, 0x11, 0xB2, 0x32, 0xB5, 0x32, 0xB6, 0x11, 0xB1, 0x01, 0x0F, 0x00, 0xCF, 0x00, 0xEF, 0x00, 0xAF, 0x00, 0x8E, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x84, 0x00, 0x8E, 0x00, 0xAD, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8D, 0x0F, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, + 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x89, 0x00, 0xEE, 0x01, 0x2F, 0x11, 0xD2, 0x3A, 0xF6, 0x3B, 0x17, 0x19, 0xF2, 0x01, 0x2F, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0x6D, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x07, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x82, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x88, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x11, 0x91, 0x22, 0x13, 0x2A, 0x95, 0x2A, 0x54, 0x11, 0x91, 0x01, 0x0F, 0x08, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0B, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0D, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x85, 0x01, 0x0F, 0x09, 0x70, 0x22, 0x33, 0x2A, 0x74, 0x22, 0x13, 0x09, 0x30, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0D, 0x00, + 0xAE, 0x02, 0x00, 0x8E, 0x0A, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0C, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x83, 0x01, 0x30, 0x3A, 0xD6, 0x2A, 0x75, 0x01, 0x0F, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xCF, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0xCF, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x0C, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x15, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x0A, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x86, 0x00, 0xCE, 0x11, 0x70, 0x09, 0x50, 0x2A, 0x75, 0x22, 0x13, 0x00, 0xEF, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0D, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x06, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x84, 0x00, 0xAE, 0x00, 0xEF, 0x22, 0x13, 0x2A, 0x74, 0x01, 0x30, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, + 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x07, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0B, 0x00, 0xAE, 0x01, 0x00, 0xAF, 0x15, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0E, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCF, 0x03, 0x00, 0x8E, 0x82, 0x00, 0x8D, 0x22, 0x13, 0x1A, 0x33, 0x02, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x19, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x0D, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0C, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x02, 0x00, 0xCE, 0x82, 0x01, 0x0F, 0x3B, 0x17, 0x09, 0x50, 0x03, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x08, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x83, 0x19, 0xF3, 0x32, 0xB6, 0x01, 0x0F, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x01, 0x08, + 0x8D, 0x92, 0x10, 0x4D, 0x18, 0x0C, 0x48, 0xAE, 0x9A, 0x75, 0x9A, 0x14, 0xA2, 0x14, 0xAA, 0x14, 0xA9, 0xF4, 0xAA, 0x14, 0xA9, 0xF4, 0xAA, 0x14, 0xAA, 0x35, 0xA2, 0x55, 0xA2, 0xF7, 0x38, 0x2D, 0x20, 0x2D, 0x10, 0x2D, 0x08, 0x4D, 0x00, 0x6E, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x86, 0x00, 0xCE, 0x00, 0xEF, 0x09, 0x71, 0x43, 0x38, 0x22, 0x13, 0x00, 0xEF, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0F, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x03, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x83, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x83, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x86, 0x00, 0xCE, 0x00, 0xEF, 0x32, 0x95, 0x43, 0x38, 0x19, 0xF3, 0x01, 0x0F, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x84, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x11, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x07, + 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x88, 0x00, 0xCE, 0x00, 0xEE, 0x19, 0xF2, 0x3A, 0xF6, 0x32, 0xD6, 0x1A, 0x13, 0x01, 0x0F, 0x00, 0xEF, 0x00, 0xAF, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x82, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0xAD, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x14, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x81, 0x01, 0x2F, 0x19, 0xD2, 0x01, 0x32, 0xD6, 0x82, 0x11, 0xD2, 0x01, 0x30, 0x00, 0xCE, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x05, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x0A, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x08, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x85, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x88, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x11, 0x71, 0x2A, 0x75, 0x32, 0xB5, 0x2A, 0x75, 0x19, 0xD2, 0x00, 0xEF, 0x01, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x82, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, + 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8D, 0x09, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x09, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0D, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x88, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x0F, 0x01, 0x30, 0x11, 0xB1, 0x22, 0x74, 0x2A, 0x94, 0x11, 0x91, 0x00, 0xEF, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x0D, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x0C, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x83, 0x09, 0x71, 0x43, 0x17, 0x22, 0x34, 0x01, 0x0F, 0x01, 0x00, 0xCF, 0x05, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x1A, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x05, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x87, 0x01, 0x0F, 0x09, 0x70, 0x19, 0xF3, 0x32, 0x95, 0x01, 0x0F, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, + 0x05, 0x00, 0xAE, 0x07, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x08, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x11, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x86, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xEF, 0x32, 0xB5, 0x22, 0x13, 0x00, 0xEF, 0x00, 0xCE, 0x03, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0E, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x0B, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x13, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x84, 0x00, 0x8D, 0x19, 0xF2, 0x1A, 0x13, 0x00, 0xCE, 0x00, 0xCF, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x83, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x1F, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x01, 0x22, 0x34, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0C, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, + 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x06, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x84, 0x00, 0xCE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCF, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xEF, 0x01, 0x2A, 0x95, 0x86, 0x00, 0xEF, 0x00, 0xCF, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAD, 0x06, 0x00, 0xAE, 0x89, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x6D, 0x08, 0x6D, 0x10, 0x6D, 0x18, 0x0C, 0x38, 0x4D, 0x92, 0x55, 0x9A, 0x35, 0x01, 0xA2, 0x14, 0x01, 0xA9, 0xF4, 0x89, 0xA1, 0xF4, 0xAA, 0x35, 0xA2, 0x55, 0xA2, 0x96, 0x8A, 0x55, 0x28, 0x0C, 0x18, 0x2D, 0x08, 0x2D, 0x08, 0x4D, 0x00, 0x6E, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x84, 0x00, 0xCE, 0x00, 0xEE, 0x01, 0x50, 0x3A, 0xF7, 0x32, 0xB6, 0x01, 0x00, 0xEF, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x09, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x08, 0x00, + 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x85, 0x00, 0xCE, 0x00, 0xEF, 0x09, 0x70, 0x32, 0xD6, 0x3A, 0xF7, 0x01, 0x30, 0x01, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0C, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0xCE, 0x81, 0x01, 0x2F, 0x11, 0xD2, 0x01, 0x3A, 0xF6, 0x86, 0x19, 0xD3, 0x00, 0xEF, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x03, 0x00, 0xAD, 0x13, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x86, 0x00, 0x8E, 0x2A, 0x95, 0x32, 0x95, 0x11, 0x91, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0xAD, 0x07, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x05, 0x00, 0x8E, 0x85, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8E, + 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x8F, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xEE, 0x09, 0x70, 0x22, 0x33, 0x2A, 0x74, 0x22, 0x54, 0x19, 0xF2, 0x00, 0xEF, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x83, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x8A, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xEF, 0x01, 0x50, 0x22, 0x33, 0x2A, 0x74, 0x22, 0x53, 0x09, 0x50, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, + 0x8D, 0x08, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0x8E, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x84, 0x00, 0xCE, 0x11, 0xD2, 0x43, 0x38, 0x1A, 0x13, 0x00, 0xEF, 0x01, 0x00, 0xCF, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0D, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x82, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x85, 0x00, 0xAE, 0x00, 0xCF, 0x09, 0x30, 0x11, 0xB2, 0x3A, 0xF7, 0x09, 0x50, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x1B, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0A, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x11, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0F, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x86, 0x00, 0xAE, 0x00, 0xCF, 0x01, 0x50, 0x32, 0xF6, 0x11, 0x91, 0x00, 0xCF, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, + 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x85, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0xAF, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x82, 0x22, 0x13, 0x1A, 0x13, 0x00, 0xCE, 0x06, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x10, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x11, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x83, 0x00, 0xCE, 0x09, 0x70, 0x32, 0xD6, 0x01, 0x0F, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x0B, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0E, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0B, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x04, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x84, 0x00, 0xCE, 0x01, 0x0F, 0x3B, 0x17, 0x1A, 0x13, 0x00, 0xEF, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x83, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x92, 0x08, 0x8D, 0x10, 0x6D, 0x18, 0x4C, 0x28, 0x0C, 0x7A, 0x14, 0x9A, + 0x55, 0x9A, 0x14, 0xAA, 0x55, 0xAA, 0x35, 0xA1, 0xF3, 0xA2, 0x14, 0xA2, 0x34, 0x9A, 0x34, 0x9A, 0x96, 0x50, 0xF0, 0x20, 0x0C, 0x18, 0x2D, 0x08, 0x4D, 0x08, 0x8E, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x06, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x04, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x01, 0x2F, 0x01, 0x3B, 0x17, 0x80, 0x01, 0x0F, 0x01, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x08, 0x00, 0xAE, 0x80, 0x00, 0xAD, 0x08, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x04, 0x00, 0xAE, 0x85, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x84, 0x00, 0xCE, 0x19, 0xF2, 0x43, 0x58, 0x19, 0xF2, 0x01, 0x0F, 0x02, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x0E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x03, 0x00, 0xAE, + 0x80, 0x00, 0xAD, 0x03, 0x00, 0xAE, 0x81, 0x00, 0xAD, 0x00, 0xAE, 0x02, 0x00, 0xCE, 0x86, 0x01, 0x0F, 0x1A, 0x13, 0x32, 0xD6, 0x2A, 0x75, 0x11, 0xB2, 0x00, 0xEF, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x83, 0x00, 0xAE, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x89, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x88, 0x00, 0xAE, 0x00, 0x8E, 0x11, 0xB2, 0x01, 0x0F, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x03, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x84, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x84, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0xAD, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0x8D, 0x84, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x88, + 0x00, 0xCE, 0x11, 0x71, 0x22, 0x33, 0x2A, 0x74, 0x22, 0x74, 0x19, 0xF2, 0x01, 0x30, 0x00, 0xCE, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x8C, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x0F, 0x11, 0xB1, 0x2A, 0x74, 0x32, 0x95, 0x11, 0xB1, 0x00, 0xEE, 0x00, 0xCE, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x86, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x0E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0A, 0x00, 0xAE, 0x85, 0x22, 0x13, 0x43, 0x58, 0x11, 0xB2, + 0x00, 0xEF, 0x00, 0xCE, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x13, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x80, 0x00, 0xAE, 0x02, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x86, 0x00, 0x8E, 0x00, 0xCF, 0x01, 0x0F, 0x11, 0x91, 0x32, 0xB6, 0x19, 0xD2, 0x00, 0xEE, 0x0B, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x16, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x0C, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0B, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xCF, 0x86, 0x1A, 0x13, 0x32, 0xD6, 0x00, 0xEF, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x6D, 0x02, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x08, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x83, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x08, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x8E, 0x00, 0x6D, 0x01, 0x1A, 0x12, 0x80, 0x00, 0xCE, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x20, 0x00, + 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x85, 0x01, 0x0F, 0x2A, 0x95, 0x21, 0xF3, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x0C, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x81, 0x00, 0xAE, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x83, 0x00, 0xEE, 0x09, 0x91, 0x43, 0x58, 0x09, 0x91, 0x01, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x84, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0xAD, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x83, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x88, 0x00, 0x6D, 0x10, 0x8D, 0x18, 0x4D, 0x20, 0x0B, 0x69, 0xB2, 0x9A, 0x95, 0x9A, 0x34, 0xA2, 0x14, 0xAA, 0x34, 0x01, 0xA1, 0xF4, 0x88, 0xA2, 0x55, 0x9A, 0x55, 0x9A, 0xD7, 0x38, 0x4D, 0x18, 0x0C, 0x10, 0x4D, 0x08, 0x4D, 0x00, 0x6D, 0x00, 0x6E, 0x03, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x06, 0x00, 0x8E, 0x83, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xAD, + 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xAD, 0x02, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x85, 0x00, 0xCE, 0x01, 0x0F, 0x2A, 0x74, 0x43, 0x37, 0x09, 0x50, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x83, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8D, 0x03, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xAD, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x04, 0x00, 0xAE, 0x82, 0x00, 0x6D, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x84, 0x00, 0xEE, 0x09, 0x70, 0x32, 0xD6, 0x3B, 0x17, 0x01, 0x2F, 0x01, 0x00, 0xEF, 0x81, 0x00, 0xCE, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x85, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xAD, 0x08, 0x00, 0xAE, 0x82, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x05, 0x00, + 0x8D, 0x80, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x03, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x81, 0x01, 0x2F, 0x11, 0xD2, 0x01, 0x32, 0xB5, 0x80, 0x11, 0x91, 0x02, 0x00, 0xCE, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x83, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x83, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x0A, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x83, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x05, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x83, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x04, 0x00, 0x8D, 0x82, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x04, 0x00, 0x8D, 0x85, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xCE, 0x00, 0xAE, 0x00, + 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x86, 0x00, 0xEE, 0x09, 0x50, 0x19, 0xF2, 0x1A, 0x13, 0x22, 0x34, 0x19, 0xF2, 0x09, 0x70, 0x01, 0x00, 0xCE, 0x80, 0x00, 0xAE, 0x0B, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x89, 0x00, 0xAE, 0x00, 0xEF, 0x09, 0x50, 0x22, 0x33, 0x2A, 0x74, 0x22, 0x13, 0x01, 0x0F, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x82, 0x00, 0x8D, 0x00, 0xCE, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x06, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x03, 0x00, 0x8D, 0x0C, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x87, 0x00, 0xCE, 0x32, 0x75, 0x43, 0x17, 0x11, 0x91, 0x00, 0xEF, 0x00, + 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x1A, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xAD, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0xCE, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x03, 0x00, 0xAE, 0x84, 0x00, 0xEF, 0x09, 0x50, 0x32, 0x95, 0x22, 0x13, 0x00, 0xCE, 0x06, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x03, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x84, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x0E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x07, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x84, 0x00, 0xEF, 0x32, 0xD5, 0x1A, 0x13, 0x00, 0xEF, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, + 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x10, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x81, 0x22, 0x13, 0x19, 0xF2, 0x01, 0x00, 0xCE, 0x83, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAD, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x83, 0x00, 0xEF, 0x22, 0x33, 0x32, 0xB5, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x16, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0D, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x05, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0xCE, 0x84, 0x22, 0x13, 0x43, 0x78, 0x01, 0x30, 0x00, 0xCE, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x02, + 0x00, 0x8D, 0x83, 0x00, 0xAD, 0x00, 0xCE, 0x00, 0xAD, 0x00, 0xAE, 0x02, 0x00, 0xAD, 0x87, 0x00, 0x8D, 0x08, 0x8D, 0x10, 0x8E, 0x10, 0x2C, 0x18, 0x0C, 0x40, 0xAE, 0x9A, 0x95, 0x9A, 0x34, 0x01, 0xA2, 0x14, 0x89, 0xAA, 0x34, 0xA2, 0x34, 0xA2, 0x55, 0xA2, 0x96, 0x79, 0xF3, 0x28, 0x0C, 0x18, 0x0C, 0x10, 0x4D, 0x10, 0x8E, 0x08, 0x8E, 0x03, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x07, 0x00, 0x8E, 0x0C, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x86, 0x00, 0xCE, 0x00, 0xEE, 0x22, 0x54, 0x3B, 0x17, 0x11, 0xB1, 0x00, 0xEF, 0x00, 0xCE, 0x08, 0x00, 0xAE, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0xAD, 0x00, 0xAE, 0x02, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x83, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x04, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0xAD, 0x03, 0x00, 0xAE, 0x86, 0x00, 0xEE, 0x00, 0xEF, 0x22, 0x54, 0x43, 0x58, 0x1A, 0x13, 0x00, 0xEF, 0x00, 0xEE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, + 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x04, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x0E, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x04, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xCE, 0x00, 0xAE, 0x02, 0x00, 0xAD, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xAD, 0x02, 0x00, 0xAE, 0x87, 0x00, 0xCE, 0x01, 0x2F, 0x22, 0x33, 0x32, 0xD6, 0x2A, 0x74, 0x09, 0x70, 0x00, 0xEE, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x05, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x0D, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x83, 0x00, 0x6D, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0x8E, 0x09, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x83, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAD, 0x09, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x06, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x0F, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x04, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x82, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x84, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x2F, 0x19, 0xF2, 0x01, 0x22, 0x33, 0x84, 0x19, 0xF2, 0x09, 0x50, 0x00, 0xEF, 0x00, 0xAE, 0x00, 0xAD, 0x0D, + 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x04, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x84, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x88, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xEF, 0x19, 0xF2, 0x2A, 0x94, 0x2A, 0x74, 0x09, 0x70, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x05, 0x00, 0x8E, 0x84, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x83, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0xAD, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x85, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x05, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, + 0x00, 0xAE, 0x87, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0xCE, 0x3A, 0xB6, 0x42, 0xF7, 0x09, 0x50, 0x00, 0xEF, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0B, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0E, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x03, 0x00, 0x8E, 0x83, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x80, 0x01, 0x0F, 0x01, 0x2A, 0x54, 0x82, 0x01, 0x0F, 0x00, 0xCE, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x06, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x0E, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x83, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x85, 0x00, 0xCE, 0x09, 0x30, 0x3B, 0x17, 0x09, 0x70, 0x00, 0xCE, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, + 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x10, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x83, 0x00, 0x6D, 0x1A, 0x12, 0x19, 0xF2, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x82, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x06, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x84, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x86, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x83, 0x09, 0x50, 0x3A, 0xF6, 0x01, 0x2F, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x80, 0x00, 0xAD, 0x13, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, + 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x06, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x85, 0x00, 0xCE, 0x00, 0xEE, 0x2A, 0x95, 0x3A, 0xF7, 0x00, 0xEF, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x05, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x91, 0x00, 0x6D, 0x08, 0x6D, 0x10, 0x4D, 0x18, 0x0C, 0x30, 0x2C, 0x9A, 0xD6, 0x92, 0x13, 0x9A, 0x14, 0xA2, 0x34, 0xA2, 0x14, 0xA2, 0x55, 0x9A, 0x34, 0xA3, 0x17, 0x48, 0xAE, 0x20, 0x0C, 0x10, 0x0C, 0x08, 0x4D, 0x08, 0x8E, 0x04, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x05, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x83, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x8D, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xEE, 0x09, 0x91, 0x43, 0x37, 0x22, 0x33, 0x00, 0xEE, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x06, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x81, 0x00, 0xAE, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0E, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x81, 0x00, 0x8E, 0x00, 0x6D, 0x07, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, + 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0xAD, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x83, 0x01, 0x50, 0x2A, 0x95, 0x3B, 0x17, 0x01, 0x2F, 0x01, 0x00, 0xEE, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x0D, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x16, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x05, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x80, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAD, 0x02, 0x00, 0xAE, 0x85, 0x00, 0xCE, 0x01, 0x2F, 0x1A, 0x13, 0x32, 0xD6, 0x2A, 0x74, 0x09, 0x50, 0x02, 0x00, 0xCE, 0x81, 0x00, 0xAE, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x06, 0x00, 0x8D, 0x88, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x11, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x06, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x07, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x09, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x06, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x13, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x88, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x0F, 0x19, 0xD2, 0x22, 0x54, 0x2A, 0x74, 0x22, 0x33, 0x11, 0x91, + 0x00, 0xEE, 0x16, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x09, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x03, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x82, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x09, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x85, 0x09, 0x50, 0x22, 0x54, 0x2A, 0x74, 0x19, 0xF2, 0x00, 0xEE, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x85, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x08, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x04, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x03, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x85, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAD, 0x04, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0x8D, 0x05, 0x00, 0xAE, 0x84, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xEF, 0x3A, 0xD6, 0x32, 0x75, 0x01, 0x01, 0x0F, 0x80, 0x00, 0xCE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x81, 0x00, 0x8E, 0x00, 0x8D, + 0x02, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x82, 0x00, 0x6D, 0x00, 0x8E, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x83, 0x00, 0xEE, 0x22, 0x33, 0x3A, 0xD6, 0x01, 0x0F, 0x04, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x05, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x07, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x84, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0xAD, 0x00, 0xCE, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x04, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x8A, 0x22, 0x13, 0x2A, 0x95, 0x01, 0x0F, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x6D, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, + 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x0D, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x09, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0x6D, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x82, 0x22, 0x33, 0x1A, 0x12, 0x00, 0xCE, 0x04, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x05, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x03, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x81, 0x00, 0xAD, 0x00, 0x8D, 0x03, 0x00, 0xAE, 0x84, 0x00, 0xCE, 0x2A, 0x74, 0x22, 0x33, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x02, 0x00, + 0x8E, 0x06, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x06, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x84, 0x00, 0xCE, 0x01, 0x2F, 0x3B, 0x17, 0x1A, 0x13, 0x00, 0xCE, 0x03, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0xAD, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x92, 0x08, 0x8D, 0x08, 0x6D, 0x10, 0x4D, 0x10, 0x0C, 0x28, 0x2C, 0x92, 0x95, 0x92, 0x34, 0xA2, 0x55, 0xA2, 0x34, 0x99, 0xF4, 0xA2, 0x55, 0x92, 0x54, 0x8A, 0x75, 0x28, 0x0B, 0x18, 0x0C, 0x10, 0x2C, 0x08, 0x4D, 0x08, 0x8E, 0x00, 0x6D, 0x03, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x05, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x05, 0x00, 0xAE, 0x89, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xCE, 0x09, 0x50, 0x43, 0x58, 0x2A, 0x74, 0x00, 0xEF, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x02, 0x00, + 0xAD, 0x09, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x0A, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x08, 0x00, 0x8D, 0x03, 0x00, 0xAD, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x02, 0x00, 0xAD, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x83, 0x11, 0xD2, 0x4B, 0x99, 0x22, 0x74, 0x01, 0x2F, 0x01, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0xAE, 0x1B, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x15, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x06, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x02, 0x00, 0xAD, 0x86, 0x00, 0xCE, 0x09, 0x50, 0x2A, 0x54, 0x2A, 0xB5, 0x22, 0x33, 0x01, 0x50, 0x00, 0xEF, 0x02, 0x00, 0xCE, 0x82, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x8E, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x03, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x11, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x13, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x12, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x89, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xEE, 0x11, 0x91, 0x2A, + 0x74, 0x3A, 0xF6, 0x22, 0x33, 0x09, 0x50, 0x00, 0xEE, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x0F, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x0E, 0x00, 0x8D, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x0D, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x85, 0x00, 0xEF, 0x22, 0x13, 0x32, 0xB5, 0x2A, 0x54, 0x09, 0x50, 0x00, 0xCE, 0x01, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x1E, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x80, 0x00, 0xAE, 0x06, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x04, 0x00, 0xAE, 0x89, 0x00, 0xAD, 0x09, 0x2F, 0x43, 0x17, 0x22, 0x33, 0x01, 0x0F, 0x00, 0xEF, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x07, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, + 0x8E, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x86, 0x00, 0x8E, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x85, 0x00, 0xCE, 0x00, 0xEE, 0x11, 0x91, 0x43, 0x17, 0x11, 0x91, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x06, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x85, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0xAD, 0x82, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x06, 0x00, 0xAE, 0x88, 0x00, 0x6D, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xEF, 0x3A, 0xF6, 0x11, 0xB1, 0x00, 0xCE, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x83, 0x00, 0xCF, 0x00, 0x8E, 0x00, 0x6D, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8D, 0x04, 0x00, 0xAE, 0x84, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x04, 0x00, + 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x12, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x0D, 0x00, 0xAE, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x81, 0x22, 0x13, 0x19, 0xF2, 0x03, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x0A, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x84, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x07, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xCE, 0x09, 0x91, 0x3A, 0xF6, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x07, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x85, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0xAE, 0x02, + 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x03, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x8A, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xCE, 0x09, 0x70, 0x3A, 0xF7, 0x09, 0x71, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x8A, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8D, 0x08, 0x8D, 0x08, 0x6D, 0x10, 0x4D, 0x18, 0x4C, 0x20, 0x0B, 0x7A, 0x14, 0x9A, 0x75, 0x9A, 0x34, 0x01, 0x9A, 0x14, 0x8C, 0x9A, 0x34, 0x9A, 0x96, 0x59, 0x30, 0x20, 0x0B, 0x18, 0x2C, 0x10, 0x2C, 0x08, 0x4D, 0x08, 0x6D, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x03, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x85, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x04, 0x00, 0x8D, 0x83, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x02, 0x00, 0xAD, 0x88, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x2F, 0x32, 0xB5, 0x3A, 0xD6, 0x01, 0x0F, 0x00, 0xCE, 0x00, + 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x10, 0x00, 0x8D, 0x82, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0xAE, 0x12, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x11, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x06, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x85, 0x00, 0xEE, 0x01, 0x50, 0x2A, 0x94, 0x3B, 0x17, 0x11, 0xB2, 0x00, 0xCE, 0x02, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0xAD, 0x05, 0x00, 0x8D, 0x82, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x29, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x8A, 0x00, 0xCE, 0x00, 0xEE, 0x09, 0x70, 0x1A, 0x13, 0x3B, 0x17, 0x22, 0x54, 0x01, 0x2F, 0x00, 0xEE, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x03, 0x00, 0x6D, 0x83, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x6D, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x83, 0x00, 0x8D, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6D, 0x0B, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x06, 0x00, 0x8D, 0x86, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6D, 0x06, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x21, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x01, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x84, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x02, 0x00, 0x6D, 0x8B, 0x00, 0x8E, + 0x00, 0xAE, 0x00, 0xEE, 0x11, 0x91, 0x2A, 0x94, 0x3A, 0xD5, 0x2A, 0x53, 0x09, 0x2F, 0x00, 0xCE, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x0D, 0x00, 0x8D, 0x02, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x05, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x09, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x07, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x04, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x86, 0x00, 0xAE, 0x09, 0x70, 0x3A, 0xD6, 0x43, 0x17, 0x19, 0xF2, 0x00, 0xCE, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x11, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x0B, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x05, 0x00, 0x8D, 0x85, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0xAE, 0x05, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x06, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x89, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x6D, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x6D, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x85, 0x09, 0x70, 0x43, 0x17, 0x19, 0xF2, 0x01, 0x0F, 0x09, 0x30, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x03, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x03, 0x00, 0xAD, 0x08, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x84, 0x00, 0xAE, + 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x05, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x03, 0x00, 0x8E, 0x88, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x82, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x83, 0x09, 0x4F, 0x3A, 0xF6, 0x19, 0xB2, 0x00, 0xCE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x06, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x05, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x84, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0xCE, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x84, 0x00, 0xAE, 0x00, 0xCE, 0x09, 0x71, 0x32, 0x95, 0x00, 0xEF, 0x01, 0x00, 0xAE, 0x82, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, + 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x80, 0x00, 0x8D, 0x04, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x05, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x04, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x82, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x81, 0x22, 0x33, 0x19, 0xF2, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x83, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x08, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x83, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x08, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x81, 0x00, 0x8E, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x03, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0xAE, 0x05, 0x00, 0x8D, 0x85, 0x00, 0xAE, 0x00, 0xCE, 0x01, 0x2F, 0x32, 0xB6, 0x11, 0x91, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x02, 0x00, 0xAE, 0x81, 0x00, 0xAD, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x01, 0x00, + 0x8D, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x03, 0x00, 0xAD, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x06, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x85, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x09, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x88, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xCE, 0x11, 0xD2, 0x43, 0x58, 0x09, 0x50, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x83, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x04, 0x00, 0xAD, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x90, 0x00, 0x6D, 0x08, 0x6D, 0x10, 0x4D, 0x18, 0x4D, 0x20, 0x0B, 0x69, 0x92, 0x9A, 0x95, 0x92, 0x14, 0x9A, 0x14, 0x9A, 0x34, 0x9A, 0x35, 0x92, 0x96, 0x38, 0x4D, 0x20, 0x2C, 0x18, 0x4D, 0x08, 0x2C, 0x08, 0x4D, 0x02, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8E, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x03, 0x00, 0x8D, 0x81, 0x00, 0x8E, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x82, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0xAD, 0x03, 0x00, 0xAE, 0x86, 0x00, 0xCE, 0x32, 0xB5, 0x3B, 0x17, 0x00, 0xEE, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x84, 0x00, 0xAE, 0x00, 0x8D, 0x00, + 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x08, 0x00, 0x8D, 0x02, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAE, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x16, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x12, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x85, 0x19, 0xD2, 0x4B, 0x78, 0x32, 0x95, 0x01, 0x30, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x82, 0x00, 0x8D, 0x00, 0x6D, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x05, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x06, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x84, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6D, 0x08, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x17, 0x00, 0x8D, 0x03, 0x00, 0xAD, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x8D, 0x00, 0xCE, 0x00, 0xEE, 0x01, 0x4F, 0x22, 0x53, 0x3A, 0xF6, 0x22, 0x33, 0x01, 0x2F, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x6D, 0x00, 0x8E, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x03, 0x00, 0x6D, 0x08, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x0F, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x0E, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x0A, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, + 0x01, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x8E, 0x05, 0x00, 0x8D, 0x88, 0x00, 0x8E, 0x00, 0xAE, 0x09, 0x50, 0x2A, 0x54, 0x3A, 0xD6, 0x2A, 0x54, 0x09, 0x70, 0x00, 0xEE, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x81, 0x00, 0x6C, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x09, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x0A, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x10, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x09, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x86, 0x00, 0xCE, 0x21, 0xF2, 0x4B, 0x37, 0x32, 0x95, 0x00, 0xEE, 0x00, 0xAE, 0x00, 0xAD, 0x0B, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x09, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x0B, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x82, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x06, 0x00, 0x8D, 0x03, 0x00, 0xAD, 0x06, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x84, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x04, 0x00, 0x8D, 0x85, 0x19, 0xB1, 0x43, 0x17, 0x11, 0xB1, 0x01, 0x0F, 0x00, 0xEE, 0x00, 0xAE, 0x04, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAD, 0x09, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0xAD, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x06, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x03, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x03, 0x00, + 0x8D, 0x81, 0x00, 0x8E, 0x00, 0xAE, 0x06, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x85, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x03, 0x00, 0xAE, 0x85, 0x00, 0xCE, 0x32, 0xB5, 0x2A, 0x54, 0x00, 0xCE, 0x00, 0x8E, 0x00, 0x6D, 0x01, 0x00, 0x8E, 0x06, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x0C, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAD, 0x01, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x81, 0x00, 0x8E, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x83, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x85, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x82, 0x00, 0x8E, 0x00, 0x6D, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x83, 0x00, 0xAE, 0x00, 0xCE, 0x22, 0x34, 0x22, 0x13, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x8E, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x82, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0xAE, 0x11, 0x00, 0x8D, 0x87, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x03, 0x00, 0x8E, 0x05, 0x00, 0x8D, 0x04, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8E, 0x80, 0x00, 0xAE, + 0x06, 0x00, 0x8E, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x83, 0x00, 0x8D, 0x00, 0x4C, 0x22, 0x13, 0x19, 0xD2, 0x02, 0x00, 0xAE, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x15, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x06, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x0C, 0x00, 0x8D, 0x03, 0x00, 0x8E, 0x86, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x07, 0x00, 0x8D, 0x88, 0x00, 0xAE, 0x00, 0xEF, 0x22, 0x13, 0x3A, 0xD6, 0x00, 0xCE, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0xAE, 0x08, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x04, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x8E, 0x01, 0x00, 0xAE, 0x83, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x11, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x87, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xEE, 0x2A, 0x74, 0x3B, 0x17, 0x01, 0x0F, 0x00, 0xCE, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x02, 0x00, 0xAE, + 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x8E, 0x03, 0x00, 0x8D, 0x03, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x80, 0x08, 0x6D, 0x01, 0x10, 0x4D, 0x83, 0x20, 0x0C, 0x59, 0x30, 0x92, 0x96, 0x9A, 0x55, 0x01, 0x9A, 0x14, 0x86, 0x92, 0x55, 0x7A, 0x14, 0x28, 0x0B, 0x18, 0x0C, 0x10, 0x4C, 0x08, 0x4C, 0x08, 0x6D, 0x01, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x05, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x09, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x01, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x89, 0x00, 0xAE, 0x00, 0xCE, 0x00, 0xEF, 0x22, 0x13, 0x43, 0x37, 0x01, 0x2F, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x0A, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x15, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x0C, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x11, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x83, 0x01, 0x0F, 0x2A, 0x75, 0x4B, 0x99, 0x11, 0xB2, 0x02, 0x00, 0xAE, 0x83, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x0D, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x0F, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x82, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x02, 0x00, 0xAD, + 0x86, 0x00, 0xCE, 0x00, 0xEE, 0x09, 0x50, 0x22, 0x53, 0x3A, 0xF6, 0x22, 0x13, 0x00, 0xEE, 0x01, 0x00, 0xAE, 0x84, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x6D, 0x00, 0x8E, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x05, 0x00, 0x6D, 0x81, 0x00, 0x8D, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x6C, 0x08, 0x00, 0x8D, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x04, 0x00, 0x6D, 0x08, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x6C, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x81, 0x00, 0x6C, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x81, 0x00, 0x8C, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x03, 0x00, 0x8D, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x0C, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x88, 0x00, 0xCE, 0x09, 0x30, 0x22, 0x33, 0x32, 0x95, 0x2A, 0x33, 0x11, 0x91, 0x00, 0xCE, 0x00, 0x8D, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x82, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x83, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x26, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x83, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x87, 0x00, 0xAD, + 0x11, 0x70, 0x32, 0x95, 0x3A, 0xB5, 0x11, 0x91, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x82, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x10, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x0F, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x06, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x02, 0x00, 0x8E, 0x81, 0x00, 0x8D, 0x00, 0x8E, 0x07, 0x00, 0x8D, 0x87, 0x00, 0xAD, 0x21, 0xF2, 0x3A, 0xF6, 0x11, 0xB1, 0x01, 0x0F, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x82, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0xAD, 0x0A, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x16, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x83, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x84, 0x00, 0xCE, 0x32, 0x74, 0x32, 0xB5, 0x00, 0xEF, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x84, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x39, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x86, 0x00, 0x8E, + 0x00, 0xAE, 0x09, 0x2F, 0x32, 0xD6, 0x09, 0x30, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0xAE, 0x80, 0x00, 0x6D, 0x0B, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x12, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x06, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x06, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x0F, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0xCE, 0x00, 0x8D, 0x04, 0x00, 0x6D, 0x81, 0x22, 0x33, 0x19, 0xF2, 0x01, 0x00, 0xAE, 0x2B, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x13, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x04, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x04, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x07, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x84, 0x00, 0xCE, 0x09, 0x70, 0x43, 0x57, 0x01, 0x2F, 0x00, 0x8D, 0x03, 0x00, 0x8E, 0x0C, 0x00, 0x8D, 0x01, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x0A, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x8D, 0x00, 0x6D, 0x10, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x83, 0x00, 0xAE, 0x00, 0xCE, 0x3A, 0xF6, 0x2A, 0xB5, 0x01, 0x00, 0xCE, 0x82, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x83, 0x00, 0x6D, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, + 0x02, 0x00, 0x8D, 0x8F, 0x00, 0x6D, 0x08, 0x6D, 0x08, 0x4D, 0x10, 0x2C, 0x18, 0x0C, 0x48, 0xCF, 0x92, 0xB6, 0x9A, 0x75, 0x9A, 0x54, 0x92, 0x34, 0x9A, 0x96, 0x48, 0xCE, 0x20, 0x0B, 0x18, 0x2C, 0x08, 0x2C, 0x08, 0x4D, 0x03, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x82, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x09, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x85, 0x00, 0xCE, 0x00, 0xEE, 0x19, 0xD1, 0x53, 0xB9, 0x11, 0xB1, 0x00, 0xCE, 0x01, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x82, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x6D, 0x0B, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x8D, 0x00, 0x6D, 0x09, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x0F, 0x00, 0x8D, 0x04, 0x00, 0x8C, 0x0A, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x84, 0x11, 0xB1, 0x4B, 0x78, 0x32, 0x95, 0x01, 0x0F, 0x00, 0xAE, 0x01, 0x00, 0xCE, 0x01, 0x00, 0xAE, 0x08, 0x00, 0x8D, 0x03, 0x00, 0x6D, 0x12, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x16, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x03, 0x00, 0x8D, 0x81, 0x00, 0x8C, 0x00, 0x8D, 0x02, 0x00, 0xAD, 0x86, 0x00, 0xCE, 0x01, 0x2F, 0x32, 0xB5, 0x3A, 0xF6, 0x19, 0xF2, 0x00, 0xEE, 0x00, 0xAD, 0x01, 0x00, + 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x02, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x8D, 0x03, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x8D, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x86, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x03, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x6D, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x06, 0x00, 0x8D, 0x88, 0x00, 0xAD, 0x00, 0xCE, 0x09, 0x4F, 0x22, 0x33, 0x3A, 0xD5, 0x2A, 0x74, 0x11, 0xB1, 0x00, 0xEE, 0x00, 0x8D, 0x05, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x8D, 0x04, 0x00, 0x8C, 0x83, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x15, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x06, 0x00, 0x8D, 0x06, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x06, 0x00, 0x8D, 0x85, 0x08, 0xEE, 0x2A, 0x33, 0x4B, + 0x37, 0x32, 0x74, 0x01, 0x0E, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x09, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x09, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x08, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x0A, 0x00, 0x8D, 0x85, 0x00, 0xAD, 0x32, 0x94, 0x42, 0xF6, 0x09, 0x70, 0x00, 0xCD, 0x00, 0xAD, 0x06, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x15, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x0A, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x06, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x85, 0x00, 0xAE, 0x00, 0xAD, 0x19, 0xD2, 0x42, 0xF6, 0x09, 0x2F, 0x00, 0xAE, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x41, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x85, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0xAE, 0x2A, 0x33, 0x3A, 0xB5, 0x00, 0xEE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x6D, 0x3D, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x06, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x84, 0x00, 0x6C, 0x22, 0x13, 0x19, 0xD2, 0x00, 0xAD, + 0x00, 0xAE, 0x51, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x85, 0x00, 0x8D, 0x00, 0xAE, 0x01, 0x0F, 0x32, 0xB5, 0x22, 0x13, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x83, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0xAD, 0x0A, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x05, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x08, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x0B, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x10, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x84, 0x00, 0xAD, 0x00, 0xAE, 0x01, 0x50, 0x43, 0x58, 0x19, 0xF2, 0x01, 0x00, 0xCE, 0x87, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6D, 0x00, 0x8E, 0x00, 0xAE, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x06, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x90, 0x08, 0x6D, 0x08, 0x4D, 0x10, 0x4D, 0x18, 0x0C, 0x38, 0x6E, 0x92, 0xD7, 0x92, 0x96, 0x9A, 0x75, 0x92, 0x34, 0x8A, 0x75, 0x28, 0x0B, 0x18, 0x2C, 0x10, 0x2C, 0x08, 0x4C, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x12, 0x00, 0x8D, 0x02, 0x00, 0xAD, 0x81, 0x00, 0x8D, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x84, 0x00, 0xEE, 0x11, 0x90, 0x4B, 0x78, 0x22, 0x13, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x16, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x01, + 0x00, 0x6D, 0x09, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x04, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x8D, 0x02, 0x00, 0x8C, 0x80, 0x00, 0xAD, 0x0A, 0x00, 0x8D, 0x03, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x89, 0x00, 0xAD, 0x00, 0xCE, 0x01, 0x2F, 0x2A, 0x54, 0x43, 0x37, 0x19, 0xB1, 0x00, 0xCE, 0x00, 0xEE, 0x00, 0xCE, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x81, 0x00, 0x6C, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x8D, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x8C, 0x09, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x0B, 0x00, 0x8D, 0x81, 0x00, 0x8C, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0xAD, 0x03, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x85, 0x00, 0xCE, 0x09, 0x4F, 0x2A, 0x54, 0x4B, 0x57, 0x22, 0x13, 0x00, 0xCE, 0x03, 0x00, 0x8D, 0x03, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x85, 0x00, 0x4C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x83, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x13, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, + 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x84, 0x00, 0x8C, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x89, 0x00, 0xAD, 0x01, 0x2F, 0x22, 0x12, 0x3A, 0xF6, 0x32, 0xB5, 0x19, 0xD2, 0x09, 0x0E, 0x00, 0x8D, 0x00, 0x6C, 0x00, 0x6D, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x03, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0xAD, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x8C, 0x04, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x82, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x82, 0x00, 0x6C, 0x00, 0x6D, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x83, 0x00, 0x6D, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x19, 0x91, 0x01, 0x3A, 0xB5, 0x81, 0x19, 0x90, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x06, 0x00, 0x8D, 0x03, 0x00, 0x6D, 0x06, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x03, 0x00, 0x6D, 0x81, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x08, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x07, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x81, 0x00, 0x8D, + 0x00, 0xAE, 0x09, 0x00, 0x8D, 0x84, 0x00, 0xAD, 0x42, 0xD6, 0x3A, 0xD5, 0x09, 0x0F, 0x00, 0xAD, 0x0A, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x09, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x09, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x09, 0x00, 0x8D, 0x86, 0x00, 0xAE, 0x00, 0xAD, 0x11, 0x91, 0x43, 0x16, 0x11, 0x70, 0x00, 0xAD, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x0E, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x08, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x08, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x06, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x05, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x81, 0x00, 0xAE, 0x00, 0x8E, 0x01, 0x00, 0x8D, 0x85, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0xEE, 0x43, 0x17, 0x19, 0xB1, 0x00, 0xAE, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x6D, 0x07, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x06, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x0E, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAE, 0x06, + 0x00, 0x8D, 0x02, 0x00, 0xAD, 0x83, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x83, 0x00, 0x6C, 0x22, 0x13, 0x19, 0xF2, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x11, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x0B, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x08, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x0A, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x08, 0x00, 0x8D, 0x81, 0x00, 0xCE, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x89, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0xEF, 0x19, 0xF2, 0x43, 0x37, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x6D, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0x6D, 0x26, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x10, 0x00, 0x8D, 0x84, 0x00, 0xCE, 0x11, 0xB1, 0x3B, 0x17, 0x09, 0x50, 0x00, 0xAE, 0x01, 0x00, 0x8E, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x8C, 0x08, 0x4D, 0x10, 0x4D, 0x20, 0x4D, 0x28, 0x2C, 0x82, 0x96, 0x8A, 0x55, 0x92, 0x55, 0x92, 0x96, 0x61, 0x50, 0x20, 0x0B, 0x18, 0x4C, 0x08, 0x2C, 0x08, 0x4C, 0x01, 0x00, 0x4C, 0x0B, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x13, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x01, 0x00, 0x8D, + 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x84, 0x00, 0xCE, 0x01, 0x2F, 0x4B, 0x57, 0x32, 0x74, 0x00, 0xCE, 0x01, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x0A, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x05, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x10, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x02, 0x00, 0xAD, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x6D, 0x81, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xCE, 0x86, 0x11, 0x91, 0x32, 0x95, 0x32, 0xB5, 0x01, 0x4F, 0x00, 0xEE, 0x00, 0xAE, 0x00, 0xAD, 0x03, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x82, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x82, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x6C, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x09, 0x00, 0x8D, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x8D, 0x86, 0x00, 0xAD, 0x11, 0x90, 0x42, + 0xF6, 0x4B, 0x57, 0x21, 0xF2, 0x00, 0xEE, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x05, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x0C, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x4C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x87, 0x00, 0x8C, 0x00, 0xCD, 0x22, 0x12, 0x3A, 0xD5, 0x32, 0xB4, 0x11, 0xB1, 0x01, 0x0E, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x06, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x84, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x07, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x8D, 0x04, 0x00, 0x6D, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x8D, 0x00, 0x6C, 0x00, 0x6D, 0x01, 0x00, 0x8C, 0x08, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x85, 0x08, 0xEE, 0x32, 0x53, 0x42, 0xF6, 0x2A, 0x33, 0x00, 0xEE, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8D, + 0x01, 0x00, 0x6D, 0x07, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x0B, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x05, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x07, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x0E, 0x00, 0x8D, 0x85, 0x00, 0xAD, 0x00, 0xCE, 0x53, 0x58, 0x3A, 0x95, 0x00, 0xEE, 0x00, 0xAD, 0x09, 0x00, 0x8D, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x0B, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x08, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x08, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x83, 0x00, 0x6C, 0x00, 0x6D, 0x00, 0xAD, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x85, 0x09, 0x2F, 0x4B, 0x37, 0x22, 0x12, 0x00, 0xCE, 0x00, 0xAD, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x11, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x0A, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x0D, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x02, 0x00, 0x8D, 0x88, 0x00, 0x8E, + 0x00, 0x8D, 0x09, 0x70, 0x4B, 0x58, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8E, 0x00, 0x8D, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x0A, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x22, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x0A, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x04, 0x00, 0x6D, 0x82, 0x00, 0x4C, 0x22, 0x12, 0x19, 0xD2, 0x35, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x0B, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x10, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x85, 0x00, 0xCE, 0x01, 0x50, 0x3A, 0xF6, 0x19, 0xD2, 0x00, 0x8D, 0x00, 0x6D, 0x16, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x0A, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x13, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x6D, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x0D, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x05, 0x00, 0x8D, 0x86, 0x00, 0xAE, 0x00, 0xEE, 0x19, 0xF2, 0x32, 0xB5, 0x00, 0xEE, 0x00, 0xAE, 0x00, 0x8E, 0x02, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x09, 0x00, 0x8D, 0x8F, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6D, 0x00, 0x4C, 0x08, 0x4D, 0x10, 0x4D, 0x18, 0x4D, 0x20, 0x0C, 0x7A, 0x75, 0x92, 0xB6, 0x8A, 0x54, 0x92, 0xD6, 0x38, 0x6D, 0x18, 0x0B, 0x10, 0x4C, 0x08, 0x2C, 0x01, 0x00, 0x4C, 0x81, 0x00, 0x6C, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x06, 0x00, 0x8D, 0x84, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x0E, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x82, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x6D, + 0x04, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x8B, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0xCD, 0x01, 0x0E, 0x42, 0xF6, 0x3A, 0xD5, 0x00, 0xCE, 0x00, 0xAE, 0x00, 0x8D, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x06, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x8D, 0x03, 0x00, 0x8C, 0x07, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x0A, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x82, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x6C, 0x05, 0x00, 0x8C, 0x82, 0x00, 0x8D, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x6D, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x85, 0x01, 0x0E, 0x19, 0xF2, 0x4B, 0x78, 0x19, 0xF2, 0x00, 0xEE, 0x00, 0xCE, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x84, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, + 0xAD, 0x06, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x8A, 0x00, 0xCD, 0x11, 0x70, 0x32, 0xB5, 0x4B, 0x78, 0x2A, 0x13, 0x00, 0xAD, 0x00, 0x8C, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6D, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x84, 0x00, 0x8D, 0x00, 0x6C, 0x00, 0x6D, 0x00, 0x6C, 0x00, 0x8D, 0x06, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x0D, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x85, 0x00, 0xAD, 0x21, 0xB1, 0x3A, 0xB5, 0x32, 0x94, 0x19, 0xB1, 0x00, 0xCD, 0x01, 0x00, 0x8C, 0x0D, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x02, 0x00, 0x8D, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x0C, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x84, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x87, 0x00, 0x6C, 0x00, 0x8C, 0x00, + 0xAD, 0x19, 0x91, 0x3A, 0x94, 0x32, 0x74, 0x11, 0x4F, 0x00, 0xAD, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x4D, 0x02, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x82, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x05, 0x00, 0x8D, 0x82, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x82, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8C, 0x83, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x0E, 0x00, 0x8D, 0x82, 0x09, 0x0F, 0x53, 0x78, 0x2A, 0x33, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x04, 0x00, 0x8D, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x83, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x07, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x83, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x6C, 0x0D, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x0B, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x02, 0x00, 0x6C, 0x83, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6D, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x86, 0x00, 0xEE, 0x3A, 0xD5, 0x32, 0x94, 0x00, 0xCE, 0x00, 0xAD, 0x00, + 0x8D, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x41, 0x00, 0x8D, 0x82, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x82, 0x00, 0x6D, 0x00, 0x6C, 0x00, 0xAD, 0x06, 0x00, 0x8D, 0x01, 0x2A, 0x54, 0x83, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAE, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x0B, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x26, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x83, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0x8D, 0x03, 0x00, 0x6C, 0x82, 0x22, 0x33, 0x19, 0xD2, 0x00, 0xAD, 0x14, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x17, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x17, 0x00, 0x8D, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x83, 0x00, 0xCE, 0x22, 0x33, 0x32, 0xB5, 0x00, 0xAE, 0x0C, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x0A, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x1E, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x6D, 0x10, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x06, 0x00, 0x8D, 0x01, 0x00, 0xAD, 0x86, 0x00, 0xEE, 0x32, 0x94, 0x32, 0xB5, 0x00, 0xCE, 0x00, 0x8D, 0x00, 0x6D, 0x00, 0x8D, 0x05, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x84, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x6C, 0x01, 0x08, 0x6D, 0x8C, + 0x10, 0x6D, 0x18, 0x4D, 0x20, 0x0C, 0x6A, 0x14, 0x9B, 0x37, 0x8A, 0xB6, 0x7A, 0x75, 0x20, 0x0B, 0x18, 0x2B, 0x08, 0x4C, 0x08, 0x6C, 0x00, 0x6C, 0x00, 0x6D, 0x02, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x81, 0x00, 0x8D, 0x00, 0x8C, 0x0A, 0x00, 0x8D, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x8D, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x04, 0x00, 0x6C, 0x82, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x81, 0x00, 0xAD, 0x00, 0xEE, 0x01, 0x42, 0xF6, 0x81, 0x01, 0x0E, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x04, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x84, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x05, 0x00, 0x8C, 0x81, 0x00, 0x8D, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x0B, 0x00, 0x8C, 0x07, 0x00, 0x6C, 0x84, 0x00, 0x6D, 0x00, 0x6C, 0x00, 0x6D, 0x00, 0x6C, 0x00, 0x8D, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x82, 0x00, 0xAD, 0x00, 0xCD, 0x09, 0x4F, 0x01, 0x43, 0x16, 0x81, 0x11, 0x70, 0x00, 0xAD, 0x07, 0x00, 0x8D, 0x81, 0x00, 0x8C, 0x00, 0x8D, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x03, 0x00, 0x6C, + 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x18, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x07, 0x00, 0x6C, 0x80, 0x00, 0x4C, 0x04, 0x00, 0x6C, 0x88, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0xAD, 0x11, 0x70, 0x42, 0xF5, 0x3A, 0xF5, 0x19, 0xD1, 0x00, 0xEE, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x82, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x86, 0x00, 0x8C, 0x21, 0xD1, 0x42, 0xF6, 0x3A, 0x95, 0x19, 0xB1, 0x00, 0xEE, 0x00, 0x8D, 0x08, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, + 0x00, 0x8D, 0x0C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x81, 0x00, 0x8D, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x85, 0x00, 0x8C, 0x11, 0x4F, 0x32, 0x53, 0x42, 0xD5, 0x21, 0xF2, 0x00, 0xEE, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x6C, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x87, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x05, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x81, 0x00, 0x8D, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6D, 0x06, 0x00, 0x8D, 0x83, 0x11, 0x4F, 0x53, 0x78, 0x21, 0xD2, 0x00, 0xAD, 0x03, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x04, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x04, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x0E, 0x00, 0x8D, 0x83, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8C, 0x07, 0x00, 0x8D, 0x83, 0x00, + 0x6C, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x6D, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x87, 0x00, 0xCE, 0x2A, 0x33, 0x3A, 0xD5, 0x09, 0x2F, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x6D, 0x00, 0x6C, 0x02, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x07, 0x00, 0x8D, 0x81, 0x00, 0x8C, 0x00, 0xAD, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x0C, 0x00, 0x8D, 0x02, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x81, 0x00, 0x8C, 0x00, 0x8D, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x8D, 0x08, 0x00, 0x8C, 0x81, 0x00, 0x8D, 0x00, 0x8C, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x01, 0x00, 0xAE, 0x81, 0x4B, 0x38, 0x09, 0x50, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x07, 0x00, 0x8C, 0x1B, 0x00, 0x8D, 0x82, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x15, 0x00, 0x8D, 0x03, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8C, 0x83, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x6D, 0x02, 0x00, 0x6C, 0x82, 0x00, 0x4C, 0x22, 0x12, 0x19, 0xD1, 0x01, 0x00, 0xAD, 0x0B, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x0D, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x07, 0x00, 0x8D, 0x01, + 0x00, 0x8C, 0x81, 0x00, 0x8D, 0x00, 0x8C, 0x09, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x09, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x8D, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x84, 0x00, 0xAE, 0x09, 0x50, 0x3A, 0xD6, 0x01, 0x2F, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x04, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x07, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x19, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x8D, 0x00, 0x6C, 0x02, 0x00, 0x8D, 0x81, 0x00, 0x6C, 0x00, 0x8D, 0x06, 0x00, 0x8C, 0x81, 0x00, 0x8D, 0x00, 0x8C, 0x05, 0x00, 0x8D, 0x84, 0x00, 0xAD, 0x00, 0xCE, 0x01, 0x2F, 0x32, 0xB5, 0x22, 0x12, 0x07, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x83, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x8D, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0x4C, 0x08, 0x6C, 0x08, 0x4C, 0x10, 0x4C, 0x18, 0x0C, 0x51, 0x91, 0xA3, 0xDA, 0x93, 0x17, 0x51, 0x70, 0x18, 0x0B, 0x10, 0x2B, 0x08, 0x4C, 0x01, 0x00, 0x4C, 0x03, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x06, 0x00, 0x8D, 0x03, 0x00, 0x8C, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x84, 0x00, + 0xAD, 0x00, 0xEE, 0x2A, 0x53, 0x43, 0x16, 0x11, 0x50, 0x01, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x09, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x86, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x6C, 0x84, 0x00, 0x8D, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x84, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x0B, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0xAD, 0x84, 0x00, 0xEE, 0x19, 0xD1, 0x43, 0x16, 0x22, 0x12, 0x00, 0xCE, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x16, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x80, 0x00, 0x4C, 0x0C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x87, 0x00, 0xAC, 0x00, 0xCD, 0x11, 0x8F, 0x32, 0x94, 0x43, 0x16, 0x21, 0xF2, 0x00, 0xAD, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x05, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x0D, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x8C, 0x86, 0x00, 0x6B, 0x00, 0x6C, + 0x00, 0x8B, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x83, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x4B, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x4C, 0x09, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x07, 0x00, 0x6C, 0x86, 0x00, 0x8D, 0x11, 0x70, 0x3A, 0xB5, 0x3A, 0xD5, 0x19, 0xB1, 0x00, 0xCD, 0x00, 0x8C, 0x0D, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x84, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x06, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x83, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x83, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x88, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0xEE, 0x21, 0xD1, 0x32, 0x53, 0x32, 0x73, 0x11, 0x90, 0x00, 0xCD, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x0D, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x12, 0x00, 0x6C, 0x81, + 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x8D, 0x00, 0xAD, 0x01, 0x00, 0x6D, 0x04, 0x00, 0x6C, 0x03, 0x00, 0x8D, 0x82, 0x19, 0xD1, 0x4B, 0x57, 0x11, 0x90, 0x03, 0x00, 0x8D, 0x82, 0x00, 0x6D, 0x00, 0x6C, 0x00, 0x6D, 0x05, 0x00, 0x6C, 0x07, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8D, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x82, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x05, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x87, 0x00, 0x4C, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0xCE, 0x11, 0x90, 0x3A, 0xB5, 0x09, 0x2F, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x82, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x02, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x83, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x81, 0x00, 0x6C, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x02, 0x00, 0x8C, 0x05, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x03, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x12, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, + 0x81, 0x00, 0xAD, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x85, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0xAE, 0x19, 0xD2, 0x3A, 0xD6, 0x00, 0xCE, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x86, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x03, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8D, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x05, 0x00, 0x8D, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0xAD, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x8D, 0x06, 0x00, 0x8C, 0x80, 0x00, 0xAD, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x8D, 0x86, 0x00, 0x6C, 0x00, 0x4C, 0x00, 0x6C, 0x00, 0x4C, 0x2A, 0x13, 0x19, 0xB1, 0x00, 0xAD, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x8D, 0x83, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x05, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x81, 0x00, 0x8C, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x84, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x05, 0x00, 0x8C, 0x80, 0x00, 0x8D, 0x05, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x02, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x04, 0x00, 0x8C, + 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x03, 0x00, 0x8C, 0x85, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x86, 0x00, 0x6C, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0xAD, 0x22, 0x33, 0x22, 0x13, 0x00, 0x6D, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x83, 0x00, 0x6D, 0x00, 0x8D, 0x00, 0x6C, 0x00, 0x8D, 0x04, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x10, 0x00, 0x8D, 0x03, 0x00, 0x6D, 0x05, 0x00, 0x8D, 0x83, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x04, 0x00, 0x6D, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x8D, 0x04, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x87, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0xCE, 0x11, 0x70, 0x43, 0x16, 0x19, 0x91, 0x00, 0x8D, 0x04, 0x00, 0x6D, 0x81, 0x00, 0x8D, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x03, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x89, 0x00, 0x4C, 0x08, 0x4C, 0x08, 0x2C, 0x10, 0x2C, 0x39, 0x0F, 0xA3, 0xFA, 0x83, 0x16, 0x18, 0x0A, 0x10, 0x0A, 0x08, 0x4B, 0x01, 0x08, 0x6C, 0x80, 0x00, 0x4C, 0x07, 0x00, 0x6C, 0x06, 0x00, 0x8D, 0x03, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x06, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x87, 0x00, 0x8D, 0x00, 0xAD, + 0x00, 0xCD, 0x2A, 0x13, 0x42, 0xF6, 0x11, 0x91, 0x00, 0xCE, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x02, 0x00, 0x6C, 0x05, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x0E, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x06, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0xAD, 0x84, 0x01, 0x0E, 0x32, 0x94, 0x42, 0xF6, 0x11, 0x70, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x05, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x4C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x4C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x89, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x4B, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0xAC, 0x86, 0x00, 0xCD, 0x09, 0x4F, 0x32, 0x94, 0x32, 0xB4, 0x11, 0x90, 0x00, 0xAD, 0x00, 0x8C, 0x0C, 0x00, 0x6C, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x0A, 0x00, 0x6B, 0x01, 0x00, + 0x6C, 0x09, 0x00, 0x6B, 0x81, 0x00, 0x6C, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x4B, 0x08, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x06, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x85, 0x11, 0x6F, 0x4A, 0xF6, 0x42, 0xF6, 0x2A, 0x12, 0x08, 0xEE, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x88, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x0F, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x0D, 0x00, 0x6C, 0x87, 0x00, 0x8C, 0x11, 0x2F, 0x2A, 0x33, 0x32, 0x94, 0x2A, 0x32, 0x00, 0xED, 0x00, 0xAC, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x0E, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x13, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x17, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x8D, 0x83, 0x2A, 0x33, 0x5B, 0xD9, 0x11, 0x6F, 0x00, 0xAD, + 0x02, 0x00, 0x8D, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x05, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x13, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x04, 0x00, 0x6C, 0x85, 0x00, 0x6D, 0x00, 0xAD, 0x09, 0x2F, 0x3A, 0xD5, 0x11, 0x90, 0x00, 0xAD, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x6C, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x03, 0x00, 0x6D, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x82, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x83, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x86, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0xCE, 0x42, 0xF6, 0x21, 0xF2, 0x00, 0xAD, 0x01, 0x00, + 0x8D, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x82, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x8D, 0x03, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x05, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x4C, 0x81, 0x22, 0x12, 0x19, 0xB1, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x03, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x05, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x83, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x8D, 0x09, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x0B, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x6D, 0x83, 0x00, 0x8D, 0x11, + 0x90, 0x32, 0x95, 0x00, 0xCE, 0x03, 0x00, 0x8D, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x04, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x09, 0x00, 0x8C, 0x80, 0x00, 0x6D, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x8D, 0x04, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x6D, 0x04, 0x00, 0x6C, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x03, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x86, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0xCE, 0x19, 0xB1, 0x42, 0xF6, 0x09, 0x30, 0x06, 0x00, 0x6D, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x01, 0x08, 0x4C, 0x87, 0x08, 0x2B, 0x20, 0x8D, 0x9C, 0x1B, 0x62, 0x53, 0x08, 0x0A, 0x08, 0x2A, 0x08, 0x4B, 0x00, 0x6C, 0x01, 0x00, 0x4C, 0x06, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x8D, 0x00, 0x8C, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x06, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0xAC, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x86, 0x00, 0xAD, 0x11, 0x91, 0x42, 0xD6, 0x21, 0xF2, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x6D, + 0x03, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x0C, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x07, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x07, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x86, 0x00, 0xAD, 0x00, 0xCD, 0x19, 0xD1, 0x42, 0xF6, 0x2A, 0x12, 0x00, 0xCE, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x0C, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x8C, 0x00, 0x8B, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x82, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x4B, 0x04, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x86, 0x00, 0xAC, 0x00, 0xED, 0x11, 0x90, 0x32, 0x94, 0x3A, 0xB5, 0x11, 0x4F, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x06, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x06, 0x00, 0x4B, 0x18, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x6C, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x0D, 0x00, + 0x6B, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x6B, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x86, 0x09, 0x0E, 0x32, 0x74, 0x42, 0xF6, 0x32, 0x33, 0x09, 0x0E, 0x00, 0x6C, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x82, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x83, 0x00, 0x6C, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x0A, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x83, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6C, 0x86, 0x00, 0x8C, 0x00, 0xCD, 0x19, 0xB1, 0x32, 0x53, 0x2A, 0x32, 0x19, 0x90, 0x00, 0xAC, 0x05, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x10, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x4C, 0x0A, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x4C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x83, 0x00, 0xAD, + 0x32, 0x53, 0x53, 0x77, 0x09, 0x2E, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x8D, 0x07, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x05, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6B, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x84, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0xAD, 0x00, 0x8D, 0x04, 0x00, 0x6C, 0x87, 0x00, 0xAD, 0x09, 0x0E, 0x32, 0x94, 0x2A, 0x33, 0x00, 0xCE, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x81, 0x00, 0x8D, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x0B, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x0E, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x84, 0x00, 0xAD, 0x00, 0xCE, 0x01, 0x2F, 0x43, 0x16, 0x00, 0xEE, 0x02, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x81, 0x00, 0x8D, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x01, 0x00, 0x8C, + 0x18, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x0A, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8D, 0x81, 0x00, 0x6C, 0x00, 0x4C, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x4C, 0x2A, 0x12, 0x19, 0xD1, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x83, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x0C, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x85, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x85, 0x00, 0x8D, 0x00, 0xCE, 0x32, 0x94, 0x11, 0x91, 0x00, 0xAD, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x0A, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x07, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x05, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x81, 0x00, 0xAD, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, + 0x85, 0x00, 0xAD, 0x21, 0xF2, 0x42, 0xF6, 0x00, 0xEE, 0x00, 0xAD, 0x00, 0x8D, 0x02, 0x00, 0x6D, 0x80, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x89, 0x00, 0x4C, 0x00, 0x6C, 0x00, 0x4B, 0x08, 0x2B, 0x08, 0x0A, 0x73, 0x16, 0x28, 0xEE, 0x08, 0x0A, 0x08, 0x2B, 0x08, 0x6C, 0x01, 0x00, 0x6C, 0x83, 0x00, 0x4C, 0x00, 0x6C, 0x00, 0x4C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x07, 0x00, 0x6C, 0x80, 0x00, 0x8D, 0x03, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x05, 0x00, 0x8C, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x6B, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x07, 0x00, 0x8C, 0x85, 0x00, 0xAD, 0x11, 0x70, 0x3A, 0xD5, 0x22, 0x13, 0x00, 0xCD, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x4C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x08, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x14, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6B, 0x03, 0x00, 0x6C, 0x81, 0x00, 0x4B, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x8B, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x85, 0x00, 0xAD, 0x09, 0x2F, 0x3A, 0xB5, + 0x3A, 0xD5, 0x11, 0x70, 0x00, 0xAD, 0x0D, 0x00, 0x6C, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x03, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x05, 0x00, 0x6B, 0x84, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x8B, 0x06, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x81, 0x00, 0x6B, 0x00, 0x8C, 0x02, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x82, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x84, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x8C, 0x01, 0x00, 0xAC, 0x85, 0x00, 0xED, 0x21, 0xF1, 0x43, 0x36, 0x32, 0x94, 0x09, 0x2E, 0x00, 0xAD, 0x05, 0x00, 0x6C, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x10, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6C, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x0F, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x84, 0x08, 0xED, 0x32, 0x53, 0x4A, 0xF6, 0x32, 0x53, 0x11, 0x4F, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x84, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x15, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x6B, 0x84, 0x00, 0x8C, 0x00, + 0x6C, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x07, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x89, 0x00, 0x6C, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x8C, 0x11, 0x4F, 0x2A, 0x32, 0x3A, 0x94, 0x21, 0xF2, 0x09, 0x0E, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x6C, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x0A, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x18, 0x00, 0x6C, 0x83, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x82, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x4B, 0x00, 0x6C, 0x00, 0x4B, 0x03, 0x00, 0x6C, 0x81, 0x00, 0x4C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x85, 0x00, 0xAC, 0x32, 0x94, 0x43, 0x16, 0x01, 0x0E, 0x00, 0xAC, 0x00, 0x8C, 0x0C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x09, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x83, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x07, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x8B, 0x00, 0x6B, 0x0A, 0x00, 0x6C, 0x88, 0x00, 0xAD, 0x00, 0xCD, 0x22, 0x12, 0x3A, 0xD5, 0x00, + 0xEE, 0x00, 0xAD, 0x00, 0x8D, 0x00, 0x6C, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x0C, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x12, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x0C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x86, 0x00, 0xAD, 0x00, 0xCD, 0x19, 0xF2, 0x32, 0x74, 0x00, 0x8D, 0x00, 0xAD, 0x00, 0x6D, 0x09, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x16, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x10, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x01, 0x00, 0x4C, 0x81, 0x22, 0x12, 0x19, 0xB1, 0x01, 0x00, 0x8D, 0x80, 0x00, 0x8C, 0x09, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x0C, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x10, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x0A, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x84, 0x00, 0xAD, 0x21, 0xF2, 0x3A, 0xD5, 0x00, 0xCD, 0x00, 0x8D, 0x10, 0x00, 0x6C, 0x84, + 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x10, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x8D, 0x83, 0x00, 0xEE, 0x32, 0x54, 0x32, 0x95, 0x00, 0xCE, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x6D, 0x07, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x03, 0x00, 0x4B, 0x86, 0x00, 0x0A, 0x10, 0x8C, 0x08, 0x2B, 0x00, 0x0A, 0x08, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x4C, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x0A, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x06, 0x00, 0x6B, 0x86, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x4C, 0x00, 0x4B, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x89, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0xAD, 0x09, 0x4F, 0x32, 0x95, 0x32, 0x74, 0x00, 0xEE, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x4C, 0x03, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x07, 0x00, 0x6C, 0x81, 0x00, 0x6B, 0x00, 0x6C, 0x07, 0x00, 0x6B, 0x03, + 0x00, 0x6C, 0x0B, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x83, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x06, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x86, 0x00, 0xAC, 0x00, 0xCD, 0x19, 0xB1, 0x3A, 0xB5, 0x32, 0x53, 0x08, 0xEE, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x09, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x0A, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x0E, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x88, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0xAC, 0x00, 0xCC, 0x01, 0x0D, 0x22, 0x12, 0x43, 0x36, 0x32, 0x73, 0x09, 0x0E, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x08, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x0E, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x8A, 0x08, 0xED, 0x2A, 0x12, 0x42, 0xF5, 0x32, 0x73, 0x11, 0x2E, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x07, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x04, + 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x12, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x85, 0x00, 0xCD, 0x21, 0xD1, 0x32, 0x53, 0x32, 0x73, 0x19, 0xB0, 0x00, 0xAC, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x8C, 0x10, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x04, 0x00, 0x6B, 0x08, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x07, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x05, 0x00, 0x6B, 0x09, 0x00, 0x6C, 0x83, 0x00, 0x8C, 0x00, 0xCD, 0x3A, 0xD5, 0x32, 0x94, 0x01, 0x00, 0xCD, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x6C, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x6B, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x81, + 0x00, 0x6B, 0x00, 0x8C, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x87, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x8B, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0x8C, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x01, 0x00, 0x4C, 0x87, 0x00, 0x6C, 0x00, 0xAD, 0x00, 0xCD, 0x19, 0xB0, 0x4B, 0x36, 0x09, 0x4F, 0x00, 0xAD, 0x00, 0x8D, 0x01, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x09, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x06, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x0A, 0x00, 0x6C, 0x83, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x01, 0x00, 0xAD, 0x82, 0x43, 0x16, 0x11, 0x90, 0x00, 0x8D, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x06, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x85, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x03, + 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x08, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x4C, 0x82, 0x00, 0x2B, 0x2A, 0x32, 0x19, 0xD1, 0x01, 0x00, 0x8D, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x4C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x83, 0x00, 0xAD, 0x09, 0x2F, 0x43, 0x16, 0x00, 0xEE, 0x06, 0x00, 0x6C, 0x82, 0x00, 0x4B, 0x00, 0x6C, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x07, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x03, 0x00, 0x6C, + 0x80, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x85, 0x00, 0xAD, 0x01, 0x0E, 0x2A, 0x54, 0x19, 0xD2, 0x00, 0x6D, 0x00, 0x8D, 0x07, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x6B, 0x06, 0x00, 0x4B, 0x04, 0x00, 0x6C, 0x03, 0x00, 0x6B, 0x08, 0x00, 0x6C, 0x86, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x4B, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x81, 0x00, 0x6B, 0x00, 0x6C, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x0A, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x86, 0x00, 0x8C, 0x00, 0xAD, 0x09, 0x4F, 0x3A, 0xB5, 0x3A, 0xD5, 0x09, 0x2F, 0x00, 0xAD, 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x11, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x6C, 0x03, 0x00, 0x4B, 0x11, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x8B, 0x00, 0x6B, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x6C, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x85, 0x09, 0x0E, 0x32, 0x94, 0x3A, 0xD5, 0x19, 0x90, 0x00, 0xCD, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, + 0x01, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x0F, 0x00, 0x6B, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x09, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x0B, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x8C, 0x01, 0x00, 0xAC, 0x87, 0x09, 0x0E, 0x32, 0x73, 0x4B, 0x36, 0x32, 0x53, 0x09, 0x0E, 0x00, 0xAC, 0x00, 0x6C, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x0C, 0x00, 0x4B, 0x0E, 0x00, 0x6B, 0x88, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0xAD, 0x32, 0x53, 0x53, 0x36, 0x32, 0x53, 0x11, 0x4F, 0x00, 0xAC, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6B, 0x03, 0x00, 0x8B, 0x13, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x09, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x6C, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x87, 0x00, 0x6C, 0x00, 0x8C, 0x09, 0x2E, 0x2A, 0x32, 0x32, 0x93, 0x21, 0xF1, + 0x00, 0xCD, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x07, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x84, 0x00, 0xAD, 0x42, 0xF5, 0x2A, 0x53, 0x00, 0xED, 0x00, 0xAC, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x83, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8C, 0x05, 0x00, 0x6B, 0x01, 0x00, 0x8C, 0x83, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0x6B, 0x0D, 0x00, 0x6C, 0x84, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6B, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x87, 0x00, 0x4C, 0x00, 0x8C, 0x00, 0xEE, 0x09, 0x2E, 0x42, 0xF6, 0x19, + 0xD1, 0x00, 0xCD, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x04, 0x00, 0x6B, 0x05, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x06, 0x00, 0x6C, 0x05, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x07, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x08, 0x00, 0x6C, 0x83, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x05, 0x00, 0x6B, 0x05, 0x00, 0x6C, 0x86, 0x00, 0x8D, 0x00, 0xAD, 0x09, 0x2F, 0x43, 0x16, 0x00, 0xEE, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x4C, 0x07, 0x00, 0x6C, 0x81, 0x00, 0xAC, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6B, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x05, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x04, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x03, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x81, 0x00, 0x6B, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x8B, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x85, 0x00, 0x4C, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x2B, 0x22, 0x12, 0x19, 0xB1, 0x01, 0x00, 0x8D, 0x01, 0x00, 0x8C, 0x86, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x06, 0x00, + 0x8C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x0E, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x81, 0x00, 0x6B, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x82, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x86, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x86, 0x00, 0x8C, 0x00, 0xCD, 0x2A, 0x94, 0x11, 0xB0, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x4C, 0x04, 0x00, 0x6C, 0x81, 0x00, 0x6B, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x07, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x6C, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x87, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0xAD, 0x09, 0x50, 0x2A, 0x74, 0x11, 0x70, 0x00, 0xAD, 0x00, 0x8D, 0x06, 0x00, 0x6C, 0x08, 0x00, + 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x8C, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x08, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x84, 0x00, 0xAD, 0x09, 0x0F, 0x2A, 0x53, 0x42, 0xF6, 0x09, 0x2F, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x1C, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x13, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x16, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x85, 0x00, 0x8C, 0x00, 0xCD, 0x19, 0xB0, 0x3A, 0xB4, 0x32, 0x53, 0x09, 0x2F, 0x05, 0x00, 0x6C, 0x86, 0x00, 0x4B, 0x00, 0x6C, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x13, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x14, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x83, 0x00, 0x8B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x85, 0x00, 0xCC, 0x09, 0x2E, 0x2A, 0x32, 0x42, 0xD5, 0x2A, 0x32, 0x00, 0xED, 0x01, 0x00, 0x8C, 0x81, 0x00, 0x6C, 0x00, 0x6B, + 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x0B, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x8C, 0x85, 0x00, 0xED, 0x22, 0x12, 0x42, 0xF6, 0x32, 0x53, 0x09, 0x0E, 0x00, 0x8C, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x07, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x13, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x85, 0x00, 0x8C, 0x00, 0xCD, 0x19, 0xB0, 0x3A, 0xD4, 0x32, 0x53, 0x11, 0x4E, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x24, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x0C, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x86, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x6C, 0x00, 0x8C, 0x09, 0x2E, 0x42, 0xF5, 0x22, + 0x12, 0x01, 0x00, 0xCD, 0x80, 0x00, 0x6C, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x12, 0x00, 0x6B, 0x82, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x6C, 0x05, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x84, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6C, 0x0D, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x04, 0x00, 0x8B, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6C, 0x00, 0x4C, 0x01, 0x00, 0x6C, 0x86, 0x00, 0xAD, 0x00, 0xCD, 0x3A, 0xB4, 0x2A, 0x32, 0x00, 0xAC, 0x00, 0x6C, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x6B, 0x00, 0x8B, 0x05, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x09, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x82, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x6C, 0x04, 0x00, 0x6B, 0x82, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x6C, 0x01, 0x00, 0x4C, 0x86, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0xCD, 0x32, 0x94, 0x19, 0xD1, 0x00, 0xAD, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x6C, + 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x0D, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x8C, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x85, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x83, 0x2A, 0x12, 0x19, 0xB1, 0x00, 0x8D, 0x00, 0x8C, 0x09, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x81, 0x00, 0x6B, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x0A, 0x00, 0x6C, 0x81, 0x00, 0x6B, 0x00, 0x6C, 0x07, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x83, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x82, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x08, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x6C, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x85, 0x00, 0x4B, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0xCD, 0x19, 0xF2, 0x32, 0xD5, 0x05, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6B, 0x02, 0x00, 0x6C, + 0x80, 0x00, 0x4B, 0x05, 0x00, 0x6C, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x8C, 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x6B, 0x83, 0x00, 0x4B, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x02, 0x00, 0x8C, 0x81, 0x00, 0x6B, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x86, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0xCD, 0x11, 0x90, 0x3A, 0xF6, 0x01, 0x0E, 0x00, 0x8D, 0x03, 0x00, 0x6C, 0x81, 0x00, 0x4B, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x04, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x23, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x6C, 0x87, 0x00, 0x4C, 0x00, 0x6C, 0x00, 0x8D, 0x00, 0xCD, 0x21, 0xF2, 0x3A, 0xF5, 0x11, 0x6F, 0x00, 0xAD, 0x01, 0x00, 0x6C, 0x05, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x0B, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x03, 0x00, + 0x6B, 0x80, 0x00, 0x8B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x0B, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x87, 0x00, 0x6B, 0x00, 0x8C, 0x09, 0x0E, 0x2A, 0x33, 0x3A, 0xB5, 0x21, 0xD1, 0x00, 0xCD, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x4B, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x04, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x06, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x8B, 0x12, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x88, 0x00, 0x8C, 0x00, 0xAC, 0x11, 0x4E, 0x32, 0x73, 0x3A, 0xB4, 0x21, 0xF1, 0x01, 0x0D, 0x00, 0xAC, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x06, 0x00, 0x4B, 0x84, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x06, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x88, 0x00, 0x6C, 0x00, 0x8C, 0x08, 0xEE, 0x2A, 0x12, 0x42, 0xF6, 0x32, 0x94, 0x11, 0x4F, 0x00, 0xAD, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x8B, + 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x07, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x8C, 0x84, 0x11, 0x6F, 0x32, 0x53, 0x3A, 0xB4, 0x19, 0xB0, 0x00, 0xCC, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x86, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x24, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x06, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x6C, 0x00, 0x4B, 0x02, 0x00, 0x6C, 0x86, 0x00, 0x8C, 0x11, 0x4F, 0x43, 0x16, 0x19, 0xB0, 0x00, 0xAD, 0x00, 0xAC, 0x00, 0x8C, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x15, 0x00, 0x6B, 0x06, 0x00, 0x4B, 0x83, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x11, 0x00, 0x6B, 0x80, + 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x03, 0x00, 0x8B, 0x06, 0x00, 0x6B, 0x81, 0x00, 0x8B, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x84, 0x00, 0xAD, 0x2A, 0x32, 0x3A, 0x94, 0x00, 0xED, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x0E, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x04, 0x00, 0x6B, 0x09, 0x00, 0x6C, 0x0B, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x0E, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4C, 0x89, 0x00, 0x6D, 0x00, 0x6C, 0x00, 0xEE, 0x3A, 0xF5, 0x09, 0x2F, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x1F, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x1D, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x8B, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x81, 0x2A, 0x12, 0x19, 0xB0, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x04, 0x00, 0x6B, 0x81, 0x00, 0x6C, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x03, 0x00, 0x6B, 0x03, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x07, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x04, + 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x04, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x84, 0x00, 0xAD, 0x01, 0x2F, 0x43, 0x16, 0x00, 0xEE, 0x00, 0x8C, 0x05, 0x00, 0x6C, 0x81, 0x00, 0x6B, 0x00, 0x8C, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x6C, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x04, 0x00, 0x6B, 0x03, 0x00, 0x6C, 0x81, 0x00, 0x4B, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x84, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x22, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x03, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x86, 0x00, 0x6B, 0x00, 0xAD, 0x01, 0x0E, 0x22, 0x12, 0x32, 0xB5, 0x00, 0x8D, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x4B, 0x0E, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x13, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x0F, 0x00, 0x6B, 0x81, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x85, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0xCD, 0x19, 0xB1, 0x3A, 0xD5, 0x19, 0xB1, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x07, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x8B, 0x0E, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x0D, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4B, + 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x85, 0x00, 0x8C, 0x00, 0xAD, 0x11, 0x6F, 0x2A, 0x53, 0x32, 0x53, 0x09, 0x2F, 0x03, 0x00, 0x6C, 0x02, 0x00, 0x4B, 0x0C, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x08, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x12, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x86, 0x00, 0x8B, 0x00, 0xCC, 0x09, 0x4E, 0x2A, 0x32, 0x32, 0x93, 0x21, 0xD1, 0x00, 0xED, 0x01, 0x00, 0x8C, 0x80, 0x00, 0x6C, 0x09, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x81, 0x00, 0x8B, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x2A, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x85, 0x00, 0x6B, 0x08, 0xED, 0x21, 0xF1, 0x42, 0xD5, 0x3A, 0x94, 0x11, 0x2F, 0x02, 0x00, 0x8C, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x14, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, + 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x05, 0x00, 0x4B, 0x87, 0x00, 0x6B, 0x00, 0x6C, 0x09, 0x0E, 0x21, 0xF1, 0x32, 0x94, 0x2A, 0x12, 0x09, 0x0E, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x0B, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x14, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x85, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0xAC, 0x19, 0xB0, 0x3A, 0xD5, 0x11, 0x90, 0x01, 0x00, 0xAC, 0x81, 0x00, 0x6B, 0x00, 0x6C, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x13, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x83, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x03, 0x00, 0x8B, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x4B, 0x84, 0x00, 0x6C, 0x00, 0x8C, + 0x19, 0xB1, 0x3A, 0xB5, 0x08, 0xEE, 0x01, 0x00, 0x8C, 0x82, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x81, 0x00, 0x6C, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x2C, 0x00, 0x6B, 0x03, 0x00, 0x4C, 0x87, 0x11, 0x90, 0x22, 0x12, 0x00, 0xCD, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x23, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x20, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x8C, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x82, 0x2A, 0x12, 0x19, 0xD1, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x19, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x31, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x84, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0xCD, 0x2A, 0x33, 0x2A, 0x53, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x82, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x8C, 0x16, 0x00, 0x6B, 0x03, 0x00, 0x4B, + 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x87, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0xCD, 0x09, 0x2F, 0x2A, 0x53, 0x22, 0x12, 0x00, 0xCD, 0x00, 0x8D, 0x03, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x09, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x0B, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x14, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x08, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x86, 0x00, 0x8C, 0x00, 0xAD, 0x19, 0x90, 0x3A, 0xD5, 0x22, 0x12, 0x00, 0xAD, 0x00, 0x6C, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x81, 0x00, 0x8B, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x09, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x15, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x88, 0x00, 0x6C, 0x00, 0x8C, 0x09, 0x0E, 0x19, 0xB1, 0x32, 0x74, 0x2A, 0x12, 0x00, 0xCD, 0x00, 0x6C, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x09, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, + 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x88, 0x00, 0x8C, 0x00, 0xCC, 0x11, 0x6F, 0x2A, 0x52, 0x32, 0x94, 0x2A, 0x32, 0x09, 0x0E, 0x00, 0x8C, 0x00, 0x6C, 0x03, 0x00, 0x4B, 0x82, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x08, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x84, 0x00, 0x4A, 0x00, 0x2A, 0x00, 0x4A, 0x00, 0x2A, 0x00, 0x4A, 0x08, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x86, 0x00, 0x8C, 0x32, 0x32, 0x42, 0xF5, 0x32, 0x73, 0x11, 0x6F, 0x00, 0xAD, 0x00, 0x8C, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x06, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x06, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x86, 0x00, 0x8C, 0x11, 0x6F, 0x3A, 0x94, 0x3A, 0xB4, 0x19, 0xB0, 0x00, 0xAC, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x81, 0x00, 0x4A, + 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x0A, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x87, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x8C, 0x2A, 0x32, 0x3A, 0xD5, 0x11, 0x6F, 0x00, 0xAC, 0x00, 0x8C, 0x0C, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x09, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x0B, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x87, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6C, 0x08, 0xEE, 0x42, 0xD5, 0x11, 0x70, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x81, + 0x00, 0x6B, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x14, 0x00, 0x6B, 0x80, 0x00, 0x6C, 0x09, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4C, 0x01, 0x00, 0x6C, 0x84, 0x32, 0x94, 0x11, 0x90, 0x00, 0x8C, 0x00, 0x6C, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x14, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x34, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x84, 0x00, 0x4B, 0x00, 0x2A, 0x22, 0x12, 0x19, 0xB0, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x1B, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x0C, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x1F, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x85, 0x00, 0x6C, 0x00, 0x8C, 0x11, 0x2F, 0x43, 0x16, 0x00, 0xEE, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x4B, 0x07, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x14, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x14, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x0D, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8C, 0x01, 0x00, 0xAD, 0x83, 0x09, 0x2F, 0x3A, 0xD5, 0x11, 0x90, 0x00, 0x8C, 0x02, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, + 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x1E, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x86, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x85, 0x00, 0x6C, 0x00, 0xAD, 0x11, 0x70, 0x3A, 0xD5, 0x2A, 0x12, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x84, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x0A, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x84, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x07, 0x00, 0x4B, 0x87, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0xAC, 0x11, 0x4F, 0x32, 0x73, 0x3A, 0x94, 0x11, 0x4F, 0x00, 0x8C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, + 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x87, 0x00, 0x8C, 0x00, 0xCD, 0x11, 0x6F, 0x2A, 0x32, 0x32, 0x94, 0x2A, 0x12, 0x09, 0x0E, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x2A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x85, 0x00, 0xAC, 0x21, 0xB0, 0x3A, 0xB4, 0x3A, 0x94, 0x19, 0x8F, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x09, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, + 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x85, 0x00, 0x8B, 0x00, 0xCD, 0x21, 0xF1, 0x3A, 0xB4, 0x32, 0x52, 0x09, 0x0E, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x0C, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x09, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x07, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x85, 0x00, 0xAC, 0x2A, 0x32, 0x32, 0x94, 0x11, 0x2E, 0x00, 0x8C, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x8B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x07, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x07, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x03, 0x00, 0x6B, + 0x02, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x84, 0x00, 0x6C, 0x00, 0xCD, 0x42, 0xF5, 0x21, 0xD1, 0x00, 0x8C, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x82, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x08, 0x00, 0x6B, 0x83, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x07, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x83, 0x09, 0x0F, 0x3A, 0xD5, 0x00, 0xED, 0x00, 0xAC, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x0A, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x11, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x1F, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x84, 0x00, 0x4B, 0x22, 0x12, 0x11, 0x90, 0x00, 0x8C, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x0C, 0x00, 0x6B, 0x80, 0x00, 0x8C, 0x02, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x17, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x02, 0x00, + 0x4B, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x8B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x85, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6C, 0x00, 0x8C, 0x32, 0x94, 0x19, 0xB0, 0x01, 0x00, 0x6C, 0x03, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x07, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x8B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x84, 0x00, 0x8C, 0x00, 0xCD, 0x11, 0xB1, 0x3A, 0xF6, 0x01, 0x0E, 0x02, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x0D, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x06, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x84, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x84, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0x8C, 0x02, 0x00, 0x4B, 0x89, 0x00, + 0x6B, 0x00, 0x8C, 0x09, 0x2F, 0x3A, 0x94, 0x21, 0xF2, 0x00, 0xAD, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x84, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x07, 0x00, 0x6B, 0x83, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x83, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x82, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x87, 0x00, 0x8C, 0x00, 0xED, 0x21, 0xD1, 0x3A, 0x73, 0x21, 0xF1, 0x00, 0xCD, 0x00, 0x6B, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x08, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, + 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x8A, 0x00, 0xAC, 0x00, 0xCC, 0x11, 0x8F, 0x2A, 0x12, 0x32, 0x94, 0x22, 0x11, 0x09, 0x2E, 0x00, 0xAC, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x85, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x05, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x8B, 0x00, 0xAC, 0x21, 0xB0, 0x01, 0x3A, 0xB4, 0x82, 0x19, 0xB0, 0x00, 0xAC, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x85, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x83, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x86, 0x00, 0x8C, 0x11, 0x4E, 0x32, + 0x73, 0x3A, 0xD4, 0x11, 0x4E, 0x00, 0xAC, 0x00, 0x6B, 0x07, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x84, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x05, 0x00, 0x6B, 0x07, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x84, 0x00, 0x8C, 0x00, 0xCD, 0x3A, 0xD4, 0x3A, 0x94, 0x09, 0x0E, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x8B, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x0D, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x89, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x01, 0x32, 0x73, 0x81, 0x00, 0xAC, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x80, 0x00, + 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x07, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x18, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x84, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x02, 0x00, 0x6C, 0x82, 0x32, 0x54, 0x2A, 0x33, 0x00, 0xAD, 0x09, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x11, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x15, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x86, 0x00, 0x2A, 0x22, 0x12, 0x11, 0x90, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x06, 0x00, 0x4B, 0x11, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x18, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6C, 0x81, 0x11, 0x90, 0x32, 0x94, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x0B, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x80, + 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x11, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x87, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0xED, 0x22, 0x12, 0x32, 0x74, 0x00, 0xCD, 0x00, 0x6C, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x8B, 0x00, 0x8C, 0x00, 0x4B, 0x00, 0x2A, 0x01, 0x00, 0x4B, 0x85, 0x00, 0x6B, 0x00, 0x8C, 0x09, 0x0E, 0x32, 0x74, 0x32, 0x54, 0x00, 0xAC, 0x01, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, + 0x05, 0x00, 0x4A, 0x83, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x8B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x05, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x82, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x87, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0xAC, 0x11, 0x4F, 0x32, 0x53, 0x32, 0x73, 0x11, 0x4E, 0x00, 0x8C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x0A, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x88, 0x00, 0x8B, 0x00, 0xAC, 0x00, 0xED, 0x11, 0x6F, 0x22, 0x32, 0x32, 0x93, 0x22, 0x11, 0x08, 0xED, 0x00, 0x8B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x80, 0x00, + 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x85, 0x00, 0xCD, 0x19, 0x90, 0x32, 0x73, 0x3A, 0x93, 0x21, 0xB0, 0x00, 0xAC, 0x03, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x87, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x07, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x07, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x8B, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x87, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0xED, 0x21, 0xF1, 0x32, 0x93, 0x2A, 0x11, 0x00, 0xED, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x2A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x14, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x07, 0x00, 0x6B, 0x80, 0x00, + 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x84, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x86, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0xED, 0x42, 0xF5, 0x32, 0x53, 0x00, 0xCD, 0x00, 0x8B, 0x05, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x1E, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x88, 0x00, 0x6C, 0x00, 0x8C, 0x2A, 0x12, 0x3A, 0x94, 0x00, 0xED, 0x00, 0x8C, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x0D, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x14, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x83, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x84, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x00, + 0x4B, 0x01, 0x00, 0x6C, 0x83, 0x00, 0xCE, 0x42, 0xF6, 0x11, 0x4F, 0x00, 0x8C, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x1F, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x84, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x81, 0x2A, 0x32, 0x19, 0xB0, 0x01, 0x00, 0x6C, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x07, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x09, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x17, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x84, 0x00, 0x8C, 0x00, 0xED, 0x42, 0xF5, 0x08, 0xED, 0x00, 0x8C, 0x01, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x07, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x17, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x8B, 0x02, 0x00, 0x6B, + 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x85, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0xCD, 0x2A, 0x53, 0x21, 0xF2, 0x00, 0x8C, 0x01, 0x00, 0x6C, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x0B, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x0A, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x82, 0x00, 0x6B, 0x00, 0x8C, 0x08, 0xEE, 0x01, 0x32, 0x74, 0x80, 0x00, 0xED, 0x01, 0x00, 0x8C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x07, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x07, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x02, 0x00, 0x4B, + 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x87, 0x00, 0x8C, 0x08, 0xED, 0x21, 0xF1, 0x3A, 0xB4, 0x2A, 0x11, 0x08, 0xED, 0x00, 0x8B, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x84, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x89, 0x00, 0x8B, 0x00, 0x8C, 0x00, 0xAC, 0x01, 0x0D, 0x19, 0x8F, 0x22, 0x11, 0x32, 0x53, 0x19, 0xB0, 0x00, 0xED, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x09, 0x00, 0x4B, 0x85, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x2A, 0x01, 0x00, 0x4B, 0x87, 0x00, 0x8C, 0x00, 0xAC, 0x19, 0x70, 0x32, 0x53, 0x3A, 0x94, 0x29, 0xF1, 0x08, 0xED, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, + 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x07, 0x00, 0x6B, 0x84, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x8B, 0x03, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x84, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x82, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x86, 0x00, 0x8C, 0x11, 0x6F, 0x32, 0x93, 0x3A, 0x94, 0x19, 0xB0, 0x00, 0xAC, 0x00, 0x8B, 0x01, 0x00, 0x4B, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x06, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x08, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x85, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x84, 0x09, 0x0D, 0x42, 0xF5, 0x2A, 0x32, 0x00, 0xCC, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, + 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x84, 0x11, 0x4F, 0x4B, 0x15, 0x11, 0x2E, 0x00, 0x8C, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x0B, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x0B, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x89, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x6C, 0x19, 0xD1, 0x3A, 0xD5, 0x00, 0x8C, + 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x83, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x08, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x29, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x82, 0x00, 0x2A, 0x21, 0xF1, 0x19, 0xB0, 0x01, 0x00, 0x6C, 0x03, 0x00, 0x6B, 0x84, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x09, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x89, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8C, 0x2A, 0x32, 0x32, 0x53, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4B, + 0x07, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x10, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x86, 0x00, 0x6B, 0x00, 0x8C, 0x09, 0x4F, 0x32, 0x94, 0x19, 0xB0, 0x00, 0xAC, 0x00, 0x6C, 0x02, 0x00, 0x4B, 0x83, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x83, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x07, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x0C, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x2A, 0x01, 0x00, 0x4B, 0x85, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0xCD, 0x2A, 0x32, 0x3A, 0xB4, 0x09, 0x2F, 0x01, 0x00, 0x8C, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x8B, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, + 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x83, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x05, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x86, 0x00, 0x6C, 0x00, 0xAC, 0x11, 0x4E, 0x32, 0x53, 0x32, 0x73, 0x19, 0xB0, 0x00, 0xAC, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x86, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x0C, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x86, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x84, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x8A, 0x00, 0x8B, 0x00, 0xAC, 0x00, 0xED, 0x11, 0x8F, 0x22, 0x11, 0x2A, 0x52, 0x21, 0xD0, 0x00, 0xCC, 0x00, 0x8B, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x87, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x82, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, + 0x00, 0x2A, 0x03, 0x00, 0x4B, 0x82, 0x00, 0x2A, 0x00, 0x4A, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x86, 0x00, 0xAC, 0x11, 0x70, 0x32, 0x73, 0x32, 0x53, 0x21, 0xD1, 0x09, 0x0E, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x08, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x09, 0x00, 0x4B, 0x85, 0x00, 0x8C, 0x00, 0xCD, 0x21, 0xD1, 0x32, 0x73, 0x29, 0xF1, 0x08, 0xED, 0x03, 0x00, 0x6B, 0x05, 0x00, 0x4A, 0x03, 0x00, 0x2A, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x8B, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x82, 0x00, + 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x83, 0x11, 0x6E, 0x42, 0xD4, 0x21, 0xD0, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x07, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x87, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x84, 0x08, 0xED, 0x42, 0xD4, 0x19, 0x6F, 0x00, 0xAC, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x83, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x06, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x06, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6A, + 0x05, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x83, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x8B, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x84, 0x00, 0x6B, 0x00, 0x8C, 0x3A, 0xD5, 0x19, 0xD1, 0x00, 0x8C, 0x02, 0x00, 0x6B, 0x84, 0x00, 0x8B, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x06, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x0C, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x0C, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x81, 0x2A, 0x11, 0x11, 0x8F, 0x01, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x0B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x07, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x83, 0x00, + 0x4B, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x84, 0x00, 0x4B, 0x00, 0x8C, 0x09, 0x0E, 0x42, 0xB4, 0x00, 0xAC, 0x03, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x08, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x09, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x06, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x84, 0x00, 0x8C, 0x19, 0xB0, 0x3A, 0xF5, 0x09, 0x2F, 0x00, 0x6C, 0x05, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x84, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x08, 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x84, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x84, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x81, 0x00, + 0x6B, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x05, 0x00, 0x4B, 0x87, 0x00, 0x6C, 0x00, 0xAC, 0x2A, 0x12, 0x3A, 0xD5, 0x11, 0x90, 0x00, 0xAC, 0x00, 0x8C, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x07, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x87, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0xAC, 0x21, 0xD1, 0x3A, 0x94, 0x2A, 0x32, 0x09, 0x2E, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x83, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0B, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, + 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x84, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x2A, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x8C, 0x00, 0x8C, 0x08, 0xED, 0x19, 0xD0, 0x32, 0x73, 0x2A, 0x73, 0x11, 0x6F, 0x00, 0xCC, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x07, 0x00, 0x4B, 0x8F, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0xCD, 0x11, 0x6F, 0x2A, 0x53, 0x3A, 0xD5, 0x22, 0x12, 0x09, 0x0E, 0x00, 0xAC, 0x00, 0x8C, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x0C, 0x00, 0x4A, 0x81, 0x00, 0x2A, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x07, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x85, 0x00, 0xCD, 0x19, 0x6F, 0x2A, 0x12, 0x32, 0x73, 0x11, 0x6F, 0x00, 0xAC, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x83, + 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x08, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x85, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x85, 0x00, 0x6B, 0x00, 0x8C, 0x21, 0xB0, 0x4B, 0x35, 0x21, 0xD0, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x07, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x84, 0x00, 0xAC, 0x42, 0xD4, 0x29, 0xF1, 0x00, 0xAC, 0x00, 0x6B, 0x06, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x4A, 0x00, + 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x85, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x86, 0x00, 0x6A, 0x00, 0x8B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x04, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x85, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x85, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x6B, 0x11, 0x2E, 0x4B, 0x36, 0x00, 0xED, 0x03, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x0A, 0x00, 0x6B, 0x85, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x03, 0x00, + 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x81, 0x22, 0x11, 0x11, 0x8F, 0x03, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x83, 0x00, 0x6B, 0x00, 0x8C, 0x32, 0x53, 0x11, 0x4E, 0x04, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x07, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, + 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x84, 0x00, 0xAC, 0x22, 0x12, 0x3A, 0xB4, 0x00, 0xCD, 0x00, 0x8C, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x09, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x89, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0xCC, 0x19, 0x90, 0x3A, 0xB4, 0x22, 0x11, 0x00, 0xCC, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0E, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x82, + 0x00, 0x2A, 0x00, 0x4A, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x87, 0x00, 0x6B, 0x00, 0x8C, 0x09, 0x0E, 0x29, 0xF1, 0x3A, 0x93, 0x21, 0xB0, 0x00, 0xAC, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0E, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0C, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x2A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x05, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x86, 0x00, 0xAC, 0x09, 0x2E, 0x19, 0xD0, 0x32, 0xB4, 0x2A, 0x32, 0x09, 0x4E, 0x00, 0xCC, 0x02, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x07, 0x00, 0x4B, 0x82, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x89, 0x00, 0x4B, 0x00, 0x8C, 0x11, 0x4F, 0x2A, 0x32, 0x32, 0x74, 0x21, 0xF2, 0x09, 0x2E, 0x00, 0xAC, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, + 0x01, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x84, 0x09, 0x2E, 0x21, 0xD1, 0x2A, 0x12, 0x29, 0xF1, 0x08, 0xED, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x83, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x16, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x85, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x8B, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x86, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x8C, 0x21, 0xD1, 0x4B, 0x15, 0x11, 0x6F, 0x01, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x2A, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x0D, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x0A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x81, 0x00, + 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x85, 0x00, 0x8B, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x85, 0x00, 0x6B, 0x00, 0x8B, 0x2A, 0x32, 0x32, 0x52, 0x00, 0xCD, 0x00, 0x6C, 0x01, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x03, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x86, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x07, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x0A, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x07, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x09, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x88, 0x00, 0x4B, 0x00, 0x8C, 0x32, 0x73, 0x2A, 0x32, 0x00, 0xAC, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x0F, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x86, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x07, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x88, 0x00, 0x4A, 0x00, 0x6A, 0x00, + 0x4A, 0x00, 0x29, 0x00, 0x4A, 0x00, 0x2A, 0x00, 0x4A, 0x2A, 0x11, 0x19, 0x90, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x07, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x88, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x8A, 0x00, 0x8C, 0x19, 0x6F, 0x3A, 0x73, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x2A, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, + 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x83, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x86, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0xED, 0x32, 0x73, 0x2A, 0x32, 0x00, 0xAC, 0x00, 0x6C, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x84, 0x00, 0x6A, 0x00, 0x8B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x05, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x87, 0x00, 0x8C, 0x11, 0x6F, 0x32, 0xB4, 0x32, 0x73, 0x00, 0xED, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x4B, 0x03, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x0B, + 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0C, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x05, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x85, 0x00, 0x8C, 0x11, 0x4E, 0x32, 0x52, 0x2A, 0x52, 0x09, 0x2E, 0x00, 0xAC, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x82, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x0B, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x0E, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0B, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x05, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x8B, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x86, 0x00, 0x8C, 0x00, 0xCC, 0x09, 0x2E, 0x22, 0x32, 0x32, 0x94, 0x22, 0x11, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x2A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x89, 0x00, 0x4A, 0x00, 0x2A, 0x00, 0x6B, 0x11, 0x2E, 0x2A, 0x12, 0x32, 0x73, 0x2A, 0x32, 0x11, 0x4F, 0x00, 0xCD, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x84, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x03, + 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x0C, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x86, 0x00, 0x6B, 0x00, 0xAC, 0x19, 0x90, 0x2A, 0x32, 0x2A, 0x52, 0x11, 0x6F, 0x00, 0x8C, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x18, 0x00, 0x6A, 0x84, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x88, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x8C, 0x2A, 0x11, 0x42, 0xF5, 0x09, 0x0D, 0x00, 0x8B, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x0B, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x84, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x0E, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x0B, 0x00, + 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x86, 0x00, 0x6B, 0x00, 0x8B, 0x11, 0x6F, 0x3A, 0xD4, 0x09, 0x0E, 0x00, 0x8C, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x14, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x09, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x01, 0x00, 0x4B, 0x84, 0x00, 0xAC, 0x42, 0xF5, 0x11, 0x4F, 0x00, 0x8C, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x84, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, + 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x81, 0x21, 0xF1, 0x11, 0x8F, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x8C, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x07, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x0A, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x82, 0x00, 0xCD, 0x42, 0xB4, 0x11, 0x0E, 0x01, 0x00, 0x4B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x0A, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x06, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, + 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x86, 0x00, 0x6B, 0x00, 0x8B, 0x09, 0x0D, 0x32, 0x93, 0x21, 0xF1, 0x00, 0x8C, 0x00, 0x6C, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x85, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x18, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x85, 0x00, 0x6B, 0x00, 0x8C, 0x01, 0x0E, 0x32, 0x73, 0x42, 0xF5, 0x09, 0x0E, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x81, 0x00, + 0x6A, 0x00, 0x6B, 0x09, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x0B, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x89, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0xAC, 0x09, 0x0D, 0x19, 0xD0, 0x32, 0x73, 0x21, 0xD0, 0x00, 0xCC, 0x00, 0x8B, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x0C, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x84, 0x00, 0x8C, 0x00, 0xCC, 0x09, 0x6F, 0x2A, 0x32, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x2A, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x87, 0x00, 0x8B, 0x09, 0x2E, 0x2A, 0x32, 0x32, 0x52, 0x2A, 0x12, 0x19, 0x90, 0x00, 0xCC, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x06, 0x00, 0x4B, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x83, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x8B, 0x00, 0x6B, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, + 0x4A, 0x80, 0x00, 0x2A, 0x05, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x06, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x8B, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x85, 0x00, 0x8C, 0x09, 0x0E, 0x21, 0xD0, 0x2A, 0x12, 0x21, 0xD1, 0x00, 0xCD, 0x03, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x07, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x2A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x83, 0x00, 0xCC, 0x32, 0x52, 0x32, 0x53, 0x00, 0xED, 0x01, 0x00, 0x8B, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x03, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x8B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x02, 0x00, 0x6A, + 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x0B, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x8A, 0x00, 0x4B, 0x00, 0x2A, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8C, 0x09, 0x0D, 0x42, 0xF5, 0x19, 0x8F, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x14, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x83, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x82, 0x11, 0x4F, 0x32, 0x73, 0x00, 0xAC, 0x01, 0x00, 0x6B, 0x84, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x82, + 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x8B, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x0A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x8A, 0x04, 0x00, 0x4A, 0x82, 0x22, 0x11, 0x19, 0xB0, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x07, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x06, 0x00, 0x6B, 0x82, 0x32, 0x32, 0x32, 0x52, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x05, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x05, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x88, 0x00, + 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x2A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x86, 0x00, 0x4B, 0x00, 0x6B, 0x11, 0x4F, 0x3A, 0xB5, 0x19, 0x90, 0x00, 0xAC, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x85, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x08, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x2A, 0x0D, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x09, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x89, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0xAC, 0x2A, 0x32, 0x42, 0xD5, 0x11, 0x4F, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0E, 0x00, 0x4A, + 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x01, 0x00, 0xAC, 0x84, 0x09, 0x4E, 0x2A, 0x12, 0x32, 0x73, 0x09, 0x2E, 0x00, 0xAC, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x0D, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0E, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x8B, 0x00, 0x8C, 0x00, 0xAC, 0x01, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x87, 0x11, 0x2E, 0x2A, 0x11, 0x3A, 0xB3, 0x32, 0x52, 0x19, 0x8F, 0x00, 0xCD, 0x00, 0x8B, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x03, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x07, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x85, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x6A, + 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x85, 0x08, 0xCD, 0x19, 0x90, 0x2A, 0x11, 0x2A, 0x32, 0x11, 0x4F, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x0C, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x2A, 0x02, 0x00, 0x4A, 0x85, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x83, 0x00, 0xCC, 0x3A, 0x93, 0x32, 0x72, 0x00, 0xED, 0x01, 0x00, 0x8B, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x85, 0x00, 0x8B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x0C, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x01, + 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x84, 0x00, 0x6B, 0x00, 0xAC, 0x3A, 0xB4, 0x2A, 0x52, 0x00, 0xAC, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x0F, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x8B, 0x00, 0x4B, 0x00, 0x6B, 0x32, 0x52, 0x19, 0xD0, 0x00, 0x8B, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x0A, + 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x81, 0x21, 0xF1, 0x19, 0x8F, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x0B, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x05, 0x00, 0x6B, 0x83, 0x11, 0x4E, 0x53, 0x36, 0x00, 0xAC, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x05, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x84, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x08, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, + 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x2A, 0x08, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x85, 0x00, 0xAC, 0x19, 0xB0, 0x32, 0x53, 0x09, 0x2F, 0x00, 0x8C, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0C, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x84, 0x00, 0x6B, 0x00, 0xCC, 0x19, 0xB0, 0x42, 0xD5, 0x19, 0x90, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x11, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x8C, 0x87, 0x00, 0xED, 0x19, 0xB0, 0x32, 0x93, 0x21, 0xF1, 0x08, 0xED, 0x00, 0x8B, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x84, 0x00, 0x4A, 0x00, 0x4B, + 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x0D, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x2A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x84, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x2A, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x82, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x2A, 0x02, 0x00, 0x4A, 0x88, 0x00, 0x6B, 0x00, 0x8B, 0x09, 0x0D, 0x2A, 0x31, 0x32, 0x93, 0x32, 0x52, 0x19, 0x8F, 0x08, 0xED, 0x00, 0x8B, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x2A, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x2A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, + 0x84, 0x11, 0x0E, 0x21, 0xD1, 0x29, 0xF1, 0x2A, 0x11, 0x08, 0xED, 0x02, 0x00, 0x6B, 0x83, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x0A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x0A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x82, 0x11, 0x2E, 0x42, 0xF5, 0x2A, 0x32, 0x01, 0x00, 0xCC, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x84, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x8B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x08, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x84, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x8C, 0x01, 0x32, 0x73, 0x81, 0x00, 0xED, 0x00, 0x8B, 0x01, 0x00, 0x4B, 0x83, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, + 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x85, 0x00, 0x4B, 0x08, 0xCD, 0x3A, 0xB4, 0x09, 0x0D, 0x00, 0x8B, 0x00, 0x4B, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x0E, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x8A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x49, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x81, 0x21, 0xF1, 0x19, 0xB0, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x81, 0x00, 0x8B, 0x00, 0x6B, 0x02, 0x00, 0x4A, + 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x0C, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x8B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x85, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8B, 0x4B, 0x35, 0x19, 0x8F, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x86, 0x00, 0x6B, 0x00, 0x8C, 0x19, 0xD1, 0x2A, 0x53, 0x09, 0x0E, 0x00, 0x8C, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x09, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x07, 0x00, 0x4A, 0x80, 0x00, + 0x6A, 0x04, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0C, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x85, 0x00, 0x6B, 0x00, 0x8C, 0x11, 0x4F, 0x42, 0xD5, 0x21, 0xF1, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x87, 0x00, 0xAC, 0x09, 0x4E, 0x32, 0x72, 0x3A, 0x93, 0x19, 0x8F, 0x00, 0xAC, 0x00, 0x6B, 0x00, 0x2A, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x06, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, + 0x6A, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x8B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x08, 0x00, 0x4B, 0x89, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0xCC, 0x21, 0xF0, 0x3A, 0xB3, 0x32, 0x93, 0x19, 0xD0, 0x09, 0x0D, 0x00, 0x8B, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x2A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x81, 0x00, 0xAC, 0x21, 0xB0, 0x01, 0x32, 0x32, 0x81, 0x19, 0x6F, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x12, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, + 0x80, 0x00, 0x4B, 0x09, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x82, 0x19, 0x90, 0x42, 0xF5, 0x21, 0xF1, 0x01, 0x00, 0xAC, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x4A, 0x83, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x09, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x84, 0x19, 0x90, 0x3A, 0xB4, 0x11, 0x6F, 0x00, 0x8B, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x16, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x0D, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x87, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x4B, 0x29, 0xF1, 0x32, 0x53, 0x00, 0xAC, 0x00, 0x6B, 0x00, + 0x4B, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0C, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x07, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x49, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x81, 0x21, 0xD0, 0x19, 0xB0, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x85, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x81, 0x00, 0x2A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0C, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x83, 0x19, 0xD0, 0x42, 0xF4, 0x00, 0x4B, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x1C, 0x00, 0x4A, + 0x01, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0E, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x06, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x2A, 0x01, 0x00, 0x4B, 0x85, 0x00, 0x6C, 0x00, 0xCD, 0x22, 0x12, 0x32, 0x74, 0x00, 0xCD, 0x00, 0x6C, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0B, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x22, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x8C, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x2A, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0xAC, 0x11, 0x2E, 0x42, 0xD5, 0x2A, 0x12, 0x00, 0x8B, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x86, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x24, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x86, 0x00, + 0x8B, 0x00, 0xAB, 0x00, 0xEC, 0x11, 0x8F, 0x32, 0x72, 0x32, 0x32, 0x08, 0xED, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x0A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x15, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x04, 0x00, 0x4B, 0x89, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0xCC, 0x11, 0x8F, 0x32, 0x72, 0x2A, 0x52, 0x19, 0xAF, 0x09, 0x0D, 0x00, 0x8B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x05, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x0C, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x85, 0x00, 0x6B, 0x09, 0x0E, 0x29, 0xF1, 0x32, 0x52, 0x21, 0xD0, 0x09, 0x0D, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x2A, 0x02, 0x00, + 0x4A, 0x01, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x81, 0x00, 0x8A, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x86, 0x00, 0x8B, 0x19, 0x8F, 0x3A, 0x93, 0x19, 0x90, 0x00, 0x8B, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x05, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x84, 0x00, 0x6B, 0x11, 0x4F, 0x3A, 0x94, 0x19, 0x8F, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, + 0x04, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x07, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x89, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0xAC, 0x42, 0xD5, 0x19, 0x90, 0x00, 0x6C, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x05, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x0D, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x01, 0x19, 0xB0, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x0E, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x0F, + 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x83, 0x00, 0x8B, 0x08, 0xED, 0x5B, 0xB8, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x10, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0E, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0E, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x88, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6C, 0x09, 0x0E, 0x3A, 0xD5, 0x22, 0x32, 0x00, 0x8C, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x84, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x11, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0D, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x08, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x87, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8C, 0x09, 0x0E, 0x42, 0xD5, 0x2A, 0x32, + 0x00, 0xAC, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x16, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x85, 0x09, 0x2E, 0x2A, 0x11, 0x3A, 0x73, 0x21, 0xB0, 0x00, 0xAC, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x1F, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x0A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x06, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x2B, 0x04, 0x00, 0x4B, 0x8A, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0x8C, 0x19, 0xB0, 0x3A, 0xB4, 0x32, 0x72, 0x11, 0xAF, 0x09, 0x4E, 0x00, 0xCC, 0x00, 0x8B, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0F, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x05, + 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x87, 0x00, 0x8B, 0x21, 0xB0, 0x32, 0x73, 0x32, 0x32, 0x11, 0x4E, 0x00, 0xAC, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x07, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x81, 0x00, 0x8A, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x83, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x83, 0x00, 0x8C, 0x29, 0xF1, 0x42, 0xD5, 0x11, 0x4E, 0x01, 0x00, 0x6B, 0x86, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0F, 0x00, 0x4A, 0x05, 0x00, 0x6B, + 0x05, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x88, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x08, 0xED, 0x42, 0xB4, 0x21, 0xD0, 0x00, 0xAC, 0x00, 0x8B, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x85, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4B, 0x87, 0x09, 0x2E, 0x42, 0xF5, 0x00, 0xAD, 0x00, 0x6C, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x83, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x05, 0x00, + 0x6A, 0x02, 0x00, 0x4A, 0x12, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x84, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x2A, 0x01, 0x00, 0x4A, 0x81, 0x19, 0x8F, 0x19, 0x90, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x05, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x10, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0B, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x84, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x83, 0x00, 0x6B, 0x00, 0xAC, 0x42, 0xD4, 0x2A, 0x11, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x82, 0x00, 0x2A, 0x00, 0x4A, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x18, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x14, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x2A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x86, 0x00, 0x6C, 0x00, 0x8C, + 0x11, 0xB0, 0x43, 0x16, 0x11, 0x6F, 0x00, 0x8B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x1B, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x6A, 0x1C, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x84, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x8B, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x2A, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0xAC, 0x09, 0x0E, 0x3A, 0x94, 0x42, 0xD5, 0x00, 0xCD, 0x00, 0x8C, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x84, 0x00, 0xCC, 0x19, 0x8F, 0x32, 0x53, 0x32, 0x52, 0x11, 0x4E, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x81, + 0x00, 0x6B, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x10, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x09, 0x00, 0x4B, 0x8C, 0x00, 0x6B, 0x00, 0x8C, 0x09, 0x4E, 0x3A, 0xB4, 0x32, 0x93, 0x19, 0xD0, 0x09, 0x0D, 0x08, 0xED, 0x00, 0x8B, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x2A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x2A, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x84, 0x09, 0x0D, 0x32, 0x73, 0x32, 0x52, 0x21, 0xF1, 0x08, 0xCC, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x4B, 0x00, + 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x06, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x83, 0x00, 0xAC, 0x3A, 0xB4, 0x42, 0xF5, 0x00, 0xED, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x82, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x89, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x87, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x07, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x8B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x8B, 0x00, 0x6B, 0x01, 0x00, 0x4B, + 0x83, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8C, 0x01, 0x2A, 0x32, 0x81, 0x08, 0xED, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x0C, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x0B, 0x00, 0x6A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x87, 0x2A, 0x32, 0x19, 0xD1, 0x00, 0xAC, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x84, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, + 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x09, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x29, 0x00, 0x2A, 0x01, 0x00, 0x4A, 0x81, 0x19, 0xB0, 0x21, 0xF1, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x84, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x83, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x14, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x8C, 0x11, 0x2E, 0x4B, 0x36, 0x00, 0x8B, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x8B, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x84, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x0B, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x4A, + 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x2A, 0x01, 0x00, 0x4B, 0x84, 0x00, 0x6C, 0x00, 0xAD, 0x22, 0x12, 0x32, 0xB4, 0x01, 0x0E, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x84, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x0E, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x09, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x85, 0x00, 0x6B, 0x00, 0x8C, 0x08, 0xED, 0x32, 0x53, 0x42, 0xD5, 0x00, 0xED, 0x02, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x80, 0x00, + 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x8B, 0x87, 0x11, 0x0E, 0x29, 0xF1, 0x3A, 0x73, 0x19, 0xB0, 0x00, 0xAC, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x84, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x4A, 0x05, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x84, 0x00, 0xED, 0x32, 0x73, 0x3A, 0xB4, 0x19, 0xD0, 0x01, 0x0D, 0x01, 0x00, 0xAB, 0x81, 0x00, 0x8B, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x0F, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x84, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, + 0x01, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x85, 0x00, 0x8B, 0x21, 0xD0, 0x4B, 0x15, 0x22, 0x11, 0x09, 0x2D, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x0B, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x04, 0x00, 0x6B, 0x05, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x86, 0x00, 0x8C, 0x00, 0xAC, 0x4B, 0x36, 0x3A, 0x73, 0x00, 0xCC, 0x00, 0x8B, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x0C, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, + 0x03, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x0A, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x85, 0x00, 0x6B, 0x00, 0x8C, 0x19, 0xB0, 0x3A, 0x94, 0x11, 0x4E, 0x00, 0x8C, 0x04, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x84, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x0C, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x0F, 0x00, 0x6A, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x85, 0x00, 0x6B, 0x00, 0x8C, 0x42, 0xF5, 0x09, 0x2E, 0x00, 0x8C, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x4B, 0x09, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, + 0x6A, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x81, 0x19, 0x8F, 0x21, 0xD0, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0C, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x83, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x81, 0x42, 0xB4, 0x09, 0x0E, 0x08, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x05, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x6A, + 0x00, 0x4A, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x16, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0x4A, 0x02, 0x00, 0x2A, 0x86, 0x00, 0x4B, 0x00, 0x6C, 0x00, 0xCD, 0x2A, 0x53, 0x2A, 0x32, 0x00, 0xAC, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x86, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x2A, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x6A, 0x00, 0x8B, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x0A, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x87, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x85, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0xAC, 0x21, 0xF1, 0x42, 0xD5, 0x09, 0x0D, 0x01, 0x00, 0xAC, 0x81, 0x00, 0x8B, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0E, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x0A, 0x00, 0x4A, + 0x08, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x05, 0x00, 0x6B, 0x82, 0x00, 0x8C, 0x00, 0xCD, 0x11, 0x6F, 0x01, 0x2A, 0x12, 0x80, 0x09, 0x2E, 0x02, 0x00, 0x8B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x86, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x88, 0x00, 0x4B, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0xED, 0x2A, 0x53, 0x43, 0x16, 0x22, 0x11, 0x08, 0xED, 0x00, 0x6B, 0x01, 0x00, 0x8B, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x0C, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x09, 0x00, 0x6A, + 0x03, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x84, 0x09, 0x0E, 0x32, 0x52, 0x32, 0x73, 0x11, 0x4E, 0x00, 0x8B, 0x03, 0x00, 0x6B, 0x82, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x0E, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x0A, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x84, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x8A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x82, 0x08, 0xED, 0x42, 0xD4, 0x21, 0xF1, 0x03, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x09, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x11, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x83, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x86, 0x00, 0x8B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, + 0x4A, 0x00, 0x6A, 0x00, 0x2A, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x84, 0x00, 0x6C, 0x11, 0x2E, 0x32, 0x73, 0x09, 0x2E, 0x00, 0x8C, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x03, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x07, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x88, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x17, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x82, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x84, 0x2A, 0x11, 0x32, 0x73, 0x00, 0xCD, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x0B, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x0D, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x07, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x83, 0x00, 0x2A, 0x00, 0x4A, 0x19, 0x8F, 0x21, 0xD1, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, + 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x0A, 0x00, 0x4A, 0x82, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x05, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x0C, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x82, 0x00, 0x6B, 0x21, 0xD1, 0x32, 0x53, 0x03, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x23, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x82, 0x00, 0x8B, 0x00, 0x6A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x85, 0x00, 0x8C, 0x09, 0x2E, 0x2A, 0x53, 0x19, 0xB0, 0x00, 0xAC, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, + 0x4B, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x8B, 0x03, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x86, 0x00, 0x6B, 0x00, 0x8C, 0x21, 0xD1, 0x4B, 0x36, 0x11, 0x8F, 0x00, 0xAC, 0x00, 0x8B, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x84, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x88, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x0B, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x03, 0x00, 0x4A, 0x07, 0x00, 0x6B, 0x01, 0x00, 0x6C, 0x85, 0x09, 0x0E, 0x19, 0xD1, 0x32, 0x93, 0x21, 0xF1, 0x00, 0xEC, 0x00, 0xAC, 0x01, 0x00, 0x8B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x05, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, + 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x83, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x2A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x8A, 0x00, 0x8C, 0x00, 0x4C, 0x08, 0xEE, 0x3A, 0x94, 0x42, 0xD5, 0x21, 0xF2, 0x09, 0x0E, 0x00, 0xCC, 0x00, 0x8B, 0x00, 0x6B, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x0E, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x07, 0x00, 0x4A, 0x83, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x83, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x88, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0x8C, 0x00, 0x6B, 0x19, 0x90, 0x53, 0x57, 0x21, 0xF1, 0x00, 0xCC, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, + 0x01, 0x00, 0x6A, 0x0E, 0x00, 0x4A, 0x83, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4B, 0x00, 0x6B, 0x0A, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x07, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x8B, 0x05, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x83, 0x19, 0x90, 0x4B, 0x15, 0x19, 0x8F, 0x00, 0x8B, 0x02, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x84, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x84, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x0E, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x84, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x85, 0x00, 0x6B, 0x08, 0xEE, 0x32, 0x73, 0x21, 0xF1, 0x00, 0xAC, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x81, 0x00, + 0x6B, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x13, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x85, 0x00, 0x6B, 0x00, 0x8C, 0x4B, 0x15, 0x11, 0x70, 0x00, 0xAC, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x07, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x0B, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x81, 0x11, 0x6F, 0x21, 0xF1, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, + 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x0D, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x0C, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x84, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x82, 0x08, 0xED, 0x42, 0xF5, 0x00, 0x8C, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x89, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x07, 0x00, 0x4A, 0x86, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x85, 0x00, 0xAC, 0x11, 0x6F, + 0x2A, 0x53, 0x11, 0x6F, 0x00, 0x8C, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x0F, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x0C, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x8B, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x01, 0x00, 0x4A, 0x87, 0x00, 0x6B, 0x00, 0x8C, 0x11, 0x8F, 0x4B, 0x36, 0x19, 0xB0, 0x00, 0xAC, 0x00, 0x8B, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0F, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x0B, 0x00, 0x4A, 0x07, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x83, 0x00, 0x6B, 0x00, 0x8C, 0x00, 0xED, 0x11, 0x6F, 0x01, 0x2A, 0x52, 0x84, 0x01, 0x2E, 0x00, 0xCC, 0x00, 0xAC, 0x00, 0x8B, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x03, 0x00, + 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x4A, 0x03, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0B, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x8D, 0x00, 0x2A, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x6C, 0x08, 0xCE, 0x3A, 0x95, 0x4A, 0xF6, 0x19, 0x91, 0x00, 0xCE, 0x00, 0x8C, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0x6B, 0x05, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x10, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x07, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x84, 0x00, 0x8B, 0x09, 0x0E, 0x42, 0xD5, 0x3A, 0x94, 0x00, 0xAD, 0x01, 0x00, 0x8C, 0x82, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x2A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x0C, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x6B, 0x07, 0x00, 0x6A, 0x80, 0x00, 0x8A, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6A, + 0x01, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x85, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x8A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x89, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8C, 0x21, 0xD1, 0x4A, 0xF6, 0x11, 0x2F, 0x00, 0x8C, 0x00, 0x8B, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x82, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x0C, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x89, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x05, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x07, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x84, 0x00, 0x8C, 0x32, 0x33, 0x2A, 0x32, 0x09, 0x0D, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x01, 0x00, 0x2A, 0x04, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x80, 0x00, + 0x6B, 0x01, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x84, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x14, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x83, 0x11, 0x4F, 0x42, 0xD5, 0x00, 0xCD, 0x00, 0x8C, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x2A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x0F, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x05, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x1B, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x82, 0x11, 0x6F, 0x21, 0xF1, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x05, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x0D, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x82, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x82, 0x00, 0x8C, 0x42, 0xB5, 0x19, 0x4F, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x02, 0x00, + 0x4B, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x05, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x12, 0x00, 0x4A, 0x82, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x84, 0x00, 0x8C, 0x00, 0xCD, 0x19, 0xD1, 0x32, 0x73, 0x09, 0x0E, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x0C, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x07, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x86, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0x8C, 0x09, 0x4E, 0x3A, 0xB4, 0x19, 0xD0, 0x00, 0xAC, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6B, 0x01, + 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x06, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x08, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x2A, 0x02, 0x00, 0x4B, 0x88, 0x00, 0x6C, 0x00, 0xAC, 0x01, 0x0D, 0x19, 0xD0, 0x32, 0xB4, 0x19, 0xD0, 0x00, 0xED, 0x00, 0x8B, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x03, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0x83, 0x00, 0x6C, 0x42, 0xB4, 0x42, 0xD5, 0x11, 0x70, 0x01, 0x00, 0xAE, 0x83, 0x00, 0x8D, 0x00, 0x6C, 0x00, 0x8C, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x82, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6A, 0x0D, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x13, + 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x8B, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x8B, 0x00, 0xAC, 0x21, 0xD0, 0x3A, 0x94, 0x2A, 0x32, 0x00, 0x8C, 0x00, 0xAD, 0x00, 0x8C, 0x01, 0x00, 0x4B, 0x02, 0x00, 0x2A, 0x01, 0x00, 0x4A, 0x05, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x84, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6B, 0x0F, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x16, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x05, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x84, 0x29, 0xF1, 0x3A, 0x94, 0x00, 0xED, 0x00, 0xAC, 0x00, 0x8C, 0x01, 0x00, 0x6B, 0x05, 0x00, 0x4B, 0x81, 0x00, 0x4A, 0x00, 0x4B, 0x08, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x6A, 0x05, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x08, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x83, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6A, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x84, + 0x11, 0x2F, 0x2A, 0x33, 0x11, 0x4F, 0x00, 0xAC, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x04, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x86, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x08, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x0A, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x83, 0x3A, 0xD5, 0x21, 0xF1, 0x00, 0xAC, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x82, 0x00, 0x2A, 0x00, 0x4A, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x05, 0x00, 0x4A, 0x80, 0x00, 0x2A, 0x13, 0x00, 0x4A, 0x85, 0x00, 0x6B, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x05, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x07, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x03, 0x00, 0x6A, 0x80, 0x00, 0x6B, 0x02, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x82, 0x00, 0x2A, 0x11, 0x6F, 0x21, 0xB1, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x05, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x80, + 0x00, 0x6B, 0x0E, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x83, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x6A, 0x1B, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x04, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x6B, 0x83, 0x00, 0x8C, 0x00, 0x6B, 0x21, 0x90, 0x3A, 0x33, 0x01, 0x00, 0x6C, 0x80, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x6B, 0x0A, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x06, 0x00, 0x4A, 0x81, 0x00, 0x6B, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x07, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x17, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x89, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x00, 0xAC, 0x01, 0x0E, 0x22, 0x32, 0x21, 0xF1, 0x08, 0xCD, 0x00, 0x6C, 0x03, 0x00, 0x4B, 0x02, 0x00, 0x6B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x4A, 0x02, 0x00, 0x6B, 0x03, 0x00, 0x4A, 0x81, 0x00, 0x4B, 0x00, 0x6A, 0x04, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x16, 0x00, 0x4A, 0x82, 0x00, 0x6B, 0x00, 0x4A, 0x00, 0x6B, 0x03, 0x00, 0x4B, 0x06, 0x00, 0x4A, 0x02, 0x00, 0x6A, + 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x0B, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x01, 0x00, 0x4B, 0x85, 0x00, 0x6B, 0x00, 0xAC, 0x00, 0xED, 0x22, 0x11, 0x2A, 0x32, 0x00, 0xCC, 0x01, 0x00, 0x6B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x4A, 0x80, 0x00, 0x6B, 0x04, 0x00, 0x6A, 0x82, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x6A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x8B, 0x07, 0x00, 0x6A, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x0F, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x82, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x6B, 0x08, 0x00, 0x4A, 0x07, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6B, 0x82, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x2A, 0x01, 0x00, 0x4B, 0x8A, 0x00, 0x6B, 0x00, 0x4B, 0x00, 0x8C, 0x00, 0xAC, 0x00, 0xED, 0x01, 0x6E, 0x2A, 0x73, 0x32, 0x93, 0x09, 0x0D, 0x00, 0x8C, 0x00, 0x6B, 0x04, 0x00, 0x4B, 0x06, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0x81, 0x00, 0x4A, 0x00, 0x6B, 0x02, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x08, 0x00, 0x4A, 0x80, 0x00, 0x6A, 0x09, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x04, 0x00, 0x4A, 0x06, 0x00, 0x6A, 0x02, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x06, 0x00, 0x4A, 0x03, 0x00, 0x6A +}; + +const tImage MarlinLogo1024x600x16 = MARLIN_LOGO_CHOSEN(1024, 600); + +#endif // HAS_GRAPHICAL_TFT && SHOW_BOOTSCREEN diff --git a/Marlin/src/lcd/tft/images/bootscreen_112x38x1.cpp b/Marlin/src/lcd/tft/images/bootscreen_112x38x1.cpp index bac075e78b..8407899d27 100644 --- a/Marlin/src/lcd/tft/images/bootscreen_112x38x1.cpp +++ b/Marlin/src/lcd/tft/images/bootscreen_112x38x1.cpp @@ -21,14 +21,11 @@ */ #include "../../../inc/MarlinConfigPre.h" + +#if ALL(HAS_GRAPHICAL_TFT, SHOW_BOOTSCREEN) + #include "../tft_image.h" - -#if HAS_GRAPHICAL_TFT - -#include "../../../inc/MarlinConfig.h" - -extern const uint8_t marlin_logo_112x38x1[]; -const tImage MarlinLogo112x38x1 = { (void *)marlin_logo_112x38x1, 112, 38, GREYSCALE1 }; +#include "../../../inc/MarlinConfig.h" // for binary defines const uint8_t marlin_logo_112x38x1[532] = { B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, @@ -71,4 +68,6 @@ const uint8_t marlin_logo_112x38x1[532] = { B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000000 }; -#endif // HAS_GRAPHICAL_TFT +const tImage MarlinLogo112x38x1 = { (void *)marlin_logo_112x38x1, 112, 38, GREYSCALE1 }; + +#endif // HAS_GRAPHICAL_TFT && SHOW_BOOTSCREEN diff --git a/Marlin/src/lcd/tft/images/bootscreen_195x59x16.cpp b/Marlin/src/lcd/tft/images/bootscreen_195x59x16.cpp index db49bba733..e9290c5a66 100644 --- a/Marlin/src/lcd/tft/images/bootscreen_195x59x16.cpp +++ b/Marlin/src/lcd/tft/images/bootscreen_195x59x16.cpp @@ -21,22 +21,20 @@ */ #include "../../../inc/MarlinConfigPre.h" + +#if ALL(HAS_GRAPHICAL_TFT, SHOW_BOOTSCREEN) + #include "../tft_image.h" -#if HAS_GRAPHICAL_TFT - -extern const uint16_t marlin_logo_195x59x16[]; -const tImage MarlinLogo195x59x16 = { (void *)marlin_logo_195x59x16, 195, 59, HIGHCOLOR }; - const uint16_t marlin_logo_195x59x16[11505] = { - 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18AD, 0x310E, 0x7A32, 0xAAD3, 0xD395, 0xD395, 0xD395, 0xD375, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD375, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, - 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18AE, 0x20AD, 0x18AD, 0x496F, 0xAAD3, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD375, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD375, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, - 0x18AD, 0x20AB, 0x18AD, 0x18AD, 0x18AD, 0x20EE, 0x8252, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD3B5, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xDB95, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, - 0x18AD, 0x20AD, 0x18AD, 0x18AD, 0x28EE, 0xB314, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD4F8, 0xD65C, 0xD6DD, 0xD6FD, 0xD7FF, 0xD7FF, 0xDFFF, 0xD7FF, 0xD7FF, 0xDFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xDFFF, 0xDFFF, 0xDFFF, 0xDFFF, 0xDFFF, 0xDFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xD539, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xDB95, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, - 0x18AD, 0x20AD, 0x18AE, 0x28EE, 0xCB55, 0xD375, 0xD395, 0xD395, 0xD3D6, 0xD5DB, 0xD7BF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xDFFF, 0xDFFF, 0xD7FF, 0xDFFF, 0xDFFF, 0xDFFF, 0xDFFF, 0xDFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xD539, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, - 0x18AD, 0x18AD, 0x28EE, 0xB314, 0xD395, 0xD395, 0xD395, 0xD477, 0xD77E, 0xD7FF, 0xD7FF, 0xDFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xDFFF, 0xDFFF, 0xDFFF, 0xD7FF, 0xDFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD539, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, - 0x18AD, 0x18CD, 0x8252, 0xD395, 0xD395, 0xD396, 0xD4B8, 0xD7BF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xDFFF, 0xD7FF, 0xD7FF, 0xDFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xD7FF, 0xDFFF, 0xD539, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, - 0x18AD, 0x496F, 0xD395, 0xD395, 0xD395, 0xD457, 0xD7BF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7DF, 0xD7FF, 0xCF3E, 0xC67C, 0xC53A, 0xACB8, 0xACB8, 0xACB8, 0xACB8, 0xACB8, 0xACB8, 0xC53A, 0xC67C, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD65B, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD396, 0xD395, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x310E, 0x7A32, 0xAAD3, 0xD395, 0xD395, 0xD395, 0xD375, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD375, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x496F, 0xAAD3, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD375, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD375, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x20EE, 0x8252, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD3B5, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xDB95, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, + 0x0001, 0x0001, 0x0001, 0x0001, 0x28EE, 0xB314, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD4F8, 0xD65C, 0xD6DD, 0xD6FD, 0xD7FF, 0xD7FF, 0xDFFF, 0xD7FF, 0xD7FF, 0xDFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xDFFF, 0xDFFF, 0xDFFF, 0xDFFF, 0xDFFF, 0xDFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xD539, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xDB95, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, + 0x0001, 0x0001, 0x0001, 0x28EE, 0xCB55, 0xD375, 0xD395, 0xD395, 0xD3D6, 0xD5DB, 0xD7BF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xDFFF, 0xDFFF, 0xD7FF, 0xDFFF, 0xDFFF, 0xDFFF, 0xDFFF, 0xDFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xD539, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, + 0x0001, 0x0001, 0x28EE, 0xB314, 0xD395, 0xD395, 0xD395, 0xD477, 0xD77E, 0xD7FF, 0xD7FF, 0xDFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xDFFF, 0xDFFF, 0xDFFF, 0xD7FF, 0xDFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD539, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, + 0x0001, 0x18CD, 0x8252, 0xD395, 0xD395, 0xD396, 0xD4B8, 0xD7BF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xDFFF, 0xD7FF, 0xD7FF, 0xDFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xDFFF, 0xD7FF, 0xDFFF, 0xD539, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, + 0x0001, 0x496F, 0xD395, 0xD395, 0xD395, 0xD457, 0xD7BF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7DF, 0xD7FF, 0xCF3E, 0xC67C, 0xC53A, 0xACB8, 0xACB8, 0xACB8, 0xACB8, 0xACB8, 0xACB8, 0xC53A, 0xC67C, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD65B, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD396, 0xD395, 0x20AE, 0xA2D3, 0xD395, 0xD395, 0xD3D6, 0xD75E, 0xCFFF, 0xCFFF, 0xD7FF, 0xD7FF, 0xCFFF, 0xCFFF, 0xD7FF, 0xD7FF, 0xD7DF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7DF, 0xD7FF, 0xD7FF, 0xCFDF, 0xCFFF, 0xD7FF, 0xD7DF, 0xD7FF, 0xCFFF, 0xD7FF, 0xD7DF, 0xD7FF, 0xCFFF, 0xD7DF, 0xCFFF, 0xCFFF, 0xD7FF, 0xD7FF, 0xCFFF, 0xD7FF, 0xCFFF, 0xD7FF, 0xD7DF, 0xD7DF, 0xCFFF, 0xD7DF, 0xCFFF, 0xD7FF, 0xD7FF, 0xCFFF, 0xD7FF, 0xCFFF, 0xD7FF, 0xD7DF, 0xD7FF, 0xD7FF, 0xCFFF, 0xCFFF, 0xD7FF, 0xCFFF, 0xD7DF, 0xCFFF, 0xD7FF, 0xD7DF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xCFFF, 0xD7FF, 0xCFDF, 0xD7DF, 0xCFDF, 0xCFFF, 0xD7DF, 0xACD8, 0x8191, 0x9151, 0x9931, 0x9931, 0x9931, 0x9911, 0x9931, 0x9931, 0x9931, 0xBE3B, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7DF, 0xD7DF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7DF, 0xCFFF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7DF, 0xD7DF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7FF, 0xD7DF, 0xD7FF, 0xD7DF, 0xD7FF, 0xD7DF, 0xD65C, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0x310E, 0xD395, 0xD375, 0xD375, 0xD5BA, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xC77E, 0xBE5B, 0xBE3C, 0xB57A, 0xACB8, 0xBDBB, 0xC63C, 0xBE3B, 0xC71E, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xC77E, 0xBE5C, 0xB5DB, 0xACB8, 0xAC98, 0xBD5A, 0xBE3C, 0xC61C, 0xC69D, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xACB9, 0x8191, 0x9151, 0x9911, 0x9931, 0x9931, 0x9931, 0x9931, 0x9911, 0xA111, 0xBE3B, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xD7DF, 0xCFDF, 0xCF5E, 0xBE5C, 0xBE5C, 0xC63C, 0xC61C, 0xCEFD, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFFF, 0xCFDF, 0xD63B, 0xD375, 0xD395, 0xD375, 0xD395, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD375, 0xD395, 0xD375, 0xD375, 0xD375, 0xD395, 0x79F1, 0xD355, 0xD355, 0xD355, 0xCF7E, 0xC7DF, 0xCFBF, 0xCFDF, 0xC7DF, 0xC7DF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFBF, 0xCFDF, 0xCFDF, 0xCFBF, 0xBEFD, 0xACB8, 0x8A52, 0x9151, 0x9131, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9911, 0xA192, 0xAB96, 0xBE7D, 0xCFDF, 0xC7DF, 0xCFBF, 0xC7DF, 0xCFDF, 0xCFBF, 0xC75E, 0xAD19, 0x92B4, 0x8971, 0x9151, 0x9931, 0x9931, 0x9911, 0x9911, 0xA111, 0x9931, 0xA111, 0x9911, 0xAB36, 0xBD5A, 0xC75E, 0xCFDF, 0xC7BF, 0xC7BF, 0xCFDF, 0xC7DF, 0xC7BF, 0xC7DF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCFDF, 0xC7DF, 0xCFBF, 0xC7DF, 0xC7BF, 0xCFBF, 0xC7DF, 0xA4B8, 0x8191, 0x9151, 0x9931, 0x9911, 0x9931, 0x9931, 0x9911, 0x9931, 0x9912, 0xBE3B, 0xCFBF, 0xCFDF, 0xCFBF, 0xCFDF, 0xCFDF, 0xB5DA, 0x8A12, 0x8971, 0x9931, 0x9931, 0xA111, 0x9931, 0xAB35, 0xC75E, 0xCFBF, 0xCFDF, 0xC7DF, 0xC7DF, 0xCFDF, 0xCFDF, 0xCFBF, 0xC7DF, 0xC7DF, 0xCFDF, 0xCFDF, 0xCFDF, 0xC7DF, 0xCFDF, 0xCFDF, 0xCFDF, 0xCE1B, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, 0xD355, @@ -79,15 +77,70 @@ const uint16_t marlin_logo_195x59x16[11505] = { 0x80F0, 0xA111, 0xA111, 0xC2B0, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xE50E, 0x8191, 0x9A12, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xECF1, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xC3EF, 0x8991, 0xAA93, 0xD395, 0xD395, 0xD395, 0xD375, 0xD395, 0xD395, 0xD395, 0xF58F, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xC3EF, 0x8191, 0xAA93, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xF58F, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xE50E, 0x89D1, 0xA253, 0xCB75, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD376, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xECF1, 0x8191, 0x8191, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xECF1, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xF60E, 0x9A70, 0x91F2, 0xCB75, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xC314, 0x8191, 0xAA93, 0xD395, 0xD396, 0xD395, 0xD395, 0xD375, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xECF2, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4E, 0xFE4D, 0xFE4E, 0xFE4D, 0xFE4E, 0xA2D0, 0x8191, 0xC314, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xFE4E, 0xFE4F, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xC2B0, 0xA111, 0xA111, 0x80F0, 0x60EF, 0xA111, 0xA111, 0xA112, 0xFE2D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xE54E, 0x8191, 0x9A12, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD375, 0xD395, 0xED11, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE8D, 0xC40F, 0x8191, 0xAA93, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xD375, 0xF5CF, 0xFE6D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE6D, 0xC40F, 0x8191, 0xAA93, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xF5CE, 0xFE6D, 0xFE6D, 0xFE8D, 0xFE6C, 0xFE8D, 0xF62D, 0xC40F, 0x9A12, 0xB2D4, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xECF1, 0x8191, 0x8191, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xED11, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE8D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6C, 0xFE8D, 0xFE6D, 0xFE2D, 0xBBCF, 0x89B1, 0xBAF4, 0xD395, 0xD395, 0xD395, 0xD375, 0xD395, 0xD395, 0xD396, 0xC314, 0x8191, 0xAA93, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xED12, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xA2D0, 0x8191, 0xC314, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xFE8F, 0xFE8F, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE2D, 0xA112, 0xA111, 0xA111, 0x60EF, 0x28CD, 0xA111, 0xA111, 0xA111, 0xCBCF, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xF5ED, 0x89D1, 0x91D2, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD396, 0xD395, 0xED11, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xC42F, 0x81B1, 0xAA93, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xF5EF, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFECC, 0xFEAD, 0xC42F, 0x8191, 0xAA93, 0xD395, 0xD395, 0xD396, 0xD395, 0xD395, 0xD395, 0xD395, 0xF5EF, 0xFEAD, 0xFEAC, 0xFEAD, 0xFEAD, 0xFEAC, 0xFEAD, 0xFEAD, 0xF64D, 0xD4CE, 0xBBD0, 0xC3B2, 0xC314, 0xD395, 0xD375, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xED12, 0x8191, 0x8191, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD375, 0xD395, 0xD395, 0xD395, 0xED31, 0xFEAC, 0xFEAC, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xEE0D, 0xCC6F, 0xBB51, 0xBAD4, 0xCB55, 0xD395, 0xD395, 0xD395, 0xD395, 0xC334, 0x8191, 0xB294, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD375, 0xD395, 0xED11, 0xFEAE, 0xFECE, 0xFEAD, 0xFEAE, 0xFEAD, 0xFECE, 0xFEAE, 0xFEAE, 0xA2F0, 0x8191, 0xC314, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xD395, 0xDC34, 0xFEAF, 0xFED0, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xCBCF, 0xA111, 0xA111, 0xA111, 0x28CD, - 0x18AD, 0x8110, 0x9911, 0xA111, 0xA171, 0xF5ED, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAC, 0xFE6D, 0xF5CF, 0xF5EF, 0xF5CF, 0xF5CF, 0xF5EF, 0xF5CF, 0xFE4D, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFE4E, 0xF5EF, 0xF5EF, 0xF5CF, 0xF5EE, 0xF5EF, 0xF5EF, 0xF5EF, 0xFE8D, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAD, 0xFE8D, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAC, 0xFEAC, 0xFEAD, 0xF64D, 0xF5EF, 0xF5CF, 0xF5EF, 0xF5CF, 0xF5EF, 0xF5EF, 0xF5EF, 0xFE6E, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAC, 0xFEAC, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAC, 0xFEAD, 0xFEAD, 0xF60E, 0xF5EF, 0xF5CF, 0xF5EF, 0xF5EF, 0xF5CF, 0xF64E, 0xFEAC, 0xFEAD, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5CF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5CF, 0xFE4D, 0xFEAC, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAC, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAC, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFE6D, 0xF5EF, 0xF5EF, 0xF5CF, 0xF5CF, 0xFEAD, 0xF62E, 0xF5EF, 0xF5D0, 0xF5EF, 0xF5CF, 0xF5F0, 0xF5F0, 0xF5EF, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5EF, 0xF5F0, 0xFE4F, 0xFECE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAF, 0xF610, 0xF5D0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF610, 0xFEAF, 0xFEAF, 0xFEAF, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xF5ED, 0xA171, 0xA111, 0x9911, 0x8110, 0x18AD, - 0x20AC, 0x38CE, 0x9931, 0x9931, 0x9931, 0xAA31, 0xFE2D, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFEAD, 0xFE8C, 0xFEAC, 0xFEAC, 0xFE8C, 0xFE8C, 0xFEAC, 0xFEAD, 0xFE8D, 0xFE8C, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFE8C, 0xFE8C, 0xFEAC, 0xFEAC, 0xFEAD, 0xFE8C, 0xFEAD, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8C, 0xFEAD, 0xFE8C, 0xFE8C, 0xFEAD, 0xFEAD, 0xFEAC, 0xFEAC, 0xFE8C, 0xFE8C, 0xFEAC, 0xFE8C, 0xFEAC, 0xFEAD, 0xFEAD, 0xFE8D, 0xFE8C, 0xFEAD, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8D, 0xFEAC, 0xFE8C, 0xFEAC, 0xFE8D, 0xFEAD, 0xFEAD, 0xFE8C, 0xFEAC, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8C, 0xFEAC, 0xFE8D, 0xFE8C, 0xFEAD, 0xFEAD, 0xFE8C, 0xFE8C, 0xFE8C, 0xFEAD, 0xFE8C, 0xFEAC, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFE8C, 0xFEAC, 0xFE8D, 0xFEAC, 0xFEAD, 0xFEAD, 0xFE8C, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAC, 0xFE8C, 0xFEAD, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFEAD, 0xFEAD, 0xFEAD, 0xFE8D, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFE8D, 0xFE8E, 0xFEAD, 0xFEAE, 0xFEAE, 0xFEAD, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFE8E, 0xFE8E, 0xFEAE, 0xFEAE, 0xFEAE, 0xFE8E, 0xFEAE, 0xFEAE, 0xFEAE, 0xFE8E, 0xFE8E, 0xFEAE, 0xFEAF, 0xFEAE, 0xFEAE, 0xFEAF, 0xFE8E, 0xFEAF, 0xFEAF, 0xFEAF, 0xFEAF, 0xFEAF, 0xFE8F, 0xFEB0, 0xFEAF, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE2D, 0xAA31, 0x9931, 0x9931, 0x9931, 0x38CE, 0x20AC, - 0x20AD, 0x20AC, 0x60EF, 0x9912, 0x9931, 0x9931, 0xB270, 0xF62D, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE6D, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8E, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8F, 0xFE8E, 0xFE8E, 0xFE8F, 0xFE8F, 0xFE8E, 0xFE8F, 0xFE8F, 0xFE8E, 0xFE8F, 0xFE8E, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE90, 0xFE90, 0xFEB0, 0xFE8C, 0xFE8C, 0xF62D, 0xB270, 0x9931, 0x9931, 0x9912, 0x60EF, 0x20AC, 0x20AD, - 0x18AC, 0x20AC, 0x28AD, 0x8110, 0x9931, 0x9931, 0x9911, 0xAA31, 0xF5CD, 0xFE8C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE8C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE8C, 0xFE6D, 0xFE6D, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6C, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE8E, 0xFE8D, 0xFE8D, 0xFE6E, 0xFE8D, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE8F, 0xFE8F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE8F, 0xFE6F, 0xFE6F, 0xFE8F, 0xFE8F, 0xFE6F, 0xFE6F, 0xFE8F, 0xFE6F, 0xFE6F, 0xFE8F, 0xFE8F, 0xFE6F, 0xFE8F, 0xFE8F, 0xFE6F, 0xFE90, 0xFE8F, 0xFE8F, 0xFE90, 0xFE90, 0xFE8C, 0xF5CD, 0xAA31, 0x9911, 0x9931, 0x9931, 0x8110, 0x28AD, 0x20AC, 0x18AC, - 0x20AC, 0x20AC, 0x18AC, 0x28AD, 0x9111, 0x9931, 0x9931, 0x9931, 0xA171, 0xCBCF, 0xF60D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6C, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6C, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6C, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6E, 0xFE6E, 0xFE4E, 0xFE6D, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6F, 0xFE6E, 0xFE6E, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE70, 0xFE70, 0xFE6F, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE90, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE71, 0xFE71, 0xFE71, 0xE471, 0xCBCF, 0xA171, 0x9931, 0x9931, 0x9931, 0x9111, 0x28AD, 0x18AC, 0x20AC, 0x20AC, - 0x18AC, 0x18AC, 0x18AC, 0x20AC, 0x28CD, 0x8111, 0x9931, 0x9912, 0x9931, 0x9931, 0x9911, 0xBAB0, 0xDC6F, 0xE50F, 0xE50E, 0xFE4E, 0xFE6E, 0xFE4E, 0xFE6D, 0xFE4E, 0xFE4E, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4E, 0xFE4E, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4E, 0xFE4E, 0xFE4E, 0xFE4E, 0xFE6E, 0xFE6E, 0xFE4E, 0xFE4E, 0xFE4E, 0xFE6E, 0xFE6E, 0xFE4E, 0xFE6F, 0xFE6E, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE4F, 0xFE6F, 0xFE70, 0xFE50, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xF612, 0xE531, 0xE512, 0xD472, 0xB271, 0x9931, 0x9931, 0x9931, 0x9912, 0x9931, 0x8111, 0x28CD, 0x20AC, 0x18AC, 0x18AC, 0x18AC, - 0x20AC, 0x20AC, 0x18AC, 0x20AC, 0x20AC, 0x28CC, 0x610F, 0x9911, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9932, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9912, 0x9931, 0x9931, 0x9931, 0x9931, 0x9911, 0x9931, 0x9911, 0x9931, 0x9931, 0x9911, 0x9911, 0x9931, 0x9931, 0x9911, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9911, 0x9911, 0x9931, 0x9932, 0x9931, 0x9931, 0x9911, 0x9931, 0x9931, 0x9912, 0x9931, 0x9931, 0x9931, 0x9911, 0x610F, 0x28CC, 0x20AC, 0x20AC, 0x18AC, 0x20AC, 0x20AC, - 0x18AC, 0x18AC, 0x20AC, 0x20AC, 0x20AC, 0x20AC, 0x18AC, 0x40CE, 0x7910, 0x9931, 0x9931, 0x9932, 0x9931, 0x9931, 0x9931, 0x9911, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x7910, 0x40CE, 0x18AC, 0x20AC, 0x20AC, 0x20AC, 0x20AC, 0x18AC, 0x18AC, - 0x20AC, 0x20AC, 0x20AC, 0x20AC, 0x20AC, 0x20AC, 0x20AC, 0x20AC, 0x18AB, 0x30CC, 0x58CF, 0x7910, 0x9931, 0x9931, 0x9912, 0x9931, 0x9931, 0x9911, 0x9931, 0x9911, 0x9932, 0x9931, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9931, 0x9932, 0x9911, 0x9931, 0x9911, 0x9931, 0x9931, 0x9912, 0x9931, 0x9931, 0x7910, 0x58CF, 0x30CC, 0x18AB, 0x20AC, 0x20AC, 0x20AC, 0x20AC, 0x20AC, 0x20AC, 0x20AC, 0x20AC + 0x0001, 0x8110, 0x9911, 0xA111, 0xA171, 0xF5ED, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAC, 0xFE6D, 0xF5CF, 0xF5EF, 0xF5CF, 0xF5CF, 0xF5EF, 0xF5CF, 0xFE4D, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFE4E, 0xF5EF, 0xF5EF, 0xF5CF, 0xF5EE, 0xF5EF, 0xF5EF, 0xF5EF, 0xFE8D, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAD, 0xFE8D, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAC, 0xFEAC, 0xFEAD, 0xF64D, 0xF5EF, 0xF5CF, 0xF5EF, 0xF5CF, 0xF5EF, 0xF5EF, 0xF5EF, 0xFE6E, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAC, 0xFEAC, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAC, 0xFEAD, 0xFEAD, 0xF60E, 0xF5EF, 0xF5CF, 0xF5EF, 0xF5EF, 0xF5CF, 0xF64E, 0xFEAC, 0xFEAD, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5CF, 0xF5EF, 0xF5EF, 0xF5EF, 0xF5CF, 0xFE4D, 0xFEAC, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAC, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAC, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFE6D, 0xF5EF, 0xF5EF, 0xF5CF, 0xF5CF, 0xFEAD, 0xF62E, 0xF5EF, 0xF5D0, 0xF5EF, 0xF5CF, 0xF5F0, 0xF5F0, 0xF5EF, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5EF, 0xF5F0, 0xFE4F, 0xFECE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAF, 0xF610, 0xF5D0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF5F0, 0xF610, 0xFEAF, 0xFEAF, 0xFEAF, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xF5ED, 0xA171, 0xA111, 0x9911, 0x8110, 0x0001, + 0x0001, 0x38CE, 0x9931, 0x9931, 0x9931, 0xAA31, 0xFE2D, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFEAD, 0xFE8C, 0xFEAC, 0xFEAC, 0xFE8C, 0xFE8C, 0xFEAC, 0xFEAD, 0xFE8D, 0xFE8C, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFE8C, 0xFE8C, 0xFEAC, 0xFEAC, 0xFEAD, 0xFE8C, 0xFEAD, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8C, 0xFEAD, 0xFE8C, 0xFE8C, 0xFEAD, 0xFEAD, 0xFEAC, 0xFEAC, 0xFE8C, 0xFE8C, 0xFEAC, 0xFE8C, 0xFEAC, 0xFEAD, 0xFEAD, 0xFE8D, 0xFE8C, 0xFEAD, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8D, 0xFEAC, 0xFE8C, 0xFEAC, 0xFE8D, 0xFEAD, 0xFEAD, 0xFE8C, 0xFEAC, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8C, 0xFEAC, 0xFE8D, 0xFE8C, 0xFEAD, 0xFEAD, 0xFE8C, 0xFE8C, 0xFE8C, 0xFEAD, 0xFE8C, 0xFEAC, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFE8C, 0xFEAC, 0xFE8D, 0xFEAC, 0xFEAD, 0xFEAD, 0xFE8C, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAC, 0xFE8C, 0xFEAD, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFEAD, 0xFEAD, 0xFEAD, 0xFE8D, 0xFEAD, 0xFEAD, 0xFEAD, 0xFEAD, 0xFE8D, 0xFE8E, 0xFEAD, 0xFEAE, 0xFEAE, 0xFEAD, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFEAE, 0xFE8E, 0xFE8E, 0xFEAE, 0xFEAE, 0xFEAE, 0xFE8E, 0xFEAE, 0xFEAE, 0xFEAE, 0xFE8E, 0xFE8E, 0xFEAE, 0xFEAF, 0xFEAE, 0xFEAE, 0xFEAF, 0xFE8E, 0xFEAF, 0xFEAF, 0xFEAF, 0xFEAF, 0xFEAF, 0xFE8F, 0xFEB0, 0xFEAF, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE2D, 0xAA31, 0x9931, 0x9931, 0x9931, 0x38CE, 0x0001, + 0x0001, 0x0001, 0x60EF, 0x9912, 0x9931, 0x9931, 0xB270, 0xF62D, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE6D, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8C, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8E, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8D, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8E, 0xFE8F, 0xFE8E, 0xFE8E, 0xFE8F, 0xFE8F, 0xFE8E, 0xFE8F, 0xFE8F, 0xFE8E, 0xFE8F, 0xFE8E, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE8F, 0xFE90, 0xFE90, 0xFEB0, 0xFE8C, 0xFE8C, 0xF62D, 0xB270, 0x9931, 0x9931, 0x9912, 0x60EF, 0x0001, 0x0001, + 0x0001, 0x0001, 0x28AD, 0x8110, 0x9931, 0x9931, 0x9911, 0xAA31, 0xF5CD, 0xFE8C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE8C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE8C, 0xFE6D, 0xFE6D, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6D, 0xFE6C, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6C, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE8E, 0xFE8D, 0xFE8D, 0xFE6E, 0xFE8D, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE8F, 0xFE8F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE8F, 0xFE6F, 0xFE6F, 0xFE8F, 0xFE8F, 0xFE6F, 0xFE6F, 0xFE8F, 0xFE6F, 0xFE6F, 0xFE8F, 0xFE8F, 0xFE6F, 0xFE8F, 0xFE8F, 0xFE6F, 0xFE90, 0xFE8F, 0xFE8F, 0xFE90, 0xFE90, 0xFE8C, 0xF5CD, 0xAA31, 0x9911, 0x9931, 0x9931, 0x8110, 0x28AD, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x28AD, 0x9111, 0x9931, 0x9931, 0x9931, 0xA171, 0xCBCF, 0xF60D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6C, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6C, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6C, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6D, 0xFE6D, 0xFE6D, 0xFE4D, 0xFE6E, 0xFE6E, 0xFE4E, 0xFE6D, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6E, 0xFE6F, 0xFE6E, 0xFE6E, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE70, 0xFE70, 0xFE6F, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE90, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE71, 0xFE71, 0xFE71, 0xE471, 0xCBCF, 0xA171, 0x9931, 0x9931, 0x9931, 0x9111, 0x28AD, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x28CD, 0x8111, 0x9931, 0x9912, 0x9931, 0x9931, 0x9911, 0xBAB0, 0xDC6F, 0xE50F, 0xE50E, 0xFE4E, 0xFE6E, 0xFE4E, 0xFE6D, 0xFE4E, 0xFE4E, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4E, 0xFE4E, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4D, 0xFE4E, 0xFE4E, 0xFE4E, 0xFE4E, 0xFE6E, 0xFE6E, 0xFE4E, 0xFE4E, 0xFE4E, 0xFE6E, 0xFE6E, 0xFE4E, 0xFE6F, 0xFE6E, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE4F, 0xFE6F, 0xFE70, 0xFE50, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE70, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xFE71, 0xF612, 0xE531, 0xE512, 0xD472, 0xB271, 0x9931, 0x9931, 0x9931, 0x9912, 0x9931, 0x8111, 0x28CD, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x28CC, 0x610F, 0x9911, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9932, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9912, 0x9931, 0x9931, 0x9931, 0x9931, 0x9911, 0x9931, 0x9911, 0x9931, 0x9931, 0x9911, 0x9911, 0x9931, 0x9931, 0x9911, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9911, 0x9911, 0x9931, 0x9932, 0x9931, 0x9931, 0x9911, 0x9931, 0x9931, 0x9912, 0x9931, 0x9931, 0x9931, 0x9911, 0x610F, 0x28CC, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x40CE, 0x7910, 0x9931, 0x9931, 0x9932, 0x9931, 0x9931, 0x9931, 0x9911, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x7910, 0x40CE, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x18AB, 0x30CC, 0x58CF, 0x7910, 0x9931, 0x9931, 0x9912, 0x9931, 0x9931, 0x9911, 0x9931, 0x9911, 0x9932, 0x9931, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9911, 0x9931, 0x9932, 0x9911, 0x9931, 0x9911, 0x9931, 0x9931, 0x9912, 0x9931, 0x9931, 0x7910, 0x58CF, 0x30CC, 0x18AB, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001 }; -#endif // HAS_GRAPHICAL_TFT +// Saves 11340 bytes +const uint8_t marlin_logo_195x59x16_rle16[11670] = { + 0x08, 0x00, 0x01, 0x82, 0x31, 0x0E, 0x7A, 0x32, 0xAA, 0xD3, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x7F, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x0B, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xD3, 0x96, 0x12, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x0A, 0xD3, 0x95, 0x06, 0x00, 0x01, 0x81, 0x49, 0x6F, 0xAA, 0xD3, 0x06, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x7F, 0xD3, 0x95, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x08, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x1E, 0xD3, 0x95, 0x04, 0x00, 0x01, 0x82, 0x20, 0xEE, 0x82, 0x52, 0xD3, 0x96, 0x0A, 0xD3, 0x95, 0x80, 0xD3, 0xB5, 0x7F, 0xD3, 0x95, 0x0D, 0xD3, 0x95, 0x80, 0xDB, 0x95, 0x15, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x08, 0xD3, 0x95, 0x03, 0x00, 0x01, 0x81, 0x28, 0xEE, 0xB3, 0x14, 0x04, 0xD3, 0x95, 0x83, 0xD4, 0xF8, 0xD6, 0x5C, 0xD6, 0xDD, 0xD6, 0xFD, 0x01, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x01, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x7A, 0xD7, 0xFF, 0x06, 0xDF, 0xFF, 0x06, 0xD7, 0xFF, 0x81, 0xDF, 0xFF, 0xD5, 0x39, 0x19, 0xD3, 0x95, 0x80, 0xDB, 0x95, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x02, 0x00, 0x01, 0x82, 0x28, 0xEE, 0xCB, 0x55, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0xD6, 0xD5, 0xDB, 0xD7, 0xBF, 0x7F, 0xD7, 0xFF, 0x04, 0xD7, 0xFF, 0x02, 0xDF, 0xFF, 0x80, 0xD7, 0xFF, 0x04, 0xDF, 0xFF, 0x05, 0xD7, 0xFF, 0x81, 0xDF, 0xFF, 0xD5, 0x39, 0x21, 0xD3, 0x95, 0x01, 0x00, 0x01, 0x81, 0x28, 0xEE, 0xB3, 0x14, 0x02, 0xD3, 0x95, 0x81, 0xD4, 0x77, 0xD7, 0x7E, + 0x01, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x03, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x7E, 0xD7, 0xFF, 0x03, 0xDF, 0xFF, 0x81, 0xD7, 0xFF, 0xDF, 0xFF, 0x0A, 0xD7, 0xFF, 0x80, 0xD5, 0x39, 0x20, 0xD3, 0x95, 0x82, 0x00, 0x01, 0x18, 0xCD, 0x82, 0x52, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xD4, 0xB8, 0xD7, 0xBF, 0x7F, 0xD7, 0xFF, 0x08, 0xD7, 0xFF, 0x01, 0xDF, 0xFF, 0x01, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x08, 0xD7, 0xFF, 0x83, 0xDF, 0xFF, 0xD7, 0xFF, 0xDF, 0xFF, 0xD5, 0x39, 0x14, 0xD3, 0x95, 0x01, 0xD3, 0x96, 0x08, 0xD3, 0x95, 0x81, 0x00, 0x01, 0x49, 0x6F, 0x02, 0xD3, 0x95, 0x81, 0xD4, 0x57, 0xD7, 0xBF, 0x73, 0xD7, 0xFF, 0x84, 0xD7, 0xDF, 0xD7, 0xFF, 0xCF, 0x3E, 0xC6, 0x7C, 0xC5, 0x3A, 0x05, 0xAC, 0xB8, 0x81, 0xC5, 0x3A, 0xC6, 0x7C, 0x1A, 0xD7, 0xFF, 0x82, 0xD6, 0x5B, 0xD3, 0x95, 0xD3, 0x96, 0x17, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x83, 0xD3, 0x96, 0xD3, 0x95, 0x20, 0xAE, 0xA2, 0xD3, 0x01, 0xD3, 0x95, 0x81, 0xD3, 0xD6, 0xD7, 0x5E, 0x01, 0xCF, 0xFF, 0x01, 0xD7, 0xFF, 0x01, 0xCF, 0xFF, 0x01, 0xD7, 0xFF, 0x80, 0xD7, 0xDF, 0x02, 0xD7, 0xFF, 0x80, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x8A, 0xCF, 0xDF, 0xCF, 0xFF, 0xD7, 0xFF, 0xD7, 0xDF, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xFF, 0xD7, 0xDF, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xDF, 0x01, 0xCF, 0xFF, 0x01, 0xD7, 0xFF, 0x83, 0xCF, 0xFF, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xFF, 0x01, 0xD7, 0xDF, 0x82, 0xCF, 0xFF, 0xD7, 0xDF, 0xCF, 0xFF, 0x01, 0xD7, 0xFF, 0x84, 0xCF, 0xFF, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xFF, + 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x01, 0xCF, 0xFF, 0x85, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xDF, 0xCF, 0xFF, 0xD7, 0xFF, 0xD7, 0xDF, 0x37, 0xD7, 0xFF, 0x89, 0xCF, 0xFF, 0xD7, 0xFF, 0xCF, 0xDF, 0xD7, 0xDF, 0xCF, 0xDF, 0xCF, 0xFF, 0xD7, 0xDF, 0xAC, 0xD8, 0x81, 0x91, 0x91, 0x51, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0xBE, 0x3B, 0x03, 0xD7, 0xFF, 0x01, 0xD7, 0xDF, 0x02, 0xD7, 0xFF, 0x81, 0xD7, 0xDF, 0xCF, 0xFF, 0x05, 0xD7, 0xFF, 0x01, 0xD7, 0xDF, 0x03, 0xD7, 0xFF, 0x85, 0xD7, 0xDF, 0xD7, 0xFF, 0xD7, 0xDF, 0xD7, 0xFF, 0xD7, 0xDF, 0xD6, 0x5C, 0x1D, 0xD3, 0x95, 0x81, 0x31, 0x0E, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x80, 0xD5, 0xBA, 0x0F, 0xCF, 0xDF, 0x88, 0xC7, 0x7E, 0xBE, 0x5B, 0xBE, 0x3C, 0xB5, 0x7A, 0xAC, 0xB8, 0xBD, 0xBB, 0xC6, 0x3C, 0xBE, 0x3B, 0xC7, 0x1E, 0x0B, 0xCF, 0xDF, 0x88, 0xC7, 0x7E, 0xBE, 0x5C, 0xB5, 0xDB, 0xAC, 0xB8, 0xAC, 0x98, 0xBD, 0x5A, 0xBE, 0x3C, 0xC6, 0x1C, 0xC6, 0x9D, 0x49, 0xCF, 0xDF, 0x83, 0xAC, 0xB9, 0x81, 0x91, 0x91, 0x51, 0x99, 0x11, 0x03, 0x99, 0x31, 0x82, 0x99, 0x11, 0xA1, 0x11, 0xBE, 0x3B, 0x03, 0xCF, 0xDF, 0x82, 0xD7, 0xDF, 0xCF, 0xDF, 0xCF, 0x5E, 0x01, 0xBE, 0x5C, 0x82, 0xC6, 0x3C, 0xC6, 0x1C, 0xCE, 0xFD, 0x0E, 0xCF, 0xDF, 0x86, 0xCF, 0xFF, 0xCF, 0xDF, 0xD6, 0x3B, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x75, 0xD3, 0x95, 0x13, 0xD3, 0x75, 0x80, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x81, 0xD3, 0x95, 0x79, 0xF1, 0x02, 0xD3, 0x55, 0x83, 0xCF, 0x7E, 0xC7, 0xDF, 0xCF, 0xBF, 0xCF, 0xDF, 0x01, 0xC7, 0xDF, + 0x03, 0xCF, 0xDF, 0x80, 0xCF, 0xBF, 0x01, 0xCF, 0xDF, 0x85, 0xCF, 0xBF, 0xBE, 0xFD, 0xAC, 0xB8, 0x8A, 0x52, 0x91, 0x51, 0x91, 0x31, 0x05, 0x99, 0x31, 0x8E, 0x99, 0x11, 0xA1, 0x92, 0xAB, 0x96, 0xBE, 0x7D, 0xCF, 0xDF, 0xC7, 0xDF, 0xCF, 0xBF, 0xC7, 0xDF, 0xCF, 0xDF, 0xCF, 0xBF, 0xC7, 0x5E, 0xAD, 0x19, 0x92, 0xB4, 0x89, 0x71, 0x91, 0x51, 0x01, 0x99, 0x31, 0x01, 0x99, 0x11, 0x87, 0xA1, 0x11, 0x99, 0x31, 0xA1, 0x11, 0x99, 0x11, 0xAB, 0x36, 0xBD, 0x5A, 0xC7, 0x5E, 0xCF, 0xDF, 0x01, 0xC7, 0xBF, 0x83, 0xCF, 0xDF, 0xC7, 0xDF, 0xC7, 0xBF, 0xC7, 0xDF, 0x38, 0xCF, 0xDF, 0x8A, 0xC7, 0xDF, 0xCF, 0xBF, 0xC7, 0xDF, 0xC7, 0xBF, 0xCF, 0xBF, 0xC7, 0xDF, 0xA4, 0xB8, 0x81, 0x91, 0x91, 0x51, 0x99, 0x31, 0x99, 0x11, 0x01, 0x99, 0x31, 0x86, 0x99, 0x11, 0x99, 0x31, 0x99, 0x12, 0xBE, 0x3B, 0xCF, 0xBF, 0xCF, 0xDF, 0xCF, 0xBF, 0x01, 0xCF, 0xDF, 0x82, 0xB5, 0xDA, 0x8A, 0x12, 0x89, 0x71, 0x01, 0x99, 0x31, 0x85, 0xA1, 0x11, 0x99, 0x31, 0xAB, 0x35, 0xC7, 0x5E, 0xCF, 0xBF, 0xCF, 0xDF, 0x01, 0xC7, 0xDF, 0x01, 0xCF, 0xDF, 0x80, 0xCF, 0xBF, 0x01, 0xC7, 0xDF, 0x02, 0xCF, 0xDF, 0x80, 0xC7, 0xDF, 0x02, 0xCF, 0xDF, 0x80, 0xCE, 0x1B, 0x1B, 0xD3, 0x55, 0x80, 0xA2, 0x93, 0x01, 0xD3, 0x35, 0x82, 0xCC, 0x98, 0xC7, 0xBF, 0xC7, 0xBE, 0x09, 0xC7, 0xBF, 0x85, 0xC7, 0x5E, 0xA4, 0xB8, 0x81, 0x91, 0x91, 0x51, 0x99, 0x11, 0xA1, 0x31, 0x01, 0xA1, 0x11, 0x82, 0x99, 0x31, 0xA1, 0x11, 0xA1, 0x12, 0x05, 0xA1, 0x11, 0x89, 0xAB, 0x35, 0xBE, 0xFE, 0xC7, 0xBF, 0xC7, 0xBE, 0xC7, + 0xBF, 0xB5, 0xDB, 0x89, 0xF1, 0x89, 0x71, 0x99, 0x31, 0x99, 0x11, 0x04, 0xA1, 0x11, 0x81, 0xA1, 0x32, 0x99, 0x11, 0x03, 0xA1, 0x11, 0x82, 0xA1, 0x72, 0xBD, 0x3A, 0xC7, 0xBE, 0x02, 0xC7, 0xBF, 0x81, 0xC7, 0xBE, 0xC7, 0x9F, 0x37, 0xC7, 0xBF, 0x80, 0xC7, 0x9F, 0x05, 0xC7, 0xBF, 0x8B, 0xAC, 0x98, 0x81, 0x91, 0x91, 0x51, 0x99, 0x31, 0xA1, 0x11, 0xA1, 0x31, 0xA1, 0x11, 0xA1, 0x31, 0xA1, 0x11, 0x99, 0x31, 0xBE, 0x1B, 0xC7, 0x9F, 0x02, 0xC7, 0xBF, 0x85, 0xBE, 0xFD, 0x89, 0xF2, 0x89, 0x91, 0x99, 0x31, 0xA1, 0x12, 0xA1, 0x31, 0x02, 0xA1, 0x11, 0x80, 0xAB, 0x97, 0x01, 0xC7, 0xBF, 0x80, 0xC7, 0xBE, 0x0D, 0xC7, 0xBF, 0x81, 0xC6, 0xDD, 0xD3, 0x75, 0x16, 0xD3, 0x35, 0x80, 0xD3, 0x34, 0x01, 0xD3, 0x35, 0x01, 0xD3, 0x15, 0x83, 0xD3, 0x14, 0xC5, 0xFB, 0xC7, 0x9F, 0xC7, 0x9E, 0x01, 0xC7, 0xBF, 0x01, 0xC7, 0x9E, 0x89, 0xC7, 0xBF, 0xC7, 0x9F, 0xBF, 0x9E, 0xBF, 0xBF, 0xBF, 0xBE, 0xB6, 0x7C, 0x8A, 0x53, 0x89, 0x71, 0xA1, 0x31, 0xA1, 0x12, 0x0A, 0xA1, 0x11, 0x80, 0xA1, 0x12, 0x01, 0xA1, 0x11, 0x85, 0xA1, 0x72, 0xB5, 0x39, 0xBF, 0x9F, 0x9B, 0xF6, 0x81, 0x91, 0x91, 0x51, 0x0C, 0xA1, 0x11, 0x80, 0xA1, 0x12, 0x01, 0xA1, 0x11, 0x83, 0xAB, 0x15, 0xBF, 0x3D, 0xC7, 0x9F, 0xC7, 0xBE, 0x01, 0xC7, 0x9F, 0x37, 0xC7, 0x9E, 0x82, 0xC7, 0x9F, 0xC7, 0x9E, 0xC7, 0x9F, 0x01, 0xC7, 0x9E, 0x84, 0xC7, 0xBF, 0xC7, 0x9F, 0xA4, 0xB8, 0x81, 0x91, 0x91, 0x51, 0x04, 0xA1, 0x11, 0x89, 0xA1, 0x12, 0xA1, 0x11, 0xBD, 0xFB, 0xC7, 0x9F, 0xC7, 0x9E, 0xC7, 0xBE, 0xC7, 0x9F, + 0xAC, 0xF9, 0x81, 0x91, 0x91, 0x71, 0x02, 0xA1, 0x11, 0x85, 0xA1, 0x12, 0xA1, 0x11, 0xA1, 0x31, 0xA1, 0x11, 0xBF, 0x3E, 0xBF, 0xBF, 0x02, 0xC7, 0x9E, 0x80, 0xC7, 0xBF, 0x02, 0xC7, 0x9E, 0x80, 0xBF, 0xBF, 0x02, 0xC7, 0x9E, 0x89, 0xBF, 0x9E, 0xC7, 0x9F, 0xC7, 0x9E, 0xBF, 0xBE, 0xC7, 0x9E, 0xC6, 0xBD, 0xD3, 0x55, 0xD2, 0xF5, 0xD3, 0x15, 0xCB, 0x14, 0x11, 0xD3, 0x14, 0x02, 0xD3, 0x15, 0x84, 0xD3, 0x14, 0xD2, 0xF4, 0xCA, 0xF4, 0xD2, 0xF4, 0xC6, 0x5C, 0x08, 0xBF, 0x9E, 0x83, 0xBF, 0x7F, 0xB6, 0x7C, 0x8A, 0x12, 0x89, 0x71, 0x01, 0xA1, 0x11, 0x82, 0xA9, 0x11, 0xA1, 0x11, 0xA9, 0x11, 0x02, 0xA1, 0x11, 0x01, 0xA9, 0x11, 0x02, 0xA1, 0x11, 0x80, 0xA9, 0x11, 0x02, 0xA1, 0x11, 0x84, 0xA9, 0x12, 0xA9, 0x11, 0xA1, 0xF3, 0x81, 0x91, 0x99, 0x31, 0x01, 0xA1, 0x11, 0x80, 0xA9, 0x12, 0x04, 0xA1, 0x11, 0x04, 0xA9, 0x11, 0x02, 0xA1, 0x11, 0x83, 0xA1, 0x12, 0xA9, 0x11, 0xAA, 0x54, 0xBF, 0x1D, 0x3F, 0xBF, 0x9E, 0x85, 0xB7, 0x9E, 0xBF, 0x9F, 0xA4, 0x98, 0x81, 0x91, 0x99, 0x51, 0xA9, 0x11, 0x04, 0xA1, 0x11, 0x88, 0xA9, 0x11, 0xB5, 0xFB, 0xBF, 0x9E, 0xBF, 0x9F, 0xBF, 0x9E, 0xBF, 0x9F, 0xA4, 0x98, 0x81, 0x91, 0x99, 0x51, 0x03, 0xA1, 0x11, 0x84, 0xA1, 0x12, 0xA1, 0x11, 0xA9, 0x11, 0xB5, 0xFB, 0xBF, 0x7E, 0x01, 0xBF, 0x9E, 0x80, 0xBF, 0x9F, 0x0D, 0xBF, 0x9E, 0x82, 0xBE, 0xBD, 0xD3, 0x35, 0xCA, 0xF4, 0x12, 0xD2, 0xF4, 0x83, 0xCA, 0xF4, 0xD2, 0xF4, 0xD2, 0xF5, 0xCA, 0xF4, 0x02, 0xD2, 0xD4, 0x84, 0xBE, 0x5C, 0xB7, 0x7E, 0xB7, 0x9E, 0xB7, 0x7E, 0xBF, + 0x7E, 0x02, 0xB7, 0x7E, 0x88, 0xB7, 0x9E, 0xBF, 0x7E, 0xAE, 0x7B, 0x89, 0xF2, 0x89, 0x71, 0xA1, 0x11, 0xA8, 0xF1, 0xA9, 0x11, 0xA8, 0xF1, 0x04, 0xA9, 0x11, 0x80, 0xA8, 0xF1, 0x02, 0xA9, 0x11, 0x82, 0xA8, 0xF1, 0xA9, 0x11, 0xA8, 0xF1, 0x01, 0xA9, 0x11, 0x80, 0xA9, 0x12, 0x01, 0xA9, 0x11, 0x86, 0xA1, 0x11, 0xA9, 0x11, 0xA8, 0xF1, 0xA9, 0x11, 0xA8, 0xF1, 0xA1, 0x11, 0xA9, 0x11, 0x01, 0xA8, 0xF1, 0x01, 0xA9, 0x11, 0x81, 0xA8, 0xF1, 0xA9, 0x11, 0x01, 0xA8, 0xF1, 0x80, 0xA9, 0x12, 0x02, 0xA9, 0x11, 0x83, 0xA8, 0xF1, 0xA1, 0x11, 0xAA, 0x34, 0xB7, 0x1E, 0x39, 0xBF, 0x7E, 0x01, 0xB7, 0x7E, 0x80, 0xBF, 0x7E, 0x01, 0xB7, 0x7E, 0x84, 0xBF, 0x7F, 0xB7, 0x7E, 0x9C, 0x97, 0x81, 0x91, 0x99, 0x51, 0x04, 0xA8, 0xF1, 0x84, 0xA9, 0x11, 0xA8, 0xF1, 0xB5, 0xDB, 0xBF, 0x7E, 0xB7, 0x7E, 0x01, 0xBF, 0x7E, 0x83, 0xA4, 0x78, 0x81, 0x91, 0x99, 0x51, 0xA9, 0x11, 0x01, 0xA8, 0xF1, 0x01, 0xA9, 0x11, 0x84, 0xA8, 0xF1, 0xA9, 0x11, 0xB5, 0xDB, 0xB7, 0x7F, 0xB7, 0x7E, 0x01, 0xBF, 0x7E, 0x80, 0xB7, 0x7E, 0x02, 0xBF, 0x7E, 0x01, 0xB7, 0x7E, 0x83, 0xBF, 0x7E, 0xB7, 0x7E, 0xBF, 0x7E, 0xB7, 0x7E, 0x01, 0xBF, 0x7E, 0x01, 0xB7, 0x7E, 0x82, 0xBF, 0x7E, 0xBE, 0x9D, 0xCB, 0x75, 0x15, 0xD2, 0xD4, 0x80, 0xD2, 0xD5, 0x02, 0xD2, 0xB4, 0x08, 0xB7, 0x7E, 0x86, 0xB7, 0x1D, 0x8A, 0x53, 0x81, 0x91, 0xA1, 0x11, 0xA8, 0xF1, 0xB0, 0xF1, 0xA9, 0x11, 0x16, 0xA8, 0xF1, 0x82, 0xA8, 0xF2, 0xA8, 0xF1, 0xB0, 0xF1, 0x0D, 0xA8, 0xF1, 0x80, 0xB2, 0xF5, 0x04, 0xB7, 0x7E, 0x80, 0xB7, + 0x5E, 0x02, 0xB7, 0x7E, 0x01, 0xB7, 0x5E, 0x81, 0xB7, 0x7E, 0xB7, 0x5E, 0x01, 0xB7, 0x7E, 0x80, 0xB7, 0x5E, 0x0C, 0xB7, 0x7E, 0x01, 0xB7, 0x5E, 0x14, 0xB7, 0x7E, 0x80, 0xB7, 0x5E, 0x01, 0xB7, 0x7E, 0x82, 0xB7, 0x5E, 0xB7, 0x7E, 0xB7, 0x5E, 0x06, 0xB7, 0x7E, 0x82, 0x9C, 0x78, 0x81, 0x91, 0x99, 0x51, 0x06, 0xA8, 0xF1, 0x80, 0xB5, 0xDB, 0x03, 0xB7, 0x7E, 0x82, 0x9C, 0x77, 0x81, 0x91, 0x91, 0x51, 0x06, 0xA8, 0xF1, 0x80, 0xB5, 0xDB, 0x02, 0xB7, 0x7E, 0x82, 0xB7, 0x5E, 0xB7, 0x7E, 0xB7, 0x5E, 0x06, 0xB7, 0x7E, 0x80, 0xB7, 0x5E, 0x04, 0xB7, 0x7E, 0x82, 0xB7, 0x5E, 0xB7, 0x1D, 0xCB, 0x96, 0x01, 0xD2, 0xB4, 0x86, 0xCA, 0xB4, 0xD2, 0xB4, 0xCA, 0xB4, 0xD2, 0xB4, 0xCA, 0xB4, 0xD2, 0xB4, 0xCA, 0xB4, 0x07, 0xD2, 0xB4, 0x80, 0xCA, 0x94, 0x02, 0xD2, 0xB4, 0x80, 0xCA, 0xB4, 0x01, 0xD2, 0x94, 0x80, 0xCA, 0x94, 0x04, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x89, 0xB7, 0x5E, 0x94, 0x16, 0x89, 0x91, 0x99, 0x51, 0xB0, 0xF1, 0xA8, 0xF1, 0xB0, 0xF1, 0xA8, 0xF1, 0xB0, 0xF1, 0xA8, 0xF1, 0x02, 0xB0, 0xF1, 0x80, 0xA8, 0xF1, 0x09, 0xB0, 0xF1, 0x01, 0xA8, 0xF1, 0x81, 0xB0, 0xF1, 0xA8, 0xF1, 0x02, 0xB0, 0xF1, 0x80, 0xB0, 0xD1, 0x01, 0xB0, 0xF1, 0x81, 0xB0, 0xF2, 0xA8, 0xF1, 0x01, 0xB0, 0xF1, 0x84, 0xB0, 0xD1, 0xB0, 0xF1, 0xB0, 0xF2, 0xA8, 0xF1, 0xB0, 0xF2, 0x02, 0xB0, 0xF1, 0x80, 0xA8, 0xF1, 0x01, 0xB0, 0xF1, 0x80, 0xAC, 0xF9, 0x01, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x05, 0xAF, 0x5E, 0x80, 0xAF, 0x7E, 0x02, 0xAF, 0x5E, 0x02, 0xB7, 0x5E, 0x83, + 0xAF, 0x5E, 0xB7, 0x5E, 0xAF, 0x5E, 0xB7, 0x5E, 0x03, 0xAF, 0x5E, 0x02, 0xB7, 0x5E, 0x02, 0xAF, 0x5E, 0x01, 0xB7, 0x5E, 0x0A, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x02, 0xAF, 0x5E, 0x01, 0xB7, 0x5E, 0x02, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x03, 0xAF, 0x5E, 0x81, 0xAF, 0x5D, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x82, 0x9C, 0x77, 0x81, 0x91, 0x99, 0x51, 0x06, 0xB0, 0xF1, 0x80, 0xAD, 0xBB, 0x03, 0xB7, 0x5E, 0x82, 0x9C, 0x78, 0x89, 0x91, 0x99, 0x51, 0x06, 0xB0, 0xF1, 0x80, 0xB5, 0xBB, 0x01, 0xB7, 0x5E, 0x04, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x02, 0xB7, 0x5E, 0x80, 0xAF, 0x5E, 0x02, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x8B, 0xB7, 0x5E, 0xAF, 0x5E, 0xAF, 0x1D, 0xCB, 0x75, 0xCA, 0x93, 0xD2, 0x94, 0xCA, 0x74, 0xCA, 0x94, 0xCA, 0x74, 0xD2, 0x74, 0xCA, 0x74, 0xD2, 0x94, 0x07, 0xCA, 0x94, 0x84, 0xD2, 0x94, 0xCA, 0x93, 0xCA, 0x94, 0xD2, 0x93, 0xCA, 0x74, 0x01, 0xD2, 0x74, 0x89, 0xCA, 0x53, 0xAF, 0x5E, 0xAF, 0x3E, 0xAF, 0x5E, 0xAF, 0x3E, 0xAF, 0x3D, 0xAF, 0x5D, 0xAF, 0x3D, 0xAF, 0x3E, 0xA6, 0x9C, 0x01, 0x81, 0x91, 0x02, 0xB0, 0xF1, 0x81, 0xB0, 0xD1, 0xB0, 0xF2, 0x01, 0xB0, 0xD1, 0x80, 0xB0, 0xF2, 0x01, 0xB0, 0xF1, 0x8C, 0xAA, 0x13, 0xB4, 0x18, 0xA4, 0x38, 0x9A, 0xB4, 0x99, 0x31, 0xA8, 0xF1, 0xB0, 0xF1, 0xB0, 0xF2, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x81, 0xB0, 0xF1, 0xB0, 0xD1, 0x03, 0xB0, 0xF1, 0x88, 0xAA, 0x74, 0xAC, 0x78, 0xAC, 0xF9, 0x9B, 0x35, 0x99, 0x31, + 0xA8, 0xF1, 0xB0, 0xF1, 0xB0, 0xF2, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x84, 0xB0, 0xF1, 0xB0, 0xF2, 0xB0, 0xD1, 0xB0, 0xF1, 0xA9, 0xB3, 0x03, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x01, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x02, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x01, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x01, 0xAF, 0x3E, 0x01, 0xAF, 0x3D, 0x01, 0xAF, 0x3E, 0x81, 0xAF, 0x5E, 0xAF, 0x3E, 0x01, 0xAF, 0x3D, 0x03, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x01, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x07, 0xAF, 0x3E, 0x81, 0xAF, 0x3D, 0xAF, 0x5E, 0x03, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x02, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x04, 0xAF, 0x3E, 0x82, 0xAF, 0x5E, 0xAF, 0x3E, 0xAF, 0x5E, 0x03, 0xAF, 0x3E, 0x84, 0x9C, 0x77, 0x81, 0x91, 0x99, 0x31, 0xB0, 0xF1, 0xB0, 0xD1, 0x04, 0xB0, 0xF1, 0x80, 0xAD, 0xBB, 0x01, 0xAF, 0x3E, 0x84, 0xAF, 0x5D, 0xAF, 0x3E, 0x94, 0x77, 0x81, 0x91, 0x99, 0x51, 0x01, 0xB0, 0xD1, 0x80, 0xB0, 0xF1, 0x03, 0xB0, 0xD1, 0x84, 0xAD, 0xBA, 0xAF, 0x3E, 0xAF, 0x5E, 0xAF, 0x3E, 0xAF, 0x5E, 0x02, 0xAF, 0x3E, 0x80, 0xAF, 0x3D, 0x02, 0xAF, 0x5E, 0x01, 0xAF, 0x3D, 0x03, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x03, 0xAF, 0x3E, 0x84, 0xAE, 0xFD, 0xCB, 0x56, 0xCA, 0x53, 0xCA, 0x74, 0xD2, 0x53, 0x01, 0xD2, 0x74, 0x81, 0xD2, 0x73, 0xCA, 0x73, 0x07, 0xD2, 0x74, 0x81, 0xD2, 0x54, 0xCA, 0x74, 0x01, 0xCA, 0x54, 0x80, 0xCA, 0x74, 0x02, 0xCA, 0x53, 0x03, 0xA7, 0x3E, 0x03, 0xA7, 0x3D, 0x85, 0x94, 0x57, 0x81, 0x91, 0x99, 0x31, 0xB8, 0xD1, 0xB0, 0xD1, 0xB8, 0xD1, 0x02, 0xB0, 0xD1, 0x83, 0xB0, + 0xF1, 0xB0, 0xD1, 0xB1, 0xB3, 0xAD, 0x9A, 0x01, 0xAF, 0x3D, 0x01, 0xA7, 0x3D, 0x85, 0x9D, 0xDA, 0x89, 0xD1, 0x99, 0x51, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF1, 0x02, 0xB0, 0xD1, 0x01, 0xB8, 0xD1, 0x02, 0xB0, 0xD1, 0x84, 0xB0, 0xF1, 0xB2, 0x13, 0xAD, 0x9B, 0xA7, 0x3E, 0xA7, 0x3D, 0x01, 0xAF, 0x3E, 0x82, 0x9D, 0xDA, 0x81, 0xF2, 0x91, 0x71, 0x01, 0xB0, 0xF1, 0x81, 0xB0, 0xD1, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x85, 0xB8, 0xD1, 0xB8, 0xD2, 0xB0, 0xF1, 0xAD, 0x39, 0xA7, 0x3D, 0xA7, 0x3E, 0x04, 0xA7, 0x3D, 0x80, 0xA7, 0x3E, 0x02, 0xA7, 0x3D, 0x80, 0xAF, 0x3D, 0x02, 0xA7, 0x3D, 0x01, 0xA7, 0x3E, 0x81, 0xA7, 0x3D, 0xAF, 0x3D, 0x01, 0xA7, 0x3D, 0x81, 0xA7, 0x3E, 0xAF, 0x3D, 0x01, 0xA7, 0x3E, 0x81, 0xA7, 0x3D, 0xAF, 0x3D, 0x01, 0xA7, 0x3D, 0x82, 0xA7, 0x3E, 0xAF, 0x3E, 0xAF, 0x1E, 0x07, 0xA7, 0x3E, 0x84, 0xAF, 0x3E, 0xA7, 0x3E, 0xA7, 0x3D, 0xAF, 0x3E, 0xA7, 0x3E, 0x02, 0xA7, 0x3D, 0x80, 0xAF, 0x3D, 0x02, 0xA7, 0x3E, 0x83, 0xA7, 0x3D, 0xAF, 0x3D, 0xA7, 0x3D, 0xAF, 0x3D, 0x01, 0xA7, 0x3E, 0x81, 0xAF, 0x3D, 0xA7, 0x3E, 0x01, 0xA7, 0x3D, 0x83, 0xA7, 0x3E, 0x94, 0x78, 0x81, 0x91, 0x99, 0x31, 0x05, 0xB0, 0xD1, 0x84, 0xB8, 0xD1, 0xAD, 0x9A, 0xA7, 0x3E, 0xA7, 0x3D, 0xA7, 0x3E, 0x02, 0xA7, 0x3D, 0x80, 0xAF, 0x3D, 0x04, 0xA7, 0x3D, 0x80, 0xAF, 0x3D, 0x02, 0xA7, 0x3D, 0x81, 0xAF, 0x3E, 0xA7, 0x3E, 0x02, 0xA7, 0x3D, 0x84, 0xAF, 0x3D, 0xAF, 0x3E, 0xA7, 0x3D, 0xAF, 0x3D, 0xAF, 0x3E, 0x01, 0xA7, 0x3D, 0x81, 0xAF, 0x3D, 0xA7, 0x3E, 0x02, 0xAF, 0x3D, + 0x80, 0xA7, 0x3E, 0x01, 0xA7, 0x3D, 0x83, 0xAF, 0x3D, 0xA7, 0x3D, 0xAE, 0xDD, 0xC3, 0x76, 0x03, 0xCA, 0x53, 0x80, 0xCA, 0x33, 0x08, 0xCA, 0x53, 0x82, 0xD2, 0x33, 0xCA, 0x53, 0xD2, 0x53, 0x01, 0xCA, 0x53, 0x82, 0xCA, 0x13, 0xCA, 0x33, 0xCA, 0x13, 0x04, 0xA7, 0x1D, 0x02, 0xA7, 0x3D, 0x82, 0x8A, 0x53, 0x81, 0x91, 0xA8, 0xF1, 0x02, 0xB8, 0xD1, 0x80, 0xB0, 0xD1, 0x02, 0xB8, 0xD1, 0x83, 0xB2, 0x13, 0xA6, 0xBD, 0xA7, 0x1D, 0xA7, 0x3E, 0x03, 0xA7, 0x1D, 0x83, 0x9E, 0x1B, 0x81, 0xF1, 0x91, 0x71, 0xB0, 0xF1, 0x08, 0xB8, 0xD1, 0x81, 0xB1, 0xF3, 0xA6, 0xBD, 0x03, 0xA7, 0x1D, 0x84, 0xA7, 0x3D, 0xA7, 0x1D, 0x9E, 0x1B, 0x89, 0xF2, 0x89, 0x91, 0x05, 0xB8, 0xD1, 0x82, 0xB0, 0xD1, 0xB8, 0xD1, 0xB3, 0x36, 0x09, 0xA7, 0x1D, 0x02, 0xA7, 0x3D, 0x01, 0xA7, 0x1D, 0x82, 0xA7, 0x3D, 0xA7, 0x1D, 0xA7, 0x1E, 0x01, 0xA7, 0x1D, 0x81, 0xA7, 0x3D, 0xA7, 0x3E, 0x02, 0xA7, 0x1D, 0x83, 0xA7, 0x3E, 0xA7, 0x1D, 0xA7, 0x3E, 0xA7, 0x3D, 0x01, 0xA7, 0x1D, 0x80, 0xA7, 0x3D, 0x09, 0xA7, 0x1D, 0x02, 0xA7, 0x3D, 0x81, 0xA7, 0x3E, 0xA7, 0x1D, 0x01, 0xA7, 0x3D, 0x05, 0xA7, 0x1D, 0x80, 0xA7, 0x3D, 0x01, 0xA7, 0x1D, 0x80, 0xA7, 0x3E, 0x01, 0xA7, 0x3D, 0x01, 0xA7, 0x1D, 0x82, 0x94, 0x77, 0x81, 0x91, 0x99, 0x31, 0x06, 0xB8, 0xD1, 0x83, 0xA5, 0x9A, 0xA7, 0x1D, 0xA7, 0x3D, 0xA7, 0x3E, 0x01, 0xA7, 0x1D, 0x81, 0xA7, 0x1E, 0xA7, 0x3D, 0x07, 0xA7, 0x1D, 0x01, 0xA7, 0x3D, 0x84, 0xA7, 0x1E, 0xA7, 0x1D, 0xA7, 0x3D, 0xA7, 0x1D, 0xA7, 0x3D, 0x05, 0xA7, 0x1D, 0x01, 0xA7, 0x3D, + 0x80, 0xA7, 0x1D, 0x01, 0xA7, 0x3D, 0x81, 0xA7, 0x1D, 0xA7, 0x3E, 0x04, 0xA7, 0x1D, 0x83, 0xBB, 0xF7, 0xCA, 0x13, 0xCA, 0x33, 0xCA, 0x13, 0x09, 0xCA, 0x33, 0x01, 0xCA, 0x13, 0x82, 0xCA, 0x14, 0xD2, 0x33, 0xCA, 0x33, 0x02, 0xCA, 0x13, 0x01, 0x9F, 0x1D, 0x80, 0xA7, 0x1D, 0x01, 0x9F, 0x1D, 0x80, 0xA7, 0x1D, 0x01, 0x9F, 0x1D, 0x01, 0x81, 0x91, 0x07, 0xB8, 0xD1, 0x80, 0xA5, 0xDB, 0x01, 0x9F, 0x1D, 0x80, 0x9E, 0xFD, 0x02, 0x9F, 0x1D, 0x84, 0xA6, 0xFD, 0x9F, 0x1D, 0x94, 0xF9, 0x81, 0x91, 0x99, 0x31, 0x01, 0xB8, 0xD1, 0x80, 0xB8, 0xB1, 0x04, 0xB8, 0xD1, 0x81, 0xB8, 0xB1, 0xA5, 0xDB, 0x03, 0x9F, 0x1D, 0x80, 0xA6, 0xFD, 0x02, 0x9F, 0x1D, 0x82, 0x94, 0xF9, 0x81, 0x91, 0x99, 0x31, 0x06, 0xB8, 0xD1, 0x80, 0xB9, 0x32, 0x02, 0x9F, 0x1D, 0x80, 0x9F, 0x1E, 0x04, 0x9F, 0x1D, 0x84, 0x9E, 0x1B, 0x94, 0x57, 0x92, 0xD4, 0xA1, 0xF3, 0xA9, 0x11, 0x01, 0xB0, 0xF1, 0x81, 0xA9, 0x11, 0xB2, 0x74, 0x01, 0xB2, 0x54, 0x81, 0xAB, 0xF7, 0xA5, 0xDB, 0x01, 0xA6, 0xFD, 0x01, 0xA7, 0x1D, 0x01, 0x9F, 0x1D, 0x80, 0xA6, 0xFD, 0x01, 0x9F, 0x1D, 0x80, 0xA7, 0x1D, 0x0A, 0x9F, 0x1D, 0x8C, 0x9E, 0x7C, 0x94, 0x98, 0x8B, 0x14, 0x9A, 0x13, 0xA1, 0x31, 0xA9, 0x12, 0xB0, 0xF1, 0xA8, 0xF1, 0xB2, 0x55, 0xB2, 0x74, 0xB2, 0x54, 0xAB, 0x97, 0xAD, 0x1A, 0x03, 0x9F, 0x1D, 0x85, 0xA7, 0x1D, 0x9F, 0x1D, 0xA7, 0x1D, 0x94, 0x57, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xB8, 0xD1, 0x87, 0xA5, 0x7A, 0x9F, 0x1D, 0xA7, 0x1D, 0x9F, 0x1D, 0xA7, 0x1D, 0x9E, 0x7C, 0x9D, 0xBA, 0xA5, 0x9A, 0x06, + 0xA5, 0x7A, 0x80, 0xA6, 0x9C, 0x02, 0x9F, 0x1D, 0x80, 0xA7, 0x1D, 0x06, 0x9F, 0x1D, 0x85, 0x9E, 0x5C, 0x94, 0xB8, 0x8A, 0xF4, 0x9A, 0x13, 0xA1, 0x31, 0xA8, 0xF1, 0x01, 0xB0, 0xF1, 0x88, 0xB9, 0x32, 0xB2, 0x74, 0xB2, 0x54, 0xB3, 0x36, 0xAC, 0xB9, 0xA6, 0x3C, 0x9F, 0x1D, 0xBB, 0xF7, 0xC9, 0xF3, 0x02, 0xCA, 0x13, 0x07, 0xC9, 0xF3, 0x04, 0xCA, 0x13, 0x02, 0xC9, 0xD3, 0x06, 0x9E, 0xFD, 0x87, 0x95, 0x9A, 0x81, 0x91, 0x91, 0x51, 0xC0, 0xB1, 0xB8, 0xD1, 0xC0, 0xB1, 0xB8, 0xD1, 0xC0, 0xD1, 0x01, 0xB8, 0xD1, 0x80, 0xB2, 0xB5, 0x09, 0x9E, 0xFD, 0x81, 0x82, 0x52, 0x81, 0x91, 0x03, 0xB8, 0xD1, 0x84, 0xC0, 0xB1, 0xC0, 0xD1, 0xB8, 0xD1, 0xC0, 0xD1, 0xB1, 0xF3, 0x04, 0x9E, 0xFD, 0x80, 0x9F, 0x1D, 0x03, 0x9E, 0xFD, 0x81, 0x8A, 0x93, 0x81, 0x91, 0x01, 0xB8, 0xD1, 0x80, 0xC0, 0xD1, 0x03, 0xB8, 0xD1, 0x81, 0xC0, 0xB1, 0xA6, 0x3C, 0x05, 0x9E, 0xFD, 0x83, 0x94, 0xF8, 0x8A, 0x53, 0x91, 0x71, 0xB0, 0xF1, 0x02, 0xB8, 0xD1, 0x01, 0xB8, 0xB1, 0x80, 0xC0, 0xB1, 0x01, 0xC0, 0xD1, 0x84, 0xB8, 0xD1, 0xC0, 0xD1, 0xB8, 0xB1, 0xB9, 0x92, 0xAC, 0xB9, 0x10, 0x9E, 0xFD, 0x83, 0x9E, 0x5C, 0x8B, 0x96, 0x89, 0x91, 0xA1, 0x31, 0x01, 0xB8, 0xD1, 0x80, 0xC0, 0xB1, 0x05, 0xB8, 0xD1, 0x84, 0xC0, 0xB1, 0xB8, 0xD1, 0xB9, 0x32, 0xAB, 0xF7, 0x9E, 0x9C, 0x03, 0x9E, 0xFD, 0x85, 0x94, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xB8, 0xD1, 0xC0, 0xB1, 0xB8, 0xD1, 0x01, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x80, 0xA5, 0x7A, 0x03, 0x9E, 0xFD, 0x84, 0x94, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xB8, + 0xD1, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x80, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x80, 0xA5, 0x7A, 0x08, 0x9E, 0xFD, 0x83, 0x9E, 0x9C, 0x8B, 0x96, 0x89, 0x71, 0xA1, 0x31, 0x01, 0xB8, 0xD1, 0x83, 0xC0, 0xB1, 0xB8, 0xD1, 0xC0, 0xB1, 0xC0, 0xD1, 0x01, 0xB8, 0xD1, 0x80, 0xC0, 0xD1, 0x01, 0xB8, 0xD1, 0x85, 0xC0, 0xD1, 0xB3, 0x35, 0xA6, 0x3C, 0xBB, 0xD7, 0xC9, 0xD3, 0xC9, 0xF3, 0x08, 0xC9, 0xD3, 0x80, 0xC9, 0xF3, 0x01, 0xC9, 0xD3, 0x81, 0xC9, 0xF3, 0xC9, 0xD3, 0x02, 0xC9, 0xB3, 0x84, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xFC, 0x01, 0x96, 0xFD, 0x84, 0x95, 0x99, 0x89, 0x91, 0x91, 0x71, 0xC0, 0xB1, 0xC0, 0xD1, 0x03, 0xC0, 0xB1, 0x82, 0xC0, 0xD1, 0xAB, 0xD7, 0x9E, 0xFC, 0x01, 0x96, 0xFD, 0x89, 0x96, 0xDD, 0x96, 0xFD, 0x9E, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xDD, 0x9E, 0xFD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x11, 0x01, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x83, 0xC0, 0xD1, 0xC0, 0xB1, 0xAB, 0x76, 0x9E, 0xDD, 0x01, 0x9E, 0xFD, 0x01, 0x9E, 0xDD, 0x88, 0x96, 0xDD, 0x9E, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xDD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x89, 0xC0, 0xD1, 0xA5, 0x5A, 0x96, 0xFD, 0x9E, 0xDD, 0x9E, 0xFD, 0x96, 0xFD, 0x96, 0x3B, 0x8A, 0xF4, 0x89, 0x91, 0xA9, 0x11, 0x01, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x03, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x03, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x87, 0xB9, 0x92, 0xA5, 0x5A, 0x9E, 0xDD, 0x9E, 0xFC, + 0x96, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xFD, 0x07, 0x96, 0xFD, 0x84, 0x94, 0xF9, 0x81, 0xF1, 0x91, 0x71, 0xB8, 0xD2, 0xC0, 0xB1, 0x01, 0xC0, 0xD1, 0x83, 0xC0, 0xB1, 0xC0, 0xD1, 0xC0, 0xB1, 0xC0, 0xD1, 0x06, 0xC0, 0xB1, 0x87, 0xB9, 0x92, 0x9D, 0xBB, 0x96, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x81, 0xA5, 0x5A, 0x9E, 0xDD, 0x01, 0x96, 0xFD, 0x83, 0x9E, 0xFD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x83, 0xA5, 0x5A, 0x96, 0xFD, 0x9E, 0xFD, 0x96, 0xFD, 0x01, 0x9E, 0xFD, 0x86, 0x96, 0xFD, 0x9E, 0xFD, 0x96, 0xFD, 0x95, 0x39, 0x81, 0xF1, 0x91, 0x71, 0xB0, 0xD1, 0x02, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x05, 0xC0, 0xB1, 0x83, 0xB8, 0xD1, 0xB9, 0x11, 0xAC, 0xFA, 0xB4, 0x58, 0x0A, 0xC9, 0xB3, 0x80, 0xC9, 0xD2, 0x01, 0xC9, 0xD3, 0x80, 0xC9, 0xB3, 0x01, 0xC9, 0x93, 0x81, 0xC9, 0x92, 0x96, 0xDC, 0x05, 0x96, 0xDD, 0x82, 0x8D, 0x79, 0x81, 0x91, 0x91, 0x51, 0x06, 0xC0, 0xB1, 0x80, 0xAB, 0xD7, 0x09, 0x96, 0xDD, 0x82, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x80, 0xAB, 0xD7, 0x09, 0x96, 0xDD, 0x82, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x80, 0x9D, 0x5A, 0x02, 0x96, 0xDD, 0x83, 0x95, 0xDA, 0x89, 0xF2, 0x89, 0x71, 0xB8, 0xD1, 0x01, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x0E, 0xC0, 0xB1, 0x80, 0xA4, 0x99, 0x04, 0x96, 0xDD, 0x80, 0x96, 0xDC, 0x05, 0x96, 0xDD, 0x82, 0x8C, 0x37, 0x81, 0x91, 0x99, 0x31, 0x0B, 0xC0, 0xB1, 0x80, + 0xC8, 0xB1, 0x04, 0xC0, 0xB1, 0x85, 0xA4, 0x99, 0x96, 0xDC, 0x96, 0xDD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x11, 0x06, 0xC0, 0xB1, 0x80, 0x9D, 0x5A, 0x03, 0x96, 0xDD, 0x82, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x80, 0x9D, 0x5A, 0x06, 0x96, 0xDD, 0x82, 0x8C, 0xD8, 0x81, 0x91, 0x99, 0x51, 0x05, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x06, 0xC0, 0xB1, 0x84, 0xAC, 0x79, 0xAC, 0xF9, 0xC9, 0x92, 0xC9, 0x93, 0xC9, 0xB2, 0x01, 0xC9, 0x92, 0x02, 0xC9, 0x93, 0x02, 0xC9, 0x92, 0x02, 0xC9, 0x93, 0x02, 0xC9, 0x72, 0x80, 0x8E, 0xBC, 0x01, 0x8E, 0xBD, 0x02, 0x8E, 0xBC, 0x83, 0x8E, 0xBD, 0x8D, 0x7A, 0x81, 0x91, 0x91, 0x51, 0x04, 0xC0, 0xB1, 0x83, 0xC8, 0xB1, 0xC0, 0xB1, 0xAB, 0xB7, 0x8E, 0xBD, 0x07, 0x8E, 0xBC, 0x85, 0x8E, 0xBD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xC0, 0xB1, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x82, 0xC8, 0xB1, 0xC0, 0xB1, 0xAB, 0xB7, 0x02, 0x8E, 0xBC, 0x82, 0x8E, 0xDC, 0x8E, 0xBC, 0x8E, 0xDD, 0x01, 0x8E, 0xBC, 0x84, 0x8E, 0xBD, 0x8E, 0xBC, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x85, 0x9D, 0x39, 0x8E, 0xBD, 0x8E, 0xDD, 0x8D, 0xBA, 0x81, 0xF2, 0x91, 0x71, 0x01, 0xC0, 0xB1, 0x87, 0xC8, 0xB1, 0xC0, 0xB1, 0xC0, 0xD1, 0xC0, 0xB1, 0xC8, 0xB1, 0xC8, 0xB2, 0xC0, 0xB1, 0xC8, 0xB2, 0x01, 0xC8, 0xB1, 0x81, 0xC0, 0xD1, 0xC0, 0xB1, 0x01, 0xC0, 0xD1, 0x80, 0xC8, 0xB1, 0x01, 0xC0, 0xB1, 0x86, 0xC8, 0xB1, 0xC0, 0xB1, 0xA4, 0x37, 0x8E, 0xBC, 0x8E, 0xDD, 0x8E, 0xBC, 0x8E, 0xBD, 0x01, + 0x8E, 0xBC, 0x81, 0x8E, 0xBD, 0x8E, 0xBC, 0x01, 0x8E, 0xBD, 0x82, 0x8C, 0xD8, 0x81, 0x91, 0xA1, 0x31, 0x01, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x01, 0xC0, 0xB1, 0x83, 0xC8, 0xB2, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x01, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x8A, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0xA4, 0xD9, 0x8E, 0xBC, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xC0, 0xB1, 0xC8, 0xB1, 0xC0, 0xD1, 0x02, 0xC0, 0xB1, 0x81, 0xC8, 0xB1, 0x9D, 0x3A, 0x03, 0x8E, 0xBC, 0x82, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x80, 0x9D, 0x5A, 0x01, 0x8E, 0xBC, 0x80, 0x8E, 0xDC, 0x02, 0x8E, 0xBC, 0x89, 0x8C, 0xD8, 0x81, 0x91, 0x99, 0x51, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0xC8, 0xB2, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x04, 0xC0, 0xB1, 0x02, 0xC8, 0xB1, 0x82, 0xC8, 0xD1, 0xA4, 0x78, 0xA4, 0xD9, 0x0C, 0xC9, 0x72, 0x02, 0xC9, 0x52, 0x06, 0x8E, 0xBC, 0x84, 0x8D, 0x59, 0x81, 0x91, 0x91, 0x71, 0xC8, 0xF2, 0xC8, 0xF1, 0x02, 0xC8, 0xF2, 0x82, 0xC8, 0xF1, 0xC8, 0xF2, 0xAB, 0xD7, 0x09, 0x8E, 0xBC, 0x84, 0x8C, 0x36, 0x81, 0x91, 0xA9, 0x31, 0xC8, 0xF2, 0xC8, 0xF1, 0x03, 0xC8, 0xF2, 0x81, 0xC0, 0xF2, 0xAB, 0xB7, 0x09, 0x8E, 0xBC, 0x82, 0x84, 0x37, 0x81, 0x91, 0xA9, 0x51, 0x01, 0xC8, 0xF1, 0x80, 0xC8, 0xF2, 0x01, 0xC8, 0xF1, 0x87, 0xC8, 0xF2, 0xC8, 0xF1, 0x9D, 0x3A, 0x8E, 0xBC, 0x8E, 0x1B, 0x81, 0xF2, 0x89, 0x71, 0xB9, 0x12, 0x01, 0xC8, 0xF1, 0x80, 0xC8, 0xF2, 0x02, 0xC8, 0xF1, 0x82, 0xC8, 0xF2, + 0xC8, 0xD1, 0xC1, 0x12, 0x02, 0xC8, 0xF2, 0x8A, 0xC8, 0xD1, 0xC8, 0xF2, 0xC8, 0xD1, 0xC8, 0xF2, 0xC0, 0xF1, 0xC8, 0xF1, 0xC8, 0xF2, 0xC8, 0xF1, 0xC8, 0xF2, 0xC0, 0xF1, 0xA4, 0x98, 0x07, 0x8E, 0xBC, 0x80, 0x8D, 0xBA, 0x01, 0x89, 0x91, 0x8E, 0xC0, 0xF1, 0xC8, 0xF2, 0xC0, 0xF2, 0xC8, 0xF1, 0xC8, 0xF2, 0xC8, 0xF1, 0xC0, 0xF1, 0xC8, 0xF2, 0xC8, 0xF1, 0xC8, 0xF2, 0xC0, 0xF2, 0xC8, 0xF1, 0xC0, 0xF1, 0xC8, 0xF2, 0xC8, 0xF1, 0x02, 0xC8, 0xF2, 0x01, 0xC8, 0xF1, 0x85, 0xC0, 0xF2, 0xC1, 0x32, 0x8E, 0x5C, 0x8C, 0x17, 0x81, 0x91, 0xA9, 0x31, 0x03, 0xC8, 0xF2, 0x80, 0xC8, 0xF1, 0x01, 0xC8, 0xF2, 0x80, 0x9D, 0x59, 0x03, 0x8E, 0xBC, 0x82, 0x8C, 0x17, 0x81, 0x91, 0xA9, 0x51, 0x01, 0xC8, 0xF1, 0x80, 0xC8, 0xF2, 0x01, 0xC8, 0xF1, 0x82, 0xC8, 0xF2, 0xC8, 0xF1, 0x9D, 0x5A, 0x03, 0x8E, 0xBC, 0x84, 0x8E, 0xBD, 0x8D, 0xBA, 0x81, 0xF2, 0x89, 0x91, 0xC1, 0x11, 0x02, 0xC8, 0xF1, 0x80, 0xC0, 0xF2, 0x01, 0xC8, 0xF1, 0x83, 0xC0, 0xF2, 0xC8, 0xD2, 0xC8, 0xF1, 0xC8, 0xF2, 0x01, 0xC0, 0xF1, 0x82, 0xC8, 0xF2, 0xC0, 0xF1, 0xC8, 0xF1, 0x01, 0xC8, 0xF2, 0x01, 0xC8, 0xF1, 0x84, 0xC8, 0xF2, 0xC1, 0x52, 0x95, 0xFB, 0xA4, 0xB8, 0xC1, 0x52, 0x02, 0xC9, 0x52, 0x80, 0xC9, 0x72, 0x06, 0xC9, 0x52, 0x02, 0xC9, 0x32, 0x06, 0x8E, 0xBC, 0x84, 0x8D, 0x79, 0x81, 0x91, 0x91, 0x71, 0xC1, 0x32, 0xC1, 0x31, 0x01, 0xC9, 0x12, 0x83, 0xC1, 0x32, 0xC9, 0x11, 0xC9, 0x12, 0xAB, 0xF7, 0x08, 0x8E, 0xBC, 0x85, 0x96, 0xBC, 0x8C, 0x36, 0x81, 0x91, 0xA9, 0x51, 0xC9, 0x12, 0xC9, 0x11, + 0x01, 0xC9, 0x12, 0x80, 0xC1, 0x12, 0x01, 0xC9, 0x12, 0x80, 0xAB, 0xF7, 0x09, 0x8E, 0xBC, 0x82, 0x8C, 0x36, 0x81, 0x91, 0xA9, 0x51, 0x02, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x01, 0xC9, 0x12, 0x86, 0x9D, 0x59, 0x8E, 0xBC, 0x8A, 0xD4, 0x81, 0x91, 0xB1, 0x52, 0xC9, 0x12, 0xC1, 0x31, 0x05, 0xC9, 0x12, 0x80, 0xC9, 0x32, 0x03, 0xC9, 0x12, 0x82, 0xC9, 0x11, 0xC1, 0x12, 0xC9, 0x32, 0x01, 0xC9, 0x12, 0x81, 0xC9, 0x32, 0xC9, 0x11, 0x01, 0xC9, 0x12, 0x93, 0xC9, 0x32, 0xC1, 0x31, 0x9D, 0xBA, 0x8E, 0xBC, 0x96, 0xBC, 0x8E, 0xBC, 0x8E, 0xDC, 0x96, 0xBB, 0x8E, 0xBC, 0x8E, 0xDC, 0x82, 0xD4, 0x81, 0x91, 0xB9, 0x32, 0xC9, 0x12, 0xC1, 0x12, 0xC9, 0x12, 0xC1, 0x12, 0xC9, 0x12, 0xC1, 0x12, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x85, 0xC9, 0x32, 0xC9, 0x11, 0xC1, 0x31, 0xC9, 0x12, 0xC1, 0x32, 0xC1, 0x31, 0x01, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x80, 0xC1, 0x31, 0x01, 0xC9, 0x12, 0x83, 0xB3, 0x56, 0x8C, 0x36, 0x81, 0x91, 0xA1, 0x51, 0x05, 0xC9, 0x12, 0x83, 0xC1, 0x12, 0x9D, 0x59, 0x8E, 0xBC, 0x96, 0xBC, 0x01, 0x8E, 0xBC, 0x82, 0x8C, 0x37, 0x81, 0x91, 0xA9, 0x51, 0x02, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x01, 0xC9, 0x12, 0x80, 0x9D, 0x59, 0x02, 0x8E, 0xBC, 0x84, 0x96, 0xBC, 0x8E, 0xBC, 0x82, 0xF4, 0x89, 0x91, 0xB1, 0x51, 0x01, 0xC9, 0x12, 0x80, 0xC9, 0x32, 0x01, 0xC9, 0x12, 0x82, 0xC1, 0x31, 0xC9, 0x32, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x83, 0xC9, 0x32, 0xC9, 0x11, 0xC9, 0x12, 0xC9, 0x11, 0x01, 0xC9, 0x32, 0x82, 0xC1, 0x12, 0xC9, 0x11, 0xC1, 0x32, 0x01, 0xC9, 0x12, + 0x84, 0xC9, 0x32, 0xB3, 0x36, 0x96, 0xBC, 0xA4, 0xF9, 0xC1, 0x92, 0x09, 0xC9, 0x32, 0x02, 0xC9, 0x12, 0x02, 0x9E, 0xDB, 0x80, 0x9E, 0xDC, 0x02, 0x9E, 0xDB, 0x82, 0x95, 0x78, 0x81, 0x91, 0x99, 0x91, 0x06, 0xC9, 0x52, 0x80, 0xB4, 0x17, 0x09, 0x9E, 0xDB, 0x82, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x72, 0x06, 0xC9, 0x52, 0x82, 0xA5, 0x18, 0x9E, 0xDB, 0x96, 0xDB, 0x07, 0x9E, 0xDB, 0x82, 0x94, 0x36, 0x81, 0x91, 0xA1, 0x71, 0x06, 0xC9, 0x52, 0x83, 0xA5, 0x79, 0x94, 0xD8, 0x81, 0x91, 0x99, 0x91, 0x04, 0xC9, 0x52, 0x80, 0xC1, 0x52, 0x04, 0xC9, 0x52, 0x85, 0xC2, 0x53, 0xC2, 0xB4, 0xB9, 0x52, 0xC1, 0x52, 0xC9, 0x52, 0xC1, 0x52, 0x07, 0xC9, 0x52, 0x80, 0xBA, 0xB5, 0x05, 0x9E, 0xDB, 0x82, 0x95, 0x99, 0x81, 0x91, 0x91, 0xB1, 0x09, 0xC9, 0x52, 0x83, 0xC1, 0xF3, 0xC2, 0xB5, 0xB9, 0x52, 0xC1, 0x52, 0x04, 0xC9, 0x52, 0x80, 0xC9, 0x72, 0x01, 0xC9, 0x52, 0x84, 0xC9, 0x72, 0xC1, 0xB2, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x72, 0x06, 0xC9, 0x52, 0x80, 0xA5, 0x79, 0x03, 0x9E, 0xDB, 0x82, 0x8C, 0x36, 0x89, 0x91, 0xA1, 0x71, 0x06, 0xC9, 0x52, 0x82, 0xA5, 0x79, 0x9E, 0xDB, 0x9E, 0xDC, 0x01, 0x9E, 0xDB, 0x82, 0x95, 0x98, 0x81, 0x91, 0x91, 0x91, 0x03, 0xC9, 0x52, 0x82, 0xC1, 0x52, 0xC9, 0x52, 0xC1, 0x72, 0x02, 0xC9, 0x52, 0x83, 0xC1, 0xF3, 0xC2, 0xB4, 0xB9, 0x52, 0xC1, 0x52, 0x09, 0xC9, 0x52, 0x84, 0xA6, 0x1A, 0x9E, 0xDC, 0xA5, 0xDA, 0xC1, 0x72, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x01, 0xC9, 0x12, 0x80, 0xC1, 0x11, 0x02, 0xC9, 0x12, 0x01, 0xC8, 0xF1, 0x81, 0xC8, + 0xF2, 0xA6, 0xFB, 0x01, 0xA6, 0xFA, 0x87, 0xA6, 0xFB, 0xA6, 0xFA, 0xA6, 0xDA, 0xA6, 0xFA, 0x9D, 0x98, 0x81, 0x91, 0x91, 0x91, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x80, 0xC9, 0x72, 0x02, 0xC9, 0x92, 0x81, 0xB4, 0x36, 0xA6, 0xFB, 0x08, 0xA6, 0xFA, 0x82, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x92, 0x01, 0xC9, 0x92, 0x02, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x80, 0xAD, 0x98, 0x01, 0xA6, 0xDA, 0x07, 0xA6, 0xFA, 0x83, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x92, 0xC9, 0x93, 0x05, 0xC9, 0x92, 0x83, 0xAD, 0x99, 0x8A, 0x32, 0x89, 0x91, 0xC1, 0x92, 0x01, 0xC9, 0x92, 0x80, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x80, 0xC9, 0x73, 0x02, 0xC9, 0x92, 0x81, 0xBC, 0x36, 0xA6, 0x9A, 0x01, 0xA6, 0xFA, 0x84, 0xA6, 0x9A, 0x93, 0x95, 0x89, 0x91, 0xB9, 0x92, 0xC9, 0x93, 0x01, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x81, 0xC9, 0x72, 0xC9, 0x92, 0x01, 0xC9, 0x72, 0x88, 0xAD, 0x98, 0xA6, 0xDB, 0xA6, 0xDA, 0xA6, 0xFA, 0xA6, 0xFB, 0xA6, 0xFA, 0x93, 0x95, 0x81, 0x91, 0xB1, 0x92, 0x02, 0xC9, 0x92, 0x80, 0xC9, 0x93, 0x01, 0xC9, 0x72, 0x8A, 0xC9, 0x92, 0xC9, 0x72, 0xC2, 0x33, 0xAD, 0x98, 0xA6, 0xFA, 0xA6, 0xFB, 0xA6, 0x39, 0x8A, 0x93, 0x99, 0x92, 0xC1, 0x92, 0xC9, 0x72, 0x02, 0xC9, 0x92, 0x81, 0xC9, 0x72, 0xC9, 0x92, 0x01, 0xC9, 0x72, 0x82, 0x9A, 0x93, 0x81, 0x91, 0xA9, 0x92, 0x06, 0xC9, 0x92, 0x82, 0xAD, 0x98, 0xA6, 0xFA, 0xA6, 0xFB, 0x01, 0xA6, 0xFA, 0x83, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x92, 0xC9, 0x93, 0x05, 0xC9, 0x92, 0x80, 0xAD, 0x98, 0x01, 0xA6, 0xDA, 0x87, 0xA6, 0xFA, 0xA6, 0xDA, 0x8B, + 0x95, 0x81, 0x91, 0xB1, 0x92, 0xC9, 0x72, 0xC9, 0x92, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x8C, 0xC9, 0x72, 0xC9, 0x92, 0xC9, 0x72, 0xC2, 0x94, 0xAD, 0xF9, 0xA6, 0xFA, 0xA6, 0xDA, 0xA6, 0x9A, 0x93, 0x34, 0x91, 0x91, 0xB9, 0x92, 0xC9, 0x92, 0xC9, 0x93, 0x05, 0xC9, 0x92, 0x80, 0xB4, 0x97, 0x01, 0xAE, 0xFB, 0x84, 0xB5, 0xD9, 0xC9, 0x52, 0xC8, 0xF1, 0xC8, 0xF2, 0xC0, 0xF1, 0x04, 0xC8, 0xF1, 0x01, 0xC0, 0xD1, 0x80, 0xC8, 0xD2, 0x02, 0xB7, 0x1A, 0x86, 0xAE, 0xFA, 0xB7, 0x1A, 0xAF, 0x1A, 0xAE, 0xFA, 0xA5, 0x98, 0x81, 0x91, 0x91, 0x91, 0x01, 0xC9, 0xB3, 0x01, 0xC9, 0xD3, 0x83, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xD3, 0xBC, 0x76, 0x09, 0xB7, 0x1A, 0x82, 0x9C, 0x55, 0x81, 0x91, 0xA9, 0xB2, 0x01, 0xC9, 0xD3, 0x82, 0xC9, 0xB3, 0xC9, 0xB2, 0xC9, 0xB3, 0x01, 0xC9, 0xD3, 0x84, 0xB5, 0xB8, 0xB7, 0x1A, 0xAF, 0x1A, 0xB7, 0x1A, 0xB6, 0xFA, 0x03, 0xB7, 0x1A, 0x84, 0xB6, 0xFA, 0xAF, 0x1A, 0x9C, 0x56, 0x81, 0x91, 0xA9, 0x92, 0x06, 0xC9, 0xB3, 0x95, 0xA3, 0xB5, 0x81, 0x91, 0x99, 0x92, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xD2, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xD3, 0xCA, 0x13, 0xBD, 0xB8, 0xAE, 0xFA, 0xAF, 0x1A, 0xB7, 0x1A, 0xB6, 0xFA, 0xAE, 0xFA, 0xAF, 0x19, 0xA4, 0xF7, 0x89, 0x91, 0xB1, 0xB2, 0x04, 0xC9, 0xB3, 0x80, 0xC9, 0xD2, 0x01, 0xC9, 0xB3, 0x80, 0xC3, 0x14, 0x01, 0xAF, 0x1A, 0x80, 0xAE, 0xF9, 0x01, 0xAF, 0x1A, 0x82, 0x89, 0xF1, 0x81, 0x91, 0xC1, 0xB2, 0x02, 0xC9, 0xB3, 0x01, 0xC9, 0xB2, 0x8B, 0xC9, 0xD3, 0xC9, 0xB3, 0xCA, 0xB4, + 0xB6, 0xB9, 0xAF, 0x1A, 0xB7, 0x1A, 0xAE, 0xFA, 0xB7, 0x1A, 0xB6, 0xB9, 0x8A, 0x93, 0x89, 0x91, 0xC1, 0xD2, 0x03, 0xC9, 0xB3, 0x88, 0xC9, 0xB2, 0xC9, 0xD3, 0xC9, 0xB2, 0xA9, 0x92, 0x81, 0x91, 0xA9, 0xB2, 0xC9, 0xD3, 0xC9, 0xB3, 0xC9, 0xD3, 0x02, 0xC9, 0xB2, 0x88, 0xC9, 0xB3, 0xB5, 0xB8, 0xAF, 0x1A, 0xAE, 0xFA, 0xAF, 0x1A, 0xB7, 0x1A, 0x9C, 0x56, 0x81, 0x91, 0xA9, 0x92, 0x06, 0xC9, 0xB3, 0x81, 0xB5, 0xB8, 0xB6, 0xFA, 0x01, 0xAF, 0x1A, 0x86, 0xB6, 0xFA, 0x89, 0xF2, 0x81, 0x91, 0xC1, 0xB2, 0xC9, 0xB3, 0xC9, 0xB2, 0xC9, 0xD3, 0x01, 0xC9, 0xB3, 0x84, 0xC9, 0xB2, 0xC9, 0xD3, 0xCA, 0xB4, 0xB6, 0xB9, 0xAF, 0x1A, 0x01, 0xB7, 0x1A, 0x85, 0xB6, 0xFA, 0xB7, 0x1A, 0x92, 0xF3, 0x89, 0xB1, 0xC1, 0xB2, 0xC9, 0xD3, 0x01, 0xC9, 0xB3, 0x01, 0xC9, 0xD3, 0x82, 0xC9, 0xB3, 0xC9, 0xD3, 0xC3, 0x15, 0x02, 0xB7, 0x1A, 0x82, 0xBD, 0xD9, 0xC1, 0x32, 0xC0, 0xD1, 0x03, 0xC8, 0xD1, 0x01, 0xC0, 0xD1, 0x82, 0xC0, 0xB1, 0xC8, 0xB1, 0xC0, 0xB1, 0x06, 0xBF, 0x19, 0x82, 0xA4, 0xB5, 0x81, 0x91, 0xA1, 0xB2, 0x05, 0xC9, 0xF3, 0x81, 0xD1, 0xF3, 0xC4, 0x96, 0x09, 0xBF, 0x19, 0x82, 0xA4, 0x55, 0x81, 0x91, 0xA9, 0xD2, 0x06, 0xC9, 0xF3, 0x80, 0xBD, 0xD8, 0x02, 0xBF, 0x19, 0x80, 0xBF, 0x39, 0x01, 0xBF, 0x19, 0x81, 0xBF, 0x39, 0xBF, 0x19, 0x01, 0xBF, 0x39, 0x82, 0xA4, 0x55, 0x81, 0x91, 0xA9, 0xD2, 0x06, 0xC9, 0xF3, 0x82, 0x99, 0xF2, 0x89, 0x91, 0xB1, 0xD2, 0x06, 0xC9, 0xF3, 0x82, 0xC9, 0xF2, 0xC5, 0x77, 0xBF, 0x19, 0x01, 0xBF, 0x39, 0x04, 0xBF, 0x19, 0x82, 0x9B, + 0xF5, 0x81, 0x91, 0xB1, 0xD2, 0x01, 0xC9, 0xF3, 0x80, 0xD1, 0xF3, 0x04, 0xC9, 0xF3, 0x80, 0xBE, 0x78, 0x02, 0xBF, 0x19, 0x82, 0xB6, 0xB9, 0x81, 0x91, 0x89, 0x91, 0x01, 0xC9, 0xF3, 0x80, 0xC9, 0xF2, 0x01, 0xC9, 0xF3, 0x80, 0xC9, 0xD3, 0x01, 0xC9, 0xF3, 0x80, 0xBE, 0xD8, 0x04, 0xBF, 0x19, 0x85, 0xBF, 0x39, 0xAD, 0x57, 0x81, 0x91, 0x99, 0xB2, 0xC9, 0xF3, 0xC9, 0xF2, 0x04, 0xC9, 0xF3, 0x82, 0xB9, 0xD3, 0x81, 0x91, 0xA9, 0xB2, 0x06, 0xC9, 0xF3, 0x80, 0xBD, 0xD8, 0x03, 0xBF, 0x19, 0x82, 0x9C, 0x75, 0x81, 0x91, 0xA9, 0xD2, 0x06, 0xC9, 0xF3, 0x80, 0xBD, 0xD8, 0x02, 0xBF, 0x19, 0x80, 0xB6, 0xB8, 0x01, 0x81, 0x91, 0x07, 0xC9, 0xF3, 0x84, 0xBE, 0x78, 0xBF, 0x19, 0xBF, 0x39, 0xBF, 0x19, 0xBF, 0x39, 0x01, 0xBF, 0x19, 0x82, 0xAD, 0xB7, 0x81, 0x91, 0x91, 0xB1, 0x02, 0xC9, 0xF3, 0x80, 0xC9, 0xF2, 0x03, 0xC9, 0xF3, 0x87, 0xC7, 0x1A, 0xBF, 0x1A, 0xC7, 0x3A, 0xBF, 0x3A, 0xC6, 0x59, 0xC9, 0xD3, 0xC0, 0xB1, 0xC8, 0xB1, 0x01, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x03, 0xC0, 0xB1, 0x06, 0xC7, 0x38, 0x83, 0xA4, 0x75, 0x89, 0x91, 0xA9, 0xD2, 0xCA, 0x13, 0x01, 0xCA, 0x33, 0x81, 0xCA, 0x34, 0xCA, 0x13, 0x01, 0xCA, 0x33, 0x80, 0xCC, 0xB6, 0x09, 0xC7, 0x38, 0x82, 0xA4, 0x55, 0x81, 0x91, 0xA9, 0xD2, 0x01, 0xCA, 0x33, 0x80, 0xCA, 0x13, 0x02, 0xCA, 0x33, 0x81, 0xD2, 0x13, 0xC5, 0xF7, 0x03, 0xC7, 0x38, 0x80, 0xC7, 0x39, 0x04, 0xC7, 0x38, 0x83, 0xA4, 0x75, 0x81, 0x91, 0xA9, 0xD2, 0xCA, 0x13, 0x03, 0xCA, 0x33, 0x84, 0xCA, 0x13, 0xCA, 0x33, 0x91, 0xB1, 0x81, + 0x91, 0xCA, 0x13, 0x03, 0xCA, 0x33, 0x85, 0xCA, 0x13, 0xCA, 0x33, 0xCA, 0x13, 0xC4, 0x55, 0xC7, 0x38, 0xC7, 0x39, 0x03, 0xC7, 0x38, 0x80, 0xC7, 0x39, 0x02, 0xC7, 0x38, 0x82, 0x8A, 0x52, 0x89, 0x91, 0xC2, 0x13, 0x03, 0xCA, 0x13, 0x83, 0xCA, 0x33, 0xCA, 0x13, 0xCA, 0x33, 0xCD, 0x56, 0x01, 0xC7, 0x38, 0x83, 0xC7, 0x39, 0xB5, 0xD7, 0x81, 0x91, 0x91, 0xB1, 0x02, 0xCA, 0x13, 0x80, 0xD2, 0x33, 0x02, 0xCA, 0x33, 0x81, 0xCB, 0x55, 0xCF, 0x38, 0x04, 0xC7, 0x38, 0x81, 0xC7, 0x39, 0xC7, 0x38, 0x01, 0x81, 0x91, 0x02, 0xCA, 0x13, 0x86, 0xCA, 0x33, 0xCA, 0x13, 0xCA, 0x33, 0xD2, 0x33, 0xCA, 0x13, 0x81, 0x91, 0xA9, 0xD2, 0x01, 0xCA, 0x33, 0x01, 0xCA, 0x13, 0x83, 0xCA, 0x33, 0xCA, 0x13, 0xCA, 0x33, 0xCD, 0xF7, 0x02, 0xC7, 0x38, 0x84, 0xC7, 0x39, 0xA4, 0x75, 0x81, 0x91, 0xA9, 0xD2, 0xCA, 0x13, 0x03, 0xCA, 0x33, 0x82, 0xCA, 0x13, 0xCA, 0x33, 0xC5, 0xF7, 0x02, 0xC7, 0x38, 0x82, 0xB5, 0xD6, 0x81, 0x91, 0x99, 0xB2, 0x01, 0xCA, 0x33, 0x80, 0xD2, 0x13, 0x03, 0xCA, 0x33, 0x81, 0xCB, 0x74, 0xC7, 0x39, 0x03, 0xC7, 0x38, 0x80, 0xC7, 0x39, 0x01, 0xC7, 0x38, 0x82, 0x8A, 0xB2, 0x81, 0x91, 0xBA, 0x13, 0x01, 0xCA, 0x13, 0x81, 0xCA, 0x33, 0xCA, 0x13, 0x01, 0xCA, 0x33, 0x87, 0xCA, 0x13, 0xCF, 0x39, 0xC7, 0x39, 0xC7, 0x59, 0xCF, 0x3A, 0xCF, 0x39, 0xCE, 0xD9, 0xC9, 0xF3, 0x07, 0xC0, 0xB1, 0x80, 0xCF, 0x57, 0x01, 0xD7, 0x58, 0x89, 0xCF, 0x58, 0xD7, 0x58, 0xCF, 0x58, 0xD7, 0x58, 0xAC, 0x74, 0x81, 0x91, 0xA9, 0xF2, 0xCA, 0x53, 0xD2, 0x53, 0xCA, 0x54, 0x02, + 0xCA, 0x53, 0x82, 0xCA, 0x54, 0xCC, 0xD6, 0xCF, 0x58, 0x07, 0xD7, 0x58, 0x83, 0xCF, 0x58, 0xAC, 0x75, 0x81, 0x91, 0xA9, 0xF2, 0x01, 0xCA, 0x53, 0x80, 0xD2, 0x53, 0x02, 0xCA, 0x53, 0x86, 0xD2, 0x54, 0xCE, 0x17, 0xCF, 0x57, 0xD7, 0x58, 0xCF, 0x58, 0xD7, 0x58, 0xCF, 0x58, 0x01, 0xD7, 0x58, 0x88, 0xCF, 0x58, 0xD7, 0x58, 0xCF, 0x58, 0xAC, 0x74, 0x81, 0x91, 0xA9, 0xF2, 0xCA, 0x53, 0xCA, 0x54, 0xD2, 0x53, 0x01, 0xCA, 0x53, 0x83, 0xCA, 0x54, 0xCA, 0x53, 0x99, 0xD2, 0x89, 0xB1, 0x03, 0xCA, 0x53, 0x80, 0xD2, 0x53, 0x01, 0xCA, 0x53, 0x8E, 0xCA, 0x54, 0xD6, 0xB7, 0xD7, 0x58, 0xCF, 0x58, 0xCF, 0x57, 0xCF, 0x58, 0xD7, 0x58, 0xD7, 0x57, 0xD7, 0x58, 0xD7, 0x57, 0xD7, 0x58, 0xCF, 0x58, 0xB5, 0x35, 0x81, 0x91, 0xA1, 0xD2, 0x02, 0xCA, 0x53, 0x81, 0xD2, 0x54, 0xCA, 0x73, 0x01, 0xCA, 0x53, 0x80, 0xCC, 0x95, 0x01, 0xD7, 0x58, 0x83, 0xCF, 0x58, 0xBD, 0xD6, 0x81, 0x91, 0x99, 0xD2, 0x01, 0xCA, 0x53, 0x80, 0xCA, 0x54, 0x01, 0xCA, 0x53, 0x82, 0xD2, 0x54, 0xCA, 0x54, 0xD4, 0x35, 0x01, 0xD7, 0x58, 0x80, 0xCF, 0x58, 0x01, 0xD7, 0x58, 0x86, 0xCF, 0x57, 0xD7, 0x38, 0xCF, 0x58, 0x9A, 0xF3, 0x89, 0x91, 0xC2, 0x13, 0xCA, 0x54, 0x01, 0xCA, 0x53, 0x86, 0xD2, 0x53, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x73, 0x81, 0x91, 0xA9, 0xF2, 0xCA, 0x53, 0x01, 0xD2, 0x53, 0x85, 0xCA, 0x54, 0xD2, 0x53, 0xCA, 0x53, 0xCA, 0x54, 0xCE, 0x17, 0xCF, 0x58, 0x01, 0xD7, 0x58, 0x86, 0xCF, 0x58, 0xAC, 0x74, 0x81, 0x91, 0xA9, 0xF2, 0xCA, 0x53, 0xCA, 0x54, 0xD2, 0x53, 0x01, 0xCA, 0x53, + 0x83, 0xCA, 0x54, 0xCA, 0x53, 0xD6, 0x17, 0xD7, 0x58, 0x01, 0xCF, 0x58, 0x84, 0xBD, 0xD6, 0x81, 0x91, 0x91, 0xB2, 0xCA, 0x53, 0xD2, 0x54, 0x01, 0xCA, 0x53, 0x80, 0xCA, 0x54, 0x01, 0xD2, 0x53, 0x80, 0xCC, 0xD6, 0x03, 0xD7, 0x58, 0x8D, 0xCF, 0x57, 0xD7, 0x57, 0xCF, 0x58, 0xD7, 0x58, 0x9A, 0xF3, 0x81, 0x91, 0xBA, 0x33, 0xCA, 0x54, 0xCA, 0x53, 0xD2, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0xD2, 0x53, 0xCA, 0x53, 0x01, 0xD7, 0x58, 0x81, 0xDF, 0x59, 0xD7, 0x79, 0x01, 0xD7, 0x59, 0x81, 0xD6, 0xF9, 0xC1, 0xF2, 0x06, 0xC0, 0xB1, 0x06, 0xDF, 0x77, 0x84, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x12, 0xCA, 0x94, 0xCA, 0x74, 0x03, 0xCA, 0x94, 0x81, 0xD2, 0x94, 0xD4, 0xF5, 0x09, 0xDF, 0x77, 0x82, 0xB4, 0x74, 0x81, 0x91, 0xAA, 0x12, 0x01, 0xCA, 0x94, 0x85, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xDE, 0x36, 0x01, 0xDF, 0x77, 0x80, 0xDF, 0x57, 0x06, 0xDF, 0x77, 0x83, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x12, 0xCA, 0x94, 0x05, 0xD2, 0x94, 0x86, 0x99, 0xD2, 0x91, 0xD2, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x80, 0xD3, 0xD4, 0x02, 0xDF, 0x77, 0x80, 0xDF, 0x76, 0x04, 0xDF, 0x77, 0x80, 0xDF, 0x57, 0x01, 0xDF, 0x77, 0x81, 0x81, 0x91, 0x89, 0x92, 0x02, 0xCA, 0x94, 0x84, 0xD2, 0x94, 0xCA, 0x94, 0xCA, 0x93, 0xCA, 0x94, 0xD3, 0xD5, 0x02, 0xDF, 0x77, 0x82, 0xC5, 0xF5, 0x81, 0x91, 0x99, 0xD2, 0x01, 0xCA, 0x94, 0x85, 0xD2, 0x73, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xD5, 0x15, 0x07, 0xDF, 0x77, 0x82, + 0x9B, 0x12, 0x81, 0x91, 0xBA, 0x53, 0x01, 0xCA, 0x94, 0x86, 0xD2, 0x94, 0xCA, 0x94, 0xCA, 0x93, 0xD2, 0x94, 0xCA, 0x94, 0x81, 0x91, 0xAA, 0x12, 0x02, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x01, 0xD2, 0x94, 0x80, 0xDE, 0x36, 0x01, 0xDF, 0x77, 0x85, 0xDF, 0x57, 0xDF, 0x77, 0xB4, 0x74, 0x81, 0x91, 0xAA, 0x12, 0xCA, 0x94, 0x05, 0xD2, 0x94, 0x80, 0xDE, 0x36, 0x02, 0xDF, 0x77, 0x83, 0xC5, 0xF5, 0x81, 0x91, 0x99, 0xD2, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x80, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x81, 0xCA, 0x93, 0xD4, 0xF5, 0x07, 0xDF, 0x77, 0x83, 0x9B, 0x12, 0x81, 0x91, 0xBA, 0x53, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x83, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0x05, 0xDF, 0x78, 0x81, 0xE7, 0x79, 0xDF, 0x19, 0x03, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x82, 0xC0, 0xD1, 0xE7, 0x76, 0xE7, 0x96, 0x01, 0xE7, 0x97, 0x02, 0xE7, 0x96, 0x82, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x33, 0x02, 0xD2, 0xB4, 0x81, 0xCA, 0xB4, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x81, 0xDD, 0x35, 0xE7, 0x76, 0x08, 0xE7, 0x96, 0x82, 0xB4, 0x74, 0x81, 0x91, 0xAA, 0x33, 0x02, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x85, 0xCA, 0xD4, 0xD2, 0xD4, 0xE6, 0x56, 0xEF, 0x96, 0xE7, 0x76, 0xE7, 0x97, 0x01, 0xE7, 0x96, 0x81, 0xE7, 0x76, 0xE7, 0x77, 0x02, 0xE7, 0x96, 0x82, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x33, 0x06, 0xD2, 0xB4, 0x84, 0x99, 0xD2, 0x99, 0xF2, 0xCA, 0xB4, 0xD2, 0xB4, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x85, 0xCA, 0xD4, 0xD2, 0xB4, 0xD3, 0xF5, 0xE7, 0x77, 0xE7, 0x97, 0xEF, 0x97, 0x01, 0xE7, 0x96, 0x81, 0xE7, + 0x76, 0xE7, 0x77, 0x02, 0xE7, 0x96, 0x81, 0xE7, 0x77, 0xEF, 0x97, 0x01, 0x81, 0x91, 0x01, 0xD2, 0xB4, 0x01, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x81, 0xCA, 0xD4, 0xD3, 0xD5, 0x02, 0xE7, 0x96, 0x85, 0xCE, 0x15, 0x81, 0x91, 0x99, 0xF2, 0xCA, 0xD4, 0xD2, 0xB4, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x85, 0xCA, 0xB4, 0xD2, 0xB4, 0xDD, 0x35, 0xE7, 0x77, 0xEF, 0x76, 0xE7, 0x96, 0x01, 0xE7, 0x97, 0x86, 0xE7, 0x76, 0xE7, 0x96, 0xE7, 0x76, 0xC5, 0x34, 0xB4, 0x94, 0xCC, 0x15, 0xD3, 0xF5, 0x01, 0xDB, 0xF4, 0x85, 0xDB, 0xF5, 0xD3, 0xF5, 0xD3, 0xF4, 0xCB, 0x34, 0x81, 0x91, 0xAA, 0x32, 0x03, 0xD2, 0xB4, 0x84, 0xD2, 0xD4, 0xD2, 0xB4, 0xCA, 0xB4, 0xE6, 0x56, 0xE7, 0x76, 0x01, 0xE7, 0x96, 0x83, 0xE7, 0x76, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x33, 0x06, 0xD2, 0xB4, 0x80, 0xDE, 0x56, 0x02, 0xE7, 0x96, 0x82, 0xCE, 0x15, 0x81, 0x91, 0x99, 0xF2, 0x01, 0xD2, 0xB4, 0x82, 0xD2, 0xD4, 0xD2, 0xB4, 0xD2, 0xD4, 0x01, 0xCA, 0xD4, 0x80, 0xDD, 0x15, 0x01, 0xE7, 0x96, 0x82, 0xE7, 0x76, 0xE7, 0x96, 0xEF, 0x96, 0x02, 0xE7, 0x96, 0x82, 0x9B, 0x13, 0x81, 0x91, 0xBA, 0x73, 0x06, 0xD2, 0xB4, 0x84, 0xE7, 0x97, 0xEF, 0x97, 0xEF, 0x77, 0xEF, 0x97, 0xEF, 0x78, 0x02, 0xEF, 0x98, 0x83, 0xC9, 0x92, 0xB8, 0xD1, 0xC0, 0xD1, 0xC0, 0xB1, 0x02, 0xB8, 0xD1, 0x82, 0xF7, 0x96, 0xF7, 0xB6, 0xF7, 0x96, 0x01, 0xF7, 0x95, 0x84, 0xF7, 0x96, 0xEF, 0xB6, 0xBC, 0x93, 0x81, 0x91, 0xAA, 0x52, 0x02, 0xD2, 0xF4, 0x02, 0xD2, 0xF5, 0x81, 0xD2, 0xF4, 0xDD, 0x55, 0x08, 0xF7, 0xB6, 0x84, 0xEF, 0xB6, 0xBC, + 0x93, 0x81, 0x91, 0xAA, 0x53, 0xD2, 0xF5, 0x05, 0xD2, 0xF4, 0x82, 0xE6, 0x75, 0xF7, 0x96, 0xF7, 0x95, 0x02, 0xF7, 0x96, 0x80, 0xF7, 0xB6, 0x01, 0xF7, 0xB5, 0x84, 0xEF, 0x96, 0xF7, 0x96, 0xBC, 0x93, 0x81, 0x91, 0xAA, 0x33, 0x06, 0xD2, 0xF4, 0x01, 0x99, 0xF2, 0x80, 0xD2, 0xF5, 0x01, 0xD2, 0xF4, 0x81, 0xD2, 0xF5, 0xD2, 0xD4, 0x01, 0xD2, 0xF4, 0x80, 0xDC, 0x75, 0x02, 0xF7, 0x95, 0x81, 0xF7, 0x96, 0xF7, 0xB5, 0x03, 0xF7, 0x96, 0x84, 0xEF, 0xB6, 0xF7, 0xB5, 0xF7, 0x96, 0x81, 0x91, 0x89, 0x91, 0x06, 0xD2, 0xF4, 0x80, 0xDC, 0x15, 0x02, 0xF7, 0x96, 0x82, 0xD6, 0x15, 0x81, 0x91, 0x99, 0xF2, 0x03, 0xD2, 0xF4, 0x8D, 0xD2, 0xF5, 0xD2, 0xF4, 0xD2, 0xF5, 0xE5, 0x35, 0xF7, 0xB6, 0xF7, 0xB5, 0xF7, 0x96, 0xEF, 0xB6, 0xF7, 0x96, 0xF7, 0x95, 0xF7, 0xB6, 0xF7, 0x96, 0xF7, 0xB6, 0xF7, 0x95, 0x01, 0xF7, 0x96, 0x87, 0xF7, 0x95, 0xF7, 0xB6, 0xF7, 0x95, 0xF7, 0xB6, 0xF7, 0x96, 0xBC, 0x93, 0x81, 0x91, 0xAA, 0x53, 0x06, 0xD2, 0xF4, 0x80, 0xEE, 0x75, 0x01, 0xF7, 0x96, 0x84, 0xF7, 0xB5, 0xF7, 0x96, 0xBC, 0x93, 0x81, 0x91, 0xAA, 0x33, 0x06, 0xD2, 0xF4, 0x89, 0xEE, 0x75, 0xF7, 0x96, 0xF7, 0xB5, 0xF7, 0x95, 0xD6, 0x34, 0x81, 0x91, 0x99, 0xF2, 0xD2, 0xF4, 0xD2, 0xF5, 0xD2, 0xF4, 0x02, 0xD2, 0xF5, 0x83, 0xD2, 0xD4, 0xE5, 0x55, 0xF7, 0x96, 0xF7, 0xB5, 0x01, 0xF7, 0xB6, 0x86, 0xF7, 0x95, 0xF7, 0xB6, 0xF7, 0x96, 0xF7, 0xB6, 0xA3, 0x11, 0x81, 0x91, 0xBA, 0x94, 0x06, 0xD2, 0xF4, 0x01, 0xF7, 0x96, 0x02, 0xF7, 0x97, 0x80, 0xF7, 0xB7, 0x01, 0xF7, 0x98, 0x80, + 0xD2, 0x73, 0x05, 0xB8, 0xD1, 0x80, 0xFF, 0x94, 0x03, 0xFF, 0xB5, 0x85, 0xFF, 0xB4, 0xFF, 0xB5, 0xC4, 0x93, 0x81, 0x91, 0xAA, 0x53, 0xD3, 0x15, 0x02, 0xD3, 0x35, 0x83, 0xD3, 0x34, 0xD3, 0x15, 0xD3, 0x35, 0xE5, 0x75, 0x09, 0xFF, 0xB5, 0x82, 0xC4, 0x93, 0x81, 0x91, 0xAA, 0x53, 0x01, 0xD3, 0x35, 0x81, 0xD3, 0x14, 0xD3, 0x15, 0x02, 0xD3, 0x35, 0x82, 0xF6, 0x75, 0xFF, 0xB5, 0xFF, 0xB4, 0x01, 0xFF, 0xB5, 0x02, 0xFF, 0xB4, 0x01, 0xFF, 0xB5, 0x83, 0xFF, 0x95, 0xC4, 0x93, 0x81, 0x91, 0xAA, 0x53, 0x03, 0xD3, 0x35, 0x01, 0xD3, 0x15, 0x80, 0xD3, 0x35, 0x01, 0x99, 0xF2, 0x82, 0xD3, 0x35, 0xD3, 0x14, 0xD3, 0x15, 0x01, 0xD3, 0x35, 0x82, 0xD3, 0x15, 0xD3, 0x35, 0xDC, 0x54, 0x03, 0xFF, 0xB5, 0x80, 0xFF, 0xB4, 0x04, 0xFF, 0xB5, 0x81, 0xFF, 0xB4, 0xFF, 0xB5, 0x01, 0x81, 0x91, 0x81, 0xD3, 0x34, 0xD3, 0x15, 0x03, 0xD3, 0x35, 0x82, 0xD3, 0x15, 0xDC, 0x34, 0xFF, 0xB4, 0x01, 0xFF, 0xB5, 0x85, 0xDE, 0x34, 0x81, 0x91, 0x99, 0xF2, 0xD3, 0x14, 0xD3, 0x35, 0xD3, 0x15, 0x01, 0xD3, 0x34, 0x01, 0xD3, 0x35, 0x80, 0xE5, 0x74, 0x06, 0xFF, 0xB5, 0x01, 0xFF, 0xB4, 0x81, 0xFF, 0xB5, 0xFF, 0xB4, 0x02, 0xFF, 0xB5, 0x80, 0xFF, 0xB4, 0x01, 0xFF, 0xB5, 0x82, 0xC4, 0xB3, 0x81, 0x91, 0xAA, 0x53, 0x01, 0xD3, 0x35, 0x81, 0xD3, 0x14, 0xD3, 0x15, 0x02, 0xD3, 0x35, 0x80, 0xED, 0xF5, 0x03, 0xFF, 0xB5, 0x82, 0xC4, 0x93, 0x81, 0x91, 0xAA, 0x53, 0x03, 0xD3, 0x35, 0x01, 0xD3, 0x15, 0x81, 0xD3, 0x35, 0xF6, 0x94, 0x02, 0xFF, 0xB5, 0x82, 0xDE, 0x14, 0x81, 0x91, 0x99, 0xF2, + 0x01, 0xD3, 0x35, 0x85, 0xD3, 0x14, 0xD3, 0x34, 0xD3, 0x14, 0xD3, 0x34, 0xD3, 0x15, 0xE5, 0x55, 0x02, 0xFF, 0xB5, 0x80, 0xFF, 0xB4, 0x03, 0xFF, 0xB5, 0x82, 0xA3, 0x32, 0x81, 0x91, 0xBA, 0xB4, 0x02, 0xD3, 0x35, 0x81, 0xD3, 0x15, 0xD3, 0x34, 0x01, 0xD3, 0x35, 0x80, 0xFF, 0xB5, 0x04, 0xFF, 0xB6, 0x83, 0xFF, 0xB7, 0xFF, 0xB8, 0xDB, 0xD4, 0xB8, 0xD2, 0x04, 0xB8, 0xD1, 0x04, 0xFE, 0x2E, 0x01, 0xFE, 0x4E, 0x82, 0xC3, 0xF0, 0x81, 0x91, 0xAA, 0x73, 0x06, 0xD3, 0x55, 0x80, 0xEC, 0xD1, 0x09, 0xFE, 0x2E, 0x82, 0xC3, 0xEF, 0x81, 0x91, 0xAA, 0x73, 0x05, 0xD3, 0x55, 0x81, 0xD3, 0x54, 0xF5, 0x90, 0x01, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x80, 0xFE, 0x4E, 0x04, 0xFE, 0x2E, 0x82, 0xC3, 0xEF, 0x81, 0x91, 0xAA, 0x73, 0x06, 0xD3, 0x55, 0x83, 0x9A, 0x12, 0x91, 0xF2, 0xD3, 0x55, 0xD3, 0x54, 0x04, 0xD3, 0x55, 0x81, 0xDB, 0xD4, 0xFE, 0x4E, 0x03, 0xFE, 0x2E, 0x82, 0xFE, 0x4E, 0xFE, 0x2E, 0xFE, 0x4E, 0x02, 0xFE, 0x2E, 0x80, 0xFE, 0x4E, 0x01, 0x81, 0x91, 0x06, 0xD3, 0x55, 0x81, 0xDC, 0x13, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x82, 0xE5, 0x0F, 0x81, 0x91, 0x99, 0xF2, 0x05, 0xD3, 0x55, 0x81, 0xD3, 0x54, 0xEC, 0xD1, 0x07, 0xFE, 0x2E, 0x80, 0xFE, 0x4E, 0x03, 0xFE, 0x2E, 0x01, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x82, 0xC3, 0xCF, 0x81, 0x91, 0xAA, 0x73, 0x06, 0xD3, 0x55, 0x81, 0xE4, 0xD1, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x83, 0xFE, 0x4E, 0xC3, 0xD0, 0x81, 0x91, 0xAA, 0x73, 0x06, 0xD3, 0x55, 0x81, 0xF5, 0x90, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x82, 0xE5, 0x0F, 0x81, 0x91, + 0x9A, 0x12, 0x06, 0xD3, 0x55, 0x83, 0xEC, 0xD2, 0xFE, 0x2E, 0xFE, 0x4E, 0xFE, 0x2E, 0x02, 0xFE, 0x4E, 0x84, 0xFE, 0x4D, 0xFE, 0x2F, 0xA2, 0xB0, 0x81, 0x91, 0xC2, 0xF4, 0x06, 0xD3, 0x55, 0x80, 0xFE, 0x2F, 0x02, 0xFE, 0x50, 0x01, 0xFE, 0x51, 0x01, 0xFE, 0x52, 0x81, 0xE3, 0xD2, 0xB8, 0xD2, 0x02, 0xB8, 0xD1, 0x82, 0xB0, 0xD1, 0xB0, 0xD2, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x80, 0xFC, 0x8D, 0x02, 0xFC, 0x6D, 0x82, 0xC3, 0x0F, 0x81, 0xB1, 0xAA, 0x73, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xEC, 0x11, 0x08, 0xFC, 0x6D, 0x83, 0xFC, 0x8D, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x01, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x83, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x96, 0xF4, 0x2F, 0x01, 0xFC, 0x6D, 0x80, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x01, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x83, 0xFC, 0x8D, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x03, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x82, 0xD3, 0x95, 0x9A, 0x12, 0x81, 0x91, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x81, 0xF4, 0x4F, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x80, 0xFC, 0x8D, 0x03, 0xFC, 0x6D, 0x01, 0xFC, 0x8D, 0x80, 0xFC, 0x6D, 0x01, 0x81, 0x91, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xDB, 0xD3, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x82, 0xE3, 0xCE, 0x81, 0x91, 0x9A, 0x12, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x02, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x03, 0xFC, 0x6D, 0x01, 0xFC, 0x8D, 0x07, 0xFC, 0x6D, 0x86, 0xFC, 0x8D, + 0xFC, 0x6D, 0xFC, 0x8D, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x75, 0x05, 0xD3, 0x95, 0x87, 0xEB, 0xF1, 0xFC, 0x8D, 0xFC, 0x6D, 0xFC, 0x8D, 0xFC, 0x6D, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x03, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x81, 0xD3, 0x95, 0xF4, 0x2F, 0x01, 0xFC, 0x6D, 0x83, 0xFC, 0x8D, 0xE3, 0xCE, 0x81, 0x91, 0x9A, 0x12, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x76, 0x01, 0xD3, 0x95, 0x81, 0xEB, 0xF1, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x80, 0xFC, 0x8D, 0x02, 0xFC, 0x6D, 0x84, 0xFC, 0x8D, 0xA2, 0x50, 0x81, 0x91, 0xC3, 0x14, 0xD3, 0x75, 0x04, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xFC, 0x8E, 0x02, 0xFC, 0x8F, 0x01, 0xFC, 0xB0, 0x01, 0xFC, 0xB1, 0x83, 0xF3, 0xB2, 0xB8, 0xD1, 0xB0, 0xF1, 0xB8, 0xD1, 0x01, 0xB0, 0xF1, 0x80, 0xB0, 0xD1, 0x06, 0xFC, 0x8D, 0x82, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x09, 0xFC, 0x8D, 0x82, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x4F, 0x09, 0xFC, 0x8D, 0x82, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x82, 0x9A, 0x12, 0x81, 0x91, 0xC3, 0x34, 0x06, 0xD3, 0x95, 0x81, 0xDB, 0xB4, 0xFC, 0x8E, 0x09, 0xFC, 0x8D, 0x01, 0x81, 0x91, 0x05, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xDB, 0xD3, 0x02, 0xFC, 0x8D, 0x82, 0xE3, 0xCE, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x10, 0xFC, 0x8D, 0x82, 0xCB, 0x2F, 0x81, 0x91, 0xAA, 0x93, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x03, 0xFC, 0x8D, + 0x82, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x4F, 0x02, 0xFC, 0x8D, 0x82, 0xCB, 0x6F, 0x81, 0x91, 0x9A, 0x32, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x07, 0xFC, 0x8D, 0x82, 0xA2, 0x50, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x81, 0xFC, 0x8E, 0xFC, 0x8F, 0x01, 0xFC, 0xAF, 0x02, 0xFC, 0xB0, 0x81, 0xFC, 0xB2, 0xF4, 0x51, 0x02, 0xB0, 0xD1, 0x01, 0xB0, 0xF1, 0x82, 0xB0, 0xD1, 0xFC, 0xAD, 0xFC, 0xCD, 0x01, 0xFC, 0xAD, 0x02, 0xFC, 0xCD, 0x82, 0xCB, 0x4E, 0x81, 0x91, 0xAA, 0x73, 0x06, 0xD3, 0x95, 0x81, 0xEC, 0x31, 0xFC, 0xAD, 0x08, 0xFC, 0xCD, 0x82, 0xC3, 0x2F, 0x89, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x6F, 0x02, 0xFC, 0xCD, 0x80, 0xFC, 0xAD, 0x02, 0xFC, 0xCD, 0x02, 0xFC, 0xAD, 0x82, 0xC3, 0x2F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x83, 0xBB, 0x11, 0x81, 0x91, 0xAA, 0x73, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x86, 0xDB, 0xB4, 0xFC, 0xAE, 0xFC, 0xAD, 0xFC, 0xCD, 0xFC, 0xAD, 0xFC, 0xCD, 0xFC, 0xAD, 0x01, 0xFC, 0xCD, 0x01, 0xFC, 0xAD, 0x01, 0x81, 0x91, 0x05, 0xD3, 0x95, 0x82, 0xD3, 0x75, 0xDB, 0xD3, 0xFC, 0xAD, 0x01, 0xFC, 0xCD, 0x82, 0xDB, 0xEE, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x82, 0xEC, 0x31, 0xFC, 0xCD, 0xFC, 0xAD, 0x0A, 0xFC, 0xCD, 0x86, 0xFC, 0xAD, 0xFC, 0xCD, 0xFC, 0xAD, 0xFC, 0xCD, 0xDB, 0xEE, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xDB, 0xD3, 0x03, 0xFC, 0xCD, 0x82, 0xC3, 0x2F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x81, + 0xF4, 0x6F, 0xFC, 0xAD, 0x01, 0xFC, 0xCD, 0x82, 0xC3, 0x2F, 0x89, 0x91, 0xAA, 0x94, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x31, 0x01, 0xFC, 0xCD, 0x81, 0xFC, 0xAD, 0xFC, 0xCD, 0x03, 0xFC, 0xAD, 0x82, 0xA2, 0x70, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x80, 0xFC, 0xCE, 0x01, 0xFC, 0xCF, 0x82, 0xFC, 0xEF, 0xFC, 0xD0, 0xFC, 0xF0, 0x01, 0xFC, 0xF1, 0x80, 0xFC, 0xF2, 0x01, 0xB0, 0xF1, 0x84, 0xB0, 0xF2, 0xB0, 0xF1, 0xA8, 0xF1, 0xB0, 0xF1, 0xFD, 0x0D, 0x02, 0xFC, 0xED, 0x85, 0xFD, 0x0D, 0xFC, 0xED, 0xFD, 0x0D, 0xE4, 0x2E, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x51, 0x09, 0xFC, 0xED, 0x82, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x8F, 0x09, 0xFC, 0xED, 0x82, 0xC3, 0x2F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x82, 0xEC, 0x6F, 0x91, 0xD1, 0x89, 0xD1, 0x05, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x81, 0xDB, 0xB4, 0xEC, 0x70, 0x04, 0xFC, 0xED, 0x80, 0xFD, 0x0D, 0x01, 0xFC, 0xED, 0x01, 0x81, 0x91, 0x06, 0xD3, 0x95, 0x80, 0xDB, 0xF3, 0x02, 0xFC, 0xED, 0x82, 0xE4, 0x2E, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x51, 0x0E, 0xFC, 0xED, 0x84, 0xFD, 0x0D, 0xFC, 0xED, 0xEC, 0x6E, 0x81, 0x91, 0x91, 0xF2, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x01, 0xD3, 0x95, 0x86, 0xF4, 0xAF, 0xFD, 0x0D, 0xFC, 0xED, 0xFD, 0x0D, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x8F, 0x02, 0xFC, 0xED, 0x83, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x75, 0x05, 0xD3, 0x95, 0x80, + 0xEC, 0x51, 0x07, 0xFC, 0xED, 0x82, 0xA2, 0x70, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x80, 0xFD, 0x0E, 0x02, 0xFD, 0x0F, 0x01, 0xFD, 0x10, 0x01, 0xFD, 0x31, 0x80, 0xFD, 0x32, 0x03, 0xB0, 0xF1, 0x81, 0xA8, 0xF1, 0xB0, 0xF1, 0x06, 0xFD, 0x2D, 0x82, 0xE4, 0x4E, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x09, 0xFD, 0x2D, 0x82, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0xCF, 0x09, 0xFD, 0x2D, 0x82, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x83, 0xF4, 0xCF, 0xC3, 0x4F, 0x81, 0x91, 0xB2, 0xD4, 0x09, 0xD3, 0x95, 0x81, 0xDB, 0xD4, 0xE4, 0x31, 0x01, 0xEC, 0x71, 0x83, 0xDB, 0xF0, 0xE4, 0x50, 0xF4, 0xCF, 0xFD, 0x0E, 0x01, 0x81, 0x91, 0x06, 0xD3, 0x95, 0x88, 0xDB, 0xD4, 0xF4, 0xAF, 0xF4, 0xCF, 0xF4, 0xAF, 0xDC, 0x10, 0x9A, 0x12, 0xAA, 0x73, 0xD3, 0x95, 0xD3, 0x96, 0x04, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x0F, 0xFD, 0x2D, 0x01, 0xFD, 0x2C, 0x84, 0x92, 0x11, 0x81, 0x91, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x96, 0x05, 0xD3, 0x95, 0x85, 0xEC, 0x71, 0xFC, 0xEE, 0xFD, 0x2D, 0xC3, 0x6F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x86, 0xDC, 0x10, 0xE4, 0x4E, 0xDC, 0x2E, 0xE4, 0x4E, 0xB2, 0xF0, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x07, 0xFD, 0x2D, 0x82, 0xA2, 0x70, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x80, 0xFD, 0x2E, 0x01, 0xFD, 0x2F, 0x80, 0xFD, 0x4F, 0x01, 0xFD, 0x50, 0x01, 0xFD, 0x51, 0x83, 0xFD, 0x71, 0xA8, 0xF1, 0xB0, 0xF1, 0xB0, 0xF2, 0x01, 0xA8, 0xF1, + 0x80, 0xA8, 0xF2, 0x03, 0xFD, 0x6D, 0x80, 0xFD, 0x4D, 0x01, 0xFD, 0x6D, 0x82, 0xE4, 0x6E, 0x81, 0x91, 0x92, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x09, 0xFD, 0x6D, 0x82, 0xC3, 0x6F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0xEF, 0x09, 0xFD, 0x6D, 0x82, 0xC3, 0x6F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x88, 0xF4, 0xEF, 0xFD, 0x2D, 0x92, 0x11, 0x89, 0xB2, 0xCB, 0x75, 0xD3, 0x96, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x96, 0x0B, 0xD3, 0x95, 0x80, 0xEC, 0x91, 0x01, 0x81, 0x91, 0x0B, 0xD3, 0x95, 0x80, 0xCB, 0x95, 0x07, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x0C, 0xFD, 0x6D, 0x80, 0xFD, 0x4D, 0x03, 0xFD, 0x6D, 0x82, 0xBB, 0x2F, 0x81, 0x91, 0xB2, 0xD4, 0x0A, 0xD3, 0x95, 0x82, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x09, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x09, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x07, 0xFD, 0x6D, 0x82, 0xA2, 0x90, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x80, 0xFD, 0x6E, 0x01, 0xFD, 0x6F, 0x80, 0xFD, 0x8F, 0x01, 0xFD, 0x90, 0x01, 0xFD, 0x91, 0x80, 0xFD, 0x92, 0x05, 0xA8, 0xF1, 0x83, 0xEC, 0x6F, 0xFD, 0x8D, 0xFD, 0xAD, 0xFD, 0x8D, 0x02, 0xFD, 0xAD, 0x82, 0xE4, 0x8E, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x81, 0xEC, 0x91, 0xFD, 0xAD, 0x08, 0xFD, 0x8D, 0x82, 0xC3, 0x8F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x83, 0xF5, 0x2F, 0xFD, 0xAD, 0xFD, 0x8D, 0xFD, 0xAD, 0x01, 0xFD, 0x8D, 0x80, 0xFD, 0xAD, 0x01, 0xFD, 0x8D, 0x01, 0xFD, 0xAD, 0x82, 0xC3, 0x8F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x84, 0xF5, 0x2F, + 0xFD, 0x8D, 0xE4, 0xAE, 0x89, 0x91, 0x9A, 0x32, 0x0F, 0xD3, 0x95, 0x80, 0xE4, 0x91, 0x01, 0x81, 0x91, 0x06, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x0C, 0xD3, 0x95, 0x80, 0xEC, 0x91, 0x01, 0xFD, 0xAD, 0x07, 0xFD, 0x8D, 0x01, 0xFD, 0xAD, 0x01, 0xFD, 0x8D, 0x01, 0xFD, 0xAD, 0x84, 0xFD, 0x8D, 0xFD, 0xAD, 0xF5, 0x2D, 0x81, 0x91, 0x91, 0xF2, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x82, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x14, 0xD3, 0x95, 0x80, 0xEC, 0x91, 0x01, 0xFD, 0x8D, 0x04, 0xFD, 0xAD, 0x83, 0xFD, 0x8D, 0xA2, 0x90, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x01, 0xFD, 0xAF, 0x02, 0xFD, 0xAD, 0x83, 0xFD, 0x8D, 0xFD, 0xAD, 0xFD, 0x8D, 0xEC, 0x6F, 0x02, 0xA8, 0xF1, 0x02, 0xA9, 0x11, 0x80, 0xEC, 0x8E, 0x01, 0xFD, 0xED, 0x02, 0xFD, 0xCD, 0x83, 0xFD, 0xED, 0xE4, 0xCE, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0xB1, 0x09, 0xFD, 0xCD, 0x82, 0xC3, 0xAF, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF5, 0x4F, 0x01, 0xFD, 0xCD, 0x80, 0xFD, 0xED, 0x04, 0xFD, 0xCD, 0x84, 0xFD, 0xED, 0xFD, 0xCD, 0xC3, 0xAF, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x85, 0xF5, 0x4F, 0xFD, 0xED, 0xFD, 0xCD, 0xD4, 0x4F, 0x81, 0x91, 0xB2, 0xB3, 0x09, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x03, 0xD3, 0x95, 0x82, 0xEC, 0xB1, 0x89, 0x91, 0x81, 0x91, 0x0B, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x07, 0xD3, 0x95, 0x80, 0xEC, 0xB1, 0x12, 0xFD, 0xCD, 0x82, 0xBB, 0x6F, 0x81, 0x91, 0xBA, 0xF4, 0x04, 0xD3, 0x95, 0x80, + 0xD3, 0x75, 0x03, 0xD3, 0x95, 0x82, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x14, 0xD3, 0x95, 0x80, 0xEC, 0xB1, 0x01, 0xFD, 0xED, 0x01, 0xFD, 0xCD, 0x03, 0xFD, 0xED, 0x82, 0xA2, 0xB0, 0x81, 0x91, 0xC3, 0x14, 0x05, 0xD3, 0x95, 0x83, 0xD3, 0x75, 0xFD, 0xEE, 0xFD, 0xEF, 0xFD, 0xED, 0x02, 0xFD, 0xCD, 0x01, 0xFD, 0xED, 0x80, 0xEC, 0x8E, 0x04, 0xA9, 0x11, 0x81, 0xA1, 0x11, 0xE4, 0x2E, 0x05, 0xFE, 0x0D, 0x82, 0xE4, 0xEE, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0xD1, 0x09, 0xFE, 0x0D, 0x82, 0xC3, 0xCF, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF5, 0x6F, 0x09, 0xFE, 0x0D, 0x82, 0xC3, 0xCF, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF5, 0x6F, 0x02, 0xFE, 0x0D, 0x82, 0xD4, 0x4F, 0x81, 0x91, 0xBA, 0xD3, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xEC, 0xD1, 0x01, 0x81, 0x91, 0x0E, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x04, 0xD3, 0x95, 0x80, 0xEC, 0xD1, 0x12, 0xFE, 0x0D, 0x83, 0xF5, 0xAD, 0x9A, 0x70, 0x89, 0xB1, 0xD3, 0x75, 0x08, 0xD3, 0x95, 0x82, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x0C, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0xD1, 0x02, 0xFE, 0x0D, 0x81, 0xFE, 0x0E, 0xFE, 0x0D, 0x02, 0xFE, 0x0E, 0x82, 0xA2, 0xB0, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x01, 0xFE, 0x0F, 0x05, 0xFE, 0x0D, 0x81, 0xE4, 0x2E, 0xA1, 0x11, 0x01, 0xA9, 0x11, 0x80, 0x80, 0xF0, 0x01, 0xA1, 0x11, 0x80, 0xC2, 0xB0, 0x05, 0xFE, 0x4D, 0x82, 0xE5, 0x0E, 0x81, 0x91, + 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0xF1, 0x09, 0xFE, 0x4D, 0x82, 0xC3, 0xEF, 0x89, 0x91, 0xAA, 0x93, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x02, 0xD3, 0x95, 0x80, 0xF5, 0x8F, 0x09, 0xFE, 0x4D, 0x84, 0xC3, 0xEF, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x95, 0xD3, 0x96, 0x04, 0xD3, 0x95, 0x80, 0xF5, 0x8F, 0x03, 0xFE, 0x4D, 0x83, 0xE5, 0x0E, 0x89, 0xD1, 0xA2, 0x53, 0xCB, 0x75, 0x05, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x04, 0xD3, 0x95, 0x80, 0xEC, 0xF1, 0x01, 0x81, 0x91, 0x14, 0xD3, 0x95, 0x80, 0xEC, 0xF1, 0x13, 0xFE, 0x4D, 0x83, 0xF6, 0x0E, 0x9A, 0x70, 0x91, 0xF2, 0xCB, 0x75, 0x05, 0xD3, 0x95, 0x86, 0xD3, 0x96, 0xD3, 0x95, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x95, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x0F, 0xD3, 0x95, 0x80, 0xEC, 0xF2, 0x02, 0xFE, 0x4D, 0x89, 0xFE, 0x4E, 0xFE, 0x4D, 0xFE, 0x4E, 0xFE, 0x4D, 0xFE, 0x4E, 0xA2, 0xD0, 0x81, 0x91, 0xC3, 0x14, 0xD3, 0x95, 0xD3, 0x96, 0x04, 0xD3, 0x95, 0x81, 0xFE, 0x4E, 0xFE, 0x4F, 0x05, 0xFE, 0x4D, 0x80, 0xC2, 0xB0, 0x01, 0xA1, 0x11, 0x81, 0x80, 0xF0, 0x60, 0xEF, 0x01, 0xA1, 0x11, 0x81, 0xA1, 0x12, 0xFE, 0x2D, 0x04, 0xFE, 0x8D, 0x82, 0xE5, 0x4E, 0x81, 0x91, 0x9A, 0x12, 0x04, 0xD3, 0x95, 0x82, 0xD3, 0x75, 0xD3, 0x95, 0xED, 0x11, 0x08, 0xFE, 0x6D, 0x85, 0xFE, 0x8D, 0xC4, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x95, 0xD3, 0x96, 0x03, 0xD3, 0x95, 0x82, 0xD3, 0x75, 0xF5, 0xCF, 0xFE, 0x6D, 0x07, 0xFE, 0x8D, 0x83, 0xFE, 0x6D, 0xC4, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, + 0x80, 0xF5, 0xCE, 0x01, 0xFE, 0x6D, 0x86, 0xFE, 0x8D, 0xFE, 0x6C, 0xFE, 0x8D, 0xF6, 0x2D, 0xC4, 0x0F, 0x9A, 0x12, 0xB2, 0xD4, 0x0A, 0xD3, 0x95, 0x80, 0xEC, 0xF1, 0x01, 0x81, 0x91, 0x14, 0xD3, 0x95, 0x80, 0xED, 0x11, 0x09, 0xFE, 0x6D, 0x80, 0xFE, 0x8D, 0x06, 0xFE, 0x6D, 0x86, 0xFE, 0x6C, 0xFE, 0x8D, 0xFE, 0x6D, 0xFE, 0x2D, 0xBB, 0xCF, 0x89, 0xB1, 0xBA, 0xF4, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x83, 0xD3, 0x96, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x14, 0xD3, 0x95, 0x80, 0xED, 0x12, 0x07, 0xFE, 0x8E, 0x82, 0xA2, 0xD0, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x01, 0xFE, 0x8F, 0x04, 0xFE, 0x8D, 0x81, 0xFE, 0x2D, 0xA1, 0x12, 0x01, 0xA1, 0x11, 0x81, 0x60, 0xEF, 0x28, 0xCD, 0x02, 0xA1, 0x11, 0x80, 0xCB, 0xCF, 0x04, 0xFE, 0xAD, 0x82, 0xF5, 0xED, 0x89, 0xD1, 0x91, 0xD2, 0x04, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xD3, 0x95, 0xED, 0x11, 0x09, 0xFE, 0xAD, 0x82, 0xC4, 0x2F, 0x81, 0xB1, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF5, 0xEF, 0x07, 0xFE, 0xAD, 0x84, 0xFE, 0xCC, 0xFE, 0xAD, 0xC4, 0x2F, 0x81, 0x91, 0xAA, 0x93, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x03, 0xD3, 0x95, 0x82, 0xF5, 0xEF, 0xFE, 0xAD, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x80, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x86, 0xF6, 0x4D, 0xD4, 0xCE, 0xBB, 0xD0, 0xC3, 0xB2, 0xC3, 0x14, 0xD3, 0x95, 0xD3, 0x75, 0x05, 0xD3, 0x95, 0x80, 0xED, 0x12, 0x01, 0x81, 0x91, 0x10, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x02, 0xD3, 0x95, 0x80, 0xED, 0x31, 0x01, 0xFE, 0xAC, 0x14, 0xFE, 0xAD, 0x84, + 0xEE, 0x0D, 0xCC, 0x6F, 0xBB, 0x51, 0xBA, 0xD4, 0xCB, 0x55, 0x03, 0xD3, 0x95, 0x82, 0xC3, 0x34, 0x81, 0x91, 0xB2, 0x94, 0x12, 0xD3, 0x95, 0x88, 0xD3, 0x75, 0xD3, 0x95, 0xED, 0x11, 0xFE, 0xAE, 0xFE, 0xCE, 0xFE, 0xAD, 0xFE, 0xAE, 0xFE, 0xAD, 0xFE, 0xCE, 0x01, 0xFE, 0xAE, 0x82, 0xA2, 0xF0, 0x81, 0x91, 0xC3, 0x14, 0x05, 0xD3, 0x95, 0x82, 0xDC, 0x34, 0xFE, 0xAF, 0xFE, 0xD0, 0x04, 0xFE, 0xAD, 0x80, 0xCB, 0xCF, 0x02, 0xA1, 0x11, 0x86, 0x28, 0xCD, 0x00, 0x01, 0x81, 0x10, 0x99, 0x11, 0xA1, 0x11, 0xA1, 0x71, 0xF5, 0xED, 0x05, 0xFE, 0xAD, 0x83, 0xFE, 0xAC, 0xFE, 0x6D, 0xF5, 0xCF, 0xF5, 0xEF, 0x01, 0xF5, 0xCF, 0x82, 0xF5, 0xEF, 0xF5, 0xCF, 0xFE, 0x4D, 0x0B, 0xFE, 0xAD, 0x80, 0xFE, 0x4E, 0x01, 0xF5, 0xEF, 0x81, 0xF5, 0xCF, 0xF5, 0xEE, 0x02, 0xF5, 0xEF, 0x80, 0xFE, 0x8D, 0x03, 0xFE, 0xAC, 0x81, 0xFE, 0xAD, 0xFE, 0x8D, 0x02, 0xFE, 0xAD, 0x01, 0xFE, 0xAC, 0x85, 0xFE, 0xAD, 0xF6, 0x4D, 0xF5, 0xEF, 0xF5, 0xCF, 0xF5, 0xEF, 0xF5, 0xCF, 0x02, 0xF5, 0xEF, 0x80, 0xFE, 0x6E, 0x04, 0xFE, 0xAD, 0x01, 0xFE, 0xAC, 0x03, 0xFE, 0xAD, 0x80, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x82, 0xF6, 0x0E, 0xF5, 0xEF, 0xF5, 0xCF, 0x01, 0xF5, 0xEF, 0x83, 0xF5, 0xCF, 0xF6, 0x4E, 0xFE, 0xAC, 0xFE, 0xAD, 0x0F, 0xF5, 0xEF, 0x80, 0xF5, 0xCF, 0x02, 0xF5, 0xEF, 0x82, 0xF5, 0xCF, 0xFE, 0x4D, 0xFE, 0xAC, 0x08, 0xFE, 0xAD, 0x80, 0xFE, 0xAC, 0x08, 0xFE, 0xAD, 0x80, 0xFE, 0xAC, 0x06, 0xFE, 0xAD, 0x80, 0xFE, 0x6D, 0x01, 0xF5, 0xEF, 0x01, 0xF5, 0xCF, 0x85, 0xFE, 0xAD, 0xF6, 0x2E, + 0xF5, 0xEF, 0xF5, 0xD0, 0xF5, 0xEF, 0xF5, 0xCF, 0x01, 0xF5, 0xF0, 0x80, 0xF5, 0xEF, 0x0B, 0xF5, 0xF0, 0x83, 0xF5, 0xEF, 0xF5, 0xF0, 0xFE, 0x4F, 0xFE, 0xCE, 0x07, 0xFE, 0xAE, 0x82, 0xFE, 0xAF, 0xF6, 0x10, 0xF5, 0xD0, 0x03, 0xF5, 0xF0, 0x80, 0xF6, 0x10, 0x02, 0xFE, 0xAF, 0x03, 0xFE, 0xAD, 0x84, 0xF5, 0xED, 0xA1, 0x71, 0xA1, 0x11, 0x99, 0x11, 0x81, 0x10, 0x01, 0x00, 0x01, 0x80, 0x38, 0xCE, 0x02, 0x99, 0x31, 0x83, 0xAA, 0x31, 0xFE, 0x2D, 0xFE, 0x8C, 0xFE, 0x8D, 0x02, 0xFE, 0x8C, 0x81, 0xFE, 0xAD, 0xFE, 0x8C, 0x01, 0xFE, 0xAC, 0x01, 0xFE, 0x8C, 0x83, 0xFE, 0xAC, 0xFE, 0xAD, 0xFE, 0x8D, 0xFE, 0x8C, 0x07, 0xFE, 0xAD, 0x01, 0xFE, 0x8C, 0x01, 0xFE, 0xAC, 0x83, 0xFE, 0xAD, 0xFE, 0x8C, 0xFE, 0xAD, 0xFE, 0x8C, 0x01, 0xFE, 0x8D, 0x81, 0xFE, 0x8C, 0xFE, 0xAD, 0x01, 0xFE, 0x8C, 0x01, 0xFE, 0xAD, 0x01, 0xFE, 0xAC, 0x01, 0xFE, 0x8C, 0x82, 0xFE, 0xAC, 0xFE, 0x8C, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x8B, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0xAD, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0x8D, 0xFE, 0xAC, 0xFE, 0x8C, 0xFE, 0xAC, 0xFE, 0x8D, 0x01, 0xFE, 0xAD, 0x81, 0xFE, 0x8C, 0xFE, 0xAC, 0x01, 0xFE, 0x8C, 0x84, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0xAC, 0xFE, 0x8D, 0xFE, 0x8C, 0x01, 0xFE, 0xAD, 0x02, 0xFE, 0x8C, 0x82, 0xFE, 0xAD, 0xFE, 0x8C, 0xFE, 0xAC, 0x0F, 0xFE, 0xAD, 0x83, 0xFE, 0x8C, 0xFE, 0xAC, 0xFE, 0x8D, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x80, 0xFE, 0x8C, 0x10, 0xFE, 0xAD, 0x83, 0xFE, 0xAC, 0xFE, 0x8C, 0xFE, 0xAD, 0xFE, 0x8C, 0x03, 0xFE, + 0x8D, 0x02, 0xFE, 0xAD, 0x80, 0xFE, 0x8D, 0x03, 0xFE, 0xAD, 0x82, 0xFE, 0x8D, 0xFE, 0x8E, 0xFE, 0xAD, 0x01, 0xFE, 0xAE, 0x80, 0xFE, 0xAD, 0x0B, 0xFE, 0xAE, 0x01, 0xFE, 0x8E, 0x02, 0xFE, 0xAE, 0x80, 0xFE, 0x8E, 0x02, 0xFE, 0xAE, 0x01, 0xFE, 0x8E, 0x81, 0xFE, 0xAE, 0xFE, 0xAF, 0x01, 0xFE, 0xAE, 0x81, 0xFE, 0xAF, 0xFE, 0x8E, 0x04, 0xFE, 0xAF, 0x87, 0xFE, 0x8F, 0xFE, 0xB0, 0xFE, 0xAF, 0xFE, 0x8C, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0x2D, 0xAA, 0x31, 0x02, 0x99, 0x31, 0x80, 0x38, 0xCE, 0x02, 0x00, 0x01, 0x81, 0x60, 0xEF, 0x99, 0x12, 0x01, 0x99, 0x31, 0x81, 0xB2, 0x70, 0xF6, 0x2D, 0x01, 0xFE, 0x8C, 0x02, 0xFE, 0x8D, 0x81, 0xFE, 0x8C, 0xFE, 0x8D, 0x03, 0xFE, 0x8C, 0x02, 0xFE, 0x8D, 0x08, 0xFE, 0x8C, 0x80, 0xFE, 0x8D, 0x01, 0xFE, 0x8C, 0x02, 0xFE, 0x8D, 0x82, 0xFE, 0x8C, 0xFE, 0x8D, 0xFE, 0x8C, 0x03, 0xFE, 0x8D, 0x80, 0xFE, 0x8C, 0x08, 0xFE, 0x8D, 0x81, 0xFE, 0x8C, 0xFE, 0x8D, 0x03, 0xFE, 0x8C, 0x80, 0xFE, 0x8D, 0x02, 0xFE, 0x8C, 0x01, 0xFE, 0x8D, 0x02, 0xFE, 0x8C, 0x01, 0xFE, 0x8D, 0x01, 0xFE, 0x8C, 0x80, 0xFE, 0x8D, 0x03, 0xFE, 0x8C, 0x01, 0xFE, 0x8D, 0x81, 0xFE, 0x8C, 0xFE, 0x8D, 0x02, 0xFE, 0x8C, 0x12, 0xFE, 0x8D, 0x01, 0xFE, 0x8C, 0x83, 0xFE, 0x6D, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0x8D, 0x0A, 0xFE, 0x8C, 0x04, 0xFE, 0x8D, 0x80, 0xFE, 0x8C, 0x09, 0xFE, 0x8D, 0x80, 0xFE, 0x8E, 0x04, 0xFE, 0x8D, 0x10, 0xFE, 0x8E, 0x80, 0xFE, 0x8F, 0x01, 0xFE, 0x8E, 0x01, 0xFE, 0x8F, 0x80, 0xFE, 0x8E, 0x01, 0xFE, 0x8F, 0x82, 0xFE, 0x8E, 0xFE, 0x8F, + 0xFE, 0x8E, 0x0A, 0xFE, 0x8F, 0x01, 0xFE, 0x90, 0x80, 0xFE, 0xB0, 0x01, 0xFE, 0x8C, 0x81, 0xF6, 0x2D, 0xB2, 0x70, 0x01, 0x99, 0x31, 0x81, 0x99, 0x12, 0x60, 0xEF, 0x03, 0x00, 0x01, 0x81, 0x28, 0xAD, 0x81, 0x10, 0x01, 0x99, 0x31, 0x83, 0x99, 0x11, 0xAA, 0x31, 0xF5, 0xCD, 0xFE, 0x8C, 0x15, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x01, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x0E, 0xFE, 0x6C, 0x80, 0xFE, 0x8C, 0x04, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x01, 0xFE, 0x6C, 0x82, 0xFE, 0x6D, 0xFE, 0x6C, 0xFE, 0x6D, 0x03, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x0A, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x19, 0xFE, 0x6C, 0x80, 0xFE, 0x8C, 0x01, 0xFE, 0x6D, 0x11, 0xFE, 0x6C, 0x83, 0xFE, 0x6D, 0xFE, 0x6C, 0xFE, 0x6D, 0xFE, 0x6C, 0x03, 0xFE, 0x6D, 0x80, 0xFE, 0x6C, 0x02, 0xFE, 0x6D, 0x80, 0xFE, 0x8E, 0x01, 0xFE, 0x8D, 0x81, 0xFE, 0x6E, 0xFE, 0x8D, 0x0A, 0xFE, 0x6E, 0x03, 0xFE, 0x6F, 0x01, 0xFE, 0x8F, 0x02, 0xFE, 0x6F, 0x80, 0xFE, 0x8F, 0x01, 0xFE, 0x6F, 0x01, 0xFE, 0x8F, 0x01, 0xFE, 0x6F, 0x80, 0xFE, 0x8F, 0x01, 0xFE, 0x6F, 0x01, 0xFE, 0x8F, 0x80, 0xFE, 0x6F, 0x01, 0xFE, 0x8F, 0x81, 0xFE, 0x6F, 0xFE, 0x90, 0x01, 0xFE, 0x8F, 0x01, 0xFE, 0x90, 0x83, 0xFE, 0x8C, 0xF5, 0xCD, 0xAA, 0x31, 0x99, 0x11, 0x01, 0x99, 0x31, 0x81, 0x81, 0x10, 0x28, 0xAD, 0x04, 0x00, 0x01, 0x81, 0x28, 0xAD, 0x91, 0x11, 0x02, 0x99, 0x31, 0x83, 0xA1, 0x71, 0xCB, 0xCF, 0xF6, 0x0D, 0xFE, 0x4D, 0x08, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x0C, 0xFE, 0x6D, 0x82, 0xFE, 0x6C, 0xFE, 0x6D, 0xFE, 0x4D, 0x04, 0xFE, 0x6D, + 0x80, 0xFE, 0x4D, 0x04, 0xFE, 0x6D, 0x82, 0xFE, 0x4D, 0xFE, 0x6D, 0xFE, 0x6C, 0x07, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x02, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x05, 0xFE, 0x6D, 0x82, 0xFE, 0x6C, 0xFE, 0x6D, 0xFE, 0x4D, 0x08, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x2C, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x02, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x01, 0xFE, 0x6E, 0x81, 0xFE, 0x4E, 0xFE, 0x6D, 0x04, 0xFE, 0x6E, 0x80, 0xFE, 0x6F, 0x01, 0xFE, 0x6E, 0x11, 0xFE, 0x6F, 0x01, 0xFE, 0x70, 0x80, 0xFE, 0x6F, 0x08, 0xFE, 0x70, 0x80, 0xFE, 0x90, 0x03, 0xFE, 0x70, 0x02, 0xFE, 0x71, 0x82, 0xE4, 0x71, 0xCB, 0xCF, 0xA1, 0x71, 0x02, 0x99, 0x31, 0x81, 0x91, 0x11, 0x28, 0xAD, 0x06, 0x00, 0x01, 0x83, 0x28, 0xCD, 0x81, 0x11, 0x99, 0x31, 0x99, 0x12, 0x01, 0x99, 0x31, 0x88, 0x99, 0x11, 0xBA, 0xB0, 0xDC, 0x6F, 0xE5, 0x0F, 0xE5, 0x0E, 0xFE, 0x4E, 0xFE, 0x6E, 0xFE, 0x4E, 0xFE, 0x6D, 0x01, 0xFE, 0x4E, 0x60, 0xFE, 0x4D, 0x01, 0xFE, 0x4E, 0x05, 0xFE, 0x4D, 0x03, 0xFE, 0x4E, 0x01, 0xFE, 0x6E, 0x02, 0xFE, 0x4E, 0x01, 0xFE, 0x6E, 0x82, 0xFE, 0x4E, 0xFE, 0x6F, 0xFE, 0x6E, 0x05, 0xFE, 0x6F, 0x83, 0xFE, 0x4F, 0xFE, 0x6F, 0xFE, 0x70, 0xFE, 0x50, 0x0F, 0xFE, 0x70, 0x0C, 0xFE, 0x71, 0x84, 0xF6, 0x12, 0xE5, 0x31, 0xE5, 0x12, 0xD4, 0x72, 0xB2, 0x71, 0x02, 0x99, 0x31, 0x83, 0x99, 0x12, 0x99, 0x31, 0x81, 0x11, 0x28, 0xCD, 0x08, 0x00, 0x01, 0x82, 0x28, 0xCC, 0x61, 0x0F, 0x99, 0x11, 0x07, 0x99, 0x31, 0x80, 0x99, 0x32, 0x75, 0x99, 0x31, 0x80, 0x99, 0x12, 0x03, 0x99, 0x31, 0x82, 0x99, 0x11, + 0x99, 0x31, 0x99, 0x11, 0x01, 0x99, 0x31, 0x01, 0x99, 0x11, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x17, 0x99, 0x31, 0x01, 0x99, 0x11, 0x81, 0x99, 0x31, 0x99, 0x32, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x80, 0x99, 0x12, 0x02, 0x99, 0x31, 0x82, 0x99, 0x11, 0x61, 0x0F, 0x28, 0xCC, 0x0B, 0x00, 0x01, 0x81, 0x40, 0xCE, 0x79, 0x10, 0x01, 0x99, 0x31, 0x80, 0x99, 0x32, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x7F, 0x99, 0x31, 0x29, 0x99, 0x31, 0x81, 0x79, 0x10, 0x40, 0xCE, 0x0E, 0x00, 0x01, 0x83, 0x18, 0xAB, 0x30, 0xCC, 0x58, 0xCF, 0x79, 0x10, 0x01, 0x99, 0x31, 0x80, 0x99, 0x12, 0x01, 0x99, 0x31, 0x84, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x99, 0x32, 0x99, 0x31, 0x7F, 0x99, 0x11, 0x16, 0x99, 0x11, 0x84, 0x99, 0x31, 0x99, 0x32, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x01, 0x99, 0x31, 0x80, 0x99, 0x12, 0x01, 0x99, 0x31, 0x83, 0x79, 0x10, 0x58, 0xCF, 0x30, 0xCC, 0x18, 0xAB, 0x07, 0x00, 0x01 +}; + +const tImage MarlinLogo195x59x16 = MARLIN_LOGO_CHOSEN(195, 59); + +#endif // HAS_GRAPHICAL_TFT && SHOW_BOOTSCREEN diff --git a/Marlin/src/lcd/tft/images/bootscreen_228x255x2.cpp b/Marlin/src/lcd/tft/images/bootscreen_228x255x2.cpp index 35dc5b5f9c..e6ee7535bf 100644 --- a/Marlin/src/lcd/tft/images/bootscreen_228x255x2.cpp +++ b/Marlin/src/lcd/tft/images/bootscreen_228x255x2.cpp @@ -21,13 +21,11 @@ */ #include "../../../inc/MarlinConfigPre.h" + +#if ALL(HAS_GRAPHICAL_TFT, SHOW_BOOTSCREEN) + #include "../tft_image.h" -#if HAS_GRAPHICAL_TFT - -extern const uint8_t marlin_logo_228x255x2[]; -const tImage MarlinLogo228x255x2 = { (void *)marlin_logo_228x255x2, 228, 255, GREYSCALE2 }; - const uint8_t marlin_logo_228x255x2[14535] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -286,4 +284,6 @@ const uint8_t marlin_logo_228x255x2[14535] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00 }; -#endif // HAS_GRAPHICAL_TFT +const tImage MarlinLogo228x255x2 = { (void *)marlin_logo_228x255x2, 228, 255, GREYSCALE2 }; + +#endif // HAS_GRAPHICAL_TFT && SHOW_BOOTSCREEN diff --git a/Marlin/src/lcd/tft/images/bootscreen_228x255x4.cpp b/Marlin/src/lcd/tft/images/bootscreen_228x255x4.cpp index fe60e173e6..3400271ca0 100644 --- a/Marlin/src/lcd/tft/images/bootscreen_228x255x4.cpp +++ b/Marlin/src/lcd/tft/images/bootscreen_228x255x4.cpp @@ -21,13 +21,11 @@ */ #include "../../../inc/MarlinConfigPre.h" + +#if ALL(HAS_GRAPHICAL_TFT, SHOW_BOOTSCREEN) + #include "../tft_image.h" -#if HAS_GRAPHICAL_TFT - -extern const uint8_t marlin_logo_228x255x4[]; -const tImage MarlinLogo228x255x4 = { (void *)marlin_logo_228x255x4, 228, 255, GREYSCALE4 }; - const uint8_t marlin_logo_228x255x4[29070] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x9E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -286,4 +284,6 @@ const uint8_t marlin_logo_228x255x4[29070] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00 }; -#endif // HAS_GRAPHICAL_TFT +const tImage MarlinLogo228x255x4 = { (void *)marlin_logo_228x255x4, 228, 255, GREYSCALE4 }; + +#endif // HAS_GRAPHICAL_TFT && SHOW_BOOTSCREEN diff --git a/Marlin/src/lcd/tft/images/bootscreen_240x250x16.cpp b/Marlin/src/lcd/tft/images/bootscreen_240x250x16.cpp new file mode 100644 index 0000000000..3e31d9cd11 --- /dev/null +++ b/Marlin/src/lcd/tft/images/bootscreen_240x250x16.cpp @@ -0,0 +1,376 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../../inc/MarlinConfigPre.h" + +#if ALL(HAS_GRAPHICAL_TFT, SHOW_BOOTSCREEN) + +#include "../tft_image.h" + +const uint16_t marlin_logo_240x250x16[60000] = { + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x21CF, 0x2395, 0x2250, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x2271, 0x2CFA, 0x2C57, 0x214D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x2313, 0x2D5B, 0x2D1A, 0x2271, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216E, 0x2B74, 0x2D9C, 0x2D9C, 0x2C78, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216D, 0x2B54, 0x2D9C, 0x2DBC, 0x2D5B, 0x2B54, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x2B13, 0x2D7C, 0x35BC, 0x35BC, 0x2D5B, 0x2B34, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x2292, 0x355B, 0x35BD, 0x35BD, 0x35BD, 0x359C, 0x2C99, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x2210, 0x2D1A, 0x35BC, 0x35BD, 0x35BD, 0x35BD, 0x357C, 0x2BF6, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x21AE, 0x2C58, 0x359C, 0x35BD, 0x35BD, 0x35BD, 0x35BD, 0x355B, 0x2B75, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x2B34, 0x359C, 0x35BD, 0x35BD, 0x35BD, 0x35BD, 0x35BD, 0x357C, 0x2BF6, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x2230, 0x353B, 0x35BD, 0x35BD, 0x35BD, 0x35BD, 0x35BD, 0x35BD, 0x359C, 0x34FA, 0x21EF, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x218E, 0x2C37, 0x359C, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x351A, 0x2230, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x2AB2, 0x359C, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x34FA, 0x2230, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x21AF, 0x3499, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x34FA, 0x2210, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x2B14, 0x359C, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x359D, 0x34FA, 0x2230, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x21EF, 0x34FA, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x357C, 0x3458, 0x218E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216E, 0x2B75, 0x3D9C, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x34FA, 0x2210, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x21EF, 0x351B, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x34DA, 0x218E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216D, 0x2B34, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x34DA, 0x21CF, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x21CF, 0x34DA, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D3C, 0x2B75, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x2AF3, 0x3D7C, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D7C, 0x3418, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x21AE, 0x3458, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D9D, 0x3D7C, 0x3479, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x2A10, 0x3D5C, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3CFB, 0x2A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x2B34, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7C, 0x3C99, 0x21CF, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x21AE, 0x3458, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D3B, 0x3355, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29F0, 0x3D5C, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D7D, 0x3D5C, 0x33F7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x2A92, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x3CBA, 0x21AF, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216E, 0x3375, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x455C, 0x3C59, 0x2A30, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x218E, 0x3C18, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x3D1C, 0x3355, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x21CF, 0x3CDA, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x453C, 0x33B6, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29EF, 0x455C, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x455C, 0x3C38, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x2A31, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x44FB, 0x2AB2, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x2AB2, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x455D, 0x44FB, 0x3375, 0x216E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x32F3, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x457D, 0x455D, 0x451B, 0x3355, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216D, 0x3334, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x453C, 0x3C18, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216E, 0x3375, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x455D, 0x44DB, 0x2AB2, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216E, 0x3B96, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x44FB, 0x3355, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x218E, 0x3BB6, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x449A, 0x21AF, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x2A10, 0x32D3, 0x3B96, 0x3BF7, 0x3BF7, 0x3B76, 0x32D3, 0x2A10, 0x214D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x218E, 0x3BB7, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x44DB, 0x2A92, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x218E, 0x3292, 0x3B96, 0x4479, 0x44FB, 0x451C, 0x453C, 0x4D3C, 0x4D3C, 0x4D3C, 0x4D3C, 0x453C, 0x451C, 0x44DB, 0x3BD7, 0x2A72, 0x214D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x218E, 0x3BB7, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D3D, 0x3C38, 0x216E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x29CF, 0x3355, 0x447A, 0x451C, 0x4D3C, 0x4D3C, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D3D, 0x4D1C, 0x44BB, 0x3335, 0x218E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x218E, 0x3BB7, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D3C, 0x4438, 0x216E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3292, 0x3C18, 0x4CFC, 0x4D3C, 0x4D3D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D3D, 0x44DB, 0x4439, 0x3BB7, 0x3B96, 0x3B76, 0x3B96, 0x3BF7, 0x4459, 0x449A, 0x3314, 0x214D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216E, 0x3B96, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4CFB, 0x32D3, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x32B3, 0x4479, 0x4D1C, 0x4D3D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D3C, 0x4459, 0x3B35, 0x2A51, 0x218E, 0x214D, 0x214D, 0x214D, 0x212D, 0x212D, 0x214D, 0x214D, 0x214D, 0x29AF, 0x2A72, 0x2A51, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216E, 0x3B55, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D3D, 0x4459, 0x218E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3292, 0x4459, 0x4D1C, 0x4D3D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D1C, 0x4418, 0x32B3, 0x29AF, 0x214D, 0x212D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3314, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D1C, 0x3BF8, 0x218E, 0x0001, 0x0001, 0x0001, 0x212D, 0x29F0, 0x43F8, 0x4D1C, 0x4D3D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D3D, 0x44BB, 0x3335, 0x29CF, 0x214D, 0x212D, 0x0001, 0x214D, 0x29CF, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3271, 0x4D3D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D3D, 0x4459, 0x29CF, 0x0001, 0x216E, 0x3B35, 0x4CDB, 0x4D3D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D3D, 0x447A, 0x32D3, 0x216E, 0x212D, 0x0001, 0x0001, 0x218E, 0x32F4, 0x3BB7, 0x29F0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x2A31, 0x32F4, 0x3B55, 0x3B76, 0x3B76, 0x3B76, 0x3B76, 0x3BB7, 0x3BB7, 0x3BB7, 0x3BD7, 0x43F8, 0x4439, 0x447A, 0x4CBB, 0x4D1C, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4CFC, 0x3B35, 0x298E, 0x43F8, 0x4D1C, 0x4D3D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D5D, 0x4D3D, 0x449A, 0x32B3, 0x216E, 0x212D, 0x0001, 0x212D, 0x29F0, 0x3B76, 0x4CBB, 0x4418, 0x29CF, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x29F0, 0x32D3, 0x3B55, 0x3B96, 0x3B96, 0x3B96, 0x3B96, 0x3B76, 0x3B35, 0x32F4, 0x32B3, 0x3272, 0x2A10, 0x298E, 0x214D, 0x214D, 0x216E, 0x29F0, 0x32B3, 0x3B96, 0x4C9A, 0x4D3D, 0x4D3D, 0x4D3D, 0x4D3D, 0x4D3D, 0x4D3D, 0x4D3D, 0x4D3D, 0x4D3D, 0x4D3D, 0x4D3D, 0x4D3D, 0x4D3D, 0x4CFC, 0x4439, 0x4D3D, 0x4D3D, 0x4D3D, 0x4D3D, 0x4D3D, 0x4D3D, 0x4D3D, 0x4CBB, 0x3314, 0x216E, 0x212D, 0x0001, 0x214D, 0x3272, 0x43F8, 0x4CFC, 0x4CFC, 0x3BD7, 0x218E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216E, 0x3B55, 0x4CFC, 0x4D1C, 0x4D1C, 0x4D1C, 0x4D1C, 0x4D1C, 0x4D1C, 0x4D1C, 0x4D1C, 0x4D1C, 0x4D1C, 0x4D1C, 0x4CFC, 0x4CFC, 0x4CBB, 0x4439, 0x43D7, 0x3B35, 0x3292, 0x29F0, 0x218E, 0x29F0, 0x3B14, 0x4459, 0x4D3D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x4CFC, 0x43D7, 0x43F8, 0x4D1C, 0x553D, 0x553D, 0x4CFC, 0x3B55, 0x29AF, 0x212D, 0x0001, 0x216E, 0x32B3, 0x4459, 0x4D1C, 0x4D3D, 0x4CFC, 0x3B76, 0x214D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x218E, 0x3B96, 0x551C, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x4D1C, 0x4D1C, 0x4CFC, 0x4CBB, 0x43F8, 0x3B14, 0x2A51, 0x2A10, 0x3B35, 0x4C7A, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x4D1C, 0x4439, 0x3251, 0x32F4, 0x3B55, 0x29F0, 0x212D, 0x212D, 0x298E, 0x3B35, 0x4CBB, 0x4D1C, 0x553D, 0x553D, 0x4CDB, 0x32D3, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x43D7, 0x551C, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x551D, 0x551C, 0x4CFC, 0x4C9A, 0x3B96, 0x3292, 0x2A31, 0x3B76, 0x4CBB, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x551D, 0x4C7A, 0x3272, 0x212D, 0x212D, 0x214D, 0x3AF4, 0x4CBB, 0x551C, 0x553D, 0x553D, 0x553D, 0x4C9B, 0x3272, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29AF, 0x43F8, 0x551D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x551D, 0x4CFC, 0x4C9B, 0x3B76, 0x3251, 0x3292, 0x4419, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x4CBB, 0x3AF4, 0x0001, 0x214D, 0x3272, 0x4439, 0x551D, 0x553D, 0x551D, 0x4459, 0x2A10, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x29CF, 0x4439, 0x551D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x551D, 0x4CDC, 0x43F8, 0x3292, 0x3231, 0x43F8, 0x551D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x4C9B, 0x3251, 0x2A10, 0x2A10, 0x216E, 0x29CF, 0x32B3, 0x32B3, 0x218E, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x2A10, 0x4C5A, 0x551D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x551D, 0x54DC, 0x4419, 0x3293, 0x3231, 0x43F8, 0x553D, 0x553D, 0x553D, 0x553D, 0x551D, 0x4C39, 0x3251, 0x4396, 0x4C7A, 0x4397, 0x3272, 0x214D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216E, 0x3B14, 0x54DC, 0x551D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x551D, 0x54FC, 0x4C39, 0x32B3, 0x3272, 0x4C7A, 0x553D, 0x553D, 0x553D, 0x551D, 0x4418, 0x29CF, 0x3231, 0x43F8, 0x54FC, 0x4C9A, 0x3B35, 0x29D0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3231, 0x4C39, 0x551C, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x551D, 0x54DC, 0x43B7, 0x3251, 0x3B55, 0x54FC, 0x553D, 0x553D, 0x551C, 0x43F8, 0x298E, 0x216E, 0x32B3, 0x4CBB, 0x551D, 0x54DB, 0x43B7, 0x2A11, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x29AF, 0x4396, 0x54FC, 0x551D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x551D, 0x551D, 0x4C9B, 0x3B35, 0x3272, 0x4C7A, 0x553D, 0x553D, 0x54FC, 0x43F8, 0x29AF, 0x212D, 0x29CF, 0x43B7, 0x551D, 0x551D, 0x54DC, 0x43D8, 0x29D0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3292, 0x549B, 0x551D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x551D, 0x549B, 0x4C39, 0x43D7, 0x4376, 0x4376, 0x4376, 0x4376, 0x4376, 0x4376, 0x4376, 0x4396, 0x43B7, 0x43B7, 0x43F8, 0x4C19, 0x4C7A, 0x54BB, 0x551D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x553D, 0x551D, 0x54FC, 0x4C19, 0x3293, 0x43D8, 0x553D, 0x553D, 0x551D, 0x4C5A, 0x3211, 0x0001, 0x216E, 0x3AF4, 0x54FC, 0x551D, 0x551D, 0x54BB, 0x3B56, 0x216E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x4376, 0x54FC, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x54FC, 0x4397, 0x29F0, 0x214D, 0x214D, 0x214D, 0x214D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x214D, 0x214D, 0x214D, 0x214D, 0x214D, 0x214D, 0x214D, 0x216E, 0x298E, 0x3211, 0x3AB3, 0x3B35, 0x43D8, 0x4C7A, 0x551D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x551D, 0x549B, 0x3B35, 0x4356, 0x551D, 0x5D1D, 0x551D, 0x4C19, 0x214D, 0x0001, 0x214D, 0x3272, 0x549B, 0x5D1D, 0x5D1D, 0x54FC, 0x4C7A, 0x3293, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x29CF, 0x4C19, 0x54FD, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x54BB, 0x3AB3, 0x214D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x212D, 0x214D, 0x214D, 0x29AF, 0x3272, 0x4356, 0x4C39, 0x54FD, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x54DC, 0x4BF8, 0x3B15, 0x54FC, 0x5D1D, 0x54DC, 0x3B15, 0x0001, 0x0001, 0x212D, 0x29F0, 0x4C19, 0x5D1D, 0x5D1D, 0x5D1D, 0x54DC, 0x4397, 0x298E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x2A10, 0x4C7A, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x547A, 0x3231, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x214D, 0x29AF, 0x3AD4, 0x4BF8, 0x54FC, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x54FD, 0x4C5A, 0x3B35, 0x54BB, 0x5D1D, 0x54BB, 0x3AD3, 0x0001, 0x0001, 0x212D, 0x29AF, 0x43D8, 0x5D1D, 0x5D1D, 0x5D1D, 0x54FD, 0x4C5A, 0x3272, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x29F0, 0x545A, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5CFD, 0x4BF9, 0x29CF, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x214D, 0x29AF, 0x3AF4, 0x4C5A, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x547B, 0x4356, 0x547A, 0x5D1D, 0x549B, 0x3293, 0x0001, 0x0001, 0x0001, 0x29AF, 0x43B7, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x54BB, 0x4356, 0x214D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29AF, 0x4C39, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5CFD, 0x545A, 0x3AB3, 0x214D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x216E, 0x3231, 0x43B7, 0x5CFC, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x549B, 0x4335, 0x547A, 0x5D1D, 0x545A, 0x29AF, 0x0001, 0x0001, 0x0001, 0x298E, 0x4356, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5CDC, 0x4BF8, 0x29AF, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x4BD8, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x549B, 0x4377, 0x3231, 0x214E, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x214D, 0x29F0, 0x4397, 0x5CDC, 0x5D1D, 0x5D1D, 0x5D1D, 0x547B, 0x3B15, 0x547B, 0x5CFC, 0x4397, 0x212D, 0x0001, 0x0001, 0x0001, 0x298E, 0x4356, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5CFD, 0x4C39, 0x2A10, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216E, 0x4376, 0x5CFD, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5CFD, 0x543A, 0x4335, 0x3211, 0x216E, 0x212D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x214D, 0x29D0, 0x4377, 0x5CDC, 0x5D1D, 0x5D1D, 0x547A, 0x3B15, 0x54BC, 0x549B, 0x3A93, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x4356, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x547B, 0x3272, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216E, 0x4315, 0x5CFD, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5CDC, 0x4BF8, 0x3AD4, 0x29CF, 0x214D, 0x212D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x214D, 0x31F0, 0x4BD8, 0x5D1D, 0x5CFD, 0x545A, 0x4315, 0x5CDC, 0x545A, 0x29AF, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x4397, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x549B, 0x3AB3, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3AF4, 0x5CFD, 0x5D1D, 0x5D1D, 0x5D1D, 0x5CFD, 0x5439, 0x3AD4, 0x298F, 0x214D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x216E, 0x3252, 0x543A, 0x5CFD, 0x545A, 0x4356, 0x5CFC, 0x4BB7, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x29AF, 0x4BB7, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x549B, 0x3AD4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3AD4, 0x5CDC, 0x5D1D, 0x5D1D, 0x5CDC, 0x4397, 0x31F0, 0x214D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x298E, 0x3AF4, 0x547B, 0x4C19, 0x4BB7, 0x549B, 0x3272, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29AF, 0x4BD8, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5C9B, 0x3AF4, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3AB3, 0x5CDC, 0x5D1D, 0x5CDC, 0x4377, 0x29D0, 0x212D, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x29CF, 0x4335, 0x4BB7, 0x543A, 0x5419, 0x214D, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x29CF, 0x5419, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5D1D, 0x5C9B, 0x3AD4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3AD4, 0x5CDC, 0x5CFD, 0x5419, 0x3231, 0x212D, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x298E, 0x3251, 0x547B, 0x3AD4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3210, 0x5C7B, 0x651D, 0x651D, 0x651D, 0x651D, 0x651D, 0x5C9B, 0x3A72, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x29CF, 0x3252, 0x3AD4, 0x4356, 0x4BB7, 0x4336, 0x298E, 0x3AF4, 0x5CDC, 0x5C9B, 0x3AD4, 0x214E, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216E, 0x42F4, 0x543A, 0x298E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3252, 0x5CDC, 0x651D, 0x651D, 0x651D, 0x651D, 0x64FD, 0x547B, 0x3231, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3A72, 0x4BD8, 0x5C9B, 0x5CDC, 0x5CDC, 0x5C9B, 0x4BB7, 0x3A72, 0x29AF, 0x4336, 0x5C9B, 0x4356, 0x29AF, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29AF, 0x4BD8, 0x4336, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214E, 0x3AD4, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x543A, 0x29F0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x29AF, 0x4315, 0x5C5A, 0x5CDC, 0x64FD, 0x5C9C, 0x4B76, 0x3231, 0x296E, 0x214D, 0x29D0, 0x4B77, 0x4335, 0x29CF, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3231, 0x5439, 0x29F0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x4B97, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x5419, 0x298E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x31F0, 0x4B77, 0x5C9C, 0x64DD, 0x64FD, 0x5C9C, 0x4315, 0x29AF, 0x212D, 0x212D, 0x0001, 0x212D, 0x29D0, 0x298E, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216E, 0x42F5, 0x4B97, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x29D0, 0x5C5B, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64DD, 0x4B97, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3252, 0x53D8, 0x64BC, 0x64DD, 0x64FD, 0x64BC, 0x4B77, 0x29AF, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29AF, 0x4BB8, 0x3231, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A72, 0x64DD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x5C9C, 0x42D4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x31F0, 0x4336, 0x5C5B, 0x64DD, 0x64FD, 0x64FD, 0x64FD, 0x5C7B, 0x3A72, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3210, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A72, 0x4BB8, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x4B56, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x5C7B, 0x3231, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x29CF, 0x3AB3, 0x4B97, 0x5C5B, 0x64BC, 0x64DD, 0x64FD, 0x64FD, 0x64FD, 0x64DD, 0x53D8, 0x29AF, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x4B97, 0x3AB3, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x4B56, 0x3210, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29D0, 0x5C7B, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x5419, 0x296E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x296E, 0x31F0, 0x3A93, 0x4B56, 0x53F9, 0x5C7B, 0x64BC, 0x64DD, 0x64DD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x649C, 0x42F5, 0x214D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x4B56, 0x5C5A, 0x31F0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3211, 0x4335, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3A93, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64BC, 0x4B56, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x29AF, 0x3231, 0x42D4, 0x4B56, 0x53D9, 0x5C5B, 0x64BC, 0x64BC, 0x64DD, 0x64DD, 0x64DD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64DD, 0x53D8, 0x31F0, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x42B4, 0x64DD, 0x53D8, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3211, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x53D8, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x5C7B, 0x3252, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x216E, 0x3AB4, 0x42D4, 0x3A72, 0x3211, 0x31D0, 0x298E, 0x214D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x298E, 0x31D0, 0x3231, 0x3A72, 0x3AB4, 0x4336, 0x4B97, 0x53F9, 0x5C7B, 0x64BC, 0x64BC, 0x64BC, 0x64DD, 0x64DD, 0x64DD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64DD, 0x53F9, 0x3A52, 0x214D, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3211, 0x64FD, 0x649C, 0x3A93, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3211, 0x64BC, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64FD, 0x64DD, 0x5419, 0x296E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x31F0, 0x53D8, 0x64BC, 0x64BC, 0x64BC, 0x64BC, 0x649C, 0x649C, 0x649C, 0x5C5B, 0x5C3A, 0x5C1A, 0x53F9, 0x53D9, 0x53B8, 0x53B8, 0x5397, 0x4B77, 0x4B77, 0x4B36, 0x4B36, 0x4B36, 0x4B36, 0x4B36, 0x4B36, 0x4B36, 0x4B36, 0x4B36, 0x4B77, 0x5397, 0x53B8, 0x53F9, 0x5C1A, 0x5C3A, 0x647C, 0x649C, 0x64BC, 0x64BC, 0x64BC, 0x64BD, 0x64BD, 0x64DD, 0x64DD, 0x64DD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x649C, 0x4B77, 0x3231, 0x214D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29CF, 0x649C, 0x64DD, 0x5C1A, 0x296E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x4B56, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x64BC, 0x4B36, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x296E, 0x3231, 0x5397, 0x649C, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x64DD, 0x64DD, 0x64DD, 0x64DD, 0x64DD, 0x64DD, 0x64DD, 0x64DD, 0x64DD, 0x64DD, 0x64DD, 0x64DD, 0x64DD, 0x64DD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x64BD, 0x53B8, 0x3A73, 0x298E, 0x212D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x298E, 0x31D0, 0x214D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x5C1A, 0x6CFD, 0x649C, 0x42B4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x31F0, 0x649C, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x5C5B, 0x31F0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x214D, 0x296E, 0x3211, 0x42F5, 0x5397, 0x5C3A, 0x649C, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x64DD, 0x5C1A, 0x42D4, 0x31D0, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x4B36, 0x649C, 0x64BC, 0x5C3A, 0x3A72, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5398, 0x6CFD, 0x6CDD, 0x5BF9, 0x214D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x4315, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x6CFD, 0x64DD, 0x53B8, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x214D, 0x214D, 0x214E, 0x296E, 0x31F0, 0x3A52, 0x42B4, 0x4B16, 0x5377, 0x53D9, 0x5C1A, 0x647B, 0x64BD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x64BD, 0x649C, 0x5C5B, 0x4B56, 0x3A52, 0x296E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x4B36, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x647B, 0x42B4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x4B56, 0x6CDD, 0x6CDD, 0x647B, 0x3A32, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31D0, 0x645B, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x647B, 0x3A72, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x212D, 0x212D, 0x212D, 0x212D, 0x214D, 0x214D, 0x214D, 0x294E, 0x298E, 0x31D0, 0x3231, 0x3A73, 0x42D4, 0x4B16, 0x5377, 0x53D8, 0x5C1A, 0x647C, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CBD, 0x649C, 0x5BD9, 0x42D4, 0x31F0, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x31F0, 0x64BC, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x5C3A, 0x31D0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x4B15, 0x6CDD, 0x6CDD, 0x64BC, 0x4B36, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214E, 0x4315, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x5BF9, 0x214E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x214D, 0x214D, 0x214D, 0x296E, 0x29AF, 0x31F0, 0x3A52, 0x3A93, 0x42D4, 0x4B15, 0x4B36, 0x5377, 0x53B8, 0x5BF9, 0x5C1A, 0x645B, 0x649C, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CBD, 0x649C, 0x5C3A, 0x42F5, 0x31D0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x42B3, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x649C, 0x42F5, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x4B15, 0x6CDD, 0x6CDD, 0x6CDD, 0x5C1A, 0x214D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x42F5, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31D0, 0x647C, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x649C, 0x42D4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x214D, 0x214D, 0x214D, 0x214D, 0x214E, 0x296E, 0x29AF, 0x3211, 0x3A52, 0x42B4, 0x4AF5, 0x4B57, 0x53D9, 0x5C1A, 0x649C, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CBD, 0x649C, 0x5BF9, 0x42B4, 0x298E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x42B4, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6C9C, 0x4B36, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x4B16, 0x6CDD, 0x6CDD, 0x6CDD, 0x645B, 0x3211, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29AF, 0x53B8, 0x3211, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x4B36, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x5C1A, 0x296E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x214D, 0x214D, 0x214E, 0x296E, 0x31F0, 0x3A72, 0x42F5, 0x5397, 0x643B, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CBD, 0x645B, 0x4B36, 0x31CF, 0x0001, 0x0001, 0x0001, 0x212D, 0x3211, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x649C, 0x42D4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x4B36, 0x6CDD, 0x6CDD, 0x6CDD, 0x647C, 0x4293, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29AF, 0x5BFA, 0x5357, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x31F0, 0x6C9C, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x649C, 0x42D4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x212D, 0x212D, 0x214D, 0x214D, 0x298F, 0x3A52, 0x4B36, 0x5BFA, 0x6CBD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CBD, 0x647C, 0x5397, 0x3211, 0x0001, 0x0001, 0x298F, 0x5BB8, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x643A, 0x29AF, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5357, 0x6CDD, 0x6CDD, 0x6CDD, 0x6C9C, 0x4B36, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x42D4, 0x42D4, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29AF, 0x645B, 0x643A, 0x298F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5377, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x5C1A, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x214D, 0x296E, 0x3A31, 0x4B16, 0x641A, 0x6CBD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CBD, 0x6C7C, 0x5377, 0x29AF, 0x212D, 0x3211, 0x6C7C, 0x6CDD, 0x6CDD, 0x6CDD, 0x645B, 0x3A72, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5377, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CBD, 0x53B8, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29AF, 0x5BB9, 0x5BB8, 0x29AF, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29AF, 0x6C9C, 0x6C7C, 0x42B4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A32, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x647C, 0x4293, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x214D, 0x29AF, 0x4293, 0x5BB8, 0x6CBD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CBD, 0x645B, 0x4AF5, 0x298E, 0x31D0, 0x4B36, 0x5398, 0x4B16, 0x31D0, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x5BB9, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CBD, 0x5BD9, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x31F0, 0x643B, 0x641A, 0x3A31, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31CF, 0x6CBD, 0x6CBD, 0x5BD9, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x5BF9, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CDD, 0x6CBD, 0x5BD9, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x3A31, 0x298F, 0x29AF, 0x4AF5, 0x641A, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x6CBD, 0x641A, 0x3A52, 0x212D, 0x214D, 0x212D, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29AF, 0x643B, 0x74DD, 0x74DD, 0x74DD, 0x6CDD, 0x5BFA, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A31, 0x6C7C, 0x643B, 0x3A52, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x29AF, 0x643A, 0x74DD, 0x643B, 0x31D0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x42B4, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x645B, 0x3211, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x42B4, 0x5BFA, 0x4B16, 0x212D, 0x0001, 0x212D, 0x296E, 0x3A32, 0x5BD9, 0x74BD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74BD, 0x6C5B, 0x4AD5, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31D0, 0x6C9D, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x63FA, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3A72, 0x6C9C, 0x643B, 0x3A52, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5336, 0x74DD, 0x6C7C, 0x42B4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31D0, 0x6C7C, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x6C9C, 0x4B36, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x4293, 0x643B, 0x6C5B, 0x4AF5, 0x214D, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x294E, 0x3211, 0x5B98, 0x74BD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x6C7C, 0x4B36, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A73, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74BD, 0x5BD9, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x4AD4, 0x74BD, 0x643B, 0x3A52, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x4293, 0x74DD, 0x74BD, 0x5BB9, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x5B98, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x641A, 0x296E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A32, 0x5BF9, 0x6C9D, 0x6C7C, 0x42B4, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x214D, 0x3211, 0x5BB8, 0x74BD, 0x74DD, 0x74DD, 0x74DD, 0x6C7C, 0x4B36, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5357, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x6CBD, 0x5378, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x5377, 0x74BD, 0x643B, 0x3211, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A31, 0x74DD, 0x74DD, 0x643B, 0x29AF, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x4293, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x74DD, 0x6C5B, 0x3A52, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x5336, 0x6C9C, 0x74BD, 0x6C5B, 0x3A72, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x294E, 0x3A52, 0x63FA, 0x74BD, 0x74BD, 0x74BD, 0x6C7C, 0x42D4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x6C5B, 0x74BD, 0x74BD, 0x74BD, 0x74BD, 0x6C9C, 0x4B16, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31CF, 0x641A, 0x74BD, 0x63FA, 0x29AF, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31D0, 0x749D, 0x74BD, 0x6C5C, 0x4273, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31D0, 0x6C7C, 0x74BD, 0x74BD, 0x74BD, 0x74BD, 0x74BD, 0x74BD, 0x6C9C, 0x5336, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x3A52, 0x643B, 0x74BD, 0x74BD, 0x643B, 0x3A11, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x296E, 0x4294, 0x6C5C, 0x74BE, 0x74BD, 0x643B, 0x31F0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x4293, 0x74BD, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x6C5C, 0x3A52, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A52, 0x749D, 0x749D, 0x5BB9, 0x296E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x5BD9, 0x74BE, 0x749D, 0x5357, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x5B98, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BD, 0x63FA, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x5357, 0x749D, 0x74BD, 0x74BD, 0x6C3B, 0x3A11, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x31D0, 0x3A32, 0x4293, 0x4AF5, 0x5336, 0x5357, 0x5B98, 0x5BB9, 0x5BD9, 0x5BB9, 0x5357, 0x3A11, 0x31AF, 0x5357, 0x74BD, 0x749D, 0x5378, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x5BD9, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x643B, 0x298F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5336, 0x74BE, 0x6C9D, 0x5336, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x4AD4, 0x74BE, 0x74BD, 0x63FA, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x4AD5, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x6C3B, 0x31D0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x31D0, 0x63DA, 0x749D, 0x74BE, 0x74BE, 0x6C7C, 0x4AD4, 0x29AF, 0x3A11, 0x4294, 0x5336, 0x5BB9, 0x6C3B, 0x6C7C, 0x747D, 0x749D, 0x749D, 0x749D, 0x749D, 0x6C7C, 0x63DA, 0x5336, 0x4273, 0x31AF, 0x214D, 0x212D, 0x0001, 0x294D, 0x3A32, 0x63FA, 0x641A, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x4273, 0x74BD, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x749D, 0x5B98, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31D0, 0x6C3B, 0x74BD, 0x6C5C, 0x4273, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x31F1, 0x74BD, 0x74BE, 0x6C3B, 0x31D0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A11, 0x74BD, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x6C5C, 0x4293, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x4273, 0x6C5C, 0x74BD, 0x74BE, 0x74BE, 0x74BE, 0x74BD, 0x749D, 0x747C, 0x749D, 0x749D, 0x749D, 0x74BD, 0x74BD, 0x74BE, 0x74BD, 0x747C, 0x5B98, 0x4AD4, 0x3211, 0x296E, 0x214D, 0x212D, 0x212D, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x296E, 0x31D0, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x31D0, 0x6C3B, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x6C5C, 0x3A52, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x4AF5, 0x74BE, 0x74BD, 0x641A, 0x31AF, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x6C5C, 0x74BE, 0x6C5C, 0x3A52, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x6C3B, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x749D, 0x5337, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x4AD5, 0x749D, 0x74BD, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x749D, 0x641A, 0x4AF5, 0x3A11, 0x296E, 0x214D, 0x212D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x63DA, 0x74BD, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BD, 0x63D9, 0x214D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31D0, 0x747C, 0x74BE, 0x749D, 0x5B98, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x63D9, 0x74BE, 0x747C, 0x4AF5, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5B78, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BD, 0x63D9, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5316, 0x749D, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x749D, 0x6C1B, 0x5316, 0x31F1, 0x214D, 0x212D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x31F1, 0x63FA, 0x749D, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x6C5C, 0x3A52, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5357, 0x74BE, 0x74BE, 0x6C5C, 0x4293, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5316, 0x74BE, 0x749D, 0x5B77, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x4AD5, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x74BE, 0x6C1B, 0x296E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x5B78, 0x749D, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBD, 0x747C, 0x5337, 0x39F1, 0x214D, 0x212D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x4AD5, 0x745C, 0x74BD, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x749D, 0x5357, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A32, 0x7CBD, 0x7CBE, 0x74BD, 0x63FA, 0x298E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A32, 0x7CBE, 0x74BD, 0x63FA, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A52, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x6C3B, 0x31F1, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x5B98, 0x749D, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x749D, 0x6C1B, 0x4AB4, 0x298F, 0x212D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x298E, 0x4AD5, 0x6C1B, 0x749D, 0x7CBD, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7C9D, 0x63DA, 0x298F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x6C1B, 0x7CBE, 0x7CBE, 0x747C, 0x52F6, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31D0, 0x749D, 0x7CBE, 0x6C1B, 0x298F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31D0, 0x749D, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x745C, 0x4273, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x5B78, 0x749D, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x749D, 0x63D9, 0x4273, 0x294E, 0x212D, 0x0001, 0x0001, 0x212D, 0x31D0, 0x4AF5, 0x5B78, 0x63D9, 0x6BFA, 0x6BFA, 0x6BFA, 0x6BFA, 0x63FA, 0x63B9, 0x5B78, 0x5357, 0x5316, 0x4AD5, 0x4AB4, 0x4273, 0x3A32, 0x3A11, 0x31D0, 0x31AF, 0x298E, 0x296E, 0x294E, 0x214D, 0x294E, 0x296E, 0x298F, 0x31D0, 0x3A52, 0x4AD5, 0x6399, 0x745C, 0x749D, 0x7C9D, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7C9D, 0x6BFA, 0x31D0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5316, 0x7CBE, 0x7CBE, 0x7CBD, 0x6C1B, 0x298F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x6C3B, 0x7CBE, 0x6C3B, 0x3A11, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x6BFA, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x745C, 0x4AD4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x5B98, 0x7C9D, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7C9D, 0x63D9, 0x3A31, 0x214D, 0x212D, 0x0001, 0x0001, 0x0001, 0x214D, 0x4252, 0x63B9, 0x6C3B, 0x7C9D, 0x7C9D, 0x7C9D, 0x7C9D, 0x7C9D, 0x7C9D, 0x7C9D, 0x7C9D, 0x7C9D, 0x7C9D, 0x749D, 0x749D, 0x749D, 0x747D, 0x747D, 0x747D, 0x747D, 0x747D, 0x747C, 0x747C, 0x747C, 0x747C, 0x747C, 0x747C, 0x747C, 0x747D, 0x747D, 0x749D, 0x7C9D, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7C9D, 0x6C1B, 0x3A11, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A32, 0x7CBD, 0x7CBE, 0x7CBE, 0x747C, 0x52F5, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x6BFA, 0x7CBE, 0x745C, 0x4273, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5B57, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x747D, 0x5316, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5B57, 0x7C9D, 0x7CBE, 0x7CBE, 0x7CBE, 0x7C9D, 0x6C1B, 0x4273, 0x294D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x214D, 0x294E, 0x298F, 0x3A11, 0x4AB4, 0x5B57, 0x6C1B, 0x7C9D, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7C9D, 0x63DA, 0x39F1, 0x3A31, 0x4AD5, 0x5316, 0x52F6, 0x4AB4, 0x31F0, 0x212D, 0x31AF, 0x4AB4, 0x5316, 0x5316, 0x4AF5, 0x3A32, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x6C3B, 0x7CBE, 0x7CBE, 0x7C9D, 0x6BFA, 0x296E, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5337, 0x7CBE, 0x745C, 0x4AD4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294D, 0x4AB4, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7CBE, 0x7C9D, 0x5B78, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294D, 0x4AD4, 0x7C9D, 0x7C9E, 0x7C9E, 0x7C9E, 0x747D, 0x5B57, 0x298F, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x212D, 0x294D, 0x298F, 0x4273, 0x5B57, 0x6C1B, 0x7C9D, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C7D, 0x6398, 0x31AF, 0x3A32, 0x745C, 0x7C7D, 0x7C7D, 0x7C7D, 0x745C, 0x5B37, 0x212D, 0x4252, 0x745C, 0x7C9D, 0x7C9D, 0x7C7D, 0x745C, 0x5B78, 0x296E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x296E, 0x31F0, 0x3A32, 0x4273, 0x4AB4, 0x4AD5, 0x4AD5, 0x4AD5, 0x4AB4, 0x4293, 0x4253, 0x3A32, 0x3A11, 0x31D0, 0x296E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5B78, 0x7C9E, 0x7C9E, 0x7C9E, 0x745C, 0x4293, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A32, 0x7C9D, 0x747D, 0x5316, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A32, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9D, 0x63D9, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x4273, 0x747D, 0x7C9E, 0x7C9E, 0x7C9D, 0x6C1B, 0x4252, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x294E, 0x31D0, 0x4AB4, 0x63B9, 0x7C7D, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x745C, 0x4AD5, 0x294D, 0x298F, 0x6399, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x745C, 0x4AD5, 0x0001, 0x214D, 0x4253, 0x7C9D, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C7D, 0x5B78, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x39F1, 0x4273, 0x52F5, 0x5B58, 0x6BDA, 0x743C, 0x745D, 0x747D, 0x7C7D, 0x7C7D, 0x7C7D, 0x7C7D, 0x7C7D, 0x7C7D, 0x7C7D, 0x7C7D, 0x7C7D, 0x7C7D, 0x747D, 0x747D, 0x745C, 0x743C, 0x6BDA, 0x5B78, 0x52F6, 0x4273, 0x31D0, 0x212D, 0x0001, 0x294D, 0x4AD5, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9D, 0x6399, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x745C, 0x7C7D, 0x5B78, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31D0, 0x7C7D, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x6BFA, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x31D0, 0x743B, 0x7C9E, 0x7C9E, 0x7C7D, 0x6378, 0x31AF, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x214D, 0x31AF, 0x4A94, 0x5B78, 0x745C, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C7D, 0x5B57, 0x31B0, 0x212D, 0x212D, 0x3A32, 0x7C9D, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x743C, 0x3A32, 0x0001, 0x0001, 0x31AF, 0x745C, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x741B, 0x39F0, 0x0001, 0x0001, 0x0001, 0x294E, 0x3A32, 0x5316, 0x6BDA, 0x745C, 0x7C7D, 0x7C7D, 0x7C7D, 0x7C9D, 0x7C9D, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9D, 0x7C9D, 0x7C7D, 0x7C7D, 0x747D, 0x743C, 0x5B58, 0x4A94, 0x52F5, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x741B, 0x31F0, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x6BDA, 0x7C9E, 0x6BDA, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x318F, 0x6BFB, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x6C1B, 0x298F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x6378, 0x7C9E, 0x7C9E, 0x745C, 0x52D5, 0x294D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x296E, 0x39F1, 0x52D5, 0x63B9, 0x745C, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9D, 0x6C1B, 0x52F5, 0x31AF, 0x212D, 0x0001, 0x0001, 0x296E, 0x5B57, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x6C1B, 0x296E, 0x0001, 0x0001, 0x31D0, 0x7C7D, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x743C, 0x4253, 0x0001, 0x296E, 0x5B37, 0x743C, 0x7C7D, 0x7C9D, 0x7C9D, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9D, 0x7C7D, 0x7C7D, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x745C, 0x4AD5, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5B57, 0x7C9E, 0x6BFB, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x6378, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x741B, 0x31F0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x4A93, 0x7C9D, 0x7C9D, 0x6BFB, 0x3A11, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x214D, 0x294E, 0x298F, 0x3A11, 0x4AB4, 0x5316, 0x5B57, 0x5B78, 0x5B57, 0x52D5, 0x4252, 0x318F, 0x294D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x31D0, 0x7C5C, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C7D, 0x6378, 0x0001, 0x0001, 0x212D, 0x3A32, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x743C, 0x3A32, 0x0001, 0x296E, 0x4273, 0x4AB4, 0x52F6, 0x5B16, 0x5B57, 0x6398, 0x63B9, 0x6BDA, 0x6BFB, 0x741B, 0x743C, 0x7C7D, 0x7C7D, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9D, 0x63B9, 0x212D, 0x0001, 0x0001, 0x0001, 0x294D, 0x4AB4, 0x7C9E, 0x741B, 0x31AF, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x52F6, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x743B, 0x3A11, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x6BFA, 0x7C7D, 0x6BB9, 0x31B0, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x4A94, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x745C, 0x4AB4, 0x0001, 0x0001, 0x294E, 0x52D5, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x6BFB, 0x296E, 0x0001, 0x0001, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x214D, 0x214D, 0x214D, 0x214D, 0x294D, 0x294D, 0x294E, 0x294E, 0x296E, 0x318F, 0x39F1, 0x4252, 0x52D5, 0x6378, 0x741B, 0x7C9D, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x741B, 0x31D0, 0x0001, 0x0001, 0x0001, 0x210D, 0x31D0, 0x7C7D, 0x741B, 0x39F0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x4273, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x7C9E, 0x743C, 0x3A11, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x4A93, 0x7C7D, 0x6378, 0x296E, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x6378, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x741B, 0x39F1, 0x0001, 0x0001, 0x298E, 0x6399, 0x849E, 0x849E, 0x849E, 0x849E, 0x7C5D, 0x52F6, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x212D, 0x212D, 0x214D, 0x294E, 0x298F, 0x3A11, 0x4AD5, 0x6378, 0x741B, 0x7C9E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x743C, 0x4A93, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x6399, 0x743C, 0x3A32, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A11, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x743C, 0x4232, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298F, 0x7C3C, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x6BDA, 0x212D, 0x0001, 0x0001, 0x31B0, 0x7C5C, 0x849E, 0x849E, 0x849E, 0x847D, 0x6BBA, 0x296E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x212D, 0x294E, 0x31AF, 0x4273, 0x5B37, 0x741B, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x7C7D, 0x5B37, 0x0001, 0x0001, 0x0001, 0x0001, 0x294D, 0x4AB4, 0x743C, 0x4253, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31B0, 0x7C7D, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x743C, 0x4253, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x3A11, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x7C7D, 0x5B37, 0x0001, 0x0001, 0x212D, 0x4273, 0x849E, 0x849E, 0x849E, 0x849E, 0x743C, 0x39F1, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x296E, 0x39F1, 0x5B57, 0x7C5D, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x6BDA, 0x212D, 0x0001, 0x0001, 0x0001, 0x210D, 0x39F0, 0x743C, 0x4A94, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x743C, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x743C, 0x4273, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x6BBA, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x7C3C, 0x4253, 0x0001, 0x0001, 0x296E, 0x6358, 0x849E, 0x849E, 0x849E, 0x7C5D, 0x4A94, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x214D, 0x31AF, 0x52F5, 0x743C, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x741B, 0x318F, 0x0001, 0x0001, 0x0001, 0x0001, 0x318F, 0x6B99, 0x52D5, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x318F, 0x6BDA, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x7C3C, 0x4A73, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212D, 0x212E, 0x212E, 0x212E, 0x212E, 0x212E, 0x212E, 0x212E, 0x212E, 0x212E, 0x212E, 0x212E, 0x212E, 0x212E, 0x212D, 0x212E, 0x212D, 0x212D, 0x212D, 0x212D, 0x210D, 0x212D, 0x212D, 0x210D, 0x210D, 0x210D, 0x210D, 0x0001, 0x210D, 0x210D, 0x210D, 0x210D, 0x212D, 0x298F, 0x847D, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x741C, 0x296F, 0x210D, 0x210D, 0x4273, 0x7C5D, 0x849E, 0x849E, 0x847E, 0x6357, 0x39EF, 0x296D, 0x294D, 0x296D, 0x296C, 0x294C, 0x294C, 0x296C, 0x294C, 0x294C, 0x296C, 0x296D, 0x296D, 0x296D, 0x296D, 0x296D, 0x296D, 0x296D, 0x294D, 0x212D, 0x212D, 0x210D, 0x210D, 0x210D, 0x210D, 0x212D, 0x210D, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x212D, 0x210D, 0x210D, 0x294E, 0x4232, 0x6B99, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x7C1C, 0x4232, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x52F5, 0x52F6, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x6378, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x7C3C, 0x4A94, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x18EB, 0x190D, 0x2171, 0x21B4, 0x21D6, 0x21D6, 0x21D6, 0x21D6, 0x21D7, 0x21D7, 0x21D7, 0x21D7, 0x21D7, 0x21F8, 0x21F8, 0x21F8, 0x21F8, 0x21F8, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x2219, 0x2219, 0x2219, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x63DD, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x63BC, 0x2239, 0x2A59, 0x4B1B, 0x7C7E, 0x849E, 0x849E, 0x849E, 0x5B9C, 0x2A7B, 0x2A5A, 0x2A59, 0x2A79, 0x2A79, 0x2A79, 0x2A79, 0x2A79, 0x2A79, 0x3279, 0x3279, 0x3279, 0x3279, 0x3279, 0x3279, 0x3279, 0x3279, 0x3279, 0x3279, 0x3279, 0x3279, 0x3279, 0x2A79, 0x2A59, 0x2A39, 0x2219, 0x2219, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x221A, 0x223A, 0x223A, 0x223A, 0x223A, 0x223A, 0x223A, 0x2A5A, 0x2218, 0x6BBA, 0x4A94, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A12, 0x5B16, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x5B37, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x7C3C, 0x4A73, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x18EB, 0x192D, 0x2193, 0x21F8, 0x2219, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x223A, 0x2A3A, 0x2A5A, 0x847E, 0x849E, 0x849E, 0x849E, 0x63DD, 0x3ADB, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A5A, 0x21F7, 0x7C3C, 0x52D5, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x298E, 0x4AB4, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x52F6, 0x849E, 0x849E, 0x849E, 0x849E, 0x849E, 0x7C3C, 0x4A73, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x190C, 0x2192, 0x21F9, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5B7C, 0x847E, 0x847E, 0x847E, 0x847E, 0x847E, 0x847E, 0x42FB, 0x223A, 0x2A5B, 0x7C3D, 0x847E, 0x847E, 0x847E, 0x741D, 0x2A3A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x223A, 0x223A, 0x221A, 0x221A, 0x223A, 0x21D7, 0x845D, 0x5B37, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294D, 0x52B5, 0x847E, 0x847E, 0x847E, 0x847E, 0x847E, 0x7C1C, 0x4253, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x190B, 0x212E, 0x21D6, 0x221A, 0x221A, 0x221A, 0x223A, 0x3AD7, 0x746F, 0x9D8A, 0xAE08, 0xAE47, 0xB666, 0xB686, 0xBEA5, 0xBEC5, 0xBEC5, 0xC6C5, 0xC6C6, 0xCEE5, 0xCEE5, 0xCEE6, 0xCF06, 0xD745, 0xD765, 0xDF64, 0xDF64, 0xD765, 0xD764, 0xDF67, 0xDF68, 0xDF48, 0xDF48, 0xDF48, 0xDF48, 0xDF49, 0xDF4B, 0xDF4C, 0xE74E, 0xE76E, 0xE76E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xE76E, 0xE74F, 0xDF2F, 0xDF2F, 0xDF2F, 0xDF2F, 0xDF2F, 0xDF2F, 0xDF2F, 0xDF2F, 0xDF2F, 0xD70F, 0xCED0, 0xCED0, 0xCED0, 0xCED0, 0xCED0, 0xC670, 0xC671, 0xC671, 0xC671, 0xBE71, 0xA5B5, 0x8C9D, 0x847E, 0x847E, 0x847E, 0x847E, 0x847E, 0x6BDD, 0x2A3A, 0x42FB, 0x7C5E, 0x847E, 0x847E, 0x8CBB, 0xB613, 0xD710, 0xDF2F, 0xDF2F, 0xDF2F, 0xE78E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xEF8E, 0xE76E, 0xDF2F, 0xD70F, 0xCEAE, 0xB62C, 0x84D0, 0x32B8, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x845D, 0x6358, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214D, 0x4A73, 0x847E, 0x847E, 0x847E, 0x847E, 0x847E, 0x7C1C, 0x4232, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x190C, 0x192E, 0x21D7, 0x221A, 0x221A, 0x221A, 0x3AD7, 0x8D2C, 0xCEE4, 0xDF82, 0xE7A2, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE4, 0xF7E5, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E9, 0xF7EA, 0xF7EC, 0xF7EC, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7CE, 0x847E, 0x847E, 0x847E, 0x847E, 0x847E, 0x4B1C, 0x327B, 0x533C, 0x741D, 0x847E, 0x847E, 0x8CBC, 0xD6F1, 0xF7CD, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xF7EB, 0xF7E7, 0xEFC6, 0xE7A6, 0xC68A, 0x4B55, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x7C3D, 0x6358, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x4252, 0x847E, 0x847E, 0x847E, 0x847E, 0x847E, 0x7C1C, 0x4212, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x21D7, 0x221A, 0x221A, 0x2A59, 0x6C31, 0xC6A5, 0xDF82, 0xE7E2, 0xEFE2, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E8, 0xF7EB, 0xF7EC, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xEF8F, 0x847E, 0x847E, 0x847E, 0x7C5E, 0x6BBD, 0x7C3D, 0x847E, 0x845E, 0x847E, 0x845D, 0x7459, 0xF7CD, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7EA, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE6, 0xCEE9, 0x5BB4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x221A, 0x221A, 0x21D8, 0x7C3C, 0x6358, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x3A11, 0x847E, 0x847E, 0x847E, 0x847E, 0x847E, 0x7C1C, 0x3A11, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x21B4, 0x221A, 0x221A, 0x2A79, 0x7C8F, 0xCF03, 0xE7A2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E8, 0xF7E9, 0xF7EB, 0xF7ED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7EC, 0xF7EB, 0xF7E8, 0xF7E8, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E6, 0xE789, 0x9D1A, 0x8CBD, 0x8C9D, 0x8C7D, 0x847E, 0x847E, 0x8C7E, 0x847E, 0x7C3D, 0x4B1C, 0x3298, 0x954F, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E7, 0xF7E6, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xCF06, 0x6412, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21F8, 0x7C1C, 0x5B17, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x39D0, 0x8C7E, 0x8C7E, 0x8C7E, 0x8C7E, 0x8C7E, 0x7C1B, 0x39F1, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x2171, 0x2219, 0x221A, 0x2A59, 0x63F3, 0xCF03, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E8, 0xF7E9, 0xF7EB, 0xF7EC, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7EB, 0xF7EA, 0xF7E9, 0xF7E8, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xA577, 0x94FB, 0x8C7E, 0x8C7E, 0x8C7D, 0x73FD, 0x533C, 0x327B, 0x221A, 0x221A, 0x221A, 0x3298, 0x9D8E, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE4, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xD725, 0x7470, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21F8, 0x73BA, 0x52B5, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x39D0, 0x8C7E, 0x8C7E, 0x8C7E, 0x8C7E, 0x8C7E, 0x7BFB, 0x39D0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x21B5, 0x221A, 0x221A, 0x4317, 0xC687, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xD782, 0xC6E5, 0xBEA7, 0xB687, 0xBEC6, 0xCF24, 0xE7E1, 0xE7E1, 0xE7E1, 0xEFE3, 0xEFE3, 0xEFE2, 0xEFE3, 0xEFE3, 0xEFE2, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFC4, 0xD746, 0xC6C8, 0xBE69, 0xBE89, 0xCF07, 0xDF65, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE4, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7E6, 0xF7E5, 0xEFE5, 0xEFE4, 0xEFE3, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xBE30, 0xB5D3, 0x9D38, 0xC6AC, 0xA5CC, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x32B8, 0xA5CB, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7C3, 0xCF06, 0xCF06, 0xE7C3, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE3, 0xEFE2, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xCF43, 0x7CCE, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x294D, 0x294D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31B0, 0x8C7E, 0x8C7E, 0x8C7E, 0x8C7E, 0x8C7E, 0x7BFB, 0x318F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x2150, 0x21F9, 0x221A, 0x2A79, 0x8D10, 0xDF25, 0xEFE3, 0xEFE2, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xDFC1, 0xBEA6, 0x74AF, 0x4335, 0x2A78, 0x2A79, 0x2A59, 0x2A59, 0x2A79, 0x3278, 0x4316, 0x7CAF, 0xBEA6, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7A3, 0xB649, 0x6C51, 0x42F6, 0x2A79, 0x2A79, 0x2A59, 0x2A59, 0x2A79, 0x3298, 0x4B55, 0x84EE, 0xBEA7, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7E2, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7C3, 0xAE0A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x32B7, 0xA5EA, 0xEFE2, 0xEFE3, 0xEFE4, 0xEFE4, 0xF7E5, 0xF7E5, 0xEFC6, 0xB64B, 0x4B36, 0x2A79, 0x2A79, 0x4B36, 0xADED, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE4, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7E1, 0xD763, 0x852D, 0x2239, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31B0, 0x8C5D, 0x8C7E, 0x8C7E, 0x8C7E, 0x8C7E, 0x7BDB, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x2194, 0x221A, 0x221A, 0x4318, 0xDF48, 0xF7E5, 0xEFE4, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xC6E5, 0x6411, 0x2A79, 0x2239, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2239, 0x3298, 0x6C51, 0xCF06, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7C3, 0xBE88, 0x5BB3, 0x2A59, 0x2239, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2239, 0x32B8, 0x6C51, 0xCEE6, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE4, 0xEFE4, 0xEFE4, 0xEFE4, 0xEFE4, 0xEFC5, 0xAE2B, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AB8, 0xAE0C, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE6, 0xC6AA, 0x3AB8, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xBE8A, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE4, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xDF84, 0x956C, 0x2A59, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31B0, 0x845D, 0x8C7E, 0x8C7E, 0x8C7E, 0x8C7E, 0x73DA, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x21B5, 0x221A, 0x221A, 0x5377, 0xEFE6, 0xF7E5, 0xEFE3, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E2, 0xEFE2, 0xEFE2, 0xDFA4, 0x9D8C, 0x3AD7, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2239, 0x42F6, 0x9DAC, 0xEFE3, 0xEFE3, 0xE7A4, 0x9DAC, 0x32B8, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2239, 0x4316, 0xAE0C, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE5, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE4, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xB62C, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AB8, 0xAE0C, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE7A7, 0x9D6E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A79, 0x7CB1, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE4, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xDFA3, 0xA5CB, 0x3278, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x843D, 0x8C7E, 0x8C7E, 0x8C7E, 0x8C5E, 0x7399, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x21D6, 0x221A, 0x221A, 0x5B97, 0xF7E5, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7E1, 0xE7E1, 0xEFE2, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x8D0F, 0x2A59, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AB9, 0x8D13, 0xE76C, 0x8CF2, 0x2A59, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0x956E, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE4, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE4, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xB62C, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xC6AA, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x8D0F, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x5BD4, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE4, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7A3, 0xAE0A, 0x32B8, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x4A53, 0x6B58, 0x7BFC, 0x7BDB, 0x39D0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x843D, 0x8C7E, 0x8C7E, 0x8C7E, 0x8C5D, 0x6B58, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x21D7, 0x221A, 0x221A, 0x63D6, 0xEFE4, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xF7E5, 0xF7E5, 0xE787, 0x8D0F, 0x2A59, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3279, 0x5377, 0x2A5A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AB8, 0x9D8E, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xB62C, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x42F7, 0xCEE9, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x84F0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x5395, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE3, 0xEFE2, 0xEFE2, 0xE7C3, 0xB649, 0x3AF7, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D8, 0x210D, 0x0001, 0x212D, 0x318F, 0x5AF6, 0x7BFC, 0x843D, 0x8C5D, 0x8C7E, 0x841C, 0x4A73, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x843D, 0x8C7E, 0x8C7E, 0x8C7E, 0x843D, 0x6B79, 0x5AD6, 0x39D0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x21D8, 0x221A, 0x223A, 0x63F5, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xF7E5, 0xEFC6, 0xADEC, 0x2A59, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x42F7, 0xBE6B, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xB62C, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x42F7, 0xCEE9, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE767, 0x84D0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5375, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE4, 0xEFE2, 0xEFE2, 0xE7C3, 0xBE88, 0x4316, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D8, 0x210D, 0x294E, 0x52B5, 0x841C, 0x8C5D, 0x8C7E, 0x8C7E, 0x8C7E, 0x8C7E, 0x841C, 0x5294, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x843D, 0x8C7E, 0x8C7E, 0x8C7E, 0x843D, 0x6B58, 0x7BFB, 0x6B79, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x21F8, 0x221A, 0x223A, 0x6C33, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xF7E5, 0xD709, 0x4B36, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A5A, 0x2A59, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x2A79, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x5BB6, 0xEFA9, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7E7, 0xF7E8, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xEFCA, 0xB62E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x42F8, 0xCEEC, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E8, 0xE769, 0x84D1, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5376, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E7, 0xF7E7, 0xF7E6, 0xF7E5, 0xEFE4, 0xEFE2, 0xEFE2, 0xE7C3, 0xBEA7, 0x4B55, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D8, 0x5AD6, 0x6B58, 0x8C3D, 0x8C5E, 0x8C5E, 0x8C5E, 0x8C5E, 0x8C5E, 0x8C5E, 0x841D, 0x52B5, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x8C3D, 0x8C5E, 0x8C5E, 0x8C5E, 0x841C, 0x6B38, 0x8C5E, 0x83FC, 0x4A33, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212F, 0x21F8, 0x221A, 0x2A39, 0x7452, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xE7A6, 0x9D8E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AB8, 0x8CF1, 0xC6AF, 0xE78E, 0xEF8E, 0xDF2F, 0xA5B2, 0x5377, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C16, 0xBE31, 0xE76F, 0xEF8E, 0xE76E, 0xC690, 0x7C95, 0x3279, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AB9, 0xA5B2, 0xFFED, 0xFFED, 0xFFED, 0xF7EC, 0xF7EB, 0xF7E8, 0xEFE3, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xEFE4, 0xF7EA, 0xF7EB, 0xF7EC, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7CE, 0xB631, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x42F8, 0xD6F0, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xEFAE, 0xB611, 0x7435, 0x7435, 0x7435, 0x7435, 0x7435, 0x7455, 0x9513, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7EB, 0xF7E5, 0xF7E5, 0xEFE4, 0xEFE2, 0xEFE2, 0xE7E2, 0xC6E6, 0x5BB3, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21F8, 0x318F, 0x841C, 0x8C5E, 0x8C5E, 0x8C5E, 0x8C5E, 0x8C5E, 0x8C5E, 0x8C5E, 0x843D, 0x5AD5, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x8C3D, 0x8C5E, 0x8C5E, 0x8C5E, 0x841C, 0x6317, 0x8C5E, 0x8C5D, 0x6B79, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212F, 0x21F9, 0x221A, 0x2A59, 0x7471, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xD728, 0x5375, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A39, 0x5BB4, 0xD709, 0xEFC6, 0xEFE6, 0xF7E9, 0xF7ED, 0xF7ED, 0xF7CE, 0xDF4F, 0x8CF4, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AB9, 0xADD2, 0xEFAE, 0xF7CD, 0xF7ED, 0xFFED, 0xFFED, 0xF7ED, 0xEFAE, 0xC671, 0x4B38, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x5BB6, 0xF7ED, 0xFFED, 0xFFED, 0xFFED, 0xF7EC, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE5, 0xEFE4, 0xEFE3, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xEFE4, 0xEFE4, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E7, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7CE, 0xB631, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x42F8, 0xD6F0, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xF7CD, 0xEFAE, 0xEFAE, 0xEFAE, 0xEFAE, 0xEFAE, 0xEFAE, 0xF7CE, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7EC, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE4, 0xEFE2, 0xEFE2, 0xEFE2, 0xCF06, 0x6412, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21F8, 0x0001, 0x0001, 0x39F1, 0x7379, 0x8C5E, 0x8C5E, 0x8C5E, 0x8C5E, 0x8C5E, 0x8C3D, 0x5AF6, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x8C3D, 0x8C5E, 0x8C5E, 0x8C5E, 0x841C, 0x6317, 0x8C5E, 0x8C5E, 0x83FC, 0x4211, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212F, 0x21F9, 0x221A, 0x2A59, 0x7491, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xBE8A, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x5B95, 0xDF4A, 0xEFE6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7E9, 0xFFED, 0xF7ED, 0xE74F, 0x84B4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3299, 0x9D53, 0xF7CD, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7CD, 0xC670, 0x3AB9, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x42F8, 0xD6F0, 0xFFED, 0xFFED, 0xFFED, 0xF7EC, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xEFC6, 0xE787, 0xE786, 0xE7A5, 0xF7E7, 0xF7E8, 0xF7E6, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7EB, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xF7CD, 0xEF8E, 0xEFAE, 0xF7CE, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7CE, 0xB631, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x42F8, 0xCECE, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EC, 0xF7EC, 0xF7ED, 0xFFED, 0xFFED, 0xF7ED, 0xF7CD, 0xE787, 0xDF67, 0xEFC6, 0xF7E5, 0xEFE4, 0xEFE2, 0xEFE2, 0xEFE2, 0xCF25, 0x7471, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21F8, 0x0001, 0x0001, 0x0001, 0x39D0, 0x8C3D, 0x945E, 0x945E, 0x945E, 0x945E, 0x8C3D, 0x6317, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x8C3D, 0x945E, 0x945E, 0x945E, 0x841C, 0x6B38, 0x945E, 0x945E, 0x8C3D, 0x6317, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212F, 0x21F9, 0x221A, 0x2A59, 0x7491, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7E1, 0xE7E1, 0xE7A3, 0xA5AD, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xB62C, 0xF7E6, 0xF7E5, 0xF7E5, 0xEFE4, 0xEFE3, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE3, 0xEFE5, 0xCEE9, 0x42F7, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x5395, 0xE7A8, 0xF7EA, 0xF7EC, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xEFAE, 0xA592, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x32B9, 0xA5B2, 0xFFED, 0xFFED, 0xFFED, 0xF7EC, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xC6CA, 0x8D10, 0x5BB4, 0x3AD7, 0x3279, 0x2A79, 0x3279, 0x3298, 0x4318, 0x6C16, 0xA5B2, 0xE76E, 0xF7E9, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E7, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xEFAE, 0xB611, 0x7455, 0x4B18, 0x3299, 0x3279, 0x3279, 0x3279, 0x3AB9, 0x5377, 0x84D4, 0xCEB0, 0xF7ED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7EC, 0xF7EB, 0xEFC9, 0xB62D, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x42F7, 0xCEC9, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xCEC9, 0xA5CD, 0xA5CD, 0xA5CD, 0xA5CD, 0xA5CD, 0xA5CD, 0xB64B, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE767, 0xA5AD, 0x6413, 0x4317, 0x3279, 0x3279, 0x2A79, 0x3279, 0x32B8, 0x5375, 0x84D0, 0xB649, 0xE7E2, 0xEFE2, 0xD745, 0x7CB1, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x316F, 0x7379, 0x945E, 0x945E, 0x945E, 0x945E, 0x8C3D, 0x6B38, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x8C3D, 0x945E, 0x945E, 0x945E, 0x83FC, 0x6B58, 0x945E, 0x945E, 0x945E, 0x7BDB, 0x296E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x2219, 0x221A, 0x2A59, 0x7C91, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xDF83, 0x8D0E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4316, 0xE7A5, 0xEFE3, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xDF84, 0x8D0F, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A79, 0x84D0, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7E7, 0xF7EA, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xD70F, 0x4B57, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3279, 0x8CF4, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7EB, 0xF7E5, 0xF7E5, 0xEFC6, 0xBE6B, 0x5BD4, 0x2A79, 0x2A59, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x2A59, 0x3AD8, 0x84D4, 0xDF4D, 0xF7E9, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7EB, 0xF7EB, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7CE, 0xB611, 0x4B57, 0x2A59, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A3A, 0x3279, 0x5BB5, 0xC68C, 0xF7E7, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xB62C, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AF7, 0xCEC9, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x8CF0, 0x2A59, 0x2A59, 0x2A59, 0x2A59, 0x2A59, 0x2A59, 0x5BB5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x954F, 0x3AF7, 0x2A59, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A39, 0x3278, 0x5BB3, 0xB649, 0xEFE2, 0xDF67, 0x8D11, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x212D, 0x39F1, 0x841C, 0x945E, 0x945E, 0x945E, 0x8C3D, 0x6B59, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31B0, 0x8C3D, 0x945E, 0x945E, 0x8C3D, 0x7379, 0x739A, 0x945E, 0x841C, 0x5AD6, 0x62F6, 0x4212, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A59, 0x7C91, 0xEFE2, 0xEFE2, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xD783, 0x84CF, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4B55, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7C3, 0xA5EA, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3298, 0x9D8D, 0xEFE4, 0xEFE4, 0xEFE4, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xF7E5, 0xF7E6, 0xF7E6, 0xF7E6, 0xDF48, 0x5BD4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7C92, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E5, 0xEFE2, 0xDF64, 0x7CAF, 0x2A79, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x4316, 0xA5CD, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xDF48, 0x7472, 0x2A59, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x3AB8, 0x84D0, 0xEFC6, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xB62C, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AF7, 0xCEC9, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE767, 0x84D0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5375, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE6, 0xCEE9, 0x5BB4, 0x2A59, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x3AD7, 0x8D4D, 0xEFC7, 0xE78E, 0x9D73, 0x2A5A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x6B38, 0x945E, 0x945E, 0x945E, 0x943E, 0x7379, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31B0, 0x943E, 0x945E, 0x945E, 0x8C1C, 0x6B17, 0x83DB, 0x945E, 0x83DB, 0x318F, 0x212D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A79, 0x7CB1, 0xEFE4, 0xEFE2, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xDF64, 0x7CB0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5374, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7C3, 0xAE0A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x32B8, 0xA5CB, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xEFE4, 0xF7E5, 0xDF48, 0x63D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C52, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xD748, 0x6C32, 0x2239, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x32B8, 0x84F0, 0xEFC6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xD728, 0x63F4, 0x2239, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3279, 0x7472, 0xE7A7, 0xF7E5, 0xF7E5, 0xEFC6, 0xB62C, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AF7, 0xC6CA, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE767, 0x84D0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5375, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE6, 0xC6CA, 0x4336, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3298, 0x7CB1, 0xF7CD, 0xEF8E, 0xA5B2, 0x2A79, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x5AB5, 0x945E, 0x945E, 0x945E, 0x945E, 0x7B9A, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x39B0, 0x945E, 0x945E, 0x945E, 0x83FC, 0x5A95, 0x8C1D, 0x945E, 0x7B9A, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A79, 0x7CB1, 0xF7E5, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xD764, 0x7491, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x53B4, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7C3, 0xAE0A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x32B7, 0xA5EA, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xD747, 0x63D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C33, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF48, 0x63F3, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3298, 0x84D1, 0xEFE6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF48, 0x63F4, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3279, 0x7CB1, 0xF7E6, 0xF7E5, 0xEFC6, 0xB62C, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AF7, 0xC6CA, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE767, 0x84D0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5375, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xD709, 0x4B56, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3298, 0x9532, 0xF7ED, 0xEFAE, 0xADF2, 0x3299, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x4A53, 0x945E, 0x945E, 0x945E, 0x945E, 0x7BBB, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x39B0, 0x945E, 0x945E, 0x945E, 0x83DB, 0x4A32, 0x8C3D, 0x8C3D, 0x6B38, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A79, 0x7CB1, 0xF7E6, 0xEFE2, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E1, 0xE7E2, 0xDF66, 0x7472, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2239, 0x5BD3, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7C3, 0xAE0A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AB7, 0xAE0A, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xD745, 0x63F3, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C33, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF67, 0x7C91, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x32B8, 0x956E, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x8D2F, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xAE0C, 0xF7E5, 0xEFC6, 0xB62C, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AF7, 0xC6AA, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE767, 0x84D0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5375, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF67, 0x7472, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x42F7, 0xC690, 0xF7ED, 0xEFAE, 0xB631, 0x3AB9, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x318F, 0x7B9A, 0x945E, 0x945E, 0x945E, 0x83DB, 0x318F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x39D0, 0x945E, 0x945E, 0x945E, 0x7B9A, 0x39D0, 0x945E, 0x8C1D, 0x5AD6, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A79, 0x84B4, 0xF7E9, 0xEFE3, 0xEFE2, 0xEFE3, 0xEFE4, 0xEFE4, 0xEFE3, 0xDF68, 0x6C52, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2239, 0x63F4, 0xF7E5, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7C3, 0xAE0A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xB649, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xD745, 0x63F3, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C33, 0xF7E5, 0xF7E5, 0xEFC6, 0xADED, 0x2A59, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xC6CA, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xCEC9, 0x32B8, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x5BB4, 0xEFE6, 0xEFC6, 0xB62C, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AF7, 0xC6AA, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE767, 0x84D0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5375, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xBE4B, 0x2A59, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C16, 0xF7EC, 0xF7EB, 0xEFCB, 0xBE70, 0x42F8, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x41F1, 0x943D, 0x945E, 0x945E, 0x83FC, 0x4212, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x39D0, 0x945E, 0x945E, 0x943D, 0x6B38, 0x39D0, 0x945E, 0x8BFC, 0x5274, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A79, 0x84D4, 0xFFED, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE74E, 0x6C34, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2239, 0x63F4, 0xF7E5, 0xF7E5, 0xEFE4, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7C3, 0xAE0A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xB669, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xD745, 0x63F2, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C13, 0xF7E5, 0xF7E5, 0xD709, 0x4316, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AB8, 0x84D0, 0xB64B, 0xCEC9, 0xCEE9, 0xB64B, 0x84B1, 0x3AD8, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6413, 0xEFE6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x8D2F, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x4336, 0x9D6E, 0xCEC9, 0xD728, 0xC6AA, 0x8D0F, 0x3AD7, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AF7, 0xBE8A, 0xEFC6, 0xB62C, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AF7, 0xC6AA, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE767, 0x84D0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5375, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF48, 0x6C33, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x63F4, 0xA5EC, 0xBE88, 0xBEA8, 0xAE0A, 0x7CCF, 0x3AD7, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x42F8, 0xCECC, 0xF7E5, 0xF7E5, 0xEFC8, 0xC6AE, 0x4B57, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x8C1D, 0x945E, 0x945E, 0x8C1D, 0x5A95, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x41F1, 0x945E, 0x945E, 0x8C1D, 0x5AB5, 0x39D0, 0x945E, 0x83FC, 0x4212, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A79, 0x84D4, 0xFFED, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE74F, 0x6C35, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A39, 0x63F3, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE5, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7C3, 0xAE29, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xB668, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xD745, 0x63F2, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C13, 0xF7E5, 0xE7A7, 0x9D8E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x63F4, 0xD709, 0xEFC6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFA6, 0xCEC9, 0x5BD4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xBE6B, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xD728, 0x5375, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7452, 0xDF68, 0xEFC6, 0xEFE6, 0xF7E6, 0xEFE6, 0xEFC6, 0xCEC9, 0x5BB5, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3298, 0x8D2F, 0xEFC6, 0xB64B, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xC6AA, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xE767, 0x84D0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5375, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xCEC9, 0x3279, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3298, 0x954F, 0xE7A6, 0xEFC4, 0xEFE2, 0xEFE2, 0xE7C3, 0xE7A3, 0xBEA7, 0x4B35, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3298, 0x954E, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xCECC, 0x5377, 0x221A, 0x221A, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x8C1D, 0x945E, 0x945E, 0x943E, 0x7338, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x4212, 0x945E, 0x945E, 0x8BFC, 0x4A32, 0x39D0, 0x945E, 0x83DC, 0x39D0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A79, 0x84D4, 0xFFED, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE74F, 0x6C35, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A39, 0x63F3, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7E7, 0xF7E7, 0xEFE5, 0xF7E5, 0xF7E5, 0xEFC6, 0xB62C, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xB669, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xD745, 0x63F2, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6412, 0xF7E5, 0xD728, 0x5395, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x63F3, 0xE767, 0xEFE6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE6, 0xD709, 0x5BD4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7472, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xCEC9, 0x2A59, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x63F3, 0xE787, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE6, 0xC6AA, 0x32B8, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A39, 0x63F4, 0xEFC7, 0xB64D, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC690, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE76E, 0x84D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5377, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7CE, 0xB631, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7474, 0xEFC9, 0xEFE4, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xE7C3, 0xAE29, 0x2A59, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6413, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE7, 0xCECF, 0x4B57, 0x221A, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x318F, 0x7B9A, 0x943E, 0x943E, 0x943E, 0x83BB, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x4A32, 0x943E, 0x943E, 0x83DB, 0x318F, 0x31AF, 0x8C1D, 0x8BDC, 0x41F1, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A79, 0x84D4, 0xFFED, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE74F, 0x6C35, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A39, 0x6413, 0xF7E5, 0xF7E5, 0xF7E7, 0xF7EA, 0xF7EC, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7EB, 0xF7E7, 0xEFC6, 0xB62C, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xBE6B, 0xF7E5, 0xEFE4, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xD745, 0x63F2, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6412, 0xEFE2, 0xC6A8, 0x2A59, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4336, 0xD708, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE6, 0xC6AA, 0x3AD7, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4B36, 0xE787, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xB64B, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AB8, 0xADED, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF68, 0x7452, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4B38, 0xEF8E, 0xBE51, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC690, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE76E, 0x84D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5377, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xEFAE, 0x9D73, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AF8, 0xCEAF, 0xF7E8, 0xF7E5, 0xF7E5, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xD745, 0x6C31, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5374, 0xEFE4, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7C9, 0xC690, 0x3299, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x39B0, 0x7B9A, 0x943E, 0x943E, 0x8BDC, 0x4212, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x4A53, 0x943E, 0x943E, 0x7B9A, 0x212D, 0x296E, 0x7338, 0x941D, 0x62D6, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A79, 0x84D4, 0xF7EC, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE74F, 0x6C35, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6413, 0xF7E6, 0xF7EC, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7CE, 0xB62F, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xBE6B, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xEFE4, 0xEFE4, 0xEFE5, 0xEFE5, 0xEFE5, 0xEFE5, 0xDF47, 0x6413, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2239, 0x6413, 0xE7A6, 0x9DAD, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3299, 0x9532, 0xF7EC, 0xF7EC, 0xF7EC, 0xF7EC, 0xF7EC, 0xF7EC, 0xF7EC, 0xF7EC, 0xF7EC, 0xF7EC, 0xF7EC, 0xEF8C, 0x9552, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC68F, 0xF7EC, 0xF7EC, 0xF7EC, 0xF7EC, 0xEFCC, 0xADD1, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC6AF, 0xF7EC, 0xF7EC, 0xF7EC, 0xF7EC, 0xF7EC, 0xF7EC, 0xF7EC, 0xFFED, 0xEFAE, 0x9D53, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xD70F, 0xBE51, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC690, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE76E, 0x84D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5376, 0xF7EA, 0xF7E8, 0xF7E7, 0xF7E7, 0xF7E6, 0xE788, 0x8CF0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4B36, 0xEFC6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xDF84, 0x850E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4336, 0xEFC5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E7, 0xE78E, 0x8CF4, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x41F1, 0x8BFD, 0x9C3E, 0x941D, 0x62F7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294D, 0x5A94, 0x9C3E, 0x941D, 0x6B18, 0x0001, 0x212D, 0x41F1, 0x941D, 0x83BB, 0x316F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A79, 0x84B4, 0xF7EA, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE74F, 0x6C36, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C13, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xEFC9, 0xB62E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xBE6D, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E8, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF48, 0x6413, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A39, 0x63F3, 0xE787, 0x84F0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x42F7, 0xD709, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xCEEA, 0x3AD8, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x32B8, 0xA5AE, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xE7A7, 0x9D8E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x42F7, 0xCEE9, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xEFC7, 0xADED, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x42F7, 0xC6CA, 0xBE4B, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xBE8B, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xE767, 0x84D0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5375, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE767, 0x84D1, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5395, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE2, 0xEFE2, 0xEFE2, 0xDF84, 0x850E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4336, 0xEFC5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E8, 0xF7ED, 0xC670, 0x221A, 0x221A, 0x21F8, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294D, 0x5274, 0x9C3E, 0x9C3E, 0x839B, 0x296E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x62D6, 0x9C3E, 0x93FD, 0x5A95, 0x0001, 0x0001, 0x294E, 0x5A95, 0x93FD, 0x62B6, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A79, 0x84B4, 0xF7E8, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE74F, 0x6C36, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C13, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xB64B, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xBE6B, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF48, 0x6413, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A39, 0x63F4, 0xDF67, 0x7472, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4B36, 0xEFC6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xD708, 0x4B56, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3298, 0x8D0F, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE7A7, 0x9D6E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xDF48, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xBE6B, 0x2A79, 0x2A79, 0x2A79, 0x2A79, 0x2A79, 0x2A79, 0x4B36, 0xC6CA, 0xBE6B, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xBE6B, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE767, 0x84D0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5375, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF67, 0x7CB1, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x5BD4, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE2, 0xEFE2, 0xEFE2, 0xDF84, 0x850E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xE7A7, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E9, 0xFFED, 0xD6F0, 0x2A79, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x316E, 0x6B17, 0x9C3E, 0x8BFC, 0x5274, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x6B18, 0x9C3E, 0x8BDC, 0x4A12, 0x0001, 0x0001, 0x0001, 0x316F, 0x7338, 0x83BB, 0x39B0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A79, 0x84B4, 0xF7E8, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE74F, 0x6C36, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C13, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xB64B, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xBE6B, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF48, 0x6C13, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2239, 0x63F4, 0xDF68, 0x7452, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4B56, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xD728, 0x4B56, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3279, 0x8CF0, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE7A7, 0x956E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xDF67, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xE787, 0xE787, 0xE787, 0xE787, 0xE787, 0xE787, 0xE7A7, 0xEFC6, 0xBE6B, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xB64B, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE767, 0x84D0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5375, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF67, 0x7472, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A39, 0x6413, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE5, 0xEFE2, 0xEFE2, 0xEFE2, 0xDF84, 0x850E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xE7A8, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7EB, 0xFFED, 0xD70F, 0x3AB9, 0x221A, 0x21D8, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x39B0, 0x839A, 0x9C3E, 0x7B9A, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x316F, 0x7B59, 0x9C3E, 0x8BBB, 0x318F, 0x0001, 0x0001, 0x0001, 0x0001, 0x31AF, 0x7B59, 0x7338, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A79, 0x7CB4, 0xF7E7, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE74F, 0x6C36, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C33, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xB64B, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xBE6B, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF48, 0x6C13, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2239, 0x63F4, 0xDF67, 0x7472, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4B36, 0xEFE6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xD728, 0x4B55, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A79, 0x84F0, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x954F, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xE787, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE6, 0xBE6B, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AB8, 0xB62C, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE767, 0x84D0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5375, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF67, 0x7452, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C13, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xDF84, 0x850E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xE789, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7EC, 0xFFED, 0xD70F, 0x3AB9, 0x221A, 0x21F8, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x39D0, 0x83BB, 0x93FD, 0x62B6, 0x0001, 0x0001, 0x0001, 0x0001, 0x318F, 0x839B, 0x9C3E, 0x839A, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x39D0, 0x7B59, 0x5254, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A79, 0x7C95, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE74F, 0x6C36, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C33, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFC6, 0xB64B, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xBE6B, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF48, 0x6C13, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2239, 0x63F4, 0xE767, 0x84D0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xDF67, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xD728, 0x5375, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A79, 0x84D1, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x954F, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4316, 0xE787, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE6, 0xBE6B, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AB8, 0xAE0C, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE767, 0x84D0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5375, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF48, 0x6C32, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C13, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E5, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xDF84, 0x850E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xE789, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xFFED, 0xFFED, 0xD6EF, 0x32B9, 0x221A, 0x21D8, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x39B0, 0x7B7A, 0x8BBB, 0x41F1, 0x0001, 0x0001, 0x0001, 0x318F, 0x93DC, 0x941D, 0x7318, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x39B0, 0x6AF7, 0x318F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x221A, 0x221A, 0x2A59, 0x7C95, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE74F, 0x6C35, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C33, 0xF7E6, 0xF7E7, 0xF7E7, 0xF7EA, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7CB, 0xBE4F, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC66F, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xDF4D, 0x6C35, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x63F5, 0xEFAC, 0x9D72, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AB8, 0xADD0, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xDF2D, 0x5377, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A79, 0x84B3, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xEF8C, 0x9552, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xE78C, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xC6AF, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AB8, 0xADF0, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xE76C, 0x84D3, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5377, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xF7EB, 0xDF4D, 0x6C35, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A5A, 0x6C35, 0xFFED, 0xFFED, 0xF7EA, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x8D10, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xE789, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7EB, 0xFFED, 0xFFED, 0xD6EF, 0x3299, 0x221A, 0x21F8, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x318F, 0x62D6, 0x7B59, 0x294E, 0x0001, 0x0001, 0x39B0, 0x9C1E, 0x93FD, 0x5A95, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x292D, 0x292D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x2219, 0x221A, 0x2A59, 0x7C95, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE74F, 0x6C35, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A5A, 0x6C35, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7CD, 0xBE51, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC670, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE74F, 0x6C35, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x63F6, 0xF7ED, 0xC671, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x5BB6, 0xEFAE, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xDF2F, 0x5377, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A79, 0x84B4, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xEF8E, 0x9553, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xEF8E, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xCED0, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x32B9, 0xA592, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE76E, 0x84D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5377, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE74F, 0x6C16, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A5A, 0x6C35, 0xFFED, 0xF7E8, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x8D10, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xE769, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7ED, 0xFFED, 0xFFED, 0xD6EF, 0x3299, 0x221A, 0x21F8, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x41D1, 0x39D0, 0x0001, 0x212D, 0x41F1, 0x9C3E, 0x8BDC, 0x4A12, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212F, 0x21F9, 0x221A, 0x2A59, 0x7C95, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE74F, 0x7435, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A5A, 0x6C36, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7CD, 0xBE71, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC670, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE74F, 0x6C35, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x63F6, 0xFFED, 0xD70F, 0x4318, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A79, 0x84B4, 0xF7CD, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xDF2F, 0x5397, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A79, 0x84B4, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xEF8E, 0x9553, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xEF8E, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xD6F0, 0x2A79, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3279, 0x8CF4, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE76E, 0x84D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5377, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE74F, 0x6C16, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7454, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x8D10, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xDF69, 0xF7E5, 0xF7E5, 0xF7EA, 0xFFED, 0xFFED, 0xFFED, 0xD6EF, 0x3299, 0x221A, 0x21F8, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x0001, 0x212D, 0x4A33, 0x9C3E, 0x8BBB, 0x316E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212F, 0x21F9, 0x221A, 0x2A59, 0x7C95, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE76E, 0x7455, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A5A, 0x6C36, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7CD, 0xBE71, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC670, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE74F, 0x6C35, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x63F6, 0xFFED, 0xEF8E, 0x8D14, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A79, 0x7455, 0xDF2F, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xDF2F, 0x5397, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A79, 0x84B4, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xEF8E, 0x9553, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xEFAE, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xD70F, 0x4318, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x5397, 0xEF8E, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE76E, 0x84D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5377, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xDF4F, 0x63F6, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7452, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x8D10, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xDF69, 0xF7E5, 0xF7E8, 0xF7ED, 0xFFED, 0xFFED, 0xFFED, 0xD6F0, 0x2A59, 0x221A, 0x21F8, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294D, 0x5A74, 0x9C1E, 0x7B59, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212F, 0x21F8, 0x221A, 0x2A59, 0x7C75, 0xF7E7, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE76D, 0x7455, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A5A, 0x6C36, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xC671, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC670, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE74F, 0x7435, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x63F6, 0xFFED, 0xF7ED, 0xCED0, 0x3AB9, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x3AD8, 0x7C95, 0xB631, 0xD6F0, 0xDF4F, 0xEF8E, 0xF7CE, 0xFFED, 0xFFED, 0xFFED, 0xDF2F, 0x5B97, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A79, 0x84B4, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xEF8E, 0x9553, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xEFAE, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE74F, 0x6C35, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C16, 0xDF0F, 0xFFED, 0xFFED, 0xFFED, 0xE76E, 0x84D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x5377, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xDF4F, 0x63F6, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7452, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x8D10, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xDF68, 0xF7E8, 0xF7EC, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xD6F0, 0x2A5A, 0x221A, 0x21F8, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x62B6, 0x93FD, 0x62B6, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212F, 0x21F8, 0x221A, 0x2A5A, 0x7455, 0xF7E9, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF6B, 0x7455, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A5A, 0x6C36, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xC671, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC670, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE74F, 0x7435, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x63F6, 0xFFED, 0xFFED, 0xEF8E, 0x9533, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x2A59, 0x2A79, 0x2A79, 0x3279, 0x3279, 0x42F8, 0x9D73, 0xFFED, 0xDF2F, 0x5BB7, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A79, 0x3AD8, 0x3AD8, 0x3AD8, 0x3AD8, 0x3AD8, 0x3279, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xEFAE, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xEFAE, 0xA5B2, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x3299, 0x4B57, 0x7C75, 0xB631, 0xE76E, 0x84D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3279, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x5BB6, 0x32B8, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7452, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x8D10, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xDF48, 0xF7E9, 0xF7ED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xD6D0, 0x221A, 0x221A, 0x21D8, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x296E, 0x72F7, 0x93BC, 0x4A12, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x21F8, 0x221A, 0x2A3A, 0x6C16, 0xF7EC, 0xF7E7, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF6B, 0x7455, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A5A, 0x6C36, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xC670, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC670, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE76F, 0x7455, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x63F6, 0xFFED, 0xFFED, 0xF7ED, 0xDF2F, 0x63D6, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3299, 0x9533, 0xFFED, 0xDF2F, 0x5BB7, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xEFAE, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xD6EF, 0x4318, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3299, 0x8CF4, 0xE76E, 0x84D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x223A, 0x223A, 0x223A, 0x223A, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7452, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE788, 0x8D12, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xDF68, 0xF7E5, 0xF7EC, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xCED0, 0x221A, 0x221A, 0x21F8, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x316F, 0x7B39, 0x8B9B, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x21D7, 0x221A, 0x223A, 0x63F6, 0xFFED, 0xF7E9, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF69, 0x7455, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A5A, 0x6C36, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xC670, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC670, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE76F, 0x7455, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x63F6, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xCEB0, 0x4318, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3299, 0x9533, 0xFFED, 0xDF2F, 0x5BB6, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xEFAE, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xEFAE, 0x9D53, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A79, 0x84B4, 0xE76E, 0x84D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7452, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE787, 0x8D10, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xDF68, 0xF7E5, 0xF7E8, 0xF7ED, 0xFFED, 0xFFED, 0xF7ED, 0xCEB0, 0x221A, 0x221A, 0x21D8, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x318F, 0x835A, 0x6AF7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x21D6, 0x221A, 0x221A, 0x5BB6, 0xFFED, 0xF7EC, 0xF7EB, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF68, 0x7474, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A5A, 0x6C36, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xC670, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC670, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE76F, 0x7455, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x63F6, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7CD, 0xCEB0, 0x4B57, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3299, 0x9533, 0xFFED, 0xDF2F, 0x5BB6, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xEFAE, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xDF2F, 0x63F6, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A79, 0x84B4, 0xE76E, 0x84D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7452, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x8D10, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xDF67, 0xF7E5, 0xF7E5, 0xF7EC, 0xFFED, 0xFFED, 0xF7ED, 0xC690, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x318F, 0x837A, 0x41F1, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x21B6, 0x221A, 0x221A, 0x5397, 0xFFED, 0xFFED, 0xFFED, 0xF7EA, 0xF7E5, 0xF7E5, 0xF7E5, 0xDF67, 0x7472, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A5A, 0x6C36, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xC690, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD8, 0xC670, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE76F, 0x7455, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x63F6, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7CD, 0xD6F0, 0x6C16, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3299, 0x9533, 0xFFED, 0xDF4F, 0x5BD6, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4318, 0xEFAE, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xD6EF, 0x5BB6, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7C95, 0xE76E, 0x84D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7452, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xE787, 0x8D10, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xDF67, 0xF7E5, 0xF7E5, 0xF7EC, 0xFFED, 0xFFED, 0xF7CD, 0xBE71, 0x221A, 0x221A, 0x21D7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x318F, 0x7B39, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x21B5, 0x221A, 0x221A, 0x4B57, 0xF7CD, 0xFFED, 0xFFED, 0xFFED, 0xF7E7, 0xF7E5, 0xF7E5, 0xE767, 0x84B1, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C33, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xEFE6, 0xBE8B, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xBE6B, 0xF7E6, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E7, 0xDF68, 0x7452, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x63F4, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E7, 0xE768, 0xA5CE, 0x4317, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3298, 0x9530, 0xF7E6, 0xDF49, 0x5BD4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xE7A8, 0xF7E7, 0xF7E6, 0xF7E7, 0xF7E7, 0xF7E6, 0xF7E7, 0xF7E7, 0xF7E6, 0xF7E7, 0xF7E7, 0xF7E6, 0xF7E7, 0xF7E7, 0xF7E6, 0xF7E7, 0xF7E7, 0xF7E6, 0xF7E7, 0xF7E7, 0xF7E6, 0xF7E7, 0xF7E7, 0xDF29, 0x84D1, 0x2A59, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7C95, 0xE76E, 0x84D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7452, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE4, 0xDF85, 0x8D0E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4317, 0xDF67, 0xF7E5, 0xF7E8, 0xFFED, 0xFFED, 0xFFED, 0xEFAE, 0xA5B2, 0x221A, 0x221A, 0x21D7, 0x210D, 0x0001, 0x0001, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x41F1, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x2172, 0x221A, 0x221A, 0x3AB8, 0xC690, 0xFFED, 0xFFED, 0xFFED, 0xF7EA, 0xF7E5, 0xF7E5, 0xE7A6, 0xA5AD, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x6C33, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xEFE6, 0xBE8B, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3AD7, 0xBE6B, 0xF7E6, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E7, 0xDF68, 0x7472, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x63F4, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E6, 0xF7E6, 0xEFC7, 0xDF68, 0xB62C, 0x7C92, 0x4B56, 0x3298, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3298, 0x9530, 0xF7E6, 0xDF48, 0x63D4, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x4316, 0xE7A7, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xE7A6, 0xCEE9, 0x8CF0, 0x4B55, 0x2A59, 0x221A, 0x221A, 0x2A59, 0x7472, 0xE769, 0x84D2, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7452, 0xF7E5, 0xF7E5, 0xEFE4, 0xEFE3, 0xEFE3, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xDF84, 0x850E, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2A59, 0x7472, 0xEFC6, 0xF7E5, 0xF7EA, 0xFFED, 0xFFED, 0xFFED, 0xE74F, 0x6C35, 0x221A, 0x221A, 0x21B6, 0x292D, 0x4A12, 0x7B39, 0x7B39, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212F, 0x21F8, 0x221A, 0x2239, 0x7455, 0xF7ED, 0xFFED, 0xFFED, 0xFFED, 0xF7E8, 0xF7E5, 0xF7E6, 0xEFC6, 0xDF68, 0xD709, 0xCEC9, 0xCEC9, 0xCEC9, 0xCEC9, 0xD728, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E8, 0xF7E9, 0xF7EA, 0xF7EC, 0xF7ED, 0xF7ED, 0xEFAE, 0xCED0, 0xCED0, 0xCED0, 0xCED0, 0xCED0, 0xCED0, 0xD6EF, 0xEFAE, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xE76E, 0xDF2F, 0xDF2F, 0xDF2F, 0xDF2F, 0xDF2F, 0xDF2F, 0xE76E, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xF7CD, 0xF7CE, 0xEFAE, 0xEF8E, 0xE76E, 0xDF2F, 0xD70F, 0xCED0, 0xCED0, 0xD6F0, 0xE76E, 0xFFED, 0xF7CD, 0xDF2F, 0xCED0, 0xCED0, 0xCECE, 0xCECD, 0xCECB, 0xCECA, 0xCECA, 0xCEC9, 0xCEC9, 0xCEC9, 0xCEC9, 0xCEC9, 0xCEC9, 0xCEC9, 0xCEC9, 0xCEC9, 0xCEC9, 0xCEC9, 0xCEC9, 0xCF09, 0xEFE6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xEFE6, 0xEFC6, 0xE7A7, 0xE787, 0xD728, 0xCEC9, 0xCEC9, 0xDF48, 0xEFE6, 0xDF48, 0xCEC9, 0xCEC9, 0xCECA, 0xCECA, 0xCECA, 0xC6C7, 0xC6C7, 0xC6C8, 0xC6C9, 0xCECB, 0xCECB, 0xCECB, 0xCECB, 0xCECA, 0xCECA, 0xC6C8, 0xC6C8, 0xC6C8, 0xC6C7, 0xC6C7, 0xD745, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE2, 0xEFE3, 0xEFE3, 0xEFE5, 0xDF67, 0xCEC9, 0xCEC9, 0xCEC9, 0xCEC9, 0xD709, 0xDF48, 0xEFA6, 0xF7E6, 0xF7E8, 0xFFED, 0xFFED, 0xFFED, 0xF7CD, 0xBE51, 0x2A59, 0x221A, 0x21F9, 0x29B4, 0x4A12, 0x9BFD, 0x9BFD, 0x7B18, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x21B4, 0x221A, 0x221A, 0x3279, 0xADD2, 0xFFED, 0xFFED, 0xFFED, 0xF7EC, 0xF7EB, 0xF7E7, 0xF7E5, 0xF7E6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xF7E8, 0xF7EA, 0xF7EB, 0xF7EC, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xFFED, 0xFFED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7ED, 0xF7EC, 0xF7E9, 0xF7E8, 0xF7E7, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xEFE6, 0xEFE6, 0xEFE6, 0xF7E5, 0xF7E6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE4, 0xEFE4, 0xEFE5, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xEFE6, 0xF7E6, 0xF7E5, 0xF7E8, 0xF7EB, 0xFFED, 0xFFED, 0xFFED, 0xDF2F, 0x5BB7, 0x221A, 0x221A, 0x21D8, 0x3191, 0x6295, 0xA41E, 0x9BDD, 0x6295, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x214F, 0x21F8, 0x221A, 0x221A, 0x3AB8, 0xCEB0, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7EC, 0xF7EB, 0xF7E9, 0xF7E9, 0xF7EA, 0xF7EC, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7EC, 0xF7EB, 0xF7E9, 0xF7E8, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E9, 0xF7EB, 0xF7EC, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7E9, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xE76E, 0x7C95, 0x221A, 0x221A, 0x21F9, 0x2193, 0x296F, 0x6AD6, 0xA41E, 0x93BC, 0x4A12, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x2171, 0x221A, 0x221A, 0x221A, 0x3AB8, 0xC670, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7EC, 0xF7EB, 0xF7EB, 0xF7EA, 0xF7E9, 0xF7E9, 0xF7E9, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E8, 0xF7E9, 0xF7E9, 0xF7EB, 0xF7EC, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7E9, 0xF7E7, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E5, 0xF7E6, 0xF7E8, 0xF7EB, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xE74F, 0x7C75, 0x223A, 0x221A, 0x221A, 0x21B6, 0x212D, 0x294E, 0x6AD7, 0xA41E, 0x939C, 0x3990, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x294E, 0x294D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x2193, 0x221A, 0x221A, 0x221A, 0x2A58, 0x9553, 0xEFAE, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7E9, 0xF7E7, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E6, 0xF7E7, 0xF7E8, 0xF7E9, 0xF7EB, 0xF7EC, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7CE, 0xC690, 0x5357, 0x221A, 0x221A, 0x221A, 0x21D7, 0x212E, 0x0001, 0x294E, 0x72D7, 0xA41E, 0x8B7B, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x5233, 0x41D1, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212E, 0x2193, 0x221A, 0x221A, 0x221A, 0x2219, 0x4B37, 0xA592, 0xCEB0, 0xE74F, 0xEF8E, 0xEFAE, 0xF7ED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xF7ED, 0xEFAE, 0xEF8E, 0xE74F, 0xD6EF, 0xADD2, 0x63B5, 0x2219, 0x221A, 0x221A, 0x221A, 0x21D7, 0x212F, 0x210D, 0x0001, 0x294E, 0x72D7, 0xA3FE, 0x7B19, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x316F, 0x72D7, 0x4A12, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x2171, 0x21F9, 0x221A, 0x221A, 0x221A, 0x2219, 0x2A59, 0x2A79, 0x3279, 0x3279, 0x3279, 0x3299, 0x3AB9, 0x3AD8, 0x42F8, 0x4B38, 0x4B57, 0x5B97, 0x5B97, 0x5B97, 0x5B97, 0x5B97, 0x5B97, 0x5B97, 0x5B97, 0x5B97, 0x5B97, 0x5B97, 0x5B97, 0x5B97, 0x5B97, 0x5B97, 0x5BD6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63F6, 0x63D6, 0x63D6, 0x63B6, 0x63B6, 0x63B6, 0x5BB6, 0x5BB6, 0x63B6, 0x63B6, 0x63B6, 0x63B6, 0x63B6, 0x63B6, 0x63B6, 0x63B6, 0x63B7, 0x5B77, 0x5B77, 0x5B77, 0x5B77, 0x5B77, 0x5B77, 0x5B77, 0x5B77, 0x5B78, 0x5B78, 0x5B78, 0x5B78, 0x5B78, 0x5B78, 0x5B78, 0x5338, 0x5338, 0x4B19, 0x3AD9, 0x3AB9, 0x3299, 0x3299, 0x3279, 0x3A9A, 0x52DB, 0x3A7A, 0x427B, 0x221A, 0x221A, 0x221A, 0x21F9, 0x21B5, 0x212E, 0x0001, 0x0001, 0x0001, 0x316E, 0x72F8, 0x9BDD, 0x6A96, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x398F, 0x8B7B, 0x5A54, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x214F, 0x21B5, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x223A, 0x223A, 0x223A, 0x223A, 0x223A, 0x223A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x3A5B, 0x837D, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xA3FE, 0xABFE, 0xABFE, 0xABFE, 0xA3FE, 0xA3FE, 0xA3FE, 0x8B9D, 0x5ADC, 0x325B, 0x325B, 0x325B, 0x2A3A, 0x221A, 0x21D7, 0x2171, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x316E, 0x7B19, 0x9BBC, 0x5233, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x41D1, 0x9BDD, 0x6A96, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x2150, 0x21B5, 0x21F9, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x221A, 0x2219, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x21F9, 0x2A3A, 0x8B9D, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0x93BD, 0x731C, 0x3A37, 0x2970, 0x292E, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x41D1, 0x9BBD, 0x939C, 0x39B0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x5233, 0xA3DE, 0x72F8, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x210D, 0x212D, 0x212E, 0x212E, 0x214F, 0x214F, 0x214F, 0x2150, 0x2150, 0x2171, 0x2171, 0x2171, 0x2171, 0x2171, 0x2171, 0x2171, 0x2171, 0x2171, 0x2171, 0x2171, 0x2171, 0x2171, 0x2171, 0x2171, 0x2171, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2172, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2192, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2172, 0x2171, 0x2171, 0x2171, 0x2150, 0x2151, 0x2151, 0x2151, 0x2150, 0x2150, 0x2150, 0x2151, 0x2171, 0x2171, 0x2171, 0x2171, 0x2150, 0x2150, 0x2150, 0x2150, 0x2150, 0x2150, 0x2150, 0x2150, 0x2171, 0x7319, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xA3DE, 0x833A, 0x72D8, 0x72D7, 0x6AB6, 0x6295, 0x6295, 0x6A96, 0x6AB6, 0x72B7, 0x8319, 0x9BBD, 0xABFE, 0x937B, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294D, 0x5A74, 0xA3FE, 0x8339, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x294D, 0x4A12, 0x9B9C, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xA3DE, 0xA3DE, 0xA3DE, 0xA3DE, 0xA3DE, 0xA3DE, 0xA3DE, 0xA3DE, 0xABFE, 0xABFE, 0xABFE, 0x8319, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x6275, 0xABFE, 0x937B, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x6275, 0x9BBD, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xA3DD, 0x6A96, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x6A96, 0xABFE, 0x937B, 0x316F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x41B0, 0x8B3A, 0xA3DE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0x9BBC, 0x5213, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x6A96, 0xABFE, 0x9BBC, 0x4A12, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x5233, 0x9BBC, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xA3DD, 0x9BBC, 0x937B, 0x8B5A, 0x8319, 0x7AF8, 0x7AF8, 0x7AF8, 0x7AD7, 0x72B7, 0x72B7, 0x72B7, 0x72B7, 0x72D7, 0x7AF8, 0x8319, 0x8B5A, 0x937B, 0xA3BD, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0x9B9C, 0x398F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x6A95, 0xABFE, 0xA3DD, 0x6A96, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x6A96, 0xA3DD, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xA3BD, 0x935B, 0x8319, 0x72B7, 0x6275, 0x5213, 0x41D1, 0x318F, 0x294E, 0x294E, 0x294E, 0x292D, 0x292D, 0x292D, 0x292D, 0x292D, 0x292D, 0x292D, 0x212D, 0x212D, 0x212D, 0x212D, 0x292D, 0x292D, 0x292D, 0x292D, 0x292D, 0x294E, 0x316F, 0x41D1, 0x5213, 0x6A95, 0x8319, 0x9B9C, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0x8B5A, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294D, 0x6275, 0xABFE, 0xABFE, 0x8B3A, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x316F, 0x8319, 0xABDE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0x9B9C, 0x7AF8, 0x6275, 0x49F2, 0x316F, 0x294E, 0x292D, 0x292D, 0x212D, 0x212D, 0x212D, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x212D, 0x212D, 0x292D, 0x294E, 0x398F, 0x5213, 0x72B7, 0x937B, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xA3DD, 0x72B7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x5A54, 0xABFE, 0xABFE, 0x9B7B, 0x398F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x39B0, 0x8B5A, 0xABDE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABFE, 0xABDE, 0x937B, 0x6A96, 0x41D1, 0x294E, 0x292D, 0x212D, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x212D, 0x294E, 0x398F, 0x5A34, 0x7AF8, 0x9B9C, 0xABFE, 0x9B9C, 0x41D1, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x5212, 0xABFE, 0xABFE, 0xA3BD, 0x5A34, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x41D1, 0x9B7B, 0xABDE, 0xABFE, 0xABFE, 0xABFE, 0xABDE, 0x9B9C, 0x6A96, 0x41D1, 0x294D, 0x212D, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x292D, 0x294E, 0x3990, 0x41B0, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x41B1, 0xABFE, 0xABFE, 0xABDE, 0x7AF8, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x49D1, 0x9B9C, 0xABDE, 0xB3FE, 0xB3FE, 0xABDE, 0x8B3A, 0x5233, 0x294E, 0x212D, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x3990, 0xA3BD, 0xB3FE, 0xABFE, 0x937B, 0x316E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x49D1, 0x9B9C, 0xABFE, 0xB3FE, 0xABBD, 0x7AF8, 0x41D1, 0x292D, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x398F, 0x9B7B, 0xB3FE, 0xB3FE, 0xA39C, 0x5213, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x49D1, 0x9B9C, 0xB3FE, 0xABDE, 0x8319, 0x41D1, 0x292D, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x316F, 0x8319, 0xB3FE, 0xB3FE, 0xABBE, 0x7AD7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x41D1, 0x9B7C, 0xABDE, 0x8B1A, 0x49D2, 0x292D, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x72B6, 0xB3DE, 0xB3DE, 0xB3DE, 0x935B, 0x294D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x3990, 0x935B, 0xA39D, 0x6275, 0x294E, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x5A34, 0xB3DE, 0xB3DE, 0xB3DE, 0xA39C, 0x49F2, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x316F, 0x82F9, 0x8B19, 0x41B0, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x49D1, 0xB3DE, 0xB3DE, 0xB3DE, 0xABBD, 0x72B7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x314E, 0x6A96, 0x6A96, 0x294E, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x5212, 0x316F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x398F, 0xA37C, 0xB3DE, 0xB3DE, 0xB3DE, 0x935B, 0x294D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x316F, 0x49F2, 0x292D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x316F, 0x933B, 0xABBD, 0xA37C, 0x8B3A, 0x7AD7, 0x6255, 0x49F2, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x316E, 0x82F9, 0xB3DE, 0xB3DE, 0xB3DE, 0xA37C, 0x49F2, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x51F2, 0xAB9D, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3BE, 0xABBE, 0xA37C, 0x72B7, 0x41B1, 0x292D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x6A75, 0xB3DE, 0xB3DE, 0xB3DE, 0xABBD, 0x72B7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x49D1, 0x9B5B, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3DE, 0xABBD, 0xA37C, 0x7296, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x49D1, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3DE, 0x935B, 0x294D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x398F, 0x7AD8, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3BE, 0x9B5B, 0x5A33, 0x314E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x398F, 0xA37C, 0xB3DE, 0xB3DE, 0xB3DE, 0xA37C, 0x49F2, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x6254, 0xABBD, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3DE, 0xB3BE, 0xAB9D, 0x9B5B, 0x82D8, 0x5213, 0x292D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x316E, 0x82D8, 0xB3DE, 0xB3DE, 0xB3DE, 0xABBD, 0x7AB7, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x5A34, 0xB3DE, 0xB3DF, 0xB3DF, 0xB3DF, 0xB3DF, 0xB3DF, 0xB3DF, 0xB3DF, 0xB3DF, 0xB3DE, 0xB3BE, 0xABBE, 0x9B5B, 0x6234, 0x292D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x6254, 0xB3DF, 0xB3DF, 0xB3DF, 0xB3DE, 0x9B5B, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x314E, 0x6A76, 0xAB9D, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xB3DE, 0xB3BE, 0x931A, 0x41B1, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x49D1, 0xB3DE, 0xBBDF, 0xBBDF, 0xBBDF, 0xAB7D, 0x5213, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x3990, 0x82D8, 0xB3DE, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xB3BE, 0xA37C, 0x5A34, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x398F, 0xA35C, 0xBBDF, 0xBBDF, 0xBBDF, 0xB3BE, 0x82D8, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x316E, 0x7276, 0xB3BE, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBBE, 0xAB9D, 0x7AB7, 0x292D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x314E, 0x82D8, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDE, 0x9B5B, 0x316F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x6234, 0xB3BE, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDE, 0xB39E, 0x82D8, 0x294E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x6A55, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xAB9D, 0x6234, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x51F3, 0xA35C, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDF, 0xBBDE, 0xB39E, 0x82D8, 0x292D, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x49D1, 0xBBDE, 0xBBDF, 0xBBDF, 0xBBDF, 0xB3BE, 0x8AF9, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x294E, 0x49D1, 0x7AB7, 0xB39D, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBE, 0xB39D, 0x82B8, 0x292D, 0x0001, 0x0001, 0x0001, 0x0001, 0x398F, 0xAB7C, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xA35C, 0x3990, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x292D, 0x3990, 0x7AB7, 0xB3BE, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBE, 0xAB9D, 0x7276, 0x0001, 0x0001, 0x0001, 0x0001, 0x316F, 0x92F9, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xAB9D, 0x6A55, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x294E, 0x51F2, 0xAB7C, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBE, 0xA37C, 0x51F2, 0x0001, 0x0001, 0x0001, 0x294E, 0x7A96, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBE, 0x931A, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x41B0, 0x9B3B, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBE, 0x9B3B, 0x396F, 0x0001, 0x0001, 0x292D, 0x5A14, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xA35C, 0x41B0, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x4190, 0x9B1A, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xB39E, 0x82D8, 0x212D, 0x0001, 0x210D, 0x41B1, 0xBBBE, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xB37D, 0x6A55, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x4190, 0x9B1A, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBE, 0xAB7D, 0x6234, 0x0001, 0x0001, 0x398F, 0xAB5C, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBE, 0x8AF9, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x41B1, 0xA35C, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBE, 0x9B3B, 0x396F, 0x0001, 0x316F, 0x92F9, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xA35C, 0x396F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x49D1, 0xB37D, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xB39E, 0x82B7, 0x0001, 0x314E, 0x82B7, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xBBBF, 0xAB7D, 0x59F3, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x6214, 0xBBBE, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xBBBF, 0xAB5C, 0x51D2, 0x294E, 0x6A55, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xB39E, 0x7A97, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x314E, 0x82B7, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xBB9E, 0x92F9, 0x294E, 0x5A13, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xBBBE, 0x9B1A, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x4190, 0xB37D, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xB37D, 0x6234, 0x51F2, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xAB5C, 0x396F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x6A55, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xBB9E, 0x9B1B, 0x59F3, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xAB5D, 0x51F2, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x3990, 0xA33C, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xBB7E, 0x9B1B, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xB37D, 0x7255, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x6A35, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC39E, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xBB9E, 0x8AD8, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x398F, 0xA33C, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC3BF, 0xC39F, 0xA31B, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x6A35, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xAB3C, 0x314E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x3990, 0xAB5C, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xAB5C, 0x41B1, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x294E, 0x7A76, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xB35D, 0x59F3, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x41B0, 0xBB7D, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xB37D, 0x6A34, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x314E, 0x8AB8, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xBB7D, 0x7A76, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x51D2, 0xC39E, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xBB7E, 0x8297, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x316F, 0x9AD9, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC37E, 0x92B9, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x59F3, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39F, 0xC39E, 0x92D9, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x396F, 0xAB1B, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xC39F, 0x9AFA, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x6A35, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xC39F, 0xA31B, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x4190, 0xBB5D, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xA31B, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x314E, 0x8AB8, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xA31B, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x59F2, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB7F, 0xA2FB, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x396F, 0xAB1C, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB7F, 0xA2FB, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x314E, 0x7A76, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB7E, 0x9ADA, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x51B1, 0xCB7F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xC37E, 0x92B9, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x396F, 0xAB1B, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xCB9F, 0xC37E, 0x8A98, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x314E, 0x8277, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xC35E, 0x8277, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x212D, 0x59D2, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xBB5D, 0x7235, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x4170, 0xBB3D, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xBB3D, 0x59D2, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x314E, 0x92B8, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xB33C, 0x4190, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x6A14, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xAAFB, 0x292D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x49B1, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB7F, 0xCB5E, 0x8A98, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x396F, 0xB31C, 0xD37F, 0xD37F, 0xD37F, 0xD37F, 0xBB3D, 0x6214, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x314E, 0x9298, 0xD37F, 0xD37F, 0xD37F, 0xD37F, 0xB31C, 0x396F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x6A14, 0xD37F, 0xD37F, 0xD37F, 0xCB7E, 0x9AB9, 0x210D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x210D, 0x49B1, 0xD37F, 0xD37F, 0xD37F, 0xC33D, 0x6A14, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x4170, 0xC33D, 0xD37F, 0xD37F, 0xB2FC, 0x314E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x396F, 0xAADA, 0xD37F, 0xCB5E, 0x8A77, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x314E, 0x8A98, 0xD37F, 0xBB3D, 0x51B1, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292E, 0x7235, 0xD37F, 0xA2DA, 0x292D, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x292D, 0x59D2, 0xC33D, 0x6A14, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x4190, 0xAAFB, 0x314E, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x314E, 0x61F3, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001 +}; + +// Saves 98999 bytes +const uint8_t marlin_logo_240x250x16_rle16[21001] = { + 0x7F, 0x00, 0x01, 0x1A, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x21, 0xCF, 0x23, 0x95, 0x22, 0x50, 0x7F, 0x00, 0x01, 0x6A, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x22, 0x71, 0x2C, 0xFA, 0x2C, 0x57, 0x21, 0x4D, 0x7F, 0x00, 0x01, 0x69, 0x00, 0x01, 0x84, 0x21, 0x4D, 0x23, 0x13, 0x2D, 0x5B, 0x2D, 0x1A, 0x22, 0x71, 0x7F, 0x00, 0x01, 0x69, 0x00, 0x01, 0x81, 0x21, 0x6E, 0x2B, 0x74, 0x01, 0x2D, 0x9C, 0x81, 0x2C, 0x78, 0x21, 0x2D, 0x7F, 0x00, 0x01, 0x68, 0x00, 0x01, 0x85, 0x21, 0x6D, 0x2B, 0x54, 0x2D, 0x9C, 0x2D, 0xBC, 0x2D, 0x5B, 0x2B, 0x54, 0x7F, 0x00, 0x01, 0x68, 0x00, 0x01, 0x82, 0x21, 0x4D, 0x2B, 0x13, 0x2D, 0x7C, 0x01, 0x35, 0xBC, 0x81, 0x2D, 0x5B, 0x2B, 0x34, 0x7F, 0x00, 0x01, 0x67, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x22, 0x92, 0x35, 0x5B, 0x02, 0x35, 0xBD, 0x82, 0x35, 0x9C, 0x2C, 0x99, 0x21, 0x2D, 0x7F, 0x00, 0x01, 0x65, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x22, 0x10, 0x2D, 0x1A, 0x35, 0xBC, 0x02, 0x35, 0xBD, 0x81, 0x35, 0x7C, 0x2B, 0xF6, 0x7F, 0x00, 0x01, 0x66, 0x00, 0x01, 0x82, 0x21, 0xAE, 0x2C, 0x58, 0x35, 0x9C, 0x03, 0x35, 0xBD, 0x81, 0x35, 0x5B, 0x2B, 0x75, 0x7F, 0x00, 0x01, 0x65, 0x00, 0x01, 0x82, 0x21, 0x4D, 0x2B, 0x34, 0x35, 0x9C, 0x04, 0x35, 0xBD, 0x81, 0x35, 0x7C, 0x2B, 0xF6, 0x7F, 0x00, 0x01, 0x64, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x22, 0x30, 0x35, 0x3B, 0x05, 0x35, 0xBD, 0x82, 0x35, 0x9C, 0x34, 0xFA, 0x21, 0xEF, 0x7F, 0x00, 0x01, 0x63, 0x00, 0x01, 0x82, 0x21, 0x8E, 0x2C, 0x37, 0x35, 0x9C, 0x06, 0x35, 0x9D, 0x81, 0x35, 0x1A, 0x22, 0x30, + 0x7F, 0x00, 0x01, 0x62, 0x00, 0x01, 0x82, 0x21, 0x4D, 0x2A, 0xB2, 0x35, 0x9C, 0x07, 0x35, 0x9D, 0x81, 0x34, 0xFA, 0x22, 0x30, 0x7F, 0x00, 0x01, 0x62, 0x00, 0x01, 0x81, 0x21, 0xAF, 0x34, 0x99, 0x08, 0x35, 0x9D, 0x81, 0x34, 0xFA, 0x22, 0x10, 0x7F, 0x00, 0x01, 0x61, 0x00, 0x01, 0x82, 0x21, 0x4D, 0x2B, 0x14, 0x35, 0x9C, 0x08, 0x35, 0x9D, 0x81, 0x34, 0xFA, 0x22, 0x30, 0x7F, 0x00, 0x01, 0x61, 0x00, 0x01, 0x81, 0x21, 0xEF, 0x34, 0xFA, 0x09, 0x3D, 0x9D, 0x82, 0x35, 0x7C, 0x34, 0x58, 0x21, 0x8E, 0x7F, 0x00, 0x01, 0x5F, 0x00, 0x01, 0x82, 0x21, 0x6E, 0x2B, 0x75, 0x3D, 0x9C, 0x0A, 0x3D, 0x9D, 0x81, 0x34, 0xFA, 0x22, 0x10, 0x7F, 0x00, 0x01, 0x5F, 0x00, 0x01, 0x81, 0x21, 0xEF, 0x35, 0x1B, 0x0B, 0x3D, 0x9D, 0x81, 0x34, 0xDA, 0x21, 0x8E, 0x7F, 0x00, 0x01, 0x5E, 0x00, 0x01, 0x81, 0x21, 0x6D, 0x2B, 0x34, 0x0C, 0x3D, 0x9D, 0x81, 0x34, 0xDA, 0x21, 0xCF, 0x7F, 0x00, 0x01, 0x5E, 0x00, 0x01, 0x81, 0x21, 0xCF, 0x34, 0xDA, 0x0C, 0x3D, 0x9D, 0x81, 0x3D, 0x3C, 0x2B, 0x75, 0x7F, 0x00, 0x01, 0x5D, 0x00, 0x01, 0x82, 0x21, 0x4D, 0x2A, 0xF3, 0x3D, 0x7C, 0x0C, 0x3D, 0x9D, 0x81, 0x3D, 0x7C, 0x34, 0x18, 0x7F, 0x00, 0x01, 0x5D, 0x00, 0x01, 0x81, 0x21, 0xAE, 0x34, 0x58, 0x0D, 0x3D, 0x9D, 0x82, 0x3D, 0x7C, 0x34, 0x79, 0x21, 0x2D, 0x7F, 0x00, 0x01, 0x5C, 0x00, 0x01, 0x81, 0x2A, 0x10, 0x3D, 0x5C, 0x0E, 0x3D, 0x7D, 0x81, 0x3C, 0xFB, 0x2A, 0x51, 0x7F, 0x00, 0x01, 0x5B, 0x00, 0x01, 0x81, 0x21, 0x4D, 0x2B, 0x34, 0x0F, 0x3D, 0x7D, 0x82, 0x3D, 0x7C, 0x3C, 0x99, + 0x21, 0xCF, 0x7F, 0x00, 0x01, 0x5A, 0x00, 0x01, 0x81, 0x21, 0xAE, 0x34, 0x58, 0x10, 0x3D, 0x7D, 0x81, 0x3D, 0x3B, 0x33, 0x55, 0x7F, 0x00, 0x01, 0x5A, 0x00, 0x01, 0x81, 0x29, 0xF0, 0x3D, 0x5C, 0x10, 0x3D, 0x7D, 0x81, 0x3D, 0x5C, 0x33, 0xF7, 0x7F, 0x00, 0x01, 0x59, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x2A, 0x92, 0x12, 0x45, 0x7D, 0x81, 0x3C, 0xBA, 0x21, 0xAF, 0x7F, 0x00, 0x01, 0x58, 0x00, 0x01, 0x81, 0x21, 0x6E, 0x33, 0x75, 0x12, 0x45, 0x7D, 0x82, 0x45, 0x5C, 0x3C, 0x59, 0x2A, 0x30, 0x7F, 0x00, 0x01, 0x57, 0x00, 0x01, 0x81, 0x21, 0x8E, 0x3C, 0x18, 0x13, 0x45, 0x7D, 0x81, 0x3D, 0x1C, 0x33, 0x55, 0x7F, 0x00, 0x01, 0x57, 0x00, 0x01, 0x81, 0x21, 0xCF, 0x3C, 0xDA, 0x13, 0x45, 0x7D, 0x81, 0x45, 0x3C, 0x33, 0xB6, 0x7F, 0x00, 0x01, 0x57, 0x00, 0x01, 0x81, 0x29, 0xEF, 0x45, 0x5C, 0x13, 0x45, 0x7D, 0x81, 0x45, 0x5C, 0x3C, 0x38, 0x7F, 0x00, 0x01, 0x56, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x2A, 0x31, 0x15, 0x45, 0x7D, 0x81, 0x44, 0xFB, 0x2A, 0xB2, 0x7F, 0x00, 0x01, 0x55, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x2A, 0xB2, 0x15, 0x45, 0x7D, 0x83, 0x45, 0x5D, 0x44, 0xFB, 0x33, 0x75, 0x21, 0x6E, 0x7F, 0x00, 0x01, 0x53, 0x00, 0x01, 0x81, 0x21, 0x4D, 0x32, 0xF3, 0x16, 0x45, 0x7D, 0x82, 0x45, 0x5D, 0x45, 0x1B, 0x33, 0x55, 0x7F, 0x00, 0x01, 0x53, 0x00, 0x01, 0x81, 0x21, 0x6D, 0x33, 0x34, 0x17, 0x45, 0x5D, 0x81, 0x45, 0x3C, 0x3C, 0x18, 0x7F, 0x00, 0x01, 0x53, 0x00, 0x01, 0x81, 0x21, 0x6E, 0x33, 0x75, 0x18, 0x45, 0x5D, 0x81, 0x44, 0xDB, 0x2A, 0xB2, 0x7F, 0x00, + 0x01, 0x52, 0x00, 0x01, 0x81, 0x21, 0x6E, 0x3B, 0x96, 0x19, 0x4D, 0x5D, 0x81, 0x44, 0xFB, 0x33, 0x55, 0x7F, 0x00, 0x01, 0x51, 0x00, 0x01, 0x81, 0x21, 0x8E, 0x3B, 0xB6, 0x1A, 0x4D, 0x5D, 0x81, 0x44, 0x9A, 0x21, 0xAF, 0x16, 0x00, 0x01, 0x83, 0x21, 0x4D, 0x2A, 0x10, 0x32, 0xD3, 0x3B, 0x96, 0x01, 0x3B, 0xF7, 0x83, 0x3B, 0x76, 0x32, 0xD3, 0x2A, 0x10, 0x21, 0x4D, 0x7F, 0x00, 0x01, 0x2F, 0x00, 0x01, 0x81, 0x21, 0x8E, 0x3B, 0xB7, 0x1A, 0x4D, 0x5D, 0x81, 0x44, 0xDB, 0x2A, 0x92, 0x11, 0x00, 0x01, 0x87, 0x21, 0x2D, 0x21, 0x8E, 0x32, 0x92, 0x3B, 0x96, 0x44, 0x79, 0x44, 0xFB, 0x45, 0x1C, 0x45, 0x3C, 0x03, 0x4D, 0x3C, 0x85, 0x45, 0x3C, 0x45, 0x1C, 0x44, 0xDB, 0x3B, 0xD7, 0x2A, 0x72, 0x21, 0x4D, 0x7F, 0x00, 0x01, 0x2C, 0x00, 0x01, 0x81, 0x21, 0x8E, 0x3B, 0xB7, 0x1A, 0x4D, 0x5D, 0x82, 0x4D, 0x3D, 0x3C, 0x38, 0x21, 0x6E, 0x0D, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x29, 0xCF, 0x33, 0x55, 0x44, 0x7A, 0x45, 0x1C, 0x01, 0x4D, 0x3C, 0x0A, 0x4D, 0x5D, 0x84, 0x4D, 0x3D, 0x4D, 0x1C, 0x44, 0xBB, 0x33, 0x35, 0x21, 0x8E, 0x7F, 0x00, 0x01, 0x2A, 0x00, 0x01, 0x81, 0x21, 0x8E, 0x3B, 0xB7, 0x1B, 0x4D, 0x5D, 0x82, 0x4D, 0x3C, 0x44, 0x38, 0x21, 0x6E, 0x0A, 0x00, 0x01, 0x85, 0x21, 0x4D, 0x32, 0x92, 0x3C, 0x18, 0x4C, 0xFC, 0x4D, 0x3C, 0x4D, 0x3D, 0x08, 0x4D, 0x5D, 0x8B, 0x4D, 0x3D, 0x44, 0xDB, 0x44, 0x39, 0x3B, 0xB7, 0x3B, 0x96, 0x3B, 0x76, 0x3B, 0x96, 0x3B, 0xF7, 0x44, 0x59, 0x44, 0x9A, 0x33, 0x14, 0x21, 0x4D, 0x7F, 0x00, 0x01, 0x28, 0x00, 0x01, 0x81, 0x21, + 0x6E, 0x3B, 0x96, 0x1C, 0x4D, 0x5D, 0x81, 0x4C, 0xFB, 0x32, 0xD3, 0x08, 0x00, 0x01, 0x84, 0x21, 0x4D, 0x32, 0xB3, 0x44, 0x79, 0x4D, 0x1C, 0x4D, 0x3D, 0x07, 0x4D, 0x5D, 0x84, 0x4D, 0x3C, 0x44, 0x59, 0x3B, 0x35, 0x2A, 0x51, 0x21, 0x8E, 0x02, 0x21, 0x4D, 0x01, 0x21, 0x2D, 0x02, 0x21, 0x4D, 0x82, 0x29, 0xAF, 0x2A, 0x72, 0x2A, 0x51, 0x7F, 0x00, 0x01, 0x28, 0x00, 0x01, 0x81, 0x21, 0x6E, 0x3B, 0x55, 0x1C, 0x4D, 0x5D, 0x82, 0x4D, 0x3D, 0x44, 0x59, 0x21, 0x8E, 0x05, 0x00, 0x01, 0x84, 0x21, 0x4D, 0x32, 0x92, 0x44, 0x59, 0x4D, 0x1C, 0x4D, 0x3D, 0x06, 0x4D, 0x5D, 0x84, 0x4D, 0x1C, 0x44, 0x18, 0x32, 0xB3, 0x29, 0xAF, 0x21, 0x4D, 0x01, 0x21, 0x2D, 0x09, 0x00, 0x01, 0x01, 0x21, 0x2D, 0x7F, 0x00, 0x01, 0x28, 0x00, 0x01, 0x81, 0x21, 0x4D, 0x33, 0x14, 0x1D, 0x4D, 0x5D, 0x82, 0x4D, 0x1C, 0x3B, 0xF8, 0x21, 0x8E, 0x02, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x29, 0xF0, 0x43, 0xF8, 0x4D, 0x1C, 0x4D, 0x3D, 0x05, 0x4D, 0x5D, 0x89, 0x4D, 0x3D, 0x44, 0xBB, 0x33, 0x35, 0x29, 0xCF, 0x21, 0x4D, 0x21, 0x2D, 0x00, 0x01, 0x21, 0x4D, 0x29, 0xCF, 0x21, 0x2D, 0x7F, 0x00, 0x01, 0x34, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x32, 0x71, 0x4D, 0x3D, 0x1D, 0x4D, 0x5D, 0x87, 0x4D, 0x3D, 0x44, 0x59, 0x29, 0xCF, 0x00, 0x01, 0x21, 0x6E, 0x3B, 0x35, 0x4C, 0xDB, 0x4D, 0x3D, 0x05, 0x4D, 0x5D, 0x84, 0x4D, 0x3D, 0x44, 0x7A, 0x32, 0xD3, 0x21, 0x6E, 0x21, 0x2D, 0x01, 0x00, 0x01, 0x83, 0x21, 0x8E, 0x32, 0xF4, 0x3B, 0xB7, 0x29, 0xF0, 0x7F, 0x00, 0x01, 0x36, 0x00, 0x01, 0x83, 0x21, 0x4D, + 0x2A, 0x31, 0x32, 0xF4, 0x3B, 0x55, 0x03, 0x3B, 0x76, 0x02, 0x3B, 0xB7, 0x85, 0x3B, 0xD7, 0x43, 0xF8, 0x44, 0x39, 0x44, 0x7A, 0x4C, 0xBB, 0x4D, 0x1C, 0x0F, 0x4D, 0x5D, 0x85, 0x4C, 0xFC, 0x3B, 0x35, 0x29, 0x8E, 0x43, 0xF8, 0x4D, 0x1C, 0x4D, 0x3D, 0x04, 0x4D, 0x5D, 0x8C, 0x4D, 0x3D, 0x44, 0x9A, 0x32, 0xB3, 0x21, 0x6E, 0x21, 0x2D, 0x00, 0x01, 0x21, 0x2D, 0x29, 0xF0, 0x3B, 0x76, 0x4C, 0xBB, 0x44, 0x18, 0x29, 0xCF, 0x21, 0x2D, 0x7F, 0x00, 0x01, 0x35, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x29, 0xF0, 0x32, 0xD3, 0x3B, 0x55, 0x03, 0x3B, 0x96, 0x86, 0x3B, 0x76, 0x3B, 0x35, 0x32, 0xF4, 0x32, 0xB3, 0x32, 0x72, 0x2A, 0x10, 0x29, 0x8E, 0x01, 0x21, 0x4D, 0x84, 0x21, 0x6E, 0x29, 0xF0, 0x32, 0xB3, 0x3B, 0x96, 0x4C, 0x9A, 0x0C, 0x4D, 0x3D, 0x81, 0x4C, 0xFC, 0x44, 0x39, 0x06, 0x4D, 0x3D, 0x87, 0x4C, 0xBB, 0x33, 0x14, 0x21, 0x6E, 0x21, 0x2D, 0x00, 0x01, 0x21, 0x4D, 0x32, 0x72, 0x43, 0xF8, 0x01, 0x4C, 0xFC, 0x81, 0x3B, 0xD7, 0x21, 0x8E, 0x7F, 0x00, 0x01, 0x36, 0x00, 0x01, 0x82, 0x21, 0x6E, 0x3B, 0x55, 0x4C, 0xFC, 0x0A, 0x4D, 0x1C, 0x01, 0x4C, 0xFC, 0x8A, 0x4C, 0xBB, 0x44, 0x39, 0x43, 0xD7, 0x3B, 0x35, 0x32, 0x92, 0x29, 0xF0, 0x21, 0x8E, 0x29, 0xF0, 0x3B, 0x14, 0x44, 0x59, 0x4D, 0x3D, 0x09, 0x55, 0x3D, 0x83, 0x4C, 0xFC, 0x43, 0xD7, 0x43, 0xF8, 0x4D, 0x1C, 0x01, 0x55, 0x3D, 0x8C, 0x4C, 0xFC, 0x3B, 0x55, 0x29, 0xAF, 0x21, 0x2D, 0x00, 0x01, 0x21, 0x6E, 0x32, 0xB3, 0x44, 0x59, 0x4D, 0x1C, 0x4D, 0x3D, 0x4C, 0xFC, 0x3B, 0x76, 0x21, 0x4D, 0x7F, 0x00, + 0x01, 0x36, 0x00, 0x01, 0x82, 0x21, 0x8E, 0x3B, 0x96, 0x55, 0x1C, 0x10, 0x55, 0x3D, 0x01, 0x4D, 0x1C, 0x87, 0x4C, 0xFC, 0x4C, 0xBB, 0x43, 0xF8, 0x3B, 0x14, 0x2A, 0x51, 0x2A, 0x10, 0x3B, 0x35, 0x4C, 0x7A, 0x08, 0x55, 0x3D, 0x85, 0x4D, 0x1C, 0x44, 0x39, 0x32, 0x51, 0x32, 0xF4, 0x3B, 0x55, 0x29, 0xF0, 0x01, 0x21, 0x2D, 0x83, 0x29, 0x8E, 0x3B, 0x35, 0x4C, 0xBB, 0x4D, 0x1C, 0x01, 0x55, 0x3D, 0x82, 0x4C, 0xDB, 0x32, 0xD3, 0x21, 0x2D, 0x7F, 0x00, 0x01, 0x36, 0x00, 0x01, 0x82, 0x29, 0x8E, 0x43, 0xD7, 0x55, 0x1C, 0x15, 0x55, 0x3D, 0x88, 0x55, 0x1D, 0x55, 0x1C, 0x4C, 0xFC, 0x4C, 0x9A, 0x3B, 0x96, 0x32, 0x92, 0x2A, 0x31, 0x3B, 0x76, 0x4C, 0xBB, 0x06, 0x55, 0x3D, 0x82, 0x55, 0x1D, 0x4C, 0x7A, 0x32, 0x72, 0x01, 0x21, 0x2D, 0x83, 0x21, 0x4D, 0x3A, 0xF4, 0x4C, 0xBB, 0x55, 0x1C, 0x02, 0x55, 0x3D, 0x82, 0x4C, 0x9B, 0x32, 0x72, 0x21, 0x2D, 0x7F, 0x00, 0x01, 0x36, 0x00, 0x01, 0x82, 0x29, 0xAF, 0x43, 0xF8, 0x55, 0x1D, 0x1A, 0x55, 0x3D, 0x86, 0x55, 0x1D, 0x4C, 0xFC, 0x4C, 0x9B, 0x3B, 0x76, 0x32, 0x51, 0x32, 0x92, 0x44, 0x19, 0x06, 0x55, 0x3D, 0x8B, 0x4C, 0xBB, 0x3A, 0xF4, 0x00, 0x01, 0x21, 0x4D, 0x32, 0x72, 0x44, 0x39, 0x55, 0x1D, 0x55, 0x3D, 0x55, 0x1D, 0x44, 0x59, 0x2A, 0x10, 0x21, 0x2D, 0x7F, 0x00, 0x01, 0x35, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x29, 0xCF, 0x44, 0x39, 0x55, 0x1D, 0x1E, 0x55, 0x3D, 0x86, 0x55, 0x1D, 0x4C, 0xDC, 0x43, 0xF8, 0x32, 0x92, 0x32, 0x31, 0x43, 0xF8, 0x55, 0x1D, 0x04, 0x55, 0x3D, 0x81, 0x4C, 0x9B, 0x32, 0x51, 0x01, + 0x2A, 0x10, 0x81, 0x21, 0x6E, 0x29, 0xCF, 0x01, 0x32, 0xB3, 0x81, 0x21, 0x8E, 0x21, 0x2D, 0x7F, 0x00, 0x01, 0x35, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x2A, 0x10, 0x4C, 0x5A, 0x55, 0x1D, 0x21, 0x55, 0x3D, 0x85, 0x55, 0x1D, 0x54, 0xDC, 0x44, 0x19, 0x32, 0x93, 0x32, 0x31, 0x43, 0xF8, 0x03, 0x55, 0x3D, 0x87, 0x55, 0x1D, 0x4C, 0x39, 0x32, 0x51, 0x43, 0x96, 0x4C, 0x7A, 0x43, 0x97, 0x32, 0x72, 0x21, 0x4D, 0x7F, 0x00, 0x01, 0x36, 0x00, 0x01, 0x83, 0x21, 0x6E, 0x3B, 0x14, 0x54, 0xDC, 0x55, 0x1D, 0x24, 0x55, 0x3D, 0x85, 0x55, 0x1D, 0x54, 0xFC, 0x4C, 0x39, 0x32, 0xB3, 0x32, 0x72, 0x4C, 0x7A, 0x02, 0x55, 0x3D, 0x88, 0x55, 0x1D, 0x44, 0x18, 0x29, 0xCF, 0x32, 0x31, 0x43, 0xF8, 0x54, 0xFC, 0x4C, 0x9A, 0x3B, 0x35, 0x29, 0xD0, 0x7F, 0x00, 0x01, 0x32, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x32, 0x31, 0x4C, 0x39, 0x55, 0x1C, 0x28, 0x55, 0x3D, 0x85, 0x55, 0x1D, 0x54, 0xDC, 0x43, 0xB7, 0x32, 0x51, 0x3B, 0x55, 0x54, 0xFC, 0x01, 0x55, 0x3D, 0x89, 0x55, 0x1C, 0x43, 0xF8, 0x29, 0x8E, 0x21, 0x6E, 0x32, 0xB3, 0x4C, 0xBB, 0x55, 0x1D, 0x54, 0xDB, 0x43, 0xB7, 0x2A, 0x11, 0x7F, 0x00, 0x01, 0x2E, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x29, 0xAF, 0x43, 0x96, 0x54, 0xFC, 0x55, 0x1D, 0x2A, 0x55, 0x3D, 0x01, 0x55, 0x1D, 0x83, 0x4C, 0x9B, 0x3B, 0x35, 0x32, 0x72, 0x4C, 0x7A, 0x01, 0x55, 0x3D, 0x85, 0x54, 0xFC, 0x43, 0xF8, 0x29, 0xAF, 0x21, 0x2D, 0x29, 0xCF, 0x43, 0xB7, 0x01, 0x55, 0x1D, 0x82, 0x54, 0xDC, 0x43, 0xD8, 0x29, 0xD0, 0x7F, 0x00, 0x01, 0x2B, 0x00, 0x01, 0x83, 0x21, + 0x4D, 0x32, 0x92, 0x54, 0x9B, 0x55, 0x1D, 0x0C, 0x55, 0x3D, 0x83, 0x55, 0x1D, 0x54, 0x9B, 0x4C, 0x39, 0x43, 0xD7, 0x06, 0x43, 0x76, 0x80, 0x43, 0x96, 0x01, 0x43, 0xB7, 0x84, 0x43, 0xF8, 0x4C, 0x19, 0x4C, 0x7A, 0x54, 0xBB, 0x55, 0x1D, 0x0E, 0x55, 0x3D, 0x84, 0x55, 0x1D, 0x54, 0xFC, 0x4C, 0x19, 0x32, 0x93, 0x43, 0xD8, 0x01, 0x55, 0x3D, 0x86, 0x55, 0x1D, 0x4C, 0x5A, 0x32, 0x11, 0x00, 0x01, 0x21, 0x6E, 0x3A, 0xF4, 0x54, 0xFC, 0x01, 0x55, 0x1D, 0x82, 0x54, 0xBB, 0x3B, 0x56, 0x21, 0x6E, 0x7F, 0x00, 0x01, 0x28, 0x00, 0x01, 0x82, 0x29, 0x8E, 0x43, 0x76, 0x54, 0xFC, 0x0C, 0x5D, 0x1D, 0x82, 0x54, 0xFC, 0x43, 0x97, 0x29, 0xF0, 0x03, 0x21, 0x4D, 0x05, 0x21, 0x2D, 0x06, 0x21, 0x4D, 0x87, 0x21, 0x6E, 0x29, 0x8E, 0x32, 0x11, 0x3A, 0xB3, 0x3B, 0x35, 0x43, 0xD8, 0x4C, 0x7A, 0x55, 0x1D, 0x09, 0x5D, 0x1D, 0x8C, 0x55, 0x1D, 0x54, 0x9B, 0x3B, 0x35, 0x43, 0x56, 0x55, 0x1D, 0x5D, 0x1D, 0x55, 0x1D, 0x4C, 0x19, 0x21, 0x4D, 0x00, 0x01, 0x21, 0x4D, 0x32, 0x72, 0x54, 0x9B, 0x01, 0x5D, 0x1D, 0x83, 0x54, 0xFC, 0x4C, 0x7A, 0x32, 0x93, 0x21, 0x2D, 0x7F, 0x00, 0x01, 0x24, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x29, 0xCF, 0x4C, 0x19, 0x54, 0xFD, 0x0C, 0x5D, 0x1D, 0x83, 0x54, 0xBB, 0x3A, 0xB3, 0x21, 0x4D, 0x21, 0x2D, 0x12, 0x00, 0x01, 0x02, 0x21, 0x2D, 0x01, 0x21, 0x4D, 0x84, 0x29, 0xAF, 0x32, 0x72, 0x43, 0x56, 0x4C, 0x39, 0x54, 0xFD, 0x07, 0x5D, 0x1D, 0x86, 0x54, 0xDC, 0x4B, 0xF8, 0x3B, 0x15, 0x54, 0xFC, 0x5D, 0x1D, 0x54, 0xDC, 0x3B, 0x15, 0x01, 0x00, 0x01, + 0x82, 0x21, 0x2D, 0x29, 0xF0, 0x4C, 0x19, 0x02, 0x5D, 0x1D, 0x82, 0x54, 0xDC, 0x43, 0x97, 0x29, 0x8E, 0x7F, 0x00, 0x01, 0x22, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x2A, 0x10, 0x4C, 0x7A, 0x0D, 0x5D, 0x1D, 0x82, 0x54, 0x7A, 0x32, 0x31, 0x21, 0x2D, 0x1A, 0x00, 0x01, 0x01, 0x21, 0x2D, 0x84, 0x21, 0x4D, 0x29, 0xAF, 0x3A, 0xD4, 0x4B, 0xF8, 0x54, 0xFC, 0x05, 0x5D, 0x1D, 0x86, 0x54, 0xFD, 0x4C, 0x5A, 0x3B, 0x35, 0x54, 0xBB, 0x5D, 0x1D, 0x54, 0xBB, 0x3A, 0xD3, 0x01, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x29, 0xAF, 0x43, 0xD8, 0x02, 0x5D, 0x1D, 0x82, 0x54, 0xFD, 0x4C, 0x5A, 0x32, 0x72, 0x7F, 0x00, 0x01, 0x20, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x29, 0xF0, 0x54, 0x5A, 0x0C, 0x5D, 0x1D, 0x83, 0x5C, 0xFD, 0x4B, 0xF9, 0x29, 0xCF, 0x21, 0x2D, 0x1F, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x21, 0x4D, 0x29, 0xAF, 0x3A, 0xF4, 0x4C, 0x5A, 0x05, 0x5D, 0x1D, 0x85, 0x54, 0x7B, 0x43, 0x56, 0x54, 0x7A, 0x5D, 0x1D, 0x54, 0x9B, 0x32, 0x93, 0x02, 0x00, 0x01, 0x81, 0x29, 0xAF, 0x43, 0xB7, 0x03, 0x5D, 0x1D, 0x82, 0x54, 0xBB, 0x43, 0x56, 0x21, 0x4D, 0x7F, 0x00, 0x01, 0x1E, 0x00, 0x01, 0x81, 0x29, 0xAF, 0x4C, 0x39, 0x0B, 0x5D, 0x1D, 0x84, 0x5C, 0xFD, 0x54, 0x5A, 0x3A, 0xB3, 0x21, 0x4D, 0x21, 0x2D, 0x23, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x21, 0x6E, 0x32, 0x31, 0x43, 0xB7, 0x5C, 0xFC, 0x03, 0x5D, 0x1D, 0x85, 0x54, 0x9B, 0x43, 0x35, 0x54, 0x7A, 0x5D, 0x1D, 0x54, 0x5A, 0x29, 0xAF, 0x02, 0x00, 0x01, 0x81, 0x29, 0x8E, 0x43, 0x56, 0x03, 0x5D, 0x1D, 0x82, 0x5C, 0xDC, 0x4B, 0xF8, 0x29, + 0xAF, 0x7F, 0x00, 0x01, 0x1C, 0x00, 0x01, 0x81, 0x29, 0x8E, 0x4B, 0xD8, 0x0A, 0x5D, 0x1D, 0x84, 0x54, 0x9B, 0x43, 0x77, 0x32, 0x31, 0x21, 0x4E, 0x21, 0x2D, 0x27, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x21, 0x4D, 0x29, 0xF0, 0x43, 0x97, 0x5C, 0xDC, 0x02, 0x5D, 0x1D, 0x85, 0x54, 0x7B, 0x3B, 0x15, 0x54, 0x7B, 0x5C, 0xFC, 0x43, 0x97, 0x21, 0x2D, 0x02, 0x00, 0x01, 0x81, 0x29, 0x8E, 0x43, 0x56, 0x03, 0x5D, 0x1D, 0x82, 0x5C, 0xFD, 0x4C, 0x39, 0x2A, 0x10, 0x7F, 0x00, 0x01, 0x1A, 0x00, 0x01, 0x82, 0x21, 0x6E, 0x43, 0x76, 0x5C, 0xFD, 0x06, 0x5D, 0x1D, 0x84, 0x5C, 0xFD, 0x54, 0x3A, 0x43, 0x35, 0x32, 0x11, 0x21, 0x6E, 0x01, 0x21, 0x2D, 0x2B, 0x00, 0x01, 0x84, 0x21, 0x0D, 0x21, 0x4D, 0x29, 0xD0, 0x43, 0x77, 0x5C, 0xDC, 0x01, 0x5D, 0x1D, 0x84, 0x54, 0x7A, 0x3B, 0x15, 0x54, 0xBC, 0x54, 0x9B, 0x3A, 0x93, 0x03, 0x00, 0x01, 0x81, 0x29, 0x8E, 0x43, 0x56, 0x04, 0x5D, 0x1D, 0x81, 0x54, 0x7B, 0x32, 0x72, 0x7F, 0x00, 0x01, 0x18, 0x00, 0x01, 0x82, 0x21, 0x6E, 0x43, 0x15, 0x5C, 0xFD, 0x04, 0x5D, 0x1D, 0x84, 0x5C, 0xDC, 0x4B, 0xF8, 0x3A, 0xD4, 0x29, 0xCF, 0x21, 0x4D, 0x01, 0x21, 0x2D, 0x30, 0x00, 0x01, 0x8A, 0x21, 0x0D, 0x21, 0x4D, 0x31, 0xF0, 0x4B, 0xD8, 0x5D, 0x1D, 0x5C, 0xFD, 0x54, 0x5A, 0x43, 0x15, 0x5C, 0xDC, 0x54, 0x5A, 0x29, 0xAF, 0x03, 0x00, 0x01, 0x81, 0x29, 0x8E, 0x43, 0x97, 0x04, 0x5D, 0x1D, 0x81, 0x54, 0x9B, 0x3A, 0xB3, 0x7F, 0x00, 0x01, 0x16, 0x00, 0x01, 0x82, 0x21, 0x4D, 0x3A, 0xF4, 0x5C, 0xFD, 0x02, 0x5D, 0x1D, 0x85, 0x5C, 0xFD, 0x54, + 0x39, 0x3A, 0xD4, 0x29, 0x8F, 0x21, 0x4D, 0x21, 0x2D, 0x36, 0x00, 0x01, 0x89, 0x21, 0x0D, 0x21, 0x6E, 0x32, 0x52, 0x54, 0x3A, 0x5C, 0xFD, 0x54, 0x5A, 0x43, 0x56, 0x5C, 0xFC, 0x4B, 0xB7, 0x21, 0x2D, 0x03, 0x00, 0x01, 0x81, 0x29, 0xAF, 0x4B, 0xB7, 0x04, 0x5D, 0x1D, 0x81, 0x54, 0x9B, 0x3A, 0xD4, 0x7F, 0x00, 0x01, 0x14, 0x00, 0x01, 0x82, 0x21, 0x4D, 0x3A, 0xD4, 0x5C, 0xDC, 0x01, 0x5D, 0x1D, 0x84, 0x5C, 0xDC, 0x43, 0x97, 0x31, 0xF0, 0x21, 0x4D, 0x21, 0x2D, 0x3B, 0x00, 0x01, 0x87, 0x21, 0x2D, 0x29, 0x8E, 0x3A, 0xF4, 0x54, 0x7B, 0x4C, 0x19, 0x4B, 0xB7, 0x54, 0x9B, 0x32, 0x72, 0x04, 0x00, 0x01, 0x81, 0x29, 0xAF, 0x4B, 0xD8, 0x04, 0x5D, 0x1D, 0x82, 0x5C, 0x9B, 0x3A, 0xF4, 0x21, 0x0D, 0x7F, 0x00, 0x01, 0x11, 0x00, 0x01, 0x88, 0x21, 0x4D, 0x3A, 0xB3, 0x5C, 0xDC, 0x5D, 0x1D, 0x5C, 0xDC, 0x43, 0x77, 0x29, 0xD0, 0x21, 0x2D, 0x21, 0x0D, 0x3F, 0x00, 0x01, 0x86, 0x21, 0x2D, 0x29, 0xCF, 0x43, 0x35, 0x4B, 0xB7, 0x54, 0x3A, 0x54, 0x19, 0x21, 0x4D, 0x03, 0x00, 0x01, 0x82, 0x21, 0x0D, 0x29, 0xCF, 0x54, 0x19, 0x04, 0x5D, 0x1D, 0x81, 0x5C, 0x9B, 0x3A, 0xD4, 0x7F, 0x00, 0x01, 0x10, 0x00, 0x01, 0x87, 0x21, 0x4D, 0x3A, 0xD4, 0x5C, 0xDC, 0x5C, 0xFD, 0x54, 0x19, 0x32, 0x31, 0x21, 0x2D, 0x21, 0x0D, 0x43, 0x00, 0x01, 0x84, 0x21, 0x4D, 0x29, 0x8E, 0x32, 0x51, 0x54, 0x7B, 0x3A, 0xD4, 0x04, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x32, 0x10, 0x5C, 0x7B, 0x04, 0x65, 0x1D, 0x81, 0x5C, 0x9B, 0x3A, 0x72, 0x7F, 0x00, 0x01, 0x07, 0x00, 0x01, 0x8D, 0x21, 0x2D, 0x29, + 0xCF, 0x32, 0x52, 0x3A, 0xD4, 0x43, 0x56, 0x4B, 0xB7, 0x43, 0x36, 0x29, 0x8E, 0x3A, 0xF4, 0x5C, 0xDC, 0x5C, 0x9B, 0x3A, 0xD4, 0x21, 0x4E, 0x21, 0x2D, 0x47, 0x00, 0x01, 0x83, 0x21, 0x6E, 0x42, 0xF4, 0x54, 0x3A, 0x29, 0x8E, 0x04, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x32, 0x52, 0x5C, 0xDC, 0x03, 0x65, 0x1D, 0x82, 0x64, 0xFD, 0x54, 0x7B, 0x32, 0x31, 0x7F, 0x00, 0x01, 0x03, 0x00, 0x01, 0x83, 0x21, 0x4D, 0x3A, 0x72, 0x4B, 0xD8, 0x5C, 0x9B, 0x01, 0x5C, 0xDC, 0x88, 0x5C, 0x9B, 0x4B, 0xB7, 0x3A, 0x72, 0x29, 0xAF, 0x43, 0x36, 0x5C, 0x9B, 0x43, 0x56, 0x29, 0xAF, 0x21, 0x2D, 0x4A, 0x00, 0x01, 0x82, 0x29, 0xAF, 0x4B, 0xD8, 0x43, 0x36, 0x05, 0x00, 0x01, 0x81, 0x21, 0x4E, 0x3A, 0xD4, 0x05, 0x64, 0xFD, 0x81, 0x54, 0x3A, 0x29, 0xF0, 0x7F, 0x00, 0x01, 0x8F, 0x21, 0x0D, 0x29, 0xAF, 0x43, 0x15, 0x5C, 0x5A, 0x5C, 0xDC, 0x64, 0xFD, 0x5C, 0x9C, 0x4B, 0x76, 0x32, 0x31, 0x29, 0x6E, 0x21, 0x4D, 0x29, 0xD0, 0x4B, 0x77, 0x43, 0x35, 0x29, 0xCF, 0x21, 0x2D, 0x4C, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x32, 0x31, 0x54, 0x39, 0x29, 0xF0, 0x05, 0x00, 0x01, 0x81, 0x29, 0x8E, 0x4B, 0x97, 0x05, 0x64, 0xFD, 0x81, 0x54, 0x19, 0x29, 0x8E, 0x7C, 0x00, 0x01, 0x88, 0x21, 0x2D, 0x31, 0xF0, 0x4B, 0x77, 0x5C, 0x9C, 0x64, 0xDD, 0x64, 0xFD, 0x5C, 0x9C, 0x43, 0x15, 0x29, 0xAF, 0x01, 0x21, 0x2D, 0x84, 0x00, 0x01, 0x21, 0x2D, 0x29, 0xD0, 0x29, 0x8E, 0x21, 0x2D, 0x4F, 0x00, 0x01, 0x83, 0x21, 0x6E, 0x42, 0xF5, 0x4B, 0x97, 0x21, 0x0D, 0x04, 0x00, 0x01, 0x82, 0x21, 0x0D, 0x29, 0xD0, + 0x5C, 0x5B, 0x04, 0x64, 0xFD, 0x82, 0x64, 0xDD, 0x4B, 0x97, 0x21, 0x2D, 0x79, 0x00, 0x01, 0x89, 0x21, 0x4D, 0x32, 0x52, 0x53, 0xD8, 0x64, 0xBC, 0x64, 0xDD, 0x64, 0xFD, 0x64, 0xBC, 0x4B, 0x77, 0x29, 0xAF, 0x21, 0x2D, 0x04, 0x00, 0x01, 0x80, 0x21, 0x2D, 0x52, 0x00, 0x01, 0x82, 0x29, 0xAF, 0x4B, 0xB8, 0x32, 0x31, 0x05, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x3A, 0x72, 0x64, 0xDD, 0x04, 0x64, 0xFD, 0x81, 0x5C, 0x9C, 0x42, 0xD4, 0x76, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x31, 0xF0, 0x43, 0x36, 0x5C, 0x5B, 0x64, 0xDD, 0x02, 0x64, 0xFD, 0x82, 0x5C, 0x7B, 0x3A, 0x72, 0x21, 0x2D, 0x20, 0x00, 0x01, 0x81, 0x21, 0x4D, 0x32, 0x10, 0x37, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x3A, 0x72, 0x4B, 0xB8, 0x06, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x4B, 0x56, 0x05, 0x64, 0xFD, 0x81, 0x5C, 0x7B, 0x32, 0x31, 0x71, 0x00, 0x01, 0x86, 0x21, 0x2D, 0x29, 0xCF, 0x3A, 0xB3, 0x4B, 0x97, 0x5C, 0x5B, 0x64, 0xBC, 0x64, 0xDD, 0x02, 0x64, 0xFD, 0x83, 0x64, 0xDD, 0x53, 0xD8, 0x29, 0xAF, 0x21, 0x2D, 0x21, 0x00, 0x01, 0x82, 0x29, 0x8F, 0x4B, 0x97, 0x3A, 0xB3, 0x37, 0x00, 0x01, 0x82, 0x29, 0x8F, 0x4B, 0x56, 0x32, 0x10, 0x06, 0x00, 0x01, 0x81, 0x29, 0xD0, 0x5C, 0x7B, 0x05, 0x64, 0xFD, 0x81, 0x54, 0x19, 0x29, 0x6E, 0x6A, 0x00, 0x01, 0x87, 0x21, 0x0D, 0x29, 0x6E, 0x31, 0xF0, 0x3A, 0x93, 0x4B, 0x56, 0x53, 0xF9, 0x5C, 0x7B, 0x64, 0xBC, 0x01, 0x64, 0xDD, 0x04, 0x64, 0xFD, 0x82, 0x64, 0x9C, 0x42, 0xF5, 0x21, 0x4D, 0x23, 0x00, 0x01, 0x83, 0x29, 0x6E, 0x4B, 0x56, 0x5C, 0x5A, 0x31, 0xF0, 0x36, + 0x00, 0x01, 0x82, 0x21, 0x2D, 0x32, 0x11, 0x43, 0x35, 0x06, 0x00, 0x01, 0x81, 0x21, 0x4D, 0x3A, 0x93, 0x05, 0x64, 0xFD, 0x81, 0x64, 0xBC, 0x4B, 0x56, 0x64, 0x00, 0x01, 0x86, 0x21, 0x4D, 0x29, 0xAF, 0x32, 0x31, 0x42, 0xD4, 0x4B, 0x56, 0x53, 0xD9, 0x5C, 0x5B, 0x01, 0x64, 0xBC, 0x02, 0x64, 0xDD, 0x06, 0x64, 0xFD, 0x83, 0x64, 0xDD, 0x53, 0xD8, 0x31, 0xF0, 0x21, 0x2D, 0x24, 0x00, 0x01, 0x84, 0x21, 0x4D, 0x42, 0xB4, 0x64, 0xDD, 0x53, 0xD8, 0x21, 0x2D, 0x36, 0x00, 0x01, 0x81, 0x21, 0x4D, 0x32, 0x11, 0x07, 0x00, 0x01, 0x81, 0x29, 0x8F, 0x53, 0xD8, 0x05, 0x64, 0xFD, 0x81, 0x5C, 0x7B, 0x32, 0x52, 0x35, 0x00, 0x01, 0x88, 0x21, 0x6E, 0x3A, 0xB4, 0x42, 0xD4, 0x3A, 0x72, 0x32, 0x11, 0x31, 0xD0, 0x29, 0x8E, 0x21, 0x4D, 0x21, 0x2D, 0x1A, 0x00, 0x01, 0x89, 0x21, 0x4D, 0x29, 0x8E, 0x31, 0xD0, 0x32, 0x31, 0x3A, 0x72, 0x3A, 0xB4, 0x43, 0x36, 0x4B, 0x97, 0x53, 0xF9, 0x5C, 0x7B, 0x02, 0x64, 0xBC, 0x02, 0x64, 0xDD, 0x0A, 0x64, 0xFD, 0x84, 0x64, 0xDD, 0x53, 0xF9, 0x3A, 0x52, 0x21, 0x4D, 0x21, 0x0D, 0x25, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x32, 0x11, 0x64, 0xFD, 0x64, 0x9C, 0x3A, 0x93, 0x37, 0x00, 0x01, 0x80, 0x21, 0x2D, 0x07, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x32, 0x11, 0x64, 0xBC, 0x04, 0x64, 0xFD, 0x82, 0x64, 0xDD, 0x54, 0x19, 0x29, 0x6E, 0x34, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x31, 0xF0, 0x53, 0xD8, 0x03, 0x64, 0xBC, 0x02, 0x64, 0x9C, 0x84, 0x5C, 0x5B, 0x5C, 0x3A, 0x5C, 0x1A, 0x53, 0xF9, 0x53, 0xD9, 0x01, 0x53, 0xB8, 0x80, 0x53, 0x97, 0x01, 0x4B, + 0x77, 0x08, 0x4B, 0x36, 0x87, 0x4B, 0x77, 0x53, 0x97, 0x53, 0xB8, 0x53, 0xF9, 0x5C, 0x1A, 0x5C, 0x3A, 0x64, 0x7C, 0x64, 0x9C, 0x02, 0x64, 0xBC, 0x01, 0x64, 0xBD, 0x02, 0x64, 0xDD, 0x0F, 0x6C, 0xFD, 0x84, 0x64, 0x9C, 0x4B, 0x77, 0x32, 0x31, 0x21, 0x4D, 0x21, 0x2D, 0x28, 0x00, 0x01, 0x84, 0x29, 0xCF, 0x64, 0x9C, 0x64, 0xDD, 0x5C, 0x1A, 0x29, 0x6E, 0x40, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x4B, 0x56, 0x05, 0x6C, 0xFD, 0x81, 0x64, 0xBC, 0x4B, 0x36, 0x35, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x29, 0x6E, 0x32, 0x31, 0x53, 0x97, 0x64, 0x9C, 0x04, 0x6C, 0xFD, 0x05, 0x6C, 0xDD, 0x0D, 0x64, 0xDD, 0x03, 0x6C, 0xDD, 0x16, 0x6C, 0xFD, 0x83, 0x64, 0xBD, 0x53, 0xB8, 0x3A, 0x73, 0x29, 0x8E, 0x01, 0x21, 0x2D, 0x12, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x29, 0x8E, 0x31, 0xD0, 0x21, 0x4D, 0x13, 0x00, 0x01, 0x84, 0x29, 0x8F, 0x5C, 0x1A, 0x6C, 0xFD, 0x64, 0x9C, 0x42, 0xB4, 0x40, 0x00, 0x01, 0x82, 0x21, 0x0D, 0x31, 0xF0, 0x64, 0x9C, 0x05, 0x6C, 0xFD, 0x81, 0x5C, 0x5B, 0x31, 0xF0, 0x36, 0x00, 0x01, 0x87, 0x21, 0x2D, 0x21, 0x4D, 0x29, 0x6E, 0x32, 0x11, 0x42, 0xF5, 0x53, 0x97, 0x5C, 0x3A, 0x64, 0x9C, 0x2E, 0x6C, 0xFD, 0x84, 0x64, 0xDD, 0x5C, 0x1A, 0x42, 0xD4, 0x31, 0xD0, 0x21, 0x2D, 0x12, 0x00, 0x01, 0x85, 0x29, 0x6E, 0x4B, 0x36, 0x64, 0x9C, 0x64, 0xBC, 0x5C, 0x3A, 0x3A, 0x72, 0x12, 0x00, 0x01, 0x85, 0x29, 0x6E, 0x53, 0x98, 0x6C, 0xFD, 0x6C, 0xDD, 0x5B, 0xF9, 0x21, 0x4D, 0x40, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x43, 0x15, 0x05, 0x6C, 0xFD, 0x82, 0x64, 0xDD, 0x53, + 0xB8, 0x21, 0x2D, 0x38, 0x00, 0x01, 0x01, 0x21, 0x2D, 0x01, 0x21, 0x4D, 0x8A, 0x21, 0x4E, 0x29, 0x6E, 0x31, 0xF0, 0x3A, 0x52, 0x42, 0xB4, 0x4B, 0x16, 0x53, 0x77, 0x53, 0xD9, 0x5C, 0x1A, 0x64, 0x7B, 0x64, 0xBD, 0x26, 0x6C, 0xDD, 0x85, 0x64, 0xBD, 0x64, 0x9C, 0x5C, 0x5B, 0x4B, 0x56, 0x3A, 0x52, 0x29, 0x6E, 0x0E, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x4B, 0x36, 0x03, 0x6C, 0xDD, 0x81, 0x64, 0x7B, 0x42, 0xB4, 0x11, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x4B, 0x56, 0x01, 0x6C, 0xDD, 0x81, 0x64, 0x7B, 0x3A, 0x32, 0x41, 0x00, 0x01, 0x81, 0x31, 0xD0, 0x64, 0x5B, 0x05, 0x6C, 0xDD, 0x81, 0x64, 0x7B, 0x3A, 0x72, 0x3E, 0x00, 0x01, 0x80, 0x21, 0x0D, 0x03, 0x21, 0x2D, 0x02, 0x21, 0x4D, 0x8A, 0x29, 0x4E, 0x29, 0x8E, 0x31, 0xD0, 0x32, 0x31, 0x3A, 0x73, 0x42, 0xD4, 0x4B, 0x16, 0x53, 0x77, 0x53, 0xD8, 0x5C, 0x1A, 0x64, 0x7C, 0x20, 0x6C, 0xDD, 0x85, 0x6C, 0xBD, 0x64, 0x9C, 0x5B, 0xD9, 0x42, 0xD4, 0x31, 0xF0, 0x21, 0x2D, 0x09, 0x00, 0x01, 0x82, 0x21, 0x0D, 0x31, 0xF0, 0x64, 0xBC, 0x04, 0x6C, 0xDD, 0x81, 0x5C, 0x3A, 0x31, 0xD0, 0x10, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x4B, 0x15, 0x01, 0x6C, 0xDD, 0x81, 0x64, 0xBC, 0x4B, 0x36, 0x37, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x29, 0x4E, 0x07, 0x00, 0x01, 0x81, 0x21, 0x4E, 0x43, 0x15, 0x06, 0x6C, 0xDD, 0x81, 0x5B, 0xF9, 0x21, 0x4E, 0x47, 0x00, 0x01, 0x80, 0x21, 0x0D, 0x04, 0x21, 0x2D, 0x02, 0x21, 0x4D, 0x8D, 0x29, 0x6E, 0x29, 0xAF, 0x31, 0xF0, 0x3A, 0x52, 0x3A, 0x93, 0x42, 0xD4, 0x4B, 0x15, 0x4B, 0x36, 0x53, 0x77, 0x53, + 0xB8, 0x5B, 0xF9, 0x5C, 0x1A, 0x64, 0x5B, 0x64, 0x9C, 0x15, 0x6C, 0xDD, 0x84, 0x6C, 0xBD, 0x64, 0x9C, 0x5C, 0x3A, 0x42, 0xF5, 0x31, 0xD0, 0x07, 0x00, 0x01, 0x81, 0x21, 0x4D, 0x42, 0xB3, 0x05, 0x6C, 0xDD, 0x81, 0x64, 0x9C, 0x42, 0xF5, 0x10, 0x00, 0x01, 0x81, 0x29, 0x4E, 0x4B, 0x15, 0x02, 0x6C, 0xDD, 0x81, 0x5C, 0x1A, 0x21, 0x4D, 0x36, 0x00, 0x01, 0x81, 0x29, 0x8E, 0x42, 0xF5, 0x08, 0x00, 0x01, 0x81, 0x31, 0xD0, 0x64, 0x7C, 0x05, 0x6C, 0xDD, 0x81, 0x64, 0x9C, 0x42, 0xD4, 0x52, 0x00, 0x01, 0x80, 0x21, 0x0D, 0x05, 0x21, 0x2D, 0x03, 0x21, 0x4D, 0x8A, 0x21, 0x4E, 0x29, 0x6E, 0x29, 0xAF, 0x32, 0x11, 0x3A, 0x52, 0x42, 0xB4, 0x4A, 0xF5, 0x4B, 0x57, 0x53, 0xD9, 0x5C, 0x1A, 0x64, 0x9C, 0x0E, 0x6C, 0xDD, 0x84, 0x6C, 0xBD, 0x64, 0x9C, 0x5B, 0xF9, 0x42, 0xB4, 0x29, 0x8E, 0x04, 0x00, 0x01, 0x81, 0x21, 0x4D, 0x42, 0xB4, 0x05, 0x6C, 0xDD, 0x81, 0x6C, 0x9C, 0x4B, 0x36, 0x10, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x4B, 0x16, 0x02, 0x6C, 0xDD, 0x81, 0x64, 0x5B, 0x32, 0x11, 0x36, 0x00, 0x01, 0x82, 0x29, 0xAF, 0x53, 0xB8, 0x32, 0x11, 0x07, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x4B, 0x36, 0x06, 0x6C, 0xDD, 0x81, 0x5C, 0x1A, 0x29, 0x6E, 0x5F, 0x00, 0x01, 0x04, 0x21, 0x2D, 0x01, 0x21, 0x4D, 0x86, 0x21, 0x4E, 0x29, 0x6E, 0x31, 0xF0, 0x3A, 0x72, 0x42, 0xF5, 0x53, 0x97, 0x64, 0x3B, 0x0B, 0x6C, 0xDD, 0x83, 0x6C, 0xBD, 0x64, 0x5B, 0x4B, 0x36, 0x31, 0xCF, 0x02, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x32, 0x11, 0x05, 0x6C, 0xDD, 0x81, 0x64, 0x9C, 0x42, 0xD4, 0x10, 0x00, + 0x01, 0x81, 0x29, 0x6E, 0x4B, 0x36, 0x02, 0x6C, 0xDD, 0x81, 0x64, 0x7C, 0x42, 0x93, 0x24, 0x00, 0x01, 0x80, 0x21, 0x2D, 0x10, 0x00, 0x01, 0x82, 0x29, 0xAF, 0x5B, 0xFA, 0x53, 0x57, 0x07, 0x00, 0x01, 0x82, 0x21, 0x0D, 0x31, 0xF0, 0x6C, 0x9C, 0x05, 0x6C, 0xDD, 0x81, 0x64, 0x9C, 0x42, 0xD4, 0x68, 0x00, 0x01, 0x80, 0x21, 0x0D, 0x01, 0x21, 0x2D, 0x01, 0x21, 0x4D, 0x84, 0x29, 0x8F, 0x3A, 0x52, 0x4B, 0x36, 0x5B, 0xFA, 0x6C, 0xBD, 0x08, 0x6C, 0xDD, 0x83, 0x6C, 0xBD, 0x64, 0x7C, 0x53, 0x97, 0x32, 0x11, 0x01, 0x00, 0x01, 0x81, 0x29, 0x8F, 0x5B, 0xB8, 0x04, 0x6C, 0xDD, 0x81, 0x64, 0x3A, 0x29, 0xAF, 0x10, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x53, 0x57, 0x02, 0x6C, 0xDD, 0x81, 0x6C, 0x9C, 0x4B, 0x36, 0x23, 0x00, 0x01, 0x80, 0x29, 0x6E, 0x01, 0x42, 0xD4, 0x80, 0x21, 0x2D, 0x0E, 0x00, 0x01, 0x83, 0x29, 0xAF, 0x64, 0x5B, 0x64, 0x3A, 0x29, 0x8F, 0x07, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x53, 0x77, 0x06, 0x6C, 0xDD, 0x81, 0x5C, 0x1A, 0x29, 0x4E, 0x6D, 0x00, 0x01, 0x01, 0x21, 0x2D, 0x85, 0x21, 0x4D, 0x29, 0x6E, 0x3A, 0x31, 0x4B, 0x16, 0x64, 0x1A, 0x6C, 0xBD, 0x06, 0x6C, 0xDD, 0x86, 0x6C, 0xBD, 0x6C, 0x7C, 0x53, 0x77, 0x29, 0xAF, 0x21, 0x2D, 0x32, 0x11, 0x6C, 0x7C, 0x02, 0x6C, 0xDD, 0x81, 0x64, 0x5B, 0x3A, 0x72, 0x11, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x53, 0x77, 0x02, 0x6C, 0xDD, 0x81, 0x6C, 0xBD, 0x53, 0xB8, 0x24, 0x00, 0x01, 0x83, 0x29, 0xAF, 0x5B, 0xB9, 0x5B, 0xB8, 0x29, 0xAF, 0x0D, 0x00, 0x01, 0x83, 0x29, 0xAF, 0x6C, 0x9C, 0x6C, 0x7C, 0x42, 0xB4, + 0x07, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x3A, 0x32, 0x06, 0x6C, 0xDD, 0x81, 0x64, 0x7C, 0x42, 0x93, 0x71, 0x00, 0x01, 0x01, 0x21, 0x2D, 0x84, 0x21, 0x4D, 0x29, 0xAF, 0x42, 0x93, 0x5B, 0xB8, 0x6C, 0xBD, 0x05, 0x6C, 0xDD, 0x89, 0x6C, 0xBD, 0x64, 0x5B, 0x4A, 0xF5, 0x29, 0x8E, 0x31, 0xD0, 0x4B, 0x36, 0x53, 0x98, 0x4B, 0x16, 0x31, 0xD0, 0x21, 0x2D, 0x11, 0x00, 0x01, 0x81, 0x29, 0x8E, 0x5B, 0xB9, 0x02, 0x6C, 0xDD, 0x81, 0x6C, 0xBD, 0x5B, 0xD9, 0x24, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x31, 0xF0, 0x64, 0x3B, 0x64, 0x1A, 0x3A, 0x31, 0x0C, 0x00, 0x01, 0x80, 0x31, 0xCF, 0x01, 0x6C, 0xBD, 0x80, 0x5B, 0xD9, 0x08, 0x00, 0x01, 0x81, 0x29, 0x8F, 0x5B, 0xF9, 0x05, 0x6C, 0xDD, 0x82, 0x6C, 0xBD, 0x5B, 0xD9, 0x21, 0x2D, 0x73, 0x00, 0x01, 0x85, 0x29, 0x4E, 0x3A, 0x31, 0x29, 0x8F, 0x29, 0xAF, 0x4A, 0xF5, 0x64, 0x1A, 0x05, 0x74, 0xDD, 0x86, 0x6C, 0xBD, 0x64, 0x1A, 0x3A, 0x52, 0x21, 0x2D, 0x21, 0x4D, 0x21, 0x2D, 0x21, 0x0D, 0x12, 0x00, 0x01, 0x81, 0x29, 0xAF, 0x64, 0x3B, 0x02, 0x74, 0xDD, 0x81, 0x6C, 0xDD, 0x5B, 0xFA, 0x25, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x3A, 0x31, 0x6C, 0x7C, 0x64, 0x3B, 0x3A, 0x52, 0x0B, 0x00, 0x01, 0x84, 0x29, 0xAF, 0x64, 0x3A, 0x74, 0xDD, 0x64, 0x3B, 0x31, 0xD0, 0x07, 0x00, 0x01, 0x81, 0x21, 0x4D, 0x42, 0xB4, 0x06, 0x74, 0xDD, 0x81, 0x64, 0x5B, 0x32, 0x11, 0x71, 0x00, 0x01, 0x8A, 0x29, 0x6E, 0x42, 0xB4, 0x5B, 0xFA, 0x4B, 0x16, 0x21, 0x2D, 0x00, 0x01, 0x21, 0x2D, 0x29, 0x6E, 0x3A, 0x32, 0x5B, 0xD9, 0x74, 0xBD, 0x03, 0x74, 0xDD, + 0x83, 0x74, 0xBD, 0x6C, 0x5B, 0x4A, 0xD5, 0x21, 0x2D, 0x14, 0x00, 0x01, 0x81, 0x31, 0xD0, 0x6C, 0x9D, 0x03, 0x74, 0xDD, 0x80, 0x63, 0xFA, 0x26, 0x00, 0x01, 0x84, 0x21, 0x4D, 0x3A, 0x72, 0x6C, 0x9C, 0x64, 0x3B, 0x3A, 0x52, 0x0A, 0x00, 0x01, 0x84, 0x29, 0x6E, 0x53, 0x36, 0x74, 0xDD, 0x6C, 0x7C, 0x42, 0xB4, 0x08, 0x00, 0x01, 0x81, 0x31, 0xD0, 0x6C, 0x7C, 0x05, 0x74, 0xDD, 0x81, 0x6C, 0x9C, 0x4B, 0x36, 0x6F, 0x00, 0x01, 0x85, 0x21, 0x4D, 0x42, 0x93, 0x64, 0x3B, 0x6C, 0x5B, 0x4A, 0xF5, 0x21, 0x4D, 0x03, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x29, 0x4E, 0x32, 0x11, 0x5B, 0x98, 0x74, 0xBD, 0x03, 0x74, 0xDD, 0x82, 0x6C, 0x7C, 0x4B, 0x36, 0x21, 0x2D, 0x12, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x3A, 0x73, 0x03, 0x74, 0xDD, 0x81, 0x74, 0xBD, 0x5B, 0xD9, 0x27, 0x00, 0x01, 0x84, 0x29, 0x4E, 0x4A, 0xD4, 0x74, 0xBD, 0x64, 0x3B, 0x3A, 0x52, 0x09, 0x00, 0x01, 0x84, 0x21, 0x4D, 0x42, 0x93, 0x74, 0xDD, 0x74, 0xBD, 0x5B, 0xB9, 0x08, 0x00, 0x01, 0x81, 0x29, 0x8E, 0x5B, 0x98, 0x06, 0x74, 0xDD, 0x81, 0x64, 0x1A, 0x29, 0x6E, 0x6C, 0x00, 0x01, 0x86, 0x21, 0x2D, 0x3A, 0x32, 0x5B, 0xF9, 0x6C, 0x9D, 0x6C, 0x7C, 0x42, 0xB4, 0x21, 0x2D, 0x06, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x21, 0x4D, 0x32, 0x11, 0x5B, 0xB8, 0x74, 0xBD, 0x02, 0x74, 0xDD, 0x82, 0x6C, 0x7C, 0x4B, 0x36, 0x21, 0x2D, 0x11, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x53, 0x57, 0x03, 0x74, 0xDD, 0x81, 0x6C, 0xBD, 0x53, 0x78, 0x28, 0x00, 0x01, 0x84, 0x29, 0x8E, 0x53, 0x77, 0x74, 0xBD, 0x64, 0x3B, 0x32, 0x11, 0x08, + 0x00, 0x01, 0x81, 0x21, 0x2D, 0x3A, 0x31, 0x01, 0x74, 0xDD, 0x81, 0x64, 0x3B, 0x29, 0xAF, 0x07, 0x00, 0x01, 0x81, 0x21, 0x4D, 0x42, 0x93, 0x06, 0x74, 0xDD, 0x81, 0x6C, 0x5B, 0x3A, 0x52, 0x6B, 0x00, 0x01, 0x86, 0x29, 0x8E, 0x53, 0x36, 0x6C, 0x9C, 0x74, 0xBD, 0x6C, 0x5B, 0x3A, 0x72, 0x21, 0x2D, 0x09, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x29, 0x4E, 0x3A, 0x52, 0x63, 0xFA, 0x02, 0x74, 0xBD, 0x81, 0x6C, 0x7C, 0x42, 0xD4, 0x11, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x6C, 0x5B, 0x03, 0x74, 0xBD, 0x81, 0x6C, 0x9C, 0x4B, 0x16, 0x29, 0x00, 0x01, 0x84, 0x31, 0xCF, 0x64, 0x1A, 0x74, 0xBD, 0x63, 0xFA, 0x29, 0xAF, 0x08, 0x00, 0x01, 0x84, 0x31, 0xD0, 0x74, 0x9D, 0x74, 0xBD, 0x6C, 0x5C, 0x42, 0x73, 0x08, 0x00, 0x01, 0x81, 0x31, 0xD0, 0x6C, 0x7C, 0x05, 0x74, 0xBD, 0x81, 0x6C, 0x9C, 0x53, 0x36, 0x69, 0x00, 0x01, 0x82, 0x21, 0x4D, 0x3A, 0x52, 0x64, 0x3B, 0x01, 0x74, 0xBD, 0x82, 0x64, 0x3B, 0x3A, 0x11, 0x21, 0x2D, 0x0C, 0x00, 0x01, 0x87, 0x21, 0x2D, 0x29, 0x6E, 0x42, 0x94, 0x6C, 0x5C, 0x74, 0xBE, 0x74, 0xBD, 0x64, 0x3B, 0x31, 0xF0, 0x0F, 0x00, 0x01, 0x82, 0x21, 0x4D, 0x42, 0x93, 0x74, 0xBD, 0x03, 0x74, 0xBE, 0x81, 0x6C, 0x5C, 0x3A, 0x52, 0x29, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x3A, 0x52, 0x01, 0x74, 0x9D, 0x81, 0x5B, 0xB9, 0x29, 0x6E, 0x07, 0x00, 0x01, 0x84, 0x29, 0x8F, 0x5B, 0xD9, 0x74, 0xBE, 0x74, 0x9D, 0x53, 0x57, 0x08, 0x00, 0x01, 0x81, 0x29, 0x8E, 0x5B, 0x98, 0x05, 0x74, 0xBE, 0x82, 0x74, 0xBD, 0x63, 0xFA, 0x21, 0x2D, 0x67, 0x00, 0x01, 0x82, 0x29, + 0x8E, 0x53, 0x57, 0x74, 0x9D, 0x01, 0x74, 0xBD, 0x82, 0x6C, 0x3B, 0x3A, 0x11, 0x21, 0x2D, 0x03, 0x00, 0x01, 0x91, 0x29, 0x4E, 0x31, 0xD0, 0x3A, 0x32, 0x42, 0x93, 0x4A, 0xF5, 0x53, 0x36, 0x53, 0x57, 0x5B, 0x98, 0x5B, 0xB9, 0x5B, 0xD9, 0x5B, 0xB9, 0x53, 0x57, 0x3A, 0x11, 0x31, 0xAF, 0x53, 0x57, 0x74, 0xBD, 0x74, 0x9D, 0x53, 0x78, 0x0F, 0x00, 0x01, 0x81, 0x29, 0x8F, 0x5B, 0xD9, 0x04, 0x74, 0xBE, 0x81, 0x64, 0x3B, 0x29, 0x8F, 0x2A, 0x00, 0x01, 0x85, 0x29, 0x6E, 0x53, 0x36, 0x74, 0xBE, 0x6C, 0x9D, 0x53, 0x36, 0x21, 0x0D, 0x06, 0x00, 0x01, 0x85, 0x21, 0x4D, 0x4A, 0xD4, 0x74, 0xBE, 0x74, 0xBD, 0x63, 0xFA, 0x21, 0x2D, 0x07, 0x00, 0x01, 0x81, 0x21, 0x4D, 0x4A, 0xD5, 0x06, 0x74, 0xBE, 0x81, 0x6C, 0x3B, 0x31, 0xD0, 0x65, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x31, 0xD0, 0x63, 0xDA, 0x74, 0x9D, 0x01, 0x74, 0xBE, 0x89, 0x6C, 0x7C, 0x4A, 0xD4, 0x29, 0xAF, 0x3A, 0x11, 0x42, 0x94, 0x53, 0x36, 0x5B, 0xB9, 0x6C, 0x3B, 0x6C, 0x7C, 0x74, 0x7D, 0x03, 0x74, 0x9D, 0x8C, 0x6C, 0x7C, 0x63, 0xDA, 0x53, 0x36, 0x42, 0x73, 0x31, 0xAF, 0x21, 0x4D, 0x21, 0x2D, 0x00, 0x01, 0x29, 0x4D, 0x3A, 0x32, 0x63, 0xFA, 0x64, 0x1A, 0x29, 0x4E, 0x0D, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x42, 0x73, 0x74, 0xBD, 0x03, 0x74, 0xBE, 0x81, 0x74, 0x9D, 0x5B, 0x98, 0x2C, 0x00, 0x01, 0x84, 0x31, 0xD0, 0x6C, 0x3B, 0x74, 0xBD, 0x6C, 0x5C, 0x42, 0x73, 0x06, 0x00, 0x01, 0x85, 0x21, 0x0D, 0x31, 0xF1, 0x74, 0xBD, 0x74, 0xBE, 0x6C, 0x3B, 0x31, 0xD0, 0x07, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x3A, + 0x11, 0x74, 0xBD, 0x05, 0x74, 0xBE, 0x81, 0x6C, 0x5C, 0x42, 0x93, 0x64, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x42, 0x73, 0x6C, 0x5C, 0x74, 0xBD, 0x02, 0x74, 0xBE, 0x82, 0x74, 0xBD, 0x74, 0x9D, 0x74, 0x7C, 0x02, 0x74, 0x9D, 0x01, 0x74, 0xBD, 0x87, 0x74, 0xBE, 0x74, 0xBD, 0x74, 0x7C, 0x5B, 0x98, 0x4A, 0xD4, 0x32, 0x11, 0x29, 0x6E, 0x21, 0x4D, 0x01, 0x21, 0x2D, 0x80, 0x21, 0x0D, 0x03, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x29, 0x6E, 0x31, 0xD0, 0x21, 0x2D, 0x0C, 0x00, 0x01, 0x82, 0x21, 0x0D, 0x31, 0xD0, 0x6C, 0x3B, 0x04, 0x74, 0xBE, 0x81, 0x6C, 0x5C, 0x3A, 0x52, 0x2C, 0x00, 0x01, 0x85, 0x29, 0x4E, 0x4A, 0xF5, 0x74, 0xBE, 0x74, 0xBD, 0x64, 0x1A, 0x31, 0xAF, 0x06, 0x00, 0x01, 0x84, 0x31, 0xAF, 0x6C, 0x5C, 0x74, 0xBE, 0x6C, 0x5C, 0x3A, 0x52, 0x08, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x6C, 0x3B, 0x05, 0x74, 0xBE, 0x81, 0x74, 0x9D, 0x53, 0x37, 0x63, 0x00, 0x01, 0x83, 0x29, 0x4E, 0x4A, 0xD5, 0x74, 0x9D, 0x74, 0xBD, 0x09, 0x74, 0xBE, 0x85, 0x74, 0x9D, 0x64, 0x1A, 0x4A, 0xF5, 0x3A, 0x11, 0x29, 0x6E, 0x21, 0x4D, 0x01, 0x21, 0x2D, 0x0A, 0x00, 0x01, 0x80, 0x21, 0x0D, 0x0D, 0x00, 0x01, 0x82, 0x31, 0xAF, 0x63, 0xDA, 0x74, 0xBD, 0x03, 0x74, 0xBE, 0x82, 0x74, 0xBD, 0x63, 0xD9, 0x21, 0x4D, 0x2D, 0x00, 0x01, 0x85, 0x31, 0xD0, 0x74, 0x7C, 0x74, 0xBE, 0x74, 0x9D, 0x5B, 0x98, 0x21, 0x2D, 0x05, 0x00, 0x01, 0x84, 0x29, 0x8F, 0x63, 0xD9, 0x74, 0xBE, 0x74, 0x7C, 0x4A, 0xF5, 0x08, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x5B, 0x78, 0x05, 0x74, 0xBE, 0x81, 0x74, 0xBD, 0x63, + 0xD9, 0x62, 0x00, 0x01, 0x82, 0x29, 0x6E, 0x53, 0x16, 0x74, 0x9D, 0x08, 0x74, 0xBE, 0x84, 0x74, 0x9D, 0x6C, 0x1B, 0x53, 0x16, 0x31, 0xF1, 0x21, 0x4D, 0x01, 0x21, 0x2D, 0x1B, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x31, 0xF1, 0x63, 0xFA, 0x74, 0x9D, 0x04, 0x74, 0xBE, 0x81, 0x6C, 0x5C, 0x3A, 0x52, 0x2E, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x53, 0x57, 0x01, 0x74, 0xBE, 0x81, 0x6C, 0x5C, 0x42, 0x93, 0x05, 0x00, 0x01, 0x84, 0x29, 0x6E, 0x53, 0x16, 0x74, 0xBE, 0x74, 0x9D, 0x5B, 0x77, 0x08, 0x00, 0x01, 0x81, 0x29, 0x4E, 0x4A, 0xD5, 0x06, 0x74, 0xBE, 0x81, 0x6C, 0x1B, 0x29, 0x6E, 0x60, 0x00, 0x01, 0x82, 0x29, 0x8F, 0x5B, 0x78, 0x74, 0x9D, 0x06, 0x7C, 0xBE, 0x84, 0x7C, 0xBD, 0x74, 0x7C, 0x53, 0x37, 0x39, 0xF1, 0x21, 0x4D, 0x01, 0x21, 0x2D, 0x1D, 0x00, 0x01, 0x83, 0x29, 0x6E, 0x4A, 0xD5, 0x74, 0x5C, 0x74, 0xBD, 0x04, 0x7C, 0xBE, 0x82, 0x74, 0x9D, 0x53, 0x57, 0x21, 0x2D, 0x2E, 0x00, 0x01, 0x86, 0x21, 0x2D, 0x3A, 0x32, 0x7C, 0xBD, 0x7C, 0xBE, 0x74, 0xBD, 0x63, 0xFA, 0x29, 0x8E, 0x04, 0x00, 0x01, 0x85, 0x21, 0x2D, 0x3A, 0x32, 0x7C, 0xBE, 0x74, 0xBD, 0x63, 0xFA, 0x21, 0x2D, 0x07, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x3A, 0x52, 0x06, 0x7C, 0xBE, 0x81, 0x6C, 0x3B, 0x31, 0xF1, 0x5F, 0x00, 0x01, 0x82, 0x29, 0x8F, 0x5B, 0x98, 0x74, 0x9D, 0x05, 0x7C, 0xBE, 0x83, 0x74, 0x9D, 0x6C, 0x1B, 0x4A, 0xB4, 0x29, 0x8F, 0x01, 0x21, 0x2D, 0x1D, 0x00, 0x01, 0x85, 0x21, 0x0D, 0x29, 0x8E, 0x4A, 0xD5, 0x6C, 0x1B, 0x74, 0x9D, 0x7C, 0xBD, 0x04, 0x7C, 0xBE, 0x82, 0x7C, 0x9D, + 0x63, 0xDA, 0x29, 0x8F, 0x30, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x6C, 0x1B, 0x01, 0x7C, 0xBE, 0x81, 0x74, 0x7C, 0x52, 0xF6, 0x05, 0x00, 0x01, 0x84, 0x31, 0xD0, 0x74, 0x9D, 0x7C, 0xBE, 0x6C, 0x1B, 0x29, 0x8F, 0x08, 0x00, 0x01, 0x81, 0x31, 0xD0, 0x74, 0x9D, 0x05, 0x7C, 0xBE, 0x81, 0x74, 0x5C, 0x42, 0x73, 0x5E, 0x00, 0x01, 0x82, 0x29, 0x8E, 0x5B, 0x78, 0x74, 0x9D, 0x04, 0x7C, 0xBE, 0x84, 0x74, 0x9D, 0x63, 0xD9, 0x42, 0x73, 0x29, 0x4E, 0x21, 0x2D, 0x01, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x31, 0xD0, 0x4A, 0xF5, 0x5B, 0x78, 0x63, 0xD9, 0x03, 0x6B, 0xFA, 0x99, 0x63, 0xFA, 0x63, 0xB9, 0x5B, 0x78, 0x53, 0x57, 0x53, 0x16, 0x4A, 0xD5, 0x4A, 0xB4, 0x42, 0x73, 0x3A, 0x32, 0x3A, 0x11, 0x31, 0xD0, 0x31, 0xAF, 0x29, 0x8E, 0x29, 0x6E, 0x29, 0x4E, 0x21, 0x4D, 0x29, 0x4E, 0x29, 0x6E, 0x29, 0x8F, 0x31, 0xD0, 0x3A, 0x52, 0x4A, 0xD5, 0x63, 0x99, 0x74, 0x5C, 0x74, 0x9D, 0x7C, 0x9D, 0x05, 0x7C, 0xBE, 0x82, 0x7C, 0x9D, 0x6B, 0xFA, 0x31, 0xD0, 0x31, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x53, 0x16, 0x01, 0x7C, 0xBE, 0x82, 0x7C, 0xBD, 0x6C, 0x1B, 0x29, 0x8F, 0x04, 0x00, 0x01, 0x84, 0x31, 0xAF, 0x6C, 0x3B, 0x7C, 0xBE, 0x6C, 0x3B, 0x3A, 0x11, 0x08, 0x00, 0x01, 0x81, 0x29, 0x8F, 0x6B, 0xFA, 0x05, 0x7C, 0xBE, 0x81, 0x74, 0x5C, 0x4A, 0xD4, 0x5D, 0x00, 0x01, 0x82, 0x29, 0x8F, 0x5B, 0x98, 0x7C, 0x9D, 0x03, 0x7C, 0xBE, 0x84, 0x7C, 0x9D, 0x63, 0xD9, 0x3A, 0x31, 0x21, 0x4D, 0x21, 0x2D, 0x02, 0x00, 0x01, 0x83, 0x21, 0x4D, 0x42, 0x52, 0x63, 0xB9, 0x6C, 0x3B, 0x09, 0x7C, + 0x9D, 0x02, 0x74, 0x9D, 0x04, 0x74, 0x7D, 0x06, 0x74, 0x7C, 0x01, 0x74, 0x7D, 0x81, 0x74, 0x9D, 0x7C, 0x9D, 0x07, 0x7C, 0xBE, 0x83, 0x7C, 0x9D, 0x6C, 0x1B, 0x3A, 0x11, 0x21, 0x0D, 0x31, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x3A, 0x32, 0x7C, 0xBD, 0x01, 0x7C, 0xBE, 0x81, 0x74, 0x7C, 0x52, 0xF5, 0x04, 0x00, 0x01, 0x84, 0x29, 0x8F, 0x6B, 0xFA, 0x7C, 0xBE, 0x74, 0x5C, 0x42, 0x73, 0x08, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x5B, 0x57, 0x05, 0x7C, 0xBE, 0x81, 0x74, 0x7D, 0x53, 0x16, 0x5C, 0x00, 0x01, 0x82, 0x29, 0x6E, 0x5B, 0x57, 0x7C, 0x9D, 0x02, 0x7C, 0xBE, 0x84, 0x7C, 0x9D, 0x6C, 0x1B, 0x42, 0x73, 0x29, 0x4D, 0x21, 0x2D, 0x05, 0x00, 0x01, 0x88, 0x21, 0x2D, 0x21, 0x4D, 0x29, 0x4E, 0x29, 0x8F, 0x3A, 0x11, 0x4A, 0xB4, 0x5B, 0x57, 0x6C, 0x1B, 0x7C, 0x9D, 0x1D, 0x7C, 0xBE, 0x8B, 0x7C, 0x9D, 0x63, 0xDA, 0x39, 0xF1, 0x3A, 0x31, 0x4A, 0xD5, 0x53, 0x16, 0x52, 0xF6, 0x4A, 0xB4, 0x31, 0xF0, 0x21, 0x2D, 0x31, 0xAF, 0x4A, 0xB4, 0x01, 0x53, 0x16, 0x82, 0x4A, 0xF5, 0x3A, 0x32, 0x21, 0x2D, 0x26, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x6C, 0x3B, 0x01, 0x7C, 0xBE, 0x82, 0x7C, 0x9D, 0x6B, 0xFA, 0x29, 0x6E, 0x03, 0x00, 0x01, 0x84, 0x29, 0x6E, 0x53, 0x37, 0x7C, 0xBE, 0x74, 0x5C, 0x4A, 0xD4, 0x08, 0x00, 0x01, 0x81, 0x29, 0x4D, 0x4A, 0xB4, 0x05, 0x7C, 0xBE, 0x81, 0x7C, 0x9D, 0x5B, 0x78, 0x5B, 0x00, 0x01, 0x82, 0x29, 0x4D, 0x4A, 0xD4, 0x7C, 0x9D, 0x02, 0x7C, 0x9E, 0x83, 0x74, 0x7D, 0x5B, 0x57, 0x29, 0x8F, 0x21, 0x2D, 0x0B, 0x00, 0x01, 0x02, 0x21, 0x2D, 0x85, 0x29, + 0x4D, 0x29, 0x8F, 0x42, 0x73, 0x5B, 0x57, 0x6C, 0x1B, 0x7C, 0x9D, 0x18, 0x7C, 0x9E, 0x84, 0x7C, 0x7D, 0x63, 0x98, 0x31, 0xAF, 0x3A, 0x32, 0x74, 0x5C, 0x02, 0x7C, 0x7D, 0x84, 0x74, 0x5C, 0x5B, 0x37, 0x21, 0x2D, 0x42, 0x52, 0x74, 0x5C, 0x01, 0x7C, 0x9D, 0x83, 0x7C, 0x7D, 0x74, 0x5C, 0x5B, 0x78, 0x29, 0x6E, 0x0D, 0x00, 0x01, 0x85, 0x21, 0x2D, 0x29, 0x6E, 0x31, 0xF0, 0x3A, 0x32, 0x42, 0x73, 0x4A, 0xB4, 0x02, 0x4A, 0xD5, 0x86, 0x4A, 0xB4, 0x42, 0x93, 0x42, 0x53, 0x3A, 0x32, 0x3A, 0x11, 0x31, 0xD0, 0x29, 0x6E, 0x07, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x5B, 0x78, 0x02, 0x7C, 0x9E, 0x81, 0x74, 0x5C, 0x42, 0x93, 0x03, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x3A, 0x32, 0x7C, 0x9D, 0x74, 0x7D, 0x53, 0x16, 0x08, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x3A, 0x32, 0x05, 0x7C, 0x9E, 0x81, 0x7C, 0x9D, 0x63, 0xD9, 0x5A, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x42, 0x73, 0x74, 0x7D, 0x01, 0x7C, 0x9E, 0x83, 0x7C, 0x9D, 0x6C, 0x1B, 0x42, 0x52, 0x21, 0x2D, 0x12, 0x00, 0x01, 0x01, 0x21, 0x2D, 0x84, 0x29, 0x4E, 0x31, 0xD0, 0x4A, 0xB4, 0x63, 0xB9, 0x7C, 0x7D, 0x14, 0x7C, 0x9E, 0x84, 0x74, 0x5C, 0x4A, 0xD5, 0x29, 0x4D, 0x29, 0x8F, 0x63, 0x99, 0x03, 0x7C, 0x9E, 0x85, 0x74, 0x5C, 0x4A, 0xD5, 0x00, 0x01, 0x21, 0x4D, 0x42, 0x53, 0x7C, 0x9D, 0x02, 0x7C, 0x9E, 0x82, 0x7C, 0x7D, 0x5B, 0x78, 0x21, 0x2D, 0x06, 0x00, 0x01, 0x88, 0x29, 0x4E, 0x39, 0xF1, 0x42, 0x73, 0x52, 0xF5, 0x5B, 0x58, 0x6B, 0xDA, 0x74, 0x3C, 0x74, 0x5D, 0x74, 0x7D, 0x09, 0x7C, 0x7D, 0x01, 0x74, 0x7D, 0x8A, 0x74, + 0x5C, 0x74, 0x3C, 0x6B, 0xDA, 0x5B, 0x78, 0x52, 0xF6, 0x42, 0x73, 0x31, 0xD0, 0x21, 0x2D, 0x00, 0x01, 0x29, 0x4D, 0x4A, 0xD5, 0x02, 0x7C, 0x9E, 0x82, 0x7C, 0x9D, 0x63, 0x99, 0x21, 0x2D, 0x03, 0x00, 0x01, 0x83, 0x31, 0xAF, 0x74, 0x5C, 0x7C, 0x7D, 0x5B, 0x78, 0x09, 0x00, 0x01, 0x81, 0x31, 0xD0, 0x7C, 0x7D, 0x05, 0x7C, 0x9E, 0x81, 0x6B, 0xFA, 0x21, 0x2D, 0x58, 0x00, 0x01, 0x82, 0x21, 0x0D, 0x31, 0xD0, 0x74, 0x3B, 0x01, 0x7C, 0x9E, 0x83, 0x7C, 0x7D, 0x63, 0x78, 0x31, 0xAF, 0x21, 0x2D, 0x17, 0x00, 0x01, 0x85, 0x21, 0x2D, 0x21, 0x4D, 0x31, 0xAF, 0x4A, 0x94, 0x5B, 0x78, 0x74, 0x5C, 0x0F, 0x7C, 0x9E, 0x82, 0x7C, 0x7D, 0x5B, 0x57, 0x31, 0xB0, 0x01, 0x21, 0x2D, 0x81, 0x3A, 0x32, 0x7C, 0x9D, 0x03, 0x7C, 0x9E, 0x81, 0x74, 0x3C, 0x3A, 0x32, 0x01, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x74, 0x5C, 0x03, 0x7C, 0x9E, 0x81, 0x74, 0x1B, 0x39, 0xF0, 0x02, 0x00, 0x01, 0x84, 0x29, 0x4E, 0x3A, 0x32, 0x53, 0x16, 0x6B, 0xDA, 0x74, 0x5C, 0x02, 0x7C, 0x7D, 0x01, 0x7C, 0x9D, 0x10, 0x7C, 0x9E, 0x01, 0x7C, 0x9D, 0x01, 0x7C, 0x7D, 0x84, 0x74, 0x7D, 0x74, 0x3C, 0x5B, 0x58, 0x4A, 0x94, 0x52, 0xF5, 0x03, 0x7C, 0x9E, 0x81, 0x74, 0x1B, 0x31, 0xF0, 0x03, 0x00, 0x01, 0x83, 0x29, 0x8F, 0x6B, 0xDA, 0x7C, 0x9E, 0x6B, 0xDA, 0x09, 0x00, 0x01, 0x81, 0x31, 0x8F, 0x6B, 0xFB, 0x05, 0x7C, 0x9E, 0x81, 0x6C, 0x1B, 0x29, 0x8F, 0x58, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x63, 0x78, 0x01, 0x7C, 0x9E, 0x82, 0x74, 0x5C, 0x52, 0xD5, 0x29, 0x4D, 0x1C, 0x00, 0x01, 0x01, 0x21, 0x2D, 0x84, + 0x29, 0x6E, 0x39, 0xF1, 0x52, 0xD5, 0x63, 0xB9, 0x74, 0x5C, 0x08, 0x7C, 0x9E, 0x84, 0x7C, 0x9D, 0x6C, 0x1B, 0x52, 0xF5, 0x31, 0xAF, 0x21, 0x2D, 0x01, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x5B, 0x57, 0x04, 0x7C, 0x9E, 0x81, 0x6C, 0x1B, 0x29, 0x6E, 0x01, 0x00, 0x01, 0x81, 0x31, 0xD0, 0x7C, 0x7D, 0x03, 0x7C, 0x9E, 0x86, 0x74, 0x3C, 0x42, 0x53, 0x00, 0x01, 0x29, 0x6E, 0x5B, 0x37, 0x74, 0x3C, 0x7C, 0x7D, 0x01, 0x7C, 0x9D, 0x1C, 0x7C, 0x9E, 0x80, 0x7C, 0x9D, 0x01, 0x7C, 0x7D, 0x03, 0x7C, 0x9E, 0x81, 0x74, 0x5C, 0x4A, 0xD5, 0x03, 0x00, 0x01, 0x84, 0x29, 0x6E, 0x5B, 0x57, 0x7C, 0x9E, 0x6B, 0xFB, 0x29, 0x4E, 0x08, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x63, 0x78, 0x05, 0x7C, 0x9E, 0x81, 0x74, 0x1B, 0x31, 0xF0, 0x57, 0x00, 0x01, 0x81, 0x21, 0x4D, 0x4A, 0x93, 0x01, 0x7C, 0x9D, 0x82, 0x6B, 0xFB, 0x3A, 0x11, 0x21, 0x2D, 0x20, 0x00, 0x01, 0x01, 0x21, 0x2D, 0x8D, 0x21, 0x4D, 0x29, 0x4E, 0x29, 0x8F, 0x3A, 0x11, 0x4A, 0xB4, 0x53, 0x16, 0x5B, 0x57, 0x5B, 0x78, 0x5B, 0x57, 0x52, 0xD5, 0x42, 0x52, 0x31, 0x8F, 0x29, 0x4D, 0x21, 0x2D, 0x03, 0x00, 0x01, 0x81, 0x31, 0xD0, 0x7C, 0x5C, 0x03, 0x7C, 0x9E, 0x81, 0x7C, 0x7D, 0x63, 0x78, 0x01, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x3A, 0x32, 0x04, 0x7C, 0x9E, 0x8E, 0x74, 0x3C, 0x3A, 0x32, 0x00, 0x01, 0x29, 0x6E, 0x42, 0x73, 0x4A, 0xB4, 0x52, 0xF6, 0x5B, 0x16, 0x5B, 0x57, 0x63, 0x98, 0x63, 0xB9, 0x6B, 0xDA, 0x6B, 0xFB, 0x74, 0x1B, 0x74, 0x3C, 0x01, 0x7C, 0x7D, 0x1B, 0x7C, 0x9E, 0x82, 0x7C, 0x9D, 0x63, 0xB9, 0x21, 0x2D, + 0x02, 0x00, 0x01, 0x84, 0x29, 0x4D, 0x4A, 0xB4, 0x7C, 0x9E, 0x74, 0x1B, 0x31, 0xAF, 0x08, 0x00, 0x01, 0x81, 0x29, 0x4E, 0x52, 0xF6, 0x05, 0x7C, 0x9E, 0x81, 0x74, 0x3B, 0x3A, 0x11, 0x57, 0x00, 0x01, 0x85, 0x29, 0x8F, 0x6B, 0xFA, 0x7C, 0x7D, 0x6B, 0xB9, 0x31, 0xB0, 0x21, 0x2D, 0x26, 0x00, 0x01, 0x07, 0x21, 0x2D, 0x05, 0x00, 0x01, 0x81, 0x21, 0x4D, 0x4A, 0x94, 0x04, 0x7C, 0x9E, 0x81, 0x74, 0x5C, 0x4A, 0xB4, 0x01, 0x00, 0x01, 0x81, 0x29, 0x4E, 0x52, 0xD5, 0x04, 0x7C, 0x9E, 0x81, 0x6B, 0xFB, 0x29, 0x6E, 0x01, 0x00, 0x01, 0x04, 0x21, 0x2D, 0x03, 0x21, 0x4D, 0x01, 0x29, 0x4D, 0x01, 0x29, 0x4E, 0x87, 0x29, 0x6E, 0x31, 0x8F, 0x39, 0xF1, 0x42, 0x52, 0x52, 0xD5, 0x63, 0x78, 0x74, 0x1B, 0x7C, 0x9D, 0x14, 0x7C, 0x9E, 0x81, 0x74, 0x1B, 0x31, 0xD0, 0x02, 0x00, 0x01, 0x84, 0x21, 0x0D, 0x31, 0xD0, 0x7C, 0x7D, 0x74, 0x1B, 0x39, 0xF0, 0x08, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x42, 0x73, 0x05, 0x7C, 0x9E, 0x81, 0x74, 0x3C, 0x3A, 0x11, 0x56, 0x00, 0x01, 0x85, 0x21, 0x2D, 0x4A, 0x93, 0x7C, 0x7D, 0x63, 0x78, 0x29, 0x6E, 0x21, 0x0D, 0x35, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x63, 0x78, 0x04, 0x84, 0x9E, 0x81, 0x74, 0x1B, 0x39, 0xF1, 0x01, 0x00, 0x01, 0x81, 0x29, 0x8E, 0x63, 0x99, 0x03, 0x84, 0x9E, 0x81, 0x7C, 0x5D, 0x52, 0xF6, 0x11, 0x00, 0x01, 0x80, 0x21, 0x0D, 0x01, 0x21, 0x2D, 0x87, 0x21, 0x4D, 0x29, 0x4E, 0x29, 0x8F, 0x3A, 0x11, 0x4A, 0xD5, 0x63, 0x78, 0x74, 0x1B, 0x7C, 0x9E, 0x0F, 0x84, 0x9E, 0x81, 0x74, 0x3C, 0x4A, 0x93, 0x03, 0x00, 0x01, 0x83, + 0x29, 0x8F, 0x63, 0x99, 0x74, 0x3C, 0x3A, 0x32, 0x08, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x3A, 0x11, 0x05, 0x84, 0x9E, 0x81, 0x74, 0x3C, 0x42, 0x32, 0x57, 0x00, 0x01, 0x02, 0x21, 0x2D, 0x37, 0x00, 0x01, 0x81, 0x29, 0x8F, 0x7C, 0x3C, 0x04, 0x84, 0x9E, 0x81, 0x6B, 0xDA, 0x21, 0x2D, 0x01, 0x00, 0x01, 0x81, 0x31, 0xB0, 0x7C, 0x5C, 0x02, 0x84, 0x9E, 0x82, 0x84, 0x7D, 0x6B, 0xBA, 0x29, 0x6E, 0x17, 0x00, 0x01, 0x02, 0x21, 0x2D, 0x84, 0x29, 0x4E, 0x31, 0xAF, 0x42, 0x73, 0x5B, 0x37, 0x74, 0x1B, 0x0C, 0x84, 0x9E, 0x81, 0x7C, 0x7D, 0x5B, 0x37, 0x03, 0x00, 0x01, 0x83, 0x29, 0x4D, 0x4A, 0xB4, 0x74, 0x3C, 0x42, 0x53, 0x09, 0x00, 0x01, 0x81, 0x31, 0xB0, 0x7C, 0x7D, 0x04, 0x84, 0x9E, 0x81, 0x74, 0x3C, 0x42, 0x53, 0x7F, 0x00, 0x01, 0x12, 0x00, 0x01, 0x80, 0x3A, 0x11, 0x04, 0x84, 0x9E, 0x81, 0x7C, 0x7D, 0x5B, 0x37, 0x01, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x42, 0x73, 0x03, 0x84, 0x9E, 0x81, 0x74, 0x3C, 0x39, 0xF1, 0x1D, 0x00, 0x01, 0x01, 0x21, 0x2D, 0x83, 0x29, 0x6E, 0x39, 0xF1, 0x5B, 0x57, 0x7C, 0x5D, 0x0A, 0x84, 0x9E, 0x81, 0x6B, 0xDA, 0x21, 0x2D, 0x02, 0x00, 0x01, 0x83, 0x21, 0x0D, 0x39, 0xF0, 0x74, 0x3C, 0x4A, 0x94, 0x09, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x74, 0x3C, 0x04, 0x84, 0x9E, 0x81, 0x74, 0x3C, 0x42, 0x73, 0x57, 0x00, 0x01, 0x80, 0x21, 0x0D, 0x39, 0x00, 0x01, 0x80, 0x6B, 0xBA, 0x04, 0x84, 0x9E, 0x81, 0x7C, 0x3C, 0x42, 0x53, 0x01, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x63, 0x58, 0x02, 0x84, 0x9E, 0x81, 0x7C, 0x5D, 0x4A, 0x94, 0x21, 0x00, 0x01, + 0x84, 0x21, 0x2D, 0x21, 0x4D, 0x31, 0xAF, 0x52, 0xF5, 0x74, 0x3C, 0x08, 0x84, 0x9E, 0x81, 0x74, 0x1B, 0x31, 0x8F, 0x03, 0x00, 0x01, 0x82, 0x31, 0x8F, 0x6B, 0x99, 0x52, 0xD5, 0x09, 0x00, 0x01, 0x81, 0x31, 0x8F, 0x6B, 0xDA, 0x04, 0x84, 0x9E, 0x81, 0x7C, 0x3C, 0x4A, 0x73, 0x48, 0x00, 0x01, 0x28, 0x21, 0x2D, 0x0C, 0x21, 0x2E, 0x81, 0x21, 0x2D, 0x21, 0x2E, 0x03, 0x21, 0x2D, 0x80, 0x21, 0x0D, 0x01, 0x21, 0x2D, 0x03, 0x21, 0x0D, 0x80, 0x00, 0x01, 0x03, 0x21, 0x0D, 0x82, 0x21, 0x2D, 0x29, 0x8F, 0x84, 0x7D, 0x04, 0x84, 0x9E, 0x81, 0x74, 0x1C, 0x29, 0x6F, 0x01, 0x21, 0x0D, 0x81, 0x42, 0x73, 0x7C, 0x5D, 0x01, 0x84, 0x9E, 0x86, 0x84, 0x7E, 0x63, 0x57, 0x39, 0xEF, 0x29, 0x6D, 0x29, 0x4D, 0x29, 0x6D, 0x29, 0x6C, 0x01, 0x29, 0x4C, 0x80, 0x29, 0x6C, 0x01, 0x29, 0x4C, 0x80, 0x29, 0x6C, 0x06, 0x29, 0x6D, 0x80, 0x29, 0x4D, 0x01, 0x21, 0x2D, 0x03, 0x21, 0x0D, 0x80, 0x21, 0x2D, 0x01, 0x21, 0x0D, 0x05, 0x00, 0x01, 0x81, 0x21, 0x0D, 0x21, 0x2D, 0x01, 0x21, 0x0D, 0x82, 0x29, 0x4E, 0x42, 0x32, 0x6B, 0x99, 0x07, 0x84, 0x9E, 0x81, 0x7C, 0x1C, 0x42, 0x32, 0x03, 0x00, 0x01, 0x82, 0x29, 0x6E, 0x52, 0xF5, 0x52, 0xF6, 0x09, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x63, 0x78, 0x04, 0x84, 0x9E, 0x81, 0x7C, 0x3C, 0x4A, 0x94, 0x1D, 0x00, 0x01, 0x83, 0x18, 0xEB, 0x19, 0x0D, 0x21, 0x71, 0x21, 0xB4, 0x03, 0x21, 0xD6, 0x04, 0x21, 0xD7, 0x04, 0x21, 0xF8, 0x58, 0x21, 0xF9, 0x02, 0x22, 0x19, 0x05, 0x22, 0x1A, 0x80, 0x63, 0xDD, 0x05, 0x84, 0x9E, 0x84, 0x63, 0xBC, 0x22, + 0x39, 0x2A, 0x59, 0x4B, 0x1B, 0x7C, 0x7E, 0x02, 0x84, 0x9E, 0x83, 0x5B, 0x9C, 0x2A, 0x7B, 0x2A, 0x5A, 0x2A, 0x59, 0x05, 0x2A, 0x79, 0x0C, 0x32, 0x79, 0x82, 0x2A, 0x79, 0x2A, 0x59, 0x2A, 0x39, 0x01, 0x22, 0x19, 0x0D, 0x21, 0xF9, 0x80, 0x22, 0x1A, 0x05, 0x22, 0x3A, 0x83, 0x2A, 0x5A, 0x22, 0x18, 0x6B, 0xBA, 0x4A, 0x94, 0x03, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x3A, 0x12, 0x5B, 0x16, 0x09, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x5B, 0x37, 0x04, 0x84, 0x9E, 0x81, 0x7C, 0x3C, 0x4A, 0x73, 0x1B, 0x00, 0x01, 0x84, 0x18, 0xEB, 0x19, 0x2D, 0x21, 0x93, 0x21, 0xF8, 0x22, 0x19, 0x6F, 0x22, 0x1A, 0x80, 0x22, 0x3A, 0x06, 0x84, 0x9E, 0x83, 0x22, 0x3A, 0x2A, 0x3A, 0x2A, 0x5A, 0x84, 0x7E, 0x02, 0x84, 0x9E, 0x81, 0x63, 0xDD, 0x3A, 0xDB, 0x2F, 0x22, 0x1A, 0x83, 0x2A, 0x5A, 0x21, 0xF7, 0x7C, 0x3C, 0x52, 0xD5, 0x04, 0x00, 0x01, 0x81, 0x29, 0x8E, 0x4A, 0xB4, 0x09, 0x00, 0x01, 0x81, 0x29, 0x4E, 0x52, 0xF6, 0x04, 0x84, 0x9E, 0x81, 0x7C, 0x3C, 0x4A, 0x73, 0x1A, 0x00, 0x01, 0x82, 0x19, 0x0C, 0x21, 0x92, 0x21, 0xF9, 0x72, 0x22, 0x1A, 0x80, 0x5B, 0x7C, 0x05, 0x84, 0x7E, 0x83, 0x42, 0xFB, 0x22, 0x3A, 0x2A, 0x5B, 0x7C, 0x3D, 0x02, 0x84, 0x7E, 0x81, 0x74, 0x1D, 0x2A, 0x3A, 0x2B, 0x22, 0x1A, 0x02, 0x22, 0x3A, 0x01, 0x22, 0x1A, 0x83, 0x22, 0x3A, 0x21, 0xD7, 0x84, 0x5D, 0x5B, 0x37, 0x04, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x29, 0x4E, 0x09, 0x00, 0x01, 0x81, 0x29, 0x4D, 0x52, 0xB5, 0x04, 0x84, 0x7E, 0x81, 0x7C, 0x1C, 0x42, 0x53, 0x18, 0x00, 0x01, 0x82, 0x19, 0x0B, 0x21, + 0x2E, 0x21, 0xD6, 0x02, 0x22, 0x1A, 0x88, 0x22, 0x3A, 0x3A, 0xD7, 0x74, 0x6F, 0x9D, 0x8A, 0xAE, 0x08, 0xAE, 0x47, 0xB6, 0x66, 0xB6, 0x86, 0xBE, 0xA5, 0x01, 0xBE, 0xC5, 0x81, 0xC6, 0xC5, 0xC6, 0xC6, 0x01, 0xCE, 0xE5, 0x83, 0xCE, 0xE6, 0xCF, 0x06, 0xD7, 0x45, 0xD7, 0x65, 0x01, 0xDF, 0x64, 0x83, 0xD7, 0x65, 0xD7, 0x64, 0xDF, 0x67, 0xDF, 0x68, 0x03, 0xDF, 0x48, 0x83, 0xDF, 0x49, 0xDF, 0x4B, 0xDF, 0x4C, 0xE7, 0x4E, 0x01, 0xE7, 0x6E, 0x37, 0xEF, 0x8E, 0x81, 0xE7, 0x6E, 0xE7, 0x4F, 0x08, 0xDF, 0x2F, 0x80, 0xD7, 0x0F, 0x04, 0xCE, 0xD0, 0x80, 0xC6, 0x70, 0x02, 0xC6, 0x71, 0x82, 0xBE, 0x71, 0xA5, 0xB5, 0x8C, 0x9D, 0x04, 0x84, 0x7E, 0x83, 0x6B, 0xDD, 0x2A, 0x3A, 0x42, 0xFB, 0x7C, 0x5E, 0x01, 0x84, 0x7E, 0x82, 0x8C, 0xBB, 0xB6, 0x13, 0xD7, 0x10, 0x02, 0xDF, 0x2F, 0x80, 0xE7, 0x8E, 0x09, 0xEF, 0x8E, 0x86, 0xE7, 0x6E, 0xDF, 0x2F, 0xD7, 0x0F, 0xCE, 0xAE, 0xB6, 0x2C, 0x84, 0xD0, 0x32, 0xB8, 0x19, 0x22, 0x1A, 0x80, 0x22, 0x3A, 0x02, 0x22, 0x1A, 0x82, 0x21, 0xD7, 0x84, 0x5D, 0x63, 0x58, 0x10, 0x00, 0x01, 0x81, 0x21, 0x4D, 0x4A, 0x73, 0x04, 0x84, 0x7E, 0x81, 0x7C, 0x1C, 0x42, 0x32, 0x17, 0x00, 0x01, 0x82, 0x19, 0x0C, 0x19, 0x2E, 0x21, 0xD7, 0x02, 0x22, 0x1A, 0x84, 0x3A, 0xD7, 0x8D, 0x2C, 0xCE, 0xE4, 0xDF, 0x82, 0xE7, 0xA2, 0x07, 0xE7, 0xE1, 0x0A, 0xEF, 0xE2, 0x81, 0xEF, 0xE4, 0xF7, 0xE5, 0x0A, 0xF7, 0xE6, 0x82, 0xF7, 0xE7, 0xF7, 0xE9, 0xF7, 0xEA, 0x01, 0xF7, 0xEC, 0x32, 0xFF, 0xED, 0x13, 0xF7, 0xED, 0x80, 0xF7, 0xCE, 0x04, 0x84, 0x7E, + 0x83, 0x4B, 0x1C, 0x32, 0x7B, 0x53, 0x3C, 0x74, 0x1D, 0x01, 0x84, 0x7E, 0x82, 0x8C, 0xBC, 0xD6, 0xF1, 0xF7, 0xCD, 0x04, 0xF7, 0xED, 0x0B, 0xFF, 0xED, 0x86, 0xF7, 0xED, 0xF7, 0xEB, 0xF7, 0xE7, 0xEF, 0xC6, 0xE7, 0xA6, 0xC6, 0x8A, 0x4B, 0x55, 0x1C, 0x22, 0x1A, 0x82, 0x21, 0xD7, 0x7C, 0x3D, 0x63, 0x58, 0x10, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x42, 0x52, 0x04, 0x84, 0x7E, 0x81, 0x7C, 0x1C, 0x42, 0x12, 0x17, 0x00, 0x01, 0x81, 0x21, 0x2E, 0x21, 0xD7, 0x01, 0x22, 0x1A, 0x85, 0x2A, 0x59, 0x6C, 0x31, 0xC6, 0xA5, 0xDF, 0x82, 0xE7, 0xE2, 0xEF, 0xE2, 0x09, 0xE7, 0xE1, 0x0A, 0xEF, 0xE2, 0x0F, 0xF7, 0xE5, 0x02, 0xF7, 0xE6, 0x83, 0xF7, 0xE7, 0xF7, 0xE8, 0xF7, 0xEB, 0xF7, 0xEC, 0x40, 0xFF, 0xED, 0x80, 0xEF, 0x8F, 0x02, 0x84, 0x7E, 0x88, 0x7C, 0x5E, 0x6B, 0xBD, 0x7C, 0x3D, 0x84, 0x7E, 0x84, 0x5E, 0x84, 0x7E, 0x84, 0x5D, 0x74, 0x59, 0xF7, 0xCD, 0x13, 0xFF, 0xED, 0x80, 0xF7, 0xEA, 0x02, 0xF7, 0xE5, 0x82, 0xEF, 0xE6, 0xCE, 0xE9, 0x5B, 0xB4, 0x18, 0x22, 0x1A, 0x80, 0x22, 0x3A, 0x01, 0x22, 0x1A, 0x82, 0x21, 0xD8, 0x7C, 0x3C, 0x63, 0x58, 0x10, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x3A, 0x11, 0x04, 0x84, 0x7E, 0x81, 0x7C, 0x1C, 0x3A, 0x11, 0x16, 0x00, 0x01, 0x81, 0x21, 0x2E, 0x21, 0xB4, 0x01, 0x22, 0x1A, 0x83, 0x2A, 0x79, 0x7C, 0x8F, 0xCF, 0x03, 0xE7, 0xA2, 0x02, 0xEF, 0xE2, 0x09, 0xE7, 0xE1, 0x0A, 0xEF, 0xE2, 0x17, 0xF7, 0xE5, 0x02, 0xF7, 0xE6, 0x83, 0xF7, 0xE8, 0xF7, 0xE9, 0xF7, 0xEB, 0xF7, 0xED, 0x1D, 0xFF, 0xED, 0x81, 0xF7, 0xEC, 0xF7, 0xEB, 0x01, + 0xF7, 0xE8, 0x02, 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x80, 0xF7, 0xE7, 0x0A, 0xF7, 0xE6, 0x80, 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x86, 0xF7, 0xE7, 0xF7, 0xE6, 0xE7, 0x89, 0x9D, 0x1A, 0x8C, 0xBD, 0x8C, 0x9D, 0x8C, 0x7D, 0x01, 0x84, 0x7E, 0x86, 0x8C, 0x7E, 0x84, 0x7E, 0x7C, 0x3D, 0x4B, 0x1C, 0x32, 0x98, 0x95, 0x4F, 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x11, 0xF7, 0xE7, 0x80, 0xF7, 0xE6, 0x04, 0xEF, 0xE3, 0x81, 0xCF, 0x06, 0x64, 0x12, 0x1A, 0x22, 0x1A, 0x82, 0x21, 0xF8, 0x7C, 0x1C, 0x5B, 0x17, 0x10, 0x00, 0x01, 0x81, 0x21, 0x0D, 0x39, 0xD0, 0x04, 0x8C, 0x7E, 0x81, 0x7C, 0x1B, 0x39, 0xF1, 0x15, 0x00, 0x01, 0x86, 0x21, 0x0D, 0x21, 0x71, 0x22, 0x19, 0x22, 0x1A, 0x2A, 0x59, 0x63, 0xF3, 0xCF, 0x03, 0x03, 0xEF, 0xE2, 0x0C, 0xE7, 0xE1, 0x07, 0xEF, 0xE2, 0x80, 0xEF, 0xE3, 0x1E, 0xF7, 0xE5, 0x01, 0xF7, 0xE6, 0x84, 0xF7, 0xE7, 0xF7, 0xE8, 0xF7, 0xE9, 0xF7, 0xEB, 0xF7, 0xEC, 0x0F, 0xFF, 0xED, 0x84, 0xF7, 0xEB, 0xF7, 0xEA, 0xF7, 0xE9, 0xF7, 0xE8, 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x19, 0xF7, 0xE5, 0x81, 0xA5, 0x77, 0x94, 0xFB, 0x01, 0x8C, 0x7E, 0x83, 0x8C, 0x7D, 0x73, 0xFD, 0x53, 0x3C, 0x32, 0x7B, 0x02, 0x22, 0x1A, 0x81, 0x32, 0x98, 0x9D, 0x8E, 0x15, 0xF7, 0xE5, 0x80, 0xEF, 0xE4, 0x04, 0xEF, 0xE2, 0x81, 0xD7, 0x25, 0x74, 0x70, 0x19, 0x22, 0x1A, 0x82, 0x21, 0xF8, 0x73, 0xBA, 0x52, 0xB5, 0x11, 0x00, 0x01, 0x80, 0x39, 0xD0, 0x04, 0x8C, 0x7E, 0x81, 0x7B, 0xFB, 0x39, 0xD0, 0x15, 0x00, 0x01, 0x81, 0x21, 0x2E, 0x21, 0xB5, 0x01, 0x22, 0x1A, 0x81, 0x43, 0x17, + 0xC6, 0x87, 0x03, 0xEF, 0xE2, 0x0C, 0xE7, 0xE1, 0x85, 0xD7, 0x82, 0xC6, 0xE5, 0xBE, 0xA7, 0xB6, 0x87, 0xBE, 0xC6, 0xCF, 0x24, 0x02, 0xE7, 0xE1, 0x01, 0xEF, 0xE3, 0x80, 0xEF, 0xE2, 0x01, 0xEF, 0xE3, 0x80, 0xEF, 0xE2, 0x04, 0xEF, 0xE3, 0x86, 0xEF, 0xC4, 0xD7, 0x46, 0xC6, 0xC8, 0xBE, 0x69, 0xBE, 0x89, 0xCF, 0x07, 0xDF, 0x65, 0x18, 0xEF, 0xE3, 0x80, 0xEF, 0xE4, 0x01, 0xF7, 0xE5, 0x01, 0xF7, 0xE6, 0x82, 0xF7, 0xE5, 0xEF, 0xE5, 0xEF, 0xE4, 0x01, 0xEF, 0xE3, 0x22, 0xEF, 0xE2, 0x84, 0xBE, 0x30, 0xB5, 0xD3, 0x9D, 0x38, 0xC6, 0xAC, 0xA5, 0xCC, 0x05, 0x22, 0x1A, 0x81, 0x32, 0xB8, 0xA5, 0xCB, 0x07, 0xEF, 0xE2, 0x80, 0xE7, 0xC3, 0x01, 0xCF, 0x06, 0x81, 0xE7, 0xC3, 0xEF, 0xE3, 0x04, 0xEF, 0xE2, 0x80, 0xEF, 0xE3, 0x01, 0xEF, 0xE2, 0x81, 0xEF, 0xE3, 0xEF, 0xE2, 0x05, 0xE7, 0xE1, 0x81, 0xCF, 0x43, 0x7C, 0xCE, 0x18, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x01, 0x29, 0x4D, 0x11, 0x00, 0x01, 0x80, 0x31, 0xB0, 0x04, 0x8C, 0x7E, 0x81, 0x7B, 0xFB, 0x31, 0x8F, 0x14, 0x00, 0x01, 0x88, 0x21, 0x0D, 0x21, 0x50, 0x21, 0xF9, 0x22, 0x1A, 0x2A, 0x79, 0x8D, 0x10, 0xDF, 0x25, 0xEF, 0xE3, 0xEF, 0xE2, 0x0A, 0xE7, 0xE1, 0x85, 0xDF, 0xC1, 0xBE, 0xA6, 0x74, 0xAF, 0x43, 0x35, 0x2A, 0x78, 0x2A, 0x79, 0x01, 0x2A, 0x59, 0x84, 0x2A, 0x79, 0x32, 0x78, 0x43, 0x16, 0x7C, 0xAF, 0xBE, 0xA6, 0x07, 0xEF, 0xE2, 0x83, 0xE7, 0xA3, 0xB6, 0x49, 0x6C, 0x51, 0x42, 0xF6, 0x01, 0x2A, 0x79, 0x01, 0x2A, 0x59, 0x84, 0x2A, 0x79, 0x32, 0x98, 0x4B, 0x55, 0x84, 0xEE, 0xBE, 0xA7, 0x16, 0xEF, + 0xE2, 0x80, 0xE7, 0xE2, 0x04, 0xE7, 0xE1, 0x28, 0xEF, 0xE2, 0x81, 0xE7, 0xC3, 0xAE, 0x0A, 0x05, 0x22, 0x1A, 0x83, 0x32, 0xB7, 0xA5, 0xEA, 0xEF, 0xE2, 0xEF, 0xE3, 0x01, 0xEF, 0xE4, 0x01, 0xF7, 0xE5, 0x82, 0xEF, 0xC6, 0xB6, 0x4B, 0x4B, 0x36, 0x01, 0x2A, 0x79, 0x81, 0x4B, 0x36, 0xAD, 0xED, 0x09, 0xF7, 0xE5, 0x80, 0xEF, 0xE4, 0x04, 0xEF, 0xE2, 0x83, 0xE7, 0xE1, 0xD7, 0x63, 0x85, 0x2D, 0x22, 0x39, 0x16, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x13, 0x00, 0x01, 0x81, 0x31, 0xB0, 0x8C, 0x5D, 0x03, 0x8C, 0x7E, 0x81, 0x7B, 0xDB, 0x29, 0x4E, 0x14, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x21, 0x94, 0x01, 0x22, 0x1A, 0x83, 0x43, 0x18, 0xDF, 0x48, 0xF7, 0xE5, 0xEF, 0xE4, 0x0A, 0xE7, 0xE1, 0x83, 0xC6, 0xE5, 0x64, 0x11, 0x2A, 0x79, 0x22, 0x39, 0x07, 0x22, 0x1A, 0x83, 0x22, 0x39, 0x32, 0x98, 0x6C, 0x51, 0xCF, 0x06, 0x03, 0xEF, 0xE2, 0x84, 0xE7, 0xC3, 0xBE, 0x88, 0x5B, 0xB3, 0x2A, 0x59, 0x22, 0x39, 0x07, 0x22, 0x1A, 0x83, 0x22, 0x39, 0x32, 0xB8, 0x6C, 0x51, 0xCE, 0xE6, 0x11, 0xEF, 0xE2, 0x0C, 0xE7, 0xE1, 0x11, 0xEF, 0xE2, 0x0D, 0xEF, 0xE3, 0x04, 0xEF, 0xE4, 0x81, 0xEF, 0xC5, 0xAE, 0x2B, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xB8, 0xAE, 0x0C, 0x04, 0xF7, 0xE5, 0x82, 0xEF, 0xE6, 0xC6, 0xAA, 0x3A, 0xB8, 0x03, 0x22, 0x1A, 0x81, 0x43, 0x17, 0xBE, 0x8A, 0x0A, 0xF7, 0xE5, 0x80, 0xEF, 0xE4, 0x04, 0xEF, 0xE2, 0x82, 0xDF, 0x84, 0x95, 0x6C, 0x2A, 0x59, 0x15, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x13, 0x00, 0x01, 0x81, 0x31, 0xB0, 0x84, 0x5D, 0x03, 0x8C, 0x7E, 0x81, 0x73, 0xDA, + 0x21, 0x2D, 0x14, 0x00, 0x01, 0x81, 0x21, 0x2E, 0x21, 0xB5, 0x01, 0x22, 0x1A, 0x83, 0x53, 0x77, 0xEF, 0xE6, 0xF7, 0xE5, 0xEF, 0xE3, 0x05, 0xE7, 0xE1, 0x80, 0xE7, 0xE2, 0x01, 0xEF, 0xE2, 0x83, 0xDF, 0xA4, 0x9D, 0x8C, 0x3A, 0xD7, 0x22, 0x3A, 0x0B, 0x22, 0x1A, 0x82, 0x22, 0x39, 0x42, 0xF6, 0x9D, 0xAC, 0x01, 0xEF, 0xE3, 0x83, 0xE7, 0xA4, 0x9D, 0xAC, 0x32, 0xB8, 0x22, 0x3A, 0x0B, 0x22, 0x1A, 0x82, 0x22, 0x39, 0x43, 0x16, 0xAE, 0x0C, 0x0D, 0xF7, 0xE5, 0x81, 0xEF, 0xE5, 0xEF, 0xE3, 0x0F, 0xEF, 0xE2, 0x80, 0xEF, 0xE4, 0x21, 0xF7, 0xE5, 0x81, 0xEF, 0xC6, 0xB6, 0x2C, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xB8, 0xAE, 0x0C, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0xA7, 0x9D, 0x6E, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x79, 0x7C, 0xB1, 0x0C, 0xF7, 0xE5, 0x80, 0xEF, 0xE4, 0x03, 0xEF, 0xE2, 0x82, 0xDF, 0xA3, 0xA5, 0xCB, 0x32, 0x78, 0x14, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x07, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x29, 0x4E, 0x09, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x84, 0x3D, 0x02, 0x8C, 0x7E, 0x81, 0x8C, 0x5E, 0x73, 0x99, 0x15, 0x00, 0x01, 0x81, 0x21, 0x2E, 0x21, 0xD6, 0x01, 0x22, 0x1A, 0x82, 0x5B, 0x97, 0xF7, 0xE5, 0xEF, 0xE3, 0x02, 0xEF, 0xE2, 0x01, 0xE7, 0xE1, 0x80, 0xEF, 0xE2, 0x02, 0xF7, 0xE5, 0x82, 0xE7, 0x87, 0x8D, 0x0F, 0x2A, 0x59, 0x0F, 0x22, 0x1A, 0x84, 0x3A, 0xB9, 0x8D, 0x13, 0xE7, 0x6C, 0x8C, 0xF2, 0x2A, 0x59, 0x0F, 0x22, 0x1A, 0x82, 0x3A, 0xD8, 0x95, 0x6E, 0xF7, 0xE6, 0x0A, 0xF7, 0xE5, 0x80, 0xEF, 0xE4, 0x12, 0xEF, 0xE2, 0x80, 0xEF, 0xE4, 0x20, 0xF7, 0xE5, + 0x81, 0xEF, 0xC6, 0xB6, 0x2C, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD7, 0xC6, 0xAA, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x87, 0x8D, 0x0F, 0x04, 0x22, 0x1A, 0x81, 0x22, 0x3A, 0x5B, 0xD4, 0x0E, 0xF7, 0xE5, 0x80, 0xEF, 0xE4, 0x02, 0xEF, 0xE2, 0x82, 0xE7, 0xA3, 0xAE, 0x0A, 0x32, 0xB8, 0x13, 0x22, 0x1A, 0x81, 0x21, 0xD7, 0x21, 0x0D, 0x03, 0x00, 0x01, 0x85, 0x29, 0x6E, 0x4A, 0x53, 0x6B, 0x58, 0x7B, 0xFC, 0x7B, 0xDB, 0x39, 0xD0, 0x08, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x84, 0x3D, 0x02, 0x8C, 0x7E, 0x82, 0x8C, 0x5D, 0x6B, 0x58, 0x21, 0x2D, 0x14, 0x00, 0x01, 0x81, 0x21, 0x2E, 0x21, 0xD7, 0x01, 0x22, 0x1A, 0x81, 0x63, 0xD6, 0xEF, 0xE4, 0x06, 0xEF, 0xE2, 0x01, 0xF7, 0xE5, 0x82, 0xE7, 0x87, 0x8D, 0x0F, 0x2A, 0x59, 0x11, 0x22, 0x1A, 0x82, 0x32, 0x79, 0x53, 0x77, 0x2A, 0x5A, 0x11, 0x22, 0x1A, 0x81, 0x3A, 0xB8, 0x9D, 0x8E, 0x09, 0xF7, 0xE5, 0x80, 0xEF, 0xE3, 0x14, 0xEF, 0xE2, 0x80, 0xEF, 0xE3, 0x1F, 0xF7, 0xE5, 0x81, 0xEF, 0xC6, 0xB6, 0x2C, 0x05, 0x22, 0x1A, 0x81, 0x42, 0xF7, 0xCE, 0xE9, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x87, 0x84, 0xF0, 0x04, 0x22, 0x1A, 0x81, 0x22, 0x3A, 0x53, 0x95, 0x10, 0xF7, 0xE5, 0x80, 0xEF, 0xE3, 0x01, 0xEF, 0xE2, 0x82, 0xE7, 0xC3, 0xB6, 0x49, 0x3A, 0xF7, 0x12, 0x22, 0x1A, 0x8B, 0x21, 0xD8, 0x21, 0x0D, 0x00, 0x01, 0x21, 0x2D, 0x31, 0x8F, 0x5A, 0xF6, 0x7B, 0xFC, 0x84, 0x3D, 0x8C, 0x5D, 0x8C, 0x7E, 0x84, 0x1C, 0x4A, 0x73, 0x08, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x84, 0x3D, 0x02, 0x8C, 0x7E, 0x83, 0x84, 0x3D, 0x6B, 0x79, 0x5A, 0xD6, + 0x39, 0xD0, 0x13, 0x00, 0x01, 0x84, 0x21, 0x2E, 0x21, 0xD8, 0x22, 0x1A, 0x22, 0x3A, 0x63, 0xF5, 0x06, 0xEF, 0xE2, 0x84, 0xEF, 0xE3, 0xF7, 0xE5, 0xEF, 0xC6, 0xAD, 0xEC, 0x2A, 0x59, 0x28, 0x22, 0x1A, 0x81, 0x42, 0xF7, 0xBE, 0x6B, 0x07, 0xF7, 0xE5, 0x17, 0xEF, 0xE2, 0x1F, 0xF7, 0xE5, 0x81, 0xEF, 0xC6, 0xB6, 0x2C, 0x05, 0x22, 0x1A, 0x81, 0x42, 0xF7, 0xCE, 0xE9, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x67, 0x84, 0xD0, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x75, 0x11, 0xF7, 0xE5, 0x80, 0xEF, 0xE4, 0x01, 0xEF, 0xE2, 0x82, 0xE7, 0xC3, 0xBE, 0x88, 0x43, 0x16, 0x11, 0x22, 0x1A, 0x85, 0x21, 0xD8, 0x21, 0x0D, 0x29, 0x4E, 0x52, 0xB5, 0x84, 0x1C, 0x8C, 0x5D, 0x03, 0x8C, 0x7E, 0x81, 0x84, 0x1C, 0x52, 0x94, 0x08, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x84, 0x3D, 0x02, 0x8C, 0x7E, 0x84, 0x84, 0x3D, 0x6B, 0x58, 0x7B, 0xFB, 0x6B, 0x79, 0x21, 0x2D, 0x12, 0x00, 0x01, 0x84, 0x21, 0x2E, 0x21, 0xF8, 0x22, 0x1A, 0x22, 0x3A, 0x6C, 0x33, 0x06, 0xEF, 0xE2, 0x83, 0xEF, 0xE3, 0xF7, 0xE5, 0xD7, 0x09, 0x4B, 0x36, 0x09, 0x22, 0x1A, 0x81, 0x2A, 0x5A, 0x2A, 0x59, 0x11, 0x22, 0x1A, 0x82, 0x22, 0x3A, 0x2A, 0x79, 0x22, 0x3A, 0x08, 0x22, 0x1A, 0x83, 0x22, 0x3A, 0x5B, 0xB6, 0xEF, 0xA9, 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x02, 0xF7, 0xE5, 0x18, 0xEF, 0xE2, 0x80, 0xEF, 0xE3, 0x03, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xF7, 0xE7, 0xF7, 0xE8, 0x17, 0xF7, 0xE9, 0x81, 0xEF, 0xCA, 0xB6, 0x2E, 0x05, 0x22, 0x1A, 0x81, 0x42, 0xF8, 0xCE, 0xEC, 0x03, 0xF7, 0xE9, 0x82, 0xF7, 0xE8, 0xE7, 0x69, 0x84, 0xD1, + 0x05, 0x22, 0x1A, 0x80, 0x53, 0x76, 0x0E, 0xF7, 0xE8, 0x01, 0xF7, 0xE7, 0x82, 0xF7, 0xE6, 0xF7, 0xE5, 0xEF, 0xE4, 0x01, 0xEF, 0xE2, 0x82, 0xE7, 0xC3, 0xBE, 0xA7, 0x4B, 0x55, 0x10, 0x22, 0x1A, 0x83, 0x21, 0xD8, 0x5A, 0xD6, 0x6B, 0x58, 0x8C, 0x3D, 0x05, 0x8C, 0x5E, 0x81, 0x84, 0x1D, 0x52, 0xB5, 0x08, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x8C, 0x3D, 0x02, 0x8C, 0x5E, 0x84, 0x84, 0x1C, 0x6B, 0x38, 0x8C, 0x5E, 0x83, 0xFC, 0x4A, 0x33, 0x12, 0x00, 0x01, 0x84, 0x21, 0x2F, 0x21, 0xF8, 0x22, 0x1A, 0x2A, 0x39, 0x74, 0x52, 0x06, 0xEF, 0xE2, 0x82, 0xEF, 0xE3, 0xE7, 0xA6, 0x9D, 0x8E, 0x07, 0x22, 0x1A, 0x87, 0x3A, 0xB8, 0x8C, 0xF1, 0xC6, 0xAF, 0xE7, 0x8E, 0xEF, 0x8E, 0xDF, 0x2F, 0xA5, 0xB2, 0x53, 0x77, 0x0B, 0x22, 0x1A, 0x88, 0x2A, 0x59, 0x6C, 0x16, 0xBE, 0x31, 0xE7, 0x6F, 0xEF, 0x8E, 0xE7, 0x6E, 0xC6, 0x90, 0x7C, 0x95, 0x32, 0x79, 0x06, 0x22, 0x1A, 0x81, 0x3A, 0xB9, 0xA5, 0xB2, 0x02, 0xFF, 0xED, 0x82, 0xF7, 0xEC, 0xF7, 0xEB, 0xF7, 0xE8, 0x01, 0xEF, 0xE3, 0x15, 0xEF, 0xE2, 0x84, 0xEF, 0xE3, 0xEF, 0xE4, 0xF7, 0xEA, 0xF7, 0xEB, 0xF7, 0xEC, 0x1B, 0xFF, 0xED, 0x81, 0xF7, 0xCE, 0xB6, 0x31, 0x05, 0x22, 0x1A, 0x81, 0x42, 0xF8, 0xD6, 0xF0, 0x04, 0xFF, 0xED, 0x81, 0xEF, 0xAE, 0xB6, 0x11, 0x04, 0x74, 0x35, 0x81, 0x74, 0x55, 0x95, 0x13, 0x10, 0xFF, 0xED, 0x80, 0xF7, 0xEB, 0x01, 0xF7, 0xE5, 0x80, 0xEF, 0xE4, 0x01, 0xEF, 0xE2, 0x82, 0xE7, 0xE2, 0xC6, 0xE6, 0x5B, 0xB3, 0x0F, 0x22, 0x1A, 0x82, 0x21, 0xF8, 0x31, 0x8F, 0x84, 0x1C, 0x06, 0x8C, 0x5E, 0x81, + 0x84, 0x3D, 0x5A, 0xD5, 0x08, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x8C, 0x3D, 0x02, 0x8C, 0x5E, 0x85, 0x84, 0x1C, 0x63, 0x17, 0x8C, 0x5E, 0x8C, 0x5D, 0x6B, 0x79, 0x21, 0x2D, 0x11, 0x00, 0x01, 0x84, 0x21, 0x2F, 0x21, 0xF9, 0x22, 0x1A, 0x2A, 0x59, 0x74, 0x71, 0x06, 0xEF, 0xE2, 0x82, 0xEF, 0xE3, 0xD7, 0x28, 0x53, 0x75, 0x05, 0x22, 0x1A, 0x85, 0x2A, 0x39, 0x5B, 0xB4, 0xD7, 0x09, 0xEF, 0xC6, 0xEF, 0xE6, 0xF7, 0xE9, 0x01, 0xF7, 0xED, 0x83, 0xF7, 0xCE, 0xDF, 0x4F, 0x8C, 0xF4, 0x22, 0x3A, 0x08, 0x22, 0x1A, 0x84, 0x3A, 0xB9, 0xAD, 0xD2, 0xEF, 0xAE, 0xF7, 0xCD, 0xF7, 0xED, 0x01, 0xFF, 0xED, 0x83, 0xF7, 0xED, 0xEF, 0xAE, 0xC6, 0x71, 0x4B, 0x38, 0x05, 0x22, 0x1A, 0x82, 0x22, 0x3A, 0x5B, 0xB6, 0xF7, 0xED, 0x02, 0xFF, 0xED, 0x80, 0xF7, 0xEC, 0x05, 0xF7, 0xE5, 0x81, 0xEF, 0xE5, 0xEF, 0xE4, 0x01, 0xEF, 0xE3, 0x07, 0xEF, 0xE2, 0x80, 0xEF, 0xE3, 0x01, 0xEF, 0xE4, 0x04, 0xF7, 0xE5, 0x80, 0xF7, 0xE7, 0x1E, 0xFF, 0xED, 0x81, 0xF7, 0xCE, 0xB6, 0x31, 0x05, 0x22, 0x1A, 0x81, 0x42, 0xF8, 0xD6, 0xF0, 0x04, 0xFF, 0xED, 0x81, 0xF7, 0xED, 0xF7, 0xCD, 0x05, 0xEF, 0xAE, 0x80, 0xF7, 0xCE, 0x10, 0xFF, 0xED, 0x80, 0xF7, 0xEC, 0x02, 0xF7, 0xE5, 0x80, 0xEF, 0xE4, 0x02, 0xEF, 0xE2, 0x81, 0xCF, 0x06, 0x64, 0x12, 0x0E, 0x22, 0x1A, 0x80, 0x21, 0xF8, 0x01, 0x00, 0x01, 0x81, 0x39, 0xF1, 0x73, 0x79, 0x04, 0x8C, 0x5E, 0x81, 0x8C, 0x3D, 0x5A, 0xF6, 0x08, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x8C, 0x3D, 0x02, 0x8C, 0x5E, 0x81, 0x84, 0x1C, 0x63, 0x17, 0x01, 0x8C, 0x5E, 0x81, + 0x83, 0xFC, 0x42, 0x11, 0x11, 0x00, 0x01, 0x84, 0x21, 0x2F, 0x21, 0xF9, 0x22, 0x1A, 0x2A, 0x59, 0x74, 0x91, 0x06, 0xEF, 0xE2, 0x82, 0xEF, 0xE3, 0xBE, 0x8A, 0x22, 0x3A, 0x04, 0x22, 0x1A, 0x83, 0x22, 0x3A, 0x5B, 0x95, 0xDF, 0x4A, 0xEF, 0xE6, 0x02, 0xF7, 0xE5, 0x85, 0xF7, 0xE6, 0xF7, 0xE9, 0xFF, 0xED, 0xF7, 0xED, 0xE7, 0x4F, 0x84, 0xB4, 0x07, 0x22, 0x1A, 0x82, 0x32, 0x99, 0x9D, 0x53, 0xF7, 0xCD, 0x06, 0xFF, 0xED, 0x82, 0xF7, 0xCD, 0xC6, 0x70, 0x3A, 0xB9, 0x05, 0x22, 0x1A, 0x81, 0x42, 0xF8, 0xD6, 0xF0, 0x02, 0xFF, 0xED, 0x80, 0xF7, 0xEC, 0x08, 0xF7, 0xE5, 0x86, 0xF7, 0xE6, 0xEF, 0xC6, 0xE7, 0x87, 0xE7, 0x86, 0xE7, 0xA5, 0xF7, 0xE7, 0xF7, 0xE8, 0x01, 0xF7, 0xE6, 0x06, 0xF7, 0xE5, 0x81, 0xF7, 0xE6, 0xF7, 0xEB, 0x0E, 0xFF, 0xED, 0x84, 0xF7, 0xED, 0xF7, 0xCD, 0xEF, 0x8E, 0xEF, 0xAE, 0xF7, 0xCE, 0x0A, 0xFF, 0xED, 0x81, 0xF7, 0xCE, 0xB6, 0x31, 0x05, 0x22, 0x1A, 0x81, 0x42, 0xF8, 0xCE, 0xCE, 0x18, 0xF7, 0xEB, 0x01, 0xF7, 0xEC, 0x80, 0xF7, 0xED, 0x01, 0xFF, 0xED, 0x86, 0xF7, 0xED, 0xF7, 0xCD, 0xE7, 0x87, 0xDF, 0x67, 0xEF, 0xC6, 0xF7, 0xE5, 0xEF, 0xE4, 0x02, 0xEF, 0xE2, 0x81, 0xCF, 0x25, 0x74, 0x71, 0x0D, 0x22, 0x1A, 0x80, 0x21, 0xF8, 0x02, 0x00, 0x01, 0x81, 0x39, 0xD0, 0x8C, 0x3D, 0x03, 0x94, 0x5E, 0x81, 0x8C, 0x3D, 0x63, 0x17, 0x08, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x8C, 0x3D, 0x02, 0x94, 0x5E, 0x81, 0x84, 0x1C, 0x6B, 0x38, 0x01, 0x94, 0x5E, 0x81, 0x8C, 0x3D, 0x63, 0x17, 0x11, 0x00, 0x01, 0x84, 0x21, 0x2F, 0x21, 0xF9, 0x22, 0x1A, + 0x2A, 0x59, 0x74, 0x91, 0x04, 0xEF, 0xE2, 0x01, 0xE7, 0xE1, 0x81, 0xE7, 0xA3, 0xA5, 0xAD, 0x05, 0x22, 0x1A, 0x82, 0x3A, 0xD8, 0xB6, 0x2C, 0xF7, 0xE6, 0x01, 0xF7, 0xE5, 0x80, 0xEF, 0xE4, 0x01, 0xEF, 0xE3, 0x01, 0xEF, 0xE2, 0x83, 0xEF, 0xE3, 0xEF, 0xE5, 0xCE, 0xE9, 0x42, 0xF7, 0x05, 0x22, 0x1A, 0x84, 0x22, 0x3A, 0x53, 0x95, 0xE7, 0xA8, 0xF7, 0xEA, 0xF7, 0xEC, 0x06, 0xFF, 0xED, 0x81, 0xEF, 0xAE, 0xA5, 0x92, 0x05, 0x22, 0x1A, 0x81, 0x32, 0xB9, 0xA5, 0xB2, 0x02, 0xFF, 0xED, 0x81, 0xF7, 0xEC, 0xF7, 0xE6, 0x03, 0xF7, 0xE5, 0x8D, 0xEF, 0xC6, 0xC6, 0xCA, 0x8D, 0x10, 0x5B, 0xB4, 0x3A, 0xD7, 0x32, 0x79, 0x2A, 0x79, 0x32, 0x79, 0x32, 0x98, 0x43, 0x18, 0x6C, 0x16, 0xA5, 0xB2, 0xE7, 0x6E, 0xF7, 0xE9, 0x05, 0xF7, 0xE5, 0x80, 0xF7, 0xE7, 0x0C, 0xFF, 0xED, 0x84, 0xEF, 0xAE, 0xB6, 0x11, 0x74, 0x55, 0x4B, 0x18, 0x32, 0x99, 0x02, 0x32, 0x79, 0x84, 0x3A, 0xB9, 0x53, 0x77, 0x84, 0xD4, 0xCE, 0xB0, 0xF7, 0xED, 0x03, 0xFF, 0xED, 0x83, 0xF7, 0xEC, 0xF7, 0xEB, 0xEF, 0xC9, 0xB6, 0x2D, 0x05, 0x22, 0x1A, 0x81, 0x42, 0xF7, 0xCE, 0xC9, 0x04, 0xF7, 0xE5, 0x81, 0xEF, 0xC6, 0xCE, 0xC9, 0x05, 0xA5, 0xCD, 0x80, 0xB6, 0x4B, 0x0B, 0xF7, 0xE5, 0x84, 0xF7, 0xE6, 0xE7, 0x67, 0xA5, 0xAD, 0x64, 0x13, 0x43, 0x17, 0x01, 0x32, 0x79, 0x89, 0x2A, 0x79, 0x32, 0x79, 0x32, 0xB8, 0x53, 0x75, 0x84, 0xD0, 0xB6, 0x49, 0xE7, 0xE2, 0xEF, 0xE2, 0xD7, 0x45, 0x7C, 0xB1, 0x0C, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x02, 0x00, 0x01, 0x81, 0x31, 0x6F, 0x73, 0x79, 0x03, 0x94, 0x5E, 0x81, + 0x8C, 0x3D, 0x6B, 0x38, 0x08, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x8C, 0x3D, 0x02, 0x94, 0x5E, 0x81, 0x83, 0xFC, 0x6B, 0x58, 0x02, 0x94, 0x5E, 0x81, 0x7B, 0xDB, 0x29, 0x6E, 0x10, 0x00, 0x01, 0x84, 0x21, 0x4F, 0x22, 0x19, 0x22, 0x1A, 0x2A, 0x59, 0x7C, 0x91, 0x02, 0xEF, 0xE2, 0x03, 0xE7, 0xE1, 0x81, 0xDF, 0x83, 0x8D, 0x0E, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x16, 0xE7, 0xA5, 0x01, 0xEF, 0xE3, 0x07, 0xEF, 0xE2, 0x81, 0xDF, 0x84, 0x8D, 0x0F, 0x05, 0x22, 0x1A, 0x81, 0x2A, 0x79, 0x84, 0xD0, 0x01, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xF7, 0xE7, 0xF7, 0xEA, 0x04, 0xFF, 0xED, 0x82, 0xF7, 0xED, 0xD7, 0x0F, 0x4B, 0x57, 0x04, 0x22, 0x1A, 0x81, 0x32, 0x79, 0x8C, 0xF4, 0x03, 0xFF, 0xED, 0x80, 0xF7, 0xEB, 0x01, 0xF7, 0xE5, 0x85, 0xEF, 0xC6, 0xBE, 0x6B, 0x5B, 0xD4, 0x2A, 0x79, 0x2A, 0x59, 0x22, 0x3A, 0x05, 0x22, 0x1A, 0x85, 0x22, 0x3A, 0x2A, 0x59, 0x3A, 0xD8, 0x84, 0xD4, 0xDF, 0x4D, 0xF7, 0xE9, 0x01, 0xF7, 0xE5, 0x80, 0xF7, 0xE6, 0x01, 0xF7, 0xEB, 0x0A, 0xFF, 0xED, 0x84, 0xF7, 0xCE, 0xB6, 0x11, 0x4B, 0x57, 0x2A, 0x59, 0x22, 0x3A, 0x06, 0x22, 0x1A, 0x85, 0x2A, 0x3A, 0x32, 0x79, 0x5B, 0xB5, 0xC6, 0x8C, 0xF7, 0xE7, 0xF7, 0xE6, 0x02, 0xF7, 0xE5, 0x81, 0xEF, 0xC6, 0xB6, 0x2C, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xF7, 0xCE, 0xC9, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x87, 0x8C, 0xF0, 0x05, 0x2A, 0x59, 0x80, 0x5B, 0xB5, 0x0A, 0xF7, 0xE5, 0x84, 0xE7, 0x87, 0x95, 0x4F, 0x3A, 0xF7, 0x2A, 0x59, 0x22, 0x3A, 0x06, 0x22, 0x1A, 0x87, 0x2A, 0x39, 0x32, 0x78, 0x5B, 0xB3, 0xB6, + 0x49, 0xEF, 0xE2, 0xDF, 0x67, 0x8D, 0x11, 0x22, 0x3A, 0x0A, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x02, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x39, 0xF1, 0x84, 0x1C, 0x02, 0x94, 0x5E, 0x81, 0x8C, 0x3D, 0x6B, 0x59, 0x08, 0x00, 0x01, 0x81, 0x31, 0xB0, 0x8C, 0x3D, 0x01, 0x94, 0x5E, 0x87, 0x8C, 0x3D, 0x73, 0x79, 0x73, 0x9A, 0x94, 0x5E, 0x84, 0x1C, 0x5A, 0xD6, 0x62, 0xF6, 0x42, 0x12, 0x10, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x7C, 0x91, 0x01, 0xEF, 0xE2, 0x04, 0xE7, 0xE1, 0x81, 0xD7, 0x83, 0x84, 0xCF, 0x05, 0x22, 0x1A, 0x80, 0x4B, 0x55, 0x0A, 0xEF, 0xE2, 0x81, 0xE7, 0xC3, 0xA5, 0xEA, 0x05, 0x22, 0x1A, 0x81, 0x32, 0x98, 0x9D, 0x8D, 0x02, 0xEF, 0xE4, 0x03, 0xEF, 0xE3, 0x80, 0xF7, 0xE5, 0x02, 0xF7, 0xE6, 0x81, 0xDF, 0x48, 0x5B, 0xD4, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x7C, 0x92, 0x03, 0xF7, 0xE6, 0x85, 0xF7, 0xE5, 0xEF, 0xE2, 0xDF, 0x64, 0x7C, 0xAF, 0x2A, 0x79, 0x22, 0x3A, 0x0B, 0x22, 0x1A, 0x82, 0x2A, 0x59, 0x43, 0x16, 0xA5, 0xCD, 0x0E, 0xF7, 0xE6, 0x82, 0xDF, 0x48, 0x74, 0x72, 0x2A, 0x59, 0x0B, 0x22, 0x1A, 0x83, 0x22, 0x3A, 0x3A, 0xB8, 0x84, 0xD0, 0xEF, 0xC6, 0x02, 0xF7, 0xE5, 0x81, 0xEF, 0xC6, 0xB6, 0x2C, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xF7, 0xCE, 0xC9, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x67, 0x84, 0xD0, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x75, 0x08, 0xF7, 0xE5, 0x83, 0xEF, 0xE6, 0xCE, 0xE9, 0x5B, 0xB4, 0x2A, 0x59, 0x0B, 0x22, 0x1A, 0x86, 0x22, 0x3A, 0x3A, 0xD7, 0x8D, 0x4D, 0xEF, 0xC7, 0xE7, 0x8E, 0x9D, 0x73, 0x2A, + 0x5A, 0x09, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x03, 0x00, 0x01, 0x81, 0x29, 0x6E, 0x6B, 0x38, 0x02, 0x94, 0x5E, 0x81, 0x94, 0x3E, 0x73, 0x79, 0x08, 0x00, 0x01, 0x81, 0x31, 0xB0, 0x94, 0x3E, 0x01, 0x94, 0x5E, 0x85, 0x8C, 0x1C, 0x6B, 0x17, 0x83, 0xDB, 0x94, 0x5E, 0x83, 0xDB, 0x31, 0x8F, 0x01, 0x21, 0x2D, 0x10, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x83, 0x2A, 0x79, 0x7C, 0xB1, 0xEF, 0xE4, 0xEF, 0xE2, 0x04, 0xE7, 0xE1, 0x81, 0xDF, 0x64, 0x7C, 0xB0, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x74, 0x0A, 0xEF, 0xE2, 0x81, 0xE7, 0xC3, 0xAE, 0x0A, 0x05, 0x22, 0x1A, 0x81, 0x32, 0xB8, 0xA5, 0xCB, 0x07, 0xEF, 0xE2, 0x84, 0xEF, 0xE3, 0xEF, 0xE4, 0xF7, 0xE5, 0xDF, 0x48, 0x63, 0xD4, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x6C, 0x52, 0x03, 0xF7, 0xE5, 0x83, 0xF7, 0xE6, 0xD7, 0x48, 0x6C, 0x32, 0x22, 0x39, 0x0F, 0x22, 0x1A, 0x82, 0x32, 0xB8, 0x84, 0xF0, 0xEF, 0xC6, 0x0A, 0xF7, 0xE5, 0x83, 0xF7, 0xE6, 0xD7, 0x28, 0x63, 0xF4, 0x22, 0x39, 0x0E, 0x22, 0x1A, 0x82, 0x32, 0x79, 0x74, 0x72, 0xE7, 0xA7, 0x01, 0xF7, 0xE5, 0x81, 0xEF, 0xC6, 0xB6, 0x2C, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xF7, 0xC6, 0xCA, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x67, 0x84, 0xD0, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x75, 0x07, 0xF7, 0xE5, 0x83, 0xEF, 0xE6, 0xC6, 0xCA, 0x43, 0x36, 0x22, 0x3A, 0x0E, 0x22, 0x1A, 0x85, 0x32, 0x98, 0x7C, 0xB1, 0xF7, 0xCD, 0xEF, 0x8E, 0xA5, 0xB2, 0x2A, 0x79, 0x08, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x03, 0x00, 0x01, 0x81, 0x29, 0x4E, 0x5A, 0xB5, 0x03, 0x94, 0x5E, 0x80, + 0x7B, 0x9A, 0x08, 0x00, 0x01, 0x80, 0x39, 0xB0, 0x02, 0x94, 0x5E, 0x85, 0x83, 0xFC, 0x5A, 0x95, 0x8C, 0x1D, 0x94, 0x5E, 0x7B, 0x9A, 0x21, 0x0D, 0x12, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x82, 0x2A, 0x79, 0x7C, 0xB1, 0xF7, 0xE5, 0x05, 0xE7, 0xE1, 0x81, 0xD7, 0x64, 0x74, 0x91, 0x04, 0x22, 0x1A, 0x81, 0x22, 0x3A, 0x53, 0xB4, 0x0A, 0xEF, 0xE2, 0x81, 0xE7, 0xC3, 0xAE, 0x0A, 0x05, 0x22, 0x1A, 0x81, 0x32, 0xB7, 0xA5, 0xEA, 0x09, 0xEF, 0xE2, 0x82, 0xEF, 0xE3, 0xD7, 0x47, 0x63, 0xD4, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x6C, 0x33, 0x03, 0xF7, 0xE5, 0x82, 0xDF, 0x48, 0x63, 0xF3, 0x22, 0x3A, 0x11, 0x22, 0x1A, 0x82, 0x32, 0x98, 0x84, 0xD1, 0xEF, 0xE6, 0x09, 0xF7, 0xE5, 0x82, 0xDF, 0x48, 0x63, 0xF4, 0x22, 0x3A, 0x10, 0x22, 0x1A, 0x85, 0x32, 0x79, 0x7C, 0xB1, 0xF7, 0xE6, 0xF7, 0xE5, 0xEF, 0xC6, 0xB6, 0x2C, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xF7, 0xC6, 0xCA, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x67, 0x84, 0xD0, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x75, 0x06, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xD7, 0x09, 0x4B, 0x56, 0x11, 0x22, 0x1A, 0x85, 0x32, 0x98, 0x95, 0x32, 0xF7, 0xED, 0xEF, 0xAE, 0xAD, 0xF2, 0x32, 0x99, 0x07, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x03, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x4A, 0x53, 0x03, 0x94, 0x5E, 0x81, 0x7B, 0xBB, 0x21, 0x2D, 0x07, 0x00, 0x01, 0x80, 0x39, 0xB0, 0x02, 0x94, 0x5E, 0x81, 0x83, 0xDB, 0x4A, 0x32, 0x01, 0x8C, 0x3D, 0x80, 0x6B, 0x38, 0x13, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x83, 0x2A, 0x79, 0x7C, 0xB1, + 0xF7, 0xE6, 0xEF, 0xE2, 0x03, 0xE7, 0xE1, 0x82, 0xE7, 0xE2, 0xDF, 0x66, 0x74, 0x72, 0x04, 0x22, 0x1A, 0x81, 0x22, 0x39, 0x5B, 0xD3, 0x0A, 0xEF, 0xE2, 0x81, 0xE7, 0xC3, 0xAE, 0x0A, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xB7, 0xAE, 0x0A, 0x0A, 0xEF, 0xE2, 0x81, 0xD7, 0x45, 0x63, 0xF3, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x6C, 0x33, 0x02, 0xF7, 0xE5, 0x82, 0xDF, 0x67, 0x7C, 0x91, 0x22, 0x3A, 0x13, 0x22, 0x1A, 0x81, 0x32, 0xB8, 0x95, 0x6E, 0x08, 0xF7, 0xE5, 0x82, 0xE7, 0x87, 0x8D, 0x2F, 0x22, 0x3A, 0x12, 0x22, 0x1A, 0x84, 0x3A, 0xD7, 0xAE, 0x0C, 0xF7, 0xE5, 0xEF, 0xC6, 0xB6, 0x2C, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xF7, 0xC6, 0xAA, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x67, 0x84, 0xD0, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x75, 0x06, 0xF7, 0xE5, 0x81, 0xDF, 0x67, 0x74, 0x72, 0x13, 0x22, 0x1A, 0x85, 0x42, 0xF7, 0xC6, 0x90, 0xF7, 0xED, 0xEF, 0xAE, 0xB6, 0x31, 0x3A, 0xB9, 0x06, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x04, 0x00, 0x01, 0x81, 0x31, 0x8F, 0x7B, 0x9A, 0x02, 0x94, 0x5E, 0x81, 0x83, 0xDB, 0x31, 0x8F, 0x07, 0x00, 0x01, 0x80, 0x39, 0xD0, 0x02, 0x94, 0x5E, 0x84, 0x7B, 0x9A, 0x39, 0xD0, 0x94, 0x5E, 0x8C, 0x1D, 0x5A, 0xD6, 0x13, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x85, 0x2A, 0x79, 0x84, 0xB4, 0xF7, 0xE9, 0xEF, 0xE3, 0xEF, 0xE2, 0xEF, 0xE3, 0x01, 0xEF, 0xE4, 0x82, 0xEF, 0xE3, 0xDF, 0x68, 0x6C, 0x52, 0x04, 0x22, 0x1A, 0x83, 0x22, 0x39, 0x63, 0xF4, 0xF7, 0xE5, 0xEF, 0xE3, 0x08, 0xEF, 0xE2, 0x81, 0xE7, 0xC3, 0xAE, 0x0A, 0x05, 0x22, 0x1A, 0x81, + 0x3A, 0xD7, 0xB6, 0x49, 0x0A, 0xEF, 0xE2, 0x81, 0xD7, 0x45, 0x63, 0xF3, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x6C, 0x33, 0x01, 0xF7, 0xE5, 0x82, 0xEF, 0xC6, 0xAD, 0xED, 0x2A, 0x59, 0x15, 0x22, 0x1A, 0x81, 0x43, 0x17, 0xC6, 0xCA, 0x06, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xCE, 0xC9, 0x32, 0xB8, 0x13, 0x22, 0x1A, 0x84, 0x22, 0x3A, 0x5B, 0xB4, 0xEF, 0xE6, 0xEF, 0xC6, 0xB6, 0x2C, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xF7, 0xC6, 0xAA, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x67, 0x84, 0xD0, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x75, 0x05, 0xF7, 0xE5, 0x82, 0xEF, 0xC6, 0xBE, 0x4B, 0x2A, 0x59, 0x13, 0x22, 0x1A, 0x86, 0x2A, 0x59, 0x6C, 0x16, 0xF7, 0xEC, 0xF7, 0xEB, 0xEF, 0xCB, 0xBE, 0x70, 0x42, 0xF8, 0x05, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x04, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x41, 0xF1, 0x94, 0x3D, 0x01, 0x94, 0x5E, 0x81, 0x83, 0xFC, 0x42, 0x12, 0x07, 0x00, 0x01, 0x80, 0x39, 0xD0, 0x01, 0x94, 0x5E, 0x85, 0x94, 0x3D, 0x6B, 0x38, 0x39, 0xD0, 0x94, 0x5E, 0x8B, 0xFC, 0x52, 0x74, 0x13, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x83, 0x2A, 0x79, 0x84, 0xD4, 0xFF, 0xED, 0xF7, 0xE6, 0x03, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x4E, 0x6C, 0x34, 0x04, 0x22, 0x1A, 0x81, 0x22, 0x39, 0x63, 0xF4, 0x01, 0xF7, 0xE5, 0x81, 0xEF, 0xE4, 0xEF, 0xE3, 0x06, 0xEF, 0xE2, 0x81, 0xE7, 0xC3, 0xAE, 0x0A, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD7, 0xB6, 0x69, 0x0A, 0xEF, 0xE2, 0x81, 0xD7, 0x45, 0x63, 0xF2, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x6C, 0x13, 0x01, 0xF7, 0xE5, 0x81, 0xD7, 0x09, + 0x43, 0x16, 0x07, 0x22, 0x1A, 0x87, 0x3A, 0xB8, 0x84, 0xD0, 0xB6, 0x4B, 0xCE, 0xC9, 0xCE, 0xE9, 0xB6, 0x4B, 0x84, 0xB1, 0x3A, 0xD8, 0x06, 0x22, 0x1A, 0x82, 0x2A, 0x59, 0x64, 0x13, 0xEF, 0xE6, 0x05, 0xF7, 0xE5, 0x81, 0xE7, 0x87, 0x8D, 0x2F, 0x06, 0x22, 0x1A, 0x87, 0x22, 0x3A, 0x43, 0x36, 0x9D, 0x6E, 0xCE, 0xC9, 0xD7, 0x28, 0xC6, 0xAA, 0x8D, 0x0F, 0x3A, 0xD7, 0x06, 0x22, 0x1A, 0x83, 0x3A, 0xF7, 0xBE, 0x8A, 0xEF, 0xC6, 0xB6, 0x2C, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xF7, 0xC6, 0xAA, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x67, 0x84, 0xD0, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x75, 0x05, 0xF7, 0xE5, 0x81, 0xDF, 0x48, 0x6C, 0x33, 0x06, 0x22, 0x1A, 0x87, 0x2A, 0x59, 0x63, 0xF4, 0xA5, 0xEC, 0xBE, 0x88, 0xBE, 0xA8, 0xAE, 0x0A, 0x7C, 0xCF, 0x3A, 0xD7, 0x06, 0x22, 0x1A, 0x81, 0x42, 0xF8, 0xCE, 0xCC, 0x01, 0xF7, 0xE5, 0x82, 0xEF, 0xC8, 0xC6, 0xAE, 0x4B, 0x57, 0x04, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x05, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x8C, 0x1D, 0x01, 0x94, 0x5E, 0x81, 0x8C, 0x1D, 0x5A, 0x95, 0x06, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x41, 0xF1, 0x01, 0x94, 0x5E, 0x85, 0x8C, 0x1D, 0x5A, 0xB5, 0x39, 0xD0, 0x94, 0x5E, 0x83, 0xFC, 0x42, 0x12, 0x13, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x83, 0x2A, 0x79, 0x84, 0xD4, 0xFF, 0xED, 0xF7, 0xE6, 0x03, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x4F, 0x6C, 0x35, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x39, 0x63, 0xF3, 0x03, 0xF7, 0xE5, 0x81, 0xEF, 0xE5, 0xEF, 0xE3, 0x04, 0xEF, 0xE2, 0x81, 0xE7, 0xC3, 0xAE, 0x29, 0x05, 0x22, + 0x1A, 0x81, 0x3A, 0xD7, 0xB6, 0x68, 0x0A, 0xEF, 0xE2, 0x81, 0xD7, 0x45, 0x63, 0xF2, 0x04, 0x22, 0x1A, 0x84, 0x2A, 0x59, 0x6C, 0x13, 0xF7, 0xE5, 0xE7, 0xA7, 0x9D, 0x8E, 0x06, 0x22, 0x1A, 0x83, 0x2A, 0x59, 0x63, 0xF4, 0xD7, 0x09, 0xEF, 0xC6, 0x03, 0xEF, 0xE6, 0x82, 0xEF, 0xA6, 0xCE, 0xC9, 0x5B, 0xD4, 0x06, 0x22, 0x1A, 0x81, 0x3A, 0xD7, 0xBE, 0x6B, 0x05, 0xF7, 0xE5, 0x81, 0xD7, 0x28, 0x53, 0x75, 0x05, 0x22, 0x1A, 0x89, 0x2A, 0x59, 0x74, 0x52, 0xDF, 0x68, 0xEF, 0xC6, 0xEF, 0xE6, 0xF7, 0xE6, 0xEF, 0xE6, 0xEF, 0xC6, 0xCE, 0xC9, 0x5B, 0xB5, 0x05, 0x22, 0x1A, 0x83, 0x32, 0x98, 0x8D, 0x2F, 0xEF, 0xC6, 0xB6, 0x4B, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD7, 0xC6, 0xAA, 0x04, 0xF7, 0xE6, 0x81, 0xE7, 0x67, 0x84, 0xD0, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x75, 0x05, 0xF7, 0xE6, 0x81, 0xCE, 0xC9, 0x32, 0x79, 0x05, 0x22, 0x1A, 0x83, 0x32, 0x98, 0x95, 0x4F, 0xE7, 0xA6, 0xEF, 0xC4, 0x01, 0xEF, 0xE2, 0x83, 0xE7, 0xC3, 0xE7, 0xA3, 0xBE, 0xA7, 0x4B, 0x35, 0x05, 0x22, 0x1A, 0x81, 0x32, 0x98, 0x95, 0x4E, 0x02, 0xF7, 0xE5, 0x82, 0xEF, 0xC6, 0xCE, 0xCC, 0x53, 0x77, 0x03, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x05, 0x00, 0x01, 0x81, 0x31, 0xAF, 0x8C, 0x1D, 0x01, 0x94, 0x5E, 0x81, 0x94, 0x3E, 0x73, 0x38, 0x06, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x42, 0x12, 0x01, 0x94, 0x5E, 0x85, 0x8B, 0xFC, 0x4A, 0x32, 0x39, 0xD0, 0x94, 0x5E, 0x83, 0xDC, 0x39, 0xD0, 0x13, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x83, 0x2A, 0x79, 0x84, 0xD4, 0xFF, 0xED, 0xF7, 0xE6, 0x03, 0xF7, + 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x4F, 0x6C, 0x35, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x39, 0x63, 0xF3, 0x04, 0xF7, 0xE5, 0x80, 0xF7, 0xE6, 0x01, 0xF7, 0xE7, 0x80, 0xEF, 0xE5, 0x01, 0xF7, 0xE5, 0x81, 0xEF, 0xC6, 0xB6, 0x2C, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD7, 0xB6, 0x69, 0x0A, 0xEF, 0xE2, 0x81, 0xD7, 0x45, 0x63, 0xF2, 0x04, 0x22, 0x1A, 0x84, 0x2A, 0x59, 0x64, 0x12, 0xF7, 0xE5, 0xD7, 0x28, 0x53, 0x95, 0x05, 0x22, 0x1A, 0x83, 0x2A, 0x59, 0x63, 0xF3, 0xE7, 0x67, 0xEF, 0xE6, 0x05, 0xF7, 0xE5, 0x82, 0xEF, 0xE6, 0xD7, 0x09, 0x5B, 0xD4, 0x05, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x74, 0x72, 0x04, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xCE, 0xC9, 0x2A, 0x59, 0x04, 0x22, 0x1A, 0x83, 0x2A, 0x59, 0x63, 0xF3, 0xE7, 0x87, 0xF7, 0xE6, 0x04, 0xF7, 0xE5, 0x82, 0xEF, 0xE6, 0xC6, 0xAA, 0x32, 0xB8, 0x04, 0x22, 0x1A, 0x83, 0x2A, 0x39, 0x63, 0xF4, 0xEF, 0xC7, 0xB6, 0x4D, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0x90, 0x04, 0xFF, 0xED, 0x81, 0xE7, 0x6E, 0x84, 0xD4, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x77, 0x04, 0xFF, 0xED, 0x81, 0xF7, 0xCE, 0xB6, 0x31, 0x05, 0x22, 0x1A, 0x83, 0x2A, 0x59, 0x74, 0x74, 0xEF, 0xC9, 0xEF, 0xE4, 0x04, 0xEF, 0xE2, 0x82, 0xE7, 0xC3, 0xAE, 0x29, 0x2A, 0x59, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x64, 0x13, 0x03, 0xF7, 0xE5, 0x82, 0xEF, 0xE7, 0xCE, 0xCF, 0x4B, 0x57, 0x02, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x05, 0x00, 0x01, 0x81, 0x31, 0x8F, 0x7B, 0x9A, 0x02, 0x94, 0x3E, 0x81, 0x83, 0xBB, 0x29, 0x4E, 0x05, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x4A, 0x32, + 0x01, 0x94, 0x3E, 0x85, 0x83, 0xDB, 0x31, 0x8F, 0x31, 0xAF, 0x8C, 0x1D, 0x8B, 0xDC, 0x41, 0xF1, 0x13, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x82, 0x2A, 0x79, 0x84, 0xD4, 0xFF, 0xED, 0x04, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x4F, 0x6C, 0x35, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x39, 0x64, 0x13, 0x01, 0xF7, 0xE5, 0x82, 0xF7, 0xE7, 0xF7, 0xEA, 0xF7, 0xEC, 0x03, 0xFF, 0xED, 0x83, 0xF7, 0xEB, 0xF7, 0xE7, 0xEF, 0xC6, 0xB6, 0x2C, 0x05, 0x22, 0x1A, 0x84, 0x3A, 0xD7, 0xBE, 0x6B, 0xF7, 0xE5, 0xEF, 0xE4, 0xEF, 0xE3, 0x07, 0xEF, 0xE2, 0x81, 0xD7, 0x45, 0x63, 0xF2, 0x04, 0x22, 0x1A, 0x84, 0x2A, 0x59, 0x64, 0x12, 0xEF, 0xE2, 0xC6, 0xA8, 0x2A, 0x59, 0x05, 0x22, 0x1A, 0x82, 0x43, 0x36, 0xD7, 0x08, 0xF7, 0xE6, 0x07, 0xF7, 0xE5, 0x82, 0xEF, 0xE6, 0xC6, 0xAA, 0x3A, 0xD7, 0x05, 0x22, 0x1A, 0x81, 0x4B, 0x36, 0xE7, 0x87, 0x03, 0xF7, 0xE5, 0x81, 0xEF, 0xC6, 0xB6, 0x4B, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xB8, 0xAD, 0xED, 0x07, 0xF7, 0xE5, 0x81, 0xDF, 0x68, 0x74, 0x52, 0x05, 0x22, 0x1A, 0x82, 0x4B, 0x38, 0xEF, 0x8E, 0xBE, 0x51, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0x90, 0x04, 0xFF, 0xED, 0x81, 0xE7, 0x6E, 0x84, 0xD4, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x77, 0x04, 0xFF, 0xED, 0x81, 0xEF, 0xAE, 0x9D, 0x73, 0x05, 0x22, 0x1A, 0x82, 0x3A, 0xF8, 0xCE, 0xAF, 0xF7, 0xE8, 0x01, 0xF7, 0xE5, 0x04, 0xEF, 0xE2, 0x81, 0xD7, 0x45, 0x6C, 0x31, 0x05, 0x22, 0x1A, 0x81, 0x53, 0x74, 0xEF, 0xE4, 0x03, 0xF7, 0xE5, 0x82, 0xF7, 0xC9, 0xC6, 0x90, 0x32, 0x99, 0x01, + 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x05, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x39, 0xB0, 0x7B, 0x9A, 0x01, 0x94, 0x3E, 0x81, 0x8B, 0xDC, 0x42, 0x12, 0x05, 0x00, 0x01, 0x81, 0x29, 0x2D, 0x4A, 0x53, 0x01, 0x94, 0x3E, 0x85, 0x7B, 0x9A, 0x21, 0x2D, 0x29, 0x6E, 0x73, 0x38, 0x94, 0x1D, 0x62, 0xD6, 0x13, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x82, 0x2A, 0x79, 0x84, 0xD4, 0xF7, 0xEC, 0x04, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x4F, 0x6C, 0x35, 0x04, 0x22, 0x1A, 0x83, 0x2A, 0x59, 0x64, 0x13, 0xF7, 0xE6, 0xF7, 0xEC, 0x08, 0xFF, 0xED, 0x81, 0xF7, 0xCE, 0xB6, 0x2F, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD7, 0xBE, 0x6B, 0x04, 0xF7, 0xE6, 0x01, 0xEF, 0xE4, 0x03, 0xEF, 0xE5, 0x81, 0xDF, 0x47, 0x64, 0x13, 0x04, 0x22, 0x1A, 0x83, 0x22, 0x39, 0x64, 0x13, 0xE7, 0xA6, 0x9D, 0xAD, 0x05, 0x22, 0x1A, 0x81, 0x32, 0x99, 0x95, 0x32, 0x0A, 0xF7, 0xEC, 0x81, 0xEF, 0x8C, 0x95, 0x52, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0x8F, 0x03, 0xF7, 0xEC, 0x81, 0xEF, 0xCC, 0xAD, 0xD1, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0xAF, 0x06, 0xF7, 0xEC, 0x82, 0xFF, 0xED, 0xEF, 0xAE, 0x9D, 0x53, 0x05, 0x22, 0x1A, 0x82, 0x43, 0x18, 0xD7, 0x0F, 0xBE, 0x51, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0x90, 0x04, 0xFF, 0xED, 0x81, 0xE7, 0x6E, 0x84, 0xD4, 0x05, 0x22, 0x1A, 0x82, 0x53, 0x76, 0xF7, 0xEA, 0xF7, 0xE8, 0x01, 0xF7, 0xE7, 0x82, 0xF7, 0xE6, 0xE7, 0x88, 0x8C, 0xF0, 0x05, 0x22, 0x1A, 0x81, 0x4B, 0x36, 0xEF, 0xC6, 0x03, 0xF7, 0xE5, 0x80, 0xEF, 0xE3, 0x02, 0xEF, 0xE2, + 0x81, 0xDF, 0x84, 0x85, 0x0E, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x36, 0xEF, 0xC5, 0x03, 0xF7, 0xE5, 0x82, 0xF7, 0xE7, 0xE7, 0x8E, 0x8C, 0xF4, 0x01, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x06, 0x00, 0x01, 0x85, 0x21, 0x2D, 0x41, 0xF1, 0x8B, 0xFD, 0x9C, 0x3E, 0x94, 0x1D, 0x62, 0xF7, 0x05, 0x00, 0x01, 0x8A, 0x29, 0x4D, 0x5A, 0x94, 0x9C, 0x3E, 0x94, 0x1D, 0x6B, 0x18, 0x00, 0x01, 0x21, 0x2D, 0x41, 0xF1, 0x94, 0x1D, 0x83, 0xBB, 0x31, 0x6F, 0x12, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x82, 0x2A, 0x79, 0x84, 0xB4, 0xF7, 0xEA, 0x04, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x4F, 0x6C, 0x36, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x6C, 0x13, 0x0A, 0xF7, 0xE9, 0x81, 0xEF, 0xC9, 0xB6, 0x2E, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xBE, 0x6D, 0x05, 0xF7, 0xE9, 0x80, 0xF7, 0xE8, 0x03, 0xF7, 0xE5, 0x81, 0xDF, 0x48, 0x64, 0x13, 0x04, 0x22, 0x1A, 0x83, 0x2A, 0x39, 0x63, 0xF3, 0xE7, 0x87, 0x84, 0xF0, 0x05, 0x22, 0x1A, 0x81, 0x42, 0xF7, 0xD7, 0x09, 0x0B, 0xF7, 0xE6, 0x81, 0xCE, 0xEA, 0x3A, 0xD8, 0x04, 0x22, 0x1A, 0x81, 0x32, 0xB8, 0xA5, 0xAE, 0x03, 0xF7, 0xE6, 0x81, 0xE7, 0xA7, 0x9D, 0x8E, 0x05, 0x22, 0x1A, 0x81, 0x42, 0xF7, 0xCE, 0xE9, 0x07, 0xF7, 0xE6, 0x81, 0xEF, 0xC7, 0xAD, 0xED, 0x05, 0x22, 0x1A, 0x82, 0x42, 0xF7, 0xC6, 0xCA, 0xBE, 0x4B, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD7, 0xBE, 0x8B, 0x04, 0xF7, 0xE6, 0x81, 0xE7, 0x67, 0x84, 0xD0, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x75, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x67, 0x84, 0xD1, 0x05, 0x22, 0x1A, 0x80, 0x53, + 0x95, 0x05, 0xF7, 0xE5, 0x02, 0xEF, 0xE2, 0x81, 0xDF, 0x84, 0x85, 0x0E, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x36, 0xEF, 0xC5, 0x03, 0xF7, 0xE5, 0x82, 0xF7, 0xE8, 0xF7, 0xED, 0xC6, 0x70, 0x01, 0x22, 0x1A, 0x80, 0x21, 0xF8, 0x07, 0x00, 0x01, 0x81, 0x29, 0x4D, 0x52, 0x74, 0x01, 0x9C, 0x3E, 0x81, 0x83, 0x9B, 0x29, 0x6E, 0x04, 0x00, 0x01, 0x84, 0x29, 0x4E, 0x62, 0xD6, 0x9C, 0x3E, 0x93, 0xFD, 0x5A, 0x95, 0x01, 0x00, 0x01, 0x83, 0x29, 0x4E, 0x5A, 0x95, 0x93, 0xFD, 0x62, 0xB6, 0x12, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x82, 0x2A, 0x79, 0x84, 0xB4, 0xF7, 0xE8, 0x04, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x4F, 0x6C, 0x36, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x6C, 0x13, 0x0A, 0xF7, 0xE5, 0x81, 0xEF, 0xC6, 0xB6, 0x4B, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD7, 0xBE, 0x6B, 0x0A, 0xF7, 0xE5, 0x81, 0xDF, 0x48, 0x64, 0x13, 0x04, 0x22, 0x1A, 0x83, 0x2A, 0x39, 0x63, 0xF4, 0xDF, 0x67, 0x74, 0x72, 0x05, 0x22, 0x1A, 0x81, 0x4B, 0x36, 0xEF, 0xC6, 0x0B, 0xF7, 0xE5, 0x81, 0xD7, 0x08, 0x4B, 0x56, 0x04, 0x22, 0x1A, 0x81, 0x32, 0x98, 0x8D, 0x0F, 0x03, 0xF7, 0xE5, 0x81, 0xE7, 0xA7, 0x9D, 0x6E, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x17, 0xDF, 0x48, 0x07, 0xF7, 0xE5, 0x81, 0xEF, 0xC6, 0xBE, 0x6B, 0x05, 0x2A, 0x79, 0x82, 0x4B, 0x36, 0xC6, 0xCA, 0xBE, 0x6B, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD7, 0xBE, 0x6B, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x67, 0x84, 0xD0, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x75, 0x04, 0xF7, 0xE5, 0x81, 0xDF, 0x67, 0x7C, 0xB1, 0x04, 0x22, 0x1A, 0x81, + 0x22, 0x3A, 0x5B, 0xD4, 0x05, 0xF7, 0xE5, 0x02, 0xEF, 0xE2, 0x81, 0xDF, 0x84, 0x85, 0x0E, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x17, 0xE7, 0xA7, 0x03, 0xF7, 0xE5, 0x85, 0xF7, 0xE9, 0xFF, 0xED, 0xD6, 0xF0, 0x2A, 0x79, 0x22, 0x1A, 0x21, 0xD7, 0x08, 0x00, 0x01, 0x84, 0x31, 0x6E, 0x6B, 0x17, 0x9C, 0x3E, 0x8B, 0xFC, 0x52, 0x74, 0x04, 0x00, 0x01, 0x84, 0x29, 0x6E, 0x6B, 0x18, 0x9C, 0x3E, 0x8B, 0xDC, 0x4A, 0x12, 0x02, 0x00, 0x01, 0x83, 0x31, 0x6F, 0x73, 0x38, 0x83, 0xBB, 0x39, 0xB0, 0x11, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x82, 0x2A, 0x79, 0x84, 0xB4, 0xF7, 0xE8, 0x04, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x4F, 0x6C, 0x36, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x6C, 0x13, 0x0A, 0xF7, 0xE5, 0x81, 0xEF, 0xC6, 0xB6, 0x4B, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD7, 0xBE, 0x6B, 0x0A, 0xF7, 0xE5, 0x81, 0xDF, 0x48, 0x6C, 0x13, 0x04, 0x22, 0x1A, 0x83, 0x22, 0x39, 0x63, 0xF4, 0xDF, 0x68, 0x74, 0x52, 0x05, 0x22, 0x1A, 0x80, 0x4B, 0x56, 0x0C, 0xF7, 0xE5, 0x81, 0xD7, 0x28, 0x4B, 0x56, 0x04, 0x22, 0x1A, 0x81, 0x32, 0x79, 0x8C, 0xF0, 0x03, 0xF7, 0xE5, 0x81, 0xE7, 0xA7, 0x95, 0x6E, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x17, 0xDF, 0x67, 0x08, 0xF7, 0xE5, 0x80, 0xEF, 0xC6, 0x05, 0xE7, 0x87, 0x82, 0xE7, 0xA7, 0xEF, 0xC6, 0xBE, 0x6B, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD7, 0xB6, 0x4B, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x67, 0x84, 0xD0, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x75, 0x04, 0xF7, 0xE5, 0x81, 0xDF, 0x67, 0x74, 0x72, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x39, 0x64, + 0x13, 0x04, 0xF7, 0xE5, 0x80, 0xEF, 0xE5, 0x02, 0xEF, 0xE2, 0x81, 0xDF, 0x84, 0x85, 0x0E, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x17, 0xE7, 0xA8, 0x03, 0xF7, 0xE5, 0x85, 0xF7, 0xEB, 0xFF, 0xED, 0xD7, 0x0F, 0x3A, 0xB9, 0x22, 0x1A, 0x21, 0xD8, 0x09, 0x00, 0x01, 0x84, 0x39, 0xB0, 0x83, 0x9A, 0x9C, 0x3E, 0x7B, 0x9A, 0x29, 0x4E, 0x03, 0x00, 0x01, 0x84, 0x31, 0x6F, 0x7B, 0x59, 0x9C, 0x3E, 0x8B, 0xBB, 0x31, 0x8F, 0x03, 0x00, 0x01, 0x83, 0x31, 0xAF, 0x7B, 0x59, 0x73, 0x38, 0x21, 0x2D, 0x10, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x82, 0x2A, 0x79, 0x7C, 0xB4, 0xF7, 0xE7, 0x04, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x4F, 0x6C, 0x36, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x6C, 0x33, 0x0A, 0xF7, 0xE5, 0x81, 0xEF, 0xC6, 0xB6, 0x4B, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD7, 0xBE, 0x6B, 0x0A, 0xF7, 0xE5, 0x81, 0xDF, 0x48, 0x6C, 0x13, 0x04, 0x22, 0x1A, 0x83, 0x22, 0x39, 0x63, 0xF4, 0xDF, 0x67, 0x74, 0x72, 0x05, 0x22, 0x1A, 0x81, 0x4B, 0x36, 0xEF, 0xE6, 0x0B, 0xF7, 0xE5, 0x81, 0xD7, 0x28, 0x4B, 0x55, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x79, 0x84, 0xF0, 0x03, 0xF7, 0xE5, 0x81, 0xE7, 0x87, 0x95, 0x4F, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x17, 0xE7, 0x87, 0x10, 0xF7, 0xE5, 0x81, 0xEF, 0xE6, 0xBE, 0x6B, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xB8, 0xB6, 0x2C, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x67, 0x84, 0xD0, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x75, 0x04, 0xF7, 0xE5, 0x81, 0xDF, 0x67, 0x74, 0x52, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x6C, 0x13, 0x04, 0xF7, 0xE5, 0x80, 0xEF, + 0xE3, 0x02, 0xEF, 0xE2, 0x81, 0xDF, 0x84, 0x85, 0x0E, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x18, 0xE7, 0x89, 0x02, 0xF7, 0xE5, 0x86, 0xF7, 0xE6, 0xF7, 0xEC, 0xFF, 0xED, 0xD7, 0x0F, 0x3A, 0xB9, 0x22, 0x1A, 0x21, 0xF8, 0x09, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x39, 0xD0, 0x83, 0xBB, 0x93, 0xFD, 0x62, 0xB6, 0x03, 0x00, 0x01, 0x84, 0x31, 0x8F, 0x83, 0x9B, 0x9C, 0x3E, 0x83, 0x9A, 0x21, 0x2D, 0x03, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x39, 0xD0, 0x7B, 0x59, 0x52, 0x54, 0x10, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x82, 0x2A, 0x79, 0x7C, 0x95, 0xF7, 0xE6, 0x04, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x4F, 0x6C, 0x36, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x6C, 0x33, 0x0A, 0xF7, 0xE5, 0x81, 0xEF, 0xC6, 0xB6, 0x4B, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD7, 0xBE, 0x6B, 0x0A, 0xF7, 0xE5, 0x81, 0xDF, 0x48, 0x6C, 0x13, 0x04, 0x22, 0x1A, 0x83, 0x22, 0x39, 0x63, 0xF4, 0xE7, 0x67, 0x84, 0xD0, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x17, 0xDF, 0x67, 0x0B, 0xF7, 0xE5, 0x81, 0xD7, 0x28, 0x53, 0x75, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x79, 0x84, 0xD1, 0x03, 0xF7, 0xE5, 0x81, 0xE7, 0x87, 0x95, 0x4F, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x16, 0xE7, 0x87, 0x10, 0xF7, 0xE5, 0x81, 0xEF, 0xE6, 0xBE, 0x6B, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xB8, 0xAE, 0x0C, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x67, 0x84, 0xD0, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x75, 0x04, 0xF7, 0xE5, 0x81, 0xDF, 0x48, 0x6C, 0x32, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x6C, 0x13, 0x02, 0xF7, 0xE6, 0x81, 0xF7, 0xE5, 0xEF, 0xE3, 0x03, + 0xEF, 0xE2, 0x81, 0xDF, 0x84, 0x85, 0x0E, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x18, 0xE7, 0x89, 0x02, 0xF7, 0xE5, 0x80, 0xF7, 0xE6, 0x01, 0xFF, 0xED, 0x83, 0xD6, 0xEF, 0x32, 0xB9, 0x22, 0x1A, 0x21, 0xD8, 0x0A, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x39, 0xB0, 0x7B, 0x7A, 0x8B, 0xBB, 0x41, 0xF1, 0x02, 0x00, 0x01, 0x83, 0x31, 0x8F, 0x93, 0xDC, 0x94, 0x1D, 0x73, 0x18, 0x05, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x39, 0xB0, 0x6A, 0xF7, 0x31, 0x8F, 0x0F, 0x00, 0x01, 0x80, 0x21, 0x4F, 0x01, 0x22, 0x1A, 0x82, 0x2A, 0x59, 0x7C, 0x95, 0xF7, 0xE6, 0x04, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x4F, 0x6C, 0x35, 0x04, 0x22, 0x1A, 0x82, 0x2A, 0x59, 0x6C, 0x33, 0xF7, 0xE6, 0x01, 0xF7, 0xE7, 0x80, 0xF7, 0xEA, 0x06, 0xF7, 0xEB, 0x81, 0xF7, 0xCB, 0xBE, 0x4F, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0x6F, 0x0A, 0xF7, 0xEB, 0x81, 0xDF, 0x4D, 0x6C, 0x35, 0x04, 0x22, 0x1A, 0x83, 0x22, 0x3A, 0x63, 0xF5, 0xEF, 0xAC, 0x9D, 0x72, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xB8, 0xAD, 0xD0, 0x0B, 0xF7, 0xEB, 0x81, 0xDF, 0x2D, 0x53, 0x77, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x79, 0x84, 0xB3, 0x03, 0xF7, 0xEB, 0x81, 0xEF, 0x8C, 0x95, 0x52, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x17, 0xE7, 0x8C, 0x11, 0xF7, 0xEB, 0x80, 0xC6, 0xAF, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xB8, 0xAD, 0xF0, 0x04, 0xF7, 0xEB, 0x81, 0xE7, 0x6C, 0x84, 0xD3, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x77, 0x04, 0xF7, 0xEB, 0x81, 0xDF, 0x4D, 0x6C, 0x35, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x5A, 0x6C, 0x35, 0x01, 0xFF, 0xED, 0x81, 0xF7, 0xEA, 0xF7, + 0xE6, 0x04, 0xF7, 0xE5, 0x81, 0xE7, 0x87, 0x8D, 0x10, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x18, 0xE7, 0x89, 0x02, 0xF7, 0xE5, 0x80, 0xF7, 0xEB, 0x01, 0xFF, 0xED, 0x83, 0xD6, 0xEF, 0x32, 0x99, 0x22, 0x1A, 0x21, 0xF8, 0x0B, 0x00, 0x01, 0x84, 0x21, 0x0D, 0x31, 0x8F, 0x62, 0xD6, 0x7B, 0x59, 0x29, 0x4E, 0x01, 0x00, 0x01, 0x83, 0x39, 0xB0, 0x9C, 0x1E, 0x93, 0xFD, 0x5A, 0x95, 0x06, 0x00, 0x01, 0x80, 0x21, 0x0D, 0x01, 0x29, 0x2D, 0x0F, 0x00, 0x01, 0x85, 0x21, 0x4F, 0x22, 0x19, 0x22, 0x1A, 0x2A, 0x59, 0x7C, 0x95, 0xF7, 0xE6, 0x04, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x4F, 0x6C, 0x35, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x5A, 0x6C, 0x35, 0x0A, 0xFF, 0xED, 0x81, 0xF7, 0xCD, 0xBE, 0x51, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0x70, 0x0A, 0xFF, 0xED, 0x81, 0xE7, 0x4F, 0x6C, 0x35, 0x04, 0x22, 0x1A, 0x83, 0x22, 0x3A, 0x63, 0xF6, 0xF7, 0xED, 0xC6, 0x71, 0x05, 0x22, 0x1A, 0x82, 0x22, 0x3A, 0x5B, 0xB6, 0xEF, 0xAE, 0x0A, 0xFF, 0xED, 0x81, 0xDF, 0x2F, 0x53, 0x77, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x79, 0x84, 0xB4, 0x03, 0xFF, 0xED, 0x81, 0xEF, 0x8E, 0x95, 0x53, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x18, 0xEF, 0x8E, 0x11, 0xFF, 0xED, 0x80, 0xCE, 0xD0, 0x05, 0x22, 0x1A, 0x81, 0x32, 0xB9, 0xA5, 0x92, 0x04, 0xFF, 0xED, 0x81, 0xE7, 0x6E, 0x84, 0xD4, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x77, 0x04, 0xFF, 0xED, 0x81, 0xE7, 0x4F, 0x6C, 0x16, 0x04, 0x22, 0x1A, 0x83, 0x2A, 0x5A, 0x6C, 0x35, 0xFF, 0xED, 0xF7, 0xE8, 0x06, 0xF7, 0xE5, 0x81, 0xE7, 0x87, 0x8D, 0x10, 0x05, 0x22, + 0x1A, 0x81, 0x43, 0x18, 0xE7, 0x69, 0x01, 0xF7, 0xE5, 0x81, 0xF7, 0xE6, 0xF7, 0xED, 0x01, 0xFF, 0xED, 0x84, 0xD6, 0xEF, 0x32, 0x99, 0x22, 0x1A, 0x21, 0xF8, 0x21, 0x0D, 0x0C, 0x00, 0x01, 0x88, 0x29, 0x4E, 0x41, 0xD1, 0x39, 0xD0, 0x00, 0x01, 0x21, 0x2D, 0x41, 0xF1, 0x9C, 0x3E, 0x8B, 0xDC, 0x4A, 0x12, 0x19, 0x00, 0x01, 0x85, 0x21, 0x2F, 0x21, 0xF9, 0x22, 0x1A, 0x2A, 0x59, 0x7C, 0x95, 0xF7, 0xE6, 0x04, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x4F, 0x74, 0x35, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x5A, 0x6C, 0x36, 0x0A, 0xFF, 0xED, 0x81, 0xF7, 0xCD, 0xBE, 0x71, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0x70, 0x0A, 0xFF, 0xED, 0x81, 0xE7, 0x4F, 0x6C, 0x35, 0x04, 0x22, 0x1A, 0x84, 0x22, 0x3A, 0x63, 0xF6, 0xFF, 0xED, 0xD7, 0x0F, 0x43, 0x18, 0x05, 0x22, 0x1A, 0x82, 0x2A, 0x79, 0x84, 0xB4, 0xF7, 0xCD, 0x09, 0xFF, 0xED, 0x81, 0xDF, 0x2F, 0x53, 0x97, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x79, 0x84, 0xB4, 0x03, 0xFF, 0xED, 0x81, 0xEF, 0x8E, 0x95, 0x53, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x18, 0xEF, 0x8E, 0x11, 0xFF, 0xED, 0x81, 0xD6, 0xF0, 0x2A, 0x79, 0x04, 0x22, 0x1A, 0x81, 0x32, 0x79, 0x8C, 0xF4, 0x04, 0xFF, 0xED, 0x81, 0xE7, 0x6E, 0x84, 0xD4, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x77, 0x04, 0xFF, 0xED, 0x81, 0xE7, 0x4F, 0x6C, 0x16, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x74, 0x54, 0x08, 0xF7, 0xE5, 0x81, 0xE7, 0x87, 0x8D, 0x10, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x18, 0xDF, 0x69, 0x01, 0xF7, 0xE5, 0x80, 0xF7, 0xEA, 0x02, 0xFF, 0xED, 0x83, 0xD6, 0xEF, 0x32, 0x99, + 0x22, 0x1A, 0x21, 0xF8, 0x0E, 0x00, 0x01, 0x01, 0x21, 0x2D, 0x85, 0x00, 0x01, 0x21, 0x2D, 0x4A, 0x33, 0x9C, 0x3E, 0x8B, 0xBB, 0x31, 0x6E, 0x19, 0x00, 0x01, 0x85, 0x21, 0x2F, 0x21, 0xF9, 0x22, 0x1A, 0x2A, 0x59, 0x7C, 0x95, 0xF7, 0xE6, 0x04, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x6E, 0x74, 0x55, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x5A, 0x6C, 0x36, 0x0A, 0xFF, 0xED, 0x81, 0xF7, 0xCD, 0xBE, 0x71, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0x70, 0x0A, 0xFF, 0xED, 0x81, 0xE7, 0x4F, 0x6C, 0x35, 0x04, 0x22, 0x1A, 0x84, 0x22, 0x3A, 0x63, 0xF6, 0xFF, 0xED, 0xEF, 0x8E, 0x8D, 0x14, 0x06, 0x22, 0x1A, 0x82, 0x2A, 0x79, 0x74, 0x55, 0xDF, 0x2F, 0x08, 0xFF, 0xED, 0x81, 0xDF, 0x2F, 0x53, 0x97, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x79, 0x84, 0xB4, 0x03, 0xFF, 0xED, 0x81, 0xEF, 0x8E, 0x95, 0x53, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x18, 0xEF, 0xAE, 0x11, 0xFF, 0xED, 0x81, 0xD7, 0x0F, 0x43, 0x18, 0x04, 0x22, 0x1A, 0x82, 0x22, 0x3A, 0x53, 0x97, 0xEF, 0x8E, 0x03, 0xFF, 0xED, 0x81, 0xE7, 0x6E, 0x84, 0xD4, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x77, 0x04, 0xFF, 0xED, 0x81, 0xDF, 0x4F, 0x63, 0xF6, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x74, 0x52, 0x08, 0xF7, 0xE5, 0x81, 0xE7, 0x87, 0x8D, 0x10, 0x05, 0x22, 0x1A, 0x84, 0x43, 0x18, 0xDF, 0x69, 0xF7, 0xE5, 0xF7, 0xE8, 0xF7, 0xED, 0x02, 0xFF, 0xED, 0x84, 0xD6, 0xF0, 0x2A, 0x59, 0x22, 0x1A, 0x21, 0xF8, 0x21, 0x0D, 0x10, 0x00, 0x01, 0x83, 0x29, 0x4D, 0x5A, 0x74, 0x9C, 0x1E, 0x7B, 0x59, 0x1A, 0x00, 0x01, 0x85, 0x21, 0x2F, 0x21, + 0xF8, 0x22, 0x1A, 0x2A, 0x59, 0x7C, 0x75, 0xF7, 0xE7, 0x05, 0xF7, 0xE5, 0x81, 0xE7, 0x6D, 0x74, 0x55, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x5A, 0x6C, 0x36, 0x0A, 0xFF, 0xED, 0x81, 0xF7, 0xED, 0xC6, 0x71, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0x70, 0x0A, 0xFF, 0xED, 0x81, 0xE7, 0x4F, 0x74, 0x35, 0x04, 0x22, 0x1A, 0x85, 0x22, 0x3A, 0x63, 0xF6, 0xFF, 0xED, 0xF7, 0xED, 0xCE, 0xD0, 0x3A, 0xB9, 0x06, 0x22, 0x1A, 0x87, 0x22, 0x3A, 0x3A, 0xD8, 0x7C, 0x95, 0xB6, 0x31, 0xD6, 0xF0, 0xDF, 0x4F, 0xEF, 0x8E, 0xF7, 0xCE, 0x02, 0xFF, 0xED, 0x81, 0xDF, 0x2F, 0x5B, 0x97, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x79, 0x84, 0xB4, 0x03, 0xFF, 0xED, 0x81, 0xEF, 0x8E, 0x95, 0x53, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x18, 0xEF, 0xAE, 0x11, 0xFF, 0xED, 0x81, 0xE7, 0x4F, 0x6C, 0x35, 0x05, 0x22, 0x1A, 0x82, 0x2A, 0x59, 0x6C, 0x16, 0xDF, 0x0F, 0x02, 0xFF, 0xED, 0x81, 0xE7, 0x6E, 0x84, 0xD4, 0x05, 0x22, 0x1A, 0x80, 0x53, 0x77, 0x04, 0xFF, 0xED, 0x81, 0xDF, 0x4F, 0x63, 0xF6, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x74, 0x52, 0x08, 0xF7, 0xE5, 0x81, 0xE7, 0x87, 0x8D, 0x10, 0x05, 0x22, 0x1A, 0x83, 0x43, 0x17, 0xDF, 0x68, 0xF7, 0xE8, 0xF7, 0xEC, 0x03, 0xFF, 0xED, 0x83, 0xD6, 0xF0, 0x2A, 0x5A, 0x22, 0x1A, 0x21, 0xF8, 0x11, 0x00, 0x01, 0x83, 0x29, 0x4E, 0x62, 0xB6, 0x93, 0xFD, 0x62, 0xB6, 0x1A, 0x00, 0x01, 0x85, 0x21, 0x2F, 0x21, 0xF8, 0x22, 0x1A, 0x2A, 0x5A, 0x74, 0x55, 0xF7, 0xE9, 0x05, 0xF7, 0xE5, 0x81, 0xDF, 0x6B, 0x74, 0x55, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x5A, 0x6C, + 0x36, 0x0A, 0xFF, 0xED, 0x81, 0xF7, 0xED, 0xC6, 0x71, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0x70, 0x0A, 0xFF, 0xED, 0x81, 0xE7, 0x4F, 0x74, 0x35, 0x04, 0x22, 0x1A, 0x81, 0x22, 0x3A, 0x63, 0xF6, 0x01, 0xFF, 0xED, 0x81, 0xEF, 0x8E, 0x95, 0x33, 0x08, 0x22, 0x1A, 0x81, 0x22, 0x3A, 0x2A, 0x59, 0x01, 0x2A, 0x79, 0x01, 0x32, 0x79, 0x84, 0x42, 0xF8, 0x9D, 0x73, 0xFF, 0xED, 0xDF, 0x2F, 0x5B, 0xB7, 0x05, 0x22, 0x1A, 0x80, 0x2A, 0x79, 0x04, 0x3A, 0xD8, 0x80, 0x32, 0x79, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x18, 0xEF, 0xAE, 0x11, 0xFF, 0xED, 0x81, 0xEF, 0xAE, 0xA5, 0xB2, 0x06, 0x22, 0x1A, 0x86, 0x22, 0x3A, 0x32, 0x99, 0x4B, 0x57, 0x7C, 0x75, 0xB6, 0x31, 0xE7, 0x6E, 0x84, 0xD4, 0x05, 0x22, 0x1A, 0x80, 0x32, 0x79, 0x04, 0x63, 0xF6, 0x81, 0x5B, 0xB6, 0x32, 0xB8, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x74, 0x52, 0x08, 0xF7, 0xE5, 0x81, 0xE7, 0x87, 0x8D, 0x10, 0x05, 0x22, 0x1A, 0x83, 0x43, 0x17, 0xDF, 0x48, 0xF7, 0xE9, 0xF7, 0xED, 0x03, 0xFF, 0xED, 0x80, 0xD6, 0xD0, 0x01, 0x22, 0x1A, 0x81, 0x21, 0xD8, 0x21, 0x0D, 0x10, 0x00, 0x01, 0x83, 0x29, 0x6E, 0x72, 0xF7, 0x93, 0xBC, 0x4A, 0x12, 0x1A, 0x00, 0x01, 0x86, 0x21, 0x2E, 0x21, 0xF8, 0x22, 0x1A, 0x2A, 0x3A, 0x6C, 0x16, 0xF7, 0xEC, 0xF7, 0xE7, 0x04, 0xF7, 0xE5, 0x81, 0xDF, 0x6B, 0x74, 0x55, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x5A, 0x6C, 0x36, 0x0A, 0xFF, 0xED, 0x81, 0xF7, 0xED, 0xC6, 0x70, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0x70, 0x0A, 0xFF, 0xED, 0x81, 0xE7, 0x6F, 0x74, 0x55, 0x04, 0x22, + 0x1A, 0x81, 0x22, 0x3A, 0x63, 0xF6, 0x01, 0xFF, 0xED, 0x82, 0xF7, 0xED, 0xDF, 0x2F, 0x63, 0xD6, 0x0D, 0x22, 0x1A, 0x84, 0x32, 0x99, 0x95, 0x33, 0xFF, 0xED, 0xDF, 0x2F, 0x5B, 0xB7, 0x12, 0x22, 0x1A, 0x81, 0x43, 0x18, 0xEF, 0xAE, 0x11, 0xFF, 0xED, 0x82, 0xF7, 0xED, 0xD6, 0xEF, 0x43, 0x18, 0x08, 0x22, 0x1A, 0x83, 0x32, 0x99, 0x8C, 0xF4, 0xE7, 0x6E, 0x84, 0xD4, 0x06, 0x22, 0x1A, 0x05, 0x22, 0x3A, 0x05, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x74, 0x52, 0x08, 0xF7, 0xE5, 0x81, 0xE7, 0x88, 0x8D, 0x12, 0x05, 0x22, 0x1A, 0x83, 0x43, 0x17, 0xDF, 0x68, 0xF7, 0xE5, 0xF7, 0xEC, 0x02, 0xFF, 0xED, 0x81, 0xF7, 0xED, 0xCE, 0xD0, 0x01, 0x22, 0x1A, 0x81, 0x21, 0xF8, 0x21, 0x0D, 0x10, 0x00, 0x01, 0x83, 0x31, 0x6F, 0x7B, 0x39, 0x8B, 0x9B, 0x29, 0x4E, 0x1A, 0x00, 0x01, 0x86, 0x21, 0x2E, 0x21, 0xD7, 0x22, 0x1A, 0x22, 0x3A, 0x63, 0xF6, 0xFF, 0xED, 0xF7, 0xE9, 0x04, 0xF7, 0xE5, 0x81, 0xDF, 0x69, 0x74, 0x55, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x5A, 0x6C, 0x36, 0x0A, 0xFF, 0xED, 0x81, 0xF7, 0xED, 0xC6, 0x70, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0x70, 0x0A, 0xFF, 0xED, 0x81, 0xE7, 0x6F, 0x74, 0x55, 0x04, 0x22, 0x1A, 0x81, 0x22, 0x3A, 0x63, 0xF6, 0x02, 0xFF, 0xED, 0x82, 0xF7, 0xED, 0xCE, 0xB0, 0x43, 0x18, 0x0C, 0x22, 0x1A, 0x84, 0x32, 0x99, 0x95, 0x33, 0xFF, 0xED, 0xDF, 0x2F, 0x5B, 0xB6, 0x12, 0x22, 0x1A, 0x81, 0x43, 0x18, 0xEF, 0xAE, 0x12, 0xFF, 0xED, 0x81, 0xEF, 0xAE, 0x9D, 0x53, 0x08, 0x22, 0x1A, 0x83, 0x2A, 0x79, 0x84, 0xB4, 0xE7, 0x6E, 0x84, 0xD4, + 0x12, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x74, 0x52, 0x07, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xE7, 0x87, 0x8D, 0x10, 0x05, 0x22, 0x1A, 0x84, 0x43, 0x18, 0xDF, 0x68, 0xF7, 0xE5, 0xF7, 0xE8, 0xF7, 0xED, 0x01, 0xFF, 0xED, 0x81, 0xF7, 0xED, 0xCE, 0xB0, 0x01, 0x22, 0x1A, 0x81, 0x21, 0xD8, 0x21, 0x0D, 0x10, 0x00, 0x01, 0x82, 0x31, 0x8F, 0x83, 0x5A, 0x6A, 0xF7, 0x1B, 0x00, 0x01, 0x81, 0x21, 0x2E, 0x21, 0xD6, 0x01, 0x22, 0x1A, 0x84, 0x5B, 0xB6, 0xFF, 0xED, 0xF7, 0xEC, 0xF7, 0xEB, 0xF7, 0xE6, 0x02, 0xF7, 0xE5, 0x81, 0xDF, 0x68, 0x74, 0x74, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x5A, 0x6C, 0x36, 0x0A, 0xFF, 0xED, 0x81, 0xF7, 0xED, 0xC6, 0x70, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0x70, 0x0A, 0xFF, 0xED, 0x81, 0xE7, 0x6F, 0x74, 0x55, 0x04, 0x22, 0x1A, 0x81, 0x22, 0x3A, 0x63, 0xF6, 0x03, 0xFF, 0xED, 0x82, 0xF7, 0xCD, 0xCE, 0xB0, 0x4B, 0x57, 0x0B, 0x22, 0x1A, 0x84, 0x32, 0x99, 0x95, 0x33, 0xFF, 0xED, 0xDF, 0x2F, 0x5B, 0xB6, 0x12, 0x22, 0x1A, 0x81, 0x43, 0x18, 0xEF, 0xAE, 0x12, 0xFF, 0xED, 0x82, 0xF7, 0xED, 0xDF, 0x2F, 0x63, 0xF6, 0x07, 0x22, 0x1A, 0x83, 0x2A, 0x79, 0x84, 0xB4, 0xE7, 0x6E, 0x84, 0xD4, 0x12, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x74, 0x52, 0x08, 0xF7, 0xE5, 0x81, 0xE7, 0x87, 0x8D, 0x10, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x17, 0xDF, 0x67, 0x01, 0xF7, 0xE5, 0x80, 0xF7, 0xEC, 0x01, 0xFF, 0xED, 0x81, 0xF7, 0xED, 0xC6, 0x90, 0x01, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x11, 0x00, 0x01, 0x82, 0x31, 0x8F, 0x83, 0x7A, 0x41, 0xF1, 0x1B, 0x00, 0x01, 0x81, + 0x21, 0x2E, 0x21, 0xB6, 0x01, 0x22, 0x1A, 0x80, 0x53, 0x97, 0x02, 0xFF, 0xED, 0x80, 0xF7, 0xEA, 0x02, 0xF7, 0xE5, 0x81, 0xDF, 0x67, 0x74, 0x72, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x5A, 0x6C, 0x36, 0x0A, 0xFF, 0xED, 0x81, 0xF7, 0xED, 0xC6, 0x90, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0xD8, 0xC6, 0x70, 0x0A, 0xFF, 0xED, 0x81, 0xE7, 0x6F, 0x74, 0x55, 0x04, 0x22, 0x1A, 0x81, 0x22, 0x3A, 0x63, 0xF6, 0x04, 0xFF, 0xED, 0x82, 0xF7, 0xCD, 0xD6, 0xF0, 0x6C, 0x16, 0x0A, 0x22, 0x1A, 0x84, 0x32, 0x99, 0x95, 0x33, 0xFF, 0xED, 0xDF, 0x4F, 0x5B, 0xD6, 0x12, 0x22, 0x1A, 0x81, 0x43, 0x18, 0xEF, 0xAE, 0x13, 0xFF, 0xED, 0x82, 0xF7, 0xED, 0xD6, 0xEF, 0x5B, 0xB6, 0x06, 0x22, 0x1A, 0x83, 0x2A, 0x59, 0x7C, 0x95, 0xE7, 0x6E, 0x84, 0xD4, 0x12, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x74, 0x52, 0x08, 0xF7, 0xE5, 0x81, 0xE7, 0x87, 0x8D, 0x10, 0x05, 0x22, 0x1A, 0x81, 0x43, 0x17, 0xDF, 0x67, 0x01, 0xF7, 0xE5, 0x80, 0xF7, 0xEC, 0x01, 0xFF, 0xED, 0x81, 0xF7, 0xCD, 0xBE, 0x71, 0x01, 0x22, 0x1A, 0x80, 0x21, 0xD7, 0x11, 0x00, 0x01, 0x82, 0x31, 0x8F, 0x7B, 0x39, 0x21, 0x2D, 0x1B, 0x00, 0x01, 0x81, 0x21, 0x2E, 0x21, 0xB5, 0x01, 0x22, 0x1A, 0x81, 0x4B, 0x57, 0xF7, 0xCD, 0x02, 0xFF, 0xED, 0x80, 0xF7, 0xE7, 0x01, 0xF7, 0xE5, 0x81, 0xE7, 0x67, 0x84, 0xB1, 0x04, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x6C, 0x33, 0x0A, 0xF7, 0xE6, 0x81, 0xEF, 0xE6, 0xBE, 0x8B, 0x05, 0x22, 0x1A, 0x83, 0x3A, 0xD7, 0xBE, 0x6B, 0xF7, 0xE6, 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x80, 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x80, + 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x82, 0xF7, 0xE7, 0xDF, 0x68, 0x74, 0x52, 0x04, 0x22, 0x1A, 0x81, 0x22, 0x3A, 0x63, 0xF4, 0x01, 0xF7, 0xE6, 0x80, 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x01, 0xF7, 0xE7, 0x82, 0xE7, 0x68, 0xA5, 0xCE, 0x43, 0x17, 0x08, 0x22, 0x1A, 0x84, 0x32, 0x98, 0x95, 0x30, 0xF7, 0xE6, 0xDF, 0x49, 0x5B, 0xD4, 0x12, 0x22, 0x1A, 0x83, 0x43, 0x17, 0xE7, 0xA8, 0xF7, 0xE7, 0xF7, 0xE6, 0x01, 0xF7, 0xE7, 0x80, 0xF7, 0xE6, 0x01, 0xF7, 0xE7, 0x80, 0xF7, 0xE6, 0x01, 0xF7, 0xE7, 0x80, 0xF7, 0xE6, 0x01, 0xF7, 0xE7, 0x80, 0xF7, 0xE6, 0x01, 0xF7, 0xE7, 0x80, 0xF7, 0xE6, 0x01, 0xF7, 0xE7, 0x80, 0xF7, 0xE6, 0x01, 0xF7, 0xE7, 0x82, 0xDF, 0x29, 0x84, 0xD1, 0x2A, 0x59, 0x04, 0x22, 0x1A, 0x83, 0x2A, 0x59, 0x7C, 0x95, 0xE7, 0x6E, 0x84, 0xD4, 0x12, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x74, 0x52, 0x07, 0xF7, 0xE5, 0x82, 0xEF, 0xE4, 0xDF, 0x85, 0x8D, 0x0E, 0x05, 0x22, 0x1A, 0x83, 0x43, 0x17, 0xDF, 0x67, 0xF7, 0xE5, 0xF7, 0xE8, 0x02, 0xFF, 0xED, 0x81, 0xEF, 0xAE, 0xA5, 0xB2, 0x01, 0x22, 0x1A, 0x81, 0x21, 0xD7, 0x21, 0x0D, 0x01, 0x00, 0x01, 0x80, 0x21, 0x2D, 0x0D, 0x00, 0x01, 0x81, 0x29, 0x4E, 0x41, 0xF1, 0x1C, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x21, 0x72, 0x01, 0x22, 0x1A, 0x81, 0x3A, 0xB8, 0xC6, 0x90, 0x02, 0xFF, 0xED, 0x80, 0xF7, 0xEA, 0x01, 0xF7, 0xE5, 0x82, 0xE7, 0xA6, 0xA5, 0xAD, 0x22, 0x3A, 0x03, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x6C, 0x33, 0x09, 0xF7, 0xE5, 0x82, 0xF7, 0xE6, 0xEF, 0xE6, 0xBE, 0x8B, 0x05, 0x22, 0x1A, 0x83, 0x3A, 0xD7, 0xBE, + 0x6B, 0xF7, 0xE6, 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x80, 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x80, 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x82, 0xF7, 0xE7, 0xDF, 0x68, 0x74, 0x72, 0x04, 0x22, 0x1A, 0x81, 0x22, 0x3A, 0x63, 0xF4, 0x01, 0xF7, 0xE6, 0x80, 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x80, 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x85, 0xEF, 0xC7, 0xDF, 0x68, 0xB6, 0x2C, 0x7C, 0x92, 0x4B, 0x56, 0x32, 0x98, 0x04, 0x22, 0x1A, 0x84, 0x32, 0x98, 0x95, 0x30, 0xF7, 0xE6, 0xDF, 0x48, 0x63, 0xD4, 0x12, 0x22, 0x1A, 0x81, 0x43, 0x16, 0xE7, 0xA7, 0x15, 0xF7, 0xE5, 0x85, 0xF7, 0xE6, 0xE7, 0xA6, 0xCE, 0xE9, 0x8C, 0xF0, 0x4B, 0x55, 0x2A, 0x59, 0x01, 0x22, 0x1A, 0x83, 0x2A, 0x59, 0x74, 0x72, 0xE7, 0x69, 0x84, 0xD2, 0x12, 0x22, 0x1A, 0x81, 0x2A, 0x59, 0x74, 0x52, 0x01, 0xF7, 0xE5, 0x80, 0xEF, 0xE4, 0x01, 0xEF, 0xE3, 0x03, 0xEF, 0xE2, 0x81, 0xDF, 0x84, 0x85, 0x0E, 0x04, 0x22, 0x1A, 0x84, 0x2A, 0x59, 0x74, 0x72, 0xEF, 0xC6, 0xF7, 0xE5, 0xF7, 0xEA, 0x02, 0xFF, 0xED, 0x81, 0xE7, 0x4F, 0x6C, 0x35, 0x01, 0x22, 0x1A, 0x82, 0x21, 0xB6, 0x29, 0x2D, 0x4A, 0x12, 0x01, 0x7B, 0x39, 0x80, 0x21, 0x2D, 0x0D, 0x00, 0x01, 0x80, 0x21, 0x2D, 0x1D, 0x00, 0x01, 0x85, 0x21, 0x2F, 0x21, 0xF8, 0x22, 0x1A, 0x22, 0x39, 0x74, 0x55, 0xF7, 0xED, 0x02, 0xFF, 0xED, 0x85, 0xF7, 0xE8, 0xF7, 0xE5, 0xF7, 0xE6, 0xEF, 0xC6, 0xDF, 0x68, 0xD7, 0x09, 0x03, 0xCE, 0xC9, 0x80, 0xD7, 0x28, 0x02, 0xF7, 0xE5, 0x01, 0xF7, 0xE6, 0x84, 0xF7, 0xE7, 0xF7, 0xE8, 0xF7, 0xE9, 0xF7, 0xEA, 0xF7, 0xEC, 0x01, 0xF7, 0xED, + 0x80, 0xEF, 0xAE, 0x05, 0xCE, 0xD0, 0x81, 0xD6, 0xEF, 0xEF, 0xAE, 0x0A, 0xFF, 0xED, 0x81, 0xF7, 0xED, 0xE7, 0x6E, 0x05, 0xDF, 0x2F, 0x80, 0xE7, 0x6E, 0x08, 0xFF, 0xED, 0x87, 0xF7, 0xED, 0xF7, 0xCD, 0xF7, 0xCE, 0xEF, 0xAE, 0xEF, 0x8E, 0xE7, 0x6E, 0xDF, 0x2F, 0xD7, 0x0F, 0x01, 0xCE, 0xD0, 0x84, 0xD6, 0xF0, 0xE7, 0x6E, 0xFF, 0xED, 0xF7, 0xCD, 0xDF, 0x2F, 0x01, 0xCE, 0xD0, 0x82, 0xCE, 0xCE, 0xCE, 0xCD, 0xCE, 0xCB, 0x01, 0xCE, 0xCA, 0x0B, 0xCE, 0xC9, 0x81, 0xCF, 0x09, 0xEF, 0xE6, 0x17, 0xF7, 0xE5, 0x84, 0xEF, 0xE6, 0xEF, 0xC6, 0xE7, 0xA7, 0xE7, 0x87, 0xD7, 0x28, 0x01, 0xCE, 0xC9, 0x82, 0xDF, 0x48, 0xEF, 0xE6, 0xDF, 0x48, 0x01, 0xCE, 0xC9, 0x02, 0xCE, 0xCA, 0x01, 0xC6, 0xC7, 0x81, 0xC6, 0xC8, 0xC6, 0xC9, 0x03, 0xCE, 0xCB, 0x01, 0xCE, 0xCA, 0x02, 0xC6, 0xC8, 0x01, 0xC6, 0xC7, 0x80, 0xD7, 0x45, 0x06, 0xEF, 0xE2, 0x01, 0xEF, 0xE3, 0x81, 0xEF, 0xE5, 0xDF, 0x67, 0x03, 0xCE, 0xC9, 0x84, 0xD7, 0x09, 0xDF, 0x48, 0xEF, 0xA6, 0xF7, 0xE6, 0xF7, 0xE8, 0x02, 0xFF, 0xED, 0x86, 0xF7, 0xCD, 0xBE, 0x51, 0x2A, 0x59, 0x22, 0x1A, 0x21, 0xF9, 0x29, 0xB4, 0x4A, 0x12, 0x01, 0x9B, 0xFD, 0x80, 0x7B, 0x18, 0x2D, 0x00, 0x01, 0x81, 0x21, 0x2E, 0x21, 0xB4, 0x01, 0x22, 0x1A, 0x81, 0x32, 0x79, 0xAD, 0xD2, 0x02, 0xFF, 0xED, 0x84, 0xF7, 0xEC, 0xF7, 0xEB, 0xF7, 0xE7, 0xF7, 0xE5, 0xF7, 0xE6, 0x04, 0xEF, 0xE6, 0x83, 0xF7, 0xE8, 0xF7, 0xEA, 0xF7, 0xEB, 0xF7, 0xEC, 0x08, 0xFF, 0xED, 0x08, 0xF7, 0xED, 0x0B, 0xFF, 0xED, 0x07, 0xF7, 0xED, 0x0E, 0xFF, 0xED, 0x05, + 0xF7, 0xED, 0x01, 0xFF, 0xED, 0x07, 0xF7, 0xED, 0x83, 0xF7, 0xEC, 0xF7, 0xE9, 0xF7, 0xE8, 0xF7, 0xE7, 0x08, 0xEF, 0xE6, 0x1C, 0xF7, 0xE5, 0x80, 0xF7, 0xE6, 0x02, 0xEF, 0xE6, 0x81, 0xF7, 0xE5, 0xF7, 0xE6, 0x04, 0xEF, 0xE6, 0x01, 0xEF, 0xE4, 0x80, 0xEF, 0xE5, 0x0C, 0xEF, 0xE6, 0x09, 0xF7, 0xE5, 0x80, 0xF7, 0xE6, 0x04, 0xEF, 0xE6, 0x83, 0xF7, 0xE6, 0xF7, 0xE5, 0xF7, 0xE8, 0xF7, 0xEB, 0x02, 0xFF, 0xED, 0x81, 0xDF, 0x2F, 0x5B, 0xB7, 0x01, 0x22, 0x1A, 0x85, 0x21, 0xD8, 0x31, 0x91, 0x62, 0x95, 0xA4, 0x1E, 0x9B, 0xDD, 0x62, 0x95, 0x2E, 0x00, 0x01, 0x81, 0x21, 0x4F, 0x21, 0xF8, 0x01, 0x22, 0x1A, 0x81, 0x3A, 0xB8, 0xCE, 0xB0, 0x03, 0xFF, 0xED, 0x81, 0xF7, 0xEC, 0xF7, 0xEB, 0x01, 0xF7, 0xE9, 0x81, 0xF7, 0xEA, 0xF7, 0xEC, 0x4F, 0xFF, 0xED, 0x84, 0xF7, 0xEC, 0xF7, 0xEB, 0xF7, 0xE9, 0xF7, 0xE8, 0xF7, 0xE7, 0x01, 0xF7, 0xE6, 0x23, 0xF7, 0xE5, 0x01, 0xF7, 0xE6, 0x83, 0xF7, 0xE7, 0xF7, 0xE9, 0xF7, 0xEB, 0xF7, 0xEC, 0x1E, 0xF7, 0xE5, 0x81, 0xF7, 0xE6, 0xF7, 0xE9, 0x03, 0xFF, 0xED, 0x81, 0xE7, 0x6E, 0x7C, 0x95, 0x01, 0x22, 0x1A, 0x86, 0x21, 0xF9, 0x21, 0x93, 0x29, 0x6F, 0x6A, 0xD6, 0xA4, 0x1E, 0x93, 0xBC, 0x4A, 0x12, 0x2E, 0x00, 0x01, 0x81, 0x21, 0x0D, 0x21, 0x71, 0x02, 0x22, 0x1A, 0x81, 0x3A, 0xB8, 0xC6, 0x70, 0x60, 0xFF, 0xED, 0x80, 0xF7, 0xEC, 0x01, 0xF7, 0xEB, 0x80, 0xF7, 0xEA, 0x02, 0xF7, 0xE9, 0x18, 0xF7, 0xE8, 0x01, 0xF7, 0xE9, 0x81, 0xF7, 0xEB, 0xF7, 0xEC, 0x04, 0xFF, 0xED, 0x81, 0xF7, 0xE9, 0xF7, 0xE7, 0x19, 0xF7, 0xE5, 0x82, + 0xF7, 0xE6, 0xF7, 0xE8, 0xF7, 0xEB, 0x03, 0xFF, 0xED, 0x83, 0xF7, 0xED, 0xE7, 0x4F, 0x7C, 0x75, 0x22, 0x3A, 0x01, 0x22, 0x1A, 0x86, 0x21, 0xB6, 0x21, 0x2D, 0x29, 0x4E, 0x6A, 0xD7, 0xA4, 0x1E, 0x93, 0x9C, 0x39, 0x90, 0x0C, 0x00, 0x01, 0x82, 0x21, 0x0D, 0x29, 0x4E, 0x29, 0x4D, 0x1F, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x21, 0x93, 0x02, 0x22, 0x1A, 0x82, 0x2A, 0x58, 0x95, 0x53, 0xEF, 0xAE, 0x7F, 0xFF, 0xED, 0x09, 0xFF, 0xED, 0x81, 0xF7, 0xE9, 0xF7, 0xE7, 0x11, 0xF7, 0xE6, 0x84, 0xF7, 0xE7, 0xF7, 0xE8, 0xF7, 0xE9, 0xF7, 0xEB, 0xF7, 0xEC, 0x06, 0xFF, 0xED, 0x82, 0xF7, 0xCE, 0xC6, 0x90, 0x53, 0x57, 0x02, 0x22, 0x1A, 0x87, 0x21, 0xD7, 0x21, 0x2E, 0x00, 0x01, 0x29, 0x4E, 0x72, 0xD7, 0xA4, 0x1E, 0x8B, 0x7B, 0x21, 0x2D, 0x0C, 0x00, 0x01, 0x82, 0x29, 0x4E, 0x52, 0x33, 0x41, 0xD1, 0x20, 0x00, 0x01, 0x81, 0x21, 0x2E, 0x21, 0x93, 0x02, 0x22, 0x1A, 0x87, 0x22, 0x19, 0x4B, 0x37, 0xA5, 0x92, 0xCE, 0xB0, 0xE7, 0x4F, 0xEF, 0x8E, 0xEF, 0xAE, 0xF7, 0xED, 0x7F, 0xFF, 0xED, 0x1D, 0xFF, 0xED, 0x87, 0xF7, 0xED, 0xEF, 0xAE, 0xEF, 0x8E, 0xE7, 0x4F, 0xD6, 0xEF, 0xAD, 0xD2, 0x63, 0xB5, 0x22, 0x19, 0x02, 0x22, 0x1A, 0x87, 0x21, 0xD7, 0x21, 0x2F, 0x21, 0x0D, 0x00, 0x01, 0x29, 0x4E, 0x72, 0xD7, 0xA3, 0xFE, 0x7B, 0x19, 0x0D, 0x00, 0x01, 0x82, 0x31, 0x6F, 0x72, 0xD7, 0x4A, 0x12, 0x21, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x21, 0x71, 0x21, 0xF9, 0x02, 0x22, 0x1A, 0x82, 0x22, 0x19, 0x2A, 0x59, 0x2A, 0x79, 0x02, 0x32, 0x79, 0x85, 0x32, 0x99, 0x3A, 0xB9, 0x3A, 0xD8, + 0x42, 0xF8, 0x4B, 0x38, 0x4B, 0x57, 0x0E, 0x5B, 0x97, 0x80, 0x5B, 0xD6, 0x62, 0x63, 0xF6, 0x01, 0x63, 0xD6, 0x02, 0x63, 0xB6, 0x01, 0x5B, 0xB6, 0x07, 0x63, 0xB6, 0x80, 0x63, 0xB7, 0x07, 0x5B, 0x77, 0x06, 0x5B, 0x78, 0x01, 0x53, 0x38, 0x82, 0x4B, 0x19, 0x3A, 0xD9, 0x3A, 0xB9, 0x01, 0x32, 0x99, 0x84, 0x32, 0x79, 0x3A, 0x9A, 0x52, 0xDB, 0x3A, 0x7A, 0x42, 0x7B, 0x02, 0x22, 0x1A, 0x82, 0x21, 0xF9, 0x21, 0xB5, 0x21, 0x2E, 0x02, 0x00, 0x01, 0x83, 0x31, 0x6E, 0x72, 0xF8, 0x9B, 0xDD, 0x6A, 0x96, 0x0D, 0x00, 0x01, 0x82, 0x39, 0x8F, 0x8B, 0x7B, 0x5A, 0x54, 0x22, 0x00, 0x01, 0x82, 0x21, 0x0D, 0x21, 0x4F, 0x21, 0xB5, 0x78, 0x22, 0x1A, 0x05, 0x22, 0x3A, 0x05, 0x22, 0x1A, 0x81, 0x3A, 0x5B, 0x83, 0x7D, 0x19, 0xA3, 0xFE, 0x02, 0xAB, 0xFE, 0x02, 0xA3, 0xFE, 0x81, 0x8B, 0x9D, 0x5A, 0xDC, 0x02, 0x32, 0x5B, 0x84, 0x2A, 0x3A, 0x22, 0x1A, 0x21, 0xD7, 0x21, 0x71, 0x21, 0x0D, 0x03, 0x00, 0x01, 0x83, 0x31, 0x6E, 0x7B, 0x19, 0x9B, 0xBC, 0x52, 0x33, 0x0C, 0x00, 0x01, 0x83, 0x21, 0x0D, 0x41, 0xD1, 0x9B, 0xDD, 0x6A, 0x96, 0x24, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x21, 0x50, 0x21, 0xB5, 0x21, 0xF9, 0x67, 0x22, 0x1A, 0x80, 0x22, 0x19, 0x16, 0x21, 0xF9, 0x81, 0x2A, 0x3A, 0x8B, 0x9D, 0x24, 0xAB, 0xFE, 0x85, 0x93, 0xBD, 0x73, 0x1C, 0x3A, 0x37, 0x29, 0x70, 0x29, 0x2E, 0x21, 0x2D, 0x03, 0x00, 0x01, 0x84, 0x21, 0x0D, 0x41, 0xD1, 0x9B, 0xBD, 0x93, 0x9C, 0x39, 0xB0, 0x0C, 0x00, 0x01, 0x83, 0x29, 0x2D, 0x52, 0x33, 0xA3, 0xDE, 0x72, 0xF8, 0x25, 0x00, 0x01, 0x01, + 0x21, 0x0D, 0x80, 0x21, 0x2D, 0x01, 0x21, 0x2E, 0x02, 0x21, 0x4F, 0x01, 0x21, 0x50, 0x0F, 0x21, 0x71, 0x17, 0x21, 0x72, 0x1C, 0x21, 0x92, 0x19, 0x21, 0x93, 0x80, 0x21, 0x72, 0x02, 0x21, 0x71, 0x80, 0x21, 0x50, 0x02, 0x21, 0x51, 0x02, 0x21, 0x50, 0x80, 0x21, 0x51, 0x03, 0x21, 0x71, 0x07, 0x21, 0x50, 0x81, 0x21, 0x71, 0x73, 0x19, 0x26, 0xAB, 0xFE, 0x84, 0xA3, 0xDE, 0x83, 0x3A, 0x72, 0xD8, 0x72, 0xD7, 0x6A, 0xB6, 0x01, 0x62, 0x95, 0x87, 0x6A, 0x96, 0x6A, 0xB6, 0x72, 0xB7, 0x83, 0x19, 0x9B, 0xBD, 0xAB, 0xFE, 0x93, 0x7B, 0x29, 0x4E, 0x0C, 0x00, 0x01, 0x83, 0x29, 0x4D, 0x5A, 0x74, 0xA3, 0xFE, 0x83, 0x39, 0x2D, 0x00, 0x01, 0x61, 0x21, 0x0D, 0x14, 0x00, 0x01, 0x83, 0x21, 0x0D, 0x29, 0x4D, 0x4A, 0x12, 0x9B, 0x9C, 0x28, 0xAB, 0xFE, 0x07, 0xA3, 0xDE, 0x02, 0xAB, 0xFE, 0x80, 0x83, 0x19, 0x0D, 0x00, 0x01, 0x84, 0x29, 0x4E, 0x62, 0x75, 0xAB, 0xFE, 0x93, 0x7B, 0x21, 0x2D, 0x7F, 0x00, 0x01, 0x23, 0x00, 0x01, 0x82, 0x29, 0x4E, 0x62, 0x75, 0x9B, 0xBD, 0x33, 0xAB, 0xFE, 0x81, 0xA3, 0xDD, 0x6A, 0x96, 0x0D, 0x00, 0x01, 0x84, 0x29, 0x4E, 0x6A, 0x96, 0xAB, 0xFE, 0x93, 0x7B, 0x31, 0x6F, 0x7F, 0x00, 0x01, 0x21, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x41, 0xB0, 0x8B, 0x3A, 0xA3, 0xDE, 0x34, 0xAB, 0xFE, 0x81, 0x9B, 0xBC, 0x52, 0x13, 0x0D, 0x00, 0x01, 0x84, 0x29, 0x4E, 0x6A, 0x96, 0xAB, 0xFE, 0x9B, 0xBC, 0x4A, 0x12, 0x7F, 0x00, 0x01, 0x20, 0x00, 0x01, 0x82, 0x29, 0x2D, 0x52, 0x33, 0x9B, 0xBC, 0x13, 0xAB, 0xFE, 0x84, 0xA3, 0xDD, 0x9B, 0xBC, 0x93, 0x7B, + 0x8B, 0x5A, 0x83, 0x19, 0x02, 0x7A, 0xF8, 0x80, 0x7A, 0xD7, 0x03, 0x72, 0xB7, 0x85, 0x72, 0xD7, 0x7A, 0xF8, 0x83, 0x19, 0x8B, 0x5A, 0x93, 0x7B, 0xA3, 0xBD, 0x0F, 0xAB, 0xFE, 0x81, 0x9B, 0x9C, 0x39, 0x8F, 0x0D, 0x00, 0x01, 0x84, 0x29, 0x4E, 0x6A, 0x95, 0xAB, 0xFE, 0xA3, 0xDD, 0x6A, 0x96, 0x7F, 0x00, 0x01, 0x1F, 0x00, 0x01, 0x82, 0x29, 0x4E, 0x6A, 0x96, 0xA3, 0xDD, 0x0B, 0xAB, 0xFE, 0x87, 0xA3, 0xBD, 0x93, 0x5B, 0x83, 0x19, 0x72, 0xB7, 0x62, 0x75, 0x52, 0x13, 0x41, 0xD1, 0x31, 0x8F, 0x02, 0x29, 0x4E, 0x06, 0x29, 0x2D, 0x03, 0x21, 0x2D, 0x04, 0x29, 0x2D, 0x86, 0x29, 0x4E, 0x31, 0x6F, 0x41, 0xD1, 0x52, 0x13, 0x6A, 0x95, 0x83, 0x19, 0x9B, 0x9C, 0x09, 0xAB, 0xFE, 0x81, 0x8B, 0x5A, 0x21, 0x2D, 0x0D, 0x00, 0x01, 0x81, 0x29, 0x4D, 0x62, 0x75, 0x01, 0xAB, 0xFE, 0x80, 0x8B, 0x3A, 0x7F, 0x00, 0x01, 0x1E, 0x00, 0x01, 0x82, 0x31, 0x6F, 0x83, 0x19, 0xAB, 0xDE, 0x07, 0xAB, 0xFE, 0x85, 0x9B, 0x9C, 0x7A, 0xF8, 0x62, 0x75, 0x49, 0xF2, 0x31, 0x6F, 0x29, 0x4E, 0x01, 0x29, 0x2D, 0x02, 0x21, 0x2D, 0x80, 0x21, 0x0D, 0x15, 0x00, 0x01, 0x80, 0x21, 0x0D, 0x01, 0x21, 0x2D, 0x85, 0x29, 0x2D, 0x29, 0x4E, 0x39, 0x8F, 0x52, 0x13, 0x72, 0xB7, 0x93, 0x7B, 0x04, 0xAB, 0xFE, 0x81, 0xA3, 0xDD, 0x72, 0xB7, 0x0E, 0x00, 0x01, 0x81, 0x29, 0x2D, 0x5A, 0x54, 0x01, 0xAB, 0xFE, 0x81, 0x9B, 0x7B, 0x39, 0x8F, 0x7F, 0x00, 0x01, 0x1B, 0x00, 0x01, 0x83, 0x21, 0x0D, 0x39, 0xB0, 0x8B, 0x5A, 0xAB, 0xDE, 0x04, 0xAB, 0xFE, 0x87, 0xAB, 0xDE, 0x93, 0x7B, 0x6A, 0x96, 0x41, + 0xD1, 0x29, 0x4E, 0x29, 0x2D, 0x21, 0x2D, 0x21, 0x0D, 0x23, 0x00, 0x01, 0x01, 0x21, 0x2D, 0x87, 0x29, 0x4E, 0x39, 0x8F, 0x5A, 0x34, 0x7A, 0xF8, 0x9B, 0x9C, 0xAB, 0xFE, 0x9B, 0x9C, 0x41, 0xD1, 0x0E, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x52, 0x12, 0x01, 0xAB, 0xFE, 0x81, 0xA3, 0xBD, 0x5A, 0x34, 0x7F, 0x00, 0x01, 0x1A, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x41, 0xD1, 0x9B, 0x7B, 0xAB, 0xDE, 0x02, 0xAB, 0xFE, 0x86, 0xAB, 0xDE, 0x9B, 0x9C, 0x6A, 0x96, 0x41, 0xD1, 0x29, 0x4D, 0x21, 0x2D, 0x21, 0x0D, 0x2B, 0x00, 0x01, 0x85, 0x21, 0x2D, 0x29, 0x2D, 0x29, 0x4E, 0x39, 0x90, 0x41, 0xB0, 0x21, 0x2D, 0x0F, 0x00, 0x01, 0x80, 0x41, 0xB1, 0x01, 0xAB, 0xFE, 0x81, 0xAB, 0xDE, 0x7A, 0xF8, 0x7F, 0x00, 0x01, 0x19, 0x00, 0x01, 0x83, 0x21, 0x2D, 0x49, 0xD1, 0x9B, 0x9C, 0xAB, 0xDE, 0x01, 0xB3, 0xFE, 0x85, 0xAB, 0xDE, 0x8B, 0x3A, 0x52, 0x33, 0x29, 0x4E, 0x21, 0x2D, 0x21, 0x0D, 0x32, 0x00, 0x01, 0x80, 0x21, 0x0D, 0x10, 0x00, 0x01, 0x85, 0x39, 0x90, 0xA3, 0xBD, 0xB3, 0xFE, 0xAB, 0xFE, 0x93, 0x7B, 0x31, 0x6E, 0x7F, 0x00, 0x01, 0x17, 0x00, 0x01, 0x89, 0x21, 0x2D, 0x49, 0xD1, 0x9B, 0x9C, 0xAB, 0xFE, 0xB3, 0xFE, 0xAB, 0xBD, 0x7A, 0xF8, 0x41, 0xD1, 0x29, 0x2D, 0x21, 0x2D, 0x47, 0x00, 0x01, 0x81, 0x39, 0x8F, 0x9B, 0x7B, 0x01, 0xB3, 0xFE, 0x81, 0xA3, 0x9C, 0x52, 0x13, 0x7F, 0x00, 0x01, 0x16, 0x00, 0x01, 0x88, 0x21, 0x2D, 0x49, 0xD1, 0x9B, 0x9C, 0xB3, 0xFE, 0xAB, 0xDE, 0x83, 0x19, 0x41, 0xD1, 0x29, 0x2D, 0x21, 0x0D, 0x49, 0x00, 0x01, 0x81, 0x31, 0x6F, 0x83, 0x19, + 0x01, 0xB3, 0xFE, 0x81, 0xAB, 0xBE, 0x7A, 0xD7, 0x7F, 0x00, 0x01, 0x15, 0x00, 0x01, 0x87, 0x21, 0x2D, 0x41, 0xD1, 0x9B, 0x7C, 0xAB, 0xDE, 0x8B, 0x1A, 0x49, 0xD2, 0x29, 0x2D, 0x21, 0x0D, 0x4B, 0x00, 0x01, 0x81, 0x29, 0x4E, 0x72, 0xB6, 0x02, 0xB3, 0xDE, 0x81, 0x93, 0x5B, 0x29, 0x4D, 0x7F, 0x00, 0x01, 0x14, 0x00, 0x01, 0x85, 0x39, 0x90, 0x93, 0x5B, 0xA3, 0x9D, 0x62, 0x75, 0x29, 0x4E, 0x21, 0x0D, 0x4D, 0x00, 0x01, 0x81, 0x29, 0x2D, 0x5A, 0x34, 0x02, 0xB3, 0xDE, 0x81, 0xA3, 0x9C, 0x49, 0xF2, 0x7F, 0x00, 0x01, 0x13, 0x00, 0x01, 0x84, 0x31, 0x6F, 0x82, 0xF9, 0x8B, 0x19, 0x41, 0xB0, 0x21, 0x2D, 0x4F, 0x00, 0x01, 0x81, 0x21, 0x0D, 0x49, 0xD1, 0x02, 0xB3, 0xDE, 0x81, 0xAB, 0xBD, 0x72, 0xB7, 0x7F, 0x00, 0x01, 0x12, 0x00, 0x01, 0x80, 0x31, 0x4E, 0x01, 0x6A, 0x96, 0x81, 0x29, 0x4E, 0x21, 0x0D, 0x33, 0x00, 0x01, 0x82, 0x29, 0x4E, 0x52, 0x12, 0x31, 0x6F, 0x1A, 0x00, 0x01, 0x81, 0x39, 0x8F, 0xA3, 0x7C, 0x02, 0xB3, 0xDE, 0x81, 0x93, 0x5B, 0x29, 0x4D, 0x7F, 0x00, 0x01, 0x10, 0x00, 0x01, 0x83, 0x21, 0x0D, 0x31, 0x6F, 0x49, 0xF2, 0x29, 0x2D, 0x35, 0x00, 0x01, 0x88, 0x31, 0x6F, 0x93, 0x3B, 0xAB, 0xBD, 0xA3, 0x7C, 0x8B, 0x3A, 0x7A, 0xD7, 0x62, 0x55, 0x49, 0xF2, 0x29, 0x4E, 0x14, 0x00, 0x01, 0x81, 0x31, 0x6E, 0x82, 0xF9, 0x02, 0xB3, 0xDE, 0x81, 0xA3, 0x7C, 0x49, 0xF2, 0x7F, 0x00, 0x01, 0x12, 0x00, 0x01, 0x80, 0x21, 0x2D, 0x36, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x51, 0xF2, 0xAB, 0x9D, 0x02, 0xB3, 0xDE, 0x85, 0xB3, 0xBE, 0xAB, 0xBE, 0xA3, 0x7C, + 0x72, 0xB7, 0x41, 0xB1, 0x29, 0x2D, 0x11, 0x00, 0x01, 0x81, 0x29, 0x4E, 0x6A, 0x75, 0x02, 0xB3, 0xDE, 0x81, 0xAB, 0xBD, 0x72, 0xB7, 0x7F, 0x00, 0x01, 0x4B, 0x00, 0x01, 0x82, 0x29, 0x2D, 0x49, 0xD1, 0x9B, 0x5B, 0x05, 0xB3, 0xDE, 0x83, 0xAB, 0xBD, 0xA3, 0x7C, 0x72, 0x96, 0x29, 0x4E, 0x0F, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x49, 0xD1, 0x03, 0xB3, 0xDE, 0x81, 0x93, 0x5B, 0x29, 0x4D, 0x7F, 0x00, 0x01, 0x4B, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x39, 0x8F, 0x7A, 0xD8, 0x06, 0xB3, 0xDE, 0x83, 0xB3, 0xBE, 0x9B, 0x5B, 0x5A, 0x33, 0x31, 0x4E, 0x0E, 0x00, 0x01, 0x81, 0x39, 0x8F, 0xA3, 0x7C, 0x02, 0xB3, 0xDE, 0x81, 0xA3, 0x7C, 0x49, 0xF2, 0x7F, 0x00, 0x01, 0x4D, 0x00, 0x01, 0x82, 0x29, 0x4E, 0x62, 0x54, 0xAB, 0xBD, 0x06, 0xB3, 0xDE, 0x85, 0xB3, 0xBE, 0xAB, 0x9D, 0x9B, 0x5B, 0x82, 0xD8, 0x52, 0x13, 0x29, 0x2D, 0x0A, 0x00, 0x01, 0x81, 0x31, 0x6E, 0x82, 0xD8, 0x02, 0xB3, 0xDE, 0x81, 0xAB, 0xBD, 0x7A, 0xB7, 0x7F, 0x00, 0x01, 0x4E, 0x00, 0x01, 0x82, 0x29, 0x4E, 0x5A, 0x34, 0xB3, 0xDE, 0x07, 0xB3, 0xDF, 0x85, 0xB3, 0xDE, 0xB3, 0xBE, 0xAB, 0xBE, 0x9B, 0x5B, 0x62, 0x34, 0x29, 0x2D, 0x08, 0x00, 0x01, 0x81, 0x29, 0x2D, 0x62, 0x54, 0x02, 0xB3, 0xDF, 0x82, 0xB3, 0xDE, 0x9B, 0x5B, 0x29, 0x4E, 0x7F, 0x00, 0x01, 0x4E, 0x00, 0x01, 0x82, 0x31, 0x4E, 0x6A, 0x76, 0xAB, 0x9D, 0x09, 0xBB, 0xDF, 0x83, 0xB3, 0xDE, 0xB3, 0xBE, 0x93, 0x1A, 0x41, 0xB1, 0x07, 0x00, 0x01, 0x82, 0x21, 0x0D, 0x49, 0xD1, 0xB3, 0xDE, 0x02, 0xBB, 0xDF, 0x81, 0xAB, 0x7D, 0x52, 0x13, 0x7F, + 0x00, 0x01, 0x4F, 0x00, 0x01, 0x83, 0x29, 0x2D, 0x39, 0x90, 0x82, 0xD8, 0xB3, 0xDE, 0x09, 0xBB, 0xDF, 0x83, 0xB3, 0xBE, 0xA3, 0x7C, 0x5A, 0x34, 0x21, 0x0D, 0x06, 0x00, 0x01, 0x81, 0x39, 0x8F, 0xA3, 0x5C, 0x02, 0xBB, 0xDF, 0x81, 0xB3, 0xBE, 0x82, 0xD8, 0x7F, 0x00, 0x01, 0x50, 0x00, 0x01, 0x83, 0x21, 0x0D, 0x31, 0x6E, 0x72, 0x76, 0xB3, 0xBE, 0x09, 0xBB, 0xDF, 0x83, 0xBB, 0xBE, 0xAB, 0x9D, 0x7A, 0xB7, 0x29, 0x2D, 0x05, 0x00, 0x01, 0x81, 0x31, 0x4E, 0x82, 0xD8, 0x02, 0xBB, 0xDF, 0x82, 0xBB, 0xDE, 0x9B, 0x5B, 0x31, 0x6F, 0x7F, 0x00, 0x01, 0x51, 0x00, 0x01, 0x82, 0x29, 0x4E, 0x62, 0x34, 0xB3, 0xBE, 0x09, 0xBB, 0xDF, 0x83, 0xBB, 0xDE, 0xB3, 0x9E, 0x82, 0xD8, 0x29, 0x4E, 0x04, 0x00, 0x01, 0x81, 0x29, 0x2D, 0x6A, 0x55, 0x03, 0xBB, 0xDF, 0x81, 0xAB, 0x9D, 0x62, 0x34, 0x7F, 0x00, 0x01, 0x52, 0x00, 0x01, 0x82, 0x29, 0x2D, 0x51, 0xF3, 0xA3, 0x5C, 0x09, 0xBB, 0xDF, 0x83, 0xBB, 0xDE, 0xB3, 0x9E, 0x82, 0xD8, 0x29, 0x2D, 0x03, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x49, 0xD1, 0xBB, 0xDE, 0x02, 0xBB, 0xDF, 0x81, 0xB3, 0xBE, 0x8A, 0xF9, 0x7F, 0x00, 0x01, 0x53, 0x00, 0x01, 0x84, 0x21, 0x2D, 0x29, 0x4E, 0x49, 0xD1, 0x7A, 0xB7, 0xB3, 0x9D, 0x07, 0xBB, 0xBF, 0x83, 0xBB, 0xBE, 0xB3, 0x9D, 0x82, 0xB8, 0x29, 0x2D, 0x03, 0x00, 0x01, 0x81, 0x39, 0x8F, 0xAB, 0x7C, 0x03, 0xBB, 0xBF, 0x81, 0xA3, 0x5C, 0x39, 0x90, 0x7F, 0x00, 0x01, 0x54, 0x00, 0x01, 0x84, 0x21, 0x0D, 0x29, 0x2D, 0x39, 0x90, 0x7A, 0xB7, 0xB3, 0xBE, 0x06, 0xBB, 0xBF, 0x82, 0xBB, 0xBE, 0xAB, + 0x9D, 0x72, 0x76, 0x03, 0x00, 0x01, 0x81, 0x31, 0x6F, 0x92, 0xF9, 0x03, 0xBB, 0xBF, 0x81, 0xAB, 0x9D, 0x6A, 0x55, 0x7F, 0x00, 0x01, 0x56, 0x00, 0x01, 0x83, 0x21, 0x0D, 0x29, 0x4E, 0x51, 0xF2, 0xAB, 0x7C, 0x06, 0xBB, 0xBF, 0x82, 0xBB, 0xBE, 0xA3, 0x7C, 0x51, 0xF2, 0x02, 0x00, 0x01, 0x81, 0x29, 0x4E, 0x7A, 0x96, 0x03, 0xBB, 0xBF, 0x82, 0xBB, 0xBE, 0x93, 0x1A, 0x21, 0x0D, 0x7F, 0x00, 0x01, 0x57, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x41, 0xB0, 0x9B, 0x3B, 0x06, 0xBB, 0xBF, 0x82, 0xBB, 0xBE, 0x9B, 0x3B, 0x39, 0x6F, 0x01, 0x00, 0x01, 0x81, 0x29, 0x2D, 0x5A, 0x14, 0x04, 0xBB, 0xBF, 0x81, 0xA3, 0x5C, 0x41, 0xB0, 0x7F, 0x00, 0x01, 0x58, 0x00, 0x01, 0x82, 0x21, 0x0D, 0x41, 0x90, 0x9B, 0x1A, 0x06, 0xBB, 0xBF, 0x86, 0xB3, 0x9E, 0x82, 0xD8, 0x21, 0x2D, 0x00, 0x01, 0x21, 0x0D, 0x41, 0xB1, 0xBB, 0xBE, 0x03, 0xBB, 0xBF, 0x81, 0xB3, 0x7D, 0x6A, 0x55, 0x7F, 0x00, 0x01, 0x59, 0x00, 0x01, 0x82, 0x21, 0x0D, 0x41, 0x90, 0x9B, 0x1A, 0x05, 0xBB, 0xBF, 0x82, 0xBB, 0xBE, 0xAB, 0x7D, 0x62, 0x34, 0x01, 0x00, 0x01, 0x81, 0x39, 0x8F, 0xAB, 0x5C, 0x03, 0xBB, 0xBF, 0x81, 0xBB, 0xBE, 0x8A, 0xF9, 0x7F, 0x00, 0x01, 0x5A, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x41, 0xB1, 0xA3, 0x5C, 0x05, 0xBB, 0xBF, 0x85, 0xBB, 0xBE, 0x9B, 0x3B, 0x39, 0x6F, 0x00, 0x01, 0x31, 0x6F, 0x92, 0xF9, 0x04, 0xBB, 0xBF, 0x81, 0xA3, 0x5C, 0x39, 0x6F, 0x7F, 0x00, 0x01, 0x5A, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x49, 0xD1, 0xB3, 0x7D, 0x05, 0xBB, 0xBF, 0x84, 0xB3, 0x9E, 0x82, 0xB7, 0x00, 0x01, 0x31, + 0x4E, 0x82, 0xB7, 0x04, 0xBB, 0xBF, 0x81, 0xAB, 0x7D, 0x59, 0xF3, 0x7F, 0x00, 0x01, 0x5B, 0x00, 0x01, 0x82, 0x29, 0x2D, 0x62, 0x14, 0xBB, 0xBE, 0x04, 0xC3, 0xBF, 0x84, 0xBB, 0xBF, 0xAB, 0x5C, 0x51, 0xD2, 0x29, 0x4E, 0x6A, 0x55, 0x04, 0xC3, 0xBF, 0x81, 0xB3, 0x9E, 0x7A, 0x97, 0x7F, 0x00, 0x01, 0x5C, 0x00, 0x01, 0x81, 0x31, 0x4E, 0x82, 0xB7, 0x05, 0xC3, 0xBF, 0x83, 0xBB, 0x9E, 0x92, 0xF9, 0x29, 0x4E, 0x5A, 0x13, 0x04, 0xC3, 0xBF, 0x82, 0xBB, 0xBE, 0x9B, 0x1A, 0x21, 0x0D, 0x7F, 0x00, 0x01, 0x5B, 0x00, 0x01, 0x82, 0x21, 0x0D, 0x41, 0x90, 0xB3, 0x7D, 0x05, 0xC3, 0xBF, 0x82, 0xB3, 0x7D, 0x62, 0x34, 0x51, 0xF2, 0x05, 0xC3, 0xBF, 0x81, 0xAB, 0x5C, 0x39, 0x6F, 0x7F, 0x00, 0x01, 0x5C, 0x00, 0x01, 0x81, 0x29, 0x4E, 0x6A, 0x55, 0x05, 0xC3, 0xBF, 0x82, 0xBB, 0x9E, 0x9B, 0x1B, 0x59, 0xF3, 0x05, 0xC3, 0xBF, 0x81, 0xAB, 0x5D, 0x51, 0xF2, 0x7F, 0x00, 0x01, 0x5D, 0x00, 0x01, 0x81, 0x39, 0x90, 0xA3, 0x3C, 0x05, 0xC3, 0xBF, 0x81, 0xBB, 0x7E, 0x9B, 0x1B, 0x05, 0xC3, 0xBF, 0x81, 0xB3, 0x7D, 0x72, 0x55, 0x7F, 0x00, 0x01, 0x5D, 0x00, 0x01, 0x81, 0x29, 0x2D, 0x6A, 0x35, 0x06, 0xC3, 0xBF, 0x80, 0xC3, 0x9E, 0x05, 0xC3, 0xBF, 0x81, 0xBB, 0x9E, 0x8A, 0xD8, 0x7F, 0x00, 0x01, 0x5E, 0x00, 0x01, 0x81, 0x39, 0x8F, 0xA3, 0x3C, 0x0C, 0xC3, 0xBF, 0x82, 0xC3, 0x9F, 0xA3, 0x1B, 0x21, 0x0D, 0x7F, 0x00, 0x01, 0x5D, 0x00, 0x01, 0x81, 0x29, 0x2D, 0x6A, 0x35, 0x0D, 0xC3, 0x9F, 0x81, 0xAB, 0x3C, 0x31, 0x4E, 0x7F, 0x00, 0x01, 0x5E, 0x00, 0x01, 0x81, 0x39, 0x90, + 0xAB, 0x5C, 0x0C, 0xC3, 0x9F, 0x81, 0xAB, 0x5C, 0x41, 0xB1, 0x7F, 0x00, 0x01, 0x5E, 0x00, 0x01, 0x81, 0x29, 0x4E, 0x7A, 0x76, 0x0C, 0xC3, 0x9F, 0x81, 0xB3, 0x5D, 0x59, 0xF3, 0x7F, 0x00, 0x01, 0x5E, 0x00, 0x01, 0x82, 0x21, 0x0D, 0x41, 0xB0, 0xBB, 0x7D, 0x0B, 0xC3, 0x9F, 0x81, 0xB3, 0x7D, 0x6A, 0x34, 0x7F, 0x00, 0x01, 0x5F, 0x00, 0x01, 0x81, 0x31, 0x4E, 0x8A, 0xB8, 0x0B, 0xC3, 0x9F, 0x81, 0xBB, 0x7D, 0x7A, 0x76, 0x7F, 0x00, 0x01, 0x5F, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x51, 0xD2, 0xC3, 0x9E, 0x0A, 0xC3, 0x9F, 0x81, 0xBB, 0x7E, 0x82, 0x97, 0x7F, 0x00, 0x01, 0x60, 0x00, 0x01, 0x81, 0x31, 0x6F, 0x9A, 0xD9, 0x0A, 0xC3, 0x9F, 0x81, 0xC3, 0x7E, 0x92, 0xB9, 0x7F, 0x00, 0x01, 0x60, 0x00, 0x01, 0x81, 0x29, 0x2D, 0x59, 0xF3, 0x0A, 0xC3, 0x9F, 0x81, 0xC3, 0x9E, 0x92, 0xD9, 0x7F, 0x00, 0x01, 0x61, 0x00, 0x01, 0x81, 0x39, 0x6F, 0xAB, 0x1B, 0x09, 0xCB, 0x9F, 0x81, 0xC3, 0x9F, 0x9A, 0xFA, 0x7F, 0x00, 0x01, 0x61, 0x00, 0x01, 0x81, 0x29, 0x2D, 0x6A, 0x35, 0x09, 0xCB, 0x9F, 0x81, 0xC3, 0x9F, 0xA3, 0x1B, 0x7F, 0x00, 0x01, 0x62, 0x00, 0x01, 0x81, 0x41, 0x90, 0xBB, 0x5D, 0x09, 0xCB, 0x9F, 0x80, 0xA3, 0x1B, 0x7F, 0x00, 0x01, 0x62, 0x00, 0x01, 0x81, 0x31, 0x4E, 0x8A, 0xB8, 0x09, 0xCB, 0x9F, 0x80, 0xA3, 0x1B, 0x7F, 0x00, 0x01, 0x62, 0x00, 0x01, 0x81, 0x29, 0x2D, 0x59, 0xF2, 0x08, 0xCB, 0x9F, 0x81, 0xCB, 0x7F, 0xA2, 0xFB, 0x7F, 0x00, 0x01, 0x63, 0x00, 0x01, 0x81, 0x39, 0x6F, 0xAB, 0x1C, 0x07, 0xCB, 0x9F, 0x81, 0xCB, 0x7F, 0xA2, 0xFB, 0x7F, 0x00, + 0x01, 0x63, 0x00, 0x01, 0x81, 0x31, 0x4E, 0x7A, 0x76, 0x07, 0xCB, 0x9F, 0x81, 0xCB, 0x7E, 0x9A, 0xDA, 0x7F, 0x00, 0x01, 0x63, 0x00, 0x01, 0x82, 0x21, 0x2D, 0x51, 0xB1, 0xCB, 0x7F, 0x06, 0xCB, 0x9F, 0x81, 0xC3, 0x7E, 0x92, 0xB9, 0x7F, 0x00, 0x01, 0x64, 0x00, 0x01, 0x81, 0x39, 0x6F, 0xAB, 0x1B, 0x06, 0xCB, 0x9F, 0x81, 0xC3, 0x7E, 0x8A, 0x98, 0x7F, 0x00, 0x01, 0x64, 0x00, 0x01, 0x81, 0x31, 0x4E, 0x82, 0x77, 0x06, 0xCB, 0x7F, 0x81, 0xC3, 0x5E, 0x82, 0x77, 0x7F, 0x00, 0x01, 0x64, 0x00, 0x01, 0x81, 0x21, 0x2D, 0x59, 0xD2, 0x06, 0xCB, 0x7F, 0x81, 0xBB, 0x5D, 0x72, 0x35, 0x7F, 0x00, 0x01, 0x65, 0x00, 0x01, 0x81, 0x41, 0x70, 0xBB, 0x3D, 0x05, 0xCB, 0x7F, 0x81, 0xBB, 0x3D, 0x59, 0xD2, 0x7F, 0x00, 0x01, 0x65, 0x00, 0x01, 0x81, 0x31, 0x4E, 0x92, 0xB8, 0x05, 0xCB, 0x7F, 0x81, 0xB3, 0x3C, 0x41, 0x90, 0x7F, 0x00, 0x01, 0x65, 0x00, 0x01, 0x81, 0x29, 0x2D, 0x6A, 0x14, 0x05, 0xCB, 0x7F, 0x81, 0xAA, 0xFB, 0x29, 0x2D, 0x7F, 0x00, 0x01, 0x65, 0x00, 0x01, 0x81, 0x21, 0x0D, 0x49, 0xB1, 0x04, 0xCB, 0x7F, 0x81, 0xCB, 0x5E, 0x8A, 0x98, 0x7F, 0x00, 0x01, 0x67, 0x00, 0x01, 0x81, 0x39, 0x6F, 0xB3, 0x1C, 0x03, 0xD3, 0x7F, 0x81, 0xBB, 0x3D, 0x62, 0x14, 0x7F, 0x00, 0x01, 0x67, 0x00, 0x01, 0x81, 0x31, 0x4E, 0x92, 0x98, 0x03, 0xD3, 0x7F, 0x81, 0xB3, 0x1C, 0x39, 0x6F, 0x7F, 0x00, 0x01, 0x67, 0x00, 0x01, 0x81, 0x29, 0x2D, 0x6A, 0x14, 0x02, 0xD3, 0x7F, 0x82, 0xCB, 0x7E, 0x9A, 0xB9, 0x21, 0x0D, 0x7F, 0x00, 0x01, 0x67, 0x00, 0x01, 0x81, 0x21, 0x0D, 0x49, + 0xB1, 0x02, 0xD3, 0x7F, 0x81, 0xC3, 0x3D, 0x6A, 0x14, 0x7F, 0x00, 0x01, 0x69, 0x00, 0x01, 0x81, 0x41, 0x70, 0xC3, 0x3D, 0x01, 0xD3, 0x7F, 0x81, 0xB2, 0xFC, 0x31, 0x4E, 0x7F, 0x00, 0x01, 0x69, 0x00, 0x01, 0x84, 0x39, 0x6F, 0xAA, 0xDA, 0xD3, 0x7F, 0xCB, 0x5E, 0x8A, 0x77, 0x7F, 0x00, 0x01, 0x6A, 0x00, 0x01, 0x84, 0x31, 0x4E, 0x8A, 0x98, 0xD3, 0x7F, 0xBB, 0x3D, 0x51, 0xB1, 0x7F, 0x00, 0x01, 0x6A, 0x00, 0x01, 0x84, 0x29, 0x2E, 0x72, 0x35, 0xD3, 0x7F, 0xA2, 0xDA, 0x29, 0x2D, 0x7F, 0x00, 0x01, 0x6A, 0x00, 0x01, 0x83, 0x29, 0x2D, 0x59, 0xD2, 0xC3, 0x3D, 0x6A, 0x14, 0x7F, 0x00, 0x01, 0x6C, 0x00, 0x01, 0x82, 0x41, 0x90, 0xAA, 0xFB, 0x31, 0x4E, 0x7F, 0x00, 0x01, 0x6C, 0x00, 0x01, 0x81, 0x31, 0x4E, 0x61, 0xF3, 0x0C, 0x00, 0x01 +}; + +const tImage MarlinLogo240x250x16 = MARLIN_LOGO_CHOSEN(240, 250); + +#endif // HAS_GRAPHICAL_TFT && SHOW_BOOTSCREEN diff --git a/Marlin/src/lcd/tft/images/bootscreen_320x240x16.cpp b/Marlin/src/lcd/tft/images/bootscreen_320x240x16.cpp index 5c2f68beed..7254426fd1 100644 --- a/Marlin/src/lcd/tft/images/bootscreen_320x240x16.cpp +++ b/Marlin/src/lcd/tft/images/bootscreen_320x240x16.cpp @@ -21,13 +21,11 @@ */ #include "../../../inc/MarlinConfigPre.h" + +#if ALL(HAS_GRAPHICAL_TFT, SHOW_BOOTSCREEN) + #include "../tft_image.h" -#if HAS_GRAPHICAL_TFT - -extern const uint16_t marlin_logo_320x240x16[]; -const tImage MarlinLogo320x240x16 = { (void *)marlin_logo_320x240x16, 320, 240, HIGHCOLOR }; - const uint16_t marlin_logo_320x240x16[76800] = { 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18AE, 0x20AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AE, 0x18AD, 0x18AD, 0x0119, 0x011A, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x011A, 0x0119, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x20AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18AD, 0x18CE, 0x00F8, 0x0119, 0x0119, 0x0119, 0x0119, 0x08F7, 0x18CE, 0x18AD, 0x20AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x08D5, 0x011A, 0x0119, 0x10D2, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x28EE, 0x8252, 0xCB54, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18CD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x011A, 0x10D2, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18CD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18CD, 0x18CD, 0x18AE, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x08F5, 0x00F9, 0x0119, 0x00F7, 0x00F7, 0x0119, 0x0119, 0x08F5, 0x18AE, 0x18AD, 0x18AD, 0x18CD, 0x18AD, 0x18AE, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x20AD, 0x18AD, 0x20AE, 0x08F5, 0x0119, 0x0119, 0x10D2, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x20AE, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x20AD, 0x394F, 0xB313, 0xD395, 0x7211, 0x18AD, 0x18AD, 0x20CD, 0x18AD, 0x18AD, 0x20AD, 0x18AD, 0x18AD, 0x18AE, 0x0119, 0x00F9, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AE, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, @@ -271,4 +269,270 @@ const uint16_t marlin_logo_320x240x16[76800] = { 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x006D, 0x004D, 0x004D, 0x004D, 0x0150, 0x01F1, 0x0150, 0x006D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x006D, 0x004D, 0x004E, 0x004D, 0x004D, 0x004D, 0x0150, 0x01F1, 0x00AE, 0x006D, 0x004D, 0x004D, 0x004D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x004D, 0x006D, 0x006D, 0x004D, 0x006D, 0x004D, 0x006D, 0x006D, 0x006D, 0x0170, 0x01B1, 0x006D, 0x006D, 0x004D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006D, 0x004E, 0x006E, 0x01D1, 0x010F, 0x006D, 0x006D, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x004D, 0x006D, 0x006E, 0x004E, 0x0212, 0x004D, 0x004D, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x004D, 0x006D, 0x006D, 0x006D, 0x006E, 0x01F1, 0x008E, 0x006D, 0x006E, 0x004D, 0x004D, 0x006D, 0x006D, 0x004E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006E, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x004D, 0x006D, 0x004D, 0x010F, 0x01F1, 0x006D, 0x006D, 0x004D, 0x006E, 0x006D, 0x006D, 0x006D, 0x004D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x004E, 0x006D, 0x006D, 0x004D, 0x40CF, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x9931, 0x70F0, 0x004D, 0x006D, 0x004D, 0x004D, 0x006D, 0x006D, 0x004D, 0x004D, 0x006D, 0x0191, 0x01B1, 0x006D, 0x004D, 0x006D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D }; -#endif // HAS_GRAPHICAL_TFT +// Saves 91313 bytes +const uint8_t marlin_logo_320x240x16_rle16[62287] = { + 0x35, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF8, 0x03, 0x01, 0x19, 0x84, 0x08, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x83, 0x08, 0xD5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x28, 0xEE, 0x82, 0x52, 0xCB, 0x54, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x07, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x2A, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x15, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xCD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x01, 0x01, + 0x19, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x39, 0x4F, 0xB3, 0x13, 0xD3, 0x95, 0x72, 0x11, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x41, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x2F, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x84, 0x18, 0xAD, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAD, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xCD, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF4, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x08, + 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x49, 0x6F, 0xCB, 0x55, 0xD3, 0x95, 0xBB, 0x54, 0x28, 0xCE, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x1A, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x07, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x4F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0x8D, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x84, 0x00, 0xFA, 0x01, 0x19, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x80, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x61, 0xD0, 0x02, 0xD3, 0x95, 0x82, 0x69, 0xF1, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, + 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x72, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x1A, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD3, 0x01, 0x01, 0x1A, 0x80, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x86, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x61, 0xD0, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xD3, 0x75, 0x31, 0x0E, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xCD, 0x01, 0x1A, 0x00, 0xF9, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xCE, 0x37, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, + 0x11, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x05, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0A, 0x18, 0xAD, 0x80, 0x08, 0xD4, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x80, 0x08, 0xD5, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x01, 0x17, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x08, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x82, 0x39, 0x2F, 0xD3, 0x95, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x80, 0x28, 0xCE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x47, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x08, 0x18, 0xAD, 0x05, 0x01, 0x19, 0x84, 0x00, 0xF9, 0x01, 0x19, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x84, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x83, 0x10, + 0xD2, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x0E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xF2, 0x18, 0xAE, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x31, 0x0E, 0xCB, 0x55, 0x04, 0xD3, 0x95, 0x82, 0x82, 0x52, 0x20, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x87, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x13, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x46, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x80, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x07, + 0x01, 0x19, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x80, 0x10, 0xF2, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x85, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x85, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x10, 0xD3, 0x08, 0xF3, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x86, 0x08, 0xF5, 0x01, 0x1A, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0xB3, 0x14, 0x05, 0xD3, 0x95, 0x80, 0x51, 0x90, 0x06, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x17, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x00, 0xF9, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAF, 0x01, 0x19, 0x51, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, + 0xAE, 0x06, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xEE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x86, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF9, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x10, 0xF2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x0D, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xD5, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xCD, 0x0B, 0x18, 0xAD, 0x80, 0x82, 0x52, 0x06, 0xD3, 0x95, 0x81, 0x41, 0x2F, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x03, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xD5, 0x1B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x81, 0x08, 0xF5, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x08, 0xF4, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x81, + 0x18, 0xCD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x01, 0x1A, 0x4C, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xCD, 0x80, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x83, 0x03, 0x55, 0x19, 0x0F, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x08, 0xF4, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x86, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x0D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0x8E, 0x03, 0x18, 0xAD, 0x89, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xCD, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x49, 0x6F, 0x05, 0xD3, 0x95, 0x83, 0xD3, 0x96, 0xD3, 0x95, 0x49, 0x6F, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x01, 0x19, 0x1B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x81, 0x00, 0xF9, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, + 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x4D, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x11, 0xD1, 0x03, 0xB7, 0x0A, 0x93, 0x04, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF9, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xCD, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x28, 0xEE, 0xBB, 0x34, 0x07, 0xD3, 0x95, 0x80, + 0x9A, 0xB3, 0x06, 0x18, 0xAD, 0x02, 0x01, 0x19, 0x01, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x82, 0x10, 0xAF, 0x01, 0x19, 0x01, 0x1A, 0x05, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCE, 0x4B, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x20, 0x8D, 0x18, 0xAD, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xD3, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x03, 0x56, 0x01, 0x03, 0xB7, 0x80, 0x19, 0x0F, 0x07, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x08, 0xF3, 0x08, 0xD4, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x84, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xCD, 0x0A, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x00, 0xFA, 0x04, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x06, 0x18, + 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x7A, 0x31, 0x01, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xDB, 0x95, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x85, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x13, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0F, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x41, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x82, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x86, 0x18, 0xCE, 0x11, 0xD1, 0x03, 0xB8, 0x03, 0xB7, 0x03, 0xB8, 0x0A, 0x94, 0x20, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x86, 0x08, + 0xF5, 0x01, 0x1A, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x8F, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x08, 0xF5, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x08, 0xD5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x88, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x31, 0x0E, 0x04, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xD3, 0x95, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xB3, 0x13, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x04, 0x01, 0x19, 0x84, 0x00, 0xF9, 0x08, 0xF5, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x06, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x51, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, + 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x03, 0x56, 0x01, 0x03, 0xB7, 0x83, 0x03, 0xB8, 0x03, 0xB7, 0x19, 0x0E, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x09, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x20, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x1A, 0x80, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x08, 0x18, 0xAD, 0x83, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0xA2, 0xD3, 0x08, 0xD3, 0x95, 0x81, 0xD3, 0x96, 0xA2, 0xD3, 0x06, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x03, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xCE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x01, 0x17, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x13, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF7, + 0x01, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x4D, 0x18, 0xAD, 0x07, 0x01, 0x19, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x11, 0xD1, 0x03, 0xB8, 0x03, 0x03, 0xB7, 0x80, 0x0A, 0x94, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x0D, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x0F, 0x18, 0xAD, 0x84, 0x10, 0xD2, 0x08, 0xD4, 0x08, 0xF3, 0x10, 0xD2, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xB0, 0x0E, 0x18, 0xAD, 0x80, 0x49, 0x6F, 0x0A, 0xD3, 0x95, 0x80, 0xAA, 0xD3, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x10, 0xD1, 0x01, 0x08, 0xF3, 0x81, 0x10, 0xD2, 0x18, 0xCD, 0x1C, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x10, 0xD2, 0x08, 0xF3, 0x08, 0xD4, 0x10, 0xD2, 0x10, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x08, 0xF4, 0x01, 0x01, 0x19, 0x84, 0x10, 0xD1, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x08, 0xF5, 0x00, 0xF9, 0x04, 0x01, 0x19, 0x83, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x0D, 0x18, + 0xAD, 0x43, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x09, 0x18, 0xAD, 0x81, 0x03, 0x56, 0x03, 0xB8, 0x04, 0x03, 0xB7, 0x80, 0x19, 0x0F, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0F, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x12, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0xB3, 0x14, 0x0B, 0xD3, 0x95, 0x82, 0x61, 0xD0, 0x18, 0xAD, 0x18, 0xCD, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x18, 0xCD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x86, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x43, 0x01, 0x19, 0x82, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x03, 0x97, 0x03, 0xB8, + 0x03, 0xB7, 0x02, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xCD, 0x0F, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0A, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x0C, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x59, 0xD0, 0xD3, 0x95, 0xD3, 0x75, 0x08, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xD3, 0x95, 0xD3, 0x96, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x84, 0x08, 0xF4, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x03, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x53, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x02, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x02, 0x03, 0xB7, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x03, 0xB7, 0x82, 0x03, + 0x97, 0x03, 0xB7, 0x03, 0xB8, 0x01, 0x03, 0xB7, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD1, 0x20, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0xBB, 0x34, 0x0C, 0xD3, 0x95, 0x83, 0xAA, 0xD3, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x86, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x01, 0x1A, 0x05, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x18, 0xAD, 0x18, 0xAE, 0x51, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x85, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x03, 0xB7, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x04, 0x03, 0xB7, 0x81, 0x03, 0x97, 0x03, 0xB7, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x02, 0x18, + 0xAD, 0x83, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x61, 0xB1, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x0A, 0xD3, 0x95, 0x80, 0x8A, 0x92, 0x29, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x08, 0xF4, 0x52, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0x8D, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x02, 0x03, 0xB7, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x20, 0xAD, 0x03, 0xB8, 0x03, 0xB7, 0x03, 0xB8, 0x03, 0x03, 0xB7, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xCD, 0x20, 0xAD, 0x1B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, + 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x18, 0xAD, 0xAA, 0xD3, 0xD3, 0x95, 0xD3, 0x75, 0x09, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x80, 0x31, 0x0E, 0x28, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1C, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD1, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x51, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x82, 0x03, 0xD7, 0x03, 0x97, 0x03, 0xB7, 0x03, 0x18, 0xAD, 0x84, 0x03, 0xB7, 0x03, 0xB8, 0x03, 0x97, 0x03, 0xB7, 0x03, 0xB8, 0x01, 0x03, 0xB7, 0x83, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x0A, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x18, 0xCD, 0x20, 0xAD, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x01, 0x19, 0x01, 0x1A, 0x0B, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x49, 0x6F, 0x0D, 0xD3, 0x95, 0x84, 0xD3, 0x75, 0xD3, 0x95, 0x72, 0x31, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, + 0xAD, 0x18, 0xAE, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x86, 0x10, 0xD1, 0x10, 0xD3, 0x08, 0xD3, 0x10, 0xD2, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x57, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x0D, 0x18, 0xAD, 0x01, 0x03, 0xB7, 0x80, 0x03, 0xB8, 0x03, 0x18, 0xAD, 0x06, 0x03, 0xB7, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x0F, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x20, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x1A, 0x80, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x82, 0x20, 0xCD, 0x20, 0xAE, 0x8A, 0x92, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x0B, 0xD3, 0x95, 0x83, 0x7A, 0x31, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, + 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x57, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0x03, 0xB7, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x03, 0xB7, 0x80, 0x03, 0xB8, 0x03, 0x03, 0xB7, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x11, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x82, 0x20, 0xAD, 0x28, 0xEE, 0xC3, 0x74, 0x0F, 0xD3, 0x95, 0x83, 0xA2, 0xD3, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x22, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x72, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCE, 0x19, 0x4F, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x86, 0x03, 0xB7, 0x03, 0x97, 0x03, 0xB8, 0x18, 0xAD, 0x20, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x03, 0x03, 0xB7, 0x80, 0x03, 0xB8, 0x01, 0x03, 0xB7, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x16, 0x18, 0xAD, 0x85, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x01, + 0x20, 0xAE, 0x80, 0x61, 0xD1, 0x0F, 0xD3, 0x95, 0x84, 0xD3, 0x96, 0xD3, 0x95, 0x69, 0xF1, 0x20, 0xAD, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x19, 0x18, 0xAD, 0x80, 0x18, 0xCE, 0x58, 0x18, 0xAD, 0x85, 0x19, 0x30, 0x02, 0xF5, 0x03, 0xB7, 0x03, 0xB8, 0x03, 0x56, 0x11, 0x4F, 0x02, 0x18, 0xAD, 0x80, 0x03, 0xB8, 0x01, 0x03, 0xB7, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x03, 0xB7, 0x03, 0xB8, 0x03, 0xB7, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x88, 0x18, 0xAE, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF4, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x81, 0x9A, 0xB3, 0xD3, 0x75, 0x0D, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x02, 0xD3, 0x95, 0x80, 0x41, 0x2F, 0x21, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF8, 0x03, 0x01, 0x19, 0x84, 0x08, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x03, 0xB7, 0x81, 0x03, 0x97, 0x03, 0xB7, 0x53, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x87, 0x19, 0x0F, 0x03, 0x77, 0x03, 0x97, 0x03, 0xB8, 0x03, 0x98, 0x03, 0x97, 0x0B, 0x77, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x82, 0x03, 0xB7, 0x03, 0x97, 0x03, + 0xB8, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x03, 0xB7, 0x0B, 0xB7, 0x03, 0x98, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x14, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x05, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0xC3, 0x55, 0x12, 0xD3, 0x95, 0x80, 0x49, 0x70, 0x23, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x03, 0x03, 0xB7, 0x81, 0x03, 0xB8, 0x03, 0xB7, 0x55, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x12, 0x53, 0x0B, 0x78, 0x0B, 0x98, 0x0B, 0x78, 0x01, 0x0B, 0x98, 0x81, 0x13, 0x78, 0x11, 0xF2, 0x01, 0x18, 0xAD, 0x80, 0x0B, 0x98, 0x01, 0x0B, 0x78, 0x05, 0x18, 0xAD, 0x84, 0x0B, 0x98, 0x13, 0x78, 0x0B, 0x78, 0x18, 0xAD, 0x20, 0xAE, 0x15, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x87, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x05, 0x20, 0xAE, 0x83, 0x20, 0xCE, 0x49, 0x70, 0xD3, 0x95, 0xD3, 0x75, 0x10, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0x82, 0x52, 0x02, 0x20, + 0xAE, 0x1E, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF4, 0x01, 0x01, 0x19, 0x1B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x12, 0x18, 0xAD, 0x80, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x80, 0x03, 0xB8, 0x04, 0x03, 0xB7, 0x54, 0x18, 0xAD, 0x89, 0x18, 0xAE, 0x18, 0xAD, 0x1A, 0xB5, 0x1B, 0x78, 0x1B, 0x58, 0x13, 0x58, 0x1B, 0x78, 0x13, 0x78, 0x13, 0x58, 0x1A, 0x13, 0x01, 0x18, 0xAE, 0x01, 0x13, 0x58, 0x82, 0x13, 0x78, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x02, 0x13, 0x58, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x10, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x20, 0xAE, 0x80, 0x18, 0xAD, 0x04, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x80, 0x7A, 0x32, 0x0F, 0xD3, 0x95, 0x86, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x75, 0xD3, 0x95, 0xC3, 0x54, 0x59, 0x90, 0x20, 0xAD, 0x03, 0x20, 0xAE, 0x1C, 0x18, 0xAD, 0x80, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x80, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x05, 0x03, 0xB7, 0x56, 0x18, 0xAD, 0x80, 0x1A, 0x54, 0x01, 0x1B, 0x38, 0x84, 0x23, 0x38, 0x1B, 0x38, 0x1B, 0x58, 0x23, 0x38, 0x21, 0xD2, 0x01, 0x18, 0xAD, 0x01, 0x23, 0x38, 0x81, 0x23, 0x58, + 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x85, 0x19, 0x30, 0x23, 0x39, 0x23, 0x58, 0x23, 0x38, 0x18, 0xAD, 0x20, 0xAD, 0x16, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x82, 0x08, 0xF5, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x80, 0xA2, 0xB3, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x0B, 0xD3, 0x95, 0x03, 0xD3, 0x75, 0x80, 0x49, 0x70, 0x05, 0x20, 0xAE, 0x1B, 0x18, 0xAD, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD3, 0x01, 0x01, 0x1A, 0x80, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x03, 0x03, 0xB7, 0x80, 0x18, 0xAE, 0x55, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x21, 0x50, 0x2B, 0x18, 0x2B, 0x39, 0x2B, 0x18, 0x01, 0x2B, 0x19, 0x81, 0x2A, 0xF8, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x87, 0x2B, 0x19, 0x2B, 0x18, 0x2B, 0x19, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xAD, 0x21, 0x92, 0x01, 0x2B, 0x19, 0x83, 0x2B, 0x18, 0x23, 0x38, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x82, 0x10, 0xCF, 0x01, 0x19, 0x01, 0x1A, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x80, 0xBB, 0x34, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x0B, 0xD3, 0x95, 0x06, 0xD3, 0x75, 0x81, + 0x49, 0x70, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x19, 0x18, 0xAD, 0x80, 0x08, 0xD5, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x01, 0x17, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x1B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x04, 0x03, 0xB7, 0x80, 0x03, 0xB8, 0x03, 0x18, 0xAD, 0x85, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xD3, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x2D, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x21, 0x92, 0x2B, 0x19, 0x33, 0x19, 0x32, 0xF9, 0x2A, 0x15, 0x18, 0xEF, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x32, 0xF9, 0x33, 0x19, 0x32, 0xF9, 0x02, 0x18, 0xAD, 0x85, 0x21, 0x91, 0x33, 0x19, 0x2A, 0xF9, 0x33, 0x19, 0x2A, 0xF9, 0x2A, 0x97, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x1C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1B, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x03, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x02, 0x20, 0xCF, 0x80, 0x28, 0xCF, 0x10, 0xD3, 0x95, 0x05, 0xD3, 0x75, 0x80, 0x71, 0xD1, 0x05, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xCD, 0x01, 0x20, 0xAE, 0x17, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x85, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x04, 0x03, + 0xB7, 0x84, 0x03, 0xB8, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x1E, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x2B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x3A, 0xD9, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x3A, 0xF9, 0x01, 0x3A, 0xD9, 0x89, 0x18, 0xAD, 0x20, 0xAD, 0x32, 0x15, 0x3A, 0xD9, 0x3A, 0xF9, 0x3A, 0xDA, 0x3A, 0xD9, 0x32, 0x77, 0x18, 0xCE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x1E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x80, 0x20, 0xCD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x80, 0x20, 0xCF, 0x01, 0x28, 0xCF, 0x80, 0x49, 0x50, 0x0F, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x81, 0xD3, 0x74, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x85, 0xAA, 0xB3, 0x20, 0xCE, 0x18, 0xCE, 0x20, 0xCE, 0x20, 0xAE, 0x20, 0xCE, 0x06, 0x20, 0xAE, 0x14, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x10, 0xD3, 0x08, 0xF3, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x03, 0x03, 0x98, 0x81, 0x03, 0xB7, 0x03, 0x97, 0x01, 0x18, 0xAD, 0x84, 0x08, 0xF5, 0x01, 0x39, 0x01, 0x1A, 0x01, 0x17, 0x00, 0xF7, 0x01, 0x01, 0x1A, 0x80, 0x08, 0xF5, 0x1F, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xAE, 0x2B, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x42, 0xD9, 0x01, 0x42, 0xB9, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x42, 0xB9, + 0x88, 0x42, 0xBA, 0x18, 0xAE, 0x31, 0xF5, 0x42, 0xDA, 0x42, 0xD9, 0x42, 0xB9, 0x42, 0xD9, 0x3A, 0x77, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x1B, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x19, 0x01, 0x1A, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1C, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x80, 0x59, 0x91, 0x0D, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x81, 0xD3, 0x74, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x81, 0x92, 0x52, 0x30, 0xEF, 0x03, 0x20, 0xCE, 0x06, 0x20, 0xAE, 0x12, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x23, 0x38, 0x81, 0x23, 0x18, 0x23, 0x19, 0x01, 0x23, 0x38, 0x01, 0x18, 0xAD, 0x82, 0x00, 0xF9, 0x01, 0x19, 0x10, 0xD3, 0x01, 0x18, 0xAD, 0x83, 0x10, 0xF3, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x19, 0x01, 0x19, 0x82, 0x18, 0xB0, 0x18, 0xAD, 0x18, 0xAE, 0x30, 0x18, 0xAD, 0x82, 0x4A, 0x99, 0x4A, 0xB9, 0x4A, 0x9A, 0x04, 0x18, 0xAD, 0x01, 0x4A, 0xBA, 0x82, 0x4A, 0x9A, 0x42, 0x57, 0x4A, 0x99, 0x01, 0x4A, 0x9A, 0x87, 0x4A, 0xBA, 0x42, 0x37, 0x20, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xCD, 0x1B, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x1A, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x80, 0x20, + 0xAD, 0x01, 0x20, 0xAE, 0x01, 0x01, 0x19, 0x80, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x80, 0x28, 0xCE, 0x02, 0x28, 0xCF, 0x81, 0x28, 0xEF, 0x69, 0xF1, 0x0D, 0xD3, 0x95, 0x03, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x84, 0xD3, 0x35, 0xD3, 0x55, 0xCB, 0x14, 0x41, 0x30, 0x20, 0xAF, 0x01, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x12, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0x8E, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x12, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x42, 0xB9, 0x4A, 0x99, 0x42, 0xB9, 0x42, 0xBA, 0x02, 0x18, 0xAD, 0x86, 0x18, 0xAF, 0x01, 0x1A, 0x00, 0xF9, 0x10, 0xD0, 0x18, 0xAD, 0x20, 0xAD, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x19, 0x01, 0x19, 0x81, 0x01, 0x18, 0x10, 0xD0, 0x31, 0x18, 0xAD, 0x02, 0x52, 0x7A, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x52, 0x7A, 0x80, 0x52, 0x9A, 0x03, 0x52, 0x7A, 0x81, 0x4A, 0x18, 0x20, 0xCE, 0x01, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x1F, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x00, 0xF9, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x10, 0xD1, 0x01, 0x17, 0x01, 0x01, 0x19, 0x84, 0x09, 0x17, 0x18, 0xD2, 0x20, 0xCE, 0x20, 0xCF, 0x28, 0xCE, 0x02, 0x28, 0xCF, 0x82, 0x28, 0xEF, 0x30, 0xF0, 0x82, 0x53, 0x0C, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x05, 0xD3, 0x55, 0x83, 0xD3, + 0x54, 0xD3, 0x55, 0x7A, 0x11, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xCE, 0x07, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x0F, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x02, 0x6A, 0x3B, 0x80, 0x62, 0x1A, 0x01, 0x6A, 0x3B, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD3, 0x18, 0xAD, 0x20, 0xAE, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x85, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x2A, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x86, 0x20, 0xAD, 0x5A, 0x5B, 0x5A, 0x5A, 0x5A, 0x7A, 0x29, 0x10, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x5A, 0x5A, 0x5A, 0x7B, 0x03, 0x5A, 0x5A, 0x81, 0x4A, 0x18, 0x20, 0xCE, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x1B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x80, 0x10, 0xD1, 0x03, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x09, 0x1A, 0x18, 0xF2, 0x28, 0xCF, 0x28, 0xCE, 0x01, 0x28, 0xCF, 0x83, 0x28, 0xEF, 0x28, 0xF0, 0x30, 0xF0, 0x82, 0x32, 0x0B, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x81, 0xA2, 0x93, 0x28, 0xCF, 0x07, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x80, 0x20, 0xAE, 0x12, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAE, + 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x02, 0x89, 0xBC, 0x82, 0x91, 0xBC, 0x89, 0xBC, 0x89, 0x9C, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x01, 0x17, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x19, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xD0, 0x18, 0xAE, 0x2E, 0x18, 0xAD, 0x85, 0x62, 0x3A, 0x62, 0x3B, 0x62, 0x5A, 0x62, 0x1A, 0x29, 0x10, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x82, 0x62, 0x3B, 0x62, 0x3A, 0x62, 0x5A, 0x01, 0x62, 0x3B, 0x81, 0x51, 0xF8, 0x20, 0xCE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x21, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x82, 0x01, 0x18, 0x01, 0x19, 0x09, 0x17, 0x01, 0x18, 0xD2, 0x82, 0x09, 0x18, 0x09, 0x1A, 0x09, 0x18, 0x01, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x80, 0x30, 0xD0, 0x01, 0x30, 0xF0, 0x80, 0x82, 0x52, 0x09, 0xD3, 0x95, 0x06, 0xD3, 0x75, 0x03, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x85, 0xD3, 0x15, 0xD3, 0x35, 0x92, 0x53, 0x30, 0xEF, 0x28, 0xCF, 0x28, 0xCE, 0x05, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x09, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x02, 0xA9, + 0x3D, 0x80, 0xB1, 0x3D, 0x01, 0xA9, 0x3D, 0x83, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x84, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xD0, 0x18, 0xAE, 0x2B, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xCD, 0x59, 0xD8, 0x03, 0x6A, 0x1B, 0x80, 0x41, 0x33, 0x01, 0x18, 0xAD, 0x80, 0x6A, 0x3B, 0x02, 0x6A, 0x1B, 0x81, 0x51, 0xB6, 0x20, 0xCF, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x84, 0x10, 0xD2, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD3, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xD1, 0x01, 0x20, 0xCE, 0x80, 0x18, 0xD1, 0x01, 0x09, 0x3A, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x30, 0xF0, 0x81, 0x38, 0xF0, 0x92, 0x73, 0x09, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x81, 0xD3, 0x34, 0xD3, 0x35, 0x01, 0xD3, 0x34, 0x82, 0xD3, 0x14, 0xD3, 0x15, 0xAA, 0x93, 0x02, 0x28, 0xCF, 0x07, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x80, 0x20, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x09, 0x18, 0xAD, 0x02, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x12, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x05, 0xD0, 0xBE, 0x03, 0x18, 0xAD, 0x84, 0x10, 0xD2, 0x08, 0xD4, 0x08, 0xF3, 0x10, 0xD2, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0D, 0x18, 0xAD, + 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x81, 0x18, 0xD0, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x22, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xCE, 0x61, 0xB8, 0x72, 0x1B, 0x71, 0xFB, 0x01, 0x72, 0x1B, 0x88, 0x41, 0x33, 0x20, 0xAD, 0x71, 0xFB, 0x72, 0x1B, 0x71, 0xFB, 0x41, 0x74, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x19, 0x18, 0xAD, 0x86, 0x20, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xD1, 0x20, 0xAE, 0x20, 0xCE, 0x20, 0xF1, 0x01, 0x09, 0x3A, 0x01, 0x28, 0xCF, 0x80, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x82, 0x38, 0xF0, 0x39, 0x11, 0xAA, 0xF4, 0x08, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x05, 0xD3, 0x55, 0x05, 0xD3, 0x35, 0x01, 0xD3, 0x14, 0x80, 0xD3, 0x15, 0x01, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x01, 0x28, 0xCE, 0x05, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x80, 0x18, 0xAE, 0x01, 0x20, 0xAD, 0x8C, 0x20, 0xAE, 0x30, 0xEE, 0x61, 0x50, 0x81, 0xB1, 0xA1, 0xF2, 0xC2, 0x33, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0xC2, 0x33, 0xA1, 0xF2, 0x81, 0x91, 0x51, 0x2F, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x10, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x05, 0xF0, 0x3F, + 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x01, 0x19, 0x80, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x21, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x8A, 0x20, 0xCE, 0x69, 0xB9, 0x81, 0xFB, 0x79, 0xDB, 0x79, 0xDC, 0x81, 0xFC, 0x59, 0x76, 0x79, 0xDB, 0x79, 0xDC, 0x81, 0xDC, 0x20, 0xAD, 0x1E, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x19, 0x18, 0xAD, 0x8B, 0x20, 0xAE, 0x09, 0x18, 0x01, 0x19, 0x09, 0x17, 0x18, 0xD0, 0x20, 0xD0, 0x09, 0x17, 0x09, 0x3A, 0x11, 0x38, 0x28, 0xCF, 0x30, 0xCF, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x01, 0x39, 0x11, 0x80, 0xAA, 0xD4, 0x07, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x06, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x81, 0xD3, 0x15, 0xD3, 0x14, 0x01, 0xD3, 0x15, 0x82, 0xD3, 0x14, 0x69, 0xB2, 0x28, 0xEF, 0x04, 0x28, 0xCF, 0x01, 0x28, 0xCE, 0x07, 0x20, 0xCE, 0x89, 0x20, 0xAE, 0x20, 0xCE, 0x41, 0x0F, 0x69, 0x90, 0x99, 0xF2, 0xC2, 0x53, 0xCA, 0x74, 0xD2, 0x74, 0xCA, 0x74, 0xD2, 0x53, 0x02, 0xCA, 0x53, 0x87, 0xD2, 0x33, 0xD2, 0x53, 0xCA, 0x53, 0xD2, 0x33, 0xCA, 0x33, 0xC2, 0x13, 0x89, 0x91, 0x41, 0x0F, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, + 0xCD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x17, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x09, 0x17, 0x01, 0x01, 0x19, 0x81, 0x10, 0xCF, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x28, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x84, 0x20, 0xAE, 0x71, 0x99, 0x89, 0xDB, 0x89, 0xBC, 0x81, 0xBC, 0x03, 0x89, 0xBC, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1E, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x06, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xD2, 0x01, 0x01, 0x19, 0x03, 0x09, 0x3A, 0x82, 0x20, 0xF2, 0x28, 0xCF, 0x28, 0xF0, 0x01, 0x30, 0xF0, 0x80, 0x31, 0x11, 0x01, 0x39, 0x11, 0x80, 0xB2, 0xF5, 0x05, 0xD3, 0x95, 0x05, 0xD3, 0x75, 0x06, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x01, 0xD3, 0x15, 0x01, 0xD3, 0x14, 0x86, 0xD2, 0xF4, 0xD2, 0xF5, 0xCA, 0xD4, 0x59, 0x71, 0x30, 0xF0, 0x30, 0xD0, 0x28, 0xEF, 0x05, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x83, 0x28, 0xCE, 0x38, 0xEF, 0x79, 0xB1, 0xBA, 0x53, 0x01, 0xCA, 0x94, 0x80, 0xCA, 0x74, 0x01, 0xD2, 0x73, 0x85, 0xCA, 0x73, 0xCA, 0x54, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0xCA, 0x33, 0x01, 0xCA, 0x53, 0x02, 0xCA, 0x33, 0x80, 0xD2, 0x13, 0x01, 0xCA, 0x13, 0x83, 0xA1, 0xB2, 0x49, 0x0F, 0x18, 0xAD, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x80, 0x18, 0xAE, + 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xCD, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xB0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x27, 0x18, 0xAD, 0x81, 0x20, 0xCE, 0x79, 0x79, 0x01, 0x91, 0x9C, 0x84, 0x91, 0xBC, 0x91, 0x9C, 0x89, 0x9C, 0x89, 0xBC, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x1C, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xF2, 0x17, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x82, 0x20, 0xCE, 0x18, 0xF2, 0x09, 0x19, 0x01, 0x09, 0x1A, 0x82, 0x09, 0x19, 0x20, 0xF3, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x80, 0x31, 0x10, 0x01, 0x39, 0x11, 0x81, 0x41, 0x12, 0xB2, 0xF5, 0x05, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x06, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x80, 0xD3, 0x15, 0x02, 0xD3, 0x14, 0x82, 0xD2, 0xF4, 0xD3, 0x14, 0xD2, 0xF5, 0x01, 0xD2, 0xF4, 0x83, 0x49, 0x30, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xF0, 0x02, 0x28, 0xCF, 0x81, 0x28, 0xEF, 0x28, 0xCE, 0x02, 0x28, 0xCF, 0x81, 0x41, 0x30, 0x89, 0xF1, 0x01, 0xD2, 0x94, 0x82, 0xCA, 0x93, 0xCA, 0x74, 0xD2, 0x74, 0x01, 0xCA, 0x74, 0x83, 0xCA, 0x53, 0xCA, 0x73, 0xD2, 0x53, 0xD2, 0x54, 0x01, 0xCA, 0x53, 0x8C, 0xCA, 0x54, 0xC2, 0x74, 0x9B, + 0x36, 0x83, 0xB8, 0x64, 0x19, 0x6C, 0x39, 0x64, 0x39, 0x6C, 0x1A, 0x8B, 0x57, 0xB2, 0x95, 0xCA, 0x13, 0x91, 0x91, 0x28, 0xCE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x11, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAF, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x25, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x28, 0xAE, 0x81, 0x59, 0x91, 0x7C, 0x01, 0x99, 0x7C, 0x01, 0x99, 0x9C, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xD5, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x85, 0x08, 0xF4, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x81, 0x20, 0xD0, 0x20, 0xD1, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x01, 0x30, 0xF0, 0x82, 0x31, 0x10, 0x39, 0x10, 0x41, 0x11, 0x01, 0x41, 0x12, 0x80, 0x92, 0x94, 0x04, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x05, 0xD3, 0x55, 0x04, 0xD3, 0x35, 0x01, 0xD3, 0x15, 0x80, 0xD3, 0x14, 0x01, 0xD2, 0xF4, 0x86, 0xD3, 0x15, 0xD2, 0xF4, 0xD2, 0xF5, 0xD2, 0xF4, 0xD2, 0xD5, 0x79, 0xD2, 0x31, 0x10, 0x02, 0x30, 0xF0, 0x87, 0x28, 0xF0, 0x30, 0xD0, 0x28, 0xEF, + 0x28, 0xF0, 0x28, 0xCF, 0x51, 0x50, 0xAA, 0x32, 0xD2, 0x93, 0x01, 0xD2, 0x94, 0x80, 0xCA, 0x93, 0x03, 0xCA, 0x74, 0x8A, 0xD2, 0x74, 0xD2, 0x54, 0xCA, 0x53, 0xCA, 0x54, 0xB2, 0xD5, 0x83, 0xB8, 0x44, 0xFC, 0x1D, 0xBE, 0x06, 0x3F, 0x0C, 0xDB, 0x0B, 0x76, 0x01, 0x13, 0x77, 0x86, 0x0B, 0x76, 0x13, 0x56, 0x0B, 0x76, 0x0B, 0x77, 0x23, 0xF8, 0x69, 0x91, 0x51, 0x0F, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x06, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x13, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xAF, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x20, 0xAE, 0x89, 0x39, 0x01, 0xA1, 0x7C, 0x01, 0xA1, 0x5D, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x16, 0x18, 0xAD, 0x04, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x80, 0x28, 0xCE, 0x01, 0x28, 0xCF, 0x83, 0x28, 0xEF, 0x28, 0xF0, 0x30, 0xF0, 0x31, 0x10, 0x02, 0x39, 0x11, 0x82, 0x41, 0x12, 0x41, 0x32, 0x8A, 0x54, 0x03, 0xD3, 0x95, 0x04, + 0xD3, 0x75, 0x06, 0xD3, 0x55, 0x02, 0xD3, 0x35, 0x02, 0xD3, 0x15, 0x02, 0xD3, 0x14, 0x01, 0xD2, 0xF4, 0x80, 0xD2, 0xF5, 0x01, 0xD2, 0xF4, 0x83, 0xD2, 0xD4, 0xCA, 0xD4, 0x59, 0x51, 0x38, 0xF0, 0x04, 0x30, 0xF0, 0x81, 0x41, 0x30, 0x91, 0xF2, 0x01, 0xD2, 0x94, 0x81, 0xCA, 0x94, 0xCA, 0x74, 0x01, 0xCA, 0x94, 0x80, 0xCA, 0x74, 0x02, 0xD2, 0x74, 0x8A, 0xD2, 0x53, 0xB2, 0xD5, 0x74, 0x19, 0x25, 0x7D, 0x06, 0x3F, 0x06, 0x1F, 0x05, 0x7D, 0x12, 0xB5, 0x19, 0x0F, 0x18, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x09, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x01, 0x17, 0x01, 0x01, 0x19, 0x80, 0x18, 0xB0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x2A, 0x18, 0xAD, 0x84, 0x20, 0xCE, 0x91, 0x3A, 0xA9, 0x3D, 0xA9, 0x5D, 0xA9, 0x5C, 0x21, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAE, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x84, 0x20, 0xCF, 0x28, 0xCE, 0x28, 0xCF, 0x28, 0xEF, 0x28, 0xF0, 0x01, 0x30, 0xF0, 0x02, 0x39, 0x11, 0x01, 0x41, 0x32, 0x81, 0x49, 0x32, 0x92, 0x55, 0x01, + 0xD3, 0x95, 0x05, 0xD3, 0x75, 0x05, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x02, 0xD3, 0x15, 0x02, 0xD3, 0x14, 0x81, 0xD2, 0xF4, 0xD2, 0xF5, 0x03, 0xD2, 0xF4, 0x01, 0xD2, 0xD4, 0x89, 0xCA, 0xB4, 0x51, 0x72, 0x39, 0x11, 0x38, 0xF1, 0x38, 0xF0, 0x30, 0xF0, 0x81, 0xD2, 0xC2, 0x94, 0xD2, 0x94, 0xD2, 0x93, 0x01, 0xD2, 0x94, 0x01, 0xCA, 0x93, 0x01, 0xD2, 0x74, 0x84, 0xCA, 0x73, 0xD2, 0x74, 0x83, 0xD8, 0x35, 0x3D, 0x06, 0x1F, 0x02, 0x06, 0x3F, 0x81, 0x4C, 0x5A, 0x49, 0x70, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x01, 0x20, 0xAD, 0x82, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x10, 0xD2, 0x08, 0xF3, 0x08, 0xD4, 0x10, 0xD2, 0x07, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x2D, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0xB1, 0x1D, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x1A, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x81, 0x08, 0xD5, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x12, 0x18, 0xAD, 0x02, + 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x81, 0x28, 0xCF, 0x20, 0xCF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x01, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x84, 0x41, 0x12, 0x41, 0x32, 0x49, 0x32, 0x49, 0x53, 0x6B, 0x36, 0x01, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x06, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x80, 0xD3, 0x15, 0x04, 0xD3, 0x14, 0x02, 0xD2, 0xF4, 0x80, 0xD2, 0xF5, 0x01, 0xD2, 0xD4, 0x93, 0xD2, 0xD5, 0xD2, 0xD4, 0xCA, 0xD4, 0xCA, 0xB4, 0x59, 0x72, 0x39, 0x11, 0x51, 0x51, 0xB2, 0x53, 0xCA, 0xB4, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xCA, 0x74, 0xD2, 0x74, 0xC2, 0x94, 0x64, 0x5A, 0x1D, 0xBE, 0x02, 0x06, 0x3F, 0x84, 0x1D, 0xBE, 0x64, 0x59, 0xC2, 0x74, 0x99, 0xD2, 0x28, 0xCE, 0x03, 0x20, 0xAE, 0x80, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x19, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x81, 0x18, 0xAF, 0x01, 0x17, 0x03, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x0A, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x81, 0x18, 0xD0, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x82, 0xB8, 0xFE, + 0xB8, 0xFD, 0xB8, 0xFE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x83, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x17, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x03, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x81, 0x28, 0xEF, 0x28, 0xF0, 0x01, 0x30, 0xF0, 0x01, 0x39, 0x11, 0x80, 0x41, 0x11, 0x01, 0x41, 0x32, 0x84, 0x49, 0x33, 0x49, 0x53, 0x25, 0x3B, 0x46, 0x5C, 0x6D, 0x7B, 0x01, 0x6D, 0x9A, 0x83, 0x6D, 0x7A, 0x84, 0xF9, 0x9C, 0x78, 0x9C, 0x77, 0x01, 0x9C, 0x78, 0x81, 0x9C, 0x57, 0x9C, 0x78, 0x01, 0x9C, 0x58, 0x88, 0xBB, 0xB6, 0xD3, 0x34, 0xD3, 0x15, 0xD3, 0x34, 0xD3, 0x15, 0xD3, 0x14, 0xD3, 0x15, 0xD2, 0xF4, 0xCA, 0xF4, 0x02, 0xD2, 0xF4, 0x82, 0xD2, 0xF5, 0xD2, 0xD4, 0xCA, 0xD4, 0x01, 0xD2, 0xD4, 0x85, 0xCA, 0xD4, 0xCA, 0xB4, 0xD2, 0xD4, 0x91, 0xF3, 0x59, 0x72, 0xCA, 0x74, 0x01, 0xD2, 0xB4, 0x81, 0xD2, 0x94, 0xCA, 0x94, 0x01, 0xD2, 0x94, 0x84, 0xCA, 0x94, 0xCA, 0x74, 0xC2, 0xB4, 0x6C, 0x5A, 0x0D, 0xFF, 0x02, 0x06, 0x3F, 0x84, 0x35, 0x3D, 0x83, 0xB8, 0xCA, 0x53, 0xCA, 0x33, 0x89, 0xB1, 0x01, 0x20, 0xCE, 0x06, 0x20, 0xAE, 0x19, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xCD, 0x30, 0x18, 0xAD, 0x81, 0x08, 0xF5, 0x00, 0xF9, 0x03, 0x01, 0x19, 0x84, 0x00, 0xF9, 0x08, 0xF5, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, + 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x01, 0x19, 0x81, 0x18, 0xD0, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x16, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x89, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0xC0, 0xDE, 0xC0, 0xFE, 0xC0, 0xDD, 0x18, 0xAE, 0x18, 0xCD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x19, 0x18, 0xAD, 0x86, 0x00, 0xF9, 0x00, 0xFA, 0x08, 0xF4, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x16, 0x18, 0xAD, 0x04, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x80, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x8C, 0x39, 0x11, 0x38, 0xF1, 0x39, 0x11, 0x41, 0x12, 0x41, 0x32, 0x49, 0x32, 0x49, 0x53, 0x51, 0x53, 0x4D, 0x1A, 0x6D, 0x9A, 0x94, 0xB9, 0x9C, 0x98, 0x9C, 0x77, 0x02, 0x9C, 0x78, 0x80, 0x94, 0xB8, 0x01, 0x6D, 0x7A, 0x89, 0x6D, 0x7B, 0x36, 0x7C, 0x36, 0x7D, 0x1E, 0xFE, 0x07, 0x7F, 0x07, 0x5F, 0x1E, 0xDE, 0x36, 0x3D, 0x6D, 0x3A, 0x9C, 0x17, 0x04, 0xD2, 0xF4, 0x80, 0xD2, 0xF5, 0x03, 0xD2, 0xD4, 0x86, 0xCA, 0xD4, 0xD2, 0xB4, 0xCA, 0xD4, 0xD2, 0xB3, 0xCA, 0xB4, 0xC2, 0x94, 0xCA, 0xB4, 0x01, 0xCA, 0x94, 0x81, 0xD2, 0x94, 0xCA, 0x94, 0x02, 0xCA, 0x74, 0x8B, 0x7B, 0xD8, 0x0D, 0xFF, 0x06, 0x3F, 0x06, 0x1F, 0x06, 0x3F, 0x4C, 0xBB, 0x9B, 0x57, 0xD2, 0x33, 0xCA, 0x33, 0xCA, 0x53, 0x61, 0x50, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x05, + 0x20, 0xAE, 0x16, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x27, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x85, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x09, 0x17, 0x01, 0x01, 0x19, 0x80, 0x18, 0xCF, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xCD, 0x16, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x82, 0xC8, 0xBE, 0xC8, 0xDE, 0xC8, 0xBE, 0x01, 0x18, 0xAD, 0x02, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x05, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x16, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x02, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x80, 0x39, 0x12, 0x01, 0x41, 0x32, 0x82, 0x49, 0x33, 0x51, 0x53, 0xA2, 0xB5, 0x04, 0xD3, 0x75, 0x03, 0xD3, 0x55, 0x82, 0xD3, 0x35, 0xD3, 0x55, 0xD3, 0x34, 0x03, 0xD3, 0x35, 0x8B, 0xBB, 0x96, 0xA4, 0x37, 0x74, 0xF9, 0x4D, 0xBC, 0x2E, 0x7E, 0x0E, 0xDF, 0x55, 0x9B, 0x84, 0x98, 0xC3, 0x35, 0xD2, 0xF4, 0xD2, 0xD4, 0xD2, 0xF5, 0x01, 0xD2, 0xD4, 0x81, 0xD2, 0xB5, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x80, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x94, 0xBA, 0xB4, 0xBA, 0xF6, 0xCA, 0x94, + 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x73, 0x9B, 0x76, 0x1D, 0xBE, 0x06, 0x1F, 0x06, 0x3F, 0x0D, 0xDF, 0x64, 0x3A, 0xB2, 0xD5, 0xCA, 0x54, 0xD2, 0x53, 0xCA, 0x53, 0xC2, 0x94, 0x59, 0xB1, 0x28, 0xCE, 0x28, 0xCF, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x06, 0x20, 0xAE, 0x15, 0x18, 0xAD, 0x85, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x2E, 0x18, 0xAD, 0x80, 0x01, 0x1A, 0x06, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xAF, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xCD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x8B, 0x20, 0xAD, 0x40, 0xB0, 0xA0, 0x9A, 0xD0, 0xBE, 0xD0, 0x9E, 0xD0, 0xBE, 0xB8, 0x9C, 0x78, 0xB5, 0x28, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x20, 0xAD, 0x14, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x03, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x80, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x01, 0x41, 0x12, 0x84, 0x49, 0x32, 0x49, 0x33, 0x51, 0x73, 0xBB, 0x15, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x05, 0xD3, 0x55, 0x81, 0xD3, 0x35, 0xD3, + 0x55, 0x01, 0xD3, 0x35, 0x01, 0xD3, 0x14, 0x83, 0xD3, 0x35, 0xD3, 0x15, 0xD3, 0x14, 0xD3, 0x15, 0x01, 0xD2, 0xF5, 0x88, 0xD2, 0xF4, 0x9B, 0xF7, 0x6D, 0x1A, 0x2E, 0x3D, 0x45, 0xBC, 0x94, 0x18, 0xD2, 0xD4, 0xCA, 0xD4, 0xD2, 0xD4, 0x02, 0xD2, 0xB4, 0x81, 0xCA, 0xB4, 0xD2, 0xB4, 0x02, 0xD2, 0x94, 0x84, 0xC2, 0xD4, 0x4C, 0xDB, 0x7B, 0xD8, 0x9B, 0x57, 0x44, 0xFC, 0x01, 0x06, 0x3F, 0x89, 0x1D, 0xBE, 0x83, 0xD8, 0xC2, 0x94, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x33, 0xCA, 0x53, 0xB2, 0xB5, 0x33, 0xB8, 0x28, 0xF0, 0x02, 0x28, 0xCF, 0x01, 0x20, 0xCF, 0x04, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x16, 0x18, 0xAD, 0x88, 0x18, 0x8E, 0x20, 0xCD, 0x10, 0xD1, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD1, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x27, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x86, 0x20, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x10, 0xD0, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x83, 0x20, 0xAE, 0x40, 0xB0, 0xD0, 0x7D, 0xD8, 0x7E, 0x01, 0xD8, 0x9F, 0x85, 0xE0, 0x7F, 0xD8, 0x9E, 0xD8, 0x9F, 0xB8, 0x7B, 0x28, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x20, 0xAD, + 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x20, 0xAD, 0x12, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x80, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x01, 0x28, 0xCF, 0x02, 0x28, 0xEF, 0x01, 0x30, 0xF0, 0x80, 0x31, 0x10, 0x02, 0x39, 0x11, 0x01, 0x41, 0x32, 0x82, 0x49, 0x33, 0x51, 0x74, 0xBB, 0x14, 0x04, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x81, 0xD3, 0x35, 0xD3, 0x34, 0x02, 0xD3, 0x35, 0x82, 0xD3, 0x14, 0xD3, 0x35, 0xD3, 0x15, 0x01, 0xD3, 0x14, 0x80, 0xD3, 0x15, 0x03, 0xD2, 0xF4, 0x88, 0xD2, 0xF5, 0xD2, 0xD4, 0xC3, 0x35, 0x84, 0x78, 0x4D, 0x7B, 0x4D, 0x5B, 0xAB, 0x96, 0xD2, 0xB4, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x81, 0xCA, 0x94, 0xCA, 0xB4, 0x01, 0xD2, 0x94, 0x82, 0xD2, 0x73, 0xC2, 0xB4, 0x5C, 0x9A, 0x01, 0x06, 0x1F, 0x81, 0x06, 0x3F, 0x74, 0x19, 0x01, 0xD2, 0x73, 0x01, 0xCA, 0x53, 0x84, 0xD2, 0x33, 0xCA, 0x53, 0xAA, 0xF6, 0x15, 0x3C, 0x29, 0x51, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x04, 0x20, 0xAE, 0x15, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x03, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x18, 0xCD, 0x29, 0x18, 0xAD, 0x80, 0x08, 0xF6, 0x04, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x83, + 0x10, 0xB0, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x20, 0x8D, 0x18, 0xAD, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xD3, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0xB0, 0x7A, 0x01, 0xE8, 0x5F, 0x8A, 0xE0, 0x7F, 0xE8, 0x5F, 0xE8, 0x7F, 0xE0, 0x7F, 0xE8, 0x5F, 0xE0, 0x7F, 0x98, 0x98, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x20, 0xAD, 0x17, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xAD, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x07, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x80, 0x20, 0xCF, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x01, 0x30, 0xF0, 0x81, 0x31, 0x10, 0x39, 0x10, 0x01, 0x39, 0x11, 0x85, 0x41, 0x12, 0x41, 0x32, 0x49, 0x32, 0x51, 0x53, 0xBB, 0x15, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x83, 0xD3, 0x54, 0xD3, 0x55, 0xD3, 0x35, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x82, 0xD3, 0x15, 0xCB, 0x34, 0xD3, 0x15, 0x01, 0xD3, 0x14, 0x86, 0xD3, 0x15, 0xD3, 0x14, 0xD2, 0xF4, 0xD2, 0xF5, 0xD2, 0xF4, 0xCA, 0xF4, 0xD2, 0xF4, 0x01, 0xD2, 0xD4, 0x80, 0xD2, 0xD5, 0x01, 0xD2, 0xD4, 0x85, 0xBB, 0x55, 0x74, 0x99, 0x35, 0xDC, 0x84, 0x39, 0xC2, 0xF4, 0xD2, 0xB4, 0x02, 0xD2, 0x94, 0x84, 0xCA, 0x93, 0xD2, 0x94, 0xD2, 0x74, 0xCA, 0x74, 0x9B, 0x76, 0x01, 0x06, 0x1F, 0x81, 0x83, 0xD8, 0xC2, 0x95, 0x03, 0xCA, 0x53, 0x82, 0x7B, 0xB8, 0x06, 0x3F, 0x2A, + 0x34, 0x01, 0x30, 0xF0, 0x81, 0x30, 0xEF, 0x30, 0xF0, 0x04, 0x28, 0xCF, 0x04, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x10, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF9, 0x08, 0xD5, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x28, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x04, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x82, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x83, 0x38, 0xB0, 0xF0, 0x5F, 0xE8, 0x3F, 0xF0, 0x3F, 0x01, 0xF0, 0x5F, 0x02, 0xF0, 0x3F, 0x81, 0xF0, 0x5F, 0xE8, 0x3F, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x11, 0x18, 0xAD, 0x04, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x04, 0x28, 0xCF, 0x80, 0x30, 0xEF, 0x02, 0x30, 0xF0, 0x02, 0x39, 0x11, 0x85, 0x41, 0x12, 0x41, 0x32, 0x49, 0x33, 0x51, 0x73, 0xBB, 0x35, 0xD3, 0x95, 0x03, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x04, 0xD3, 0x35, 0x81, 0xCB, 0x35, 0xD3, 0x15, 0x03, 0xD3, 0x14, 0x02, 0xD2, 0xF4, 0x01, 0xD2, 0xF5, 0x82, 0xCA, 0xD4, 0xD2, 0xF4, + 0xCA, 0xD4, 0x01, 0xD2, 0xD4, 0x81, 0xCA, 0xB4, 0xD2, 0xB4, 0x01, 0xCA, 0xB4, 0x83, 0x8B, 0xF8, 0x3D, 0x5C, 0x64, 0x99, 0xC2, 0xD4, 0x01, 0xD2, 0x94, 0x01, 0xCA, 0x74, 0x80, 0xD2, 0x74, 0x01, 0xCA, 0x74, 0x8B, 0x54, 0xBB, 0x5C, 0x9A, 0x35, 0x3D, 0x1D, 0xBE, 0x4C, 0xBB, 0x93, 0x77, 0x9B, 0x36, 0x44, 0xFC, 0x06, 0x1F, 0x1B, 0xF9, 0x39, 0x11, 0x39, 0x10, 0x03, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x03, 0x28, 0xCF, 0x04, 0x20, 0xCE, 0x04, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x27, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x03, 0x01, 0x19, 0x84, 0x08, 0xF4, 0x10, 0xF3, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x83, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x18, 0xCE, 0x12, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x50, 0x92, 0x01, 0xF8, 0x3F, 0x80, 0xF0, 0x3F, 0x03, 0xF8, 0x3F, 0x83, 0xF8, 0x1F, 0xF0, 0x3F, 0xF8, 0x3F, 0x50, 0x92, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x10, 0x18, + 0xAD, 0x05, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x03, 0x30, 0xF0, 0x02, 0x39, 0x11, 0x84, 0x41, 0x12, 0x41, 0x32, 0x49, 0x32, 0x69, 0xB3, 0xC3, 0x55, 0x06, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x80, 0xD3, 0x15, 0x01, 0xD3, 0x35, 0x02, 0xD3, 0x14, 0x01, 0xD2, 0xF5, 0x03, 0xD2, 0xF4, 0x05, 0xD2, 0xD4, 0x81, 0xCA, 0xD4, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x94, 0xCA, 0xB4, 0xD2, 0x94, 0x9B, 0x97, 0x45, 0x3C, 0x6C, 0x59, 0xC2, 0xB4, 0xCA, 0x74, 0xD2, 0x74, 0xD2, 0x73, 0xCA, 0x73, 0xD2, 0x73, 0xC2, 0x94, 0x6C, 0x39, 0xC2, 0x94, 0xCA, 0x53, 0x8B, 0x98, 0x4C, 0xBB, 0x0D, 0xFF, 0x06, 0x3F, 0x0D, 0x7E, 0x39, 0x72, 0x02, 0x39, 0x11, 0x80, 0x38, 0xF0, 0x02, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x03, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x0E, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x03, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x20, 0xAD, 0x25, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xCD, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x10, 0xCF, 0x1C, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x13, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x50, 0x92, 0x09, 0xF8, 0x1F, 0x80, 0x50, 0x92, 0x1A, 0x18, 0xAD, 0x01, 0x01, + 0x19, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x04, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x81, 0x28, 0xCF, 0x28, 0xCE, 0x03, 0x28, 0xCF, 0x02, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x85, 0x41, 0x11, 0x41, 0x12, 0x41, 0x32, 0x49, 0x33, 0x92, 0x54, 0xD3, 0x95, 0x03, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x80, 0xD3, 0x55, 0x04, 0xD3, 0x35, 0x03, 0xD3, 0x14, 0x02, 0xD2, 0xF4, 0x81, 0xD2, 0xF5, 0xD2, 0xF4, 0x01, 0xD2, 0xD4, 0x85, 0xCA, 0xD4, 0xD2, 0xD4, 0xCA, 0xD4, 0xD2, 0xD4, 0xD2, 0xB4, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x80, 0xCA, 0xB4, 0x02, 0xD2, 0x94, 0x90, 0xCA, 0x94, 0x9B, 0x77, 0x44, 0xDC, 0x73, 0xF9, 0xCA, 0x73, 0xCA, 0x74, 0xD2, 0x54, 0xCA, 0x73, 0xCA, 0x53, 0xC2, 0x94, 0x35, 0x1C, 0x6C, 0x3A, 0xC2, 0x94, 0xD2, 0x53, 0xCA, 0x34, 0x83, 0xB8, 0x5A, 0x55, 0x01, 0x41, 0x32, 0x80, 0x39, 0x12, 0x01, 0x39, 0x11, 0x80, 0x39, 0x10, 0x02, 0x30, 0xF0, 0x81, 0x28, 0xF0, 0x28, 0xEF, 0x03, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x04, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x0F, 0x18, 0xAD, 0x05, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x23, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xB0, 0x01, 0x19, 0x01, 0x1A, 0x01, + 0x19, 0x00, 0xF8, 0x18, 0xD0, 0x1B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x01, 0x17, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x11, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x07, 0x18, 0xAD, 0x80, 0x40, 0x90, 0x09, 0xF8, 0x1F, 0x80, 0x28, 0xAF, 0x17, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x20, 0xAD, 0x01, 0x01, 0x19, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x80, 0x28, 0xF0, 0x02, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x80, 0x41, 0x12, 0x01, 0x41, 0x32, 0x81, 0x69, 0xD3, 0xC3, 0x55, 0x01, 0xD3, 0x95, 0x03, 0xD3, 0x75, 0x05, 0xD3, 0x55, 0x81, 0xD3, 0x35, 0xCB, 0x55, 0x02, 0xD3, 0x35, 0x80, 0xD3, 0x15, 0x03, 0xD3, 0x14, 0x04, 0xD2, 0xF4, 0x81, 0xCA, 0xD4, 0xD2, 0xF4, 0x01, 0xD2, 0xD4, 0x02, 0xD2, 0xB4, 0x02, 0xCA, 0xB4, 0x81, 0xD2, 0xB4, 0xCA, 0xB4, 0x02, 0xD2, 0x94, 0x85, 0xCA, 0x94, 0xD2, 0x74, 0xCA, 0x74, 0x8B, 0x78, 0x44, 0x7C, 0xA3, 0x16, 0x01, 0xD2, 0x53, 0x86, 0xCA, 0x54, 0xCA, 0x53, 0xC2, 0x94, 0x25, 0x7D, 0x0D, 0xDF, 0x83, 0xB8, 0xD2, 0x33, 0x01, 0xCA, 0x33, 0x81, 0xBA, 0x13, 0x79, 0x93, 0x01, 0x41, 0x12, 0x80, 0x41, 0x11, 0x01, 0x39, 0x11, 0x82, 0x38, 0xF0, 0x30, 0xF0, 0x28, 0xF0, 0x01, 0x30, 0xD0, 0x80, 0x28, + 0xEF, 0x02, 0x28, 0xCF, 0x05, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAE, 0x0B, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF9, 0x08, 0xF5, 0x24, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x89, 0x10, 0xCF, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xCF, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAE, 0x31, 0x18, 0xAD, 0x84, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x04, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0xD0, 0x3C, 0x07, 0xF8, 0x1F, 0x83, 0xD0, 0x3C, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x83, 0x00, 0xF9, 0x01, 0x19, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x04, 0x28, 0xCF, 0x03, 0x30, 0xF0, 0x02, 0x39, 0x11, 0x85, 0x41, 0x11, 0x41, 0x12, 0x51, 0x93, 0xAA, 0xD4, 0xD3, 0x75, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x05, 0xD3, 0x55, 0x02, 0xD3, 0x35, 0x01, 0xD3, 0x14, 0x80, 0xD3, 0x15, 0x03, 0xD3, 0x14, 0x80, 0xD3, 0x15, 0x03, 0xD2, 0xF4, 0x02, 0xD2, 0xD4, 0x80, 0xCA, 0xD4, 0x01, 0xD2, 0xB4, 0x82, 0xD2, 0xD4, 0xD2, 0xB4, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x81, 0xD2, 0x94, 0xD2, 0xB4, + 0x01, 0xCA, 0x94, 0x90, 0xD2, 0x94, 0xCA, 0x74, 0xCA, 0x73, 0xCA, 0x74, 0xD2, 0x74, 0xC2, 0x95, 0x6B, 0xB9, 0x6B, 0x99, 0xCA, 0x54, 0xCA, 0x53, 0xD2, 0x54, 0xCA, 0x33, 0xC2, 0x94, 0x24, 0xFD, 0x06, 0x3F, 0x35, 0x1D, 0xB2, 0x95, 0x02, 0xCA, 0x13, 0x84, 0xB9, 0xF3, 0x79, 0x92, 0x41, 0x11, 0x41, 0x12, 0x38, 0xF1, 0x01, 0x39, 0x11, 0x80, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x02, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x05, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x0B, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCF, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x25, 0x18, 0xAD, 0x87, 0x18, 0xCF, 0x01, 0x18, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x19, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x81, 0x00, 0xFA, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x02, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x40, 0x90, 0xF0, 0x3F, 0x06, 0xF8, 0x1F, 0x82, 0x60, 0x73, 0x20, 0xAD, 0x20, 0xAE, 0x13, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x82, 0x20, 0xCD, 0x20, 0xAE, 0x20, 0xAD, + 0x03, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x80, 0x28, 0xCE, 0x03, 0x28, 0xCF, 0x81, 0x30, 0xEF, 0x28, 0xF0, 0x02, 0x30, 0xF0, 0x82, 0x39, 0x10, 0x39, 0x11, 0x39, 0x12, 0x01, 0x41, 0x12, 0x83, 0x82, 0x33, 0xCB, 0x55, 0xD3, 0x75, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x03, 0xD3, 0x55, 0x04, 0xD3, 0x35, 0x82, 0xD3, 0x34, 0xD3, 0x14, 0xD3, 0x35, 0x01, 0xD3, 0x14, 0x05, 0xD2, 0xF4, 0x02, 0xD2, 0xD4, 0x81, 0xCA, 0xD4, 0xD2, 0xD4, 0x03, 0xD2, 0xB4, 0x80, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x80, 0xCA, 0xB4, 0x02, 0xD2, 0x94, 0x02, 0xCA, 0x74, 0x01, 0xCA, 0x73, 0x01, 0xCA, 0x53, 0x84, 0xCA, 0x74, 0xAA, 0xB6, 0x5B, 0x7A, 0xBA, 0x74, 0xCA, 0x53, 0x01, 0xCA, 0x33, 0x86, 0xC2, 0x54, 0x4B, 0xFB, 0x05, 0x9F, 0x0D, 0x7F, 0x8B, 0x57, 0xC9, 0xF3, 0xCA, 0x13, 0x01, 0xC9, 0xF3, 0x86, 0xA9, 0xB3, 0x59, 0x52, 0x41, 0x12, 0x39, 0x31, 0x39, 0x11, 0x31, 0x11, 0x31, 0x10, 0x01, 0x30, 0xF0, 0x81, 0x28, 0xF0, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x05, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x0D, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xD3, 0x10, 0xD2, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x23, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x85, 0x01, 0x18, 0x10, 0xCF, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x1E, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x13, 0x18, 0xAD, 0x89, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x81, 0x40, + 0x91, 0xE0, 0x1D, 0x04, 0xF8, 0x1F, 0x80, 0x70, 0x74, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x84, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x10, 0xD2, 0x20, 0xCD, 0x02, 0x18, 0xAD, 0x83, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x10, 0xD1, 0x01, 0x01, 0x19, 0x86, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xCD, 0x20, 0xAE, 0x20, 0xCD, 0x05, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x82, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xEF, 0x03, 0x30, 0xF0, 0x80, 0x39, 0x10, 0x01, 0x39, 0x11, 0x85, 0x39, 0x12, 0x41, 0x32, 0x49, 0x53, 0xB2, 0xF4, 0xD3, 0x95, 0xDB, 0x95, 0x05, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x83, 0xD3, 0x34, 0x84, 0xF9, 0x46, 0x7D, 0x1F, 0x5E, 0x02, 0x07, 0xDF, 0x08, 0x07, 0xBF, 0x88, 0x07, 0x9F, 0x1F, 0x1E, 0x36, 0x7D, 0x36, 0x7C, 0x4D, 0xDB, 0x65, 0x3A, 0x84, 0x98, 0x9B, 0xF7, 0xC2, 0xF5, 0x03, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x84, 0xCA, 0x74, 0xCA, 0x73, 0xD2, 0x53, 0xD2, 0x54, 0xCA, 0x74, 0x02, 0xCA, 0x53, 0x8B, 0xD2, 0x53, 0x72, 0xD9, 0xAA, 0x76, 0xCA, 0x33, 0xD2, 0x33, 0xCA, 0x13, 0xCA, 0x33, 0x1C, 0x7E, 0x05, 0x9F, 0x05, 0xFF, 0x5C, 0x7A, 0xCA, 0x13, 0x02, 0xC9, 0xF3, 0x82, 0xD1, 0xF3, 0x91, 0x93, 0x49, 0x11, 0x02, 0x39, 0x11, 0x80, 0x31, 0x10, 0x02, 0x30, 0xF0, 0x01, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x04, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x0A, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x20, 0xAD, + 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x13, 0x18, 0xAD, 0x11, 0x01, 0x19, 0x81, 0x01, 0x18, 0x10, 0xB0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x1E, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD1, 0x01, 0x08, 0xF3, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x84, 0x70, 0x74, 0x90, 0x77, 0x88, 0x56, 0x88, 0x76, 0x38, 0x8F, 0x03, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x11, 0x18, 0xAD, 0x87, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xCE, 0x08, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x08, 0xF7, 0x18, 0xCE, 0x20, 0xAD, 0x03, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x06, 0x28, 0xCF, 0x80, 0x30, 0xEF, 0x02, 0x30, 0xF0, 0x01, 0x31, 0x11, 0x86, 0x38, 0xF1, 0x39, 0x11, 0x41, 0x11, 0x41, 0x32, 0x61, 0x93, 0xC3, 0x55, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x81, 0xB3, 0xD6, 0x27, 0x1D, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x81, 0x07, 0x7F, 0x07, 0x9F, 0x06, 0x07, 0x7F, 0x80, 0x07, 0x5F, 0x06, 0x07, 0x7F, 0x01, 0x07, 0x9F, 0x83, 0x1E, 0xFE, 0x46, 0x1C, 0x6D, 0x1A, 0x9B, 0xD6, 0x02, 0xCA, 0x74, + 0x95, 0xCA, 0x73, 0xD2, 0x74, 0xCA, 0x74, 0xCA, 0x53, 0xD2, 0x54, 0xCA, 0x54, 0xD2, 0x53, 0xCA, 0x53, 0xCA, 0x33, 0xA2, 0x75, 0x9A, 0x76, 0xCA, 0x33, 0xCA, 0x13, 0xCA, 0x33, 0x9A, 0xD6, 0x04, 0xFF, 0x05, 0xBF, 0x06, 0x3F, 0x35, 0x7C, 0xC2, 0x54, 0xC9, 0xF3, 0xD1, 0xF3, 0x01, 0xC9, 0xF3, 0x82, 0xB9, 0xD3, 0x61, 0x52, 0x41, 0x11, 0x01, 0x39, 0x11, 0x80, 0x38, 0xF0, 0x02, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x07, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x13, 0x18, 0xAD, 0x0C, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x00, 0xF8, 0x10, 0xD0, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x1B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x80, 0x20, 0x8E, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x20, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x17, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x03, 0x01, 0x19, 0x8D, 0x01, 0x1A, 0x00, 0xF9, 0x08, 0xF5, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF4, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x01, 0x17, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x02, 0x20, 0xCE, 0x80, 0x20, 0xCD, 0x03, 0x20, 0xCE, 0x06, 0x28, 0xCF, 0x80, 0x30, 0xEF, 0x02, 0x30, 0xF0, 0x81, 0x38, 0xF0, 0x39, + 0x10, 0x02, 0x39, 0x11, 0x83, 0x41, 0x12, 0x41, 0x32, 0x61, 0x93, 0xCB, 0x55, 0x01, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x84, 0xCB, 0x55, 0xD3, 0x34, 0xCB, 0x55, 0xAC, 0x17, 0x0F, 0xBF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xBF, 0x80, 0x07, 0x7F, 0x01, 0x07, 0x5F, 0x10, 0x07, 0x3F, 0x01, 0x07, 0x5F, 0x01, 0x07, 0x7F, 0x85, 0x07, 0x9F, 0x07, 0xBF, 0x36, 0x5C, 0x74, 0xB9, 0xB3, 0x15, 0xCA, 0x73, 0x01, 0xCA, 0x54, 0x02, 0xCA, 0x53, 0x85, 0xCA, 0x33, 0xD2, 0x33, 0xCA, 0x33, 0xB2, 0x35, 0xAA, 0x16, 0xCA, 0x33, 0x01, 0xCA, 0x13, 0x8F, 0x7B, 0x37, 0x05, 0x5F, 0x05, 0xFF, 0x06, 0x7F, 0x25, 0xDD, 0xA2, 0xF5, 0xD1, 0xD3, 0xC9, 0xF3, 0xC9, 0xD3, 0xC9, 0xD2, 0xC9, 0xD3, 0x91, 0x93, 0x49, 0x32, 0x41, 0x11, 0x39, 0x11, 0x38, 0xF0, 0x02, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x04, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x14, 0x18, 0xAD, 0x10, 0x01, 0x19, 0x80, 0x18, 0xB0, 0x25, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x13, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, + 0x02, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x85, 0x10, 0xD3, 0x18, 0xCE, 0x20, 0xAD, 0x10, 0xF4, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x20, 0xAE, 0x07, 0x20, 0xCE, 0x05, 0x28, 0xCF, 0x80, 0x30, 0xEF, 0x03, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x02, 0x39, 0x11, 0x80, 0x41, 0x11, 0x01, 0x41, 0x32, 0x81, 0x61, 0xB3, 0xCB, 0x75, 0x02, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x89, 0x8C, 0xB8, 0x0F, 0xBF, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0x9F, 0x07, 0x7F, 0x07, 0x5F, 0x07, 0x3F, 0x07, 0x1F, 0x06, 0x06, 0xFF, 0x81, 0x06, 0xDF, 0x06, 0xFF, 0x02, 0x06, 0xDF, 0x03, 0x06, 0xFF, 0x02, 0x07, 0x1F, 0x03, 0x07, 0x3F, 0x01, 0x07, 0x5F, 0x83, 0x07, 0x1F, 0x2D, 0xFD, 0x74, 0x19, 0xB2, 0xB5, 0x01, 0xCA, 0x53, 0x03, 0xCA, 0x33, 0x82, 0xD2, 0x33, 0xCA, 0x14, 0xA2, 0x15, 0x01, 0xCA, 0x13, 0x88, 0xC9, 0xF3, 0x83, 0x38, 0x05, 0xBF, 0x06, 0x3F, 0x06, 0xBF, 0x0E, 0x9F, 0xAA, 0xD5, 0xC9, 0xD3, 0xC9, 0xD2, 0x01, 0xC9, 0xD3, 0x82, 0xC9, 0xB2, 0xB1, 0xB2, 0x59, 0x31, 0x02, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xF0, 0x01, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x04, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x7F, 0x18, 0xAD, 0x10, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x03, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, + 0x19, 0x01, 0x18, 0xAD, 0x86, 0x18, 0xCF, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD0, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x06, 0x20, 0xCE, 0x80, 0x20, 0xCF, 0x04, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x03, 0x30, 0xF0, 0x82, 0x38, 0xF0, 0x31, 0x11, 0x38, 0xF1, 0x01, 0x39, 0x11, 0x01, 0x41, 0x12, 0x82, 0x41, 0x32, 0x61, 0x93, 0xCB, 0x75, 0x02, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x80, 0xD3, 0x54, 0x01, 0xD3, 0x55, 0x8B, 0xC3, 0x95, 0x5D, 0xFA, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0x9F, 0x07, 0x7F, 0x07, 0x5F, 0x07, 0x3F, 0x07, 0x1F, 0x06, 0xFF, 0x06, 0xDF, 0x01, 0x06, 0xBF, 0x03, 0x06, 0x9F, 0x01, 0x06, 0xBF, 0x06, 0x06, 0x9F, 0x02, 0x06, 0xBF, 0x01, 0x06, 0xDF, 0x02, 0x06, 0xFF, 0x01, 0x07, 0x1F, 0x85, 0x06, 0xFF, 0x06, 0xBF, 0x06, 0x5F, 0x05, 0xBF, 0x44, 0x3C, 0x8A, 0xF7, 0x03, 0xCA, 0x33, 0x02, 0xCA, 0x13, 0x90, 0x99, 0xB6, 0xC9, 0xF3, 0xCA, 0x13, 0xC9, 0xF3, 0x4C, 0x3B, 0x06, 0x1F, 0x06, 0x9F, 0x06, 0xFF, 0x0E, 0xBE, 0xA2, 0xD5, 0xC9, 0xB3, 0xC9, 0xD3, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xB2, 0xC1, 0xB3, 0x71, 0x52, 0x01, 0x39, 0x11, 0x80, 0x31, 0x10, 0x01, 0x30, 0xF0, 0x81, 0x28, 0xF0, 0x30, 0xD0, 0x02, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x07, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCE, 0x08, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x13, 0x01, 0x19, 0x7F, + 0x18, 0xAD, 0x01, 0x18, 0xAD, 0x03, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x20, 0xAE, 0x20, 0xAD, 0x18, 0xCE, 0x01, 0x01, 0x19, 0x87, 0x10, 0xD3, 0x20, 0xCE, 0x20, 0xAE, 0x10, 0xF4, 0x01, 0x19, 0x01, 0x1A, 0x20, 0xCE, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x83, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xEF, 0x30, 0xEF, 0x04, 0x30, 0xF0, 0x02, 0x39, 0x11, 0x89, 0x41, 0x12, 0x39, 0x12, 0x41, 0x12, 0x41, 0x32, 0x41, 0x33, 0x51, 0x53, 0xBB, 0x35, 0xD3, 0x95, 0xD3, 0x96, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x8C, 0xBB, 0xD6, 0x5D, 0xFB, 0x0F, 0xBF, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0x7F, 0x07, 0x5F, 0x07, 0x3F, 0x07, 0x1F, 0x06, 0xFF, 0x06, 0xDF, 0x06, 0xBF, 0x01, 0x06, 0x9F, 0x02, 0x06, 0x7F, 0x09, 0x06, 0x5F, 0x80, 0x06, 0x7F, 0x01, 0x06, 0x5F, 0x01, 0x06, 0x7F, 0x02, 0x06, 0x9F, 0x01, 0x06, 0xBF, 0x88, 0x06, 0xDF, 0x06, 0xBF, 0x06, 0x9F, 0x06, 0x5F, 0x05, 0xFF, 0x05, 0x3F, 0x04, 0x9F, 0x1B, 0xBE, 0x82, 0x98, 0x04, 0xCA, 0x13, 0x81, 0xD1, 0xF3, 0x99, 0xB6, 0x01, 0xC9, 0xF3, 0x87, 0xB2, 0x54, 0x0D, 0x9F, 0x06, 0x7F, 0x06, 0xDF, 0x06, 0xFF, 0x0E, 0xBF, 0xA2, 0xD5, 0xC9, 0xD2, 0x02, 0xC9, 0xB3, 0x82, 0xC9, 0xB2, 0xC9, 0xB3, 0x81, 0x52, 0x02, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x82, 0x28, 0xF0, 0x30, 0xF0, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x04, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x05, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x02, 0x01, 0x19, + 0x80, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x13, 0x01, 0x19, 0x7C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x85, 0x01, 0x1A, 0x08, 0xF5, 0x18, 0xAE, 0x20, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x88, 0x09, 0x18, 0x09, 0x17, 0x01, 0x39, 0x01, 0x1A, 0x10, 0xF5, 0x20, 0xCE, 0x20, 0xCF, 0x28, 0xCF, 0x28, 0xCE, 0x04, 0x28, 0xCF, 0x81, 0x28, 0xEF, 0x30, 0xEF, 0x02, 0x30, 0xF0, 0x82, 0x31, 0x10, 0x30, 0xF0, 0x38, 0xF0, 0x02, 0x39, 0x11, 0x01, 0x41, 0x12, 0x87, 0x41, 0x32, 0x49, 0x32, 0x41, 0x33, 0x49, 0x33, 0xBB, 0x35, 0xD3, 0x95, 0xD3, 0x96, 0xD3, 0x95, 0x05, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x82, 0xAC, 0x37, 0x6D, 0x9A, 0x2E, 0xFE, 0x01, 0x07, 0xFF, 0x89, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0x9F, 0x07, 0x5F, 0x07, 0x3F, 0x07, 0x1F, 0x06, 0xDF, 0x06, 0xBF, 0x06, 0x9F, 0x06, 0x7F, 0x01, 0x06, 0x5F, 0x01, 0x06, 0x3F, 0x08, 0x06, 0x1F, 0x80, 0x05, 0xFF, 0x05, 0x06, 0x1F, 0x02, 0x06, 0x3F, 0x03, 0x06, 0x5F, 0x01, 0x06, 0x7F, 0x87, 0x06, 0x3F, 0x05, 0xDF, 0x05, 0x5F, 0x04, 0xBF, 0x04, 0x3F, 0x03, 0x7F, 0x1A, 0xBE, 0x7A, 0x18, 0x02, 0xCA, 0x13, 0x8B, 0xC9, 0xF3, 0xC1, 0xF4, 0x71, 0x78, 0xC9, 0xF2, 0xD1, 0xF3, 0x83, 0x38, 0x06, 0x1F, 0x06, 0xBF, 0x06, 0xFF, 0x07, 0x1F, 0x0E, 0xDF, 0xA2, 0xD5, 0x01, 0xC9, 0xB3, 0x80, 0xC9, 0xB2, 0x01, 0xC9, 0x92, 0x84, 0xC9, 0x93, 0x91, 0x72, 0x39, 0x11, 0x39, 0x10, 0x31, 0x10, 0x02, 0x30, 0xF0, + 0x01, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x13, 0x01, 0x1A, 0x7C, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x02, 0x18, 0xAE, 0x81, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x81, 0x18, 0xCE, 0x09, 0x18, 0x01, 0x01, 0x1A, 0x85, 0x09, 0x19, 0x01, 0x1A, 0x09, 0x17, 0x20, 0xCF, 0x28, 0xAE, 0x20, 0xCF, 0x02, 0x28, 0xCF, 0x02, 0x28, 0xEF, 0x80, 0x30, 0xEF, 0x02, 0x30, 0xF0, 0x01, 0x38, 0xF0, 0x03, 0x39, 0x11, 0x83, 0x39, 0x12, 0x41, 0x12, 0x41, 0x32, 0x49, 0x32, 0x01, 0x49, 0x33, 0x81, 0x49, 0x53, 0xA2, 0xB4, 0x01, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x86, 0xD3, 0x55, 0xD3, 0x75, 0xD3, 0x55, 0xC3, 0xB6, 0x85, 0x19, 0x4E, 0x3C, 0x0F, 0x9F, 0x03, 0x07, 0xFF, 0x81, 0x07, 0xDF, 0x07, 0x9F, 0x01, 0x07, 0x7F, 0x87, 0x07, 0x5F, 0x07, 0x3F, 0x06, 0xFF, 0x06, 0xBF, 0x06, 0x9F, 0x06, 0x7F, 0x06, 0x5F, 0x06, 0x3F, 0x01, 0x06, 0x1F, 0x80, 0x05, 0xFF, 0x03, 0x05, 0xDF, 0x01, 0x05, 0xBF, 0x01, 0x05, 0xDF, 0x05, 0x05, 0xBF, 0x03, 0x05, 0xDF, 0x01, 0x05, 0xFF, 0x05, 0x06, 0x1F, 0x92, 0x05, 0xDF, 0x05, 0x7F, 0x04, 0xFF, 0x04, 0x7F, 0x03, 0xDF, 0x03, 0x1F, 0x02, 0x5F, 0x19, 0xDE, 0x79, 0xB8, 0xC9, 0xF3, 0xCA, 0x13, 0xC9, 0xF3, 0xB9, 0xD3, + 0xA1, 0xB5, 0xC9, 0xD3, 0xC9, 0xF3, 0x4C, 0x5B, 0x06, 0x5F, 0x06, 0xDF, 0x01, 0x07, 0x1F, 0x81, 0x0E, 0xDF, 0xA2, 0xB5, 0x01, 0xC9, 0xB3, 0x01, 0xC9, 0x92, 0x85, 0xC9, 0x93, 0xC9, 0x92, 0xB1, 0x72, 0x49, 0x11, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xEF, 0x80, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x09, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x17, 0x01, 0x19, 0x7F, 0x18, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x10, 0xF3, 0x84, 0x10, 0xD2, 0x20, 0xAE, 0x18, 0xAE, 0x20, 0xAE, 0x18, 0xCE, 0x02, 0x20, 0xCE, 0x85, 0x18, 0xF2, 0x10, 0xF4, 0x11, 0x14, 0x18, 0xF3, 0x20, 0xCF, 0x28, 0xCE, 0x03, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x80, 0x30, 0xEF, 0x02, 0x30, 0xF0, 0x81, 0x31, 0x10, 0x38, 0xF0, 0x02, 0x39, 0x11, 0x82, 0x39, 0x12, 0x39, 0x11, 0x41, 0x12, 0x01, 0x41, 0x32, 0x02, 0x49, 0x33, 0x81, 0x49, 0x53, 0xA2, 0xB5, 0x02, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x83, 0xC3, 0xB5, 0x7D, 0x59, 0x36, 0xBD, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x01, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x01, 0x07, 0x7F, 0x84, 0x07, 0x1F, 0x06, 0xDE, 0x06, 0x9E, 0x06, 0x7E, 0x06, 0x5E, 0x01, 0x06, 0x3F, 0x82, 0x06, 0x1E, 0x05, 0xFF, 0x05, 0xDF, 0x01, 0x05, 0xBF, 0x02, 0x05, 0x9F, 0x0B, 0x05, 0x7F, 0x02, 0x05, 0x9F, 0x02, 0x05, 0xBF, 0x02, 0x05, 0xDF, 0x8A, 0x05, 0xBF, 0x05, 0x7F, 0x04, 0xFF, 0x04, 0x9F, 0x03, 0xFF, 0x03, 0x7F, 0x02, + 0xBF, 0x02, 0x1F, 0x01, 0x7F, 0x21, 0x3D, 0x99, 0x96, 0x01, 0xC9, 0xF3, 0x8A, 0xB9, 0xD4, 0x99, 0xB6, 0xC9, 0xD3, 0xC2, 0x13, 0x0D, 0xBF, 0x06, 0x9F, 0x06, 0xFF, 0x07, 0x1F, 0x07, 0x3F, 0x0E, 0xFF, 0xA2, 0xB5, 0x03, 0xC9, 0x92, 0x01, 0xC9, 0x72, 0x83, 0xA9, 0x72, 0x49, 0x11, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x17, 0x01, 0x19, 0x7D, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xAD, 0x04, 0x20, 0xAD, 0x83, 0x20, 0xAE, 0x18, 0xCE, 0x20, 0xAE, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x84, 0x20, 0xAF, 0x20, 0xCE, 0x28, 0xCE, 0x28, 0xCF, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x03, 0x30, 0xF0, 0x81, 0x31, 0x10, 0x39, 0x10, 0x03, 0x39, 0x11, 0x84, 0x41, 0x11, 0x41, 0x31, 0x41, 0x12, 0x41, 0x32, 0x49, 0x13, 0x01, 0x49, 0x33, 0x89, 0x49, 0x53, 0x51, 0x54, 0xAA, 0xB5, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x75, 0x94, 0xD8, 0x46, 0x7C, 0x04, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x01, 0x07, 0x7F, 0x81, 0x06, 0xDE, 0x06, 0xBE, 0x01, 0x06, 0x7E, 0x83, 0x06, 0x5E, 0x06, 0x3E, 0x06, 0x1E, 0x05, 0xFE, 0x01, 0x05, 0xDE, 0x81, 0x05, 0xBE, 0x05, 0x9F, 0x01, 0x05, 0x7F, 0x01, 0x05, 0x5F, 0x0C, 0x05, 0x3F, 0x02, 0x05, 0x5F, 0x04, + 0x05, 0x7F, 0x93, 0x05, 0x5F, 0x04, 0xFF, 0x04, 0xBF, 0x04, 0x1F, 0x03, 0x9F, 0x03, 0x1F, 0x02, 0x5F, 0x01, 0xBF, 0x01, 0x3F, 0x00, 0xBF, 0x40, 0xFB, 0xB1, 0xB5, 0xC9, 0xD2, 0xB1, 0xD5, 0xB1, 0xD4, 0xC9, 0xB3, 0x63, 0x99, 0x06, 0x1F, 0x06, 0xDF, 0x07, 0x1F, 0x01, 0x07, 0x3F, 0x81, 0x0E, 0xFF, 0xA2, 0xB5, 0x01, 0xC9, 0x92, 0x01, 0xC9, 0x72, 0x84, 0xC9, 0x92, 0xC9, 0x72, 0xB1, 0x52, 0x41, 0x11, 0x39, 0x11, 0x02, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x02, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x80, 0x20, 0xAE, 0x03, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x01, 0x1A, 0x05, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x13, 0x01, 0x19, 0x7D, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x80, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x82, 0x20, 0xCE, 0x20, 0xCD, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x82, 0x28, 0xCE, 0x20, 0xCF, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x84, 0x28, 0xEF, 0x30, 0xEF, 0x30, 0xD0, 0x28, 0xF0, 0x31, 0x10, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xF1, 0x04, 0x39, 0x11, 0x80, 0x41, 0x12, 0x02, 0x41, 0x32, 0x81, 0x49, 0x32, 0x49, 0x33, 0x01, 0x49, 0x53, 0x82, 0x51, 0x53, 0x4A, 0x16, 0xA2, 0xB5, 0x02, 0xD3, 0x95, 0x84, 0xD3, 0x75, 0x85, 0x39, 0x1F, 0x5E, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x86, 0x07, 0x9F, 0x07, 0xBF, 0x07, 0x5F, 0x06, 0xBE, 0x06, 0x9D, 0x06, 0x7D, 0x06, 0x5D, 0x01, 0x06, + 0x3D, 0x81, 0x06, 0x1D, 0x05, 0xFE, 0x01, 0x05, 0xDE, 0x83, 0x05, 0xBE, 0x05, 0x9E, 0x05, 0x7E, 0x05, 0x5F, 0x01, 0x05, 0x3F, 0x01, 0x05, 0x1F, 0x0A, 0x04, 0xFF, 0x05, 0x05, 0x1F, 0x01, 0x05, 0x3F, 0x94, 0x05, 0x1F, 0x04, 0xDF, 0x04, 0xBF, 0x04, 0x3F, 0x03, 0xDF, 0x03, 0x5F, 0x02, 0xBF, 0x02, 0x1F, 0x01, 0x7F, 0x00, 0xFF, 0x00, 0x9F, 0x08, 0x7F, 0x71, 0x19, 0xC9, 0xD3, 0xB1, 0xD4, 0xB9, 0xD3, 0xC9, 0xB3, 0x1C, 0xFE, 0x06, 0x5F, 0x06, 0xFF, 0x07, 0x1F, 0x01, 0x07, 0x3F, 0x8B, 0x1E, 0xBE, 0xB9, 0xF3, 0xC9, 0x93, 0xC9, 0x72, 0xC9, 0x92, 0xC9, 0x72, 0xC9, 0x73, 0xC9, 0x52, 0xB1, 0x52, 0x41, 0x11, 0x39, 0x10, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x03, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x39, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x7F, 0x18, 0xAD, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x20, 0xCD, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xCF, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xCF, 0x02, 0x28, 0xCF, 0x81, 0x28, 0xEF, 0x28, 0xCF, 0x04, 0x30, 0xF0, 0x80, 0x39, 0x10, 0x03, 0x39, 0x11, 0x02, 0x41, 0x32, 0x80, 0x49, 0x32, 0x02, 0x49, 0x33, 0x84, 0x49, 0x53, 0x4A, 0x15, 0x34, 0x39, 0x16, 0xBD, 0x85, 0x19, 0x02, 0xD3, 0x95, 0x81, 0x94, 0xD8, 0x1F, 0x5E, 0x01, 0x07, 0xDF, 0x07, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x03, + 0x07, 0xBF, 0x80, 0x07, 0x1E, 0x01, 0x06, 0x9D, 0x81, 0x06, 0x7D, 0x06, 0x5D, 0x01, 0x06, 0x3D, 0x89, 0x06, 0x1D, 0x05, 0xFD, 0x05, 0xDD, 0x05, 0xBD, 0x05, 0x9D, 0x05, 0x9E, 0x05, 0x7E, 0x05, 0x5E, 0x05, 0x3E, 0x05, 0x1E, 0x01, 0x04, 0xFF, 0x80, 0x04, 0xDF, 0x02, 0x04, 0xBF, 0x04, 0x04, 0x9F, 0x05, 0x04, 0xBF, 0x81, 0x04, 0xDF, 0x04, 0xBF, 0x02, 0x04, 0xDF, 0x98, 0x04, 0xBF, 0x04, 0x9F, 0x04, 0x3F, 0x03, 0xDF, 0x03, 0x5F, 0x02, 0xFF, 0x02, 0x5F, 0x01, 0xBF, 0x01, 0x3F, 0x00, 0xDF, 0x00, 0x7F, 0x00, 0x5F, 0x18, 0x5E, 0x89, 0x57, 0x61, 0xB9, 0xC9, 0xD3, 0x9A, 0x96, 0x05, 0x9F, 0x06, 0x7F, 0x06, 0xFF, 0x07, 0x1F, 0x07, 0x3F, 0x07, 0x5F, 0x26, 0x7D, 0xB9, 0xD3, 0x04, 0xC9, 0x72, 0x83, 0xC9, 0x52, 0xB1, 0x52, 0x41, 0x11, 0x38, 0xF1, 0x02, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xCF, 0x00, 0xF7, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x83, 0x00, 0xF6, 0x18, 0xCE, 0x18, 0xAD, 0x20, 0xAE, 0x4A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x41, 0x18, 0xAD, 0x02, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x82, 0x20, 0xCF, 0x28, 0xCF, 0x20, 0xCF, 0x03, 0x28, 0xCF, 0x03, 0x30, 0xF0, 0x80, 0x31, 0x10, 0x01, 0x38, 0xF1, 0x01, 0x39, 0x11, 0x83, 0x41, 0x11, 0x41, 0x12, 0x41, 0x32, 0x41, 0x12, 0x01, 0x49, 0x32, 0x01, 0x49, 0x33, 0x85, 0x69, 0xB4, 0x63, 0x36, + 0x6C, 0xD9, 0x4E, 0x5B, 0x07, 0xDF, 0x85, 0x39, 0x01, 0xD3, 0x95, 0x81, 0xBC, 0x17, 0x3E, 0x9C, 0x02, 0x07, 0xDF, 0x0A, 0x07, 0xFF, 0x81, 0x07, 0xDF, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x82, 0x07, 0xBF, 0x07, 0xDF, 0x06, 0xBD, 0x01, 0x06, 0x9C, 0x80, 0x06, 0x7C, 0x01, 0x06, 0x5C, 0x8F, 0x06, 0x3C, 0x06, 0x1C, 0x05, 0xFC, 0x05, 0xDC, 0x05, 0xBC, 0x05, 0xBD, 0x05, 0x9D, 0x05, 0x7D, 0x05, 0x5D, 0x05, 0x3E, 0x05, 0x1E, 0x04, 0xFE, 0x04, 0xDE, 0x04, 0xBE, 0x04, 0xBF, 0x04, 0x9F, 0x02, 0x04, 0x7F, 0x02, 0x04, 0x5F, 0x09, 0x04, 0x7F, 0x8C, 0x04, 0x9F, 0x04, 0x7F, 0x04, 0x5F, 0x04, 0x1F, 0x03, 0xDF, 0x03, 0x7F, 0x03, 0x1F, 0x02, 0x9F, 0x02, 0x1F, 0x01, 0x7F, 0x01, 0x1F, 0x00, 0xBF, 0x00, 0x5F, 0x01, 0x00, 0x1F, 0x86, 0x00, 0xFF, 0x89, 0xB7, 0xC9, 0xB3, 0x44, 0x7B, 0x06, 0x5F, 0x06, 0xBF, 0x07, 0x1F, 0x01, 0x07, 0x3F, 0x81, 0x07, 0x5F, 0x3D, 0x9B, 0x03, 0xC9, 0x72, 0x02, 0xC9, 0x52, 0x80, 0xA1, 0x32, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x81, 0x20, 0xCE, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x86, 0x20, 0xAE, 0x20, 0xAD, 0x20, 0xAE, 0x20, 0xCD, 0x18, 0xAD, 0x18, 0xD0, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x80, 0x00, 0xFA, 0x01, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xF4, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x4B, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x41, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x80, 0x28, 0xCE, 0x03, 0x28, + 0xCF, 0x80, 0x28, 0xEF, 0x01, 0x30, 0xF0, 0x82, 0x31, 0x10, 0x30, 0xF0, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x82, 0x39, 0x31, 0x40, 0xF1, 0x41, 0x11, 0x02, 0x41, 0x32, 0x83, 0x61, 0xB3, 0x92, 0x74, 0xB2, 0xF5, 0xC3, 0x55, 0x02, 0xD3, 0x95, 0x86, 0xBC, 0x16, 0x46, 0x9D, 0x85, 0x39, 0xD3, 0x76, 0xD3, 0x75, 0x6D, 0xBA, 0x0F, 0x9F, 0x02, 0x07, 0xDF, 0x0D, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x85, 0x07, 0x7F, 0x06, 0xBC, 0x06, 0xBB, 0x06, 0x9B, 0x06, 0x7B, 0x06, 0x5B, 0x01, 0x06, 0x3B, 0x83, 0x06, 0x1B, 0x05, 0xFB, 0x05, 0xDB, 0x05, 0xBB, 0x01, 0x05, 0x9C, 0x87, 0x05, 0x7C, 0x05, 0x5C, 0x05, 0x3D, 0x05, 0x1D, 0x04, 0xFD, 0x04, 0xDD, 0x04, 0xBE, 0x04, 0x9E, 0x01, 0x04, 0x7F, 0x80, 0x04, 0x5F, 0x01, 0x04, 0x3F, 0x04, 0x04, 0x1F, 0x08, 0x04, 0x3F, 0x93, 0x04, 0x1F, 0x03, 0xFF, 0x03, 0xBF, 0x03, 0x7F, 0x03, 0x3F, 0x02, 0xBF, 0x02, 0x3F, 0x01, 0xDF, 0x01, 0x5F, 0x00, 0xDF, 0x00, 0x9F, 0x00, 0x5F, 0x00, 0x1F, 0x00, 0x5F, 0x09, 0x7F, 0xB9, 0xB3, 0xB2, 0x14, 0x0D, 0xBF, 0x06, 0xFF, 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x82, 0x07, 0x5F, 0x07, 0x7F, 0x64, 0x79, 0x01, 0xC9, 0x72, 0x03, 0xC9, 0x52, 0x86, 0xC9, 0x32, 0x91, 0x32, 0x39, 0x11, 0x31, 0x11, 0x30, 0xF0, 0x28, 0xF0, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF4, 0x20, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x17, 0x18, 0xAD, + 0x80, 0x18, 0xAE, 0x31, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x44, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x80, 0x20, 0xCF, 0x03, 0x28, 0xCF, 0x86, 0x30, 0xEF, 0x30, 0xF0, 0x28, 0xF0, 0x30, 0xF0, 0x31, 0x10, 0x38, 0xF0, 0x38, 0xF1, 0x01, 0x39, 0x11, 0x81, 0x39, 0x12, 0x41, 0x11, 0x01, 0x41, 0x32, 0x82, 0x51, 0x52, 0x82, 0x34, 0xC3, 0x35, 0x03, 0xD3, 0x95, 0x87, 0xAC, 0x57, 0x7D, 0x7A, 0x46, 0x9C, 0x0F, 0x9F, 0xA4, 0xB8, 0xD3, 0x95, 0x85, 0x39, 0x1F, 0x5E, 0x02, 0x07, 0xDF, 0x10, 0x07, 0xFF, 0x83, 0x07, 0xDF, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0x5D, 0x01, 0x06, 0xBB, 0x81, 0x06, 0x9A, 0x06, 0x7A, 0x01, 0x06, 0x5A, 0x88, 0x06, 0x3A, 0x06, 0x1A, 0x05, 0xFA, 0x05, 0xDA, 0x05, 0xDB, 0x05, 0xBB, 0x05, 0x9B, 0x05, 0x7B, 0x05, 0x5B, 0x01, 0x05, 0x3C, 0x83, 0x05, 0x1C, 0x04, 0xFC, 0x04, 0xDD, 0x04, 0xBD, 0x01, 0x04, 0x7E, 0x82, 0x04, 0x5E, 0x04, 0x3F, 0x04, 0x1F, 0x01, 0x03, 0xFF, 0x0D, 0x03, 0xDF, 0x97, 0x03, 0xBF, 0x03, 0x5F, 0x03, 0x1F, 0x02, 0xDF, 0x02, 0x7F, 0x01, 0xFF, 0x01, 0x9F, 0x01, 0x1F, 0x00, 0xBF, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x9F, 0x39, 0xDB, 0xC9, 0x92, 0x63, 0x99, 0x06, 0x9F, 0x07, 0x9F, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0x7F, 0x07, 0x9F, 0x9A, 0xF6, 0x05, 0xC9, 0x52, 0x88, 0xC9, 0x32, 0x71, 0x12, 0x31, 0x10, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xF0, 0x28, 0xEF, 0x28, 0xCE, 0x28, 0xCF, 0x02, 0x20, 0xCE, + 0x84, 0x20, 0xCD, 0x20, 0xCE, 0x20, 0xAE, 0x18, 0xCF, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x08, 0xF5, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x48, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x87, 0x10, 0xD2, 0x08, 0xF3, 0x08, 0xD3, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x3B, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x80, 0x20, 0xCF, 0x03, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x03, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x02, 0x39, 0x11, 0x80, 0x41, 0x12, 0x01, 0x41, 0x32, 0x82, 0x51, 0x93, 0x92, 0x74, 0xCB, 0x75, 0x02, 0xD3, 0x95, 0x82, 0xC3, 0xD6, 0x6D, 0xBA, 0x1F, 0x7E, 0x01, 0x07, 0xFF, 0x83, 0x36, 0xDD, 0xBC, 0x17, 0x85, 0x39, 0x1F, 0x5E, 0x01, 0x07, 0xDF, 0x14, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x81, 0x07, 0x1B, 0x06, 0xDA, 0x01, 0x06, 0xBA, 0x83, 0x06, 0x99, 0x06, 0x79, 0x06, 0x59, 0x06, 0x39, 0x01, 0x06, 0x19, 0x91, 0x05, 0xF9, 0x05, 0xDA, 0x05, 0xBA, 0x05, 0x9A, 0x05, 0x7A, 0x05, 0x5A, 0x05, 0x5B, 0x05, 0x3B, 0x05, 0x1B, 0x04, 0xFC, 0x04, 0xDC, 0x04, 0xBC, 0x04, 0x9D, 0x04, 0x7D, 0x04, 0x5D, 0x04, 0x3E, 0x04, 0x1E, 0x03, 0xFE, 0x01, 0x03, 0xDF, 0x01, 0x03, 0xBF, 0x0A, 0x03, 0x9F, 0x92, 0x03, 0x7F, 0x03, 0x5F, 0x03, 0x1F, 0x02, 0xDF, 0x02, 0x7F, 0x02, 0x3F, 0x01, 0xBF, 0x01, 0x5F, 0x00, 0xFF, 0x00, 0x9F, 0x00, 0x5F, 0x00, 0x1F, 0x00, 0x3F, 0x01, 0x1F, 0x99, 0xB6, 0xB9, 0xD3, 0x0D, 0x9F, 0x06, 0xDF, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x81, 0x0F, + 0x7E, 0xB9, 0xB3, 0x03, 0xC9, 0x52, 0x87, 0xC9, 0x31, 0xC9, 0x32, 0xC1, 0x32, 0x61, 0x11, 0x38, 0xF0, 0x30, 0xF0, 0x28, 0xF0, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x83, 0x20, 0xAE, 0x18, 0xCE, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x34, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x3D, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x81, 0x31, 0x10, 0x39, 0x10, 0x01, 0x39, 0x11, 0x80, 0x39, 0x12, 0x01, 0x41, 0x32, 0x83, 0x61, 0x73, 0xA2, 0xB4, 0xD3, 0x95, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x88, 0xC3, 0xD6, 0x6D, 0xBA, 0x0F, 0xBF, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xFF, 0x07, 0xDF, 0x1F, 0x7E, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x16, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x01, 0x06, 0xF9, 0x81, 0x06, 0xD9, 0x06, 0xB8, 0x01, 0x06, 0x98, 0x81, 0x06, 0x78, 0x06, 0x58, 0x01, 0x06, 0x38, 0x85, 0x06, 0x18, 0x05, 0xF8, 0x05, 0xD8, 0x05, 0xB8, 0x05, 0x98, 0x05, 0x79, 0x01, 0x05, 0x59, 0x8B, 0x05, 0x1A, 0x04, 0xFA, 0x04, 0xDB, 0x04, 0xBB, 0x04, 0x9C, 0x04, 0x7C, 0x04, 0x5D, 0x04, 0x3D, 0x04, 0x1E, 0x03, 0xFE, 0x03, 0xDE, 0x03, 0xBF, 0x01, 0x03, 0x9F, 0x02, 0x03, 0x7F, 0x06, 0x03, 0x5F, 0x01, 0x03, + 0x3F, 0x92, 0x03, 0x1F, 0x02, 0xFF, 0x02, 0xBF, 0x02, 0x7F, 0x02, 0x3F, 0x01, 0xFF, 0x01, 0x9F, 0x01, 0x3F, 0x00, 0xBF, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x5F, 0x19, 0x7E, 0xB9, 0x93, 0x63, 0x79, 0x06, 0x3F, 0x07, 0x3F, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x80, 0x3D, 0xFB, 0x01, 0xC9, 0x52, 0x03, 0xC9, 0x32, 0x82, 0xC9, 0x12, 0xB9, 0x12, 0x41, 0x11, 0x02, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x84, 0x20, 0xAE, 0x20, 0xCE, 0x08, 0xF6, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x14, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x30, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x01, 0x17, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF4, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x3A, 0x18, 0xAD, 0x02, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x01, 0x28, 0xCF, 0x83, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xEF, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x02, 0x39, 0x11, 0x83, 0x41, 0x11, 0x49, 0x52, 0x79, 0xF3, 0xB2, 0xF4, 0x04, 0xD3, 0x95, 0x81, 0x94, 0xF9, 0x0F, 0xBF, 0x08, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x17, 0x07, 0xFF, 0x81, 0x07, 0x9D, 0x07, 0x19, 0x01, 0x06, 0xF8, 0x80, 0x06, 0xD7, 0x01, 0x06, 0xB7, 0x89, 0x06, 0x97, 0x06, 0x76, 0x06, 0x56, 0x06, 0x37, 0x06, 0x36, 0x06, 0x17, 0x05, 0xF7, 0x05, 0xD7, 0x05, 0xB7, + 0x05, 0x97, 0x01, 0x05, 0x78, 0x87, 0x05, 0x38, 0x05, 0x19, 0x04, 0xF9, 0x04, 0xDA, 0x04, 0xBB, 0x04, 0x9B, 0x04, 0x7C, 0x04, 0x3C, 0x01, 0x04, 0x1D, 0x84, 0x03, 0xFE, 0x03, 0xDE, 0x03, 0xBE, 0x03, 0x9E, 0x03, 0x7F, 0x01, 0x03, 0x5F, 0x80, 0x03, 0x3F, 0x03, 0x03, 0x1F, 0x03, 0x02, 0xFF, 0x92, 0x02, 0xDF, 0x02, 0xBF, 0x02, 0x9F, 0x02, 0x7F, 0x02, 0x3F, 0x01, 0xFF, 0x01, 0x9F, 0x01, 0x5F, 0x00, 0xFF, 0x00, 0x9F, 0x00, 0x5F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0xBF, 0x59, 0xBA, 0xB9, 0xB3, 0x0D, 0x3F, 0x06, 0xBF, 0x07, 0x9F, 0x04, 0x07, 0xFF, 0x82, 0x74, 0x38, 0xC9, 0x52, 0xC1, 0x32, 0x02, 0xC9, 0x32, 0x83, 0xC9, 0x11, 0xC9, 0x12, 0xA1, 0x11, 0x39, 0x11, 0x02, 0x30, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xFA, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x4F, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x82, 0x10, 0xD3, 0x01, 0x1A, 0x00, 0xF9, 0x3C, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x80, 0x20, 0xCF, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x03, 0x30, 0xF0, 0x01, 0x39, 0x11, 0x83, 0x51, 0x51, 0x79, 0xF3, 0xA2, 0xB4, 0xCB, 0x75, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x82, 0xC3, 0xD6, 0x46, 0x9C, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x06, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x17, 0x07, 0xFF, 0x84, 0x07, 0xFE, 0xC3, 0x35, 0x45, 0xD7, 0x07, 0x38, 0x07, 0x17, 0x01, 0x06, + 0xF6, 0x80, 0x06, 0xD6, 0x01, 0x06, 0xB5, 0x84, 0x06, 0x95, 0x06, 0x75, 0x06, 0x55, 0x06, 0x35, 0x06, 0x15, 0x01, 0x05, 0xF5, 0x8C, 0x05, 0xD6, 0x05, 0xB6, 0x05, 0x97, 0x05, 0x57, 0x05, 0x38, 0x05, 0x18, 0x04, 0xF9, 0x04, 0xD9, 0x04, 0x9A, 0x04, 0x7B, 0x04, 0x5B, 0x04, 0x3C, 0x04, 0x1C, 0x01, 0x03, 0xDD, 0x83, 0x03, 0xBE, 0x03, 0x9E, 0x03, 0x7E, 0x03, 0x5F, 0x01, 0x03, 0x3F, 0x81, 0x03, 0x1F, 0x02, 0xFF, 0x01, 0x02, 0xDF, 0x03, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x91, 0x02, 0x7F, 0x02, 0x5F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xBF, 0x01, 0x7F, 0x01, 0x1F, 0x00, 0xDF, 0x00, 0x9F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x3F, 0x01, 0x3F, 0xB1, 0x74, 0x63, 0x39, 0x05, 0xFF, 0x07, 0x1F, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x81, 0x0F, 0x9F, 0xB9, 0x92, 0x01, 0xC9, 0x32, 0x80, 0xC9, 0x31, 0x02, 0xC9, 0x12, 0x81, 0xC9, 0x11, 0x81, 0x11, 0x01, 0x30, 0xF0, 0x81, 0x28, 0xEF, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xD0, 0x02, 0x01, 0x19, 0x84, 0x01, 0x39, 0x08, 0xF5, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x14, 0x18, 0xAD, 0x80, 0x10, 0xCF, 0x36, 0x18, 0xAD, 0x86, 0x18, 0xAF, 0x00, 0xF9, 0x01, 0x19, 0x18, 0xD0, 0x18, 0xCD, 0x18, 0xAD, 0x10, 0xD1, 0x01, 0x01, 0x19, 0x3C, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x81, 0x20, 0xCF, 0x28, 0xCF, 0x02, 0x28, 0xEF, 0x01, 0x30, 0xF0, 0x83, 0x59, 0xB2, 0x7A, 0x13, 0x9A, 0x94, 0xBB, 0x55, + 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x02, 0xD3, 0x95, 0x81, 0xAC, 0x77, 0x2F, 0x1E, 0x22, 0x07, 0xFF, 0x87, 0x07, 0xBC, 0x07, 0x59, 0xAB, 0xB5, 0xC3, 0x14, 0x1E, 0x97, 0x07, 0x36, 0x07, 0x16, 0x07, 0x15, 0x01, 0x06, 0xF4, 0x9F, 0x06, 0xF3, 0x06, 0xD3, 0x06, 0xB3, 0x06, 0xB2, 0x06, 0x92, 0x06, 0x72, 0x06, 0x53, 0x06, 0x33, 0x06, 0x13, 0x05, 0xF4, 0x05, 0xD4, 0x05, 0x95, 0x05, 0x75, 0x05, 0x56, 0x05, 0x17, 0x04, 0xF8, 0x04, 0xB9, 0x04, 0x99, 0x04, 0x5A, 0x04, 0x3B, 0x04, 0x1B, 0x03, 0xFC, 0x03, 0xDD, 0x03, 0xBD, 0x03, 0x9D, 0x03, 0x7E, 0x03, 0x5E, 0x03, 0x3E, 0x03, 0x3F, 0x03, 0x1F, 0x02, 0xFF, 0x02, 0xDF, 0x01, 0x02, 0xBF, 0x80, 0x02, 0x9F, 0x01, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x80, 0x02, 0x3F, 0x01, 0x02, 0x1F, 0x8E, 0x01, 0xDF, 0x01, 0x9F, 0x01, 0x7F, 0x01, 0x3F, 0x00, 0xFF, 0x00, 0x9F, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x7F, 0x39, 0x9B, 0xB9, 0x93, 0x05, 0x5F, 0x06, 0x7F, 0x07, 0x9F, 0x04, 0x07, 0xFF, 0x84, 0x45, 0xDB, 0xC1, 0x32, 0xC9, 0x32, 0xC9, 0x12, 0xC1, 0x32, 0x01, 0xC9, 0x12, 0x85, 0xC9, 0x11, 0xC9, 0x12, 0x51, 0x11, 0x38, 0xF0, 0x30, 0xF0, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x8A, 0x20, 0xAE, 0x18, 0xCE, 0x10, 0xD3, 0x10, 0xF4, 0x18, 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x13, 0x18, 0xAD, 0x82, 0x00, 0xF9, 0x10, 0xD0, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, + 0x30, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x08, 0xD4, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x80, 0x20, 0xAD, 0x15, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x1E, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x86, 0x18, 0xAD, 0x20, 0xCD, 0x20, 0xAE, 0x20, 0xAD, 0x20, 0xAE, 0x18, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x89, 0x28, 0xAE, 0x20, 0xCE, 0x28, 0xEE, 0x51, 0x71, 0x69, 0xD2, 0x82, 0x32, 0xAA, 0xF4, 0xC3, 0x34, 0xD3, 0x75, 0xD3, 0xB5, 0x09, 0xD3, 0x95, 0x81, 0x75, 0x7A, 0x0F, 0xBF, 0x21, 0x07, 0xFF, 0x88, 0x07, 0xBD, 0x07, 0x9B, 0x07, 0x7A, 0x07, 0x79, 0x74, 0xD6, 0xD2, 0xD4, 0x9B, 0xF5, 0x07, 0x56, 0x07, 0x35, 0x01, 0x07, 0x34, 0x81, 0x07, 0x33, 0x07, 0x12, 0x01, 0x07, 0x11, 0x01, 0x06, 0xF0, 0x80, 0x06, 0xD0, 0x01, 0x06, 0xAF, 0x8D, 0x06, 0x6F, 0x06, 0x50, 0x06, 0x31, 0x06, 0x11, 0x05, 0xD2, 0x05, 0x94, 0x05, 0x54, 0x05, 0x15, 0x04, 0xF7, 0x04, 0xB8, 0x04, 0x78, 0x04, 0x59, 0x04, 0x3A, 0x03, 0xFB, 0x01, 0x03, 0xBC, 0x83, 0x03, 0x9D, 0x03, 0x7D, 0x03, 0x5E, 0x03, 0x3E, 0x01, 0x03, 0x1F, 0x81, 0x02, 0xFF, 0x02, 0xDF, 0x01, 0x02, 0xBF, 0x01, 0x02, 0x7F, 0x80, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x8A, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x9F, 0x01, 0x7F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xBF, 0x00, 0x7F, 0x00, 0x5F, 0x01, 0x00, 0x1F, 0x85, 0x00, 0xDF, 0xA1, 0x75, 0x33, 0xBC, 0x05, 0xDF, 0x06, 0xFF, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x82, 0x92, 0xD5, 0xC9, 0x11, 0xC1, 0x32, 0x01, 0xC9, 0x12, 0x89, + 0xC8, 0xF2, 0xC1, 0x12, 0xC9, 0x12, 0xA8, 0xF1, 0x31, 0x10, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x82, 0x20, 0xAE, 0x20, 0xCE, 0x20, 0xAD, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x10, 0xCF, 0x20, 0xAD, 0x32, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x01, 0x01, 0x1A, 0x82, 0x08, 0xF5, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x80, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x87, 0x20, 0xAD, 0x39, 0x0F, 0x49, 0x70, 0x59, 0xB0, 0x7A, 0x32, 0x92, 0x93, 0xAA, 0xD3, 0xCB, 0x55, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x07, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x81, 0x9C, 0xB8, 0x27, 0x1D, 0x20, 0x07, 0xFF, 0x83, 0x07, 0xDE, 0x07, 0xDD, 0x07, 0xBC, 0x07, 0x9B, 0x01, 0x07, 0x9A, 0x81, 0x07, 0x79, 0x55, 0xB7, 0x01, 0xD2, 0xB4, 0x85, 0x4D, 0xB5, 0x07, 0x75, 0x07, 0x74, 0x07, 0x53, 0x07, 0x73, 0x07, 0x52, 0x01, 0x07, 0x50, 0x81, 0x07, 0x4F, 0x07, 0x4E, 0x01, 0x07, 0x4D, 0x80, 0x07, 0x4C, 0x01, 0x07, 0x2B, 0x8F, 0x07, 0x2A, 0x07, 0x0A, 0x06, 0xEA, 0x06, 0xAC, 0x06, 0x4D, 0x05, 0xD0, 0x05, 0x73, 0x04, 0xF5, 0x04, 0xB6, 0x04, 0x78, 0x04, 0x38, 0x04, 0x1A, 0x03, 0xFB, 0x03, 0xBC, 0x03, 0x9C, + 0x03, 0x7C, 0x01, 0x03, 0x3D, 0x84, 0x03, 0x1E, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0xDF, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x96, 0x02, 0x7F, 0x02, 0x5F, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x9F, 0x01, 0x7F, 0x01, 0x5F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xDF, 0x00, 0x9F, 0x00, 0x5F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x3F, 0x21, 0x3D, 0x1B, 0x1E, 0x05, 0x1F, 0x06, 0x5F, 0x07, 0x7F, 0x04, 0x07, 0xFF, 0x80, 0x1F, 0x3D, 0x01, 0xC9, 0x12, 0x01, 0xC1, 0x12, 0x84, 0xC8, 0xF1, 0xC8, 0xF2, 0xC8, 0xF1, 0xC8, 0xF2, 0x80, 0xF1, 0x01, 0x30, 0xF0, 0x85, 0x30, 0xEF, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xCE, 0x20, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x20, 0x18, 0xAD, 0x83, 0x00, 0xF7, 0x00, 0xF9, 0x01, 0x19, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x2A, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x10, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x84, 0x39, 0x2F, 0xD3, 0x95, 0xC3, 0x74, 0xA2, 0xD3, 0xAA, 0xD3, 0x01, 0x7A, 0x31, 0x82, 0x7A, 0x11, 0x72, 0x31, 0x51, 0x90, 0x01, 0x49, 0x6F, 0x83, 0x49, 0x70, 0x49, 0x6F, 0x49, 0x4F, 0x41, 0x2F, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x81, 0x49, 0x70, 0x49, 0x4F, 0x01, 0x49, 0x6F, 0x80, 0x69, 0xF1, 0x01, 0x7A, 0x31, 0x83, 0x92, 0x72, 0xA2, 0xD3, 0xAA, 0xF3, 0xC3, 0x55, 0x0D, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x03, 0xD3, 0x95, 0x84, 0xD3, 0x96, 0xD3, + 0x75, 0xD3, 0x95, 0xAC, 0x57, 0x56, 0x5C, 0x20, 0x07, 0xFF, 0x82, 0x07, 0xDF, 0x07, 0xDE, 0x07, 0xBD, 0x01, 0x07, 0xBC, 0x80, 0x07, 0xBB, 0x01, 0x07, 0x9A, 0x85, 0x07, 0x99, 0x26, 0xB8, 0xCA, 0xD4, 0xD2, 0xB4, 0xC3, 0x14, 0x0F, 0x35, 0x01, 0x07, 0x94, 0x01, 0x07, 0x92, 0x82, 0x07, 0x91, 0x07, 0x90, 0x07, 0x8F, 0x01, 0x07, 0x8E, 0x82, 0x07, 0x8D, 0x07, 0x8C, 0x07, 0xAA, 0x01, 0x07, 0xA9, 0x8F, 0x07, 0xA8, 0x07, 0xC7, 0x07, 0xC5, 0x07, 0xC4, 0x07, 0xE4, 0x07, 0xA4, 0x07, 0x27, 0x06, 0x8A, 0x05, 0xAF, 0x04, 0x96, 0x04, 0x38, 0x03, 0xF9, 0x03, 0xBA, 0x03, 0x9B, 0x03, 0x5C, 0x03, 0x5D, 0x01, 0x03, 0x1D, 0x81, 0x02, 0xFE, 0x02, 0xDF, 0x01, 0x02, 0xBF, 0x81, 0x02, 0x9F, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x83, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0x01, 0x9F, 0x87, 0x01, 0x7F, 0x01, 0x5F, 0x01, 0x3F, 0x00, 0xFF, 0x00, 0xDF, 0x00, 0xBF, 0x00, 0x7F, 0x00, 0x5F, 0x01, 0x00, 0x1F, 0x85, 0x00, 0x7F, 0x02, 0x3F, 0x04, 0x1F, 0x05, 0xBF, 0x06, 0xFF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x82, 0x64, 0x98, 0xC9, 0x11, 0xC9, 0x12, 0x02, 0xC8, 0xF1, 0x83, 0xC8, 0xF2, 0xC8, 0xF1, 0xC8, 0xD1, 0x50, 0xF1, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x20, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x2C, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x85, 0x01, 0x17, 0x10, 0xD2, 0x08, + 0xF3, 0x10, 0xD3, 0x10, 0xD2, 0x18, 0xCD, 0x01, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x81, 0x49, 0x6F, 0xAA, 0xD3, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x34, 0xD3, 0x95, 0x82, 0xC3, 0xD6, 0x85, 0x39, 0x36, 0xDD, 0x22, 0x07, 0xFF, 0x81, 0x07, 0xDF, 0x07, 0xDE, 0x01, 0x07, 0xBD, 0x01, 0x07, 0xBC, 0x80, 0x07, 0xBB, 0x01, 0x07, 0xBA, 0x80, 0x07, 0xB9, 0x02, 0xD2, 0xB4, 0x80, 0x65, 0x35, 0x01, 0x07, 0xB5, 0x89, 0x07, 0xB4, 0x07, 0xB3, 0x07, 0xB2, 0x07, 0xB1, 0x07, 0xB0, 0x07, 0xAF, 0x07, 0xCE, 0x07, 0xCD, 0x07, 0xCC, 0x07, 0xCB, 0x01, 0x07, 0xCA, 0x83, 0x07, 0xC9, 0x07, 0xE8, 0x07, 0xE7, 0x07, 0xE6, 0x01, 0x07, 0xE5, 0x01, 0x07, 0xE3, 0x8C, 0x07, 0xE2, 0x07, 0xE1, 0x07, 0x26, 0x06, 0x0C, 0x04, 0xB4, 0x03, 0xB9, 0x03, 0x7B, 0x03, 0x5C, 0x03, 0x3D, 0x03, 0x1D, 0x02, 0xDE, 0x02, 0xDF, 0x02, 0xBE, 0x01, 0x02, 0x9F, 0x81, 0x02, 0x7F, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x82, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0x01, 0x9F, 0x01, 0x01, 0x5F, 0x83, 0x01, 0x3F, 0x00, 0xFF, 0x00, 0xDF, 0x00, 0xBF, 0x01, 0x00, 0x7F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x84, 0x01, 0x1F, 0x02, 0xFF, 0x04, 0xDF, 0x06, 0x3F, 0x07, 0x7F, 0x04, 0x07, 0xFF, 0x81, 0x0F, 0x9F, 0xB9, 0x72, 0x01, 0xC8, 0xF2, 0x85, 0xC0, 0xF1, 0xC8, 0xF2, 0xC0, 0xF2, 0xC0, 0xF1, 0xC8, 0xD1, 0xA0, 0xF1, 0x02, 0x30, 0xF0, 0x83, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xCE, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x83, 0x20, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x1F, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x01, + 0x17, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xB0, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x28, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x13, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x41, 0x2F, 0x8A, 0x72, 0xC3, 0x34, 0xD3, 0x96, 0x18, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x08, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x0B, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0x75, 0xAC, 0x57, 0x46, 0x9C, 0x16, 0x07, 0xFF, 0x80, 0x46, 0x7C, 0x01, 0x85, 0x19, 0x80, 0x36, 0xDD, 0x0A, 0x07, 0xFF, 0x02, 0x07, 0xDE, 0x80, 0x07, 0xDD, 0x01, 0x07, 0xDC, 0x01, 0x07, 0xDB, 0x01, 0x07, 0xDA, 0x80, 0x9B, 0xF5, 0x01, 0xD2, 0xB4, 0x83, 0xC2, 0xF4, 0x0F, 0x77, 0x07, 0xD6, 0x07, 0xD5, 0x01, 0x07, 0xD4, 0x86, 0x07, 0xD3, 0x07, 0xD2, 0x07, 0xD1, 0x07, 0xD0, 0x07, 0xEF, 0x07, 0xEE, 0x07, 0xED, 0x01, 0x07, 0xEC, 0x80, 0x07, 0xEA, 0x01, 0x07, 0xE9, 0x80, 0x07, 0xE7, 0x01, 0x07, 0xE6, 0x01, 0x07, 0xE5, 0x01, 0x07, 0xE4, 0x01, 0x07, 0xE3, 0x85, 0x07, 0xE2, 0x07, 0x85, 0x06, 0x0C, 0x04, 0xD3, 0x03, 0x5B, 0x03, 0x1C, 0x01, 0x02, 0xDE, 0x82, 0x02, 0xBE, 0x02, 0x9F, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x84, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x88, 0x01, 0x7F, 0x01, 0x5F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xDF, 0x00, 0xBF, 0x00, 0x9F, 0x00, 0x7F, 0x00, 0x5F, 0x01, 0x00, 0x1F, 0x85, 0x00, 0x3F, 0x01, 0xDF, 0x03, + 0xBF, 0x05, 0x9F, 0x06, 0xDF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x89, 0x4D, 0x7A, 0xC1, 0x11, 0xC0, 0xF1, 0xC8, 0xF1, 0xC8, 0xF2, 0xC8, 0xD1, 0xC8, 0xF2, 0xC0, 0xD1, 0xC8, 0xD1, 0x68, 0xF1, 0x01, 0x30, 0xF0, 0x81, 0x28, 0xF0, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x14, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x80, 0x10, 0xD2, 0x05, 0x18, 0xAD, 0x86, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x28, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x84, 0x41, 0x4F, 0x61, 0xD1, 0x82, 0x51, 0xA2, 0xD3, 0xBB, 0x34, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x03, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x15, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x04, 0xD3, 0x95, 0x84, 0xD3, 0x75, 0xBC, 0x16, 0x85, 0x39, 0x46, 0x9C, 0x17, 0xBF, 0x12, 0x07, 0xFF, 0x80, 0x85, 0x18, 0x01, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x80, 0x84, 0xF8, 0x09, 0x07, 0xFF, 0x82, 0x07, 0xFE, 0x07, 0xDE, 0x07, 0xFE, 0x01, 0x07, 0xDD, 0x81, 0x07, 0xBC, 0x07, 0xDC, 0x01, 0x07, 0xDB, 0x81, 0x07, 0xDA, 0x8C, 0x56, 0x01, 0xCA, 0xB4, 0x81, 0xD2, 0x94, 0x4D, 0xF7, 0x01, 0x07, 0xD7, 0x82, + 0x07, 0xD6, 0x07, 0xF5, 0x07, 0xD5, 0x01, 0x07, 0xF3, 0x86, 0x07, 0xF2, 0x07, 0xF1, 0x07, 0xF0, 0x07, 0xEF, 0x07, 0xEE, 0x07, 0xED, 0x07, 0xEC, 0x01, 0x07, 0xEB, 0x81, 0x07, 0xEA, 0x07, 0xE9, 0x01, 0x07, 0xE8, 0x01, 0x07, 0xE7, 0x01, 0x07, 0xE6, 0x03, 0x07, 0xE5, 0x88, 0x07, 0xE4, 0x07, 0xA6, 0x06, 0x0E, 0x03, 0xF8, 0x02, 0xDE, 0x02, 0xBE, 0x02, 0x9F, 0x02, 0x7F, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x83, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x89, 0x01, 0x7F, 0x01, 0x5F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xDF, 0x00, 0xBF, 0x00, 0x9F, 0x00, 0x7F, 0x00, 0x5F, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x84, 0x00, 0xBF, 0x02, 0x9F, 0x04, 0x9F, 0x06, 0x3F, 0x07, 0x5F, 0x05, 0x07, 0xFF, 0x83, 0xB1, 0xD3, 0xC8, 0xF1, 0xC8, 0xF2, 0xC0, 0xF1, 0x01, 0xC8, 0xD1, 0x86, 0xC0, 0xF1, 0xC8, 0xD1, 0xB8, 0xD1, 0x40, 0xF0, 0x30, 0xF0, 0x28, 0xF0, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x81, 0x20, 0xCE, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x11, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x39, 0x00, 0xF8, 0x18, 0xB0, 0x26, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAF, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x85, 0x31, 0x0E, 0x49, 0x6F, 0x59, 0x90, 0x7A, 0x12, 0x7A, 0x32, 0x92, + 0x72, 0x01, 0xA2, 0xD3, 0x80, 0xC3, 0x75, 0x14, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x0A, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x08, 0xD3, 0x95, 0x82, 0xAC, 0x77, 0x75, 0x7A, 0x36, 0xFD, 0x0E, 0x07, 0xFF, 0x83, 0x4E, 0x3C, 0xD3, 0x55, 0xD3, 0x35, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x81, 0xD3, 0x34, 0x75, 0x39, 0x09, 0x07, 0xFF, 0x01, 0x07, 0xFE, 0x02, 0x07, 0xDD, 0x85, 0x07, 0xDC, 0x07, 0xFC, 0x07, 0xDC, 0x07, 0xDB, 0x6D, 0x38, 0xCA, 0xB4, 0x01, 0xD2, 0x94, 0x80, 0xAB, 0x95, 0x01, 0x07, 0xD8, 0x01, 0x07, 0xF7, 0x80, 0x07, 0xF6, 0x01, 0x07, 0xF5, 0x86, 0x07, 0xF4, 0x07, 0xF3, 0x07, 0xF2, 0x07, 0xF1, 0x07, 0xF0, 0x07, 0xEF, 0x07, 0xEE, 0x01, 0x07, 0xED, 0x01, 0x07, 0xEC, 0x80, 0x07, 0xEB, 0x02, 0x07, 0xEA, 0x01, 0x07, 0xE9, 0x03, 0x07, 0xE8, 0x01, 0x07, 0xE7, 0x8B, 0x07, 0xE8, 0x07, 0xC8, 0x06, 0xEB, 0x05, 0x14, 0x03, 0x3C, 0x02, 0x7F, 0x02, 0x5F, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x86, 0x01, 0x7F, 0x01, 0x5F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xFF, 0x00, 0xDF, 0x00, 0xBF, 0x01, 0x00, 0x9F, 0x01, 0x00, 0x5F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x84, 0x01, 0x5F, 0x03, 0x7F, 0x05, 0x7F, 0x06, 0xDF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x83, 0x4D, 0x5A, 0xC8, 0xF1, 0xC8, 0xD1, 0xC0, 0xF1, 0x01, 0xC8, 0xD1, 0x01, 0xC0, 0xD1, 0x84, 0xC8, 0xB1, 0x78, 0xD1, 0x31, 0x10, 0x30, 0xF0, 0x30, 0xEF, 0x02, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, + 0x19, 0x01, 0x01, 0x17, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x07, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x25, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAF, 0x01, 0x18, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x01, 0x49, 0x6F, 0x86, 0x49, 0x70, 0x7A, 0x12, 0x7A, 0x31, 0x82, 0x52, 0xAA, 0xD3, 0xA2, 0xD3, 0xBB, 0x34, 0x23, 0xD3, 0x95, 0x83, 0xCB, 0xD6, 0x94, 0xF8, 0x56, 0x5B, 0x0F, 0xBF, 0x0A, 0x07, 0xFF, 0x80, 0xB3, 0xF6, 0x01, 0xD3, 0x35, 0x80, 0xD3, 0x34, 0x02, 0xD3, 0x35, 0x81, 0xD3, 0x34, 0x1F, 0x7E, 0x09, 0x07, 0xFF, 0x82, 0x07, 0xFE, 0x07, 0xDE, 0x07, 0xDD, 0x02, 0x07, 0xFD, 0x88, 0x07, 0xDD, 0x07, 0xDC, 0x6D, 0x38, 0xCA, 0xB4, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0x1F, 0x39, 0x07, 0xF9, 0x02, 0x07, 0xF8, 0x01, 0x07, 0xF7, 0x83, 0x07, 0xF6, 0x07, 0xF5, 0x07, 0xF4, 0x07, 0xF3, 0x01, 0x07, 0xF2, 0x81, 0x07, 0xF1, 0x07, 0xF0, 0x01, 0x07, 0xEF, 0x01, 0x07, 0xEE, 0x01, 0x07, 0xED, 0x84, 0x07, 0xEC, 0x07, 0xED, 0x07, 0xEC, 0x07, 0xEB, 0x07, 0xEC, 0x01, 0x07, 0xEB, 0x02, 0x07, 0xEA, 0x8B, 0x07, 0xCA, 0x07, 0xAB, 0x07, 0x6C, 0x07, 0x0D, 0x05, 0xB2, 0x03, 0x9B, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x9F, 0x01, + 0x01, 0x7F, 0x83, 0x01, 0x5F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xFF, 0x01, 0x00, 0xDF, 0x01, 0x00, 0x9F, 0x81, 0x00, 0x7F, 0x00, 0x5F, 0x01, 0x00, 0x3F, 0x85, 0x00, 0x1F, 0x60, 0xD9, 0x0A, 0x3F, 0x04, 0x7F, 0x06, 0x3F, 0x07, 0x5F, 0x05, 0x07, 0xFF, 0x89, 0xA9, 0xD3, 0xC0, 0xD1, 0xC8, 0xD1, 0xC0, 0xF1, 0xC8, 0xB1, 0xC0, 0xD1, 0xC8, 0xB1, 0xC0, 0xB1, 0xB8, 0xB1, 0x48, 0xF1, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x83, 0x20, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x10, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD0, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xCD, 0x05, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x29, 0x18, 0xAD, 0x01, 0x49, 0x70, 0x82, 0x59, 0x90, 0x7A, 0x31, 0x72, 0x31, 0x01, 0x7A, 0x31, 0x83, 0x9A, 0xB3, 0xAA, 0xD4, 0xA2, 0xD4, 0xB3, 0x14, 0x05, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x06, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x08, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x81, 0x94, 0xF8, 0x56, 0x5C, 0x08, 0x07, 0xFF, 0x81, 0xD3, 0x35, + 0xD3, 0x34, 0x03, 0xD3, 0x35, 0x82, 0xD3, 0x14, 0xD3, 0x15, 0x5D, 0xDB, 0x0A, 0x07, 0xFF, 0x04, 0x07, 0xFE, 0x01, 0x07, 0xFD, 0x86, 0x6D, 0x58, 0xD2, 0x94, 0xD2, 0x93, 0xCA, 0x94, 0xD2, 0x74, 0x4D, 0xF8, 0x07, 0xFB, 0x01, 0x07, 0xFA, 0x01, 0x07, 0xF9, 0x81, 0x07, 0xF8, 0x07, 0xF7, 0x01, 0x07, 0xF6, 0x01, 0x07, 0xF5, 0x80, 0x07, 0xF4, 0x01, 0x07, 0xF3, 0x80, 0x07, 0xF2, 0x01, 0x07, 0xF1, 0x02, 0x07, 0xF0, 0x04, 0x07, 0xEF, 0x04, 0x07, 0xEE, 0x8B, 0x07, 0xED, 0x07, 0xCD, 0x07, 0x8E, 0x07, 0x6E, 0x07, 0x10, 0x06, 0xB1, 0x05, 0x74, 0x03, 0x7B, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x9F, 0x01, 0x01, 0x7F, 0x01, 0x01, 0x3F, 0x83, 0x01, 0x1F, 0x00, 0xFF, 0x00, 0xDF, 0x00, 0xBF, 0x01, 0x00, 0x9F, 0x81, 0x00, 0x7F, 0x00, 0x5F, 0x01, 0x00, 0x3F, 0x86, 0x00, 0x1F, 0x88, 0xD6, 0x61, 0x59, 0x03, 0x1F, 0x05, 0x3F, 0x06, 0xDF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x81, 0x4D, 0x5B, 0xC0, 0xD1, 0x01, 0xC8, 0xD1, 0x85, 0xC0, 0xB1, 0xC8, 0xB1, 0xC8, 0xB2, 0xC0, 0xB1, 0xC8, 0xB1, 0x90, 0xD1, 0x01, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x01, 0x20, 0xCF, 0x82, 0x20, 0xCE, 0x20, 0xAE, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x0F, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD1, 0x01, 0x18, 0xAD, 0x81, 0x10, 0xD1, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x81, 0x00, 0xF8, 0x10, 0xD0, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x01, 0x17, 0x01, 0x01, 0x19, 0x81, 0x10, 0xCF, 0x20, 0xAD, 0x1F, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, + 0x18, 0xB0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x80, 0x10, 0xD2, 0x2C, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x84, 0x18, 0xAD, 0x18, 0xCE, 0x18, 0xAD, 0x20, 0xAE, 0x20, 0xAD, 0x01, 0x20, 0xCE, 0x80, 0x29, 0x0F, 0x01, 0x51, 0x70, 0x88, 0x69, 0xF1, 0x7A, 0x32, 0x82, 0x32, 0xAA, 0xF3, 0xAA, 0xF4, 0xCB, 0x75, 0xD3, 0x95, 0xD3, 0x96, 0xD3, 0x75, 0x06, 0xD3, 0x95, 0x01, 0xD3, 0x96, 0x03, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x82, 0xC3, 0xB6, 0x85, 0x39, 0x1F, 0x7F, 0x05, 0x07, 0xFF, 0x02, 0xD3, 0x35, 0x82, 0xD3, 0x15, 0xD3, 0x14, 0xD3, 0x15, 0x01, 0xD3, 0x14, 0x80, 0x65, 0x9A, 0x0D, 0x07, 0xFF, 0x03, 0x07, 0xFE, 0x85, 0x6D, 0x39, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x74, 0xCA, 0x74, 0x7C, 0x96, 0x01, 0x07, 0xFC, 0x01, 0x07, 0xFB, 0x01, 0x07, 0xFA, 0x80, 0x07, 0xF9, 0x01, 0x07, 0xF8, 0x01, 0x07, 0xF7, 0x01, 0x07, 0xF6, 0x80, 0x07, 0xF5, 0x01, 0x07, 0xF4, 0x02, 0x07, 0xF3, 0x06, 0x07, 0xF2, 0x03, 0x07, 0xF1, 0x8C, 0x07, 0xF0, 0x07, 0xF1, 0x07, 0xD0, 0x07, 0x91, 0x07, 0x51, 0x07, 0x12, 0x06, 0x93, 0x06, 0x34, 0x05, 0x17, 0x02, 0xDD, 0x01, 0xBF, 0x01, 0x9F, 0x01, 0x7F, 0x01, 0x01, 0x5F, 0x83, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xFF, 0x00, 0xDF, 0x01, 0x00, 0xBF, 0x80, 0x00, 0x7F, + 0x01, 0x00, 0x5F, 0x01, 0x00, 0x3F, 0x86, 0x00, 0x1F, 0x60, 0xB8, 0xB8, 0xF3, 0x09, 0xBF, 0x04, 0x1F, 0x06, 0x1F, 0x07, 0x3F, 0x05, 0x07, 0xFF, 0x80, 0xB1, 0xB3, 0x01, 0xC0, 0xD1, 0x81, 0xC0, 0xB1, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x82, 0xC8, 0xB1, 0xC0, 0xB1, 0x48, 0xF1, 0x01, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAE, 0x0D, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x05, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x18, 0x10, 0xD0, 0x03, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x00, 0xF9, 0x01, 0x19, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x84, 0x00, 0xF7, 0x18, 0xAE, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x00, 0xF7, 0x02, 0x01, 0x1A, 0x82, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x29, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x20, 0xAE, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x81, 0x28, 0xCE, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x84, 0x51, 0x72, 0x61, 0xB2, 0x8A, 0x54, 0x9A, 0x94, 0xB3, 0x35, 0x07, 0xD3, 0x95, 0x05, 0xD3, 0x75, 0x82, 0xD3, 0x55, 0x9C, 0x97, 0x36, 0xDD, 0x03, 0x07, 0xFF, 0x84, + 0xAC, 0x17, 0xD3, 0x35, 0xD3, 0x14, 0xD3, 0x35, 0xD3, 0x14, 0x01, 0xD3, 0x15, 0x81, 0xD2, 0xF4, 0x46, 0x7C, 0x11, 0x07, 0xFF, 0x86, 0x6D, 0x59, 0xD2, 0x74, 0xCA, 0x94, 0xD2, 0x74, 0xCA, 0x74, 0xB3, 0x34, 0x07, 0xFE, 0x02, 0x07, 0xFD, 0x01, 0x07, 0xFC, 0x80, 0x07, 0xFB, 0x02, 0x07, 0xFA, 0x80, 0x07, 0xF9, 0x02, 0x07, 0xF8, 0x80, 0x07, 0xF7, 0x02, 0x07, 0xF6, 0x0A, 0x07, 0xF5, 0x02, 0x07, 0xF4, 0x8C, 0x07, 0xD3, 0x07, 0xB3, 0x07, 0x93, 0x07, 0x53, 0x07, 0x14, 0x06, 0xB5, 0x55, 0x16, 0x05, 0x38, 0x03, 0x7C, 0x01, 0xFF, 0x01, 0x7F, 0x01, 0x5F, 0x01, 0x3F, 0x01, 0x01, 0x1F, 0x82, 0x00, 0xFF, 0x00, 0xDF, 0x00, 0xBF, 0x01, 0x00, 0x9F, 0x80, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x88, 0x00, 0x3F, 0x00, 0x1F, 0x60, 0x99, 0xC9, 0x11, 0x49, 0x1A, 0x02, 0xDF, 0x05, 0x1F, 0x06, 0xBF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x83, 0x64, 0x59, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0x04, 0xC0, 0xB1, 0x84, 0x90, 0xD1, 0x30, 0xF1, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x0F, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x83, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF8, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x86, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x1C, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x07, 0x18, 0xAD, 0x82, + 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x80, 0x08, 0xF5, 0x2A, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x03, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x80, 0x31, 0x11, 0x01, 0x39, 0x11, 0x01, 0x41, 0x32, 0x83, 0x51, 0x52, 0x69, 0xD3, 0x92, 0x74, 0xB2, 0xF5, 0x01, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xD3, 0x95, 0x05, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x81, 0xA4, 0x78, 0x36, 0xDD, 0x01, 0x07, 0xFF, 0x82, 0x56, 0x3C, 0xD3, 0x35, 0xD3, 0x34, 0x01, 0xD3, 0x15, 0x82, 0xD2, 0xF4, 0xCB, 0x15, 0xBB, 0x96, 0x12, 0x07, 0xFF, 0x80, 0x84, 0x98, 0x01, 0xCA, 0x94, 0x80, 0xD2, 0x74, 0x01, 0xCA, 0x74, 0x03, 0x07, 0xFE, 0x01, 0x07, 0xFD, 0x02, 0x07, 0xFC, 0x01, 0x07, 0xFB, 0x01, 0x07, 0xFA, 0x01, 0x07, 0xF9, 0x03, 0x07, 0xF8, 0x0B, 0x07, 0xF7, 0x01, 0x07, 0xF6, 0x8C, 0x07, 0xD6, 0x07, 0xB6, 0x07, 0x96, 0x07, 0x56, 0x07, 0x16, 0xA4, 0x56, 0xBB, 0xD6, 0x34, 0x79, 0x02, 0xFD, 0x02, 0x3F, 0x01, 0x9F, 0x01, 0x5F, 0x01, 0x1F, 0x01, 0x00, 0xFF, 0x01, 0x00, 0xBF, 0x01, 0x00, 0x9F, 0x81, 0x00, 0x7F, 0x00, 0x5F, 0x02, 0x00, 0x3F, 0x86, 0x78, 0xB7, 0xC1, 0x11, 0xA1, 0x14, 0x01, 0xFF, 0x04, 0x1F, 0x05, 0xFF, 0x07, 0x5F, 0x04, 0x07, 0xFF, 0x85, 0x0F, 0x9F, 0xC0, 0xB1, 0xC0, 0xD2, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0x03, 0xC0, 0xB1, + 0x83, 0x48, 0xF1, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x0F, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x8F, 0x18, 0xCE, 0x08, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xCF, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xB0, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x06, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x20, 0xAD, 0x29, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xCD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x81, 0x20, 0xCF, 0x28, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xF0, 0x01, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x01, 0x41, 0x32, 0x82, 0x49, 0x32, 0x49, 0x33, 0x49, 0x53, 0x01, 0x51, 0x54, 0x82, 0x71, 0xF4, 0x9A, 0x75, 0xB2, 0xF5, 0x02, 0xD3, 0x75, 0x83, 0xD3, 0x55, 0xD3, 0x75, 0xD3, 0x55, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x89, 0x9C, 0x78, 0x36, 0xDD, 0x07, 0xFF, 0x9C, 0x57, 0xD3, 0x35, 0xD3, 0x15, 0xD3, 0x34, 0xD3, 0x14, 0xC3, 0x55, 0x27, 0x1D, 0x12, 0x07, 0xFF, 0x86, 0x9B, 0xF7, 0xCA, 0x94, 0xD2, 0x74, 0xCA, + 0x73, 0xCA, 0x74, 0xD2, 0x53, 0x2E, 0xFD, 0x03, 0x07, 0xFF, 0x01, 0x07, 0xFE, 0x02, 0x07, 0xFD, 0x01, 0x07, 0xFC, 0x02, 0x07, 0xFB, 0x02, 0x07, 0xFA, 0x05, 0x07, 0xF9, 0x05, 0x07, 0xFA, 0x02, 0x07, 0xF9, 0x90, 0x07, 0xF8, 0x07, 0xD8, 0x07, 0xB8, 0x07, 0x97, 0x07, 0x58, 0x0E, 0xF8, 0xBB, 0xF6, 0xD3, 0x95, 0x6B, 0x99, 0x02, 0x5F, 0x02, 0x1F, 0x01, 0xBF, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xFF, 0x00, 0xDF, 0x00, 0xBF, 0x01, 0x00, 0x9F, 0x80, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x89, 0x00, 0x3F, 0x00, 0x1F, 0x98, 0xD5, 0xC8, 0xF2, 0xC9, 0x11, 0x19, 0x5E, 0x03, 0x3F, 0x05, 0x3F, 0x06, 0xBF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x80, 0x7B, 0x76, 0x06, 0xC0, 0xB1, 0x84, 0xC0, 0xD1, 0x88, 0xD1, 0x30, 0xF1, 0x30, 0xF0, 0x28, 0xF0, 0x02, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x80, 0x10, 0xD2, 0x05, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x8C, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF9, 0x18, 0xCF, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x17, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x01, 0x17, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xFA, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, + 0x01, 0x19, 0x2D, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x20, 0xAE, 0x80, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x81, 0x20, 0xCF, 0x28, 0xCE, 0x01, 0x28, 0xCF, 0x81, 0x28, 0xEF, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x87, 0x31, 0x11, 0x39, 0x10, 0x39, 0x11, 0x41, 0x11, 0x49, 0x12, 0x41, 0x33, 0x49, 0x32, 0x49, 0x33, 0x01, 0x51, 0x54, 0x01, 0x59, 0x55, 0x88, 0x59, 0x75, 0x69, 0x96, 0x8A, 0x16, 0xAA, 0xD5, 0xCB, 0x55, 0xD3, 0x75, 0xD3, 0x55, 0xD3, 0x54, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x87, 0xCB, 0x35, 0x84, 0xF9, 0x0F, 0xBF, 0x5D, 0xDB, 0xA4, 0x57, 0x9C, 0x58, 0x84, 0xD8, 0x1F, 0x5E, 0x13, 0x07, 0xFF, 0x80, 0x9B, 0xD6, 0x04, 0xCA, 0x74, 0x80, 0x36, 0x9C, 0x06, 0x07, 0xFF, 0x02, 0x07, 0xFE, 0x02, 0x07, 0xFD, 0x02, 0x07, 0xFC, 0x08, 0x07, 0xFB, 0x03, 0x07, 0xFC, 0x03, 0x07, 0xFB, 0x01, 0x07, 0xDA, 0x8E, 0x07, 0xBA, 0x07, 0x9A, 0x07, 0x79, 0x2E, 0x99, 0xC3, 0xD6, 0xD3, 0x95, 0x83, 0x39, 0x0A, 0x3E, 0x01, 0xDF, 0x01, 0x9F, 0x01, 0x5F, 0x01, 0x1F, 0x00, 0xFF, 0x00, 0xBF, 0x00, 0x9F, 0x02, 0x00, 0x7F, 0x02, 0x00, 0x3F, 0x87, 0x90, 0xD5, 0xC9, 0x12, 0xC0, 0xF1, 0x71, 0x17, 0x02, 0x7F, 0x04, 0x9F, 0x06, 0x5F, 0x07, 0x7F, 0x04, 0x07, 0xFF, 0x81, 0x26, 0x9D, 0xC8, 0x91, 0x06, 0xC0, 0xB1, 0x81, 0xB8, 0xB1, 0x31, 0x10, 0x01, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x0F, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, + 0x87, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x39, 0x00, 0xF8, 0x18, 0xB0, 0x16, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x0D, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF9, 0x20, 0xAE, 0x27, 0x18, 0xAD, 0x83, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x20, 0xCD, 0x18, 0xCE, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x83, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xEF, 0x28, 0xD0, 0x01, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x80, 0x39, 0x31, 0x01, 0x41, 0x32, 0x82, 0x49, 0x33, 0x51, 0x33, 0x51, 0x53, 0x01, 0x51, 0x54, 0x87, 0x59, 0x75, 0x61, 0x75, 0x61, 0x95, 0x92, 0x55, 0x8B, 0x14, 0x4A, 0xD3, 0x7A, 0x94, 0xAB, 0x14, 0x02, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x84, 0xD3, 0x15, 0xD3, 0x14, 0xD3, 0x35, 0xC3, 0x55, 0x46, 0x7C, 0x17, 0x07, 0xFF, 0x80, 0xC2, 0xD4, 0x01, 0xCA, 0x74, 0x83, 0xD2, 0x74, 0xCA, 0x74, 0xD2, 0x53, 0x36, 0x9C, 0x08, 0x07, 0xFF, 0x03, 0x07, 0xFE, 0x04, 0x07, 0xFD, 0x02, 0x07, 0xFC, 0x05, 0x07, 0xFD, 0x02, 0x07, 0xFE, 0x02, 0x07, 0xFD, 0x01, 0x07, 0xFC, 0x80, 0x07, 0xDB, 0x01, 0x07, 0xBB, 0x8A, 0x07, 0x7B, 0x2E, 0xBA, 0xC3, 0xD6, 0xD3, 0x95, 0xB3, 0x37, 0x09, 0xDF, + 0x01, 0xBF, 0x01, 0x7F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xDF, 0x01, 0x00, 0x9F, 0x80, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x01, 0x00, 0x3F, 0x88, 0x78, 0x96, 0xC0, 0xF1, 0xC8, 0xF1, 0xA8, 0xF3, 0x01, 0xDF, 0x03, 0xDF, 0x05, 0xBF, 0x07, 0x1F, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x80, 0xA2, 0x14, 0x04, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x80, 0x68, 0xF1, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x1D, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x03, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x2F, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x80, 0x20, 0xEF, 0x01, 0x28, 0xCF, 0x82, 0x28, 0xEF, 0x30, 0xF0, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x01, 0x39, 0x11, 0x91, 0x41, 0x11, 0x41, 0x32, 0x49, 0x32, 0x49, 0x33, 0x51, 0x33, 0x51, 0x53, 0x51, 0x54, 0x59, 0x54, 0x61, 0x95, 0x9A, 0x75, 0xCB, 0x55, 0xCB, 0x75, 0x5B, 0xB4, 0x3B, 0x34, + 0x42, 0xB3, 0x4A, 0x33, 0x62, 0x53, 0x9A, 0xB4, 0x01, 0xD3, 0x35, 0x83, 0xD3, 0x15, 0xD3, 0x34, 0xD3, 0x14, 0xD3, 0x15, 0x01, 0xD3, 0x14, 0x80, 0x5D, 0xDB, 0x15, 0x07, 0xFF, 0x80, 0x1F, 0x5E, 0x04, 0xD2, 0x74, 0x81, 0xCA, 0x53, 0x36, 0x9D, 0x0C, 0x07, 0xFF, 0x0C, 0x07, 0xFE, 0x05, 0x07, 0xFF, 0x02, 0x07, 0xFE, 0x80, 0x07, 0xFD, 0x01, 0x07, 0xDD, 0x82, 0x07, 0xBD, 0x07, 0x9C, 0x56, 0x1A, 0x01, 0xD3, 0x95, 0x87, 0xAB, 0x37, 0x09, 0x9F, 0x01, 0x5F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xFF, 0x00, 0xBF, 0x00, 0x9F, 0x01, 0x00, 0x7F, 0x80, 0x00, 0x5F, 0x01, 0x00, 0x3F, 0x88, 0x30, 0x5C, 0xC0, 0xF1, 0xC8, 0xF1, 0xC8, 0xD1, 0x21, 0x5D, 0x03, 0x3F, 0x05, 0x1F, 0x06, 0xDF, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x80, 0x5C, 0xD9, 0x02, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x03, 0xC0, 0xB1, 0x81, 0x98, 0xD1, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x82, 0x28, 0xCF, 0x28, 0xEF, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF8, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x86, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xCF, 0x11, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x00, 0xF8, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xCD, 0x18, 0xB0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, + 0x01, 0x17, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x32, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x01, 0x39, 0x11, 0x82, 0x41, 0x11, 0x41, 0x31, 0x41, 0x32, 0x01, 0x49, 0x33, 0x90, 0x51, 0x54, 0x59, 0x74, 0x92, 0x55, 0xCB, 0x55, 0xD3, 0x75, 0xBB, 0x95, 0x54, 0x74, 0x3C, 0x34, 0x3B, 0xB4, 0x43, 0x33, 0x42, 0xB3, 0x4A, 0x13, 0x49, 0xF3, 0x5A, 0x32, 0x9A, 0xB4, 0xD3, 0x34, 0xD3, 0x35, 0x01, 0xD3, 0x14, 0x83, 0xD3, 0x15, 0xD3, 0x14, 0xD2, 0xF4, 0x84, 0xD8, 0x14, 0x07, 0xFF, 0x84, 0x4D, 0xDB, 0xD2, 0x74, 0xCA, 0x74, 0xCA, 0x73, 0xD2, 0x74, 0x01, 0xCA, 0x54, 0x80, 0x36, 0x9C, 0x23, 0x07, 0xFF, 0x01, 0x07, 0xFE, 0x83, 0x07, 0xDD, 0x07, 0xDE, 0x07, 0x9D, 0x6D, 0x99, 0x01, 0xD3, 0x95, 0x81, 0xAB, 0x17, 0x09, 0x7F, 0x01, 0x01, 0x1F, 0x80, 0x00, 0xFF, 0x01, 0x00, 0xBF, 0x80, 0x00, 0x9F, 0x01, 0x00, 0x7F, 0x02, 0x00, 0x3F, 0x01, 0xC8, 0xF1, 0x85, 0xC8, 0xD1, 0x51, 0x19, 0x02, 0xDF, 0x04, 0xFF, 0x06, 0xBF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x80, 0x1F, 0x1E, 0x08, 0xC0, 0xB1, 0x80, 0x49, 0x10, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xEF, 0x81, 0x28, 0xCF, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x0C, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, + 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x20, 0xAD, 0x0F, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x10, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x0B, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x33, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x82, 0x39, 0x10, 0x39, 0x11, 0x41, 0x12, 0x01, 0x41, 0x32, 0x83, 0x49, 0x33, 0x51, 0x33, 0x82, 0x14, 0xCB, 0x55, 0x01, 0xD3, 0x75, 0x88, 0xB3, 0xD5, 0x3D, 0x55, 0x35, 0x15, 0x34, 0x95, 0x3C, 0x14, 0x3B, 0x94, 0x3B, 0x13, 0x42, 0x93, 0x42, 0x12, 0x01, 0x49, 0xF3, 0x88, 0x5A, 0x13, 0x9A, 0xB4, 0xD3, 0x14, 0xD3, 0x15, 0xCB, 0x15, 0xD2, 0xF4, 0xD2, 0xF5, 0xD2, 0xF4, 0x75, 0x39, 0x13, 0x07, 0xFF, 0x87, 0x8C, 0x37, 0xCA, 0x74, 0xD2, 0x73, 0xD2, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0xD2, 0x53, 0x1F, 0x5E, 0x26, 0x07, 0xFF, 0x80, 0x07, 0xFE, 0x01, 0x07, 0xDF, 0x83, 0x94, 0xD8, 0xD3, 0x96, 0xD3, 0x95, 0x82, 0x99, 0x02, 0x00, 0xFF, 0x01, 0x00, 0xBF, 0x81, 0x00, 0x9F, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x89, 0x00, 0x3F, 0x00, 0x1F, 0xC8, 0xD1, 0xC0, 0xF1, 0xC0, 0xD1, 0xA0, 0xD4, 0x02, 0x7F, 0x04, 0xBF, 0x06, 0x9F, 0x07, + 0xBF, 0x05, 0x07, 0xFF, 0x80, 0x83, 0x15, 0x07, 0xC0, 0xB1, 0x80, 0x70, 0xF1, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x0C, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x08, 0xF7, 0x01, 0x1A, 0x01, 0x18, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x02, 0x18, 0xAE, 0x81, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x0F, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x89, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x20, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x42, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x80, 0x28, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xF0, 0x02, 0x30, 0xF0, 0x01, 0x39, 0x11, 0x02, 0x41, 0x32, 0x81, 0x59, 0x73, 0xB2, 0xF4, 0x02, 0xD3, 0x75, 0x90, 0x94, 0x35, 0x3D, 0x55, 0x2D, 0x55, 0x2D, 0x75, 0x35, 0x15, 0x3C, 0x94, 0x34, 0x14, 0x3B, 0x94, 0x43, 0x13, 0x42, 0x93, 0x4A, 0x13, 0x41, 0xF3, 0x49, 0xF2, 0x4A, 0x13, 0x5A, 0x33, 0xA2, 0xB4, 0xD3, 0x14, 0x01, 0xD2, 0xF4, 0x82, 0xD2, 0xD4, 0xD2, 0xF4, 0x4E, 0x1B, 0x11, 0x07, 0xFF, 0x83, 0x17, 0x9F, 0xD2, 0x74, 0xCA, 0x53, 0xCA, 0x73, 0x02, 0xCA, 0x53, 0x80, 0xD2, 0x53, 0x09, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x0C, 0x07, 0xFF, 0x07, 0x07, 0xDF, 0x06, 0x07, 0xFF, + 0x81, 0x0F, 0x9E, 0xBC, 0x16, 0x01, 0xD3, 0x95, 0x80, 0x72, 0x5A, 0x02, 0x00, 0xBF, 0x80, 0x00, 0x9F, 0x01, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x82, 0x00, 0x3F, 0x00, 0x1F, 0x90, 0xB5, 0x01, 0xC8, 0xD1, 0x84, 0xC0, 0xD1, 0x12, 0x3E, 0x04, 0x7F, 0x06, 0x7F, 0x07, 0xBF, 0x05, 0x07, 0xFF, 0x80, 0x54, 0xD9, 0x05, 0xC0, 0xB1, 0x83, 0xC0, 0xD1, 0xC0, 0xB1, 0x90, 0xD1, 0x38, 0xF1, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x0C, 0x18, 0xAD, 0x81, 0x08, 0xF5, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xF5, 0x09, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF8, 0x10, 0xD0, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x11, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x86, 0x00, 0xF7, 0x18, 0xAE, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xD0, 0x01, 0x00, 0xF9, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x34, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x84, 0x28, 0xEF, 0x28, 0xF0, 0x30, 0xF0, 0x38, 0xF0, 0x30, 0xF0, 0x01, 0x39, 0x11, 0x83, 0x41, 0x12, 0x41, 0x32, 0x82, 0x34, 0xCB, 0x55, 0x01, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0x94, 0x35, 0x01, 0x35, 0x75, 0x80, 0x2D, 0x75, + 0x01, 0x35, 0x55, 0x88, 0x35, 0x14, 0x34, 0x74, 0x3B, 0xF4, 0x3B, 0x73, 0x42, 0xF4, 0x42, 0x73, 0x4A, 0x13, 0x42, 0x13, 0x49, 0xF2, 0x01, 0x49, 0xF3, 0x86, 0x6A, 0x33, 0xBA, 0xD4, 0xD2, 0xF5, 0xD2, 0xF4, 0xD2, 0xD4, 0xC3, 0x35, 0x17, 0x7E, 0x10, 0x07, 0xFF, 0x83, 0x5D, 0x9A, 0xCA, 0x54, 0xD2, 0x73, 0xCA, 0x54, 0x02, 0xCA, 0x53, 0x80, 0x9B, 0xB6, 0x05, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x80, 0x07, 0x9F, 0x01, 0x07, 0x7F, 0x82, 0x07, 0x7E, 0x07, 0xBF, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x07, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x04, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x80, 0x36, 0xDD, 0x02, 0xD3, 0x95, 0x80, 0x51, 0xBC, 0x01, 0x00, 0x9F, 0x02, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x89, 0x00, 0x3F, 0x00, 0x1F, 0x70, 0x77, 0xC0, 0xD2, 0xC8, 0xD1, 0xC0, 0xD1, 0x49, 0xFA, 0x04, 0x9F, 0x06, 0x9F, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x80, 0x1F, 0x1E, 0x06, 0xC0, 0xB1, 0x82, 0xC0, 0xD1, 0xC0, 0xB1, 0x39, 0x10, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x04, 0x20, 0xAE, 0x0B, 0x18, 0xAD, 0x80, 0x01, 0x1A, 0x05, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x08, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xCE, 0x08, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xB0, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x13, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, + 0xAE, 0x80, 0x18, 0xCD, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x33, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x81, 0x49, 0x52, 0xAA, 0xB4, 0x02, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0x94, 0x35, 0x01, 0x35, 0x75, 0x02, 0x2D, 0x75, 0x89, 0x35, 0x55, 0x54, 0xD5, 0x64, 0x75, 0x83, 0xB5, 0x8B, 0x74, 0x9B, 0x34, 0xAB, 0x14, 0xAA, 0xD4, 0xB2, 0xD4, 0xAA, 0xD4, 0x01, 0xAA, 0xB4, 0x86, 0xB2, 0xB4, 0x6B, 0x15, 0x8A, 0x94, 0xC2, 0xD4, 0xD2, 0xF4, 0xD2, 0xD4, 0x84, 0xB8, 0x10, 0x07, 0xFF, 0x83, 0xB3, 0x15, 0xD2, 0x74, 0xCA, 0x53, 0xCA, 0x54, 0x01, 0xCA, 0x53, 0x81, 0xD2, 0x53, 0x65, 0x3A, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x80, 0x07, 0x7F, 0x01, 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x80, 0x07, 0x1F, 0x01, 0x07, 0x1E, 0x83, 0x07, 0x3E, 0x07, 0x9F, 0x07, 0xDF, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x08, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x80, 0x7D, 0x7A, 0x01, 0xD3, 0x95, 0x81, 0xC3, 0x75, 0x28, 0xFE, 0x01, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x81, 0x00, 0x3F, 0x00, 0x5F, 0x01, 0x00, 0x3F, 0x80, 0x18, 0x3E, 0x01, 0xC0, 0xD1, 0x84, 0xC0, 0xD2, 0x79, 0x96, 0x04, 0xBF, 0x06, 0x7F, 0x07, 0xBF, 0x06, 0x07, 0xFF, 0x80, 0xA2, 0x14, 0x02, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x02, 0xC0, 0xB1, 0x81, 0xC0, 0xD1, 0x58, 0xF1, + 0x02, 0x30, 0xF0, 0x82, 0x28, 0xCF, 0x28, 0xEF, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x0B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x05, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x83, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF8, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x17, 0x18, 0xCE, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x30, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x83, 0x38, 0xF0, 0x39, 0x11, 0x59, 0x72, 0xCB, 0x55, 0x03, 0xD3, 0x75, 0x86, 0xAB, 0xD5, 0x45, 0x15, 0x54, 0xF5, 0x7C, 0x75, 0x8C, 0x35, 0xAB, 0xD5, 0xCB, 0x55, 0x01, 0xD3, 0x35, 0x80, 0xD3, 0x34, 0x01, 0xD3, 0x35, 0x80, 0xD3, 0x15, 0x01, 0xD3, 0x14, 0x84, 0xC3, 0x55, 0x9C, 0x37, 0x65, 0x9A, 0x46, 0x7C, 0x0F, 0xBF, 0x01, 0x07, 0xFF, 0x83, 0x26, 0x9D, 0x9C, 0x17, 0xD2, 0xD4, 0x9C, 0x17, 0x0F, 0x07, 0xFF, 0x84, 0x5D, 0x9A, 0xD2, 0x74, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0x02, 0xCA, 0x33, 0x81, 0x26, 0xDD, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x01, 0x07, + 0x7F, 0x81, 0x07, 0x5F, 0x07, 0x3F, 0x01, 0x07, 0x1E, 0x01, 0x06, 0xFE, 0x80, 0x06, 0xFF, 0x01, 0x06, 0xDE, 0x01, 0x06, 0xBE, 0x82, 0x06, 0xDE, 0x07, 0x3E, 0x07, 0x9F, 0x01, 0x07, 0xBF, 0x02, 0x07, 0x9F, 0x80, 0x07, 0x7F, 0x01, 0x07, 0x9F, 0x80, 0x07, 0x7F, 0x03, 0x07, 0x9F, 0x01, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x81, 0x0F, 0xBF, 0xC3, 0xF6, 0x01, 0xD3, 0x95, 0x80, 0xAA, 0xF7, 0x06, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x86, 0xA0, 0x94, 0xC0, 0xD1, 0xC8, 0xB1, 0xA8, 0xF3, 0x04, 0xBF, 0x06, 0x9F, 0x07, 0xDF, 0x06, 0x07, 0xFF, 0x81, 0x73, 0xD8, 0xB8, 0xB1, 0x02, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x02, 0xC0, 0xB1, 0x81, 0x78, 0xF1, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x0B, 0x18, 0xAD, 0x02, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x03, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x8A, 0x20, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x18, 0xD0, 0x02, 0x18, 0xAD, 0x80, 0x18, 0x8D, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x86, 0x18, 0xCD, 0x10, 0xCF, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x17, 0x18, 0xCE, 0x18, 0x8D, 0x02, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x42, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, + 0xEF, 0x02, 0x30, 0xF0, 0x81, 0x31, 0x11, 0x71, 0xF2, 0x04, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x80, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x80, 0xCB, 0x14, 0x01, 0xD3, 0x34, 0x83, 0xAC, 0x16, 0x75, 0x3A, 0x46, 0x7D, 0x1F, 0x5E, 0x08, 0x07, 0xFF, 0x81, 0x36, 0x9C, 0x4E, 0x1B, 0x0E, 0x07, 0xFF, 0x81, 0x26, 0xFD, 0xC2, 0xB4, 0x02, 0xCA, 0x53, 0x80, 0xD2, 0x53, 0x01, 0xCA, 0x33, 0x80, 0xA3, 0x56, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x80, 0x07, 0x9F, 0x01, 0x07, 0x7F, 0x81, 0x07, 0x5F, 0x07, 0x3F, 0x01, 0x07, 0x1F, 0x80, 0x06, 0xFF, 0x01, 0x06, 0xFE, 0x80, 0x06, 0xDE, 0x01, 0x06, 0xBE, 0x02, 0x06, 0x9E, 0x01, 0x06, 0x7E, 0x01, 0x06, 0x5E, 0x81, 0x06, 0xBE, 0x07, 0x3E, 0x07, 0x07, 0x5F, 0x03, 0x07, 0x7F, 0x80, 0x07, 0x9F, 0x01, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x86, 0x07, 0xFF, 0x07, 0xDF, 0x6D, 0xDA, 0xD3, 0x95, 0xD3, 0x76, 0xD3, 0x75, 0x79, 0xFA, 0x01, 0x00, 0x3F, 0x81, 0x00, 0x1F, 0x00, 0x3F, 0x03, 0x00, 0x1F, 0x80, 0x88, 0x96, 0x01, 0xC0, 0xB1, 0x83, 0xC8, 0xB1, 0x0C, 0x9F, 0x06, 0x9F, 0x07, 0xBF, 0x06, 0x07, 0xFF, 0x80, 0x3D, 0xBB, 0x02, 0xC0, 0xB1, 0x82, 0xC0, 0xD1, 0xC0, 0xB1, 0xB8, 0xD1, 0x01, 0xC0, 0xB1, 0x81, 0x98, 0xD1, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x82, 0x20, 0xAE, 0x20, 0xCE, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x0A, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x05, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x08, 0x18, 0xAD, 0x80, 0x20, + 0xAE, 0x04, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xB0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x85, 0x18, 0xB0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x30, 0x18, 0xAD, 0x05, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x80, 0x9A, 0x93, 0x03, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x80, 0xD3, 0x35, 0x01, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x83, 0xC3, 0x75, 0x84, 0xF9, 0x4E, 0x3C, 0x0F, 0xBF, 0x1C, 0x07, 0xFF, 0x84, 0x0F, 0x9F, 0xAB, 0x75, 0xCA, 0x54, 0xD2, 0x53, 0xCA, 0x53, 0x01, 0xCA, 0x33, 0x83, 0xD2, 0x33, 0xCA, 0x33, 0x4D, 0xBB, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x81, 0x07, 0x9F, 0x07, 0x7F, 0x01, 0x07, 0x5F, 0x80, 0x07, 0x3F, 0x01, 0x07, 0x1F, 0x80, 0x06, 0xFF, 0x02, 0x06, 0xDE, 0x01, 0x06, 0xBE, 0x80, 0x06, 0x9E, 0x02, 0x06, 0x7E, 0x80, 0x06, 0x5E, 0x01, 0x06, 0x3E, 0x01, 0x06, 0x1E, 0x83, 0x05, 0xFE, 0x05, 0xFD, 0x06, 0x7D, 0x06, 0xDE, 0x03, 0x06, 0xFE, 0x80, 0x07, 0x1E, 0x02, 0x07, 0x3F, 0x82, 0x07, 0x3E, 0x07, 0x5F, 0x07, 0x7F, 0x01, 0x07, 0x9F, 0x80, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x81, 0x0F, 0xBF, 0xC3, 0xD6, 0x01, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0x30, 0xFD, 0x03, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x80, 0x60, 0x58, 0x02, 0xC0, 0xB1, 0x82, 0x33, + 0xFC, 0x06, 0xBF, 0x07, 0xBF, 0x06, 0x07, 0xFF, 0x81, 0x0F, 0x9E, 0xC0, 0xD1, 0x02, 0xC0, 0xB1, 0x82, 0xC0, 0xD1, 0xB8, 0xB1, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x81, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x80, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x0A, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x15, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x4B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x01, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x82, 0x30, 0xF0, 0x39, 0x10, 0xAA, 0xF4, 0x04, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x82, 0xB3, 0xD6, 0x75, 0x39, 0x27, 0x1D, 0x1F, 0x07, 0xFF, 0x85, 0x2E, 0xFD, 0xB3, 0x15, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x33, 0xCA, 0x53, 0x01, 0xCA, 0x34, 0x81, 0xCA, 0x33, 0xA3, 0x35, 0x01, 0x07, 0xBF, 0x82, 0x07, 0x9F, 0x07, 0x7F, 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x80, 0x07, 0x1F, 0x01, 0x06, 0xFF, 0x83, 0x06, 0xDF, 0x06, 0xDE, 0x06, 0xBF, 0x06, 0xBE, 0x02, 0x06, 0x9E, 0x80, 0x06, 0x7E, 0x01, 0x06, 0x5E, 0x80, 0x06, 0x3E, 0x01, 0x06, 0x1E, 0x84, 0x05, 0xFE, 0x05, 0xDE, 0x05, 0xBD, 0x05, 0xBE, 0x05, 0x9D, 0x01, 0x05, 0x5E, 0x84, 0x05, 0xBE, 0x05, 0xFE, 0x06, 0x1D, 0x06, 0x7E, 0x06, 0xBE, 0x01, 0x06, 0xFE, 0x81, 0x07, 0x1F, 0x07, 0x1E, 0x01, + 0x07, 0x3F, 0x82, 0x07, 0x5F, 0x07, 0x7F, 0x07, 0x9F, 0x01, 0x07, 0xBF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x81, 0x85, 0x39, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x80, 0xBA, 0xF6, 0x06, 0x00, 0x1F, 0x81, 0x40, 0x3B, 0xC8, 0xB1, 0x01, 0xC0, 0xB1, 0x82, 0x63, 0x18, 0x06, 0xBF, 0x07, 0xBF, 0x07, 0x07, 0xFF, 0x80, 0xA9, 0xB3, 0x05, 0xC0, 0xB1, 0x83, 0xC0, 0xD1, 0xB8, 0xD1, 0x49, 0x10, 0x39, 0x10, 0x01, 0x30, 0xF0, 0x84, 0x28, 0xCF, 0x28, 0xEF, 0x28, 0xCF, 0x20, 0xCF, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x84, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x20, 0xAE, 0x09, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x10, 0xD3, 0x80, 0x10, 0xD2, 0x11, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x83, 0x01, 0x17, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAF, 0x14, 0x18, 0xAD, 0x89, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCF, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x42, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xCF, 0x01, 0x28, 0xCF, 0x83, 0x28, 0xEF, 0x30, 0xCF, 0x39, 0x10, 0xB3, 0x14, 0x04, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x80, 0xD3, 0x54, 0x01, 0xD3, 0x55, 0x82, 0xCB, 0x96, 0x85, 0x18, 0x36, 0xDD, 0x20, 0x07, 0xFF, 0x84, 0x0F, 0xBE, 0x65, 0x3A, 0xCA, 0x54, 0xCA, 0x53, 0xD2, 0x53, 0x01, 0xCA, 0x53, 0x03, 0xCA, 0x33, 0x80, 0x2E, 0x9D, 0x01, 0x07, 0x7F, 0x80, 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x88, 0x07, 0x1F, 0x06, 0xFF, 0x06, 0xFE, 0x06, 0xDF, 0x06, 0xDE, 0x06, + 0xBF, 0x06, 0xBE, 0x06, 0xBF, 0x06, 0x9E, 0x01, 0x06, 0x7E, 0x01, 0x06, 0x5E, 0x80, 0x06, 0x3E, 0x01, 0x06, 0x1E, 0x81, 0x05, 0xFE, 0x05, 0xDE, 0x01, 0x05, 0xBE, 0x8B, 0x05, 0x9E, 0x05, 0x7E, 0x05, 0x3E, 0x05, 0x1E, 0x04, 0xFE, 0x04, 0xBE, 0x04, 0x9E, 0x04, 0x1E, 0x03, 0xDD, 0x04, 0xDE, 0x06, 0x5E, 0x06, 0xBE, 0x01, 0x06, 0xDE, 0x83, 0x06, 0xFE, 0x07, 0x1F, 0x07, 0x3E, 0x07, 0x7F, 0x01, 0x07, 0x9F, 0x80, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x36, 0xDD, 0x02, 0xD3, 0x55, 0x81, 0xD3, 0x35, 0x69, 0x9A, 0x06, 0x00, 0x1F, 0x85, 0xB8, 0xB2, 0xC0, 0x91, 0xC0, 0xB1, 0x7A, 0x96, 0x06, 0xBF, 0x07, 0x9F, 0x04, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x82, 0x82, 0xF5, 0xC0, 0xB1, 0xC0, 0xD1, 0x02, 0xC0, 0xB1, 0x02, 0xB8, 0xD1, 0x81, 0x60, 0xF1, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xEF, 0x81, 0x28, 0xCF, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x80, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x1A, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x08, 0xF7, 0x01, 0x19, 0x08, 0xF7, 0x18, 0xCE, 0x20, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x43, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x86, 0x28, 0xCE, 0x20, 0xCF, 0x28, 0xCF, 0x28, 0xEF, 0x39, 0x10, 0xB3, 0x14, 0xD3, 0x95, 0x03, 0xD3, 0x75, 0x03, 0xD3, + 0x55, 0x82, 0xBB, 0xD6, 0x5D, 0xFB, 0x0F, 0xBF, 0x20, 0x07, 0xFF, 0x85, 0x0F, 0xBF, 0x5D, 0x9A, 0xB3, 0x15, 0xD2, 0x54, 0xCA, 0x53, 0xD2, 0x54, 0x01, 0xCA, 0x53, 0x81, 0xCA, 0x33, 0xD2, 0x33, 0x01, 0xCA, 0x33, 0x81, 0x64, 0xD9, 0x07, 0x7F, 0x01, 0x07, 0x3F, 0x80, 0x07, 0x1F, 0x01, 0x06, 0xFF, 0x02, 0x06, 0xDF, 0x81, 0x06, 0xBF, 0x06, 0xBE, 0x01, 0x06, 0x9F, 0x80, 0x06, 0x7E, 0x01, 0x06, 0x5E, 0x01, 0x06, 0x3E, 0x80, 0x06, 0x1E, 0x01, 0x05, 0xFE, 0x81, 0x05, 0xDE, 0x05, 0xBE, 0x01, 0x05, 0x9E, 0x01, 0x05, 0x5E, 0x8A, 0x05, 0x1E, 0x04, 0xFE, 0x04, 0xDE, 0x04, 0x9E, 0x04, 0x3D, 0x03, 0xDE, 0x03, 0xBE, 0x03, 0x9E, 0x03, 0x7E, 0x03, 0xFE, 0x05, 0xFE, 0x01, 0x06, 0x9E, 0x84, 0x06, 0xBE, 0x06, 0xFE, 0x07, 0x1E, 0x07, 0x3F, 0x07, 0x5F, 0x01, 0x07, 0x9F, 0x02, 0x07, 0xDF, 0x82, 0x07, 0xFF, 0xBB, 0xF6, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x81, 0xC2, 0xF5, 0x08, 0x3F, 0x04, 0x00, 0x1F, 0x81, 0x00, 0x3F, 0x90, 0x95, 0x01, 0xC8, 0xB1, 0x87, 0x91, 0xF5, 0x06, 0x7F, 0x06, 0xFF, 0x07, 0x3F, 0x07, 0x5F, 0x07, 0x7F, 0x07, 0xBF, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x80, 0x54, 0xD9, 0x03, 0xC0, 0xB1, 0x81, 0xB8, 0xD1, 0xC0, 0xD1, 0x01, 0xB8, 0xD1, 0x81, 0x80, 0xF2, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x01, 0x20, 0xCE, 0x87, 0x20, 0xAE, 0x20, 0xAD, 0x20, 0xCD, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, + 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x11, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xCE, 0x08, 0xF7, 0x01, 0x1A, 0x11, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x05, 0x01, 0x19, 0x81, 0x00, 0xF6, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x43, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x03, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x81, 0x20, 0xCF, 0x28, 0xCE, 0x01, 0x28, 0xCF, 0x82, 0x31, 0x10, 0xB3, 0x14, 0xD3, 0x95, 0x03, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x81, 0x9C, 0x77, 0x56, 0x3B, 0x03, 0x07, 0xFF, 0x82, 0x1F, 0x7E, 0x65, 0xDB, 0x7C, 0xF9, 0x03, 0x9C, 0x57, 0x03, 0x9C, 0x37, 0x83, 0x75, 0x39, 0x6D, 0x7A, 0x65, 0x79, 0x5D, 0xBB, 0x01, 0x36, 0xBD, 0x81, 0x36, 0xBC, 0x2E, 0xFD, 0x08, 0x07, 0xFF, 0x92, 0x0F, 0xBF, 0x36, 0xBD, 0x5D, 0x9A, 0x8C, 0x37, 0xD2, 0x74, 0xD2, 0x73, 0xD2, 0x54, 0xCA, 0x53, 0xD2, 0x54, 0xD2, 0x53, 0xCA, 0x33, 0xD2, 0x33, 0xCA, 0x34, 0xCA, 0x13, 0xCA, 0x33, 0x84, 0x18, 0x07, 0x5F, 0x07, 0x3F, 0x07, 0x1F, 0x01, 0x06, 0xFF, 0x02, 0x06, 0xDF, 0x01, 0x06, 0xBF, 0x81, 0x06, 0x9E, 0x06, 0x9F, 0x01, 0x06, 0x7E, 0x01, 0x06, 0x5E, 0x80, 0x06, 0x3E, 0x01, 0x06, 0x1E, 0x80, 0x05, 0xFE, 0x01, 0x05, 0xDE, 0x01, 0x05, 0xBE, 0x81, 0x05, 0x7E, 0x05, 0x5E, 0x01, 0x05, 0x1E, 0x85, 0x04, 0xFE, 0x04, 0xBE, 0x04, 0x5E, 0x03, 0xFE, 0x03, 0xBE, 0x03, 0x9E, 0x01, 0x03, 0x7E, 0x83, 0x03, 0x5E, 0x03, 0x3E, 0x03, 0x5E, 0x06, 0x1D, 0x01, 0x06, 0x7E, + 0x86, 0x06, 0x9E, 0x06, 0xBE, 0x06, 0xFE, 0x07, 0x3F, 0x07, 0x5F, 0x07, 0x7F, 0x07, 0x9F, 0x01, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x7D, 0x59, 0x02, 0xD3, 0x35, 0x81, 0xD3, 0x14, 0x69, 0x9A, 0x04, 0x00, 0x1F, 0x81, 0x00, 0x7F, 0x60, 0xD8, 0x01, 0xC0, 0xB1, 0x87, 0xB8, 0xF2, 0x05, 0xDF, 0x06, 0x1F, 0x06, 0x5F, 0x06, 0xDF, 0x07, 0x3F, 0x07, 0x7F, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x80, 0x36, 0x3C, 0x03, 0xC0, 0xB1, 0x81, 0xB8, 0xD1, 0xC0, 0xD1, 0x01, 0xB8, 0xD1, 0x81, 0x90, 0xD1, 0x39, 0x11, 0x02, 0x30, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x85, 0x20, 0xAE, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x11, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x11, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xD5, 0x02, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAE, 0x18, 0xCD, 0x45, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x04, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x80, 0x20, 0xCF, 0x01, 0x28, 0xCE, 0x81, 0x30, 0xEF, 0xB3, 0x14, 0x03, 0xD3, 0x75, 0x84, 0xD3, 0x55, 0xD3, 0x75, 0xD3, 0x55, 0x9C, 0x77, 0x3E, 0xDD, 0x04, 0x07, 0xFF, 0x83, 0x65, 0x9A, 0xD3, 0x15, 0xD3, 0x14, 0xD3, 0x15, 0x02, 0xD3, 0x14, 0x03, 0xD2, 0xF4, 0x01, 0xD2, 0xD4, 0x82, 0xD2, + 0xF4, 0xCA, 0xD4, 0xD2, 0xD4, 0x02, 0xD2, 0xB4, 0x80, 0xCA, 0xB4, 0x02, 0xD2, 0xB4, 0x01, 0xD2, 0x94, 0x03, 0xCA, 0x94, 0x01, 0xCA, 0x74, 0x01, 0xCA, 0x73, 0x80, 0xD2, 0x74, 0x05, 0xCA, 0x53, 0x02, 0xCA, 0x33, 0x81, 0xAB, 0x15, 0x0E, 0xDF, 0x01, 0x06, 0xFF, 0x01, 0x06, 0xDF, 0x01, 0x06, 0xBF, 0x81, 0x06, 0xDF, 0x06, 0xBF, 0x01, 0x06, 0x9F, 0x84, 0x06, 0x7E, 0x06, 0x7F, 0x06, 0x7E, 0x06, 0x5E, 0x06, 0x3F, 0x01, 0x06, 0x1E, 0x01, 0x05, 0xFE, 0x81, 0x05, 0xDE, 0x05, 0xBE, 0x01, 0x05, 0x9E, 0x87, 0x05, 0x5E, 0x05, 0x3E, 0x05, 0x1E, 0x04, 0xFE, 0x04, 0xDE, 0x04, 0x9E, 0x04, 0x3E, 0x03, 0xBE, 0x01, 0x03, 0x9E, 0x01, 0x03, 0x5E, 0x01, 0x03, 0x3E, 0x91, 0x03, 0x1E, 0x02, 0xFE, 0x03, 0x7E, 0x05, 0xFE, 0x06, 0x5E, 0x06, 0x7E, 0x06, 0x9E, 0x06, 0xDE, 0x06, 0xFE, 0x07, 0x5F, 0x07, 0x7F, 0x07, 0x9F, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xFF, 0x27, 0x1D, 0xD3, 0x35, 0xD3, 0x14, 0x01, 0xD3, 0x15, 0x81, 0xC2, 0xD5, 0x08, 0x3F, 0x03, 0x00, 0x1F, 0x8B, 0x00, 0x9F, 0x60, 0xD8, 0xC0, 0xB1, 0xC0, 0xB2, 0xC0, 0xB1, 0x04, 0xBF, 0x05, 0x3F, 0x05, 0xBF, 0x06, 0x7F, 0x06, 0xDF, 0x07, 0x5F, 0x07, 0x9F, 0x03, 0x07, 0xFF, 0x01, 0xC0, 0xB1, 0x03, 0xB8, 0xD1, 0x84, 0xC0, 0xB1, 0xB8, 0xD1, 0x98, 0xD1, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x84, 0x18, 0xCE, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x13, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x07, 0x18, + 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x43, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x83, 0x28, 0xCE, 0x20, 0xCE, 0x30, 0xEF, 0xB3, 0x14, 0x03, 0xD3, 0x75, 0x83, 0xD3, 0x55, 0xD3, 0x75, 0xAC, 0x37, 0x36, 0xDD, 0x02, 0x07, 0xFF, 0x8A, 0x0E, 0xBD, 0x1D, 0x7B, 0x1C, 0x99, 0x32, 0xF5, 0x3A, 0x75, 0x61, 0x93, 0x69, 0xB3, 0x79, 0xF4, 0x8A, 0x14, 0xB2, 0x94, 0xCA, 0xF4, 0x03, 0xD2, 0xF4, 0x03, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x82, 0xCA, 0xD4, 0xD2, 0xB4, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x03, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x01, 0xCA, 0x74, 0x01, 0xD2, 0x74, 0x80, 0xCA, 0x53, 0x01, 0xCA, 0x54, 0x82, 0xCA, 0x53, 0xD2, 0x53, 0xCA, 0x53, 0x03, 0xCA, 0x33, 0x82, 0x8B, 0x97, 0x35, 0xFD, 0x5D, 0x7B, 0x01, 0x6D, 0x3A, 0x89, 0x5D, 0x5B, 0x35, 0xFD, 0x06, 0xBF, 0x0E, 0x7E, 0x45, 0x7C, 0x6C, 0x99, 0x64, 0x79, 0x64, 0x59, 0x4C, 0xBA, 0x0E, 0x1E, 0x01, 0x06, 0x3E, 0x80, 0x06, 0x1E, 0x02, 0x05, 0xFE, 0x84, 0x05, 0xDE, 0x05, 0xBE, 0x05, 0x9E, 0x05, 0x7E, 0x05, 0x5E, 0x01, 0x05, 0x1E, 0x87, 0x04, 0xFE, 0x04, 0xDE, 0x04, 0x7E, 0x03, 0xDE, 0x03, 0xBE, 0x03, 0x7E, 0x03, 0x7F, 0x03, 0x5E, 0x01, 0x03, 0x3E, 0x80, 0x03, 0x1E, 0x02, 0x02, 0xFE, 0x90, 0x02, 0xDE, 0x03, 0xFE, 0x05, 0xBE, 0x06, 0x3E, 0x06, 0x5E, 0x06, 0x9E, 0x06, 0xDE, 0x07, 0x1F, 0x07, 0x3E, 0x07, 0x7F, 0x07, 0x9F, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xFF, 0xBB, 0xB6, 0xD3, 0x14, 0xD3, + 0x15, 0x01, 0xD2, 0xF4, 0x80, 0x69, 0x7A, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x3F, 0x00, 0x7F, 0x48, 0xFA, 0x02, 0xC0, 0xB1, 0x86, 0x33, 0x1C, 0x04, 0x7F, 0x05, 0x3F, 0x05, 0xFF, 0x06, 0x9F, 0x07, 0x3F, 0x07, 0x9F, 0x03, 0x07, 0xFF, 0x80, 0x9A, 0x14, 0x01, 0xB8, 0xD1, 0x80, 0xC0, 0xB1, 0x03, 0xB8, 0xD1, 0x82, 0xB0, 0xD1, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x85, 0x20, 0xCE, 0x20, 0xCF, 0x20, 0xAE, 0x18, 0xCF, 0x08, 0xF6, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF4, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x47, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x81, 0x28, 0xCF, 0x92, 0x73, 0x04, 0xD3, 0x75, 0x85, 0xC3, 0xB6, 0x5D, 0xFB, 0x07, 0xFF, 0x0E, 0x3B, 0x1C, 0x98, 0x2A, 0xD5, 0x01, 0x39, 0x11, 0x81, 0x39, 0x12, 0x41, 0x11, 0x02, 0x41, 0x12, 0x03, 0x41, 0x32, 0x8A, 0x49, 0x33, 0x51, 0x73, 0x79, 0xD3, 0x9A, 0x54, 0xC2, 0x94, 0xD2, 0xF4, 0xD2, 0xD5, 0xCA, 0xD4, 0xD2, 0xD4, 0xD2, 0xB4, 0xCA, 0xD4, 0x03, 0xD2, 0xB4, 0x03, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x02, 0xCA, 0x74, 0x81, 0xCA, 0x73, 0xD2, 0x53, 0x04, 0xCA, 0x53, 0x03, 0xCA, 0x33, 0x83, 0x99, 0xD4, 0x63, 0x58, 0xD3, 0x95, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x88, + 0x06, 0xBF, 0x5C, 0xFA, 0xD2, 0xB4, 0xCA, 0x94, 0xCA, 0x33, 0xCA, 0x13, 0xC9, 0xD3, 0xB9, 0xD3, 0x4C, 0x5A, 0x01, 0x06, 0x1E, 0x01, 0x05, 0xDE, 0x80, 0x05, 0xBE, 0x01, 0x05, 0x9E, 0x86, 0x05, 0x7E, 0x05, 0x3E, 0x05, 0x1E, 0x05, 0x1D, 0x04, 0xDE, 0x04, 0xBE, 0x04, 0x3E, 0x01, 0x03, 0xBE, 0x84, 0x03, 0x7F, 0x0B, 0x7E, 0x33, 0x7C, 0x33, 0x3C, 0x33, 0x5C, 0x01, 0x33, 0x3C, 0x01, 0x33, 0x1C, 0x01, 0x32, 0xFC, 0x8A, 0x32, 0xDC, 0x2B, 0x7C, 0x05, 0xDE, 0x06, 0x1E, 0x06, 0x5E, 0x06, 0x9E, 0x06, 0xDE, 0x07, 0x1F, 0x07, 0x3F, 0x07, 0x7F, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x85, 0x84, 0xF9, 0xD3, 0x14, 0xCB, 0x14, 0xCA, 0xF4, 0xD2, 0xD5, 0xB2, 0x75, 0x03, 0x00, 0x1F, 0x82, 0x00, 0x5F, 0x08, 0xDF, 0xB8, 0xD2, 0x01, 0xC0, 0xB1, 0x86, 0x3A, 0x7B, 0x03, 0xFF, 0x04, 0xDF, 0x05, 0xBF, 0x06, 0x7F, 0x07, 0x1F, 0x07, 0x9F, 0x03, 0x07, 0xFF, 0x82, 0x7B, 0x77, 0xB8, 0xD1, 0xB8, 0xB1, 0x05, 0xB8, 0xD1, 0x81, 0x41, 0x11, 0x38, 0xF1, 0x01, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x89, 0x20, 0xCF, 0x20, 0xAE, 0x20, 0xCF, 0x09, 0x18, 0x01, 0x3A, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF6, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0B, 0x18, 0xAD, 0x0C, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x12, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x4C, 0x01, 0x19, 0x88, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x39, 0x00, 0xF9, 0x10, 0xD2, 0x20, 0xAE, 0x18, 0xAD, 0x01, + 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x80, 0x7A, 0x32, 0x04, 0xD3, 0x75, 0x85, 0x9C, 0x78, 0x26, 0x1B, 0x1B, 0x96, 0x31, 0x71, 0x30, 0xF0, 0x38, 0xF1, 0x05, 0x39, 0x11, 0x81, 0x41, 0x11, 0x39, 0x12, 0x02, 0x41, 0x12, 0x81, 0x41, 0x32, 0x41, 0x12, 0x01, 0x41, 0x32, 0x87, 0x49, 0x12, 0x41, 0x32, 0x61, 0x72, 0x81, 0xF3, 0xAA, 0x73, 0xCA, 0xD4, 0xD2, 0xB4, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x01, 0xCA, 0xB4, 0x01, 0xCA, 0x94, 0x80, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x02, 0xCA, 0x74, 0x82, 0xD2, 0x74, 0xCA, 0x54, 0xD2, 0x74, 0x02, 0xCA, 0x53, 0x80, 0xD2, 0x33, 0x01, 0xCA, 0x33, 0x84, 0xD2, 0x33, 0xC2, 0x34, 0x79, 0x94, 0x59, 0x75, 0xB3, 0x15, 0x03, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xC3, 0x75, 0x01, 0x06, 0x7F, 0x8B, 0x6C, 0x79, 0xCA, 0x33, 0xCA, 0x13, 0xC9, 0xD3, 0xC9, 0x92, 0xC9, 0x52, 0xC9, 0x12, 0x34, 0xBB, 0x05, 0xFE, 0x05, 0xDE, 0x05, 0xBE, 0x05, 0x9E, 0x01, 0x05, 0x5E, 0x8A, 0x05, 0x3E, 0x05, 0x1E, 0x04, 0xFE, 0x24, 0x9D, 0x34, 0x7B, 0x6B, 0xFA, 0x7B, 0x99, 0x9B, 0x98, 0xAB, 0x97, 0xDB, 0x95, 0xD3, 0x96, 0x08, 0xD3, 0x95, 0x8F, 0xD3, 0x96, 0xD3, 0x95, 0xD3, 0x96, 0xD3, 0x95, 0xBB, 0xD6, 0x9C, 0x37, 0x84, 0x99, 0x6D, 0x1A, 0x36, 0x3C, 0x1E, 0xDD, 0x07, 0x9F, 0x07, 0xBF, 0x07, 0xDF, 0x4E, 0x1B, 0xD2, 0xF4, 0xD2, 0xF5, 0x02, 0xD2, 0xD4, 0x80, 0x40, 0xFC, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x3F, 0x00, 0x9F, 0x78, 0xD7, 0x01, 0xC0, 0xB1, 0x86, 0x61, 0xD8, 0x03, 0xBF, 0x04, 0x9F, 0x05, 0x7F, 0x06, 0x5F, 0x07, 0x1F, + 0x07, 0xBF, 0x03, 0x07, 0xFF, 0x84, 0x54, 0xD9, 0xB8, 0xD1, 0xB8, 0xB1, 0xB8, 0xD1, 0xC0, 0xB1, 0x03, 0xB8, 0xD1, 0x81, 0x41, 0x11, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x85, 0x20, 0xCF, 0x20, 0xAE, 0x10, 0xF3, 0x01, 0x3A, 0x01, 0x19, 0x01, 0x39, 0x02, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x18, 0xD0, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x0C, 0x18, 0xAD, 0x07, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x67, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x02, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x81, 0x51, 0x70, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x82, 0xD3, 0x55, 0x65, 0x19, 0x22, 0xB3, 0x04, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x0A, 0x39, 0x11, 0x03, 0x41, 0x12, 0x8E, 0x41, 0x32, 0x41, 0x12, 0x41, 0x32, 0x41, 0x12, 0x49, 0x52, 0x79, 0xB3, 0xA2, 0x33, 0xD2, 0xB4, 0xCA, 0xB4, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xCA, 0x74, 0xCA, 0x94, 0x01, 0xCA, 0x74, 0x83, 0xD2, 0x74, 0xCA, 0x54, 0xD2, 0x74, 0xD2, 0x53, 0x01, 0xCA, 0x54, 0x82, 0xCA, 0x33, 0xD2, 0x33, 0xCA, 0x34, 0x01, 0xCA, 0x33, 0x80, 0xA1, 0xD3, 0x01, 0x59, 0x54, 0x80, 0x79, 0xF5, 0x02, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x93, 0xD3, 0x35, 0x8C, 0x18, 0x06, 0x7F, 0x06, 0x5F, 0x06, 0x3F, 0xA2, 0xD5, 0xC9, 0xD3, 0xC9, 0x72, 0xC9, 0x52, 0xC1, 0x11, 0xC8, 0xD1, 0x8A, 0x55, 0x05, 0xDE, 0x05, 0xBE, 0x05, 0x9E, 0x05, 0x7E, 0x05, 0x5E, 0x34, 0xDC, + 0x6C, 0x5A, 0xA3, 0xF7, 0x14, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x02, 0xD3, 0x35, 0x84, 0xBB, 0xB6, 0x84, 0xD9, 0x4E, 0x1B, 0x46, 0x5C, 0xD2, 0xF5, 0x02, 0xD2, 0xD4, 0x81, 0xD2, 0xB4, 0x81, 0xD8, 0x03, 0x00, 0x1F, 0x8A, 0x00, 0x5F, 0x60, 0x98, 0xC0, 0xB1, 0xC0, 0xD1, 0x59, 0xB8, 0x03, 0x5F, 0x04, 0x5F, 0x05, 0x5F, 0x06, 0x3F, 0x06, 0xFF, 0x07, 0x9F, 0x03, 0x07, 0xFF, 0x83, 0x36, 0x3C, 0xC0, 0xD1, 0xB8, 0xD1, 0xB8, 0xB1, 0x04, 0xB8, 0xD1, 0x85, 0x58, 0xF1, 0x39, 0x11, 0x30, 0xF0, 0x31, 0x10, 0x30, 0xCF, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x82, 0x20, 0xCE, 0x08, 0xF6, 0x01, 0x3A, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x12, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x5F, 0x01, 0x19, 0x03, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x00, 0xF8, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x20, 0xCE, 0x20, 0xAE, 0x28, 0xEE, 0xCB, 0x55, 0x02, 0xD3, 0x75, 0x83, 0xBB, 0x14, 0x34, 0xF9, 0x29, 0x30, 0x30, 0xEF, 0x07, 0x30, 0xF0, 0x0F, 0x39, 0x11, 0x88, 0x41, 0x12, 0x41, 0x11, 0x39, 0x31, 0x41, 0x12, 0x41, 0x11, 0x69, 0x93, 0x91, 0xF2, 0xC2, 0x54, 0xCA, 0x93, 0x01, 0xCA, 0x94, 0x01, 0xCA, 0x74, 0x84, 0xD2, 0x74, 0xCA, 0x73, 0xD2, 0x73, 0xCA, 0x73, 0xD2, 0x54, 0x01, 0xCA, 0x53, 0x88, 0xCA, 0x54, 0xCA, 0x33, 0xCA, 0x34, 0xA1, + 0xF3, 0x69, 0x73, 0x49, 0x53, 0x51, 0x34, 0x51, 0x54, 0xAA, 0xF5, 0x02, 0xD3, 0x95, 0x84, 0xD3, 0x75, 0xD3, 0x35, 0xD3, 0x14, 0x5C, 0xDA, 0x06, 0x5F, 0x01, 0x06, 0x3F, 0x84, 0xB2, 0x54, 0xC9, 0x72, 0xC9, 0x52, 0xC1, 0x12, 0xC8, 0xD1, 0x01, 0xC0, 0xB1, 0x85, 0x05, 0xBE, 0x05, 0x9E, 0x2D, 0x1C, 0x94, 0x38, 0xCB, 0xB6, 0xD3, 0x96, 0x15, 0xD3, 0x95, 0x81, 0xD3, 0x96, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x01, 0xD3, 0x14, 0x82, 0xD3, 0x15, 0xD2, 0xF4, 0xD2, 0xF5, 0x02, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x82, 0xCA, 0x94, 0x08, 0x7F, 0x00, 0x3F, 0x02, 0x00, 0x1F, 0x80, 0x38, 0x5B, 0x01, 0xC0, 0xB1, 0x86, 0x91, 0x35, 0x03, 0x1F, 0x04, 0x3F, 0x05, 0x3F, 0x06, 0x3F, 0x07, 0x1F, 0x07, 0x9F, 0x04, 0x07, 0xFF, 0x02, 0xB8, 0xD1, 0x89, 0xB8, 0xB1, 0xB8, 0xD1, 0xC0, 0xD1, 0xB8, 0xB1, 0xB8, 0xD1, 0x59, 0x11, 0x39, 0x11, 0x38, 0xF0, 0x30, 0xF0, 0x30, 0xCF, 0x01, 0x28, 0xCF, 0x85, 0x20, 0xCF, 0x20, 0xCE, 0x09, 0x17, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x10, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x64, 0x01, 0x19, 0x8C, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0x01, 0x1A, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xCD, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x80, 0x82, 0x52, 0x02, 0xD3, 0x75, 0x82, 0x9A, 0x93, 0x30, 0xEF, 0x20, 0xCF, 0x01, + 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x80, 0x28, 0xF0, 0x09, 0x30, 0xF0, 0x01, 0x38, 0xF0, 0x0B, 0x39, 0x11, 0x80, 0x38, 0xF1, 0x03, 0x39, 0x11, 0x88, 0x41, 0x11, 0x69, 0x72, 0x81, 0xD2, 0xAA, 0x13, 0xBA, 0x33, 0xCA, 0x54, 0xCA, 0x74, 0xCA, 0x53, 0xCA, 0x54, 0x01, 0xCA, 0x53, 0x84, 0xB2, 0x13, 0xA1, 0xF3, 0x81, 0x93, 0x51, 0x52, 0x49, 0x32, 0x02, 0x49, 0x33, 0x80, 0x51, 0x74, 0x01, 0xD3, 0x95, 0x85, 0xD3, 0x96, 0xD3, 0x75, 0xD3, 0x34, 0xD2, 0xF5, 0xD2, 0xB4, 0x2D, 0x9D, 0x01, 0x06, 0x3F, 0x84, 0x06, 0x1F, 0xC9, 0x93, 0xC9, 0x52, 0xC9, 0x11, 0xC8, 0xF1, 0x01, 0xC0, 0xB1, 0x83, 0xB8, 0xD1, 0x05, 0x9E, 0x05, 0x7E, 0xAB, 0xF7, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x0A, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x84, 0xD3, 0x15, 0xD3, 0x35, 0xCB, 0x15, 0xD2, 0xF4, 0xD2, 0xF5, 0x02, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x01, 0xD2, 0x94, 0x80, 0x41, 0x1C, 0x01, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x80, 0x20, 0x3C, 0x01, 0xC0, 0xB1, 0x86, 0x91, 0x35, 0x02, 0xFF, 0x04, 0x1F, 0x05, 0x1F, 0x06, 0x1F, 0x06, 0xFF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x81, 0xA1, 0xB3, 0xB8, 0xB1, 0x05, 0xB8, 0xD1, 0x84, 0x68, 0xF1, 0x39, 0x11, 0x38, 0xF0, 0x30, 0xF0, 0x30, 0xEF, 0x02, 0x28, 0xCF, 0x81, 0x20, 0xCE, 0x10, 0xF3, 0x02, 0x01, 0x19, 0x80, 0x00, 0xFA, 0x02, 0x01, 0x19, 0x80, 0x10, 0xD0, 0x03, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x13, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x6F, 0x18, + 0xAD, 0x01, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x85, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x20, 0xCE, 0x41, 0x2F, 0x02, 0xD3, 0x75, 0x84, 0x71, 0xD1, 0x20, 0xCE, 0x28, 0xCF, 0x20, 0xCF, 0x28, 0xCE, 0x01, 0x28, 0xCF, 0x02, 0x28, 0xEF, 0x12, 0x30, 0xF0, 0x01, 0x31, 0x10, 0x81, 0x38, 0xF0, 0x30, 0xF0, 0x01, 0x31, 0x11, 0x01, 0x38, 0xF1, 0x80, 0x38, 0xF0, 0x02, 0x39, 0x10, 0x02, 0x39, 0x11, 0x80, 0x39, 0x10, 0x01, 0x61, 0x52, 0x80, 0x51, 0x31, 0x02, 0x39, 0x11, 0x83, 0x39, 0x12, 0x41, 0x12, 0x41, 0x32, 0x41, 0x12, 0x01, 0x49, 0x32, 0x80, 0x8A, 0x34, 0x01, 0xD3, 0x95, 0x85, 0xD3, 0x75, 0xD3, 0x35, 0xD2, 0xF4, 0xCA, 0xD4, 0xB2, 0xF6, 0x06, 0x5F, 0x01, 0x06, 0x1F, 0x89, 0x34, 0xDC, 0xC9, 0x52, 0xC9, 0x12, 0xC8, 0xD2, 0xC0, 0xB1, 0xC0, 0xD1, 0xB8, 0xD1, 0x89, 0xB4, 0x2B, 0xBA, 0x42, 0x16, 0x01, 0x51, 0x54, 0x8A, 0x49, 0x54, 0x51, 0x54, 0x61, 0x94, 0x71, 0xD4, 0x69, 0xF4, 0x71, 0xD3, 0x69, 0xD4, 0x71, 0xD3, 0x7A, 0x14, 0x8A, 0x75, 0x92, 0x74, 0x01, 0x92, 0x54, 0x83, 0x9A, 0x95, 0xB3, 0x15, 0xBB, 0x14, 0xD3, 0x96, 0x04, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x83, 0xD3, 0x14, 0xD3, 0x15, 0xD2, 0xF4, 0xCB, 0x14, 0x01, 0xD2, 0xF4, 0x84, 0xD2, 0xD4, 0xCA, 0xD4, 0xCA, 0xB4, 0xD2, 0xB4, 0xCA, 0xB4, 0x01, 0xCA, 0x94, 0x80, 0x81, 0xB8, 0x01, 0x00, 0x5F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x88, 0xA8, 0xB3, 0xC0, 0xB1, 0xB0, 0xD2, 0x02, 0xDF, 0x03, 0xFF, 0x05, 0x1F, 0x06, 0x1F, 0x06, 0xFF, 0x07, 0xBF, + 0x04, 0x07, 0xFF, 0x80, 0x8A, 0x95, 0x06, 0xB8, 0xD1, 0x84, 0x78, 0xF2, 0x39, 0x11, 0x38, 0xF0, 0x30, 0xF0, 0x28, 0xF0, 0x01, 0x28, 0xCF, 0x83, 0x28, 0xCE, 0x20, 0xCE, 0x20, 0xCF, 0x09, 0x18, 0x01, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x16, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x65, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x87, 0x20, 0xCD, 0x20, 0xAE, 0x20, 0xCD, 0x92, 0x72, 0xD3, 0x75, 0xC3, 0x34, 0x61, 0xD1, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x07, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x80, 0x30, 0xEF, 0x17, 0x30, 0xF0, 0x81, 0x38, 0xF0, 0x30, 0xF0, 0x01, 0x31, 0x10, 0x88, 0x30, 0xF0, 0x31, 0x10, 0x38, 0xF0, 0x30, 0xF0, 0x38, 0xF0, 0x31, 0x11, 0x38, 0xF0, 0x39, 0x11, 0x38, 0xF1, 0x01, 0x39, 0x11, 0x81, 0x39, 0x12, 0x41, 0x11, 0x01, 0x41, 0x32, 0x8D, 0xB2, 0xF5, 0xD3, 0x95, 0xD3, 0x75, 0xD3, 0x55, 0xD2, 0xF4, 0xD2, 0xB4, 0xD2, 0x74, 0x83, 0xB8, 0x06, 0x3F, 0x06, 0x1F, 0x06, 0x1E, 0x63, 0x98, 0xC9, 0x12, 0xC8, 0xD1, 0x01, 0xC0, 0xB1, 0x87, 0xB8, 0xB1, 0xB8, 0xD1, 0x79, 0x33, 0x51, 0x53, 0x51, 0x34, 0x51, 0x54, 0x51, 0x33, 0x49, 0x53, 0x02, 0x49, 0x33, 0x81, 0x41, 0x33, 0x49, 0x33, 0x02, 0x49, 0x32, 0x02, 0x49, 0x33, 0x01, 0x49, 0x32, 0x02, 0x49, 0x33, 0x83, 0x61, 0xB3, 0x7A, 0x34, 0x9A, 0x95, 0xB2, 0xF5, 0x01, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x01, + 0xD3, 0x35, 0x01, 0xD3, 0x14, 0x80, 0xD3, 0x15, 0x02, 0xD2, 0xF4, 0x01, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x01, 0xD2, 0x94, 0x83, 0xD2, 0x74, 0xCA, 0x74, 0xC2, 0x54, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x8A, 0x00, 0x3F, 0x00, 0x1F, 0x58, 0x78, 0xB8, 0xD1, 0xC0, 0xB1, 0x02, 0xBF, 0x03, 0xBF, 0x04, 0xFF, 0x05, 0xFF, 0x06, 0xFF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x80, 0x64, 0x78, 0x06, 0xB8, 0xD1, 0x82, 0x78, 0xF1, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x81, 0x20, 0xCF, 0x09, 0x17, 0x01, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x08, 0xF4, 0x18, 0xCE, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x67, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x20, 0xCD, 0x18, 0xCE, 0x20, 0xAE, 0x39, 0x0F, 0xD3, 0x75, 0xCB, 0x35, 0x41, 0x4F, 0x04, 0x20, 0xCE, 0x09, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x03, 0x28, 0xCF, 0x02, 0x28, 0xEF, 0x07, 0x30, 0xEF, 0x81, 0x30, 0xF0, 0x28, 0xF0, 0x02, 0x30, 0xF0, 0x85, 0x28, 0xF0, 0x30, 0xF0, 0x30, 0xEF, 0x31, 0x10, 0x30, 0xF0, 0x30, 0xD0, 0x04, 0x30, 0xF0, 0x80, 0x30, 0xF1, 0x01, 0x30, 0xF0, 0x94, 0x38, 0xF0, 0x39, 0x11, 0x39, 0x10, 0x39, 0x11, 0x38, 0xF1, 0x39, 0x11, 0x39, 0x12, 0x49, 0x52, 0xD3, 0x95, 0xD3, 0x75, 0xD3, 0x35, 0xD2, 0xF4, 0xD2, 0xB4, 0xD2, 0x74, 0xCA, 0x33, 0x4C, 0x9A, 0x05, 0xFF, 0x06, 0x1F, 0x05, 0xFF, 0xA1, 0xF4, 0xC0, 0xD1, 0x01, + 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x81, 0xA0, 0xF1, 0x51, 0x34, 0x04, 0x49, 0x33, 0x02, 0x49, 0x32, 0x02, 0x41, 0x32, 0x05, 0x41, 0x12, 0x04, 0x41, 0x32, 0x8A, 0x41, 0x33, 0x49, 0x33, 0x49, 0x32, 0x49, 0x53, 0x61, 0x93, 0x82, 0x14, 0xA2, 0x74, 0xC3, 0x15, 0xD3, 0x35, 0xD3, 0x14, 0xD3, 0x15, 0x01, 0xD2, 0xF4, 0x80, 0xD2, 0xF5, 0x02, 0xD2, 0xD4, 0x80, 0xD2, 0xB4, 0x01, 0xCA, 0xB4, 0x80, 0xCA, 0x94, 0x02, 0xCA, 0x74, 0x8E, 0xCA, 0x54, 0x20, 0xFD, 0x00, 0x9F, 0x00, 0x7F, 0x00, 0x5F, 0x00, 0x3F, 0x10, 0x5D, 0xC0, 0xB1, 0xC0, 0xD1, 0x02, 0x9F, 0x03, 0xBF, 0x04, 0xDF, 0x05, 0xFF, 0x06, 0xFF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x80, 0x54, 0xD9, 0x01, 0xB8, 0xD1, 0x80, 0xB8, 0xB1, 0x03, 0xB8, 0xD1, 0x82, 0x78, 0xF1, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xCF, 0x82, 0x28, 0xCE, 0x20, 0xCF, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x16, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x74, 0x18, 0xAD, 0x86, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x20, 0xAE, 0x61, 0xD0, 0xBB, 0x14, 0x41, 0x2F, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x82, 0x28, 0xCE, 0x20, 0xCE, 0x20, 0xCF, 0x18, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x86, 0x28, 0xCF, 0x28, 0xF0, 0x30, 0xD0, 0x28, 0xEF, 0x28, 0xCF, 0x30, 0xCF, 0x30, 0xF0, 0x01, 0x30, 0xD0, 0x80, 0x28, 0xF0, 0x02, 0x30, 0xF0, 0x80, 0x30, 0xD0, 0x03, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x02, 0x39, 0x11, 0x88, 0x61, 0xB2, 0xD3, 0x75, + 0xD3, 0x35, 0xD2, 0xF4, 0xCA, 0xD4, 0xCA, 0x74, 0xD2, 0x33, 0xCA, 0x13, 0x1D, 0x9D, 0x01, 0x05, 0xFF, 0x81, 0x1D, 0x3D, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x81, 0xB0, 0xD1, 0x61, 0x32, 0x01, 0x49, 0x33, 0x81, 0x49, 0x32, 0x41, 0x32, 0x02, 0x41, 0x12, 0x81, 0x41, 0x32, 0x41, 0x12, 0x01, 0x41, 0x11, 0x01, 0x41, 0x12, 0x80, 0x41, 0x11, 0x01, 0x39, 0x11, 0x80, 0x41, 0x11, 0x01, 0x41, 0x12, 0x81, 0x39, 0x12, 0x41, 0x32, 0x02, 0x41, 0x12, 0x80, 0x49, 0x12, 0x01, 0x41, 0x32, 0x88, 0x49, 0x32, 0x49, 0x33, 0x49, 0x53, 0x49, 0x33, 0x61, 0x73, 0x8A, 0x14, 0xAA, 0x74, 0xCA, 0xF4, 0xD2, 0xF5, 0x02, 0xD2, 0xD4, 0x89, 0xD2, 0xB4, 0xCA, 0xB4, 0xD2, 0xB4, 0xD2, 0x94, 0xCA, 0x94, 0xCA, 0x73, 0xD2, 0x74, 0xD2, 0x53, 0xD2, 0x54, 0x59, 0x7A, 0x01, 0x00, 0xBF, 0x01, 0x00, 0x9F, 0x88, 0x00, 0x5F, 0xA8, 0xB3, 0xC0, 0xB1, 0x31, 0xFC, 0x03, 0x9F, 0x04, 0xDF, 0x05, 0xDF, 0x06, 0xDF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x80, 0x2E, 0x3C, 0x03, 0xB8, 0xD1, 0x80, 0xB8, 0xB1, 0x01, 0xB8, 0xD1, 0x81, 0x78, 0xF1, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x84, 0x20, 0xAD, 0x20, 0xAE, 0x18, 0xCE, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAF, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAF, 0x63, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAD, + 0x20, 0xAE, 0x39, 0x0F, 0x28, 0xCE, 0x20, 0xAE, 0x20, 0xCE, 0x20, 0xAE, 0x0A, 0x20, 0xCE, 0x1C, 0x28, 0xCF, 0x02, 0x28, 0xEF, 0x80, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xEF, 0x05, 0x30, 0xF0, 0x88, 0x39, 0x11, 0x71, 0xF2, 0xD3, 0x35, 0xD2, 0xF4, 0xD2, 0xB4, 0xCA, 0x74, 0xD2, 0x33, 0xCA, 0x13, 0xA2, 0x95, 0x02, 0x05, 0xFF, 0x82, 0x53, 0x99, 0xC0, 0xD1, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x84, 0xB0, 0xD1, 0x79, 0x12, 0x49, 0x52, 0x41, 0x32, 0x41, 0x12, 0x02, 0x41, 0x32, 0x80, 0x41, 0x12, 0x03, 0x39, 0x11, 0x80, 0x38, 0xF1, 0x0B, 0x39, 0x11, 0x80, 0x41, 0x11, 0x03, 0x41, 0x12, 0x80, 0x41, 0x32, 0x01, 0x49, 0x32, 0x01, 0x49, 0x33, 0x86, 0x51, 0x33, 0x61, 0x94, 0x9A, 0x34, 0xC2, 0xB4, 0xD2, 0xB5, 0xD2, 0xB3, 0xCA, 0xB4, 0x01, 0xD2, 0x94, 0x80, 0xCA, 0x93, 0x01, 0xD2, 0x74, 0x83, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0x81, 0xD8, 0x02, 0x00, 0xDF, 0x01, 0x00, 0xBF, 0x87, 0x68, 0xB7, 0xB8, 0xD1, 0x31, 0xDC, 0x03, 0x3F, 0x04, 0x9F, 0x05, 0xDF, 0x06, 0xFF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x80, 0x26, 0xBD, 0x03, 0xB8, 0xD1, 0x80, 0xB8, 0xD2, 0x01, 0xB8, 0xD1, 0x85, 0x78, 0xF1, 0x39, 0x11, 0x38, 0xF1, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x01, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x81, 0x18, 0xB0, 0x01, 0x18, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF6, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x85, 0x10, 0xCF, 0x00, 0xF8, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF6, + 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x38, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x0B, 0x20, 0xCE, 0x07, 0x20, 0xCF, 0x1B, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xF0, 0x01, 0x30, 0xF0, 0x88, 0x38, 0xF0, 0x82, 0x13, 0xD2, 0xF5, 0xCA, 0xD4, 0xD2, 0x74, 0xCA, 0x53, 0xC9, 0xF3, 0xC9, 0xD2, 0x73, 0x98, 0x01, 0x05, 0xFF, 0x81, 0x05, 0xDF, 0xA9, 0x53, 0x03, 0xB8, 0xD1, 0x80, 0x98, 0xF2, 0x01, 0x41, 0x32, 0x80, 0x41, 0x12, 0x01, 0x41, 0x11, 0x07, 0x39, 0x11, 0x03, 0x38, 0xF0, 0x80, 0x39, 0x11, 0x01, 0x38, 0xF0, 0x08, 0x39, 0x11, 0x02, 0x41, 0x12, 0x01, 0x41, 0x32, 0x02, 0x49, 0x33, 0x8D, 0x51, 0x53, 0x59, 0x74, 0x92, 0x14, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x74, 0xCA, 0x74, 0xD2, 0x74, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0xCA, 0x34, 0x99, 0xF6, 0x01, 0x01, 0x1F, 0x02, 0x00, 0xFF, 0x87, 0x38, 0xDB, 0xC0, 0xB1, 0x28, 0xFC, 0x02, 0xDF, 0x04, 0x7F, 0x05, 0x9F, 0x06, 0xDF, 0x07, 0xBF, 0x05, 0x07, 0xFF, 0x06, 0xB8, 0xD1, 0x82, 0x78, 0xF1, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x14, 0x18, 0xAD, 0x89, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xB0, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF6, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, + 0x08, 0xF6, 0x2A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x31, 0x0E, 0x7A, 0x32, 0xAA, 0xD3, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x68, 0xD3, 0x95, 0x91, 0xD3, 0x96, 0xD3, 0x95, 0xD3, 0x35, 0xD2, 0xB4, 0xCA, 0x94, 0xCA, 0x33, 0xD1, 0xF3, 0xC9, 0xD3, 0xC9, 0x93, 0xC9, 0x72, 0xC9, 0x92, 0xC9, 0x72, 0xC9, 0x32, 0xC0, 0xD1, 0xC0, 0xB1, 0xB8, 0xD1, 0xB0, 0xD2, 0xB9, 0xF2, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x0B, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xD3, 0x96, 0x12, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x0A, 0xD3, 0x95, 0x81, 0xCA, 0x13, 0x01, 0x5F, 0x02, 0x01, 0x3F, 0x88, 0x01, 0x1F, 0x09, 0x3F, 0xC0, 0xB1, 0x31, 0x1C, 0x01, 0xBF, 0x03, 0xFF, 0x05, 0x9F, 0x06, 0x9F, 0x07, 0x9F, 0x05, 0x07, 0xFF, 0x80, 0xB8, 0xB1, 0x05, 0xB8, 0xD1, 0x80, 0x78, 0xF1, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x15, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xB0, 0x04, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x10, 0xCF, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x49, 0x6F, 0xAA, 0xD3, 0x06, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x6E, 0xD3, 0x95, 0x8B, 0xD2, 0xF4, 0xCA, 0x74, 0xCA, 0x33, 0xCA, 0x13, 0xC9, 0xD3, 0xC9, 0x92, 0xC9, + 0x52, 0xC1, 0x11, 0xC0, 0xD1, 0xC0, 0xB1, 0xC0, 0xD1, 0xB8, 0xB1, 0x01, 0xB8, 0xD1, 0x80, 0xCA, 0x53, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x08, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x1E, 0xD3, 0x95, 0x84, 0xCA, 0x13, 0x09, 0x7F, 0x01, 0x7F, 0x01, 0x5F, 0x01, 0x7F, 0x01, 0x01, 0x5F, 0x86, 0x88, 0xF5, 0x29, 0x3C, 0x01, 0x3F, 0x02, 0xDF, 0x05, 0x3E, 0x06, 0x7F, 0x07, 0x7F, 0x05, 0x07, 0xFF, 0x80, 0x92, 0x34, 0x05, 0xB8, 0xD1, 0x80, 0x78, 0xF1, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x14, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xD0, 0x00, 0xF8, 0x03, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x80, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x20, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x82, 0x20, 0xEE, 0x82, 0x52, 0xD3, 0x96, 0x0A, 0xD3, 0x95, 0x80, 0xD3, 0xB5, 0x6B, 0xD3, 0x95, 0x87, 0xD2, 0xB4, 0xD2, 0x33, 0xCA, 0x13, 0xC9, 0xB3, 0xC9, 0x92, 0xC9, 0x52, 0xC9, 0x12, 0xC8, 0xD1, 0x01, 0xC0, 0xB1, 0x80, 0xB8, 0xB1, 0x01, 0xB8, 0xD1, 0x80, 0xC2, 0x53, 0x13, 0xD3, 0x95, 0x80, 0xDB, 0x95, 0x15, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x08, 0xD3, 0x95, 0x82, 0xCA, 0x13, 0x31, 0xBC, 0x01, 0xBF, 0x03, 0x01, 0x9F, 0x87, 0x51, 0x39, 0x31, 0x5C, 0x01, 0x7F, 0x01, 0xBF, 0x04, 0x5E, 0x06, 0x3E, 0x07, 0x7F, 0x07, 0xFE, + 0x04, 0x07, 0xFF, 0x80, 0x8A, 0x95, 0x03, 0xB8, 0xD1, 0x82, 0xB0, 0xD1, 0xB8, 0xD1, 0x78, 0xF1, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x14, 0x18, 0xAD, 0x81, 0x10, 0xD0, 0x01, 0x18, 0x06, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x81, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x00, 0xFA, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x26, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x28, 0xEE, 0xB3, 0x14, 0x04, 0xD3, 0x95, 0x83, 0xD4, 0xF8, 0xD6, 0x5C, 0xD6, 0xDD, 0xD6, 0xFD, 0x01, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x01, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x68, 0xD7, 0xFF, 0x88, 0xDF, 0xFF, 0xD7, 0xFF, 0xCB, 0x15, 0xCA, 0x13, 0xC9, 0xD3, 0xC9, 0x92, 0xC9, 0x32, 0xC9, 0x11, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x02, 0xB8, 0xD1, 0x80, 0xC3, 0x97, 0x09, 0xDF, 0xFF, 0x06, 0xD7, 0xFF, 0x81, 0xDF, 0xFF, 0xD5, 0x39, 0x19, 0xD3, 0x95, 0x80, 0xDB, 0x95, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x81, 0xC9, 0xF3, 0x31, 0xFC, 0x04, 0x01, 0xDF, 0x81, 0x01, 0xBF, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x82, 0x02, 0xDF, 0x05, 0xFD, 0x07, 0x3E, 0x01, 0x07, 0xFE, 0x03, 0x07, 0xFF, 0x80, 0x8A, 0xB5, 0x03, 0xB8, 0xD1, 0x82, 0xB0, 0xF1, 0xB8, 0xD1, 0x78, 0xF1, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x14, 0x18, 0xAD, 0x80, 0x00, 0xF9, 0x05, 0x01, 0x19, + 0x88, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x10, 0xD0, 0x00, 0xF8, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x02, 0x18, 0xAE, 0x25, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAE, 0x28, 0xEE, 0xCB, 0x55, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0xD6, 0xD5, 0xDB, 0xD7, 0xBF, 0x72, 0xD7, 0xFF, 0x01, 0xDF, 0xFF, 0x8D, 0xCA, 0x13, 0xC9, 0xB3, 0xC9, 0x92, 0xC9, 0x52, 0xC9, 0x12, 0xC0, 0xD1, 0xC0, 0xB1, 0xC0, 0xD1, 0xB8, 0xB1, 0xB8, 0xD1, 0xB0, 0xF1, 0xBA, 0x95, 0xDF, 0xFF, 0xD7, 0xFF, 0x04, 0xDF, 0xFF, 0x80, 0xD7, 0xFF, 0x04, 0xDF, 0xFF, 0x05, 0xD7, 0xFF, 0x81, 0xDF, 0xFF, 0xD5, 0x39, 0x21, 0xD3, 0x95, 0x82, 0xC9, 0xF3, 0x31, 0xFD, 0x02, 0x1F, 0x06, 0x01, 0xFF, 0x85, 0x01, 0xDF, 0x01, 0xFF, 0x05, 0x1D, 0x07, 0x1D, 0x07, 0xFD, 0x07, 0xFE, 0x03, 0x07, 0xFF, 0x80, 0x6B, 0xF7, 0x04, 0xB8, 0xD1, 0x81, 0xB0, 0xD1, 0x78, 0xF1, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x14, 0x18, 0xAD, 0x04, 0x01, 0x19, 0x85, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xCF, 0x03, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x2A, 0x18, 0xAD, 0x81, 0x28, 0xEE, 0xB3, 0x14, 0x02, 0xD3, 0x95, 0x81, 0xD4, 0x77, 0xD7, 0x7E, 0x01, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x03, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x6E, 0xD7, 0xFF, 0x84, 0xC9, 0xD3, 0xC9, 0x92, 0xC9, 0x52, + 0xC9, 0x12, 0xC8, 0xD1, 0x01, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x82, 0xB0, 0xD1, 0xB1, 0x52, 0xD7, 0x9E, 0x02, 0xDF, 0xFF, 0x80, 0xD7, 0xFF, 0x03, 0xDF, 0xFF, 0x81, 0xD7, 0xFF, 0xDF, 0xFF, 0x0A, 0xD7, 0xFF, 0x80, 0xD5, 0x39, 0x20, 0xD3, 0x95, 0x81, 0xC9, 0xD3, 0x32, 0x3C, 0x01, 0x02, 0x3F, 0x80, 0x02, 0x1F, 0x01, 0x02, 0x3F, 0x04, 0x02, 0x1F, 0x81, 0x03, 0x7E, 0x06, 0xDC, 0x01, 0x07, 0xFD, 0x80, 0x07, 0xFE, 0x02, 0x07, 0xFF, 0x80, 0x5C, 0x78, 0x02, 0xB8, 0xD1, 0x83, 0xB0, 0xD1, 0xB8, 0xD1, 0xB0, 0xF1, 0x79, 0x11, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x14, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x85, 0x01, 0x1A, 0x01, 0x17, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD0, 0x00, 0xF9, 0x06, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x82, 0x52, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xD4, 0xB8, 0xD7, 0xBF, 0x77, 0xD7, 0xFF, 0x83, 0xC9, 0x72, 0xC9, 0x52, 0xC9, 0x12, 0xC8, 0xD1, 0x01, 0xC0, 0xB1, 0x02, 0xB8, 0xD1, 0x81, 0xB0, 0xF1, 0xD6, 0x3C, 0x01, 0xDF, 0xFF, 0x80, 0xD7, 0xFF, 0x01, 0xDF, 0xFF, 0x80, 0xD7, 0xFF, 0x01, 0xDF, 0xFF, 0x01, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x08, 0xD7, 0xFF, 0x83, 0xDF, 0xFF, 0xD7, 0xFF, 0xDF, 0xFF, 0xD5, 0x39, 0x14, 0xD3, 0x95, 0x01, 0xD3, 0x96, 0x08, 0xD3, + 0x95, 0x82, 0xC9, 0xD3, 0x32, 0x5C, 0x02, 0x7F, 0x02, 0x02, 0x5F, 0x80, 0x02, 0x3F, 0x01, 0x02, 0x5F, 0x02, 0x02, 0x3F, 0x81, 0x02, 0x9F, 0x06, 0x7C, 0x01, 0x07, 0xFC, 0x80, 0x07, 0xFE, 0x02, 0x07, 0xFF, 0x83, 0x5C, 0x78, 0xB8, 0xD1, 0xB0, 0xD1, 0xB8, 0xD1, 0x01, 0xB0, 0xD1, 0x81, 0xB8, 0xD1, 0x70, 0xF1, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x14, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xCF, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x2B, 0x18, 0xAD, 0x80, 0x49, 0x6F, 0x02, 0xD3, 0x95, 0x81, 0xD4, 0x57, 0xD7, 0xBF, 0x73, 0xD7, 0xFF, 0x87, 0xD7, 0xDF, 0xD7, 0xFF, 0xCF, 0x3E, 0xC6, 0x7C, 0xC5, 0x3A, 0xC9, 0x51, 0xC9, 0x12, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x82, 0xB0, 0xD1, 0xB0, 0xF1, 0xBB, 0x97, 0x18, 0xD7, 0xFF, 0x82, 0xD6, 0x5B, 0xD3, 0x95, 0xD3, 0x96, 0x17, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x83, 0xD3, 0x96, 0xD3, 0x95, 0xC9, 0xB3, 0x32, 0x7C, 0x03, 0x02, 0x9F, 0x04, 0x02, 0x7F, 0x85, 0x02, 0x5F, 0x02, 0x7F, 0x05, 0xBC, 0x07, 0xDB, 0x07, 0xFC, 0x07, 0xFD, 0x02, 0x07, 0xFF, 0x82, 0x5C, 0x78, 0xB8, 0xD1, 0xB0, 0xD1, 0x02, 0xB8, 0xD1, 0x84, 0xB0, 0xD1, 0x58, 0xF1, 0x39, 0x11, 0x31, 0x11, 0x30, 0xF0, 0x01, 0x28, 0xF0, 0x81, 0x28, 0xCF, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x14, 0x18, 0xAD, + 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x87, 0x01, 0x1A, 0x01, 0x17, 0x18, 0xCE, 0x18, 0xAE, 0x18, 0xD0, 0x01, 0x18, 0x00, 0xF9, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x2B, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0xA2, 0xD3, 0x01, 0xD3, 0x95, 0x81, 0xD3, 0xD6, 0xD7, 0x5E, 0x01, 0xCF, 0xFF, 0x01, 0xD7, 0xFF, 0x01, 0xCF, 0xFF, 0x01, 0xD7, 0xFF, 0x80, 0xD7, 0xDF, 0x02, 0xD7, 0xFF, 0x80, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x8A, 0xCF, 0xDF, 0xCF, 0xFF, 0xD7, 0xFF, 0xD7, 0xDF, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xFF, 0xD7, 0xDF, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xDF, 0x01, 0xCF, 0xFF, 0x01, 0xD7, 0xFF, 0x83, 0xCF, 0xFF, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xFF, 0x01, 0xD7, 0xDF, 0x82, 0xCF, 0xFF, 0xD7, 0xDF, 0xCF, 0xFF, 0x01, 0xD7, 0xFF, 0x84, 0xCF, 0xFF, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xFF, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x01, 0xCF, 0xFF, 0x85, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xDF, 0xCF, 0xFF, 0xD7, 0xFF, 0xD7, 0xDF, 0x37, 0xD7, 0xFF, 0x89, 0xCF, 0xFF, 0xD7, 0xFF, 0xCF, 0xDF, 0xD7, 0xDF, 0xCF, 0xDF, 0xCF, 0xFF, 0xD7, 0xDF, 0xAC, 0xD8, 0x81, 0x91, 0x91, 0x51, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x82, 0xA8, 0xF1, 0xA9, 0x72, 0xD7, 0x7E, 0x01, 0xD7, 0xFF, 0x01, 0xD7, 0xDF, 0x02, 0xD7, 0xFF, 0x81, 0xD7, 0xDF, 0xCF, 0xFF, 0x05, 0xD7, 0xFF, 0x01, 0xD7, 0xDF, 0x03, 0xD7, 0xFF, 0x85, 0xD7, 0xDF, 0xD7, 0xFF, 0xD7, 0xDF, 0xD7, 0xFF, 0xD7, 0xDF, 0xD6, 0x5C, 0x1D, 0xD3, 0x95, 0x83, 0xC1, 0x93, 0x0A, 0x7F, 0x02, 0xFF, 0x02, 0xDF, + 0x02, 0x02, 0xBF, 0x02, 0x02, 0x9F, 0x86, 0x02, 0x7F, 0x02, 0x9F, 0x02, 0x7F, 0x04, 0xDD, 0x07, 0xBB, 0x07, 0xFB, 0x07, 0xFD, 0x02, 0x07, 0xFF, 0x80, 0x3D, 0xBB, 0x01, 0xB8, 0xD1, 0x80, 0xB0, 0xF1, 0x02, 0xB0, 0xD1, 0x81, 0x59, 0x11, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x03, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x14, 0x18, 0xAD, 0x87, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAF, 0x01, 0x18, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x17, 0x18, 0xAE, 0x2C, 0x18, 0xAD, 0x81, 0x31, 0x0E, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x80, 0xD5, 0xBA, 0x0F, 0xCF, 0xDF, 0x88, 0xC7, 0x7E, 0xBE, 0x5B, 0xBE, 0x3C, 0xB5, 0x7A, 0xAC, 0xB8, 0xBD, 0xBB, 0xC6, 0x3C, 0xBE, 0x3B, 0xC7, 0x1E, 0x0B, 0xCF, 0xDF, 0x88, 0xC7, 0x7E, 0xBE, 0x5C, 0xB5, 0xDB, 0xAC, 0xB8, 0xAC, 0x98, 0xBD, 0x5A, 0xBE, 0x3C, 0xC6, 0x1C, 0xC6, 0x9D, 0x49, 0xCF, 0xDF, 0x83, 0xAC, 0xB9, 0x81, 0x91, 0x91, 0x51, 0x99, 0x11, 0x03, 0x99, 0x31, 0x83, 0x99, 0x11, 0xA1, 0x11, 0xA9, 0x11, 0xBC, 0x78, 0x02, 0xCF, 0xDF, 0x82, 0xD7, 0xDF, 0xCF, 0xDF, 0xCF, 0x5E, 0x01, 0xBE, 0x5C, 0x82, 0xC6, 0x3C, 0xC6, 0x1C, 0xCE, 0xFD, 0x0E, 0xCF, 0xDF, 0x86, 0xCF, 0xFF, 0xCF, 0xDF, 0xD6, 0x3B, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x75, 0xD3, 0x95, 0x13, 0xD3, 0x75, 0x80, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x83, 0xD3, 0x95, 0x08, 0x9F, 0x01, 0x1F, 0x03, 0x1F, 0x01, 0x02, 0xFF, 0x02, 0x02, 0xDF, 0x04, + 0x02, 0xBF, 0x84, 0x03, 0xFD, 0x07, 0x9A, 0x07, 0xFA, 0x07, 0xFC, 0x07, 0xFE, 0x01, 0x07, 0xFF, 0x81, 0x2E, 0x5C, 0xB0, 0xD1, 0x01, 0xB8, 0xD1, 0x88, 0xB0, 0xF1, 0xB0, 0xD1, 0xB8, 0xD1, 0x59, 0x12, 0x39, 0x11, 0x38, 0xF1, 0x30, 0xF0, 0x28, 0xF0, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x18, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xAE, 0x2D, 0x18, 0xAD, 0x80, 0x79, 0xF1, 0x02, 0xD3, 0x55, 0x83, 0xCF, 0x7E, 0xC7, 0xDF, 0xCF, 0xBF, 0xCF, 0xDF, 0x01, 0xC7, 0xDF, 0x03, 0xCF, 0xDF, 0x80, 0xCF, 0xBF, 0x01, 0xCF, 0xDF, 0x85, 0xCF, 0xBF, 0xBE, 0xFD, 0xAC, 0xB8, 0x8A, 0x52, 0x91, 0x51, 0x91, 0x31, 0x05, 0x99, 0x31, 0x8E, 0x99, 0x11, 0xA1, 0x92, 0xAB, 0x96, 0xBE, 0x7D, 0xCF, 0xDF, 0xC7, 0xDF, 0xCF, 0xBF, 0xC7, 0xDF, 0xCF, 0xDF, 0xCF, 0xBF, 0xC7, 0x5E, 0xAD, 0x19, 0x92, 0xB4, 0x89, 0x71, 0x91, 0x51, 0x01, 0x99, 0x31, 0x01, 0x99, 0x11, 0x87, 0xA1, 0x11, 0x99, 0x31, 0xA1, 0x11, 0x99, 0x11, 0xAB, 0x36, 0xBD, 0x5A, 0xC7, 0x5E, 0xCF, 0xDF, 0x01, 0xC7, 0xBF, 0x83, 0xCF, 0xDF, 0xC7, 0xDF, 0xC7, 0xBF, 0xC7, 0xDF, 0x38, 0xCF, 0xDF, 0x8A, 0xC7, 0xDF, 0xCF, 0xBF, 0xC7, 0xDF, 0xC7, 0xBF, 0xCF, 0xBF, 0xC7, 0xDF, 0xA4, 0xB8, 0x81, 0x91, 0x91, 0x51, 0x99, 0x31, 0x99, 0x11, 0x01, 0x99, 0x31, 0x86, 0x99, 0x11, 0x99, 0x31, 0x99, 0x12, 0xBE, 0x3B, 0xCF, 0xBF, 0xCF, 0xDF, 0xCF, + 0xBF, 0x01, 0xCF, 0xDF, 0x82, 0xB5, 0xDA, 0x8A, 0x12, 0x89, 0x71, 0x01, 0x99, 0x31, 0x85, 0xA1, 0x11, 0x99, 0x31, 0xAB, 0x35, 0xC7, 0x5E, 0xCF, 0xBF, 0xCF, 0xDF, 0x01, 0xC7, 0xDF, 0x01, 0xCF, 0xDF, 0x80, 0xCF, 0xBF, 0x01, 0xC7, 0xDF, 0x02, 0xCF, 0xDF, 0x80, 0xC7, 0xDF, 0x02, 0xCF, 0xDF, 0x80, 0xCE, 0x1B, 0x1B, 0xD3, 0x55, 0x83, 0x00, 0x7F, 0x00, 0x9E, 0x02, 0x3F, 0x03, 0x3F, 0x02, 0x03, 0x1F, 0x82, 0x02, 0xFF, 0x03, 0x1F, 0x02, 0xFF, 0x02, 0x02, 0xDF, 0x84, 0x03, 0x9E, 0x07, 0x5A, 0x07, 0xF9, 0x07, 0xFB, 0x07, 0xFD, 0x01, 0x07, 0xFF, 0x84, 0x2E, 0x3C, 0xB8, 0xD2, 0xB8, 0xD1, 0xB0, 0xD1, 0xB8, 0xD1, 0x01, 0xB0, 0xD1, 0x87, 0x49, 0x11, 0x39, 0x11, 0x38, 0xF0, 0x30, 0xF0, 0x28, 0xF0, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x15, 0x18, 0xAD, 0x85, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x2D, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0xA2, 0x93, 0x01, 0xD3, 0x35, 0x82, 0xCC, 0x98, 0xC7, 0xBF, 0xC7, 0xBE, 0x09, 0xC7, 0xBF, 0x85, 0xC7, 0x5E, 0xA4, 0xB8, 0x81, 0x91, 0x91, 0x51, 0x99, 0x11, 0xA1, 0x31, 0x01, 0xA1, 0x11, 0x82, 0x99, 0x31, 0xA1, 0x11, 0xA1, 0x12, 0x05, 0xA1, 0x11, 0x89, 0xAB, 0x35, 0xBE, 0xFE, 0xC7, 0xBF, 0xC7, 0xBE, 0xC7, 0xBF, 0xB5, 0xDB, 0x89, 0xF1, 0x89, 0x71, 0x99, 0x31, 0x99, 0x11, 0x04, 0xA1, 0x11, 0x81, 0xA1, 0x32, 0x99, 0x11, 0x03, 0xA1, 0x11, 0x82, 0xA1, + 0x72, 0xBD, 0x3A, 0xC7, 0xBE, 0x02, 0xC7, 0xBF, 0x81, 0xC7, 0xBE, 0xC7, 0x9F, 0x37, 0xC7, 0xBF, 0x80, 0xC7, 0x9F, 0x05, 0xC7, 0xBF, 0x8B, 0xAC, 0x98, 0x81, 0x91, 0x91, 0x51, 0x99, 0x31, 0xA1, 0x11, 0xA1, 0x31, 0xA1, 0x11, 0xA1, 0x31, 0xA1, 0x11, 0x99, 0x31, 0xBE, 0x1B, 0xC7, 0x9F, 0x02, 0xC7, 0xBF, 0x85, 0xBE, 0xFD, 0x89, 0xF2, 0x89, 0x91, 0x99, 0x31, 0xA1, 0x12, 0xA1, 0x31, 0x02, 0xA1, 0x11, 0x80, 0xAB, 0x97, 0x01, 0xC7, 0xBF, 0x80, 0xC7, 0xBE, 0x0D, 0xC7, 0xBF, 0x81, 0xC6, 0xDD, 0xD3, 0x75, 0x16, 0xD3, 0x35, 0x80, 0xD3, 0x34, 0x01, 0xD3, 0x35, 0x01, 0x00, 0x9F, 0x84, 0x01, 0x3F, 0x03, 0x3F, 0x03, 0x7F, 0x03, 0x5F, 0x03, 0x3F, 0x03, 0x03, 0x1F, 0x01, 0x02, 0xFF, 0x84, 0x03, 0x3F, 0x06, 0xF9, 0x07, 0xF9, 0x07, 0xFB, 0x07, 0xFD, 0x01, 0x07, 0xFF, 0x86, 0x2E, 0x3C, 0xB8, 0xD2, 0xB0, 0xF1, 0xB8, 0xD1, 0xB0, 0xD1, 0xB0, 0xF1, 0xB0, 0xD1, 0x01, 0x39, 0x11, 0x82, 0x38, 0xF0, 0x30, 0xF0, 0x31, 0x10, 0x01, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x82, 0x20, 0xAE, 0x20, 0xAD, 0x20, 0xAE, 0x15, 0x18, 0xAD, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x80, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x84, 0x01, 0x39, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x20, 0xCD, 0x18, 0xAE, 0x28, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0xD3, 0x15, 0x83, 0xD3, 0x14, 0xC5, 0xFB, 0xC7, 0x9F, 0xC7, 0x9E, 0x01, 0xC7, 0xBF, 0x01, 0xC7, 0x9E, 0x89, 0xC7, 0xBF, 0xC7, 0x9F, 0xBF, 0x9E, 0xBF, 0xBF, 0xBF, 0xBE, 0xB6, 0x7C, + 0x8A, 0x53, 0x89, 0x71, 0xA1, 0x31, 0xA1, 0x12, 0x0A, 0xA1, 0x11, 0x80, 0xA1, 0x12, 0x01, 0xA1, 0x11, 0x85, 0xA1, 0x72, 0xB5, 0x39, 0xBF, 0x9F, 0x9B, 0xF6, 0x81, 0x91, 0x91, 0x51, 0x0C, 0xA1, 0x11, 0x80, 0xA1, 0x12, 0x01, 0xA1, 0x11, 0x83, 0xAB, 0x15, 0xBF, 0x3D, 0xC7, 0x9F, 0xC7, 0xBE, 0x01, 0xC7, 0x9F, 0x37, 0xC7, 0x9E, 0x82, 0xC7, 0x9F, 0xC7, 0x9E, 0xC7, 0x9F, 0x01, 0xC7, 0x9E, 0x84, 0xC7, 0xBF, 0xC7, 0x9F, 0xA4, 0xB8, 0x81, 0x91, 0x91, 0x51, 0x04, 0xA1, 0x11, 0x89, 0xA1, 0x12, 0xA1, 0x11, 0xBD, 0xFB, 0xC7, 0x9F, 0xC7, 0x9E, 0xC7, 0xBE, 0xC7, 0x9F, 0xAC, 0xF9, 0x81, 0x91, 0x91, 0x71, 0x02, 0xA1, 0x11, 0x85, 0xA1, 0x12, 0xA1, 0x11, 0xA1, 0x31, 0xA1, 0x11, 0xBF, 0x3E, 0xBF, 0xBF, 0x02, 0xC7, 0x9E, 0x80, 0xC7, 0xBF, 0x02, 0xC7, 0x9E, 0x80, 0xBF, 0xBF, 0x02, 0xC7, 0x9E, 0x89, 0xBF, 0x9E, 0xC7, 0x9F, 0xC7, 0x9E, 0xBF, 0xBE, 0xC7, 0x9E, 0xC6, 0xBD, 0xD3, 0x55, 0xD2, 0xF5, 0xD3, 0x15, 0xCB, 0x14, 0x11, 0xD3, 0x14, 0x02, 0xD3, 0x15, 0x80, 0xD3, 0x14, 0x01, 0x00, 0x7F, 0x81, 0x00, 0xFF, 0x02, 0x7F, 0x01, 0x03, 0x9F, 0x83, 0x03, 0x7F, 0x23, 0x1D, 0x52, 0x59, 0x5A, 0x3A, 0x01, 0x03, 0x3F, 0x01, 0x03, 0x1F, 0x83, 0x06, 0x99, 0x07, 0xF8, 0x07, 0xFA, 0x07, 0xFD, 0x01, 0x07, 0xFF, 0x84, 0x36, 0x3C, 0xB0, 0xD1, 0xB0, 0xF1, 0xB0, 0xD1, 0xB8, 0xD1, 0x01, 0xB0, 0xD1, 0x85, 0x41, 0x12, 0x38, 0xF1, 0x39, 0x11, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x82, 0x20, 0xAE, 0x20, 0xAD, 0x20, 0xAE, 0x15, 0x18, + 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x09, 0x15, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x82, 0x20, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x29, 0x18, 0xAD, 0x83, 0xD2, 0xF4, 0xCA, 0xF4, 0xD2, 0xF4, 0xC6, 0x5C, 0x08, 0xBF, 0x9E, 0x83, 0xBF, 0x7F, 0xB6, 0x7C, 0x8A, 0x12, 0x89, 0x71, 0x01, 0xA1, 0x11, 0x82, 0xA9, 0x11, 0xA1, 0x11, 0xA9, 0x11, 0x02, 0xA1, 0x11, 0x01, 0xA9, 0x11, 0x02, 0xA1, 0x11, 0x80, 0xA9, 0x11, 0x02, 0xA1, 0x11, 0x84, 0xA9, 0x12, 0xA9, 0x11, 0xA1, 0xF3, 0x81, 0x91, 0x99, 0x31, 0x01, 0xA1, 0x11, 0x80, 0xA9, 0x12, 0x04, 0xA1, 0x11, 0x04, 0xA9, 0x11, 0x02, 0xA1, 0x11, 0x83, 0xA1, 0x12, 0xA9, 0x11, 0xAA, 0x54, 0xBF, 0x1D, 0x3F, 0xBF, 0x9E, 0x85, 0xB7, 0x9E, 0xBF, 0x9F, 0xA4, 0x98, 0x81, 0x91, 0x99, 0x51, 0xA9, 0x11, 0x04, 0xA1, 0x11, 0x88, 0xA9, 0x11, 0xB5, 0xFB, 0xBF, 0x9E, 0xBF, 0x9F, 0xBF, 0x9E, 0xBF, 0x9F, 0xA4, 0x98, 0x81, 0x91, 0x99, 0x51, 0x03, 0xA1, 0x11, 0x84, 0xA1, 0x12, 0xA1, 0x11, 0xA9, 0x11, 0xB5, 0xFB, 0xBF, 0x7E, 0x01, 0xBF, 0x9E, 0x80, 0xBF, 0x9F, 0x0D, 0xBF, 0x9E, 0x82, 0xBE, 0xBD, 0xD3, 0x35, 0xCA, 0xF4, 0x12, 0xD2, 0xF4, 0x83, 0xCA, 0xF4, 0xD2, 0xF4, 0xD2, 0xF5, 0xCA, 0xF4, 0x01, 0x00, 0x7F, 0x88, 0x00, 0xBF, 0x02, 0x1F, 0x2A, 0xBD, 0x7A, 0x36, 0xB9, 0x53, 0xC1, 0x12, 0xC9, 0x11, 0xC9, 0x12, 0x0B, 0x3F, 0x01, 0x03, 0x5F, 0x88, 0x03, 0x3F, 0x05, 0xFA, 0x07, 0xF7, 0x07, 0xF9, 0x07, 0xFC, 0x07, 0xFE, 0x07, 0xFF, + 0x2E, 0x3C, 0xB0, 0xD1, 0x01, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x82, 0xA0, 0xF1, 0x68, 0xF1, 0x41, 0x11, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xEF, 0x80, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x19, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x2A, 0x18, 0xAD, 0x02, 0xD2, 0xD4, 0x84, 0xBE, 0x5C, 0xB7, 0x7E, 0xB7, 0x9E, 0xB7, 0x7E, 0xBF, 0x7E, 0x02, 0xB7, 0x7E, 0x88, 0xB7, 0x9E, 0xBF, 0x7E, 0xAE, 0x7B, 0x89, 0xF2, 0x89, 0x71, 0xA1, 0x11, 0xA8, 0xF1, 0xA9, 0x11, 0xA8, 0xF1, 0x04, 0xA9, 0x11, 0x80, 0xA8, 0xF1, 0x02, 0xA9, 0x11, 0x82, 0xA8, 0xF1, 0xA9, 0x11, 0xA8, 0xF1, 0x01, 0xA9, 0x11, 0x80, 0xA9, 0x12, 0x01, 0xA9, 0x11, 0x86, 0xA1, 0x11, 0xA9, 0x11, 0xA8, 0xF1, 0xA9, 0x11, 0xA8, 0xF1, 0xA1, 0x11, 0xA9, 0x11, 0x01, 0xA8, 0xF1, 0x01, 0xA9, 0x11, 0x81, 0xA8, 0xF1, 0xA9, 0x11, 0x01, 0xA8, 0xF1, 0x80, 0xA9, 0x12, 0x02, 0xA9, 0x11, 0x83, 0xA8, 0xF1, 0xA1, 0x11, 0xAA, 0x34, 0xB7, 0x1E, 0x39, 0xBF, 0x7E, 0x01, 0xB7, 0x7E, 0x80, 0xBF, 0x7E, 0x01, 0xB7, 0x7E, 0x84, 0xBF, 0x7F, 0xB7, 0x7E, 0x9C, 0x97, 0x81, 0x91, 0x99, 0x51, 0x04, 0xA8, 0xF1, 0x84, 0xA9, 0x11, 0xA8, 0xF1, 0xB5, 0xDB, 0xBF, 0x7E, 0xB7, 0x7E, 0x01, 0xBF, 0x7E, 0x83, 0xA4, 0x78, 0x81, 0x91, 0x99, 0x51, 0xA9, 0x11, 0x01, 0xA8, 0xF1, 0x01, 0xA9, 0x11, 0x84, 0xA8, 0xF1, 0xA9, 0x11, 0xB5, 0xDB, 0xB7, 0x7F, 0xB7, 0x7E, 0x01, 0xBF, + 0x7E, 0x80, 0xB7, 0x7E, 0x02, 0xBF, 0x7E, 0x01, 0xB7, 0x7E, 0x83, 0xBF, 0x7E, 0xB7, 0x7E, 0xBF, 0x7E, 0xB7, 0x7E, 0x01, 0xBF, 0x7E, 0x01, 0xB7, 0x7E, 0x82, 0xBF, 0x7E, 0xBE, 0x9D, 0xCB, 0x75, 0x15, 0xD2, 0xD4, 0x80, 0xD2, 0xD5, 0x01, 0x00, 0x7F, 0x82, 0x30, 0xBB, 0x99, 0x55, 0xC9, 0x31, 0x01, 0xC9, 0x32, 0x83, 0xC9, 0x12, 0xC0, 0xF2, 0xC8, 0xF2, 0x32, 0xFC, 0x02, 0x03, 0x7F, 0x8F, 0x05, 0x9B, 0x07, 0xF7, 0x07, 0xF9, 0x07, 0xFC, 0x07, 0xFE, 0x07, 0xFF, 0x2E, 0x3C, 0xB8, 0xD1, 0xB0, 0xD1, 0xB0, 0xD2, 0xB0, 0xD1, 0xB0, 0xF1, 0x98, 0xF1, 0xB0, 0xF1, 0x88, 0xF1, 0x31, 0x10, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x53, 0x18, 0xAD, 0x02, 0xD2, 0xB4, 0x08, 0xB7, 0x7E, 0x86, 0xB7, 0x1D, 0x8A, 0x53, 0x81, 0x91, 0xA1, 0x11, 0xA8, 0xF1, 0xB0, 0xF1, 0xA9, 0x11, 0x16, 0xA8, 0xF1, 0x82, 0xA8, 0xF2, 0xA8, 0xF1, 0xB0, 0xF1, 0x0D, 0xA8, 0xF1, 0x80, 0xB2, 0xF5, 0x04, 0xB7, 0x7E, 0x80, 0xB7, 0x5E, 0x02, 0xB7, 0x7E, 0x01, 0xB7, 0x5E, 0x81, 0xB7, 0x7E, 0xB7, 0x5E, 0x01, 0xB7, 0x7E, 0x80, 0xB7, 0x5E, 0x0C, 0xB7, 0x7E, 0x01, 0xB7, 0x5E, 0x14, 0xB7, 0x7E, 0x80, 0xB7, 0x5E, 0x01, 0xB7, 0x7E, 0x82, 0xB7, 0x5E, 0xB7, 0x7E, 0xB7, 0x5E, 0x06, 0xB7, 0x7E, 0x82, 0x9C, 0x78, 0x81, 0x91, 0x99, 0x51, 0x06, 0xA8, 0xF1, 0x80, 0xB5, 0xDB, 0x03, 0xB7, 0x7E, 0x82, 0x9C, 0x77, 0x81, 0x91, 0x91, 0x51, 0x06, 0xA8, 0xF1, 0x80, 0xB5, 0xDB, 0x02, 0xB7, 0x7E, 0x82, 0xB7, 0x5E, 0xB7, 0x7E, + 0xB7, 0x5E, 0x06, 0xB7, 0x7E, 0x80, 0xB7, 0x5E, 0x04, 0xB7, 0x7E, 0x82, 0xB7, 0x5E, 0xB7, 0x1D, 0xCB, 0x96, 0x01, 0xD2, 0xB4, 0x86, 0xCA, 0xB4, 0xD2, 0xB4, 0xCA, 0xB4, 0xD2, 0xB4, 0xCA, 0xB4, 0xD2, 0xB4, 0xCA, 0xB4, 0x07, 0xD2, 0xB4, 0x80, 0xCA, 0x94, 0x02, 0xD2, 0xB4, 0x87, 0xCA, 0xB4, 0x08, 0x7E, 0x70, 0xF8, 0xC9, 0x52, 0xC9, 0x32, 0xC9, 0x12, 0xC9, 0x32, 0xC1, 0x11, 0x01, 0xC8, 0xF1, 0x82, 0xC8, 0xD1, 0x33, 0x1C, 0x03, 0xBF, 0x01, 0x03, 0x9F, 0x87, 0x05, 0x1B, 0x07, 0xD6, 0x07, 0xF7, 0x07, 0xFB, 0x07, 0xFE, 0x07, 0xFF, 0x2E, 0x3C, 0xB8, 0xD1, 0x03, 0xB0, 0xD1, 0x85, 0xA0, 0xF1, 0xB0, 0xF1, 0xB0, 0xD1, 0x50, 0xF0, 0x30, 0xF0, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x55, 0x18, 0xAD, 0x01, 0xD2, 0x94, 0x80, 0xCA, 0x94, 0x04, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x89, 0xB7, 0x5E, 0x94, 0x16, 0x89, 0x91, 0x99, 0x51, 0xB0, 0xF1, 0xA8, 0xF1, 0xB0, 0xF1, 0xA8, 0xF1, 0xB0, 0xF1, 0xA8, 0xF1, 0x02, 0xB0, 0xF1, 0x80, 0xA8, 0xF1, 0x09, 0xB0, 0xF1, 0x01, 0xA8, 0xF1, 0x81, 0xB0, 0xF1, 0xA8, 0xF1, 0x02, 0xB0, 0xF1, 0x80, 0xB0, 0xD1, 0x01, 0xB0, 0xF1, 0x81, 0xB0, 0xF2, 0xA8, 0xF1, 0x01, 0xB0, 0xF1, 0x84, 0xB0, 0xD1, 0xB0, 0xF1, 0xB0, 0xF2, 0xA8, 0xF1, 0xB0, 0xF2, 0x02, 0xB0, 0xF1, 0x80, 0xA8, 0xF1, 0x01, 0xB0, 0xF1, 0x80, 0xAC, 0xF9, 0x01, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x05, 0xAF, 0x5E, 0x80, 0xAF, 0x7E, 0x02, 0xAF, 0x5E, 0x02, 0xB7, 0x5E, 0x83, 0xAF, 0x5E, 0xB7, 0x5E, 0xAF, + 0x5E, 0xB7, 0x5E, 0x03, 0xAF, 0x5E, 0x02, 0xB7, 0x5E, 0x02, 0xAF, 0x5E, 0x01, 0xB7, 0x5E, 0x0A, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x02, 0xAF, 0x5E, 0x01, 0xB7, 0x5E, 0x02, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x03, 0xAF, 0x5E, 0x81, 0xAF, 0x5D, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x82, 0x9C, 0x77, 0x81, 0x91, 0x99, 0x51, 0x06, 0xB0, 0xF1, 0x80, 0xAD, 0xBB, 0x03, 0xB7, 0x5E, 0x82, 0x9C, 0x78, 0x89, 0x91, 0x99, 0x51, 0x06, 0xB0, 0xF1, 0x80, 0xB5, 0xBB, 0x01, 0xB7, 0x5E, 0x04, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x02, 0xB7, 0x5E, 0x80, 0xAF, 0x5E, 0x02, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x8B, 0xB7, 0x5E, 0xAF, 0x5E, 0xAF, 0x1D, 0xCB, 0x75, 0xCA, 0x93, 0xD2, 0x94, 0xCA, 0x74, 0xCA, 0x94, 0xCA, 0x74, 0xD2, 0x74, 0xCA, 0x74, 0xD2, 0x94, 0x07, 0xCA, 0x94, 0x85, 0xD2, 0x94, 0xCA, 0x93, 0xCA, 0x94, 0xD2, 0x93, 0xCA, 0x74, 0x99, 0x15, 0x02, 0xC9, 0x32, 0x83, 0xC9, 0x12, 0xC1, 0x11, 0xC8, 0xF2, 0xC0, 0xF2, 0x01, 0xC8, 0xD1, 0x8A, 0x33, 0x3C, 0x03, 0xFF, 0x03, 0xDF, 0x03, 0xBF, 0x04, 0xDC, 0x07, 0xD6, 0x07, 0xF7, 0x07, 0xFB, 0x07, 0xFE, 0x07, 0xFF, 0x2E, 0x3C, 0x01, 0xB0, 0xD1, 0x02, 0xB0, 0xF1, 0x80, 0xA8, 0xF1, 0x01, 0xB0, 0xF1, 0x82, 0x90, 0xF1, 0x30, 0xF0, 0x28, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x55, 0x18, 0xAD, 0x01, 0xD2, 0x74, 0x89, 0xCA, 0x53, 0xAF, 0x5E, 0xAF, 0x3E, 0xAF, 0x5E, 0xAF, 0x3E, 0xAF, 0x3D, 0xAF, 0x5D, 0xAF, 0x3D, 0xAF, 0x3E, 0xA6, 0x9C, + 0x01, 0x81, 0x91, 0x02, 0xB0, 0xF1, 0x81, 0xB0, 0xD1, 0xB0, 0xF2, 0x01, 0xB0, 0xD1, 0x80, 0xB0, 0xF2, 0x01, 0xB0, 0xF1, 0x8C, 0xAA, 0x13, 0xB4, 0x18, 0xA4, 0x38, 0x9A, 0xB4, 0x99, 0x31, 0xA8, 0xF1, 0xB0, 0xF1, 0xB0, 0xF2, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x81, 0xB0, 0xF1, 0xB0, 0xD1, 0x03, 0xB0, 0xF1, 0x88, 0xAA, 0x74, 0xAC, 0x78, 0xAC, 0xF9, 0x9B, 0x35, 0x99, 0x31, 0xA8, 0xF1, 0xB0, 0xF1, 0xB0, 0xF2, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x84, 0xB0, 0xF1, 0xB0, 0xF2, 0xB0, 0xD1, 0xB0, 0xF1, 0xA9, 0xB3, 0x03, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x01, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x02, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x01, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x01, 0xAF, 0x3E, 0x01, 0xAF, 0x3D, 0x01, 0xAF, 0x3E, 0x81, 0xAF, 0x5E, 0xAF, 0x3E, 0x01, 0xAF, 0x3D, 0x03, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x01, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x07, 0xAF, 0x3E, 0x81, 0xAF, 0x3D, 0xAF, 0x5E, 0x03, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x02, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x04, 0xAF, 0x3E, 0x82, 0xAF, 0x5E, 0xAF, 0x3E, 0xAF, 0x5E, 0x03, 0xAF, 0x3E, 0x84, 0x9C, 0x77, 0x81, 0x91, 0x99, 0x31, 0xB0, 0xF1, 0xB0, 0xD1, 0x04, 0xB0, 0xF1, 0x80, 0xAD, 0xBB, 0x01, 0xAF, 0x3E, 0x84, 0xAF, 0x5D, 0xAF, 0x3E, 0x94, 0x77, 0x81, 0x91, 0x99, 0x51, 0x01, 0xB0, 0xD1, 0x80, 0xB0, 0xF1, 0x03, 0xB0, 0xD1, 0x84, 0xAD, 0xBA, 0xAF, 0x3E, 0xAF, 0x5E, 0xAF, 0x3E, 0xAF, 0x5E, 0x02, 0xAF, 0x3E, 0x80, 0xAF, 0x3D, 0x02, 0xAF, 0x5E, 0x01, 0xAF, 0x3D, + 0x03, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x03, 0xAF, 0x3E, 0x84, 0xAE, 0xFD, 0xCB, 0x56, 0xCA, 0x53, 0xCA, 0x74, 0xD2, 0x53, 0x01, 0xD2, 0x74, 0x81, 0xD2, 0x73, 0xCA, 0x73, 0x07, 0xD2, 0x74, 0x81, 0xD2, 0x54, 0xCA, 0x74, 0x01, 0xCA, 0x54, 0x80, 0xCA, 0x74, 0x02, 0xC9, 0x32, 0x02, 0xC9, 0x12, 0x80, 0xC0, 0xF1, 0x02, 0xC8, 0xD1, 0x81, 0x33, 0x5C, 0x04, 0x1F, 0x01, 0x03, 0xFF, 0x88, 0x04, 0x7D, 0x07, 0x95, 0x07, 0xF6, 0x07, 0xFA, 0x07, 0xFE, 0x07, 0xFF, 0x2E, 0x3C, 0xB0, 0xF1, 0xB0, 0xD1, 0x02, 0xB0, 0xF1, 0x87, 0xA8, 0xF1, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF1, 0x40, 0xF0, 0x28, 0xCF, 0x28, 0xEF, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAE, 0x53, 0x18, 0xAD, 0x02, 0xCA, 0x53, 0x03, 0xA7, 0x3E, 0x03, 0xA7, 0x3D, 0x85, 0x94, 0x57, 0x81, 0x91, 0x99, 0x31, 0xB8, 0xD1, 0xB0, 0xD1, 0xB8, 0xD1, 0x02, 0xB0, 0xD1, 0x83, 0xB0, 0xF1, 0xB0, 0xD1, 0xB1, 0xB3, 0xAD, 0x9A, 0x01, 0xAF, 0x3D, 0x01, 0xA7, 0x3D, 0x85, 0x9D, 0xDA, 0x89, 0xD1, 0x99, 0x51, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF1, 0x02, 0xB0, 0xD1, 0x01, 0xB8, 0xD1, 0x02, 0xB0, 0xD1, 0x84, 0xB0, 0xF1, 0xB2, 0x13, 0xAD, 0x9B, 0xA7, 0x3E, 0xA7, 0x3D, 0x01, 0xAF, 0x3E, 0x82, 0x9D, 0xDA, 0x81, 0xF2, 0x91, 0x71, 0x01, 0xB0, 0xF1, 0x81, 0xB0, 0xD1, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x85, 0xB8, 0xD1, 0xB8, 0xD2, 0xB0, 0xF1, 0xAD, 0x39, 0xA7, 0x3D, 0xA7, 0x3E, 0x04, 0xA7, 0x3D, 0x80, 0xA7, 0x3E, 0x02, 0xA7, 0x3D, 0x80, 0xAF, 0x3D, 0x02, 0xA7, 0x3D, 0x01, 0xA7, 0x3E, + 0x81, 0xA7, 0x3D, 0xAF, 0x3D, 0x01, 0xA7, 0x3D, 0x81, 0xA7, 0x3E, 0xAF, 0x3D, 0x01, 0xA7, 0x3E, 0x81, 0xA7, 0x3D, 0xAF, 0x3D, 0x01, 0xA7, 0x3D, 0x82, 0xA7, 0x3E, 0xAF, 0x3E, 0xAF, 0x1E, 0x07, 0xA7, 0x3E, 0x84, 0xAF, 0x3E, 0xA7, 0x3E, 0xA7, 0x3D, 0xAF, 0x3E, 0xA7, 0x3E, 0x02, 0xA7, 0x3D, 0x80, 0xAF, 0x3D, 0x02, 0xA7, 0x3E, 0x83, 0xA7, 0x3D, 0xAF, 0x3D, 0xA7, 0x3D, 0xAF, 0x3D, 0x01, 0xA7, 0x3E, 0x81, 0xAF, 0x3D, 0xA7, 0x3E, 0x01, 0xA7, 0x3D, 0x83, 0xA7, 0x3E, 0x94, 0x78, 0x81, 0x91, 0x99, 0x31, 0x05, 0xB0, 0xD1, 0x84, 0xB8, 0xD1, 0xAD, 0x9A, 0xA7, 0x3E, 0xA7, 0x3D, 0xA7, 0x3E, 0x02, 0xA7, 0x3D, 0x80, 0xAF, 0x3D, 0x04, 0xA7, 0x3D, 0x80, 0xAF, 0x3D, 0x02, 0xA7, 0x3D, 0x81, 0xAF, 0x3E, 0xA7, 0x3E, 0x02, 0xA7, 0x3D, 0x84, 0xAF, 0x3D, 0xAF, 0x3E, 0xA7, 0x3D, 0xAF, 0x3D, 0xAF, 0x3E, 0x01, 0xA7, 0x3D, 0x81, 0xAF, 0x3D, 0xA7, 0x3E, 0x02, 0xAF, 0x3D, 0x80, 0xA7, 0x3E, 0x01, 0xA7, 0x3D, 0x83, 0xAF, 0x3D, 0xA7, 0x3D, 0xAE, 0xDD, 0xC3, 0x76, 0x03, 0xCA, 0x53, 0x80, 0xCA, 0x33, 0x08, 0xCA, 0x53, 0x82, 0xD2, 0x33, 0xCA, 0x53, 0xD2, 0x53, 0x01, 0xCA, 0x53, 0x85, 0x30, 0x9C, 0x00, 0x5F, 0x58, 0xB9, 0xC9, 0x12, 0xC1, 0x11, 0xC8, 0xF1, 0x01, 0xC8, 0xD1, 0x01, 0xC0, 0xD1, 0x81, 0x33, 0x7C, 0x04, 0x5F, 0x01, 0x04, 0x1F, 0x86, 0x04, 0x5E, 0x07, 0x75, 0x07, 0xF5, 0x07, 0xFA, 0x07, 0xFE, 0x07, 0xFF, 0x2E, 0x3C, 0x02, 0xB0, 0xF1, 0x82, 0xB0, 0xD1, 0xB0, 0xF1, 0xA8, 0xF1, 0x01, 0xB0, 0xF1, 0x82, 0xB0, 0xD1, 0x80, 0xF1, 0x28, 0xEF, 0x01, 0x28, + 0xCF, 0x80, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAE, 0x53, 0x18, 0xAD, 0x82, 0xCA, 0x13, 0xCA, 0x33, 0xCA, 0x13, 0x04, 0xA7, 0x1D, 0x02, 0xA7, 0x3D, 0x82, 0x8A, 0x53, 0x81, 0x91, 0xA8, 0xF1, 0x02, 0xB8, 0xD1, 0x80, 0xB0, 0xD1, 0x02, 0xB8, 0xD1, 0x83, 0xB2, 0x13, 0xA6, 0xBD, 0xA7, 0x1D, 0xA7, 0x3E, 0x03, 0xA7, 0x1D, 0x83, 0x9E, 0x1B, 0x81, 0xF1, 0x91, 0x71, 0xB0, 0xF1, 0x08, 0xB8, 0xD1, 0x81, 0xB1, 0xF3, 0xA6, 0xBD, 0x03, 0xA7, 0x1D, 0x84, 0xA7, 0x3D, 0xA7, 0x1D, 0x9E, 0x1B, 0x89, 0xF2, 0x89, 0x91, 0x05, 0xB8, 0xD1, 0x82, 0xB0, 0xD1, 0xB8, 0xD1, 0xB3, 0x36, 0x09, 0xA7, 0x1D, 0x02, 0xA7, 0x3D, 0x01, 0xA7, 0x1D, 0x82, 0xA7, 0x3D, 0xA7, 0x1D, 0xA7, 0x1E, 0x01, 0xA7, 0x1D, 0x81, 0xA7, 0x3D, 0xA7, 0x3E, 0x02, 0xA7, 0x1D, 0x83, 0xA7, 0x3E, 0xA7, 0x1D, 0xA7, 0x3E, 0xA7, 0x3D, 0x01, 0xA7, 0x1D, 0x80, 0xA7, 0x3D, 0x09, 0xA7, 0x1D, 0x02, 0xA7, 0x3D, 0x81, 0xA7, 0x3E, 0xA7, 0x1D, 0x01, 0xA7, 0x3D, 0x05, 0xA7, 0x1D, 0x80, 0xA7, 0x3D, 0x01, 0xA7, 0x1D, 0x80, 0xA7, 0x3E, 0x01, 0xA7, 0x3D, 0x01, 0xA7, 0x1D, 0x82, 0x94, 0x77, 0x81, 0x91, 0x99, 0x31, 0x06, 0xB8, 0xD1, 0x83, 0xA5, 0x9A, 0xA7, 0x1D, 0xA7, 0x3D, 0xA7, 0x3E, 0x01, 0xA7, 0x1D, 0x81, 0xA7, 0x1E, 0xA7, 0x3D, 0x07, 0xA7, 0x1D, 0x01, 0xA7, 0x3D, 0x84, 0xA7, 0x1E, 0xA7, 0x1D, 0xA7, 0x3D, 0xA7, 0x1D, 0xA7, 0x3D, 0x05, 0xA7, 0x1D, 0x01, 0xA7, 0x3D, 0x80, 0xA7, 0x1D, 0x01, 0xA7, 0x3D, 0x81, 0xA7, 0x1D, 0xA7, 0x3E, 0x04, 0xA7, 0x1D, 0x83, 0xBB, + 0xF7, 0xCA, 0x13, 0xCA, 0x33, 0xCA, 0x13, 0x09, 0xCA, 0x33, 0x01, 0xCA, 0x13, 0x82, 0xCA, 0x14, 0xD2, 0x33, 0xCA, 0x33, 0x01, 0x00, 0x3F, 0x83, 0x00, 0x5F, 0x78, 0xD7, 0xC0, 0xF2, 0xC8, 0xF1, 0x02, 0xC0, 0xD1, 0x8D, 0xC8, 0xB1, 0x4B, 0x1A, 0x04, 0x7F, 0x04, 0x5F, 0x04, 0x3F, 0x04, 0x5F, 0x07, 0x35, 0x07, 0xF4, 0x07, 0xF9, 0x07, 0xFE, 0x07, 0xFF, 0x2E, 0x3C, 0xB0, 0xD1, 0xB0, 0xF1, 0x02, 0xB0, 0xD1, 0x87, 0xA8, 0xF1, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF1, 0xA0, 0xF1, 0x28, 0xCF, 0x28, 0xEF, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAE, 0x53, 0x18, 0xAD, 0x02, 0xCA, 0x13, 0x01, 0x9F, 0x1D, 0x80, 0xA7, 0x1D, 0x01, 0x9F, 0x1D, 0x80, 0xA7, 0x1D, 0x01, 0x9F, 0x1D, 0x01, 0x81, 0x91, 0x07, 0xB8, 0xD1, 0x80, 0xA5, 0xDB, 0x01, 0x9F, 0x1D, 0x80, 0x9E, 0xFD, 0x02, 0x9F, 0x1D, 0x84, 0xA6, 0xFD, 0x9F, 0x1D, 0x94, 0xF9, 0x81, 0x91, 0x99, 0x31, 0x01, 0xB8, 0xD1, 0x80, 0xB8, 0xB1, 0x04, 0xB8, 0xD1, 0x81, 0xB8, 0xB1, 0xA5, 0xDB, 0x03, 0x9F, 0x1D, 0x80, 0xA6, 0xFD, 0x02, 0x9F, 0x1D, 0x82, 0x94, 0xF9, 0x81, 0x91, 0x99, 0x31, 0x06, 0xB8, 0xD1, 0x80, 0xB9, 0x32, 0x02, 0x9F, 0x1D, 0x80, 0x9F, 0x1E, 0x04, 0x9F, 0x1D, 0x84, 0x9E, 0x1B, 0x94, 0x57, 0x92, 0xD4, 0xA1, 0xF3, 0xA9, 0x11, 0x01, 0xB0, 0xF1, 0x81, 0xA9, 0x11, 0xB2, 0x74, 0x01, 0xB2, 0x54, 0x81, 0xAB, 0xF7, 0xA5, 0xDB, 0x01, 0xA6, 0xFD, 0x01, 0xA7, 0x1D, 0x01, 0x9F, 0x1D, 0x80, 0xA6, 0xFD, 0x01, 0x9F, 0x1D, 0x80, 0xA7, 0x1D, 0x0A, 0x9F, 0x1D, 0x8C, 0x9E, + 0x7C, 0x94, 0x98, 0x8B, 0x14, 0x9A, 0x13, 0xA1, 0x31, 0xA9, 0x12, 0xB0, 0xF1, 0xA8, 0xF1, 0xB2, 0x55, 0xB2, 0x74, 0xB2, 0x54, 0xAB, 0x97, 0xAD, 0x1A, 0x03, 0x9F, 0x1D, 0x85, 0xA7, 0x1D, 0x9F, 0x1D, 0xA7, 0x1D, 0x94, 0x57, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xB8, 0xD1, 0x87, 0xA5, 0x7A, 0x9F, 0x1D, 0xA7, 0x1D, 0x9F, 0x1D, 0xA7, 0x1D, 0x9E, 0x7C, 0x9D, 0xBA, 0xA5, 0x9A, 0x06, 0xA5, 0x7A, 0x80, 0xA6, 0x9C, 0x02, 0x9F, 0x1D, 0x80, 0xA7, 0x1D, 0x06, 0x9F, 0x1D, 0x85, 0x9E, 0x5C, 0x94, 0xB8, 0x8A, 0xF4, 0x9A, 0x13, 0xA1, 0x31, 0xA8, 0xF1, 0x01, 0xB0, 0xF1, 0x88, 0xB9, 0x32, 0xB2, 0x74, 0xB2, 0x54, 0xB3, 0x36, 0xAC, 0xB9, 0xA6, 0x3C, 0x9F, 0x1D, 0xBB, 0xF7, 0xC9, 0xF3, 0x02, 0xCA, 0x13, 0x07, 0xC9, 0xF3, 0x04, 0xCA, 0x13, 0x01, 0x00, 0x3F, 0x85, 0x00, 0x5F, 0x58, 0xB9, 0xC0, 0xF1, 0xC0, 0xD1, 0xC8, 0xD1, 0xC8, 0xB2, 0x01, 0xC0, 0xB1, 0x81, 0x62, 0xB8, 0x04, 0xBF, 0x01, 0x04, 0x7F, 0x88, 0x04, 0x5F, 0x07, 0x15, 0x07, 0xF4, 0x07, 0xF9, 0x07, 0xFD, 0x07, 0xFF, 0x2E, 0x3C, 0xB0, 0xD1, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x01, 0xA8, 0xF1, 0x03, 0xB0, 0xF1, 0x82, 0x58, 0xF0, 0x28, 0xCF, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x53, 0x18, 0xAD, 0x02, 0xC9, 0xD3, 0x06, 0x9E, 0xFD, 0x87, 0x95, 0x9A, 0x81, 0x91, 0x91, 0x51, 0xC0, 0xB1, 0xB8, 0xD1, 0xC0, 0xB1, 0xB8, 0xD1, 0xC0, 0xD1, 0x01, 0xB8, 0xD1, 0x80, 0xB2, 0xB5, 0x09, 0x9E, 0xFD, 0x81, 0x82, 0x52, 0x81, 0x91, 0x03, 0xB8, 0xD1, 0x84, 0xC0, 0xB1, 0xC0, 0xD1, 0xB8, 0xD1, 0xC0, 0xD1, + 0xB1, 0xF3, 0x04, 0x9E, 0xFD, 0x80, 0x9F, 0x1D, 0x03, 0x9E, 0xFD, 0x81, 0x8A, 0x93, 0x81, 0x91, 0x01, 0xB8, 0xD1, 0x80, 0xC0, 0xD1, 0x03, 0xB8, 0xD1, 0x81, 0xC0, 0xB1, 0xA6, 0x3C, 0x05, 0x9E, 0xFD, 0x83, 0x94, 0xF8, 0x8A, 0x53, 0x91, 0x71, 0xB0, 0xF1, 0x02, 0xB8, 0xD1, 0x01, 0xB8, 0xB1, 0x80, 0xC0, 0xB1, 0x01, 0xC0, 0xD1, 0x84, 0xB8, 0xD1, 0xC0, 0xD1, 0xB8, 0xB1, 0xB9, 0x92, 0xAC, 0xB9, 0x10, 0x9E, 0xFD, 0x83, 0x9E, 0x5C, 0x8B, 0x96, 0x89, 0x91, 0xA1, 0x31, 0x01, 0xB8, 0xD1, 0x80, 0xC0, 0xB1, 0x05, 0xB8, 0xD1, 0x84, 0xC0, 0xB1, 0xB8, 0xD1, 0xB9, 0x32, 0xAB, 0xF7, 0x9E, 0x9C, 0x03, 0x9E, 0xFD, 0x85, 0x94, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xB8, 0xD1, 0xC0, 0xB1, 0xB8, 0xD1, 0x01, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x80, 0xA5, 0x7A, 0x03, 0x9E, 0xFD, 0x84, 0x94, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xB8, 0xD1, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x80, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x80, 0xA5, 0x7A, 0x08, 0x9E, 0xFD, 0x83, 0x9E, 0x9C, 0x8B, 0x96, 0x89, 0x71, 0xA1, 0x31, 0x01, 0xB8, 0xD1, 0x83, 0xC0, 0xB1, 0xB8, 0xD1, 0xC0, 0xB1, 0xC0, 0xD1, 0x01, 0xB8, 0xD1, 0x80, 0xC0, 0xD1, 0x01, 0xB8, 0xD1, 0x85, 0xC0, 0xD1, 0xB3, 0x35, 0xA6, 0x3C, 0xBB, 0xD7, 0xC9, 0xD3, 0xC9, 0xF3, 0x08, 0xC9, 0xD3, 0x80, 0xC9, 0xF3, 0x01, 0xC9, 0xD3, 0x82, 0xC9, 0xF3, 0xC9, 0xD3, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x91, 0x00, 0xDF, 0x88, 0xF6, 0xC8, 0xD1, 0xC0, 0xB1, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0x62, 0xD9, 0x04, 0xFF, 0x04, 0xBF, 0x04, 0x9F, 0x04, 0x7F, 0x06, 0xB6, + 0x07, 0xF3, 0x07, 0xF8, 0x07, 0xFD, 0x07, 0xFF, 0x2E, 0x3C, 0x02, 0xB0, 0xD1, 0x81, 0xB0, 0xF1, 0x98, 0xF2, 0x02, 0xB0, 0xF1, 0x84, 0x78, 0xF0, 0x90, 0xF1, 0x80, 0xD1, 0x28, 0xCF, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x52, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0xC9, 0xB3, 0x84, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xFC, 0x01, 0x96, 0xFD, 0x84, 0x95, 0x99, 0x89, 0x91, 0x91, 0x71, 0xC0, 0xB1, 0xC0, 0xD1, 0x03, 0xC0, 0xB1, 0x82, 0xC0, 0xD1, 0xAB, 0xD7, 0x9E, 0xFC, 0x01, 0x96, 0xFD, 0x89, 0x96, 0xDD, 0x96, 0xFD, 0x9E, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xDD, 0x9E, 0xFD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x11, 0x01, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x83, 0xC0, 0xD1, 0xC0, 0xB1, 0xAB, 0x76, 0x9E, 0xDD, 0x01, 0x9E, 0xFD, 0x01, 0x9E, 0xDD, 0x88, 0x96, 0xDD, 0x9E, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xDD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x89, 0xC0, 0xD1, 0xA5, 0x5A, 0x96, 0xFD, 0x9E, 0xDD, 0x9E, 0xFD, 0x96, 0xFD, 0x96, 0x3B, 0x8A, 0xF4, 0x89, 0x91, 0xA9, 0x11, 0x01, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x03, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x03, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x87, 0xB9, 0x92, 0xA5, 0x5A, 0x9E, 0xDD, 0x9E, 0xFC, 0x96, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xFD, 0x07, 0x96, 0xFD, 0x84, 0x94, 0xF9, 0x81, 0xF1, 0x91, 0x71, 0xB8, 0xD2, 0xC0, 0xB1, 0x01, 0xC0, 0xD1, 0x83, 0xC0, 0xB1, 0xC0, 0xD1, 0xC0, + 0xB1, 0xC0, 0xD1, 0x06, 0xC0, 0xB1, 0x87, 0xB9, 0x92, 0x9D, 0xBB, 0x96, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x81, 0xA5, 0x5A, 0x9E, 0xDD, 0x01, 0x96, 0xFD, 0x83, 0x9E, 0xFD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x83, 0xA5, 0x5A, 0x96, 0xFD, 0x9E, 0xFD, 0x96, 0xFD, 0x01, 0x9E, 0xFD, 0x86, 0x96, 0xFD, 0x9E, 0xFD, 0x96, 0xFD, 0x95, 0x39, 0x81, 0xF1, 0x91, 0x71, 0xB0, 0xD1, 0x02, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x05, 0xC0, 0xB1, 0x83, 0xB8, 0xD1, 0xB9, 0x11, 0xAC, 0xFA, 0xB4, 0x58, 0x0A, 0xC9, 0xB3, 0x80, 0xC9, 0xD2, 0x01, 0xC9, 0xD3, 0x81, 0xC9, 0xB3, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x83, 0x00, 0xBF, 0x31, 0x1C, 0xC0, 0xD1, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x8C, 0x62, 0x78, 0x05, 0x3F, 0x04, 0xFF, 0x04, 0xBF, 0x04, 0x9F, 0x06, 0x96, 0x07, 0xF2, 0x07, 0xF7, 0x07, 0xFC, 0x07, 0xFF, 0x2E, 0x3C, 0xB0, 0xF1, 0xB0, 0xD1, 0x01, 0xB0, 0xF1, 0x80, 0x89, 0x12, 0x01, 0xB0, 0xF1, 0x83, 0xB0, 0xD1, 0x48, 0xF0, 0x28, 0xF0, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x2C, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x01, 0xC9, 0x93, 0x81, 0xC9, 0x92, 0x96, 0xDC, 0x05, 0x96, 0xDD, 0x82, 0x8D, 0x79, 0x81, 0x91, 0x91, 0x51, 0x06, 0xC0, 0xB1, 0x80, 0xAB, 0xD7, 0x09, 0x96, 0xDD, 0x82, 0x8C, 0x37, 0x81, + 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x80, 0xAB, 0xD7, 0x09, 0x96, 0xDD, 0x82, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x80, 0x9D, 0x5A, 0x02, 0x96, 0xDD, 0x83, 0x95, 0xDA, 0x89, 0xF2, 0x89, 0x71, 0xB8, 0xD1, 0x01, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x0E, 0xC0, 0xB1, 0x80, 0xA4, 0x99, 0x04, 0x96, 0xDD, 0x80, 0x96, 0xDC, 0x05, 0x96, 0xDD, 0x82, 0x8C, 0x37, 0x81, 0x91, 0x99, 0x31, 0x0B, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x04, 0xC0, 0xB1, 0x85, 0xA4, 0x99, 0x96, 0xDC, 0x96, 0xDD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x11, 0x06, 0xC0, 0xB1, 0x80, 0x9D, 0x5A, 0x03, 0x96, 0xDD, 0x82, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x80, 0x9D, 0x5A, 0x06, 0x96, 0xDD, 0x82, 0x8C, 0xD8, 0x81, 0x91, 0x99, 0x51, 0x05, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x06, 0xC0, 0xB1, 0x84, 0xAC, 0x79, 0xAC, 0xF9, 0xC9, 0x92, 0xC9, 0x93, 0xC9, 0xB2, 0x01, 0xC9, 0x92, 0x02, 0xC9, 0x93, 0x02, 0xC9, 0x92, 0x02, 0xC9, 0x93, 0x02, 0x00, 0x3F, 0x83, 0x00, 0xBF, 0x01, 0x1F, 0xC0, 0xB1, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x80, 0x79, 0xD6, 0x01, 0x05, 0x1F, 0x89, 0x04, 0xFF, 0x04, 0xBF, 0x06, 0x38, 0x07, 0xF1, 0x07, 0xF7, 0x07, 0xFC, 0x07, 0xFF, 0x2E, 0x3C, 0xB0, 0xF1, 0xB0, 0xF2, 0x01, 0xB0, 0xF1, 0x80, 0x80, 0xF2, 0x01, 0xB0, 0xF1, 0x86, 0xB0, 0xF2, 0x31, 0x10, 0x30, 0xF0, 0x28, 0xCF, 0x28, 0xEF, 0x20, 0xCE, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x2A, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x02, + 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0B, 0x18, 0xAD, 0x86, 0x20, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xF3, 0x10, 0xD2, 0x18, 0xCD, 0x10, 0x18, 0xAD, 0x02, 0xC9, 0x72, 0x80, 0x8E, 0xBC, 0x01, 0x8E, 0xBD, 0x02, 0x8E, 0xBC, 0x83, 0x8E, 0xBD, 0x8D, 0x7A, 0x81, 0x91, 0x91, 0x51, 0x04, 0xC0, 0xB1, 0x83, 0xC8, 0xB1, 0xC0, 0xB1, 0xAB, 0xB7, 0x8E, 0xBD, 0x07, 0x8E, 0xBC, 0x85, 0x8E, 0xBD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xC0, 0xB1, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x82, 0xC8, 0xB1, 0xC0, 0xB1, 0xAB, 0xB7, 0x02, 0x8E, 0xBC, 0x82, 0x8E, 0xDC, 0x8E, 0xBC, 0x8E, 0xDD, 0x01, 0x8E, 0xBC, 0x84, 0x8E, 0xBD, 0x8E, 0xBC, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x85, 0x9D, 0x39, 0x8E, 0xBD, 0x8E, 0xDD, 0x8D, 0xBA, 0x81, 0xF2, 0x91, 0x71, 0x01, 0xC0, 0xB1, 0x87, 0xC8, 0xB1, 0xC0, 0xB1, 0xC0, 0xD1, 0xC0, 0xB1, 0xC8, 0xB1, 0xC8, 0xB2, 0xC0, 0xB1, 0xC8, 0xB2, 0x01, 0xC8, 0xB1, 0x81, 0xC0, 0xD1, 0xC0, 0xB1, 0x01, 0xC0, 0xD1, 0x80, 0xC8, 0xB1, 0x01, 0xC0, 0xB1, 0x86, 0xC8, 0xB1, 0xC0, 0xB1, 0xA4, 0x37, 0x8E, 0xBC, 0x8E, 0xDD, 0x8E, 0xBC, 0x8E, 0xBD, 0x01, 0x8E, 0xBC, 0x81, 0x8E, 0xBD, 0x8E, 0xBC, 0x01, 0x8E, 0xBD, 0x82, 0x8C, 0xD8, 0x81, 0x91, 0xA1, 0x31, 0x01, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x01, 0xC0, 0xB1, 0x83, 0xC8, 0xB2, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x01, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x8A, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0xA4, 0xD9, 0x8E, 0xBC, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xC0, + 0xB1, 0xC8, 0xB1, 0xC0, 0xD1, 0x02, 0xC0, 0xB1, 0x81, 0xC8, 0xB1, 0x9D, 0x3A, 0x03, 0x8E, 0xBC, 0x82, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x80, 0x9D, 0x5A, 0x01, 0x8E, 0xBC, 0x80, 0x8E, 0xDC, 0x02, 0x8E, 0xBC, 0x89, 0x8C, 0xD8, 0x81, 0x91, 0x99, 0x51, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0xC8, 0xB2, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x04, 0xC0, 0xB1, 0x02, 0xC8, 0xB1, 0x82, 0xC8, 0xD1, 0xA4, 0x78, 0xA4, 0xD9, 0x0C, 0xC9, 0x72, 0x01, 0x00, 0x3F, 0x82, 0x00, 0x1F, 0x00, 0x9F, 0x00, 0xDF, 0x04, 0xC0, 0xB1, 0x8C, 0x91, 0x74, 0x04, 0x9F, 0x05, 0x7F, 0x05, 0x1F, 0x04, 0xFF, 0x06, 0x19, 0x07, 0xF1, 0x07, 0xF6, 0x07, 0xFC, 0x07, 0xFF, 0x35, 0xBB, 0xB0, 0xF1, 0xB0, 0xD1, 0x01, 0xB0, 0xF1, 0x80, 0x69, 0x12, 0x01, 0xB0, 0xF1, 0x80, 0x98, 0xF1, 0x01, 0x30, 0xF0, 0x82, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xEF, 0x03, 0x20, 0xCE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x30, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x89, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xFA, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x02, 0xC9, 0x52, 0x06, 0x8E, 0xBC, 0x84, 0x8D, 0x59, 0x81, 0x91, 0x91, 0x71, 0xC8, 0xF2, 0xC8, 0xF1, 0x02, 0xC8, 0xF2, 0x82, 0xC8, 0xF1, 0xC8, 0xF2, 0xAB, 0xD7, 0x09, 0x8E, 0xBC, 0x84, 0x8C, 0x36, 0x81, 0x91, 0xA9, 0x31, 0xC8, 0xF2, 0xC8, 0xF1, 0x03, 0xC8, + 0xF2, 0x81, 0xC0, 0xF2, 0xAB, 0xB7, 0x09, 0x8E, 0xBC, 0x82, 0x84, 0x37, 0x81, 0x91, 0xA9, 0x51, 0x01, 0xC8, 0xF1, 0x80, 0xC8, 0xF2, 0x01, 0xC8, 0xF1, 0x87, 0xC8, 0xF2, 0xC8, 0xF1, 0x9D, 0x3A, 0x8E, 0xBC, 0x8E, 0x1B, 0x81, 0xF2, 0x89, 0x71, 0xB9, 0x12, 0x01, 0xC8, 0xF1, 0x80, 0xC8, 0xF2, 0x02, 0xC8, 0xF1, 0x82, 0xC8, 0xF2, 0xC8, 0xD1, 0xC1, 0x12, 0x02, 0xC8, 0xF2, 0x8A, 0xC8, 0xD1, 0xC8, 0xF2, 0xC8, 0xD1, 0xC8, 0xF2, 0xC0, 0xF1, 0xC8, 0xF1, 0xC8, 0xF2, 0xC8, 0xF1, 0xC8, 0xF2, 0xC0, 0xF1, 0xA4, 0x98, 0x07, 0x8E, 0xBC, 0x80, 0x8D, 0xBA, 0x01, 0x89, 0x91, 0x8E, 0xC0, 0xF1, 0xC8, 0xF2, 0xC0, 0xF2, 0xC8, 0xF1, 0xC8, 0xF2, 0xC8, 0xF1, 0xC0, 0xF1, 0xC8, 0xF2, 0xC8, 0xF1, 0xC8, 0xF2, 0xC0, 0xF2, 0xC8, 0xF1, 0xC0, 0xF1, 0xC8, 0xF2, 0xC8, 0xF1, 0x02, 0xC8, 0xF2, 0x01, 0xC8, 0xF1, 0x85, 0xC0, 0xF2, 0xC1, 0x32, 0x8E, 0x5C, 0x8C, 0x17, 0x81, 0x91, 0xA9, 0x31, 0x03, 0xC8, 0xF2, 0x80, 0xC8, 0xF1, 0x01, 0xC8, 0xF2, 0x80, 0x9D, 0x59, 0x03, 0x8E, 0xBC, 0x82, 0x8C, 0x17, 0x81, 0x91, 0xA9, 0x51, 0x01, 0xC8, 0xF1, 0x80, 0xC8, 0xF2, 0x01, 0xC8, 0xF1, 0x82, 0xC8, 0xF2, 0xC8, 0xF1, 0x9D, 0x5A, 0x03, 0x8E, 0xBC, 0x84, 0x8E, 0xBD, 0x8D, 0xBA, 0x81, 0xF2, 0x89, 0x91, 0xC1, 0x11, 0x02, 0xC8, 0xF1, 0x80, 0xC0, 0xF2, 0x01, 0xC8, 0xF1, 0x83, 0xC0, 0xF2, 0xC8, 0xD2, 0xC8, 0xF1, 0xC8, 0xF2, 0x01, 0xC0, 0xF1, 0x82, 0xC8, 0xF2, 0xC0, 0xF1, 0xC8, 0xF1, 0x01, 0xC8, 0xF2, 0x01, 0xC8, 0xF1, 0x84, 0xC8, 0xF2, 0xC1, 0x52, 0x95, 0xFB, 0xA4, 0xB8, 0xC1, 0x52, + 0x02, 0xC9, 0x52, 0x80, 0xC9, 0x72, 0x06, 0xC9, 0x52, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x7F, 0x00, 0xDF, 0x68, 0xB7, 0x03, 0xC0, 0xB1, 0x8C, 0xA8, 0xF3, 0x04, 0x1F, 0x05, 0x7F, 0x05, 0x3F, 0x05, 0x1F, 0x05, 0xF9, 0x07, 0xF0, 0x07, 0xF6, 0x07, 0xFC, 0x07, 0xFF, 0x5C, 0x78, 0xB0, 0xF1, 0xB0, 0xD1, 0x01, 0xB0, 0xF1, 0x80, 0x59, 0x12, 0x01, 0xB0, 0xF1, 0x81, 0x90, 0xF1, 0x30, 0xF0, 0x01, 0x30, 0xEF, 0x81, 0x28, 0xCF, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x83, 0x20, 0xAE, 0x20, 0xCE, 0x20, 0xAD, 0x20, 0xAE, 0x2C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x01, 0x17, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x02, 0xC9, 0x32, 0x06, 0x8E, 0xBC, 0x84, 0x8D, 0x79, 0x81, 0x91, 0x91, 0x71, 0xC1, 0x32, 0xC1, 0x31, 0x01, 0xC9, 0x12, 0x83, 0xC1, 0x32, 0xC9, 0x11, 0xC9, 0x12, 0xAB, 0xF7, 0x08, 0x8E, 0xBC, 0x85, 0x96, 0xBC, 0x8C, 0x36, 0x81, 0x91, 0xA9, 0x51, 0xC9, 0x12, 0xC9, 0x11, 0x01, 0xC9, 0x12, 0x80, 0xC1, 0x12, 0x01, 0xC9, 0x12, 0x80, 0xAB, 0xF7, 0x09, 0x8E, 0xBC, 0x82, 0x8C, 0x36, 0x81, 0x91, 0xA9, 0x51, 0x02, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x01, 0xC9, 0x12, 0x86, 0x9D, 0x59, 0x8E, 0xBC, 0x8A, 0xD4, 0x81, 0x91, 0xB1, 0x52, 0xC9, 0x12, 0xC1, 0x31, 0x05, 0xC9, 0x12, 0x80, 0xC9, 0x32, 0x03, 0xC9, 0x12, 0x82, 0xC9, 0x11, 0xC1, 0x12, 0xC9, 0x32, 0x01, 0xC9, 0x12, 0x81, 0xC9, 0x32, 0xC9, 0x11, 0x01, 0xC9, 0x12, 0x93, 0xC9, + 0x32, 0xC1, 0x31, 0x9D, 0xBA, 0x8E, 0xBC, 0x96, 0xBC, 0x8E, 0xBC, 0x8E, 0xDC, 0x96, 0xBB, 0x8E, 0xBC, 0x8E, 0xDC, 0x82, 0xD4, 0x81, 0x91, 0xB9, 0x32, 0xC9, 0x12, 0xC1, 0x12, 0xC9, 0x12, 0xC1, 0x12, 0xC9, 0x12, 0xC1, 0x12, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x85, 0xC9, 0x32, 0xC9, 0x11, 0xC1, 0x31, 0xC9, 0x12, 0xC1, 0x32, 0xC1, 0x31, 0x01, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x80, 0xC1, 0x31, 0x01, 0xC9, 0x12, 0x83, 0xB3, 0x56, 0x8C, 0x36, 0x81, 0x91, 0xA1, 0x51, 0x05, 0xC9, 0x12, 0x83, 0xC1, 0x12, 0x9D, 0x59, 0x8E, 0xBC, 0x96, 0xBC, 0x01, 0x8E, 0xBC, 0x82, 0x8C, 0x37, 0x81, 0x91, 0xA9, 0x51, 0x02, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x01, 0xC9, 0x12, 0x80, 0x9D, 0x59, 0x02, 0x8E, 0xBC, 0x84, 0x96, 0xBC, 0x8E, 0xBC, 0x82, 0xF4, 0x89, 0x91, 0xB1, 0x51, 0x01, 0xC9, 0x12, 0x80, 0xC9, 0x32, 0x01, 0xC9, 0x12, 0x82, 0xC1, 0x31, 0xC9, 0x32, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x83, 0xC9, 0x32, 0xC9, 0x11, 0xC9, 0x12, 0xC9, 0x11, 0x01, 0xC9, 0x32, 0x82, 0xC1, 0x12, 0xC9, 0x11, 0xC1, 0x32, 0x01, 0xC9, 0x12, 0x84, 0xC9, 0x32, 0xB3, 0x36, 0x96, 0xBC, 0xA4, 0xF9, 0xC1, 0x92, 0x09, 0xC9, 0x32, 0x02, 0x00, 0x1F, 0x83, 0x00, 0x7F, 0x00, 0xBF, 0x00, 0x9F, 0x90, 0xB5, 0x03, 0xC0, 0xB1, 0x8A, 0x0B, 0x9E, 0x05, 0x3F, 0x05, 0x7F, 0x05, 0x3F, 0x05, 0xDA, 0x07, 0xEF, 0x07, 0xF5, 0x07, 0xFB, 0x07, 0xFF, 0x54, 0x78, 0xB0, 0xD1, 0x01, 0xB0, 0xF1, 0x88, 0x91, 0x11, 0x59, 0x12, 0xA8, 0xF1, 0xB0, 0xF1, 0x70, 0xF1, 0x30, 0xF0, 0x28, 0xEF, 0x20, 0xEF, 0x28, 0xCF, 0x02, + 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x2B, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x02, 0xC9, 0x12, 0x02, 0x9E, 0xDB, 0x80, 0x9E, 0xDC, 0x02, 0x9E, 0xDB, 0x82, 0x95, 0x78, 0x81, 0x91, 0x99, 0x91, 0x06, 0xC9, 0x52, 0x80, 0xB4, 0x17, 0x09, 0x9E, 0xDB, 0x82, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x72, 0x06, 0xC9, 0x52, 0x82, 0xA5, 0x18, 0x9E, 0xDB, 0x96, 0xDB, 0x07, 0x9E, 0xDB, 0x82, 0x94, 0x36, 0x81, 0x91, 0xA1, 0x71, 0x06, 0xC9, 0x52, 0x83, 0xA5, 0x79, 0x94, 0xD8, 0x81, 0x91, 0x99, 0x91, 0x04, 0xC9, 0x52, 0x80, 0xC1, 0x52, 0x04, 0xC9, 0x52, 0x85, 0xC2, 0x53, 0xC2, 0xB4, 0xB9, 0x52, 0xC1, 0x52, 0xC9, 0x52, 0xC1, 0x52, 0x07, 0xC9, 0x52, 0x80, 0xBA, 0xB5, 0x05, 0x9E, 0xDB, 0x82, 0x95, 0x99, 0x81, 0x91, 0x91, 0xB1, 0x09, 0xC9, 0x52, 0x83, 0xC1, 0xF3, 0xC2, 0xB5, 0xB9, 0x52, 0xC1, 0x52, 0x04, 0xC9, 0x52, 0x80, 0xC9, 0x72, 0x01, 0xC9, 0x52, 0x84, 0xC9, 0x72, 0xC1, 0xB2, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x72, 0x06, 0xC9, 0x52, 0x80, 0xA5, 0x79, 0x03, 0x9E, 0xDB, 0x82, 0x8C, 0x36, 0x89, 0x91, 0xA1, 0x71, 0x06, 0xC9, 0x52, 0x82, 0xA5, 0x79, 0x9E, 0xDB, 0x9E, 0xDC, 0x01, 0x9E, 0xDB, 0x82, 0x95, 0x98, 0x81, 0x91, 0x91, 0x91, 0x03, 0xC9, 0x52, 0x82, 0xC1, 0x52, 0xC9, 0x52, 0xC1, 0x72, 0x02, 0xC9, 0x52, 0x83, 0xC1, 0xF3, 0xC2, 0xB4, 0xB9, 0x52, 0xC1, 0x52, + 0x09, 0xC9, 0x52, 0x84, 0xA6, 0x1A, 0x9E, 0xDC, 0xA5, 0xDA, 0xC1, 0x72, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x01, 0xC9, 0x12, 0x80, 0xC1, 0x11, 0x02, 0xC9, 0x12, 0x02, 0x00, 0x1F, 0x80, 0x00, 0x5F, 0x01, 0x00, 0x7F, 0x82, 0x60, 0x98, 0xC0, 0xB1, 0xB8, 0xB1, 0x01, 0xC0, 0xB1, 0x89, 0x2A, 0xFC, 0x04, 0xFF, 0x05, 0xBF, 0x05, 0x5F, 0x05, 0xFB, 0x07, 0xCF, 0x07, 0xF4, 0x07, 0xFC, 0x07, 0xFF, 0x5C, 0x79, 0x02, 0xB0, 0xF1, 0x81, 0x81, 0x12, 0x59, 0x12, 0x01, 0xB0, 0xF1, 0x85, 0x68, 0xF1, 0x30, 0xF0, 0x30, 0xEF, 0x30, 0xCF, 0x28, 0xCF, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x2B, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x0F, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x01, 0xC8, 0xF1, 0x81, 0xC8, 0xF2, 0xA6, 0xFB, 0x01, 0xA6, 0xFA, 0x87, 0xA6, 0xFB, 0xA6, 0xFA, 0xA6, 0xDA, 0xA6, 0xFA, 0x9D, 0x98, 0x81, 0x91, 0x91, 0x91, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x80, 0xC9, 0x72, 0x02, 0xC9, 0x92, 0x81, 0xB4, 0x36, 0xA6, 0xFB, 0x08, 0xA6, 0xFA, 0x82, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x92, 0x01, 0xC9, 0x92, 0x02, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x80, 0xAD, 0x98, 0x01, 0xA6, 0xDA, 0x07, 0xA6, 0xFA, 0x83, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x92, 0xC9, 0x93, 0x05, 0xC9, 0x92, 0x83, 0xAD, 0x99, 0x8A, 0x32, 0x89, 0x91, 0xC1, 0x92, 0x01, 0xC9, 0x92, 0x80, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x80, 0xC9, 0x73, 0x02, 0xC9, 0x92, 0x81, 0xBC, 0x36, 0xA6, 0x9A, + 0x01, 0xA6, 0xFA, 0x84, 0xA6, 0x9A, 0x93, 0x95, 0x89, 0x91, 0xB9, 0x92, 0xC9, 0x93, 0x01, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x81, 0xC9, 0x72, 0xC9, 0x92, 0x01, 0xC9, 0x72, 0x88, 0xAD, 0x98, 0xA6, 0xDB, 0xA6, 0xDA, 0xA6, 0xFA, 0xA6, 0xFB, 0xA6, 0xFA, 0x93, 0x95, 0x81, 0x91, 0xB1, 0x92, 0x02, 0xC9, 0x92, 0x80, 0xC9, 0x93, 0x01, 0xC9, 0x72, 0x8A, 0xC9, 0x92, 0xC9, 0x72, 0xC2, 0x33, 0xAD, 0x98, 0xA6, 0xFA, 0xA6, 0xFB, 0xA6, 0x39, 0x8A, 0x93, 0x99, 0x92, 0xC1, 0x92, 0xC9, 0x72, 0x02, 0xC9, 0x92, 0x81, 0xC9, 0x72, 0xC9, 0x92, 0x01, 0xC9, 0x72, 0x82, 0x9A, 0x93, 0x81, 0x91, 0xA9, 0x92, 0x06, 0xC9, 0x92, 0x82, 0xAD, 0x98, 0xA6, 0xFA, 0xA6, 0xFB, 0x01, 0xA6, 0xFA, 0x83, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x92, 0xC9, 0x93, 0x05, 0xC9, 0x92, 0x80, 0xAD, 0x98, 0x01, 0xA6, 0xDA, 0x87, 0xA6, 0xFA, 0xA6, 0xDA, 0x8B, 0x95, 0x81, 0x91, 0xB1, 0x92, 0xC9, 0x72, 0xC9, 0x92, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x8C, 0xC9, 0x72, 0xC9, 0x92, 0xC9, 0x72, 0xC2, 0x94, 0xAD, 0xF9, 0xA6, 0xFA, 0xA6, 0xDA, 0xA6, 0x9A, 0x93, 0x34, 0x91, 0x91, 0xB9, 0x92, 0xC9, 0x92, 0xC9, 0x93, 0x05, 0xC9, 0x92, 0x80, 0xB4, 0x97, 0x01, 0xAE, 0xFB, 0x84, 0xB5, 0xD9, 0xC9, 0x52, 0xC8, 0xF1, 0xC8, 0xF2, 0xC0, 0xF1, 0x04, 0xC8, 0xF1, 0x02, 0x00, 0x1F, 0x91, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0x5F, 0x78, 0x97, 0xC0, 0xB1, 0xC0, 0xD1, 0xC0, 0xB1, 0xB8, 0xD1, 0x62, 0x38, 0x04, 0xDF, 0x05, 0xBF, 0x05, 0x9F, 0x05, 0xFA, 0x07, 0xCE, 0x07, 0xF4, 0x07, 0xFC, 0x07, 0xFF, 0x5C, 0x78, 0x02, 0xB0, + 0xF1, 0x86, 0x71, 0x12, 0x59, 0x12, 0xB0, 0xF1, 0xA8, 0xF1, 0x51, 0x10, 0x30, 0xF0, 0x30, 0xCF, 0x02, 0x28, 0xCF, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x2B, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x04, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x0B, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x0D, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0xC0, 0xD1, 0x80, 0xC8, 0xD2, 0x02, 0xB7, 0x1A, 0x86, 0xAE, 0xFA, 0xB7, 0x1A, 0xAF, 0x1A, 0xAE, 0xFA, 0xA5, 0x98, 0x81, 0x91, 0x91, 0x91, 0x01, 0xC9, 0xB3, 0x01, 0xC9, 0xD3, 0x83, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xD3, 0xBC, 0x76, 0x09, 0xB7, 0x1A, 0x82, 0x9C, 0x55, 0x81, 0x91, 0xA9, 0xB2, 0x01, 0xC9, 0xD3, 0x82, 0xC9, 0xB3, 0xC9, 0xB2, 0xC9, 0xB3, 0x01, 0xC9, 0xD3, 0x84, 0xB5, 0xB8, 0xB7, 0x1A, 0xAF, 0x1A, 0xB7, 0x1A, 0xB6, 0xFA, 0x03, 0xB7, 0x1A, 0x84, 0xB6, 0xFA, 0xAF, 0x1A, 0x9C, 0x56, 0x81, 0x91, 0xA9, 0x92, 0x06, 0xC9, 0xB3, 0x95, 0xA3, 0xB5, 0x81, 0x91, 0x99, 0x92, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xD2, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xD3, 0xCA, 0x13, 0xBD, 0xB8, 0xAE, 0xFA, 0xAF, 0x1A, 0xB7, 0x1A, 0xB6, 0xFA, 0xAE, 0xFA, 0xAF, 0x19, 0xA4, 0xF7, 0x89, 0x91, 0xB1, 0xB2, 0x04, 0xC9, 0xB3, 0x80, 0xC9, 0xD2, 0x01, 0xC9, 0xB3, 0x80, 0xC3, 0x14, 0x01, 0xAF, 0x1A, 0x80, 0xAE, 0xF9, 0x01, 0xAF, 0x1A, 0x82, 0x89, 0xF1, 0x81, 0x91, 0xC1, 0xB2, 0x02, 0xC9, 0xB3, 0x01, 0xC9, 0xB2, 0x8B, 0xC9, 0xD3, 0xC9, + 0xB3, 0xCA, 0xB4, 0xB6, 0xB9, 0xAF, 0x1A, 0xB7, 0x1A, 0xAE, 0xFA, 0xB7, 0x1A, 0xB6, 0xB9, 0x8A, 0x93, 0x89, 0x91, 0xC1, 0xD2, 0x03, 0xC9, 0xB3, 0x88, 0xC9, 0xB2, 0xC9, 0xD3, 0xC9, 0xB2, 0xA9, 0x92, 0x81, 0x91, 0xA9, 0xB2, 0xC9, 0xD3, 0xC9, 0xB3, 0xC9, 0xD3, 0x02, 0xC9, 0xB2, 0x88, 0xC9, 0xB3, 0xB5, 0xB8, 0xAF, 0x1A, 0xAE, 0xFA, 0xAF, 0x1A, 0xB7, 0x1A, 0x9C, 0x56, 0x81, 0x91, 0xA9, 0x92, 0x06, 0xC9, 0xB3, 0x81, 0xB5, 0xB8, 0xB6, 0xFA, 0x01, 0xAF, 0x1A, 0x86, 0xB6, 0xFA, 0x89, 0xF2, 0x81, 0x91, 0xC1, 0xB2, 0xC9, 0xB3, 0xC9, 0xB2, 0xC9, 0xD3, 0x01, 0xC9, 0xB3, 0x84, 0xC9, 0xB2, 0xC9, 0xD3, 0xCA, 0xB4, 0xB6, 0xB9, 0xAF, 0x1A, 0x01, 0xB7, 0x1A, 0x85, 0xB6, 0xFA, 0xB7, 0x1A, 0x92, 0xF3, 0x89, 0xB1, 0xC1, 0xB2, 0xC9, 0xD3, 0x01, 0xC9, 0xB3, 0x01, 0xC9, 0xD3, 0x82, 0xC9, 0xB3, 0xC9, 0xD3, 0xC3, 0x15, 0x02, 0xB7, 0x1A, 0x82, 0xBD, 0xD9, 0xC1, 0x32, 0xC0, 0xD1, 0x03, 0xC8, 0xD1, 0x01, 0xC0, 0xD1, 0x02, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x7F, 0x86, 0x68, 0x78, 0xB8, 0xB1, 0xC0, 0xB1, 0xC0, 0xD1, 0xB8, 0xD1, 0x99, 0x54, 0x04, 0x7F, 0x01, 0x05, 0xBF, 0x85, 0x06, 0x1A, 0x07, 0xCE, 0x07, 0xF2, 0x07, 0xFC, 0x07, 0xFF, 0x5C, 0x78, 0x02, 0xB0, 0xF1, 0x81, 0x61, 0x12, 0x59, 0x12, 0x01, 0xA8, 0xF1, 0x82, 0x60, 0xF0, 0x30, 0xF0, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x2B, 0x18, 0xAD, 0x83, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x81, 0x20, 0xAD, + 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF4, 0x0E, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0xC0, 0xB1, 0xC8, 0xB1, 0xC0, 0xB1, 0x06, 0xBF, 0x19, 0x82, 0xA4, 0xB5, 0x81, 0x91, 0xA1, 0xB2, 0x05, 0xC9, 0xF3, 0x81, 0xD1, 0xF3, 0xC4, 0x96, 0x09, 0xBF, 0x19, 0x82, 0xA4, 0x55, 0x81, 0x91, 0xA9, 0xD2, 0x06, 0xC9, 0xF3, 0x80, 0xBD, 0xD8, 0x02, 0xBF, 0x19, 0x80, 0xBF, 0x39, 0x01, 0xBF, 0x19, 0x81, 0xBF, 0x39, 0xBF, 0x19, 0x01, 0xBF, 0x39, 0x82, 0xA4, 0x55, 0x81, 0x91, 0xA9, 0xD2, 0x06, 0xC9, 0xF3, 0x82, 0x99, 0xF2, 0x89, 0x91, 0xB1, 0xD2, 0x06, 0xC9, 0xF3, 0x82, 0xC9, 0xF2, 0xC5, 0x77, 0xBF, 0x19, 0x01, 0xBF, 0x39, 0x04, 0xBF, 0x19, 0x82, 0x9B, 0xF5, 0x81, 0x91, 0xB1, 0xD2, 0x01, 0xC9, 0xF3, 0x80, 0xD1, 0xF3, 0x04, 0xC9, 0xF3, 0x80, 0xBE, 0x78, 0x02, 0xBF, 0x19, 0x82, 0xB6, 0xB9, 0x81, 0x91, 0x89, 0x91, 0x01, 0xC9, 0xF3, 0x80, 0xC9, 0xF2, 0x01, 0xC9, 0xF3, 0x80, 0xC9, 0xD3, 0x01, 0xC9, 0xF3, 0x80, 0xBE, 0xD8, 0x04, 0xBF, 0x19, 0x85, 0xBF, 0x39, 0xAD, 0x57, 0x81, 0x91, 0x99, 0xB2, 0xC9, 0xF3, 0xC9, 0xF2, 0x04, 0xC9, 0xF3, 0x82, 0xB9, 0xD3, 0x81, 0x91, 0xA9, 0xB2, 0x06, 0xC9, 0xF3, 0x80, 0xBD, 0xD8, 0x03, 0xBF, 0x19, 0x82, 0x9C, 0x75, 0x81, 0x91, 0xA9, 0xD2, 0x06, 0xC9, 0xF3, 0x80, 0xBD, 0xD8, 0x02, 0xBF, 0x19, 0x80, 0xB6, 0xB8, 0x01, 0x81, 0x91, 0x07, 0xC9, 0xF3, 0x84, 0xBE, 0x78, 0xBF, 0x19, 0xBF, 0x39, 0xBF, 0x19, 0xBF, 0x39, 0x01, 0xBF, 0x19, 0x82, 0xAD, 0xB7, 0x81, 0x91, 0x91, 0xB1, 0x02, 0xC9, + 0xF3, 0x80, 0xC9, 0xF2, 0x03, 0xC9, 0xF3, 0x87, 0xC7, 0x1A, 0xBF, 0x1A, 0xC7, 0x3A, 0xBF, 0x3A, 0xC6, 0x59, 0xC9, 0xD3, 0xC0, 0xB1, 0xC8, 0xB1, 0x01, 0xC0, 0xB1, 0x81, 0xC8, 0xB1, 0xC0, 0xB1, 0x02, 0x00, 0x1F, 0x85, 0x00, 0x3F, 0x00, 0x5F, 0x00, 0x3F, 0x00, 0x1F, 0x70, 0x76, 0xC0, 0xD1, 0x02, 0xB8, 0xD1, 0x88, 0x0B, 0xFF, 0x05, 0xDF, 0x05, 0xBF, 0x06, 0x39, 0x07, 0xCD, 0x07, 0xF2, 0x07, 0xFC, 0x07, 0xFF, 0x63, 0xF7, 0x02, 0xB0, 0xF1, 0x88, 0x41, 0x32, 0x41, 0x11, 0xA0, 0xF1, 0xB0, 0xF1, 0x90, 0xF1, 0x30, 0xF0, 0x28, 0xEF, 0x28, 0xCE, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x29, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0xC0, 0xB1, 0x06, 0xC7, 0x38, 0x83, 0xA4, 0x75, 0x89, 0x91, 0xA9, 0xD2, 0xCA, 0x13, 0x01, 0xCA, 0x33, 0x81, 0xCA, 0x34, 0xCA, 0x13, 0x01, 0xCA, 0x33, 0x80, 0xCC, 0xB6, 0x09, 0xC7, 0x38, 0x82, 0xA4, 0x55, 0x81, 0x91, 0xA9, 0xD2, 0x01, 0xCA, 0x33, 0x80, 0xCA, 0x13, 0x02, 0xCA, 0x33, 0x81, 0xD2, 0x13, 0xC5, 0xF7, 0x03, 0xC7, 0x38, 0x80, 0xC7, 0x39, 0x04, 0xC7, 0x38, 0x83, 0xA4, 0x75, 0x81, 0x91, 0xA9, 0xD2, 0xCA, 0x13, 0x03, 0xCA, 0x33, 0x84, 0xCA, 0x13, 0xCA, 0x33, 0x91, 0xB1, 0x81, 0x91, 0xCA, 0x13, 0x03, + 0xCA, 0x33, 0x85, 0xCA, 0x13, 0xCA, 0x33, 0xCA, 0x13, 0xC4, 0x55, 0xC7, 0x38, 0xC7, 0x39, 0x03, 0xC7, 0x38, 0x80, 0xC7, 0x39, 0x02, 0xC7, 0x38, 0x82, 0x8A, 0x52, 0x89, 0x91, 0xC2, 0x13, 0x03, 0xCA, 0x13, 0x83, 0xCA, 0x33, 0xCA, 0x13, 0xCA, 0x33, 0xCD, 0x56, 0x01, 0xC7, 0x38, 0x83, 0xC7, 0x39, 0xB5, 0xD7, 0x81, 0x91, 0x91, 0xB1, 0x02, 0xCA, 0x13, 0x80, 0xD2, 0x33, 0x02, 0xCA, 0x33, 0x81, 0xCB, 0x55, 0xCF, 0x38, 0x04, 0xC7, 0x38, 0x81, 0xC7, 0x39, 0xC7, 0x38, 0x01, 0x81, 0x91, 0x02, 0xCA, 0x13, 0x86, 0xCA, 0x33, 0xCA, 0x13, 0xCA, 0x33, 0xD2, 0x33, 0xCA, 0x13, 0x81, 0x91, 0xA9, 0xD2, 0x01, 0xCA, 0x33, 0x01, 0xCA, 0x13, 0x83, 0xCA, 0x33, 0xCA, 0x13, 0xCA, 0x33, 0xCD, 0xF7, 0x02, 0xC7, 0x38, 0x84, 0xC7, 0x39, 0xA4, 0x75, 0x81, 0x91, 0xA9, 0xD2, 0xCA, 0x13, 0x03, 0xCA, 0x33, 0x82, 0xCA, 0x13, 0xCA, 0x33, 0xC5, 0xF7, 0x02, 0xC7, 0x38, 0x82, 0xB5, 0xD6, 0x81, 0x91, 0x99, 0xB2, 0x01, 0xCA, 0x33, 0x80, 0xD2, 0x13, 0x03, 0xCA, 0x33, 0x81, 0xCB, 0x74, 0xC7, 0x39, 0x03, 0xC7, 0x38, 0x80, 0xC7, 0x39, 0x01, 0xC7, 0x38, 0x82, 0x8A, 0xB2, 0x81, 0x91, 0xBA, 0x13, 0x01, 0xCA, 0x13, 0x81, 0xCA, 0x33, 0xCA, 0x13, 0x01, 0xCA, 0x33, 0x87, 0xCA, 0x13, 0xCF, 0x39, 0xC7, 0x39, 0xC7, 0x59, 0xCF, 0x3A, 0xCF, 0x39, 0xCE, 0xD9, 0xC9, 0xF3, 0x04, 0xC0, 0xB1, 0x03, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x80, 0x98, 0x94, 0x02, 0xB8, 0xD1, 0x8E, 0x42, 0xDA, 0x05, 0x9F, 0x05, 0xFF, 0x06, 0x78, 0x07, 0xCC, 0x07, 0xF1, 0x07, 0xFC, 0x07, 0xFF, + 0x82, 0xB5, 0xA8, 0xF1, 0xB0, 0xF1, 0x98, 0xF2, 0x41, 0x32, 0x39, 0x12, 0x70, 0xF1, 0x01, 0xA8, 0xF1, 0x80, 0x50, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x28, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xCF, 0x0E, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x10, 0xD3, 0x08, 0xF3, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0A, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x02, 0xC0, 0xB1, 0x80, 0xCF, 0x57, 0x01, 0xD7, 0x58, 0x89, 0xCF, 0x58, 0xD7, 0x58, 0xCF, 0x58, 0xD7, 0x58, 0xAC, 0x74, 0x81, 0x91, 0xA9, 0xF2, 0xCA, 0x53, 0xD2, 0x53, 0xCA, 0x54, 0x02, 0xCA, 0x53, 0x82, 0xCA, 0x54, 0xCC, 0xD6, 0xCF, 0x58, 0x07, 0xD7, 0x58, 0x83, 0xCF, 0x58, 0xAC, 0x75, 0x81, 0x91, 0xA9, 0xF2, 0x01, 0xCA, 0x53, 0x80, 0xD2, 0x53, 0x02, 0xCA, 0x53, 0x86, 0xD2, 0x54, 0xCE, 0x17, 0xCF, 0x57, 0xD7, 0x58, 0xCF, 0x58, 0xD7, 0x58, 0xCF, 0x58, 0x01, 0xD7, 0x58, 0x88, 0xCF, 0x58, 0xD7, 0x58, 0xCF, 0x58, 0xAC, 0x74, 0x81, 0x91, 0xA9, 0xF2, 0xCA, 0x53, 0xCA, 0x54, 0xD2, 0x53, 0x01, 0xCA, 0x53, 0x83, 0xCA, 0x54, 0xCA, 0x53, 0x99, 0xD2, 0x89, 0xB1, 0x03, 0xCA, 0x53, 0x80, 0xD2, 0x53, 0x01, 0xCA, 0x53, 0x8E, 0xCA, 0x54, 0xD6, 0xB7, 0xD7, 0x58, 0xCF, 0x58, 0xCF, 0x57, 0xCF, 0x58, 0xD7, 0x58, 0xD7, 0x57, 0xD7, 0x58, 0xD7, 0x57, 0xD7, 0x58, 0xCF, 0x58, 0xB5, 0x35, 0x81, 0x91, 0xA1, 0xD2, 0x02, 0xCA, 0x53, 0x81, 0xD2, 0x54, 0xCA, 0x73, 0x01, 0xCA, 0x53, 0x80, + 0xCC, 0x95, 0x01, 0xD7, 0x58, 0x83, 0xCF, 0x58, 0xBD, 0xD6, 0x81, 0x91, 0x99, 0xD2, 0x01, 0xCA, 0x53, 0x80, 0xCA, 0x54, 0x01, 0xCA, 0x53, 0x82, 0xD2, 0x54, 0xCA, 0x54, 0xD4, 0x35, 0x01, 0xD7, 0x58, 0x80, 0xCF, 0x58, 0x01, 0xD7, 0x58, 0x86, 0xCF, 0x57, 0xD7, 0x38, 0xCF, 0x58, 0x9A, 0xF3, 0x89, 0x91, 0xC2, 0x13, 0xCA, 0x54, 0x01, 0xCA, 0x53, 0x86, 0xD2, 0x53, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x73, 0x81, 0x91, 0xA9, 0xF2, 0xCA, 0x53, 0x01, 0xD2, 0x53, 0x85, 0xCA, 0x54, 0xD2, 0x53, 0xCA, 0x53, 0xCA, 0x54, 0xCE, 0x17, 0xCF, 0x58, 0x01, 0xD7, 0x58, 0x86, 0xCF, 0x58, 0xAC, 0x74, 0x81, 0x91, 0xA9, 0xF2, 0xCA, 0x53, 0xCA, 0x54, 0xD2, 0x53, 0x01, 0xCA, 0x53, 0x83, 0xCA, 0x54, 0xCA, 0x53, 0xD6, 0x17, 0xD7, 0x58, 0x01, 0xCF, 0x58, 0x84, 0xBD, 0xD6, 0x81, 0x91, 0x91, 0xB2, 0xCA, 0x53, 0xD2, 0x54, 0x01, 0xCA, 0x53, 0x80, 0xCA, 0x54, 0x01, 0xD2, 0x53, 0x80, 0xCC, 0xD6, 0x03, 0xD7, 0x58, 0x8D, 0xCF, 0x57, 0xD7, 0x57, 0xCF, 0x58, 0xD7, 0x58, 0x9A, 0xF3, 0x81, 0x91, 0xBA, 0x33, 0xCA, 0x54, 0xCA, 0x53, 0xD2, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0xD2, 0x53, 0xCA, 0x53, 0x01, 0xD7, 0x58, 0x81, 0xDF, 0x59, 0xD7, 0x79, 0x01, 0xD7, 0x59, 0x81, 0xD6, 0xF9, 0xC1, 0xF2, 0x03, 0xC0, 0xB1, 0x02, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x03, 0x00, 0x1F, 0x81, 0x18, 0x3E, 0xB0, 0xD2, 0x01, 0xB8, 0xD1, 0x88, 0x99, 0x74, 0x05, 0x9F, 0x06, 0x1F, 0x06, 0x98, 0x07, 0xCC, 0x07, 0xF0, 0x07, 0xFC, 0x07, 0xFF, 0x82, 0xB5, 0x01, 0xB0, 0xF1, 0x89, 0x88, 0xF1, 0x41, 0x32, 0x41, + 0x11, 0x39, 0x10, 0x98, 0xF1, 0xA8, 0xF2, 0x88, 0xF1, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x27, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x01, 0x18, 0x10, 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x02, 0xC0, 0xB1, 0x06, 0xDF, 0x77, 0x84, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x12, 0xCA, 0x94, 0xCA, 0x74, 0x03, 0xCA, 0x94, 0x81, 0xD2, 0x94, 0xD4, 0xF5, 0x09, 0xDF, 0x77, 0x82, 0xB4, 0x74, 0x81, 0x91, 0xAA, 0x12, 0x01, 0xCA, 0x94, 0x85, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xDE, 0x36, 0x01, 0xDF, 0x77, 0x80, 0xDF, 0x57, 0x06, 0xDF, 0x77, 0x83, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x12, 0xCA, 0x94, 0x05, 0xD2, 0x94, 0x86, 0x99, 0xD2, 0x91, 0xD2, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x80, 0xD3, 0xD4, 0x02, 0xDF, 0x77, 0x80, 0xDF, 0x76, 0x04, 0xDF, 0x77, 0x80, 0xDF, 0x57, 0x01, 0xDF, 0x77, 0x81, 0x81, 0x91, 0x89, 0x92, 0x02, 0xCA, 0x94, 0x84, 0xD2, 0x94, 0xCA, 0x94, 0xCA, 0x93, 0xCA, 0x94, 0xD3, 0xD5, 0x02, 0xDF, 0x77, 0x82, 0xC5, 0xF5, 0x81, 0x91, 0x99, 0xD2, 0x01, 0xCA, 0x94, 0x85, 0xD2, 0x73, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xD5, 0x15, 0x07, 0xDF, 0x77, 0x82, 0x9B, 0x12, 0x81, 0x91, 0xBA, 0x53, 0x01, 0xCA, 0x94, 0x86, 0xD2, 0x94, 0xCA, 0x94, 0xCA, 0x93, 0xD2, 0x94, + 0xCA, 0x94, 0x81, 0x91, 0xAA, 0x12, 0x02, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x01, 0xD2, 0x94, 0x80, 0xDE, 0x36, 0x01, 0xDF, 0x77, 0x85, 0xDF, 0x57, 0xDF, 0x77, 0xB4, 0x74, 0x81, 0x91, 0xAA, 0x12, 0xCA, 0x94, 0x05, 0xD2, 0x94, 0x80, 0xDE, 0x36, 0x02, 0xDF, 0x77, 0x83, 0xC5, 0xF5, 0x81, 0x91, 0x99, 0xD2, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x80, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x81, 0xCA, 0x93, 0xD4, 0xF5, 0x07, 0xDF, 0x77, 0x83, 0x9B, 0x12, 0x81, 0x91, 0xBA, 0x53, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x83, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0x05, 0xDF, 0x78, 0x81, 0xE7, 0x79, 0xDF, 0x19, 0x03, 0xC0, 0xB1, 0x08, 0x00, 0x1F, 0x80, 0x38, 0x5B, 0x02, 0xB8, 0xD1, 0x86, 0x2C, 0x3C, 0x06, 0x1F, 0x06, 0xB7, 0x07, 0xCB, 0x07, 0xF0, 0x07, 0xFB, 0x07, 0xFF, 0x01, 0xB0, 0xF1, 0x88, 0xA8, 0xF1, 0x79, 0x12, 0x41, 0x32, 0x41, 0x11, 0x39, 0x11, 0x41, 0x10, 0xA0, 0xF1, 0xA8, 0xF1, 0x48, 0xEF, 0x01, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x26, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x10, 0xCF, 0x12, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0x8E, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0E, 0x18, 0xAD, 0x01, 0xB8, 0xD1, 0x82, 0xC0, 0xD1, 0xE7, 0x76, 0xE7, 0x96, 0x01, 0xE7, 0x97, 0x02, 0xE7, 0x96, 0x82, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x33, 0x02, 0xD2, 0xB4, 0x81, 0xCA, 0xB4, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x81, 0xDD, 0x35, 0xE7, 0x76, 0x08, 0xE7, 0x96, 0x82, 0xB4, 0x74, 0x81, 0x91, + 0xAA, 0x33, 0x02, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x85, 0xCA, 0xD4, 0xD2, 0xD4, 0xE6, 0x56, 0xEF, 0x96, 0xE7, 0x76, 0xE7, 0x97, 0x01, 0xE7, 0x96, 0x81, 0xE7, 0x76, 0xE7, 0x77, 0x02, 0xE7, 0x96, 0x82, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x33, 0x06, 0xD2, 0xB4, 0x84, 0x99, 0xD2, 0x99, 0xF2, 0xCA, 0xB4, 0xD2, 0xB4, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x85, 0xCA, 0xD4, 0xD2, 0xB4, 0xD3, 0xF5, 0xE7, 0x77, 0xE7, 0x97, 0xEF, 0x97, 0x01, 0xE7, 0x96, 0x81, 0xE7, 0x76, 0xE7, 0x77, 0x02, 0xE7, 0x96, 0x81, 0xE7, 0x77, 0xEF, 0x97, 0x01, 0x81, 0x91, 0x01, 0xD2, 0xB4, 0x01, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x81, 0xCA, 0xD4, 0xD3, 0xD5, 0x02, 0xE7, 0x96, 0x85, 0xCE, 0x15, 0x81, 0x91, 0x99, 0xF2, 0xCA, 0xD4, 0xD2, 0xB4, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x85, 0xCA, 0xB4, 0xD2, 0xB4, 0xDD, 0x35, 0xE7, 0x77, 0xEF, 0x76, 0xE7, 0x96, 0x01, 0xE7, 0x97, 0x86, 0xE7, 0x76, 0xE7, 0x96, 0xE7, 0x76, 0xC5, 0x34, 0xB4, 0x94, 0xCC, 0x15, 0xD3, 0xF5, 0x01, 0xDB, 0xF4, 0x85, 0xDB, 0xF5, 0xD3, 0xF5, 0xD3, 0xF4, 0xCB, 0x34, 0x81, 0x91, 0xAA, 0x32, 0x03, 0xD2, 0xB4, 0x84, 0xD2, 0xD4, 0xD2, 0xB4, 0xCA, 0xB4, 0xE6, 0x56, 0xE7, 0x76, 0x01, 0xE7, 0x96, 0x83, 0xE7, 0x76, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x33, 0x06, 0xD2, 0xB4, 0x80, 0xDE, 0x56, 0x02, 0xE7, 0x96, 0x82, 0xCE, 0x15, 0x81, 0x91, 0x99, 0xF2, 0x01, 0xD2, 0xB4, 0x82, 0xD2, 0xD4, 0xD2, 0xB4, 0xD2, 0xD4, 0x01, 0xCA, 0xD4, 0x80, 0xDD, 0x15, 0x01, 0xE7, 0x96, 0x82, 0xE7, 0x76, 0xE7, 0x96, 0xEF, 0x96, 0x02, 0xE7, 0x96, 0x82, + 0x9B, 0x13, 0x81, 0x91, 0xBA, 0x73, 0x06, 0xD2, 0xB4, 0x84, 0xE7, 0x97, 0xEF, 0x97, 0xEF, 0x77, 0xEF, 0x97, 0xEF, 0x78, 0x02, 0xEF, 0x98, 0x83, 0xC9, 0x92, 0xB8, 0xD1, 0xC0, 0xD1, 0xC0, 0xB1, 0x09, 0x00, 0x1F, 0x80, 0x70, 0x96, 0x01, 0xB8, 0xD1, 0x86, 0x8A, 0x35, 0x06, 0x3F, 0x06, 0xD6, 0x07, 0xEA, 0x07, 0xF1, 0x07, 0xFC, 0x07, 0xFF, 0x02, 0xA8, 0xF1, 0x89, 0x61, 0x32, 0x41, 0x32, 0x41, 0x11, 0x38, 0xF1, 0x31, 0x10, 0x48, 0xF0, 0xA8, 0xF1, 0x98, 0xF1, 0x30, 0xCF, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x82, 0x20, 0xAE, 0x20, 0xAD, 0x20, 0xAE, 0x25, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x18, 0xD0, 0x11, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0D, 0x18, 0xAD, 0x02, 0xB8, 0xD1, 0x82, 0xF7, 0x96, 0xF7, 0xB6, 0xF7, 0x96, 0x01, 0xF7, 0x95, 0x84, 0xF7, 0x96, 0xEF, 0xB6, 0xBC, 0x93, 0x81, 0x91, 0xAA, 0x52, 0x02, 0xD2, 0xF4, 0x02, 0xD2, 0xF5, 0x81, 0xD2, 0xF4, 0xDD, 0x55, 0x08, 0xF7, 0xB6, 0x84, 0xEF, 0xB6, 0xBC, 0x93, 0x81, 0x91, 0xAA, 0x53, 0xD2, 0xF5, 0x05, 0xD2, 0xF4, 0x82, 0xE6, 0x75, 0xF7, 0x96, 0xF7, 0x95, 0x02, 0xF7, 0x96, 0x80, 0xF7, 0xB6, 0x01, 0xF7, 0xB5, 0x84, 0xEF, 0x96, 0xF7, 0x96, 0xBC, 0x93, 0x81, 0x91, 0xAA, 0x33, 0x06, 0xD2, 0xF4, 0x01, 0x99, 0xF2, 0x80, 0xD2, 0xF5, 0x01, 0xD2, 0xF4, 0x81, 0xD2, 0xF5, 0xD2, 0xD4, 0x01, 0xD2, 0xF4, 0x80, 0xDC, 0x75, 0x02, 0xF7, 0x95, 0x81, 0xF7, + 0x96, 0xF7, 0xB5, 0x03, 0xF7, 0x96, 0x84, 0xEF, 0xB6, 0xF7, 0xB5, 0xF7, 0x96, 0x81, 0x91, 0x89, 0x91, 0x06, 0xD2, 0xF4, 0x80, 0xDC, 0x15, 0x02, 0xF7, 0x96, 0x82, 0xD6, 0x15, 0x81, 0x91, 0x99, 0xF2, 0x03, 0xD2, 0xF4, 0x8D, 0xD2, 0xF5, 0xD2, 0xF4, 0xD2, 0xF5, 0xE5, 0x35, 0xF7, 0xB6, 0xF7, 0xB5, 0xF7, 0x96, 0xEF, 0xB6, 0xF7, 0x96, 0xF7, 0x95, 0xF7, 0xB6, 0xF7, 0x96, 0xF7, 0xB6, 0xF7, 0x95, 0x01, 0xF7, 0x96, 0x87, 0xF7, 0x95, 0xF7, 0xB6, 0xF7, 0x95, 0xF7, 0xB6, 0xF7, 0x96, 0xBC, 0x93, 0x81, 0x91, 0xAA, 0x53, 0x06, 0xD2, 0xF4, 0x80, 0xEE, 0x75, 0x01, 0xF7, 0x96, 0x84, 0xF7, 0xB5, 0xF7, 0x96, 0xBC, 0x93, 0x81, 0x91, 0xAA, 0x33, 0x06, 0xD2, 0xF4, 0x89, 0xEE, 0x75, 0xF7, 0x96, 0xF7, 0xB5, 0xF7, 0x95, 0xD6, 0x34, 0x81, 0x91, 0x99, 0xF2, 0xD2, 0xF4, 0xD2, 0xF5, 0xD2, 0xF4, 0x02, 0xD2, 0xF5, 0x83, 0xD2, 0xD4, 0xE5, 0x55, 0xF7, 0x96, 0xF7, 0xB5, 0x01, 0xF7, 0xB6, 0x86, 0xF7, 0x95, 0xF7, 0xB6, 0xF7, 0x96, 0xF7, 0xB6, 0xA3, 0x11, 0x81, 0x91, 0xBA, 0x94, 0x06, 0xD2, 0xF4, 0x01, 0xF7, 0x96, 0x02, 0xF7, 0x97, 0x80, 0xF7, 0xB7, 0x01, 0xF7, 0x98, 0x80, 0xD2, 0x73, 0x02, 0xB8, 0xD1, 0x0A, 0x00, 0x1F, 0x80, 0x98, 0xB4, 0x01, 0xB8, 0xD1, 0x96, 0x3C, 0x9B, 0x06, 0xF5, 0x07, 0xE9, 0x07, 0xF1, 0x07, 0xFD, 0x26, 0xBD, 0xB0, 0xF1, 0xB0, 0xF2, 0xB0, 0xF1, 0x49, 0x32, 0x41, 0x32, 0x41, 0x11, 0x39, 0x11, 0x31, 0x10, 0x30, 0xF0, 0x60, 0xF0, 0xA9, 0x11, 0x70, 0xF0, 0x20, 0xCE, 0x20, 0xCF, 0x20, 0xAE, 0x20, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x24, + 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x01, 0x18, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x09, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x12, 0x18, 0xAD, 0x02, 0xB8, 0xD1, 0x80, 0xFF, 0x94, 0x03, 0xFF, 0xB5, 0x85, 0xFF, 0xB4, 0xFF, 0xB5, 0xC4, 0x93, 0x81, 0x91, 0xAA, 0x53, 0xD3, 0x15, 0x02, 0xD3, 0x35, 0x83, 0xD3, 0x34, 0xD3, 0x15, 0xD3, 0x35, 0xE5, 0x75, 0x09, 0xFF, 0xB5, 0x82, 0xC4, 0x93, 0x81, 0x91, 0xAA, 0x53, 0x01, 0xD3, 0x35, 0x81, 0xD3, 0x14, 0xD3, 0x15, 0x02, 0xD3, 0x35, 0x82, 0xF6, 0x75, 0xFF, 0xB5, 0xFF, 0xB4, 0x01, 0xFF, 0xB5, 0x02, 0xFF, 0xB4, 0x01, 0xFF, 0xB5, 0x83, 0xFF, 0x95, 0xC4, 0x93, 0x81, 0x91, 0xAA, 0x53, 0x03, 0xD3, 0x35, 0x01, 0xD3, 0x15, 0x80, 0xD3, 0x35, 0x01, 0x99, 0xF2, 0x82, 0xD3, 0x35, 0xD3, 0x14, 0xD3, 0x15, 0x01, 0xD3, 0x35, 0x82, 0xD3, 0x15, 0xD3, 0x35, 0xDC, 0x54, 0x03, 0xFF, 0xB5, 0x80, 0xFF, 0xB4, 0x04, 0xFF, 0xB5, 0x81, 0xFF, 0xB4, 0xFF, 0xB5, 0x01, 0x81, 0x91, 0x81, 0xD3, 0x34, 0xD3, 0x15, 0x03, 0xD3, 0x35, 0x82, 0xD3, 0x15, 0xDC, 0x34, 0xFF, 0xB4, 0x01, 0xFF, 0xB5, 0x85, 0xDE, 0x34, 0x81, 0x91, 0x99, 0xF2, 0xD3, 0x14, 0xD3, 0x35, 0xD3, 0x15, 0x01, 0xD3, 0x34, 0x01, 0xD3, 0x35, 0x80, 0xE5, 0x74, 0x06, 0xFF, 0xB5, 0x01, 0xFF, 0xB4, 0x81, 0xFF, 0xB5, 0xFF, 0xB4, 0x02, 0xFF, 0xB5, 0x80, 0xFF, 0xB4, 0x01, 0xFF, 0xB5, 0x82, 0xC4, 0xB3, 0x81, 0x91, 0xAA, 0x53, 0x01, 0xD3, 0x35, 0x81, 0xD3, 0x14, 0xD3, + 0x15, 0x02, 0xD3, 0x35, 0x80, 0xED, 0xF5, 0x03, 0xFF, 0xB5, 0x82, 0xC4, 0x93, 0x81, 0x91, 0xAA, 0x53, 0x03, 0xD3, 0x35, 0x01, 0xD3, 0x15, 0x81, 0xD3, 0x35, 0xF6, 0x94, 0x02, 0xFF, 0xB5, 0x82, 0xDE, 0x14, 0x81, 0x91, 0x99, 0xF2, 0x01, 0xD3, 0x35, 0x85, 0xD3, 0x14, 0xD3, 0x34, 0xD3, 0x14, 0xD3, 0x34, 0xD3, 0x15, 0xE5, 0x55, 0x02, 0xFF, 0xB5, 0x80, 0xFF, 0xB4, 0x03, 0xFF, 0xB5, 0x82, 0xA3, 0x32, 0x81, 0x91, 0xBA, 0xB4, 0x02, 0xD3, 0x35, 0x81, 0xD3, 0x15, 0xD3, 0x34, 0x01, 0xD3, 0x35, 0x80, 0xFF, 0xB5, 0x04, 0xFF, 0xB6, 0x83, 0xFF, 0xB7, 0xFF, 0xB8, 0xDB, 0xD4, 0xB8, 0xD2, 0x01, 0xB8, 0xD1, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x3F, 0x08, 0x3F, 0x70, 0xF7, 0xB8, 0xD1, 0xA9, 0x52, 0x0E, 0x94, 0x07, 0xC9, 0x07, 0xF2, 0x07, 0xFD, 0x2E, 0x3C, 0x01, 0xA8, 0xF1, 0x80, 0x99, 0x11, 0x01, 0x41, 0x32, 0x81, 0x39, 0x11, 0x39, 0x10, 0x01, 0x30, 0xF0, 0x84, 0x30, 0xEF, 0x58, 0xF0, 0xA8, 0xF1, 0x40, 0xCF, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x23, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x00, 0xF7, 0x00, 0xF9, 0x01, 0x18, 0x18, 0xCF, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x23, 0x18, 0xAD, 0x02, 0xB8, 0xD1, 0x04, 0xFE, 0x2E, 0x01, 0xFE, 0x4E, 0x82, 0xC3, 0xF0, 0x81, 0x91, 0xAA, 0x73, 0x06, 0xD3, 0x55, 0x80, 0xEC, 0xD1, 0x09, 0xFE, 0x2E, 0x82, 0xC3, 0xEF, 0x81, 0x91, 0xAA, 0x73, 0x05, 0xD3, 0x55, 0x81, 0xD3, 0x54, 0xF5, 0x90, 0x01, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x80, 0xFE, 0x4E, 0x04, 0xFE, 0x2E, 0x82, 0xC3, 0xEF, 0x81, 0x91, + 0xAA, 0x73, 0x06, 0xD3, 0x55, 0x83, 0x9A, 0x12, 0x91, 0xF2, 0xD3, 0x55, 0xD3, 0x54, 0x04, 0xD3, 0x55, 0x81, 0xDB, 0xD4, 0xFE, 0x4E, 0x03, 0xFE, 0x2E, 0x82, 0xFE, 0x4E, 0xFE, 0x2E, 0xFE, 0x4E, 0x02, 0xFE, 0x2E, 0x80, 0xFE, 0x4E, 0x01, 0x81, 0x91, 0x06, 0xD3, 0x55, 0x81, 0xDC, 0x13, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x82, 0xE5, 0x0F, 0x81, 0x91, 0x99, 0xF2, 0x05, 0xD3, 0x55, 0x81, 0xD3, 0x54, 0xEC, 0xD1, 0x07, 0xFE, 0x2E, 0x80, 0xFE, 0x4E, 0x03, 0xFE, 0x2E, 0x01, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x82, 0xC3, 0xCF, 0x81, 0x91, 0xAA, 0x73, 0x06, 0xD3, 0x55, 0x81, 0xE4, 0xD1, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x83, 0xFE, 0x4E, 0xC3, 0xD0, 0x81, 0x91, 0xAA, 0x73, 0x06, 0xD3, 0x55, 0x81, 0xF5, 0x90, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x82, 0xE5, 0x0F, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x55, 0x83, 0xEC, 0xD2, 0xFE, 0x2E, 0xFE, 0x4E, 0xFE, 0x2E, 0x02, 0xFE, 0x4E, 0x84, 0xFE, 0x4D, 0xFE, 0x2F, 0xA2, 0xB0, 0x81, 0x91, 0xC2, 0xF4, 0x06, 0xD3, 0x55, 0x80, 0xFE, 0x2F, 0x02, 0xFE, 0x50, 0x01, 0xFE, 0x51, 0x01, 0xFE, 0x52, 0x81, 0xE3, 0xD2, 0xB8, 0xD2, 0x01, 0xB8, 0xD1, 0x08, 0x00, 0x1F, 0x8D, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0xDF, 0x59, 0xF8, 0xB8, 0xD1, 0x82, 0x91, 0x07, 0xC9, 0x07, 0xF2, 0x07, 0xFE, 0x45, 0x5A, 0xB0, 0xF1, 0xA8, 0xF1, 0x81, 0x12, 0x01, 0x41, 0x32, 0x87, 0x39, 0x11, 0x38, 0xF0, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xEF, 0x28, 0xCF, 0x50, 0xCF, 0x48, 0xEF, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x23, + 0x18, 0xAD, 0x83, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xCF, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x20, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0xB8, 0xD1, 0xB0, 0xD1, 0xB0, 0xD2, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x80, 0xFC, 0x8D, 0x02, 0xFC, 0x6D, 0x82, 0xC3, 0x0F, 0x81, 0xB1, 0xAA, 0x73, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xEC, 0x11, 0x08, 0xFC, 0x6D, 0x83, 0xFC, 0x8D, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x01, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x83, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x96, 0xF4, 0x2F, 0x01, 0xFC, 0x6D, 0x80, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x01, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x83, 0xFC, 0x8D, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x03, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x82, 0xD3, 0x95, 0x9A, 0x12, 0x81, 0x91, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x81, 0xF4, 0x4F, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x80, 0xFC, 0x8D, 0x03, 0xFC, 0x6D, 0x01, 0xFC, 0x8D, 0x80, 0xFC, 0x6D, 0x01, 0x81, 0x91, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xDB, 0xD3, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x82, 0xE3, 0xCE, 0x81, 0x91, 0x9A, 0x12, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x02, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x03, 0xFC, 0x6D, 0x01, 0xFC, 0x8D, 0x07, 0xFC, 0x6D, 0x86, 0xFC, 0x8D, 0xFC, 0x6D, 0xFC, 0x8D, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x75, 0x05, 0xD3, 0x95, 0x87, 0xEB, 0xF1, 0xFC, 0x8D, 0xFC, 0x6D, 0xFC, 0x8D, 0xFC, 0x6D, 0xC3, + 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x03, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x81, 0xD3, 0x95, 0xF4, 0x2F, 0x01, 0xFC, 0x6D, 0x83, 0xFC, 0x8D, 0xE3, 0xCE, 0x81, 0x91, 0x9A, 0x12, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x76, 0x01, 0xD3, 0x95, 0x81, 0xEB, 0xF1, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x80, 0xFC, 0x8D, 0x02, 0xFC, 0x6D, 0x84, 0xFC, 0x8D, 0xA2, 0x50, 0x81, 0x91, 0xC3, 0x14, 0xD3, 0x75, 0x04, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xFC, 0x8E, 0x02, 0xFC, 0x8F, 0x01, 0xFC, 0xB0, 0x01, 0xFC, 0xB1, 0x83, 0xF3, 0xB2, 0xB8, 0xD1, 0xB0, 0xF1, 0xB8, 0xD1, 0x09, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x92, 0x00, 0x5F, 0x03, 0x1F, 0x2D, 0x3B, 0x99, 0xB2, 0x45, 0x4B, 0x07, 0xF3, 0x07, 0xFE, 0x54, 0x98, 0xB0, 0xF1, 0xA8, 0xF1, 0x69, 0x12, 0x49, 0x12, 0x41, 0x12, 0x39, 0x11, 0x31, 0x10, 0x30, 0xF0, 0x30, 0xEF, 0x30, 0xCF, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x82, 0x20, 0xCD, 0x20, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x21, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x29, 0x18, 0xAD, 0x01, 0xB0, 0xF1, 0x80, 0xB0, 0xD1, 0x06, 0xFC, 0x8D, 0x82, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x09, 0xFC, 0x8D, 0x82, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x4F, 0x09, 0xFC, 0x8D, 0x82, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x82, 0x9A, 0x12, 0x81, 0x91, 0xC3, 0x34, 0x06, 0xD3, 0x95, 0x81, 0xDB, + 0xB4, 0xFC, 0x8E, 0x09, 0xFC, 0x8D, 0x01, 0x81, 0x91, 0x05, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xDB, 0xD3, 0x02, 0xFC, 0x8D, 0x82, 0xE3, 0xCE, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x10, 0xFC, 0x8D, 0x82, 0xCB, 0x2F, 0x81, 0x91, 0xAA, 0x93, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x03, 0xFC, 0x8D, 0x82, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x4F, 0x02, 0xFC, 0x8D, 0x82, 0xCB, 0x6F, 0x81, 0x91, 0x9A, 0x32, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x07, 0xFC, 0x8D, 0x82, 0xA2, 0x50, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x81, 0xFC, 0x8E, 0xFC, 0x8F, 0x01, 0xFC, 0xAF, 0x02, 0xFC, 0xB0, 0x81, 0xFC, 0xB2, 0xF4, 0x51, 0x02, 0xB0, 0xD1, 0x08, 0x00, 0x1F, 0x02, 0x00, 0x3F, 0x87, 0x00, 0x5F, 0x02, 0x5F, 0x06, 0xFD, 0x07, 0x70, 0x0F, 0x88, 0x07, 0xF4, 0x07, 0xFF, 0x54, 0x78, 0x01, 0xA8, 0xF1, 0x82, 0x59, 0x32, 0x41, 0x32, 0x41, 0x11, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x82, 0x30, 0xEF, 0x28, 0xCF, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x03, 0x20, 0xAD, 0x1A, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xCF, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x2C, 0x18, 0xAD, 0x01, 0xB0, 0xF1, 0x82, 0xB0, 0xD1, 0xFC, 0xAD, 0xFC, 0xCD, 0x01, 0xFC, 0xAD, 0x02, 0xFC, 0xCD, 0x82, 0xCB, 0x4E, 0x81, 0x91, 0xAA, 0x73, 0x06, 0xD3, 0x95, 0x81, 0xEC, 0x31, 0xFC, 0xAD, 0x08, 0xFC, 0xCD, 0x82, 0xC3, 0x2F, 0x89, 0x91, + 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x6F, 0x02, 0xFC, 0xCD, 0x80, 0xFC, 0xAD, 0x02, 0xFC, 0xCD, 0x02, 0xFC, 0xAD, 0x82, 0xC3, 0x2F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x83, 0xBB, 0x11, 0x81, 0x91, 0xAA, 0x73, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x86, 0xDB, 0xB4, 0xFC, 0xAE, 0xFC, 0xAD, 0xFC, 0xCD, 0xFC, 0xAD, 0xFC, 0xCD, 0xFC, 0xAD, 0x01, 0xFC, 0xCD, 0x01, 0xFC, 0xAD, 0x01, 0x81, 0x91, 0x05, 0xD3, 0x95, 0x82, 0xD3, 0x75, 0xDB, 0xD3, 0xFC, 0xAD, 0x01, 0xFC, 0xCD, 0x82, 0xDB, 0xEE, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x82, 0xEC, 0x31, 0xFC, 0xCD, 0xFC, 0xAD, 0x0A, 0xFC, 0xCD, 0x86, 0xFC, 0xAD, 0xFC, 0xCD, 0xFC, 0xAD, 0xFC, 0xCD, 0xDB, 0xEE, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xDB, 0xD3, 0x03, 0xFC, 0xCD, 0x82, 0xC3, 0x2F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x81, 0xF4, 0x6F, 0xFC, 0xAD, 0x01, 0xFC, 0xCD, 0x82, 0xC3, 0x2F, 0x89, 0x91, 0xAA, 0x94, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x31, 0x01, 0xFC, 0xCD, 0x81, 0xFC, 0xAD, 0xFC, 0xCD, 0x03, 0xFC, 0xAD, 0x82, 0xA2, 0x70, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x80, 0xFC, 0xCE, 0x01, 0xFC, 0xCF, 0x82, 0xFC, 0xEF, 0xFC, 0xD0, 0xFC, 0xF0, 0x01, 0xFC, 0xF1, 0x80, 0xFC, 0xF2, 0x01, 0xB0, 0xF1, 0x80, 0xB0, 0xF2, 0x08, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x90, 0x00, 0x5F, 0x00, 0x7F, 0x02, 0x1F, 0x06, 0xFC, 0x07, 0x8D, 0x07, 0xE7, 0x07, 0xF6, 0x07, 0xFF, 0x82, 0xB5, 0xA8, 0xF1, 0xA1, 0x11, 0x49, 0x32, 0x41, 0x32, 0x41, + 0x11, 0x38, 0xF1, 0x38, 0xF0, 0x30, 0xF0, 0x01, 0x30, 0xEF, 0x81, 0x28, 0xCF, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x03, 0x20, 0xAD, 0x1A, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF6, 0x01, 0x19, 0x01, 0x18, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x2A, 0x18, 0xAD, 0x83, 0xB0, 0xF1, 0xA8, 0xF1, 0xB0, 0xF1, 0xFD, 0x0D, 0x02, 0xFC, 0xED, 0x85, 0xFD, 0x0D, 0xFC, 0xED, 0xFD, 0x0D, 0xE4, 0x2E, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x51, 0x09, 0xFC, 0xED, 0x82, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x8F, 0x09, 0xFC, 0xED, 0x82, 0xC3, 0x2F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x82, 0xEC, 0x6F, 0x91, 0xD1, 0x89, 0xD1, 0x05, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x81, 0xDB, 0xB4, 0xEC, 0x70, 0x04, 0xFC, 0xED, 0x80, 0xFD, 0x0D, 0x01, 0xFC, 0xED, 0x01, 0x81, 0x91, 0x06, 0xD3, 0x95, 0x80, 0xDB, 0xF3, 0x02, 0xFC, 0xED, 0x82, 0xE4, 0x2E, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x51, 0x0E, 0xFC, 0xED, 0x84, 0xFD, 0x0D, 0xFC, 0xED, 0xEC, 0x6E, 0x81, 0x91, 0x91, 0xF2, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x01, 0xD3, 0x95, 0x86, 0xF4, 0xAF, 0xFD, 0x0D, 0xFC, 0xED, 0xFD, 0x0D, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x8F, 0x02, 0xFC, 0xED, 0x83, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x75, 0x05, 0xD3, 0x95, 0x80, 0xEC, 0x51, 0x07, 0xFC, 0xED, 0x82, 0xA2, 0x70, 0x81, + 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x80, 0xFD, 0x0E, 0x02, 0xFD, 0x0F, 0x01, 0xFD, 0x10, 0x01, 0xFD, 0x31, 0x80, 0xFD, 0x32, 0x02, 0xB0, 0xF1, 0x08, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x5F, 0x8A, 0x02, 0x1F, 0x07, 0x3B, 0x07, 0xAC, 0x07, 0xE7, 0x07, 0xF7, 0x07, 0xFF, 0x82, 0xB5, 0xA8, 0xF1, 0x89, 0x12, 0x49, 0x32, 0x41, 0x12, 0x01, 0x39, 0x11, 0x82, 0x31, 0x10, 0x30, 0xF0, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x03, 0x20, 0xAD, 0x1D, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF6, 0x01, 0x19, 0x01, 0x18, 0x10, 0xCF, 0x01, 0x20, 0xAD, 0x2F, 0x18, 0xAD, 0x82, 0xB0, 0xF1, 0xA8, 0xF1, 0xB0, 0xF1, 0x06, 0xFD, 0x2D, 0x82, 0xE4, 0x4E, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x09, 0xFD, 0x2D, 0x82, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0xCF, 0x09, 0xFD, 0x2D, 0x82, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x83, 0xF4, 0xCF, 0xC3, 0x4F, 0x81, 0x91, 0xB2, 0xD4, 0x09, 0xD3, 0x95, 0x81, 0xDB, 0xD4, 0xE4, 0x31, 0x01, 0xEC, 0x71, 0x83, 0xDB, 0xF0, 0xE4, 0x50, 0xF4, 0xCF, 0xFD, 0x0E, 0x01, 0x81, 0x91, 0x06, 0xD3, 0x95, 0x88, 0xDB, 0xD4, 0xF4, 0xAF, 0xF4, 0xCF, 0xF4, 0xAF, 0xDC, 0x10, 0x9A, 0x12, 0xAA, 0x73, 0xD3, 0x95, 0xD3, 0x96, 0x04, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x0F, 0xFD, 0x2D, 0x01, 0xFD, 0x2C, 0x84, 0x92, 0x11, 0x81, 0x91, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x96, 0x05, 0xD3, 0x95, 0x85, 0xEC, 0x71, 0xFC, 0xEE, 0xFD, 0x2D, + 0xC3, 0x6F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x86, 0xDC, 0x10, 0xE4, 0x4E, 0xDC, 0x2E, 0xE4, 0x4E, 0xB2, 0xF0, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x07, 0xFD, 0x2D, 0x82, 0xA2, 0x70, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x80, 0xFD, 0x2E, 0x01, 0xFD, 0x2F, 0x80, 0xFD, 0x4F, 0x01, 0xFD, 0x50, 0x01, 0xFD, 0x51, 0x83, 0xFD, 0x71, 0xA8, 0xF1, 0xB0, 0xF1, 0xB0, 0xF2, 0x07, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x5F, 0x01, 0x00, 0x7F, 0x90, 0x02, 0x3F, 0x07, 0x3B, 0x07, 0xAB, 0x07, 0xE8, 0x07, 0xF9, 0x07, 0xFF, 0xA1, 0x52, 0xA8, 0xF1, 0x71, 0x32, 0x41, 0x32, 0x41, 0x31, 0x39, 0x11, 0x39, 0x10, 0x38, 0xF0, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xCF, 0x01, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x05, 0x20, 0xAD, 0x1B, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF6, 0x01, 0x19, 0x01, 0x18, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x29, 0x18, 0xAD, 0x01, 0xA8, 0xF1, 0x80, 0xA8, 0xF2, 0x03, 0xFD, 0x6D, 0x80, 0xFD, 0x4D, 0x01, 0xFD, 0x6D, 0x82, 0xE4, 0x6E, 0x81, 0x91, 0x92, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x09, 0xFD, 0x6D, 0x82, 0xC3, 0x6F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0xEF, 0x09, 0xFD, 0x6D, 0x82, 0xC3, 0x6F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x88, 0xF4, 0xEF, 0xFD, 0x2D, 0x92, 0x11, 0x89, 0xB2, 0xCB, 0x75, 0xD3, 0x96, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x96, 0x0B, 0xD3, 0x95, 0x80, 0xEC, 0x91, + 0x01, 0x81, 0x91, 0x0B, 0xD3, 0x95, 0x80, 0xCB, 0x95, 0x07, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x0C, 0xFD, 0x6D, 0x80, 0xFD, 0x4D, 0x03, 0xFD, 0x6D, 0x82, 0xBB, 0x2F, 0x81, 0x91, 0xB2, 0xD4, 0x0A, 0xD3, 0x95, 0x82, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x09, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x09, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x07, 0xFD, 0x6D, 0x82, 0xA2, 0x90, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x80, 0xFD, 0x6E, 0x01, 0xFD, 0x6F, 0x80, 0xFD, 0x8F, 0x01, 0xFD, 0x90, 0x01, 0xFD, 0x91, 0x80, 0xFD, 0x92, 0x02, 0xA8, 0xF1, 0x06, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x01, 0x00, 0x5F, 0x87, 0x00, 0x7F, 0x00, 0x9F, 0x02, 0x3F, 0x07, 0x79, 0x07, 0xAA, 0x07, 0xE8, 0x07, 0xFB, 0x07, 0xFF, 0x01, 0xA8, 0xF1, 0x85, 0x59, 0x32, 0x49, 0x32, 0x41, 0x31, 0x39, 0x11, 0x39, 0x10, 0x38, 0xF0, 0x01, 0x30, 0xEF, 0x80, 0x28, 0xCF, 0x01, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x06, 0x20, 0xAD, 0x19, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xCD, 0x01, 0x16, 0x01, 0x19, 0x01, 0x18, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x2A, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0xA8, 0xF1, 0x83, 0xEC, 0x6F, 0xFD, 0x8D, 0xFD, 0xAD, 0xFD, 0x8D, 0x02, 0xFD, 0xAD, 0x82, 0xE4, 0x8E, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x81, 0xEC, 0x91, 0xFD, 0xAD, 0x08, 0xFD, 0x8D, 0x82, 0xC3, 0x8F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x83, 0xF5, 0x2F, 0xFD, 0xAD, 0xFD, 0x8D, 0xFD, 0xAD, 0x01, 0xFD, 0x8D, 0x80, 0xFD, 0xAD, 0x01, 0xFD, 0x8D, 0x01, + 0xFD, 0xAD, 0x82, 0xC3, 0x8F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x84, 0xF5, 0x2F, 0xFD, 0x8D, 0xE4, 0xAE, 0x89, 0x91, 0x9A, 0x32, 0x0F, 0xD3, 0x95, 0x80, 0xE4, 0x91, 0x01, 0x81, 0x91, 0x06, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x0C, 0xD3, 0x95, 0x80, 0xEC, 0x91, 0x01, 0xFD, 0xAD, 0x07, 0xFD, 0x8D, 0x01, 0xFD, 0xAD, 0x01, 0xFD, 0x8D, 0x01, 0xFD, 0xAD, 0x84, 0xFD, 0x8D, 0xFD, 0xAD, 0xF5, 0x2D, 0x81, 0x91, 0x91, 0xF2, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x82, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x14, 0xD3, 0x95, 0x80, 0xEC, 0x91, 0x01, 0xFD, 0x8D, 0x04, 0xFD, 0xAD, 0x83, 0xFD, 0x8D, 0xA2, 0x90, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x03, 0xFD, 0xAF, 0x01, 0xFD, 0xB0, 0x83, 0xFD, 0xB1, 0xFD, 0xD1, 0xE4, 0xB2, 0xA9, 0x11, 0x01, 0xA8, 0xF1, 0x06, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x5F, 0x01, 0x00, 0x7F, 0x88, 0x00, 0x9F, 0x02, 0xBF, 0x07, 0x78, 0x07, 0xC8, 0x07, 0xE9, 0x07, 0xFD, 0x17, 0x3E, 0xA8, 0xF1, 0x99, 0x12, 0x01, 0x49, 0x32, 0x83, 0x41, 0x31, 0x41, 0x11, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xEF, 0x80, 0x28, 0xCF, 0x01, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x80, 0x20, 0xCD, 0x04, 0x20, 0xAD, 0x81, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x18, 0xCF, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x2A, 0x18, 0xAD, 0x02, 0xA9, 0x11, 0x80, 0xEC, 0x8E, 0x01, 0xFD, 0xED, 0x02, 0xFD, + 0xCD, 0x83, 0xFD, 0xED, 0xE4, 0xCE, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0xB1, 0x09, 0xFD, 0xCD, 0x82, 0xC3, 0xAF, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF5, 0x4F, 0x01, 0xFD, 0xCD, 0x80, 0xFD, 0xED, 0x04, 0xFD, 0xCD, 0x84, 0xFD, 0xED, 0xFD, 0xCD, 0xC3, 0xAF, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x85, 0xF5, 0x4F, 0xFD, 0xED, 0xFD, 0xCD, 0xD4, 0x4F, 0x81, 0x91, 0xB2, 0xB3, 0x09, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x03, 0xD3, 0x95, 0x82, 0xEC, 0xB1, 0x89, 0x91, 0x81, 0x91, 0x0B, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x07, 0xD3, 0x95, 0x80, 0xEC, 0xB1, 0x12, 0xFD, 0xCD, 0x82, 0xBB, 0x6F, 0x81, 0x91, 0xBA, 0xF4, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x03, 0xD3, 0x95, 0x82, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x14, 0xD3, 0x95, 0x80, 0xEC, 0xB1, 0x01, 0xFD, 0xED, 0x01, 0xFD, 0xCD, 0x03, 0xFD, 0xED, 0x82, 0xA2, 0xB0, 0x81, 0x91, 0xC3, 0x14, 0x05, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xFD, 0xEE, 0x01, 0xFD, 0xEF, 0x02, 0xFD, 0xF0, 0x01, 0xFD, 0xF1, 0x81, 0xEC, 0xB1, 0xA0, 0xF1, 0x01, 0xA9, 0x11, 0x06, 0x00, 0x1F, 0x02, 0x00, 0x5F, 0x80, 0x00, 0x7F, 0x01, 0x00, 0x9F, 0x87, 0x04, 0x1F, 0x07, 0x97, 0x07, 0xC7, 0x07, 0xEB, 0x07, 0xFE, 0x2E, 0x5C, 0xA8, 0xF1, 0x79, 0x32, 0x01, 0x49, 0x32, 0x83, 0x41, 0x11, 0x39, 0x11, 0x39, 0x10, 0x38, 0xF0, 0x01, 0x30, 0xEF, 0x02, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x80, 0x20, 0xCD, 0x04, 0x20, 0xAD, 0x1A, 0x18, 0xAD, 0x83, 0x00, 0xF7, 0x01, 0x18, 0x01, 0x17, 0x18, 0xCF, 0x05, 0x18, 0xAD, + 0x80, 0x18, 0xAC, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAC, 0x29, 0x18, 0xAD, 0x01, 0xA9, 0x11, 0x81, 0xA1, 0x11, 0xE4, 0x2E, 0x05, 0xFE, 0x0D, 0x82, 0xE4, 0xEE, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0xD1, 0x09, 0xFE, 0x0D, 0x82, 0xC3, 0xCF, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF5, 0x6F, 0x09, 0xFE, 0x0D, 0x82, 0xC3, 0xCF, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF5, 0x6F, 0x02, 0xFE, 0x0D, 0x82, 0xD4, 0x4F, 0x81, 0x91, 0xBA, 0xD3, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xEC, 0xD1, 0x01, 0x81, 0x91, 0x0E, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x04, 0xD3, 0x95, 0x80, 0xEC, 0xD1, 0x12, 0xFE, 0x0D, 0x83, 0xF5, 0xAD, 0x9A, 0x70, 0x89, 0xB1, 0xD3, 0x75, 0x08, 0xD3, 0x95, 0x82, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x0C, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0xD1, 0x02, 0xFE, 0x0D, 0x81, 0xFE, 0x0E, 0xFE, 0x0D, 0x02, 0xFE, 0x0E, 0x82, 0xA2, 0xB0, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x02, 0xFE, 0x0F, 0x02, 0xFE, 0x30, 0x01, 0xFE, 0x31, 0x83, 0xDC, 0x32, 0xA1, 0x11, 0xA9, 0x11, 0xA1, 0x11, 0x06, 0x00, 0x1F, 0x01, 0x00, 0x5F, 0x01, 0x00, 0x7F, 0x8B, 0x00, 0x9F, 0x00, 0xBF, 0x04, 0x3F, 0x07, 0x94, 0x07, 0xE6, 0x07, 0xEC, 0x07, 0xFE, 0x35, 0xDB, 0xA9, 0x11, 0x51, 0x33, 0x49, 0x32, 0x41, 0x32, 0x01, 0x41, 0x11, 0x81, 0x39, 0x10, 0x30, 0xF0, 0x01, 0x30, 0xEF, 0x01, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x80, 0x20, 0xCD, 0x04, 0x20, + 0xAD, 0x16, 0x18, 0xAD, 0x8B, 0x18, 0xAC, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF6, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xCF, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAC, 0x20, 0xAD, 0x30, 0x18, 0xAD, 0x81, 0x18, 0xAC, 0x80, 0xF0, 0x01, 0xA1, 0x11, 0x80, 0xC2, 0xB0, 0x05, 0xFE, 0x4D, 0x82, 0xE5, 0x0E, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0xF1, 0x09, 0xFE, 0x4D, 0x82, 0xC3, 0xEF, 0x89, 0x91, 0xAA, 0x93, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x02, 0xD3, 0x95, 0x80, 0xF5, 0x8F, 0x09, 0xFE, 0x4D, 0x84, 0xC3, 0xEF, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x95, 0xD3, 0x96, 0x04, 0xD3, 0x95, 0x80, 0xF5, 0x8F, 0x03, 0xFE, 0x4D, 0x83, 0xE5, 0x0E, 0x89, 0xD1, 0xA2, 0x53, 0xCB, 0x75, 0x05, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x04, 0xD3, 0x95, 0x80, 0xEC, 0xF1, 0x01, 0x81, 0x91, 0x14, 0xD3, 0x95, 0x80, 0xEC, 0xF1, 0x13, 0xFE, 0x4D, 0x83, 0xF6, 0x0E, 0x9A, 0x70, 0x91, 0xF2, 0xCB, 0x75, 0x05, 0xD3, 0x95, 0x86, 0xD3, 0x96, 0xD3, 0x95, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x95, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x0F, 0xD3, 0x95, 0x80, 0xEC, 0xF2, 0x02, 0xFE, 0x4D, 0x89, 0xFE, 0x4E, 0xFE, 0x4D, 0xFE, 0x4E, 0xFE, 0x4D, 0xFE, 0x4E, 0xA2, 0xD0, 0x81, 0x91, 0xC3, 0x14, 0xD3, 0x95, 0xD3, 0x96, 0x04, 0xD3, 0x95, 0x83, 0xFE, 0x4E, 0xFE, 0x4F, 0xFE, 0x6F, 0xFE, 0x70, 0x01, 0xFE, 0x50, 0x82, 0xFE, 0x71, 0xFE, 0x51, 0xBA, 0x52, 0x01, 0xA1, 0x11, 0x80, 0x78, 0xD5, 0x06, 0x00, 0x1F, 0x80, 0x00, 0x5F, 0x01, 0x00, 0x7F, 0x80, 0x00, 0x9F, + 0x01, 0x00, 0xBF, 0x8F, 0x04, 0x3F, 0x07, 0xB3, 0x07, 0xC5, 0x07, 0xEE, 0x07, 0xFF, 0x54, 0x78, 0x6A, 0xD6, 0x49, 0x53, 0x49, 0x32, 0x49, 0x12, 0x41, 0x11, 0x39, 0x11, 0x39, 0x10, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xCF, 0x02, 0x28, 0xCE, 0x80, 0x20, 0xCE, 0x01, 0x20, 0xCD, 0x04, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x84, 0x00, 0xF6, 0x01, 0x18, 0x00, 0xF8, 0x18, 0xCF, 0x18, 0xAC, 0x01, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x2F, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAC, 0x60, 0xEF, 0x01, 0xA1, 0x11, 0x81, 0xA1, 0x12, 0xFE, 0x2D, 0x04, 0xFE, 0x8D, 0x82, 0xE5, 0x4E, 0x81, 0x91, 0x9A, 0x12, 0x04, 0xD3, 0x95, 0x82, 0xD3, 0x75, 0xD3, 0x95, 0xED, 0x11, 0x08, 0xFE, 0x6D, 0x85, 0xFE, 0x8D, 0xC4, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x95, 0xD3, 0x96, 0x03, 0xD3, 0x95, 0x82, 0xD3, 0x75, 0xF5, 0xCF, 0xFE, 0x6D, 0x07, 0xFE, 0x8D, 0x83, 0xFE, 0x6D, 0xC4, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF5, 0xCE, 0x01, 0xFE, 0x6D, 0x86, 0xFE, 0x8D, 0xFE, 0x6C, 0xFE, 0x8D, 0xF6, 0x2D, 0xC4, 0x0F, 0x9A, 0x12, 0xB2, 0xD4, 0x0A, 0xD3, 0x95, 0x80, 0xEC, 0xF1, 0x01, 0x81, 0x91, 0x14, 0xD3, 0x95, 0x80, 0xED, 0x11, 0x09, 0xFE, 0x6D, 0x80, 0xFE, 0x8D, 0x06, 0xFE, 0x6D, 0x86, 0xFE, 0x6C, 0xFE, 0x8D, 0xFE, 0x6D, 0xFE, 0x2D, 0xBB, 0xCF, 0x89, 0xB1, 0xBA, 0xF4, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x83, 0xD3, 0x96, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x14, 0xD3, 0x95, 0x80, 0xED, 0x12, 0x07, 0xFE, 0x8E, 0x82, 0xA2, 0xD0, + 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x02, 0xFE, 0x8F, 0x02, 0xFE, 0x90, 0x89, 0xFE, 0x91, 0xE4, 0x71, 0xA1, 0x11, 0xA1, 0x12, 0xA1, 0x11, 0x60, 0xD5, 0x00, 0x1F, 0x28, 0x3C, 0x70, 0x97, 0x40, 0x5A, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0x9F, 0x01, 0x00, 0xBF, 0x8A, 0x00, 0xDF, 0x04, 0x5F, 0x07, 0xD2, 0x07, 0xE4, 0x07, 0xEF, 0x07, 0xFF, 0x2E, 0x3C, 0x2D, 0x1A, 0x51, 0x33, 0x49, 0x32, 0x41, 0x32, 0x01, 0x39, 0x11, 0x83, 0x38, 0xF0, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xCF, 0x01, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x01, 0x20, 0xCD, 0x04, 0x20, 0xAD, 0x17, 0x18, 0xAD, 0x83, 0x00, 0xF6, 0x01, 0x18, 0x00, 0xF7, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAC, 0x31, 0x18, 0xAD, 0x80, 0x28, 0xCD, 0x02, 0xA1, 0x11, 0x80, 0xCB, 0xCF, 0x04, 0xFE, 0xAD, 0x82, 0xF5, 0xED, 0x89, 0xD1, 0x91, 0xD2, 0x04, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xD3, 0x95, 0xED, 0x11, 0x09, 0xFE, 0xAD, 0x82, 0xC4, 0x2F, 0x81, 0xB1, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF5, 0xEF, 0x07, 0xFE, 0xAD, 0x84, 0xFE, 0xCC, 0xFE, 0xAD, 0xC4, 0x2F, 0x81, 0x91, 0xAA, 0x93, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x03, 0xD3, 0x95, 0x82, 0xF5, 0xEF, 0xFE, 0xAD, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x80, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x86, 0xF6, 0x4D, 0xD4, 0xCE, 0xBB, 0xD0, 0xC3, 0xB2, 0xC3, 0x14, 0xD3, 0x95, 0xD3, 0x75, 0x05, 0xD3, 0x95, 0x80, 0xED, 0x12, 0x01, 0x81, 0x91, 0x10, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x02, 0xD3, 0x95, + 0x80, 0xED, 0x31, 0x01, 0xFE, 0xAC, 0x14, 0xFE, 0xAD, 0x84, 0xEE, 0x0D, 0xCC, 0x6F, 0xBB, 0x51, 0xBA, 0xD4, 0xCB, 0x55, 0x03, 0xD3, 0x95, 0x82, 0xC3, 0x34, 0x81, 0x91, 0xB2, 0x94, 0x12, 0xD3, 0x95, 0x88, 0xD3, 0x75, 0xD3, 0x95, 0xED, 0x11, 0xFE, 0xAE, 0xFE, 0xCE, 0xFE, 0xAD, 0xFE, 0xAE, 0xFE, 0xAD, 0xFE, 0xCE, 0x01, 0xFE, 0xAE, 0x82, 0xA2, 0xF0, 0x81, 0x91, 0xC3, 0x14, 0x05, 0xD3, 0x95, 0x8D, 0xDC, 0x34, 0xFE, 0xAF, 0xFE, 0xD0, 0xFE, 0xAF, 0xFE, 0xD0, 0xFE, 0xB0, 0xFE, 0xD1, 0xE4, 0x91, 0xA9, 0x11, 0xA1, 0x11, 0x99, 0x31, 0xA1, 0x11, 0x58, 0xD6, 0x88, 0xB5, 0x01, 0xB8, 0xD1, 0x80, 0x50, 0x59, 0x03, 0x00, 0x1F, 0x88, 0x00, 0x7F, 0x00, 0x9F, 0x00, 0xBF, 0x00, 0xFF, 0x00, 0xDF, 0x04, 0x7F, 0x07, 0xD2, 0x07, 0xE3, 0x07, 0xF1, 0x01, 0x07, 0xFF, 0x84, 0x2C, 0xBA, 0x49, 0x33, 0x41, 0x32, 0x41, 0x31, 0x41, 0x11, 0x01, 0x38, 0xF0, 0x82, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xEF, 0x01, 0x28, 0xCE, 0x80, 0x20, 0xCE, 0x01, 0x20, 0xCD, 0x05, 0x20, 0xAD, 0x16, 0x18, 0xAD, 0x80, 0x00, 0xF6, 0x01, 0x01, 0x18, 0x81, 0x18, 0xCF, 0x20, 0xAD, 0x01, 0x18, 0xAC, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x31, 0x18, 0xAD, 0x87, 0x20, 0xAC, 0x20, 0xAD, 0x18, 0xAD, 0x81, 0x10, 0x99, 0x11, 0xA1, 0x11, 0xA1, 0x71, 0xF5, 0xED, 0x05, 0xFE, 0xAD, 0x83, 0xFE, 0xAC, 0xFE, 0x6D, 0xF5, 0xCF, 0xF5, 0xEF, 0x01, 0xF5, 0xCF, 0x82, 0xF5, 0xEF, 0xF5, 0xCF, 0xFE, 0x4D, 0x0B, 0xFE, 0xAD, 0x80, 0xFE, 0x4E, 0x01, 0xF5, 0xEF, 0x81, 0xF5, 0xCF, 0xF5, 0xEE, 0x02, 0xF5, 0xEF, + 0x80, 0xFE, 0x8D, 0x03, 0xFE, 0xAC, 0x81, 0xFE, 0xAD, 0xFE, 0x8D, 0x02, 0xFE, 0xAD, 0x01, 0xFE, 0xAC, 0x85, 0xFE, 0xAD, 0xF6, 0x4D, 0xF5, 0xEF, 0xF5, 0xCF, 0xF5, 0xEF, 0xF5, 0xCF, 0x02, 0xF5, 0xEF, 0x80, 0xFE, 0x6E, 0x04, 0xFE, 0xAD, 0x01, 0xFE, 0xAC, 0x03, 0xFE, 0xAD, 0x80, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x82, 0xF6, 0x0E, 0xF5, 0xEF, 0xF5, 0xCF, 0x01, 0xF5, 0xEF, 0x83, 0xF5, 0xCF, 0xF6, 0x4E, 0xFE, 0xAC, 0xFE, 0xAD, 0x0F, 0xF5, 0xEF, 0x80, 0xF5, 0xCF, 0x02, 0xF5, 0xEF, 0x82, 0xF5, 0xCF, 0xFE, 0x4D, 0xFE, 0xAC, 0x08, 0xFE, 0xAD, 0x80, 0xFE, 0xAC, 0x08, 0xFE, 0xAD, 0x80, 0xFE, 0xAC, 0x06, 0xFE, 0xAD, 0x80, 0xFE, 0x6D, 0x01, 0xF5, 0xEF, 0x01, 0xF5, 0xCF, 0x85, 0xFE, 0xAD, 0xF6, 0x2E, 0xF5, 0xEF, 0xF5, 0xD0, 0xF5, 0xEF, 0xF5, 0xCF, 0x01, 0xF5, 0xF0, 0x80, 0xF5, 0xEF, 0x0B, 0xF5, 0xF0, 0x83, 0xF5, 0xEF, 0xF5, 0xF0, 0xFE, 0x4F, 0xFE, 0xCE, 0x07, 0xFE, 0xAE, 0x82, 0xFE, 0xAF, 0xF6, 0x10, 0xF5, 0xD0, 0x03, 0xF5, 0xF0, 0x80, 0xF6, 0x10, 0x02, 0xFE, 0xAF, 0x85, 0xFE, 0xD0, 0xFE, 0xB0, 0xFE, 0xB1, 0xE4, 0x71, 0xB8, 0xD1, 0xA1, 0x11, 0x01, 0x99, 0x31, 0x82, 0x99, 0x12, 0x69, 0x33, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x80, 0x28, 0x3C, 0x02, 0x00, 0x1F, 0x89, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0xBF, 0x00, 0xDF, 0x00, 0xFF, 0x01, 0x1F, 0x04, 0x7F, 0x07, 0xD1, 0x07, 0xE3, 0x07, 0xF3, 0x01, 0x07, 0xFF, 0x80, 0x3B, 0x77, 0x01, 0x49, 0x32, 0x81, 0x41, 0x31, 0x41, 0x11, 0x01, 0x38, 0xF0, 0x01, 0x30, 0xEF, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCE, 0x80, + 0x20, 0xCE, 0x01, 0x20, 0xCD, 0x03, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x13, 0x18, 0xAD, 0x83, 0x01, 0x18, 0x01, 0x17, 0x18, 0xCF, 0x18, 0xAD, 0x01, 0x18, 0xAC, 0x84, 0x18, 0xAD, 0x18, 0xAC, 0x20, 0xAD, 0x18, 0xAC, 0x20, 0xAC, 0x30, 0x18, 0xAC, 0x83, 0x18, 0xCD, 0x18, 0xAC, 0x20, 0xAC, 0x38, 0xCE, 0x02, 0x99, 0x31, 0x83, 0xAA, 0x31, 0xFE, 0x2D, 0xFE, 0x8C, 0xFE, 0x8D, 0x02, 0xFE, 0x8C, 0x81, 0xFE, 0xAD, 0xFE, 0x8C, 0x01, 0xFE, 0xAC, 0x01, 0xFE, 0x8C, 0x83, 0xFE, 0xAC, 0xFE, 0xAD, 0xFE, 0x8D, 0xFE, 0x8C, 0x07, 0xFE, 0xAD, 0x01, 0xFE, 0x8C, 0x01, 0xFE, 0xAC, 0x83, 0xFE, 0xAD, 0xFE, 0x8C, 0xFE, 0xAD, 0xFE, 0x8C, 0x01, 0xFE, 0x8D, 0x81, 0xFE, 0x8C, 0xFE, 0xAD, 0x01, 0xFE, 0x8C, 0x01, 0xFE, 0xAD, 0x01, 0xFE, 0xAC, 0x01, 0xFE, 0x8C, 0x82, 0xFE, 0xAC, 0xFE, 0x8C, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x8B, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0xAD, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0x8D, 0xFE, 0xAC, 0xFE, 0x8C, 0xFE, 0xAC, 0xFE, 0x8D, 0x01, 0xFE, 0xAD, 0x81, 0xFE, 0x8C, 0xFE, 0xAC, 0x01, 0xFE, 0x8C, 0x84, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0xAC, 0xFE, 0x8D, 0xFE, 0x8C, 0x01, 0xFE, 0xAD, 0x02, 0xFE, 0x8C, 0x82, 0xFE, 0xAD, 0xFE, 0x8C, 0xFE, 0xAC, 0x0F, 0xFE, 0xAD, 0x83, 0xFE, 0x8C, 0xFE, 0xAC, 0xFE, 0x8D, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x80, 0xFE, 0x8C, 0x10, 0xFE, 0xAD, 0x83, 0xFE, 0xAC, 0xFE, 0x8C, 0xFE, 0xAD, 0xFE, 0x8C, 0x03, 0xFE, 0x8D, 0x02, 0xFE, 0xAD, 0x80, 0xFE, 0x8D, 0x03, 0xFE, 0xAD, 0x82, 0xFE, 0x8D, + 0xFE, 0x8E, 0xFE, 0xAD, 0x01, 0xFE, 0xAE, 0x80, 0xFE, 0xAD, 0x0B, 0xFE, 0xAE, 0x01, 0xFE, 0x8E, 0x02, 0xFE, 0xAE, 0x80, 0xFE, 0x8E, 0x02, 0xFE, 0xAE, 0x01, 0xFE, 0x8E, 0x81, 0xFE, 0xAE, 0xFE, 0xAF, 0x01, 0xFE, 0xAE, 0x81, 0xFE, 0xAF, 0xFE, 0x8E, 0x04, 0xFE, 0xAF, 0x88, 0xFE, 0x8F, 0xFE, 0xB0, 0xFE, 0xAF, 0xFE, 0xB0, 0xFE, 0x90, 0xE4, 0x71, 0xB8, 0xD2, 0xA1, 0x11, 0x99, 0x11, 0x01, 0x99, 0x31, 0x84, 0x71, 0x32, 0x71, 0x33, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xD2, 0x04, 0x00, 0x1F, 0x80, 0x00, 0x7F, 0x01, 0x00, 0xDF, 0x01, 0x01, 0x1F, 0x83, 0x04, 0x9F, 0x07, 0xF0, 0x07, 0xE2, 0x07, 0xF4, 0x01, 0x07, 0xFF, 0x80, 0x3A, 0xF6, 0x01, 0x49, 0x32, 0x83, 0x41, 0x11, 0x39, 0x11, 0x39, 0x10, 0x38, 0xF0, 0x01, 0x30, 0xEF, 0x80, 0x28, 0xEE, 0x01, 0x28, 0xCE, 0x80, 0x20, 0xCE, 0x01, 0x20, 0xCD, 0x02, 0x20, 0xAD, 0x81, 0x18, 0xAC, 0x20, 0xAC, 0x01, 0x18, 0xAD, 0x15, 0x18, 0xAC, 0x81, 0x01, 0x17, 0x18, 0xCF, 0x01, 0x20, 0xAC, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x81, 0x18, 0xAC, 0x20, 0xAC, 0x32, 0x18, 0xAC, 0x83, 0x20, 0xAD, 0x20, 0xAC, 0x60, 0xEF, 0x99, 0x12, 0x01, 0x99, 0x31, 0x81, 0xB2, 0x70, 0xF6, 0x2D, 0x01, 0xFE, 0x8C, 0x02, 0xFE, 0x8D, 0x81, 0xFE, 0x8C, 0xFE, 0x8D, 0x03, 0xFE, 0x8C, 0x02, 0xFE, 0x8D, 0x08, 0xFE, 0x8C, 0x80, 0xFE, 0x8D, 0x01, 0xFE, 0x8C, 0x02, 0xFE, 0x8D, 0x82, 0xFE, 0x8C, 0xFE, 0x8D, 0xFE, 0x8C, 0x03, 0xFE, 0x8D, 0x80, 0xFE, 0x8C, 0x08, 0xFE, 0x8D, 0x81, 0xFE, 0x8C, 0xFE, 0x8D, 0x03, 0xFE, 0x8C, + 0x80, 0xFE, 0x8D, 0x02, 0xFE, 0x8C, 0x01, 0xFE, 0x8D, 0x02, 0xFE, 0x8C, 0x01, 0xFE, 0x8D, 0x01, 0xFE, 0x8C, 0x80, 0xFE, 0x8D, 0x03, 0xFE, 0x8C, 0x01, 0xFE, 0x8D, 0x81, 0xFE, 0x8C, 0xFE, 0x8D, 0x02, 0xFE, 0x8C, 0x12, 0xFE, 0x8D, 0x01, 0xFE, 0x8C, 0x83, 0xFE, 0x6D, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0x8D, 0x0A, 0xFE, 0x8C, 0x04, 0xFE, 0x8D, 0x80, 0xFE, 0x8C, 0x09, 0xFE, 0x8D, 0x80, 0xFE, 0x8E, 0x04, 0xFE, 0x8D, 0x10, 0xFE, 0x8E, 0x80, 0xFE, 0x8F, 0x01, 0xFE, 0x8E, 0x01, 0xFE, 0x8F, 0x80, 0xFE, 0x8E, 0x01, 0xFE, 0x8F, 0x82, 0xFE, 0x8E, 0xFE, 0x8F, 0xFE, 0x8E, 0x0A, 0xFE, 0x8F, 0x01, 0xFE, 0x90, 0x01, 0xFE, 0xB0, 0x82, 0xE4, 0x71, 0xB8, 0xD1, 0xA1, 0x11, 0x01, 0x99, 0x31, 0x86, 0x99, 0x12, 0x89, 0x11, 0x51, 0x74, 0x69, 0x53, 0xB0, 0xF1, 0xB0, 0xD1, 0x90, 0xB4, 0x03, 0x00, 0x1F, 0x8F, 0x00, 0x3F, 0x00, 0x9F, 0x00, 0xDF, 0x00, 0xFF, 0x01, 0x1F, 0x01, 0x5F, 0x04, 0x9F, 0x07, 0xF1, 0x07, 0xE2, 0x07, 0xF6, 0x07, 0xFF, 0x0F, 0x9F, 0x4A, 0x35, 0x49, 0x33, 0x49, 0x32, 0x41, 0x31, 0x01, 0x39, 0x10, 0x80, 0x38, 0xF0, 0x01, 0x30, 0xEF, 0x02, 0x28, 0xCE, 0x02, 0x20, 0xCD, 0x02, 0x20, 0xAD, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x13, 0x18, 0xAC, 0x83, 0x18, 0xCE, 0x18, 0xAC, 0x20, 0xCC, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x02, 0x20, 0xAC, 0x82, 0x20, 0xAD, 0x18, 0xCC, 0x20, 0xAD, 0x31, 0x20, 0xAC, 0x83, 0x18, 0xAC, 0x20, 0xAC, 0x28, 0xAD, 0x81, 0x10, 0x01, 0x99, 0x31, 0x83, 0x99, 0x11, 0xAA, 0x31, 0xF5, 0xCD, + 0xFE, 0x8C, 0x15, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x01, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x0E, 0xFE, 0x6C, 0x80, 0xFE, 0x8C, 0x04, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x01, 0xFE, 0x6C, 0x82, 0xFE, 0x6D, 0xFE, 0x6C, 0xFE, 0x6D, 0x03, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x0A, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x19, 0xFE, 0x6C, 0x80, 0xFE, 0x8C, 0x01, 0xFE, 0x6D, 0x11, 0xFE, 0x6C, 0x83, 0xFE, 0x6D, 0xFE, 0x6C, 0xFE, 0x6D, 0xFE, 0x6C, 0x03, 0xFE, 0x6D, 0x80, 0xFE, 0x6C, 0x02, 0xFE, 0x6D, 0x80, 0xFE, 0x8E, 0x01, 0xFE, 0x8D, 0x81, 0xFE, 0x6E, 0xFE, 0x8D, 0x0A, 0xFE, 0x6E, 0x03, 0xFE, 0x6F, 0x01, 0xFE, 0x8F, 0x02, 0xFE, 0x6F, 0x80, 0xFE, 0x8F, 0x01, 0xFE, 0x6F, 0x01, 0xFE, 0x8F, 0x01, 0xFE, 0x6F, 0x80, 0xFE, 0x8F, 0x01, 0xFE, 0x6F, 0x01, 0xFE, 0x8F, 0x80, 0xFE, 0x6F, 0x01, 0xFE, 0x8F, 0x81, 0xFE, 0x6F, 0xFE, 0x90, 0x01, 0xFE, 0x8F, 0x01, 0xFE, 0x90, 0x82, 0xE4, 0x71, 0xB0, 0xD1, 0xA1, 0x11, 0x02, 0x99, 0x31, 0x83, 0x99, 0x12, 0x59, 0x53, 0x51, 0x53, 0x71, 0x33, 0x01, 0xB0, 0xD1, 0x80, 0x78, 0x96, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x3F, 0x00, 0x5F, 0x00, 0xBF, 0x01, 0x01, 0x1F, 0x8D, 0x01, 0x3F, 0x01, 0x7F, 0x04, 0xBF, 0x07, 0xF2, 0x07, 0xE2, 0x07, 0xF5, 0x07, 0xFF, 0x73, 0x36, 0x51, 0x53, 0x49, 0x33, 0x49, 0x32, 0x41, 0x31, 0x41, 0x10, 0x39, 0x10, 0x02, 0x30, 0xEF, 0x01, 0x28, 0xCE, 0x80, 0x28, 0xCD, 0x02, 0x20, 0xCD, 0x02, 0x20, 0xAD, 0x01, 0x20, 0xAC, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAC, 0x16, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x05, + 0x18, 0xAC, 0x30, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x82, 0x18, 0xAC, 0x28, 0xAD, 0x91, 0x11, 0x02, 0x99, 0x31, 0x83, 0xA1, 0x71, 0xCB, 0xCF, 0xF6, 0x0D, 0xFE, 0x4D, 0x08, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x0C, 0xFE, 0x6D, 0x82, 0xFE, 0x6C, 0xFE, 0x6D, 0xFE, 0x4D, 0x04, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x04, 0xFE, 0x6D, 0x82, 0xFE, 0x4D, 0xFE, 0x6D, 0xFE, 0x6C, 0x07, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x02, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x05, 0xFE, 0x6D, 0x82, 0xFE, 0x6C, 0xFE, 0x6D, 0xFE, 0x4D, 0x08, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x2C, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x02, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x01, 0xFE, 0x6E, 0x81, 0xFE, 0x4E, 0xFE, 0x6D, 0x04, 0xFE, 0x6E, 0x80, 0xFE, 0x6F, 0x01, 0xFE, 0x6E, 0x11, 0xFE, 0x6F, 0x01, 0xFE, 0x70, 0x80, 0xFE, 0x6F, 0x08, 0xFE, 0x70, 0x80, 0xFE, 0x90, 0x03, 0xFE, 0x70, 0x02, 0xFE, 0x71, 0x84, 0xE4, 0x71, 0xA8, 0xF1, 0xA1, 0x11, 0x99, 0x31, 0x99, 0x32, 0x01, 0x99, 0x31, 0x83, 0x69, 0x33, 0x51, 0x53, 0x59, 0x53, 0x71, 0x53, 0x01, 0xB0, 0xD1, 0x80, 0x58, 0x78, 0x01, 0x00, 0x1F, 0x83, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0x9F, 0x00, 0xFF, 0x01, 0x01, 0x3F, 0x88, 0x01, 0x7F, 0x01, 0x9F, 0x03, 0x3F, 0x07, 0xF3, 0x07, 0xE2, 0x07, 0xF3, 0x07, 0xFF, 0xA8, 0xF1, 0x69, 0x32, 0x01, 0x49, 0x32, 0x83, 0x49, 0x31, 0x41, 0x11, 0x39, 0x10, 0x31, 0x10, 0x01, 0x30, 0xEF, 0x01, 0x28, 0xCE, 0x80, 0x28, 0xCD, 0x02, 0x20, 0xCD, 0x02, 0x20, 0xAD, 0x01, 0x20, 0xAC, 0x80, 0x20, 0xAD, 0x16, 0x20, 0xAC, 0x80, + 0x18, 0xCC, 0x01, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x38, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x02, 0x18, 0xAC, 0x84, 0x20, 0xAC, 0x28, 0xCD, 0x81, 0x11, 0x99, 0x31, 0x99, 0x12, 0x01, 0x99, 0x31, 0x88, 0x99, 0x11, 0xBA, 0xB0, 0xDC, 0x6F, 0xE5, 0x0F, 0xE5, 0x0E, 0xFE, 0x4E, 0xFE, 0x6E, 0xFE, 0x4E, 0xFE, 0x6D, 0x01, 0xFE, 0x4E, 0x60, 0xFE, 0x4D, 0x01, 0xFE, 0x4E, 0x05, 0xFE, 0x4D, 0x03, 0xFE, 0x4E, 0x01, 0xFE, 0x6E, 0x02, 0xFE, 0x4E, 0x01, 0xFE, 0x6E, 0x82, 0xFE, 0x4E, 0xFE, 0x6F, 0xFE, 0x6E, 0x05, 0xFE, 0x6F, 0x83, 0xFE, 0x4F, 0xFE, 0x6F, 0xFE, 0x70, 0xFE, 0x50, 0x0F, 0xFE, 0x70, 0x0C, 0xFE, 0x71, 0x84, 0xF6, 0x12, 0xE5, 0x31, 0xE5, 0x12, 0xD4, 0x72, 0xB2, 0x71, 0x02, 0x99, 0x31, 0x84, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x61, 0x53, 0x51, 0x53, 0x01, 0x59, 0x54, 0x80, 0x71, 0x54, 0x01, 0xB0, 0xF1, 0x95, 0x28, 0x5C, 0x00, 0x3F, 0x00, 0x5F, 0x00, 0x7F, 0x00, 0xBF, 0x00, 0xFF, 0x01, 0x3F, 0x01, 0x5F, 0x01, 0x7F, 0x01, 0x9F, 0x01, 0xBF, 0x02, 0xFF, 0x07, 0xF4, 0x07, 0xE3, 0x07, 0xF1, 0x2E, 0x5C, 0xA9, 0x11, 0x69, 0x32, 0x51, 0x32, 0x49, 0x31, 0x41, 0x32, 0x41, 0x10, 0x01, 0x39, 0x10, 0x81, 0x30, 0xEF, 0x30, 0xEE, 0x01, 0x28, 0xCE, 0x80, 0x28, 0xCD, 0x02, 0x20, 0xCD, 0x80, 0x20, 0xAC, 0x01, 0x20, 0xAD, 0x02, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x13, 0x18, 0xAC, 0x83, 0x20, 0xAC, 0x18, 0xAC, 0x20, 0xAC, 0x18, 0xAC, 0x37, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x02, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x82, 0x28, 0xCC, + 0x61, 0x0F, 0x99, 0x11, 0x07, 0x99, 0x31, 0x80, 0x99, 0x32, 0x75, 0x99, 0x31, 0x80, 0x99, 0x12, 0x03, 0x99, 0x31, 0x82, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x01, 0x99, 0x31, 0x01, 0x99, 0x11, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x17, 0x99, 0x31, 0x01, 0x99, 0x11, 0x81, 0x99, 0x31, 0x99, 0x32, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x80, 0x99, 0x12, 0x03, 0x99, 0x31, 0x83, 0x89, 0x12, 0x51, 0x53, 0x59, 0x53, 0x51, 0x53, 0x01, 0x59, 0x74, 0x88, 0x79, 0x53, 0xB0, 0xF1, 0xB0, 0xD1, 0x08, 0x7F, 0x00, 0x9F, 0x00, 0xBF, 0x00, 0xDF, 0x01, 0x1F, 0x01, 0x5F, 0x02, 0x01, 0x9F, 0x01, 0x01, 0xDF, 0x8B, 0x01, 0xFF, 0x07, 0xF7, 0x07, 0xE3, 0x07, 0xEF, 0x54, 0x98, 0xA8, 0xF1, 0x71, 0x32, 0x49, 0x52, 0x49, 0x31, 0x41, 0x31, 0x41, 0x10, 0x39, 0x10, 0x01, 0x30, 0xEF, 0x80, 0x30, 0xEE, 0x01, 0x28, 0xCE, 0x80, 0x28, 0xCD, 0x02, 0x20, 0xCD, 0x05, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x15, 0x20, 0xAC, 0x82, 0x18, 0xAC, 0x20, 0xAC, 0x18, 0xAC, 0x39, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x03, 0x20, 0xAC, 0x82, 0x18, 0xAC, 0x40, 0xCE, 0x79, 0x10, 0x01, 0x99, 0x31, 0x80, 0x99, 0x32, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x78, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x81, 0xA1, 0x11, 0x99, 0x11, 0x2B, 0x99, 0x31, 0x81, 0x99, 0x12, 0x71, 0x32, 0x02, 0x51, 0x53, 0x01, 0x59, 0x74, 0x88, 0x61, 0x74, 0x91, 0x13, 0xB0, 0xF1, 0x98, 0xF3, 0x00, 0xDF, 0x00, 0xFF, 0x01, 0x1F, 0x01, 0x3F, 0x01, 0x7F, 0x01, 0x01, 0xBF, 0x01, 0x01, 0xDF, 0x01, 0x01, + 0xFF, 0x8E, 0x02, 0x1F, 0x06, 0xD9, 0x07, 0xE5, 0x07, 0xEC, 0x73, 0x55, 0xA8, 0xF1, 0x79, 0x32, 0x49, 0x32, 0x49, 0x31, 0x41, 0x31, 0x41, 0x10, 0x39, 0x10, 0x39, 0x0F, 0x30, 0xEF, 0x30, 0xEE, 0x01, 0x28, 0xCE, 0x01, 0x28, 0xCD, 0x01, 0x20, 0xCD, 0x59, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x07, 0x20, 0xAC, 0x83, 0x18, 0xAB, 0x30, 0xCC, 0x58, 0xCF, 0x79, 0x10, 0x01, 0x99, 0x31, 0x80, 0x99, 0x12, 0x01, 0x99, 0x31, 0x84, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x99, 0x32, 0x99, 0x31, 0x5F, 0x99, 0x11, 0x13, 0x99, 0x31, 0x01, 0x99, 0x11, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x05, 0x99, 0x31, 0x80, 0x99, 0x11, 0x1F, 0x99, 0x31, 0x85, 0xA1, 0x11, 0x99, 0x11, 0x89, 0x32, 0x69, 0x32, 0x51, 0x52, 0x51, 0x53, 0x01, 0x59, 0x53, 0x8F, 0x59, 0x74, 0x61, 0x74, 0x61, 0x75, 0x79, 0x54, 0xA8, 0xF1, 0xB0, 0xF1, 0x80, 0xF5, 0x01, 0x3F, 0x01, 0x7F, 0x01, 0x9F, 0x01, 0xBF, 0x01, 0xDF, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xFF, 0x02, 0x1F, 0x02, 0x02, 0x3F, 0x8E, 0x05, 0x7D, 0x07, 0xE8, 0x07, 0xE9, 0x82, 0xD5, 0xA0, 0xF1, 0x81, 0x32, 0x51, 0x32, 0x49, 0x31, 0x41, 0x31, 0x41, 0x10, 0x38, 0xF0, 0x38, 0xEF, 0x30, 0xEF, 0x30, 0xEE, 0x28, 0xCE, 0x02, 0x28, 0xCD, 0x01, 0x20, 0xCD, 0x1C, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x38, 0x20, 0xAC, 0x80, 0x18, 0xCC, 0x0D, 0x20, 0xAC, 0x80, 0x20, 0xAB, 0x70, 0x20, 0xAC, 0x81, 0x20, 0xCC, 0x20, 0xAD, 0x01, 0x20, 0xCD, 0x04, 0x28, 0xCD, 0x80, 0x28, 0xCE, 0x01, 0x28, 0xEE, 0x80, 0x30, 0xEE, 0x01, + 0x30, 0xEF, 0x8E, 0x30, 0xEE, 0x38, 0xEF, 0x51, 0x10, 0x61, 0x10, 0x59, 0x10, 0x69, 0x30, 0x79, 0x31, 0x81, 0x31, 0x81, 0x30, 0x99, 0x31, 0xA9, 0x32, 0xA1, 0x31, 0xB1, 0x31, 0xC9, 0x12, 0xC9, 0x11, 0x02, 0xC8, 0xF2, 0x81, 0xC8, 0xD1, 0xC0, 0xD1, 0x0A, 0xC0, 0xB1, 0x82, 0xC0, 0xD1, 0xB8, 0xB1, 0xC0, 0xD1, 0x06, 0xB8, 0xD1, 0x80, 0xB0, 0xD1, 0x01, 0xB8, 0xD1, 0x01, 0xB0, 0xD1, 0x80, 0xB0, 0xF1, 0x02, 0xB0, 0xD1, 0x02, 0xB0, 0xF1, 0x84, 0x51, 0x58, 0x01, 0xBF, 0x01, 0xDF, 0x01, 0xFF, 0x02, 0x1F, 0x01, 0x02, 0x3F, 0x81, 0x02, 0x1F, 0x02, 0x3F, 0x03, 0x02, 0x5F, 0x8C, 0x04, 0x1F, 0x07, 0xED, 0x07, 0xE4, 0x7A, 0xB4, 0xA9, 0x11, 0x91, 0x12, 0x51, 0x32, 0x49, 0x31, 0x41, 0x11, 0x41, 0x10, 0x39, 0x10, 0x38, 0xEF, 0x30, 0xEF, 0x01, 0x30, 0xEE, 0x02, 0x28, 0xCD, 0x81, 0x20, 0xCD, 0x20, 0xCC, 0x1C, 0x20, 0xAC, 0x82, 0x20, 0xCC, 0x20, 0xAC, 0x20, 0xAB, 0x3D, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x02, 0x20, 0xAC, 0x83, 0x18, 0xAC, 0x20, 0xAC, 0x20, 0xAB, 0x18, 0xAC, 0x05, 0x20, 0xAC, 0x80, 0x20, 0xAB, 0x6D, 0x20, 0xAC, 0x80, 0x20, 0xCC, 0x01, 0x20, 0xCD, 0x03, 0x28, 0xCD, 0x81, 0x28, 0xAD, 0x28, 0xCE, 0x01, 0x30, 0xCE, 0x84, 0x30, 0xEE, 0x81, 0x51, 0xB1, 0x92, 0xC9, 0xB3, 0xC9, 0xB2, 0x02, 0xC9, 0x92, 0x02, 0xC9, 0x72, 0x01, 0xC9, 0x52, 0x02, 0xC9, 0x32, 0x01, 0xC9, 0x12, 0x80, 0xC1, 0x11, 0x01, 0xC8, 0xF1, 0x82, 0xC8, 0xD1, 0xC0, 0xD1, 0xC8, 0xB1, 0x0A, 0xC0, 0xB1, 0x81, 0xC0, 0xD1, 0xB8, 0xB1, 0x06, 0xB8, 0xD1, 0x80, 0xB0, 0xD2, 0x02, + 0xB8, 0xD1, 0x80, 0xB0, 0xD1, 0x06, 0xB0, 0xF1, 0x84, 0xA8, 0xF1, 0x39, 0xBB, 0x02, 0x1F, 0x02, 0x3F, 0x02, 0x5F, 0x01, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x04, 0x02, 0x7F, 0x8C, 0x02, 0x9F, 0x07, 0xF3, 0x07, 0xE2, 0x99, 0x72, 0xA9, 0x11, 0xA1, 0x12, 0x49, 0x52, 0x49, 0x32, 0x41, 0x31, 0x41, 0x10, 0x39, 0x10, 0x38, 0xEF, 0x30, 0xEF, 0x01, 0x30, 0xEE, 0x02, 0x28, 0xCD, 0x81, 0x20, 0xCD, 0x20, 0xCC, 0x1C, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x3A, 0x20, 0xAC, 0x84, 0x18, 0xAC, 0x20, 0xAC, 0x18, 0xCC, 0x18, 0xAC, 0x20, 0xAB, 0x01, 0x20, 0xAC, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAB, 0x01, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x01, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x81, 0x20, 0xAC, 0x20, 0xAB, 0x69, 0x20, 0xAC, 0x02, 0x20, 0xCC, 0x03, 0x28, 0xCD, 0x84, 0x30, 0xCD, 0x28, 0xEE, 0x30, 0xEE, 0x49, 0x0E, 0xA9, 0xB2, 0x01, 0xC9, 0xD3, 0x01, 0xC9, 0xB3, 0x01, 0xC9, 0x92, 0x02, 0xC9, 0x72, 0x02, 0xC9, 0x52, 0x01, 0xC9, 0x32, 0x02, 0xC9, 0x12, 0x81, 0xC0, 0xF2, 0xC8, 0xD1, 0x01, 0xC0, 0xD1, 0x80, 0xC8, 0xB1, 0x0A, 0xC0, 0xB1, 0x0A, 0xB8, 0xD1, 0x01, 0xB0, 0xD1, 0x84, 0xB8, 0xD2, 0xB8, 0xD1, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF2, 0x02, 0xB0, 0xF1, 0x01, 0xA8, 0xF1, 0x81, 0x12, 0x3E, 0x02, 0x9F, 0x02, 0x02, 0xBF, 0x02, 0x02, 0x9F, 0x02, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x88, 0x02, 0xDF, 0x06, 0xB9, 0x07, 0xE3, 0xA1, 0x11, 0xA9, 0x11, 0xA1, 0x11, 0x59, 0x32, 0x49, 0x31, 0x49, 0x11, 0x01, 0x41, 0x10, 0x81, 0x39, 0x0F, 0x38, 0xEF, + 0x01, 0x30, 0xEE, 0x02, 0x28, 0xCD, 0x81, 0x20, 0xCD, 0x20, 0xCC, 0x06, 0x20, 0xAC, 0x80, 0x20, 0xAB, 0x14, 0x20, 0xAC, 0x82, 0x20, 0xAB, 0x20, 0xAC, 0x20, 0xAB, 0x39, 0x20, 0xAC, 0x82, 0x20, 0xAB, 0x20, 0xAC, 0x20, 0xAB, 0x01, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x82, 0x18, 0xAC, 0x20, 0xAC, 0x20, 0xAB, 0x02, 0x20, 0xAC, 0x80, 0x18, 0xAB, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAC, 0x05, 0x20, 0xAB, 0x69, 0x20, 0xAC, 0x81, 0x20, 0xCC, 0x20, 0xCD, 0x05, 0x28, 0xCD, 0x81, 0x30, 0xED, 0x69, 0x2F, 0x01, 0xC9, 0xD3, 0x02, 0xC9, 0xB3, 0x01, 0xC9, 0x92, 0x02, 0xC9, 0x72, 0x01, 0xC9, 0x52, 0x01, 0xC9, 0x32, 0x80, 0xC1, 0x32, 0x01, 0xC9, 0x12, 0x82, 0xC8, 0xF2, 0xC8, 0xF1, 0xC8, 0xD1, 0x01, 0xC0, 0xD1, 0x0A, 0xC0, 0xB1, 0x09, 0xB8, 0xD1, 0x82, 0xB0, 0xD1, 0xB8, 0xD1, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x81, 0xB0, 0xF1, 0xB0, 0xD1, 0x05, 0xB0, 0xF1, 0x81, 0xA8, 0xF1, 0x99, 0x33, 0x01, 0x02, 0xDF, 0x01, 0x02, 0xFF, 0x81, 0x02, 0xDF, 0x02, 0xBF, 0x04, 0x02, 0xDF, 0x01, 0x02, 0xBF, 0x83, 0x02, 0xFF, 0x05, 0x1E, 0x07, 0xE8, 0xA9, 0x12, 0x01, 0xA1, 0x11, 0x80, 0x69, 0x32, 0x01, 0x49, 0x31, 0x83, 0x41, 0x30, 0x41, 0x0F, 0x39, 0x0F, 0x38, 0xEE, 0x01, 0x30, 0xEE, 0x02, 0x28, 0xCD, 0x81, 0x20, 0xCD, 0x20, 0xCC, 0x06, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x13, 0x20, 0xAC, 0x7F, 0x20, 0xAB, 0x38, 0x20, 0xAB, 0x02, 0x20, 0xAC, 0x81, 0x28, 0xAC, 0x20, 0xCC, 0x02, 0x28, 0xCC, 0x01, 0x28, 0xCD, 0x83, 0x28, 0xED, 0x28, 0xCD, 0x30, 0xCD, 0x91, 0x91, 0x01, 0xC9, 0xD3, + 0x01, 0xC9, 0xB3, 0x81, 0xC9, 0x92, 0xC9, 0xB3, 0x01, 0xC9, 0x92, 0x01, 0xC9, 0x72, 0x01, 0xC9, 0x52, 0x01, 0xC9, 0x32, 0x83, 0xC9, 0x12, 0xC9, 0x32, 0xC9, 0x12, 0xC1, 0x12, 0x01, 0xC8, 0xF2, 0x01, 0xC8, 0xD1, 0x01, 0x90, 0x95, 0x82, 0x90, 0x75, 0x88, 0x75, 0x60, 0x78, 0x01, 0x60, 0x59, 0x01, 0x60, 0x58, 0x01, 0x60, 0x78, 0x80, 0x60, 0x59, 0x01, 0x60, 0x78, 0x82, 0x58, 0x78, 0x60, 0x78, 0x88, 0xB4, 0x01, 0x88, 0xB5, 0x03, 0xB8, 0xD1, 0x01, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x05, 0xB0, 0xF1, 0x02, 0xA8, 0xF1, 0x80, 0x69, 0xD6, 0x02, 0x03, 0x3F, 0x80, 0x03, 0x1F, 0x06, 0x02, 0xFF, 0x85, 0x02, 0xDF, 0x02, 0xFF, 0x03, 0x5F, 0x03, 0xFF, 0x07, 0xF0, 0x8A, 0x4F, 0x01, 0xA1, 0x11, 0x80, 0x81, 0x32, 0x01, 0x49, 0x31, 0x82, 0x41, 0x10, 0x41, 0x0F, 0x39, 0x0F, 0x01, 0x30, 0xEE, 0x01, 0x30, 0xCD, 0x01, 0x28, 0xCD, 0x01, 0x28, 0xCC, 0x80, 0x20, 0xCC, 0x02, 0x20, 0xAC, 0x7F, 0x20, 0xAB, 0x53, 0x20, 0xAB, 0x81, 0x20, 0xCC, 0x20, 0xAC, 0x02, 0x28, 0xCC, 0x80, 0x20, 0xCC, 0x01, 0x28, 0xCC, 0x82, 0x28, 0xCD, 0x40, 0xEE, 0xA9, 0xB2, 0x01, 0xC9, 0xD3, 0x82, 0xC9, 0xB3, 0xC9, 0xB2, 0xC9, 0xB3, 0x01, 0xC9, 0x92, 0x01, 0xC9, 0x72, 0x02, 0xC9, 0x52, 0x01, 0xC9, 0x32, 0x86, 0x90, 0xD5, 0x88, 0xD6, 0x60, 0x98, 0x58, 0x79, 0x30, 0x3C, 0x30, 0x5C, 0x08, 0x1E, 0x10, 0x00, 0x1F, 0x8A, 0x00, 0x3F, 0x00, 0x5F, 0x00, 0x7F, 0x00, 0x9F, 0x00, 0xBF, 0x00, 0xDF, 0x29, 0x1C, 0x41, 0x1A, 0x61, 0x18, 0x89, 0x15, 0xB0, 0xD1, 0x06, 0xB0, 0xF1, 0x83, 0xB0, 0xF2, + 0xA8, 0xF1, 0xB0, 0xF1, 0x42, 0x9A, 0x01, 0x03, 0x9F, 0x01, 0x03, 0x5F, 0x05, 0x03, 0x3F, 0x02, 0x03, 0x1F, 0x83, 0x03, 0x7F, 0x03, 0xFF, 0x06, 0xD7, 0x7A, 0xCF, 0x01, 0xA1, 0x11, 0x89, 0x99, 0x12, 0x51, 0x31, 0x49, 0x31, 0x41, 0x10, 0x41, 0x0F, 0x40, 0xEF, 0x38, 0xEE, 0x30, 0xEE, 0x30, 0xED, 0x30, 0xCD, 0x01, 0x28, 0xCD, 0x01, 0x28, 0xCC, 0x01, 0x20, 0xCC, 0x7F, 0x20, 0xAB, 0x55, 0x20, 0xAB, 0x02, 0x20, 0xCB, 0x02, 0x28, 0xCC, 0x83, 0x28, 0xCD, 0x28, 0xCC, 0x49, 0x0E, 0xC1, 0xD3, 0x01, 0xC9, 0xD3, 0x03, 0xC9, 0xB3, 0x01, 0xC9, 0x92, 0x85, 0xC9, 0x72, 0xC9, 0x52, 0x98, 0xF5, 0x60, 0xB8, 0x40, 0x7B, 0x18, 0x3E, 0x16, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x01, 0x00, 0x7F, 0x8E, 0x00, 0x9F, 0x00, 0xBF, 0x00, 0xFF, 0x01, 0x1F, 0x01, 0x3F, 0x01, 0x7F, 0x01, 0x9F, 0x01, 0xDF, 0x02, 0x1F, 0x21, 0xFD, 0x49, 0xD9, 0x79, 0x96, 0xA1, 0x12, 0xA8, 0xF1, 0xB0, 0xF1, 0x03, 0xA8, 0xF1, 0x82, 0x13, 0x9E, 0x03, 0xDF, 0x03, 0xBF, 0x01, 0x03, 0x9F, 0x03, 0x03, 0x7F, 0x01, 0x03, 0x5F, 0x01, 0x03, 0x3F, 0x84, 0x03, 0x5F, 0x03, 0xBF, 0x04, 0x1F, 0x05, 0xDE, 0x7A, 0xD1, 0x02, 0xA1, 0x11, 0x81, 0x59, 0x31, 0x49, 0x31, 0x01, 0x41, 0x30, 0x82, 0x40, 0xEF, 0x38, 0xEE, 0x30, 0xEE, 0x01, 0x30, 0xED, 0x03, 0x28, 0xCC, 0x80, 0x20, 0xCB, 0x7F, 0x20, 0xAB, 0x57, 0x20, 0xAB, 0x80, 0x20, 0xCB, 0x04, 0x28, 0xCC, 0x81, 0x69, 0x2F, 0xC9, 0xF3, 0x01, 0xC9, 0xD3, 0x87, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0x92, 0xC9, 0xB2, 0xC9, 0x72, 0xB9, 0x73, 0x80, 0xF7, 0x38, 0x7B, + 0x19, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x93, 0x00, 0x5F, 0x00, 0x7F, 0x00, 0x9F, 0x00, 0xBF, 0x00, 0xDF, 0x00, 0xFF, 0x01, 0x3F, 0x01, 0x5F, 0x01, 0x9F, 0x01, 0xBF, 0x01, 0xFF, 0x02, 0x3F, 0x02, 0x5F, 0x02, 0x9F, 0x02, 0xDF, 0x02, 0xFF, 0x03, 0x3F, 0x2A, 0xDC, 0x5A, 0x58, 0x89, 0x94, 0x01, 0xA8, 0xF1, 0x80, 0x81, 0xD4, 0x01, 0x04, 0x1F, 0x81, 0x03, 0xFF, 0x03, 0xDF, 0x04, 0x03, 0xBF, 0x89, 0x03, 0x9F, 0x03, 0x7F, 0x03, 0x5F, 0x03, 0x7F, 0x03, 0x9F, 0x03, 0xFF, 0x04, 0x7F, 0x04, 0xFF, 0x63, 0x75, 0xA1, 0x12, 0x01, 0xA1, 0x11, 0x81, 0x71, 0x11, 0x49, 0x31, 0x01, 0x41, 0x10, 0x82, 0x39, 0x0F, 0x38, 0xEE, 0x30, 0xEE, 0x01, 0x30, 0xED, 0x03, 0x28, 0xCC, 0x7F, 0x20, 0xAB, 0x58, 0x20, 0xAB, 0x81, 0x20, 0xCB, 0x28, 0xAC, 0x02, 0x28, 0xCC, 0x83, 0x69, 0x2E, 0xC9, 0xF3, 0xC9, 0xD2, 0xC9, 0xD3, 0x01, 0xC9, 0xB3, 0x83, 0xC9, 0x92, 0xC9, 0x93, 0x80, 0xF7, 0x38, 0x9B, 0x05, 0x00, 0x1F, 0x84, 0x08, 0x3C, 0x08, 0x5B, 0x10, 0x5B, 0x20, 0x78, 0x20, 0x98, 0x04, 0x20, 0x97, 0x83, 0x20, 0x98, 0x18, 0x7A, 0x10, 0x5B, 0x08, 0x5D, 0x08, 0x00, 0x1F, 0x9A, 0x00, 0x3F, 0x00, 0x5F, 0x00, 0x7F, 0x00, 0x9F, 0x00, 0xDF, 0x00, 0xFF, 0x01, 0x1F, 0x01, 0x5F, 0x01, 0x7F, 0x01, 0xBF, 0x01, 0xFF, 0x02, 0x1F, 0x02, 0x5F, 0x02, 0x9F, 0x02, 0xDF, 0x02, 0xFF, 0x03, 0x3F, 0x03, 0x7F, 0x03, 0xBF, 0x03, 0xDF, 0x04, 0x1F, 0x04, 0x3F, 0x0C, 0x3F, 0x2B, 0xBC, 0x0C, 0x3F, 0x04, 0x5F, 0x04, 0x3F, 0x01, 0x04, 0x1F, 0x02, 0x03, 0xFF, 0x01, 0x03, 0xDF, 0x88, 0x03, 0xBF, + 0x03, 0x9F, 0x03, 0x7F, 0x03, 0x9F, 0x03, 0xDF, 0x04, 0x3F, 0x04, 0xBF, 0x05, 0x3F, 0x53, 0x98, 0x02, 0xA1, 0x11, 0x84, 0x91, 0x11, 0x49, 0x31, 0x49, 0x10, 0x41, 0x10, 0x41, 0x0F, 0x01, 0x38, 0xEE, 0x80, 0x30, 0xED, 0x01, 0x30, 0xCD, 0x02, 0x28, 0xCC, 0x80, 0x28, 0xCB, 0x1B, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x31, 0x20, 0xAA, 0x08, 0x20, 0xAB, 0x80, 0x20, 0xCB, 0x01, 0x28, 0xCB, 0x8E, 0x28, 0xCC, 0x28, 0xCB, 0x61, 0x4E, 0xD1, 0xF3, 0xC9, 0xF3, 0xC9, 0xD3, 0xC9, 0xB2, 0xC9, 0xB3, 0xB1, 0x73, 0x60, 0xD9, 0x08, 0x1E, 0x00, 0x3D, 0x08, 0x3B, 0x18, 0x78, 0x18, 0x77, 0x01, 0x28, 0xD2, 0x81, 0x40, 0xEE, 0x38, 0xEE, 0x02, 0x39, 0x0F, 0x80, 0x41, 0x0E, 0x06, 0x41, 0x0F, 0x87, 0x41, 0x10, 0x41, 0x0F, 0x49, 0x10, 0x41, 0x30, 0x38, 0xF3, 0x28, 0xB6, 0x18, 0x9A, 0x00, 0x3E, 0x01, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x5F, 0x94, 0x00, 0x7F, 0x00, 0xBF, 0x00, 0xDF, 0x00, 0xFF, 0x01, 0x3F, 0x01, 0x5F, 0x01, 0x9F, 0x01, 0xDF, 0x02, 0x1F, 0x02, 0x3F, 0x02, 0x7F, 0x02, 0x9F, 0x02, 0xFF, 0x03, 0x3F, 0x03, 0x5F, 0x03, 0x9F, 0x03, 0xDF, 0x04, 0x1F, 0x04, 0x5F, 0x04, 0x7F, 0x04, 0xBF, 0x01, 0x04, 0xDF, 0x01, 0x04, 0xBF, 0x01, 0x04, 0x7F, 0x02, 0x04, 0x3F, 0x01, 0x04, 0x1F, 0x81, 0x03, 0xFF, 0x03, 0xDF, 0x01, 0x03, 0xBF, 0x85, 0x03, 0xDF, 0x04, 0x3F, 0x04, 0x7F, 0x04, 0xDF, 0x05, 0x7F, 0x3C, 0x1A, 0x03, 0xA1, 0x11, 0x85, 0x59, 0x31, 0x49, 0x10, 0x41, 0x10, 0x41, 0x0F, 0x39, 0x0E, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x01, 0x28, + 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x06, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x49, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x84, 0x20, 0xCB, 0x28, 0xCB, 0x20, 0xCB, 0x28, 0xAB, 0x69, 0x2E, 0x02, 0xC9, 0xD3, 0x87, 0xC9, 0xB3, 0xB1, 0xB2, 0x58, 0xF3, 0x18, 0x95, 0x28, 0xB2, 0x30, 0xED, 0x38, 0xED, 0x30, 0xED, 0x02, 0x38, 0xED, 0x80, 0x38, 0xEE, 0x01, 0x39, 0x0E, 0x01, 0x38, 0xEE, 0x03, 0x39, 0x0E, 0x81, 0x41, 0x0F, 0x39, 0x0E, 0x05, 0x41, 0x0F, 0x9D, 0x41, 0x10, 0x41, 0x0F, 0x49, 0x2F, 0x49, 0x30, 0x49, 0x10, 0x38, 0xF3, 0x20, 0xB8, 0x08, 0x7D, 0x00, 0x7F, 0x00, 0x9F, 0x00, 0xDF, 0x00, 0xFF, 0x01, 0x1F, 0x01, 0x5F, 0x01, 0x7F, 0x01, 0x9F, 0x01, 0xDF, 0x02, 0x1F, 0x02, 0x5F, 0x02, 0xBF, 0x02, 0xDF, 0x03, 0x1F, 0x03, 0x5F, 0x03, 0x9F, 0x03, 0xDF, 0x04, 0x1F, 0x04, 0x5F, 0x04, 0x9F, 0x04, 0xDF, 0x04, 0xFF, 0x01, 0x05, 0x1F, 0x84, 0x05, 0x3F, 0x04, 0xFF, 0x04, 0xDF, 0x04, 0xBF, 0x04, 0x9F, 0x01, 0x04, 0x7F, 0x01, 0x04, 0x5F, 0x8B, 0x04, 0x3F, 0x04, 0x1F, 0x03, 0xFF, 0x03, 0xDF, 0x03, 0xFF, 0x04, 0x3F, 0x04, 0x5F, 0x04, 0xBF, 0x05, 0x3F, 0x05, 0xBF, 0x2C, 0xDC, 0xA1, 0x12, 0x02, 0xA1, 0x11, 0x85, 0x71, 0x31, 0x49, 0x30, 0x41, 0x30, 0x41, 0x0F, 0x39, 0x0E, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x81, 0x28, 0xAB, 0x20, 0xCB, 0x02, 0x20, 0xAB, 0x16, 0x20, 0xAA, 0x7F, 0x20, 0xAB, 0x2B, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x0B, 0x20, 0xAB, 0x80, 0x28, 0xAB, 0x01, 0x28, 0xCB, 0x81, 0x61, 0x2E, 0xC9, + 0xF3, 0x01, 0xC9, 0xD3, 0x84, 0xB9, 0x92, 0x69, 0x2E, 0x28, 0xCC, 0x28, 0xEC, 0x30, 0xCD, 0x04, 0x30, 0xED, 0x81, 0x38, 0xED, 0x30, 0xED, 0x01, 0x38, 0xED, 0x80, 0x39, 0x0E, 0x02, 0x38, 0xEE, 0x81, 0x39, 0x0F, 0x38, 0xEE, 0x01, 0x40, 0xEE, 0x83, 0x39, 0x0F, 0x39, 0x0E, 0x41, 0x0E, 0x40, 0xEF, 0x06, 0x41, 0x0F, 0x80, 0x41, 0x2F, 0x01, 0x49, 0x10, 0x9A, 0x49, 0x30, 0x41, 0x13, 0x28, 0xF8, 0x08, 0xFE, 0x01, 0x3F, 0x01, 0x5F, 0x01, 0x9F, 0x01, 0xDF, 0x02, 0x1F, 0x02, 0x3F, 0x02, 0x9F, 0x02, 0xBF, 0x03, 0x1F, 0x03, 0x5F, 0x03, 0x9F, 0x03, 0xDF, 0x04, 0x1F, 0x04, 0x5F, 0x04, 0x9F, 0x04, 0xDF, 0x05, 0x1F, 0x05, 0x3F, 0x05, 0x7F, 0x05, 0x9F, 0x05, 0x7F, 0x05, 0x5F, 0x05, 0x3F, 0x01, 0x04, 0xFF, 0x81, 0x04, 0xDF, 0x04, 0xBF, 0x01, 0x04, 0x9F, 0x82, 0x04, 0x7F, 0x04, 0x5F, 0x04, 0x3F, 0x01, 0x04, 0x1F, 0x86, 0x04, 0x3F, 0x04, 0x5F, 0x04, 0xBF, 0x04, 0xFF, 0x05, 0x5F, 0x05, 0xDF, 0x0E, 0x1F, 0x02, 0xA1, 0x11, 0x86, 0xA1, 0x12, 0x89, 0x31, 0x49, 0x30, 0x41, 0x30, 0x41, 0x0F, 0x41, 0x0E, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x02, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x19, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x31, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xCB, 0x01, 0x20, 0xAB, 0x87, 0x20, 0xCB, 0x28, 0xAB, 0x20, 0xCB, 0x61, 0x2E, 0xD1, 0xF3, 0xC9, 0xF3, 0xC1, 0xB2, 0x61, 0x2E, 0x03, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x80, 0x30, 0xCD, 0x05, 0x30, 0xED, 0x80, 0x38, 0xED, 0x09, 0x38, + 0xEE, 0x81, 0x39, 0x0E, 0x38, 0xEE, 0x02, 0x39, 0x0E, 0x05, 0x41, 0x0F, 0x80, 0x41, 0x30, 0x01, 0x49, 0x30, 0x92, 0x49, 0x31, 0x49, 0x30, 0x41, 0x33, 0x19, 0x7A, 0x01, 0xDE, 0x02, 0x1F, 0x02, 0x7F, 0x02, 0xBF, 0x02, 0xFF, 0x03, 0x3F, 0x03, 0x7F, 0x03, 0xBF, 0x03, 0xFF, 0x04, 0x5F, 0x04, 0x9F, 0x04, 0xDF, 0x05, 0x1F, 0x05, 0x7F, 0x05, 0x9F, 0x02, 0x05, 0xDF, 0x81, 0x05, 0xBF, 0x05, 0x9F, 0x01, 0x05, 0x5F, 0x82, 0x05, 0x3F, 0x05, 0x1F, 0x04, 0xFF, 0x01, 0x04, 0xDF, 0x82, 0x04, 0xBF, 0x04, 0x7F, 0x04, 0x5F, 0x01, 0x04, 0x3F, 0x87, 0x04, 0x7F, 0x04, 0xBF, 0x04, 0xFF, 0x05, 0x3F, 0x05, 0xBF, 0x06, 0x1F, 0x06, 0x9F, 0x99, 0x72, 0x03, 0xA1, 0x11, 0x87, 0x51, 0x30, 0x49, 0x10, 0x41, 0x0F, 0x39, 0x0F, 0x39, 0x0E, 0x38, 0xED, 0x30, 0xED, 0x30, 0xCD, 0x02, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x03, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x43, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x87, 0x20, 0xCB, 0x28, 0xAB, 0x51, 0x0D, 0xD1, 0xF3, 0xC9, 0xD2, 0x81, 0x6F, 0x30, 0xCC, 0x28, 0xAC, 0x04, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x80, 0x30, 0xCD, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCD, 0x04, 0x30, 0xED, 0x03, 0x38, 0xED, 0x05, 0x38, 0xEE, 0x04, 0x39, 0x0E, 0x03, 0x41, 0x0F, 0x82, 0x41, 0x10, 0x41, 0x0F, 0x49, 0x10, 0x02, 0x49, 0x30, 0x8F, 0x49, 0x31, 0x49, 0x32, 0x31, 0xB6, 0x0A, 0x9D, 0x02, 0xFF, 0x03, 0x5F, 0x03, 0x9F, 0x03, 0xFF, 0x04, 0x3F, + 0x04, 0x7F, 0x04, 0xBF, 0x05, 0x1F, 0x05, 0x5F, 0x05, 0xBF, 0x05, 0xDF, 0x06, 0x1F, 0x01, 0x06, 0x3F, 0x82, 0x05, 0xFF, 0x05, 0xDF, 0x05, 0xBF, 0x01, 0x05, 0x9F, 0x86, 0x05, 0x7F, 0x05, 0x5F, 0x05, 0x3F, 0x05, 0x1F, 0x04, 0xFF, 0x04, 0xDF, 0x04, 0xBF, 0x02, 0x04, 0x7F, 0x87, 0x04, 0x9F, 0x04, 0xDF, 0x05, 0x3F, 0x05, 0x7F, 0x05, 0xFF, 0x06, 0x5F, 0x06, 0xDF, 0x7A, 0x95, 0x03, 0xA1, 0x11, 0x81, 0x69, 0x11, 0x49, 0x30, 0x01, 0x41, 0x0F, 0x83, 0x39, 0x0E, 0x38, 0xEE, 0x30, 0xED, 0x30, 0xCD, 0x02, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x03, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x43, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xCB, 0x01, 0x20, 0xAB, 0x84, 0x40, 0xEC, 0xC1, 0xD2, 0xC1, 0xB3, 0x49, 0x0D, 0x28, 0xCB, 0x07, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x80, 0x30, 0xEC, 0x01, 0x30, 0xCD, 0x0A, 0x30, 0xED, 0x03, 0x38, 0xED, 0x05, 0x38, 0xEE, 0x01, 0x39, 0x0E, 0x80, 0x39, 0x0F, 0x03, 0x41, 0x0F, 0x01, 0x49, 0x10, 0x81, 0x49, 0x30, 0x49, 0x31, 0x01, 0x49, 0x51, 0x8A, 0x39, 0xD5, 0x13, 0x1C, 0x04, 0x1F, 0x04, 0x7F, 0x04, 0xBF, 0x05, 0x1F, 0x05, 0x5F, 0x05, 0x9F, 0x05, 0xDF, 0x06, 0x1F, 0x06, 0x7F, 0x01, 0x06, 0x9F, 0x82, 0x06, 0x7F, 0x06, 0x5F, 0x06, 0x1F, 0x01, 0x05, 0xFF, 0x87, 0x05, 0xBF, 0x05, 0x9F, 0x05, 0x7F, 0x05, 0x5F, 0x05, 0x3F, 0x05, 0x1F, 0x04, 0xFF, 0x04, 0xDF, 0x02, 0x04, 0xBF, 0x87, 0x04, 0xDF, 0x05, 0x1F, 0x05, 0x7F, 0x05, 0xBF, 0x06, 0x3F, 0x06, 0x9F, 0x07, + 0x1F, 0x54, 0x38, 0x03, 0xA1, 0x11, 0x81, 0x81, 0x11, 0x49, 0x30, 0x01, 0x41, 0x0F, 0x81, 0x39, 0x0E, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x03, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x43, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x83, 0x30, 0xCB, 0xA9, 0x92, 0xA9, 0xB1, 0x30, 0xCB, 0x03, 0x28, 0xCB, 0x06, 0x28, 0xCC, 0x03, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x80, 0x30, 0xCD, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCD, 0x08, 0x30, 0xED, 0x03, 0x38, 0xED, 0x02, 0x38, 0xEE, 0x02, 0x39, 0x0E, 0x04, 0x41, 0x0F, 0x80, 0x41, 0x2F, 0x01, 0x49, 0x30, 0x8A, 0x51, 0x30, 0x49, 0x31, 0x51, 0x31, 0x3A, 0x15, 0x23, 0x7B, 0x05, 0x3F, 0x05, 0x9F, 0x53, 0x58, 0x34, 0x9B, 0x0E, 0x1F, 0x06, 0xBF, 0x01, 0x06, 0xFF, 0x8D, 0x06, 0xDF, 0x06, 0xBF, 0x06, 0x9F, 0x06, 0x5F, 0x06, 0x3F, 0x06, 0x1F, 0x05, 0xFF, 0x05, 0xDF, 0x05, 0xBF, 0x05, 0x9F, 0x05, 0x7F, 0x05, 0x5F, 0x05, 0x1F, 0x04, 0xFF, 0x01, 0x04, 0xDF, 0x88, 0x04, 0xFF, 0x05, 0x1F, 0x05, 0x5F, 0x05, 0x9F, 0x05, 0xFF, 0x06, 0x5F, 0x06, 0xDF, 0x07, 0x3F, 0x35, 0x9B, 0x04, 0xA1, 0x11, 0x84, 0x49, 0x30, 0x49, 0x10, 0x41, 0x2F, 0x39, 0x0E, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x04, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x43, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x84, + 0x69, 0x2F, 0x81, 0x6F, 0x20, 0xAB, 0x20, 0xCB, 0x20, 0xAB, 0x02, 0x28, 0xCB, 0x81, 0x28, 0xAB, 0x28, 0xCB, 0x09, 0x28, 0xCC, 0x02, 0x30, 0xCC, 0x07, 0x30, 0xCD, 0x07, 0x30, 0xED, 0x80, 0x38, 0xED, 0x03, 0x38, 0xEE, 0x01, 0x39, 0x0E, 0x03, 0x41, 0x0F, 0x80, 0x41, 0x2F, 0x02, 0x49, 0x30, 0x01, 0x49, 0x31, 0x83, 0x51, 0x31, 0x49, 0xD4, 0x24, 0x3A, 0xA1, 0x32, 0x02, 0xA8, 0xF1, 0x01, 0x82, 0x95, 0x86, 0x54, 0x18, 0x35, 0x1B, 0x06, 0xDF, 0x06, 0x9F, 0x06, 0x7F, 0x06, 0x5F, 0x06, 0x3F, 0x01, 0x05, 0xFF, 0x84, 0x05, 0xBF, 0x05, 0x9F, 0x05, 0x7F, 0x05, 0x5F, 0x05, 0x3F, 0x01, 0x05, 0x1F, 0x88, 0x05, 0x3F, 0x05, 0x7F, 0x05, 0x9F, 0x05, 0xDF, 0x06, 0x3F, 0x06, 0x9F, 0x06, 0xFF, 0x07, 0x7F, 0x0F, 0x5F, 0x03, 0xA1, 0x11, 0x85, 0x99, 0x31, 0x69, 0x11, 0x49, 0x30, 0x41, 0x0F, 0x39, 0x0E, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x82, 0x30, 0xCD, 0x30, 0xCC, 0x28, 0xCC, 0x02, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x03, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x43, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xCB, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x83, 0x20, 0xCB, 0x20, 0xAB, 0x28, 0xCB, 0x28, 0xAB, 0x03, 0x28, 0xCB, 0x0B, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x03, 0x28, 0xCC, 0x03, 0x30, 0xCC, 0x01, 0x30, 0xCD, 0x05, 0x30, 0xED, 0x80, 0x30, 0xEE, 0x01, 0x38, 0xED, 0x02, 0x39, 0x0E, 0x80, 0x41, 0x0E, 0x03, 0x41, 0x0F, 0x80, 0x41, 0x30, 0x02, 0x49, 0x30, 0x01, 0x51, 0x31, 0x84, 0x69, 0x92, 0xA8, + 0xF1, 0xA9, 0x11, 0xA8, 0xF1, 0xA9, 0x11, 0x02, 0xA8, 0xF1, 0x8A, 0xA1, 0x72, 0x4C, 0x39, 0x2D, 0x5C, 0x06, 0x9F, 0x06, 0x5F, 0x06, 0x3F, 0x06, 0x1F, 0x05, 0xFF, 0x05, 0xDF, 0x05, 0x9F, 0x05, 0x7F, 0x02, 0x05, 0x5F, 0x97, 0x05, 0x7F, 0x05, 0x9F, 0x05, 0xDF, 0x06, 0x1F, 0x06, 0x7F, 0x06, 0xDF, 0x07, 0x3F, 0x07, 0x9F, 0x07, 0xDF, 0x82, 0x54, 0xA1, 0x11, 0xA1, 0x31, 0xA1, 0x11, 0x99, 0x11, 0x81, 0x31, 0x49, 0x10, 0x41, 0x0F, 0x41, 0x0E, 0x38, 0xEE, 0x38, 0xED, 0x30, 0xED, 0x30, 0xCD, 0x30, 0xCC, 0x28, 0xCC, 0x02, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x06, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x43, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x82, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xCB, 0x02, 0x20, 0xAB, 0x01, 0x28, 0xAB, 0x01, 0x20, 0xCB, 0x06, 0x28, 0xCB, 0x13, 0x28, 0xCC, 0x80, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x04, 0x30, 0xED, 0x04, 0x38, 0xEE, 0x81, 0x39, 0x0E, 0x39, 0x0F, 0x02, 0x41, 0x0F, 0x83, 0x41, 0x2F, 0x49, 0x30, 0x49, 0x10, 0x49, 0x30, 0x01, 0x51, 0x31, 0x81, 0x69, 0x31, 0xA1, 0x11, 0x03, 0xA8, 0xF1, 0x8B, 0xA9, 0x11, 0xA1, 0x11, 0xA9, 0x11, 0xA0, 0xF1, 0x99, 0x72, 0x44, 0x19, 0x06, 0x7F, 0x06, 0x5F, 0x06, 0x1F, 0x05, 0xFF, 0x05, 0xDF, 0x05, 0xBF, 0x01, 0x05, 0x9F, 0x01, 0x05, 0xBF, 0x89, 0x05, 0xDF, 0x06, 0x1F, 0x06, 0x5F, 0x06, 0xBF, 0x06, 0xFF, 0x07, 0x5F, 0x07, 0xBF, 0x07, 0xFF, 0x54, 0x98, 0xA1, 0x31, 0x02, 0xA1, 0x11, 0x81, 0x99, 0x11, 0x49, 0x30, 0x01, 0x41, 0x0F, 0x01, 0x38, 0xEE, 0x82, 0x30, 0xED, + 0x30, 0xCD, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x06, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x43, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x81, 0x20, 0xCA, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x80, 0x20, 0xCB, 0x01, 0x20, 0xAB, 0x81, 0x28, 0xCB, 0x20, 0xCB, 0x08, 0x28, 0xCB, 0x12, 0x28, 0xCC, 0x02, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x80, 0x30, 0xCD, 0x02, 0x30, 0xED, 0x81, 0x38, 0xED, 0x38, 0xEE, 0x02, 0x39, 0x0E, 0x80, 0x39, 0x0F, 0x01, 0x41, 0x0F, 0x83, 0x49, 0x0F, 0x41, 0x2F, 0x49, 0x10, 0x49, 0x30, 0x01, 0x49, 0x31, 0x81, 0x59, 0x31, 0x91, 0x11, 0x01, 0xA8, 0xF1, 0x80, 0xA9, 0x11, 0x01, 0xA8, 0xF1, 0x02, 0xA9, 0x11, 0x85, 0xA1, 0x11, 0x7A, 0x55, 0x34, 0xBB, 0x06, 0x5F, 0x06, 0x1F, 0x05, 0xFF, 0x03, 0x05, 0xDF, 0x8A, 0x05, 0xFF, 0x06, 0x3F, 0x06, 0x5F, 0x06, 0x9F, 0x06, 0xDF, 0x07, 0x1F, 0x07, 0x7F, 0x07, 0xBF, 0x07, 0xFF, 0x2E, 0x3C, 0x99, 0x11, 0x01, 0xA1, 0x11, 0x01, 0x99, 0x31, 0x80, 0x69, 0x10, 0x01, 0x41, 0x0F, 0x01, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x01, 0x20, 0xCB, 0x05, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x45, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x08, 0x20, 0xAB, 0x03, 0x20, 0xCB, 0x16, 0x28, 0xCB, 0x07, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x81, 0x30, 0xEC, 0x30, 0xCD, 0x03, 0x30, 0xED, 0x03, 0x38, 0xEE, 0x80, 0x39, 0x0E, 0x03, 0x41, 0x0F, 0x86, 0x49, 0x10, 0x49, 0x30, 0x49, 0x31, 0x51, 0x31, 0x79, + 0x31, 0xA9, 0x11, 0xA8, 0xF1, 0x03, 0xA9, 0x11, 0x80, 0xA8, 0xF1, 0x03, 0xA1, 0x11, 0x82, 0x91, 0xB3, 0x62, 0xF6, 0x34, 0x7B, 0x01, 0x06, 0x1F, 0x01, 0x06, 0x3F, 0x86, 0x06, 0x5F, 0x06, 0x7F, 0x06, 0xBF, 0x07, 0x1F, 0x07, 0x3F, 0x07, 0x9F, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x8C, 0xA1, 0x11, 0x99, 0x12, 0x99, 0x11, 0x99, 0x31, 0x99, 0x32, 0x81, 0x31, 0x41, 0x30, 0x41, 0x0F, 0x41, 0x0E, 0x38, 0xEE, 0x30, 0xEE, 0x30, 0xED, 0x30, 0xCD, 0x01, 0x28, 0xCC, 0x02, 0x28, 0xCB, 0x03, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x45, 0x20, 0xAA, 0x07, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x04, 0x20, 0xAB, 0x81, 0x20, 0xCB, 0x20, 0xAB, 0x05, 0x28, 0xAB, 0x14, 0x28, 0xCB, 0x06, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x80, 0x30, 0xCD, 0x03, 0x30, 0xED, 0x03, 0x38, 0xEE, 0x80, 0x39, 0x0F, 0x02, 0x41, 0x0F, 0x80, 0x49, 0x10, 0x02, 0x49, 0x30, 0x80, 0x71, 0x11, 0x03, 0xA9, 0x11, 0x80, 0xA1, 0x11, 0x01, 0xA9, 0x11, 0x05, 0xA1, 0x11, 0x89, 0x91, 0xB3, 0x34, 0x9B, 0x06, 0x5F, 0x06, 0x7F, 0x06, 0x9F, 0x06, 0xBF, 0x06, 0xFF, 0x07, 0x3F, 0x07, 0x7F, 0x07, 0xBF, 0x02, 0x07, 0xFF, 0x83, 0x7A, 0xD4, 0xA1, 0x11, 0x99, 0x11, 0xA1, 0x11, 0x01, 0x99, 0x31, 0x84, 0x49, 0x30, 0x41, 0x0F, 0x39, 0x0E, 0x38, 0xEE, 0x30, 0xEE, 0x01, 0x30, 0xED, 0x01, 0x28, 0xCC, 0x02, 0x28, 0xCB, 0x03, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x47, 0x20, 0xAA, 0x07, 0x20, 0xAB, 0x80, 0x20, 0xCB, 0x08, 0x20, 0xAB, 0x03, 0x28, 0xAB, 0x0B, 0x20, + 0xCB, 0x01, 0x28, 0xCB, 0x01, 0x20, 0xCB, 0x07, 0x28, 0xCB, 0x04, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x81, 0x30, 0xEC, 0x30, 0xCD, 0x02, 0x30, 0xED, 0x80, 0x38, 0xED, 0x01, 0x38, 0xEE, 0x01, 0x39, 0x0E, 0x01, 0x41, 0x0F, 0x80, 0x41, 0x10, 0x01, 0x49, 0x30, 0x83, 0x51, 0x30, 0x81, 0x11, 0xA1, 0x11, 0xA9, 0x11, 0x01, 0xA1, 0x11, 0x86, 0xA9, 0x11, 0xA1, 0x12, 0xA1, 0x11, 0xA9, 0x11, 0xA1, 0x11, 0xA1, 0x12, 0xA0, 0xF1, 0x02, 0xA1, 0x11, 0x87, 0x7A, 0x75, 0x15, 0xFD, 0x06, 0xBF, 0x06, 0xFF, 0x07, 0x1F, 0x07, 0x5F, 0x07, 0x9F, 0x07, 0xBF, 0x02, 0x07, 0xFF, 0x82, 0x54, 0x99, 0x99, 0x31, 0x99, 0x11, 0x02, 0x99, 0x31, 0x81, 0x69, 0x30, 0x41, 0x0F, 0x01, 0x39, 0x0E, 0x83, 0x38, 0xEE, 0x30, 0xED, 0x30, 0xCD, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x05, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x47, 0x20, 0xAA, 0x09, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x11, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x81, 0x28, 0xAB, 0x20, 0xAB, 0x01, 0x28, 0xAB, 0x04, 0x20, 0xCB, 0x06, 0x28, 0xCB, 0x05, 0x28, 0xCC, 0x82, 0x30, 0xCC, 0x30, 0xEC, 0x30, 0xCD, 0x02, 0x30, 0xED, 0x80, 0x38, 0xED, 0x01, 0x38, 0xEE, 0x80, 0x40, 0xEE, 0x02, 0x41, 0x0F, 0x80, 0x41, 0x30, 0x01, 0x49, 0x30, 0x83, 0x59, 0x31, 0x90, 0xF1, 0xA9, 0x11, 0xA9, 0x12, 0x02, 0xA1, 0x11, 0x01, 0xA9, 0x11, 0x81, 0xA1, 0x11, 0xA1, 0x12, 0x03, 0xA1, 0x11, 0x86, 0x99, 0x72, 0x35, 0x3B, 0x07, 0x1F, 0x07, 0x3F, 0x07, 0x7F, 0x07, 0xBF, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x81, 0x2E, 0x3C, 0xA1, 0x11, + 0x03, 0x99, 0x31, 0x80, 0x89, 0x31, 0x01, 0x41, 0x0F, 0x01, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x05, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x48, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x21, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x80, 0x28, 0xAB, 0x02, 0x20, 0xCB, 0x04, 0x28, 0xCB, 0x04, 0x28, 0xCC, 0x80, 0x30, 0xCC, 0x01, 0x30, 0xCD, 0x02, 0x30, 0xED, 0x80, 0x38, 0xEE, 0x02, 0x39, 0x0E, 0x01, 0x41, 0x0F, 0x81, 0x41, 0x2F, 0x41, 0x30, 0x01, 0x49, 0x30, 0x81, 0x81, 0x11, 0xA9, 0x11, 0x08, 0xA1, 0x11, 0x01, 0xA1, 0x12, 0x01, 0xA1, 0x11, 0x84, 0x44, 0x99, 0x07, 0x7F, 0x07, 0x9F, 0x07, 0xBF, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x81, 0x99, 0x31, 0xA1, 0x11, 0x03, 0x99, 0x31, 0x86, 0x49, 0x0F, 0x41, 0x0F, 0x38, 0xEE, 0x30, 0xEE, 0x38, 0xED, 0x30, 0xED, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x05, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x49, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x0D, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x07, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x0B, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x01, 0x28, 0xAB, 0x80, 0x20, 0xCB, 0x03, 0x28, 0xCB, 0x03, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x01, 0x30, 0xCD, 0x01, 0x30, 0xED, 0x82, 0x38, 0xED, 0x31, 0x0E, 0x38, 0xEE, 0x01, 0x39, 0x0E, 0x01, 0x41, 0x0F, 0x80, 0x41, 0x2F, 0x01, 0x49, 0x30, 0x80, 0x71, 0x31, 0x01, 0xA1, 0x11, 0x82, 0xA1, 0x12, 0xA1, 0x11, 0xA0, 0xF1, 0x01, 0xA1, 0x11, 0x80, 0xA1, 0x12, 0x04, 0xA1, + 0x11, 0x83, 0xA1, 0x31, 0x63, 0x97, 0x07, 0xBF, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x80, 0x7A, 0xD4, 0x03, 0x99, 0x31, 0x82, 0x99, 0x12, 0x71, 0x30, 0x39, 0x0F, 0x01, 0x38, 0xEE, 0x82, 0x38, 0xED, 0x30, 0xED, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x28, 0xAB, 0x05, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x4B, 0x20, 0xAA, 0x1F, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x08, 0x20, 0xAB, 0x03, 0x20, 0xCB, 0x03, 0x28, 0xCB, 0x04, 0x28, 0xCC, 0x80, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x86, 0x30, 0xED, 0x38, 0xEE, 0x30, 0xED, 0x38, 0xED, 0x39, 0x0E, 0x38, 0xEE, 0x41, 0x0E, 0x01, 0x41, 0x0F, 0x01, 0x49, 0x30, 0x80, 0x69, 0x31, 0x01, 0xA1, 0x11, 0x80, 0xA1, 0x12, 0x07, 0xA1, 0x11, 0x83, 0xA1, 0x12, 0x99, 0x31, 0x99, 0x11, 0x63, 0x97, 0x04, 0x07, 0xFF, 0x83, 0x07, 0xFE, 0x5C, 0x14, 0x99, 0x31, 0x99, 0x11, 0x02, 0x99, 0x31, 0x81, 0x91, 0x31, 0x41, 0x0F, 0x01, 0x39, 0x0E, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x81, 0x28, 0xAB, 0x20, 0xCB, 0x04, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x4B, 0x20, 0xAA, 0x06, 0x20, 0xAB, 0x05, 0x20, 0xAA, 0x1F, 0x20, 0xAB, 0x02, 0x20, 0xCB, 0x05, 0x28, 0xCB, 0x03, 0x28, 0xCC, 0x81, 0x30, 0xCC, 0x30, 0xCD, 0x01, 0x30, 0xED, 0x82, 0x38, 0xED, 0x30, 0xEE, 0x38, 0xEE, 0x01, 0x39, 0x0E, 0x01, 0x41, 0x0F, 0x84, 0x41, 0x30, 0x49, 0x30, 0x59, 0x31, 0x79, 0x11, 0x91, 0x31, 0x08, 0xA1, 0x11, 0x83, 0x99, 0x31, 0xA1, 0x11, 0x99, 0x31, 0x54, 0x98, 0x03, 0x07, 0xFF, 0x81, 0x07, 0xFE, 0x35, 0xF5, 0x05, + 0x99, 0x31, 0x80, 0x51, 0x0F, 0x01, 0x39, 0x0E, 0x81, 0x38, 0xED, 0x30, 0xED, 0x01, 0x30, 0xCC, 0x80, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x81, 0x28, 0xAB, 0x20, 0xCB, 0x04, 0x20, 0xAB, 0x12, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x10, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x0C, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x07, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x82, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x10, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xAB, 0x0F, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x04, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x09, 0x20, 0xAA, 0x08, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x18, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x81, 0x20, 0xAB, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x03, 0x20, 0xAA, 0x07, 0x20, 0xAB, 0x08, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x08, 0x20, 0xAA, 0x0D, 0x20, 0xAB, 0x85, 0x20, 0xCB, 0x28, 0xAB, 0x28, 0xCB, 0x20, 0xCB, 0x28, 0xAB, 0x28, 0xCB, 0x05, 0x28, 0xCC, 0x81, 0x30, 0xCC, 0x30, 0xCD, 0x01, 0x30, 0xED, 0x80, 0x38, 0xED, 0x01, 0x38, 0xEE, 0x80, 0x39, 0x0E, 0x01, 0x41, 0x0F, 0x81, 0x41, 0x2F, 0x41, 0x30, 0x01, 0x49, 0x30, 0x81, 0x61, 0x31, 0x89, 0x31, 0x02, 0xA1, 0x11, 0x80, 0xA1, 0x31, 0x01, 0xA1, 0x11, 0x80, 0x99, 0x31, + 0x03, 0xA1, 0x11, 0x80, 0x3D, 0x7A, 0x02, 0x07, 0xFF, 0x82, 0x07, 0xFE, 0x07, 0xF6, 0x99, 0x11, 0x04, 0x99, 0x31, 0x86, 0x79, 0x11, 0x39, 0x0E, 0x38, 0xEE, 0x30, 0xEE, 0x30, 0xED, 0x30, 0xCD, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x80, 0x28, 0xCB, 0x01, 0x28, 0xAB, 0x01, 0x20, 0xAB, 0x82, 0x20, 0xCA, 0x20, 0xAB, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xAB, 0x09, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x13, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xCB, 0x01, 0x20, 0xAA, 0x08, 0x20, 0xAB, 0x0E, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x04, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x12, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x05, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x13, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xCA, 0x02, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x0F, 0x20, 0xAA, 0x84, 0x20, 0xAB, 0x20, 0xAA, 0x18, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x0F, 0x20, 0xAA, 0x08, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x11, 0x20, 0xAA, 0x08, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xCA, 0x01, 0x20, 0xAA, 0x81, 0x20, 0xAB, 0x20, 0xAA, 0x08, 0x20, 0xAB, 0x09, 0x20, 0xAA, 0x05, 0x20, 0xAB, 0x81, 0x28, 0xCB, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x01, 0x28, 0xCB, 0x04, 0x28, 0xCC, 0x81, 0x30, 0xCC, 0x30, 0xEC, 0x02, 0x30, 0xED, 0x01, 0x38, 0xEE, 0x01, 0x39, 0x0E, 0x02, 0x41, 0x0F, 0x01, 0x49, 0x30, 0x82, 0x51, 0x31, + 0x61, 0x31, 0x99, 0x11, 0x02, 0xA1, 0x11, 0x80, 0x99, 0x31, 0x01, 0xA1, 0x11, 0x84, 0xA1, 0x12, 0x99, 0x31, 0x99, 0x11, 0x91, 0x92, 0x1E, 0xBD, 0x01, 0x07, 0xFF, 0x82, 0x07, 0xFE, 0x07, 0xF6, 0x7A, 0x71, 0x01, 0x99, 0x31, 0x80, 0x99, 0x32, 0x01, 0x99, 0x31, 0x82, 0x91, 0x11, 0x41, 0x0E, 0x38, 0xEE, 0x02, 0x30, 0xED, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x81, 0x20, 0xAB, 0x28, 0xAB, 0x02, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x0C, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x0B, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xAB, 0x14, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x0F, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x05, 0x20, 0xAA, 0x82, 0x20, 0xCA, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x04, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x05, 0x20, 0xAA, 0x84, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x0B, 0x20, 0xAA, 0x07, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x83, 0x20, 0xAA, 0x20, 0xCA, 0x20, 0xAA, 0x20, 0xAB, 0x18, 0x20, 0xAA, 0x81, 0x20, 0xAB, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAC, 0x1B, 0x20, 0xCD, 0x80, 0x20, 0xCC, 0x1F, 0x20, 0xCD, 0x03, 0x28, 0xCD, 0x80, 0x20, 0xCD, 0x02, 0x28, 0xCE, 0x83, 0x28, 0xEE, 0x28, 0xCE, 0x28, 0xEE, 0x30, 0xEE, + 0x02, 0x30, 0xEF, 0x01, 0x39, 0x0F, 0x01, 0x39, 0x10, 0x81, 0x41, 0x10, 0x41, 0x31, 0x01, 0x49, 0x31, 0x83, 0x49, 0x32, 0x49, 0x52, 0x51, 0x52, 0x91, 0x32, 0x02, 0xA1, 0x11, 0x80, 0x99, 0x12, 0x01, 0x99, 0x31, 0x83, 0x99, 0x11, 0x99, 0x31, 0x99, 0x12, 0x82, 0x74, 0x01, 0x07, 0xFF, 0x85, 0x07, 0xFD, 0x07, 0xF6, 0x5C, 0x32, 0x99, 0x11, 0x99, 0x31, 0x99, 0x32, 0x02, 0x99, 0x31, 0x81, 0x59, 0x10, 0x39, 0x0F, 0x01, 0x30, 0xEF, 0x87, 0x30, 0xEE, 0x30, 0xCE, 0x28, 0xCD, 0x28, 0xEE, 0x28, 0xED, 0x28, 0xCD, 0x20, 0xCD, 0x20, 0xAC, 0x01, 0x20, 0xCD, 0x82, 0x20, 0xAD, 0x20, 0xCD, 0x20, 0xAD, 0x01, 0x20, 0xCC, 0x82, 0x20, 0xAD, 0x20, 0xCC, 0x20, 0xAC, 0x01, 0x20, 0xCC, 0x01, 0x20, 0xAC, 0x07, 0x20, 0xCC, 0x82, 0x18, 0xD2, 0x10, 0xF2, 0x18, 0xD2, 0x08, 0x10, 0xF2, 0x01, 0x18, 0xD2, 0x0B, 0x18, 0xF2, 0x80, 0x18, 0xD2, 0x19, 0x18, 0xF2, 0x01, 0x18, 0xF3, 0x81, 0x18, 0xF2, 0x20, 0xF2, 0x01, 0x18, 0xF2, 0x80, 0x20, 0xF2, 0x01, 0x18, 0xF3, 0x0E, 0x20, 0xF3, 0x81, 0x20, 0xF2, 0x18, 0xF3, 0x05, 0x20, 0xF3, 0x80, 0x21, 0x13, 0x01, 0x20, 0xF3, 0x80, 0x21, 0x13, 0x01, 0x20, 0xF3, 0x80, 0x21, 0x13, 0x05, 0x20, 0xF3, 0x01, 0x21, 0x13, 0x08, 0x20, 0xF3, 0x81, 0x21, 0x13, 0x20, 0xF3, 0x02, 0x21, 0x13, 0x01, 0x28, 0xF3, 0x80, 0x21, 0x13, 0x01, 0x28, 0xF3, 0x80, 0x29, 0x13, 0x06, 0x21, 0x13, 0x0F, 0x29, 0x13, 0x83, 0x21, 0x13, 0x29, 0x13, 0x29, 0x14, 0x21, 0x13, 0x1F, 0x29, 0x13, 0x80, 0x29, 0x14, 0x27, 0x29, 0x13, 0x07, 0x21, 0x13, 0x01, 0x29, + 0x13, 0x01, 0x28, 0xF3, 0x04, 0x29, 0x13, 0x84, 0x28, 0xF3, 0x29, 0x13, 0x21, 0x13, 0x29, 0x13, 0x29, 0x14, 0x01, 0x29, 0x13, 0x04, 0x29, 0x14, 0x04, 0x31, 0x34, 0x01, 0x39, 0x34, 0x81, 0x39, 0x35, 0x39, 0x55, 0x01, 0x41, 0x55, 0x01, 0x41, 0x76, 0x83, 0x49, 0x76, 0x49, 0x77, 0x51, 0x76, 0x91, 0x32, 0x01, 0xA1, 0x11, 0x82, 0x99, 0x31, 0x99, 0x11, 0xA1, 0x11, 0x01, 0x99, 0x31, 0x87, 0x99, 0x12, 0x99, 0x31, 0x5C, 0x38, 0x07, 0xFF, 0x07, 0xFD, 0x07, 0xF6, 0x44, 0xF2, 0x99, 0x11, 0x04, 0x99, 0x31, 0x85, 0x79, 0x33, 0x39, 0x55, 0x31, 0x35, 0x31, 0x34, 0x31, 0x14, 0x21, 0x33, 0x01, 0x21, 0x13, 0x01, 0x20, 0xF3, 0x86, 0x21, 0x13, 0x19, 0x12, 0x18, 0xF2, 0x20, 0xF3, 0x18, 0xF2, 0x18, 0xF3, 0x18, 0xF2, 0x02, 0x18, 0xF3, 0x09, 0x18, 0xF2, 0x03, 0x18, 0xD2, 0x80, 0x10, 0xF2, 0x01, 0x18, 0xD2, 0x80, 0x10, 0xD2, 0x07, 0x18, 0xD2, 0x0B, 0x18, 0xF2, 0x80, 0x18, 0xD2, 0x01, 0x18, 0xF2, 0x01, 0x18, 0xD2, 0x13, 0x18, 0xF2, 0x04, 0x18, 0xF3, 0x80, 0x18, 0xF2, 0x01, 0x18, 0xF3, 0x80, 0x20, 0xF2, 0x05, 0x18, 0xF3, 0x12, 0x20, 0xF3, 0x80, 0x21, 0x12, 0x03, 0x20, 0xF3, 0x83, 0x21, 0x13, 0x20, 0xF2, 0x20, 0xF3, 0x20, 0xF2, 0x0F, 0x20, 0xF3, 0x86, 0x21, 0x13, 0x28, 0xF3, 0x21, 0x13, 0x20, 0xF3, 0x21, 0x13, 0x28, 0xF3, 0x20, 0xF3, 0x06, 0x21, 0x13, 0x01, 0x28, 0xF3, 0x02, 0x21, 0x13, 0x0C, 0x29, 0x13, 0x80, 0x21, 0x13, 0x02, 0x29, 0x13, 0x80, 0x29, 0x14, 0x01, 0x29, 0x13, 0x80, 0x28, 0xF3, 0x1C, 0x29, 0x13, 0x80, 0x28, 0xF3, 0x1C, 0x29, 0x13, + 0x80, 0x21, 0x13, 0x01, 0x29, 0x13, 0x80, 0x29, 0x14, 0x08, 0x29, 0x13, 0x0B, 0x21, 0x13, 0x80, 0x29, 0x13, 0x01, 0x28, 0xF3, 0x81, 0x29, 0x13, 0x21, 0x13, 0x01, 0x29, 0x13, 0x01, 0x21, 0x13, 0x82, 0x28, 0xF3, 0x29, 0x13, 0x21, 0x13, 0x07, 0x29, 0x14, 0x02, 0x31, 0x34, 0x80, 0x31, 0x35, 0x01, 0x39, 0x35, 0x01, 0x39, 0x55, 0x89, 0x41, 0x55, 0x41, 0x56, 0x41, 0x76, 0x49, 0x76, 0x49, 0x56, 0x51, 0x76, 0x91, 0x32, 0xA1, 0x11, 0xA1, 0x12, 0xA1, 0x11, 0x01, 0x99, 0x31, 0x87, 0x99, 0x11, 0x99, 0x32, 0x99, 0x31, 0x99, 0x11, 0x2E, 0x5C, 0x07, 0xFC, 0x07, 0xF6, 0x2E, 0x53, 0x02, 0x99, 0x31, 0x01, 0x99, 0x11, 0x81, 0x99, 0x31, 0x91, 0x32, 0x02, 0x31, 0x34, 0x82, 0x29, 0x34, 0x29, 0x14, 0x29, 0x13, 0x01, 0x21, 0x13, 0x86, 0x20, 0xF3, 0x21, 0x12, 0x20, 0xF3, 0x20, 0xD3, 0x19, 0x12, 0x18, 0xF2, 0x18, 0xF3, 0x02, 0x18, 0xF2, 0x82, 0x18, 0xD2, 0x18, 0xF2, 0x20, 0xF2, 0x07, 0x18, 0xF2, 0x03, 0x18, 0xD2, 0x0B, 0x1D, 0x7C, 0x07, 0x1D, 0x9C, 0x03, 0x1D, 0x9D, 0x84, 0x25, 0x9C, 0x1D, 0xBC, 0x1D, 0x9D, 0x25, 0x9D, 0x1D, 0x9C, 0x04, 0x25, 0x9C, 0x0D, 0x25, 0xBD, 0x01, 0x25, 0xDD, 0x01, 0x25, 0xBD, 0x80, 0x1D, 0xDD, 0x02, 0x25, 0xDD, 0x80, 0x25, 0xBD, 0x08, 0x25, 0xDD, 0x0B, 0x25, 0xFD, 0x80, 0x2D, 0xFD, 0x03, 0x25, 0xFD, 0x04, 0x2D, 0xFD, 0x81, 0x25, 0xFD, 0x2D, 0xFE, 0x01, 0x2D, 0xFD, 0x11, 0x2E, 0x1D, 0x80, 0x2E, 0x3E, 0x03, 0x2E, 0x1D, 0x01, 0x2E, 0x3D, 0x02, 0x2E, 0x3E, 0x13, 0x2E, 0x3D, 0x02, 0x2E, 0x3E, 0x80, 0x2E, 0x3D, 0x0B, 0x2E, + 0x3E, 0x0F, 0x2E, 0x5E, 0x80, 0x36, 0x5E, 0x02, 0x2E, 0x5E, 0x80, 0x2E, 0x3E, 0x01, 0x36, 0x5E, 0x80, 0x2E, 0x5D, 0x09, 0x2E, 0x5E, 0x0D, 0x2E, 0x3E, 0x02, 0x2E, 0x3D, 0x84, 0x2E, 0x3E, 0x2E, 0x3D, 0x2E, 0x3E, 0x2E, 0x3D, 0x36, 0x3D, 0x13, 0x2E, 0x3D, 0x10, 0x2E, 0x1D, 0x04, 0x36, 0x1D, 0x04, 0x3E, 0x1D, 0x88, 0x3E, 0x1E, 0x46, 0x1E, 0x46, 0x1D, 0x4D, 0xFE, 0x4D, 0xFD, 0x4E, 0x3E, 0x4D, 0xFE, 0x55, 0xDD, 0x92, 0x14, 0x02, 0x99, 0x31, 0x81, 0x99, 0x32, 0x99, 0x31, 0x01, 0x99, 0x11, 0x82, 0x99, 0x31, 0x7A, 0x74, 0x07, 0xFB, 0x01, 0x07, 0xF6, 0x01, 0x99, 0x31, 0x81, 0x99, 0x11, 0x99, 0x32, 0x02, 0x99, 0x31, 0x81, 0x4C, 0xFB, 0x3D, 0xFE, 0x01, 0x35, 0xDD, 0x03, 0x2D, 0xDD, 0x01, 0x25, 0xDD, 0x01, 0x25, 0xBD, 0x01, 0x25, 0xDD, 0x81, 0x25, 0xBD, 0x25, 0xDC, 0x02, 0x25, 0xBD, 0x81, 0x1D, 0xBD, 0x25, 0xBC, 0x01, 0x1D, 0xBD, 0x05, 0x1D, 0xBC, 0x03, 0x1D, 0x9D, 0x02, 0x1C, 0x7C, 0x80, 0x1C, 0x7B, 0x05, 0x1C, 0x7C, 0x0B, 0x1C, 0x9C, 0x85, 0x24, 0x9C, 0x1C, 0x9C, 0x1D, 0x9D, 0x1D, 0x7C, 0x1C, 0xFC, 0x1C, 0x9C, 0x0F, 0x1C, 0xBC, 0x80, 0x24, 0xBC, 0x01, 0x1C, 0xBC, 0x02, 0x24, 0xBC, 0x80, 0x1C, 0xBC, 0x02, 0x24, 0xDC, 0x83, 0x25, 0x3D, 0x25, 0xBD, 0x25, 0x3D, 0x24, 0xDD, 0x01, 0x24, 0xBC, 0x0F, 0x24, 0xDD, 0x80, 0x24, 0xFD, 0x01, 0x24, 0xDC, 0x01, 0x24, 0xFD, 0x85, 0x24, 0xFC, 0x24, 0xDD, 0x24, 0xFD, 0x25, 0x1C, 0x25, 0xFD, 0x25, 0x5D, 0x03, 0x24, 0xFD, 0x80, 0x24, 0xFC, 0x07, 0x24, 0xFD, 0x07, 0x2C, 0xFD, 0x80, 0x25, 0x1D, 0x01, + 0x24, 0xFD, 0x83, 0x25, 0x1D, 0x2D, 0x1D, 0x24, 0xFD, 0x2C, 0xFD, 0x01, 0x25, 0xBD, 0x83, 0x25, 0x3C, 0x2C, 0xFC, 0x2D, 0x1D, 0x25, 0x1D, 0x01, 0x2C, 0xFD, 0x14, 0x2D, 0x1D, 0x82, 0x2D, 0x1C, 0x2D, 0x5D, 0x2D, 0xDE, 0x08, 0x2D, 0x1D, 0x0F, 0x2D, 0x3D, 0x81, 0x2D, 0x1D, 0x2D, 0x3D, 0x01, 0x2D, 0x1D, 0x80, 0x2E, 0x1D, 0x02, 0x2D, 0x1D, 0x0F, 0x2D, 0x3D, 0x0A, 0x2D, 0x1D, 0x81, 0x2D, 0xDD, 0x2D, 0x5D, 0x12, 0x2D, 0x1D, 0x03, 0x2C, 0xFD, 0x01, 0x2D, 0x1D, 0x02, 0x2C, 0xFD, 0x01, 0x2D, 0xBD, 0x81, 0x2C, 0xFD, 0x2D, 0x1D, 0x01, 0x25, 0x1C, 0x08, 0x2C, 0xFD, 0x04, 0x34, 0xFD, 0x03, 0x3C, 0xFD, 0x80, 0x3D, 0x1D, 0x02, 0x45, 0x1D, 0x01, 0x4D, 0x1D, 0x83, 0x55, 0x3D, 0x91, 0xB3, 0x99, 0x31, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0xA1, 0x12, 0x01, 0x99, 0x31, 0x80, 0x54, 0x96, 0x01, 0x07, 0xF7, 0x81, 0x8A, 0x13, 0xA1, 0x11, 0x01, 0x99, 0x31, 0x83, 0x99, 0x12, 0x99, 0x32, 0x99, 0x11, 0x63, 0x18, 0x01, 0x34, 0xDD, 0x84, 0x2C, 0xDD, 0x2C, 0xDC, 0x2C, 0xDD, 0x2C, 0xBC, 0x24, 0xDC, 0x01, 0x24, 0xBC, 0x82, 0x25, 0x3C, 0x25, 0xBD, 0x25, 0x3C, 0x02, 0x24, 0xBC, 0x81, 0x1C, 0xBC, 0x24, 0xBC, 0x01, 0x1C, 0xBC, 0x80, 0x24, 0xBC, 0x05, 0x1C, 0xBC, 0x05, 0x1C, 0x9C, 0x0F, 0x1A, 0xBB, 0x03, 0x1A, 0xDB, 0x83, 0x1B, 0x3B, 0x1C, 0xFC, 0x15, 0x7C, 0x1C, 0x1C, 0x11, 0x1A, 0xDB, 0x01, 0x22, 0xDB, 0x03, 0x1A, 0xDB, 0x01, 0x22, 0xDB, 0x89, 0x22, 0xFB, 0x23, 0x1C, 0x1D, 0x1C, 0x1D, 0x5C, 0x23, 0x5B, 0x22, 0xDC, 0x22, 0xDB, 0x22, 0xDC, 0x22, 0xFB, 0x22, + 0xFC, 0x01, 0x22, 0xDC, 0x05, 0x22, 0xFC, 0x03, 0x22, 0xFB, 0x07, 0x22, 0xFC, 0x84, 0x23, 0x1B, 0x22, 0xFC, 0x23, 0x3C, 0x25, 0x3C, 0x1C, 0xFD, 0x01, 0x22, 0xFC, 0x80, 0x22, 0xFB, 0x0F, 0x22, 0xFC, 0x04, 0x23, 0x1C, 0x01, 0x2A, 0xFC, 0x80, 0x23, 0x1C, 0x01, 0x2B, 0x1C, 0x81, 0x25, 0x9C, 0x24, 0x7C, 0x01, 0x23, 0x1C, 0x80, 0x2B, 0x1C, 0x01, 0x23, 0x1C, 0x81, 0x2B, 0x1C, 0x23, 0x1C, 0x15, 0x2B, 0x1C, 0x81, 0x25, 0xBD, 0x2B, 0xBC, 0x19, 0x2B, 0x1C, 0x80, 0x23, 0x1C, 0x01, 0x2B, 0x1C, 0x80, 0x25, 0xDD, 0x1B, 0x2B, 0x1C, 0x83, 0x23, 0x1C, 0x2B, 0x1C, 0x2B, 0x7C, 0x25, 0x9D, 0x01, 0x2B, 0x1C, 0x80, 0x23, 0x1C, 0x07, 0x2B, 0x1C, 0x11, 0x23, 0x1C, 0x86, 0x24, 0x5D, 0x25, 0x9C, 0x22, 0xFC, 0x2A, 0xFC, 0x23, 0x1C, 0x2A, 0xFC, 0x22, 0xFC, 0x01, 0x23, 0x1C, 0x03, 0x2B, 0x1C, 0x80, 0x2A, 0xFC, 0x02, 0x2B, 0x1C, 0x04, 0x33, 0x1C, 0x80, 0x3B, 0x1C, 0x02, 0x3B, 0x3D, 0x87, 0x43, 0x3C, 0x43, 0x3D, 0x4B, 0x3D, 0x43, 0x5D, 0x5A, 0x9A, 0x99, 0x32, 0x99, 0x31, 0x99, 0x11, 0x05, 0x99, 0x31, 0x82, 0x17, 0x37, 0x07, 0xF9, 0x72, 0xD4, 0x05, 0x99, 0x31, 0x86, 0x81, 0x94, 0x33, 0x1C, 0x32, 0xFC, 0x2A, 0xFB, 0x2A, 0xFC, 0x2A, 0xFB, 0x22, 0xFB, 0x01, 0x22, 0xDC, 0x80, 0x22, 0xFB, 0x01, 0x22, 0xDB, 0x83, 0x23, 0x5C, 0x1D, 0x5C, 0x1D, 0x1D, 0x23, 0x1B, 0x02, 0x1A, 0xDB, 0x81, 0x22, 0xDB, 0x1A, 0xBB, 0x05, 0x1A, 0xDB, 0x01, 0x1A, 0xBB, 0x03, 0x1A, 0xDB, 0x0A, 0x13, 0x7B, 0x83, 0x1B, 0x7B, 0x13, 0x7B, 0x1B, 0x5B, 0x1B, 0x7B, 0x02, 0x13, 0x7B, 0x89, + 0x13, 0x9B, 0x1B, 0xBB, 0x14, 0xFB, 0x15, 0x3C, 0x13, 0xFB, 0x1B, 0x7B, 0x13, 0x9B, 0x1B, 0x7B, 0x1B, 0x7C, 0x1B, 0x9B, 0x01, 0x1B, 0x7B, 0x06, 0x1B, 0x9B, 0x80, 0x1B, 0x9C, 0x02, 0x1B, 0x9B, 0x80, 0x13, 0x9C, 0x06, 0x1B, 0x9B, 0x88, 0x1B, 0x9C, 0x1B, 0x9B, 0x1D, 0x3C, 0x1D, 0x5C, 0x1B, 0xFB, 0x1B, 0x9C, 0x1B, 0xBB, 0x1B, 0x9B, 0x1B, 0xBC, 0x01, 0x1B, 0x9B, 0x07, 0x1B, 0xBB, 0x80, 0x1B, 0xBC, 0x01, 0x1B, 0xBB, 0x82, 0x1B, 0xBC, 0x1B, 0xBB, 0x1B, 0xBC, 0x01, 0x1B, 0xBB, 0x89, 0x1B, 0xBC, 0x1B, 0xBB, 0x1B, 0xBC, 0x1B, 0xBB, 0x1B, 0xBC, 0x1B, 0xBB, 0x1C, 0xDC, 0x1D, 0x7D, 0x23, 0xFC, 0x1B, 0xDC, 0x05, 0x1B, 0xBC, 0x07, 0x23, 0xBC, 0x01, 0x1B, 0xBC, 0x05, 0x23, 0xDC, 0x80, 0x23, 0xBC, 0x03, 0x23, 0xDC, 0x81, 0x24, 0x7C, 0x1D, 0x9C, 0x1C, 0x23, 0xDC, 0x81, 0x24, 0x1C, 0x25, 0x9D, 0x1D, 0x23, 0xDC, 0x80, 0x1D, 0xBD, 0x1E, 0x23, 0xDC, 0x81, 0x1D, 0xBD, 0x24, 0x3C, 0x19, 0x23, 0xDC, 0x80, 0x23, 0xBC, 0x01, 0x23, 0xDC, 0x81, 0x25, 0x9C, 0x24, 0x7C, 0x01, 0x23, 0xBC, 0x81, 0x23, 0xDC, 0x23, 0xBC, 0x01, 0x23, 0xDC, 0x02, 0x23, 0xBC, 0x03, 0x23, 0xDC, 0x04, 0x2B, 0xDC, 0x03, 0x33, 0xDC, 0x80, 0x3B, 0xDC, 0x01, 0x3B, 0xFC, 0x83, 0x3B, 0xDC, 0x43, 0xFC, 0x43, 0xFD, 0x6B, 0x18, 0x03, 0x99, 0x31, 0x86, 0x99, 0x11, 0x99, 0x31, 0x99, 0x32, 0x99, 0x31, 0x6B, 0x53, 0x07, 0xFA, 0x54, 0x37, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x81, 0x99, 0x12, 0x99, 0x31, 0x02, 0x2B, 0xBC, 0x80, 0x2B, 0xBB, 0x01, 0x23, 0xBB, 0x80, 0x23, + 0x9B, 0x04, 0x1B, 0x9B, 0x82, 0x1B, 0xDB, 0x1D, 0x5C, 0x1D, 0x1C, 0x01, 0x1B, 0x9B, 0x82, 0x13, 0x9B, 0x13, 0x9C, 0x1B, 0x9B, 0x01, 0x1B, 0x7B, 0x80, 0x13, 0x9B, 0x01, 0x1B, 0x9B, 0x82, 0x1B, 0x7B, 0x1B, 0x9B, 0x13, 0x9B, 0x01, 0x1B, 0x7B, 0x01, 0x1B, 0x9B, 0x09, 0x13, 0x5B, 0x80, 0x13, 0x7B, 0x01, 0x13, 0x5A, 0x86, 0x13, 0x7B, 0x13, 0x5A, 0x13, 0x5B, 0x13, 0x9B, 0x14, 0xBB, 0x14, 0xFB, 0x13, 0xFB, 0x01, 0x13, 0x7B, 0x81, 0x13, 0x5B, 0x13, 0x7B, 0x01, 0x13, 0x7A, 0x0B, 0x13, 0x7B, 0x01, 0x1B, 0x7B, 0x07, 0x13, 0x7B, 0x85, 0x1B, 0xBB, 0x15, 0x3C, 0x15, 0x1C, 0x1B, 0x7B, 0x13, 0x9B, 0x13, 0x7B, 0x01, 0x13, 0x9B, 0x81, 0x1B, 0x9B, 0x13, 0x9B, 0x01, 0x1B, 0x9B, 0x07, 0x13, 0x9B, 0x04, 0x1B, 0x9B, 0x83, 0x13, 0xBB, 0x13, 0x9B, 0x1B, 0x9B, 0x13, 0x9B, 0x01, 0x1B, 0x9B, 0x85, 0x1B, 0x9C, 0x1C, 0x3B, 0x1D, 0x5C, 0x1C, 0x3C, 0x1B, 0x9B, 0x1B, 0xBB, 0x06, 0x1B, 0x9B, 0x07, 0x1B, 0xBB, 0x80, 0x1B, 0x9B, 0x07, 0x1B, 0xBB, 0x80, 0x1B, 0xBC, 0x01, 0x1B, 0xBB, 0x81, 0x1C, 0x9C, 0x1D, 0x1C, 0x19, 0x1B, 0xBB, 0x80, 0x1B, 0xDB, 0x02, 0x1B, 0xBB, 0x83, 0x1C, 0xFC, 0x1C, 0x7C, 0x1B, 0xBB, 0x1B, 0xDB, 0x17, 0x1B, 0xBC, 0x87, 0x1B, 0xBB, 0x1B, 0xDC, 0x23, 0xBC, 0x1B, 0xBB, 0x1D, 0x7C, 0x1B, 0xBB, 0x1B, 0xDC, 0x1B, 0xBB, 0x0F, 0x1B, 0xBC, 0x07, 0x1B, 0xBB, 0x85, 0x1B, 0xBC, 0x1B, 0x9C, 0x1B, 0xDC, 0x1B, 0xBB, 0x1C, 0x5B, 0x1C, 0xFB, 0x11, 0x1B, 0xBB, 0x07, 0x1B, 0xBC, 0x02, 0x1B, 0xBB, 0x82, 0x1B, 0x9B, 0x1D, 0x3C, 0x1C, 0xBC, 0x01, 0x1B, + 0xBB, 0x80, 0x1B, 0x9B, 0x01, 0x1B, 0x9C, 0x01, 0x1B, 0x9B, 0x84, 0x1B, 0xBB, 0x1B, 0x9C, 0x1B, 0x9B, 0x1B, 0xBB, 0x23, 0x9B, 0x04, 0x23, 0xBC, 0x03, 0x2B, 0xBC, 0x01, 0x33, 0xBC, 0x80, 0x33, 0xDC, 0x03, 0x3B, 0xDC, 0x80, 0x81, 0x94, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x83, 0x99, 0x11, 0x99, 0x31, 0x26, 0x59, 0x4C, 0x98, 0x03, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x81, 0x4B, 0x19, 0x23, 0xBC, 0x02, 0x23, 0x9B, 0x02, 0x1B, 0x9B, 0x03, 0x1B, 0x7B, 0x02, 0x13, 0x7B, 0x84, 0x14, 0xBB, 0x15, 0x1B, 0x13, 0xDB, 0x13, 0x7B, 0x13, 0x7A, 0x01, 0x13, 0x7B, 0x80, 0x13, 0x7A, 0x02, 0x13, 0x7B, 0x81, 0x13, 0x5B, 0x13, 0x7B, 0x02, 0x13, 0x5B, 0x80, 0x13, 0x7B, 0x03, 0x09, 0x99, 0x80, 0x11, 0x99, 0x01, 0x11, 0xBA, 0x83, 0x11, 0xB9, 0x09, 0xB9, 0x11, 0xBA, 0x11, 0x99, 0x01, 0x11, 0xBA, 0x87, 0x11, 0x99, 0x11, 0xDA, 0x0B, 0x3A, 0x0C, 0x9B, 0x0B, 0xFB, 0x12, 0x7A, 0x11, 0xBA, 0x11, 0x9A, 0x05, 0x11, 0xBA, 0x80, 0x11, 0x9A, 0x0C, 0x11, 0xBA, 0x80, 0x11, 0x9A, 0x04, 0x11, 0xBA, 0x83, 0x12, 0xBA, 0x14, 0xBB, 0x13, 0xFB, 0x11, 0xDB, 0x06, 0x11, 0xBA, 0x80, 0x11, 0xDA, 0x0A, 0x11, 0xBA, 0x84, 0x11, 0xBB, 0x11, 0xBA, 0x11, 0xDA, 0x11, 0xBA, 0x11, 0xDA, 0x01, 0x11, 0xBA, 0x86, 0x11, 0xDA, 0x11, 0xBA, 0x12, 0x7A, 0x14, 0xDB, 0x13, 0x7B, 0x11, 0xDA, 0x19, 0xBA, 0x0C, 0x11, 0xDA, 0x02, 0x19, 0xDA, 0x80, 0x11, 0xDA, 0x06, 0x11, 0xDB, 0x87, 0x19, 0xDB, 0x11, 0xDA, 0x19, 0xDA, 0x1A, 0x3B, 0x14, 0xFB, 0x1A, 0xFB, 0x19, + 0xDA, 0x11, 0xDB, 0x0F, 0x19, 0xDA, 0x07, 0x19, 0xDB, 0x85, 0x19, 0xDA, 0x19, 0xDB, 0x19, 0xDA, 0x1A, 0x1B, 0x15, 0x3C, 0x1A, 0x3B, 0x01, 0x19, 0xDA, 0x07, 0x19, 0xDB, 0x0F, 0x19, 0xDA, 0x01, 0x19, 0xDB, 0x85, 0x19, 0xDA, 0x19, 0xDB, 0x15, 0x3B, 0x19, 0xDB, 0x19, 0xDA, 0x19, 0xDB, 0x17, 0x19, 0xDA, 0x86, 0x11, 0xDB, 0x19, 0xDB, 0x19, 0xDA, 0x19, 0xDB, 0x19, 0xFB, 0x15, 0x3C, 0x12, 0x3A, 0x01, 0x19, 0xDA, 0x04, 0x11, 0xDA, 0x81, 0x19, 0xDA, 0x11, 0xDB, 0x09, 0x19, 0xDB, 0x05, 0x11, 0xBA, 0x86, 0x19, 0xDB, 0x19, 0xBA, 0x11, 0xDA, 0x11, 0xBA, 0x1A, 0xBB, 0x14, 0xFB, 0x1A, 0x5B, 0x01, 0x19, 0xBA, 0x01, 0x11, 0xDA, 0x01, 0x19, 0xDB, 0x82, 0x19, 0xDA, 0x19, 0xDB, 0x19, 0xBA, 0x01, 0x19, 0xDA, 0x02, 0x19, 0xDB, 0x02, 0x21, 0xDB, 0x01, 0x21, 0xFB, 0x03, 0x29, 0xFB, 0x85, 0x31, 0xFB, 0x32, 0x1B, 0x31, 0xFB, 0x32, 0x1B, 0x41, 0xFA, 0x99, 0x12, 0x05, 0x99, 0x31, 0x84, 0x99, 0x12, 0x72, 0xD4, 0x4C, 0x98, 0x99, 0x31, 0x99, 0x11, 0x02, 0x99, 0x31, 0x84, 0x99, 0x11, 0x99, 0x31, 0x59, 0x96, 0x21, 0xDB, 0x21, 0xDA, 0x02, 0x19, 0xDA, 0x01, 0x11, 0xDA, 0x06, 0x11, 0xBA, 0x86, 0x11, 0xD9, 0x13, 0x7A, 0x14, 0x9B, 0x13, 0x1A, 0x11, 0xBA, 0x11, 0x9A, 0x11, 0xB9, 0x01, 0x11, 0xBA, 0x82, 0x11, 0x9A, 0x11, 0xBA, 0x11, 0x9A, 0x04, 0x11, 0xBA, 0x03, 0x0A, 0xFA, 0x01, 0x0B, 0x1A, 0x01, 0x0A, 0xFA, 0x83, 0x0B, 0x1A, 0x0A, 0xFA, 0x0B, 0x1A, 0x0A, 0xFA, 0x01, 0x0B, 0x1A, 0x83, 0x0C, 0x3A, 0x0C, 0x9A, 0x0B, 0xDA, 0x0B, 0x1A, 0x01, 0x0A, 0xFA, 0x12, + 0x0B, 0x1A, 0x80, 0x0B, 0x3A, 0x01, 0x0B, 0x1A, 0x80, 0x0B, 0x3A, 0x02, 0x0B, 0x1A, 0x82, 0x0B, 0xDB, 0x14, 0xBB, 0x0B, 0xFA, 0x01, 0x0B, 0x1A, 0x01, 0x0B, 0x3A, 0x01, 0x0B, 0x1A, 0x01, 0x0B, 0x3A, 0x82, 0x13, 0x1A, 0x0B, 0x3A, 0x0B, 0x1A, 0x07, 0x0B, 0x3A, 0x01, 0x13, 0x3B, 0x80, 0x13, 0x3A, 0x04, 0x0B, 0x3A, 0x84, 0x13, 0x3A, 0x0B, 0x3A, 0x13, 0x7A, 0x0C, 0xDB, 0x0C, 0x5B, 0x01, 0x13, 0x3B, 0x80, 0x0B, 0x3A, 0x06, 0x13, 0x3A, 0x0A, 0x13, 0x3B, 0x03, 0x13, 0x5B, 0x01, 0x13, 0x3B, 0x87, 0x13, 0x5A, 0x0B, 0x5B, 0x13, 0x3B, 0x14, 0x3A, 0x14, 0x7B, 0x13, 0x5B, 0x13, 0x5A, 0x13, 0x3B, 0x11, 0x13, 0x5A, 0x07, 0x13, 0x5B, 0x82, 0x13, 0x5A, 0x13, 0xBB, 0x14, 0xDB, 0x1B, 0x13, 0x5B, 0x86, 0x13, 0x5A, 0x13, 0x5B, 0x13, 0x3B, 0x14, 0xFB, 0x13, 0x5A, 0x13, 0x5B, 0x13, 0x5A, 0x0F, 0x13, 0x5B, 0x07, 0x13, 0x5A, 0x82, 0x13, 0x3A, 0x13, 0x5B, 0x13, 0x5A, 0x01, 0x13, 0x5B, 0x82, 0x14, 0x9B, 0x13, 0xFB, 0x13, 0x3A, 0x01, 0x13, 0x5B, 0x02, 0x13, 0x5A, 0x02, 0x13, 0x5B, 0x0F, 0x13, 0x3B, 0x86, 0x13, 0x3A, 0x13, 0x3B, 0x13, 0x3A, 0x13, 0x5A, 0x13, 0x3A, 0x14, 0x3B, 0x14, 0x7B, 0x03, 0x13, 0x3A, 0x80, 0x13, 0x3B, 0x01, 0x13, 0x3A, 0x80, 0x13, 0x3B, 0x02, 0x13, 0x3A, 0x80, 0x13, 0x5B, 0x01, 0x13, 0x3B, 0x80, 0x1B, 0x3B, 0x01, 0x1B, 0x5B, 0x81, 0x1B, 0x3B, 0x1B, 0x5B, 0x03, 0x23, 0x5B, 0x01, 0x2B, 0x5B, 0x01, 0x2B, 0x7B, 0x82, 0x33, 0x5B, 0x72, 0x35, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x72, 0xD5, 0x01, + 0x99, 0x32, 0x04, 0x99, 0x31, 0x80, 0x71, 0xB4, 0x01, 0x1B, 0x3B, 0x82, 0x13, 0x3A, 0x13, 0x3B, 0x13, 0x3A, 0x03, 0x13, 0x1A, 0x02, 0x0B, 0x1A, 0x86, 0x0B, 0x3A, 0x0A, 0xFA, 0x0B, 0x1A, 0x0A, 0xFA, 0x0B, 0xDA, 0x0C, 0xBB, 0x0B, 0xDA, 0x0B, 0x0B, 0x1A, 0x05, 0x02, 0xD9, 0x89, 0x02, 0xF9, 0x02, 0xD9, 0x02, 0xDA, 0x0A, 0xDA, 0x0A, 0xFA, 0x0B, 0xFA, 0x0C, 0x5B, 0x0B, 0xFA, 0x0A, 0xD9, 0x02, 0xFA, 0x01, 0x02, 0xF9, 0x85, 0x0A, 0xF9, 0x02, 0xF9, 0x0A, 0xF9, 0x02, 0xD9, 0x02, 0xF9, 0x0A, 0xF9, 0x0F, 0x0A, 0xFA, 0x80, 0x0A, 0xF9, 0x02, 0x0A, 0xFA, 0x85, 0x0C, 0x1A, 0x0C, 0x7B, 0x0B, 0x5A, 0x0A, 0xFA, 0x0A, 0xF9, 0x0B, 0x1A, 0x02, 0x0A, 0xFA, 0x80, 0x0B, 0x1A, 0x01, 0x0A, 0xFA, 0x80, 0x0B, 0x1A, 0x07, 0x0A, 0xFA, 0x02, 0x0B, 0x1A, 0x81, 0x03, 0x1A, 0x0A, 0xFA, 0x01, 0x0B, 0x1A, 0x80, 0x0A, 0xFA, 0x02, 0x0B, 0x1A, 0x84, 0x0A, 0xFA, 0x0C, 0x3A, 0x0C, 0x5A, 0x0B, 0x1A, 0x0A, 0xFA, 0x1C, 0x0B, 0x1A, 0x81, 0x0C, 0x5B, 0x0C, 0x1A, 0x1D, 0x0B, 0x1A, 0x83, 0x0B, 0x3A, 0x0C, 0x7B, 0x0B, 0x7A, 0x0B, 0x3A, 0x1D, 0x0B, 0x1A, 0x82, 0x0C, 0xBB, 0x0B, 0x1A, 0x0B, 0x3A, 0x1D, 0x0B, 0x1A, 0x81, 0x0B, 0x7A, 0x0C, 0xBB, 0x1E, 0x0B, 0x1A, 0x81, 0x0B, 0xDA, 0x0C, 0x7B, 0x0B, 0x0B, 0x1A, 0x04, 0x13, 0x1A, 0x80, 0x1B, 0x1A, 0x03, 0x1B, 0x3A, 0x01, 0x23, 0x3A, 0x83, 0x23, 0x3B, 0x2B, 0x3B, 0x2B, 0x5B, 0x3A, 0xD9, 0x02, 0x99, 0x31, 0x80, 0x99, 0x12, 0x04, 0x99, 0x31, 0x80, 0x99, 0x11, 0x05, 0x99, 0x31, 0x81, 0x89, 0x93, 0x1B, 0x1A, 0x01, 0x13, 0x1A, + 0x80, 0x12, 0xFA, 0x0B, 0x0A, 0xFA, 0x89, 0x02, 0xFA, 0x0A, 0xFA, 0x03, 0x5A, 0x04, 0x5A, 0x0C, 0x3A, 0x0A, 0xFA, 0x02, 0xDA, 0x0A, 0xFA, 0x0A, 0xF9, 0x02, 0xF9, 0x02, 0x0A, 0xFA, 0x01, 0x02, 0xD9, 0x03, 0x01, 0x58, 0x80, 0x01, 0x38, 0x02, 0x01, 0x58, 0x84, 0x01, 0x38, 0x02, 0x38, 0x03, 0xB9, 0x03, 0xDA, 0x02, 0x59, 0x17, 0x01, 0x58, 0x81, 0x01, 0x38, 0x01, 0x78, 0x01, 0x01, 0x58, 0x85, 0x01, 0x59, 0x01, 0xB9, 0x03, 0x7A, 0x0B, 0xDA, 0x02, 0x18, 0x09, 0x58, 0x01, 0x01, 0x59, 0x80, 0x09, 0x58, 0x03, 0x01, 0x58, 0x85, 0x09, 0x58, 0x09, 0x59, 0x01, 0x58, 0x01, 0x59, 0x01, 0x79, 0x01, 0x58, 0x03, 0x01, 0x59, 0x03, 0x01, 0x58, 0x8F, 0x09, 0x79, 0x01, 0x79, 0x09, 0x58, 0x09, 0x79, 0x01, 0x59, 0x01, 0x78, 0x01, 0x59, 0x09, 0x58, 0x03, 0x3A, 0x04, 0x1A, 0x01, 0xF9, 0x09, 0x59, 0x01, 0x79, 0x09, 0x58, 0x09, 0x59, 0x01, 0x58, 0x03, 0x01, 0x59, 0x03, 0x09, 0x79, 0x07, 0x01, 0x79, 0x01, 0x09, 0x79, 0x01, 0x09, 0x59, 0x04, 0x09, 0x79, 0x83, 0x0A, 0x79, 0x04, 0x3A, 0x01, 0x99, 0x09, 0x59, 0x01, 0x01, 0x79, 0x10, 0x09, 0x79, 0x07, 0x01, 0x79, 0x85, 0x09, 0x79, 0x01, 0x79, 0x09, 0xB9, 0x0C, 0x3B, 0x01, 0x79, 0x09, 0x79, 0x01, 0x01, 0x79, 0x18, 0x09, 0x79, 0x84, 0x01, 0x79, 0x09, 0x79, 0x01, 0x79, 0x0C, 0x7A, 0x09, 0x79, 0x01, 0x01, 0x79, 0x0F, 0x09, 0x79, 0x09, 0x01, 0x79, 0x03, 0x09, 0x79, 0x81, 0x0B, 0xFA, 0x02, 0x59, 0x04, 0x09, 0x79, 0x80, 0x09, 0x59, 0x11, 0x09, 0x79, 0x8F, 0x01, 0x79, 0x09, 0x58, 0x09, 0x79, 0x01, 0x78, 0x09, + 0x58, 0x01, 0x59, 0x09, 0x99, 0x0B, 0xDA, 0x02, 0xD9, 0x01, 0x59, 0x09, 0x59, 0x01, 0x59, 0x09, 0x79, 0x09, 0x59, 0x09, 0x79, 0x09, 0x59, 0x07, 0x09, 0x79, 0x04, 0x11, 0x79, 0x01, 0x19, 0x99, 0x87, 0x19, 0x9A, 0x19, 0x99, 0x21, 0x99, 0x21, 0x9A, 0x21, 0xBA, 0x71, 0x54, 0x99, 0x31, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x03, 0x99, 0x31, 0x80, 0x99, 0x11, 0x04, 0x99, 0x31, 0x02, 0x11, 0x79, 0x01, 0x09, 0x79, 0x03, 0x09, 0x58, 0x02, 0x01, 0x58, 0x80, 0x09, 0x58, 0x03, 0x01, 0x58, 0x82, 0x01, 0x59, 0x01, 0x58, 0x01, 0xD8, 0x01, 0x03, 0x99, 0x80, 0x01, 0xD9, 0x01, 0x01, 0x58, 0x01, 0x01, 0x38, 0x03, 0x01, 0x58, 0x04, 0x01, 0x37, 0x85, 0x01, 0x38, 0x01, 0x37, 0x01, 0xD8, 0x03, 0x39, 0x03, 0x99, 0x02, 0x38, 0x01, 0x01, 0x37, 0x01, 0x01, 0x38, 0x01, 0x01, 0x37, 0x04, 0x01, 0x38, 0x01, 0x01, 0x37, 0x01, 0x01, 0x38, 0x80, 0x01, 0x37, 0x0B, 0x01, 0x38, 0x86, 0x01, 0x57, 0x01, 0x38, 0x02, 0x78, 0x03, 0xD9, 0x02, 0xB9, 0x01, 0x78, 0x01, 0x58, 0x01, 0x01, 0x38, 0x81, 0x01, 0x58, 0x01, 0x38, 0x01, 0x01, 0x37, 0x04, 0x01, 0x38, 0x81, 0x01, 0x37, 0x01, 0x58, 0x05, 0x01, 0x38, 0x02, 0x01, 0x58, 0x01, 0x01, 0x38, 0x80, 0x09, 0x38, 0x02, 0x01, 0x58, 0x83, 0x01, 0x78, 0x03, 0x39, 0x03, 0x99, 0x01, 0x78, 0x1D, 0x01, 0x58, 0x82, 0x01, 0xD9, 0x03, 0xF9, 0x01, 0xF9, 0x1E, 0x01, 0x58, 0x81, 0x02, 0xD9, 0x03, 0x19, 0x02, 0x01, 0x58, 0x80, 0x01, 0x59, 0x17, 0x01, 0x58, 0x80, 0x09, 0x59, 0x01, 0x01, 0x58, 0x82, 0x01, 0x59, 0x04, 0x1A, + 0x09, 0x59, 0x1F, 0x01, 0x58, 0x81, 0x02, 0xB9, 0x03, 0x19, 0x01, 0x01, 0x58, 0x01, 0x01, 0x38, 0x18, 0x01, 0x58, 0x84, 0x01, 0x38, 0x01, 0x58, 0x01, 0xD8, 0x03, 0xF9, 0x01, 0xF8, 0x01, 0x01, 0x38, 0x07, 0x01, 0x58, 0x04, 0x09, 0x58, 0x02, 0x11, 0x58, 0x81, 0x11, 0x78, 0x11, 0x79, 0x03, 0x19, 0x79, 0x82, 0x19, 0x99, 0x21, 0x79, 0x31, 0x78, 0x04, 0x99, 0x31, 0x82, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x07, 0x99, 0x31, 0x82, 0x31, 0x57, 0x09, 0x58, 0x11, 0x58, 0x01, 0x09, 0x58, 0x03, 0x09, 0x38, 0x04, 0x01, 0x38, 0x01, 0x01, 0x37, 0x04, 0x01, 0x38, 0x84, 0x02, 0x98, 0x03, 0xF9, 0x02, 0x98, 0x01, 0x37, 0x01, 0x38, 0x04, 0x01, 0x37, 0x04, 0x01, 0x17, 0x83, 0x01, 0xD7, 0x03, 0x18, 0x03, 0x79, 0x02, 0x38, 0x0A, 0x01, 0x17, 0x80, 0x01, 0x37, 0x05, 0x01, 0x17, 0x80, 0x01, 0x37, 0x07, 0x01, 0x17, 0x80, 0x01, 0x37, 0x01, 0x01, 0x17, 0x89, 0x01, 0x77, 0x03, 0x18, 0x03, 0x79, 0x01, 0xD7, 0x01, 0x37, 0x01, 0x17, 0x01, 0x37, 0x01, 0x17, 0x01, 0x37, 0x01, 0x36, 0x01, 0x01, 0x17, 0x01, 0x01, 0x37, 0x01, 0x01, 0x17, 0x02, 0x01, 0x37, 0x80, 0x01, 0x17, 0x02, 0x01, 0x37, 0x02, 0x01, 0x17, 0x04, 0x01, 0x37, 0x8B, 0x01, 0x38, 0x01, 0x37, 0x01, 0x17, 0x01, 0x57, 0x03, 0x59, 0x02, 0xF8, 0x01, 0x57, 0x01, 0x17, 0x01, 0x37, 0x01, 0x17, 0x01, 0x37, 0x01, 0x17, 0x02, 0x01, 0x37, 0x0E, 0x01, 0x38, 0x06, 0x01, 0x37, 0x85, 0x01, 0x58, 0x03, 0x59, 0x02, 0x78, 0x01, 0x37, 0x01, 0x38, 0x01, 0x37, 0x01, 0x01, 0x38, 0x80, 0x01, 0x37, 0x17, 0x01, 0x38, + 0x84, 0x01, 0x37, 0x01, 0x38, 0x03, 0xB9, 0x01, 0xB8, 0x01, 0x37, 0x01, 0x01, 0x38, 0x80, 0x01, 0x37, 0x17, 0x01, 0x38, 0x02, 0x01, 0x37, 0x84, 0x01, 0x38, 0x03, 0xF9, 0x01, 0x37, 0x01, 0x38, 0x01, 0x37, 0x18, 0x01, 0x38, 0x82, 0x01, 0x37, 0x01, 0x38, 0x01, 0x18, 0x01, 0x01, 0x38, 0x82, 0x01, 0x78, 0x03, 0xF9, 0x01, 0x58, 0x01, 0x01, 0x37, 0x14, 0x01, 0x38, 0x02, 0x01, 0x37, 0x01, 0x01, 0x38, 0x01, 0x01, 0x37, 0x89, 0x01, 0x18, 0x02, 0x38, 0x03, 0xB9, 0x01, 0x77, 0x01, 0x37, 0x01, 0x38, 0x01, 0x37, 0x01, 0x17, 0x01, 0x37, 0x01, 0x38, 0x03, 0x01, 0x37, 0x80, 0x09, 0x37, 0x04, 0x09, 0x38, 0x80, 0x09, 0x58, 0x04, 0x11, 0x58, 0x01, 0x19, 0x58, 0x82, 0x19, 0x59, 0x19, 0x78, 0x69, 0x34, 0x01, 0x99, 0x31, 0x80, 0x99, 0x12, 0x04, 0x99, 0x31, 0x82, 0x99, 0x12, 0x99, 0x31, 0x99, 0x11, 0x02, 0x99, 0x31, 0x83, 0x99, 0x32, 0x41, 0x35, 0x09, 0x38, 0x09, 0x57, 0x03, 0x09, 0x37, 0x08, 0x01, 0x17, 0x01, 0x01, 0x37, 0x03, 0x01, 0x17, 0x83, 0x01, 0x97, 0x03, 0x18, 0x03, 0x38, 0x01, 0xB7, 0x04, 0x01, 0x17, 0x01, 0x02, 0xD8, 0x01, 0x02, 0xD7, 0x83, 0x02, 0xF7, 0x03, 0x58, 0x03, 0x78, 0x02, 0xF7, 0x02, 0x02, 0xD8, 0x05, 0x02, 0xD7, 0x0D, 0x02, 0xD8, 0x04, 0x02, 0xF8, 0x80, 0x02, 0xD7, 0x01, 0x02, 0xF8, 0x83, 0x03, 0x98, 0x03, 0x78, 0x02, 0xF8, 0x02, 0xD8, 0x1D, 0x02, 0xF8, 0x81, 0x03, 0x78, 0x03, 0x98, 0x18, 0x02, 0xF8, 0x83, 0x03, 0x18, 0x02, 0xF8, 0x03, 0x18, 0x02, 0xF7, 0x01, 0x02, 0xF8, 0x83, 0x03, 0x18, 0x03, 0x58, 0x03, 0x99, 0x03, + 0x18, 0x01, 0x02, 0xF8, 0x01, 0x03, 0x18, 0x81, 0x02, 0xF8, 0x03, 0x18, 0x07, 0x02, 0xF8, 0x10, 0x03, 0x18, 0x81, 0x03, 0x38, 0x03, 0xB8, 0x01, 0x03, 0x18, 0x80, 0x02, 0xF8, 0x1D, 0x03, 0x18, 0x80, 0x03, 0xB8, 0x1C, 0x03, 0x18, 0x80, 0x02, 0xF8, 0x01, 0x03, 0x18, 0x83, 0x02, 0xF8, 0x03, 0x18, 0x03, 0x78, 0x03, 0x38, 0x01, 0x02, 0xF8, 0x82, 0x03, 0x18, 0x02, 0xF8, 0x03, 0x18, 0x11, 0x02, 0xF8, 0x01, 0x03, 0x18, 0x06, 0x02, 0xF8, 0x81, 0x03, 0x78, 0x03, 0x38, 0x0C, 0x02, 0xF8, 0x03, 0x0A, 0xF8, 0x01, 0x0B, 0x18, 0x80, 0x13, 0x18, 0x04, 0x13, 0x19, 0x81, 0x1B, 0x18, 0x2A, 0xF8, 0x03, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x84, 0x99, 0x32, 0x99, 0x31, 0x99, 0x11, 0x99, 0x31, 0x99, 0x32, 0x02, 0x99, 0x31, 0x80, 0x52, 0x15, 0x01, 0x0A, 0xF8, 0x03, 0x02, 0xF8, 0x0D, 0x02, 0xD8, 0x80, 0x02, 0xD7, 0x01, 0x02, 0xD8, 0x01, 0x03, 0x78, 0x81, 0x02, 0xD7, 0x02, 0xD8, 0x01, 0x02, 0xD7, 0x87, 0x02, 0xD8, 0x01, 0x76, 0x01, 0xB6, 0x02, 0xF8, 0x03, 0x17, 0x02, 0x17, 0x01, 0x96, 0x01, 0x76, 0x03, 0x01, 0x96, 0x80, 0x01, 0x76, 0x10, 0x01, 0x96, 0x80, 0x01, 0x76, 0x05, 0x01, 0x96, 0x84, 0x01, 0xF7, 0x03, 0x37, 0x02, 0xD7, 0x01, 0xB6, 0x01, 0x97, 0x01, 0x01, 0x96, 0x80, 0x01, 0x76, 0x11, 0x01, 0x96, 0x80, 0x01, 0x97, 0x07, 0x01, 0x96, 0x82, 0x02, 0x37, 0x03, 0x58, 0x02, 0x17, 0x09, 0x01, 0x96, 0x0F, 0x01, 0x97, 0x01, 0x01, 0x96, 0x01, 0x01, 0x97, 0x01, 0x01, 0x96, 0x83, 0x02, 0x77, 0x03, 0x18, 0x01, 0xB6, 0x01, 0x96, 0x15, 0x01, + 0x97, 0x80, 0x01, 0xB7, 0x06, 0x01, 0x97, 0x86, 0x01, 0xB6, 0x02, 0xF7, 0x02, 0x57, 0x01, 0x97, 0x01, 0xB6, 0x01, 0xB7, 0x01, 0xB6, 0x19, 0x01, 0x97, 0x84, 0x01, 0xB7, 0x01, 0xB6, 0x01, 0xB7, 0x03, 0x78, 0x01, 0xB7, 0x1F, 0x01, 0x97, 0x82, 0x01, 0xB6, 0x01, 0xF7, 0x03, 0x58, 0x01, 0x01, 0x96, 0x84, 0x01, 0xB6, 0x01, 0x96, 0x01, 0xB6, 0x01, 0x97, 0x01, 0x96, 0x15, 0x01, 0x97, 0x01, 0x01, 0x96, 0x01, 0x01, 0x97, 0x01, 0x02, 0xF7, 0x03, 0x01, 0x96, 0x82, 0x01, 0x97, 0x01, 0x96, 0x01, 0x97, 0x01, 0x01, 0xB6, 0x02, 0x01, 0x96, 0x02, 0x01, 0x97, 0x81, 0x09, 0xB7, 0x09, 0x97, 0x02, 0x09, 0xB7, 0x01, 0x11, 0xB7, 0x80, 0x11, 0xD7, 0x02, 0x11, 0xB7, 0x82, 0x71, 0x53, 0x99, 0x31, 0x99, 0x11, 0x0B, 0x99, 0x31, 0x83, 0x61, 0x74, 0x09, 0xB6, 0x01, 0x96, 0x01, 0x97, 0x0E, 0x01, 0x96, 0x80, 0x01, 0x76, 0x03, 0x01, 0x96, 0x84, 0x01, 0x77, 0x01, 0x96, 0x02, 0xB7, 0x03, 0x37, 0x02, 0x16, 0x01, 0x01, 0x96, 0x83, 0x02, 0x36, 0x03, 0x17, 0x02, 0x56, 0x00, 0xF4, 0x17, 0x00, 0xD5, 0x01, 0x00, 0xF5, 0x81, 0x00, 0xD5, 0x00, 0xF5, 0x01, 0x00, 0xD5, 0x84, 0x00, 0xF5, 0x01, 0xF6, 0x03, 0x17, 0x01, 0xF6, 0x00, 0xF5, 0x03, 0x00, 0xD5, 0x80, 0x00, 0xF5, 0x10, 0x00, 0xD5, 0x01, 0x00, 0xF5, 0x03, 0x00, 0xD5, 0x85, 0x00, 0xF5, 0x00, 0xD5, 0x00, 0xF5, 0x01, 0xB6, 0x03, 0x37, 0x01, 0xB6, 0x1F, 0x00, 0xF5, 0x82, 0x01, 0x55, 0x03, 0x37, 0x01, 0x56, 0x01, 0x00, 0xD5, 0x02, 0x00, 0xF6, 0x80, 0x00, 0xF5, 0x01, 0x00, 0xD6, 0x07, 0x00, 0xF6, 0x07, 0x00, 0xF5, + 0x81, 0x00, 0xF6, 0x00, 0xD5, 0x01, 0x00, 0xF6, 0x02, 0x00, 0xF5, 0x88, 0x00, 0xF6, 0x01, 0x15, 0x03, 0x38, 0x01, 0x15, 0x00, 0xF6, 0x00, 0xF5, 0x00, 0xF6, 0x00, 0xF5, 0x00, 0xD6, 0x17, 0x00, 0xF5, 0x85, 0x00, 0xD5, 0x00, 0xF6, 0x00, 0xD5, 0x00, 0xF5, 0x03, 0x57, 0x00, 0xF5, 0x01, 0x00, 0xF6, 0x17, 0x00, 0xF5, 0x81, 0x00, 0xF6, 0x00, 0xF5, 0x01, 0x00, 0xD5, 0x01, 0x00, 0xD6, 0x86, 0x00, 0xD5, 0x00, 0xF5, 0x02, 0xF7, 0x01, 0x76, 0x00, 0xF5, 0x00, 0xD5, 0x00, 0xF5, 0x01, 0x00, 0xF6, 0x17, 0x00, 0xF5, 0x88, 0x00, 0xD5, 0x00, 0xF5, 0x00, 0xD5, 0x01, 0x16, 0x02, 0xF7, 0x01, 0xD6, 0x00, 0xD6, 0x00, 0xD5, 0x00, 0xF5, 0x04, 0x00, 0xD5, 0x80, 0x00, 0xF5, 0x01, 0x00, 0xD5, 0x04, 0x00, 0xF5, 0x03, 0x08, 0xF6, 0x01, 0x09, 0x16, 0x83, 0x10, 0xF6, 0x11, 0x17, 0x11, 0x16, 0x31, 0x35, 0x03, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x81, 0x99, 0x11, 0x99, 0x12, 0x03, 0x99, 0x31, 0x82, 0x71, 0x13, 0x08, 0xF5, 0x08, 0xF6, 0x03, 0x00, 0xF5, 0x0F, 0x00, 0xD5, 0x80, 0x00, 0xD4, 0x02, 0x00, 0xD5, 0x87, 0x01, 0xD6, 0x02, 0xF7, 0x02, 0x36, 0x01, 0x14, 0x01, 0xF4, 0x01, 0x13, 0x00, 0xB3, 0x00, 0xD3, 0x06, 0x00, 0xB3, 0x80, 0x00, 0xD3, 0x08, 0x00, 0xB3, 0x83, 0x00, 0xD3, 0x00, 0xB3, 0x00, 0xD3, 0x00, 0xD4, 0x01, 0x00, 0xB3, 0x80, 0x00, 0xD4, 0x01, 0x00, 0xB3, 0x88, 0x00, 0xD4, 0x00, 0xB3, 0x00, 0xD3, 0x01, 0x33, 0x02, 0x75, 0x02, 0x55, 0x01, 0x34, 0x00, 0xD3, 0x00, 0xB3, 0x01, 0x00, 0xD3, 0x01, 0x00, 0xD4, 0x80, 0x00, 0xB4, 0x11, 0x00, + 0xD4, 0x82, 0x00, 0xB4, 0x00, 0xD4, 0x00, 0xB4, 0x01, 0x00, 0xD4, 0x01, 0x00, 0xB4, 0x84, 0x01, 0xD4, 0x02, 0xB5, 0x01, 0x34, 0x00, 0xD4, 0x00, 0xB4, 0x1D, 0x00, 0xD4, 0x82, 0x00, 0xF4, 0x02, 0xB5, 0x01, 0xB5, 0x20, 0x00, 0xD4, 0x83, 0x01, 0xB5, 0x02, 0x55, 0x00, 0xD5, 0x00, 0xB4, 0x1F, 0x00, 0xD4, 0x80, 0x02, 0xF6, 0x22, 0x00, 0xD4, 0x81, 0x01, 0xF5, 0x02, 0x35, 0x16, 0x00, 0xD4, 0x06, 0x00, 0xB4, 0x01, 0x00, 0xD4, 0x84, 0x00, 0xB4, 0x01, 0x54, 0x02, 0xB5, 0x01, 0x34, 0x00, 0xD4, 0x01, 0x00, 0xB4, 0x02, 0x00, 0xD4, 0x80, 0x00, 0xB4, 0x08, 0x00, 0xD4, 0x02, 0x08, 0xD4, 0x02, 0x08, 0xF4, 0x83, 0x08, 0xF5, 0x10, 0xF4, 0x10, 0xD5, 0x79, 0x12, 0x08, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x81, 0x32, 0x02, 0x00, 0xD4, 0x04, 0x00, 0xD3, 0x81, 0x00, 0xB3, 0x00, 0xD3, 0x0D, 0x00, 0xB3, 0x81, 0x00, 0xB2, 0x00, 0xB3, 0x01, 0x00, 0xD3, 0x82, 0x02, 0x14, 0x02, 0x95, 0x00, 0xB1, 0x02, 0x00, 0x91, 0x81, 0x00, 0xB1, 0x00, 0x91, 0x01, 0x00, 0xB1, 0x80, 0x00, 0x91, 0x13, 0x00, 0xB1, 0x01, 0x00, 0x91, 0x85, 0x00, 0xD2, 0x01, 0xB2, 0x02, 0x73, 0x01, 0x72, 0x00, 0xB1, 0x00, 0xB2, 0x01, 0x00, 0xB1, 0x80, 0x00, 0xB2, 0x01, 0x00, 0xB1, 0x81, 0x00, 0xB2, 0x00, 0xB1, 0x0F, 0x00, 0xB2, 0x01, 0x00, 0xB1, 0x01, 0x00, 0xB2, 0x80, 0x00, 0xB1, 0x02, 0x00, 0xB2, 0x82, 0x01, 0xD3, 0x02, 0x53, 0x01, 0x12, 0x20, 0x00, 0xB2, 0x82, 0x02, 0x13, 0x01, 0xD3, 0x00, 0x92, 0x20, 0x00, 0xB2, 0x81, 0x02, 0x53, 0x01, 0x53, 0x21, 0x00, 0xB2, 0x80, + 0x02, 0x94, 0x22, 0x00, 0xB2, 0x82, 0x00, 0xF2, 0x02, 0x93, 0x00, 0xD2, 0x1E, 0x00, 0xB2, 0x83, 0x00, 0xB1, 0x00, 0xB2, 0x01, 0x72, 0x02, 0x53, 0x01, 0x00, 0xB1, 0x04, 0x00, 0xB2, 0x02, 0x00, 0xB1, 0x06, 0x00, 0xB2, 0x02, 0x08, 0xB2, 0x86, 0x08, 0xD2, 0x08, 0xB2, 0x08, 0xD2, 0x08, 0xD3, 0x10, 0xD3, 0x40, 0xF2, 0x99, 0x11, 0x06, 0x99, 0x31, 0x80, 0x99, 0x11, 0x03, 0x99, 0x31, 0x82, 0x99, 0x11, 0x00, 0xD2, 0x00, 0xB2, 0x10, 0x00, 0xB1, 0x80, 0x00, 0x91, 0x07, 0x00, 0xB1, 0x83, 0x00, 0x91, 0x01, 0x31, 0x00, 0x90, 0x00, 0x70, 0x1B, 0x00, 0x90, 0x83, 0x01, 0x11, 0x02, 0x12, 0x01, 0xD1, 0x00, 0xD0, 0x1F, 0x00, 0x90, 0x83, 0x00, 0xB0, 0x01, 0xD2, 0x01, 0xF2, 0x00, 0xB0, 0x1E, 0x00, 0x90, 0x01, 0x00, 0xB0, 0x82, 0x01, 0x71, 0x02, 0x12, 0x00, 0xB0, 0x05, 0x00, 0x90, 0x01, 0x00, 0xB0, 0x01, 0x00, 0x90, 0x0F, 0x00, 0xB0, 0x02, 0x00, 0x90, 0x01, 0x00, 0xB0, 0x01, 0x00, 0x90, 0x84, 0x00, 0xF1, 0x02, 0x52, 0x00, 0xB0, 0x00, 0x90, 0x00, 0xB0, 0x01, 0x00, 0x90, 0x01, 0x00, 0xB0, 0x17, 0x00, 0x90, 0x01, 0x00, 0xB0, 0x01, 0x00, 0x90, 0x83, 0x02, 0x72, 0x00, 0xB0, 0x00, 0x90, 0x00, 0xB0, 0x18, 0x00, 0x90, 0x03, 0x00, 0xB0, 0x03, 0x00, 0x90, 0x82, 0x01, 0xD1, 0x01, 0x71, 0x00, 0x91, 0x01, 0x00, 0xB0, 0x1E, 0x00, 0x90, 0x01, 0x01, 0xD1, 0x81, 0x00, 0x90, 0x00, 0xB0, 0x02, 0x00, 0x90, 0x02, 0x00, 0xB0, 0x05, 0x00, 0x90, 0x03, 0x00, 0x91, 0x06, 0x08, 0xB1, 0x80, 0x89, 0x12, 0x04, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x01, 0x99, + 0x11, 0x82, 0x99, 0x12, 0x99, 0x31, 0x00, 0x91, 0x27, 0x00, 0x90, 0x80, 0x00, 0x8F, 0x0F, 0x00, 0x90, 0x83, 0x00, 0xB0, 0x01, 0x91, 0x02, 0x32, 0x01, 0x51, 0x09, 0x00, 0x90, 0x80, 0x00, 0xB0, 0x15, 0x00, 0x90, 0x83, 0x00, 0xB0, 0x01, 0xF2, 0x01, 0xD1, 0x00, 0xB0, 0x20, 0x00, 0x90, 0x82, 0x01, 0x10, 0x02, 0x52, 0x00, 0xD0, 0x21, 0x00, 0x90, 0x81, 0x01, 0xB1, 0x01, 0x91, 0x1F, 0x00, 0x90, 0x80, 0x00, 0xB0, 0x01, 0x00, 0x90, 0x80, 0x02, 0x52, 0x23, 0x00, 0x90, 0x81, 0x01, 0x51, 0x02, 0x32, 0x21, 0x00, 0x90, 0x83, 0x00, 0xB0, 0x01, 0xF1, 0x01, 0x71, 0x00, 0xB0, 0x0E, 0x00, 0x90, 0x80, 0x00, 0x91, 0x01, 0x00, 0xB0, 0x82, 0x00, 0xB1, 0x08, 0xB1, 0x08, 0xB0, 0x01, 0x08, 0xB1, 0x80, 0x50, 0xF1, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x03, 0x99, 0x31, 0x85, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x99, 0x31, 0x1A, 0x00, 0x90, 0x80, 0x00, 0x70, 0x01, 0x00, 0x90, 0x02, 0x00, 0x8F, 0x02, 0x00, 0x90, 0x04, 0x00, 0x8F, 0x08, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x90, 0x03, 0x00, 0x8F, 0x86, 0x00, 0xD0, 0x02, 0x12, 0x01, 0xD2, 0x00, 0xD0, 0x00, 0x90, 0x00, 0x8F, 0x00, 0x90, 0x06, 0x00, 0x8F, 0x80, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x10, 0x00, 0x90, 0x80, 0x00, 0x8F, 0x01, 0x00, 0x90, 0x82, 0x00, 0xF0, 0x02, 0x32, 0x01, 0xB1, 0x03, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x1C, 0x00, 0x90, 0x81, 0x02, 0x32, 0x01, 0x30, 0x21, 0x00, 0x90, 0x82, 0x00, 0xB0, 0x02, 0x32, 0x00, 0xD0, 0x04, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x1B, 0x00, + 0x90, 0x80, 0x02, 0x52, 0x24, 0x00, 0x90, 0x83, 0x02, 0x32, 0x00, 0xF0, 0x00, 0x90, 0x00, 0x70, 0x1F, 0x00, 0x90, 0x83, 0x00, 0xF0, 0x02, 0x32, 0x00, 0xF1, 0x00, 0xB0, 0x01, 0x00, 0x8F, 0x81, 0x00, 0x90, 0x00, 0x8F, 0x0C, 0x00, 0x90, 0x01, 0x00, 0xB0, 0x84, 0x08, 0x90, 0x08, 0xB0, 0x08, 0x91, 0x10, 0xB0, 0x99, 0x31, 0x01, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x05, 0x99, 0x31, 0x11, 0x00, 0x90, 0x80, 0x00, 0x8F, 0x05, 0x00, 0x90, 0x14, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x03, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x03, 0x00, 0x8F, 0x84, 0x01, 0x71, 0x02, 0x32, 0x01, 0x51, 0x00, 0x8F, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x13, 0x00, 0x8F, 0x81, 0x00, 0x70, 0x00, 0x90, 0x03, 0x00, 0x8F, 0x86, 0x00, 0x6F, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0xF0, 0x02, 0x12, 0x01, 0x51, 0x00, 0x6F, 0x10, 0x00, 0x8F, 0x07, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x90, 0x03, 0x00, 0x8F, 0x84, 0x00, 0x70, 0x00, 0x90, 0x01, 0xF1, 0x01, 0xB1, 0x00, 0x70, 0x01, 0x00, 0x8F, 0x19, 0x00, 0x90, 0x02, 0x00, 0x8F, 0x80, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x81, 0x01, 0x30, 0x01, 0xF1, 0x03, 0x00, 0x90, 0x1F, 0x00, 0x8F, 0x80, 0x02, 0x52, 0x1A, 0x00, 0x8F, 0x08, 0x00, 0x90, 0x83, 0x00, 0x8F, 0x01, 0x91, 0x01, 0xB1, 0x00, 0x90, 0x02, 0x00, 0x8F, 0x17, 0x00, 0x90, 0x80, 0x00, 0x8F, 0x01, 0x00, 0x90, 0x87, 0x00, 0x8F, 0x00, 0x90, 0x00, 0x6F, 0x00, 0x8F, 0x01, 0x31, 0x02, 0x32, 0x00, 0xD0, 0x00, 0x90, 0x02, 0x00, 0x8F, 0x01, 0x00, 0x90, 0x01, 0x00, 0x8F, + 0x0E, 0x00, 0x90, 0x80, 0x60, 0xF1, 0x0B, 0x99, 0x31, 0x80, 0x01, 0x50, 0x02, 0x00, 0x90, 0x82, 0x00, 0x6F, 0x00, 0x90, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x70, 0x21, 0x00, 0x8F, 0x05, 0x00, 0x6F, 0x87, 0x00, 0x70, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x8F, 0x01, 0x10, 0x02, 0x32, 0x01, 0xB1, 0x00, 0xAF, 0x04, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x12, 0x00, 0x8F, 0x82, 0x00, 0x6F, 0x00, 0x8F, 0x00, 0x6F, 0x04, 0x00, 0x8F, 0x85, 0x00, 0x6F, 0x01, 0x10, 0x02, 0x52, 0x01, 0x30, 0x00, 0x8F, 0x00, 0x6F, 0x1F, 0x00, 0x8F, 0x82, 0x00, 0x6F, 0x01, 0x70, 0x01, 0xF2, 0x20, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x81, 0x01, 0xD2, 0x01, 0x30, 0x20, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x80, 0x02, 0x52, 0x24, 0x00, 0x8F, 0x82, 0x00, 0xCF, 0x02, 0x32, 0x00, 0xAF, 0x1B, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x02, 0x00, 0x6F, 0x83, 0x00, 0x8F, 0x01, 0x91, 0x02, 0x12, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x08, 0x00, 0x8F, 0x07, 0x00, 0x90, 0x84, 0x00, 0x8F, 0x18, 0xAF, 0x99, 0x11, 0x99, 0x12, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x88, 0xA1, 0x11, 0x99, 0x31, 0xA1, 0x11, 0x29, 0xD2, 0x01, 0xB1, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x8F, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x14, 0x00, 0x8F, 0x0B, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x02, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x03, 0x00, 0x6F, 0x84, 0x00, 0x8F, 0x01, 0xB1, 0x02, 0x32, 0x01, 0x0F, 0x00, 0x8F, 0x03, 0x00, 0x6F, 0x01, + 0x00, 0x8F, 0x13, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x05, 0x00, 0x6F, 0x82, 0x01, 0x50, 0x02, 0x32, 0x00, 0xCF, 0x01, 0x00, 0x6F, 0x80, 0x00, 0x8E, 0x1D, 0x00, 0x6F, 0x86, 0x00, 0x8F, 0x00, 0x6F, 0x01, 0x0F, 0x02, 0x12, 0x00, 0xAF, 0x00, 0x6F, 0x00, 0x8F, 0x1B, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x83, 0x00, 0x8F, 0x00, 0xAF, 0x02, 0x12, 0x00, 0xAF, 0x1F, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x82, 0x02, 0x52, 0x00, 0x6F, 0x00, 0x8F, 0x20, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x81, 0x01, 0xD1, 0x01, 0x30, 0x01, 0x00, 0x8F, 0x1B, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x04, 0x00, 0x6F, 0x82, 0x01, 0xF1, 0x01, 0xB1, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x05, 0x00, 0x6F, 0x0A, 0x00, 0x8F, 0x82, 0x00, 0x6F, 0x00, 0x90, 0x81, 0x11, 0x06, 0x99, 0x31, 0x81, 0x99, 0x12, 0x99, 0x32, 0x01, 0x99, 0x31, 0x83, 0x28, 0xD0, 0x01, 0xF2, 0x01, 0xD1, 0x00, 0x8F, 0x03, 0x00, 0x6F, 0x81, 0x00, 0x6E, 0x00, 0x8F, 0x13, 0x00, 0x6F, 0x13, 0x00, 0x6E, 0x86, 0x00, 0x8E, 0x01, 0x10, 0x02, 0x12, 0x01, 0xB1, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x6E, 0x01, 0x00, 0x6F, 0x81, 0x00, 0x6E, 0x00, 0x8F, 0x02, 0x00, 0x6E, 0x01, 0x00, 0x6F, 0x0F, 0x00, 0x6E, 0x81, 0x00, 0x6F, 0x00, 0x8F, 0x01, 0x00, 0x6E, 0x01, 0x00, 0x6F, 0x84, 0x00, 0x8E, 0x00, 0x6E, 0x01, 0x91, 0x01, 0xF1, 0x00, 0xCF, 0x01, 0x00, 0x6F, 0x82, 0x00, 0x6E, 0x00, 0x8F, 0x00, 0x6E, 0x18, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x6E, 0x89, 0x00, 0x6F, 0x00, 0xCF, + 0x02, 0x12, 0x01, 0x10, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x6E, 0x1D, 0x00, 0x6F, 0x81, 0x01, 0x50, 0x01, 0x91, 0x24, 0x00, 0x6F, 0x80, 0x02, 0x32, 0x25, 0x00, 0x6F, 0x83, 0x01, 0x10, 0x01, 0xF1, 0x00, 0x8F, 0x00, 0x6E, 0x21, 0x00, 0x6F, 0x82, 0x00, 0xAF, 0x02, 0x12, 0x01, 0x10, 0x01, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x08, 0x00, 0x6F, 0x03, 0x00, 0x8F, 0x05, 0x00, 0x6F, 0x80, 0x48, 0xD0, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x07, 0x99, 0x31, 0x89, 0x00, 0x8E, 0x00, 0x8F, 0x01, 0xB1, 0x01, 0xF2, 0x00, 0xAF, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x8F, 0x00, 0x6E, 0x00, 0x8F, 0x26, 0x00, 0x6E, 0x83, 0x00, 0x8E, 0x01, 0xB1, 0x02, 0x12, 0x00, 0xEF, 0x02, 0x00, 0x6E, 0x80, 0x00, 0x6F, 0x1B, 0x00, 0x6E, 0x80, 0x00, 0x6F, 0x01, 0x00, 0x6E, 0x84, 0x00, 0x8E, 0x01, 0xD1, 0x01, 0xF1, 0x00, 0x8F, 0x00, 0x6F, 0x21, 0x00, 0x6E, 0x83, 0x00, 0xAE, 0x01, 0xF1, 0x01, 0x70, 0x00, 0x6F, 0x02, 0x00, 0x6E, 0x80, 0x00, 0x6F, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x6F, 0x1C, 0x00, 0x6E, 0x82, 0x02, 0x11, 0x00, 0xCF, 0x00, 0x8F, 0x23, 0x00, 0x6E, 0x80, 0x02, 0x32, 0x25, 0x00, 0x6E, 0x82, 0x00, 0x8F, 0x02, 0x12, 0x00, 0xCF, 0x23, 0x00, 0x6E, 0x82, 0x00, 0xEF, 0x02, 0x12, 0x00, 0xCF, 0x0A, 0x00, 0x6E, 0x08, 0x00, 0x6F, 0x82, 0x00, 0x6E, 0x10, 0x8F, 0x99, 0x11, 0x09, 0x99, 0x31, 0x85, 0x00, 0x6E, 0x00, 0x6F, 0x00, 0x6E, 0x01, 0x90, 0x02, 0x12, 0x00, 0xCF, 0x29, 0x00, 0x6E, 0x83, 0x01, 0x30, 0x02, 0x12, 0x01, 0x70, 0x00, 0x8E, 0x04, + 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x1C, 0x00, 0x6E, 0x83, 0x00, 0xAF, 0x01, 0xD1, 0x01, 0x90, 0x00, 0x8E, 0x23, 0x00, 0x6E, 0x81, 0x01, 0x90, 0x01, 0xF1, 0x24, 0x00, 0x6E, 0x81, 0x00, 0xEF, 0x02, 0x11, 0x25, 0x00, 0x6E, 0x80, 0x02, 0x32, 0x26, 0x00, 0x6E, 0x81, 0x01, 0x70, 0x01, 0x90, 0x24, 0x00, 0x6E, 0x82, 0x01, 0x50, 0x01, 0xF1, 0x00, 0x8E, 0x14, 0x00, 0x6E, 0x80, 0x68, 0xF0, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x03, 0x00, 0x6E, 0x82, 0x01, 0x0F, 0x02, 0x12, 0x00, 0xEF, 0x26, 0x00, 0x6E, 0x83, 0x00, 0x8E, 0x01, 0xB1, 0x01, 0xF2, 0x00, 0xCF, 0x23, 0x00, 0x6E, 0x82, 0x00, 0xAF, 0x02, 0x12, 0x01, 0x91, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x02, 0x00, 0x6E, 0x81, 0x00, 0x4E, 0x00, 0x8E, 0x1C, 0x00, 0x6E, 0x82, 0x01, 0x0F, 0x02, 0x12, 0x00, 0x8E, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x21, 0x00, 0x6E, 0x81, 0x01, 0x90, 0x01, 0x50, 0x25, 0x00, 0x6E, 0x80, 0x02, 0x32, 0x26, 0x00, 0x6E, 0x82, 0x00, 0x8E, 0x02, 0x11, 0x00, 0x8E, 0x24, 0x00, 0x6E, 0x81, 0x01, 0x90, 0x01, 0xB1, 0x14, 0x00, 0x6E, 0x80, 0x38, 0xB0, 0x06, 0x99, 0x31, 0x83, 0x99, 0x11, 0x99, 0x31, 0x99, 0x12, 0x00, 0x4E, 0x01, 0x00, 0x6E, 0x84, 0x00, 0x4E, 0x00, 0x6E, 0x01, 0x0F, 0x02, 0x12, 0x01, 0x0F, 0x21, 0x00, 0x6E, 0x01, 0x00, 0x4E, 0x83, 0x00, 0x4D, 0x01, 0x30, 0x01, 0xF2, 0x01, 0x50, 0x01, 0x00, 0x6D, 0x04, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x1B, 0x00, 0x6E, 0x86, 0x00, 0x4E, 0x00, 0xEF, 0x02, 0x12, 0x01, 0x0F, + 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x4E, 0x04, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x19, 0x00, 0x6E, 0x01, 0x00, 0x4E, 0x84, 0x00, 0xAF, 0x02, 0x12, 0x00, 0xCF, 0x00, 0x4E, 0x00, 0x6E, 0x01, 0x00, 0x4E, 0x02, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x1A, 0x00, 0x6E, 0x85, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x8E, 0x02, 0x32, 0x00, 0x8E, 0x00, 0x4E, 0x24, 0x00, 0x6E, 0x80, 0x02, 0x32, 0x22, 0x00, 0x6E, 0x82, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x4E, 0x01, 0x00, 0x6E, 0x81, 0x01, 0xD1, 0x01, 0x0F, 0x1D, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x01, 0x00, 0x6E, 0x87, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x8E, 0x01, 0xF1, 0x01, 0x2F, 0x00, 0x4E, 0x0F, 0x00, 0x6E, 0x01, 0x00, 0x4E, 0x82, 0x00, 0x6E, 0x08, 0x6E, 0x99, 0x11, 0x03, 0x99, 0x31, 0x80, 0x99, 0x12, 0x01, 0x99, 0x31, 0x83, 0x99, 0x11, 0x99, 0x31, 0x00, 0x4E, 0x00, 0x6D, 0x03, 0x00, 0x6E, 0x83, 0x00, 0xAE, 0x02, 0x11, 0x01, 0x90, 0x00, 0x4E, 0x13, 0x00, 0x6E, 0x03, 0x00, 0x4D, 0x81, 0x00, 0x6E, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x80, 0x00, 0x4E, 0x01, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x84, 0x00, 0x8E, 0x01, 0xB1, 0x01, 0xD1, 0x00, 0xCE, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x1A, 0x00, 0x6D, 0x82, 0x00, 0x4D, 0x00, 0x6E, 0x00, 0x4D, 0x01, 0x00, 0x6E, 0x85, 0x00, 0x4E, 0x00, 0x6D, 0x01, 0x0F, 0x02, 0x12, 0x00, 0xEF, 0x00, 0x6D, 0x01, 0x00, 0x6E, 0x07, 0x00, 0x6D, 0x07, 0x00, 0x4D, 0x09, 0x00, 0x6E, 0x81, 0x00, 0x4D, 0x00, 0x6D, 0x02, 0x00, 0x6E, 0x85, 0x00, 0x4D, 0x00, 0x6E, 0x00, 0x4D, 0x00, 0x6E, 0x01, + 0xD1, 0x01, 0x50, 0x24, 0x00, 0x6E, 0x82, 0x00, 0x4E, 0x01, 0x30, 0x01, 0x91, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x22, 0x00, 0x6E, 0x82, 0x00, 0x4E, 0x02, 0x32, 0x00, 0x4E, 0x21, 0x00, 0x6E, 0x81, 0x00, 0x4E, 0x00, 0x6E, 0x01, 0x00, 0x4D, 0x82, 0x00, 0x4E, 0x01, 0x0F, 0x01, 0xD1, 0x03, 0x00, 0x6E, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x4E, 0x80, 0x00, 0x4D, 0x1B, 0x00, 0x6E, 0x01, 0x00, 0x6D, 0x82, 0x00, 0xCE, 0x02, 0x12, 0x00, 0xCE, 0x03, 0x00, 0x6E, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x0A, 0x00, 0x6E, 0x82, 0x00, 0x4E, 0x70, 0xF0, 0x99, 0x32, 0x01, 0x99, 0x31, 0x82, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x01, 0x99, 0x31, 0x80, 0x81, 0x10, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x4D, 0x03, 0x00, 0x6D, 0x82, 0x00, 0x8E, 0x01, 0xD1, 0x01, 0x90, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x4E, 0x01, 0x00, 0x6E, 0x82, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x6E, 0x01, 0x00, 0x4D, 0x05, 0x00, 0x6D, 0x0B, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x4D, 0x83, 0x01, 0x50, 0x01, 0xF1, 0x01, 0x50, 0x00, 0x6D, 0x1E, 0x00, 0x4D, 0x82, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x4E, 0x02, 0x00, 0x4D, 0x83, 0x01, 0x50, 0x01, 0xF1, 0x00, 0xAE, 0x00, 0x6D, 0x02, 0x00, 0x4D, 0x18, 0x00, 0x6D, 0x80, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x82, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x4D, 0x02, 0x00, 0x6D, 0x81, 0x01, 0x70, 0x01, 0xB1, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x4D, 0x08, 0x00, 0x6D, 0x17, 0x00, 0x6E, 0x84, 0x00, 0x6D, 0x00, 0x4E, 0x00, 0x6E, 0x01, 0xD1, 0x01, 0x0F, 0x01, 0x00, + 0x6D, 0x20, 0x00, 0x6E, 0x84, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x6E, 0x00, 0x4E, 0x02, 0x12, 0x01, 0x00, 0x4D, 0x21, 0x00, 0x6E, 0x80, 0x00, 0x4D, 0x02, 0x00, 0x6D, 0x84, 0x00, 0x6E, 0x01, 0xF1, 0x00, 0x8E, 0x00, 0x6D, 0x00, 0x6E, 0x01, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x4E, 0x08, 0x00, 0x6E, 0x12, 0x00, 0x6D, 0x84, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x4D, 0x01, 0x0F, 0x01, 0xF1, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x4D, 0x00, 0x6E, 0x02, 0x00, 0x6D, 0x80, 0x00, 0x4D, 0x07, 0x00, 0x6D, 0x80, 0x00, 0x4E, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x4D, 0x40, 0xCF, 0x07, 0x99, 0x31, 0x82, 0x70, 0xF0, 0x00, 0x4D, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x85, 0x00, 0x6D, 0x01, 0x91, 0x01, 0xB1, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x6D, 0x0F, 0x00, 0x4D +}; + +const tImage MarlinLogo320x240x16 = MARLIN_LOGO_CHOSEN(320, 240); + +#endif // HAS_GRAPHICAL_TFT && SHOW_BOOTSCREEN diff --git a/Marlin/src/lcd/tft/images/bootscreen_480x320x16.cpp b/Marlin/src/lcd/tft/images/bootscreen_480x320x16.cpp index ecec2f6e58..cf150e949f 100644 --- a/Marlin/src/lcd/tft/images/bootscreen_480x320x16.cpp +++ b/Marlin/src/lcd/tft/images/bootscreen_480x320x16.cpp @@ -21,13 +21,11 @@ */ #include "../../../inc/MarlinConfigPre.h" + +#if ALL(HAS_GRAPHICAL_TFT, SHOW_BOOTSCREEN) + #include "../tft_image.h" -#if HAS_GRAPHICAL_TFT - -extern const uint16_t marlin_logo_480x320x16[]; -const tImage MarlinLogo480x320x16 = { (void *)marlin_logo_480x320x16, 480, 320, HIGHCOLOR }; - const uint16_t marlin_logo_480x320x16[153600] = { 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x10AE, 0x00F8, 0x00F9, 0x00D6, 0x18AD, 0x188C, 0x188C, 0x18AC, 0x188C, 0x18AC, 0x18AC, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188D, 0x188D, 0x188D, 0x188D, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x011A, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x011A, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x188D, 0x18AD, 0x18AC, 0x18AC, 0x188D, 0x18AD, 0x18AD, 0x18AC, 0x18AD, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x188D, 0x18AC, 0x18AC, 0x00F9, 0x00F9, 0x18AC, 0x18AD, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188C, 0x188C, 0x18AB, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x10AE, 0x00F7, 0x00F9, 0x00F6, 0x188D, 0x18AC, 0x18AC, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x011A, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x011A, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x011A, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x0119, 0x0119, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AD, 0x18AC, 0x18AD, 0x18AD, 0x188D, 0x18AC, 0x18AC, 0x188D, 0x188D, 0x18AC, 0x18AD, 0x18AD, 0x18AD, 0x18AC, 0x18AD, 0x00F9, 0x00F9, 0x18AC, 0x18AD, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x18AC, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188C, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, 0x188B, @@ -351,4 +349,447 @@ const uint16_t marlin_logo_480x320x16[153600] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; -#endif // HAS_GRAPHICAL_TFT +// Saves 202348 bytes +const uint8_t marlin_logo_480x320x16_rle16[104852] = { + 0x28, 0x18, 0x8B, 0x12, 0x18, 0x8C, 0x0F, 0x18, 0xAC, 0x84, 0x10, 0xAE, 0x00, 0xF8, 0x00, 0xF9, 0x00, 0xD6, 0x18, 0xAD, 0x01, 0x18, 0x8C, 0x81, 0x18, 0xAC, 0x18, 0x8C, 0x01, 0x18, 0xAC, 0x80, 0x18, 0x8C, 0x05, 0x18, 0xAC, 0x05, 0x18, 0x8C, 0x07, 0x18, 0xAC, 0x02, 0x18, 0x8C, 0x08, 0x18, 0xAC, 0x03, 0x18, 0x8D, 0x36, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x4E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x11, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x81, 0x18, 0x8D, 0x18, 0xAD, 0x01, 0x18, 0xAC, 0x80, 0x18, 0x8D, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAC, 0x18, 0xAD, 0x18, 0x8C, 0x02, 0x18, 0xAC, 0x80, 0x18, 0x8D, 0x01, 0x18, 0xAC, 0x01, 0x00, 0xF9, 0x81, 0x18, 0xAC, 0x18, 0xAD, 0x04, 0x18, 0xAC, 0x05, 0x18, 0x8C, 0x27, 0x18, 0xAC, 0x12, 0x18, 0x8C, 0x04, 0x18, 0x8B, 0x01, 0x18, 0x8C, 0x80, 0x18, 0xAB, 0x30, 0x18, 0x8B, 0x13, 0x18, 0x8C, 0x18, 0x18, 0xAC, 0x84, 0x10, 0xAE, 0x00, 0xF7, 0x00, 0xF9, 0x00, 0xF6, 0x18, 0x8D, 0x01, 0x18, 0xAC, 0x80, 0x18, 0x8C, 0x03, 0x18, 0xAC, 0x01, 0x18, 0x8C, 0x80, 0x18, 0xAC, 0x06, 0x18, 0x8C, 0x12, 0x18, 0xAC, 0x3C, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x4E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x11, 0x18, 0xAD, + 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x22, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x01, 0x18, 0xAD, 0x80, 0x18, 0x8D, 0x01, 0x18, 0xAC, 0x01, 0x18, 0x8D, 0x80, 0x18, 0xAC, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAC, 0x18, 0xAD, 0x01, 0x00, 0xF9, 0x81, 0x18, 0xAC, 0x18, 0xAD, 0x06, 0x18, 0xAC, 0x03, 0x18, 0x8C, 0x28, 0x18, 0xAC, 0x16, 0x18, 0x8C, 0x31, 0x18, 0x8B, 0x15, 0x18, 0x8C, 0x18, 0x18, 0xAC, 0x81, 0x18, 0x8C, 0x10, 0xAF, 0x01, 0x00, 0xF8, 0x81, 0x00, 0xF7, 0x18, 0xAD, 0x02, 0x18, 0xAC, 0x01, 0x18, 0x8C, 0x83, 0x18, 0x8D, 0x18, 0xAC, 0x18, 0xAD, 0x18, 0xAC, 0x04, 0x18, 0x8C, 0x0E, 0x18, 0xAC, 0x42, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x4E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x11, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x25, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x07, 0x18, 0xAD, 0x81, 0x18, 0xAC, 0x18, 0xAD, 0x01, 0x00, 0xF9, 0x81, 0x18, 0xAC, 0x18, 0xAD, 0x01, 0x18, 0xAC, 0x80, 0x18, 0xAD, 0x05, 0x18, 0xAC, 0x03, 0x18, 0x8C, 0x2D, 0x18, 0xAC, 0x13, 0x18, 0x8C, 0x28, 0x18, 0x8B, 0x12, 0x18, 0x8C, 0x1F, 0x18, 0xAC, 0x80, 0x18, 0x8C, 0x01, 0x18, 0xAC, 0x84, 0x10, 0xAF, 0x00, 0xF7, 0x00, 0xF8, 0x00, 0xF6, 0x18, 0xAD, 0x02, 0x18, 0x8C, 0x04, 0x18, 0xAC, 0x80, 0x18, 0x8C, 0x07, 0x18, 0xAC, 0x4D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x4E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, + 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x11, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x30, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x00, 0xF9, 0x09, 0x18, 0xAD, 0x07, 0x18, 0xAC, 0x02, 0x18, 0x8C, 0x04, 0x18, 0xAC, 0x05, 0x18, 0x8C, 0x20, 0x18, 0xAC, 0x19, 0x18, 0x8C, 0x19, 0x18, 0x8B, 0x13, 0x18, 0x8C, 0x1E, 0x18, 0xAC, 0x04, 0x18, 0x8C, 0x81, 0x18, 0xAC, 0x18, 0x8C, 0x01, 0x18, 0xAC, 0x83, 0x10, 0xAF, 0x00, 0xF8, 0x00, 0xF9, 0x00, 0xD6, 0x01, 0x18, 0xAD, 0x85, 0x18, 0x8C, 0x18, 0xAC, 0x18, 0xAD, 0x18, 0xAC, 0x18, 0xAD, 0x18, 0x8D, 0x56, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x4E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x11, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x25, 0x18, 0xAD, 0x80, 0x20, 0x8D, 0x01, 0x18, 0xAD, 0x80, 0x20, 0x8D, 0x06, 0x18, 0xAD, 0x01, 0x00, 0xF9, 0x11, 0x18, 0xAD, 0x08, 0x18, 0xAC, 0x0C, 0x18, 0x8C, 0x1C, 0x18, 0xAC, 0x15, 0x18, 0x8C, 0x14, 0x18, 0x8B, 0x13, 0x18, 0x8C, 0x1C, 0x18, 0xAC, 0x03, 0x18, 0x8C, 0x07, 0x18, 0xAC, 0x8F, 0x18, 0x8C, 0x18, 0xAC, 0x18, 0x8D, 0x18, 0xAC, 0x18, 0xAD, 0x18, 0xAF, 0x00, 0xF8, 0x00, 0xF9, 0x00, 0xF6, 0x18, 0xAE, 0x18, 0x8D, 0x18, 0xAC, 0x18, 0x8D, 0x18, 0xAC, 0x18, 0xAD, 0x18, 0xAC, 0x56, 0x18, + 0xAD, 0x01, 0x01, 0x19, 0x4E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x11, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x25, 0x18, 0xAD, 0x80, 0x10, 0xD1, 0x01, 0x10, 0xD3, 0x80, 0x10, 0xD1, 0x06, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x00, 0xF9, 0x19, 0x18, 0xAD, 0x12, 0x18, 0xAC, 0x01, 0x18, 0x8C, 0x1D, 0x18, 0xAC, 0x13, 0x18, 0x8C, 0x03, 0x18, 0x8B, 0x04, 0x18, 0x8C, 0x02, 0x18, 0x8B, 0x12, 0x18, 0x8C, 0x19, 0x18, 0xAC, 0x0A, 0x18, 0x8C, 0x07, 0x18, 0xAC, 0x01, 0x18, 0xAD, 0x88, 0x18, 0xAC, 0x18, 0x8C, 0x18, 0xAC, 0x18, 0x8D, 0x10, 0xAF, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xD7, 0x18, 0xAE, 0x01, 0x18, 0xAC, 0x59, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x4E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x11, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x23, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x00, 0xF9, 0x1E, 0x18, 0xAD, 0x0D, 0x18, 0xAC, 0x05, 0x18, 0x8C, 0x1C, 0x18, 0xAC, 0x10, 0x18, 0x8C, 0x80, 0x18, 0x8B, 0x02, 0x18, 0x8C, 0x01, 0x18, 0x8B, 0x11, 0x18, 0x8C, 0x23, 0x18, 0xAC, 0x07, 0x18, 0x8C, 0x07, 0x18, 0xAC, 0x03, + 0x18, 0xAD, 0x80, 0x18, 0x8D, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xCF, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF6, 0x18, 0xAE, 0x5A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x4E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x11, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x23, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x13, 0x18, 0xAC, 0x80, 0x18, 0x8C, 0x1E, 0x18, 0xAC, 0x1F, 0x18, 0x8C, 0x1B, 0x18, 0xAC, 0x80, 0x18, 0x8C, 0x02, 0x18, 0xAC, 0x03, 0x18, 0x8C, 0x09, 0x18, 0xAC, 0x11, 0x18, 0xAD, 0x86, 0x18, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0x8D, 0x57, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x2A, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x11, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x11, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1F, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, + 0x01, 0x01, 0x19, 0x29, 0x18, 0xAD, 0x07, 0x18, 0xAC, 0x02, 0x18, 0x8C, 0x01, 0x18, 0xAC, 0x02, 0x18, 0x8C, 0x03, 0x18, 0xAC, 0x80, 0x18, 0x8C, 0x1A, 0x18, 0xAC, 0x04, 0x18, 0x8C, 0x80, 0x18, 0xAC, 0x11, 0x18, 0x8C, 0x1C, 0x18, 0xAC, 0x01, 0x18, 0x8C, 0x03, 0x18, 0xAC, 0x02, 0x18, 0x8C, 0x08, 0x18, 0xAC, 0x14, 0x18, 0xAD, 0x84, 0x18, 0xCF, 0x00, 0xF8, 0x00, 0xF9, 0x01, 0x17, 0x18, 0xAE, 0x58, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x29, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x14, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x01, 0x19, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xAF, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD1, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x04, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x29, 0x18, 0xAD, 0x0B, 0x18, 0xAC, 0x03, 0x18, 0x8C, 0x80, 0x18, 0xAC, 0x02, 0x18, 0x8C, 0x1A, 0x18, 0xAC, 0x01, 0x18, 0x8C, 0x82, 0x18, 0xAC, 0x08, 0xB2, 0x08, 0xD2, 0x0B, 0x18, 0x8C, 0x1D, 0x18, 0xAC, 0x01, + 0x18, 0x8C, 0x05, 0x18, 0xAC, 0x01, 0x18, 0x8C, 0x05, 0x18, 0xAC, 0x1B, 0x18, 0xAD, 0x84, 0x18, 0xAF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x4F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x2A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x10, 0xD2, 0x08, 0xF6, 0x03, 0x01, 0x19, 0x82, 0x01, 0x18, 0x08, 0xF6, 0x10, 0xD2, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x07, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x23, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x08, 0xD3, 0x01, 0x18, 0xAD, 0x82, 0x08, 0xF3, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x2B, 0x18, 0xAD, 0x09, 0x18, 0xAC, 0x01, 0x18, 0x8C, 0x02, 0x18, 0xAC, 0x04, 0x18, 0x8C, 0x19, 0x18, 0xAC, 0x01, 0x00, 0xF8, 0x07, 0x18, 0x8C, 0x1E, 0x18, 0xAC, 0x07, 0x18, 0x8C, 0x04, 0x18, 0xAC, 0x1F, 0x18, 0xAD, 0x80, 0x18, 0x8D, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xB0, 0x01, 0x18, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x56, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x2A, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xB0, 0x01, 0x18, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, + 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x01, 0x17, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x10, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x23, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x00, 0xF7, 0x85, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x39, 0x18, 0xAD, 0x07, 0x18, 0xAC, 0x02, 0x18, 0x8C, 0x02, 0x18, 0xAC, 0x01, 0x18, 0x8C, 0x12, 0x18, 0xAC, 0x01, 0x18, 0x8C, 0x01, 0x00, 0xF9, 0x03, 0x18, 0x8C, 0x1A, 0x18, 0xAC, 0x08, 0x18, 0x8C, 0x06, 0x18, 0xAC, 0x24, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x84, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAE, 0x80, 0x20, 0xAD, 0x4E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x29, 0x18, 0xAD, 0x8D, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF6, 0x10, 0xF2, 0x10, 0xD1, 0x10, 0xD0, 0x10, 0xD1, 0x10, 0xD3, 0x08, 0xF6, 0x01, 0x00, 0xF9, 0x82, 0x01, 0x19, 0x10, 0xD2, 0x20, 0xAE, 0x11, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, + 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD2, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x23, 0x18, 0xAD, 0x87, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x3B, 0x18, 0xAD, 0x08, 0x18, 0xAC, 0x06, 0x18, 0x8C, 0x0E, 0x18, 0xAC, 0x01, 0x00, 0xF8, 0x80, 0x18, 0x8C, 0x16, 0x18, 0xAC, 0x03, 0x18, 0x8C, 0x07, 0x18, 0xAC, 0x02, 0x18, 0x8C, 0x02, 0x18, 0xAC, 0x2A, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xD0, 0x01, 0x18, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x4E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x2B, 0x18, 0xAD, 0x84, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF8, 0x18, 0xD0, 0x05, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD0, 0x02, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x16, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, + 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xCD, 0x10, 0xD1, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x18, 0xAE, 0x42, 0x18, 0xAD, 0x05, 0x18, 0xAC, 0x01, 0x18, 0x8C, 0x11, 0x18, 0xAC, 0x01, 0x00, 0xF9, 0x13, 0x18, 0xAC, 0x07, 0x18, 0x8C, 0x09, 0x18, 0xAC, 0x2F, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x53, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x27, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCF, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x18, 0xAF, 0x10, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x86, 0x10, 0xD2, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x23, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x01, 0x1A, 0x01, 0x19, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x18, 0xCD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xCD, 0x47, 0x18, 0xAD, 0x0B, 0x18, 0xAC, 0x03, + 0x18, 0x8C, 0x03, 0x18, 0xAC, 0x83, 0x18, 0x8C, 0x18, 0xAC, 0x00, 0xF9, 0x00, 0xF8, 0x13, 0x18, 0xAC, 0x07, 0x18, 0x8C, 0x07, 0x18, 0xAC, 0x30, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x85, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x4E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x29, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x08, 0xD5, 0x01, 0x1A, 0x00, 0xF8, 0x18, 0xCF, 0x08, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x10, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x1A, 0x83, 0x10, 0xD2, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x86, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x47, 0x18, 0xAD, 0x12, 0x18, 0xAC, 0x82, 0x18, 0x8D, 0x00, 0xF9, 0x00, 0xF8, 0x0B, 0x18, 0xAC, 0x04, 0x18, 0x8C, 0x0A, 0x18, 0xAC, 0x1D, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0x8D, 0x03, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0x18, 0xAD, 0x84, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x1A, 0x00, + 0xF7, 0x18, 0xAE, 0x20, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x2D, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAE, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x82, 0x01, 0x18, 0x10, 0xD1, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x02, 0x01, 0x19, 0x88, 0x08, 0xF5, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF3, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x10, 0xD1, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x1A, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x22, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x49, 0x18, 0xAD, 0x05, 0x18, 0xAC, 0x03, 0x18, 0x8C, 0x81, 0x18, 0xAC, 0x18, 0x8C, 0x01, 0x00, 0xF9, 0x11, 0x18, 0xAC, 0x01, 0x18, 0x8C, 0x05, 0x18, 0xAC, 0x1E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x82, + 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x84, 0x18, 0xB0, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x2E, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x82, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x89, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF4, 0x18, 0xAD, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x80, 0x10, 0xD1, 0x01, 0x01, 0x19, 0x80, 0x18, 0xCE, 0x02, 0x18, 0xAD, 0x80, 0x00, 0xF7, 0x02, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x80, 0x00, 0xF7, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD1, 0x0F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD1, 0x01, 0x01, 0x19, 0x85, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x85, 0x18, 0xAE, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x1F, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x80, 0x10, 0xD1, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x4C, 0x18, 0xAD, 0x05, + 0x18, 0xAC, 0x01, 0x18, 0x8C, 0x81, 0x18, 0xAC, 0x18, 0x8C, 0x01, 0x00, 0xF9, 0x07, 0x18, 0xAC, 0x06, 0x18, 0x8C, 0x06, 0x18, 0xAC, 0x1D, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x10, 0xCF, 0x10, 0xD0, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x1E, 0x18, 0xAD, 0x80, 0x10, 0xCF, 0x01, 0x01, 0x19, 0x80, 0x01, 0x17, 0x01, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x81, 0x10, 0xD2, 0x01, 0x18, 0x01, 0x01, 0x19, 0x81, 0x01, 0x18, 0x10, 0xD1, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x2B, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x8E, 0x18, 0xAE, 0x08, 0xF3, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF3, 0x10, 0xD1, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xAF, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x8B, 0x08, 0xF3, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF3, 0x10, 0xD0, 0x10, 0xF4, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x82, 0x01, 0x17, 0x01, 0x19, 0x08, 0xF3, 0x0F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, + 0x18, 0xAD, 0x81, 0x00, 0xF9, 0x01, 0x19, 0x26, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x18, 0xAE, 0x36, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x21, 0x18, 0xAD, 0x05, 0x18, 0xAC, 0x01, 0x00, 0xF9, 0x03, 0x18, 0xAC, 0x04, 0x18, 0x8C, 0x07, 0x18, 0xAC, 0x22, 0x18, 0xAD, 0x8C, 0x18, 0xAE, 0x18, 0xAF, 0x08, 0xF5, 0x01, 0x39, 0x00, 0xFA, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x18, 0xAF, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x1D, 0x18, 0xAD, 0x84, 0x10, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x17, 0x18, 0xCE, 0x13, 0x18, 0xAD, 0x80, 0x10, 0xD1, 0x01, 0x01, 0x19, 0x80, 0x00, 0xFA, 0x02, 0x01, 0x19, 0x80, 0x10, 0xD1, 0x2E, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x85, 0x20, 0xAE, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x0D, 0x18, 0xAD, 0x83, 0x08, 0xF6, 0x01, 0x19, 0x08, 0xF4, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAE, 0x08, 0xD4, 0x01, 0x19, 0x08, 0xF6, 0x02, 0x18, 0xAD, 0x88, 0x08, 0xD4, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x00, 0xF7, 0x01, 0x1A, 0x10, 0xD3, 0x02, 0x18, 0xAD, 0x82, 0x08, 0xF6, 0x01, 0x1A, 0x08, 0xF3, 0x0F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x1C, 0x18, 0xAD, 0x84, 0x10, 0xD2, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, + 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x83, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1F, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x2E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x21, 0x18, 0xAD, 0x01, 0x18, 0xAC, 0x01, 0x00, 0xF9, 0x80, 0x18, 0x8C, 0x02, 0x18, 0xAC, 0x80, 0x18, 0x8C, 0x06, 0x18, 0xAC, 0x27, 0x18, 0xAD, 0x81, 0x18, 0xCF, 0x00, 0xF9, 0x04, 0x01, 0x19, 0x86, 0x01, 0x1A, 0x01, 0x18, 0x18, 0xCF, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xB0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x18, 0x01, 0x19, 0x08, 0xF7, 0x01, 0x10, 0xD1, 0x85, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x28, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x0A, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xCD, 0x00, 0xF6, 0x01, 0x1A, 0x08, 0xF3, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x00, 0xF9, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xCD, 0x0A, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAE, 0x08, 0xD4, 0x01, 0x19, 0x08, 0xF6, 0x02, 0x18, 0xAD, 0x88, 0x08, 0xD4, + 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x00, 0xF7, 0x01, 0x1A, 0x10, 0xD3, 0x02, 0x18, 0xAD, 0x82, 0x08, 0xF6, 0x01, 0x1A, 0x08, 0xF3, 0x0F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x1C, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x1A, 0x80, 0x10, 0xD2, 0x07, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x00, 0xF9, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x29, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x22, 0x18, 0xAD, 0x01, 0x00, 0xF9, 0x07, 0x18, 0xAC, 0x2B, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x15, 0x01, 0x19, 0x86, 0x00, 0xF9, 0x10, 0xD1, 0x18, 0xCD, 0x18, 0xAD, 0x10, 0xD1, 0x00, 0xF9, 0x01, 0x19, 0x2B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x18, + 0xCD, 0x08, 0xF4, 0x01, 0x01, 0x1A, 0x82, 0x10, 0xF1, 0x18, 0xAE, 0x20, 0xAD, 0x09, 0x18, 0xAD, 0x88, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD0, 0x18, 0xAE, 0x08, 0xD5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD0, 0x0F, 0x18, 0xAD, 0x8B, 0x08, 0xF3, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF3, 0x10, 0xD0, 0x10, 0xF4, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x82, 0x01, 0x17, 0x01, 0x19, 0x08, 0xF3, 0x0F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x18, 0xCD, 0x10, 0xD2, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x85, 0x20, 0xAE, 0x18, 0xAD, 0x10, 0xF2, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x24, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x07, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xF5, 0x29, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x25, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAC, 0x2F, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x00, 0xF9, 0x07, 0x01, 0x19, 0x1F, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x0F, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, + 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xB1, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD1, 0x01, 0x01, 0x19, 0x31, 0x18, 0xAD, 0x88, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x0A, 0x18, 0xAD, 0x83, 0x10, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x80, 0x00, 0xF6, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x80, 0x10, 0xD1, 0x01, 0x01, 0x19, 0x80, 0x18, 0xCE, 0x02, 0x18, 0xAD, 0x80, 0x00, 0xF7, 0x02, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x80, 0x00, 0xF7, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD1, 0x0F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x23, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x04, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x80, 0x01, 0x19, 0x28, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAC, 0x31, 0x18, 0xAD, 0x05, 0x01, 0x19, 0x80, 0x01, + 0x1A, 0x02, 0x01, 0x19, 0x83, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x1B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x16, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x18, 0x01, 0x19, 0x00, 0xF7, 0x01, 0x10, 0xD1, 0x82, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x2D, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xD5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x0A, 0x18, 0xAD, 0x81, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x08, 0xF5, 0x18, 0xCE, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x02, 0x01, 0x19, 0x88, 0x08, 0xF5, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF3, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x2B, + 0x01, 0x19, 0x81, 0x00, 0xF8, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x22, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0x8D, 0x31, 0x18, 0xAD, 0x09, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x10, 0xF1, 0x00, 0xF9, 0x03, 0x01, 0x19, 0x82, 0x00, 0xF9, 0x10, 0xF1, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x08, 0x18, 0xAD, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x08, 0xD5, 0x01, 0x1A, 0x00, 0xF8, 0x18, 0xCF, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x0E, 0x18, 0xAD, 0x87, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xAD, 0x18, 0xCD, 0x06, 0x18, 0xAD, 0x80, 0x08, 0xD5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x83, 0x18, 0xAE, 0x18, + 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x2A, 0x01, 0x19, 0x85, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x83, 0x00, 0xF9, 0x01, 0x19, 0x18, 0xAD, 0x18, 0xAC, 0x31, 0x18, 0xAD, 0x09, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x18, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD1, 0x00, 0xF8, 0x01, 0x01, 0x19, 0x84, 0x00, 0xF8, 0x10, 0xD1, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1F, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCF, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x82, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAF, 0x09, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x01, 0x1A, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x82, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x01, 0x01, + 0x19, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x85, 0x20, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x00, 0xF9, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x28, 0x18, 0xAD, 0x86, 0x18, 0xCE, 0x01, 0x18, 0x01, 0x19, 0x01, 0x17, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x83, 0x08, 0xD3, 0x10, 0xD3, 0x18, 0xAD, 0x18, 0xAC, 0x31, 0x18, 0xAD, 0x07, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x11, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x85, 0x01, 0x1A, 0x08, 0xF5, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAE, 0x20, 0xAD, 0x15, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x33, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, + 0xD2, 0x09, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x84, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF8, 0x18, 0xD0, 0x06, 0x18, 0xAD, 0x81, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD1, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x1F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x01, 0x1A, 0x01, 0x19, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x29, 0x18, 0xAD, 0x84, 0x10, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x51, 0x18, 0xAD, 0x07, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x20, 0xAD, 0x14, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xCD, 0x80, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, + 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x20, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x84, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xD0, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x8E, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF6, 0x10, 0xF2, 0x10, 0xD1, 0x10, 0xD0, 0x10, 0xD1, 0x10, 0xD3, 0x08, 0xF6, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD2, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x0B, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x84, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x80, 0x10, 0xD2, 0x2B, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x10, 0xCF, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, + 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x35, 0x18, 0xAD, 0x09, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF6, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x14, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x20, 0xAE, 0x22, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x3A, 0x00, 0xF8, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x14, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xB0, 0x01, 0x18, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x01, 0x18, 0x10, 0xD0, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xCD, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x85, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xCD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAD, 0x01, + 0x18, 0xAE, 0x82, 0x18, 0xAD, 0x01, 0x19, 0x00, 0xF9, 0x08, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xAE, 0x29, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x50, 0x18, 0xAD, 0x09, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xCF, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x17, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x12, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x10, 0xD2, 0x08, 0xF6, 0x03, 0x01, 0x19, 0x82, 0x01, 0x18, 0x08, 0xF5, 0x10, 0xD1, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0D, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, + 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x84, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x1C, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x85, 0x00, 0xF9, 0x01, 0x1A, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xCD, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x2D, 0x18, 0xAD, 0x83, 0x18, 0xAF, 0x01, 0x18, 0x01, 0x19, 0x01, 0x17, 0x02, 0x18, 0xAE, 0x80, 0x20, 0xAD, 0x53, 0x18, 0xAD, 0x09, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x10, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, + 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x86, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x1A, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x88, 0x08, 0xF5, 0x01, 0x1A, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x86, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x08, 0xD5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x1B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xF3, 0x01, 0x01, 0x19, 0x84, 0x10, 0xD2, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x20, 0xAD, 0x2A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x1A, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x19, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x30, 0x18, 0xAD, 0x07, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x15, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x20, 0xAE, + 0x17, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x10, 0xD0, 0x10, 0xD3, 0x08, 0xF4, 0x01, 0x08, 0xF3, 0x80, 0x10, 0xF3, 0x08, 0x08, 0xF3, 0x01, 0x10, 0xD3, 0x01, 0x08, 0xF3, 0x82, 0x08, 0xD4, 0x10, 0xD3, 0x10, 0xD0, 0x17, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x14, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x82, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x82, 0x08, 0xF5, 0x18, 0xAD, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x2A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x86, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCF, 0x01, 0x18, 0x01, 0x19, + 0x00, 0xF7, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x27, 0x18, 0xAD, 0x07, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x15, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x22, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x10, 0x01, 0x19, 0x80, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0C, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x84, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0B, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x06, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x1A, 0x80, 0x10, 0xD1, 0x14, 0x18, 0xAD, 0x88, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xCD, 0x10, 0xF3, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x06, 0x18, 0xAD, 0x80, + 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x1A, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x80, 0x10, 0xD2, 0x0C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x27, 0x18, 0xAD, 0x09, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x13, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x10, 0xD1, 0x01, 0x01, 0x19, 0x87, 0x08, 0xF5, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAF, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x17, 0x18, 0xAE, 0x21, 0x18, 0xAD, 0x83, 0x08, 0xF3, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x0F, 0x01, 0x19, 0x82, 0x00, 0xF9, 0x18, 0xD0, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x0D, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x20, 0xAD, + 0x05, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0B, 0x18, 0xAD, 0x85, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x89, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x13, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x20, 0xAE, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x19, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x08, 0xF7, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x08, 0xF4, 0x01, 0x19, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x29, 0x18, 0xAD, 0x09, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x86, 0x08, 0xF7, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAF, 0x01, 0x19, 0x01, + 0x1A, 0x00, 0xF9, 0x1F, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x12, 0x01, 0x19, 0x83, 0x00, 0xF9, 0x10, 0xCF, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x84, 0x08, 0xF5, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0C, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xCF, 0x16, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xD5, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xCE, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD1, 0x20, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x0F, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x13, 0x18, 0xAD, 0x80, 0x08, + 0xF5, 0x02, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x2A, 0x18, 0xAD, 0x09, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x87, 0x18, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xB0, 0x01, 0x18, 0x20, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x11, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x83, 0x08, 0xF5, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x83, 0x08, 0xF5, 0x20, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0B, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x18, + 0xCD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD1, 0x19, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x82, 0x08, 0xF3, 0x00, 0xF9, 0x01, 0x1A, 0x10, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x83, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x2F, 0x18, 0xAD, 0x07, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x17, 0x01, 0x18, 0xAE, 0x80, 0x20, 0xAD, 0x21, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x08, 0xF3, 0x01, 0x19, 0x01, 0x1A, 0x13, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x00, 0xF7, 0x18, 0xAF, 0x1C, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x20, 0xAD, 0x1E, 0x18, 0xAD, 0x88, 0x18, 0xAE, 0x18, 0xCD, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xD5, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, + 0x18, 0xAD, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xCD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x0D, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x1A, 0x85, 0x10, 0xD2, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x28, 0x18, 0xAD, 0x07, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x10, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x00, 0xF9, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x86, 0x10, 0xD0, 0x01, 0x19, 0x00, 0xF9, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x21, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x11, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, + 0x08, 0xF6, 0x1C, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x10, 0xD1, 0x01, 0x08, 0xF3, 0x82, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xCD, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x84, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x01, 0x01, 0x19, 0x17, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x80, 0x08, 0xD3, 0x01, 0x18, 0xAD, 0x82, 0x08, 0xD3, 0x01, 0x1A, 0x01, 0x19, 0x11, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF7, 0x02, 0x18, 0xAE, 0x80, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x10, + 0xD3, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x2D, 0x18, 0xAD, 0x09, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x1B, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xB0, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF7, 0x18, 0xAE, 0x22, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x10, 0x01, 0x19, 0x86, 0x01, 0x1A, 0x01, 0x39, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF6, 0x18, 0xAD, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAE, 0x83, 0x18, 0xAD, 0x20, 0xCE, 0x00, 0xF7, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x19, 0x18, 0xAD, 0x86, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x1A, 0x08, 0xF5, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x20, 0xAE, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x88, 0x08, 0xF5, 0x01, 0x1A, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x08, 0xD5, 0x01, 0x01, 0x19, 0x85, 0x10, 0xD2, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, + 0x08, 0xD5, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD2, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x83, 0x01, 0x39, 0x01, 0x19, 0x08, 0xF5, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0E, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x83, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x08, 0xD5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x27, 0x18, 0xAD, 0x09, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x21, 0x18, 0xAD, 0x81, 0x10, 0xD3, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x11, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x16, 0x1C, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x1A, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x82, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, + 0x10, 0xD2, 0x01, 0x01, 0x19, 0x81, 0x08, 0xD5, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1E, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x08, 0xF7, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x85, 0x18, 0xCD, 0x18, 0xAE, 0x10, 0xD1, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x1F, 0x18, 0xAD, 0x05, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF6, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xD0, 0x00, + 0xF9, 0x22, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x16, 0x01, 0x19, 0x80, 0x08, 0xF6, 0x1C, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x80, 0x01, 0x1A, 0x06, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x83, 0x18, 0xCF, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x0A, 0x18, 0xAD, 0x84, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xCF, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x18, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xFA, 0x18, 0xD1, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x1F, 0x18, 0xAD, 0x87, 0x10, 0xD2, 0x10, 0xF3, 0x08, 0xD3, 0x10, 0xD2, 0x01, 0x17, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x0F, 0x18, 0xAD, 0x84, 0x18, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x18, 0xCE, 0x07, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x02, 0x18, + 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x1F, 0x18, 0xAD, 0x84, 0x08, 0xF6, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x01, 0x16, 0x19, 0x18, 0xAD, 0x8B, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAF, 0x00, 0xF8, 0x01, 0x1A, 0x24, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x14, 0x01, 0x19, 0x80, 0x08, 0xF6, 0x1C, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x01, 0x1A, 0x05, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x1A, 0x18, 0xAD, 0x82, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xD4, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x84, 0x10, 0xD1, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x20, 0xAD, 0x0D, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x14, 0x18, 0xAD, 0x82, 0x08, 0xD4, 0x01, 0x19, 0x00, 0xF9, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1E, 0x18, 0xAD, 0x89, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xD5, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0x8D, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x23, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, + 0xCD, 0x0B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x10, 0xD0, 0x00, 0xF8, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x83, 0x18, 0xB0, 0x01, 0x18, 0x01, 0x19, 0x00, 0xF7, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x21, 0x18, 0xAD, 0x81, 0x18, 0xCF, 0x00, 0xF8, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x00, 0xF9, 0x18, 0xAF, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x19, 0x18, 0xAD, 0x84, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x24, 0x18, 0xAD, 0x81, 0x08, 0xF3, 0x01, 0x1A, 0x17, 0x01, 0x19, 0x80, 0x08, 0xF6, 0x1C, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x20, 0xAE, 0x19, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x84, 0x08, 0xF5, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x20, 0xAE, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x18, 0xCD, 0x10, 0xD2, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAE, + 0x10, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x19, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x01, 0x1A, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x20, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x01, 0x17, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x11, 0x18, 0xAD, 0x83, 0x18, 0xB0, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF6, 0x0B, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xCD, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x00, 0xF7, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x23, 0x18, 0xAD, 0x81, 0x18, 0xAF, 0x08, 0xF6, 0x01, 0x01, 0x19, 0x85, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x16, 0x18, 0xCF, 0x18, 0xAD, 0x18, 0xCD, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x84, 0x10, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x83, 0x08, 0xF3, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x15, 0x01, 0x19, 0x80, 0x08, 0xF6, 0x1C, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xD5, 0x02, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x19, 0x18, + 0xAD, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xAD, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x87, 0x20, 0xAE, 0x18, 0xCF, 0x00, 0xF9, 0x01, 0x1A, 0x08, 0xF5, 0x20, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x1C, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x1A, 0x80, 0x10, 0xD2, 0x14, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x1A, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x86, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF8, 0x01, 0x19, 0x01, 0x17, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAD, 0x10, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xD0, 0x01, 0x18, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x0C, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x27, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x08, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x83, 0x18, 0xB0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x21, 0x18, 0xAD, 0x83, 0x08, 0xF3, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, + 0x15, 0x01, 0x19, 0x80, 0x08, 0xF6, 0x1C, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x86, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x19, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x03, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x00, 0xF8, 0x01, 0x19, 0x08, 0xF4, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0C, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x1C, 0x18, 0xAD, 0x84, 0x10, 0xD2, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x20, 0xAD, 0x13, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x18, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1E, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xB0, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x08, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x82, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x83, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF9, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x19, 0x01, + 0x1A, 0x10, 0xD2, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x22, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x84, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x21, 0x18, 0xAD, 0x81, 0x08, 0xF3, 0x01, 0x1A, 0x17, 0x01, 0x19, 0x80, 0x08, 0xF6, 0x1C, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x07, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x1B, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xCD, 0x05, 0x18, 0xAD, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xCD, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x01, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAE, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x12, 0x18, 0xAD, + 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x0C, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xCF, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x34, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x1B, 0x18, 0xAD, 0x81, 0x10, 0xD0, 0x00, 0xF9, 0x26, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x14, 0x01, 0x19, 0x80, 0x08, 0xF6, 0x1C, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x20, 0xAE, 0x18, 0xAE, 0x0D, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD1, 0x01, 0x01, 0x19, 0x85, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x86, 0x20, 0xAD, + 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAE, 0x0D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x84, 0x18, 0xD0, 0x18, 0xAD, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAE, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x23, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xB0, 0x01, 0x19, 0x01, 0x1A, 0x20, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x16, 0x01, 0x19, 0x80, 0x08, 0xF6, 0x1C, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x83, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x10, + 0xD1, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x25, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x13, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAE, 0x02, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x68, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x08, 0xF3, 0x01, 0x19, 0x01, 0x1A, 0x12, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x00, 0xF6, 0x12, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x00, 0xFA, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, + 0x19, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD2, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xD5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x81, 0x08, 0xF7, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x07, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x69, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x01, 0x08, 0xF3, 0x82, 0x10, 0xF3, 0x08, 0xF3, 0x10, 0xD3, 0x13, 0x08, 0xF3, 0x82, 0x10, 0xF2, 0x18, 0xAD, 0x18, 0xCD, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x00, + 0xF9, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x07, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x09, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x80, 0x20, 0xAE, 0x06, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x02, 0x20, 0xAD, 0x8B, 0x18, 0xAD, 0x31, 0x0E, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xF2, 0x01, 0x01, 0x19, 0x86, 0x10, 0xD2, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x10, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x00, 0xF7, 0x02, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x1A, 0x01, 0x19, 0x81, 0x00, 0xFA, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xD0, 0x18, 0xAE, 0x01, 0x17, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x6B, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, + 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF8, 0x03, 0x01, 0x19, 0x84, 0x08, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x83, 0x08, 0xD5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x28, 0xEE, 0x82, 0x52, 0xCB, 0x54, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x07, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x83, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAE, 0x15, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAE, 0x80, 0x00, 0xF7, 0x20, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x88, 0x18, 0xB0, 0x01, 0x19, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, + 0x10, 0xD2, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x6B, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x15, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xCD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x39, 0x4F, 0xB3, 0x13, 0xD3, 0x95, 0x72, 0x11, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0A, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xCD, 0x81, 0x20, 0xAE, 0x18, 0xCD, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x84, + 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x06, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x73, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x2F, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x84, 0x18, 0xAD, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAD, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xCD, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF4, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x49, 0x6F, 0xCB, 0x55, 0xD3, 0x95, 0xBB, 0x54, 0x28, 0xCE, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x1A, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, + 0x18, 0xAD, 0x01, 0x01, 0x19, 0x07, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x1B, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x84, 0x10, 0xCF, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0x8D, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x02, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x7F, 0x18, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0x8D, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x84, 0x00, 0xFA, 0x01, 0x19, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x80, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x61, 0xD0, 0x02, 0xD3, 0x95, 0x82, 0x69, 0xF1, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, + 0xCD, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0A, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x82, 0x10, 0xD2, 0x20, 0xCD, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x14, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x86, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x7F, 0x18, 0xAD, 0x22, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x1A, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD3, 0x01, 0x01, 0x1A, 0x80, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x86, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x19, + 0x00, 0xF9, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x61, 0xD0, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xD3, 0x75, 0x31, 0x0E, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xCD, 0x01, 0x1A, 0x00, 0xF9, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xCE, 0x00, 0xF7, 0x02, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x83, 0x01, 0x17, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x86, 0x20, 0xAE, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAE, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x6B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x05, 0x01, + 0x19, 0x80, 0x08, 0xF5, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0A, 0x18, 0xAD, 0x80, 0x08, 0xD4, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x80, 0x08, 0xD5, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x01, 0x17, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x08, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x82, 0x39, 0x2F, 0xD3, 0x95, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x80, 0x28, 0xCE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x21, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF4, 0x18, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x21, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x85, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x19, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x02, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x87, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x7F, 0x18, 0xAD, + 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x08, 0x18, 0xAD, 0x05, 0x01, 0x19, 0x84, 0x00, 0xF9, 0x01, 0x19, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x84, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x0E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xF2, 0x18, 0xAE, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x31, 0x0E, 0xCB, 0x55, 0x04, 0xD3, 0x95, 0x82, 0x82, 0x52, 0x20, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x87, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x13, 0x18, 0xAD, + 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x3D, 0x18, 0xAD, 0x80, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF7, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x7C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x80, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x07, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x80, 0x10, 0xF2, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x85, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x85, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x10, 0xD3, + 0x08, 0xF3, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x86, 0x08, 0xF5, 0x01, 0x1A, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0xB3, 0x14, 0x05, 0xD3, 0x95, 0x80, 0x51, 0x90, 0x06, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x17, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x00, 0xF9, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x3D, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x02, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x01, 0x17, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x7F, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x18, + 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xEE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x86, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF9, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x10, 0xF2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x0D, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xD5, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xCD, 0x0B, 0x18, 0xAD, 0x80, 0x82, 0x52, 0x06, 0xD3, 0x95, 0x81, 0x41, 0x2F, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x03, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xD5, 0x1B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x81, 0x08, 0xF5, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x08, 0xF4, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x20, 0xAD, 0x18, 0xAE, 0x01, + 0x01, 0x19, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x87, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xF3, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF3, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x39, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x86, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0x8D, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF7, 0x02, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x7D, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xCD, 0x80, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x83, 0x03, 0x55, 0x19, 0x0F, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x08, 0xF4, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x86, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x0D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x01, + 0x1A, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0x8E, 0x03, 0x18, 0xAD, 0x89, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xCD, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x49, 0x6F, 0x05, 0xD3, 0x95, 0x83, 0xD3, 0x96, 0xD3, 0x95, 0x49, 0x6F, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x01, 0x19, 0x1B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x81, 0x00, 0xF9, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x01, 0x17, 0x01, 0x01, 0x19, 0x80, 0x08, 0xD5, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x39, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x20, 0xAE, 0x06, 0x18, 0xAD, 0x87, 0x18, 0xB0, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD1, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xD4, 0x06, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x80, 0x18, + 0xAE, 0x7C, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x11, 0xD1, 0x03, 0xB7, 0x0A, 0x93, 0x04, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF9, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xCD, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x28, 0xEE, 0xBB, 0x34, 0x07, 0xD3, 0x95, 0x80, 0x9A, 0xB3, 0x06, 0x18, 0xAD, 0x02, 0x01, 0x19, 0x01, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x82, 0x10, 0xAF, 0x01, 0x19, 0x01, 0x1A, 0x05, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x83, 0x20, + 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x3E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0x8D, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x82, 0x00, 0xF9, 0x10, 0xF2, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x78, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x20, 0x8D, 0x18, 0xAD, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xD3, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x03, 0x56, 0x01, 0x03, 0xB7, 0x80, 0x19, 0x0F, 0x07, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x08, 0xF3, 0x08, 0xD4, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x84, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xCD, 0x0A, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x01, + 0x01, 0x19, 0x80, 0x00, 0xFA, 0x04, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x7A, 0x31, 0x01, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xDB, 0x95, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x85, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x13, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x86, 0x10, 0xD2, 0x08, 0xF3, 0x08, 0xF4, 0x10, 0xD2, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x43, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x10, 0xCF, 0x03, 0x01, 0x19, 0x80, 0x10, 0xD1, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x17, 0x00, 0xFA, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, + 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD1, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x78, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x82, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x86, 0x18, 0xCE, 0x11, 0xD1, 0x03, 0xB8, 0x03, 0xB7, 0x03, 0xB8, 0x0A, 0x94, 0x20, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x86, 0x08, 0xF5, 0x01, 0x1A, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x8F, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x08, 0xF5, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x08, 0xD5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x88, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x31, 0x0E, 0x04, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xD3, 0x95, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xB3, 0x13, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, + 0x02, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x04, 0x01, 0x19, 0x84, 0x00, 0xF9, 0x08, 0xF5, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x06, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x3A, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x80, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x02, 0x01, 0x19, 0x83, 0x10, 0xD2, 0x18, 0xCD, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xD0, 0x7D, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x03, 0x56, 0x01, 0x03, 0xB7, 0x83, 0x03, 0xB8, 0x03, 0xB7, 0x19, 0x0E, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x09, 0x18, 0xAD, 0x82, 0x18, 0xCD, + 0x20, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x1A, 0x80, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x08, 0x18, 0xAD, 0x83, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0xA2, 0xD3, 0x08, 0xD3, 0x95, 0x81, 0xD3, 0x96, 0xA2, 0xD3, 0x06, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x03, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xCE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x01, 0x17, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x13, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x3A, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, + 0xAE, 0x08, 0x18, 0xAD, 0x82, 0x18, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x02, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x06, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x70, 0x18, 0xAD, 0x07, 0x01, 0x19, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x11, 0xD1, 0x03, 0xB8, 0x03, 0x03, 0xB7, 0x80, 0x0A, 0x94, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x0D, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x0F, 0x18, 0xAD, 0x84, 0x10, 0xD2, 0x08, 0xD4, 0x08, 0xF3, 0x10, 0xD2, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xB0, 0x0E, 0x18, 0xAD, 0x80, 0x49, 0x6F, 0x0A, 0xD3, 0x95, 0x80, 0xAA, 0xD3, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x10, 0xD1, 0x01, 0x08, 0xF3, 0x81, 0x10, 0xD2, 0x18, 0xCD, 0x1C, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x10, 0xD2, 0x08, 0xF3, 0x08, 0xD4, + 0x10, 0xD2, 0x10, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x08, 0xF4, 0x01, 0x01, 0x19, 0x84, 0x10, 0xD1, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x08, 0xF5, 0x00, 0xF9, 0x04, 0x01, 0x19, 0x83, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x58, 0x18, 0xAD, 0x85, 0x10, 0xCF, 0x01, 0x18, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x8B, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x05, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x73, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x09, 0x18, 0xAD, 0x81, 0x03, 0x56, 0x03, 0xB8, 0x04, 0x03, 0xB7, 0x80, 0x19, 0x0F, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0F, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x12, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0xB3, + 0x14, 0x0B, 0xD3, 0x95, 0x82, 0x61, 0xD0, 0x18, 0xAD, 0x18, 0xCD, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x18, 0xCD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x86, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x52, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x03, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x08, 0xF5, 0x0B, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x71, 0x01, 0x19, 0x82, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x03, 0x97, 0x03, 0xB8, 0x03, 0xB7, 0x02, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xCD, 0x0F, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x02, 0x18, 0xAD, + 0x80, 0x20, 0xAD, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0A, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x0C, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x59, 0xD0, 0xD3, 0x95, 0xD3, 0x75, 0x08, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xD3, 0x95, 0xD3, 0x96, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x84, 0x08, 0xF4, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x03, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x54, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x04, 0x18, 0xAD, 0x88, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xB0, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x20, 0xAE, 0x18, 0xAE, 0x00, 0xF7, 0x02, 0x01, 0x1A, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x70, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x02, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x02, 0x03, 0xB7, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x03, 0xB7, 0x82, 0x03, 0x97, 0x03, + 0xB7, 0x03, 0xB8, 0x01, 0x03, 0xB7, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD1, 0x20, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0xBB, 0x34, 0x0C, 0xD3, 0x95, 0x83, 0xAA, 0xD3, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x86, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x01, 0x1A, 0x05, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x18, 0xAD, 0x18, 0xAE, 0x53, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x8C, 0x18, 0xAE, 0x18, 0xB0, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x10, 0xD2, 0x10, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x71, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x85, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, + 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x03, 0xB7, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x04, 0x03, 0xB7, 0x81, 0x03, 0x97, 0x03, 0xB7, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x61, 0xB1, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x0A, 0xD3, 0x95, 0x80, 0x8A, 0x92, 0x29, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x08, 0xF4, 0x53, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x82, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x10, 0xD2, 0x05, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, + 0xAD, 0x80, 0x18, 0xCD, 0x72, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0x8D, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x02, 0x03, 0xB7, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x20, 0xAD, 0x03, 0xB8, 0x03, 0xB7, 0x03, 0xB8, 0x03, 0x03, 0xB7, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xCD, 0x20, 0xAD, 0x1B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x18, 0xAD, 0xAA, 0xD3, 0xD3, 0x95, 0xD3, 0x75, 0x09, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x80, 0x31, 0x0E, 0x28, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1C, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD1, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x58, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x10, 0xCF, 0x03, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x01, 0x19, + 0x80, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x73, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x82, 0x03, 0xD7, 0x03, 0x97, 0x03, 0xB7, 0x03, 0x18, 0xAD, 0x84, 0x03, 0xB7, 0x03, 0xB8, 0x03, 0x97, 0x03, 0xB7, 0x03, 0xB8, 0x01, 0x03, 0xB7, 0x83, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x0A, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x18, 0xCD, 0x20, 0xAD, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x01, 0x19, 0x01, 0x1A, 0x0B, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x49, 0x6F, 0x0D, 0xD3, 0x95, 0x84, 0xD3, 0x75, 0xD3, 0x95, 0x72, 0x31, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x86, 0x10, 0xD1, 0x10, 0xD3, 0x08, 0xD3, 0x10, 0xD2, 0x18, + 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x52, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x02, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF9, 0x06, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x86, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD0, 0x75, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x0D, 0x18, 0xAD, 0x01, 0x03, 0xB7, 0x80, 0x03, 0xB8, 0x03, 0x18, 0xAD, 0x06, 0x03, 0xB7, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x0F, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x20, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x1A, 0x80, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x82, 0x20, 0xCD, 0x20, 0xAE, 0x8A, 0x92, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x0B, 0xD3, 0x95, 0x83, 0x7A, 0x31, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, + 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x5F, 0x18, 0xAD, 0x82, 0x18, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x0A, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x81, 0x01, 0x18, 0x10, 0xD0, 0x76, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0x03, 0xB7, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x03, 0xB7, 0x80, 0x03, 0xB8, 0x03, 0x03, 0xB7, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x11, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x82, 0x20, 0xAD, 0x28, 0xEE, 0xC3, 0x74, 0x0F, 0xD3, 0x95, 0x83, 0xA2, 0xD3, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x22, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x22, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, + 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x83, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x85, 0x10, 0xCF, 0x01, 0x18, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xCE, 0x00, 0xF7, 0x0C, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xD0, 0x78, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCE, 0x19, 0x4F, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x86, 0x03, 0xB7, 0x03, 0x97, 0x03, 0xB8, 0x18, 0xAD, 0x20, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x03, 0x03, 0xB7, 0x80, 0x03, 0xB8, 0x01, 0x03, 0xB7, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x16, 0x18, 0xAD, 0x85, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x80, 0x61, 0xD1, 0x0F, 0xD3, 0x95, 0x84, 0xD3, 0x96, 0xD3, 0x95, 0x69, 0xF1, 0x20, 0xAD, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x19, 0x18, 0xAD, 0x80, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xCE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, + 0xAD, 0x0B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x02, 0x01, 0x1A, 0x84, 0x00, 0xF9, 0x08, 0xF7, 0x18, 0xCE, 0x18, 0xCD, 0x18, 0xAE, 0x13, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0D, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x03, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x05, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0xCF, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x75, 0x18, 0xAD, 0x85, 0x19, 0x30, 0x02, 0xF5, 0x03, 0xB7, 0x03, 0xB8, 0x03, 0x56, 0x11, 0x4F, 0x02, 0x18, 0xAD, 0x80, 0x03, 0xB8, 0x01, 0x03, 0xB7, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x03, 0xB7, 0x03, 0xB8, 0x03, 0xB7, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x88, 0x18, 0xAE, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF4, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x81, 0x9A, 0xB3, 0xD3, 0x75, 0x0D, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x02, 0xD3, 0x95, 0x80, 0x41, 0x2F, 0x21, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF8, 0x03, 0x01, 0x19, 0x84, 0x08, 0xF7, 0x18, 0xCE, 0x18, + 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x03, 0xB7, 0x80, 0x03, 0x97, 0x03, 0x03, 0xB7, 0x02, 0x18, 0xAD, 0x80, 0x0A, 0x32, 0x03, 0x03, 0xB7, 0x80, 0x03, 0x56, 0x01, 0x18, 0xAD, 0x81, 0x0A, 0x32, 0x03, 0xB7, 0x02, 0x03, 0xB8, 0x81, 0x03, 0x76, 0x18, 0xEE, 0x05, 0x03, 0xB7, 0x80, 0x03, 0x97, 0x02, 0x03, 0xB7, 0x81, 0x03, 0xB8, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x05, 0x01, 0x19, 0x83, 0x08, 0xF5, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x11, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x0B, 0x18, 0xAD, 0x88, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xB0, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x0E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x85, 0x18, 0xCF, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x18, 0xB0, 0x73, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x87, 0x19, 0x0F, 0x03, 0x77, 0x03, 0x97, 0x03, 0xB8, 0x03, 0x98, 0x03, 0x97, 0x0B, 0x77, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x82, 0x03, 0xB7, 0x03, 0x97, 0x03, 0xB8, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x03, 0xB7, 0x0B, 0xB7, 0x03, 0x98, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x14, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, + 0x01, 0x19, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x05, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0xC3, 0x55, 0x12, 0xD3, 0x95, 0x80, 0x49, 0x70, 0x23, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x03, 0x03, 0xB7, 0x80, 0x03, 0xB8, 0x01, 0x03, 0xB7, 0x81, 0x03, 0x97, 0x03, 0xB7, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xEE, 0x03, 0x77, 0x03, 0x03, 0xB7, 0x83, 0x0A, 0x33, 0x19, 0x0E, 0x03, 0x97, 0x03, 0xB8, 0x02, 0x03, 0xB7, 0x81, 0x11, 0xD1, 0x18, 0xAD, 0x0A, 0x03, 0xB7, 0x03, 0x18, 0xAD, 0x83, 0x18, 0xCE, 0x11, 0xB0, 0x0A, 0x93, 0x03, 0x56, 0x02, 0x03, 0xB7, 0x05, 0x18, 0xAD, 0x80, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x18, 0xCD, 0x12, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x0E, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xB0, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x10, 0x18, 0xAD, 0x81, 0x10, 0xD0, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x80, 0x18, 0xB0, 0x74, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x12, 0x53, 0x0B, 0x78, 0x0B, 0x98, 0x0B, 0x78, 0x01, 0x0B, 0x98, 0x81, 0x13, 0x78, 0x11, 0xF2, 0x01, 0x18, 0xAD, 0x80, 0x0B, 0x98, 0x01, 0x0B, 0x78, 0x05, 0x18, 0xAD, 0x84, 0x0B, 0x98, 0x13, 0x78, 0x0B, 0x78, 0x18, 0xAD, 0x20, + 0xAE, 0x15, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x87, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x05, 0x20, 0xAE, 0x83, 0x20, 0xCE, 0x49, 0x70, 0xD3, 0x95, 0xD3, 0x75, 0x10, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0x82, 0x52, 0x02, 0x20, 0xAE, 0x1E, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF4, 0x01, 0x01, 0x19, 0x1B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x12, 0x18, 0xAD, 0x80, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x80, 0x03, 0xB8, 0x07, 0x03, 0xB7, 0x03, 0x18, 0xAD, 0x81, 0x11, 0xD1, 0x03, 0xB8, 0x01, 0x03, 0xB7, 0x83, 0x03, 0xB8, 0x03, 0x77, 0x0A, 0xD4, 0x03, 0x97, 0x02, 0x03, 0xB7, 0x86, 0x02, 0xF5, 0x18, 0xAE, 0x18, 0xAD, 0x03, 0xB7, 0x03, 0xB8, 0x03, 0xB7, 0x03, 0xB8, 0x06, 0x03, 0xB7, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x19, 0x2F, 0x01, 0x03, 0xB7, 0x01, 0x03, 0xB8, 0x01, 0x03, 0xB7, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x18, 0xAF, 0x07, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x11, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF7, 0x0B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x82, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x0D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, + 0xAD, 0x82, 0x18, 0xAE, 0x10, 0xD0, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x80, 0x18, 0xD0, 0x72, 0x18, 0xAD, 0x89, 0x18, 0xAE, 0x18, 0xAD, 0x1A, 0xB5, 0x1B, 0x78, 0x1B, 0x58, 0x13, 0x58, 0x1B, 0x78, 0x13, 0x78, 0x13, 0x58, 0x1A, 0x13, 0x01, 0x18, 0xAE, 0x01, 0x13, 0x58, 0x82, 0x13, 0x78, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x02, 0x13, 0x58, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x10, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x20, 0xAE, 0x80, 0x18, 0xAD, 0x04, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x80, 0x7A, 0x32, 0x0F, 0xD3, 0x95, 0x86, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x75, 0xD3, 0x95, 0xC3, 0x54, 0x59, 0x90, 0x20, 0xAD, 0x03, 0x20, 0xAE, 0x1C, 0x18, 0xAD, 0x80, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x80, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x06, 0x03, 0xB7, 0x81, 0x03, 0x97, 0x03, 0xB7, 0x03, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x03, 0x56, 0x05, 0x03, 0xB7, 0x80, 0x03, 0x97, 0x01, 0x03, 0xB7, 0x80, 0x19, 0x4F, 0x01, 0x18, 0xAD, 0x0A, 0x03, 0xB7, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x03, 0xB7, 0x03, 0x97, 0x03, 0x03, 0xB7, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x20, 0xAD, 0x80, 0x18, 0xAD, 0x01, + 0x01, 0x19, 0x80, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x04, 0x01, 0x19, 0x0F, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF8, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x18, 0xAD, 0x10, 0xCF, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xCD, 0x09, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x00, 0xF9, 0x80, 0x18, 0xD0, 0x73, 0x18, 0xAD, 0x80, 0x1A, 0x54, 0x01, 0x1B, 0x38, 0x84, 0x23, 0x38, 0x1B, 0x38, 0x1B, 0x58, 0x23, 0x38, 0x21, 0xD2, 0x01, 0x18, 0xAD, 0x01, 0x23, 0x38, 0x81, 0x23, 0x58, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x85, 0x19, 0x30, 0x23, 0x39, 0x23, 0x58, 0x23, 0x38, 0x18, 0xAD, 0x20, 0xAD, 0x16, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x82, 0x08, 0xF5, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x80, 0xA2, 0xB3, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x0B, 0xD3, 0x95, 0x03, 0xD3, 0x75, 0x80, 0x49, 0x70, 0x05, 0x20, 0xAE, 0x1B, 0x18, 0xAD, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD3, 0x01, 0x01, 0x1A, 0x80, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x03, 0x03, 0xB7, + 0x80, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x11, 0x70, 0x01, 0x03, 0xB8, 0x01, 0x03, 0xB7, 0x80, 0x03, 0xB8, 0x02, 0x03, 0xB7, 0x80, 0x0A, 0x53, 0x05, 0x18, 0xAD, 0x01, 0x03, 0xB7, 0x80, 0x03, 0x97, 0x01, 0x03, 0xB7, 0x81, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x03, 0x96, 0x03, 0xB8, 0x03, 0x03, 0xB7, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xAD, 0x13, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0D, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xD0, 0x01, 0x18, 0x02, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x10, 0xD0, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x80, 0x10, 0xD0, 0x70, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x21, 0x50, 0x2B, 0x18, 0x2B, 0x39, 0x2B, 0x18, 0x01, 0x2B, 0x19, 0x81, 0x2A, 0xF8, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x87, 0x2B, 0x19, 0x2B, 0x18, 0x2B, 0x19, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xAD, 0x21, 0x92, 0x01, 0x2B, 0x19, 0x83, 0x2B, 0x18, 0x23, 0x38, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x82, 0x10, 0xCF, 0x01, 0x19, 0x01, 0x1A, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x05, + 0x20, 0xCE, 0x80, 0xBB, 0x34, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x0B, 0xD3, 0x95, 0x06, 0xD3, 0x75, 0x81, 0x49, 0x70, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x19, 0x18, 0xAD, 0x80, 0x08, 0xD5, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x01, 0x17, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x1B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x04, 0x03, 0xB7, 0x80, 0x03, 0xB8, 0x01, 0x03, 0xB7, 0x05, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x0A, 0xF5, 0x05, 0x03, 0xB7, 0x81, 0x03, 0x77, 0x18, 0xEE, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x03, 0xB7, 0x03, 0xB8, 0x01, 0x03, 0xB7, 0x81, 0x03, 0xB8, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x11, 0xB0, 0x03, 0xB7, 0x03, 0xB8, 0x02, 0x03, 0xB7, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCE, 0x01, 0x17, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x84, 0x01, 0x17, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x27, 0x18, 0xAD, 0x82, 0x18, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0xCF, 0x01, 0x18, 0x02, 0x01, 0x19, 0x82, 0x18, 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x85, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xD3, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x1A, 0x18, + 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x2D, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x21, 0x92, 0x2B, 0x19, 0x33, 0x19, 0x32, 0xF9, 0x2A, 0x15, 0x18, 0xEF, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x32, 0xF9, 0x33, 0x19, 0x32, 0xF9, 0x02, 0x18, 0xAD, 0x85, 0x21, 0x91, 0x33, 0x19, 0x2A, 0xF9, 0x33, 0x19, 0x2A, 0xF9, 0x2A, 0x97, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x1C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1B, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x03, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x02, 0x20, 0xCF, 0x80, 0x28, 0xCF, 0x10, 0xD3, 0x95, 0x05, 0xD3, 0x75, 0x80, 0x71, 0xD1, 0x05, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xCD, 0x01, 0x20, 0xAE, 0x17, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x85, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x04, 0x03, 0xB7, 0x82, 0x03, 0xB8, 0x03, 0x97, 0x03, 0xB7, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x19, 0x0F, 0x01, 0x03, 0xB7, 0x80, 0x03, 0xB8, 0x02, 0x03, 0xB7, 0x82, 0x11, 0xD1, 0x18, 0xAD, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x04, 0x03, 0xB7, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x03, 0xB7, 0x03, 0x97, 0x02, 0x03, 0xB7, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x20, 0xAD, + 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x82, 0x10, 0xD2, 0x18, 0xAE, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x85, 0x10, 0xCF, 0x01, 0x18, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x18, 0xD0, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x80, 0x10, 0xD2, 0x12, 0x18, 0xAD, 0x86, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x1E, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x2B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x3A, 0xD9, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x3A, 0xF9, 0x01, 0x3A, 0xD9, 0x89, 0x18, 0xAD, 0x20, 0xAD, 0x32, 0x15, 0x3A, 0xD9, 0x3A, 0xF9, 0x3A, 0xDA, 0x3A, 0xD9, 0x32, 0x77, 0x18, 0xCE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x1E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x80, 0x20, 0xCD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x80, 0x20, 0xCF, 0x01, 0x28, 0xCF, 0x80, 0x49, 0x50, 0x0F, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x81, 0xD3, 0x74, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x85, 0xAA, 0xB3, 0x20, 0xCE, 0x18, 0xCE, 0x20, 0xCE, 0x20, 0xAE, 0x20, 0xCE, 0x06, 0x20, 0xAE, 0x14, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x10, 0xD3, 0x08, 0xF3, 0x10, 0xD2, + 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x03, 0x03, 0x98, 0x80, 0x03, 0xB7, 0x01, 0x03, 0x97, 0x80, 0x03, 0xB7, 0x02, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x86, 0x0A, 0xD5, 0x03, 0x97, 0x03, 0x98, 0x03, 0xB8, 0x03, 0x98, 0x03, 0xB8, 0x18, 0xEE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x03, 0x98, 0x80, 0x03, 0xB8, 0x01, 0x03, 0x98, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x04, 0x03, 0x98, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0D, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x15, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x03, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xD0, 0x00, 0xF8, 0x01, 0x19, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x81, 0x08, 0xF7, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x84, 0x08, 0xF5, 0x01, 0x39, 0x01, 0x1A, 0x01, 0x17, 0x00, 0xF7, 0x01, 0x01, 0x1A, 0x80, 0x08, 0xF5, 0x1F, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xAE, 0x2B, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x42, 0xD9, 0x01, 0x42, 0xB9, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x42, 0xB9, 0x88, 0x42, 0xBA, 0x18, 0xAE, 0x31, 0xF5, 0x42, 0xDA, 0x42, 0xD9, 0x42, 0xB9, 0x42, 0xD9, 0x3A, 0x77, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x1B, 0x18, 0xAD, + 0x84, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x19, 0x01, 0x1A, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1C, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x80, 0x59, 0x91, 0x0D, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x81, 0xD3, 0x74, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x81, 0x92, 0x52, 0x30, 0xEF, 0x03, 0x20, 0xCE, 0x06, 0x20, 0xAE, 0x12, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x23, 0x38, 0x81, 0x23, 0x18, 0x23, 0x19, 0x03, 0x23, 0x38, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x21, 0x50, 0x23, 0x18, 0x01, 0x23, 0x38, 0x01, 0x23, 0x18, 0x81, 0x23, 0x38, 0x21, 0xF3, 0x05, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x23, 0x39, 0x01, 0x23, 0x18, 0x81, 0x23, 0x39, 0x23, 0x38, 0x06, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x04, 0x23, 0x38, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x20, 0xAE, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xB0, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x88, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xB0, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x02, 0x18, 0xAD, + 0x80, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x03, 0x01, 0x19, 0x84, 0x01, 0x17, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x00, 0xF9, 0x01, 0x19, 0x10, 0xD3, 0x01, 0x18, 0xAD, 0x83, 0x10, 0xF3, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x19, 0x01, 0x19, 0x82, 0x18, 0xB0, 0x18, 0xAD, 0x18, 0xAE, 0x30, 0x18, 0xAD, 0x82, 0x4A, 0x99, 0x4A, 0xB9, 0x4A, 0x9A, 0x04, 0x18, 0xAD, 0x01, 0x4A, 0xBA, 0x82, 0x4A, 0x9A, 0x42, 0x57, 0x4A, 0x99, 0x01, 0x4A, 0x9A, 0x87, 0x4A, 0xBA, 0x42, 0x37, 0x20, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xCD, 0x1B, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x1A, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x01, 0x01, 0x19, 0x80, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x80, 0x28, 0xCE, 0x02, 0x28, 0xCF, 0x81, 0x28, 0xEF, 0x69, 0xF1, 0x0D, 0xD3, 0x95, 0x03, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x84, 0xD3, 0x35, 0xD3, 0x55, 0xCB, 0x14, 0x41, 0x30, 0x20, 0xAF, 0x01, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x12, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0x8E, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x12, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x42, 0xB9, 0x4A, + 0x99, 0x42, 0xB9, 0x42, 0xBA, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x88, 0x42, 0x57, 0x4A, 0xBA, 0x4A, 0x9A, 0x4A, 0x99, 0x42, 0xB9, 0x4A, 0x9A, 0x42, 0xB9, 0x4A, 0x9A, 0x20, 0xEF, 0x05, 0x18, 0xAD, 0x80, 0x4A, 0x9A, 0x01, 0x42, 0xB9, 0x83, 0x4A, 0xBA, 0x4A, 0xB9, 0x18, 0xAD, 0x18, 0xCD, 0x06, 0x18, 0xAD, 0x82, 0x4A, 0x99, 0x42, 0xB9, 0x4A, 0xBA, 0x01, 0x4A, 0x99, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x16, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xB0, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x83, 0x18, 0xB0, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x82, 0x08, 0xF3, 0x01, 0x1A, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x86, 0x18, 0xAF, 0x01, 0x1A, 0x00, 0xF9, 0x10, 0xD0, 0x18, 0xAD, 0x20, 0xAD, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x19, 0x01, 0x19, 0x81, 0x01, 0x18, 0x10, 0xD0, 0x31, 0x18, 0xAD, 0x02, 0x52, 0x7A, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x52, 0x7A, 0x80, 0x52, 0x9A, 0x03, 0x52, 0x7A, 0x81, 0x4A, 0x18, 0x20, 0xCE, 0x01, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x1F, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x00, 0xF9, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, + 0x1A, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x10, 0xD1, 0x01, 0x17, 0x01, 0x01, 0x19, 0x84, 0x09, 0x17, 0x18, 0xD2, 0x20, 0xCE, 0x20, 0xCF, 0x28, 0xCE, 0x02, 0x28, 0xCF, 0x82, 0x28, 0xEF, 0x30, 0xF0, 0x82, 0x53, 0x0C, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x05, 0xD3, 0x55, 0x83, 0xD3, 0x54, 0xD3, 0x55, 0x7A, 0x11, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xCE, 0x07, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x0F, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x02, 0x6A, 0x3B, 0x80, 0x62, 0x1A, 0x01, 0x6A, 0x3B, 0x80, 0x6A, 0x1B, 0x01, 0x6A, 0x3B, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x20, 0xAD, 0x39, 0x32, 0x01, 0x6A, 0x3B, 0x80, 0x6A, 0x1B, 0x04, 0x6A, 0x3B, 0x80, 0x59, 0xD7, 0x05, 0x18, 0xAD, 0x04, 0x6A, 0x3B, 0x08, 0x18, 0xAD, 0x80, 0x6A, 0x1B, 0x01, 0x6A, 0x3B, 0x85, 0x6A, 0x1B, 0x6A, 0x3B, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x18, 0xCD, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xF3, 0x10, 0xD2, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x0F, 0x18, 0xAD, 0x83, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x1A, 0x00, 0xF7, 0x13, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x82, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x0F, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD1, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0xD0, + 0x01, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x83, 0x10, 0xD3, 0x18, 0xAD, 0x20, 0xAE, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x85, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x2A, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x86, 0x20, 0xAD, 0x5A, 0x5B, 0x5A, 0x5A, 0x5A, 0x7A, 0x29, 0x10, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x5A, 0x5A, 0x5A, 0x7B, 0x03, 0x5A, 0x5A, 0x81, 0x4A, 0x18, 0x20, 0xCE, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x1B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x80, 0x10, 0xD1, 0x03, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x09, 0x1A, 0x18, 0xF2, 0x28, 0xCF, 0x28, 0xCE, 0x01, 0x28, 0xCF, 0x83, 0x28, 0xEF, 0x28, 0xF0, 0x30, 0xF0, 0x82, 0x32, 0x0B, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x81, 0xA2, 0x93, 0x28, 0xCF, 0x07, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x80, 0x20, 0xAE, 0x12, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x02, 0x89, 0xBC, 0x82, 0x91, 0xBC, 0x89, 0xBC, 0x89, 0x9C, 0x01, 0x89, 0xBC, 0x80, 0x89, 0xBB, 0x03, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x89, 0x9B, 0x02, 0x89, 0xBC, 0x83, 0x79, 0x9A, 0x71, + 0x79, 0x89, 0xBB, 0x89, 0x9C, 0x01, 0x89, 0xBC, 0x80, 0x38, 0xF1, 0x04, 0x18, 0xAD, 0x80, 0x89, 0xBC, 0x01, 0x89, 0x9C, 0x01, 0x89, 0xBC, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x86, 0x20, 0xAD, 0x18, 0xAD, 0x89, 0xBC, 0x89, 0x9C, 0x89, 0xBC, 0x89, 0x9C, 0x89, 0xBC, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x0B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x1A, 0x01, 0x17, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x10, 0xCF, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x13, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x82, 0x08, 0xF3, 0x01, 0x19, 0x01, 0x1A, 0x12, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x01, 0x17, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x19, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xD0, 0x18, 0xAE, 0x2E, 0x18, 0xAD, 0x85, 0x62, 0x3A, 0x62, 0x3B, 0x62, 0x5A, 0x62, 0x1A, 0x29, 0x10, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x82, 0x62, 0x3B, 0x62, 0x3A, 0x62, 0x5A, 0x01, 0x62, 0x3B, 0x81, 0x51, 0xF8, 0x20, 0xCE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x21, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x01, 0x01, + 0x19, 0x1A, 0x18, 0xAD, 0x82, 0x01, 0x18, 0x01, 0x19, 0x09, 0x17, 0x01, 0x18, 0xD2, 0x82, 0x09, 0x18, 0x09, 0x1A, 0x09, 0x18, 0x01, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x80, 0x30, 0xD0, 0x01, 0x30, 0xF0, 0x80, 0x82, 0x52, 0x09, 0xD3, 0x95, 0x06, 0xD3, 0x75, 0x03, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x85, 0xD3, 0x15, 0xD3, 0x35, 0x92, 0x53, 0x30, 0xEF, 0x28, 0xCF, 0x28, 0xCE, 0x05, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x09, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x02, 0xA9, 0x3D, 0x80, 0xB1, 0x3D, 0x02, 0xA9, 0x3D, 0x83, 0xB1, 0x3D, 0xB1, 0x1D, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x60, 0xF5, 0x01, 0xA9, 0x3D, 0x85, 0xB1, 0x3D, 0xA9, 0x3D, 0x60, 0xF5, 0x40, 0xD1, 0xB1, 0x1D, 0xB1, 0x3D, 0x01, 0xA9, 0x3D, 0x80, 0x99, 0x1B, 0x04, 0x18, 0xAD, 0x04, 0xA9, 0x3D, 0x08, 0x18, 0xAD, 0x02, 0xA9, 0x3D, 0x81, 0xB1, 0x3D, 0xA9, 0x3D, 0x04, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x00, 0xF7, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x10, 0x18, 0xAD, 0x84, 0x10, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x16, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x03, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, + 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x11, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x84, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xD0, 0x18, 0xAE, 0x2B, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xCD, 0x59, 0xD8, 0x03, 0x6A, 0x1B, 0x80, 0x41, 0x33, 0x01, 0x18, 0xAD, 0x80, 0x6A, 0x3B, 0x02, 0x6A, 0x1B, 0x81, 0x51, 0xB6, 0x20, 0xCF, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x84, 0x10, 0xD2, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD3, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x1A, 0x18, 0xAD, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xD1, 0x01, 0x20, 0xCE, 0x80, 0x18, 0xD1, 0x01, 0x09, 0x3A, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x30, 0xF0, 0x81, 0x38, 0xF0, 0x92, 0x73, 0x09, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x81, 0xD3, 0x34, 0xD3, 0x35, 0x01, 0xD3, 0x34, 0x82, 0xD3, 0x14, 0xD3, 0x15, 0xAA, 0x93, 0x02, 0x28, 0xCF, 0x07, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x80, 0x20, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x09, 0x18, 0xAD, 0x02, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x12, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x05, 0xD0, 0xBE, 0x80, 0xD0, 0x9E, 0x01, 0xD0, 0xBE, 0x02, 0x18, 0xAD, 0x80, + 0x30, 0xB0, 0x04, 0xD0, 0xBE, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0xB8, 0xBC, 0x03, 0xD0, 0xBE, 0x80, 0x68, 0xB5, 0x03, 0x18, 0xAD, 0x04, 0xD0, 0xBE, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x04, 0xD0, 0xBE, 0x03, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x83, 0x08, 0xF3, 0x01, 0x1A, 0x01, 0x19, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x84, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x81, 0x18, 0xD0, 0x01, 0x18, 0x01, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x10, 0xD2, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x84, 0x10, 0xD2, 0x08, 0xD4, 0x08, 0xF3, 0x10, 0xD2, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0D, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x81, 0x18, 0xD0, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x22, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xCE, 0x61, 0xB8, 0x72, 0x1B, 0x71, 0xFB, 0x01, 0x72, 0x1B, 0x88, 0x41, 0x33, 0x20, 0xAD, 0x71, 0xFB, 0x72, 0x1B, 0x71, 0xFB, 0x41, 0x74, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x01, 0x18, + 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x19, 0x18, 0xAD, 0x86, 0x20, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xD1, 0x20, 0xAE, 0x20, 0xCE, 0x20, 0xF1, 0x01, 0x09, 0x3A, 0x01, 0x28, 0xCF, 0x80, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x82, 0x38, 0xF0, 0x39, 0x11, 0xAA, 0xF4, 0x08, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x05, 0xD3, 0x55, 0x05, 0xD3, 0x35, 0x01, 0xD3, 0x14, 0x80, 0xD3, 0x15, 0x01, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x01, 0x28, 0xCE, 0x05, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x80, 0x18, 0xAE, 0x01, 0x20, 0xAD, 0x8C, 0x20, 0xAE, 0x30, 0xEE, 0x61, 0x50, 0x81, 0xB1, 0xA1, 0xF2, 0xC2, 0x33, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0xC2, 0x33, 0xA1, 0xF2, 0x81, 0x91, 0x51, 0x2F, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x10, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x08, 0xF0, 0x3F, 0x83, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0xB0, 0x79, 0x03, 0xF0, 0x3F, 0x80, 0xA0, 0x58, 0x01, 0x18, 0xAD, 0x80, 0x70, 0x95, 0x03, 0xF0, 0x3F, 0x82, 0xE8, 0x3E, 0x28, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0xF0, 0x3F, 0xF0, 0x1F, 0x02, 0xF0, 0x3F, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0xF0, 0x3F, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x86, 0x18, 0xAF, 0x00, 0xF9, 0x01, 0x19, 0x18, 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0xD0, 0x0F, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, + 0x00, 0xF7, 0x18, 0xAE, 0x1F, 0x18, 0xAD, 0x82, 0x10, 0xD0, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD0, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x80, 0x10, 0xD2, 0x1C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x01, 0x19, 0x80, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x21, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x8A, 0x20, 0xCE, 0x69, 0xB9, 0x81, 0xFB, 0x79, 0xDB, 0x79, 0xDC, 0x81, 0xFC, 0x59, 0x76, 0x79, 0xDB, 0x79, 0xDC, 0x81, 0xDC, 0x20, 0xAD, 0x1E, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x19, 0x18, 0xAD, 0x8B, 0x20, 0xAE, 0x09, 0x18, 0x01, 0x19, 0x09, 0x17, 0x18, 0xD0, 0x20, 0xD0, 0x09, 0x17, 0x09, 0x3A, 0x11, 0x38, 0x28, 0xCF, 0x30, 0xCF, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x01, 0x39, 0x11, 0x80, 0xAA, 0xD4, 0x07, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x06, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x81, 0xD3, 0x15, 0xD3, 0x14, 0x01, 0xD3, 0x15, 0x82, 0xD3, 0x14, 0x69, 0xB2, 0x28, 0xEF, 0x04, 0x28, 0xCF, 0x01, 0x28, 0xCE, 0x07, 0x20, 0xCE, 0x89, 0x20, 0xAE, 0x20, 0xCE, 0x41, 0x0F, 0x69, 0x90, 0x99, 0xF2, 0xC2, 0x53, 0xCA, 0x74, 0xD2, 0x74, 0xCA, 0x74, 0xD2, 0x53, + 0x02, 0xCA, 0x53, 0x87, 0xD2, 0x33, 0xD2, 0x53, 0xCA, 0x53, 0xD2, 0x33, 0xCA, 0x33, 0xC2, 0x13, 0x89, 0x91, 0x41, 0x0F, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x13, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x01, 0x01, 0x1A, 0x07, 0x01, 0x19, 0x87, 0x01, 0x1A, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x20, 0x18, 0xAD, 0x87, 0x18, 0xCD, 0x18, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x2A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x17, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x09, 0x17, 0x01, 0x01, 0x19, 0x81, 0x10, 0xCF, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x28, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x84, 0x20, 0xAE, 0x71, 0x99, 0x89, 0xDB, 0x89, 0xBC, 0x81, 0xBC, 0x03, 0x89, 0xBC, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1E, 0x18, 0xAD, 0x80, 0x20, 0xAD, + 0x02, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x06, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xD2, 0x01, 0x01, 0x19, 0x03, 0x09, 0x3A, 0x82, 0x20, 0xF2, 0x28, 0xCF, 0x28, 0xF0, 0x01, 0x30, 0xF0, 0x80, 0x31, 0x11, 0x01, 0x39, 0x11, 0x80, 0xB2, 0xF5, 0x05, 0xD3, 0x95, 0x05, 0xD3, 0x75, 0x06, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x01, 0xD3, 0x15, 0x01, 0xD3, 0x14, 0x86, 0xD2, 0xF4, 0xD2, 0xF5, 0xCA, 0xD4, 0x59, 0x71, 0x30, 0xF0, 0x30, 0xD0, 0x28, 0xEF, 0x05, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x83, 0x28, 0xCE, 0x38, 0xEF, 0x79, 0xB1, 0xBA, 0x53, 0x01, 0xCA, 0x94, 0x80, 0xCA, 0x74, 0x01, 0xD2, 0x73, 0x85, 0xCA, 0x73, 0xCA, 0x54, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0xCA, 0x33, 0x01, 0xCA, 0x53, 0x02, 0xCA, 0x33, 0x80, 0xD2, 0x13, 0x01, 0xCA, 0x13, 0x83, 0xA1, 0xB2, 0x49, 0x0F, 0x18, 0xAD, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x80, 0x08, 0xD5, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x09, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x06, 0x18, + 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAE, 0x1E, 0x18, 0xAD, 0x81, 0x18, 0xAF, 0x01, 0x18, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x10, 0xCF, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x2B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xB0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x27, 0x18, 0xAD, 0x81, 0x20, 0xCE, 0x79, 0x79, 0x01, 0x91, 0x9C, 0x84, 0x91, 0xBC, 0x91, 0x9C, 0x89, 0x9C, 0x89, 0xBC, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x1C, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xF2, 0x17, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x82, 0x20, 0xCE, 0x18, 0xF2, 0x09, 0x19, 0x01, 0x09, 0x1A, 0x82, 0x09, 0x19, 0x20, 0xF3, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x80, 0x31, 0x10, 0x01, 0x39, 0x11, 0x81, 0x41, 0x12, 0xB2, 0xF5, 0x05, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x06, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x80, 0xD3, 0x15, 0x02, 0xD3, 0x14, 0x82, 0xD2, 0xF4, 0xD3, 0x14, 0xD2, 0xF5, 0x01, 0xD2, 0xF4, 0x83, 0x49, 0x30, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xF0, 0x02, 0x28, 0xCF, 0x81, 0x28, 0xEF, 0x28, 0xCE, 0x02, 0x28, 0xCF, 0x81, 0x41, 0x30, 0x89, 0xF1, 0x01, 0xD2, 0x94, 0x82, 0xCA, 0x93, 0xCA, 0x74, 0xD2, 0x74, 0x01, + 0xCA, 0x74, 0x83, 0xCA, 0x53, 0xCA, 0x73, 0xD2, 0x53, 0xD2, 0x54, 0x01, 0xCA, 0x53, 0x8C, 0xCA, 0x54, 0xC2, 0x74, 0x9B, 0x36, 0x83, 0xB8, 0x64, 0x19, 0x6C, 0x39, 0x64, 0x39, 0x6C, 0x1A, 0x8B, 0x57, 0xB2, 0x95, 0xCA, 0x13, 0x91, 0x91, 0x28, 0xCE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x11, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x09, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x0D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xCD, 0x1B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x88, 0x18, 0xAE, 0x18, 0xCF, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xCF, 0x18, 0xAD, 0x18, 0xCD, 0x3E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAF, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x25, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x28, 0xAE, 0x81, 0x59, 0x91, 0x7C, 0x01, 0x99, 0x7C, 0x01, 0x99, 0x9C, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x80, 0x10, 0xD2, + 0x01, 0x01, 0x19, 0x80, 0x08, 0xD5, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x85, 0x08, 0xF4, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x18, 0xAD, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x81, 0x20, 0xD0, 0x20, 0xD1, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x01, 0x30, 0xF0, 0x82, 0x31, 0x10, 0x39, 0x10, 0x41, 0x11, 0x01, 0x41, 0x12, 0x80, 0x92, 0x94, 0x04, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x05, 0xD3, 0x55, 0x04, 0xD3, 0x35, 0x01, 0xD3, 0x15, 0x80, 0xD3, 0x14, 0x01, 0xD2, 0xF4, 0x86, 0xD3, 0x15, 0xD2, 0xF4, 0xD2, 0xF5, 0xD2, 0xF4, 0xD2, 0xD5, 0x79, 0xD2, 0x31, 0x10, 0x02, 0x30, 0xF0, 0x87, 0x28, 0xF0, 0x30, 0xD0, 0x28, 0xEF, 0x28, 0xF0, 0x28, 0xCF, 0x51, 0x50, 0xAA, 0x32, 0xD2, 0x93, 0x01, 0xD2, 0x94, 0x80, 0xCA, 0x93, 0x03, 0xCA, 0x74, 0x8A, 0xD2, 0x74, 0xD2, 0x54, 0xCA, 0x53, 0xCA, 0x54, 0xB2, 0xD5, 0x83, 0xB8, 0x44, 0xFC, 0x1D, 0xBE, 0x06, 0x3F, 0x0C, 0xDB, 0x0B, 0x76, 0x01, 0x13, 0x77, 0x86, 0x0B, 0x76, 0x13, 0x56, 0x0B, 0x76, 0x0B, 0x77, 0x23, 0xF8, 0x69, 0x91, 0x51, 0x0F, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x06, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x08, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, + 0x84, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x1E, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAF, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x18, 0xCF, 0x0C, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x27, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xAF, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x20, 0xAE, 0x89, 0x39, 0x01, 0xA1, 0x7C, 0x01, 0xA1, 0x5D, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x16, 0x18, 0xAD, 0x04, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x80, 0x28, 0xCE, 0x01, 0x28, 0xCF, 0x83, 0x28, 0xEF, 0x28, 0xF0, 0x30, 0xF0, 0x31, 0x10, 0x02, 0x39, 0x11, 0x82, 0x41, 0x12, 0x41, 0x32, 0x8A, + 0x54, 0x03, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x06, 0xD3, 0x55, 0x02, 0xD3, 0x35, 0x02, 0xD3, 0x15, 0x02, 0xD3, 0x14, 0x01, 0xD2, 0xF4, 0x80, 0xD2, 0xF5, 0x01, 0xD2, 0xF4, 0x83, 0xD2, 0xD4, 0xCA, 0xD4, 0x59, 0x51, 0x38, 0xF0, 0x04, 0x30, 0xF0, 0x81, 0x41, 0x30, 0x91, 0xF2, 0x01, 0xD2, 0x94, 0x81, 0xCA, 0x94, 0xCA, 0x74, 0x01, 0xCA, 0x94, 0x80, 0xCA, 0x74, 0x02, 0xD2, 0x74, 0x8A, 0xD2, 0x53, 0xB2, 0xD5, 0x74, 0x19, 0x25, 0x7D, 0x06, 0x3F, 0x06, 0x1F, 0x05, 0x7D, 0x12, 0xB5, 0x19, 0x0F, 0x18, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x1D, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x82, + 0x01, 0x1A, 0x00, 0xF9, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x2C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x01, 0x17, 0x01, 0x01, 0x19, 0x80, 0x18, 0xB0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x2A, 0x18, 0xAD, 0x84, 0x20, 0xCE, 0x91, 0x3A, 0xA9, 0x3D, 0xA9, 0x5D, 0xA9, 0x5C, 0x21, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAE, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x84, 0x20, 0xCF, 0x28, 0xCE, 0x28, 0xCF, 0x28, 0xEF, 0x28, 0xF0, 0x01, 0x30, 0xF0, 0x02, 0x39, 0x11, 0x01, 0x41, 0x32, 0x81, 0x49, 0x32, 0x92, 0x55, 0x01, 0xD3, 0x95, 0x05, 0xD3, 0x75, 0x05, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x02, 0xD3, 0x15, 0x02, 0xD3, 0x14, 0x81, 0xD2, 0xF4, 0xD2, 0xF5, 0x03, 0xD2, 0xF4, 0x01, 0xD2, 0xD4, 0x89, 0xCA, 0xB4, 0x51, 0x72, 0x39, 0x11, 0x38, 0xF1, 0x38, 0xF0, 0x30, 0xF0, 0x81, 0xD2, 0xC2, 0x94, 0xD2, 0x94, 0xD2, 0x93, 0x01, 0xD2, 0x94, 0x01, 0xCA, 0x93, 0x01, 0xD2, 0x74, 0x84, 0xCA, 0x73, 0xD2, 0x74, 0x83, 0xD8, 0x35, 0x3D, 0x06, 0x1F, 0x02, 0x06, 0x3F, 0x81, 0x4C, 0x5A, 0x49, 0x70, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x01, 0x20, 0xAD, 0x82, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x18, + 0xAD, 0x01, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x87, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x29, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x82, 0x00, 0xF9, 0x10, 0xCF, 0x18, 0xAE, 0x2D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x10, 0xD2, 0x08, 0xF3, 0x08, 0xD4, 0x10, 0xD2, 0x07, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x2D, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0xB1, 0x1D, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x1A, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x81, 0x08, 0xD5, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x12, 0x18, + 0xAD, 0x02, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x81, 0x28, 0xCF, 0x20, 0xCF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x01, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x84, 0x41, 0x12, 0x41, 0x32, 0x49, 0x32, 0x49, 0x53, 0x6B, 0x36, 0x01, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x06, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x80, 0xD3, 0x15, 0x04, 0xD3, 0x14, 0x02, 0xD2, 0xF4, 0x80, 0xD2, 0xF5, 0x01, 0xD2, 0xD4, 0x93, 0xD2, 0xD5, 0xD2, 0xD4, 0xCA, 0xD4, 0xCA, 0xB4, 0x59, 0x72, 0x39, 0x11, 0x51, 0x51, 0xB2, 0x53, 0xCA, 0xB4, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xCA, 0x74, 0xD2, 0x74, 0xC2, 0x94, 0x64, 0x5A, 0x1D, 0xBE, 0x02, 0x06, 0x3F, 0x84, 0x1D, 0xBE, 0x64, 0x59, 0xC2, 0x74, 0x99, 0xD2, 0x28, 0xCE, 0x03, 0x20, 0xAE, 0x80, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x19, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x8C, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAE, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x0B, + 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x10, 0xD0, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x34, 0x18, 0xAD, 0x81, 0x18, 0xAF, 0x01, 0x17, 0x03, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x0A, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x81, 0x18, 0xD0, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x82, 0xB8, 0xFE, 0xB8, 0xFD, 0xB8, 0xFE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x83, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x17, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x03, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x81, 0x28, 0xEF, 0x28, 0xF0, 0x01, 0x30, 0xF0, 0x01, 0x39, 0x11, 0x80, 0x41, 0x11, 0x01, 0x41, 0x32, 0x84, 0x49, 0x33, 0x49, 0x53, 0x25, 0x3B, 0x46, 0x5C, 0x6D, 0x7B, 0x01, 0x6D, 0x9A, 0x83, 0x6D, 0x7A, 0x84, 0xF9, 0x9C, 0x78, 0x9C, 0x77, 0x01, 0x9C, 0x78, 0x81, 0x9C, 0x57, 0x9C, 0x78, 0x01, 0x9C, 0x58, 0x88, 0xBB, 0xB6, 0xD3, 0x34, 0xD3, 0x15, 0xD3, 0x34, 0xD3, 0x15, 0xD3, 0x14, + 0xD3, 0x15, 0xD2, 0xF4, 0xCA, 0xF4, 0x02, 0xD2, 0xF4, 0x82, 0xD2, 0xF5, 0xD2, 0xD4, 0xCA, 0xD4, 0x01, 0xD2, 0xD4, 0x85, 0xCA, 0xD4, 0xCA, 0xB4, 0xD2, 0xD4, 0x91, 0xF3, 0x59, 0x72, 0xCA, 0x74, 0x01, 0xD2, 0xB4, 0x81, 0xD2, 0x94, 0xCA, 0x94, 0x01, 0xD2, 0x94, 0x84, 0xCA, 0x94, 0xCA, 0x74, 0xC2, 0xB4, 0x6C, 0x5A, 0x0D, 0xFF, 0x02, 0x06, 0x3F, 0x84, 0x35, 0x3D, 0x83, 0xB8, 0xCA, 0x53, 0xCA, 0x33, 0x89, 0xB1, 0x01, 0x20, 0xCE, 0x06, 0x20, 0xAE, 0x19, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xCD, 0x2B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xCD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xCE, 0x00, 0xF7, 0x24, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x00, 0xF9, 0x82, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x36, 0x18, 0xAD, 0x81, 0x08, 0xF5, 0x00, 0xF9, 0x03, 0x01, 0x19, 0x84, 0x00, 0xF9, 0x08, 0xF5, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x01, 0x19, 0x81, 0x18, 0xD0, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x16, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x89, 0x18, 0xAE, + 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0xC0, 0xDE, 0xC0, 0xFE, 0xC0, 0xDD, 0x18, 0xAE, 0x18, 0xCD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x19, 0x18, 0xAD, 0x86, 0x00, 0xF9, 0x00, 0xFA, 0x08, 0xF4, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x16, 0x18, 0xAD, 0x04, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x80, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x8C, 0x39, 0x11, 0x38, 0xF1, 0x39, 0x11, 0x41, 0x12, 0x41, 0x32, 0x49, 0x32, 0x49, 0x53, 0x51, 0x53, 0x4D, 0x1A, 0x6D, 0x9A, 0x94, 0xB9, 0x9C, 0x98, 0x9C, 0x77, 0x02, 0x9C, 0x78, 0x80, 0x94, 0xB8, 0x01, 0x6D, 0x7A, 0x89, 0x6D, 0x7B, 0x36, 0x7C, 0x36, 0x7D, 0x1E, 0xFE, 0x07, 0x7F, 0x07, 0x5F, 0x1E, 0xDE, 0x36, 0x3D, 0x6D, 0x3A, 0x9C, 0x17, 0x04, 0xD2, 0xF4, 0x80, 0xD2, 0xF5, 0x03, 0xD2, 0xD4, 0x86, 0xCA, 0xD4, 0xD2, 0xB4, 0xCA, 0xD4, 0xD2, 0xB3, 0xCA, 0xB4, 0xC2, 0x94, 0xCA, 0xB4, 0x01, 0xCA, 0x94, 0x81, 0xD2, 0x94, 0xCA, 0x94, 0x02, 0xCA, 0x74, 0x8B, 0x7B, 0xD8, 0x0D, 0xFF, 0x06, 0x3F, 0x06, 0x1F, 0x06, 0x3F, 0x4C, 0xBB, 0x9B, 0x57, 0xD2, 0x33, 0xCA, 0x33, 0xCA, 0x53, 0x61, 0x50, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x05, 0x20, 0xAE, 0x16, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x1A, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x02, 0x08, 0xF3, 0x83, 0x10, 0xD2, 0x20, 0xAE, 0x10, 0xD2, 0x10, 0xD3, 0x01, + 0x08, 0xF3, 0x82, 0x18, 0xD0, 0x18, 0xAD, 0x10, 0xD2, 0x02, 0x08, 0xF3, 0x80, 0x10, 0xD0, 0x07, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x02, 0x08, 0xF3, 0x88, 0x10, 0xD2, 0x18, 0xAD, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xD3, 0x08, 0xF3, 0x18, 0xD0, 0x18, 0xAE, 0x10, 0xD2, 0x02, 0x08, 0xF3, 0x82, 0x10, 0xD1, 0x18, 0xAD, 0x10, 0xD1, 0x02, 0x08, 0xF3, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x10, 0xD2, 0x02, 0x08, 0xF3, 0x87, 0x10, 0xD1, 0x18, 0xAD, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xF3, 0x08, 0xF3, 0x10, 0xD0, 0x20, 0xAD, 0x08, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x25, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x02, 0x01, 0x19, 0x82, 0x00, 0xF9, 0x10, 0xD0, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x32, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x85, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x09, 0x17, 0x01, 0x01, 0x19, 0x80, 0x18, 0xCF, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xCD, 0x16, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x82, 0xC8, 0xBE, 0xC8, 0xDE, 0xC8, 0xBE, 0x01, 0x18, 0xAD, 0x02, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x05, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x16, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, + 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x02, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x80, 0x39, 0x12, 0x01, 0x41, 0x32, 0x82, 0x49, 0x33, 0x51, 0x53, 0xA2, 0xB5, 0x04, 0xD3, 0x75, 0x03, 0xD3, 0x55, 0x82, 0xD3, 0x35, 0xD3, 0x55, 0xD3, 0x34, 0x03, 0xD3, 0x35, 0x8B, 0xBB, 0x96, 0xA4, 0x37, 0x74, 0xF9, 0x4D, 0xBC, 0x2E, 0x7E, 0x0E, 0xDF, 0x55, 0x9B, 0x84, 0x98, 0xC3, 0x35, 0xD2, 0xF4, 0xD2, 0xD4, 0xD2, 0xF5, 0x01, 0xD2, 0xD4, 0x81, 0xD2, 0xB5, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x80, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x94, 0xBA, 0xB4, 0xBA, 0xF6, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x73, 0x9B, 0x76, 0x1D, 0xBE, 0x06, 0x1F, 0x06, 0x3F, 0x0D, 0xDF, 0x64, 0x3A, 0xB2, 0xD5, 0xCA, 0x54, 0xD2, 0x53, 0xCA, 0x53, 0xC2, 0x94, 0x59, 0xB1, 0x28, 0xCE, 0x28, 0xCF, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x06, 0x20, 0xAE, 0x15, 0x18, 0xAD, 0x85, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x86, 0x08, 0xF3, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAD, 0x00, 0xF6, 0x01, 0x01, 0x19, 0x89, 0x01, 0x1A, 0x10, 0xD3, 0x18, 0xAD, 0x01, 0x16, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD3, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x18, 0xAD, 0x10, 0xD3, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF9, 0x00, 0xF6, 0x18, 0xAD, 0x08, 0xF6, 0x01, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x10, 0xD3, 0x18, 0xCD, 0x08, + 0xF6, 0x02, 0x01, 0x19, 0x88, 0x10, 0xD3, 0x18, 0xAD, 0x08, 0xF3, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF7, 0x18, 0xAE, 0x00, 0xF6, 0x02, 0x01, 0x19, 0x82, 0x08, 0xF3, 0x18, 0xCD, 0x00, 0xF7, 0x01, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x82, 0x10, 0xD1, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x26, 0x18, 0xAD, 0x80, 0x18, 0xB0, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x10, 0xCF, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x31, 0x18, 0xAD, 0x80, 0x01, 0x1A, 0x06, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xAF, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xCD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x8B, 0x20, 0xAD, 0x40, 0xB0, 0xA0, 0x9A, 0xD0, 0xBE, 0xD0, 0x9E, 0xD0, 0xBE, 0xB8, 0x9C, 0x78, 0xB5, 0x28, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x20, 0xAD, 0x14, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x03, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x80, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, + 0x39, 0x11, 0x01, 0x41, 0x12, 0x84, 0x49, 0x32, 0x49, 0x33, 0x51, 0x73, 0xBB, 0x15, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x05, 0xD3, 0x55, 0x81, 0xD3, 0x35, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x01, 0xD3, 0x14, 0x83, 0xD3, 0x35, 0xD3, 0x15, 0xD3, 0x14, 0xD3, 0x15, 0x01, 0xD2, 0xF5, 0x88, 0xD2, 0xF4, 0x9B, 0xF7, 0x6D, 0x1A, 0x2E, 0x3D, 0x45, 0xBC, 0x94, 0x18, 0xD2, 0xD4, 0xCA, 0xD4, 0xD2, 0xD4, 0x02, 0xD2, 0xB4, 0x81, 0xCA, 0xB4, 0xD2, 0xB4, 0x02, 0xD2, 0x94, 0x84, 0xC2, 0xD4, 0x4C, 0xDB, 0x7B, 0xD8, 0x9B, 0x57, 0x44, 0xFC, 0x01, 0x06, 0x3F, 0x89, 0x1D, 0xBE, 0x83, 0xD8, 0xC2, 0x94, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x33, 0xCA, 0x53, 0xB2, 0xB5, 0x33, 0xB8, 0x28, 0xF0, 0x02, 0x28, 0xCF, 0x01, 0x20, 0xCF, 0x04, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x16, 0x18, 0xAD, 0x88, 0x18, 0x8E, 0x20, 0xCD, 0x10, 0xD1, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD1, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x17, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x01, 0x01, 0x1A, 0x84, 0x01, 0x19, 0x00, 0xF6, 0x18, 0xAD, 0x08, 0xF6, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x86, 0x10, 0xD3, 0x18, 0xAD, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x39, 0x01, 0x1A, 0x08, 0xF3, 0x07, 0x18, 0xAD, 0x86, 0x08, 0xF3, 0x01, 0x1A, 0x01, 0x39, 0x01, 0x19, 0x08, 0xF7, 0x18, 0xAD, 0x08, 0xF6, 0x02, 0x01, 0x19, 0x88, 0x10, 0xD3, 0x18, 0xAD, 0x08, 0xF7, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD3, 0x20, 0xAD, 0x08, 0xF3, 0x02, 0x01, 0x19, 0x88, + 0x08, 0xF6, 0x18, 0xAD, 0x08, 0xF6, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD3, 0x18, 0xAD, 0x08, 0xF7, 0x02, 0x01, 0x19, 0x81, 0x08, 0xF3, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xCF, 0x00, 0xF8, 0x01, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x10, 0xD0, 0x27, 0x18, 0xAD, 0x87, 0x18, 0xB0, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xCF, 0x18, 0xAD, 0x18, 0xCD, 0x33, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x86, 0x20, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x10, 0xD0, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x83, 0x20, 0xAE, 0x40, 0xB0, 0xD0, 0x7D, 0xD8, 0x7E, 0x01, 0xD8, 0x9F, 0x85, 0xE0, 0x7F, 0xD8, 0x9E, 0xD8, 0x9F, 0xB8, 0x7B, 0x28, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x20, 0xAD, 0x12, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x80, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x01, 0x28, 0xCF, 0x02, 0x28, 0xEF, 0x01, 0x30, 0xF0, 0x80, 0x31, 0x10, 0x02, 0x39, 0x11, 0x01, 0x41, 0x32, 0x82, 0x49, 0x33, + 0x51, 0x74, 0xBB, 0x14, 0x04, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x81, 0xD3, 0x35, 0xD3, 0x34, 0x02, 0xD3, 0x35, 0x82, 0xD3, 0x14, 0xD3, 0x35, 0xD3, 0x15, 0x01, 0xD3, 0x14, 0x80, 0xD3, 0x15, 0x03, 0xD2, 0xF4, 0x88, 0xD2, 0xF5, 0xD2, 0xD4, 0xC3, 0x35, 0x84, 0x78, 0x4D, 0x7B, 0x4D, 0x5B, 0xAB, 0x96, 0xD2, 0xB4, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x81, 0xCA, 0x94, 0xCA, 0xB4, 0x01, 0xD2, 0x94, 0x82, 0xD2, 0x73, 0xC2, 0xB4, 0x5C, 0x9A, 0x01, 0x06, 0x1F, 0x81, 0x06, 0x3F, 0x74, 0x19, 0x01, 0xD2, 0x73, 0x01, 0xCA, 0x53, 0x84, 0xD2, 0x33, 0xCA, 0x53, 0xAA, 0xF6, 0x15, 0x3C, 0x29, 0x51, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x04, 0x20, 0xAE, 0x15, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x03, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x18, 0xCD, 0x1A, 0x18, 0xAD, 0x8C, 0x08, 0xF3, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF6, 0x18, 0xAD, 0x08, 0xF6, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF3, 0x18, 0xAD, 0x00, 0xF6, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x10, 0xD3, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x10, 0xD3, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x08, 0xF6, 0x18, 0xAD, 0x00, 0xF6, 0x02, 0x01, 0x19, 0x82, 0x08, 0xF3, 0x18, 0xAD, 0x08, 0xF6, 0x02, 0x01, 0x19, 0x82, 0x08, 0xF3, 0x18, 0xAE, 0x08, 0xF3, 0x02, 0x01, 0x19, 0x83, 0x00, 0xF6, 0x18, 0xAE, 0x08, 0xF6, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x08, 0xF3, 0x18, 0xAD, 0x00, 0xF6, 0x02, 0x01, + 0x19, 0x81, 0x08, 0xF3, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x82, 0x01, 0x18, 0x10, 0xCF, 0x20, 0xAE, 0x25, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x18, 0xCF, 0x36, 0x18, 0xAD, 0x80, 0x08, 0xF6, 0x04, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x83, 0x10, 0xB0, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x88, 0x20, 0xAD, 0x20, 0x8D, 0x18, 0xAD, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xD3, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0xB0, 0x7A, 0x01, 0xE8, 0x5F, 0x8A, 0xE0, 0x7F, 0xE8, 0x5F, 0xE8, 0x7F, 0xE0, 0x7F, 0xE8, 0x5F, 0xE0, 0x7F, 0x98, 0x98, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x20, 0xAD, 0x17, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x18, 0xAD, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x07, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x80, 0x20, 0xCF, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x01, 0x30, 0xF0, 0x81, 0x31, 0x10, 0x39, 0x10, 0x01, 0x39, 0x11, 0x85, 0x41, 0x12, 0x41, 0x32, 0x49, 0x32, 0x51, 0x53, + 0xBB, 0x15, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x83, 0xD3, 0x54, 0xD3, 0x55, 0xD3, 0x35, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x82, 0xD3, 0x15, 0xCB, 0x34, 0xD3, 0x15, 0x01, 0xD3, 0x14, 0x86, 0xD3, 0x15, 0xD3, 0x14, 0xD2, 0xF4, 0xD2, 0xF5, 0xD2, 0xF4, 0xCA, 0xF4, 0xD2, 0xF4, 0x01, 0xD2, 0xD4, 0x80, 0xD2, 0xD5, 0x01, 0xD2, 0xD4, 0x85, 0xBB, 0x55, 0x74, 0x99, 0x35, 0xDC, 0x84, 0x39, 0xC2, 0xF4, 0xD2, 0xB4, 0x02, 0xD2, 0x94, 0x84, 0xCA, 0x93, 0xD2, 0x94, 0xD2, 0x74, 0xCA, 0x74, 0x9B, 0x76, 0x01, 0x06, 0x1F, 0x81, 0x83, 0xD8, 0xC2, 0x95, 0x03, 0xCA, 0x53, 0x82, 0x7B, 0xB8, 0x06, 0x3F, 0x2A, 0x34, 0x01, 0x30, 0xF0, 0x81, 0x30, 0xEF, 0x30, 0xF0, 0x04, 0x28, 0xCF, 0x04, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x10, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF9, 0x08, 0xD5, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x19, 0x18, 0xAD, 0x91, 0x18, 0xAE, 0x08, 0xF3, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF6, 0x18, 0xAD, 0x08, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF3, 0x18, 0xAD, 0x08, 0xF6, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF3, 0x07, 0x18, 0xAD, 0x87, 0x08, 0xF3, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF6, 0x18, 0xAD, 0x00, 0xF6, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x08, 0xF3, 0x18, 0xAE, 0x00, 0xF6, 0x02, 0x01, 0x19, 0x82, 0x08, 0xF3, 0x18, 0xAD, 0x08, 0xD4, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, + 0x08, 0xF6, 0x18, 0xAD, 0x08, 0xF6, 0x02, 0x01, 0x19, 0x82, 0x08, 0xF3, 0x18, 0xAD, 0x08, 0xF6, 0x01, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x04, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0x2B, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x00, 0xF9, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x31, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x04, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x82, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x83, 0x38, 0xB0, 0xF0, 0x5F, 0xE8, 0x3F, 0xF0, 0x3F, 0x01, 0xF0, 0x5F, 0x02, 0xF0, 0x3F, 0x81, 0xF0, 0x5F, 0xE8, 0x3F, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x11, 0x18, 0xAD, 0x04, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x04, 0x28, 0xCF, 0x80, 0x30, 0xEF, 0x02, 0x30, 0xF0, 0x02, 0x39, 0x11, 0x85, 0x41, 0x12, 0x41, 0x32, 0x49, 0x33, 0x51, 0x73, 0xBB, 0x35, 0xD3, 0x95, 0x03, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x04, 0xD3, 0x35, 0x81, 0xCB, 0x35, 0xD3, 0x15, 0x03, 0xD3, 0x14, 0x02, 0xD2, 0xF4, + 0x01, 0xD2, 0xF5, 0x82, 0xCA, 0xD4, 0xD2, 0xF4, 0xCA, 0xD4, 0x01, 0xD2, 0xD4, 0x81, 0xCA, 0xB4, 0xD2, 0xB4, 0x01, 0xCA, 0xB4, 0x83, 0x8B, 0xF8, 0x3D, 0x5C, 0x64, 0x99, 0xC2, 0xD4, 0x01, 0xD2, 0x94, 0x01, 0xCA, 0x74, 0x80, 0xD2, 0x74, 0x01, 0xCA, 0x74, 0x8B, 0x54, 0xBB, 0x5C, 0x9A, 0x35, 0x3D, 0x1D, 0xBE, 0x4C, 0xBB, 0x93, 0x77, 0x9B, 0x36, 0x44, 0xFC, 0x06, 0x1F, 0x1B, 0xF9, 0x39, 0x11, 0x39, 0x10, 0x03, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x03, 0x28, 0xCF, 0x04, 0x20, 0xCE, 0x04, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x02, 0x01, 0x19, 0x83, 0x00, 0xF6, 0x18, 0xAD, 0x08, 0xF7, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x86, 0x10, 0xD3, 0x18, 0xAD, 0x08, 0xF6, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF3, 0x07, 0x18, 0xAD, 0x86, 0x08, 0xF3, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF6, 0x18, 0xAD, 0x08, 0xF6, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x08, 0xF3, 0x18, 0xAE, 0x00, 0xF6, 0x01, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x10, 0xD3, 0x18, 0xAD, 0x10, 0xD3, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x82, 0x08, 0xF6, 0x18, 0xAD, 0x08, 0xF6, 0x02, 0x01, 0x19, 0x86, 0x08, 0xF3, 0x20, 0xAD, 0x08, 0xF6, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x02, 0x01, 0x1A, 0x80, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, + 0x01, 0x19, 0x00, 0xF9, 0x2C, 0x18, 0xAD, 0x81, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x82, 0x00, 0xF9, 0x10, 0xCF, 0x18, 0xAE, 0x31, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x03, 0x01, 0x19, 0x84, 0x08, 0xF4, 0x10, 0xF3, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x83, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x18, 0xCE, 0x12, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x50, 0x92, 0x01, 0xF8, 0x3F, 0x80, 0xF0, 0x3F, 0x03, 0xF8, 0x3F, 0x83, 0xF8, 0x1F, 0xF0, 0x3F, 0xF8, 0x3F, 0x50, 0x92, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x10, 0x18, 0xAD, 0x05, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x03, 0x30, 0xF0, 0x02, 0x39, 0x11, 0x84, 0x41, 0x12, 0x41, 0x32, 0x49, 0x32, 0x69, 0xB3, 0xC3, 0x55, 0x06, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x80, 0xD3, 0x15, 0x01, 0xD3, 0x35, 0x02, 0xD3, 0x14, 0x01, 0xD2, 0xF5, 0x03, 0xD2, 0xF4, 0x05, 0xD2, 0xD4, 0x81, 0xCA, 0xD4, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x94, 0xCA, 0xB4, 0xD2, 0x94, 0x9B, 0x97, 0x45, 0x3C, 0x6C, 0x59, 0xC2, 0xB4, 0xCA, 0x74, 0xD2, 0x74, 0xD2, 0x73, 0xCA, 0x73, + 0xD2, 0x73, 0xC2, 0x94, 0x6C, 0x39, 0xC2, 0x94, 0xCA, 0x53, 0x8B, 0x98, 0x4C, 0xBB, 0x0D, 0xFF, 0x06, 0x3F, 0x0D, 0x7E, 0x39, 0x72, 0x02, 0x39, 0x11, 0x80, 0x38, 0xF0, 0x02, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x03, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x0E, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x03, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x20, 0xAD, 0x1C, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x00, 0xF6, 0x18, 0xAD, 0x08, 0xF6, 0x02, 0x01, 0x19, 0x83, 0x10, 0xD3, 0x18, 0xAD, 0x00, 0xF6, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD3, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD3, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x08, 0xF6, 0x18, 0xAD, 0x08, 0xF6, 0x02, 0x01, 0x19, 0x88, 0x08, 0xF3, 0x18, 0xAD, 0x00, 0xF6, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x1A, 0x08, 0xF3, 0x18, 0xAD, 0x08, 0xF3, 0x02, 0x01, 0x19, 0x83, 0x00, 0xF6, 0x18, 0xAD, 0x00, 0xF6, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x86, 0x08, 0xF3, 0x18, 0xAD, 0x00, 0xF6, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD3, 0x01, 0x18, 0xAD, 0x81, 0x10, 0xD0, 0x00, 0xF9, 0x04, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x01, 0x17, 0x2D, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x10, 0xD0, 0x2B, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xCD, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x10, + 0xCF, 0x1C, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x13, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x50, 0x92, 0x09, 0xF8, 0x1F, 0x80, 0x50, 0x92, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x04, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x81, 0x28, 0xCF, 0x28, 0xCE, 0x03, 0x28, 0xCF, 0x02, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x85, 0x41, 0x11, 0x41, 0x12, 0x41, 0x32, 0x49, 0x33, 0x92, 0x54, 0xD3, 0x95, 0x03, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x80, 0xD3, 0x55, 0x04, 0xD3, 0x35, 0x03, 0xD3, 0x14, 0x02, 0xD2, 0xF4, 0x81, 0xD2, 0xF5, 0xD2, 0xF4, 0x01, 0xD2, 0xD4, 0x85, 0xCA, 0xD4, 0xD2, 0xD4, 0xCA, 0xD4, 0xD2, 0xD4, 0xD2, 0xB4, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x80, 0xCA, 0xB4, 0x02, 0xD2, 0x94, 0x90, 0xCA, 0x94, 0x9B, 0x77, 0x44, 0xDC, 0x73, 0xF9, 0xCA, 0x73, 0xCA, 0x74, 0xD2, 0x54, 0xCA, 0x73, 0xCA, 0x53, 0xC2, 0x94, 0x35, 0x1C, 0x6C, 0x3A, 0xC2, 0x94, 0xD2, 0x53, 0xCA, 0x34, 0x83, 0xB8, 0x5A, 0x55, 0x01, 0x41, 0x32, 0x80, 0x39, 0x12, 0x01, 0x39, 0x11, 0x80, 0x39, 0x10, 0x02, 0x30, 0xF0, + 0x81, 0x28, 0xF0, 0x28, 0xEF, 0x03, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x04, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x0F, 0x18, 0xAD, 0x05, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x1A, 0x18, 0xAD, 0x81, 0x08, 0xF3, 0x00, 0xFA, 0x01, 0x01, 0x19, 0x82, 0x08, 0xF6, 0x18, 0xAD, 0x00, 0xF6, 0x01, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x08, 0xF3, 0x18, 0xAE, 0x08, 0xF6, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x01, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x8F, 0x01, 0x1A, 0x08, 0xF7, 0x18, 0xAD, 0x01, 0x16, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x18, 0xAD, 0x08, 0xF6, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF3, 0x18, 0xAD, 0x08, 0xF3, 0x02, 0x01, 0x19, 0x82, 0x08, 0xF6, 0x18, 0xAD, 0x00, 0xF6, 0x01, 0x01, 0x19, 0x88, 0x01, 0x1A, 0x08, 0xF3, 0x18, 0xAD, 0x08, 0xF6, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD3, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x00, 0xF7, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x2E, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x00, 0xF9, 0x82, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xCF, 0x05, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAE, 0x24, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xB0, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xD0, 0x1B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x01, 0x17, 0x01, 0x01, 0x19, + 0x80, 0x00, 0xF9, 0x11, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x07, 0x18, 0xAD, 0x80, 0x40, 0x90, 0x09, 0xF8, 0x1F, 0x80, 0x28, 0xAF, 0x17, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x20, 0xAD, 0x01, 0x01, 0x19, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x80, 0x28, 0xF0, 0x02, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x80, 0x41, 0x12, 0x01, 0x41, 0x32, 0x81, 0x69, 0xD3, 0xC3, 0x55, 0x01, 0xD3, 0x95, 0x03, 0xD3, 0x75, 0x05, 0xD3, 0x55, 0x81, 0xD3, 0x35, 0xCB, 0x55, 0x02, 0xD3, 0x35, 0x80, 0xD3, 0x15, 0x03, 0xD3, 0x14, 0x04, 0xD2, 0xF4, 0x81, 0xCA, 0xD4, 0xD2, 0xF4, 0x01, 0xD2, 0xD4, 0x02, 0xD2, 0xB4, 0x02, 0xCA, 0xB4, 0x81, 0xD2, 0xB4, 0xCA, 0xB4, 0x02, 0xD2, 0x94, 0x85, 0xCA, 0x94, 0xD2, 0x74, 0xCA, 0x74, 0x8B, 0x78, 0x44, 0x7C, 0xA3, 0x16, 0x01, 0xD2, 0x53, 0x86, 0xCA, 0x54, 0xCA, 0x53, 0xC2, 0x94, 0x25, 0x7D, 0x0D, 0xDF, 0x83, 0xB8, 0xD2, 0x33, 0x01, 0xCA, 0x33, 0x81, 0xBA, 0x13, 0x79, 0x93, 0x01, 0x41, 0x12, 0x80, 0x41, 0x11, 0x01, 0x39, 0x11, 0x82, 0x38, 0xF0, 0x30, 0xF0, 0x28, 0xF0, 0x01, 0x30, 0xD0, 0x80, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x05, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAE, 0x0B, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, + 0xCD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF9, 0x08, 0xF5, 0x1D, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF3, 0x02, 0x01, 0x19, 0x82, 0x08, 0xF7, 0x18, 0xAD, 0x00, 0xF6, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x08, 0xF3, 0x18, 0xAD, 0x08, 0xF6, 0x02, 0x01, 0x19, 0x82, 0x08, 0xF3, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF3, 0x02, 0x01, 0x19, 0x88, 0x01, 0x16, 0x20, 0xAD, 0x08, 0xF6, 0x01, 0x1A, 0x00, 0xF9, 0x01, 0x19, 0x10, 0xF3, 0x18, 0xAD, 0x01, 0x16, 0x02, 0x01, 0x19, 0x82, 0x08, 0xF3, 0x18, 0xAD, 0x10, 0xD4, 0x01, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x08, 0xF6, 0x20, 0xAD, 0x00, 0xF6, 0x01, 0x01, 0x19, 0x87, 0x01, 0x1A, 0x08, 0xF3, 0x18, 0xAD, 0x08, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF3, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xD0, 0x00, 0xF7, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF4, 0x20, 0xCD, 0x2F, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x10, 0xD0, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x20, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x89, 0x10, 0xCF, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xCF, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAE, 0x31, 0x18, 0xAD, 0x84, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x04, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0xD0, 0x3C, 0x07, 0xF8, + 0x1F, 0x83, 0xD0, 0x3C, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x83, 0x00, 0xF9, 0x01, 0x19, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x04, 0x28, 0xCF, 0x03, 0x30, 0xF0, 0x02, 0x39, 0x11, 0x85, 0x41, 0x11, 0x41, 0x12, 0x51, 0x93, 0xAA, 0xD4, 0xD3, 0x75, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x05, 0xD3, 0x55, 0x02, 0xD3, 0x35, 0x01, 0xD3, 0x14, 0x80, 0xD3, 0x15, 0x03, 0xD3, 0x14, 0x80, 0xD3, 0x15, 0x03, 0xD2, 0xF4, 0x02, 0xD2, 0xD4, 0x80, 0xCA, 0xD4, 0x01, 0xD2, 0xB4, 0x82, 0xD2, 0xD4, 0xD2, 0xB4, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x81, 0xD2, 0x94, 0xD2, 0xB4, 0x01, 0xCA, 0x94, 0x90, 0xD2, 0x94, 0xCA, 0x74, 0xCA, 0x73, 0xCA, 0x74, 0xD2, 0x74, 0xC2, 0x95, 0x6B, 0xB9, 0x6B, 0x99, 0xCA, 0x54, 0xCA, 0x53, 0xD2, 0x54, 0xCA, 0x33, 0xC2, 0x94, 0x24, 0xFD, 0x06, 0x3F, 0x35, 0x1D, 0xB2, 0x95, 0x02, 0xCA, 0x13, 0x84, 0xB9, 0xF3, 0x79, 0x92, 0x41, 0x11, 0x41, 0x12, 0x38, 0xF1, 0x01, 0x39, 0x11, 0x80, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x02, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x05, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x0B, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCF, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x8C, 0x08, + 0xF3, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF6, 0x18, 0xAD, 0x00, 0xF6, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD3, 0x18, 0xAD, 0x00, 0xF6, 0x02, 0x01, 0x19, 0x81, 0x10, 0xD3, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x10, 0xD3, 0x02, 0x01, 0x19, 0x82, 0x08, 0xF7, 0x18, 0xAD, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x08, 0xF3, 0x18, 0xAE, 0x00, 0xF6, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x08, 0xF3, 0x18, 0xAD, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x08, 0xF6, 0x18, 0xAD, 0x08, 0xF6, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x86, 0x10, 0xD3, 0x18, 0xAD, 0x08, 0xF6, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x03, 0x18, 0xAD, 0x86, 0x18, 0xCE, 0x10, 0xD2, 0x10, 0xF3, 0x08, 0xF3, 0x10, 0xD1, 0x18, 0xAD, 0x18, 0xAE, 0x30, 0x18, 0xAD, 0x80, 0x18, 0xB0, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x18, 0xB0, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x25, 0x18, 0xAD, 0x87, 0x18, 0xCF, 0x01, 0x18, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x19, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x81, 0x00, 0xFA, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x02, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x40, 0x90, 0xF0, 0x3F, 0x06, 0xF8, 0x1F, 0x82, 0x60, 0x73, 0x20, 0xAD, 0x20, 0xAE, 0x13, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, + 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x82, 0x20, 0xCD, 0x20, 0xAE, 0x20, 0xAD, 0x03, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x80, 0x28, 0xCE, 0x03, 0x28, 0xCF, 0x81, 0x30, 0xEF, 0x28, 0xF0, 0x02, 0x30, 0xF0, 0x82, 0x39, 0x10, 0x39, 0x11, 0x39, 0x12, 0x01, 0x41, 0x12, 0x83, 0x82, 0x33, 0xCB, 0x55, 0xD3, 0x75, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x03, 0xD3, 0x55, 0x04, 0xD3, 0x35, 0x82, 0xD3, 0x34, 0xD3, 0x14, 0xD3, 0x35, 0x01, 0xD3, 0x14, 0x05, 0xD2, 0xF4, 0x02, 0xD2, 0xD4, 0x81, 0xCA, 0xD4, 0xD2, 0xD4, 0x03, 0xD2, 0xB4, 0x80, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x80, 0xCA, 0xB4, 0x02, 0xD2, 0x94, 0x02, 0xCA, 0x74, 0x01, 0xCA, 0x73, 0x01, 0xCA, 0x53, 0x84, 0xCA, 0x74, 0xAA, 0xB6, 0x5B, 0x7A, 0xBA, 0x74, 0xCA, 0x53, 0x01, 0xCA, 0x33, 0x86, 0xC2, 0x54, 0x4B, 0xFB, 0x05, 0x9F, 0x0D, 0x7F, 0x8B, 0x57, 0xC9, 0xF3, 0xCA, 0x13, 0x01, 0xC9, 0xF3, 0x86, 0xA9, 0xB3, 0x59, 0x52, 0x41, 0x12, 0x39, 0x31, 0x39, 0x11, 0x31, 0x11, 0x31, 0x10, 0x01, 0x30, 0xF0, 0x81, 0x28, 0xF0, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x05, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x0D, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xD3, 0x10, 0xD2, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x1C, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x01, 0x10, 0xD3, 0x83, 0x08, 0xF3, 0x10, 0xD2, 0x18, 0xAD, 0x10, 0xD2, + 0x02, 0x08, 0xF3, 0x82, 0x18, 0xD1, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x82, 0x10, 0xD3, 0x10, 0xB0, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x10, 0xB0, 0x10, 0xD3, 0x01, 0x08, 0xF3, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x89, 0x10, 0xD3, 0x10, 0xD0, 0x18, 0xAD, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xD3, 0x08, 0xF3, 0x10, 0xD0, 0x18, 0xAD, 0x10, 0xD0, 0x01, 0x08, 0xF3, 0x84, 0x10, 0xD3, 0x10, 0xD2, 0x18, 0xAD, 0x10, 0xD2, 0x10, 0xD4, 0x01, 0x08, 0xF3, 0x82, 0x18, 0xD1, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x81, 0x10, 0xD3, 0x18, 0xD1, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x30, 0x18, 0xAD, 0x89, 0x18, 0xB0, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x23, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x85, 0x01, 0x18, 0x10, 0xCF, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x1E, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x13, 0x18, 0xAD, 0x89, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x81, 0x40, 0x91, 0xE0, 0x1D, 0x04, 0xF8, 0x1F, 0x80, 0x70, 0x74, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x84, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x10, 0xD2, 0x20, 0xCD, 0x02, 0x18, + 0xAD, 0x83, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x10, 0xD1, 0x01, 0x01, 0x19, 0x86, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xCD, 0x20, 0xAE, 0x20, 0xCD, 0x05, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x82, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xEF, 0x03, 0x30, 0xF0, 0x80, 0x39, 0x10, 0x01, 0x39, 0x11, 0x85, 0x39, 0x12, 0x41, 0x32, 0x49, 0x53, 0xB2, 0xF4, 0xD3, 0x95, 0xDB, 0x95, 0x05, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x83, 0xD3, 0x34, 0x84, 0xF9, 0x46, 0x7D, 0x1F, 0x5E, 0x02, 0x07, 0xDF, 0x08, 0x07, 0xBF, 0x88, 0x07, 0x9F, 0x1F, 0x1E, 0x36, 0x7D, 0x36, 0x7C, 0x4D, 0xDB, 0x65, 0x3A, 0x84, 0x98, 0x9B, 0xF7, 0xC2, 0xF5, 0x03, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x84, 0xCA, 0x74, 0xCA, 0x73, 0xD2, 0x53, 0xD2, 0x54, 0xCA, 0x74, 0x02, 0xCA, 0x53, 0x8B, 0xD2, 0x53, 0x72, 0xD9, 0xAA, 0x76, 0xCA, 0x33, 0xD2, 0x33, 0xCA, 0x13, 0xCA, 0x33, 0x1C, 0x7E, 0x05, 0x9F, 0x05, 0xFF, 0x5C, 0x7A, 0xCA, 0x13, 0x02, 0xC9, 0xF3, 0x82, 0xD1, 0xF3, 0x91, 0x93, 0x49, 0x11, 0x02, 0x39, 0x11, 0x80, 0x31, 0x10, 0x02, 0x30, 0xF0, 0x01, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x04, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x0A, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x83, 0x20, 0x8D, 0x18, 0xAD, 0x18, + 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x2D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xD0, 0x00, 0xF9, 0x05, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x26, 0x01, 0x19, 0x81, 0x01, 0x18, 0x10, 0xB0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x1E, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD1, 0x01, 0x08, 0xF3, 0x82, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x84, 0x70, 0x74, 0x90, 0x77, 0x88, 0x56, 0x88, 0x76, 0x38, 0x8F, 0x03, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x11, 0x18, 0xAD, 0x87, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xCE, 0x08, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x08, 0xF7, 0x18, 0xCE, 0x20, 0xAD, 0x03, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x06, 0x28, 0xCF, 0x80, 0x30, 0xEF, 0x02, 0x30, 0xF0, 0x01, 0x31, 0x11, 0x86, 0x38, 0xF1, 0x39, 0x11, 0x41, 0x11, 0x41, 0x32, 0x61, 0x93, 0xC3, 0x55, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x02, 0xD3, + 0x75, 0x02, 0xD3, 0x55, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x81, 0xB3, 0xD6, 0x27, 0x1D, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x81, 0x07, 0x7F, 0x07, 0x9F, 0x06, 0x07, 0x7F, 0x80, 0x07, 0x5F, 0x06, 0x07, 0x7F, 0x01, 0x07, 0x9F, 0x83, 0x1E, 0xFE, 0x46, 0x1C, 0x6D, 0x1A, 0x9B, 0xD6, 0x02, 0xCA, 0x74, 0x95, 0xCA, 0x73, 0xD2, 0x74, 0xCA, 0x74, 0xCA, 0x53, 0xD2, 0x54, 0xCA, 0x54, 0xD2, 0x53, 0xCA, 0x53, 0xCA, 0x33, 0xA2, 0x75, 0x9A, 0x76, 0xCA, 0x33, 0xCA, 0x13, 0xCA, 0x33, 0x9A, 0xD6, 0x04, 0xFF, 0x05, 0xBF, 0x06, 0x3F, 0x35, 0x7C, 0xC2, 0x54, 0xC9, 0xF3, 0xD1, 0xF3, 0x01, 0xC9, 0xF3, 0x82, 0xB9, 0xD3, 0x61, 0x52, 0x41, 0x11, 0x01, 0x39, 0x11, 0x80, 0x38, 0xF0, 0x02, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x07, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x1F, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x33, 0x18, 0xAD, 0x82, 0x18, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x01, 0x01, + 0x1A, 0x20, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x00, 0xF8, 0x10, 0xD0, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x1B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x80, 0x20, 0x8E, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x20, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x17, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x03, 0x01, 0x19, 0x8D, 0x01, 0x1A, 0x00, 0xF9, 0x08, 0xF5, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF4, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x01, 0x17, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x02, 0x20, 0xCE, 0x80, 0x20, 0xCD, 0x03, 0x20, 0xCE, 0x06, 0x28, 0xCF, 0x80, 0x30, 0xEF, 0x02, 0x30, 0xF0, 0x81, 0x38, 0xF0, 0x39, 0x10, 0x02, 0x39, 0x11, 0x83, 0x41, 0x12, 0x41, 0x32, 0x61, 0x93, 0xCB, 0x55, 0x01, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x84, 0xCB, 0x55, 0xD3, 0x34, 0xCB, 0x55, 0xAC, 0x17, 0x0F, 0xBF, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xBF, 0x80, 0x07, 0x7F, 0x01, 0x07, 0x5F, 0x10, 0x07, 0x3F, 0x01, 0x07, 0x5F, 0x01, 0x07, 0x7F, 0x85, 0x07, 0x9F, 0x07, 0xBF, 0x36, 0x5C, 0x74, 0xB9, 0xB3, 0x15, 0xCA, 0x73, 0x01, 0xCA, 0x54, 0x02, 0xCA, 0x53, 0x85, 0xCA, 0x33, 0xD2, 0x33, 0xCA, 0x33, 0xB2, 0x35, 0xAA, 0x16, 0xCA, 0x33, 0x01, 0xCA, 0x13, 0x8F, 0x7B, 0x37, 0x05, + 0x5F, 0x05, 0xFF, 0x06, 0x7F, 0x25, 0xDD, 0xA2, 0xF5, 0xD1, 0xD3, 0xC9, 0xF3, 0xC9, 0xD3, 0xC9, 0xD2, 0xC9, 0xD3, 0x91, 0x93, 0x49, 0x32, 0x41, 0x11, 0x39, 0x11, 0x38, 0xF0, 0x02, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x04, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x3C, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0F, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0A, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x33, 0x18, 0xAD, 0x83, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1A, 0x29, 0x01, 0x19, 0x80, 0x18, 0xB0, 0x25, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x13, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x85, 0x10, 0xD3, 0x18, 0xCE, 0x20, 0xAD, 0x10, 0xF4, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x20, 0xAE, 0x07, 0x20, 0xCE, 0x05, 0x28, 0xCF, 0x80, 0x30, 0xEF, 0x03, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x02, 0x39, 0x11, 0x80, 0x41, 0x11, 0x01, 0x41, 0x32, 0x81, 0x61, 0xB3, 0xCB, 0x75, 0x02, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x01, 0xD3, 0x35, + 0x89, 0x8C, 0xB8, 0x0F, 0xBF, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0x9F, 0x07, 0x7F, 0x07, 0x5F, 0x07, 0x3F, 0x07, 0x1F, 0x06, 0x06, 0xFF, 0x81, 0x06, 0xDF, 0x06, 0xFF, 0x02, 0x06, 0xDF, 0x03, 0x06, 0xFF, 0x02, 0x07, 0x1F, 0x03, 0x07, 0x3F, 0x01, 0x07, 0x5F, 0x83, 0x07, 0x1F, 0x2D, 0xFD, 0x74, 0x19, 0xB2, 0xB5, 0x01, 0xCA, 0x53, 0x03, 0xCA, 0x33, 0x82, 0xD2, 0x33, 0xCA, 0x14, 0xA2, 0x15, 0x01, 0xCA, 0x13, 0x88, 0xC9, 0xF3, 0x83, 0x38, 0x05, 0xBF, 0x06, 0x3F, 0x06, 0xBF, 0x0E, 0x9F, 0xAA, 0xD5, 0xC9, 0xD3, 0xC9, 0xD2, 0x01, 0xC9, 0xD3, 0x82, 0xC9, 0xB2, 0xB1, 0xB2, 0x59, 0x31, 0x02, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xF0, 0x01, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x04, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x1D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x7F, 0x18, 0xAD, 0x48, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x03, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x86, 0x18, 0xCF, 0x01, + 0x1A, 0x01, 0x19, 0x10, 0xD0, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x06, 0x20, 0xCE, 0x80, 0x20, 0xCF, 0x04, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x03, 0x30, 0xF0, 0x82, 0x38, 0xF0, 0x31, 0x11, 0x38, 0xF1, 0x01, 0x39, 0x11, 0x01, 0x41, 0x12, 0x82, 0x41, 0x32, 0x61, 0x93, 0xCB, 0x75, 0x02, 0xD3, 0x95, 0x04, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x80, 0xD3, 0x54, 0x01, 0xD3, 0x55, 0x8B, 0xC3, 0x95, 0x5D, 0xFA, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0x9F, 0x07, 0x7F, 0x07, 0x5F, 0x07, 0x3F, 0x07, 0x1F, 0x06, 0xFF, 0x06, 0xDF, 0x01, 0x06, 0xBF, 0x03, 0x06, 0x9F, 0x01, 0x06, 0xBF, 0x06, 0x06, 0x9F, 0x02, 0x06, 0xBF, 0x01, 0x06, 0xDF, 0x02, 0x06, 0xFF, 0x01, 0x07, 0x1F, 0x85, 0x06, 0xFF, 0x06, 0xBF, 0x06, 0x5F, 0x05, 0xBF, 0x44, 0x3C, 0x8A, 0xF7, 0x03, 0xCA, 0x33, 0x02, 0xCA, 0x13, 0x90, 0x99, 0xB6, 0xC9, 0xF3, 0xCA, 0x13, 0xC9, 0xF3, 0x4C, 0x3B, 0x06, 0x1F, 0x06, 0x9F, 0x06, 0xFF, 0x0E, 0xBE, 0xA2, 0xD5, 0xC9, 0xB3, 0xC9, 0xD3, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xB2, 0xC1, 0xB3, 0x71, 0x52, 0x01, 0x39, 0x11, 0x80, 0x31, 0x10, 0x01, 0x30, 0xF0, 0x81, 0x28, 0xF0, 0x30, 0xD0, 0x02, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x07, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCE, 0x08, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x61, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x7F, 0x18, 0xAD, 0x51, + 0x18, 0xAD, 0x03, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x20, 0xAE, 0x20, 0xAD, 0x18, 0xCE, 0x01, 0x01, 0x19, 0x87, 0x10, 0xD3, 0x20, 0xCE, 0x20, 0xAE, 0x10, 0xF4, 0x01, 0x19, 0x01, 0x1A, 0x20, 0xCE, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x83, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xEF, 0x30, 0xEF, 0x04, 0x30, 0xF0, 0x02, 0x39, 0x11, 0x89, 0x41, 0x12, 0x39, 0x12, 0x41, 0x12, 0x41, 0x32, 0x41, 0x33, 0x51, 0x53, 0xBB, 0x35, 0xD3, 0x95, 0xD3, 0x96, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x8C, 0xBB, 0xD6, 0x5D, 0xFB, 0x0F, 0xBF, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0x7F, 0x07, 0x5F, 0x07, 0x3F, 0x07, 0x1F, 0x06, 0xFF, 0x06, 0xDF, 0x06, 0xBF, 0x01, 0x06, 0x9F, 0x02, 0x06, 0x7F, 0x09, 0x06, 0x5F, 0x80, 0x06, 0x7F, 0x01, 0x06, 0x5F, 0x01, 0x06, 0x7F, 0x02, 0x06, 0x9F, 0x01, 0x06, 0xBF, 0x88, 0x06, 0xDF, 0x06, 0xBF, 0x06, 0x9F, 0x06, 0x5F, 0x05, 0xFF, 0x05, 0x3F, 0x04, 0x9F, 0x1B, 0xBE, 0x82, 0x98, 0x04, 0xCA, 0x13, 0x81, 0xD1, 0xF3, 0x99, 0xB6, 0x01, 0xC9, 0xF3, 0x87, 0xB2, 0x54, 0x0D, 0x9F, 0x06, 0x7F, 0x06, 0xDF, 0x06, 0xFF, 0x0E, 0xBF, 0xA2, 0xD5, 0xC9, 0xD2, 0x02, 0xC9, 0xB3, 0x82, 0xC9, 0xB2, 0xC9, 0xB3, 0x81, 0x52, 0x02, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x82, 0x28, 0xF0, 0x30, 0xF0, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x04, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x05, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x02, 0x01, 0x19, 0x80, 0x00, 0xF9, + 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x62, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x7F, 0x18, 0xAD, 0x4C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x85, 0x01, 0x1A, 0x08, 0xF5, 0x18, 0xAE, 0x20, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x88, 0x09, 0x18, 0x09, 0x17, 0x01, 0x39, 0x01, 0x1A, 0x10, 0xF5, 0x20, 0xCE, 0x20, 0xCF, 0x28, 0xCF, 0x28, 0xCE, 0x04, 0x28, 0xCF, 0x81, 0x28, 0xEF, 0x30, 0xEF, 0x02, 0x30, 0xF0, 0x82, 0x31, 0x10, 0x30, 0xF0, 0x38, 0xF0, 0x02, 0x39, 0x11, 0x01, 0x41, 0x12, 0x87, 0x41, 0x32, 0x49, 0x32, 0x41, 0x33, 0x49, 0x33, 0xBB, 0x35, 0xD3, 0x95, 0xD3, 0x96, 0xD3, 0x95, 0x05, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x82, 0xAC, 0x37, 0x6D, 0x9A, 0x2E, 0xFE, 0x01, 0x07, 0xFF, 0x89, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0x9F, 0x07, 0x5F, 0x07, 0x3F, 0x07, 0x1F, 0x06, 0xDF, 0x06, 0xBF, 0x06, 0x9F, 0x06, 0x7F, 0x01, 0x06, 0x5F, 0x01, 0x06, 0x3F, 0x08, 0x06, 0x1F, 0x80, 0x05, 0xFF, 0x05, 0x06, 0x1F, 0x02, 0x06, 0x3F, 0x03, 0x06, 0x5F, 0x01, 0x06, 0x7F, 0x87, 0x06, 0x3F, 0x05, 0xDF, 0x05, 0x5F, 0x04, 0xBF, 0x04, 0x3F, 0x03, 0x7F, 0x1A, 0xBE, 0x7A, 0x18, 0x02, 0xCA, 0x13, 0x8B, 0xC9, 0xF3, 0xC1, 0xF4, 0x71, 0x78, 0xC9, 0xF2, 0xD1, 0xF3, 0x83, 0x38, 0x06, 0x1F, 0x06, 0xBF, 0x06, 0xFF, 0x07, 0x1F, 0x0E, 0xDF, 0xA2, 0xD5, 0x01, 0xC9, 0xB3, 0x80, 0xC9, 0xB2, 0x01, 0xC9, 0x92, 0x84, 0xC9, 0x93, 0x91, 0x72, 0x39, 0x11, 0x39, 0x10, 0x31, 0x10, + 0x02, 0x30, 0xF0, 0x01, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x62, 0x01, 0x1A, 0x80, 0x01, 0x19, 0x7F, 0x18, 0xAD, 0x4C, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x02, 0x18, 0xAE, 0x81, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x81, 0x18, 0xCE, 0x09, 0x18, 0x01, 0x01, 0x1A, 0x85, 0x09, 0x19, 0x01, 0x1A, 0x09, 0x17, 0x20, 0xCF, 0x28, 0xAE, 0x20, 0xCF, 0x02, 0x28, 0xCF, 0x02, 0x28, 0xEF, 0x80, 0x30, 0xEF, 0x02, 0x30, 0xF0, 0x01, 0x38, 0xF0, 0x03, 0x39, 0x11, 0x83, 0x39, 0x12, 0x41, 0x12, 0x41, 0x32, 0x49, 0x32, 0x01, 0x49, 0x33, 0x81, 0x49, 0x53, 0xA2, 0xB4, 0x01, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x86, 0xD3, 0x55, 0xD3, 0x75, 0xD3, 0x55, 0xC3, 0xB6, 0x85, 0x19, 0x4E, 0x3C, 0x0F, 0x9F, 0x03, 0x07, 0xFF, 0x81, 0x07, 0xDF, 0x07, 0x9F, 0x01, 0x07, 0x7F, 0x87, 0x07, 0x5F, 0x07, 0x3F, 0x06, 0xFF, 0x06, 0xBF, 0x06, 0x9F, 0x06, 0x7F, 0x06, 0x5F, 0x06, 0x3F, 0x01, 0x06, 0x1F, 0x80, 0x05, 0xFF, 0x03, 0x05, 0xDF, 0x01, 0x05, 0xBF, 0x01, 0x05, 0xDF, 0x05, 0x05, 0xBF, 0x03, 0x05, 0xDF, 0x01, 0x05, 0xFF, 0x05, 0x06, 0x1F, 0x92, 0x05, 0xDF, 0x05, 0x7F, 0x04, 0xFF, 0x04, 0x7F, 0x03, 0xDF, 0x03, 0x1F, 0x02, 0x5F, 0x19, 0xDE, 0x79, + 0xB8, 0xC9, 0xF3, 0xCA, 0x13, 0xC9, 0xF3, 0xB9, 0xD3, 0xA1, 0xB5, 0xC9, 0xD3, 0xC9, 0xF3, 0x4C, 0x5B, 0x06, 0x5F, 0x06, 0xDF, 0x01, 0x07, 0x1F, 0x81, 0x0E, 0xDF, 0xA2, 0xB5, 0x01, 0xC9, 0xB3, 0x01, 0xC9, 0x92, 0x85, 0xC9, 0x93, 0xC9, 0x92, 0xB1, 0x72, 0x49, 0x11, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xEF, 0x80, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x09, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x67, 0x01, 0x19, 0x7F, 0x18, 0xAD, 0x52, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x10, 0xF3, 0x84, 0x10, 0xD2, 0x20, 0xAE, 0x18, 0xAE, 0x20, 0xAE, 0x18, 0xCE, 0x02, 0x20, 0xCE, 0x85, 0x18, 0xF2, 0x10, 0xF4, 0x11, 0x14, 0x18, 0xF3, 0x20, 0xCF, 0x28, 0xCE, 0x03, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x80, 0x30, 0xEF, 0x02, 0x30, 0xF0, 0x81, 0x31, 0x10, 0x38, 0xF0, 0x02, 0x39, 0x11, 0x82, 0x39, 0x12, 0x39, 0x11, 0x41, 0x12, 0x01, 0x41, 0x32, 0x02, 0x49, 0x33, 0x81, 0x49, 0x53, 0xA2, 0xB5, 0x02, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x83, 0xC3, 0xB5, 0x7D, 0x59, 0x36, 0xBD, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x01, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x01, 0x07, 0x7F, 0x84, 0x07, 0x1F, 0x06, 0xDE, 0x06, 0x9E, 0x06, 0x7E, 0x06, 0x5E, 0x01, 0x06, 0x3F, 0x82, 0x06, 0x1E, 0x05, 0xFF, 0x05, 0xDF, 0x01, 0x05, 0xBF, 0x02, 0x05, 0x9F, 0x0B, 0x05, 0x7F, 0x02, 0x05, 0x9F, 0x02, 0x05, 0xBF, 0x02, 0x05, 0xDF, 0x8A, 0x05, 0xBF, 0x05, 0x7F, + 0x04, 0xFF, 0x04, 0x9F, 0x03, 0xFF, 0x03, 0x7F, 0x02, 0xBF, 0x02, 0x1F, 0x01, 0x7F, 0x21, 0x3D, 0x99, 0x96, 0x01, 0xC9, 0xF3, 0x8A, 0xB9, 0xD4, 0x99, 0xB6, 0xC9, 0xD3, 0xC2, 0x13, 0x0D, 0xBF, 0x06, 0x9F, 0x06, 0xFF, 0x07, 0x1F, 0x07, 0x3F, 0x0E, 0xFF, 0xA2, 0xB5, 0x03, 0xC9, 0x92, 0x01, 0xC9, 0x72, 0x83, 0xA9, 0x72, 0x49, 0x11, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x64, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x7F, 0x18, 0xAD, 0x4D, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xAD, 0x04, 0x20, 0xAD, 0x83, 0x20, 0xAE, 0x18, 0xCE, 0x20, 0xAE, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x84, 0x20, 0xAF, 0x20, 0xCE, 0x28, 0xCE, 0x28, 0xCF, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x03, 0x30, 0xF0, 0x81, 0x31, 0x10, 0x39, 0x10, 0x03, 0x39, 0x11, 0x84, 0x41, 0x11, 0x41, 0x31, 0x41, 0x12, 0x41, 0x32, 0x49, 0x13, 0x01, 0x49, 0x33, 0x89, 0x49, 0x53, 0x51, 0x54, 0xAA, 0xB5, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x75, 0x94, 0xD8, 0x46, 0x7C, 0x04, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x01, 0x07, 0x7F, 0x81, 0x06, 0xDE, 0x06, 0xBE, 0x01, 0x06, 0x7E, 0x83, 0x06, 0x5E, 0x06, 0x3E, 0x06, 0x1E, 0x05, 0xFE, 0x01, 0x05, + 0xDE, 0x81, 0x05, 0xBE, 0x05, 0x9F, 0x01, 0x05, 0x7F, 0x01, 0x05, 0x5F, 0x0C, 0x05, 0x3F, 0x02, 0x05, 0x5F, 0x04, 0x05, 0x7F, 0x93, 0x05, 0x5F, 0x04, 0xFF, 0x04, 0xBF, 0x04, 0x1F, 0x03, 0x9F, 0x03, 0x1F, 0x02, 0x5F, 0x01, 0xBF, 0x01, 0x3F, 0x00, 0xBF, 0x40, 0xFB, 0xB1, 0xB5, 0xC9, 0xD2, 0xB1, 0xD5, 0xB1, 0xD4, 0xC9, 0xB3, 0x63, 0x99, 0x06, 0x1F, 0x06, 0xDF, 0x07, 0x1F, 0x01, 0x07, 0x3F, 0x81, 0x0E, 0xFF, 0xA2, 0xB5, 0x01, 0xC9, 0x92, 0x01, 0xC9, 0x72, 0x84, 0xC9, 0x92, 0xC9, 0x72, 0xB1, 0x52, 0x41, 0x11, 0x39, 0x11, 0x02, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x02, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x80, 0x20, 0xAE, 0x03, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x01, 0x1A, 0x05, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x60, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x7F, 0x18, 0xAD, 0x4D, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x80, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x82, 0x20, 0xCE, 0x20, 0xCD, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x82, 0x28, 0xCE, 0x20, 0xCF, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x84, 0x28, 0xEF, 0x30, 0xEF, 0x30, 0xD0, 0x28, 0xF0, 0x31, 0x10, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xF1, 0x04, 0x39, 0x11, 0x80, 0x41, 0x12, 0x02, 0x41, 0x32, 0x81, 0x49, 0x32, 0x49, 0x33, 0x01, 0x49, 0x53, 0x82, 0x51, 0x53, 0x4A, 0x16, 0xA2, 0xB5, 0x02, 0xD3, 0x95, 0x84, 0xD3, 0x75, 0x85, 0x39, 0x1F, 0x5E, 0x07, 0xFF, + 0x07, 0xDF, 0x07, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x86, 0x07, 0x9F, 0x07, 0xBF, 0x07, 0x5F, 0x06, 0xBE, 0x06, 0x9D, 0x06, 0x7D, 0x06, 0x5D, 0x01, 0x06, 0x3D, 0x81, 0x06, 0x1D, 0x05, 0xFE, 0x01, 0x05, 0xDE, 0x83, 0x05, 0xBE, 0x05, 0x9E, 0x05, 0x7E, 0x05, 0x5F, 0x01, 0x05, 0x3F, 0x01, 0x05, 0x1F, 0x0A, 0x04, 0xFF, 0x05, 0x05, 0x1F, 0x01, 0x05, 0x3F, 0x94, 0x05, 0x1F, 0x04, 0xDF, 0x04, 0xBF, 0x04, 0x3F, 0x03, 0xDF, 0x03, 0x5F, 0x02, 0xBF, 0x02, 0x1F, 0x01, 0x7F, 0x00, 0xFF, 0x00, 0x9F, 0x08, 0x7F, 0x71, 0x19, 0xC9, 0xD3, 0xB1, 0xD4, 0xB9, 0xD3, 0xC9, 0xB3, 0x1C, 0xFE, 0x06, 0x5F, 0x06, 0xFF, 0x07, 0x1F, 0x01, 0x07, 0x3F, 0x8B, 0x1E, 0xBE, 0xB9, 0xF3, 0xC9, 0x93, 0xC9, 0x72, 0xC9, 0x92, 0xC9, 0x72, 0xC9, 0x73, 0xC9, 0x52, 0xB1, 0x52, 0x41, 0x11, 0x39, 0x10, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x03, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x39, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x5F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x7F, 0x18, 0xAD, 0x4C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x20, 0xCD, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xCF, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xCF, 0x02, 0x28, 0xCF, 0x81, 0x28, 0xEF, 0x28, 0xCF, 0x04, 0x30, 0xF0, 0x80, 0x39, 0x10, 0x03, + 0x39, 0x11, 0x02, 0x41, 0x32, 0x80, 0x49, 0x32, 0x02, 0x49, 0x33, 0x84, 0x49, 0x53, 0x4A, 0x15, 0x34, 0x39, 0x16, 0xBD, 0x85, 0x19, 0x02, 0xD3, 0x95, 0x81, 0x94, 0xD8, 0x1F, 0x5E, 0x01, 0x07, 0xDF, 0x07, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x03, 0x07, 0xBF, 0x80, 0x07, 0x1E, 0x01, 0x06, 0x9D, 0x81, 0x06, 0x7D, 0x06, 0x5D, 0x01, 0x06, 0x3D, 0x89, 0x06, 0x1D, 0x05, 0xFD, 0x05, 0xDD, 0x05, 0xBD, 0x05, 0x9D, 0x05, 0x9E, 0x05, 0x7E, 0x05, 0x5E, 0x05, 0x3E, 0x05, 0x1E, 0x01, 0x04, 0xFF, 0x80, 0x04, 0xDF, 0x02, 0x04, 0xBF, 0x04, 0x04, 0x9F, 0x05, 0x04, 0xBF, 0x81, 0x04, 0xDF, 0x04, 0xBF, 0x02, 0x04, 0xDF, 0x98, 0x04, 0xBF, 0x04, 0x9F, 0x04, 0x3F, 0x03, 0xDF, 0x03, 0x5F, 0x02, 0xFF, 0x02, 0x5F, 0x01, 0xBF, 0x01, 0x3F, 0x00, 0xDF, 0x00, 0x7F, 0x00, 0x5F, 0x18, 0x5E, 0x89, 0x57, 0x61, 0xB9, 0xC9, 0xD3, 0x9A, 0x96, 0x05, 0x9F, 0x06, 0x7F, 0x06, 0xFF, 0x07, 0x1F, 0x07, 0x3F, 0x07, 0x5F, 0x26, 0x7D, 0xB9, 0xD3, 0x04, 0xC9, 0x72, 0x83, 0xC9, 0x52, 0xB1, 0x52, 0x41, 0x11, 0x38, 0xF1, 0x02, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xCF, 0x00, 0xF7, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x83, 0x00, 0xF6, 0x18, 0xCE, 0x18, 0xAD, 0x20, 0xAE, 0x65, 0x18, 0xAD, 0x45, 0x01, 0x19, 0x85, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xD0, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x34, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, + 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x41, 0x18, 0xAD, 0x02, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x82, 0x20, 0xCF, 0x28, 0xCF, 0x20, 0xCF, 0x03, 0x28, 0xCF, 0x03, 0x30, 0xF0, 0x80, 0x31, 0x10, 0x01, 0x38, 0xF1, 0x01, 0x39, 0x11, 0x83, 0x41, 0x11, 0x41, 0x12, 0x41, 0x32, 0x41, 0x12, 0x01, 0x49, 0x32, 0x01, 0x49, 0x33, 0x85, 0x69, 0xB4, 0x63, 0x36, 0x6C, 0xD9, 0x4E, 0x5B, 0x07, 0xDF, 0x85, 0x39, 0x01, 0xD3, 0x95, 0x81, 0xBC, 0x17, 0x3E, 0x9C, 0x02, 0x07, 0xDF, 0x0A, 0x07, 0xFF, 0x81, 0x07, 0xDF, 0x07, 0xFF, 0x02, 0x07, 0xDF, 0x82, 0x07, 0xBF, 0x07, 0xDF, 0x06, 0xBD, 0x01, 0x06, 0x9C, 0x80, 0x06, 0x7C, 0x01, 0x06, 0x5C, 0x8F, 0x06, 0x3C, 0x06, 0x1C, 0x05, 0xFC, 0x05, 0xDC, 0x05, 0xBC, 0x05, 0xBD, 0x05, 0x9D, 0x05, 0x7D, 0x05, 0x5D, 0x05, 0x3E, 0x05, 0x1E, 0x04, 0xFE, 0x04, 0xDE, 0x04, 0xBE, 0x04, 0xBF, 0x04, 0x9F, 0x02, 0x04, 0x7F, 0x02, 0x04, 0x5F, 0x09, 0x04, 0x7F, 0x8C, 0x04, 0x9F, 0x04, 0x7F, 0x04, 0x5F, 0x04, 0x1F, 0x03, 0xDF, 0x03, 0x7F, 0x03, 0x1F, 0x02, 0x9F, 0x02, 0x1F, 0x01, 0x7F, 0x01, 0x1F, 0x00, 0xBF, 0x00, 0x5F, 0x01, 0x00, 0x1F, 0x86, 0x00, 0xFF, 0x89, 0xB7, 0xC9, 0xB3, 0x44, 0x7B, 0x06, 0x5F, 0x06, 0xBF, 0x07, 0x1F, 0x01, 0x07, 0x3F, 0x81, 0x07, 0x5F, 0x3D, 0x9B, 0x03, 0xC9, 0x72, 0x02, 0xC9, 0x52, 0x80, 0xA1, 0x32, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x81, 0x20, 0xCE, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x86, 0x20, 0xAE, + 0x20, 0xAD, 0x20, 0xAE, 0x20, 0xCD, 0x18, 0xAD, 0x18, 0xD0, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x80, 0x00, 0xFA, 0x01, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xF4, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x63, 0x18, 0xAD, 0x48, 0x01, 0x19, 0x81, 0x01, 0x18, 0x10, 0xD0, 0x3C, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x41, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x80, 0x28, 0xCE, 0x03, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x01, 0x30, 0xF0, 0x82, 0x31, 0x10, 0x30, 0xF0, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x82, 0x39, 0x31, 0x40, 0xF1, 0x41, 0x11, 0x02, 0x41, 0x32, 0x83, 0x61, 0xB3, 0x92, 0x74, 0xB2, 0xF5, 0xC3, 0x55, 0x02, 0xD3, 0x95, 0x86, 0xBC, 0x16, 0x46, 0x9D, 0x85, 0x39, 0xD3, 0x76, 0xD3, 0x75, 0x6D, 0xBA, 0x0F, 0x9F, 0x02, 0x07, 0xDF, 0x0D, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x85, 0x07, 0x7F, 0x06, 0xBC, 0x06, 0xBB, 0x06, 0x9B, 0x06, 0x7B, 0x06, 0x5B, 0x01, 0x06, 0x3B, 0x83, 0x06, 0x1B, 0x05, 0xFB, 0x05, 0xDB, 0x05, 0xBB, 0x01, 0x05, 0x9C, 0x87, 0x05, 0x7C, 0x05, 0x5C, 0x05, 0x3D, 0x05, 0x1D, 0x04, 0xFD, 0x04, 0xDD, 0x04, 0xBE, 0x04, 0x9E, 0x01, 0x04, 0x7F, 0x80, 0x04, 0x5F, 0x01, 0x04, 0x3F, 0x04, 0x04, 0x1F, 0x08, 0x04, 0x3F, 0x93, 0x04, 0x1F, 0x03, 0xFF, 0x03, 0xBF, 0x03, 0x7F, 0x03, 0x3F, 0x02, 0xBF, 0x02, 0x3F, 0x01, 0xDF, 0x01, 0x5F, 0x00, 0xDF, 0x00, 0x9F, 0x00, 0x5F, 0x00, 0x1F, 0x00, 0x5F, 0x09, 0x7F, 0xB9, 0xB3, 0xB2, 0x14, 0x0D, 0xBF, 0x06, 0xFF, + 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x82, 0x07, 0x5F, 0x07, 0x7F, 0x64, 0x79, 0x01, 0xC9, 0x72, 0x03, 0xC9, 0x52, 0x86, 0xC9, 0x32, 0x91, 0x32, 0x39, 0x11, 0x31, 0x11, 0x30, 0xF0, 0x28, 0xF0, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF4, 0x20, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x63, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x48, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x31, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x44, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x80, 0x20, 0xCF, 0x03, 0x28, 0xCF, 0x86, 0x30, 0xEF, 0x30, 0xF0, 0x28, 0xF0, 0x30, 0xF0, 0x31, 0x10, 0x38, 0xF0, 0x38, 0xF1, 0x01, 0x39, 0x11, 0x81, 0x39, 0x12, 0x41, 0x11, 0x01, 0x41, 0x32, 0x82, 0x51, 0x52, 0x82, 0x34, 0xC3, 0x35, 0x03, 0xD3, 0x95, 0x87, 0xAC, 0x57, 0x7D, 0x7A, 0x46, 0x9C, 0x0F, 0x9F, 0xA4, 0xB8, 0xD3, 0x95, 0x85, 0x39, 0x1F, 0x5E, 0x02, 0x07, 0xDF, 0x10, 0x07, 0xFF, 0x83, 0x07, 0xDF, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0x5D, 0x01, 0x06, 0xBB, 0x81, 0x06, 0x9A, 0x06, 0x7A, 0x01, 0x06, 0x5A, 0x88, 0x06, 0x3A, 0x06, 0x1A, 0x05, 0xFA, 0x05, 0xDA, 0x05, 0xDB, 0x05, 0xBB, 0x05, 0x9B, 0x05, 0x7B, + 0x05, 0x5B, 0x01, 0x05, 0x3C, 0x83, 0x05, 0x1C, 0x04, 0xFC, 0x04, 0xDD, 0x04, 0xBD, 0x01, 0x04, 0x7E, 0x82, 0x04, 0x5E, 0x04, 0x3F, 0x04, 0x1F, 0x01, 0x03, 0xFF, 0x0D, 0x03, 0xDF, 0x97, 0x03, 0xBF, 0x03, 0x5F, 0x03, 0x1F, 0x02, 0xDF, 0x02, 0x7F, 0x01, 0xFF, 0x01, 0x9F, 0x01, 0x1F, 0x00, 0xBF, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x9F, 0x39, 0xDB, 0xC9, 0x92, 0x63, 0x99, 0x06, 0x9F, 0x07, 0x9F, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xBF, 0x07, 0x7F, 0x07, 0x9F, 0x9A, 0xF6, 0x05, 0xC9, 0x52, 0x88, 0xC9, 0x32, 0x71, 0x12, 0x31, 0x10, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xF0, 0x28, 0xEF, 0x28, 0xCE, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x84, 0x20, 0xCD, 0x20, 0xCE, 0x20, 0xAE, 0x18, 0xCF, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x08, 0xF5, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x7F, 0x18, 0xAD, 0x2B, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x37, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x87, 0x10, 0xD2, 0x08, 0xF3, 0x08, 0xD3, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x3B, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x80, 0x20, 0xCF, 0x03, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x03, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x02, 0x39, 0x11, 0x80, 0x41, 0x12, 0x01, 0x41, 0x32, 0x82, 0x51, 0x93, 0x92, 0x74, 0xCB, 0x75, 0x02, 0xD3, 0x95, 0x82, 0xC3, 0xD6, 0x6D, 0xBA, 0x1F, 0x7E, 0x01, 0x07, 0xFF, 0x83, 0x36, 0xDD, 0xBC, 0x17, 0x85, 0x39, + 0x1F, 0x5E, 0x01, 0x07, 0xDF, 0x14, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x81, 0x07, 0x1B, 0x06, 0xDA, 0x01, 0x06, 0xBA, 0x83, 0x06, 0x99, 0x06, 0x79, 0x06, 0x59, 0x06, 0x39, 0x01, 0x06, 0x19, 0x91, 0x05, 0xF9, 0x05, 0xDA, 0x05, 0xBA, 0x05, 0x9A, 0x05, 0x7A, 0x05, 0x5A, 0x05, 0x5B, 0x05, 0x3B, 0x05, 0x1B, 0x04, 0xFC, 0x04, 0xDC, 0x04, 0xBC, 0x04, 0x9D, 0x04, 0x7D, 0x04, 0x5D, 0x04, 0x3E, 0x04, 0x1E, 0x03, 0xFE, 0x01, 0x03, 0xDF, 0x01, 0x03, 0xBF, 0x0A, 0x03, 0x9F, 0x92, 0x03, 0x7F, 0x03, 0x5F, 0x03, 0x1F, 0x02, 0xDF, 0x02, 0x7F, 0x02, 0x3F, 0x01, 0xBF, 0x01, 0x5F, 0x00, 0xFF, 0x00, 0x9F, 0x00, 0x5F, 0x00, 0x1F, 0x00, 0x3F, 0x01, 0x1F, 0x99, 0xB6, 0xB9, 0xD3, 0x0D, 0x9F, 0x06, 0xDF, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x81, 0x0F, 0x7E, 0xB9, 0xB3, 0x03, 0xC9, 0x52, 0x87, 0xC9, 0x31, 0xC9, 0x32, 0xC1, 0x32, 0x61, 0x11, 0x38, 0xF0, 0x30, 0xF0, 0x28, 0xF0, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x83, 0x20, 0xAE, 0x18, 0xCE, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x62, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x46, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x85, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xB0, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x34, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, + 0xCE, 0x3D, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x03, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x81, 0x31, 0x10, 0x39, 0x10, 0x01, 0x39, 0x11, 0x80, 0x39, 0x12, 0x01, 0x41, 0x32, 0x83, 0x61, 0x73, 0xA2, 0xB4, 0xD3, 0x95, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x88, 0xC3, 0xD6, 0x6D, 0xBA, 0x0F, 0xBF, 0x07, 0xFF, 0x07, 0xDF, 0x07, 0xFF, 0x07, 0xDF, 0x1F, 0x7E, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x16, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x01, 0x06, 0xF9, 0x81, 0x06, 0xD9, 0x06, 0xB8, 0x01, 0x06, 0x98, 0x81, 0x06, 0x78, 0x06, 0x58, 0x01, 0x06, 0x38, 0x85, 0x06, 0x18, 0x05, 0xF8, 0x05, 0xD8, 0x05, 0xB8, 0x05, 0x98, 0x05, 0x79, 0x01, 0x05, 0x59, 0x8B, 0x05, 0x1A, 0x04, 0xFA, 0x04, 0xDB, 0x04, 0xBB, 0x04, 0x9C, 0x04, 0x7C, 0x04, 0x5D, 0x04, 0x3D, 0x04, 0x1E, 0x03, 0xFE, 0x03, 0xDE, 0x03, 0xBF, 0x01, 0x03, 0x9F, 0x02, 0x03, 0x7F, 0x06, 0x03, 0x5F, 0x01, 0x03, 0x3F, 0x92, 0x03, 0x1F, 0x02, 0xFF, 0x02, 0xBF, 0x02, 0x7F, 0x02, 0x3F, 0x01, 0xFF, 0x01, 0x9F, 0x01, 0x3F, 0x00, 0xBF, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x5F, 0x19, 0x7E, 0xB9, 0x93, 0x63, 0x79, 0x06, 0x3F, 0x07, 0x3F, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x80, 0x3D, 0xFB, 0x01, 0xC9, 0x52, 0x03, 0xC9, 0x32, 0x82, 0xC9, 0x12, 0xB9, 0x12, 0x41, 0x11, 0x02, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x84, 0x20, 0xAE, 0x20, 0xCE, 0x08, 0xF6, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x01, 0x19, + 0x81, 0x08, 0xF5, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x62, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x45, 0x18, 0xAD, 0x88, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x30, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x01, 0x17, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF4, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x3A, 0x18, 0xAD, 0x02, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x01, 0x28, 0xCF, 0x83, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xEF, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x02, 0x39, 0x11, 0x83, 0x41, 0x11, 0x49, 0x52, 0x79, 0xF3, 0xB2, 0xF4, 0x04, 0xD3, 0x95, 0x81, 0x94, 0xF9, 0x0F, 0xBF, 0x08, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x17, 0x07, 0xFF, 0x81, 0x07, 0x9D, 0x07, 0x19, 0x01, 0x06, 0xF8, 0x80, 0x06, 0xD7, 0x01, 0x06, 0xB7, 0x89, 0x06, 0x97, 0x06, 0x76, 0x06, 0x56, 0x06, 0x37, 0x06, 0x36, 0x06, 0x17, 0x05, 0xF7, 0x05, 0xD7, 0x05, 0xB7, 0x05, 0x97, 0x01, 0x05, 0x78, 0x87, 0x05, 0x38, 0x05, 0x19, 0x04, 0xF9, 0x04, 0xDA, 0x04, 0xBB, 0x04, 0x9B, 0x04, 0x7C, 0x04, 0x3C, 0x01, 0x04, 0x1D, 0x84, 0x03, 0xFE, 0x03, 0xDE, 0x03, 0xBE, 0x03, 0x9E, 0x03, 0x7F, 0x01, 0x03, 0x5F, 0x80, 0x03, 0x3F, 0x03, 0x03, 0x1F, 0x03, 0x02, 0xFF, 0x92, 0x02, 0xDF, 0x02, 0xBF, 0x02, 0x9F, 0x02, 0x7F, 0x02, 0x3F, 0x01, + 0xFF, 0x01, 0x9F, 0x01, 0x5F, 0x00, 0xFF, 0x00, 0x9F, 0x00, 0x5F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0xBF, 0x59, 0xBA, 0xB9, 0xB3, 0x0D, 0x3F, 0x06, 0xBF, 0x07, 0x9F, 0x04, 0x07, 0xFF, 0x82, 0x74, 0x38, 0xC9, 0x52, 0xC1, 0x32, 0x02, 0xC9, 0x32, 0x83, 0xC9, 0x11, 0xC9, 0x12, 0xA1, 0x11, 0x39, 0x11, 0x02, 0x30, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x83, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xFA, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x65, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x44, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x05, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x39, 0x00, 0xF8, 0x18, 0xB0, 0x37, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x82, 0x10, 0xD3, 0x01, 0x1A, 0x00, 0xF9, 0x3C, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x80, 0x20, 0xCF, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x03, 0x30, 0xF0, 0x01, 0x39, 0x11, 0x83, 0x51, 0x51, 0x79, 0xF3, 0xA2, 0xB4, 0xCB, 0x75, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x82, 0xC3, 0xD6, 0x46, 0x9C, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x06, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x17, 0x07, 0xFF, 0x84, 0x07, 0xFE, 0xC3, 0x35, 0x45, 0xD7, 0x07, 0x38, 0x07, 0x17, 0x01, 0x06, 0xF6, 0x80, 0x06, 0xD6, 0x01, 0x06, 0xB5, 0x84, 0x06, 0x95, 0x06, 0x75, 0x06, 0x55, 0x06, 0x35, 0x06, 0x15, 0x01, 0x05, 0xF5, 0x8C, 0x05, 0xD6, 0x05, 0xB6, 0x05, 0x97, 0x05, 0x57, 0x05, 0x38, 0x05, 0x18, + 0x04, 0xF9, 0x04, 0xD9, 0x04, 0x9A, 0x04, 0x7B, 0x04, 0x5B, 0x04, 0x3C, 0x04, 0x1C, 0x01, 0x03, 0xDD, 0x83, 0x03, 0xBE, 0x03, 0x9E, 0x03, 0x7E, 0x03, 0x5F, 0x01, 0x03, 0x3F, 0x81, 0x03, 0x1F, 0x02, 0xFF, 0x01, 0x02, 0xDF, 0x03, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x91, 0x02, 0x7F, 0x02, 0x5F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xBF, 0x01, 0x7F, 0x01, 0x1F, 0x00, 0xDF, 0x00, 0x9F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x3F, 0x01, 0x3F, 0xB1, 0x74, 0x63, 0x39, 0x05, 0xFF, 0x07, 0x1F, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x81, 0x0F, 0x9F, 0xB9, 0x92, 0x01, 0xC9, 0x32, 0x80, 0xC9, 0x31, 0x02, 0xC9, 0x12, 0x81, 0xC9, 0x11, 0x81, 0x11, 0x01, 0x30, 0xF0, 0x81, 0x28, 0xEF, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xD0, 0x02, 0x01, 0x19, 0x84, 0x01, 0x39, 0x08, 0xF5, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x61, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x46, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x36, 0x18, 0xAD, 0x86, 0x18, 0xAF, 0x00, 0xF9, 0x01, 0x19, 0x18, 0xD0, 0x18, 0xCD, 0x18, 0xAD, 0x10, 0xD1, 0x01, 0x01, 0x19, 0x3C, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x81, 0x20, 0xCF, 0x28, 0xCF, 0x02, 0x28, 0xEF, 0x01, 0x30, 0xF0, 0x83, 0x59, 0xB2, 0x7A, 0x13, 0x9A, 0x94, 0xBB, 0x55, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x02, 0xD3, + 0x95, 0x81, 0xAC, 0x77, 0x2F, 0x1E, 0x22, 0x07, 0xFF, 0x87, 0x07, 0xBC, 0x07, 0x59, 0xAB, 0xB5, 0xC3, 0x14, 0x1E, 0x97, 0x07, 0x36, 0x07, 0x16, 0x07, 0x15, 0x01, 0x06, 0xF4, 0x9F, 0x06, 0xF3, 0x06, 0xD3, 0x06, 0xB3, 0x06, 0xB2, 0x06, 0x92, 0x06, 0x72, 0x06, 0x53, 0x06, 0x33, 0x06, 0x13, 0x05, 0xF4, 0x05, 0xD4, 0x05, 0x95, 0x05, 0x75, 0x05, 0x56, 0x05, 0x17, 0x04, 0xF8, 0x04, 0xB9, 0x04, 0x99, 0x04, 0x5A, 0x04, 0x3B, 0x04, 0x1B, 0x03, 0xFC, 0x03, 0xDD, 0x03, 0xBD, 0x03, 0x9D, 0x03, 0x7E, 0x03, 0x5E, 0x03, 0x3E, 0x03, 0x3F, 0x03, 0x1F, 0x02, 0xFF, 0x02, 0xDF, 0x01, 0x02, 0xBF, 0x80, 0x02, 0x9F, 0x01, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x80, 0x02, 0x3F, 0x01, 0x02, 0x1F, 0x8E, 0x01, 0xDF, 0x01, 0x9F, 0x01, 0x7F, 0x01, 0x3F, 0x00, 0xFF, 0x00, 0x9F, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x7F, 0x39, 0x9B, 0xB9, 0x93, 0x05, 0x5F, 0x06, 0x7F, 0x07, 0x9F, 0x04, 0x07, 0xFF, 0x84, 0x45, 0xDB, 0xC1, 0x32, 0xC9, 0x32, 0xC9, 0x12, 0xC1, 0x32, 0x01, 0xC9, 0x12, 0x85, 0xC9, 0x11, 0xC9, 0x12, 0x51, 0x11, 0x38, 0xF0, 0x30, 0xF0, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x8A, 0x20, 0xAE, 0x18, 0xCE, 0x10, 0xD3, 0x10, 0xF4, 0x18, 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x7F, 0x18, 0xAD, 0x2D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD0, 0x20, 0xAD, 0x02, + 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x30, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x08, 0xD4, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x80, 0x20, 0xAD, 0x15, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x1E, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x86, 0x18, 0xAD, 0x20, 0xCD, 0x20, 0xAE, 0x20, 0xAD, 0x20, 0xAE, 0x18, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x89, 0x28, 0xAE, 0x20, 0xCE, 0x28, 0xEE, 0x51, 0x71, 0x69, 0xD2, 0x82, 0x32, 0xAA, 0xF4, 0xC3, 0x34, 0xD3, 0x75, 0xD3, 0xB5, 0x09, 0xD3, 0x95, 0x81, 0x75, 0x7A, 0x0F, 0xBF, 0x21, 0x07, 0xFF, 0x88, 0x07, 0xBD, 0x07, 0x9B, 0x07, 0x7A, 0x07, 0x79, 0x74, 0xD6, 0xD2, 0xD4, 0x9B, 0xF5, 0x07, 0x56, 0x07, 0x35, 0x01, 0x07, 0x34, 0x81, 0x07, 0x33, 0x07, 0x12, 0x01, 0x07, 0x11, 0x01, 0x06, 0xF0, 0x80, 0x06, 0xD0, 0x01, 0x06, 0xAF, 0x8D, 0x06, 0x6F, 0x06, 0x50, 0x06, 0x31, 0x06, 0x11, 0x05, 0xD2, 0x05, 0x94, 0x05, 0x54, 0x05, 0x15, 0x04, 0xF7, 0x04, 0xB8, 0x04, 0x78, 0x04, 0x59, 0x04, 0x3A, 0x03, 0xFB, 0x01, 0x03, 0xBC, 0x83, 0x03, 0x9D, 0x03, 0x7D, 0x03, 0x5E, 0x03, 0x3E, 0x01, 0x03, 0x1F, 0x81, 0x02, 0xFF, 0x02, 0xDF, 0x01, 0x02, 0xBF, 0x01, 0x02, 0x7F, 0x80, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x8A, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x9F, 0x01, 0x7F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xBF, 0x00, 0x7F, 0x00, 0x5F, 0x01, 0x00, 0x1F, 0x85, 0x00, 0xDF, 0xA1, 0x75, 0x33, 0xBC, 0x05, 0xDF, 0x06, 0xFF, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x82, 0x92, 0xD5, 0xC9, + 0x11, 0xC1, 0x32, 0x01, 0xC9, 0x12, 0x89, 0xC8, 0xF2, 0xC1, 0x12, 0xC9, 0x12, 0xA8, 0xF1, 0x31, 0x10, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x82, 0x20, 0xAE, 0x20, 0xCE, 0x20, 0xAD, 0x71, 0x18, 0xAD, 0x47, 0x01, 0x19, 0x81, 0x00, 0xF8, 0x18, 0xCF, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x01, 0x17, 0x01, 0x01, 0x19, 0x81, 0x10, 0xCF, 0x20, 0xAD, 0x32, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x01, 0x01, 0x1A, 0x82, 0x08, 0xF5, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x80, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x87, 0x20, 0xAD, 0x39, 0x0F, 0x49, 0x70, 0x59, 0xB0, 0x7A, 0x32, 0x92, 0x93, 0xAA, 0xD3, 0xCB, 0x55, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x07, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x81, 0x9C, 0xB8, 0x27, 0x1D, 0x20, 0x07, 0xFF, 0x83, 0x07, 0xDE, 0x07, 0xDD, 0x07, 0xBC, 0x07, 0x9B, 0x01, 0x07, 0x9A, 0x81, 0x07, 0x79, 0x55, 0xB7, 0x01, 0xD2, 0xB4, 0x85, 0x4D, 0xB5, 0x07, 0x75, 0x07, 0x74, 0x07, 0x53, 0x07, 0x73, 0x07, 0x52, 0x01, 0x07, 0x50, 0x81, 0x07, 0x4F, 0x07, 0x4E, 0x01, 0x07, 0x4D, 0x80, 0x07, 0x4C, 0x01, 0x07, 0x2B, 0x8F, 0x07, 0x2A, 0x07, 0x0A, 0x06, 0xEA, 0x06, + 0xAC, 0x06, 0x4D, 0x05, 0xD0, 0x05, 0x73, 0x04, 0xF5, 0x04, 0xB6, 0x04, 0x78, 0x04, 0x38, 0x04, 0x1A, 0x03, 0xFB, 0x03, 0xBC, 0x03, 0x9C, 0x03, 0x7C, 0x01, 0x03, 0x3D, 0x84, 0x03, 0x1E, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0xDF, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x96, 0x02, 0x7F, 0x02, 0x5F, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x9F, 0x01, 0x7F, 0x01, 0x5F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xDF, 0x00, 0x9F, 0x00, 0x5F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x3F, 0x21, 0x3D, 0x1B, 0x1E, 0x05, 0x1F, 0x06, 0x5F, 0x07, 0x7F, 0x04, 0x07, 0xFF, 0x80, 0x1F, 0x3D, 0x01, 0xC9, 0x12, 0x01, 0xC1, 0x12, 0x84, 0xC8, 0xF1, 0xC8, 0xF2, 0xC8, 0xF1, 0xC8, 0xF2, 0x80, 0xF1, 0x01, 0x30, 0xF0, 0x85, 0x30, 0xEF, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xCE, 0x20, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x70, 0x18, 0xAD, 0x43, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x80, 0x10, 0xD0, 0x03, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x00, 0xF9, 0x01, 0x19, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x2A, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x10, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x84, 0x39, 0x2F, 0xD3, 0x95, 0xC3, 0x74, 0xA2, 0xD3, 0xAA, 0xD3, 0x01, 0x7A, 0x31, 0x82, 0x7A, 0x11, 0x72, 0x31, 0x51, 0x90, 0x01, 0x49, 0x6F, 0x83, 0x49, 0x70, 0x49, 0x6F, 0x49, 0x4F, 0x41, 0x2F, 0x03, 0x18, 0xAD, 0x80, 0x18, + 0xAE, 0x0A, 0x18, 0xAD, 0x81, 0x49, 0x70, 0x49, 0x4F, 0x01, 0x49, 0x6F, 0x80, 0x69, 0xF1, 0x01, 0x7A, 0x31, 0x83, 0x92, 0x72, 0xA2, 0xD3, 0xAA, 0xF3, 0xC3, 0x55, 0x0D, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x03, 0xD3, 0x95, 0x84, 0xD3, 0x96, 0xD3, 0x75, 0xD3, 0x95, 0xAC, 0x57, 0x56, 0x5C, 0x20, 0x07, 0xFF, 0x82, 0x07, 0xDF, 0x07, 0xDE, 0x07, 0xBD, 0x01, 0x07, 0xBC, 0x80, 0x07, 0xBB, 0x01, 0x07, 0x9A, 0x85, 0x07, 0x99, 0x26, 0xB8, 0xCA, 0xD4, 0xD2, 0xB4, 0xC3, 0x14, 0x0F, 0x35, 0x01, 0x07, 0x94, 0x01, 0x07, 0x92, 0x82, 0x07, 0x91, 0x07, 0x90, 0x07, 0x8F, 0x01, 0x07, 0x8E, 0x82, 0x07, 0x8D, 0x07, 0x8C, 0x07, 0xAA, 0x01, 0x07, 0xA9, 0x8F, 0x07, 0xA8, 0x07, 0xC7, 0x07, 0xC5, 0x07, 0xC4, 0x07, 0xE4, 0x07, 0xA4, 0x07, 0x27, 0x06, 0x8A, 0x05, 0xAF, 0x04, 0x96, 0x04, 0x38, 0x03, 0xF9, 0x03, 0xBA, 0x03, 0x9B, 0x03, 0x5C, 0x03, 0x5D, 0x01, 0x03, 0x1D, 0x81, 0x02, 0xFE, 0x02, 0xDF, 0x01, 0x02, 0xBF, 0x81, 0x02, 0x9F, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x83, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0x01, 0x9F, 0x87, 0x01, 0x7F, 0x01, 0x5F, 0x01, 0x3F, 0x00, 0xFF, 0x00, 0xDF, 0x00, 0xBF, 0x00, 0x7F, 0x00, 0x5F, 0x01, 0x00, 0x1F, 0x85, 0x00, 0x7F, 0x02, 0x3F, 0x04, 0x1F, 0x05, 0xBF, 0x06, 0xFF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x82, 0x64, 0x98, 0xC9, 0x11, 0xC9, 0x12, 0x02, 0xC8, 0xF1, 0x83, 0xC8, 0xF2, 0xC8, 0xF1, 0xC8, 0xD1, 0x50, 0xF1, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x01, + 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x7F, 0x18, 0xAD, 0x38, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x18, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x86, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x2C, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x85, 0x01, 0x17, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xD3, 0x10, 0xD2, 0x18, 0xCD, 0x01, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x81, 0x49, 0x6F, 0xAA, 0xD3, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x34, 0xD3, 0x95, 0x82, 0xC3, 0xD6, 0x85, 0x39, 0x36, 0xDD, 0x22, 0x07, 0xFF, 0x81, 0x07, 0xDF, 0x07, 0xDE, 0x01, 0x07, 0xBD, 0x01, 0x07, 0xBC, 0x80, 0x07, 0xBB, 0x01, 0x07, 0xBA, 0x80, 0x07, 0xB9, 0x02, 0xD2, 0xB4, 0x80, 0x65, 0x35, 0x01, 0x07, 0xB5, 0x89, 0x07, 0xB4, 0x07, 0xB3, 0x07, 0xB2, 0x07, 0xB1, 0x07, 0xB0, 0x07, 0xAF, 0x07, 0xCE, 0x07, 0xCD, 0x07, 0xCC, 0x07, 0xCB, 0x01, 0x07, 0xCA, 0x83, 0x07, 0xC9, 0x07, 0xE8, 0x07, 0xE7, 0x07, 0xE6, 0x01, 0x07, 0xE5, 0x01, 0x07, 0xE3, 0x8C, 0x07, 0xE2, 0x07, 0xE1, 0x07, 0x26, 0x06, 0x0C, 0x04, 0xB4, 0x03, 0xB9, 0x03, 0x7B, 0x03, 0x5C, 0x03, 0x3D, 0x03, 0x1D, 0x02, 0xDE, 0x02, 0xDF, 0x02, 0xBE, 0x01, 0x02, 0x9F, 0x81, 0x02, 0x7F, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x82, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0x01, 0x9F, 0x01, 0x01, 0x5F, 0x83, 0x01, 0x3F, 0x00, 0xFF, 0x00, 0xDF, 0x00, 0xBF, 0x01, 0x00, 0x7F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x84, 0x01, 0x1F, 0x02, 0xFF, 0x04, 0xDF, + 0x06, 0x3F, 0x07, 0x7F, 0x04, 0x07, 0xFF, 0x81, 0x0F, 0x9F, 0xB9, 0x72, 0x01, 0xC8, 0xF2, 0x85, 0xC0, 0xF1, 0xC8, 0xF2, 0xC0, 0xF2, 0xC0, 0xF1, 0xC8, 0xD1, 0xA0, 0xF1, 0x02, 0x30, 0xF0, 0x83, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xCE, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x83, 0x20, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x7F, 0x18, 0xAD, 0x32, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x8F, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xCF, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xB0, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x28, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x13, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x41, 0x2F, 0x8A, 0x72, 0xC3, 0x34, 0xD3, 0x96, 0x18, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x08, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x0B, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0x75, 0xAC, 0x57, 0x46, 0x9C, 0x16, 0x07, 0xFF, 0x80, 0x46, 0x7C, 0x01, 0x85, 0x19, 0x80, 0x36, 0xDD, 0x0A, 0x07, 0xFF, 0x02, 0x07, 0xDE, 0x80, 0x07, 0xDD, 0x01, 0x07, 0xDC, 0x01, 0x07, 0xDB, 0x01, 0x07, 0xDA, 0x80, 0x9B, 0xF5, 0x01, 0xD2, 0xB4, 0x83, 0xC2, 0xF4, 0x0F, 0x77, 0x07, 0xD6, 0x07, 0xD5, 0x01, 0x07, 0xD4, 0x86, 0x07, 0xD3, 0x07, 0xD2, 0x07, 0xD1, 0x07, 0xD0, 0x07, 0xEF, 0x07, 0xEE, 0x07, 0xED, 0x01, 0x07, 0xEC, 0x80, 0x07, 0xEA, + 0x01, 0x07, 0xE9, 0x80, 0x07, 0xE7, 0x01, 0x07, 0xE6, 0x01, 0x07, 0xE5, 0x01, 0x07, 0xE4, 0x01, 0x07, 0xE3, 0x85, 0x07, 0xE2, 0x07, 0x85, 0x06, 0x0C, 0x04, 0xD3, 0x03, 0x5B, 0x03, 0x1C, 0x01, 0x02, 0xDE, 0x82, 0x02, 0xBE, 0x02, 0x9F, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x84, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x88, 0x01, 0x7F, 0x01, 0x5F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xDF, 0x00, 0xBF, 0x00, 0x9F, 0x00, 0x7F, 0x00, 0x5F, 0x01, 0x00, 0x1F, 0x85, 0x00, 0x3F, 0x01, 0xDF, 0x03, 0xBF, 0x05, 0x9F, 0x06, 0xDF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x89, 0x4D, 0x7A, 0xC1, 0x11, 0xC0, 0xF1, 0xC8, 0xF1, 0xC8, 0xF2, 0xC8, 0xD1, 0xC8, 0xF2, 0xC0, 0xD1, 0xC8, 0xD1, 0x68, 0xF1, 0x01, 0x30, 0xF0, 0x81, 0x28, 0xF0, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x14, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x80, 0x10, 0xD2, 0x7F, 0x18, 0xAD, 0x1A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x8E, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xCF, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x28, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, + 0x02, 0x18, 0xAD, 0x84, 0x41, 0x4F, 0x61, 0xD1, 0x82, 0x51, 0xA2, 0xD3, 0xBB, 0x34, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x03, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x15, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x04, 0xD3, 0x95, 0x84, 0xD3, 0x75, 0xBC, 0x16, 0x85, 0x39, 0x46, 0x9C, 0x17, 0xBF, 0x12, 0x07, 0xFF, 0x80, 0x85, 0x18, 0x01, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x80, 0x84, 0xF8, 0x09, 0x07, 0xFF, 0x82, 0x07, 0xFE, 0x07, 0xDE, 0x07, 0xFE, 0x01, 0x07, 0xDD, 0x81, 0x07, 0xBC, 0x07, 0xDC, 0x01, 0x07, 0xDB, 0x81, 0x07, 0xDA, 0x8C, 0x56, 0x01, 0xCA, 0xB4, 0x81, 0xD2, 0x94, 0x4D, 0xF7, 0x01, 0x07, 0xD7, 0x82, 0x07, 0xD6, 0x07, 0xF5, 0x07, 0xD5, 0x01, 0x07, 0xF3, 0x86, 0x07, 0xF2, 0x07, 0xF1, 0x07, 0xF0, 0x07, 0xEF, 0x07, 0xEE, 0x07, 0xED, 0x07, 0xEC, 0x01, 0x07, 0xEB, 0x81, 0x07, 0xEA, 0x07, 0xE9, 0x01, 0x07, 0xE8, 0x01, 0x07, 0xE7, 0x01, 0x07, 0xE6, 0x03, 0x07, 0xE5, 0x88, 0x07, 0xE4, 0x07, 0xA6, 0x06, 0x0E, 0x03, 0xF8, 0x02, 0xDE, 0x02, 0xBE, 0x02, 0x9F, 0x02, 0x7F, 0x02, 0x5F, 0x01, 0x02, 0x3F, 0x83, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x89, 0x01, 0x7F, 0x01, 0x5F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xDF, 0x00, 0xBF, 0x00, 0x9F, 0x00, 0x7F, 0x00, 0x5F, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x84, 0x00, 0xBF, 0x02, 0x9F, 0x04, 0x9F, 0x06, 0x3F, 0x07, 0x5F, 0x05, 0x07, 0xFF, 0x83, 0xB1, 0xD3, 0xC8, 0xF1, 0xC8, 0xF2, 0xC0, 0xF1, 0x01, 0xC8, 0xD1, 0x86, + 0xC0, 0xF1, 0xC8, 0xD1, 0xB8, 0xD1, 0x40, 0xF0, 0x30, 0xF0, 0x28, 0xF0, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x81, 0x20, 0xCE, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x11, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x7F, 0x18, 0xAD, 0x18, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCE, 0x08, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x39, 0x00, 0xF8, 0x18, 0xB0, 0x26, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAF, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x85, 0x31, 0x0E, 0x49, 0x6F, 0x59, 0x90, 0x7A, 0x12, 0x7A, 0x32, 0x92, 0x72, 0x01, 0xA2, 0xD3, 0x80, 0xC3, 0x75, 0x14, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x0A, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x08, 0xD3, 0x95, 0x82, 0xAC, 0x77, 0x75, 0x7A, 0x36, 0xFD, 0x0E, 0x07, 0xFF, 0x83, 0x4E, 0x3C, 0xD3, 0x55, 0xD3, 0x35, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x81, 0xD3, 0x34, 0x75, 0x39, 0x09, 0x07, 0xFF, 0x01, 0x07, 0xFE, 0x02, 0x07, 0xDD, 0x85, 0x07, 0xDC, 0x07, 0xFC, 0x07, 0xDC, 0x07, 0xDB, 0x6D, 0x38, 0xCA, 0xB4, 0x01, 0xD2, 0x94, 0x80, 0xAB, 0x95, 0x01, 0x07, 0xD8, 0x01, 0x07, 0xF7, 0x80, 0x07, 0xF6, 0x01, 0x07, 0xF5, 0x86, 0x07, 0xF4, 0x07, 0xF3, 0x07, 0xF2, 0x07, 0xF1, 0x07, 0xF0, + 0x07, 0xEF, 0x07, 0xEE, 0x01, 0x07, 0xED, 0x01, 0x07, 0xEC, 0x80, 0x07, 0xEB, 0x02, 0x07, 0xEA, 0x01, 0x07, 0xE9, 0x03, 0x07, 0xE8, 0x01, 0x07, 0xE7, 0x8B, 0x07, 0xE8, 0x07, 0xC8, 0x06, 0xEB, 0x05, 0x14, 0x03, 0x3C, 0x02, 0x7F, 0x02, 0x5F, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x01, 0x9F, 0x86, 0x01, 0x7F, 0x01, 0x5F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xFF, 0x00, 0xDF, 0x00, 0xBF, 0x01, 0x00, 0x9F, 0x01, 0x00, 0x5F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x84, 0x01, 0x5F, 0x03, 0x7F, 0x05, 0x7F, 0x06, 0xDF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x83, 0x4D, 0x5A, 0xC8, 0xF1, 0xC8, 0xD1, 0xC0, 0xF1, 0x01, 0xC8, 0xD1, 0x01, 0xC0, 0xD1, 0x84, 0xC8, 0xB1, 0x78, 0xD1, 0x31, 0x10, 0x30, 0xF0, 0x30, 0xEF, 0x02, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x01, 0x17, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x7F, 0x18, 0xAD, 0x1D, 0x18, 0xAD, 0x85, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x03, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x25, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAF, 0x01, 0x18, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x01, + 0x18, 0xAD, 0x01, 0x49, 0x6F, 0x86, 0x49, 0x70, 0x7A, 0x12, 0x7A, 0x31, 0x82, 0x52, 0xAA, 0xD3, 0xA2, 0xD3, 0xBB, 0x34, 0x23, 0xD3, 0x95, 0x83, 0xCB, 0xD6, 0x94, 0xF8, 0x56, 0x5B, 0x0F, 0xBF, 0x0A, 0x07, 0xFF, 0x80, 0xB3, 0xF6, 0x01, 0xD3, 0x35, 0x80, 0xD3, 0x34, 0x02, 0xD3, 0x35, 0x81, 0xD3, 0x34, 0x1F, 0x7E, 0x09, 0x07, 0xFF, 0x82, 0x07, 0xFE, 0x07, 0xDE, 0x07, 0xDD, 0x02, 0x07, 0xFD, 0x88, 0x07, 0xDD, 0x07, 0xDC, 0x6D, 0x38, 0xCA, 0xB4, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0x1F, 0x39, 0x07, 0xF9, 0x02, 0x07, 0xF8, 0x01, 0x07, 0xF7, 0x83, 0x07, 0xF6, 0x07, 0xF5, 0x07, 0xF4, 0x07, 0xF3, 0x01, 0x07, 0xF2, 0x81, 0x07, 0xF1, 0x07, 0xF0, 0x01, 0x07, 0xEF, 0x01, 0x07, 0xEE, 0x01, 0x07, 0xED, 0x84, 0x07, 0xEC, 0x07, 0xED, 0x07, 0xEC, 0x07, 0xEB, 0x07, 0xEC, 0x01, 0x07, 0xEB, 0x02, 0x07, 0xEA, 0x8B, 0x07, 0xCA, 0x07, 0xAB, 0x07, 0x6C, 0x07, 0x0D, 0x05, 0xB2, 0x03, 0x9B, 0x02, 0x3F, 0x02, 0x1F, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x9F, 0x01, 0x01, 0x7F, 0x83, 0x01, 0x5F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xFF, 0x01, 0x00, 0xDF, 0x01, 0x00, 0x9F, 0x81, 0x00, 0x7F, 0x00, 0x5F, 0x01, 0x00, 0x3F, 0x85, 0x00, 0x1F, 0x60, 0xD9, 0x0A, 0x3F, 0x04, 0x7F, 0x06, 0x3F, 0x07, 0x5F, 0x05, 0x07, 0xFF, 0x89, 0xA9, 0xD3, 0xC0, 0xD1, 0xC8, 0xD1, 0xC0, 0xF1, 0xC8, 0xB1, 0xC0, 0xD1, 0xC8, 0xB1, 0xC0, 0xB1, 0xB8, 0xB1, 0x48, 0xF1, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x83, 0x20, 0xAE, 0x20, 0xAD, 0x18, 0xAD, + 0x20, 0xAE, 0x10, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x59, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x23, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF8, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD0, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xCD, 0x05, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x29, 0x18, 0xAD, 0x01, 0x49, 0x70, 0x82, 0x59, 0x90, 0x7A, 0x31, 0x72, 0x31, 0x01, 0x7A, 0x31, 0x83, 0x9A, 0xB3, 0xAA, 0xD4, 0xA2, 0xD4, 0xB3, 0x14, 0x05, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x06, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x08, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x81, 0x94, 0xF8, 0x56, 0x5C, 0x08, 0x07, 0xFF, 0x81, 0xD3, 0x35, 0xD3, 0x34, 0x03, 0xD3, 0x35, 0x82, 0xD3, 0x14, 0xD3, 0x15, 0x5D, 0xDB, + 0x0A, 0x07, 0xFF, 0x04, 0x07, 0xFE, 0x01, 0x07, 0xFD, 0x86, 0x6D, 0x58, 0xD2, 0x94, 0xD2, 0x93, 0xCA, 0x94, 0xD2, 0x74, 0x4D, 0xF8, 0x07, 0xFB, 0x01, 0x07, 0xFA, 0x01, 0x07, 0xF9, 0x81, 0x07, 0xF8, 0x07, 0xF7, 0x01, 0x07, 0xF6, 0x01, 0x07, 0xF5, 0x80, 0x07, 0xF4, 0x01, 0x07, 0xF3, 0x80, 0x07, 0xF2, 0x01, 0x07, 0xF1, 0x02, 0x07, 0xF0, 0x04, 0x07, 0xEF, 0x04, 0x07, 0xEE, 0x8B, 0x07, 0xED, 0x07, 0xCD, 0x07, 0x8E, 0x07, 0x6E, 0x07, 0x10, 0x06, 0xB1, 0x05, 0x74, 0x03, 0x7B, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xBF, 0x01, 0x9F, 0x01, 0x01, 0x7F, 0x01, 0x01, 0x3F, 0x83, 0x01, 0x1F, 0x00, 0xFF, 0x00, 0xDF, 0x00, 0xBF, 0x01, 0x00, 0x9F, 0x81, 0x00, 0x7F, 0x00, 0x5F, 0x01, 0x00, 0x3F, 0x86, 0x00, 0x1F, 0x88, 0xD6, 0x61, 0x59, 0x03, 0x1F, 0x05, 0x3F, 0x06, 0xDF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x81, 0x4D, 0x5B, 0xC0, 0xD1, 0x01, 0xC8, 0xD1, 0x85, 0xC0, 0xB1, 0xC8, 0xB1, 0xC8, 0xB2, 0xC0, 0xB1, 0xC8, 0xB1, 0x90, 0xD1, 0x01, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x01, 0x20, 0xCF, 0x82, 0x20, 0xCE, 0x20, 0xAE, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x0F, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD1, 0x01, 0x18, 0xAD, 0x81, 0x10, 0xD1, 0x01, 0x1A, 0x0B, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x05, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x42, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x04, 0x01, + 0x19, 0x80, 0x00, 0xFA, 0x22, 0x01, 0x19, 0x86, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xD0, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x01, 0x17, 0x01, 0x01, 0x19, 0x81, 0x10, 0xCF, 0x20, 0xAD, 0x1F, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x80, 0x10, 0xD2, 0x2C, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x84, 0x18, 0xAD, 0x18, 0xCE, 0x18, 0xAD, 0x20, 0xAE, 0x20, 0xAD, 0x01, 0x20, 0xCE, 0x80, 0x29, 0x0F, 0x01, 0x51, 0x70, 0x88, 0x69, 0xF1, 0x7A, 0x32, 0x82, 0x32, 0xAA, 0xF3, 0xAA, 0xF4, 0xCB, 0x75, 0xD3, 0x95, 0xD3, 0x96, 0xD3, 0x75, 0x06, 0xD3, 0x95, 0x01, 0xD3, 0x96, 0x03, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x82, 0xC3, 0xB6, 0x85, 0x39, 0x1F, 0x7F, 0x05, 0x07, 0xFF, 0x02, 0xD3, 0x35, 0x82, 0xD3, 0x15, 0xD3, 0x14, 0xD3, 0x15, 0x01, 0xD3, 0x14, 0x80, 0x65, 0x9A, 0x0D, 0x07, 0xFF, 0x03, 0x07, 0xFE, 0x85, 0x6D, 0x39, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x74, 0xCA, 0x74, 0x7C, 0x96, 0x01, 0x07, 0xFC, 0x01, 0x07, 0xFB, 0x01, 0x07, 0xFA, 0x80, 0x07, + 0xF9, 0x01, 0x07, 0xF8, 0x01, 0x07, 0xF7, 0x01, 0x07, 0xF6, 0x80, 0x07, 0xF5, 0x01, 0x07, 0xF4, 0x02, 0x07, 0xF3, 0x06, 0x07, 0xF2, 0x03, 0x07, 0xF1, 0x8C, 0x07, 0xF0, 0x07, 0xF1, 0x07, 0xD0, 0x07, 0x91, 0x07, 0x51, 0x07, 0x12, 0x06, 0x93, 0x06, 0x34, 0x05, 0x17, 0x02, 0xDD, 0x01, 0xBF, 0x01, 0x9F, 0x01, 0x7F, 0x01, 0x01, 0x5F, 0x83, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xFF, 0x00, 0xDF, 0x01, 0x00, 0xBF, 0x80, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x01, 0x00, 0x3F, 0x86, 0x00, 0x1F, 0x60, 0xB8, 0xB8, 0xF3, 0x09, 0xBF, 0x04, 0x1F, 0x06, 0x1F, 0x07, 0x3F, 0x05, 0x07, 0xFF, 0x80, 0xB1, 0xB3, 0x01, 0xC0, 0xD1, 0x81, 0xC0, 0xB1, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x82, 0xC8, 0xB1, 0xC0, 0xB1, 0x48, 0xF1, 0x01, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAE, 0x0D, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x0A, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x48, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x83, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF9, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x21, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x08, 0xF7, 0x01, 0x1A, 0x01, 0x18, 0x10, 0xD0, 0x03, 0x18, 0xAD, 0x84, 0x18, + 0xAE, 0x00, 0xF7, 0x00, 0xF9, 0x01, 0x19, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x84, 0x00, 0xF7, 0x18, 0xAE, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x00, 0xF7, 0x02, 0x01, 0x1A, 0x82, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x29, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x20, 0xAE, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x81, 0x28, 0xCE, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x84, 0x51, 0x72, 0x61, 0xB2, 0x8A, 0x54, 0x9A, 0x94, 0xB3, 0x35, 0x07, 0xD3, 0x95, 0x05, 0xD3, 0x75, 0x82, 0xD3, 0x55, 0x9C, 0x97, 0x36, 0xDD, 0x03, 0x07, 0xFF, 0x84, 0xAC, 0x17, 0xD3, 0x35, 0xD3, 0x14, 0xD3, 0x35, 0xD3, 0x14, 0x01, 0xD3, 0x15, 0x81, 0xD2, 0xF4, 0x46, 0x7C, 0x11, 0x07, 0xFF, 0x86, 0x6D, 0x59, 0xD2, 0x74, 0xCA, 0x94, 0xD2, 0x74, 0xCA, 0x74, 0xB3, 0x34, 0x07, 0xFE, 0x02, 0x07, 0xFD, 0x01, 0x07, 0xFC, 0x80, 0x07, 0xFB, 0x02, 0x07, 0xFA, 0x80, 0x07, 0xF9, 0x02, 0x07, 0xF8, 0x80, 0x07, 0xF7, 0x02, 0x07, 0xF6, 0x0A, 0x07, 0xF5, 0x02, 0x07, 0xF4, 0x8C, 0x07, 0xD3, 0x07, 0xB3, 0x07, 0x93, 0x07, 0x53, 0x07, 0x14, 0x06, 0xB5, 0x55, 0x16, 0x05, 0x38, 0x03, 0x7C, 0x01, 0xFF, 0x01, 0x7F, 0x01, 0x5F, 0x01, 0x3F, 0x01, 0x01, 0x1F, 0x82, 0x00, + 0xFF, 0x00, 0xDF, 0x00, 0xBF, 0x01, 0x00, 0x9F, 0x80, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x88, 0x00, 0x3F, 0x00, 0x1F, 0x60, 0x99, 0xC9, 0x11, 0x49, 0x1A, 0x02, 0xDF, 0x05, 0x1F, 0x06, 0xBF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x83, 0x64, 0x59, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0x04, 0xC0, 0xB1, 0x84, 0x90, 0xD1, 0x30, 0xF1, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x0F, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x82, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x0A, 0x18, 0xAD, 0x83, 0x18, 0xCE, 0x01, 0x18, 0x01, 0x19, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x3F, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x83, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xD0, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x22, 0x18, 0xAD, 0x8A, 0x18, 0xCD, 0x20, 0xAE, 0x10, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x06, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF8, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x86, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x1C, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x07, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, + 0xAD, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x80, 0x08, 0xF5, 0x2A, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x03, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x80, 0x31, 0x11, 0x01, 0x39, 0x11, 0x01, 0x41, 0x32, 0x83, 0x51, 0x52, 0x69, 0xD3, 0x92, 0x74, 0xB2, 0xF5, 0x01, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xD3, 0x95, 0x05, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x81, 0xA4, 0x78, 0x36, 0xDD, 0x01, 0x07, 0xFF, 0x82, 0x56, 0x3C, 0xD3, 0x35, 0xD3, 0x34, 0x01, 0xD3, 0x15, 0x82, 0xD2, 0xF4, 0xCB, 0x15, 0xBB, 0x96, 0x12, 0x07, 0xFF, 0x80, 0x84, 0x98, 0x01, 0xCA, 0x94, 0x80, 0xD2, 0x74, 0x01, 0xCA, 0x74, 0x03, 0x07, 0xFE, 0x01, 0x07, 0xFD, 0x02, 0x07, 0xFC, 0x01, 0x07, 0xFB, 0x01, 0x07, 0xFA, 0x01, 0x07, 0xF9, 0x03, 0x07, 0xF8, 0x0B, 0x07, 0xF7, 0x01, 0x07, 0xF6, 0x8C, 0x07, 0xD6, 0x07, 0xB6, 0x07, 0x96, 0x07, 0x56, 0x07, 0x16, 0xA4, 0x56, 0xBB, 0xD6, 0x34, 0x79, 0x02, 0xFD, 0x02, 0x3F, 0x01, 0x9F, 0x01, 0x5F, 0x01, 0x1F, 0x01, 0x00, 0xFF, 0x01, 0x00, 0xBF, 0x01, 0x00, 0x9F, 0x81, 0x00, 0x7F, 0x00, 0x5F, 0x02, 0x00, 0x3F, 0x86, 0x78, 0xB7, 0xC1, 0x11, 0xA1, 0x14, 0x01, 0xFF, 0x04, 0x1F, 0x05, 0xFF, 0x07, 0x5F, 0x04, 0x07, 0xFF, 0x85, 0x0F, 0x9F, 0xC0, 0xB1, 0xC0, 0xD2, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0x03, 0xC0, 0xB1, 0x83, 0x48, 0xF1, 0x30, 0xF0, + 0x30, 0xEF, 0x28, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x0F, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x20, 0xAE, 0x18, 0xB0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x3F, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x83, 0x10, 0xCF, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x22, 0x18, 0xAD, 0x87, 0x18, 0xCD, 0x18, 0xAD, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x92, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xCE, 0x08, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xCF, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xB0, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x06, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x20, 0xAD, 0x29, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, + 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xCD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x81, 0x20, 0xCF, 0x28, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xF0, 0x01, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x01, 0x41, 0x32, 0x82, 0x49, 0x32, 0x49, 0x33, 0x49, 0x53, 0x01, 0x51, 0x54, 0x82, 0x71, 0xF4, 0x9A, 0x75, 0xB2, 0xF5, 0x02, 0xD3, 0x75, 0x83, 0xD3, 0x55, 0xD3, 0x75, 0xD3, 0x55, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x89, 0x9C, 0x78, 0x36, 0xDD, 0x07, 0xFF, 0x9C, 0x57, 0xD3, 0x35, 0xD3, 0x15, 0xD3, 0x34, 0xD3, 0x14, 0xC3, 0x55, 0x27, 0x1D, 0x12, 0x07, 0xFF, 0x86, 0x9B, 0xF7, 0xCA, 0x94, 0xD2, 0x74, 0xCA, 0x73, 0xCA, 0x74, 0xD2, 0x53, 0x2E, 0xFD, 0x03, 0x07, 0xFF, 0x01, 0x07, 0xFE, 0x02, 0x07, 0xFD, 0x01, 0x07, 0xFC, 0x02, 0x07, 0xFB, 0x02, 0x07, 0xFA, 0x05, 0x07, 0xF9, 0x05, 0x07, 0xFA, 0x02, 0x07, 0xF9, 0x90, 0x07, 0xF8, 0x07, 0xD8, 0x07, 0xB8, 0x07, 0x97, 0x07, 0x58, 0x0E, 0xF8, 0xBB, 0xF6, 0xD3, 0x95, 0x6B, 0x99, 0x02, 0x5F, 0x02, 0x1F, 0x01, 0xBF, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xFF, 0x00, 0xDF, 0x00, 0xBF, 0x01, 0x00, 0x9F, 0x80, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x89, 0x00, 0x3F, 0x00, 0x1F, 0x98, 0xD5, 0xC8, 0xF2, 0xC9, 0x11, 0x19, 0x5E, 0x03, 0x3F, 0x05, 0x3F, 0x06, 0xBF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x80, 0x7B, 0x76, 0x06, 0xC0, 0xB1, 0x84, 0xC0, 0xD1, 0x88, 0xD1, 0x30, 0xF1, 0x30, 0xF0, 0x28, 0xF0, 0x02, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, + 0x08, 0xF3, 0x80, 0x10, 0xD2, 0x0A, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x10, 0xCF, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x44, 0x18, 0xAD, 0x8A, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0xD2, 0x00, 0xF6, 0x03, 0x01, 0x19, 0x85, 0x01, 0x18, 0x08, 0xD5, 0x10, 0xD0, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x25, 0x18, 0xAD, 0x81, 0x18, 0xB0, 0x01, 0x18, 0x04, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x8C, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF9, 0x18, 0xCF, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x17, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x01, 0x17, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xFA, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x2D, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x20, 0xAE, 0x80, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x81, 0x20, 0xCF, 0x28, 0xCE, 0x01, 0x28, 0xCF, 0x81, 0x28, 0xEF, 0x30, 0xEF, 0x01, 0x30, + 0xF0, 0x87, 0x31, 0x11, 0x39, 0x10, 0x39, 0x11, 0x41, 0x11, 0x49, 0x12, 0x41, 0x33, 0x49, 0x32, 0x49, 0x33, 0x01, 0x51, 0x54, 0x01, 0x59, 0x55, 0x88, 0x59, 0x75, 0x69, 0x96, 0x8A, 0x16, 0xAA, 0xD5, 0xCB, 0x55, 0xD3, 0x75, 0xD3, 0x55, 0xD3, 0x54, 0xD3, 0x55, 0x03, 0xD3, 0x35, 0x87, 0xCB, 0x35, 0x84, 0xF9, 0x0F, 0xBF, 0x5D, 0xDB, 0xA4, 0x57, 0x9C, 0x58, 0x84, 0xD8, 0x1F, 0x5E, 0x13, 0x07, 0xFF, 0x80, 0x9B, 0xD6, 0x04, 0xCA, 0x74, 0x80, 0x36, 0x9C, 0x06, 0x07, 0xFF, 0x02, 0x07, 0xFE, 0x02, 0x07, 0xFD, 0x02, 0x07, 0xFC, 0x08, 0x07, 0xFB, 0x03, 0x07, 0xFC, 0x03, 0x07, 0xFB, 0x01, 0x07, 0xDA, 0x8E, 0x07, 0xBA, 0x07, 0x9A, 0x07, 0x79, 0x2E, 0x99, 0xC3, 0xD6, 0xD3, 0x95, 0x83, 0x39, 0x0A, 0x3E, 0x01, 0xDF, 0x01, 0x9F, 0x01, 0x5F, 0x01, 0x1F, 0x00, 0xFF, 0x00, 0xBF, 0x00, 0x9F, 0x02, 0x00, 0x7F, 0x02, 0x00, 0x3F, 0x87, 0x90, 0xD5, 0xC9, 0x12, 0xC0, 0xF1, 0x71, 0x17, 0x02, 0x7F, 0x04, 0x9F, 0x06, 0x5F, 0x07, 0x7F, 0x04, 0x07, 0xFF, 0x81, 0x26, 0x9D, 0xC8, 0x91, 0x06, 0xC0, 0xB1, 0x81, 0xB8, 0xB1, 0x31, 0x10, 0x01, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x0F, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x09, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xB0, 0x01, 0x18, 0x01, 0x19, 0x08, 0xF7, 0x18, 0xCE, 0x43, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x84, 0x01, 0x17, 0x01, 0x1A, 0x00, 0xF9, 0x10, 0xD0, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x82, 0x10, 0xD1, 0x00, 0xF8, + 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x81, 0x00, 0xF6, 0x18, 0xAF, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x20, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x10, 0xD0, 0x01, 0x18, 0x05, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x8B, 0x20, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x39, 0x00, 0xF8, 0x18, 0xB0, 0x16, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x0D, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF9, 0x20, 0xAE, 0x27, 0x18, 0xAD, 0x83, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x81, 0x20, 0xCD, 0x18, 0xCE, 0x01, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x83, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xEF, 0x28, 0xD0, 0x01, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x80, 0x39, 0x31, 0x01, 0x41, 0x32, 0x82, 0x49, 0x33, 0x51, 0x33, 0x51, 0x53, 0x01, 0x51, 0x54, 0x87, 0x59, 0x75, 0x61, 0x75, 0x61, 0x95, 0x92, 0x55, 0x8B, 0x14, 0x4A, 0xD3, 0x7A, 0x94, 0xAB, 0x14, 0x02, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x84, 0xD3, 0x15, 0xD3, 0x14, 0xD3, 0x35, 0xC3, 0x55, 0x46, 0x7C, 0x17, 0x07, 0xFF, 0x80, 0xC2, 0xD4, + 0x01, 0xCA, 0x74, 0x83, 0xD2, 0x74, 0xCA, 0x74, 0xD2, 0x53, 0x36, 0x9C, 0x08, 0x07, 0xFF, 0x03, 0x07, 0xFE, 0x04, 0x07, 0xFD, 0x02, 0x07, 0xFC, 0x05, 0x07, 0xFD, 0x02, 0x07, 0xFE, 0x02, 0x07, 0xFD, 0x01, 0x07, 0xFC, 0x80, 0x07, 0xDB, 0x01, 0x07, 0xBB, 0x8A, 0x07, 0x7B, 0x2E, 0xBA, 0xC3, 0xD6, 0xD3, 0x95, 0xB3, 0x37, 0x09, 0xDF, 0x01, 0xBF, 0x01, 0x7F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xDF, 0x01, 0x00, 0x9F, 0x80, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x01, 0x00, 0x3F, 0x88, 0x78, 0x96, 0xC0, 0xF1, 0xC8, 0xF1, 0xA8, 0xF3, 0x01, 0xDF, 0x03, 0xDF, 0x05, 0xBF, 0x07, 0x1F, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x80, 0xA2, 0x14, 0x04, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x80, 0x68, 0xF1, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x22, 0x18, 0xAD, 0x80, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x84, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x39, 0x08, 0xF7, 0x18, 0xAE, 0x41, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x95, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xD0, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF4, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF6, 0x10, 0xD2, 0x10, 0xD0, 0x18, 0xCF, 0x18, 0xD0, 0x10, 0xD3, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF9, 0x18, 0xCF, 0x21, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x04, 0x18, 0xAD, 0x84, 0x18, + 0xAE, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x03, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xCF, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x2F, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x80, 0x20, 0xEF, 0x01, 0x28, 0xCF, 0x82, 0x28, 0xEF, 0x30, 0xF0, 0x30, 0xEF, 0x01, 0x30, 0xF0, 0x01, 0x39, 0x11, 0x91, 0x41, 0x11, 0x41, 0x32, 0x49, 0x32, 0x49, 0x33, 0x51, 0x33, 0x51, 0x53, 0x51, 0x54, 0x59, 0x54, 0x61, 0x95, 0x9A, 0x75, 0xCB, 0x55, 0xCB, 0x75, 0x5B, 0xB4, 0x3B, 0x34, 0x42, 0xB3, 0x4A, 0x33, 0x62, 0x53, 0x9A, 0xB4, 0x01, 0xD3, 0x35, 0x83, 0xD3, 0x15, 0xD3, 0x34, 0xD3, 0x14, 0xD3, 0x15, 0x01, 0xD3, 0x14, 0x80, 0x5D, 0xDB, 0x15, 0x07, 0xFF, 0x80, 0x1F, 0x5E, 0x04, 0xD2, 0x74, 0x81, 0xCA, 0x53, 0x36, 0x9D, 0x0C, 0x07, 0xFF, 0x0C, 0x07, 0xFE, 0x05, 0x07, 0xFF, 0x02, 0x07, 0xFE, 0x80, 0x07, 0xFD, 0x01, 0x07, 0xDD, 0x82, 0x07, 0xBD, 0x07, 0x9C, 0x56, 0x1A, 0x01, 0xD3, 0x95, 0x87, 0xAB, 0x37, 0x09, 0x9F, 0x01, 0x5F, 0x01, 0x3F, 0x01, 0x1F, 0x00, 0xFF, 0x00, + 0xBF, 0x00, 0x9F, 0x01, 0x00, 0x7F, 0x80, 0x00, 0x5F, 0x01, 0x00, 0x3F, 0x88, 0x30, 0x5C, 0xC0, 0xF1, 0xC8, 0xF1, 0xC8, 0xD1, 0x21, 0x5D, 0x03, 0x3F, 0x05, 0x1F, 0x06, 0xDF, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x80, 0x5C, 0xD9, 0x02, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x03, 0xC0, 0xB1, 0x81, 0x98, 0xD1, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x82, 0x28, 0xCF, 0x28, 0xEF, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x81, 0x18, 0xAD, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x3F, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x01, 0x17, 0x01, 0x1A, 0x01, 0x18, 0x10, 0xD0, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x81, 0x01, 0x17, 0x10, 0xD0, 0x02, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x08, 0xF3, 0x01, 0x18, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x21, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x03, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF8, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x86, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xCF, 0x11, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x00, 0xF8, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xCD, 0x18, 0xB0, 0x00, 0xF9, 0x01, 0x19, 0x00, + 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x01, 0x17, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x32, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x01, 0x39, 0x11, 0x82, 0x41, 0x11, 0x41, 0x31, 0x41, 0x32, 0x01, 0x49, 0x33, 0x90, 0x51, 0x54, 0x59, 0x74, 0x92, 0x55, 0xCB, 0x55, 0xD3, 0x75, 0xBB, 0x95, 0x54, 0x74, 0x3C, 0x34, 0x3B, 0xB4, 0x43, 0x33, 0x42, 0xB3, 0x4A, 0x13, 0x49, 0xF3, 0x5A, 0x32, 0x9A, 0xB4, 0xD3, 0x34, 0xD3, 0x35, 0x01, 0xD3, 0x14, 0x83, 0xD3, 0x15, 0xD3, 0x14, 0xD2, 0xF4, 0x84, 0xD8, 0x14, 0x07, 0xFF, 0x84, 0x4D, 0xDB, 0xD2, 0x74, 0xCA, 0x74, 0xCA, 0x73, 0xD2, 0x74, 0x01, 0xCA, 0x54, 0x80, 0x36, 0x9C, 0x23, 0x07, 0xFF, 0x01, 0x07, 0xFE, 0x83, 0x07, 0xDD, 0x07, 0xDE, 0x07, 0x9D, 0x6D, 0x99, 0x01, 0xD3, 0x95, 0x81, 0xAB, 0x17, 0x09, 0x7F, 0x01, 0x01, 0x1F, 0x80, 0x00, 0xFF, 0x01, 0x00, 0xBF, 0x80, 0x00, 0x9F, 0x01, 0x00, 0x7F, 0x02, 0x00, 0x3F, 0x01, 0xC8, 0xF1, 0x85, 0xC8, 0xD1, 0x51, 0x19, 0x02, 0xDF, 0x04, 0xFF, 0x06, 0xBF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x80, 0x1F, 0x1E, 0x08, 0xC0, 0xB1, 0x80, 0x49, 0x10, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xEF, 0x81, 0x28, 0xCF, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x0C, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x82, 0x10, 0xD2, + 0x18, 0xAD, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x10, 0xCF, 0x01, 0x01, 0x19, 0x84, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x25, 0x18, 0xAD, 0x8C, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xCF, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x86, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xD0, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xCE, 0x24, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x20, 0xAD, 0x09, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x20, 0xAD, 0x0F, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x10, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x0B, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x20, 0xAE, 0x10, 0xD2, 0x01, 0x08, 0xF3, 0x81, 0x10, 0xD2, 0x20, 0xAD, 0x33, 0x18, 0xAD, 0x81, + 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x82, 0x39, 0x10, 0x39, 0x11, 0x41, 0x12, 0x01, 0x41, 0x32, 0x83, 0x49, 0x33, 0x51, 0x33, 0x82, 0x14, 0xCB, 0x55, 0x01, 0xD3, 0x75, 0x88, 0xB3, 0xD5, 0x3D, 0x55, 0x35, 0x15, 0x34, 0x95, 0x3C, 0x14, 0x3B, 0x94, 0x3B, 0x13, 0x42, 0x93, 0x42, 0x12, 0x01, 0x49, 0xF3, 0x88, 0x5A, 0x13, 0x9A, 0xB4, 0xD3, 0x14, 0xD3, 0x15, 0xCB, 0x15, 0xD2, 0xF4, 0xD2, 0xF5, 0xD2, 0xF4, 0x75, 0x39, 0x13, 0x07, 0xFF, 0x87, 0x8C, 0x37, 0xCA, 0x74, 0xD2, 0x73, 0xD2, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0xD2, 0x53, 0x1F, 0x5E, 0x26, 0x07, 0xFF, 0x80, 0x07, 0xFE, 0x01, 0x07, 0xDF, 0x83, 0x94, 0xD8, 0xD3, 0x96, 0xD3, 0x95, 0x82, 0x99, 0x02, 0x00, 0xFF, 0x01, 0x00, 0xBF, 0x81, 0x00, 0x9F, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x89, 0x00, 0x3F, 0x00, 0x1F, 0xC8, 0xD1, 0xC0, 0xF1, 0xC0, 0xD1, 0xA0, 0xD4, 0x02, 0x7F, 0x04, 0xBF, 0x06, 0x9F, 0x07, 0xBF, 0x05, 0x07, 0xFF, 0x80, 0x83, 0x15, 0x07, 0xC0, 0xB1, 0x80, 0x70, 0xF1, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x02, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x0C, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xCD, 0x01, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, + 0x20, 0xAD, 0x10, 0xD2, 0x10, 0xD3, 0x08, 0xF3, 0x10, 0xD1, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x23, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x01, 0x19, 0x81, 0x10, 0xCF, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x08, 0xF6, 0x01, 0x19, 0x01, 0x18, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1B, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x05, 0x01, 0x19, 0x82, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xAD, 0x09, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x08, 0xF7, 0x01, 0x1A, 0x01, 0x18, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x02, 0x18, 0xAE, 0x81, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x0F, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x89, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x20, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x42, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x80, 0x28, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xF0, 0x02, 0x30, 0xF0, 0x01, 0x39, 0x11, 0x02, 0x41, 0x32, 0x81, 0x59, 0x73, 0xB2, 0xF4, 0x02, 0xD3, 0x75, 0x90, 0x94, 0x35, 0x3D, 0x55, 0x2D, 0x55, 0x2D, 0x75, 0x35, 0x15, 0x3C, 0x94, 0x34, 0x14, 0x3B, 0x94, 0x43, 0x13, 0x42, 0x93, 0x4A, 0x13, 0x41, 0xF3, + 0x49, 0xF2, 0x4A, 0x13, 0x5A, 0x33, 0xA2, 0xB4, 0xD3, 0x14, 0x01, 0xD2, 0xF4, 0x82, 0xD2, 0xD4, 0xD2, 0xF4, 0x4E, 0x1B, 0x11, 0x07, 0xFF, 0x83, 0x17, 0x9F, 0xD2, 0x74, 0xCA, 0x53, 0xCA, 0x73, 0x02, 0xCA, 0x53, 0x80, 0xD2, 0x53, 0x09, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x0C, 0x07, 0xFF, 0x07, 0x07, 0xDF, 0x06, 0x07, 0xFF, 0x81, 0x0F, 0x9E, 0xBC, 0x16, 0x01, 0xD3, 0x95, 0x80, 0x72, 0x5A, 0x02, 0x00, 0xBF, 0x80, 0x00, 0x9F, 0x01, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x82, 0x00, 0x3F, 0x00, 0x1F, 0x90, 0xB5, 0x01, 0xC8, 0xD1, 0x84, 0xC0, 0xD1, 0x12, 0x3E, 0x04, 0x7F, 0x06, 0x7F, 0x07, 0xBF, 0x05, 0x07, 0xFF, 0x80, 0x54, 0xD9, 0x05, 0xC0, 0xB1, 0x83, 0xC0, 0xD1, 0xC0, 0xB1, 0x90, 0xD1, 0x38, 0xF1, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x0C, 0x18, 0xAD, 0x81, 0x08, 0xF5, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xF5, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xCE, 0x0A, 0x18, 0xAD, 0x83, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x24, 0x18, 0xAD, 0x8B, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x18, 0xD0, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x85, 0x18, 0xAF, 0x08, 0xF6, 0x01, + 0x1A, 0x01, 0x19, 0x01, 0x18, 0x08, 0xF4, 0x03, 0x18, 0xAD, 0x83, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x18, 0x18, 0xAE, 0x20, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x0B, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF8, 0x10, 0xD0, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x11, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x86, 0x00, 0xF7, 0x18, 0xAE, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xD0, 0x01, 0x00, 0xF9, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x34, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x84, 0x28, 0xEF, 0x28, 0xF0, 0x30, 0xF0, 0x38, 0xF0, 0x30, 0xF0, 0x01, 0x39, 0x11, 0x83, 0x41, 0x12, 0x41, 0x32, 0x82, 0x34, 0xCB, 0x55, 0x01, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0x94, 0x35, 0x01, 0x35, 0x75, 0x80, 0x2D, 0x75, 0x01, 0x35, 0x55, 0x88, 0x35, 0x14, 0x34, 0x74, 0x3B, 0xF4, 0x3B, 0x73, 0x42, 0xF4, 0x42, 0x73, 0x4A, 0x13, 0x42, 0x13, 0x49, 0xF2, 0x01, 0x49, 0xF3, 0x86, 0x6A, 0x33, 0xBA, 0xD4, 0xD2, 0xF5, 0xD2, 0xF4, 0xD2, 0xD4, 0xC3, 0x35, 0x17, 0x7E, 0x10, 0x07, 0xFF, 0x83, 0x5D, 0x9A, 0xCA, 0x54, 0xD2, 0x73, 0xCA, + 0x54, 0x02, 0xCA, 0x53, 0x80, 0x9B, 0xB6, 0x05, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x02, 0x07, 0xBF, 0x80, 0x07, 0x9F, 0x01, 0x07, 0x7F, 0x82, 0x07, 0x7E, 0x07, 0xBF, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x07, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x04, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x80, 0x36, 0xDD, 0x02, 0xD3, 0x95, 0x80, 0x51, 0xBC, 0x01, 0x00, 0x9F, 0x02, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x89, 0x00, 0x3F, 0x00, 0x1F, 0x70, 0x77, 0xC0, 0xD2, 0xC8, 0xD1, 0xC0, 0xD1, 0x49, 0xFA, 0x04, 0x9F, 0x06, 0x9F, 0x07, 0xDF, 0x05, 0x07, 0xFF, 0x80, 0x1F, 0x1E, 0x06, 0xC0, 0xB1, 0x82, 0xC0, 0xD1, 0xC0, 0xB1, 0x39, 0x10, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x04, 0x20, 0xAE, 0x0B, 0x18, 0xAD, 0x80, 0x01, 0x1A, 0x05, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x09, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x87, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x02, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x20, 0xAD, 0x27, 0x18, 0xAD, 0x82, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xD0, 0x04, 0x18, 0xAD, 0x82, 0x10, 0xD3, 0x01, 0x1A, 0x01, 0x18, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF8, 0x01, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x84, 0x08, 0xF5, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAF, 0x01, + 0x01, 0x19, 0x80, 0x18, 0xD0, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x85, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xF3, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0x8D, 0x0A, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xCE, 0x08, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xB0, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x13, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x18, 0xCD, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x33, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x01, 0x39, 0x11, 0x81, 0x49, 0x52, 0xAA, 0xB4, 0x02, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0x94, 0x35, 0x01, 0x35, 0x75, 0x02, 0x2D, 0x75, 0x89, 0x35, 0x55, 0x54, 0xD5, 0x64, 0x75, 0x83, 0xB5, 0x8B, 0x74, 0x9B, 0x34, 0xAB, 0x14, 0xAA, 0xD4, 0xB2, 0xD4, 0xAA, 0xD4, 0x01, 0xAA, 0xB4, 0x86, 0xB2, 0xB4, 0x6B, 0x15, 0x8A, 0x94, 0xC2, 0xD4, 0xD2, 0xF4, 0xD2, 0xD4, 0x84, 0xB8, 0x10, 0x07, 0xFF, 0x83, 0xB3, 0x15, 0xD2, 0x74, 0xCA, 0x53, 0xCA, 0x54, 0x01, 0xCA, 0x53, 0x81, 0xD2, 0x53, 0x65, 0x3A, 0x01, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x80, 0x07, 0xFF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x80, 0x07, + 0x7F, 0x01, 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x80, 0x07, 0x1F, 0x01, 0x07, 0x1E, 0x83, 0x07, 0x3E, 0x07, 0x9F, 0x07, 0xDF, 0x07, 0xFF, 0x04, 0x07, 0xDF, 0x08, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x80, 0x7D, 0x7A, 0x01, 0xD3, 0x95, 0x81, 0xC3, 0x75, 0x28, 0xFE, 0x01, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x81, 0x00, 0x3F, 0x00, 0x5F, 0x01, 0x00, 0x3F, 0x80, 0x18, 0x3E, 0x01, 0xC0, 0xD1, 0x84, 0xC0, 0xD2, 0x79, 0x96, 0x04, 0xBF, 0x06, 0x7F, 0x07, 0xBF, 0x06, 0x07, 0xFF, 0x80, 0xA2, 0x14, 0x02, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x02, 0xC0, 0xB1, 0x81, 0xC0, 0xD1, 0x58, 0xF1, 0x02, 0x30, 0xF0, 0x82, 0x28, 0xCF, 0x28, 0xEF, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x0B, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x09, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x83, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x02, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF6, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x03, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x19, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x28, 0x18, 0xAD, 0x81, 0x01, 0x18, 0x18, 0xB0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x08, 0xF7, 0x01, 0x19, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x85, 0x08, 0xF4, 0x01, 0x39, 0x01, 0x19, 0x10, 0xF3, 0x18, 0xD0, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x80, 0x18, 0xD0, 0x01, 0x18, 0xAE, 0x84, 0x18, 0xCD, 0x01, + 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x18, 0xAE, 0x22, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0A, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x83, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF8, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x17, 0x18, 0xCE, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x30, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x83, 0x38, 0xF0, 0x39, 0x11, 0x59, 0x72, 0xCB, 0x55, 0x03, 0xD3, 0x75, 0x86, 0xAB, 0xD5, 0x45, 0x15, 0x54, 0xF5, 0x7C, 0x75, 0x8C, 0x35, 0xAB, 0xD5, 0xCB, 0x55, 0x01, 0xD3, 0x35, 0x80, 0xD3, 0x34, 0x01, 0xD3, 0x35, 0x80, 0xD3, 0x15, 0x01, 0xD3, 0x14, 0x84, 0xC3, 0x55, 0x9C, 0x37, 0x65, 0x9A, 0x46, 0x7C, 0x0F, 0xBF, 0x01, 0x07, 0xFF, 0x83, 0x26, 0x9D, 0x9C, 0x17, 0xD2, 0xD4, 0x9C, 0x17, 0x0F, 0x07, 0xFF, 0x84, 0x5D, 0x9A, 0xD2, 0x74, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0x02, 0xCA, 0x33, 0x81, 0x26, 0xDD, 0x07, 0xFF, 0x03, 0x07, 0xDF, 0x80, 0x07, 0xBF, 0x01, 0x07, 0x9F, 0x01, 0x07, 0x7F, 0x81, 0x07, 0x5F, 0x07, 0x3F, 0x01, 0x07, 0x1E, + 0x01, 0x06, 0xFE, 0x80, 0x06, 0xFF, 0x01, 0x06, 0xDE, 0x01, 0x06, 0xBE, 0x82, 0x06, 0xDE, 0x07, 0x3E, 0x07, 0x9F, 0x01, 0x07, 0xBF, 0x02, 0x07, 0x9F, 0x80, 0x07, 0x7F, 0x01, 0x07, 0x9F, 0x80, 0x07, 0x7F, 0x03, 0x07, 0x9F, 0x01, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x81, 0x0F, 0xBF, 0xC3, 0xF6, 0x01, 0xD3, 0x95, 0x80, 0xAA, 0xF7, 0x06, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x86, 0xA0, 0x94, 0xC0, 0xD1, 0xC8, 0xB1, 0xA8, 0xF3, 0x04, 0xBF, 0x06, 0x9F, 0x07, 0xDF, 0x06, 0x07, 0xFF, 0x81, 0x73, 0xD8, 0xB8, 0xB1, 0x02, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x02, 0xC0, 0xB1, 0x81, 0x78, 0xF1, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x0B, 0x18, 0xAD, 0x02, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x07, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x05, 0x01, 0x19, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x25, 0x18, 0xAD, 0x83, 0x18, 0xCF, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x00, 0xF6, 0x01, 0x19, 0x08, 0xF3, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x82, 0x00, 0xF6, 0x00, 0xF9, 0x08, 0xD4, 0x02, 0x18, 0xAD, 0x82, 0x00, 0xF8, 0x01, 0x19, 0x08, 0xF3, 0x02, 0x18, 0xAD, 0x84, 0x00, 0xF6, 0x01, 0x19, 0x10, + 0xD3, 0x18, 0xAD, 0x18, 0xAE, 0x1E, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x09, 0x18, 0xAD, 0x8A, 0x20, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x18, 0xD0, 0x02, 0x18, 0xAD, 0x80, 0x18, 0x8D, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x86, 0x18, 0xCD, 0x10, 0xCF, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x17, 0x18, 0xCE, 0x18, 0x8D, 0x02, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x42, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x80, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x81, 0x31, 0x11, 0x71, 0xF2, 0x04, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x80, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x80, 0xCB, 0x14, 0x01, 0xD3, 0x34, 0x83, 0xAC, 0x16, 0x75, 0x3A, 0x46, 0x7D, 0x1F, 0x5E, 0x08, 0x07, 0xFF, 0x81, 0x36, 0x9C, 0x4E, 0x1B, 0x0E, 0x07, 0xFF, 0x81, 0x26, 0xFD, 0xC2, 0xB4, 0x02, 0xCA, 0x53, 0x80, 0xD2, 0x53, 0x01, 0xCA, 0x33, 0x80, 0xA3, 0x56, 0x01, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x80, 0x07, 0x9F, 0x01, 0x07, 0x7F, 0x81, 0x07, 0x5F, 0x07, 0x3F, 0x01, 0x07, 0x1F, 0x80, 0x06, 0xFF, 0x01, 0x06, 0xFE, 0x80, 0x06, 0xDE, 0x01, 0x06, 0xBE, 0x02, 0x06, 0x9E, 0x01, + 0x06, 0x7E, 0x01, 0x06, 0x5E, 0x81, 0x06, 0xBE, 0x07, 0x3E, 0x07, 0x07, 0x5F, 0x03, 0x07, 0x7F, 0x80, 0x07, 0x9F, 0x01, 0x07, 0xBF, 0x02, 0x07, 0xDF, 0x86, 0x07, 0xFF, 0x07, 0xDF, 0x6D, 0xDA, 0xD3, 0x95, 0xD3, 0x76, 0xD3, 0x75, 0x79, 0xFA, 0x01, 0x00, 0x3F, 0x81, 0x00, 0x1F, 0x00, 0x3F, 0x03, 0x00, 0x1F, 0x80, 0x88, 0x96, 0x01, 0xC0, 0xB1, 0x83, 0xC8, 0xB1, 0x0C, 0x9F, 0x06, 0x9F, 0x07, 0xBF, 0x06, 0x07, 0xFF, 0x80, 0x3D, 0xBB, 0x02, 0xC0, 0xB1, 0x82, 0xC0, 0xD1, 0xC0, 0xB1, 0xB8, 0xD1, 0x01, 0xC0, 0xB1, 0x81, 0x98, 0xD1, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x82, 0x20, 0xAE, 0x20, 0xCE, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x0A, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x05, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x0A, 0x18, 0xAD, 0x86, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xCF, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x29, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x82, 0x08, 0xF6, 0x01, 0x19, 0x08, 0xF3, 0x02, 0x18, 0xAD, 0x82, 0x00, 0xF6, 0x01, 0x1A, 0x08, 0xF4, 0x02, 0x18, 0xAD, 0x83, 0x01, 0x18, 0x01, 0x1A, 0x08, 0xF3, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x08, 0xF7, 0x01, 0x19, 0x08, 0xF3, 0x18, 0xCD, 0x01, 0x18, + 0xAD, 0x80, 0x18, 0xCD, 0x1D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x04, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xB0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x85, 0x18, 0xB0, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x30, 0x18, 0xAD, 0x05, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x02, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x02, 0x30, 0xF0, 0x80, 0x9A, 0x93, 0x03, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x80, 0xD3, 0x35, 0x01, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x83, 0xC3, 0x75, 0x84, 0xF9, 0x4E, 0x3C, 0x0F, 0xBF, 0x1C, 0x07, 0xFF, 0x84, 0x0F, 0x9F, 0xAB, 0x75, 0xCA, 0x54, 0xD2, 0x53, 0xCA, 0x53, 0x01, 0xCA, 0x33, 0x83, 0xD2, 0x33, 0xCA, 0x33, 0x4D, 0xBB, 0x07, 0xDF, 0x01, 0x07, 0xBF, 0x81, 0x07, 0x9F, 0x07, 0x7F, 0x01, 0x07, 0x5F, 0x80, 0x07, 0x3F, 0x01, 0x07, 0x1F, 0x80, 0x06, 0xFF, 0x02, 0x06, 0xDE, 0x01, 0x06, 0xBE, 0x80, 0x06, 0x9E, 0x02, 0x06, 0x7E, 0x80, 0x06, 0x5E, 0x01, 0x06, 0x3E, 0x01, 0x06, 0x1E, 0x83, 0x05, 0xFE, 0x05, 0xFD, 0x06, 0x7D, 0x06, 0xDE, 0x03, 0x06, 0xFE, 0x80, 0x07, 0x1E, 0x02, 0x07, 0x3F, 0x82, 0x07, 0x3E, 0x07, 0x5F, 0x07, 0x7F, 0x01, 0x07, 0x9F, 0x80, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x81, 0x0F, 0xBF, + 0xC3, 0xD6, 0x01, 0xD3, 0x75, 0x81, 0xD3, 0x55, 0x30, 0xFD, 0x03, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x80, 0x60, 0x58, 0x02, 0xC0, 0xB1, 0x82, 0x33, 0xFC, 0x06, 0xBF, 0x07, 0xBF, 0x06, 0x07, 0xFF, 0x81, 0x0F, 0x9E, 0xC0, 0xD1, 0x02, 0xC0, 0xB1, 0x82, 0xC0, 0xD1, 0xB8, 0xB1, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x81, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x80, 0x20, 0xAD, 0x01, 0x20, 0xAE, 0x0A, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x24, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x88, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF6, 0x01, 0x19, 0x08, 0xD5, 0x18, 0xCD, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xD4, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD3, 0x10, 0xD0, 0x08, 0xF4, 0x01, 0x01, 0x19, 0x80, 0x18, 0xB0, 0x02, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x3A, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, + 0x20, 0xAD, 0x15, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xB0, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x4B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x05, 0x20, 0xCE, 0x01, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x82, 0x30, 0xF0, 0x39, 0x10, 0xAA, 0xF4, 0x04, 0xD3, 0x75, 0x04, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x82, 0xB3, 0xD6, 0x75, 0x39, 0x27, 0x1D, 0x1F, 0x07, 0xFF, 0x85, 0x2E, 0xFD, 0xB3, 0x15, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x33, 0xCA, 0x53, 0x01, 0xCA, 0x34, 0x81, 0xCA, 0x33, 0xA3, 0x35, 0x01, 0x07, 0xBF, 0x82, 0x07, 0x9F, 0x07, 0x7F, 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x80, 0x07, 0x1F, 0x01, 0x06, 0xFF, 0x83, 0x06, 0xDF, 0x06, 0xDE, 0x06, 0xBF, 0x06, 0xBE, 0x02, 0x06, 0x9E, 0x80, 0x06, 0x7E, 0x01, 0x06, 0x5E, 0x80, 0x06, 0x3E, 0x01, 0x06, 0x1E, 0x84, 0x05, 0xFE, 0x05, 0xDE, 0x05, 0xBD, 0x05, 0xBE, 0x05, 0x9D, 0x01, 0x05, 0x5E, 0x84, 0x05, 0xBE, 0x05, 0xFE, 0x06, 0x1D, 0x06, 0x7E, 0x06, 0xBE, 0x01, 0x06, 0xFE, 0x81, 0x07, 0x1F, 0x07, 0x1E, 0x01, 0x07, 0x3F, 0x82, 0x07, 0x5F, 0x07, 0x7F, 0x07, 0x9F, 0x01, 0x07, 0xBF, 0x80, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x81, 0x85, 0x39, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x80, 0xBA, 0xF6, 0x06, 0x00, 0x1F, 0x81, 0x40, 0x3B, 0xC8, 0xB1, 0x01, 0xC0, 0xB1, 0x82, 0x63, 0x18, 0x06, 0xBF, 0x07, 0xBF, 0x07, 0x07, 0xFF, 0x80, 0xA9, 0xB3, 0x05, 0xC0, 0xB1, 0x83, 0xC0, 0xD1, 0xB8, 0xD1, 0x49, 0x10, 0x39, 0x10, 0x01, 0x30, 0xF0, 0x84, 0x28, 0xCF, 0x28, 0xEF, 0x28, 0xCF, 0x20, 0xCF, 0x20, 0xCE, 0x02, + 0x20, 0xAE, 0x84, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x20, 0xAE, 0x09, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x10, 0xD3, 0x80, 0x10, 0xD2, 0x0E, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x84, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x2C, 0x18, 0xAD, 0x95, 0x20, 0xAD, 0x08, 0xF3, 0x01, 0x1A, 0x01, 0x18, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF8, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xCD, 0x18, 0xAD, 0x10, 0xD0, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x25, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x0F, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x83, 0x01, 0x17, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAF, 0x14, 0x18, 0xAD, 0x89, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCF, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x42, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xCF, 0x01, 0x28, 0xCF, 0x83, 0x28, 0xEF, 0x30, 0xCF, 0x39, 0x10, 0xB3, 0x14, 0x04, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x80, 0xD3, 0x54, 0x01, 0xD3, 0x55, 0x82, 0xCB, 0x96, 0x85, 0x18, + 0x36, 0xDD, 0x20, 0x07, 0xFF, 0x84, 0x0F, 0xBE, 0x65, 0x3A, 0xCA, 0x54, 0xCA, 0x53, 0xD2, 0x53, 0x01, 0xCA, 0x53, 0x03, 0xCA, 0x33, 0x80, 0x2E, 0x9D, 0x01, 0x07, 0x7F, 0x80, 0x07, 0x5F, 0x01, 0x07, 0x3F, 0x88, 0x07, 0x1F, 0x06, 0xFF, 0x06, 0xFE, 0x06, 0xDF, 0x06, 0xDE, 0x06, 0xBF, 0x06, 0xBE, 0x06, 0xBF, 0x06, 0x9E, 0x01, 0x06, 0x7E, 0x01, 0x06, 0x5E, 0x80, 0x06, 0x3E, 0x01, 0x06, 0x1E, 0x81, 0x05, 0xFE, 0x05, 0xDE, 0x01, 0x05, 0xBE, 0x8B, 0x05, 0x9E, 0x05, 0x7E, 0x05, 0x3E, 0x05, 0x1E, 0x04, 0xFE, 0x04, 0xBE, 0x04, 0x9E, 0x04, 0x1E, 0x03, 0xDD, 0x04, 0xDE, 0x06, 0x5E, 0x06, 0xBE, 0x01, 0x06, 0xDE, 0x83, 0x06, 0xFE, 0x07, 0x1F, 0x07, 0x3E, 0x07, 0x7F, 0x01, 0x07, 0x9F, 0x80, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x36, 0xDD, 0x02, 0xD3, 0x55, 0x81, 0xD3, 0x35, 0x69, 0x9A, 0x06, 0x00, 0x1F, 0x85, 0xB8, 0xB2, 0xC0, 0x91, 0xC0, 0xB1, 0x7A, 0x96, 0x06, 0xBF, 0x07, 0x9F, 0x04, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x82, 0x82, 0xF5, 0xC0, 0xB1, 0xC0, 0xD1, 0x02, 0xC0, 0xB1, 0x02, 0xB8, 0xD1, 0x81, 0x60, 0xF1, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xEF, 0x81, 0x28, 0xCF, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x80, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x11, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x83, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x08, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, + 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x20, 0xCD, 0x10, 0xD2, 0x08, 0xD4, 0x08, 0xF3, 0x10, 0xD2, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x2E, 0x18, 0xAD, 0x88, 0x10, 0xCF, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAF, 0x08, 0xF6, 0x01, 0x01, 0x19, 0x89, 0x00, 0xF9, 0x08, 0xF4, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x1A, 0x00, 0xF8, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x22, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x08, 0xF7, 0x01, 0x19, 0x08, 0xF7, 0x18, 0xCE, 0x20, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x43, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x02, 0x20, 0xAE, 0x04, 0x20, 0xCE, 0x86, 0x28, 0xCE, 0x20, 0xCF, 0x28, 0xCF, 0x28, 0xEF, 0x39, 0x10, 0xB3, 0x14, 0xD3, 0x95, 0x03, 0xD3, 0x75, 0x03, 0xD3, 0x55, 0x82, 0xBB, 0xD6, 0x5D, 0xFB, 0x0F, 0xBF, 0x20, 0x07, 0xFF, 0x85, 0x0F, 0xBF, 0x5D, 0x9A, 0xB3, 0x15, 0xD2, 0x54, 0xCA, 0x53, 0xD2, 0x54, 0x01, 0xCA, 0x53, 0x81, 0xCA, 0x33, 0xD2, 0x33, 0x01, 0xCA, 0x33, 0x81, 0x64, 0xD9, 0x07, 0x7F, 0x01, 0x07, 0x3F, 0x80, 0x07, 0x1F, 0x01, 0x06, 0xFF, 0x02, 0x06, 0xDF, 0x81, 0x06, 0xBF, 0x06, 0xBE, 0x01, 0x06, 0x9F, 0x80, 0x06, 0x7E, 0x01, 0x06, 0x5E, 0x01, 0x06, 0x3E, 0x80, 0x06, 0x1E, 0x01, + 0x05, 0xFE, 0x81, 0x05, 0xDE, 0x05, 0xBE, 0x01, 0x05, 0x9E, 0x01, 0x05, 0x5E, 0x8A, 0x05, 0x1E, 0x04, 0xFE, 0x04, 0xDE, 0x04, 0x9E, 0x04, 0x3D, 0x03, 0xDE, 0x03, 0xBE, 0x03, 0x9E, 0x03, 0x7E, 0x03, 0xFE, 0x05, 0xFE, 0x01, 0x06, 0x9E, 0x84, 0x06, 0xBE, 0x06, 0xFE, 0x07, 0x1E, 0x07, 0x3F, 0x07, 0x5F, 0x01, 0x07, 0x9F, 0x02, 0x07, 0xDF, 0x82, 0x07, 0xFF, 0xBB, 0xF6, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x81, 0xC2, 0xF5, 0x08, 0x3F, 0x04, 0x00, 0x1F, 0x81, 0x00, 0x3F, 0x90, 0x95, 0x01, 0xC8, 0xB1, 0x87, 0x91, 0xF5, 0x06, 0x7F, 0x06, 0xFF, 0x07, 0x3F, 0x07, 0x5F, 0x07, 0x7F, 0x07, 0xBF, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x80, 0x54, 0xD9, 0x03, 0xC0, 0xB1, 0x81, 0xB8, 0xD1, 0xC0, 0xD1, 0x01, 0xB8, 0xD1, 0x81, 0x80, 0xF2, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x01, 0x20, 0xCE, 0x87, 0x20, 0xAE, 0x20, 0xAD, 0x20, 0xCD, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAE, 0x82, 0x01, 0x17, 0x01, 0x19, 0x01, 0x17, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x24, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, + 0xAE, 0x01, 0x18, 0xAD, 0x86, 0x00, 0xF6, 0x01, 0x1A, 0x01, 0x17, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xCD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x29, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xCE, 0x08, 0xF7, 0x01, 0x1A, 0x11, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x05, 0x01, 0x19, 0x81, 0x00, 0xF6, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x43, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x03, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x81, 0x20, 0xCF, 0x28, 0xCE, 0x01, 0x28, 0xCF, 0x82, 0x31, 0x10, 0xB3, 0x14, 0xD3, 0x95, 0x03, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x81, 0x9C, 0x77, 0x56, 0x3B, 0x03, 0x07, 0xFF, 0x82, 0x1F, 0x7E, 0x65, 0xDB, 0x7C, 0xF9, 0x03, 0x9C, 0x57, 0x03, 0x9C, 0x37, 0x83, 0x75, 0x39, 0x6D, 0x7A, 0x65, 0x79, 0x5D, 0xBB, 0x01, 0x36, 0xBD, 0x81, 0x36, 0xBC, 0x2E, 0xFD, 0x08, 0x07, 0xFF, 0x92, 0x0F, 0xBF, 0x36, 0xBD, 0x5D, 0x9A, 0x8C, 0x37, 0xD2, 0x74, 0xD2, 0x73, 0xD2, 0x54, 0xCA, 0x53, 0xD2, 0x54, 0xD2, 0x53, 0xCA, 0x33, 0xD2, 0x33, 0xCA, 0x34, 0xCA, 0x13, 0xCA, 0x33, 0x84, 0x18, 0x07, 0x5F, 0x07, 0x3F, 0x07, 0x1F, 0x01, 0x06, 0xFF, 0x02, 0x06, 0xDF, 0x01, 0x06, 0xBF, 0x81, 0x06, 0x9E, 0x06, 0x9F, 0x01, 0x06, 0x7E, 0x01, 0x06, 0x5E, 0x80, 0x06, 0x3E, 0x01, 0x06, 0x1E, 0x80, 0x05, 0xFE, 0x01, 0x05, 0xDE, + 0x01, 0x05, 0xBE, 0x81, 0x05, 0x7E, 0x05, 0x5E, 0x01, 0x05, 0x1E, 0x85, 0x04, 0xFE, 0x04, 0xBE, 0x04, 0x5E, 0x03, 0xFE, 0x03, 0xBE, 0x03, 0x9E, 0x01, 0x03, 0x7E, 0x83, 0x03, 0x5E, 0x03, 0x3E, 0x03, 0x5E, 0x06, 0x1D, 0x01, 0x06, 0x7E, 0x86, 0x06, 0x9E, 0x06, 0xBE, 0x06, 0xFE, 0x07, 0x3F, 0x07, 0x5F, 0x07, 0x7F, 0x07, 0x9F, 0x01, 0x07, 0xDF, 0x81, 0x07, 0xFF, 0x7D, 0x59, 0x02, 0xD3, 0x35, 0x81, 0xD3, 0x14, 0x69, 0x9A, 0x04, 0x00, 0x1F, 0x81, 0x00, 0x7F, 0x60, 0xD8, 0x01, 0xC0, 0xB1, 0x87, 0xB8, 0xF2, 0x05, 0xDF, 0x06, 0x1F, 0x06, 0x5F, 0x06, 0xDF, 0x07, 0x3F, 0x07, 0x7F, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x80, 0x36, 0x3C, 0x03, 0xC0, 0xB1, 0x81, 0xB8, 0xD1, 0xC0, 0xD1, 0x01, 0xB8, 0xD1, 0x81, 0x90, 0xD1, 0x39, 0x11, 0x02, 0x30, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x85, 0x20, 0xAE, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x00, 0xF8, 0x01, 0x19, 0x01, 0x17, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xAE, 0x25, + 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x8A, 0x10, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xD0, 0x00, 0xF8, 0x01, 0x1A, 0x00, 0xF8, 0x28, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x11, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x08, 0xD5, 0x02, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAE, 0x18, 0xCD, 0x45, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x04, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x80, 0x20, 0xCF, 0x01, 0x28, 0xCE, 0x81, 0x30, 0xEF, 0xB3, 0x14, 0x03, 0xD3, 0x75, 0x84, 0xD3, 0x55, 0xD3, 0x75, 0xD3, 0x55, 0x9C, 0x77, 0x3E, 0xDD, 0x04, 0x07, 0xFF, 0x83, 0x65, 0x9A, 0xD3, 0x15, 0xD3, 0x14, 0xD3, 0x15, 0x02, 0xD3, 0x14, 0x03, 0xD2, 0xF4, 0x01, 0xD2, 0xD4, 0x82, 0xD2, 0xF4, 0xCA, 0xD4, 0xD2, 0xD4, 0x02, 0xD2, 0xB4, 0x80, 0xCA, 0xB4, 0x02, 0xD2, 0xB4, 0x01, 0xD2, 0x94, 0x03, 0xCA, 0x94, 0x01, 0xCA, 0x74, 0x01, 0xCA, 0x73, 0x80, 0xD2, 0x74, 0x05, 0xCA, 0x53, 0x02, 0xCA, 0x33, 0x81, 0xAB, 0x15, 0x0E, 0xDF, 0x01, 0x06, 0xFF, 0x01, 0x06, 0xDF, 0x01, 0x06, 0xBF, 0x81, 0x06, 0xDF, 0x06, 0xBF, 0x01, 0x06, 0x9F, 0x84, 0x06, 0x7E, 0x06, 0x7F, 0x06, + 0x7E, 0x06, 0x5E, 0x06, 0x3F, 0x01, 0x06, 0x1E, 0x01, 0x05, 0xFE, 0x81, 0x05, 0xDE, 0x05, 0xBE, 0x01, 0x05, 0x9E, 0x87, 0x05, 0x5E, 0x05, 0x3E, 0x05, 0x1E, 0x04, 0xFE, 0x04, 0xDE, 0x04, 0x9E, 0x04, 0x3E, 0x03, 0xBE, 0x01, 0x03, 0x9E, 0x01, 0x03, 0x5E, 0x01, 0x03, 0x3E, 0x91, 0x03, 0x1E, 0x02, 0xFE, 0x03, 0x7E, 0x05, 0xFE, 0x06, 0x5E, 0x06, 0x7E, 0x06, 0x9E, 0x06, 0xDE, 0x06, 0xFE, 0x07, 0x5F, 0x07, 0x7F, 0x07, 0x9F, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xFF, 0x27, 0x1D, 0xD3, 0x35, 0xD3, 0x14, 0x01, 0xD3, 0x15, 0x81, 0xC2, 0xD5, 0x08, 0x3F, 0x03, 0x00, 0x1F, 0x8B, 0x00, 0x9F, 0x60, 0xD8, 0xC0, 0xB1, 0xC0, 0xB2, 0xC0, 0xB1, 0x04, 0xBF, 0x05, 0x3F, 0x05, 0xBF, 0x06, 0x7F, 0x06, 0xDF, 0x07, 0x5F, 0x07, 0x9F, 0x03, 0x07, 0xFF, 0x01, 0xC0, 0xB1, 0x03, 0xB8, 0xD1, 0x84, 0xC0, 0xB1, 0xB8, 0xD1, 0x98, 0xD1, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x84, 0x18, 0xCE, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAE, 0x2A, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF3, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF7, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x10, 0xD2, + 0x01, 0x18, 0x01, 0x01, 0x19, 0x82, 0x10, 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x43, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x13, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x07, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x43, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x03, 0x20, 0xCE, 0x83, 0x28, 0xCE, 0x20, 0xCE, 0x30, 0xEF, 0xB3, 0x14, 0x03, 0xD3, 0x75, 0x83, 0xD3, 0x55, 0xD3, 0x75, 0xAC, 0x37, 0x36, 0xDD, 0x02, 0x07, 0xFF, 0x8A, 0x0E, 0xBD, 0x1D, 0x7B, 0x1C, 0x99, 0x32, 0xF5, 0x3A, 0x75, 0x61, 0x93, 0x69, 0xB3, 0x79, 0xF4, 0x8A, 0x14, 0xB2, 0x94, 0xCA, 0xF4, 0x03, 0xD2, 0xF4, 0x03, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x82, 0xCA, 0xD4, 0xD2, 0xB4, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x03, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x01, 0xCA, 0x74, 0x01, 0xD2, 0x74, 0x80, 0xCA, 0x53, 0x01, 0xCA, 0x54, 0x82, 0xCA, 0x53, 0xD2, 0x53, 0xCA, 0x53, 0x03, 0xCA, 0x33, 0x82, 0x8B, 0x97, 0x35, 0xFD, 0x5D, 0x7B, 0x01, 0x6D, 0x3A, 0x89, 0x5D, 0x5B, 0x35, 0xFD, 0x06, 0xBF, 0x0E, 0x7E, 0x45, 0x7C, 0x6C, 0x99, 0x64, 0x79, 0x64, 0x59, 0x4C, 0xBA, 0x0E, 0x1E, 0x01, 0x06, 0x3E, 0x80, 0x06, 0x1E, 0x02, 0x05, 0xFE, 0x84, 0x05, 0xDE, 0x05, 0xBE, 0x05, 0x9E, 0x05, 0x7E, 0x05, 0x5E, 0x01, 0x05, 0x1E, 0x87, 0x04, 0xFE, 0x04, 0xDE, 0x04, 0x7E, 0x03, 0xDE, 0x03, 0xBE, 0x03, 0x7E, 0x03, 0x7F, 0x03, 0x5E, 0x01, 0x03, 0x3E, 0x80, 0x03, 0x1E, 0x02, 0x02, 0xFE, 0x90, 0x02, 0xDE, 0x03, 0xFE, 0x05, + 0xBE, 0x06, 0x3E, 0x06, 0x5E, 0x06, 0x9E, 0x06, 0xDE, 0x07, 0x1F, 0x07, 0x3E, 0x07, 0x7F, 0x07, 0x9F, 0x07, 0xBF, 0x07, 0xDF, 0x07, 0xFF, 0xBB, 0xB6, 0xD3, 0x14, 0xD3, 0x15, 0x01, 0xD2, 0xF4, 0x80, 0x69, 0x7A, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x3F, 0x00, 0x7F, 0x48, 0xFA, 0x02, 0xC0, 0xB1, 0x86, 0x33, 0x1C, 0x04, 0x7F, 0x05, 0x3F, 0x05, 0xFF, 0x06, 0x9F, 0x07, 0x3F, 0x07, 0x9F, 0x03, 0x07, 0xFF, 0x80, 0x9A, 0x14, 0x01, 0xB8, 0xD1, 0x80, 0xC0, 0xB1, 0x03, 0xB8, 0xD1, 0x82, 0xB0, 0xD1, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x85, 0x20, 0xCE, 0x20, 0xCF, 0x20, 0xAE, 0x18, 0xCF, 0x08, 0xF6, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF4, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x04, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x0D, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x2A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x08, 0xD4, 0x02, 0x01, 0x19, 0x8A, 0x08, 0xF6, 0x10, 0xD2, 0x10, 0xD0, 0x18, 0xD0, 0x18, 0xD1, 0x10, 0xD2, 0x00, 0xF8, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD0, 0x42, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x47, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x20, 0xAE, 0x18, 0xAD, + 0x01, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x81, 0x28, 0xCF, 0x92, 0x73, 0x04, 0xD3, 0x75, 0x85, 0xC3, 0xB6, 0x5D, 0xFB, 0x07, 0xFF, 0x0E, 0x3B, 0x1C, 0x98, 0x2A, 0xD5, 0x01, 0x39, 0x11, 0x81, 0x39, 0x12, 0x41, 0x11, 0x02, 0x41, 0x12, 0x03, 0x41, 0x32, 0x8A, 0x49, 0x33, 0x51, 0x73, 0x79, 0xD3, 0x9A, 0x54, 0xC2, 0x94, 0xD2, 0xF4, 0xD2, 0xD5, 0xCA, 0xD4, 0xD2, 0xD4, 0xD2, 0xB4, 0xCA, 0xD4, 0x03, 0xD2, 0xB4, 0x03, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x02, 0xCA, 0x74, 0x81, 0xCA, 0x73, 0xD2, 0x53, 0x04, 0xCA, 0x53, 0x03, 0xCA, 0x33, 0x83, 0x99, 0xD4, 0x63, 0x58, 0xD3, 0x95, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x88, 0x06, 0xBF, 0x5C, 0xFA, 0xD2, 0xB4, 0xCA, 0x94, 0xCA, 0x33, 0xCA, 0x13, 0xC9, 0xD3, 0xB9, 0xD3, 0x4C, 0x5A, 0x01, 0x06, 0x1E, 0x01, 0x05, 0xDE, 0x80, 0x05, 0xBE, 0x01, 0x05, 0x9E, 0x86, 0x05, 0x7E, 0x05, 0x3E, 0x05, 0x1E, 0x05, 0x1D, 0x04, 0xDE, 0x04, 0xBE, 0x04, 0x3E, 0x01, 0x03, 0xBE, 0x84, 0x03, 0x7F, 0x0B, 0x7E, 0x33, 0x7C, 0x33, 0x3C, 0x33, 0x5C, 0x01, 0x33, 0x3C, 0x01, 0x33, 0x1C, 0x01, 0x32, 0xFC, 0x8A, 0x32, 0xDC, 0x2B, 0x7C, 0x05, 0xDE, 0x06, 0x1E, 0x06, 0x5E, 0x06, 0x9E, 0x06, 0xDE, 0x07, 0x1F, 0x07, 0x3F, 0x07, 0x7F, 0x07, 0xBF, 0x01, 0x07, 0xDF, 0x85, 0x84, 0xF9, 0xD3, 0x14, 0xCB, 0x14, 0xCA, 0xF4, 0xD2, 0xD5, 0xB2, 0x75, 0x03, 0x00, 0x1F, 0x82, 0x00, 0x5F, 0x08, 0xDF, 0xB8, 0xD2, 0x01, 0xC0, 0xB1, 0x86, 0x3A, 0x7B, 0x03, 0xFF, 0x04, 0xDF, 0x05, 0xBF, 0x06, 0x7F, 0x07, + 0x1F, 0x07, 0x9F, 0x03, 0x07, 0xFF, 0x82, 0x7B, 0x77, 0xB8, 0xD1, 0xB8, 0xB1, 0x05, 0xB8, 0xD1, 0x81, 0x41, 0x11, 0x38, 0xF1, 0x01, 0x30, 0xF0, 0x02, 0x28, 0xCF, 0x89, 0x20, 0xCF, 0x20, 0xAE, 0x20, 0xCF, 0x09, 0x18, 0x01, 0x3A, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF6, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x8D, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x27, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x81, 0x10, 0xD1, 0x01, 0x18, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF6, 0x18, 0xCF, 0x03, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x24, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x10, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x12, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x4C, 0x01, 0x19, 0x88, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x39, 0x00, 0xF9, 0x10, 0xD2, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x02, 0x20, 0xCE, 0x80, 0x7A, + 0x32, 0x04, 0xD3, 0x75, 0x85, 0x9C, 0x78, 0x26, 0x1B, 0x1B, 0x96, 0x31, 0x71, 0x30, 0xF0, 0x38, 0xF1, 0x05, 0x39, 0x11, 0x81, 0x41, 0x11, 0x39, 0x12, 0x02, 0x41, 0x12, 0x81, 0x41, 0x32, 0x41, 0x12, 0x01, 0x41, 0x32, 0x87, 0x49, 0x12, 0x41, 0x32, 0x61, 0x72, 0x81, 0xF3, 0xAA, 0x73, 0xCA, 0xD4, 0xD2, 0xB4, 0xCA, 0xB4, 0x01, 0xD2, 0xB4, 0x01, 0xCA, 0xB4, 0x01, 0xCA, 0x94, 0x80, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x02, 0xCA, 0x74, 0x82, 0xD2, 0x74, 0xCA, 0x54, 0xD2, 0x74, 0x02, 0xCA, 0x53, 0x80, 0xD2, 0x33, 0x01, 0xCA, 0x33, 0x84, 0xD2, 0x33, 0xC2, 0x34, 0x79, 0x94, 0x59, 0x75, 0xB3, 0x15, 0x03, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xC3, 0x75, 0x01, 0x06, 0x7F, 0x8B, 0x6C, 0x79, 0xCA, 0x33, 0xCA, 0x13, 0xC9, 0xD3, 0xC9, 0x92, 0xC9, 0x52, 0xC9, 0x12, 0x34, 0xBB, 0x05, 0xFE, 0x05, 0xDE, 0x05, 0xBE, 0x05, 0x9E, 0x01, 0x05, 0x5E, 0x8A, 0x05, 0x3E, 0x05, 0x1E, 0x04, 0xFE, 0x24, 0x9D, 0x34, 0x7B, 0x6B, 0xFA, 0x7B, 0x99, 0x9B, 0x98, 0xAB, 0x97, 0xDB, 0x95, 0xD3, 0x96, 0x08, 0xD3, 0x95, 0x8F, 0xD3, 0x96, 0xD3, 0x95, 0xD3, 0x96, 0xD3, 0x95, 0xBB, 0xD6, 0x9C, 0x37, 0x84, 0x99, 0x6D, 0x1A, 0x36, 0x3C, 0x1E, 0xDD, 0x07, 0x9F, 0x07, 0xBF, 0x07, 0xDF, 0x4E, 0x1B, 0xD2, 0xF4, 0xD2, 0xF5, 0x02, 0xD2, 0xD4, 0x80, 0x40, 0xFC, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x3F, 0x00, 0x9F, 0x78, 0xD7, 0x01, 0xC0, 0xB1, 0x86, 0x61, 0xD8, 0x03, 0xBF, 0x04, 0x9F, 0x05, 0x7F, 0x06, 0x5F, 0x07, 0x1F, 0x07, 0xBF, 0x03, 0x07, 0xFF, 0x84, 0x54, 0xD9, 0xB8, 0xD1, 0xB8, 0xB1, + 0xB8, 0xD1, 0xC0, 0xB1, 0x03, 0xB8, 0xD1, 0x81, 0x41, 0x11, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x85, 0x20, 0xCF, 0x20, 0xAE, 0x10, 0xF3, 0x01, 0x3A, 0x01, 0x19, 0x01, 0x39, 0x02, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x18, 0xD0, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x8B, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x10, 0xD2, 0x08, 0xF3, 0x08, 0xF4, 0x10, 0xD1, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x37, 0x18, 0xAD, 0x83, 0x18, 0xCE, 0x10, 0xF2, 0x00, 0xF7, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x85, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x10, 0xD0, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x22, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x0D, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x67, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x02, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x81, 0x51, 0x70, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x82, 0xD3, 0x55, 0x65, 0x19, 0x22, 0xB3, 0x04, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x0A, 0x39, 0x11, 0x03, 0x41, 0x12, 0x8E, 0x41, 0x32, 0x41, 0x12, 0x41, 0x32, 0x41, 0x12, 0x49, 0x52, 0x79, 0xB3, 0xA2, 0x33, 0xD2, 0xB4, 0xCA, 0xB4, + 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xCA, 0x74, 0xCA, 0x94, 0x01, 0xCA, 0x74, 0x83, 0xD2, 0x74, 0xCA, 0x54, 0xD2, 0x74, 0xD2, 0x53, 0x01, 0xCA, 0x54, 0x82, 0xCA, 0x33, 0xD2, 0x33, 0xCA, 0x34, 0x01, 0xCA, 0x33, 0x80, 0xA1, 0xD3, 0x01, 0x59, 0x54, 0x80, 0x79, 0xF5, 0x02, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x93, 0xD3, 0x35, 0x8C, 0x18, 0x06, 0x7F, 0x06, 0x5F, 0x06, 0x3F, 0xA2, 0xD5, 0xC9, 0xD3, 0xC9, 0x72, 0xC9, 0x52, 0xC1, 0x11, 0xC8, 0xD1, 0x8A, 0x55, 0x05, 0xDE, 0x05, 0xBE, 0x05, 0x9E, 0x05, 0x7E, 0x05, 0x5E, 0x34, 0xDC, 0x6C, 0x5A, 0xA3, 0xF7, 0x14, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x01, 0xD3, 0x55, 0x02, 0xD3, 0x35, 0x84, 0xBB, 0xB6, 0x84, 0xD9, 0x4E, 0x1B, 0x46, 0x5C, 0xD2, 0xF5, 0x02, 0xD2, 0xD4, 0x81, 0xD2, 0xB4, 0x81, 0xD8, 0x03, 0x00, 0x1F, 0x8A, 0x00, 0x5F, 0x60, 0x98, 0xC0, 0xB1, 0xC0, 0xD1, 0x59, 0xB8, 0x03, 0x5F, 0x04, 0x5F, 0x05, 0x5F, 0x06, 0x3F, 0x06, 0xFF, 0x07, 0x9F, 0x03, 0x07, 0xFF, 0x83, 0x36, 0x3C, 0xC0, 0xD1, 0xB8, 0xD1, 0xB8, 0xB1, 0x04, 0xB8, 0xD1, 0x85, 0x58, 0xF1, 0x39, 0x11, 0x30, 0xF0, 0x31, 0x10, 0x30, 0xCF, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x82, 0x20, 0xCE, 0x08, 0xF6, 0x01, 0x3A, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x12, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x8A, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, + 0x18, 0xAE, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x83, 0x18, 0xB0, 0x00, 0xF9, 0x08, 0xF8, 0x01, 0x18, 0x02, 0x18, 0xAD, 0x01, 0x00, 0xF8, 0x82, 0x08, 0xF8, 0x01, 0x18, 0x10, 0xD2, 0x05, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x00, 0xFA, 0x00, 0xF8, 0x01, 0x08, 0xF7, 0x84, 0x18, 0xB0, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF4, 0x01, 0x19, 0x01, 0x08, 0xF8, 0x81, 0x00, 0xF8, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x85, 0x10, 0xD4, 0x10, 0xD0, 0x18, 0xAD, 0x20, 0xAD, 0x08, 0xF8, 0x10, 0xD3, 0x01, 0x18, 0xAD, 0x81, 0x10, 0xF4, 0x10, 0xD1, 0x01, 0x18, 0xAD, 0x81, 0x08, 0xF8, 0x00, 0xF7, 0x18, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x23, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x82, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x0A, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x5F, 0x01, 0x19, 0x03, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x00, 0xF8, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAE, 0x20, 0xCE, 0x20, 0xAE, 0x28, 0xEE, 0xCB, 0x55, 0x02, 0xD3, 0x75, 0x83, 0xBB, 0x14, 0x34, 0xF9, 0x29, 0x30, 0x30, 0xEF, 0x07, 0x30, 0xF0, 0x0F, 0x39, 0x11, 0x88, 0x41, 0x12, 0x41, 0x11, 0x39, 0x31, 0x41, 0x12, 0x41, 0x11, 0x69, 0x93, 0x91, 0xF2, 0xC2, 0x54, 0xCA, 0x93, 0x01, 0xCA, 0x94, 0x01, 0xCA, 0x74, 0x84, 0xD2, 0x74, 0xCA, 0x73, 0xD2, 0x73, 0xCA, 0x73, 0xD2, + 0x54, 0x01, 0xCA, 0x53, 0x88, 0xCA, 0x54, 0xCA, 0x33, 0xCA, 0x34, 0xA1, 0xF3, 0x69, 0x73, 0x49, 0x53, 0x51, 0x34, 0x51, 0x54, 0xAA, 0xF5, 0x02, 0xD3, 0x95, 0x84, 0xD3, 0x75, 0xD3, 0x35, 0xD3, 0x14, 0x5C, 0xDA, 0x06, 0x5F, 0x01, 0x06, 0x3F, 0x84, 0xB2, 0x54, 0xC9, 0x72, 0xC9, 0x52, 0xC1, 0x12, 0xC8, 0xD1, 0x01, 0xC0, 0xB1, 0x85, 0x05, 0xBE, 0x05, 0x9E, 0x2D, 0x1C, 0x94, 0x38, 0xCB, 0xB6, 0xD3, 0x96, 0x15, 0xD3, 0x95, 0x81, 0xD3, 0x96, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x01, 0xD3, 0x14, 0x82, 0xD3, 0x15, 0xD2, 0xF4, 0xD2, 0xF5, 0x02, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x82, 0xCA, 0x94, 0x08, 0x7F, 0x00, 0x3F, 0x02, 0x00, 0x1F, 0x80, 0x38, 0x5B, 0x01, 0xC0, 0xB1, 0x86, 0x91, 0x35, 0x03, 0x1F, 0x04, 0x3F, 0x05, 0x3F, 0x06, 0x3F, 0x07, 0x1F, 0x07, 0x9F, 0x04, 0x07, 0xFF, 0x02, 0xB8, 0xD1, 0x89, 0xB8, 0xB1, 0xB8, 0xD1, 0xC0, 0xD1, 0xB8, 0xB1, 0xB8, 0xD1, 0x59, 0x11, 0x39, 0x11, 0x38, 0xF0, 0x30, 0xF0, 0x30, 0xCF, 0x01, 0x28, 0xCF, 0x85, 0x20, 0xCF, 0x20, 0xCE, 0x09, 0x17, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x0F, 0x01, 0x19, 0x85, 0x00, 0xF9, 0x01, 0x1A, 0x08, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x05, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xCE, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x08, 0xF7, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x8E, 0x18, 0xAD, 0x20, 0xAD, 0x10, 0xD1, 0x10, 0xD0, 0x18, + 0xAD, 0x08, 0xD5, 0x10, 0xD1, 0x18, 0xAD, 0x20, 0xAE, 0x00, 0xF7, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF7, 0x10, 0xD0, 0x05, 0x18, 0xAD, 0x88, 0x00, 0xF8, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF4, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x91, 0x10, 0xD1, 0x10, 0xD5, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF5, 0x10, 0xD1, 0x20, 0xAD, 0x18, 0xAD, 0x00, 0xF8, 0x08, 0xF7, 0x18, 0xAF, 0x18, 0xAD, 0x08, 0xD4, 0x10, 0xD1, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x15, 0x18, 0xAD, 0x01, 0x18, 0xCD, 0x24, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x03, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x0B, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x64, 0x01, 0x19, 0x8C, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0x01, 0x1A, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF9, 0x10, 0xD2, 0x20, 0xAD, 0x18, 0xCD, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x80, 0x82, 0x52, 0x02, 0xD3, 0x75, 0x82, 0x9A, 0x93, 0x30, 0xEF, 0x20, 0xCF, 0x01, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x80, 0x28, 0xF0, 0x09, 0x30, 0xF0, 0x01, 0x38, 0xF0, 0x0B, 0x39, 0x11, 0x80, 0x38, 0xF1, 0x03, 0x39, 0x11, 0x88, 0x41, 0x11, 0x69, 0x72, 0x81, 0xD2, 0xAA, 0x13, 0xBA, 0x33, 0xCA, 0x54, 0xCA, 0x74, 0xCA, 0x53, 0xCA, 0x54, 0x01, 0xCA, 0x53, 0x84, 0xB2, 0x13, 0xA1, 0xF3, 0x81, 0x93, 0x51, 0x52, 0x49, 0x32, 0x02, 0x49, 0x33, 0x80, + 0x51, 0x74, 0x01, 0xD3, 0x95, 0x85, 0xD3, 0x96, 0xD3, 0x75, 0xD3, 0x34, 0xD2, 0xF5, 0xD2, 0xB4, 0x2D, 0x9D, 0x01, 0x06, 0x3F, 0x84, 0x06, 0x1F, 0xC9, 0x93, 0xC9, 0x52, 0xC9, 0x11, 0xC8, 0xF1, 0x01, 0xC0, 0xB1, 0x83, 0xB8, 0xD1, 0x05, 0x9E, 0x05, 0x7E, 0xAB, 0xF7, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x0A, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x84, 0xD3, 0x15, 0xD3, 0x35, 0xCB, 0x15, 0xD2, 0xF4, 0xD2, 0xF5, 0x02, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x01, 0xD2, 0x94, 0x80, 0x41, 0x1C, 0x01, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x80, 0x20, 0x3C, 0x01, 0xC0, 0xB1, 0x86, 0x91, 0x35, 0x02, 0xFF, 0x04, 0x1F, 0x05, 0x1F, 0x06, 0x1F, 0x06, 0xFF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x81, 0xA1, 0xB3, 0xB8, 0xB1, 0x05, 0xB8, 0xD1, 0x84, 0x68, 0xF1, 0x39, 0x11, 0x38, 0xF0, 0x30, 0xF0, 0x30, 0xEF, 0x02, 0x28, 0xCF, 0x81, 0x20, 0xCE, 0x10, 0xF3, 0x02, 0x01, 0x19, 0x80, 0x00, 0xFA, 0x02, 0x01, 0x19, 0x80, 0x10, 0xD0, 0x03, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x0F, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x01, 0x17, 0x00, 0xF9, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x83, 0x08, 0xF3, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x05, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x10, 0xF4, 0x08, 0xF7, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF8, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x10, + 0xD1, 0x10, 0xF4, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x08, 0xF7, 0x01, 0x18, 0xAD, 0x85, 0x10, 0xD1, 0x08, 0xF6, 0x18, 0xAD, 0x20, 0xAD, 0x08, 0xF4, 0x10, 0xD3, 0x01, 0x18, 0xD1, 0x85, 0x08, 0xF5, 0x18, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x08, 0xF4, 0x10, 0xD1, 0x01, 0x18, 0xAD, 0x85, 0x08, 0xF7, 0x18, 0xAF, 0x08, 0xF7, 0x18, 0xAD, 0x08, 0xF4, 0x10, 0xD1, 0x01, 0x18, 0xAD, 0x80, 0x20, 0x8E, 0x3E, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x82, 0x10, 0xD2, 0x18, 0xCD, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x6F, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x85, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x20, 0xCE, 0x41, 0x2F, 0x02, 0xD3, 0x75, 0x84, 0x71, 0xD1, 0x20, 0xCE, 0x28, 0xCF, 0x20, 0xCF, 0x28, 0xCE, 0x01, 0x28, 0xCF, 0x02, 0x28, 0xEF, 0x12, 0x30, 0xF0, 0x01, 0x31, 0x10, 0x81, 0x38, 0xF0, 0x30, 0xF0, 0x01, 0x31, 0x11, 0x01, 0x38, 0xF1, 0x80, 0x38, 0xF0, 0x02, 0x39, 0x10, 0x02, 0x39, 0x11, 0x80, 0x39, 0x10, 0x01, 0x61, 0x52, 0x80, 0x51, 0x31, 0x02, 0x39, 0x11, 0x83, 0x39, 0x12, 0x41, 0x12, 0x41, 0x32, 0x41, 0x12, 0x01, 0x49, 0x32, 0x80, 0x8A, 0x34, 0x01, 0xD3, 0x95, 0x85, 0xD3, 0x75, 0xD3, 0x35, 0xD2, 0xF4, 0xCA, 0xD4, 0xB2, 0xF6, 0x06, 0x5F, 0x01, 0x06, 0x1F, 0x89, 0x34, 0xDC, 0xC9, 0x52, 0xC9, 0x12, 0xC8, 0xD2, 0xC0, 0xB1, 0xC0, 0xD1, 0xB8, 0xD1, 0x89, 0xB4, 0x2B, 0xBA, 0x42, 0x16, 0x01, 0x51, 0x54, 0x8A, 0x49, + 0x54, 0x51, 0x54, 0x61, 0x94, 0x71, 0xD4, 0x69, 0xF4, 0x71, 0xD3, 0x69, 0xD4, 0x71, 0xD3, 0x7A, 0x14, 0x8A, 0x75, 0x92, 0x74, 0x01, 0x92, 0x54, 0x83, 0x9A, 0x95, 0xB3, 0x15, 0xBB, 0x14, 0xD3, 0x96, 0x04, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x83, 0xD3, 0x14, 0xD3, 0x15, 0xD2, 0xF4, 0xCB, 0x14, 0x01, 0xD2, 0xF4, 0x84, 0xD2, 0xD4, 0xCA, 0xD4, 0xCA, 0xB4, 0xD2, 0xB4, 0xCA, 0xB4, 0x01, 0xCA, 0x94, 0x80, 0x81, 0xB8, 0x01, 0x00, 0x5F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x1F, 0x88, 0xA8, 0xB3, 0xC0, 0xB1, 0xB0, 0xD2, 0x02, 0xDF, 0x03, 0xFF, 0x05, 0x1F, 0x06, 0x1F, 0x06, 0xFF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x80, 0x8A, 0x95, 0x06, 0xB8, 0xD1, 0x84, 0x78, 0xF2, 0x39, 0x11, 0x38, 0xF0, 0x30, 0xF0, 0x28, 0xF0, 0x01, 0x28, 0xCF, 0x83, 0x28, 0xCE, 0x20, 0xCE, 0x20, 0xCF, 0x09, 0x18, 0x01, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x10, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAF, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD1, 0x01, 0x18, 0xAD, 0x83, 0x10, 0xD0, 0x00, 0xFA, 0x01, 0x19, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x10, 0xD1, 0x08, 0xF7, 0x18, 0xD1, 0x18, 0xAD, 0x20, 0xAD, 0x08, 0xF8, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xD1, 0x08, 0xD4, 0x01, 0x18, 0xAD, 0x88, + 0x20, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAE, 0x00, 0xFA, 0x08, 0xF8, 0x00, 0xF7, 0x08, 0xF6, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x08, 0xF4, 0x08, 0xF6, 0x08, 0xD4, 0x08, 0xF6, 0x08, 0xF5, 0x02, 0x18, 0xAD, 0x81, 0x08, 0xF4, 0x10, 0xD1, 0x01, 0x18, 0xAE, 0x85, 0x08, 0xF8, 0x18, 0xAD, 0x08, 0xF3, 0x10, 0xD3, 0x10, 0xD5, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x16, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x24, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x12, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x65, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x20, 0xAE, 0x87, 0x20, 0xCD, 0x20, 0xAE, 0x20, 0xCD, 0x92, 0x72, 0xD3, 0x75, 0xC3, 0x34, 0x61, 0xD1, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x07, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x80, 0x30, 0xEF, 0x17, 0x30, 0xF0, 0x81, 0x38, 0xF0, 0x30, 0xF0, 0x01, 0x31, 0x10, 0x88, 0x30, 0xF0, 0x31, 0x10, 0x38, 0xF0, 0x30, 0xF0, 0x38, 0xF0, 0x31, 0x11, 0x38, 0xF0, 0x39, 0x11, 0x38, 0xF1, 0x01, 0x39, 0x11, 0x81, 0x39, 0x12, 0x41, 0x11, 0x01, 0x41, 0x32, 0x8D, 0xB2, 0xF5, 0xD3, 0x95, 0xD3, 0x75, 0xD3, 0x55, 0xD2, 0xF4, 0xD2, 0xB4, 0xD2, 0x74, 0x83, 0xB8, 0x06, 0x3F, 0x06, 0x1F, 0x06, 0x1E, 0x63, 0x98, 0xC9, 0x12, 0xC8, 0xD1, 0x01, 0xC0, 0xB1, 0x87, 0xB8, 0xB1, 0xB8, 0xD1, 0x79, 0x33, 0x51, 0x53, 0x51, 0x34, 0x51, 0x54, 0x51, 0x33, 0x49, 0x53, 0x02, 0x49, 0x33, 0x81, 0x41, + 0x33, 0x49, 0x33, 0x02, 0x49, 0x32, 0x02, 0x49, 0x33, 0x01, 0x49, 0x32, 0x02, 0x49, 0x33, 0x83, 0x61, 0xB3, 0x7A, 0x34, 0x9A, 0x95, 0xB2, 0xF5, 0x01, 0xD3, 0x75, 0x02, 0xD3, 0x55, 0x01, 0xD3, 0x35, 0x01, 0xD3, 0x14, 0x80, 0xD3, 0x15, 0x02, 0xD2, 0xF4, 0x01, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x01, 0xD2, 0x94, 0x83, 0xD2, 0x74, 0xCA, 0x74, 0xC2, 0x54, 0x00, 0x7F, 0x01, 0x00, 0x5F, 0x8A, 0x00, 0x3F, 0x00, 0x1F, 0x58, 0x78, 0xB8, 0xD1, 0xC0, 0xB1, 0x02, 0xBF, 0x03, 0xBF, 0x04, 0xFF, 0x05, 0xFF, 0x06, 0xFF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x80, 0x64, 0x78, 0x06, 0xB8, 0xD1, 0x82, 0x78, 0xF1, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x81, 0x20, 0xCF, 0x09, 0x17, 0x01, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x08, 0xF4, 0x18, 0xCE, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x82, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0x8D, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xF3, 0x01, 0x01, 0x19, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xCE, 0x10, 0xD1, 0x18, 0xCF, 0x18, 0xAD, 0x10, 0xD1, 0x10, 0xF4, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF7, 0x02, 0x18, 0xAD, 0x81, 0x08, 0xF5, 0x10, 0xD1, 0x05, 0x18, 0xAD, 0x82, 0x08, 0xF8, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, + 0x18, 0xD1, 0x01, 0x18, 0xAD, 0x88, 0x08, 0xF6, 0x18, 0xCF, 0x18, 0xAE, 0x20, 0xAE, 0x10, 0xD4, 0x18, 0xD1, 0x18, 0xAD, 0x20, 0xAE, 0x00, 0xF8, 0x01, 0x18, 0xAD, 0x83, 0x08, 0xF7, 0x08, 0xF6, 0x18, 0xB1, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x28, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x03, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x10, 0xD2, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x67, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x20, 0xCD, 0x18, 0xCE, 0x20, 0xAE, 0x39, 0x0F, 0xD3, 0x75, 0xCB, 0x35, 0x41, 0x4F, 0x04, 0x20, 0xCE, 0x09, 0x28, 0xCF, 0x80, 0x28, 0xEF, 0x03, 0x28, 0xCF, 0x02, 0x28, 0xEF, 0x07, 0x30, 0xEF, 0x81, 0x30, 0xF0, 0x28, 0xF0, 0x02, 0x30, 0xF0, 0x85, 0x28, 0xF0, 0x30, 0xF0, 0x30, 0xEF, 0x31, 0x10, 0x30, 0xF0, 0x30, 0xD0, 0x04, 0x30, 0xF0, 0x80, 0x30, 0xF1, 0x01, 0x30, 0xF0, 0x94, 0x38, 0xF0, 0x39, 0x11, 0x39, 0x10, 0x39, 0x11, 0x38, 0xF1, 0x39, 0x11, 0x39, 0x12, 0x49, 0x52, 0xD3, 0x95, 0xD3, 0x75, 0xD3, 0x35, 0xD2, 0xF4, 0xD2, 0xB4, 0xD2, 0x74, 0xCA, 0x33, 0x4C, 0x9A, 0x05, 0xFF, 0x06, 0x1F, 0x05, 0xFF, 0xA1, 0xF4, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x81, 0xA0, 0xF1, 0x51, 0x34, 0x04, 0x49, 0x33, 0x02, 0x49, 0x32, 0x02, 0x41, 0x32, 0x05, 0x41, 0x12, 0x04, 0x41, 0x32, 0x8A, 0x41, 0x33, 0x49, 0x33, 0x49, 0x32, 0x49, 0x53, 0x61, 0x93, 0x82, 0x14, 0xA2, 0x74, 0xC3, 0x15, 0xD3, 0x35, 0xD3, 0x14, + 0xD3, 0x15, 0x01, 0xD2, 0xF4, 0x80, 0xD2, 0xF5, 0x02, 0xD2, 0xD4, 0x80, 0xD2, 0xB4, 0x01, 0xCA, 0xB4, 0x80, 0xCA, 0x94, 0x02, 0xCA, 0x74, 0x8E, 0xCA, 0x54, 0x20, 0xFD, 0x00, 0x9F, 0x00, 0x7F, 0x00, 0x5F, 0x00, 0x3F, 0x10, 0x5D, 0xC0, 0xB1, 0xC0, 0xD1, 0x02, 0x9F, 0x03, 0xBF, 0x04, 0xDF, 0x05, 0xFF, 0x06, 0xFF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x80, 0x54, 0xD9, 0x01, 0xB8, 0xD1, 0x80, 0xB8, 0xB1, 0x03, 0xB8, 0xD1, 0x82, 0x78, 0xF1, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xCF, 0x82, 0x28, 0xCE, 0x20, 0xCF, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x85, 0x00, 0xF7, 0x00, 0xF9, 0x01, 0x17, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x84, 0x01, 0x17, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xD4, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAF, 0x01, 0x17, 0x10, 0xF4, 0x00, 0xF8, 0x18, 0xAF, 0x01, 0x18, 0xAD, 0x84, 0x08, 0xF7, 0x08, 0xF4, 0x10, 0xD5, 0x00, 0xF7, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF8, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x08, 0xF4, 0x10, 0xD1, 0x18, 0xAD, 0x18, 0xCD, 0x10, 0xD1, 0x10, 0xD3, 0x01, 0x18, 0xAD, 0x81, 0x08, 0xF4, 0x10, 0xD1, 0x01, 0x18, 0xAD, 0x85, 0x08, 0xF8, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAF, 0x00, 0xFA, 0x10, 0xD1, 0x40, 0x18, 0xAD, + 0x89, 0x20, 0xAD, 0x18, 0xAE, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xFA, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x18, 0xCD, 0x0C, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x74, 0x18, 0xAD, 0x86, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x20, 0xAE, 0x61, 0xD0, 0xBB, 0x14, 0x41, 0x2F, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x82, 0x28, 0xCE, 0x20, 0xCE, 0x20, 0xCF, 0x18, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x86, 0x28, 0xCF, 0x28, 0xF0, 0x30, 0xD0, 0x28, 0xEF, 0x28, 0xCF, 0x30, 0xCF, 0x30, 0xF0, 0x01, 0x30, 0xD0, 0x80, 0x28, 0xF0, 0x02, 0x30, 0xF0, 0x80, 0x30, 0xD0, 0x03, 0x30, 0xF0, 0x80, 0x38, 0xF0, 0x02, 0x39, 0x11, 0x88, 0x61, 0xB2, 0xD3, 0x75, 0xD3, 0x35, 0xD2, 0xF4, 0xCA, 0xD4, 0xCA, 0x74, 0xD2, 0x33, 0xCA, 0x13, 0x1D, 0x9D, 0x01, 0x05, 0xFF, 0x81, 0x1D, 0x3D, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x81, 0xB0, 0xD1, 0x61, 0x32, 0x01, 0x49, 0x33, 0x81, 0x49, 0x32, 0x41, 0x32, 0x02, 0x41, 0x12, 0x81, 0x41, 0x32, 0x41, 0x12, 0x01, 0x41, 0x11, 0x01, 0x41, 0x12, 0x80, 0x41, 0x11, 0x01, 0x39, 0x11, 0x80, 0x41, 0x11, 0x01, 0x41, 0x12, 0x81, 0x39, 0x12, 0x41, 0x32, 0x02, 0x41, 0x12, 0x80, 0x49, 0x12, 0x01, 0x41, 0x32, 0x88, 0x49, 0x32, 0x49, 0x33, 0x49, 0x53, 0x49, 0x33, 0x61, 0x73, 0x8A, 0x14, 0xAA, 0x74, 0xCA, 0xF4, 0xD2, 0xF5, 0x02, 0xD2, 0xD4, 0x89, 0xD2, 0xB4, 0xCA, 0xB4, 0xD2, 0xB4, 0xD2, 0x94, 0xCA, 0x94, 0xCA, 0x73, 0xD2, 0x74, 0xD2, 0x53, 0xD2, 0x54, 0x59, 0x7A, 0x01, + 0x00, 0xBF, 0x01, 0x00, 0x9F, 0x88, 0x00, 0x5F, 0xA8, 0xB3, 0xC0, 0xB1, 0x31, 0xFC, 0x03, 0x9F, 0x04, 0xDF, 0x05, 0xDF, 0x06, 0xDF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x80, 0x2E, 0x3C, 0x03, 0xB8, 0xD1, 0x80, 0xB8, 0xB1, 0x01, 0xB8, 0xD1, 0x81, 0x78, 0xF1, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x84, 0x20, 0xAD, 0x20, 0xAE, 0x18, 0xCE, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x08, 0xF7, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x01, 0x18, 0xAE, 0x80, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x87, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xB1, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xB0, 0x10, 0xD0, 0x10, 0xD1, 0x18, 0xAF, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x81, 0x10, 0xD0, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xCF, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x10, 0xD0, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAF, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x86, 0x10, 0xD0, 0x18, 0x8D, 0x18, 0xAD, 0x18, 0xAE, 0x10, 0xD0, 0x18, 0xAE, 0x18, 0xCD, 0x15, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x22, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x1A, 0x02, 0x01, 0x19, + 0x80, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAF, 0x10, 0xCF, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAF, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAF, 0x63, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x39, 0x0F, 0x28, 0xCE, 0x20, 0xAE, 0x20, 0xCE, 0x20, 0xAE, 0x0A, 0x20, 0xCE, 0x1C, 0x28, 0xCF, 0x02, 0x28, 0xEF, 0x80, 0x28, 0xCF, 0x01, 0x28, 0xEF, 0x80, 0x30, 0xEF, 0x01, 0x28, 0xEF, 0x05, 0x30, 0xF0, 0x88, 0x39, 0x11, 0x71, 0xF2, 0xD3, 0x35, 0xD2, 0xF4, 0xD2, 0xB4, 0xCA, 0x74, 0xD2, 0x33, 0xCA, 0x13, 0xA2, 0x95, 0x02, 0x05, 0xFF, 0x82, 0x53, 0x99, 0xC0, 0xD1, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x84, 0xB0, 0xD1, 0x79, 0x12, 0x49, 0x52, 0x41, 0x32, 0x41, 0x12, 0x02, 0x41, 0x32, 0x80, 0x41, 0x12, 0x03, 0x39, 0x11, 0x80, 0x38, 0xF1, 0x0B, 0x39, 0x11, 0x80, 0x41, 0x11, 0x03, 0x41, 0x12, 0x80, 0x41, 0x32, 0x01, 0x49, 0x32, 0x01, 0x49, 0x33, 0x86, 0x51, 0x33, 0x61, 0x94, 0x9A, 0x34, 0xC2, 0xB4, 0xD2, 0xB5, 0xD2, 0xB3, 0xCA, 0xB4, 0x01, 0xD2, 0x94, 0x80, 0xCA, 0x93, 0x01, 0xD2, 0x74, 0x83, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0x81, 0xD8, 0x02, 0x00, 0xDF, 0x01, 0x00, 0xBF, 0x87, 0x68, 0xB7, 0xB8, 0xD1, 0x31, 0xDC, 0x03, 0x3F, 0x04, 0x9F, 0x05, 0xDF, 0x06, 0xFF, 0x07, 0xBF, 0x04, 0x07, 0xFF, 0x80, 0x26, 0xBD, 0x03, 0xB8, 0xD1, 0x80, 0xB8, 0xD2, 0x01, 0xB8, 0xD1, 0x85, 0x78, 0xF1, 0x39, 0x11, 0x38, 0xF1, 0x30, 0xF0, + 0x30, 0xEF, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x01, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAE, 0x1A, 0x18, 0xAD, 0x88, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x85, 0x10, 0xD2, 0x08, 0xD3, 0x08, 0xF3, 0x10, 0xD2, 0x18, 0xAD, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x0C, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x23, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x04, 0x01, 0x19, 0x81, 0x10, 0xD2, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x86, 0x10, 0xD0, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x18, 0x18, 0xAF, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xB0, 0x01, 0x18, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF6, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x85, 0x10, 0xCF, 0x00, 0xF8, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF6, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x06, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x38, 0x18, 0xAD, 0x03, 0x20, 0xAE, 0x0B, 0x20, 0xCE, 0x07, 0x20, 0xCF, 0x1B, 0x28, 0xCF, + 0x80, 0x28, 0xEF, 0x01, 0x28, 0xF0, 0x01, 0x30, 0xF0, 0x88, 0x38, 0xF0, 0x82, 0x13, 0xD2, 0xF5, 0xCA, 0xD4, 0xD2, 0x74, 0xCA, 0x53, 0xC9, 0xF3, 0xC9, 0xD2, 0x73, 0x98, 0x01, 0x05, 0xFF, 0x81, 0x05, 0xDF, 0xA9, 0x53, 0x03, 0xB8, 0xD1, 0x80, 0x98, 0xF2, 0x01, 0x41, 0x32, 0x80, 0x41, 0x12, 0x01, 0x41, 0x11, 0x07, 0x39, 0x11, 0x03, 0x38, 0xF0, 0x80, 0x39, 0x11, 0x01, 0x38, 0xF0, 0x08, 0x39, 0x11, 0x02, 0x41, 0x12, 0x01, 0x41, 0x32, 0x02, 0x49, 0x33, 0x8D, 0x51, 0x53, 0x59, 0x74, 0x92, 0x14, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x74, 0xCA, 0x74, 0xD2, 0x74, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0xCA, 0x34, 0x99, 0xF6, 0x01, 0x01, 0x1F, 0x02, 0x00, 0xFF, 0x87, 0x38, 0xDB, 0xC0, 0xB1, 0x28, 0xFC, 0x02, 0xDF, 0x04, 0x7F, 0x05, 0x9F, 0x06, 0xDF, 0x07, 0xBF, 0x05, 0x07, 0xFF, 0x06, 0xB8, 0xD1, 0x82, 0x78, 0xF1, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x1E, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x4A, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x29, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x1A, 0x83, 0x00, 0xF9, 0x01, 0x1A, 0x00, 0xF9, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x8E, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xB0, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x19, 0x00, + 0xF9, 0x01, 0x19, 0x08, 0xF6, 0x02, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xD0, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF6, 0x2A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x31, 0x0E, 0x7A, 0x32, 0xAA, 0xD3, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x68, 0xD3, 0x95, 0x91, 0xD3, 0x96, 0xD3, 0x95, 0xD3, 0x35, 0xD2, 0xB4, 0xCA, 0x94, 0xCA, 0x33, 0xD1, 0xF3, 0xC9, 0xD3, 0xC9, 0x93, 0xC9, 0x72, 0xC9, 0x92, 0xC9, 0x72, 0xC9, 0x32, 0xC0, 0xD1, 0xC0, 0xB1, 0xB8, 0xD1, 0xB0, 0xD2, 0xB9, 0xF2, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x0B, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xD3, 0x96, 0x12, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x0A, 0xD3, 0x95, 0x81, 0xCA, 0x13, 0x01, 0x5F, 0x02, 0x01, 0x3F, 0x88, 0x01, 0x1F, 0x09, 0x3F, 0xC0, 0xB1, 0x31, 0x1C, 0x01, 0xBF, 0x03, 0xFF, 0x05, 0x9F, 0x06, 0x9F, 0x07, 0x9F, 0x05, 0x07, 0xFF, 0x80, 0xB8, 0xB1, 0x05, 0xB8, 0xD1, 0x80, 0x78, 0xF1, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x1F, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x4D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x22, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xD5, 0x02, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xF2, 0x03, 0x18, 0xAD, 0x84, 0x18, 0xD0, 0x00, 0xF8, 0x01, + 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x18, 0xAF, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xB0, 0x04, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x10, 0xCF, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1A, 0x03, 0x01, 0x19, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x49, 0x6F, 0xAA, 0xD3, 0x06, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x6E, 0xD3, 0x95, 0x8B, 0xD2, 0xF4, 0xCA, 0x74, 0xCA, 0x33, 0xCA, 0x13, 0xC9, 0xD3, 0xC9, 0x92, 0xC9, 0x52, 0xC1, 0x11, 0xC0, 0xD1, 0xC0, 0xB1, 0xC0, 0xD1, 0xB8, 0xB1, 0x01, 0xB8, 0xD1, 0x80, 0xCA, 0x53, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x08, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x1E, 0xD3, 0x95, 0x84, 0xCA, 0x13, 0x09, 0x7F, 0x01, 0x7F, 0x01, 0x5F, 0x01, 0x7F, 0x01, 0x01, 0x5F, 0x86, 0x88, 0xF5, 0x29, 0x3C, 0x01, 0x3F, 0x02, 0xDF, 0x05, 0x3E, 0x06, 0x7F, 0x07, 0x7F, 0x05, 0x07, 0xFF, 0x80, 0x92, 0x34, 0x05, 0xB8, 0xD1, 0x80, 0x78, 0xF1, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x19, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xCE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x4F, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, + 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x04, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xD0, 0x00, 0xF9, 0x06, 0x01, 0x19, 0x85, 0x18, 0xAF, 0x18, 0xCD, 0x18, 0xAE, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xD0, 0x00, 0xF8, 0x03, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x80, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x20, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x05, 0x18, 0xAD, 0x82, 0x20, 0xEE, 0x82, 0x52, 0xD3, 0x96, 0x0A, 0xD3, 0x95, 0x80, 0xD3, 0xB5, 0x6B, 0xD3, 0x95, 0x87, 0xD2, 0xB4, 0xD2, 0x33, 0xCA, 0x13, 0xC9, 0xB3, 0xC9, 0x92, 0xC9, 0x52, 0xC9, 0x12, 0xC8, 0xD1, 0x01, 0xC0, 0xB1, 0x80, 0xB8, 0xB1, 0x01, 0xB8, 0xD1, 0x80, 0xC2, 0x53, 0x13, 0xD3, 0x95, 0x80, 0xDB, 0x95, 0x15, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x08, 0xD3, 0x95, 0x82, 0xCA, 0x13, 0x31, 0xBC, 0x01, 0xBF, 0x03, 0x01, 0x9F, 0x87, 0x51, 0x39, 0x31, 0x5C, 0x01, 0x7F, 0x01, 0xBF, 0x04, 0x5E, 0x06, 0x3E, 0x07, 0x7F, 0x07, 0xFE, 0x04, 0x07, 0xFF, 0x80, 0x8A, 0x95, 0x03, 0xB8, 0xD1, 0x82, 0xB0, 0xD1, 0xB8, 0xD1, 0x78, 0xF1, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x1D, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x4A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x27, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xD5, + 0x03, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x84, 0x10, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x86, 0x01, 0x1A, 0x00, 0xF9, 0x08, 0xF7, 0x18, 0xAD, 0x20, 0xAD, 0x10, 0xD0, 0x01, 0x18, 0x06, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAD, 0x81, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x80, 0x00, 0xFA, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF5, 0x26, 0x18, 0xAD, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x28, 0xEE, 0xB3, 0x14, 0x04, 0xD3, 0x95, 0x83, 0xD4, 0xF8, 0xD6, 0x5C, 0xD6, 0xDD, 0xD6, 0xFD, 0x01, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x01, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x68, 0xD7, 0xFF, 0x88, 0xDF, 0xFF, 0xD7, 0xFF, 0xCB, 0x15, 0xCA, 0x13, 0xC9, 0xD3, 0xC9, 0x92, 0xC9, 0x32, 0xC9, 0x11, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x02, 0xB8, 0xD1, 0x80, 0xC3, 0x97, 0x09, 0xDF, 0xFF, 0x06, 0xD7, 0xFF, 0x81, 0xDF, 0xFF, 0xD5, 0x39, 0x19, 0xD3, 0x95, 0x80, 0xDB, 0x95, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x81, 0xC9, 0xF3, 0x31, 0xFC, 0x04, 0x01, 0xDF, 0x81, 0x01, 0xBF, 0x01, 0xDF, 0x01, 0x01, 0xBF, 0x82, 0x02, 0xDF, 0x05, 0xFD, 0x07, 0x3E, 0x01, 0x07, 0xFE, 0x03, 0x07, 0xFF, 0x80, 0x8A, 0xB5, 0x03, 0xB8, 0xD1, 0x82, 0xB0, 0xF1, 0xB8, 0xD1, 0x78, 0xF1, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x19, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x82, 0x18, + 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x4A, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x24, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x08, 0xD5, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF9, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x81, 0x10, 0xD0, 0x00, 0xF8, 0x03, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xB0, 0x00, 0xF9, 0x05, 0x01, 0x19, 0x88, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x10, 0xD0, 0x00, 0xF8, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x02, 0x18, 0xAE, 0x25, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAE, 0x28, 0xEE, 0xCB, 0x55, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0xD6, 0xD5, 0xDB, 0xD7, 0xBF, 0x72, 0xD7, 0xFF, 0x01, 0xDF, 0xFF, 0x8D, 0xCA, 0x13, 0xC9, 0xB3, 0xC9, 0x92, 0xC9, 0x52, 0xC9, 0x12, 0xC0, 0xD1, 0xC0, 0xB1, 0xC0, 0xD1, 0xB8, 0xB1, 0xB8, 0xD1, 0xB0, 0xF1, 0xBA, 0x95, 0xDF, 0xFF, 0xD7, 0xFF, 0x04, 0xDF, 0xFF, 0x80, 0xD7, 0xFF, 0x04, 0xDF, 0xFF, 0x05, 0xD7, 0xFF, 0x81, 0xDF, 0xFF, 0xD5, 0x39, 0x21, 0xD3, 0x95, 0x82, 0xC9, 0xF3, 0x31, 0xFD, 0x02, 0x1F, 0x06, 0x01, 0xFF, 0x85, 0x01, 0xDF, 0x01, 0xFF, 0x05, 0x1D, 0x07, 0x1D, 0x07, 0xFD, 0x07, 0xFE, 0x03, 0x07, 0xFF, 0x80, 0x6B, 0xF7, 0x04, 0xB8, 0xD1, 0x81, 0xB0, 0xD1, 0x78, 0xF1, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, + 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x18, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xF7, 0x20, 0xAD, 0x3B, 0x18, 0xAD, 0x0C, 0x01, 0x19, 0x87, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF8, 0x18, 0xB0, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x82, 0x18, 0xD0, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xCF, 0x05, 0x01, 0x19, 0x85, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xCF, 0x03, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x2A, 0x18, 0xAD, 0x81, 0x28, 0xEE, 0xB3, 0x14, 0x02, 0xD3, 0x95, 0x81, 0xD4, 0x77, 0xD7, 0x7E, 0x01, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x03, 0xD7, 0xFF, 0x80, 0xDF, 0xFF, 0x6E, 0xD7, 0xFF, 0x84, 0xC9, 0xD3, 0xC9, 0x92, 0xC9, 0x52, 0xC9, 0x12, 0xC8, 0xD1, 0x01, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x82, 0xB0, 0xD1, 0xB1, 0x52, 0xD7, 0x9E, 0x02, 0xDF, 0xFF, 0x80, 0xD7, 0xFF, 0x03, 0xDF, 0xFF, 0x81, 0xD7, 0xFF, 0xDF, 0xFF, 0x0A, 0xD7, 0xFF, 0x80, 0xD5, 0x39, 0x20, 0xD3, 0x95, 0x81, 0xC9, 0xD3, 0x32, 0x3C, 0x01, 0x02, 0x3F, 0x80, 0x02, 0x1F, 0x01, 0x02, 0x3F, 0x04, 0x02, 0x1F, 0x81, 0x03, 0x7E, 0x06, 0xDC, 0x01, 0x07, 0xFD, 0x80, 0x07, + 0xFE, 0x02, 0x07, 0xFF, 0x80, 0x5C, 0x78, 0x02, 0xB8, 0xD1, 0x83, 0xB0, 0xD1, 0xB8, 0xD1, 0xB0, 0xF1, 0x79, 0x11, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x1B, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAE, 0x81, 0x01, 0x1A, 0x01, 0x19, 0x3C, 0x18, 0xAD, 0x0D, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xAF, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x80, 0x08, 0xD5, 0x03, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xD0, 0x01, 0x18, 0x02, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x85, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x85, 0x01, 0x1A, 0x01, 0x17, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD0, 0x00, 0xF9, 0x06, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1F, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x82, 0x52, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xD4, 0xB8, 0xD7, 0xBF, 0x77, 0xD7, 0xFF, 0x83, 0xC9, 0x72, 0xC9, 0x52, 0xC9, 0x12, 0xC8, 0xD1, 0x01, 0xC0, 0xB1, 0x02, 0xB8, 0xD1, 0x81, 0xB0, 0xF1, 0xD6, 0x3C, 0x01, 0xDF, 0xFF, 0x80, 0xD7, 0xFF, 0x01, 0xDF, 0xFF, 0x80, 0xD7, 0xFF, 0x01, 0xDF, 0xFF, 0x01, 0xD7, 0xFF, + 0x80, 0xDF, 0xFF, 0x08, 0xD7, 0xFF, 0x83, 0xDF, 0xFF, 0xD7, 0xFF, 0xDF, 0xFF, 0xD5, 0x39, 0x14, 0xD3, 0x95, 0x01, 0xD3, 0x96, 0x08, 0xD3, 0x95, 0x82, 0xC9, 0xD3, 0x32, 0x5C, 0x02, 0x7F, 0x02, 0x02, 0x5F, 0x80, 0x02, 0x3F, 0x01, 0x02, 0x5F, 0x02, 0x02, 0x3F, 0x81, 0x02, 0x9F, 0x06, 0x7C, 0x01, 0x07, 0xFC, 0x80, 0x07, 0xFE, 0x02, 0x07, 0xFF, 0x83, 0x5C, 0x78, 0xB8, 0xD1, 0xB0, 0xD1, 0xB8, 0xD1, 0x01, 0xB0, 0xD1, 0x81, 0xB8, 0xD1, 0x70, 0xF1, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x18, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x81, 0x00, 0xF9, 0x01, 0x19, 0x3C, 0x18, 0xAD, 0x0D, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD0, 0x15, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x01, 0x18, 0x10, 0xD1, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x03, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x87, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xCF, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x2B, 0x18, 0xAD, 0x80, 0x49, 0x6F, 0x02, 0xD3, 0x95, 0x81, 0xD4, 0x57, 0xD7, 0xBF, 0x73, + 0xD7, 0xFF, 0x87, 0xD7, 0xDF, 0xD7, 0xFF, 0xCF, 0x3E, 0xC6, 0x7C, 0xC5, 0x3A, 0xC9, 0x51, 0xC9, 0x12, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x82, 0xB0, 0xD1, 0xB0, 0xF1, 0xBB, 0x97, 0x18, 0xD7, 0xFF, 0x82, 0xD6, 0x5B, 0xD3, 0x95, 0xD3, 0x96, 0x17, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x83, 0xD3, 0x96, 0xD3, 0x95, 0xC9, 0xB3, 0x32, 0x7C, 0x03, 0x02, 0x9F, 0x04, 0x02, 0x7F, 0x85, 0x02, 0x5F, 0x02, 0x7F, 0x05, 0xBC, 0x07, 0xDB, 0x07, 0xFC, 0x07, 0xFD, 0x02, 0x07, 0xFF, 0x82, 0x5C, 0x78, 0xB8, 0xD1, 0xB0, 0xD1, 0x02, 0xB8, 0xD1, 0x84, 0xB0, 0xD1, 0x58, 0xF1, 0x39, 0x11, 0x31, 0x11, 0x30, 0xF0, 0x01, 0x28, 0xF0, 0x81, 0x28, 0xCF, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x25, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x20, 0xAD, 0x24, 0x18, 0xAD, 0x0B, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x08, 0x01, 0x19, 0x85, 0x10, 0xD1, 0x18, 0xAD, 0x18, 0xAE, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x11, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x18, 0xB0, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCF, 0x03, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x87, + 0x01, 0x1A, 0x01, 0x17, 0x18, 0xCE, 0x18, 0xAE, 0x18, 0xD0, 0x01, 0x18, 0x00, 0xF9, 0x01, 0x1A, 0x04, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x2B, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0xA2, 0xD3, 0x01, 0xD3, 0x95, 0x81, 0xD3, 0xD6, 0xD7, 0x5E, 0x01, 0xCF, 0xFF, 0x01, 0xD7, 0xFF, 0x01, 0xCF, 0xFF, 0x01, 0xD7, 0xFF, 0x80, 0xD7, 0xDF, 0x02, 0xD7, 0xFF, 0x80, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x8A, 0xCF, 0xDF, 0xCF, 0xFF, 0xD7, 0xFF, 0xD7, 0xDF, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xFF, 0xD7, 0xDF, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xDF, 0x01, 0xCF, 0xFF, 0x01, 0xD7, 0xFF, 0x83, 0xCF, 0xFF, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xFF, 0x01, 0xD7, 0xDF, 0x82, 0xCF, 0xFF, 0xD7, 0xDF, 0xCF, 0xFF, 0x01, 0xD7, 0xFF, 0x84, 0xCF, 0xFF, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xFF, 0xD7, 0xDF, 0x01, 0xD7, 0xFF, 0x01, 0xCF, 0xFF, 0x85, 0xD7, 0xFF, 0xCF, 0xFF, 0xD7, 0xDF, 0xCF, 0xFF, 0xD7, 0xFF, 0xD7, 0xDF, 0x37, 0xD7, 0xFF, 0x89, 0xCF, 0xFF, 0xD7, 0xFF, 0xCF, 0xDF, 0xD7, 0xDF, 0xCF, 0xDF, 0xCF, 0xFF, 0xD7, 0xDF, 0xAC, 0xD8, 0x81, 0x91, 0x91, 0x51, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x82, 0xA8, 0xF1, 0xA9, 0x72, 0xD7, 0x7E, 0x01, 0xD7, 0xFF, 0x01, 0xD7, 0xDF, 0x02, 0xD7, 0xFF, 0x81, 0xD7, 0xDF, 0xCF, 0xFF, 0x05, 0xD7, 0xFF, 0x01, 0xD7, 0xDF, 0x03, 0xD7, 0xFF, 0x85, 0xD7, 0xDF, 0xD7, 0xFF, 0xD7, 0xDF, 0xD7, 0xFF, 0xD7, 0xDF, 0xD6, 0x5C, 0x1D, 0xD3, 0x95, 0x83, 0xC1, 0x93, 0x0A, 0x7F, 0x02, 0xFF, 0x02, 0xDF, 0x02, 0x02, 0xBF, 0x02, 0x02, 0x9F, 0x86, + 0x02, 0x7F, 0x02, 0x9F, 0x02, 0x7F, 0x04, 0xDD, 0x07, 0xBB, 0x07, 0xFB, 0x07, 0xFD, 0x02, 0x07, 0xFF, 0x80, 0x3D, 0xBB, 0x01, 0xB8, 0xD1, 0x80, 0xB0, 0xF1, 0x02, 0xB0, 0xD1, 0x81, 0x59, 0x11, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x80, 0x28, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x03, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x25, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0E, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x38, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x04, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x17, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x82, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x84, 0x01, 0x1A, 0x01, 0x19, 0x18, 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x82, 0x10, 0xD0, 0x00, 0xF8, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xAE, 0x20, 0xAD, 0x10, 0xD0, 0x04, 0x01, 0x19, 0x87, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAF, 0x01, 0x18, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x01, 0x17, 0x18, 0xAE, 0x2C, 0x18, 0xAD, 0x81, 0x31, 0x0E, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x80, 0xD5, 0xBA, 0x0F, 0xCF, 0xDF, 0x88, 0xC7, 0x7E, 0xBE, 0x5B, 0xBE, 0x3C, 0xB5, 0x7A, 0xAC, 0xB8, 0xBD, 0xBB, 0xC6, 0x3C, 0xBE, 0x3B, 0xC7, 0x1E, 0x0B, 0xCF, 0xDF, 0x88, 0xC7, 0x7E, 0xBE, 0x5C, 0xB5, 0xDB, 0xAC, 0xB8, 0xAC, 0x98, 0xBD, 0x5A, 0xBE, 0x3C, 0xC6, 0x1C, 0xC6, 0x9D, 0x49, 0xCF, 0xDF, 0x83, 0xAC, + 0xB9, 0x81, 0x91, 0x91, 0x51, 0x99, 0x11, 0x03, 0x99, 0x31, 0x83, 0x99, 0x11, 0xA1, 0x11, 0xA9, 0x11, 0xBC, 0x78, 0x02, 0xCF, 0xDF, 0x82, 0xD7, 0xDF, 0xCF, 0xDF, 0xCF, 0x5E, 0x01, 0xBE, 0x5C, 0x82, 0xC6, 0x3C, 0xC6, 0x1C, 0xCE, 0xFD, 0x0E, 0xCF, 0xDF, 0x86, 0xCF, 0xFF, 0xCF, 0xDF, 0xD6, 0x3B, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x75, 0xD3, 0x95, 0x13, 0xD3, 0x75, 0x80, 0xD3, 0x95, 0x02, 0xD3, 0x75, 0x83, 0xD3, 0x95, 0x08, 0x9F, 0x01, 0x1F, 0x03, 0x1F, 0x01, 0x02, 0xFF, 0x02, 0x02, 0xDF, 0x04, 0x02, 0xBF, 0x84, 0x03, 0xFD, 0x07, 0x9A, 0x07, 0xFA, 0x07, 0xFC, 0x07, 0xFE, 0x01, 0x07, 0xFF, 0x81, 0x2E, 0x5C, 0xB0, 0xD1, 0x01, 0xB8, 0xD1, 0x88, 0xB0, 0xF1, 0xB0, 0xD1, 0xB8, 0xD1, 0x59, 0x12, 0x39, 0x11, 0x38, 0xF1, 0x30, 0xF0, 0x28, 0xF0, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x26, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x3A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x13, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x82, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x83, 0x10, 0xD0, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x00, 0xF6, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x03, 0x01, 0x19, 0x86, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x1A, 0x00, 0xF9, 0x04, 0x01, 0x19, 0x81, 0x01, 0x17, + 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x81, 0x01, 0x18, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xAE, 0x2D, 0x18, 0xAD, 0x80, 0x79, 0xF1, 0x02, 0xD3, 0x55, 0x83, 0xCF, 0x7E, 0xC7, 0xDF, 0xCF, 0xBF, 0xCF, 0xDF, 0x01, 0xC7, 0xDF, 0x03, 0xCF, 0xDF, 0x80, 0xCF, 0xBF, 0x01, 0xCF, 0xDF, 0x85, 0xCF, 0xBF, 0xBE, 0xFD, 0xAC, 0xB8, 0x8A, 0x52, 0x91, 0x51, 0x91, 0x31, 0x05, 0x99, 0x31, 0x8E, 0x99, 0x11, 0xA1, 0x92, 0xAB, 0x96, 0xBE, 0x7D, 0xCF, 0xDF, 0xC7, 0xDF, 0xCF, 0xBF, 0xC7, 0xDF, 0xCF, 0xDF, 0xCF, 0xBF, 0xC7, 0x5E, 0xAD, 0x19, 0x92, 0xB4, 0x89, 0x71, 0x91, 0x51, 0x01, 0x99, 0x31, 0x01, 0x99, 0x11, 0x87, 0xA1, 0x11, 0x99, 0x31, 0xA1, 0x11, 0x99, 0x11, 0xAB, 0x36, 0xBD, 0x5A, 0xC7, 0x5E, 0xCF, 0xDF, 0x01, 0xC7, 0xBF, 0x83, 0xCF, 0xDF, 0xC7, 0xDF, 0xC7, 0xBF, 0xC7, 0xDF, 0x38, 0xCF, 0xDF, 0x8A, 0xC7, 0xDF, 0xCF, 0xBF, 0xC7, 0xDF, 0xC7, 0xBF, 0xCF, 0xBF, 0xC7, 0xDF, 0xA4, 0xB8, 0x81, 0x91, 0x91, 0x51, 0x99, 0x31, 0x99, 0x11, 0x01, 0x99, 0x31, 0x86, 0x99, 0x11, 0x99, 0x31, 0x99, 0x12, 0xBE, 0x3B, 0xCF, 0xBF, 0xCF, 0xDF, 0xCF, 0xBF, 0x01, 0xCF, 0xDF, 0x82, 0xB5, 0xDA, 0x8A, 0x12, 0x89, 0x71, 0x01, 0x99, 0x31, 0x85, 0xA1, 0x11, 0x99, 0x31, 0xAB, 0x35, 0xC7, 0x5E, 0xCF, 0xBF, 0xCF, 0xDF, 0x01, 0xC7, 0xDF, 0x01, 0xCF, 0xDF, 0x80, 0xCF, 0xBF, 0x01, 0xC7, 0xDF, 0x02, 0xCF, 0xDF, 0x80, 0xC7, 0xDF, 0x02, 0xCF, 0xDF, 0x80, 0xCE, 0x1B, 0x1B, 0xD3, 0x55, 0x83, 0x00, 0x7F, 0x00, 0x9E, 0x02, 0x3F, + 0x03, 0x3F, 0x02, 0x03, 0x1F, 0x82, 0x02, 0xFF, 0x03, 0x1F, 0x02, 0xFF, 0x02, 0x02, 0xDF, 0x84, 0x03, 0x9E, 0x07, 0x5A, 0x07, 0xF9, 0x07, 0xFB, 0x07, 0xFD, 0x01, 0x07, 0xFF, 0x84, 0x2E, 0x3C, 0xB8, 0xD2, 0xB8, 0xD1, 0xB0, 0xD1, 0xB8, 0xD1, 0x01, 0xB0, 0xD1, 0x87, 0x49, 0x11, 0x39, 0x11, 0x38, 0xF0, 0x30, 0xF0, 0x28, 0xF0, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x02, 0x20, 0xAE, 0x26, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x33, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x20, 0xAD, 0x87, 0x08, 0xF5, 0x00, 0xF9, 0x00, 0xFA, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD2, 0x18, 0xAE, 0x13, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x08, 0xF5, 0x04, 0x01, 0x19, 0x83, 0x10, 0xD0, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x01, 0x1A, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x85, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x02, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x2D, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0xA2, 0x93, 0x01, 0xD3, 0x35, 0x82, 0xCC, 0x98, 0xC7, 0xBF, 0xC7, 0xBE, 0x09, 0xC7, 0xBF, 0x85, 0xC7, 0x5E, 0xA4, 0xB8, 0x81, 0x91, 0x91, 0x51, 0x99, 0x11, 0xA1, 0x31, + 0x01, 0xA1, 0x11, 0x82, 0x99, 0x31, 0xA1, 0x11, 0xA1, 0x12, 0x05, 0xA1, 0x11, 0x89, 0xAB, 0x35, 0xBE, 0xFE, 0xC7, 0xBF, 0xC7, 0xBE, 0xC7, 0xBF, 0xB5, 0xDB, 0x89, 0xF1, 0x89, 0x71, 0x99, 0x31, 0x99, 0x11, 0x04, 0xA1, 0x11, 0x81, 0xA1, 0x32, 0x99, 0x11, 0x03, 0xA1, 0x11, 0x82, 0xA1, 0x72, 0xBD, 0x3A, 0xC7, 0xBE, 0x02, 0xC7, 0xBF, 0x81, 0xC7, 0xBE, 0xC7, 0x9F, 0x37, 0xC7, 0xBF, 0x80, 0xC7, 0x9F, 0x05, 0xC7, 0xBF, 0x8B, 0xAC, 0x98, 0x81, 0x91, 0x91, 0x51, 0x99, 0x31, 0xA1, 0x11, 0xA1, 0x31, 0xA1, 0x11, 0xA1, 0x31, 0xA1, 0x11, 0x99, 0x31, 0xBE, 0x1B, 0xC7, 0x9F, 0x02, 0xC7, 0xBF, 0x85, 0xBE, 0xFD, 0x89, 0xF2, 0x89, 0x91, 0x99, 0x31, 0xA1, 0x12, 0xA1, 0x31, 0x02, 0xA1, 0x11, 0x80, 0xAB, 0x97, 0x01, 0xC7, 0xBF, 0x80, 0xC7, 0xBE, 0x0D, 0xC7, 0xBF, 0x81, 0xC6, 0xDD, 0xD3, 0x75, 0x16, 0xD3, 0x35, 0x80, 0xD3, 0x34, 0x01, 0xD3, 0x35, 0x01, 0x00, 0x9F, 0x84, 0x01, 0x3F, 0x03, 0x3F, 0x03, 0x7F, 0x03, 0x5F, 0x03, 0x3F, 0x03, 0x03, 0x1F, 0x01, 0x02, 0xFF, 0x84, 0x03, 0x3F, 0x06, 0xF9, 0x07, 0xF9, 0x07, 0xFB, 0x07, 0xFD, 0x01, 0x07, 0xFF, 0x86, 0x2E, 0x3C, 0xB8, 0xD2, 0xB0, 0xF1, 0xB8, 0xD1, 0xB0, 0xD1, 0xB0, 0xF1, 0xB0, 0xD1, 0x01, 0x39, 0x11, 0x82, 0x38, 0xF0, 0x30, 0xF0, 0x31, 0x10, 0x01, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x02, 0x20, 0xCE, 0x82, 0x20, 0xAE, 0x20, 0xAD, 0x20, 0xAE, 0x26, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x86, 0x18, 0xB0, 0x10, 0xF2, 0x10, 0xD3, + 0x08, 0xD3, 0x08, 0xF3, 0x10, 0xF3, 0x18, 0xB0, 0x36, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x88, 0x18, 0xAE, 0x18, 0xCD, 0x08, 0xF5, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD2, 0x14, 0x18, 0xAD, 0x80, 0x08, 0xF4, 0x01, 0x01, 0x19, 0x01, 0x01, 0x1A, 0x81, 0x00, 0xF9, 0x10, 0xCF, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x1A, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x80, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x84, 0x01, 0x39, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x20, 0xCD, 0x18, 0xAE, 0x28, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0xD3, 0x15, 0x83, 0xD3, 0x14, 0xC5, 0xFB, 0xC7, 0x9F, 0xC7, 0x9E, 0x01, 0xC7, 0xBF, 0x01, 0xC7, 0x9E, 0x89, 0xC7, 0xBF, 0xC7, 0x9F, 0xBF, 0x9E, 0xBF, 0xBF, 0xBF, 0xBE, 0xB6, 0x7C, 0x8A, 0x53, 0x89, 0x71, 0xA1, 0x31, 0xA1, 0x12, 0x0A, 0xA1, 0x11, 0x80, 0xA1, 0x12, 0x01, 0xA1, 0x11, 0x85, 0xA1, 0x72, 0xB5, 0x39, 0xBF, 0x9F, 0x9B, 0xF6, 0x81, 0x91, 0x91, 0x51, 0x0C, 0xA1, 0x11, 0x80, 0xA1, 0x12, 0x01, 0xA1, 0x11, 0x83, 0xAB, 0x15, 0xBF, 0x3D, 0xC7, 0x9F, 0xC7, 0xBE, 0x01, 0xC7, 0x9F, 0x37, 0xC7, 0x9E, 0x82, 0xC7, 0x9F, 0xC7, 0x9E, 0xC7, 0x9F, 0x01, 0xC7, 0x9E, 0x84, 0xC7, 0xBF, 0xC7, 0x9F, 0xA4, 0xB8, 0x81, 0x91, 0x91, 0x51, 0x04, 0xA1, 0x11, + 0x89, 0xA1, 0x12, 0xA1, 0x11, 0xBD, 0xFB, 0xC7, 0x9F, 0xC7, 0x9E, 0xC7, 0xBE, 0xC7, 0x9F, 0xAC, 0xF9, 0x81, 0x91, 0x91, 0x71, 0x02, 0xA1, 0x11, 0x85, 0xA1, 0x12, 0xA1, 0x11, 0xA1, 0x31, 0xA1, 0x11, 0xBF, 0x3E, 0xBF, 0xBF, 0x02, 0xC7, 0x9E, 0x80, 0xC7, 0xBF, 0x02, 0xC7, 0x9E, 0x80, 0xBF, 0xBF, 0x02, 0xC7, 0x9E, 0x89, 0xBF, 0x9E, 0xC7, 0x9F, 0xC7, 0x9E, 0xBF, 0xBE, 0xC7, 0x9E, 0xC6, 0xBD, 0xD3, 0x55, 0xD2, 0xF5, 0xD3, 0x15, 0xCB, 0x14, 0x11, 0xD3, 0x14, 0x02, 0xD3, 0x15, 0x80, 0xD3, 0x14, 0x01, 0x00, 0x7F, 0x81, 0x00, 0xFF, 0x02, 0x7F, 0x01, 0x03, 0x9F, 0x83, 0x03, 0x7F, 0x23, 0x1D, 0x52, 0x59, 0x5A, 0x3A, 0x01, 0x03, 0x3F, 0x01, 0x03, 0x1F, 0x83, 0x06, 0x99, 0x07, 0xF8, 0x07, 0xFA, 0x07, 0xFD, 0x01, 0x07, 0xFF, 0x84, 0x36, 0x3C, 0xB0, 0xD1, 0xB0, 0xF1, 0xB0, 0xD1, 0xB8, 0xD1, 0x01, 0xB0, 0xD1, 0x85, 0x41, 0x12, 0x38, 0xF1, 0x39, 0x11, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x82, 0x20, 0xAE, 0x20, 0xAD, 0x20, 0xAE, 0x26, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0B, 0x18, 0xAD, 0x81, 0x10, 0xD1, 0x08, 0xF7, 0x01, 0x01, 0x1A, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x10, 0xD1, 0x18, 0xAD, 0x18, 0xAE, 0x38, 0x18, 0xAD, 0x80, 0x10, 0xF2, 0x04, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x15, 0x01, 0x19, 0x83, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x18, 0x18, 0xB0, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF4, 0x02, 0x01, 0x19, 0x82, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xAE, + 0x04, 0x18, 0xAD, 0x80, 0x09, 0x15, 0x03, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x09, 0x15, 0x00, 0xF9, 0x02, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x82, 0x20, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x29, 0x18, 0xAD, 0x83, 0xD2, 0xF4, 0xCA, 0xF4, 0xD2, 0xF4, 0xC6, 0x5C, 0x08, 0xBF, 0x9E, 0x83, 0xBF, 0x7F, 0xB6, 0x7C, 0x8A, 0x12, 0x89, 0x71, 0x01, 0xA1, 0x11, 0x82, 0xA9, 0x11, 0xA1, 0x11, 0xA9, 0x11, 0x02, 0xA1, 0x11, 0x01, 0xA9, 0x11, 0x02, 0xA1, 0x11, 0x80, 0xA9, 0x11, 0x02, 0xA1, 0x11, 0x84, 0xA9, 0x12, 0xA9, 0x11, 0xA1, 0xF3, 0x81, 0x91, 0x99, 0x31, 0x01, 0xA1, 0x11, 0x80, 0xA9, 0x12, 0x04, 0xA1, 0x11, 0x04, 0xA9, 0x11, 0x02, 0xA1, 0x11, 0x83, 0xA1, 0x12, 0xA9, 0x11, 0xAA, 0x54, 0xBF, 0x1D, 0x3F, 0xBF, 0x9E, 0x85, 0xB7, 0x9E, 0xBF, 0x9F, 0xA4, 0x98, 0x81, 0x91, 0x99, 0x51, 0xA9, 0x11, 0x04, 0xA1, 0x11, 0x88, 0xA9, 0x11, 0xB5, 0xFB, 0xBF, 0x9E, 0xBF, 0x9F, 0xBF, 0x9E, 0xBF, 0x9F, 0xA4, 0x98, 0x81, 0x91, 0x99, 0x51, 0x03, 0xA1, 0x11, 0x84, 0xA1, 0x12, 0xA1, 0x11, 0xA9, 0x11, 0xB5, 0xFB, 0xBF, 0x7E, 0x01, 0xBF, 0x9E, 0x80, 0xBF, 0x9F, 0x0D, 0xBF, 0x9E, 0x82, 0xBE, 0xBD, 0xD3, 0x35, 0xCA, 0xF4, 0x12, 0xD2, 0xF4, 0x83, 0xCA, 0xF4, 0xD2, 0xF4, 0xD2, 0xF5, 0xCA, 0xF4, 0x01, 0x00, 0x7F, 0x88, 0x00, 0xBF, 0x02, 0x1F, 0x2A, 0xBD, 0x7A, 0x36, 0xB9, 0x53, 0xC1, 0x12, 0xC9, 0x11, 0xC9, 0x12, 0x0B, 0x3F, 0x01, 0x03, 0x5F, 0x88, 0x03, 0x3F, 0x05, 0xFA, + 0x07, 0xF7, 0x07, 0xF9, 0x07, 0xFC, 0x07, 0xFE, 0x07, 0xFF, 0x2E, 0x3C, 0xB0, 0xD1, 0x01, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x82, 0xA0, 0xF1, 0x68, 0xF1, 0x41, 0x11, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xEF, 0x80, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x26, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x84, 0x01, 0x18, 0x08, 0xF7, 0x08, 0xF6, 0x00, 0xF7, 0x01, 0x18, 0x02, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x01, 0x18, 0xAE, 0x34, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x10, 0xD2, 0x00, 0xF9, 0x01, 0x01, 0x1A, 0x16, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x80, 0x10, 0xCF, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x84, 0x08, 0xD4, 0x01, 0x18, 0x01, 0x19, 0x08, 0xF6, 0x18, 0xCE, 0x03, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF5, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x2A, 0x18, 0xAD, 0x02, 0xD2, 0xD4, 0x84, 0xBE, 0x5C, 0xB7, 0x7E, 0xB7, 0x9E, 0xB7, 0x7E, 0xBF, 0x7E, 0x02, 0xB7, 0x7E, 0x88, 0xB7, 0x9E, 0xBF, 0x7E, 0xAE, 0x7B, 0x89, 0xF2, 0x89, 0x71, 0xA1, 0x11, 0xA8, 0xF1, 0xA9, 0x11, 0xA8, 0xF1, 0x04, 0xA9, 0x11, 0x80, 0xA8, 0xF1, 0x02, 0xA9, 0x11, 0x82, 0xA8, 0xF1, 0xA9, 0x11, 0xA8, 0xF1, 0x01, + 0xA9, 0x11, 0x80, 0xA9, 0x12, 0x01, 0xA9, 0x11, 0x86, 0xA1, 0x11, 0xA9, 0x11, 0xA8, 0xF1, 0xA9, 0x11, 0xA8, 0xF1, 0xA1, 0x11, 0xA9, 0x11, 0x01, 0xA8, 0xF1, 0x01, 0xA9, 0x11, 0x81, 0xA8, 0xF1, 0xA9, 0x11, 0x01, 0xA8, 0xF1, 0x80, 0xA9, 0x12, 0x02, 0xA9, 0x11, 0x83, 0xA8, 0xF1, 0xA1, 0x11, 0xAA, 0x34, 0xB7, 0x1E, 0x39, 0xBF, 0x7E, 0x01, 0xB7, 0x7E, 0x80, 0xBF, 0x7E, 0x01, 0xB7, 0x7E, 0x84, 0xBF, 0x7F, 0xB7, 0x7E, 0x9C, 0x97, 0x81, 0x91, 0x99, 0x51, 0x04, 0xA8, 0xF1, 0x84, 0xA9, 0x11, 0xA8, 0xF1, 0xB5, 0xDB, 0xBF, 0x7E, 0xB7, 0x7E, 0x01, 0xBF, 0x7E, 0x83, 0xA4, 0x78, 0x81, 0x91, 0x99, 0x51, 0xA9, 0x11, 0x01, 0xA8, 0xF1, 0x01, 0xA9, 0x11, 0x84, 0xA8, 0xF1, 0xA9, 0x11, 0xB5, 0xDB, 0xB7, 0x7F, 0xB7, 0x7E, 0x01, 0xBF, 0x7E, 0x80, 0xB7, 0x7E, 0x02, 0xBF, 0x7E, 0x01, 0xB7, 0x7E, 0x83, 0xBF, 0x7E, 0xB7, 0x7E, 0xBF, 0x7E, 0xB7, 0x7E, 0x01, 0xBF, 0x7E, 0x01, 0xB7, 0x7E, 0x82, 0xBF, 0x7E, 0xBE, 0x9D, 0xCB, 0x75, 0x15, 0xD2, 0xD4, 0x80, 0xD2, 0xD5, 0x01, 0x00, 0x7F, 0x82, 0x30, 0xBB, 0x99, 0x55, 0xC9, 0x31, 0x01, 0xC9, 0x32, 0x83, 0xC9, 0x12, 0xC0, 0xF2, 0xC8, 0xF2, 0x32, 0xFC, 0x02, 0x03, 0x7F, 0x8F, 0x05, 0x9B, 0x07, 0xF7, 0x07, 0xF9, 0x07, 0xFC, 0x07, 0xFE, 0x07, 0xFF, 0x2E, 0x3C, 0xB8, 0xD1, 0xB0, 0xD1, 0xB0, 0xD2, 0xB0, 0xD1, 0xB0, 0xF1, 0x98, 0xF1, 0xB0, 0xF1, 0x88, 0xF1, 0x31, 0x10, 0x01, 0x30, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x82, 0x20, 0xAE, 0x18, 0xAD, 0x20, 0xAE, 0x26, 0x18, 0xAD, 0x01, 0x01, + 0x19, 0x08, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF7, 0x10, 0xD1, 0x04, 0x18, 0xAD, 0x84, 0x10, 0xD1, 0x00, 0xF7, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF7, 0x01, 0x18, 0xAE, 0x38, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x12, 0x01, 0x19, 0x02, 0x01, 0x1A, 0x82, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xCF, 0x59, 0x18, 0xAD, 0x02, 0xD2, 0xB4, 0x08, 0xB7, 0x7E, 0x86, 0xB7, 0x1D, 0x8A, 0x53, 0x81, 0x91, 0xA1, 0x11, 0xA8, 0xF1, 0xB0, 0xF1, 0xA9, 0x11, 0x16, 0xA8, 0xF1, 0x82, 0xA8, 0xF2, 0xA8, 0xF1, 0xB0, 0xF1, 0x0D, 0xA8, 0xF1, 0x80, 0xB2, 0xF5, 0x04, 0xB7, 0x7E, 0x80, 0xB7, 0x5E, 0x02, 0xB7, 0x7E, 0x01, 0xB7, 0x5E, 0x81, 0xB7, 0x7E, 0xB7, 0x5E, 0x01, 0xB7, 0x7E, 0x80, 0xB7, 0x5E, 0x0C, 0xB7, 0x7E, 0x01, 0xB7, 0x5E, 0x14, 0xB7, 0x7E, 0x80, 0xB7, 0x5E, 0x01, 0xB7, 0x7E, 0x82, 0xB7, 0x5E, 0xB7, 0x7E, 0xB7, 0x5E, 0x06, 0xB7, 0x7E, 0x82, 0x9C, 0x78, 0x81, 0x91, 0x99, 0x51, 0x06, 0xA8, 0xF1, 0x80, 0xB5, 0xDB, 0x03, 0xB7, 0x7E, 0x82, 0x9C, 0x77, 0x81, 0x91, 0x91, 0x51, 0x06, 0xA8, 0xF1, 0x80, 0xB5, 0xDB, 0x02, 0xB7, 0x7E, 0x82, 0xB7, 0x5E, 0xB7, 0x7E, 0xB7, 0x5E, 0x06, 0xB7, 0x7E, 0x80, 0xB7, 0x5E, 0x04, 0xB7, 0x7E, 0x82, 0xB7, 0x5E, 0xB7, 0x1D, 0xCB, 0x96, 0x01, 0xD2, 0xB4, 0x86, 0xCA, 0xB4, 0xD2, 0xB4, 0xCA, 0xB4, 0xD2, 0xB4, 0xCA, 0xB4, 0xD2, 0xB4, 0xCA, 0xB4, 0x07, 0xD2, 0xB4, 0x80, 0xCA, 0x94, 0x02, 0xD2, 0xB4, 0x87, 0xCA, 0xB4, 0x08, 0x7E, 0x70, 0xF8, 0xC9, 0x52, 0xC9, 0x32, + 0xC9, 0x12, 0xC9, 0x32, 0xC1, 0x11, 0x01, 0xC8, 0xF1, 0x82, 0xC8, 0xD1, 0x33, 0x1C, 0x03, 0xBF, 0x01, 0x03, 0x9F, 0x87, 0x05, 0x1B, 0x07, 0xD6, 0x07, 0xF7, 0x07, 0xFB, 0x07, 0xFE, 0x07, 0xFF, 0x2E, 0x3C, 0xB8, 0xD1, 0x03, 0xB0, 0xD1, 0x85, 0xA0, 0xF1, 0xB0, 0xF1, 0xB0, 0xD1, 0x50, 0xF0, 0x30, 0xF0, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x1C, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x20, 0xAD, 0x06, 0x18, 0xAD, 0x80, 0x01, 0x16, 0x01, 0x01, 0x19, 0x80, 0x08, 0xD5, 0x03, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x85, 0x10, 0xD3, 0x00, 0xFA, 0x01, 0x19, 0x08, 0xF6, 0x18, 0xAD, 0x18, 0xCD, 0x1E, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x13, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x10, 0xD2, 0x12, 0x01, 0x19, 0x82, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x82, 0x00, 0xF9, 0x18, 0xD0, 0x18, 0x8D, 0x59, 0x18, 0xAD, 0x01, 0xD2, 0x94, 0x80, 0xCA, 0x94, 0x04, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x89, 0xB7, 0x5E, 0x94, 0x16, 0x89, 0x91, 0x99, 0x51, 0xB0, 0xF1, 0xA8, 0xF1, 0xB0, 0xF1, 0xA8, 0xF1, 0xB0, 0xF1, 0xA8, 0xF1, 0x02, 0xB0, 0xF1, 0x80, 0xA8, 0xF1, 0x09, 0xB0, 0xF1, 0x01, 0xA8, 0xF1, 0x81, 0xB0, 0xF1, 0xA8, 0xF1, 0x02, 0xB0, 0xF1, 0x80, 0xB0, 0xD1, 0x01, 0xB0, 0xF1, 0x81, 0xB0, 0xF2, 0xA8, 0xF1, 0x01, 0xB0, 0xF1, 0x84, 0xB0, + 0xD1, 0xB0, 0xF1, 0xB0, 0xF2, 0xA8, 0xF1, 0xB0, 0xF2, 0x02, 0xB0, 0xF1, 0x80, 0xA8, 0xF1, 0x01, 0xB0, 0xF1, 0x80, 0xAC, 0xF9, 0x01, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x05, 0xAF, 0x5E, 0x80, 0xAF, 0x7E, 0x02, 0xAF, 0x5E, 0x02, 0xB7, 0x5E, 0x83, 0xAF, 0x5E, 0xB7, 0x5E, 0xAF, 0x5E, 0xB7, 0x5E, 0x03, 0xAF, 0x5E, 0x02, 0xB7, 0x5E, 0x02, 0xAF, 0x5E, 0x01, 0xB7, 0x5E, 0x0A, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x02, 0xAF, 0x5E, 0x01, 0xB7, 0x5E, 0x02, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x03, 0xAF, 0x5E, 0x81, 0xAF, 0x5D, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x82, 0x9C, 0x77, 0x81, 0x91, 0x99, 0x51, 0x06, 0xB0, 0xF1, 0x80, 0xAD, 0xBB, 0x03, 0xB7, 0x5E, 0x82, 0x9C, 0x78, 0x89, 0x91, 0x99, 0x51, 0x06, 0xB0, 0xF1, 0x80, 0xB5, 0xBB, 0x01, 0xB7, 0x5E, 0x04, 0xAF, 0x5E, 0x80, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x02, 0xB7, 0x5E, 0x80, 0xAF, 0x5E, 0x02, 0xB7, 0x5E, 0x01, 0xAF, 0x5E, 0x8B, 0xB7, 0x5E, 0xAF, 0x5E, 0xAF, 0x1D, 0xCB, 0x75, 0xCA, 0x93, 0xD2, 0x94, 0xCA, 0x74, 0xCA, 0x94, 0xCA, 0x74, 0xD2, 0x74, 0xCA, 0x74, 0xD2, 0x94, 0x07, 0xCA, 0x94, 0x85, 0xD2, 0x94, 0xCA, 0x93, 0xCA, 0x94, 0xD2, 0x93, 0xCA, 0x74, 0x99, 0x15, 0x02, 0xC9, 0x32, 0x83, 0xC9, 0x12, 0xC1, 0x11, 0xC8, 0xF2, 0xC0, 0xF2, 0x01, 0xC8, 0xD1, 0x8A, 0x33, 0x3C, 0x03, 0xFF, 0x03, 0xDF, 0x03, 0xBF, 0x04, 0xDC, 0x07, 0xD6, 0x07, 0xF7, 0x07, 0xFB, 0x07, 0xFE, 0x07, 0xFF, 0x2E, 0x3C, 0x01, 0xB0, 0xD1, 0x02, 0xB0, 0xF1, 0x80, 0xA8, 0xF1, 0x01, 0xB0, 0xF1, 0x82, + 0x90, 0xF1, 0x30, 0xF0, 0x28, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x25, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF3, 0x0A, 0x18, 0xAD, 0x80, 0x08, 0xD3, 0x01, 0x01, 0x19, 0x81, 0x10, 0xD1, 0x18, 0xCD, 0x34, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x59, 0x18, 0xAD, 0x01, 0xD2, 0x74, 0x89, 0xCA, 0x53, 0xAF, 0x5E, 0xAF, 0x3E, 0xAF, 0x5E, 0xAF, 0x3E, 0xAF, 0x3D, 0xAF, 0x5D, 0xAF, 0x3D, 0xAF, 0x3E, 0xA6, 0x9C, 0x01, 0x81, 0x91, 0x02, 0xB0, 0xF1, 0x81, 0xB0, 0xD1, 0xB0, 0xF2, 0x01, 0xB0, 0xD1, 0x80, 0xB0, 0xF2, 0x01, 0xB0, 0xF1, 0x8C, 0xAA, 0x13, 0xB4, 0x18, 0xA4, 0x38, 0x9A, 0xB4, 0x99, 0x31, 0xA8, 0xF1, 0xB0, 0xF1, 0xB0, 0xF2, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x81, 0xB0, 0xF1, 0xB0, 0xD1, 0x03, 0xB0, 0xF1, 0x88, 0xAA, 0x74, 0xAC, 0x78, 0xAC, 0xF9, 0x9B, 0x35, 0x99, 0x31, 0xA8, 0xF1, 0xB0, 0xF1, 0xB0, 0xF2, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x84, 0xB0, 0xF1, 0xB0, 0xF2, 0xB0, 0xD1, 0xB0, 0xF1, 0xA9, 0xB3, 0x03, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x01, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x02, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x01, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x01, 0xAF, 0x3E, 0x01, 0xAF, + 0x3D, 0x01, 0xAF, 0x3E, 0x81, 0xAF, 0x5E, 0xAF, 0x3E, 0x01, 0xAF, 0x3D, 0x03, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x01, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x07, 0xAF, 0x3E, 0x81, 0xAF, 0x3D, 0xAF, 0x5E, 0x03, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x02, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x04, 0xAF, 0x3E, 0x82, 0xAF, 0x5E, 0xAF, 0x3E, 0xAF, 0x5E, 0x03, 0xAF, 0x3E, 0x84, 0x9C, 0x77, 0x81, 0x91, 0x99, 0x31, 0xB0, 0xF1, 0xB0, 0xD1, 0x04, 0xB0, 0xF1, 0x80, 0xAD, 0xBB, 0x01, 0xAF, 0x3E, 0x84, 0xAF, 0x5D, 0xAF, 0x3E, 0x94, 0x77, 0x81, 0x91, 0x99, 0x51, 0x01, 0xB0, 0xD1, 0x80, 0xB0, 0xF1, 0x03, 0xB0, 0xD1, 0x84, 0xAD, 0xBA, 0xAF, 0x3E, 0xAF, 0x5E, 0xAF, 0x3E, 0xAF, 0x5E, 0x02, 0xAF, 0x3E, 0x80, 0xAF, 0x3D, 0x02, 0xAF, 0x5E, 0x01, 0xAF, 0x3D, 0x03, 0xAF, 0x3E, 0x80, 0xAF, 0x5E, 0x03, 0xAF, 0x3E, 0x84, 0xAE, 0xFD, 0xCB, 0x56, 0xCA, 0x53, 0xCA, 0x74, 0xD2, 0x53, 0x01, 0xD2, 0x74, 0x81, 0xD2, 0x73, 0xCA, 0x73, 0x07, 0xD2, 0x74, 0x81, 0xD2, 0x54, 0xCA, 0x74, 0x01, 0xCA, 0x54, 0x80, 0xCA, 0x74, 0x02, 0xC9, 0x32, 0x02, 0xC9, 0x12, 0x80, 0xC0, 0xF1, 0x02, 0xC8, 0xD1, 0x81, 0x33, 0x5C, 0x04, 0x1F, 0x01, 0x03, 0xFF, 0x88, 0x04, 0x7D, 0x07, 0x95, 0x07, 0xF6, 0x07, 0xFA, 0x07, 0xFE, 0x07, 0xFF, 0x2E, 0x3C, 0xB0, 0xF1, 0xB0, 0xD1, 0x02, 0xB0, 0xF1, 0x87, 0xA8, 0xF1, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF1, 0x40, 0xF0, 0x28, 0xCF, 0x28, 0xEF, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAE, 0x1B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, + 0xAD, 0x84, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCD, 0x00, 0xF8, 0x01, 0x1A, 0x08, 0xF6, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xCF, 0x08, 0xD3, 0x01, 0x08, 0xF3, 0x82, 0x18, 0xAF, 0x20, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x00, 0xF6, 0x01, 0x19, 0x01, 0x18, 0x18, 0xAD, 0x20, 0xAE, 0x3A, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x5B, 0x18, 0xAD, 0x02, 0xCA, 0x53, 0x03, 0xA7, 0x3E, 0x03, 0xA7, 0x3D, 0x85, 0x94, 0x57, 0x81, 0x91, 0x99, 0x31, 0xB8, 0xD1, 0xB0, 0xD1, 0xB8, 0xD1, 0x02, 0xB0, 0xD1, 0x83, 0xB0, 0xF1, 0xB0, 0xD1, 0xB1, 0xB3, 0xAD, 0x9A, 0x01, 0xAF, 0x3D, 0x01, 0xA7, 0x3D, 0x85, 0x9D, 0xDA, 0x89, 0xD1, 0x99, 0x51, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF1, 0x02, 0xB0, 0xD1, 0x01, 0xB8, 0xD1, 0x02, 0xB0, 0xD1, 0x84, 0xB0, 0xF1, 0xB2, 0x13, 0xAD, 0x9B, 0xA7, 0x3E, 0xA7, 0x3D, 0x01, 0xAF, 0x3E, 0x82, 0x9D, 0xDA, 0x81, 0xF2, 0x91, 0x71, 0x01, 0xB0, 0xF1, 0x81, 0xB0, 0xD1, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x85, 0xB8, 0xD1, 0xB8, 0xD2, 0xB0, 0xF1, 0xAD, 0x39, 0xA7, 0x3D, 0xA7, 0x3E, 0x04, 0xA7, 0x3D, 0x80, 0xA7, 0x3E, 0x02, 0xA7, 0x3D, 0x80, 0xAF, 0x3D, 0x02, 0xA7, 0x3D, 0x01, 0xA7, 0x3E, 0x81, 0xA7, 0x3D, 0xAF, 0x3D, 0x01, 0xA7, 0x3D, 0x81, 0xA7, 0x3E, 0xAF, 0x3D, 0x01, 0xA7, 0x3E, 0x81, 0xA7, 0x3D, 0xAF, 0x3D, 0x01, 0xA7, 0x3D, 0x82, 0xA7, 0x3E, 0xAF, 0x3E, + 0xAF, 0x1E, 0x07, 0xA7, 0x3E, 0x84, 0xAF, 0x3E, 0xA7, 0x3E, 0xA7, 0x3D, 0xAF, 0x3E, 0xA7, 0x3E, 0x02, 0xA7, 0x3D, 0x80, 0xAF, 0x3D, 0x02, 0xA7, 0x3E, 0x83, 0xA7, 0x3D, 0xAF, 0x3D, 0xA7, 0x3D, 0xAF, 0x3D, 0x01, 0xA7, 0x3E, 0x81, 0xAF, 0x3D, 0xA7, 0x3E, 0x01, 0xA7, 0x3D, 0x83, 0xA7, 0x3E, 0x94, 0x78, 0x81, 0x91, 0x99, 0x31, 0x05, 0xB0, 0xD1, 0x84, 0xB8, 0xD1, 0xAD, 0x9A, 0xA7, 0x3E, 0xA7, 0x3D, 0xA7, 0x3E, 0x02, 0xA7, 0x3D, 0x80, 0xAF, 0x3D, 0x04, 0xA7, 0x3D, 0x80, 0xAF, 0x3D, 0x02, 0xA7, 0x3D, 0x81, 0xAF, 0x3E, 0xA7, 0x3E, 0x02, 0xA7, 0x3D, 0x84, 0xAF, 0x3D, 0xAF, 0x3E, 0xA7, 0x3D, 0xAF, 0x3D, 0xAF, 0x3E, 0x01, 0xA7, 0x3D, 0x81, 0xAF, 0x3D, 0xA7, 0x3E, 0x02, 0xAF, 0x3D, 0x80, 0xA7, 0x3E, 0x01, 0xA7, 0x3D, 0x83, 0xAF, 0x3D, 0xA7, 0x3D, 0xAE, 0xDD, 0xC3, 0x76, 0x03, 0xCA, 0x53, 0x80, 0xCA, 0x33, 0x08, 0xCA, 0x53, 0x82, 0xD2, 0x33, 0xCA, 0x53, 0xD2, 0x53, 0x01, 0xCA, 0x53, 0x85, 0x30, 0x9C, 0x00, 0x5F, 0x58, 0xB9, 0xC9, 0x12, 0xC1, 0x11, 0xC8, 0xF1, 0x01, 0xC8, 0xD1, 0x01, 0xC0, 0xD1, 0x81, 0x33, 0x7C, 0x04, 0x5F, 0x01, 0x04, 0x1F, 0x86, 0x04, 0x5E, 0x07, 0x75, 0x07, 0xF5, 0x07, 0xFA, 0x07, 0xFE, 0x07, 0xFF, 0x2E, 0x3C, 0x02, 0xB0, 0xF1, 0x82, 0xB0, 0xD1, 0xB0, 0xF1, 0xA8, 0xF1, 0x01, 0xB0, 0xF1, 0x82, 0xB0, 0xD1, 0x80, 0xF1, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAE, 0x1B, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x06, 0x18, + 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x01, 0x01, 0x1A, 0x80, 0x10, 0xD1, 0x02, 0x18, 0xAD, 0x82, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x80, 0x10, 0xD1, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x32, 0x18, 0xAD, 0x81, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x5A, 0x18, 0xAD, 0x82, 0xCA, 0x13, 0xCA, 0x33, 0xCA, 0x13, 0x04, 0xA7, 0x1D, 0x02, 0xA7, 0x3D, 0x82, 0x8A, 0x53, 0x81, 0x91, 0xA8, 0xF1, 0x02, 0xB8, 0xD1, 0x80, 0xB0, 0xD1, 0x02, 0xB8, 0xD1, 0x83, 0xB2, 0x13, 0xA6, 0xBD, 0xA7, 0x1D, 0xA7, 0x3E, 0x03, 0xA7, 0x1D, 0x83, 0x9E, 0x1B, 0x81, 0xF1, 0x91, 0x71, 0xB0, 0xF1, 0x08, 0xB8, 0xD1, 0x81, 0xB1, 0xF3, 0xA6, 0xBD, 0x03, 0xA7, 0x1D, 0x84, 0xA7, 0x3D, 0xA7, 0x1D, 0x9E, 0x1B, 0x89, 0xF2, 0x89, 0x91, 0x05, 0xB8, 0xD1, 0x82, 0xB0, 0xD1, 0xB8, 0xD1, 0xB3, 0x36, 0x09, 0xA7, 0x1D, 0x02, 0xA7, 0x3D, 0x01, 0xA7, 0x1D, 0x82, 0xA7, 0x3D, 0xA7, 0x1D, 0xA7, 0x1E, 0x01, 0xA7, 0x1D, 0x81, 0xA7, 0x3D, 0xA7, 0x3E, 0x02, 0xA7, 0x1D, 0x83, 0xA7, 0x3E, 0xA7, 0x1D, 0xA7, 0x3E, 0xA7, 0x3D, 0x01, 0xA7, 0x1D, 0x80, 0xA7, 0x3D, 0x09, 0xA7, 0x1D, 0x02, 0xA7, 0x3D, 0x81, 0xA7, 0x3E, 0xA7, 0x1D, 0x01, 0xA7, 0x3D, 0x05, 0xA7, 0x1D, 0x80, 0xA7, 0x3D, 0x01, 0xA7, 0x1D, 0x80, 0xA7, 0x3E, 0x01, 0xA7, 0x3D, 0x01, 0xA7, 0x1D, 0x82, 0x94, 0x77, 0x81, 0x91, 0x99, 0x31, 0x06, 0xB8, 0xD1, 0x83, 0xA5, 0x9A, 0xA7, + 0x1D, 0xA7, 0x3D, 0xA7, 0x3E, 0x01, 0xA7, 0x1D, 0x81, 0xA7, 0x1E, 0xA7, 0x3D, 0x07, 0xA7, 0x1D, 0x01, 0xA7, 0x3D, 0x84, 0xA7, 0x1E, 0xA7, 0x1D, 0xA7, 0x3D, 0xA7, 0x1D, 0xA7, 0x3D, 0x05, 0xA7, 0x1D, 0x01, 0xA7, 0x3D, 0x80, 0xA7, 0x1D, 0x01, 0xA7, 0x3D, 0x81, 0xA7, 0x1D, 0xA7, 0x3E, 0x04, 0xA7, 0x1D, 0x83, 0xBB, 0xF7, 0xCA, 0x13, 0xCA, 0x33, 0xCA, 0x13, 0x09, 0xCA, 0x33, 0x01, 0xCA, 0x13, 0x82, 0xCA, 0x14, 0xD2, 0x33, 0xCA, 0x33, 0x01, 0x00, 0x3F, 0x83, 0x00, 0x5F, 0x78, 0xD7, 0xC0, 0xF2, 0xC8, 0xF1, 0x02, 0xC0, 0xD1, 0x8D, 0xC8, 0xB1, 0x4B, 0x1A, 0x04, 0x7F, 0x04, 0x5F, 0x04, 0x3F, 0x04, 0x5F, 0x07, 0x35, 0x07, 0xF4, 0x07, 0xF9, 0x07, 0xFE, 0x07, 0xFF, 0x2E, 0x3C, 0xB0, 0xD1, 0xB0, 0xF1, 0x02, 0xB0, 0xD1, 0x87, 0xA8, 0xF1, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF1, 0xA0, 0xF1, 0x28, 0xCF, 0x28, 0xEF, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x18, 0xAD, 0x20, 0xAE, 0x1B, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x10, 0xD1, 0x08, 0xF3, 0x10, 0xF3, 0x10, 0xD2, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x04, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x10, 0xD3, 0x01, 0x01, 0x19, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAF, 0x01, 0x1A, 0x01, 0x19, 0x00, 0xF9, 0x08, 0xF6, 0x02, 0x01, 0x19, 0x81, 0x18, 0xAF, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD3, 0x18, 0xAE, 0x1D, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, + 0xAE, 0x13, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAE, 0x20, 0xAE, 0x5B, 0x18, 0xAD, 0x02, 0xCA, 0x13, 0x01, 0x9F, 0x1D, 0x80, 0xA7, 0x1D, 0x01, 0x9F, 0x1D, 0x80, 0xA7, 0x1D, 0x01, 0x9F, 0x1D, 0x01, 0x81, 0x91, 0x07, 0xB8, 0xD1, 0x80, 0xA5, 0xDB, 0x01, 0x9F, 0x1D, 0x80, 0x9E, 0xFD, 0x02, 0x9F, 0x1D, 0x84, 0xA6, 0xFD, 0x9F, 0x1D, 0x94, 0xF9, 0x81, 0x91, 0x99, 0x31, 0x01, 0xB8, 0xD1, 0x80, 0xB8, 0xB1, 0x04, 0xB8, 0xD1, 0x81, 0xB8, 0xB1, 0xA5, 0xDB, 0x03, 0x9F, 0x1D, 0x80, 0xA6, 0xFD, 0x02, 0x9F, 0x1D, 0x82, 0x94, 0xF9, 0x81, 0x91, 0x99, 0x31, 0x06, 0xB8, 0xD1, 0x80, 0xB9, 0x32, 0x02, 0x9F, 0x1D, 0x80, 0x9F, 0x1E, 0x04, 0x9F, 0x1D, 0x84, 0x9E, 0x1B, 0x94, 0x57, 0x92, 0xD4, 0xA1, 0xF3, 0xA9, 0x11, 0x01, 0xB0, 0xF1, 0x81, 0xA9, 0x11, 0xB2, 0x74, 0x01, 0xB2, 0x54, 0x81, 0xAB, 0xF7, 0xA5, 0xDB, 0x01, 0xA6, 0xFD, 0x01, 0xA7, 0x1D, 0x01, 0x9F, 0x1D, 0x80, 0xA6, 0xFD, 0x01, 0x9F, 0x1D, 0x80, 0xA7, 0x1D, 0x0A, 0x9F, 0x1D, 0x8C, 0x9E, 0x7C, 0x94, 0x98, 0x8B, 0x14, 0x9A, 0x13, 0xA1, 0x31, 0xA9, 0x12, 0xB0, 0xF1, 0xA8, 0xF1, 0xB2, 0x55, 0xB2, 0x74, 0xB2, 0x54, 0xAB, 0x97, 0xAD, 0x1A, 0x03, 0x9F, 0x1D, 0x85, 0xA7, 0x1D, 0x9F, 0x1D, 0xA7, 0x1D, 0x94, 0x57, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xB8, 0xD1, 0x87, 0xA5, 0x7A, 0x9F, 0x1D, 0xA7, 0x1D, 0x9F, 0x1D, 0xA7, 0x1D, 0x9E, 0x7C, 0x9D, 0xBA, 0xA5, 0x9A, 0x06, 0xA5, 0x7A, 0x80, 0xA6, 0x9C, 0x02, 0x9F, 0x1D, 0x80, 0xA7, 0x1D, 0x06, 0x9F, 0x1D, 0x85, 0x9E, 0x5C, 0x94, 0xB8, 0x8A, 0xF4, 0x9A, + 0x13, 0xA1, 0x31, 0xA8, 0xF1, 0x01, 0xB0, 0xF1, 0x88, 0xB9, 0x32, 0xB2, 0x74, 0xB2, 0x54, 0xB3, 0x36, 0xAC, 0xB9, 0xA6, 0x3C, 0x9F, 0x1D, 0xBB, 0xF7, 0xC9, 0xF3, 0x02, 0xCA, 0x13, 0x07, 0xC9, 0xF3, 0x04, 0xCA, 0x13, 0x01, 0x00, 0x3F, 0x85, 0x00, 0x5F, 0x58, 0xB9, 0xC0, 0xF1, 0xC0, 0xD1, 0xC8, 0xD1, 0xC8, 0xB2, 0x01, 0xC0, 0xB1, 0x81, 0x62, 0xB8, 0x04, 0xBF, 0x01, 0x04, 0x7F, 0x88, 0x04, 0x5F, 0x07, 0x15, 0x07, 0xF4, 0x07, 0xF9, 0x07, 0xFD, 0x07, 0xFF, 0x2E, 0x3C, 0xB0, 0xD1, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x01, 0xA8, 0xF1, 0x03, 0xB0, 0xF1, 0x82, 0x58, 0xF0, 0x28, 0xCF, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x1A, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x01, 0x17, 0x03, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x8B, 0x08, 0xF3, 0x01, 0x19, 0x00, 0xF6, 0x20, 0xAD, 0x20, 0xCD, 0x18, 0xAE, 0x08, 0xF3, 0x01, 0x19, 0x00, 0xF9, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD4, 0x02, 0x18, 0xAD, 0x82, 0x00, 0xF6, 0x01, 0x19, 0x08, 0xF3, 0x38, 0x18, 0xAD, 0x01, 0x18, 0xCD, 0x13, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xAE, 0x5A, 0x18, 0xAD, 0x02, 0xC9, 0xD3, 0x06, 0x9E, 0xFD, 0x87, 0x95, 0x9A, 0x81, 0x91, 0x91, 0x51, 0xC0, 0xB1, 0xB8, 0xD1, 0xC0, 0xB1, 0xB8, 0xD1, 0xC0, 0xD1, 0x01, 0xB8, 0xD1, 0x80, 0xB2, 0xB5, 0x09, 0x9E, 0xFD, 0x81, 0x82, 0x52, 0x81, 0x91, 0x03, 0xB8, + 0xD1, 0x84, 0xC0, 0xB1, 0xC0, 0xD1, 0xB8, 0xD1, 0xC0, 0xD1, 0xB1, 0xF3, 0x04, 0x9E, 0xFD, 0x80, 0x9F, 0x1D, 0x03, 0x9E, 0xFD, 0x81, 0x8A, 0x93, 0x81, 0x91, 0x01, 0xB8, 0xD1, 0x80, 0xC0, 0xD1, 0x03, 0xB8, 0xD1, 0x81, 0xC0, 0xB1, 0xA6, 0x3C, 0x05, 0x9E, 0xFD, 0x83, 0x94, 0xF8, 0x8A, 0x53, 0x91, 0x71, 0xB0, 0xF1, 0x02, 0xB8, 0xD1, 0x01, 0xB8, 0xB1, 0x80, 0xC0, 0xB1, 0x01, 0xC0, 0xD1, 0x84, 0xB8, 0xD1, 0xC0, 0xD1, 0xB8, 0xB1, 0xB9, 0x92, 0xAC, 0xB9, 0x10, 0x9E, 0xFD, 0x83, 0x9E, 0x5C, 0x8B, 0x96, 0x89, 0x91, 0xA1, 0x31, 0x01, 0xB8, 0xD1, 0x80, 0xC0, 0xB1, 0x05, 0xB8, 0xD1, 0x84, 0xC0, 0xB1, 0xB8, 0xD1, 0xB9, 0x32, 0xAB, 0xF7, 0x9E, 0x9C, 0x03, 0x9E, 0xFD, 0x85, 0x94, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xB8, 0xD1, 0xC0, 0xB1, 0xB8, 0xD1, 0x01, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x80, 0xA5, 0x7A, 0x03, 0x9E, 0xFD, 0x84, 0x94, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xB8, 0xD1, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x80, 0xC0, 0xB1, 0x01, 0xB8, 0xD1, 0x80, 0xA5, 0x7A, 0x08, 0x9E, 0xFD, 0x83, 0x9E, 0x9C, 0x8B, 0x96, 0x89, 0x71, 0xA1, 0x31, 0x01, 0xB8, 0xD1, 0x83, 0xC0, 0xB1, 0xB8, 0xD1, 0xC0, 0xB1, 0xC0, 0xD1, 0x01, 0xB8, 0xD1, 0x80, 0xC0, 0xD1, 0x01, 0xB8, 0xD1, 0x85, 0xC0, 0xD1, 0xB3, 0x35, 0xA6, 0x3C, 0xBB, 0xD7, 0xC9, 0xD3, 0xC9, 0xF3, 0x08, 0xC9, 0xD3, 0x80, 0xC9, 0xF3, 0x01, 0xC9, 0xD3, 0x82, 0xC9, 0xF3, 0xC9, 0xD3, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x91, 0x00, 0xDF, 0x88, 0xF6, 0xC8, 0xD1, 0xC0, 0xB1, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0x62, 0xD9, + 0x04, 0xFF, 0x04, 0xBF, 0x04, 0x9F, 0x04, 0x7F, 0x06, 0xB6, 0x07, 0xF3, 0x07, 0xF8, 0x07, 0xFD, 0x07, 0xFF, 0x2E, 0x3C, 0x02, 0xB0, 0xD1, 0x81, 0xB0, 0xF1, 0x98, 0xF2, 0x02, 0xB0, 0xF1, 0x84, 0x78, 0xF0, 0x90, 0xF1, 0x80, 0xD1, 0x28, 0xCF, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x19, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x85, 0x00, 0xF7, 0x08, 0xF7, 0x01, 0x19, 0x01, 0x1A, 0x08, 0xF4, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x08, 0xF3, 0x01, 0x19, 0x00, 0xF6, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xCD, 0x08, 0xF3, 0x01, 0x19, 0x08, 0xF6, 0x02, 0x18, 0xAD, 0x83, 0x08, 0xF7, 0x01, 0x19, 0x08, 0xF5, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x85, 0x08, 0xF6, 0x01, 0x1A, 0x08, 0xF6, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x12, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x5E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0xC9, 0xB3, 0x84, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xFC, 0x01, 0x96, 0xFD, 0x84, 0x95, 0x99, 0x89, 0x91, 0x91, 0x71, 0xC0, 0xB1, 0xC0, 0xD1, 0x03, 0xC0, 0xB1, 0x82, 0xC0, 0xD1, 0xAB, 0xD7, 0x9E, 0xFC, 0x01, 0x96, 0xFD, 0x89, 0x96, 0xDD, 0x96, 0xFD, 0x9E, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xDD, 0x9E, 0xFD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x11, 0x01, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x83, 0xC0, 0xD1, + 0xC0, 0xB1, 0xAB, 0x76, 0x9E, 0xDD, 0x01, 0x9E, 0xFD, 0x01, 0x9E, 0xDD, 0x88, 0x96, 0xDD, 0x9E, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xDD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x89, 0xC0, 0xD1, 0xA5, 0x5A, 0x96, 0xFD, 0x9E, 0xDD, 0x9E, 0xFD, 0x96, 0xFD, 0x96, 0x3B, 0x8A, 0xF4, 0x89, 0x91, 0xA9, 0x11, 0x01, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x03, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x03, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x87, 0xB9, 0x92, 0xA5, 0x5A, 0x9E, 0xDD, 0x9E, 0xFC, 0x96, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x9E, 0xFD, 0x07, 0x96, 0xFD, 0x84, 0x94, 0xF9, 0x81, 0xF1, 0x91, 0x71, 0xB8, 0xD2, 0xC0, 0xB1, 0x01, 0xC0, 0xD1, 0x83, 0xC0, 0xB1, 0xC0, 0xD1, 0xC0, 0xB1, 0xC0, 0xD1, 0x06, 0xC0, 0xB1, 0x87, 0xB9, 0x92, 0x9D, 0xBB, 0x96, 0xFD, 0x9E, 0xDD, 0x96, 0xFD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x81, 0xA5, 0x5A, 0x9E, 0xDD, 0x01, 0x96, 0xFD, 0x83, 0x9E, 0xFD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x83, 0xA5, 0x5A, 0x96, 0xFD, 0x9E, 0xFD, 0x96, 0xFD, 0x01, 0x9E, 0xFD, 0x86, 0x96, 0xFD, 0x9E, 0xFD, 0x96, 0xFD, 0x95, 0x39, 0x81, 0xF1, 0x91, 0x71, 0xB0, 0xD1, 0x02, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x01, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x05, 0xC0, 0xB1, 0x83, 0xB8, 0xD1, 0xB9, 0x11, 0xAC, 0xFA, 0xB4, 0x58, 0x0A, 0xC9, 0xB3, 0x80, 0xC9, 0xD2, 0x01, 0xC9, 0xD3, 0x81, 0xC9, 0xB3, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x83, 0x00, 0xBF, 0x31, + 0x1C, 0xC0, 0xD1, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x8C, 0x62, 0x78, 0x05, 0x3F, 0x04, 0xFF, 0x04, 0xBF, 0x04, 0x9F, 0x06, 0x96, 0x07, 0xF2, 0x07, 0xF7, 0x07, 0xFC, 0x07, 0xFF, 0x2E, 0x3C, 0xB0, 0xF1, 0xB0, 0xD1, 0x01, 0xB0, 0xF1, 0x80, 0x89, 0x12, 0x01, 0xB0, 0xF1, 0x83, 0xB0, 0xD1, 0x48, 0xF0, 0x28, 0xF0, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x03, 0x20, 0xAE, 0x1A, 0x18, 0xAD, 0x01, 0x01, 0x1A, 0x80, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x82, 0x10, 0xD3, 0x01, 0x19, 0x00, 0xF9, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x06, 0x18, 0xAD, 0x82, 0x08, 0xF3, 0x01, 0x19, 0x00, 0xF6, 0x01, 0x18, 0xAD, 0x83, 0x20, 0x8D, 0x08, 0xF3, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x18, 0xAE, 0x89, 0x18, 0xCE, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF3, 0x18, 0xAD, 0x20, 0xAE, 0x18, 0xAD, 0x08, 0xF6, 0x01, 0x1A, 0x08, 0xF3, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x18, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xCF, 0x34, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x10, 0xD3, 0x08, 0xF3, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x25, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x0B, 0x18, 0xAD, 0x01, 0xC9, 0x93, 0x81, 0xC9, 0x92, 0x96, 0xDC, 0x05, 0x96, 0xDD, 0x82, 0x8D, 0x79, 0x81, 0x91, 0x91, 0x51, 0x06, 0xC0, 0xB1, 0x80, 0xAB, 0xD7, 0x09, 0x96, 0xDD, 0x82, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, + 0x06, 0xC0, 0xB1, 0x80, 0xAB, 0xD7, 0x09, 0x96, 0xDD, 0x82, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x80, 0x9D, 0x5A, 0x02, 0x96, 0xDD, 0x83, 0x95, 0xDA, 0x89, 0xF2, 0x89, 0x71, 0xB8, 0xD1, 0x01, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x0E, 0xC0, 0xB1, 0x80, 0xA4, 0x99, 0x04, 0x96, 0xDD, 0x80, 0x96, 0xDC, 0x05, 0x96, 0xDD, 0x82, 0x8C, 0x37, 0x81, 0x91, 0x99, 0x31, 0x0B, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x04, 0xC0, 0xB1, 0x85, 0xA4, 0x99, 0x96, 0xDC, 0x96, 0xDD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x11, 0x06, 0xC0, 0xB1, 0x80, 0x9D, 0x5A, 0x03, 0x96, 0xDD, 0x82, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x80, 0x9D, 0x5A, 0x06, 0x96, 0xDD, 0x82, 0x8C, 0xD8, 0x81, 0x91, 0x99, 0x51, 0x05, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x06, 0xC0, 0xB1, 0x84, 0xAC, 0x79, 0xAC, 0xF9, 0xC9, 0x92, 0xC9, 0x93, 0xC9, 0xB2, 0x01, 0xC9, 0x92, 0x02, 0xC9, 0x93, 0x02, 0xC9, 0x92, 0x02, 0xC9, 0x93, 0x02, 0x00, 0x3F, 0x83, 0x00, 0xBF, 0x01, 0x1F, 0xC0, 0xB1, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x80, 0x79, 0xD6, 0x01, 0x05, 0x1F, 0x89, 0x04, 0xFF, 0x04, 0xBF, 0x06, 0x38, 0x07, 0xF1, 0x07, 0xF7, 0x07, 0xFC, 0x07, 0xFF, 0x2E, 0x3C, 0xB0, 0xF1, 0xB0, 0xF2, 0x01, 0xB0, 0xF1, 0x80, 0x80, 0xF2, 0x01, 0xB0, 0xF1, 0x86, 0xB0, 0xF2, 0x31, 0x10, 0x30, 0xF0, 0x28, 0xCF, 0x28, 0xEF, 0x20, 0xCE, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x1A, 0x18, 0xAD, 0x83, 0x18, 0xAF, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD0, + 0x01, 0x18, 0xAD, 0x80, 0x18, 0xD1, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x06, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x18, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCE, 0x01, 0x01, 0x19, 0x82, 0x01, 0x18, 0x08, 0xF5, 0x00, 0xF8, 0x01, 0x01, 0x19, 0x80, 0x18, 0xCF, 0x02, 0x18, 0xAD, 0x82, 0x00, 0xF8, 0x01, 0x19, 0x08, 0xF3, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xD0, 0x01, 0x19, 0x16, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x1D, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xCE, 0x01, 0x17, 0x01, 0x1A, 0x01, 0x01, 0x19, 0x83, 0x01, 0x1A, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0B, 0x18, 0xAD, 0x86, 0x20, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x08, 0xF3, 0x10, 0xF3, 0x10, 0xD2, 0x18, 0xCD, 0x10, 0x18, 0xAD, 0x02, 0xC9, 0x72, 0x80, 0x8E, 0xBC, 0x01, 0x8E, 0xBD, 0x02, 0x8E, 0xBC, 0x83, 0x8E, 0xBD, 0x8D, 0x7A, 0x81, 0x91, 0x91, 0x51, 0x04, 0xC0, 0xB1, 0x83, 0xC8, 0xB1, 0xC0, 0xB1, 0xAB, 0xB7, 0x8E, 0xBD, 0x07, 0x8E, 0xBC, 0x85, 0x8E, 0xBD, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xC0, 0xB1, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x82, 0xC8, 0xB1, 0xC0, 0xB1, 0xAB, 0xB7, 0x02, 0x8E, 0xBC, 0x82, 0x8E, 0xDC, 0x8E, 0xBC, 0x8E, 0xDD, 0x01, 0x8E, 0xBC, 0x84, 0x8E, 0xBD, 0x8E, 0xBC, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, + 0xC0, 0xB1, 0x85, 0x9D, 0x39, 0x8E, 0xBD, 0x8E, 0xDD, 0x8D, 0xBA, 0x81, 0xF2, 0x91, 0x71, 0x01, 0xC0, 0xB1, 0x87, 0xC8, 0xB1, 0xC0, 0xB1, 0xC0, 0xD1, 0xC0, 0xB1, 0xC8, 0xB1, 0xC8, 0xB2, 0xC0, 0xB1, 0xC8, 0xB2, 0x01, 0xC8, 0xB1, 0x81, 0xC0, 0xD1, 0xC0, 0xB1, 0x01, 0xC0, 0xD1, 0x80, 0xC8, 0xB1, 0x01, 0xC0, 0xB1, 0x86, 0xC8, 0xB1, 0xC0, 0xB1, 0xA4, 0x37, 0x8E, 0xBC, 0x8E, 0xDD, 0x8E, 0xBC, 0x8E, 0xBD, 0x01, 0x8E, 0xBC, 0x81, 0x8E, 0xBD, 0x8E, 0xBC, 0x01, 0x8E, 0xBD, 0x82, 0x8C, 0xD8, 0x81, 0x91, 0xA1, 0x31, 0x01, 0xC0, 0xB1, 0x80, 0xC8, 0xB1, 0x01, 0xC0, 0xB1, 0x83, 0xC8, 0xB2, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x01, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x8A, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0xA4, 0xD9, 0x8E, 0xBC, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0xC0, 0xB1, 0xC8, 0xB1, 0xC0, 0xD1, 0x02, 0xC0, 0xB1, 0x81, 0xC8, 0xB1, 0x9D, 0x3A, 0x03, 0x8E, 0xBC, 0x82, 0x8C, 0x37, 0x81, 0x91, 0xA1, 0x31, 0x06, 0xC0, 0xB1, 0x80, 0x9D, 0x5A, 0x01, 0x8E, 0xBC, 0x80, 0x8E, 0xDC, 0x02, 0x8E, 0xBC, 0x89, 0x8C, 0xD8, 0x81, 0x91, 0x99, 0x51, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0xC8, 0xB2, 0xC8, 0xB1, 0xC0, 0xB1, 0xC8, 0xB1, 0x02, 0xC0, 0xB1, 0x80, 0xC0, 0xD1, 0x04, 0xC0, 0xB1, 0x02, 0xC8, 0xB1, 0x82, 0xC8, 0xD1, 0xA4, 0x78, 0xA4, 0xD9, 0x0C, 0xC9, 0x72, 0x01, 0x00, 0x3F, 0x82, 0x00, 0x1F, 0x00, 0x9F, 0x00, 0xDF, 0x04, 0xC0, 0xB1, 0x8C, 0x91, 0x74, 0x04, 0x9F, 0x05, 0x7F, 0x05, 0x1F, 0x04, 0xFF, 0x06, 0x19, 0x07, 0xF1, 0x07, + 0xF6, 0x07, 0xFC, 0x07, 0xFF, 0x35, 0xBB, 0xB0, 0xF1, 0xB0, 0xD1, 0x01, 0xB0, 0xF1, 0x80, 0x69, 0x12, 0x01, 0xB0, 0xF1, 0x80, 0x98, 0xF1, 0x01, 0x30, 0xF0, 0x82, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xEF, 0x03, 0x20, 0xCE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x1B, 0x18, 0xAD, 0x87, 0x01, 0x19, 0x01, 0x1A, 0x10, 0xD3, 0x20, 0xAD, 0x18, 0xAD, 0x10, 0xD3, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x01, 0x19, 0x01, 0x1A, 0x05, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xD0, 0x01, 0x01, 0x1A, 0x80, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x10, 0xD2, 0x01, 0x19, 0x01, 0x1A, 0x02, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x01, 0x01, 0x19, 0x81, 0x18, 0xB0, 0x18, 0xAE, 0x13, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xCD, 0x06, 0x18, 0xAD, 0x82, 0x18, 0xAF, 0x01, 0x19, 0x00, 0xF9, 0x13, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x1D, 0x18, 0xAD, 0x88, 0x18, 0xAE, 0x08, 0xF5, 0x01, 0x1A, 0x01, 0x19, 0x01, 0x17, 0x00, 0xF7, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF5, 0x01, 0x20, 0xAD, 0x81, 0x18, 0xAD, 0x20, 0xAE, 0x26, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0A, 0x18, 0xAD, 0x89, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x1A, 0x00, 0xFA, 0x01, 0x1A, 0x01, 0x19, 0x08, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x18, 0xAE, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x07, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x02, 0xC9, 0x52, 0x06, 0x8E, 0xBC, 0x84, 0x8D, 0x59, 0x81, 0x91, 0x91, 0x71, 0xC8, 0xF2, 0xC8, 0xF1, + 0x02, 0xC8, 0xF2, 0x82, 0xC8, 0xF1, 0xC8, 0xF2, 0xAB, 0xD7, 0x09, 0x8E, 0xBC, 0x84, 0x8C, 0x36, 0x81, 0x91, 0xA9, 0x31, 0xC8, 0xF2, 0xC8, 0xF1, 0x03, 0xC8, 0xF2, 0x81, 0xC0, 0xF2, 0xAB, 0xB7, 0x09, 0x8E, 0xBC, 0x82, 0x84, 0x37, 0x81, 0x91, 0xA9, 0x51, 0x01, 0xC8, 0xF1, 0x80, 0xC8, 0xF2, 0x01, 0xC8, 0xF1, 0x87, 0xC8, 0xF2, 0xC8, 0xF1, 0x9D, 0x3A, 0x8E, 0xBC, 0x8E, 0x1B, 0x81, 0xF2, 0x89, 0x71, 0xB9, 0x12, 0x01, 0xC8, 0xF1, 0x80, 0xC8, 0xF2, 0x02, 0xC8, 0xF1, 0x82, 0xC8, 0xF2, 0xC8, 0xD1, 0xC1, 0x12, 0x02, 0xC8, 0xF2, 0x8A, 0xC8, 0xD1, 0xC8, 0xF2, 0xC8, 0xD1, 0xC8, 0xF2, 0xC0, 0xF1, 0xC8, 0xF1, 0xC8, 0xF2, 0xC8, 0xF1, 0xC8, 0xF2, 0xC0, 0xF1, 0xA4, 0x98, 0x07, 0x8E, 0xBC, 0x80, 0x8D, 0xBA, 0x01, 0x89, 0x91, 0x8E, 0xC0, 0xF1, 0xC8, 0xF2, 0xC0, 0xF2, 0xC8, 0xF1, 0xC8, 0xF2, 0xC8, 0xF1, 0xC0, 0xF1, 0xC8, 0xF2, 0xC8, 0xF1, 0xC8, 0xF2, 0xC0, 0xF2, 0xC8, 0xF1, 0xC0, 0xF1, 0xC8, 0xF2, 0xC8, 0xF1, 0x02, 0xC8, 0xF2, 0x01, 0xC8, 0xF1, 0x85, 0xC0, 0xF2, 0xC1, 0x32, 0x8E, 0x5C, 0x8C, 0x17, 0x81, 0x91, 0xA9, 0x31, 0x03, 0xC8, 0xF2, 0x80, 0xC8, 0xF1, 0x01, 0xC8, 0xF2, 0x80, 0x9D, 0x59, 0x03, 0x8E, 0xBC, 0x82, 0x8C, 0x17, 0x81, 0x91, 0xA9, 0x51, 0x01, 0xC8, 0xF1, 0x80, 0xC8, 0xF2, 0x01, 0xC8, 0xF1, 0x82, 0xC8, 0xF2, 0xC8, 0xF1, 0x9D, 0x5A, 0x03, 0x8E, 0xBC, 0x84, 0x8E, 0xBD, 0x8D, 0xBA, 0x81, 0xF2, 0x89, 0x91, 0xC1, 0x11, 0x02, 0xC8, 0xF1, 0x80, 0xC0, 0xF2, 0x01, 0xC8, 0xF1, 0x83, 0xC0, 0xF2, 0xC8, 0xD2, 0xC8, 0xF1, 0xC8, 0xF2, 0x01, + 0xC0, 0xF1, 0x82, 0xC8, 0xF2, 0xC0, 0xF1, 0xC8, 0xF1, 0x01, 0xC8, 0xF2, 0x01, 0xC8, 0xF1, 0x84, 0xC8, 0xF2, 0xC1, 0x52, 0x95, 0xFB, 0xA4, 0xB8, 0xC1, 0x52, 0x02, 0xC9, 0x52, 0x80, 0xC9, 0x72, 0x06, 0xC9, 0x52, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x7F, 0x00, 0xDF, 0x68, 0xB7, 0x03, 0xC0, 0xB1, 0x8C, 0xA8, 0xF3, 0x04, 0x1F, 0x05, 0x7F, 0x05, 0x3F, 0x05, 0x1F, 0x05, 0xF9, 0x07, 0xF0, 0x07, 0xF6, 0x07, 0xFC, 0x07, 0xFF, 0x5C, 0x78, 0xB0, 0xF1, 0xB0, 0xD1, 0x01, 0xB0, 0xF1, 0x80, 0x59, 0x12, 0x01, 0xB0, 0xF1, 0x81, 0x90, 0xF1, 0x30, 0xF0, 0x01, 0x30, 0xEF, 0x81, 0x28, 0xCF, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x83, 0x20, 0xAE, 0x20, 0xCE, 0x20, 0xAD, 0x20, 0xAE, 0x1B, 0x18, 0xAD, 0x84, 0x08, 0xF4, 0x01, 0x19, 0x01, 0x1A, 0x00, 0xF7, 0x00, 0xF8, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x03, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x17, 0x01, 0x19, 0x08, 0xF6, 0x03, 0x18, 0xAD, 0x8B, 0x18, 0xCF, 0x08, 0xF3, 0x00, 0xF6, 0x08, 0xF3, 0x18, 0xAF, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF6, 0x01, 0x19, 0x01, 0x18, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x14, 0x18, 0xAD, 0x87, 0x18, 0xAE, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAD, 0x10, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x01, 0x17, 0x15, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x19, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x01, 0x19, 0x83, 0x08, 0xF3, 0x18, + 0xCD, 0x20, 0xAE, 0x10, 0xD3, 0x01, 0x01, 0x19, 0x26, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x0E, 0x18, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x81, 0x01, 0x17, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF5, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x02, 0xC9, 0x32, 0x06, 0x8E, 0xBC, 0x84, 0x8D, 0x79, 0x81, 0x91, 0x91, 0x71, 0xC1, 0x32, 0xC1, 0x31, 0x01, 0xC9, 0x12, 0x83, 0xC1, 0x32, 0xC9, 0x11, 0xC9, 0x12, 0xAB, 0xF7, 0x08, 0x8E, 0xBC, 0x85, 0x96, 0xBC, 0x8C, 0x36, 0x81, 0x91, 0xA9, 0x51, 0xC9, 0x12, 0xC9, 0x11, 0x01, 0xC9, 0x12, 0x80, 0xC1, 0x12, 0x01, 0xC9, 0x12, 0x80, 0xAB, 0xF7, 0x09, 0x8E, 0xBC, 0x82, 0x8C, 0x36, 0x81, 0x91, 0xA9, 0x51, 0x02, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x01, 0xC9, 0x12, 0x86, 0x9D, 0x59, 0x8E, 0xBC, 0x8A, 0xD4, 0x81, 0x91, 0xB1, 0x52, 0xC9, 0x12, 0xC1, 0x31, 0x05, 0xC9, 0x12, 0x80, 0xC9, 0x32, 0x03, 0xC9, 0x12, 0x82, 0xC9, 0x11, 0xC1, 0x12, 0xC9, 0x32, 0x01, 0xC9, 0x12, 0x81, 0xC9, 0x32, 0xC9, 0x11, 0x01, 0xC9, 0x12, 0x93, 0xC9, 0x32, 0xC1, 0x31, 0x9D, 0xBA, 0x8E, 0xBC, 0x96, 0xBC, 0x8E, 0xBC, 0x8E, 0xDC, 0x96, 0xBB, 0x8E, 0xBC, 0x8E, 0xDC, 0x82, 0xD4, 0x81, 0x91, 0xB9, 0x32, 0xC9, 0x12, 0xC1, 0x12, 0xC9, 0x12, 0xC1, 0x12, 0xC9, 0x12, 0xC1, 0x12, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x85, 0xC9, 0x32, 0xC9, 0x11, 0xC1, 0x31, 0xC9, 0x12, 0xC1, 0x32, 0xC1, 0x31, 0x01, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x80, 0xC1, 0x31, 0x01, 0xC9, 0x12, 0x83, 0xB3, 0x56, 0x8C, 0x36, 0x81, 0x91, 0xA1, + 0x51, 0x05, 0xC9, 0x12, 0x83, 0xC1, 0x12, 0x9D, 0x59, 0x8E, 0xBC, 0x96, 0xBC, 0x01, 0x8E, 0xBC, 0x82, 0x8C, 0x37, 0x81, 0x91, 0xA9, 0x51, 0x02, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x01, 0xC9, 0x12, 0x80, 0x9D, 0x59, 0x02, 0x8E, 0xBC, 0x84, 0x96, 0xBC, 0x8E, 0xBC, 0x82, 0xF4, 0x89, 0x91, 0xB1, 0x51, 0x01, 0xC9, 0x12, 0x80, 0xC9, 0x32, 0x01, 0xC9, 0x12, 0x82, 0xC1, 0x31, 0xC9, 0x32, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x83, 0xC9, 0x32, 0xC9, 0x11, 0xC9, 0x12, 0xC9, 0x11, 0x01, 0xC9, 0x32, 0x82, 0xC1, 0x12, 0xC9, 0x11, 0xC1, 0x32, 0x01, 0xC9, 0x12, 0x84, 0xC9, 0x32, 0xB3, 0x36, 0x96, 0xBC, 0xA4, 0xF9, 0xC1, 0x92, 0x09, 0xC9, 0x32, 0x02, 0x00, 0x1F, 0x83, 0x00, 0x7F, 0x00, 0xBF, 0x00, 0x9F, 0x90, 0xB5, 0x03, 0xC0, 0xB1, 0x8A, 0x0B, 0x9E, 0x05, 0x3F, 0x05, 0x7F, 0x05, 0x3F, 0x05, 0xDA, 0x07, 0xEF, 0x07, 0xF5, 0x07, 0xFB, 0x07, 0xFF, 0x54, 0x78, 0xB0, 0xD1, 0x01, 0xB0, 0xF1, 0x88, 0x91, 0x11, 0x59, 0x12, 0xA8, 0xF1, 0xB0, 0xF1, 0x70, 0xF1, 0x30, 0xF0, 0x28, 0xEF, 0x20, 0xEF, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x1B, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x01, 0x17, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x01, 0x1A, 0x07, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x01, 0x1A, 0x01, 0x19, 0x10, 0xD3, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, + 0x18, 0xAE, 0x16, 0x18, 0xAD, 0x84, 0x10, 0xD0, 0x00, 0xF8, 0x01, 0x19, 0x08, 0xF7, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x81, 0x18, 0xD0, 0x01, 0x18, 0x1C, 0x01, 0x19, 0x83, 0x10, 0xD0, 0x20, 0xAE, 0x18, 0xAD, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x81, 0x18, 0xAD, 0x18, 0xAE, 0x23, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x02, 0xC9, 0x12, 0x02, 0x9E, 0xDB, 0x80, 0x9E, 0xDC, 0x02, 0x9E, 0xDB, 0x82, 0x95, 0x78, 0x81, 0x91, 0x99, 0x91, 0x06, 0xC9, 0x52, 0x80, 0xB4, 0x17, 0x09, 0x9E, 0xDB, 0x82, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x72, 0x06, 0xC9, 0x52, 0x82, 0xA5, 0x18, 0x9E, 0xDB, 0x96, 0xDB, 0x07, 0x9E, 0xDB, 0x82, 0x94, 0x36, 0x81, 0x91, 0xA1, 0x71, 0x06, 0xC9, 0x52, 0x83, 0xA5, 0x79, 0x94, 0xD8, 0x81, 0x91, 0x99, 0x91, 0x04, 0xC9, 0x52, 0x80, 0xC1, 0x52, 0x04, 0xC9, 0x52, 0x85, 0xC2, 0x53, 0xC2, 0xB4, 0xB9, 0x52, 0xC1, 0x52, 0xC9, 0x52, 0xC1, 0x52, 0x07, 0xC9, 0x52, 0x80, 0xBA, 0xB5, 0x05, 0x9E, 0xDB, 0x82, 0x95, 0x99, 0x81, 0x91, 0x91, 0xB1, 0x09, 0xC9, 0x52, 0x83, 0xC1, 0xF3, 0xC2, 0xB5, 0xB9, 0x52, 0xC1, 0x52, 0x04, 0xC9, 0x52, 0x80, 0xC9, 0x72, 0x01, 0xC9, 0x52, 0x84, 0xC9, 0x72, 0xC1, 0xB2, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x72, 0x06, 0xC9, 0x52, 0x80, 0xA5, 0x79, 0x03, 0x9E, 0xDB, 0x82, 0x8C, 0x36, 0x89, 0x91, 0xA1, 0x71, 0x06, 0xC9, 0x52, 0x82, 0xA5, 0x79, 0x9E, 0xDB, + 0x9E, 0xDC, 0x01, 0x9E, 0xDB, 0x82, 0x95, 0x98, 0x81, 0x91, 0x91, 0x91, 0x03, 0xC9, 0x52, 0x82, 0xC1, 0x52, 0xC9, 0x52, 0xC1, 0x72, 0x02, 0xC9, 0x52, 0x83, 0xC1, 0xF3, 0xC2, 0xB4, 0xB9, 0x52, 0xC1, 0x52, 0x09, 0xC9, 0x52, 0x84, 0xA6, 0x1A, 0x9E, 0xDC, 0xA5, 0xDA, 0xC1, 0x72, 0xC9, 0x12, 0x01, 0xC9, 0x11, 0x01, 0xC9, 0x12, 0x80, 0xC1, 0x11, 0x02, 0xC9, 0x12, 0x02, 0x00, 0x1F, 0x80, 0x00, 0x5F, 0x01, 0x00, 0x7F, 0x82, 0x60, 0x98, 0xC0, 0xB1, 0xB8, 0xB1, 0x01, 0xC0, 0xB1, 0x89, 0x2A, 0xFC, 0x04, 0xFF, 0x05, 0xBF, 0x05, 0x5F, 0x05, 0xFB, 0x07, 0xCF, 0x07, 0xF4, 0x07, 0xFC, 0x07, 0xFF, 0x5C, 0x79, 0x02, 0xB0, 0xF1, 0x81, 0x81, 0x12, 0x59, 0x12, 0x01, 0xB0, 0xF1, 0x85, 0x68, 0xF1, 0x30, 0xF0, 0x30, 0xEF, 0x30, 0xCF, 0x28, 0xCF, 0x20, 0xCF, 0x01, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x1A, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xD2, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x20, 0xAE, 0x18, 0xAD, 0x01, 0x19, 0x01, 0x1A, 0x06, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x00, 0xF6, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD2, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x80, 0x10, 0xD3, 0x01, 0x01, 0x19, 0x80, 0x08, 0xD6, 0x18, 0x18, 0xAD, 0x89, 0x20, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xD0, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x20, 0xAD, 0x13, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x10, 0xCF, + 0x00, 0xF8, 0x1D, 0x01, 0x19, 0x83, 0x08, 0xF3, 0x18, 0xAD, 0x18, 0xAE, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x83, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAE, 0x21, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x0F, 0x01, 0x19, 0x81, 0x00, 0xF9, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD0, 0x01, 0x01, 0x19, 0x0F, 0x18, 0xAD, 0x01, 0xC8, 0xF1, 0x81, 0xC8, 0xF2, 0xA6, 0xFB, 0x01, 0xA6, 0xFA, 0x87, 0xA6, 0xFB, 0xA6, 0xFA, 0xA6, 0xDA, 0xA6, 0xFA, 0x9D, 0x98, 0x81, 0x91, 0x91, 0x91, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x80, 0xC9, 0x72, 0x02, 0xC9, 0x92, 0x81, 0xB4, 0x36, 0xA6, 0xFB, 0x08, 0xA6, 0xFA, 0x82, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x92, 0x01, 0xC9, 0x92, 0x02, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x80, 0xAD, 0x98, 0x01, 0xA6, 0xDA, 0x07, 0xA6, 0xFA, 0x83, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x92, 0xC9, 0x93, 0x05, 0xC9, 0x92, 0x83, 0xAD, 0x99, 0x8A, 0x32, 0x89, 0x91, 0xC1, 0x92, 0x01, 0xC9, 0x92, 0x80, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x80, 0xC9, 0x73, 0x02, 0xC9, 0x92, 0x81, 0xBC, 0x36, 0xA6, 0x9A, 0x01, 0xA6, 0xFA, 0x84, 0xA6, 0x9A, 0x93, 0x95, 0x89, 0x91, 0xB9, 0x92, 0xC9, 0x93, 0x01, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x81, 0xC9, 0x72, 0xC9, 0x92, 0x01, 0xC9, 0x72, 0x88, 0xAD, 0x98, 0xA6, 0xDB, 0xA6, 0xDA, 0xA6, 0xFA, 0xA6, 0xFB, 0xA6, 0xFA, 0x93, 0x95, 0x81, 0x91, 0xB1, 0x92, 0x02, 0xC9, 0x92, 0x80, 0xC9, 0x93, 0x01, 0xC9, 0x72, 0x8A, 0xC9, 0x92, 0xC9, 0x72, 0xC2, 0x33, 0xAD, 0x98, 0xA6, 0xFA, 0xA6, 0xFB, 0xA6, 0x39, 0x8A, 0x93, 0x99, 0x92, + 0xC1, 0x92, 0xC9, 0x72, 0x02, 0xC9, 0x92, 0x81, 0xC9, 0x72, 0xC9, 0x92, 0x01, 0xC9, 0x72, 0x82, 0x9A, 0x93, 0x81, 0x91, 0xA9, 0x92, 0x06, 0xC9, 0x92, 0x82, 0xAD, 0x98, 0xA6, 0xFA, 0xA6, 0xFB, 0x01, 0xA6, 0xFA, 0x83, 0x94, 0x36, 0x81, 0x91, 0xA9, 0x92, 0xC9, 0x93, 0x05, 0xC9, 0x92, 0x80, 0xAD, 0x98, 0x01, 0xA6, 0xDA, 0x87, 0xA6, 0xFA, 0xA6, 0xDA, 0x8B, 0x95, 0x81, 0x91, 0xB1, 0x92, 0xC9, 0x72, 0xC9, 0x92, 0xC9, 0x72, 0x01, 0xC9, 0x92, 0x8C, 0xC9, 0x72, 0xC9, 0x92, 0xC9, 0x72, 0xC2, 0x94, 0xAD, 0xF9, 0xA6, 0xFA, 0xA6, 0xDA, 0xA6, 0x9A, 0x93, 0x34, 0x91, 0x91, 0xB9, 0x92, 0xC9, 0x92, 0xC9, 0x93, 0x05, 0xC9, 0x92, 0x80, 0xB4, 0x97, 0x01, 0xAE, 0xFB, 0x84, 0xB5, 0xD9, 0xC9, 0x52, 0xC8, 0xF1, 0xC8, 0xF2, 0xC0, 0xF1, 0x04, 0xC8, 0xF1, 0x02, 0x00, 0x1F, 0x91, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0x5F, 0x78, 0x97, 0xC0, 0xB1, 0xC0, 0xD1, 0xC0, 0xB1, 0xB8, 0xD1, 0x62, 0x38, 0x04, 0xDF, 0x05, 0xBF, 0x05, 0x9F, 0x05, 0xFA, 0x07, 0xCE, 0x07, 0xF4, 0x07, 0xFC, 0x07, 0xFF, 0x5C, 0x78, 0x02, 0xB0, 0xF1, 0x86, 0x71, 0x12, 0x59, 0x12, 0xB0, 0xF1, 0xA8, 0xF1, 0x51, 0x10, 0x30, 0xF0, 0x30, 0xCF, 0x02, 0x28, 0xCF, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x1F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF6, 0x18, 0xD0, 0x01, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x10, 0xD0, 0x08, + 0xF6, 0x01, 0x01, 0x19, 0x84, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xD0, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x83, 0x10, 0xCF, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x19, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF5, 0x24, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x04, 0x01, 0x19, 0x80, 0x01, 0x1A, 0x0B, 0x01, 0x19, 0x80, 0x08, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x08, 0xF3, 0x01, 0x01, 0x19, 0x0D, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0xC0, 0xD1, 0x80, 0xC8, 0xD2, 0x02, 0xB7, 0x1A, 0x86, 0xAE, 0xFA, 0xB7, 0x1A, 0xAF, 0x1A, 0xAE, 0xFA, 0xA5, 0x98, 0x81, 0x91, 0x91, 0x91, 0x01, 0xC9, 0xB3, 0x01, 0xC9, 0xD3, 0x83, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xD3, 0xBC, 0x76, 0x09, 0xB7, 0x1A, 0x82, 0x9C, 0x55, 0x81, 0x91, 0xA9, 0xB2, 0x01, 0xC9, 0xD3, 0x82, 0xC9, 0xB3, 0xC9, 0xB2, 0xC9, 0xB3, 0x01, 0xC9, 0xD3, 0x84, 0xB5, 0xB8, 0xB7, 0x1A, 0xAF, 0x1A, 0xB7, 0x1A, 0xB6, 0xFA, 0x03, 0xB7, 0x1A, 0x84, 0xB6, 0xFA, 0xAF, 0x1A, 0x9C, 0x56, 0x81, 0x91, 0xA9, 0x92, 0x06, 0xC9, 0xB3, 0x95, 0xA3, 0xB5, 0x81, 0x91, 0x99, 0x92, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xD2, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xD3, 0xCA, 0x13, 0xBD, 0xB8, 0xAE, 0xFA, 0xAF, 0x1A, 0xB7, 0x1A, 0xB6, 0xFA, 0xAE, + 0xFA, 0xAF, 0x19, 0xA4, 0xF7, 0x89, 0x91, 0xB1, 0xB2, 0x04, 0xC9, 0xB3, 0x80, 0xC9, 0xD2, 0x01, 0xC9, 0xB3, 0x80, 0xC3, 0x14, 0x01, 0xAF, 0x1A, 0x80, 0xAE, 0xF9, 0x01, 0xAF, 0x1A, 0x82, 0x89, 0xF1, 0x81, 0x91, 0xC1, 0xB2, 0x02, 0xC9, 0xB3, 0x01, 0xC9, 0xB2, 0x8B, 0xC9, 0xD3, 0xC9, 0xB3, 0xCA, 0xB4, 0xB6, 0xB9, 0xAF, 0x1A, 0xB7, 0x1A, 0xAE, 0xFA, 0xB7, 0x1A, 0xB6, 0xB9, 0x8A, 0x93, 0x89, 0x91, 0xC1, 0xD2, 0x03, 0xC9, 0xB3, 0x88, 0xC9, 0xB2, 0xC9, 0xD3, 0xC9, 0xB2, 0xA9, 0x92, 0x81, 0x91, 0xA9, 0xB2, 0xC9, 0xD3, 0xC9, 0xB3, 0xC9, 0xD3, 0x02, 0xC9, 0xB2, 0x88, 0xC9, 0xB3, 0xB5, 0xB8, 0xAF, 0x1A, 0xAE, 0xFA, 0xAF, 0x1A, 0xB7, 0x1A, 0x9C, 0x56, 0x81, 0x91, 0xA9, 0x92, 0x06, 0xC9, 0xB3, 0x81, 0xB5, 0xB8, 0xB6, 0xFA, 0x01, 0xAF, 0x1A, 0x86, 0xB6, 0xFA, 0x89, 0xF2, 0x81, 0x91, 0xC1, 0xB2, 0xC9, 0xB3, 0xC9, 0xB2, 0xC9, 0xD3, 0x01, 0xC9, 0xB3, 0x84, 0xC9, 0xB2, 0xC9, 0xD3, 0xCA, 0xB4, 0xB6, 0xB9, 0xAF, 0x1A, 0x01, 0xB7, 0x1A, 0x85, 0xB6, 0xFA, 0xB7, 0x1A, 0x92, 0xF3, 0x89, 0xB1, 0xC1, 0xB2, 0xC9, 0xD3, 0x01, 0xC9, 0xB3, 0x01, 0xC9, 0xD3, 0x82, 0xC9, 0xB3, 0xC9, 0xD3, 0xC3, 0x15, 0x02, 0xB7, 0x1A, 0x82, 0xBD, 0xD9, 0xC1, 0x32, 0xC0, 0xD1, 0x03, 0xC8, 0xD1, 0x01, 0xC0, 0xD1, 0x02, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x7F, 0x86, 0x68, 0x78, 0xB8, 0xB1, 0xC0, 0xB1, 0xC0, 0xD1, 0xB8, 0xD1, 0x99, 0x54, 0x04, 0x7F, 0x01, 0x05, 0xBF, 0x85, 0x06, 0x1A, 0x07, 0xCE, 0x07, 0xF2, 0x07, 0xFC, 0x07, 0xFF, 0x5C, 0x78, 0x02, 0xB0, 0xF1, + 0x81, 0x61, 0x12, 0x59, 0x12, 0x01, 0xA8, 0xF1, 0x82, 0x60, 0xF0, 0x30, 0xF0, 0x28, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x81, 0x20, 0xAE, 0x20, 0xAD, 0x1C, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x01, 0x19, 0x00, 0xF9, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x08, 0xF6, 0x02, 0x01, 0x19, 0x84, 0x01, 0x18, 0x00, 0xF6, 0x10, 0xD3, 0x08, 0xF6, 0x01, 0x18, 0x02, 0x01, 0x19, 0x81, 0x08, 0xF7, 0x18, 0xCE, 0x1A, 0x18, 0xAD, 0x85, 0x20, 0x8D, 0x18, 0xB0, 0x00, 0xF8, 0x01, 0x39, 0x00, 0xF7, 0x18, 0xCE, 0x19, 0x18, 0xAD, 0x84, 0x18, 0xAF, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x1A, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x24, 0x18, 0xAD, 0x83, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x0C, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x00, 0xF7, 0x01, 0x01, 0x19, 0x80, 0x08, 0xF4, 0x0E, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0xC0, 0xB1, 0xC8, 0xB1, 0xC0, 0xB1, 0x06, 0xBF, 0x19, 0x82, 0xA4, 0xB5, 0x81, 0x91, 0xA1, 0xB2, 0x05, 0xC9, 0xF3, 0x81, 0xD1, 0xF3, 0xC4, 0x96, 0x09, 0xBF, 0x19, 0x82, 0xA4, 0x55, 0x81, 0x91, 0xA9, 0xD2, 0x06, 0xC9, 0xF3, 0x80, 0xBD, 0xD8, 0x02, 0xBF, 0x19, 0x80, 0xBF, 0x39, 0x01, 0xBF, 0x19, 0x81, 0xBF, 0x39, 0xBF, 0x19, 0x01, 0xBF, 0x39, 0x82, 0xA4, 0x55, 0x81, 0x91, 0xA9, 0xD2, 0x06, 0xC9, 0xF3, 0x82, 0x99, 0xF2, 0x89, 0x91, 0xB1, 0xD2, 0x06, 0xC9, 0xF3, + 0x82, 0xC9, 0xF2, 0xC5, 0x77, 0xBF, 0x19, 0x01, 0xBF, 0x39, 0x04, 0xBF, 0x19, 0x82, 0x9B, 0xF5, 0x81, 0x91, 0xB1, 0xD2, 0x01, 0xC9, 0xF3, 0x80, 0xD1, 0xF3, 0x04, 0xC9, 0xF3, 0x80, 0xBE, 0x78, 0x02, 0xBF, 0x19, 0x82, 0xB6, 0xB9, 0x81, 0x91, 0x89, 0x91, 0x01, 0xC9, 0xF3, 0x80, 0xC9, 0xF2, 0x01, 0xC9, 0xF3, 0x80, 0xC9, 0xD3, 0x01, 0xC9, 0xF3, 0x80, 0xBE, 0xD8, 0x04, 0xBF, 0x19, 0x85, 0xBF, 0x39, 0xAD, 0x57, 0x81, 0x91, 0x99, 0xB2, 0xC9, 0xF3, 0xC9, 0xF2, 0x04, 0xC9, 0xF3, 0x82, 0xB9, 0xD3, 0x81, 0x91, 0xA9, 0xB2, 0x06, 0xC9, 0xF3, 0x80, 0xBD, 0xD8, 0x03, 0xBF, 0x19, 0x82, 0x9C, 0x75, 0x81, 0x91, 0xA9, 0xD2, 0x06, 0xC9, 0xF3, 0x80, 0xBD, 0xD8, 0x02, 0xBF, 0x19, 0x80, 0xB6, 0xB8, 0x01, 0x81, 0x91, 0x07, 0xC9, 0xF3, 0x84, 0xBE, 0x78, 0xBF, 0x19, 0xBF, 0x39, 0xBF, 0x19, 0xBF, 0x39, 0x01, 0xBF, 0x19, 0x82, 0xAD, 0xB7, 0x81, 0x91, 0x91, 0xB1, 0x02, 0xC9, 0xF3, 0x80, 0xC9, 0xF2, 0x03, 0xC9, 0xF3, 0x87, 0xC7, 0x1A, 0xBF, 0x1A, 0xC7, 0x3A, 0xBF, 0x3A, 0xC6, 0x59, 0xC9, 0xD3, 0xC0, 0xB1, 0xC8, 0xB1, 0x01, 0xC0, 0xB1, 0x81, 0xC8, 0xB1, 0xC0, 0xB1, 0x02, 0x00, 0x1F, 0x85, 0x00, 0x3F, 0x00, 0x5F, 0x00, 0x3F, 0x00, 0x1F, 0x70, 0x76, 0xC0, 0xD1, 0x02, 0xB8, 0xD1, 0x88, 0x0B, 0xFF, 0x05, 0xDF, 0x05, 0xBF, 0x06, 0x39, 0x07, 0xCD, 0x07, 0xF2, 0x07, 0xFC, 0x07, 0xFF, 0x63, 0xF7, 0x02, 0xB0, 0xF1, 0x88, 0x41, 0x32, 0x41, 0x11, 0xA0, 0xF1, 0xB0, 0xF1, 0x90, 0xF1, 0x30, 0xF0, 0x28, 0xEF, 0x28, 0xCE, 0x28, 0xCF, 0x03, 0x20, 0xCE, 0x81, 0x20, + 0xAE, 0x20, 0xAD, 0x1D, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x81, 0x01, 0x19, 0x00, 0xF9, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x81, 0x10, 0xD1, 0x01, 0x18, 0x06, 0x01, 0x19, 0x81, 0x00, 0xF8, 0x10, 0xD2, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x16, 0x18, 0xAD, 0x84, 0x10, 0xCF, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x01, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x84, 0x10, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x1B, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x10, 0xD1, 0x01, 0x08, 0xF3, 0x83, 0x10, 0xD2, 0x18, 0xCD, 0x20, 0xAD, 0x18, 0xAE, 0x21, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x81, 0x18, 0xCE, 0x00, 0xF7, 0x03, 0x01, 0x19, 0x83, 0x00, 0xF7, 0x18, 0xCE, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x18, 0xAE, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x02, 0xC0, 0xB1, 0x06, 0xC7, 0x38, 0x83, 0xA4, 0x75, 0x89, 0x91, 0xA9, 0xD2, 0xCA, 0x13, 0x01, 0xCA, 0x33, 0x81, 0xCA, 0x34, 0xCA, 0x13, 0x01, 0xCA, 0x33, 0x80, 0xCC, 0xB6, 0x09, 0xC7, 0x38, 0x82, 0xA4, 0x55, 0x81, 0x91, 0xA9, 0xD2, 0x01, 0xCA, 0x33, 0x80, 0xCA, 0x13, 0x02, 0xCA, 0x33, 0x81, 0xD2, 0x13, 0xC5, 0xF7, 0x03, 0xC7, 0x38, 0x80, 0xC7, 0x39, 0x04, + 0xC7, 0x38, 0x83, 0xA4, 0x75, 0x81, 0x91, 0xA9, 0xD2, 0xCA, 0x13, 0x03, 0xCA, 0x33, 0x84, 0xCA, 0x13, 0xCA, 0x33, 0x91, 0xB1, 0x81, 0x91, 0xCA, 0x13, 0x03, 0xCA, 0x33, 0x85, 0xCA, 0x13, 0xCA, 0x33, 0xCA, 0x13, 0xC4, 0x55, 0xC7, 0x38, 0xC7, 0x39, 0x03, 0xC7, 0x38, 0x80, 0xC7, 0x39, 0x02, 0xC7, 0x38, 0x82, 0x8A, 0x52, 0x89, 0x91, 0xC2, 0x13, 0x03, 0xCA, 0x13, 0x83, 0xCA, 0x33, 0xCA, 0x13, 0xCA, 0x33, 0xCD, 0x56, 0x01, 0xC7, 0x38, 0x83, 0xC7, 0x39, 0xB5, 0xD7, 0x81, 0x91, 0x91, 0xB1, 0x02, 0xCA, 0x13, 0x80, 0xD2, 0x33, 0x02, 0xCA, 0x33, 0x81, 0xCB, 0x55, 0xCF, 0x38, 0x04, 0xC7, 0x38, 0x81, 0xC7, 0x39, 0xC7, 0x38, 0x01, 0x81, 0x91, 0x02, 0xCA, 0x13, 0x86, 0xCA, 0x33, 0xCA, 0x13, 0xCA, 0x33, 0xD2, 0x33, 0xCA, 0x13, 0x81, 0x91, 0xA9, 0xD2, 0x01, 0xCA, 0x33, 0x01, 0xCA, 0x13, 0x83, 0xCA, 0x33, 0xCA, 0x13, 0xCA, 0x33, 0xCD, 0xF7, 0x02, 0xC7, 0x38, 0x84, 0xC7, 0x39, 0xA4, 0x75, 0x81, 0x91, 0xA9, 0xD2, 0xCA, 0x13, 0x03, 0xCA, 0x33, 0x82, 0xCA, 0x13, 0xCA, 0x33, 0xC5, 0xF7, 0x02, 0xC7, 0x38, 0x82, 0xB5, 0xD6, 0x81, 0x91, 0x99, 0xB2, 0x01, 0xCA, 0x33, 0x80, 0xD2, 0x13, 0x03, 0xCA, 0x33, 0x81, 0xCB, 0x74, 0xC7, 0x39, 0x03, 0xC7, 0x38, 0x80, 0xC7, 0x39, 0x01, 0xC7, 0x38, 0x82, 0x8A, 0xB2, 0x81, 0x91, 0xBA, 0x13, 0x01, 0xCA, 0x13, 0x81, 0xCA, 0x33, 0xCA, 0x13, 0x01, 0xCA, 0x33, 0x87, 0xCA, 0x13, 0xCF, 0x39, 0xC7, 0x39, 0xC7, 0x59, 0xCF, 0x3A, 0xCF, 0x39, 0xCE, 0xD9, 0xC9, 0xF3, 0x04, 0xC0, 0xB1, 0x03, 0x00, 0x1F, 0x01, 0x00, 0x3F, + 0x01, 0x00, 0x1F, 0x80, 0x98, 0x94, 0x02, 0xB8, 0xD1, 0x8E, 0x42, 0xDA, 0x05, 0x9F, 0x05, 0xFF, 0x06, 0x78, 0x07, 0xCC, 0x07, 0xF1, 0x07, 0xFC, 0x07, 0xFF, 0x82, 0xB5, 0xA8, 0xF1, 0xB0, 0xF1, 0x98, 0xF2, 0x41, 0x32, 0x39, 0x12, 0x70, 0xF1, 0x01, 0xA8, 0xF1, 0x80, 0x50, 0xF0, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x1F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0D, 0x18, 0xAD, 0x86, 0x18, 0xCF, 0x10, 0xD4, 0x08, 0xF5, 0x08, 0xF6, 0x08, 0xF4, 0x08, 0xD3, 0x10, 0xCF, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x14, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x84, 0x10, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAE, 0x0D, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x84, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x1C, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x1F, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xCF, 0x0E, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x83, 0x10, 0xD2, 0x10, 0xD3, 0x08, 0xF3, 0x10, 0xD2, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0A, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x02, 0xC0, 0xB1, 0x80, 0xCF, 0x57, 0x01, 0xD7, 0x58, 0x89, 0xCF, 0x58, 0xD7, 0x58, 0xCF, 0x58, 0xD7, 0x58, 0xAC, 0x74, 0x81, 0x91, 0xA9, 0xF2, 0xCA, 0x53, 0xD2, 0x53, 0xCA, 0x54, + 0x02, 0xCA, 0x53, 0x82, 0xCA, 0x54, 0xCC, 0xD6, 0xCF, 0x58, 0x07, 0xD7, 0x58, 0x83, 0xCF, 0x58, 0xAC, 0x75, 0x81, 0x91, 0xA9, 0xF2, 0x01, 0xCA, 0x53, 0x80, 0xD2, 0x53, 0x02, 0xCA, 0x53, 0x86, 0xD2, 0x54, 0xCE, 0x17, 0xCF, 0x57, 0xD7, 0x58, 0xCF, 0x58, 0xD7, 0x58, 0xCF, 0x58, 0x01, 0xD7, 0x58, 0x88, 0xCF, 0x58, 0xD7, 0x58, 0xCF, 0x58, 0xAC, 0x74, 0x81, 0x91, 0xA9, 0xF2, 0xCA, 0x53, 0xCA, 0x54, 0xD2, 0x53, 0x01, 0xCA, 0x53, 0x83, 0xCA, 0x54, 0xCA, 0x53, 0x99, 0xD2, 0x89, 0xB1, 0x03, 0xCA, 0x53, 0x80, 0xD2, 0x53, 0x01, 0xCA, 0x53, 0x8E, 0xCA, 0x54, 0xD6, 0xB7, 0xD7, 0x58, 0xCF, 0x58, 0xCF, 0x57, 0xCF, 0x58, 0xD7, 0x58, 0xD7, 0x57, 0xD7, 0x58, 0xD7, 0x57, 0xD7, 0x58, 0xCF, 0x58, 0xB5, 0x35, 0x81, 0x91, 0xA1, 0xD2, 0x02, 0xCA, 0x53, 0x81, 0xD2, 0x54, 0xCA, 0x73, 0x01, 0xCA, 0x53, 0x80, 0xCC, 0x95, 0x01, 0xD7, 0x58, 0x83, 0xCF, 0x58, 0xBD, 0xD6, 0x81, 0x91, 0x99, 0xD2, 0x01, 0xCA, 0x53, 0x80, 0xCA, 0x54, 0x01, 0xCA, 0x53, 0x82, 0xD2, 0x54, 0xCA, 0x54, 0xD4, 0x35, 0x01, 0xD7, 0x58, 0x80, 0xCF, 0x58, 0x01, 0xD7, 0x58, 0x86, 0xCF, 0x57, 0xD7, 0x38, 0xCF, 0x58, 0x9A, 0xF3, 0x89, 0x91, 0xC2, 0x13, 0xCA, 0x54, 0x01, 0xCA, 0x53, 0x86, 0xD2, 0x53, 0xCA, 0x53, 0xCA, 0x54, 0xCA, 0x73, 0x81, 0x91, 0xA9, 0xF2, 0xCA, 0x53, 0x01, 0xD2, 0x53, 0x85, 0xCA, 0x54, 0xD2, 0x53, 0xCA, 0x53, 0xCA, 0x54, 0xCE, 0x17, 0xCF, 0x58, 0x01, 0xD7, 0x58, 0x86, 0xCF, 0x58, 0xAC, 0x74, 0x81, 0x91, 0xA9, 0xF2, 0xCA, 0x53, 0xCA, 0x54, 0xD2, 0x53, 0x01, 0xCA, + 0x53, 0x83, 0xCA, 0x54, 0xCA, 0x53, 0xD6, 0x17, 0xD7, 0x58, 0x01, 0xCF, 0x58, 0x84, 0xBD, 0xD6, 0x81, 0x91, 0x91, 0xB2, 0xCA, 0x53, 0xD2, 0x54, 0x01, 0xCA, 0x53, 0x80, 0xCA, 0x54, 0x01, 0xD2, 0x53, 0x80, 0xCC, 0xD6, 0x03, 0xD7, 0x58, 0x8D, 0xCF, 0x57, 0xD7, 0x57, 0xCF, 0x58, 0xD7, 0x58, 0x9A, 0xF3, 0x81, 0x91, 0xBA, 0x33, 0xCA, 0x54, 0xCA, 0x53, 0xD2, 0x53, 0xCA, 0x54, 0xCA, 0x53, 0xD2, 0x53, 0xCA, 0x53, 0x01, 0xD7, 0x58, 0x81, 0xDF, 0x59, 0xD7, 0x79, 0x01, 0xD7, 0x59, 0x81, 0xD6, 0xF9, 0xC1, 0xF2, 0x03, 0xC0, 0xB1, 0x02, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x03, 0x00, 0x1F, 0x81, 0x18, 0x3E, 0xB0, 0xD2, 0x01, 0xB8, 0xD1, 0x88, 0x99, 0x74, 0x05, 0x9F, 0x06, 0x1F, 0x06, 0x98, 0x07, 0xCC, 0x07, 0xF0, 0x07, 0xFC, 0x07, 0xFF, 0x82, 0xB5, 0x01, 0xB0, 0xF1, 0x89, 0x88, 0xF1, 0x41, 0x32, 0x41, 0x11, 0x39, 0x10, 0x98, 0xF1, 0xA8, 0xF2, 0x88, 0xF1, 0x28, 0xEF, 0x28, 0xCF, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x01, 0x20, 0xAE, 0x1F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x16, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x10, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x84, 0x10, 0xD0, 0x01, 0x18, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x17, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x10, 0xCF, 0x01, 0x18, 0x00, 0xF9, 0x08, 0xF7, 0x18, 0xAE, 0x22, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x1F, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x01, 0x18, 0x10, + 0xD0, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x09, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x02, 0xC0, 0xB1, 0x06, 0xDF, 0x77, 0x84, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x12, 0xCA, 0x94, 0xCA, 0x74, 0x03, 0xCA, 0x94, 0x81, 0xD2, 0x94, 0xD4, 0xF5, 0x09, 0xDF, 0x77, 0x82, 0xB4, 0x74, 0x81, 0x91, 0xAA, 0x12, 0x01, 0xCA, 0x94, 0x85, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xDE, 0x36, 0x01, 0xDF, 0x77, 0x80, 0xDF, 0x57, 0x06, 0xDF, 0x77, 0x83, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x12, 0xCA, 0x94, 0x05, 0xD2, 0x94, 0x86, 0x99, 0xD2, 0x91, 0xD2, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x80, 0xD3, 0xD4, 0x02, 0xDF, 0x77, 0x80, 0xDF, 0x76, 0x04, 0xDF, 0x77, 0x80, 0xDF, 0x57, 0x01, 0xDF, 0x77, 0x81, 0x81, 0x91, 0x89, 0x92, 0x02, 0xCA, 0x94, 0x84, 0xD2, 0x94, 0xCA, 0x94, 0xCA, 0x93, 0xCA, 0x94, 0xD3, 0xD5, 0x02, 0xDF, 0x77, 0x82, 0xC5, 0xF5, 0x81, 0x91, 0x99, 0xD2, 0x01, 0xCA, 0x94, 0x85, 0xD2, 0x73, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xD5, 0x15, 0x07, 0xDF, 0x77, 0x82, 0x9B, 0x12, 0x81, 0x91, 0xBA, 0x53, 0x01, 0xCA, 0x94, 0x86, 0xD2, 0x94, 0xCA, 0x94, 0xCA, 0x93, 0xD2, 0x94, 0xCA, 0x94, 0x81, 0x91, 0xAA, 0x12, 0x02, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x01, 0xD2, 0x94, 0x80, 0xDE, 0x36, 0x01, 0xDF, 0x77, 0x85, 0xDF, 0x57, 0xDF, 0x77, 0xB4, 0x74, 0x81, 0x91, 0xAA, 0x12, 0xCA, 0x94, + 0x05, 0xD2, 0x94, 0x80, 0xDE, 0x36, 0x02, 0xDF, 0x77, 0x83, 0xC5, 0xF5, 0x81, 0x91, 0x99, 0xD2, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x80, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x81, 0xCA, 0x93, 0xD4, 0xF5, 0x07, 0xDF, 0x77, 0x83, 0x9B, 0x12, 0x81, 0x91, 0xBA, 0x53, 0xD2, 0x94, 0x01, 0xCA, 0x94, 0x83, 0xD2, 0x94, 0xCA, 0x94, 0xD2, 0x94, 0xCA, 0x94, 0x05, 0xDF, 0x78, 0x81, 0xE7, 0x79, 0xDF, 0x19, 0x03, 0xC0, 0xB1, 0x08, 0x00, 0x1F, 0x80, 0x38, 0x5B, 0x02, 0xB8, 0xD1, 0x86, 0x2C, 0x3C, 0x06, 0x1F, 0x06, 0xB7, 0x07, 0xCB, 0x07, 0xF0, 0x07, 0xFB, 0x07, 0xFF, 0x01, 0xB0, 0xF1, 0x88, 0xA8, 0xF1, 0x79, 0x12, 0x41, 0x32, 0x41, 0x11, 0x39, 0x11, 0x41, 0x10, 0xA0, 0xF1, 0xA8, 0xF1, 0x48, 0xEF, 0x01, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x81, 0x20, 0xAD, 0x20, 0xAE, 0x1F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x10, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x1A, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x84, 0x10, 0xCF, 0x01, 0x18, 0x00, 0xF9, 0x08, 0xF7, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x84, 0x10, 0xCF, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x18, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x08, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x1F, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x10, 0xCF, 0x12, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0x8E, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0E, 0x18, 0xAD, 0x01, 0xB8, 0xD1, 0x82, 0xC0, 0xD1, 0xE7, 0x76, 0xE7, + 0x96, 0x01, 0xE7, 0x97, 0x02, 0xE7, 0x96, 0x82, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x33, 0x02, 0xD2, 0xB4, 0x81, 0xCA, 0xB4, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x81, 0xDD, 0x35, 0xE7, 0x76, 0x08, 0xE7, 0x96, 0x82, 0xB4, 0x74, 0x81, 0x91, 0xAA, 0x33, 0x02, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x85, 0xCA, 0xD4, 0xD2, 0xD4, 0xE6, 0x56, 0xEF, 0x96, 0xE7, 0x76, 0xE7, 0x97, 0x01, 0xE7, 0x96, 0x81, 0xE7, 0x76, 0xE7, 0x77, 0x02, 0xE7, 0x96, 0x82, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x33, 0x06, 0xD2, 0xB4, 0x84, 0x99, 0xD2, 0x99, 0xF2, 0xCA, 0xB4, 0xD2, 0xB4, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x85, 0xCA, 0xD4, 0xD2, 0xB4, 0xD3, 0xF5, 0xE7, 0x77, 0xE7, 0x97, 0xEF, 0x97, 0x01, 0xE7, 0x96, 0x81, 0xE7, 0x76, 0xE7, 0x77, 0x02, 0xE7, 0x96, 0x81, 0xE7, 0x77, 0xEF, 0x97, 0x01, 0x81, 0x91, 0x01, 0xD2, 0xB4, 0x01, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x81, 0xCA, 0xD4, 0xD3, 0xD5, 0x02, 0xE7, 0x96, 0x85, 0xCE, 0x15, 0x81, 0x91, 0x99, 0xF2, 0xCA, 0xD4, 0xD2, 0xB4, 0xD2, 0xD4, 0x01, 0xD2, 0xB4, 0x85, 0xCA, 0xB4, 0xD2, 0xB4, 0xDD, 0x35, 0xE7, 0x77, 0xEF, 0x76, 0xE7, 0x96, 0x01, 0xE7, 0x97, 0x86, 0xE7, 0x76, 0xE7, 0x96, 0xE7, 0x76, 0xC5, 0x34, 0xB4, 0x94, 0xCC, 0x15, 0xD3, 0xF5, 0x01, 0xDB, 0xF4, 0x85, 0xDB, 0xF5, 0xD3, 0xF5, 0xD3, 0xF4, 0xCB, 0x34, 0x81, 0x91, 0xAA, 0x32, 0x03, 0xD2, 0xB4, 0x84, 0xD2, 0xD4, 0xD2, 0xB4, 0xCA, 0xB4, 0xE6, 0x56, 0xE7, 0x76, 0x01, 0xE7, 0x96, 0x83, 0xE7, 0x76, 0xB4, 0x94, 0x81, 0x91, 0xAA, 0x33, 0x06, 0xD2, 0xB4, 0x80, 0xDE, 0x56, 0x02, 0xE7, + 0x96, 0x82, 0xCE, 0x15, 0x81, 0x91, 0x99, 0xF2, 0x01, 0xD2, 0xB4, 0x82, 0xD2, 0xD4, 0xD2, 0xB4, 0xD2, 0xD4, 0x01, 0xCA, 0xD4, 0x80, 0xDD, 0x15, 0x01, 0xE7, 0x96, 0x82, 0xE7, 0x76, 0xE7, 0x96, 0xEF, 0x96, 0x02, 0xE7, 0x96, 0x82, 0x9B, 0x13, 0x81, 0x91, 0xBA, 0x73, 0x06, 0xD2, 0xB4, 0x84, 0xE7, 0x97, 0xEF, 0x97, 0xEF, 0x77, 0xEF, 0x97, 0xEF, 0x78, 0x02, 0xEF, 0x98, 0x83, 0xC9, 0x92, 0xB8, 0xD1, 0xC0, 0xD1, 0xC0, 0xB1, 0x09, 0x00, 0x1F, 0x80, 0x70, 0x96, 0x01, 0xB8, 0xD1, 0x86, 0x8A, 0x35, 0x06, 0x3F, 0x06, 0xD6, 0x07, 0xEA, 0x07, 0xF1, 0x07, 0xFC, 0x07, 0xFF, 0x02, 0xA8, 0xF1, 0x89, 0x61, 0x32, 0x41, 0x32, 0x41, 0x11, 0x38, 0xF1, 0x31, 0x10, 0x48, 0xF0, 0xA8, 0xF1, 0x98, 0xF1, 0x30, 0xCF, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x82, 0x20, 0xAE, 0x20, 0xAD, 0x20, 0xAE, 0x1F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0E, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x1F, 0x18, 0xAD, 0x84, 0x10, 0xD0, 0x00, 0xF9, 0x01, 0x19, 0x08, 0xF7, 0x18, 0xAE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x14, 0x18, 0xAD, 0x86, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xCF, 0x00, 0xF8, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x20, 0x18, 0xAD, 0x80, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x01, 0x18, 0xCD, 0x1F, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x18, 0xD0, 0x11, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x0D, 0x18, 0xAD, 0x02, + 0xB8, 0xD1, 0x82, 0xF7, 0x96, 0xF7, 0xB6, 0xF7, 0x96, 0x01, 0xF7, 0x95, 0x84, 0xF7, 0x96, 0xEF, 0xB6, 0xBC, 0x93, 0x81, 0x91, 0xAA, 0x52, 0x02, 0xD2, 0xF4, 0x02, 0xD2, 0xF5, 0x81, 0xD2, 0xF4, 0xDD, 0x55, 0x08, 0xF7, 0xB6, 0x84, 0xEF, 0xB6, 0xBC, 0x93, 0x81, 0x91, 0xAA, 0x53, 0xD2, 0xF5, 0x05, 0xD2, 0xF4, 0x82, 0xE6, 0x75, 0xF7, 0x96, 0xF7, 0x95, 0x02, 0xF7, 0x96, 0x80, 0xF7, 0xB6, 0x01, 0xF7, 0xB5, 0x84, 0xEF, 0x96, 0xF7, 0x96, 0xBC, 0x93, 0x81, 0x91, 0xAA, 0x33, 0x06, 0xD2, 0xF4, 0x01, 0x99, 0xF2, 0x80, 0xD2, 0xF5, 0x01, 0xD2, 0xF4, 0x81, 0xD2, 0xF5, 0xD2, 0xD4, 0x01, 0xD2, 0xF4, 0x80, 0xDC, 0x75, 0x02, 0xF7, 0x95, 0x81, 0xF7, 0x96, 0xF7, 0xB5, 0x03, 0xF7, 0x96, 0x84, 0xEF, 0xB6, 0xF7, 0xB5, 0xF7, 0x96, 0x81, 0x91, 0x89, 0x91, 0x06, 0xD2, 0xF4, 0x80, 0xDC, 0x15, 0x02, 0xF7, 0x96, 0x82, 0xD6, 0x15, 0x81, 0x91, 0x99, 0xF2, 0x03, 0xD2, 0xF4, 0x8D, 0xD2, 0xF5, 0xD2, 0xF4, 0xD2, 0xF5, 0xE5, 0x35, 0xF7, 0xB6, 0xF7, 0xB5, 0xF7, 0x96, 0xEF, 0xB6, 0xF7, 0x96, 0xF7, 0x95, 0xF7, 0xB6, 0xF7, 0x96, 0xF7, 0xB6, 0xF7, 0x95, 0x01, 0xF7, 0x96, 0x87, 0xF7, 0x95, 0xF7, 0xB6, 0xF7, 0x95, 0xF7, 0xB6, 0xF7, 0x96, 0xBC, 0x93, 0x81, 0x91, 0xAA, 0x53, 0x06, 0xD2, 0xF4, 0x80, 0xEE, 0x75, 0x01, 0xF7, 0x96, 0x84, 0xF7, 0xB5, 0xF7, 0x96, 0xBC, 0x93, 0x81, 0x91, 0xAA, 0x33, 0x06, 0xD2, 0xF4, 0x89, 0xEE, 0x75, 0xF7, 0x96, 0xF7, 0xB5, 0xF7, 0x95, 0xD6, 0x34, 0x81, 0x91, 0x99, 0xF2, 0xD2, 0xF4, 0xD2, 0xF5, 0xD2, 0xF4, 0x02, 0xD2, 0xF5, 0x83, 0xD2, + 0xD4, 0xE5, 0x55, 0xF7, 0x96, 0xF7, 0xB5, 0x01, 0xF7, 0xB6, 0x86, 0xF7, 0x95, 0xF7, 0xB6, 0xF7, 0x96, 0xF7, 0xB6, 0xA3, 0x11, 0x81, 0x91, 0xBA, 0x94, 0x06, 0xD2, 0xF4, 0x01, 0xF7, 0x96, 0x02, 0xF7, 0x97, 0x80, 0xF7, 0xB7, 0x01, 0xF7, 0x98, 0x80, 0xD2, 0x73, 0x02, 0xB8, 0xD1, 0x0A, 0x00, 0x1F, 0x80, 0x98, 0xB4, 0x01, 0xB8, 0xD1, 0x96, 0x3C, 0x9B, 0x06, 0xF5, 0x07, 0xE9, 0x07, 0xF1, 0x07, 0xFD, 0x26, 0xBD, 0xB0, 0xF1, 0xB0, 0xF2, 0xB0, 0xF1, 0x49, 0x32, 0x41, 0x32, 0x41, 0x11, 0x39, 0x11, 0x31, 0x10, 0x30, 0xF0, 0x60, 0xF0, 0xA9, 0x11, 0x70, 0xF0, 0x20, 0xCE, 0x20, 0xCF, 0x20, 0xAE, 0x20, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x1F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x2A, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x84, 0x18, 0xCF, 0x00, 0xF8, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x19, 0x18, 0xAD, 0x85, 0x10, 0xCF, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x1A, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x82, 0x18, 0xAE, 0x18, 0xAD, 0x18, 0xAE, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x1A, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x01, 0x18, 0x18, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x04, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x09, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x12, 0x18, 0xAD, 0x02, 0xB8, 0xD1, 0x80, 0xFF, 0x94, 0x03, 0xFF, 0xB5, 0x85, 0xFF, 0xB4, 0xFF, 0xB5, + 0xC4, 0x93, 0x81, 0x91, 0xAA, 0x53, 0xD3, 0x15, 0x02, 0xD3, 0x35, 0x83, 0xD3, 0x34, 0xD3, 0x15, 0xD3, 0x35, 0xE5, 0x75, 0x09, 0xFF, 0xB5, 0x82, 0xC4, 0x93, 0x81, 0x91, 0xAA, 0x53, 0x01, 0xD3, 0x35, 0x81, 0xD3, 0x14, 0xD3, 0x15, 0x02, 0xD3, 0x35, 0x82, 0xF6, 0x75, 0xFF, 0xB5, 0xFF, 0xB4, 0x01, 0xFF, 0xB5, 0x02, 0xFF, 0xB4, 0x01, 0xFF, 0xB5, 0x83, 0xFF, 0x95, 0xC4, 0x93, 0x81, 0x91, 0xAA, 0x53, 0x03, 0xD3, 0x35, 0x01, 0xD3, 0x15, 0x80, 0xD3, 0x35, 0x01, 0x99, 0xF2, 0x82, 0xD3, 0x35, 0xD3, 0x14, 0xD3, 0x15, 0x01, 0xD3, 0x35, 0x82, 0xD3, 0x15, 0xD3, 0x35, 0xDC, 0x54, 0x03, 0xFF, 0xB5, 0x80, 0xFF, 0xB4, 0x04, 0xFF, 0xB5, 0x81, 0xFF, 0xB4, 0xFF, 0xB5, 0x01, 0x81, 0x91, 0x81, 0xD3, 0x34, 0xD3, 0x15, 0x03, 0xD3, 0x35, 0x82, 0xD3, 0x15, 0xDC, 0x34, 0xFF, 0xB4, 0x01, 0xFF, 0xB5, 0x85, 0xDE, 0x34, 0x81, 0x91, 0x99, 0xF2, 0xD3, 0x14, 0xD3, 0x35, 0xD3, 0x15, 0x01, 0xD3, 0x34, 0x01, 0xD3, 0x35, 0x80, 0xE5, 0x74, 0x06, 0xFF, 0xB5, 0x01, 0xFF, 0xB4, 0x81, 0xFF, 0xB5, 0xFF, 0xB4, 0x02, 0xFF, 0xB5, 0x80, 0xFF, 0xB4, 0x01, 0xFF, 0xB5, 0x82, 0xC4, 0xB3, 0x81, 0x91, 0xAA, 0x53, 0x01, 0xD3, 0x35, 0x81, 0xD3, 0x14, 0xD3, 0x15, 0x02, 0xD3, 0x35, 0x80, 0xED, 0xF5, 0x03, 0xFF, 0xB5, 0x82, 0xC4, 0x93, 0x81, 0x91, 0xAA, 0x53, 0x03, 0xD3, 0x35, 0x01, 0xD3, 0x15, 0x81, 0xD3, 0x35, 0xF6, 0x94, 0x02, 0xFF, 0xB5, 0x82, 0xDE, 0x14, 0x81, 0x91, 0x99, 0xF2, 0x01, 0xD3, 0x35, 0x85, 0xD3, 0x14, 0xD3, 0x34, 0xD3, 0x14, 0xD3, 0x34, 0xD3, 0x15, 0xE5, 0x55, + 0x02, 0xFF, 0xB5, 0x80, 0xFF, 0xB4, 0x03, 0xFF, 0xB5, 0x82, 0xA3, 0x32, 0x81, 0x91, 0xBA, 0xB4, 0x02, 0xD3, 0x35, 0x81, 0xD3, 0x15, 0xD3, 0x34, 0x01, 0xD3, 0x35, 0x80, 0xFF, 0xB5, 0x04, 0xFF, 0xB6, 0x83, 0xFF, 0xB7, 0xFF, 0xB8, 0xDB, 0xD4, 0xB8, 0xD2, 0x01, 0xB8, 0xD1, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x3F, 0x08, 0x3F, 0x70, 0xF7, 0xB8, 0xD1, 0xA9, 0x52, 0x0E, 0x94, 0x07, 0xC9, 0x07, 0xF2, 0x07, 0xFD, 0x2E, 0x3C, 0x01, 0xA8, 0xF1, 0x80, 0x99, 0x11, 0x01, 0x41, 0x32, 0x81, 0x39, 0x11, 0x39, 0x10, 0x01, 0x30, 0xF0, 0x84, 0x30, 0xEF, 0x58, 0xF0, 0xA8, 0xF1, 0x40, 0xCF, 0x20, 0xAE, 0x01, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x1F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x28, 0x18, 0xAD, 0x82, 0x18, 0xCD, 0x18, 0xAD, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xB0, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x11, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x84, 0x18, 0xCF, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x43, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x00, 0xF7, 0x00, 0xF9, 0x01, 0x18, 0x18, 0xCF, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x23, 0x18, 0xAD, 0x02, 0xB8, 0xD1, 0x04, 0xFE, 0x2E, 0x01, 0xFE, 0x4E, 0x82, 0xC3, 0xF0, 0x81, 0x91, 0xAA, 0x73, 0x06, 0xD3, 0x55, 0x80, 0xEC, 0xD1, 0x09, 0xFE, 0x2E, 0x82, 0xC3, 0xEF, 0x81, 0x91, 0xAA, 0x73, 0x05, 0xD3, 0x55, 0x81, 0xD3, 0x54, 0xF5, 0x90, + 0x01, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x80, 0xFE, 0x4E, 0x04, 0xFE, 0x2E, 0x82, 0xC3, 0xEF, 0x81, 0x91, 0xAA, 0x73, 0x06, 0xD3, 0x55, 0x83, 0x9A, 0x12, 0x91, 0xF2, 0xD3, 0x55, 0xD3, 0x54, 0x04, 0xD3, 0x55, 0x81, 0xDB, 0xD4, 0xFE, 0x4E, 0x03, 0xFE, 0x2E, 0x82, 0xFE, 0x4E, 0xFE, 0x2E, 0xFE, 0x4E, 0x02, 0xFE, 0x2E, 0x80, 0xFE, 0x4E, 0x01, 0x81, 0x91, 0x06, 0xD3, 0x55, 0x81, 0xDC, 0x13, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x82, 0xE5, 0x0F, 0x81, 0x91, 0x99, 0xF2, 0x05, 0xD3, 0x55, 0x81, 0xD3, 0x54, 0xEC, 0xD1, 0x07, 0xFE, 0x2E, 0x80, 0xFE, 0x4E, 0x03, 0xFE, 0x2E, 0x01, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x82, 0xC3, 0xCF, 0x81, 0x91, 0xAA, 0x73, 0x06, 0xD3, 0x55, 0x81, 0xE4, 0xD1, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x83, 0xFE, 0x4E, 0xC3, 0xD0, 0x81, 0x91, 0xAA, 0x73, 0x06, 0xD3, 0x55, 0x81, 0xF5, 0x90, 0xFE, 0x4E, 0x01, 0xFE, 0x2E, 0x82, 0xE5, 0x0F, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x55, 0x83, 0xEC, 0xD2, 0xFE, 0x2E, 0xFE, 0x4E, 0xFE, 0x2E, 0x02, 0xFE, 0x4E, 0x84, 0xFE, 0x4D, 0xFE, 0x2F, 0xA2, 0xB0, 0x81, 0x91, 0xC2, 0xF4, 0x06, 0xD3, 0x55, 0x80, 0xFE, 0x2F, 0x02, 0xFE, 0x50, 0x01, 0xFE, 0x51, 0x01, 0xFE, 0x52, 0x81, 0xE3, 0xD2, 0xB8, 0xD2, 0x01, 0xB8, 0xD1, 0x08, 0x00, 0x1F, 0x8D, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0xDF, 0x59, 0xF8, 0xB8, 0xD1, 0x82, 0x91, 0x07, 0xC9, 0x07, 0xF2, 0x07, 0xFE, 0x45, 0x5A, 0xB0, 0xF1, 0xA8, 0xF1, 0x81, 0x12, 0x01, 0x41, 0x32, 0x87, 0x39, 0x11, 0x38, 0xF0, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xEF, 0x28, + 0xCF, 0x50, 0xCF, 0x48, 0xEF, 0x01, 0x20, 0xAE, 0x81, 0x20, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x1F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x2B, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAF, 0x00, 0xF8, 0x01, 0x39, 0x00, 0xF7, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x16, 0x18, 0xAD, 0x84, 0x18, 0xAF, 0x01, 0x18, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x3F, 0x18, 0xAD, 0x83, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x10, 0xCF, 0x0A, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x20, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0xB8, 0xD1, 0xB0, 0xD1, 0xB0, 0xD2, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x80, 0xFC, 0x8D, 0x02, 0xFC, 0x6D, 0x82, 0xC3, 0x0F, 0x81, 0xB1, 0xAA, 0x73, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xEC, 0x11, 0x08, 0xFC, 0x6D, 0x83, 0xFC, 0x8D, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x01, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x83, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x96, 0xF4, 0x2F, 0x01, 0xFC, 0x6D, 0x80, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x01, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x83, 0xFC, 0x8D, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x03, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x82, 0xD3, 0x95, 0x9A, 0x12, 0x81, 0x91, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x81, 0xF4, 0x4F, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x80, 0xFC, 0x8D, 0x03, 0xFC, 0x6D, 0x01, 0xFC, 0x8D, 0x80, 0xFC, 0x6D, 0x01, 0x81, 0x91, 0x02, 0xD3, + 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xDB, 0xD3, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x82, 0xE3, 0xCE, 0x81, 0x91, 0x9A, 0x12, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x02, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x03, 0xFC, 0x6D, 0x01, 0xFC, 0x8D, 0x07, 0xFC, 0x6D, 0x86, 0xFC, 0x8D, 0xFC, 0x6D, 0xFC, 0x8D, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x75, 0x05, 0xD3, 0x95, 0x87, 0xEB, 0xF1, 0xFC, 0x8D, 0xFC, 0x6D, 0xFC, 0x8D, 0xFC, 0x6D, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x03, 0xD3, 0x95, 0x01, 0xD3, 0x75, 0x81, 0xD3, 0x95, 0xF4, 0x2F, 0x01, 0xFC, 0x6D, 0x83, 0xFC, 0x8D, 0xE3, 0xCE, 0x81, 0x91, 0x9A, 0x12, 0x01, 0xD3, 0x95, 0x82, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x76, 0x01, 0xD3, 0x95, 0x81, 0xEB, 0xF1, 0xFC, 0x8D, 0x01, 0xFC, 0x6D, 0x80, 0xFC, 0x8D, 0x02, 0xFC, 0x6D, 0x84, 0xFC, 0x8D, 0xA2, 0x50, 0x81, 0x91, 0xC3, 0x14, 0xD3, 0x75, 0x04, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xFC, 0x8E, 0x02, 0xFC, 0x8F, 0x01, 0xFC, 0xB0, 0x01, 0xFC, 0xB1, 0x83, 0xF3, 0xB2, 0xB8, 0xD1, 0xB0, 0xF1, 0xB8, 0xD1, 0x09, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x92, 0x00, 0x5F, 0x03, 0x1F, 0x2D, 0x3B, 0x99, 0xB2, 0x45, 0x4B, 0x07, 0xF3, 0x07, 0xFE, 0x54, 0x98, 0xB0, 0xF1, 0xA8, 0xF1, 0x69, 0x12, 0x49, 0x12, 0x41, 0x12, 0x39, 0x11, 0x31, 0x10, 0x30, 0xF0, 0x30, 0xEF, 0x30, 0xCF, 0x28, 0xCF, 0x02, 0x20, 0xCE, 0x82, 0x20, 0xCD, 0x20, 0xCE, 0x20, 0xAE, 0x01, 0x20, 0xAD, 0x1F, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0C, 0x18, 0xAD, + 0x85, 0x18, 0xAC, 0x18, 0xCD, 0x10, 0xD1, 0x08, 0xF3, 0x08, 0xD3, 0x10, 0xD1, 0x03, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x20, 0xAD, 0x12, 0x18, 0xAD, 0x84, 0x10, 0xCF, 0x00, 0xF8, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x04, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x03, 0x18, 0xAD, 0x0B, 0x01, 0x19, 0x80, 0x00, 0xF9, 0x03, 0x01, 0x19, 0x81, 0x00, 0xF6, 0x18, 0xAE, 0x46, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x29, 0x18, 0xAD, 0x01, 0xB0, 0xF1, 0x80, 0xB0, 0xD1, 0x06, 0xFC, 0x8D, 0x82, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x09, 0xFC, 0x8D, 0x82, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x4F, 0x09, 0xFC, 0x8D, 0x82, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x82, 0x9A, 0x12, 0x81, 0x91, 0xC3, 0x34, 0x06, 0xD3, 0x95, 0x81, 0xDB, 0xB4, 0xFC, 0x8E, 0x09, 0xFC, 0x8D, 0x01, 0x81, 0x91, 0x05, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xDB, 0xD3, 0x02, 0xFC, 0x8D, 0x82, 0xE3, 0xCE, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x10, 0xFC, 0x8D, 0x82, 0xCB, 0x2F, 0x81, 0x91, 0xAA, 0x93, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x03, 0xFC, 0x8D, 0x82, 0xC3, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x4F, 0x02, 0xFC, 0x8D, 0x82, 0xCB, 0x6F, 0x81, 0x91, 0x9A, 0x32, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x11, 0x07, + 0xFC, 0x8D, 0x82, 0xA2, 0x50, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x81, 0xFC, 0x8E, 0xFC, 0x8F, 0x01, 0xFC, 0xAF, 0x02, 0xFC, 0xB0, 0x81, 0xFC, 0xB2, 0xF4, 0x51, 0x02, 0xB0, 0xD1, 0x08, 0x00, 0x1F, 0x02, 0x00, 0x3F, 0x87, 0x00, 0x5F, 0x02, 0x5F, 0x06, 0xFD, 0x07, 0x70, 0x0F, 0x88, 0x07, 0xF4, 0x07, 0xFF, 0x54, 0x78, 0x01, 0xA8, 0xF1, 0x82, 0x59, 0x32, 0x41, 0x32, 0x41, 0x11, 0x01, 0x39, 0x11, 0x01, 0x30, 0xF0, 0x82, 0x30, 0xEF, 0x28, 0xCF, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x03, 0x20, 0xAD, 0x1E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0C, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF9, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x18, 0xAE, 0x15, 0x18, 0xAD, 0x84, 0x18, 0xCF, 0x01, 0x18, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xCE, 0x0C, 0x18, 0xAD, 0x80, 0x00, 0xF9, 0x0C, 0x01, 0x19, 0x83, 0x01, 0x18, 0x01, 0x19, 0x00, 0xF6, 0x18, 0xCE, 0x41, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x00, 0xF7, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xCF, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x2C, 0x18, 0xAD, 0x01, 0xB0, 0xF1, 0x82, 0xB0, 0xD1, 0xFC, 0xAD, 0xFC, 0xCD, 0x01, 0xFC, 0xAD, 0x02, 0xFC, 0xCD, 0x82, 0xCB, 0x4E, 0x81, 0x91, 0xAA, 0x73, 0x06, 0xD3, 0x95, 0x81, 0xEC, 0x31, 0xFC, 0xAD, 0x08, 0xFC, 0xCD, 0x82, 0xC3, 0x2F, 0x89, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x6F, 0x02, 0xFC, 0xCD, 0x80, 0xFC, 0xAD, 0x02, 0xFC, 0xCD, 0x02, 0xFC, 0xAD, 0x82, 0xC3, 0x2F, 0x81, + 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x83, 0xBB, 0x11, 0x81, 0x91, 0xAA, 0x73, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x86, 0xDB, 0xB4, 0xFC, 0xAE, 0xFC, 0xAD, 0xFC, 0xCD, 0xFC, 0xAD, 0xFC, 0xCD, 0xFC, 0xAD, 0x01, 0xFC, 0xCD, 0x01, 0xFC, 0xAD, 0x01, 0x81, 0x91, 0x05, 0xD3, 0x95, 0x82, 0xD3, 0x75, 0xDB, 0xD3, 0xFC, 0xAD, 0x01, 0xFC, 0xCD, 0x82, 0xDB, 0xEE, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x82, 0xEC, 0x31, 0xFC, 0xCD, 0xFC, 0xAD, 0x0A, 0xFC, 0xCD, 0x86, 0xFC, 0xAD, 0xFC, 0xCD, 0xFC, 0xAD, 0xFC, 0xCD, 0xDB, 0xEE, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xDB, 0xD3, 0x03, 0xFC, 0xCD, 0x82, 0xC3, 0x2F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x81, 0xF4, 0x6F, 0xFC, 0xAD, 0x01, 0xFC, 0xCD, 0x82, 0xC3, 0x2F, 0x89, 0x91, 0xAA, 0x94, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x31, 0x01, 0xFC, 0xCD, 0x81, 0xFC, 0xAD, 0xFC, 0xCD, 0x03, 0xFC, 0xAD, 0x82, 0xA2, 0x70, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x80, 0xFC, 0xCE, 0x01, 0xFC, 0xCF, 0x82, 0xFC, 0xEF, 0xFC, 0xD0, 0xFC, 0xF0, 0x01, 0xFC, 0xF1, 0x80, 0xFC, 0xF2, 0x01, 0xB0, 0xF1, 0x80, 0xB0, 0xF2, 0x08, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x90, 0x00, 0x5F, 0x00, 0x7F, 0x02, 0x1F, 0x06, 0xFC, 0x07, 0x8D, 0x07, 0xE7, 0x07, 0xF6, 0x07, 0xFF, 0x82, 0xB5, 0xA8, 0xF1, 0xA1, 0x11, 0x49, 0x32, 0x41, 0x32, 0x41, 0x11, 0x38, 0xF1, 0x38, 0xF0, 0x30, 0xF0, 0x01, 0x30, 0xEF, 0x81, 0x28, 0xCF, 0x28, 0xCE, 0x03, 0x20, 0xCE, 0x03, 0x20, 0xAD, 0x1E, 0x18, 0xAD, + 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x02, 0x20, 0xAD, 0x80, 0x08, 0xF5, 0x01, 0x01, 0x19, 0x01, 0x01, 0x17, 0x01, 0x01, 0x19, 0x81, 0x08, 0xF4, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x11, 0x18, 0xAD, 0x86, 0x10, 0xCF, 0x01, 0x18, 0x01, 0x19, 0x01, 0x17, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x3F, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF6, 0x01, 0x19, 0x01, 0x18, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x2A, 0x18, 0xAD, 0x83, 0xB0, 0xF1, 0xA8, 0xF1, 0xB0, 0xF1, 0xFD, 0x0D, 0x02, 0xFC, 0xED, 0x85, 0xFD, 0x0D, 0xFC, 0xED, 0xFD, 0x0D, 0xE4, 0x2E, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x51, 0x09, 0xFC, 0xED, 0x82, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x8F, 0x09, 0xFC, 0xED, 0x82, 0xC3, 0x2F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x82, 0xEC, 0x6F, 0x91, 0xD1, 0x89, 0xD1, 0x05, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x81, 0xDB, 0xB4, 0xEC, 0x70, 0x04, 0xFC, 0xED, 0x80, 0xFD, 0x0D, 0x01, 0xFC, 0xED, 0x01, 0x81, 0x91, 0x06, 0xD3, 0x95, 0x80, 0xDB, 0xF3, 0x02, 0xFC, 0xED, 0x82, 0xE4, 0x2E, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x51, 0x0E, 0xFC, 0xED, 0x84, 0xFD, 0x0D, 0xFC, 0xED, 0xEC, 0x6E, 0x81, 0x91, 0x91, + 0xF2, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x01, 0xD3, 0x95, 0x86, 0xF4, 0xAF, 0xFD, 0x0D, 0xFC, 0xED, 0xFD, 0x0D, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0x8F, 0x02, 0xFC, 0xED, 0x83, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x75, 0x05, 0xD3, 0x95, 0x80, 0xEC, 0x51, 0x07, 0xFC, 0xED, 0x82, 0xA2, 0x70, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x80, 0xFD, 0x0E, 0x02, 0xFD, 0x0F, 0x01, 0xFD, 0x10, 0x01, 0xFD, 0x31, 0x80, 0xFD, 0x32, 0x02, 0xB0, 0xF1, 0x08, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x02, 0x00, 0x5F, 0x8A, 0x02, 0x1F, 0x07, 0x3B, 0x07, 0xAC, 0x07, 0xE7, 0x07, 0xF7, 0x07, 0xFF, 0x82, 0xB5, 0xA8, 0xF1, 0x89, 0x12, 0x49, 0x32, 0x41, 0x12, 0x01, 0x39, 0x11, 0x82, 0x31, 0x10, 0x30, 0xF0, 0x30, 0xEF, 0x01, 0x28, 0xCF, 0x80, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x80, 0x20, 0xAE, 0x03, 0x20, 0xAD, 0x1E, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x80, 0x10, 0xF3, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xF3, 0x01, 0x01, 0x19, 0x02, 0x20, 0xAD, 0x10, 0x18, 0xAD, 0x85, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x19, 0x00, 0xF7, 0x18, 0xAE, 0x20, 0xAD, 0x0D, 0x18, 0xAD, 0x83, 0x20, 0x8D, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xCD, 0x07, 0x18, 0xAD, 0x84, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCD, 0x18, 0xAD, 0x20, 0xAD, 0x45, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF6, 0x01, 0x19, 0x01, 0x18, 0x10, 0xCF, 0x01, 0x20, 0xAD, 0x2F, 0x18, 0xAD, 0x82, 0xB0, + 0xF1, 0xA8, 0xF1, 0xB0, 0xF1, 0x06, 0xFD, 0x2D, 0x82, 0xE4, 0x4E, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x09, 0xFD, 0x2D, 0x82, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0xCF, 0x09, 0xFD, 0x2D, 0x82, 0xC3, 0x4F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x83, 0xF4, 0xCF, 0xC3, 0x4F, 0x81, 0x91, 0xB2, 0xD4, 0x09, 0xD3, 0x95, 0x81, 0xDB, 0xD4, 0xE4, 0x31, 0x01, 0xEC, 0x71, 0x83, 0xDB, 0xF0, 0xE4, 0x50, 0xF4, 0xCF, 0xFD, 0x0E, 0x01, 0x81, 0x91, 0x06, 0xD3, 0x95, 0x88, 0xDB, 0xD4, 0xF4, 0xAF, 0xF4, 0xCF, 0xF4, 0xAF, 0xDC, 0x10, 0x9A, 0x12, 0xAA, 0x73, 0xD3, 0x95, 0xD3, 0x96, 0x04, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x0F, 0xFD, 0x2D, 0x01, 0xFD, 0x2C, 0x84, 0x92, 0x11, 0x81, 0x91, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x96, 0x05, 0xD3, 0x95, 0x85, 0xEC, 0x71, 0xFC, 0xEE, 0xFD, 0x2D, 0xC3, 0x6F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x86, 0xDC, 0x10, 0xE4, 0x4E, 0xDC, 0x2E, 0xE4, 0x4E, 0xB2, 0xF0, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x07, 0xFD, 0x2D, 0x82, 0xA2, 0x70, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x80, 0xFD, 0x2E, 0x01, 0xFD, 0x2F, 0x80, 0xFD, 0x4F, 0x01, 0xFD, 0x50, 0x01, 0xFD, 0x51, 0x83, 0xFD, 0x71, 0xA8, 0xF1, 0xB0, 0xF1, 0xB0, 0xF2, 0x07, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x5F, 0x01, 0x00, 0x7F, 0x90, 0x02, 0x3F, 0x07, 0x3B, 0x07, 0xAB, 0x07, 0xE8, 0x07, 0xF9, 0x07, 0xFF, 0xA1, 0x52, 0xA8, 0xF1, 0x71, 0x32, 0x41, 0x32, 0x41, 0x31, 0x39, + 0x11, 0x39, 0x10, 0x38, 0xF0, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xCF, 0x01, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x05, 0x20, 0xAD, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x09, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xCE, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD0, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xD0, 0x02, 0x01, 0x19, 0x80, 0x01, 0x18, 0x13, 0x01, 0x19, 0x85, 0x08, 0xF7, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xCD, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x82, 0x18, 0xAC, 0x18, 0xAD, 0x20, 0xAD, 0x07, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x41, 0x18, 0xAD, 0x84, 0x18, 0xAE, 0x00, 0xF6, 0x01, 0x19, 0x01, 0x18, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x29, 0x18, 0xAD, 0x01, 0xA8, 0xF1, 0x80, 0xA8, 0xF2, 0x03, 0xFD, 0x6D, 0x80, 0xFD, 0x4D, 0x01, 0xFD, 0x6D, 0x82, 0xE4, 0x6E, 0x81, 0x91, 0x92, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x09, 0xFD, 0x6D, 0x82, 0xC3, 0x6F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF4, 0xEF, 0x09, 0xFD, 0x6D, 0x82, 0xC3, 0x6F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x88, 0xF4, 0xEF, 0xFD, 0x2D, 0x92, 0x11, 0x89, 0xB2, 0xCB, 0x75, 0xD3, 0x96, 0xD3, 0x75, 0xD3, 0x95, 0xD3, 0x96, 0x0B, 0xD3, 0x95, 0x80, 0xEC, 0x91, 0x01, 0x81, 0x91, 0x0B, 0xD3, 0x95, 0x80, 0xCB, 0x95, 0x07, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x0C, 0xFD, 0x6D, 0x80, + 0xFD, 0x4D, 0x03, 0xFD, 0x6D, 0x82, 0xBB, 0x2F, 0x81, 0x91, 0xB2, 0xD4, 0x0A, 0xD3, 0x95, 0x82, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x09, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x09, 0xD3, 0x95, 0x80, 0xEC, 0x71, 0x07, 0xFD, 0x6D, 0x82, 0xA2, 0x90, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x80, 0xFD, 0x6E, 0x01, 0xFD, 0x6F, 0x80, 0xFD, 0x8F, 0x01, 0xFD, 0x90, 0x01, 0xFD, 0x91, 0x80, 0xFD, 0x92, 0x02, 0xA8, 0xF1, 0x06, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x01, 0x00, 0x5F, 0x87, 0x00, 0x7F, 0x00, 0x9F, 0x02, 0x3F, 0x07, 0x79, 0x07, 0xAA, 0x07, 0xE8, 0x07, 0xFB, 0x07, 0xFF, 0x01, 0xA8, 0xF1, 0x85, 0x59, 0x32, 0x49, 0x32, 0x41, 0x31, 0x39, 0x11, 0x39, 0x10, 0x38, 0xF0, 0x01, 0x30, 0xEF, 0x80, 0x28, 0xCF, 0x01, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x06, 0x20, 0xAD, 0x1D, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x83, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAC, 0x01, 0x01, 0x19, 0x80, 0x10, 0xD3, 0x01, 0x18, 0xAD, 0x80, 0x10, 0xD3, 0x16, 0x01, 0x19, 0x82, 0x00, 0xF6, 0x20, 0xAE, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x17, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x01, 0x18, 0xAD, 0x03, 0x20, 0xAD, 0x40, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xCD, 0x01, 0x16, 0x01, 0x19, 0x01, 0x18, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x2A, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0xA8, 0xF1, 0x83, 0xEC, 0x6F, 0xFD, 0x8D, 0xFD, 0xAD, 0xFD, 0x8D, 0x02, 0xFD, 0xAD, 0x82, 0xE4, + 0x8E, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x81, 0xEC, 0x91, 0xFD, 0xAD, 0x08, 0xFD, 0x8D, 0x82, 0xC3, 0x8F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x83, 0xF5, 0x2F, 0xFD, 0xAD, 0xFD, 0x8D, 0xFD, 0xAD, 0x01, 0xFD, 0x8D, 0x80, 0xFD, 0xAD, 0x01, 0xFD, 0x8D, 0x01, 0xFD, 0xAD, 0x82, 0xC3, 0x8F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x84, 0xF5, 0x2F, 0xFD, 0x8D, 0xE4, 0xAE, 0x89, 0x91, 0x9A, 0x32, 0x0F, 0xD3, 0x95, 0x80, 0xE4, 0x91, 0x01, 0x81, 0x91, 0x06, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x0C, 0xD3, 0x95, 0x80, 0xEC, 0x91, 0x01, 0xFD, 0xAD, 0x07, 0xFD, 0x8D, 0x01, 0xFD, 0xAD, 0x01, 0xFD, 0x8D, 0x01, 0xFD, 0xAD, 0x84, 0xFD, 0x8D, 0xFD, 0xAD, 0xF5, 0x2D, 0x81, 0x91, 0x91, 0xF2, 0x03, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x02, 0xD3, 0x95, 0x82, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x14, 0xD3, 0x95, 0x80, 0xEC, 0x91, 0x01, 0xFD, 0x8D, 0x04, 0xFD, 0xAD, 0x83, 0xFD, 0x8D, 0xA2, 0x90, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x03, 0xFD, 0xAF, 0x01, 0xFD, 0xB0, 0x83, 0xFD, 0xB1, 0xFD, 0xD1, 0xE4, 0xB2, 0xA9, 0x11, 0x01, 0xA8, 0xF1, 0x06, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x5F, 0x01, 0x00, 0x7F, 0x88, 0x00, 0x9F, 0x02, 0xBF, 0x07, 0x78, 0x07, 0xC8, 0x07, 0xE9, 0x07, 0xFD, 0x17, 0x3E, 0xA8, 0xF1, 0x99, 0x12, 0x01, 0x49, 0x32, 0x83, 0x41, 0x31, 0x41, 0x11, 0x39, 0x11, 0x38, 0xF0, 0x01, 0x30, 0xEF, 0x80, 0x28, 0xCF, 0x01, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x80, 0x20, 0xCD, 0x04, 0x20, 0xAD, + 0x81, 0x18, 0xAD, 0x20, 0xAD, 0x1A, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0A, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x80, 0x08, 0xF4, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF7, 0x08, 0xF6, 0x01, 0x01, 0x19, 0x83, 0x08, 0xF4, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x11, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xCD, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0B, 0x18, 0xAD, 0x82, 0x18, 0xAC, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x3F, 0x18, 0xAD, 0x84, 0x18, 0xCD, 0x00, 0xF7, 0x01, 0x19, 0x01, 0x18, 0x18, 0xCF, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x04, 0x18, 0xAD, 0x80, 0x18, 0xCD, 0x2A, 0x18, 0xAD, 0x02, 0xA9, 0x11, 0x80, 0xEC, 0x8E, 0x01, 0xFD, 0xED, 0x02, 0xFD, 0xCD, 0x83, 0xFD, 0xED, 0xE4, 0xCE, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0xB1, 0x09, 0xFD, 0xCD, 0x82, 0xC3, 0xAF, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF5, 0x4F, 0x01, 0xFD, 0xCD, 0x80, 0xFD, 0xED, 0x04, 0xFD, 0xCD, 0x84, 0xFD, 0xED, 0xFD, 0xCD, 0xC3, 0xAF, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x85, 0xF5, 0x4F, 0xFD, 0xED, 0xFD, 0xCD, 0xD4, 0x4F, 0x81, 0x91, 0xB2, 0xB3, 0x09, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x03, 0xD3, 0x95, 0x82, 0xEC, 0xB1, 0x89, 0x91, 0x81, 0x91, 0x0B, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x07, 0xD3, 0x95, 0x80, 0xEC, 0xB1, 0x12, 0xFD, 0xCD, 0x82, 0xBB, 0x6F, 0x81, 0x91, 0xBA, 0xF4, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x03, + 0xD3, 0x95, 0x82, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x14, 0xD3, 0x95, 0x80, 0xEC, 0xB1, 0x01, 0xFD, 0xED, 0x01, 0xFD, 0xCD, 0x03, 0xFD, 0xED, 0x82, 0xA2, 0xB0, 0x81, 0x91, 0xC3, 0x14, 0x05, 0xD3, 0x95, 0x81, 0xD3, 0x75, 0xFD, 0xEE, 0x01, 0xFD, 0xEF, 0x02, 0xFD, 0xF0, 0x01, 0xFD, 0xF1, 0x81, 0xEC, 0xB1, 0xA0, 0xF1, 0x01, 0xA9, 0x11, 0x06, 0x00, 0x1F, 0x02, 0x00, 0x5F, 0x80, 0x00, 0x7F, 0x01, 0x00, 0x9F, 0x87, 0x04, 0x1F, 0x07, 0x97, 0x07, 0xC7, 0x07, 0xEB, 0x07, 0xFE, 0x2E, 0x5C, 0xA8, 0xF1, 0x79, 0x32, 0x01, 0x49, 0x32, 0x83, 0x41, 0x11, 0x39, 0x11, 0x39, 0x10, 0x38, 0xF0, 0x01, 0x30, 0xEF, 0x02, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x80, 0x20, 0xCD, 0x04, 0x20, 0xAD, 0x1C, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x08, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x81, 0x18, 0xAE, 0x00, 0xF6, 0x01, 0x01, 0x18, 0x01, 0x01, 0x19, 0x81, 0x00, 0xF6, 0x18, 0xCE, 0x01, 0x18, 0xAD, 0x11, 0x20, 0xAD, 0x84, 0x18, 0xAD, 0x18, 0xAC, 0x18, 0xAD, 0x18, 0xAC, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x0D, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x09, 0x18, 0xAD, 0x82, 0x18, 0xAC, 0x20, 0xAD, 0x18, 0xAD, 0x03, 0x20, 0xAD, 0x3F, 0x18, 0xAD, 0x83, 0x00, 0xF7, 0x01, 0x18, 0x01, 0x17, 0x18, 0xCF, 0x05, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x03, 0x18, 0xAD, 0x80, 0x20, 0xAC, 0x29, 0x18, 0xAD, 0x01, 0xA9, 0x11, 0x81, 0xA1, 0x11, 0xE4, 0x2E, 0x05, 0xFE, 0x0D, 0x82, 0xE4, 0xEE, 0x81, 0x91, 0x9A, 0x12, 0x06, + 0xD3, 0x95, 0x80, 0xEC, 0xD1, 0x09, 0xFE, 0x0D, 0x82, 0xC3, 0xCF, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF5, 0x6F, 0x09, 0xFE, 0x0D, 0x82, 0xC3, 0xCF, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF5, 0x6F, 0x02, 0xFE, 0x0D, 0x82, 0xD4, 0x4F, 0x81, 0x91, 0xBA, 0xD3, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x04, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xEC, 0xD1, 0x01, 0x81, 0x91, 0x0E, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x04, 0xD3, 0x95, 0x80, 0xEC, 0xD1, 0x12, 0xFE, 0x0D, 0x83, 0xF5, 0xAD, 0x9A, 0x70, 0x89, 0xB1, 0xD3, 0x75, 0x08, 0xD3, 0x95, 0x82, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x0C, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0xD1, 0x02, 0xFE, 0x0D, 0x81, 0xFE, 0x0E, 0xFE, 0x0D, 0x02, 0xFE, 0x0E, 0x82, 0xA2, 0xB0, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x02, 0xFE, 0x0F, 0x02, 0xFE, 0x30, 0x01, 0xFE, 0x31, 0x83, 0xDC, 0x32, 0xA1, 0x11, 0xA9, 0x11, 0xA1, 0x11, 0x06, 0x00, 0x1F, 0x01, 0x00, 0x5F, 0x01, 0x00, 0x7F, 0x8B, 0x00, 0x9F, 0x00, 0xBF, 0x04, 0x3F, 0x07, 0x94, 0x07, 0xE6, 0x07, 0xEC, 0x07, 0xFE, 0x35, 0xDB, 0xA9, 0x11, 0x51, 0x33, 0x49, 0x32, 0x41, 0x32, 0x01, 0x41, 0x11, 0x81, 0x39, 0x10, 0x30, 0xF0, 0x01, 0x30, 0xEF, 0x01, 0x28, 0xCE, 0x02, 0x20, 0xCE, 0x80, 0x20, 0xCD, 0x04, 0x20, 0xAD, 0x1C, 0x18, 0xAD, 0x01, 0x20, 0xAD, 0x01, 0x01, 0x19, 0x06, 0x18, 0xAD, 0x01, 0x01, 0x19, 0x0A, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x10, 0xD1, 0x10, + 0xD3, 0x10, 0xF2, 0x10, 0xD1, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x15, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x0C, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x05, 0x18, 0xAD, 0x83, 0x18, 0xAC, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAC, 0x41, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x8B, 0x18, 0xAC, 0x18, 0xAD, 0x18, 0xAE, 0x00, 0xF6, 0x01, 0x19, 0x00, 0xF8, 0x18, 0xCF, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAC, 0x20, 0xAD, 0x30, 0x18, 0xAD, 0x81, 0x18, 0xAC, 0x80, 0xF0, 0x01, 0xA1, 0x11, 0x80, 0xC2, 0xB0, 0x05, 0xFE, 0x4D, 0x82, 0xE5, 0x0E, 0x81, 0x91, 0x9A, 0x12, 0x06, 0xD3, 0x95, 0x80, 0xEC, 0xF1, 0x09, 0xFE, 0x4D, 0x82, 0xC3, 0xEF, 0x89, 0x91, 0xAA, 0x93, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x02, 0xD3, 0x95, 0x80, 0xF5, 0x8F, 0x09, 0xFE, 0x4D, 0x84, 0xC3, 0xEF, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x95, 0xD3, 0x96, 0x04, 0xD3, 0x95, 0x80, 0xF5, 0x8F, 0x03, 0xFE, 0x4D, 0x83, 0xE5, 0x0E, 0x89, 0xD1, 0xA2, 0x53, 0xCB, 0x75, 0x05, 0xD3, 0x95, 0x80, 0xD3, 0x76, 0x04, 0xD3, 0x95, 0x80, 0xEC, 0xF1, 0x01, 0x81, 0x91, 0x14, 0xD3, 0x95, 0x80, 0xEC, 0xF1, 0x13, 0xFE, 0x4D, 0x83, 0xF6, 0x0E, 0x9A, 0x70, 0x91, 0xF2, 0xCB, 0x75, 0x05, 0xD3, 0x95, 0x86, 0xD3, 0x96, 0xD3, 0x95, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x95, 0xD3, 0x96, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x0F, 0xD3, 0x95, 0x80, 0xEC, 0xF2, 0x02, 0xFE, 0x4D, 0x89, 0xFE, 0x4E, 0xFE, 0x4D, 0xFE, 0x4E, 0xFE, 0x4D, 0xFE, 0x4E, 0xA2, 0xD0, 0x81, 0x91, + 0xC3, 0x14, 0xD3, 0x95, 0xD3, 0x96, 0x04, 0xD3, 0x95, 0x83, 0xFE, 0x4E, 0xFE, 0x4F, 0xFE, 0x6F, 0xFE, 0x70, 0x01, 0xFE, 0x50, 0x82, 0xFE, 0x71, 0xFE, 0x51, 0xBA, 0x52, 0x01, 0xA1, 0x11, 0x80, 0x78, 0xD5, 0x06, 0x00, 0x1F, 0x80, 0x00, 0x5F, 0x01, 0x00, 0x7F, 0x80, 0x00, 0x9F, 0x01, 0x00, 0xBF, 0x8F, 0x04, 0x3F, 0x07, 0xB3, 0x07, 0xC5, 0x07, 0xEE, 0x07, 0xFF, 0x54, 0x78, 0x6A, 0xD6, 0x49, 0x53, 0x49, 0x32, 0x49, 0x12, 0x41, 0x11, 0x39, 0x11, 0x39, 0x10, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xCF, 0x02, 0x28, 0xCE, 0x80, 0x20, 0xCE, 0x01, 0x20, 0xCD, 0x04, 0x20, 0xAD, 0x1E, 0x18, 0xAD, 0x01, 0x01, 0x18, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x81, 0x01, 0x18, 0x01, 0x19, 0x02, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x35, 0x18, 0xAD, 0x85, 0x20, 0xAD, 0x18, 0xAD, 0x18, 0xAC, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAD, 0x03, 0x18, 0xAC, 0x3F, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x01, 0x18, 0xAD, 0x84, 0x00, 0xF6, 0x01, 0x18, 0x00, 0xF8, 0x18, 0xCF, 0x18, 0xAC, 0x01, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x2F, 0x18, 0xAD, 0x82, 0x20, 0xAD, 0x18, 0xAC, 0x60, 0xEF, 0x01, 0xA1, 0x11, 0x81, 0xA1, 0x12, 0xFE, 0x2D, 0x04, 0xFE, 0x8D, 0x82, 0xE5, 0x4E, 0x81, 0x91, 0x9A, 0x12, 0x04, 0xD3, 0x95, 0x82, 0xD3, 0x75, 0xD3, 0x95, 0xED, 0x11, 0x08, 0xFE, 0x6D, 0x85, 0xFE, 0x8D, 0xC4, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0xD3, 0x95, 0xD3, 0x96, 0x03, 0xD3, 0x95, 0x82, 0xD3, 0x75, + 0xF5, 0xCF, 0xFE, 0x6D, 0x07, 0xFE, 0x8D, 0x83, 0xFE, 0x6D, 0xC4, 0x0F, 0x81, 0x91, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF5, 0xCE, 0x01, 0xFE, 0x6D, 0x86, 0xFE, 0x8D, 0xFE, 0x6C, 0xFE, 0x8D, 0xF6, 0x2D, 0xC4, 0x0F, 0x9A, 0x12, 0xB2, 0xD4, 0x0A, 0xD3, 0x95, 0x80, 0xEC, 0xF1, 0x01, 0x81, 0x91, 0x14, 0xD3, 0x95, 0x80, 0xED, 0x11, 0x09, 0xFE, 0x6D, 0x80, 0xFE, 0x8D, 0x06, 0xFE, 0x6D, 0x86, 0xFE, 0x6C, 0xFE, 0x8D, 0xFE, 0x6D, 0xFE, 0x2D, 0xBB, 0xCF, 0x89, 0xB1, 0xBA, 0xF4, 0x02, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x01, 0xD3, 0x95, 0x83, 0xD3, 0x96, 0xC3, 0x14, 0x81, 0x91, 0xAA, 0x93, 0x14, 0xD3, 0x95, 0x80, 0xED, 0x12, 0x07, 0xFE, 0x8E, 0x82, 0xA2, 0xD0, 0x81, 0x91, 0xC3, 0x14, 0x06, 0xD3, 0x95, 0x02, 0xFE, 0x8F, 0x02, 0xFE, 0x90, 0x89, 0xFE, 0x91, 0xE4, 0x71, 0xA1, 0x11, 0xA1, 0x12, 0xA1, 0x11, 0x60, 0xD5, 0x00, 0x1F, 0x28, 0x3C, 0x70, 0x97, 0x40, 0x5A, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0x9F, 0x01, 0x00, 0xBF, 0x8A, 0x00, 0xDF, 0x04, 0x5F, 0x07, 0xD2, 0x07, 0xE4, 0x07, 0xEF, 0x07, 0xFF, 0x2E, 0x3C, 0x2D, 0x1A, 0x51, 0x33, 0x49, 0x32, 0x41, 0x32, 0x01, 0x39, 0x11, 0x83, 0x38, 0xF0, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xCF, 0x01, 0x28, 0xCE, 0x01, 0x20, 0xCE, 0x01, 0x20, 0xCD, 0x04, 0x20, 0xAD, 0x1E, 0x18, 0xAD, 0x01, 0x01, 0x18, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x01, 0x18, 0xAD, 0x87, 0x20, 0xAD, 0x18, 0xAC, 0x01, 0x19, 0x01, 0x18, 0x18, 0xAD, 0x18, 0xAC, 0x18, 0xAD, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, + 0xCC, 0x34, 0x18, 0xAD, 0x83, 0x18, 0xAE, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xAC, 0x01, 0x18, 0xAD, 0x85, 0x18, 0xAC, 0x20, 0xAD, 0x18, 0xAD, 0x20, 0xAD, 0x18, 0xCD, 0x20, 0xAD, 0x44, 0x18, 0xAD, 0x83, 0x00, 0xF6, 0x01, 0x18, 0x00, 0xF7, 0x18, 0xCF, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xAC, 0x31, 0x18, 0xAD, 0x80, 0x28, 0xCD, 0x02, 0xA1, 0x11, 0x80, 0xCB, 0xCF, 0x04, 0xFE, 0xAD, 0x82, 0xF5, 0xED, 0x89, 0xD1, 0x91, 0xD2, 0x04, 0xD3, 0x95, 0x82, 0xD3, 0x96, 0xD3, 0x95, 0xED, 0x11, 0x09, 0xFE, 0xAD, 0x82, 0xC4, 0x2F, 0x81, 0xB1, 0xAA, 0x93, 0x06, 0xD3, 0x95, 0x80, 0xF5, 0xEF, 0x07, 0xFE, 0xAD, 0x84, 0xFE, 0xCC, 0xFE, 0xAD, 0xC4, 0x2F, 0x81, 0x91, 0xAA, 0x93, 0x01, 0xD3, 0x95, 0x80, 0xD3, 0x96, 0x03, 0xD3, 0x95, 0x82, 0xF5, 0xEF, 0xFE, 0xAD, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x80, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x86, 0xF6, 0x4D, 0xD4, 0xCE, 0xBB, 0xD0, 0xC3, 0xB2, 0xC3, 0x14, 0xD3, 0x95, 0xD3, 0x75, 0x05, 0xD3, 0x95, 0x80, 0xED, 0x12, 0x01, 0x81, 0x91, 0x10, 0xD3, 0x95, 0x80, 0xD3, 0x75, 0x02, 0xD3, 0x95, 0x80, 0xED, 0x31, 0x01, 0xFE, 0xAC, 0x14, 0xFE, 0xAD, 0x84, 0xEE, 0x0D, 0xCC, 0x6F, 0xBB, 0x51, 0xBA, 0xD4, 0xCB, 0x55, 0x03, 0xD3, 0x95, 0x82, 0xC3, 0x34, 0x81, 0x91, 0xB2, 0x94, 0x12, 0xD3, 0x95, 0x88, 0xD3, 0x75, 0xD3, 0x95, 0xED, 0x11, 0xFE, 0xAE, 0xFE, 0xCE, 0xFE, 0xAD, 0xFE, 0xAE, 0xFE, 0xAD, 0xFE, 0xCE, 0x01, 0xFE, 0xAE, 0x82, 0xA2, 0xF0, 0x81, 0x91, 0xC3, 0x14, 0x05, 0xD3, 0x95, + 0x8D, 0xDC, 0x34, 0xFE, 0xAF, 0xFE, 0xD0, 0xFE, 0xAF, 0xFE, 0xD0, 0xFE, 0xB0, 0xFE, 0xD1, 0xE4, 0x91, 0xA9, 0x11, 0xA1, 0x11, 0x99, 0x31, 0xA1, 0x11, 0x58, 0xD6, 0x88, 0xB5, 0x01, 0xB8, 0xD1, 0x80, 0x50, 0x59, 0x03, 0x00, 0x1F, 0x88, 0x00, 0x7F, 0x00, 0x9F, 0x00, 0xBF, 0x00, 0xFF, 0x00, 0xDF, 0x04, 0x7F, 0x07, 0xD2, 0x07, 0xE3, 0x07, 0xF1, 0x01, 0x07, 0xFF, 0x84, 0x2C, 0xBA, 0x49, 0x33, 0x41, 0x32, 0x41, 0x31, 0x41, 0x11, 0x01, 0x38, 0xF0, 0x82, 0x30, 0xF0, 0x30, 0xEF, 0x28, 0xEF, 0x01, 0x28, 0xCE, 0x80, 0x20, 0xCE, 0x01, 0x20, 0xCD, 0x05, 0x20, 0xAD, 0x1E, 0x18, 0xAD, 0x01, 0x01, 0x18, 0x01, 0x18, 0xAD, 0x80, 0x20, 0xAD, 0x02, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x01, 0x01, 0x18, 0x02, 0x18, 0xAD, 0x81, 0x20, 0xAD, 0x18, 0xCD, 0x01, 0x20, 0xAD, 0x81, 0x18, 0xAC, 0x20, 0xAD, 0x33, 0x18, 0xAD, 0x80, 0x00, 0xF6, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xAC, 0x20, 0xAC, 0x18, 0xAC, 0x18, 0xAD, 0x01, 0x18, 0xAC, 0x82, 0x18, 0xAD, 0x18, 0xAC, 0x20, 0xAC, 0x40, 0x18, 0xAD, 0x83, 0x20, 0xAC, 0x18, 0xAC, 0x18, 0xAD, 0x00, 0xF6, 0x01, 0x01, 0x18, 0x81, 0x18, 0xCF, 0x20, 0xAD, 0x01, 0x18, 0xAC, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x31, 0x18, 0xAD, 0x87, 0x20, 0xAC, 0x20, 0xAD, 0x18, 0xAD, 0x81, 0x10, 0x99, 0x11, 0xA1, 0x11, 0xA1, 0x71, 0xF5, 0xED, 0x05, 0xFE, 0xAD, 0x83, 0xFE, 0xAC, 0xFE, 0x6D, 0xF5, 0xCF, 0xF5, 0xEF, 0x01, 0xF5, 0xCF, 0x82, 0xF5, 0xEF, 0xF5, 0xCF, 0xFE, 0x4D, 0x0B, 0xFE, 0xAD, 0x80, 0xFE, 0x4E, 0x01, 0xF5, 0xEF, 0x81, 0xF5, + 0xCF, 0xF5, 0xEE, 0x02, 0xF5, 0xEF, 0x80, 0xFE, 0x8D, 0x03, 0xFE, 0xAC, 0x81, 0xFE, 0xAD, 0xFE, 0x8D, 0x02, 0xFE, 0xAD, 0x01, 0xFE, 0xAC, 0x85, 0xFE, 0xAD, 0xF6, 0x4D, 0xF5, 0xEF, 0xF5, 0xCF, 0xF5, 0xEF, 0xF5, 0xCF, 0x02, 0xF5, 0xEF, 0x80, 0xFE, 0x6E, 0x04, 0xFE, 0xAD, 0x01, 0xFE, 0xAC, 0x03, 0xFE, 0xAD, 0x80, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x82, 0xF6, 0x0E, 0xF5, 0xEF, 0xF5, 0xCF, 0x01, 0xF5, 0xEF, 0x83, 0xF5, 0xCF, 0xF6, 0x4E, 0xFE, 0xAC, 0xFE, 0xAD, 0x0F, 0xF5, 0xEF, 0x80, 0xF5, 0xCF, 0x02, 0xF5, 0xEF, 0x82, 0xF5, 0xCF, 0xFE, 0x4D, 0xFE, 0xAC, 0x08, 0xFE, 0xAD, 0x80, 0xFE, 0xAC, 0x08, 0xFE, 0xAD, 0x80, 0xFE, 0xAC, 0x06, 0xFE, 0xAD, 0x80, 0xFE, 0x6D, 0x01, 0xF5, 0xEF, 0x01, 0xF5, 0xCF, 0x85, 0xFE, 0xAD, 0xF6, 0x2E, 0xF5, 0xEF, 0xF5, 0xD0, 0xF5, 0xEF, 0xF5, 0xCF, 0x01, 0xF5, 0xF0, 0x80, 0xF5, 0xEF, 0x0B, 0xF5, 0xF0, 0x83, 0xF5, 0xEF, 0xF5, 0xF0, 0xFE, 0x4F, 0xFE, 0xCE, 0x07, 0xFE, 0xAE, 0x82, 0xFE, 0xAF, 0xF6, 0x10, 0xF5, 0xD0, 0x03, 0xF5, 0xF0, 0x80, 0xF6, 0x10, 0x02, 0xFE, 0xAF, 0x85, 0xFE, 0xD0, 0xFE, 0xB0, 0xFE, 0xB1, 0xE4, 0x71, 0xB8, 0xD1, 0xA1, 0x11, 0x01, 0x99, 0x31, 0x82, 0x99, 0x12, 0x69, 0x33, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x80, 0x28, 0x3C, 0x02, 0x00, 0x1F, 0x89, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0xBF, 0x00, 0xDF, 0x00, 0xFF, 0x01, 0x1F, 0x04, 0x7F, 0x07, 0xD1, 0x07, 0xE3, 0x07, 0xF3, 0x01, 0x07, 0xFF, 0x80, 0x3B, 0x77, 0x01, 0x49, 0x32, 0x81, 0x41, 0x31, 0x41, 0x11, 0x01, 0x38, 0xF0, 0x01, 0x30, 0xEF, 0x80, + 0x28, 0xEF, 0x01, 0x28, 0xCE, 0x80, 0x20, 0xCE, 0x01, 0x20, 0xCD, 0x03, 0x20, 0xAD, 0x03, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x17, 0x18, 0xAD, 0x83, 0x18, 0xAC, 0x18, 0xAD, 0x18, 0xAC, 0x18, 0xAD, 0x01, 0x01, 0x18, 0x80, 0x18, 0xAD, 0x03, 0x18, 0xAC, 0x81, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x01, 0x18, 0x80, 0x20, 0xAD, 0x01, 0x20, 0xAC, 0x01, 0x18, 0xAD, 0x83, 0x18, 0xAC, 0x20, 0xAC, 0x18, 0xAD, 0x18, 0xAC, 0x33, 0x18, 0xAD, 0x86, 0x01, 0x18, 0x00, 0xF6, 0x18, 0xCD, 0x18, 0xAC, 0x18, 0xAD, 0x18, 0xAC, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x01, 0x18, 0xAD, 0x40, 0x18, 0xAC, 0x87, 0x18, 0xCC, 0x20, 0xAC, 0x18, 0xAD, 0x00, 0xF6, 0x01, 0x18, 0x01, 0x17, 0x18, 0xCF, 0x18, 0xAD, 0x01, 0x18, 0xAC, 0x84, 0x18, 0xAD, 0x18, 0xAC, 0x20, 0xAD, 0x18, 0xAC, 0x20, 0xAC, 0x30, 0x18, 0xAC, 0x83, 0x18, 0xCD, 0x18, 0xAC, 0x20, 0xAC, 0x38, 0xCE, 0x02, 0x99, 0x31, 0x83, 0xAA, 0x31, 0xFE, 0x2D, 0xFE, 0x8C, 0xFE, 0x8D, 0x02, 0xFE, 0x8C, 0x81, 0xFE, 0xAD, 0xFE, 0x8C, 0x01, 0xFE, 0xAC, 0x01, 0xFE, 0x8C, 0x83, 0xFE, 0xAC, 0xFE, 0xAD, 0xFE, 0x8D, 0xFE, 0x8C, 0x07, 0xFE, 0xAD, 0x01, 0xFE, 0x8C, 0x01, 0xFE, 0xAC, 0x83, 0xFE, 0xAD, 0xFE, 0x8C, 0xFE, 0xAD, 0xFE, 0x8C, 0x01, 0xFE, 0x8D, 0x81, 0xFE, 0x8C, 0xFE, 0xAD, 0x01, 0xFE, 0x8C, 0x01, 0xFE, 0xAD, 0x01, 0xFE, 0xAC, 0x01, 0xFE, 0x8C, 0x82, 0xFE, 0xAC, 0xFE, 0x8C, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x8B, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0xAD, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0x8D, 0xFE, 0xAC, 0xFE, + 0x8C, 0xFE, 0xAC, 0xFE, 0x8D, 0x01, 0xFE, 0xAD, 0x81, 0xFE, 0x8C, 0xFE, 0xAC, 0x01, 0xFE, 0x8C, 0x84, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0xAC, 0xFE, 0x8D, 0xFE, 0x8C, 0x01, 0xFE, 0xAD, 0x02, 0xFE, 0x8C, 0x82, 0xFE, 0xAD, 0xFE, 0x8C, 0xFE, 0xAC, 0x0F, 0xFE, 0xAD, 0x83, 0xFE, 0x8C, 0xFE, 0xAC, 0xFE, 0x8D, 0xFE, 0xAC, 0x01, 0xFE, 0xAD, 0x80, 0xFE, 0x8C, 0x10, 0xFE, 0xAD, 0x83, 0xFE, 0xAC, 0xFE, 0x8C, 0xFE, 0xAD, 0xFE, 0x8C, 0x03, 0xFE, 0x8D, 0x02, 0xFE, 0xAD, 0x80, 0xFE, 0x8D, 0x03, 0xFE, 0xAD, 0x82, 0xFE, 0x8D, 0xFE, 0x8E, 0xFE, 0xAD, 0x01, 0xFE, 0xAE, 0x80, 0xFE, 0xAD, 0x0B, 0xFE, 0xAE, 0x01, 0xFE, 0x8E, 0x02, 0xFE, 0xAE, 0x80, 0xFE, 0x8E, 0x02, 0xFE, 0xAE, 0x01, 0xFE, 0x8E, 0x81, 0xFE, 0xAE, 0xFE, 0xAF, 0x01, 0xFE, 0xAE, 0x81, 0xFE, 0xAF, 0xFE, 0x8E, 0x04, 0xFE, 0xAF, 0x88, 0xFE, 0x8F, 0xFE, 0xB0, 0xFE, 0xAF, 0xFE, 0xB0, 0xFE, 0x90, 0xE4, 0x71, 0xB8, 0xD2, 0xA1, 0x11, 0x99, 0x11, 0x01, 0x99, 0x31, 0x84, 0x71, 0x32, 0x71, 0x33, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xD2, 0x04, 0x00, 0x1F, 0x80, 0x00, 0x7F, 0x01, 0x00, 0xDF, 0x01, 0x01, 0x1F, 0x83, 0x04, 0x9F, 0x07, 0xF0, 0x07, 0xE2, 0x07, 0xF4, 0x01, 0x07, 0xFF, 0x80, 0x3A, 0xF6, 0x01, 0x49, 0x32, 0x83, 0x41, 0x11, 0x39, 0x11, 0x39, 0x10, 0x38, 0xF0, 0x01, 0x30, 0xEF, 0x80, 0x28, 0xEE, 0x01, 0x28, 0xCE, 0x80, 0x20, 0xCE, 0x01, 0x20, 0xCD, 0x02, 0x20, 0xAD, 0x81, 0x18, 0xAC, 0x20, 0xAC, 0x01, 0x18, 0xAD, 0x1D, 0x18, 0xAC, 0x01, 0x01, 0x18, 0x02, 0x18, 0xAC, 0x83, 0x20, 0xAC, 0x18, + 0xAC, 0x20, 0xAD, 0x18, 0xAD, 0x01, 0x01, 0x18, 0x80, 0x18, 0xAC, 0x01, 0x18, 0xAD, 0x80, 0x18, 0xAC, 0x01, 0x18, 0xAD, 0x36, 0x18, 0xAC, 0x86, 0x00, 0xF8, 0x01, 0x18, 0x00, 0xF5, 0x18, 0xAD, 0x20, 0xAC, 0x18, 0xAD, 0x20, 0xAD, 0x04, 0x20, 0xAC, 0x3F, 0x18, 0xAC, 0x85, 0x20, 0xAD, 0x18, 0xCD, 0x01, 0x16, 0x01, 0x18, 0x01, 0x17, 0x18, 0xCF, 0x01, 0x20, 0xAC, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x81, 0x18, 0xAC, 0x20, 0xAC, 0x32, 0x18, 0xAC, 0x83, 0x20, 0xAD, 0x20, 0xAC, 0x60, 0xEF, 0x99, 0x12, 0x01, 0x99, 0x31, 0x81, 0xB2, 0x70, 0xF6, 0x2D, 0x01, 0xFE, 0x8C, 0x02, 0xFE, 0x8D, 0x81, 0xFE, 0x8C, 0xFE, 0x8D, 0x03, 0xFE, 0x8C, 0x02, 0xFE, 0x8D, 0x08, 0xFE, 0x8C, 0x80, 0xFE, 0x8D, 0x01, 0xFE, 0x8C, 0x02, 0xFE, 0x8D, 0x82, 0xFE, 0x8C, 0xFE, 0x8D, 0xFE, 0x8C, 0x03, 0xFE, 0x8D, 0x80, 0xFE, 0x8C, 0x08, 0xFE, 0x8D, 0x81, 0xFE, 0x8C, 0xFE, 0x8D, 0x03, 0xFE, 0x8C, 0x80, 0xFE, 0x8D, 0x02, 0xFE, 0x8C, 0x01, 0xFE, 0x8D, 0x02, 0xFE, 0x8C, 0x01, 0xFE, 0x8D, 0x01, 0xFE, 0x8C, 0x80, 0xFE, 0x8D, 0x03, 0xFE, 0x8C, 0x01, 0xFE, 0x8D, 0x81, 0xFE, 0x8C, 0xFE, 0x8D, 0x02, 0xFE, 0x8C, 0x12, 0xFE, 0x8D, 0x01, 0xFE, 0x8C, 0x83, 0xFE, 0x6D, 0xFE, 0x8D, 0xFE, 0x8C, 0xFE, 0x8D, 0x0A, 0xFE, 0x8C, 0x04, 0xFE, 0x8D, 0x80, 0xFE, 0x8C, 0x09, 0xFE, 0x8D, 0x80, 0xFE, 0x8E, 0x04, 0xFE, 0x8D, 0x10, 0xFE, 0x8E, 0x80, 0xFE, 0x8F, 0x01, 0xFE, 0x8E, 0x01, 0xFE, 0x8F, 0x80, 0xFE, 0x8E, 0x01, 0xFE, 0x8F, 0x82, 0xFE, 0x8E, 0xFE, 0x8F, 0xFE, 0x8E, + 0x0A, 0xFE, 0x8F, 0x01, 0xFE, 0x90, 0x01, 0xFE, 0xB0, 0x82, 0xE4, 0x71, 0xB8, 0xD1, 0xA1, 0x11, 0x01, 0x99, 0x31, 0x86, 0x99, 0x12, 0x89, 0x11, 0x51, 0x74, 0x69, 0x53, 0xB0, 0xF1, 0xB0, 0xD1, 0x90, 0xB4, 0x03, 0x00, 0x1F, 0x8F, 0x00, 0x3F, 0x00, 0x9F, 0x00, 0xDF, 0x00, 0xFF, 0x01, 0x1F, 0x01, 0x5F, 0x04, 0x9F, 0x07, 0xF1, 0x07, 0xE2, 0x07, 0xF6, 0x07, 0xFF, 0x0F, 0x9F, 0x4A, 0x35, 0x49, 0x33, 0x49, 0x32, 0x41, 0x31, 0x01, 0x39, 0x10, 0x80, 0x38, 0xF0, 0x01, 0x30, 0xEF, 0x02, 0x28, 0xCE, 0x02, 0x20, 0xCD, 0x02, 0x20, 0xAD, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x1B, 0x18, 0xAC, 0x01, 0x01, 0x18, 0x02, 0x18, 0xAC, 0x83, 0x20, 0xAC, 0x18, 0xAC, 0x18, 0xAD, 0x20, 0xAD, 0x01, 0x01, 0x18, 0x81, 0x18, 0xCE, 0x20, 0xAC, 0x04, 0x18, 0xAC, 0x81, 0x20, 0xAD, 0x20, 0xAC, 0x33, 0x18, 0xAC, 0x86, 0x18, 0xCE, 0x01, 0x17, 0x01, 0x18, 0x01, 0x15, 0x18, 0xAD, 0x20, 0xAC, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x41, 0x20, 0xAC, 0x87, 0x18, 0xAD, 0x00, 0xF6, 0x01, 0x18, 0x01, 0x17, 0x18, 0xCE, 0x18, 0xAC, 0x20, 0xCC, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x02, 0x20, 0xAC, 0x82, 0x20, 0xAD, 0x18, 0xCC, 0x20, 0xAD, 0x31, 0x20, 0xAC, 0x83, 0x18, 0xAC, 0x20, 0xAC, 0x28, 0xAD, 0x81, 0x10, 0x01, 0x99, 0x31, 0x83, 0x99, 0x11, 0xAA, 0x31, 0xF5, 0xCD, 0xFE, 0x8C, 0x15, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x01, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x0E, 0xFE, 0x6C, 0x80, 0xFE, 0x8C, 0x04, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x01, + 0xFE, 0x6C, 0x82, 0xFE, 0x6D, 0xFE, 0x6C, 0xFE, 0x6D, 0x03, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x0A, 0xFE, 0x6C, 0x80, 0xFE, 0x6D, 0x19, 0xFE, 0x6C, 0x80, 0xFE, 0x8C, 0x01, 0xFE, 0x6D, 0x11, 0xFE, 0x6C, 0x83, 0xFE, 0x6D, 0xFE, 0x6C, 0xFE, 0x6D, 0xFE, 0x6C, 0x03, 0xFE, 0x6D, 0x80, 0xFE, 0x6C, 0x02, 0xFE, 0x6D, 0x80, 0xFE, 0x8E, 0x01, 0xFE, 0x8D, 0x81, 0xFE, 0x6E, 0xFE, 0x8D, 0x0A, 0xFE, 0x6E, 0x03, 0xFE, 0x6F, 0x01, 0xFE, 0x8F, 0x02, 0xFE, 0x6F, 0x80, 0xFE, 0x8F, 0x01, 0xFE, 0x6F, 0x01, 0xFE, 0x8F, 0x01, 0xFE, 0x6F, 0x80, 0xFE, 0x8F, 0x01, 0xFE, 0x6F, 0x01, 0xFE, 0x8F, 0x80, 0xFE, 0x6F, 0x01, 0xFE, 0x8F, 0x81, 0xFE, 0x6F, 0xFE, 0x90, 0x01, 0xFE, 0x8F, 0x01, 0xFE, 0x90, 0x82, 0xE4, 0x71, 0xB0, 0xD1, 0xA1, 0x11, 0x02, 0x99, 0x31, 0x83, 0x99, 0x12, 0x59, 0x53, 0x51, 0x53, 0x71, 0x33, 0x01, 0xB0, 0xD1, 0x80, 0x78, 0x96, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x3F, 0x00, 0x5F, 0x00, 0xBF, 0x01, 0x01, 0x1F, 0x8D, 0x01, 0x3F, 0x01, 0x7F, 0x04, 0xBF, 0x07, 0xF2, 0x07, 0xE2, 0x07, 0xF5, 0x07, 0xFF, 0x73, 0x36, 0x51, 0x53, 0x49, 0x33, 0x49, 0x32, 0x41, 0x31, 0x41, 0x10, 0x39, 0x10, 0x02, 0x30, 0xEF, 0x01, 0x28, 0xCE, 0x80, 0x28, 0xCD, 0x02, 0x20, 0xCD, 0x02, 0x20, 0xAD, 0x01, 0x20, 0xAC, 0x80, 0x20, 0xAD, 0x01, 0x18, 0xAC, 0x18, 0x20, 0xAC, 0x81, 0x18, 0xAC, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x01, 0x01, 0x18, 0x83, 0x18, 0xAC, 0x20, 0xAC, 0x18, 0xAC, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x84, 0x20, 0xAC, 0x00, 0xF5, 0x01, 0x17, 0x00, 0xF7, 0x18, 0xCE, + 0x01, 0x20, 0xAC, 0x81, 0x18, 0xAC, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x80, 0x18, 0xAD, 0x34, 0x20, 0xAC, 0x87, 0x18, 0xAE, 0x01, 0x17, 0x01, 0x18, 0x08, 0xF5, 0x18, 0xAD, 0x18, 0xAC, 0x18, 0xCD, 0x20, 0xAC, 0x02, 0x18, 0xAC, 0x3F, 0x20, 0xAC, 0x83, 0x08, 0xF3, 0x01, 0x18, 0x01, 0x17, 0x18, 0xCE, 0x01, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x05, 0x18, 0xAC, 0x30, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x82, 0x18, 0xAC, 0x28, 0xAD, 0x91, 0x11, 0x02, 0x99, 0x31, 0x83, 0xA1, 0x71, 0xCB, 0xCF, 0xF6, 0x0D, 0xFE, 0x4D, 0x08, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x0C, 0xFE, 0x6D, 0x82, 0xFE, 0x6C, 0xFE, 0x6D, 0xFE, 0x4D, 0x04, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x04, 0xFE, 0x6D, 0x82, 0xFE, 0x4D, 0xFE, 0x6D, 0xFE, 0x6C, 0x07, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x02, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x05, 0xFE, 0x6D, 0x82, 0xFE, 0x6C, 0xFE, 0x6D, 0xFE, 0x4D, 0x08, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x2C, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x02, 0xFE, 0x6D, 0x80, 0xFE, 0x4D, 0x01, 0xFE, 0x6E, 0x81, 0xFE, 0x4E, 0xFE, 0x6D, 0x04, 0xFE, 0x6E, 0x80, 0xFE, 0x6F, 0x01, 0xFE, 0x6E, 0x11, 0xFE, 0x6F, 0x01, 0xFE, 0x70, 0x80, 0xFE, 0x6F, 0x08, 0xFE, 0x70, 0x80, 0xFE, 0x90, 0x03, 0xFE, 0x70, 0x02, 0xFE, 0x71, 0x84, 0xE4, 0x71, 0xA8, 0xF1, 0xA1, 0x11, 0x99, 0x31, 0x99, 0x32, 0x01, 0x99, 0x31, 0x83, 0x69, 0x33, 0x51, 0x53, 0x59, 0x53, 0x71, 0x53, 0x01, 0xB0, 0xD1, 0x80, 0x58, 0x78, 0x01, 0x00, 0x1F, 0x83, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0x9F, 0x00, 0xFF, + 0x01, 0x01, 0x3F, 0x88, 0x01, 0x7F, 0x01, 0x9F, 0x03, 0x3F, 0x07, 0xF3, 0x07, 0xE2, 0x07, 0xF3, 0x07, 0xFF, 0xA8, 0xF1, 0x69, 0x32, 0x01, 0x49, 0x32, 0x83, 0x49, 0x31, 0x41, 0x11, 0x39, 0x10, 0x31, 0x10, 0x01, 0x30, 0xEF, 0x01, 0x28, 0xCE, 0x80, 0x28, 0xCD, 0x02, 0x20, 0xCD, 0x02, 0x20, 0xAD, 0x01, 0x20, 0xAC, 0x80, 0x20, 0xAD, 0x1A, 0x20, 0xAC, 0x81, 0x18, 0xAC, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x01, 0x01, 0x18, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x8B, 0x18, 0xAC, 0x20, 0xAD, 0x20, 0xAC, 0x18, 0xAC, 0x18, 0xAD, 0x00, 0xF5, 0x01, 0x18, 0x01, 0x17, 0x18, 0xCE, 0x20, 0xAC, 0x18, 0xAC, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x34, 0x20, 0xAC, 0x83, 0x18, 0xAC, 0x20, 0xAC, 0x18, 0xCE, 0x08, 0xF5, 0x47, 0x01, 0x18, 0x84, 0x01, 0x17, 0x00, 0xF7, 0x18, 0xCE, 0x20, 0xAC, 0x18, 0xCC, 0x01, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x38, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x02, 0x18, 0xAC, 0x84, 0x20, 0xAC, 0x28, 0xCD, 0x81, 0x11, 0x99, 0x31, 0x99, 0x12, 0x01, 0x99, 0x31, 0x88, 0x99, 0x11, 0xBA, 0xB0, 0xDC, 0x6F, 0xE5, 0x0F, 0xE5, 0x0E, 0xFE, 0x4E, 0xFE, 0x6E, 0xFE, 0x4E, 0xFE, 0x6D, 0x01, 0xFE, 0x4E, 0x60, 0xFE, 0x4D, 0x01, 0xFE, 0x4E, 0x05, 0xFE, 0x4D, 0x03, 0xFE, 0x4E, 0x01, 0xFE, 0x6E, 0x02, 0xFE, 0x4E, 0x01, 0xFE, 0x6E, 0x82, 0xFE, 0x4E, 0xFE, 0x6F, 0xFE, 0x6E, 0x05, 0xFE, 0x6F, 0x83, 0xFE, 0x4F, 0xFE, 0x6F, 0xFE, 0x70, 0xFE, 0x50, 0x0F, 0xFE, 0x70, 0x0C, 0xFE, 0x71, 0x84, 0xF6, 0x12, 0xE5, 0x31, 0xE5, 0x12, 0xD4, 0x72, 0xB2, 0x71, 0x02, 0x99, 0x31, + 0x84, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x61, 0x53, 0x51, 0x53, 0x01, 0x59, 0x54, 0x80, 0x71, 0x54, 0x01, 0xB0, 0xF1, 0x95, 0x28, 0x5C, 0x00, 0x3F, 0x00, 0x5F, 0x00, 0x7F, 0x00, 0xBF, 0x00, 0xFF, 0x01, 0x3F, 0x01, 0x5F, 0x01, 0x7F, 0x01, 0x9F, 0x01, 0xBF, 0x02, 0xFF, 0x07, 0xF4, 0x07, 0xE3, 0x07, 0xF1, 0x2E, 0x5C, 0xA9, 0x11, 0x69, 0x32, 0x51, 0x32, 0x49, 0x31, 0x41, 0x32, 0x41, 0x10, 0x01, 0x39, 0x10, 0x81, 0x30, 0xEF, 0x30, 0xEE, 0x01, 0x28, 0xCE, 0x80, 0x28, 0xCD, 0x02, 0x20, 0xCD, 0x80, 0x20, 0xAC, 0x01, 0x20, 0xAD, 0x02, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x17, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x02, 0x18, 0xAC, 0x01, 0x01, 0x18, 0x82, 0x18, 0xAC, 0x20, 0xAC, 0x18, 0xAC, 0x02, 0x20, 0xAC, 0x87, 0x18, 0xCC, 0x20, 0xAC, 0x18, 0xAD, 0x01, 0x15, 0x01, 0x18, 0x00, 0xF7, 0x18, 0xAE, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x18, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x84, 0x10, 0xD0, 0x10, 0xD2, 0x08, 0xD2, 0x18, 0xAE, 0x20, 0xAC, 0x02, 0x18, 0xAC, 0x02, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x04, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x82, 0x18, 0xCD, 0x01, 0x16, 0x01, 0x17, 0x01, 0x01, 0x18, 0x01, 0x01, 0x17, 0x01, 0x01, 0x18, 0x40, 0x01, 0x17, 0x81, 0x18, 0xCE, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x82, 0x18, 0xAC, 0x20, 0xAC, 0x18, 0xAC, 0x37, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x02, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x01, 0x20, + 0xAC, 0x82, 0x28, 0xCC, 0x61, 0x0F, 0x99, 0x11, 0x07, 0x99, 0x31, 0x80, 0x99, 0x32, 0x75, 0x99, 0x31, 0x80, 0x99, 0x12, 0x03, 0x99, 0x31, 0x82, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x01, 0x99, 0x31, 0x01, 0x99, 0x11, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x17, 0x99, 0x31, 0x01, 0x99, 0x11, 0x81, 0x99, 0x31, 0x99, 0x32, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x80, 0x99, 0x12, 0x03, 0x99, 0x31, 0x83, 0x89, 0x12, 0x51, 0x53, 0x59, 0x53, 0x51, 0x53, 0x01, 0x59, 0x74, 0x88, 0x79, 0x53, 0xB0, 0xF1, 0xB0, 0xD1, 0x08, 0x7F, 0x00, 0x9F, 0x00, 0xBF, 0x00, 0xDF, 0x01, 0x1F, 0x01, 0x5F, 0x02, 0x01, 0x9F, 0x01, 0x01, 0xDF, 0x8B, 0x01, 0xFF, 0x07, 0xF7, 0x07, 0xE3, 0x07, 0xEF, 0x54, 0x98, 0xA8, 0xF1, 0x71, 0x32, 0x49, 0x52, 0x49, 0x31, 0x41, 0x31, 0x41, 0x10, 0x39, 0x10, 0x01, 0x30, 0xEF, 0x80, 0x30, 0xEE, 0x01, 0x28, 0xCE, 0x80, 0x28, 0xCD, 0x02, 0x20, 0xCD, 0x05, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x18, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x01, 0x01, 0x17, 0x80, 0x20, 0xAC, 0x02, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x84, 0x18, 0xAD, 0x01, 0x15, 0x01, 0x17, 0x00, 0xF7, 0x18, 0xAE, 0x02, 0x18, 0xAC, 0x1C, 0x20, 0xAC, 0x83, 0x18, 0xAD, 0x00, 0xF5, 0x01, 0x17, 0x01, 0x18, 0x01, 0x01, 0x17, 0x80, 0x08, 0xF3, 0x01, 0x20, 0xAC, 0x81, 0x18, 0xAC, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x82, 0x20, 0xCC, 0x18, 0xAC, 0x20, 0xAC, 0x02, 0x18, 0xAC, + 0x80, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x03, 0x20, 0xAC, 0x02, 0x18, 0xAC, 0x43, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x82, 0x18, 0xAC, 0x20, 0xAC, 0x18, 0xAC, 0x39, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x03, 0x20, 0xAC, 0x82, 0x18, 0xAC, 0x40, 0xCE, 0x79, 0x10, 0x01, 0x99, 0x31, 0x80, 0x99, 0x32, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x78, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x81, 0xA1, 0x11, 0x99, 0x11, 0x2B, 0x99, 0x31, 0x81, 0x99, 0x12, 0x71, 0x32, 0x02, 0x51, 0x53, 0x01, 0x59, 0x74, 0x88, 0x61, 0x74, 0x91, 0x13, 0xB0, 0xF1, 0x98, 0xF3, 0x00, 0xDF, 0x00, 0xFF, 0x01, 0x1F, 0x01, 0x3F, 0x01, 0x7F, 0x01, 0x01, 0xBF, 0x01, 0x01, 0xDF, 0x01, 0x01, 0xFF, 0x8E, 0x02, 0x1F, 0x06, 0xD9, 0x07, 0xE5, 0x07, 0xEC, 0x73, 0x55, 0xA8, 0xF1, 0x79, 0x32, 0x49, 0x32, 0x49, 0x31, 0x41, 0x31, 0x41, 0x10, 0x39, 0x10, 0x39, 0x0F, 0x30, 0xEF, 0x30, 0xEE, 0x01, 0x28, 0xCE, 0x01, 0x28, 0xCD, 0x01, 0x20, 0xCD, 0x20, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x86, 0x18, 0xAC, 0x01, 0x17, 0x00, 0xF7, 0x20, 0xAC, 0x18, 0xAC, 0x20, 0xAC, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x02, 0x20, 0xAC, 0x84, 0x20, 0xAD, 0x00, 0xF5, 0x01, 0x17, 0x01, 0x16, 0x18, 0xCD, 0x1E, 0x20, 0xAC, 0x84, 0x00, 0xF5, 0x01, 0x17, 0x01, 0x18, 0x08, 0xF5, 0x01, 0x16, 0x01, 0x01, 0x17, 0x80, 0x10, 0xF2, 0x05, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x03, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x80, 0x20, 0xAB, 0x7F, 0x20, 0xAC, 0x0E, 0x20, 0xAC, 0x80, 0x18, 0xAC, + 0x07, 0x20, 0xAC, 0x83, 0x18, 0xAB, 0x30, 0xCC, 0x58, 0xCF, 0x79, 0x10, 0x01, 0x99, 0x31, 0x80, 0x99, 0x12, 0x01, 0x99, 0x31, 0x84, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x99, 0x32, 0x99, 0x31, 0x5F, 0x99, 0x11, 0x13, 0x99, 0x31, 0x01, 0x99, 0x11, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x05, 0x99, 0x31, 0x80, 0x99, 0x11, 0x1F, 0x99, 0x31, 0x85, 0xA1, 0x11, 0x99, 0x11, 0x89, 0x32, 0x69, 0x32, 0x51, 0x52, 0x51, 0x53, 0x01, 0x59, 0x53, 0x8F, 0x59, 0x74, 0x61, 0x74, 0x61, 0x75, 0x79, 0x54, 0xA8, 0xF1, 0xB0, 0xF1, 0x80, 0xF5, 0x01, 0x3F, 0x01, 0x7F, 0x01, 0x9F, 0x01, 0xBF, 0x01, 0xDF, 0x01, 0xFF, 0x01, 0xDF, 0x01, 0xFF, 0x02, 0x1F, 0x02, 0x02, 0x3F, 0x8E, 0x05, 0x7D, 0x07, 0xE8, 0x07, 0xE9, 0x82, 0xD5, 0xA0, 0xF1, 0x81, 0x32, 0x51, 0x32, 0x49, 0x31, 0x41, 0x31, 0x41, 0x10, 0x38, 0xF0, 0x38, 0xEF, 0x30, 0xEF, 0x30, 0xEE, 0x28, 0xCE, 0x02, 0x28, 0xCD, 0x01, 0x20, 0xCD, 0x21, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x82, 0x00, 0xF7, 0x01, 0x17, 0x10, 0xD0, 0x01, 0x18, 0xAC, 0x03, 0x20, 0xAC, 0x81, 0x18, 0xAC, 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x86, 0x18, 0xCD, 0x00, 0xF5, 0x01, 0x17, 0x08, 0xF5, 0x18, 0xAD, 0x20, 0xAC, 0x20, 0xCC, 0x17, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x80, 0x18, 0xAD, 0x01, 0x01, 0x17, 0x80, 0x10, 0xD0, 0x01, 0x20, 0xAC, 0x82, 0x08, 0xF3, 0x01, 0x17, 0x01, 0x15, 0x03, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x05, 0x20, 0xAC, 0x80, 0x20, 0xCC, 0x02, 0x20, 0xAC, 0x80, 0x20, 0xCC, 0x02, 0x20, 0xAC, 0x01, + 0x20, 0xAB, 0x4A, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x38, 0x20, 0xAC, 0x80, 0x18, 0xCC, 0x0D, 0x20, 0xAC, 0x80, 0x20, 0xAB, 0x70, 0x20, 0xAC, 0x81, 0x20, 0xCC, 0x20, 0xAD, 0x01, 0x20, 0xCD, 0x04, 0x28, 0xCD, 0x80, 0x28, 0xCE, 0x01, 0x28, 0xEE, 0x80, 0x30, 0xEE, 0x01, 0x30, 0xEF, 0x8E, 0x30, 0xEE, 0x38, 0xEF, 0x51, 0x10, 0x61, 0x10, 0x59, 0x10, 0x69, 0x30, 0x79, 0x31, 0x81, 0x31, 0x81, 0x30, 0x99, 0x31, 0xA9, 0x32, 0xA1, 0x31, 0xB1, 0x31, 0xC9, 0x12, 0xC9, 0x11, 0x02, 0xC8, 0xF2, 0x81, 0xC8, 0xD1, 0xC0, 0xD1, 0x0A, 0xC0, 0xB1, 0x82, 0xC0, 0xD1, 0xB8, 0xB1, 0xC0, 0xD1, 0x06, 0xB8, 0xD1, 0x80, 0xB0, 0xD1, 0x01, 0xB8, 0xD1, 0x01, 0xB0, 0xD1, 0x80, 0xB0, 0xF1, 0x02, 0xB0, 0xD1, 0x02, 0xB0, 0xF1, 0x84, 0x51, 0x58, 0x01, 0xBF, 0x01, 0xDF, 0x01, 0xFF, 0x02, 0x1F, 0x01, 0x02, 0x3F, 0x81, 0x02, 0x1F, 0x02, 0x3F, 0x03, 0x02, 0x5F, 0x8C, 0x04, 0x1F, 0x07, 0xED, 0x07, 0xE4, 0x7A, 0xB4, 0xA9, 0x11, 0x91, 0x12, 0x51, 0x32, 0x49, 0x31, 0x41, 0x11, 0x41, 0x10, 0x39, 0x10, 0x38, 0xEF, 0x30, 0xEF, 0x01, 0x30, 0xEE, 0x02, 0x28, 0xCD, 0x81, 0x20, 0xCD, 0x20, 0xCC, 0x23, 0x20, 0xAC, 0x86, 0x18, 0xAC, 0x10, 0xD0, 0x01, 0x17, 0x00, 0xF7, 0x10, 0xD0, 0x20, 0xAC, 0x20, 0xCC, 0x01, 0x18, 0xAC, 0x06, 0x20, 0xAC, 0x80, 0x00, 0xF5, 0x21, 0x01, 0x17, 0x02, 0x20, 0xAC, 0x80, 0x10, 0xEF, 0x01, 0x01, 0x17, 0x01, 0x20, 0xAC, 0x80, 0x20, 0xAB, 0x04, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAC, 0x80, 0x20, 0xAB, 0x04, + 0x20, 0xAC, 0x01, 0x18, 0xAC, 0x80, 0x18, 0xCC, 0x47, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x02, 0x20, 0xAC, 0x82, 0x20, 0xCC, 0x20, 0xAC, 0x20, 0xAB, 0x3D, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x02, 0x20, 0xAC, 0x83, 0x18, 0xAC, 0x20, 0xAC, 0x20, 0xAB, 0x18, 0xAC, 0x05, 0x20, 0xAC, 0x80, 0x20, 0xAB, 0x6D, 0x20, 0xAC, 0x80, 0x20, 0xCC, 0x01, 0x20, 0xCD, 0x03, 0x28, 0xCD, 0x81, 0x28, 0xAD, 0x28, 0xCE, 0x01, 0x30, 0xCE, 0x84, 0x30, 0xEE, 0x81, 0x51, 0xB1, 0x92, 0xC9, 0xB3, 0xC9, 0xB2, 0x02, 0xC9, 0x92, 0x02, 0xC9, 0x72, 0x01, 0xC9, 0x52, 0x02, 0xC9, 0x32, 0x01, 0xC9, 0x12, 0x80, 0xC1, 0x11, 0x01, 0xC8, 0xF1, 0x82, 0xC8, 0xD1, 0xC0, 0xD1, 0xC8, 0xB1, 0x0A, 0xC0, 0xB1, 0x81, 0xC0, 0xD1, 0xB8, 0xB1, 0x06, 0xB8, 0xD1, 0x80, 0xB0, 0xD2, 0x02, 0xB8, 0xD1, 0x80, 0xB0, 0xD1, 0x06, 0xB0, 0xF1, 0x84, 0xA8, 0xF1, 0x39, 0xBB, 0x02, 0x1F, 0x02, 0x3F, 0x02, 0x5F, 0x01, 0x02, 0x7F, 0x01, 0x02, 0x5F, 0x04, 0x02, 0x7F, 0x8C, 0x02, 0x9F, 0x07, 0xF3, 0x07, 0xE2, 0x99, 0x72, 0xA9, 0x11, 0xA1, 0x12, 0x49, 0x52, 0x49, 0x32, 0x41, 0x31, 0x41, 0x10, 0x39, 0x10, 0x38, 0xEF, 0x30, 0xEF, 0x01, 0x30, 0xEE, 0x02, 0x28, 0xCD, 0x81, 0x20, 0xCD, 0x20, 0xCC, 0x21, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x02, 0x20, 0xAC, 0x86, 0x08, 0xF2, 0x01, 0x17, 0x01, 0x16, 0x10, 0xD0, 0x20, 0xAC, 0x20, 0xAB, 0x18, 0xAC, 0x04, 0x20, 0xAC, 0x84, 0x18, 0xAC, 0x20, 0xAC, 0x20, 0xAD, 0x00, 0xF4, 0x00, 0xF7, 0x19, 0x01, 0x17, 0x86, 0x01, 0x16, 0x01, 0x17, 0x01, 0x16, 0x01, 0x17, 0x01, 0x16, + 0x01, 0x17, 0x18, 0xCF, 0x01, 0x20, 0xAC, 0x82, 0x10, 0xD1, 0x00, 0xF7, 0x01, 0x15, 0x03, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAC, 0x03, 0x03, 0xB7, 0x80, 0x03, 0xB8, 0x03, 0x03, 0xB7, 0x04, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x45, 0x20, 0xAC, 0x81, 0x20, 0xAB, 0x20, 0xAC, 0x02, 0x20, 0xAB, 0x3A, 0x20, 0xAC, 0x84, 0x18, 0xAC, 0x20, 0xAC, 0x18, 0xCC, 0x18, 0xAC, 0x20, 0xAB, 0x01, 0x20, 0xAC, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x01, 0x20, 0xAB, 0x01, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x01, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x81, 0x20, 0xAC, 0x20, 0xAB, 0x69, 0x20, 0xAC, 0x02, 0x20, 0xCC, 0x03, 0x28, 0xCD, 0x84, 0x30, 0xCD, 0x28, 0xEE, 0x30, 0xEE, 0x49, 0x0E, 0xA9, 0xB2, 0x01, 0xC9, 0xD3, 0x01, 0xC9, 0xB3, 0x01, 0xC9, 0x92, 0x02, 0xC9, 0x72, 0x02, 0xC9, 0x52, 0x01, 0xC9, 0x32, 0x02, 0xC9, 0x12, 0x81, 0xC0, 0xF2, 0xC8, 0xD1, 0x01, 0xC0, 0xD1, 0x80, 0xC8, 0xB1, 0x0A, 0xC0, 0xB1, 0x0A, 0xB8, 0xD1, 0x01, 0xB0, 0xD1, 0x84, 0xB8, 0xD2, 0xB8, 0xD1, 0xB0, 0xF1, 0xB0, 0xD1, 0xB0, 0xF2, 0x02, 0xB0, 0xF1, 0x01, 0xA8, 0xF1, 0x81, 0x12, 0x3E, 0x02, 0x9F, 0x02, 0x02, 0xBF, 0x02, 0x02, 0x9F, 0x02, 0x02, 0xBF, 0x01, 0x02, 0x9F, 0x88, 0x02, 0xDF, 0x06, 0xB9, 0x07, 0xE3, 0xA1, 0x11, 0xA9, 0x11, 0xA1, 0x11, 0x59, 0x32, 0x49, 0x31, 0x49, 0x11, 0x01, 0x41, 0x10, 0x81, 0x39, 0x0F, 0x38, 0xEF, 0x01, 0x30, 0xEE, 0x02, 0x28, 0xCD, 0x81, 0x20, 0xCD, 0x20, 0xCC, 0x06, 0x20, 0xAC, 0x80, 0x20, 0xAB, 0x19, 0x20, 0xAC, 0x81, 0x20, 0xAB, + 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x85, 0x20, 0xAC, 0x08, 0xD3, 0x01, 0x16, 0x01, 0x17, 0x10, 0xCF, 0x20, 0xAC, 0x02, 0x20, 0xAB, 0x01, 0x20, 0xAC, 0x82, 0x20, 0xAB, 0x20, 0xAC, 0x18, 0xAB, 0x03, 0x20, 0xAC, 0x80, 0x20, 0xAB, 0x17, 0x20, 0xAC, 0x86, 0x20, 0xAB, 0x20, 0xAC, 0x20, 0xAB, 0x20, 0xAC, 0x00, 0xF4, 0x01, 0x17, 0x01, 0x16, 0x01, 0x08, 0xF2, 0x84, 0x01, 0x17, 0x01, 0x16, 0x08, 0xF2, 0x20, 0xAC, 0x18, 0xAC, 0x04, 0x20, 0xAC, 0x01, 0x03, 0xB7, 0x80, 0x03, 0xB8, 0x05, 0x03, 0xB7, 0x80, 0x20, 0xAC, 0x02, 0x20, 0xAB, 0x03, 0x20, 0xAC, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAC, 0x41, 0x20, 0xAB, 0x80, 0x20, 0xAC, 0x02, 0x20, 0xAB, 0x81, 0x20, 0xAC, 0x20, 0xAB, 0x39, 0x20, 0xAC, 0x82, 0x20, 0xAB, 0x20, 0xAC, 0x20, 0xAB, 0x01, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x82, 0x18, 0xAC, 0x20, 0xAC, 0x20, 0xAB, 0x02, 0x20, 0xAC, 0x80, 0x18, 0xAB, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAC, 0x05, 0x20, 0xAB, 0x69, 0x20, 0xAC, 0x81, 0x20, 0xCC, 0x20, 0xCD, 0x05, 0x28, 0xCD, 0x81, 0x30, 0xED, 0x69, 0x2F, 0x01, 0xC9, 0xD3, 0x02, 0xC9, 0xB3, 0x01, 0xC9, 0x92, 0x02, 0xC9, 0x72, 0x01, 0xC9, 0x52, 0x01, 0xC9, 0x32, 0x80, 0xC1, 0x32, 0x01, 0xC9, 0x12, 0x82, 0xC8, 0xF2, 0xC8, 0xF1, 0xC8, 0xD1, 0x01, 0xC0, 0xD1, 0x0A, 0xC0, 0xB1, 0x09, 0xB8, 0xD1, 0x82, 0xB0, 0xD1, 0xB8, 0xD1, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x81, 0xB0, 0xF1, 0xB0, 0xD1, 0x05, 0xB0, 0xF1, 0x81, 0xA8, 0xF1, 0x99, 0x33, 0x01, 0x02, 0xDF, 0x01, 0x02, 0xFF, 0x81, 0x02, 0xDF, 0x02, 0xBF, 0x04, 0x02, + 0xDF, 0x01, 0x02, 0xBF, 0x83, 0x02, 0xFF, 0x05, 0x1E, 0x07, 0xE8, 0xA9, 0x12, 0x01, 0xA1, 0x11, 0x80, 0x69, 0x32, 0x01, 0x49, 0x31, 0x83, 0x41, 0x30, 0x41, 0x0F, 0x39, 0x0F, 0x38, 0xEE, 0x01, 0x30, 0xEE, 0x02, 0x28, 0xCD, 0x81, 0x20, 0xCD, 0x20, 0xCC, 0x06, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x17, 0x20, 0xAC, 0x81, 0x20, 0xAB, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x83, 0x08, 0xF2, 0x01, 0x16, 0x01, 0x17, 0x10, 0xD0, 0x01, 0x20, 0xAB, 0x82, 0x20, 0xAC, 0x20, 0xAB, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x01, 0x20, 0xAC, 0x80, 0x18, 0xCB, 0x19, 0x20, 0xAC, 0x84, 0x18, 0xAB, 0x20, 0xAB, 0x18, 0xAE, 0x01, 0x15, 0x01, 0x17, 0x02, 0x01, 0x16, 0x81, 0x00, 0xF4, 0x18, 0xCC, 0x06, 0x20, 0xAB, 0x01, 0x03, 0xB8, 0x02, 0x03, 0xB7, 0x80, 0x03, 0xB8, 0x02, 0x03, 0xB7, 0x7F, 0x20, 0xAB, 0x7F, 0x20, 0xAB, 0x08, 0x20, 0xAB, 0x02, 0x20, 0xAC, 0x81, 0x28, 0xAC, 0x20, 0xCC, 0x02, 0x28, 0xCC, 0x01, 0x28, 0xCD, 0x83, 0x28, 0xED, 0x28, 0xCD, 0x30, 0xCD, 0x91, 0x91, 0x01, 0xC9, 0xD3, 0x01, 0xC9, 0xB3, 0x81, 0xC9, 0x92, 0xC9, 0xB3, 0x01, 0xC9, 0x92, 0x01, 0xC9, 0x72, 0x01, 0xC9, 0x52, 0x01, 0xC9, 0x32, 0x83, 0xC9, 0x12, 0xC9, 0x32, 0xC9, 0x12, 0xC1, 0x12, 0x01, 0xC8, 0xF2, 0x01, 0xC8, 0xD1, 0x01, 0x90, 0x95, 0x82, 0x90, 0x75, 0x88, 0x75, 0x60, 0x78, 0x01, 0x60, 0x59, 0x01, 0x60, 0x58, 0x01, 0x60, 0x78, 0x80, 0x60, 0x59, 0x01, 0x60, 0x78, 0x82, 0x58, 0x78, 0x60, 0x78, 0x88, 0xB4, 0x01, 0x88, + 0xB5, 0x03, 0xB8, 0xD1, 0x01, 0xB0, 0xF1, 0x01, 0xB0, 0xD1, 0x05, 0xB0, 0xF1, 0x02, 0xA8, 0xF1, 0x80, 0x69, 0xD6, 0x02, 0x03, 0x3F, 0x80, 0x03, 0x1F, 0x06, 0x02, 0xFF, 0x85, 0x02, 0xDF, 0x02, 0xFF, 0x03, 0x5F, 0x03, 0xFF, 0x07, 0xF0, 0x8A, 0x4F, 0x01, 0xA1, 0x11, 0x80, 0x81, 0x32, 0x01, 0x49, 0x31, 0x82, 0x41, 0x10, 0x41, 0x0F, 0x39, 0x0F, 0x01, 0x30, 0xEE, 0x01, 0x30, 0xCD, 0x01, 0x28, 0xCD, 0x01, 0x28, 0xCC, 0x80, 0x20, 0xCC, 0x02, 0x20, 0xAC, 0x24, 0x20, 0xAB, 0x80, 0x08, 0xF2, 0x01, 0x01, 0x16, 0x80, 0x10, 0xCF, 0x02, 0x20, 0xAB, 0x80, 0x20, 0xAC, 0x21, 0x20, 0xAB, 0x80, 0x20, 0xAC, 0x01, 0x20, 0xAB, 0x81, 0x20, 0xCC, 0x08, 0xD1, 0x01, 0x08, 0xF3, 0x82, 0x10, 0xD0, 0x20, 0xAB, 0x20, 0xAC, 0x06, 0x20, 0xAB, 0x81, 0x03, 0xB7, 0x03, 0xB8, 0x06, 0x03, 0xB7, 0x7F, 0x20, 0xAB, 0x7F, 0x20, 0xAB, 0x0A, 0x20, 0xAB, 0x81, 0x20, 0xCC, 0x20, 0xAC, 0x02, 0x28, 0xCC, 0x80, 0x20, 0xCC, 0x01, 0x28, 0xCC, 0x82, 0x28, 0xCD, 0x40, 0xEE, 0xA9, 0xB2, 0x01, 0xC9, 0xD3, 0x82, 0xC9, 0xB3, 0xC9, 0xB2, 0xC9, 0xB3, 0x01, 0xC9, 0x92, 0x01, 0xC9, 0x72, 0x02, 0xC9, 0x52, 0x01, 0xC9, 0x32, 0x86, 0x90, 0xD5, 0x88, 0xD6, 0x60, 0x98, 0x58, 0x79, 0x30, 0x3C, 0x30, 0x5C, 0x08, 0x1E, 0x10, 0x00, 0x1F, 0x8A, 0x00, 0x3F, 0x00, 0x5F, 0x00, 0x7F, 0x00, 0x9F, 0x00, 0xBF, 0x00, 0xDF, 0x29, 0x1C, 0x41, 0x1A, 0x61, 0x18, 0x89, 0x15, 0xB0, 0xD1, 0x06, 0xB0, 0xF1, 0x83, 0xB0, 0xF2, 0xA8, 0xF1, 0xB0, 0xF1, 0x42, 0x9A, 0x01, 0x03, 0x9F, 0x01, 0x03, 0x5F, 0x05, + 0x03, 0x3F, 0x02, 0x03, 0x1F, 0x83, 0x03, 0x7F, 0x03, 0xFF, 0x06, 0xD7, 0x7A, 0xCF, 0x01, 0xA1, 0x11, 0x89, 0x99, 0x12, 0x51, 0x31, 0x49, 0x31, 0x41, 0x10, 0x41, 0x0F, 0x40, 0xEF, 0x38, 0xEE, 0x30, 0xEE, 0x30, 0xED, 0x30, 0xCD, 0x01, 0x28, 0xCD, 0x01, 0x28, 0xCC, 0x01, 0x20, 0xCC, 0x27, 0x20, 0xAB, 0x80, 0x08, 0xF2, 0x01, 0x01, 0x16, 0x80, 0x10, 0xCF, 0x06, 0x20, 0xAB, 0x80, 0x20, 0xCB, 0x2D, 0x20, 0xAB, 0x04, 0x03, 0xB7, 0x7F, 0x20, 0xAB, 0x7F, 0x20, 0xAB, 0x0E, 0x20, 0xAB, 0x02, 0x20, 0xCB, 0x02, 0x28, 0xCC, 0x83, 0x28, 0xCD, 0x28, 0xCC, 0x49, 0x0E, 0xC1, 0xD3, 0x01, 0xC9, 0xD3, 0x03, 0xC9, 0xB3, 0x01, 0xC9, 0x92, 0x85, 0xC9, 0x72, 0xC9, 0x52, 0x98, 0xF5, 0x60, 0xB8, 0x40, 0x7B, 0x18, 0x3E, 0x16, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x01, 0x00, 0x7F, 0x8E, 0x00, 0x9F, 0x00, 0xBF, 0x00, 0xFF, 0x01, 0x1F, 0x01, 0x3F, 0x01, 0x7F, 0x01, 0x9F, 0x01, 0xDF, 0x02, 0x1F, 0x21, 0xFD, 0x49, 0xD9, 0x79, 0x96, 0xA1, 0x12, 0xA8, 0xF1, 0xB0, 0xF1, 0x03, 0xA8, 0xF1, 0x82, 0x13, 0x9E, 0x03, 0xDF, 0x03, 0xBF, 0x01, 0x03, 0x9F, 0x03, 0x03, 0x7F, 0x01, 0x03, 0x5F, 0x01, 0x03, 0x3F, 0x84, 0x03, 0x5F, 0x03, 0xBF, 0x04, 0x1F, 0x05, 0xDE, 0x7A, 0xD1, 0x02, 0xA1, 0x11, 0x81, 0x59, 0x31, 0x49, 0x31, 0x01, 0x41, 0x30, 0x82, 0x40, 0xEF, 0x38, 0xEE, 0x30, 0xEE, 0x01, 0x30, 0xED, 0x03, 0x28, 0xCC, 0x80, 0x20, 0xCB, 0x29, 0x20, 0xAB, 0x80, 0x08, 0xF2, 0x01, 0x01, 0x15, 0x80, 0x10, 0xCF, 0x03, 0x20, 0xAB, 0x80, 0x18, 0xAB, 0x2F, 0x20, 0xAB, 0x07, 0x03, + 0xB7, 0x80, 0x03, 0xB8, 0x7F, 0x20, 0xAB, 0x7F, 0x20, 0xAB, 0x0B, 0x20, 0xAB, 0x80, 0x20, 0xCB, 0x04, 0x28, 0xCC, 0x81, 0x69, 0x2F, 0xC9, 0xF3, 0x01, 0xC9, 0xD3, 0x87, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0x92, 0xC9, 0xB2, 0xC9, 0x72, 0xB9, 0x73, 0x80, 0xF7, 0x38, 0x7B, 0x19, 0x00, 0x1F, 0x01, 0x00, 0x3F, 0x93, 0x00, 0x5F, 0x00, 0x7F, 0x00, 0x9F, 0x00, 0xBF, 0x00, 0xDF, 0x00, 0xFF, 0x01, 0x3F, 0x01, 0x5F, 0x01, 0x9F, 0x01, 0xBF, 0x01, 0xFF, 0x02, 0x3F, 0x02, 0x5F, 0x02, 0x9F, 0x02, 0xDF, 0x02, 0xFF, 0x03, 0x3F, 0x2A, 0xDC, 0x5A, 0x58, 0x89, 0x94, 0x01, 0xA8, 0xF1, 0x80, 0x81, 0xD4, 0x01, 0x04, 0x1F, 0x81, 0x03, 0xFF, 0x03, 0xDF, 0x04, 0x03, 0xBF, 0x89, 0x03, 0x9F, 0x03, 0x7F, 0x03, 0x5F, 0x03, 0x7F, 0x03, 0x9F, 0x03, 0xFF, 0x04, 0x7F, 0x04, 0xFF, 0x63, 0x75, 0xA1, 0x12, 0x01, 0xA1, 0x11, 0x81, 0x71, 0x11, 0x49, 0x31, 0x01, 0x41, 0x10, 0x82, 0x39, 0x0F, 0x38, 0xEE, 0x30, 0xEE, 0x01, 0x30, 0xED, 0x03, 0x28, 0xCC, 0x2A, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x08, 0xF1, 0x01, 0x01, 0x15, 0x80, 0x10, 0xCF, 0x02, 0x20, 0xAB, 0x80, 0x20, 0xCA, 0x2F, 0x20, 0xAB, 0x08, 0x03, 0xB7, 0x7F, 0x20, 0xAB, 0x7F, 0x20, 0xAB, 0x0B, 0x20, 0xAB, 0x81, 0x20, 0xCB, 0x28, 0xAC, 0x02, 0x28, 0xCC, 0x83, 0x69, 0x2E, 0xC9, 0xF3, 0xC9, 0xD2, 0xC9, 0xD3, 0x01, 0xC9, 0xB3, 0x83, 0xC9, 0x92, 0xC9, 0x93, 0x80, 0xF7, 0x38, 0x9B, 0x05, 0x00, 0x1F, 0x84, 0x08, 0x3C, 0x08, 0x5B, 0x10, 0x5B, 0x20, 0x78, 0x20, 0x98, 0x04, 0x20, 0x97, 0x83, 0x20, 0x98, 0x18, 0x7A, 0x10, + 0x5B, 0x08, 0x5D, 0x08, 0x00, 0x1F, 0x9A, 0x00, 0x3F, 0x00, 0x5F, 0x00, 0x7F, 0x00, 0x9F, 0x00, 0xDF, 0x00, 0xFF, 0x01, 0x1F, 0x01, 0x5F, 0x01, 0x7F, 0x01, 0xBF, 0x01, 0xFF, 0x02, 0x1F, 0x02, 0x5F, 0x02, 0x9F, 0x02, 0xDF, 0x02, 0xFF, 0x03, 0x3F, 0x03, 0x7F, 0x03, 0xBF, 0x03, 0xDF, 0x04, 0x1F, 0x04, 0x3F, 0x0C, 0x3F, 0x2B, 0xBC, 0x0C, 0x3F, 0x04, 0x5F, 0x04, 0x3F, 0x01, 0x04, 0x1F, 0x02, 0x03, 0xFF, 0x01, 0x03, 0xDF, 0x88, 0x03, 0xBF, 0x03, 0x9F, 0x03, 0x7F, 0x03, 0x9F, 0x03, 0xDF, 0x04, 0x3F, 0x04, 0xBF, 0x05, 0x3F, 0x53, 0x98, 0x02, 0xA1, 0x11, 0x84, 0x91, 0x11, 0x49, 0x31, 0x49, 0x10, 0x41, 0x10, 0x41, 0x0F, 0x01, 0x38, 0xEE, 0x80, 0x30, 0xED, 0x01, 0x30, 0xCD, 0x02, 0x28, 0xCC, 0x80, 0x28, 0xCB, 0x27, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x80, 0x08, 0xF1, 0x01, 0x01, 0x15, 0x80, 0x10, 0xCE, 0x05, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x1D, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x82, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x07, 0x20, 0xAB, 0x01, 0x13, 0x78, 0x01, 0x13, 0x58, 0x01, 0x13, 0x78, 0x82, 0x13, 0x58, 0x13, 0x78, 0x13, 0x58, 0x7F, 0x20, 0xAA, 0x7F, 0x20, 0xAA, 0x01, 0x20, 0xAA, 0x08, 0x20, 0xAB, 0x80, 0x20, 0xCB, 0x01, 0x28, 0xCB, 0x8E, 0x28, 0xCC, 0x28, 0xCB, 0x61, 0x4E, 0xD1, 0xF3, 0xC9, 0xF3, 0xC9, 0xD3, 0xC9, 0xB2, 0xC9, 0xB3, 0xB1, 0x73, 0x60, 0xD9, 0x08, 0x1E, 0x00, 0x3D, 0x08, 0x3B, 0x18, 0x78, 0x18, 0x77, 0x01, 0x28, 0xD2, 0x81, 0x40, 0xEE, 0x38, 0xEE, 0x02, 0x39, 0x0F, 0x80, 0x41, 0x0E, + 0x06, 0x41, 0x0F, 0x87, 0x41, 0x10, 0x41, 0x0F, 0x49, 0x10, 0x41, 0x30, 0x38, 0xF3, 0x28, 0xB6, 0x18, 0x9A, 0x00, 0x3E, 0x01, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x01, 0x00, 0x5F, 0x94, 0x00, 0x7F, 0x00, 0xBF, 0x00, 0xDF, 0x00, 0xFF, 0x01, 0x3F, 0x01, 0x5F, 0x01, 0x9F, 0x01, 0xDF, 0x02, 0x1F, 0x02, 0x3F, 0x02, 0x7F, 0x02, 0x9F, 0x02, 0xFF, 0x03, 0x3F, 0x03, 0x5F, 0x03, 0x9F, 0x03, 0xDF, 0x04, 0x1F, 0x04, 0x5F, 0x04, 0x7F, 0x04, 0xBF, 0x01, 0x04, 0xDF, 0x01, 0x04, 0xBF, 0x01, 0x04, 0x7F, 0x02, 0x04, 0x3F, 0x01, 0x04, 0x1F, 0x81, 0x03, 0xFF, 0x03, 0xDF, 0x01, 0x03, 0xBF, 0x85, 0x03, 0xDF, 0x04, 0x3F, 0x04, 0x7F, 0x04, 0xDF, 0x05, 0x7F, 0x3C, 0x1A, 0x03, 0xA1, 0x11, 0x85, 0x59, 0x31, 0x49, 0x10, 0x41, 0x10, 0x41, 0x0F, 0x39, 0x0E, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x06, 0x20, 0xAB, 0x1F, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x20, 0xAA, 0x08, 0xF1, 0x01, 0x01, 0x15, 0x84, 0x10, 0xCF, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x1E, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x80, 0x3A, 0xF9, 0x04, 0x3A, 0xD9, 0x02, 0x3A, 0xF9, 0x7F, 0x20, 0xAA, 0x7F, 0x20, 0xAA, 0x05, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x84, 0x20, 0xCB, 0x28, 0xCB, 0x20, 0xCB, 0x28, 0xAB, 0x69, 0x2E, 0x02, 0xC9, 0xD3, 0x87, 0xC9, 0xB3, 0xB1, 0xB2, 0x58, 0xF3, 0x18, 0x95, 0x28, 0xB2, 0x30, + 0xED, 0x38, 0xED, 0x30, 0xED, 0x02, 0x38, 0xED, 0x80, 0x38, 0xEE, 0x01, 0x39, 0x0E, 0x01, 0x38, 0xEE, 0x03, 0x39, 0x0E, 0x81, 0x41, 0x0F, 0x39, 0x0E, 0x05, 0x41, 0x0F, 0x9D, 0x41, 0x10, 0x41, 0x0F, 0x49, 0x2F, 0x49, 0x30, 0x49, 0x10, 0x38, 0xF3, 0x20, 0xB8, 0x08, 0x7D, 0x00, 0x7F, 0x00, 0x9F, 0x00, 0xDF, 0x00, 0xFF, 0x01, 0x1F, 0x01, 0x5F, 0x01, 0x7F, 0x01, 0x9F, 0x01, 0xDF, 0x02, 0x1F, 0x02, 0x5F, 0x02, 0xBF, 0x02, 0xDF, 0x03, 0x1F, 0x03, 0x5F, 0x03, 0x9F, 0x03, 0xDF, 0x04, 0x1F, 0x04, 0x5F, 0x04, 0x9F, 0x04, 0xDF, 0x04, 0xFF, 0x01, 0x05, 0x1F, 0x84, 0x05, 0x3F, 0x04, 0xFF, 0x04, 0xDF, 0x04, 0xBF, 0x04, 0x9F, 0x01, 0x04, 0x7F, 0x01, 0x04, 0x5F, 0x8B, 0x04, 0x3F, 0x04, 0x1F, 0x03, 0xFF, 0x03, 0xDF, 0x03, 0xFF, 0x04, 0x3F, 0x04, 0x5F, 0x04, 0xBF, 0x05, 0x3F, 0x05, 0xBF, 0x2C, 0xDC, 0xA1, 0x12, 0x02, 0xA1, 0x11, 0x85, 0x71, 0x31, 0x49, 0x30, 0x41, 0x30, 0x41, 0x0F, 0x39, 0x0E, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x81, 0x28, 0xAB, 0x20, 0xCB, 0x02, 0x20, 0xAB, 0x25, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x84, 0x20, 0xAA, 0x08, 0xF1, 0x01, 0x15, 0x01, 0x14, 0x10, 0xCE, 0x03, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x17, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x62, 0x5A, 0x62, 0x5B, 0x01, 0x5A, 0x5A, 0x81, 0x62, 0x5B, 0x20, 0xCA, 0x02, + 0x20, 0xAA, 0x7F, 0x20, 0xAB, 0x7B, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x0B, 0x20, 0xAB, 0x80, 0x28, 0xAB, 0x01, 0x28, 0xCB, 0x81, 0x61, 0x2E, 0xC9, 0xF3, 0x01, 0xC9, 0xD3, 0x84, 0xB9, 0x92, 0x69, 0x2E, 0x28, 0xCC, 0x28, 0xEC, 0x30, 0xCD, 0x04, 0x30, 0xED, 0x81, 0x38, 0xED, 0x30, 0xED, 0x01, 0x38, 0xED, 0x80, 0x39, 0x0E, 0x02, 0x38, 0xEE, 0x81, 0x39, 0x0F, 0x38, 0xEE, 0x01, 0x40, 0xEE, 0x83, 0x39, 0x0F, 0x39, 0x0E, 0x41, 0x0E, 0x40, 0xEF, 0x06, 0x41, 0x0F, 0x80, 0x41, 0x2F, 0x01, 0x49, 0x10, 0x9A, 0x49, 0x30, 0x41, 0x13, 0x28, 0xF8, 0x08, 0xFE, 0x01, 0x3F, 0x01, 0x5F, 0x01, 0x9F, 0x01, 0xDF, 0x02, 0x1F, 0x02, 0x3F, 0x02, 0x9F, 0x02, 0xBF, 0x03, 0x1F, 0x03, 0x5F, 0x03, 0x9F, 0x03, 0xDF, 0x04, 0x1F, 0x04, 0x5F, 0x04, 0x9F, 0x04, 0xDF, 0x05, 0x1F, 0x05, 0x3F, 0x05, 0x7F, 0x05, 0x9F, 0x05, 0x7F, 0x05, 0x5F, 0x05, 0x3F, 0x01, 0x04, 0xFF, 0x81, 0x04, 0xDF, 0x04, 0xBF, 0x01, 0x04, 0x9F, 0x82, 0x04, 0x7F, 0x04, 0x5F, 0x04, 0x3F, 0x01, 0x04, 0x1F, 0x86, 0x04, 0x3F, 0x04, 0x5F, 0x04, 0xBF, 0x04, 0xFF, 0x05, 0x5F, 0x05, 0xDF, 0x0E, 0x1F, 0x02, 0xA1, 0x11, 0x86, 0xA1, 0x12, 0x89, 0x31, 0x49, 0x30, 0x41, 0x30, 0x41, 0x0F, 0x41, 0x0E, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x02, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x26, 0x20, 0xAB, 0x83, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x83, 0x08, 0xF1, 0x01, 0x15, 0x01, 0x14, 0x10, 0xCF, 0x01, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x18, 0x20, 0xAB, 0x85, + 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xCB, 0x10, 0xCF, 0x01, 0x10, 0xEF, 0x82, 0x18, 0xCE, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x81, 0xDB, 0x81, 0xDC, 0x01, 0x81, 0xDB, 0x82, 0x81, 0xBC, 0x81, 0xBB, 0x81, 0xBC, 0x01, 0x81, 0xDC, 0x03, 0x20, 0xAA, 0x80, 0x20, 0xCA, 0x7F, 0x20, 0xAA, 0x7C, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xCB, 0x01, 0x20, 0xAB, 0x87, 0x20, 0xCB, 0x28, 0xAB, 0x20, 0xCB, 0x61, 0x2E, 0xD1, 0xF3, 0xC9, 0xF3, 0xC1, 0xB2, 0x61, 0x2E, 0x03, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x80, 0x30, 0xCD, 0x05, 0x30, 0xED, 0x80, 0x38, 0xED, 0x09, 0x38, 0xEE, 0x81, 0x39, 0x0E, 0x38, 0xEE, 0x02, 0x39, 0x0E, 0x05, 0x41, 0x0F, 0x80, 0x41, 0x30, 0x01, 0x49, 0x30, 0x92, 0x49, 0x31, 0x49, 0x30, 0x41, 0x33, 0x19, 0x7A, 0x01, 0xDE, 0x02, 0x1F, 0x02, 0x7F, 0x02, 0xBF, 0x02, 0xFF, 0x03, 0x3F, 0x03, 0x7F, 0x03, 0xBF, 0x03, 0xFF, 0x04, 0x5F, 0x04, 0x9F, 0x04, 0xDF, 0x05, 0x1F, 0x05, 0x7F, 0x05, 0x9F, 0x02, 0x05, 0xDF, 0x81, 0x05, 0xBF, 0x05, 0x9F, 0x01, 0x05, 0x5F, 0x82, 0x05, 0x3F, 0x05, 0x1F, 0x04, 0xFF, 0x01, 0x04, 0xDF, 0x82, 0x04, 0xBF, 0x04, 0x7F, 0x04, 0x5F, 0x01, 0x04, 0x3F, 0x87, 0x04, 0x7F, 0x04, 0xBF, 0x04, 0xFF, 0x05, 0x3F, 0x05, 0xBF, 0x06, 0x1F, 0x06, 0x9F, 0x99, 0x72, 0x03, 0xA1, 0x11, 0x87, 0x51, 0x30, 0x49, 0x10, 0x41, 0x0F, 0x39, 0x0F, 0x39, 0x0E, 0x38, 0xED, 0x30, 0xED, 0x30, 0xCD, 0x02, 0x28, 0xCC, + 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x03, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x25, 0x20, 0xAA, 0x85, 0x08, 0xF1, 0x01, 0x15, 0x00, 0xF4, 0x18, 0xCC, 0x20, 0xAA, 0x20, 0xAB, 0x1B, 0x20, 0xAA, 0x8A, 0x20, 0xAB, 0x20, 0xAA, 0x18, 0xCC, 0x00, 0xF3, 0x01, 0x15, 0x01, 0x14, 0x01, 0x15, 0x00, 0xF4, 0x00, 0xF2, 0x20, 0xCB, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x01, 0xA9, 0x3D, 0x86, 0xA9, 0x5C, 0xA9, 0x3D, 0xA9, 0x5C, 0xA9, 0x5D, 0xA9, 0x3C, 0xA9, 0x5D, 0xA9, 0x3D, 0x7F, 0x20, 0xAA, 0x7F, 0x20, 0xAA, 0x01, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x87, 0x20, 0xCB, 0x28, 0xAB, 0x51, 0x0D, 0xD1, 0xF3, 0xC9, 0xD2, 0x81, 0x6F, 0x30, 0xCC, 0x28, 0xAC, 0x04, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x80, 0x30, 0xCD, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCD, 0x04, 0x30, 0xED, 0x03, 0x38, 0xED, 0x05, 0x38, 0xEE, 0x04, 0x39, 0x0E, 0x03, 0x41, 0x0F, 0x82, 0x41, 0x10, 0x41, 0x0F, 0x49, 0x10, 0x02, 0x49, 0x30, 0x8F, 0x49, 0x31, 0x49, 0x32, 0x31, 0xB6, 0x0A, 0x9D, 0x02, 0xFF, 0x03, 0x5F, 0x03, 0x9F, 0x03, 0xFF, 0x04, 0x3F, 0x04, 0x7F, 0x04, 0xBF, 0x05, 0x1F, 0x05, 0x5F, 0x05, 0xBF, 0x05, 0xDF, 0x06, 0x1F, 0x01, 0x06, 0x3F, 0x82, 0x05, 0xFF, 0x05, 0xDF, 0x05, 0xBF, 0x01, 0x05, 0x9F, 0x86, 0x05, 0x7F, 0x05, 0x5F, 0x05, 0x3F, 0x05, 0x1F, 0x04, 0xFF, 0x04, 0xDF, 0x04, 0xBF, 0x02, 0x04, 0x7F, 0x87, 0x04, 0x9F, 0x04, 0xDF, 0x05, 0x3F, 0x05, 0x7F, 0x05, 0xFF, + 0x06, 0x5F, 0x06, 0xDF, 0x7A, 0x95, 0x03, 0xA1, 0x11, 0x81, 0x69, 0x11, 0x49, 0x30, 0x01, 0x41, 0x0F, 0x83, 0x39, 0x0E, 0x38, 0xEE, 0x30, 0xED, 0x30, 0xCD, 0x02, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x03, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x25, 0x20, 0xAA, 0x81, 0x20, 0xAB, 0x08, 0xF1, 0x01, 0x01, 0x14, 0x80, 0x18, 0xCD, 0x1C, 0x20, 0xAA, 0x89, 0x20, 0xAB, 0x20, 0xAA, 0x08, 0xF2, 0x01, 0x15, 0x01, 0x14, 0x01, 0x15, 0x01, 0x14, 0x01, 0x15, 0x01, 0x14, 0x10, 0xEF, 0x01, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x83, 0x20, 0xCB, 0x20, 0xAB, 0xC8, 0xBE, 0xD0, 0xBE, 0x01, 0xC8, 0xBE, 0x81, 0xD0, 0xBE, 0xC8, 0xBE, 0x01, 0xD0, 0xBE, 0x81, 0xC8, 0xBE, 0x20, 0xCA, 0x7F, 0x20, 0xAA, 0x7F, 0x20, 0xAA, 0x80, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xCB, 0x01, 0x20, 0xAB, 0x84, 0x40, 0xEC, 0xC1, 0xD2, 0xC1, 0xB3, 0x49, 0x0D, 0x28, 0xCB, 0x07, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x80, 0x30, 0xEC, 0x01, 0x30, 0xCD, 0x0A, 0x30, 0xED, 0x03, 0x38, 0xED, 0x05, 0x38, 0xEE, 0x01, 0x39, 0x0E, 0x80, 0x39, 0x0F, 0x03, 0x41, 0x0F, 0x01, 0x49, 0x10, 0x81, 0x49, 0x30, 0x49, 0x31, 0x01, 0x49, 0x51, 0x8A, 0x39, 0xD5, 0x13, 0x1C, 0x04, 0x1F, 0x04, 0x7F, 0x04, 0xBF, 0x05, 0x1F, 0x05, 0x5F, 0x05, 0x9F, 0x05, 0xDF, 0x06, 0x1F, 0x06, 0x7F, 0x01, 0x06, 0x9F, 0x82, 0x06, 0x7F, 0x06, 0x5F, 0x06, 0x1F, 0x01, 0x05, 0xFF, 0x87, 0x05, 0xBF, 0x05, 0x9F, 0x05, 0x7F, 0x05, 0x5F, 0x05, 0x3F, 0x05, 0x1F, 0x04, 0xFF, 0x04, 0xDF, 0x02, + 0x04, 0xBF, 0x87, 0x04, 0xDF, 0x05, 0x1F, 0x05, 0x7F, 0x05, 0xBF, 0x06, 0x3F, 0x06, 0x9F, 0x07, 0x1F, 0x54, 0x38, 0x03, 0xA1, 0x11, 0x81, 0x81, 0x11, 0x49, 0x30, 0x01, 0x41, 0x0F, 0x81, 0x39, 0x0E, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x03, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x27, 0x20, 0xAA, 0x85, 0x08, 0xF1, 0x01, 0x15, 0x00, 0xF4, 0x18, 0xCC, 0x20, 0xAA, 0x20, 0xAB, 0x17, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x84, 0x20, 0xAA, 0x18, 0xCC, 0x00, 0xF5, 0x01, 0x15, 0x00, 0xF4, 0x01, 0x01, 0x15, 0x89, 0x01, 0x14, 0x01, 0x15, 0x00, 0xF4, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x08, 0xF0, 0x3F, 0x7F, 0x20, 0xAA, 0x7F, 0x20, 0xAA, 0x01, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x83, 0x30, 0xCB, 0xA9, 0x92, 0xA9, 0xB1, 0x30, 0xCB, 0x03, 0x28, 0xCB, 0x06, 0x28, 0xCC, 0x03, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x80, 0x30, 0xCD, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCD, 0x08, 0x30, 0xED, 0x03, 0x38, 0xED, 0x02, 0x38, 0xEE, 0x02, 0x39, 0x0E, 0x04, 0x41, 0x0F, 0x80, 0x41, 0x2F, 0x01, 0x49, 0x30, 0x8A, 0x51, 0x30, 0x49, 0x31, 0x51, 0x31, 0x3A, 0x15, 0x23, 0x7B, 0x05, 0x3F, 0x05, 0x9F, 0x53, 0x58, 0x34, 0x9B, 0x0E, 0x1F, 0x06, 0xBF, 0x01, 0x06, 0xFF, 0x8D, 0x06, 0xDF, 0x06, 0xBF, 0x06, 0x9F, 0x06, 0x5F, 0x06, 0x3F, 0x06, 0x1F, 0x05, 0xFF, 0x05, 0xDF, 0x05, 0xBF, 0x05, 0x9F, 0x05, 0x7F, 0x05, 0x5F, 0x05, + 0x1F, 0x04, 0xFF, 0x01, 0x04, 0xDF, 0x88, 0x04, 0xFF, 0x05, 0x1F, 0x05, 0x5F, 0x05, 0x9F, 0x05, 0xFF, 0x06, 0x5F, 0x06, 0xDF, 0x07, 0x3F, 0x35, 0x9B, 0x04, 0xA1, 0x11, 0x84, 0x49, 0x30, 0x49, 0x10, 0x41, 0x2F, 0x39, 0x0E, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x04, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x25, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x82, 0x00, 0xF3, 0x01, 0x15, 0x01, 0x14, 0x1A, 0x01, 0x15, 0x02, 0x01, 0x14, 0x80, 0x01, 0x15, 0x01, 0x01, 0x14, 0x01, 0x01, 0x15, 0x02, 0x01, 0x14, 0x80, 0x20, 0xAB, 0x04, 0x20, 0xAA, 0x84, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x87, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xCA, 0x79, 0x0F, 0x68, 0xEE, 0x50, 0xED, 0x38, 0xCC, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x7C, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x84, 0x69, 0x2F, 0x81, 0x6F, 0x20, 0xAB, 0x20, 0xCB, 0x20, 0xAB, 0x02, 0x28, 0xCB, 0x81, 0x28, 0xAB, 0x28, 0xCB, 0x09, 0x28, 0xCC, 0x02, 0x30, 0xCC, 0x07, 0x30, 0xCD, 0x07, 0x30, 0xED, 0x80, 0x38, 0xED, 0x03, 0x38, 0xEE, 0x01, 0x39, 0x0E, 0x03, 0x41, 0x0F, 0x80, 0x41, 0x2F, 0x02, 0x49, 0x30, 0x01, 0x49, 0x31, 0x83, 0x51, 0x31, 0x49, 0xD4, 0x24, 0x3A, 0xA1, 0x32, 0x02, 0xA8, 0xF1, 0x01, 0x82, 0x95, 0x86, 0x54, 0x18, 0x35, 0x1B, 0x06, 0xDF, 0x06, 0x9F, 0x06, 0x7F, 0x06, 0x5F, 0x06, 0x3F, 0x01, 0x05, 0xFF, 0x84, 0x05, 0xBF, 0x05, 0x9F, 0x05, 0x7F, 0x05, 0x5F, + 0x05, 0x3F, 0x01, 0x05, 0x1F, 0x88, 0x05, 0x3F, 0x05, 0x7F, 0x05, 0x9F, 0x05, 0xDF, 0x06, 0x3F, 0x06, 0x9F, 0x06, 0xFF, 0x07, 0x7F, 0x0F, 0x5F, 0x03, 0xA1, 0x11, 0x85, 0x99, 0x31, 0x69, 0x11, 0x49, 0x30, 0x41, 0x0F, 0x39, 0x0E, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x82, 0x30, 0xCD, 0x30, 0xCC, 0x28, 0xCC, 0x02, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x03, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x27, 0x20, 0xAA, 0x84, 0x20, 0xAB, 0x18, 0xCB, 0x00, 0xF2, 0x01, 0x15, 0x01, 0x14, 0x1A, 0x01, 0x15, 0x84, 0x01, 0x14, 0x00, 0xF5, 0x01, 0x14, 0x01, 0x15, 0x01, 0x14, 0x03, 0x01, 0x15, 0x80, 0x01, 0x14, 0x01, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x82, 0x20, 0xAA, 0x20, 0xAB, 0x81, 0x30, 0x01, 0x89, 0x30, 0x85, 0x89, 0x10, 0x89, 0x30, 0x79, 0x0F, 0x69, 0x0E, 0x48, 0xCD, 0x38, 0xCC, 0x05, 0x20, 0xAA, 0x01, 0x20, 0xCA, 0x7F, 0x20, 0xAA, 0x70, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xCB, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x83, 0x20, 0xCB, 0x20, 0xAB, 0x28, 0xCB, 0x28, 0xAB, 0x03, 0x28, 0xCB, 0x0B, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x03, 0x28, 0xCC, 0x03, 0x30, 0xCC, 0x01, 0x30, 0xCD, 0x05, 0x30, 0xED, 0x80, 0x30, 0xEE, 0x01, 0x38, 0xED, 0x02, 0x39, 0x0E, 0x80, 0x41, 0x0E, 0x03, 0x41, 0x0F, 0x80, 0x41, 0x30, 0x02, 0x49, 0x30, 0x01, 0x51, 0x31, 0x84, 0x69, 0x92, 0xA8, 0xF1, 0xA9, 0x11, 0xA8, 0xF1, 0xA9, 0x11, 0x02, 0xA8, + 0xF1, 0x8A, 0xA1, 0x72, 0x4C, 0x39, 0x2D, 0x5C, 0x06, 0x9F, 0x06, 0x5F, 0x06, 0x3F, 0x06, 0x1F, 0x05, 0xFF, 0x05, 0xDF, 0x05, 0x9F, 0x05, 0x7F, 0x02, 0x05, 0x5F, 0x97, 0x05, 0x7F, 0x05, 0x9F, 0x05, 0xDF, 0x06, 0x1F, 0x06, 0x7F, 0x06, 0xDF, 0x07, 0x3F, 0x07, 0x9F, 0x07, 0xDF, 0x82, 0x54, 0xA1, 0x11, 0xA1, 0x31, 0xA1, 0x11, 0x99, 0x11, 0x81, 0x31, 0x49, 0x10, 0x41, 0x0F, 0x41, 0x0E, 0x38, 0xEE, 0x38, 0xED, 0x30, 0xED, 0x30, 0xCD, 0x30, 0xCC, 0x28, 0xCC, 0x02, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x06, 0x20, 0xAB, 0x25, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x1B, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x81, 0x08, 0xF2, 0x00, 0xF5, 0x01, 0x01, 0x14, 0x01, 0x01, 0x15, 0x81, 0x01, 0x14, 0x10, 0xF0, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x83, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x89, 0x30, 0x01, 0x89, 0x10, 0x02, 0x89, 0x30, 0x87, 0x89, 0x10, 0x89, 0x30, 0x89, 0x10, 0x81, 0x30, 0x71, 0x0F, 0x60, 0xEE, 0x48, 0xED, 0x38, 0xCC, 0x7F, 0x20, 0xAA, 0x73, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x82, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xCB, 0x02, 0x20, 0xAB, 0x01, 0x28, 0xAB, 0x01, 0x20, 0xCB, 0x06, 0x28, 0xCB, 0x13, 0x28, 0xCC, 0x80, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x04, 0x30, 0xED, 0x04, 0x38, 0xEE, 0x81, 0x39, 0x0E, 0x39, 0x0F, 0x02, 0x41, 0x0F, 0x83, 0x41, 0x2F, 0x49, 0x30, 0x49, 0x10, 0x49, 0x30, + 0x01, 0x51, 0x31, 0x81, 0x69, 0x31, 0xA1, 0x11, 0x03, 0xA8, 0xF1, 0x8B, 0xA9, 0x11, 0xA1, 0x11, 0xA9, 0x11, 0xA0, 0xF1, 0x99, 0x72, 0x44, 0x19, 0x06, 0x7F, 0x06, 0x5F, 0x06, 0x1F, 0x05, 0xFF, 0x05, 0xDF, 0x05, 0xBF, 0x01, 0x05, 0x9F, 0x01, 0x05, 0xBF, 0x89, 0x05, 0xDF, 0x06, 0x1F, 0x06, 0x5F, 0x06, 0xBF, 0x06, 0xFF, 0x07, 0x5F, 0x07, 0xBF, 0x07, 0xFF, 0x54, 0x98, 0xA1, 0x31, 0x02, 0xA1, 0x11, 0x81, 0x99, 0x11, 0x49, 0x30, 0x01, 0x41, 0x0F, 0x01, 0x38, 0xEE, 0x82, 0x30, 0xED, 0x30, 0xCD, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x06, 0x20, 0xAB, 0x26, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xAB, 0x17, 0x20, 0xAA, 0x80, 0x20, 0xCA, 0x01, 0x20, 0xAA, 0x83, 0x20, 0xAB, 0x20, 0xCC, 0x00, 0xF3, 0x00, 0xF4, 0x02, 0x01, 0x14, 0x81, 0x08, 0xF2, 0x20, 0xCB, 0x01, 0x20, 0xAA, 0x84, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x82, 0x20, 0xCA, 0x20, 0xAA, 0x20, 0xCA, 0x02, 0x20, 0xAA, 0x81, 0x20, 0xAB, 0x81, 0x10, 0x04, 0x89, 0x10, 0x81, 0x89, 0x30, 0x89, 0x10, 0x05, 0x89, 0x30, 0x84, 0x81, 0x30, 0x71, 0x0F, 0x58, 0xED, 0x48, 0xCC, 0x30, 0xCB, 0x7F, 0x20, 0xAA, 0x6E, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x81, 0x20, 0xCA, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x80, 0x20, 0xCB, 0x01, 0x20, 0xAB, 0x81, 0x28, 0xCB, 0x20, 0xCB, 0x08, 0x28, 0xCB, 0x12, 0x28, 0xCC, 0x02, 0x30, 0xCC, 0x01, + 0x30, 0xEC, 0x80, 0x30, 0xCD, 0x02, 0x30, 0xED, 0x81, 0x38, 0xED, 0x38, 0xEE, 0x02, 0x39, 0x0E, 0x80, 0x39, 0x0F, 0x01, 0x41, 0x0F, 0x83, 0x49, 0x0F, 0x41, 0x2F, 0x49, 0x10, 0x49, 0x30, 0x01, 0x49, 0x31, 0x81, 0x59, 0x31, 0x91, 0x11, 0x01, 0xA8, 0xF1, 0x80, 0xA9, 0x11, 0x01, 0xA8, 0xF1, 0x02, 0xA9, 0x11, 0x85, 0xA1, 0x11, 0x7A, 0x55, 0x34, 0xBB, 0x06, 0x5F, 0x06, 0x1F, 0x05, 0xFF, 0x03, 0x05, 0xDF, 0x8A, 0x05, 0xFF, 0x06, 0x3F, 0x06, 0x5F, 0x06, 0x9F, 0x06, 0xDF, 0x07, 0x1F, 0x07, 0x7F, 0x07, 0xBF, 0x07, 0xFF, 0x2E, 0x3C, 0x99, 0x11, 0x01, 0xA1, 0x11, 0x01, 0x99, 0x31, 0x80, 0x69, 0x10, 0x01, 0x41, 0x0F, 0x01, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x01, 0x20, 0xCB, 0x05, 0x20, 0xAB, 0x25, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xCB, 0x02, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x19, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x8B, 0x20, 0xCB, 0x10, 0xCF, 0x10, 0xD0, 0x10, 0xEF, 0x10, 0xCE, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x82, 0x20, 0xCA, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x02, 0x89, 0x10, 0x80, 0x81, 0x0F, 0x01, 0x89, 0x0F, 0x08, 0x89, 0x10, 0x04, 0x89, 0x30, 0x85, 0x69, 0x0F, 0x58, 0xEE, 0x40, 0xCD, 0x30, 0xCC, 0x20, 0xAB, 0x20, 0xCA, 0x7F, 0x20, 0xAA, 0x69, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x08, 0x20, 0xAB, 0x03, 0x20, + 0xCB, 0x16, 0x28, 0xCB, 0x07, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x81, 0x30, 0xEC, 0x30, 0xCD, 0x03, 0x30, 0xED, 0x03, 0x38, 0xEE, 0x80, 0x39, 0x0E, 0x03, 0x41, 0x0F, 0x86, 0x49, 0x10, 0x49, 0x30, 0x49, 0x31, 0x51, 0x31, 0x79, 0x31, 0xA9, 0x11, 0xA8, 0xF1, 0x03, 0xA9, 0x11, 0x80, 0xA8, 0xF1, 0x03, 0xA1, 0x11, 0x82, 0x91, 0xB3, 0x62, 0xF6, 0x34, 0x7B, 0x01, 0x06, 0x1F, 0x01, 0x06, 0x3F, 0x86, 0x06, 0x5F, 0x06, 0x7F, 0x06, 0xBF, 0x07, 0x1F, 0x07, 0x3F, 0x07, 0x9F, 0x07, 0xDF, 0x01, 0x07, 0xFF, 0x8C, 0xA1, 0x11, 0x99, 0x12, 0x99, 0x11, 0x99, 0x31, 0x99, 0x32, 0x81, 0x31, 0x41, 0x30, 0x41, 0x0F, 0x41, 0x0E, 0x38, 0xEE, 0x30, 0xEE, 0x30, 0xED, 0x30, 0xCD, 0x01, 0x28, 0xCC, 0x02, 0x28, 0xCB, 0x03, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x61, 0x20, 0xAA, 0x02, 0x81, 0x0F, 0x80, 0x89, 0x0F, 0x01, 0x89, 0x10, 0x03, 0x81, 0x10, 0x81, 0x89, 0x10, 0x81, 0x30, 0x07, 0x89, 0x10, 0x81, 0x89, 0x30, 0x89, 0x10, 0x01, 0x89, 0x30, 0x84, 0x81, 0x0F, 0x71, 0x0F, 0x50, 0xED, 0x40, 0xCC, 0x28, 0xAB, 0x05, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x5F, 0x20, 0xAA, 0x07, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x04, 0x20, 0xAB, 0x81, 0x20, 0xCB, 0x20, 0xAB, 0x05, 0x28, 0xAB, 0x14, 0x28, 0xCB, 0x06, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x80, 0x30, 0xCD, 0x03, 0x30, 0xED, 0x03, 0x38, 0xEE, 0x80, 0x39, 0x0F, 0x02, 0x41, 0x0F, 0x80, 0x49, 0x10, 0x02, 0x49, 0x30, 0x80, 0x71, 0x11, 0x03, 0xA9, 0x11, 0x80, 0xA1, 0x11, 0x01, 0xA9, 0x11, 0x05, 0xA1, 0x11, + 0x89, 0x91, 0xB3, 0x34, 0x9B, 0x06, 0x5F, 0x06, 0x7F, 0x06, 0x9F, 0x06, 0xBF, 0x06, 0xFF, 0x07, 0x3F, 0x07, 0x7F, 0x07, 0xBF, 0x02, 0x07, 0xFF, 0x83, 0x7A, 0xD4, 0xA1, 0x11, 0x99, 0x11, 0xA1, 0x11, 0x01, 0x99, 0x31, 0x84, 0x49, 0x30, 0x41, 0x0F, 0x39, 0x0E, 0x38, 0xEE, 0x30, 0xEE, 0x01, 0x30, 0xED, 0x01, 0x28, 0xCC, 0x02, 0x28, 0xCB, 0x03, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x61, 0x20, 0xAA, 0x01, 0x89, 0x0F, 0x05, 0x81, 0x0F, 0x01, 0x89, 0x0F, 0x01, 0x89, 0x10, 0x80, 0x81, 0x10, 0x09, 0x89, 0x10, 0x02, 0x89, 0x30, 0x80, 0x81, 0x30, 0x01, 0x89, 0x30, 0x84, 0x81, 0x0F, 0x71, 0x0F, 0x50, 0xED, 0x38, 0xCC, 0x28, 0xAB, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xCA, 0x03, 0x20, 0xAA, 0x80, 0x20, 0xCA, 0x0A, 0x20, 0xAA, 0x80, 0x20, 0xCA, 0x7F, 0x20, 0xAA, 0x4F, 0x20, 0xAA, 0x07, 0x20, 0xAB, 0x80, 0x20, 0xCB, 0x08, 0x20, 0xAB, 0x03, 0x28, 0xAB, 0x0B, 0x20, 0xCB, 0x01, 0x28, 0xCB, 0x01, 0x20, 0xCB, 0x07, 0x28, 0xCB, 0x04, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x81, 0x30, 0xEC, 0x30, 0xCD, 0x02, 0x30, 0xED, 0x80, 0x38, 0xED, 0x01, 0x38, 0xEE, 0x01, 0x39, 0x0E, 0x01, 0x41, 0x0F, 0x80, 0x41, 0x10, 0x01, 0x49, 0x30, 0x83, 0x51, 0x30, 0x81, 0x11, 0xA1, 0x11, 0xA9, 0x11, 0x01, 0xA1, 0x11, 0x86, 0xA9, 0x11, 0xA1, 0x12, 0xA1, 0x11, 0xA9, 0x11, 0xA1, 0x11, 0xA1, 0x12, 0xA0, 0xF1, 0x02, 0xA1, 0x11, 0x87, 0x7A, 0x75, 0x15, 0xFD, 0x06, 0xBF, 0x06, 0xFF, 0x07, 0x1F, 0x07, 0x5F, 0x07, 0x9F, 0x07, 0xBF, 0x02, 0x07, 0xFF, 0x82, 0x54, 0x99, 0x99, + 0x31, 0x99, 0x11, 0x02, 0x99, 0x31, 0x81, 0x69, 0x30, 0x41, 0x0F, 0x01, 0x39, 0x0E, 0x83, 0x38, 0xEE, 0x30, 0xED, 0x30, 0xCD, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x05, 0x20, 0xAB, 0x61, 0x20, 0xAA, 0x0D, 0x81, 0x0F, 0x01, 0x81, 0x10, 0x03, 0x89, 0x10, 0x01, 0x89, 0x30, 0x04, 0x89, 0x10, 0x81, 0x89, 0x30, 0x81, 0x30, 0x01, 0x89, 0x30, 0x80, 0x81, 0x30, 0x01, 0x89, 0x30, 0x83, 0x79, 0x0F, 0x69, 0x0E, 0x50, 0xED, 0x38, 0xCC, 0x03, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x5B, 0x20, 0xAA, 0x09, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x11, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x81, 0x28, 0xAB, 0x20, 0xAB, 0x01, 0x28, 0xAB, 0x04, 0x20, 0xCB, 0x06, 0x28, 0xCB, 0x05, 0x28, 0xCC, 0x82, 0x30, 0xCC, 0x30, 0xEC, 0x30, 0xCD, 0x02, 0x30, 0xED, 0x80, 0x38, 0xED, 0x01, 0x38, 0xEE, 0x80, 0x40, 0xEE, 0x02, 0x41, 0x0F, 0x80, 0x41, 0x30, 0x01, 0x49, 0x30, 0x83, 0x59, 0x31, 0x90, 0xF1, 0xA9, 0x11, 0xA9, 0x12, 0x02, 0xA1, 0x11, 0x01, 0xA9, 0x11, 0x81, 0xA1, 0x11, 0xA1, 0x12, 0x03, 0xA1, 0x11, 0x86, 0x99, 0x72, 0x35, 0x3B, 0x07, 0x1F, 0x07, 0x3F, 0x07, 0x7F, 0x07, 0xBF, 0x07, 0xDF, 0x02, 0x07, 0xFF, 0x81, 0x2E, 0x3C, 0xA1, 0x11, 0x03, 0x99, 0x31, 0x80, 0x89, 0x31, 0x01, 0x41, 0x0F, 0x01, 0x38, 0xEE, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x05, 0x20, 0xAB, 0x61, 0x20, 0xAA, 0x81, 0x81, 0x0F, 0x80, 0xEF, 0x03, 0x81, 0x0F, 0x02, 0x89, 0x0F, 0x08, 0x81, 0x0F, 0x01, 0x81, 0x10, 0x80, 0x89, + 0x10, 0x01, 0x81, 0x10, 0x80, 0x81, 0x30, 0x09, 0x89, 0x10, 0x80, 0x89, 0x30, 0x01, 0x81, 0x30, 0x01, 0x89, 0x30, 0x83, 0x79, 0x0F, 0x69, 0x0E, 0x50, 0xED, 0x38, 0xCC, 0x7F, 0x20, 0xAA, 0x5B, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x21, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x80, 0x28, 0xAB, 0x02, 0x20, 0xCB, 0x04, 0x28, 0xCB, 0x04, 0x28, 0xCC, 0x80, 0x30, 0xCC, 0x01, 0x30, 0xCD, 0x02, 0x30, 0xED, 0x80, 0x38, 0xEE, 0x02, 0x39, 0x0E, 0x01, 0x41, 0x0F, 0x81, 0x41, 0x2F, 0x41, 0x30, 0x01, 0x49, 0x30, 0x81, 0x81, 0x11, 0xA9, 0x11, 0x08, 0xA1, 0x11, 0x01, 0xA1, 0x12, 0x01, 0xA1, 0x11, 0x84, 0x44, 0x99, 0x07, 0x7F, 0x07, 0x9F, 0x07, 0xBF, 0x07, 0xDF, 0x03, 0x07, 0xFF, 0x81, 0x99, 0x31, 0xA1, 0x11, 0x03, 0x99, 0x31, 0x86, 0x49, 0x0F, 0x41, 0x0F, 0x38, 0xEE, 0x30, 0xEE, 0x38, 0xED, 0x30, 0xED, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x20, 0xCB, 0x05, 0x20, 0xAB, 0x61, 0x20, 0xAA, 0x83, 0x90, 0xEF, 0x88, 0xEF, 0x80, 0xEF, 0x81, 0x0F, 0x02, 0x80, 0xEF, 0x01, 0x81, 0x0F, 0x80, 0x89, 0x0F, 0x0B, 0x81, 0x0F, 0x01, 0x89, 0x0F, 0x81, 0x81, 0x0F, 0x81, 0x10, 0x09, 0x89, 0x10, 0x81, 0x89, 0x30, 0x89, 0x10, 0x04, 0x89, 0x30, 0x84, 0x81, 0x30, 0x71, 0x0F, 0x60, 0xEE, 0x48, 0xED, 0x38, 0xEC, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xCB, 0x7F, 0x20, 0xAA, 0x54, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x0D, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x07, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x0B, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x01, 0x28, 0xAB, + 0x80, 0x20, 0xCB, 0x03, 0x28, 0xCB, 0x03, 0x28, 0xCC, 0x01, 0x30, 0xCC, 0x01, 0x30, 0xCD, 0x01, 0x30, 0xED, 0x82, 0x38, 0xED, 0x31, 0x0E, 0x38, 0xEE, 0x01, 0x39, 0x0E, 0x01, 0x41, 0x0F, 0x80, 0x41, 0x2F, 0x01, 0x49, 0x30, 0x80, 0x71, 0x31, 0x01, 0xA1, 0x11, 0x82, 0xA1, 0x12, 0xA1, 0x11, 0xA0, 0xF1, 0x01, 0xA1, 0x11, 0x80, 0xA1, 0x12, 0x04, 0xA1, 0x11, 0x83, 0xA1, 0x31, 0x63, 0x97, 0x07, 0xBF, 0x07, 0xDF, 0x04, 0x07, 0xFF, 0x80, 0x7A, 0xD4, 0x03, 0x99, 0x31, 0x82, 0x99, 0x12, 0x71, 0x30, 0x39, 0x0F, 0x01, 0x38, 0xEE, 0x82, 0x38, 0xED, 0x30, 0xED, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x80, 0x28, 0xAB, 0x05, 0x20, 0xAB, 0x61, 0x20, 0xAA, 0x01, 0x99, 0x0F, 0x01, 0x91, 0x0F, 0x83, 0x89, 0x0F, 0x88, 0xEF, 0x81, 0x0F, 0x80, 0xEF, 0x08, 0x81, 0x0F, 0x02, 0x89, 0x0F, 0x07, 0x81, 0x0F, 0x80, 0x89, 0x10, 0x01, 0x81, 0x10, 0x07, 0x89, 0x10, 0x80, 0x89, 0x30, 0x02, 0x89, 0x10, 0x01, 0x89, 0x30, 0x80, 0x81, 0x30, 0x02, 0x89, 0x30, 0x85, 0x71, 0x0F, 0x58, 0xEE, 0x48, 0xED, 0x30, 0xCB, 0x20, 0xAB, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x4D, 0x20, 0xAA, 0x1F, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x08, 0x20, 0xAB, 0x03, 0x20, 0xCB, 0x03, 0x28, 0xCB, 0x04, 0x28, 0xCC, 0x80, 0x30, 0xCC, 0x01, 0x30, 0xEC, 0x86, 0x30, 0xED, 0x38, 0xEE, 0x30, 0xED, 0x38, 0xED, 0x39, 0x0E, 0x38, 0xEE, 0x41, 0x0E, 0x01, 0x41, 0x0F, 0x01, 0x49, 0x30, 0x80, 0x69, 0x31, 0x01, 0xA1, 0x11, 0x80, 0xA1, 0x12, 0x07, 0xA1, 0x11, 0x83, 0xA1, 0x12, 0x99, + 0x31, 0x99, 0x11, 0x63, 0x97, 0x04, 0x07, 0xFF, 0x83, 0x07, 0xFE, 0x5C, 0x14, 0x99, 0x31, 0x99, 0x11, 0x02, 0x99, 0x31, 0x81, 0x91, 0x31, 0x41, 0x0F, 0x01, 0x39, 0x0E, 0x01, 0x30, 0xED, 0x80, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x81, 0x28, 0xAB, 0x20, 0xCB, 0x04, 0x20, 0xAB, 0x61, 0x20, 0xAA, 0x81, 0x91, 0x0F, 0x98, 0xEF, 0x01, 0x91, 0x0F, 0x85, 0x98, 0xEF, 0x99, 0x0F, 0x91, 0x0F, 0x89, 0x0F, 0x88, 0xEF, 0x80, 0xEF, 0x0B, 0x81, 0x0F, 0x80, 0x89, 0x0F, 0x02, 0x81, 0x0F, 0x01, 0x89, 0x0F, 0x01, 0x81, 0x0F, 0x80, 0x81, 0x10, 0x01, 0x89, 0x10, 0x01, 0x81, 0x10, 0x80, 0x89, 0x10, 0x01, 0x81, 0x10, 0x02, 0x89, 0x10, 0x01, 0x89, 0x30, 0x80, 0x89, 0x10, 0x08, 0x89, 0x30, 0x84, 0x81, 0x30, 0x71, 0x0F, 0x58, 0xED, 0x40, 0xED, 0x30, 0xCB, 0x01, 0x20, 0xAB, 0x7F, 0x20, 0xAA, 0x4D, 0x20, 0xAA, 0x06, 0x20, 0xAB, 0x05, 0x20, 0xAA, 0x1F, 0x20, 0xAB, 0x02, 0x20, 0xCB, 0x05, 0x28, 0xCB, 0x03, 0x28, 0xCC, 0x81, 0x30, 0xCC, 0x30, 0xCD, 0x01, 0x30, 0xED, 0x82, 0x38, 0xED, 0x30, 0xEE, 0x38, 0xEE, 0x01, 0x39, 0x0E, 0x01, 0x41, 0x0F, 0x84, 0x41, 0x30, 0x49, 0x30, 0x59, 0x31, 0x79, 0x11, 0x91, 0x31, 0x08, 0xA1, 0x11, 0x83, 0x99, 0x31, 0xA1, 0x11, 0x99, 0x31, 0x54, 0x98, 0x03, 0x07, 0xFF, 0x81, 0x07, 0xFE, 0x35, 0xF5, 0x05, 0x99, 0x31, 0x80, 0x51, 0x0F, 0x01, 0x39, 0x0E, 0x81, 0x38, 0xED, 0x30, 0xED, 0x01, 0x30, 0xCC, 0x80, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x81, 0x28, 0xAB, 0x20, 0xCB, 0x04, 0x20, 0xAB, 0x61, 0x20, 0xAA, 0x80, 0x89, + 0x0F, 0x07, 0x88, 0xEF, 0x81, 0x89, 0x0F, 0x81, 0x0F, 0x03, 0x80, 0xEF, 0x02, 0x81, 0x0F, 0x80, 0x80, 0xEF, 0x03, 0x81, 0x0F, 0x04, 0x89, 0x0F, 0x09, 0x81, 0x0F, 0x04, 0x89, 0x10, 0x80, 0x89, 0x0F, 0x01, 0x89, 0x10, 0x07, 0x89, 0x30, 0x80, 0x89, 0x10, 0x02, 0x89, 0x30, 0x85, 0x81, 0x30, 0x68, 0xEF, 0x50, 0xED, 0x40, 0xCC, 0x28, 0xCB, 0x20, 0xAB, 0x03, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x03, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x10, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x0C, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x07, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x82, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x10, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xAB, 0x0F, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x04, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x09, 0x20, 0xAA, 0x08, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x18, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x81, 0x20, 0xAB, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x03, 0x20, 0xAA, 0x07, 0x20, 0xAB, 0x08, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x08, 0x20, 0xAA, 0x0D, 0x20, 0xAB, 0x85, 0x20, 0xCB, 0x28, 0xAB, 0x28, 0xCB, 0x20, 0xCB, 0x28, 0xAB, 0x28, 0xCB, 0x05, 0x28, + 0xCC, 0x81, 0x30, 0xCC, 0x30, 0xCD, 0x01, 0x30, 0xED, 0x80, 0x38, 0xED, 0x01, 0x38, 0xEE, 0x80, 0x39, 0x0E, 0x01, 0x41, 0x0F, 0x81, 0x41, 0x2F, 0x41, 0x30, 0x01, 0x49, 0x30, 0x81, 0x61, 0x31, 0x89, 0x31, 0x02, 0xA1, 0x11, 0x80, 0xA1, 0x31, 0x01, 0xA1, 0x11, 0x80, 0x99, 0x31, 0x03, 0xA1, 0x11, 0x80, 0x3D, 0x7A, 0x02, 0x07, 0xFF, 0x82, 0x07, 0xFE, 0x07, 0xF6, 0x99, 0x11, 0x04, 0x99, 0x31, 0x86, 0x79, 0x11, 0x39, 0x0E, 0x38, 0xEE, 0x30, 0xEE, 0x30, 0xED, 0x30, 0xCD, 0x30, 0xCC, 0x01, 0x28, 0xCC, 0x80, 0x28, 0xCB, 0x01, 0x28, 0xAB, 0x01, 0x20, 0xAB, 0x82, 0x20, 0xCA, 0x20, 0xAB, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xAB, 0x09, 0x20, 0xAA, 0x09, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x81, 0x20, 0xAB, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x05, 0x20, 0xAB, 0x0A, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x1C, 0x20, 0xAA, 0x80, 0x18, 0xAA, 0x05, 0x20, 0xAA, 0x01, 0x78, 0xEE, 0x02, 0x80, 0xEE, 0x80, 0x78, 0xEE, 0x01, 0x80, 0xEE, 0x02, 0x80, 0xEF, 0x82, 0x80, 0xEE, 0x80, 0xEF, 0x81, 0x0F, 0x03, 0x80, 0xEF, 0x81, 0x81, 0x0F, 0x80, 0xEF, 0x05, 0x81, 0x0F, 0x01, 0x89, 0x0F, 0x07, 0x81, 0x0F, 0x01, 0x89, 0x0F, 0x86, 0x89, 0x10, 0x81, 0x10, 0x81, 0x30, 0x89, 0x10, 0x81, 0x0F, 0x81, 0x10, 0x81, 0x0F, 0x02, 0x89, 0x10, 0x01, 0x89, 0x30, 0x80, 0x89, 0x10, 0x03, 0x89, 0x30, 0x84, 0x81, 0x30, + 0x89, 0x30, 0x89, 0x10, 0x89, 0x30, 0x81, 0x30, 0x02, 0x89, 0x30, 0x85, 0x81, 0x10, 0x69, 0x0F, 0x50, 0xED, 0x38, 0xCC, 0x28, 0xAB, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x20, 0xCB, 0x20, 0xAB, 0x15, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xCB, 0x01, 0x20, 0xAA, 0x08, 0x20, 0xAB, 0x0E, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x04, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x12, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x05, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x13, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xCA, 0x02, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x0F, 0x20, 0xAA, 0x84, 0x20, 0xAB, 0x20, 0xAA, 0x18, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x0F, 0x20, 0xAA, 0x08, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x11, 0x20, 0xAA, 0x08, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xCA, 0x01, 0x20, 0xAA, 0x81, 0x20, 0xAB, 0x20, 0xAA, 0x08, 0x20, 0xAB, 0x09, 0x20, 0xAA, 0x05, 0x20, 0xAB, 0x81, 0x28, 0xCB, 0x20, 0xAB, 0x01, 0x20, 0xCB, 0x01, 0x28, 0xCB, 0x04, 0x28, 0xCC, 0x81, 0x30, 0xCC, 0x30, 0xEC, 0x02, 0x30, 0xED, 0x01, 0x38, 0xEE, 0x01, 0x39, 0x0E, 0x02, 0x41, 0x0F, 0x01, 0x49, 0x30, 0x82, 0x51, 0x31, 0x61, 0x31, 0x99, 0x11, 0x02, 0xA1, 0x11, 0x80, 0x99, 0x31, 0x01, 0xA1, 0x11, 0x84, 0xA1, 0x12, 0x99, 0x31, 0x99, 0x11, 0x91, 0x92, 0x1E, 0xBD, 0x01, 0x07, 0xFF, + 0x82, 0x07, 0xFE, 0x07, 0xF6, 0x7A, 0x71, 0x01, 0x99, 0x31, 0x80, 0x99, 0x32, 0x01, 0x99, 0x31, 0x82, 0x91, 0x11, 0x41, 0x0E, 0x38, 0xEE, 0x02, 0x30, 0xED, 0x01, 0x28, 0xCC, 0x01, 0x28, 0xCB, 0x81, 0x20, 0xAB, 0x28, 0xAB, 0x02, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x10, 0x20, 0xAA, 0x81, 0x20, 0xAB, 0x20, 0xCA, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x13, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x03, 0x20, 0xAB, 0x18, 0x20, 0xAA, 0x80, 0x20, 0x8A, 0x06, 0x20, 0xAA, 0x03, 0x78, 0xEE, 0x80, 0x80, 0xEE, 0x01, 0x78, 0xEE, 0x01, 0x80, 0xEE, 0x01, 0x80, 0xEF, 0x80, 0x80, 0xEE, 0x04, 0x80, 0xEF, 0x82, 0x81, 0x0F, 0x81, 0x0E, 0x81, 0x0F, 0x03, 0x80, 0xEF, 0x06, 0x81, 0x0F, 0x07, 0x89, 0x0F, 0x81, 0x81, 0x10, 0x81, 0x0F, 0x01, 0x89, 0x0F, 0x02, 0x81, 0x0F, 0x80, 0x89, 0x0F, 0x04, 0x89, 0x10, 0x83, 0x81, 0x30, 0x89, 0x10, 0x89, 0x30, 0x81, 0x30, 0x01, 0x89, 0x30, 0x01, 0x89, 0x10, 0x80, 0x81, 0x30, 0x03, 0x89, 0x30, 0x01, 0x81, 0x30, 0x85, 0x89, 0x30, 0x71, 0x0F, 0x69, 0x0E, 0x50, 0xED, 0x38, 0xCC, 0x28, 0xAB, 0x01, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x82, 0x20, 0xAB, 0x20, 0xCB, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x0B, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x02, 0x20, 0xAB, 0x81, 0x20, 0xAA, 0x20, 0xAB, 0x14, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x01, + 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x02, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x0F, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x05, 0x20, 0xAA, 0x82, 0x20, 0xCA, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x80, 0x20, 0xAB, 0x04, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x05, 0x20, 0xAA, 0x84, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x20, 0xAA, 0x20, 0xAB, 0x01, 0x20, 0xAA, 0x04, 0x20, 0xAB, 0x0B, 0x20, 0xAA, 0x07, 0x20, 0xAB, 0x80, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x83, 0x20, 0xAA, 0x20, 0xCA, 0x20, 0xAA, 0x20, 0xAB, 0x18, 0x20, 0xAA, 0x81, 0x20, 0xAB, 0x20, 0xAA, 0x01, 0x20, 0xAB, 0x80, 0x20, 0xAC, 0x1B, 0x20, 0xCD, 0x80, 0x20, 0xCC, 0x1F, 0x20, 0xCD, 0x03, 0x28, 0xCD, 0x80, 0x20, 0xCD, 0x02, 0x28, 0xCE, 0x83, 0x28, 0xEE, 0x28, 0xCE, 0x28, 0xEE, 0x30, 0xEE, 0x02, 0x30, 0xEF, 0x01, 0x39, 0x0F, 0x01, 0x39, 0x10, 0x81, 0x41, 0x10, 0x41, 0x31, 0x01, 0x49, 0x31, 0x83, 0x49, 0x32, 0x49, 0x52, 0x51, 0x52, 0x91, 0x32, 0x02, 0xA1, 0x11, 0x80, 0x99, 0x12, 0x01, 0x99, 0x31, 0x83, 0x99, 0x11, 0x99, 0x31, 0x99, 0x12, 0x82, 0x74, 0x01, 0x07, 0xFF, 0x85, 0x07, 0xFD, 0x07, 0xF6, 0x5C, 0x32, 0x99, 0x11, 0x99, 0x31, 0x99, 0x32, 0x02, 0x99, 0x31, 0x81, 0x59, 0x10, 0x39, 0x0F, 0x01, 0x30, 0xEF, 0x87, 0x30, 0xEE, 0x30, 0xCE, 0x28, 0xCD, 0x28, 0xEE, 0x28, 0xED, 0x28, 0xCD, 0x20, 0xCD, 0x20, 0xAC, 0x01, 0x20, 0xCD, 0x82, 0x20, 0xAD, 0x20, 0xCD, 0x20, 0xAD, 0x01, 0x20, 0xCC, 0x82, 0x20, 0xAD, 0x20, 0xCC, 0x20, 0xAC, 0x01, 0x20, 0xCC, 0x01, 0x20, + 0xAC, 0x0C, 0x20, 0xCC, 0x87, 0x20, 0xCD, 0x20, 0xAD, 0x18, 0xCC, 0x20, 0xCC, 0x20, 0xAC, 0x20, 0xCC, 0x20, 0xAD, 0x20, 0xCC, 0x01, 0x20, 0xAC, 0x80, 0x20, 0xCC, 0x01, 0x18, 0xCC, 0x03, 0x20, 0xCC, 0x0D, 0x20, 0xAC, 0x80, 0x18, 0xAC, 0x02, 0x20, 0xAC, 0x80, 0x20, 0xCC, 0x01, 0x18, 0xAC, 0x80, 0x20, 0xAC, 0x1C, 0x18, 0xAC, 0x02, 0x18, 0xAB, 0x02, 0x18, 0xAC, 0x80, 0x18, 0xAB, 0x02, 0x78, 0xD0, 0x01, 0x78, 0xF0, 0x80, 0x78, 0xF1, 0x02, 0x78, 0xF0, 0x01, 0x78, 0xF1, 0x84, 0x80, 0xF0, 0x78, 0xF1, 0x78, 0xF0, 0x80, 0xF1, 0x80, 0xD1, 0x03, 0x80, 0xF1, 0x06, 0x80, 0xF0, 0x80, 0x81, 0x11, 0x02, 0x81, 0x10, 0x04, 0x81, 0x11, 0x02, 0x81, 0x10, 0x81, 0x81, 0x11, 0x89, 0x11, 0x01, 0x81, 0x10, 0x81, 0x81, 0x11, 0x81, 0x10, 0x02, 0x89, 0x11, 0x80, 0x81, 0x11, 0x01, 0x89, 0x11, 0x80, 0x89, 0x10, 0x03, 0x89, 0x11, 0x80, 0x81, 0x11, 0x01, 0x81, 0x31, 0x80, 0x89, 0x31, 0x03, 0x89, 0x11, 0x81, 0x89, 0x31, 0x89, 0x11, 0x01, 0x81, 0x31, 0x8A, 0x89, 0x31, 0x81, 0x30, 0x81, 0x31, 0x89, 0x11, 0x89, 0x31, 0x79, 0x31, 0x61, 0x11, 0x49, 0x11, 0x30, 0xD2, 0x18, 0xF2, 0x10, 0xF2, 0x01, 0x18, 0xD2, 0x81, 0x10, 0xF2, 0x18, 0xD2, 0x08, 0x10, 0xF2, 0x01, 0x18, 0xD2, 0x0B, 0x18, 0xF2, 0x80, 0x18, 0xD2, 0x19, 0x18, 0xF2, 0x01, 0x18, 0xF3, 0x81, 0x18, 0xF2, 0x20, 0xF2, 0x01, 0x18, 0xF2, 0x80, 0x20, 0xF2, 0x01, 0x18, 0xF3, 0x0E, 0x20, 0xF3, 0x81, 0x20, 0xF2, 0x18, 0xF3, 0x05, 0x20, 0xF3, 0x80, 0x21, 0x13, 0x01, 0x20, 0xF3, 0x80, 0x21, 0x13, 0x01, 0x20, + 0xF3, 0x80, 0x21, 0x13, 0x05, 0x20, 0xF3, 0x01, 0x21, 0x13, 0x08, 0x20, 0xF3, 0x81, 0x21, 0x13, 0x20, 0xF3, 0x02, 0x21, 0x13, 0x01, 0x28, 0xF3, 0x80, 0x21, 0x13, 0x01, 0x28, 0xF3, 0x80, 0x29, 0x13, 0x06, 0x21, 0x13, 0x0F, 0x29, 0x13, 0x83, 0x21, 0x13, 0x29, 0x13, 0x29, 0x14, 0x21, 0x13, 0x1F, 0x29, 0x13, 0x80, 0x29, 0x14, 0x27, 0x29, 0x13, 0x07, 0x21, 0x13, 0x01, 0x29, 0x13, 0x01, 0x28, 0xF3, 0x04, 0x29, 0x13, 0x84, 0x28, 0xF3, 0x29, 0x13, 0x21, 0x13, 0x29, 0x13, 0x29, 0x14, 0x01, 0x29, 0x13, 0x04, 0x29, 0x14, 0x04, 0x31, 0x34, 0x01, 0x39, 0x34, 0x81, 0x39, 0x35, 0x39, 0x55, 0x01, 0x41, 0x55, 0x01, 0x41, 0x76, 0x83, 0x49, 0x76, 0x49, 0x77, 0x51, 0x76, 0x91, 0x32, 0x01, 0xA1, 0x11, 0x82, 0x99, 0x31, 0x99, 0x11, 0xA1, 0x11, 0x01, 0x99, 0x31, 0x87, 0x99, 0x12, 0x99, 0x31, 0x5C, 0x38, 0x07, 0xFF, 0x07, 0xFD, 0x07, 0xF6, 0x44, 0xF2, 0x99, 0x11, 0x04, 0x99, 0x31, 0x85, 0x79, 0x33, 0x39, 0x55, 0x31, 0x35, 0x31, 0x34, 0x31, 0x14, 0x21, 0x33, 0x01, 0x21, 0x13, 0x01, 0x20, 0xF3, 0x86, 0x21, 0x13, 0x19, 0x12, 0x18, 0xF2, 0x20, 0xF3, 0x18, 0xF2, 0x18, 0xF3, 0x18, 0xF2, 0x02, 0x18, 0xF3, 0x09, 0x18, 0xF2, 0x03, 0x18, 0xD2, 0x04, 0x18, 0xF2, 0x86, 0x18, 0xD2, 0x18, 0xF2, 0x18, 0xD2, 0x10, 0xF2, 0x18, 0xF2, 0x18, 0xD2, 0x10, 0xF2, 0x05, 0x18, 0xF2, 0x01, 0x10, 0xF2, 0x01, 0x18, 0xF2, 0x02, 0x10, 0xF2, 0x02, 0x10, 0xD2, 0x07, 0x18, 0xD2, 0x02, 0x10, 0xD2, 0x18, 0x10, 0xD1, 0x03, 0x10, 0xB1, 0x82, 0x10, 0xD0, 0x10, 0xB0, 0x10, 0xD0, + 0x01, 0x10, 0xB0, 0x81, 0x10, 0xD0, 0x10, 0xB0, 0x04, 0x08, 0xB0, 0x80, 0x00, 0x51, 0x03, 0x00, 0x71, 0x82, 0x00, 0x51, 0x00, 0x71, 0x00, 0x70, 0x01, 0x08, 0x70, 0x01, 0x00, 0x71, 0x84, 0x00, 0x91, 0x08, 0x70, 0x00, 0x71, 0x00, 0x91, 0x00, 0x71, 0x01, 0x08, 0x71, 0x80, 0x08, 0x91, 0x03, 0x08, 0x71, 0x03, 0x08, 0x91, 0x02, 0x08, 0x71, 0x05, 0x08, 0x92, 0x02, 0x08, 0x91, 0x80, 0x08, 0x92, 0x01, 0x08, 0x91, 0x02, 0x08, 0xB1, 0x84, 0x08, 0xB2, 0x10, 0xB2, 0x08, 0xB1, 0x08, 0xB2, 0x08, 0xB1, 0x02, 0x08, 0xB2, 0x04, 0x10, 0xB2, 0x80, 0x08, 0xB2, 0x01, 0x10, 0xB2, 0x01, 0x08, 0xB2, 0x04, 0x10, 0xB2, 0x02, 0x10, 0xD2, 0x80, 0x10, 0xF2, 0x04, 0x10, 0xD2, 0x01, 0x18, 0xD2, 0x80, 0x10, 0xF2, 0x01, 0x18, 0xD2, 0x80, 0x10, 0xD2, 0x07, 0x18, 0xD2, 0x0B, 0x18, 0xF2, 0x80, 0x18, 0xD2, 0x01, 0x18, 0xF2, 0x01, 0x18, 0xD2, 0x13, 0x18, 0xF2, 0x04, 0x18, 0xF3, 0x80, 0x18, 0xF2, 0x01, 0x18, 0xF3, 0x80, 0x20, 0xF2, 0x05, 0x18, 0xF3, 0x12, 0x20, 0xF3, 0x80, 0x21, 0x12, 0x03, 0x20, 0xF3, 0x83, 0x21, 0x13, 0x20, 0xF2, 0x20, 0xF3, 0x20, 0xF2, 0x0F, 0x20, 0xF3, 0x86, 0x21, 0x13, 0x28, 0xF3, 0x21, 0x13, 0x20, 0xF3, 0x21, 0x13, 0x28, 0xF3, 0x20, 0xF3, 0x06, 0x21, 0x13, 0x01, 0x28, 0xF3, 0x02, 0x21, 0x13, 0x0C, 0x29, 0x13, 0x80, 0x21, 0x13, 0x02, 0x29, 0x13, 0x80, 0x29, 0x14, 0x01, 0x29, 0x13, 0x80, 0x28, 0xF3, 0x1C, 0x29, 0x13, 0x80, 0x28, 0xF3, 0x1C, 0x29, 0x13, 0x80, 0x21, 0x13, 0x01, 0x29, 0x13, 0x80, 0x29, 0x14, 0x08, 0x29, 0x13, 0x0B, 0x21, + 0x13, 0x80, 0x29, 0x13, 0x01, 0x28, 0xF3, 0x81, 0x29, 0x13, 0x21, 0x13, 0x01, 0x29, 0x13, 0x01, 0x21, 0x13, 0x82, 0x28, 0xF3, 0x29, 0x13, 0x21, 0x13, 0x07, 0x29, 0x14, 0x02, 0x31, 0x34, 0x80, 0x31, 0x35, 0x01, 0x39, 0x35, 0x01, 0x39, 0x55, 0x89, 0x41, 0x55, 0x41, 0x56, 0x41, 0x76, 0x49, 0x76, 0x49, 0x56, 0x51, 0x76, 0x91, 0x32, 0xA1, 0x11, 0xA1, 0x12, 0xA1, 0x11, 0x01, 0x99, 0x31, 0x87, 0x99, 0x11, 0x99, 0x32, 0x99, 0x31, 0x99, 0x11, 0x2E, 0x5C, 0x07, 0xFC, 0x07, 0xF6, 0x2E, 0x53, 0x02, 0x99, 0x31, 0x01, 0x99, 0x11, 0x81, 0x99, 0x31, 0x91, 0x32, 0x02, 0x31, 0x34, 0x82, 0x29, 0x34, 0x29, 0x14, 0x29, 0x13, 0x01, 0x21, 0x13, 0x86, 0x20, 0xF3, 0x21, 0x12, 0x20, 0xF3, 0x20, 0xD3, 0x19, 0x12, 0x18, 0xF2, 0x18, 0xF3, 0x02, 0x18, 0xF2, 0x82, 0x18, 0xD2, 0x18, 0xF2, 0x20, 0xF2, 0x07, 0x18, 0xF2, 0x03, 0x18, 0xD2, 0x03, 0x18, 0xF2, 0x80, 0x18, 0xD2, 0x03, 0x18, 0xF2, 0x01, 0x10, 0xF2, 0x01, 0x18, 0xF2, 0x86, 0x18, 0xD2, 0x18, 0xF2, 0x10, 0xF2, 0x18, 0xF2, 0x18, 0xD2, 0x10, 0xF2, 0x18, 0xF2, 0x05, 0x10, 0xF2, 0x01, 0x10, 0xD2, 0x01, 0x10, 0xF2, 0x06, 0x10, 0xD2, 0x01, 0x10, 0xD1, 0x80, 0x10, 0xD2, 0x13, 0x10, 0xD1, 0x07, 0x10, 0xB0, 0x80, 0x08, 0xB0, 0x01, 0x10, 0xB0, 0x01, 0x08, 0xB0, 0x82, 0x10, 0xB0, 0x10, 0xD0, 0x08, 0xD0, 0x03, 0x08, 0xB0, 0x01, 0x0C, 0xDC, 0x88, 0x0C, 0xDB, 0x0C, 0xDC, 0x0C, 0xFB, 0x0C, 0xDC, 0x14, 0xDC, 0x14, 0xFC, 0x0C, 0xDC, 0x14, 0xFC, 0x14, 0xDC, 0x01, 0x0C, 0xFC, 0x81, 0x14, 0xFC, 0x0C, 0xFC, 0x06, + 0x14, 0xFC, 0x0F, 0x15, 0x1C, 0x03, 0x15, 0x3C, 0x80, 0x15, 0x1C, 0x09, 0x15, 0x3C, 0x80, 0x15, 0x5C, 0x01, 0x15, 0x3C, 0x02, 0x1D, 0x5C, 0x02, 0x15, 0x5C, 0x04, 0x1D, 0x5C, 0x80, 0x15, 0x5C, 0x07, 0x1D, 0x5C, 0x80, 0x15, 0x7C, 0x0E, 0x1D, 0x7C, 0x07, 0x1D, 0x9C, 0x03, 0x1D, 0x9D, 0x84, 0x25, 0x9C, 0x1D, 0xBC, 0x1D, 0x9D, 0x25, 0x9D, 0x1D, 0x9C, 0x04, 0x25, 0x9C, 0x0D, 0x25, 0xBD, 0x01, 0x25, 0xDD, 0x01, 0x25, 0xBD, 0x80, 0x1D, 0xDD, 0x02, 0x25, 0xDD, 0x80, 0x25, 0xBD, 0x08, 0x25, 0xDD, 0x0B, 0x25, 0xFD, 0x80, 0x2D, 0xFD, 0x03, 0x25, 0xFD, 0x04, 0x2D, 0xFD, 0x81, 0x25, 0xFD, 0x2D, 0xFE, 0x01, 0x2D, 0xFD, 0x11, 0x2E, 0x1D, 0x80, 0x2E, 0x3E, 0x03, 0x2E, 0x1D, 0x01, 0x2E, 0x3D, 0x02, 0x2E, 0x3E, 0x13, 0x2E, 0x3D, 0x02, 0x2E, 0x3E, 0x80, 0x2E, 0x3D, 0x0B, 0x2E, 0x3E, 0x0F, 0x2E, 0x5E, 0x80, 0x36, 0x5E, 0x02, 0x2E, 0x5E, 0x80, 0x2E, 0x3E, 0x01, 0x36, 0x5E, 0x80, 0x2E, 0x5D, 0x09, 0x2E, 0x5E, 0x0D, 0x2E, 0x3E, 0x02, 0x2E, 0x3D, 0x84, 0x2E, 0x3E, 0x2E, 0x3D, 0x2E, 0x3E, 0x2E, 0x3D, 0x36, 0x3D, 0x13, 0x2E, 0x3D, 0x10, 0x2E, 0x1D, 0x04, 0x36, 0x1D, 0x04, 0x3E, 0x1D, 0x88, 0x3E, 0x1E, 0x46, 0x1E, 0x46, 0x1D, 0x4D, 0xFE, 0x4D, 0xFD, 0x4E, 0x3E, 0x4D, 0xFE, 0x55, 0xDD, 0x92, 0x14, 0x02, 0x99, 0x31, 0x81, 0x99, 0x32, 0x99, 0x31, 0x01, 0x99, 0x11, 0x82, 0x99, 0x31, 0x7A, 0x74, 0x07, 0xFB, 0x01, 0x07, 0xF6, 0x01, 0x99, 0x31, 0x81, 0x99, 0x11, 0x99, 0x32, 0x02, 0x99, 0x31, 0x81, 0x4C, 0xFB, 0x3D, 0xFE, 0x01, 0x35, 0xDD, 0x03, 0x2D, + 0xDD, 0x01, 0x25, 0xDD, 0x01, 0x25, 0xBD, 0x01, 0x25, 0xDD, 0x81, 0x25, 0xBD, 0x25, 0xDC, 0x02, 0x25, 0xBD, 0x81, 0x1D, 0xBD, 0x25, 0xBC, 0x01, 0x1D, 0xBD, 0x05, 0x1D, 0xBC, 0x06, 0x1D, 0x9D, 0x01, 0x1D, 0x9C, 0x80, 0x1D, 0xBC, 0x03, 0x1D, 0x9C, 0x83, 0x1D, 0x9D, 0x1D, 0x9C, 0x1D, 0x9D, 0x1D, 0x9C, 0x01, 0x1D, 0x7C, 0x80, 0x1D, 0x7D, 0x0C, 0x1D, 0x7C, 0x05, 0x1D, 0x5C, 0x80, 0x15, 0x7C, 0x05, 0x1D, 0x5C, 0x02, 0x15, 0x5C, 0x80, 0x1D, 0x5C, 0x10, 0x15, 0x3C, 0x04, 0x15, 0x1C, 0x02, 0x15, 0x1B, 0x07, 0x15, 0x1C, 0x04, 0x0B, 0xFB, 0x03, 0x0C, 0x1B, 0x01, 0x14, 0x1B, 0x85, 0x14, 0x5B, 0x14, 0xDC, 0x0C, 0xDB, 0x14, 0xBC, 0x14, 0x3B, 0x14, 0x1B, 0x01, 0x0C, 0x1B, 0x80, 0x14, 0x1C, 0x05, 0x14, 0x1B, 0x0D, 0x14, 0x3B, 0x8C, 0x14, 0x3C, 0x14, 0x3B, 0x14, 0x5B, 0x15, 0x1C, 0x0D, 0x1B, 0x15, 0x1C, 0x14, 0x5B, 0x14, 0x3B, 0x14, 0x5C, 0x14, 0x3B, 0x14, 0x5C, 0x1C, 0x5B, 0x14, 0x3B, 0x04, 0x14, 0x5C, 0x81, 0x14, 0x5B, 0x14, 0x5C, 0x01, 0x14, 0x5B, 0x81, 0x1C, 0x5C, 0x14, 0x5C, 0x02, 0x14, 0x7C, 0x82, 0x14, 0x5C, 0x1C, 0x7C, 0x1C, 0x5C, 0x01, 0x14, 0x7C, 0x84, 0x1C, 0x7C, 0x1C, 0xDC, 0x1D, 0x5C, 0x15, 0x5C, 0x1C, 0xBC, 0x05, 0x1C, 0x7C, 0x80, 0x1C, 0x7B, 0x05, 0x1C, 0x7C, 0x0B, 0x1C, 0x9C, 0x85, 0x24, 0x9C, 0x1C, 0x9C, 0x1D, 0x9D, 0x1D, 0x7C, 0x1C, 0xFC, 0x1C, 0x9C, 0x0F, 0x1C, 0xBC, 0x80, 0x24, 0xBC, 0x01, 0x1C, 0xBC, 0x02, 0x24, 0xBC, 0x80, 0x1C, 0xBC, 0x02, 0x24, 0xDC, 0x83, 0x25, 0x3D, 0x25, 0xBD, 0x25, 0x3D, 0x24, 0xDD, 0x01, + 0x24, 0xBC, 0x0F, 0x24, 0xDD, 0x80, 0x24, 0xFD, 0x01, 0x24, 0xDC, 0x01, 0x24, 0xFD, 0x85, 0x24, 0xFC, 0x24, 0xDD, 0x24, 0xFD, 0x25, 0x1C, 0x25, 0xFD, 0x25, 0x5D, 0x03, 0x24, 0xFD, 0x80, 0x24, 0xFC, 0x07, 0x24, 0xFD, 0x07, 0x2C, 0xFD, 0x80, 0x25, 0x1D, 0x01, 0x24, 0xFD, 0x83, 0x25, 0x1D, 0x2D, 0x1D, 0x24, 0xFD, 0x2C, 0xFD, 0x01, 0x25, 0xBD, 0x83, 0x25, 0x3C, 0x2C, 0xFC, 0x2D, 0x1D, 0x25, 0x1D, 0x01, 0x2C, 0xFD, 0x14, 0x2D, 0x1D, 0x82, 0x2D, 0x1C, 0x2D, 0x5D, 0x2D, 0xDE, 0x08, 0x2D, 0x1D, 0x0F, 0x2D, 0x3D, 0x81, 0x2D, 0x1D, 0x2D, 0x3D, 0x01, 0x2D, 0x1D, 0x80, 0x2E, 0x1D, 0x02, 0x2D, 0x1D, 0x0F, 0x2D, 0x3D, 0x0A, 0x2D, 0x1D, 0x81, 0x2D, 0xDD, 0x2D, 0x5D, 0x12, 0x2D, 0x1D, 0x03, 0x2C, 0xFD, 0x01, 0x2D, 0x1D, 0x02, 0x2C, 0xFD, 0x01, 0x2D, 0xBD, 0x81, 0x2C, 0xFD, 0x2D, 0x1D, 0x01, 0x25, 0x1C, 0x08, 0x2C, 0xFD, 0x04, 0x34, 0xFD, 0x03, 0x3C, 0xFD, 0x80, 0x3D, 0x1D, 0x02, 0x45, 0x1D, 0x01, 0x4D, 0x1D, 0x83, 0x55, 0x3D, 0x91, 0xB3, 0x99, 0x31, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0xA1, 0x12, 0x01, 0x99, 0x31, 0x80, 0x54, 0x96, 0x01, 0x07, 0xF7, 0x81, 0x8A, 0x13, 0xA1, 0x11, 0x01, 0x99, 0x31, 0x83, 0x99, 0x12, 0x99, 0x32, 0x99, 0x11, 0x63, 0x18, 0x01, 0x34, 0xDD, 0x84, 0x2C, 0xDD, 0x2C, 0xDC, 0x2C, 0xDD, 0x2C, 0xBC, 0x24, 0xDC, 0x01, 0x24, 0xBC, 0x82, 0x25, 0x3C, 0x25, 0xBD, 0x25, 0x3C, 0x02, 0x24, 0xBC, 0x81, 0x1C, 0xBC, 0x24, 0xBC, 0x01, 0x1C, 0xBC, 0x80, 0x24, 0xBC, 0x05, 0x1C, 0xBC, 0x0A, 0x1C, 0x9C, 0x84, 0x1C, 0x7C, 0x1C, + 0x9C, 0x1C, 0xDC, 0x1D, 0x7C, 0x1D, 0x5C, 0x01, 0x1C, 0x9C, 0x83, 0x1C, 0x7B, 0x1C, 0x7C, 0x1C, 0x9C, 0x1C, 0x7B, 0x02, 0x1C, 0x9C, 0x81, 0x1C, 0x7C, 0x1C, 0x9C, 0x03, 0x1C, 0x7C, 0x02, 0x14, 0x7C, 0x07, 0x1C, 0x7C, 0x84, 0x1C, 0x5C, 0x1C, 0x9C, 0x15, 0x3C, 0x15, 0x5C, 0x14, 0xBC, 0x01, 0x14, 0x5B, 0x81, 0x1C, 0x5C, 0x14, 0x7B, 0x06, 0x14, 0x5B, 0x01, 0x14, 0x5C, 0x0D, 0x14, 0x3B, 0x83, 0x15, 0x1C, 0x14, 0xFB, 0x14, 0xFC, 0x14, 0x5B, 0x01, 0x14, 0x3B, 0x05, 0x14, 0x1B, 0x03, 0x0A, 0x5A, 0x88, 0x0A, 0x7A, 0x0A, 0x5A, 0x0A, 0xFA, 0x0C, 0x1B, 0x0C, 0xBB, 0x0C, 0x9B, 0x0B, 0x9B, 0x0A, 0x9A, 0x12, 0x5A, 0x03, 0x0A, 0x7A, 0x01, 0x12, 0x7A, 0x80, 0x0A, 0x7A, 0x0E, 0x12, 0x7A, 0x02, 0x12, 0x9A, 0x84, 0x13, 0x3B, 0x14, 0x5B, 0x0D, 0x1C, 0x14, 0x9C, 0x13, 0x1B, 0x01, 0x12, 0x9B, 0x0B, 0x12, 0x9A, 0x81, 0x12, 0x9B, 0x12, 0x9A, 0x05, 0x12, 0x9B, 0x8A, 0x12, 0x9A, 0x12, 0x9B, 0x1A, 0xBB, 0x12, 0x9B, 0x13, 0x1B, 0x14, 0x7C, 0x15, 0x3B, 0x14, 0x5C, 0x12, 0xFB, 0x1A, 0xBB, 0x12, 0xBA, 0x01, 0x1A, 0xBB, 0x80, 0x12, 0xBB, 0x10, 0x1A, 0xBB, 0x03, 0x1A, 0xDB, 0x83, 0x1B, 0x3B, 0x1C, 0xFC, 0x15, 0x7C, 0x1C, 0x1C, 0x11, 0x1A, 0xDB, 0x01, 0x22, 0xDB, 0x03, 0x1A, 0xDB, 0x01, 0x22, 0xDB, 0x89, 0x22, 0xFB, 0x23, 0x1C, 0x1D, 0x1C, 0x1D, 0x5C, 0x23, 0x5B, 0x22, 0xDC, 0x22, 0xDB, 0x22, 0xDC, 0x22, 0xFB, 0x22, 0xFC, 0x01, 0x22, 0xDC, 0x05, 0x22, 0xFC, 0x03, 0x22, 0xFB, 0x07, 0x22, 0xFC, 0x84, 0x23, 0x1B, 0x22, 0xFC, 0x23, 0x3C, 0x25, 0x3C, 0x1C, + 0xFD, 0x01, 0x22, 0xFC, 0x80, 0x22, 0xFB, 0x0F, 0x22, 0xFC, 0x04, 0x23, 0x1C, 0x01, 0x2A, 0xFC, 0x80, 0x23, 0x1C, 0x01, 0x2B, 0x1C, 0x81, 0x25, 0x9C, 0x24, 0x7C, 0x01, 0x23, 0x1C, 0x80, 0x2B, 0x1C, 0x01, 0x23, 0x1C, 0x81, 0x2B, 0x1C, 0x23, 0x1C, 0x15, 0x2B, 0x1C, 0x81, 0x25, 0xBD, 0x2B, 0xBC, 0x19, 0x2B, 0x1C, 0x80, 0x23, 0x1C, 0x01, 0x2B, 0x1C, 0x80, 0x25, 0xDD, 0x1B, 0x2B, 0x1C, 0x83, 0x23, 0x1C, 0x2B, 0x1C, 0x2B, 0x7C, 0x25, 0x9D, 0x01, 0x2B, 0x1C, 0x80, 0x23, 0x1C, 0x07, 0x2B, 0x1C, 0x11, 0x23, 0x1C, 0x86, 0x24, 0x5D, 0x25, 0x9C, 0x22, 0xFC, 0x2A, 0xFC, 0x23, 0x1C, 0x2A, 0xFC, 0x22, 0xFC, 0x01, 0x23, 0x1C, 0x03, 0x2B, 0x1C, 0x80, 0x2A, 0xFC, 0x02, 0x2B, 0x1C, 0x04, 0x33, 0x1C, 0x80, 0x3B, 0x1C, 0x02, 0x3B, 0x3D, 0x87, 0x43, 0x3C, 0x43, 0x3D, 0x4B, 0x3D, 0x43, 0x5D, 0x5A, 0x9A, 0x99, 0x32, 0x99, 0x31, 0x99, 0x11, 0x05, 0x99, 0x31, 0x82, 0x17, 0x37, 0x07, 0xF9, 0x72, 0xD4, 0x05, 0x99, 0x31, 0x86, 0x81, 0x94, 0x33, 0x1C, 0x32, 0xFC, 0x2A, 0xFB, 0x2A, 0xFC, 0x2A, 0xFB, 0x22, 0xFB, 0x01, 0x22, 0xDC, 0x80, 0x22, 0xFB, 0x01, 0x22, 0xDB, 0x83, 0x23, 0x5C, 0x1D, 0x5C, 0x1D, 0x1D, 0x23, 0x1B, 0x02, 0x1A, 0xDB, 0x81, 0x22, 0xDB, 0x1A, 0xBB, 0x05, 0x1A, 0xDB, 0x01, 0x1A, 0xBB, 0x09, 0x1A, 0xDB, 0x02, 0x1A, 0xBB, 0x86, 0x1A, 0xDB, 0x1B, 0xFC, 0x1D, 0x5C, 0x14, 0xDC, 0x1B, 0x3B, 0x1A, 0xBB, 0x1A, 0xDB, 0x01, 0x1A, 0xBB, 0x80, 0x12, 0xDB, 0x0F, 0x1A, 0xBB, 0x8A, 0x12, 0x9B, 0x12, 0xBB, 0x12, 0x9A, 0x12, 0xBA, 0x12, 0x9A, 0x12, + 0xDB, 0x14, 0x3B, 0x15, 0x1B, 0x14, 0xBB, 0x1A, 0xFB, 0x12, 0xBA, 0x15, 0x12, 0x9A, 0x02, 0x12, 0x7A, 0x84, 0x13, 0x1B, 0x14, 0x7C, 0x14, 0xDB, 0x14, 0x5B, 0x13, 0x1A, 0x03, 0x12, 0x7A, 0x03, 0x0B, 0x1A, 0x81, 0x0B, 0x5A, 0x0C, 0x1B, 0x01, 0x0C, 0x9B, 0x80, 0x0B, 0xBA, 0x09, 0x0B, 0x1A, 0x80, 0x0B, 0x3A, 0x01, 0x0B, 0x1A, 0x80, 0x0B, 0x3A, 0x01, 0x0B, 0x1A, 0x01, 0x0B, 0x3A, 0x80, 0x0B, 0x3B, 0x01, 0x0B, 0x3A, 0x81, 0x0B, 0x3B, 0x13, 0x3B, 0x02, 0x0B, 0x3B, 0x86, 0x13, 0x3A, 0x0B, 0x3A, 0x0C, 0x3B, 0x14, 0xDC, 0x14, 0xBC, 0x13, 0xFB, 0x0B, 0x3A, 0x02, 0x13, 0x3B, 0x81, 0x13, 0x5B, 0x0B, 0x5B, 0x05, 0x13, 0x5B, 0x80, 0x13, 0x5A, 0x01, 0x13, 0x5B, 0x80, 0x0B, 0x5A, 0x03, 0x13, 0x5B, 0x80, 0x0B, 0x5B, 0x05, 0x13, 0x5B, 0x84, 0x13, 0xFB, 0x15, 0x1C, 0x14, 0xFC, 0x13, 0xDB, 0x13, 0x5B, 0x03, 0x13, 0x7B, 0x80, 0x13, 0x5B, 0x0C, 0x13, 0x7B, 0x83, 0x1B, 0x7B, 0x13, 0x7B, 0x1B, 0x5B, 0x1B, 0x7B, 0x02, 0x13, 0x7B, 0x89, 0x13, 0x9B, 0x1B, 0xBB, 0x14, 0xFB, 0x15, 0x3C, 0x13, 0xFB, 0x1B, 0x7B, 0x13, 0x9B, 0x1B, 0x7B, 0x1B, 0x7C, 0x1B, 0x9B, 0x01, 0x1B, 0x7B, 0x06, 0x1B, 0x9B, 0x80, 0x1B, 0x9C, 0x02, 0x1B, 0x9B, 0x80, 0x13, 0x9C, 0x06, 0x1B, 0x9B, 0x88, 0x1B, 0x9C, 0x1B, 0x9B, 0x1D, 0x3C, 0x1D, 0x5C, 0x1B, 0xFB, 0x1B, 0x9C, 0x1B, 0xBB, 0x1B, 0x9B, 0x1B, 0xBC, 0x01, 0x1B, 0x9B, 0x07, 0x1B, 0xBB, 0x80, 0x1B, 0xBC, 0x01, 0x1B, 0xBB, 0x82, 0x1B, 0xBC, 0x1B, 0xBB, 0x1B, 0xBC, 0x01, 0x1B, 0xBB, 0x89, 0x1B, 0xBC, 0x1B, 0xBB, 0x1B, 0xBC, + 0x1B, 0xBB, 0x1B, 0xBC, 0x1B, 0xBB, 0x1C, 0xDC, 0x1D, 0x7D, 0x23, 0xFC, 0x1B, 0xDC, 0x05, 0x1B, 0xBC, 0x07, 0x23, 0xBC, 0x01, 0x1B, 0xBC, 0x05, 0x23, 0xDC, 0x80, 0x23, 0xBC, 0x03, 0x23, 0xDC, 0x81, 0x24, 0x7C, 0x1D, 0x9C, 0x1C, 0x23, 0xDC, 0x81, 0x24, 0x1C, 0x25, 0x9D, 0x1D, 0x23, 0xDC, 0x80, 0x1D, 0xBD, 0x1E, 0x23, 0xDC, 0x81, 0x1D, 0xBD, 0x24, 0x3C, 0x19, 0x23, 0xDC, 0x80, 0x23, 0xBC, 0x01, 0x23, 0xDC, 0x81, 0x25, 0x9C, 0x24, 0x7C, 0x01, 0x23, 0xBC, 0x81, 0x23, 0xDC, 0x23, 0xBC, 0x01, 0x23, 0xDC, 0x02, 0x23, 0xBC, 0x03, 0x23, 0xDC, 0x04, 0x2B, 0xDC, 0x03, 0x33, 0xDC, 0x80, 0x3B, 0xDC, 0x01, 0x3B, 0xFC, 0x83, 0x3B, 0xDC, 0x43, 0xFC, 0x43, 0xFD, 0x6B, 0x18, 0x03, 0x99, 0x31, 0x86, 0x99, 0x11, 0x99, 0x31, 0x99, 0x32, 0x99, 0x31, 0x6B, 0x53, 0x07, 0xFA, 0x54, 0x37, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x81, 0x99, 0x12, 0x99, 0x31, 0x02, 0x2B, 0xBC, 0x80, 0x2B, 0xBB, 0x01, 0x23, 0xBB, 0x80, 0x23, 0x9B, 0x04, 0x1B, 0x9B, 0x82, 0x1B, 0xDB, 0x1D, 0x5C, 0x1D, 0x1C, 0x01, 0x1B, 0x9B, 0x82, 0x13, 0x9B, 0x13, 0x9C, 0x1B, 0x9B, 0x01, 0x1B, 0x7B, 0x80, 0x13, 0x9B, 0x01, 0x1B, 0x9B, 0x82, 0x1B, 0x7B, 0x1B, 0x9B, 0x13, 0x9B, 0x01, 0x1B, 0x7B, 0x01, 0x1B, 0x9B, 0x03, 0x13, 0x7B, 0x80, 0x1B, 0x9B, 0x04, 0x13, 0x7B, 0x81, 0x13, 0x9B, 0x1B, 0xBB, 0x01, 0x15, 0x1C, 0x80, 0x13, 0xDB, 0x01, 0x13, 0x7B, 0x80, 0x13, 0x5B, 0x09, 0x13, 0x7B, 0x02, 0x13, 0x5B, 0x80, 0x13, 0x7B, 0x06, 0x13, 0x5B, 0x89, 0x13, 0x5A, 0x13, 0x5B, + 0x13, 0x3B, 0x13, 0xDA, 0x14, 0xFB, 0x0C, 0xFB, 0x14, 0x1B, 0x13, 0x3A, 0x13, 0x5B, 0x13, 0x3B, 0x01, 0x13, 0x5B, 0x81, 0x13, 0x5A, 0x13, 0x5B, 0x03, 0x13, 0x3B, 0x85, 0x13, 0x3A, 0x13, 0x3B, 0x0B, 0x5B, 0x13, 0x3B, 0x13, 0x3A, 0x0B, 0x3A, 0x01, 0x13, 0x3A, 0x02, 0x0B, 0x3B, 0x8C, 0x0B, 0x3A, 0x13, 0x3A, 0x0B, 0x1A, 0x0B, 0x3B, 0x0B, 0x3A, 0x0B, 0xDA, 0x14, 0xBB, 0x0C, 0xBB, 0x0C, 0x1B, 0x0B, 0x3A, 0x0B, 0x3B, 0x0B, 0x3A, 0x0B, 0xDB, 0x01, 0x0C, 0x7B, 0x82, 0x0C, 0x1A, 0x0B, 0x3A, 0x0B, 0x1A, 0x02, 0x0A, 0xFA, 0x16, 0x0B, 0x1A, 0x85, 0x0B, 0x3A, 0x0C, 0x1B, 0x0C, 0xBB, 0x0C, 0x9B, 0x0B, 0xBB, 0x0B, 0x5A, 0x03, 0x0B, 0x3A, 0x80, 0x0B, 0x1A, 0x05, 0x0B, 0x3A, 0x02, 0x13, 0x3A, 0x90, 0x0B, 0x3A, 0x13, 0x3B, 0x0B, 0x3A, 0x13, 0x3A, 0x0B, 0x3A, 0x13, 0x3A, 0x0B, 0x3A, 0x13, 0x5A, 0x13, 0x3A, 0x13, 0x3B, 0x13, 0x3A, 0x13, 0x3B, 0x0B, 0x3A, 0x0C, 0x7B, 0x0C, 0xFB, 0x14, 0x7B, 0x13, 0x7B, 0x01, 0x0B, 0x5B, 0x01, 0x13, 0x5A, 0x80, 0x13, 0x5B, 0x03, 0x13, 0x5A, 0x0B, 0x13, 0x5B, 0x80, 0x13, 0x7B, 0x01, 0x13, 0x5A, 0x86, 0x13, 0x7B, 0x13, 0x5A, 0x13, 0x5B, 0x13, 0x9B, 0x14, 0xBB, 0x14, 0xFB, 0x13, 0xFB, 0x01, 0x13, 0x7B, 0x81, 0x13, 0x5B, 0x13, 0x7B, 0x01, 0x13, 0x7A, 0x0B, 0x13, 0x7B, 0x01, 0x1B, 0x7B, 0x07, 0x13, 0x7B, 0x85, 0x1B, 0xBB, 0x15, 0x3C, 0x15, 0x1C, 0x1B, 0x7B, 0x13, 0x9B, 0x13, 0x7B, 0x01, 0x13, 0x9B, 0x81, 0x1B, 0x9B, 0x13, 0x9B, 0x01, 0x1B, 0x9B, 0x07, 0x13, 0x9B, 0x04, 0x1B, 0x9B, 0x83, 0x13, 0xBB, 0x13, 0x9B, + 0x1B, 0x9B, 0x13, 0x9B, 0x01, 0x1B, 0x9B, 0x85, 0x1B, 0x9C, 0x1C, 0x3B, 0x1D, 0x5C, 0x1C, 0x3C, 0x1B, 0x9B, 0x1B, 0xBB, 0x06, 0x1B, 0x9B, 0x07, 0x1B, 0xBB, 0x80, 0x1B, 0x9B, 0x07, 0x1B, 0xBB, 0x80, 0x1B, 0xBC, 0x01, 0x1B, 0xBB, 0x81, 0x1C, 0x9C, 0x1D, 0x1C, 0x19, 0x1B, 0xBB, 0x80, 0x1B, 0xDB, 0x02, 0x1B, 0xBB, 0x83, 0x1C, 0xFC, 0x1C, 0x7C, 0x1B, 0xBB, 0x1B, 0xDB, 0x17, 0x1B, 0xBC, 0x87, 0x1B, 0xBB, 0x1B, 0xDC, 0x23, 0xBC, 0x1B, 0xBB, 0x1D, 0x7C, 0x1B, 0xBB, 0x1B, 0xDC, 0x1B, 0xBB, 0x0F, 0x1B, 0xBC, 0x07, 0x1B, 0xBB, 0x85, 0x1B, 0xBC, 0x1B, 0x9C, 0x1B, 0xDC, 0x1B, 0xBB, 0x1C, 0x5B, 0x1C, 0xFB, 0x11, 0x1B, 0xBB, 0x07, 0x1B, 0xBC, 0x02, 0x1B, 0xBB, 0x82, 0x1B, 0x9B, 0x1D, 0x3C, 0x1C, 0xBC, 0x01, 0x1B, 0xBB, 0x80, 0x1B, 0x9B, 0x01, 0x1B, 0x9C, 0x01, 0x1B, 0x9B, 0x84, 0x1B, 0xBB, 0x1B, 0x9C, 0x1B, 0x9B, 0x1B, 0xBB, 0x23, 0x9B, 0x04, 0x23, 0xBC, 0x03, 0x2B, 0xBC, 0x01, 0x33, 0xBC, 0x80, 0x33, 0xDC, 0x03, 0x3B, 0xDC, 0x80, 0x81, 0x94, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x83, 0x99, 0x11, 0x99, 0x31, 0x26, 0x59, 0x4C, 0x98, 0x03, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x81, 0x4B, 0x19, 0x23, 0xBC, 0x02, 0x23, 0x9B, 0x02, 0x1B, 0x9B, 0x03, 0x1B, 0x7B, 0x02, 0x13, 0x7B, 0x84, 0x14, 0xBB, 0x15, 0x1B, 0x13, 0xDB, 0x13, 0x7B, 0x13, 0x7A, 0x01, 0x13, 0x7B, 0x80, 0x13, 0x7A, 0x02, 0x13, 0x7B, 0x81, 0x13, 0x5B, 0x13, 0x7B, 0x02, 0x13, 0x5B, 0x04, 0x13, 0x7B, 0x06, 0x13, 0x5B, 0x89, 0x13, 0x5A, 0x13, 0x5B, + 0x13, 0x5A, 0x13, 0xBB, 0x14, 0xDB, 0x14, 0xBB, 0x13, 0x7B, 0x13, 0x5A, 0x13, 0x5B, 0x0B, 0x5A, 0x01, 0x13, 0x5B, 0x83, 0x13, 0x5A, 0x0B, 0x5A, 0x13, 0x5A, 0x13, 0x5B, 0x03, 0x13, 0x5A, 0x01, 0x0B, 0x5A, 0x87, 0x13, 0x5A, 0x13, 0x3A, 0x13, 0x5A, 0x13, 0x3A, 0x0B, 0x3A, 0x13, 0x3B, 0x13, 0x3A, 0x0B, 0x3A, 0x01, 0x13, 0x3B, 0x80, 0x13, 0x3A, 0x01, 0x0B, 0x3A, 0x89, 0x0C, 0x5B, 0x0C, 0xBB, 0x0C, 0x5B, 0x0B, 0x7A, 0x0B, 0x3A, 0x0B, 0x3B, 0x0B, 0x1A, 0x13, 0x3B, 0x0B, 0x3A, 0x0B, 0x1A, 0x02, 0x0B, 0x3A, 0x81, 0x0B, 0x1A, 0x0B, 0x3A, 0x01, 0x0B, 0x1A, 0x80, 0x0B, 0x3A, 0x02, 0x0B, 0x1A, 0x80, 0x0B, 0x3A, 0x02, 0x0B, 0x1A, 0x80, 0x0B, 0x3A, 0x04, 0x0B, 0x1A, 0x80, 0x0B, 0x9A, 0x01, 0x0C, 0x9B, 0x82, 0x0B, 0xDA, 0x02, 0xF9, 0x01, 0xF9, 0x05, 0x09, 0x78, 0x01, 0x09, 0x79, 0x80, 0x09, 0x78, 0x03, 0x09, 0x79, 0x01, 0x01, 0x78, 0x02, 0x09, 0x79, 0x84, 0x09, 0x78, 0x09, 0x79, 0x01, 0x78, 0x09, 0x79, 0x09, 0x78, 0x03, 0x09, 0x79, 0x85, 0x0A, 0x1A, 0x0B, 0x1A, 0x0C, 0x3A, 0x0C, 0x1B, 0x0A, 0xDA, 0x09, 0xF9, 0x06, 0x09, 0x79, 0x01, 0x09, 0x99, 0x80, 0x09, 0x79, 0x01, 0x09, 0x99, 0x80, 0x09, 0x79, 0x0C, 0x09, 0x99, 0x84, 0x09, 0xF9, 0x0B, 0x1A, 0x0C, 0x7B, 0x0C, 0x1B, 0x0A, 0xBA, 0x0A, 0x09, 0x99, 0x80, 0x11, 0x99, 0x04, 0x09, 0x99, 0x80, 0x11, 0x99, 0x01, 0x11, 0xBA, 0x83, 0x11, 0xB9, 0x09, 0xB9, 0x11, 0xBA, 0x11, 0x99, 0x01, 0x11, 0xBA, 0x87, 0x11, 0x99, 0x11, 0xDA, 0x0B, 0x3A, 0x0C, 0x9B, 0x0B, 0xFB, 0x12, 0x7A, 0x11, 0xBA, 0x11, + 0x9A, 0x05, 0x11, 0xBA, 0x80, 0x11, 0x9A, 0x0C, 0x11, 0xBA, 0x80, 0x11, 0x9A, 0x04, 0x11, 0xBA, 0x83, 0x12, 0xBA, 0x14, 0xBB, 0x13, 0xFB, 0x11, 0xDB, 0x06, 0x11, 0xBA, 0x80, 0x11, 0xDA, 0x0A, 0x11, 0xBA, 0x84, 0x11, 0xBB, 0x11, 0xBA, 0x11, 0xDA, 0x11, 0xBA, 0x11, 0xDA, 0x01, 0x11, 0xBA, 0x86, 0x11, 0xDA, 0x11, 0xBA, 0x12, 0x7A, 0x14, 0xDB, 0x13, 0x7B, 0x11, 0xDA, 0x19, 0xBA, 0x0C, 0x11, 0xDA, 0x02, 0x19, 0xDA, 0x80, 0x11, 0xDA, 0x06, 0x11, 0xDB, 0x87, 0x19, 0xDB, 0x11, 0xDA, 0x19, 0xDA, 0x1A, 0x3B, 0x14, 0xFB, 0x1A, 0xFB, 0x19, 0xDA, 0x11, 0xDB, 0x0F, 0x19, 0xDA, 0x07, 0x19, 0xDB, 0x85, 0x19, 0xDA, 0x19, 0xDB, 0x19, 0xDA, 0x1A, 0x1B, 0x15, 0x3C, 0x1A, 0x3B, 0x01, 0x19, 0xDA, 0x07, 0x19, 0xDB, 0x0F, 0x19, 0xDA, 0x01, 0x19, 0xDB, 0x85, 0x19, 0xDA, 0x19, 0xDB, 0x15, 0x3B, 0x19, 0xDB, 0x19, 0xDA, 0x19, 0xDB, 0x17, 0x19, 0xDA, 0x86, 0x11, 0xDB, 0x19, 0xDB, 0x19, 0xDA, 0x19, 0xDB, 0x19, 0xFB, 0x15, 0x3C, 0x12, 0x3A, 0x01, 0x19, 0xDA, 0x04, 0x11, 0xDA, 0x81, 0x19, 0xDA, 0x11, 0xDB, 0x09, 0x19, 0xDB, 0x05, 0x11, 0xBA, 0x86, 0x19, 0xDB, 0x19, 0xBA, 0x11, 0xDA, 0x11, 0xBA, 0x1A, 0xBB, 0x14, 0xFB, 0x1A, 0x5B, 0x01, 0x19, 0xBA, 0x01, 0x11, 0xDA, 0x01, 0x19, 0xDB, 0x82, 0x19, 0xDA, 0x19, 0xDB, 0x19, 0xBA, 0x01, 0x19, 0xDA, 0x02, 0x19, 0xDB, 0x02, 0x21, 0xDB, 0x01, 0x21, 0xFB, 0x03, 0x29, 0xFB, 0x85, 0x31, 0xFB, 0x32, 0x1B, 0x31, 0xFB, 0x32, 0x1B, 0x41, 0xFA, 0x99, 0x12, 0x05, 0x99, 0x31, 0x84, 0x99, 0x12, 0x72, 0xD4, 0x4C, 0x98, + 0x99, 0x31, 0x99, 0x11, 0x02, 0x99, 0x31, 0x84, 0x99, 0x11, 0x99, 0x31, 0x59, 0x96, 0x21, 0xDB, 0x21, 0xDA, 0x02, 0x19, 0xDA, 0x01, 0x11, 0xDA, 0x06, 0x11, 0xBA, 0x86, 0x11, 0xD9, 0x13, 0x7A, 0x14, 0x9B, 0x13, 0x1A, 0x11, 0xBA, 0x11, 0x9A, 0x11, 0xB9, 0x01, 0x11, 0xBA, 0x82, 0x11, 0x9A, 0x11, 0xBA, 0x11, 0x9A, 0x08, 0x11, 0xBA, 0x80, 0x09, 0x99, 0x03, 0x11, 0x99, 0x01, 0x11, 0xBA, 0x89, 0x11, 0x99, 0x09, 0x99, 0x09, 0xB9, 0x09, 0x99, 0x0A, 0x1A, 0x0B, 0xFB, 0x0C, 0x9B, 0x13, 0x1A, 0x09, 0xDA, 0x11, 0x9A, 0x02, 0x09, 0x99, 0x81, 0x11, 0x99, 0x09, 0x9A, 0x14, 0x09, 0x99, 0x86, 0x0A, 0xBA, 0x0B, 0xDA, 0x0C, 0x5B, 0x0B, 0x3A, 0x09, 0xF9, 0x09, 0x99, 0x09, 0x79, 0x04, 0x09, 0x99, 0x02, 0x09, 0x79, 0x82, 0x09, 0x99, 0x09, 0x79, 0x09, 0x99, 0x05, 0x09, 0x79, 0x80, 0x09, 0x78, 0x01, 0x09, 0x79, 0x84, 0x01, 0x78, 0x01, 0x99, 0x01, 0x79, 0x09, 0x79, 0x09, 0x99, 0x0A, 0x02, 0xB9, 0x80, 0x0A, 0xB9, 0x05, 0x02, 0xB9, 0x80, 0x0A, 0xB9, 0x01, 0x02, 0xB9, 0x01, 0x02, 0xD9, 0x84, 0x02, 0xB9, 0x0A, 0xB9, 0x0A, 0xD9, 0x02, 0xD9, 0x0A, 0xD9, 0x01, 0x0A, 0xB9, 0x80, 0x03, 0xBA, 0x01, 0x04, 0x3A, 0x84, 0x03, 0x59, 0x02, 0xD9, 0x0A, 0xD9, 0x02, 0xD9, 0x0A, 0xD9, 0x01, 0x02, 0xD9, 0x02, 0x0A, 0xD9, 0x81, 0x02, 0xD9, 0x0A, 0xD9, 0x01, 0x02, 0xD9, 0x81, 0x0A, 0xDA, 0x0A, 0xFA, 0x01, 0x02, 0xFA, 0x84, 0x02, 0xD9, 0x02, 0xFA, 0x0A, 0xDA, 0x0A, 0xFA, 0x02, 0xFA, 0x01, 0x0A, 0xFA, 0x88, 0x0A, 0xD9, 0x0A, 0xFA, 0x0A, 0xDA, 0x0A, 0xFA, 0x0B, 0x5A, + 0x0C, 0x5B, 0x04, 0x7A, 0x0B, 0xBA, 0x0A, 0xF9, 0x02, 0x0A, 0xFA, 0x01, 0x0A, 0xF9, 0x0C, 0x0A, 0xFA, 0x01, 0x0B, 0x1A, 0x01, 0x0A, 0xFA, 0x83, 0x0B, 0x1A, 0x0A, 0xFA, 0x0B, 0x1A, 0x0A, 0xFA, 0x01, 0x0B, 0x1A, 0x83, 0x0C, 0x3A, 0x0C, 0x9A, 0x0B, 0xDA, 0x0B, 0x1A, 0x01, 0x0A, 0xFA, 0x12, 0x0B, 0x1A, 0x80, 0x0B, 0x3A, 0x01, 0x0B, 0x1A, 0x80, 0x0B, 0x3A, 0x02, 0x0B, 0x1A, 0x82, 0x0B, 0xDB, 0x14, 0xBB, 0x0B, 0xFA, 0x01, 0x0B, 0x1A, 0x01, 0x0B, 0x3A, 0x01, 0x0B, 0x1A, 0x01, 0x0B, 0x3A, 0x82, 0x13, 0x1A, 0x0B, 0x3A, 0x0B, 0x1A, 0x07, 0x0B, 0x3A, 0x01, 0x13, 0x3B, 0x80, 0x13, 0x3A, 0x04, 0x0B, 0x3A, 0x84, 0x13, 0x3A, 0x0B, 0x3A, 0x13, 0x7A, 0x0C, 0xDB, 0x0C, 0x5B, 0x01, 0x13, 0x3B, 0x80, 0x0B, 0x3A, 0x06, 0x13, 0x3A, 0x0A, 0x13, 0x3B, 0x03, 0x13, 0x5B, 0x01, 0x13, 0x3B, 0x87, 0x13, 0x5A, 0x0B, 0x5B, 0x13, 0x3B, 0x14, 0x3A, 0x14, 0x7B, 0x13, 0x5B, 0x13, 0x5A, 0x13, 0x3B, 0x11, 0x13, 0x5A, 0x07, 0x13, 0x5B, 0x82, 0x13, 0x5A, 0x13, 0xBB, 0x14, 0xDB, 0x1B, 0x13, 0x5B, 0x86, 0x13, 0x5A, 0x13, 0x5B, 0x13, 0x3B, 0x14, 0xFB, 0x13, 0x5A, 0x13, 0x5B, 0x13, 0x5A, 0x0F, 0x13, 0x5B, 0x07, 0x13, 0x5A, 0x82, 0x13, 0x3A, 0x13, 0x5B, 0x13, 0x5A, 0x01, 0x13, 0x5B, 0x82, 0x14, 0x9B, 0x13, 0xFB, 0x13, 0x3A, 0x01, 0x13, 0x5B, 0x02, 0x13, 0x5A, 0x02, 0x13, 0x5B, 0x0F, 0x13, 0x3B, 0x86, 0x13, 0x3A, 0x13, 0x3B, 0x13, 0x3A, 0x13, 0x5A, 0x13, 0x3A, 0x14, 0x3B, 0x14, 0x7B, 0x03, 0x13, 0x3A, 0x80, 0x13, 0x3B, 0x01, 0x13, 0x3A, 0x80, 0x13, 0x3B, 0x02, + 0x13, 0x3A, 0x80, 0x13, 0x5B, 0x01, 0x13, 0x3B, 0x80, 0x1B, 0x3B, 0x01, 0x1B, 0x5B, 0x81, 0x1B, 0x3B, 0x1B, 0x5B, 0x03, 0x23, 0x5B, 0x01, 0x2B, 0x5B, 0x01, 0x2B, 0x7B, 0x82, 0x33, 0x5B, 0x72, 0x35, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x72, 0xD5, 0x01, 0x99, 0x32, 0x04, 0x99, 0x31, 0x80, 0x71, 0xB4, 0x01, 0x1B, 0x3B, 0x82, 0x13, 0x3A, 0x13, 0x3B, 0x13, 0x3A, 0x03, 0x13, 0x1A, 0x02, 0x0B, 0x1A, 0x86, 0x0B, 0x3A, 0x0A, 0xFA, 0x0B, 0x1A, 0x0A, 0xFA, 0x0B, 0xDA, 0x0C, 0xBB, 0x0B, 0xDA, 0x0D, 0x0B, 0x1A, 0x04, 0x0A, 0xFA, 0x80, 0x0B, 0x1A, 0x08, 0x0A, 0xFA, 0x83, 0x0B, 0xBA, 0x04, 0x9B, 0x0C, 0x3A, 0x0B, 0x3A, 0x05, 0x0A, 0xFA, 0x81, 0x02, 0xFA, 0x0A, 0xFA, 0x01, 0x0A, 0xDA, 0x06, 0x0A, 0xFA, 0x80, 0x02, 0xDA, 0x02, 0x0A, 0xDA, 0x01, 0x02, 0xD9, 0x82, 0x02, 0xDA, 0x02, 0xFA, 0x02, 0xD9, 0x01, 0x0A, 0xD9, 0x80, 0x0B, 0x5A, 0x01, 0x04, 0x5A, 0x81, 0x03, 0x3A, 0x0A, 0xD9, 0x01, 0x02, 0xD9, 0x81, 0x02, 0xDA, 0x0A, 0xDA, 0x05, 0x02, 0xD9, 0x01, 0x0A, 0xB9, 0x01, 0x02, 0xD9, 0x80, 0x0A, 0xB9, 0x04, 0x02, 0xD9, 0x85, 0x0A, 0xB9, 0x02, 0xB9, 0x02, 0xD9, 0x02, 0xB9, 0x02, 0xD9, 0x0A, 0xB9, 0x01, 0x02, 0x99, 0x02, 0x02, 0x98, 0x03, 0x02, 0x99, 0x80, 0x02, 0x98, 0x0A, 0x02, 0x99, 0x87, 0x02, 0xB8, 0x02, 0xB9, 0x02, 0x99, 0x02, 0xB8, 0x03, 0x9A, 0x04, 0x1A, 0x03, 0xFA, 0x03, 0x39, 0x16, 0x02, 0xB9, 0x80, 0x02, 0xD9, 0x01, 0x02, 0xB9, 0x86, 0x02, 0xD9, 0x02, 0xB9, 0x02, 0xD9, 0x03, 0xBA, 0x04, 0x3A, + 0x03, 0xFA, 0x02, 0xF9, 0x01, 0x02, 0xD9, 0x01, 0x0A, 0xB9, 0x81, 0x02, 0xD9, 0x02, 0xB9, 0x04, 0x02, 0xD9, 0x01, 0x0A, 0xD9, 0x0A, 0x02, 0xD9, 0x89, 0x02, 0xF9, 0x02, 0xD9, 0x02, 0xDA, 0x0A, 0xDA, 0x0A, 0xFA, 0x0B, 0xFA, 0x0C, 0x5B, 0x0B, 0xFA, 0x0A, 0xD9, 0x02, 0xFA, 0x01, 0x02, 0xF9, 0x85, 0x0A, 0xF9, 0x02, 0xF9, 0x0A, 0xF9, 0x02, 0xD9, 0x02, 0xF9, 0x0A, 0xF9, 0x0F, 0x0A, 0xFA, 0x80, 0x0A, 0xF9, 0x02, 0x0A, 0xFA, 0x85, 0x0C, 0x1A, 0x0C, 0x7B, 0x0B, 0x5A, 0x0A, 0xFA, 0x0A, 0xF9, 0x0B, 0x1A, 0x02, 0x0A, 0xFA, 0x80, 0x0B, 0x1A, 0x01, 0x0A, 0xFA, 0x80, 0x0B, 0x1A, 0x07, 0x0A, 0xFA, 0x02, 0x0B, 0x1A, 0x81, 0x03, 0x1A, 0x0A, 0xFA, 0x01, 0x0B, 0x1A, 0x80, 0x0A, 0xFA, 0x02, 0x0B, 0x1A, 0x84, 0x0A, 0xFA, 0x0C, 0x3A, 0x0C, 0x5A, 0x0B, 0x1A, 0x0A, 0xFA, 0x1C, 0x0B, 0x1A, 0x81, 0x0C, 0x5B, 0x0C, 0x1A, 0x1D, 0x0B, 0x1A, 0x83, 0x0B, 0x3A, 0x0C, 0x7B, 0x0B, 0x7A, 0x0B, 0x3A, 0x1D, 0x0B, 0x1A, 0x82, 0x0C, 0xBB, 0x0B, 0x1A, 0x0B, 0x3A, 0x1D, 0x0B, 0x1A, 0x81, 0x0B, 0x7A, 0x0C, 0xBB, 0x1E, 0x0B, 0x1A, 0x81, 0x0B, 0xDA, 0x0C, 0x7B, 0x0B, 0x0B, 0x1A, 0x04, 0x13, 0x1A, 0x80, 0x1B, 0x1A, 0x03, 0x1B, 0x3A, 0x01, 0x23, 0x3A, 0x83, 0x23, 0x3B, 0x2B, 0x3B, 0x2B, 0x5B, 0x3A, 0xD9, 0x02, 0x99, 0x31, 0x80, 0x99, 0x12, 0x04, 0x99, 0x31, 0x80, 0x99, 0x11, 0x05, 0x99, 0x31, 0x81, 0x89, 0x93, 0x1B, 0x1A, 0x01, 0x13, 0x1A, 0x80, 0x12, 0xFA, 0x0B, 0x0A, 0xFA, 0x89, 0x02, 0xFA, 0x0A, 0xFA, 0x03, 0x5A, 0x04, 0x5A, 0x0C, 0x3A, 0x0A, 0xFA, 0x02, 0xDA, + 0x0A, 0xFA, 0x0A, 0xF9, 0x02, 0xF9, 0x02, 0x0A, 0xFA, 0x0E, 0x02, 0xD9, 0x82, 0x0A, 0xD9, 0x02, 0xD9, 0x02, 0xDA, 0x01, 0x0A, 0xD9, 0x8A, 0x02, 0xBA, 0x02, 0xD9, 0x03, 0x9A, 0x04, 0x3A, 0x03, 0xDA, 0x02, 0xD9, 0x0A, 0xB9, 0x02, 0xD9, 0x0A, 0xB9, 0x02, 0xB9, 0x02, 0xD9, 0x01, 0x02, 0xB9, 0x04, 0x02, 0xD9, 0x81, 0x02, 0xB9, 0x0A, 0xB9, 0x03, 0x02, 0xB9, 0x82, 0x02, 0xD9, 0x02, 0xB9, 0x02, 0xD9, 0x06, 0x02, 0xB9, 0x83, 0x02, 0xD9, 0x03, 0xFA, 0x04, 0x1A, 0x03, 0xB9, 0x01, 0x02, 0xB9, 0x80, 0x02, 0x99, 0x03, 0x02, 0xB9, 0x80, 0x02, 0x99, 0x03, 0x02, 0xB9, 0x80, 0x02, 0x99, 0x01, 0x02, 0xB9, 0x06, 0x02, 0x99, 0x01, 0x02, 0xB8, 0x80, 0x01, 0x17, 0x04, 0x01, 0x37, 0x80, 0x01, 0x17, 0x02, 0x01, 0x37, 0x01, 0x01, 0x17, 0x02, 0x01, 0x37, 0x01, 0x01, 0x17, 0x04, 0x01, 0x37, 0x85, 0x01, 0x98, 0x02, 0xB8, 0x03, 0x99, 0x03, 0x59, 0x02, 0x58, 0x01, 0x98, 0x01, 0x01, 0x37, 0x81, 0x01, 0x17, 0x01, 0x58, 0x01, 0x01, 0x37, 0x81, 0x01, 0x38, 0x01, 0x37, 0x01, 0x01, 0x38, 0x02, 0x01, 0x37, 0x08, 0x01, 0x38, 0x01, 0x01, 0x37, 0x01, 0x01, 0x38, 0x82, 0x01, 0x37, 0x01, 0x58, 0x02, 0x59, 0x01, 0x03, 0x99, 0x80, 0x02, 0x58, 0x01, 0x01, 0x58, 0x01, 0x01, 0x38, 0x85, 0x01, 0x58, 0x01, 0x38, 0x01, 0x58, 0x01, 0x37, 0x01, 0x38, 0x01, 0x58, 0x01, 0x01, 0x38, 0x0B, 0x01, 0x58, 0x80, 0x01, 0x38, 0x02, 0x01, 0x58, 0x84, 0x01, 0x38, 0x02, 0x38, 0x03, 0xB9, 0x03, 0xDA, 0x02, 0x59, 0x17, 0x01, 0x58, 0x81, 0x01, 0x38, 0x01, 0x78, 0x01, 0x01, 0x58, 0x85, + 0x01, 0x59, 0x01, 0xB9, 0x03, 0x7A, 0x0B, 0xDA, 0x02, 0x18, 0x09, 0x58, 0x01, 0x01, 0x59, 0x80, 0x09, 0x58, 0x03, 0x01, 0x58, 0x85, 0x09, 0x58, 0x09, 0x59, 0x01, 0x58, 0x01, 0x59, 0x01, 0x79, 0x01, 0x58, 0x03, 0x01, 0x59, 0x03, 0x01, 0x58, 0x8F, 0x09, 0x79, 0x01, 0x79, 0x09, 0x58, 0x09, 0x79, 0x01, 0x59, 0x01, 0x78, 0x01, 0x59, 0x09, 0x58, 0x03, 0x3A, 0x04, 0x1A, 0x01, 0xF9, 0x09, 0x59, 0x01, 0x79, 0x09, 0x58, 0x09, 0x59, 0x01, 0x58, 0x03, 0x01, 0x59, 0x03, 0x09, 0x79, 0x07, 0x01, 0x79, 0x01, 0x09, 0x79, 0x01, 0x09, 0x59, 0x04, 0x09, 0x79, 0x83, 0x0A, 0x79, 0x04, 0x3A, 0x01, 0x99, 0x09, 0x59, 0x01, 0x01, 0x79, 0x10, 0x09, 0x79, 0x07, 0x01, 0x79, 0x85, 0x09, 0x79, 0x01, 0x79, 0x09, 0xB9, 0x0C, 0x3B, 0x01, 0x79, 0x09, 0x79, 0x01, 0x01, 0x79, 0x18, 0x09, 0x79, 0x84, 0x01, 0x79, 0x09, 0x79, 0x01, 0x79, 0x0C, 0x7A, 0x09, 0x79, 0x01, 0x01, 0x79, 0x0F, 0x09, 0x79, 0x09, 0x01, 0x79, 0x03, 0x09, 0x79, 0x81, 0x0B, 0xFA, 0x02, 0x59, 0x04, 0x09, 0x79, 0x80, 0x09, 0x59, 0x11, 0x09, 0x79, 0x8F, 0x01, 0x79, 0x09, 0x58, 0x09, 0x79, 0x01, 0x78, 0x09, 0x58, 0x01, 0x59, 0x09, 0x99, 0x0B, 0xDA, 0x02, 0xD9, 0x01, 0x59, 0x09, 0x59, 0x01, 0x59, 0x09, 0x79, 0x09, 0x59, 0x09, 0x79, 0x09, 0x59, 0x07, 0x09, 0x79, 0x04, 0x11, 0x79, 0x01, 0x19, 0x99, 0x87, 0x19, 0x9A, 0x19, 0x99, 0x21, 0x99, 0x21, 0x9A, 0x21, 0xBA, 0x71, 0x54, 0x99, 0x31, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x03, 0x99, 0x31, 0x80, 0x99, 0x11, 0x04, 0x99, 0x31, 0x02, + 0x11, 0x79, 0x01, 0x09, 0x79, 0x03, 0x09, 0x58, 0x02, 0x01, 0x58, 0x80, 0x09, 0x58, 0x03, 0x01, 0x58, 0x82, 0x01, 0x59, 0x01, 0x58, 0x01, 0xD8, 0x01, 0x03, 0x99, 0x80, 0x01, 0xD9, 0x01, 0x01, 0x58, 0x01, 0x01, 0x38, 0x0F, 0x01, 0x58, 0x80, 0x01, 0x38, 0x01, 0x01, 0x58, 0x80, 0x01, 0x57, 0x03, 0x01, 0x58, 0x87, 0x01, 0x38, 0x02, 0x18, 0x03, 0x79, 0x03, 0xB9, 0x02, 0x58, 0x01, 0x58, 0x01, 0x38, 0x01, 0x58, 0x01, 0x01, 0x38, 0x80, 0x01, 0x58, 0x09, 0x01, 0x38, 0x01, 0x01, 0x37, 0x01, 0x01, 0x38, 0x84, 0x01, 0x37, 0x01, 0x38, 0x01, 0x37, 0x01, 0x38, 0x01, 0x37, 0x02, 0x01, 0x38, 0x85, 0x01, 0x37, 0x02, 0x38, 0x03, 0x59, 0x03, 0x99, 0x02, 0x98, 0x01, 0x78, 0x07, 0x01, 0x37, 0x01, 0x01, 0x17, 0x07, 0x01, 0x37, 0x80, 0x01, 0x17, 0x01, 0x01, 0x37, 0x02, 0x01, 0x16, 0x83, 0x00, 0xF7, 0x00, 0xF6, 0x01, 0x16, 0x01, 0x17, 0x01, 0x01, 0x16, 0x80, 0x01, 0x17, 0x01, 0x01, 0x16, 0x01, 0x01, 0x17, 0x80, 0x01, 0x16, 0x03, 0x01, 0x17, 0x85, 0x01, 0x37, 0x02, 0x38, 0x03, 0x18, 0x03, 0x79, 0x02, 0x97, 0x01, 0x97, 0x04, 0x01, 0x17, 0x81, 0x01, 0x37, 0x01, 0x16, 0x04, 0x01, 0x17, 0x80, 0x01, 0x37, 0x04, 0x01, 0x17, 0x80, 0x01, 0x37, 0x06, 0x01, 0x17, 0x89, 0x01, 0x37, 0x01, 0x17, 0x01, 0x77, 0x02, 0xD8, 0x03, 0x99, 0x03, 0x18, 0x01, 0xD7, 0x01, 0x17, 0x01, 0x37, 0x01, 0x17, 0x03, 0x01, 0x37, 0x83, 0x01, 0x17, 0x01, 0x37, 0x01, 0x17, 0x01, 0x37, 0x01, 0x01, 0x17, 0x0D, 0x01, 0x37, 0x85, 0x01, 0x38, 0x01, 0x37, 0x01, 0xD8, 0x03, 0x39, 0x03, + 0x99, 0x02, 0x38, 0x01, 0x01, 0x37, 0x01, 0x01, 0x38, 0x01, 0x01, 0x37, 0x04, 0x01, 0x38, 0x01, 0x01, 0x37, 0x01, 0x01, 0x38, 0x80, 0x01, 0x37, 0x0B, 0x01, 0x38, 0x86, 0x01, 0x57, 0x01, 0x38, 0x02, 0x78, 0x03, 0xD9, 0x02, 0xB9, 0x01, 0x78, 0x01, 0x58, 0x01, 0x01, 0x38, 0x81, 0x01, 0x58, 0x01, 0x38, 0x01, 0x01, 0x37, 0x04, 0x01, 0x38, 0x81, 0x01, 0x37, 0x01, 0x58, 0x05, 0x01, 0x38, 0x02, 0x01, 0x58, 0x01, 0x01, 0x38, 0x80, 0x09, 0x38, 0x02, 0x01, 0x58, 0x83, 0x01, 0x78, 0x03, 0x39, 0x03, 0x99, 0x01, 0x78, 0x1D, 0x01, 0x58, 0x82, 0x01, 0xD9, 0x03, 0xF9, 0x01, 0xF9, 0x1E, 0x01, 0x58, 0x81, 0x02, 0xD9, 0x03, 0x19, 0x02, 0x01, 0x58, 0x80, 0x01, 0x59, 0x17, 0x01, 0x58, 0x80, 0x09, 0x59, 0x01, 0x01, 0x58, 0x82, 0x01, 0x59, 0x04, 0x1A, 0x09, 0x59, 0x1F, 0x01, 0x58, 0x81, 0x02, 0xB9, 0x03, 0x19, 0x01, 0x01, 0x58, 0x01, 0x01, 0x38, 0x18, 0x01, 0x58, 0x84, 0x01, 0x38, 0x01, 0x58, 0x01, 0xD8, 0x03, 0xF9, 0x01, 0xF8, 0x01, 0x01, 0x38, 0x07, 0x01, 0x58, 0x04, 0x09, 0x58, 0x02, 0x11, 0x58, 0x81, 0x11, 0x78, 0x11, 0x79, 0x03, 0x19, 0x79, 0x82, 0x19, 0x99, 0x21, 0x79, 0x31, 0x78, 0x04, 0x99, 0x31, 0x82, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x07, 0x99, 0x31, 0x82, 0x31, 0x57, 0x09, 0x58, 0x11, 0x58, 0x01, 0x09, 0x58, 0x03, 0x09, 0x38, 0x04, 0x01, 0x38, 0x01, 0x01, 0x37, 0x04, 0x01, 0x38, 0x84, 0x02, 0x98, 0x03, 0xF9, 0x02, 0x98, 0x01, 0x37, 0x01, 0x38, 0x12, 0x01, 0x37, 0x80, 0x01, 0x17, 0x01, 0x01, 0x37, 0x80, 0x01, 0x17, 0x01, 0x01, + 0x37, 0x83, 0x01, 0x38, 0x01, 0x17, 0x01, 0x37, 0x02, 0x38, 0x01, 0x03, 0x79, 0x80, 0x02, 0x38, 0x01, 0x01, 0x37, 0x03, 0x01, 0x17, 0x80, 0x01, 0x37, 0x01, 0x01, 0x17, 0x06, 0x01, 0x37, 0x03, 0x01, 0x17, 0x80, 0x01, 0x37, 0x01, 0x01, 0x17, 0x80, 0x01, 0x36, 0x02, 0x01, 0x17, 0x89, 0x01, 0x36, 0x01, 0x37, 0x01, 0xB7, 0x02, 0xB8, 0x03, 0x99, 0x02, 0xB8, 0x01, 0x97, 0x01, 0x37, 0x01, 0x17, 0x01, 0x37, 0x04, 0x01, 0x17, 0x80, 0x01, 0x16, 0x03, 0x01, 0x17, 0x80, 0x01, 0x16, 0x04, 0x01, 0x17, 0x0D, 0x00, 0xF6, 0x8C, 0x01, 0x16, 0x00, 0xF6, 0x01, 0x16, 0x01, 0xB7, 0x02, 0xB7, 0x03, 0x78, 0x02, 0xB7, 0x01, 0xD6, 0x01, 0x16, 0x00, 0xF7, 0x00, 0xF6, 0x01, 0x16, 0x00, 0xF6, 0x01, 0x01, 0x16, 0x01, 0x00, 0xF6, 0x0B, 0x01, 0x16, 0x80, 0x01, 0x17, 0x05, 0x01, 0x16, 0x85, 0x01, 0x36, 0x01, 0x97, 0x02, 0xF8, 0x03, 0x78, 0x02, 0x97, 0x01, 0x77, 0x01, 0x01, 0x16, 0x80, 0x01, 0x17, 0x01, 0x01, 0x16, 0x01, 0x01, 0x17, 0x80, 0x01, 0x16, 0x03, 0x01, 0x17, 0x02, 0x01, 0x16, 0x0D, 0x01, 0x17, 0x83, 0x01, 0xD7, 0x03, 0x18, 0x03, 0x79, 0x02, 0x38, 0x0A, 0x01, 0x17, 0x80, 0x01, 0x37, 0x05, 0x01, 0x17, 0x80, 0x01, 0x37, 0x07, 0x01, 0x17, 0x80, 0x01, 0x37, 0x01, 0x01, 0x17, 0x89, 0x01, 0x77, 0x03, 0x18, 0x03, 0x79, 0x01, 0xD7, 0x01, 0x37, 0x01, 0x17, 0x01, 0x37, 0x01, 0x17, 0x01, 0x37, 0x01, 0x36, 0x01, 0x01, 0x17, 0x01, 0x01, 0x37, 0x01, 0x01, 0x17, 0x02, 0x01, 0x37, 0x80, 0x01, 0x17, 0x02, 0x01, 0x37, 0x02, 0x01, 0x17, 0x04, 0x01, 0x37, 0x8B, + 0x01, 0x38, 0x01, 0x37, 0x01, 0x17, 0x01, 0x57, 0x03, 0x59, 0x02, 0xF8, 0x01, 0x57, 0x01, 0x17, 0x01, 0x37, 0x01, 0x17, 0x01, 0x37, 0x01, 0x17, 0x02, 0x01, 0x37, 0x0E, 0x01, 0x38, 0x06, 0x01, 0x37, 0x85, 0x01, 0x58, 0x03, 0x59, 0x02, 0x78, 0x01, 0x37, 0x01, 0x38, 0x01, 0x37, 0x01, 0x01, 0x38, 0x80, 0x01, 0x37, 0x17, 0x01, 0x38, 0x84, 0x01, 0x37, 0x01, 0x38, 0x03, 0xB9, 0x01, 0xB8, 0x01, 0x37, 0x01, 0x01, 0x38, 0x80, 0x01, 0x37, 0x17, 0x01, 0x38, 0x02, 0x01, 0x37, 0x84, 0x01, 0x38, 0x03, 0xF9, 0x01, 0x37, 0x01, 0x38, 0x01, 0x37, 0x18, 0x01, 0x38, 0x82, 0x01, 0x37, 0x01, 0x38, 0x01, 0x18, 0x01, 0x01, 0x38, 0x82, 0x01, 0x78, 0x03, 0xF9, 0x01, 0x58, 0x01, 0x01, 0x37, 0x14, 0x01, 0x38, 0x02, 0x01, 0x37, 0x01, 0x01, 0x38, 0x01, 0x01, 0x37, 0x89, 0x01, 0x18, 0x02, 0x38, 0x03, 0xB9, 0x01, 0x77, 0x01, 0x37, 0x01, 0x38, 0x01, 0x37, 0x01, 0x17, 0x01, 0x37, 0x01, 0x38, 0x03, 0x01, 0x37, 0x80, 0x09, 0x37, 0x04, 0x09, 0x38, 0x80, 0x09, 0x58, 0x04, 0x11, 0x58, 0x01, 0x19, 0x58, 0x82, 0x19, 0x59, 0x19, 0x78, 0x69, 0x34, 0x01, 0x99, 0x31, 0x80, 0x99, 0x12, 0x04, 0x99, 0x31, 0x82, 0x99, 0x12, 0x99, 0x31, 0x99, 0x11, 0x02, 0x99, 0x31, 0x83, 0x99, 0x32, 0x41, 0x35, 0x09, 0x38, 0x09, 0x57, 0x03, 0x09, 0x37, 0x08, 0x01, 0x17, 0x01, 0x01, 0x37, 0x03, 0x01, 0x17, 0x83, 0x01, 0x97, 0x03, 0x18, 0x03, 0x38, 0x01, 0xB7, 0x12, 0x01, 0x17, 0x80, 0x01, 0x16, 0x02, 0x01, 0x17, 0x8D, 0x01, 0x16, 0x01, 0x17, 0x01, 0x16, 0x01, 0x17, 0x01, 0x16, 0x01, + 0x17, 0x00, 0xF7, 0x02, 0x17, 0x03, 0x39, 0x02, 0xF8, 0x01, 0x97, 0x01, 0x36, 0x01, 0x16, 0x01, 0x17, 0x0F, 0x01, 0x16, 0x80, 0x01, 0x17, 0x04, 0x01, 0x16, 0x80, 0x01, 0x17, 0x02, 0x01, 0x16, 0x86, 0x01, 0x56, 0x02, 0x37, 0x03, 0x58, 0x02, 0xD8, 0x01, 0xF7, 0x01, 0x16, 0x00, 0xF6, 0x05, 0x01, 0x16, 0x01, 0x00, 0xF6, 0x80, 0x01, 0x16, 0x04, 0x00, 0xF6, 0x80, 0x01, 0x16, 0x09, 0x02, 0x97, 0x81, 0x02, 0xB7, 0x02, 0x97, 0x03, 0x02, 0xB7, 0x83, 0x03, 0x18, 0x03, 0x57, 0x03, 0x38, 0x02, 0xD7, 0x11, 0x02, 0xB7, 0x80, 0x02, 0xB8, 0x07, 0x02, 0xB7, 0x01, 0x02, 0xB8, 0x85, 0x02, 0xB7, 0x03, 0x17, 0x03, 0x58, 0x03, 0x38, 0x02, 0xF7, 0x02, 0xD7, 0x02, 0x02, 0xB7, 0x0A, 0x02, 0xD7, 0x01, 0x02, 0xD8, 0x02, 0x02, 0xD7, 0x01, 0x02, 0xD8, 0x82, 0x02, 0xD7, 0x02, 0xD8, 0x02, 0xD7, 0x02, 0x02, 0xD8, 0x01, 0x02, 0xD7, 0x83, 0x02, 0xF7, 0x03, 0x58, 0x03, 0x78, 0x02, 0xF7, 0x02, 0x02, 0xD8, 0x05, 0x02, 0xD7, 0x0D, 0x02, 0xD8, 0x04, 0x02, 0xF8, 0x80, 0x02, 0xD7, 0x01, 0x02, 0xF8, 0x83, 0x03, 0x98, 0x03, 0x78, 0x02, 0xF8, 0x02, 0xD8, 0x1D, 0x02, 0xF8, 0x81, 0x03, 0x78, 0x03, 0x98, 0x18, 0x02, 0xF8, 0x83, 0x03, 0x18, 0x02, 0xF8, 0x03, 0x18, 0x02, 0xF7, 0x01, 0x02, 0xF8, 0x83, 0x03, 0x18, 0x03, 0x58, 0x03, 0x99, 0x03, 0x18, 0x01, 0x02, 0xF8, 0x01, 0x03, 0x18, 0x81, 0x02, 0xF8, 0x03, 0x18, 0x07, 0x02, 0xF8, 0x10, 0x03, 0x18, 0x81, 0x03, 0x38, 0x03, 0xB8, 0x01, 0x03, 0x18, 0x80, 0x02, 0xF8, 0x1D, 0x03, 0x18, 0x80, 0x03, 0xB8, 0x1C, 0x03, 0x18, + 0x80, 0x02, 0xF8, 0x01, 0x03, 0x18, 0x83, 0x02, 0xF8, 0x03, 0x18, 0x03, 0x78, 0x03, 0x38, 0x01, 0x02, 0xF8, 0x82, 0x03, 0x18, 0x02, 0xF8, 0x03, 0x18, 0x11, 0x02, 0xF8, 0x01, 0x03, 0x18, 0x06, 0x02, 0xF8, 0x81, 0x03, 0x78, 0x03, 0x38, 0x0C, 0x02, 0xF8, 0x03, 0x0A, 0xF8, 0x01, 0x0B, 0x18, 0x80, 0x13, 0x18, 0x04, 0x13, 0x19, 0x81, 0x1B, 0x18, 0x2A, 0xF8, 0x03, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x84, 0x99, 0x32, 0x99, 0x31, 0x99, 0x11, 0x99, 0x31, 0x99, 0x32, 0x02, 0x99, 0x31, 0x80, 0x52, 0x15, 0x01, 0x0A, 0xF8, 0x03, 0x02, 0xF8, 0x0D, 0x02, 0xD8, 0x80, 0x02, 0xD7, 0x01, 0x02, 0xD8, 0x01, 0x03, 0x78, 0x81, 0x02, 0xD7, 0x02, 0xD8, 0x01, 0x02, 0xD7, 0x01, 0x02, 0xD8, 0x04, 0x02, 0xD7, 0x01, 0x02, 0xD8, 0x03, 0x02, 0xD7, 0x80, 0x02, 0xD8, 0x06, 0x02, 0xD7, 0x80, 0x02, 0xB7, 0x02, 0x02, 0xD7, 0x01, 0x02, 0xB7, 0x80, 0x02, 0xF7, 0x01, 0x03, 0x58, 0x80, 0x02, 0xF7, 0x1D, 0x02, 0xB7, 0x83, 0x02, 0xD7, 0x03, 0x38, 0x03, 0x57, 0x02, 0xF7, 0x01, 0x02, 0x97, 0x05, 0x02, 0xB7, 0x02, 0x02, 0x97, 0x80, 0x02, 0xB7, 0x01, 0x02, 0x97, 0x82, 0x02, 0xB7, 0x02, 0x97, 0x01, 0x75, 0x01, 0x01, 0x55, 0x82, 0x01, 0x56, 0x01, 0x75, 0x01, 0x76, 0x04, 0x01, 0x75, 0x88, 0x01, 0xB6, 0x02, 0x57, 0x02, 0xF7, 0x02, 0xD7, 0x02, 0x16, 0x01, 0x76, 0x01, 0x55, 0x01, 0x75, 0x01, 0x56, 0x0B, 0x01, 0x75, 0x01, 0x01, 0x76, 0x80, 0x01, 0x55, 0x02, 0x01, 0x76, 0x83, 0x01, 0x75, 0x01, 0x76, 0x01, 0x75, 0x01, 0x56, 0x02, 0x01, 0x76, 0x87, 0x01, 0x55, + 0x01, 0xB6, 0x02, 0x96, 0x03, 0x37, 0x02, 0x96, 0x01, 0xD6, 0x01, 0x76, 0x01, 0x96, 0x0F, 0x01, 0x76, 0x80, 0x01, 0x96, 0x02, 0x01, 0x76, 0x01, 0x01, 0x96, 0x01, 0x01, 0x76, 0x89, 0x01, 0x96, 0x01, 0x76, 0x01, 0x96, 0x01, 0x76, 0x01, 0xB6, 0x02, 0xF8, 0x03, 0x17, 0x02, 0x17, 0x01, 0x96, 0x01, 0x76, 0x03, 0x01, 0x96, 0x80, 0x01, 0x76, 0x10, 0x01, 0x96, 0x80, 0x01, 0x76, 0x05, 0x01, 0x96, 0x84, 0x01, 0xF7, 0x03, 0x37, 0x02, 0xD7, 0x01, 0xB6, 0x01, 0x97, 0x01, 0x01, 0x96, 0x80, 0x01, 0x76, 0x11, 0x01, 0x96, 0x80, 0x01, 0x97, 0x07, 0x01, 0x96, 0x82, 0x02, 0x37, 0x03, 0x58, 0x02, 0x17, 0x09, 0x01, 0x96, 0x0F, 0x01, 0x97, 0x01, 0x01, 0x96, 0x01, 0x01, 0x97, 0x01, 0x01, 0x96, 0x83, 0x02, 0x77, 0x03, 0x18, 0x01, 0xB6, 0x01, 0x96, 0x15, 0x01, 0x97, 0x80, 0x01, 0xB7, 0x06, 0x01, 0x97, 0x86, 0x01, 0xB6, 0x02, 0xF7, 0x02, 0x57, 0x01, 0x97, 0x01, 0xB6, 0x01, 0xB7, 0x01, 0xB6, 0x19, 0x01, 0x97, 0x84, 0x01, 0xB7, 0x01, 0xB6, 0x01, 0xB7, 0x03, 0x78, 0x01, 0xB7, 0x1F, 0x01, 0x97, 0x82, 0x01, 0xB6, 0x01, 0xF7, 0x03, 0x58, 0x01, 0x01, 0x96, 0x84, 0x01, 0xB6, 0x01, 0x96, 0x01, 0xB6, 0x01, 0x97, 0x01, 0x96, 0x15, 0x01, 0x97, 0x01, 0x01, 0x96, 0x01, 0x01, 0x97, 0x01, 0x02, 0xF7, 0x03, 0x01, 0x96, 0x82, 0x01, 0x97, 0x01, 0x96, 0x01, 0x97, 0x01, 0x01, 0xB6, 0x02, 0x01, 0x96, 0x02, 0x01, 0x97, 0x81, 0x09, 0xB7, 0x09, 0x97, 0x02, 0x09, 0xB7, 0x01, 0x11, 0xB7, 0x80, 0x11, 0xD7, 0x02, 0x11, 0xB7, 0x82, 0x71, 0x53, 0x99, 0x31, 0x99, 0x11, 0x0B, + 0x99, 0x31, 0x83, 0x61, 0x74, 0x09, 0xB6, 0x01, 0x96, 0x01, 0x97, 0x0E, 0x01, 0x96, 0x80, 0x01, 0x76, 0x03, 0x01, 0x96, 0x84, 0x01, 0x77, 0x01, 0x96, 0x02, 0xB7, 0x03, 0x37, 0x02, 0x16, 0x02, 0x01, 0x96, 0x03, 0x01, 0x76, 0x01, 0x01, 0x96, 0x01, 0x01, 0x76, 0x80, 0x01, 0x96, 0x0F, 0x01, 0x76, 0x86, 0x01, 0x75, 0x01, 0x96, 0x01, 0x95, 0x02, 0x16, 0x02, 0xF7, 0x03, 0x17, 0x02, 0x16, 0x03, 0x01, 0x76, 0x01, 0x01, 0x75, 0x01, 0x01, 0x76, 0x12, 0x01, 0x75, 0x88, 0x01, 0x76, 0x01, 0x75, 0x01, 0x55, 0x01, 0x96, 0x02, 0x56, 0x03, 0x17, 0x02, 0xB7, 0x01, 0xB6, 0x01, 0x76, 0x04, 0x01, 0x75, 0x01, 0x01, 0x55, 0x80, 0x01, 0x75, 0x02, 0x01, 0x55, 0x03, 0x00, 0xB3, 0x80, 0x00, 0xB4, 0x01, 0x00, 0xD3, 0x86, 0x00, 0xB4, 0x00, 0xD4, 0x01, 0x74, 0x02, 0x35, 0x02, 0xD6, 0x02, 0x35, 0x01, 0x74, 0x01, 0x00, 0xD4, 0x83, 0x00, 0xB4, 0x00, 0xD4, 0x00, 0xB4, 0x00, 0xD4, 0x03, 0x00, 0xB4, 0x0A, 0x00, 0xD4, 0x80, 0x00, 0xB4, 0x03, 0x00, 0xD4, 0x80, 0x00, 0xB4, 0x02, 0x00, 0xD4, 0x84, 0x01, 0x35, 0x02, 0x35, 0x02, 0xD6, 0x02, 0x36, 0x01, 0x34, 0x12, 0x00, 0xD4, 0x03, 0x00, 0xD5, 0x02, 0x00, 0xD4, 0x03, 0x00, 0xD5, 0x84, 0x01, 0x15, 0x02, 0x36, 0x03, 0x17, 0x02, 0x56, 0x00, 0xF4, 0x17, 0x00, 0xD5, 0x01, 0x00, 0xF5, 0x81, 0x00, 0xD5, 0x00, 0xF5, 0x01, 0x00, 0xD5, 0x84, 0x00, 0xF5, 0x01, 0xF6, 0x03, 0x17, 0x01, 0xF6, 0x00, 0xF5, 0x03, 0x00, 0xD5, 0x80, 0x00, 0xF5, 0x10, 0x00, 0xD5, 0x01, 0x00, 0xF5, 0x03, 0x00, 0xD5, 0x85, 0x00, 0xF5, 0x00, 0xD5, + 0x00, 0xF5, 0x01, 0xB6, 0x03, 0x37, 0x01, 0xB6, 0x1F, 0x00, 0xF5, 0x82, 0x01, 0x55, 0x03, 0x37, 0x01, 0x56, 0x01, 0x00, 0xD5, 0x02, 0x00, 0xF6, 0x80, 0x00, 0xF5, 0x01, 0x00, 0xD6, 0x07, 0x00, 0xF6, 0x07, 0x00, 0xF5, 0x81, 0x00, 0xF6, 0x00, 0xD5, 0x01, 0x00, 0xF6, 0x02, 0x00, 0xF5, 0x88, 0x00, 0xF6, 0x01, 0x15, 0x03, 0x38, 0x01, 0x15, 0x00, 0xF6, 0x00, 0xF5, 0x00, 0xF6, 0x00, 0xF5, 0x00, 0xD6, 0x17, 0x00, 0xF5, 0x85, 0x00, 0xD5, 0x00, 0xF6, 0x00, 0xD5, 0x00, 0xF5, 0x03, 0x57, 0x00, 0xF5, 0x01, 0x00, 0xF6, 0x17, 0x00, 0xF5, 0x81, 0x00, 0xF6, 0x00, 0xF5, 0x01, 0x00, 0xD5, 0x01, 0x00, 0xD6, 0x86, 0x00, 0xD5, 0x00, 0xF5, 0x02, 0xF7, 0x01, 0x76, 0x00, 0xF5, 0x00, 0xD5, 0x00, 0xF5, 0x01, 0x00, 0xF6, 0x17, 0x00, 0xF5, 0x88, 0x00, 0xD5, 0x00, 0xF5, 0x00, 0xD5, 0x01, 0x16, 0x02, 0xF7, 0x01, 0xD6, 0x00, 0xD6, 0x00, 0xD5, 0x00, 0xF5, 0x04, 0x00, 0xD5, 0x80, 0x00, 0xF5, 0x01, 0x00, 0xD5, 0x04, 0x00, 0xF5, 0x03, 0x08, 0xF6, 0x01, 0x09, 0x16, 0x83, 0x10, 0xF6, 0x11, 0x17, 0x11, 0x16, 0x31, 0x35, 0x03, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x81, 0x99, 0x11, 0x99, 0x12, 0x03, 0x99, 0x31, 0x82, 0x71, 0x13, 0x08, 0xF5, 0x08, 0xF6, 0x03, 0x00, 0xF5, 0x0F, 0x00, 0xD5, 0x80, 0x00, 0xD4, 0x02, 0x00, 0xD5, 0x83, 0x01, 0xD6, 0x02, 0xF7, 0x02, 0x36, 0x01, 0x14, 0x01, 0x00, 0xD5, 0x80, 0x00, 0xD4, 0x02, 0x00, 0xD5, 0x82, 0x00, 0xD4, 0x00, 0xD5, 0x00, 0xD4, 0x01, 0x00, 0xD5, 0x0F, 0x00, 0xD4, 0x80, 0x00, 0xB4, 0x01, 0x00, 0xD4, 0x84, + 0x00, 0xF4, 0x01, 0xD5, 0x02, 0xD6, 0x02, 0x36, 0x01, 0x14, 0x10, 0x00, 0xD4, 0x05, 0x00, 0xB4, 0x05, 0x00, 0xD4, 0x86, 0x00, 0xD3, 0x01, 0x14, 0x01, 0xF5, 0x02, 0xB5, 0x02, 0x35, 0x01, 0x54, 0x00, 0xD3, 0x01, 0x00, 0xB3, 0x80, 0x00, 0xD3, 0x05, 0x00, 0xB3, 0x82, 0x00, 0xB1, 0x00, 0xB2, 0x00, 0xB1, 0x02, 0x00, 0xB2, 0x86, 0x00, 0xF2, 0x01, 0xD3, 0x02, 0x53, 0x02, 0x34, 0x01, 0x73, 0x00, 0xD2, 0x00, 0x92, 0x01, 0x00, 0xB1, 0x12, 0x00, 0xB2, 0x80, 0x00, 0x92, 0x04, 0x00, 0xB2, 0x86, 0x00, 0xB3, 0x00, 0xB2, 0x01, 0x53, 0x02, 0x34, 0x02, 0x74, 0x01, 0xB3, 0x00, 0xF3, 0x01, 0x00, 0xB2, 0x01, 0x00, 0xB3, 0x80, 0x00, 0xB2, 0x01, 0x00, 0xB3, 0x05, 0x00, 0xB2, 0x10, 0x00, 0xB3, 0x86, 0x00, 0xD3, 0x01, 0xB4, 0x02, 0xB5, 0x01, 0xF4, 0x01, 0x13, 0x00, 0xB3, 0x00, 0xD3, 0x06, 0x00, 0xB3, 0x80, 0x00, 0xD3, 0x08, 0x00, 0xB3, 0x83, 0x00, 0xD3, 0x00, 0xB3, 0x00, 0xD3, 0x00, 0xD4, 0x01, 0x00, 0xB3, 0x80, 0x00, 0xD4, 0x01, 0x00, 0xB3, 0x88, 0x00, 0xD4, 0x00, 0xB3, 0x00, 0xD3, 0x01, 0x33, 0x02, 0x75, 0x02, 0x55, 0x01, 0x34, 0x00, 0xD3, 0x00, 0xB3, 0x01, 0x00, 0xD3, 0x01, 0x00, 0xD4, 0x80, 0x00, 0xB4, 0x11, 0x00, 0xD4, 0x82, 0x00, 0xB4, 0x00, 0xD4, 0x00, 0xB4, 0x01, 0x00, 0xD4, 0x01, 0x00, 0xB4, 0x84, 0x01, 0xD4, 0x02, 0xB5, 0x01, 0x34, 0x00, 0xD4, 0x00, 0xB4, 0x1D, 0x00, 0xD4, 0x82, 0x00, 0xF4, 0x02, 0xB5, 0x01, 0xB5, 0x20, 0x00, 0xD4, 0x83, 0x01, 0xB5, 0x02, 0x55, 0x00, 0xD5, 0x00, 0xB4, 0x1F, 0x00, 0xD4, 0x80, 0x02, 0xF6, 0x22, 0x00, + 0xD4, 0x81, 0x01, 0xF5, 0x02, 0x35, 0x16, 0x00, 0xD4, 0x06, 0x00, 0xB4, 0x01, 0x00, 0xD4, 0x84, 0x00, 0xB4, 0x01, 0x54, 0x02, 0xB5, 0x01, 0x34, 0x00, 0xD4, 0x01, 0x00, 0xB4, 0x02, 0x00, 0xD4, 0x80, 0x00, 0xB4, 0x08, 0x00, 0xD4, 0x02, 0x08, 0xD4, 0x02, 0x08, 0xF4, 0x83, 0x08, 0xF5, 0x10, 0xF4, 0x10, 0xD5, 0x79, 0x12, 0x08, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x81, 0x32, 0x02, 0x00, 0xD4, 0x04, 0x00, 0xD3, 0x81, 0x00, 0xB3, 0x00, 0xD3, 0x0D, 0x00, 0xB3, 0x81, 0x00, 0xB2, 0x00, 0xB3, 0x01, 0x00, 0xD3, 0x82, 0x02, 0x14, 0x02, 0x95, 0x01, 0x53, 0x02, 0x00, 0xB3, 0x80, 0x00, 0xB2, 0x02, 0x00, 0xB3, 0x02, 0x00, 0xB2, 0x07, 0x00, 0xB3, 0x0C, 0x00, 0xB2, 0x84, 0x00, 0xD2, 0x01, 0xB3, 0x02, 0x74, 0x01, 0xD3, 0x00, 0xF2, 0x19, 0x00, 0xB2, 0x8C, 0x00, 0xB1, 0x00, 0xB2, 0x00, 0x92, 0x00, 0xB2, 0x00, 0xB1, 0x01, 0x72, 0x02, 0x53, 0x02, 0x33, 0x01, 0x52, 0x00, 0xB1, 0x00, 0x91, 0x00, 0xB1, 0x00, 0x91, 0x01, 0x00, 0xB1, 0x81, 0x00, 0x91, 0x00, 0xB1, 0x02, 0x00, 0x90, 0x85, 0x00, 0xB0, 0x01, 0x51, 0x02, 0x12, 0x02, 0x32, 0x01, 0x91, 0x00, 0xF0, 0x1A, 0x00, 0x90, 0x8E, 0x00, 0x91, 0x00, 0x90, 0x00, 0x91, 0x00, 0xB1, 0x01, 0x71, 0x02, 0x32, 0x02, 0x13, 0x01, 0x51, 0x00, 0x90, 0x00, 0xB0, 0x00, 0x90, 0x00, 0x91, 0x00, 0xB1, 0x00, 0xB0, 0x00, 0x90, 0x01, 0x00, 0xB1, 0x10, 0x00, 0x91, 0x01, 0x00, 0xB1, 0x02, 0x00, 0x91, 0x85, 0x00, 0xD1, 0x01, 0x72, 0x02, 0x53, 0x01, 0xB2, 0x00, 0xD1, 0x00, 0xB1, 0x02, 0x00, 0x91, 0x81, + 0x00, 0xB1, 0x00, 0x91, 0x01, 0x00, 0xB1, 0x80, 0x00, 0x91, 0x13, 0x00, 0xB1, 0x01, 0x00, 0x91, 0x85, 0x00, 0xD2, 0x01, 0xB2, 0x02, 0x73, 0x01, 0x72, 0x00, 0xB1, 0x00, 0xB2, 0x01, 0x00, 0xB1, 0x80, 0x00, 0xB2, 0x01, 0x00, 0xB1, 0x81, 0x00, 0xB2, 0x00, 0xB1, 0x0F, 0x00, 0xB2, 0x01, 0x00, 0xB1, 0x01, 0x00, 0xB2, 0x80, 0x00, 0xB1, 0x02, 0x00, 0xB2, 0x82, 0x01, 0xD3, 0x02, 0x53, 0x01, 0x12, 0x20, 0x00, 0xB2, 0x82, 0x02, 0x13, 0x01, 0xD3, 0x00, 0x92, 0x20, 0x00, 0xB2, 0x81, 0x02, 0x53, 0x01, 0x53, 0x21, 0x00, 0xB2, 0x80, 0x02, 0x94, 0x22, 0x00, 0xB2, 0x82, 0x00, 0xF2, 0x02, 0x93, 0x00, 0xD2, 0x1E, 0x00, 0xB2, 0x83, 0x00, 0xB1, 0x00, 0xB2, 0x01, 0x72, 0x02, 0x53, 0x01, 0x00, 0xB1, 0x04, 0x00, 0xB2, 0x02, 0x00, 0xB1, 0x06, 0x00, 0xB2, 0x02, 0x08, 0xB2, 0x86, 0x08, 0xD2, 0x08, 0xB2, 0x08, 0xD2, 0x08, 0xD3, 0x10, 0xD3, 0x40, 0xF2, 0x99, 0x11, 0x06, 0x99, 0x31, 0x80, 0x99, 0x11, 0x03, 0x99, 0x31, 0x82, 0x99, 0x11, 0x00, 0xD2, 0x00, 0xB2, 0x10, 0x00, 0xB1, 0x80, 0x00, 0x91, 0x07, 0x00, 0xB1, 0x83, 0x00, 0x91, 0x01, 0x31, 0x02, 0x52, 0x01, 0xF2, 0x02, 0x00, 0xB1, 0x01, 0x00, 0x91, 0x80, 0x00, 0xB1, 0x01, 0x00, 0x91, 0x80, 0x00, 0xB0, 0x0D, 0x00, 0x91, 0x01, 0x00, 0x90, 0x02, 0x00, 0x91, 0x88, 0x00, 0xB1, 0x00, 0x90, 0x00, 0xB0, 0x00, 0x91, 0x00, 0xB0, 0x01, 0xB2, 0x02, 0x52, 0x01, 0xB1, 0x00, 0xD0, 0x1E, 0x00, 0x90, 0x84, 0x01, 0x11, 0x01, 0xD1, 0x02, 0x32, 0x01, 0x91, 0x00, 0xB0, 0x04, 0x00, 0x90, 0x85, 0x00, 0x8F, 0x01, 0x30, + 0x01, 0xB1, 0x02, 0x32, 0x01, 0xB1, 0x01, 0x10, 0x0C, 0x00, 0x90, 0x80, 0x00, 0x8F, 0x10, 0x00, 0x90, 0x84, 0x00, 0xD0, 0x01, 0x91, 0x02, 0x32, 0x01, 0xD1, 0x00, 0xF0, 0x1E, 0x00, 0x90, 0x84, 0x00, 0xB0, 0x01, 0x71, 0x02, 0x32, 0x01, 0xD1, 0x00, 0xF1, 0x02, 0x00, 0x90, 0x80, 0x00, 0x70, 0x1B, 0x00, 0x90, 0x83, 0x01, 0x11, 0x02, 0x12, 0x01, 0xD1, 0x00, 0xD0, 0x1F, 0x00, 0x90, 0x83, 0x00, 0xB0, 0x01, 0xD2, 0x01, 0xF2, 0x00, 0xB0, 0x1E, 0x00, 0x90, 0x01, 0x00, 0xB0, 0x82, 0x01, 0x71, 0x02, 0x12, 0x00, 0xB0, 0x05, 0x00, 0x90, 0x01, 0x00, 0xB0, 0x01, 0x00, 0x90, 0x0F, 0x00, 0xB0, 0x02, 0x00, 0x90, 0x01, 0x00, 0xB0, 0x01, 0x00, 0x90, 0x84, 0x00, 0xF1, 0x02, 0x52, 0x00, 0xB0, 0x00, 0x90, 0x00, 0xB0, 0x01, 0x00, 0x90, 0x01, 0x00, 0xB0, 0x17, 0x00, 0x90, 0x01, 0x00, 0xB0, 0x01, 0x00, 0x90, 0x83, 0x02, 0x72, 0x00, 0xB0, 0x00, 0x90, 0x00, 0xB0, 0x18, 0x00, 0x90, 0x03, 0x00, 0xB0, 0x03, 0x00, 0x90, 0x82, 0x01, 0xD1, 0x01, 0x71, 0x00, 0x91, 0x01, 0x00, 0xB0, 0x1E, 0x00, 0x90, 0x01, 0x01, 0xD1, 0x81, 0x00, 0x90, 0x00, 0xB0, 0x02, 0x00, 0x90, 0x02, 0x00, 0xB0, 0x05, 0x00, 0x90, 0x03, 0x00, 0x91, 0x06, 0x08, 0xB1, 0x80, 0x89, 0x12, 0x04, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x01, 0x99, 0x11, 0x82, 0x99, 0x12, 0x99, 0x31, 0x00, 0x91, 0x1C, 0x00, 0x90, 0x83, 0x00, 0xB0, 0x01, 0xB1, 0x02, 0x52, 0x01, 0x31, 0x01, 0x00, 0x90, 0x80, 0x00, 0xB0, 0x1C, 0x00, 0x90, 0x84, 0x00, 0xB0, 0x01, 0xB1, 0x02, 0x32, 0x01, 0x91, 0x00, 0xB0, + 0x16, 0x00, 0x90, 0x80, 0x00, 0x70, 0x06, 0x00, 0x90, 0x84, 0x00, 0xB0, 0x01, 0x91, 0x02, 0x52, 0x01, 0xB1, 0x01, 0x10, 0x02, 0x00, 0x90, 0x83, 0x02, 0x12, 0x01, 0xF1, 0x01, 0x50, 0x00, 0xAF, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x01, 0x00, 0x90, 0x80, 0x00, 0x70, 0x01, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x70, 0x83, 0x00, 0x6F, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x8F, 0x01, 0x00, 0x90, 0x07, 0x00, 0x8F, 0x81, 0x00, 0x90, 0x00, 0x6F, 0x02, 0x00, 0x8F, 0x84, 0x01, 0x30, 0x01, 0xD1, 0x02, 0x12, 0x01, 0x91, 0x00, 0xB0, 0x05, 0x00, 0x90, 0x80, 0x00, 0x8F, 0x03, 0x00, 0x90, 0x80, 0x00, 0x8F, 0x02, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x90, 0x08, 0x00, 0x8F, 0x01, 0x00, 0x90, 0x86, 0x00, 0x8F, 0x00, 0x90, 0x01, 0x51, 0x02, 0x11, 0x01, 0xD1, 0x00, 0xF0, 0x00, 0x8F, 0x0D, 0x00, 0x90, 0x80, 0x00, 0x8F, 0x0F, 0x00, 0x90, 0x83, 0x00, 0xB0, 0x01, 0x91, 0x02, 0x32, 0x01, 0x51, 0x09, 0x00, 0x90, 0x80, 0x00, 0xB0, 0x15, 0x00, 0x90, 0x83, 0x00, 0xB0, 0x01, 0xF2, 0x01, 0xD1, 0x00, 0xB0, 0x20, 0x00, 0x90, 0x82, 0x01, 0x10, 0x02, 0x52, 0x00, 0xD0, 0x21, 0x00, 0x90, 0x81, 0x01, 0xB1, 0x01, 0x91, 0x1F, 0x00, 0x90, 0x80, 0x00, 0xB0, 0x01, 0x00, 0x90, 0x80, 0x02, 0x52, 0x23, 0x00, 0x90, 0x81, 0x01, 0x51, 0x02, 0x32, 0x21, 0x00, 0x90, 0x83, 0x00, 0xB0, 0x01, 0xF1, 0x01, 0x71, 0x00, 0xB0, 0x0E, 0x00, 0x90, 0x80, 0x00, 0x91, 0x01, 0x00, 0xB0, 0x82, 0x00, 0xB1, 0x08, 0xB1, 0x08, 0xB0, 0x01, 0x08, 0xB1, 0x80, 0x50, 0xF1, 0x01, 0x99, 0x31, + 0x80, 0x99, 0x11, 0x03, 0x99, 0x31, 0x85, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x99, 0x31, 0x1A, 0x00, 0x90, 0x80, 0x00, 0x70, 0x03, 0x00, 0x90, 0x83, 0x00, 0xF1, 0x02, 0x11, 0x01, 0xD2, 0x00, 0xD0, 0x01, 0x00, 0x90, 0x80, 0x00, 0x8F, 0x0F, 0x00, 0x90, 0x80, 0x00, 0x8F, 0x01, 0x00, 0x90, 0x81, 0x00, 0x8F, 0x00, 0x90, 0x04, 0x00, 0x8F, 0x87, 0x00, 0x90, 0x00, 0x8F, 0x00, 0x90, 0x00, 0xB0, 0x01, 0xB1, 0x02, 0x32, 0x01, 0x51, 0x00, 0xB0, 0x07, 0x00, 0x90, 0x80, 0x00, 0x8F, 0x0A, 0x00, 0x90, 0x02, 0x00, 0x8F, 0x80, 0x00, 0x90, 0x02, 0x00, 0x8F, 0x8A, 0x00, 0x90, 0x00, 0x8F, 0x00, 0x90, 0x00, 0x8F, 0x00, 0xB0, 0x01, 0x51, 0x02, 0x11, 0x02, 0x12, 0x01, 0x30, 0x00, 0xAF, 0x00, 0xCF, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x1B, 0x00, 0x8F, 0x86, 0x00, 0xAF, 0x01, 0x30, 0x01, 0xF2, 0x02, 0x12, 0x01, 0x31, 0x00, 0xAF, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x02, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x82, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x02, 0x00, 0x8F, 0x02, 0x00, 0x6F, 0x0A, 0x00, 0x8F, 0x88, 0x01, 0x30, 0x02, 0x12, 0x01, 0xF2, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x8F, 0x00, 0x90, 0x03, 0x00, 0x8F, 0x02, 0x00, 0x90, 0x04, 0x00, 0x8F, 0x08, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x90, 0x03, 0x00, 0x8F, 0x86, 0x00, 0xD0, 0x02, 0x12, 0x01, 0xD2, 0x00, 0xD0, 0x00, 0x90, 0x00, 0x8F, 0x00, 0x90, 0x06, 0x00, 0x8F, 0x80, 0x00, 0x90, 0x01, 0x00, 0x8F, + 0x10, 0x00, 0x90, 0x80, 0x00, 0x8F, 0x01, 0x00, 0x90, 0x82, 0x00, 0xF0, 0x02, 0x32, 0x01, 0xB1, 0x03, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x1C, 0x00, 0x90, 0x81, 0x02, 0x32, 0x01, 0x30, 0x21, 0x00, 0x90, 0x82, 0x00, 0xB0, 0x02, 0x32, 0x00, 0xD0, 0x04, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x1B, 0x00, 0x90, 0x80, 0x02, 0x52, 0x24, 0x00, 0x90, 0x83, 0x02, 0x32, 0x00, 0xF0, 0x00, 0x90, 0x00, 0x70, 0x1F, 0x00, 0x90, 0x83, 0x00, 0xF0, 0x02, 0x32, 0x00, 0xF1, 0x00, 0xB0, 0x01, 0x00, 0x8F, 0x81, 0x00, 0x90, 0x00, 0x8F, 0x0C, 0x00, 0x90, 0x01, 0x00, 0xB0, 0x84, 0x08, 0x90, 0x08, 0xB0, 0x08, 0x91, 0x10, 0xB0, 0x99, 0x31, 0x01, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x05, 0x99, 0x31, 0x11, 0x00, 0x90, 0x80, 0x00, 0x8F, 0x05, 0x00, 0x90, 0x04, 0x00, 0x8F, 0x80, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x85, 0x00, 0x90, 0x01, 0x91, 0x02, 0x12, 0x01, 0x50, 0x00, 0x8F, 0x00, 0x90, 0x02, 0x00, 0x8F, 0x02, 0x00, 0x90, 0x06, 0x00, 0x8F, 0x80, 0x00, 0x90, 0x05, 0x00, 0x8F, 0x01, 0x00, 0x90, 0x85, 0x00, 0x6F, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x8F, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x84, 0x00, 0x6F, 0x00, 0xD0, 0x01, 0xD2, 0x02, 0x12, 0x01, 0x50, 0x10, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x90, 0x03, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x02, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x02, 0x00, 0x8F, 0x84, 0x01, 0x10, 0x01, 0xD1, 0x02, 0x12, 0x00, 0x6F, 0x00, 0x8F, 0x09, 0x00, 0x6F, 0x81, 0x00, 0x8F, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x80, 0x00, + 0x6F, 0x03, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x02, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x86, 0x00, 0x6F, 0x00, 0xAF, 0x01, 0x71, 0x02, 0x12, 0x01, 0xD1, 0x01, 0x10, 0x00, 0x6F, 0x10, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x03, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x03, 0x00, 0x8F, 0x8A, 0x00, 0x6F, 0x00, 0x8F, 0x00, 0x6F, 0x01, 0x10, 0x01, 0xF2, 0x02, 0x12, 0x01, 0x30, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x8F, 0x00, 0x6F, 0x13, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x03, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x03, 0x00, 0x8F, 0x84, 0x01, 0x71, 0x02, 0x32, 0x01, 0x51, 0x00, 0x8F, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x13, 0x00, 0x8F, 0x81, 0x00, 0x70, 0x00, 0x90, 0x03, 0x00, 0x8F, 0x86, 0x00, 0x6F, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0xF0, 0x02, 0x12, 0x01, 0x51, 0x00, 0x6F, 0x10, 0x00, 0x8F, 0x07, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x90, 0x03, 0x00, 0x8F, 0x84, 0x00, 0x70, 0x00, 0x90, 0x01, 0xF1, 0x01, 0xB1, 0x00, 0x70, 0x01, 0x00, 0x8F, 0x19, 0x00, 0x90, 0x02, 0x00, 0x8F, 0x80, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x81, 0x01, 0x30, 0x01, 0xF1, 0x03, 0x00, 0x90, 0x1F, 0x00, 0x8F, 0x80, 0x02, 0x52, 0x1A, 0x00, 0x8F, 0x08, 0x00, 0x90, 0x83, 0x00, 0x8F, 0x01, 0x91, 0x01, 0xB1, 0x00, 0x90, 0x02, 0x00, 0x8F, 0x17, 0x00, 0x90, 0x80, 0x00, 0x8F, 0x01, 0x00, 0x90, 0x87, 0x00, 0x8F, 0x00, 0x90, 0x00, 0x6F, 0x00, 0x8F, 0x01, 0x31, 0x02, 0x32, 0x00, 0xD0, 0x00, 0x90, 0x02, 0x00, 0x8F, 0x01, 0x00, 0x90, 0x01, 0x00, 0x8F, 0x0E, 0x00, 0x90, 0x80, 0x60, + 0xF1, 0x0B, 0x99, 0x31, 0x80, 0x01, 0x50, 0x02, 0x00, 0x90, 0x82, 0x00, 0x6F, 0x00, 0x90, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x70, 0x17, 0x00, 0x8F, 0x84, 0x00, 0x6F, 0x01, 0x10, 0x01, 0xF2, 0x01, 0xD1, 0x00, 0xCF, 0x05, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x15, 0x00, 0x8F, 0x81, 0x00, 0x6F, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x85, 0x00, 0xF0, 0x01, 0xB2, 0x02, 0x32, 0x01, 0x50, 0x00, 0x8F, 0x00, 0x6F, 0x04, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x04, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x02, 0x00, 0x8F, 0x0F, 0x00, 0x6F, 0x80, 0x00, 0xF0, 0x15, 0x00, 0x6F, 0x83, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x8F, 0x01, 0x00, 0x6E, 0x84, 0x00, 0xEF, 0x01, 0xB1, 0x02, 0x12, 0x01, 0x91, 0x00, 0xD0, 0x01, 0x00, 0x6F, 0x80, 0x00, 0x8E, 0x10, 0x00, 0x6F, 0x81, 0x00, 0x8F, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x02, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x84, 0x00, 0xEF, 0x01, 0xD1, 0x01, 0xF1, 0x01, 0x30, 0x00, 0x8F, 0x03, 0x00, 0x6F, 0x12, 0x00, 0x8F, 0x05, 0x00, 0x6F, 0x87, 0x00, 0x70, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x8F, 0x01, 0x10, 0x02, 0x32, 0x01, 0xB1, 0x00, 0xAF, 0x04, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x12, 0x00, 0x8F, 0x82, 0x00, 0x6F, 0x00, 0x8F, 0x00, 0x6F, 0x04, 0x00, 0x8F, 0x85, 0x00, 0x6F, 0x01, 0x10, 0x02, 0x52, 0x01, 0x30, 0x00, 0x8F, 0x00, 0x6F, 0x1F, 0x00, 0x8F, 0x82, 0x00, 0x6F, 0x01, 0x70, 0x01, 0xF2, 0x20, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x81, 0x01, 0xD2, 0x01, 0x30, 0x20, + 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x80, 0x02, 0x52, 0x24, 0x00, 0x8F, 0x82, 0x00, 0xCF, 0x02, 0x32, 0x00, 0xAF, 0x1B, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x02, 0x00, 0x6F, 0x83, 0x00, 0x8F, 0x01, 0x91, 0x02, 0x12, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x08, 0x00, 0x8F, 0x07, 0x00, 0x90, 0x84, 0x00, 0x8F, 0x18, 0xAF, 0x99, 0x11, 0x99, 0x12, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x01, 0x99, 0x31, 0x88, 0xA1, 0x11, 0x99, 0x31, 0xA1, 0x11, 0x29, 0xD2, 0x01, 0xB1, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x8F, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x80, 0x00, 0x6F, 0x19, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x82, 0x01, 0x50, 0x02, 0x32, 0x01, 0x50, 0x04, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x02, 0x00, 0x6F, 0x08, 0x00, 0x8F, 0x07, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x87, 0x00, 0x8F, 0x00, 0xF0, 0x01, 0xD1, 0x01, 0xF1, 0x01, 0x30, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x03, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x10, 0x00, 0x6F, 0x83, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x8F, 0x17, 0x00, 0x6E, 0x86, 0x00, 0x6F, 0x00, 0x6E, 0x01, 0x30, 0x01, 0xD1, 0x02, 0x12, 0x01, 0x50, 0x00, 0xAF, 0x01, 0x00, 0x6E, 0x82, 0x00, 0x8E, 0x00, 0x6E, 0x00, 0x6F, 0x07, 0x00, 0x6E, 0x10, 0x00, 0x6F, 0x80, 0x00, 0x6E, 0x01, 0x00, 0x6F, 0x83, 0x00, 0xCF, 0x01, 0xB1, 0x02, 0x12, 0x01, 0x30, 0x01, 0x00, 0x6E, 0x02, 0x00, 0x6F, 0x82, 0x00, 0x8F, 0x00, 0x6F, + 0x00, 0x8F, 0x0F, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x02, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x03, 0x00, 0x6F, 0x84, 0x00, 0x8F, 0x01, 0xB1, 0x02, 0x32, 0x01, 0x0F, 0x00, 0x8F, 0x03, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x13, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x05, 0x00, 0x6F, 0x82, 0x01, 0x50, 0x02, 0x32, 0x00, 0xCF, 0x01, 0x00, 0x6F, 0x80, 0x00, 0x8E, 0x1D, 0x00, 0x6F, 0x86, 0x00, 0x8F, 0x00, 0x6F, 0x01, 0x0F, 0x02, 0x12, 0x00, 0xAF, 0x00, 0x6F, 0x00, 0x8F, 0x1B, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x83, 0x00, 0x8F, 0x00, 0xAF, 0x02, 0x12, 0x00, 0xAF, 0x1F, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x82, 0x02, 0x52, 0x00, 0x6F, 0x00, 0x8F, 0x20, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x81, 0x01, 0xD1, 0x01, 0x30, 0x01, 0x00, 0x8F, 0x1B, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x04, 0x00, 0x6F, 0x82, 0x01, 0xF1, 0x01, 0xB1, 0x00, 0x8F, 0x01, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x05, 0x00, 0x6F, 0x0A, 0x00, 0x8F, 0x82, 0x00, 0x6F, 0x00, 0x90, 0x81, 0x11, 0x06, 0x99, 0x31, 0x81, 0x99, 0x12, 0x99, 0x32, 0x01, 0x99, 0x31, 0x83, 0x28, 0xD0, 0x01, 0xF2, 0x01, 0xD1, 0x00, 0x8F, 0x03, 0x00, 0x6F, 0x81, 0x00, 0x6E, 0x00, 0x8F, 0x19, 0x00, 0x6F, 0x82, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0xCF, 0x01, 0x01, 0xF1, 0x80, 0x00, 0xCF, 0x02, 0x00, 0x6F, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x8F, 0x11, 0x00, 0x6F, 0x80, 0x00, 0x6E, 0x06, 0x00, 0x6F, 0x85, 0x00, 0x6E, 0x00, 0x6F, 0x00, 0xF0, 0x01, 0xD1, 0x01, 0xF1, 0x01, 0x10, 0x04, 0x00, 0x6F, 0x14, 0x00, + 0x6E, 0x80, 0x00, 0x6F, 0x19, 0x00, 0x6E, 0x85, 0x00, 0x8E, 0x01, 0x50, 0x02, 0x12, 0x01, 0xD1, 0x01, 0x10, 0x00, 0x8E, 0x20, 0x00, 0x6E, 0x86, 0x00, 0xAF, 0x01, 0xD1, 0x02, 0x12, 0x01, 0x50, 0x00, 0x8F, 0x00, 0x6E, 0x00, 0x6F, 0x1E, 0x00, 0x6E, 0x86, 0x00, 0x8E, 0x01, 0x10, 0x02, 0x12, 0x01, 0xB1, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x6E, 0x01, 0x00, 0x6F, 0x81, 0x00, 0x6E, 0x00, 0x8F, 0x02, 0x00, 0x6E, 0x01, 0x00, 0x6F, 0x0F, 0x00, 0x6E, 0x81, 0x00, 0x6F, 0x00, 0x8F, 0x01, 0x00, 0x6E, 0x01, 0x00, 0x6F, 0x84, 0x00, 0x8E, 0x00, 0x6E, 0x01, 0x91, 0x01, 0xF1, 0x00, 0xCF, 0x01, 0x00, 0x6F, 0x82, 0x00, 0x6E, 0x00, 0x8F, 0x00, 0x6E, 0x18, 0x00, 0x6F, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x6E, 0x89, 0x00, 0x6F, 0x00, 0xCF, 0x02, 0x12, 0x01, 0x10, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x8F, 0x00, 0x6F, 0x00, 0x6E, 0x1D, 0x00, 0x6F, 0x81, 0x01, 0x50, 0x01, 0x91, 0x24, 0x00, 0x6F, 0x80, 0x02, 0x32, 0x25, 0x00, 0x6F, 0x83, 0x01, 0x10, 0x01, 0xF1, 0x00, 0x8F, 0x00, 0x6E, 0x21, 0x00, 0x6F, 0x82, 0x00, 0xAF, 0x02, 0x12, 0x01, 0x10, 0x01, 0x00, 0x6F, 0x80, 0x00, 0x8F, 0x08, 0x00, 0x6F, 0x03, 0x00, 0x8F, 0x05, 0x00, 0x6F, 0x80, 0x48, 0xD0, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x07, 0x99, 0x31, 0x89, 0x00, 0x8E, 0x00, 0x8F, 0x01, 0xB1, 0x01, 0xF2, 0x00, 0xAF, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x8F, 0x00, 0x6E, 0x00, 0x8F, 0x1D, 0x00, 0x6E, 0x83, 0x01, 0x50, 0x02, 0x32, 0x01, 0x50, 0x00, 0x8E, 0x03, 0x00, 0x6E, 0x80, 0x00, 0x8E, 0x18, 0x00, 0x6E, + 0x80, 0x00, 0x6F, 0x02, 0x00, 0x6E, 0x80, 0x01, 0x10, 0x01, 0x01, 0xF1, 0x80, 0x01, 0x10, 0x30, 0x00, 0x6E, 0x84, 0x00, 0xAE, 0x01, 0x90, 0x02, 0x12, 0x01, 0x90, 0x00, 0xCF, 0x21, 0x00, 0x6E, 0x84, 0x00, 0xAF, 0x01, 0x70, 0x02, 0x12, 0x01, 0x50, 0x00, 0x8E, 0x21, 0x00, 0x6E, 0x83, 0x00, 0x8E, 0x01, 0xB1, 0x02, 0x12, 0x00, 0xEF, 0x02, 0x00, 0x6E, 0x80, 0x00, 0x6F, 0x1B, 0x00, 0x6E, 0x80, 0x00, 0x6F, 0x01, 0x00, 0x6E, 0x84, 0x00, 0x8E, 0x01, 0xD1, 0x01, 0xF1, 0x00, 0x8F, 0x00, 0x6F, 0x21, 0x00, 0x6E, 0x83, 0x00, 0xAE, 0x01, 0xF1, 0x01, 0x70, 0x00, 0x6F, 0x02, 0x00, 0x6E, 0x80, 0x00, 0x6F, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x6F, 0x1C, 0x00, 0x6E, 0x82, 0x02, 0x11, 0x00, 0xCF, 0x00, 0x8F, 0x23, 0x00, 0x6E, 0x80, 0x02, 0x32, 0x25, 0x00, 0x6E, 0x82, 0x00, 0x8F, 0x02, 0x12, 0x00, 0xCF, 0x23, 0x00, 0x6E, 0x82, 0x00, 0xEF, 0x02, 0x12, 0x00, 0xCF, 0x0A, 0x00, 0x6E, 0x08, 0x00, 0x6F, 0x82, 0x00, 0x6E, 0x10, 0x8F, 0x99, 0x11, 0x09, 0x99, 0x31, 0x85, 0x00, 0x6E, 0x00, 0x6F, 0x00, 0x6E, 0x01, 0x90, 0x02, 0x12, 0x00, 0xCF, 0x22, 0x00, 0x6E, 0x83, 0x00, 0xAF, 0x01, 0xB1, 0x01, 0xF2, 0x00, 0xEF, 0x22, 0x00, 0x6E, 0x83, 0x01, 0x0F, 0x01, 0xF1, 0x01, 0xB1, 0x00, 0xEF, 0x1C, 0x00, 0x6E, 0x80, 0x00, 0x4D, 0x07, 0x00, 0x6E, 0x82, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x4E, 0x01, 0x00, 0x6E, 0x86, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0xEF, 0x01, 0xB1, 0x01, 0xF1, 0x01, 0x50, 0x00, 0x8F, 0x01, 0x00, 0x6E, 0x03, 0x00, 0x4E, 0x01, 0x00, 0x6E, 0x01, 0x00, 0x4E, + 0x17, 0x00, 0x6E, 0x84, 0x00, 0x8E, 0x01, 0x70, 0x02, 0x12, 0x01, 0x71, 0x00, 0x8E, 0x22, 0x00, 0x6E, 0x83, 0x01, 0x30, 0x02, 0x12, 0x01, 0x70, 0x00, 0x8E, 0x04, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x1C, 0x00, 0x6E, 0x83, 0x00, 0xAF, 0x01, 0xD1, 0x01, 0x90, 0x00, 0x8E, 0x23, 0x00, 0x6E, 0x81, 0x01, 0x90, 0x01, 0xF1, 0x24, 0x00, 0x6E, 0x81, 0x00, 0xEF, 0x02, 0x11, 0x25, 0x00, 0x6E, 0x80, 0x02, 0x32, 0x26, 0x00, 0x6E, 0x81, 0x01, 0x70, 0x01, 0x90, 0x24, 0x00, 0x6E, 0x82, 0x01, 0x50, 0x01, 0xF1, 0x00, 0x8E, 0x14, 0x00, 0x6E, 0x80, 0x68, 0xF0, 0x01, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x99, 0x11, 0x02, 0x99, 0x31, 0x03, 0x00, 0x6E, 0x82, 0x01, 0x0F, 0x02, 0x12, 0x00, 0xEF, 0x21, 0x00, 0x6E, 0x85, 0x00, 0x4E, 0x00, 0x6E, 0x01, 0x30, 0x01, 0xF2, 0x01, 0x70, 0x00, 0x8E, 0x13, 0x00, 0x6E, 0x01, 0x00, 0x4E, 0x0C, 0x00, 0x6E, 0x83, 0x01, 0x0F, 0x01, 0xD1, 0x01, 0xB1, 0x00, 0xCF, 0x15, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x01, 0x00, 0x6E, 0x82, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x6D, 0x0A, 0x00, 0x6E, 0x82, 0x00, 0x4D, 0x00, 0x6E, 0x01, 0x30, 0x01, 0x01, 0xD1, 0x81, 0x01, 0x0F, 0x00, 0x6E, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x6E, 0x00, 0x4E, 0x02, 0x00, 0x6E, 0x80, 0x00, 0x4D, 0x04, 0x00, 0x6E, 0x02, 0x00, 0x4D, 0x0D, 0x00, 0x6E, 0x82, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x6D, 0x01, 0x00, 0x6E, 0x83, 0x01, 0x70, 0x02, 0x12, 0x01, 0x70, 0x00, 0x8E, 0x22, 0x00, 0x6E, 0x83, 0x00, 0x8E, 0x01, 0xB1, 0x01, 0xF2, 0x00, 0xCF, 0x23, 0x00, 0x6E, + 0x82, 0x00, 0xAF, 0x02, 0x12, 0x01, 0x91, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x02, 0x00, 0x6E, 0x81, 0x00, 0x4E, 0x00, 0x8E, 0x1C, 0x00, 0x6E, 0x82, 0x01, 0x0F, 0x02, 0x12, 0x00, 0x8E, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x21, 0x00, 0x6E, 0x81, 0x01, 0x90, 0x01, 0x50, 0x25, 0x00, 0x6E, 0x80, 0x02, 0x32, 0x26, 0x00, 0x6E, 0x82, 0x00, 0x8E, 0x02, 0x11, 0x00, 0x8E, 0x24, 0x00, 0x6E, 0x81, 0x01, 0x90, 0x01, 0xB1, 0x14, 0x00, 0x6E, 0x80, 0x38, 0xB0, 0x06, 0x99, 0x31, 0x83, 0x99, 0x11, 0x99, 0x31, 0x99, 0x12, 0x00, 0x4E, 0x01, 0x00, 0x6E, 0x84, 0x00, 0x4E, 0x00, 0x6E, 0x01, 0x0F, 0x02, 0x12, 0x01, 0x0F, 0x1D, 0x00, 0x6E, 0x01, 0x00, 0x4E, 0x03, 0x00, 0x6E, 0x83, 0x00, 0x8E, 0x01, 0xB1, 0x01, 0xD1, 0x00, 0xCF, 0x1C, 0x00, 0x6E, 0x01, 0x00, 0x4E, 0x01, 0x00, 0x6E, 0x87, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x8E, 0x01, 0x50, 0x01, 0xF1, 0x01, 0xB1, 0x00, 0xCF, 0x00, 0x4D, 0x10, 0x00, 0x6E, 0x80, 0x00, 0x4D, 0x01, 0x00, 0x6E, 0x82, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x6D, 0x09, 0x00, 0x4D, 0x86, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x8E, 0x01, 0x70, 0x01, 0xF1, 0x01, 0xB1, 0x00, 0xEF, 0x01, 0x00, 0x4D, 0x81, 0x00, 0x6D, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x4D, 0x02, 0x00, 0x6D, 0x81, 0x00, 0x4D, 0x00, 0x6D, 0x13, 0x00, 0x6E, 0x84, 0x00, 0x8E, 0x01, 0x2F, 0x01, 0xF1, 0x01, 0x70, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x6E, 0x00, 0x4D, 0x02, 0x00, 0x6E, 0x01, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x01, 0x00, + 0x6E, 0x81, 0x00, 0x4E, 0x00, 0x4D, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x6D, 0x0F, 0x00, 0x6E, 0x01, 0x00, 0x4E, 0x83, 0x00, 0x4D, 0x01, 0x30, 0x01, 0xF2, 0x01, 0x50, 0x01, 0x00, 0x6D, 0x04, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x1B, 0x00, 0x6E, 0x86, 0x00, 0x4E, 0x00, 0xEF, 0x02, 0x12, 0x01, 0x0F, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x4E, 0x04, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x19, 0x00, 0x6E, 0x01, 0x00, 0x4E, 0x84, 0x00, 0xAF, 0x02, 0x12, 0x00, 0xCF, 0x00, 0x4E, 0x00, 0x6E, 0x01, 0x00, 0x4E, 0x02, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x1A, 0x00, 0x6E, 0x85, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x8E, 0x02, 0x32, 0x00, 0x8E, 0x00, 0x4E, 0x24, 0x00, 0x6E, 0x80, 0x02, 0x32, 0x22, 0x00, 0x6E, 0x82, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x4E, 0x01, 0x00, 0x6E, 0x81, 0x01, 0xD1, 0x01, 0x0F, 0x1D, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x01, 0x00, 0x6E, 0x87, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x8E, 0x01, 0xF1, 0x01, 0x2F, 0x00, 0x4E, 0x0F, 0x00, 0x6E, 0x01, 0x00, 0x4E, 0x82, 0x00, 0x6E, 0x08, 0x6E, 0x99, 0x11, 0x03, 0x99, 0x31, 0x80, 0x99, 0x12, 0x01, 0x99, 0x31, 0x83, 0x99, 0x11, 0x99, 0x31, 0x00, 0x4E, 0x00, 0x6D, 0x03, 0x00, 0x6E, 0x83, 0x00, 0xAE, 0x02, 0x11, 0x01, 0x90, 0x00, 0x4E, 0x1D, 0x00, 0x6E, 0x82, 0x00, 0x4E, 0x00, 0x6E, 0x00, 0x4E, 0x01, 0x00, 0x6E, 0x83, 0x00, 0x4D, 0x00, 0xEF, 0x01, 0xF2, 0x01, 0x90, 0x10, 0x00, 0x6E, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x4E, 0x03, 0x00, 0x6E, 0x80, 0x00, 0x4D, 0x02, 0x00, 0x6E, 0x02, 0x00, 0x6D, 0x80, 0x00, + 0x4D, 0x01, 0x00, 0x6E, 0x86, 0x00, 0x6D, 0x00, 0x4E, 0x00, 0x6E, 0x01, 0x2F, 0x01, 0xF1, 0x01, 0x90, 0x00, 0x8E, 0x07, 0x00, 0x6E, 0x07, 0x00, 0x6D, 0x81, 0x00, 0x6E, 0x00, 0x4D, 0x02, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x89, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0xCE, 0x01, 0x90, 0x02, 0x11, 0x01, 0x70, 0x00, 0x8E, 0x00, 0x4D, 0x00, 0x6D, 0x1B, 0x00, 0x4D, 0x80, 0x00, 0x4E, 0x01, 0x00, 0x4D, 0x86, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x6D, 0x01, 0x50, 0x01, 0xF1, 0x01, 0xB1, 0x00, 0xCE, 0x14, 0x00, 0x4D, 0x80, 0x00, 0x6E, 0x04, 0x00, 0x4D, 0x81, 0x00, 0x6E, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x80, 0x00, 0x4E, 0x01, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x84, 0x00, 0x8E, 0x01, 0xB1, 0x01, 0xD1, 0x00, 0xCE, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x1A, 0x00, 0x6D, 0x82, 0x00, 0x4D, 0x00, 0x6E, 0x00, 0x4D, 0x01, 0x00, 0x6E, 0x85, 0x00, 0x4E, 0x00, 0x6D, 0x01, 0x0F, 0x02, 0x12, 0x00, 0xEF, 0x00, 0x6D, 0x01, 0x00, 0x6E, 0x07, 0x00, 0x6D, 0x07, 0x00, 0x4D, 0x09, 0x00, 0x6E, 0x81, 0x00, 0x4D, 0x00, 0x6D, 0x02, 0x00, 0x6E, 0x85, 0x00, 0x4D, 0x00, 0x6E, 0x00, 0x4D, 0x00, 0x6E, 0x01, 0xD1, 0x01, 0x50, 0x24, 0x00, 0x6E, 0x82, 0x00, 0x4E, 0x01, 0x30, 0x01, 0x91, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x4E, 0x22, 0x00, 0x6E, 0x82, 0x00, 0x4E, 0x02, 0x32, 0x00, 0x4E, 0x21, 0x00, 0x6E, 0x81, 0x00, 0x4E, 0x00, 0x6E, 0x01, 0x00, 0x4D, 0x82, 0x00, 0x4E, 0x01, 0x0F, 0x01, 0xD1, 0x03, 0x00, 0x6E, 0x80, 0x00, 0x6D, 0x01, + 0x00, 0x4E, 0x80, 0x00, 0x4D, 0x1B, 0x00, 0x6E, 0x01, 0x00, 0x6D, 0x82, 0x00, 0xCE, 0x02, 0x12, 0x00, 0xCE, 0x03, 0x00, 0x6E, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x0A, 0x00, 0x6E, 0x82, 0x00, 0x4E, 0x70, 0xF0, 0x99, 0x32, 0x01, 0x99, 0x31, 0x82, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x01, 0x99, 0x31, 0x80, 0x81, 0x10, 0x01, 0x00, 0x6E, 0x80, 0x00, 0x4D, 0x03, 0x00, 0x6D, 0x82, 0x00, 0x8E, 0x01, 0xD1, 0x01, 0x90, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x4E, 0x01, 0x00, 0x6E, 0x82, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x6E, 0x01, 0x00, 0x4D, 0x05, 0x00, 0x6D, 0x14, 0x00, 0x4D, 0x83, 0x00, 0x6E, 0x01, 0x71, 0x01, 0xF2, 0x00, 0xEF, 0x05, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x03, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x17, 0x00, 0x4D, 0x86, 0x00, 0x8E, 0x01, 0x2F, 0x01, 0xF1, 0x01, 0x70, 0x00, 0x8E, 0x00, 0x4D, 0x00, 0x6D, 0x03, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x0A, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x81, 0x00, 0x6D, 0x00, 0xEF, 0x01, 0x01, 0xD1, 0x82, 0x01, 0x2F, 0x00, 0x8D, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x13, 0x00, 0x6D, 0x05, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x4D, 0x84, 0x00, 0x6D, 0x00, 0xEF, 0x01, 0xF1, 0x01, 0xB0, 0x00, 0xCE, 0x01, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x0F, 0x00, 0x6D, 0x0B, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x02, 0x00, 0x4D, 0x83, 0x01, 0x50, 0x01, 0xF1, 0x01, 0x50, 0x00, 0x6D, 0x1E, 0x00, 0x4D, + 0x82, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x4E, 0x02, 0x00, 0x4D, 0x83, 0x01, 0x50, 0x01, 0xF1, 0x00, 0xAE, 0x00, 0x6D, 0x02, 0x00, 0x4D, 0x18, 0x00, 0x6D, 0x80, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x82, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x4D, 0x02, 0x00, 0x6D, 0x81, 0x01, 0x70, 0x01, 0xB1, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x4D, 0x08, 0x00, 0x6D, 0x17, 0x00, 0x6E, 0x84, 0x00, 0x6D, 0x00, 0x4E, 0x00, 0x6E, 0x01, 0xD1, 0x01, 0x0F, 0x01, 0x00, 0x6D, 0x20, 0x00, 0x6E, 0x84, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x6E, 0x00, 0x4E, 0x02, 0x12, 0x01, 0x00, 0x4D, 0x21, 0x00, 0x6E, 0x80, 0x00, 0x4D, 0x02, 0x00, 0x6D, 0x84, 0x00, 0x6E, 0x01, 0xF1, 0x00, 0x8E, 0x00, 0x6D, 0x00, 0x6E, 0x01, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x80, 0x00, 0x4E, 0x08, 0x00, 0x6E, 0x12, 0x00, 0x6D, 0x84, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x4D, 0x01, 0x0F, 0x01, 0xF1, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x4D, 0x00, 0x6E, 0x02, 0x00, 0x6D, 0x80, 0x00, 0x4D, 0x07, 0x00, 0x6D, 0x80, 0x00, 0x4E, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x4D, 0x40, 0xCF, 0x07, 0x99, 0x31, 0x82, 0x70, 0xF0, 0x00, 0x4D, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x85, 0x00, 0x6D, 0x01, 0x91, 0x01, 0xB1, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x6D, 0x1B, 0x00, 0x4D, 0x8B, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0xEE, 0x01, 0xF1, 0x01, 0x90, 0x00, 0x8E, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x81, 0x00, 0x4D, 0x00, 0x6D, 0x05, 0x00, 0x4D, 0x81, 0x00, 0x6D, 0x00, 0x4D, 0x07, + 0x00, 0x6D, 0x07, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x01, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x84, 0x00, 0x6D, 0x01, 0x50, 0x02, 0x12, 0x01, 0x70, 0x00, 0x8E, 0x01, 0x00, 0x6D, 0x02, 0x00, 0x4D, 0x82, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x81, 0x00, 0x6D, 0x00, 0x4D, 0x03, 0x00, 0x6D, 0x01, 0x02, 0x11, 0x84, 0x02, 0x12, 0x01, 0xF2, 0x02, 0x12, 0x01, 0xF2, 0x01, 0xF1, 0x01, 0x02, 0x11, 0x80, 0x01, 0xF1, 0x08, 0x02, 0x12, 0x80, 0x01, 0xF1, 0x11, 0x02, 0x12, 0x80, 0x01, 0xF1, 0x02, 0x02, 0x11, 0x05, 0x02, 0x12, 0x82, 0x02, 0x11, 0x02, 0x12, 0x01, 0xF1, 0x21, 0x02, 0x12, 0x80, 0x02, 0x11, 0x2F, 0x02, 0x12, 0x82, 0x02, 0x32, 0x02, 0x12, 0x02, 0x11, 0x77, 0x02, 0x12, 0x01, 0x02, 0x32, 0x22, 0x02, 0x12, 0x83, 0x02, 0x11, 0x02, 0x32, 0x02, 0x12, 0x02, 0x32, 0x06, 0x02, 0x12, 0x80, 0x02, 0x32, 0x1C, 0x02, 0x12, 0x80, 0x02, 0x32, 0x17, 0x02, 0x12, 0x82, 0x11, 0xF1, 0x99, 0x31, 0x99, 0x11, 0x02, 0x99, 0x31, 0x80, 0x99, 0x32, 0x01, 0x99, 0x31, 0x80, 0x59, 0x91, 0x5C, 0x02, 0x12, 0x82, 0x01, 0xF1, 0x02, 0x12, 0x02, 0x11, 0x01, 0x02, 0x12, 0x83, 0x01, 0xF2, 0x02, 0x12, 0x02, 0x11, 0x01, 0xF1, 0x01, 0x02, 0x11, 0x80, 0x01, 0xF1, 0x04, 0x02, 0x12, 0x01, 0x00, 0x4D, 0x01, 0x00, 0x4C, 0x87, 0x00, 0x4D, 0x00, 0xAE, 0x01, 0x70, 0x01, 0xF1, 0x01, 0x70, 0x00, 0xCE, 0x00, 0x4D, 0x00, 0x4C, 0x0F, 0x00, 0x4D, 0x07, 0x00, 0x4C, 0x01, 0x00, 0x4D, 0x01, 0x00, 0x4C, 0x02, 0x00, 0x4D, 0x80, 0x00, 0x4C, 0x02, 0x00, 0x4D, + 0x80, 0x00, 0xEF, 0x01, 0x01, 0xD1, 0x81, 0x00, 0xEE, 0x00, 0x4C, 0x1E, 0x00, 0x4D, 0x80, 0x00, 0x4C, 0x04, 0x00, 0x4D, 0x82, 0x01, 0x2F, 0x02, 0x12, 0x01, 0x2F, 0x01, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x22, 0x00, 0x4D, 0x83, 0x00, 0x6D, 0x01, 0xB1, 0x01, 0xD1, 0x00, 0x6D, 0x25, 0x00, 0x4D, 0x82, 0x00, 0xAE, 0x02, 0x12, 0x00, 0xAE, 0x1C, 0x00, 0x4D, 0x07, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x83, 0x01, 0x50, 0x01, 0x4F, 0x00, 0x4D, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x1F, 0x00, 0x6D, 0x81, 0x00, 0x4D, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x80, 0x02, 0x12, 0x02, 0x00, 0x4D, 0x1F, 0x00, 0x6D, 0x05, 0x00, 0x4D, 0x81, 0x00, 0xAE, 0x01, 0xF1, 0x27, 0x00, 0x4D, 0x81, 0x01, 0xB1, 0x01, 0x50, 0x0E, 0x00, 0x4D, 0x84, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x4D, 0x88, 0xF0, 0x03, 0x99, 0x31, 0x85, 0x99, 0x12, 0x99, 0x11, 0x99, 0x31, 0x40, 0xAF, 0x00, 0x4D, 0x00, 0x6D, 0x01, 0x00, 0x4D, 0x82, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x6D, 0x03, 0x00, 0x4D, 0x82, 0x01, 0x0F, 0x02, 0x12, 0x00, 0xAE, 0x21, 0x00, 0x4D, 0x87, 0x00, 0x6D, 0x00, 0x4D, 0x00, 0x4C, 0x00, 0x6D, 0x00, 0xCE, 0x01, 0xD1, 0x01, 0x90, 0x00, 0x8E, 0x1D, 0x00, 0x4D, 0x06, 0x00, 0x4C, 0x84, 0x00, 0x8D, 0x01, 0x70, 0x01, 0xF1, 0x01, 0x2F, 0x00, 0x6D, 0x01, 0x00, 0x4C, 0x09, 0x00, 0x4D, 0x02, 0x00, 0x4C, 0x84, 0x00, 0xEE, 0x01, 0x90, 0x01, 0xD1, 0x01, 0x2F, 0x00, 0x8D, 0x02, 0x00, 0x4C, 0x80, 0x00, 0x4D, 0x1A, 0x00, 0x4C, 0x02, 0x00, 0x4D, 0x02, 0x00, 0x4C, 0x83, 0x00, 0xAE, 0x01, 0x90, 0x01, + 0xD1, 0x00, 0xEE, 0x1A, 0x00, 0x4C, 0x07, 0x00, 0x4D, 0x80, 0x00, 0x4C, 0x01, 0x00, 0x4D, 0x80, 0x00, 0xAE, 0x01, 0x01, 0xB1, 0x81, 0x00, 0x8D, 0x00, 0x4C, 0x23, 0x00, 0x4D, 0x83, 0x00, 0x6D, 0x00, 0x8D, 0x01, 0xB1, 0x01, 0x70, 0x26, 0x00, 0x4D, 0x82, 0x00, 0x6D, 0x01, 0xD1, 0x01, 0x0F, 0x03, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x22, 0x00, 0x4D, 0x81, 0x01, 0xF1, 0x00, 0x8E, 0x27, 0x00, 0x4D, 0x80, 0x02, 0x12, 0x29, 0x00, 0x4D, 0x81, 0x01, 0xD1, 0x00, 0xEE, 0x20, 0x00, 0x4D, 0x80, 0x00, 0x6D, 0x04, 0x00, 0x4D, 0x82, 0x00, 0x8D, 0x01, 0xF1, 0x00, 0xEF, 0x0C, 0x00, 0x4D, 0x80, 0x00, 0x4C, 0x03, 0x00, 0x4D, 0x83, 0x50, 0xCF, 0x99, 0x11, 0x99, 0x31, 0x99, 0x11, 0x02, 0x99, 0x31, 0x81, 0xA1, 0x11, 0x18, 0x6E, 0x09, 0x00, 0x4D, 0x84, 0x00, 0x4C, 0x00, 0x4D, 0x00, 0xEF, 0x01, 0xF1, 0x00, 0xEF, 0x12, 0x00, 0x4D, 0x07, 0x00, 0x4C, 0x07, 0x00, 0x4D, 0x01, 0x00, 0x4C, 0x85, 0x00, 0x4D, 0x00, 0x6D, 0x01, 0x50, 0x01, 0xF1, 0x01, 0x0F, 0x00, 0x4D, 0x01, 0x00, 0x4C, 0x80, 0x00, 0x6C, 0x14, 0x00, 0x4C, 0x05, 0x00, 0x4D, 0x04, 0x00, 0x4C, 0x01, 0x00, 0x4D, 0x86, 0x00, 0x8E, 0x01, 0x90, 0x01, 0xD1, 0x01, 0x2F, 0x00, 0x6D, 0x00, 0x4C, 0x00, 0x6C, 0x07, 0x00, 0x4C, 0x86, 0x00, 0x6D, 0x01, 0x0F, 0x01, 0xB1, 0x01, 0xD1, 0x00, 0xEE, 0x00, 0x6D, 0x00, 0x2C, 0x1F, 0x00, 0x4C, 0x80, 0x00, 0x2C, 0x02, 0x00, 0x4C, 0x84, 0x00, 0xAE, 0x01, 0x90, 0x01, 0xD1, 0x00, 0xEE, 0x00, 0x4D, 0x08, 0x00, 0x4C, 0x02, 0x00, 0x4D, 0x19, 0x00, 0x4C, 0x82, 0x01, 0x2F, + 0x01, 0xF1, 0x01, 0x2F, 0x22, 0x00, 0x4C, 0x80, 0x00, 0x4D, 0x02, 0x00, 0x4C, 0x82, 0x00, 0x8E, 0x01, 0xF1, 0x01, 0x4F, 0x25, 0x00, 0x4C, 0x84, 0x00, 0x4D, 0x00, 0x6D, 0x01, 0x70, 0x01, 0x90, 0x00, 0x4D, 0x1D, 0x00, 0x4C, 0x08, 0x00, 0x4D, 0x81, 0x01, 0x0F, 0x01, 0xD1, 0x25, 0x00, 0x4D, 0x80, 0x00, 0x4C, 0x01, 0x00, 0x4D, 0x82, 0x02, 0x12, 0x00, 0x4D, 0x00, 0x4C, 0x27, 0x00, 0x4D, 0x81, 0x01, 0x0E, 0x01, 0xB0, 0x27, 0x00, 0x4C, 0x83, 0x00, 0xAE, 0x01, 0xF1, 0x00, 0xAD, 0x00, 0x4D, 0x0F, 0x00, 0x4C, 0x80, 0x30, 0x8E, 0x05, 0x99, 0x31, 0x80, 0x91, 0x11, 0x0D, 0x00, 0x4C, 0x83, 0x00, 0x8D, 0x01, 0xF1, 0x01, 0x2F, 0x00, 0x6D, 0x20, 0x00, 0x4C, 0x04, 0x00, 0x4D, 0x84, 0x00, 0x8D, 0x01, 0xB0, 0x01, 0xB1, 0x00, 0x8D, 0x00, 0x4D, 0x01, 0x00, 0x4C, 0x80, 0x00, 0x2C, 0x01, 0x00, 0x4C, 0x80, 0x00, 0x2C, 0x1E, 0x00, 0x4C, 0x83, 0x00, 0xCD, 0x01, 0x91, 0x01, 0xD1, 0x01, 0x2F, 0x08, 0x00, 0x4C, 0x82, 0x01, 0xD1, 0x01, 0x70, 0x00, 0xAE, 0x25, 0x00, 0x4C, 0x85, 0x00, 0x8D, 0x01, 0x90, 0x01, 0xD1, 0x01, 0x0F, 0x00, 0x6D, 0x00, 0x2C, 0x24, 0x00, 0x4C, 0x83, 0x00, 0xAE, 0x01, 0xD1, 0x01, 0x90, 0x00, 0x8D, 0x26, 0x00, 0x4C, 0x82, 0x00, 0xEE, 0x01, 0xF1, 0x00, 0xEE, 0x27, 0x00, 0x4C, 0x82, 0x01, 0x2F, 0x01, 0xB0, 0x00, 0x6D, 0x27, 0x00, 0x4C, 0x81, 0x01, 0x70, 0x01, 0x0F, 0x24, 0x00, 0x4C, 0x80, 0x00, 0x4D, 0x02, 0x00, 0x4C, 0x80, 0x02, 0x12, 0x29, 0x00, 0x4C, 0x82, 0x00, 0x6D, 0x01, 0xF1, 0x00, 0x8D, 0x25, 0x00, 0x4C, 0x86, 0x00, 0x6C, + 0x00, 0x4C, 0x01, 0x2F, 0x01, 0xB0, 0x00, 0x6D, 0x00, 0x4C, 0x00, 0x6C, 0x0D, 0x00, 0x4C, 0x80, 0x08, 0x4D, 0x03, 0x99, 0x31, 0x82, 0x99, 0x11, 0x99, 0x31, 0x68, 0xF0, 0x0E, 0x00, 0x4C, 0x83, 0x00, 0x8D, 0x01, 0xB0, 0x01, 0x6F, 0x00, 0x4D, 0x26, 0x00, 0x4C, 0x84, 0x01, 0x2F, 0x02, 0x11, 0x01, 0x0F, 0x00, 0x4D, 0x00, 0x2C, 0x20, 0x00, 0x4C, 0x80, 0x00, 0x2C, 0x02, 0x00, 0x4C, 0x83, 0x00, 0xAD, 0x01, 0x90, 0x01, 0xD1, 0x00, 0xEE, 0x06, 0x00, 0x4C, 0x80, 0x00, 0x6C, 0x02, 0x00, 0x4C, 0x81, 0x00, 0x2C, 0x00, 0x4C, 0x01, 0x00, 0x2C, 0x1E, 0x00, 0x4C, 0x84, 0x00, 0x8D, 0x01, 0x50, 0x01, 0xF1, 0x01, 0x2F, 0x00, 0x6C, 0x24, 0x00, 0x4C, 0x84, 0x00, 0x2C, 0x00, 0x6D, 0x01, 0x4F, 0x01, 0xD1, 0x01, 0x0F, 0x26, 0x00, 0x4C, 0x83, 0x00, 0x2C, 0x00, 0xEE, 0x01, 0xD1, 0x00, 0xCE, 0x27, 0x00, 0x4C, 0x82, 0x00, 0xAE, 0x01, 0xF1, 0x00, 0x8E, 0x01, 0x00, 0x4C, 0x80, 0x00, 0x2C, 0x24, 0x00, 0x4C, 0x82, 0x00, 0x8D, 0x02, 0x11, 0x00, 0x4D, 0x28, 0x00, 0x4C, 0x80, 0x02, 0x12, 0x2A, 0x00, 0x4C, 0x81, 0x01, 0x50, 0x01, 0x2F, 0x28, 0x00, 0x4C, 0x01, 0x01, 0x70, 0x10, 0x00, 0x4C, 0x80, 0x80, 0xF0, 0x04, 0x99, 0x31, 0x80, 0x38, 0x8E, 0x0F, 0x00, 0x4C, 0x82, 0x00, 0x6D, 0x01, 0xB0, 0x01, 0xB1, 0x27, 0x00, 0x4C, 0x80, 0x00, 0x8E, 0x01, 0x01, 0xB0, 0x80, 0x00, 0xAD, 0x26, 0x00, 0x4C, 0x83, 0x00, 0xAD, 0x01, 0xB0, 0x01, 0xB1, 0x00, 0xEE, 0x06, 0x00, 0x4C, 0x81, 0x00, 0x2C, 0x00, 0x2B, 0x07, 0x00, 0x4C, 0x03, 0x00, 0x2B, 0x03, 0x00, 0x2C, 0x80, 0x00, + 0x2B, 0x02, 0x00, 0x4C, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x4C, 0x80, 0x00, 0x2C, 0x01, 0x00, 0x4C, 0x86, 0x00, 0x2C, 0x00, 0x4C, 0x00, 0x8D, 0x01, 0x50, 0x01, 0xD1, 0x01, 0x2F, 0x00, 0x6C, 0x26, 0x00, 0x4C, 0x83, 0x00, 0xAD, 0x01, 0xB0, 0x01, 0x90, 0x00, 0x6C, 0x27, 0x00, 0x4C, 0x82, 0x01, 0x50, 0x01, 0xF1, 0x00, 0x8D, 0x25, 0x00, 0x4C, 0x80, 0x00, 0x2C, 0x01, 0x00, 0x4C, 0x81, 0x01, 0xD1, 0x00, 0xEE, 0x28, 0x00, 0x4C, 0x81, 0x01, 0x0F, 0x01, 0x6F, 0x29, 0x00, 0x4C, 0x80, 0x01, 0xF1, 0x2A, 0x00, 0x4C, 0x81, 0x00, 0xAD, 0x01, 0xF1, 0x28, 0x00, 0x4C, 0x82, 0x00, 0x6C, 0x01, 0xD1, 0x01, 0x0E, 0x0F, 0x00, 0x4C, 0x81, 0x50, 0xCF, 0xA1, 0x11, 0x03, 0x99, 0x31, 0x80, 0x08, 0x4C, 0x0F, 0x00, 0x4C, 0x84, 0x00, 0x2C, 0x00, 0x4C, 0x01, 0x4F, 0x01, 0xB1, 0x00, 0x8D, 0x27, 0x00, 0x4C, 0x82, 0x01, 0x0E, 0x01, 0xD1, 0x01, 0x4F, 0x26, 0x00, 0x4C, 0x81, 0x00, 0x2C, 0x00, 0xCE, 0x01, 0x01, 0xB1, 0x87, 0x00, 0xEE, 0x00, 0x4C, 0x00, 0x2C, 0x00, 0x4C, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4C, 0x00, 0x4B, 0x07, 0x00, 0x4C, 0x07, 0x00, 0x2B, 0x82, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x4B, 0x02, 0x00, 0x4C, 0x81, 0x00, 0x2B, 0x00, 0x4C, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x81, 0x00, 0x4C, 0x00, 0x2C, 0x01, 0x00, 0x4C, 0x87, 0x01, 0x2F, 0x01, 0xF1, 0x01, 0x4F, 0x00, 0x6C, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x2C, 0x00, 0x4B, 0x0F, 0x00, 0x4C, 0x07, 0x00, 0x2C, 0x03, 0x00, 0x4C, 0x80, 0x00, 0x2B, 0x04, 0x00, 0x4C, 0x84, 0x00, 0x4B, 0x00, 0x4C, 0x01, 0x4F, 0x01, + 0xD1, 0x00, 0xEE, 0x28, 0x00, 0x4C, 0x82, 0x01, 0x50, 0x01, 0xB0, 0x00, 0x6D, 0x28, 0x00, 0x4C, 0x81, 0x01, 0x90, 0x01, 0x4F, 0x29, 0x00, 0x4C, 0x81, 0x01, 0xB1, 0x00, 0xCE, 0x29, 0x00, 0x4C, 0x80, 0x01, 0xF1, 0x2B, 0x00, 0x4C, 0x81, 0x01, 0xB1, 0x00, 0xEE, 0x28, 0x00, 0x4C, 0x82, 0x00, 0x8D, 0x01, 0xF1, 0x00, 0xAE, 0x0E, 0x00, 0x4C, 0x80, 0x38, 0x8E, 0x03, 0x99, 0x31, 0x80, 0x68, 0xD0, 0x11, 0x00, 0x4C, 0x84, 0x00, 0x2C, 0x00, 0x4C, 0x01, 0x2E, 0x01, 0xD1, 0x00, 0x8D, 0x01, 0x00, 0x4C, 0x82, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x4B, 0x03, 0x00, 0x4C, 0x80, 0x00, 0x2C, 0x19, 0x00, 0x4C, 0x87, 0x00, 0x2C, 0x00, 0x4C, 0x00, 0x2C, 0x00, 0x4C, 0x00, 0x8C, 0x01, 0x70, 0x01, 0xB1, 0x00, 0xAD, 0x01, 0x00, 0x4C, 0x01, 0x00, 0x2B, 0x01, 0x00, 0x4C, 0x81, 0x00, 0x2B, 0x00, 0x4B, 0x18, 0x00, 0x4C, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x88, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x2C, 0x00, 0xEE, 0x01, 0xB1, 0x01, 0x90, 0x00, 0xAD, 0x00, 0x2B, 0x00, 0x4B, 0x0A, 0x00, 0x2B, 0x03, 0x00, 0x4B, 0x03, 0x00, 0x2B, 0x81, 0x00, 0x4B, 0x00, 0x2B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x4C, 0x82, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4C, 0x02, 0x00, 0x4B, 0x84, 0x00, 0x6C, 0x01, 0x0E, 0x01, 0xD1, 0x01, 0x4F, 0x00, 0x6C, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x2B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4C, 0x0F, 0x00, 0x2B, 0x07, 0x00, 0x4C, 0x81, 0x00, 0x2B, 0x00, 0x4B, 0x01, 0x00, 0x4C, 0x80, 0x00, 0x2C, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x87, 0x00, 0x4B, 0x00, 0xCD, 0x01, 0xB1, + 0x01, 0x70, 0x00, 0x8C, 0x00, 0x4B, 0x00, 0x2C, 0x00, 0x4B, 0x0E, 0x00, 0x4C, 0x07, 0x00, 0x2B, 0x08, 0x00, 0x4C, 0x82, 0x00, 0x2C, 0x00, 0x4C, 0x00, 0x2C, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4C, 0x01, 0x01, 0x90, 0x81, 0x00, 0x4C, 0x00, 0x4B, 0x01, 0x00, 0x4C, 0x80, 0x00, 0x2C, 0x1D, 0x00, 0x4C, 0x80, 0x00, 0x2C, 0x02, 0x00, 0x4C, 0x80, 0x00, 0x2C, 0x01, 0x00, 0x4C, 0x81, 0x01, 0x2F, 0x01, 0x90, 0x24, 0x00, 0x4C, 0x80, 0x00, 0x2C, 0x03, 0x00, 0x4C, 0x81, 0x00, 0xAD, 0x01, 0xD1, 0x2A, 0x00, 0x4C, 0x80, 0x01, 0xF2, 0x2B, 0x00, 0x4C, 0x82, 0x01, 0x0E, 0x01, 0x70, 0x00, 0x2B, 0x28, 0x00, 0x4C, 0x81, 0x00, 0xCE, 0x01, 0xD1, 0x02, 0x00, 0x4C, 0x80, 0x00, 0x2B, 0x02, 0x00, 0x4C, 0x01, 0x00, 0x2C, 0x81, 0x00, 0x4C, 0x00, 0x2C, 0x03, 0x00, 0x4C, 0x81, 0x10, 0x4C, 0xA1, 0x11, 0x02, 0x99, 0x31, 0x82, 0x28, 0x8D, 0x00, 0x4B, 0x00, 0x4C, 0x01, 0x00, 0x2B, 0x09, 0x00, 0x4C, 0x8C, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0xEE, 0x01, 0xF2, 0x00, 0xCD, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x2B, 0x01, 0x00, 0x4C, 0x81, 0x00, 0x2B, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x82, 0x00, 0x2C, 0x00, 0x4B, 0x00, 0x4C, 0x0F, 0x00, 0x2B, 0x01, 0x00, 0x4C, 0x06, 0x00, 0x2B, 0x89, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4C, 0x00, 0x2B, 0x00, 0xEE, 0x01, 0xD1, 0x01, 0x2F, 0x00, 0x4C, 0x00, 0x2B, 0x00, 0x4C, 0x01, 0x00, 0x2B, 0x82, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x18, 0x00, 0x2B, 0x04, 0x00, 0x4B, 0x86, 0x00, 0x4C, 0x00, + 0x2B, 0x00, 0x4C, 0x00, 0xEE, 0x01, 0xB1, 0x01, 0x70, 0x00, 0x4B, 0x0A, 0x00, 0x2B, 0x07, 0x00, 0x4B, 0x04, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x01, 0x00, 0x4B, 0x89, 0x00, 0x2B, 0x00, 0x4C, 0x01, 0x0E, 0x01, 0xB1, 0x01, 0x70, 0x00, 0x8C, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x01, 0x00, 0x2C, 0x09, 0x00, 0x2B, 0x10, 0x00, 0x4B, 0x80, 0x00, 0x2B, 0x05, 0x00, 0x4B, 0x83, 0x00, 0x6C, 0x01, 0x70, 0x01, 0xD1, 0x00, 0xCD, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4C, 0x08, 0x00, 0x4B, 0x07, 0x00, 0x2B, 0x07, 0x00, 0x4C, 0x07, 0x00, 0x2B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4C, 0x01, 0x00, 0x4B, 0x85, 0x00, 0x8D, 0x01, 0x90, 0x01, 0x4F, 0x00, 0x4C, 0x00, 0x2B, 0x00, 0x4B, 0x01, 0x00, 0x4C, 0x82, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4C, 0x0F, 0x00, 0x2B, 0x08, 0x00, 0x4C, 0x02, 0x00, 0x2B, 0x02, 0x00, 0x4C, 0x85, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x2B, 0x00, 0xCD, 0x01, 0xD1, 0x00, 0x8C, 0x01, 0x00, 0x4C, 0x80, 0x00, 0x2B, 0x1F, 0x00, 0x4C, 0x82, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x2B, 0x02, 0x00, 0x4B, 0x87, 0x00, 0x2B, 0x01, 0x4F, 0x01, 0x2E, 0x00, 0x2C, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x4B, 0x00, 0x4C, 0x01, 0x00, 0x2B, 0x23, 0x00, 0x4C, 0x80, 0x01, 0xF1, 0x2A, 0x00, 0x4C, 0x85, 0x00, 0x2B, 0x00, 0x4C, 0x01, 0xF1, 0x00, 0x6C, 0x00, 0x2B, 0x00, 0x4B, 0x21, 0x00, 0x4C, 0x81, 0x00, 0x4B, 0x00, 0x2C, 0x01, 0x00, 0x4C, 0x83, 0x00, 0x2B, 0x00, 0x4C, 0x01, 0x4F, 0x01, 0xB0, 0x03, 0x00, 0x4C, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4C, 0x01, + 0x00, 0x4B, 0x83, 0x00, 0x2B, 0x00, 0x4C, 0x00, 0x2B, 0x00, 0x4B, 0x01, 0x00, 0x4C, 0x02, 0x99, 0x31, 0x85, 0x89, 0x10, 0x00, 0x2C, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x2B, 0x00, 0x4B, 0x07, 0x00, 0x4C, 0x84, 0x00, 0x2C, 0x00, 0x2B, 0x00, 0x4C, 0x00, 0x2B, 0x00, 0x4C, 0x01, 0x00, 0x2B, 0x01, 0x00, 0x4C, 0x88, 0x00, 0x4B, 0x00, 0xAC, 0x01, 0xD1, 0x01, 0x0F, 0x00, 0x4B, 0x00, 0x2C, 0x00, 0x4C, 0x00, 0x2C, 0x00, 0x4C, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x80, 0x00, 0x4C, 0x18, 0x00, 0x4B, 0x89, 0x00, 0x4C, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4C, 0x00, 0x2B, 0x00, 0x6C, 0x01, 0x4F, 0x01, 0xD1, 0x00, 0xCD, 0x00, 0x2B, 0x03, 0x00, 0x4B, 0x10, 0x00, 0x2B, 0x07, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x81, 0x00, 0x4B, 0x00, 0x2B, 0x01, 0x00, 0x4B, 0x84, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4C, 0x01, 0x0E, 0x1D, 0x00, 0x2B, 0x83, 0x00, 0xED, 0x01, 0xB1, 0x01, 0x70, 0x00, 0x8D, 0x07, 0x00, 0x2B, 0x81, 0x00, 0x4B, 0x00, 0x2B, 0x0F, 0x00, 0x4B, 0x08, 0x00, 0x2B, 0x82, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x84, 0x00, 0xAD, 0x01, 0xD1, 0x01, 0x6F, 0x00, 0x4C, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x19, 0x00, 0x4B, 0x87, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x8D, 0x01, 0xD1, 0x01, 0x2F, 0x00, 0x2B, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x81, 0x00, 0x4C, 0x00, 0x2B, 0x09, 0x00, 0x4B, 0x07, 0x00, 0x2B, 0x09, 0x00, 0x4B, 0x80, 0x00, 0x2B, 0x04, 0x00, 0x4B, 0x85, 0x00, + 0x2B, 0x00, 0x6C, 0x01, 0xD1, 0x00, 0xCD, 0x00, 0x4B, 0x00, 0x2B, 0x21, 0x00, 0x4B, 0x89, 0x00, 0x4C, 0x00, 0x2B, 0x00, 0x4C, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x4B, 0x00, 0x4C, 0x01, 0xD1, 0x00, 0x6C, 0x00, 0x4C, 0x04, 0x00, 0x4B, 0x80, 0x00, 0x2B, 0x23, 0x00, 0x4B, 0x81, 0x01, 0xF1, 0x00, 0x2B, 0x29, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x81, 0x01, 0x4F, 0x01, 0x0E, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x2C, 0x22, 0x00, 0x4B, 0x82, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x4C, 0x01, 0x00, 0x4B, 0x86, 0x01, 0x90, 0x01, 0x2F, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x2B, 0x03, 0x00, 0x4B, 0x81, 0x00, 0x2B, 0x00, 0x4C, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x2B, 0x70, 0xF0, 0x01, 0x99, 0x31, 0x80, 0x48, 0xAE, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x4C, 0x0C, 0x00, 0x4B, 0x80, 0x00, 0x2B, 0x06, 0x00, 0x4B, 0x83, 0x00, 0x8C, 0x01, 0xB1, 0x01, 0x4F, 0x00, 0x2B, 0x05, 0x00, 0x4B, 0x82, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x2B, 0x07, 0x00, 0x4B, 0x07, 0x00, 0x2B, 0x03, 0x00, 0x4B, 0x06, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x2B, 0x83, 0x00, 0xCD, 0x01, 0xD1, 0x01, 0x50, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x10, 0x00, 0x4B, 0x07, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x01, 0x00, 0x4B, 0x80, 0x00, 0x2B, 0x01, 0x00, 0x2A, 0x01, 0x00, 0x4A, 0x07, 0x00, 0x2A, 0x07, 0x00, 0x2B, 0x81, 0x00, 0x2A, 0x00, 0x4A, 0x05, 0x00, 0x2B, 0x89, 0x00, 0xCD, 0x01, 0xB0, 0x01, 0x70, 0x00, 0xAC, 0x00, 0x2A, 0x00, 0x4B, 0x00, 0x2B, 0x00, + 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x81, 0x00, 0x4A, 0x00, 0x2A, 0x19, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x01, 0x00, 0x4B, 0x84, 0x01, 0x6F, 0x01, 0xD1, 0x00, 0xAD, 0x00, 0x2B, 0x00, 0x2A, 0x01, 0x00, 0x2B, 0x82, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x1F, 0x00, 0x2B, 0x01, 0x00, 0x4B, 0x89, 0x00, 0x2B, 0x00, 0xCE, 0x01, 0xD1, 0x00, 0xCD, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x07, 0x00, 0x2B, 0x07, 0x00, 0x4B, 0x0A, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x03, 0x00, 0x2B, 0x82, 0x00, 0x4B, 0x01, 0x90, 0x01, 0x2F, 0x04, 0x00, 0x2B, 0x1F, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x85, 0x00, 0xEE, 0x01, 0x90, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x24, 0x00, 0x4B, 0x81, 0x01, 0xF2, 0x00, 0x2B, 0x29, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x84, 0x00, 0xAD, 0x01, 0xB1, 0x00, 0x2B, 0x00, 0x2C, 0x00, 0x2B, 0x10, 0x00, 0x4B, 0x12, 0x00, 0x2B, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x82, 0x00, 0x6C, 0x01, 0xD1, 0x00, 0xCE, 0x02, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x04, 0x00, 0x2B, 0x80, 0x60, 0xCF, 0x01, 0x99, 0x31, 0x80, 0x10, 0x4C, 0x10, 0x00, 0x2B, 0x82, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x04, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x01, 0x01, 0x90, 0x80, 0x00, 0x4C, 0x01, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x1D, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x80, 0x00, 0x4B, + 0x02, 0x00, 0x2B, 0x83, 0x00, 0x4B, 0x01, 0x4F, 0x01, 0xB1, 0x00, 0xAD, 0x01, 0x00, 0x2B, 0x80, 0x00, 0x2A, 0x17, 0x00, 0x2B, 0x80, 0x00, 0x2A, 0x03, 0x00, 0x2B, 0x80, 0x00, 0x2A, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x80, 0x00, 0x4A, 0x1A, 0x00, 0x2A, 0x83, 0x00, 0xCD, 0x01, 0x90, 0x01, 0xB0, 0x00, 0xCD, 0x04, 0x00, 0x2A, 0x82, 0x00, 0x4A, 0x00, 0x2A, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x80, 0x00, 0x4A, 0x12, 0x00, 0x2A, 0x07, 0x00, 0x2B, 0x86, 0x00, 0x4A, 0x00, 0x2B, 0x00, 0x2A, 0x00, 0x4B, 0x00, 0xCD, 0x01, 0xD1, 0x01, 0x2F, 0x01, 0x00, 0x4B, 0x81, 0x00, 0x2A, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x2B, 0x01, 0x00, 0x4B, 0x15, 0x00, 0x2B, 0x07, 0x00, 0x4B, 0x85, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0xCE, 0x01, 0xD1, 0x00, 0xAD, 0x00, 0x4B, 0x04, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x1B, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x82, 0x00, 0x4B, 0x01, 0x4F, 0x01, 0x90, 0x02, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x21, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x02, 0x00, 0x4B, 0x82, 0x01, 0x90, 0x00, 0xCD, 0x00, 0x4B, 0x05, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x20, 0x00, 0x2B, 0x85, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x01, 0xD1, 0x00, 0x2B, 0x00, 0x4B, 0x28, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x83, 0x01, 0xB0, 0x00, 0xAD, 0x00, 0x2B, 0x00, 0x4B, 0x20, 0x00, 0x2B, 0x02, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x85, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0xAD, 0x01, 0xD1, + 0x00, 0x8C, 0x03, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x06, 0x00, 0x2B, 0x83, 0x48, 0xAE, 0x99, 0x31, 0x68, 0xF0, 0x00, 0x4B, 0x12, 0x00, 0x2B, 0x02, 0x00, 0x4B, 0x03, 0x00, 0x2B, 0x83, 0x00, 0x4B, 0x01, 0x4F, 0x01, 0x90, 0x00, 0x6C, 0x03, 0x00, 0x2B, 0x01, 0x00, 0x4B, 0x18, 0x00, 0x2B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0x82, 0x00, 0x2A, 0x00, 0x2B, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x87, 0x00, 0x2A, 0x00, 0x2B, 0x00, 0x4A, 0x00, 0xAC, 0x01, 0x90, 0x01, 0x70, 0x00, 0x6C, 0x00, 0x4A, 0x3A, 0x00, 0x2A, 0x84, 0x00, 0x29, 0x00, 0x8C, 0x01, 0x70, 0x01, 0x90, 0x00, 0xCD, 0x29, 0x00, 0x2A, 0x87, 0x00, 0x6B, 0x01, 0x6F, 0x01, 0x90, 0x00, 0x8C, 0x00, 0x2A, 0x00, 0x4A, 0x00, 0x2A, 0x00, 0x4A, 0x1D, 0x00, 0x2A, 0x08, 0x00, 0x2B, 0x83, 0x01, 0x2F, 0x01, 0xB1, 0x00, 0x6C, 0x00, 0x4B, 0x02, 0x00, 0x2B, 0x80, 0x00, 0x4A, 0x02, 0x00, 0x2B, 0x01, 0x00, 0x2A, 0x1A, 0x00, 0x2B, 0x01, 0x00, 0x4B, 0x86, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0xCD, 0x01, 0xB1, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x24, 0x00, 0x2B, 0x86, 0x00, 0x6C, 0x01, 0xD1, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x00, 0x2B, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x24, 0x00, 0x2B, 0x80, 0x01, 0xD1, 0x2B, 0x00, 0x2B, 0x83, 0x00, 0x4B, 0x00, 0x2B, 0x01, 0x0E, 0x01, 0x4F, 0x01, 0x00, 0x4B, 0x21, 0x00, 0x2B, 0x80, 0x00, 0x4A, 0x06, 0x00, 0x2B, 0x85, 0x01, 0x0E, 0x01, 0x90, 0x00, 0x4B, 0x00, 0x2A, 0x00, 0x2B, 0x00, + 0x2A, 0x01, 0x00, 0x2B, 0x82, 0x00, 0x2A, 0x00, 0x2B, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x84, 0x00, 0x4B, 0x30, 0x8D, 0x99, 0x11, 0x20, 0x6C, 0x00, 0x4B, 0x01, 0x00, 0x2B, 0x80, 0x00, 0x2A, 0x09, 0x00, 0x2B, 0x01, 0x00, 0x4B, 0x85, 0x00, 0x2A, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4A, 0x00, 0x2A, 0x01, 0x00, 0x2B, 0x80, 0x00, 0x4B, 0x02, 0x00, 0x2A, 0x88, 0x00, 0x2B, 0x01, 0x0E, 0x01, 0xB1, 0x00, 0x8C, 0x00, 0x2A, 0x00, 0x4A, 0x00, 0x2B, 0x00, 0x2A, 0x00, 0x4A, 0x24, 0x00, 0x2A, 0x83, 0x00, 0x4B, 0x01, 0x0E, 0x01, 0xB0, 0x00, 0xED, 0x23, 0x00, 0x2A, 0x0D, 0x00, 0x29, 0x80, 0x00, 0x2A, 0x02, 0x00, 0x29, 0x02, 0x00, 0x2A, 0x86, 0x00, 0x29, 0x00, 0x8B, 0x01, 0x6F, 0x01, 0xB0, 0x00, 0xCD, 0x00, 0x2A, 0x00, 0x29, 0x28, 0x00, 0x2A, 0x83, 0x00, 0xED, 0x01, 0xB1, 0x01, 0x0E, 0x00, 0x4A, 0x01, 0x00, 0x2A, 0x80, 0x00, 0x29, 0x26, 0x00, 0x2A, 0x83, 0x00, 0x4B, 0x01, 0x4F, 0x01, 0x6F, 0x00, 0x4B, 0x27, 0x00, 0x2A, 0x80, 0x00, 0x2B, 0x01, 0x00, 0x2A, 0x83, 0x00, 0x8B, 0x01, 0xB1, 0x00, 0x8C, 0x00, 0x2B, 0x04, 0x00, 0x2A, 0x80, 0x00, 0x2B, 0x1F, 0x00, 0x2A, 0x82, 0x00, 0x2B, 0x00, 0x2A, 0x00, 0x2B, 0x01, 0x00, 0x2A, 0x81, 0x01, 0x2E, 0x01, 0x2F, 0x2C, 0x00, 0x2A, 0x80, 0x01, 0xD2, 0x2B, 0x00, 0x2A, 0x86, 0x00, 0x2B, 0x00, 0x2A, 0x00, 0x4B, 0x01, 0xD1, 0x00, 0x6B, 0x00, 0x2A, 0x00, 0x2B, 0x27, 0x00, 0x2A, 0x81, 0x00, 0x2B, 0x00, 0x2A, 0x01, 0x01, 0x4F, 0x0A, 0x00, 0x2A, 0x81, 0x18, 0x6B, 0x88, 0xF1, 0x1E, 0x00, 0x2A, 0x84, 0x00, + 0xCD, 0x01, 0xB1, 0x00, 0xCD, 0x00, 0x2A, 0x00, 0x4A, 0x27, 0x00, 0x2A, 0x84, 0x00, 0x29, 0x00, 0xAC, 0x01, 0x90, 0x01, 0x6F, 0x00, 0x6B, 0x02, 0x00, 0x2A, 0x80, 0x00, 0x29, 0x01, 0x00, 0x2A, 0x03, 0x00, 0x29, 0x80, 0x00, 0x2A, 0x01, 0x00, 0x29, 0x10, 0x00, 0x2A, 0x17, 0x00, 0x29, 0x84, 0x00, 0x8B, 0x01, 0x4F, 0x01, 0x90, 0x00, 0xED, 0x00, 0x4A, 0x23, 0x00, 0x29, 0x80, 0x00, 0x2A, 0x01, 0x00, 0x29, 0x02, 0x00, 0x2A, 0x85, 0x00, 0x6A, 0x01, 0x4F, 0x01, 0x90, 0x00, 0xAB, 0x00, 0x29, 0x00, 0x2A, 0x02, 0x00, 0x29, 0x24, 0x00, 0x2A, 0x84, 0x00, 0x29, 0x00, 0x4A, 0x01, 0x70, 0x01, 0x6F, 0x00, 0x4A, 0x02, 0x00, 0x2A, 0x80, 0x00, 0x29, 0x26, 0x00, 0x2A, 0x83, 0x00, 0x4A, 0x01, 0x70, 0x00, 0xED, 0x00, 0x4A, 0x2B, 0x00, 0x2A, 0x81, 0x01, 0x90, 0x00, 0x8C, 0x2C, 0x00, 0x2A, 0x80, 0x01, 0xD1, 0x2E, 0x00, 0x2A, 0x81, 0x01, 0x2F, 0x01, 0x0E, 0x29, 0x00, 0x2A, 0x84, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x4B, 0x01, 0x90, 0x00, 0xED, 0x03, 0x00, 0x2A, 0x80, 0x00, 0x4A, 0x05, 0x00, 0x2A, 0x81, 0x28, 0x6B, 0x00, 0x29, 0x1E, 0x00, 0x2A, 0x84, 0x00, 0xAC, 0x01, 0xB1, 0x00, 0xED, 0x00, 0x29, 0x00, 0x2A, 0x01, 0x00, 0x29, 0x01, 0x00, 0x2A, 0x82, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x29, 0x01, 0x00, 0x2A, 0x80, 0x00, 0x29, 0x17, 0x00, 0x2A, 0x01, 0x00, 0x29, 0x80, 0x00, 0x2A, 0x03, 0x00, 0x29, 0x83, 0x00, 0x2A, 0x00, 0xEE, 0x01, 0xB1, 0x01, 0x0D, 0x02, 0x00, 0x29, 0x80, 0x00, 0x2A, 0x1C, 0x00, 0x29, 0x03, 0x00, 0x28, 0x01, 0x00, 0x29, 0x02, 0x00, 0x28, + 0x01, 0x00, 0x29, 0x01, 0x00, 0x28, 0x02, 0x00, 0x29, 0x87, 0x00, 0x09, 0x00, 0x29, 0x00, 0x49, 0x01, 0x2E, 0x01, 0x90, 0x00, 0xED, 0x00, 0x4A, 0x00, 0x28, 0x02, 0x00, 0x29, 0x80, 0x00, 0x09, 0x25, 0x00, 0x29, 0x83, 0x00, 0xCC, 0x01, 0xB0, 0x01, 0x0E, 0x00, 0x49, 0x2A, 0x00, 0x29, 0x84, 0x00, 0x6B, 0x01, 0x90, 0x01, 0x2E, 0x00, 0x49, 0x00, 0x2A, 0x1D, 0x00, 0x29, 0x09, 0x00, 0x2A, 0x02, 0x00, 0x29, 0x83, 0x01, 0x2E, 0x01, 0x6F, 0x00, 0x2A, 0x00, 0x29, 0x01, 0x00, 0x2A, 0x80, 0x00, 0x29, 0x27, 0x00, 0x2A, 0x81, 0x00, 0xAC, 0x01, 0x90, 0x2D, 0x00, 0x2A, 0x80, 0x01, 0xD1, 0x2B, 0x00, 0x2A, 0x84, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x29, 0x00, 0xAC, 0x01, 0x90, 0x2A, 0x00, 0x2A, 0x86, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x8B, 0x01, 0xB1, 0x00, 0x8B, 0x00, 0x29, 0x00, 0x2A, 0x02, 0x00, 0x29, 0x80, 0x00, 0x2A, 0x05, 0x00, 0x29, 0x01, 0x00, 0x2A, 0x1D, 0x00, 0x29, 0x82, 0x00, 0x6B, 0x01, 0xB0, 0x01, 0x2E, 0x2B, 0x00, 0x29, 0x83, 0x00, 0x8B, 0x01, 0x70, 0x01, 0x4F, 0x00, 0x6A, 0x07, 0x00, 0x29, 0x80, 0x00, 0x09, 0x15, 0x00, 0x29, 0x05, 0x00, 0x28, 0x80, 0x00, 0x29, 0x08, 0x00, 0x28, 0x84, 0x00, 0x69, 0x01, 0x0D, 0x01, 0xB1, 0x00, 0xED, 0x00, 0x49, 0x03, 0x00, 0x28, 0x80, 0x00, 0x29, 0x1A, 0x00, 0x28, 0x03, 0x00, 0x29, 0x80, 0x00, 0x28, 0x04, 0x00, 0x29, 0x84, 0x00, 0x28, 0x00, 0x6A, 0x01, 0x4F, 0x01, 0x6F, 0x00, 0x8B, 0x05, 0x00, 0x29, 0x80, 0x00, 0x28, 0x24, 0x00, 0x29, 0x82, 0x00, 0x6A, 0x01, 0xB0, 0x00, 0xED, 0x2B, 0x00, 0x29, 0x83, + 0x00, 0x49, 0x00, 0xCD, 0x01, 0xB0, 0x00, 0x4A, 0x2C, 0x00, 0x29, 0x81, 0x01, 0x4F, 0x00, 0xCD, 0x2D, 0x00, 0x29, 0x80, 0x01, 0xD1, 0x2A, 0x00, 0x29, 0x80, 0x00, 0x2A, 0x02, 0x00, 0x29, 0x82, 0x00, 0x2A, 0x01, 0x90, 0x00, 0xAB, 0x29, 0x00, 0x29, 0x80, 0x00, 0x4A, 0x01, 0x00, 0x29, 0x82, 0x00, 0xCC, 0x01, 0xB1, 0x00, 0x49, 0x2B, 0x00, 0x29, 0x83, 0x00, 0x49, 0x01, 0x6F, 0x01, 0x2E, 0x00, 0x4A, 0x21, 0x00, 0x29, 0x80, 0x00, 0x28, 0x05, 0x00, 0x29, 0x01, 0x00, 0x28, 0x86, 0x00, 0x09, 0x00, 0xED, 0x01, 0xB1, 0x00, 0xED, 0x00, 0x08, 0x00, 0x28, 0x00, 0x29, 0x04, 0x00, 0x28, 0x01, 0x00, 0x29, 0x21, 0x00, 0x28, 0x84, 0x00, 0x49, 0x01, 0x0E, 0x01, 0x91, 0x01, 0x0E, 0x00, 0x69, 0x2B, 0x00, 0x28, 0x83, 0x00, 0xED, 0x01, 0xB1, 0x00, 0xEC, 0x00, 0x08, 0x01, 0x00, 0x28, 0x82, 0x00, 0x29, 0x00, 0x08, 0x00, 0x29, 0x1F, 0x00, 0x28, 0x04, 0x00, 0x29, 0x84, 0x00, 0x28, 0x00, 0x29, 0x00, 0xAB, 0x01, 0xB1, 0x00, 0xAC, 0x02, 0x00, 0x29, 0x80, 0x00, 0x28, 0x02, 0x00, 0x29, 0x80, 0x00, 0x28, 0x21, 0x00, 0x29, 0x80, 0x00, 0x28, 0x01, 0x00, 0x29, 0x82, 0x00, 0x6A, 0x01, 0xB1, 0x00, 0x6A, 0x2C, 0x00, 0x29, 0x82, 0x00, 0x4A, 0x01, 0xB1, 0x00, 0x6A, 0x2D, 0x00, 0x29, 0x80, 0x01, 0xB1, 0x2F, 0x00, 0x29, 0x81, 0x00, 0xED, 0x01, 0x2E, 0x28, 0x00, 0x29, 0x80, 0x00, 0x28, 0x03, 0x00, 0x29, 0x81, 0x01, 0x2E, 0x01, 0x6F, 0x03, 0x00, 0x29, 0x80, 0x00, 0x28, 0x02, 0x00, 0x29, 0x80, 0x00, 0x28, 0x0F, 0x00, 0x29, 0x0F, 0x00, 0x28, 0x01, 0x00, 0x29, 0x85, + 0x00, 0x28, 0x00, 0x29, 0x00, 0x49, 0x01, 0x2E, 0x01, 0x6F, 0x00, 0x29, 0x01, 0x00, 0x28, 0x02, 0x00, 0x29, 0x80, 0x00, 0x09, 0x19, 0x00, 0x28, 0x80, 0x00, 0x08, 0x07, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x00, 0x28, 0x83, 0x00, 0x6A, 0x01, 0x4F, 0x01, 0x70, 0x00, 0x8A, 0x27, 0x00, 0x28, 0x84, 0x00, 0x29, 0x00, 0xED, 0x01, 0x90, 0x01, 0x0E, 0x00, 0x4A, 0x26, 0x00, 0x28, 0x80, 0x00, 0x08, 0x02, 0x00, 0x28, 0x86, 0x00, 0x29, 0x00, 0x6A, 0x01, 0x6F, 0x01, 0x4F, 0x00, 0x6A, 0x00, 0x28, 0x00, 0x29, 0x04, 0x00, 0x28, 0x80, 0x00, 0x29, 0x24, 0x00, 0x28, 0x82, 0x00, 0xCC, 0x01, 0x90, 0x00, 0x8A, 0x2C, 0x00, 0x28, 0x82, 0x00, 0x49, 0x01, 0x90, 0x00, 0xCC, 0x02, 0x00, 0x28, 0x02, 0x00, 0x29, 0x02, 0x00, 0x28, 0x80, 0x00, 0x29, 0x21, 0x00, 0x28, 0x83, 0x00, 0x29, 0x00, 0x28, 0x00, 0xCC, 0x01, 0x2E, 0x2E, 0x00, 0x29, 0x80, 0x01, 0xB1, 0x22, 0x00, 0x29, 0x09, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x00, 0x28, 0x82, 0x00, 0x4A, 0x01, 0xB1, 0x00, 0x49, 0x07, 0x00, 0x28, 0x80, 0x00, 0x29, 0x1F, 0x00, 0x28, 0x81, 0x00, 0x29, 0x00, 0x28, 0x01, 0x00, 0x29, 0x82, 0x00, 0x28, 0x01, 0x6F, 0x00, 0xED, 0x04, 0x00, 0x28, 0x85, 0x00, 0x08, 0x00, 0x29, 0x00, 0x28, 0x00, 0x29, 0x00, 0x28, 0x00, 0x08, 0x1E, 0x00, 0x28, 0x80, 0x00, 0x08, 0x02, 0x00, 0x28, 0x84, 0x01, 0x0D, 0x01, 0x90, 0x00, 0x6A, 0x00, 0x28, 0x00, 0x29, 0x01, 0x00, 0x28, 0x82, 0x00, 0x29, 0x00, 0x28, 0x00, 0x29, 0x25, 0x00, 0x28, 0x83, 0x00, 0xCC, 0x01, 0x90, 0x00, 0xED, 0x00, 0x49, + 0x1E, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x00, 0x28, 0x86, 0x00, 0x29, 0x00, 0x28, 0x00, 0x49, 0x00, 0xED, 0x01, 0x90, 0x01, 0x2F, 0x00, 0x69, 0x24, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x00, 0x28, 0x80, 0x00, 0x29, 0x02, 0x00, 0x28, 0x83, 0x00, 0x29, 0x00, 0xEC, 0x01, 0xB0, 0x00, 0xED, 0x04, 0x00, 0x28, 0x80, 0x00, 0x29, 0x05, 0x00, 0x28, 0x80, 0x00, 0x29, 0x20, 0x00, 0x28, 0x82, 0x01, 0x0E, 0x01, 0x90, 0x00, 0x6A, 0x2B, 0x00, 0x28, 0x81, 0x00, 0x29, 0x00, 0x28, 0x01, 0x01, 0x2E, 0x81, 0x00, 0x28, 0x00, 0x29, 0x2B, 0x00, 0x28, 0x82, 0x00, 0x29, 0x01, 0x6F, 0x00, 0xAB, 0x2E, 0x00, 0x28, 0x80, 0x01, 0xB1, 0x30, 0x00, 0x28, 0x81, 0x01, 0x2E, 0x00, 0xEC, 0x27, 0x00, 0x28, 0x80, 0x00, 0x29, 0x04, 0x00, 0x28, 0x85, 0x00, 0x49, 0x01, 0x90, 0x00, 0xAB, 0x00, 0x29, 0x00, 0x28, 0x00, 0x29, 0x05, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x00, 0x28, 0x80, 0x00, 0x29, 0x1D, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x00, 0x28, 0x82, 0x00, 0xCC, 0x01, 0x90, 0x00, 0xAB, 0x03, 0x00, 0x28, 0x80, 0x00, 0x08, 0x1C, 0x00, 0x28, 0x80, 0x00, 0x08, 0x08, 0x00, 0x28, 0x86, 0x00, 0x29, 0x00, 0x49, 0x01, 0x4E, 0x01, 0x70, 0x00, 0x8B, 0x00, 0x28, 0x00, 0x29, 0x1C, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x00, 0x28, 0x83, 0x00, 0xCC, 0x01, 0x90, 0x01, 0x4F, 0x00, 0x8A, 0x03, 0x00, 0x28, 0x80, 0x00, 0x29, 0x27, 0x00, 0x28, 0x83, 0x00, 0x8A, 0x01, 0x4F, 0x01, 0x2F, 0x00, 0x6A, 0x2C, 0x00, 0x28, 0x83, 0x00, 0x29, 0x01, 0x2E, 0x01, 0x4F, 0x00, 0x49, 0x07, 0x00, + 0x28, 0x80, 0x00, 0x29, 0x02, 0x00, 0x28, 0x80, 0x00, 0x08, 0x20, 0x00, 0x28, 0x82, 0x00, 0xCC, 0x01, 0x6F, 0x00, 0x49, 0x2D, 0x00, 0x28, 0x81, 0x00, 0x6A, 0x01, 0x90, 0x2F, 0x00, 0x28, 0x80, 0x01, 0xB1, 0x2F, 0x00, 0x28, 0x82, 0x00, 0x29, 0x00, 0x8B, 0x01, 0x8F, 0x2B, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x00, 0x28, 0x82, 0x00, 0xAB, 0x01, 0x90, 0x00, 0x6A, 0x0A, 0x00, 0x28, 0x80, 0x00, 0x08, 0x1A, 0x00, 0x28, 0x80, 0x00, 0x29, 0x04, 0x00, 0x28, 0x85, 0x00, 0x29, 0x00, 0xAC, 0x01, 0x90, 0x00, 0xAC, 0x00, 0x28, 0x00, 0x29, 0x2B, 0x00, 0x28, 0x83, 0x00, 0xAC, 0x01, 0x90, 0x01, 0x2E, 0x00, 0x49, 0x19, 0x00, 0x28, 0x80, 0x00, 0x29, 0x02, 0x00, 0x28, 0x83, 0x00, 0xCB, 0x01, 0x70, 0x01, 0x4F, 0x00, 0x8A, 0x29, 0x00, 0x28, 0x86, 0x00, 0x29, 0x00, 0x09, 0x00, 0x28, 0x00, 0x49, 0x00, 0xED, 0x01, 0x90, 0x00, 0xCC, 0x2B, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x00, 0x28, 0x01, 0x01, 0x4F, 0x80, 0x00, 0x49, 0x03, 0x00, 0x28, 0x80, 0x00, 0x08, 0x28, 0x00, 0x28, 0x82, 0x00, 0x6A, 0x01, 0x90, 0x00, 0x6A, 0x03, 0x00, 0x28, 0x80, 0x00, 0x08, 0x29, 0x00, 0x28, 0x81, 0x01, 0x0E, 0x00, 0xED, 0x2F, 0x00, 0x28, 0x80, 0x01, 0xB1, 0x2A, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x00, 0x28, 0x80, 0x00, 0x29, 0x02, 0x00, 0x28, 0x82, 0x01, 0x70, 0x00, 0x8A, 0x00, 0x29, 0x2D, 0x00, 0x28, 0x83, 0x00, 0xED, 0x01, 0x4F, 0x00, 0x48, 0x00, 0x29, 0x02, 0x00, 0x28, 0x80, 0x00, 0x29, 0x28, 0x00, 0x28, 0x82, 0x00, 0x6A, 0x01, 0x90, 0x01, 0x0D, 0x03, 0x00, 0x28, + 0x80, 0x00, 0x29, 0x28, 0x00, 0x28, 0x83, 0x00, 0x49, 0x01, 0x2E, 0x01, 0x90, 0x00, 0xAB, 0x01, 0x00, 0x28, 0x80, 0x00, 0x29, 0x05, 0x00, 0x28, 0x80, 0x00, 0x29, 0x0E, 0x00, 0x28, 0x82, 0x00, 0x08, 0x00, 0x28, 0x00, 0xAC, 0x01, 0x01, 0x70, 0x80, 0x00, 0x8B, 0x2A, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x00, 0x28, 0x83, 0x00, 0x8A, 0x01, 0x6F, 0x01, 0x4E, 0x00, 0x69, 0x2A, 0x00, 0x28, 0x85, 0x00, 0x08, 0x00, 0x29, 0x00, 0x28, 0x00, 0x6A, 0x01, 0x70, 0x01, 0x0E, 0x2E, 0x00, 0x28, 0x82, 0x00, 0x48, 0x01, 0x90, 0x00, 0xAB, 0x2D, 0x00, 0x28, 0x83, 0x00, 0x08, 0x00, 0x28, 0x01, 0x90, 0x00, 0x6A, 0x2F, 0x00, 0x28, 0x80, 0x01, 0xB1, 0x30, 0x00, 0x28, 0x83, 0x00, 0x29, 0x00, 0xCD, 0x01, 0x0D, 0x00, 0x08, 0x2E, 0x00, 0x28, 0x82, 0x01, 0x2F, 0x01, 0x2E, 0x00, 0x08, 0x02, 0x00, 0x28, 0x80, 0x00, 0x08, 0x29, 0x00, 0x28, 0x83, 0x00, 0x49, 0x01, 0x4F, 0x01, 0x0E, 0x00, 0x49, 0x2D, 0x00, 0x28, 0x83, 0x00, 0xAB, 0x01, 0x90, 0x01, 0x0E, 0x00, 0x29, 0x03, 0x00, 0x28, 0x80, 0x00, 0x29, 0x11, 0x00, 0x28, 0x80, 0x00, 0x8A, 0x01, 0x01, 0x6F, 0x80, 0x00, 0xAC, 0x27, 0x00, 0x28, 0x81, 0x00, 0x29, 0x00, 0x08, 0x03, 0x00, 0x28, 0x83, 0x00, 0x48, 0x01, 0x0D, 0x01, 0x90, 0x00, 0xCC, 0x2E, 0x00, 0x28, 0x82, 0x00, 0x6A, 0x01, 0x90, 0x00, 0xED, 0x28, 0x00, 0x28, 0x01, 0x00, 0x08, 0x04, 0x00, 0x28, 0x81, 0x01, 0x4F, 0x01, 0x0D, 0x2E, 0x00, 0x28, 0x84, 0x00, 0x29, 0x00, 0xCB, 0x01, 0x6F, 0x00, 0x28, 0x00, 0x29, 0x01, 0x00, 0x28, 0x80, 0x00, 0x29, 0x2B, + 0x00, 0x28, 0x80, 0x01, 0xB1, 0x2C, 0x00, 0x28, 0x80, 0x00, 0x08, 0x03, 0x00, 0x28, 0x82, 0x00, 0x69, 0x01, 0xB1, 0x00, 0x49, 0x2E, 0x00, 0x28, 0x82, 0x00, 0x49, 0x01, 0x70, 0x00, 0xCC, 0x2B, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x01, 0x4F, 0x81, 0x00, 0x49, 0x00, 0x29, 0x04, 0x00, 0x28, 0x80, 0x00, 0x29, 0x21, 0x00, 0x28, 0x80, 0x00, 0x08, 0x03, 0x00, 0x28, 0x83, 0x00, 0x29, 0x01, 0x0D, 0x01, 0xB0, 0x00, 0xCC, 0x13, 0x00, 0x28, 0x83, 0x00, 0x8B, 0x01, 0x4F, 0x01, 0x70, 0x00, 0xAB, 0x01, 0x00, 0x28, 0x80, 0x00, 0x29, 0x29, 0x00, 0x28, 0x85, 0x00, 0x29, 0x00, 0x28, 0x00, 0x8B, 0x01, 0x70, 0x01, 0x4E, 0x00, 0x49, 0x2E, 0x00, 0x28, 0x82, 0x00, 0xAB, 0x01, 0x91, 0x00, 0xAB, 0x02, 0x00, 0x28, 0x80, 0x00, 0x29, 0x2A, 0x00, 0x28, 0x86, 0x00, 0x29, 0x00, 0xEC, 0x01, 0x6F, 0x00, 0x49, 0x00, 0x08, 0x00, 0x28, 0x00, 0x29, 0x02, 0x00, 0x28, 0x80, 0x00, 0x29, 0x27, 0x00, 0x28, 0x82, 0x00, 0x29, 0x01, 0x2E, 0x00, 0xCC, 0x01, 0x00, 0x28, 0x80, 0x00, 0x29, 0x2D, 0x00, 0x28, 0x80, 0x01, 0xB1, 0x2E, 0x00, 0x28, 0x80, 0x00, 0x29, 0x02, 0x00, 0x28, 0x81, 0x01, 0x2E, 0x00, 0xCC, 0x03, 0x00, 0x28, 0x80, 0x00, 0x29, 0x2A, 0x00, 0x28, 0x82, 0x00, 0x6A, 0x01, 0x91, 0x00, 0x8A, 0x2C, 0x00, 0x28, 0x80, 0x00, 0x08, 0x01, 0x00, 0x28, 0x83, 0x01, 0x0E, 0x01, 0x70, 0x00, 0x6A, 0x00, 0x08, 0x04, 0x00, 0x28, 0x80, 0x00, 0x29, 0x27, 0x00, 0x28, 0x83, 0x00, 0x8A, 0x01, 0x70, 0x01, 0x4F, 0x00, 0x4A, 0x02, 0x00, 0x28, + 0x80, 0x00, 0x29, 0x0C, 0x00, 0x28, 0x83, 0x01, 0x2F, 0x01, 0x90, 0x00, 0xEC, 0x00, 0x29, 0x2D, 0x00, 0x28, 0x85, 0x00, 0x49, 0x01, 0x2E, 0x01, 0x90, 0x00, 0xAB, 0x00, 0x28, 0x00, 0x29, 0x2D, 0x00, 0x28, 0x82, 0x00, 0xED, 0x01, 0x90, 0x00, 0x6A, 0x01, 0x00, 0x28, 0x82, 0x00, 0x29, 0x00, 0x28, 0x00, 0x29, 0x26, 0x00, 0x28, 0x80, 0x00, 0x29, 0x02, 0x00, 0x28, 0x84, 0x00, 0xAA, 0x01, 0x90, 0x00, 0x8A, 0x00, 0x28, 0x00, 0x29, 0x2D, 0x00, 0x28, 0x83, 0x00, 0x49, 0x01, 0xB1, 0x00, 0x49, 0x00, 0x08, 0x01, 0x00, 0x28, 0x80, 0x00, 0x29, 0x2C, 0x00, 0x28, 0x80, 0x01, 0xB1, 0x2C, 0x00, 0x28, 0x80, 0x00, 0x29, 0x03, 0x00, 0x28, 0x82, 0x00, 0x29, 0x00, 0xAB, 0x01, 0x70, 0x01, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x00, 0x28, 0x80, 0x00, 0x08, 0x2A, 0x00, 0x28, 0x83, 0x00, 0xAC, 0x01, 0x90, 0x00, 0x48, 0x00, 0x29, 0x2A, 0x00, 0x28, 0x80, 0x00, 0x29, 0x02, 0x00, 0x28, 0x82, 0x00, 0xEC, 0x01, 0x90, 0x00, 0x8B, 0x01, 0x00, 0x28, 0x80, 0x00, 0x29, 0x27, 0x00, 0x28, 0x01, 0x00, 0x29, 0x01, 0x00, 0x28, 0x83, 0x00, 0x48, 0x00, 0xED, 0x01, 0x90, 0x00, 0xCC, 0x0F, 0x00, 0x28, 0x81, 0x00, 0xEC, 0x00, 0x49, 0x2A, 0x00, 0x28, 0x87, 0x00, 0x29, 0x00, 0x28, 0x00, 0x29, 0x00, 0x08, 0x00, 0xAB, 0x01, 0x90, 0x01, 0x2E, 0x00, 0x49, 0x2F, 0x00, 0x28, 0x82, 0x01, 0x0E, 0x01, 0x70, 0x00, 0x6A, 0x2C, 0x00, 0x28, 0x80, 0x00, 0x29, 0x01, 0x00, 0x28, 0x82, 0x00, 0x69, 0x01, 0x90, 0x00, 0x8B, 0x05, 0x00, 0x28, 0x80, 0x00, 0x29, 0x29, 0x00, 0x28, 0x81, 0x00, + 0xED, 0x01, 0x0E, 0x31, 0x00, 0x28, 0x80, 0x01, 0xB1, 0x32, 0x00, 0x28, 0x82, 0x00, 0x29, 0x01, 0x90, 0x00, 0x6A, 0x30, 0x00, 0x28, 0x81, 0x01, 0x0D, 0x01, 0x4F, 0x2D, 0x00, 0x28, 0x01, 0x00, 0x29, 0x83, 0x00, 0x08, 0x00, 0xCB, 0x01, 0x91, 0x00, 0xCC, 0x2B, 0x00, 0x28, 0x80, 0x00, 0x29, 0x02, 0x00, 0x28, 0x83, 0x00, 0x6B, 0x01, 0x4F, 0x01, 0x4E, 0x00, 0x6A, 0x12, 0x00, 0x28, 0x80, 0x00, 0x29, 0x28, 0x00, 0x28, 0x83, 0x00, 0x49, 0x01, 0x2E, 0x01, 0x90, 0x00, 0xAB, 0x02, 0x00, 0x28, 0x80, 0x00, 0x29, 0x2C, 0x00, 0x28, 0x83, 0x01, 0x2F, 0x01, 0x4F, 0x00, 0x29, 0x00, 0x28, 0x01, 0x00, 0x29, 0x2D, 0x00, 0x28, 0x85, 0x01, 0x4F, 0x00, 0xED, 0x00, 0x29, 0x00, 0x28, 0x00, 0x08, 0x00, 0x29, 0x04, 0x00, 0x28, 0x80, 0x00, 0x29, 0x27, 0x00, 0x28, 0x81, 0x01, 0x70, 0x00, 0x8A, 0x31, 0x00, 0x28, 0x80, 0x01, 0xB1, 0x2D, 0x00, 0x28, 0x87, 0x00, 0x29, 0x00, 0x28, 0x00, 0x29, 0x00, 0x28, 0x00, 0x29, 0x00, 0x28, 0x00, 0xED, 0x01, 0x0E, 0x02, 0x00, 0x28, 0x80, 0x00, 0x29, 0x2C, 0x00, 0x28, 0x82, 0x00, 0x49, 0x01, 0x4F, 0x00, 0xED, 0x30, 0x00, 0x28, 0x82, 0x00, 0x6A, 0x01, 0x90, 0x00, 0xED, 0x28, 0x00, 0x28, 0x80, 0x00, 0x08, 0x06, 0x00, 0x28, 0x82, 0x00, 0xED, 0x01, 0x91, 0x00, 0xED, 0x0C, 0x00, 0x28, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x5F, 0x00, 0x00 +}; + +const tImage MarlinLogo480x320x16 = MARLIN_LOGO_CHOSEN(480, 320); + +#endif // HAS_GRAPHICAL_TFT && SHOW_BOOTSCREEN diff --git a/Marlin/src/lcd/tft/images/btn_rounded_42x39x4.cpp b/Marlin/src/lcd/tft/images/btn_rounded_42x39x4.cpp index 7045558df5..758ba1b0ea 100644 --- a/Marlin/src/lcd/tft/images/btn_rounded_42x39x4.cpp +++ b/Marlin/src/lcd/tft/images/btn_rounded_42x39x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t btn_rounded_42x39x4[]; -const tImage BtnRounded_42x39x4 = { (void *)btn_rounded_42x39x4, 42, 39, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t btn_rounded_42x39x4[819] = { 0x87, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, @@ -70,4 +68,6 @@ const uint8_t btn_rounded_42x39x4[819] = { 0x87, 0x87, 0x77, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x67, 0x78 }; +const tImage BtnRounded_42x39x4 = { (void *)btn_rounded_42x39x4, 42, 39, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/btn_rounded_64x52x4.cpp b/Marlin/src/lcd/tft/images/btn_rounded_64x52x4.cpp index c0892a6a6d..20ca0ed16a 100644 --- a/Marlin/src/lcd/tft/images/btn_rounded_64x52x4.cpp +++ b/Marlin/src/lcd/tft/images/btn_rounded_64x52x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t btn_rounded_64x52x4[]; -const tImage BtnRounded_64x52x4 = { (void *)btn_rounded_64x52x4, 64, 52, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t btn_rounded_64x52x4[1664] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -83,4 +81,6 @@ const uint8_t btn_rounded_64x52x4[1664] = { 0x88, 0x88, 0x77, 0x77, 0x76, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x67, 0x77, 0x78, }; +const tImage BtnRounded_64x52x4 = { (void *)btn_rounded_64x52x4, 64, 52, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/cancel_64x64x4.cpp b/Marlin/src/lcd/tft/images/cancel_64x64x4.cpp index 9198c4b717..0188bb416d 100644 --- a/Marlin/src/lcd/tft/images/cancel_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/cancel_64x64x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t cancel_64x64x4[]; -const tImage Cancel_64x64x4 = { (void *)cancel_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t cancel_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -95,4 +93,6 @@ const uint8_t cancel_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Cancel_64x64x4 = { (void *)cancel_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/chamber_64x64x4.cpp b/Marlin/src/lcd/tft/images/chamber_64x64x4.cpp index 8def3df406..33fe14db1f 100644 --- a/Marlin/src/lcd/tft/images/chamber_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/chamber_64x64x4.cpp @@ -21,13 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t chamber_64x64x4[], chamber_heated_64x64x4[]; -const tImage Chamber_64x64x4 = { (void *)chamber_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Chamber_Heated_64x64x4 = { (void *)chamber_heated_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t chamber_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -163,4 +160,7 @@ const uint8_t chamber_heated_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Chamber_64x64x4 = { (void *)chamber_64x64x4, 64, 64, GREYSCALE4 }; +const tImage Chamber_Heated_64x64x4 = { (void *)chamber_heated_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/confirm_64x64x4.cpp b/Marlin/src/lcd/tft/images/confirm_64x64x4.cpp index 2c3da6fb79..3cfa44d4eb 100644 --- a/Marlin/src/lcd/tft/images/confirm_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/confirm_64x64x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t confirm_64x64x4[]; -const tImage Confirm_64x64x4 = { (void *)confirm_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t confirm_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -95,4 +93,6 @@ const uint8_t confirm_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Confirm_64x64x4 = { (void *)confirm_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/decrease_64x64x4.cpp b/Marlin/src/lcd/tft/images/decrease_64x64x4.cpp index dd85a1e66c..d810fd55a8 100644 --- a/Marlin/src/lcd/tft/images/decrease_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/decrease_64x64x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t decrease_64x64x4[]; -const tImage Decrease_64x64x4 = { (void *)decrease_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t decrease_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -95,4 +93,6 @@ const uint8_t decrease_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Decrease_64x64x4 = { (void *)decrease_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/directory_32x32x4.cpp b/Marlin/src/lcd/tft/images/directory_32x32x4.cpp index 847eafd6d4..9bf2ca44c4 100644 --- a/Marlin/src/lcd/tft/images/directory_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/directory_32x32x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t directory_32x32x4[]; -const tImage Directory_32x32x4 = { (void *)directory_32x32x4, 32, 32, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t directory_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -63,4 +61,6 @@ const uint8_t directory_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Directory_32x32x4 = { (void *)directory_32x32x4, 32, 32, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/down_32x32x4.cpp b/Marlin/src/lcd/tft/images/down_32x32x4.cpp index 2ea8cc33c0..44582e9928 100644 --- a/Marlin/src/lcd/tft/images/down_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/down_32x32x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t down_32x32x4[]; -const tImage Down_32x32x4 = { (void *)down_32x32x4, 32, 32, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t down_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -63,4 +61,6 @@ const uint8_t down_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Down_32x32x4 = { (void *)down_32x32x4, 32, 32, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/fan_64x64x4.cpp b/Marlin/src/lcd/tft/images/fan_64x64x4.cpp index f4a09afe2b..71384332e5 100644 --- a/Marlin/src/lcd/tft/images/fan_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/fan_64x64x4.cpp @@ -21,13 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t fan0_64x64x4[], fan1_64x64x4[]; -const tImage Fan0_64x64x4 = { (void *)fan0_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Fan1_64x64x4 = { (void *)fan1_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t fan0_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -163,4 +160,7 @@ const uint8_t fan1_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Fan0_64x64x4 = { (void *)fan0_64x64x4, 64, 64, GREYSCALE4 }; +const tImage Fan1_64x64x4 = { (void *)fan1_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/fan_fast_64x64x4.cpp b/Marlin/src/lcd/tft/images/fan_fast_64x64x4.cpp index e5b4bf3ae8..7d17f49b57 100644 --- a/Marlin/src/lcd/tft/images/fan_fast_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/fan_fast_64x64x4.cpp @@ -21,13 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t fan_fast0_64x64x4[], fan_fast1_64x64x4[]; -const tImage Fan_Fast0_64x64x4 = { (void *)fan_fast0_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Fan_Fast1_64x64x4 = { (void *)fan_fast1_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t fan_fast0_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -163,4 +160,7 @@ const uint8_t fan_fast1_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Fan_Fast0_64x64x4 = { (void *)fan_fast0_64x64x4, 64, 64, GREYSCALE4 }; +const tImage Fan_Fast1_64x64x4 = { (void *)fan_fast1_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/fan_slow_64x64x4.cpp b/Marlin/src/lcd/tft/images/fan_slow_64x64x4.cpp index 009a7572a7..d5c071eb18 100644 --- a/Marlin/src/lcd/tft/images/fan_slow_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/fan_slow_64x64x4.cpp @@ -21,13 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t fan_slow0_64x64x4[], fan_slow1_64x64x4[]; -const tImage Fan_Slow0_64x64x4 = { (void *)fan_slow0_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Fan_Slow1_64x64x4 = { (void *)fan_slow1_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t fan_slow0_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -163,4 +160,7 @@ const uint8_t fan_slow1_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Fan_Slow0_64x64x4 = { (void *)fan_slow0_64x64x4, 64, 64, GREYSCALE4 }; +const tImage Fan_Slow1_64x64x4 = { (void *)fan_slow1_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/feedrate_32x32x4.cpp b/Marlin/src/lcd/tft/images/feedrate_32x32x4.cpp index c5a51c49a7..d60667a427 100644 --- a/Marlin/src/lcd/tft/images/feedrate_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/feedrate_32x32x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t feedrate_32x32x4[]; -const tImage Feedrate_32x32x4 = { (void *)feedrate_32x32x4, 32, 32, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t feedrate_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x87, 0x77, 0x77, 0x78, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -63,4 +61,6 @@ const uint8_t feedrate_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x77, 0x66, 0x66, 0x66, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Feedrate_32x32x4 = { (void *)feedrate_32x32x4, 32, 32, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/flowrate_32x32x4.cpp b/Marlin/src/lcd/tft/images/flowrate_32x32x4.cpp index ae98ed235b..21e5a95805 100644 --- a/Marlin/src/lcd/tft/images/flowrate_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/flowrate_32x32x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t flowrate_32x32x4[]; -const tImage Flowrate_32x32x4 = { (void *)flowrate_32x32x4, 32, 32, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t flowrate_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -63,4 +61,6 @@ const uint8_t flowrate_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x77, 0x78, 0x88, 0x88, 0x88, 0x88 }; +const tImage Flowrate_32x32x4 = { (void *)flowrate_32x32x4, 32, 32, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/heated_bed_64x64x4.cpp b/Marlin/src/lcd/tft/images/heated_bed_64x64x4.cpp index 486c5dfaa1..aeeb064350 100644 --- a/Marlin/src/lcd/tft/images/heated_bed_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/heated_bed_64x64x4.cpp @@ -21,13 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t bed_64x64x4[], bed_heated_64x64x4[]; -const tImage Bed_64x64x4 = { (void *)bed_64x64x4, 64, 64, GREYSCALE4 }; -const tImage Bed_Heated_64x64x4 = { (void *)bed_heated_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t bed_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -163,4 +160,7 @@ const uint8_t bed_heated_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Bed_64x64x4 = { (void *)bed_64x64x4, 64, 64, GREYSCALE4 }; +const tImage Bed_Heated_64x64x4 = { (void *)bed_heated_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/home_64x64x4.cpp b/Marlin/src/lcd/tft/images/home_64x64x4.cpp index a98978ff25..7fe62d4bd9 100644 --- a/Marlin/src/lcd/tft/images/home_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/home_64x64x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t home_64x64x4[]; -const tImage Home_64x64x4 = { (void *)home_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t home_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -95,4 +93,6 @@ const uint8_t home_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Home_64x64x4 = { (void *)home_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/hotend_64x64x4.cpp b/Marlin/src/lcd/tft/images/hotend_64x64x4.cpp index f3829dd89e..536932eed2 100644 --- a/Marlin/src/lcd/tft/images/hotend_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/hotend_64x64x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t hotend_64x64x4[]; -const tImage HotEnd_64x64x4 = { (void *)hotend_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t hotend_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -95,4 +93,6 @@ const uint8_t hotend_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage HotEnd_64x64x4 = { (void *)hotend_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/increase_64x64x4.cpp b/Marlin/src/lcd/tft/images/increase_64x64x4.cpp index 58b43cf661..b2b27495f6 100644 --- a/Marlin/src/lcd/tft/images/increase_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/increase_64x64x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t increase_64x64x4[]; -const tImage Increase_64x64x4 = { (void *)increase_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t increase_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -95,4 +93,6 @@ const uint8_t increase_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Increase_64x64x4 = { (void *)increase_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/left_32x32x4.cpp b/Marlin/src/lcd/tft/images/left_32x32x4.cpp index b1d750a812..f8f05a2ed3 100644 --- a/Marlin/src/lcd/tft/images/left_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/left_32x32x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t left_32x32x4[]; -const tImage Left_32x32x4 = { (void *)left_32x32x4, 32, 32, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t left_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -63,4 +61,6 @@ const uint8_t left_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Left_32x32x4 = { (void *)left_32x32x4, 32, 32, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/leveling_32x32x4.cpp b/Marlin/src/lcd/tft/images/leveling_32x32x4.cpp index 0863feafba..079f5acbf5 100644 --- a/Marlin/src/lcd/tft/images/leveling_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/leveling_32x32x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t leveling_32x32x4[]; -const tImage Leveling_32x32x4 = { (void *)leveling_32x32x4, 32, 32, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t leveling_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -63,4 +61,6 @@ const uint8_t leveling_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Leveling_32x32x4 = { (void *)leveling_32x32x4, 32, 32, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/menu_64x64x4.cpp b/Marlin/src/lcd/tft/images/menu_64x64x4.cpp index 2c4454148e..7e40f8543f 100644 --- a/Marlin/src/lcd/tft/images/menu_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/menu_64x64x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t menu_64x64x4[]; -const tImage Menu_64x64x4 = { (void *)menu_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t menu_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -95,4 +93,6 @@ const uint8_t menu_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Menu_64x64x4 = { (void *)menu_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/pause_64x64x4.cpp b/Marlin/src/lcd/tft/images/pause_64x64x4.cpp index 430fa8422c..8ab0e509c1 100644 --- a/Marlin/src/lcd/tft/images/pause_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/pause_64x64x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t pause_64x64x4[]; -const tImage Pause_64x64x4 = { (void *)pause_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t pause_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -95,4 +93,6 @@ const uint8_t pause_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Pause_64x64x4 = { (void *)pause_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/refresh_32x32x4.cpp b/Marlin/src/lcd/tft/images/refresh_32x32x4.cpp index 223e659233..df513022e0 100644 --- a/Marlin/src/lcd/tft/images/refresh_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/refresh_32x32x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t refresh_32x32x4[]; -const tImage Refresh_32x32x4 = { (void *)refresh_32x32x4, 32, 32, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t refresh_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -63,4 +61,6 @@ const uint8_t refresh_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Refresh_32x32x4 = { (void *)refresh_32x32x4, 32, 32, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/right_32x32x4.cpp b/Marlin/src/lcd/tft/images/right_32x32x4.cpp index 67d1496787..e08f02a1e6 100644 --- a/Marlin/src/lcd/tft/images/right_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/right_32x32x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t right_32x32x4[]; -const tImage Right_32x32x4 = { (void *)right_32x32x4, 32, 32, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t right_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -63,4 +61,6 @@ const uint8_t right_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Right_32x32x4 = { (void *)right_32x32x4, 32, 32, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/sd_64x64x4.cpp b/Marlin/src/lcd/tft/images/sd_64x64x4.cpp index 805021f21b..c855019d08 100644 --- a/Marlin/src/lcd/tft/images/sd_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/sd_64x64x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t sd_64x64x4[]; -const tImage SD_64x64x4 = { (void *)sd_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" extern const uint8_t sd_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -95,4 +93,6 @@ extern const uint8_t sd_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage SD_64x64x4 = { (void *)sd_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/settings_64x64x4.cpp b/Marlin/src/lcd/tft/images/settings_64x64x4.cpp index 0817405143..a55b258a56 100644 --- a/Marlin/src/lcd/tft/images/settings_64x64x4.cpp +++ b/Marlin/src/lcd/tft/images/settings_64x64x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t settings_64x64x4[]; -const tImage Settings_64x64x4 = { (void *)settings_64x64x4, 64, 64, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t settings_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -95,4 +93,6 @@ const uint8_t settings_64x64x4[2048] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Settings_64x64x4 = { (void *)settings_64x64x4, 64, 64, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/slider_8x16x4.cpp b/Marlin/src/lcd/tft/images/slider_8x16x4.cpp index e3d6298aa2..2a88f931b2 100644 --- a/Marlin/src/lcd/tft/images/slider_8x16x4.cpp +++ b/Marlin/src/lcd/tft/images/slider_8x16x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t slider_8x16x4[]; -const tImage Slider8x16x4 = { (void *)slider_8x16x4, 8, 16, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t slider_8x16x4[64] = { 0x88, 0xFF, 0xFF, 0x88, @@ -47,4 +45,6 @@ const uint8_t slider_8x16x4[64] = { 0x88, 0xFF, 0xFF, 0x88, }; +const tImage Slider8x16x4 = { (void *)slider_8x16x4, 8, 16, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/time_elapsed_32x32x4.cpp b/Marlin/src/lcd/tft/images/time_elapsed_32x32x4.cpp index 4ba462431f..b5d35e1dbc 100644 --- a/Marlin/src/lcd/tft/images/time_elapsed_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/time_elapsed_32x32x4.cpp @@ -17,12 +17,10 @@ **/ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t time_elapsed_32x32x4[]; -const tImage Time_Elapsed_32x32x4 = { (void *)time_elapsed_32x32x4, 32, 32, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t time_elapsed_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -58,4 +56,7 @@ const uint8_t time_elapsed_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x86, 0x56, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, }; + +const tImage Time_Elapsed_32x32x4 = { (void *)time_elapsed_32x32x4, 32, 32, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/time_remaining_32x32x4.cpp b/Marlin/src/lcd/tft/images/time_remaining_32x32x4.cpp index 7088e9dea3..8b433cfbe8 100644 --- a/Marlin/src/lcd/tft/images/time_remaining_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/time_remaining_32x32x4.cpp @@ -17,12 +17,10 @@ **/ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t time_remaining_32x32x4[]; -const tImage Time_Remaining_32x32x4 = { (void *)time_remaining_32x32x4, 32, 32, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t time_remaining_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -58,4 +56,7 @@ const uint8_t time_remaining_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x86, 0x56, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, }; + +const tImage Time_Remaining_32x32x4 = { (void *)time_remaining_32x32x4, 32, 32, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/images/up_32x32x4.cpp b/Marlin/src/lcd/tft/images/up_32x32x4.cpp index 9147ea9b2c..658730667c 100644 --- a/Marlin/src/lcd/tft/images/up_32x32x4.cpp +++ b/Marlin/src/lcd/tft/images/up_32x32x4.cpp @@ -21,12 +21,10 @@ */ #include "../../../inc/MarlinConfigPre.h" -#include "../tft_image.h" #if HAS_GRAPHICAL_TFT -extern const uint8_t up_32x32x4[]; -const tImage Up_32x32x4 = { (void *)up_32x32x4, 32, 32, GREYSCALE4 }; +#include "../tft_image.h" const uint8_t up_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, @@ -63,4 +61,6 @@ const uint8_t up_32x32x4[512] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88 }; +const tImage Up_32x32x4 = { (void *)up_32x32x4, 32, 32, GREYSCALE4 }; + #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/tft.h b/Marlin/src/lcd/tft/tft.h index 87dea453df..1c81585650 100644 --- a/Marlin/src/lcd/tft/tft.h +++ b/Marlin/src/lcd/tft/tft.h @@ -37,21 +37,21 @@ #define ENDIAN_COLOR(C) (C) #endif -#ifndef TFT_BUFFER_SIZE +#ifndef TFT_BUFFER_WORDS #ifdef STM32F103xB - #define TFT_BUFFER_SIZE 1024 + #define TFT_BUFFER_WORDS 1024 #elif defined(STM32F103xE) - #define TFT_BUFFER_SIZE 19200 // 320 * 60 + #define TFT_BUFFER_WORDS 19200 // 320 * 60 #elif defined(STM32F1) - #define TFT_BUFFER_SIZE 8192 + #define TFT_BUFFER_WORDS 8192 #else - #define TFT_BUFFER_SIZE 19200 // 320 * 60 + #define TFT_BUFFER_WORDS 19200 // 320 * 60 #endif #endif -#if TFT_BUFFER_SIZE > DMA_MAX_SIZE +#if TFT_BUFFER_WORDS > DMA_MAX_WORDS // DMA Count parameter is uint16_t - #error "TFT_BUFFER_SIZE can not exceed DMA_MAX_SIZE" + #error "TFT_BUFFER_WORDS can not exceed DMA_MAX_WORDS" #endif class TFT { @@ -62,7 +62,7 @@ class TFT { public: static TFT_Queue queue; - static uint16_t buffer[TFT_BUFFER_SIZE]; + static uint16_t buffer[TFT_BUFFER_WORDS]; static void init(); static void set_font(const uint8_t *Font) { string.set_font(Font); } diff --git a/Marlin/src/lcd/tft/tft_image.h b/Marlin/src/lcd/tft/tft_image.h index 7087ea44ba..06887ff8a6 100644 --- a/Marlin/src/lcd/tft/tft_image.h +++ b/Marlin/src/lcd/tft/tft_image.h @@ -23,7 +23,11 @@ #include "../../inc/MarlinConfigPre.h" -#include +#if ENABLED(COMPACT_MARLIN_BOOT_LOGO) + #define MARLIN_LOGO_CHOSEN(W,H) { (void *)marlin_logo_##W##x##H##x16_rle16, W, H, RLE16 } +#else + #define MARLIN_LOGO_CHOSEN(W,H) { (void *)marlin_logo_##W##x##H##x16, W, H, HIGHCOLOR } +#endif enum MarlinImage : uint8_t { imgBootScreen = 0x00, @@ -74,6 +78,9 @@ enum colorMode_t : uint8_t { GREYSCALE2, // 2 bits per pixel GREYSCALE4, // 4 bits per pixel HIGHCOLOR // 16 bits per pixel + #if ENABLED(COMPACT_MARLIN_BOOT_LOGO) + , RLE16 // RLE16 Compressed 16 bits per pixel row + #endif }; typedef colorMode_t ColorMode; @@ -98,8 +105,10 @@ extern const tImage NoLogo; extern const tImage MarlinLogo228x255x2; extern const tImage MarlinLogo228x255x4; extern const tImage MarlinLogo195x59x16; + extern const tImage MarlinLogo240x250x16; extern const tImage MarlinLogo320x240x16; extern const tImage MarlinLogo480x320x16; + extern const tImage MarlinLogo1024x600x16; #endif extern const tImage Background320x30x16; diff --git a/Marlin/src/lcd/tft/tft_queue.cpp b/Marlin/src/lcd/tft/tft_queue.cpp index f66418a25b..06de651287 100644 --- a/Marlin/src/lcd/tft/tft_queue.cpp +++ b/Marlin/src/lcd/tft/tft_queue.cpp @@ -86,9 +86,9 @@ void TFT_Queue::fill(queueTask_t *task) { task->state = TASK_STATE_IN_PROGRESS; } - if (task_parameters->count > DMA_MAX_SIZE) { - count = DMA_MAX_SIZE; - task_parameters->count -= DMA_MAX_SIZE; + if (task_parameters->count > DMA_MAX_WORDS) { + count = DMA_MAX_WORDS; + task_parameters->count -= DMA_MAX_WORDS; } else { count = task_parameters->count; diff --git a/Marlin/src/lcd/tft/ui_1024x600.h b/Marlin/src/lcd/tft/ui_1024x600.h index 669f1258b7..05f3fed1ec 100644 --- a/Marlin/src/lcd/tft/ui_1024x600.h +++ b/Marlin/src/lcd/tft/ui_1024x600.h @@ -55,9 +55,15 @@ #define BOOTSCREEN_LOGO_H 59 #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 70) #else - #define BOOTSCREEN_LOGO MarlinLogo480x320x16 - #define BOOTSCREEN_LOGO_W TFT_WIDTH - #define BOOTSCREEN_LOGO_H TFT_HEIGHT + #if ENABLED(BOOT_MARLIN_LOGO_HUGE) + #define BOOTSCREEN_LOGO MarlinLogo1024x600x16 + #define BOOTSCREEN_LOGO_W TFT_WIDTH + #define BOOTSCREEN_LOGO_H TFT_HEIGHT + #else + #define BOOTSCREEN_LOGO MarlinLogo480x320x16 + #define BOOTSCREEN_LOGO_W 480 + #define BOOTSCREEN_LOGO_H 320 + #endif #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 90) #endif #endif diff --git a/Marlin/src/lcd/tft/ui_240x320.h b/Marlin/src/lcd/tft/ui_240x320.h index c542e00e4f..7e41c05a96 100644 --- a/Marlin/src/lcd/tft/ui_240x320.h +++ b/Marlin/src/lcd/tft/ui_240x320.h @@ -55,10 +55,10 @@ #define BOOTSCREEN_LOGO_H 59 #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 48) #else - #define BOOTSCREEN_LOGO MarlinLogo320x240x16 - #define BOOTSCREEN_LOGO_W TFT_WIDTH - #define BOOTSCREEN_LOGO_H TFT_HEIGHT - #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 54) + #define BOOTSCREEN_LOGO MarlinLogo240x250x16 + #define BOOTSCREEN_LOGO_W 240 + #define BOOTSCREEN_LOGO_H 250 + #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 40) #endif #endif diff --git a/Marlin/src/lcd/tft/ui_480x320.h b/Marlin/src/lcd/tft/ui_480x320.h index 421fe03a18..a16ed8ad22 100644 --- a/Marlin/src/lcd/tft/ui_480x320.h +++ b/Marlin/src/lcd/tft/ui_480x320.h @@ -58,7 +58,7 @@ #define BOOTSCREEN_LOGO MarlinLogo480x320x16 #define BOOTSCREEN_LOGO_W TFT_WIDTH #define BOOTSCREEN_LOGO_H TFT_HEIGHT - #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 90) + #define BOOTSCREEN_SITE_URL_Y (TFT_HEIGHT - 36) #endif #endif diff --git a/Marlin/src/lcd/tft/ui_color_ui.cpp b/Marlin/src/lcd/tft/ui_color_ui.cpp index d2fc08a09c..a14f268d86 100644 --- a/Marlin/src/lcd/tft/ui_color_ui.cpp +++ b/Marlin/src/lcd/tft/ui_color_ui.cpp @@ -67,7 +67,7 @@ void MarlinUI::tft_idle() { tft.queue.reset(); tft.canvas(0, 0, TFT_WIDTH, TFT_HEIGHT); - TERN_(BOOT_MARLIN_LOGO_SMALL, tft.set_background(COLOR_BACKGROUND)); + tft.set_background(COLOR_BACKGROUND); tft.add_image(BOOTSCREEN_LOGO_X, BOOTSCREEN_LOGO_Y, imgBootScreen); #ifdef WEBSITE_URL tft_string.set(WEBSITE_URL); diff --git a/Marlin/src/lcd/tft_io/tft_io.h b/Marlin/src/lcd/tft_io/tft_io.h index b0d9421202..98ce740726 100644 --- a/Marlin/src/lcd/tft_io/tft_io.h +++ b/Marlin/src/lcd/tft_io/tft_io.h @@ -33,8 +33,8 @@ #error "TFT IO only supports SPI, FSMC or LTDC interface." #endif -#ifndef DMA_MAX_SIZE - #error "DMA_MAX_SIZE is not configured for this platform." +#ifndef DMA_MAX_WORDS + #error "DMA_MAX_WORDS is not configured for this platform." #endif #ifndef TFT_DRIVER diff --git a/Marlin/src/lcd/tft_io/tft_orientation.h b/Marlin/src/lcd/tft_io/tft_orientation.h index d85e6b12db..5315615799 100644 --- a/Marlin/src/lcd/tft_io/tft_orientation.h +++ b/Marlin/src/lcd/tft_io/tft_orientation.h @@ -52,7 +52,7 @@ // Set TFT_COLOR_UI_PORTRAIT flag, if needed #if ((TFT_ORIENTATION) & TFT_EXCHANGE_XY) == 0 - #define TFT_COLOR_UI_PORTRAIT 1 + #define TFT_COLOR_UI_PORTRAIT #endif #define TFT_COLOR_RGB _BV32(3) diff --git a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h index bff1167bf6..272c7d2ed2 100644 --- a/Marlin/src/pins/linux/pins_RAMPS_LINUX.h +++ b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h @@ -404,7 +404,7 @@ #define SPI_FLASH_MOSI_PIN SD_MOSI_PIN #endif - #define TFT_BUFFER_SIZE 0xFFFF + #define TFT_BUFFER_WORDS 0xFFFF #ifndef TFT_DRIVER #define TFT_DRIVER ST7796 #endif diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h index cc3f91b4ea..72a65efc52 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h @@ -382,7 +382,7 @@ #define LCD_READ_ID 0xD3 #define LCD_USE_DMA_SPI - #define TFT_BUFFER_SIZE 2400 + #define TFT_BUFFER_WORDS 2400 #endif @@ -412,7 +412,7 @@ #ifndef TOUCH_OFFSET_Y #define TOUCH_OFFSET_Y -367 #endif - #define TFT_BUFFER_SIZE 2400 + #define TFT_BUFFER_WORDS 2400 #endif #elif IS_TFTGLCD_PANEL diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h index 463814a5f0..b3ebec561d 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h @@ -414,7 +414,7 @@ #define SD_MISO_PIN EXP2_01_PIN #define SD_MOSI_PIN EXP2_06_PIN - #define TFT_BUFFER_SIZE 2400 + #define TFT_BUFFER_WORDS 2400 #elif IS_TFTGLCD_PANEL diff --git a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h index 748e8cc902..328213e873 100644 --- a/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h +++ b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h @@ -312,8 +312,8 @@ #define LCD_PINS_EN -1 #define LCD_PINS_RS -1 - #ifndef TFT_BUFFER_SIZE - #define TFT_BUFFER_SIZE 1200 + #ifndef TFT_BUFFER_WORDS + #define TFT_BUFFER_WORDS 1200 #endif #ifndef TFT_QUEUE_SIZE #define TFT_QUEUE_SIZE 6144 diff --git a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h index ba78146623..de100ff42e 100644 --- a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h +++ b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h @@ -361,8 +361,8 @@ #define LCD_PINS_EN -1 #define LCD_PINS_RS -1 - #ifndef TFT_BUFFER_SIZE - #define TFT_BUFFER_SIZE 1200 + #ifndef TFT_BUFFER_WORDS + #define TFT_BUFFER_WORDS 1200 #endif #ifndef TFT_QUEUE_SIZE #define TFT_QUEUE_SIZE 6144 diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h index 6719b09049..89ed31cb82 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h @@ -171,7 +171,7 @@ #define LCD_READ_ID 0xD3 #define LCD_USE_DMA_SPI - #define TFT_BUFFER_SIZE 9600 + #define TFT_BUFFER_WORDS 9600 #elif HAS_WIRED_LCD #define BEEPER_PIN EXP1_01_PIN diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h index 7452562c83..7f117dd659 100644 --- a/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h +++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_common.h @@ -155,7 +155,7 @@ #define HAS_LOGO_IN_FLASH 0 #elif ENABLED(TFT_COLOR_UI) // Color UI - #define TFT_BUFFER_SIZE 14400 + #define TFT_BUFFER_WORDS 14400 #endif // SPI1(PA7)=LCD & SPI3(PB5)=STUFF, are not available diff --git a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h index d1b64dd805..027bfd71b5 100644 --- a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h +++ b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h @@ -313,7 +313,7 @@ #define TFT_BTARROWS_COLOR 0xDEE6 // Yellow #define TFT_BTOKMENU_COLOR 0x145F // Cyan #endif - #define TFT_BUFFER_SIZE 14400 + #define TFT_BUFFER_WORDS 14400 #elif HAS_GRAPHICAL_TFT diff --git a/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h b/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h index d4f0ea7fd2..2c1fdf1d76 100644 --- a/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h +++ b/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h @@ -150,7 +150,7 @@ #define DOGLCD_SCK -1 // Buffer for Color UI - #define TFT_BUFFER_SIZE 3200 + #define TFT_BUFFER_WORDS 3200 #endif #if defined(TFT_BACKLIGHT_PWM) && !defined(MAPLE_STM32F1) diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h index d456974e9e..a1ca477857 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h @@ -182,7 +182,7 @@ #define TOUCH_BUTTONS_HW_SPI #define TOUCH_BUTTONS_HW_SPI_DEVICE 2 - #define TFT_BUFFER_SIZE 14400 + #define TFT_BUFFER_WORDS 14400 #endif #if NEED_TOUCH_PINS diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h index c7a8da2ddc..6687230559 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h @@ -305,7 +305,7 @@ #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN #elif ENABLED(TFT_COLOR_UI) - #define TFT_BUFFER_SIZE 14400 + #define TFT_BUFFER_WORDS 14400 #endif #if HAS_WIRED_LCD && !HAS_SPI_TFT diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h index 85c8de26ad..a4c5ca767e 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h @@ -172,7 +172,7 @@ #if ENABLED(TFT_320x240) // TFT32/28 #define TFT_DRIVER ILI9341 - #define TFT_BUFFER_SIZE 14400 + #define TFT_BUFFER_WORDS 14400 #define ILI9341_COLOR_RGB // YV for normal screen mounting #define ILI9341_ORIENTATION ILI9341_MADCTL_MY | ILI9341_MADCTL_MV diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h index 983cb6aded..d8c8f7aa83 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h @@ -305,7 +305,7 @@ #define BTN_EN1 PE8 #define BTN_EN2 PE11 #elif ENABLED(TFT_COLOR_UI) - #define TFT_BUFFER_SIZE 14400 + #define TFT_BUFFER_WORDS 14400 #endif #if HAS_WIRED_LCD && !HAS_SPI_TFT diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h index 16ee7757b9..28c96e9070 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h @@ -203,7 +203,7 @@ #define TOUCH_BUTTONS_HW_SPI #define TOUCH_BUTTONS_HW_SPI_DEVICE 2 - #define TFT_BUFFER_SIZE 14400 + #define TFT_BUFFER_WORDS 14400 #endif #define SPI_FLASH diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h index 114c224b1e..75a541593c 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h @@ -238,7 +238,7 @@ #define LCD_RESET_PIN PC6 #define LCD_BACKLIGHT_PIN PD13 - #define TFT_BUFFER_SIZE 14400 + #define TFT_BUFFER_WORDS 14400 #if NEED_TOUCH_PINS #define TOUCH_BUTTONS_HW_SPI diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h index f69f717d81..2469305696 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h @@ -602,7 +602,7 @@ #define LCD_READ_ID 0xD3 #define LCD_USE_DMA_SPI - #define TFT_BUFFER_SIZE 14400 + #define TFT_BUFFER_WORDS 14400 #ifndef TOUCH_CALIBRATION_X #define TOUCH_CALIBRATION_X -17253 diff --git a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h index 05c938037d..5b5c4fea87 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_MONSTER8_common.h @@ -294,7 +294,7 @@ #define LCD_READ_ID 0xD3 #define LCD_USE_DMA_SPI - #define TFT_BUFFER_SIZE 14400 + #define TFT_BUFFER_WORDS 14400 #ifndef TOUCH_CALIBRATION_X #define TOUCH_CALIBRATION_X -17253 diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h index 96f3d95861..b85b2357d3 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN2.h @@ -121,7 +121,7 @@ #define TFT_CS_PIN FSMC_CS_PIN #define TFT_RS_PIN FSMC_RS_PIN - #define TFT_BUFFER_SIZE 14400 + #define TFT_BUFFER_WORDS 14400 #define BEEPER_PIN PG2 diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h index cdb9f5edec..6be3520db9 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h @@ -309,7 +309,7 @@ #define LCD_READ_ID 0xD3 #define LCD_USE_DMA_SPI - #define TFT_BUFFER_SIZE 14400 + #define TFT_BUFFER_WORDS 14400 #ifndef TOUCH_CALIBRATION_X #define TOUCH_CALIBRATION_X -17253 diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h index 60fe6fa66d..14f6c31d73 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_PRO_V2.h @@ -336,7 +336,7 @@ #define LCD_USE_DMA_SPI //#define TFT_DRIVER ST7796 - #define TFT_BUFFER_SIZE 14400 + #define TFT_BUFFER_WORDS 14400 #elif HAS_WIRED_LCD diff --git a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h index dbf8ddc5d5..e9e069583a 100644 --- a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h +++ b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h @@ -209,7 +209,7 @@ //#define TFT_PIXEL_OFFSET_X 48 //#define TFT_PIXEL_OFFSET_Y 32 //#define TFT_DRIVER ILI9488 - //#define TFT_BUFFER_SIZE 14400 + //#define TFT_BUFFER_WORDS 14400 #if NEED_TOUCH_PINS #define TOUCH_CS_PIN PD11 // SPI1_NSS diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h index 81d338746a..47bcb732eb 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h @@ -546,7 +546,7 @@ #define LCD_READ_ID 0xD3 #define LCD_USE_DMA_SPI - #define TFT_BUFFER_SIZE 14400 + #define TFT_BUFFER_WORDS 14400 #ifndef TOUCH_CALIBRATION_X #define TOUCH_CALIBRATION_X -17253 diff --git a/buildroot/share/pixmaps/logo/marlin-240x250.png b/buildroot/share/pixmaps/logo/marlin-240x250.png new file mode 100644 index 0000000000000000000000000000000000000000..2a6b6923068124e7d7fa590f7b377f7c895d5163 GIT binary patch literal 27169 zcmb5VWmsHIw>H>FaCdhL?(XhRa0$>5tZ|2+!97Uu0KqLlXdFWD;K6AmXyfh#n9lRQ z-;p_IX0G|s4SV0KmepOWs`jpq)z(zPL?c53005XO%JRCfzh|(|0}4Fs8>hy+1ORv? z?VxYuWu&1lYUAp{`PSCe8p!GA;s(P30C6clx3@Mz!s28BAZxi5TBVtP@C5a~PCkj*G0`z)IloO7mtXD2p2am7cVadOoGGHALRAcj|1dM|5wGobjSleZ9E*@yc}FXG=Fuz zwRZLPlAxo5;WYnN4)k;QPwgPje}@lC1lM1Li-(h&>%WS-y>s<)^?c{*_8%Vow>JL) z|Br@V4tDT13DYYJGcNrp0K1# z(DCwf|KCvK|B4Fy3;mC@{Y$Tgt1V0|-#-oi6H<|r)An$+b8v=Xp1Ml1G%5;mf;=LE zf*ib@|8n7PCPh_T-r57zfgpRYcQEt+Ht?T_p@Z!|z`ylt(AX5(_7CE!+SzacT8T>F}9fD3)L)Kf*jK%%Aw+gml9BaQK*O&W@-92i_{3#+ImjFw;xVG!(xZb3hm>5}TYKdkT zzCW?)?xz|Zn^ZX>I+bM}W{}KN=L@5*_X5h>aeOn&*XT;yWFV?| zw91dGU4QCt-QyvBjb``qa$}H;jrpbu5WR-Yag5FWd9$pw2 ze(gXG_E>B9gIT-u4oNm;9TPTtp}Hv>djbH6%zr;{OInnn000d@MP5eVFYl#`zPyXhqaA|S-Hv^8{oFCljhQU#U&y)n%mOfHA#g4s-y;pu>)DsJv)vu7;j--X zI~_oGc75S@-aJN>Rc4V+J_2Sv9E~Cza*Wp^8N0#>Hk9Egw0lLu0xTil5h#il;`XRk>1GT!`wTsb& z+Bt{975Q^jj4yQ>ReP>79)Z{60gcgo0D80J;_Ot5gtmK((#=TnN<=XVMW{RXdXaOK z24-*vf`ZQC{E6R@B;5!~OlW^)T%c&!uWKTg;IArs5Yot$2a};kYQ+Jbjzm+U_`zQA zf=-=xf7ysTd4%6;($Hx+oD=}QaLI95Jk>(0VV*EIvfDf?PHwqHZ+RXo#?uESJz(XK zVfMjhX1i5F2Bj8VgsK()wL<6xHm*WZZK`18f@%MCZ&_3~hm1JqPPbTPnRyF;9YQLa zyv|y-;uQ>d3Qc1Hw(pQ#cgWrOz z?XKM66Elt(-z+1q(+Q+=VS(kPg%GE5y?PBMTShE~=He=GZCt$5uL=B*&WU3mNE4V}s;8P-G)V*SwNVubao7@L~I$Eg;$m`yilNF$wK76qmC z_xh846W4Rs*Mi6&$f;ubD}QompaVhdJ{2rzz27xb9JZ|W8$T(}hP#5UwC<*R+hh3fdgq&|EMI zVd?T$8?~W;^&yTQOhrPX+IR!YIpm@d(v`brZ2p46f9+GUpcF4OeVvO3`1kTHYXWF)i^5P4U?0);#DlF z1n)rHfB=p^<6qB*OsaL|t5}l;qvmkQP;tenN}G)xK$+wRj6Ku}a5$+c4z-q5kp55R z>_kX)z>bbf!^dOUw~43La4?4=5O8r9a%RGJFV@^ExVhf}GsXBQUT1{M+;&S$xR@&R zP`_4?O-WH;8qi*%J#p`77p+wn4Bl10*v@_PP_}Tt%5bHK3|~_@0tX0<6g4$Hl)Bhx zIDPM`qKR)jFY4=eb7GK_8_Vz}&9BaR1zhX395Ym_pR+I8;zFQMRkb|ta$?@0SFXwU z-anjlkZfIx6xQJly&^(mxjaE~GH#Jh=H~ga_{_wPauis%6P)YQ^d2mc>6`GQX52IE zNeR2iNNDu*1Lvr3*gYnSuHaafXc?p1DX_%EmiZ*IKtC`wY(7qrljZT4F1Y?0shrtg z>X8cEZ_HLTIHGGjI#}6|@=?cHz>}$PH016Z#>TSa^nxNG)u@-*3V99^d3ZnuinD7v zr*i&kAx~(qb|2SB!o!KxH6(sNiH|Sk|0}Nnl&Y&FY0L zqvIZwCpz~%wd9#Ty0U6Qh`ZJ0@Z-nxkIXZx66y=tK)BF7k2c?9kJ%4fJ>m_xak{QB zPDPl$0oR9|Ra<&TI=<4NPvh@GNL98T!IPG!Q6` zUgEhG?81f{8Fw4aSEi+*U>VG@I@5;{0TIM2o}Kf@KJs;4uTv`7(vonIFLCl+uO5O8 zH-2rLZE0yN#8(<6al9S*5OB6CxAS{FyP(QnoT0u;hRdXx{YSc=lRPK>j-R2S zOM3eI2A((U?O+$r)5W65zBz9}=ot3}J-uFi4<|Bwco`#?*%Uo42vQ6=?%BdxFOUc? z%TSDa!^C(0OYK}}-L|YP$~SoH@4!VU-aem|xTt8Uc6#Mphc+Q%lg9&syb;W$+?&M0 zFuLyyga}S1X^vQycEYtBTibeUejw)U>VnaU9T{sCSKLE>ieJ{@^|gNT(9rwm%d3ph zm1Vd1IK9Ht-vOgvV|i(Qz7Of!(()5kbM9_95|w8_e9ain!cwJ6?&Gpr*4#`!Vtdse ztA0vIC&o}uoN88xDjoBCHgB8*AntoihDRry-zY`nAFRyMV*K9Ad7D{k0_$oWo_d89 zHlGOLq~IvA%-$8;ist4Jqm9xi}++db!qTj5{M@n;XE&aw7bf*`<|Vf7Wir$jMME&8U4eq?A#L!dV{w z)ZJh$Q7c;rQ;YfQY7<0Dg@%?2>Sr?cNJ;S?LE5TMx{(=@%eh6e+dP(jLIo#q+$3S; zgO;Ykac{3-aEK}^_ zNFDHH<2l;4uu%JLS%+mZHXWfnqfv=K3lY;`iEDRJl%v9&3QC4J z6{CJG>E0-Y`KVbJD{IyK;ul1xPKa1OW@3OixaiyU?q|1PX@-%7wx*3|WX6`j>~0Yd zL{Ze`i=G{m&CX?>fiP)G47@HJs_qhOouX|pU8$o$%XabP4kA|s*$Vrd)c8Vt)+fwM z)u7Bwito?$1Kgx%zkOc|zP^=|W{l;t+ig6*gfd%%44B=Rh2_R+$gX?PsDiYfI!@4! zmXs9SMU0iebweFo@|w?$B*_^U2_n)Nsm8A_{dPykY>8!oDmM?5VWCHtV(@TEUk7nf zI6;tfi-NlWPvv*V(_*POAjp1iSoQinv*|)5gTE+PP~zg#(Io;9ChMOC1RWAJ zCfXkk(%e9V@k<*{Z4C`)4ILHiruQq`Blsm;lE{pO>aBI>8%nFS$1{oO_uCn4C0ybq z%nLJL*S;0GQl{wEHdH=6^%Tzu;k086Q9uVOhkt8@n`ctj>hn$#t-m2a+@xGZHEutGkkpK=LP6wi=$xV`ZSw5``l z*|9y{N%I5OL7ABW-{%(10@z|{hN(@DnJn(Hw>77?uG!;^G4dwLqyHRMl#*|J??{Sd zNs~op5@)T}??$%dCZDYTY@c6Q^%NvPqI$Et-tsaEx47_SsbSufKGdPbRUt(bZxZBB z?AQ19869FYo}^pF z{>ft{&BVdh%Hr_exgqlV=ceIoy`^bf`mF4mAr}HF!%$C%AaAz*%iPiM*Uej}qOZT* z`nkLV#lWgLZ13Cb-*~7kT&AiR&*T*?8*8FB_8A){1F};$OleMFMu-rXaF>0*-mgVh zvcQEJuxpwNi=AD4EE%#KNy5mz7jNO15PFBVEAD1zGT_HP9k?_GHBTJZPxHjLIT<9P z&z(?WvWFNCSab4joIMbPxY?1TH6CGnh-I;jie^>gs1<;1Ui4^&lcoxuYHy|Jh8t^% z%O?u=Lmrg$pqhsx3{4<xSSFvxaDN$;sEyiW#*T%=!J8*hGM2c#11&>mA_YF_@@ zx0SD9L};smIt#GRp3bc<7eej2!J$Z64n~Gh`9-4e^YPB!UTHC{i8_3l83TjB@7rJf zPRPCwvh!l#3#!G5pZ7Y3$J$RVx?p-!q#dK-Z@R3Y@OtZ84U(LlWMN0PO}~b0J(;q? zh%vs0P|KYdcY{FplG824yRKW>>J;jL`}0Rk3bir!-})6^JuN}R_G804N7mEp;O2CmSFq5s)j5Vag6-=V{Xz)^Uemd zqwlF>^QB5;3sbW(xKayw6G&7HYvEDTzhbdx7^+2*Y!(edgl=IR*q;D%~g zQ&Zn9-8eIKT)C=jE^1Uyp25H%qNxA-T&_;E$HytP2<={jg(;s?IZABtT_*^gh(NVA ziNyW#oTWJFaoeY41s8KAc^&V;N6w*o3qf8|Fs;4(I)>YXi#ah+$<5UM%ER{q5O}D_ zlW``{qE>Yo;71+%MHDzr*b@L89~#Pyw7>{wM+W=&th^{6u41+2Zla-tT&&{HLkpJL5=F;_UyRo-cOxakKs7T(Y zUHEKvxVf3o?&Fk!G$PFRMX#$94s1z_7U*X_BRK_B9Q4@5Ir|XNpiKe#+)CLMf#!@? zOBw`%v8ALjtWyM8LDO+isiJbC~ zio(fI0?2Z^G-^*Cm{dIRRa1ZIDu~!+H$1O(Lkl?>tXl^2a0r{!A5 zQ6|l{Md|!OKScZbmA<9+`Mttita1tsp6-M0bB&r+CMosNVaWCU*fvQ=^Zo(YVYehT zstXx%(*E)X`*~!|N&pucVf@C&gM#=I9n6!U-;UpIb;su?E{==Y7o3k1ux~WX_bu>w zKy*b4bEGHBYAgaC#`IYN=>8=sEpe~xjK?h0JknX!V&e34^>qvs6bKE<`;NU^R~kn- zI>d|Rva|J-Qhv)`aUeI<%r2gt<<<{9)GtQ)A4bf99c;^)P)kqTN zS9go{owNxf-#F7H8(il(!7hi4wE}h-MVxS%saS5Kr^~QqjnhxBV9--34rdW1phFQp zB!JJ$K1+x(%I`qGaa|dPme<{=-{ff}nKfy6c6Acv@z56vG>I%#3LJ^>dzV6nfeQ+0 z8KIuwvyVU@kfX=uN@ZEZ(9afnJYVh=pKbH3!pHqYH8*_Jac4FG!JzYz)3!d$>ke#0 zNK0&-XosPXsM<=w#+!k$Ad7rYPo{&dtA*@DA$SP4b%Y@^mt}%wha(Z%n8h)H6M#W} z-Yji%jM+M~;b9SuZ`_)dR!pFLf%;^H?`rq3T5=94EOj(7U&^2(IIE`ZXG=Vm(s(9i zDjP9=UxbifZ0-?wYeleDmKFE7M?BzW{M}1Nka!ieX$73BErW+^zdLU;LS=LVeF#${ z!5$@^rmma|-1kA@G=Jbs+)2CA)XF_Or6XQLLc( z$=TAk^E%j8<6|DDiVmXzzCi{Wo6-I5pv>#*DDqVS@8hA91<&mMDQV|3M{8Sc%h#AJH(1a`}Nqp@|yI=S=O_?X&eZ;643@Wg7nucy( z+RSSLWcnD^zMTMsT?CO=KaFywCyXcv{AlsqVv!qqU#<7Z~ z|58e!EIz`qlZ1T{8h8o6ar{U_rwvblsFFrFzOeW+Y0XfXktwi)x!z1&E6I>jUsuQL z!;j+a3gL_+ueon7rmu>^5V+rvv7n?KIlaTRjV>k55(lkrOqnGHVqJGXn9U&r3DHy8 zR>uRA^^JZhR}fXWtOUFL-e#-rzEZrA%bM;Y8*}dmDRQMmvN-7PKCShlK=;D60jsS7PgNG;3AqCi33MY z-EZQ3NjoqbN064zlca@@!zowM}ioOU=4p9Sc^6uIPa|(W=sLBh%WH6CWVegSVU(pj$7=p94isF@J9XFc%(y{Jv<>E1k=QnoaTQs4v2~ zHx!$B*aZQ>3f~mvjlJWpH8d@03^{INJl`lY(|1WEcCh6;rxnk;u1k2FXxJEJUfF>u z)$31(NSa*ijO`jy)YJ!}9tPVdvGOHIyL=2L?J8)7;{*@s^XeX>2i=d4~^R?kDSviC=m2CBr_|z6G@4+PU#+83%%qEkB(ApXb$UWd|P{w%2t&4!` zsqHQuda2VpeCqQnwU0@s8Gm09@aX47_tXkGy~U}FmeJZ8-#u;jb{ zvwE^W>fsG^E|Z`c^av_H4T#Dq7)>w}ZYFAJHG}PVBne$tylFbU?P>FCszA`bqPAtM z6%~b49Ny*NGDq?WQs@dfNPA^1&RiY`QHQL<3q(kY3|q~hF?yH^0*D!g-reqRT)G}C zCDc?TwHb&qM)#3}svK6+k`gS%07Qp9z;DfYamVHAo-FV`q%AkochqGvn@pI94-GQIKM z4kDC77#jy^+L`M3$+o$_bkywGBB~b4R|fqxpkC!ZWDyeFWHAgZR_m8c)h>rXtDWE{ zuAP}A-vpbW!3bfB3GqSa%P9R>PQ^Q#fMI4)`R(tDuDIsgkx1+91~y{u@*rp7sl>VU z>)3QYyIea-(%iknY_cPKd7aBwu(vI81i&S8J?PX*L+Z0ZwLPn9Z&}hHWrw|n`h<}n z6=}C$fQGBPv6Ud3-OL#8LCfh)6j_3-U>8d{?sQSx56XN-h_fwRH39&ov`%`M62$-~ z2Q6J&bS?00sbr>xtRXVtfZI@#1a|Oe{{hAr z?!9*J1~tbPk$5kWb^QK*eW(k6$Y?(DD3 zbf0yGu`PqxD7(CyGogLIuB|!ETY%+#`_n?Pc53r$lZ zsHFu~i#yl`HMY_fp)q|D<%YK4E_`^lQN$|HWReZG;K`zr0xE7}>|z@`@w5 z$BQLyw7R`B4nkj@!@^d)jRTCP8BtE*E0|Q9MVn-$0b>X zY5Xc;`4N-Qhq9ufq3A>KQO#mfOj_SQ>iocvA$KWkO9TK!YP-7h6+EtOp$ld5N?n`X zEVq5U*B77dRJeR)-c44{_1QlnZ8J~fH)mi6v5x|D>5jmbj(2dvN)wyHl`YKSe}$1W4*TvVzjVmgDuL#?Ni!h~OLiG)`J*V5r!@ zE#fA^Bl#sDsH|ayKtz7?BHD){ICRWBae#eWk+ZM^=s7_Q2Nlmsvh29CTgb<*=9~ma z+%hmL>FI4<=J1q!Vzc`dH%gCEJlaB2MA{U;MA%VURC?-*Sk?S)^<-W8`u=W%wK4*kqgPGpeRgyw5jb9&=obp>Yf76XtHO{J0IedQBiyi7Ypq zeiG-Bg77AeICYg6a)Bz)W)yj(*4Aghhcp0I&03d*qVuogYa|^34WA~Lg}9#r z9Yj(pIJMNE&zTcXn#qM|vIE~^_%h=XuJimrE^OH=!p@_rLrgObG0fWW%4Tc7GrN2X z0(a~QT^cJ}UC6>&V$+VU?s#MO;O(0{`8e2obXea}z03}KG<{zWi&QL!bles&|EPtq zF@0LhBrGH$YrWew3P}bYfPn~ZtSD>CW$oZ&P)MSjw>ekZ4-x3fRD78QcVcnnVVMrU zTF8OI3`hc5kRoSygn%5#pid6U!%LyYbS)TAg}1X{Vby-)l; z&y=63#ezHTex%nTxrYeAu%xpNw)y>oJiA}tpWF@-Aj#aysERn(Oj88c3f#-SOXr%^ zZiv7+aBHuk(jz?Omo1suf`ps~9zuN6OGDwCY8UUcCv&+p5-}FRBIJs=3~fbS)y;>W zA(kb=<_7a&JA5zhl6odzu0q~e+b<>LkhaWTC6I>4L{5E}&)mtg$JevB2;jvfg`i9% z-g94B+qSwshIObGNf=yy^QIKOU7j3;z#g~V*X-Wts1lBM4KK0Js4Fo)U7~298qC5T z0|68~kHs&f+blz?oNAau#zOU&)MoqPi-o^BTe;eWw!8QB) zW{!r|Nf*~vlB8+tV~M?Guqr`mz7jP7V>Zv5G5bw?`i67bEH0zvcm2ct zQ-qJ1^#qg7Y`F<`AJ5Z#i@$scoTTDv@zs#il2=67U{ZbMts~22tEi_+=<;!Djz%Q? zrY_=G3@ar&yS%Ij`?jFR@8aH!sX^K;moKm#uTY15n|EY*7(g4T&B|t?VeVPcP*T=C zu!CNw(LfFWeC6=8uDBhm)@tkQElCdYn*Rz`557D2(7z318pQv%dD>BEwm||t{gZ3g z-ByrY8=Mb=ypFkM%jAaF2$n$_p)MJzC&;u6nB8=fW-$ikQ|U^nURL`Qz{A6{d4mW$ zZ)GsIy0|tMcoOhrSz<&&-P-AWi>q33aK%oS2F%&_Lxh?~;#F0|ccBvcmE)M;>?x@|VGw?4&pduS z_20akSuZ$Ml$IYU3P5-}PCm8rzI>>@Ew~E8jG|k4H+v<1Z;bkx|Hb3Razdm@oxV_G zhi}A8G&M3SaSlaB-;h3cP`7xHgd4Zgxqv& z#sticqRGtiK$K@y#ga+q@HDm<^+hbgjUA$14!(M;k_Pv^aqPTz)ZQYHH8+7{TiFCJ z&l3b019Qx9U&*pcE(M;nZhA%Mf@cL?Dl1)e^4O->09FSB8`Z>|`R^I?V*sD)8;a`u zo!XXLFeP{dkiKj5DJu>o%35TTa>N#sRJdTw3n(cfTSfI3J%E?XlB~?*chB)v%jF7Y z<{y6^l#gI3%&l~S8wk*VV}jS4vx`<e;=a4Ye3Hm%LmqovF_m%rW4C=0P%n zrkTLKHvP_?M-G{E@n>xpo4|^qaeNduO&3~tSV2r{*r_@xKrha8Q9GHb7@Jw#{+&K;)++!jY+e(eB5H_7xe=8V zzkR<{H_4m0J&Sk*kVRCOBckPR8dIkew2YuHrqO>WC;kB`oWe4Iv>&2)d?F+F+bX4I zh8?o9yO*B$H2w*b39vUHD@a*La>6lJ$9dgZ+O|_VGP#3{mPXV#j_{N792MGCP-VdZs}0N2|(|1M-9IwSbH(W>!xhyxOv`#)wcR0hj}HzRRm8I8~HYZL75t{(5X_eFHaX>kY{Lq>dH5l8) zyU83*OikeIOxwJyp9gT<@AF3>c~fBEjd#z|`V*6l^W0XCDTWM=)8X>2=+{2vG0fxVDCQkc53rSCp#PMMHN8&N3 z7EsX4K)G07590Nz4$4Xz@YcFw0a~9?ssMY)*p*_FX&_?>-x{<&4KrW*^)f)Mf!FU3 z?a<0*5^Tv*rl`gziKufGP4*KrEr>ICH%p3Zcfqk2P4a0MHg3X;hcW00PQc-YBB15$R@ORIqI`0X*GRws;K;vo zK6V5h|JX0NcYFD8Hyc`vHz9(DIHBr;yje4fD4cTm3^s;yv2uRU^YKMlDL}0m!-Y@P zW;H3xj??lke9s}uv(k23_fW=RaBA@-ZHQPkgON2mfJab-T}AEPI|w*#$!p-49=TC^ za5ShUY6@(QSXI1?l*EMd(}IaE^Jx)<<@b@Ne4`nwvscZYf^5Z`pOkgjO?IoTGi%B8 zN>v1x`RehCdzP=SJDV-UW(o23t~Ly#E}&85tx&_5Ax`WJnu{IupCpTdi-JNLzbS|t z`$WEvQ5doV%=q5keN&!D(qBno$EBwZ+)F8IgVqSYB^wyNYyMyndT98z#;Ez^rIAvP zjsBagvpP zW7$vA@GEHv!0DUlkScsk0zwnpK9@EqCu(TRFuko0Fsj-=*!4Vx2ekzk5wj}%4!Ym} z%|`PLGp4&_Zy9?Q&d8sp@N$yrO@vr`kg(w^H>~=+M0cz-X{sJR`PB3RH+EoW5Nlno z^D4fYLKqFaO(%cHuW!Qk>UflKx~X(SmrGZ3C#;u!P=4#NDRe??I8yFF4S{dtUg@%X zJ=B!fjI4S;4`lI`PW}8LnN-O_Ofl^YhcRXZ-eJ7*(m03&h`sXLd1~P?X|^b{WwW~! zBqac|L2fteCI>?)D56YR1#Jb2WGbHYmq_}H#QJ?wggzV$Cz;%zjmkPb&);04?!$!x zE%P?|`{#?EJJ>v)2dxL3wm!^@UN3SM%FzMLeELOwyJvriUuA2N0;Ew52|eAl8pgS^ zKB~vtqGc=7`QQAQXD)1G#=Bnqeryr#zyrYfurHki^pp+t|JenI#%`FUd75`;cCA!0tU3E?mmZg z@o14IUU>j~eEpsrPHJe>XPQ=&cL2N}9wnb!NaESlur9}D8e3)?`+MH++}gd^CcIo& zdx*brMy)>W=y;>|N>$qD3suNbU}9oKq#Jv#Vn<$U^t#?xTHyI}EqlmN_lYm1*wa1N z`#)y4^E>OSo7@~0OsKqrL?}X>(?xEB7$w?mseNQQ6fwor@YqEJ+o77xcXc*gK}T|y z4i(9jnu@QDKJ!`4u?t5ajJXBuPEU4Gqg(T`TX^>(0gzNe8NT0LiGBTu z`V*w3agJ8=g9{%^>i@L#JT5vh-`1T(UeapY@^KPPEQXhiD)f@f#DDl%^KLM+XLC$y=;C11d(&)Z~-J^ znPm*H-$}{1;cDaRBXYs#pVpb+lM0hi@M3IIU|>BY6hfl*Bl!b&+nw$549-8K3r&1E ze1B8&LZjwCnkKAd{AHZB)b`T>lURrdUna@ZvE>sfz9z|xk`CZgTgR``(Vld1P==-R zu(9?<39a_pFS7fRNyXXv_ZQj3C*~ict(SrxG8AnyD-WxUX+L;^vK0wGM%2beDWZ9h zG;0F9hIdmD%HQuiS%RF~3o;#Lfv4O`XjV)FC@2K|Ro|GtMjCoBT2WvCervPqS))j! z3gZ$0VnfMgWKuGZ@nKO$h)2^!6CmeD^cK0T#&;_EZDfZyk;J{N08mUPl_or&|7jkP zrQ@UA!g$DLAiQ5G@A5!(MjVOC4y6lwhzeVOS>sY7IEzsc1>o<2VLLyiR7`zh*$y)RIv6?r3RLnQZ=f z+{>B^o-PKF0);?^bKe|^3HhU3D#DhP!AF$koi_I+%09`k~4a;dw;79f;Sg>wr4kAt|kj@ zj}!x&9M~eVwVt*|tAn8;Ha-gZVxXp-!^aP(i3AK%EVY2&9z@h#w|?dt3E_@%YvG%+ znTn`oug#Ak4`ZIm`I4U8c$Lkh*;D{p;tEO>%~ki`iP2PkcDFZhc~Y?$pS8X6L|ULr z#MHte?)Ksvxz{)NKVJ3L)aMEZos9=3b#*s2+28!0d;ePD=h#vq1sp00N{lqfnA>B$ zfh)b6q)eDhinj+2k4Y5?K%QcYtgqqskVGccc>c=g>c7JpY{tw6Ec`x-Ry|7EDt<- zC0N|saAPn40==8~$=znAY)e+3QY>vN)gWbZa<%JsyRI)6{rT;*OPSyOb^;4WS``&@ z3WJ}gOMLVG^bd8f&hrX)jB*deOPE_e?$#G}w9fF$L&`3(wMr$rf+?l^56*3(wSxZ8 zuRFL>MiPc2*jw>%L)TEaDnBjxW`s&h(-<7#v!AN}1dkzQvcPYAhr1ig5}{NW`KCa_ z_fjaC7bf4JYW0C8HP$rT?Ot(E*)`-cA(#A0d;m_QOm5dRqReAFkAA5O3>DY1?ThJClf+_fDjxh00i4w(dbr8Fw3&KmTRX^-a2RJT}}qNIn%hYx;!CleQuI4n`Of{)$vTX+2BLFh#^!(z#K_@3AZB~sT|7wv-r zK7t5zY>>2&%VuQ?-5FDMJw}=m5IPK8Vj5OgcK^x}Lt*5Q5-m;ej#EGj`0ey%uc$ug zu$tKb+O1Vh`s<+M|-&nv%s%Z&@|zQazBLV(W1T4_}nNT2Apx$tn_=+&WV{k$9Y<# zES>uOt=vQu290OcJ!~Uwtb-PEp7mnG4>occV4O6o)5g)!`BqkT%)uchTV&VA(tYt0 zdvFMuNUWgm+SwH{AAf&gJ3G)Y{5d842s4~U4Jm>ym-H1Kj;O|-17nt|)B63nT*%A# zE%9{*>04O-%AWdqD1x5Glj04-cN)F{sU&ex|MdA%6Du5+oCf-&W-_Vs7@a8lQ?+7> z063+0@KRflBDoE+i9uEsDF;|r%+gkzK{?Rl)6DT@CzSjq+a4*PO%jg z+2Tn!EZ0aIVu$dL4n*hIx<@zMbX8Gl?}G-R=p34R9&QteGU7pZ)4jbXI~2`l--&Rw z!_%TN)zPbncxVCIv!(duKEcP3Q}frk_6$+_gYLW5$Er)>p2CV{f7TzKOPDnc>KwQc z%K8>DzxqFjI+I%Do1#vnE@enjL*Gq8S{ZOEP}Y7OvW`CVK9x(|mWOngK1F%dP+~!Q z5wN>nf(w_r4mDdwnPYhw;o)hO2ih`(szyA6O9>~0?Q6PR7GP4G{xs}WMYt)j36WFv zb+=p6pKbl$PV4WrID0-@(+o3?l%*4+!B^X9x?$bG+ab|u|0G!Yh3WWduGV7E-L~e& zY5ifZ;Mh_p9~Y1tVSI2Q{0XVX+5GE=?_tI%?1sNkunaUOph#LqK^h+~?cK>q`(4lTh-J`5y<}i_ zAgw?HNfMR+7_`>G;evP?=OxrZQCz)csQ0rYERm-sGp`f%7^4Ays#X|ixJa;auBO? z^^9`(%;V(a;J?wf+E;WAT1lho`}3mEg)zbHs%QJCZq~V+JuB6vyD~%yEtD%PHeaYQ zYX~bzR~|7e zT=&@zH;*8P=)JWN?j;|+{y@-KT`%m=0cS^b`V$> zK=UPTvH~$Tb>#I++sRJ{lwzx6$lOcM)3mRXBa^C(4EdmQjCRe({@wPJr}{OBISZQQ z%UVHIIi??a&w0_MmbjlmUT(Y`>Vp2(?}GD}{oACMj+e)WQ)C&7bK> zDq|nNpn!+@JtOL-<92Pe`!Tj~c|4-S72!e~51b?dhkdQNjg?>BP$ZN@FO%*zDjp<3 z1bhI7IVBnDq^}4v!ieR|nU<_TL<~kKMEkcD@017zLLLK4N5ly;RoC6c$nWpkKrm&g zkLh9at<*UO9im7p4y)S782H0wqNg!t&8MZ1u5wvdpy%d?Q2}6N!Il&}ppT#)i@!VQ z&-eR+q~47O=Qpo`-|&9^p>hgT`co%I@4L>khkdok&3o#u4L|BJW#{qh&{eS8tGMk^ zm7C0vBlr8&;xed4?Gz$%KeZas(W0djkncxH2WeXP-ro=BZw0#ziT0wmi}m95LR|O8$F61OT7K(9|H=Xm39m_Ef*_{=2sQ ztlu?cvl>+Xl)N77J4ZX!sb|?!Zzd^0O6tgID)E6%^-{NVGz`VIi~t38tQ|uoT`fel zm;g(lgWr{@!zzDH;c1GmJii%3RezUT;w#yhx7Y8lf`|H= zEnk*;C9;GG z?h}v)ky7P=Kp_@~bbobL0t&8fpEL4x|KcEeT4zK1^|VOM(q?Ljr@B*#```Mr_9pO6 zBW5E0>>K;tE6;s}5{qq5zlNkP^81k2|MV+`{Pt+%dg|Mn|M8Jzmp)f5U;NscTf3fh zd2D1vcOvdk0iAtRy?m>5$?RTs_g6*>j*5%MOce^I+bVzIeO8!p!9XwRYXY{((BVoW z915G8;^`ojpYuZc#$XeI#O0|)bzKsB90Zch?>G!_D@J%Esl#x|zGB}gWK9LtY_~)^ zMGxgz{6#iVPo?E8LXUI_?i6=z-8+sduto}T({ znpx^NX6~+Pyh%4k5EKqSYg!b4ON6$S_0#iPfT7KYZ|WgsOn19 zS7JC}BcyFy1~`6rGys<|bjK=zAnsQJChW(4tvK;sPdiys7k}7>Fl>x%a3^#YO1r}b zxq|j>o)!*Z@lh)m`#=3(C0%7$98I%bEG%xp-5r8Ma7iFQfZ*-{f-UZ_xCeKKAi$j48H_2oNf^y%s291Pk=Rc%sY!5d5pgVe6 zQ>KtB)Cb?BgQv0-=+-Ytl|onzZl-2a-mW>tW(5{%PRbhCHTo{j47l zV)eg~@8yCowHY9Pdv|sxhU-Snt*!4m@)3(Z@$u3mX$m3%mbnv4OYc%RHda2Mmb&;1 z$=i>3DgptBGYP9AvJRgWev37`&rrmtIN$qlU&2vn*%@O?&?<9J=Qrq>W6s9mu+1B+2e(TkOU+eEx zoClLGH%+BqeTt1!H8CkS^IAQeqAdQ-FwONX$!=NRGI69-q4}>e-*J_c6t-j`)pXsX z&wKM>-??@iYRR)W?MHTYw~$A8>cl?!0xvQ)yaclHcK%&oE8er0CCK{q)-f{SP?GKm z3t1xb{6tR2@v^v&N4!O8^xd@Oxz}x<*odwpJKQ)|wqxhTQ9hxeu=bMb?BReAhYfEN zlPSss#P8y7|Hx_iU++CKGn9!~aP9F-$j1^>5r_Sa+?Sz|&B?mR*z^=33SyF6vMkpR zQR)shXbd>UKj5qZ8!Nn#i?*tTGfkC>7CH(6>|P*2UpQ3P_dSSoaAcSl<&(dqegW;_ z$IJAogXOX56hbJ%nzh;%8V27|*92E@gG$cykS2yF2!48Yy-g#xazZ#~ zjD2VxvMEK|kIEfl64hSM#UK6c)MN}>8uWDPXS2Hyr*XZWGIMvze5MGU(?Qx`l%6`E z=$ixPJW^ITVkfln{%Cee0eGeIm6f~{)(q$W`vN?#Vs-jCOcdpbe_@JJd|Zcdj7p7( zR@M}=8gTSryJ-abZHfDyRil)iTyg8%HVWJ+_Lm)yO4cmveHMRshfv){50{ZkJg}3Zht7;M`Dwmy%MNXwm3O7-wnhusVW)`j@S?d8 zH%2+$r~W?t)>GF`R`1U1e$Fq<%NEdAc}%+v`HtxB311T9ru< z7D=>!5gV-qjQOGp5FA!I_SJXQDYYt}2)jq0uT9jCexG293iaSsgEmY{0 z&Pdy@Pd$~cKS1|id%HM~oRhpd^IVM1(tJx1|Ew)J9)cfF>cMv*vcsnE8h#|OWIR;b zs)7ax4~B~JDfK6_s_y}*3z+1JEG=|C^KwbX9rVM)ZD}_&xh$S?h7jLgzd_uKC7lfB zeZ}|JAUA6~qEGO~?|1+}e>#as0MgWZ`acP!*>ih+^hGSCedCO*N;lM{bod(TuSrf> z>Zw24S+tb^b@cml7ikhrw@9KWik}n>0L3i-GK|aC!Ki)2a1flCQ8%#m(D^8L5 zaw?4#gCz02hz?E}QeUqbe@tDe8fJBg{JX%FUgBxJC<0&JR=wk!$24}DIOsX|ymC^4m|K z{!9Z=c-#A3&rj9&#n!B`V&aOO4OiRqogHy^kreq=Az{b^8CYh2XO39-7Ms#p*)mfc zz0a)Wu+AwC|DNZ)06V)6@N*ucjEv^%lUS$!{v>^t-2?As{hEyK9wYTS`5SzwQ zoi_=}$uiU4;|juC(C+}q;0Yy&XgXDG6+2_)YOUN%uaFIS$pZ`ioIZBX#*ko zDkwuRM+@9&R^rda>8T{@zg7c9$C51wdu?c?8jj!#{0^Co$6!Z6$zV@A%8|OhjK&G` zgX8hDaK{foeSCsC#H_X-ebNy%2%v_S?pYEcl(eDPzyXA#FxJ&92I7Z zph%On0g8L>X6;XB{$!Ir?J zfqG1`B|;M8sX)fs^69)HixmEum(V4IPBH`{-jdjNS#y z6=bxO)5E_v?tFv~32yKosLg+5_sLC75Q?eGx{Y|7=Jj^*pm=Tv&q3IvGUAU|c!5if z$)irDFNbB=o%8kKpNDTF@@=XX5CfeTlSc>5e(DAN3lE^G`SFAY0CwYV6h)WW)J*#b zBuqMzfUU;O=~jL)-9p!bATTaX!miX@L6@dm@LlS9x6z8v{5XAMM%Do z5s5oNw?3AK@=#z5!gV`l@2(Ww7n*2r7>O_ElH{y7dmIfc_V2naEllnJev>$4{#Ku| z=4w1_wyXTaC)}8j`Vmm$$%r1$JNr#oA6ur(J*1qUj`>G?d~VDV~zUEVJFPu&|p zGQo&rkP^F71L~DoTWePbjy7B|F0+_&bLVV}tP9fDe|97fzSY<=OOpbyf{R-#3R7WO zTz-&wRh7CoF(p3yrbNmdx16UA|I03Q#C)ULR|mxg-Ky`u@QIoG^}V1Wsa^4gIl_W& z=045idKs76OlKcwi8rD3J5qb&6BEx4dESD_2R7D?!vhRqTIU0VeJSDqz`Ynt5CvyK z!==743zXyA57ZM4fsD#BY|8}^YBO|PoYQWJSmpjHQ?AF6Y0Ae3kfHTDH{kbVe@zP# zW}Q)p>@ntaOYRf5lw7}b*#veCT$YKmAy2 zBmMNswC{i&#fad76f+A=jDvxCZg*IXuAP&+tGTqol|e<^?cmHG!JDHC^(X2qIJ1R= zQsj-0UjqxDi9Zm1)|sv&2T=X~CfW*KF_**W-IwQpu2PbVKB|8tS?pFdPm@?jH-2As zPJ}SVct!&7cb2oKhOkHjf0*2qRWu>@{QAJ?+`KRCp{$Exttr|gcdy%ZwIWOOg?v33Gs!daf%{EnndCoq%F|3w=9tJ1oWUU|X?K1s_^j>s%HPCPPI380mZf_p{NI6DD-~lBbfV%MZ z^dZi-`T$G>^f_zDm!8%>=4`NEf~r?Kir{vpQbRBTRGYsiq2WVSEI1<;L+;&_V(tVtaB;GTnD=~<$fLvfvp;k zmAvCbu_4z>2oubL4g@pM*kF-yTscZEY zWy0kd`+nWw#d18a#@-2tfYOd)4T-_qmGPSaTbnP3_o711H*vAaU;O7m?k|79(2G`Q zcDG%xvd0aK%Qkj|0NM})Z0oE8Ji#^K*O>^6Rdh>{;z8TxjIZl!QXtVKU@J^@C@Eva z=rnBn8lM(44IWNc<^;$#wz-a5?v235TisDz7di@;=Bsgf(av?6gNGK*a=0lhx}{Da z8;20-akDT&hCB1>bwkKcdBmy_O{aVx$y}r8qJ-kEJd~?`l~viQDmA-5)s)n#pl>sx z)lOA%X~;yCKQe&96`BXjSJ|mN6exojZQLCPW*lyEPhaxU0ICJwS%Do`Pp@XYPIPajtxi1ImtQx?GCRi!zu2>Y~%Pg|H z0SDr`Z8usVsxjK%hmPN#rOb$O5G-`@&fkHIqA}*xKRs?;O)7g z5>S&!pbw*`J6@UB(c|mqSqTg{G`Lm<-XM!ht;FabH)(AdSDsl6bmJ z@Bko5P%yliO&AsR^34Op?e30ub?7jXhH@?U^(fT{T4@P#u|K1=_f9q=rRuqmxKwyM znE{byUW#^)d~nP4ZoE75b7L5S(#KSST|;#`8!zrsl*8QkdB4Ol0I>6auvCq-m&Kw( zaV$hYQv?)xs@(}l)n1hkLe|`f?*W)+$Peb*%YnN+-$|_nDNPUcHPQHn)}Jgl7vE#R$wjVJ3}&e=Mkf3pxx` z5%`zmv#pF$M*lpsczeZ~@HuW{?7GapPiFn8pm^^ToPsD7$lRSQCe~~7L2g!4sNK`; z76}*q8?Gl@VAXNM;zD_V|Mz+i>mv=wc0p}t15QKGUF3XxQM8|Z+1q7Uc|A5JEr&i5 zzyLCMKUx-fO!&0Q(D9Q_0KA=TiW9c91gt4pKjt9S_L?5aQ? zrI41JLvg6m(8*N}p7{@*gVuGEMwdoytGlK$uPKF)4?9Jr#OzQNw2g3Nsnp2R5D?s> zf^Tsb7JtK7)|I~90EMb%qj>+JCku+nyauiN?iPUUS-;!w5ux^%tuHTP|7 zq_M3DO$(6?H~*9=#I(XRnB}wUdlR`!?e88n7ELsP@Oe~y*it}~cPIdSIX=Z(&FP-9 zvcIs%4{e*4GVRP0s1Tx((sn;K4IsI+pQ|#iGM36au7efz4G%jji5h$cm2EZK`Y~&= z*Z`>Ved4zwoYsXt&3=~pqh7I zq8#!M8sgu12D<6r?dkQt9kEifXz<2;o@p1MU>1A35r^-#sZZ^CoHANTKF^n4s*+Yf zh}OdvKSI47CU(&b9(29G=S3s{AR0>LqSdE zgsI5;d1fZ{I|#vYCY!e{G1K|K)2;Eh`1NWApDQbTPAfG&#bDweGaR!>U`b#FU>JXq z!&3*cAhP4iY_6`Pn#i@CSzP?6? zG^lK5+Mr5!?YfWl9W$mh-z8h|ueT>s*|MN0JV?2`7XxfSC)e8yo)}Gh)YfPj61*R#Qp=L|LQn>sL=w zj<3G~EHjUJIBAH*!E6C2#yCWXb-xhD^iEDcqM_948ZJBUo5sn6S1D1SNl|9J7~{BL zO1F>C3{}XyPC#PX{oIHE5=0d~pPG?4rIvBrmL`6j<I7h{x(k_nQWL3{%0G}^i`uZu=vuVd$waS3oO#$%?BG}a$w zV}fJ0i-jrjiRxr)awaX&=05W_1dgR3km-+Sn`48CR?*474X#Me_2xDx; zohv+VJ&J~nyc<6aK;*oc63ph0*3I8CAO#=^48=CVMgVdF1&;gN9$H3Tz|Z^VLhha_ zxX1~{>~$wLs%gLsE%tfG%H4wVxo9kEb{~iN-gGJG-P9ZeCI8oNkcq@04ZP|V5f!KU z*4ym_<=boQpxAwcO&9~ui)gY{pGCA3bt=T=4y$>>qplMc8NDh7f6x;NBcU^mXM}#- z(4%xNEo%U}oIhVIt2hFLq-TtnuxBhqQy((@O~@ zGF&WbsezaGM)_MM<9nKr>I_G@@H`tSwUC0pac54S<7=i5w@3nuQ4N;IO&8mcI2XPQ zH(pquvs%nr|K1>GY;GlHMXYB-!f||Q0N|AIduFr7)7>0>ZRHptmceCBL6wjpG95M+ z6ftVx+kv2IHkw8>1G*&mTv_HTXC~K}8T@U@W7A%VVwv*NMF3njSNhjX=Jz zpwz>|`}=?ZwH1I0&h4F+Vek}EBzfqh{l@Fzz#IYaW9icB6=he79F^`1_`0P3_DS|Q zMv|(`9vle4%9xzxq@Y+$UT~?<+P7+N9TdZzmSu1SXtQJr)b;aBYY|MB@CvgB)6bQ+ zur76!yT_g`9ZHqZE8|xcZ;7I6;ccE0sIS|yaRoGVXGz=O#38Wwqkcg0hjWs^?Dls( zqlxyHFP9O{L=0G^9aQ?9`5nC)&PM0bXGs&urD`SmjJU<3@gd!$L z@Oe|tztrl;_LF0+Wh>zVD&(D6-D&h+U~V(i`GQyaip-5N-|}%${Ij}2WU=*nnXin@ zKw46r%D8JMAk3d+Ua;;rg<5kRxqD2drT6ckxtB}Wk5&;PAQ0H&wezqOVTmb5`p?&N z?;HX6ml)LLYtc4mYTtQHoWDO1?9T$z!;buqpy+73X4XK=W=e+vS=F{2VQ8(WuNkV= z*_7{g&PMaNkG(w}Bdm`)Fs~dcXU&U!Q!U+T#;drf&Btypp)Gy|W`ye>(n!etbGtne z6Yp@OU(rMi^h3r*>tA!fKw!KRtt|KQUT6POXPfN2YulMHq2<&fU!^j%`_tzSQ(6;s zAr+v^qD1=z3oy4Fp>0`>0FW*&&#$u5Vp*ETJ10M*pg5yAjC6w}2;wA{ z@pLpOGBRuHhz;K(0RASVkMi~(oinM;q8*F-q-!_N{)u*Y-`y#ryJ5_(^Rmrn7^FMy zGBCKUvBSd&*2xI|%RMk!Da$mZI><(o=3f!LddACLoUPBScTN02{i!vr(`CPBw?zT1 z#gjRNin-{b!F%3YwSxkP2*d^$6T8u?jp{c$8=A<|kWrpzrV*u)oi8urpH^unN4ay@ zmibbDA7b;2qBr5IgMhhVb|KBWyzGon7QamIlo6NSD^*VzO{wq75cBptoAR+A$FGW$ za#Jz7t&)}r436u8TXu=w-MU)TE77PL=tW5`uV1{2XeYs$VkbeOlIpG@$vMbW?cYM;F=?oVmevc^U39eHy-CS7w5R4$Mpay&&YI) zLt)Z=&+leE+r>S{BE1h+ChXDvChT<((AMbbw4N0s_RV-8PbUPtRX-?}8|fxoDLUA8SCKJ8HOK8j;Uy?Yd?Q6pQe6vk_v%M}ECZ z^&Lxg;n39ekOc0RmrDU?tLJ1-Q-KQm1``fW?ca=ZtcX_a2-q3=HfCW-et8z@;H=MR zpbbw2>S8GSL_y-ignc8N>>>C%)29~o*iTs9ZnZF=M3DxQwcg#Co}8XMHEfWTBcFg& zU!$sf7;y{muR8Gdy0`sv1Vnt)cgk-7JUeLa26(r{%5^r~w&({h_L#;fY}!0p;tQUvJGl`5os3cYgwt50!6Dtf77x0P7M-WD zF_;hIeZlTh>YhNAuBI}~t$W;j*v}Z(?00X5ZycPMh?Tg_vm8U1P1r@2M6VXk26M>7 zbI=+0udbVxwO_1yQ}733e~NCV|I2a=^>Ev({QCHW90=>S94OP2(9!C`UU&dQP%dfq zH@;Nyr`6`_Y8xgNMUo6sy;V!L1p^gLNNLzRtj~?%^La_8`874_C%pVP@RG>37&K)I z$)xF-p0r&Mcg0US!888 zGawJ4DTH;!mVO`Avd~6bPe7^qOD3&a3+}vGqA%VP zl!2#6v1!ZbK{7!-?P{%dJG{KbNzP(;#Q9Na+vqG2yz9E-?w`4oCfIh-Fp3Wf#@G zz&%T2P%9T%I{J6~WsYd6+>zIwMZHEPw=0Zto%Ltu0irquv{Y6lSz$I9=rc@2bD=p~ zKYq~ryW6i!(U2)#8tX{@_mo7@So%7xOEp6i*s$OYdxtqwoCZkZyMokDXS>j1yL7Mi z;fzZ;I(F84nBpU|$rkEUXqv(MQdCgNs-Sf|_yeVo`*vt{)(Wr@P20m+GT}BA@E=lQ z>VDN9hch?nQD~`T^M|o_P-Ox*{DG%}|Bzm7CF=%?&`dQ$4<lE^E*bn)ybw)F0NzNahCp9U6;P4lS72}Qm-7YR>QI_+9}RlX({TY0OQz0`It z@gS5>JmokOfwB|?~` zFJB{aE|*MDx6v=h4yQ@I?2%v-BLq8+b;X6*+3a!7%CuQ{Wwzq52KOlH&hU#7>oPt- zqR*Vk(dA&XwGro?jDV*7ZnV!61PzhgK|GG`+G11F&4P|ADUw$+U8=8!L@5+^e~(i> zL8j1Y_fS;X)S!sxOA?P0sV@0{*1$tlZ;Az-;lPe3#pq%e6M;V z8%7ahy$MC28&c!3Td@rLwVAWKpRfq_0HnpZ z`fX0JLJUD36mV_5tCTBG=+Y@XBx(VNk)0(rT2D6%FoF~S#3Y_;&Q%|F%N-JnFqZAM zgxi|qP&Yj?3&GDEVFL$g=ftmY){6951|_um}>@G)E_Ti))22dQy|DM6fp@GJ8?1<}T zo2yE0KB-pf!u;T3gIPG4=Xzh>ttc@Fe*n*`eYX6+;UWn;PW0|>uRe?x4S^#0{knYk zz>mhVDh*N96FH8;a(ct@gAFO05ZG8Z#H#n#{rw7utfWhmWIBpJ8>|^&KCMIz!Z+%0 zw(k8c8LD_)j%(n1Yk$u|WgI2g(~_Q@K0Zcml8KB^?A)P2`=1b0#H4!E>ea{ZPrXEW z6w#A#=Rowq_OwpbhRD-VE5te7|9uJ@F$og6pHjRuftKHxO%8)(`ORs#gm7F#A@oVi zoK*C`jBO&=lg&Infls&`J!y9&2vgPqEMX0C7z1{y)ov#nISRC=$LLm&wu466GVT=_F+jtMAzv?b9&_A0pDabPGpDni*<$ z?mZ)1g8p{k6rK_6XB|A~niz`c_a`Uxnu z`TD)OTAOr+867tB{BkVh(NaQ?7-H^f@rbedm3HwoRqpT4Zi;4^pO8YgH*y#?0s?vX z{73dDdsfSo>K~Rav9}cVY>Zf}|9`*Dip?@Qd7f~>)yYSNM98>=_6x!3RPxF@jZV>5 aaak37?$z*bl(4HY0AD^S$y7-h2mT*Fdj7Wn literal 0 HcmV?d00001 diff --git a/buildroot/share/scripts/rle16_compress_cpp_image_data.py b/buildroot/share/scripts/rle16_compress_cpp_image_data.py new file mode 100755 index 0000000000..5a6b32d78b --- /dev/null +++ b/buildroot/share/scripts/rle16_compress_cpp_image_data.py @@ -0,0 +1,142 @@ +#!/usr/bin/env python3 +# +# Utility to compress Marlin RGB565 TFT data to RLE16 format. +# Reads the existing Marlin RGB565 cpp file and generates a new file with the additional RLE16 data. +# +# Usage: rle16_compress_cpp_image_data.py INPUT_FILE.cpp OUTPUT_FILE.cpp +# +import sys,struct +import re + +def addCompressedData(input_file, output_file): + ofile = open(output_file, 'wt') + + c_data_section = False + c_skip_data = False + c_footer = False + raw_data = [] + rle_value = [] + rle_count = [] + arrname = '' + + line = input_file.readline() + while line: + if not c_footer: + if not c_skip_data: ofile.write(line) + + if "};" in line: + c_skip_data = False + c_data_section = False + c_footer = True + + if c_data_section: + cleaned = re.sub(r"\s|,|\n", "", line) + as_list = cleaned.split("0x") + as_list.pop(0) + raw_data += [int(x, 16) for x in as_list] + + if "const uint" in line: + # e.g.: const uint16_t marlin_logo_480x320x16[153600] = { + if "_rle16" in line: + c_skip_data = True + else: + c_data_section = True + arrname = line.split('[')[0].split(' ')[-1] + print("Found data array", arrname) + + line = input_file.readline() + + input_file.close() + + # + # RLE16 (run length 16) encoding + # Convert data from from raw RGB565 to a simple run-length-encoded format for each word of data. + # - Each sequence begins with a count byte N. + # - If the high bit is set in N the run contains N & 0x7F + 1 unique words. + # - Otherwise it repeats the following word N + 1 times. + # - Each RGB565 word is stored in MSB / LSB order. + # + def rle_encode(data): + warn = "This may take a while" if len(data) > 300000 else "" + print("Compressing image data...", warn) + rledata = [] + distinct = [] + i = 0 + while i < len(data): + v = data[i] + i += 1 + rsize = 1 + for j in range(i, len(data)): + if v != data[j]: break; + i += 1 + rsize += 1 + if rsize >= 128: break; + + # If the run is one, add to the distinct values + if rsize == 1: distinct.append(v) + + # If distinct length >= 127, or the repeat run is 2 or more, + # store the distinct run. + nr = len(distinct) + if nr and (nr >= 128 or rsize > 1 or i >= len(data)): + rledata += [(nr - 1) | 0x80] + distinct + distinct = [] + + # If the repeat run is 2 or more, store the repeat run. + if rsize > 1: rledata += [rsize - 1, v] + + return rledata + + def append_byte(data, byte, cols=240): + if data == '': data = ' ' + data += ('0x{0:02X}, '.format(byte)) # 6 characters + if len(data) % (cols * 6 + 2) == 0: data = data.rstrip() + "\n " + return data + + def rle_emit(ofile, arrname, rledata, rawsize): + col = 0 + i = 0 + outstr = '' + size = 0 + while i < len(rledata): + rval = rledata[i] + i += 1 + if rval & 0x80: + count = (rval & 0x7F) + 1 + outstr = append_byte(outstr, rval) + size += 1 + for j in range(count): + outstr = append_byte(outstr, rledata[i + j] >> 8) + outstr = append_byte(outstr, rledata[i + j] & 0xFF) + size += 2 + i += count + else: + outstr = append_byte(outstr, rval) + outstr = append_byte(outstr, rledata[i] >> 8) + outstr = append_byte(outstr, rledata[i] & 0xFF) + i += 1 + size += 3 + + outstr = outstr.rstrip()[:-1] + ofile.write("\n// Saves %i bytes\nconst uint8_t %s_rle16[%d] = {\n%s\n};\n" % (rawsize - size, arrname, size, outstr)) + + (w, h, d) = arrname.split("_")[-1].split('x') + ofile.write("\nconst tImage MarlinLogo{0}x{1}x16 = MARLIN_LOGO_CHOSEN({0}, {1});\n".format(w, h)) + ofile.write("\n#endif // HAS_GRAPHICAL_TFT && SHOW_BOOTSCREEN\n".format(w, h)) + + # Encode the data, write it out, close the file + rledata = rle_encode(raw_data) + rle_emit(ofile, arrname, rledata, len(raw_data) * 2) + ofile.close() + +if len(sys.argv) <= 2: + print("Utility to compress Marlin RGB565 TFT data to RLE16 format.") + print("Reads the existing Marlin RGB565 cpp file and generates a new file with the additional RLE16 data.") + print("Usage: rle16_compress_cpp_image_data.py INPUT_FILE.cpp OUTPUT_FILE.cpp") + exit(1) + +output_cpp = sys.argv[2] +inname = sys.argv[1].replace('//', '/') +input_cpp = open(inname) +print("Processing", inname, "...") +addCompressedData(input_cpp, output_cpp) diff --git a/buildroot/tests/LERDGEK b/buildroot/tests/LERDGEK index 1aca42c18a..b0806e9085 100755 --- a/buildroot/tests/LERDGEK +++ b/buildroot/tests/LERDGEK @@ -11,7 +11,7 @@ set -e # restore_configs opt_set MOTHERBOARD BOARD_LERDGE_K SERIAL_PORT 1 -opt_enable TFT_GENERIC TFT_INTERFACE_FSMC TFT_COLOR_UI +opt_enable TFT_GENERIC TFT_INTERFACE_FSMC TFT_COLOR_UI COMPACT_MARLIN_BOOT_LOGO exec_test $1 $2 "LERDGE K with Generic FSMC TFT with ColorUI" "$3" # clean up From 79be07f9a4aff5c010a0f454c24fb147725bcf2a Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 24 Jul 2023 06:06:23 +0000 Subject: [PATCH 640/659] [cron] Bump distribution date (2023-07-24) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 293a90aaa1..37e76fbecd 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-22" +//#define STRING_DISTRIBUTION_DATE "2023-07-24" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 205a5d8c42..f2ea158af9 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-22" + #define STRING_DISTRIBUTION_DATE "2023-07-24" #endif /** From fdad658e5feb93943b1ab0ea9bc2420258e4f2e4 Mon Sep 17 00:00:00 2001 From: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Date: Thu, 27 Jul 2023 01:38:59 +0200 Subject: [PATCH 641/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20runout=20extra=20l?= =?UTF-8?q?ength=20(#26082)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine Co-authored-by: justvlade <7622616+justvlade@users.noreply.github.com> --- Marlin/src/feature/runout.cpp | 2 +- Marlin/src/feature/runout.h | 70 +++++++++++++++++++++++++++-------- 2 files changed, 56 insertions(+), 16 deletions(-) diff --git a/Marlin/src/feature/runout.cpp b/Marlin/src/feature/runout.cpp index 7c7d61e7eb..90d3d2fd65 100644 --- a/Marlin/src/feature/runout.cpp +++ b/Marlin/src/feature/runout.cpp @@ -47,7 +47,7 @@ bool FilamentMonitorBase::enabled = true, #if HAS_FILAMENT_RUNOUT_DISTANCE float RunoutResponseDelayed::runout_distance_mm = FILAMENT_RUNOUT_DISTANCE_MM; - volatile countdown_t RunoutResponseDelayed::mm_countdown; + countdown_t RunoutResponseDelayed::mm_countdown; #if ENABLED(FILAMENT_MOTION_SENSOR) uint8_t FilamentSensorEncoder::motion_detected; #endif diff --git a/Marlin/src/feature/runout.h b/Marlin/src/feature/runout.h index a001459e9d..847413d25a 100644 --- a/Marlin/src/feature/runout.h +++ b/Marlin/src/feature/runout.h @@ -30,7 +30,8 @@ #include "../module/planner.h" #include "../module/stepper.h" // for block_t #include "../gcode/queue.h" -#include "../feature/pause.h" +#include "../feature/pause.h" // for did_pause_print +#include "../MarlinCore.h" // for printingIsActive() #include "../inc/MarlinConfig.h" @@ -50,9 +51,16 @@ #define HAS_FILAMENT_SWITCH 1 #endif -typedef Flags<8> runout_flags_t; +typedef Flags< + #if NUM_MOTION_SENSORS > NUM_RUNOUT_SENSORS + NUM_MOTION_SENSORS + #else + NUM_RUNOUT_SENSORS + #endif + > runout_flags_t; void event_filament_runout(const uint8_t extruder); +inline bool should_monitor_runout() { return did_pause_print || printingIsActive(); } template class TFilamentMonitor; @@ -128,7 +136,7 @@ class TFilamentMonitor : public FilamentMonitorBase { // Give the response a chance to update its counter. static void run() { - if (enabled && !filament_ran_out && (printingIsActive() || did_pause_print)) { + if (enabled && !filament_ran_out && should_monitor_runout()) { TERN_(HAS_FILAMENT_RUNOUT_DISTANCE, cli()); // Prevent RunoutResponseDelayed::block_completed from accumulating here response.run(); sensor.run(); @@ -340,8 +348,10 @@ class FilamentSensorBase { typedef struct { float runout[NUM_RUNOUT_SENSORS]; + Flags runout_reset; // Reset runout later #if ENABLED(FILAMENT_SWITCH_AND_MOTION) float motion[NUM_MOTION_SENSORS]; + Flags motion_reset; // Reset motion later #endif } countdown_t; @@ -350,7 +360,7 @@ class FilamentSensorBase { // during a runout condition. class RunoutResponseDelayed { private: - static volatile countdown_t mm_countdown; + static countdown_t mm_countdown; public: static float runout_distance_mm; @@ -389,26 +399,56 @@ class FilamentSensorBase { } static void filament_present(const uint8_t extruder) { - mm_countdown.runout[extruder] = runout_distance_mm; + if (mm_countdown.runout[extruder] < runout_distance_mm || did_pause_print) { + // Reset runout only if it is smaller than runout_distance or printing is paused. + // On Bowden systems retract may be larger than runout_distance_mm, so if retract + // was added leave it in place, or the following unretract will cause runout event. + mm_countdown.runout[extruder] = runout_distance_mm; + mm_countdown.runout_reset.clear(extruder); + } + else { + // If runout is larger than runout distance, we cannot reset right now, as Bowden and retract + // distance larger than runout_distance_mm leads to negative runout right after unretract. + // But we cannot ignore filament_present event. After unretract, runout will become smaller + // than runout_distance_mm and should be reset after that. So activate delayed reset. + mm_countdown.runout_reset.set(extruder); + } } #if ENABLED(FILAMENT_SWITCH_AND_MOTION) static void filament_motion_present(const uint8_t extruder) { - mm_countdown.motion[extruder] = runout_distance_mm; + // Same logic as filament_present + if (mm_countdown.motion[extruder] < runout_distance_mm || did_pause_print) { + mm_countdown.motion[extruder] = runout_distance_mm; + mm_countdown.motion_reset.clear(extruder); + } + else + mm_countdown.motion_reset.set(extruder); } #endif static void block_completed(const block_t * const b) { - if (b->steps.x || b->steps.y || b->steps.z || did_pause_print) { // Allow pause purge move to re-trigger runout state - // Only trigger on extrusion with XYZ movement to allow filament change and retract/recover. - const uint8_t e = b->extruder; - const int32_t steps = b->steps.e; - const float mm = (b->direction_bits.e ? steps : -steps) * planner.mm_per_step[E_AXIS_N(e)]; - if (e < NUM_RUNOUT_SENSORS) mm_countdown.runout[e] -= mm; - #if ENABLED(FILAMENT_SWITCH_AND_MOTION) - if (e < NUM_MOTION_SENSORS) mm_countdown.motion[e] -= mm; - #endif + const int32_t esteps = b->steps.e; + if (!esteps) return; + + // No calculation unless paused or printing + if (!should_monitor_runout()) return; + + // No need to ignore retract/unretract movement since they complement each other + const uint8_t e = b->extruder; + const float mm = (b->direction_bits.e ? esteps : -esteps) * planner.mm_per_step[E_AXIS_N(e)]; + + if (e < NUM_RUNOUT_SENSORS) { + mm_countdown.runout[e] -= mm; + if (mm_countdown.runout_reset[e]) filament_present(e); // Reset pending. Try to reset. } + + #if ENABLED(FILAMENT_SWITCH_AND_MOTION) + if (e < NUM_MOTION_SENSORS) { + mm_countdown.motion[e] -= mm; + if (mm_countdown.motion_reset[e]) filament_motion_present(e); // Reset pending. Try to reset. + } + #endif } }; From 6ba50aa6ea519ab5e80ec0152b100a0425c181a2 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 27 Jul 2023 00:21:22 +0000 Subject: [PATCH 642/659] [cron] Bump distribution date (2023-07-27) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 37e76fbecd..fe49645125 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-24" +//#define STRING_DISTRIBUTION_DATE "2023-07-27" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index f2ea158af9..260e1d4e9f 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-24" + #define STRING_DISTRIBUTION_DATE "2023-07-27" #endif /** From d036097bca52b128b421342afcdb908cb1d8d5ab Mon Sep 17 00:00:00 2001 From: lukasradek Date: Thu, 27 Jul 2023 23:08:21 +0200 Subject: [PATCH 643/659] =?UTF-8?q?=F0=9F=9A=B8=20Fix=20HD44780=20EDIT=5FI?= =?UTF-8?q?TEM=20position=20(#26073)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/HD44780/lcdprint_hd44780.cpp | 2 +- Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 3 ++- Marlin/src/lcd/TFTGLCD/lcdprint_TFTGLCD.cpp | 2 +- Marlin/src/lcd/dogm/lcdprint_u8g.cpp | 2 +- Marlin/src/lcd/lcdprint.cpp | 2 ++ 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Marlin/src/lcd/HD44780/lcdprint_hd44780.cpp b/Marlin/src/lcd/HD44780/lcdprint_hd44780.cpp index 48f5f97133..b05a8e81d9 100644 --- a/Marlin/src/lcd/HD44780/lcdprint_hd44780.cpp +++ b/Marlin/src/lcd/HD44780/lcdprint_hd44780.cpp @@ -1043,7 +1043,7 @@ int lcd_put_lchar_max(const lchar_t &c, const pixel_len_t max_length) { * @param cb_read_byte : the callback function to read one byte from the utf8_str (from RAM or ROM) * @param max_length : the pixel length of the string allowed (or number of slots in HD44780) * - * @return the number of pixels advanced + * @return the number of characters emitted * * Draw a UTF-8 string */ diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index b59ec150a1..897070c4dd 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -1212,7 +1212,8 @@ void MarlinUI::draw_status_screen() { void MenuEditItemBase::draw(const bool sel, const uint8_t row, FSTR_P const ftpl, const char * const inStr, const bool pgm) { const uint8_t vlen = inStr ? (pgm ? utf8_strlen_P(inStr) : utf8_strlen(inStr)) : 0; lcd_put_lchar(0, row, sel ? LCD_STR_ARROW_RIGHT[0] : ' '); - uint8_t n = lcd_put_u8str(ftpl, itemIndex, itemStringC, itemStringF, LCD_WIDTH - 2 - vlen); + uint8_t n = LCD_WIDTH - 2 - vlen; + n -= lcd_put_u8str(ftpl, itemIndex, itemStringC, itemStringF, n); if (vlen) { lcd_put_u8str(F(":")); for (; n; --n) lcd_put_u8str(F(" ")); diff --git a/Marlin/src/lcd/TFTGLCD/lcdprint_TFTGLCD.cpp b/Marlin/src/lcd/TFTGLCD/lcdprint_TFTGLCD.cpp index e681ff0a91..666ad2bbc1 100644 --- a/Marlin/src/lcd/TFTGLCD/lcdprint_TFTGLCD.cpp +++ b/Marlin/src/lcd/TFTGLCD/lcdprint_TFTGLCD.cpp @@ -1041,7 +1041,7 @@ int lcd_put_lchar_max(const lchar_t &c, const pixel_len_t max_length) { * @param cb_read_byte : the callback function to read one byte from the utf8_str (from RAM or ROM) * @param max_length : the pixel length of the string allowed (or number of slots in HD44780) * - * @return the number of pixels advanced + * @return the number of characters emitted * * Draw a UTF-8 string */ diff --git a/Marlin/src/lcd/dogm/lcdprint_u8g.cpp b/Marlin/src/lcd/dogm/lcdprint_u8g.cpp index ea0db357b6..a615c21766 100644 --- a/Marlin/src/lcd/dogm/lcdprint_u8g.cpp +++ b/Marlin/src/lcd/dogm/lcdprint_u8g.cpp @@ -26,7 +26,7 @@ void lcd_moveto(const lcd_uint_t col, const lcd_uint_t row) { u8g.setPrintPos(co void lcd_put_int(const int i) { u8g.print(i); } // return < 0 on error -// return the advanced pixels +// return the number of pixels advanced int lcd_put_lchar_max(const lchar_t &c, const pixel_len_t max_length) { if (c < 256) { u8g.print((char)c); diff --git a/Marlin/src/lcd/lcdprint.cpp b/Marlin/src/lcd/lcdprint.cpp index 162f01a12c..912344c14f 100644 --- a/Marlin/src/lcd/lcdprint.cpp +++ b/Marlin/src/lcd/lcdprint.cpp @@ -41,6 +41,8 @@ * ~ displays '1'....'11' for indexes 0 - 10 * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) * @ displays an axis name such as XYZUVW, or E for an extruder + * + * Return the given maxlen minus the number of characters emitted, i.e., the number of unused columns */ lcd_uint_t lcd_put_u8str_P(PGM_P const ptpl, const int8_t ind, const char *cstr/*=nullptr*/, FSTR_P const fstr/*=nullptr*/, const lcd_uint_t maxlen/*=LCD_WIDTH*/) { const uint8_t prop = USE_WIDE_GLYPH ? 2 : 1; From 6cc4dd10bc5504c38263b57ecf7e8b1e3d06e44e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 27 Jul 2023 17:20:03 -0500 Subject: [PATCH 644/659] =?UTF-8?q?=F0=9F=90=9B=20Fix=20hotend=20idle=20ti?= =?UTF-8?q?meout=20checks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/hotend_idle.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Marlin/src/feature/hotend_idle.cpp b/Marlin/src/feature/hotend_idle.cpp index f64fe7e3cf..050898e3b5 100644 --- a/Marlin/src/feature/hotend_idle.cpp +++ b/Marlin/src/feature/hotend_idle.cpp @@ -55,15 +55,15 @@ void HotendIdleProtection::check_hotends(const millis_t &ms) { if (!do_prot) next_protect_ms = 0; // No hotends are hot so cancel timeout else if (!next_protect_ms) // Timeout is possible? - next_protect_ms = ms + cfg.timeout * 1000; // Start timeout if not already set + next_protect_ms = ms + 1000UL * cfg.timeout; // Start timeout if not already set } void HotendIdleProtection::check_e_motion(const millis_t &ms) { static float old_e_position = 0; if (old_e_position != current_position.e) { - old_e_position = current_position.e; // Track filament motion - if (next_protect_ms) // If some heater is on then... - next_protect_ms = ms + cfg.timeout * 1000; // ...delay the timeout till later + old_e_position = current_position.e; // Track filament motion + if (next_protect_ms) // If some heater is on then... + next_protect_ms = ms + 1000UL * cfg.timeout; // ...delay the timeout till later } } From 6f8178598f417a7963b26ebe091c0b3ee69f46dd Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 28 Jul 2023 00:21:36 +0000 Subject: [PATCH 645/659] [cron] Bump distribution date (2023-07-28) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index fe49645125..a6255cc44e 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-27" +//#define STRING_DISTRIBUTION_DATE "2023-07-28" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 260e1d4e9f..5e98f16cc2 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-27" + #define STRING_DISTRIBUTION_DATE "2023-07-28" #endif /** From 2a82ca87b03ab3b819f69b571ca44dd0a0e1afdf Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 27 Jul 2023 23:03:36 -0500 Subject: [PATCH 646/659] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20ProUI=20compile=20?= =?UTF-8?q?without=20Advanced=20Pause?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/e3v2/proui/dwin.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index 7aa9b1760d..2c52b0cabc 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -3437,20 +3437,22 @@ void drawMotionMenu() { updateMenu(motionMenu); } -#if HAS_PREHEAT - void drawPreheatHotendMenu() { - checkkey = ID_Menu; - if (SET_MENU(preheatHotendMenu, MSG_PREHEAT_HOTEND, 1 + PREHEAT_COUNT)) { - BACK_ITEM(drawFilamentManMenu); - #define _ITEM_PREHEAT_HE(N) MENU_ITEM(ICON_Preheat##N, MSG_PREHEAT_##N, onDrawMenuItem, DoPreheatHotend##N); - REPEAT_1(PREHEAT_COUNT, _ITEM_PREHEAT_HE) - } - updateMenu(preheatHotendMenu); - } -#endif - #if ENABLED(ADVANCED_PAUSE_FEATURE) + #if HAS_PREHEAT + + void drawPreheatHotendMenu() { + checkkey = ID_Menu; + if (SET_MENU(preheatHotendMenu, MSG_PREHEAT_HOTEND, 1 + PREHEAT_COUNT)) { + BACK_ITEM(drawFilamentManMenu); + #define _ITEM_PREHEAT_HE(N) MENU_ITEM(ICON_Preheat##N, MSG_PREHEAT_##N, onDrawMenuItem, DoPreheatHotend##N); + REPEAT_1(PREHEAT_COUNT, _ITEM_PREHEAT_HE) + } + updateMenu(preheatHotendMenu); + } + + #endif + void drawFilamentManMenu() { checkkey = ID_Menu; if (SET_MENU(filamentMenu, MSG_FILAMENT_MAN, 6)) { From ae9f2710f0a0a1c47bd384a803e3345117b6dd49 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 28 Jul 2023 16:53:01 -0500 Subject: [PATCH 647/659] =?UTF-8?q?=F0=9F=94=A8=20Old=20renamed=20AVRs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ini/renamed.ini | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ini/renamed.ini b/ini/renamed.ini index 9d2706e3b3..91ac55f5b2 100644 --- a/ini/renamed.ini +++ b/ini/renamed.ini @@ -21,6 +21,12 @@ board = genericSTM32F103RE # List of environment names that are no longer used # +[env:megaatmega1280] ;=> mega1280 +extends = renamed + +[env:megaatmega2560] ;=> mega2560 +extends = renamed + [env:STM32F103RET6_creality_maple] ;=> STM32F103RE_creality_maple extends = renamed From 347a7dc71e185f7ad7144d69e66cda10eb4cdc9e Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 29 Jul 2023 00:21:43 +0000 Subject: [PATCH 648/659] [cron] Bump distribution date (2023-07-29) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index a6255cc44e..59620dff24 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-28" +//#define STRING_DISTRIBUTION_DATE "2023-07-29" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 5e98f16cc2..f9be1afb2c 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-28" + #define STRING_DISTRIBUTION_DATE "2023-07-29" #endif /** From abd1896ce2cd37a184fc1a237482b2b0a3c16ae2 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sun, 30 Jul 2023 11:30:56 +1200 Subject: [PATCH 649/659] =?UTF-8?q?=F0=9F=94=A7=20STM32=20support=209=20UA?= =?UTF-8?q?RTs=20(#26072)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/STM32/HAL.h | 30 +++++++++++++-------------- Marlin/src/HAL/STM32/MarlinSerial.cpp | 9 ++++++++ Marlin/src/HAL/STM32/MinSerial.cpp | 7 +++++-- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/Marlin/src/HAL/STM32/HAL.h b/Marlin/src/HAL/STM32/HAL.h index 013390fcaf..37a718b08d 100644 --- a/Marlin/src/HAL/STM32/HAL.h +++ b/Marlin/src/HAL/STM32/HAL.h @@ -57,61 +57,61 @@ #define _MSERIAL(X) MSerial##X #define MSERIAL(X) _MSERIAL(X) -#if WITHIN(SERIAL_PORT, 1, 6) +#if WITHIN(SERIAL_PORT, 1, 9) #define MYSERIAL1 MSERIAL(SERIAL_PORT) #elif !defined(USBCON) - #error "SERIAL_PORT must be from 1 to 6." + #error "SERIAL_PORT must be from 1 to 9." #elif SERIAL_PORT == -1 #define MYSERIAL1 MSerialUSB #else - #error "SERIAL_PORT must be from 1 to 6, or -1 for Native USB." + #error "SERIAL_PORT must be from 1 to 9, or -1 for Native USB." #endif #ifdef SERIAL_PORT_2 - #if WITHIN(SERIAL_PORT_2, 1, 6) + #if WITHIN(SERIAL_PORT_2, 1, 9) #define MYSERIAL2 MSERIAL(SERIAL_PORT_2) #elif !defined(USBCON) - #error "SERIAL_PORT_2 must be from 1 to 6." + #error "SERIAL_PORT_2 must be from 1 to 9." #elif SERIAL_PORT_2 == -1 #define MYSERIAL2 MSerialUSB #else - #error "SERIAL_PORT_2 must be from 1 to 6, or -1 for Native USB." + #error "SERIAL_PORT_2 must be from 1 to 9, or -1 for Native USB." #endif #endif #ifdef SERIAL_PORT_3 - #if WITHIN(SERIAL_PORT_3, 1, 6) + #if WITHIN(SERIAL_PORT_3, 1, 9) #define MYSERIAL3 MSERIAL(SERIAL_PORT_3) #elif !defined(USBCON) - #error "SERIAL_PORT_3 must be from 1 to 6." + #error "SERIAL_PORT_3 must be from 1 to 9." #elif SERIAL_PORT_3 == -1 #define MYSERIAL3 MSerialUSB #else - #error "SERIAL_PORT_3 must be from 1 to 6, or -1 for Native USB." + #error "SERIAL_PORT_3 must be from 1 to 9, or -1 for Native USB." #endif #endif #ifdef MMU2_SERIAL_PORT - #if WITHIN(MMU2_SERIAL_PORT, 1, 6) + #if WITHIN(MMU2_SERIAL_PORT, 1, 9) #define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT) #elif !defined(USBCON) - #error "MMU2_SERIAL_PORT must be from 1 to 6." + #error "MMU2_SERIAL_PORT must be from 1 to 9." #elif MMU2_SERIAL_PORT == -1 #define MMU2_SERIAL MSerialUSB #else - #error "MMU2_SERIAL_PORT must be from 1 to 6, or -1 for Native USB." + #error "MMU2_SERIAL_PORT must be from 1 to 9, or -1 for Native USB." #endif #endif #ifdef LCD_SERIAL_PORT - #if WITHIN(LCD_SERIAL_PORT, 1, 6) + #if WITHIN(LCD_SERIAL_PORT, 1, 9) #define LCD_SERIAL MSERIAL(LCD_SERIAL_PORT) #elif !defined(USBCON) - #error "LCD_SERIAL_PORT must be from 1 to 6." + #error "LCD_SERIAL_PORT must be from 1 to 9." #elif LCD_SERIAL_PORT == -1 #define LCD_SERIAL MSerialUSB #else - #error "LCD_SERIAL_PORT must be from 1 to 6, or -1 for Native USB." + #error "LCD_SERIAL_PORT must be from 1 to 9, or -1 for Native USB." #endif #if HAS_DGUS_LCD #define LCD_SERIAL_TX_BUFFER_FREE() LCD_SERIAL.availableForWrite() diff --git a/Marlin/src/HAL/STM32/MarlinSerial.cpp b/Marlin/src/HAL/STM32/MarlinSerial.cpp index 37a8f40fd0..9f0b003a31 100644 --- a/Marlin/src/HAL/STM32/MarlinSerial.cpp +++ b/Marlin/src/HAL/STM32/MarlinSerial.cpp @@ -37,6 +37,15 @@ #ifndef USART5 #define USART5 UART5 #endif +#ifndef USART7 + #define USART7 UART7 +#endif +#ifndef USART8 + #define USART8 UART8 +#endif +#ifndef USART9 + #define USART9 UART9 +#endif #define DECLARE_SERIAL_PORT(ser_num) \ void _rx_complete_irq_ ## ser_num (serial_t * obj); \ diff --git a/Marlin/src/HAL/STM32/MinSerial.cpp b/Marlin/src/HAL/STM32/MinSerial.cpp index c2260f4f26..f1fc806acb 100644 --- a/Marlin/src/HAL/STM32/MinSerial.cpp +++ b/Marlin/src/HAL/STM32/MinSerial.cpp @@ -45,7 +45,7 @@ struct USARTMin { volatile uint32_t CR2; }; -#if WITHIN(SERIAL_PORT, 1, 6) +#if WITHIN(SERIAL_PORT, 1, 9) // Depending on the CPU, the serial port is different for USART1 static const uintptr_t regsAddr[] = { TERN(STM32F1xx, 0x40013800, 0x40011000), // USART1 @@ -54,6 +54,9 @@ struct USARTMin { 0x40004C00, // UART4_BASE 0x40005000, // UART5_BASE 0x40011400 // USART6 + 0x40007800 // UART7_BASE + 0x40007C00 // UART8_BASE + 0x40011800 // UART9_BASE }; static USARTMin * regs = (USARTMin*)regsAddr[SERIAL_PORT - 1]; #endif @@ -116,7 +119,7 @@ static void TXBegin() { // A SW memory barrier, to ensure GCC does not overoptimize loops #define sw_barrier() __asm__ volatile("": : :"memory"); static void TX(char c) { - #if WITHIN(SERIAL_PORT, 1, 6) + #if WITHIN(SERIAL_PORT, 1, 9) constexpr uint32_t usart_sr_txe = _BV(7); while (!(regs->SR & usart_sr_txe)) { hal.watchdog_refresh(); From 2c9bc872e788a2281ca9b64a135ca1a53004f9b5 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sun, 30 Jul 2023 11:34:16 +1200 Subject: [PATCH 650/659] =?UTF-8?q?=F0=9F=94=A7=20Check=20AVR=20Rx/Tx=20co?= =?UTF-8?q?nflict=20w/=20LCD=5FEN=20(#26069)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/AVR/inc/SanityCheck.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Marlin/src/HAL/AVR/inc/SanityCheck.h b/Marlin/src/HAL/AVR/inc/SanityCheck.h index 6a7e172889..85ee683685 100644 --- a/Marlin/src/HAL/AVR/inc/SanityCheck.h +++ b/Marlin/src/HAL/AVR/inc/SanityCheck.h @@ -33,13 +33,13 @@ * Check for common serial pin conflicts */ #define CHECK_SERIAL_PIN(N) ( \ - X_STOP_PIN == N || Y_STOP_PIN == N || Z_STOP_PIN == N \ - || X_MIN_PIN == N || Y_MIN_PIN == N || Z_MIN_PIN == N \ - || X_MAX_PIN == N || Y_MAX_PIN == N || Z_MAX_PIN == N \ - || X_STEP_PIN == N || Y_STEP_PIN == N || Z_STEP_PIN == N \ - || X_DIR_PIN == N || Y_DIR_PIN == N || Z_DIR_PIN == N \ - || X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \ - || BTN_EN1 == N || BTN_EN2 == N \ + X_STOP_PIN == N || Y_STOP_PIN == N || Z_STOP_PIN == N \ + || X_MIN_PIN == N || Y_MIN_PIN == N || Z_MIN_PIN == N \ + || X_MAX_PIN == N || Y_MAX_PIN == N || Z_MAX_PIN == N \ + || X_STEP_PIN == N || Y_STEP_PIN == N || Z_STEP_PIN == N \ + || X_DIR_PIN == N || Y_DIR_PIN == N || Z_DIR_PIN == N \ + || X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \ + || BTN_EN1 == N || BTN_EN2 == N || LCD_PINS_EN == N \ ) #if SERIAL_IN_USE(0) // D0-D1. No known conflicts. From 5da7143fe5a73f7aa636c833e95cf695d070faf1 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 30 Jul 2023 00:24:18 +0000 Subject: [PATCH 651/659] [cron] Bump distribution date (2023-07-30) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 59620dff24..c927330c90 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-29" +//#define STRING_DISTRIBUTION_DATE "2023-07-30" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index f9be1afb2c..5f52cd99ea 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-29" + #define STRING_DISTRIBUTION_DATE "2023-07-30" #endif /** From bed26734a28175f7ef9669d5190bf7ebc6227223 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 1 Aug 2023 23:03:06 -0500 Subject: [PATCH 652/659] =?UTF-8?q?=F0=9F=94=A7=20More=20endstops=20refact?= =?UTF-8?q?oring=20(#25758)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 15 + Marlin/src/HAL/AVR/endstop_interrupts.h | 2 +- Marlin/src/HAL/DUE/endstop_interrupts.h | 2 +- Marlin/src/HAL/ESP32/endstop_interrupts.h | 2 +- Marlin/src/HAL/LPC1768/endstop_interrupts.h | 2 +- Marlin/src/HAL/SAMD21/endstop_interrupts.h | 58 +-- Marlin/src/HAL/SAMD51/endstop_interrupts.h | 58 +-- Marlin/src/HAL/STM32/endstop_interrupts.h | 2 +- Marlin/src/HAL/STM32F1/endstop_interrupts.h | 2 +- .../src/HAL/TEENSY31_32/endstop_interrupts.h | 2 +- .../src/HAL/TEENSY35_36/endstop_interrupts.h | 2 +- .../src/HAL/TEENSY40_41/endstop_interrupts.h | 2 +- Marlin/src/gcode/calibrate/G28.cpp | 109 ++-- Marlin/src/gcode/calibrate/G33.cpp | 4 +- Marlin/src/inc/Conditionals_LCD.h | 24 +- Marlin/src/inc/Conditionals_post.h | 263 +++++++--- Marlin/src/inc/SanityCheck.h | 126 ++--- Marlin/src/lcd/e3v2/proui/endstop_diag.cpp | 12 +- .../generic/endstop_state_screen.cpp | 2 +- Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp | 102 +++- Marlin/src/lcd/menu/menu_configuration.cpp | 53 +- Marlin/src/module/endstops.cpp | 484 +++++++++--------- Marlin/src/module/endstops.h | 96 ++-- Marlin/src/module/motion.cpp | 126 +++-- Marlin/src/module/probe.cpp | 32 +- buildroot/tests/BIGTREE_BTT002 | 4 +- buildroot/tests/FYSETC_F6 | 11 +- buildroot/tests/LPC1769 | 7 +- buildroot/tests/SAMD21_minitronics20 | 3 +- buildroot/tests/SAMD51_grandcentral_m4 | 3 +- buildroot/tests/mega1280 | 1 + buildroot/tests/teensy35 | 3 +- 32 files changed, 883 insertions(+), 731 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 3127d59e8b..dbba2e60ed 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1751,6 +1751,21 @@ //#define V_HOME_DIR -1 //#define W_HOME_DIR -1 +/** + * Safety Stops + * If an axis has endstops on both ends the one specified above is used for + * homing, while the other can be used for things like SD_ABORT_ON_ENDSTOP_HIT. + */ +//#define X_SAFETY_STOP +//#define Y_SAFETY_STOP +//#define Z_SAFETY_STOP +//#define I_SAFETY_STOP +//#define J_SAFETY_STOP +//#define K_SAFETY_STOP +//#define U_SAFETY_STOP +//#define V_SAFETY_STOP +//#define W_SAFETY_STOP + // @section geometry // The size of the printable area diff --git a/Marlin/src/HAL/AVR/endstop_interrupts.h b/Marlin/src/HAL/AVR/endstop_interrupts.h index ac827f1842..2532624d39 100644 --- a/Marlin/src/HAL/AVR/endstop_interrupts.h +++ b/Marlin/src/HAL/AVR/endstop_interrupts.h @@ -160,7 +160,7 @@ void setup_endstop_interrupts() { pciSetup(Z_MAX_PIN); #endif #endif - #if HAS_Z_MIN_PIN + #if USE_Z_MIN #if (digitalPinToInterrupt(Z_MIN_PIN) != NOT_AN_INTERRUPT) _ATTACH(Z_MIN_PIN); #else diff --git a/Marlin/src/HAL/DUE/endstop_interrupts.h b/Marlin/src/HAL/DUE/endstop_interrupts.h index 28510fb508..954eb625a5 100644 --- a/Marlin/src/HAL/DUE/endstop_interrupts.h +++ b/Marlin/src/HAL/DUE/endstop_interrupts.h @@ -52,7 +52,7 @@ void setup_endstop_interrupts() { TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN)); TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN)); TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(USE_Z_MIN, _ATTACH(Z_MIN_PIN)); TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN)); TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN)); TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN)); diff --git a/Marlin/src/HAL/ESP32/endstop_interrupts.h b/Marlin/src/HAL/ESP32/endstop_interrupts.h index 43f4975d46..1377345992 100644 --- a/Marlin/src/HAL/ESP32/endstop_interrupts.h +++ b/Marlin/src/HAL/ESP32/endstop_interrupts.h @@ -47,7 +47,7 @@ void setup_endstop_interrupts() { TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN)); TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN)); TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(USE_Z_MIN, _ATTACH(Z_MIN_PIN)); TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN)); TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN)); TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN)); diff --git a/Marlin/src/HAL/LPC1768/endstop_interrupts.h b/Marlin/src/HAL/LPC1768/endstop_interrupts.h index cd9de25477..7a67b958b4 100644 --- a/Marlin/src/HAL/LPC1768/endstop_interrupts.h +++ b/Marlin/src/HAL/LPC1768/endstop_interrupts.h @@ -74,7 +74,7 @@ void setup_endstop_interrupts() { #endif _ATTACH(Z_MAX_PIN); #endif - #if HAS_Z_MIN_PIN + #if USE_Z_MIN #if !LPC1768_PIN_INTERRUPT_M(Z_MIN_PIN) #error "Z_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif diff --git a/Marlin/src/HAL/SAMD21/endstop_interrupts.h b/Marlin/src/HAL/SAMD21/endstop_interrupts.h index 31414a39e3..37fdb7504b 100644 --- a/Marlin/src/HAL/SAMD21/endstop_interrupts.h +++ b/Marlin/src/HAL/SAMD21/endstop_interrupts.h @@ -54,34 +54,34 @@ #include "../../module/endstops.h" #define MATCH_EILINE(P1,P2) (P1 != P2 && PIN_TO_EILINE(P1) == PIN_TO_EILINE(P2)) -#define MATCH_X_MAX_EILINE(P) TERN0(USE_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN)) -#define MATCH_X_MIN_EILINE(P) TERN0(USE_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN)) -#define MATCH_Y_MAX_EILINE(P) TERN0(USE_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN)) -#define MATCH_Y_MIN_EILINE(P) TERN0(USE_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN)) -#define MATCH_Z_MAX_EILINE(P) TERN0(USE_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN)) -#define MATCH_Z_MIN_EILINE(P) TERN0(HAS_Z_MIN_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PIN)) -#define MATCH_I_MAX_EILINE(P) TERN0(USE_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN)) -#define MATCH_I_MIN_EILINE(P) TERN0(USE_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN)) -#define MATCH_J_MAX_EILINE(P) TERN0(USE_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN)) -#define MATCH_J_MIN_EILINE(P) TERN0(USE_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN)) -#define MATCH_K_MAX_EILINE(P) TERN0(USE_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN)) -#define MATCH_K_MIN_EILINE(P) TERN0(USE_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN)) -#define MATCH_U_MAX_EILINE(P) TERN0(USE_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN)) -#define MATCH_U_MIN_EILINE(P) TERN0(USE_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN)) -#define MATCH_V_MAX_EILINE(P) TERN0(USE_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN)) -#define MATCH_V_MIN_EILINE(P) TERN0(USE_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN)) -#define MATCH_W_MAX_EILINE(P) TERN0(USE_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN)) -#define MATCH_W_MIN_EILINE(P) TERN0(USE_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN)) -#define MATCH_X2_MAX_EILINE(P) TERN0(USE_X2_MAX, DEFER4(MATCH_EILINE)(P, X2_MAX_PIN)) -#define MATCH_X2_MIN_EILINE(P) TERN0(USE_X2_MIN, DEFER4(MATCH_EILINE)(P, X2_MIN_PIN)) -#define MATCH_Y2_MAX_EILINE(P) TERN0(USE_Y2_MAX, DEFER4(MATCH_EILINE)(P, Y2_MAX_PIN)) -#define MATCH_Y2_MIN_EILINE(P) TERN0(USE_Y2_MIN, DEFER4(MATCH_EILINE)(P, Y2_MIN_PIN)) -#define MATCH_Z2_MAX_EILINE(P) TERN0(USE_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN)) -#define MATCH_Z2_MIN_EILINE(P) TERN0(USE_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN)) -#define MATCH_Z3_MAX_EILINE(P) TERN0(USE_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN)) -#define MATCH_Z3_MIN_EILINE(P) TERN0(USE_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN)) -#define MATCH_Z4_MAX_EILINE(P) TERN0(USE_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN)) -#define MATCH_Z4_MIN_EILINE(P) TERN0(USE_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN)) +#define MATCH_X_MAX_EILINE(P) TERN0(USE_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN)) +#define MATCH_X_MIN_EILINE(P) TERN0(USE_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN)) +#define MATCH_Y_MAX_EILINE(P) TERN0(USE_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN)) +#define MATCH_Y_MIN_EILINE(P) TERN0(USE_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN)) +#define MATCH_Z_MAX_EILINE(P) TERN0(USE_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN)) +#define MATCH_Z_MIN_EILINE(P) TERN0(USE_Z_MIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PIN)) +#define MATCH_I_MAX_EILINE(P) TERN0(USE_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN)) +#define MATCH_I_MIN_EILINE(P) TERN0(USE_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN)) +#define MATCH_J_MAX_EILINE(P) TERN0(USE_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN)) +#define MATCH_J_MIN_EILINE(P) TERN0(USE_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN)) +#define MATCH_K_MAX_EILINE(P) TERN0(USE_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN)) +#define MATCH_K_MIN_EILINE(P) TERN0(USE_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN)) +#define MATCH_U_MAX_EILINE(P) TERN0(USE_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN)) +#define MATCH_U_MIN_EILINE(P) TERN0(USE_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN)) +#define MATCH_V_MAX_EILINE(P) TERN0(USE_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN)) +#define MATCH_V_MIN_EILINE(P) TERN0(USE_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN)) +#define MATCH_W_MAX_EILINE(P) TERN0(USE_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN)) +#define MATCH_W_MIN_EILINE(P) TERN0(USE_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN)) +#define MATCH_X2_MAX_EILINE(P) TERN0(USE_X2_MAX, DEFER4(MATCH_EILINE)(P, X2_MAX_PIN)) +#define MATCH_X2_MIN_EILINE(P) TERN0(USE_X2_MIN, DEFER4(MATCH_EILINE)(P, X2_MIN_PIN)) +#define MATCH_Y2_MAX_EILINE(P) TERN0(USE_Y2_MAX, DEFER4(MATCH_EILINE)(P, Y2_MAX_PIN)) +#define MATCH_Y2_MIN_EILINE(P) TERN0(USE_Y2_MIN, DEFER4(MATCH_EILINE)(P, Y2_MIN_PIN)) +#define MATCH_Z2_MAX_EILINE(P) TERN0(USE_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN)) +#define MATCH_Z2_MIN_EILINE(P) TERN0(USE_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN)) +#define MATCH_Z3_MAX_EILINE(P) TERN0(USE_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN)) +#define MATCH_Z3_MIN_EILINE(P) TERN0(USE_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN)) +#define MATCH_Z4_MAX_EILINE(P) TERN0(USE_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN)) +#define MATCH_Z4_MIN_EILINE(P) TERN0(USE_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN)) #define MATCH_Z_MIN_PROBE_EILINE(P) TERN0(USE_Z_MIN_PROBE, DEFER4(MATCH_EILINE)(P, Z_MIN_PROBE_PIN)) #define AVAILABLE_EILINE(P) ( PIN_TO_EILINE(P) != -1 \ @@ -136,7 +136,7 @@ void setup_endstop_interrupts() { #endif _ATTACH(Z_MAX_PIN); #endif - #if HAS_Z_MIN_PIN + #if USE_Z_MIN #if !AVAILABLE_EILINE(Z_MIN_PIN) #error "Z_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif diff --git a/Marlin/src/HAL/SAMD51/endstop_interrupts.h b/Marlin/src/HAL/SAMD51/endstop_interrupts.h index 40f78baf87..84b6c46da9 100644 --- a/Marlin/src/HAL/SAMD51/endstop_interrupts.h +++ b/Marlin/src/HAL/SAMD51/endstop_interrupts.h @@ -53,34 +53,34 @@ #include "../../module/endstops.h" #define MATCH_EILINE(P1,P2) (P1 != P2 && PIN_TO_EILINE(P1) == PIN_TO_EILINE(P2)) -#define MATCH_X_MAX_EILINE(P) TERN0(USE_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN)) -#define MATCH_X_MIN_EILINE(P) TERN0(USE_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN)) -#define MATCH_Y_MAX_EILINE(P) TERN0(USE_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN)) -#define MATCH_Y_MIN_EILINE(P) TERN0(USE_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN)) -#define MATCH_Z_MAX_EILINE(P) TERN0(USE_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN)) -#define MATCH_Z_MIN_EILINE(P) TERN0(HAS_Z_MIN_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PIN)) -#define MATCH_I_MAX_EILINE(P) TERN0(USE_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN)) -#define MATCH_I_MIN_EILINE(P) TERN0(USE_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN)) -#define MATCH_J_MAX_EILINE(P) TERN0(USE_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN)) -#define MATCH_J_MIN_EILINE(P) TERN0(USE_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN)) -#define MATCH_K_MAX_EILINE(P) TERN0(USE_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN)) -#define MATCH_K_MIN_EILINE(P) TERN0(USE_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN)) -#define MATCH_U_MAX_EILINE(P) TERN0(USE_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN)) -#define MATCH_U_MIN_EILINE(P) TERN0(USE_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN)) -#define MATCH_V_MAX_EILINE(P) TERN0(USE_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN)) -#define MATCH_V_MIN_EILINE(P) TERN0(USE_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN)) -#define MATCH_W_MAX_EILINE(P) TERN0(USE_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN)) -#define MATCH_W_MIN_EILINE(P) TERN0(USE_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN)) -#define MATCH_X2_MAX_EILINE(P) TERN0(USE_X2_MAX, DEFER4(MATCH_EILINE)(P, X2_MAX_PIN)) -#define MATCH_X2_MIN_EILINE(P) TERN0(USE_X2_MIN, DEFER4(MATCH_EILINE)(P, X2_MIN_PIN)) -#define MATCH_Y2_MAX_EILINE(P) TERN0(USE_Y2_MAX, DEFER4(MATCH_EILINE)(P, Y2_MAX_PIN)) -#define MATCH_Y2_MIN_EILINE(P) TERN0(USE_Y2_MIN, DEFER4(MATCH_EILINE)(P, Y2_MIN_PIN)) -#define MATCH_Z2_MAX_EILINE(P) TERN0(USE_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN)) -#define MATCH_Z2_MIN_EILINE(P) TERN0(USE_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN)) -#define MATCH_Z3_MAX_EILINE(P) TERN0(USE_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN)) -#define MATCH_Z3_MIN_EILINE(P) TERN0(USE_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN)) -#define MATCH_Z4_MAX_EILINE(P) TERN0(USE_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN)) -#define MATCH_Z4_MIN_EILINE(P) TERN0(USE_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN)) +#define MATCH_X_MAX_EILINE(P) TERN0(USE_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN)) +#define MATCH_X_MIN_EILINE(P) TERN0(USE_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN)) +#define MATCH_Y_MAX_EILINE(P) TERN0(USE_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN)) +#define MATCH_Y_MIN_EILINE(P) TERN0(USE_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN)) +#define MATCH_Z_MAX_EILINE(P) TERN0(USE_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN)) +#define MATCH_Z_MIN_EILINE(P) TERN0(USE_Z_MIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PIN)) +#define MATCH_I_MAX_EILINE(P) TERN0(USE_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN)) +#define MATCH_I_MIN_EILINE(P) TERN0(USE_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN)) +#define MATCH_J_MAX_EILINE(P) TERN0(USE_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN)) +#define MATCH_J_MIN_EILINE(P) TERN0(USE_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN)) +#define MATCH_K_MAX_EILINE(P) TERN0(USE_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN)) +#define MATCH_K_MIN_EILINE(P) TERN0(USE_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN)) +#define MATCH_U_MAX_EILINE(P) TERN0(USE_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN)) +#define MATCH_U_MIN_EILINE(P) TERN0(USE_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN)) +#define MATCH_V_MAX_EILINE(P) TERN0(USE_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN)) +#define MATCH_V_MIN_EILINE(P) TERN0(USE_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN)) +#define MATCH_W_MAX_EILINE(P) TERN0(USE_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN)) +#define MATCH_W_MIN_EILINE(P) TERN0(USE_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN)) +#define MATCH_X2_MAX_EILINE(P) TERN0(USE_X2_MAX, DEFER4(MATCH_EILINE)(P, X2_MAX_PIN)) +#define MATCH_X2_MIN_EILINE(P) TERN0(USE_X2_MIN, DEFER4(MATCH_EILINE)(P, X2_MIN_PIN)) +#define MATCH_Y2_MAX_EILINE(P) TERN0(USE_Y2_MAX, DEFER4(MATCH_EILINE)(P, Y2_MAX_PIN)) +#define MATCH_Y2_MIN_EILINE(P) TERN0(USE_Y2_MIN, DEFER4(MATCH_EILINE)(P, Y2_MIN_PIN)) +#define MATCH_Z2_MAX_EILINE(P) TERN0(USE_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN)) +#define MATCH_Z2_MIN_EILINE(P) TERN0(USE_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN)) +#define MATCH_Z3_MAX_EILINE(P) TERN0(USE_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN)) +#define MATCH_Z3_MIN_EILINE(P) TERN0(USE_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN)) +#define MATCH_Z4_MAX_EILINE(P) TERN0(USE_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN)) +#define MATCH_Z4_MIN_EILINE(P) TERN0(USE_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN)) #define MATCH_Z_MIN_PROBE_EILINE(P) TERN0(USE_Z_MIN_PROBE, DEFER4(MATCH_EILINE)(P, Z_MIN_PROBE_PIN)) #define AVAILABLE_EILINE(P) ( PIN_TO_EILINE(P) != -1 \ @@ -135,7 +135,7 @@ void setup_endstop_interrupts() { #endif _ATTACH(Z_MAX_PIN); #endif - #if HAS_Z_MIN_PIN + #if USE_Z_MIN #if !AVAILABLE_EILINE(Z_MIN_PIN) #error "Z_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif diff --git a/Marlin/src/HAL/STM32/endstop_interrupts.h b/Marlin/src/HAL/STM32/endstop_interrupts.h index 5ae228d3f8..0c92053d42 100644 --- a/Marlin/src/HAL/STM32/endstop_interrupts.h +++ b/Marlin/src/HAL/STM32/endstop_interrupts.h @@ -34,7 +34,7 @@ void setup_endstop_interrupts() { TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN)); TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN)); TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(USE_Z_MIN, _ATTACH(Z_MIN_PIN)); TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN)); TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN)); TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN)); diff --git a/Marlin/src/HAL/STM32F1/endstop_interrupts.h b/Marlin/src/HAL/STM32F1/endstop_interrupts.h index 6febcec5d0..6ed920183b 100644 --- a/Marlin/src/HAL/STM32F1/endstop_interrupts.h +++ b/Marlin/src/HAL/STM32F1/endstop_interrupts.h @@ -59,7 +59,7 @@ void setup_endstop_interrupts() { TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN)); TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN)); TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(USE_Z_MIN, _ATTACH(Z_MIN_PIN)); TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN)); TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN)); TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN)); diff --git a/Marlin/src/HAL/TEENSY31_32/endstop_interrupts.h b/Marlin/src/HAL/TEENSY31_32/endstop_interrupts.h index 28510fb508..954eb625a5 100644 --- a/Marlin/src/HAL/TEENSY31_32/endstop_interrupts.h +++ b/Marlin/src/HAL/TEENSY31_32/endstop_interrupts.h @@ -52,7 +52,7 @@ void setup_endstop_interrupts() { TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN)); TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN)); TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(USE_Z_MIN, _ATTACH(Z_MIN_PIN)); TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN)); TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN)); TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN)); diff --git a/Marlin/src/HAL/TEENSY35_36/endstop_interrupts.h b/Marlin/src/HAL/TEENSY35_36/endstop_interrupts.h index 505434cd89..bc8e177fb7 100644 --- a/Marlin/src/HAL/TEENSY35_36/endstop_interrupts.h +++ b/Marlin/src/HAL/TEENSY35_36/endstop_interrupts.h @@ -51,7 +51,7 @@ void setup_endstop_interrupts() { TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN)); TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN)); TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(USE_Z_MIN, _ATTACH(Z_MIN_PIN)); TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN)); TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN)); TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN)); diff --git a/Marlin/src/HAL/TEENSY40_41/endstop_interrupts.h b/Marlin/src/HAL/TEENSY40_41/endstop_interrupts.h index 325d97daeb..722912c890 100644 --- a/Marlin/src/HAL/TEENSY40_41/endstop_interrupts.h +++ b/Marlin/src/HAL/TEENSY40_41/endstop_interrupts.h @@ -51,7 +51,7 @@ void setup_endstop_interrupts() { TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN)); TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN)); TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN)); - TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN)); + TERN_(USE_Z_MIN, _ATTACH(Z_MIN_PIN)); TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN)); TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN)); TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN)); diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index b364c0382c..fd034f0ba6 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -254,69 +254,67 @@ void GcodeSuite::G28() { // Reset to the XY plane TERN_(CNC_WORKSPACE_PLANES, workspace_plane = PLANE_XY); - #define HAS_CURRENT_HOME(N) (defined(N##_CURRENT_HOME) && N##_CURRENT_HOME != N##_CURRENT) - #if HAS_CURRENT_HOME(X) || HAS_CURRENT_HOME(X2) || HAS_CURRENT_HOME(Y) || HAS_CURRENT_HOME(Y2) || (ENABLED(DELTA) && HAS_CURRENT_HOME(Z)) || HAS_CURRENT_HOME(I) || HAS_CURRENT_HOME(J) || HAS_CURRENT_HOME(K) || HAS_CURRENT_HOME(U) || HAS_CURRENT_HOME(V) || HAS_CURRENT_HOME(W) + #define _OR_HAS_CURR_HOME(N) HAS_CURRENT_HOME(N) || + #if MAIN_AXIS_MAP(_OR_HAS_CURR_HOME) MAP(_OR_HAS_CURR_HOME, X2, Y2, Z2, Z3, Z4) 0 #define HAS_HOMING_CURRENT 1 #endif #if HAS_HOMING_CURRENT - auto debug_current = [](FSTR_P const s, const int16_t a, const int16_t b) { - DEBUG_ECHOLN(s, F(" current: "), a, F(" -> "), b); - }; + + #if ENABLED(DEBUG_LEVELING_FEATURE) + auto debug_current = [](FSTR_P const s, const int16_t a, const int16_t b) { + if (DEBUGGING(LEVELING)) { DEBUG_ECHOF(s); DEBUG_ECHOLNPGM(" current: ", a, " -> ", b); } + }; + #else + #define debug_current(...) + #endif + + #define _SAVE_SET_CURRENT(A) \ + const int16_t saved_current_##A = stepper##A.getMilliamps(); \ + stepper##A.rms_current(A##_CURRENT_HOME); \ + debug_current(F(STR_##A), saved_current_##A, A##_CURRENT_HOME) + #if HAS_CURRENT_HOME(X) - const int16_t tmc_save_current_X = stepperX.getMilliamps(); - stepperX.rms_current(X_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_X), tmc_save_current_X, X_CURRENT_HOME); + _SAVE_SET_CURRENT(X); #endif #if HAS_CURRENT_HOME(X2) - const int16_t tmc_save_current_X2 = stepperX2.getMilliamps(); - stepperX2.rms_current(X2_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_X2), tmc_save_current_X2, X2_CURRENT_HOME); + _SAVE_SET_CURRENT(X2); #endif #if HAS_CURRENT_HOME(Y) - const int16_t tmc_save_current_Y = stepperY.getMilliamps(); - stepperY.rms_current(Y_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_Y), tmc_save_current_Y, Y_CURRENT_HOME); + _SAVE_SET_CURRENT(Y); #endif #if HAS_CURRENT_HOME(Y2) - const int16_t tmc_save_current_Y2 = stepperY2.getMilliamps(); - stepperY2.rms_current(Y2_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_Y2), tmc_save_current_Y2, Y2_CURRENT_HOME); + _SAVE_SET_CURRENT(Y2); #endif - #if HAS_CURRENT_HOME(Z) && ENABLED(DELTA) - const int16_t tmc_save_current_Z = stepperZ.getMilliamps(); - stepperZ.rms_current(Z_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_Z), tmc_save_current_Z, Z_CURRENT_HOME); + #if HAS_CURRENT_HOME(Z) + _SAVE_SET_CURRENT(Z); + #endif + #if HAS_CURRENT_HOME(Z2) + _SAVE_SET_CURRENT(Z2); + #endif + #if HAS_CURRENT_HOME(Z3) + _SAVE_SET_CURRENT(Z3); + #endif + #if HAS_CURRENT_HOME(Z4) + _SAVE_SET_CURRENT(Z4); #endif #if HAS_CURRENT_HOME(I) - const int16_t tmc_save_current_I = stepperI.getMilliamps(); - stepperI.rms_current(I_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_I), tmc_save_current_I, I_CURRENT_HOME); + _SAVE_SET_CURRENT(I); #endif #if HAS_CURRENT_HOME(J) - const int16_t tmc_save_current_J = stepperJ.getMilliamps(); - stepperJ.rms_current(J_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_J), tmc_save_current_J, J_CURRENT_HOME); + _SAVE_SET_CURRENT(J); #endif #if HAS_CURRENT_HOME(K) - const int16_t tmc_save_current_K = stepperK.getMilliamps(); - stepperK.rms_current(K_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_K), tmc_save_current_K, K_CURRENT_HOME); + _SAVE_SET_CURRENT(K); #endif #if HAS_CURRENT_HOME(U) - const int16_t tmc_save_current_U = stepperU.getMilliamps(); - stepperU.rms_current(U_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_U), tmc_save_current_U, U_CURRENT_HOME); + _SAVE_SET_CURRENT(U); #endif #if HAS_CURRENT_HOME(V) - const int16_t tmc_save_current_V = stepperV.getMilliamps(); - stepperV.rms_current(V_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_V), tmc_save_current_V, V_CURRENT_HOME); + _SAVE_SET_CURRENT(V); #endif #if HAS_CURRENT_HOME(W) - const int16_t tmc_save_current_W = stepperW.getMilliamps(); - stepperW.rms_current(W_CURRENT_HOME); - if (DEBUGGING(LEVELING)) debug_current(F(STR_W), tmc_save_current_W, W_CURRENT_HOME); + _SAVE_SET_CURRENT(W); #endif #if SENSORLESS_STALLGUARD_DELAY safe_delay(SENSORLESS_STALLGUARD_DELAY); // Short delay needed to settle @@ -577,37 +575,46 @@ void GcodeSuite::G28() { #if HAS_HOMING_CURRENT if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Restore driver current..."); #if HAS_CURRENT_HOME(X) - stepperX.rms_current(tmc_save_current_X); + stepperX.rms_current(saved_current_X); #endif #if HAS_CURRENT_HOME(X2) - stepperX2.rms_current(tmc_save_current_X2); + stepperX2.rms_current(saved_current_X2); #endif #if HAS_CURRENT_HOME(Y) - stepperY.rms_current(tmc_save_current_Y); + stepperY.rms_current(saved_current_Y); #endif #if HAS_CURRENT_HOME(Y2) - stepperY2.rms_current(tmc_save_current_Y2); + stepperY2.rms_current(saved_current_Y2); #endif - #if HAS_CURRENT_HOME(Z) && ENABLED(DELTA) - stepperZ.rms_current(tmc_save_current_Z); + #if HAS_CURRENT_HOME(Z) + stepperZ.rms_current(saved_current_Z); + #endif + #if HAS_CURRENT_HOME(Z2) + stepperZ2.rms_current(saved_current_Z2); + #endif + #if HAS_CURRENT_HOME(Z3) + stepperZ3.rms_current(saved_current_Z3); + #endif + #if HAS_CURRENT_HOME(Z4) + stepperZ4.rms_current(saved_current_Z4); #endif #if HAS_CURRENT_HOME(I) - stepperI.rms_current(tmc_save_current_I); + stepperI.rms_current(saved_current_I); #endif #if HAS_CURRENT_HOME(J) - stepperJ.rms_current(tmc_save_current_J); + stepperJ.rms_current(saved_current_J); #endif #if HAS_CURRENT_HOME(K) - stepperK.rms_current(tmc_save_current_K); + stepperK.rms_current(saved_current_K); #endif #if HAS_CURRENT_HOME(U) - stepperU.rms_current(tmc_save_current_U); + stepperU.rms_current(saved_current_U); #endif #if HAS_CURRENT_HOME(V) - stepperV.rms_current(tmc_save_current_V); + stepperV.rms_current(saved_current_V); #endif #if HAS_CURRENT_HOME(W) - stepperW.rms_current(tmc_save_current_W); + stepperW.rms_current(saved_current_W); #endif #if SENSORLESS_STALLGUARD_DELAY safe_delay(SENSORLESS_STALLGUARD_DELAY); // Short delay needed to settle diff --git a/Marlin/src/gcode/calibrate/G33.cpp b/Marlin/src/gcode/calibrate/G33.cpp index 7530737dde..10f5afca2d 100644 --- a/Marlin/src/gcode/calibrate/G33.cpp +++ b/Marlin/src/gcode/calibrate/G33.cpp @@ -67,9 +67,9 @@ float lcd_probe_pt(const xy_pos_t &xy); void ac_home() { endstops.enable(true); - TERN_(SENSORLESS_HOMING, endstops.set_homing_current(true)); + TERN_(SENSORLESS_HOMING, endstops.set_z_sensorless_current(true)); home_delta(); - TERN_(SENSORLESS_HOMING, endstops.set_homing_current(false)); + TERN_(SENSORLESS_HOMING, endstops.set_z_sensorless_current(false)); endstops.not_homing(); } diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 084a3d74e9..b069e2d2b1 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -1422,24 +1422,26 @@ * Conditionals based on the type of Bed Probe */ #if HAS_BED_PROBE + #if ALL(DELTA, SENSORLESS_PROBING) + #define HAS_DELTA_SENSORLESS_PROBING 1 + #else + #define HAS_REAL_BED_PROBE 1 + #endif + #if HAS_REAL_BED_PROBE && NONE(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, Z_SPI_SENSORLESS) + #define NEED_Z_MIN_PROBE_PIN 1 + #endif + #if Z_HOME_TO_MIN && (!NEED_Z_MIN_PROBE_PIN || ENABLED(USE_PROBE_FOR_Z_HOMING)) + #define HOMING_Z_WITH_PROBE 1 + #endif #if DISABLED(NOZZLE_AS_PROBE) #define HAS_PROBE_XY_OFFSET 1 #endif - #if ALL(DELTA, SENSORLESS_PROBING) - #define HAS_DELTA_SENSORLESS_PROBING 1 - #endif - #if NONE(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, HAS_DELTA_SENSORLESS_PROBING) - #define USE_Z_MIN_PROBE 1 - #endif - #if Z_HOME_TO_MIN && (DISABLED(USE_Z_MIN_PROBE) || ENABLED(USE_PROBE_FOR_Z_HOMING)) - #define HOMING_Z_WITH_PROBE 1 + #if ANY(Z_PROBE_ALLEN_KEY, MAG_MOUNTED_PROBE) + #define PROBE_TRIGGERED_WHEN_STOWED_TEST 1 // Extra test for Allen Key Probe #endif #ifndef Z_PROBE_LOW_POINT #define Z_PROBE_LOW_POINT -5 #endif - #if ANY(Z_PROBE_ALLEN_KEY, MAG_MOUNTED_PROBE) - #define PROBE_TRIGGERED_WHEN_STOWED_TEST 1 // Extra test for Allen Key Probe - #endif #if MULTIPLE_PROBING > 1 #if EXTRA_PROBING > 0 #define TOTAL_PROBING (MULTIPLE_PROBING + EXTRA_PROBING) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 442fcfbafd..13f20114e5 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -1424,13 +1424,13 @@ #if AXIS_IS_TMC(X) #if defined(X_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(X) #define X_SENSORLESS 1 + #if ENABLED(SPI_ENDSTOPS) && AXIS_HAS_SPI(X) + #define X_SPI_SENSORLESS 1 + #endif #endif #if AXIS_HAS_STEALTHCHOP(X) #define X_HAS_STEALTHCHOP 1 #endif - #if ENABLED(SPI_ENDSTOPS) - #define X_SPI_SENSORLESS X_SENSORLESS - #endif #ifndef X_INTERPOLATE #define X_INTERPOLATE INTERPOLATE #endif @@ -1462,13 +1462,13 @@ #if AXIS_IS_TMC(Y) #if defined(Y_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Y) #define Y_SENSORLESS 1 + #if ENABLED(SPI_ENDSTOPS) && AXIS_HAS_SPI(Y) + #define Y_SPI_SENSORLESS 1 + #endif #endif #if AXIS_HAS_STEALTHCHOP(Y) #define Y_HAS_STEALTHCHOP 1 #endif - #if ENABLED(SPI_ENDSTOPS) - #define Y_SPI_SENSORLESS Y_SENSORLESS - #endif #ifndef Y_INTERPOLATE #define Y_INTERPOLATE INTERPOLATE #endif @@ -1500,13 +1500,13 @@ #if AXIS_IS_TMC(Z) #if defined(Z_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z) #define Z_SENSORLESS 1 + #if ENABLED(SPI_ENDSTOPS) && AXIS_HAS_SPI(Z) + #define Z_SPI_SENSORLESS 1 + #endif #endif #if AXIS_HAS_STEALTHCHOP(Z) #define Z_HAS_STEALTHCHOP 1 #endif - #if ENABLED(SPI_ENDSTOPS) - #define Z_SPI_SENSORLESS Z_SENSORLESS - #endif #ifndef Z_INTERPOLATE #define Z_INTERPOLATE INTERPOLATE #endif @@ -1572,13 +1572,13 @@ #if AXIS_IS_TMC(I) #if defined(I_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(I) #define I_SENSORLESS 1 + #if ENABLED(SPI_ENDSTOPS) && AXIS_HAS_SPI(I) + #define I_SPI_SENSORLESS 1 + #endif #endif #if AXIS_HAS_STEALTHCHOP(I) #define I_HAS_STEALTHCHOP 1 #endif - #if ENABLED(SPI_ENDSTOPS) - #define I_SPI_SENSORLESS I_SENSORLESS - #endif #ifndef I_INTERPOLATE #define I_INTERPOLATE INTERPOLATE #endif @@ -1593,13 +1593,13 @@ #if AXIS_IS_TMC(J) #if defined(J_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(J) #define J_SENSORLESS 1 + #if ENABLED(SPI_ENDSTOPS) && AXIS_HAS_SPI(J) + #define J_SPI_SENSORLESS 1 + #endif #endif #if AXIS_HAS_STEALTHCHOP(J) #define J_HAS_STEALTHCHOP 1 #endif - #if ENABLED(SPI_ENDSTOPS) - #define J_SPI_SENSORLESS J_SENSORLESS - #endif #ifndef J_INTERPOLATE #define J_INTERPOLATE INTERPOLATE #endif @@ -1614,13 +1614,13 @@ #if AXIS_IS_TMC(K) #if defined(K_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(K) #define K_SENSORLESS 1 + #if ENABLED(SPI_ENDSTOPS) && AXIS_HAS_SPI(K) + #define K_SPI_SENSORLESS 1 + #endif #endif #if AXIS_HAS_STEALTHCHOP(K) #define K_HAS_STEALTHCHOP 1 #endif - #if ENABLED(SPI_ENDSTOPS) - #define K_SPI_SENSORLESS K_SENSORLESS - #endif #ifndef K_INTERPOLATE #define K_INTERPOLATE INTERPOLATE #endif @@ -1635,13 +1635,13 @@ #if AXIS_IS_TMC(U) #if defined(U_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(U) #define U_SENSORLESS 1 + #if ENABLED(SPI_ENDSTOPS) && AXIS_HAS_SPI(U) + #define U_SPI_SENSORLESS 1 + #endif #endif #if AXIS_HAS_STEALTHCHOP(U) #define U_HAS_STEALTHCHOP 1 #endif - #if ENABLED(SPI_ENDSTOPS) - #define U_SPI_SENSORLESS U_SENSORLESS - #endif #ifndef U_INTERPOLATE #define U_INTERPOLATE INTERPOLATE #endif @@ -1656,13 +1656,13 @@ #if AXIS_IS_TMC(V) #if defined(V_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(V) #define V_SENSORLESS 1 + #if ENABLED(SPI_ENDSTOPS) && AXIS_HAS_SPI(V) + #define V_SPI_SENSORLESS 1 + #endif #endif #if AXIS_HAS_STEALTHCHOP(V) #define V_HAS_STEALTHCHOP 1 #endif - #if ENABLED(SPI_ENDSTOPS) - #define V_SPI_SENSORLESS V_SENSORLESS - #endif #ifndef V_INTERPOLATE #define V_INTERPOLATE INTERPOLATE #endif @@ -1677,13 +1677,13 @@ #if AXIS_IS_TMC(W) #if defined(W_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(W) #define W_SENSORLESS 1 + #if ENABLED(SPI_ENDSTOPS) && AXIS_HAS_SPI(W) + #define W_SPI_SENSORLESS 1 + #endif #endif #if AXIS_HAS_STEALTHCHOP(W) #define W_HAS_STEALTHCHOP 1 #endif - #if ENABLED(SPI_ENDSTOPS) - #define W_SPI_SENSORLESS W_SENSORLESS - #endif #ifndef W_INTERPOLATE #define W_INTERPOLATE INTERPOLATE #endif @@ -1948,11 +1948,18 @@ #endif #endif -// -// Endstops and bed probe -// - -#define _USE_STOP(A,N,M,C) ((A##_HOME_TO_##M || (C+0)) && PIN_EXISTS(A##N##_##M)) +/** + * Endstop and probe flags + * - Set USE_(AXIS)_(MIN|MAX) flags for each used endstop that has a pin, including those for DIAG0 state. + * - Note: Dual X Carriage uses "X" and "X2" steppers, but X_MIN and X_MAX endstop states (i.e., not X2_MAX). + * - Set a HAS_(AXIS)_(MIN|MAX)_STATE flag for each endstop that has a state, including SPI Sensorless which don't use a pin. + * - Set a HAS_(AXIS)_STATE flag for each axis that has at least one state. + * - Consider (AXIS)_SAFETY_STOP for the case where the axis has a second endstop. + * Currently this must be distinct, but we can add a mechanism to use the same pin for sensorless + * or switches wired to the same pin, or for the single SPI stall state on the axis. + */ +#define _USE_STOP(A,N,M,C) ((ANY(A##_HOME_TO_##M, A##N##_SAFETY_STOP) || (C+0)) && PIN_EXISTS(A##N##_##M) && !A##_SPI_SENSORLESS) +#define _HAS_STATE(A,N,M) (USE_##A##N##_##M || (ANY(A##_HOME_TO_##M, A##N##_SAFETY_STOP) && A##_SPI_SENSORLESS)) #if _USE_STOP(X,,MIN,) #define USE_X_MIN 1 @@ -1960,139 +1967,239 @@ #if _USE_STOP(X,,MAX,ENABLED(DUAL_X_CARRIAGE)) #define USE_X_MAX 1 #endif -#if USE_X_MIN || USE_X_MAX - #define HAS_X_ENDSTOP 1 +#if _HAS_STATE(X,,MIN) + #define HAS_X_MIN_STATE 1 +#endif +#if _HAS_STATE(X,,MAX) + #define HAS_X_MAX_STATE 1 +#endif +#if HAS_X_MIN_STATE || HAS_X_MAX_STATE + #define HAS_X_STATE 1 #endif #if _USE_STOP(Y,,MIN,) #define USE_Y_MIN 1 -#elif _USE_STOP(Y,,MAX,) +#endif +#if _USE_STOP(Y,,MAX,) #define USE_Y_MAX 1 #endif -#if USE_Y_MIN || USE_Y_MAX - #define HAS_Y_ENDSTOP 1 +#if _HAS_STATE(Y,,MIN) + #define HAS_Y_MIN_STATE 1 +#endif +#if _HAS_STATE(Y,,MAX) + #define HAS_Y_MAX_STATE 1 +#endif +#if HAS_Y_MIN_STATE || HAS_Y_MAX_STATE + #define HAS_Y_STATE 1 #endif -#if _USE_STOP(Z,,MIN,ANY(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, HAS_DELTA_SENSORLESS_PROBING)) +#if _USE_STOP(Z,,MIN,ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)) #define USE_Z_MIN 1 - #if !HAS_DELTA_SENSORLESS_PROBING - #define HAS_Z_MIN_PIN 1 - #endif #endif #if _USE_STOP(Z,,MAX,) #define USE_Z_MAX 1 #endif -#if USE_Z_MIN || USE_Z_MAX - #define HAS_Z_ENDSTOP 1 +#if _HAS_STATE(Z,,MIN) + #define HAS_Z_MIN_STATE 1 +#endif +#if _HAS_STATE(Z,,MAX) + #define HAS_Z_MAX_STATE 1 +#endif +#if HAS_Z_MIN_STATE || HAS_Z_MAX_STATE + #define HAS_Z_STATE 1 #endif #if _USE_STOP(I,,MIN,) #define USE_I_MIN 1 -#elif _USE_STOP(I,,MAX,) +#endif +#if _USE_STOP(I,,MAX,) #define USE_I_MAX 1 #endif -#if USE_I_MIN || USE_I_MAX - #define HAS_I_ENDSTOP 1 +#if _HAS_STATE(I,,MIN) + #define HAS_I_MIN_STATE 1 +#endif +#if _HAS_STATE(I,,MAX) + #define HAS_I_MAX_STATE 1 +#endif +#if HAS_I_MIN_STATE || HAS_I_MAX_STATE + #define HAS_I_STATE 1 #endif #if _USE_STOP(J,,MIN,) #define USE_J_MIN 1 -#elif _USE_STOP(J,,MAX,) +#endif +#if _USE_STOP(J,,MAX,) #define USE_J_MAX 1 #endif -#if USE_J_MIN || USE_J_MAX - #define HAS_J_ENDSTOP 1 +#if _HAS_STATE(J,,MIN) + #define HAS_J_MIN_STATE 1 +#endif +#if _HAS_STATE(J,,MAX) + #define HAS_J_MAX_STATE 1 +#endif +#if HAS_J_MIN_STATE || HAS_J_MAX_STATE + #define HAS_J_STATE 1 #endif #if _USE_STOP(K,,MIN,) #define USE_K_MIN 1 -#elif _USE_STOP(K,,MAX,) +#endif +#if _USE_STOP(K,,MAX,) #define USE_K_MAX 1 #endif -#if USE_K_MIN || USE_K_MAX - #define HAS_K_ENDSTOP 1 +#if _HAS_STATE(K,,MIN) + #define HAS_K_MIN_STATE 1 +#endif +#if _HAS_STATE(K,,MAX) + #define HAS_K_MAX_STATE 1 +#endif +#if HAS_K_MIN_STATE || HAS_K_MAX_STATE + #define HAS_K_STATE 1 #endif #if _USE_STOP(U,,MIN,) #define USE_U_MIN 1 -#elif _USE_STOP(U,,MAX,) +#endif +#if _USE_STOP(U,,MAX,) #define USE_U_MAX 1 #endif -#if USE_U_MIN || USE_U_MAX - #define HAS_U_ENDSTOP 1 +#if _HAS_STATE(U,,MIN) + #define HAS_U_MIN_STATE 1 +#endif +#if _HAS_STATE(U,,MAX) + #define HAS_U_MAX_STATE 1 +#endif +#if HAS_U_MIN_STATE || HAS_U_MAX_STATE + #define HAS_U_STATE 1 #endif #if _USE_STOP(V,,MIN,) #define USE_V_MIN 1 -#elif _USE_STOP(V,,MAX,) +#endif +#if _USE_STOP(V,,MAX,) #define USE_V_MAX 1 #endif -#if USE_V_MIN || USE_V_MAX - #define HAS_V_ENDSTOP 1 +#if _HAS_STATE(V,,MIN) + #define HAS_V_MIN_STATE 1 +#endif +#if _HAS_STATE(V,,MAX) + #define HAS_V_MAX_STATE 1 +#endif +#if HAS_V_MIN_STATE || HAS_V_MAX_STATE + #define HAS_V_STATE 1 #endif #if _USE_STOP(W,,MIN,) #define USE_W_MIN 1 -#elif _USE_STOP(W,,MAX,) +#endif +#if _USE_STOP(W,,MAX,) #define USE_W_MAX 1 #endif -#if USE_W_MIN || USE_W_MAX - #define HAS_W_ENDSTOP 1 +#if _HAS_STATE(W,,MIN) + #define HAS_W_MIN_STATE 1 +#endif +#if _HAS_STATE(W,,MAX) + #define HAS_W_MAX_STATE 1 +#endif +#if HAS_W_MIN_STATE || HAS_W_MAX_STATE + #define HAS_W_STATE 1 #endif -#if ANY(DUAL_X_CARRIAGE, X_DUAL_ENDSTOPS) +#if ENABLED(X_DUAL_ENDSTOPS) #if _USE_STOP(X,2,MIN,) #define USE_X2_MIN 1 - #elif _USE_STOP(X,2,MAX,) + #endif + #if _USE_STOP(X,2,MAX,) #define USE_X2_MAX 1 #endif - #if USE_X2_MIN || USE_X2_MAX - #define HAS_X2_ENDSTOP 1 + #if _HAS_STATE(X,2,MIN) || HAS_X_MIN_STATE + #define HAS_X2_MIN_STATE 1 + #endif + #if _HAS_STATE(X,2,MAX) || HAS_X_MAX_STATE + #define HAS_X2_MAX_STATE 1 + #endif + #if HAS_X2_MIN_STATE || HAS_X2_MAX_STATE + #define HAS_X2_STATE 1 #endif #endif #if ENABLED(Y_DUAL_ENDSTOPS) #if _USE_STOP(Y,2,MIN,) #define USE_Y2_MIN 1 - #elif _USE_STOP(Y,2,MAX,) + #endif + #if _USE_STOP(Y,2,MAX,) #define USE_Y2_MAX 1 #endif - #if USE_Y2_MIN || USE_Y2_MAX - #define HAS_Y2_ENDSTOP 1 + #if _HAS_STATE(Y,2,MIN) || HAS_Y_MIN_STATE + #define HAS_Y2_MIN_STATE 1 + #endif + #if _HAS_STATE(Y,2,MAX) || HAS_Y_MAX_STATE + #define HAS_Y2_MAX_STATE 1 + #endif + #if HAS_Y2_MIN_STATE || HAS_Y2_MAX_STATE + #define HAS_Y2_STATE 1 #endif #endif #if ENABLED(Z_MULTI_ENDSTOPS) #if _USE_STOP(Z,2,MIN,) #define USE_Z2_MIN 1 - #elif _USE_STOP(Z,2,MAX,) + #endif + #if _USE_STOP(Z,2,MAX,) #define USE_Z2_MAX 1 #endif - #if USE_Z2_MIN || USE_Z2_MAX - #define HAS_Z2_ENDSTOP 1 + #if _HAS_STATE(Z,2,MIN) || HAS_Z_MIN_STATE + #define HAS_Z2_MIN_STATE 1 + #endif + #if _HAS_STATE(Z,2,MAX) || HAS_Z_MAX_STATE + #define HAS_Z2_MAX_STATE 1 + #endif + #if HAS_Z2_MIN_STATE || HAS_Z2_MAX_STATE + #define HAS_Z2_STATE 1 #endif #if NUM_Z_STEPPERS >= 3 #if _USE_STOP(Z,3,MIN,) #define USE_Z3_MIN 1 - #elif _USE_STOP(Z,3,MAX,) + #endif + #if _USE_STOP(Z,3,MAX,) #define USE_Z3_MAX 1 #endif - #if USE_Z3_MIN || USE_Z3_MAX - #define HAS_Z3_ENDSTOP 1 + #if _HAS_STATE(Z,3,MIN) || HAS_Z_MIN_STATE + #define HAS_Z3_MIN_STATE 1 + #endif + #if _HAS_STATE(Z,3,MAX) || HAS_Z_MAX_STATE + #define HAS_Z3_MAX_STATE 1 + #endif + #if HAS_Z3_MIN_STATE || HAS_Z3_MAX_STATE + #define HAS_Z3_STATE 1 #endif #endif #if NUM_Z_STEPPERS >= 4 #if _USE_STOP(Z,4,MIN,) #define USE_Z4_MIN 1 - #elif _USE_STOP(Z,4,MAX,) + #endif + #if _USE_STOP(Z,4,MAX,) #define USE_Z4_MAX 1 #endif - #if USE_Z4_MIN || USE_Z4_MAX - #define HAS_Z4_ENDSTOP 1 + #if _HAS_STATE(Z,4,MIN) || HAS_Z_MIN_STATE + #define HAS_Z4_MIN_STATE 1 + #endif + #if _HAS_STATE(Z,4,MAX) || HAS_Z_MAX_STATE + #define HAS_Z4_MAX_STATE 1 + #endif + #if HAS_Z4_MIN_STATE || HAS_Z4_MAX_STATE + #define HAS_Z4_STATE 1 #endif #endif #endif +#if NEED_Z_MIN_PROBE_PIN && PIN_EXISTS(Z_MIN_PROBE) + #define USE_Z_MIN_PROBE 1 +#endif +#if HAS_REAL_BED_PROBE + #define HAS_Z_PROBE_STATE 1 +#endif + #undef _USE_STOP /** @@ -2111,7 +2218,7 @@ #if USE_Y_MAX #define ENDSTOPPULLUP_YMAX #endif - #if HAS_Z_MIN_PIN + #if USE_Z_MIN #define ENDSTOPPULLUP_ZMIN #endif #if USE_Z_MAX diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 8eb8662c32..5933c8c396 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1388,19 +1388,13 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Require pin options and pins to be defined */ - #if ENABLED(SENSORLESS_PROBING) - #if ENABLED(DELTA) && !(X_SENSORLESS && Y_SENSORLESS && Z_SENSORLESS) - #error "SENSORLESS_PROBING requires TMC2130/2160/2209/5130/5160 drivers on X, Y, and Z and {X|Y|Z}_STALL_SENSITIVITY." - #elif !Z_SENSORLESS - #error "SENSORLESS_PROBING requires a TMC2130/2160/2209/5130/5160 driver on Z and Z_STALL_SENSITIVITY." - #endif - #elif ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - #if !HAS_Z_MIN_PIN + #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) + #if !USE_Z_MIN #error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires the Z_MIN_PIN to be defined." #elif Z_MIN_PROBE_ENDSTOP_HIT_STATE != Z_MIN_ENDSTOP_HIT_STATE #error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires Z_MIN_ENDSTOP_HIT_STATE to match Z_MIN_PROBE_ENDSTOP_HIT_STATE." #endif - #elif !USE_Z_MIN_PROBE + #elif !PIN_EXISTS(Z_MIN_PROBE) #error "Z_MIN_PROBE_PIN must be defined if Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN is not enabled." #endif @@ -2323,53 +2317,53 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Endstop Tests */ -#if HAS_ENDSTOPS - // Delta and Cartesian use 3 homing endstops - #if NONE(IS_SCARA, SPI_ENDSTOPS) - #if X_HOME_TO_MIN && !PIN_EXISTS(X_MIN) - #error "X_MIN_PIN (or X_STOP_PIN) is required for X axis homing." - #elif X_HOME_TO_MAX && !PIN_EXISTS(X_MAX) - #error "X_MAX_PIN (or X_STOP_PIN) is required for X axis homing." - #elif Y_HOME_TO_MIN && !PIN_EXISTS(Y_MIN) - #error "Y_MIN_PIN (or Y_STOP_PIN) is required for Y axis homing." - #elif Y_HOME_TO_MAX && !PIN_EXISTS(Y_MAX) - #error "Y_MAX_PIN (or Y_STOP_PIN) is required for Y axis homing." - #elif I_HOME_TO_MIN && !PIN_EXISTS(I_MIN) - #error "I_MIN_PIN (or I_STOP_PIN) is required for I axis homing." - #elif I_HOME_TO_MAX && !PIN_EXISTS(I_MAX) - #error "I_MAX_PIN (or I_STOP_PIN) is required for I axis homing." - #elif J_HOME_TO_MIN && !PIN_EXISTS(J_MIN) - #error "J_MIN_PIN (or J_STOP_PIN) is required for J axis homing." - #elif J_HOME_TO_MAX && !PIN_EXISTS(J_MAX) - #error "J_MAX_PIN (or J_STOP_PIN) is required for J axis homing." - #elif K_HOME_TO_MIN && !PIN_EXISTS(K_MIN) - #error "K_MIN_PIN (or K_STOP_PIN) is required for K axis homing." - #elif K_HOME_TO_MAX && !PIN_EXISTS(K_MAX) - #error "K_MAX_PIN (or K_STOP_PIN) is required for K axis homing." - #elif U_HOME_TO_MIN && !PIN_EXISTS(U_MIN) - #error "U_MIN_PIN (or U_STOP_PIN) is required for U axis homing." - #elif U_HOME_TO_MAX && !PIN_EXISTS(U_MAX) - #error "U_MAX_PIN (or U_STOP_PIN) is required for U axis homing." - #elif V_HOME_TO_MIN && !PIN_EXISTS(V_MIN) - #error "V_MIN_PIN (or V_STOP_PIN) is required for V axis homing." - #elif V_HOME_TO_MAX && !PIN_EXISTS(V_MAX) - #error "V_MAX_PIN (or V_STOP_PIN) is required for V axis homing." - #elif W_HOME_TO_MIN && !PIN_EXISTS(W_MIN) - #error "W_MIN_PIN (or W_STOP_PIN) is required for W axis homing." - #elif W_HOME_TO_MAX && !PIN_EXISTS(W_MAX) - #error "W_MAX_PIN (or W_STOP_PIN) is required for W axis homing." - #endif - #endif - - // Z homing requirements - #if Z_HOME_TO_MAX && ENABLED(USE_PROBE_FOR_Z_HOMING) - #error "Z_HOME_DIR must be -1 when homing Z with the probe." - #elif ALL(HOMING_Z_WITH_PROBE, Z_MULTI_ENDSTOPS) - #error "Z_MULTI_ENDSTOPS is incompatible with USE_PROBE_FOR_Z_HOMING." +#if !IS_SCARA + // Delta and Cartesian require some kind of endstop + #if X_HOME_TO_MIN && !HAS_X_MIN_STATE + #error "X_MIN_PIN, X_STOP_PIN, or X_SPI_SENSORLESS is required for X axis homing." + #elif X_HOME_TO_MAX && !HAS_X_MAX_STATE + #error "X_MAX_PIN, X_STOP_PIN, or X_SPI_SENSORLESS is required for X axis homing." + #elif Y_HOME_TO_MIN && !HAS_Y_MIN_STATE + #error "Y_MIN_PIN, Y_STOP_PIN, or Y_SPI_SENSORLESS is required for Y axis homing." + #elif Y_HOME_TO_MAX && !HAS_Y_MAX_STATE + #error "Y_MAX_PIN, Y_STOP_PIN, or Y_SPI_SENSORLESS is required for Y axis homing." + #elif Z_HOME_TO_MIN && !HAS_Z_MIN_STATE + #error "Z_MIN_PIN, Z_STOP_PIN, or Z_SPI_SENSORLESS is required for Y axis homing." + #elif Z_HOME_TO_MAX && !HAS_Z_MAX_STATE + #error "Z_MAX_PIN, Z_STOP_PIN, or Z_SPI_SENSORLESS is required for Y axis homing." + #elif I_HOME_TO_MIN && !HAS_I_MIN_STATE + #error "I_MIN_PIN, I_STOP_PIN, or I_SPI_SENSORLESS is required for I axis homing." + #elif I_HOME_TO_MAX && !HAS_I_MAX_STATE + #error "I_MAX_PIN, I_STOP_PIN, or I_SPI_SENSORLESS is required for I axis homing." + #elif J_HOME_TO_MIN && !HAS_J_MIN_STATE + #error "J_MIN_PIN, J_STOP_PIN, or J_SPI_SENSORLESS is required for J axis homing." + #elif J_HOME_TO_MAX && !HAS_J_MAX_STATE + #error "J_MAX_PIN, J_STOP_PIN, or J_SPI_SENSORLESS is required for J axis homing." + #elif K_HOME_TO_MIN && !HAS_K_MIN_STATE + #error "K_MIN_PIN, K_STOP_PIN, or K_SPI_SENSORLESS is required for K axis homing." + #elif K_HOME_TO_MAX && !HAS_K_MAX_STATE + #error "K_MAX_PIN, K_STOP_PIN, or K_SPI_SENSORLESS is required for K axis homing." + #elif U_HOME_TO_MIN && !HAS_U_MIN_STATE + #error "U_MIN_PIN, U_STOP_PIN, or U_SPI_SENSORLESS is required for U axis homing." + #elif U_HOME_TO_MAX && !HAS_U_MAX_STATE + #error "U_MAX_PIN, U_STOP_PIN, or U_SPI_SENSORLESS is required for U axis homing." + #elif V_HOME_TO_MIN && !HAS_V_MIN_STATE + #error "V_MIN_PIN, V_STOP_PIN, or V_SPI_SENSORLESS is required for V axis homing." + #elif V_HOME_TO_MAX && !HAS_V_MAX_STATE + #error "V_MAX_PIN, V_STOP_PIN, or V_SPI_SENSORLESS is required for V axis homing." + #elif W_HOME_TO_MIN && !HAS_W_MIN_STATE + #error "W_MIN_PIN, W_STOP_PIN, or W_SPI_SENSORLESS is required for W axis homing." + #elif W_HOME_TO_MAX && !HAS_W_MAX_STATE + #error "W_MAX_PIN, W_STOP_PIN, or W_SPI_SENSORLESS is required for W axis homing." #endif #endif -#if ALL(HOME_Z_FIRST, USE_PROBE_FOR_Z_HOMING) +// Z homing with probe requirements +#if ALL(HOMING_Z_WITH_PROBE, Z_MULTI_ENDSTOPS) + #error "Z_MULTI_ENDSTOPS is incompatible with USE_PROBE_FOR_Z_HOMING (i.e., Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)." +#elif ALL(USE_PROBE_FOR_Z_HOMING, Z_HOME_TO_MAX) + #error "Z_HOME_DIR must be -1 when homing Z with the probe." +#elif ALL(USE_PROBE_FOR_Z_HOMING, HOME_Z_FIRST) #error "HOME_Z_FIRST can't be used when homing Z with a probe." #endif @@ -2381,26 +2375,32 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #if ENABLED(X_DUAL_ENDSTOPS) #if ENABLED(DELTA) #error "X_DUAL_ENDSTOPS is not compatible with DELTA." - #elif !HAS_X2_ENDSTOP - #error "X2 Endstop Pin must be defined for X_DUAL_ENDSTOPS." + #elif !HAS_X2_STATE + #error "Some kind of X2 Endstop must be defined for X_DUAL_ENDSTOPS." + #elif X_SPI_SENSORLESS && !AXIS_HAS_SPI(X2) + #error "All X Stepper Drivers must be SPI-capable to use SPI Endstops on X." #endif #endif #if ENABLED(Y_DUAL_ENDSTOPS) #if ENABLED(DELTA) #error "Y_DUAL_ENDSTOPS is not compatible with DELTA." - #elif !HAS_Y2_ENDSTOP - #error "Y2 Endstop Pin must be defined for Y_DUAL_ENDSTOPS." + #elif !HAS_Y2_STATE + #error "Some kind of Y2 Endstop must be defined for Y_DUAL_ENDSTOPS." + #elif Y_SPI_SENSORLESS && !AXIS_HAS_SPI(Y2) + #error "All Y Stepper Drivers must be SPI-capable to use SPI Endstops on Y." #endif #endif #if ENABLED(Z_MULTI_ENDSTOPS) #if ENABLED(DELTA) #error "Z_MULTI_ENDSTOPS is not compatible with DELTA." - #elif !HAS_Z2_ENDSTOP - #error "Z2 Endstop Pin must be defined for Z_MULTI_ENDSTOPS." - #elif NUM_Z_STEPPERS >= 3 && !HAS_Z3_ENDSTOP - #error "Z3 Endstop Pin must be defined for Z_MULTI_ENDSTOPS and Z3_DRIVER_TYPE." - #elif NUM_Z_STEPPERS >= 4 && !HAS_Z4_ENDSTOP - #error "Z4 Endstop Pin must be defined for Z_MULTI_ENDSTOPS and Z4_DRIVER_TYPE." + #elif !HAS_Z2_STATE + #error "Some kind of Z2 Endstop must be defined for Z_MULTI_ENDSTOPS." + #elif NUM_Z_STEPPERS >= 3 && !HAS_Z3_STATE + #error "Some kind of Z3 Endstop must be defined for Z_MULTI_ENDSTOPS and Z3_DRIVER_TYPE." + #elif NUM_Z_STEPPERS >= 4 && !HAS_Z4_STATE + #error "Some kind of Z4 Endstop must be defined for Z_MULTI_ENDSTOPS and Z4_DRIVER_TYPE." + #elif Z_SPI_SENSORLESS && !(AXIS_HAS_SPI(Z2) && (NUM_Z_STEPPERS < 3 || AXIS_HAS_SPI(Z3)) && (NUM_Z_STEPPERS < 4 || AXIS_HAS_SPI(Z4))) + #error "All Z Stepper Drivers must be SPI-capable to use SPI Endstops on Z." #endif #endif diff --git a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp index 4dd3d7a369..d76c10dfdb 100644 --- a/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp +++ b/Marlin/src/lcd/e3v2/proui/endstop_diag.cpp @@ -70,9 +70,9 @@ void ESDiag::draw() { DWINUI::drawButton(BTN_Continue, 86, 250); DWINUI::cursor.y = 80; #define ES_LABEL(S) draw_es_label(F(STR_##S)) - TERN_(USE_X_MIN, ES_LABEL(X_MIN)); TERN_(USE_X_MAX, ES_LABEL(X_MAX)); - TERN_(USE_Y_MIN, ES_LABEL(Y_MIN)); TERN_(USE_Y_MAX, ES_LABEL(Y_MAX)); - TERN_(HAS_Z_MIN_PIN, ES_LABEL(Z_MIN)); TERN_(USE_Z_MAX, ES_LABEL(Z_MAX)); + TERN_(USE_X_MIN, ES_LABEL(X_MIN)); TERN_(USE_X_MAX, ES_LABEL(X_MAX)); + TERN_(USE_Y_MIN, ES_LABEL(Y_MIN)); TERN_(USE_Y_MAX, ES_LABEL(Y_MAX)); + TERN_(USE_Z_MIN, ES_LABEL(Z_MIN)); TERN_(USE_Z_MAX, ES_LABEL(Z_MAX)); TERN_(HAS_FILAMENT_SENSOR, draw_es_label(F(STR_FILAMENT))); update(); } @@ -80,9 +80,9 @@ void ESDiag::draw() { void ESDiag::update() { DWINUI::cursor.y = 80; #define ES_REPORT(S) draw_es_state(READ(S##_PIN) == S##_ENDSTOP_HIT_STATE) - TERN_(USE_X_MIN, ES_REPORT(X_MIN)); TERN_(USE_X_MAX, ES_REPORT(X_MAX)); - TERN_(USE_Y_MIN, ES_REPORT(Y_MIN)); TERN_(USE_Y_MAX, ES_REPORT(Y_MAX)); - TERN_(HAS_Z_MIN_PIN, ES_REPORT(Z_MIN)); TERN_(USE_Z_MAX, ES_REPORT(Z_MAX)); + TERN_(USE_X_MIN, ES_REPORT(X_MIN)); TERN_(USE_X_MAX, ES_REPORT(X_MAX)); + TERN_(USE_Y_MIN, ES_REPORT(Y_MIN)); TERN_(USE_Y_MAX, ES_REPORT(Y_MAX)); + TERN_(USE_Z_MIN, ES_REPORT(Z_MIN)); TERN_(USE_Z_MAX, ES_REPORT(Z_MAX)); TERN_(HAS_FILAMENT_SENSOR, draw_es_state(READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE)); dwinUpdateLCD(); } diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp index 1d81649444..6105591d15 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp @@ -79,7 +79,7 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) { #else PIN_DISABLED(3, 3, PSTR(STR_Y_MIN), Y_MIN) #endif - #if HAS_Z_MIN_PIN + #if USE_Z_MIN PIN_ENABLED (5, 3, PSTR(STR_Z_MIN), Z_MIN, Z_MIN_ENDSTOP_HIT_STATE) #else PIN_DISABLED(5, 3, PSTR(STR_Z_MIN), Z_MIN) diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp index c46a532d9a..a759f8677e 100644 --- a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp +++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp @@ -45,36 +45,56 @@ #if PIN_EXISTS(MT_DET_2) bool mt_det2_sta; #endif - #if HAS_X_ENDSTOP - bool endstopx1_sta; + #if USE_X_MIN + bool endstopx1_min; #else - constexpr static bool endstopx1_sta = true; + constexpr static bool endstopx1_min = true; #endif - #if HAS_X2_ENDSTOP + #if USE_X_MAX + bool endstopx1_max; + #else + constexpr static bool endstopx1_max = true; + #endif + #if USE_X2_MIN bool endstopx2_sta; #else constexpr static bool endstopx2_sta = true; #endif - #if HAS_Y_ENDSTOP + #if USE_Y_MIN bool endstopy1_sta; #else constexpr static bool endstopy1_sta = true; #endif - #if HAS_Y2_ENDSTOP + #if USE_Y2_MIN bool endstopy2_sta; #else constexpr static bool endstopy2_sta = true; #endif - #if HAS_Z_ENDSTOP - bool endstopz1_sta; + #if USE_Z_MIN + bool endstopz1_min; #else - constexpr static bool endstopz1_sta = true; + constexpr static bool endstopz1_min = true; #endif - #if HAS_Z2_ENDSTOP + #if USE_Z_MAX + bool endstopz1_max; + #else + constexpr static bool endstopz1_max = true; + #endif + #if USE_Z2_MIN || USE_Z2_MAX bool endstopz2_sta; #else constexpr static bool endstopz2_sta = true; #endif + #if USE_Z3_MIN || USE_Z3_MAX + bool endstopz3_sta; + #else + constexpr static bool endstopz3_sta = true; + #endif + #if USE_Z4_MIN || USE_Z4_MAX + bool endstopz4_sta; + #else + constexpr static bool endstopz4_sta = true; + #endif #define ESTATE(S) (READ(S##_PIN) == S##_ENDSTOP_HIT_STATE) @@ -87,12 +107,28 @@ #if PIN_EXISTS(MT_DET_2) mt_det2_sta = (READ(MT_DET_2_PIN) == LOW); #endif - TERN_(HAS_X_ENDSTOP, endstopx1_sta = ESTATE(TERN(USE_X_MIN, X_MIN, X_MAX))); - TERN_(HAS_X2_ENDSTOP, endstopx2_sta = ESTATE(TERN(USE_X2_MIN, X2_MIN, X2_MAX))); - TERN_(HAS_Y_ENDSTOP, endstopy1_sta = ESTATE(TERN(USE_Y_MIN, Y_MIN, Y_MAX))); - TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = ESTATE(TERN(USE_Y2_MIN, Y2_MIN, Y2_MAX))); - TERN_(HAS_Z_ENDSTOP, endstopz1_sta = ESTATE(TERN(HAS_Z_MIN_PIN, Z_MIN, Z_MAX))); - TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = ESTATE(TERN(USE_Z2_MIN, Z2_MIN, Z2_MAX))); + TERN_(USE_X_MIN, endstopx1_min = ESTATE(X_MIN)); + TERN_(USE_X_MAX, endstopx1_max = ESTATE(X_MAX)); + #if USE_X2_MIN || USE_X2_MAX + endstopx2_sta = ESTATE(TERN(USE_X2_MIN, X2_MIN, X2_MAX)); + #endif + #if USE_Y_MIN || USE_Y_MAX + endstopy1_sta = ESTATE(TERN(USE_Y_MIN, Y_MIN, Y_MAX)); + #endif + #if USE_Y2_MIN || USE_Y2_MAX + endstopy2_sta = ESTATE(TERN(USE_Y2_MIN, Y2_MIN, Y2_MAX)); + #endif + TERN_(USE_Z_MIN, endstopz1_min = ESTATE(Z_MIN)); + TERN_(USE_Z_MAX, endstopz1_max = ESTATE(Z_MAX)); + #if USE_Z2_MIN || USE_Z2_MAX + endstopz2_sta = ESTATE(TERN(USE_Z2_MIN, Z2_MIN, Z2_MAX)); + #endif + #if USE_Z3_MIN || USE_Z3_MAX + endstopz3_sta = ESTATE(TERN(USE_Z3_MIN, Z3_MIN, Z3_MAX)); + #endif + #if USE_Z4_MIN || USE_Z4_MAX + endstopz4_sta = ESTATE(TERN(USE_Z4_MIN, Z4_MIN, Z4_MAX)); + #endif } void test_gpio_readlevel_H() { @@ -104,12 +140,28 @@ #if PIN_EXISTS(MT_DET_2) mt_det2_sta = (READ(MT_DET_2_PIN) == HIGH); #endif - TERN_(HAS_X_ENDSTOP, endstopx1_sta = !ESTATE(TERN(USE_X_MIN, X_MIN, X_MAX))); - TERN_(HAS_X2_ENDSTOP, endstopx2_sta = !ESTATE(TERN(USE_X2_MIN, X2_MIN, X2_MAX))); - TERN_(HAS_Y_ENDSTOP, endstopy1_sta = !ESTATE(TERN(USE_Y_MIN, Y_MIN, Y_MAX))); - TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = !ESTATE(TERN(USE_Y2_MIN, Y2_MIN, Y2_MAX))); - TERN_(HAS_Z_ENDSTOP, endstopz1_sta = !ESTATE(TERN(HAS_Z_MIN_PIN, Z_MIN, Z_MAX))); - TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = !ESTATE(TERN(USE_Z2_MIN, Z2_MIN, Z2_MAX))); + TERN_(USE_X_MIN, endstopx1_min = !ESTATE(X_MIN)); + TERN_(USE_X_MAX, endstopx1_max = !ESTATE(X_MAX)); + #if USE_X2_MIN || USE_X2_MAX + endstopx2_sta = !ESTATE(TERN(USE_X2_MIN, X2_MIN, X2_MAX)); + #endif + #if USE_Y_MIN || USE_Y_MAX + endstopy1_sta = !ESTATE(TERN(USE_Y_MIN, Y_MIN, Y_MAX)); + #endif + #if USE_Y2_MIN || USE_Y2_MAX + endstopy2_sta = !ESTATE(TERN(USE_Y2_MIN, Y2_MIN, Y2_MAX)); + #endif + TERN_(USE_Z_MIN, endstopz1_min = !ESTATE(Z_MIN)); + TERN_(USE_Z_MAX, endstopz1_max = !ESTATE(Z_MAX)); + #if USE_Z2_MIN || USE_Z2_MAX + endstopz2_sta = !ESTATE(TERN(USE_Z2_MIN, Z2_MIN, Z2_MAX)); + #endif + #if USE_Z3_MIN || USE_Z3_MAX + endstopz3_sta = !ESTATE(TERN(USE_Z3_MIN, Z3_MIN, Z3_MAX)); + #endif + #if USE_Z4_MIN || USE_Z4_MAX + endstopz4_sta = !ESTATE(TERN(USE_Z4_MIN, Z4_MIN, Z4_MAX)); + #endif } #include "../../../libs/buzzer.h" @@ -185,7 +237,7 @@ else disp_det_error(); - if (endstopx1_sta && endstopy1_sta && endstopz1_sta && endstopz2_sta) + if (endstopx1_min && endstopx1_max && endstopy1_sta && endstopz1_min && endstopz1_max && endstopz2_sta && endstopz3_sta && endstopz4_sta) disp_Limit_ok(); else disp_Limit_error(); @@ -247,7 +299,9 @@ #endif } - if (endstopx1_sta && endstopx2_sta && endstopy1_sta && endstopy2_sta && endstopz1_sta && endstopz2_sta) { + if ( endstopx1_min && endstopx1_max && endstopx2_sta && endstopy1_sta && endstopy2_sta + && endstopz1_min && endstopz1_max && endstopz2_sta && endstopz3_sta && endstopz4_sta + ) { // nothing here } else { diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index 4e9b302263..edbf78ed76 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -102,9 +102,10 @@ void menu_advanced_settings(); #if ENABLED(LCD_ENDSTOP_TEST) - #define __STOP_ITEM(F,S) PSTRING_ITEM_F_P(F, TEST(stops, S) ? PSTR(STR_ENDSTOP_HIT) : PSTR(STR_ENDSTOP_OPEN), SS_FULL) + #define __STOP_ITEM(F,S) PSTRING_ITEM_F_P(F, TEST(stops, S) ? PSTR(STR_ENDSTOP_HIT) : PSTR(STR_ENDSTOP_OPEN), SS_FULL); #define _STOP_ITEM(L,S) __STOP_ITEM(F(L), S) - #define STOP_ITEM(A,I) _STOP_ITEM(STRINGIFY(A) STRINGIFY(I) " " TERN(A##_HOME_TO_MAX, "Max", "Min"), A##I##_ENDSTOP) + #define STOP_ITEM(A,I,M,L) TERN(HAS_##A##I##_##M_STATE, _STOP_ITEM, _IF_1_ELSE)(STRINGIFY(A) STRINGIFY(I) " " STRINGIFY(L), A##I##_##M) + #define STOP_MINMAX(A,I) STOP_ITEM(A,,MIN,"Min") STOP_ITEM(A,,MAX,"Max") #define FIL_ITEM(N) PSTRING_ITEM_N_P(N-1, MSG_FILAMENT_EN, (READ(FIL_RUNOUT##N##_PIN) != FIL_RUNOUT##N##_STATE) ? PSTR("PRESENT") : PSTR("out"), SS_FULL); static void endstop_test() { @@ -120,48 +121,12 @@ void menu_advanced_settings(); START_SCREEN(); STATIC_ITEM_F(GET_TEXT_F(MSG_ENDSTOP_TEST), SS_DEFAULT|SS_INVERT); - #if HAS_X_ENDSTOP - STOP_ITEM(X,); - #if ENABLED(X_DUAL_ENDSTOPS) - STOP_ITEM(X,2); - #endif - #endif - #if HAS_Y_ENDSTOP - STOP_ITEM(Y,); - #if ENABLED(Y_DUAL_ENDSTOPS) - STOP_ITEM(Y,2); - #endif - #endif - #if HAS_Z_ENDSTOP - STOP_ITEM(Z,); - #if ENABLED(Z_MULTI_ENDSTOPS) - STOP_ITEM(Z,2); - #if NUM_Z_STEPPERS >= 3 - STOP_ITEM(Z,3); - #if NUM_Z_STEPPERS >= 4 - STOP_ITEM(Z,4); - #endif - #endif - #endif - #endif - #if HAS_I_ENDSTOP - STOP_ITEM(I,); - #endif - #if HAS_J_ENDSTOP - STOP_ITEM(J,); - #endif - #if HAS_K_ENDSTOP - STOP_ITEM(K,); - #endif - #if HAS_U_ENDSTOP - STOP_ITEM(U,); - #endif - #if HAS_V_ENDSTOP - STOP_ITEM(V,); - #endif - #if HAS_W_ENDSTOP - STOP_ITEM(W,); - #endif + STOP_MINMAX(X,) STOP_MINMAX(X,2) + STOP_MINMAX(Y,) STOP_MINMAX(Y,2) + STOP_MINMAX(Z,) STOP_MINMAX(Z,2) STOP_MINMAX(Z,3) STOP_MINMAX(Z,4) + STOP_MINMAX(I,) STOP_MINMAX(J,) STOP_MINMAX(K,) + STOP_MINMAX(U,) STOP_MINMAX(V,) STOP_MINMAX(W,) + #if HAS_BED_PROBE && !HAS_DELTA_SENSORLESS_PROBING __STOP_ITEM(GET_TEXT_F(MSG_Z_PROBE), Z_MIN_PROBE); #endif diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 3c1fcc72a9..0f060f5720 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -138,7 +138,7 @@ void Endstops::init() { #if USE_Y2_MAX _INIT_ENDSTOP(MAX,Y,2); #endif - #if HAS_Z_MIN_PIN + #if USE_Z_MIN _INIT_ENDSTOP(MIN,Z,); #endif #if USE_Z_MAX @@ -315,7 +315,7 @@ void Endstops::event_handler() { SERIAL_ECHOPGM(" " STRINGIFY(A) ":", planner.triggered_position_mm(_AXIS(A))); _SET_STOP_CHAR(A,C); }while(0) #define _ENDSTOP_HIT_TEST(A,C) \ - if (TERN0(USE_##A##_MIN, TEST(hit_state, ES_ENUM(A,MIN))) || TERN0(USE_##A##_MAX, TEST(hit_state, ES_ENUM(A,MAX)))) \ + if (TERN0(HAS_##A##_MIN_STATE, TEST(hit_state, ES_ENUM(A,MIN))) || TERN0(HAS_##A##_MAX_STATE, TEST(hit_state, ES_ENUM(A,MAX)))) \ _ENDSTOP_HIT_ECHO(A,C) #define ENDSTOP_HIT_TEST_X() _ENDSTOP_HIT_TEST(X,'X') @@ -504,11 +504,6 @@ void __O2 Endstops::report_states() { } // Endstops::report_states -#define __ENDSTOP(AXIS, MINMAX) AXIS ##_## MINMAX -#define _ENDSTOP_PIN(AXIS, MINMAX) AXIS ##_## MINMAX ##_PIN -#define _ENDSTOP_HIT_STATE(AXIS, MINMAX) AXIS ##_## MINMAX ##_ENDSTOP_HIT_STATE -#define _ENDSTOP(AXIS, MINMAX) __ENDSTOP(AXIS, MINMAX) - /** * Called from interrupt context by the Endstop ISR or Stepper ISR! * Read endstops to get their current states, register hits for all @@ -521,7 +516,9 @@ void Endstops::update() { #endif // Macros to update / copy the live_state - #define UPDATE_LIVE_STATE(AXIS, MINMAX) SET_BIT_TO(live_state, _ENDSTOP(AXIS, MINMAX), (READ_ENDSTOP(_ENDSTOP_PIN(AXIS, MINMAX)) == _ENDSTOP_HIT_STATE(AXIS, MINMAX))) + #define _ES_PIN(A,M) A##_##M##_PIN + #define _ES_HIT(A,M) A##_##M##_ENDSTOP_HIT_STATE + #define UPDATE_LIVE_STATE(AXIS, MINMAX) SET_BIT_TO(live_state, ES_ENUM(AXIS, MINMAX), (READ_ENDSTOP(_ES_PIN(AXIS, MINMAX)) == _ES_HIT(AXIS, MINMAX))) #define COPY_LIVE_STATE(SRC_BIT, DST_BIT) SET_BIT_TO(live_state, DST_BIT, TEST(live_state, SRC_BIT)) #if ENABLED(G38_PROBE_TARGET) @@ -560,7 +557,7 @@ void Endstops::update() { /** * Check and update endstops */ - #if USE_X_MIN && !X_SPI_SENSORLESS + #if USE_X_MIN UPDATE_LIVE_STATE(X, MIN); #if ENABLED(X_DUAL_ENDSTOPS) #if USE_X2_MIN @@ -571,7 +568,7 @@ void Endstops::update() { #endif #endif - #if USE_X_MAX && !X_SPI_SENSORLESS + #if USE_X_MAX UPDATE_LIVE_STATE(X, MAX); #if ENABLED(X_DUAL_ENDSTOPS) #if USE_X2_MAX @@ -582,7 +579,7 @@ void Endstops::update() { #endif #endif - #if USE_Y_MIN && !Y_SPI_SENSORLESS + #if USE_Y_MIN UPDATE_LIVE_STATE(Y, MIN); #if ENABLED(Y_DUAL_ENDSTOPS) #if USE_Y2_MIN @@ -593,7 +590,7 @@ void Endstops::update() { #endif #endif - #if USE_Y_MAX && !Y_SPI_SENSORLESS + #if USE_Y_MAX UPDATE_LIVE_STATE(Y, MAX); #if ENABLED(Y_DUAL_ENDSTOPS) #if USE_Y2_MAX @@ -605,159 +602,84 @@ void Endstops::update() { #endif #if USE_Z_MIN && NONE(Z_SPI_SENSORLESS, Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - #if HAS_Z_MIN_PIN - UPDATE_LIVE_STATE(Z, MIN); - #endif - #if ENABLED(Z_MULTI_ENDSTOPS) - #if USE_Z2_MIN - UPDATE_LIVE_STATE(Z2, MIN); - #else - COPY_LIVE_STATE(Z_MIN, Z2_MIN); - #endif - #if NUM_Z_STEPPERS >= 3 - #if USE_Z3_MIN - UPDATE_LIVE_STATE(Z3, MIN); - #else - COPY_LIVE_STATE(Z_MIN, Z3_MIN); - #endif - #endif - #if NUM_Z_STEPPERS >= 4 - #if USE_Z4_MIN - UPDATE_LIVE_STATE(Z4, MIN); - #else - COPY_LIVE_STATE(Z_MIN, Z4_MIN); - #endif - #endif - #endif + UPDATE_LIVE_STATE(Z, MIN); + #endif + #if USE_Z2_MIN + UPDATE_LIVE_STATE(Z2, MIN); + #elif HAS_Z2_MIN_STATE + COPY_LIVE_STATE(Z_MIN, Z2_MIN); + #endif + #if USE_Z3_MIN + UPDATE_LIVE_STATE(Z3, MIN); + #elif HAS_Z3_MIN_STATE + COPY_LIVE_STATE(Z_MIN, Z3_MIN); + #endif + #if USE_Z4_MIN + UPDATE_LIVE_STATE(Z4, MIN); + #elif HAS_Z4_MIN_STATE + COPY_LIVE_STATE(Z_MIN, Z4_MIN); #endif - #if HAS_BED_PROBE + #if HAS_REAL_BED_PROBE // When closing the gap check the enabled probe if (probe_switch_activated()) UPDATE_LIVE_STATE(Z, TERN(USE_Z_MIN_PROBE, MIN_PROBE, MIN)); #endif - #if USE_Z_MAX && !Z_SPI_SENSORLESS - // Check both Z dual endstops - #if ENABLED(Z_MULTI_ENDSTOPS) - UPDATE_LIVE_STATE(Z, MAX); - #if USE_Z2_MAX - UPDATE_LIVE_STATE(Z2, MAX); - #else - COPY_LIVE_STATE(Z_MAX, Z2_MAX); - #endif - #if NUM_Z_STEPPERS >= 3 - #if USE_Z3_MAX - UPDATE_LIVE_STATE(Z3, MAX); - #else - COPY_LIVE_STATE(Z_MAX, Z3_MAX); - #endif - #endif - #if NUM_Z_STEPPERS >= 4 - #if USE_Z4_MAX - UPDATE_LIVE_STATE(Z4, MAX); - #else - COPY_LIVE_STATE(Z_MAX, Z4_MAX); - #endif - #endif - #elif TERN1(USE_Z_MIN_PROBE, Z_MAX_PIN != Z_MIN_PROBE_PIN) - // If this pin isn't the bed probe it's the Z endstop - UPDATE_LIVE_STATE(Z, MAX); - #endif + #if USE_Z_MAX + UPDATE_LIVE_STATE(Z, MAX); + #endif + #if USE_Z2_MAX + UPDATE_LIVE_STATE(Z2, MAX); + #elif HAS_Z2_MAX_STATE + COPY_LIVE_STATE(Z_MAX, Z2_MAX); + #endif + #if USE_Z3_MAX + UPDATE_LIVE_STATE(Z3, MAX); + #elif HAS_Z3_MAX_STATE + COPY_LIVE_STATE(Z_MAX, Z3_MAX); + #endif + #if USE_Z4_MAX + UPDATE_LIVE_STATE(Z4, MAX); + #elif HAS_Z4_MAX_STATE + COPY_LIVE_STATE(Z_MAX, Z4_MAX); #endif - #if USE_I_MIN && !I_SPI_SENSORLESS - #if ENABLED(I_DUAL_ENDSTOPS) - UPDATE_LIVE_STATE(I, MIN); - #else - UPDATE_LIVE_STATE(I, MIN); - #endif + #if USE_I_MIN + UPDATE_LIVE_STATE(I, MIN); #endif - - #if USE_I_MAX && !I_SPI_SENSORLESS - #if ENABLED(I_DUAL_ENDSTOPS) - UPDATE_LIVE_STATE(I, MAX); - #else - UPDATE_LIVE_STATE(I, MAX); - #endif + #if USE_I_MAX + UPDATE_LIVE_STATE(I, MAX); #endif - - #if USE_J_MIN && !J_SPI_SENSORLESS - #if ENABLED(J_DUAL_ENDSTOPS) - UPDATE_LIVE_STATE(J, MIN); - #else - UPDATE_LIVE_STATE(J, MIN); - #endif + #if USE_J_MIN + UPDATE_LIVE_STATE(J, MIN); #endif - - #if USE_J_MAX && !J_SPI_SENSORLESS - #if ENABLED(J_DUAL_ENDSTOPS) - UPDATE_LIVE_STATE(J, MAX); - #else - UPDATE_LIVE_STATE(J, MAX); - #endif + #if USE_J_MAX + UPDATE_LIVE_STATE(J, MAX); #endif - - #if USE_K_MIN && !K_SPI_SENSORLESS - #if ENABLED(K_DUAL_ENDSTOPS) - UPDATE_LIVE_STATE(K, MIN); - #else - UPDATE_LIVE_STATE(K, MIN); - #endif + #if USE_K_MIN + UPDATE_LIVE_STATE(K, MIN); #endif - - #if USE_K_MAX && !K_SPI_SENSORLESS - #if ENABLED(K_DUAL_ENDSTOPS) - UPDATE_LIVE_STATE(K, MAX); - #else - UPDATE_LIVE_STATE(K, MAX); - #endif + #if USE_K_MAX + UPDATE_LIVE_STATE(K, MAX); #endif - - #if USE_U_MIN && !U_SPI_SENSORLESS - #if ENABLED(U_DUAL_ENDSTOPS) - UPDATE_LIVE_STATE(U, MIN); - #else - UPDATE_LIVE_STATE(U, MIN); - #endif + #if USE_U_MIN + UPDATE_LIVE_STATE(U, MIN); #endif - - #if USE_U_MAX && !U_SPI_SENSORLESS - #if ENABLED(U_DUAL_ENDSTOPS) - UPDATE_LIVE_STATE(U, MAX); - #else - UPDATE_LIVE_STATE(U, MAX); - #endif + #if USE_U_MAX + UPDATE_LIVE_STATE(U, MAX); #endif - - #if USE_V_MIN && !V_SPI_SENSORLESS - #if ENABLED(V_DUAL_ENDSTOPS) - UPDATE_LIVE_STATE(V, MIN); - #else - UPDATE_LIVE_STATE(V, MIN); - #endif + #if USE_V_MIN + UPDATE_LIVE_STATE(V, MIN); #endif - #if USE_V_MAX && !V_SPI_SENSORLESS - #if ENABLED(O_DUAL_ENDSTOPS) - UPDATE_LIVE_STATE(V, MAX); - #else - UPDATE_LIVE_STATE(V, MAX); - #endif + #if USE_V_MAX + UPDATE_LIVE_STATE(V, MAX); #endif - - #if USE_W_MIN && !W_SPI_SENSORLESS - #if ENABLED(W_DUAL_ENDSTOPS) - UPDATE_LIVE_STATE(W, MIN); - #else - UPDATE_LIVE_STATE(W, MIN); - #endif + #if USE_W_MIN + UPDATE_LIVE_STATE(W, MIN); #endif - #if USE_W_MAX && !W_SPI_SENSORLESS - #if ENABLED(W_DUAL_ENDSTOPS) - UPDATE_LIVE_STATE(W, MAX); - #else - UPDATE_LIVE_STATE(W, MAX); - #endif + #if USE_W_MAX + UPDATE_LIVE_STATE(W, MAX); #endif #if ENDSTOP_NOISE_THRESHOLD @@ -788,11 +710,11 @@ void Endstops::update() { #define TEST_ENDSTOP(ENDSTOP) (TEST(state(), ENDSTOP)) // Record endstop was hit - #define _ENDSTOP_HIT(AXIS, MINMAX) SBI(hit_state, _ENDSTOP(AXIS, MINMAX)) + #define _ENDSTOP_HIT(AXIS, MINMAX) SBI(hit_state, ES_ENUM(AXIS, MINMAX)) // Call the endstop triggered routine for single endstops #define PROCESS_ENDSTOP(AXIS, MINMAX) do { \ - if (TEST_ENDSTOP(_ENDSTOP(AXIS, MINMAX))) { \ + if (TEST_ENDSTOP(ES_ENUM(AXIS, MINMAX))) { \ _ENDSTOP_HIT(AXIS, MINMAX); \ planner.endstop_triggered(_AXIS(AXIS)); \ } \ @@ -801,7 +723,7 @@ void Endstops::update() { // Core Sensorless Homing needs to test an Extra Pin #define CORE_DIAG(QQ,A,MM) (CORE_IS_##QQ && A##_SENSORLESS && !A##_SPI_SENSORLESS && USE_##A##_##MM) #define PROCESS_CORE_ENDSTOP(A1,M1,A2,M2) do { \ - if (TEST_ENDSTOP(_ENDSTOP(A1,M1))) { \ + if (TEST_ENDSTOP(ES_ENUM(A1,M1))) { \ _ENDSTOP_HIT(A2,M2); \ planner.endstop_triggered(_AXIS(A2)); \ } \ @@ -809,7 +731,7 @@ void Endstops::update() { // Call the endstop triggered routine for dual endstops #define PROCESS_DUAL_ENDSTOP(A, MINMAX) do { \ - const byte dual_hit = TEST_ENDSTOP(_ENDSTOP(A, MINMAX)) | (TEST_ENDSTOP(_ENDSTOP(A##2, MINMAX)) << 1); \ + const byte dual_hit = TEST_ENDSTOP(ES_ENUM(A, MINMAX)) | (TEST_ENDSTOP(ES_ENUM(A##2, MINMAX)) << 1); \ if (dual_hit) { \ _ENDSTOP_HIT(A, MINMAX); \ /* if not performing home or if both endstops were triggered during homing... */ \ @@ -819,7 +741,7 @@ void Endstops::update() { }while(0) #define PROCESS_TRIPLE_ENDSTOP(A, MINMAX) do { \ - const byte triple_hit = TEST_ENDSTOP(_ENDSTOP(A, MINMAX)) | (TEST_ENDSTOP(_ENDSTOP(A##2, MINMAX)) << 1) | (TEST_ENDSTOP(_ENDSTOP(A##3, MINMAX)) << 2); \ + const byte triple_hit = TEST_ENDSTOP(ES_ENUM(A, MINMAX)) | (TEST_ENDSTOP(ES_ENUM(A##2, MINMAX)) << 1) | (TEST_ENDSTOP(ES_ENUM(A##3, MINMAX)) << 2); \ if (triple_hit) { \ _ENDSTOP_HIT(A, MINMAX); \ /* if not performing home or if both endstops were triggered during homing... */ \ @@ -829,7 +751,7 @@ void Endstops::update() { }while(0) #define PROCESS_QUAD_ENDSTOP(A, MINMAX) do { \ - const byte quad_hit = TEST_ENDSTOP(_ENDSTOP(A, MINMAX)) | (TEST_ENDSTOP(_ENDSTOP(A##2, MINMAX)) << 1) | (TEST_ENDSTOP(_ENDSTOP(A##3, MINMAX)) << 2) | (TEST_ENDSTOP(_ENDSTOP(A##4, MINMAX)) << 3); \ + const byte quad_hit = TEST_ENDSTOP(ES_ENUM(A, MINMAX)) | (TEST_ENDSTOP(ES_ENUM(A##2, MINMAX)) << 1) | (TEST_ENDSTOP(ES_ENUM(A##3, MINMAX)) << 2) | (TEST_ENDSTOP(ES_ENUM(A##4, MINMAX)) << 3); \ if (quad_hit) { \ _ENDSTOP_HIT(A, MINMAX); \ /* if not performing home or if both endstops were triggered during homing... */ \ @@ -876,7 +798,7 @@ void Endstops::update() { #if HAS_X_AXIS if (stepper.axis_is_moving(X_AXIS)) { if (!stepper.motor_direction(X_AXIS_HEAD)) { // -direction - #if USE_X_MIN || (X_SPI_SENSORLESS && X_HOME_TO_MIN) + #if HAS_X_MIN_STATE PROCESS_ENDSTOP_X(MIN); #if CORE_DIAG(XY, Y, MIN) PROCESS_CORE_ENDSTOP(Y,MIN,X,MIN); @@ -890,7 +812,7 @@ void Endstops::update() { #endif } else { // +direction - #if USE_X_MAX || (X_SPI_SENSORLESS && X_HOME_TO_MAX) + #if HAS_X_MAX_STATE PROCESS_ENDSTOP_X(MAX); #if CORE_DIAG(XY, Y, MIN) PROCESS_CORE_ENDSTOP(Y,MIN,X,MAX); @@ -909,7 +831,7 @@ void Endstops::update() { #if HAS_Y_AXIS if (stepper.axis_is_moving(Y_AXIS)) { if (!stepper.motor_direction(Y_AXIS_HEAD)) { // -direction - #if USE_Y_MIN || (Y_SPI_SENSORLESS && Y_HOME_TO_MIN) + #if HAS_Y_MIN_STATE PROCESS_ENDSTOP_Y(MIN); #if CORE_DIAG(XY, X, MIN) PROCESS_CORE_ENDSTOP(X,MIN,Y,MIN); @@ -923,7 +845,7 @@ void Endstops::update() { #endif } else { // +direction - #if USE_Y_MAX || (Y_SPI_SENSORLESS && Y_HOME_TO_MAX) + #if HAS_Y_MAX_STATE PROCESS_ENDSTOP_Y(MAX); #if CORE_DIAG(XY, X, MIN) PROCESS_CORE_ENDSTOP(X,MIN,Y,MAX); @@ -942,34 +864,34 @@ void Endstops::update() { #if HAS_Z_AXIS if (stepper.axis_is_moving(Z_AXIS)) { if (!stepper.motor_direction(Z_AXIS_HEAD)) { // Z -direction. Gantry down, bed up. - - #if USE_Z_MIN || (Z_SPI_SENSORLESS && Z_HOME_TO_MIN) - if ( TERN1(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, z_probe_enabled) - && TERN1(USE_Z_MIN_PROBE, !z_probe_enabled) - ) PROCESS_ENDSTOP_Z(MIN); - #if CORE_DIAG(XZ, X, MIN) - PROCESS_CORE_ENDSTOP(X,MIN,Z,MIN); - #elif CORE_DIAG(XZ, X, MAX) - PROCESS_CORE_ENDSTOP(X,MAX,Z,MIN); - #elif CORE_DIAG(YZ, Y, MIN) - PROCESS_CORE_ENDSTOP(Y,MIN,Z,MIN); - #elif CORE_DIAG(YZ, Y, MAX) - PROCESS_CORE_ENDSTOP(Y,MAX,Z,MIN); - #endif + #if HAS_Z_MIN_STATE + // If the Z_MIN_PIN is being used for the probe there's no + // separate Z_MIN endstop. But a Z endstop could be wired + // in series, so someone might find this useful. + if ( TERN1(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, z_probe_enabled) // When Z_MIN is the probe, the probe must be enabled + && TERN1(USE_Z_MIN_PROBE, !z_probe_enabled) // When Z_MIN isn't the probe, Z MIN is ignored while probing + ) { + PROCESS_ENDSTOP_Z(MIN); + #if CORE_DIAG(XZ, X, MIN) + PROCESS_CORE_ENDSTOP(X,MIN,Z,MIN); + #elif CORE_DIAG(XZ, X, MAX) + PROCESS_CORE_ENDSTOP(X,MAX,Z,MIN); + #elif CORE_DIAG(YZ, Y, MIN) + PROCESS_CORE_ENDSTOP(Y,MIN,Z,MIN); + #elif CORE_DIAG(YZ, Y, MAX) + PROCESS_CORE_ENDSTOP(Y,MAX,Z,MIN); + #endif + } #endif - // When closing the gap check the enabled probe + // When closing the gap use the probe trigger state #if USE_Z_MIN_PROBE if (z_probe_enabled) PROCESS_ENDSTOP(Z, MIN_PROBE); #endif } else { // Z +direction. Gantry up, bed down. - #if USE_Z_MAX || (Z_SPI_SENSORLESS && Z_HOME_TO_MAX) - #if ENABLED(Z_MULTI_ENDSTOPS) - PROCESS_ENDSTOP_Z(MAX); - #elif TERN1(USE_Z_MIN_PROBE, Z_MAX_PIN != Z_MIN_PROBE_PIN) // No probe or probe is Z_MIN || Probe is not Z_MAX - PROCESS_ENDSTOP(Z, MAX); - #endif + #if HAS_Z_MAX_STATE + PROCESS_ENDSTOP_Z(MAX); #if CORE_DIAG(XZ, X, MIN) PROCESS_CORE_ENDSTOP(X,MIN,Z,MAX); #elif CORE_DIAG(XZ, X, MAX) @@ -987,12 +909,12 @@ void Endstops::update() { #if HAS_I_AXIS if (stepper.axis_is_moving(I_AXIS)) { if (!stepper.motor_direction(I_AXIS_HEAD)) { // -direction - #if USE_I_MIN || (I_SPI_SENSORLESS && I_HOME_TO_MIN) + #if HAS_I_MIN_STATE PROCESS_ENDSTOP(I, MIN); #endif } else { // +direction - #if USE_I_MAX || (I_SPI_SENSORLESS && I_HOME_TO_MAX) + #if HAS_I_MAX_STATE PROCESS_ENDSTOP(I, MAX); #endif } @@ -1002,12 +924,12 @@ void Endstops::update() { #if HAS_J_AXIS if (stepper.axis_is_moving(J_AXIS)) { if (!stepper.motor_direction(J_AXIS_HEAD)) { // -direction - #if USE_J_MIN || (J_SPI_SENSORLESS && J_HOME_TO_MIN) + #if HAS_J_MIN_STATE PROCESS_ENDSTOP(J, MIN); #endif } else { // +direction - #if USE_J_MAX || (J_SPI_SENSORLESS && J_HOME_TO_MAX) + #if HAS_J_MAX_STATE PROCESS_ENDSTOP(J, MAX); #endif } @@ -1017,12 +939,12 @@ void Endstops::update() { #if HAS_K_AXIS if (stepper.axis_is_moving(K_AXIS)) { if (!stepper.motor_direction(K_AXIS_HEAD)) { // -direction - #if USE_K_MIN || (K_SPI_SENSORLESS && K_HOME_TO_MIN) + #if HAS_K_MIN_STATE PROCESS_ENDSTOP(K, MIN); #endif } else { // +direction - #if USE_K_MAX || (K_SPI_SENSORLESS && K_HOME_TO_MAX) + #if HAS_K_MAX_STATE PROCESS_ENDSTOP(K, MAX); #endif } @@ -1032,12 +954,12 @@ void Endstops::update() { #if HAS_U_AXIS if (stepper.axis_is_moving(U_AXIS)) { if (!stepper.motor_direction(U_AXIS_HEAD)) { // -direction - #if USE_U_MIN || (U_SPI_SENSORLESS && U_HOME_TO_MIN) + #if HAS_U_MIN_STATE PROCESS_ENDSTOP(U, MIN); #endif } else { // +direction - #if USE_U_MAX || (U_SPI_SENSORLESS && U_HOME_TO_MAX) + #if HAS_U_MAX_STATE PROCESS_ENDSTOP(U, MAX); #endif } @@ -1047,12 +969,12 @@ void Endstops::update() { #if HAS_V_AXIS if (stepper.axis_is_moving(V_AXIS)) { if (!stepper.motor_direction(V_AXIS_HEAD)) { // -direction - #if USE_V_MIN || (V_SPI_SENSORLESS && V_HOME_TO_MIN) + #if HAS_V_MIN_STATE PROCESS_ENDSTOP(V, MIN); #endif } else { // +direction - #if USE_V_MAX || (V_SPI_SENSORLESS && V_HOME_TO_MAX) + #if HAS_V_MAX_STATE PROCESS_ENDSTOP(V, MAX); #endif } @@ -1062,17 +984,18 @@ void Endstops::update() { #if HAS_W_AXIS if (stepper.axis_is_moving(W_AXIS)) { if (!stepper.motor_direction(W_AXIS_HEAD)) { // -direction - #if USE_W_MIN || (W_SPI_SENSORLESS && W_HOME_TO_MIN) + #if HAS_W_MIN_STATE PROCESS_ENDSTOP(W, MIN); #endif } else { // +direction - #if USE_W_MAX || (W_SPI_SENSORLESS && W_HOME_TO_MAX) + #if HAS_W_MAX_STATE PROCESS_ENDSTOP(W, MAX); #endif } } #endif // HAS_W_AXIS + } // Endstops::update() #if ENABLED(SPI_ENDSTOPS) @@ -1080,39 +1003,67 @@ void Endstops::update() { // Called from idle() to read Trinamic stall states bool Endstops::tmc_spi_homing_check() { bool hit = false; + #if X_SPI_SENSORLESS - if (tmc_spi_homing.x && (stepperX.test_stall_status() - #if Y_SPI_SENSORLESS && ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) - || stepperY.test_stall_status() - #elif Z_SPI_SENSORLESS && CORE_IS_XZ - || stepperZ.test_stall_status() + if (tmc_spi_homing.x) { + #if ENABLED(DUAL_X_CARRIAGE) + const bool ismin = X_MIN_TEST(); #endif - )) { SBI(live_state, X_ENDSTOP); hit = true; } - #if ENABLED(X_DUAL_ENDSTOPS) - if (tmc_spi_homing.x && stepperX2.test_stall_status()) { SBI(live_state, X2_ENDSTOP); hit = true; } - #endif + const bool xhit = ( + #if ENABLED(DUAL_X_CARRIAGE) + ismin ? stepperX.test_stall_status() : stepperX2.test_stall_status() + #else + stepperX.test_stall_status() + #if Y_SPI_SENSORLESS && ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) + || stepperY.test_stall_status() + #elif Z_SPI_SENSORLESS && CORE_IS_XZ + || stepperZ.test_stall_status() + #endif + #endif + ); + if (xhit) { SBI(live_state, TERN(DUAL_X_CARRIAGE, ismin ? X_MIN : X_MAX, X_ENDSTOP)); hit = true; } + #if ENABLED(X_DUAL_ENDSTOPS) + if (stepperX2.test_stall_status()) { SBI(live_state, X2_ENDSTOP); hit = true; } + #endif + } #endif + #if Y_SPI_SENSORLESS - if (tmc_spi_homing.y && (stepperY.test_stall_status() - #if X_SPI_SENSORLESS && ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) - || stepperX.test_stall_status() - #elif Z_SPI_SENSORLESS && CORE_IS_YZ - || stepperZ.test_stall_status() + if (tmc_spi_homing.y) { + if (stepperY.test_stall_status() + #if X_SPI_SENSORLESS && ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) + || stepperX.test_stall_status() + #elif Z_SPI_SENSORLESS && CORE_IS_YZ + || stepperZ.test_stall_status() + #endif + ) { SBI(live_state, Y_ENDSTOP); hit = true; } + #if ENABLED(Y_DUAL_ENDSTOPS) + if (stepperY2.test_stall_status()) { SBI(live_state, Y2_ENDSTOP); hit = true; } #endif - )) { SBI(live_state, Y_ENDSTOP); hit = true; } - #if ENABLED(Y_DUAL_ENDSTOPS) - if (tmc_spi_homing.y && stepperY2.test_stall_status()) { SBI(live_state, Y2_ENDSTOP); hit = true; } - #endif + } #endif + #if Z_SPI_SENSORLESS - if (tmc_spi_homing.z && (stepperZ.test_stall_status() - #if X_SPI_SENSORLESS && CORE_IS_XZ - || stepperX.test_stall_status() - #elif Y_SPI_SENSORLESS && CORE_IS_YZ - || stepperY.test_stall_status() + if (tmc_spi_homing.z) { + if (stepperZ.test_stall_status() + #if X_SPI_SENSORLESS && CORE_IS_XZ + || stepperX.test_stall_status() + #elif Y_SPI_SENSORLESS && CORE_IS_YZ + || stepperY.test_stall_status() + #endif + ) { SBI(live_state, Z_ENDSTOP); hit = true; } + #if ENABLED(Z_MULTI_ENDSTOPS) + if (stepperZ2.test_stall_status()) { SBI(live_state, Z2_ENDSTOP); hit = true; } + #if NUM_Z_STEPPERS >= 3 + if (stepperZ3.test_stall_status()) { SBI(live_state, Z3_ENDSTOP); hit = true; } + #if NUM_Z_STEPPERS >= 4 + if (stepperZ4.test_stall_status()) { SBI(live_state, Z4_ENDSTOP); hit = true; } + #endif + #endif #endif - )) { SBI(live_state, Z_ENDSTOP); hit = true; } + } #endif + #if I_SPI_SENSORLESS if (tmc_spi_homing.i && stepperI.test_stall_status()) { SBI(live_state, I_ENDSTOP); hit = true; } #endif @@ -1147,6 +1098,15 @@ void Endstops::update() { CBI(live_state, Y2_ENDSTOP); #endif TERN_(Z_SPI_SENSORLESS, CBI(live_state, Z_ENDSTOP)); + #if ALL(Z_SPI_SENSORLESS, Z_MULTI_ENDSTOPS) + CBI(live_state, Z2_ENDSTOP); + #if NUM_Z_STEPPERS >= 3 + CBI(live_state, Z3_ENDSTOP); + #if NUM_Z_STEPPERS >= 4 + CBI(live_state, Z4_ENDSTOP); + #endif + #endif + #endif TERN_(I_SPI_SENSORLESS, CBI(live_state, I_ENDSTOP)); TERN_(J_SPI_SENSORLESS, CBI(live_state, J_ENDSTOP)); TERN_(K_SPI_SENSORLESS, CBI(live_state, K_ENDSTOP)); @@ -1190,7 +1150,7 @@ void Endstops::update() { #if USE_Y_MAX ES_GET_STATE(Y_MAX); #endif - #if HAS_Z_MIN_PIN + #if USE_Z_MIN ES_GET_STATE(Z_MIN); #endif #if USE_Z_MAX @@ -1266,7 +1226,7 @@ void Endstops::update() { ES_GET_STATE(W_MIN); #endif - uint16_t endstop_change = live_state_local ^ old_live_state_local; + const uint16_t endstop_change = live_state_local ^ old_live_state_local; #define ES_REPORT_CHANGE(S) if (TEST(endstop_change, S)) SERIAL_ECHOPGM(" " STRINGIFY(S) ":", TEST(live_state_local, S)) if (endstop_change) { @@ -1371,52 +1331,80 @@ void Endstops::update() { /** * Change TMC driver currents to N##_CURRENT_HOME, saving the current configuration of each. */ - void Endstops::set_homing_current(const bool onoff) { - #define HAS_CURRENT_HOME(N) (defined(N##_CURRENT_HOME) && N##_CURRENT_HOME != N##_CURRENT) - #define HAS_DELTA_X_CURRENT (ENABLED(DELTA) && HAS_CURRENT_HOME(X)) - #define HAS_DELTA_Y_CURRENT (ENABLED(DELTA) && HAS_CURRENT_HOME(Y)) - #if HAS_DELTA_X_CURRENT || HAS_DELTA_Y_CURRENT || HAS_CURRENT_HOME(Z) + void Endstops::set_z_sensorless_current(const bool onoff) { + #if ENABLED(DELTA) && HAS_CURRENT_HOME(X) + #define HAS_DELTA_X_CURRENT 1 + #endif + #if ENABLED(DELTA) && HAS_CURRENT_HOME(Y) + #define HAS_DELTA_Y_CURRENT 1 + #endif + #if HAS_DELTA_X_CURRENT || HAS_DELTA_Y_CURRENT || HAS_CURRENT_HOME(Z) || HAS_CURRENT_HOME(Z2) || HAS_CURRENT_HOME(Z3) || HAS_CURRENT_HOME(Z4) #if HAS_DELTA_X_CURRENT - static int16_t saved_current_x; + static int16_t saved_current_X; #endif #if HAS_DELTA_Y_CURRENT - static int16_t saved_current_y; + static int16_t saved_current_Y; #endif #if HAS_CURRENT_HOME(Z) - static int16_t saved_current_z; + static int16_t saved_current_Z; #endif - auto debug_current_on = [](PGM_P const s, const int16_t a, const int16_t b) { - if (DEBUGGING(LEVELING)) { DEBUG_ECHOPGM_P(s); DEBUG_ECHOLNPGM(" current: ", a, " -> ", b); } - }; + #if HAS_CURRENT_HOME(Z2) + static int16_t saved_current_Z2; + #endif + #if HAS_CURRENT_HOME(Z3) + static int16_t saved_current_Z3; + #endif + #if HAS_CURRENT_HOME(Z4) + static int16_t saved_current_Z4; + #endif + + #if ENABLED(DEBUG_LEVELING_FEATURE) + auto debug_current = [](FSTR_P const s, const int16_t a, const int16_t b) { + if (DEBUGGING(LEVELING)) { DEBUG_ECHOF(s); DEBUG_ECHOLNPGM(" current: ", a, " -> ", b); } + }; + #else + #define debug_current(...) + #endif + + #define _SAVE_SET_CURRENT(A) \ + saved_current_##A = stepper##A.getMilliamps(); \ + stepper##A.rms_current(A##_CURRENT_HOME); \ + debug_current(F(STR_##A), saved_current_##A, A##_CURRENT_HOME) + + #define _RESTORE_CURRENT(A) \ + stepper##A.rms_current(saved_current_##A); \ + debug_current(F(STR_##A), saved_current_##A, A##_CURRENT_HOME) + if (onoff) { - #if HAS_DELTA_X_CURRENT - saved_current_x = stepperX.getMilliamps(); - stepperX.rms_current(X_CURRENT_HOME); - debug_current_on(PSTR("X"), saved_current_x, X_CURRENT_HOME); - #endif - #if HAS_DELTA_Y_CURRENT - saved_current_y = stepperY.getMilliamps(); - stepperY.rms_current(Y_CURRENT_HOME); - debug_current_on(PSTR("Y"), saved_current_y, Y_CURRENT_HOME); - #endif + TERN_(HAS_DELTA_X_CURRENT, _SAVE_SET_CURRENT(X)); + TERN_(HAS_DELTA_Y_CURRENT, _SAVE_SET_CURRENT(Y)); #if HAS_CURRENT_HOME(Z) - saved_current_z = stepperZ.getMilliamps(); - stepperZ.rms_current(Z_CURRENT_HOME); - debug_current_on(PSTR("Z"), saved_current_z, Z_CURRENT_HOME); + _SAVE_SET_CURRENT(Z); + #endif + #if HAS_CURRENT_HOME(Z2) + _SAVE_SET_CURRENT(Z2); + #endif + #if HAS_CURRENT_HOME(Z3) + _SAVE_SET_CURRENT(Z3); + #endif + #if HAS_CURRENT_HOME(Z4) + _SAVE_SET_CURRENT(Z4); #endif } else { - #if HAS_DELTA_X_CURRENT - stepperX.rms_current(saved_current_x); - debug_current_on(PSTR("X"), X_CURRENT_HOME, saved_current_x); - #endif - #if HAS_DELTA_Y_CURRENT - stepperY.rms_current(saved_current_y); - debug_current_on(PSTR("Y"), Y_CURRENT_HOME, saved_current_y); - #endif + TERN_(HAS_DELTA_X_CURRENT, _RESTORE_CURRENT(X)); + TERN_(HAS_DELTA_Y_CURRENT, _RESTORE_CURRENT(Y)); #if HAS_CURRENT_HOME(Z) - stepperZ.rms_current(saved_current_z); - debug_current_on(PSTR("Z"), Z_CURRENT_HOME, saved_current_z); + _RESTORE_CURRENT(Z); + #endif + #if HAS_CURRENT_HOME(Z2) + _RESTORE_CURRENT(Z2); + #endif + #if HAS_CURRENT_HOME(Z3) + _RESTORE_CURRENT(Z3); + #endif + #if HAS_CURRENT_HOME(Z4) + _RESTORE_CURRENT(Z4); #endif } diff --git a/Marlin/src/module/endstops.h b/Marlin/src/module/endstops.h index d348e58ab7..bbdb0bc77b 100644 --- a/Marlin/src/module/endstops.h +++ b/Marlin/src/module/endstops.h @@ -32,7 +32,12 @@ #define ES_ENUM(A,M) _ES_ENUM(A,M) #define _ES_ITEM(N) N, -#define ES_ITEM(K,N) TERN_(K,DEFER4(_ES_ITEM)(N)) +#define ES_ITEM(K,N) TERN(K,_ES_ITEM,_IF_1_ELSE)(N) + +#define _ESN_ITEM(K,A,M) ES_ITEM(K,ES_ENUM(A,M)) +#define ES_MINMAX(A) ES_ITEM(HAS_##A##_MIN_STATE, ES_ENUM(A,MIN)) ES_ITEM(HAS_##A##_MAX_STATE, ES_ENUM(A,MAX)) + +#define HAS_CURRENT_HOME(N) ((N##_CURRENT_HOME > 0) && (N##_CURRENT_HOME != N##_CURRENT)) /** * Basic Endstop Flag Bits: @@ -54,90 +59,71 @@ */ enum EndstopEnum : char { // Common XYZ (ABC) endstops. - ES_ITEM(USE_X_MIN, X_MIN) ES_ITEM(USE_X_MAX, X_MAX) - ES_ITEM(USE_Y_MIN, Y_MIN) ES_ITEM(USE_Y_MAX, Y_MAX) - ES_ITEM(USE_Z_MIN, Z_MIN) ES_ITEM(USE_Z_MAX, Z_MAX) - ES_ITEM(USE_I_MIN, I_MIN) ES_ITEM(USE_I_MAX, I_MAX) - ES_ITEM(USE_J_MIN, J_MIN) ES_ITEM(USE_J_MAX, J_MAX) - ES_ITEM(USE_K_MIN, K_MIN) ES_ITEM(USE_K_MAX, K_MAX) - ES_ITEM(USE_U_MIN, U_MIN) ES_ITEM(USE_U_MAX, U_MAX) - ES_ITEM(USE_V_MIN, V_MIN) ES_ITEM(USE_V_MAX, V_MAX) - ES_ITEM(USE_W_MIN, W_MIN) ES_ITEM(USE_W_MAX, W_MAX) + ES_MINMAX(X) ES_MINMAX(Y) ES_MINMAX(Z) + ES_MINMAX(I) ES_MINMAX(J) ES_MINMAX(K) + ES_MINMAX(U) ES_MINMAX(V) ES_MINMAX(W) // Extra Endstops for XYZ - #if ENABLED(X_DUAL_ENDSTOPS) - ES_ITEM(USE_X_MIN, X2_MIN) ES_ITEM(USE_X_MAX, X2_MAX) - #endif - #if ENABLED(Y_DUAL_ENDSTOPS) - ES_ITEM(USE_Y_MIN, Y2_MIN) ES_ITEM(USE_Y_MAX, Y2_MAX) - #endif - #if ENABLED(Z_MULTI_ENDSTOPS) - ES_ITEM(USE_Z_MIN, Z2_MIN) ES_ITEM(USE_Z_MAX, Z2_MAX) - #if NUM_Z_STEPPERS >= 3 - ES_ITEM(USE_Z_MIN, Z3_MIN) ES_ITEM(USE_Z_MAX, Z3_MAX) - #if NUM_Z_STEPPERS >= 4 - ES_ITEM(USE_Z_MIN, Z4_MIN) ES_ITEM(USE_Z_MAX, Z4_MAX) - #endif - #endif - #endif + ES_MINMAX(X2) ES_MINMAX(Y2) ES_MINMAX(Z2) ES_MINMAX(Z3) ES_MINMAX(Z4) // Bed Probe state is distinct or shared with Z_MIN (i.e., when the probe is the only Z endstop) - #if !HAS_DELTA_SENSORLESS_PROBING - ES_ITEM(HAS_BED_PROBE, Z_MIN_PROBE IF_DISABLED(USE_Z_MIN_PROBE, = Z_MIN)) - #endif + ES_ITEM(HAS_Z_PROBE_STATE, Z_MIN_PROBE IF_DISABLED(USE_Z_MIN_PROBE, = Z_MIN)) // The total number of states NUM_ENDSTOP_STATES - // Endstop aliased to MIN or MAX - #if HAS_X_ENDSTOP + // Endstop aliases + #if HAS_X_STATE , X_ENDSTOP = TERN(X_HOME_TO_MAX, X_MAX, X_MIN) - #if ENABLED(X_DUAL_ENDSTOPS) - , X2_ENDSTOP = TERN(X_HOME_TO_MAX, X2_MAX, X2_MIN) - #endif #endif - #if HAS_Y_ENDSTOP + #if HAS_X2_STATE + , X2_ENDSTOP = TERN(X_HOME_TO_MAX, X2_MAX, X2_MIN) + #endif + #if HAS_Y_STATE , Y_ENDSTOP = TERN(Y_HOME_TO_MAX, Y_MAX, Y_MIN) - #if ENABLED(Y_DUAL_ENDSTOPS) - , Y2_ENDSTOP = TERN(Y_HOME_TO_MAX, Y2_MAX, Y2_MIN) - #endif #endif + #if HAS_Y2_STATE + , Y2_ENDSTOP = TERN(Y_HOME_TO_MAX, Y2_MAX, Y2_MIN) + #endif + #if HOMING_Z_WITH_PROBE - , Z_ENDSTOP = Z_MIN_PROBE - #elif HAS_Z_ENDSTOP + , Z_ENDSTOP = Z_MIN_PROBE // "Z" endstop alias when homing with the probe + #elif HAS_Z_STATE , Z_ENDSTOP = TERN(Z_HOME_TO_MAX, Z_MAX, Z_MIN) - #if ENABLED(Z_MULTI_ENDSTOPS) - , Z2_ENDSTOP = TERN(Z_HOME_TO_MAX, Z2_MAX, Z2_MIN) - #if NUM_Z_STEPPERS >= 3 - , Z3_ENDSTOP = TERN(Z_HOME_TO_MAX, Z3_MAX, Z3_MIN) - #if NUM_Z_STEPPERS >= 4 - , Z4_ENDSTOP = TERN(Z_HOME_TO_MAX, Z4_MAX, Z4_MIN) - #endif - #endif - #endif #endif - #if HAS_I_ENDSTOP + #if HAS_Z2_STATE + , Z2_ENDSTOP = TERN(Z_HOME_TO_MAX, Z2_MAX, Z2_MIN) + #endif + #if HAS_Z3_STATE + , Z3_ENDSTOP = TERN(Z_HOME_TO_MAX, Z3_MAX, Z3_MIN) + #endif + #if HAS_Z4_STATE + , Z4_ENDSTOP = TERN(Z_HOME_TO_MAX, Z4_MAX, Z4_MIN) + #endif + #if HAS_I_STATE , I_ENDSTOP = TERN(I_HOME_TO_MAX, I_MAX, I_MIN) #endif - #if HAS_J_ENDSTOP + #if HAS_J_STATE , J_ENDSTOP = TERN(J_HOME_TO_MAX, J_MAX, J_MIN) #endif - #if HAS_K_ENDSTOP + #if HAS_K_STATE , K_ENDSTOP = TERN(K_HOME_TO_MAX, K_MAX, K_MIN) #endif - #if HAS_U_ENDSTOP + #if HAS_U_STATE , U_ENDSTOP = TERN(U_HOME_TO_MAX, U_MAX, U_MIN) #endif - #if HAS_V_ENDSTOP + #if HAS_V_STATE , V_ENDSTOP = TERN(V_HOME_TO_MAX, V_MAX, V_MIN) #endif - #if HAS_W_ENDSTOP + #if HAS_W_STATE , W_ENDSTOP = TERN(W_HOME_TO_MAX, W_MAX, W_MIN) #endif }; #undef _ES_ITEM #undef ES_ITEM +#undef _ESN_ITEM +#undef ES_MINMAX class Endstops { public: @@ -288,7 +274,7 @@ class Endstops { public: // Basic functions for Sensorless Homing #if USE_SENSORLESS - static void set_homing_current(const bool onoff); + static void set_z_sensorless_current(const bool onoff); #endif }; diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index cd768d9e40..80729df759 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -1718,38 +1718,36 @@ void prepare_line_to_destination() { #endif } - #if ENABLED(SPI_ENDSTOPS) - switch (axis) { - #if HAS_X_AXIS - case X_AXIS: if (ENABLED(X_SPI_SENSORLESS)) endstops.tmc_spi_homing.x = true; break; - #endif - #if HAS_Y_AXIS - case Y_AXIS: if (ENABLED(Y_SPI_SENSORLESS)) endstops.tmc_spi_homing.y = true; break; - #endif - #if HAS_Z_AXIS - case Z_AXIS: if (ENABLED(Z_SPI_SENSORLESS)) endstops.tmc_spi_homing.z = true; break; - #endif - #if HAS_I_AXIS - case I_AXIS: if (ENABLED(I_SPI_SENSORLESS)) endstops.tmc_spi_homing.i = true; break; - #endif - #if HAS_J_AXIS - case J_AXIS: if (ENABLED(J_SPI_SENSORLESS)) endstops.tmc_spi_homing.j = true; break; - #endif - #if HAS_K_AXIS - case K_AXIS: if (ENABLED(K_SPI_SENSORLESS)) endstops.tmc_spi_homing.k = true; break; - #endif - #if HAS_U_AXIS - case U_AXIS: if (ENABLED(U_SPI_SENSORLESS)) endstops.tmc_spi_homing.u = true; break; - #endif - #if HAS_V_AXIS - case V_AXIS: if (ENABLED(V_SPI_SENSORLESS)) endstops.tmc_spi_homing.v = true; break; - #endif - #if HAS_W_AXIS - case W_AXIS: if (ENABLED(W_SPI_SENSORLESS)) endstops.tmc_spi_homing.w = true; break; - #endif - default: break; - } - #endif + switch (axis) { + #if X_SPI_SENSORLESS + case X_AXIS: endstops.tmc_spi_homing.x = true; break; + #endif + #if Y_SPI_SENSORLESS + case Y_AXIS: endstops.tmc_spi_homing.y = true; break; + #endif + #if Z_SPI_SENSORLESS + case Z_AXIS: endstops.tmc_spi_homing.z = true; break; + #endif + #if I_SPI_SENSORLESS + case I_AXIS: endstops.tmc_spi_homing.i = true; break; + #endif + #if J_SPI_SENSORLESS + case J_AXIS: endstops.tmc_spi_homing.j = true; break; + #endif + #if K_SPI_SENSORLESS + case K_AXIS: endstops.tmc_spi_homing.k = true; break; + #endif + #if U_SPI_SENSORLESS + case U_AXIS: endstops.tmc_spi_homing.u = true; break; + #endif + #if V_SPI_SENSORLESS + case V_AXIS: endstops.tmc_spi_homing.v = true; break; + #endif + #if W_SPI_SENSORLESS + case W_AXIS: endstops.tmc_spi_homing.w = true; break; + #endif + default: break; + } TERN_(IMPROVE_HOMING_RELIABILITY, sg_guard_period = millis() + default_sg_guard_duration); @@ -1814,38 +1812,36 @@ void prepare_line_to_destination() { #endif } - #if ENABLED(SPI_ENDSTOPS) - switch (axis) { - #if HAS_X_AXIS - case X_AXIS: if (ENABLED(X_SPI_SENSORLESS)) endstops.tmc_spi_homing.x = false; break; - #endif - #if HAS_Y_AXIS - case Y_AXIS: if (ENABLED(Y_SPI_SENSORLESS)) endstops.tmc_spi_homing.y = false; break; - #endif - #if HAS_Z_AXIS - case Z_AXIS: if (ENABLED(Z_SPI_SENSORLESS)) endstops.tmc_spi_homing.z = false; break; - #endif - #if HAS_I_AXIS - case I_AXIS: if (ENABLED(I_SPI_SENSORLESS)) endstops.tmc_spi_homing.i = false; break; - #endif - #if HAS_J_AXIS - case J_AXIS: if (ENABLED(J_SPI_SENSORLESS)) endstops.tmc_spi_homing.j = false; break; - #endif - #if HAS_K_AXIS - case K_AXIS: if (ENABLED(K_SPI_SENSORLESS)) endstops.tmc_spi_homing.k = false; break; - #endif - #if HAS_U_AXIS - case U_AXIS: if (ENABLED(U_SPI_SENSORLESS)) endstops.tmc_spi_homing.u = false; break; - #endif - #if HAS_V_AXIS - case V_AXIS: if (ENABLED(V_SPI_SENSORLESS)) endstops.tmc_spi_homing.v = false; break; - #endif - #if HAS_W_AXIS - case W_AXIS: if (ENABLED(W_SPI_SENSORLESS)) endstops.tmc_spi_homing.w = false; break; - #endif - default: break; - } - #endif + switch (axis) { + #if X_SPI_SENSORLESS + case X_AXIS: endstops.tmc_spi_homing.x = false; break; + #endif + #if Y_SPI_SENSORLESS + case Y_AXIS: endstops.tmc_spi_homing.y = false; break; + #endif + #if Z_SPI_SENSORLESS + case Z_AXIS: endstops.tmc_spi_homing.z = false; break; + #endif + #if I_SPI_SENSORLESS + case I_AXIS: endstops.tmc_spi_homing.i = false; break; + #endif + #if J_SPI_SENSORLESS + case J_AXIS: endstops.tmc_spi_homing.j = false; break; + #endif + #if K_SPI_SENSORLESS + case K_AXIS: endstops.tmc_spi_homing.k = false; break; + #endif + #if U_SPI_SENSORLESS + case U_AXIS: endstops.tmc_spi_homing.u = false; break; + #endif + #if V_SPI_SENSORLESS + case V_AXIS: endstops.tmc_spi_homing.v = false; break; + #endif + #if W_SPI_SENSORLESS + case W_AXIS: endstops.tmc_spi_homing.w = false; break; + #endif + default: break; + } } #endif // SENSORLESS_HOMING @@ -2118,7 +2114,7 @@ void prepare_line_to_destination() { // Only Z homing (with probe) is permitted if (axis != Z_AXIS) { BUZZ(100, 880); return; } #else - #define _CAN_HOME(A) (axis == _AXIS(A) && (ANY(A##_SPI_SENSORLESS, HAS_##A##_ENDSTOP) || TERN0(HOMING_Z_WITH_PROBE, _AXIS(A) == Z_AXIS))) + #define _CAN_HOME(A) (axis == _AXIS(A) && (ANY(A##_SPI_SENSORLESS, HAS_##A##_STATE) || TERN0(HOMING_Z_WITH_PROBE, _AXIS(A) == Z_AXIS))) #define _ANDCANT(N) && !_CAN_HOME(N) if (true MAIN_AXIS_MAP(_ANDCANT)) return; #endif diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 8c13da36f9..68fcfd00e0 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -610,8 +610,19 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { if (test_sensitivity.x) stealth_states.x = tmc_enable_stallguard(stepperX); // Delta watches all DIAG pins for a stall if (test_sensitivity.y) stealth_states.y = tmc_enable_stallguard(stepperY); #endif - if (test_sensitivity.z) stealth_states.z = tmc_enable_stallguard(stepperZ); // All machines will check Z-DIAG for stall - endstops.set_homing_current(true); // The "homing" current also applies to probing + if (test_sensitivity.z) { + stealth_states.z = tmc_enable_stallguard(stepperZ); // All machines will check Z-DIAG for stall + #if ENABLED(Z_MULTI_ENDSTOPS) + stealth_states.z2 = tmc_enable_stallguard(stepperZ2); + #if NUM_Z_STEPPERS >= 3 + stealth_states.z3 = tmc_enable_stallguard(stepperZ3); + #if NUM_Z_STEPPERS >= 4 + stealth_states.z4 = tmc_enable_stallguard(stepperZ4); + #endif + #endif + #endif + } + endstops.set_z_sensorless_current(true); // The "homing" current also applies to probing endstops.enable(true); #endif // SENSORLESS_PROBING @@ -643,9 +654,20 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) { if (test_sensitivity.x) tmc_disable_stallguard(stepperX, stealth_states.x); if (test_sensitivity.y) tmc_disable_stallguard(stepperY, stealth_states.y); #endif - if (test_sensitivity.z) tmc_disable_stallguard(stepperZ, stealth_states.z); - endstops.set_homing_current(false); - #endif + if (test_sensitivity.z) { + tmc_disable_stallguard(stepperZ, stealth_states.z); + #if ENABLED(Z_MULTI_ENDSTOPS) + tmc_disable_stallguard(stepperZ2, stealth_states.z2); + #if NUM_Z_STEPPERS >= 3 + tmc_disable_stallguard(stepperZ3, stealth_states.z3); + #if NUM_Z_STEPPERS >= 4 + tmc_disable_stallguard(stepperZ4, stealth_states.z4); + #endif + #endif + #endif + } + endstops.set_z_sensorless_current(false); + #endif // SENSORLESS_PROBING #if ENABLED(BLTOUCH) if (probe_triggered && !bltouch.high_speed_mode && bltouch.stow()) diff --git a/buildroot/tests/BIGTREE_BTT002 b/buildroot/tests/BIGTREE_BTT002 index 7288c5ef52..5398d30fea 100755 --- a/buildroot/tests/BIGTREE_BTT002 +++ b/buildroot/tests/BIGTREE_BTT002 @@ -12,8 +12,8 @@ set -e restore_configs opt_set MOTHERBOARD BOARD_BTT_BTT002_V1_0 \ SERIAL_PORT 1 \ - X_DRIVER_TYPE TMC2209 \ - Y_DRIVER_TYPE TMC2130 + X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2130 +opt_enable SENSORLESS_HOMING X_STALL_SENSITIVITY Y_STALL_SENSITIVITY SPI_ENDSTOPS exec_test $1 $2 "BigTreeTech BTT002 Default Configuration plus TMC steppers" "$3" # diff --git a/buildroot/tests/FYSETC_F6 b/buildroot/tests/FYSETC_F6 index 314e207c58..713408b550 100755 --- a/buildroot/tests/FYSETC_F6 +++ b/buildroot/tests/FYSETC_F6 @@ -50,9 +50,16 @@ opt_set MOTHERBOARD BOARD_FYSETC_F6_13 \ opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER \ MARLIN_BRICKOUT MARLIN_INVADERS MARLIN_SNAKE \ MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD \ - SENSORLESS_HOMING TMC_DEBUG M114_DETAIL + SENSORLESS_HOMING X_STALL_SENSITIVITY Y_STALL_SENSITIVITY TMC_DEBUG M114_DETAIL exec_test $1 $2 "Mixed TMC | Sensorless | RRDFGSC | Games" "$3" +# +# Delta Config (FLSUN AC because it's complex) +# +use_example_configs delta/FLSUN/auto_calibrate +opt_set MOTHERBOARD BOARD_FYSETC_F6_13 +exec_test $1 $2 "RAMPS 1.3 | DELTA | FLSUN AC Config" "$3" + # # SCARA with Mixed TMC # @@ -64,7 +71,7 @@ opt_set MOTHERBOARD BOARD_FYSETC_F6_13 \ X_HARDWARE_SERIAL Serial2 opt_enable FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \ FYSETC_242_OLED_12864 EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL Z_SAFE_HOMING \ - STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD SENSORLESS_HOMING EDGE_STEPPING + STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD SENSORLESS_HOMING X_STALL_SENSITIVITY Y_STALL_SENSITIVITY EDGE_STEPPING exec_test $1 $2 "SCARA | Mixed TMC | EEPROM" "$3" # clean up diff --git a/buildroot/tests/LPC1769 b/buildroot/tests/LPC1769 index a7348bffe9..9987d155ad 100755 --- a/buildroot/tests/LPC1769 +++ b/buildroot/tests/LPC1769 @@ -53,14 +53,15 @@ opt_set MOTHERBOARD BOARD_COHESION3D_REMIX \ HOMING_FEEDRATE_MM_M '{ (50*60), (50*60), (4*60), (50*60) }' \ HOMING_BUMP_MM '{ 0, 0, 0, 0 }' HOMING_BUMP_DIVISOR '{ 1, 1, 1, 1 }' \ NOZZLE_TO_PROBE_OFFSET '{ 0, 0, 0, 0 }' \ - I_MIN_PIN P1_25 + I_MIN_PIN P1_25 \ + X_CURRENT_HOME 750 Y_CURRENT_HOME 750 Z_CURRENT_HOME 750 opt_enable AUTO_BED_LEVELING_BILINEAR EEPROM_SETTINGS EEPROM_CHITCHAT MECHANICAL_GANTRY_CALIBRATION \ TMC_USE_SW_SPI MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z HYBRID_THRESHOLD \ - SENSORLESS_PROBING Z_SAFE_HOMING X_STALL_SENSITIVITY Y_STALL_SENSITIVITY Z_STALL_SENSITIVITY TMC_DEBUG \ + SENSORLESS_PROBING SENSORLESS_HOMING Z_SAFE_HOMING X_STALL_SENSITIVITY Y_STALL_SENSITIVITY Z_STALL_SENSITIVITY TMC_DEBUG \ AXIS4_ROTATES I_MIN_POS I_MAX_POS I_HOME_DIR I_ENABLE_ON INVERT_I_DIR \ EXPERIMENTAL_I2CBUS opt_disable PSU_CONTROL Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN -exec_test $1 $2 "Cohesion3D Remix DELTA + ABL Bilinear + EEPROM + SENSORLESS_PROBING + I Axis" "$3" +exec_test $1 $2 "Cohesion3D Remix DELTA | ABL Bilinear | EEPROM | Sensorless Homing/Probing | I Axis" "$3" # clean up restore_configs diff --git a/buildroot/tests/SAMD21_minitronics20 b/buildroot/tests/SAMD21_minitronics20 index f4a75afafe..ae9fa55ea4 100755 --- a/buildroot/tests/SAMD21_minitronics20 +++ b/buildroot/tests/SAMD21_minitronics20 @@ -25,8 +25,7 @@ opt_enable ENDSTOP_INTERRUPTS_FEATURE BLTOUCH Z_MIN_PROBE_REPEATABILITY_TEST \ LONG_FILENAME_HOST_SUPPORT CUSTOM_FIRMWARE_UPLOAD M20_TIMESTAMP_SUPPORT \ SCROLL_LONG_FILENAMES BABYSTEPPING DOUBLECLICK_FOR_Z_BABYSTEPPING \ MOVE_Z_WHEN_IDLE BABYSTEP_ZPROBE_OFFSET BABYSTEP_GFX_OVERLAY \ - LIN_ADVANCE ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE MONITOR_DRIVER_STATUS SENSORLESS_HOMING \ - EDGE_STEPPING + LIN_ADVANCE ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE MONITOR_DRIVER_STATUS exec_test $1 $2 "Minitronics 2.0 with assorted features" "$3" # clean up diff --git a/buildroot/tests/SAMD51_grandcentral_m4 b/buildroot/tests/SAMD51_grandcentral_m4 index 72996e7b7f..312bd627ba 100755 --- a/buildroot/tests/SAMD51_grandcentral_m4 +++ b/buildroot/tests/SAMD51_grandcentral_m4 @@ -25,7 +25,8 @@ opt_enable ENDSTOP_INTERRUPTS_FEATURE S_CURVE_ACCELERATION BLTOUCH Z_MIN_PROBE_R LONG_FILENAME_HOST_SUPPORT CUSTOM_FIRMWARE_UPLOAD M20_TIMESTAMP_SUPPORT \ SCROLL_LONG_FILENAMES BABYSTEPPING DOUBLECLICK_FOR_Z_BABYSTEPPING \ MOVE_Z_WHEN_IDLE BABYSTEP_ZPROBE_OFFSET BABYSTEP_GFX_OVERLAY \ - LIN_ADVANCE ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE MONITOR_DRIVER_STATUS SENSORLESS_HOMING \ + LIN_ADVANCE ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE MONITOR_DRIVER_STATUS \ + SENSORLESS_HOMING X_STALL_SENSITIVITY Y_STALL_SENSITIVITY Z_STALL_SENSITIVITY Z2_STALL_SENSITIVITY \ EDGE_STEPPING TMC_DEBUG exec_test $1 $2 "Grand Central M4 with assorted features" "$3" diff --git a/buildroot/tests/mega1280 b/buildroot/tests/mega1280 index 53016e8406..7e99ee4a60 100755 --- a/buildroot/tests/mega1280 +++ b/buildroot/tests/mega1280 @@ -41,6 +41,7 @@ opt_set MOTHERBOARD BOARD_ZRIB_V52 \ LCD_LANGUAGE pt REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 \ EXTRUDERS 2 TEMP_SENSOR_1 1 X2_DRIVER_TYPE A4988 opt_enable DUAL_X_CARRIAGE REPRAPWORLD_KEYPAD +opt_add DEBUG_DXC_MODE exec_test $1 $2 "ZRIB_V52 | DUAL_X_CARRIAGE" "$3" # diff --git a/buildroot/tests/teensy35 b/buildroot/tests/teensy35 index 959a207aee..4a752c7f5a 100755 --- a/buildroot/tests/teensy35 +++ b/buildroot/tests/teensy35 @@ -85,9 +85,10 @@ exec_test $1 $2 "Mixing Extruder" "$3" restore_configs opt_set MOTHERBOARD BOARD_TEENSY35_36 \ X_DRIVER_TYPE TMC5160 Y_DRIVER_TYPE TMC5160 \ + X_CURRENT_HOME 750 Y_CURRENT_HOME 750 \ X_MIN_ENDSTOP_HIT_STATE LOW Y_MIN_ENDSTOP_HIT_STATE LOW \ X_CS_PIN 46 Y_CS_PIN 47 -opt_enable COREXY MONITOR_DRIVER_STATUS SENSORLESS_HOMING +opt_enable COREXY MONITOR_DRIVER_STATUS SENSORLESS_HOMING X_STALL_SENSITIVITY Y_STALL_SENSITIVITY exec_test $1 $2 "Teensy 3.5/3.6 COREXY" "$3" # From a629471ed74b78f909224075832db64b5b3bc6ac Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 2 Aug 2023 06:06:02 +0000 Subject: [PATCH 653/659] [cron] Bump distribution date (2023-08-02) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index c927330c90..481dc142ff 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-07-30" +//#define STRING_DISTRIBUTION_DATE "2023-08-02" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 5f52cd99ea..824349a850 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-07-30" + #define STRING_DISTRIBUTION_DATE "2023-08-02" #endif /** From aaa590855a26032d049ae797e092a4571d04e2d7 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Thu, 3 Aug 2023 15:55:29 +1200 Subject: [PATCH 654/659] =?UTF-8?q?=F0=9F=93=9D=20E3S1PRO=20is=20T5L=20(#2?= =?UTF-8?q?6143)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index dbba2e60ed..4dbc2a8c11 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -3123,7 +3123,7 @@ * - Download https://github.com/InsanityAutomation/Marlin/raw/CrealityDwin_2.0/TM3D_Combined480272_Landscape_V7.7z * - Copy the downloaded DWIN_SET folder to the SD card. * - * E3S1PRO (T5UID1) + * E3S1PRO (T5L) * - Download https://github.com/CrealityOfficial/Ender-3S1/archive/3S1_Plus_Screen.zip * - Copy the downloaded DWIN_SET folder to the SD card. * From 8ae19e45d6e069afa169548fa781fce928ea110d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 3 Aug 2023 01:28:06 -0500 Subject: [PATCH 655/659] =?UTF-8?q?=F0=9F=94=A8=20Prevent=20variant=20over?= =?UTF-8?q?write?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Martin Turski --- .../scripts/generic_create_variant.py | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/buildroot/share/PlatformIO/scripts/generic_create_variant.py b/buildroot/share/PlatformIO/scripts/generic_create_variant.py index 49d4c98d3e..2dd65399bb 100644 --- a/buildroot/share/PlatformIO/scripts/generic_create_variant.py +++ b/buildroot/share/PlatformIO/scripts/generic_create_variant.py @@ -5,7 +5,8 @@ # the appropriate framework variants folder, so that its contents # will be picked up by PlatformIO just like any other variant. # -import pioutil +import pioutil, re +marlin_variant_pattern = re.compile("marlin_.*") if pioutil.is_pio_build(): import shutil,marlin from pathlib import Path @@ -32,7 +33,7 @@ if pioutil.is_pio_build(): else: platform_name = PackageSpec(platform_packages[0]).name - if platform_name in [ "usb-host-msc", "usb-host-msc-cdc-msc", "usb-host-msc-cdc-msc-2", "usb-host-msc-cdc-msc-3", "tool-stm32duino", "biqu-bx-workaround", "main" ]: + if platform_name in [ "Arduino_Core_STM32", "usb-host-msc", "usb-host-msc-cdc-msc", "usb-host-msc-cdc-msc-2", "usb-host-msc-cdc-msc-3", "tool-stm32duino", "biqu-bx-workaround", "main" ]: platform_name = "framework-arduinoststm32" FRAMEWORK_DIR = Path(platform.get_package_dir(platform_name)) @@ -44,15 +45,20 @@ if pioutil.is_pio_build(): variant = board.get("build.variant") #series = mcu_type[:7].upper() + "xx" - # Prepare a new empty folder at the destination - variant_dir = FRAMEWORK_DIR / "variants" / variant - if variant_dir.is_dir(): - shutil.rmtree(variant_dir) - if not variant_dir.is_dir(): - variant_dir.mkdir() + # Only prepare a new variant if the PlatformIO configuration provides it (board_build.variant). + # This check is important to avoid deleting official board config variants. + if marlin_variant_pattern.match(str(variant).lower()): + # Prepare a new empty folder at the destination + variant_dir = FRAMEWORK_DIR / "variants" / variant + if variant_dir.is_dir(): + shutil.rmtree(variant_dir) + if not variant_dir.is_dir(): + variant_dir.mkdir() - # Source dir is a local variant sub-folder - source_dir = Path("buildroot/share/PlatformIO/variants", variant) - assert source_dir.is_dir() + # Source dir is a local variant sub-folder + source_dir = Path("buildroot/share/PlatformIO/variants", variant) + assert source_dir.is_dir() - marlin.copytree(source_dir, variant_dir) + print("Copying variant " + str(variant) + " to framework directory...") + + marlin.copytree(source_dir, variant_dir) From fe4819a9c16325fcac6aa58071a4f42b6e2d2c56 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 3 Aug 2023 08:45:07 +0000 Subject: [PATCH 656/659] [cron] Bump distribution date (2023-08-03) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 481dc142ff..8a860b2691 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-08-02" +//#define STRING_DISTRIBUTION_DATE "2023-08-03" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 824349a850..bd004bd771 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-08-02" + #define STRING_DISTRIBUTION_DATE "2023-08-03" #endif /** From 820d2b58b3cfe16affd421f4925ae924cb60826f Mon Sep 17 00:00:00 2001 From: Martin Turski Date: Fri, 4 Aug 2023 04:40:38 +0200 Subject: [PATCH 657/659] =?UTF-8?q?=F0=9F=9A=B8=20Option=20to=20report=20t?= =?UTF-8?q?emperature=20on=20error=20(#25341)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/core/language.h | 2 + Marlin/src/module/temperature.cpp | 137 +++++++++++++++++++----------- Marlin/src/module/temperature.h | 12 ++- 3 files changed, 100 insertions(+), 51 deletions(-) diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h index b76a3d301c..649f05cf69 100644 --- a/Marlin/src/core/language.h +++ b/Marlin/src/core/language.h @@ -249,6 +249,8 @@ #define STR_LASER_TEMP "laser temperature" #define STR_STOPPED_HEATER ", system stopped! Heater_ID: " +#define STR_DETECTED_TEMP_B " (temp: " +#define STR_DETECTED_TEMP_E ")" #define STR_REDUNDANCY "Heater switched off. Temperature difference between temp sensors is too high !" #define STR_T_HEATING_FAILED "Heating failed" #define STR_T_THERMAL_RUNAWAY "Thermal Runaway" diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index d7c764540b..1f9928f88e 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -839,10 +839,10 @@ volatile bool Temperature::raw_temps_ready = false; if (current_temp > watch_temp_target) heated = true; // - Flag if target temperature reached } else if (ELAPSED(ms, temp_change_ms)) // Watch timer expired - _temp_error(heater_id, FPSTR(str_t_heating_failed), GET_TEXT_F(MSG_HEATING_FAILED_LCD)); + _TEMP_ERROR(heater_id, FPSTR(str_t_heating_failed), MSG_HEATING_FAILED_LCD, current_temp); } else if (current_temp < target - (MAX_OVERSHOOT_PID_AUTOTUNE)) // Heated, then temperature fell too far? - _temp_error(heater_id, FPSTR(str_t_thermal_runaway), GET_TEXT_F(MSG_THERMAL_RUNAWAY)); + _TEMP_ERROR(heater_id, FPSTR(str_t_thermal_runaway), MSG_THERMAL_RUNAWAY, current_temp); } #endif } // every 2 seconds @@ -1467,8 +1467,10 @@ inline void loud_kill(FSTR_P const lcd_msg, const heater_id_t heater_id) { kill(lcd_msg, HEATER_FSTR(heater_id)); } -void Temperature::_temp_error(const heater_id_t heater_id, FSTR_P const serial_msg, FSTR_P const lcd_msg) { - +void Temperature::_temp_error( + const heater_id_t heater_id, FSTR_P const serial_msg, FSTR_P const lcd_msg + OPTARG(ERR_INCLUDE_TEMP, const celsius_float_t deg) +) { static uint8_t killed = 0; if (IsRunning() && TERN1(BOGUS_TEMPERATURE_GRACE_PERIOD, killed == 2)) { @@ -1493,10 +1495,13 @@ void Temperature::_temp_error(const heater_id_t heater_id, FSTR_P const serial_m OPTCODE(HAS_TEMP_CHAMBER, case H_CHAMBER: SERIAL_ECHOPGM(STR_HEATER_CHAMBER); break) OPTCODE(HAS_TEMP_BED, case H_BED: SERIAL_ECHOPGM(STR_HEATER_BED); break) default: - if (real_heater_id >= 0) - SERIAL_ECHOLNPGM("E", real_heater_id); + if (real_heater_id >= 0) SERIAL_ECHO('E', real_heater_id); } - SERIAL_EOL(); + #if ENABLED(ERR_INCLUDE_TEMP) + SERIAL_ECHOLNPGM(STR_DETECTED_TEMP_B, deg, STR_DETECTED_TEMP_E); + #else + SERIAL_EOL(); + #endif } disable_all_heaters(); // always disable (even for bogus temp) @@ -1525,18 +1530,18 @@ void Temperature::_temp_error(const heater_id_t heater_id, FSTR_P const serial_m #endif } -void Temperature::maxtemp_error(const heater_id_t heater_id) { +void Temperature::maxtemp_error(const heater_id_t heater_id OPTARG(ERR_INCLUDE_TEMP, const celsius_float_t deg)) { #if HAS_DWIN_E3V2_BASIC && (HAS_HOTEND || HAS_HEATED_BED) dwinPopupTemperature(1); #endif - _temp_error(heater_id, F(STR_T_MAXTEMP), GET_TEXT_F(MSG_ERR_MAXTEMP)); + _TEMP_ERROR(heater_id, F(STR_T_MAXTEMP), MSG_ERR_MAXTEMP, deg); } -void Temperature::mintemp_error(const heater_id_t heater_id) { +void Temperature::mintemp_error(const heater_id_t heater_id OPTARG(ERR_INCLUDE_TEMP, const celsius_float_t deg)) { #if HAS_DWIN_E3V2_BASIC && (HAS_HOTEND || HAS_HEATED_BED) dwinPopupTemperature(0); #endif - _temp_error(heater_id, F(STR_T_MINTEMP), GET_TEXT_F(MSG_ERR_MINTEMP)); + _TEMP_ERROR(heater_id, F(STR_T_MINTEMP), MSG_ERR_MINTEMP, deg); } #if HAS_PID_DEBUG @@ -1736,7 +1741,10 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { void Temperature::manage_hotends(const millis_t &ms) { HOTEND_LOOP() { #if ENABLED(THERMAL_PROTECTION_HOTENDS) - if (degHotend(e) > temp_range[e].maxtemp) maxtemp_error((heater_id_t)e); + { + const auto deg = degHotend(e); + if (deg > temp_range[e].maxtemp) MAXTEMP_ERROR(e, deg); + } #endif TERN_(HEATER_IDLE_HANDLER, heater_idle[e].update(ms)); @@ -1746,16 +1754,18 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { tr_state_machine[e].run(temp_hotend[e].celsius, temp_hotend[e].target, (heater_id_t)e, THERMAL_PROTECTION_PERIOD, THERMAL_PROTECTION_HYSTERESIS); #endif - temp_hotend[e].soft_pwm_amount = (temp_hotend[e].celsius > temp_range[e].mintemp || is_hotend_preheating(e)) && temp_hotend[e].celsius < temp_range[e].maxtemp ? (int)get_pid_output_hotend(e) >> 1 : 0; + temp_hotend[e].soft_pwm_amount = (temp_hotend[e].celsius > temp_range[e].mintemp || is_hotend_preheating(e)) + && temp_hotend[e].celsius < temp_range[e].maxtemp ? (int)get_pid_output_hotend(e) >> 1 : 0; #if WATCH_HOTENDS // Make sure temperature is increasing if (watch_hotend[e].elapsed(ms)) { // Enabled and time to check? - if (watch_hotend[e].check(degHotend(e))) // Increased enough? + auto temp = degHotend(e); + if (watch_hotend[e].check(temp)) // Increased enough? start_watching_hotend(e); // If temp reached, turn off elapsed check else { TERN_(HAS_DWIN_E3V2_BASIC, dwinPopupTemperature(0)); - _temp_error((heater_id_t)e, FPSTR(str_t_heating_failed), GET_TEXT_F(MSG_HEATING_FAILED_LCD)); + _TEMP_ERROR(e, FPSTR(str_t_heating_failed), MSG_HEATING_FAILED_LCD, temp); } } #endif @@ -1770,19 +1780,25 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { void Temperature::manage_heated_bed(const millis_t &ms) { #if ENABLED(THERMAL_PROTECTION_BED) - if (degBed() > BED_MAXTEMP) maxtemp_error(H_BED); + { + const auto deg = degBed(); + if (deg > BED_MAXTEMP) MAXTEMP_ERROR(H_BED, deg); + } #endif #if WATCH_BED + { // Make sure temperature is increasing if (watch_bed.elapsed(ms)) { // Time to check the bed? - if (watch_bed.check(degBed())) // Increased enough? + const auto deg = degBed(); + if (watch_bed.check(deg)) // Increased enough? start_watching_bed(); // If temp reached, turn off elapsed check else { TERN_(HAS_DWIN_E3V2_BASIC, dwinPopupTemperature(0)); - _temp_error(H_BED, FPSTR(str_t_heating_failed), GET_TEXT_F(MSG_HEATING_FAILED_LCD)); + _TEMP_ERROR(H_BED, FPSTR(str_t_heating_failed), MSG_HEATING_FAILED_LCD, deg); } } + } #endif // WATCH_BED #if ALL(PROBING_HEATERS_OFF, BED_LIMIT_SWITCHING) @@ -1860,17 +1876,23 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { #endif #if ENABLED(THERMAL_PROTECTION_CHAMBER) - if (degChamber() > (CHAMBER_MAXTEMP)) maxtemp_error(H_CHAMBER); + { + const auto deg = degChamber(); + if (deg > CHAMBER_MAXTEMP) MAXTEMP_ERROR(H_CHAMBER, deg); + } #endif #if WATCH_CHAMBER + { // Make sure temperature is increasing if (watch_chamber.elapsed(ms)) { // Time to check the chamber? - if (watch_chamber.check(degChamber())) // Increased enough? Error below. + const auto deg = degChamber(); + if (watch_chamber.check(deg)) // Increased enough? Error below. start_watching_chamber(); // If temp reached, turn off elapsed check. else - _temp_error(H_CHAMBER, FPSTR(str_t_heating_failed), GET_TEXT_F(MSG_HEATING_FAILED_LCD)); + _TEMP_ERROR(H_CHAMBER, FPSTR(str_t_heating_failed), MSG_HEATING_FAILED_LCD, deg); } + } #endif #if ANY(CHAMBER_FAN, CHAMBER_VENT) || DISABLED(PIDTEMPCHAMBER) @@ -1986,16 +2008,20 @@ void Temperature::mintemp_error(const heater_id_t heater_id) { #endif #if ENABLED(THERMAL_PROTECTION_COOLER) - if (degCooler() > COOLER_MAXTEMP) maxtemp_error(H_COOLER); + { + const auto deg = degCooler(); + if (deg > COOLER_MAXTEMP) MAXTEMP_ERROR(H_COOLER, deg); + } #endif #if WATCH_COOLER // Make sure temperature is decreasing if (watch_cooler.elapsed(ms)) { // Time to check the cooler? - if (degCooler() > watch_cooler.target) // Failed to decrease enough? - _temp_error(H_COOLER, GET_TEXT_F(MSG_COOLING_FAILED), GET_TEXT_F(MSG_COOLING_FAILED)); + const auto deg = degCooler(); + if (deg > watch_cooler.target) // Failed to decrease enough? + _TEMP_ERROR(H_COOLER, GET_TEXT_F(MSG_COOLING_FAILED), MSG_COOLING_FAILED, deg); else - start_watching_cooler(); // Start again if the target is still far off + start_watching_cooler(); // Start again if the target is still far off } #endif @@ -2076,20 +2102,32 @@ void Temperature::task() { #if DISABLED(IGNORE_THERMOCOUPLE_ERRORS) #if TEMP_SENSOR_IS_MAX_TC(0) - if (degHotend(0) > _MIN(HEATER_0_MAXTEMP, TEMP_SENSOR_0_MAX_TC_TMAX - 1.0)) maxtemp_error(H_E0); - if (degHotend(0) < _MAX(HEATER_0_MINTEMP, TEMP_SENSOR_0_MAX_TC_TMIN + .01)) mintemp_error(H_E0); + { + const auto deg = degHotend(0); + if (deg > _MIN(HEATER_0_MAXTEMP, TEMP_SENSOR_0_MAX_TC_TMAX - 1.0)) MAXTEMP_ERROR(H_E0, deg); + if (deg < _MAX(HEATER_0_MINTEMP, TEMP_SENSOR_0_MAX_TC_TMIN + .01)) MINTEMP_ERROR(H_E0, deg); + } #endif #if TEMP_SENSOR_IS_MAX_TC(1) - if (degHotend(1) > _MIN(HEATER_1_MAXTEMP, TEMP_SENSOR_1_MAX_TC_TMAX - 1.0)) maxtemp_error(H_E1); - if (degHotend(1) < _MAX(HEATER_1_MINTEMP, TEMP_SENSOR_1_MAX_TC_TMIN + .01)) mintemp_error(H_E1); + { + const auto deg = degHotend(1); + if (deg > _MIN(HEATER_1_MAXTEMP, TEMP_SENSOR_1_MAX_TC_TMAX - 1.0)) MAXTEMP_ERROR(H_E1, deg); + if (deg < _MAX(HEATER_1_MINTEMP, TEMP_SENSOR_1_MAX_TC_TMIN + .01)) MINTEMP_ERROR(H_E1, deg); + } #endif #if TEMP_SENSOR_IS_MAX_TC(2) - if (degHotend(2) > _MIN(HEATER_2_MAXTEMP, TEMP_SENSOR_2_MAX_TC_TMAX - 1.0)) maxtemp_error(H_E2); - if (degHotend(2) < _MAX(HEATER_2_MINTEMP, TEMP_SENSOR_2_MAX_TC_TMIN + .01)) mintemp_error(H_E2); + { + const auto deg = degHotend(2); + if (deg > _MIN(HEATER_2_MAXTEMP, TEMP_SENSOR_2_MAX_TC_TMAX - 1.0)) MAXTEMP_ERROR(H_E2, deg); + if (deg < _MAX(HEATER_2_MINTEMP, TEMP_SENSOR_2_MAX_TC_TMIN + .01)) MINTEMP_ERROR(H_E2, deg); + } #endif #if TEMP_SENSOR_IS_MAX_TC(REDUNDANT) - if (degRedundant() > TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX - 1.0) maxtemp_error(H_REDUNDANT); - if (degRedundant() < TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN + .01) mintemp_error(H_REDUNDANT); + { + const auto deg = degRedundant(); + if (deg > TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX - 1.0) MAXTEMP_ERROR(H_REDUNDANT, deg); + if (deg < TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN + .01) MINTEMP_ERROR(H_REDUNDANT, deg); + } #endif #else #warning "Safety Alert! Disable IGNORE_THERMOCOUPLE_ERRORS for the final build!" @@ -2101,9 +2139,12 @@ void Temperature::task() { TERN_(HAS_HOTEND, manage_hotends(ms)); #if HAS_TEMP_REDUNDANT + { + const auto deg = degRedundant(); // Make sure measured temperatures are close together - if (ABS(degRedundantTarget() - degRedundant()) > TEMP_SENSOR_REDUNDANT_MAX_DIFF) - _temp_error((heater_id_t)HEATER_ID(TEMP_SENSOR_REDUNDANT_TARGET), F(STR_REDUNDANCY), GET_TEXT_F(MSG_ERR_REDUNDANT_TEMP)); + if (ABS(degRedundantTarget() - deg) > TEMP_SENSOR_REDUNDANT_MAX_DIFF) + _TEMP_ERROR(HEATER_ID(TEMP_SENSOR_REDUNDANT_TARGET), F(STR_REDUNDANCY), MSG_ERR_REDUNDANT_TEMP, deg); + } #endif // Manage extruder auto fans and/or read fan tachometers @@ -2616,7 +2657,7 @@ void Temperature::updateTemperaturesFromRawValues() { const raw_adc_t r = temp_hotend[e].getraw(); const bool neg = temp_dir[e] < 0, pos = temp_dir[e] > 0; if ((neg && r < temp_range[e].raw_max) || (pos && r > temp_range[e].raw_max)) - maxtemp_error((heater_id_t)e); + MAXTEMP_ERROR(e, temp_hotend[e].celsius); /** // DEBUG PREHEATING TIME @@ -2628,7 +2669,7 @@ void Temperature::updateTemperaturesFromRawValues() { const bool heater_on = temp_hotend[e].target > 0; if (heater_on && !is_hotend_preheating(e) && ((neg && r > temp_range[e].raw_min) || (pos && r < temp_range[e].raw_min))) { if (TERN1(MULTI_MAX_CONSECUTIVE_LOW_TEMP_ERR, ++consecutive_low_temperature_error[e] >= MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED)) - mintemp_error((heater_id_t)e); + MINTEMP_ERROR(e, temp_hotend[e].celsius); } else { TERN_(MULTI_MAX_CONSECUTIVE_LOW_TEMP_ERR, consecutive_low_temperature_error[e] = 0); @@ -2639,27 +2680,27 @@ void Temperature::updateTemperaturesFromRawValues() { #define TP_CMP(S,A,B) (TEMPDIR(S) < 0 ? ((A)<(B)) : ((A)>(B))) #if ENABLED(THERMAL_PROTECTION_BED) - if (TP_CMP(BED, temp_bed.getraw(), maxtemp_raw_BED)) maxtemp_error(H_BED); - if (temp_bed.target > 0 && !is_bed_preheating() && TP_CMP(BED, mintemp_raw_BED, temp_bed.getraw())) mintemp_error(H_BED); + if (TP_CMP(BED, temp_bed.getraw(), maxtemp_raw_BED)) MAXTEMP_ERROR(H_BED, temp_bed.celsius); + if (temp_bed.target > 0 && !is_bed_preheating() && TP_CMP(BED, mintemp_raw_BED, temp_bed.getraw())) MINTEMP_ERROR(H_BED, temp_bed.celsius); #endif #if ALL(HAS_HEATED_CHAMBER, THERMAL_PROTECTION_CHAMBER) - if (TP_CMP(CHAMBER, temp_chamber.getraw(), maxtemp_raw_CHAMBER)) maxtemp_error(H_CHAMBER); - if (temp_chamber.target > 0 && TP_CMP(CHAMBER, mintemp_raw_CHAMBER, temp_chamber.getraw())) mintemp_error(H_CHAMBER); + if (TP_CMP(CHAMBER, temp_chamber.getraw(), maxtemp_raw_CHAMBER)) MAXTEMP_ERROR(H_CHAMBER, temp_chamber.celsius); + if (temp_chamber.target > 0 && TP_CMP(CHAMBER, mintemp_raw_CHAMBER, temp_chamber.getraw())) MINTEMP_ERROR(H_CHAMBER, temp_chamber.celsius); #endif #if ALL(HAS_COOLER, THERMAL_PROTECTION_COOLER) - if (cutter.unitPower > 0 && TP_CMP(COOLER, temp_cooler.getraw(), maxtemp_raw_COOLER)) maxtemp_error(H_COOLER); - if (TP_CMP(COOLER, mintemp_raw_COOLER, temp_cooler.getraw())) mintemp_error(H_COOLER); + if (cutter.unitPower > 0 && TP_CMP(COOLER, temp_cooler.getraw(), maxtemp_raw_COOLER)) MAXTEMP_ERROR(H_COOLER, temp_cooler.celsius); + if (TP_CMP(COOLER, mintemp_raw_COOLER, temp_cooler.getraw())) MINTEMP_ERROR(H_COOLER, temp_cooler.celsius); #endif #if ALL(HAS_TEMP_BOARD, THERMAL_PROTECTION_BOARD) - if (TP_CMP(BOARD, temp_board.getraw(), maxtemp_raw_BOARD)) maxtemp_error(H_BOARD); - if (TP_CMP(BOARD, mintemp_raw_BOARD, temp_board.getraw())) mintemp_error(H_BOARD); + if (TP_CMP(BOARD, temp_board.getraw(), maxtemp_raw_BOARD)) MAXTEMP_ERROR(H_BOARD, temp_board.celsius); + if (TP_CMP(BOARD, mintemp_raw_BOARD, temp_board.getraw())) MINTEMP_ERROR(H_BOARD, temp_board.celsius); #endif #if ALL(HAS_TEMP_SOC, THERMAL_PROTECTION_SOC) - if (TP_CMP(SOC, temp_soc.getraw(), maxtemp_raw_SOC)) maxtemp_error(H_SOC); + if (TP_CMP(SOC, temp_soc.getraw(), maxtemp_raw_SOC)) MAXTEMP_ERROR(H_SOC, temp_soc.celsius); #endif #undef TP_CMP @@ -3178,12 +3219,12 @@ void Temperature::init() { case TRRunaway: TERN_(HAS_DWIN_E3V2_BASIC, dwinPopupTemperature(0)); - _temp_error(heater_id, FPSTR(str_t_thermal_runaway), GET_TEXT_F(MSG_THERMAL_RUNAWAY)); + _TEMP_ERROR(heater_id, FPSTR(str_t_thermal_runaway), MSG_THERMAL_RUNAWAY, current); #if ENABLED(THERMAL_PROTECTION_VARIANCE_MONITOR) case TRMalfunction: TERN_(HAS_DWIN_E3V2_BASIC, dwinPopupTemperature(0)); - _temp_error(heater_id, FPSTR(str_t_temp_malfunction), GET_TEXT_F(MSG_TEMP_MALFUNCTION)); + _TEMP_ERROR(heater_id, FPSTR(str_t_temp_malfunction), MSG_TEMP_MALFUNCTION, current); #endif } } diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index a8873bf2af..d5a27a8671 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -41,6 +41,8 @@ #include "../feature/fancheck.h" #endif +//#define ERR_INCLUDE_TEMP + #define HOTEND_INDEX TERN(HAS_MULTI_HOTEND, e, 0) #define E_NAME TERN_(HAS_MULTI_HOTEND, e) @@ -1360,9 +1362,13 @@ class Temperature { static float get_pid_output_chamber(); #endif - static void _temp_error(const heater_id_t e, FSTR_P const serial_msg, FSTR_P const lcd_msg); - static void mintemp_error(const heater_id_t e); - static void maxtemp_error(const heater_id_t e); + static void _temp_error(const heater_id_t e, FSTR_P const serial_msg, FSTR_P const lcd_msg OPTARG(ERR_INCLUDE_TEMP, const celsius_float_t deg)); + static void mintemp_error(const heater_id_t e OPTARG(ERR_INCLUDE_TEMP, const celsius_float_t deg)); + static void maxtemp_error(const heater_id_t e OPTARG(ERR_INCLUDE_TEMP, const celsius_float_t deg)); + + #define _TEMP_ERROR(e, m, l, d) _temp_error(heater_id_t(e), m, GET_TEXT_F(l) OPTARG(ERR_INCLUDE_TEMP, d)) + #define MINTEMP_ERROR(e, d) mintemp_error(heater_id_t(e) OPTARG(ERR_INCLUDE_TEMP, d)) + #define MAXTEMP_ERROR(e, d) maxtemp_error(heater_id_t(e) OPTARG(ERR_INCLUDE_TEMP, d)) #define HAS_THERMAL_PROTECTION ANY(THERMAL_PROTECTION_HOTENDS, THERMAL_PROTECTION_CHAMBER, THERMAL_PROTECTION_BED, THERMAL_PROTECTION_COOLER) From 3baa318ec737a67cec6087194ab04fb2242279e0 Mon Sep 17 00:00:00 2001 From: Martin Turski Date: Fri, 4 Aug 2023 05:56:40 +0200 Subject: [PATCH 658/659] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Opt?= =?UTF-8?q?ion=20to=20reset=20AVR=20pin=20states=20(#25364)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/HAL/AVR/HAL.cpp | 27 +- Marlin/src/HAL/AVR/HAL.h | 2 +- Marlin/src/HAL/AVR/registers.cpp | 979 ++++++ Marlin/src/HAL/AVR/registers.h | 5080 ++++++++++++++++++++++++++++++ Marlin/src/HAL/LPC1768/HAL.cpp | 140 +- Marlin/src/HAL/LPC1768/main.cpp | 163 - 6 files changed, 6221 insertions(+), 170 deletions(-) create mode 100644 Marlin/src/HAL/AVR/registers.cpp create mode 100644 Marlin/src/HAL/AVR/registers.h delete mode 100644 Marlin/src/HAL/LPC1768/main.cpp diff --git a/Marlin/src/HAL/AVR/HAL.cpp b/Marlin/src/HAL/AVR/HAL.cpp index b3dcfbdf59..407a570cde 100644 --- a/Marlin/src/HAL/AVR/HAL.cpp +++ b/Marlin/src/HAL/AVR/HAL.cpp @@ -61,23 +61,40 @@ void save_reset_reason() { wdt_disable(); } +#include "registers.h" + +MarlinHAL::MarlinHAL() { + TERN_(HAL_AVR_DIRTY_INIT, _ATmega_resetperipherals()); // Clean-wipe the device state. +} + void MarlinHAL::init() { // Init Servo Pins - #define INIT_SERVO(N) OUT_WRITE(SERVO##N##_PIN, LOW) #if HAS_SERVO_0 - INIT_SERVO(0); + OUT_WRITE(SERVO0_PIN, LOW); #endif #if HAS_SERVO_1 - INIT_SERVO(1); + OUT_WRITE(SERVO1_PIN, LOW); #endif #if HAS_SERVO_2 - INIT_SERVO(2); + OUT_WRITE(SERVO2_PIN, LOW); #endif #if HAS_SERVO_3 - INIT_SERVO(3); + OUT_WRITE(SERVO3_PIN, LOW); #endif init_pwm_timers(); // Init user timers to default frequency - 1000HZ + + #if PIN_EXISTS(BEEPER) && ENABLED(HAL_AVR_DIRTY_INIT) && DISABLED(ATMEGA_NO_BEEPFIX) + // Make sure no alternative is locked onto the BEEPER. + // This fixes the issue where the ATmega is constantly beeping. + // Might disable other peripherals using the pin; to circumvent that please undefine one of the above things! + // The true culprit is the AVR ArduinoCore that enables peripherals redundantly. + // (USART1 on the GeeeTech GT2560) + // https://www.youtube.com/watch?v=jMgCvRXkexk + _ATmega_savePinAlternate(BEEPER_PIN); + + OUT_WRITE(BEEPER_PIN, LOW); + #endif } void MarlinHAL::reboot() { diff --git a/Marlin/src/HAL/AVR/HAL.h b/Marlin/src/HAL/AVR/HAL.h index 16878a8ab8..7d5e1000d7 100644 --- a/Marlin/src/HAL/AVR/HAL.h +++ b/Marlin/src/HAL/AVR/HAL.h @@ -187,7 +187,7 @@ class MarlinHAL { public: // Earliest possible init, before setup() - MarlinHAL() {} + MarlinHAL(); // Watchdog static void watchdog_init() IF_DISABLED(USE_WATCHDOG, {}); diff --git a/Marlin/src/HAL/AVR/registers.cpp b/Marlin/src/HAL/AVR/registers.cpp new file mode 100644 index 0000000000..08a74c952a --- /dev/null +++ b/Marlin/src/HAL/AVR/registers.cpp @@ -0,0 +1,979 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#ifdef __AVR__ + +#include "../../inc/MarlinConfigPre.h" + +#if ENABLED(HAL_AVR_DIRTY_INIT) + +#include "registers.h" + +// Since the compiler could be creating multiple copies of function code-graphs for each header inline-inclusion, +// we want to off-load the function definitions that define static memory into this solitary compilation unit. +// This way the ROM is NOT bloated (who knows if the compiler is optimizing same-content constant objects into one?) + +ATmegaPinFunctions _ATmega_getPinFunctions(int pin) { + if (pin < 0) return {}; + + ATmegaPinInfo info = _ATmega_getPinInfo((unsigned int)pin); + + #ifdef __AVR_TRM01__ + if (info.port == eATmegaPort::PORT_A) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD7 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD6 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD5 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD4 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD3 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD2 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD1 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD0 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_B) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC0A, eATmegaPinFunc::TOC1C, eATmegaPinFunc::PCI7 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1B, eATmegaPinFunc::PCI6 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1A, eATmegaPinFunc::PCI5 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC2A, eATmegaPinFunc::PCI4 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::PCI3 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::PCI2 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::PCI1 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_CS, eATmegaPinFunc::PCI0 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_C) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD15 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD14 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD13 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD12 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD11 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD10 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD9 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD8 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_D) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER0_CLKI }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_CLKI }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART1_CLK }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ICP }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT3, eATmegaPinFunc::USART1_TXD }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT2, eATmegaPinFunc::USART1_RXD }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT1, eATmegaPinFunc::TWI_SDA }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT0, eATmegaPinFunc::TWI_CLK }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_E) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT7, eATmegaPinFunc::TIMER3_ICP, eATmegaPinFunc::CLKO }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT6, eATmegaPinFunc::TIMER3_CLKI }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT5, eATmegaPinFunc::TOC3C }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT4, eATmegaPinFunc::TOC3B }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN1, eATmegaPinFunc::TOC3A }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN0, eATmegaPinFunc::USART0_CLK }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PDO, eATmegaPinFunc::USART0_TXD }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PDI, eATmegaPinFunc::USART0_RXD, eATmegaPinFunc::PCI8 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_F) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC7 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC6 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC5 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC4 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC3 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC2 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC1 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC0 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_G) { + if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC0B }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOSC1 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3 ) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOSC2 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_ALE }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_RD }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_WR }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_H) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER4_CLKI }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC2B }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC4C }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC4B }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC4A }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART2_CLK }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART2_TXD }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART2_RXD }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_J) { + if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI15 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI14 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI13 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI12 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART3_CLK, eATmegaPinFunc::PCI11 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART3_TXD, eATmegaPinFunc::PCI10 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART3_RXD, eATmegaPinFunc::PCI9 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_K) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC15, eATmegaPinFunc::PCI23 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC14, eATmegaPinFunc::PCI22 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC13, eATmegaPinFunc::PCI21 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC12, eATmegaPinFunc::PCI20 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC11, eATmegaPinFunc::PCI19 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC10, eATmegaPinFunc::PCI18 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC9, eATmegaPinFunc::PCI17 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC8, eATmegaPinFunc::PCI16 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_L) { + if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC5C }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC5B }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC5A }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER5_CLKI }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER5_ICP }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER4_ICP }; + return { funcs, countof(funcs) }; + } + } + #elif defined(__AVR_TRM02__) + if (info.port == eATmegaPort::PORT_A) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI7, eATmegaPinFunc::ADC7 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI6, eATmegaPinFunc::ADC6 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI5, eATmegaPinFunc::ADC5 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI4, eATmegaPinFunc::ADC4 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI3, eATmegaPinFunc::ADC3 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI2, eATmegaPinFunc::ADC2 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI1, eATmegaPinFunc::ADC1 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI0, eATmegaPinFunc::ADC0 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_B) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::TOC3B, eATmegaPinFunc::PCI15 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::TOC3A, eATmegaPinFunc::PCI14 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::TIMER3_ICP, eATmegaPinFunc::PCI13 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_CS, eATmegaPinFunc::TOC0B, eATmegaPinFunc::PCI12 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN1, eATmegaPinFunc::TOC0A, eATmegaPinFunc::PCI11 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN0, eATmegaPinFunc::EINT2, eATmegaPinFunc::PCI10 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ECI, eATmegaPinFunc::CLKO, eATmegaPinFunc::PCI9 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER0_ECI, eATmegaPinFunc::USART0_CLK, eATmegaPinFunc::PCI8 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_C) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOSC2, eATmegaPinFunc::PCI23 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOSC1, eATmegaPinFunc::PCI22 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI21 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI20 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI19 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI18 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI17, eATmegaPinFunc::TWI_SDA }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TWI_CLK, eATmegaPinFunc::PCI16 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_D) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC2A, eATmegaPinFunc::PCI31 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ICP, eATmegaPinFunc::TOC2B, eATmegaPinFunc::PCI30 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1A, eATmegaPinFunc::PCI29 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1B, eATmegaPinFunc::USART1_CLK, eATmegaPinFunc::PCI28 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT1, eATmegaPinFunc::USART1_TXD, eATmegaPinFunc::PCI27 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT0, eATmegaPinFunc::USART1_RXD, eATmegaPinFunc::PCI26 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART0_TXD, eATmegaPinFunc::PCI25 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART0_TXD, eATmegaPinFunc::PCI24, eATmegaPinFunc::TIMER3_ECI }; + return { funcs, countof(funcs) }; + } + } + #elif defined(__AVR_TRM03__) + if (info.port == eATmegaPort::PORT_B) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::XTAL2, eATmegaPinFunc::TOSC2, eATmegaPinFunc::PCI7 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::XTAL1, eATmegaPinFunc::TOSC1, eATmegaPinFunc::PCI6 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::PCI5 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::PCI4 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::TOC2A, eATmegaPinFunc::PCI3 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_CS, eATmegaPinFunc::TOC1B, eATmegaPinFunc::PCI2 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1A, eATmegaPinFunc::PCI1 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ICP, eATmegaPinFunc::CLKO, eATmegaPinFunc::PCI0 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_C) { + if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI14 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC5, eATmegaPinFunc::TWI_CLK, eATmegaPinFunc::PCI13 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC4, eATmegaPinFunc::TWI_SDA, eATmegaPinFunc::PCI12 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC3, eATmegaPinFunc::PCI11 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC2, eATmegaPinFunc::PCI10 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC1, eATmegaPinFunc::PCI9 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC0, eATmegaPinFunc::PCI8 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_D) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN1, eATmegaPinFunc::PCI23 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN0, eATmegaPinFunc::TOC0A, eATmegaPinFunc::PCI22 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ECI, eATmegaPinFunc::TOC0B, eATmegaPinFunc::PCI21 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART_CLK, eATmegaPinFunc::TIMER0_ECI, eATmegaPinFunc::PCI20 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT1, eATmegaPinFunc::TOC2B, eATmegaPinFunc::PCI19 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT0, eATmegaPinFunc::PCI18 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART_TXD, eATmegaPinFunc::PCI17 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART_RXD, eATmegaPinFunc::PCI16 }; + return { funcs, countof(funcs) }; + } + } + #elif defined(__AVR_TRM04__) + if (info.port == eATmegaPort::PORT_A) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD7 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD6 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD5 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD4 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD3 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD2 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD1 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD0 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_B) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC0A, eATmegaPinFunc::TOC1C, eATmegaPinFunc::PCI7 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1B, eATmegaPinFunc::PCI6 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1A, eATmegaPinFunc::PCI5 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC2A, eATmegaPinFunc::PCI4 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PDO, eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::PCI3 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PDI, eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::PCI2 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::PCI1 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_CS, eATmegaPinFunc::PCI0 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_C) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD15, eATmegaPinFunc::TIMER3_ICP, eATmegaPinFunc::CLKO }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD14, eATmegaPinFunc::TOC3A }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD13, eATmegaPinFunc::TOC3B }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD12, eATmegaPinFunc::TOC3C }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD11, eATmegaPinFunc::TIMER3_CLKI }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD10 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD9 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD8 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_D) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER0_CLKI }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_CLKI }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART1_CLK }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ICP }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT3, eATmegaPinFunc::USART1_TXD }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT2, eATmegaPinFunc::USART1_RXD }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT1, eATmegaPinFunc::TWI_SDA, eATmegaPinFunc::TOC2B }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT0, eATmegaPinFunc::TWI_CLK, eATmegaPinFunc::TOC0B }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_E) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT7, eATmegaPinFunc::AIN1, eATmegaPinFunc::UVCON }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT6, eATmegaPinFunc::AIN0 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT5, eATmegaPinFunc::TOSC2 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT4, eATmegaPinFunc::TOSC2 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::UID }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_ALE }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_RD }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_WR }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_F) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC7 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC6 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC5 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC4 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC3 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC2 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC1 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC0 }; + return { funcs, countof(funcs) }; + } + } + #elif defined(__AVR_TRM05__) + if (info.port == eATmegaPort::PORT_A) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC7, eATmegaPinFunc::PCI7 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC6, eATmegaPinFunc::PCI6 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC5, eATmegaPinFunc::PCI5 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC4, eATmegaPinFunc::PCI4 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC3, eATmegaPinFunc::PCI3 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC2, eATmegaPinFunc::PCI2 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC1, eATmegaPinFunc::PCI1 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC0, eATmegaPinFunc::PCI0 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_B) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::PCI15 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::PCI14 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::PCI13 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_CS, eATmegaPinFunc::TOC0B, eATmegaPinFunc::PCI12 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN1, eATmegaPinFunc::TOC0A, eATmegaPinFunc::PCI11 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN0, eATmegaPinFunc::EINT2, eATmegaPinFunc::PCI10 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ECI, eATmegaPinFunc::CLKO, eATmegaPinFunc::PCI9 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER0_ECI, eATmegaPinFunc::USART0_CLK, eATmegaPinFunc::PCI8 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_C) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOSC2, eATmegaPinFunc::PCI23 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOSC1, eATmegaPinFunc::PCI22 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI21 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI20 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI19 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI18 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TWI_SDA, eATmegaPinFunc::PCI17 }; + return { funcs, countof(funcs) }; + } + else if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TWI_CLK, eATmegaPinFunc::PCI16 }; + return { funcs, countof(funcs) }; + } + } + else if (info.port == eATmegaPort::PORT_D) { + if (info.pinidx == 7) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC2A, eATmegaPinFunc::PCI31 }; + return { funcs, countof(funcs) }; + } + if (info.pinidx == 6) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ICP, eATmegaPinFunc::TOC2B, eATmegaPinFunc::PCI30 }; + return { funcs, countof(funcs) }; + } + if (info.pinidx == 5) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1A, eATmegaPinFunc::PCI29 }; + return { funcs, countof(funcs) }; + } + if (info.pinidx == 4) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1B, eATmegaPinFunc::USART1_CLK, eATmegaPinFunc::PCI28 }; + return { funcs, countof(funcs) }; + } + if (info.pinidx == 3) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT1, eATmegaPinFunc::USART1_TXD, eATmegaPinFunc::PCI27 }; + return { funcs, countof(funcs) }; + } + if (info.pinidx == 2) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT0, eATmegaPinFunc::USART1_RXD, eATmegaPinFunc::PCI26 }; + return { funcs, countof(funcs) }; + } + if (info.pinidx == 1) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART0_TXD, eATmegaPinFunc::PCI25 }; + return { funcs, countof(funcs) }; + } + if (info.pinidx == 0) { + static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART0_RXD, eATmegaPinFunc::PCI24 }; + return { funcs, countof(funcs) }; + } + } + #endif + + return ATmegaPinFunctions(); // default and empty. +} + +#endif // HAL_AVR_DIRTY_INIT +#endif // __AVR__ diff --git a/Marlin/src/HAL/AVR/registers.h b/Marlin/src/HAL/AVR/registers.h new file mode 100644 index 0000000000..64c0955c3e --- /dev/null +++ b/Marlin/src/HAL/AVR/registers.h @@ -0,0 +1,5080 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include + +// This volatile-nonsense has to be done due to the C++ platform language specialization that specifies, for it's own compiler ideology, +// that memory writes and reads can be optimized across easily-reachable code spaces. This is in contrast to MSVC which specifies that +// memory writes and reads are holy. + +// OVERVIEW OF PREPROCESSOR DEFINITIONS: +// __AVR_ATmega2560__ +// __AVR_ATmega1284P__ +// __AVR_ATmega1280__ +// __AVR_ATmega644__ +// __AVR_ATmega644P__ +// __AVR_ATmega2561__ + +// Contributed by Martin Turski, company owner of EirDev, on the 29th of November, 2022 +// Contact E-Mail: turningtides@outlook.de +// Created specifically for the Marlin FW for AVR backwards-compatibility. +// Please expand this file with details of every supported AVR implementation. +// 1) download the latest technical reference manual +// 2) add the new technical reference manual below using a set of __AVR_*__ preprocessor definitions and a new __AVR_TRM*__ incrementing define +// 3) check which of the existing AVR registers exist on the new implementation and enable them +// 4) add any new register definitions +// 5) add the register memory layout below the definitions +// 6) extend the _ATmega_resetperipherals functions +// 7) extend the _ATmega_savePinAlternate function +// 8) copy the extension idea to _ATmega_restorePinAlternate and finish implementing it +// You need to adjust the eATmegaPort enumeration aswell. + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + #error "Fatal error: __AVR_TRMn__ already defined! (n: 01|02|03|04|05)" +#endif + +#if defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega640__) + // ATmega2560 technical reference manual date: 28th of November, 2022 + // ATmega640-1280-1281-2560-2561-Datasheet-DS40002211A.pdf + #define __AVR_TRM01__ +#elif defined(__AVR_ATmega164A__) || defined(__AVR_ATmega164PA__) || defined(__AVR_ATmega324A__) || defined(__AVR_ATmega324PA__) || defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) + // ATmega1284 technical reference manual date: 29th of November, 2022 + // ATmega164A_PA-324A_PA-644A_PA-1284_P_Data-Sheet-40002070B.pdf + #define __AVR_TRM02__ +#elif defined(__AVR_ATmega48A__) || defined(__AVR_ATmega48PA__) || defined(__AVR_ATmega88A__) || defined(__AVR_ATmega88PA__) || defined(__AVR_ATmega168A__) || defined(__AVR_ATmega168PA__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) + // ATmega328 technical reference manual date: 29th of November, 2022 + // ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061B.pdf + #define __AVR_TRM03__ +#elif defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1286P__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB646P__) || defined(__AVR_AT90USB647__) + // AT90USB1287 technical reference manual ID: 7593D–AVR–07/06 + // Preliminary. + #define __AVR_TRM04__ +#elif defined(__AVR_ATmega164P__) || defined(__AVR_ATmega164V__) || defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324V__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644V__) + // ATmega644P technical reference manual date: 14th of February, 2023 + // ATmega164P-324P-644P-Data-Sheet-40002071A.pdf + #define __AVR_TRM05__ +#endif + +/** + * HELPER FUNCTIONS + */ +namespace AVRHelpers { + + template + struct no_volatile { + typedef T type; + }; + + template + struct no_volatile : public no_volatile {}; + + template + struct voltype { + typedef T type; + }; + template + struct voltype { + typedef uint8_t type; + }; + template + struct voltype { + typedef uint16_t type; + }; + template + struct voltype { + typedef uint32_t type; + }; + + template + inline void dwrite(volatile T& v, const T& V) noexcept { + (volatile typename voltype ::type&)v = (const typename voltype ::type&)V; + } + +} // namespace AVRHelpers + +// As old as the ATmega series of CPU is, the worse the actual libraries making +// use of the MCU likely are. + +// These registers as references do not take program space since they are purely references. + +// It would be great if the old AVR definitions could be wasted in favor of these +// and code be rewritten to use the following more robust definitions. + +struct _bit_reg_t { + uint8_t val; + + bool getValue(uint8_t idx) const volatile { + return ( val & (1 << idx) ); + } + void setValue(uint8_t idx, bool value) volatile { + if (value) + val |= (1 << idx); + else + val &= ~(1 << idx); + } +}; + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + + typedef _bit_reg_t PIN_reg_t; + typedef _bit_reg_t DDR_reg_t; + typedef _bit_reg_t PORT_reg_t; + + struct PORT_dev_t { + PIN_reg_t _PIN; + DDR_reg_t _DDR; + PORT_reg_t _PORT; + + inline void operator = ( const PORT_dev_t& r ) volatile { + using namespace AVRHelpers; + dwrite(this->_PIN, r._PIN); + dwrite(this->_DDR, r._DDR); + dwrite(this->_PORT, r._PORT); + } + }; + static_assert(sizeof(PORT_dev_t) == 3, "invalid size of ATmega2560 GPIO_dev_t"); + +#endif // __AVR_TRM01__ || __AVR_TRM02__ || __AVR_TRM03__ || __AVR_TRM04__ || __AVR_TRM05__ + +#ifdef __AVR_TRM01__ + + struct _bitG_reg_t { + uint8_t val : 6; + uint8_t reserved1 : 2; + + bool getValue(uint8_t idx) const volatile { + return val & (1 << idx); + } + void setValue(uint8_t idx, bool value) volatile { + if (value) + val |= (1 << idx); + else + val &= ~(1 << idx); + } + }; + typedef _bitG_reg_t PING_reg_t; + typedef _bitG_reg_t DDRG_reg_t; + typedef _bitG_reg_t PORTG_reg_t; + + struct PORTG_dev_t { + PING_reg_t _PIN; + DDRG_reg_t _DDR; + PORTG_reg_t _PORT; + + inline void operator = ( const PORTG_dev_t& r ) volatile { + using namespace AVRHelpers; + dwrite(this->_PIN, r._PIN); + dwrite(this->_DDR, r._DDR); + dwrite(this->_PORT, r._PORT); + } + }; + +#endif + +#ifdef __AVR_TRM03__ + + struct _bitC_reg_t { + uint8_t val : 7; + uint8_t reserved1 : 1; + + bool getValue(uint8_t idx) const volatile { + return ( val & (1 << idx) ); + } + void setValue(uint8_t idx, bool value) volatile { + if (value) + val |= (1 << idx); + else + val &= ~(1 << idx); + } + }; + typedef _bitC_reg_t PINC_reg_t; + typedef _bitC_reg_t DDRC_reg_t; + typedef _bitC_reg_t PORTC_reg_t; + + struct PORTC_dev_t { + PINC_reg_t _PIN; + DDRC_reg_t _DDR; + PORTC_reg_t _PORT; + + inline void operator = ( const PORTC_dev_t& r ) volatile { + this->_PIN = r._PIN; + this->_DDR = r._DDR; + this->_PORT = r._PORT; + } + }; + +#endif + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + + struct TIFR0_reg_t { + uint8_t _TOV0 : 1; + uint8_t _OCF0A : 1; + uint8_t _OCF0B : 1; + uint8_t reserved1 : 5; + }; + static_assert(sizeof(TIFR0_reg_t) == 1, "invalid size of ATmega2560 TIFR0_reg_t"); + + struct TIFR1_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + uint8_t _TOV1 : 1; + uint8_t _OCF1A : 1; + uint8_t _OCF1B : 1; + uint8_t _OCF1C : 1; + uint8_t reserved1 : 1; + uint8_t _ICF1 : 1; + uint8_t reserved2 : 2; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM05__) + uint8_t _TOV1 : 1; + uint8_t _OCF1A : 1; + uint8_t _OCF1B : 1; + uint8_t reserved1 : 2; + uint8_t _ICF1 : 1; + uint8_t reserved2 : 2; + #endif + }; + static_assert(sizeof(TIFR1_reg_t) == 1, "invalid size of ATmega2560 TIFR1_reg_t"); + + struct TIFR2_reg_t { + uint8_t _TOV2 : 1; + uint8_t _OCF2A : 1; + uint8_t _OCF2B : 1; + uint8_t reserved1 : 5; + }; + static_assert(sizeof(TIFR2_reg_t) == 1, "invalid size of ATmega2560 TIFR2_reg_t"); + +#endif // __AVR_TRM01__ || __AVR_TRM02__ || __AVR_TRM03__ || __AVR_TRM04__ || __AVR_TRM05__ + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) + + struct TIFR3_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + uint8_t _TOV3 : 1; + uint8_t _OCF3A : 1; + uint8_t _OCF3B : 1; + uint8_t _OCF3C : 1; + uint8_t reserved1 : 1; + uint8_t _ICF3 : 1; + uint8_t reserved2 : 2; + #elif defined(__AVR_TRM02__) + uint8_t _TOV3 : 1; + uint8_t _OCF3A : 1; + uint8_t _OCF3B : 1; + uint8_t reserved1 : 2; + uint8_t _ICF3 : 1; + uint8_t reserved2 : 2; + #endif + }; + static_assert(sizeof(TIFR3_reg_t) == 1, "invalid size of ATmega2560 TIFR3_reg_t"); + +#endif // __AVR_TRM01__ || __AVR_TRM02__ || __AVR_TRM04__ + +#ifdef __AVR_TRM01__ + + struct TIFR4_reg_t { + uint8_t _TOV4 : 1; + uint8_t _OCF4A : 1; + uint8_t _OCF4B : 1; + uint8_t _OCF4C : 1; + uint8_t reserved1 : 1; + uint8_t _ICF4 : 1; + uint8_t reserved2 : 2; + }; + static_assert(sizeof(TIFR4_reg_t) == 1, "invalid size of ATmega2560 TIFR4_reg_t"); + + struct TIFR5_reg_t { + uint8_t _TOV5 : 1; + uint8_t _OCF5A : 1; + uint8_t _OCF5B : 1; + uint8_t _OCF5C : 1; + uint8_t reserved1 : 1; + uint8_t _ICF5 : 1; + uint8_t reserved2 : 2; + }; + static_assert(sizeof(TIFR5_reg_t) == 1, "invalid size of ATmega2560 TIFR5_reg_t"); + +#endif // __AVR_TRM01__ + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + + struct PCIFR_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM03__) + uint8_t _PCIF0 : 1; + uint8_t _PCIF1 : 1; + uint8_t _PCIF2 : 1; + uint8_t reserved1 : 5; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + uint8_t _PCIF0 : 1; + uint8_t _PCIF1 : 1; + uint8_t _PCIF2 : 1; + uint8_t _PCIF3 : 1; + uint8_t reserved1 : 4; + #elif defined(__AVR_TRM04__) + uint8_t _PCIF0 : 1; + uint8_t reserved1 : 7; + #endif + }; + static_assert(sizeof(PCIFR_reg_t) == 1, "invalid size of ATmega2560 PCIFR_reg_t"); + + struct EIFR_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + uint8_t _INTF0 : 1; + uint8_t _INTF1 : 1; + uint8_t _INTF2 : 1; + uint8_t _INTF3 : 1; + uint8_t _INTF4 : 1; + uint8_t _INTF5 : 1; + uint8_t _INTF6 : 1; + uint8_t _INTF7 : 1; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + uint8_t _INTF0 : 1; + uint8_t _INTF1 : 1; + uint8_t _INTF2 : 1; + uint8_t reserved1 : 5; + #elif defined(__AVR_TRM03__) + uint8_t _INTF0 : 1; + uint8_t _INTF1 : 1; + uint8_t reserved1 : 6; + #endif + }; + static_assert(sizeof(EIFR_reg_t) == 1, "invalid size of ATmega2560 EIFR_reg_t"); + + struct EIMSK_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + uint8_t _INT0 : 1; + uint8_t _INT1 : 1; + uint8_t _INT2 : 1; + uint8_t _INT3 : 1; + uint8_t _INT4 : 1; + uint8_t _INT5 : 1; + uint8_t _INT6 : 1; + uint8_t _INT7 : 1; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + uint8_t _INT0 : 1; + uint8_t _INT1 : 1; + uint8_t _INT2 : 1; + uint8_t reserved1 : 5; + #elif defined(__AVR_TRM03__) + uint8_t _INT0 : 1; + uint8_t _INT1 : 1; + uint8_t reserved1 : 6; + #endif + }; + static_assert(sizeof(EIMSK_reg_t) == 1, "invalid size of ATmega2560 EIMSK_reg_t"); + + struct EECR_reg_t { + uint8_t _EERE : 1; + uint8_t _EEPE : 1; + uint8_t _EEMPE : 1; + uint8_t _EERIE : 1; + uint8_t _EEPM0 : 1; + uint8_t _EEPM1 : 1; + uint8_t reserved1 : 2; + }; + static_assert(sizeof(EECR_reg_t) == 1, "invalid size of ATmega2560 EECR_reg_t"); + + struct EEAR_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + uint16_t _EEAR : 12; + uint16_t reserved1 : 4; + #elif defined(__AVR_TRM03__) + #if defined(__AVR_ATmega88A__) || defined(__AVR_ATmega88PA__) || defined(__AVR_ATmega168A__) || defined(__AVR_ATmega168PA__) || defined(__AVR_ATmega328P__) + uint16_t _EEAR : 16; + #else + uint8_t _EEAR : 8; + uint8_t reserved1 : 8; + #endif + #endif + }; + static_assert(sizeof(EEAR_reg_t) == 2, "invalid size of ATmega2560 EEAR_reg_t"); + + struct GTCCR_reg_t { + uint8_t _PSRSYNC : 1; + uint8_t _PSRASY : 1; + uint8_t reserved1 : 5; + uint8_t _TSM : 1; + }; + static_assert(sizeof(GTCCR_reg_t) == 1, "invalid size of ATmega2560 GTCCR_reg_t"); + + struct SPCR_reg_t { + uint8_t _SPR : 2; + uint8_t _CPHA : 1; + uint8_t _CPOL : 1; + uint8_t _MSTR : 1; + uint8_t _DORD : 1; + uint8_t _SPE : 1; + uint8_t _SPIE : 1; + }; + static_assert(sizeof(SPCR_reg_t) == 1, "invalid size of ATmega2560 SPCR_reg_t"); + + struct SPSR_reg_t { + uint8_t _SPI2X : 1; + uint8_t reserved1 : 5; + uint8_t _WCOL : 1; + uint8_t _SPIF : 1; + }; + static_assert(sizeof(SPSR_reg_t) == 1, "invalid size of ATmega2560 SPSR_reg_t"); + + struct ACSR_reg_t { + uint8_t _ACIS : 2; + uint8_t _ACIC : 1; + uint8_t _ACIE : 1; + uint8_t _ACI : 1; + uint8_t _ACO : 1; + uint8_t _ACBG : 1; + uint8_t _ACD : 1; + }; + static_assert(sizeof(ACSR_reg_t) == 1, "invalid size of ATmega2560 ACSR_reg_t"); + + struct SMCR_reg_t { + uint8_t _SE : 1; + uint8_t _SM : 3; + uint8_t reserved1 : 4; + }; + static_assert(sizeof(SMCR_reg_t) == 1, "invalid size of ATmega2560 SMCR_reg_t"); + + struct MCUSR_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + uint8_t _PORF : 1; + uint8_t _EXTRF : 1; + uint8_t _BORF : 1; + uint8_t _WDRF : 1; + uint8_t _JTRF : 1; + uint8_t reserved1 : 3; + #elif defined(__AVR_TRM03__) + uint8_t _PORF : 1; + uint8_t _EXTRF : 1; + uint8_t _BORF : 1; + uint8_t _WDRF : 1; + uint8_t reserved1 : 4; + #endif + }; + static_assert(sizeof(MCUSR_reg_t) == 1, "invalid size of ATmega2560 MCUSR_reg_t"); + + struct MCUCR_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + uint8_t _IVCE : 1; + uint8_t _IVSEL : 1; + uint8_t reserved1 : 2; + uint8_t _PUD : 1; + uint8_t reserved2 : 2; + uint8_t _JTD : 1; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + uint8_t _IVCE : 1; + uint8_t _IVSEL : 1; + uint8_t reserved1 : 2; + uint8_t _PUD : 1; + uint8_t _BODSE : 1; + uint8_t _BODS : 1; + uint8_t _JTD : 1; + #elif defined(__AVR_TRM03__) + uint8_t _IVCE : 1; + uint8_t _IVSEL : 1; + uint8_t reserved1 : 2; + uint8_t _PUD : 1; + uint8_t _BODSE : 1; + uint8_t _BODS : 1; + uint8_t reserved2 : 1; + #endif + }; + static_assert(sizeof(MCUCR_reg_t) == 1, "invalid size of ATmega2560 MCUCR_reg_t"); + + struct SPMCSR_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + uint8_t _SPMEN : 1; + uint8_t _PGERS : 1; + uint8_t _PGWRT : 1; + uint8_t _BLBSET : 1; + uint8_t _RWWSRE : 1; + uint8_t _SIGRD : 1; + uint8_t _RWWSB : 1; + uint8_t _SPMIE : 1; + #elif defined(__AVR_TRM03__) + #if defined(__AVR_ATmega88A__) || defined(__AVR_ATmega88PA__) || defined(__AVR_ATmega168A__) || defined(__AVR_ATmega168PA__) || defined(__AVR_ATmega328P__) + uint8_t _SPMEN : 1; + uint8_t _PGERS : 1; + uint8_t _PGWRT : 1; + uint8_t _BLBSET : 1; + uint8_t _RWWSRE : 1; + uint8_t _SIGRD : 1; + uint8_t _RWWSB : 1; + uint8_t _SPMIE : 1; + #else + uint8_t _SPMEN : 1; + uint8_t _PGERS : 1; + uint8_t _PGWRT : 1; + uint8_t _BLBSET : 1; + uint8_t reserved1 : 1; + uint8_t _SIGRD : 1; + uint8_t reserved2 : 1; + uint8_t _SPMIE : 1; + #endif + #endif + }; + static_assert(sizeof(SPMCSR_reg_t) == 1, "invalid size of ATmega2560 SPMCSR_reg_t"); + +#endif // __AVR_TRM01__ || __AVR_TRM02__ || __AVR_TRM03__ || __AVR_TRM04__ + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + + struct RAMPZ_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) + uint8_t _RAMPZ : 2; + uint8_t reserved1 : 6; + #elif defined(__AVR_TRM05__) + uint8_t _RAMPZ : 1; + uint8_t reserved1 : 7; + #endif + }; + static_assert(sizeof(RAMPZ_reg_t) == 1, "invalid size of ATmega2560 RAMPZ_reg_t"); + +#endif // __AVR_TRM01__ || __AVR_TRM02__ || __AVR_TRM04__ || __AVR_TRM05__ + +#ifdef __AVR_TRM01__ + + struct EIND_reg_t { + uint8_t _EIND0 : 1; + uint8_t reserved1 : 7; + }; + static_assert(sizeof(EIND_reg_t) == 1, "invalid size of ATmega2560 EIND_reg_t"); + +#endif // __AVR_TRM01__ + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + + struct SP_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + uint16_t _SP; + #elif defined(__AVR_TRM03__) + #if defined(__AVR_ATmega88A__) || defined(__AVR_ATmega88PA__) || defined(__AVR_ATmega168A__) || defined(__AVR_ATmega168PA__) || defined(__AVR_ATmega328P__) + uint16_t _SP : 11; + uint16_t reserved1 : 5; + #else + uint16_t _SP : 10; + uint16_t reserved1 : 6; + #endif + #endif + }; + static_assert(sizeof(SP_reg_t) == 2, "invalid size of ATmega2560 SP_reg_t"); + + struct SREG_reg_t { + uint8_t _C : 1; + uint8_t _Z : 1; + uint8_t _N : 1; + uint8_t _V : 1; + uint8_t _S : 1; + uint8_t _H : 1; + uint8_t _T : 1; + uint8_t _I : 1; + }; + static_assert(sizeof(SREG_reg_t) == 1, "invalid size of ATmega2560 SREG_reg_t"); + + struct WDTCSR_reg_t { + uint8_t _WDP0 : 1; + uint8_t _WDP1 : 1; + uint8_t _WDP2 : 1; + uint8_t _WDE : 1; + uint8_t _WDCE : 1; + uint8_t _WDP3 : 1; + uint8_t _WDIE : 1; + uint8_t _WDIF : 1; + }; + static_assert(sizeof(WDTCSR_reg_t) == 1, "invalid size of ATmega2560 WDTCSR_reg_t"); + + struct CLKPR_reg_t { + uint8_t _CLKPS : 4; + uint8_t reserved1 : 3; + uint8_t _CLKPCE : 1; + }; + static_assert(sizeof(CLKPR_reg_t) == 1, "invalid size of ATmega2560 CLKPR_reg_t"); + + struct PRR0_reg_t { + #ifdef __AVR_TRM01__ + uint8_t _PRADC : 1; + uint8_t _PRUSART0 : 1; + uint8_t _PRSPI : 1; + uint8_t _PRTIM1 : 1; + uint8_t reserved1 : 1; + uint8_t _PRTIM0 : 1; + uint8_t _PRTIM2 : 1; + uint8_t _PRTWI : 1; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + uint8_t _PRADC : 1; + uint8_t _PRUSART0 : 1; + uint8_t _PRSPI : 1; + uint8_t _PRTIM1 : 1; + uint8_t _PRUSART1 : 1; + uint8_t _PRTIM0 : 1; + uint8_t _PRTIM2 : 1; + uint8_t _PRTWI : 1; + #elif defined(__AVR_TRM03__) + uint8_t _PRADC : 1; + uint8_t _PRUSART0 : 1; + uint8_t _PRSPI : 1; + uint8_t _PRTIM1 : 1; + uint8_t reserved1 : 1; + uint8_t _PRTIM0 : 1; + uint8_t _PRTIM2 : 1; + uint8_t _PRTWI : 1; + #elif defined(__AVR_TRM04__) + uint8_t _PRADC : 1; + uint8_t reserved1 : 1; + uint8_t _PRSPI : 1; + uint8_t _PRTIM1 : 1; + uint8_t reserved2 : 1; + uint8_t _PRTIM0 : 1; + uint8_t _PRTIM2 : 1; + uint8_t _PRTWI : 1; + #endif + }; + static_assert(sizeof(PRR0_reg_t) == 1, "invalid size of ATmega2560 PRR0_reg_t"); + +#endif // __AVR_TRM01__ || __AVR_TRM02__ || __AVR_TRM03__ || __AVR_TRM04__ || __AVR_TRM05__ + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) + + struct PRR1_reg_t { + #ifdef __AVR_TRM01__ + uint8_t _PRUSART1 : 1; + uint8_t _PRUSART2 : 1; + uint8_t _PRUSART3 : 1; + uint8_t _PRTIM3 : 1; + uint8_t _PRTIM4 : 1; + uint8_t _PRTIM5 : 1; + uint8_t reserved1 : 2; + #elif defined(__AVR_TRM02__) + uint8_t _PRTIM3 : 1; + uint8_t reserved1 : 7; + #elif defined(__AVR_TRM04__) + uint8_t _PRUSART1 : 1; + uint8_t reserved1 : 2; + uint8_t _PRTIM3 : 1; + uint8_t reserved2 : 3; + uint8_t _PRUSB : 1; + #endif + }; + static_assert(sizeof(PRR1_reg_t) == 1, "invalid size of ATmega2560 PRR1_reg_t"); + +#endif // __AVR_TRM01__ || __AVR_TRM02__ || __AVR_TRM04__ + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + + struct PCICR_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM03__) + uint8_t _PCIE0 : 1; + uint8_t _PCIE1 : 1; + uint8_t _PCIE2 : 1; + uint8_t reserved1 : 5; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + uint8_t _PCIE0 : 1; + uint8_t _PCIE1 : 1; + uint8_t _PCIE2 : 1; + uint8_t _PCIE3 : 1; + uint8_t reserved1 : 4; + #elif defined(__AVR_TRM04__) + uint8_t _PCIE0 : 1; + uint8_t reserved1 : 7; + #endif + }; + static_assert(sizeof(PCICR_reg_t) == 1, "invalid size of ATmega2560 PCICR_reg_t"); + + struct EICRA_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + uint8_t _ISC0 : 2; + uint8_t _ISC1 : 2; + uint8_t _ISC2 : 2; + uint8_t _ISC3 : 2; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + uint8_t _ISC0 : 2; + uint8_t _ISC1 : 2; + uint8_t _ISC2 : 2; + uint8_t reserved1 : 2; + #elif defined(__AVR_TRM03__) + uint8_t _ISC0 : 2; + uint8_t _ISC1 : 2; + uint8_t reserved1 : 4; + #endif + }; + static_assert(sizeof(EICRA_reg_t) == 1, "invalid size of ATmega2560 EICRA_reg_t"); + +#endif // __AVR_TRM01__ || __AVR_TRM02__ || __AVR_TRM03__ || __AVR_TRM04__ || __AVR_TRM05__ + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + + struct EICRB_reg_t { + uint8_t _ISC4 : 2; + uint8_t _ISC5 : 2; + uint8_t _ISC6 : 2; + uint8_t _ISC7 : 2; + }; + static_assert(sizeof(EICRB_reg_t) == 1, "invalid size of ATmega2560 EICRB_reg_t"); + +#endif // __AVR_TRM01__ || __AVR_TRM04__ + +#if defined(__AVR_TRM03__) + + struct _bitPCMSK1_reg_t { + uint8_t val : 7; + uint8_t reserved1 : 1; + + bool getValue(uint8_t idx) { return val & (1 << idx); } + void setValue(uint8_t idx, bool value) { + if (value) + val |= (1 << idx); + else + val &= ~(1 << idx); + } + }; + +#endif // __AVR_TRM03__ + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + + struct TIMSK0_reg_t { + #ifdef __AVR_TRM01__ + uint8_t _TOIE0 : 1; + uint8_t _OCIE0A : 1; + uint8_t _OCIE0B : 1; + uint8_t _OCIE0C : 1; + uint8_t reserved1 : 1; + uint8_t _ICIE0 : 1; + uint8_t reserved2 : 2; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + uint8_t _TOIE0 : 1; + uint8_t _OCIE0A : 1; + uint8_t _OCIE0B : 1; + uint8_t reserved1 : 5; + #endif + }; + static_assert(sizeof(TIMSK0_reg_t) == 1, "invalid size of ATmega2560 TIMSK0_reg_t"); + + struct TIMSK1_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + uint8_t _TOIE1 : 1; + uint8_t _OCIE1A : 1; + uint8_t _OCIE1B : 1; + uint8_t _OCIE1C : 1; + uint8_t reserved1 : 1; + uint8_t _ICIE1: 1; + uint8_t reserved2 : 2; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM05__) + uint8_t _TOIE1 : 1; + uint8_t _OCIE1A : 1; + uint8_t _OCIE1B : 1; + uint8_t reserved1 : 2; + uint8_t _ICIE1: 1; + uint8_t reserved2 : 2; + #endif + }; + static_assert(sizeof(TIMSK1_reg_t) == 1, "invalid size of ATmega2560 TIMSK1_reg_t"); + + struct TIMSK2_reg_t { + uint8_t _TOIE2 : 1; + uint8_t _OCIE2A : 1; + uint8_t _OCIE2B : 1; + uint8_t reserved1 : 5; + }; + static_assert(sizeof(TIMSK2_reg_t) == 1, "invalid size of ATmega2560 TIMSK2_reg_t"); + +#endif // __AVR_TRM01__ || __AVR_TRM02__ || __AVR_TRM03__ || __AVR_TRM04__ || __AVR_TRM05__ + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) + + struct TIMSK3_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + uint8_t _TOIE3 : 1; + uint8_t _OCIE3A : 1; + uint8_t _OCIE3B : 1; + uint8_t _OCIE3C : 1; + uint8_t reserved1 : 1; + uint8_t _ICIE3 : 1; + uint8_t reserved2 : 2; + #elif defined(__AVR_TRM02__) + uint8_t _TOIE3 : 1; + uint8_t _OCIE3A : 1; + uint8_t _OCIE3B : 1; + uint8_t reserved1 : 2; + uint8_t _ICIE3 : 1; + uint8_t reserved2 : 2; + #endif + }; + static_assert(sizeof(TIMSK3_reg_t) == 1, "invalid size of ATmega2560 TIMSK3_reg_t"); + +#endif // __AVR_TRM01__ || __AVR_TRM02__ || __AVR_TRM04__ + +#ifdef __AVR_TRM01__ + + struct TIMSK4_reg_t { + uint8_t _TOIE4 : 1; + uint8_t _OCIE4A : 1; + uint8_t _OCIE4B : 1; + uint8_t _OCIE4C : 1; + uint8_t reserved1 : 1; + uint8_t _ICIE4 : 1; + uint8_t reserved2 : 2; + }; + static_assert(sizeof(TIMSK4_reg_t) == 1, "invalid size of ATmega2560 TIMSK4_reg_t"); + + struct TIMSK5_reg_t { + uint8_t _TOIE5 : 1; + uint8_t _OCIE5A : 1; + uint8_t _OCIE5B : 1; + uint8_t _OCIE5C : 1; + uint8_t reserved1 : 1; + uint8_t _ICIE5 : 1; + uint8_t reserved2 : 2; + }; + static_assert(sizeof(TIMSK5_reg_t) == 1, "invalid size of ATmega2560 TIMSK5_reg_t"); + +#endif // __AVR_TRM01__ + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + + struct XMCRA_reg_t { + uint8_t _SRW0 : 2; + uint8_t _SRW1 : 2; + uint8_t _SRL : 3; + uint8_t _SRE : 1; + }; + static_assert(sizeof(XMCRA_reg_t) == 1, "invalid size of ATmega2560 XMCRA_reg_t"); + + struct XMCRB_reg_t { + uint8_t _XMM : 3; + uint8_t reserved1 : 4; + uint8_t _XMBK : 1; + }; + static_assert(sizeof(XMCRB_reg_t) == 1, "invalid size of ATmega2560 XMCRB_reg_t"); + +#endif // __AVR_TRM01__ || __AVR_TRM04__ + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + + struct ADCSRA_reg_t { + uint8_t _ADPS : 3; + uint8_t _ADIE : 1; + uint8_t _ADIF : 1; + uint8_t _ADATE : 1; + uint8_t _ADSC : 1; + uint8_t _ADEN : 1; + }; + static_assert(sizeof(ADCSRA_reg_t) == 1, "invalid size of ATmega2560 ADCSRA_reg_t"); + + struct ADCSRB_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + uint8_t _ADTS : 3; + uint8_t _MUX5 : 1; + uint8_t reserved1 : 2; + uint8_t _ACME : 1; + uint8_t reserved2 : 1; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM05__) + uint8_t _ADTS : 3; + uint8_t reserved1 : 3; + uint8_t _ACME : 1; + uint8_t reserved2 : 1; + #endif + }; + static_assert(sizeof(ADCSRB_reg_t) == 1, "invalid size of ATmega2560 ADCSRB_reg_t"); + + struct ADMUX_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + uint8_t _MUX0 : 1; + uint8_t _MUX1 : 1; + uint8_t _MUX2 : 1; + uint8_t _MUX3 : 1; + uint8_t _MUX4 : 1; + uint8_t _ADLAR : 1; + uint8_t _REFS0 : 1; + uint8_t _REFS1 : 1; + #elif defined(__AVR_TRM03__) + uint8_t _MUX0 : 1; + uint8_t _MUX1 : 1; + uint8_t _MUX2 : 1; + uint8_t _MUX3 : 1; + uint8_t reserved1 : 1; + uint8_t _ADLAR : 1; + uint8_t _REFS0 : 1; + uint8_t _REFS1 : 1; + #endif + }; + static_assert(sizeof(ADMUX_reg_t) == 1, "invalid size of ATmega2560 ADMUX_reg_t"); + +#endif // __AVR_TRM01__ || __AVR_TRM02__ || __AVR_TRM03__ || __AVR_TRM04__ + +#ifdef __AVR_TRM01__ + + struct DIDR2_reg_t { + uint8_t _ADC8D : 1; + uint8_t _ADC9D : 1; + uint8_t _ADC10D : 1; + uint8_t _ADC11D : 1; + uint8_t _ADC12D : 1; + uint8_t _ADC13D : 1; + uint8_t _ADC14D : 1; + uint8_t _ADC15D : 1; + }; + static_assert(sizeof(DIDR2_reg_t) == 1, "invalid size of ATmega2560 DIDR2_reg_t"); + +#endif // __AVR_TRM01__ + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + + struct DIDR0_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + uint8_t _ADC0D : 1; + uint8_t _ADC1D : 1; + uint8_t _ADC2D : 1; + uint8_t _ADC3D : 1; + uint8_t _ADC4D : 1; + uint8_t _ADC5D : 1; + uint8_t _ADC6D : 1; + uint8_t _ADC7D : 1; + #elif defined(__AVR_TRM03__) + uint8_t _ADC0D : 1; + uint8_t _ADC1D : 1; + uint8_t _ADC2D : 1; + uint8_t _ADC3D : 1; + uint8_t _ADC4D : 1; + uint8_t _ADC5D : 1; + uint8_t reserved1 : 2; + #endif + }; + static_assert(sizeof(DIDR0_reg_t) == 1, "invalid size of ATmega2560 DIDR0_reg_t"); + + struct DIDR1_reg_t { + uint8_t _AIN0D : 1; + uint8_t _AIN1D : 1; + uint8_t reserved1 : 6; + }; + static_assert(sizeof(DIDR1_reg_t) == 1, "invalid size of ATmega2560 DIDR1_reg_t"); + + struct TCCRnA_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + uint8_t _WGMn0 : 1; + uint8_t _WGMn1 : 1; + uint8_t _COMnC : 2; + uint8_t _COMnB : 2; + uint8_t _COMnA : 2; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM05__) + uint8_t _WGMn0 : 1; + uint8_t _WGMn1 : 1; + uint8_t reserved1 : 2; + uint8_t _COMnB : 2; + uint8_t _COMnA : 2; + #endif + }; + static_assert(sizeof(TCCRnA_reg_t) == 1, "invalid size of ATmega2560 TCCRnA_reg_t"); + + struct TCCRnB_reg_t { + uint8_t _CSn : 3; + uint8_t _WGMn2 : 1; + uint8_t _WGMn3 : 1; + uint8_t reserved1 : 1; + uint8_t _ICESn : 1; + uint8_t _ICNCn : 1; + }; + static_assert(sizeof(TCCRnB_reg_t) == 1, "invalid size of ATmega2560 TCCRnB_reg_t"); + + struct TCCRnC_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + uint8_t reserved1 : 5; + uint8_t _FOCnC : 1; + uint8_t _FOCnB : 1; + uint8_t _FOCnA : 1; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM05__) + uint8_t reserved1 : 6; + uint8_t _FOCnB : 1; + uint8_t _FOCnA : 1; + #endif + }; + static_assert(sizeof(TCCRnC_reg_t) == 1, "invalid size of ATmega2560 TCCRnC_reg_t"); + + struct TIMER_dev_t { + TCCRnA_reg_t _TCCRnA; + TCCRnB_reg_t _TCCRnB; + TCCRnC_reg_t _TCCRnC; + uint8_t reserved1; + uint16_t _TCNTn; + uint16_t _ICRn; + uint16_t _OCRnA; + uint16_t _OCRnB; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + uint16_t _OCRnC; + #endif + + inline void operator = ( const TIMER_dev_t& r ) volatile { + using namespace AVRHelpers; + dwrite(this->_TCCRnA, r._TCCRnA); + dwrite(this->_TCCRnB, r._TCCRnB); + dwrite(this->_TCCRnC, r._TCCRnC); + this->reserved1 = r.reserved1; + this->_TCNTn = r._TCNTn; + this->_ICRn = r._ICRn; + this->_OCRnA = r._OCRnA; + this->_OCRnB = r._OCRnB; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + this->_OCRnC = r._OCRnC; + #endif + } + }; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + static_assert(sizeof(TIMER_dev_t) == 14, "invalid size of ATmega2560 TIMER_dev_t"); + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM05__) + static_assert(sizeof(TIMER_dev_t) == 12, "invalid size of ATmega1284 TIMER_dev_t"); + #endif + + struct TCCRnA_8bit_reg_t { + uint8_t _WGMn0 : 1; + uint8_t _WGMn1 : 1; + uint8_t reserved1 : 2; + uint8_t _COMnB : 2; + uint8_t _COMnA : 2; + }; + static_assert(sizeof(TCCRnA_8bit_reg_t) == 1, "invalid size of ATmega2560 TCCRnA_8bit_reg_t"); + + struct TCCRnB_8bit_reg_t { + uint8_t _CSn : 3; + uint8_t _WGMn2 : 1; + uint8_t reserved1 : 2; + uint8_t _FOCnB : 1; + uint8_t _FOCnA : 1; + }; + static_assert(sizeof(TCCRnB_8bit_reg_t) == 1, "invalid size of ATmega2560 TCCRnB_8bit_reg_t"); + + struct TIMER_8bit_dev_t { + TCCRnA_8bit_reg_t _TCCRnA; + TCCRnB_8bit_reg_t _TCCRnB; + uint8_t _TCNTn; + uint8_t _OCRnA; + uint8_t _OCRnB; + + inline void operator = ( const TIMER_8bit_dev_t& r ) volatile { + using namespace AVRHelpers; + dwrite(this->_TCCRnA, r._TCCRnA); + dwrite(this->_TCCRnB, r._TCCRnB); + this->_TCNTn = r._TCNTn; + this->_OCRnA = r._OCRnA; + this->_OCRnB = r._OCRnB; + } + }; + static_assert(sizeof(TIMER_8bit_dev_t) == 5, "invalid size of ATmega2560 TIMER_8bit_dev_t"); + + struct ASSR_reg_t { + uint8_t _TCR2BUB : 1; + uint8_t _TCR2AUB : 1; + uint8_t _OCR2BUB : 1; + uint8_t _OCR2AUB : 1; + uint8_t _TCN2UB : 1; + uint8_t _AS2 : 1; + uint8_t _EXCLK : 1; + uint8_t reserved1 : 1; + }; + static_assert(sizeof(ASSR_reg_t) == 1, "invalid size of ATmega2560 ASSR_reg_t"); + + struct TWSR_reg_t { + uint8_t _TWPS0 : 1; + uint8_t _TWPS1 : 1; + uint8_t reserved1 : 1; + uint8_t _TWS3 : 1; + uint8_t _TWS4 : 1; + uint8_t _TWS5 : 1; + uint8_t _TWS6 : 1; + uint8_t _TWS7 : 1; + }; + static_assert(sizeof(TWSR_reg_t) == 1, "invalid size of ATmega2560 TWSR_reg_t"); + + struct TWAR_reg_t { + uint8_t _TWGCE : 1; + uint8_t _TWA : 7; + }; + static_assert(sizeof(TWAR_reg_t) == 1, "invalid size of ATmega2560 TWAR_reg_t"); + + struct TWCR_reg_t { + uint8_t _TWIE : 1; + uint8_t reserved1 : 1; + uint8_t _TWEN : 1; + uint8_t _TWWC : 1; + uint8_t _TWSTO : 1; + uint8_t _TWSTA : 1; + uint8_t _TWEA : 1; + uint8_t _TWINT : 1; + }; + static_assert(sizeof(TWCR_reg_t) == 1, "invalid size of ATmega2560 TWCR_reg_t"); + + struct TWAMR_reg_t { + uint8_t reserved1 : 1; + uint8_t _TWAM : 7; + }; + static_assert(sizeof(TWAMR_reg_t) == 1, "invalid size of ATmega2560 TWAMR_reg_t"); + + struct UBRRn_reg_t { + uint16_t _UBRR : 12; + uint16_t reserved1 : 4; + }; + static_assert(sizeof(UBRRn_reg_t) == 2, "invalid size of ATmega2560 UBRRn_reg_t)"); + + struct UCSRnC_reg_t { + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) + uint8_t _UCPOL : 1; + uint8_t _UCSZn0 : 1; + uint8_t _UCSZn1 : 1; + uint8_t _USBS : 1; + uint8_t _UPM : 2; + uint8_t _UMSEL : 2; + #elif defined(__AVR_TRM05__) + uint8_t _UCPOL : 1; + uint8_t _UCPHA : 1; + uint8_t _UDORD : 1; + uint8_t reserved1 : 3; + uint8_t _UMSEL : 2; + #endif + }; + static_assert(sizeof(UCSRnC_reg_t) == 1, "invalid size of ATmega2560 UCSRnC_reg_t"); + + struct UCSRnB_reg_t { + uint8_t _TXB8 : 1; + uint8_t _RXB8 : 1; + uint8_t _UCSZn2 : 1; + uint8_t _TXEN : 1; + uint8_t _RXEN : 1; + uint8_t _UDRIE : 1; + uint8_t _TXCIE : 1; + uint8_t _RXCIE : 1; + }; + static_assert(sizeof(UCSRnB_reg_t) == 1, "invalid size of ATmega2560 UCSRnB_reg_t"); + + struct UCSRnA_reg_t { + uint8_t _MPCM : 1; + uint8_t _U2X : 1; + uint8_t _UPE : 1; + uint8_t _DOR : 1; + uint8_t _FE : 1; + uint8_t _UDRE : 1; + uint8_t _TXC : 1; + uint8_t _RXC : 1; + }; + static_assert(sizeof(UCSRnA_reg_t) == 1, "invalid size of ATmega2560 UCSRnA_reg_t"); + + struct USART_dev_t { + UCSRnA_reg_t _UCSRnA; + UCSRnB_reg_t _UCSRnB; + UCSRnC_reg_t _UCSRnC; + uint8_t reserved1; + UBRRn_reg_t _UBRRn; + uint8_t _UDRn; + + inline void operator = ( const USART_dev_t& r ) volatile { + using namespace AVRHelpers; + dwrite(this->_UCSRnA, r._UCSRnA); + dwrite(this->_UCSRnB, r._UCSRnB); + dwrite(this->_UCSRnC, r._UCSRnC); + dwrite(this->reserved1, r.reserved1); + dwrite(this->_UBRRn, r._UBRRn); + dwrite(this->_UDRn, r._UDRn); + } + }; + static_assert(sizeof(USART_dev_t) == 7, "invalid size of ATmega2560 USART_dev_t"); + +#endif // __AVR_TRM01__ || __AVR_TRM02__ || __AVR_TRM03__ || __AVR_TRM04__ + +#ifdef __AVR_TRM04__ + + struct UHCON_reg_t { + uint8_t _SOFEN : 1; + uint8_t _RESET : 1; + uint8_t _RESUME : 1; + uint8_t reserved1 : 5; + }; + static_assert(sizeof(UHCON_reg_t) == 1, "invalid size of ATUSB90 UHCON_reg_t"); + + struct UHINT_reg_t { + uint8_t _DCONNI : 1; + uint8_t _DDISCI : 1; + uint8_t _RSTI : 1; + uint8_t _RSMEDI : 1; + uint8_t _RXRSMI : 1; + uint8_t _HSOFI : 1; + uint8_t _HWUPI : 1; + uint8_t reserved1 : 1; + }; + static_assert(sizeof(UHINT_reg_t) == 1, "invalid size of ATUSB90 UHINT_reg_t"); + + struct UHIEN_reg_t { + uint8_t _SUSPE : 1; + uint8_t _MSOFE : 1; + uint8_t _SOFE : 1; + uint8_t _EORSTE : 1; + uint8_t _WAKEUPE : 1; + uint8_t _EORSME : 1; + uint8_t _UPRSME : 1; + uint8_t reserved1 : 1; + }; + static_assert(sizeof(UHIEN_reg_t) == 1, "invalid size of ATUSB90 UHIEN_reg_t"); + + struct UHADDR_reg_t { + uint8_t _HADD : 7; + uint8_t reserved1 : 1; + }; + static_assert(sizeof(UHADDR_reg_t) == 1, "invalid size of ATUSB90 UHADDR_reg_t"); + + struct UHFNUM_reg_t { + uint16_t _FNUM : 11; + uint16_t reserved1 : 5; + }; + static_assert(sizeof(UHFNUM_reg_t) == 2, "invalid size of ATUSB90 UHFNUM_reg_t"); + + struct UPINTX_reg_t { + uint8_t _RXINI : 1; + uint8_t _RXSTALLI : 1; + uint8_t _TXOUTI : 1; + uint8_t _TXSTPI : 1; + uint8_t _PERRI : 1; + uint8_t _RWAL : 1; + uint8_t _NAKEDI : 1; + uint8_t _FIFOCON : 1; + }; + static_assert(sizeof(UPINTX_reg_t) == 1, "invalid size of ATUSB90 UPINTX_reg_t"); + + struct UPNUM_reg_t { + uint8_t _PNUM : 3; + uint8_t reserved1 : 5; + }; + static_assert(sizeof(UPNUM_reg_t) == 1, "invalid size of ATUSB90 UPNUM_reg_t"); + + struct UPRST_reg_t { + uint8_t _PRST : 7; + uint8_t reserved1 : 1; + }; + static_assert(sizeof(UPRST_reg_t) == 1, "invalid size of ATUSB90 UPRST_reg_t"); + + struct UPCONX_reg_t { + uint8_t _PEN : 1; + uint8_t reserved1 : 2; + uint8_t _RSTDT : 1; + uint8_t _AUTOSW : 1; + uint8_t _INMODE : 1; + uint8_t _PFREEZE : 1; + uint8_t reserved2 : 1; + }; + static_assert(sizeof(UPCONX_reg_t) == 1, "invalid size of ATUSB90 UPCONX_reg_t"); + + struct UPCFG0X_reg_t { + uint8_t _PEPNUM : 4; + uint8_t _PTOKEN : 2; + uint8_t _PTYPE : 2; + }; + static_assert(sizeof(UPCFG0X_reg_t) == 1, "invalid size of ATUSB90 UPCFG0_reg_t"); + + struct UPCFG1X_reg_t { + uint8_t reserved1 : 1; + uint8_t _ALLOC : 1; + uint8_t _PBK : 2; + uint8_t _PSIZE : 3; + uint8_t reserved2 : 1; + }; + static_assert(sizeof(UPCFG1X_reg_t) == 1, "invalid size of ATUSB90 UPCFG1X_reg_t"); + + struct UPSTAX_reg_t { + uint8_t _NBUSYBK : 2; + uint8_t _DTSEQ : 2; + uint8_t reserved1 : 1; + uint8_t _UNDERFI : 1; + uint8_t _OVERFI : 1; + uint8_t _CFGOK : 1; + }; + static_assert(sizeof(UPSTAX_reg_t) == 1, "invalid size of ATUSB90 UPSTAX_reg_t"); + + struct UPIENX_reg_t { + uint8_t _RXINE : 1; + uint8_t _RXSTALLE : 1; + uint8_t _TXOUTE : 1; + uint8_t _TXSTPE : 1; + uint8_t _PERRE : 1; + uint8_t reserved1 : 1; + uint8_t _NAKEDE : 1; + uint8_t _FLERRE : 1; + }; + static_assert(sizeof(UPIENX_reg_t) == 1, "invalid size of ATUSB90 UPIENX_reg_t"); + + struct UHWCON_reg_t { + uint8_t _UVREGE : 1; + uint8_t reserved1 : 3; + uint8_t _UVCONE : 1; + uint8_t reserved2 : 1; + uint8_t _UIDE : 1; + uint8_t _UIMOD : 1; + }; + static_assert(sizeof(UHWCON_reg_t) == 1, "invalid size of ATUSB90 UHWCON_reg_t"); + + struct USBCON_reg_t { + uint8_t _VBUSTE : 1; + uint8_t _IDTE : 1; + uint8_t reserved1 : 2; + uint8_t _OTGPADE : 1; + uint8_t _FRZCLK : 1; + uint8_t _HOST : 1; + uint8_t _USBE : 1; + }; + static_assert(sizeof(USBCON_reg_t) == 1, "invalid size of ATUSB90 USBCON_reg_t"); + + struct USBSTA_reg_t { + uint8_t _VBUS : 1; + uint8_t _ID : 1; + uint8_t reserved1 : 1; + uint8_t _SPEED : 1; + uint8_t reserved2 : 4; + }; + static_assert(sizeof(USBSTA_reg_t) == 1, "invalid size of ATUSB90 USBSTA_reg_t"); + + struct USBINT_reg_t { + uint8_t _VBUSTI : 1; + uint8_t _IDTI : 1; + uint8_t reserved1 : 6; + }; + static_assert(sizeof(USBINT_reg_t) == 1, "invalid size of ATUSB90 USBINT_reg_t"); + + struct UDPADD_reg_t { + uint16_t _DPADD : 11; + uint16_t reserved1 : 4; + uint16_t _DPACC : 1; + }; + static_assert(sizeof(UDPADD_reg_t) == 2, "invalid size of ATUSB90 UDPADD_reg_t"); + + struct OTGCON_reg_t { + uint8_t _VBUSRQC : 1; + uint8_t _VBUSREQ : 1; + uint8_t _VBUSHWC : 1; + uint8_t _SRPSEL : 1; + uint8_t _SRPREQ : 1; + uint8_t _HNPREQ : 1; + uint8_t reserved1 : 1; + uint8_t _zero : 1; + }; + static_assert(sizeof(OTGCON_reg_t) == 1, "invalid size of ATUSB90 OTGCON_reg_t"); + + struct OTGIEN_reg_t { + uint8_t _SRPE : 1; + uint8_t _VBERRE : 1; + uint8_t _BCERRE : 1; + uint8_t _ROLEEXE : 1; + uint8_t _HNPERRE : 1; + uint8_t _STOE : 1; + uint8_t reserved1 : 2; + }; + static_assert(sizeof(OTGIEN_reg_t) == 1, "invalid size of ATUSB90 OTGIEN_reg_t"); + + struct OTGINT_reg_t { + uint8_t _SRPI : 1; + uint8_t _VBERRI : 1; + uint8_t _BCERRI : 1; + uint8_t _ROLEEXI : 1; + uint8_t _HNPERRI : 1; + uint8_t _STOI : 1; + uint8_t reserved1 : 2; + }; + static_assert(sizeof(OTGINT_reg_t) == 1, "invalid size of ATUSB90 OTGINT_reg_t"); + + struct UDCON_reg_t { + uint8_t _DETACH : 1; + uint8_t _RMWKUP : 1; + uint8_t _LSM : 1; + uint8_t reserved1 : 5; + }; + static_assert(sizeof(UDCON_reg_t) == 1, "invalid size of ATUSB90 UDCON_reg_t"); + + struct UDINT_reg_t { + uint8_t _SUSPI : 1; + uint8_t _MSOFI : 1; + uint8_t _SOFI : 1; + uint8_t _EORSTI : 1; + uint8_t _WAKEUPI : 1; + uint8_t _EORSMI : 1; + uint8_t _UPRSMI : 1; + uint8_t reserved1 : 1; + }; + static_assert(sizeof(UDINT_reg_t) == 1, "invalid size of ATUSB90 UDINT_reg_t"); + + struct UDIEN_reg_t { + uint8_t _SUSPE : 1; + uint8_t _MSOFE : 1; + uint8_t _SOFE : 1; + uint8_t _EORSTE : 1; + uint8_t _WAKEUPE : 1; + uint8_t _EORSME : 1; + uint8_t _UPRSME : 1; + uint8_t reserved1 : 1; + }; + static_assert(sizeof(UDIEN_reg_t) == 1, "invalid size of ATUSB90 UDIEN_reg_t"); + + struct UDADDR_reg_t { + uint8_t _UADD : 7; + uint8_t _ADDEN : 1; + }; + static_assert(sizeof(UDADDR_reg_t) == 1, "invalid size of ATUSB90 UADDR_reg_t"); + + struct UDFNUM_reg_t { + uint16_t _FNUM : 11; + uint16_t reserved1 : 5; + }; + static_assert(sizeof(UDFNUM_reg_t) == 2, "invalid size of ATUSB90 UDFNUM_reg_t"); + + struct UDMFN_reg_t { + uint8_t reserved1 : 4; + uint8_t _FNCERR : 1; + uint8_t reserved2 : 3; + }; + static_assert(sizeof(UDMFN_reg_t) == 1, "invalid size of ATUSB90 UDMFN_reg_t"); + + struct UDTST_reg_t { + uint8_t reserved1 : 2; + uint8_t _TSTJ : 1; + uint8_t _TSTK : 1; + uint8_t _TSTPCKT : 1; + uint8_t _OPMODE2 : 1; + uint8_t reserved2 : 2; + }; + static_assert(sizeof(UDTST_reg_t) == 1, "invalid size of ATUSB90 UDTST_reg_t"); + + struct UEINTX_reg_t { + uint8_t _TXINI : 1; + uint8_t _STALLEDI : 1; + uint8_t _RXOUTI : 1; + uint8_t _RXSTPI : 1; + uint8_t _NAKOUTI : 1; + uint8_t _RWAL : 1; + uint8_t _NAKINI : 1; + uint8_t _FIFOCON : 1; + }; + static_assert(sizeof(UEINTX_reg_t) == 1, "invalid size of ATUSB90 UEINTX_reg_t"); + + struct UENUM_reg_t { + uint8_t _EPNUM : 3; + uint8_t reserved1 : 5; + }; + static_assert(sizeof(UENUM_reg_t) == 1, "invalid size of ATUSB90 UENUM_reg_t"); + + struct UERST_reg_t { + uint8_t _EPRST : 7; + uint8_t reserved1 : 1; + }; + static_assert(sizeof(UERST_reg_t) == 1, "invalid size of ATUSB90 UERST_reg_t"); + + struct UECONX_reg_t { + uint8_t _EPEN : 1; + uint8_t reserved1 : 2; + uint8_t _RSTDT : 1; + uint8_t _STALLRQC : 1; + uint8_t _STALLRQ : 1; + uint8_t reserved2 : 2; + }; + static_assert(sizeof(UECONX_reg_t) == 1, "invalid size of ATUSB90 UECONX_reg_t"); + + struct UECFG0X_reg_t { + uint8_t _EPDIR : 1; + uint8_t _NYETSDIS : 1; + uint8_t _AUTOSW : 1; + uint8_t _ISOSW : 1; + uint8_t reserved1 : 2; + uint8_t _EPTYPE : 2; + }; + static_assert(sizeof(UECFG0X_reg_t) == 1, "invalid size of ATUSB90 UECFG0X_reg_t"); + + struct UECFG1X_reg_t { + uint8_t reserved1 : 1; + uint8_t _ALLOC : 1; + uint8_t _EPBK : 2; + uint8_t _EPSIZE : 3; + uint8_t reserved2 : 1; + }; + static_assert(sizeof(UECFG1X_reg_t) == 1, "invalid size of ATUSB90 UECFG1X_reg_t"); + + struct UESTA0X_reg_t { + uint8_t _NBUSYBK : 2; + uint8_t _DTSEQ : 2; + uint8_t _ZLPSEEN : 1; + uint8_t _UNDERFI : 1; + uint8_t _OVERFI : 1; + uint8_t _CFGOK : 1; + }; + static_assert(sizeof(UESTA0X_reg_t) == 1, "invalid size of ATUSB90 UESTA0X_reg_t"); + + struct UESTA1X_reg_t { + uint8_t _CURRBK : 2; + uint8_t _CTRLDIR : 1; + uint8_t reserved1 : 5; + }; + static_assert(sizeof(UESTA1X_reg_t) == 1, "invalid size of ATUSB90 UESTA1X_reg_t"); + + struct UEIENX_reg_t { + uint8_t _TXINE : 1; + uint8_t _STALLEDE : 1; + uint8_t _RXOUTE : 1; + uint8_t _RXSTPE : 1; + uint8_t _NAKOUTE : 1; + uint8_t reserved1 : 1; + uint8_t _NAKINE : 1; + uint8_t _FLERRE : 1; + }; + static_assert(sizeof(UEIENX_reg_t) == 1, "invalid size of ATUSB90 UEIENX_reg_t"); + + struct UEBCX_reg_t { + uint16_t _BYCT : 11; + uint16_t reserved1 : 5; + }; + static_assert(sizeof(UEBCX_reg_t) == 2, "invalid size of ATUSB90 UEBCX_reg_t"); + + struct UEINT_reg_t { + uint8_t _EPINT : 7; + uint8_t reserved1 : 1; + }; + static_assert(sizeof(UEINT_reg_t) == 1, "invalid size of ATUSB90 UEINT_reg_t"); + + struct UPERRX_reg_t { + uint8_t _DATATGL : 1; + uint8_t _DATAPID : 1; + uint8_t _PID : 1; + uint8_t _TIMEOUT : 1; + uint8_t _CRC16 : 1; + uint8_t _COUNTER : 2; + uint8_t reserved1 : 1; + }; + static_assert(sizeof(UPERRX_reg_t) == 1, "invalid size of ATUSB90 UPERRX_reg_t"); + + struct UPBCX_reg_t { + uint16_t _PBYCT : 11; + uint16_t reserved1 : 5; + }; + static_assert(sizeof(UPBCX_reg_t) == 2, "invalid size of ATUSB90 UPBCX_reg_t"); + + struct OTGTCON_reg_t { + uint8_t _VALUE : 2; + uint8_t reserved1 : 3; + uint8_t _PAGE : 2; + uint8_t _one : 1; + }; + static_assert(sizeof(OTGTCON_reg_t) == 1, "invalid size of ATUSB90 OTGTCON_reg_t"); + + struct PLLCSR_reg_t { + uint8_t _PLOCK : 1; + uint8_t _PLLE : 1; + uint8_t _PLLP : 3; + uint8_t reserved1 : 3; + }; + static_assert(sizeof(PLLCSR_reg_t) == 1, "invalid size of ATUSB90 PLLCSR_reg_t"); + +#endif // __AVR_TRM04__ + +/** + * REGISTER MEMORY MAP + */ + +#define __AVR_DEFREG(tn,n,a) static volatile tn& n = *(tn*)a +#define _AVR_DEFREG(n,a) __AVR_DEFREG(n##_reg_t, _##n, a) + +#ifdef __AVR_TRM01__ + // page 399ff of ATmega640-1280-1281-2560-2561-Datasheet-DS40002211A.pdf + + __AVR_DEFREG(PORT_dev_t, _PORTA, 0x20); + __AVR_DEFREG(PORT_dev_t, _PORTB, 0x23); + __AVR_DEFREG(PORT_dev_t, _PORTC, 0x26); + __AVR_DEFREG(PORT_dev_t, _PORTD, 0x29); + __AVR_DEFREG(PORT_dev_t, _PORTE, 0x2C); + __AVR_DEFREG(PORT_dev_t, _PORTF, 0x2F); + __AVR_DEFREG(PORTG_dev_t, _PORTG, 0x32); + __AVR_DEFREG(PORT_dev_t, _PORTH, 0x100); + __AVR_DEFREG(PORT_dev_t, _PORTJ, 0x103); + __AVR_DEFREG(PORT_dev_t, _PORTK, 0x106); + __AVR_DEFREG(PORT_dev_t, _PORTL, 0x109); + __AVR_DEFREG(TIFR0_reg_t, _TIFR0, 0x35); + __AVR_DEFREG(TIFR1_reg_t, _TIFR1, 0x36); + __AVR_DEFREG(TIFR2_reg_t, _TIFR2, 0x37); + __AVR_DEFREG(TIFR3_reg_t, _TIFR3, 0x38); + __AVR_DEFREG(TIFR4_reg_t, _TIFR4, 0x39); + __AVR_DEFREG(TIFR5_reg_t, _TIFR5, 0x3A); + __AVR_DEFREG(PCIFR_reg_t, _PCIFR, 0x3B); + __AVR_DEFREG(EIFR_reg_t, _EIFR, 0x3C); + __AVR_DEFREG(EIMSK_reg_t, _EIMSK, 0x3D); + __AVR_DEFREG(_bit_reg_t, _GPIOR0, 0x3E); + __AVR_DEFREG(EECR_reg_t, _EECR, 0x3F); + __AVR_DEFREG(uint8_t, _EEDR, 0x40); + __AVR_DEFREG(EEAR_reg_t, _EEAR, 0x41); + __AVR_DEFREG(GTCCR_reg_t, _GTCCR, 0x43); + __AVR_DEFREG(TIMER_8bit_dev_t, TIMER0, 0x44); + __AVR_DEFREG(_bit_reg_t, _GPIOR1, 0x4A); + __AVR_DEFREG(_bit_reg_t, _GPIOR2, 0x4B); + __AVR_DEFREG(SPCR_reg_t, _SPCR, 0x4C); + __AVR_DEFREG(SPSR_reg_t, _SPSR, 0x4D); + __AVR_DEFREG(uint8_t, _SPDR, 0x4E); + __AVR_DEFREG(ACSR_reg_t, _ACSR, 0x50); + __AVR_DEFREG(_bit_reg_t, _OCDR, 0x51); + __AVR_DEFREG(SMCR_reg_t, _SMCR, 0x53); + __AVR_DEFREG(MCUSR_reg_t, _MCUSR, 0x54); + __AVR_DEFREG(MCUCR_reg_t, _MCUCR, 0x55); + __AVR_DEFREG(SPMCSR_reg_t, _SPMCSR, 0x57); + __AVR_DEFREG(RAMPZ_reg_t, _RAMPZ, 0x5B); + __AVR_DEFREG(EIND_reg_t, _EIND, 0x5C); + __AVR_DEFREG(SP_reg_t, _SP, 0x5D); + __AVR_DEFREG(SREG_reg_t, _SREG, 0x5F); + __AVR_DEFREG(WDTCSR_reg_t, _WDTCSR, 0x60); + __AVR_DEFREG(CLKPR_reg_t, _CLKPR, 0x61); + __AVR_DEFREG(PRR0_reg_t, _PRR0, 0x64); + __AVR_DEFREG(PRR1_reg_t, _PRR1, 0x65); + __AVR_DEFREG(uint8_t, _OSCCAL, 0x66); + __AVR_DEFREG(PCICR_reg_t, _PCICR, 0x68); + __AVR_DEFREG(EICRA_reg_t, _EICRA, 0x69); + __AVR_DEFREG(EICRB_reg_t, _EICRB, 0x6A); + __AVR_DEFREG(_bit_reg_t, _PCMSK0, 0x6B); + __AVR_DEFREG(_bit_reg_t, _PCMSK1, 0x6C); + __AVR_DEFREG(_bit_reg_t, _PCMSK2, 0x6D); + __AVR_DEFREG(TIMSK0_reg_t, _TIMSK0, 0x6E); + __AVR_DEFREG(TIMSK1_reg_t, _TIMSK1, 0x6F); + __AVR_DEFREG(TIMSK2_reg_t, _TIMSK2, 0x70); + __AVR_DEFREG(TIMSK3_reg_t, _TIMSK3, 0x71); + __AVR_DEFREG(TIMSK4_reg_t, _TIMSK4, 0x72); + __AVR_DEFREG(TIMSK5_reg_t, _TIMSK5, 0x73); + __AVR_DEFREG(XMCRA_reg_t, _XMCRA, 0x74); + __AVR_DEFREG(XMCRB_reg_t, _XMCRB, 0x75); + __AVR_DEFREG(uint16_t, _ADC, 0x78); + __AVR_DEFREG(ADCSRA_reg_t, _ADCSRA, 0x7A); + __AVR_DEFREG(ADCSRB_reg_t, _ADCSRB, 0x7B); + __AVR_DEFREG(ADMUX_reg_t, _ADMUX, 0x7C); + __AVR_DEFREG(DIDR2_reg_t, _DIDR2, 0x7D); + __AVR_DEFREG(DIDR0_reg_t, _DIDR0, 0x7E); + __AVR_DEFREG(DIDR1_reg_t, _DIDR1, 0x7F); + __AVR_DEFREG(TIMER_dev_t, TIMER1, 0x80); + __AVR_DEFREG(TIMER_dev_t, TIMER3, 0x90); + __AVR_DEFREG(TIMER_dev_t, TIMER4, 0xA0); + __AVR_DEFREG(TIMER_dev_t, TIMER5, 0x120); + __AVR_DEFREG(TIMER_8bit_dev_t, _TIMER2, 0xB0); + __AVR_DEFREG(ASSR_reg_t, _ASSR, 0xB6); + __AVR_DEFREG(uint8_t, _TWBR, 0xB8); + __AVR_DEFREG(TWSR_reg_t, _TWSR, 0xB9); + __AVR_DEFREG(TWAR_reg_t, _TWAR, 0xBA); + __AVR_DEFREG(uint8_t, _TWDR, 0xBB); + __AVR_DEFREG(TWCR_reg_t, _TWCR, 0xBC); + __AVR_DEFREG(TWAMR_reg_t, _TWAMR, 0xBD); + __AVR_DEFREG(USART_dev_t, USART0, 0xC0); + __AVR_DEFREG(USART_dev_t, USART1, 0xC8); + __AVR_DEFREG(USART_dev_t, USART2, 0xD0); + __AVR_DEFREG(USART_dev_t, USART3, 0x130); + +#elif defined(__AVR_TRM02__) + // page 637ff of ATmega164A_PA-324A_PA-644A_PA-1284_P_Data-Sheet-40002070B.pdf + __AVR_DEFREG(PORT_dev_t, _PORTA, 0x20); + __AVR_DEFREG(PORT_dev_t, _PORTB, 0x23); + __AVR_DEFREG(PORT_dev_t, _PORTC, 0x26); + __AVR_DEFREG(PORT_dev_t, _PORTD, 0x29); + __AVR_DEFREG(TIFR0_reg_t, _TIFR0, 0x35); + __AVR_DEFREG(TIFR1_reg_t, _TIFR1, 0x36); + __AVR_DEFREG(TIFR2_reg_t, _TIFR2, 0x37); + __AVR_DEFREG(TIFR3_reg_t, _TIFR3, 0x38); + __AVR_DEFREG(PCIFR_reg_t, _PCIFR, 0x3B); + __AVR_DEFREG(EIFR_reg_t, _EIFR, 0x3C); + __AVR_DEFREG(EIMSK_reg_t, _EIMSK, 0x3D); + __AVR_DEFREG(_bit_reg_t, _GPIOR0, 0x3E); + __AVR_DEFREG(EECR_reg_t, _EECR, 0x3F); + __AVR_DEFREG(uint8_t, _EEDR, 0x40); + __AVR_DEFREG(EEAR_reg_t, _EEAR, 0x41); + __AVR_DEFREG(GTCCR_reg_t, _GTCCR, 0x43); + __AVR_DEFREG(TIMER_8bit_dev_t, TIMER0, 0x44); + __AVR_DEFREG(_bit_reg_t, _GPIOR1, 0x4A); + __AVR_DEFREG(_bit_reg_t, _GPIOR2, 0x4B); + __AVR_DEFREG(SPCR_reg_t, _SPCR, 0x4C); + __AVR_DEFREG(SPSR_reg_t, _SPSR, 0x4D); + __AVR_DEFREG(uint8_t, _SPDR, 0x4E); + __AVR_DEFREG(ACSR_reg_t, _ACSR, 0x50); + __AVR_DEFREG(SMCR_reg_t, _SMCR, 0x53); + __AVR_DEFREG(MCUSR_reg_t, _MSUSR, 0x54); + __AVR_DEFREG(MCUCR_reg_t, _MCUCR, 0x55); + __AVR_DEFREG(SPMCSR_reg_t, _SPMCSR, 0x57); + __AVR_DEFREG(SP_reg_t, _SP, 0x5D); + __AVR_DEFREG(SREG_reg_t, _SREG, 0x5F); + __AVR_DEFREG(WDTCSR_reg_t, _WDTCSR, 0x60); + __AVR_DEFREG(CLKPR_reg_t, _CLKPR, 0x61); + __AVR_DEFREG(PRR0_reg_t, _PRR0, 0x64); + __AVR_DEFREG(PRR1_reg_t, _PRR1, 0x65); + __AVR_DEFREG(uint8_t, _OSCCAL, 0x66); + __AVR_DEFREG(PCICR_reg_t, _PCICR, 0x68); + __AVR_DEFREG(EICRA_reg_t, _EICRA, 0x69); + __AVR_DEFREG(_bit_reg_t, _PCMSK0, 0x6B); + __AVR_DEFREG(_bit_reg_t, _PCMSK1, 0x6C); + __AVR_DEFREG(_bit_reg_t, _PCMSK2, 0x6D); + __AVR_DEFREG(TIMSK0_reg_t, _TIMSK0, 0x6E); + __AVR_DEFREG(TIMSK1_reg_t, _TIMSK1, 0x6F); + __AVR_DEFREG(TIMSK2_reg_t, _TIMSK2, 0x70); + __AVR_DEFREG(TIMSK3_reg_t, _TIMSK3, 0x71); + __AVR_DEFREG(_bit_reg_t, _PCMSK3, 0x73); + __AVR_DEFREG(uint16_t, _ADC, 0x78); + __AVR_DEFREG(ADCSRA_reg_t, _ADCSRA, 0x7A); + __AVR_DEFREG(ADCSRB_reg_t, _ADCSRB, 0x7B); + __AVR_DEFREG(ADMUX_reg_t, _ADMUX, 0x7C); + __AVR_DEFREG(DIDR0_reg_t, _DIDR0, 0x7E); + __AVR_DEFREG(DIDR1_reg_t, _DIDR1, 0x7F); + __AVR_DEFREG(TIMER_dev_t, TIMER1, 0x80); + __AVR_DEFREG(TIMER_dev_t, TIMER3, 0x90); + __AVR_DEFREG(TIMER_8bit_dev_t, _TIMER2, 0xB0); + __AVR_DEFREG(ASSR_reg_t, _ASSR, 0xB6); + __AVR_DEFREG(uint8_t, _TWBR, 0xB8); + __AVR_DEFREG(TWSR_reg_t, _TWSR, 0xB9); + __AVR_DEFREG(TWAR_reg_t, _TWAR, 0xBA); + __AVR_DEFREG(uint8_t, _TWDR, 0xBB); + __AVR_DEFREG(TWCR_reg_t, _TWCR, 0xBC); + __AVR_DEFREG(TWAMR_reg_t, _TWAMR, 0xBD); + __AVR_DEFREG(USART_dev_t, USART0, 0xC0); + __AVR_DEFREG(USART_dev_t, USART1, 0xC8); + +#elif defined(__AVR_TRM03__) + // page 621ff of ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061B.pdf + __AVR_DEFREG(PORT_dev_t, _PORTB, 0x23); + __AVR_DEFREG(PORTC_dev_t, _PORTC, 0x26); + __AVR_DEFREG(PORT_dev_t, _PORTD, 0x29); + __AVR_DEFREG(TIFR0_reg_t, _TIFR0, 0x35); + __AVR_DEFREG(TIFR1_reg_t, _TIFR1, 0x36); + __AVR_DEFREG(TIFR2_reg_t, _TIFR2, 0x37); + __AVR_DEFREG(PCIFR_reg_t, _PCIFR, 0x3B); + __AVR_DEFREG(EIFR_reg_t, _EIFR, 0x3C); + __AVR_DEFREG(EIMSK_reg_t, _EIMSK, 0x3D); + __AVR_DEFREG(_bit_reg_t, _GPIOR0, 0x3E); + __AVR_DEFREG(EECR_reg_t, _EECR, 0x3F); + __AVR_DEFREG(uint8_t, _EEDR, 0x40); + __AVR_DEFREG(EEAR_reg_t, _EEAR, 0x41); + __AVR_DEFREG(GTCCR_reg_t, _GTCCR, 0x43); + __AVR_DEFREG(TIMER_8bit_dev_t, TIMER0, 0x44); + __AVR_DEFREG(_bit_reg_t, _GPIOR1, 0x4A); + __AVR_DEFREG(_bit_reg_t, _GPIOR2, 0x4B); + __AVR_DEFREG(SPCR_reg_t, _SPCR, 0x4C); + __AVR_DEFREG(SPSR_reg_t, _SPSR, 0x4D); + __AVR_DEFREG(uint8_t, _SPDR, 0x4E); + __AVR_DEFREG(ACSR_reg_t, _ACSR, 0x50); + __AVR_DEFREG(SMCR_reg_t, _SMCR, 0x53); + __AVR_DEFREG(MCUSR_reg_t, _MSUCR, 0x54); + __AVR_DEFREG(MCUCR_reg_t, _MCUCR, 0x55); + __AVR_DEFREG(SPMCSR_reg_t, _SPMCSR, 0x57); + __AVR_DEFREG(SP_reg_t, _SP, 0x5D); + __AVR_DEFREG(SREG_reg_t, _SREG, 0x5F); + __AVR_DEFREG(WDTCSR_reg_t, _WDTCSR, 0x60); + __AVR_DEFREG(CLKPR_reg_t, _CLKPR, 0x61); + __AVR_DEFREG(PRR0_reg_t, _PRR0, 0x64); + __AVR_DEFREG(uint8_t, _OSCCAL, 0x66); + __AVR_DEFREG(PCICR_reg_t, _PCICR, 0x68); + __AVR_DEFREG(EICRA_reg_t, _EICRA, 0x69); + __AVR_DEFREG(_bit_reg_t, _PCMSK0, 0x6B); + __AVR_DEFREG(_bitPCMSK1_reg_t, _PCMSK1, 0x6C); + __AVR_DEFREG(_bit_reg_t, _PCMSK2, 0x6D); + __AVR_DEFREG(TIMSK0_reg_t, _TIMSK0, 0x6E); + __AVR_DEFREG(TIMSK1_reg_t, _TIMSK1, 0x6F); + __AVR_DEFREG(TIMSK2_reg_t, _TIMSK2, 0x70); + __AVR_DEFREG(uint16_t, _ADC, 0x78); + __AVR_DEFREG(ADCSRA_reg_t, _ADCSRA, 0x7A); + __AVR_DEFREG(ADCSRB_reg_t, _ADCSRB, 0x7B); + __AVR_DEFREG(ADMUX_reg_t, _ADMUX, 0x7C); + __AVR_DEFREG(DIDR0_reg_t, _DIDR0, 0x7E); + __AVR_DEFREG(DIDR1_reg_t, _DIDR1, 0x7F); + __AVR_DEFREG(TIMER_dev_t, TIMER1, 0x80); + __AVR_DEFREG(TIMER_8bit_dev_t, _TIMER2, 0xB0); + __AVR_DEFREG(ASSR_reg_t, _ASSR, 0xB6); + __AVR_DEFREG(uint8_t, _TWBR, 0xB8); + __AVR_DEFREG(TWSR_reg_t, _TWSR, 0xB9); + __AVR_DEFREG(TWAR_reg_t, _TWAR, 0xBA); + __AVR_DEFREG(uint8_t, _TWDR, 0xBB); + __AVR_DEFREG(TWCR_reg_t, _TWCR, 0xBC); + __AVR_DEFREG(TWAMR_reg_t, _TWAMR, 0xBD); + __AVR_DEFREG(USART_dev_t, USART0, 0xC0); + +#elif defined(__AVR_TRM04__) + __AVR_DEFREG(PORT_dev_t, _PORTA, 0x20); + __AVR_DEFREG(PORT_dev_t, _PORTB, 0x23); + __AVR_DEFREG(PORT_dev_t, _PORTC, 0x26); + __AVR_DEFREG(PORT_dev_t, _PORTD, 0x29); + __AVR_DEFREG(PORT_dev_t, _PORTE, 0x2C); + __AVR_DEFREG(PORT_dev_t, _PORTF, 0x2F); + __AVR_DEFREG(TIFR0_reg_t, _TIFR0, 0x35); + __AVR_DEFREG(TIFR1_reg_t, _TIFR1, 0x36); + __AVR_DEFREG(TIFR2_reg_t, _TIFR2, 0x37); + __AVR_DEFREG(TIFR3_reg_t, _TIFR3, 0x38); + __AVR_DEFREG(PCIFR_reg_t, _PCIFR, 0x3B); + __AVR_DEFREG(EIFR_reg_t, _EIFR, 0x3C); + __AVR_DEFREG(EIMSK_reg_t, _EIMSK, 0x3D); + __AVR_DEFREG(_bit_reg_t, _GPIOR0, 0x3E); + __AVR_DEFREG(EECR_reg_t, _EECR, 0x3F); + __AVR_DEFREG(uint8_t, _EEDR, 0x40); + __AVR_DEFREG(EEAR_reg_t, _EEAR, 0x41); + __AVR_DEFREG(GTCCR_reg_t, _GTCCR, 0x43); + __AVR_DEFREG(TIMER_8bit_dev_t, TIMER0, 0x44); + __AVR_DEFREG(PLLCSR_reg_t, _PLLCSR, 0x49); + __AVR_DEFREG(_bit_reg_t, _GPIOR1, 0x4A); + __AVR_DEFREG(_bit_reg_t, _GPIOR2, 0x4B); + __AVR_DEFREG(SPCR_reg_t, _SPCR, 0x4C); + __AVR_DEFREG(SPSR_reg_t, _SPSR, 0x4D); + __AVR_DEFREG(uint8_t, _SPDR, 0x4E); + __AVR_DEFREG(ACSR_reg_t, _ACSR, 0x50); + __AVR_DEFREG(uint8_t, _OCDR, 0x51); + __AVR_DEFREG(SMCR_reg_t, _SMCR, 0x53); + __AVR_DEFREG(MCUSR_reg_t, _MCUSR, 0x54); + __AVR_DEFREG(MCUCR_reg_t, _MCUCR, 0x55); + __AVR_DEFREG(SPMCSR_reg_t, _SPMCSR, 0x57); + __AVR_DEFREG(RAMPZ_reg_t, _RAMPZ, 0x5B); + __AVR_DEFREG(SP_reg_t, _SP, 0x5D); + __AVR_DEFREG(SREG_reg_t, _SREG, 0x5F); + __AVR_DEFREG(WDTCSR_reg_t, _WDTCSR, 0x60); + __AVR_DEFREG(CLKPR_reg_t, _CLKPR, 0x61); + __AVR_DEFREG(PRR0_reg_t, _PRR0, 0x64); + __AVR_DEFREG(PRR1_reg_t, _PRR1, 0x65); + __AVR_DEFREG(uint8_t, _OSCCAL, 0x66); + __AVR_DEFREG(PCICR_reg_t, _PCICR, 0x68); + __AVR_DEFREG(EICRA_reg_t, _EICRA, 0x69); + __AVR_DEFREG(EICRB_reg_t, _EICRB, 0x6A); + __AVR_DEFREG(_bit_reg_t, _PCMSK0, 0x6B); + __AVR_DEFREG(TIMSK0_reg_t, _TIMSK0, 0x6E); + __AVR_DEFREG(TIMSK1_reg_t, _TIMSK1, 0x6F); + __AVR_DEFREG(TIMSK2_reg_t, _TIMSK2, 0x70); + __AVR_DEFREG(TIMSK3_reg_t, _TIMSK3, 0x71); + __AVR_DEFREG(XMCRA_reg_t, _XMCRA, 0x74); + __AVR_DEFREG(XMCRB_reg_t, _XMCRB, 0x75); + __AVR_DEFREG(uint16_t, _ADC, 0x78); + __AVR_DEFREG(ADCSRA_reg_t, _ADCSRA, 0x7A); + __AVR_DEFREG(ADCSRB_reg_t, _ADCSRB, 0x7B); + __AVR_DEFREG(ADMUX_reg_t, _ADMUX, 0x7C); + __AVR_DEFREG(DIDR0_reg_t, _DIDR0, 0x7E); + __AVR_DEFREG(DIDR1_reg_t, _DIDR1, 0x7F); + __AVR_DEFREG(TIMER_dev_t, TIMER1, 0x80); + __AVR_DEFREG(TIMER_dev_t, TIMER3, 0x90); + __AVR_DEFREG(UHCON_reg_t, _UHCON, 0x9E); + __AVR_DEFREG(UHINT_reg_t, _UHINT, 0x9F); + __AVR_DEFREG(UHIEN_reg_t, _UHIEN, 0xA0); + __AVR_DEFREG(UHADDR_reg_t, _UHADDR, 0xA1); + __AVR_DEFREG(UHFNUM_reg_t, _UHFNUM, 0xA2); + __AVR_DEFREG(uint8_t, _UHFLEN, 0xA4); + __AVR_DEFREG(uint8_t, _UPINRQX, 0xA5); + __AVR_DEFREG(UPINTX_reg_t, _UPINTX, 0xA6); + __AVR_DEFREG(UPNUM_reg_t, _UPNUM, 0xA7); + __AVR_DEFREG(UPRST_reg_t, _UPRST, 0xA8); + __AVR_DEFREG(UPCONX_reg_t, _UPCONX, 0xA9); + _AVR_DEFREG(UPCFG0X, 0xAA); + _AVR_DEFREG(UPCFG1X, 0xAB); + _AVR_DEFREG(UPSTAX, 0xAC); + __AVR_DEFREG(uint8_t, _UPCFG2X, 0xAD); + _AVR_DEFREG(UPIENX, 0xAE); + __AVR_DEFREG(uint8_t, _UPDATX, 0xAF); + __AVR_DEFREG(TIMER_8bit_dev_t, _TIMER2, 0xB0); + __AVR_DEFREG(ASSR_reg_t, _ASSR, 0xB6); + __AVR_DEFREG(uint8_t, _TWBR, 0xB8); + __AVR_DEFREG(TWSR_reg_t, _TWSR, 0xB9); + __AVR_DEFREG(TWAR_reg_t, _TWAR, 0xBA); + __AVR_DEFREG(uint8_t, _TWDR, 0xBB); + __AVR_DEFREG(TWCR_reg_t, _TWCR, 0xBC); + __AVR_DEFREG(TWAMR_reg_t, _TWAMR, 0xBD); + __AVR_DEFREG(USART_dev_t, USART1, 0xC8); + _AVR_DEFREG(UHWCON, 0xD7); + _AVR_DEFREG(USBCON, 0xD8); + _AVR_DEFREG(USBSTA, 0xD9); + _AVR_DEFREG(USBINT, 0xDA); + _AVR_DEFREG(UDPADD, 0xDB); + _AVR_DEFREG(OTGCON, 0xDD); + _AVR_DEFREG(OTGIEN, 0xDE); + _AVR_DEFREG(OTGINT, 0xDF); + _AVR_DEFREG(UDCON, 0xE0); + _AVR_DEFREG(UDINT, 0xE1); + _AVR_DEFREG(UDIEN, 0xE2); + _AVR_DEFREG(UDADDR, 0xE3); + _AVR_DEFREG(UDFNUM, 0xE4); + _AVR_DEFREG(UDMFN, 0xE6); + _AVR_DEFREG(UDTST, 0xE7); + _AVR_DEFREG(UEINTX, 0xE8); + _AVR_DEFREG(UENUM, 0xE9); + _AVR_DEFREG(UERST, 0xEA); + _AVR_DEFREG(UECONX, 0xEB); + _AVR_DEFREG(UECFG0X, 0xEC); + _AVR_DEFREG(UECFG1X, 0xED); + _AVR_DEFREG(UESTA0X, 0xEE); + _AVR_DEFREG(UESTA1X, 0xEF); + _AVR_DEFREG(UEIENX, 0xF0); + __AVR_DEFREG(uint8_t, _UEDATx, 0xF1); + _AVR_DEFREG(UEBCX, 0xF2); + _AVR_DEFREG(UEINT, 0xF4); + _AVR_DEFREG(UPERRX, 0xF5); + _AVR_DEFREG(UPBCX, 0xF6); + __AVR_DEFREG(uint8_t, _UPINT, 0xF8); + _AVR_DEFREG(OTGTCON, 0xF9); +#elif defined(__AVR_TRM05__) + // page 476ff. of ATmega164P-324P-644P-Data-Sheet-40002071A.pdf + __AVR_DEFREG(PORT_dev_t, _PORTA, 0x20); + __AVR_DEFREG(PORT_dev_t, _PORTB, 0x23); + __AVR_DEFREG(PORT_dev_t, _PORTC, 0x26); + __AVR_DEFREG(PORT_dev_t, _PORTD, 0x29); + __AVR_DEFREG(TIFR0_reg_t, _TIFR0, 0x35); + __AVR_DEFREG(TIFR1_reg_t, _TIFR1, 0x36); + __AVR_DEFREG(TIFR2_reg_t, _TIFR2, 0x37); + __AVR_DEFREG(PCIFR_reg_t, _PCIFR, 0x3B); + __AVR_DEFREG(EIFR_reg_t, _EIFR, 0x3C); + __AVR_DEFREG(EIMSK_reg_t, _EIMSK, 0x3D); + __AVR_DEFREG(_bit_reg_t, _GPIOR0, 0x3E); + __AVR_DEFREG(EECR_reg_t, _EECR, 0x3F); + __AVR_DEFREG(uint8_t, _EEDR, 0x40); + __AVR_DEFREG(EEAR_reg_t, _EEAR, 0x41); + __AVR_DEFREG(GTCCR_reg_t, _GTCCR, 0x43); + __AVR_DEFREG(TIMER_8bit_dev_t, TIMER0, 0x44); + __AVR_DEFREG(_bit_reg_t, _GPIOR1, 0x4A); + __AVR_DEFREG(_bit_reg_t, _GPIOR2, 0x4B); + __AVR_DEFREG(SPCR_reg_t, _SPCR, 0x4C); + __AVR_DEFREG(SPSR_reg_t, _SPSR, 0x4D); + __AVR_DEFREG(uint8_t, _SPDR, 0x4E); + __AVR_DEFREG(ACSR_reg_t, _ACSR, 0x50); + __AVR_DEFREG(uint8_t, _OCDR, 0x51); + __AVR_DEFREG(SMCR_reg_t, _SMCR, 0x53); + __AVR_DEFREG(MCUSR_reg_t, _MCUSR, 0x54); + __AVR_DEFREG(MCUCR_reg_t, _MCUCR, 0x55); + __AVR_DEFREG(SPMCSR_reg_t, _SPMCSR, 0x57); + __AVR_DEFREG(RAMPZ_reg_t, _RAMPZ, 0x5B); + __AVR_DEFREG(SP_reg_t, _SP, 0x5D); + __AVR_DEFREG(SREG_reg_t, _SREG, 0x5F); + __AVR_DEFREG(WDTCSR_reg_t, _WDTCSR, 0x60); + __AVR_DEFREG(CLKPR_reg_t, _CLKPR, 0x61); + __AVR_DEFREG(PRR0_reg_t, _PRR0, 0x64); + __AVR_DEFREG(uint8_t, _OSCCAL, 0x66); + __AVR_DEFREG(PCICR_reg_t, _PCICR, 0x68); + __AVR_DEFREG(EICRA_reg_t, _EICRA, 0x69); + __AVR_DEFREG(_bit_reg_t, _PCMSK0, 0x6B); + __AVR_DEFREG(_bit_reg_t, _PCMSK1, 0x6C); + __AVR_DEFREG(_bit_reg_t, _PCMSK2, 0x6D); + __AVR_DEFREG(TIMSK0_reg_t, _TIMSK0, 0x6E); + __AVR_DEFREG(TIMSK1_reg_t, _TIMSK1, 0x6F); + __AVR_DEFREG(TIMSK2_reg_t, _TIMSK2, 0x70); + __AVR_DEFREG(_bit_reg_t, _PCMKS3, 0x73); + __AVR_DEFREG(uint16_t, _ADC, 0x78); + __AVR_DEFREG(ADCSRA_reg_t, _ADCSRA, 0x7A); + __AVR_DEFREG(ADCSRB_reg_t, _ADCSRB, 0x7B); + __AVR_DEFREG(ADMUX_reg_t, _ADMUX, 0x7C); + __AVR_DEFREG(DIDR0_reg_t, _DIDR0, 0x7E); + __AVR_DEFREG(DIDR1_reg_t, _DIDR1, 0x7F); + __AVR_DEFREG(TIMER_dev_t, TIMER1, 0x80); + __AVR_DEFREG(TIMER_8bit_dev_t, _TIMER2, 0xB0); + __AVR_DEFREG(ASSR_reg_t, _ASSR, 0xB6); + __AVR_DEFREG(uint8_t, _TWBR, 0xB8); + __AVR_DEFREG(TWSR_reg_t, _TWSR, 0xB8); + __AVR_DEFREG(TWAR_reg_t, _TWAR, 0xBA); + __AVR_DEFREG(uint8_t, _TWDR, 0xBB); + __AVR_DEFREG(TWCR_reg_t, _TWCR, 0xBC); + __AVR_DEFREG(TWAMR_reg_t, _TWAMR, 0xBD); + __AVR_DEFREG(USART_dev_t, USART0, 0xC0); + __AVR_DEFREG(USART_dev_t, USART1, 0xC8); +#endif + +inline void _ATmega_resetperipherals() { + using namespace AVRHelpers; + + // Due to BOOTLOADER or other board inconsistencies we could get launched into Marlin FW + // with configuration that does not match the reset state in the documentation. That is why + // we should clean-reset the entire device. + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + SREG_reg_t __SREG; + __SREG._C = false; + __SREG._Z = false; + __SREG._N = false; + __SREG._V = false; + __SREG._S = false; + __SREG._H = false; + __SREG._T = false; + __SREG._I = false; + dwrite(_SREG, __SREG); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + _RAMPZ._RAMPZ = 0; + #endif + #ifdef __AVR_TRM01__ + _EIND._EIND0 = false; + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM05__) + _EEAR._EEAR = 0; + dwrite(_EEDR, (uint8_t)0u); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + EECR_reg_t __EECR; + __EECR._EERE = false; + __EECR._EEPE = false; + __EECR._EEMPE = false; + __EECR._EERIE = false; + __EECR._EEPM0 = 0; + __EECR._EEPM1 = 0; + __EECR.reserved1 = 0; + dwrite(_EECR, __EECR); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + _GPIOR2.val = 0; + _GPIOR1.val = 0; + _GPIOR0.val = 0; + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + XMCRA_reg_t __XMCRA; + __XMCRA._SRW0 = 0; + __XMCRA._SRW1 = 0; + __XMCRA._SRL = 0; + __XMCRA._SRE = 0; + dwrite(_XMCRA, __XMCRA); + + XMCRB_reg_t __XMCRB; + __XMCRB._XMM = 0; + __XMCRB.reserved1 = 0; + __XMCRB._XMBK = false; + dwrite(_XMCRB, __XMCRB); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + SMCR_reg_t __SMCR; + __SMCR._SE = false; + __SMCR._SM = 0; + __SMCR.reserved1 = 0; + dwrite(_SMCR, __SMCR); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + PRR0_reg_t __PRR0; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM03__) + __PRR0._PRADC = false; + __PRR0._PRUSART0 = false; + __PRR0._PRSPI = false; + __PRR0._PRTIM1 = false; + __PRR0.reserved1 = false; + __PRR0._PRTIM0 = false; + __PRR0._PRTIM2 = false; + __PRR0._PRTWI = false; + #elif defined(__AVR_TRM02__) + __PRR0._PRADC = false; + __PRR0._PRUSART0 = false; + __PRR0._PRSPI = false; + __PRR0._PRTIM1 = false; + __PRR0._PRUSART1 = false; + __PRR0._PRTIM0 = false; + __PRR0._PRTIM2 = false; + __PRR0._PRTWI = false; + #elif defined(__AVR_TRM04__) + __PRR0._PRADC = false; + __PRR0.reserved1 = false; + __PRR0._PRSPI = false; + __PRR0._PRTIM1 = false; + __PRR0.reserved2 = false; + __PRR0._PRTIM0 = false; + __PRR0._PRTIM2 = false; + __PRR0._PRTWI = false; + #endif + dwrite(_PRR0, __PRR0); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) + PRR1_reg_t __PRR1; + #ifdef __AVR_TRM01__ + __PRR1._PRUSART1 = false; + __PRR1._PRUSART2 = false; + __PRR1._PRUSART3 = false; + __PRR1._PRTIM3 = false; + __PRR1._PRTIM4 = false; + __PRR1._PRTIM5 = false; + __PRR1.reserved1 = 0; + #elif defined(__AVR_TRM02__) + __PRR1._PRTIM3 = false; + __PRR1.reserved1 = 0; + #elif defined(__AVR_TRM04__) + __PRR1._PRUSART1 = false; + __PRR1.reserved1 = 0; + #endif + dwrite(_PRR1, __PRR1); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + WDTCSR_reg_t __WDTCSR; + __WDTCSR._WDP0 = 0; + __WDTCSR._WDP1 = 0; + __WDTCSR._WDP2 = 0; + __WDTCSR._WDE = false; + __WDTCSR._WDCE = false; + __WDTCSR._WDP3 = 0; + __WDTCSR._WDIE = false; + __WDTCSR._WDIF = false; + dwrite(_WDTCSR, __WDTCSR); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + _MCUCR._PUD = false; + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + PORT_dev_t __PORT; + __PORT._PIN.val = 0; + __PORT._DDR.val = 0; + __PORT._PORT.val = 0; + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + dwrite(_PORTA, __PORT); + dwrite(_PORTC, __PORT); + #endif + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + dwrite(_PORTB, __PORT); + dwrite(_PORTD, __PORT); + #endif + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + dwrite(_PORTE, __PORT); + dwrite(_PORTF, __PORT); + #endif + + #ifdef __AVR_TRM01__ + PORTG_dev_t __PORTG; + __PORTG._PIN.val = 0; + __PORTG._PIN.reserved1 = 0; + __PORTG._DDR.val = 0; + __PORTG._DDR.reserved1 = 0; + __PORTG._PORT.val = 0; + __PORTG._PORT.reserved1 = 0; + dwrite(_PORTG, __PORTG); + #endif + + #ifdef __AVR_TRM03__ + PORTC_dev_t __PORTC; + __PORTC._PIN.val = 0; + __PORTC._PIN.reserved1 = 0; + __PORTC._DDR.val = 0; + __PORTC._DDR.reserved1 = 0; + __PORTC._PORT.val = 0; + __PORTC._PORT.reserved1 = 0; + dwrite(_PORTC, __PORTC); + #endif + + #ifdef __AVR_TRM01__ + dwrite(_PORTH, __PORT); + dwrite(_PORTJ, __PORT); + dwrite(_PORTK, __PORT); + dwrite(_PORTL, __PORT); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + EICRA_reg_t __EICRA; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + __EICRA._ISC0 = 0; + __EICRA._ISC1 = 0; + __EICRA._ISC2 = 0; + __EICRA._ISC3 = 0; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + __EICRA._ISC0 = 0; + __EICRA._ISC1 = 0; + __EICRA._ISC2 = 0; + __EICRA.reserved1 = 0; + #elif defined(__AVR_TRM03__) + __EICRA._ISC0 = 0; + __EICRA._ISC1 = 0; + __EICRA.reserved1 = 0; + #endif + dwrite(_EICRA, __EICRA); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + EICRB_reg_t __EICRB; + __EICRB._ISC4 = 0; + __EICRB._ISC5 = 0; + __EICRB._ISC6 = 0; + __EICRB._ISC7 = 0; + dwrite(_EICRB, __EICRB); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + EIMSK_reg_t __EIMSK; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + __EIMSK._INT0 = false; + __EIMSK._INT1 = false; + __EIMSK._INT2 = false; + __EIMSK._INT3 = false; + __EIMSK._INT4 = false; + __EIMSK._INT5 = false; + __EIMSK._INT6 = false; + __EIMSK._INT7 = false; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + __EIMSK._INT0 = false; + __EIMSK._INT1 = false; + __EIMSK._INT2 = false; + __EIMSK.reserved1 = 0; + #elif defined(__AVR_TRM03__) + __EIMSK._INT0 = false; + __EIMSK._INT1 = false; + __EIMSK.reserved1 = 0; + #endif + dwrite(_EIMSK, __EIMSK); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + EIFR_reg_t __EIFR; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + __EIFR._INTF0 = false; + __EIFR._INTF1 = false; + __EIFR._INTF2 = false; + __EIFR._INTF3 = false; + __EIFR._INTF4 = false; + __EIFR._INTF5 = false; + __EIFR._INTF6 = false; + __EIFR._INTF7 = false; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + __EIFR._INTF0 = false; + __EIFR._INTF1 = false; + __EIFR._INTF2 = false; + __EIFR.reserved1 = 0; + #elif defined(__AVR_TRM03__) + __EIFR._INTF0 = false; + __EIFR._INTF1 = false; + __EIFR.reserved1 = 0; + #endif + dwrite(_EIFR, __EIFR); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + PCICR_reg_t __PCICR; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM03__) + __PCICR._PCIE0 = false; + __PCICR._PCIE1 = false; + __PCICR._PCIE2 = false; + __PCICR.reserved1 = 0; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + __PCICR._PCIE0 = false; + __PCICR._PCIE1 = false; + __PCICR._PCIE2 = false; + __PCICR._PCIE3 = false; + __PCICR.reserved1 = 0; + #elif defined(__AVR_TRM04__) + __PCICR._PCIE0 = false; + __PCICR.reserved1 = 0; + #endif + dwrite(_PCICR, __PCICR); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + PCIFR_reg_t __PCIFR; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM03__) + __PCIFR._PCIF0 = false; + __PCIFR._PCIF1 = false; + __PCIFR._PCIF2 = false; + __PCIFR.reserved1 = 0; + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + __PCIFR._PCIF0 = false; + __PCIFR._PCIF1 = false; + __PCIFR._PCIF2 = false; + __PCIFR._PCIF3 = false; + __PCIFR.reserved1 = 0; + #elif defined(__AVR_TRM04__) + __PCIFR._PCIF0 = false; + __PCIFR.reserved1 = 0; + #endif + dwrite(_PCIFR, __PCIFR); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + _PCMSK0.val = 0; + #endif + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM05__) + _PCMSK1.val = 0; + _PCMSK2.val = 0; + #endif + #if defined(__AVR_TRM03__) + _PCMSK1.reserved1 = 0; + #endif + #if defined(__AVR_TRM02__) + _PCMSK3.val = 0; + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + TIMER_8bit_dev_t __TIMER_8bit; + __TIMER_8bit._TCCRnA._WGMn0 = 0; + __TIMER_8bit._TCCRnA._WGMn1 = 0; + __TIMER_8bit._TCCRnA.reserved1 = 0; + __TIMER_8bit._TCCRnA._COMnB = 0; + __TIMER_8bit._TCCRnA._COMnA = 0; + __TIMER_8bit._TCCRnB._CSn = 0; + __TIMER_8bit._TCCRnB._WGMn2 = 0; + __TIMER_8bit._TCCRnB.reserved1 = 0; + __TIMER_8bit._TCCRnB._FOCnB = false; + __TIMER_8bit._TCCRnB._FOCnA = false, + __TIMER_8bit._TCNTn = 0; + __TIMER_8bit._OCRnA = 0; + __TIMER_8bit._OCRnB = 0; + dwrite(TIMER0, __TIMER_8bit); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + TIMSK0_reg_t __TIMSK0; + __TIMSK0._TOIE0 = false; + __TIMSK0._OCIE0A = false; + __TIMSK0._OCIE0B = false; + __TIMSK0.reserved1 = 0; + dwrite(_TIMSK0, __TIMSK0); + + TIFR0_reg_t __TIFR0; + __TIFR0._TOV0 = false; + __TIFR0._OCF0A = false; + __TIFR0._OCF0B = false; + __TIFR0.reserved1 = 0; + dwrite(_TIFR0, __TIFR0); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + TIMER_dev_t TIMER; + TIMER._TCCRnA._WGMn0 = 0; + TIMER._TCCRnA._WGMn1 = 0; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + TIMER._TCCRnA._COMnC = 0; + #endif + TIMER._TCCRnA._COMnB = 0; + TIMER._TCCRnA._COMnA = 0; + TIMER._TCCRnB._CSn = 0; + TIMER._TCCRnB._WGMn2 = 0; + TIMER._TCCRnB.reserved1 = 0; + TIMER._TCCRnB._ICESn = 0; + TIMER._TCCRnB._ICNCn = 0; + TIMER._TCCRnC.reserved1 = 0; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + TIMER._TCCRnC._FOCnC = false; + #endif + TIMER._TCCRnC._FOCnB = false; + TIMER._TCCRnC._FOCnA = false; + TIMER._TCNTn = 0; + TIMER._OCRnA = 0; + TIMER._OCRnB = 0; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + TIMER._OCRnC = 0; + #endif + TIMER._ICRn = 0; + dwrite(TIMER1, TIMER); + #endif + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) + dwrite(TIMER3, TIMER); + #endif + #ifdef __AVR_TRM01__ + dwrite(TIMER4, TIMER); + dwrite(TIMER5, TIMER); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + TIMSK1_reg_t __TIMSK1; + __TIMSK1._TOIE1 = false; + __TIMSK1._OCIE1A = false; + __TIMSK1._OCIE1B = false; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + __TIMSK1._OCIE1C = false; + #endif + __TIMSK1.reserved1 = 0; + __TIMSK1._ICIE1 = false; + __TIMSK1.reserved2 = 0; + dwrite(_TIMSK1, __TIMSK1); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) + TIMSK3_reg_t __TIMSK3; + __TIMSK3._TOIE3 = false; + __TIMSK3._OCIE3A = false; + __TIMSK3._OCIE3B = false; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + __TIMSK3._OCIE3C = false; + #endif + __TIMSK3.reserved1 = 0; + __TIMSK3._ICIE3 = false; + __TIMSK3.reserved2 = 0; + dwrite(_TIMSK3, __TIMSK3); + #endif + + #ifdef __AVR_TRM01__ + TIMSK4_reg_t __TIMSK4; + __TIMSK4._TOIE4 = false; + __TIMSK4._OCIE4A = false; + __TIMSK4._OCIE4B = false; + __TIMSK4._OCIE4C = false; + __TIMSK4.reserved1 = false; + __TIMSK4._ICIE4 = false; + __TIMSK4.reserved2 = false; + dwrite(_TIMSK4, __TIMSK4); + + TIMSK5_reg_t __TIMSK5; + __TIMSK5._TOIE5 = false; + __TIMSK5._OCIE5A = false; + __TIMSK5._OCIE5B = false; + __TIMSK5._OCIE5C = false; + __TIMSK5.reserved1 = 0; + __TIMSK5._ICIE5 = false; + __TIMSK5.reserved2 = 0; + dwrite(_TIMSK5, __TIMSK5); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + TIFR1_reg_t __TIFR1; + __TIFR1._TOV1 = false; + __TIFR1._OCF1A = false; + __TIFR1._OCF1B = false; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + __TIFR1._OCF1C = false; + #endif + __TIFR1.reserved1 = 0; + __TIFR1._ICF1 = false; + __TIFR1.reserved2 = 0; + dwrite(_TIFR1, __TIFR1); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) + TIFR3_reg_t __TIFR3; + __TIFR3._TOV3 = false; + __TIFR3._OCF3A = false; + __TIFR3._OCF3B = false; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + __TIFR3._OCF3C = false; + #endif + __TIFR3.reserved1 = 0; + __TIFR3._ICF3 = false; + __TIFR3.reserved2 = 0; + dwrite(_TIFR3, __TIFR3); + #endif + + #ifdef __AVR_TRM01__ + TIFR4_reg_t __TIFR4; + __TIFR4._TOV4 = false; + __TIFR4._OCF4A = false; + __TIFR4._OCF4B = false; + __TIFR4._OCF4C = false; + __TIFR4.reserved1 = 0; + __TIFR4._ICF4 = false; + __TIFR4.reserved2 = 0; + dwrite(_TIFR4, __TIFR4); + + TIFR5_reg_t __TIFR5; + __TIFR5._TOV5 = false; + __TIFR5._OCF5A = false; + __TIFR5._OCF5B = false; + __TIFR5._OCF5C = false; + __TIFR5.reserved1 = 0; + __TIFR5._ICF5 = false; + __TIFR5.reserved2 = 0; + dwrite(_TIFR5, __TIFR5); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + dwrite(_TIMER2, __TIMER_8bit); + #endif + + #if defined(__AV_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + ASSR_reg_t __ASSR; + __ASSR._TCR2BUB = false; + __ASSR._TCR2AUB = false; + __ASSR._OCR2BUB = false; + __ASSR._OCR2AUB = false; + __ASSR._TCN2UB = false; + __ASSR._AS2 = false; + __ASSR._EXCLK = false; + __ASSR.reserved1 = 0; + dwrite(_ASSR, __ASSR); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + TIMSK2_reg_t __TIMSK2; + __TIMSK2._TOIE2 = false; + __TIMSK2._OCIE2A = false; + __TIMSK2._OCIE2B = false; + __TIMSK2.reserved1 = 0; + dwrite(_TIMSK2, __TIMSK2); + + TIFR2_reg_t __TIFR2; + __TIFR2._TOV2 = false; + __TIFR2._OCF2A = false; + __TIFR2._OCF2B = false; + __TIFR2.reserved1 = 0; + dwrite(_TIFR2, __TIFR2); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + SPCR_reg_t __SPCR; + __SPCR._SPR = 0; + __SPCR._CPHA = 0; + __SPCR._CPOL = 0; + __SPCR._MSTR = 0; + __SPCR._DORD = 0; + __SPCR._SPE = false; + __SPCR._SPIE = false; + dwrite(_SPCR, __SPCR); + + SPSR_reg_t __SPSR; + __SPSR._SPI2X = false; + __SPSR.reserved1 = 0; + __SPSR._WCOL = false; + __SPSR._SPIF = false; + dwrite(_SPSR, __SPSR); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + USART_dev_t USART; + USART._UDRn = 0; + USART._UCSRnA._MPCM = false; + USART._UCSRnA._U2X = false; + USART._UCSRnA._UPE = false; + USART._UCSRnA._DOR = false; + USART._UCSRnA._FE = false; + USART._UCSRnA._UDRE = true; + USART._UCSRnA._TXC = false; + USART._UCSRnA._RXC = false; + USART._UCSRnB._TXB8 = false; + USART._UCSRnB._RXB8 = false; + USART._UCSRnB._UCSZn2 = false; + USART._UCSRnB._TXEN = false; + USART._UCSRnB._RXEN = false; + USART._UCSRnB._UDRIE = false; + USART._UCSRnB._TXCIE = false; + USART._UCSRnB._RXCIE = false; + USART._UCSRnC._UCPOL = false; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) + USART._UCSRnC._UCSZn0 = 1; + USART._UCSRnC._UCSZn1 = 1; + USART._UCSRnC._USBS = false; + USART._UCSRnC._UPM = 0; + USART._UCSRnC._UPM = 0; + USART._UCSRnC._UMSEL = 0; + #elif defined(__AVR_TRM05__) + USART._UCSRnC._UCPOL = 0; + USART._UCSRnC._UCPHA = 0; + USART._UCSRnC._UDORD = 0; + USART._UCSRnC.reserved1 = 0; + USART._UCSRnC._UMSEL = 0; + #endif + USART._UBRRn._UBRR = 0; + USART._UBRRn.reserved1 = 0; + #endif + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM05__) + dwrite(USART0, USART); + #endif + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + dwrite(USART1, USART); + #endif + #ifdef __AVR_TRM01__ + dwrite(USART2, USART); + dwrite(USART3, USART); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + dwrite(_TWBR, (uint8_t)0); + + TWCR_reg_t __TWCR; + __TWCR._TWIE = false; + __TWCR.reserved1 = 0; + __TWCR._TWEN = false; + __TWCR._TWWC = false; + __TWCR._TWSTO = false; + __TWCR._TWSTA = false; + __TWCR._TWEA = false; + __TWCR._TWINT = false; + dwrite(_TWCR, __TWCR); + + TWSR_reg_t __TWSR; + __TWSR._TWPS0 = false; + __TWSR._TWPS1 = false; + __TWSR.reserved1 = 0; + __TWSR._TWS3 = 1; + __TWSR._TWS4 = 1; + __TWSR._TWS5 = 1; + __TWSR._TWS6 = 1; + __TWSR._TWS7 = 1; + dwrite(_TWSR, __TWSR); + + dwrite(_TWDR, (uint8_t)0xFF); + + TWAR_reg_t __TWAR; + __TWAR._TWGCE = false; + __TWAR._TWA = 0x7F; + dwrite(_TWAR, __TWAR); + + TWAMR_reg_t __TWAMR; + __TWAMR.reserved1 = false; + __TWAMR._TWAM = 0; + dwrite(_TWAMR, __TWAMR); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + ADCSRB_reg_t __ADCSRB; + __ADCSRB._ADTS = 0; + #ifdef __AVR_TRM01__ + __ADCSRB._MUX5 = 0; + #endif + __ADCSRB.reserved1 = 0; + __ADCSRB._ACME = false; + __ADCSRB.reserved2 = 0; + dwrite(_ADCSRB, __ADCSRB); + + ACSR_reg_t __ACSR; + __ACSR._ACIS = 0; + __ACSR._ACIC = false; + __ACSR._ACIE = false; + __ACSR._ACI = false; + __ACSR._ACO = false; + __ACSR._ACBG = false; + __ACSR._ACD = false; + dwrite(_ACSR, __ACSR); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + DIDR1_reg_t __DIDR1; + __DIDR1._AIN0D = false; + __DIDR1._AIN1D = false; + __DIDR1.reserved1 = false; + dwrite(_DIDR1, __DIDR1); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + ADMUX_reg_t __ADMUX; + __ADMUX._MUX0 = 0; + __ADMUX._MUX1 = 0; + __ADMUX._MUX2 = 0; + __ADMUX._MUX3 = 0; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + __ADMUX._MUX4 = 0; + #elif defined(__AVR_TRM03__) + __ADMUX.reserved1 = 0; + #endif + __ADMUX._ADLAR = 0; + __ADMUX._REFS0 = 0; + __ADMUX._REFS1 = 0; + dwrite(_ADMUX, __ADMUX); + + ADCSRA_reg_t __ADCSRA; + __ADCSRA._ADPS = 0; + __ADCSRA._ADIE = false; + __ADCSRA._ADIF = false; + __ADCSRA._ADATE = false; + __ADCSRA._ADSC = false; + __ADCSRA._ADEN = false; + dwrite(_ADCSRA, __ADCSRA); + + dwrite(_ADC, (uint16_t)0); + #endif + + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + SPMCSR_reg_t __SPMCSR; + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + __SPMCSR._SPMEN = false; + __SPMCSR._PGERS = false; + __SPMCSR._PGWRT = false; + __SPMCSR._BLBSET = false; + __SPMCSR._RWWSRE = false; + __SPMCSR._SIGRD = false; + __SPMCSR._RWWSB = false; + __SPMCSR._SPMIE = false; + #elif defined(__AVR_TRM03__) + #if defined(__AVR_ATmega88A__) || defined(__AVR_ATmega88PA__) || defined(__AVR_ATmega168A__) || defined(__AVR_ATmega168PA__) || defined(__AVR_ATmega328P__) + __SPMCSR._SPMEN = false; + __SPMCSR._PGERS = false; + __SPMCSR._PGWRT = false; + __SPMCSR._BLBSET = false; + __SPMCSR._RWWSRE = false; + __SPMCSR._SIGRD = false; + __SPMCSR._RWWSB = false; + __SPMCSR._SPMIE = false; + #else + __SPMCSR._SPMEN = false; + __SPMCSR._PGERS = false; + __SPMCSR._PGWRT = false; + __SPMCSR._BLBSET = false; + __SPMCSR.reserved1 = false; + __SPMCSR._SIGRD = false; + __SPMCSR.reserved2 = false; + __SPMCSR._SPMIE = false; + #endif + #endif + dwrite(_SPMCSR, __SPMCSR); + #endif + + // TODO: add the __AVR_TRM04__ initializations, if required (mostly USB related) +} + +struct pin_dev_state_t { + #ifdef __AVR_TRM01__ + uint8_t _SRE : 1; // port A + uint8_t _COM0B : 2; + uint8_t _COM1A : 2; + uint8_t _COM1B : 2; + uint8_t _COM1C : 2; + uint8_t _COM2A : 2; + uint8_t _COM2B : 2; + uint8_t _COM3A : 2; + uint8_t _COM3B : 2; + uint8_t _COM3C : 2; + uint8_t _COM4A : 2; + uint8_t _COM4B : 2; + uint8_t _COM4C : 2; + uint8_t _COM5A : 2; + uint8_t _COM5B : 2; + uint8_t _COM5C : 2; + uint8_t _PCIE0 : 1; + uint8_t _PCIE1 : 1; // INTn + uint8_t _PCIE2 : 1; + uint8_t _SPE : 1; + uint8_t _USART0_RXEN : 1; + uint8_t _USART0_TXEN : 1; + uint8_t _USART1_RXEN : 1; + uint8_t _USART1_TXEN : 1; + uint8_t _USART2_RXEN : 1; + uint8_t _USART2_TXEN : 1; + uint8_t _USART3_RXEN : 1; + uint8_t _USART3_TXEN : 1; + //uint8_t _JTAGEN : 1; + uint8_t _AS2 : 1; + #elif defined(__AVR_TRM02__) + uint8_t _PCIE0 : 1; + uint8_t _PCIE1 : 1; + uint8_t _PCIE2 : 1; + uint8_t _PCIE3 : 1; + uint8_t _ADC7D : 1; + uint8_t _ADC6D : 1; + uint8_t _ADC5D : 1; + uint8_t _ADC4D : 1; + uint8_t _ADC3D : 1; + uint8_t _ADC2D : 1; + uint8_t _ADC1D : 1; + uint8_t _ADC0D : 1; + uint8_t _SPE : 1; + uint8_t _COM0A : 2; + uint8_t _COM0B : 2; + uint8_t _COM2A : 2; + uint8_t _COM2B : 2; + uint8_t _COM1A : 2; + uint8_t _COM1B : 2; + //uint8_t _JTAGEN : 1; + uint8_t _AS2 : 1; + uint8_t _TWEN : 1; + uint8_t _USART1_TXEN : 1; + uint8_t _USART1_RXEN : 1; + uint8_t _USART0_TXEN : 1; + uint8_t _USART0_RXEN : 1; + #elif defined(__AVR_TRM03__) + uint8_t _AS2 : 1; + uint8_t _PCIE0 : 1; + uint8_t _PCIE1 : 1; + uint8_t _PCIE2 : 1; + uint8_t _SPE : 1; + uint8_t _COM2B : 2; + uint8_t _COM2A : 2; + uint8_t _COM1B : 2; + uint8_t _COM1A : 2; + uint8_t _COM0A : 2; + uint8_t _COM0B : 2; + uint8_t _TWEN : 1; + uint8_t _ADC7D : 1; + uint8_t _ADC6D : 1; + uint8_t _ADC5D : 1; + uint8_t _ADC4D : 1; + uint8_t _ADC3D : 1; + uint8_t _ADC2D : 1; + uint8_t _ADC1D : 1; + uint8_t _ADC0D : 1; + uint8_t _UMSEL : 2; + uint8_t _USART0_TXEN : 1; + uint8_t _USART0_RXEN : 1; + #elif defined(__AVR_TRM04__) + uint8_t _SRE : 1; + uint8_t _SPE : 1; + uint8_t _COM0B : 2; + uint8_t _COM1C : 2; + uint8_t _COM1B : 2; + uint8_t _COM1A : 2; + uint8_t _COM2A : 2; + uint8_t _COM2B : 2; + uint8_t _PCIE0 : 1; + uint8_t _USART1_RXEN : 1; + uint8_t _USART1_TXEN : 1; + uint8_t _TWEN : 1; + uint8_t _INT7 : 1; + uint8_t _INT6 : 1; + uint8_t _INT5 : 1; + uint8_t _INT4 : 1; + uint8_t _INT3 : 1; + uint8_t _INT2 : 1; + uint8_t _INT1 : 1; + uint8_t _INT0; + uint8_t _UVCONE : 1; + uint8_t _UIDE : 1; + //uint8_t _JTAGEN : 1; + #elif defined(__AVR_TRM05__) + uint8_t _ADC7D : 1; + uint8_t _ADC6D : 1; + uint8_t _ADC5D : 1; + uint8_t _ADC4D : 1; + uint8_t _ADC3D : 1; + uint8_t _ADC2D : 1; + uint8_t _ADC1D : 1; + uint8_t _ADC0D : 1; + uint8_t _PCIE0 : 1; + uint8_t _PCIE1 : 1; + uint8_t _PCIE2 : 1; + uint8_t _PCIE3 : 1; + uint8_t _SPE : 1; + uint8_t _COM0A : 2; + uint8_t _COM0B : 2; + uint8_t _COM2A : 2; + uint8_t _COM2B : 2; + uint8_t _COM1A : 2; + uint8_t _COM1B : 2; + uint8_t _AS2 : 1; + uint8_t _TWEN : 1; + uint8_t _TXEN1 : 1; + uint8_t _RXEN1 : 1; + uint8_t _TXEN0 : 1; + uint8_t _RXEN0 : 1; + uint8_t _INT2 : 1; + uint8_t _INT1 : 1; + uint8_t _INT0 : 1; + //uint8_t _JTAGEN : 1; + #endif +}; + +// AVR ArduinoCore is written like a hack-job (random peripherals enabled all-the-time). + +enum class eATmegaPort { + #ifdef __AVR_TRM01__ + PORT_A, PORT_B, PORT_C, PORT_D, PORT_E, PORT_F, PORT_G, PORT_H, PORT_J, PORT_K, PORT_L + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + PORT_A, PORT_B, PORT_C, PORT_D + #elif defined(__AVR_TRM03__) + PORT_B, PORT_C, PORT_D + #elif defined(__AVR_TRM04__) + PORT_A, PORT_B, PORT_C, PORT_D, PORT_E, PORT_F + #endif +}; + +struct ATmegaPinInfo { + eATmegaPort port; + uint8_t pinidx; +}; + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + #define _SPA_DIO_DDRA (eATmegaPort::PORT_A) +#endif +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM03__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + #define _SPA_DIO_DDRB (eATmegaPort::PORT_B) + #define _SPA_DIO_DDRC (eATmegaPort::PORT_C) + #define _SPA_DIO_DDRD (eATmegaPort::PORT_D) +#endif +#if defined(__AVR_TRM01__) || defined(__AVR_TRM04__) + #define _SPA_DIO_DDRE (eATmegaPort::PORT_E) + #define _SPA_DIO_DDRF (eATmegaPort::PORT_F) +#endif +#ifdef __AVR_TRM01__ + #define _SPA_DIO_DDRG (eATmegaPort::PORT_G) + #define _SPA_DIO_DDRH (eATmegaPort::PORT_H) + #define _SPA_DIO_DDRJ (eATmegaPort::PORT_J) + #define _SPA_DIO_DDRK (eATmegaPort::PORT_K) + #define _SPA_DIO_DDRL (eATmegaPort::PORT_L) +#endif + +#define __SPA_IFPORT_STMT(dr) if (ddrp == &D##dr) port = _SPA_DIO_D##dr; + +#ifdef _SPA_DIO_DDRA + #define _SPA_IFPORT_PORTA __SPA_IFPORT_STMT(DRA) +#else + #define _SPA_IFPORT_PORTA +#endif +#ifdef _SPA_DIO_DDRB + #define _SPA_IFPORT_PORTB __SPA_IFPORT_STMT(DRB) +#else + #define _SPA_IFPORT_PORTB +#endif +#ifdef _SPA_DIO_DDRC + #define _SPA_IFPORT_PORTC __SPA_IFPORT_STMT(DRC) +#else + #define _SPA_IFPORT_PORTC +#endif +#ifdef _SPA_DIO_DDRD + #define _SPA_IFPORT_PORTD __SPA_IFPORT_STMT(DRD) +#else + #define _SPA_IFPORT_PORTD +#endif +#ifdef _SPA_DIO_DDRE + #define _SPA_IFPORT_PORTE __SPA_IFPORT_STMT(DRE) +#else + #define _SPA_IFPORT_PORTE +#endif +#ifdef _SPA_DIO_DDRF + #define _SPA_IFPORT_PORTF __SPA_IFPORT_STMT(DRF) +#else + #define _SPA_IFPORT_PORTF +#endif +#ifdef _SPA_DIO_DDRG + #define _SPA_IFPORT_PORTG __SPA_IFPORT_STMT(DRG) +#else + #define _SPA_IFPORT_PORTG +#endif +#ifdef _SPA_DIO_DDRH + #define _SPA_IFPORT_PORTH __SPA_IFPORT_STMT(DRH) +#else + #define _SPA_IFPORT_PORTH +#endif +#ifdef _SPA_DIO_DDRJ + #define _SPA_IFPORT_PORTJ __SPA_IFPORT_STMT(DRJ) +#else + #define _SPA_IFPORT_PORTJ +#endif +#ifdef _SPA_DIO_DDRK + #define _SPA_IFPORT_PORTK __SPA_IFPORT_STMT(DRK) +#else + #define _SPA_IFPORT_PORTK +#endif +#ifdef _SPA_DIO_DDRL + #define _SPA_IFPORT_PORTL __SPA_IFPORT_STMT(DRL) +#else + #define _SPA_IFPORT_PORTL +#endif + +#define _SPA_RESOLVE_DIO(ddr) _SPA_DIO_##ddr +#define _SPA_DIOn_PORTRET(val, n) if (val == n) { \ + auto *ddrp = &DIO##n##_DDR; \ + eATmegaPort port; \ + _SPA_IFPORT_PORTA \ + _SPA_IFPORT_PORTB \ + _SPA_IFPORT_PORTC \ + _SPA_IFPORT_PORTD \ + _SPA_IFPORT_PORTE \ + _SPA_IFPORT_PORTF \ + _SPA_IFPORT_PORTG \ + _SPA_IFPORT_PORTH \ + _SPA_IFPORT_PORTJ \ + _SPA_IFPORT_PORTK \ + _SPA_IFPORT_PORTL \ + return { port, DIO##n##_PIN }; \ + } + +inline ATmegaPinInfo _ATmega_getPinInfo(uint8_t pin) { + #if DIO_NUM > 0 + _SPA_DIOn_PORTRET(pin, 0) + #endif + #if DIO_NUM > 1 + _SPA_DIOn_PORTRET(pin, 1) + #endif + #if DIO_NUM > 2 + _SPA_DIOn_PORTRET(pin, 2) + #endif + #if DIO_NUM > 3 + _SPA_DIOn_PORTRET(pin, 3) + #endif + #if DIO_NUM > 4 + _SPA_DIOn_PORTRET(pin, 4) + #endif + #if DIO_NUM > 5 + _SPA_DIOn_PORTRET(pin, 5) + #endif + #if DIO_NUM > 6 + _SPA_DIOn_PORTRET(pin, 6) + #endif + #if DIO_NUM > 7 + _SPA_DIOn_PORTRET(pin, 7) + #endif + #if DIO_NUM > 8 + _SPA_DIOn_PORTRET(pin, 8) + #endif + #if DIO_NUM > 9 + _SPA_DIOn_PORTRET(pin, 9) + #endif + + #if DIO_NUM > 10 + _SPA_DIOn_PORTRET(pin, 10) + #endif + #if DIO_NUM > 11 + _SPA_DIOn_PORTRET(pin, 11) + #endif + #if DIO_NUM > 12 + _SPA_DIOn_PORTRET(pin, 12) + #endif + #if DIO_NUM > 13 + _SPA_DIOn_PORTRET(pin, 13) + #endif + #if DIO_NUM > 14 + _SPA_DIOn_PORTRET(pin, 14) + #endif + #if DIO_NUM > 15 + _SPA_DIOn_PORTRET(pin, 15) + #endif + #if DIO_NUM > 16 + _SPA_DIOn_PORTRET(pin, 16) + #endif + #if DIO_NUM > 17 + _SPA_DIOn_PORTRET(pin, 17) + #endif + #if DIO_NUM > 18 + _SPA_DIOn_PORTRET(pin, 18) + #endif + #if DIO_NUM > 19 + _SPA_DIOn_PORTRET(pin, 19) + #endif + + #if DIO_NUM > 20 + _SPA_DIOn_PORTRET(pin, 20) + #endif + #if DIO_NUM > 21 + _SPA_DIOn_PORTRET(pin, 21) + #endif + #if DIO_NUM > 22 + _SPA_DIOn_PORTRET(pin, 22) + #endif + #if DIO_NUM > 23 + _SPA_DIOn_PORTRET(pin, 23) + #endif + #if DIO_NUM > 24 + _SPA_DIOn_PORTRET(pin, 24) + #endif + #if DIO_NUM > 25 + _SPA_DIOn_PORTRET(pin, 25) + #endif + #if DIO_NUM > 26 + _SPA_DIOn_PORTRET(pin, 26) + #endif + #if DIO_NUM > 27 + _SPA_DIOn_PORTRET(pin, 27) + #endif + #if DIO_NUM > 28 + _SPA_DIOn_PORTRET(pin, 28) + #endif + #if DIO_NUM > 29 + _SPA_DIOn_PORTRET(pin, 29) + #endif + + #if DIO_NUM > 30 + _SPA_DIOn_PORTRET(pin, 30) + #endif + #if DIO_NUM > 31 + _SPA_DIOn_PORTRET(pin, 31) + #endif + #if DIO_NUM > 32 + _SPA_DIOn_PORTRET(pin, 32) + #endif + #if DIO_NUM > 33 + _SPA_DIOn_PORTRET(pin, 33) + #endif + #if DIO_NUM > 34 + _SPA_DIOn_PORTRET(pin, 34) + #endif + #if DIO_NUM > 35 + _SPA_DIOn_PORTRET(pin, 35) + #endif + #if DIO_NUM > 36 + _SPA_DIOn_PORTRET(pin, 36) + #endif + #if DIO_NUM > 37 + _SPA_DIOn_PORTRET(pin, 37) + #endif + #if DIO_NUM > 38 + _SPA_DIOn_PORTRET(pin, 38) + #endif + #if DIO_NUM > 39 + _SPA_DIOn_PORTRET(pin, 39) + #endif + + #if DIO_NUM > 40 + _SPA_DIOn_PORTRET(pin, 40) + #endif + #if DIO_NUM > 41 + _SPA_DIOn_PORTRET(pin, 41) + #endif + #if DIO_NUM > 42 + _SPA_DIOn_PORTRET(pin, 42) + #endif + #if DIO_NUM > 43 + _SPA_DIOn_PORTRET(pin, 43) + #endif + #if DIO_NUM > 44 + _SPA_DIOn_PORTRET(pin, 44) + #endif + #if DIO_NUM > 45 + _SPA_DIOn_PORTRET(pin, 45) + #endif + #if DIO_NUM > 46 + _SPA_DIOn_PORTRET(pin, 46) + #endif + #if DIO_NUM > 47 + _SPA_DIOn_PORTRET(pin, 47) + #endif + #if DIO_NUM > 48 + _SPA_DIOn_PORTRET(pin, 48) + #endif + #if DIO_NUM > 49 + _SPA_DIOn_PORTRET(pin, 49) + #endif + + #if DIO_NUM > 50 + _SPA_DIOn_PORTRET(pin, 50) + #endif + #if DIO_NUM > 51 + _SPA_DIOn_PORTRET(pin, 51) + #endif + #if DIO_NUM > 52 + _SPA_DIOn_PORTRET(pin, 52) + #endif + #if DIO_NUM > 53 + _SPA_DIOn_PORTRET(pin, 53) + #endif + #if DIO_NUM > 54 + _SPA_DIOn_PORTRET(pin, 54) + #endif + #if DIO_NUM > 55 + _SPA_DIOn_PORTRET(pin, 55) + #endif + #if DIO_NUM > 56 + _SPA_DIOn_PORTRET(pin, 56) + #endif + #if DIO_NUM > 57 + _SPA_DIOn_PORTRET(pin, 57) + #endif + #if DIO_NUM > 58 + _SPA_DIOn_PORTRET(pin, 58) + #endif + #if DIO_NUM > 59 + _SPA_DIOn_PORTRET(pin, 59) + #endif + + #if DIO_NUM > 60 + _SPA_DIOn_PORTRET(pin, 60) + #endif + #if DIO_NUM > 61 + _SPA_DIOn_PORTRET(pin, 61) + #endif + #if DIO_NUM > 62 + _SPA_DIOn_PORTRET(pin, 62) + #endif + #if DIO_NUM > 63 + _SPA_DIOn_PORTRET(pin, 63) + #endif + #if DIO_NUM > 64 + _SPA_DIOn_PORTRET(pin, 64) + #endif + #if DIO_NUM > 65 + _SPA_DIOn_PORTRET(pin, 65) + #endif + #if DIO_NUM > 66 + _SPA_DIOn_PORTRET(pin, 66) + #endif + #if DIO_NUM > 67 + _SPA_DIOn_PORTRET(pin, 67) + #endif + #if DIO_NUM > 68 + _SPA_DIOn_PORTRET(pin, 68) + #endif + #if DIO_NUM > 69 + _SPA_DIOn_PORTRET(pin, 69) + #endif + + #if DIO_NUM > 70 + _SPA_DIOn_PORTRET(pin, 70) + #endif + #if DIO_NUM > 71 + _SPA_DIOn_PORTRET(pin, 71) + #endif + #if DIO_NUM > 72 + _SPA_DIOn_PORTRET(pin, 72) + #endif + #if DIO_NUM > 73 + _SPA_DIOn_PORTRET(pin, 73) + #endif + #if DIO_NUM > 74 + _SPA_DIOn_PORTRET(pin, 74) + #endif + #if DIO_NUM > 75 + _SPA_DIOn_PORTRET(pin, 75) + #endif + #if DIO_NUM > 76 + _SPA_DIOn_PORTRET(pin, 76) + #endif + #if DIO_NUM > 77 + _SPA_DIOn_PORTRET(pin, 77) + #endif + #if DIO_NUM > 78 + _SPA_DIOn_PORTRET(pin, 78) + #endif + #if DIO_NUM > 79 + _SPA_DIOn_PORTRET(pin, 79) + #endif + + #if DIO_NUM > 80 + _SPA_DIOn_PORTRET(pin, 80) + #endif + #if DIO_NUM > 81 + _SPA_DIOn_PORTRET(pin, 81) + #endif + #if DIO_NUM > 82 + _SPA_DIOn_PORTRET(pin, 82) + #endif + #if DIO_NUM > 83 + _SPA_DIOn_PORTRET(pin, 83) + #endif + #if DIO_NUM > 84 + _SPA_DIOn_PORTRET(pin, 84) + #endif + #if DIO_NUM > 85 + _SPA_DIOn_PORTRET(pin, 85) + #endif + #if DIO_NUM > 86 + _SPA_DIOn_PORTRET(pin, 86) + #endif + #if DIO_NUM > 87 + _SPA_DIOn_PORTRET(pin, 87) + #endif + #if DIO_NUM > 88 + _SPA_DIOn_PORTRET(pin, 88) + #endif + #if DIO_NUM > 89 + _SPA_DIOn_PORTRET(pin, 89) + #endif + + // Default. + #if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) || defined(__AVR_TRM04__) || defined(__AVR_TRM05__) + return { eATmegaPort::PORT_A, 0 }; + #elif defined(__AVR_TRM03__) + return { eATmegaPort::PORT_B, 0 }; + #endif +} + +enum class eATmegaPeripheral { + UNDEFINED, + #ifdef __AVR_TRM01__ + PADC, PUSART0, PSPI, PTIM1, PTIM0, PTIM2, PTWI, PUSART1, PUSART2, PUSART3, PTIM3, PTIM4, PTIM5 + #elif defined(__AVR_TRM02__) + PADC, PUSART0, PSPI, PTIM1, PUSART1, PTIM0, PTIM2, PTWI, PTIM3 + #elif defined(__AVR_TRM03__) + PADC, PUSART0, PSPI, PTIM1, PTIM0, PTIM2, PTWI + #elif defined(__AVR_TRM04__) + PADC, PSPI, PTIM1, PTIM0, PTIM2, PTWI, PUSART1, PTIM3, PUSB + #elif defined(__AVR_TRM05__) + PADC, PUSART0, PSPI, PTIM1, PUSART1, PTIM0, PTIM2, PTWI + #endif + , NUM_PERIPHERALS +}; + +enum class eATmegaPinFunc : uint8_t { + #ifdef __AVR_TRM01__ + EXTMEM_AD15, EXTMEM_AD14, EXTMEM_AD13, EXTMEM_AD12, EXTMEM_AD11, EXTMEM_AD10, EXTMEM_AD9, EXTMEM_AD8, + EXTMEM_AD7, EXTMEM_AD6, EXTMEM_AD5, EXTMEM_AD4, EXTMEM_AD3, EXTMEM_AD2, EXTMEM_AD1, EXTMEM_AD0, + EXTMEM_ALE, EXTMEM_RD, EXTMEM_WR, + TOC0A, TOC0B, TOC1A, TOC1B, TOC1C, TOC2A, TOC2B, TOC3C, TOC3B, TOC3A, TOC4C, TOC4B, TOC4A, TOC5C, TOC5B, TOC5A, + EINT7, EINT6, EINT5, EINT4, EINT3, EINT2, EINT1, EINT0, + PCI0, PCI1, PCI2, PCI3, PCI4, PCI5, PCI6, PCI7, + PCI8, PCI9, PCI10, PCI11, PCI12, PCI13, PCI14, PCI15, + PCI16, PCI17, PCI18, PCI19, PCI20, PCI21, PCI22, PCI23, + SPI_MISO, SPI_MOSI, SPI_SCK, SPI_CS, + TOSC1, TOSC2, + TIMER0_CLKI, TIMER1_CLKI, TIMER3_CLKI, TIMER4_CLKI, TIMER5_CLKI, + TIMER1_ICP, TIMER3_ICP, TIMER5_ICP, TIMER4_ICP, + USART0_CLK, USART1_CLK, USART2_CLK, USART3_CLK, + USART0_TXD, USART0_RXD, USART1_TXD, USART1_RXD, USART2_TXD, USART2_RXD, USART3_TXD, USART3_RXD, + TWI_SDA, TWI_CLK, + CLKO, PDO, PDI, + AIN0, AIN1, + ADC15, ADC14, ADC13, ADC12, ADC11, ADC10, ADC9, ADC8, + ADC7, ADC6, ADC5, ADC4, ADC3, ADC2, ADC1, ADC0 + #elif defined(__AVR_TRM02__) + ADC7, ADC6, ADC5, ADC4, ADC3, ADC2, ADC1, ADC0, + SPI_SCK, SPI_MISO, SPI_MOSI, SPI_CS, + PCI31, PCI30, PCI29, PCI28, PCI27, PCI26, PCI25, PCI24, + PCI23, PCI22, PCI21, PCI20, PCI19, PCI18, PCI17, PCI16, + PCI15, PCI14, PCI13, PCI12, PCI11, PCI10, PCI9, PCI8, + PCI7, PCI6, PCI5, PCI4, PCI3, PCI2, PCI1, PCI0, + EINT2, EINT1, EINT0, + TIMER3_ICP, + TIMER3_ECI, TIMER1_ECI, TIMER0_ECI, + TIMER1_ICP, + TOC3B, TOC3A, TOC2A, TOC2B, TOC1A, TOC1B, TOC0B, TOC0A, + AIN1, AIN0, + USART0_CLK, USART1_CLK, + USART0_TXD, USART0_RXD, USART1_TXD, USART1_RXD, + CLKO, + TOSC2, TOSC1, + TWI_SDA, TWI_CLK + #elif defined(__AVR_TRM03__) + ADC5, ADC4, ADC3, ADC2, ADC1, ADC0, + XTAL2, XTAL1, + TOSC2, TOSC1, + SPI_SCK, SPI_MISO, SPI_MOSI, SPI_CS, + TOC2B, TOC2A, TOC1B, TOC1A, TOC0A, TOC0B, + TIMER1_ICP, + TIMER1_ECI, TIMER0_ECI, + TWI_CLK, TWI_SDA, + PCI23, PCI22, PCI21, PCI20, PCI19, PCI18, PCI17, PCI16, + PCI14, PCI13, PCI12, PCI11, PCI10, PCI9, PCI8, + PCI7, PCI6, PCI5, PCI4, PCI3, PCI2, PCI1, PCI0, + CLKO, + AIN1, AIN0, + USART_CLK, + USART_TXD, USART_RXD, + EINT1, EINT0 + #elif defined(__AVR_TRM04__) + EXTMEM_AD15, EXTMEM_AD14, EXTMEM_AD13, EXTMEM_AD12, EXTMEM_AD11, EXTMEM_AD10, EXTMEM_AD9, EXTMEM_AD8, + EXTMEM_AD7, EXTMEM_AD6, EXTMEM_AD5, EXTMEM_AD4, EXTMEM_AD3, EXTMEM_AD2, EXTMEM_AD1, EXTMEM_AD0, + EXTMEM_ALE, EXTMEM_RD, EXTMEM_WR, + TOC0B, TOC0A, TOC1C, TOC1B, TOC1A, TOC2B, TOC2A, TOC3A, TOC3B, TOC3C, + CLKO, PDO, PDI, + SPI_MISO, SPI_MOSI, SPI_SCK, SPI_CS, + TIMER3_ICP, TIMER1_ICP, + TIMER3_CLKI, TIMER0_CLKI, TIMER1_CLKI, + USART1_CLK, USART1_TXD, USART1_RXD, + EINT7, EINT6, EINT5, EINT4, EINT3, EINT2, EINT1, EINT0, + PCI7, PCI6, PCI5, PCI4, PCI3, PCI2, PCI1, PCI0, + TWI_SDA, TWI_CLK, + AIN1, AIN0, + TOSC2, + UID, UVCON, + ADC7, ADC6, ADC5, ADC4, ADC3, ADC2, ADC1, ADC0 + #elif defined(__AVR_TRM05__) + ADC7, ADC6, ADC5, ADC4, ADC3, ADC2, ADC1, ADC0, + PCI31, PCI30, PCI29, PCI28, PCI27, PCI26, PCI25, PCI24, + PCI23, PCI22, PCI21, PCI20, PCI19, PCI18, PCI17, PCI16, + PCI15, PCI14, PCI13, PCI12, PCI11, PCI10, PCI9, PCI8, + PCI7, PCI6, PCI5, PCI4, PCI3, PCI2, PCI1, PCI0, + SPI_SCK, SPI_MISO, SPI_MOSI, SPI_CS, + AIN1, AIN0, + TIMER1_ICP, TIMER0_ICP, + TIMER1_ECI, TIMER0_ECI, + TOC0B, TOC0A, TOC2A, TOC2B, TOC1A, TOC1B, + TOSC2, TOSC1, + //JTAG_TDI, JTAG_TDO, JTAG_TMS, JTAG_TCK, + TWI_CLK, TWI_SDA, + EINT2, EINT1, EINT0, + CLKO, + USART0_CLK, USART0_TXD, USART0_RXD, + USART1_CLK, USART1_TXD, USART1_RXD + #endif + , NUM_FUNCS +}; + +#ifndef countof + #define countof(x) (sizeof(x) / sizeof(*x)) +#endif + +struct ATmegaPinFunctions { + inline ATmegaPinFunctions(const eATmegaPinFunc *funcs, uint8_t cnt) noexcept : funcs(funcs), cnt(cnt) {} + inline ATmegaPinFunctions() = default; + inline ATmegaPinFunctions(const ATmegaPinFunctions&) = default; + + const eATmegaPinFunc *funcs = nullptr; + uint8_t cnt = 0; + + inline bool hasFunc(eATmegaPinFunc query) const { + for (uint8_t n = 0; n < this->cnt; n++) { + eATmegaPinFunc func = this->funcs[n]; + if (func == query) return true; + } + return false; + } + template + inline bool hasFunc(eATmegaPinFunc func, otherItemType&&... items) const { + return hasFunc(func) || hasFunc(((otherItemType&&)items)...); + } + + template + inline void iterate(callbackType&& cb) const { + for (uint8_t n = 0; n < this->cnt; n++) { + eATmegaPinFunc func = this->funcs[n]; + cb(func); + } + } +}; + +ATmegaPinFunctions _ATmega_getPinFunctions(int pin); + +struct ATmegaPinFuncSet { + inline ATmegaPinFuncSet() noexcept { + for (bool& f : this->funcs) f = false; + } + template + inline ATmegaPinFuncSet(eATmegaPinFunc func, funcItemType&&... items) noexcept : ATmegaPinFuncSet() { + add(func, ((funcItemType&&)items)...); + } + template + inline ATmegaPinFuncSet(int pin, funcItemType&&... items) noexcept : ATmegaPinFuncSet() { + addFromPin(pin, ((funcItemType&&)items)...); + } + inline ATmegaPinFuncSet(const ATmegaPinFuncSet&) = default; + + inline void add(eATmegaPinFunc value) noexcept { + this->funcs[(uint8_t)value] = true; + } + template + inline void add(eATmegaPinFunc value, funcItemType&&... items) { + add(value); + add(((eATmegaPinFunc&&)items)...); + } + + inline void addFromPin(int pin) noexcept { + ATmegaPinFunctions funcs = _ATmega_getPinFunctions(pin); + funcs.iterate( + [this]( eATmegaPinFunc func ) noexcept { this->add(func); } + ); + } + template + inline void addFromPin(int pin, itemType&&... items) noexcept { + addFromPin(pin); + addFromPin(((itemType&&)items)...); + } + + inline bool hasFunc(eATmegaPinFunc value) const noexcept { + return this->funcs[(uint8_t)value]; + } + + inline bool hasAnyFunc() const noexcept { return false; } + template + inline bool hasAnyFunc(funcItem&& item, otherFuncItem&&... funcs) const noexcept { + return hasFunc(item) || hasAnyFunc(((otherFuncItem&&)funcs)...); + } + + template + inline void iterate(callbackType&& cb) const { + for (uint8_t n = 1; n < countof(this->funcs); n++) { + const bool& f = this->funcs[n]; + if (f) cb((eATmegaPinFunc)n); + } + } + +private: + bool funcs[(uint8_t)eATmegaPinFunc::NUM_FUNCS]; +}; + +inline void _ATmega_setPeripheralPower(eATmegaPeripheral peri, bool fullPower) { + bool reducePower = (fullPower == false); + switch(peri) { + #ifdef __AVR_TRM01__ + case eATmegaPeripheral::PADC: _PRR0._PRADC = reducePower; break; + case eATmegaPeripheral::PUSART0: _PRR0._PRUSART0 = reducePower; break; + case eATmegaPeripheral::PSPI: _PRR0._PRSPI = reducePower; break; + case eATmegaPeripheral::PTIM1: _PRR0._PRTIM1 = reducePower; break; + case eATmegaPeripheral::PTIM0: _PRR0._PRTIM0 = reducePower; break; + case eATmegaPeripheral::PTIM2: _PRR0._PRTIM2 = reducePower; break; + case eATmegaPeripheral::PTWI: _PRR0._PRTWI = reducePower; break; + case eATmegaPeripheral::PUSART1: _PRR1._PRUSART1 = reducePower; break; + case eATmegaPeripheral::PUSART2: _PRR1._PRUSART2 = reducePower; break; + case eATmegaPeripheral::PUSART3: _PRR1._PRUSART3 = reducePower; break; + case eATmegaPeripheral::PTIM3: _PRR1._PRTIM3 = reducePower; break; + case eATmegaPeripheral::PTIM4: _PRR1._PRTIM4 = reducePower; break; + case eATmegaPeripheral::PTIM5: _PRR1._PRTIM5 = reducePower; break; + #elif defined(__AVR_TRM02__) + case eATmegaPeripheral::PADC: _PRR0._PRADC = reducePower; break; + case eATmegaPeripheral::PUSART0: _PRR0._PRUSART0 = reducePower; break; + case eATmegaPeripheral::PSPI: _PRR0._PRSPI = reducePower; break; + case eATmegaPeripheral::PTIM1: _PRR0._PRTIM1 = reducePower; break; + case eATmegaPeripheral::PUSART1: _PRR0._PRUSART1 = reducePower; break; + case eATmegaPeripheral::PTIM0: _PRR0._PRTIM0 = reducePower; break; + case eATmegaPeripheral::PTIM2: _PRR0._PRTIM2 = reducePower; break; + case eATmegaPeripheral::PTWI: _PRR0._PRTWI = reducePower; break; + case eATmegaPeripheral::PTIM3: _PRR1._PRTIM3 = reducePower; break; + #elif defined(__AVR_TRM03__) + case eATmegaPeripheral::PADC: _PRR0._PRADC = reducePower; break; + case eATmegaPeripheral::PUSART0: _PRR0._PRUSART0 = reducePower; break; + case eATmegaPeripheral::PSPI: _PRR0._PRSPI = reducePower; break; + case eATmegaPeripheral::PTIM1: _PRR0._PRTIM1 = reducePower; break; + case eATmegaPeripheral::PTIM0: _PRR0._PRTIM0 = reducePower; break; + case eATmegaPeripheral::PTIM2: _PRR0._PRTIM2 = reducePower; break; + case eATmegaPeripheral::PTWI: _PRR0._PRTWI = reducePower; break; + #elif defined(__AVR_TRM04__) + case eATmegaPeripheral::PADC: _PRR0._PRADC = reducePower; break; + case eATmegaPeripheral::PSPI: _PRR0._PRSPI = reducePower; break; + case eATmegaPeripheral::PTIM1: _PRR0._PRTIM1 = reducePower; break; + case eATmegaPeripheral::PTIM0: _PRR0._PRTIM0 = reducePower; break; + case eATmegaPeripheral::PTIM2: _PRR0._PRTIM2 = reducePower; break; + case eATmegaPeripheral::PTWI: _PRR0._PRTWI = reducePower; break; + case eATmegaPeripheral::PUSART1: _PRR1._PRUSART1 = reducePower; break; + case eATmegaPeripheral::PTIM3: _PRR1._PRTIM3 = reducePower; break; + case eATmegaPeripheral::PUSB: _PRR1._PRUSB = reducePower; break; + #elif defined(__AVR_TRM05__) + case eATmegaPeripheral::PADC: _PRR0._PRADC = reducePower; break; + case eATmegaPeripheral::PUSART0: _PRR0._PRUSART0 = reducePower; break; + case eATmegaPeripheral::PSPI: _PRR0._PRSPI = reducePower; break; + case eATmegaPeripheral::PTIM1: _PRR0._PRTIM1 = reducePower; break; + case eATmegaPeripheral::PUSART1: _PRR0._PRUSART1 = reducePower; break; + case eATmegaPeripheral::PTIM0: _PRR0._PRTIM0 = reducePower; break; + case eATmegaPeripheral::PTIM2: _PRR0._PRTIM2 = reducePower; break; + case eATmegaPeripheral::PTWI: _PRR0._PRTWI = reducePower; break; + #endif + case eATmegaPeripheral::UNDEFINED: case eATmegaPeripheral::NUM_PERIPHERALS: break; + } +} + +inline bool _ATmega_getPeripheralPower(eATmegaPeripheral peri) { + switch(peri) { + #ifdef __AVR_TRM01__ + case eATmegaPeripheral::PADC: return _PRR0._PRADC == false; + case eATmegaPeripheral::PUSART0: return _PRR0._PRUSART0 == false; + case eATmegaPeripheral::PSPI: return _PRR0._PRSPI == false; + case eATmegaPeripheral::PTIM1: return _PRR0._PRTIM1 == false; + case eATmegaPeripheral::PTIM0: return _PRR0._PRTIM0 == false; + case eATmegaPeripheral::PTIM2: return _PRR0._PRTIM2 == false; + case eATmegaPeripheral::PTWI: return _PRR0._PRTWI == false; + case eATmegaPeripheral::PUSART1: return _PRR1._PRUSART1 == false; + case eATmegaPeripheral::PUSART2: return _PRR1._PRUSART2 == false; + case eATmegaPeripheral::PUSART3: return _PRR1._PRUSART3 == false; + case eATmegaPeripheral::PTIM3: return _PRR1._PRTIM3 == false; + case eATmegaPeripheral::PTIM4: return _PRR1._PRTIM4 == false; + case eATmegaPeripheral::PTIM5: return _PRR1._PRTIM5 == false; + #elif defined(__AVR_TRM02__) + case eATmegaPeripheral::PADC: return _PRR0._PRADC == false; + case eATmegaPeripheral::PUSART0: return _PRR0._PRUSART0 == false; + case eATmegaPeripheral::PSPI: return _PRR0._PRSPI == false; + case eATmegaPeripheral::PTIM1: return _PRR0._PRTIM1 == false; + case eATmegaPeripheral::PUSART1: return _PRR0._PRUSART1 == false; + case eATmegaPeripheral::PTIM0: return _PRR0._PRTIM0 == false; + case eATmegaPeripheral::PTIM2: return _PRR0._PRTIM2 == false; + case eATmegaPeripheral::PTWI: return _PRR0._PRTWI == false; + case eATmegaPeripheral::PTIM3: return _PRR1._PRTIM3 == false; + #elif defined(__AVR_TRM03__) + case eATmegaPeripheral::PADC: return _PRR0._PRADC == false; + case eATmegaPeripheral::PUSART0: return _PRR0._PRUSART0 == false; + case eATmegaPeripheral::PSPI: return _PRR0._PRSPI == false; + case eATmegaPeripheral::PTIM1: return _PRR0._PRTIM1 == false; + case eATmegaPeripheral::PTIM0: return _PRR0._PRTIM0 == false; + case eATmegaPeripheral::PTIM2: return _PRR0._PRTIM2 == false; + case eATmegaPeripheral::PTWI: return _PRR0._PRTWI == false; + #elif defined(__AVR_TRM04__) + case eATmegaPeripheral::PADC: return _PRR0._PRADC == false; + case eATmegaPeripheral::PSPI: return _PRR0._PRSPI == false; + case eATmegaPeripheral::PTIM1: return _PRR0._PRTIM1 == false; + case eATmegaPeripheral::PTIM0: return _PRR0._PRTIM0 == false; + case eATmegaPeripheral::PTIM2: return _PRR0._PRTIM2 == false; + case eATmegaPeripheral::PTWI: return _PRR0._PRTWI == false; + case eATmegaPeripheral::PUSART1: return _PRR1._PRUSART1 == false; + case eATmegaPeripheral::PTIM3: return _PRR1._PRTIM3 == false; + case eATmegaPeripheral::PUSB: return _PRR1._PRUSB == false; + #elif defined(__AVR_TRM05__) + case eATmegaPeripheral::PADC: return _PRR0._PRADC == false; + case eATmegaPeripheral::PUSART0: return _PRR0._PRUSART0 == false; + case eATmegaPeripheral::PSPI: return _PRR0._PRSPI == false; + case eATmegaPeripheral::PTIM1: return _PRR0._PRTIM1 == false; + case eATmegaPeripheral::PUSART1: return _PRR0._PRUSART1 == false; + case eATmegaPeripheral::PTIM0: return _PRR0._PRTIM0 == false; + case eATmegaPeripheral::PTIM2: return _PRR0._PRTIM2 == false; + case eATmegaPeripheral::PTWI: return _PRR0._PRTWI == false; + #endif + case eATmegaPeripheral::UNDEFINED: case eATmegaPeripheral::NUM_PERIPHERALS: break; + } + return false; +} + +inline eATmegaPeripheral _ATmega_getPeripheralForFunc( eATmegaPinFunc func ) { + // In C++20 there is the "using-enum" statement. I wish we had C++20 over here... + //using enum eATmegaPinFunc; + switch(func) { + #ifdef __AVR_TRM01__ + case eATmegaPinFunc::TOC0A: case eATmegaPinFunc::TOC0B: return eATmegaPeripheral::PTIM0; + case eATmegaPinFunc::TOC1A: case eATmegaPinFunc::TOC1B: case eATmegaPinFunc::TOC1C: return eATmegaPeripheral::PTIM1; + case eATmegaPinFunc::TOC2A: case eATmegaPinFunc::TOC2B: return eATmegaPeripheral::PTIM2; + case eATmegaPinFunc::TOC3A: case eATmegaPinFunc::TOC3B: case eATmegaPinFunc::TOC3C: return eATmegaPeripheral::PTIM3; + case eATmegaPinFunc::TOC4A: case eATmegaPinFunc::TOC4B: case eATmegaPinFunc::TOC4C: return eATmegaPeripheral::PTIM4; + case eATmegaPinFunc::TOC5A: case eATmegaPinFunc::TOC5B: case eATmegaPinFunc::TOC5C: return eATmegaPeripheral::PTIM5; + case eATmegaPinFunc::SPI_MISO: case eATmegaPinFunc::SPI_MOSI: case eATmegaPinFunc::SPI_SCK: case eATmegaPinFunc::SPI_CS: return eATmegaPeripheral::PSPI; + case eATmegaPinFunc::TIMER0_CLKI: return eATmegaPeripheral::PTIM0; + case eATmegaPinFunc::TIMER1_CLKI: case eATmegaPinFunc::TIMER1_ICP: return eATmegaPeripheral::PTIM1; + case eATmegaPinFunc::TIMER3_CLKI: case eATmegaPinFunc::TIMER3_ICP: return eATmegaPeripheral::PTIM3; + case eATmegaPinFunc::TIMER4_CLKI: case eATmegaPinFunc::TIMER4_ICP: return eATmegaPeripheral::PTIM4; + case eATmegaPinFunc::TIMER5_CLKI: case eATmegaPinFunc::TIMER5_ICP: return eATmegaPeripheral::PTIM5; + case eATmegaPinFunc::USART0_CLK: case eATmegaPinFunc::USART0_TXD: case eATmegaPinFunc::USART0_RXD: return eATmegaPeripheral::PUSART0; + case eATmegaPinFunc::USART1_CLK: case eATmegaPinFunc::USART1_TXD: case eATmegaPinFunc::USART1_RXD: return eATmegaPeripheral::PUSART1; + case eATmegaPinFunc::USART2_CLK: case eATmegaPinFunc::USART2_TXD: case eATmegaPinFunc::USART2_RXD: return eATmegaPeripheral::PUSART2; + case eATmegaPinFunc::USART3_CLK: case eATmegaPinFunc::USART3_TXD: case eATmegaPinFunc::USART3_RXD: return eATmegaPeripheral::PUSART3; + case eATmegaPinFunc::TWI_SDA: case eATmegaPinFunc::TWI_CLK: return eATmegaPeripheral::PTWI; + case eATmegaPinFunc::ADC15: case eATmegaPinFunc::ADC14: case eATmegaPinFunc::ADC13: case eATmegaPinFunc::ADC12: case eATmegaPinFunc::ADC11: case eATmegaPinFunc::ADC10: case eATmegaPinFunc::ADC9: case eATmegaPinFunc::ADC8: + case eATmegaPinFunc::ADC7: case eATmegaPinFunc::ADC6: case eATmegaPinFunc::ADC5: case eATmegaPinFunc::ADC4: case eATmegaPinFunc::ADC3: case eATmegaPinFunc::ADC2: case eATmegaPinFunc::ADC1: case eATmegaPinFunc::ADC0: + return eATmegaPeripheral::PADC; + #elif defined(__AVR_TRM02__) + case eATmegaPinFunc::ADC7: case eATmegaPinFunc::ADC6: case eATmegaPinFunc::ADC5: case eATmegaPinFunc::ADC4: case eATmegaPinFunc::ADC3: case eATmegaPinFunc::ADC2: case eATmegaPinFunc::ADC1: case eATmegaPinFunc::ADC0: + return eATmegaPeripheral::PADC; + case eATmegaPinFunc::SPI_SCK: case eATmegaPinFunc::SPI_MISO: case eATmegaPinFunc::SPI_MOSI: case eATmegaPinFunc::SPI_CS: return eATmegaPeripheral::PSPI; + case eATmegaPinFunc::TIMER3_ICP: case eATmegaPinFunc::TIMER3_ECI: return eATmegaPeripheral::PTIM3; + case eATmegaPinFunc::TIMER1_ECI: case eATmegaPinFunc::TIMER1_ICP: return eATmegaPeripheral::PTIM1; + case eATmegaPinFunc::TIMER0_ECI: return eATmegaPeripheral::PTIM0; + case eATmegaPinFunc::TOC3B: case eATmegaPinFunc::TOC3A: return eATmegaPeripheral::PTIM3; + case eATmegaPinFunc::TOC2A: case eATmegaPinFunc::TOC2B: return eATmegaPeripheral::PTIM2; + case eATmegaPinFunc::TOC1A: case eATmegaPinFunc::TOC1B: return eATmegaPeripheral::PTIM1; + case eATmegaPinFunc::TOC0B: case eATmegaPinFunc::TOC0A: return eATmegaPeripheral::PTIM0; + case eATmegaPinFunc::USART0_CLK: case eATmegaPinFunc::USART0_TXD: case eATmegaPinFunc::USART0_RXD: return eATmegaPeripheral::PUSART0; + case eATmegaPinFunc::USART1_CLK: case eATmegaPinFunc::USART1_TXD: case eATmegaPinFunc::USART1_RXD: return eATmegaPeripheral::PUSART1; + case eATmegaPinFunc::TWI_SDA: case eATmegaPinFunc::TWI_CLK: return eATmegaPeripheral::PTWI; + #elif defined(__AVR_TRM03__) + case eATmegaPinFunc::ADC5: case eATmegaPinFunc::ADC4: case eATmegaPinFunc::ADC3: case eATmegaPinFunc::ADC2: case eATmegaPinFunc::ADC1: case eATmegaPinFunc::ADC0: + return eATmegaPeripheral::PADC; + case eATmegaPinFunc::SPI_SCK: case eATmegaPinFunc::SPI_MISO: case eATmegaPinFunc::SPI_MOSI: case eATmegaPinFunc::SPI_CS: return eATmegaPeripheral::PSPI; + case eATmegaPinFunc::TOC2B: case eATmegaPinFunc::TOC2A: return eATmegaPeripheral::PTIM2; + case eATmegaPinFunc::TOC1B: case eATmegaPinFunc::TOC1A: return eATmegaPeripheral::PTIM1; + case eATmegaPinFunc::TOC0A: case eATmegaPinFunc::TOC0B: return eATmegaPeripheral::PTIM0; + case eATmegaPinFunc::TIMER1_ICP: case eATmegaPinFunc::TIMER1_ECI: return eATmegaPeripheral::PTIM1; + case eATmegaPinFunc::TIMER0_ECI: return eATmegaPeripheral::PTIM0; + case eATmegaPinFunc::TWI_CLK: case eATmegaPinFunc::TWI_SDA: return eATmegaPeripheral::PTWI; + case eATmegaPinFunc::USART_CLK: case eATmegaPinFunc::USART_TXD: case eATmegaPinFunc::USART_RXD: return eATmegaPeripheral::PUSART0; + #elif defined(__AVR_TRM04__) + case eATmegaPinFunc::TOC0B: case eATmegaPinFunc::TOC0A: return eATmegaPeripheral::PTIM0; + case eATmegaPinFunc::TOC1C: case eATmegaPinFunc::TOC1B: case eATmegaPinFunc::TOC1A: return eATmegaPeripheral::PTIM1; + case eATmegaPinFunc::TOC2B: case eATmegaPinFunc::TOC2A: return eATmegaPeripheral::PTIM2; + case eATmegaPinFunc::TOC3A: case eATmegaPinFunc::TOC3B: case eATmegaPinFunc::TOC3C: return eATmegaPeripheral::PTIM3; + case eATmegaPinFunc::SPI_MISO: case eATmegaPinFunc::SPI_MOSI: case eATmegaPinFunc::SPI_SCK: case eATmegaPinFunc::SPI_CS: return eATmegaPeripheral::PSPI; + case eATmegaPinFunc::TIMER3_ICP: case eATmegaPinFunc::TIMER3_CLKI: return eATmegaPeripheral::PTIM3; + case eATmegaPinFunc::TIMER1_ICP: case eATmegaPinFunc::TIMER1_CLKI: return eATmegaPeripheral::PTIM1; + case eATmegaPinFunc::TIMER0_CLKI: return eATmegaPeripheral::PTIM0; + case eATmegaPinFunc::USART1_CLK: case eATmegaPinFunc::USART1_TXD: case eATmegaPinFunc::USART1_RXD: return eATmegaPeripheral::PUSART1; + case eATmegaPinFunc::TWI_SDA: case eATmegaPinFunc::TWI_CLK: return eATmegaPeripheral::PTWI; + case eATmegaPinFunc::UID: case eATmegaPinFunc::UVCON: return eATmegaPeripheral::PUSB; + case eATmegaPinFunc::ADC7: case eATmegaPinFunc::ADC6: case eATmegaPinFunc::ADC5: case eATmegaPinFunc::ADC4: case eATmegaPinFunc::ADC3: case eATmegaPinFunc::ADC2: case eATmegaPinFunc::ADC1: case eATmegaPinFunc::ADC0: + return eATmegaPeripheral::PADC; + #elif defined(__AVR_TRM05__) + case eATmegaPinFunc::ADC7: case eATmegaPinFunc::ADC6: case eATmegaPinFunc::ADC5: case eATmegaPinFunc::ADC4: case eATmegaPinFunc::ADC3: case eATmegaPinFunc::ADC2: case eATmegaPinFunc::ADC1: case eATmegaPinFunc::ADC0: + return eATmegaPeripheral::PADC; + case eATmegaPinFunc::SPI_MISO: case eATmegaPinFunc::SPI_MOSI: case eATmegaPinFunc::SPI_SCK: case eATmegaPinFunc::SPI_CS: return eATmegaPeripheral::PSPI; + case eATmegaPinFunc::TIMER1_ICP: case eATmegaPinFunc::TIMER1_ECI: return eATmegaPeripheral::PTIM1; + case eATmegaPinFunc::TIMER0_ICP: case eATmegaPinFunc::TIMER0_ECI: return eATmegaPeripheral::PTIM0; + case eATmegaPinFunc::TOC0B: case eATmegaPinFunc::TOC0A: return eATmegaPeripheral::PTIM0; + case eATmegaPinFunc::TOC1A: case eATmegaPinFunc::TOC1B: return eATmegaPeripheral::PTIM1; + case eATmegaPinFunc::TOC2A: case eATmegaPinFunc::TOC2B: return eATmegaPeripheral::PTIM2; + case eATmegaPinFunc::TWI_CLK: case eATmegaPinFunc::TWI_SDA: return eATmegaPeripheral::PTWI; + case eATmegaPinFunc::USART0_CLK: case eATmegaPinFunc::USART0_TXD: case eATmegaPinFunc::USART0_RXD: return eATmegaPeripheral::PUSART0; + case eATmegaPinFunc::USART1_CLK: case eATmegaPinFunc::USART1_TXD: case eATmegaPinFunc::USART1_RXD: return eATmegaPeripheral::PUSART1; + #endif + // There are quite some pin functions that have no peripheral assignment, and that is OK! + default: break; + } + return eATmegaPeripheral::UNDEFINED; +} + +struct ATmegaPeripheralSet { + inline ATmegaPeripheralSet() noexcept { + for (bool& f : this->funcs) f = false; + } + template + inline ATmegaPeripheralSet(funcItemType&&... items) noexcept : ATmegaPinFuncSet() { + add(((eATmegaPinFunc&&)items)...); + } + inline ATmegaPeripheralSet(const ATmegaPeripheralSet&) = default; + + inline void add(eATmegaPeripheral value) noexcept { + this->funcs[(uint8_t)value] = true; + } + template + inline void add(eATmegaPeripheral value, funcItemType&&... items) noexcept { + add(value); + add(((funcItemType&&)items)...); + } + + inline bool hasItem(eATmegaPeripheral value) const noexcept { + return this->funcs[(uint8_t)value]; + } + template + inline bool hasItem(eATmegaPeripheral&& item, otherFuncItem&&... funcs) const noexcept { + return hasItem(item) || hasItem(((otherFuncItem&&)funcs)...); + } + + template + inline void iterate(callbackType&& cb) const { + for (uint8_t n = 1; n < countof(funcs); n++) { + const bool& f = this->funcs[n]; + if (f) cb( (eATmegaPeripheral)n ); + } + } + + inline void fromPinFuncs(const ATmegaPinFuncSet& funcSet) { + funcSet.iterate( + [this]( eATmegaPinFunc func ) noexcept { + this->add( _ATmega_getPeripheralForFunc(func) ); + } + ); + } + +private: + bool funcs[(uint8_t)eATmegaPeripheral::NUM_PERIPHERALS]; +}; + +struct ATmegaPeripheralPowerGate { + inline ATmegaPeripheralPowerGate(ATmegaPeripheralSet& periSet) noexcept : periSet(periSet) { + periSet.iterate( + [this]( eATmegaPeripheral peri ) noexcept { + this->states[(uint8_t)peri] = _ATmega_getPeripheralPower(peri); + _ATmega_setPeripheralPower(peri, true); + } + ); + } + inline ATmegaPeripheralPowerGate(const ATmegaPeripheralPowerGate&) = delete; + + inline ~ATmegaPeripheralPowerGate() { + periSet.iterate( + [this]( eATmegaPeripheral peri ) noexcept { + _ATmega_setPeripheralPower(peri, this->states[(uint8_t)peri]); + } + ); + } + + inline ATmegaPeripheralPowerGate& operator = (const ATmegaPeripheralPowerGate&) = delete; + +private: + ATmegaPeripheralSet& periSet; + bool states[(uint8_t)eATmegaPeripheral::NUM_PERIPHERALS]; +}; + +inline pin_dev_state_t _ATmega_savePinAlternates(const ATmegaPinFuncSet& funcSet) { + // TODO: the manual states that registers of power-reduced peripherals cannot be read or written, and that + // the resources (GPIO pins) remain occupied during power-reduction. This is a serious problem and we should + // add power-reduction awareness to this logic! + + pin_dev_state_t state; + + ATmegaPeripheralSet periSet; + periSet.fromPinFuncs(funcSet); + + ATmegaPeripheralPowerGate pgate(periSet); + + #ifdef __AVR_TRM01__ + // See page 75ff of ATmega2560 technical reference manual. + if (funcSet.hasAnyFunc( + eATmegaPinFunc::EXTMEM_AD15, eATmegaPinFunc::EXTMEM_AD14, eATmegaPinFunc::EXTMEM_AD13, eATmegaPinFunc::EXTMEM_AD12, eATmegaPinFunc::EXTMEM_AD11, eATmegaPinFunc::EXTMEM_AD10, eATmegaPinFunc::EXTMEM_AD9, eATmegaPinFunc::EXTMEM_AD8, + eATmegaPinFunc::EXTMEM_AD7, eATmegaPinFunc::EXTMEM_AD6, eATmegaPinFunc::EXTMEM_AD5, eATmegaPinFunc::EXTMEM_AD4, eATmegaPinFunc::EXTMEM_AD3, eATmegaPinFunc::EXTMEM_AD2, eATmegaPinFunc::EXTMEM_AD1, eATmegaPinFunc::EXTMEM_AD0, + eATmegaPinFunc::EXTMEM_ALE, eATmegaPinFunc::EXTMEM_RD, eATmegaPinFunc::EXTMEM_WR + )) { + state._SRE = _XMCRA._SRE; + _XMCRA._SRE = false; + } + if (funcSet.hasAnyFunc( + eATmegaPinFunc::PCI0, eATmegaPinFunc::PCI1, eATmegaPinFunc::PCI2, eATmegaPinFunc::PCI3, eATmegaPinFunc::PCI4, eATmegaPinFunc::PCI5, eATmegaPinFunc::PCI6, eATmegaPinFunc::PCI7 + )) { + state._PCIE0 = _PCICR._PCIE0; + _PCICR._PCIE0 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1C)) { + state._COM1C = TIMER1._TCCRnA._COMnC; + TIMER1._TCCRnA._COMnC = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1B)) { + state._COM1B = TIMER1._TCCRnA._COMnB; + TIMER1._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1A)) { + state._COM1A = TIMER1._TCCRnA._COMnA; + TIMER1._TCCRnA._COMnA = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2A)) { + state._COM2A = _TIMER2._TCCRnA._COMnA; + _TIMER2._TCCRnA._COMnA = 0; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART1_TXD, eATmegaPinFunc::USART1_CLK)) { + state._USART1_TXEN = USART1._UCSRnB._TXEN; + USART1._UCSRnB._TXEN = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART1_RXD, eATmegaPinFunc::USART1_CLK)) { + state._USART1_RXEN = USART1._UCSRnB._RXEN; + USART1._UCSRnB._RXEN = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC3C)) { + state._COM3C = TIMER3._TCCRnA._COMnC; + TIMER3._TCCRnA._COMnC = 0; + } + // There is an error in the technical reference manual signal mapping table + // of ATmega2560 where is says that pin 3 is mapped to OC3B, but the list + // says OC3A. + if (funcSet.hasFunc(eATmegaPinFunc::TOC3B)) { + state._COM3B = TIMER3._TCCRnA._COMnB; + TIMER3._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC3A)) { + state._COM3A = TIMER3._TCCRnA._COMnA; + TIMER3._TCCRnA._COMnA = 0; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART0_RXD, eATmegaPinFunc::USART0_CLK)) { + state._USART0_RXEN = USART0._UCSRnB._RXEN; + USART0._UCSRnB._RXEN = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART0_TXD, eATmegaPinFunc::USART0_CLK)) { + state._USART0_TXEN = USART0._UCSRnB._TXEN; + USART0._UCSRnB._TXEN = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI15, eATmegaPinFunc::PCI14, eATmegaPinFunc::PCI13, eATmegaPinFunc::PCI12, eATmegaPinFunc::PCI11, eATmegaPinFunc::PCI10, eATmegaPinFunc::PCI9, eATmegaPinFunc::PCI8)) { + state._PCIE1 = _PCICR._PCIE1; + _PCICR._PCIE1 = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::TOC0B)) { + state._COM0B = TIMER0._TCCRnA._COMnB; + TIMER0._TCCRnA._COMnB = 0; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::TOSC1, eATmegaPinFunc::TOSC2)) { + state._AS2 = _ASSR._AS2; + _ASSR._AS2 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2B)) { + state._COM2B = _TIMER2._TCCRnA._COMnB; + _TIMER2._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC4C)) { + state._COM4C = TIMER4._TCCRnA._COMnC; + TIMER4._TCCRnA._COMnC = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC4B)) { + state._COM4B = TIMER4._TCCRnA._COMnB; + TIMER4._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC4A)) { + state._COM4A = TIMER4._TCCRnA._COMnA; + TIMER4._TCCRnA._COMnA = 0; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART2_RXD, eATmegaPinFunc::USART2_CLK)) { + state._USART2_RXEN = USART2._UCSRnB._RXEN; + USART2._UCSRnB._RXEN = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART2_TXD, eATmegaPinFunc::USART2_CLK)) { + state._USART2_TXEN = USART2._UCSRnB._TXEN; + USART2._UCSRnB._TXEN = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART3_TXD, eATmegaPinFunc::USART3_CLK)) { + state._USART3_RXEN = USART3._UCSRnB._RXEN; + USART3._UCSRnB._RXEN = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART3_TXD, eATmegaPinFunc::USART3_CLK)) { + state._USART3_TXEN = USART3._UCSRnB._TXEN; + USART3._UCSRnB._TXEN = false; + } + if (funcSet.hasAnyFunc( + eATmegaPinFunc::PCI23, eATmegaPinFunc::PCI22, eATmegaPinFunc::PCI21, eATmegaPinFunc::PCI20, eATmegaPinFunc::PCI19, eATmegaPinFunc::PCI18, eATmegaPinFunc::PCI17, eATmegaPinFunc::PCI16 + )) { + state._PCIE2 = _PCICR._PCIE2; + _PCICR._PCIE2 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC5C)) { + state._COM5C = TIMER5._TCCRnA._COMnC; + TIMER5._TCCRnA._COMnC = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC5B)) { + state._COM5B = TIMER5._TCCRnA._COMnB; + TIMER5._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC5A)) { + state._COM5A = TIMER5._TCCRnA._COMnA; + TIMER5._TCCRnA._COMnA = 0; + } + #elif defined(__AVR_TRM02__) + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI7, eATmegaPinFunc::PCI6, eATmegaPinFunc::PCI5, eATmegaPinFunc::PCI4, eATmegaPinFunc::PCI3, eATmegaPinFunc::PCI2, eATmegaPinFunc::PCI1, eATmegaPinFunc::PCI0)) { + state._PCIE0 = _PCICR._PCIE0; + _PCICR._PCIE0 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC7)) { + state._ADC7D = _DIDR0._ADC7D; + _DIDR0._ADC7D = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC6)) { + state._ADC6D = _DIDR0._ADC6D; + _DIDR0._ADC6D = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC5)) { + state._ADC5D = _DIDR0._ADC5D; + _DIDR0._ADC5D = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC4)) { + state._ADC4D = _DIDR0._ADC4D; + _DIDR0._ADC4D = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC3)) { + state._ADC3D = _DIDR0._ADC3D; + _DIDR0._ADC3D = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC2)) { + state._ADC2D = _DIDR0._ADC2D; + _DIDR0._ADC2D = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC1)) { + state._ADC1D = _DIDR0._ADC1D; + _DIDR0._ADC1D = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC0)) { + state._ADC0D = _DIDR0._ADC0D; + _DIDR0._ADC0D = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI15, eATmegaPinFunc::PCI14, eATmegaPinFunc::PCI13, eATmegaPinFunc::PCI12, eATmegaPinFunc::PCI11, eATmegaPinFunc::PCI10, eATmegaPinFunc::PCI9, eATmegaPinFunc::PCI8)) { + state._PCIE1 = _PCICR._PCIE1; + _PCICR._PCIE1 = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::SPI_CS)) { + state._SPE = _SPCR._SPE; + _SPCR._SPE = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC0A)) { + state._COM0A = TIMER0._TCCRnA._COMnA; + TIMER0._TCCRnA._COMnA = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC0B)) { + state._COM0B = TIMER0._TCCRnA._COMnB; + TIMER0._TCCRnA._COMnB = 0; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::TOSC1, eATmegaPinFunc::TOSC2)) { + state._AS2 = _ASSR._AS2; + _ASSR._AS2 = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI23, eATmegaPinFunc::PCI22, eATmegaPinFunc::PCI21, eATmegaPinFunc::PCI20, eATmegaPinFunc::PCI19, eATmegaPinFunc::PCI18, eATmegaPinFunc::PCI17, eATmegaPinFunc::PCI16)) { + state._PCIE2 = _PCICR._PCIE2; + _PCICR._PCIE2 = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI31, eATmegaPinFunc::PCI30, eATmegaPinFunc::PCI29, eATmegaPinFunc::PCI28, eATmegaPinFunc::PCI27, eATmegaPinFunc::PCI26, eATmegaPinFunc::PCI25, eATmegaPinFunc::PCI24)) { + state._PCIE3 = _PCICR._PCIE3; + _PCICR._PCIE3 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2A)) { + state._COM2A = _TIMER2._TCCRnA._COMnA; + _TIMER2._TCCRnA._COMnA = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2B)) { + state._COM2B = _TIMER2._TCCRnA._COMnB; + _TIMER2._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1A)) { + state._COM1A = TIMER1._TCCRnA._COMnA; + TIMER1._TCCRnA._COMnA = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1B)) { + state._COM1B = TIMER1._TCCRnA._COMnB; + TIMER1._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::USART1_TXD)) { + state._USART1_TXEN = USART1._UCSRnB._TXEN; + USART1._UCSRnB._TXEN = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::USART1_RXD)) { + state._USART1_RXEN = USART1._UCSRnB._RXEN; + USART1._UCSRnB._RXEN = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::USART0_TXD)) { + state._USART0_TXEN = USART0._UCSRnB._TXEN; + USART0._UCSRnB._TXEN = false; + } + // There is a bug in the ATmega164A technical reference manual where + // it says that pin 0 is mapped to USART1 RXD in the signal mapping table + // but the associated list says USART0 RXD. + if (funcSet.hasFunc(eATmegaPinFunc::USART0_RXD)) { + state._USART0_RXEN = USART0._UCSRnB._RXEN; + USART0._UCSRnB._RXEN = false; + } + #elif defined(__AVR_TRM03__) + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI7, eATmegaPinFunc::PCI6, eATmegaPinFunc::PCI5, eATmegaPinFunc::PCI4, eATmegaPinFunc::PCI3, eATmegaPinFunc::PCI2, eATmegaPinFunc::PCI1, eATmegaPinFunc::PCI0)) { + state._PCIE0 = _PCICR._PCIE0; + _PCICR._PCIE0 = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::TOSC1, eATmegaPinFunc::TOSC2)) { + state._AS2 = _ASSR._AS2; + _ASSR._AS2 = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::SPI_CS)) { + state._SPE = _SPCR._SPE; + _SPCR._SPE = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2A)) { + state._COM2A = _TIMER2._TCCRnA._COMnA; + _TIMER2._TCCRnA._COMnA = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1B)) { + state._COM1B = TIMER1._TCCRnA._COMnB; + TIMER1._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1A)) { + state._COM1A = TIMER1._TCCRnA._COMnA; + TIMER1._TCCRnA._COMnA = 0; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI14, eATmegaPinFunc::PCI13, eATmegaPinFunc::PCI12, eATmegaPinFunc::PCI11, eATmegaPinFunc::PCI10, eATmegaPinFunc::PCI9, eATmegaPinFunc::PCI8)) { + state._PCIE1 = _PCICR._PCIE1; + _PCICR._PCIE1 = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::TWI_CLK, eATmegaPinFunc::TWI_SDA)) { + state._TWEN = _TWCR._TWEN; + _TWCR._TWEN = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC5)) { + state._ADC5D = _DIDR0._ADC5D; + _DIDR0._ADC5D = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC4)) { + state._ADC4D = _DIDR0._ADC4D; + _DIDR0._ADC4D = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC3)) { + state._ADC3D = _DIDR0._ADC3D; + _DIDR0._ADC3D = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC2)) { + state._ADC2D = _DIDR0._ADC2D; + _DIDR0._ADC2D = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC1)) { + state._ADC1D = _DIDR0._ADC1D; + _DIDR0._ADC1D = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC0)) { + state._ADC0D = _DIDR0._ADC0D; + _DIDR0._ADC0D = false; + } + // There is a bug in the ATmega48A technical reference manual where pin 2 + // is said to be mapped to PCIE1 but logically it should be PCIE2 instead. + // The real mapping can be read in the documentation of the PCICR register. + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI23, eATmegaPinFunc::PCI22, eATmegaPinFunc::PCI21, eATmegaPinFunc::PCI20, eATmegaPinFunc::PCI19, eATmegaPinFunc::PCI18, eATmegaPinFunc::PCI17, eATmegaPinFunc::PCI16)) { + state._PCIE2 = _PCICR._PCIE2; + _PCICR._PCIE2 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC0A)) { + state._COM0A = TIMER0._TCCRnA._COMnA; + TIMER0._TCCRnA._COMnA = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC0B)) { + state._COM0B = TIMER0._TCCRnA._COMnB; + TIMER0._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::USART_CLK)) { + state._UMSEL = USART0._UCSRnC._UMSEL; + USART0._UCSRnC._UMSEL = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2B)) { + state._COM2B = _TIMER2._TCCRnA._COMnB; + _TIMER2._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::USART_TXD)) { + state._USART0_TXEN = USART0._UCSRnB._TXEN; + USART0._UCSRnB._TXEN = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::USART_RXD)) { + state._USART0_RXEN = USART0._UCSRnB._RXEN; + USART0._UCSRnB._RXEN = false; + } + #elif defined(__AVR_TRM04__) + if (funcSet.hasAnyFunc( + eATmegaPinFunc::EXTMEM_AD15, eATmegaPinFunc::EXTMEM_AD14, eATmegaPinFunc::EXTMEM_AD13, eATmegaPinFunc::EXTMEM_AD12, eATmegaPinFunc::EXTMEM_AD11, eATmegaPinFunc::EXTMEM_AD10, eATmegaPinFunc::EXTMEM_AD9, eATmegaPinFunc::EXTMEM_AD8, + eATmegaPinFunc::EXTMEM_AD7, eATmegaPinFunc::EXTMEM_AD6, eATmegaPinFunc::EXTMEM_AD5, eATmegaPinFunc::EXTMEM_AD4, eATmegaPinFunc::EXTMEM_AD3, eATmegaPinFunc::EXTMEM_AD2, eATmegaPinFunc::EXTMEM_AD1, eATmegaPinFunc::EXTMEM_AD0, + eATmegaPinFunc::EXTMEM_ALE, eATmegaPinFunc::EXTMEM_RD, eATmegaPinFunc::EXTMEM_WR + )) { + state._SRE = _XMCRA._SRE; + _XMCRA._SRE = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1C)) { + state._COM1C = TIMER1._TCCRnA._COMnC; + TIMER1._TCCRnA._COMnC = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1B)) { + state._COM1B = TIMER1._TCCRnA._COMnB; + TIMER1._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1A)) { + state._COM1A = TIMER1._TCCRnA._COMnA; + TIMER1._TCCRnA._COMnA = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2A)) { + state._COM2A = _TIMER2._TCCRnA._COMnA; + _TIMER2._TCCRnA._COMnA = 0; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::SPI_CS)) { + state._SPE = _SPCR._SPE; + _SPCR._SPE = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI7, eATmegaPinFunc::PCI6, eATmegaPinFunc::PCI5, eATmegaPinFunc::PCI4, eATmegaPinFunc::PCI3, eATmegaPinFunc::PCI2, eATmegaPinFunc::PCI1, eATmegaPinFunc::PCI0)) { + state._PCIE0 = _PCICR._PCIE0; + _PCICR._PCIE0 = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART1_CLK, eATmegaPinFunc::USART1_TXD)) { + state._USART1_TXEN = USART1._UCSRnB._TXEN; + USART1._UCSRnB._TXEN = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART1_CLK, eATmegaPinFunc::USART1_RXD)) { + state._USART1_RXEN = USART1._UCSRnB._RXEN; + USART1._UCSRnB._RXEN = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::TWI_SDA, eATmegaPinFunc::TWI_CLK)) { + state._TWEN = _TWCR._TWEN; + _TWCR._TWEN = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2B)) { + state._COM2B = _TIMER2._TCCRnA._COMnB; + _TIMER2._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC0B)) { + state._COM0B = TIMER0._TCCRnA._COMnB; + TIMER0._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT3)) { + state._INT3 = _EIMSK._INT3; + _EIMSK._INT3 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT2)) { + state._INT2 = _EIMSK._INT2; + _EIMSK._INT2 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT1)) { + state._INT1 = _EIMSK._INT1; + _EIMSK._INT1 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT0)) { + state._INT0 = _EIMSK._INT0; + _EIMSK._INT0 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::UVCON)) { + state._UVCONE = _UHWCON._UVCONE; + _UHWCON._UVCONE = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::UID)) { + state._UIDE = _UHWCON._UIDE; + _UHWCON._UIDE = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT7)) { + state._INT7 = _EIMSK._INT7; + _EIMSK._INT7 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT6)) { + state._INT6 = _EIMSK._INT6; + _EIMSK._INT6 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT5)) { + state._INT5 = _EIMSK._INT5; + _EIMSK._INT5 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT4)) { + state._INT4 = _EIMSK._INT4; + _EIMSK._INT4 = false; + } + #elif defined(__AVR_TRM05__) + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI7, eATmegaPinFunc::PCI6, eATmegaPinFunc::PCI5, eATmegaPinFunc::PCI4, eATmegaPinFunc::PCI3, eATmegaPinFunc::PCI2, eATmegaPinFunc::PCI1, eATmegaPinFunc::PCI0)) { + state._PCIE0 = _PCICR._PCIE0; + _PCICR._PCIE0 = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI15, eATmegaPinFunc::PCI14, eATmegaPinFunc::PCI13, eATmegaPinFunc::PCI12, eATmegaPinFunc::PCI11, eATmegaPinFunc::PCI10, eATmegaPinFunc::PCI9, eATmegaPinFunc::PCI8)) { + state._PCIE1 = _PCICR._PCIE1; + _PCICR._PCIE1 = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI23, eATmegaPinFunc::PCI22, eATmegaPinFunc::PCI21, eATmegaPinFunc::PCI20, eATmegaPinFunc::PCI19, eATmegaPinFunc::PCI18, eATmegaPinFunc::PCI17, eATmegaPinFunc::PCI16)) { + state._PCIE2 = _PCICR._PCIE2; + _PCICR._PCIE2 = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI31, eATmegaPinFunc::PCI30, eATmegaPinFunc::PCI29, eATmegaPinFunc::PCI28, eATmegaPinFunc::PCI27, eATmegaPinFunc::PCI26, eATmegaPinFunc::PCI25, eATmegaPinFunc::PCI24)) { + state._PCIE3 = _PCICR._PCIE3; + _PCICR._PCIE3 = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::SPI_CS)) { + state._SPE = _SPCR._SPE; + _SPCR._SPE = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC0B)) { + state._COM0B = TIMER0._TCCRnA._COMnB; + TIMER0._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC0A)) { + state._COM0A = TIMER0._TCCRnA._COMnA; + TIMER0._TCCRnA._COMnA = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2A)) { + state._COM2A = _TIMER2._TCCRnA._COMnA; + _TIMER2._TCCRnA._COMnA = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2B)) { + state._COM2B = _TIMER2._TCCRnA._COMnB; + _TIMER2._TCCRnA._COMnB = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1A)) { + state._COM1A = TIMER1._TCCRnA._COMnA; + TIMER1._TCCRnA._COMnA = 0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1B)) { + state._COM1B = TIMER1._TCCRnA._COMnB; + TIMER1._TCCRnA._COMnB = 0; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::TWI_CLK, eATmegaPinFunc::TWI_SDA)) { + state._TWEN = _TWCR._TWEN; + _TWCR._TWEN = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT2)) { + state._INT2 = _EIMSK._INT2; + _EIMSK._INT2 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT1)) { + state._INT1 = _EIMSK._INT1; + _EIMSK._INT1 = false; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT0)) { + state._INT0 = _EIMSK._INT0; + _EIMSK._INT0 = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART0_CLK, eATmegaPinFunc::USART0_TXD)) { + state._TXEN0 = USART0._UCSRnB._TXEN; + USART0._UCSRnB._TXEN = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART0_CLK, eATmegaPinFunc::USART0_RXD)) { + state._RXEN0 = USART0._UCSRnB._RXEN; + USART0._UCSRnB._RXEN = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART1_CLK, eATmegaPinFunc::USART1_TXD)) { + state._TXEN1 = USART1._UCSRnB._TXEN; + USART1._UCSRnB._TXEN = false; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART1_CLK, eATmegaPinFunc::USART1_RXD)) { + state._RXEN1 = USART1._UCSRnB._RXEN; + USART1._UCSRnB._RXEN = false; + } + #endif + + return state; +} + +inline void _ATmega_restorePinAlternates(const ATmegaPinFuncSet& funcSet, const pin_dev_state_t& state) { + ATmegaPeripheralSet periSet; + periSet.fromPinFuncs(funcSet); + + ATmegaPeripheralPowerGate pgate(periSet); + + #ifdef __AVR_TRM01__ + // See page 75ff of ATmega2560 technical reference manual. + if (funcSet.hasAnyFunc( + eATmegaPinFunc::EXTMEM_AD15, eATmegaPinFunc::EXTMEM_AD14, eATmegaPinFunc::EXTMEM_AD13, eATmegaPinFunc::EXTMEM_AD12, eATmegaPinFunc::EXTMEM_AD11, eATmegaPinFunc::EXTMEM_AD10, eATmegaPinFunc::EXTMEM_AD9, eATmegaPinFunc::EXTMEM_AD8, + eATmegaPinFunc::EXTMEM_AD7, eATmegaPinFunc::EXTMEM_AD6, eATmegaPinFunc::EXTMEM_AD5, eATmegaPinFunc::EXTMEM_AD4, eATmegaPinFunc::EXTMEM_AD3, eATmegaPinFunc::EXTMEM_AD2, eATmegaPinFunc::EXTMEM_AD1, eATmegaPinFunc::EXTMEM_AD0, + eATmegaPinFunc::EXTMEM_ALE, eATmegaPinFunc::EXTMEM_RD, eATmegaPinFunc::EXTMEM_WR + )) { + _XMCRA._SRE = state._SRE; + } + if (funcSet.hasAnyFunc( + eATmegaPinFunc::PCI0, eATmegaPinFunc::PCI1, eATmegaPinFunc::PCI2, eATmegaPinFunc::PCI3, eATmegaPinFunc::PCI4, eATmegaPinFunc::PCI5, eATmegaPinFunc::PCI6, eATmegaPinFunc::PCI7 + )) { + _PCICR._PCIE0 = state._PCIE0; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1C)) { + TIMER1._TCCRnA._COMnC = state._COM1C; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1B)) { + TIMER1._TCCRnA._COMnB = state._COM1B; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1A)) { + TIMER1._TCCRnA._COMnA = state._COM1A; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2A)) { + _TIMER2._TCCRnA._COMnA = state._COM2A; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART1_TXD, eATmegaPinFunc::USART1_CLK)) { + USART1._UCSRnB._TXEN = state._USART1_TXEN; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART1_RXD, eATmegaPinFunc::USART1_CLK)) { + USART1._UCSRnB._RXEN = state._USART1_RXEN; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC3C)) { + TIMER3._TCCRnA._COMnC = state._COM3C; + } + // There is an error in the technical reference manual signal mapping table + // of ATmega2560 where is says that pin 3 is mapped to OC3B, but the list + // says OC3A. + if (funcSet.hasFunc(eATmegaPinFunc::TOC3B)) { + TIMER3._TCCRnA._COMnB = state._COM3B; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC3A)) { + TIMER3._TCCRnA._COMnA = state._COM3A; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART0_RXD, eATmegaPinFunc::USART0_CLK)) { + USART0._UCSRnB._RXEN = state._USART0_RXEN; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART0_TXD, eATmegaPinFunc::USART0_CLK)) { + USART0._UCSRnB._TXEN = state._USART0_TXEN; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI15, eATmegaPinFunc::PCI14, eATmegaPinFunc::PCI13, eATmegaPinFunc::PCI12, eATmegaPinFunc::PCI11, eATmegaPinFunc::PCI10, eATmegaPinFunc::PCI9, eATmegaPinFunc::PCI8)) { + _PCICR._PCIE1 = state._PCIE1; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::TOC0B)) { + TIMER0._TCCRnA._COMnB = state._COM0B; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::TOSC1, eATmegaPinFunc::TOSC2)) { + _ASSR._AS2 = state._AS2; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2B)) { + _TIMER2._TCCRnA._COMnB = state._COM2B; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC4C)) { + TIMER4._TCCRnA._COMnC = state._COM4C; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC4B)) { + TIMER4._TCCRnA._COMnB = state._COM4B; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC4A)) { + TIMER4._TCCRnA._COMnA = state._COM4A; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART2_RXD, eATmegaPinFunc::USART2_CLK)) { + USART2._UCSRnB._RXEN = state._USART2_RXEN; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART2_TXD, eATmegaPinFunc::USART2_CLK)) { + USART2._UCSRnB._TXEN = state._USART2_TXEN; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART3_TXD, eATmegaPinFunc::USART3_CLK)) { + USART3._UCSRnB._RXEN = state._USART3_RXEN; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART3_TXD, eATmegaPinFunc::USART3_CLK)) { + USART3._UCSRnB._TXEN = state._USART3_TXEN; + } + if (funcSet.hasAnyFunc( + eATmegaPinFunc::PCI23, eATmegaPinFunc::PCI22, eATmegaPinFunc::PCI21, eATmegaPinFunc::PCI20, eATmegaPinFunc::PCI19, eATmegaPinFunc::PCI18, eATmegaPinFunc::PCI17, eATmegaPinFunc::PCI16 + )) { + _PCICR._PCIE2 = state._PCIE2; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC5C)) { + TIMER5._TCCRnA._COMnC = state._COM5C; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC5B)) { + TIMER5._TCCRnA._COMnB = state._COM5B; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC5A)) { + TIMER5._TCCRnA._COMnA = state._COM5A; + } + #elif defined(__AVR_TRM02__) + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI7, eATmegaPinFunc::PCI6, eATmegaPinFunc::PCI5, eATmegaPinFunc::PCI4, eATmegaPinFunc::PCI3, eATmegaPinFunc::PCI2, eATmegaPinFunc::PCI1, eATmegaPinFunc::PCI0)) { + _PCICR._PCIE0 = state._PCIE0; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC7)) { + _DIDR0._ADC7D = state._ADC7D; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC6)) { + _DIDR0._ADC6D = state._ADC6D; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC5)) { + _DIDR0._ADC5D = state._ADC5D; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC4)) { + _DIDR0._ADC4D = state._ADC4D; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC3)) { + _DIDR0._ADC3D = state._ADC3D; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC2)) { + _DIDR0._ADC2D = state._ADC2D; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC1)) { + _DIDR0._ADC1D = state._ADC1D; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC0)) { + _DIDR0._ADC0D = state._ADC0D; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI15, eATmegaPinFunc::PCI14, eATmegaPinFunc::PCI13, eATmegaPinFunc::PCI12, eATmegaPinFunc::PCI11, eATmegaPinFunc::PCI10, eATmegaPinFunc::PCI9, eATmegaPinFunc::PCI8)) { + _PCICR._PCIE1 = state._PCIE1; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::SPI_CS)) { + _SPCR._SPE = state._SPE; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC0A)) { + TIMER0._TCCRnA._COMnA = state._COM0A; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC0B)) { + TIMER0._TCCRnA._COMnB = state._COM0B; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::TOSC1, eATmegaPinFunc::TOSC2)) { + _ASSR._AS2 = state._AS2; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI23, eATmegaPinFunc::PCI22, eATmegaPinFunc::PCI21, eATmegaPinFunc::PCI20, eATmegaPinFunc::PCI19, eATmegaPinFunc::PCI18, eATmegaPinFunc::PCI17, eATmegaPinFunc::PCI16)) { + _PCICR._PCIE2 = state._PCIE2; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI31, eATmegaPinFunc::PCI30, eATmegaPinFunc::PCI29, eATmegaPinFunc::PCI28, eATmegaPinFunc::PCI27, eATmegaPinFunc::PCI26, eATmegaPinFunc::PCI25, eATmegaPinFunc::PCI24)) { + _PCICR._PCIE3 = state._PCIE3; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2A)) { + _TIMER2._TCCRnA._COMnA = state._COM2A; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2B)) { + _TIMER2._TCCRnA._COMnB = state._COM2B; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1A)) { + TIMER1._TCCRnA._COMnA = state._COM1A; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1B)) { + TIMER1._TCCRnA._COMnB = state._COM1B; + } + if (funcSet.hasFunc(eATmegaPinFunc::USART1_TXD)) { + USART1._UCSRnB._TXEN = state._USART1_TXEN; + } + if (funcSet.hasFunc(eATmegaPinFunc::USART1_RXD)) { + USART1._UCSRnB._RXEN = state._USART1_RXEN; + } + if (funcSet.hasFunc(eATmegaPinFunc::USART0_TXD)) { + USART0._UCSRnB._TXEN = state._USART0_TXEN; + } + // There is a bug in the ATmega164A technical reference manual where + // it says that pin 0 is mapped to USART1 RXD in the signal mapping table + // but the associated list says USART0 RXD. + if (funcSet.hasFunc(eATmegaPinFunc::USART0_RXD)) { + USART0._UCSRnB._RXEN = state._USART0_RXEN; + } + #elif defined(__AVR_TRM03__) + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI7, eATmegaPinFunc::PCI6, eATmegaPinFunc::PCI5, eATmegaPinFunc::PCI4, eATmegaPinFunc::PCI3, eATmegaPinFunc::PCI2, eATmegaPinFunc::PCI1, eATmegaPinFunc::PCI0)) { + _PCICR._PCIE0 = state._PCIE0; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::TOSC1, eATmegaPinFunc::TOSC2)) { + _ASSR._AS2 = state._AS2; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::SPI_CS)) { + _SPCR._SPE = state._SPE; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2A)) { + _TIMER2._TCCRnA._COMnA = state._COM2A; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1B)) { + TIMER1._TCCRnA._COMnB = state._COM1B; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1A)) { + TIMER1._TCCRnA._COMnA = state._COM1A; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI14, eATmegaPinFunc::PCI13, eATmegaPinFunc::PCI12, eATmegaPinFunc::PCI11, eATmegaPinFunc::PCI10, eATmegaPinFunc::PCI9, eATmegaPinFunc::PCI8)) { + _PCICR._PCIE1 = state._PCIE1; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::TWI_CLK, eATmegaPinFunc::TWI_SDA)) { + _TWCR._TWEN = state._TWEN; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC5)) { + _DIDR0._ADC5D = state._ADC5D; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC4)) { + _DIDR0._ADC4D = state._ADC4D; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC3)) { + _DIDR0._ADC3D = state._ADC3D; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC2)) { + _DIDR0._ADC2D = state._ADC2D; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC1)) { + _DIDR0._ADC1D = state._ADC1D; + } + if (funcSet.hasFunc(eATmegaPinFunc::ADC0)) { + _DIDR0._ADC0D = state._ADC0D; + } + // There is a bug in the ATmega48A technical reference manual where pin 2 + // is said to be mapped to PCIE1 but logically it should be PCIE2 instead. + // The real mapping can be read in the documentation of the PCICR register. + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI23, eATmegaPinFunc::PCI22, eATmegaPinFunc::PCI21, eATmegaPinFunc::PCI20, eATmegaPinFunc::PCI19, eATmegaPinFunc::PCI18, eATmegaPinFunc::PCI17, eATmegaPinFunc::PCI16)) { + _PCICR._PCIE2 = state._PCIE2; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC0A)) { + TIMER0._TCCRnA._COMnA = state._COM0A; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC0B)) { + TIMER0._TCCRnA._COMnB = state._COM0B; + } + if (funcSet.hasFunc(eATmegaPinFunc::USART_CLK)) { + USART0._UCSRnC._UMSEL = state._UMSEL; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2B)) { + _TIMER2._TCCRnA._COMnB = state._COM2B; + } + if (funcSet.hasFunc(eATmegaPinFunc::USART_TXD)) { + USART0._UCSRnB._TXEN = state._USART0_TXEN; + } + if (funcSet.hasFunc(eATmegaPinFunc::USART_RXD)) { + USART0._UCSRnB._RXEN = state._USART0_RXEN; + } + #elif defined(__AVR_TRM04__) + if (funcSet.hasAnyFunc( + eATmegaPinFunc::EXTMEM_AD15, eATmegaPinFunc::EXTMEM_AD14, eATmegaPinFunc::EXTMEM_AD13, eATmegaPinFunc::EXTMEM_AD12, eATmegaPinFunc::EXTMEM_AD11, eATmegaPinFunc::EXTMEM_AD10, eATmegaPinFunc::EXTMEM_AD9, eATmegaPinFunc::EXTMEM_AD8, + eATmegaPinFunc::EXTMEM_AD7, eATmegaPinFunc::EXTMEM_AD6, eATmegaPinFunc::EXTMEM_AD5, eATmegaPinFunc::EXTMEM_AD4, eATmegaPinFunc::EXTMEM_AD3, eATmegaPinFunc::EXTMEM_AD2, eATmegaPinFunc::EXTMEM_AD1, eATmegaPinFunc::EXTMEM_AD0, + eATmegaPinFunc::EXTMEM_ALE, eATmegaPinFunc::EXTMEM_RD, eATmegaPinFunc::EXTMEM_WR + )) { + _XMCRA._SRE = state._SRE; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1C)) { + TIMER1._TCCRnA._COMnC = state._COM1C; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1B)) { + TIMER1._TCCRnA._COMnB = state._COM1B; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1A)) { + TIMER1._TCCRnA._COMnA = state._COM1A; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2A)) { + _TIMER2._TCCRnA._COMnA = state._COM2A; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::SPI_CS)) { + _SPCR._SPE = state._SPE; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI7, eATmegaPinFunc::PCI6, eATmegaPinFunc::PCI5, eATmegaPinFunc::PCI4, eATmegaPinFunc::PCI3, eATmegaPinFunc::PCI2, eATmegaPinFunc::PCI1, eATmegaPinFunc::PCI0)) { + _PCICR._PCIE0 = state._PCIE0; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART1_CLK, eATmegaPinFunc::USART1_TXD)) { + USART1._UCSRnB._TXEN = state._USART1_TXEN; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART1_CLK, eATmegaPinFunc::USART1_RXD)) { + USART1._UCSRnB._RXEN = state._USART1_RXEN; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::TWI_SDA, eATmegaPinFunc::TWI_CLK)) { + _TWCR._TWEN = state._TWEN; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2B)) { + _TIMER2._TCCRnA._COMnB = state._COM2B; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC0B)) { + TIMER0._TCCRnA._COMnB = state._COM0B; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT3)) { + _EIMSK._INT3 = state._INT3; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT2)) { + _EIMSK._INT2 = state._INT2; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT1)) { + _EIMSK._INT1 = state._INT1; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT0)) { + _EIMSK._INT0 = state._INT0; + } + if (funcSet.hasFunc(eATmegaPinFunc::UVCON)) { + _UHWCON._UVCONE = state._UVCONE; + } + if (funcSet.hasFunc(eATmegaPinFunc::UID)) { + _UHWCON._UIDE = state._UIDE; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT7)) { + _EIMSK._INT7 = state._INT7; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT6)) { + _EIMSK._INT6 = state._INT6; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT5)) { + _EIMSK._INT5 = state._INT5; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT4)) { + _EIMSK._INT4 = state._INT4; + } + #elif defined(__AVR_TRM05__) + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI7, eATmegaPinFunc::PCI6, eATmegaPinFunc::PCI5, eATmegaPinFunc::PCI4, eATmegaPinFunc::PCI3, eATmegaPinFunc::PCI2, eATmegaPinFunc::PCI1, eATmegaPinFunc::PCI0)) { + _PCICR._PCIE0 = state._PCIE0; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI15, eATmegaPinFunc::PCI14, eATmegaPinFunc::PCI13, eATmegaPinFunc::PCI12, eATmegaPinFunc::PCI11, eATmegaPinFunc::PCI10, eATmegaPinFunc::PCI9, eATmegaPinFunc::PCI8)) { + _PCICR._PCIE1 = state._PCIE1; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI23, eATmegaPinFunc::PCI22, eATmegaPinFunc::PCI21, eATmegaPinFunc::PCI20, eATmegaPinFunc::PCI19, eATmegaPinFunc::PCI18, eATmegaPinFunc::PCI17, eATmegaPinFunc::PCI16)) { + _PCICR._PCIE2 = state._PCIE2; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::PCI31, eATmegaPinFunc::PCI30, eATmegaPinFunc::PCI29, eATmegaPinFunc::PCI28, eATmegaPinFunc::PCI27, eATmegaPinFunc::PCI26, eATmegaPinFunc::PCI25, eATmegaPinFunc::PCI24)) { + _PCICR._PCIE3 = state._PCIE3; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::SPI_CS)) { + _SPCR._SPE = state._SPE; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC0B)) { + TIMER0._TCCRnA._COMnB = state._COM0B; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC0A)) { + TIMER0._TCCRnA._COMnA = state._COM0A; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2A)) { + _TIMER2._TCCRnA._COMnA = state._COM2A; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC2B)) { + _TIMER2._TCCRnA._COMnB = state._COM2B; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1A)) { + TIMER1._TCCRnA._COMnA = state._COM1A; + } + if (funcSet.hasFunc(eATmegaPinFunc::TOC1B)) { + TIMER1._TCCRnA._COMnB = state._COM1B; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::TWI_CLK, eATmegaPinFunc::TWI_SDA)) { + _TWCR._TWEN = state._TWEN; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT2)) { + _EIMSK._INT2 = state._INT2; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT1)) { + _EIMSK._INT1 = state._INT1; + } + if (funcSet.hasFunc(eATmegaPinFunc::EINT0)) { + _EIMSK._INT0 = state._INT0; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART0_CLK, eATmegaPinFunc::USART0_TXD)) { + USART0._UCSRnB._TXEN = state._TXEN0; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART0_CLK, eATmegaPinFunc::USART0_RXD)) { + USART0._UCSRnB._RXEN = state._RXEN0; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART1_CLK, eATmegaPinFunc::USART1_TXD)) { + USART1._UCSRnB._TXEN = state._TXEN1; + } + if (funcSet.hasAnyFunc(eATmegaPinFunc::USART1_CLK, eATmegaPinFunc::USART1_RXD)) { + USART1._UCSRnB._RXEN = state._RXEN1; + } + #endif +} + +inline pin_dev_state_t _ATmega_savePinAlternate(uint8_t pin) { + return _ATmega_savePinAlternates({pin}); +} + +inline void _ATmega_restorePinAlternate(uint8_t pin, const pin_dev_state_t& state) { + _ATmega_restorePinAlternate({pin}, state); +} + +#ifndef LOW + #define LOW 0 +#endif +#ifndef HIGH + #define HIGH 1 +#endif + +inline void _ATmega_digitalWrite(int pin, int state) { + if (pin < 0) return; + + ATmegaPinInfo info = _ATmega_getPinInfo((unsigned int)pin); + + #ifdef __AVR_TRM01__ + if (info.port == eATmegaPort::PORT_A) { + _PORTA._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_B) { + _PORTB._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_C) { + _PORTC._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_D) { + _PORTD._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_E) { + _PORTE._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_F) { + _PORTF._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_G) { + _PORTG._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_H) { + _PORTH._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_J) { + _PORTJ._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_K) { + _PORTK._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_L) { + _PORTL._PORT.setValue(info.pinidx, state == HIGH); + } + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + if (info.port == eATmegaPort::PORT_A) { + _PORTA._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_B) { + _PORTB._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_C) { + _PORTC._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_D) { + _PORTD._PORT.setValue(info.pinidx, state == HIGH); + } + #elif defined(__AVR_TRM03__) + if (info.port == eATmegaPort::PORT_B) { + _PORTB._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_C) { + _PORTC._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_D) { + _PORTD._PORT.setValue(info.pinidx, state == HIGH); + } + #elif defined(__AVR_TRM04__) + if (info.port == eATmegaPort::PORT_A) { + _PORTA._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_B) { + _PORTB._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_C) { + _PORTC._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_D) { + _PORTD._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_E) { + _PORTE._PORT.setValue(info.pinidx, state == HIGH); + } + else if (info.port == eATmegaPort::PORT_F) { + _PORTF._PORT.setValue(info.pinidx, state == HIGH); + } + #endif +} + +inline int _ATmega_digitalRead(int pin) { + int value = LOW; + + if (pin < 0) return value; + + ATmegaPinInfo info = _ATmega_getPinInfo((unsigned int)pin); + + #ifdef __AVR_TRM01__ + if (info.port == eATmegaPort::PORT_A) { + value = _PORTA._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_B) { + value = _PORTB._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_C) { + value = _PORTC._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_D) { + value = _PORTD._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_E) { + value = _PORTE._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_F) { + value = _PORTF._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_G) { + value = _PORTG._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_H) { + value = _PORTH._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_J) { + value = _PORTJ._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_K) { + value = _PORTK._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_L) { + value = _PORTL._PIN.getValue(info.pinidx); + } + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + if (info.port == eATmegaPort::PORT_A) { + value = _PORTA._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_B) { + value = _PORTB._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_C) { + value = _PORTC._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_D) { + value = _PORTD._PIN.getValue(info.pinidx); + } + #elif defined(__AVR_TRM03__) + if (info.port == eATmegaPort::PORT_B) { + value = _PORTB._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_C) { + value = _PORTC._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_D) { + value = _PORTD._PIN.getValue(info.pinidx); + } + #elif defined(__AVR_TRM04__) + if (info.port == eATmegaPort::PORT_A) { + value = _PORTA._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_B) { + value = _PORTB._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_C) { + value = _PORTC._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_D) { + value = _PORTD._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_E) { + value = _PORTE._PIN.getValue(info.pinidx); + } + else if (info.port == eATmegaPort::PORT_F) { + value = _PORTF._PIN.getValue(info.pinidx); + } + #endif + + return value; +} + +#ifndef OUTPUT + #define OUTPUT 1 +#endif +#ifndef INPUT + #define INPUT 0 +#endif + +inline void _ATmega_pinMode(int pin, int mode) { + if (pin < 0) return; + + ATmegaPinInfo info = _ATmega_getPinInfo((unsigned int)pin); + + #ifdef __AVR_TRM01__ + if (info.port == eATmegaPort::PORT_A) { + _PORTA._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_B) { + _PORTB._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_C) { + _PORTC._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_D) { + _PORTD._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_E) { + _PORTE._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_F) { + _PORTF._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_G) { + _PORTG._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_H) { + _PORTH._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_J) { + _PORTJ._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_K) { + _PORTK._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_L) { + _PORTL._DDR.setValue(info.pinidx, mode == OUTPUT); + } + #elif defined(__AVR_TRM02__) || defined(__AVR_TRM05__) + if (info.port == eATmegaPort::PORT_A) { + _PORTA._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_B) { + _PORTB._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_C) { + _PORTC._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_D) { + _PORTD._DDR.setValue(info.pinidx, mode == OUTPUT); + } + #elif defined(__AVR_TRM03__) + if (info.port == eATmegaPort::PORT_B) { + _PORTB._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_C) { + _PORTC._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_D) { + _PORTD._DDR.setValue(info.pinidx, mode == OUTPUT); + } + #elif defined(__AVR_TRM04__) + if (info.port == eATmegaPort::PORT_A) { + _PORTA._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_B) { + _PORTB._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_C) { + _PORTC._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_D) { + _PORTD._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_E) { + _PORTE._DDR.setValue(info.pinidx, mode == OUTPUT); + } + else if (info.port == eATmegaPort::PORT_F) { + _PORTF._DDR.setValue(info.pinidx, mode == OUTPUT); + } + #endif +} + +#if defined(__AVR_TRM01__) || defined(__AVR_TRM02__) + struct _ATmega_efuse { + uint8_t _BODLEVEL : 3; + uint8_t reserved1 : 5; + }; + + struct _ATmega_hfuse { + uint8_t _BOOTRST : 1; + uint8_t _BOOTSZ : 2; + uint8_t _EESAVE : 1; + uint8_t _WDTON : 1; + uint8_t _SPIEN : 1; + uint8_t _JTAGEN : 1; + uint8_t _OCDEN : 1; + }; + + struct _ATmega_lfuse { + uint8_t _CKSEL : 4; + uint8_t _SUT0 : 1; + uint8_t _SUT1 : 1; + uint8_t _CKOUT : 1; + uint8_t _CKDIV8 : 1; + }; + + #ifndef AVR_DEFAULT_LFUSE_VALUE + #define AVR_DEFAULT_LFUSE_VALUE 0xFF + #endif + #ifndef AVR_DEFAULT_HFUSE_VALUE + #define AVR_DEFAULT_HFUSE_VALUE 0x99 + #endif + #ifndef AVR_DEFAULT_LFUSE_VALUE + #define AVR_DEFAULT_LFUSE_VALUE 0x62 + #endif + +#elif defined(__AVR_TRM03__) + #if defined(__AVR_ATmega48A__) || defined(__AVR_ATmega48PA__) + struct _ATmega_efuse { + uint8_t _SELFPRGEN : 1; + uint8_t reserved1 : 7; + }; + + #ifndef AVR_DEFAULT_EFUSE_VALUE + #define AVR_DEFAULT_EFUSE_VALUE 0xFF + #endif + + #elif defined(__AVR_ATmega88A__) || defined(__AVR_ATmega88PA__) || defined(__AVR_ATmega168A__) || defined(__AVR_ATmega168PA__) + struct _ATmega_efuse { + uint8_t _BOOTRST : 1; + uint8_t _BOOTSZ : 2; + uint8_t reserved1 : 5; + }; + + #ifndef AVR_DEFAULT_EFUSE_VALUE + #define AVR_DEFAULT_EFUSE_VALUE 0xF9 + #endif + + #else // defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) + struct _ATmega_efuse { + uint8_t _BODLEVEL : 3; + uint8_t reserved1 : 5; + }; + + #ifndef AVR_DEFAULT_EFUSE_VALUE + #define AVR_DEFAULT_EFUSE_VALUE 0xFF + #endif + + #endif + + #if defined(__AVR_ATmega48A__) || defined(__AVR_ATmega48PA__) || defined(__AVR_ATmega88A__) || defined(__AVR_ATmega88PA__) || defined(__AVR_ATmega168A__) || defined(__AVR_ATmega168PA__) + struct _ATmega_hfuse { + uint8_t _BODLEVEL : 3; + uint8_t _EESAVE : 1; + uint8_t _WDTON : 1; + uint8_t _SPIEN : 1; + uint8_t _DWEN : 1; + uint8_t _RSTDISBL : 1; + }; + + #ifndef AVR_DEFAULT_HFUSE_VALUE + #define AVR_DEFAULT_HFUSE_VALUE 0xCF + #endif + + #else // defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) + struct _ATmega_hfuse { + uint8_t _BOOTRST : 1; + uint8_t _BOOTSZ : 2; + uint8_t _EESAVE : 1; + uint8_t _WDTON : 1; + uint8_t _SPIEN : 1; + uint8_t _DWEN : 1; + uint8_t _RSTDISBL : 1; + }; + + #ifndef AVR_DEFAULT_HFUSE_VALUE + #define AVR_DEFAULT_HFUSE_VALUE 0xC9 + #endif + + #endif + + struct _ATmega_lfuse { + uint8_t _CKSEL : 4; + uint8_t _SUT0 : 1; + uint8_t _SUT1 : 1; + uint8_t _CKOUT : 1; + uint8_t _CKDIV8 : 1; + }; + + #ifndef AVR_DEFAULT_LFUSE_VALUE + #define AVR_DEFAULT_LFUSE_VALUE 0xC9 + #endif + +#elif defined(__AVR_TRM04__) + struct _ATmega_efuse { + uint8_t _BODLEVEL : 3; + uint8_t _HWBE : 1; + uint8_t reserved1 : 4; + }; + + struct _ATmega_hfuse { + uint8_t _BOOTRST : 1; + uint8_t _BOOTSZ : 2; + uint8_t _EESAVE : 1; + uint8_t _WDTON : 1; + uint8_t _SPIEN : 1; + uint8_t _JTAGEN : 1; + uint8_t _OCDEN : 1; + }; + + struct _ATmega_lfuse { + uint8_t _CKSEL : 4; + uint8_t _SUT0 : 1; + uint8_t _SUT1 : 1; + uint8_t _CKOUT : 1; + uint8_t _CKDIV8 : 1; + }; + + // Default values if not already defined. + #ifndef AVR_DEFAULT_EFUSE_VALUE + #define AVR_DEFAULT_EFUSE_VALUE 0xF3 + #endif + #ifndef AVR_DEFAULT_HFUSE_VALUE + #define AVR_DEFAULT_HFUSE_VALUE 0x99 + #endif + #ifndef AVR_DEFAULT_LFUSE_VALUE + #define AVR_DEFAULT_LFUSE_VALUE 0x62 + #endif + +#elif defined(__AVR_TRM05__) + struct _ATmega_efuse { + uint8_t _BODLEVEL0 : 1; + uint8_t _BODLEVEL1 : 1; + uint8_t _BODLEVEL2 : 1; + uint8_t reserved1 : 5; + }; + + struct _ATmega_hfuse { + uint8_t _BOOTRST : 1; + uint8_t _BOOTSZ : 2; + uint8_t _EESAVE : 1; + uint8_t _WDTON : 1; + uint8_t _SPIEN : 1; + uint8_t _JTAGEN : 1; + uint8_t _OCDEN : 1; + }; + + struct _ATmega_lfuse { + uint8_t _CKSEL : 4; + uint8_t _SUT0 : 1; + uint8_t _SUT1 : 1; + uint8_t _CKOUT : 1; + uint8_t _CKDIV8 : 1; + }; + + #ifndef AVR_DEFAULT_EFUSE_VALUE + #define AVR_DEFAULT_EFUSE_VALUE 0xFF + #endif + #ifndef AVR_DEFAULT_HFUSE_VALUE + #define AVR_DEFAULT_HFUSE_VALUE 0x88 + #endif + #ifndef AVR_DEFAULT_LFUSE_VALUE + #define AVR_DEFAULT_LFUSE_VALUE 0x62 + #endif +#endif + +struct ATmega_efuse : public _ATmega_efuse { + inline ATmega_efuse(uint8_t val = 0) { *(uint8_t*)this = val; } + inline ATmega_efuse(const ATmega_efuse&) = default; +}; +struct ATmega_hfuse : public _ATmega_hfuse { + inline ATmega_hfuse(uint8_t val = 0) { *(uint8_t*)this = val; } + inline ATmega_hfuse(const ATmega_hfuse&) = default; +}; +struct ATmega_lfuse : public _ATmega_lfuse { + inline ATmega_lfuse(uint8_t val = 0) { *(uint8_t*)this = val; } + inline ATmega_lfuse(const ATmega_lfuse&) = default; +}; diff --git a/Marlin/src/HAL/LPC1768/HAL.cpp b/Marlin/src/HAL/LPC1768/HAL.cpp index 746f43a2a4..6fada12486 100644 --- a/Marlin/src/HAL/LPC1768/HAL.cpp +++ b/Marlin/src/HAL/LPC1768/HAL.cpp @@ -23,7 +23,17 @@ #include "../../inc/MarlinConfig.h" #include "../shared/Delay.h" -#include "../../../gcode/parser.h" +#include "../../core/millis_t.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include DefaultSerial1 USBSerial(false, UsbSerial); @@ -49,6 +59,132 @@ int freeMemory() { return result; } +extern "C" { + #include + int isLPC1769(); + void disk_timerproc(); +} + +extern uint32_t MSC_SD_Init(uint8_t pdrv); + +void SysTick_Callback() { disk_timerproc(); } + +TERN_(POSTMORTEM_DEBUGGING, extern void install_min_serial()); + +void MarlinHAL::init() { + + // Init LEDs + #if PIN_EXISTS(LED) + SET_DIR_OUTPUT(LED_PIN); + WRITE_PIN_CLR(LED_PIN); + #if PIN_EXISTS(LED2) + SET_DIR_OUTPUT(LED2_PIN); + WRITE_PIN_CLR(LED2_PIN); + #if PIN_EXISTS(LED3) + SET_DIR_OUTPUT(LED3_PIN); + WRITE_PIN_CLR(LED3_PIN); + #if PIN_EXISTS(LED4) + SET_DIR_OUTPUT(LED4_PIN); + WRITE_PIN_CLR(LED4_PIN); + #endif + #endif + #endif + + // Flash status LED 3 times to indicate Marlin has started booting + for (uint8_t i = 0; i < 6; ++i) { + TOGGLE(LED_PIN); + delay(100); + } + #endif + + // Init Servo Pins + #define INIT_SERVO(N) OUT_WRITE(SERVO##N##_PIN, LOW) + #if HAS_SERVO_0 + INIT_SERVO(0); + #endif + #if HAS_SERVO_1 + INIT_SERVO(1); + #endif + #if HAS_SERVO_2 + INIT_SERVO(2); + #endif + #if HAS_SERVO_3 + INIT_SERVO(3); + #endif + + //debug_frmwrk_init(); + //_DBG("\n\nDebug running\n"); + // Initialize the SD card chip select pins as soon as possible + #if PIN_EXISTS(SD_SS) + OUT_WRITE(SD_SS_PIN, HIGH); + #endif + + #if PIN_EXISTS(ONBOARD_SD_CS) && ONBOARD_SD_CS_PIN != SD_SS_PIN + OUT_WRITE(ONBOARD_SD_CS_PIN, HIGH); + #endif + + #ifdef LPC1768_ENABLE_CLKOUT_12M + /** + * CLKOUTCFG register + * bit 8 (CLKOUT_EN) = enables CLKOUT signal. Disabled for now to prevent glitch when enabling GPIO. + * bits 7:4 (CLKOUTDIV) = set to 0 for divider setting of /1 + * bits 3:0 (CLKOUTSEL) = set to 1 to select main crystal oscillator as CLKOUT source + */ + LPC_SC->CLKOUTCFG = (0<<8)|(0<<4)|(1<<0); + // set P1.27 pin to function 01 (CLKOUT) + PINSEL_CFG_Type PinCfg; + PinCfg.Portnum = 1; + PinCfg.Pinnum = 27; + PinCfg.Funcnum = 1; // function 01 (CLKOUT) + PinCfg.OpenDrain = 0; // not open drain + PinCfg.Pinmode = 2; // no pull-up/pull-down + PINSEL_ConfigPin(&PinCfg); + // now set CLKOUT_EN bit + SBI(LPC_SC->CLKOUTCFG, 8); + #endif + + USB_Init(); // USB Initialization + USB_Connect(false); // USB clear connection + delay(1000); // Give OS time to notice + USB_Connect(true); + + TERN_(HAS_SD_HOST_DRIVE, MSC_SD_Init(0)); // Enable USB SD card access + + const millis_t usb_timeout = millis() + 2000; + while (!USB_Configuration && PENDING(millis(), usb_timeout)) { + delay(50); + idletask(); + #if PIN_EXISTS(LED) + TOGGLE(LED_PIN); // Flash quickly during USB initialization + #endif + } + + HAL_timer_init(); + + TERN_(POSTMORTEM_DEBUGGING, install_min_serial()); // Install the min serial handler +} + +#include "../../sd/cardreader.h" + +// HAL idle task +void MarlinHAL::idletask() { + #if HAS_SHARED_MEDIA + // If Marlin is using the SD card we need to lock it to prevent access from + // a PC via USB. + // Other HALs use IS_SD_PRINTING() and IS_SD_FILE_OPEN() to check for access but + // this will not reliably detect delete operations. To be safe we will lock + // the disk if Marlin has it mounted. Unfortunately there is currently no way + // to unmount the disk from the LCD menu. + // if (IS_SD_PRINTING() || IS_SD_FILE_OPEN()) + if (card.isMounted()) + MSC_Aquire_Lock(); + else + MSC_Release_Lock(); + #endif + // Perform USB stack housekeeping + MSC_RunDeferredCommands(); +} + void MarlinHAL::reboot() { NVIC_SystemReset(); } uint8_t MarlinHAL::get_reset_source() { @@ -113,6 +249,8 @@ void flashFirmware(const int16_t) { #endif // USE_WATCHDOG +#include "../../../gcode/parser.h" + // For M42/M43, scan command line for pin code // return index into pin map array if found and the pin is valid. // return dval if not found or not a valid pin. diff --git a/Marlin/src/HAL/LPC1768/main.cpp b/Marlin/src/HAL/LPC1768/main.cpp deleted file mode 100644 index 15518c3d86..0000000000 --- a/Marlin/src/HAL/LPC1768/main.cpp +++ /dev/null @@ -1,163 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -#ifdef TARGET_LPC1768 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "../../inc/MarlinConfig.h" -#include "../../core/millis_t.h" - -#include "../../sd/cardreader.h" - -extern uint32_t MSC_SD_Init(uint8_t pdrv); - -extern "C" { - #include - extern "C" int isLPC1769(); - extern "C" void disk_timerproc(); -} - -void SysTick_Callback() { disk_timerproc(); } - -TERN_(POSTMORTEM_DEBUGGING, extern void install_min_serial()); - -void MarlinHAL::init() { - - // Init LEDs - #if PIN_EXISTS(LED) - SET_DIR_OUTPUT(LED_PIN); - WRITE_PIN_CLR(LED_PIN); - #if PIN_EXISTS(LED2) - SET_DIR_OUTPUT(LED2_PIN); - WRITE_PIN_CLR(LED2_PIN); - #if PIN_EXISTS(LED3) - SET_DIR_OUTPUT(LED3_PIN); - WRITE_PIN_CLR(LED3_PIN); - #if PIN_EXISTS(LED4) - SET_DIR_OUTPUT(LED4_PIN); - WRITE_PIN_CLR(LED4_PIN); - #endif - #endif - #endif - - // Flash status LED 3 times to indicate Marlin has started booting - for (uint8_t i = 0; i < 6; ++i) { - TOGGLE(LED_PIN); - delay(100); - } - #endif - - // Init Servo Pins - #define INIT_SERVO(N) OUT_WRITE(SERVO##N##_PIN, LOW) - #if HAS_SERVO_0 - INIT_SERVO(0); - #endif - #if HAS_SERVO_1 - INIT_SERVO(1); - #endif - #if HAS_SERVO_2 - INIT_SERVO(2); - #endif - #if HAS_SERVO_3 - INIT_SERVO(3); - #endif - - //debug_frmwrk_init(); - //_DBG("\n\nDebug running\n"); - // Initialize the SD card chip select pins as soon as possible - #if PIN_EXISTS(SD_SS) - OUT_WRITE(SD_SS_PIN, HIGH); - #endif - - #if PIN_EXISTS(ONBOARD_SD_CS) && ONBOARD_SD_CS_PIN != SD_SS_PIN - OUT_WRITE(ONBOARD_SD_CS_PIN, HIGH); - #endif - - #ifdef LPC1768_ENABLE_CLKOUT_12M - /** - * CLKOUTCFG register - * bit 8 (CLKOUT_EN) = enables CLKOUT signal. Disabled for now to prevent glitch when enabling GPIO. - * bits 7:4 (CLKOUTDIV) = set to 0 for divider setting of /1 - * bits 3:0 (CLKOUTSEL) = set to 1 to select main crystal oscillator as CLKOUT source - */ - LPC_SC->CLKOUTCFG = (0<<8)|(0<<4)|(1<<0); - // set P1.27 pin to function 01 (CLKOUT) - PINSEL_CFG_Type PinCfg; - PinCfg.Portnum = 1; - PinCfg.Pinnum = 27; - PinCfg.Funcnum = 1; // function 01 (CLKOUT) - PinCfg.OpenDrain = 0; // not open drain - PinCfg.Pinmode = 2; // no pull-up/pull-down - PINSEL_ConfigPin(&PinCfg); - // now set CLKOUT_EN bit - SBI(LPC_SC->CLKOUTCFG, 8); - #endif - - USB_Init(); // USB Initialization - USB_Connect(false); // USB clear connection - delay(1000); // Give OS time to notice - USB_Connect(true); - - TERN_(HAS_SD_HOST_DRIVE, MSC_SD_Init(0)); // Enable USB SD card access - - const millis_t usb_timeout = millis() + 2000; - while (!USB_Configuration && PENDING(millis(), usb_timeout)) { - delay(50); - idletask(); - #if PIN_EXISTS(LED) - TOGGLE(LED_PIN); // Flash quickly during USB initialization - #endif - } - - HAL_timer_init(); - - TERN_(POSTMORTEM_DEBUGGING, install_min_serial()); // Install the min serial handler -} - -// HAL idle task -void MarlinHAL::idletask() { - #if HAS_SHARED_MEDIA - // If Marlin is using the SD card we need to lock it to prevent access from - // a PC via USB. - // Other HALs use IS_SD_PRINTING() and IS_SD_FILE_OPEN() to check for access but - // this will not reliably detect delete operations. To be safe we will lock - // the disk if Marlin has it mounted. Unfortunately there is currently no way - // to unmount the disk from the LCD menu. - // if (IS_SD_PRINTING() || IS_SD_FILE_OPEN()) - if (card.isMounted()) - MSC_Aquire_Lock(); - else - MSC_Release_Lock(); - #endif - // Perform USB stack housekeeping - MSC_RunDeferredCommands(); -} - -#endif // TARGET_LPC1768 From 87231b625f3cf36b57352d3d89cfb05cfde0e777 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 4 Aug 2023 06:06:04 +0000 Subject: [PATCH 659/659] [cron] Bump distribution date (2023-08-04) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 8a860b2691..f93128f200 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2023-08-03" +//#define STRING_DISTRIBUTION_DATE "2023-08-04" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index bd004bd771..a1df5fe90a 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2023-08-03" + #define STRING_DISTRIBUTION_DATE "2023-08-04" #endif /**